diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2eec6e73..9304dc64 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: ## this will contain a matrix of all the combinations ## we wish to test again: matrix: - go-version: [ 1.22.x ] + go-version: [ 1.24.x ] platform: [ ubuntu-latest, macos-latest, windows-latest ] ## Defines the platform for each test run @@ -26,13 +26,13 @@ jobs: steps: ## sets up go based on the version - name: Install Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 with: go-version: ${{ matrix.go-version }} ## checks out our code locally, so we can work with the files - name: Checkout code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 ## runs go test ./... - name: Build @@ -43,6 +43,6 @@ jobs: run: go test ./... -coverprofile=./cover.out - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@cb6530fbecd68d5f1ee7a3dcd113450ea8d5d6d4 # v5.1.2 + uses: codecov/codecov-action@af09b5e394c93991b95a5e7646aeb90c1917f78f # v5.5.1 env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 76633f8d..a43c835b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -39,11 +39,11 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@3096afedf9873361b2b2f65e1445b13272c83eb8 # codeql-bundle-v2.20.0 + uses: github/codeql-action/init@17783bfb99b07f70fae080b654aed0c514057477 # codeql-bundle-v2.23.3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -57,7 +57,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@3096afedf9873361b2b2f65e1445b13272c83eb8 # codeql-bundle-v2.20.0 + uses: github/codeql-action/autobuild@17783bfb99b07f70fae080b654aed0c514057477 # codeql-bundle-v2.23.3 # â„šī¸ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -70,4 +70,4 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@3096afedf9873361b2b2f65e1445b13272c83eb8 # codeql-bundle-v2.20.0 + uses: github/codeql-action/analyze@17783bfb99b07f70fae080b654aed0c514057477 # codeql-bundle-v2.23.3 diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index c205263f..f1328622 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -6,24 +6,24 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Install Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 with: - go-version: 1.22.x + go-version: 1.24.x - name: Restore cache - uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-mod-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go-mod- - name: gofumpt - uses: iamnotaturtle/auto-gofmt@3934ab53013ffb44d3db33bbd1c271279b5925d5 # v2.1.0 + uses: jameswoolfenden/auto-gofmt@99a3ed2b78b6c01d70db1740ba16d3dff60003df # v0.0.3 test: strategy: matrix: - go-version: [ 1.21.x ] + go-version: [ 1.24.x ] platform: [ ubuntu-latest, macos-latest, windows-latest ] runs-on: ${{ matrix.platform }} steps: @@ -31,26 +31,28 @@ jobs: with: terraform_version: 1.5.4 - name: Checkout code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Install Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 with: go-version: ${{ matrix.go-version }} - name: Restore cache - uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-mod-${{ hashFiles('**/go.sum') }} restore-keys: | - ${{ runner.os }}-go-mod- + ## runs go test ./... + - name: Build + run: go build ./... - name: Test - run: make test + run: go test ./... -coverprofile=./cover.out docs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Install Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 with: - go-version: 1.22.x + go-version: 1.24.x diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0f6d77f2..c61d02ba 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,21 +11,21 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Unshallow run: git fetch --prune --unshallow - name: Set up Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 with: - go-version: 1.22 + go-version: 1.24 - name: Import GPG key id: import_gpg - uses: crazy-max/ghaction-import-gpg@cb9bde2e2525e640591a934b1fd28eef1dcaf5e5 # v6.2.0 + uses: crazy-max/ghaction-import-gpg@e89d40939c28e39f97cf32126055eeae86ba74ec # v6.3.0 with: gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} passphrase: ${{ secrets.PASSPHRASE }} - name: Run GoReleaser - uses: goreleaser/goreleaser-action@9ed2f89a662bf1735a48bc8557fd212fa902bebf # v6.1.0 + uses: goreleaser/goreleaser-action@e435ccd777264be153ace6237001ef4d979d3a7a # v6.4.0 with: version: latest args: release --clean @@ -41,16 +41,16 @@ jobs: needs: - goreleaser steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Publish to Registry - uses: elgohr/Publish-Docker-Github-Action@82556589c08f584cb95411629a94e6c2b68b9b80 # v5 + uses: elgohr/Publish-Docker-Github-Action@32b6623ebb46c5fe6dcfc2281cfcd549a31366ce # v5 with: name: jameswoolfenden/pike username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} tags: "latest,${{ github.ref_name }}" - name: Update Docker Hub README - uses: peter-evans/dockerhub-description@e98e4d1628a5f3be2be7c231e50981aee98723ae # v4.0.0 + uses: peter-evans/dockerhub-description@1b9a80c056b620d92cedb9d9b5a223409c68ddfa # v5.0.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} @@ -64,7 +64,7 @@ jobs: - goreleaser steps: - name: Repository Dispatch - uses: peter-evans/repository-dispatch@ff45666b9427631e3450c54a1bcbee4d9ff4d7c0 # v3.0.0 + uses: peter-evans/repository-dispatch@5fc4efd1a4797ddb68ffd0714a238564e4cc0e6f # v4.0.0 with: token: ${{ secrets.PAT }} repository: jameswoolfenden/scoop diff --git a/.github/workflows/resources.yml b/.github/workflows/resources.yml index c19bcf65..3bf07482 100644 --- a/.github/workflows/resources.yml +++ b/.github/workflows/resources.yml @@ -11,13 +11,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Install Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0 + uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 with: go-version: ${{ matrix.go-version }} ## checks out our code locally, so we can work with the files - name: Checkout code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 ## runs go test ./... - name: Build @@ -25,7 +25,7 @@ jobs: - name: Checkout AWS - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: repository: hashicorp/terraform-provider-aws path: aws @@ -34,7 +34,7 @@ jobs: run: ${{ github.workspace }}/pike parse -d ${{ github.workspace }}/aws -name aws - name: Checkout AZURERM - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: repository: hashicorp/terraform-provider-azurerm path: azurerm @@ -43,7 +43,7 @@ jobs: run: ${{ github.workspace }}/pike parse -d ${{ github.workspace }}/azurerm -name azurerm - name: Generate Google - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: repository: hashicorp/terraform-provider-google path: google diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 1481a9de..87ceda51 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -13,7 +13,7 @@ jobs: pull-requests: write runs-on: ubuntu-latest steps: - - uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0 + - uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # v10.1.0 with: stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.' days-before-stale: 30 diff --git a/.gitignore b/.gitignore index 02cd7d21..3e0edec4 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,9 @@ __debug_bin.exe provider.azure.tf provider.azurerm.tf terraform-provider-* +terraform-provider-azurerm/ +terraform-provider-google/ +terraform-provider-aws/ *.pem *.csr .destination diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 468830c6..339dca20 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -29,7 +29,7 @@ repos: hooks: - id: shell-lint - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.43.0 + rev: v0.45.0 hooks: - id: markdownlint exclude: src/testdata|testdata @@ -39,7 +39,7 @@ repos: - id: terraform-fmt language_version: python3.11 - repo: https://github.com/gruntwork-io/pre-commit - rev: v0.1.25 + rev: v0.1.29 hooks: - id: gofmt - id: goimports diff --git a/README.md b/README.md index 12eefcc7..a860ae57 100644 --- a/README.md +++ b/README.md @@ -3,17 +3,22 @@ ![alt text](pike.jfif "Pike") [![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/jameswoolfenden/pike/graphs/commit-activity) -[![Build Status](https://github.com/JamesWoolfenden/pike/workflows/CI/badge.svg?branch=master)](https://github.com/JamesWoolfenden/pike) +[![CI](https://github.com/JamesWoolfenden/pike/actions/workflows/ci.yml/badge.svg)](https://github.com/JamesWoolfenden/pike/actions/workflows/ci.yml) [![Latest Release](https://img.shields.io/github/release/JamesWoolfenden/pike.svg)](https://github.com/JamesWoolfenden/pike/releases/latest) [![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/JamesWoolfenden/pike.svg?label=latest)](https://github.com/JamesWoolfenden/pike/releases/latest) ![Terraform Version](https://img.shields.io/badge/tf-%3E%3D0.14.0-blue.svg) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit) [![checkov](https://img.shields.io/badge/checkov-verified-brightgreen)](https://www.checkov.io/) [![Github All Releases](https://img.shields.io/github/downloads/jameswoolfenden/pike/total.svg)](https://github.com/JamesWoolfenden/pike/releases) -[![codecov](https://codecov.io/gh/JamesWoolfenden/pike/graph/badge.svg?token=S5SW3BHIQQ)](https://codecov.io/gh/JamesWoolfenden/pike) +[![codecov](https://codecov.io/gh/JamesWoolfenden/pike/branch/master/graph/badge.svg?token=S5SW3BHIQQ)](https://codecov.io/gh/JamesWoolfenden/pike) [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/7032/badge)](https://www.bestpractices.dev/projects/7032) -Pike is a tool to determine the minimum permissions required to run a TF/IAC run: +Pike is a tool to determine the minimum permissions required to run a TF/IAC run. + +**What's new?** +- json modules support. +- GCP compare, checks IAC permissions required versus a deployed role. +- Backend detection S3 and GCP. Pike currently supports Terraform and supports multiple providers (AWS, GCP and AZURE); Azure is the newest with AWS having the most supported resources @@ -475,6 +480,8 @@ You can see an example here $./pike compare -d ../modules/aws/terraform-aws-appsync -a arn:aws:iam::680235478471:policy/basic ```markdown diff --git a/bump.ps1 b/bump.ps1 old mode 100644 new mode 100755 diff --git a/go.mod b/go.mod index 6a8b8935..e4e7e273 100644 --- a/go.mod +++ b/go.mod @@ -1,79 +1,105 @@ module github.com/jameswoolfenden/pike -go 1.22.2 +go 1.24.2 require ( github.com/JamesWoolfenden/arn v0.2.5 - github.com/aws/aws-sdk-go v1.55.5 - github.com/aws/aws-sdk-go-v2 v1.32.7 - github.com/aws/aws-sdk-go-v2/config v1.28.7 - github.com/aws/aws-sdk-go-v2/service/iam v1.38.3 - github.com/go-git/go-git/v5 v5.13.1 + github.com/aws/aws-sdk-go v1.55.7 + github.com/aws/aws-sdk-go-v2 v1.36.5 + github.com/aws/aws-sdk-go-v2/config v1.29.17 + github.com/aws/aws-sdk-go-v2/service/iam v1.43.0 + github.com/go-git/go-git/v5 v5.16.2 + github.com/google/go-cmp v0.7.0 github.com/google/go-github/v47 v47.1.0 github.com/hashicorp/go-version v1.7.0 - github.com/hashicorp/hc-install v0.9.1 - github.com/hashicorp/hcl/v2 v2.23.0 - github.com/hashicorp/terraform-exec v0.21.0 + github.com/hashicorp/hc-install v0.9.2 + github.com/hashicorp/hcl/v2 v2.23.1-0.20250203194505-ba0759438da2 + github.com/hashicorp/terraform-exec v0.23.0 github.com/jameswoolfenden/identity v0.0.5 - github.com/rs/zerolog v1.33.0 - github.com/urfave/cli/v2 v2.27.5 - golang.org/x/crypto v0.31.0 - golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 - golang.org/x/net v0.33.0 - golang.org/x/oauth2 v0.24.0 + github.com/rs/zerolog v1.34.0 + github.com/stretchr/testify v1.10.0 + github.com/urfave/cli/v2 v2.27.7 + golang.org/x/crypto v0.39.0 + golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b + golang.org/x/net v0.41.0 + golang.org/x/oauth2 v0.30.0 + google.golang.org/api v0.240.0 + gopkg.in/ini.v1 v1.67.0 ) require ( - dario.cat/mergo v1.0.1 // indirect + cloud.google.com/go/auth v0.16.2 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect + cloud.google.com/go/compute/metadata v0.7.0 // indirect + dario.cat/mergo v1.0.2 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/ProtonMail/go-crypto v1.1.3 // indirect + github.com/ProtonMail/go-crypto v1.3.0 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.48 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.22 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.26 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.26 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.7 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.24.8 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.7 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.33.3 // indirect - github.com/aws/smithy-go v1.22.1 // indirect - github.com/cloudflare/circl v1.5.0 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect - github.com/cyphar/filepath-securejoin v0.3.6 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.70 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.25.5 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 // indirect + github.com/aws/smithy-go v1.22.4 // indirect + github.com/cloudflare/circl v1.6.1 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect + github.com/cyphar/filepath-securejoin v0.4.1 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect github.com/emirpasic/gods v1.18.1 // indirect + github.com/fatih/color v1.18.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect - github.com/go-git/go-billy/v5 v5.6.1 // indirect + github.com/go-git/go-billy/v5 v5.6.2 // indirect + github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/google/go-querystring v1.1.0 // indirect + github.com/google/s2a-go v0.1.9 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect + github.com/googleapis/gax-go/v2 v2.14.2 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-retryablehttp v0.7.7 // indirect - github.com/hashicorp/terraform-json v0.24.0 // indirect + github.com/hashicorp/go-retryablehttp v0.7.8 // indirect + github.com/hashicorp/terraform-json v0.25.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect - github.com/mmcloughlin/avo v0.6.0 // indirect - github.com/pjbgf/sha1cd v0.3.1 // indirect + github.com/pjbgf/sha1cd v0.3.2 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect - github.com/skeema/knownhosts v1.3.0 // indirect + github.com/sergi/go-diff v1.4.0 // indirect + github.com/skeema/knownhosts v1.3.1 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect - github.com/zclconf/go-cty v1.15.1 // indirect - golang.org/x/mod v0.22.0 // indirect - golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.28.0 // indirect - golang.org/x/text v0.21.0 // indirect - golang.org/x/tools v0.28.0 // indirect + github.com/zclconf/go-cty v1.16.3 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 // indirect + go.opentelemetry.io/otel v1.37.0 // indirect + go.opentelemetry.io/otel/metric v1.37.0 // indirect + go.opentelemetry.io/otel/trace v1.37.0 // indirect + golang.org/x/mod v0.25.0 // indirect + golang.org/x/sync v0.15.0 // indirect + golang.org/x/sys v0.33.0 // indirect + golang.org/x/text v0.26.0 // indirect + golang.org/x/tools v0.34.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/grpc v1.73.0 // indirect + google.golang.org/protobuf v1.36.6 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) require ( - github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect github.com/onsi/ginkgo v1.16.5 // indirect github.com/yudai/gojsondiff v1.0.0 github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect diff --git a/go.sum b/go.sum index 006921d2..a1abcddd 100644 --- a/go.sum +++ b/go.sum @@ -1,12 +1,18 @@ -dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= -dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4= +cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= +cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= +cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= +cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= +cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= +dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= github.com/JamesWoolfenden/arn v0.2.5 h1:5QzdBn28X0znoefzpdtD1iWKA2OlJ1hRH12jA5VomuM= github.com/JamesWoolfenden/arn v0.2.5/go.mod h1:mvAV1GE5qXaYKYB6uQLpaGfaVwyhorsTHRrTRpng8xo= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk= -github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= +github.com/ProtonMail/go-crypto v1.3.0 h1:ILq8+Sf5If5DCpHQp4PbZdS1J7HDFRXz/+xKBiRGFrw= +github.com/ProtonMail/go-crypto v1.3.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= @@ -15,65 +21,73 @@ github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU= -github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= -github.com/aws/aws-sdk-go-v2 v1.32.7 h1:ky5o35oENWi0JYWUZkB7WYvVPP+bcRF5/Iq7JWSb5Rw= -github.com/aws/aws-sdk-go-v2 v1.32.7/go.mod h1:P5WJBrYqqbWVaOxgH0X/FYYD47/nooaPOZPlQdmiN2U= -github.com/aws/aws-sdk-go-v2/config v1.28.7 h1:GduUnoTXlhkgnxTD93g1nv4tVPILbdNQOzav+Wpg7AE= -github.com/aws/aws-sdk-go-v2/config v1.28.7/go.mod h1:vZGX6GVkIE8uECSUHB6MWAUsd4ZcG2Yq/dMa4refR3M= -github.com/aws/aws-sdk-go-v2/credentials v1.17.48 h1:IYdLD1qTJ0zanRavulofmqut4afs45mOWEI+MzZtTfQ= -github.com/aws/aws-sdk-go-v2/credentials v1.17.48/go.mod h1:tOscxHN3CGmuX9idQ3+qbkzrjVIx32lqDSU1/0d/qXs= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.22 h1:kqOrpojG71DxJm/KDPO+Z/y1phm1JlC8/iT+5XRmAn8= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.22/go.mod h1:NtSFajXVVL8TA2QNngagVZmUtXciyrHOt7xgz4faS/M= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.26 h1:I/5wmGMffY4happ8NOCuIUEWGUvvFp5NSeQcXl9RHcI= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.26/go.mod h1:FR8f4turZtNy6baO0KJ5FJUmXH/cSkI9fOngs0yl6mA= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.26 h1:zXFLuEuMMUOvEARXFUVJdfqZ4bvvSgdGRq/ATcrQxzM= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.26/go.mod h1:3o2Wpy0bogG1kyOPrgkXA8pgIfEEv0+m19O9D5+W8y8= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= -github.com/aws/aws-sdk-go-v2/service/iam v1.38.3 h1:2sFIoFzU1IEL9epJWubJm9Dhrn45aTNEJuwsesaCGnk= -github.com/aws/aws-sdk-go-v2/service/iam v1.38.3/go.mod h1:KzlNINwfr/47tKkEhgk0r10/OZq3rjtyWy0txL3lM+I= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 h1:iXtILhvDxB6kPvEXgsDhGaZCSC6LQET5ZHSdJozeI0Y= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1/go.mod h1:9nu0fVANtYiAePIBh2/pFUSwtJ402hLnp854CNoDOeE= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.7 h1:8eUsivBQzZHqe/3FE+cqwfH+0p5Jo8PFM/QYQSmeZ+M= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.7/go.mod h1:kLPQvGUmxn/fqiCrDeohwG33bq2pQpGeY62yRO6Nrh0= -github.com/aws/aws-sdk-go-v2/service/sso v1.24.8 h1:CvuUmnXI7ebaUAhbJcDy9YQx8wHR69eZ9I7q5hszt/g= -github.com/aws/aws-sdk-go-v2/service/sso v1.24.8/go.mod h1:XDeGv1opzwm8ubxddF0cgqkZWsyOtw4lr6dxwmb6YQg= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.7 h1:F2rBfNAL5UyswqoeWv9zs74N/NanhK16ydHW1pahX6E= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.7/go.mod h1:JfyQ0g2JG8+Krq0EuZNnRwX0mU0HrwY/tG6JNfcqh4k= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.3 h1:Xgv/hyNgvLda/M9l9qxXc4UFSgppnRczLxlMs5Ae/QY= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.3/go.mod h1:5Gn+d+VaaRgsjewpMvGazt0WfcFO+Md4wLOuBfGR9Bc= -github.com/aws/smithy-go v1.22.1 h1:/HPHZQ0g7f4eUeK6HKglFz8uwVfZKgoI25rb/J+dnro= -github.com/aws/smithy-go v1.22.1/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= -github.com/cloudflare/circl v1.5.0 h1:hxIWksrX6XN5a1L2TI/h53AGPhNHoUBo+TD1ms9+pys= -github.com/cloudflare/circl v1.5.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= +github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE= +github.com/aws/aws-sdk-go v1.55.7/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= +github.com/aws/aws-sdk-go-v2 v1.36.5 h1:0OF9RiEMEdDdZEMqF9MRjevyxAQcf6gY+E7vwBILFj0= +github.com/aws/aws-sdk-go-v2 v1.36.5/go.mod h1:EYrzvCCN9CMUTa5+6lf6MM4tq3Zjp8UhSGR/cBsjai0= +github.com/aws/aws-sdk-go-v2/config v1.29.17 h1:jSuiQ5jEe4SAMH6lLRMY9OVC+TqJLP5655pBGjmnjr0= +github.com/aws/aws-sdk-go-v2/config v1.29.17/go.mod h1:9P4wwACpbeXs9Pm9w1QTh6BwWwJjwYvJ1iCt5QbCXh8= +github.com/aws/aws-sdk-go-v2/credentials v1.17.70 h1:ONnH5CM16RTXRkS8Z1qg7/s2eDOhHhaXVd72mmyv4/0= +github.com/aws/aws-sdk-go-v2/credentials v1.17.70/go.mod h1:M+lWhhmomVGgtuPOhO85u4pEa3SmssPTdcYpP/5J/xc= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32 h1:KAXP9JSHO1vKGCr5f4O6WmlVKLFFXgWYAGoJosorxzU= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32/go.mod h1:h4Sg6FQdexC1yYG9RDnOvLbW1a/P986++/Y/a+GyEM8= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 h1:SsytQyTMHMDPspp+spo7XwXTP44aJZZAC7fBV2C5+5s= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36/go.mod h1:Q1lnJArKRXkenyog6+Y+zr7WDpk4e6XlR6gs20bbeNo= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 h1:i2vNHQiXUvKhs3quBR6aqlgJaiaexz/aNvdCktW/kAM= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36/go.mod h1:UdyGa7Q91id/sdyHPwth+043HhmP6yP9MBHgbZM0xo8= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= +github.com/aws/aws-sdk-go-v2/service/iam v1.43.0 h1:/ZZo3N8iU/PLsRSCjjlT/J+n4N8kqfTO7BwW1GE+G50= +github.com/aws/aws-sdk-go-v2/service/iam v1.43.0/go.mod h1:QRtwvoAGc59uxv4vQHPKr75SLzhYCRSoETxAA98r6O4= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 h1:CXV68E2dNqhuynZJPB80bhPQwAKqBWVer887figW6Jc= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4/go.mod h1:/xFi9KtvBXP97ppCz1TAEvU1Uf66qvid89rbem3wCzQ= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 h1:t0E6FzREdtCsiLIoLCWsYliNsRBgyGD/MCK571qk4MI= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17/go.mod h1:ygpklyoaypuyDvOM5ujWGrYWpAK3h7ugnmKCU/76Ys4= +github.com/aws/aws-sdk-go-v2/service/sso v1.25.5 h1:AIRJ3lfb2w/1/8wOOSqYb9fUKGwQbtysJ2H1MofRUPg= +github.com/aws/aws-sdk-go-v2/service/sso v1.25.5/go.mod h1:b7SiVprpU+iGazDUqvRSLf5XmCdn+JtT1on7uNL6Ipc= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 h1:BpOxT3yhLwSJ77qIY3DoHAQjZsc4HEGfMCE4NGy3uFg= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3/go.mod h1:vq/GQR1gOFLquZMSrxUK/cpvKCNVYibNyJ1m7JrU88E= +github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 h1:NFOJ/NXEGV4Rq//71Hs1jC/NvPs1ezajK+yQmkwnPV0= +github.com/aws/aws-sdk-go-v2/service/sts v1.34.0/go.mod h1:7ph2tGpfQvwzgistp2+zga9f+bCjlQJPkPUmMgDSD7w= +github.com/aws/smithy-go v1.22.4 h1:uqXzVZNuNexwc/xrh6Tb56u89WDlJY6HS+KC0S4QSjw= +github.com/aws/smithy-go v1.22.4/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= +github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0= +github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= -github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM= -github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= +github.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo= +github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= +github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ= -github.com/elazarl/goproxy v1.2.3/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= +github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o= +github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= -github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.6.1 h1:u+dcrgaguSSkbjzHwelEjc0Yj300NUevrrPphk/SoRA= -github.com/go-git/go-billy/v5 v5.6.1/go.mod h1:0AsLr1z2+Uksi4NlElmMblP5rPcDZNRCD8ujZCRR2BE= +github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM= +github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.13.1 h1:DAQ9APonnlvSWpvolXWIuV6Q6zXy2wHbN4cVlNR5Q+M= -github.com/go-git/go-git/v5 v5.13.1/go.mod h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0qu3XXXVixc= +github.com/go-git/go-git/v5 v5.16.2 h1:fT6ZIOjE5iEnkzKyxTHK1W4HGAsPhqEqiSAssSO77hM= +github.com/go-git/go-git/v5 v5.16.2/go.mod h1:4Ge4alE/5gPs30F2H1esi2gPd69R0C39lolkucHBOp8= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= @@ -87,32 +101,42 @@ github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrU github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-github/v47 v47.1.0 h1:Cacm/WxQBOa9lF0FT0EMjZ2BWMetQ1TQfyurn4yF1z8= github.com/google/go-github/v47 v47.1.0/go.mod h1:VPZBXNbFSJGjyjFRUKo9vZGawTajnWzC/YjGw/oFKi0= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= +github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= +github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= +github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= +github.com/googleapis/gax-go/v2 v2.14.2 h1:eBLnkZ9635krYIPD+ag1USrOAI0Nr0QYF3+/3GqO0k0= +github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= -github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= +github.com/hashicorp/go-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVUrx/c8Unxc48= +github.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/hc-install v0.9.1 h1:gkqTfE3vVbafGQo6VZXcy2v5yoz2bE0+nhZXruCuODQ= -github.com/hashicorp/hc-install v0.9.1/go.mod h1:pWWvN/IrfeBK4XPeXXYkL6EjMufHkCK5DvwxeLKuBf0= -github.com/hashicorp/hcl/v2 v2.23.0 h1:Fphj1/gCylPxHutVSEOf2fBOh1VE4AuLV7+kbJf3qos= -github.com/hashicorp/hcl/v2 v2.23.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= -github.com/hashicorp/terraform-exec v0.21.0 h1:uNkLAe95ey5Uux6KJdua6+cv8asgILFVWkd/RG0D2XQ= -github.com/hashicorp/terraform-exec v0.21.0/go.mod h1:1PPeMYou+KDUSSeRE9szMZ/oHf4fYUmB923Wzbq1ICg= -github.com/hashicorp/terraform-json v0.24.0 h1:rUiyF+x1kYawXeRth6fKFm/MdfBS6+lW4NbeATsYz8Q= -github.com/hashicorp/terraform-json v0.24.0/go.mod h1:Nfj5ubo9xbu9uiAoZVBsNOjvNKB66Oyrvtit74kC7ow= +github.com/hashicorp/hc-install v0.9.2 h1:v80EtNX4fCVHqzL9Lg/2xkp62bbvQMnvPQ0G+OmtO24= +github.com/hashicorp/hc-install v0.9.2/go.mod h1:XUqBQNnuT4RsxoxiM9ZaUk0NX8hi2h+Lb6/c0OZnC/I= +github.com/hashicorp/hcl/v2 v2.23.1-0.20250203194505-ba0759438da2 h1:JP8y98OtHTujECs4s/HxlKc5yql/RlC99Dt1Iz4R+lM= +github.com/hashicorp/hcl/v2 v2.23.1-0.20250203194505-ba0759438da2/go.mod h1:k+HgkLpoWu9OS81sy4j1XKDXaWm/rLysG33v5ibdDnc= +github.com/hashicorp/terraform-exec v0.23.0 h1:MUiBM1s0CNlRFsCLJuM5wXZrzA3MnPYEsiXmzATMW/I= +github.com/hashicorp/terraform-exec v0.23.0/go.mod h1:mA+qnx1R8eePycfwKkCRk3Wy65mwInvlpAeOwmA7vlY= +github.com/hashicorp/terraform-json v0.25.0 h1:rmNqc/CIfcWawGiwXmRuiXJKEiJu1ntGoxseG1hLhoQ= +github.com/hashicorp/terraform-json v0.25.0/go.mod h1:sMKS8fiRDX4rVlR6EJUMudg1WcanxCMoWwTLkgZP/vc= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/jameswoolfenden/identity v0.0.5 h1:y7s6+Nvk21a81eHspwTteO0HVq49nZJFmNu9V72whnY= github.com/jameswoolfenden/identity v0.0.5/go.mod h1:kQfxlwgjvu8RKuFzd9QeudGeypQQglBXwRLUpk3VQnA= @@ -131,16 +155,15 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/mmcloughlin/avo v0.6.0 h1:QH6FU8SKoTLaVs80GA8TJuLNkUYl4VokHKlPhVDg4YY= -github.com/mmcloughlin/avo v0.6.0/go.mod h1:8CoAGaCSYXtCPR+8y18Y9aB/kxb8JSS6FRI7mSkvD+8= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= @@ -152,32 +175,32 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= -github.com/pjbgf/sha1cd v0.3.1 h1:Dh2GYdpJnO84lIw0LJwTFXjcNbasP/bklicSznyAaPI= -github.com/pjbgf/sha1cd v0.3.1/go.mod h1:Y8t7jSB/dEI/lQE04A1HVKteqjj9bX5O4+Cex0TCu8s= +github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4= +github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= -github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= -github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= +github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= +github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= +github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw= +github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY= -github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M= +github.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8= +github.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/urfave/cli/v2 v2.27.5 h1:WoHEJLdsXr6dDWoJgMq/CboDmyY/8HMMH1fTECbih+w= -github.com/urfave/cli/v2 v2.27.5/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= +github.com/urfave/cli/v2 v2.27.7 h1:bH59vdhbjLv3LAvIu6gd0usJHgoTTPhCFib8qqOwXYU= +github.com/urfave/cli/v2 v2.27.7/go.mod h1:CyNAG/xg+iAOg0N4MPGZqVmv2rCoP267496AOXUZjA4= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= @@ -189,36 +212,50 @@ github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDf github.com/yudai/pp v2.0.1+incompatible h1:Q4//iY4pNF6yPLZIigmvcl7k/bPgrcTPIFIcmawg5bI= github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/zclconf/go-cty v1.15.1 h1:RgQYm4j2EvoBRXOPxhUvxPzRrGDo1eCOhHXuGfrj5S0= -github.com/zclconf/go-cty v1.15.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.16.3 h1:osr++gw2T61A8KVYHoQiFbFd1Lh3JOCXc/jFLJXKTxk= +github.com/zclconf/go-cty v1.16.3/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 h1:Hf9xI/XLML9ElpiHVDNwvqI0hIFlzV8dgIr35kV1kRU= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0/go.mod h1:NfchwuyNoMcZ5MLHwPrODwUF1HWCXWrL31s8gSAdIKY= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 h1:1UoZQm6f0P/ZO0w1Ri+f+ifG/gXhegadRdwBIXEFWDo= -golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= +golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= -golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= -golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= -golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= +golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -237,36 +274,50 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= -golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= +golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8= -golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= +golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= +golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.240.0 h1:PxG3AA2UIqT1ofIzWV2COM3j3JagKTKSwy7L6RHNXNU= +google.golang.org/api v0.240.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= +google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 h1:1tXaIXCracvtsRxSBsYDiSBN0cuJvM7QYW+MrpIRY78= +google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:49MsLSx0oWMOZqcpB3uL8ZOkAh1+TndpJ8ONoCBWiZk= +google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2 h1:vPV0tzlsK6EzEDHNNH5sa7Hs9bd7iXR7B1tSiPepkV0= +google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:pKLAc5OolXC3ViWGI62vvC0n10CpwAtRcTNCFwTKBEw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= diff --git a/main.go b/main.go index 89fb6687..efcc7806 100644 --- a/main.go +++ b/main.go @@ -31,12 +31,16 @@ func main() { region string workflow string name string + provider string + outfile string + policyName string ) log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr}) app := &cli.App{ EnableBashCompletion: true, Flags: []cli.Flag{}, + UsageText: "Pike is a CLI for investigating IAM permissions", Commands: []*cli.Command{ { Name: "make", @@ -53,11 +57,15 @@ func main() { }, Action: func(*cli.Context) error { arn, err := pike.Make(directory) + if err != nil { + return fmt.Errorf("make failed: %w", err) + } + if arn != nil { - log.Print(*arn) + fmt.Print(*arn) } - return fmt.Errorf("make failed: %w", err) + return nil }, }, { @@ -159,13 +167,31 @@ func main() { Usage: "Add resource constraints to policy (AWS only)", Destination: &enableResources, }, + &cli.StringFlag{ + Name: "provider", + Aliases: []string{"p"}, + Usage: "Filter results for just this provider (e.g. aws, gcp, azure)", + Destination: &provider, + }, + &cli.StringFlag{ + Name: "outfile", + //Aliases: []string{""}, + Usage: "filepath you want to write to the policy to", + Destination: &outfile, + }, + &cli.StringFlag{ + Name: "policyName", + //Aliases: []string{""}, + Usage: "the name of the policy you want to write", + Destination: &policyName, + }, }, Action: func(*cli.Context) error { if file == "" { - return pike.Scan(directory, output, nil, init, write, enableResources) + return pike.Scan(directory, output, nil, init, write, enableResources, provider, outfile, policyName) } - return pike.Scan(directory, output, &file, init, write, enableResources) + return pike.Scan(directory, output, &file, init, write, enableResources, provider, outfile, policyName) }, }, { @@ -183,8 +209,8 @@ func main() { &cli.StringFlag{ Name: "arn", Aliases: []string{"a"}, - Usage: "Policy identifier e.g. arn", - Value: "arn:aws:iam::680235478471:policy/basic", + Usage: "Policy identifier e.g. arn, gcp role path", + Required: true, Destination: &arn, EnvVars: []string{"ARN"}, }, @@ -197,7 +223,14 @@ func main() { }, Action: func(*cli.Context) error { theSame, err := pike.Compare(directory, arn, init) - log.Print("The same: ", theSame) + if err != nil { + log.Fatal().Msg(err.Error()) + os.Exit(1) + } + + if !theSame { + os.Exit(1) + } return err }, @@ -227,15 +260,20 @@ func main() { return err } if Difference.Under != nil { + fmt.Println("The following are under-permissive: ") + for _, v := range Difference.Under { fmt.Println(v) } + return errors.New("under-permissive") } if Difference.Over != nil { + fmt.Println("The following are over-permissive: ") + for _, v := range Difference.Over { fmt.Println(v) } diff --git a/src/aws.go b/src/aws.go index 7f75b53d..bf552bdc 100644 --- a/src/aws.go +++ b/src/aws.go @@ -14,1078 +14,1532 @@ const ( data string = "data" ) -var ( - tFLookup = map[string]interface{}{ //nolint:gochecknoglobals - "aws_accessanalyzer_analyzer": awsAccessAnalyzer, - "aws_accessanalyzer_archive_rule": awsAccessAnalyzerArchiveRule, - "aws_account_alternate_contact": awsAccountAlternativeContact, - "aws_account_primary_contact": awsAccountPrimaryContact, - "aws_account_region": awsAccountRegion, - "aws_acm_certificate": AWSAcmCertificate, - "aws_acm_certificate_validation": placeholder, - "aws_acmpca_certificate": awsAcmpcaCertificate, - "aws_acmpca_certificate_authority": awsAcmpcaCertificateAuthority, - "aws_acmpca_certificate_authority_certificate": awsAcmpcaCertificateAuthorityCertificate, - "aws_acmpca_permission": awsAcmpcaPermission, - "aws_acmpca_policy": awsAcmpcaPolicy, - "aws_alb": awsLb, - "aws_alb_listener": awsLbListener, - "aws_alb_target_group": awsLbTargetGroup, - "aws_alb_target_group_attachment": awsLbTargetGroupAttachment, - "aws_ami": awsAmi, - "aws_ami_copy": awsAmiCopy, - "aws_ami_from_instance": awsAmiFromInstance, - "aws_ami_launch_permission": awsAmiLauchPermission, - "aws_amplify_app": awsAmplifyApp, - "aws_amplify_branch": awsAmplifyBranch, - "aws_amplify_domain_association": awsAmplifyDomainAssociation, - "aws_api_gateway_account": awsAPIGatewayAccount, - "aws_api_gateway_api_key": awsApigatewayv2Api, - "aws_api_gateway_authorizer": awsApigatewayv2Api, - "aws_api_gateway_base_path_mapping": awsApigatewayv2Api, - "aws_api_gateway_client_certificate": awsAPIGatewayRestAPI, - "aws_api_gateway_deployment": awsApigatewayv2Api, - "aws_api_gateway_documentation_part": awsApigatewayv2Api, - "aws_api_gateway_documentation_version": awsApigatewayv2Api, - "aws_api_gateway_domain_name": awsApigatewayv2Api, - "aws_api_gateway_gateway_response": awsApigatewayv2Api, - "aws_api_gateway_integration": awsApigatewayv2Api, - "aws_api_gateway_integration_response": awsApigatewayv2Api, - "aws_api_gateway_method": awsApigatewayv2Api, - "aws_api_gateway_method_response": awsApigatewayv2Api, - "aws_api_gateway_method_settings": awsApigatewayv2Api, - "aws_api_gateway_model": awsApigatewayv2Api, - "aws_api_gateway_request_validator": awsAPIGatewayRestAPI, - "aws_api_gateway_resource": awsApigatewayv2Api, - "aws_api_gateway_rest_api": awsAPIGatewayRestAPI, - "aws_api_gateway_rest_api_policy": awsApigatewayv2Api, - "aws_api_gateway_stage": awsApigatewayv2Api, - "aws_api_gateway_usage_plan": awsApigatewayv2Api, - "aws_api_gateway_usage_plan_key": awsApigatewayv2Api, - "aws_api_gateway_vpc_link": awsApigatewayv2Api, - "aws_apigatewayv2_api": awsApigatewayv2Api, - "aws_apigatewayv2_api_mapping": awsApigatewayv2Api, - "aws_apigatewayv2_authorizer": awsApigatewayv2Api, - "aws_apigatewayv2_deployment": awsApigatewayv2Api, - "aws_apigatewayv2_domain_name": awsApigatewayv2Api, - "aws_apigatewayv2_integration": awsApigatewayv2Api, - "aws_apigatewayv2_integration_response": awsApigatewayv2Api, - "aws_apigatewayv2_model": awsApigatewayv2Api, - "aws_apigatewayv2_route": awsApigatewayv2Api, - "aws_apigatewayv2_route_response": awsApigatewayv2Api, - "aws_apigatewayv2_stage": awsApigatewayv2Api, - "aws_apigatewayv2_vpc_link": awsApigatewayv2Api, - "aws_app_cookie_stickiness_policy": awsAppCookieStickinessPolicy, - "aws_appautoscaling_policy": awsAppautoscalingPolicy, - "aws_appautoscaling_scheduled_action": awsAppautoscalingScheduledAction, - "aws_appautoscaling_target": awsAppautoscalingTarget, - "aws_appconfig_application": awsAppconfigApplication, - "aws_appconfig_configuration_profile": awsAppconfigConfigurationProfile, - "aws_appconfig_environment": awsAppconfigEnvironment, - "aws_appconfig_extension": awsAppconfigExtension, - "aws_appconfig_extension_association": awsAppconfigExtensionAssociation, - "aws_appconfig_hosted_configuration_version": awsAppconfigHostedConfigurationVersion, - "aws_appflow_connector_profile": awsAppflowConnectorProfile, - "aws_appflow_flow": awsAppflowFlow, - "aws_appintegrations_data_integration": awsAppintegrationsDataIntegration, - "aws_appintegrations_event_integration": awsAppintegrationsEventIntegration, - "aws_applicationinsights_application": awsApplicationinsightsApplication, - "aws_apprunner_auto_scaling_configuration_version": awsApprunnerAutoScalingConfigurationVersion, - "aws_apprunner_default_auto_scaling_configuration_version": awsApprunnerDefaultAutoScalingConfigurationVersion, //nolint:lll - "aws_apprunner_observability_configuration": awsApprunnerObservabilityConfiguration, - "aws_apprunner_service": awsApprunnerService, - "aws_apprunner_vpc_connector": awsApprunnerVpcConnector, - "aws_apprunner_vpc_ingress_connection": awsApprunnerVpcIngressConnection, - "aws_appstream_image_builder": awsAppstreamImageBuilder, - "aws_appsync_domain_name": awsAppsyncDomainName, - "aws_appsync_domain_name_api_association": awsAppsyncDomainNameAPIAssociation, - "aws_appsync_function": awsAppsyncFunction, - "aws_appsync_resolver": awsAppsyncResolver, - "aws_athena_data_catalog": awsAthenaDataCatalog, - "aws_athena_database": awsAthenaDatabase, - "aws_athena_named_query": awsAthenaNamedQuery, - "aws_athena_prepared_statement": awsAthenaPreparedStatement, - "aws_athena_workgroup": awsAthenaWorkgroup, - "aws_auditmanager_account_registration": awsAuditmanagerAccountRegistration, - "aws_auditmanager_assessment": awsAuditmanagerAssessment, - "aws_auditmanager_assessment_delegation": awsAuditmanagerAssessmentDelegation, - "aws_auditmanager_assessment_report": awsAuditmanagerAssessmentReport, - "aws_auditmanager_control": awsAuditmanagerControl, - "aws_auditmanager_framework": awsAuditmanagerFramework, - "aws_auditmanager_framework_share": awsAuditmanagerFrameworkShare, - "aws_auditmanager_organization_admin_account_registration": awsAuditmanagerOrganizationAdminAccountRegistration, - "aws_autoscaling_attachment": awsAutoscalingAttachment, - "aws_autoscaling_group": awsAutoscalingGroup, - "aws_autoscaling_group_tag": awsAutoscalingGroupTag, - "aws_autoscaling_lifecycle_hook": awsAutoscalingLifecycleHook, - "aws_autoscaling_notification": awsAutoscalingNotification, - "aws_autoscaling_policy": awsAutoscalingPolicy, - "aws_autoscaling_schedule": awsAutoscalingSchedule, - "aws_autoscaling_traffic_source_attachment": awsAutoscalingTrafficSourceAttachment, - "aws_autoscalingplans_scaling_plan": awsAutoscalingplansScalingPlan, - "aws_backup_framework": awsBackupFramework, - "aws_backup_global_settings": awsBackupGlobalSettings, - "aws_backup_plan": awsBackupPlan, - "aws_backup_region_settings": awsBackupRegionSettings, - "aws_backup_report_plan": awsBackupReportPlan, - "aws_backup_selection": awsBackupSelection, - "aws_backup_vault": awsBackupVault, - "aws_backup_vault_lock_configuration": awsBackupVaultLockConfiguration, - "aws_backup_vault_notifications": awsBackupVaultNotification, - "aws_backup_vault_policy": awsBackupVaultPolicy, - "aws_batch_compute_environment": awsBatchComputeEnvironment, - "aws_batch_job_definition": awsBatchJobDefinition, - "aws_batch_job_queue": awsBatchJobQueue, - "aws_batch_scheduling_policy": awsBatchSchedulingPolicy, - "aws_bcmdataexports_export": awsBcmdataexportsExport, - "aws_bedrock_custom_model": awsBedrockCustomModel, - "aws_bedrock_model_invocation_logging_configuration": awsBedrockModelInvocationLoggingConfiguration, - "aws_bedrock_provisioned_model_throughput": awsBedrockProvisionedModelThroughput, - "aws_bedrockagent_agent": awsBedrockagentAgent, - "aws_bedrockagent_agent_action_group": awsBedrockagentActionGroup, - "aws_bedrockagent_agent_alias": awsBedrockagentAgentAlias, - "aws_bedrockagent_data_source": awsBedrockagentDatasource, - "aws_bedrockagent_knowledge_base": awsBedrockagentKnowledgeBase, - "aws_budgets_budget": awsBudgetsBudget, - "aws_budgets_budget_action": awsBudgetsBudgetAction, - "aws_ce_anomaly_monitor": awsCeAnomalyMonitor, - "aws_ce_anomaly_subscription": awsCeAnomalySubscription, - "aws_ce_cost_allocation_tag": awsCeCostAllocationTag, - "aws_ce_cost_category": awsCeCostCategory, - "aws_chatbot_slack_channel_configuration": awsChatbotSlackChannelConfiguration, - "aws_chatbot_teams_channel_configuration": awsChatbotTeamsChannelConfiguration, - "aws_chime_voice_connector": awsChimeVoiceConnector, - "aws_chime_voice_connector_group": awsChimeVoiceConnectorGroup, - "aws_chime_voice_connector_logging": awsChimeVoiceConnectorLogging, - "aws_chime_voice_connector_origination": awsChimeVoiceConnectorOrigination, - "aws_chime_voice_connector_streaming": awsChimeVoiceConnectorStreaming, - "aws_chime_voice_connector_termination": awsChimeVoiceConnectorTermination, - "aws_chime_voice_connector_termination_credentials": awsChimeVoiceConnectorTerminationCredentials, - "aws_chimesdkmediapipelines_media_insights_pipeline_configuration": awsChimesdkmediapipelinesMediaInsightsPipelineConfiguration, - "aws_chimesdkvoice_global_settings": awsChimesdkvoiceGlobalSettings, - "aws_chimesdkvoice_sip_media_application": awsChimesdkvoiceSIPMediaApplication, - "aws_chimesdkvoice_sip_rule": awsChimesdkvoiceSIPRule, - "aws_chimesdkvoice_voice_profile_domain": awsChimesdkvoiceVoiceProfileDomain, - "aws_cleanrooms_collaboration": awsCleanroomsCollaboration, - "aws_cleanrooms_configured_table": awsCleanroomsConfiguredTable, - "aws_cloud9_environment_ec2": awsCloud9EnvironmentEc2, - "aws_cloudformation_stack": awsCloudformationStack, - "aws_cloudformation_stack_set": awsCloudFormationStackSet, - "aws_cloudformation_stack_set_instance": awsCloudFormationStackSetInstance, - "aws_cloudformation_type": awsCloudformationType, - "aws_cloudfront_cache_policy": awsCloudfrontCachePolicy, - "aws_cloudfront_continuous_deployment_policy": awsCloudfrontContinuousDeploymentPolicy, - "aws_cloudfront_distribution": awsCloudfrontDistribution, - "aws_cloudfront_field_level_encryption_config": awsCloudfrontFieldLevelEncryptionConfig, - "aws_cloudfront_field_level_encryption_profile": awsCloudfrontFieldLevelEncryptionProfile, - "aws_cloudfront_function": awsCloudfrontFunction, - "aws_cloudfront_key_group": awsCloudfrontKeyGroup, - "aws_cloudfront_key_value_store": awsCloudfrontKeyValueStore, - "aws_cloudfront_monitoring_subscription": awsCloudfrontMonitoringSubscription, - "aws_cloudfront_origin_access_control": awsCloudfrontOriginAccessControl, - "aws_cloudfront_origin_access_identity": awsCloudfrontOriginAccessIdentity, - "aws_cloudfront_origin_request_policy": awsCloudfrontOriginRequestPolicy, - "aws_cloudfront_public_key": awsCloudfrontPublicKey, - "aws_cloudfront_realtime_log_config": awsCloudfrontRealtimeLogConfig, - "aws_cloudfront_response_headers_policy": awsCloudfrontResponseHeadersPolicy, - "aws_cloudsearch_domain": awsCloudsearchDomain, - "aws_cloudsearch_domain_service_access_policy": awsCloudsearchDomainServiceAccessPolicy, - "aws_cloudtrail": awsCloudtrail, - "aws_cloudtrail_event_data_store": awsCloudtrailEventDataStore, - "aws_cloudwatch_composite_alarm": awsCloudwatchCompositeAlarm, - "aws_cloudwatch_dashboard": awsCloudwatchDashboard, - "aws_cloudwatch_event_api_destination": awsCloudwatchEventAPIDestination, - "aws_cloudwatch_event_archive": awsCloudwatchEventArchive, - "aws_cloudwatch_event_bus": awsCloudwatchEventBus, - "aws_cloudwatch_event_bus_policy": awsCloudwatchEventBusPolicy, - "aws_cloudwatch_event_connection": awsCloudwatchEventConnection, - "aws_cloudwatch_event_endpoint": awsCloudwatchEventEndpoint, - "aws_cloudwatch_event_permission": awsCloudwatchEventPermission, - "aws_cloudwatch_event_rule": awsCloudwatchEventRule, - "aws_cloudwatch_event_target": awsCloudwatchEventTarget, - "aws_cloudwatch_log_account_policy": awsCloudwatchLogAccountPolicy, - "aws_cloudwatch_log_data_protection_policy": awsCloudwatchLogDataProtectionPolicy, - "aws_cloudwatch_log_destination": awsCloudwatchLogDestination, - "aws_cloudwatch_log_destination_policy": awsCloudwatchLogDestinationPolicy, - "aws_cloudwatch_log_group": awsCloudwatchLogGroup, - "aws_cloudwatch_log_metric_filter": awsCloudwatchLogMetricFilter, - "aws_cloudwatch_log_resource_policy": awsCloudwatchLogResourcePolicy, - "aws_cloudwatch_log_stream": awsCloudwatchLogStream, - "aws_cloudwatch_log_subscription_filter": awsCloudwatchLogSubscriptionFilter, - "aws_cloudwatch_metric_alarm": awsCloudwatchMetricAlarm, - "aws_cloudwatch_metric_stream": awsCloudwatchMetricStream, - "aws_cloudwatch_query_definition": awsCloudwatchQueryDestination, - "aws_codeartifact_domain": awsCodeartifactDomain, - "aws_codeartifact_domain_permissions_policy": awsCodeartifactDomainPermissionsPolicy, - "aws_codeartifact_repository": awsCodeartifactRepository, - "aws_codeartifact_repository_permissions_policy": awsCodeartifactRepositoryPermissionsPolicy, - "aws_codebuild_project": awsCodebuildProject, - "aws_codebuild_report_group": awsCodebuildReportGroup, - "aws_codebuild_resource_policy": awsCodebuildResourcePolicy, - "aws_codebuild_source_credential": awsCodebuildSourceCredential, - "aws_codebuild_webhook": awsCodebuildWebhook, - "aws_codecatalyst_dev_environment": placeholder, - "aws_codecatalyst_project": placeholder, - "aws_codecatalyst_source_repository": placeholder, - "aws_codecommit_approval_rule_template": awsCodecommitApprovalRuleTemplate, - "aws_codecommit_approval_rule_template_association": awsCodecommitApprovalRuleTemplateAssociation, - "aws_codecommit_repository": awsCodecommitRepository, - "aws_codecommit_trigger": awsCodecommitTrigger, - "aws_codedeploy_app": awsCodedeployApp, - "aws_codedeploy_deployment_config": awsCodedeployDeploymentConfig, - "aws_codedeploy_deployment_group": awsCodedeployDeploymentGroup, - "aws_codeguruprofiler_profiling_group": awsCodeguruprofilerProfilingGroup, - "aws_codegurureviewer_repository_association": awsCodegurureviewerRepositoryAssociation, - "aws_codepipeline": awsCodepipeline, - "aws_codepipeline_custom_action_type": awsCodepipelineCustomActionType, - "aws_codepipeline_webhook": awsCodepipelineWebhook, - "aws_codestarconnections_connection": awsCodestarconnectionsConnection, - "aws_codestarconnections_host": awsCodestarconnectionsHost, - "aws_codestarnotifications_notification_rule": awsCodestarconnectionsNotificationsRule, - "aws_cognito_identity_pool": awsCognitoIdentityPool, - "aws_cognito_identity_pool_provider_principal_tag": awsCognitoIdentityPoolProviderPrincipalTag, - "aws_cognito_identity_pool_roles_attachment": awsCognitoIdentityPoolRolesAttachment, - "aws_cognito_identity_provider": awsCognitoIdentityProvider, - "aws_cognito_resource_server": awsCognitoResourceServer, - "aws_cognito_risk_configuration": awsCognitoRiskConfiguration, - "aws_cognito_user": awsCognitoUser, - "aws_cognito_user_group": awsCognitoUserGroup, - "aws_cognito_user_in_group": awsCognitoUserInGroup, - "aws_cognito_user_pool": awsCognitoUserPool, - "aws_cognito_user_pool_client": awsCognitoUserPoolClient, - "aws_cognito_user_pool_domain": awsCognitoUserPoolDomain, - "aws_cognito_user_pool_ui_customization": awsCognitoUserPoolUICustomization, - "aws_comprehend_document_classifier": awsComprehendDocumentClassifier, - "aws_config_config_rule": awsConfigConfigRule, - "aws_config_configuration_aggregator": awsConfigConfigurationAggregator, - "aws_config_configuration_recorder": awsConfigConfigurationRecorder, - "aws_config_configuration_recorder_status": awsConfigConfigurationRecorderStatus, - "aws_config_conformance_pack": awsConfigConformancePack, - "aws_config_delivery_channel": awsConfigDeliveryChannel, - "aws_config_organization_conformance_pack": awsConfigOrganizationConformancePack, - "aws_connect_bot_association": awsConnectBotAssociation, - "aws_connect_contact_flow": awsConnectContactFlow, - "aws_connect_contact_flow_module": awsConnectContactFlowModule, - "aws_connect_hours_of_operation": awsConnectHoursOfOperation, - "aws_connect_instance": awsConnectInstance, - "aws_connect_instance_storage_config": awsConnectInstanceStorageConfig, - "aws_connect_phone_number": awsConnectPhoneNumber, - "aws_connect_queue": awsConnectQueue, - "aws_connect_quick_connect": awsConnectQuickConnect, - "aws_connect_routing_profile": awsConnectRoutingProfile, - "aws_connect_security_profile": awsConnectSecurityProfile, - "aws_connect_user": awsConnectUser, - "aws_connect_user_hierarchy_group": awsConnectUserHierarchyGroup, - "aws_connect_user_hierarchy_structure": awsConnectUserHierarchyStructure, - "aws_connect_vocabulary": awsConnectVocabulary, - "aws_controltower_control": awsControltowerControl, - "aws_controltower_landing_zone": awsControltowerLandingZone, - "aws_cur_report_definition": awsCurReportDefinition, - "aws_customer_gateway": awsCustomerGateway, - "aws_datapipeline_pipeline": awsDatapipelinePipeline, - "aws_datapipeline_pipeline_definition": awsDatapipelinePipelineDefinition, - "aws_datasync_agent": awsDatasyncAgent, - "aws_datasync_location_azure_blob": awsDatasyncLocationAzureBlob, - "aws_datasync_location_efs": awsDatasyncLocationEfs, - "aws_datasync_location_fsx_lustre_file_system": awsDatasyncLocationFsxLustreFileSystem, - "aws_datasync_location_fsx_ontap_file_system": awsDatasyncLocationFsxOntapFileSystem, - "aws_datasync_location_fsx_openzfs_file_system": awsDatasyncLocationFsxOpenzfsFileSystem, - "aws_datasync_location_fsx_windows_file_system": awsDatasyncLocationFsxWindowsFileSystem, - "aws_datasync_location_hdfs": awsDatasyncLocationHdfs, - "aws_datasync_location_nfs": awsDatasyncLocationNfs, - "aws_datasync_location_object_storage": awsDatasyncLocationObjectStorage, - "aws_datasync_location_s3": awsDatasyncLocationS3, - "aws_datasync_location_smb": awsDatasyncLocationSmb, - "aws_datasync_task": awsDatasyncTask, - "aws_datazone_domain": awsDatazoneDomain, - "aws_datazone_environment_blueprint_configuration": awsDatazoneEnvironmentBlueprintConfiguration, - "aws_datazone_project": awsDatazoneProject, - "aws_dax_cluster": awsDaxCluster, - "aws_dax_parameter_group": awsDaxParameterGroup, - "aws_dax_subnet_group": awsDaxSubnetGroup, - "aws_db_cluster_snapshot": awsDBClusterSnapshot, - "aws_db_event_subscription": awsDBEventSubscription, - "aws_db_instance": awsDBInstance, - "aws_db_instance_automated_backups_replication": awsDBInstanceAutomatedBackupsReplication, - "aws_db_instance_role_association": awsDBInstanceRoleAssociation, - "aws_db_option_group": awsDBOptionGroup, - "aws_db_parameter_group": awsDBParameterGroup, - "aws_db_proxy": awsDBProxy, - "aws_db_proxy_default_target_group": awsDBProxyDefaultTargetGroup, - "aws_db_proxy_endpoint": awsDBProxyEndpoint, - "aws_db_proxy_target": awsDBProxyTarget, - "aws_db_snapshot": awsDBSnapshot, - "aws_db_snapshot_copy": awsDBSnapshotCopy, - "aws_db_subnet_group": awsDBSubnetGroup, - "aws_default_network_acl": awsDefaultNetworkACL, - "aws_default_route_table": awsDefaultRouteTable, - "aws_default_security_group": awsDefaultSecurityGroup, - "aws_default_subnet": awsDefaultSubnet, - "aws_default_vpc": awsDefaultVpc, - "aws_default_vpc_dhcp_options": awsDefaultVpcDhcpOptions, - "aws_detective_graph": awsDetectiveGraph, - "aws_detective_invitation_accepter": awsDetectiveInvitationAccepter, - "aws_detective_organization_admin_account": awsDectectiveOrganizationAdminAccount, - "aws_devopsguru_notification_channel": awsDevopsguruNotificationChannel, - "aws_devopsguru_resource_collection": awsDevopsguruResourceCollection, - "aws_directory_service_directory": awsDirectoryServiceDirectory, - "aws_directory_service_log_subscription": awsDirectoryServiceLogSubscription, - "aws_dlm_lifecycle_policy": awsDlmLifecyclePolicy, - "aws_dms_certificate": awsDmsCertificate, - "aws_dms_endpoint": awsDmsEndpoint, - "aws_dms_event_subscription": awsDmsEventSubscription, - "aws_dms_replication_config": awsDmsReplicationConfig, - "aws_dms_replication_instance": awsDmsReplicationInstance, - "aws_dms_replication_subnet_group": awsDmsReplicationSubnetGroup, - "aws_dms_replication_task": awsDmsReplicationTask, - "aws_dms_s3_endpoint": awsDmsS3Endpoint, - "aws_docdb_cluster": awsRdsCluster, - "aws_docdb_cluster_instance": awsNeptuneClusterInstance, - "aws_docdb_cluster_parameter_group": awsRdsClusterParameterGroup, - "aws_docdb_cluster_snapshot": awsDBClusterSnapshot, - "aws_docdb_event_subscription": awsNeptuneEventSubscription, - "aws_docdb_global_cluster": awsRdsGlobalCluster, - "aws_docdb_subnet_group": awsDBSubnetGroup, - "aws_docdbelastic_cluster": awsDocdbelasticCluster, - "aws_dx_gateway": awsDxGateway, - "aws_dx_gateway_association": awsDxGatewayAssociation, - "aws_dx_hosted_transit_virtual_interface_accepter": awsDxHostedTransitVirtualInterfaceAccepter, - "aws_dynamodb_contributor_insights": awsDynamodbContributorInsights, - "aws_dynamodb_global_table": awsDynamodbGlobalTable, - "aws_dynamodb_table": awsDynamodbTable, - "aws_dynamodb_table_item": awsDynamodbTableItem, - "aws_dynamodb_tag": awsDynamodbTag, - "aws_ebs_default_kms_key": awsEbsDefaultKmsKey, - "aws_ebs_encryption_by_default": awsEbsEncryptionByDefault, - "aws_ebs_snapshot": awsEbsSnapshot, - "aws_ebs_snapshot_copy": awsEbsSnapshotCopy, - "aws_ebs_volume": awsEbsVolume, - "aws_ec2_availability_zone_group": awsEc2AvailabilityGroup, - "aws_ec2_capacity_reservation": awsEc2CapacityReservation, - "aws_ec2_carrier_gateway": awsEc2CarrierGateway, - "aws_ec2_client_vpn_authorization_rule": awsEc2ClientvpnAuthorizationRule, - "aws_ec2_client_vpn_endpoint": awsEc2ClientVpnEndpoint, - "aws_ec2_client_vpn_network_association": awsEc2ClientVpnNetworkAssociation, - "aws_ec2_client_vpn_route": awsEc2ClientVpnRoute, - "aws_ec2_fleet": awsEc2Fleet, - "aws_ec2_host": awsEc2Host, - "aws_ec2_local_gateway_route": awsEc2LocalGatewayRoute, - "aws_ec2_local_gateway_route_table_vpc_association": awsEc2LocalGatewayRouteTableVpcAssociation, - "aws_ec2_managed_prefix_list": awsEc2ManagedPrefixList, - "aws_ec2_network_insights_analysis": awsEc2NetworkInsightsAnalysis, - "aws_ec2_network_insights_path": awsEc2NetworkInsightsPath, - "aws_ec2_tag": awsEc2Tag, - "aws_ec2_transit_gateway": awsEc2TransitGateway, - "aws_ec2_transit_gateway_connect": awsEc2TransitGatewayConnect, - "aws_ec2_transit_gateway_multicast_domain": awsEc2TransitGatewayMulticastDomain, - "aws_ec2_transit_gateway_multicast_domain_association": awsEc2TransitGatewayMulticastDomainAssociation, - "aws_ec2_transit_gateway_multicast_group_member": awsEc2TransitGatewayMulticastGroupMember, - "aws_ec2_transit_gateway_multicast_group_source": awsEc2TransitGatewayMulticastGroupSource, - "aws_ec2_transit_gateway_peering_attachment": awsEc2TransitGatewayPeeringAttachment, - "aws_ec2_transit_gateway_route": awsEc2TransitGatewayRoute, - "aws_ec2_transit_gateway_route_table": awsEc2TransitGatewayRouteTable, - "aws_ec2_transit_gateway_route_table_association": awsEc2TransitGatewayRouteTableAssociation, - "aws_ec2_transit_gateway_route_table_propagation": awsEc2TransitGatewayRouteTablePropagation, - "aws_ec2_transit_gateway_vpc_attachment": awsEc2TransitGatewayVpcAttachment, - "aws_ecr_lifecycle_policy": awsEcrLifecyclePolicy, - "aws_ecr_pull_through_cache_rule": awsEcrPullThroughCacheRule, - "aws_ecr_registry_policy": awsEcrRegistryPolicy, - "aws_ecr_registry_scanning_configuration": awsEcrRegistryScanningConfiguration, - "aws_ecr_replication_configuration": awsEcrReplicationConfiguration, - "aws_ecr_repository": awsEcrRepository, - "aws_ecr_repository_creation_template": awsEcrRepositoryCreationTemplate, - "aws_ecr_repository_policy": awsEcrRepositoryPolicy, - "aws_ecrpublic_repository": awsEcrPublicRepository, - "aws_ecrpublic_repository_policy": awsEcrpublicRepositoryPolicy, - "aws_ecs_capacity_provider": awsEcsCapacityProvider, - "aws_ecs_cluster": awsEcsCluster, - "aws_ecs_service": awsEcsService, - "aws_ecs_task_definition": awsEcsTaskDefinition, - "aws_ecs_task_set": awsEcsTaskSet, - "aws_efs_access_point": awsEfsAccessPoint, - "aws_efs_backup_policy": awsEfsBackupPolicy, - "aws_efs_file_system": awsEfsFileSystem, - "aws_efs_file_system_policy": awsEfsFileSystemPolicy, - "aws_efs_mount_target": awsEfsMountTarget, - "aws_efs_replication_configuration": awsEfsReplicationConfiguration, - "aws_egress_only_internet_gateway": awsEgressOnlyInternetGateway, - "aws_eip": awsEip, - "aws_eip_association": awsEipAssociation, - "aws_eks_access_entry": awsEksAccessEntry, - "aws_eks_addon": awsEksAddon, - "aws_eks_cluster": awsEksCluster, - "aws_eks_fargate_profile": awsEksFargateProfile, - "aws_eks_identity_provider_config": awsEksIdentityProviderConfig, - "aws_eks_node_group": awsEksNodeGroup, - "aws_eks_pod_identity_association": awsEksPodIdentityAssociation, - "aws_elastic_beanstalk_application": awsElasticBeanstalkApplication, - "aws_elastic_beanstalk_application_version": awsElasticBeanstalkApplicationVersion, - "aws_elastic_beanstalk_configuration_template": awsElasticBeanstalkConfigurationTemplate, - "aws_elastic_beanstalk_environment": awsElastiBeanstalkEnvironment, - "aws_elasticache_cluster": awsElasticacheCluster, - "aws_elasticache_global_replication_group": awsElasticacheGlobalReplicationGroup, - "aws_elasticache_parameter_group": awsElasticacheParameterGroup, - "aws_elasticache_replication_group": awsElasticacheReplicationGroup, - "aws_elasticache_subnet_group": awsElasticacheSubnetGroup, - "aws_elasticache_user": awsElasticacheUser, - "aws_elasticache_user_group": awsElasticacheUserGroup, - "aws_elasticsearch_domain": awsElasticsearchDomain, - "aws_elasticsearch_domain_policy": awsElasticsearchDomainPolicy, - "aws_elb": awsElb, - "aws_elb_attachment": awsElbAttachment, - "aws_emr_cluster": awsEmrCluster, - "aws_emr_managed_scaling_policy": awsEmrManagedScalingPolicy, - "aws_emr_security_configuration": awsEmrSecurityConfiguration, - "aws_emr_studio": awsEmrStudio, - "aws_emr_studio_session_mapping": awsEmrStudioSessionMapping, - "aws_emrcontainers_virtual_cluster": awsEmrcontainersVirtualCluster, - "aws_emrserverless_application": awsEmrseverlessApplication, - "aws_evidently_feature": awsEvidentlyFeature, - "aws_evidently_launch": awsEvidentlyLaunch, - "aws_evidently_project": awsEvidentlyProject, - "aws_evidently_segment": awsEvidentlySegment, - "aws_finspace_kx_environment": awsFinspaceKxEnvironment, - "aws_fis_experiment_template": awsFisExperimentTemplate, - "aws_flow_log": awsFlowLog, - "aws_fms_policy": awsFmsPolicy, - "aws_fms_resource_set": awsFmsResourceSet, - "aws_fsx_backup": awsFsxBackup, - "aws_fsx_data_repository_association": awsFsxDataRepositoryAssociation, - "aws_fsx_file_cache": awsFsxFileCache, - "aws_fsx_lustre_file_system": awsFsxLustreFileSystem, - "aws_fsx_ontap_file_system": awsFsxOntapFileSystem, - "aws_fsx_ontap_storage_virtual_machine": awsFsxOntapStorageVirtualMachine, - "aws_fsx_ontap_volume": awsFsxOntapVolume, - "aws_fsx_openzfs_file_system": awsFsxOpenzfsFileSystem, - "aws_fsx_openzfs_snapshot": awsFsxOpenzfsSnaphot, - "aws_fsx_openzfs_volume": awsFsxOpenzfsVolume, - "aws_fsx_windows_file_system": awsFsxWindowsFileSystem, - "aws_gamelift_alias": awsGameliftAlias, - "aws_gamelift_build": awsGameliftBuild, - "aws_gamelift_fleet": awsGameliftFleet, - "aws_gamelift_game_server_group": awsGameliftGameServerGroup, - "aws_gamelift_game_session_queue": awsGameliftGameSessionQueue, - "aws_gamelift_script": awsGameliftScript, - "aws_glacier_vault": awsGlacierVault, - "aws_glacier_vault_lock": awsGlacierVaultLock, - "aws_globalaccelerator_accelerator": awsGlobalacceleratorAccelerator, - "aws_globalaccelerator_cross_account_attachment": awsGlobalacceleratorCrossAccountAttachment, - "aws_globalaccelerator_endpoint_group": awsGlobalacceleratorEndpointGroup, - "aws_globalaccelerator_listener": awsGlobalacceleratorListener, - "aws_glue_catalog_database": awsGlueCatalogDatabase, - "aws_glue_catalog_table": awsGlueCatalogTable, - "aws_glue_classifier": awsGlueClassifier, - "aws_glue_connection": awsGlueConnection, - "aws_glue_crawler": awsGlueCrawler, - "aws_glue_data_catalog_encryption_settings": awsGlueDataCatalogEncryptionSettings, - "aws_glue_job": awsGlueJob, - "aws_glue_ml_transform": awsGlueMlTransform, - "aws_glue_registry": awsGlueRegistry, - "aws_glue_resource_policy": awsGlueResourcePolicy, - "aws_glue_schema": awsGlueSchema, - "aws_glue_security_configuration": awsGlueSecurityConfiguration, - "aws_glue_trigger": awsGlueTrigger, - "aws_glue_user_defined_function": awsGlueUserDefinedFunction, - "aws_glue_workflow": awsGlueWorkflow, - "aws_grafana_workspace_api_key": awsGrafanaWorkspaceAPIKey, - "aws_guardduty_detector": awsGuarddutyDetector, - "aws_guardduty_filter": awsGuarddutyFilter, - "aws_guardduty_ipset": awsGuarddutyIpset, - "aws_guardduty_malware_protection_plan": awsGuarddutyMalwareProtectionPlan, - "aws_guardduty_member": awsGuarddutyMember, - "aws_guardduty_threatintelset": awsGuarddutyThreatintelset, - "aws_iam_access_key": awsIamAccessKey, - "aws_iam_account_alias": awsIamAccountAlias, - "aws_iam_account_password_policy": awsIamAccountPasswordPolicy, - "aws_iam_group": awsIamGroup, - "aws_iam_group_membership": awsIamGroupMembership, - "aws_iam_group_policy": awsIamGroupPolicy, - "aws_iam_group_policy_attachment": awsIamGroupPolicyAttachment, - "aws_iam_instance_profile": awsIamInstanceProfile, - "aws_iam_openid_connect_provider": awsIamOpenidConnectProvider, - "aws_iam_policy": awsIamPolicy, - "aws_iam_policy_attachment": awsIamPolicyAttachment, - "aws_iam_role": awsIamRole, - "aws_iam_role_policy": awsIamRolePolicy, - "aws_iam_role_policy_attachment": awsIamRolePolicyAttachment, - "aws_iam_saml_provider": awsIamSamlProvider, - "aws_iam_security_token_service_preferences": awsIamSecurityTokenServicePreferences, - "aws_iam_server_certificate": awsIamServerCertificate, - "aws_iam_service_linked_role": awsIamServiceLinkedRole, - "aws_iam_service_specific_credential": awsIamServiceSpecificCredential, - "aws_iam_signing_certificate": awsIamSigningCertificate, - "aws_iam_user": awsIamUser, - "aws_iam_user_group_membership": awsIamUserGroupMembership, - "aws_iam_user_login_profile": awsIamUserLoginProfile, - "aws_iam_user_policy": awsIamUserPolicy, - "aws_iam_user_policy_attachment": awsIamUserPolicyAttachment, - "aws_iam_user_ssh_key": awsIamUserSSHKey, - "aws_iam_virtual_mfa_device": awsIamVirtualMfaDevice, - "aws_imagebuilder_component": awsImagebuilderComponent, - "aws_imagebuilder_container_recipe": awsImagebuilderContainerRecipe, - "aws_imagebuilder_distribution_configuration": awsImagebuilderDistributionConfiguration, - "aws_imagebuilder_image": awsImagebuilderImage, - "aws_imagebuilder_image_pipeline": awsImagebuilderImagePipeline, - "aws_imagebuilder_image_recipe": awsImagebuilderImageRecipe, - "aws_imagebuilder_infrastructure_configuration": awsImagebuilderInstrastructureConfiguration, - "aws_imagebuilder_workflow": awsImagebuilderWorkflow, - "aws_inspector2_delegated_admin_account": awsInspector2DelegatedAdminAccount, - "aws_inspector2_enabler": awsInspector2Enabler, - "aws_inspector2_member_association": awsInspector2MemberAssociation, - "aws_inspector2_organization_configuration": awsInspector2OrganizationConfiguration, - "aws_inspector_assessment_target": awsInspectorAssessmentTarget, - "aws_inspector_assessment_template": awsInspectorAssessmentTemplate, - "aws_inspector_resource_group": awsInspectorResouceGroup, - "aws_instance": awsInstance, - "aws_internet_gateway": awsInternetGateway, - "aws_internetmonitor_monitor": awsInternetmonitorMonitor, - "aws_iot_authorizer": awsIotAuthorizer, - "aws_iot_billing_group": awsIotBillingGroup, - "aws_iot_ca_certificate": awsIotCaCertificate, - "aws_iot_certificate": awsIotCertificate, - "aws_iot_policy": awsIotPolicy, - "aws_iot_provisioning_template": awsIotProvisioningTemplate, - "aws_iot_role_alias": awsIotRoleAlias, - "aws_iot_thing": awsIotThing, - "aws_iot_thing_group": awsIotThingGroup, - "aws_iot_thing_type": awsIotThingType, - "aws_iot_topic_rule": awsIotTopicRule, - "aws_iot_topic_rule_destination": awsIotTopicRuleDestination, - "aws_ivs_channel": awsIvsChannel, - "aws_ivs_playback_key_pair": awsIvsPlaybackKeyPair, - "aws_ivs_recording_configuration": awsIvsRecordingConfigration, - "aws_ivschat_logging_configuration": awsIvschatLoggingConfiguration, - "aws_ivschat_room": awsIvschatRoom, - "aws_kendra_data_source": awsKendraDataSource, - "aws_kendra_faq": awsKendraFaq, - "aws_kendra_index": awsKendraIndex, - "aws_key_pair": awsKeyPair, - "aws_keyspaces_keyspace": awsKeyspacesKeyspace, - "aws_keyspaces_table": awsKeyspacesTable, - "aws_kinesis_firehose_delivery_stream": awsKinesisFirehoseDeliveryStream, - "aws_kinesis_stream": awsKinesisStream, - "aws_kinesis_stream_consumer": awsKinesisStreamConsumer, - "aws_kinesis_video_stream": awsKinesisVideoStream, - "aws_kinesisanalyticsv2_application": awsKinesisanalyticsv2Application, - "aws_kms_alias": awsKmsAlias, - "aws_kms_ciphertext": awsKmsCiphertext, - "aws_kms_custom_key_store": awsKmsCustomKeyStore, - "aws_kms_external_key": awsKmsExternalKey, - "aws_kms_grant": awsKmsGrant, - "aws_kms_key": awsKmsKey, - "aws_kms_key_policy": awsKmsKeyPolicy, - "aws_kms_replica_external_key": awsKmsReplicaExternalKey, - "aws_kms_replica_key": awsKmsReplicaKey, - "aws_lakeformation_data_cells_filter": awsLakeformationDataCellsFilter, - "aws_lakeformation_resource_lf_tag": awsLakeformationResourceLfTag, - "aws_lambda_alias": awsLambdaAlias, - "aws_lambda_code_signing_config": awsLambdaCodeSigningConfig, - "aws_lambda_event_source_mapping": awsLambdaEventSourceMapping, - "aws_lambda_function": awsLambdaFunction, - "aws_lambda_function_event_invoke_config": awsLambdaFunctionEventInvokeConfig, - "aws_lambda_function_url": awsLambdaFunctionURL, - "aws_lambda_invocation": awsLambdaInvocation, - "aws_lambda_layer_version": awsLambdaLayerVersion, - "aws_lambda_layer_version_permission": awsLambdaLayerVersionPermission, - "aws_lambda_permission": awsLambdaPermission, - "aws_lambda_provisioned_concurrency_config": awsLambdaProvisionedConcurrencyConfig, - "aws_launch_configuration": awsLaunchConfiguration, - "aws_launch_template": awsLaunchTemplate, - "aws_lb": awsLb, - "aws_lb_cookie_stickiness_policy": awsLbCookieStickinessPolicy, - "aws_lb_listener": awsLbListener, - "aws_lb_listener_rule": awsLbListenerRule, - "aws_lb_target_group": awsLbTargetGroup, - "aws_lb_target_group_attachment": awsLbTargetGroupAttachment, - "aws_lex_bot": awsLexBot, - "aws_lex_bot_alias": awsLexBotAlias, - "aws_lex_intent": awsLexIntent, - "aws_lex_slot_type": awsLexSlotType, - "aws_licensemanager_grant": awsLicencemanagerGrant, - "aws_licensemanager_license_configuration": awsLicenceManagerLicencenceConfiguration, - "aws_lightsail_bucket": awsLightsailBucket, - "aws_lightsail_certificate": awsLightsailCertificate, - "aws_lightsail_database": awsLightsailDatabase, - "aws_lightsail_disk": awsLightsailDisk, - "aws_lightsail_distribution": awsLightsailDistribution, - "aws_lightsail_instance": awsLightsailInstance, - "aws_lightsail_instance_public_ports": awsLightsailInstancePublicPorts, - "aws_lightsail_key_pair": awsLightsailKeyPair, - "aws_lightsail_lb": awsLightsailLb, - "aws_lightsail_static_ip": awsLightsailStaticIP, - "aws_lightsail_static_ip_attachment": awsLightsailStaticIPAttachment, - "aws_load_balancer_backend_server_policy": awsLoadBalancerBackendServerPolicy, - "aws_load_balancer_listener_policy": awsLoadBalancerListenerPolicy, - "aws_load_balancer_policy": awsLoadBalancerPolicy, - "aws_location_geofence_collection": awsLocationGeofenceCollection, - "aws_location_map": awsLocationMap, - "aws_location_place_index": awsLocationPlaceIndex, - "aws_location_route_calculator": awsLocationRouteCalculator, - "aws_location_tracker": awsLocationTracker, - "aws_location_tracker_association": awsLocationTrackerAssociation, - "aws_macie2_custom_data_identifier": awsMacie2CustomDataIdentifier, - "aws_macie2_findings_filter": awsMacie2FindingsFilter, - "aws_media_convert_queue": awsMediaConvertQueue, - "aws_media_package_channel": awsMediaPackageChannel, - "aws_medialive_input": awsMedialiveInput, - "aws_medialive_input_security_group": awsMedialiveInputSecurityGroup, - "aws_medialive_multiplex": awsMedialiveMulitplex, - "aws_medialive_multiplex_program": awsMedialiveMultiplexProgram, - "aws_memorydb_acl": awsMemorydbACL, - "aws_memorydb_cluster": awsMemorydbCluster, - "aws_memorydb_parameter_group": awsMemorydbParameterGroup, - "aws_memorydb_snapshot": awsMemorydbSnapshot, - "aws_memorydb_subnet_group": awsMemorydbSubnetGroup, - "aws_mq_broker": awsMqBroker, - "aws_mq_configuration": awsMqConfiguration, - "aws_msk_cluster": awsMskCluster, - "aws_msk_cluster_policy": awsMskClusterPolicy, - "aws_msk_configuration": awsMskConfiguration, - "aws_msk_replicator": awsMskReplicator, - "aws_msk_scram_secret_association": awsMskScramSecretAssociation, - "aws_msk_serverless_cluster": awsMskServerlessCluster, - "aws_msk_vpc_connection": awsMskVpcConnection, - "aws_mwaa_environment": awsMwaaEnvironment, - "aws_nat_gateway": awsNatGateway, - "aws_neptune_cluster": awsNeptuneCluster, - "aws_neptune_cluster_endpoint": awsNeptuneClusterEndpoint, - "aws_neptune_cluster_instance": awsNeptuneClusterInstance, - "aws_neptune_cluster_parameter_group": awsRdsClusterParameterGroup, - "aws_neptune_cluster_snapshot": awsNeptuneClusterSnapshot, - "aws_neptune_event_subscription": awsNeptuneEventSubscription, - "aws_neptune_parameter_group": awsDBParameterGroup, - "aws_neptune_subnet_group": awsDBSubnetGroup, - "aws_network_acl": awsNetworkACL, - "aws_network_acl_association": awsNetworkACLAssociation, - "aws_network_acl_rule": awsNetworkACLRule, - "aws_network_interface": awsNetworkInterface, - "aws_network_interface_attachment": awsNetworkInterfaceAttachment, - "aws_networkfirewall_firewall": awsNetworkfirewallFirewall, - "aws_networkfirewall_firewall_policy": awsNetworkfirewallFirewallPolicy, - "aws_networkfirewall_logging_configuration": awsNetworkfirewallLoggingConfiguration, - "aws_networkfirewall_resource_policy": awsNetworkfirewallResourcePolicy, - "aws_networkfirewall_rule_group": awsNetworkfirewallRuleGroup, - "aws_networkfirewall_tls_inspection_configuration": awsNetworkfirewallTLSInspectionConfiguration, - "aws_networkmanager_connect_attachment": awsNetworkManagerConnectAttachment, - "aws_networkmanager_connect_peer": awsNetworkManagerConnectPeer, - "aws_networkmanager_core_network": awsNetworkmanagerCoreNetwork, - "aws_networkmanager_customer_gateway_association": awsNetworkmanagerCustomerGatewayAssociation, - "aws_networkmanager_device": awsNetworkmanagerDevice, - "aws_networkmanager_global_network": awsNetworkmanagerGlobalNetwork, - "aws_networkmanager_link": awsNetworkmanagerLink, - "aws_networkmanager_link_association": awsNetworkmanagerLinkAssocation, - "aws_networkmanager_site": awsNetworkmanagerSite, - "aws_networkmanager_site_to_site_vpn_attachment": awsNetworkmanagerSiteToSiteVpnAttachment, - "aws_networkmanager_transit_gateway_peering": awsNetworkmanagerTransitGatewayPeering, - "aws_networkmanager_transit_gateway_registration": awsNetworkmanagerTransitGatewayRegistration, - "aws_networkmanager_transit_gateway_route_table_attachment": awsNetworkmanagerTransitGatewayRouteTableAttachment, - "aws_networkmanager_vpc_attachment": awsNetworkmanagerVpcAttachment, - "aws_oam_link": awsOamLink, - "aws_oam_sink": awsOamSink, - "aws_oam_sink_policy": awsOamSinkPolicy, - "aws_opensearch_domain": awsElasticsearchDomain, - "aws_opensearch_domain_policy": awsElasticsearchDomainPolicy, - "aws_opensearchserverless_access_policy": awsOpenseachserverlessAccessPolicy, - "aws_opensearchserverless_collection": awsOpenseachserverlessCollection, - "aws_opensearchserverless_lifecycle_policy": awsOpenseachserverlessLifecyclePolicy, - "aws_opensearchserverless_security_config": awsOpenseachserverlessSecurityConfig, - "aws_opensearchserverless_security_policy": awsOpenseachserverlessSecurityPolicy, - "aws_opensearchserverless_vpc_endpoint": awsOpenseachserverlessVpcEndpoint, - "aws_organizations_account": awsOrganizationsAccount, - "aws_organizations_organization": awsOrganizationsOrganization, - "aws_organizations_organizational_unit": awsOrganizationsOrganizationalUnit, - "aws_organizations_policy": awsOrganizationsPolicy, - "aws_organizations_policy_attachment": awsOrganizationsPolicyAttachment, - "aws_organizations_resource_policy": awsOrganizationsResourcePolicy, - "aws_placement_group": awsPlacementGroup, - "aws_proxy_protocol_policy": awsProxyProtocolPolicy, - "aws_ram_principal_association": awsRAMPrincipleAssociation, - "aws_ram_resource_association": awsRAMResourceAssociation, - "aws_ram_resource_share": awsRAMResourceShare, - "aws_rds_cluster": awsRdsCluster, - "aws_rds_cluster_activity_stream": awsRdsClusterActivityStream, - "aws_rds_cluster_endpoint": awsRdsClusterEndpoint, - "aws_rds_cluster_instance": awsDBInstance, - "aws_rds_cluster_parameter_group": awsRdsClusterParameterGroup, - "aws_rds_cluster_role_association": awsRdsClusterRoleAssociation, - "aws_rds_global_cluster": awsRdsGlobalCluster, - "aws_redshift_authentication_profile": awsRedshiftAuthenticationProfile, - "aws_redshift_cluster": awsRedshiftCluster, - "aws_redshift_cluster_iam_roles": awsRedshiftClusterIamRoles, - "aws_redshift_event_subscription": awsRedshiftEventSubscription, - "aws_redshift_hsm_client_certificate": awsRedshiftHsmClientCertififcate, - "aws_redshift_hsm_configuration": awsRedshiftHsmConfiguration, - "aws_redshift_parameter_group": awsRedshiftParameterGroup, - "aws_redshift_scheduled_action": awsRedshiftScheduledAction, - "aws_redshift_snapshot_copy_grant": awsRedshiftSnapshotCopyGrant, - "aws_redshift_snapshot_schedule": awsRedshiftSnapshotSchedule, - "aws_redshift_snapshot_schedule_association": awsRedshiftSnapshotScheduleAssociation, - "aws_redshift_subnet_group": awsRedshiftSubnetGroup, - "aws_redshift_usage_limit": awsRedshiftUsageLimit, - "aws_resourcegroups_group": awsResourcegroupsGroup, - "aws_route": awsRoute, - "aws_route53_cidr_collection": awsRoute53CidrCollection, - "aws_route53_cidr_location": awsRoute53CidrLocation, - "aws_route53_delegation_set": awsRoute53DelegationSet, - "aws_route53_health_check": awsRoute53HealthCheck, - "aws_route53_hosted_zone_dnssec": awsRoute53HostedZoneDnssec, - "aws_route53_key_signing_key": awsRoute53KeySiginingKey, - "aws_route53_query_log": awsRoute53QueryLog, - "aws_route53_record": awsRoute53Record, - "aws_route53_resolver_config": awsRoute53ResolverConfig, - "aws_route53_resolver_dnssec_config": awsRoute53ResolverDnssecConfig, - "aws_route53_resolver_endpoint": awsRoute53ResolverEndpoint, - "aws_route53_resolver_firewall_config": awsRoute53ResolverFirewallConfig, - "aws_route53_resolver_firewall_domain_list": awsRoute53ResolverFirewallDomainList, - "aws_route53_resolver_firewall_rule": awsRoute53ResolverFirewallRule, - "aws_route53_resolver_firewall_rule_group": awsRoute53ResolverFirewallRuleGroup, - "aws_route53_resolver_firewall_rule_group_association": awsRoute53ResolverFirewallRuleGroupAssociation, - "aws_route53_resolver_query_log_config": awsRoute53ResolverQueryLogConfig, - "aws_route53_resolver_query_log_config_association": awsRoute53ResolverQueryLogConfigAssociation, - "aws_route53_resolver_rule": awsRoute53ResolverRule, - "aws_route53_resolver_rule_association": awsRoute53ResolverRuleAssociation, - "aws_route53_traffic_policy": awsRoute53TrafficPolicy, - "aws_route53_traffic_policy_instance": awsRoute53TrafficPolicyInstance, - "aws_route53_vpc_association_authorization": awsRoute53VpcAssociationAuthorization, - "aws_route53_zone": awsRoute53Zone, - "aws_route53_zone_association": awsRoute53ZoneAssociation, - "aws_route_table": awsRouteTable, - "aws_route_table_association": awsRouteTableAssociation, - "aws_s3_bucket": awsS3Bucket, - "aws_s3_bucket_accelerate_configuration": awsS3BucketAccelerateConfiguration, - "aws_s3_bucket_acl": awsS3BucketACL, - "aws_s3_bucket_cors_configuration": awsS3BucketCorsConfiguration, - "aws_s3_bucket_intelligent_tiering_configuration": awsS3BucketIntelligentTieringConfiguration, - "aws_s3_bucket_inventory": awsS3BucketInventory, - "aws_s3_bucket_lifecycle_configuration": awsS3BucketLifecycleConfiguration, - "aws_s3_bucket_logging": awsS3BucketLogging, - "aws_s3_bucket_metric": awsS3BucketMetric, - "aws_s3_bucket_notification": awsS3BucketNotification, - "aws_s3_bucket_object": awsS3Object, - "aws_s3_bucket_object_lock_configuration": awsS3BucketObjectLockCOnfiguration, - "aws_s3_bucket_ownership_controls": awsS3BucketOwnershipControls, - "aws_s3_bucket_policy": awsS3BucketPolicy, - "aws_s3_bucket_public_access_block": awsS3BucketPublicAccessBlock, - "aws_s3_bucket_replication_configuration": awsS3BucketReplicationConfiguration, - "aws_s3_bucket_request_payment_configuration": awsS3BucketRequestPaymentConfiguration, - "aws_s3_bucket_server_side_encryption_configuration": awsS3BucketServerSideEncryptionConfiguration, - "aws_s3_bucket_versioning": awsS3BucketVersioning, - "aws_s3_bucket_website_configuration": awsS3BucketWebsiteConfiguration, - "aws_s3_object": awsS3Object, - "aws_sagemaker_app": awsSagemakerApp, - "aws_sagemaker_app_image_config": awsSagemakerAppImageConfig, - "aws_sagemaker_code_repository": awsSagemakerCodeRepository, - "aws_sagemaker_data_quality_job_definition": awsSagemakerDataQualityJobDefinition, - "aws_sagemaker_device": awsSagemakerDevice, - "aws_sagemaker_device_fleet": awsSagemakerDeviceFleet, - "aws_sagemaker_domain": awsSagemakerDomain, - "aws_sagemaker_endpoint": awsSagemakerEndpoint, - "aws_sagemaker_endpoint_configuration": awsSagemakerEndpointConfiguration, - "aws_sagemaker_feature_group": awsSagemakerFeatureGroup, - "aws_sagemaker_image": awsSagemakerImage, - "aws_sagemaker_image_version": awsSagemakerImageVersion, - "aws_sagemaker_model": awsSagemakerModel, - "aws_sagemaker_model_package_group": awsSagemakerModelPackageGroup, - "aws_sagemaker_model_package_group_policy": awsSagemakerModelPackageGroupPolicy, - "aws_sagemaker_monitoring_schedule": awsSagemakerMonitoringSchedule, - "aws_sagemaker_notebook_instance": awsSagemakerNotebookInstance, - "aws_sagemaker_notebook_instance_lifecycle_configuration": awsSagemakerNotebookInstanceLifecycleConfiguration, - "aws_sagemaker_pipeline": awsSagemakerPipeline, - "aws_sagemaker_project": awsSagemakerProject, - "aws_sagemaker_servicecatalog_portfolio_status": awsSagemakerServicecatalogPortfolioStatus, - "aws_sagemaker_space": awsSagemakerSpace, - "aws_sagemaker_studio_lifecycle_config": awsSagemakerStudioLifecycleConfig, - "aws_sagemaker_user_profile": awsSagemakerUserProfile, - "aws_sagemaker_workforce": awsSagemakerWorkforce, - "aws_sagemaker_workteam": awsSagemakerWorkteam, - "aws_schemas_discoverer": awsSchemasDiscoverer, - "aws_schemas_registry": awsSchemasRegistry, - "aws_schemas_registry_policy": awsSchemasRegistryPolicy, - "aws_schemas_schema": awsSchemasSchema, - "aws_secretsmanager_secret": awsSecretsmanagerSecret, - "aws_secretsmanager_secret_policy": awsSecretsmanagerSecretPolicy, - "aws_secretsmanager_secret_rotation": awsSecretsmanagerSecretRotation, - "aws_secretsmanager_secret_version": awsSecretsmanagerSecretVersion, - "aws_security_group": awsSecurityGroup, - "aws_security_group_rule": awsSecurityGroupRule, - "aws_servicecatalog_budget_resource_association": awsServicecatalogBudgetResourceAssociation, - "aws_servicecatalog_constraint": awsServicecatalogConstraint, - "aws_servicecatalog_organizations_access": awsServicecatalogOrganizationAccess, - "aws_servicecatalog_portfolio": awsServicecatalogPortfolio, - "aws_servicecatalog_portfolio_share": awsServicecatalogPortfolioShare, - "aws_servicecatalog_principal_portfolio_association": awsServicecatalogPrincipalPortfolioAssociation, - "aws_servicecatalog_product": awsServicecatalogProduct, - "aws_servicecatalog_product_portfolio_association": awsServicecatalogProductPortfolioAssociation, - "aws_servicecatalog_provisioned_product": awsServicecatalogProvisionedProduct, - "aws_servicecatalog_service_action": awsServicecatalogServiceAction, - "aws_servicecatalog_tag_option": awsServicecatalogTagOption, - "aws_servicecatalog_tag_option_resource_association": awsServicecatalogTagOptionResourceAssociation, - "aws_servicequotas_service_quota": awsServicequotasServiceQuota, - "aws_servicequotas_template": awsServiceQuotasTemplate, - "aws_servicequotas_template_association": awsServiceQuotasTemplateAssociation, - "aws_ses_active_receipt_rule_set": awsSesActiveReceiptRuleSet, - "aws_ses_configuration_set": awsSesConfigurationSet, - "aws_ses_domain_dkim": awsSesDomainDkim, - "aws_ses_domain_identity": awsSesDomainIdentity, - "aws_ses_domain_identity_verification": awsSesDomainIdentityVerification, - "aws_ses_domain_mail_from": awsSesDomainMailFrom, - "aws_ses_email_identity": awsSesEmailIdentity, - "aws_ses_event_destination": awsSesEventDestination, - "aws_ses_identity_notification_topic": awsSesIdentityNotificationTopic, - "aws_ses_identity_policy": awsSesIdentityPolicy, - "aws_ses_receipt_filter": awsSesReceiptFilter, - "aws_ses_receipt_rule": awsSesReceiptRule, - "aws_ses_receipt_rule_set": awsSesReceiptRuleSet, - "aws_ses_template": awsSesTemplate, - "aws_sfn_activity": awsSfnActivity, - "aws_sfn_alias": awsSfnAlias, - "aws_sfn_state_machine": awsSfnStateMachine, - "aws_signer_signing_job": awsSignerSigningJob, - "aws_signer_signing_profile": awsSignerSigningProfile, - "aws_signer_signing_profile_permission": awsSignerSigningProfilePermission, - "aws_simpledb_domain": awsSimpledbDomain, - "aws_snapshot_create_volume_permission": awsSnapshotCreateVolumePermission, - "aws_sns_platform_application": awsSnsPlatformApplication, - "aws_sns_sms_preferences": awsSnsSmsPreferences, - "aws_sns_topic": awsSnsTopic, - "aws_sns_topic_data_protection_policy": awsSnsTopicDataProtection, - "aws_sns_topic_policy": awsSnsTopicPolicy, - "aws_sns_topic_subscription": awsSnsTopicSubscription, - "aws_spot_fleet_request": awsSpotFleetRequest, - "aws_spot_instance_request": awsSpotInstanceRequest, - "aws_sqs_queue": awsSqsQueue, - "aws_sqs_queue_policy": awsSqsQueuePolicy, - "aws_sqs_queue_redrive_allow_policy": awsSqsQueueRedriveAllowPolicy, - "aws_sqs_queue_redrive_policy": awsSqsQueueRedrivePolicy, - "aws_ssm_document": awsSsmDocument, - "aws_ssm_maintenance_window": awsSsmMaintenanceWindow, - "aws_ssm_maintenance_window_target": awsSsmMaintenanceWindowTarget, - "aws_ssm_maintenance_window_task": awsSsmMaintenanceWindowTask, - "aws_ssm_parameter": awsSsmParameter, - "aws_ssm_patch_baseline": awsSsmPatchBaseline, - "aws_ssm_patch_group": awsSsmPatchGroup, - "aws_ssmcontacts_contact": awsSsmcontactsContact, - "aws_ssmcontacts_contact_channel": awsSsmcontactContactChannel, - "aws_ssmcontacts_plan": awsSsmcontactsPlan, - "aws_ssmincidents_replication_set": awsSsmincidentsReplicationSet, - "aws_storagegateway_cache": awsStoragegatewayCache, - "aws_storagegateway_cached_iscsi_volume": awsStoragegatewayCachedIscsiVolume, - "aws_storagegateway_file_system_association": awsStoragegatewayFileSystemAssociation, - "aws_storagegateway_gateway": awsStoragegatewayGateway, - "aws_storagegateway_nfs_file_share": awsStoragegatewayNfsFileShare, - "aws_storagegateway_smb_file_share": awsStoragegatewaySmbFileShare, - "aws_storagegateway_stored_iscsi_volume": awsStoragegatewayStoredIscsiVolume, - "aws_storagegateway_tape_pool": awsStoragegatewayTapePool, - "aws_storagegateway_upload_buffer": awsStoragegatewayUploadBuffer, - "aws_storagegateway_working_storage": awsStoragegatewayWorkingStorage, - "aws_subnet": awsSubnet, - "aws_swf_domain": awsSwfDomain, - "aws_synthetics_canary": awsSyntheticsCanary, - "aws_synthetics_group": awsSyntheticsGroup, - "aws_synthetics_group_association": awsSyntheticsGroupAssociation, - "aws_timestreamwrite_database": awsTimestreamwriteDatabase, - "aws_timestreamwrite_table": awsTimestreamwriteTable, - "aws_transcribe_language_model": awsTranscribeLanguageModel, - "aws_transcribe_medical_vocabulary": awsTranscribeMedicalVocabulary, - "aws_transcribe_vocabulary": awsTranscribeVocabulary, - "aws_transcribe_vocabulary_filter": awsTranscribeVocabularyFilter, - "aws_verifiedaccess_endpoint": awsVerifiedaccessEndpoint, - "aws_verifiedaccess_group": awsVerifiedaccessGroup, - "aws_verifiedaccess_instance": awsVerifiedaccessInstance, - "aws_verifiedaccess_instance_logging_configuration": awsVerifiedaccessInstanceLoggingConfiguration, - "aws_verifiedaccess_trust_provider": awsVerifiedaccessTrustProvider, - "aws_volume_attachment": awsVolumeAttachment, - "aws_vpc": awsVpc, - "aws_vpc_dhcp_options": awsVpcDhcpOptions, - "aws_vpc_dhcp_options_association": awsVpcDhcpOptionsAssociation, - "aws_vpc_endpoint": awsVpcEndpoint, - "aws_vpc_endpoint_connection_notification": awsVpcEndpointConnectionNotification, - "aws_vpc_endpoint_route_table_association": awsVpcEndpointRouteTableAssociation, - "aws_vpc_endpoint_service": awsVpcEndpointService, - "aws_vpc_endpoint_subnet_association": awsVpcEndpointSubnetAssociation, - "aws_vpc_ipam": awsVpcIpam, - "aws_vpc_ipam_pool": awsVpcIpamPool, - "aws_vpc_ipam_pool_cidr": awsVpcIpamPoolCidr, - "aws_vpc_ipam_pool_cidr_allocation": awsVpcIpamPoolCidrAllocation, - "aws_vpc_ipam_preview_next_cidr": awsVpcIpamPreviewNextCidr, - "aws_vpc_ipam_resource_discovery": awsVpcIpamResourceDiscovery, - "aws_vpc_ipam_resource_discovery_association": awsVpcIpamResourceDiscoveryAssociation, - "aws_vpc_ipam_scope": awsVpcIpamScope, - "aws_vpc_ipv4_cidr_block_association": awsVpcIpv4CidrBlockAssociation, - "aws_vpc_peering_connection": awsVpcPeeringConnection, - "aws_vpc_peering_connection_accepter": awsVpcPeeringConnectionAccepter, - "aws_vpc_peering_connection_options": awsVpcPeeringConnectionOptions, - "aws_vpc_security_group_egress_rule": awsVpcSecurityGroupEgressRule, - "aws_vpc_security_group_ingress_rule": awsVpcSecurityGroupIngressRule, - "aws_vpclattice_access_log_subscription": awsVpclatticeAccesLogSubscription, - "aws_vpclattice_auth_policy": awsVpclatticeAuthPolicy, - "aws_vpclattice_listener": awsVpclatticeListener, - "aws_vpclattice_listener_rule": awsVpclatticeListernerRule, - "aws_vpclattice_resource_policy": awsVpclatticeResourcePolicy, - "aws_vpclattice_service": awsVpclatticeService, - "aws_vpclattice_service_network": awsVpclatticeServiceNetwork, - "aws_vpclattice_service_network_service_association": awsVpclatticeServiceNetworkServiceAssocation, - "aws_vpclattice_service_network_vpc_association": awsVpclatticeServiceNetworkVpcAssociation, - "aws_vpclattice_target_group": awsVpclatticeTargetGroup, - "aws_vpclattice_target_group_attachment": awsVpclatticeTargetGroupAssociation, - "aws_vpn_connection": awsVpnConnection, - "aws_vpn_connection_route": awsVpnConnectionRoute, - "aws_vpn_gateway": awsVpnGateway, - "aws_vpn_gateway_attachment": awsVpnGatewayAttachment, - "aws_vpn_gateway_route_propagation": awsVpnGatewayRoutePropagation, - "aws_waf_byte_match_set": awsWafByteMatchSet, - "aws_waf_geo_match_set": awsWafGeoMatchSet, - "aws_waf_ipset": awsWafIpset, - "aws_waf_rate_based_rule": awsWafRateBasedRule, - "aws_waf_regex_match_set": awsWafRegexMatchSet, - "aws_waf_regex_pattern_set": awsWafRegexPatternSet, - "aws_waf_rule": awsWafRule, - "aws_waf_rule_group": awsWafRuleGroup, - "aws_waf_size_constraint_set": awsWafSizeConstraintSet, - "aws_waf_sql_injection_match_set": awsWafSQLInjectionMatchSet, - "aws_waf_web_acl": awsWafWebACL, - "aws_waf_xss_match_set": awsWafXSSNatchSet, - "aws_wafregional_byte_match_set": awsWafregionalByteMatchSet, - "aws_wafregional_geo_match_set": awsWafregionalGeoMatchSet, - "aws_wafregional_ipset": awsWafregionalIpset, - "aws_wafregional_rate_based_rule": awsWafregionalRateBasedRule, - "aws_wafregional_regex_match_set": awsWafregionalRegexMatchSet, - "aws_wafregional_regex_pattern_set": awsWafregionalRegexPatternSet, - "aws_wafregional_rule": awsWafregionalRule, - "aws_wafregional_rule_group": awsWafregionalRuleGroup, - "aws_wafregional_size_constraint_set": awsWafregionalSizeConstraintSet, - "aws_wafregional_sql_injection_match_set": awsWafregionalSQLInjectionMatchSet, - "aws_wafregional_web_acl": awsWafregionalWebACL, - "aws_wafregional_xss_match_set": awsWafregionalXSSNatchSet, - "aws_wafv2_ip_set": awsWafv2IpSet, - "aws_wafv2_regex_pattern_set": awsWafv2RegexPatternSet, - "aws_wafv2_rule_group": awsWafv2RuleGroup, - "aws_wafv2_web_acl": awsWafv2WebACL, - "aws_wafv2_web_acl_association": awsWafv2WebACLAssociation, - "aws_wafv2_web_acl_logging_configuration": awsWafv2WebACLLoggingConfiguration, - "aws_workspaces_connection_alias": awsWorkspacesConnectionAlias, - "aws_workspaces_directory": awsWorkspacesDirectory, - "aws_workspaces_ip_group": awsWorkspacesIPGroup, - "aws_workspaces_workspace": awsWorkspacesWorkspace, - "aws_xray_encryption_config": awsXrayEncryptionConfig, - "aws_xray_group": awsXrayGroup, - "aws_xray_sampling_rule": awsXraySamplingRule, - "backend": s3backend, - "aws_osis_pipeline": awsOsisPipeline, - "aws_paymentcryptography_key": awsPaymentcrytopgraphyKey, - "aws_paymentcryptography_key_alias": awsPaymentcrytopgraphyKeyAlias, - "aws_pipes_pipe": awsPipesPipe, - "aws_qldb_stream": awsQldbStream, - "aws_quicksight_analysis": awsQuicksightAnalysis, - "aws_quicksight_dashboard": awsQuicksightDashboard, - "aws_quicksight_data_set": awsQuicksightDataSet, - "aws_quicksight_data_source": awsQuicksightDataSource, - "aws_quicksight_refresh_schedule": awsQuicksightRefreshSchedule, - "aws_quicksight_template": awsQuicksightTemplate, - "aws_quicksight_theme": awsQuicksightTheme, - "aws_rds_integration": awsRdsIntegration, - "aws_redshift_endpoint_access": awsRedshiftEndpointAccess, - "aws_redshift_endpoint_authorization": awsRedshiftEndpointAuthorization, - "aws_redshiftserverless_namespace": awsRedshiftserverlessNamespace, - "aws_redshiftserverless_workgroup": awsRedshiftserverlessWorkgroup, - "aws_rekognition_collection": awsRekognitionCollection, - "aws_rekognition_project": awsRekognitionProject, - "aws_rekognition_stream_processor": awsRekognitionStreamProcessor, - "aws_resourceexplorer2_index": awsResourceexplorer2Index, - "aws_resourceexplorer2_view": awsResourceexplorer2View, - "aws_rolesanywhere_profile": awsRolesanywhereProfile, - "aws_rolesanywhere_trust_anchor": awsRolesanywhereTrustAnchor, - "aws_route53recoverycontrolconfig_cluster": awsRoute53recoverycontrolconfigCluster, - "aws_route53recoverycontrolconfig_control_panel": awsRoute53recoverycontrolconfigControlPanel, - "aws_route53recoverycontrolconfig_routing_control": awsRoute53recoverycontrolconfigRoutingControl, - "aws_route53recoverycontrolconfig_safety_rule": awsRoute53recoverycontrolconfigSafetyRule, - "aws_route53recoveryreadiness_cell": awsRoute53recoveryreadinessCell, - "aws_route53recoveryreadiness_readiness_check": awsRoute53recoveryreadinessReadinessCheck, - "aws_route53recoveryreadiness_recovery_group": awsRoute53recoveryreadinessRecoveryGroup, - "aws_route53recoveryreadiness_resource_set": awsRoute53recoveryreadinessResourceSet, - "aws_rum_app_monitor": awsRumAppMonitor, - "aws_s3_access_point": awsS3AccessPoint, - "aws_s3control_access_grant": awsS3controlAccessGrant, - "aws_s3control_access_grants_instance": awsS3controlAccessGrantInstance, - "aws_s3control_access_grants_location": awsS3controlAccessGrantLocation, - "aws_s3control_multi_region_access_point": awscontrolMultiRegionAccessPoint, - "aws_s3control_multi_region_access_point_policy": awscontrolMultiRegionAccessPointPolicy, - "aws_s3outposts_endpoint": awsS3outpostsEndpoint, - "aws_scheduler_schedule": awsSchedulerSchedule, - "aws_scheduler_schedule_group": awsSchedulerScheduleGroup, - "aws_securityhub_automation_rule": awsSecurityhubAutomationRule, - "aws_securityhub_configuration_policy": awsSecurityhubConfigurationPolicy, - "aws_securityhub_finding_aggregator": awsSecurityhubFindingAggregator, - "aws_ssoadmin_permission_set": awsSsoadminPermissionSet, - "aws_timestreaminfluxdb_db_instance": awsTimestreamhubFindingAggregator, - "aws_securityhub_insight": awsSecurityhubInsight, - "aws_securityhub_organization_configuration": awsSecurityhubOrganizationConfiguration, - "aws_securityhub_product_subscription": awsSecurityhubProductSubscription, - "aws_securityhub_standards_control": awsSecurityhubStandardsControl, - "aws_securitylake_aws_log_source": awsSecuritylakeAwsLogSource, - "aws_securitylake_data_lake": awsSecuritylakeDataLake, - "aws_securitylake_subscriber": awsSecuritylakeSubscriber, - "aws_securitylake_subscriber_notification": awsSecuritylakeSubscriberNotification, - "aws_servicecatalogappregistry_application": awsServicecatalogappregistryApplication, - "aws_shield_proactive_engagement": awsShieldProactiveEngagement, - "aws_shield_protection": awsShieldProtection, - "aws_shield_protection_group": awsShieldProtectionGroup, - "aws_ssm_association": awsSsmAssociation, - "aws_ssm_resource_data_sync": awsSsmResourceDataSync, - "aws_ssmcontacts_rotation": awsSsmcontactsRotation, - "aws_ssmincidents_response_plan": awsSsmincidentsResponsePlan, - "aws_ssoadmin_application": awsSsoadminApplication, - "aws_ssoadmin_application_assignment": awsSsoadminApplicationAssignment, - "aws_transfer_agreement": awsTransferAgreement, - "aws_transfer_certificate": awsTransferCertificate, - "aws_transfer_connector": awsTransferConnector, - "aws_transfer_profile": awsTransferProfile, - "aws_transfer_workflow": awsTransferWorkflow, - "aws_verifiedpermissions_identity_source": awsVerifiedpermissionsIdentitySource, - "aws_verifiedpermissions_policy": awsVerifiedpermissionsPolicy, - "aws_verifiedpermissions_policy_store": awsVerifiedpermissionsPolicyStore, - "aws_verifiedpermissions_policy_template": awsVerifiedpermissionsPolicyTemplate, - "aws_ebs_snapshot_block_public_access": awsEbsSnapshotBlockPublicAccess, - "aws_ec2_image_block_public_access": awsEc2ImageBlockPublicAccess, - "aws_ec2_serial_console_access": awsEc2SerialConsoleAccess, - "aws_emr_block_public_access_configuration": awsEmrBlockPublicAccessConfiguration, - "aws_s3_account_public_access_block": awsS3AccountPublicAccessBlock, - "aws_s3control_access_point_policy": awsS3controlAccessPointPolicy, - "aws_iam_group_policies_exclusive": awsIamGroupPoliciesExclusive, - "aws_iam_role_policies_exclusive": awsIamRolePoliciesExclusive, - "aws_iam_user_policies_exclusive": awsIamUserPoliciesExclusive, - "aws_m2_application": awsM2Application, - "aws_m2_deployment": awsM2Deployment, - "aws_m2_environment": awsM2Environment, - "aws_memorydb_user": awsMemorydbUser, - "aws_sagemaker_human_task_ui": awsSagemakerHumanTaskUI, - "aws_cloudfrontkeyvaluestore_key": awsCloudfrontkeyvaluestoreKey, - "aws_ecs_tag": awsEcsTag, - "aws_lb_trust_store": awsLbTrustStore, - "aws_lb_trust_store_revocation": awsLbTrustStoreRevocation, - "aws_quicksight_folder": awsQuicksightFolder, - "aws_quicksight_group": awsQuicksightGroup, - "aws_quicksight_group_membership": awsQuicksightGroupMembership, - "aws_quicksight_namespace": awsQuicksightNamespace, - "aws_quicksight_user": awsQuicksightUser, - "aws_datazone_asset_type": awsDatazoneAssetType, - "aws_datazone_environment": awsDatazoneEnvironment, - "aws_datazone_environment_profile": awsDatazoneEnvironmentProfile, - "aws_datazone_form_type": awsDatazoneFormType, - "aws_datazone_glossary": awsDatazoneGlossary, - "aws_datazone_glossary_term": awsDatazoneGlossaryTerm, - "aws_datazone_user_profile": awsDatazoneUserProfile, - "aws_quicksight_account_subscription": awsQuicksightAccountSubscription, - "aws_quicksight_folder_membership": awsQuicksightFolderMembership, - "aws_quicksight_iam_policy_assignment": awsQuicksightIamPolicyAssignment, - "aws_quicksight_ingestion": awsQuicksightIngestion, - "aws_quicksight_template_alias": awsQuicksightTemplateAlias, - "aws_quicksight_vpc_connection": awsQuicksightVpcConnection, - "aws_s3_bucket_analytics_configuration": awsS3BucketAnalyticsConfiguration, - "aws_backup_logically_air_gapped_vault": awsBackupLogicallyAirGappedVault, - "aws_kinesis_resource_policy": awsKinesisResourcePolicy, - } -) +var tFLookup = map[string]interface{}{ //nolint:gochecknoglobals + "aws_accessanalyzer_analyzer": awsAccessAnalyzer, + "aws_accessanalyzer_archive_rule": awsAccessAnalyzerArchiveRule, + "aws_account_alternate_contact": awsAccountAlternativeContact, + "aws_account_primary_contact": awsAccountPrimaryContact, + "aws_account_region": awsAccountRegion, + "aws_acm_certificate": AWSAcmCertificate, + "aws_acm_certificate_validation": placeholder, + "aws_acmpca_certificate": awsAcmpcaCertificate, + "aws_acmpca_certificate_authority": awsAcmpcaCertificateAuthority, + "aws_acmpca_certificate_authority_certificate": awsAcmpcaCertificateAuthorityCertificate, + "aws_acmpca_permission": awsAcmpcaPermission, + "aws_acmpca_policy": awsAcmpcaPolicy, + "aws_alb": awsLb, + "aws_alb_listener": awsLbListener, + "aws_alb_target_group": awsLbTargetGroup, + "aws_alb_target_group_attachment": awsLbTargetGroupAttachment, + "aws_ami": awsAmi, + "aws_ami_copy": awsAmiCopy, + "aws_ami_from_instance": awsAmiFromInstance, + "aws_ami_launch_permission": awsAmiLauchPermission, + "aws_amplify_app": awsAmplifyApp, + "aws_amplify_backend_environment": awsAmplifyBackendEnvironment, + "aws_amplify_branch": awsAmplifyBranch, + "aws_amplify_domain_association": awsAmplifyDomainAssociation, + "aws_amplify_webhook": awsAmplifyWebhook, + "aws_api_gateway_account": awsAPIGatewayAccount, + "aws_api_gateway_api_key": awsApigatewayv2Api, + "aws_api_gateway_authorizer": awsApigatewayv2Api, + "aws_api_gateway_base_path_mapping": awsApigatewayv2Api, + "aws_api_gateway_client_certificate": awsAPIGatewayRestAPI, + "aws_api_gateway_deployment": awsApigatewayv2Api, + "aws_api_gateway_documentation_part": awsApigatewayv2Api, + "aws_api_gateway_documentation_version": awsApigatewayv2Api, + "aws_api_gateway_domain_name": awsApigatewayv2Api, + "aws_api_gateway_domain_name_access_association": awsAPIGatewayDomainNameAccessAssociation, + "aws_api_gateway_gateway_response": awsApigatewayv2Api, + "aws_api_gateway_integration": awsApigatewayv2Api, + "aws_api_gateway_integration_response": awsApigatewayv2Api, + "aws_api_gateway_method": awsApigatewayv2Api, + "aws_api_gateway_method_response": awsApigatewayv2Api, + "aws_api_gateway_method_settings": awsApigatewayv2Api, + "aws_api_gateway_model": awsApigatewayv2Api, + "aws_api_gateway_request_validator": awsAPIGatewayRestAPI, + "aws_api_gateway_resource": awsApigatewayv2Api, + "aws_api_gateway_rest_api": awsAPIGatewayRestAPI, + "aws_api_gateway_rest_api_put": awsAPIGatewayRestAPI, + "aws_api_gateway_rest_api_policy": awsApigatewayv2Api, + "aws_api_gateway_stage": awsApigatewayv2Api, + "aws_api_gateway_usage_plan": awsApigatewayv2Api, + "aws_api_gateway_usage_plan_key": awsApigatewayv2Api, + "aws_api_gateway_vpc_link": awsApigatewayv2Api, + "aws_apigatewayv2_api": awsApigatewayv2Api, + "aws_apigatewayv2_api_mapping": awsApigatewayv2Api, + "aws_apigatewayv2_authorizer": awsApigatewayv2Api, + "aws_apigatewayv2_deployment": awsApigatewayv2Api, + "aws_apigatewayv2_domain_name": awsApigatewayv2Api, + "aws_apigatewayv2_integration": awsApigatewayv2Api, + "aws_apigatewayv2_integration_response": awsApigatewayv2Api, + "aws_apigatewayv2_model": awsApigatewayv2Api, + "aws_apigatewayv2_route": awsApigatewayv2Api, + "aws_apigatewayv2_route_response": awsApigatewayv2Api, + "aws_apigatewayv2_stage": awsApigatewayv2Api, + "aws_apigatewayv2_vpc_link": awsApigatewayv2Api, + "aws_app_cookie_stickiness_policy": awsAppCookieStickinessPolicy, + "aws_appautoscaling_policy": awsAppautoscalingPolicy, + "aws_appautoscaling_scheduled_action": awsAppautoscalingScheduledAction, + "aws_appautoscaling_target": awsAppautoscalingTarget, + "aws_appconfig_application": awsAppconfigApplication, + "aws_appconfig_configuration_profile": awsAppconfigConfigurationProfile, + "aws_appconfig_deployment": awsAppconfigDeployment, + "aws_appconfig_deployment_strategy": awsAppconfigDeploymentStrategy, + "aws_appconfig_environment": awsAppconfigEnvironment, + "aws_appconfig_extension": awsAppconfigExtension, + "aws_appconfig_extension_association": awsAppconfigExtensionAssociation, + "aws_appconfig_hosted_configuration_version": awsAppconfigHostedConfigurationVersion, + "aws_appfabric_app_authorization": awsAppfabricAppAuthorization, + "aws_appfabric_app_authorization_connection": awsAppfabricAppAuthorizationConnection, + "aws_appfabric_app_bundle": awsAppfabricAppBundle, + "aws_appfabric_ingestion": awsAppfabricIngestion, + "aws_appfabric_ingestion_destination": awsAppfabricIngestionDestination, + "aws_appflow_connector_profile": awsAppflowConnectorProfile, + "aws_appflow_flow": awsAppflowFlow, + "aws_appintegrations_data_integration": awsAppintegrationsDataIntegration, + "aws_appintegrations_event_integration": awsAppintegrationsEventIntegration, + "aws_applicationinsights_application": awsApplicationinsightsApplication, + "aws_appmesh_gateway_route": awsAppmeshGatewayRoute, + "aws_appmesh_mesh": awsAppmeshMesh, + "aws_appmesh_route": awsAppmeshRoute, + "aws_appmesh_virtual_gateway": awsAppmeshVirtualGateway, + "aws_appmesh_virtual_node": awsAppmeshVirtualNode, + "aws_appmesh_virtual_router": awsAppmeshVirtualRouter, + "aws_appmesh_virtual_service": awsAppmeshVirtualService, + "aws_apprunner_auto_scaling_configuration_version": awsApprunnerAutoScalingConfigurationVersion, + "aws_apprunner_connection": awsApprunnerConnection, + "aws_apprunner_custom_domain_association": awsApprunnerCustomDomainAssociation, + "aws_apprunner_default_auto_scaling_configuration_version": awsApprunnerDefaultAutoScalingConfigurationVersion, //nolint:lll + "aws_apprunner_deployment": awsApprunnerDeployment, + "aws_apprunner_observability_configuration": awsApprunnerObservabilityConfiguration, + "aws_apprunner_service": awsApprunnerService, + "aws_apprunner_vpc_connector": awsApprunnerVpcConnector, + "aws_apprunner_vpc_ingress_connection": awsApprunnerVpcIngressConnection, + "aws_appstream_directory_config": awsAppstreamDirectoryConfig, + "aws_appstream_fleet": awsAppstreamFleet, + "aws_appstream_fleet_stack_association": awsAppstreamFleetStackAssociation, + "aws_appstream_image_builder": awsAppstreamImageBuilder, + "aws_appstream_stack": awsAppstreamStack, + "aws_appstream_user": awsAppstreamUser, + "aws_appstream_user_stack_association": awsAppstreamUserStackAssociation, + "aws_appsync_api_cache": awsAppsyncAPICache, + "aws_appsync_api_key": awsAppsyncAPIKey, + "aws_appsync_datasource": awsAppsyncDatasource, + "aws_appsync_domain_name": awsAppsyncDomainName, + "aws_appsync_domain_name_api_association": awsAppsyncDomainNameAPIAssociation, + "aws_appsync_function": awsAppsyncFunction, + "aws_appsync_graphql_api": awsAppsyncGraphAPI, + "aws_appsync_resolver": awsAppsyncResolver, + "aws_appsync_source_api_association": awsAppsyncSourceAPIAssociation, + "aws_appsync_type": awsAppsyncType, + "aws_athena_data_catalog": awsAthenaDataCatalog, + "aws_athena_database": awsAthenaDatabase, + "aws_athena_named_query": awsAthenaNamedQuery, + "aws_athena_prepared_statement": awsAthenaPreparedStatement, + "aws_athena_workgroup": awsAthenaWorkgroup, + "aws_auditmanager_account_registration": awsAuditmanagerAccountRegistration, + "aws_auditmanager_assessment": awsAuditmanagerAssessment, + "aws_auditmanager_assessment_delegation": awsAuditmanagerAssessmentDelegation, + "aws_auditmanager_assessment_report": awsAuditmanagerAssessmentReport, + "aws_auditmanager_control": awsAuditmanagerControl, + "aws_auditmanager_framework": awsAuditmanagerFramework, + "aws_auditmanager_framework_share": awsAuditmanagerFrameworkShare, + "aws_auditmanager_organization_admin_account_registration": awsAuditmanagerOrganizationAdminAccountRegistration, //nolint:lll + "aws_autoscaling_attachment": awsAutoscalingAttachment, + "aws_autoscaling_group": awsAutoscalingGroup, + "aws_autoscaling_group_tag": awsAutoscalingGroupTag, + "aws_autoscaling_lifecycle_hook": awsAutoscalingLifecycleHook, + "aws_autoscaling_notification": awsAutoscalingNotification, + "aws_autoscaling_policy": awsAutoscalingPolicy, + "aws_autoscaling_schedule": awsAutoscalingSchedule, + "aws_autoscaling_traffic_source_attachment": awsAutoscalingTrafficSourceAttachment, + "aws_autoscalingplans_scaling_plan": awsAutoscalingplansScalingPlan, + "aws_backup_framework": awsBackupFramework, + "aws_backup_global_settings": awsBackupGlobalSettings, + "aws_backup_logically_air_gapped_vault": awsBackupLogicallyAirGappedVault, + "aws_backup_plan": awsBackupPlan, + "aws_backup_region_settings": awsBackupRegionSettings, + "aws_backup_report_plan": awsBackupReportPlan, + "aws_backup_selection": awsBackupSelection, + "aws_backup_vault": awsBackupVault, + "aws_backup_vault_lock_configuration": awsBackupVaultLockConfiguration, + "aws_backup_vault_notifications": awsBackupVaultNotification, + "aws_backup_vault_policy": awsBackupVaultPolicy, + "aws_batch_compute_environment": awsBatchComputeEnvironment, + "aws_batch_job_definition": awsBatchJobDefinition, + "aws_batch_job_queue": awsBatchJobQueue, + "aws_batch_scheduling_policy": awsBatchSchedulingPolicy, + "aws_bcmdataexports_export": awsBcmdataexportsExport, + "aws_bedrock_custom_model": awsBedrockCustomModel, + "aws_bedrock_guardrail": awsBedrockGuardrail, + "aws_bedrock_guardrail_version": awsBedrockGuardrailVersion, + "aws_bedrock_inference_profile": awsBedrockInferenceProfile, + "aws_bedrock_model_invocation_logging_configuration": awsBedrockModelInvocationLoggingConfiguration, + "aws_bedrock_provisioned_model_throughput": awsBedrockProvisionedModelThroughput, + "aws_bedrockagent_agent": awsBedrockagentAgent, + "aws_bedrockagent_agent_action_group": awsBedrockagentActionGroup, + "aws_bedrockagent_agent_alias": awsBedrockagentAgentAlias, + "aws_bedrockagent_agent_collaborator": awsBedrockagentAgentCollaborator, + "aws_bedrockagent_agent_knowledge_base_association": awsBedrockagentKnowledgeBaseAssociation, + "aws_bedrockagent_data_source": awsBedrockagentDatasource, + "aws_bedrockagent_knowledge_base": awsBedrockagentKnowledgeBase, + "aws_budgets_budget": awsBudgetsBudget, + "aws_budgets_budget_action": awsBudgetsBudgetAction, + "aws_ce_anomaly_monitor": awsCeAnomalyMonitor, + "aws_ce_anomaly_subscription": awsCeAnomalySubscription, + "aws_ce_cost_allocation_tag": awsCeCostAllocationTag, + "aws_ce_cost_category": awsCeCostCategory, + "aws_chatbot_slack_channel_configuration": awsChatbotSlackChannelConfiguration, + "aws_chatbot_teams_channel_configuration": awsChatbotTeamsChannelConfiguration, + "aws_chime_voice_connector": awsChimeVoiceConnector, + "aws_chime_voice_connector_group": awsChimeVoiceConnectorGroup, + "aws_chime_voice_connector_logging": awsChimeVoiceConnectorLogging, + "aws_chime_voice_connector_origination": awsChimeVoiceConnectorOrigination, + "aws_chime_voice_connector_streaming": awsChimeVoiceConnectorStreaming, + "aws_chime_voice_connector_termination": awsChimeVoiceConnectorTermination, + "aws_chime_voice_connector_termination_credentials": awsChimeVoiceConnectorTerminationCredentials, + "aws_chimesdkmediapipelines_media_insights_pipeline_configuration": awsChimesdkmediapipelinesMediaInsightsPipelineConfiguration, + "aws_chimesdkvoice_global_settings": awsChimesdkvoiceGlobalSettings, + "aws_chimesdkvoice_sip_media_application": awsChimesdkvoiceSIPMediaApplication, + "aws_chimesdkvoice_sip_rule": awsChimesdkvoiceSIPRule, + "aws_chimesdkvoice_voice_profile_domain": awsChimesdkvoiceVoiceProfileDomain, + "aws_cleanrooms_collaboration": awsCleanroomsCollaboration, + "aws_cleanrooms_configured_table": awsCleanroomsConfiguredTable, + "aws_cleanrooms_membership": awsCleanroomsMembership, + "aws_cloud9_environment_ec2": awsCloud9EnvironmentEc2, + "aws_cloud9_environment_membership": awsCloud9EnvironmentMembership, + "aws_cloudcontrolapi_resource": awsCloudcontrolapiResource, + "aws_cloudformation_stack": awsCloudformationStack, + "aws_cloudformation_stack_instances": awsCloudformationStackInstances, + "aws_cloudformation_stack_set": awsCloudFormationStackSet, + "aws_cloudformation_stack_set_instance": awsCloudFormationStackSetInstance, + "aws_cloudformation_type": awsCloudformationType, + "aws_cloudfront_cache_policy": awsCloudfrontCachePolicy, + "aws_cloudfront_continuous_deployment_policy": awsCloudfrontContinuousDeploymentPolicy, + "aws_cloudfront_distribution": awsCloudfrontDistribution, + "aws_cloudfront_field_level_encryption_config": awsCloudfrontFieldLevelEncryptionConfig, + "aws_cloudfront_field_level_encryption_profile": awsCloudfrontFieldLevelEncryptionProfile, + "aws_cloudfront_function": awsCloudfrontFunction, + "aws_cloudfront_key_group": awsCloudfrontKeyGroup, + "aws_cloudfront_key_value_store": awsCloudfrontKeyValueStore, + "aws_cloudfront_monitoring_subscription": awsCloudfrontMonitoringSubscription, + "aws_cloudfront_origin_access_control": awsCloudfrontOriginAccessControl, + "aws_cloudfront_origin_access_identity": awsCloudfrontOriginAccessIdentity, + "aws_cloudfront_origin_request_policy": awsCloudfrontOriginRequestPolicy, + "aws_cloudfront_public_key": awsCloudfrontPublicKey, + "aws_cloudfront_realtime_log_config": awsCloudfrontRealtimeLogConfig, + "aws_cloudfront_response_headers_policy": awsCloudfrontResponseHeadersPolicy, + "aws_cloudfront_vpc_origin": awsCloudfrontVpcOrigin, + "aws_cloudfrontkeyvaluestore_key": awsCloudfrontkeyvaluestoreKey, + "aws_cloudhsm_v2_cluster": awsCloudhsmV2Vluster, + "aws_cloudhsm_v2_hsm": awsCloudhsmV2Hsm, + "aws_cloudsearch_domain": awsCloudsearchDomain, + "aws_cloudsearch_domain_service_access_policy": awsCloudsearchDomainServiceAccessPolicy, + "aws_cloudtrail": awsCloudtrail, + "aws_cloudtrail_event_data_store": awsCloudtrailEventDataStore, + "aws_cloudtrail_organization_delegated_admin_account": awsCloudtrailOrganizationDelegatedAdminAccount, + "aws_cloudwatch_composite_alarm": awsCloudwatchCompositeAlarm, + "aws_cloudwatch_dashboard": awsCloudwatchDashboard, + "aws_cloudwatch_event_api_destination": awsCloudwatchEventAPIDestination, + "aws_cloudwatch_event_archive": awsCloudwatchEventArchive, + "aws_cloudwatch_event_bus": awsCloudwatchEventBus, + "aws_cloudwatch_event_bus_policy": awsCloudwatchEventBusPolicy, + "aws_cloudwatch_event_connection": awsCloudwatchEventConnection, + "aws_cloudwatch_event_endpoint": awsCloudwatchEventEndpoint, + "aws_cloudwatch_event_permission": awsCloudwatchEventPermission, + "aws_cloudwatch_event_rule": awsCloudwatchEventRule, + "aws_cloudwatch_event_target": awsCloudwatchEventTarget, + "aws_cloudwatch_log_account_policy": awsCloudwatchLogAccountPolicy, + "aws_cloudwatch_log_anomaly_detector": awsCloudwatchLogAnomalyDetector, + "aws_cloudwatch_log_data_protection_policy": awsCloudwatchLogDataProtectionPolicy, + "aws_cloudwatch_log_delivery": awsCloudwatchLogDelivery, + "aws_cloudwatch_log_delivery_destination": awsCloudwatchLogDeliveryDestination, + "aws_cloudwatch_log_delivery_destination_policy": awsCloudwatchLogDeliveryDestinationPolicy, + "aws_cloudwatch_log_delivery_source": awsCloudwatchLogDeliverySource, + "aws_cloudwatch_log_destination": awsCloudwatchLogDestination, + "aws_cloudwatch_log_destination_policy": awsCloudwatchLogDestinationPolicy, + "aws_cloudwatch_log_group": awsCloudwatchLogGroup, + "aws_cloudwatch_log_index_policy": awsCloudwatchLogIndexPolicy, + "aws_cloudwatch_log_metric_filter": awsCloudwatchLogMetricFilter, + "aws_cloudwatch_log_resource_policy": awsCloudwatchLogResourcePolicy, + "aws_cloudwatch_log_stream": awsCloudwatchLogStream, + "aws_cloudwatch_log_subscription_filter": awsCloudwatchLogSubscriptionFilter, + "aws_cloudwatch_metric_alarm": awsCloudwatchMetricAlarm, + "aws_cloudwatch_metric_stream": awsCloudwatchMetricStream, + "aws_cloudwatch_query_definition": awsCloudwatchQueryDestination, + "aws_codeartifact_domain": awsCodeartifactDomain, + "aws_codeartifact_domain_permissions_policy": awsCodeartifactDomainPermissionsPolicy, + "aws_codeartifact_repository": awsCodeartifactRepository, + "aws_codeartifact_repository_permissions_policy": awsCodeartifactRepositoryPermissionsPolicy, + "aws_codebuild_fleet": awsCodeBuildFleet, + "aws_codebuild_project": awsCodebuildProject, + "aws_codebuild_report_group": awsCodebuildReportGroup, + "aws_codebuild_resource_policy": awsCodebuildResourcePolicy, + "aws_codebuild_source_credential": awsCodebuildSourceCredential, + "aws_codebuild_webhook": awsCodebuildWebhook, + "aws_codecatalyst_dev_environment": placeholder, + "aws_codecatalyst_project": placeholder, + "aws_codecatalyst_source_repository": placeholder, + "aws_codecommit_approval_rule_template": awsCodecommitApprovalRuleTemplate, + "aws_codecommit_approval_rule_template_association": awsCodecommitApprovalRuleTemplateAssociation, + "aws_codecommit_repository": awsCodecommitRepository, + "aws_codecommit_trigger": awsCodecommitTrigger, + "aws_codeconnections_connection": awsCodeconnectionsConnection, + "aws_codeconnections_host": awsCodeconnectionsHost, + "aws_codedeploy_app": awsCodedeployApp, + "aws_codedeploy_deployment_config": awsCodedeployDeploymentConfig, + "aws_codedeploy_deployment_group": awsCodedeployDeploymentGroup, + "aws_codeguruprofiler_profiling_group": awsCodeguruprofilerProfilingGroup, + "aws_codegurureviewer_repository_association": awsCodegurureviewerRepositoryAssociation, + "aws_codepipeline": awsCodepipeline, + "aws_codepipeline_custom_action_type": awsCodepipelineCustomActionType, + "aws_codepipeline_webhook": awsCodepipelineWebhook, + "aws_codestarconnections_connection": awsCodestarconnectionsConnection, + "aws_codestarconnections_host": awsCodestarconnectionsHost, + "aws_codestarnotifications_notification_rule": awsCodestarconnectionsNotificationsRule, + "aws_cognito_identity_pool": awsCognitoIdentityPool, + "aws_cognito_identity_pool_provider_principal_tag": awsCognitoIdentityPoolProviderPrincipalTag, + "aws_cognito_identity_pool_roles_attachment": awsCognitoIdentityPoolRolesAttachment, + "aws_cognito_identity_provider": awsCognitoIdentityProvider, + "aws_cognito_managed_user_pool_client": awsCognitoManagedUserPoolClient, + "aws_cognito_resource_server": awsCognitoResourceServer, + "aws_cognito_risk_configuration": awsCognitoRiskConfiguration, + "aws_cognito_user": awsCognitoUser, + "aws_cognito_user_group": awsCognitoUserGroup, + "aws_cognito_user_in_group": awsCognitoUserInGroup, + "aws_cognito_user_pool": awsCognitoUserPool, + "aws_cognito_user_pool_client": awsCognitoUserPoolClient, + "aws_cognito_user_pool_domain": awsCognitoUserPoolDomain, + "aws_cognito_user_pool_ui_customization": awsCognitoUserPoolUICustomization, + "aws_comprehend_document_classifier": awsComprehendDocumentClassifier, + "aws_comprehend_entity_recognizer": awsComprehendEntityRecognizer, + "aws_computeoptimizer_enrollment_status": awsComputeoptimizerEnrollmentStatus, + "aws_computeoptimizer_recommendation_preferences": awsComputeoptimizerRecommendationPreferences, + "aws_config_aggregate_authorization": awsConfigAggregateAuthorization, + "aws_config_config_rule": awsConfigConfigRule, + "aws_config_configuration_aggregator": awsConfigConfigurationAggregator, + "aws_config_configuration_recorder": awsConfigConfigurationRecorder, + "aws_config_configuration_recorder_status": awsConfigConfigurationRecorderStatus, + "aws_config_conformance_pack": awsConfigConformancePack, + "aws_config_delivery_channel": awsConfigDeliveryChannel, + "aws_config_organization_conformance_pack": awsConfigOrganizationConformancePack, + "aws_config_organization_custom_policy_rule": awsConfigOrganizationCustomPolicyRule, + "aws_config_organization_custom_rule": awsConfigOrganizationCustomRule, + "aws_config_organization_managed_rule": awsConfigOrganizationManagedRule, + "aws_config_remediation_configuration": awsConfigRemediationConfiguration, + "aws_config_retention_configuration": awsConfigRetentionConfiguration, + "aws_connect_bot_association": awsConnectBotAssociation, + "aws_connect_contact_flow": awsConnectContactFlow, + "aws_connect_contact_flow_module": awsConnectContactFlowModule, + "aws_connect_hours_of_operation": awsConnectHoursOfOperation, + "aws_connect_instance": awsConnectInstance, + "aws_connect_instance_storage_config": awsConnectInstanceStorageConfig, + "aws_connect_lambda_function_association": awsConnectLambdaFunctionAssociation, + "aws_connect_phone_number": awsConnectPhoneNumber, + "aws_connect_queue": awsConnectQueue, + "aws_connect_quick_connect": awsConnectQuickConnect, + "aws_connect_routing_profile": awsConnectRoutingProfile, + "aws_connect_security_profile": awsConnectSecurityProfile, + "aws_connect_user": awsConnectUser, + "aws_connect_user_hierarchy_group": awsConnectUserHierarchyGroup, + "aws_connect_user_hierarchy_structure": awsConnectUserHierarchyStructure, + "aws_connect_vocabulary": awsConnectVocabulary, + "aws_controltower_control": awsControltowerControl, + "aws_controltower_landing_zone": awsControltowerLandingZone, + "aws_costoptimizationhub_enrollment_status": awsCostoptimizationhubEnrollmentStatus, + "aws_costoptimizationhub_preferences": awsCostoptimizationhubPreferences, + "aws_cur_report_definition": awsCurReportDefinition, + "aws_customer_gateway": awsCustomerGateway, + "aws_customerprofiles_domain": awsCustomerprofilesDomain, + "aws_customerprofiles_profile": awsCustomerprofilesProfile, + "aws_dataexchange_data_set": awsDataexchangeDataSet, + "aws_dataexchange_revision": awsDataexchangeRevision, + "aws_datapipeline_pipeline": awsDatapipelinePipeline, + "aws_datapipeline_pipeline_definition": awsDatapipelinePipelineDefinition, + "aws_datasync_agent": awsDatasyncAgent, + "aws_datasync_location_azure_blob": awsDatasyncLocationAzureBlob, + "aws_datasync_location_efs": awsDatasyncLocationEfs, + "aws_datasync_location_fsx_lustre_file_system": awsDatasyncLocationFsxLustreFileSystem, + "aws_datasync_location_fsx_ontap_file_system": awsDatasyncLocationFsxOntapFileSystem, + "aws_datasync_location_fsx_openzfs_file_system": awsDatasyncLocationFsxOpenzfsFileSystem, + "aws_datasync_location_fsx_windows_file_system": awsDatasyncLocationFsxWindowsFileSystem, + "aws_datasync_location_hdfs": awsDatasyncLocationHdfs, + "aws_datasync_location_nfs": awsDatasyncLocationNfs, + "aws_datasync_location_object_storage": awsDatasyncLocationObjectStorage, + "aws_datasync_location_s3": awsDatasyncLocationS3, + "aws_datasync_location_smb": awsDatasyncLocationSmb, + "aws_datasync_task": awsDatasyncTask, + "aws_datazone_asset_type": awsDatazoneAssetType, + "aws_datazone_domain": awsDatazoneDomain, + "aws_datazone_environment": awsDatazoneEnvironment, + "aws_datazone_environment_blueprint_configuration": awsDatazoneEnvironmentBlueprintConfiguration, + "aws_datazone_environment_profile": awsDatazoneEnvironmentProfile, + "aws_datazone_form_type": awsDatazoneFormType, + "aws_datazone_glossary": awsDatazoneGlossary, + "aws_datazone_glossary_term": awsDatazoneGlossaryTerm, + "aws_datazone_project": awsDatazoneProject, + "aws_datazone_user_profile": awsDatazoneUserProfile, + "aws_dax_cluster": awsDaxCluster, + "aws_dax_parameter_group": awsDaxParameterGroup, + "aws_dax_subnet_group": awsDaxSubnetGroup, + "aws_db_cluster_snapshot": awsDBClusterSnapshot, + "aws_db_event_subscription": awsDBEventSubscription, + "aws_db_instance": awsDBInstance, + "aws_db_instance_automated_backups_replication": awsDBInstanceAutomatedBackupsReplication, + "aws_db_instance_role_association": awsDBInstanceRoleAssociation, + "aws_db_option_group": awsDBOptionGroup, + "aws_db_parameter_group": awsDBParameterGroup, + "aws_db_proxy": awsDBProxy, + "aws_db_proxy_default_target_group": awsDBProxyDefaultTargetGroup, + "aws_db_proxy_endpoint": awsDBProxyEndpoint, + "aws_db_proxy_target": awsDBProxyTarget, + "aws_db_snapshot": awsDBSnapshot, + "aws_db_snapshot_copy": awsDBSnapshotCopy, + "aws_db_subnet_group": awsDBSubnetGroup, + "aws_default_network_acl": awsDefaultNetworkACL, + "aws_default_route_table": awsDefaultRouteTable, + "aws_default_security_group": awsDefaultSecurityGroup, + "aws_default_subnet": awsDefaultSubnet, + "aws_default_vpc": awsDefaultVpc, + "aws_default_vpc_dhcp_options": awsDefaultVpcDhcpOptions, + "aws_detective_graph": awsDetectiveGraph, + "aws_detective_invitation_accepter": awsDetectiveInvitationAccepter, + "aws_detective_member": awsDetectiveMember, + "aws_detective_organization_admin_account": awsDectectiveOrganizationAdminAccount, + "aws_detective_organization_configuration": awsDetectiveOrganizationConfiguration, + "aws_devicefarm_device_pool": awsDevicefarmDevicePool, + "aws_devicefarm_instance_profile": awsDevicefarmInstanceProfile, + "aws_devicefarm_network_profile": awsDevicefarmNetworkProfile, + "aws_devicefarm_project": awsDevicefarmProject, + "aws_devicefarm_upload": awsDevicefarmUpload, + "aws_devopsguru_event_sources_config": awsDevopsguruEventSourcesConfig, + "aws_devopsguru_notification_channel": awsDevopsguruNotificationChannel, + "aws_devopsguru_resource_collection": awsDevopsguruResourceCollection, + "aws_devopsguru_service_integration": awsDevopsguruServiceIntegration, + "aws_directory_service_conditional_forwarder": awsDirectoryServiceConditionalForwarder, + "aws_directory_service_directory": awsDirectoryServiceDirectory, + "aws_directory_service_log_subscription": awsDirectoryServiceLogSubscription, + "aws_directory_service_radius_settings": awsDirectoryServiceRadiusSettings, + "aws_directory_service_region": awsDirectoryServiceRegion, + "aws_directory_service_shared_directory": awsDirectoryServiceSharedDirectory, + "aws_directory_service_shared_directory_accepter": awsDirectoryServiceSharedDirectoryAccepter, + "aws_directory_service_trust": awsDirectoryServiceTrust, + "aws_dlm_lifecycle_policy": awsDlmLifecyclePolicy, + "aws_dms_certificate": awsDmsCertificate, + "aws_dms_endpoint": awsDmsEndpoint, + "aws_dms_event_subscription": awsDmsEventSubscription, + "aws_dms_replication_config": awsDmsReplicationConfig, + "aws_dms_replication_instance": awsDmsReplicationInstance, + "aws_dms_replication_subnet_group": awsDmsReplicationSubnetGroup, + "aws_dms_replication_task": awsDmsReplicationTask, + "aws_dms_s3_endpoint": awsDmsS3Endpoint, + "aws_docdb_cluster": awsRdsCluster, + "aws_docdb_cluster_instance": awsNeptuneClusterInstance, + "aws_docdb_cluster_parameter_group": awsRdsClusterParameterGroup, + "aws_docdb_cluster_snapshot": awsDBClusterSnapshot, + "aws_docdb_event_subscription": awsNeptuneEventSubscription, + "aws_docdb_global_cluster": awsRdsGlobalCluster, + "aws_docdb_subnet_group": awsDBSubnetGroup, + "aws_docdbelastic_cluster": awsDocdbelasticCluster, + "aws_drs_replication_configuration_template": awsDrsReplicationConfigurationTemplate, + "aws_dx_bgp_peer": awsDxBgpPeer, + "aws_dx_connection": awsDxConnection, + "aws_dx_connection_association": awsDxConnectionAssociation, + "aws_dx_connection_confirmation": awsDxConnectionConfirmation, + "aws_dx_gateway": awsDxGateway, + "aws_dx_gateway_association": awsDxGatewayAssociation, + "aws_dx_gateway_association_proposal": awsDxGatewayAssociationProposal, + "aws_dx_hosted_connection": awsDxHostedConnection, + "aws_dx_hosted_private_virtual_interface": awsDxHostedPrivateVirtualInterface, + "aws_dx_hosted_private_virtual_interface_accepter": awsDxHostedPrivateVirtualInterfaceAccepter, + "aws_dx_hosted_public_virtual_interface": awsDxHostedPublicVirtualInterface, + "aws_dx_hosted_public_virtual_interface_accepter": awsDxHostedPublicVirtualInterfaceAccepter, + "aws_dx_hosted_transit_virtual_interface": awsDxHostedTransitVirtualInterface, + "aws_dx_hosted_transit_virtual_interface_accepter": awsDxHostedTransitVirtualInterfaceAccepter, + "aws_dx_lag": awsDxLag, + "aws_dx_macsec_key_association": awsDxMacsecKeyAssociation, + "aws_dx_private_virtual_interface": awsDxPrivateVirtualInterface, + "aws_dx_public_virtual_interface": awsDxPublicVirtualInterface, + "aws_dx_transit_virtual_interface": awsDxTransitVirtualInterface, + "aws_dynamodb_contributor_insights": awsDynamodbContributorInsights, + "aws_dynamodb_global_table": awsDynamodbGlobalTable, + "aws_dynamodb_kinesis_streaming_destination": awsDynamodbKinesisStreamingDestination, + "aws_dynamodb_resource_policy": awsDynamodbResourcePolicy, + "aws_dynamodb_table": awsDynamodbTable, + "aws_dynamodb_table_export": awsDynamodbTableExport, + "aws_dynamodb_table_item": awsDynamodbTableItem, + "aws_dynamodb_table_replica": awsDynamodbTableReplica, + "aws_dynamodb_tag": awsDynamodbTag, + "aws_ebs_default_kms_key": awsEbsDefaultKmsKey, + "aws_ebs_encryption_by_default": awsEbsEncryptionByDefault, + "aws_ebs_fast_snapshot_restore": awsEbsFastSnapshotRestore, + "aws_ebs_snapshot": awsEbsSnapshot, + "aws_ebs_snapshot_block_public_access": awsEbsSnapshotBlockPublicAccess, + "aws_ebs_snapshot_copy": awsEbsSnapshotCopy, + "aws_ebs_snapshot_import": awsEbsSnapshotImport, + "aws_ebs_volume": awsEbsVolume, + "aws_ec2_availability_zone_group": awsEc2AvailabilityGroup, + "aws_ec2_capacity_block_reservation": awsEc2CapacityBlockReservation, + "aws_ec2_capacity_reservation": awsEc2CapacityReservation, + "aws_ec2_carrier_gateway": awsEc2CarrierGateway, + "aws_ec2_client_vpn_authorization_rule": awsEc2ClientvpnAuthorizationRule, + "aws_ec2_client_vpn_endpoint": awsEc2ClientVpnEndpoint, + "aws_ec2_client_vpn_network_association": awsEc2ClientVpnNetworkAssociation, + "aws_ec2_client_vpn_route": awsEc2ClientVpnRoute, + "aws_ec2_fleet": awsEc2Fleet, + "aws_ec2_host": awsEc2Host, + "aws_ec2_image_block_public_access": awsEc2ImageBlockPublicAccess, + "aws_ec2_instance": awsInstance, + "aws_ec2_instance_connect_endpoint": awsEc2InstanceConnectEndpoint, + "aws_ec2_instance_metadata_defaults": awsEc2InstanceMetadataDefaults, + "aws_ec2_instance_state": awsEc2InstanceState, + "aws_ec2_local_gateway_route": awsEc2LocalGatewayRoute, + "aws_ec2_local_gateway_route_table_vpc_association": awsEc2LocalGatewayRouteTableVpcAssociation, + "aws_ec2_managed_prefix_list": awsEc2ManagedPrefixList, + "aws_ec2_managed_prefix_list_entry": awsEc2ManagedPrefixListEntry, + "aws_ec2_network_insights_analysis": awsEc2NetworkInsightsAnalysis, + "aws_ec2_network_insights_path": awsEc2NetworkInsightsPath, + "aws_ec2_serial_console_access": awsEc2SerialConsoleAccess, + "aws_ec2_subnet_cidr_reservation": awsEc2SubnetCidrReservation, + "aws_ec2_tag": awsEc2Tag, + "aws_ec2_traffic_mirror_filter": awsEc2TrafficMirrorFilter, + "aws_ec2_traffic_mirror_filter_rule": awsEc2TrafficMirrorFilterRule, + "aws_ec2_traffic_mirror_session": awsEc2TrafficMirrorSession, + "aws_ec2_traffic_mirror_target": awsEc2TrafficMirrorTarget, + "aws_ec2_transit_gateway": awsEc2TransitGateway, + "aws_ec2_transit_gateway_connect": awsEc2TransitGatewayConnect, + "aws_ec2_transit_gateway_connect_peer": awsEc2TransitGatewayConnectPeer, + "aws_ec2_transit_gateway_default_route_table_association": awsEc2TransitGatewayDefaultRouteTableAssociation, + "aws_ec2_transit_gateway_default_route_table_propagation": awsEc2TransitGatewayDefaultRouteTablePropagation, + "aws_ec2_transit_gateway_multicast_domain": awsEc2TransitGatewayMulticastDomain, + "aws_ec2_transit_gateway_multicast_domain_association": awsEc2TransitGatewayMulticastDomainAssociation, + "aws_ec2_transit_gateway_multicast_group_member": awsEc2TransitGatewayMulticastGroupMember, + "aws_ec2_transit_gateway_multicast_group_source": awsEc2TransitGatewayMulticastGroupSource, + "aws_ec2_transit_gateway_peering_attachment": awsEc2TransitGatewayPeeringAttachment, + "aws_ec2_transit_gateway_peering_attachment_accepter": awsEc2TransitGatewayPeeringAttachmentAccepter, + "aws_ec2_transit_gateway_policy_table": awsEc2TransitGatewayPolicyTable, + "aws_ec2_transit_gateway_policy_table_association": awsEc2TransitGatewayPolicyTableAssociation, + "aws_ec2_transit_gateway_prefix_list_reference": awsEc2TransitGatewayPrefixListReference, + "aws_ec2_transit_gateway_route": awsEc2TransitGatewayRoute, + "aws_ec2_transit_gateway_route_table": awsEc2TransitGatewayRouteTable, + "aws_ec2_transit_gateway_route_table_association": awsEc2TransitGatewayRouteTableAssociation, + "aws_ec2_transit_gateway_route_table_propagation": awsEc2TransitGatewayRouteTablePropagation, + "aws_ec2_transit_gateway_vpc_attachment": awsEc2TransitGatewayVpcAttachment, + "aws_ec2_transit_gateway_vpc_attachment_accepter": awsEc2TransitGatewayVpcAttachmentAccepter, + "aws_ecr_account_setting": awsEcrAccountSetting, + "aws_ecr_lifecycle_policy": awsEcrLifecyclePolicy, + "aws_ecr_pull_through_cache_rule": awsEcrPullThroughCacheRule, + "aws_ecr_registry_policy": awsEcrRegistryPolicy, + "aws_ecr_registry_scanning_configuration": awsEcrRegistryScanningConfiguration, + "aws_ecr_replication_configuration": awsEcrReplicationConfiguration, + "aws_ecr_repository": awsEcrRepository, + "aws_ecr_repository_creation_template": awsEcrRepositoryCreationTemplate, + "aws_ecr_repository_policy": awsEcrRepositoryPolicy, + "aws_ecrpublic_repository": awsEcrPublicRepository, + "aws_ecrpublic_repository_policy": awsEcrpublicRepositoryPolicy, + "aws_ecs_account_setting_default": awsEcsAccountSettingDefault, + "aws_ecs_capacity_provider": awsEcsCapacityProvider, + "aws_ecs_cluster": awsEcsCluster, + "aws_ecs_cluster_capacity_providers": awsEcsClusterCapacityProviders, + "aws_ecs_service": awsEcsService, + "aws_ecs_tag": awsEcsTag, + "aws_ecs_task_definition": awsEcsTaskDefinition, + "aws_ecs_task_set": awsEcsTaskSet, + "aws_efs_access_point": awsEfsAccessPoint, + "aws_efs_backup_policy": awsEfsBackupPolicy, + "aws_efs_file_system": awsEfsFileSystem, + "aws_efs_file_system_policy": awsEfsFileSystemPolicy, + "aws_efs_mount_target": awsEfsMountTarget, + "aws_efs_replication_configuration": awsEfsReplicationConfiguration, + "aws_egress_only_internet_gateway": awsEgressOnlyInternetGateway, + "aws_eip": awsEip, + "aws_eip_association": awsEipAssociation, + "aws_eip_domain_name": awsEipDomainName, + "aws_eks_access_entry": awsEksAccessEntry, + "aws_eks_access_policy_association": awsEksAccessPolicyAssociation, + "aws_eks_addon": awsEksAddon, + "aws_eks_cluster": awsEksCluster, + "aws_eks_fargate_profile": awsEksFargateProfile, + "aws_eks_identity_provider_config": awsEksIdentityProviderConfig, + "aws_eks_node_group": awsEksNodeGroup, + "aws_eks_pod_identity_association": awsEksPodIdentityAssociation, + "aws_elastic_beanstalk_application": awsElasticBeanstalkApplication, + "aws_elastic_beanstalk_application_version": awsElasticBeanstalkApplicationVersion, + "aws_elastic_beanstalk_configuration_template": awsElasticBeanstalkConfigurationTemplate, + "aws_elastic_beanstalk_environment": awsElastiBeanstalkEnvironment, + "aws_elasticache_cluster": awsElasticacheCluster, + "aws_elasticache_global_replication_group": awsElasticacheGlobalReplicationGroup, + "aws_elasticache_parameter_group": awsElasticacheParameterGroup, + "aws_elasticache_replication_group": awsElasticacheReplicationGroup, + "aws_elasticache_reserved_cache_node": awsElasticacheReservedCacheNode, + "aws_elasticache_serverless_cache": awsElasticacheServerlessCache, + "aws_elasticache_subnet_group": awsElasticacheSubnetGroup, + "aws_elasticache_user": awsElasticacheUser, + "aws_elasticache_user_group": awsElasticacheUserGroup, + "aws_elasticache_user_group_association": awsElasticacheUserGroupAssociation, + "aws_elasticsearch_domain": awsElasticsearchDomain, + "aws_elasticsearch_domain_policy": awsElasticsearchDomainPolicy, + "aws_elasticsearch_domain_saml_options": awsElasticsearchDomainSamlOptions, + "aws_elasticsearch_vpc_endpoint": awsElasticsearchVpcEndpoint, + "aws_elastictranscoder_pipeline": awsElastictranscoderPipeline, + "aws_elastictranscoder_preset": awsElastictranscoderPreset, + "aws_elb": awsElb, + "aws_elb_attachment": awsElbAttachment, + "aws_emr_block_public_access_configuration": awsEmrBlockPublicAccessConfiguration, + "aws_emr_cluster": awsEmrCluster, + "aws_emr_instance_fleet": awsEmrInstanceFleet, + "aws_emr_instance_group": awsEmrInstanceGroup, + "aws_emr_managed_scaling_policy": awsEmrManagedScalingPolicy, + "aws_emr_security_configuration": awsEmrSecurityConfiguration, + "aws_emr_studio": awsEmrStudio, + "aws_emr_studio_session_mapping": awsEmrStudioSessionMapping, + "aws_emrcontainers_job_template": awsEmrcontainersJobTemplate, + "aws_emrcontainers_virtual_cluster": awsEmrcontainersVirtualCluster, + "aws_emrserverless_application": awsEmrseverlessApplication, + "aws_evidently_feature": awsEvidentlyFeature, + "aws_evidently_launch": awsEvidentlyLaunch, + "aws_evidently_project": awsEvidentlyProject, + "aws_evidently_segment": awsEvidentlySegment, + "aws_finspace_kx_cluster": awsFinspaceKxCluster, + "aws_finspace_kx_database": awsFinspaceKxDatabase, + "aws_finspace_kx_dataview": awsFinspaceKxDataview, + "aws_finspace_kx_environment": awsFinspaceKxEnvironment, + "aws_finspace_kx_scaling_group": awsFinspaceKxScalingGroup, + "aws_finspace_kx_user": awsFinspaceKxUser, + "aws_finspace_kx_volume": awsFinspaceKxVolume, + "aws_fis_experiment_template": awsFisExperimentTemplate, + "aws_flow_log": awsFlowLog, + "aws_fms_admin_account": awsFmsAdminAccount, + "aws_fms_policy": awsFmsPolicy, + "aws_fms_resource_set": awsFmsResourceSet, + "aws_fsx_backup": awsFsxBackup, + "aws_fsx_data_repository_association": awsFsxDataRepositoryAssociation, + "aws_fsx_file_cache": awsFsxFileCache, + "aws_fsx_lustre_file_system": awsFsxLustreFileSystem, + "aws_fsx_ontap_file_system": awsFsxOntapFileSystem, + "aws_fsx_ontap_storage_virtual_machine": awsFsxOntapStorageVirtualMachine, + "aws_fsx_ontap_volume": awsFsxOntapVolume, + "aws_fsx_openzfs_file_system": awsFsxOpenzfsFileSystem, + "aws_fsx_openzfs_snapshot": awsFsxOpenzfsSnaphot, + "aws_fsx_openzfs_volume": awsFsxOpenzfsVolume, + "aws_fsx_windows_file_system": awsFsxWindowsFileSystem, + "aws_gamelift_alias": awsGameliftAlias, + "aws_gamelift_build": awsGameliftBuild, + "aws_gamelift_fleet": awsGameliftFleet, + "aws_gamelift_game_server_group": awsGameliftGameServerGroup, + "aws_gamelift_game_session_queue": awsGameliftGameSessionQueue, + "aws_gamelift_script": awsGameliftScript, + "aws_glacier_vault": awsGlacierVault, + "aws_glacier_vault_lock": awsGlacierVaultLock, + "aws_globalaccelerator_accelerator": awsGlobalacceleratorAccelerator, + "aws_globalaccelerator_cross_account_attachment": awsGlobalacceleratorCrossAccountAttachment, + "aws_globalaccelerator_custom_routing_accelerator": awsGlobalacceleratorCustomRoutingAccelerator, + "aws_globalaccelerator_custom_routing_endpoint_group": awsGlobalacceleratorCustomRoutingEndpointGroup, + "aws_globalaccelerator_custom_routing_listener": awsGlobalacceleratorCustomRoutingListener, + "aws_globalaccelerator_endpoint_group": awsGlobalacceleratorEndpointGroup, + "aws_globalaccelerator_listener": awsGlobalacceleratorListener, + "aws_glue_catalog_database": awsGlueCatalogDatabase, + "aws_glue_catalog_table": awsGlueCatalogTable, + "aws_glue_catalog_table_optimizer": awsGlueCatalogTableOptimizer, + "aws_glue_classifier": awsGlueClassifier, + "aws_glue_connection": awsGlueConnection, + "aws_glue_crawler": awsGlueCrawler, + "aws_glue_data_catalog_encryption_settings": awsGlueDataCatalogEncryptionSettings, + "aws_glue_data_quality_ruleset": awsGlueDataQualityRuleset, + "aws_glue_dev_endpoint": awsGlueDevEndpoint, + "aws_glue_job": awsGlueJob, + "aws_glue_ml_transform": awsGlueMlTransform, + "aws_glue_partition": awsGluePartition, + "aws_glue_partition_index": awsGluePartitionIndex, + "aws_glue_registry": awsGlueRegistry, + "aws_glue_resource_policy": awsGlueResourcePolicy, + "aws_glue_schema": awsGlueSchema, + "aws_glue_security_configuration": awsGlueSecurityConfiguration, + "aws_glue_trigger": awsGlueTrigger, + "aws_glue_user_defined_function": awsGlueUserDefinedFunction, + "aws_glue_workflow": awsGlueWorkflow, + "aws_grafana_license_association": awsGrafanaLicenseAssociation, + "aws_grafana_role_association": awsGrafanaRoleAssociation, + "aws_grafana_workspace": awsGrafanaWorkspace, + "aws_grafana_workspace_api_key": awsGrafanaWorkspaceAPIKey, + "aws_grafana_workspace_saml_configuration": awsGrafanaWorkspaceSamlConfiguration, + "aws_grafana_workspace_service_account": awsGrafanaWorkspaceServiceAccount, + "aws_grafana_workspace_service_account_token": awsGrafanaWorkspaceServiceAccountToken, + "aws_guardduty_detector": awsGuarddutyDetector, + "aws_guardduty_detector_feature": awsGuarddutyDetectorFeature, + "aws_guardduty_filter": awsGuarddutyFilter, + "aws_guardduty_invite_accepter": awsGuarddutyInviteAcceptor, + "aws_guardduty_ipset": awsGuarddutyIpset, + "aws_guardduty_malware_protection_plan": awsGuarddutyMalwareProtectionPlan, + "aws_guardduty_member": awsGuarddutyMember, + "aws_guardduty_member_detector_feature": awsGuarddutyMemberDetectorFeature, + "aws_guardduty_organization_admin_account": awsGuarddutyOrganizationAdminAccount, + "aws_guardduty_organization_configuration": awsGuarddutyOrganizationConfiguration, + "aws_guardduty_organization_configuration_feature": awsGuarddutyOrganizationConfigurationFeature, + "aws_guardduty_publishing_destination": awsGuarddutyPublishingDestination, + "aws_guardduty_threatintelset": awsGuarddutyThreatintelset, + "aws_iam_access_key": awsIamAccessKey, + "aws_iam_account_alias": awsIamAccountAlias, + "aws_iam_account_password_policy": awsIamAccountPasswordPolicy, + "aws_iam_group": awsIamGroup, + "aws_iam_group_membership": awsIamGroupMembership, + "aws_iam_group_policies_exclusive": awsIamGroupPoliciesExclusive, + "aws_iam_group_policy": awsIamGroupPolicy, + "aws_iam_group_policy_attachment": awsIamGroupPolicyAttachment, + "aws_iam_group_policy_attachments_exclusive": awsIamGroupPolicyAttachmentExclusive, + "aws_iam_instance_profile": awsIamInstanceProfile, + "aws_iam_openid_connect_provider": awsIamOpenidConnectProvider, + "aws_iam_organizations_features": awsIamOrganizationsFeatures, + "aws_iam_policy": awsIamPolicy, + "aws_iam_policy_attachment": awsIamPolicyAttachment, + "aws_iam_role": awsIamRole, + "aws_iam_role_policies_exclusive": awsIamRolePoliciesExclusive, + "aws_iam_role_policy": awsIamRolePolicy, + "aws_iam_role_policy_attachment": awsIamRolePolicyAttachment, + "aws_iam_role_policy_attachments_exclusive": awsIamRolePolicyAttachmentsExclusive, + "aws_iam_saml_provider": awsIamSamlProvider, + "aws_iam_security_token_service_preferences": awsIamSecurityTokenServicePreferences, + "aws_iam_server_certificate": awsIamServerCertificate, + "aws_iam_service_linked_role": awsIamServiceLinkedRole, + "aws_iam_service_specific_credential": awsIamServiceSpecificCredential, + "aws_iam_signing_certificate": awsIamSigningCertificate, + "aws_iam_user": awsIamUser, + "aws_iam_user_group_membership": awsIamUserGroupMembership, + "aws_iam_user_login_profile": awsIamUserLoginProfile, + "aws_iam_user_policies_exclusive": awsIamUserPoliciesExclusive, + "aws_iam_user_policy": awsIamUserPolicy, + "aws_iam_user_policy_attachment": awsIamUserPolicyAttachment, + "aws_iam_user_policy_attachments_exclusive": awsIamUserPolicyAttachmentsExclusive, + "aws_iam_user_ssh_key": awsIamUserSSHKey, + "aws_iam_virtual_mfa_device": awsIamVirtualMfaDevice, + "aws_identitystore_group": awsIdentitystoreGroup, + "aws_identitystore_group_membership": awsIdentitystoreGroupMembership, + "aws_identitystore_user": awsIdentitystoreUser, + "aws_imagebuilder_component": awsImagebuilderComponent, + "aws_imagebuilder_container_recipe": awsImagebuilderContainerRecipe, + "aws_imagebuilder_distribution_configuration": awsImagebuilderDistributionConfiguration, + "aws_imagebuilder_image": awsImagebuilderImage, + "aws_imagebuilder_image_pipeline": awsImagebuilderImagePipeline, + "aws_imagebuilder_image_recipe": awsImagebuilderImageRecipe, + "aws_imagebuilder_infrastructure_configuration": awsImagebuilderInstrastructureConfiguration, + "aws_imagebuilder_lifecycle_policy": awsImagebuilderLifecyclePolicy, + "aws_imagebuilder_workflow": awsImagebuilderWorkflow, + "aws_inspector2_delegated_admin_account": awsInspector2DelegatedAdminAccount, + "aws_inspector2_enabler": awsInspector2Enabler, + "aws_inspector2_member_association": awsInspector2MemberAssociation, + "aws_inspector2_organization_configuration": awsInspector2OrganizationConfiguration, + "aws_inspector_assessment_target": awsInspectorAssessmentTarget, + "aws_inspector_assessment_template": awsInspectorAssessmentTemplate, + "aws_inspector_resource_group": awsInspectorResouceGroup, + "aws_instance": awsInstance, + "aws_internet_gateway": awsInternetGateway, + "aws_internet_gateway_attachment": awsInternetGatewayAttachment, + "aws_internetmonitor_monitor": awsInternetmonitorMonitor, + "aws_iot_authorizer": awsIotAuthorizer, + "aws_iot_billing_group": awsIotBillingGroup, + "aws_iot_ca_certificate": awsIotCaCertificate, + "aws_iot_certificate": awsIotCertificate, + "aws_iot_domain_configuration": awsIotDomainConfiguration, + "aws_iot_event_configurations": awsIotEventConfigurations, + "aws_iot_indexing_configuration": awsIotIndexingConfiguration, + "aws_iot_logging_options": awsIotLoggingOptions, + "aws_iot_policy": awsIotPolicy, + "aws_iot_policy_attachment": awsIotPolicyAttachment, + "aws_iot_provisioning_template": awsIotProvisioningTemplate, + "aws_iot_role_alias": awsIotRoleAlias, + "aws_iot_thing": awsIotThing, + "aws_iot_thing_group": awsIotThingGroup, + "aws_iot_thing_group_membership": awsIotThingGroupMembership, + "aws_iot_thing_principal_attachment": awsIotThingPrincipalAttachment, + "aws_iot_thing_type": awsIotThingType, + "aws_iot_topic_rule": awsIotTopicRule, + "aws_iot_topic_rule_destination": awsIotTopicRuleDestination, + "aws_ivs_channel": awsIvsChannel, + "aws_ivs_playback_key_pair": awsIvsPlaybackKeyPair, + "aws_ivs_recording_configuration": awsIvsRecordingConfigration, + "aws_ivschat_logging_configuration": awsIvschatLoggingConfiguration, + "aws_ivschat_room": awsIvschatRoom, + "aws_kendra_data_source": awsKendraDataSource, + "aws_kendra_experience": awsKendraExperience, + "aws_kendra_faq": awsKendraFaq, + "aws_kendra_index": awsKendraIndex, + "aws_kendra_query_suggestions_block_list": awsKendraQuerySuggestionsBlockList, + "aws_kendra_thesaurus": awsKendraThesaurus, + "aws_key_pair": awsKeyPair, + "aws_keyspaces_keyspace": awsKeyspacesKeyspace, + "aws_keyspaces_table": awsKeyspacesTable, + "aws_kinesis_analytics_application": awsKinesisanalyticsApplication, + "aws_kinesis_firehose_delivery_stream": awsKinesisFirehoseDeliveryStream, + "aws_kinesis_resource_policy": awsKinesisResourcePolicy, + "aws_kinesis_stream": awsKinesisStream, + "aws_kinesis_stream_consumer": awsKinesisStreamConsumer, + "aws_kinesis_video_stream": awsKinesisVideoStream, + "aws_kinesisanalyticsv2_application": awsKinesisanalyticsv2Application, + "aws_kinesisanalyticsv2_application_snapshot": awsKinesisanalyticsv2ApplicationSnapshot, + "aws_kms_alias": awsKmsAlias, + "aws_kms_ciphertext": awsKmsCiphertext, + "aws_kms_custom_key_store": awsKmsCustomKeyStore, + "aws_kms_external_key": awsKmsExternalKey, + "aws_kms_grant": awsKmsGrant, + "aws_kms_key": awsKmsKey, + "aws_kms_key_policy": awsKmsKeyPolicy, + "aws_kms_replica_external_key": awsKmsReplicaExternalKey, + "aws_kms_replica_key": awsKmsReplicaKey, + "aws_lakeformation_data_cells_filter": awsLakeformationDataCellsFilter, + "aws_lakeformation_data_lake_settings": awsLakeformationDataLakeSettings, + "aws_lakeformation_lf_tag": awsLakeformationLfTag, + "aws_lakeformation_permissions": awsLakeformationPermissions, + "aws_lakeformation_resource": awsLakeformationResource, + "aws_lakeformation_resource_lf_tag": awsLakeformationResourceLfTag, + "aws_lakeformation_resource_lf_tags": awsLakeformationResourceLfTags, + "aws_lambda_alias": awsLambdaAlias, + "aws_lambda_code_signing_config": awsLambdaCodeSigningConfig, + "aws_lambda_event_source_mapping": awsLambdaEventSourceMapping, + "aws_lambda_function": awsLambdaFunction, + "aws_lambda_function_event_invoke_config": awsLambdaFunctionEventInvokeConfig, + "aws_lambda_function_recursion_config": awsLambdaFunctionRecursionConfig, + "aws_lambda_function_url": awsLambdaFunctionURL, + "aws_lambda_invocation": awsLambdaInvocation, + "aws_lambda_layer_version": awsLambdaLayerVersion, + "aws_lambda_layer_version_permission": awsLambdaLayerVersionPermission, + "aws_lambda_permission": awsLambdaPermission, + "aws_lambda_provisioned_concurrency_config": awsLambdaProvisionedConcurrencyConfig, + "aws_lambda_runtime_management_config": awsLambdaRuntimeManagementConfig, + "aws_launch_configuration": awsLaunchConfiguration, + "aws_launch_template": awsLaunchTemplate, + "aws_lb": awsLb, + "aws_lb_cookie_stickiness_policy": awsLbCookieStickinessPolicy, + "aws_lb_listener": awsLbListener, + "aws_lb_listener_certificate": awsLbListenerCertificate, + "aws_lb_listener_rule": awsLbListenerRule, + "aws_lb_ssl_negotiation_policy": awsLbSslNegotiationPolicy, + "aws_lb_target_group": awsLbTargetGroup, + "aws_lb_target_group_attachment": awsLbTargetGroupAttachment, + "aws_lb_trust_store": awsLbTrustStore, + "aws_lb_trust_store_revocation": awsLbTrustStoreRevocation, + "aws_lex_bot": awsLexBot, + "aws_lex_bot_alias": awsLexBotAlias, + "aws_lex_intent": awsLexIntent, + "aws_lex_slot_type": awsLexSlotType, + "aws_lexv2models_bot": awsLexv2ModelsBot, + "aws_lexv2models_bot_locale": awsLexv2ModelsBotLocale, + "aws_lexv2models_bot_version": awsLexv2ModelsBotVersion, + "aws_lexv2models_intent": awsLexv2ModelsIntent, + "aws_lexv2models_slot": awsLexv2ModelsSlot, + "aws_lexv2models_slot_type": awsLexv2ModelsSlotType, + "aws_licensemanager_association": awsLicensemanagerAssociation, + "aws_licensemanager_grant": awsLicencemanagerGrant, + "aws_licensemanager_grant_accepter": awsLicensemanagerGrantAccepter, + "aws_licensemanager_license_configuration": awsLicenceManagerLicencenceConfiguration, + "aws_lightsail_bucket": awsLightsailBucket, + "aws_lightsail_bucket_access_key_access_key": awsLightsailBucketAccessKeyAccessKey, + "aws_lightsail_bucket_resource_access": awsLightsailBucketResourceAccess, + "aws_lightsail_certificate": awsLightsailCertificate, + "aws_lightsail_container_service": awsLightsailContainerService, + "aws_lightsail_container_service_deployment_version": awsLightsailContainerServiceDeploymentVersion, + "aws_lightsail_database": awsLightsailDatabase, + "aws_lightsail_disk": awsLightsailDisk, + "aws_lightsail_disk_attachment": awsLightsailDiskAttachment, + "aws_lightsail_distribution": awsLightsailDistribution, + "aws_lightsail_domain": awsLightsailDomain, + "aws_lightsail_domain_entry": awsLightsailDomainEntry, + "aws_lightsail_instance": awsLightsailInstance, + "aws_lightsail_instance_public_ports": awsLightsailInstancePublicPorts, + "aws_lightsail_key_pair": awsLightsailKeyPair, + "aws_lightsail_lb": awsLightsailLb, + "aws_lightsail_lb_attachment": awsLightsailLbAttachment, + "aws_lightsail_lb_certificate": awsLightsailLbCertificate, + "aws_lightsail_lb_certificate_attachment": awsLightsailLbCertificateAttachment, + "aws_lightsail_lb_https_redirection_policy": awsLightsailLbHTTPSRedirectionPolicy, + "aws_lightsail_lb_stickiness_policy": awsLightsailLbStickinessPolicy, + "aws_lightsail_static_ip": awsLightsailStaticIP, + "aws_lightsail_static_ip_attachment": awsLightsailStaticIPAttachment, + "aws_load_balancer_backend_server_policy": awsLoadBalancerBackendServerPolicy, + "aws_load_balancer_listener_policy": awsLoadBalancerListenerPolicy, + "aws_load_balancer_policy": awsLoadBalancerPolicy, + "aws_location_geofence_collection": awsLocationGeofenceCollection, + "aws_location_map": awsLocationMap, + "aws_location_place_index": awsLocationPlaceIndex, + "aws_location_route_calculator": awsLocationRouteCalculator, + "aws_location_tracker": awsLocationTracker, + "aws_location_tracker_association": awsLocationTrackerAssociation, + "aws_m2_application": awsM2Application, + "aws_m2_deployment": awsM2Deployment, + "aws_m2_environment": awsM2Environment, + "aws_macie2_account": awsMacieAccount, + "aws_macie2_classification_export_configuration": awsMacieClassificationExportConfiguration, + "aws_macie2_classification_job": awsMacieClassificationJob, + "aws_macie2_custom_data_identifier": awsMacie2CustomDataIdentifier, + "aws_macie2_findings_filter": awsMacie2FindingsFilter, + "aws_macie2_invitation_accepter": awsMacieInvitationAccepter, + "aws_macie2_member": awsMacieMember, + "aws_macie2_organization_admin_account": awsMacieOrganizationAdminAccount, + "aws_main_route_table_association": awsMainRouteTableAssociation, + "aws_media_convert_queue": awsMediaConvertQueue, + "aws_media_package_channel": awsMediaPackageChannel, + "aws_media_packagev2_channel_group": awsMediaPackagev2ChannelGroup, + "aws_media_store_container": awsMediaStoreContainer, + "aws_media_store_container_policy": awsMediaStoreContainerPolicy, + "aws_medialive_channel": awsMedialiveChannel, + "aws_medialive_input": awsMedialiveInput, + "aws_medialive_input_security_group": awsMedialiveInputSecurityGroup, + "aws_medialive_multiplex": awsMedialiveMulitplex, + "aws_medialive_multiplex_program": awsMedialiveMultiplexProgram, + "aws_memorydb_acl": awsMemorydbACL, + "aws_memorydb_cluster": awsMemorydbCluster, + "aws_memorydb_multi_region_cluster": awsMemorydbMultiRegionCluster, + "aws_memorydb_parameter_group": awsMemorydbParameterGroup, + "aws_memorydb_snapshot": awsMemorydbSnapshot, + "aws_memorydb_subnet_group": awsMemorydbSubnetGroup, + "aws_memorydb_user": awsMemorydbUser, + "aws_mq_broker": awsMqBroker, + "aws_mq_configuration": awsMqConfiguration, + "aws_msk_cluster": awsMskCluster, + "aws_msk_cluster_policy": awsMskClusterPolicy, + "aws_msk_configuration": awsMskConfiguration, + "aws_msk_replicator": awsMskReplicator, + "aws_msk_scram_secret_association": awsMskScramSecretAssociation, + "aws_msk_serverless_cluster": awsMskServerlessCluster, + "aws_msk_single_scram_secret_association": awsMskSingleScramSecretAssociation, + "aws_msk_vpc_connection": awsMskVpcConnection, + "aws_mskconnect_connector": awsMskconnectConnector, + "aws_mskconnect_custom_plugin": awsMskconnectCustomPlugin, + "aws_mskconnect_worker_configuration": awsMskconnectWorkerConfiguration, + "aws_mwaa_environment": awsMwaaEnvironment, + "aws_nat_gateway": awsNatGateway, + "aws_neptune_cluster": awsNeptuneCluster, + "aws_neptune_cluster_endpoint": awsNeptuneClusterEndpoint, + "aws_neptune_cluster_instance": awsNeptuneClusterInstance, + "aws_neptune_cluster_parameter_group": awsRdsClusterParameterGroup, + "aws_neptune_cluster_snapshot": awsNeptuneClusterSnapshot, + "aws_neptune_event_subscription": awsNeptuneEventSubscription, + "aws_neptune_global_cluster": awsRdsGlobalCluster, + "aws_neptune_parameter_group": awsDBParameterGroup, + "aws_neptune_subnet_group": awsDBSubnetGroup, + "aws_network_acl": awsNetworkACL, + "aws_network_acl_association": awsNetworkACLAssociation, + "aws_network_acl_rule": awsNetworkACLRule, + "aws_network_interface": awsNetworkInterface, + "aws_network_interface_attachment": awsNetworkInterfaceAttachment, + "aws_network_interface_sg_attachment": awsNetworkInterfaceSgAttachment, + "aws_networkfirewall_firewall": awsNetworkfirewallFirewall, + "aws_networkfirewall_firewall_policy": awsNetworkfirewallFirewallPolicy, + "aws_networkfirewall_logging_configuration": awsNetworkfirewallLoggingConfiguration, + "aws_networkfirewall_resource_policy": awsNetworkfirewallResourcePolicy, + "aws_networkfirewall_rule_group": awsNetworkfirewallRuleGroup, + "aws_networkfirewall_tls_inspection_configuration": awsNetworkfirewallTLSInspectionConfiguration, + "aws_networkmanager_attachment_accepter": awsNetworkmanagerAttachmentAccepter, + "aws_networkmanager_connect_attachment": awsNetworkManagerConnectAttachment, + "aws_networkmanager_connect_peer": awsNetworkManagerConnectPeer, + "aws_networkmanager_connection": awsNetworkmanagerConnection, + "aws_networkmanager_core_network": awsNetworkmanagerCoreNetwork, + "aws_networkmanager_core_network_policy_attachment": awsNetworkmanagerCoreNetworkPolicyAttachment, + "aws_networkmanager_customer_gateway_association": awsNetworkmanagerCustomerGatewayAssociation, + "aws_networkmanager_device": awsNetworkmanagerDevice, + "aws_networkmanager_dx_gateway_attachment": awsNetworkmanagerDxGatewayAttachment, + "aws_networkmanager_global_network": awsNetworkmanagerGlobalNetwork, + "aws_networkmanager_link": awsNetworkmanagerLink, + "aws_networkmanager_link_association": awsNetworkmanagerLinkAssocation, + "aws_networkmanager_site": awsNetworkmanagerSite, + "aws_networkmanager_site_to_site_vpn_attachment": awsNetworkmanagerSiteToSiteVpnAttachment, + "aws_networkmanager_transit_gateway_connect_peer_association": awsNetworkmanagerTransitGatewayConnectPeerAssociation, + "aws_networkmanager_transit_gateway_peering": awsNetworkmanagerTransitGatewayPeering, + "aws_networkmanager_transit_gateway_registration": awsNetworkmanagerTransitGatewayRegistration, + "aws_networkmanager_transit_gateway_route_table_attachment": awsNetworkmanagerTransitGatewayRouteTableAttachment, + "aws_networkmanager_vpc_attachment": awsNetworkmanagerVpcAttachment, + "aws_networkmonitor_monitor": awsNetworkmonitorMonitor, + "aws_networkmonitor_probe": awsNetworkmonitorProbe, + "aws_oam_link": awsOamLink, + "aws_oam_sink": awsOamSink, + "aws_oam_sink_policy": awsOamSinkPolicy, + "aws_opensearch_authorize_vpc_endpoint_access": awsOpensearchAuthorizeVpcEndpointAccess, + "aws_opensearch_domain": awsElasticsearchDomain, + "aws_opensearch_domain_policy": awsElasticsearchDomainPolicy, + "aws_opensearch_domain_saml_options": awsOpensearchDomainSamlOptions, + "aws_opensearch_inbound_connection_accepter": awsOpensearchInboundConnectionAccepter, + "aws_opensearch_outbound_connection": awsOpensearchOutboundConnection, + "aws_opensearch_package": awsOpensearchPackage, + "aws_opensearch_package_association": awsOpensearchPackageAssociation, + "aws_opensearch_vpc_endpoint": awsOpensearchVPCEndpoint, + "aws_opensearchserverless_access_policy": awsOpenseachserverlessAccessPolicy, + "aws_opensearchserverless_collection": awsOpenseachserverlessCollection, + "aws_opensearchserverless_lifecycle_policy": awsOpenseachserverlessLifecyclePolicy, + "aws_opensearchserverless_security_config": awsOpenseachserverlessSecurityConfig, + "aws_opensearchserverless_security_policy": awsOpenseachserverlessSecurityPolicy, + "aws_opensearchserverless_vpc_endpoint": awsOpenseachserverlessVpcEndpoint, + "aws_opsworks_application": awsOpsworksApplication, + "aws_opsworks_custom_layer": awsOpsworksCustomLayer, + "aws_opsworks_ecs_cluster_layer": awsOpsworksEcsClusterLayer, + "aws_opsworks_ganglia_layer": awsOpsworksGangliaLayer, + "aws_opsworks_haproxy_layer": awsOpsworksHaproxyLayer, + "aws_opsworks_instance": awsOpsworksInstance, + "aws_opsworks_java_app_layer": awsOpsworksJavaAppLayer, + "aws_opsworks_memcached_layer": awsOpsworksMemcachedLayer, + "aws_opsworks_mysql_layer": awsOpsworksMysqlLayer, + "aws_opsworks_nodejs_app_layer": awsOpsworksNodejsAppLayer, + "aws_opsworks_permission": awsOpsworksPermission, + "aws_opsworks_php_app_layer": awsOpsworksPhpAppLayer, + "aws_opsworks_rails_app_layer": awsOpsworksRailsAppLayer, + "aws_opsworks_rds_db_instance": awsOpsworksRdsDBInstance, + "aws_opsworks_stack": awsOpsworksStack, + "aws_opsworks_static_web_layer": awsOpsworksStaticWebLayer, + "aws_opsworks_user_profile": awsOpsworksUserProfile, + "aws_organizations_account": awsOrganizationsAccount, + "aws_organizations_delegated_administrator": awsOrganizationsDelegatedAdministrator, + "aws_organizations_organization": awsOrganizationsOrganization, + "aws_organizations_organizational_unit": awsOrganizationsOrganizationalUnit, + "aws_organizations_policy": awsOrganizationsPolicy, + "aws_organizations_policy_attachment": awsOrganizationsPolicyAttachment, + "aws_organizations_resource_policy": awsOrganizationsResourcePolicy, + "aws_osis_pipeline": awsOsisPipeline, + "aws_paymentcryptography_key": awsPaymentcrytopgraphyKey, + "aws_paymentcryptography_key_alias": awsPaymentcrytopgraphyKeyAlias, + "aws_pinpoint_adm_channel": awsPinpointAdmChannel, + "aws_pinpoint_apns_channel": awsPinpointApnsChannel, + "aws_pinpoint_apns_sandbox_channel": awsPinpointApnsSandboxChannel, + "aws_pinpoint_apns_voip_channel": awsPinpointApnsVoipChannel, + "aws_pinpoint_apns_voip_sandbox_channel": awsPinpointApnsVoipSandboxChannel, + "aws_pinpoint_app": awsPinpointApp, + "aws_pinpoint_baidu_channel": awsPinpointBaiduChannel, + "aws_pinpoint_email_channel": awsPinpointEmailChannel, + "aws_pinpoint_email_template": awsPinpointEmailTemplate, + "aws_pinpoint_event_stream": awsPinpointEventStream, + "aws_pinpoint_gcm_channel": awsPinpointGcmChannel, + "aws_pinpoint_sms_channel": awsPinpointSmsChannel, + "aws_pinpointsmsvoicev2_configuration_set": awsPinpointsmsvoicev2ConfigurationSet, + "aws_pinpointsmsvoicev2_opt_out_list": awsPinpointsmsvoicev2OptOutList, + "aws_pinpointsmsvoicev2_phone_number": awsPinpointsmsvoicev2PhoneNumber, + "aws_pipes_pipe": awsPipesPipe, + "aws_placement_group": awsPlacementGroup, + "aws_prometheus_alert_manager_definition": awsPrometheusAlertManagerDefinition, + "aws_prometheus_rule_group_namespace": awsPrometheusRuleGroupNamespace, + "aws_prometheus_scraper": awsPrometheusScraper, + "aws_prometheus_workspace": awsPrometheusWorkspace, + "aws_proxy_protocol_policy": awsProxyProtocolPolicy, + "aws_qldb_ledger": awsQlbdLedger, + "aws_qldb_stream": awsQldbStream, + "aws_quicksight_account_subscription": awsQuicksightAccountSubscription, + "aws_quicksight_analysis": awsQuicksightAnalysis, + "aws_quicksight_dashboard": awsQuicksightDashboard, + "aws_quicksight_data_set": awsQuicksightDataSet, + "aws_quicksight_data_source": awsQuicksightDataSource, + "aws_quicksight_folder": awsQuicksightFolder, + "aws_quicksight_folder_membership": awsQuicksightFolderMembership, + "aws_quicksight_group": awsQuicksightGroup, + "aws_quicksight_group_membership": awsQuicksightGroupMembership, + "aws_quicksight_iam_policy_assignment": awsQuicksightIamPolicyAssignment, + "aws_quicksight_ingestion": awsQuicksightIngestion, + "aws_quicksight_namespace": awsQuicksightNamespace, + "aws_quicksight_refresh_schedule": awsQuicksightRefreshSchedule, + "aws_quicksight_template": awsQuicksightTemplate, + "aws_quicksight_template_alias": awsQuicksightTemplateAlias, + "aws_quicksight_theme": awsQuicksightTheme, + "aws_quicksight_user": awsQuicksightUser, + "aws_quicksight_vpc_connection": awsQuicksightVpcConnection, + "aws_ram_principal_association": awsRAMPrincipleAssociation, + "aws_ram_resource_association": awsRAMResourceAssociation, + "aws_ram_resource_share": awsRAMResourceShare, + "aws_ram_resource_share_accepter": awsRamResourceShareAccepter, + "aws_ram_sharing_with_organization": awsRamSharingWithOrganization, + "aws_rbin_rule": awsRbinRule, + "aws_rds_certificate": awsRdsCertificate, + "aws_rds_cluster": awsRdsCluster, + "aws_rds_cluster_activity_stream": awsRdsClusterActivityStream, + "aws_rds_cluster_endpoint": awsRdsClusterEndpoint, + "aws_rds_cluster_instance": awsDBInstance, + "aws_rds_cluster_parameter_group": awsRdsClusterParameterGroup, + "aws_rds_cluster_role_association": awsRdsClusterRoleAssociation, + "aws_rds_cluster_snapshot_copy": awsRdsClusterSnapshotCopy, + "aws_rds_custom_db_engine_version": awsRdsCustomDBEngineVersion, + "aws_rds_export_task": awsRdsExportTask, + "aws_rds_global_cluster": awsRdsGlobalCluster, + "aws_rds_instance_state": awsRdsInstanceState, + "aws_rds_integration": awsRdsIntegration, + "aws_rds_reserved_instance": awsRdsReservedInstance, + "aws_redshift_authentication_profile": awsRedshiftAuthenticationProfile, + "aws_redshift_cluster": awsRedshiftCluster, + "aws_redshift_cluster_iam_roles": awsRedshiftClusterIamRoles, + "aws_redshift_cluster_snapshot": awsRedshiftClusterSnapshot, + "aws_redshift_data_share_authorization": awsRedshiftDataShareAuthorization, + "aws_redshift_data_share_consumer_association": awsRedshiftDataShareConsumerAssociation, + "aws_redshift_endpoint_access": awsRedshiftEndpointAccess, + "aws_redshift_endpoint_authorization": awsRedshiftEndpointAuthorization, + "aws_redshift_event_subscription": awsRedshiftEventSubscription, + "aws_redshift_hsm_client_certificate": awsRedshiftHsmClientCertififcate, + "aws_redshift_hsm_configuration": awsRedshiftHsmConfiguration, + "aws_redshift_logging": awsRedshiftLogging, + "aws_redshift_parameter_group": awsRedshiftParameterGroup, + "aws_redshift_partner": awsRedshiftPartner, + "aws_redshift_resource_policy": awsRedshiftResourcePolicy, + "aws_redshift_scheduled_action": awsRedshiftScheduledAction, + "aws_redshift_snapshot_copy": awsRedshiftSnapshotCopy, + "aws_redshift_snapshot_copy_grant": awsRedshiftSnapshotCopyGrant, + "aws_redshift_snapshot_schedule": awsRedshiftSnapshotSchedule, + "aws_redshift_snapshot_schedule_association": awsRedshiftSnapshotScheduleAssociation, + "aws_redshift_subnet_group": awsRedshiftSubnetGroup, + "aws_redshift_usage_limit": awsRedshiftUsageLimit, + "aws_redshiftdata_statement": awsRedshiftdataStatement, + "aws_redshiftserverless_custom_domain_association": awsRedshiftserverlessCustomDomainAssociation, + "aws_redshiftserverless_endpoint_access": awsRedshiftserverlessEndpointAccess, + "aws_redshiftserverless_namespace": awsRedshiftserverlessNamespace, + "aws_redshiftserverless_resource_policy": awsRedshiftserverlessResourcePolicy, + "aws_redshiftserverless_snapshot": awsRedshiftserverlessSnapshot, + "aws_redshiftserverless_usage_limit": awsRedshiftserverlessUsageLimit, + "aws_redshiftserverless_workgroup": awsRedshiftserverlessWorkgroup, + "aws_rekognition_collection": awsRekognitionCollection, + "aws_rekognition_project": awsRekognitionProject, + "aws_rekognition_stream_processor": awsRekognitionStreamProcessor, + "aws_resiliencehub_resiliency_policy": awsResilienceResiliencePolicy, + "aws_resourceexplorer2_index": awsResourceexplorer2Index, + "aws_resourceexplorer2_view": awsResourceexplorer2View, + "aws_resourcegroups_group": awsResourcegroupsGroup, + "aws_resourcegroups_resource": awsResourcegroupsResource, + "aws_rolesanywhere_profile": awsRolesanywhereProfile, + "aws_rolesanywhere_trust_anchor": awsRolesanywhereTrustAnchor, + "aws_route": awsRoute, + "aws_route53_cidr_collection": awsRoute53CidrCollection, + "aws_route53_cidr_location": awsRoute53CidrLocation, + "aws_route53_delegation_set": awsRoute53DelegationSet, + "aws_route53_health_check": awsRoute53HealthCheck, + "aws_route53_hosted_zone_dnssec": awsRoute53HostedZoneDnssec, + "aws_route53_key_signing_key": awsRoute53KeySiginingKey, + "aws_route53_query_log": awsRoute53QueryLog, + "aws_route53_record": awsRoute53Record, + "aws_route53_resolver_config": awsRoute53ResolverConfig, + "aws_route53_resolver_dnssec_config": awsRoute53ResolverDnssecConfig, + "aws_route53_resolver_endpoint": awsRoute53ResolverEndpoint, + "aws_route53_resolver_firewall_config": awsRoute53ResolverFirewallConfig, + "aws_route53_resolver_firewall_domain_list": awsRoute53ResolverFirewallDomainList, + "aws_route53_resolver_firewall_rule": awsRoute53ResolverFirewallRule, + "aws_route53_resolver_firewall_rule_group": awsRoute53ResolverFirewallRuleGroup, + "aws_route53_resolver_firewall_rule_group_association": awsRoute53ResolverFirewallRuleGroupAssociation, + "aws_route53_resolver_query_log_config": awsRoute53ResolverQueryLogConfig, + "aws_route53_resolver_query_log_config_association": awsRoute53ResolverQueryLogConfigAssociation, + "aws_route53_resolver_rule": awsRoute53ResolverRule, + "aws_route53_resolver_rule_association": awsRoute53ResolverRuleAssociation, + "aws_route53_traffic_policy": awsRoute53TrafficPolicy, + "aws_route53_traffic_policy_instance": awsRoute53TrafficPolicyInstance, + "aws_route53_vpc_association_authorization": awsRoute53VpcAssociationAuthorization, + "aws_route53_zone": awsRoute53Zone, + "aws_route53_zone_association": awsRoute53ZoneAssociation, + "aws_route53domains_delegation_signer_record": awsRoute53DomainsDelegationSignerRecord, + "aws_route53domains_domain": awsRoute53DomainsDomain, + "aws_route53domains_registered_domain": awsRoute53DomainsRegisteredDomain, + "aws_route53profiles_association": awsRoute53profilesAssociation, + "aws_route53profiles_profile": awsRoute53profilesProfile, + "aws_route53profiles_resource_association": awsRoute53profilesResourceAssociation, + "aws_route53recoverycontrolconfig_cluster": awsRoute53recoverycontrolconfigCluster, + "aws_route53recoverycontrolconfig_control_panel": awsRoute53recoverycontrolconfigControlPanel, + "aws_route53recoverycontrolconfig_routing_control": awsRoute53recoverycontrolconfigRoutingControl, + "aws_route53recoverycontrolconfig_safety_rule": awsRoute53recoverycontrolconfigSafetyRule, + "aws_route53recoveryreadiness_cell": awsRoute53recoveryreadinessCell, + "aws_route53recoveryreadiness_readiness_check": awsRoute53recoveryreadinessReadinessCheck, + "aws_route53recoveryreadiness_recovery_group": awsRoute53recoveryreadinessRecoveryGroup, + "aws_route53recoveryreadiness_resource_set": awsRoute53recoveryreadinessResourceSet, + "aws_route_table": awsRouteTable, + "aws_route_table_association": awsRouteTableAssociation, + "aws_rum_app_monitor": awsRumAppMonitor, + "aws_rum_metrics_destination": awsRumMetricsDestination, + "aws_s3_access_point": awsS3AccessPoint, + "aws_s3_account_public_access_block": awsS3AccountPublicAccessBlock, + "aws_s3_bucket": awsS3Bucket, + "aws_s3_bucket_accelerate_configuration": awsS3BucketAccelerateConfiguration, + "aws_s3_bucket_acl": awsS3BucketACL, + "aws_s3_bucket_analytics_configuration": awsS3BucketAnalyticsConfiguration, + "aws_s3_bucket_cors_configuration": awsS3BucketCorsConfiguration, + "aws_s3_bucket_intelligent_tiering_configuration": awsS3BucketIntelligentTieringConfiguration, + "aws_s3_bucket_inventory": awsS3BucketInventory, + "aws_s3_bucket_lifecycle_configuration": awsS3BucketLifecycleConfiguration, + "aws_s3_bucket_logging": awsS3BucketLogging, + "aws_s3_bucket_metric": awsS3BucketMetric, + "aws_s3_bucket_notification": awsS3BucketNotification, + "aws_s3_bucket_object": awsS3Object, + "aws_s3_bucket_object_lock_configuration": awsS3BucketObjectLockCOnfiguration, + "aws_s3_bucket_ownership_controls": awsS3BucketOwnershipControls, + "aws_s3_bucket_policy": awsS3BucketPolicy, + "aws_s3_bucket_public_access_block": awsS3BucketPublicAccessBlock, + "aws_s3_bucket_replication_configuration": awsS3BucketReplicationConfiguration, + "aws_s3_bucket_request_payment_configuration": awsS3BucketRequestPaymentConfiguration, + "aws_s3_bucket_server_side_encryption_configuration": awsS3BucketServerSideEncryptionConfiguration, + "aws_s3_bucket_versioning": awsS3BucketVersioning, + "aws_s3_bucket_website_configuration": awsS3BucketWebsiteConfiguration, + "aws_s3_directory_bucket": awsS3DirectoryBucket, + "aws_s3_object": awsS3Object, + "aws_s3_object_copy": awsS3ObjectCopy, + "aws_s3control_access_grant": awsS3controlAccessGrant, + "aws_s3control_access_grants_instance": awsS3controlAccessGrantInstance, + "aws_s3control_access_grants_instance_resource_policy": awsS3controlAccessGrantInstanceResourcePolicy, + "aws_s3control_access_grants_location": awsS3controlAccessGrantLocation, + "aws_s3control_access_point_policy": awsS3controlAccessPointPolicy, + "aws_s3control_bucket": awsS3ControlBucket, + "aws_s3control_bucket_lifecycle_configuration": awsS3ControlBucketLifecycleAssociation, + "aws_s3control_bucket_policy": awsS3ControlBucketPolicy, + "aws_s3control_multi_region_access_point": awscontrolMultiRegionAccessPoint, + "aws_s3control_multi_region_access_point_policy": awscontrolMultiRegionAccessPointPolicy, + "aws_s3control_object_lambda_access_point": awsS3ControlObjectLambdaAccessPoint, + "aws_s3control_object_lambda_access_point_policy": awsS3ControlObjectLambdaAccessPointPolicy, + "aws_s3control_storage_lens_configuration": awsS3ControlStorageLensConfiguration, + "aws_s3outposts_endpoint": awsS3outpostsEndpoint, + "aws_s3tables_namespace": awsS3tablesNamespace, + "aws_s3tables_table": awsS3tablesTable, + "aws_s3tables_table_bucket": awsS3tablesTableBucket, + "aws_s3tables_table_bucket_policy": awsS3tablesTableBucketPolicy, + "aws_s3tables_table_policy": awsS3tablesTablePolicy, + "aws_sagemaker_app": awsSagemakerApp, + "aws_sagemaker_app_image_config": awsSagemakerAppImageConfig, + "aws_sagemaker_code_repository": awsSagemakerCodeRepository, + "aws_sagemaker_data_quality_job_definition": awsSagemakerDataQualityJobDefinition, + "aws_sagemaker_device": awsSagemakerDevice, + "aws_sagemaker_device_fleet": awsSagemakerDeviceFleet, + "aws_sagemaker_domain": awsSagemakerDomain, + "aws_sagemaker_endpoint": awsSagemakerEndpoint, + "aws_sagemaker_endpoint_configuration": awsSagemakerEndpointConfiguration, + "aws_sagemaker_feature_group": awsSagemakerFeatureGroup, + "aws_sagemaker_flow_definition": awsSagemakerFlowDefinition, + "aws_sagemaker_hub": awsSagemakerHub, + "aws_sagemaker_human_task_ui": awsSagemakerHumanTaskUI, + "aws_sagemaker_image": awsSagemakerImage, + "aws_sagemaker_image_version": awsSagemakerImageVersion, + "aws_sagemaker_mlflow_tracking_server": awsSagemakerMlflowTrackingServer, + "aws_sagemaker_model": awsSagemakerModel, + "aws_sagemaker_model_package_group": awsSagemakerModelPackageGroup, + "aws_sagemaker_model_package_group_policy": awsSagemakerModelPackageGroupPolicy, + "aws_sagemaker_monitoring_schedule": awsSagemakerMonitoringSchedule, + "aws_sagemaker_notebook_instance": awsSagemakerNotebookInstance, + "aws_sagemaker_notebook_instance_lifecycle_configuration": awsSagemakerNotebookInstanceLifecycleConfiguration, + "aws_sagemaker_pipeline": awsSagemakerPipeline, + "aws_sagemaker_project": awsSagemakerProject, + "aws_sagemaker_servicecatalog_portfolio_status": awsSagemakerServicecatalogPortfolioStatus, + "aws_sagemaker_space": awsSagemakerSpace, + "aws_sagemaker_studio_lifecycle_config": awsSagemakerStudioLifecycleConfig, + "aws_sagemaker_user_profile": awsSagemakerUserProfile, + "aws_sagemaker_workforce": awsSagemakerWorkforce, + "aws_sagemaker_workteam": awsSagemakerWorkteam, + "aws_scheduler_schedule": awsSchedulerSchedule, + "aws_scheduler_schedule_group": awsSchedulerScheduleGroup, + "aws_schemas_discoverer": awsSchemasDiscoverer, + "aws_schemas_registry": awsSchemasRegistry, + "aws_schemas_registry_policy": awsSchemasRegistryPolicy, + "aws_schemas_schema": awsSchemasSchema, + "aws_secretsmanager_secret": awsSecretsmanagerSecret, + "aws_secretsmanager_secret_policy": awsSecretsmanagerSecretPolicy, + "aws_secretsmanager_secret_rotation": awsSecretsmanagerSecretRotation, + "aws_secretsmanager_secret_version": awsSecretsmanagerSecretVersion, + "aws_security_group": awsSecurityGroup, + "aws_security_group_rule": awsSecurityGroupRule, + "aws_securityhub_account": awsSecurityhubAccount, + "aws_securityhub_action_target": awsSecurityhubActionTarget, + "aws_securityhub_automation_rule": awsSecurityhubAutomationRule, + "aws_securityhub_configuration_policy": awsSecurityhubConfigurationPolicy, + "aws_securityhub_configuration_policy_association": awsSecurityhubConfigurationPolicyAssociation, + "aws_securityhub_finding_aggregator": awsSecurityhubFindingAggregator, + "aws_securityhub_insight": awsSecurityhubInsight, + "aws_securityhub_invite_accepter": awsSecurityHubInviteAccepter, + "aws_securityhub_member": awsSecurityhubMember, + "aws_securityhub_organization_admin_account": awsSecurityhubOrganizationAdminAccount, + "aws_securityhub_organization_configuration": awsSecurityhubOrganizationConfiguration, + "aws_securityhub_product_subscription": awsSecurityhubProductSubscription, + "aws_securityhub_standards_control": awsSecurityhubStandardsControl, + "aws_securityhub_standards_control_association": awsSecurityhubStandardsControlAssociation, + "aws_securityhub_standards_subscription": awsSecurityhubStandardsSubscription, + "aws_securitylake_aws_log_source": awsSecuritylakeAwsLogSource, + "aws_securitylake_custom_log_source": awsSecuritylakeCustomLogSource, + "aws_securitylake_data_lake": awsSecuritylakeDataLake, + "aws_securitylake_subscriber": awsSecuritylakeSubscriber, + "aws_securitylake_subscriber_notification": awsSecuritylakeSubscriberNotification, + "aws_serverlessapplicationrepository_cloudformation_stack": awsServerlessapplicationrepositoryCloudformationStack, + "aws_service_discovery_http_namespace": awsServiceDiscoveryHttpNamespace, + "aws_service_discovery_instance": awsServiceDiscoveryInstance, + "aws_service_discovery_private_dns_namespace": awsServiceDiscoveryPrivateDNSNamespace, + "aws_service_discovery_public_dns_namespace": awsServiceDiscoveryPublicDNSNamespace, + "aws_service_discovery_service": awsServiceDiscoveryService, + "aws_servicecatalog_budget_resource_association": awsServicecatalogBudgetResourceAssociation, + "aws_servicecatalog_constraint": awsServicecatalogConstraint, + "aws_servicecatalog_organizations_access": awsServicecatalogOrganizationAccess, + "aws_servicecatalog_portfolio": awsServicecatalogPortfolio, + "aws_servicecatalog_portfolio_share": awsServicecatalogPortfolioShare, + "aws_servicecatalog_principal_portfolio_association": awsServicecatalogPrincipalPortfolioAssociation, + "aws_servicecatalog_product": awsServicecatalogProduct, + "aws_servicecatalog_product_portfolio_association": awsServicecatalogProductPortfolioAssociation, + "aws_servicecatalog_provisioned_product": awsServicecatalogProvisionedProduct, + "aws_servicecatalog_provisioning_artifact": awsServiceCatalogProvisioningArtifact, + "aws_servicecatalog_service_action": awsServicecatalogServiceAction, + "aws_servicecatalog_tag_option": awsServicecatalogTagOption, + "aws_servicecatalog_tag_option_resource_association": awsServicecatalogTagOptionResourceAssociation, + "aws_servicecatalogappregistry_application": awsServicecatalogappregistryApplication, + "aws_servicecatalogappregistry_attribute_group": awsServicecatalogappregistryAttributeGroup, + "aws_servicecatalogappregistry_attribute_group_association": awsServicecatalogappregistryAttributeGroupAssociation, + "aws_servicequotas_service_quota": awsServicequotasServiceQuota, + "aws_servicequotas_template": awsServiceQuotasTemplate, + "aws_servicequotas_template_association": awsServiceQuotasTemplateAssociation, + "aws_ses_active_receipt_rule_set": awsSesActiveReceiptRuleSet, + "aws_ses_configuration_set": awsSesConfigurationSet, + "aws_ses_domain_dkim": awsSesDomainDkim, + "aws_ses_domain_identity": awsSesDomainIdentity, + "aws_ses_domain_identity_verification": awsSesDomainIdentityVerification, + "aws_ses_domain_mail_from": awsSesDomainMailFrom, + "aws_ses_email_identity": awsSesEmailIdentity, + "aws_ses_event_destination": awsSesEventDestination, + "aws_ses_identity_notification_topic": awsSesIdentityNotificationTopic, + "aws_ses_identity_policy": awsSesIdentityPolicy, + "aws_ses_receipt_filter": awsSesReceiptFilter, + "aws_ses_receipt_rule": awsSesReceiptRule, + "aws_ses_receipt_rule_set": awsSesReceiptRuleSet, + "aws_ses_template": awsSesTemplate, + "aws_sesv2_account_suppression_attributes": awsSesv2AccountSuppressionAttributes, + "aws_sesv2_account_vdm_attributes": awsSesv2AccountVdmAttributes, + "aws_sesv2_configuration_set": awsSesv2ConfigurationSet, + "aws_sesv2_configuration_set_event_destination": awsSesv2ConfigurationSetEventDestination, + "aws_sesv2_contact_list": awsSesv2ContactList, + "aws_sesv2_dedicated_ip_assignment": awsSesv2DedicatedIPAssignment, + "aws_sesv2_dedicated_ip_pool": awsSesv2DedicatedIPPool, + "aws_sesv2_email_identity": awsSesv2EmailIdentity, + "aws_sesv2_email_identity_feedback_attributes": awsSesv2EmailIdentityFeedbackAttributes, + "aws_sesv2_email_identity_mail_from_attributes": awsSesv2EmailIdentityMailFromAttributes, + "aws_sesv2_email_identity_policy": awsSesv2EmailIdentityPolicy, + "aws_sfn_activity": awsSfnActivity, + "aws_sfn_alias": awsSfnAlias, + "aws_sfn_state_machine": awsSfnStateMachine, + "aws_shield_application_layer_automatic_response": awsShieldApplicationLayerAutomaticsResponse, + "aws_shield_drt_access_log_bucket_association": awsShieldDrtAccessLogBucketAssociation, + "aws_shield_drt_access_role_arn_association": awsShieldDrtAccessRoleArnAssociation, + "aws_shield_proactive_engagement": awsShieldProactiveEngagement, + "aws_shield_protection": awsShieldProtection, + "aws_shield_protection_group": awsShieldProtectionGroup, + "aws_shield_protection_health_check_association": awsShieldProtectionHealthCheckAssociation, + "aws_shield_subscription": awsShieldSubscription, + "aws_signer_signing_job": awsSignerSigningJob, + "aws_signer_signing_profile": awsSignerSigningProfile, + "aws_signer_signing_profile_permission": awsSignerSigningProfilePermission, + "aws_simpledb_domain": awsSimpledbDomain, + "aws_snapshot_create_volume_permission": awsSnapshotCreateVolumePermission, + "aws_sns_platform_application": awsSnsPlatformApplication, + "aws_sns_sms_preferences": awsSnsSmsPreferences, + "aws_sns_topic": awsSnsTopic, + "aws_sns_topic_data_protection_policy": awsSnsTopicDataProtection, + "aws_sns_topic_policy": awsSnsTopicPolicy, + "aws_sns_topic_subscription": awsSnsTopicSubscription, + "aws_spot_datafeed_subscription": awsSpotDatafeedSubscription, + "aws_spot_fleet_request": awsSpotFleetRequest, + "aws_spot_instance_request": awsSpotInstanceRequest, + "aws_sqs_queue": awsSqsQueue, + "aws_sqs_queue_policy": awsSqsQueuePolicy, + "aws_sqs_queue_redrive_allow_policy": awsSqsQueueRedriveAllowPolicy, + "aws_sqs_queue_redrive_policy": awsSqsQueueRedrivePolicy, + "aws_ssm_activation": awsSsmActivation, + "aws_ssm_association": awsSsmAssociation, + "aws_ssm_default_patch_baseline": awsSsmDefaultPatchBaseline, + "aws_ssm_document": awsSsmDocument, + "aws_ssm_maintenance_window": awsSsmMaintenanceWindow, + "aws_ssm_maintenance_window_target": awsSsmMaintenanceWindowTarget, + "aws_ssm_maintenance_window_task": awsSsmMaintenanceWindowTask, + "aws_ssm_parameter": awsSsmParameter, + "aws_ssm_patch_baseline": awsSsmPatchBaseline, + "aws_ssm_patch_group": awsSsmPatchGroup, + "aws_ssm_resource_data_sync": awsSsmResourceDataSync, + "aws_ssm_service_setting": awsSsmServiceSetting, + "aws_ssmcontacts_contact": awsSsmcontactsContact, + "aws_ssmcontacts_contact_channel": awsSsmcontactContactChannel, + "aws_ssmcontacts_plan": awsSsmcontactsPlan, + "aws_ssmcontacts_rotation": awsSsmcontactsRotation, + "aws_ssmincidents_replication_set": awsSsmincidentsReplicationSet, + "aws_ssmincidents_response_plan": awsSsmincidentsResponsePlan, + "aws_ssmquicksetup_configuration_manager": awsSsmquicksetupConfigurationManager, + "aws_ssoadmin_account_assignment": awsSsoadminAccountAssignment, + "aws_ssoadmin_application": awsSsoadminApplication, + "aws_ssoadmin_application_access_scope": awsSsoadminApplicationAccessScope, + "aws_ssoadmin_application_assignment": awsSsoadminApplicationAssignment, + "aws_ssoadmin_application_assignment_configuration": awsSsoadminApplicationAssignmentConfiguration, + "aws_ssoadmin_customer_managed_policy_attachment": awsSsoadminCustomerManagedPolicyAttachment, + "aws_ssoadmin_instance_access_control_attributes": awsSsoadminInstanceAccessControlAttributes, + "aws_ssoadmin_managed_policy_attachment": awsSsoadminManagedPolicyAttachment, + "aws_ssoadmin_permission_set": awsSsoadminPermissionSet, + "aws_ssoadmin_permission_set_inline_policy": awsSsoadminPermissionSetInlinePolicy, + "aws_ssoadmin_permissions_boundary_attachment": awsSsoadminPermissionsBoundaryAttachment, + "aws_ssoadmin_trusted_token_issuer": awsSsoadminTrustedTokenIssuer, + "aws_storagegateway_cache": awsStoragegatewayCache, + "aws_storagegateway_cached_iscsi_volume": awsStoragegatewayCachedIscsiVolume, + "aws_storagegateway_file_system_association": awsStoragegatewayFileSystemAssociation, + "aws_storagegateway_gateway": awsStoragegatewayGateway, + "aws_storagegateway_nfs_file_share": awsStoragegatewayNfsFileShare, + "aws_storagegateway_smb_file_share": awsStoragegatewaySmbFileShare, + "aws_storagegateway_stored_iscsi_volume": awsStoragegatewayStoredIscsiVolume, + "aws_storagegateway_tape_pool": awsStoragegatewayTapePool, + "aws_storagegateway_upload_buffer": awsStoragegatewayUploadBuffer, + "aws_storagegateway_working_storage": awsStoragegatewayWorkingStorage, + "aws_subnet": awsSubnet, + "aws_swf_domain": awsSwfDomain, + "aws_synthetics_canary": awsSyntheticsCanary, + "aws_synthetics_group": awsSyntheticsGroup, + "aws_synthetics_group_association": awsSyntheticsGroupAssociation, + "aws_timestreaminfluxdb_db_instance": awsTimestreamhubFindingAggregator, + "aws_timestreamquery_scheduled_query": awsTimestreamqueryScheduledQuery, + "aws_timestreamwrite_database": awsTimestreamwriteDatabase, + "aws_timestreamwrite_table": awsTimestreamwriteTable, + "aws_transcribe_language_model": awsTranscribeLanguageModel, + "aws_transcribe_medical_vocabulary": awsTranscribeMedicalVocabulary, + "aws_transcribe_vocabulary": awsTranscribeVocabulary, + "aws_transcribe_vocabulary_filter": awsTranscribeVocabularyFilter, + "aws_transfer_access": awsTransferAccess, + "aws_transfer_agreement": awsTransferAgreement, + "aws_transfer_certificate": awsTransferCertificate, + "aws_transfer_connector": awsTransferConnector, + "aws_transfer_profile": awsTransferProfile, + "aws_transfer_server": awsTransferServer, + "aws_transfer_ssh_key": awsTransferSSHKey, + "aws_transfer_tag": awsTransferTag, + "aws_transfer_user": awsTransferUser, + "aws_transfer_workflow": awsTransferWorkflow, + "aws_verifiedaccess_endpoint": awsVerifiedaccessEndpoint, + "aws_verifiedaccess_group": awsVerifiedaccessGroup, + "aws_verifiedaccess_instance": awsVerifiedaccessInstance, + "aws_verifiedaccess_instance_logging_configuration": awsVerifiedaccessInstanceLoggingConfiguration, + "aws_verifiedaccess_instance_trust_provider_attachment": awsVerifiedaccessInstanceTrustProviderAttachment, + "aws_verifiedaccess_trust_provider": awsVerifiedaccessTrustProvider, + "aws_verifiedpermissions_identity_source": awsVerifiedpermissionsIdentitySource, + "aws_verifiedpermissions_policy": awsVerifiedpermissionsPolicy, + "aws_verifiedpermissions_policy_store": awsVerifiedpermissionsPolicyStore, + "aws_verifiedpermissions_policy_template": awsVerifiedpermissionsPolicyTemplate, + "aws_verifiedpermissions_schema": awsVerifiedpermissionsSchema, + "aws_volume_attachment": awsVolumeAttachment, + "aws_vpc": awsVpc, + "aws_vpc_block_public_access_exclusion": awsVpcBlockPublicAccessExclusion, + "aws_vpc_block_public_access_options": awsVpcBlockPublicAccessOptions, + "aws_vpc_dhcp_options": awsVpcDhcpOptions, + "aws_vpc_dhcp_options_association": awsVpcDhcpOptionsAssociation, + "aws_vpc_endpoint": awsVpcEndpoint, + "aws_vpc_endpoint_connection_accepter": awsVpcEndpointConnectionAccepter, + "aws_vpc_endpoint_connection_notification": awsVpcEndpointConnectionNotification, + "aws_vpc_endpoint_policy": awsVpcEndpointPolicy, + "aws_vpc_endpoint_private_dns": awsVpcEndpointPrivateDns, + "aws_vpc_endpoint_route_table_association": awsVpcEndpointRouteTableAssociation, + "aws_vpc_endpoint_security_group_association": awsVpcEndpointSecurityGroupAssociation, + "aws_vpc_endpoint_service": awsVpcEndpointService, + "aws_vpc_endpoint_service_allowed_principal": awsVpcEndpointServiceAllowedPrincipal, + "aws_vpc_endpoint_service_private_dns_verification": awsVpcEndpointServicePrivateDnsVerification, + "aws_vpc_endpoint_subnet_association": awsVpcEndpointSubnetAssociation, + "aws_vpc_ipam": awsVpcIpam, + "aws_vpc_ipam_organization_admin_account": awsVpcIpamOrganizationAdminAccount, + "aws_vpc_ipam_pool": awsVpcIpamPool, + "aws_vpc_ipam_pool_cidr": awsVpcIpamPoolCidr, + "aws_vpc_ipam_pool_cidr_allocation": awsVpcIpamPoolCidrAllocation, + "aws_vpc_ipam_preview_next_cidr": awsVpcIpamPreviewNextCidr, + "aws_vpc_ipam_resource_discovery": awsVpcIpamResourceDiscovery, + "aws_vpc_ipam_resource_discovery_association": awsVpcIpamResourceDiscoveryAssociation, + "aws_vpc_ipam_scope": awsVpcIpamScope, + "aws_vpc_ipv4_cidr_block_association": awsVpcIpv4CidrBlockAssociation, + "aws_vpc_ipv6_cidr_block_association": awsVpcIpv6CidrBlockAssociation, + "aws_vpc_network_performance_metric_subscription": awsVpcNetworkPerformanceMetricSubscription, + "aws_vpc_peering_connection": awsVpcPeeringConnection, + "aws_vpc_peering_connection_accepter": awsVpcPeeringConnectionAccepter, + "aws_vpc_peering_connection_options": awsVpcPeeringConnectionOptions, + "aws_vpc_security_group_egress_rule": awsVpcSecurityGroupEgressRule, + "aws_vpc_security_group_ingress_rule": awsVpcSecurityGroupIngressRule, + "aws_vpc_security_group_vpc_association": awsVpcSecurityGroupAssociation, + "aws_vpclattice_access_log_subscription": awsVpclatticeAccesLogSubscription, + "aws_vpclattice_auth_policy": awsVpclatticeAuthPolicy, + "aws_vpclattice_listener": awsVpclatticeListener, + "aws_vpclattice_listener_rule": awsVpclatticeListernerRule, + "aws_vpclattice_resource_configuration": awsVpclatticeResourceConfiguration, + "aws_vpclattice_resource_gateway": awsVpclatticeResourceGateway, + "aws_vpclattice_resource_policy": awsVpclatticeResourcePolicy, + "aws_vpclattice_service": awsVpclatticeService, + "aws_vpclattice_service_network": awsVpclatticeServiceNetwork, + "aws_vpclattice_service_network_resource_association": awsVpclatticeServiceNetworkResourceAssociation, + "aws_vpclattice_service_network_service_association": awsVpclatticeServiceNetworkServiceAssocation, + "aws_vpclattice_service_network_vpc_association": awsVpclatticeServiceNetworkVpcAssociation, + "aws_vpclattice_target_group": awsVpclatticeTargetGroup, + "aws_vpclattice_target_group_attachment": awsVpclatticeTargetGroupAssociation, + "aws_vpn_connection": awsVpnConnection, + "aws_vpn_connection_route": awsVpnConnectionRoute, + "aws_vpn_gateway": awsVpnGateway, + "aws_vpn_gateway_attachment": awsVpnGatewayAttachment, + "aws_vpn_gateway_route_propagation": awsVpnGatewayRoutePropagation, + "aws_waf_byte_match_set": awsWafByteMatchSet, + "aws_waf_geo_match_set": awsWafGeoMatchSet, + "aws_waf_ipset": awsWafIpset, + "aws_waf_rate_based_rule": awsWafRateBasedRule, + "aws_waf_regex_match_set": awsWafRegexMatchSet, + "aws_waf_regex_pattern_set": awsWafRegexPatternSet, + "aws_waf_rule": awsWafRule, + "aws_waf_rule_group": awsWafRuleGroup, + "aws_waf_size_constraint_set": awsWafSizeConstraintSet, + "aws_waf_sql_injection_match_set": awsWafSQLInjectionMatchSet, + "aws_waf_web_acl": awsWafWebACL, + "aws_waf_xss_match_set": awsWafXSSNatchSet, + "aws_wafregional_byte_match_set": awsWafregionalByteMatchSet, + "aws_wafregional_geo_match_set": awsWafregionalGeoMatchSet, + "aws_wafregional_ipset": awsWafregionalIpset, + "aws_wafregional_rate_based_rule": awsWafregionalRateBasedRule, + "aws_wafregional_regex_match_set": awsWafregionalRegexMatchSet, + "aws_wafregional_regex_pattern_set": awsWafregionalRegexPatternSet, + "aws_wafregional_rule": awsWafregionalRule, + "aws_wafregional_rule_group": awsWafregionalRuleGroup, + "aws_wafregional_size_constraint_set": awsWafregionalSizeConstraintSet, + "aws_wafregional_sql_injection_match_set": awsWafregionalSQLInjectionMatchSet, + "aws_wafregional_web_acl": awsWafregionalWebACL, + "aws_wafregional_web_acl_association": awsWafregionalWebACLAssociation, + "aws_wafregional_xss_match_set": awsWafregionalXSSNatchSet, + "aws_wafv2_ip_set": awsWafv2IpSet, + "aws_wafv2_regex_pattern_set": awsWafv2RegexPatternSet, + "aws_wafv2_rule_group": awsWafv2RuleGroup, + "aws_wafv2_web_acl": awsWafv2WebACL, + "aws_wafv2_web_acl_association": awsWafv2WebACLAssociation, + "aws_wafv2_web_acl_logging_configuration": awsWafv2WebACLLoggingConfiguration, + "aws_worklink_fleet": placeholder, + "aws_worklink_website_certificate_authority_association": placeholder, + "aws_workspaces_connection_alias": awsWorkspacesConnectionAlias, + "aws_workspaces_directory": awsWorkspacesDirectory, + "aws_workspaces_ip_group": awsWorkspacesIPGroup, + "aws_workspaces_workspace": awsWorkspacesWorkspace, + "aws_xray_encryption_config": awsXrayEncryptionConfig, + "aws_xray_group": awsXrayGroup, + "aws_xray_sampling_rule": awsXraySamplingRule, + "backend": s3backend, + "aws_cloudwatch_contributor_insight_rule": awsCloudwatchContributorInsightRule, + "aws_cloudwatch_contributor_managed_insight_rule": awsCloudwatchContributorManagedInsightRule, + "aws_qbusiness_application": awsQbusinessApplication, + "aws_dataexchange_event_action": awsDataexchangeEventAction, + "aws_macie2_organization_configuration": awsMacie2OrganizationConfiguration, + "aws_neptunegraph_graph": awsNeptunegraphGraph, + "aws_quicksight_role_membership": awsQuicksightRoleMembership, + "aws_rds_shard_group": awsRdsShardGroup, + "aws_xray_resource_policy": awsXrayResourcePolicy, + "aws_lakeformation_opt_in": awsLakeformationOptIn, + "aws_network_interface_permission": awsNetworkInterfacePermission, + "aws_route53_records_exclusive": awsRoute53RecordsExclusive, + "aws_athena_capacity_reservation": awsAthenaCapacityReservation, + "aws_redshift_integration": awsRedshiftIntegration, + "aws_backup_restore_testing_plan": awsBackupRestoreTestingPlan, + "aws_ec2_default_credit_specification": awsEc2DefaultCreditSpecification, + "aws_bedrockagent_prompt": awsBedrockagentPrompt, + "aws_cloudfrontkeyvaluestore_keys_exclusive": awsCloudfrontkeyvaluestoreKeysExclusive, + "aws_dataexchange_revision_assets": awsDataexchangeRevisionAssets, + "aws_inspector2_filter": awsInspector2Filter, + "aws_wafv2_api_key": awsWafv2ApiKey, + "aws_notifications_channel_association": awsNotificationsChannelAssociation, + "aws_notifications_event_rule": awsNotificationsEventRule, + "aws_notifications_notification_configuration": awsNotificationsNotificationConfiguration, + "aws_notifications_notification_hub": awsNotificationsNotificationHub, + "aws_notificationscontacts_email_contact": awsNotificationscontactsEmailContact, + "aws_quicksight_account_settings": awsQuicksightAccountSettings, + "aws_workspacesweb_browser_settings": awsWorkspaceswebBrowserSettings, + "aws_workspacesweb_network_settings": awsWorkspaceswebNetworkSettings, + "aws_workspacesweb_user_settings": awsWorkspaceswebUserSettings, + "aws_dsql_cluster": awsDsqlCluster, + "aws_dsql_cluster_peering": awsDsqlClusterPeering, + "aws_lightsail_bucket_access_key": awsLightsailBucketAccessKey, + "aws_prometheus_workspace_configuration": awsPrometheusWorkspaceConfiguration, + "aws_s3control_directory_bucket_access_point_scope": awsS3controlDirectoryBucketAccessPointScope, + "aws_vpc_route_server": awsVpcRouteServer, + "aws_vpc_route_server_association": placeholder, + "aws_vpc_route_server_propagation": awsVpcRouteServerPropagation, + "aws_vpc_route_server_vpc_association": awsVpcRouteServerVpcAssociation, + "aws_workspacesweb_data_protection_settings": awsWorkspaceswebDataProtectionSettings, + "aws_workspacesweb_ip_access_settings": awsWorkspaceswebIpAccessSettings, + "aws_workspacesweb_user_access_logging_settings": awsWorkspaceswebUserAccessLoggingSettings, +} // GetAWSPermissions for AWS resources. func GetAWSPermissions(result ResourceV2) ([]string, error) { @@ -1107,7 +1561,6 @@ func GetAWSPermissions(result ResourceV2) ([]string, error) { case resource, terraform: { Permissions, err = GetAWSResourcePermissions(result) - if err != nil { return Permissions, &getAWSResourcePermissionsError{err} } @@ -1172,16 +1625,10 @@ func Contains(s []string, e string) bool { // GetPermissionMap Anonymous parsing. func GetPermissionMap(raw []byte, attributes []string, resource string) ([]string, error) { - if !json.Valid(raw) || len(raw) == 0 { return nil, &invalidJSONError{} } - //zero length is perfectly valid if no permissions required - //if len(attributes) == 0 { - // return nil, &zeroLengthAttributesError{resource} - //} - var mappings []interface{} err := json.Unmarshal(raw, &mappings) @@ -1194,7 +1641,6 @@ func GetPermissionMap(raw []byte, attributes []string, resource string) ([]strin } temp, err := IsTypeOK(mappings[0]) - if err != nil { return nil, err } @@ -1204,7 +1650,6 @@ func GetPermissionMap(raw []byte, attributes []string, resource string) ([]strin } resourceAttributes, err := IsTypeOK(temp["attributes"]) - if err != nil { return nil, &assertionFailedError{"temp[\"attributes\"]", err} } @@ -1214,16 +1659,23 @@ func GetPermissionMap(raw []byte, attributes []string, resource string) ([]strin for _, attribute := range attributes { if resourceAttributes[attribute] != nil { for _, entry := range resourceAttributes[attribute].([]interface{}) { + value, ok := entry.(string) + + if !ok { + log.Error().Msg("failed to cast to string") + + continue + } + found = append( found, - entry.(string), + value, ) } } } found, err = getActionPermissions(temp, found) - if err != nil { return found, fmt.Errorf("getActionPermissions: %w", err) } @@ -1238,10 +1690,17 @@ const ( destroy = "destroy" ) -func getActionPermissions(permissionMap map[string]interface{}, found []string) ([]string, error) { +type parameterNilError struct { + parameter string +} +func (m *parameterNilError) Error() string { + return fmt.Sprintf("%s was nil", m.parameter) +} + +func getActionPermissions(permissionMap map[string]interface{}, found []string) ([]string, error) { if permissionMap == nil { - return nil, fmt.Errorf("permissionMap was nil") + return nil, ¶meterNilError{parameter: "permissionMap"} } for _, action := range []string{apply, plan, modify, destroy} { @@ -1254,7 +1713,14 @@ func getActionPermissions(permissionMap map[string]interface{}, found []string) } for _, entry := range temp { - found = append(found, entry.(string)) + value, ok := entry.(string) + if !ok { + log.Error().Msg("failed to cast string") + + continue + } + + found = append(found, value) } } } diff --git a/src/aws_datasource.go b/src/aws_datasource.go index 3f40fce8..f4085bb1 100644 --- a/src/aws_datasource.go +++ b/src/aws_datasource.go @@ -2,6 +2,7 @@ package pike //goland:noinspection GoLinter var tFLookupDataAWS = map[string]interface{}{ + "backend": dataBackend, "aws_acm_certificate": dataAwsAcmCertificate, "aws_acmpca_certificate": dataAwsAcmpcaCertificate, "aws_acmpca_certificate_authority": dataAwsAcmpcaCertificateAuthority, @@ -10,6 +11,7 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_ami": dataAwsAmi, "aws_ami_ids": dataAwsAmiIDs, "aws_api_gateway_api_key": dataAwsAPIGateway, + "aws_api_gateway_api_keys": dataAwsAPIGateway, "aws_api_gateway_authorizer": dataAwsAPIGateway, "aws_api_gateway_authorizers": dataAwsAPIGateway, "aws_api_gateway_domain_name": dataAwsAPIGateway, @@ -18,6 +20,7 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_api_gateway_rest_api": dataAwsAPIGateway, "aws_api_gateway_sdk": dataAwsAPIGateway, "aws_api_gateway_vpc_link": dataAwsAPIGateway, + "aws_apigateway_api_keys": dataAwsAPIGateway, "aws_apigatewayv2_api": dataAwsAPIGateway, "aws_apigatewayv2_apis": dataAwsAPIGateway, "aws_apigatewayv2_export": dataAwsAPIGateway, @@ -83,7 +86,9 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_cloudfront_response_headers_policy": dataAwsCloudfrontResponseHeadersPolicy, "aws_cloudhsm_v2_cluster": dataAwsCloudhsmV2Cluster, "aws_cloudtrail_service_account": placeholder, + "aws_cloudwatch_contributor_managed_insight_rules": dataAwsCloudwatchContributorManagedInsightRules, "aws_cloudwatch_event_bus": dataCloudwatchEventBus, + "aws_cloudwatch_event_buses": dataAwsCloudwatchEventBuses, "aws_cloudwatch_event_connection": dataCloudwatchEventConnection, "aws_cloudwatch_event_source": dataCloudwatchEventSource, "aws_cloudwatch_log_data_protection_policy_document": placeholder, @@ -126,6 +131,7 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_customer_gateway": dataAwsCustomerGateway, "aws_datapipeline_pipeline": dataAwsDatapipelinePipeline, "aws_datapipeline_pipeline_definition": dataAwsDatapipelinePipelineDefinition, + "aws_datazone_domain": dataAwsDatazoneDomain, "aws_datazone_environment_blueprint": dataAwsDatazoneEnvironmentBlueprint, "aws_db_cluster_snapshot": dataAwsDBClusterSnapshot, "aws_db_event_categories": dataAwsDBEventCategories, @@ -211,6 +217,7 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_ecr_repository_creation_template": dataAwsEcrRepositoryCreationTemplate, "aws_ecrpublic_authorization_token": dataEcrpublicAuthorizationToken, "aws_ecs_cluster": dataAwsEcsCluster, + "aws_ecs_clusters": dataAwsEcsClusters, "aws_ecs_container_definition": dataAwsEcsContainerDefinition, "aws_ecs_service": dataDataEcsService, "aws_ecs_task_definition": dataAwsEcsTaskDefinition, @@ -226,6 +233,7 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_eks_addon_version": dataAwsEksAddonVersion, "aws_eks_cluster": dataAwsEksCluster, "aws_eks_cluster_auth": placeholder, + "aws_eks_cluster_versions": dataAwsEksClusterVersions, "aws_eks_clusters": dataAwsEksClusters, "aws_eks_node_group": dataAwsEksNodeGroup, "aws_eks_node_groups": dataAwsEksNodeGroups, @@ -277,8 +285,10 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_iam_user_ssh_key": dataAwsIamUserSSHKey, "aws_iam_users": dataAwsIamUsers, "aws_identitystore_group": dataAwsIdentitystoreGroup, + "aws_identitystore_group_memberships": dataAwsIdentitystoreGroupMembership, "aws_identitystore_groups": dataAwsIdentitystoreGroups, "aws_identitystore_user": dataAwsIdentitystoreUser, + "aws_identitystore_users": dataAwsIdentitystoreGroupUsers, "aws_imagebuilder_component": dataAwsImagebuilderComponent, "aws_imagebuilder_components": dataAwsImagebuilderComponets, "aws_imagebuilder_container_recipe": dataAwsImagebuilderContainerRecipe, @@ -327,6 +337,7 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_lb": dataAwsLb, "aws_lb_hosted_zone_id": placeholder, "aws_lb_listener": dataAwsLbListener, + "aws_lb_listener_rule": dataAwsLbListenerRule, "aws_lb_target_group": dataAwsLbTargetGroup, "aws_lb_trust_store": dataAwsLbTrustStore, "aws_lbs": dataAwsLbs, @@ -394,7 +405,7 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_organizations_organizational_unit": dataAwsOrganizationsOrganizationalUnit, "aws_organizations_organizational_unit_child_accounts": dataAwsOrganizationsOrganizationalUnitChildsAccounts, "aws_organizations_organizational_unit_descendant_accounts": dataAwsOrganizationsOrganizationalUnitDescendantAccounts, - "aws_organizations_organizational_unit_descendant_organizational_units": dataAwsOrganizationsOrganizationalUnitDescendantOrganizationalUnits, + "aws_organizations_organizational_unit_descendant_organizational_units": dataAwsOrganizationsOrganizationalUnitDescendantOrganizationalUnits, //nolint:lll "aws_organizations_organizational_units": dataAwsOrganizationsOrganizationalUnits, "aws_organizations_policies": dataAwsOrganizationsPolicies, "aws_organizations_policies_for_target": dataAwsOrganizationsPoliciesForTarget, @@ -445,11 +456,12 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_resourcegroupstaggingapi_resources": dataAwsResourcegroupstaggingapiResources, "aws_route": dataAwsRoute, "aws_route53_delegation_set": dataAwsRoute53DelegationSet, + "aws_route53_records": dataAwsRoute53Records, "aws_route53_resolver_endpoint": dataAwsRoute53ResolverEndpoint, "aws_route53_resolver_firewall_config": dataAwsRoute53ResolverFirewallConfig, "aws_route53_resolver_firewall_domain_list": dataAwsRoute53ResolverFirewallDomainList, "aws_route53_resolver_firewall_rule_group": dataAwsRoute53ResolverFirewallRuleGroup, - "aws_route53_resolver_firewall_rule_group_association": dataAwsRoute53ResolverFirewallGroupAssociation, + "aws_route53_resolver_firewall_rule_group_association": dataAwsRoute53ResolverFirewallGroupAssociation, //nolint:lll "aws_route53_resolver_firewall_rules": dataAwsRoute53ResolverFirewallRules, "aws_route53_resolver_query_log_config": dataAwsRoute53ResolverQueryLogConfig, "aws_route53_resolver_rule": dataAwsRoute53ResolverRule, @@ -479,7 +491,7 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_secretsmanager_secrets": dataAwsSecretsmanagerSecrets, "aws_security_group": dataAwsSecurityGroup, "aws_security_groups": dataAwsSecurityGroup, - "aws_serverlessapplicationrepository_application": dataAwsServerlessapplicationrepositoryApplication, + "aws_serverlessapplicationrepository_application": dataAwsServerlessapplicationrepositoryApplication, //nolint:lll "aws_service": placeholder, "aws_service_discovery_dns_namespace": dataAwsServiceDiscoveryDNSNamespace, "aws_service_discovery_http_namespace": dataAwsServiceDiscoveryHTTPNamespace, @@ -492,6 +504,8 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_servicecatalog_product": dataAwsSevicecatalogProduct, "aws_servicecatalog_provisioning_artifacts": dataAwsSevicecatalogProvisioningArtifacts, "aws_servicecatalogappregistry_application": dataAwsServicecatalogappregistryApplication, + "aws_servicecatalogappregistry_attribute_group": dataServicecatalogappregistryAttributeGroup, + "aws_servicecatalogappregistry_attribute_group_associations": dataServicecatalogappregistryAttributeGroupAssociations, //nolint:lll "aws_servicequotas_service": dataAwsServicequotasService, "aws_servicequotas_service_quota": dataAwsServicequotaServiceQuota, "aws_servicequotas_templates": dataAwsServicequotasTemplates, @@ -510,6 +524,7 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_signer_signing_job": dataAwsSignerSigningJob, "aws_signer_signing_profile": dataAwsSignerSigningProfile, "aws_sns_topic": dataAwsSnsTopic, + "aws_spot_datafeed_subscription": dataAwsSpotDatafeedSubscription, "aws_sqs_queue": dataAwsSqsQueue, "aws_sqs_queues": dataAwsSqsQueues, "aws_ssm_document": dataAwsSsmDocument, @@ -518,6 +533,7 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_ssm_parameter": dataAwsSsmParameter, "aws_ssm_parameters_by_path": dataAwsSsmParametersByPath, "aws_ssm_patch_baseline": dataAwsSsmPatchBaseline, + "aws_ssm_patch_baselines": dataAwsSsmPatchBaselines, "aws_ssmcontacts_contact": placeholder, "aws_ssmcontacts_contact_channel": placeholder, "aws_ssmcontacts_plan": placeholder, @@ -530,7 +546,7 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_ssoadmin_instances": dataAwsSsoadminInstances, "aws_ssoadmin_permission_set": dataAwsSsoadminPermissionSet, "aws_ssoadmin_permission_sets": dataAwsSsoadminPermissionSets, - "aws_ssoadmin_principal_application_assignments": dataAwsSsoadminPrincipalApplicationAssignments, + "aws_ssoadmin_principal_application_assignments": dataAwsSsoadminPrincipalApplicationAssignments, //nolint:lll "aws_storagegateway_local_disk": placeholder, "aws_subnet": dataAwsSubnetIDs, "aws_subnet_ids": dataAwsSubnetIDs, @@ -546,10 +562,12 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_vpc_dhcp_options": dataAwsVpcDhcpOptions, "aws_vpc_endpoint": dataAwsVpcEndpoint, "aws_vpc_endpoint_service": dataAwsVpcEndpointService, + "aws_vpc_ipam": dataAwsVpcIpam, "aws_vpc_ipam_pool": dataAwsVpcIpamPoolCidrs, "aws_vpc_ipam_pool_cidrs": dataAwsVpcIpamPoolCidrs, "aws_vpc_ipam_pools": dataAwsVpcIpamPools, "aws_vpc_ipam_preview_next_cidr": placeholder, + "aws_vpc_ipams": dataAwsVpcIpam, "aws_vpc_peering_connection": dataAwsVpcPeeringConnection, "aws_vpc_peering_connections": dataAwsVpcPeeringConnections, "aws_vpc_security_group_rule": dataAwsVpcSecurityGroupRule, @@ -576,11 +594,50 @@ var tFLookupDataAWS = map[string]interface{}{ "aws_workspaces_bundle": dataAwsWorkspacesBundle, "aws_workspaces_directory": dataAwsWorkspaceDirectory, "aws_workspaces_image": dataAwsWorkspaceImage, - "aws_ssm_patch_baselines": dataAwsSsmPatchBaselines, - "aws_lb_listener_rule": dataAwsLbListenerRule, - "aws_spot_datafeed_subscription": dataAwsSpotDatafeedSubscription, - "aws_servicecatalogappregistry_attribute_group": dataServicecatalogappregistryAttributeGroup, - "aws_servicecatalogappregistry_attribute_group_associations": dataServicecatalogappregistryAttributeGroupAssociations, + "aws_vpc_endpoint_associations": dataAwsVpcEndpointAssociations, + "aws_fis_experiment_templates": dataAwsFisExperimentTemplates, + "aws_kms_public_key": dataAwsKmsPublicKey, + "aws_lambda_function_url": dataAwsLambdaFunctionUrl, + "aws_lambda_functions": dataAwsLambdaFunctions, + "aws_lambda_layer_version": dataAwsLambdaLayerVersion, + "aws_network_interface": dataAwsNetworkInterface, + "aws_waf_subscribed_rule_group": dataAwsWafSubscribedRuleGroup, + "aws_wafregional_subscribed_rule_group": dataAwsWafRegionalSubscribedRuleGroup, + "aws_elb": dataAwsElb, + "aws_account_primary_contact": dataAwsAccountPrimaryContact, + "aws_dynamodb_tables": dataAwsDynamodbTables, + "aws_ecr_images": dataAwsEcrImages, + "aws_s3_access_point": dataAwsS3AccessPoint, + "aws_billing_views": dataAwsBillingViews, + "aws_media_convert_queue": dataAwsMediaConvertQueue, + "aws_memorydb_acl": dataAwsMemorydbAcl, + "aws_memorydb_cluster": dataAwsMemorydbCluster, + "aws_memorydb_parameter_group": dataAwsMemorydbParameterGroup, + "aws_memorydb_snapshot": dataAwsMemorydbSnapshot, + "aws_memorydb_subnet_group": dataAwsMemorydbSubnetGroup, + "aws_memorydb_user": dataAwsMemorydbUser, + "aws_securityhub_standards_control_associations": dataAwsSecurityhubStandardsControlAssociations, + "aws_workspaces_workspace": dataAwsWorkspacesWorkspace, + "aws_appconfig_application": dataAwsAppconfigApplication, + "aws_odb_cloud_autonomous_vm_cluster": dataAwsOdbCloudAutonomousVmCluster, + "aws_odb_cloud_autonomous_vm_clusters": dataAwsOdbCloudAutonomousVmClusters, + "aws_odb_cloud_exadata_infrastructure": dataAwsOdbCloudExadataInfrastructure, + "aws_odb_cloud_exadata_infrastructures": dataAwsOdbCloudExadataInfrastructures, + "aws_odb_cloud_vm_cluster": dataAwsOdbCloudVmCluster, + "aws_odb_cloud_vm_clusters": dataAwsOdbCloudVmClusters, + "aws_odb_db_node": dataAwsOdbDbNode, + "aws_odb_db_nodes": dataAwsOdbDbNodes, + "aws_odb_db_server": dataAwsOdbServer, + "aws_odb_db_servers": dataAwsOdbServers, + "aws_odb_db_system_shapes": dataAwsOdbDbSystemShapes, + "aws_odb_gi_versions": dataAwsOdbGiVersions, + "aws_odb_network": dataAwsOdbNetwork, + "aws_odb_network_peering_connection": dataAwsOdbNetworkPeeringConnection, + "aws_odb_network_peering_connections": dataAwsOdbNetworkPeeringConnections, + "aws_odb_networks": dataAwsOdbNetworks, + "aws_ecrpublic_images": dataAwsEcrPublicImages, + "aws_rds_global_cluster": dataAwsRdsGlobalCluster, + "aws_vpn_connection": dataAwsVpnConnection, } // GetAWSDataPermissions gets permissions required for datasource's. @@ -601,7 +658,7 @@ func GetAWSDataPermissions(result ResourceV2) ([]string, error) { return Permissions, err } -// AwsDataLookup is a map to connect resource name to an object map +// AwsDataLookup is a map to connect resource name to an object map. func AwsDataLookup(find string) interface{} { return tFLookupDataAWS[find] } diff --git a/src/aws_test.go b/src/aws_test.go index e04a38f3..ff1f1411 100644 --- a/src/aws_test.go +++ b/src/aws_test.go @@ -145,7 +145,8 @@ func TestGetAWSPermissions(t *testing.T) { "s3:GetEncryptionConfiguration", "s3:GetBucketRequestPayment", "s3:GetBucketCORS", - "s3:DeleteBucket"}, + "s3:DeleteBucket", + }, wantErr: false, }, { @@ -266,7 +267,8 @@ func TestGetAWSResourcePermissions(t *testing.T) { "s3:GetEncryptionConfiguration", "s3:GetBucketRequestPayment", "s3:GetBucketCORS", - "s3:DeleteBucket"}, + "s3:DeleteBucket", + }, wantErr: false, }, { @@ -509,6 +511,7 @@ func TestAwsLookup(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + t.Parallel() result := pike.AwsLookup(tt.resourceName) if tt.expectNil && result != nil { diff --git a/src/azure_datasource.go b/src/azure_datasource.go index 18b1cc3f..03d791e0 100644 --- a/src/azure_datasource.go +++ b/src/azure_datasource.go @@ -19,7 +19,7 @@ func GetAZUREDataPermissions(result ResourceV2) ([]string, error) { } func AzureDataLookup(name string) interface{} { - var TFLookupAzureData = map[string]interface{}{ + TFLookupAzureData := map[string]interface{}{ "azurerm_app_service": dataAzurermAppService, "azurerm_app_service_certificate": dataAzurermAppServiceCertificate, "azurerm_app_service_certificate_order": dataAzurermAppServiceCertificateOrder, diff --git a/src/azure_datasource_test.go b/src/azure_datasource_test.go index 00817595..1d19b54d 100644 --- a/src/azure_datasource_test.go +++ b/src/azure_datasource_test.go @@ -20,16 +20,26 @@ func TestGetAZUREDataPermissions(t *testing.T) { want []string wantErr bool }{ - {name: "pass", args: args{ - result: pike.ResourceV2{ - TypeName: "data", - Name: "azurerm_resource_group", - ResourceName: "pike", - Provider: "azurerm", - Attributes: []string{"name", "location", "tags"}, + { + name: "pass", + args: args{ + result: pike.ResourceV2{ + TypeName: "data", + Name: "azurerm_resource_group", + ResourceName: "pike", + Provider: "azurerm", + Attributes: []string{"name", "location", "tags"}, + }, }, - }, want: []string{"Microsoft.Resources/subscriptions/resourcegroups/read"}}, - {name: "empty", wantErr: true}, + want: []string{"Microsoft.Resources/subscriptions/resourcegroups/read"}, + wantErr: false, + }, + { + name: "empty", + args: args{}, + want: nil, + wantErr: true, + }, { name: "guff", args: args{result: pike.ResourceV2{ diff --git a/src/azure_policy.go b/src/azure_policy.go index 15323c3e..5de30eb3 100644 --- a/src/azure_policy.go +++ b/src/azure_policy.go @@ -27,7 +27,7 @@ func AZUREPolicy(permissions []string, policyName string) (string, error) { } if policyName == "" { - policyName = DefaultPolicyName + policyName = defaultPolicyName } theDetails := azurePolicyDetails{policyName, test} @@ -35,13 +35,11 @@ func AZUREPolicy(permissions []string, policyName string) (string, error) { var output bytes.Buffer tmpl, err := template.New("test").Parse(string(policyAZURETemplate)) - if err != nil { return "", &templateParseError{err} } err = tmpl.Execute(&output, theDetails) - if err != nil { return "", &templateExecuteError{err} } diff --git a/src/azure_policy_test.go b/src/azure_policy_test.go index fc5e20d9..3e4b0426 100644 --- a/src/azure_policy_test.go +++ b/src/azure_policy_test.go @@ -1,10 +1,8 @@ -package pike_test +package pike import ( _ "embed" "testing" - - pike "github.com/jameswoolfenden/pike/src" ) //nolint:funlen @@ -55,7 +53,7 @@ func TestAZUREPolicy(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.AZUREPolicy(tt.args.permissions, tt.args.policyName) + got, err := AZUREPolicy(tt.args.permissions, tt.args.policyName) if (err != nil) != tt.wantErr { t.Errorf("AZUREPolicy() error = %v, wantErr %v", err, tt.wantErr) diff --git a/src/compare.go b/src/compare.go index 744885fc..f7fa0067 100644 --- a/src/compare.go +++ b/src/compare.go @@ -3,58 +3,239 @@ package pike import ( "context" "encoding/json" + "errors" "fmt" "os" + "regexp" + "slices" "strings" "time" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/iam" + "github.com/google/go-cmp/cmp" + "github.com/rs/zerolog/log" diff "github.com/yudai/gojsondiff" "github.com/yudai/gojsondiff/formatter" + gcpiam "google.golang.org/api/iam/v1" + "google.golang.org/api/serviceusage/v1" ) +// Replace hardcoded values with constants +const ( + defaultTimeout = 30 * time.Second + gcpIAMAPIName = "iam.googleapis.com" + awsARNPrefix = "arn:" + gcpProjectPrefix = "projects/" +) + +type invalidCloudError struct { + arn string +} + +func (e *invalidCloudError) Error() string { + return fmt.Sprintf("Invalid Cloud: %v", e.arn) +} + // Compare IAC codebase to AWS policy. func Compare(directory string, arn string, init bool) (bool, error) { + var result bool - valid, err := inputValidationCompare(directory, arn) + result, err := inputValidationCompare(directory, arn) if err != nil { - return valid, &inputValidationError{err} + log.Error().Msgf("Failed to validate input %v", err) + return false, &inputValidationError{err: err} + } + + switch getCloudFromRole(arn) { + case "aws": + { + result, err = compareAWSRole(directory, arn, init) + } + case "gcp": + { + result, err = compareGCPRole(directory, arn, init) + } + default: + { + err = &invalidCloudError{arn} + } + } + + return result, err +} + +func getCloudFromRole(arn string) string { + + var result string + + if strings.Contains(arn, "arn:") { + result = "aws" + } else if strings.Contains(arn, "projects") { + result = "gcp" + } else { + result = "unknown" + } + + return result +} + +type apiNotFoundError struct { + API string +} + +func (m *apiNotFoundError) Error() string { + return fmt.Sprintf("API %s not found", m.API) +} + +type apiNotEnabledError struct { + API string +} + +func (m *apiNotEnabledError) Error() string { + return fmt.Sprintf("API %s not enabled", m.API) +} + +func compareGCPRole(directory string, arn string, init bool) (bool, error) { + // The resource name of the role in one of the following formats: + // `roles/{ROLE_NAME}` + // `organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}` + // `projects/{PROJECT_ID}/roles/{ROLE_NAME}` + err := verifyGCPRole(arn) + + if err != nil { + return false, &gcpRoleNotVerified{arn} + } + + iacPolicy, err := makePermissionBag(directory, nil, init, "") + if err != nil { + return false, &getIAMVersionError{err} + } + + var projectID *string + projectID, err = GetEnv("GCP_PROJECT") + + if err != nil { + return false, &EnvVariableNotSetError{"GCP_PROJECT"} + } + + var API string + API = gcpIAMAPIName + + enabled, err := isGCPAPIEnabled(*projectID, API) + + if err != nil { + return enabled, &apiNotFoundError{API} + } + + if !enabled { + return enabled, &apiNotEnabledError{API} } - // Load the Shared AWS Configuration (~/.aws/config) ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + defer cancel() + + iamService, err := gcpiam.NewService(ctx) + if err != nil { + return false, &iamServiceError{err} + } + + Roles, err := iamService.Roles.Get(arn).Context(ctx).Do() + + if Roles == nil { + return false, &gcpRoleNotFound{arn} + } + + if err != nil { + return false, &gcpIAMRoleError{err} + } + + return compareGCPPolicy(Roles, iacPolicy), nil +} + +func compareGCPPolicy(Roles *gcpiam.Role, iacPolicy Sorted) bool { + slices.Sort(Roles.IncludedPermissions) + slices.Sort(iacPolicy.GCP) + + results := cmp.Diff(Unique(Roles.IncludedPermissions), Unique(iacPolicy.GCP)) + if results != "" { + replacer := strings.NewReplacer("[]string{", "", "}", "") + results = replacer.Replace(results) + fmt.Print("Policy Comparison mismatch mismatch (-excess +needs):") + fmt.Print(results) + return false + } + return true +} + +type gcpIAMRoleError struct { + err error +} + +func (m *gcpIAMRoleError) Error() string { + return fmt.Sprintf("IAM Role Error: %v", m.err) +} + +type gcpRoleNotFound struct { + role string +} + +func (e *gcpRoleNotFound) Error() string { + return fmt.Sprintf("IAM Role Error: %v", e.role) +} + +type iamServiceError struct { + err error +} + +func (m *iamServiceError) Error() string { + return m.err.Error() +} + +func isGCPAPIEnabled(projectID string, want string) (bool, error) { + enabledAPIs, err := listEnabledAPIs(projectID) + + if err != nil || enabledAPIs == nil { + log.Error().Msgf("Failed to list enabled APIs %v", err) + } + + if !slices.Contains(enabledAPIs, want) { + return false, errors.New("API not enabled") + } + + return true, nil +} + +func compareAWSRole(directory string, arn string, init bool) (bool, error) { + + // Load the Shared AWS Configuration (~/.aws/config) + ctx, cancel := context.WithTimeout(context.Background(), defaultTimeout) defer cancel() cfg, err := config.LoadDefaultConfig(ctx) - if err != nil { return false, &awsConfigError{err} } client := iam.NewFromConfig(cfg) - version, err := GetVersion(client, arn) - + version, err := getVersion(client, arn) if err != nil { return false, &getVersionError{err} } - policy, err := GetPolicyVersion(client, arn, *version) - + policy, err := getPolicyVersion(client, arn, *version) if err != nil { return false, &getPolicyVersionError{err} } - iacPolicy, err := MakePolicy(directory, nil, init, false) - + iacPolicy, err := MakePolicy(directory, nil, init, false, "", "") if err != nil { return false, &getIAMVersionError{err} } - sorted, err := SortActions(iacPolicy.AWS.JSONOut) - + sorted, err := sortActions(iacPolicy.AWS.JSONOut) if err != nil { return false, &sortActionsError{iacPolicy.AWS.JSONOut} } @@ -62,40 +243,52 @@ func Compare(directory string, arn string, init bool) (bool, error) { // iam versus iac fmt.Printf("IAM Policy %s versus Local %s \n", arn, directory) - return CompareIAMPolicy(*policy, *sorted) + return compareIAMPolicy(*policy, *sorted) } func inputValidationCompare(directory string, arn string) (bool, error) { if directory == "" { + log.Error().Msg("Directory cannot be empty") return false, &emptyDirectoryError{} } - if _, err := os.Stat(directory); os.IsNotExist(err) { - return false, &directoryNotFoundError{directory} - } - if arn == "" { + log.Error().Msg("ARN cannot be empty") return false, &arnEmptyError{} } - if !strings.HasPrefix(arn, "arn:") { + if _, err := os.Stat(directory); os.IsNotExist(err) { + log.Error().Msgf("Directory %s does not exist", directory) + return false, &directoryNotFoundError{directory} + } + + if !strings.HasPrefix(arn, awsARNPrefix) && !strings.HasPrefix(arn, gcpProjectPrefix) { + log.Error().Msgf("Invalid ARN %s cant determine cloud in use", arn) return false, &invalidARNError{arn} } - return false, nil + return true, nil +} + +type compareDifferenceError struct { + err error +} + +func (m *compareDifferenceError) Error() string { + return fmt.Sprintf("compare difference failed: %v", m.err) } -// CompareIAMPolicy takes two IAM policies and compares. -func CompareIAMPolicy(policy string, oldPolicy string) (bool, error) { +// compareIAMPolicy takes two IAM policies and compares. +func compareIAMPolicy(policy string, oldPolicy string) (bool, error) { differ := diff.New() compare, err := differ.Compare([]byte(policy), []byte(oldPolicy)) if err != nil { - return false, err + return false, &compareDifferenceError{err} } if compare.Modified() { - return ShowDifferences(policy, compare) + return showDifferences(policy, compare) } return true, nil @@ -109,7 +302,7 @@ func (m *formatterError) Error() string { return fmt.Sprintf("formatter failed: %v", m.err) } -func ShowDifferences(policy string, compare diff.Diff) (bool, error) { +func showDifferences(policy string, compare diff.Diff) (bool, error) { var aJSON map[string]interface{} err := json.Unmarshal([]byte(policy), &aJSON) @@ -133,3 +326,72 @@ func ShowDifferences(policy string, compare diff.Diff) (bool, error) { return false, nil } + +func listEnabledAPIs(projectID string) ([]string, error) { + ctx := context.Background() + serviceUsageService, err := serviceusage.NewService(ctx) + if err != nil { + return nil, fmt.Errorf("failed to create Service Usage client: %v", err) + } + + parent := fmt.Sprintf("projects/%s", projectID) + req := serviceUsageService.Services.List(parent).Filter("state:ENABLED") + + var services []string + if err := req.Pages(ctx, func(page *serviceusage.ListServicesResponse) error { + for _, service := range page.Services { + services = append(services, service.Config.Name) + } + return nil + }); err != nil { + return nil, fmt.Errorf("failed to list services: %v", err) + } + + return services, nil +} + +type arnNotVerified struct { + arn string +} + +func (e *arnNotVerified) Error() string { + fmt.Print("ARN must be in the following format:") + fmt.Print("arn:aws:iam::123456789012:role/role-name") + return fmt.Sprintf("ARN %s not verified", e.arn) +} + +type gcpRoleNotVerified struct { + role string +} + +func (e *gcpRoleNotVerified) Error() string { + fmt.Print( + `The resource name of the role in one of the following formats: + roles/{ROLE_NAME} + organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME} + projects/{PROJECT_ID}/roles/{ROLE_NAME}`) + return e.role +} + +func verifyGCPRole(role string) error { + r, err := regexp.Compile("projects/(.*\\S)/roles/(.*\\S)") + // Regex should be compiled once as package variable + if err == nil { + if r.MatchString(role) { + return nil + } + } + + return &gcpRoleNotVerified{role} +} + +func verifyAWSARN(ARN string) error { + r, err := regexp.Compile("arn:aws:iam::(.*\\S):role/(.*\\S)") + // Regex should be compiled once as package variable + if err == nil { + if r.MatchString(ARN) { + return nil + } + } + return &arnNotVerified{ARN} +} diff --git a/src/compare_internal_test.go b/src/compare_internal_test.go new file mode 100644 index 00000000..c213f8e5 --- /dev/null +++ b/src/compare_internal_test.go @@ -0,0 +1,442 @@ +package pike + +import ( + "errors" + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" + diff "github.com/yudai/gojsondiff" + gcpiam "google.golang.org/api/iam/v1" +) + +type mockDiff struct { + diff.Diff +} + +func (m mockDiff) Modified() bool { + return true +} + +func TestCompareIAMPolicy(t *testing.T) { + t.Parallel() + + type args struct { + Policy string + OldPolicy string + } + + tests := []struct { + name string + args args + want bool + wantErr bool + }{ + { + "same", + args{ + "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", + "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", + }, + true, + false, + }, + { + "different", + args{ + "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", + "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:bogus\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", + }, + false, + false, + }, + { + "not-json", + args{ + "guff", + "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:bogus\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", + }, + false, + true, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + got, err := compareIAMPolicy(tt.args.Policy, tt.args.OldPolicy) + if (err != nil) != tt.wantErr { + t.Errorf("CompareIAMPolicy() error = %v, wantErr %v", err, tt.wantErr) + + return + } + if got != tt.want { + t.Errorf("CompareIAMPolicy() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestShowDifferences(t *testing.T) { + tests := []struct { + name string + policy string + diff diff.Diff + wantBool bool + wantErr bool + description string + }{ + { + name: "Invalid JSON policy", + policy: `{invalid-json}`, + diff: &mockDiff{}, + wantBool: false, + wantErr: true, + description: "Should return error for invalid JSON", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + gotBool, err := showDifferences(tt.policy, tt.diff) + + if (err != nil) != tt.wantErr { + t.Errorf("ShowDifferences() error = %v, wantErr %v", err, tt.wantErr) + return + } + + if gotBool != tt.wantBool { + t.Errorf("ShowDifferences() = %v, want %v", gotBool, tt.wantBool) + } + }) + } +} + +func TestInputValidationCompare(t *testing.T) { + // Create a temporary directory for testing + tmpDir, err := os.MkdirTemp("", "pike-test-*") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(tmpDir) + + tests := []struct { + name string + directory string + arn string + wantBool bool + wantErr error + }{ + { + name: "empty directory", + directory: "", + arn: "arn:aws:iam::123456789012:policy/test", + wantBool: false, + wantErr: &emptyDirectoryError{}, + }, + { + name: "non-existent directory", + directory: filepath.Join(tmpDir, "nonexistent"), + arn: "arn:aws:iam::123456789012:policy/test", + wantBool: false, + wantErr: &directoryNotFoundError{filepath.Join(tmpDir, "nonexistent")}, + }, + { + name: "empty ARN", + directory: tmpDir, + arn: "", + wantBool: false, + wantErr: &arnEmptyError{}, + }, + { + name: "invalid ARN format", + directory: tmpDir, + arn: "invalid:arn", + wantBool: false, + wantErr: &invalidARNError{"invalid:arn"}, + }, + { + name: "valid inputs", + directory: tmpDir, + arn: "arn:aws:iam::123456789012:policy/test", + wantBool: true, + wantErr: nil, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + gotBool, gotErr := inputValidationCompare(tt.directory, tt.arn) + if gotBool != tt.wantBool { + t.Errorf("inputValidationCompare() bool = %v, want %v", gotBool, tt.wantBool) + } + if (gotErr == nil && tt.wantErr != nil) || (gotErr != nil && tt.wantErr == nil) { + t.Errorf("inputValidationCompare() error = %v, want %v", gotErr, tt.wantErr) + } + if gotErr != nil && tt.wantErr != nil && gotErr.Error() != tt.wantErr.Error() { + t.Errorf("inputValidationCompare() error = %v, want %v", gotErr, tt.wantErr) + } + }) + } +} + +func TestGetCloudFromRole(t *testing.T) { + tests := []struct { + name string + arn string + expected string + }{ + { + name: "AWS ARN", + arn: "arn:aws:iam::123456789012:role/MyRole", + expected: "aws", + }, + { + name: "GCP project role", + arn: "projects/my-project/roles/my-role", + expected: "gcp", + }, + { + name: "Unknown format", + arn: "invalid-role-format", + expected: "unknown", + }, + { + name: "Empty string", + arn: "", + expected: "unknown", + }, + { + name: "Partial AWS ARN", + arn: "arn:something", + expected: "aws", + }, + { + name: "Partial GCP format", + arn: "projects/test", + expected: "gcp", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := getCloudFromRole(tt.arn) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestVerifyGCPRole(t *testing.T) { + tests := []struct { + name string + role string + expectError bool + }{ + { + name: "valid GCP role format", + role: "projects/my-project/roles/my-custom-role", + expectError: false, + }, + { + name: "valid GCP role with numbers and hyphens", + role: "projects/my-project-123/roles/custom-role-456", + expectError: false, + }, + { + name: "valid GCP role with underscores", + role: "projects/my_project/roles/my_role", + expectError: false, + }, + { + name: "invalid role - missing projects prefix", + role: "my-project/roles/my-role", + expectError: true, + }, + { + name: "invalid role - missing roles section", + role: "projects/my-project/my-role", + expectError: true, + }, + { + name: "invalid role - empty project name", + role: "projects//roles/my-role", + expectError: true, + }, + { + name: "invalid role - empty role name", + role: "projects/my-project/roles/", + expectError: true, + }, + { + name: "invalid role - completely empty", + role: "", + expectError: true, + }, + { + name: "invalid role - wrong format", + role: "organizations/123456789/roles/my-role", + expectError: true, + }, + { + name: "invalid role - predefined role format", + role: "roles/viewer", + expectError: true, + }, + { + name: "invalid role - trailing whitespace in project", + role: "projects/my-project /roles/my-role", + expectError: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := verifyGCPRole(tt.role) + + if tt.expectError { + if err == nil { + t.Errorf("expected error for role %q, but got nil", tt.role) + } else { + // Verify it's the correct error type + if _, ok := err.(*gcpRoleNotVerified); !ok { + t.Errorf("expected gcpRoleNotVerified error type, got %T", err) + } + } + } else { + if err != nil { + t.Errorf("expected no error for role %q, but got: %v", tt.role, err) + } + } + }) + } +} + +func TestVerifyGCPRole_ErrorMessage(t *testing.T) { + invalidRole := "invalid-role-format" + err := verifyGCPRole(invalidRole) + + if err == nil { + t.Fatal("expected error but got nil") + } + + gcpErr, ok := err.(*gcpRoleNotVerified) + if !ok { + t.Fatalf("expected gcpRoleNotVerified error type, got %T", err) + } + + if gcpErr.role != invalidRole { + t.Errorf("expected error to contain role %q, got %q", invalidRole, gcpErr.role) + } +} + +func Test_gcpIAMRoleError_Error(t *testing.T) { + type fields struct { + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"invoke", fields{err: &gcpRoleNotVerified{role: "test"}}, "IAM Role Error: test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &gcpIAMRoleError{ + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_gcpRoleNotFound_Error(t *testing.T) { + type fields struct { + role string + } + tests := []struct { + name string + fields fields + want string + }{ + {"Invoke", fields{role: "test"}, "IAM Role Error: test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &gcpRoleNotFound{ + role: tt.fields.role, + } + assert.Equalf(t, tt.want, e.Error(), "Error()") + }) + } +} + +func Test_compareDifferenceError_Error(t *testing.T) { + type fields struct { + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"Invoke", fields{errors.New("test")}, "compare difference failed: test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &compareDifferenceError{ + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_iamServiceError_Error(t *testing.T) { + type fields struct { + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"invoke", fields{errors.New("test")}, "test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &iamServiceError{ + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_compareGCPPolicy(t *testing.T) { + type args struct { + Roles *gcpiam.Role + iacPolicy Sorted + } + tests := []struct { + name string + args args + want bool + }{ + {"Pass", + args{Roles: &gcpiam.Role{IncludedPermissions: []string{"Fred"}}, + iacPolicy: Sorted{GCP: []string{"Fred"}}}, + true}, + {"False", + args{Roles: &gcpiam.Role{IncludedPermissions: []string{"Fred"}}, + iacPolicy: Sorted{GCP: []string{"Jane"}}}, + false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equalf(t, tt.want, compareGCPPolicy(tt.args.Roles, tt.args.iacPolicy), "compareGCPPolicy(%v, %v)", tt.args.Roles, tt.args.iacPolicy) + }) + } +} diff --git a/src/compare_test.go b/src/compare_test.go index f41743f4..11237457 100644 --- a/src/compare_test.go +++ b/src/compare_test.go @@ -4,27 +4,20 @@ package pike import ( "os" - "path/filepath" + "reflect" "testing" - - diff "github.com/yudai/gojsondiff" ) -type mockDiff struct { - diff.Diff -} - -func (m mockDiff) Modified() bool { - return true -} - -func TestCompareIAMPolicy(t *testing.T) { +func TestCompare(t *testing.T) { t.Parallel() type args struct { - Policy string - OldPolicy string + directory string + arn string + init bool } + os.Setenv("AWS_DEFAULT_PROFILE", "personal") + os.Setenv("GCP_PROJECT", "pike-412922") tests := []struct { name string @@ -32,194 +25,127 @@ func TestCompareIAMPolicy(t *testing.T) { want bool wantErr bool }{ - { - "same", - args{ - "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", - "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", - }, - true, - false, - }, - { - "different", - args{ - "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", - "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:bogus\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", - }, - false, - false, - }, - { - "not-json", - args{ - "guff", - "{\"Statement\":[{\"Action\":[\"cognito-idp:ListUserPoolClients\",\"cognito-idp:GetSigningCertificate\",\"cognito-idp:bogus\",\"cognito-idp:DescribeUserPoolClient\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"0\"}],\"Version\":\"2012-10-17\"}", - }, - false, - true, - }, + {"fail arn is empty", args{"./testdata/init/nicconf", "", false}, false, true}, + {"fail arn is not policy", args{"./testdata/init/nicconf", "arn:aws:iam::680235478471:user/readonly", false}, false, true}, + {"works but fails", args{"./testdata/init/nicconf", "arn:aws:iam::680235478471:policy/allows3", false}, false, false}, + //code is not aws + {"gcp-basic-fail", args{"./testdata/gcp/basic", "basic", false}, false, true}, + {"gcp-basic-exist-fail", args{"./testdata/gcp/basic", "projects/pike-412922/roles/terraform_pike", false}, false, false}, } for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := CompareIAMPolicy(tt.args.Policy, tt.args.OldPolicy) + got, err := Compare(tt.args.directory, tt.args.arn, tt.args.init) if (err != nil) != tt.wantErr { - t.Errorf("CompareIAMPolicy() error = %v, wantErr %v", err, tt.wantErr) - + t.Errorf("Compare() error = %v, wantErr %v", err, tt.wantErr) return } if got != tt.want { - t.Errorf("CompareIAMPolicy() = %v, want %v", got, tt.want) + t.Errorf("Compare() got = %v, want %v", got, tt.want) } }) } } -func TestCompare(t *testing.T) { - t.Parallel() - +func Test_listEnabledAPIs(t *testing.T) { type args struct { - directory string - arn string - init bool + projectID string } - tests := []struct { name string args args - want bool + want []string wantErr bool }{ - {"fail arn is empty", args{"./testdata/init/nicconf", "", false}, false, true}, - {"fail arn is not policy", args{"./testdata/init/nicconf", "arn:aws:iam::680235478471:user/readonly", false}, false, true}, - {"pass", args{"./testdata/init/nicconf", "arn:aws:iam::680235478471:policy/testdata", false}, true, false}, + {"All", args{"pike-"}, nil, true}, + {"Enabled", args{"488072219970"}, []string{"analyticshub.googleapis.com", + "artifactregistry.googleapis.com", "autoscaling.googleapis.com", "bigquery.googleapis.com", + "bigqueryconnection.googleapis.com", "bigquerydatapolicy.googleapis.com", "bigquerymigration.googleapis.com", + "bigqueryreservation.googleapis.com", "bigquerystorage.googleapis.com", "bigtable.googleapis.com", + "bigtableadmin.googleapis.com", "cloudapis.googleapis.com", "cloudbuild.googleapis.com", + "cloudfunctions.googleapis.com", "cloudkms.googleapis.com", "cloudresourcemanager.googleapis.com", + "cloudtrace.googleapis.com", "composer.googleapis.com", "compute.googleapis.com", "container.googleapis.com", + "containerfilesystem.googleapis.com", "containerregistry.googleapis.com", "dataform.googleapis.com", + "dataplex.googleapis.com", "datastore.googleapis.com", "dns.googleapis.com", "gkebackup.googleapis.com", + "iam.googleapis.com", "iamcredentials.googleapis.com", "logging.googleapis.com", "monitoring.googleapis.com", + "networkconnectivity.googleapis.com", "oslogin.googleapis.com", "pubsub.googleapis.com", "run.googleapis.com", + "servicehealth.googleapis.com", "servicemanagement.googleapis.com", "serviceusage.googleapis.com", + "source.googleapis.com", "sql-component.googleapis.com", "sqladmin.googleapis.com", "storage-api.googleapis.com", + "storage-component.googleapis.com", + "storage.googleapis.com"}, false}, } - for _, tt := range tests { - tt := tt t.Run(tt.name, func(t *testing.T) { - t.Parallel() - got, err := Compare(tt.args.directory, tt.args.arn, tt.args.init) + got, err := listEnabledAPIs(tt.args.projectID) if (err != nil) != tt.wantErr { - t.Errorf("Compare() error = %v, wantErr %v", err, tt.wantErr) + t.Errorf("listEnabledAPIs() error = %v, wantErr %v", err, tt.wantErr) return } - if got != tt.want { - t.Errorf("Compare() got = %v, want %v", got, tt.want) + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("listEnabledAPIs() got = %v, want %v", got, tt.want) } }) } } -func TestShowDifferences(t *testing.T) { +func Test_compareGCPRole(t *testing.T) { + type args struct { + directory string + arn string + init bool + } + + os.Setenv("GCP_PROJECT", "pike-412922") tests := []struct { - name string - policy string - diff diff.Diff - wantBool bool - wantErr bool - description string + name string + args args + want bool + wantErr bool }{ - //{ - // name: "Valid policy and diff", - // policy: `{"Version": "2012-10-17", "Statement": [{"Effect": "Allow"}]}`, - // diff: &mockDiff{}, - // wantBool: false, - // wantErr: false, - // description: "Should successfully format and display differences", - //}, - { - name: "Invalid JSON policy", - policy: `{invalid-json}`, - diff: &mockDiff{}, - wantBool: false, - wantErr: true, - description: "Should return error for invalid JSON", - }, + {"pass", args{"./testdata/gcp/basic", "projects/pike-412922/roles/terraform_pike", false}, false, false}, } - for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - gotBool, err := ShowDifferences(tt.policy, tt.diff) - + got, err := compareGCPRole(tt.args.directory, tt.args.arn, tt.args.init) if (err != nil) != tt.wantErr { - t.Errorf("ShowDifferences() error = %v, wantErr %v", err, tt.wantErr) + t.Errorf("compareGCPRole() error = %v, wantErr %v", err, tt.wantErr) return } - - if gotBool != tt.wantBool { - t.Errorf("ShowDifferences() = %v, want %v", gotBool, tt.wantBool) + if got != tt.want { + t.Errorf("compareGCPRole() got = %v, want %v", got, tt.want) } }) } } -func TestInputValidationCompare(t *testing.T) { - // Create a temporary directory for testing - tmpDir, err := os.MkdirTemp("", "pike-test-*") - if err != nil { - t.Fatal(err) +func TestVerifyRole(t *testing.T) { + type args struct { + role string } - defer os.RemoveAll(tmpDir) - tests := []struct { - name string - directory string - arn string - wantBool bool - wantErr error + name string + args args + want bool + wantErr bool }{ - { - name: "empty directory", - directory: "", - arn: "arn:aws:iam::123456789012:policy/test", - wantBool: false, - wantErr: &emptyDirectoryError{}, - }, - { - name: "non-existent directory", - directory: filepath.Join(tmpDir, "nonexistent"), - arn: "arn:aws:iam::123456789012:policy/test", - wantBool: false, - wantErr: &directoryNotFoundError{filepath.Join(tmpDir, "nonexistent")}, - }, - { - name: "empty ARN", - directory: tmpDir, - arn: "", - wantBool: false, - wantErr: &arnEmptyError{}, - }, - { - name: "invalid ARN format", - directory: tmpDir, - arn: "invalid:arn", - wantBool: false, - wantErr: &invalidARNError{}, - }, - { - name: "valid inputs", - directory: tmpDir, - arn: "arn:aws:iam::123456789012:policy/test", - wantBool: false, - wantErr: nil, - }, + {"Fail", args{"projectsmine/duff/roles/mine"}, false, true}, + {"Fail2", args{"projects/duff/noroles/mine"}, false, true}, + {"Fail3", args{"projects/duff/roles"}, false, true}, + {"Fail4", args{"projects/roles/a"}, false, true}, + {"Fail5", args{"mine/duff/roles/mine"}, false, true}, + + {"Pass", args{"projects/a/roles/a"}, false, false}, + {"Pass2", args{"projects/duff/roles/mine"}, false, false}, + {"Pass3", args{role: "projects/pike-412922/roles/terraform_pike"}, false, false}, } - for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - gotBool, gotErr := inputValidationCompare(tt.directory, tt.arn) - if gotBool != tt.wantBool { - t.Errorf("inputValidationCompare() bool = %v, want %v", gotBool, tt.wantBool) - } - if (gotErr == nil && tt.wantErr != nil) || (gotErr != nil && tt.wantErr == nil) { - t.Errorf("inputValidationCompare() error = %v, want %v", gotErr, tt.wantErr) - } - if gotErr != nil && tt.wantErr != nil && gotErr.Error() != tt.wantErr.Error() { - t.Errorf("inputValidationCompare() error = %v, want %v", gotErr, tt.wantErr) + err := verifyGCPRole(tt.args.role) + if (err != nil) != tt.wantErr { + t.Errorf("VerifyRole() error = %v, wantErr %v", err, tt.wantErr) + return } }) } diff --git a/src/coverage/aws.md b/src/coverage/aws.md index ac29c21d..91a8c024 100644 --- a/src/coverage/aws.md +++ b/src/coverage/aws.md @@ -1,407 +1,72 @@ -# todo aws +# AWS Resource Status -Resource percentage coverage 72.68 -Datasource percentage coverage 99.65 +| Terraform | Coverage % | Resources | Total Resources | +|------------|------------|-----------|-----------------| +| Resources | 95.96 | 1498 | 1561 | +| Datasource | 100.00 | 628 | 628 | -./resource.ps1 aws_amplify_backend_environment -./resource.ps1 aws_amplify_webhook -./resource.ps1 aws_api_gateway_domain_name_access_association -./resource.ps1 aws_appconfig_deployment -./resource.ps1 aws_appconfig_deployment_strategy -./resource.ps1 aws_appfabric_app_authorization -./resource.ps1 aws_appfabric_app_authorization_connection -./resource.ps1 aws_appfabric_app_bundle -./resource.ps1 aws_appfabric_ingestion -./resource.ps1 aws_appfabric_ingestion_destination -./resource.ps1 aws_appmesh_gateway_route -./resource.ps1 aws_appmesh_mesh -./resource.ps1 aws_appmesh_route -./resource.ps1 aws_appmesh_virtual_gateway -./resource.ps1 aws_appmesh_virtual_node -./resource.ps1 aws_appmesh_virtual_router -./resource.ps1 aws_appmesh_virtual_service -./resource.ps1 aws_apprunner_connection -./resource.ps1 aws_apprunner_custom_domain_association -./resource.ps1 aws_apprunner_deployment -./resource.ps1 aws_appstream_directory_config -./resource.ps1 aws_appstream_fleet -./resource.ps1 aws_appstream_fleet_stack_association -./resource.ps1 aws_appstream_stack -./resource.ps1 aws_appstream_user -./resource.ps1 aws_appstream_user_stack_association -./resource.ps1 aws_appsync_api_cache -./resource.ps1 aws_appsync_api_key -./resource.ps1 aws_appsync_datasource -./resource.ps1 aws_appsync_graphql_api -./resource.ps1 aws_appsync_source_api_association -./resource.ps1 aws_appsync_type -./resource.ps1 aws_bedrock_guardrail -./resource.ps1 aws_bedrock_guardrail_version -./resource.ps1 aws_bedrock_inference_profile -./resource.ps1 aws_bedrockagent_agent_knowledge_base_association -./resource.ps1 aws_cloud9_environment_membership -./resource.ps1 aws_cloudcontrolapi_resource -./resource.ps1 aws_cloudformation_stack_instances -./resource.ps1 aws_cloudfront_vpc_origin -./resource.ps1 aws_cloudhsm_v2_cluster -./resource.ps1 aws_cloudhsm_v2_hsm -./resource.ps1 aws_cloudtrail_organization_delegated_admin_account -./resource.ps1 aws_cloudwatch_log_anomaly_detector -./resource.ps1 aws_cloudwatch_log_index_policy -./resource.ps1 aws_codebuild_fleet -./resource.ps1 aws_codeconnections_connection -./resource.ps1 aws_codeconnections_host -./resource.ps1 aws_cognito_managed_user_pool_client -./resource.ps1 aws_comprehend_entity_recognizer -./resource.ps1 aws_computeoptimizer_enrollment_status -./resource.ps1 aws_computeoptimizer_recommendation_preferences -./resource.ps1 aws_config_aggregate_authorization -./resource.ps1 aws_config_organization_custom_policy_rule -./resource.ps1 aws_config_organization_custom_rule -./resource.ps1 aws_config_organization_managed_rule -./resource.ps1 aws_config_remediation_configuration -./resource.ps1 aws_config_retention_configuration -./resource.ps1 aws_connect_lambda_function_association -./resource.ps1 aws_costoptimizationhub_enrollment_status -./resource.ps1 aws_costoptimizationhub_preferences -./resource.ps1 aws_customerprofiles_domain -./resource.ps1 aws_customerprofiles_profile -./resource.ps1 aws_dataexchange_data_set -./resource.ps1 aws_dataexchange_revision -./resource.ps1 aws_detective_member -./resource.ps1 aws_detective_organization_configuration -./resource.ps1 aws_devicefarm_device_pool -./resource.ps1 aws_devicefarm_instance_profile -./resource.ps1 aws_devicefarm_network_profile -./resource.ps1 aws_devicefarm_project -./resource.ps1 aws_devicefarm_upload -./resource.ps1 aws_devopsguru_event_sources_config -./resource.ps1 aws_devopsguru_service_integration -./resource.ps1 aws_directory_service_conditional_forwarder -./resource.ps1 aws_directory_service_radius_settings -./resource.ps1 aws_directory_service_region -./resource.ps1 aws_directory_service_shared_directory -./resource.ps1 aws_directory_service_shared_directory_accepter -./resource.ps1 aws_directory_service_trust -./resource.ps1 aws_drs_replication_configuration_template -./resource.ps1 aws_dx_bgp_peer -./resource.ps1 aws_dx_connection -./resource.ps1 aws_dx_connection_association -./resource.ps1 aws_dx_connection_confirmation -./resource.ps1 aws_dx_gateway_association_proposal -./resource.ps1 aws_dx_hosted_connection -./resource.ps1 aws_dx_hosted_private_virtual_interface -./resource.ps1 aws_dx_hosted_private_virtual_interface_accepter -./resource.ps1 aws_dx_hosted_public_virtual_interface -./resource.ps1 aws_dx_hosted_public_virtual_interface_accepter -./resource.ps1 aws_dx_hosted_transit_virtual_interface -./resource.ps1 aws_dx_lag -./resource.ps1 aws_dx_macsec_key_association -./resource.ps1 aws_dx_private_virtual_interface -./resource.ps1 aws_dx_public_virtual_interface -./resource.ps1 aws_dx_transit_virtual_interface -./resource.ps1 aws_dynamodb_kinesis_streaming_destination -./resource.ps1 aws_dynamodb_resource_policy -./resource.ps1 aws_dynamodb_table_export -./resource.ps1 aws_dynamodb_table_replica -./resource.ps1 aws_ebs_fast_snapshot_restore -./resource.ps1 aws_ebs_snapshot_import -./resource.ps1 aws_ec2_capacity_block_reservation -./resource.ps1 aws_ec2_instance -./resource.ps1 aws_ec2_instance_connect_endpoint -./resource.ps1 aws_ec2_instance_metadata_defaults -./resource.ps1 aws_ec2_instance_state -./resource.ps1 aws_ec2_managed_prefix_list_entry -./resource.ps1 aws_ec2_subnet_cidr_reservation -./resource.ps1 aws_ec2_traffic_mirror_filter -./resource.ps1 aws_ec2_traffic_mirror_filter_rule -./resource.ps1 aws_ec2_traffic_mirror_session -./resource.ps1 aws_ec2_traffic_mirror_target -./resource.ps1 aws_ec2_transit_gateway_connect_peer -./resource.ps1 aws_ec2_transit_gateway_default_route_table_association -./resource.ps1 aws_ec2_transit_gateway_default_route_table_propagation -./resource.ps1 aws_ec2_transit_gateway_peering_attachment_accepter -./resource.ps1 aws_ec2_transit_gateway_policy_table -./resource.ps1 aws_ec2_transit_gateway_policy_table_association -./resource.ps1 aws_ec2_transit_gateway_prefix_list_reference -./resource.ps1 aws_ec2_transit_gateway_vpc_attachment_accepter -./resource.ps1 aws_ecr_account_setting -./resource.ps1 aws_ecs_account_setting_default -./resource.ps1 aws_ecs_cluster_capacity_providers -./resource.ps1 aws_eip_domain_name -./resource.ps1 aws_eks_access_policy_association -./resource.ps1 aws_elasticache_reserved_cache_node -./resource.ps1 aws_elasticache_serverless_cache -./resource.ps1 aws_elasticache_user_group_association -./resource.ps1 aws_elasticsearch_domain_saml_options -./resource.ps1 aws_elasticsearch_vpc_endpoint -./resource.ps1 aws_elastictranscoder_pipeline -./resource.ps1 aws_elastictranscoder_preset -./resource.ps1 aws_emr_instance_fleet -./resource.ps1 aws_emr_instance_group -./resource.ps1 aws_emrcontainers_job_template -./resource.ps1 aws_finspace_kx_cluster -./resource.ps1 aws_finspace_kx_database -./resource.ps1 aws_finspace_kx_dataview -./resource.ps1 aws_finspace_kx_scaling_group -./resource.ps1 aws_finspace_kx_user -./resource.ps1 aws_finspace_kx_volume -./resource.ps1 aws_fms_admin_account -./resource.ps1 aws_globalaccelerator_custom_routing_accelerator -./resource.ps1 aws_globalaccelerator_custom_routing_endpoint_group -./resource.ps1 aws_globalaccelerator_custom_routing_listener -./resource.ps1 aws_glue_catalog_table_optimizer -./resource.ps1 aws_glue_data_quality_ruleset -./resource.ps1 aws_glue_dev_endpoint -./resource.ps1 aws_glue_partition -./resource.ps1 aws_glue_partition_index -./resource.ps1 aws_grafana_license_association -./resource.ps1 aws_grafana_role_association -./resource.ps1 aws_grafana_workspace -./resource.ps1 aws_grafana_workspace_saml_configuration -./resource.ps1 aws_grafana_workspace_service_account -./resource.ps1 aws_grafana_workspace_service_account_token -./resource.ps1 aws_guardduty_detector_feature -./resource.ps1 aws_guardduty_invite_accepter -./resource.ps1 aws_guardduty_organization_admin_account -./resource.ps1 aws_guardduty_organization_configuration -./resource.ps1 aws_guardduty_organization_configuration_feature -./resource.ps1 aws_guardduty_publishing_destination -./resource.ps1 aws_iam_group_policy_attachments_exclusive -./resource.ps1 aws_iam_organizations_features -./resource.ps1 aws_iam_role_policy_attachments_exclusive -./resource.ps1 aws_iam_user_policy_attachments_exclusive -./resource.ps1 aws_identitystore_group -./resource.ps1 aws_identitystore_group_membership -./resource.ps1 aws_identitystore_user -./resource.ps1 aws_imagebuilder_lifecycle_policy -./resource.ps1 aws_internet_gateway_attachment -./resource.ps1 aws_iot_domain_configuration -./resource.ps1 aws_iot_event_configurations -./resource.ps1 aws_iot_indexing_configuration -./resource.ps1 aws_iot_logging_options -./resource.ps1 aws_iot_policy_attachment -./resource.ps1 aws_iot_thing_group_membership -./resource.ps1 aws_iot_thing_principal_attachment -./resource.ps1 aws_kendra_experience -./resource.ps1 aws_kendra_query_suggestions_block_list -./resource.ps1 aws_kendra_thesaurus -./resource.ps1 aws_kinesis_analytics_application -./resource.ps1 aws_kinesisanalyticsv2_application_snapshot -./resource.ps1 aws_lakeformation_data_lake_settings -./resource.ps1 aws_lakeformation_lf_tag -./resource.ps1 aws_lakeformation_permissions -./resource.ps1 aws_lakeformation_resource -./resource.ps1 aws_lakeformation_resource_lf_tags -./resource.ps1 aws_lambda_function_recursion_config -./resource.ps1 aws_lambda_runtime_management_config -./resource.ps1 aws_lb_listener_certificate -./resource.ps1 aws_lb_ssl_negotiation_policy -./resource.ps1 aws_lexv2models_bot -./resource.ps1 aws_lexv2models_bot_locale -./resource.ps1 aws_lexv2models_bot_version -./resource.ps1 aws_lexv2models_intent -./resource.ps1 aws_lexv2models_slot -./resource.ps1 aws_lexv2models_slot_type -./resource.ps1 aws_licensemanager_association -./resource.ps1 aws_licensemanager_grant_accepter -./resource.ps1 aws_lightsail_bucket_access_key_access_key -./resource.ps1 aws_lightsail_bucket_resource_access -./resource.ps1 aws_lightsail_container_service -./resource.ps1 aws_lightsail_container_service_deployment_version -./resource.ps1 aws_lightsail_disk_attachment -./resource.ps1 aws_lightsail_domain -./resource.ps1 aws_lightsail_domain_entry -./resource.ps1 aws_lightsail_lb_attachment -./resource.ps1 aws_lightsail_lb_certificate -./resource.ps1 aws_lightsail_lb_certificate_attachment -./resource.ps1 aws_lightsail_lb_https_redirection_policy -./resource.ps1 aws_lightsail_lb_stickiness_policy -./resource.ps1 aws_macie2_account -./resource.ps1 aws_macie2_classification_export_configuration -./resource.ps1 aws_macie2_classification_job -./resource.ps1 aws_macie2_invitation_accepter -./resource.ps1 aws_macie2_member -./resource.ps1 aws_macie2_organization_admin_account -./resource.ps1 aws_main_route_table_association -./resource.ps1 aws_media_store_container -./resource.ps1 aws_media_store_container_policy -./resource.ps1 aws_medialive_channel -./resource.ps1 aws_memorydb_multi_region_cluster -./resource.ps1 aws_msk_single_scram_secret_association -./resource.ps1 aws_mskconnect_connector -./resource.ps1 aws_mskconnect_custom_plugin -./resource.ps1 aws_mskconnect_worker_configuration -./resource.ps1 aws_neptune_global_cluster -./resource.ps1 aws_network_interface_sg_attachment -./resource.ps1 aws_networkmanager_attachment_accepter -./resource.ps1 aws_networkmanager_connection -./resource.ps1 aws_networkmanager_core_network_policy_attachment -./resource.ps1 aws_networkmanager_dx_gateway_attachment -./resource.ps1 aws_networkmanager_transit_gateway_connect_peer_association -./resource.ps1 aws_networkmonitor_monitor -./resource.ps1 aws_networkmonitor_probe -./resource.ps1 aws_opensearch_authorize_vpc_endpoint_access -./resource.ps1 aws_opensearch_domain_saml_options -./resource.ps1 aws_opensearch_inbound_connection_accepter -./resource.ps1 aws_opensearch_outbound_connection -./resource.ps1 aws_opensearch_package -./resource.ps1 aws_opensearch_package_association -./resource.ps1 aws_opensearch_vpc_endpoint -./resource.ps1 aws_opsworks_application -./resource.ps1 aws_opsworks_custom_layer -./resource.ps1 aws_opsworks_ecs_cluster_layer -./resource.ps1 aws_opsworks_ganglia_layer -./resource.ps1 aws_opsworks_haproxy_layer -./resource.ps1 aws_opsworks_instance -./resource.ps1 aws_opsworks_java_app_layer -./resource.ps1 aws_opsworks_memcached_layer -./resource.ps1 aws_opsworks_mysql_layer -./resource.ps1 aws_opsworks_nodejs_app_layer -./resource.ps1 aws_opsworks_permission -./resource.ps1 aws_opsworks_php_app_layer -./resource.ps1 aws_opsworks_rails_app_layer -./resource.ps1 aws_opsworks_rds_db_instance -./resource.ps1 aws_opsworks_stack -./resource.ps1 aws_opsworks_static_web_layer -./resource.ps1 aws_opsworks_user_profile -./resource.ps1 aws_organizations_delegated_administrator -./resource.ps1 aws_pinpoint_adm_channel -./resource.ps1 aws_pinpoint_apns_channel -./resource.ps1 aws_pinpoint_apns_sandbox_channel -./resource.ps1 aws_pinpoint_apns_voip_channel -./resource.ps1 aws_pinpoint_apns_voip_sandbox_channel -./resource.ps1 aws_pinpoint_app -./resource.ps1 aws_pinpoint_baidu_channel -./resource.ps1 aws_pinpoint_email_channel -./resource.ps1 aws_pinpoint_email_template -./resource.ps1 aws_pinpoint_event_stream -./resource.ps1 aws_pinpoint_gcm_channel -./resource.ps1 aws_pinpoint_sms_channel -./resource.ps1 aws_pinpointsmsvoicev2_configuration_set -./resource.ps1 aws_pinpointsmsvoicev2_opt_out_list -./resource.ps1 aws_pinpointsmsvoicev2_phone_number -./resource.ps1 aws_prometheus_alert_manager_definition -./resource.ps1 aws_prometheus_rule_group_namespace -./resource.ps1 aws_prometheus_scraper -./resource.ps1 aws_prometheus_workspace -./resource.ps1 aws_qldb_ledger -./resource.ps1 aws_ram_resource_share_accepter -./resource.ps1 aws_ram_sharing_with_organization -./resource.ps1 aws_rbin_rule -./resource.ps1 aws_rds_certificate -./resource.ps1 aws_rds_cluster_snapshot_copy -./resource.ps1 aws_rds_custom_db_engine_version -./resource.ps1 aws_rds_export_task -./resource.ps1 aws_rds_instance_state -./resource.ps1 aws_rds_reserved_instance -./resource.ps1 aws_redshift_cluster_snapshot -./resource.ps1 aws_redshift_data_share_authorization -./resource.ps1 aws_redshift_data_share_consumer_association -./resource.ps1 aws_redshift_logging -./resource.ps1 aws_redshift_partner -./resource.ps1 aws_redshift_resource_policy -./resource.ps1 aws_redshift_snapshot_copy -./resource.ps1 aws_redshiftdata_statement -./resource.ps1 aws_redshiftserverless_custom_domain_association -./resource.ps1 aws_redshiftserverless_endpoint_access -./resource.ps1 aws_redshiftserverless_resource_policy -./resource.ps1 aws_redshiftserverless_snapshot -./resource.ps1 aws_redshiftserverless_usage_limit -./resource.ps1 aws_resiliencehub_resiliency_policy -./resource.ps1 aws_resourcegroups_resource -./resource.ps1 aws_route53domains_delegation_signer_record -./resource.ps1 aws_route53domains_registered_domain -./resource.ps1 aws_route53profiles_association -./resource.ps1 aws_route53profiles_profile -./resource.ps1 aws_route53profiles_resource_association -./resource.ps1 aws_rum_metrics_destination -./resource.ps1 aws_s3_directory_bucket -./resource.ps1 aws_s3_object_copy -./resource.ps1 aws_s3control_access_grants_instance_resource_policy -./resource.ps1 aws_s3control_bucket -./resource.ps1 aws_s3control_bucket_lifecycle_configuration -./resource.ps1 aws_s3control_bucket_policy -./resource.ps1 aws_s3control_object_lambda_access_point -./resource.ps1 aws_s3control_object_lambda_access_point_policy -./resource.ps1 aws_s3control_storage_lens_configuration -./resource.ps1 aws_s3tables_namespace -./resource.ps1 aws_s3tables_table -./resource.ps1 aws_s3tables_table_bucket -./resource.ps1 aws_s3tables_table_bucket_policy -./resource.ps1 aws_s3tables_table_policy -./resource.ps1 aws_sagemaker_flow_definition -./resource.ps1 aws_sagemaker_hub -./resource.ps1 aws_sagemaker_mlflow_tracking_server -./resource.ps1 aws_securityhub_account -./resource.ps1 aws_securityhub_action_target -./resource.ps1 aws_securityhub_configuration_policy_association -./resource.ps1 aws_securityhub_invite_accepter -./resource.ps1 aws_securityhub_member -./resource.ps1 aws_securityhub_organization_admin_account -./resource.ps1 aws_securityhub_standards_control_association -./resource.ps1 aws_securityhub_standards_subscription -./resource.ps1 aws_securitylake_custom_log_source -./resource.ps1 aws_serverlessapplicationrepository_cloudformation_stack -./resource.ps1 aws_service_discovery_http_namespace -./resource.ps1 aws_service_discovery_instance -./resource.ps1 aws_service_discovery_private_dns_namespace -./resource.ps1 aws_service_discovery_public_dns_namespace -./resource.ps1 aws_service_discovery_service -./resource.ps1 aws_servicecatalog_provisioning_artifact -./resource.ps1 aws_servicecatalogappregistry_attribute_group -./resource.ps1 aws_servicecatalogappregistry_attribute_group_association -./resource.ps1 aws_sesv2_account_suppression_attributes -./resource.ps1 aws_sesv2_account_vdm_attributes -./resource.ps1 aws_sesv2_configuration_set -./resource.ps1 aws_sesv2_configuration_set_event_destination -./resource.ps1 aws_sesv2_contact_list -./resource.ps1 aws_sesv2_dedicated_ip_assignment -./resource.ps1 aws_sesv2_dedicated_ip_pool -./resource.ps1 aws_sesv2_email_identity -./resource.ps1 aws_sesv2_email_identity_feedback_attributes -./resource.ps1 aws_sesv2_email_identity_mail_from_attributes -./resource.ps1 aws_sesv2_email_identity_policy -./resource.ps1 aws_shield_application_layer_automatic_response -./resource.ps1 aws_shield_drt_access_log_bucket_association -./resource.ps1 aws_shield_drt_access_role_arn_association -./resource.ps1 aws_shield_protection_health_check_association -./resource.ps1 aws_shield_subscription -./resource.ps1 aws_spot_datafeed_subscription -./resource.ps1 aws_ssm_activation -./resource.ps1 aws_ssm_default_patch_baseline -./resource.ps1 aws_ssm_service_setting -./resource.ps1 aws_ssmquicksetup_configuration_manager -./resource.ps1 aws_ssoadmin_account_assignment -./resource.ps1 aws_ssoadmin_application_access_scope -./resource.ps1 aws_ssoadmin_application_assignment_configuration -./resource.ps1 aws_ssoadmin_customer_managed_policy_attachment -./resource.ps1 aws_ssoadmin_instance_access_control_attributes -./resource.ps1 aws_ssoadmin_managed_policy_attachment -./resource.ps1 aws_ssoadmin_permission_set_inline_policy -./resource.ps1 aws_ssoadmin_permissions_boundary_attachment -./resource.ps1 aws_ssoadmin_trusted_token_issuer -./resource.ps1 aws_transfer_access -./resource.ps1 aws_transfer_server -./resource.ps1 aws_transfer_ssh_key -./resource.ps1 aws_transfer_tag -./resource.ps1 aws_transfer_user -./resource.ps1 aws_verifiedaccess_instance_trust_provider_attachment -./resource.ps1 aws_verifiedpermissions_schema -./resource.ps1 aws_vpc_block_public_access_exclusion -./resource.ps1 aws_vpc_block_public_access_options -./resource.ps1 aws_vpc_endpoint_connection_accepter -./resource.ps1 aws_vpc_endpoint_policy -./resource.ps1 aws_vpc_endpoint_private_dns -./resource.ps1 aws_vpc_endpoint_security_group_association -./resource.ps1 aws_vpc_endpoint_service_allowed_principal -./resource.ps1 aws_vpc_endpoint_service_private_dns_verification -./resource.ps1 aws_vpc_ipam_organization_admin_account -./resource.ps1 aws_vpc_ipv6_cidr_block_association -./resource.ps1 aws_vpc_network_performance_metric_subscription -./resource.ps1 aws_vpc_security_group_vpc_association -./resource.ps1 aws_wafregional_web_acl_association -./resource.ps1 aws_worklink_fleet -./resource.ps1 aws_worklink_website_certificate_authority_association -./resource.ps1 aws_cloudwatch_event_buses -type data -./resource.ps1 aws_ecs_clusters -type data +```shell +./resource.ps1 aws_appsync_api +./resource.ps1 aws_appsync_channel_namespace +./resource.ps1 aws_bedrockagent_flow +./resource.ps1 aws_bedrockagentcore_agent_runtime +./resource.ps1 aws_bedrockagentcore_agent_runtime_endpoint +./resource.ps1 aws_bedrockagentcore_api_key_credential_provider +./resource.ps1 aws_bedrockagentcore_browser +./resource.ps1 aws_bedrockagentcore_code_interpreter +./resource.ps1 aws_bedrockagentcore_gateway +./resource.ps1 aws_bedrockagentcore_gateway_target +./resource.ps1 aws_bedrockagentcore_memory +./resource.ps1 aws_bedrockagentcore_memory_strategy +./resource.ps1 aws_bedrockagentcore_oauth2_credential_provider +./resource.ps1 aws_bedrockagentcore_token_vault_cmk +./resource.ps1 aws_bedrockagentcore_workload_identity +./resource.ps1 aws_cognito_log_delivery_configuration +./resource.ps1 aws_cognito_managed_login_branding +./resource.ps1 aws_connect_phone_number_contact_flow_association +./resource.ps1 aws_controltower_baseline +./resource.ps1 aws_ec2_allowed_images_settings +./resource.ps1 aws_fis_target_account_configuration +./resource.ps1 aws_fsx_s3_access_point_attachment +./resource.ps1 aws_invoicing_invoice_unit +./resource.ps1 aws_lakeformation_identity_center_configuration +./resource.ps1 aws_lakeformation_lf_tag_expression +./resource.ps1 aws_nat_gateway_eip_association +./resource.ps1 aws_networkfirewall_firewall_transit_gateway_attachment_accepter +./resource.ps1 aws_networkfirewall_vpc_endpoint_association +./resource.ps1 aws_networkflowmonitor_monitor +./resource.ps1 aws_networkflowmonitor_scope +./resource.ps1 aws_observabilityadmin_centralization_rule_for_organization +./resource.ps1 aws_odb_cloud_autonomous_vm_cluster +./resource.ps1 aws_odb_cloud_exadata_infrastructure +./resource.ps1 aws_odb_cloud_vm_cluster +./resource.ps1 aws_odb_network +./resource.ps1 aws_odb_network_peering_connection +./resource.ps1 aws_prometheus_query_logging_configuration +./resource.ps1 aws_prometheus_resource_policy +./resource.ps1 aws_quicksight_custom_permissions +./resource.ps1 aws_quicksight_ip_restriction +./resource.ps1 aws_quicksight_key_registration +./resource.ps1 aws_quicksight_role_custom_permission +./resource.ps1 aws_quicksight_user_custom_permission +./resource.ps1 aws_s3_bucket_metadata_configuration +./resource.ps1 aws_timestreaminfluxdb_db_cluster +./resource.ps1 aws_transfer_host_key +./resource.ps1 aws_transfer_web_app +./resource.ps1 aws_transfer_web_app_customization +./resource.ps1 aws_vpc_route_server_endpoint +./resource.ps1 aws_vpc_route_server_peer +./resource.ps1 aws_wafv2_web_acl_rule_group_association +./resource.ps1 aws_workspacesweb_browser_settings_association +./resource.ps1 aws_workspacesweb_data_protection_settings_association +./resource.ps1 aws_workspacesweb_identity_provider +./resource.ps1 aws_workspacesweb_ip_access_settings_association +./resource.ps1 aws_workspacesweb_network_settings_association +./resource.ps1 aws_workspacesweb_portal +./resource.ps1 aws_workspacesweb_session_logger +./resource.ps1 aws_workspacesweb_session_logger_association +./resource.ps1 aws_workspacesweb_trust_store +./resource.ps1 aws_workspacesweb_trust_store_association +./resource.ps1 aws_workspacesweb_user_access_logging_settings_association +./resource.ps1 aws_workspacesweb_user_settings_association +``` diff --git a/src/coverage/azure.md b/src/coverage/azure.md index 9dc5e002..c991e42e 100755 --- a/src/coverage/azure.md +++ b/src/coverage/azure.md @@ -1,14 +1,19 @@ -# todo azure +# Azure Resource Status -Resource percentage coverage 4.60 -Datasource percentage coverage 35.67 +| Terraform | Coverage % | Resources | Total Resources | +|------------|------------|-----------|-----------------| +| Resources | 4.39 | 49 | 1115 | +| Datasource | 30.65 | 122 | 398 | +```shell ./resource.ps1 azurerm_aadb2c_directory ./resource.ps1 azurerm_active_directory_domain_service ./resource.ps1 azurerm_active_directory_domain_service_replica_set ./resource.ps1 azurerm_active_directory_domain_service_trust ./resource.ps1 azurerm_advanced_threat_protection ./resource.ps1 azurerm_advisor_suppression +./resource.ps1 azurerm_ai_foundry +./resource.ps1 azurerm_ai_foundry_project ./resource.ps1 azurerm_ai_services ./resource.ps1 azurerm_analysis_services_server ./resource.ps1 azurerm_api_connection @@ -55,9 +60,15 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_api_management_product_policy ./resource.ps1 azurerm_api_management_product_tag ./resource.ps1 azurerm_api_management_redis_cache +./resource.ps1 azurerm_api_management_standalone_gateway ./resource.ps1 azurerm_api_management_subscription ./resource.ps1 azurerm_api_management_tag ./resource.ps1 azurerm_api_management_user +./resource.ps1 azurerm_api_management_workspace +./resource.ps1 azurerm_api_management_workspace_api_version_set +./resource.ps1 azurerm_api_management_workspace_certificate +./resource.ps1 azurerm_api_management_workspace_policy +./resource.ps1 azurerm_api_management_workspace_policy_fragment ./resource.ps1 azurerm_app_configuration_feature ./resource.ps1 azurerm_app_configuration_key ./resource.ps1 azurerm_app_service_active_slot @@ -86,11 +97,13 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_application_insights_workbook_template ./resource.ps1 azurerm_application_load_balancer ./resource.ps1 azurerm_application_load_balancer_frontend +./resource.ps1 azurerm_application_load_balancer_security_policy ./resource.ps1 azurerm_application_load_balancer_subnet_association ./resource.ps1 azurerm_application_security_group ./resource.ps1 azurerm_arc_kubernetes_cluster ./resource.ps1 azurerm_arc_kubernetes_cluster_extension ./resource.ps1 azurerm_arc_kubernetes_flux_configuration +./resource.ps1 azurerm_arc_kubernetes_provisioned_cluster ./resource.ps1 azurerm_arc_machine ./resource.ps1 azurerm_arc_machine_automanage_configuration_assignment ./resource.ps1 azurerm_arc_machine_extension @@ -176,6 +189,7 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_chaos_studio_target ./resource.ps1 azurerm_cognitive_account_customer_managed_key ./resource.ps1 azurerm_cognitive_account_rai_blocklist +./resource.ps1 azurerm_cognitive_account_rai_policy ./resource.ps1 azurerm_cognitive_deployment ./resource.ps1 azurerm_communication_service ./resource.ps1 azurerm_communication_service_email_domain_association @@ -195,6 +209,7 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_container_group ./resource.ps1 azurerm_container_registry_agent_pool ./resource.ps1 azurerm_container_registry_cache_rule +./resource.ps1 azurerm_container_registry_credential_set ./resource.ps1 azurerm_container_registry_scope_map ./resource.ps1 azurerm_container_registry_task ./resource.ps1 azurerm_container_registry_task_schedule_run_now @@ -235,6 +250,7 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_data_factory_credential_service_principal ./resource.ps1 azurerm_data_factory_credential_user_managed_identity ./resource.ps1 azurerm_data_factory_custom_dataset +./resource.ps1 azurerm_data_factory_customer_managed_key ./resource.ps1 azurerm_data_factory_data_flow ./resource.ps1 azurerm_data_factory_dataset_azure_blob ./resource.ps1 azurerm_data_factory_dataset_azure_sql_table @@ -293,6 +309,7 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_data_protection_backup_policy_postgresql ./resource.ps1 azurerm_data_protection_backup_policy_postgresql_flexible_server ./resource.ps1 azurerm_data_protection_backup_vault +./resource.ps1 azurerm_data_protection_backup_vault_customer_managed_key ./resource.ps1 azurerm_data_protection_resource_guard ./resource.ps1 azurerm_data_share ./resource.ps1 azurerm_data_share_account @@ -339,16 +356,21 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_dns_srv_record ./resource.ps1 azurerm_dns_txt_record ./resource.ps1 azurerm_dynatrace_monitor +./resource.ps1 azurerm_dynatrace_tag_rules ./resource.ps1 azurerm_elastic_cloud_elasticsearch ./resource.ps1 azurerm_elastic_san ./resource.ps1 azurerm_elastic_san_volume ./resource.ps1 azurerm_elastic_san_volume_group ./resource.ps1 azurerm_email_communication_service ./resource.ps1 azurerm_email_communication_service_domain +./resource.ps1 azurerm_email_communication_service_domain_sender_username ./resource.ps1 azurerm_eventgrid_domain ./resource.ps1 azurerm_eventgrid_domain_topic ./resource.ps1 azurerm_eventgrid_event_subscription ./resource.ps1 azurerm_eventgrid_namespace +./resource.ps1 azurerm_eventgrid_partner_configuration +./resource.ps1 azurerm_eventgrid_partner_namespace +./resource.ps1 azurerm_eventgrid_partner_registration ./resource.ps1 azurerm_eventgrid_system_topic ./resource.ps1 azurerm_eventgrid_system_topic_event_subscription ./resource.ps1 azurerm_eventgrid_topic @@ -386,6 +408,7 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_function_app ./resource.ps1 azurerm_function_app_active_slot ./resource.ps1 azurerm_function_app_connection +./resource.ps1 azurerm_function_app_flex_consumption ./resource.ps1 azurerm_function_app_function ./resource.ps1 azurerm_function_app_hybrid_connection ./resource.ps1 azurerm_function_app_slot @@ -520,6 +543,7 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_machine_learning_workspace ./resource.ps1 azurerm_machine_learning_workspace_network_outbound_rule_fqdn ./resource.ps1 azurerm_machine_learning_workspace_network_outbound_rule_private_endpoint +./resource.ps1 azurerm_machine_learning_workspace_network_outbound_rule_service_tag ./resource.ps1 azurerm_maintenance_assignment_dedicated_host ./resource.ps1 azurerm_maintenance_assignment_dynamic_scope ./resource.ps1 azurerm_maintenance_assignment_virtual_machine @@ -529,9 +553,12 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_managed_application_definition ./resource.ps1 azurerm_managed_disk_sas_token ./resource.ps1 azurerm_managed_lustre_file_system +./resource.ps1 azurerm_managed_redis +./resource.ps1 azurerm_managed_redis_geo_replication ./resource.ps1 azurerm_management_group_policy_assignment ./resource.ps1 azurerm_management_group_policy_exemption ./resource.ps1 azurerm_management_group_policy_remediation +./resource.ps1 azurerm_management_group_policy_set_definition ./resource.ps1 azurerm_management_group_subscription_association ./resource.ps1 azurerm_management_group_template_deployment ./resource.ps1 azurerm_management_lock @@ -553,6 +580,7 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_mobile_network_site ./resource.ps1 azurerm_mobile_network_slice ./resource.ps1 azurerm_mongo_cluster +./resource.ps1 azurerm_mongo_cluster_firewall_rule ./resource.ps1 azurerm_monitor_aad_diagnostic_setting ./resource.ps1 azurerm_monitor_action_group ./resource.ps1 azurerm_monitor_activity_log_alert @@ -578,13 +606,18 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_mssql_elasticpool ./resource.ps1 azurerm_mssql_failover_group ./resource.ps1 azurerm_mssql_firewall_rule +./resource.ps1 azurerm_mssql_job ./resource.ps1 azurerm_mssql_job_agent ./resource.ps1 azurerm_mssql_job_credential +./resource.ps1 azurerm_mssql_job_schedule +./resource.ps1 azurerm_mssql_job_step +./resource.ps1 azurerm_mssql_job_target_group ./resource.ps1 azurerm_mssql_managed_database ./resource.ps1 azurerm_mssql_managed_instance ./resource.ps1 azurerm_mssql_managed_instance_active_directory_administrator ./resource.ps1 azurerm_mssql_managed_instance_failover_group ./resource.ps1 azurerm_mssql_managed_instance_security_alert_policy +./resource.ps1 azurerm_mssql_managed_instance_start_stop_schedule ./resource.ps1 azurerm_mssql_managed_instance_transparent_data_encryption ./resource.ps1 azurerm_mssql_managed_instance_vulnerability_assessment ./resource.ps1 azurerm_mssql_outbound_firewall_rule @@ -615,6 +648,7 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_netapp_snapshot ./resource.ps1 azurerm_netapp_snapshot_policy ./resource.ps1 azurerm_netapp_volume +./resource.ps1 azurerm_netapp_volume_group_oracle ./resource.ps1 azurerm_netapp_volume_group_sap_hana ./resource.ps1 azurerm_netapp_volume_quota_rule ./resource.ps1 azurerm_network_connection_monitor @@ -631,15 +665,23 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_network_manager_admin_rule_collection ./resource.ps1 azurerm_network_manager_connectivity_configuration ./resource.ps1 azurerm_network_manager_deployment +./resource.ps1 azurerm_network_manager_ipam_pool +./resource.ps1 azurerm_network_manager_ipam_pool_static_cidr ./resource.ps1 azurerm_network_manager_management_group_connection ./resource.ps1 azurerm_network_manager_network_group +./resource.ps1 azurerm_network_manager_routing_configuration +./resource.ps1 azurerm_network_manager_routing_rule +./resource.ps1 azurerm_network_manager_routing_rule_collection ./resource.ps1 azurerm_network_manager_scope_connection ./resource.ps1 azurerm_network_manager_security_admin_configuration ./resource.ps1 azurerm_network_manager_static_member ./resource.ps1 azurerm_network_manager_subscription_connection +./resource.ps1 azurerm_network_manager_verifier_workspace +./resource.ps1 azurerm_network_manager_verifier_workspace_reachability_analysis_intent ./resource.ps1 azurerm_network_profile ./resource.ps1 azurerm_new_relic_monitor ./resource.ps1 azurerm_new_relic_tag_rule +./resource.ps1 azurerm_nginx_api_key ./resource.ps1 azurerm_nginx_certificate ./resource.ps1 azurerm_nginx_configuration ./resource.ps1 azurerm_nginx_deployment @@ -647,8 +689,13 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_notification_hub_authorization_rule ./resource.ps1 azurerm_notification_hub_namespace ./resource.ps1 azurerm_oracle_autonomous_database +./resource.ps1 azurerm_oracle_autonomous_database_backup +./resource.ps1 azurerm_oracle_autonomous_database_clone_from_backup +./resource.ps1 azurerm_oracle_autonomous_database_clone_from_database ./resource.ps1 azurerm_oracle_cloud_vm_cluster ./resource.ps1 azurerm_oracle_exadata_infrastructure +./resource.ps1 azurerm_oracle_exascale_database_storage_vault +./resource.ps1 azurerm_oracle_resource_anchor ./resource.ps1 azurerm_orbital_contact ./resource.ps1 azurerm_orbital_contact_profile ./resource.ps1 azurerm_orbital_spacecraft @@ -679,6 +726,7 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_postgresql_firewall_rule ./resource.ps1 azurerm_postgresql_flexible_server ./resource.ps1 azurerm_postgresql_flexible_server_active_directory_administrator +./resource.ps1 azurerm_postgresql_flexible_server_backup ./resource.ps1 azurerm_postgresql_flexible_server_configuration ./resource.ps1 azurerm_postgresql_flexible_server_database ./resource.ps1 azurerm_postgresql_flexible_server_firewall_rule @@ -708,6 +756,7 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_public_ip ./resource.ps1 azurerm_public_ip_prefix ./resource.ps1 azurerm_purview_account +./resource.ps1 azurerm_qumulo_file_system ./resource.ps1 azurerm_recovery_services_vault ./resource.ps1 azurerm_recovery_services_vault_resource_guard_association ./resource.ps1 azurerm_redhat_openshift_cluster @@ -788,6 +837,7 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_service_fabric_managed_cluster ./resource.ps1 azurerm_servicebus_namespace ./resource.ps1 azurerm_servicebus_namespace_authorization_rule +./resource.ps1 azurerm_servicebus_namespace_customer_managed_key ./resource.ps1 azurerm_servicebus_namespace_disaster_recovery_config ./resource.ps1 azurerm_servicebus_queue ./resource.ps1 azurerm_servicebus_queue_authorization_rule @@ -819,7 +869,6 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_site_recovery_vmware_replication_policy_association ./resource.ps1 azurerm_snapshot ./resource.ps1 azurerm_source_control_token -./resource.ps1 azurerm_spatial_anchors_account ./resource.ps1 azurerm_spring_cloud_accelerator ./resource.ps1 azurerm_spring_cloud_active_deployment ./resource.ps1 azurerm_spring_cloud_api_portal @@ -850,7 +899,6 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_spring_cloud_new_relic_application_performance_monitoring ./resource.ps1 azurerm_spring_cloud_service ./resource.ps1 azurerm_spring_cloud_storage -./resource.ps1 azurerm_sql_database ./resource.ps1 azurerm_sql_firewall_rule ./resource.ps1 azurerm_sql_server ./resource.ps1 azurerm_sql_virtual_network_rule @@ -898,6 +946,7 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_stream_analytics_function_javascript_udf ./resource.ps1 azurerm_stream_analytics_job ./resource.ps1 azurerm_stream_analytics_job_schedule +./resource.ps1 azurerm_stream_analytics_job_storage_account ./resource.ps1 azurerm_stream_analytics_managed_private_endpoint ./resource.ps1 azurerm_stream_analytics_output_blob ./resource.ps1 azurerm_stream_analytics_output_cosmosdb @@ -951,6 +1000,8 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_system_center_virtual_machine_manager_availability_set ./resource.ps1 azurerm_system_center_virtual_machine_manager_cloud ./resource.ps1 azurerm_system_center_virtual_machine_manager_server +./resource.ps1 azurerm_system_center_virtual_machine_manager_virtual_machine_instance +./resource.ps1 azurerm_system_center_virtual_machine_manager_virtual_machine_instance_guest_agent ./resource.ps1 azurerm_system_center_virtual_machine_manager_virtual_machine_template ./resource.ps1 azurerm_system_center_virtual_machine_manager_virtual_network ./resource.ps1 azurerm_tenant_template_deployment @@ -987,6 +1038,7 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_virtual_machine_run_command ./resource.ps1 azurerm_virtual_machine_scale_set_extension ./resource.ps1 azurerm_virtual_machine_scale_set_packet_capture +./resource.ps1 azurerm_virtual_machine_scale_set_standby_pool ./resource.ps1 azurerm_virtual_network_dns_servers ./resource.ps1 azurerm_virtual_network_gateway ./resource.ps1 azurerm_virtual_network_gateway_connection @@ -1012,6 +1064,7 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_web_pubsub_network_acl ./resource.ps1 azurerm_web_pubsub_service ./resource.ps1 azurerm_web_pubsub_shared_private_link_resource +./resource.ps1 azurerm_web_pubsub_socketio ./resource.ps1 azurerm_windows_function_app ./resource.ps1 azurerm_windows_function_app_slot ./resource.ps1 azurerm_windows_web_app @@ -1022,8 +1075,10 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_aadb2c_directory -type data ./resource.ps1 azurerm_active_directory_domain_service -type data ./resource.ps1 azurerm_advisor_recommendations -type data +./resource.ps1 azurerm_api_connection -type data +./resource.ps1 azurerm_api_management_subscription -type data ./resource.ps1 azurerm_arc_resource_bridge_appliance -type data -./resource.ps1 azurerm_attestation -type data +./resource.ps1 azurerm_attestation_provider -type data ./resource.ps1 azurerm_automation_runbook -type data ./resource.ps1 azurerm_billing_enrollment_account_scope -type data ./resource.ps1 azurerm_billing_mca_account_scope -type data @@ -1044,8 +1099,8 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_consumption_budget_resource_group -type data ./resource.ps1 azurerm_consumption_budget_subscription -type data ./resource.ps1 azurerm_container_app -type data -./resource.ps1 azurerm_container_app_environment. -type data -./resource.ps1 azurerm_container_app_environment_certificate. -type data +./resource.ps1 azurerm_container_app_environment -type data +./resource.ps1 azurerm_container_app_environment_certificate -type data ./resource.ps1 azurerm_container_app_environment_dapr_component. -type data ./resource.ps1 azurerm_container_group -type data ./resource.ps1 azurerm_container_registry -type data @@ -1056,6 +1111,7 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_cosmosdb_mongo_database -type data ./resource.ps1 azurerm_cosmosdb_restorable_database_accounts -type data ./resource.ps1 azurerm_cosmosdb_sql_database -type data +./resource.ps1 azurerm_cosmosdb_sql_role_definition -type data ./resource.ps1 azurerm_dashboard_grafana -type data ./resource.ps1 azurerm_data_factory -type data ./resource.ps1 azurerm_data_factory_trigger_schedule -type data @@ -1071,11 +1127,22 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_data_share_dataset_kusto_database -type data ./resource.ps1 azurerm_database_migration_project -type data ./resource.ps1 azurerm_database_migration_service -type data +./resource.ps1 azurerm_databox_edge_device -type data ./resource.ps1 azurerm_databricks_access_connector -type data ./resource.ps1 azurerm_databricks_workspace -type data ./resource.ps1 azurerm_databricks_workspace_private_endpoint_connection -type data ./resource.ps1 azurerm_dedicated_host -type data ./resource.ps1 azurerm_dedicated_host_group -type data +./resource.ps1 azurerm_dev_center -type data +./resource.ps1 azurerm_dev_center_attached_network -type data +./resource.ps1 azurerm_dev_center_catalog -type data +./resource.ps1 azurerm_dev_center_dev_box_definition -type data +./resource.ps1 azurerm_dev_center_environment_type -type data +./resource.ps1 azurerm_dev_center_gallery -type data +./resource.ps1 azurerm_dev_center_network_connection -type data +./resource.ps1 azurerm_dev_center_project -type data +./resource.ps1 azurerm_dev_center_project_environment_type -type data +./resource.ps1 azurerm_dev_center_project_pool -type data ./resource.ps1 azurerm_digital_twins_instance -type data ./resource.ps1 azurerm_disk_access -type data ./resource.ps1 azurerm_disk_encryption_set -type data @@ -1090,15 +1157,19 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_dns_srv_record -type data ./resource.ps1 azurerm_dns_txt_record -type data ./resource.ps1 azurerm_dns_zone -type data +./resource.ps1 azurerm_dynatrace_monitor -type data ./resource.ps1 azurerm_elastic_cloud_elasticsearch -type data ./resource.ps1 azurerm_elastic_san -type data ./resource.ps1 azurerm_elastic_san_volume_group -type data ./resource.ps1 azurerm_elastic_san_volume_snapshot -type data ./resource.ps1 azurerm_eventgrid_domain -type data ./resource.ps1 azurerm_eventgrid_domain_topic -type data +./resource.ps1 azurerm_eventgrid_partner_namespace -type data +./resource.ps1 azurerm_eventgrid_partner_registration -type data ./resource.ps1 azurerm_eventgrid_system_topic -type data ./resource.ps1 azurerm_eventgrid_topic -type data ./resource.ps1 azurerm_eventhub -type data +./resource.ps1 azurerm_eventhub_authorization_rule -type data ./resource.ps1 azurerm_eventhub_cluster -type data ./resource.ps1 azurerm_eventhub_consumer_group -type data ./resource.ps1 azurerm_eventhub_namespace -type data @@ -1106,11 +1177,13 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_eventhub_sas -type data ./resource.ps1 azurerm_express_route_circuit -type data ./resource.ps1 azurerm_express_route_circuit_peering -type data +./resource.ps1 azurerm_extended_location_custom_location -type data ./resource.ps1 azurerm_extended_locations -type data ./resource.ps1 azurerm_firewall -type data ./resource.ps1 azurerm_firewall_policy -type data ./resource.ps1 azurerm_function_app -type data ./resource.ps1 azurerm_function_app_host_keys -type data +./resource.ps1 azurerm_graph_services_account -type data ./resource.ps1 azurerm_hdinsight_cluster -type data ./resource.ps1 azurerm_healthcare_dicom_service -type data ./resource.ps1 azurerm_healthcare_fhir_service -type data @@ -1143,6 +1216,7 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_local_network_gateway -type data ./resource.ps1 azurerm_location -type data ./resource.ps1 azurerm_log_analytics_workspace -type data +./resource.ps1 azurerm_log_analytics_workspace_table -type data ./resource.ps1 azurerm_logic_app_integration_account -type data ./resource.ps1 azurerm_logic_app_standard -type data ./resource.ps1 azurerm_logic_app_workflow -type data @@ -1151,9 +1225,23 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_managed_api -type data ./resource.ps1 azurerm_managed_application_definition -type data ./resource.ps1 azurerm_managed_disk -type data +./resource.ps1 azurerm_managed_disks -type data +./resource.ps1 azurerm_managed_redis -type data ./resource.ps1 azurerm_management_group -type data ./resource.ps1 azurerm_management_group_template_deployment -type data ./resource.ps1 azurerm_maps_account -type data +./resource.ps1 azurerm_marketplace_agreement -type data +./resource.ps1 azurerm_mobile_network -type data +./resource.ps1 azurerm_mobile_network_attached_data_network -type data +./resource.ps1 azurerm_mobile_network_data_network -type data +./resource.ps1 azurerm_mobile_network_packet_core_control_plane -type data +./resource.ps1 azurerm_mobile_network_packet_core_data_plane -type data +./resource.ps1 azurerm_mobile_network_service -type data +./resource.ps1 azurerm_mobile_network_sim -type data +./resource.ps1 azurerm_mobile_network_sim_group -type data +./resource.ps1 azurerm_mobile_network_sim_policy -type data +./resource.ps1 azurerm_mobile_network_site -type data +./resource.ps1 azurerm_mobile_network_slice -type data ./resource.ps1 azurerm_monitor_action_group -type data ./resource.ps1 azurerm_monitor_data_collection_endpoint -type data ./resource.ps1 azurerm_monitor_data_collection_rule -type data @@ -1163,23 +1251,32 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_monitor_workspace -type data ./resource.ps1 azurerm_mssql_database -type data ./resource.ps1 azurerm_mssql_elasticpool -type data +./resource.ps1 azurerm_mssql_failover_group -type data ./resource.ps1 azurerm_mssql_managed_database -type data ./resource.ps1 azurerm_mssql_managed_instance -type data ./resource.ps1 azurerm_mssql_server -type data +./resource.ps1 azurerm_mysql_flexible_server -type data ./resource.ps1 azurerm_nat_gateway -type data ./resource.ps1 azurerm_netapp_account -type data ./resource.ps1 azurerm_netapp_account_encryption -type data +./resource.ps1 azurerm_netapp_backup_policy -type data +./resource.ps1 azurerm_netapp_backup_vault -type data ./resource.ps1 azurerm_netapp_pool -type data ./resource.ps1 azurerm_netapp_snapshot -type data ./resource.ps1 azurerm_netapp_snapshot_policy -type data ./resource.ps1 azurerm_netapp_volume -type data +./resource.ps1 azurerm_netapp_volume_group_oracle -type data ./resource.ps1 azurerm_netapp_volume_group_sap_hana -type data ./resource.ps1 azurerm_netapp_volume_quota_rule -type data ./resource.ps1 azurerm_network_ddos_protection_plan -type data ./resource.ps1 azurerm_network_interface -type data +./resource.ps1 azurerm_network_manager -type data ./resource.ps1 azurerm_network_manager_connectivity_configuration -type data +./resource.ps1 azurerm_network_manager_ipam_pool -type data +./resource.ps1 azurerm_network_manager_network_group -type data ./resource.ps1 azurerm_network_security_group -type data ./resource.ps1 azurerm_network_service_tags -type data +./resource.ps1 azurerm_nginx_api_key -type data ./resource.ps1 azurerm_nginx_certificate -type data ./resource.ps1 azurerm_nginx_configuration -type data ./resource.ps1 azurerm_nginx_deployment -type data @@ -1188,13 +1285,20 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_oracle_adbs_character_sets -type data ./resource.ps1 azurerm_oracle_adbs_national_character_sets -type data ./resource.ps1 azurerm_oracle_autonomous_database -type data +./resource.ps1 azurerm_oracle_autonomous_database_backup -type data +./resource.ps1 azurerm_oracle_autonomous_database_backups -type data +./resource.ps1 azurerm_oracle_autonomous_database_clone_from_backup -type data +./resource.ps1 azurerm_oracle_autonomous_database_clone_from_database -type data ./resource.ps1 azurerm_oracle_cloud_vm_cluster -type data ./resource.ps1 azurerm_oracle_db_nodes -type data ./resource.ps1 azurerm_oracle_db_servers -type data ./resource.ps1 azurerm_oracle_db_system_shapes -type data ./resource.ps1 azurerm_oracle_exadata_infrastructure -type data +./resource.ps1 azurerm_oracle_exascale_database_storage_vault -type data ./resource.ps1 azurerm_oracle_gi_versions -type data +./resource.ps1 azurerm_oracle_resource_anchor -type data ./resource.ps1 azurerm_orchestrated_virtual_machine_scale_set -type data +./resource.ps1 azurerm_palo_alto_local_rulestack -type data ./resource.ps1 azurerm_platform_image -type data ./resource.ps1 azurerm_policy_assignment -type data ./resource.ps1 azurerm_policy_definition -type data @@ -1226,16 +1330,22 @@ Datasource percentage coverage 35.67 ./resource.ps1 azurerm_proximity_placement_group -type data ./resource.ps1 azurerm_public_maintenance_configurations -type data ./resource.ps1 azurerm_recovery_services_vault -type data +./resource.ps1 azurerm_role_assignments -type data ./resource.ps1 azurerm_role_management_policy -type data +./resource.ps1 azurerm_search_service -type data ./resource.ps1 azurerm_sentinel_alert_rule_anomaly -type data +./resource.ps1 azurerm_servicebus_namespace_disaster_recovery_config -type data ./resource.ps1 azurerm_servicebus_topic_authorization_rule -type data +./resource.ps1 azurerm_site_recovery_replication_recovery_plan -type data +./resource.ps1 azurerm_stack_hci_storage_path -type data ./resource.ps1 azurerm_static_web_app -type data ./resource.ps1 azurerm_storage_queue -type data ./resource.ps1 azurerm_storage_table -type data +./resource.ps1 azurerm_storage_table_entities -type data ./resource.ps1 azurerm_system_center_virtual_machine_manager_inventory_items -type data +./resource.ps1 azurerm_trusted_signing_account -type data ./resource.ps1 azurerm_virtual_desktop_application_group -type data ./resource.ps1 azurerm_virtual_desktop_workspace -type data ./resource.ps1 azurerm_virtual_network_peering -type data ./resource.ps1 azurerm_vpn_server_configuration -type data -./resource.ps1 netapp_backup_policy -type data -./resource.ps1 netapp_backup_vault -type data +``` diff --git a/src/coverage/coverage.go b/src/coverage/coverage.go index 10ebd9eb..a70dcd66 100644 --- a/src/coverage/coverage.go +++ b/src/coverage/coverage.go @@ -19,7 +19,7 @@ type members struct { func coverageAWS() error { data := importMembers("../parse/aws-members.json") missing := members{} - target := "" + target := "```shell\n" for _, myData := range data.Resources { if temp := pike.AwsLookup(myData); temp == nil { @@ -38,15 +38,12 @@ func coverageAWS() error { } } } + target += "```\n" - Prepend := "# todo aws \n\n" - - Prepend += fmt.Sprintf("Resource percentage coverage %3.2f \n", percent(missing.Resources, data.Resources)) - Prepend += fmt.Sprintf("Datasource percentage coverage %3.2f \n\n", percent(missing.DataSources, data.DataSources)) + Prepend := resourceTable(missing, data, "AWS") target = Prepend + target err := os.WriteFile("aws.md", []byte(target), 0o700) - if err != nil { return &fileWriteError{err} } @@ -66,7 +63,7 @@ func (e *fileWriteError) Error() string { func coverageAzure() error { data := importMembers("../parse/azurerm-members.json") missing := members{} - target := "" + target := "```shell\n" for _, myData := range data.Resources { if temp := pike.AzureLookup(myData); temp == nil { @@ -81,12 +78,9 @@ func coverageAzure() error { target += "./resource.ps1 " + myData + " -type data\n" } } + target += "```\n" - Prepend := "# todo azure \n\n" - - Prepend += fmt.Sprintf("Resource percentage coverage %3.2f \n", percent(missing.Resources, data.Resources)) - Prepend += fmt.Sprintf("Datasource percentage coverage %3.2f \n\n", percent(missing.DataSources, data.DataSources)) - + Prepend := resourceTable(missing, data, "Azure") target = Prepend + target err := os.WriteFile("azure.md", []byte(target), 0o700) @@ -101,7 +95,7 @@ func coverageAzure() error { func coverageGcp() error { data := importMembers("../parse/google-members.json") missing := members{} - target := "" + target := "```shell\n" for _, myData := range data.Resources { if temp := pike.GCPLookup(myData); temp == nil { @@ -116,22 +110,34 @@ func coverageGcp() error { target += "./resource.ps1 " + myData + " -type data\n" } } + target += "```\n" - Prepend := "# todo google \n\n" - - Prepend += fmt.Sprintf("Resource percentage coverage %3.2f \n", percent(missing.Resources, data.Resources)) - Prepend += fmt.Sprintf("Datasource percentage coverage %3.2f \n\n", percent(missing.DataSources, data.DataSources)) + Prepend := resourceTable(missing, data, "Google") target = Prepend + target err := os.WriteFile("google.md", []byte(target), 0o700) if err != nil { - return &fileWriteError{} + + return &fileWriteError{err} } return nil } +func resourceTable(missing members, data members, cloud string) string { + Prepend := fmt.Sprintf("# %s Resource Status\n\n", cloud) + Prepend += fmt.Sprintf("| Terraform | Coverage %% | Resources | Total Resources |\n") + Prepend += fmt.Sprintf("|------------|------------|-----------|-----------------|\n") + Prepend += fmt.Sprintf("| Resources | %3.2f | %5d | %5d |\n", + percent(missing.Resources, data.Resources), + len(data.Resources)-len(missing.Resources), len(data.Resources)) + Prepend += fmt.Sprintf("| Datasource | %3.2f | %5d | %5d |\n\n", + percent(missing.DataSources, data.DataSources), + len(data.DataSources)-len(missing.DataSources), len(data.DataSources)) + return Prepend +} + func importMembers(targetMembers string) members { fileName, _ := filepath.Abs(targetMembers) file, _ := os.ReadFile(fileName) diff --git a/src/coverage/coverage_internal_test.go b/src/coverage/coverage_internal_test.go new file mode 100644 index 00000000..93b3e1d1 --- /dev/null +++ b/src/coverage/coverage_internal_test.go @@ -0,0 +1,213 @@ +package coverage + +import ( + "encoding/json" + "os" + "path/filepath" + "strings" + "testing" + + pike "github.com/jameswoolfenden/pike/src" +) + +// Helper function to create test JSON file +func createTestMembersFile(t *testing.T, data members) string { + tempDir := t.TempDir() + filePath := filepath.Join(tempDir, "test-members.json") + + jsonData, err := json.Marshal(data) + if err != nil { + t.Fatalf("Failed to marshal test data: %v", err) + } + + err = os.WriteFile(filePath, jsonData, 0644) + if err != nil { + t.Fatalf("Failed to write test file: %v", err) + } + + return filePath +} + +// Test the data sources processing logic specifically +func TestCoverageAWS_DataSourcesProcessing(t *testing.T) { + tests := []struct { + name string + dataSources []string + expectedMissing []string + expectedTargetLines int + }{ + { + name: "empty data sources", + dataSources: []string{}, + expectedMissing: []string{}, + expectedTargetLines: 0, + }, + { + name: "aws data source not in pike lookup", + dataSources: []string{"aws_s3_bucket_duff"}, + expectedMissing: []string{"aws_s3_bucket_duff"}, + expectedTargetLines: 1, + }, + { + name: "non-aws data source not in pike lookup", + dataSources: []string{"google_storage_bucket"}, + expectedMissing: []string{}, + expectedTargetLines: 0, + }, + { + name: "mixed aws and non-aws data sources", + dataSources: []string{"aws_s3_bucket_duff", "google_storage_bucket", "aws_ec2_instance"}, + expectedMissing: []string{"aws_s3_bucket_duff", "aws_ec2_instance"}, + expectedTargetLines: 2, + }, + { + name: "data source containing aws in middle", + dataSources: []string{"terraform_aws_s3_bucket"}, + expectedMissing: []string{"terraform_aws_s3_bucket"}, + expectedTargetLines: 1, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + // Create test data + testData := members{ + DataSources: tt.dataSources, + Resources: []string{}, // Empty for this test + } + + // Create temporary test file + testFile := createTestMembersFile(t, testData) + + // Load test data + data := members{} + fileName, _ := filepath.Abs(testFile) + file, err := os.ReadFile(fileName) + if err != nil { + t.Fatalf("Failed to read test file: %v", err) + } + err = json.Unmarshal(file, &data) + if err != nil { + t.Fatalf("Failed to unmarshal test data: %v", err) + } + + // Simulate the data sources processing logic from lines 34-40 + missing := members{} + target := "" + + for _, myData := range data.DataSources { + // Simulate pike.AwsDataLookup returning nil (not found) + if temp := pike.AwsDataLookup(myData); temp == nil { + if strings.Contains(myData, "aws") { + missing.DataSources = append(missing.DataSources, myData) + target += "./resource.ps1 " + myData + " -type data\n" + } + } + } + + // Verify results + if len(missing.DataSources) != len(tt.expectedMissing) { + t.Errorf("Expected %d missing data sources, got %d", len(tt.expectedMissing), len(missing.DataSources)) + } + + for i, expected := range tt.expectedMissing { + if i >= len(missing.DataSources) || missing.DataSources[i] != expected { + t.Errorf("Expected missing data source %s, got %s", expected, missing.DataSources[i]) + } + } + + // Count target lines + targetLines := 0 + if target != "" { + targetLines = strings.Count(target, "\n") + } + + if targetLines != tt.expectedTargetLines { + t.Errorf("Expected %d target lines, got %d", tt.expectedTargetLines, targetLines) + } + + // Verify target format for aws data sources + for _, expectedDS := range tt.expectedMissing { + expectedLine := "./resource.ps1 " + expectedDS + " -type data\n" + if !strings.Contains(target, expectedLine) { + t.Errorf("Expected target to contain %s", expectedLine) + } + } + }) + } +} + +func TestCoverageAWS_DataSourcesTargetFormat(t *testing.T) { + testData := members{ + DataSources: []string{"aws_s3_bucket", "aws_ec2_instance"}, + Resources: []string{}, + } + + testFile := createTestMembersFile(t, testData) + + data := members{} + fileName, _ := filepath.Abs(testFile) + file, _ := os.ReadFile(fileName) + _ = json.Unmarshal(file, &data) + + target := "" + for _, myData := range data.DataSources { + if temp := pike.AwsDataLookup(myData); temp == nil { + if strings.Contains(myData, "aws") { + target += "./resource.ps1 " + myData + " -type data\n" + } + } + } + + expectedTarget := "./resource.ps1 aws_ec2_instance -type data\n" + if target != expectedTarget { + t.Errorf("Expected target format:\n%s\nGot:\n%s", expectedTarget, target) + } +} + +func TestCoverageAWS_DataSourcesCaseInsensitive(t *testing.T) { + testCases := []struct { + name string + dataSource string + shouldAdd bool + }{ + {"lowercase aws", "aws_ec2_instance", true}, + {"uppercase AWS", "AWS_EC2_INSTANCE", false}, + {"mixed case", "Aws_EC2_Bucket", false}, + {"aws in middle", "terraform_aws_s3", true}, + {"no aws", "google_storage", false}, + {"aws substring", "awesome_bucket", false}, // contains "aws" + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + testData := members{ + DataSources: []string{tc.dataSource}, + Resources: []string{}, + } + + testFile := createTestMembersFile(t, testData) + + data := members{} + fileName, _ := filepath.Abs(testFile) + file, _ := os.ReadFile(fileName) + _ = json.Unmarshal(file, &data) + + missing := members{} + for _, myData := range data.DataSources { + if temp := pike.AwsDataLookup(myData); temp == nil { + if strings.Contains(myData, "aws") { + missing.DataSources = append(missing.DataSources, myData) + } + } + } + + if tc.shouldAdd && len(missing.DataSources) == 0 { + t.Errorf("Expected %s to be added to missing data sources", tc.dataSource) + } + if !tc.shouldAdd && len(missing.DataSources) > 0 { + t.Errorf("Expected %s not to be added to missing data sources", tc.dataSource) + } + }) + } +} diff --git a/src/coverage/coverage_test.go b/src/coverage/coverage_test.go index b47b1f61..76009001 100644 --- a/src/coverage/coverage_test.go +++ b/src/coverage/coverage_test.go @@ -1,6 +1,7 @@ package coverage import ( + "errors" "testing" pike "github.com/jameswoolfenden/pike/src" @@ -101,3 +102,26 @@ func Test_coverageGcp(t *testing.T) { }) } } + +func Test_fileWriteError_Error(t *testing.T) { + type fields struct { + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"invoke", fields{err: errors.New("fail")}, "fail"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &fileWriteError{ + err: tt.fields.err, + } + if got := e.Error(); got != tt.want { + t.Errorf("Error() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/src/coverage/google.md b/src/coverage/google.md index a3a9851e..2275cfd5 100755 --- a/src/coverage/google.md +++ b/src/coverage/google.md @@ -1,8 +1,11 @@ -# todo google +# Google Resource Status -Resource percentage coverage 18.82 -Datasource percentage coverage 74.09 +| Terraform | Coverage % | Resources | Total Resources | +|------------|------------|-----------|-----------------| +| Resources | 62.39 | 783 | 1255 | +| Datasource | 99.01 | 399 | 403 | +```shell ./resource.ps1 google_access_context_manager_access_level_condition ./resource.ps1 google_access_context_manager_service_perimeter_dry_run_egress_policy ./resource.ps1 google_access_context_manager_service_perimeter_dry_run_ingress_policy @@ -14,16 +17,20 @@ Datasource percentage coverage 74.09 ./resource.ps1 google_active_directory_domain_trust ./resource.ps1 google_active_directory_peering ./resource.ps1 google_apigee_addons_config +./resource.ps1 google_apigee_api +./resource.ps1 google_apigee_api_deployment +./resource.ps1 google_apigee_api_product ./resource.ps1 google_apigee_app_group +./resource.ps1 google_apigee_control_plane_access ./resource.ps1 google_apigee_developer -./resource.ps1 google_apigee_endpoint_attachment +./resource.ps1 google_apigee_developer_app +./resource.ps1 google_apigee_dns_zone ./resource.ps1 google_apigee_env_keystore ./resource.ps1 google_apigee_envgroup ./resource.ps1 google_apigee_envgroup_attachment ./resource.ps1 google_apigee_environment -./resource.ps1 google_apigee_environment_iam_binding -./resource.ps1 google_apigee_environment_iam_member -./resource.ps1 google_apigee_environment_iam_policy +./resource.ps1 google_apigee_environment_addons_config +./resource.ps1 google_apigee_environment_api_revision_deployment ./resource.ps1 google_apigee_environment_keyvaluemaps ./resource.ps1 google_apigee_environment_keyvaluemaps_entries ./resource.ps1 google_apigee_instance @@ -31,7 +38,9 @@ Datasource percentage coverage 74.09 ./resource.ps1 google_apigee_keystores_aliases_self_signed_cert ./resource.ps1 google_apigee_nat_address ./resource.ps1 google_apigee_organization -./resource.ps1 google_apigee_sharedflow +./resource.ps1 google_apigee_security_action +./resource.ps1 google_apigee_security_monitoring_condition +./resource.ps1 google_apigee_security_profile_v2 ./resource.ps1 google_apigee_sync_authorization ./resource.ps1 google_apigee_target_server ./resource.ps1 google_apikeys_key @@ -43,152 +52,92 @@ Datasource percentage coverage 74.09 ./resource.ps1 google_app_engine_service_network_settings ./resource.ps1 google_app_engine_service_split_traffic ./resource.ps1 google_app_engine_standard_app_version -./resource.ps1 google_apphub_application -./resource.ps1 google_apphub_service -./resource.ps1 google_apphub_service_project_attachment -./resource.ps1 google_apphub_workload +./resource.ps1 google_artifact_registry_package ./resource.ps1 google_artifact_registry_vpcsc_config ./resource.ps1 google_assured_workloads_workload -./resource.ps1 google_backup_dr_backup_plan -./resource.ps1 google_backup_dr_backup_plan_association -./resource.ps1 google_backup_dr_backup_vault -./resource.ps1 google_backup_dr_management_server -./resource.ps1 google_beyondcorp_app_connection -./resource.ps1 google_beyondcorp_app_connector -./resource.ps1 google_beyondcorp_app_gateway -./resource.ps1 google_biglake_catalog -./resource.ps1 google_biglake_database -./resource.ps1 google_biglake_table -./resource.ps1 google_bigquery_datapolicy_data_policy -./resource.ps1 google_bigquery_datapolicy_data_policy_iam_binding -./resource.ps1 google_bigquery_datapolicy_data_policy_iam_member -./resource.ps1 google_bigquery_datapolicy_data_policy_iam_policy -./resource.ps1 google_bigquery_dataset_access -./resource.ps1 google_bigtable_authorized_view -./resource.ps1 google_billing_account_iam_binding -./resource.ps1 google_billing_account_iam_member -./resource.ps1 google_billing_account_iam_policy -./resource.ps1 google_billing_budget -./resource.ps1 google_billing_project_info +./resource.ps1 google_bigquery_analytics_hub_data_exchange_subscription +./resource.ps1 google_bigquery_datapolicyv2_data_policy +./resource.ps1 google_bigquery_datapolicyv2_data_policy_iam_binding +./resource.ps1 google_bigquery_datapolicyv2_data_policy_iam_member +./resource.ps1 google_bigquery_datapolicyv2_data_policy_iam_policy ./resource.ps1 google_billing_subaccount ./resource.ps1 google_binary_authorization_attestor -./resource.ps1 google_binary_authorization_attestor_iam_binding -./resource.ps1 google_binary_authorization_attestor_iam_member -./resource.ps1 google_binary_authorization_attestor_iam_policy ./resource.ps1 google_binary_authorization_policy ./resource.ps1 google_blockchain_node_engine_blockchain_nodes ./resource.ps1 google_certificate_manager_certificate ./resource.ps1 google_certificate_manager_certificate_issuance_config ./resource.ps1 google_certificate_manager_certificate_map ./resource.ps1 google_certificate_manager_certificate_map_entry -./resource.ps1 google_certificate_manager_dns_authorization ./resource.ps1 google_certificate_manager_trust_config -./resource.ps1 google_chronicle_watchlist +./resource.ps1 google_ces_agent +./resource.ps1 google_ces_app +./resource.ps1 google_ces_deployment +./resource.ps1 google_ces_example +./resource.ps1 google_ces_guardrail +./resource.ps1 google_ces_tool +./resource.ps1 google_ces_toolset ./resource.ps1 google_cloud_asset_folder_feed ./resource.ps1 google_cloud_asset_organization_feed ./resource.ps1 google_cloud_asset_project_feed ./resource.ps1 google_cloud_identity_group ./resource.ps1 google_cloud_identity_group_membership ./resource.ps1 google_cloud_ids_endpoint +./resource.ps1 google_cloud_quotas_quota_adjuster_settings ./resource.ps1 google_cloud_quotas_quota_preference -./resource.ps1 google_cloud_run_domain_mapping -./resource.ps1 google_cloud_run_service -./resource.ps1 google_cloud_run_service_iam_binding -./resource.ps1 google_cloud_run_service_iam_member -./resource.ps1 google_cloud_run_service_iam_policy +./resource.ps1 google_cloud_security_compliance_cloud_control +./resource.ps1 google_cloud_security_compliance_framework +./resource.ps1 google_cloud_security_compliance_framework_deployment ./resource.ps1 google_cloud_tasks_queue -./resource.ps1 google_cloud_tasks_queue_iam_binding -./resource.ps1 google_cloud_tasks_queue_iam_member -./resource.ps1 google_cloud_tasks_queue_iam_policy ./resource.ps1 google_cloudbuild_bitbucket_server_config ./resource.ps1 google_cloudbuild_worker_pool -./resource.ps1 google_cloudbuildv2_connection -./resource.ps1 google_cloudbuildv2_connection_iam_binding -./resource.ps1 google_cloudbuildv2_connection_iam_member -./resource.ps1 google_cloudbuildv2_connection_iam_policy -./resource.ps1 google_cloudbuildv2_repository ./resource.ps1 google_clouddeploy_automation ./resource.ps1 google_clouddeploy_custom_target_type -./resource.ps1 google_clouddeploy_custom_target_type_iam_binding -./resource.ps1 google_clouddeploy_custom_target_type_iam_member -./resource.ps1 google_clouddeploy_custom_target_type_iam_policy ./resource.ps1 google_clouddeploy_delivery_pipeline -./resource.ps1 google_clouddeploy_delivery_pipeline_iam_binding -./resource.ps1 google_clouddeploy_delivery_pipeline_iam_member -./resource.ps1 google_clouddeploy_delivery_pipeline_iam_policy +./resource.ps1 google_clouddeploy_deploy_policy ./resource.ps1 google_clouddeploy_target -./resource.ps1 google_clouddeploy_target_iam_binding -./resource.ps1 google_clouddeploy_target_iam_member -./resource.ps1 google_clouddeploy_target_iam_policy ./resource.ps1 google_clouddomains_registration -./resource.ps1 google_cloudfunctions2_function -./resource.ps1 google_cloudfunctions2_function_iam_binding -./resource.ps1 google_cloudfunctions2_function_iam_member -./resource.ps1 google_cloudfunctions2_function_iam_policy -./resource.ps1 google_cloudfunctions_function_iam_binding ./resource.ps1 google_cloudiot_registry -./resource.ps1 google_composer_environment -./resource.ps1 google_composer_user_workloads_config_map -./resource.ps1 google_composer_user_workloads_secret +./resource.ps1 google_colab_notebook_execution +./resource.ps1 google_colab_runtime +./resource.ps1 google_colab_runtime_template +./resource.ps1 google_colab_schedule ./resource.ps1 google_compute_attached_disk ./resource.ps1 google_compute_autoscaler -./resource.ps1 google_compute_backend_bucket -./resource.ps1 google_compute_backend_bucket_iam_binding -./resource.ps1 google_compute_backend_bucket_iam_member -./resource.ps1 google_compute_backend_bucket_iam_policy ./resource.ps1 google_compute_backend_bucket_signed_url_key -./resource.ps1 google_compute_backend_service -./resource.ps1 google_compute_backend_service_iam_binding -./resource.ps1 google_compute_backend_service_iam_member -./resource.ps1 google_compute_backend_service_iam_policy ./resource.ps1 google_compute_backend_service_signed_url_key +./resource.ps1 google_compute_cross_site_network ./resource.ps1 google_compute_disk ./resource.ps1 google_compute_disk_async_replication -./resource.ps1 google_compute_disk_iam_binding -./resource.ps1 google_compute_disk_iam_member -./resource.ps1 google_compute_disk_iam_policy ./resource.ps1 google_compute_disk_resource_policy_attachment ./resource.ps1 google_compute_external_vpn_gateway ./resource.ps1 google_compute_firewall_policy ./resource.ps1 google_compute_firewall_policy_association ./resource.ps1 google_compute_firewall_policy_rule ./resource.ps1 google_compute_firewall_policy_with_rules -./resource.ps1 google_compute_forwarding_rule -./resource.ps1 google_compute_global_forwarding_rule +./resource.ps1 google_compute_future_reservation ./resource.ps1 google_compute_global_network_endpoint -./resource.ps1 google_compute_global_network_endpoint_group ./resource.ps1 google_compute_ha_vpn_gateway -./resource.ps1 google_compute_health_check -./resource.ps1 google_compute_http_health_check -./resource.ps1 google_compute_https_health_check ./resource.ps1 google_compute_image -./resource.ps1 google_compute_image_iam_binding -./resource.ps1 google_compute_image_iam_member -./resource.ps1 google_compute_image_iam_policy ./resource.ps1 google_compute_instance_from_machine_image ./resource.ps1 google_compute_instance_from_template ./resource.ps1 google_compute_instance_group ./resource.ps1 google_compute_instance_group_manager ./resource.ps1 google_compute_instance_group_membership ./resource.ps1 google_compute_instance_group_named_port -./resource.ps1 google_compute_instance_iam_binding -./resource.ps1 google_compute_instance_iam_member -./resource.ps1 google_compute_instance_iam_policy ./resource.ps1 google_compute_instance_settings +./resource.ps1 google_compute_instant_snapshot ./resource.ps1 google_compute_interconnect ./resource.ps1 google_compute_interconnect_attachment +./resource.ps1 google_compute_interconnect_attachment_group +./resource.ps1 google_compute_interconnect_group ./resource.ps1 google_compute_machine_image -./resource.ps1 google_compute_machine_image_iam_binding -./resource.ps1 google_compute_machine_image_iam_member -./resource.ps1 google_compute_machine_image_iam_policy ./resource.ps1 google_compute_managed_ssl_certificate -./resource.ps1 google_compute_network_attachment ./resource.ps1 google_compute_network_edge_security_service ./resource.ps1 google_compute_network_endpoint -./resource.ps1 google_compute_network_endpoint_group ./resource.ps1 google_compute_network_endpoints ./resource.ps1 google_compute_network_firewall_policy ./resource.ps1 google_compute_network_firewall_policy_association +./resource.ps1 google_compute_network_firewall_policy_packet_mirroring_rule ./resource.ps1 google_compute_network_firewall_policy_rule ./resource.ps1 google_compute_network_firewall_policy_with_rules ./resource.ps1 google_compute_network_peering @@ -200,27 +149,20 @@ Datasource percentage coverage 74.09 ./resource.ps1 google_compute_organization_security_policy_rule ./resource.ps1 google_compute_packet_mirroring ./resource.ps1 google_compute_per_instance_config +./resource.ps1 google_compute_preview_feature ./resource.ps1 google_compute_project_cloud_armor_tier ./resource.ps1 google_compute_project_default_network_tier ./resource.ps1 google_compute_project_metadata ./resource.ps1 google_compute_public_advertised_prefix ./resource.ps1 google_compute_public_delegated_prefix ./resource.ps1 google_compute_region_autoscaler -./resource.ps1 google_compute_region_backend_service -./resource.ps1 google_compute_region_backend_service_iam_binding -./resource.ps1 google_compute_region_backend_service_iam_member -./resource.ps1 google_compute_region_backend_service_iam_policy ./resource.ps1 google_compute_region_commitment ./resource.ps1 google_compute_region_disk -./resource.ps1 google_compute_region_disk_iam_binding -./resource.ps1 google_compute_region_disk_iam_member -./resource.ps1 google_compute_region_disk_iam_policy ./resource.ps1 google_compute_region_disk_resource_policy_attachment -./resource.ps1 google_compute_region_health_check +./resource.ps1 google_compute_region_health_aggregation_policy ./resource.ps1 google_compute_region_instance_group_manager ./resource.ps1 google_compute_region_instance_template ./resource.ps1 google_compute_region_network_endpoint -./resource.ps1 google_compute_region_network_endpoint_group ./resource.ps1 google_compute_region_network_firewall_policy ./resource.ps1 google_compute_region_network_firewall_policy_association ./resource.ps1 google_compute_region_network_firewall_policy_rule @@ -229,13 +171,10 @@ Datasource percentage coverage 74.09 ./resource.ps1 google_compute_region_resize_request ./resource.ps1 google_compute_region_security_policy ./resource.ps1 google_compute_region_security_policy_rule -./resource.ps1 google_compute_region_target_http_proxy -./resource.ps1 google_compute_region_target_https_proxy -./resource.ps1 google_compute_region_target_tcp_proxy -./resource.ps1 google_compute_region_url_map ./resource.ps1 google_compute_reservation ./resource.ps1 google_compute_resize_request ./resource.ps1 google_compute_resource_policy +./resource.ps1 google_compute_resource_policy_attachment ./resource.ps1 google_compute_route ./resource.ps1 google_compute_router ./resource.ps1 google_compute_router_interface @@ -248,28 +187,19 @@ Datasource percentage coverage 74.09 ./resource.ps1 google_compute_shared_vpc_host_project ./resource.ps1 google_compute_shared_vpc_service_project ./resource.ps1 google_compute_snapshot -./resource.ps1 google_compute_snapshot_iam_binding -./resource.ps1 google_compute_snapshot_iam_member -./resource.ps1 google_compute_snapshot_iam_policy +./resource.ps1 google_compute_snapshot_settings ./resource.ps1 google_compute_ssl_certificate ./resource.ps1 google_compute_ssl_policy -./resource.ps1 google_compute_subnetwork_iam_binding -./resource.ps1 google_compute_subnetwork_iam_member -./resource.ps1 google_compute_subnetwork_iam_policy +./resource.ps1 google_compute_storage_pool ./resource.ps1 google_compute_target_grpc_proxy -./resource.ps1 google_compute_target_http_proxy -./resource.ps1 google_compute_target_https_proxy ./resource.ps1 google_compute_target_instance ./resource.ps1 google_compute_target_pool ./resource.ps1 google_compute_target_ssl_proxy ./resource.ps1 google_compute_target_tcp_proxy -./resource.ps1 google_compute_url_map ./resource.ps1 google_compute_vpn_gateway ./resource.ps1 google_compute_vpn_tunnel +./resource.ps1 google_compute_wire_group ./resource.ps1 google_container_analysis_note -./resource.ps1 google_container_analysis_note_iam_binding -./resource.ps1 google_container_analysis_note_iam_member -./resource.ps1 google_container_analysis_note_iam_policy ./resource.ps1 google_container_analysis_occurrence ./resource.ps1 google_container_attached_cluster ./resource.ps1 google_container_aws_cluster @@ -278,28 +208,7 @@ Datasource percentage coverage 74.09 ./resource.ps1 google_container_azure_cluster ./resource.ps1 google_container_azure_node_pool ./resource.ps1 google_container_registry -./resource.ps1 google_data_catalog_entry -./resource.ps1 google_data_catalog_entry_group -./resource.ps1 google_data_catalog_entry_group_iam_binding -./resource.ps1 google_data_catalog_entry_group_iam_member -./resource.ps1 google_data_catalog_entry_group_iam_policy -./resource.ps1 google_data_catalog_policy_tag -./resource.ps1 google_data_catalog_policy_tag_iam_binding -./resource.ps1 google_data_catalog_policy_tag_iam_member -./resource.ps1 google_data_catalog_policy_tag_iam_policy -./resource.ps1 google_data_catalog_tag -./resource.ps1 google_data_catalog_tag_template -./resource.ps1 google_data_catalog_tag_template_iam_binding -./resource.ps1 google_data_catalog_tag_template_iam_member -./resource.ps1 google_data_catalog_tag_template_iam_policy -./resource.ps1 google_data_catalog_taxonomy -./resource.ps1 google_data_catalog_taxonomy_iam_binding -./resource.ps1 google_data_catalog_taxonomy_iam_member -./resource.ps1 google_data_catalog_taxonomy_iam_policy ./resource.ps1 google_data_fusion_instance -./resource.ps1 google_data_fusion_instance_iam_binding -./resource.ps1 google_data_fusion_instance_iam_member -./resource.ps1 google_data_fusion_instance_iam_policy ./resource.ps1 google_data_loss_prevention_deidentify_template ./resource.ps1 google_data_loss_prevention_discovery_config ./resource.ps1 google_data_loss_prevention_inspect_template @@ -310,119 +219,38 @@ Datasource percentage coverage 74.09 ./resource.ps1 google_database_migration_service_migration_job ./resource.ps1 google_database_migration_service_private_connection ./resource.ps1 google_dataflow_flex_template_job -./resource.ps1 google_dataflow_job -./resource.ps1 google_dataform_repository -./resource.ps1 google_dataform_repository_iam_binding -./resource.ps1 google_dataform_repository_iam_member -./resource.ps1 google_dataform_repository_iam_policy -./resource.ps1 google_dataform_repository_release_config -./resource.ps1 google_dataform_repository_workflow_config -./resource.ps1 google_dataplex_aspect_type -./resource.ps1 google_dataplex_aspect_type_iam_binding -./resource.ps1 google_dataplex_aspect_type_iam_member -./resource.ps1 google_dataplex_aspect_type_iam_policy -./resource.ps1 google_dataplex_asset -./resource.ps1 google_dataplex_asset_iam_binding -./resource.ps1 google_dataplex_asset_iam_member -./resource.ps1 google_dataplex_asset_iam_policy -./resource.ps1 google_dataplex_datascan -./resource.ps1 google_dataplex_datascan_iam_binding -./resource.ps1 google_dataplex_datascan_iam_member -./resource.ps1 google_dataplex_datascan_iam_policy -./resource.ps1 google_dataplex_entry_group -./resource.ps1 google_dataplex_entry_group_iam_binding -./resource.ps1 google_dataplex_entry_group_iam_member -./resource.ps1 google_dataplex_entry_group_iam_policy -./resource.ps1 google_dataplex_entry_type -./resource.ps1 google_dataplex_entry_type_iam_binding -./resource.ps1 google_dataplex_entry_type_iam_member -./resource.ps1 google_dataplex_entry_type_iam_policy -./resource.ps1 google_dataplex_lake -./resource.ps1 google_dataplex_lake_iam_binding -./resource.ps1 google_dataplex_lake_iam_member -./resource.ps1 google_dataplex_lake_iam_policy -./resource.ps1 google_dataplex_task -./resource.ps1 google_dataplex_task_iam_binding -./resource.ps1 google_dataplex_task_iam_member -./resource.ps1 google_dataplex_task_iam_policy -./resource.ps1 google_dataplex_zone -./resource.ps1 google_dataplex_zone_iam_binding -./resource.ps1 google_dataplex_zone_iam_member -./resource.ps1 google_dataplex_zone_iam_policy -./resource.ps1 google_dataproc_autoscaling_policy -./resource.ps1 google_dataproc_autoscaling_policy_iam_binding -./resource.ps1 google_dataproc_autoscaling_policy_iam_member -./resource.ps1 google_dataproc_autoscaling_policy_iam_policy -./resource.ps1 google_dataproc_batch -./resource.ps1 google_dataproc_cluster -./resource.ps1 google_dataproc_cluster_iam_binding -./resource.ps1 google_dataproc_cluster_iam_member -./resource.ps1 google_dataproc_cluster_iam_policy +./resource.ps1 google_dataplex_entry_link ./resource.ps1 google_dataproc_gdc_application_environment ./resource.ps1 google_dataproc_gdc_service_instance ./resource.ps1 google_dataproc_gdc_spark_application -./resource.ps1 google_dataproc_job -./resource.ps1 google_dataproc_job_iam_binding -./resource.ps1 google_dataproc_job_iam_member -./resource.ps1 google_dataproc_job_iam_policy ./resource.ps1 google_dataproc_metastore_federation -./resource.ps1 google_dataproc_metastore_federation_iam_binding -./resource.ps1 google_dataproc_metastore_federation_iam_member -./resource.ps1 google_dataproc_metastore_federation_iam_policy ./resource.ps1 google_dataproc_metastore_service -./resource.ps1 google_dataproc_metastore_service_iam_binding -./resource.ps1 google_dataproc_metastore_service_iam_member -./resource.ps1 google_dataproc_metastore_service_iam_policy -./resource.ps1 google_dataproc_workflow_template ./resource.ps1 google_datastream_connection_profile ./resource.ps1 google_datastream_private_connection ./resource.ps1 google_datastream_stream -./resource.ps1 google_deployment_manager_deployment -./resource.ps1 google_developer_connect_connection -./resource.ps1 google_developer_connect_git_repository_link -./resource.ps1 google_dialogflow_agent -./resource.ps1 google_dialogflow_cx_agent -./resource.ps1 google_dialogflow_cx_entity_type -./resource.ps1 google_dialogflow_cx_environment -./resource.ps1 google_dialogflow_cx_flow -./resource.ps1 google_dialogflow_cx_intent -./resource.ps1 google_dialogflow_cx_page -./resource.ps1 google_dialogflow_cx_security_settings -./resource.ps1 google_dialogflow_cx_version -./resource.ps1 google_dialogflow_cx_webhook -./resource.ps1 google_dialogflow_entity_type -./resource.ps1 google_dialogflow_fulfillment -./resource.ps1 google_dialogflow_intent +./resource.ps1 google_developer_connect_insights_config +./resource.ps1 google_discovery_engine_acl_config +./resource.ps1 google_discovery_engine_assistant ./resource.ps1 google_discovery_engine_chat_engine +./resource.ps1 google_discovery_engine_cmek_config +./resource.ps1 google_discovery_engine_control +./resource.ps1 google_discovery_engine_data_connector ./resource.ps1 google_discovery_engine_data_store +./resource.ps1 google_discovery_engine_license_config +./resource.ps1 google_discovery_engine_recommendation_engine ./resource.ps1 google_discovery_engine_schema ./resource.ps1 google_discovery_engine_search_engine +./resource.ps1 google_discovery_engine_sitemap ./resource.ps1 google_discovery_engine_target_site -./resource.ps1 google_dns_managed_zone_iam_binding -./resource.ps1 google_dns_managed_zone_iam_member -./resource.ps1 google_dns_managed_zone_iam_policy +./resource.ps1 google_discovery_engine_user_store ./resource.ps1 google_dns_response_policy ./resource.ps1 google_dns_response_policy_rule ./resource.ps1 google_document_ai_processor ./resource.ps1 google_document_ai_processor_default_version ./resource.ps1 google_document_ai_warehouse_document_schema ./resource.ps1 google_document_ai_warehouse_location -./resource.ps1 google_edgecontainer_cluster -./resource.ps1 google_edgecontainer_node_pool -./resource.ps1 google_edgecontainer_vpn_connection -./resource.ps1 google_edgenetwork_network -./resource.ps1 google_edgenetwork_subnet ./resource.ps1 google_endpoints_service -./resource.ps1 google_endpoints_service_consumers_iam_binding -./resource.ps1 google_endpoints_service_consumers_iam_member -./resource.ps1 google_endpoints_service_consumers_iam_policy -./resource.ps1 google_endpoints_service_iam_binding -./resource.ps1 google_endpoints_service_iam_member -./resource.ps1 google_endpoints_service_iam_policy ./resource.ps1 google_essential_contacts_contact -./resource.ps1 google_eventarc_channel -./resource.ps1 google_eventarc_google_channel_config -./resource.ps1 google_eventarc_trigger ./resource.ps1 google_filestore_backup ./resource.ps1 google_filestore_instance ./resource.ps1 google_filestore_snapshot @@ -433,6 +261,12 @@ Datasource percentage coverage 74.09 ./resource.ps1 google_firebase_app_check_recaptcha_enterprise_config ./resource.ps1 google_firebase_app_check_recaptcha_v3_config ./resource.ps1 google_firebase_app_check_service_config +./resource.ps1 google_firebase_app_hosting_backend +./resource.ps1 google_firebase_app_hosting_build +./resource.ps1 google_firebase_app_hosting_default_domain +./resource.ps1 google_firebase_app_hosting_domain +./resource.ps1 google_firebase_app_hosting_traffic +./resource.ps1 google_firebase_data_connect_service ./resource.ps1 google_firebase_extensions_instance ./resource.ps1 google_firebase_project_location ./resource.ps1 google_firestore_backup_schedule @@ -440,43 +274,24 @@ Datasource percentage coverage 74.09 ./resource.ps1 google_firestore_document ./resource.ps1 google_firestore_field ./resource.ps1 google_firestore_index +./resource.ps1 google_firestore_user_creds ./resource.ps1 google_folder ./resource.ps1 google_folder_access_approval_settings ./resource.ps1 google_folder_iam_audit_config -./resource.ps1 google_folder_iam_binding -./resource.ps1 google_folder_iam_member -./resource.ps1 google_folder_iam_policy ./resource.ps1 google_folder_organization_policy -./resource.ps1 google_gemini_code_repository_index -./resource.ps1 google_gemini_repository_group -./resource.ps1 google_gemini_repository_group_iam_binding -./resource.ps1 google_gemini_repository_group_iam_member -./resource.ps1 google_gemini_repository_group_iam_policy +./resource.ps1 google_folder_service_identity +./resource.ps1 google_gke_backup_backup_channel ./resource.ps1 google_gke_backup_backup_plan -./resource.ps1 google_gke_backup_backup_plan_iam_binding -./resource.ps1 google_gke_backup_backup_plan_iam_member -./resource.ps1 google_gke_backup_backup_plan_iam_policy +./resource.ps1 google_gke_backup_restore_channel ./resource.ps1 google_gke_backup_restore_plan -./resource.ps1 google_gke_backup_restore_plan_iam_binding -./resource.ps1 google_gke_backup_restore_plan_iam_member -./resource.ps1 google_gke_backup_restore_plan_iam_policy ./resource.ps1 google_gke_hub_feature -./resource.ps1 google_gke_hub_feature_iam_binding -./resource.ps1 google_gke_hub_feature_iam_member -./resource.ps1 google_gke_hub_feature_iam_policy ./resource.ps1 google_gke_hub_feature_membership ./resource.ps1 google_gke_hub_fleet ./resource.ps1 google_gke_hub_membership ./resource.ps1 google_gke_hub_membership_binding -./resource.ps1 google_gke_hub_membership_iam_binding -./resource.ps1 google_gke_hub_membership_iam_member -./resource.ps1 google_gke_hub_membership_iam_policy ./resource.ps1 google_gke_hub_membership_rbac_role_binding ./resource.ps1 google_gke_hub_namespace ./resource.ps1 google_gke_hub_scope -./resource.ps1 google_gke_hub_scope_iam_binding -./resource.ps1 google_gke_hub_scope_iam_member -./resource.ps1 google_gke_hub_scope_iam_policy ./resource.ps1 google_gke_hub_scope_rbac_role_binding ./resource.ps1 google_gkeonprem_bare_metal_admin_cluster ./resource.ps1 google_gkeonprem_bare_metal_cluster @@ -485,71 +300,23 @@ Datasource percentage coverage 74.09 ./resource.ps1 google_gkeonprem_vmware_cluster ./resource.ps1 google_gkeonprem_vmware_node_pool ./resource.ps1 google_healthcare_consent_store -./resource.ps1 google_healthcare_consent_store_iam_binding -./resource.ps1 google_healthcare_consent_store_iam_member -./resource.ps1 google_healthcare_consent_store_iam_policy ./resource.ps1 google_healthcare_dataset -./resource.ps1 google_healthcare_dataset_iam_binding -./resource.ps1 google_healthcare_dataset_iam_member -./resource.ps1 google_healthcare_dataset_iam_policy ./resource.ps1 google_healthcare_dicom_store -./resource.ps1 google_healthcare_dicom_store_iam_binding -./resource.ps1 google_healthcare_dicom_store_iam_member -./resource.ps1 google_healthcare_dicom_store_iam_policy ./resource.ps1 google_healthcare_fhir_store -./resource.ps1 google_healthcare_fhir_store_iam_binding -./resource.ps1 google_healthcare_fhir_store_iam_member -./resource.ps1 google_healthcare_fhir_store_iam_policy ./resource.ps1 google_healthcare_hl7_v2_store -./resource.ps1 google_healthcare_hl7_v2_store_iam_binding -./resource.ps1 google_healthcare_hl7_v2_store_iam_member -./resource.ps1 google_healthcare_hl7_v2_store_iam_policy ./resource.ps1 google_healthcare_pipeline_job ./resource.ps1 google_healthcare_workspace ./resource.ps1 google_iam_access_boundary_policy ./resource.ps1 google_iam_deny_policy ./resource.ps1 google_iam_folders_policy_binding +./resource.ps1 google_iam_oauth_client +./resource.ps1 google_iam_oauth_client_credential ./resource.ps1 google_iam_organizations_policy_binding ./resource.ps1 google_iam_principal_access_boundary_policy ./resource.ps1 google_iam_projects_policy_binding -./resource.ps1 google_iam_workforce_pool -./resource.ps1 google_iam_workforce_pool_provider -./resource.ps1 google_iam_workload_identity_pool -./resource.ps1 google_iam_workload_identity_pool_provider -./resource.ps1 google_iap_app_engine_service_iam_binding -./resource.ps1 google_iap_app_engine_service_iam_member -./resource.ps1 google_iap_app_engine_service_iam_policy -./resource.ps1 google_iap_app_engine_version_iam_binding -./resource.ps1 google_iap_app_engine_version_iam_member -./resource.ps1 google_iap_app_engine_version_iam_policy -./resource.ps1 google_iap_brand -./resource.ps1 google_iap_client -./resource.ps1 google_iap_settings -./resource.ps1 google_iap_tunnel_dest_group -./resource.ps1 google_iap_tunnel_dest_group_iam_binding -./resource.ps1 google_iap_tunnel_dest_group_iam_member -./resource.ps1 google_iap_tunnel_dest_group_iam_policy -./resource.ps1 google_iap_tunnel_iam_binding -./resource.ps1 google_iap_tunnel_iam_member -./resource.ps1 google_iap_tunnel_iam_policy -./resource.ps1 google_iap_tunnel_instance_iam_binding -./resource.ps1 google_iap_tunnel_instance_iam_member -./resource.ps1 google_iap_tunnel_instance_iam_policy -./resource.ps1 google_iap_web_backend_service_iam_binding -./resource.ps1 google_iap_web_backend_service_iam_member -./resource.ps1 google_iap_web_backend_service_iam_policy -./resource.ps1 google_iap_web_iam_binding -./resource.ps1 google_iap_web_iam_member -./resource.ps1 google_iap_web_iam_policy -./resource.ps1 google_iap_web_region_backend_service_iam_binding -./resource.ps1 google_iap_web_region_backend_service_iam_member -./resource.ps1 google_iap_web_region_backend_service_iam_policy -./resource.ps1 google_iap_web_type_app_engine_iam_binding -./resource.ps1 google_iap_web_type_app_engine_iam_member -./resource.ps1 google_iap_web_type_app_engine_iam_policy -./resource.ps1 google_iap_web_type_compute_iam_binding -./resource.ps1 google_iap_web_type_compute_iam_member -./resource.ps1 google_iap_web_type_compute_iam_policy +./resource.ps1 google_iam_workforce_pool_provider_scim_tenant +./resource.ps1 google_iam_workload_identity_pool_managed_identity +./resource.ps1 google_iam_workload_identity_pool_namespace ./resource.ps1 google_identity_platform_config ./resource.ps1 google_identity_platform_default_supported_idp_config ./resource.ps1 google_identity_platform_inbound_saml_config @@ -564,63 +331,29 @@ Datasource percentage coverage 74.09 ./resource.ps1 google_integrations_auth_config ./resource.ps1 google_integrations_client ./resource.ps1 google_kms_autokey_config -./resource.ps1 google_kms_crypto_key_version ./resource.ps1 google_kms_ekm_connection -./resource.ps1 google_kms_ekm_connection_iam_binding -./resource.ps1 google_kms_ekm_connection_iam_member -./resource.ps1 google_kms_ekm_connection_iam_policy -./resource.ps1 google_kms_key_handle -./resource.ps1 google_kms_key_ring_iam_binding -./resource.ps1 google_kms_key_ring_iam_member -./resource.ps1 google_kms_key_ring_iam_policy -./resource.ps1 google_kms_key_ring_import_job -./resource.ps1 google_kms_secret_ciphertext +./resource.ps1 google_kms_folder_kaj_policy_config +./resource.ps1 google_kms_organization_kaj_policy_config +./resource.ps1 google_kms_project_kaj_policy_config ./resource.ps1 google_logging_billing_account_bucket_config -./resource.ps1 google_logging_billing_account_exclusion -./resource.ps1 google_logging_billing_account_sink ./resource.ps1 google_logging_folder_bucket_config -./resource.ps1 google_logging_folder_exclusion -./resource.ps1 google_logging_folder_settings -./resource.ps1 google_logging_folder_sink -./resource.ps1 google_logging_linked_dataset -./resource.ps1 google_logging_log_scope -./resource.ps1 google_logging_log_view -./resource.ps1 google_logging_log_view_iam_binding -./resource.ps1 google_logging_log_view_iam_member -./resource.ps1 google_logging_log_view_iam_policy -./resource.ps1 google_logging_metric ./resource.ps1 google_logging_organization_bucket_config -./resource.ps1 google_logging_organization_exclusion -./resource.ps1 google_logging_organization_settings -./resource.ps1 google_logging_organization_sink ./resource.ps1 google_logging_project_bucket_config -./resource.ps1 google_logging_project_exclusion -./resource.ps1 google_logging_project_sink ./resource.ps1 google_looker_instance -./resource.ps1 google_managed_kafka_cluster -./resource.ps1 google_managed_kafka_topic -./resource.ps1 google_memcache_instance -./resource.ps1 google_memorystore_instance +./resource.ps1 google_lustre_instance +./resource.ps1 google_memorystore_instance_desired_user_created_endpoints ./resource.ps1 google_migration_center_group ./resource.ps1 google_migration_center_preference_set ./resource.ps1 google_ml_engine_model -./resource.ps1 google_monitoring_alert_policy -./resource.ps1 google_monitoring_custom_service -./resource.ps1 google_monitoring_dashboard -./resource.ps1 google_monitoring_group -./resource.ps1 google_monitoring_metric_descriptor -./resource.ps1 google_monitoring_monitored_project -./resource.ps1 google_monitoring_notification_channel -./resource.ps1 google_monitoring_service -./resource.ps1 google_monitoring_slo -./resource.ps1 google_monitoring_uptime_check_config ./resource.ps1 google_netapp_active_directory ./resource.ps1 google_netapp_backup ./resource.ps1 google_netapp_backup_policy ./resource.ps1 google_netapp_backup_vault +./resource.ps1 google_netapp_host_group ./resource.ps1 google_netapp_kmsconfig ./resource.ps1 google_netapp_storage_pool ./resource.ps1 google_netapp_volume +./resource.ps1 google_netapp_volume_quota_rule ./resource.ps1 google_netapp_volume_replication ./resource.ps1 google_netapp_volume_snapshot ./resource.ps1 google_network_connectivity_group @@ -630,14 +363,14 @@ Datasource percentage coverage 74.09 ./resource.ps1 google_network_connectivity_regional_endpoint ./resource.ps1 google_network_connectivity_service_connection_policy ./resource.ps1 google_network_connectivity_spoke +./resource.ps1 google_network_management_organization_vpc_flow_logs_config ./resource.ps1 google_network_management_vpc_flow_logs_config ./resource.ps1 google_network_security_address_group -./resource.ps1 google_network_security_address_group_iam_binding -./resource.ps1 google_network_security_address_group_iam_member -./resource.ps1 google_network_security_address_group_iam_policy ./resource.ps1 google_network_security_authorization_policy ./resource.ps1 google_network_security_authz_policy +./resource.ps1 google_network_security_backend_authentication_config ./resource.ps1 google_network_security_client_tls_policy +./resource.ps1 google_network_security_dns_threat_detector ./resource.ps1 google_network_security_firewall_endpoint ./resource.ps1 google_network_security_firewall_endpoint_association ./resource.ps1 google_network_security_gateway_security_policy @@ -648,6 +381,7 @@ Datasource percentage coverage 74.09 ./resource.ps1 google_network_security_intercept_endpoint_group_association ./resource.ps1 google_network_security_mirroring_deployment ./resource.ps1 google_network_security_mirroring_deployment_group +./resource.ps1 google_network_security_mirroring_endpoint ./resource.ps1 google_network_security_mirroring_endpoint_group ./resource.ps1 google_network_security_mirroring_endpoint_group_association ./resource.ps1 google_network_security_security_profile @@ -666,71 +400,42 @@ Datasource percentage coverage 74.09 ./resource.ps1 google_network_services_lb_route_extension ./resource.ps1 google_network_services_lb_traffic_extension ./resource.ps1 google_network_services_mesh +./resource.ps1 google_network_services_multicast_domain ./resource.ps1 google_network_services_service_binding ./resource.ps1 google_network_services_service_lb_policies ./resource.ps1 google_network_services_tcp_route ./resource.ps1 google_network_services_tls_route -./resource.ps1 google_notebooks_environment -./resource.ps1 google_notebooks_instance -./resource.ps1 google_notebooks_instance_iam_binding -./resource.ps1 google_notebooks_instance_iam_member -./resource.ps1 google_notebooks_instance_iam_policy -./resource.ps1 google_notebooks_runtime -./resource.ps1 google_notebooks_runtime_iam_binding -./resource.ps1 google_notebooks_runtime_iam_member -./resource.ps1 google_notebooks_runtime_iam_policy +./resource.ps1 google_network_services_wasm_plugin +./resource.ps1 google_observability_trace_scope ./resource.ps1 google_oracle_database_autonomous_database ./resource.ps1 google_oracle_database_cloud_exadata_infrastructure ./resource.ps1 google_oracle_database_cloud_vm_cluster +./resource.ps1 google_oracle_database_db_system +./resource.ps1 google_oracle_database_exascale_db_storage_vault +./resource.ps1 google_oracle_database_odb_network +./resource.ps1 google_oracle_database_odb_subnet ./resource.ps1 google_org_policy_custom_constraint ./resource.ps1 google_org_policy_policy ./resource.ps1 google_organization_access_approval_settings ./resource.ps1 google_organization_iam_audit_config -./resource.ps1 google_organization_iam_binding ./resource.ps1 google_organization_iam_custom_role -./resource.ps1 google_organization_iam_member -./resource.ps1 google_organization_iam_policy ./resource.ps1 google_organization_policy -./resource.ps1 google_os_config_guest_policies -./resource.ps1 google_os_config_os_policy_assignment -./resource.ps1 google_os_config_patch_deployment ./resource.ps1 google_os_login_ssh_public_key -./resource.ps1 google_parallelstore_instance -./resource.ps1 google_privateca_ca_pool -./resource.ps1 google_privateca_ca_pool_iam_binding -./resource.ps1 google_privateca_ca_pool_iam_member -./resource.ps1 google_privateca_ca_pool_iam_policy -./resource.ps1 google_privateca_certificate -./resource.ps1 google_privateca_certificate_authority -./resource.ps1 google_privateca_certificate_template -./resource.ps1 google_privateca_certificate_template_iam_binding -./resource.ps1 google_privateca_certificate_template_iam_member -./resource.ps1 google_privateca_certificate_template_iam_policy -./resource.ps1 google_privileged_access_manager_entitlement -./resource.ps1 google_project -./resource.ps1 google_project_access_approval_settings -./resource.ps1 google_project_default_service_accounts -./resource.ps1 google_project_iam_audit_config -./resource.ps1 google_project_iam_member_remove -./resource.ps1 google_project_iam_policy -./resource.ps1 google_project_organization_policy -./resource.ps1 google_project_services -./resource.ps1 google_project_usage_export_bucket +./resource.ps1 google_parameter_manager_parameter +./resource.ps1 google_parameter_manager_parameter_version +./resource.ps1 google_parameter_manager_regional_parameter +./resource.ps1 google_parameter_manager_regional_parameter_version +./resource.ps1 google_privileged_access_manager_settings ./resource.ps1 google_public_ca_external_account_key -./resource.ps1 google_pubsub_schema_iam_binding -./resource.ps1 google_pubsub_schema_iam_member -./resource.ps1 google_pubsub_schema_iam_policy -./resource.ps1 google_pubsub_subscription_iam_binding -./resource.ps1 google_pubsub_subscription_iam_member -./resource.ps1 google_pubsub_subscription_iam_policy ./resource.ps1 google_recaptcha_enterprise_key -./resource.ps1 google_redis_cluster +./resource.ps1 google_resource_manager_capability ./resource.ps1 google_resource_manager_lien -./resource.ps1 google_runtimeconfig_config -./resource.ps1 google_runtimeconfig_config_iam_binding -./resource.ps1 google_runtimeconfig_config_iam_member -./resource.ps1 google_runtimeconfig_config_iam_policy -./resource.ps1 google_runtimeconfig_variable +./resource.ps1 google_saas_runtime_release +./resource.ps1 google_saas_runtime_rollout_kind +./resource.ps1 google_saas_runtime_saas +./resource.ps1 google_saas_runtime_tenant +./resource.ps1 google_saas_runtime_unit +./resource.ps1 google_saas_runtime_unit_kind ./resource.ps1 google_scc_event_threat_detection_custom_module ./resource.ps1 google_scc_folder_custom_module ./resource.ps1 google_scc_folder_notification_config @@ -747,9 +452,6 @@ Datasource percentage coverage 74.09 ./resource.ps1 google_scc_project_notification_config ./resource.ps1 google_scc_project_scc_big_query_export ./resource.ps1 google_scc_source -./resource.ps1 google_scc_source_iam_binding -./resource.ps1 google_scc_source_iam_member -./resource.ps1 google_scc_source_iam_policy ./resource.ps1 google_scc_v2_folder_mute_config ./resource.ps1 google_scc_v2_folder_notification_config ./resource.ps1 google_scc_v2_folder_scc_big_query_export @@ -757,171 +459,27 @@ Datasource percentage coverage 74.09 ./resource.ps1 google_scc_v2_organization_notification_config ./resource.ps1 google_scc_v2_organization_scc_big_query_export ./resource.ps1 google_scc_v2_organization_scc_big_query_exports -./resource.ps1 google_scc_v2_organization_source_iam_binding -./resource.ps1 google_scc_v2_organization_source_iam_member -./resource.ps1 google_scc_v2_organization_source_iam_policy ./resource.ps1 google_scc_v2_project_mute_config ./resource.ps1 google_scc_v2_project_notification_config ./resource.ps1 google_scc_v2_project_scc_big_query_export -./resource.ps1 google_secret_manager_regional_secret -./resource.ps1 google_secret_manager_regional_secret_iam_binding -./resource.ps1 google_secret_manager_regional_secret_iam_member -./resource.ps1 google_secret_manager_regional_secret_iam_policy -./resource.ps1 google_secret_manager_regional_secret_version -./resource.ps1 google_secure_source_manager_branch_rule -./resource.ps1 google_secure_source_manager_instance -./resource.ps1 google_secure_source_manager_instance_iam_binding -./resource.ps1 google_secure_source_manager_instance_iam_member -./resource.ps1 google_secure_source_manager_instance_iam_policy -./resource.ps1 google_secure_source_manager_repository -./resource.ps1 google_secure_source_manager_repository_iam_binding -./resource.ps1 google_secure_source_manager_repository_iam_member -./resource.ps1 google_secure_source_manager_repository_iam_policy +./resource.ps1 google_secure_source_manager_hook ./resource.ps1 google_security_scanner_scan_config ./resource.ps1 google_securityposture_posture ./resource.ps1 google_service_networking_peered_dns_domain ./resource.ps1 google_service_networking_vpc_service_controls ./resource.ps1 google_service_usage_consumer_quota_override -./resource.ps1 google_site_verification_owner -./resource.ps1 google_site_verification_web_resource -./resource.ps1 google_sourcerepo_repository_iam_binding -./resource.ps1 google_sourcerepo_repository_iam_member -./resource.ps1 google_sourcerepo_repository_iam_policy -./resource.ps1 google_spanner_backup_schedule -./resource.ps1 google_spanner_instance_config ./resource.ps1 google_sql_source_representation_instance -./resource.ps1 google_sql_ssl_cert +./resource.ps1 google_storage_anywhere_cache +./resource.ps1 google_storage_batch_operations_job ./resource.ps1 google_storage_folder +./resource.ps1 google_storage_insights_dataset_config ./resource.ps1 google_storage_managed_folder -./resource.ps1 google_storage_managed_folder_iam_binding -./resource.ps1 google_storage_managed_folder_iam_member -./resource.ps1 google_storage_managed_folder_iam_policy ./resource.ps1 google_storage_notification ./resource.ps1 google_storage_object_acl ./resource.ps1 google_storage_transfer_agent_pool ./resource.ps1 google_storage_transfer_job -./resource.ps1 google_tags_location_tag_binding -./resource.ps1 google_tags_tag_binding -./resource.ps1 google_tags_tag_key -./resource.ps1 google_tags_tag_key_iam_binding -./resource.ps1 google_tags_tag_key_iam_member -./resource.ps1 google_tags_tag_key_iam_policy -./resource.ps1 google_tags_tag_value -./resource.ps1 google_tags_tag_value_iam_binding -./resource.ps1 google_tags_tag_value_iam_member -./resource.ps1 google_tags_tag_value_iam_policy -./resource.ps1 google_tpu_node -./resource.ps1 google_tpu_v2_queued_resource -./resource.ps1 google_tpu_v2_vm -./resource.ps1 google_transcoder_job -./resource.ps1 google_transcoder_job_template -./resource.ps1 google_vertex_ai_deployment_resource_pool -./resource.ps1 google_vertex_ai_index_endpoint_deployed_index -./resource.ps1 google_vmwareengine_cluster -./resource.ps1 google_vmwareengine_external_access_rule -./resource.ps1 google_vmwareengine_external_address -./resource.ps1 google_vmwareengine_network -./resource.ps1 google_vmwareengine_network_peering -./resource.ps1 google_vmwareengine_network_policy -./resource.ps1 google_vmwareengine_private_cloud -./resource.ps1 google_vmwareengine_subnet -./resource.ps1 google_vpc_access_connector -./resource.ps1 google_workbench_instance -./resource.ps1 google_workbench_instance_iam_binding -./resource.ps1 google_workbench_instance_iam_member -./resource.ps1 google_workbench_instance_iam_policy -./resource.ps1 google_workflows_workflow -./resource.ps1 google_workstations_workstation -./resource.ps1 google_workstations_workstation_cluster -./resource.ps1 google_workstations_workstation_config -./resource.ps1 google_workstations_workstation_config_iam_binding -./resource.ps1 google_workstations_workstation_config_iam_member -./resource.ps1 google_workstations_workstation_config_iam_policy -./resource.ps1 google_workstations_workstation_iam_binding -./resource.ps1 google_workstations_workstation_iam_member -./resource.ps1 google_workstations_workstation_iam_policy -./resource.ps1 google_access_context_manager_access_policy -type data -./resource.ps1 google_apphub_application -type data -./resource.ps1 google_apphub_discovered_service -type data -./resource.ps1 google_apphub_discovered_workload -type data -./resource.ps1 google_artifact_registry_docker_image -type data -./resource.ps1 google_artifact_registry_locations -type data -./resource.ps1 google_backup_dr_backup -type data -./resource.ps1 google_backup_dr_backup_plan_association -type data -./resource.ps1 google_backup_dr_backup_vault -type data -./resource.ps1 google_backup_dr_data_source -type data -./resource.ps1 google_bigquery_tables -type data -./resource.ps1 google_certificate_manager_certificates -type data -./resource.ps1 google_cloud_identity_group_transitive_memberships -type data -./resource.ps1 google_cloud_quotas_quota_info -type data -./resource.ps1 google_cloud_quotas_quota_infos -type data -./resource.ps1 google_clouddeploy_custom_target_type_iam_policy -type data -./resource.ps1 google_clouddeploy_delivery_pipeline_iam_policy -type data -./resource.ps1 google_clouddeploy_target_iam_policy -type data -./resource.ps1 google_composer_user_workloads_config_map -type data -./resource.ps1 google_composer_user_workloads_secret -type data -./resource.ps1 google_compute_forwarding_rules -type data -./resource.ps1 google_compute_instance_guest_attributes -type data -./resource.ps1 google_compute_machine_types -type data -./resource.ps1 google_compute_region_instance_group_manager -type data -./resource.ps1 google_compute_security_policy -type data -./resource.ps1 google_compute_subnetworks -type data -./resource.ps1 google_container_attached_install_manifest -type data -./resource.ps1 google_container_aws_versions -type data -./resource.ps1 google_container_azure_versions -type data -./resource.ps1 google_dataplex_aspect_type_iam_policy -type data -./resource.ps1 google_dataplex_entry_group_iam_policy -type data -./resource.ps1 google_dataplex_entry_type_iam_policy -type data -./resource.ps1 google_dns_managed_zones -type data -./resource.ps1 google_firebase_web_app_config -type data -./resource.ps1 google_folder -type data -./resource.ps1 google_folder_iam_policy -type data -./resource.ps1 google_folders -type data -./resource.ps1 google_gemini_repository_group_iam_policy -type data -./resource.ps1 google_iap_tunnel_dest_group_iam_policy -type data -./resource.ps1 google_kms_autokey_config -type data -./resource.ps1 google_kms_crypto_key_latest_version -type data -./resource.ps1 google_kms_crypto_key_versions -type data -./resource.ps1 google_kms_crypto_keys -type data -./resource.ps1 google_kms_ekm_connection_iam_policy -type data -./resource.ps1 google_kms_key_handle -type data -./resource.ps1 google_kms_key_rings -type data -./resource.ps1 google_logging_log_view_iam_policy -type data -./resource.ps1 google_oracle_database_autonomous_database -type data -./resource.ps1 google_oracle_database_autonomous_databases -type data -./resource.ps1 google_oracle_database_cloud_exadata_infrastructure -type data -./resource.ps1 google_oracle_database_cloud_exadata_infrastructures -type data -./resource.ps1 google_oracle_database_cloud_vm_cluster -type data -./resource.ps1 google_oracle_database_cloud_vm_clusters -type data -./resource.ps1 google_oracle_database_db_nodes -type data -./resource.ps1 google_oracle_database_db_servers -type data -./resource.ps1 google_organization_iam_policy -type data -./resource.ps1 google_privateca_ca_pool_iam_policy -type data -./resource.ps1 google_privateca_certificate_authority -type data -./resource.ps1 google_privateca_certificate_template_iam_policy -type data -./resource.ps1 google_privileged_access_manager_entitlement -type data -./resource.ps1 google_project_iam_policy -type data -./resource.ps1 google_project_organization_policy -type data -./resource.ps1 google_pubsub_schema_iam_policy -type data -./resource.ps1 google_runtimeconfig_config -type data -./resource.ps1 google_runtimeconfig_config_iam_policy -type data -./resource.ps1 google_runtimeconfig_variable -type data -./resource.ps1 google_scc_source_iam_policy -type data -./resource.ps1 google_scc_v2_organization_source_iam_policy -type data -./resource.ps1 google_secret_manager_regional_secret -type data -./resource.ps1 google_secret_manager_regional_secret_iam_policy -type data -./resource.ps1 google_secret_manager_regional_secret_version -type data -./resource.ps1 google_secret_manager_regional_secret_version_access -type data -./resource.ps1 google_secret_manager_regional_secrets -type data -./resource.ps1 google_secure_source_manager_instance_iam_policy -type data -./resource.ps1 google_secure_source_manager_repository_iam_policy -type data -./resource.ps1 google_service_accounts -type data -./resource.ps1 google_site_verification_token -type data -./resource.ps1 google_spanner_database -type data -./resource.ps1 google_storage_bucket_objects -type data -./resource.ps1 google_storage_buckets -type data -./resource.ps1 google_tags_tag_key_iam_policy -type data -./resource.ps1 google_tags_tag_keys -type data -./resource.ps1 google_tags_tag_value -type data -./resource.ps1 google_tags_tag_value_iam_policy -type data -./resource.ps1 google_tags_tag_values -type data +./resource.ps1 google_artifact_registry_python_packages -type data +./resource.ps1 google_cloud_identity_policy -type data +./resource.ps1 google_compute_reservation_block -type data +./resource.ps1 google_compute_reservation_sub_block -type data +``` diff --git a/src/credentials.go b/src/credentials.go index 74e03e8c..02b0d836 100644 --- a/src/credentials.go +++ b/src/credentials.go @@ -78,10 +78,18 @@ func getAWSCredentials(iamRole string, region string) (*sts.AssumeRoleOutput, er return result, nil } +type getAWSCredentialsError struct { + err error +} + +func (e getAWSCredentialsError) Error() string { + return fmt.Sprintf("failed to get AWS credentials: %v", e.err) +} + func setAWSAuth(iamRole string, region string) error { credentials, err := getAWSCredentials(iamRole, region) if err != nil { - return err + return &getAWSCredentialsError{err} } _ = os.Setenv("AWS_ACCESS_KEY_ID", *credentials.Credentials.AccessKeyId) diff --git a/src/credentials_internal_test.go b/src/credentials_internal_test.go new file mode 100644 index 00000000..ecd4e5bb --- /dev/null +++ b/src/credentials_internal_test.go @@ -0,0 +1,37 @@ +package pike + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_emptyRegionError_Error(t *testing.T) { + tests := []struct { + name string + want string + }{ + {"emptyRegionError", "region cannot be empty"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := emptyRegionError{} + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_iamRoleEmptyError_Error(t *testing.T) { + tests := []struct { + name string + want string + }{ + {"iamRoleEmptyError", "iamRole cannot be empty"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := iamRoleEmptyError{} + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} diff --git a/src/data.go b/src/data.go index ebb9e0e8..e3779a36 100644 --- a/src/data.go +++ b/src/data.go @@ -26,7 +26,6 @@ func (e *fileStringEmptyError) Error() string { // GetResources retrieves all the resources in a tf file. func GetResources(file string, dirName string) ([]ResourceV2, error) { - var Resources []ResourceV2 if file == "" { @@ -38,6 +37,11 @@ func GetResources(file string, dirName string) ([]ResourceV2, error) { return Resources, err } + moduleJson, err := GetModuleJson(filepath.Join(dirName, "/", ".terraform", "modules")) + if err != nil { + return Resources, err + } + for _, block := range temp.Blocks { var resource ResourceV2 resource.TypeName = block.Type @@ -51,14 +55,14 @@ func GetResources(file string, dirName string) ([]ResourceV2, error) { } case module: { - LocalResources, err := GetLocalModules(block, dirName) + LocalResources, err := GetLocalModules(block, dirName, moduleJson) if err == nil { Resources = append(LocalResources, Resources...) } else { log.Info().Msg(err.Error()) } } - case "output", "variable", "locals", "provider": + case "output", "variable", "locals", "provider", "import": { continue } @@ -107,6 +111,16 @@ func DetectBackend(resource ResourceV2, block *hclsyntax.Block, resources []Reso return resources, nil } + + if terraform.Labels != nil && terraform.Labels[0] == "gcs" { + resource.Name = "backend" + resource.Provider = providerGCP + resource.Attributes = []string{"gcs"} + resources = append(resources, resource) + + return resources, nil + } + } } } @@ -123,7 +137,6 @@ func GetResourceBlocks(file string) (*hclsyntax.Body, error) { } src, err := os.ReadFile(temp) - if err != nil { return nil, fmt.Errorf("failed to read file: %w", err) } @@ -139,7 +152,7 @@ func GetResourceBlocks(file string) (*hclsyntax.Body, error) { } // GetLocalModules return resource from a path. -func GetLocalModules(block *hclsyntax.Block, dirName string) ([]ResourceV2, error) { +func GetLocalModules(block *hclsyntax.Block, dirName string, listModulesJson ModuleJson) ([]ResourceV2, error) { var Resources []ResourceV2 modulePath := GetModulePath(block) @@ -149,9 +162,12 @@ func GetLocalModules(block *hclsyntax.Block, dirName string) ([]ResourceV2, erro return nil, &gitReferenceError{modulePath} } + // Module is coming from HCP Terraform Cloud + if strings.HasPrefix(modulePath, "app.terraform.io") { + modulePath = ReturnLocalAddrFromSource(modulePath, listModulesJson) + } // have the path to the module - modulePath = filepath.Join(dirName, "/", modulePath) - + modulePath = filepath.Join(dirName, modulePath) // now process these extras ExtraFiles, err := GetTF(modulePath) if err != nil { @@ -265,3 +281,7 @@ func GetPermission(result ResourceV2) (Sorted, error) { return myPermission, err } + +func GetModuleJson(dir string) (ModuleJson, error) { + return ReadModuleJsonForDir(dir) +} diff --git a/src/data_internal_test.go b/src/data_internal_test.go new file mode 100644 index 00000000..36c785cf --- /dev/null +++ b/src/data_internal_test.go @@ -0,0 +1,22 @@ +package pike + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_fileStringEmptyError_Error(t *testing.T) { + tests := []struct { + name string + want string + }{ + {"Invoke", "no file provided"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &fileStringEmptyError{} + assert.Equalf(t, tt.want, e.Error(), "Error()") + }) + } +} diff --git a/src/data_test.go b/src/data_test.go index 4362ee12..acbd64af 100644 --- a/src/data_test.go +++ b/src/data_test.go @@ -76,6 +76,7 @@ func TestGetResources(t *testing.T) { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() + got, err := pike.GetResources(tt.args.file, tt.args.dirName) if (err != nil) != tt.wantErr { @@ -106,6 +107,7 @@ func Test_getLocalModules(t *testing.T) { notLocal, _ := filepath.Abs("../testdata/modules/examples/notlocal") notBlock := getInitialBlock(notLocal + "/module.local.tf") + moduleJson := make(pike.ModuleJson) tests := []struct { name string args args @@ -129,9 +131,9 @@ func Test_getLocalModules(t *testing.T) { } for _, tt := range tests { - //t.Parallel() + // t.Parallel() t.Run(tt.name, func(t *testing.T) { - got, err := pike.GetLocalModules(tt.args.block, tt.args.dirName) + got, err := pike.GetLocalModules(tt.args.block, tt.args.dirName, moduleJson) if (err != nil) != tt.wantErr { t.Errorf("GetResources() error = %v, wantErr %v", err, tt.wantErr) @@ -372,6 +374,7 @@ func TestGetPermission(t *testing.T) { "compute.subnetworks.useExternalIp", "compute.instances.setMetadata", "compute.instances.delete", + "compute.instances.get", "compute.instances.delete", }}, }, @@ -381,12 +384,15 @@ func TestGetPermission(t *testing.T) { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() + got, err := pike.GetPermission(tt.args.result) + if (err != nil) != tt.wantErr { t.Errorf("GetPermission() error = %v, wantErr %v", err, tt.wantErr) return } + if !reflect.DeepEqual(got, tt.want) { t.Errorf("GetPermission() = %v, want %v", got, tt.want) } @@ -434,12 +440,15 @@ func TestGetResourceBlocks(t *testing.T) { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() + got, err := pike.GetResourceBlocks(tt.args.file) + if (err != nil) != tt.wantErr { t.Errorf("GetResourceBlocks() error = %v, wantErr %v", err, tt.wantErr) return } + if !reflect.DeepEqual(got.SrcRange, tt.want) { t.Errorf("GetResourceBlocks() = %v, want %v", got.SrcRange, tt.want) } @@ -542,6 +551,7 @@ func TestDetectBackend(t *testing.T) { if (err != nil) != tt.wantErr { t.Errorf("DetectBackend() error = %v, wantErr %v", err, tt.wantErr) + return } diff --git a/src/error.go b/src/error.go index 3a0cae49..32505bcb 100644 --- a/src/error.go +++ b/src/error.go @@ -183,7 +183,7 @@ type invalidARNError struct { } func (m *invalidARNError) Error() string { - return fmt.Sprintf("invalid ARN: %s", m.arn) + return fmt.Sprintf("invalid role or ARN: %s", m.arn) } type awsConfigError struct { @@ -256,7 +256,7 @@ type setAWSAuthError struct { } func (m *setAWSAuthError) Error() string { - return fmt.Sprintf("failed to set AWS auth %v", m.err) + return fmt.Sprintf("failed to set AWS %v", m.err) } type terraformPlanError struct { diff --git a/src/error_test.go b/src/error_test.go index 68453949..b02dc7e9 100644 --- a/src/error_test.go +++ b/src/error_test.go @@ -379,9 +379,12 @@ func TestEmptyTypeNameError(t *testing.T) { } }) + //goland:noinspection GoLinter t.Run("implements error interface", func(t *testing.T) { t.Parallel() var err error = &emptyTypeNameError{} // Verify it satisfies error interface + + //goland:noinspection GoLinter if err == nil { t.Error("emptyTypeNameError should implement error interface") } @@ -455,6 +458,7 @@ func TestAssertionFailedError(t *testing.T) { } func TestInvalidJSONError(t *testing.T) { + t.Parallel() t.Run("implements error interface", func(t *testing.T) { t.Parallel() @@ -474,6 +478,8 @@ func TestInvalidJSONError(t *testing.T) { } func TestUnmarshallJSONError(t *testing.T) { + t.Parallel() + testCases := []struct { name string err error @@ -503,6 +509,7 @@ func TestUnmarshallJSONError(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { t.Parallel() + err := &unmarshallJSONError{ err: tc.err, resource: tc.resource, @@ -525,6 +532,8 @@ func TestAttributesFieldMissingError(t *testing.T) { } func TestAssertionError(t *testing.T) { + t.Parallel() + testCases := []struct { name string message string @@ -544,7 +553,10 @@ func TestAssertionError(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { + t.Parallel() + err := &assertionError{message: tc.message} + if got := err.Error(); got != tc.want { t.Errorf("assertionError.Error() = %v, want %v", got, tc.want) } @@ -553,6 +565,8 @@ func TestAssertionError(t *testing.T) { } func TestTemplateParseError(t *testing.T) { + t.Parallel() + testCases := []struct { name string err error @@ -572,7 +586,10 @@ func TestTemplateParseError(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { + t.Parallel() + err := &templateParseError{err: tc.err} + if got := err.Error(); got != tc.want { t.Errorf("templateParseError.Error() = %v, want %v", got, tc.want) } @@ -581,6 +598,8 @@ func TestTemplateParseError(t *testing.T) { } func TestTemplateExecuteError(t *testing.T) { + t.Parallel() + testCases := []struct { name string err error @@ -600,7 +619,10 @@ func TestTemplateExecuteError(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { + t.Parallel() + err := &templateExecuteError{err: tc.err} + if got := err.Error(); got != tc.want { t.Errorf("templateExecuteError.Error() = %v, want %v", got, tc.want) } @@ -609,6 +631,8 @@ func TestTemplateExecuteError(t *testing.T) { } func TestMarshallAWSPolicyError(t *testing.T) { + t.Parallel() + tests := []struct { name string err error @@ -633,7 +657,10 @@ func TestMarshallAWSPolicyError(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + t.Parallel() + err := &marshallAWSPolicyError{err: tt.err} + if got := err.Error(); got != tt.expected { t.Errorf("marshallAWSPolicyError.Error() = %v, want %v", got, tt.expected) } @@ -642,17 +669,23 @@ func TestMarshallAWSPolicyError(t *testing.T) { } func TestDirectoryErrors(t *testing.T) { + t.Parallel() t.Run("empty directory error", func(t *testing.T) { + t.Parallel() + err := &emptyDirectoryError{} expected := "directory value cannot be an empty string" + if err.Error() != expected { t.Errorf("expected %q, got %q", expected, err.Error()) } }) t.Run("directory not found error", func(t *testing.T) { + t.Parallel() err := &directoryNotFoundError{directory: "/tmp/nonexistent"} expected := "directory does not exist: /tmp/nonexistent" + if err.Error() != expected { t.Errorf("expected %q, got %q", expected, err.Error()) } @@ -661,16 +694,21 @@ func TestDirectoryErrors(t *testing.T) { func TestARNErrors(t *testing.T) { t.Run("empty ARN error", func(t *testing.T) { + t.Parallel() err := &arnEmptyError{} expected := "ARN cannot be empty" + if err.Error() != expected { t.Errorf("expected %q, got %q", expected, err.Error()) } }) t.Run("invalid ARN error", func(t *testing.T) { + t.Parallel() + err := &invalidARNError{arn: "invalid:arn"} - expected := "invalid ARN: invalid:arn" + + expected := "invalid role or ARN: invalid:arn" if err.Error() != expected { t.Errorf("expected %q, got %q", expected, err.Error()) @@ -679,8 +717,12 @@ func TestARNErrors(t *testing.T) { } func TestAWSErrors(t *testing.T) { + t.Parallel() t.Run("AWS config error", func(t *testing.T) { + t.Parallel() + err := &awsConfigError{err: &emptyNameError{}} + expected := "failed to load AWS config: Name cannot be empty" if err.Error() != expected { @@ -689,7 +731,10 @@ func TestAWSErrors(t *testing.T) { }) t.Run("get IAM version error", func(t *testing.T) { + t.Parallel() + err := &getIAMVersionError{err: &emptyNameError{}} + expected := "failed to get IAM version: Name cannot be empty" if err.Error() != expected { @@ -699,7 +744,10 @@ func TestAWSErrors(t *testing.T) { } func TestPolicyErrors(t *testing.T) { + t.Parallel() t.Run("sort actions error", func(t *testing.T) { + t.Parallel() + err := &sortActionsError{json: "invalid-json"} expected := "failed to sort actions: invalid-json" @@ -709,6 +757,8 @@ func TestPolicyErrors(t *testing.T) { }) t.Run("get policy version error", func(t *testing.T) { + t.Parallel() + err := &getPolicyVersionError{err: &emptyNameError{}} expected := "failed to get policy version: Name cannot be empty" @@ -718,6 +768,8 @@ func TestPolicyErrors(t *testing.T) { }) t.Run("input validation error", func(t *testing.T) { + t.Parallel() + err := &inputValidationError{err: &emptyNameError{}} expected := "input validation failed: Name cannot be empty" @@ -727,7 +779,10 @@ func TestPolicyErrors(t *testing.T) { }) t.Run("marshall policy error", func(t *testing.T) { + t.Parallel() + err := &marshallPolicyError{err: &emptyNameError{}} + expected := "failed to marshal policy: Name cannot be empty" if err.Error() != expected { @@ -740,32 +795,44 @@ func TestTerraformErrors(t *testing.T) { testErr := errors.New("test error") t.Run("terraformPlanError", func(t *testing.T) { + t.Parallel() + err := &terraformPlanError{err: testErr} expected := "failed to plan terraform test error" + if err.Error() != expected { t.Errorf("got %q, want %q", err.Error(), expected) } }) t.Run("terraformNewError", func(t *testing.T) { + t.Parallel() + err := &terraformNewError{err: testErr} expected := "failed to create terraform test error" + if err.Error() != expected { t.Errorf("got %q, want %q", err.Error(), expected) } }) t.Run("terraformOutputError", func(t *testing.T) { + t.Parallel() + err := &terraformOutputError{} expected := "terraform output is empty" + if err.Error() != expected { t.Errorf("got %q, want %q", err.Error(), expected) } }) t.Run("terraformApplyError with target", func(t *testing.T) { + t.Parallel() + err := &terraformApplyError{target: "module.test", err: testErr} expected := "failed to apply terraform module.test test error" + if err.Error() != expected { t.Errorf("got %q, want %q", err.Error(), expected) } @@ -802,6 +869,8 @@ func TestSecretAndEncryptionErrors(t *testing.T) { }) t.Run("decodeStringError", func(t *testing.T) { + t.Parallel() + err := &decodeStringError{err: testErr} expected := "failed to decode string: test error" @@ -811,6 +880,8 @@ func TestSecretAndEncryptionErrors(t *testing.T) { }) t.Run("encryptPlaintextError", func(t *testing.T) { + t.Parallel() + err := &encryptPlaintextError{err: testErr} expected := "failed to encrypt plaintext: test error" @@ -849,6 +920,8 @@ func TestGetAWSDataPermissionsError(t *testing.T) { } func TestSplitHubError(t *testing.T) { + t.Parallel() + originalErr := errors.New("another error") customErr := &splitHubError{err: originalErr} expected := "failed to split hub: another error" @@ -871,7 +944,7 @@ func TestSetRepoSecretError(t *testing.T) { func TestSetAWSAuthError(t *testing.T) { originalErr := errors.New("auth error") customErr := &setAWSAuthError{err: originalErr} - expected := "failed to set AWS auth auth error" + expected := "failed to set AWS auth error" if customErr.Error() != expected { t.Errorf("Expected %s, but got %s", expected, customErr.Error()) diff --git a/src/files.go b/src/files.go index 872a94d6..51e3e34d 100644 --- a/src/files.go +++ b/src/files.go @@ -3042,3 +3042,450 @@ var awsBackupLogicallyAirGappedVault []byte //go:embed mapping/aws/resource/kinesis/aws_kinesis_resource_policy.json var awsKinesisResourcePolicy []byte + +//go:embed mapping/aws/resource/appconfig/aws_appconfig_deployment.json +var awsAppconfigDeployment []byte + +//go:embed mapping/aws/resource/appsync/aws_appsync_graphql_api.json +var awsAppsyncGraphAPI []byte + +//go:embed mapping/aws/resource/bedrock/aws_bedrock_inference_profile.json +var awsBedrockInferenceProfile []byte + +//go:embed mapping/aws/resource/networkmanager/aws_networkmanager_dx_gateway_attachment.json +var awsNetworkmanagerDxGatewayAttachment []byte + +//go:embed mapping/aws/resource/s3tables/aws_s3tables_namespace.json +var awsS3tablesNamespace []byte + +//go:embed mapping/aws/resource/s3tables/aws_s3tables_table.json +var awsS3tablesTable []byte + +//go:embed mapping/aws/resource/s3tables/aws_s3tables_table_bucket_policy.json +var awsS3tablesTableBucketPolicy []byte + +//go:embed mapping/aws/resource/s3tables/aws_s3tables_table_policy.json +var awsS3tablesTablePolicy []byte + +//go:embed mapping/aws/resource/s3tables/aws_s3tables_table_bucket.json +var awsS3tablesTableBucket []byte + +//go:embed mapping/aws/resource/apigateway/aws_api_gateway_domain_name_access_association.json +var awsAPIGatewayDomainNameAccessAssociation []byte + +//go:embed mapping/aws/resource/appconfig/aws_appconfig_deployment_strategy.json +var awsAppconfigDeploymentStrategy []byte + +//go:embed mapping/aws/resource/appmesh/aws_appmesh_gateway_route.json +var awsAppmeshGatewayRoute []byte + +//go:embed mapping/aws/resource/appmesh/aws_appmesh_mesh.json +var awsAppmeshMesh []byte + +//go:embed mapping/aws/resource/appmesh/aws_appmesh_route.json +var awsAppmeshRoute []byte + +//go:embed mapping/aws/resource/appmesh/aws_appmesh_virtual_gateway.json +var awsAppmeshVirtualGateway []byte + +//go:embed mapping/aws/resource/appmesh/aws_appmesh_virtual_node.json +var awsAppmeshVirtualNode []byte + +//go:embed mapping/aws/resource/appmesh/aws_appmesh_virtual_router.json +var awsAppmeshVirtualRouter []byte + +//go:embed mapping/aws/resource/appmesh/aws_appmesh_virtual_service.json +var awsAppmeshVirtualService []byte + +//go:embed mapping/aws/resource/appstream/aws_appstream_directory_config.json +var awsAppstreamDirectoryConfig []byte + +//go:embed mapping/aws/resource/appstream/aws_appstream_fleet.json +var awsAppstreamFleet []byte + +//go:embed mapping/aws/resource/appstream/aws_appstream_fleet_stack_association.json +var awsAppstreamFleetStackAssociation []byte + +//go:embed mapping/aws/resource/appstream/aws_appstream_stack.json +var awsAppstreamStack []byte + +//go:embed mapping/aws/resource/appstream/aws_appstream_user.json +var awsAppstreamUser []byte + +//go:embed mapping/aws/resource/appstream/aws_appstream_user_stack_association.json +var awsAppstreamUserStackAssociation []byte + +//go:embed mapping/aws/resource/appsync/aws_appsync_api_cache.json +var awsAppsyncAPICache []byte + +//go:embed mapping/aws/resource/appsync/aws_appsync_api_key.json +var awsAppsyncAPIKey []byte + +//go:embed mapping/aws/resource/appsync/aws_appsync_datasource.json +var awsAppsyncDatasource []byte + +//go:embed mapping/aws/resource/appsync/aws_appsync_source_api_association.json +var awsAppsyncSourceAPIAssociation []byte + +//go:embed mapping/aws/resource/appsync/aws_appsync_type.json +var awsAppsyncType []byte + +//go:embed mapping/aws/resource/bedrock/aws_bedrock_guardrail.json +var awsBedrockGuardrail []byte + +//go:embed mapping/aws/resource/bedrock/aws_bedrock_guardrail_version.json +var awsBedrockGuardrailVersion []byte + +//go:embed mapping/aws/resource/cleanrooms/aws_cleanrooms_membership.json +var awsCleanroomsMembership []byte + +//go:embed mapping/aws/resource/codeconnections/aws_codeconnections_connection.json +var awsCodeconnectionsConnection []byte + +//go:embed mapping/aws/resource/profile/aws_customerprofiles_domain.json +var awsCustomerprofilesDomain []byte + +//go:embed mapping/aws/resource/elasticmapreduce/aws_emr_instance_fleet.json +var awsEmrInstanceFleet []byte + +//go:embed mapping/aws/resource/elasticmapreduce/aws_emr_instance_group.json +var awsEmrInstanceGroup []byte + +//go:embed mapping/aws/resource/globalaccelerator/aws_globalaccelerator_custom_routing_accelerator.json +var awsGlobalacceleratorCustomRoutingAccelerator []byte + +//go:embed mapping/aws/resource/globalaccelerator/aws_globalaccelerator_custom_routing_endpoint_group.json +var awsGlobalacceleratorCustomRoutingEndpointGroup []byte + +//go:embed mapping/aws/resource/globalaccelerator/aws_globalaccelerator_custom_routing_listener.json +var awsGlobalacceleratorCustomRoutingListener []byte + +//go:embed mapping/aws/resource/glue/aws_glue_partition.json +var awsGluePartition []byte + +//go:embed mapping/aws/resource/identitystore/aws_identitystore_group.json +var awsIdentitystoreGroup []byte + +//go:embed mapping/aws/resource/identitystore/aws_identitystore_user.json +var awsIdentitystoreUser []byte + +//go:embed mapping/aws/resource/identitystore/aws_identitystore_group_membership.json +var awsIdentitystoreGroupMembership []byte + +//go:embed mapping/aws/resource/imagebuilder/aws_imagebuilder_lifecycle_policy.json +var awsImagebuilderLifecyclePolicy []byte + +//go:embed mapping/aws/resource/iot/aws_iot_domain_configuration.json +var awsIotDomainConfiguration []byte + +//go:embed mapping/aws/resource/codebuild/aws_codebuild_fleet.json +var awsCodeBuildFleet []byte + +//go:embed mapping/aws/resource/config/aws_config_aggregate_authorization.json +var awsConfigAggregateAuthorization []byte + +//go:embed mapping/aws/resource/config/aws_config_organization_managed_rule.json +var awsConfigOrganizationManagedRule []byte + +//go:embed mapping/aws/resource/config/aws_config_remediation_configuration.json +var awsConfigRemediationConfiguration []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_instance_connect_endpoint.json +var awsEc2InstanceConnectEndpoint []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_traffic_mirror_filter_rule.json +var awsEc2TrafficMirrorFilterRule []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_traffic_mirror_session.json +var awsEc2TrafficMirrorSession []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_traffic_mirror_filter.json +var awsEc2TrafficMirrorFilter []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_traffic_mirror_target.json +var awsEc2TrafficMirrorTarget []byte + +//go:embed mapping/aws/resource/glue/aws_glue_data_quality_ruleset.json +var awsGlueDataQualityRuleset []byte + +//go:embed mapping/aws/resource/glue/aws_glue_dev_endpoint.json +var awsGlueDevEndpoint []byte + +//go:embed mapping/aws/resource/grafana/aws_grafana_workspace.json +var awsGrafanaWorkspace []byte + +//go:embed mapping/aws/resource/lakeformation/aws_lakeformation_data_lake_settings.json +var awsLakeformationDataLakeSettings []byte + +//go:embed mapping/aws/resource/lakeformation/aws_lakeformation_permissions.json +var awsLakeformationPermissions []byte + +//go:embed mapping/aws/resource/lakeformation/aws_lakeformation_resource.json +var awsLakeformationResource []byte + +//go:embed mapping/aws/resource/logs/aws_cloudwatch_log_delivery.json +var awsCloudwatchLogDelivery []byte + +//go:embed mapping/aws/resource/logs/aws_cloudwatch_log_delivery_destination.json +var awsCloudwatchLogDeliveryDestination []byte + +//go:embed mapping/aws/resource/logs/aws_cloudwatch_log_delivery_destination_policy.json +var awsCloudwatchLogDeliveryDestinationPolicy []byte + +//go:embed mapping/aws/resource/logs/aws_cloudwatch_log_delivery_source.json +var awsCloudwatchLogDeliverySource []byte + +//go:embed mapping/aws/resource/logs/aws_cloudwatch_log_index_policy.json +var awsCloudwatchLogIndexPolicy []byte + +//go:embed mapping/aws/resource/logs/aws_cloudwatch_log_anomaly_detector.json +var awsCloudwatchLogAnomalyDetector []byte + +//go:embed mapping/aws/resource/route53profiles/aws_route53profiles_association.json +var awsRoute53profilesAssociation []byte + +//go:embed mapping/aws/resource/route53profiles/aws_route53profiles_profile.json +var awsRoute53profilesProfile []byte + +//go:embed mapping/aws/resource/servicecatalog/aws_servicecatalogappregistry_attribute_group.json +var awsServicecatalogappregistryAttributeGroup []byte + +//go:embed mapping/aws/resource/servicecatalog/aws_servicecatalogappregistry_attribute_group_association.json +var awsServicecatalogappregistryAttributeGroupAssociation []byte + +//go:embed mapping/aws/resource/transfer/aws_transfer_server.json +var awsTransferServer []byte + +//go:embed mapping/aws/resource/transfer/aws_transfer_ssh_key.json +var awsTransferSSHKey []byte + +//go:embed mapping/aws/resource/transfer/aws_transfer_user.json +var awsTransferUser []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_block_public_access_exclusion.json +var awsVpcBlockPublicAccessExclusion []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_block_public_access_options.json +var awsVpcBlockPublicAccessOptions []byte + +//go:embed mapping/aws/resource/vpc-lattice/aws_vpclattice_resource_configuration.json +var awsVpclatticeResourceConfiguration []byte + +//go:embed mapping/aws/resource/vpc-lattice/aws_vpclattice_resource_gateway.json +var awsVpclatticeResourceGateway []byte + +//go:embed mapping/aws/resource/amplify/aws_amplify_backend_environment.json +var awsAmplifyBackendEnvironment []byte + +//go:embed mapping/aws/resource/amplify/aws_amplify_webhook.json +var awsAmplifyWebhook []byte + +//go:embed mapping/aws/resource/appfabric/aws_appfabric_app_authorization.json +var awsAppfabricAppAuthorization []byte + +//go:embed mapping/aws/resource/appfabric/aws_appfabric_app_authorization_connection.json +var awsAppfabricAppAuthorizationConnection []byte + +//go:embed mapping/aws/resource/appfabric/aws_appfabric_app_bundle.json +var awsAppfabricAppBundle []byte + +//go:embed mapping/aws/resource/appfabric/aws_appfabric_ingestion.json +var awsAppfabricIngestion []byte + +//go:embed mapping/aws/resource/appfabric/aws_appfabric_ingestion_destination.json +var awsAppfabricIngestionDestination []byte + +//go:embed mapping/aws/resource/apprunner/aws_apprunner_connection.json +var awsApprunnerConnection []byte + +//go:embed mapping/aws/resource/apprunner/aws_apprunner_custom_domain_association.json +var awsApprunnerCustomDomainAssociation []byte + +//go:embed mapping/aws/resource/apprunner/aws_apprunner_deployment.json +var awsApprunnerDeployment []byte + +//go:embed mapping/aws/resource/cloud9/aws_cloud9_environment_membership.json +var awsCloud9EnvironmentMembership []byte + +//go:embed mapping/aws/resource/cloudformation/aws_cloudcontrolapi_resource.json +var awsCloudcontrolapiResource []byte + +//go:embed mapping/aws/resource/sagemaker/aws_sagemaker_flow_definition.json +var awsSagemakerFlowDefinition []byte + +//go:embed mapping/aws/resource/sagemaker/aws_sagemaker_hub.json +var awsSagemakerHub []byte + +//go:embed mapping/aws/resource/sagemaker/aws_sagemaker_mlflow_tracking_server.json +var awsSagemakerMlflowTrackingServer []byte + +//go:embed mapping/aws/resource/shield/aws_shield_subscription.json +var awsShieldSubscription []byte + +//go:embed mapping/aws/resource/ec2/aws_spot_datafeed_subscription.json +var awsSpotDatafeedSubscription []byte + +//go:embed mapping/aws/resource/ssm/aws_ssm_activation.json +var awsSsmActivation []byte + +//go:embed mapping/aws/resource/ssm/aws_ssm_default_patch_baseline.json +var awsSsmDefaultPatchBaseline []byte + +//go:embed mapping/aws/resource/ssm/aws_ssm_service_setting.json +var awsSsmServiceSetting []byte + +//go:embed mapping/aws/resource/ssm-quicksetup/aws_ssmquicksetup_configuration_manager.json +var awsSsmquicksetupConfigurationManager []byte + +//go:embed mapping/aws/resource/wafregional/aws_wafregional_web_acl_association.json +var awsWafregionalWebACLAssociation []byte + +//go:embed mapping/aws/resource/bedrock/aws_bedrockagent_agent_collaborator.json +var awsBedrockagentAgentCollaborator []byte + +//go:embed mapping/aws/resource/bedrock/aws_bedrockagent_agent_knowledge_base_association.json +var awsBedrockagentKnowledgeBaseAssociation []byte + +//go:embed mapping/aws/resource/cloudformation/aws_cloudformation_stack_instances.json +var awsCloudformationStackInstances []byte + +//go:embed mapping/aws/resource/cloudfront/aws_cloudfront_vpc_origin.json +var awsCloudfrontVpcOrigin []byte + +//go:embed mapping/aws/resource/cloudhsm/aws_cloudhsm_v2_cluster.json +var awsCloudhsmV2Vluster []byte + +//go:embed mapping/aws/resource/cloudhsm/aws_cloudhsm_v2_hsm.json +var awsCloudhsmV2Hsm []byte + +//go:embed mapping/aws/resource/cloudtrail/aws_cloudtrail_organization_delegated_admin_account.json +var awsCloudtrailOrganizationDelegatedAdminAccount []byte + +//go:embed mapping/aws/resource/codeconnections/aws_codeconnections_host.json +var awsCodeconnectionsHost []byte + +//go:embed mapping/aws/resource/comprehend/aws_comprehend_entity_recognizer.json +var awsComprehendEntityRecognizer []byte + +//go:embed mapping/aws/resource/compute-optimizer/aws_computeoptimizer_enrollment_status.json +var awsComputeoptimizerEnrollmentStatus []byte + +//go:embed mapping/aws/resource/compute-optimizer/aws_computeoptimizer_recommendation_preferences.json +var awsComputeoptimizerRecommendationPreferences []byte + +//go:embed mapping/aws/resource/config/aws_config_organization_custom_policy_rule.json +var awsConfigOrganizationCustomPolicyRule []byte + +//go:embed mapping/aws/resource/config/aws_config_organization_custom_rule.json +var awsConfigOrganizationCustomRule []byte + +//go:embed mapping/aws/resource/config/aws_config_retention_configuration.json +var awsConfigRetentionConfiguration []byte + +//go:embed mapping/aws/resource/cost-optimization-hub/aws_costoptimizationhub_enrollment_status.json +var awsCostoptimizationhubEnrollmentStatus []byte + +//go:embed mapping/aws/resource/cost-optimization-hub/aws_costoptimizationhub_preferences.json +var awsCostoptimizationhubPreferences []byte + +//go:embed mapping/aws/resource/profile/aws_customerprofiles_profile.json +var awsCustomerprofilesProfile []byte + +//go:embed mapping/aws/resource/connect/aws_connect_lambda_function_association.json +var awsConnectLambdaFunctionAssociation []byte + +//go:embed mapping/aws/resource/securityhub/aws_securityhub_account.json +var awsSecurityhubAccount []byte + +//go:embed mapping/aws/resource/securityhub/aws_securityhub_action_target.json +var awsSecurityhubActionTarget []byte + +//go:embed mapping/aws/resource/securityhub/aws_securityhub_configuration_policy_association.json +var awsSecurityhubConfigurationPolicyAssociation []byte + +//go:embed mapping/aws/resource/securityhub/aws_securityhub_organization_admin_account.json +var awsSecurityhubOrganizationAdminAccount []byte + +//go:embed mapping/aws/resource/securityhub/aws_securityhub_standards_control_association.json +var awsSecurityhubStandardsControlAssociation []byte + +//go:embed mapping/aws/resource/securityhub/aws_securityhub_standards_subscription.json +var awsSecurityhubStandardsSubscription []byte + +//go:embed mapping/aws/resource/securitylake/aws_securitylake_custom_log_source.json +var awsSecuritylakeCustomLogSource []byte + +//go:embed mapping/aws/resource/transfer/aws_transfer_access.json +var awsTransferAccess []byte + +//go:embed mapping/aws/resource/transfer/aws_transfer_tag.json +var awsTransferTag []byte + +//go:embed mapping/aws/resource/detective/aws_detective_member.json +var awsDetectiveMember []byte + +//go:embed mapping/aws/resource/detective/aws_detective_organization_configuration.json +var awsDetectiveOrganizationConfiguration []byte + +//go:embed mapping/aws/resource/eks/aws_eks_access_policy_association.json +var awsEksAccessPolicyAssociation []byte + +//go:embed mapping/aws/resource/elasticmapreduce/aws_emrcontainers_job_template.json +var awsEmrcontainersJobTemplate []byte + +//go:embed mapping/aws/resource/fms/aws_fms_admin_account.json +var awsFmsAdminAccount []byte + +//go:embed mapping/aws/resource/glue/aws_glue_catalog_table_optimizer.json +var awsGlueCatalogTableOptimizer []byte + +//go:embed mapping/aws/resource/glue/aws_glue_partition_index.json +var awsGluePartitionIndex []byte + +//go:embed mapping/aws/resource/grafana/aws_grafana_license_association.json +var awsGrafanaLicenseAssociation []byte + +//go:embed mapping/aws/resource/grafana/aws_grafana_workspace_service_account.json +var awsGrafanaWorkspaceServiceAccount []byte + +//go:embed mapping/aws/resource/grafana/aws_grafana_workspace_service_account_token.json +var awsGrafanaWorkspaceServiceAccountToken []byte + +//go:embed mapping/aws/resource/ec2/aws_internet_gateway_attachment.json +var awsInternetGatewayAttachment []byte + +//go:embed mapping/aws/resource/kendra/aws_kendra_experience.json +var awsKendraExperience []byte + +//go:embed mapping/aws/resource/kendra/aws_kendra_query_suggestions_block_list.json +var awsKendraQuerySuggestionsBlockList []byte + +//go:embed mapping/aws/resource/kendra/aws_kendra_thesaurus.json +var awsKendraThesaurus []byte + +//go:embed mapping/aws/resource/aps/aws_prometheus_alert_manager_definition.json +var awsPrometheusAlertManagerDefinition []byte + +//go:embed mapping/aws/resource/aps/aws_prometheus_scraper.json +var awsPrometheusScraper []byte + +//go:embed mapping/aws/resource/aps/aws_prometheus_workspace.json +var awsPrometheusWorkspace []byte + +//go:embed mapping/aws/resource/rds/aws_rds_certificate.json +var awsRdsCertificate []byte + +//go:embed mapping/aws/resource/rds/aws_rds_cluster_snapshot_copy.json +var awsRdsClusterSnapshotCopy []byte + +//go:embed mapping/aws/resource/rds/aws_rds_custom_db_engine_version.json +var awsRdsCustomDBEngineVersion []byte + +//go:embed mapping/aws/resource/rds/aws_rds_export_task.json +var awsRdsExportTask []byte + +//go:embed mapping/aws/resource/rds/aws_rds_reserved_instance.json +var awsRdsReservedInstance []byte + +//go:embed mapping/aws/resource/lakeformation/aws_lakeformation_opt_in.json +var awsLakeformationOptIn []byte diff --git a/src/files_aws.go b/src/files_aws.go new file mode 100644 index 00000000..6544f1a6 --- /dev/null +++ b/src/files_aws.go @@ -0,0 +1,908 @@ +package pike + +import ( + _ "embed" // required for embed +) + +//go:embed mapping/aws/resource/dataexchange/aws_dataexchange_data_set.json +var awsDataexchangeDataSet []byte + +//go:embed mapping/aws/resource/dataexchange/aws_dataexchange_revision.json +var awsDataexchangeRevision []byte + +//go:embed mapping/aws/resource/devops-guru/aws_devopsguru_event_sources_config.json +var awsDevopsguruEventSourcesConfig []byte + +//go:embed mapping/aws/resource/devops-guru/aws_devopsguru_service_integration.json +var awsDevopsguruServiceIntegration []byte + +//go:embed mapping/aws/resource/drs/aws_drs_replication_configuration_template.json +var awsDrsReplicationConfigurationTemplate []byte + +//go:embed mapping/aws/resource/elastictranscoder/aws_elastictranscoder_pipeline.json +var awsElastictranscoderPipeline []byte + +//go:embed mapping/aws/resource/elastictranscoder/aws_elastictranscoder_preset.json +var awsElastictranscoderPreset []byte + +//go:embed mapping/aws/resource/kinesisanalytics/aws_kinesis_analytics_application.json +var awsKinesisanalyticsApplication []byte + +//go:embed mapping/aws/resource/kinesisanalytics/aws_kinesisanalyticsv2_application_snapshot.json +var awsKinesisanalyticsv2ApplicationSnapshot []byte + +//go:embed mapping/aws/resource/lakeformation/aws_lakeformation_lf_tag.json +var awsLakeformationLfTag []byte + +//go:embed mapping/aws/resource/lakeformation/aws_lakeformation_resource_lf_tags.json +var awsLakeformationResourceLfTags []byte + +//go:embed mapping/aws/resource/lambda/aws_lambda_function_recursion_config.json +var awsLambdaFunctionRecursionConfig []byte + +//go:embed mapping/aws/resource/lambda/aws_lambda_runtime_management_config.json +var awsLambdaRuntimeManagementConfig []byte + +//go:embed mapping/aws/resource/license-manager/aws_licensemanager_association.json +var awsLicensemanagerAssociation []byte + +//go:embed mapping/aws/resource/license-manager/aws_licensemanager_grant_accepter.json +var awsLicensemanagerGrantAccepter []byte + +//go:embed mapping/aws/resource/mediapackagev2/aws_media_packagev2_channel_group.json +var awsMediaPackagev2ChannelGroup []byte + +//go:embed mapping/aws/resource/mediastore/aws_media_store_container.json +var awsMediaStoreContainer []byte + +//go:embed mapping/aws/resource/mediastore/aws_media_store_container_policy.json +var awsMediaStoreContainerPolicy []byte + +//go:embed mapping/aws/resource/medialive/aws_medialive_channel.json +var awsMedialiveChannel []byte + +//go:embed mapping/aws/resource/devicefarm/aws_devicefarm_device_pool.json +var awsDevicefarmDevicePool []byte + +//go:embed mapping/aws/resource/devicefarm/aws_devicefarm_instance_profile.json +var awsDevicefarmInstanceProfile []byte + +//go:embed mapping/aws/resource/devicefarm/aws_devicefarm_network_profile.json +var awsDevicefarmNetworkProfile []byte + +//go:embed mapping/aws/resource/devicefarm/aws_devicefarm_project.json +var awsDevicefarmProject []byte + +//go:embed mapping/aws/resource/devicefarm/aws_devicefarm_upload.json +var awsDevicefarmUpload []byte + +//go:embed mapping/aws/resource/finspace/aws_finspace_kx_cluster.json +var awsFinspaceKxCluster []byte + +//go:embed mapping/aws/resource/finspace/aws_finspace_kx_database.json +var awsFinspaceKxDatabase []byte + +//go:embed mapping/aws/resource/finspace/aws_finspace_kx_dataview.json +var awsFinspaceKxDataview []byte + +//go:embed mapping/aws/resource/finspace/aws_finspace_kx_scaling_group.json +var awsFinspaceKxScalingGroup []byte + +//go:embed mapping/aws/resource/finspace/aws_finspace_kx_user.json +var awsFinspaceKxUser []byte + +//go:embed mapping/aws/resource/finspace/aws_finspace_kx_volume.json +var awsFinspaceKxVolume []byte + +//go:embed mapping/aws/resource/lightsail/aws_lightsail_bucket_access_key_access_key.json +var awsLightsailBucketAccessKeyAccessKey []byte + +//go:embed mapping/aws/resource/lightsail/aws_lightsail_bucket_resource_access.json +var awsLightsailBucketResourceAccess []byte + +//go:embed mapping/aws/resource/lightsail/aws_lightsail_container_service.json +var awsLightsailContainerService []byte + +//go:embed mapping/aws/resource/lightsail/aws_lightsail_container_service_deployment_version.json +var awsLightsailContainerServiceDeploymentVersion []byte + +//go:embed mapping/aws/resource/lightsail/aws_lightsail_disk_attachment.json +var awsLightsailDiskAttachment []byte + +//go:embed mapping/aws/resource/lightsail/aws_lightsail_domain.json +var awsLightsailDomain []byte + +//go:embed mapping/aws/resource/lightsail/aws_lightsail_domain_entry.json +var awsLightsailDomainEntry []byte + +//go:embed mapping/aws/resource/lightsail/aws_lightsail_lb_attachment.json +var awsLightsailLbAttachment []byte + +//go:embed mapping/aws/resource/lightsail/aws_lightsail_lb_certificate.json +var awsLightsailLbCertificate []byte + +//go:embed mapping/aws/resource/lightsail/aws_lightsail_lb_certificate_attachment.json +var awsLightsailLbCertificateAttachment []byte + +//go:embed mapping/aws/resource/lightsail/aws_lightsail_lb_https_redirection_policy.json +var awsLightsailLbHTTPSRedirectionPolicy []byte + +//go:embed mapping/aws/resource/lightsail/aws_lightsail_lb_stickiness_policy.json +var awsLightsailLbStickinessPolicy []byte + +//go:embed mapping/aws/resource/directconnect/aws_dx_bgp_peer.json +var awsDxBgpPeer []byte + +//go:embed mapping/aws/resource/directconnect/aws_dx_connection.json +var awsDxConnection []byte + +//go:embed mapping/aws/resource/directconnect/aws_dx_connection_association.json +var awsDxConnectionAssociation []byte + +//go:embed mapping/aws/resource/directconnect/aws_dx_connection_confirmation.json +var awsDxConnectionConfirmation []byte + +//go:embed mapping/aws/resource/directconnect/aws_dx_gateway_association_proposal.json +var awsDxGatewayAssociationProposal []byte + +//go:embed mapping/aws/resource/directconnect/aws_dx_hosted_connection.json +var awsDxHostedConnection []byte + +//go:embed mapping/aws/resource/directconnect/aws_dx_hosted_private_virtual_interface.json +var awsDxHostedPrivateVirtualInterface []byte + +//go:embed mapping/aws/resource/directconnect/aws_dx_hosted_private_virtual_interface_accepter.json +var awsDxHostedPrivateVirtualInterfaceAccepter []byte + +//go:embed mapping/aws/resource/directconnect/aws_dx_hosted_public_virtual_interface.json +var awsDxHostedPublicVirtualInterface []byte + +//go:embed mapping/aws/resource/directconnect/aws_dx_hosted_public_virtual_interface_accepter.json +var awsDxHostedPublicVirtualInterfaceAccepter []byte + +//go:embed mapping/aws/resource/directconnect/aws_dx_hosted_transit_virtual_interface.json +var awsDxHostedTransitVirtualInterface []byte + +//go:embed mapping/aws/resource/directconnect/aws_dx_lag.json +var awsDxLag []byte + +//go:embed mapping/aws/resource/directconnect/aws_dx_macsec_key_association.json +var awsDxMacsecKeyAssociation []byte + +//go:embed mapping/aws/resource/directconnect/aws_dx_private_virtual_interface.json +var awsDxPrivateVirtualInterface []byte + +//go:embed mapping/aws/resource/directconnect/aws_dx_public_virtual_interface.json +var awsDxPublicVirtualInterface []byte + +//go:embed mapping/aws/resource/directconnect/aws_dx_transit_virtual_interface.json +var awsDxTransitVirtualInterface []byte + +//go:embed mapping/aws/resource/directoryservice/aws_directory_service_conditional_forwarder.json +var awsDirectoryServiceConditionalForwarder []byte + +//go:embed mapping/aws/resource/directoryservice/aws_directory_service_radius_settings.json +var awsDirectoryServiceRadiusSettings []byte + +//go:embed mapping/aws/resource/directoryservice/aws_directory_service_region.json +var awsDirectoryServiceRegion []byte + +//go:embed mapping/aws/resource/directoryservice/aws_directory_service_shared_directory.json +var awsDirectoryServiceSharedDirectory []byte + +//go:embed mapping/aws/resource/directoryservice/aws_directory_service_shared_directory_accepter.json +var awsDirectoryServiceSharedDirectoryAccepter []byte + +//go:embed mapping/aws/resource/directoryservice/aws_directory_service_trust.json +var awsDirectoryServiceTrust []byte + +//go:embed mapping/aws/resource/opsworks/aws_opsworks_application.json +var awsOpsworksApplication []byte + +//go:embed mapping/aws/resource/opsworks/aws_opsworks_custom_layer.json +var awsOpsworksCustomLayer []byte + +//go:embed mapping/aws/resource/opsworks/aws_opsworks_ecs_cluster_layer.json +var awsOpsworksEcsClusterLayer []byte + +//go:embed mapping/aws/resource/opsworks/aws_opsworks_ganglia_layer.json +var awsOpsworksGangliaLayer []byte + +//go:embed mapping/aws/resource/opsworks/aws_opsworks_haproxy_layer.json +var awsOpsworksHaproxyLayer []byte + +//go:embed mapping/aws/resource/opsworks/aws_opsworks_instance.json +var awsOpsworksInstance []byte + +//go:embed mapping/aws/resource/opsworks/aws_opsworks_java_app_layer.json +var awsOpsworksJavaAppLayer []byte + +//go:embed mapping/aws/resource/opsworks/aws_opsworks_memcached_layer.json +var awsOpsworksMemcachedLayer []byte + +//go:embed mapping/aws/resource/opsworks/aws_opsworks_mysql_layer.json +var awsOpsworksMysqlLayer []byte + +//go:embed mapping/aws/resource/opsworks/aws_opsworks_nodejs_app_layer.json +var awsOpsworksNodejsAppLayer []byte + +//go:embed mapping/aws/resource/opsworks/aws_opsworks_permission.json +var awsOpsworksPermission []byte + +//go:embed mapping/aws/resource/opsworks/aws_opsworks_php_app_layer.json +var awsOpsworksPhpAppLayer []byte + +//go:embed mapping/aws/resource/opsworks/aws_opsworks_rails_app_layer.json +var awsOpsworksRailsAppLayer []byte + +//go:embed mapping/aws/resource/opsworks/aws_opsworks_rds_db_instance.json +var awsOpsworksRdsDBInstance []byte + +//go:embed mapping/aws/resource/opsworks/aws_opsworks_stack.json +var awsOpsworksStack []byte + +//go:embed mapping/aws/resource/opsworks/aws_opsworks_static_web_layer.json +var awsOpsworksStaticWebLayer []byte + +//go:embed mapping/aws/resource/opsworks/aws_opsworks_user_profile.json +var awsOpsworksUserProfile []byte + +//go:embed mapping/aws/resource/kafka/aws_mskconnect_connector.json +var awsMskconnectConnector []byte + +//go:embed mapping/aws/resource/dynamodb/aws_dynamodb_kinesis_streaming_destination.json +var awsDynamodbKinesisStreamingDestination []byte + +//go:embed mapping/aws/resource/dynamodb/aws_dynamodb_resource_policy.json +var awsDynamodbResourcePolicy []byte + +//go:embed mapping/aws/resource/dynamodb/aws_dynamodb_table_export.json +var awsDynamodbTableExport []byte + +//go:embed mapping/aws/resource/dynamodb/aws_dynamodb_table_replica.json +var awsDynamodbTableReplica []byte + +//go:embed mapping/aws/resource/ec2/aws_ebs_snapshot_import.json +var awsEbsSnapshotImport []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_capacity_block_reservation.json +var awsEc2CapacityBlockReservation []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_instance_metadata_defaults.json +var awsEc2InstanceMetadataDefaults []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_instance_state.json +var awsEc2InstanceState []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_managed_prefix_list_entry.json +var awsEc2ManagedPrefixListEntry []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_subnet_cidr_reservation.json +var awsEc2SubnetCidrReservation []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_transit_gateway_connect.json +var awsEc2TransitGatewayConnectPeer []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_transit_gateway_default_route_table_association.json +var awsEc2TransitGatewayDefaultRouteTableAssociation []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_transit_gateway_route_table_propagation.json +var awsEc2TransitGatewayDefaultRouteTablePropagation []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_transit_gateway_peering_attachment_accepter.json +var awsEc2TransitGatewayPeeringAttachmentAccepter []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_transit_gateway_policy_table.json +var awsEc2TransitGatewayPolicyTable []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_transit_gateway_policy_table_association.json +var awsEc2TransitGatewayPolicyTableAssociation []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_transit_gateway_prefix_list_reference.json +var awsEc2TransitGatewayPrefixListReference []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_transit_gateway_vpc_attachment_accepter.json +var awsEc2TransitGatewayVpcAttachmentAccepter []byte + +//go:embed mapping/aws/resource/guardduty/aws_guardduty_detector_feature.json +var awsGuarddutyDetectorFeature []byte + +//go:embed mapping/aws/resource/guardduty/aws_guardduty_invite_accepter.json +var awsGuarddutyInviteAcceptor []byte + +//go:embed mapping/aws/resource/guardduty/aws_guardduty_member_detector_feature.json +var awsGuarddutyMemberDetectorFeature []byte + +//go:embed mapping/aws/resource/guardduty/aws_guardduty_organization_admin_account.json +var awsGuarddutyOrganizationAdminAccount []byte + +//go:embed mapping/aws/resource/guardduty/aws_guardduty_organization_configuration.json +var awsGuarddutyOrganizationConfiguration []byte + +//go:embed mapping/aws/resource/guardduty/aws_guardduty_publishing_destination.json +var awsGuarddutyPublishingDestination []byte + +//go:embed mapping/aws/resource/lex/aws_lexv2models_bot.json +var awsLexv2ModelsBot []byte + +//go:embed mapping/aws/resource/lex/aws_lexv2models_bot_locale.json +var awsLexv2ModelsBotLocale []byte + +//go:embed mapping/aws/resource/lex/aws_lexv2models_bot_version.json +var awsLexv2ModelsBotVersion []byte + +//go:embed mapping/aws/resource/lex/aws_lexv2models_intent.json +var awsLexv2ModelsIntent []byte + +//go:embed mapping/aws/resource/lex/aws_lexv2models_slot.json +var awsLexv2ModelsSlot []byte + +//go:embed mapping/aws/resource/lex/aws_lexv2models_slot_type.json +var awsLexv2ModelsSlotType []byte + +//go:embed mapping/aws/resource/guardduty/aws_guardduty_organization_configuration_feature.json +var awsGuarddutyOrganizationConfigurationFeature []byte + +//go:embed mapping/aws/resource/mobiletargeting/aws_pinpoint_adm_channel.json +var awsPinpointAdmChannel []byte + +//go:embed mapping/aws/resource/mobiletargeting/aws_pinpoint_apns_channel.json +var awsPinpointApnsChannel []byte + +//go:embed mapping/aws/resource/mobiletargeting/aws_pinpoint_apns_sandbox_channel.json +var awsPinpointApnsSandboxChannel []byte + +//go:embed mapping/aws/resource/mobiletargeting/aws_pinpoint_apns_voip_channel.json +var awsPinpointApnsVoipChannel []byte + +//go:embed mapping/aws/resource/mobiletargeting/aws_pinpoint_apns_voip_sandbox_channel.json +var awsPinpointApnsVoipSandboxChannel []byte + +//go:embed mapping/aws/resource/mobiletargeting/aws_pinpoint_app.json +var awsPinpointApp []byte + +//go:embed mapping/aws/resource/mobiletargeting/aws_pinpoint_baidu_channel.json +var awsPinpointBaiduChannel []byte + +//go:embed mapping/aws/resource/mobiletargeting/aws_pinpoint_email_channel.json +var awsPinpointEmailChannel []byte + +//go:embed mapping/aws/resource/mobiletargeting/aws_pinpoint_email_template.json +var awsPinpointEmailTemplate []byte + +//go:embed mapping/aws/resource/mobiletargeting/aws_pinpoint_event_stream.json +var awsPinpointEventStream []byte + +//go:embed mapping/aws/resource/mobiletargeting/aws_pinpoint_gcm_channel.json +var awsPinpointGcmChannel []byte + +//go:embed mapping/aws/resource/mobiletargeting/aws_pinpoint_sms_channel.json +var awsPinpointSmsChannel []byte + +//go:embed mapping/aws/resource/sms-voice/aws_pinpointsmsvoicev2_configuration_set.json +var awsPinpointsmsvoicev2ConfigurationSet []byte + +//go:embed mapping/aws/resource/sms-voice/aws_pinpointsmsvoicev2_opt_out_list.json +var awsPinpointsmsvoicev2OptOutList []byte + +//go:embed mapping/aws/resource/sms-voice/aws_pinpointsmsvoicev2_phone_number.json +var awsPinpointsmsvoicev2PhoneNumber []byte + +//go:embed mapping/aws/resource/sso/aws_ssoadmin_account_assignment.json +var awsSsoadminAccountAssignment []byte + +//go:embed mapping/aws/resource/sso/aws_ssoadmin_application_access_scope.json +var awsSsoadminApplicationAccessScope []byte + +//go:embed mapping/aws/resource/sso/aws_ssoadmin_application_assignment_configuration.json +var awsSsoadminApplicationAssignmentConfiguration []byte + +//go:embed mapping/aws/resource/sso/aws_ssoadmin_customer_managed_policy_attachment.json +var awsSsoadminCustomerManagedPolicyAttachment []byte + +//go:embed mapping/aws/resource/sso/aws_ssoadmin_instance_access_control_attributes.json +var awsSsoadminInstanceAccessControlAttributes []byte + +//go:embed mapping/aws/resource/sso/aws_ssoadmin_managed_policy_attachment.json +var awsSsoadminManagedPolicyAttachment []byte + +//go:embed mapping/aws/resource/sso/aws_ssoadmin_permission_set_inline_policy.json +var awsSsoadminPermissionSetInlinePolicy []byte + +//go:embed mapping/aws/resource/sso/aws_ssoadmin_permissions_boundary_attachment.json +var awsSsoadminPermissionsBoundaryAttachment []byte + +//go:embed mapping/aws/resource/sso/aws_ssoadmin_trusted_token_issuer.json +var awsSsoadminTrustedTokenIssuer []byte + +//go:embed mapping/aws/resource/ses/aws_sesv2_account_suppression_attributes.json +var awsSesv2AccountSuppressionAttributes []byte + +//go:embed mapping/aws/resource/ses/aws_sesv2_account_vdm_attributes.json +var awsSesv2AccountVdmAttributes []byte + +//go:embed mapping/aws/resource/ses/aws_sesv2_configuration_set.json +var awsSesv2ConfigurationSet []byte + +//go:embed mapping/aws/resource/ses/aws_sesv2_configuration_set_event_destination.json +var awsSesv2ConfigurationSetEventDestination []byte + +//go:embed mapping/aws/resource/ses/aws_sesv2_contact_list.json +var awsSesv2ContactList []byte + +//go:embed mapping/aws/resource/ses/aws_sesv2_dedicated_ip_assignment.json +var awsSesv2DedicatedIPAssignment []byte + +//go:embed mapping/aws/resource/ses/aws_sesv2_dedicated_ip_pool.json +var awsSesv2DedicatedIPPool []byte + +//go:embed mapping/aws/resource/ses/aws_sesv2_email_identity.json +var awsSesv2EmailIdentity []byte + +//go:embed mapping/aws/resource/ses/aws_sesv2_email_identity_feedback_attributes.json +var awsSesv2EmailIdentityFeedbackAttributes []byte + +//go:embed mapping/aws/resource/ses/aws_sesv2_email_identity_mail_from_attributes.json +var awsSesv2EmailIdentityMailFromAttributes []byte + +//go:embed mapping/aws/resource/ses/aws_sesv2_email_identity_policy.json +var awsSesv2EmailIdentityPolicy []byte + +//go:embed mapping/aws/resource/redshift/aws_redshift_cluster_snapshot.json +var awsRedshiftClusterSnapshot []byte + +//go:embed mapping/aws/resource/redshift/aws_redshift_data_share_authorization.json +var awsRedshiftDataShareAuthorization []byte + +//go:embed mapping/aws/resource/redshift/aws_redshift_data_share_consumer_association.json +var awsRedshiftDataShareConsumerAssociation []byte + +//go:embed mapping/aws/resource/redshift/aws_redshift_logging.json +var awsRedshiftLogging []byte + +//go:embed mapping/aws/resource/redshift/aws_redshift_partner.json +var awsRedshiftPartner []byte + +//go:embed mapping/aws/resource/redshift/aws_redshift_resource_policy.json +var awsRedshiftResourcePolicy []byte + +//go:embed mapping/aws/resource/redshift/aws_redshift_snapshot_copy.json +var awsRedshiftSnapshotCopy []byte + +//go:embed mapping/aws/resource/redshift-data/aws_redshiftdata_statement.json +var awsRedshiftdataStatement []byte + +//go:embed mapping/aws/resource/redshift-serverless/aws_redshiftserverless_custom_domain_association.json +var awsRedshiftserverlessCustomDomainAssociation []byte + +//go:embed mapping/aws/resource/redshift-serverless/aws_redshiftserverless_endpoint_access.json +var awsRedshiftserverlessEndpointAccess []byte + +//go:embed mapping/aws/resource/redshift-serverless/aws_redshiftserverless_resource_policy.json +var awsRedshiftserverlessResourcePolicy []byte + +//go:embed mapping/aws/resource/redshift-serverless/aws_redshiftserverless_snapshot.json +var awsRedshiftserverlessSnapshot []byte + +//go:embed mapping/aws/resource/redshift-serverless/aws_redshiftserverless_usage_limit.json +var awsRedshiftserverlessUsageLimit []byte + +//go:embed mapping/aws/resource/route53domains/aws_route53domains_delegation_signer_record.json +var awsRoute53DomainsDelegationSignerRecord []byte + +//go:embed mapping/aws/resource/route53domains/aws_route53domains_domain.json +var awsRoute53DomainsDomain []byte + +//go:embed mapping/aws/resource/route53domains/aws_route53domains_registered_domain.json +var awsRoute53DomainsRegisteredDomain []byte + +//go:embed mapping/aws/resource/route53profiles/aws_route53profiles_resource_association.json +var awsRoute53profilesResourceAssociation []byte + +//go:embed mapping/aws/resource/s3-express/aws_s3_directory_bucket.json +var awsS3DirectoryBucket []byte + +//go:embed mapping/aws/resource/s3/aws_s3_object_copy.json +var awsS3ObjectCopy []byte + +//go:embed mapping/aws/resource/s3-outposts/aws_s3control_access_grants_instance_resource_policy.json +var awsS3controlAccessGrantInstanceResourcePolicy []byte + +//go:embed mapping/aws/resource/s3-outposts/aws_s3control_bucket.json +var awsS3ControlBucket []byte + +//go:embed mapping/aws/resource/s3-outposts/aws_s3control_bucket_lifecycle_configuration.json +var awsS3ControlBucketLifecycleAssociation []byte + +//go:embed mapping/aws/resource/s3-outposts/aws_s3control_bucket_policy.json +var awsS3ControlBucketPolicy []byte + +//go:embed mapping/aws/resource/s3-outposts/aws_s3control_object_lambda_access_point.json +var awsS3ControlObjectLambdaAccessPoint []byte + +//go:embed mapping/aws/resource/s3-outposts/aws_s3control_object_lambda_access_point_policy.json +var awsS3ControlObjectLambdaAccessPointPolicy []byte + +//go:embed mapping/aws/resource/s3/aws_s3control_storage_lens_configuration.json +var awsS3ControlStorageLensConfiguration []byte + +//go:embed mapping/aws/resource/es/aws_opensearch_authorize_vpc_endpoint_access.json +var awsOpensearchAuthorizeVpcEndpointAccess []byte + +//go:embed mapping/aws/resource/es/aws_opensearch_domain_saml_options.json +var awsOpensearchDomainSamlOptions []byte + +//go:embed mapping/aws/resource/es/aws_opensearch_inbound_connection_accepter.json +var awsOpensearchInboundConnectionAccepter []byte + +//go:embed mapping/aws/resource/es/aws_opensearch_outbound_connection.json +var awsOpensearchOutboundConnection []byte + +//go:embed mapping/aws/resource/es/aws_opensearch_package.json +var awsOpensearchPackage []byte + +//go:embed mapping/aws/resource/es/aws_opensearch_package_association.json +var awsOpensearchPackageAssociation []byte + +//go:embed mapping/aws/resource/es/aws_opensearch_vpc_endpoint.json +var awsOpensearchVPCEndpoint []byte + +//go:embed mapping/aws/resource/servicediscovery/aws_service_discovery_http_namespace.json +var awsServiceDiscoveryHttpNamespace []byte + +//go:embed mapping/aws/resource/servicediscovery/aws_service_discovery_instance.json +var awsServiceDiscoveryInstance []byte + +//go:embed mapping/aws/resource/servicediscovery/aws_service_discovery_private_dns_namespace.json +var awsServiceDiscoveryPrivateDNSNamespace []byte + +//go:embed mapping/aws/resource/servicediscovery/aws_service_discovery_public_dns_namespace.json +var awsServiceDiscoveryPublicDNSNamespace []byte + +//go:embed mapping/aws/resource/servicediscovery/aws_service_discovery_service.json +var awsServiceDiscoveryService []byte + +//go:embed mapping/aws/resource/macie2/aws_macie2_account.json +var awsMacieAccount []byte + +//go:embed mapping/aws/resource/macie2/aws_macie2_classification_export_configuration.json +var awsMacieClassificationExportConfiguration []byte + +//go:embed mapping/aws/resource/macie2/aws_macie2_classification_job.json +var awsMacieClassificationJob []byte + +//go:embed mapping/aws/resource/macie2/aws_macie2_invitation_accepter.json +var awsMacieInvitationAccepter []byte + +//go:embed mapping/aws/resource/macie2/aws_macie2_member.json +var awsMacieMember []byte + +//go:embed mapping/aws/resource/macie2/aws_macie2_organization_admin_account.json +var awsMacieOrganizationAdminAccount []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_endpoint_policy.json +var awsVpcEndpointPolicy []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_endpoint_private_dns.json +var awsVpcEndpointPrivateDns []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_endpoint_security_group_association.json +var awsVpcEndpointSecurityGroupAssociation []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_endpoint_service_allowed_principal.json +var awsVpcEndpointServiceAllowedPrincipal []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_endpoint_service_private_dns_verification.json +var awsVpcEndpointServicePrivateDnsVerification []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_ipam_organization_admin_account.json +var awsVpcIpamOrganizationAdminAccount []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_ipv6_cidr_block_association.json +var awsVpcIpv6CidrBlockAssociation []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_network_performance_metric_subscription.json +var awsVpcNetworkPerformanceMetricSubscription []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_security_group_vpc_association.json +var awsVpcSecurityGroupAssociation []byte + +//go:embed mapping/aws/resource/vpc-lattice/aws_vpclattice_service_network_resource_association.json +var awsVpclatticeServiceNetworkResourceAssociation []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_endpoint_connection_accepter.json +var awsVpcEndpointConnectionAccepter []byte + +//go:embed mapping/aws/resource/iot/aws_iot_event_configurations.json +var awsIotEventConfigurations []byte + +//go:embed mapping/aws/resource/iot/aws_iot_indexing_configuration.json +var awsIotIndexingConfiguration []byte + +//go:embed mapping/aws/resource/iot/aws_iot_logging_options.json +var awsIotLoggingOptions []byte + +//go:embed mapping/aws/resource/iot/aws_iot_policy_attachment.json +var awsIotPolicyAttachment []byte + +//go:embed mapping/aws/resource/iot/aws_iot_thing_group_membership.json +var awsIotThingGroupMembership []byte + +//go:embed mapping/aws/resource/iot/aws_iot_thing_principal_attachment.json +var awsIotThingPrincipalAttachment []byte + +//go:embed mapping/aws/resource/elasticloadbalancing/aws_lb_listener_certificate.json +var awsLbListenerCertificate []byte + +//go:embed mapping/aws/resource/elasticloadbalancing/aws_lb_ssl_negotiation_policy.json +var awsLbSslNegotiationPolicy []byte + +//go:embed mapping/aws/resource/ec2/aws_main_route_table_association.json +var awsMainRouteTableAssociation []byte + +//go:embed mapping/aws/resource/memorydb/aws_memorydb_multi_region_cluster.json +var awsMemorydbMultiRegionCluster []byte + +//go:embed mapping/aws/resource/kafka/aws_msk_single_scram_secret_association.json +var awsMskSingleScramSecretAssociation []byte + +//go:embed mapping/aws/resource/kafkaconnect/aws_mskconnect_custom_plugin.json +var awsMskconnectCustomPlugin []byte + +//go:embed mapping/aws/resource/kafkaconnect/aws_mskconnect_worker_configuration.json +var awsMskconnectWorkerConfiguration []byte + +//go:embed mapping/aws/resource/ec2/aws_network_interface_sg_attachment.json +var awsNetworkInterfaceSgAttachment []byte + +//go:embed mapping/aws/resource/networkmanager/aws_networkmanager_attachment_accepter.json +var awsNetworkmanagerAttachmentAccepter []byte + +//go:embed mapping/aws/resource/networkmanager/aws_networkmanager_connection.json +var awsNetworkmanagerConnection []byte + +//go:embed mapping/aws/resource/networkmanager/aws_networkmanager_core_network_policy_attachment.json +var awsNetworkmanagerCoreNetworkPolicyAttachment []byte + +//go:embed mapping/aws/resource/networkmanager/aws_networkmanager_transit_gateway_connect_peer_association.json +var awsNetworkmanagerTransitGatewayConnectPeerAssociation []byte + +//go:embed mapping/aws/resource/networkmonitor/aws_networkmonitor_monitor.json +var awsNetworkmonitorMonitor []byte + +//go:embed mapping/aws/resource/networkmonitor/aws_networkmonitor_probe.json +var awsNetworkmonitorProbe []byte + +//go:embed mapping/aws/resource/organizations/aws_organizations_delegated_administrator.json +var awsOrganizationsDelegatedAdministrator []byte + +//go:embed mapping/aws/resource/aps/aws_prometheus_rule_group_namespace.json +var awsPrometheusRuleGroupNamespace []byte + +//go:embed mapping/aws/resource/qldb/aws_qldb_ledger.json +var awsQlbdLedger []byte + +//go:embed mapping/aws/resource/ram/aws_ram_resource_share_accepter.json +var awsRamResourceShareAccepter []byte + +//go:embed mapping/aws/resource/ram/aws_ram_sharing_with_organization.json +var awsRamSharingWithOrganization []byte + +//go:embed mapping/aws/resource/rbin/aws_rbin_rule.json +var awsRbinRule []byte + +//go:embed mapping/aws/resource/rds/aws_rds_instance_state.json +var awsRdsInstanceState []byte + +//go:embed mapping/aws/resource/resiliencehub/aws_resiliencehub_resiliency_policy.json +var awsResilienceResiliencePolicy []byte + +//go:embed mapping/aws/resource/resource-groups/aws_resourcegroups_resource.json +var awsResourcegroupsResource []byte + +//go:embed mapping/aws/resource/rum/aws_rum_metrics_destination.json +var awsRumMetricsDestination []byte + +//go:embed mapping/aws/resource/securityhub/aws_securityhub_invite_accepter.json +var awsSecurityHubInviteAccepter []byte + +//go:embed mapping/aws/resource/securityhub/aws_securityhub_member.json +var awsSecurityhubMember []byte + +//go:embed mapping/aws/resource/serverlessrepo/aws_serverlessapplicationrepository_cloudformation_stack.json +var awsServerlessapplicationrepositoryCloudformationStack []byte + +//go:embed mapping/aws/resource/servicecatalog/aws_servicecatalog_provisioning_artifact.json +var awsServiceCatalogProvisioningArtifact []byte + +//go:embed mapping/aws/resource/shield/aws_shield_application_layer_automatic_response.json +var awsShieldApplicationLayerAutomaticsResponse []byte + +//go:embed mapping/aws/resource/shield/aws_shield_drt_access_log_bucket_association.json +var awsShieldDrtAccessLogBucketAssociation []byte + +//go:embed mapping/aws/resource/shield/aws_shield_drt_access_role_arn_association.json +var awsShieldDrtAccessRoleArnAssociation []byte + +//go:embed mapping/aws/resource/shield/aws_shield_protection_health_check_association.json +var awsShieldProtectionHealthCheckAssociation []byte + +//go:embed mapping/aws/resource/timestream/aws_timestreamquery_scheduled_query.json +var awsTimestreamqueryScheduledQuery []byte + +//go:embed mapping/aws/resource/verified-access/aws_verifiedaccess_instance_trust_provider_attachment.json +var awsVerifiedaccessInstanceTrustProviderAttachment []byte + +//go:embed mapping/aws/resource/verifiedpermissions/aws_verifiedpermissions_schema.json +var awsVerifiedpermissionsSchema []byte + +//go:embed mapping/aws/resource/cognito-idp/aws_cognito_managed_user_pool_client.json +var awsCognitoManagedUserPoolClient []byte + +//go:embed mapping/aws/resource/ec2/aws_ebs_fast_snapshot_restore.json +var awsEbsFastSnapshotRestore []byte + +//go:embed mapping/aws/resource/ecr/aws_ecr_account_setting.json +var awsEcrAccountSetting []byte + +//go:embed mapping/aws/resource/ecs/aws_ecs_account_setting_default.json +var awsEcsAccountSettingDefault []byte + +//go:embed mapping/aws/resource/ecs/aws_ecs_cluster_capacity_providers.json +var awsEcsClusterCapacityProviders []byte + +//go:embed mapping/aws/resource/ec2/aws_eip_domain_name.json +var awsEipDomainName []byte + +//go:embed mapping/aws/resource/elasticache/aws_elasticache_reserved_cache_node.json +var awsElasticacheReservedCacheNode []byte + +//go:embed mapping/aws/resource/elasticache/aws_elasticache_serverless_cache.json +var awsElasticacheServerlessCache []byte + +//go:embed mapping/aws/resource/elasticache/aws_elasticache_user_group_association.json +var awsElasticacheUserGroupAssociation []byte + +//go:embed mapping/aws/resource/iam/aws_iam_group_policy_attachments_exclusive.json +var awsIamGroupPolicyAttachmentExclusive []byte + +//go:embed mapping/aws/resource/iam/aws_iam_organizations_features.json +var awsIamOrganizationsFeatures []byte + +//go:embed mapping/aws/resource/iam/aws_iam_role_policy_attachments_exclusive.json +var awsIamRolePolicyAttachmentsExclusive []byte + +//go:embed mapping/aws/resource/iam/aws_iam_user_policy_attachments_exclusive.json +var awsIamUserPolicyAttachmentsExclusive []byte + +//go:embed mapping/aws/resource/grafana/aws_grafana_workspace_saml_configuration.json +var awsGrafanaWorkspaceSamlConfiguration []byte + +//go:embed mapping/aws/resource/grafana/aws_grafana_role_association.json +var awsGrafanaRoleAssociation []byte + +//go:embed mapping/aws/resource/es/aws_elasticsearch_domain_saml_options.json +var awsElasticsearchDomainSamlOptions []byte + +//go:embed mapping/aws/resource/es/aws_opensearch_vpc_endpoint.json +var awsElasticsearchVpcEndpoint []byte + +//go:embed mapping/aws/resource/cloudwatch/aws_cloudwatch_contributor_insight_rule.json +var awsCloudwatchContributorInsightRule []byte + +//go:embed mapping/aws/resource/cloudwatch/aws_cloudwatch_contributor_managed_insight_rule.json +var awsCloudwatchContributorManagedInsightRule []byte + +//go:embed mapping/aws/resource/qbusiness/aws_qbusiness_application.json +var awsQbusinessApplication []byte + +//go:embed mapping/aws/resource/dataexchange/aws_dataexchange_event_action.json +var awsDataexchangeEventAction []byte + +//go:embed mapping/aws/resource/macie2/aws_macie2_organization_configuration.json +var awsMacie2OrganizationConfiguration []byte + +//go:embed mapping/aws/resource/neptune-graph/aws_neptunegraph_graph.json +var awsNeptunegraphGraph []byte + +//go:embed mapping/aws/resource/quicksight/aws_quicksight_role_membership.json +var awsQuicksightRoleMembership []byte + +//go:embed mapping/aws/resource/rds/aws_rds_shard_group.json +var awsRdsShardGroup []byte + +//go:embed mapping/aws/resource/xray/aws_xray_resource_policy.json +var awsXrayResourcePolicy []byte + +//go:embed mapping/aws/resource/ec2/aws_network_interface_permission.json +var awsNetworkInterfacePermission []byte + +//go:embed mapping/aws/resource/route53/aws_route53_records_exclusive.json +var awsRoute53RecordsExclusive []byte + +//go:embed mapping/aws/resource/athena/aws_athena_capacity_reservation.json +var awsAthenaCapacityReservation []byte + +//go:embed mapping/aws/resource/redshift/aws_redshift_integration.json +var awsRedshiftIntegration []byte + +//go:embed mapping/aws/resource/backup/aws_backup_restore_testing_plan.json +var awsBackupRestoreTestingPlan []byte + +//go:embed mapping/aws/resource/ec2/aws_ec2_default_credit_specification.json +var awsEc2DefaultCreditSpecification []byte + +//go:embed mapping/aws/resource/bedrock/aws_bedrockagent_prompt.json +var awsBedrockagentPrompt []byte + +//go:embed mapping/aws/resource/cloudfront-keyvaluestore/aws_cloudfrontkeyvaluestore_keys_exclusive.json +var awsCloudfrontkeyvaluestoreKeysExclusive []byte + +//go:embed mapping/aws/resource/dataexchange/aws_dataexchange_revision_assets.json +var awsDataexchangeRevisionAssets []byte + +//go:embed mapping/aws/resource/inspector2/aws_inspector2_filter.json +var awsInspector2Filter []byte + +//go:embed mapping/aws/resource/wafv2/aws_wafv2_api_key.json +var awsWafv2ApiKey []byte + +//go:embed mapping/aws/resource/notifications/aws_notifications_channel_association.json +var awsNotificationsChannelAssociation []byte + +//go:embed mapping/aws/resource/notifications/aws_notifications_event_rule.json +var awsNotificationsEventRule []byte + +//go:embed mapping/aws/resource/notifications/aws_notifications_notification_configuration.json +var awsNotificationsNotificationConfiguration []byte + +//go:embed mapping/aws/resource/notifications/aws_notifications_notification_hub.json +var awsNotificationsNotificationHub []byte + +//go:embed mapping/aws/resource/notifications-contacts/aws_notificationscontacts_email_contact.json +var awsNotificationscontactsEmailContact []byte + +//go:embed mapping/aws/resource/quicksight/aws_quicksight_account_settings.json +var awsQuicksightAccountSettings []byte + +//go:embed mapping/aws/resource/workspaces-web/aws_workspacesweb_browser_settings.json +var awsWorkspaceswebBrowserSettings []byte + +//go:embed mapping/aws/resource/workspaces-web/aws_workspacesweb_network_settings.json +var awsWorkspaceswebNetworkSettings []byte + +//go:embed mapping/aws/resource/workspaces-web/aws_workspacesweb_user_settings.json +var awsWorkspaceswebUserSettings []byte + +//go:embed mapping/aws/resource/dsql/aws_dsql_cluster.json +var awsDsqlCluster []byte + +//go:embed mapping/aws/resource/dsql/aws_dsql_cluster_peering.json +var awsDsqlClusterPeering []byte + +//go:embed mapping/aws/resource/lightsail/aws_lightsail_bucket_access_key_access_key.json +var awsLightsailBucketAccessKey []byte + +//go:embed mapping/aws/resource/aps/aws_prometheus_workspace_configuration.json +var awsPrometheusWorkspaceConfiguration []byte + +//go:embed mapping/aws/resource/s3control/aws_s3control_directory_bucket_access_point_scope.json +var awsS3controlDirectoryBucketAccessPointScope []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_route_server.json +var awsVpcRouteServer []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_route_server_propagation.json +var awsVpcRouteServerPropagation []byte + +//go:embed mapping/aws/resource/ec2/aws_vpc_route_server_vpc_association.json +var awsVpcRouteServerVpcAssociation []byte + +//go:embed mapping/aws/resource/workspaces-web/aws_workspacesweb_data_protection_settings.json +var awsWorkspaceswebDataProtectionSettings []byte + +//go:embed mapping/aws/resource/workspaces-web/aws_workspacesweb_ip_access_settings.json +var awsWorkspaceswebIpAccessSettings []byte + +//go:embed mapping/aws/resource/workspaces-web/aws_workspacesweb_user_access_logging_settings.json +var awsWorkspaceswebUserAccessLoggingSettings []byte diff --git a/src/files_datasource.go b/src/files_datasource.go index 477feecb..fc15840f 100644 --- a/src/files_datasource.go +++ b/src/files_datasource.go @@ -1542,3 +1542,165 @@ var dataServicecatalogappregistryAttributeGroup []byte //go:embed mapping/aws/data/servicecatalog/aws_servicecatalogappregistry_attribute_group_associations.json var dataServicecatalogappregistryAttributeGroupAssociations []byte + +//go:embed mapping/aws/data/route53/aws_route53_records.json +var dataAwsRoute53Records []byte + +//go:embed mapping/aws/data/cloudwatch/aws_cloudwatch_event_buses.json +var dataAwsCloudwatchEventBuses []byte + +//go:embed mapping/aws/data/ecs/aws_ecs_clusters.json +var dataAwsEcsClusters []byte + +//go:embed mapping/aws/data/ec2/aws_vpc_ipam.json +var dataAwsVpcIpam []byte + +//go:embed mapping/aws/data/cloudwatch/aws_cloudwatch_contributor_managed_insight_rules.json +var dataAwsCloudwatchContributorManagedInsightRules []byte + +//go:embed mapping/aws/data/datazone/aws_datazone_domain.json +var dataAwsDatazoneDomain []byte + +//go:embed mapping/aws/data/eks/aws_eks_cluster_versions.json +var dataAwsEksClusterVersions []byte + +//go:embed mapping/aws/data/identitystore/aws_identitystore_group_memberships.json +var dataAwsIdentitystoreGroupMembership []byte + +//go:embed mapping/aws/data/identitystore/aws_identitystore_user.json +var dataAwsIdentitystoreGroupUsers []byte + +//go:embed mapping/aws/data/ec2/aws_vpc_endpoint_associations.json +var dataAwsVpcEndpointAssociations []byte + +//go:embed mapping/aws/data/fis/aws_fis_experiment_templates.json +var dataAwsFisExperimentTemplates []byte + +//go:embed mapping/aws/data/kms/aws_kms_public_key.json +var dataAwsKmsPublicKey []byte + +//go:embed mapping/aws/data/lambda/aws_lambda_function_url.json +var dataAwsLambdaFunctionUrl []byte + +//go:embed mapping/aws/data/lambda/aws_lambda_functions.json +var dataAwsLambdaFunctions []byte + +//go:embed mapping/aws/data/lambda/aws_lambda_layer_version.json +var dataAwsLambdaLayerVersion []byte + +//go:embed mapping/aws/data/ec2/aws_network_interface.json +var dataAwsNetworkInterface []byte + +//go:embed mapping/aws/data/waf/aws_waf_subscribed_rule_group.json +var dataAwsWafSubscribedRuleGroup []byte + +//go:embed mapping/aws/data/wafregional/aws_wafregional_subscribed_rule_group.json +var dataAwsWafRegionalSubscribedRuleGroup []byte + +//go:embed mapping/aws/data/elasticloadbalancing/aws_elb.json +var dataAwsElb []byte + +//go:embed mapping/aws/data/account/aws_account_primary_contact.json +var dataAwsAccountPrimaryContact []byte + +//go:embed mapping/aws/data/dynamodb/aws_dynamodb_tables.json +var dataAwsDynamodbTables []byte + +//go:embed mapping/aws/data/backend/s3.json +var dataBackend []byte + +//go:embed mapping/aws/data/ecr/aws_ecr_images.json +var dataAwsEcrImages []byte + +//go:embed mapping/aws/data/s3/aws_s3_access_point.json +var dataAwsS3AccessPoint []byte + +//go:embed mapping/aws/data/billing/aws_billing_views.json +var dataAwsBillingViews []byte + +//go:embed mapping/aws/data/mediaconvert/aws_media_convert_queue.json +var dataAwsMediaConvertQueue []byte + +//go:embed mapping/aws/data/memorydb/aws_memorydb_acl.json +var dataAwsMemorydbAcl []byte + +//go:embed mapping/aws/data/memorydb/aws_memorydb_cluster.json +var dataAwsMemorydbCluster []byte + +//go:embed mapping/aws/data/memorydb/aws_memorydb_parameter_group.json +var dataAwsMemorydbParameterGroup []byte + +//go:embed mapping/aws/data/memorydb/aws_memorydb_snapshot.json +var dataAwsMemorydbSnapshot []byte + +//go:embed mapping/aws/data/memorydb/aws_memorydb_subnet_group.json +var dataAwsMemorydbSubnetGroup []byte + +//go:embed mapping/aws/data/memorydb/aws_memorydb_user.json +var dataAwsMemorydbUser []byte + +//go:embed mapping/aws/data/securityhub/aws_securityhub_standards_control_associations.json +var dataAwsSecurityhubStandardsControlAssociations []byte + +//go:embed mapping/aws/data/workspaces/aws_workspaces_workspace.json +var dataAwsWorkspacesWorkspace []byte + +//go:embed mapping/aws/data/appconfig/aws_appconfig_application.json +var dataAwsAppconfigApplication []byte + +//go:embed mapping/aws/data/odb/aws_odb_cloud_autonomous_vm_cluster.json +var dataAwsOdbCloudAutonomousVmCluster []byte + +//go:embed mapping/aws/data/odb/aws_odb_cloud_autonomous_vm_clusters.json +var dataAwsOdbCloudAutonomousVmClusters []byte + +//go:embed mapping/aws/data/odb/aws_odb_cloud_exadata_infrastructure.json +var dataAwsOdbCloudExadataInfrastructure []byte + +//go:embed mapping/aws/data/odb/aws_odb_cloud_exadata_infrastructures.json +var dataAwsOdbCloudExadataInfrastructures []byte + +//go:embed mapping/aws/data/odb/aws_odb_cloud_vm_cluster.json +var dataAwsOdbCloudVmCluster []byte + +//go:embed mapping/aws/data/odb/aws_odb_cloud_vm_clusters.json +var dataAwsOdbCloudVmClusters []byte + +//go:embed mapping/aws/data/odb/aws_odb_db_node.json +var dataAwsOdbDbNode []byte + +//go:embed mapping/aws/data/odb/aws_odb_db_nodes.json +var dataAwsOdbDbNodes []byte + +//go:embed mapping/aws/data/odb/aws_odb_db_server.json +var dataAwsOdbServer []byte + +//go:embed mapping/aws/data/odb/aws_odb_db_servers.json +var dataAwsOdbServers []byte + +//go:embed mapping/aws/data/odb/aws_odb_db_system_shapes.json +var dataAwsOdbDbSystemShapes []byte + +//go:embed mapping/aws/data/odb/aws_odb_gi_versions.json +var dataAwsOdbGiVersions []byte + +//go:embed mapping/aws/data/odb/aws_odb_network.json +var dataAwsOdbNetwork []byte + +//go:embed mapping/aws/data/odb/aws_odb_network_peering_connection.json +var dataAwsOdbNetworkPeeringConnection []byte + +//go:embed mapping/aws/data/odb/aws_odb_network_peering_connections.json +var dataAwsOdbNetworkPeeringConnections []byte + +//go:embed mapping/aws/data/odb/aws_odb_networks.json +var dataAwsOdbNetworks []byte + +//go:embed mapping/aws/data/ecr-public/aws_ecrpublic_images.json +var dataAwsEcrPublicImages []byte + +//go:embed mapping/aws/data/rds/aws_rds_global_cluster.json +var dataAwsRdsGlobalCluster []byte + +//go:embed mapping/aws/data/ec2/aws_vpn_connection.json +var dataAwsVpnConnection []byte diff --git a/src/files_gcp.go b/src/files_gcp.go index 9f50aac5..236176c1 100644 --- a/src/files_gcp.go +++ b/src/files_gcp.go @@ -298,9 +298,6 @@ var googleFirebaseProject []byte //go:embed mapping/google/resource/firebasestorage/google_firebase_storage_bucket.json var googleFirebaseStorageBucket []byte -//go:embed mapping/google/resource/firebase/google_firebase_android_app.json -var googleFirebaseWebApp []byte - //go:embed mapping/google/resource/firebaserules/google_firebaserules_release.json var googleFirebaserulesRelease []byte @@ -332,16 +329,16 @@ var googleAPIGatewayGateway []byte var googleAPIGatewayGatewayIam []byte //go:embed mapping/google/resource/spanner/google_spanner_database.json -var GoogleSpannerDatabase []byte +var googleSpannerDatabase []byte //go:embed mapping/google/resource/spanner/google_spanner_database_iam.json -var GoogleSpannerDatabaseIam []byte +var googleSpannerDatabaseIam []byte //go:embed mapping/google/resource/spanner/google_spanner_instance.json -var GoogleSpannerInstance []byte +var googleSpannerInstance []byte //go:embed mapping/google/resource/spanner/google_spanner_instance_iam.json -var GoogleSpannerInstanceIam []byte +var googleSpannerInstanceIam []byte //go:embed mapping/google/resource/run/google_cloud_run_v2_service.json var googleCloudRunV2Service []byte @@ -441,3 +438,1761 @@ var googleBigqueryRoutine []byte //go:embed mapping/google/resource/bigquery/google_bigquery_table_iam.json var googleBigqueryTableIam []byte + +//go:embed mapping/google/resource/composer/google_composer_environment.json +var googleComposerEnvironment []byte + +//go:embed mapping/google/resource/iam/google_iam_workload_identity_pool.json +var googleIamWorkloadIdentityPool []byte + +//go:embed mapping/google/resource/iam/google_iam_workload_identity_pool_provider.json +var googleIamWorkloadIdentityPoolProvider []byte + +//go:embed mapping/google/resource/iam/google_project_iam_audit_config.json +var googleProjectIamAuditConfig []byte + +//go:embed mapping/google/resource/bigquery/google_bigquery_table.json +var googleBigQueryTable []byte + +//go:embed mapping/google/resource/backend/gcs.json +var gcsBackend []byte + +//go:embed mapping/google/resource/privateca/google_privateca_ca_pool.json +var googlePrivateCaPool []byte + +//go:embed mapping/google/resource/privateca/google_privateca_ca_pool_iam_binding.json +var googlePrivateCaPoolIamBinding []byte + +//go:embed mapping/google/resource/privateca/google_privateca_ca_pool_iam_member.json +var googlePrivateCaPoolIamMember []byte + +//go:embed mapping/google/resource/privateca/google_privateca_ca_pool_iam_policy.json +var googlePrivateCaPoolIamPolicy []byte + +//go:embed mapping/google/resource/privateca/google_privateca_certificate_template.json +var googlePrivatecaCertificateTemplate []byte + +//go:embed mapping/google/resource/privateca/google_privateca_certificate_template_iam_binding.json +var googlePrivatecaCertificateTemplateIamBinding []byte + +//go:embed mapping/google/resource/privateca/google_privateca_certificate_template_iam_member.json +var googlePrivatecaCertificateTemplateIamMember []byte + +//go:embed mapping/google/resource/privateca/google_privateca_certificate_template_iam_policy.json +var googlePrivatecaCertificateTemplateIamPolicy []byte + +//go:embed mapping/google/resource/privilegedaccessmanager/google_privileged_access_manager_entitlement.json +var googlePrivilegedAccessManagerEntitlement []byte + +//go:embed mapping/google/resource/run/google_cloud_run_domain_mapping.json +var googleCloudRunDomainMapping []byte + +//go:embed mapping/google/resource/run/google_cloud_run_service.json +var googleCloudRunService []byte + +//go:embed mapping/google/resource/run/google_cloud_run_service_iam_binding.json +var googleCloudRunServiceIamBinding []byte + +//go:embed mapping/google/resource/run/google_cloud_run_service_iam_member.json +var googleCloudRunServiceIamMember []byte + +//go:embed mapping/google/resource/run/google_cloud_run_service_iam_policy.json +var googleCloudRunServiceIamPolicy []byte + +//go:embed mapping/google/resource/run/google_cloud_run_v2_worker_pool.json +var googleCloudRunV2WorkerPool []byte + +//go:embed mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_binding.json +var googleCloudRunV2WorkerPoolIamBinding []byte + +//go:embed mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_member.json +var googleCloudRunV2WorkerPoolIamMember []byte + +//go:embed mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_policy.json +var googleCloudRunV2WorkerPoolIamPolicy []byte + +//go:embed mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy.json +var googleBigqueryDatapolicyDataPolicy []byte + +//go:embed mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_binding.json +var googleBigqueryDatapolicyDataPolicyIamBinding []byte + +//go:embed mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_member.json +var googleBigqueryDatapolicyDataPolicyIamMember []byte + +//go:embed mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_policy.json +var googleBigqueryDatapolicyDataPolicyIamPolicy []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_entry.json +var googleDataCatalogEntry []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_entry_group.json +var googleDataCatalogEntryGroup []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_member.json +var googleDataCatalogEntryGroupIamMember []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_policy.json +var googleDataCatalogEntryGroupIamPolicy []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_policy_tag.json +var googleDataCatalogPolicyTag []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_member.json +var googleDataCatalogPolicyTagIamMember []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_policy.json +var googleDataCatalogPolicyTagIamPolicy []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_tag.json +var googleDataCatalogTag []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_tag_template.json +var googleDataCatalogTagTemplate []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_policy.json +var googleDataCatalogTagTemplateIamPolicy []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_taxonomy.json +var googleDataCatalogTaxonomy []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_policy.json +var googleDataCatalogTaxonomyIamBinding []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_member.json +var googleDataCatalogTaxonomyIamMember []byte + +//go:embed mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_policy.json +var googleDataCatalogTaxonomyIamPolicy []byte + +//go:embed mapping/google/resource/cloudfunctions/google_cloudfunctions2_function.json +var googleCloudfunction2Function []byte + +//go:embed mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_binding.json +var googleCloudfunction2FunctionIamBinding []byte + +//go:embed mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_member.json +var googleCloudfunction2FunctionIamMember []byte + +//go:embed mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_policy.json +var googleCloudfunction2FunctionIamPolicy []byte + +//go:embed mapping/google/resource/cloudfunctions/google_cloudfunctions_function_iam_binding.json +var googleCloudfunctionsFunctionIamBinding []byte + +//go:embed mapping/google/resource/cloudkms/google_kms_crypto_key_version.json +var googleKmsCryptoKeyVersions []byte + +//go:embed mapping/google/resource/cloudkms/google_kms_key_handle.json +var googleKmsKeyHandle []byte + +//go:embed mapping/google/resource/cloudkms/google_kms_key_ring_iam_binding.json +var googleKmsKeyRingIamBinding []byte + +//go:embed mapping/google/resource/cloudkms/google_kms_key_ring_iam_member.json +var googleKmsKeyRingIamMember []byte + +//go:embed mapping/google/resource/cloudkms/google_kms_key_ring_iam_policy.json +var googleKmsKeyRingIamPolicy []byte + +//go:embed mapping/google/resource/cloudkms/google_kms_key_ring_import_job.json +var googleKmsKeyRingImportJob []byte + +//go:embed mapping/google/resource/cloudkms/google_kms_secret_ciphertext.json +var googleKmsSecretCiphertext []byte + +//go:embed mapping/google/resource/compute/google_project_usage_export_bucket.json +var googleProjectUsageExportBucket []byte + +//go:embed mapping/google/resource/iam/google_default_service_accounts.json +var googleDefaultServiceAccounts []byte + +//go:embed mapping/google/resource/iam/google_project_default_service_accounts.json +var googleProjectDefaultServiceAccounts []byte + +//go:embed mapping/google/resource/secretmanager/google_secret_manager_regional_secret.json +var googleSecretManagerRegionalSecret []byte + +//go:embed mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_binding.json +var googleSecretManagerRegionalSecretsIamBinding []byte + +//go:embed mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_member.json +var googleSecretManagerRegionalSecretIamMember []byte + +//go:embed mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_policy.json +var googleSecretManagerRegionalSecretIamPolicy []byte + +//go:embed mapping/google/resource/secretmanager/google_secret_manager_regional_secret_version.json +var googleSecretManagerRegionalSecretVersion []byte + +//go:embed mapping/google/resource/spanner/google_spanner_backup_schedule.json +var googleSpannerBackupSchedule []byte + +//go:embed mapping/google/resource/spanner/google_spanner_instance_config.json +var googleSpannerInstanceConfig []byte + +//go:embed mapping/google/resource/spanner/google_spanner_instance_partition.json +var googleSpannerInstancePartition []byte + +//go:embed mapping/google/resource/biglake/google_biglake_catalog.json +var googleBiglakeCatalog []byte + +//go:embed mapping/google/resource/biglake/google_biglake_database.json +var googleBiglakeDatabase []byte + +//go:embed mapping/google/resource/biglake/google_biglake_table.json +var googleBiglakeTable []byte + +//go:embed mapping/google/resource/analyticshub/google_bigquery_analytics_hub_listing_subscription.json +var googleBigqueryAnalyticsHubListingSubscription []byte + +//go:embed mapping/google/resource/bigquery/google_bigquery_dataset_access.json +var googleBigqueryDatasetAccess []byte + +//go:embed mapping/google/resource/bigquery/google_bigquery_row_access_policy.json +var googleBigqueryRowAccessPolicy []byte + +//go:embed mapping/google/resource/bigtable/google_bigtable_authorized_view.json +var googleBigtableAuthorizedView []byte + +//go:embed mapping/google/resource/bigtable/google_bigtable_logical_view.json +var googleBigtableLogicalView []byte + +//go:embed mapping/google/resource/bigtable/google_bigtable_materialized_view.json +var googleBigtableMaterializedView []byte + +//go:embed mapping/google/resource/cloudbuild/google_cloudbuildv2_connection.json +var googleCloudbuildv2Connection []byte + +//go:embed mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_binding.json +var googleCloudbuildv2ConnectionIamBinding []byte + +//go:embed mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_member.json +var googleCloudbuildv2ConnectionIamMember []byte + +//go:embed mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_policy.json +var googleCloudbuildv2ConnectionIamPolicy []byte + +//go:embed mapping/google/resource/cloudbuild/google_cloudbuildv2_repository.json +var googleCloudbuildv2Repository []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_asset.json +var googleDataplexAsset []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_asset_iam_binding.json +var googleDataplexAssetIamBinding []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_asset_iam_member.json +var googleDataplexAssetIamMember []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_asset_iam_policy.json +var googleDataplexAssetIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_datascan.json +var googleDataplexDatascan []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_datascan_iam_binding.json +var googleDataplexDatascanIamBinding []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_datascan_iam_member.json +var googleDataplexDatascanIamMember []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_datascan_iam_policy.json +var googleDataplexDatascanIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_glossary.json +var googleDataplexGlossary []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_glossary_category.json +var googleDataplexGlossaryCategory []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_glossary_term.json +var googleDataplexGlossaryTerm []byte + +//go:embed mapping/google/resource/apigee/google_apigee_environment_iam_binding.json +var googleApigeeEnvironmentIamBinding []byte + +//go:embed mapping/google/resource/apigee/google_apigee_environment_iam_member.json +var googleApigeeEnvironmentIamMember []byte + +//go:embed mapping/google/resource/apigee/google_apigee_environment_iam_policy.json +var googleApigeeEnvironmentIamPolicy []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_binding.json +var googleBeyondcorpApplicationIamBinding []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_member.json +var googleBeyondcorpApplicationIamMember []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_policy.json +var googleBeyondcorpApplicationIamPolicy []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_binding.json +var googleBeyondcorpSecurityGatewayApplicationIamBinding []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_member.json +var googleBeyondcorpSecurityGatewayApplicationIamMember []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_policy.json +var googleBeyondcorpSecurityGatewayApplicationIamPolicy []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_binding.json +var googleBeyondcorpSecurityGatewayIamBinding []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_member.json +var googleBeyondcorpSecurityGatewayIamMember []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_policy.json +var googleBeyondcorpSecurityGatewayIamPolicy []byte + +//go:embed mapping/google/resource/billing/google_billing_account_iam_binding.json +var googleBillingAccountIamBinding []byte + +//go:embed mapping/google/resource/billing/google_billing_account_iam_member.json +var googleBillingAccountIamMember []byte + +//go:embed mapping/google/resource/billing/google_billing_account_iam_policy.json +var googleBillingAccountIamPolicy []byte + +//go:embed mapping/google/resource/pubsub/google_pubsub_schema_iam_binding.json +var googlePubsubSchemaIamBinding []byte + +//go:embed mapping/google/resource/pubsub/google_pubsub_schema_iam_member.json +var googlePubsubSchemaIamMember []byte + +//go:embed mapping/google/resource/pubsub/google_pubsub_schema_iam_policy.json +var googlePubsubSchemaIamPolicy []byte + +//go:embed mapping/google/resource/pubsub/google_pubsub_subscription_iam_binding.json +var googlePubsubSubscriptionIamBinding []byte + +//go:embed mapping/google/resource/pubsub/google_pubsub_subscription_iam_member.json +var googlePubsubSubscriptionIamMember []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_binding.json +var googleSecureSourceManagerInstanceIamBinding []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_member.json +var googleSecureSourceManagerInstanceIamMember []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_policy.json +var googleSecureSourceManagerInstanceIamPolicy []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_binding.json +var googleSecureSourceManagerRepositoryIamBinding []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_member.json +var googleSecureSourceManagerRepositoryIamMember []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_policy.json +var googleSecureSourceManagerRepositoryIamPolicy []byte + +//go:embed mapping/google/resource/source/google_sourcerepo_repository_iam_binding.json +var googleSourcerepoRepositoryIamBinding []byte + +//go:embed mapping/google/resource/source/google_sourcerepo_repository_iam_member.json +var googleSourcerepoRepositoryIamMember []byte + +//go:embed mapping/google/resource/source/google_sourcerepo_repository_iam_policy.json +var googleSourcerepoRepositoryIamPolicy []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_key_iam_binding.json +var googleTagsTagKeyIamBinding []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_key_iam_member.json +var googleTagsTagKeyIamMember []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_key_iam_policy.json +var googleTagsTagKeyIamPolicy []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_value_iam_binding.json +var googleTagsTagValueIamBinding []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_value_iam_member.json +var googleTagsTagValueIamMember []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_value_iam_policy.json +var googleTagsTagValueIamPolicy []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_binding.json +var googleVertexAIFeatureGroupIamBinding []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_member.json +var googleVertexAIFeatureGroupIamMember []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_policy.json +var googleVertexAIFeatureGroupIamPolicy []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_binding.json +var googleVertexAIFeatureOnlineStoreFeatureviewIamBinding []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_member.json +var googleVertexAIFeatureOnlineStoreFeatureviewIamMember []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_policy.json +var googleVertexAIFeatureOnlineStoreFeatureviewIamPolicy []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_binding.json +var googleVertexAIFeatureOnlineStoreIamBinding []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_member.json +var googleVertexAIFeatureOnlineStoreIamMember []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_policy.json +var googleVertexAIFeatureOnlineStoreIamPolicy []byte + +//go:embed mapping/google/resource/notebooks/google_workbench_instance_iam_binding.json +var googleWorkbenchInstanceIamBinding []byte + +//go:embed mapping/google/resource/notebooks/google_workbench_instance_iam_member.json +var googleWorkbenchInstanceIamMember []byte + +//go:embed mapping/google/resource/notebooks/google_workbench_instance_iam_policy.json +var googleWorkbenchInstanceIamPolicy []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation_config_iam_binding.json +var googleWorkstationsWorkstationConfigIamBinding []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation_config_iam_member.json +var googleWorkstationsWorkstationConfigIamMember []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation_config_iam_policy.json +var googleWorkstationsWorkstationConfigIamPolicy []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation_iam_binding.json +var googleWorkstationsWorkstationIamBinding []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation_iam_member.json +var googleWorkstationsWorkstationIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_instance_template_iam_binding.json +var googleComputeInstanceTemplateIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_instance_template_iam_member.json +var googleComputeInstanceTemplateIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_instance_template_iam_policy.json +var googleComputeInstanceTemplateIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_instant_snapshot_iam_binding.json +var googleComputeInstanceSnapshotIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_instant_snapshot_iam_member.json +var googleComputeInstanceSnapshotIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_instant_snapshot_iam_policy.json +var googleComputeInstanceSnapshotIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_machine_image_iam_binding.json +var googleComputeMachineImageIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_machine_image_iam_member.json +var googleComputeMachineImageIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_machine_image_iam_policy.json +var googleComputeMachineImageIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_region_backend_service_iam_binding.json +var googleComputeRegionBackendServiceIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_region_backend_service_iam_member.json +var googleComputeRegionBackendServiceIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_region_backend_service_iam_policy.json +var googleComputeRegionBackendServiceIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_region_disk_iam_binding.json +var googleComputeRegionDiskIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_region_disk_iam_member.json +var googleComputeRegionDiskIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_region_disk_iam_policy.json +var googleComputeRegionDiskIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_snapshot_iam_binding.json +var googleComputeSnapshotIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_snapshot_iam_member.json +var googleComputeSnapshotIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_snapshot_iam_policy.json +var googleComputeSnapshotIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_storage_pool_iam_binding.json +var googleComputeStoragePoolIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_storage_pool_iam_member.json +var googleComputeStoragePoolIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_storage_pool_iam_policy.json +var googleComputeStoragePoolIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_subnetwork_iam_binding.json +var googleComputeSubnetworkIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_subnetwork_iam_member.json +var googleComputeSubnetworkIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_subnetwork_iam_policy.json +var googleComputeSubnetworkIamPolicy []byte + +//go:embed mapping/google/resource/containeranalysis/google_container_analysis_note_iam_binding.json +var googleContainerAnalysisNoteIamBinding []byte + +//go:embed mapping/google/resource/containeranalysis/google_container_analysis_note_iam_member.json +var googleContainerAnalysisNoteIamMember []byte + +//go:embed mapping/google/resource/containeranalysis/google_container_analysis_note_iam_policy.json +var googleContainerAnalysisNoteIamPolicy []byte + +//go:embed mapping/google/resource/dataform/google_dataform_repository_iam_binding.json +var googleDataformRepositoryIamBinding []byte + +//go:embed mapping/google/resource/dataform/google_dataform_repository_iam_member.json +var googleDataformRepositoryIamMember []byte + +//go:embed mapping/google/resource/dataform/google_dataform_repository_iam_policy.json +var googleDataformRepositoryIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_binding.json +var googleDataplexAspectTypeIamBinding []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_member.json +var googleDataplexAspectTypeIamMember []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_policy.json +var googleDataplexAspectTypeIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry_group_iam_binding.json +var googleDataplexEntryGroupIamBinding []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry_group_iam_member.json +var googleDataplexEntryGroupIamMember []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry_group_iam_policy.json +var googleDataplexEntryGroupIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry_group_iam_binding.json +var googleDataplexEntryTypeIamBinding []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry_group_iam_member.json +var googleDataplexEntryTypeIamMember []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry_group_iam_policy.json +var googleDataplexEntryTypeIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_glossary_iam_binding.json +var googleDataplexGlossaryIamBinding []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_glossary_iam_member.json +var googleDataplexGlossaryIamMember []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_glossary_iam_policy.json +var googleDataplexGlossaryIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_lake_iam_binding.json +var googleDataplexLakeIamBinding []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_lake_iam_member.json +var googleDataplexLakeIamMember []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_lake_iam_policy.json +var googleDataplexLakeIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_task_iam_member.json +var googleDataplexTaskIamMember []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_task_iam_policy.json +var googleDataplexTaskIamPolicy []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_zone_iam_binding.json +var googleDataplexZoneIamBinding []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_zone_iam_member.json +var googleDataplexZoneIamMember []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_binding.json +var googleDataprocAutoscalingPolicyIamBinding []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_member.json +var googleDataprocAutoscalingPolicyIamMember []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_binding.json +var googleDataprocAutoscalingPolicyIamPolicy []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_cluster_iam_binding.json +var googleDataprocClusterIamBinding []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_cluster_iam_member.json +var googleDataprocClusterIamMember []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_cluster_iam_policy.json +var googleDataprocClusterIamPolicy []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_job_iam_binding.json +var googleDataprocJobIamBinding []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_job_iam_member.json +var googleDataprocJobIamMember []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_job_iam_policy.json +var googleDataprocJobIamPolicy []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_database_iam_binding.json +var googleDataprocMetastoreDatabaseIamBinding []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_database_iam_member.json +var googleDataprocMetastoreDatabaseIamMember []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_database_iam_policy.json +var googleDataprocMetastoreDatabaseIamPolicy []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_binding.json +var googleDataprocMetastoreFederationIamBinding []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_member.json +var googleDataprocMetastoreFederationIamMember []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_policy.json +var googleDataprocMetastoreFederationIamPolicy []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_binding.json +var googleDataprocMetastoreServiceIamBinding []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_service_iam_member.json +var googleDataprocMetastoreServiceIamMember []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_policy.json +var googleDataprocMetastoreServiceIamPolicy []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_binding.json +var googleDataprocMetastoreTableIamBinding []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_table_iam_member.json +var googleDataprocMetastoreTableIamMember []byte + +//go:embed mapping/google/resource/metastore/google_dataproc_metastore_table_iam_policy.json +var googleDataprocMetastoreTableIamPolicy []byte + +//go:embed mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_binding.json +var googleBinaryAuthorizationAttestorIamBinding []byte + +//go:embed mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_member.json +var googleBinaryAuthorizationAttestorIamMember []byte + +//go:embed mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_policy.json +var googleBinaryAuthorizationAttestorIamPolicy []byte + +//go:embed mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_binding.json +var googleCloudTasksQueueIamBinding []byte + +//go:embed mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_member.json +var googleCloudTasksQueueIamMember []byte + +//go:embed mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_policy.json +var googleCloudTasksQueueIamPolicy []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_binding.json +var googleClouddeployCustomTargetTypeIamBinding []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_member.json +var googleClouddeployCustomTargetTypeIamMember []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_policy.json +var googleClouddeployCustomTargetTypeIamPolicy []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_binding.json +var googleClouddeployDeliveryPipelineIamBinding []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_member.json +var googleClouddeployDeliveryPipelineIamMember []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_policy.json +var googleClouddeployDeliveryPipelineIamPolicy []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_binding.json +var googleClouddeployTargetIamBinding []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_member.json +var googleClouddeployTargetIamMember []byte + +//go:embed mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_policy.json +var googleClouddeployTargetIamPolicy []byte + +//go:embed mapping/google/resource/aiplatform/google_colab_runtime_template_iam_member.json +var googleColabRuntimeTemplateIamBinding []byte + +//go:embed mapping/google/resource/aiplatform/google_colab_runtime_template_iam_member.json +var googleColabRuntimeTemplateIamMember []byte + +//go:embed mapping/google/resource/aiplatform/google_colab_runtime_template_iam_policy.json +var googleColabRuntimeTemplateIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_backend_bucket_iam_binding.json +var googleComputeBackendBucketIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_backend_bucket_iam_member.json +var googleComputeBackendBucketIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_backend_bucket_iam_policy.json +var googleComputeBackendBucketIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_backend_service_iam_binding.json +var googleComputeBackendServiceIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_backend_service_iam_member.json +var googleComputeBackendServiceIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_backend_service_iam_policy.json +var googleComputeBackendServiceIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_disk_iam_binding.json +var googleComputeDiskIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_disk_iam_member.json +var googleComputeDiskIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_image_iam_binding.json +var googleComputeImageIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_image_iam_member.json +var googleComputeImageIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_image_iam_policy.json +var googleComputeImageIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_instance_iam_binding.json +var googleComputeInstanceIamBinding []byte + +//go:embed mapping/google/resource/compute/google_compute_instance_iam_member.json +var googleComputeInstanceIamMember []byte + +//go:embed mapping/google/resource/compute/google_compute_instance_iam_policy.json +var googleComputeInstanceIamPolicy []byte + +//go:embed mapping/google/resource/datafusion/google_data_fusion_instance_iam_binding.json +var googleDataFusionInstanceIamBinding []byte + +//go:embed mapping/google/resource/datafusion/google_data_fusion_instance_iam_member.json +var googleDataFusionInstanceIamMember []byte + +//go:embed mapping/google/resource/datafusion/google_data_fusion_instance_iam_policy.json +var googleDataFusionInstanceIamPolicy []byte + +//go:embed mapping/google/resource/dns/google_dns_managed_zone_iam_binding.json +var googleDNSManagedZoneIamBinding []byte + +//go:embed mapping/google/resource/dns/google_dns_managed_zone_iam_member.json +var googleDNSManagedZoneIamMember []byte + +//go:embed mapping/google/resource/dns/google_dns_managed_zone_iam_policy.json +var googleDNSManagedZoneIamPolicy []byte + +//go:embed mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_binding.json +var googleEndpointsServiceConsumersIamBinding []byte + +//go:embed mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_member.json +var googleEndpointsServiceConsumersIamMember []byte + +//go:embed mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_policy.json +var googleEndpointsServiceConsumersIamPolicy []byte + +//go:embed mapping/google/resource/servicemanagement/google_endpoints_service_iam_binding.json +var googleEndpointsServiceIamBinding []byte + +//go:embed mapping/google/resource/servicemanagement/google_endpoints_service_iam_member.json +var googleEndpointsServiceIamMember []byte + +//go:embed mapping/google/resource/servicemanagement/google_endpoints_service_iam_policy.json +var googleEndpointsServiceIamPolicy []byte + +//go:embed mapping/google/resource/resourcemanager/google_folder_iam_binding.json +var googleFolderIamBinding []byte + +//go:embed mapping/google/resource/resourcemanager/google_folder_iam_member.json +var googleFolderIamMember []byte + +//go:embed mapping/google/resource/resourcemanager/google_folder_iam_policy.json +var googleFolderIamPolicy []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_binding.json +var googleGeminiRepositoryGroupIamBinding []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_member.json +var googleGeminiRepositoryGroupIamMember []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_policy.json +var googleGeminiRepositoryGroupIamPolicy []byte + +//go:embed mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_binding.json +var googleGkeBackupBackupPlanIamBinding []byte + +//go:embed mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_member.json +var googleGkeBackupBackupPlanIamMember []byte + +//go:embed mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_policy.json +var googleGkeBackupBackupPlanIamPolicy []byte + +//go:embed mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_binding.json +var googleGkeBackupRestorePlanIamBinding []byte + +//go:embed mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_member.json +var googleGkeBackupRestorePlanIamMember []byte + +//go:embed mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_policy.json +var googleGkeBackupRestorePlanIamPolicy []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_feature_iam_binding.json +var googleGkeHubFeatureIamBinding []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_feature_iam_member.json +var googleGkeHubFeatureIamMember []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_feature_iam_policy.json +var googleGkeHubFeatureIamPolicy []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_membership_iam_binding.json +var googleGkeHubMembershipIamBinding []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_membership_iam_member.json +var googleGkeHubMembershipIamMember []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_membership_iam_policy.json +var googleGkeHubMembershipIamPolicy []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_scope_iam_binding.json +var googleGkeHubScopeIamBinding []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_scope_iam_member.json +var googleGkeHubScopeIamMember []byte + +//go:embed mapping/google/resource/gkehub/google_gke_hub_scope_iam_policy.json +var googleGkeHubScopeIamPolicy []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_consent_store_iam_binding.json +var googleHealthcareConsentStoreIamBinding []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_consent_store_iam_member.json +var googleHealthcareConsentStoreIamMember []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_consent_store_iam_policy.json +var googleHealthcareConsentStoreIamPolicy []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_dataset_iam_binding.json +var googleHealthcareDatasetIamBinding []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_dataset_iam_member.json +var googleHealthcareDatasetIamMember []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_dataset_iam_policy.json +var googleHealthcareDatasetIamPolicy []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_binding.json +var googleHealthcareDicomStoreIamBinding []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_member.json +var googleHealthcareDicomStoreIamMember []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_policy.json +var googleHealthcareDicomStoreIamPolicy []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_binding.json +var googleHealthcareFhirStoreIamBinding []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_member.json +var googleHealthcareFhirStoreIamMember []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_policy.json +var googleHealthcareFhirStoreIamPolicy []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_binding.json +var googleHealthcareHl7V2StoreIamBinding []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_member.json +var googleHealthcareHl7V2StoreIamMember []byte + +//go:embed mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_policy.json +var googleHealthcareHl7V2StoreIamPolicy []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_binding.json +var googleIamWorkloadIdentityPoolIamBinding []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_member.json +var googleIamWorkloadIdentityPoolIamMember []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_policy.json +var googleIamWorkloadIdentityPoolIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_app_engine_service_iam_binding.json +var googleIapAppEngineServiceIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_app_engine_service_iam_member.json +var googleIapAppEngineServiceIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_app_engine_service_iam_policy.json +var googleIapAppEngineServiceIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_app_engine_version_iam_binding.json +var googleIapAppEngineVersionIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_app_engine_version_iam_member.json +var googleIapAppEngineVersionIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_app_engine_version_iam_policy.json +var googleIapAppEngineVersionIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_binding.json +var googleIapTunnelDestGroupIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_member.json +var googleIapTunnelDestGroupIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_policy.json +var googleIapTunnelDestGroupIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_iam_binding.json +var googleIapTunnelIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_iam_member.json +var googleIapTunnelIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_iam_policy.json +var googleIapTunnelIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_instance_iam_binding.json +var googleIapTunnelInstanceIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_instance_iam_member.json +var googleIapTunnelInstanceIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_instance_iam_policy.json +var googleIapTunnelInstanceIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_web_backend_service_iam_binding.json +var googleIapWebBackendServiceIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_web_backend_service_iam_member.json +var googleIapWebBackendServiceIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_web_backend_service_iam_policy.json +var googleIapWebBackendServiceIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_binding.json +var googleIapWebCloudRunServiceIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_member.json +var googleIapWebCloudRunServiceIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_policy.json +var googleIapWebCloudRunServiceIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_web_iam_binding.json +var googleIapWebIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_web_iam_member.json +var googleIapWebIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_web_iam_policy.json +var googleIapWebIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_web_region_backend_service_iam_binding.json +var googleIapWebRegionBackendServiceIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_web_region_backend_service_iam_member.json +var googleIapWebRegionBackendServiceIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_web_region_backend_service_iam_policy.json +var googleIapWebRegionBackendServiceIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_web_type_app_engine_iam_binding.json +var googleIapWebTypeAppEngineIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_web_type_app_engine_iam_member.json +var googleIapWebTypeAppEngineIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_web_type_app_engine_iam_policy.json +var googleIapWebTypeAppEngineIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_web_type_compute_iam_binding.json +var googleIapWebTypeComputeIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_web_type_compute_iam_member.json +var googleIapWebTypeComputeIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_web_type_compute_iam_policy.json +var googleIapWebTypeComputeIamPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_disk_iam_policy.json +var googleComputeDiskIamPolicy []byte + +//go:embed mapping/google/resource/kms/google_kms_ekm_connection_iam_binding.json +var googleKmsEkmConnectionIamBinding []byte + +//go:embed mapping/google/resource/kms/google_kms_ekm_connection_iam_member.json +var googleKmsEkmConnectionIamMember []byte + +//go:embed mapping/google/resource/kms/google_kms_ekm_connection_iam_policy.json +var googleKmsEkmConnectionIamPolicy []byte + +//go:embed mapping/google/resource/logging/google_logging_log_view_iam_binding.json +var googleLoggingLogViewIamBinding []byte + +//go:embed mapping/google/resource/logging/google_logging_log_view_iam_member.json +var googleLoggingLogViewIamMember []byte + +//go:embed mapping/google/resource/networksecurity/google_network_security_address_group_iam_binding.json +var googleNetworkSecurityAddressGroupIamBinding []byte + +//go:embed mapping/google/resource/networksecurity/google_network_security_address_group_iam_member.json +var googleNetworkSecurityAddressGroupIamMember []byte + +//go:embed mapping/google/resource/networksecurity/google_network_security_address_group_iam_policy.json +var googleNetworkSecurityAddressGroupIamPolicy []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_instance_iam_binding.json +var googleNotebooksInstanceIamBinding []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_instance_iam_member.json +var googleNotebooksInstanceIamMember []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_instance_iam_policy.json +var googleNotebooksInstanceIamPolicy []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_runtime_iam_binding.json +var googleNotebooksRuntimeIamBinding []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_runtime_iam_member.json +var googleNotebooksRuntimeIamMember []byte + +//go:embed mapping/google/resource/logging/google_logging_log_view_iam_policy.json +var googleLoggingLogViewIamPolicy []byte + +//go:embed mapping/google/resource/pubsub/google_pubsub_subscription_iam_policy.json +var googlePubsubSubscriptionIamPolicy []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation_iam_policy.json +var googleWorkstationsWorkstationIamPolicy []byte + +//go:embed mapping/google/resource/resourcemanager/google_organization_iam_binding.json +var googleOrganizationIamBinding []byte + +//go:embed mapping/google/resource/resourcemanager/google_organization_iam_member.json +var googleOrganizationIamMember []byte + +//go:embed mapping/google/resource/resourcemanager/google_organization_iam_policy.json +var googleOrganizationIamPolicy []byte + +//go:embed mapping/google/resource/resourcemanager/google_project_iam_policy.json +var googleProjectIamPolicy []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_runtime_iam_policy.json +var googleNotebooksRuntimeIamPolicy []byte + +//go:embed mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_binding.json +var googleRuntimeconfigConfigIamBinding []byte + +//go:embed mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_member.json +var googleRuntimeconfigConfigIamMember []byte + +//go:embed mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_policy.json +var googleRuntimeconfigConfigIamPolicy []byte + +//go:embed mapping/google/resource/securitycenter/google_scc_source_iam_binding.json +var googleSccSourceIamBinding []byte + +//go:embed mapping/google/resource/securitycenter/google_scc_source_iam_member.json +var googleSccSourceIamMember []byte + +//go:embed mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_binding.json +var googleSccV2OrganizationSourceIamBinding []byte + +//go:embed mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_member.json +var googleSccV2OrganizationSourceIamMember []byte + +//go:embed mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_policy.json +var googleSccV2OrganizationSourceIamPolicy []byte + +//go:embed mapping/google/resource/storage/google_storage_managed_folder_iam_binding.json +var googleStorageManagedFolderIamBinding []byte + +//go:embed mapping/google/resource/storage/google_storage_managed_folder_iam_member.json +var googleStorageManagedFolderIamMember []byte + +//go:embed mapping/google/resource/storage/google_storage_managed_folder_iam_policy.json +var googleStorageManagedFolderIamPolicy []byte + +//go:embed mapping/google/resource/securitycenter/google_scc_source_iam_policy.json +var googleSccSourceIamPolicy []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_location_tag_binding.json +var googleTagsLocationTagBinding []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_binding.json +var googleTagsTagBinding []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_key.json +var googleTagsTagKey []byte + +//go:embed mapping/google/resource/resourcemanager/google_tags_tag_value.json +var googleTagsTagValue []byte + +//go:embed mapping/google/resource/storage/google_storage_control_folder_intelligence_config.json +var googleStorageControlFolderIntelligenceConfig []byte + +//go:embed mapping/google/resource/storage/google_storage_control_organization_intelligence_config.json +var googleStorageControlOrganizationIntelligenceConfig []byte + +//go:embed mapping/google/resource/storage/google_storage_control_project_intelligence_config.json +var googleStorageControlProjectIntelligenceConfig []byte + +//go:embed mapping/google/resource/runtimeconfig/google_runtimeconfig_config.json +var googleRuntimeconfigConfig []byte + +//go:embed mapping/google/resource/runtimeconfig/google_runtimeconfig_variable.json +var googleRuntimeconfigVariable []byte + +//go:embed mapping/google/resource/redis/google_redis_cluster.json +var googleRedisCluster []byte + +//go:embed mapping/google/resource/redis/google_redis_cluster_user_created_connections.json +var googleRedisClusterUserCreatedConnections []byte + +//go:embed mapping/google/resource/resourcemanager/google_project.json +var gooleProject []byte + +//go:embed mapping/google/resource/accessapproval/google_project_access_approval_settings.json +var googleProjectAccessApprovalSettings []byte + +//go:embed mapping/google/resource/resourcemanager/google_project_iam_member_remove.json +var googleProjectIamMemberRemove []byte + +//go:embed mapping/google/resource/orgpolicy/google_project_organization_policy.json +var googleProjectOrganizationPolicy []byte + +//go:embed mapping/google/resource/compute/google_compute_forwarding_rule.json +var googleComputeForwardingRule []byte + +//go:embed mapping/google/resource/compute/google_compute_global_forwarding_rule.json +var googleComputeGlobalForwardingRule []byte + +//go:embed mapping/google/resource/compute/google_compute_health_check.json +var googleComputeHealthcheck []byte + +//go:embed mapping/google/resource/compute/google_compute_http_health_check.json +var googleComputeHttpHealthCheck []byte + +//go:embed mapping/google/resource/compute/google_compute_https_health_check.json +var googleComputeHttpsHealthCheck []byte + +//go:embed mapping/google/resource/compute/google_compute_region_backend_service.json +var googleComputeRgionBackendService []byte + +//go:embed mapping/google/resource/compute/google_compute_region_health_check.json +var googleComputeRegioHealthCheck []byte + +//go:embed mapping/google/resource/compute/google_compute_region_target_http_proxy.json +var googleComputeRegionTargetHttpProxy []byte + +//go:embed mapping/google/resource/compute/google_compute_region_target_https_proxy.json +var googleComputeRegionTargetHttpsProxy []byte + +//go:embed mapping/google/resource/compute/google_compute_region_target_tcp_proxy.json +var googleComputeRegionTargetTcpProxy []byte + +//go:embed mapping/google/resource/compute/google_compute_region_url_map.json +var googleComputeRegionUrlMap []byte + +//go:embed mapping/google/resource/compute/google_compute_target_http_proxy.json +var googleComputeTargetHttpProxy []byte + +//go:embed mapping/google/resource/compute/google_compute_target_https_proxy.json +var googleComputeTargetHttpsProxy []byte + +//go:embed mapping/google/resource/compute/google_compute_url_map.json +var googleComputeUrlMap []byte + +//go:embed mapping/google/resource/compute/google_compute_backend_service.json +var googleComputeBackendService []byte + +//go:embed mapping/google/resource/compute/google_compute_backend_bucket.json +var googleComputeBackendBucket []byte + +//go:embed mapping/google/resource/compute/google_compute_global_network_endpoint_group.json +var googleComputeGlobalNetworkEndpointGroup []byte + +//go:embed mapping/google/resource/compute/google_compute_network_endpoint_group.json +var googleComputeNetworkEndpointGroup []byte + +//go:embed mapping/google/resource/compute/google_compute_region_network_endpoint_group.json +var googleComputeRegionNetworkEndpointGroup []byte + +//go:embed mapping/google/resource/firebase/google_firebase_web_app.json +var googleFirebaseWebApp []byte + +//go:embed mapping/google/resource/dataflow/google_dataflow_job.json +var googleDataflowJob []byte + +//go:embed mapping/google/resource/dataform/google_dataform_repository.json +var googleDataformRepository []byte + +//go:embed mapping/google/resource/dataform/google_dataform_repository_release_config.json +var googleDataformRepositoryReleaseConfig []byte + +//go:embed mapping/google/resource/dataform/google_dataform_repository_workflow_config.json +var googleDataformRepositoryWorkflowConfig []byte + +//go:embed mapping/google/resource/compute/google_compute_network_attachment.json +var googleComputeNetworkAttachment []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_environment.json +var googleNotebooksEnvironment []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_instance.json +var googleNotebooksInstance []byte + +//go:embed mapping/google/resource/notebooks/google_notebooks_runtime.json +var googleNotebooksRuntime []byte + +//go:embed mapping/google/resource/logging/google_logging_billing_account_exclusion.json +var googleLoggingBillingAccountExclusion []byte + +//go:embed mapping/google/resource/logging/google_logging_billing_account_sink.json +var googleLoggingBillingAccountSink []byte + +//go:embed mapping/google/resource/logging/google_logging_folder_exclusion.json +var googleLoggingFolderExclusion []byte + +//go:embed mapping/google/resource/logging/google_logging_folder_settings.json +var googleLoggingFolderSettings []byte + +//go:embed mapping/google/resource/logging/google_logging_folder_sink.json +var googleLoggingFolderSink []byte + +//go:embed mapping/google/resource/logging/google_logging_linked_dataset.json +var googleLoggingLinkedDataset []byte + +//go:embed mapping/google/resource/logging/google_logging_log_scope.json +var googleLoggingLogScope []byte + +//go:embed mapping/google/resource/logging/google_logging_log_view.json +var googleLoggingLogView []byte + +//go:embed mapping/google/resource/logging/google_logging_metric.json +var googleLoggingMetric []byte + +//go:embed mapping/google/resource/logging/google_logging_organization_exclusion.json +var googleLoggingOrganizationExclusion []byte + +//go:embed mapping/google/resource/logging/google_logging_organization_settings.json +var googleLoggingOrganizationSettings []byte + +//go:embed mapping/google/resource/logging/google_logging_organization_sink.json +var googleLoggingOrganizationSink []byte + +//go:embed mapping/google/resource/logging/google_logging_project_exclusion.json +var googleLoggingProjectExclusion []byte + +//go:embed mapping/google/resource/logging/google_logging_project_sink.json +var googleLoggingProjectSink []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_alert_policy.json +var googleMonitoringAlertPolicy []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_custom_service.json +var googleMonitoringCustomService []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_dashboard.json +var googleMonitoringDashboard []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_group.json +var googleMonitoringGroup []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_metric_descriptor.json +var googleMonitoringMetricDescriptor []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_monitored_project.json +var googleMonitoringMonitoredProject []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_notification_channel.json +var googleMonitoringNotificationChannel []byte + +//go:embed mapping/google/resource/backupdr/google_backup_dr_backup_plan.json +var googleBackupDRBackupPlan []byte + +//go:embed mapping/google/resource/backupdr/google_backup_dr_backup_plan_association.json +var googleBackupDRBackupPlanAssociation []byte + +//go:embed mapping/google/resource/backupdr/google_backup_dr_backup_vault.json +var googleBackupDRBackupVault []byte + +//go:embed mapping/google/resource/backupdr/google_backup_dr_management_server.json +var googleBackupDRManagementServer []byte + +//go:embed mapping/google/resource/backupdr/google_backup_dr_service_config.json +var googleBackupDRServiceConfig []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_service.json +var googleMonitoringService []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_slo.json +var googleMonitoringSLO []byte + +//go:embed mapping/google/resource/monitoring/google_monitoring_uptime_check_config.json +var googleMonitoringUptimeCheckConfig []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_app_connection.json +var googleBeyondcorpAppConnection []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_app_connector.json +var googleBeyondcorpAppConnector []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_app_gateway.json +var googleBeyondcorpAppGateway []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_application.json +var googleBeyondcorpApplication []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway.json +var googleBeyondcorpSecurityGateway []byte + +//go:embed mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application.json +var googleBeyondcorpSecurityGatewayApplication []byte + +//go:embed mapping/google/resource/billing/google_billing_budget.json +var googleBillingBudget []byte + +//go:embed mapping/google/resource/resourcemanager/google_billing_project_info.json +var googleBillingProjectInfo []byte + +//go:embed mapping/google/resource/apihub/google_apihub_api_hub_instance.json +var googleApihubInstance []byte + +//go:embed mapping/google/resource/apihub/google_apihub_curation.json +var googleApihubCuration []byte + +//go:embed mapping/google/resource/apihub/google_apihub_host_project_registration.json +var googleApihubHostProjectRegistration []byte + +//go:embed mapping/google/resource/apihub/google_apihub_plugin.json +var googleApihubPlugin []byte + +//go:embed mapping/google/resource/apihub/google_apihub_plugin_instance.json +var googleApihubPluginInstance []byte + +//go:embed mapping/google/resource/apphub/google_apphub_application.json +var googleApphubApplication []byte + +//go:embed mapping/google/resource/apphub/google_apphub_service.json +var googleApphubService []byte + +//go:embed mapping/google/resource/apphub/google_apphub_service_project_attachment.json +var googleApphubServiceProjectAttachment []byte + +//go:embed mapping/google/resource/apphub/google_apphub_workload.json +var googleApphubWorkload []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_aspect_type.json +var googleDataplexAspectType []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry.json +var googleDataplexEntry []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry_group.json +var googleDataplexEntryGroup []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_entry_type.json +var googleDataplexEntryType []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_lake.json +var googleDataplexLake []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_task.json +var googleDataplexTask []byte + +//go:embed mapping/google/resource/dataplex/google_dataplex_zone.json +var googleDataplexZone []byte + +//go:embed mapping/google/resource/vmwareengine/google_vmwareengine_cluster.json +var googleVmwareengineCluster []byte + +//go:embed mapping/google/resource/vmwareengine/google_vmwareengine_external_access_rule.json +var googleVmwareengineExternalAccessRule []byte + +//go:embed mapping/google/resource/vmwareengine/google_vmwareengine_external_address.json +var googleVmwareengineExternalAddress []byte + +//go:embed mapping/google/resource/vmwareengine/google_vmwareengine_network.json +var googleVmwareengineNetwork []byte + +//go:embed mapping/google/resource/vmwareengine/google_vmwareengine_network_peering.json +var googleVmwareengineNetworkPeering []byte + +//go:embed mapping/google/resource/vmwareengine/google_vmwareengine_network_policy.json +var googleVmwareengineNetworkPolicy []byte + +//go:embed mapping/google/resource/vmwareengine/google_vmwareengine_private_cloud.json +var googleVmwareenginePrivateCloud []byte + +//go:embed mapping/google/resource/vmwareengine/google_vmwareengine_subnet.json +var googleVmwareengineSubnet []byte + +//go:embed mapping/google/resource/workflows/google_workflows_workflow.json +var googleWorkflowsWorkflow []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation.json +var googleWorkstationsWorkstation []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation_cluster.json +var googleWorkstationsWorkstationCluster []byte + +//go:embed mapping/google/resource/workstations/google_workstations_workstation_config.json +var googleWorkstationsWorkstationConfig []byte + +//go:embed mapping/google/resource/chronicle/google_chronicle_data_access_label.json +var googleChronicleDataAccessLabel []byte + +//go:embed mapping/google/resource/chronicle/google_chronicle_data_access_scope.json +var googleChronicleDataAccessScope []byte + +//go:embed mapping/google/resource/chronicle/google_chronicle_reference_list.json +var googleChronicleReferenceList []byte + +//go:embed mapping/google/resource/chronicle/google_chronicle_retrohunt.json +var googleChronicleRetrohunt []byte + +//go:embed mapping/google/resource/chronicle/google_chronicle_rule.json +var googleChronicleRule []byte + +//go:embed mapping/google/resource/chronicle/google_chronicle_rule_deployment.json +var googleChronicleRuleDeployment []byte + +//go:embed mapping/google/resource/chronicle/google_chronicle_watchlist.json +var googleChronicleWatchlist []byte + +//go:embed mapping/google/resource/composer/google_composer_user_workloads_config_map.json +var googleComposerUserWorkloadsConfigMap []byte + +//go:embed mapping/google/resource/composer/google_composer_user_workloads_secret.json +var googleComposerUserWorkloadsSecret []byte + +//go:embed mapping/google/resource/contactcenterinsights/google_contact_center_insights_analysis_rule.json +var googleContactCenterInsightsAnalysisRule []byte + +//go:embed mapping/google/resource/contactcenterinsights/google_contact_center_insights_view.json +var googleContactCenterInsightsView []byte + +//go:embed mapping/google/resource/developerconnect/google_developer_connect_account_connector.json +var googleDeveloperConnectAccountConnector []byte + +//go:embed mapping/google/resource/developerconnect/google_developer_connect_connection.json +var googleDeveloperConnectConnection []byte + +//go:embed mapping/google/resource/developerconnect/google_developer_connect_git_repository_link.json +var googleDeveloperConnectGitRepositoryLink []byte + +//go:embed mapping/google/resource/bigtable/google_bigtable_schema_bundle.json +var googleBigtableSchemaBundle []byte + +//go:embed mapping/google/resource/memcache/google_memcache_instance.json +var googleMemcacheInstance []byte + +//go:embed mapping/google/resource/memorystore/google_memorystore_instance.json +var googleMemorystoreInstance []byte + +//go:embed mapping/google/resource/osconfig/google_os_config_guest_policies.json +var googleOsConfigGuestPolicies []byte + +//go:embed mapping/google/resource/osconfig/google_os_config_os_policy_assignment.json +var googleOsConfigOsPolicyAssignment []byte + +//go:embed mapping/google/resource/osconfig/google_os_config_patch_deployment.json +var googleOsConfigPatchDeployment []byte + +//go:embed mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator.json +var googleOsConfigV2PolicyOrchestrator []byte + +//go:embed mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator_for_folder.json +var googleOsConfigV2PolicyOrchestratorForFolder []byte + +//go:embed mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator_for_organization.json +var googleOsConfigV2PolicyOrchestratorForOrganization []byte + +//go:embed mapping/google/resource/parallelstore/google_parallelstore_instance.json +var googleParallelstoreInstance []byte + +//go:embed mapping/google/resource/privateca/google_privateca_certificate.json +var googlePrivatecaCertificate []byte + +//go:embed mapping/google/resource/privateca/google_privateca_certificate_authority.json +var googlePrivatecaCertificateAuthority []byte + +//go:embed mapping/google/resource/cloudsql/google_sql_ssl_cert.json +var googleSqlSslCert []byte + +//go:embed mapping/google/resource/tpu/google_tpu_node.json +var googleTpuNode []byte + +//go:embed mapping/google/resource/tpu/google_tpu_v2_queued_resource.json +var googleTpuV2QueuedResource []byte + +//go:embed mapping/google/resource/tpu/google_tpu_v2_vm.json +var googleTpuV2Vm []byte + +//go:embed mapping/google/resource/transcoder/google_transcoder_job.json +var googleTranscoderJob []byte + +//go:embed mapping/google/resource/transcoder/google_transcoder_job_template.json +var googleTranscoderJobTemplate []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool.json +var googleIamWorkforcePool []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_binding.json +var googleIamWorkforcePoolIamBinding []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_member.json +var googleIamWorkforcePoolIamMember []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_policy.json +var googleIamWorkforcePoolIamPolicy []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_provider.json +var googleIamWorkforcePoolProvider []byte + +//go:embed mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_provider_key.json +var googleIamWorkforcePoolProviderKey []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_autoscaling_policy.json +var googleDataprocAutoscalingPolicy []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_batch.json +var googleDataprocBatch []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_cluster.json +var googleDataprocCluster []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_job.json +var googleDataprocJob []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_session_template.json +var googleDataprocSessionTemplate []byte + +//go:embed mapping/google/resource/dataproc/google_dataproc_workflow_template.json +var googleDataprocWorkflowTemplate []byte + +//go:embed mapping/google/resource/deploymentmanager/google_deployment_manager_deployment.json +var googleDeploymentManagerDeployment []byte + +//go:embed mapping/google/resource/edgecontainer/google_edgecontainer_cluster.json +var googleEdgecontainerCluster []byte + +//go:embed mapping/google/resource/edgecontainer/google_edgecontainer_node_pool.json +var googleEdgecontainerNodePool []byte + +//go:embed mapping/google/resource/edgecontainer/google_edgecontainer_vpn_connection.json +var googleEdgecontainerVpnConnection []byte + +//go:embed mapping/google/resource/edgenetwork/google_edgenetwork_interconnect_attachment.json +var googleEdgecontainerInterconnectAttachment []byte + +//go:embed mapping/google/resource/edgenetwork/google_edgenetwork_network.json +var googleEdgecontainerNetwork []byte + +//go:embed mapping/google/resource/edgenetwork/google_edgenetwork_subnet.json +var googleEdgecontainerSubnet []byte + +//go:embed mapping/google/resource/eventarc/google_eventarc_channel.json +var googleEventarcChannel []byte + +//go:embed mapping/google/resource/eventarc/google_eventarc_enrollment.json +var googleEventarcEnrollment []byte + +//go:embed mapping/google/resource/eventarc/google_eventarc_google_api_source.json +var googleEventarcGoogleApiSource []byte + +//go:embed mapping/google/resource/eventarc/google_eventarc_google_channel_config.json +var googleEventarcGoogleChannelConfig []byte + +//go:embed mapping/google/resource/eventarc/google_eventarc_message_bus.json +var googleEventarcMessageBus []byte + +//go:embed mapping/google/resource/eventarc/google_eventarc_pipeline.json +var googleEventarcPipeline []byte + +//go:embed mapping/google/resource/eventarc/google_eventarc_trigger.json +var googleEventarcTrigger []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_branch_rule.json +var googleSecureSourceManagerBranchRule []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_instance.json +var googleSecureSourceManagerInstance []byte + +//go:embed mapping/google/resource/securesourcemanager/google_secure_source_manager_repository.json +var googleSecureSourceManagerRepository []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_agent.json +var googleDialogflowAgent []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_conversation_profile.json +var googleDialogflowConversationProfile []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_agent.json +var googleDialogflowCxAgent []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_entity_type.json +var googleDialogflowCxEntityType []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_environment.json +var googleDialogflowCxEnvironment []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_flow.json +var googleDialogflowCxFlow []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_generative_settings.json +var googleDialogflowCxGenerativeSettings []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_generator.json +var googleDialogflowCxGenerator []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_intent.json +var googleDialogflowCxIntent []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_page.json +var googleDialogflowCxPage []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_playbook.json +var googleDialogflowCxPlaybook []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_security_settings.json +var googleDialogflowCxSecuritySettings []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_tool.json +var googleDialogflowCxTool []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_version.json +var googleDialogflowCxVersion []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_cx_webhook.json +var googleDialogflowCxWebhook []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_encryption_spec.json +var googleDialogflowEncryptionSpec []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_entity_type.json +var googleDialogflowEntityType []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_fulfillment.json +var googleDialogflowFulfillment []byte + +//go:embed mapping/google/resource/dialogflow/google_dialogflow_intent.json +var googleDialogflowIntent []byte + +//go:embed mapping/google/resource/managedkafka/google_managed_kafka_cluster.json +var googleManagedKafkaCluster []byte + +//go:embed mapping/google/resource/managedkafka/google_managed_kafka_connect_cluster.json +var googleManagedKafkaConnectCluster []byte + +//go:embed mapping/google/resource/managedkafka/google_managed_kafka_connector.json +var googleManagedKafkaConnector []byte + +//go:embed mapping/google/resource/managedkafka/google_managed_kafka_topic.json +var googleManagedKafkaTopics []byte + +//go:embed mapping/google/resource/modelarmor/google_model_armor_floorsetting.json +var googleModelArmorFloorsetting []byte + +//go:embed mapping/google/resource/modelarmor/google_model_armor_template.json +var googleModelArmorTemplate []byte + +//go:embed mapping/google/resource/managedkafka/google_managed_kafka_acl.json +var googleManagedKafkaAcl []byte + +//go:embed mapping/google/resource/certificatemanager/google_certificate_manager_dns_authorization.json +var googleCertificateManagerDnsAuthorization []byte + +//go:embed mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_binding.json +var googleIapWebRegionForwardingRuleServiceIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_member.json +var googleIapWebRegionForwardingRuleServiceIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_policy.json +var googleIapWebRegionForwardingRuleServiceIamPolicy []byte + +//go:embed mapping/google/resource/iap/google_iap_settings.json +var googleIapSettings []byte + +//go:embed mapping/google/resource/iap/google_iap_tunnel_dest_group.json +var googleIapTunnelDestGroup []byte + +//go:embed mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_binding.json +var googleIapWebForwardingRuleServiceIamBinding []byte + +//go:embed mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_member.json +var googleIapWebForwardingRuleServiceIamMember []byte + +//go:embed mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_policy.json +var googleIapWebForwardingRuleServiceIamPolicy []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_code_repository_index.json +var googleGeminiCodeRepositoryIndex []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_code_tools_setting.json +var googleGeminiCodeToolsSetting []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_code_tools_setting_binding.json +var googleGeminiCodeToolsSettingBinding []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_data_sharing_with_google_setting.json +var googleGeminiDataSharingWithGoogleSetting []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_data_sharing_with_google_setting_binding.json +var googleGeminiDataSharingWithGoogleSettingBinding []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_gemini_gcp_enablement_setting.json +var googleGeminiGeminiGcpEnablementSetting []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_gemini_gcp_enablement_setting_binding.json +var googleGeminiGeminiGcpEnablementSettingBinding []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_logging_setting.json +var googleGeminiLoggingSetting []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_logging_setting_binding.json +var googleGeminiLoggingSettingBinding []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_release_channel_setting.json +var googleGeminiReleaseChannelSetting []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_release_channel_setting_binding.json +var googleGeminiReleaseChannelSettingBinding []byte + +//go:embed mapping/google/resource/cloudaicompanion/google_gemini_repository_group.json +var googleGeminiRepositoryGroup []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_cache_config.json +var googleVertexAiCacheConfig []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_deployment_resource_pool.json +var googleVertexAiDeploymentResourcePool []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_rag_engine_config.json +var googleVertexAiRagEngineConfig []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_reasoning_engine.json +var googleVertexAiReasoningEngine []byte + +//go:embed mapping/google/resource/vpcaccess/google_vpc_access_connector.json +var googleVpcAccessConnector []byte + +//go:embed mapping/google/resource/notebooks/google_workbench_instance.json +var googleWorkbenchInstance []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_endpoint_with_model_garden_deployment.json +var googleVertexAiEndpointWithModelGardenDeployment []byte + +//go:embed mapping/google/resource/aiplatform/google_vertex_ai_index_endpoint_deployed_index.json +var googleVertexAiIndexEndpointDeployedIndex []byte diff --git a/src/files_gcp_datasource.go b/src/files_gcp_datasource.go index 2c09c66e..fdd48fc0 100644 --- a/src/files_gcp_datasource.go +++ b/src/files_gcp_datasource.go @@ -445,10 +445,10 @@ var dataGoogleIapAppEngineVersionIamPolicy []byte //go:embed mapping/google/data/iap/google_iap_app_engine_service_iam_policy.json var dataGoogleIapAppEngineServiceIamPolicy []byte -//go:embed mapping/google/data/iam/google_iam_workload_identity_pool_provider.json +//go:embed mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool_provider.json var dataGoogleIamWorkloadIdentityPoolProvider []byte -//go:embed mapping/google/data/iam/google_iam_workload_identity_pool.json +//go:embed mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool.json var dataGoogleIamWorkloadIdentityPool []byte //go:embed mapping/google/data/dataplex/google_dataplex_asset_iam_policy.json @@ -567,3 +567,432 @@ var dataGoogleDataformRepositoryIamPolicy []byte //go:embed mapping/google/data/servicemanagement/google_endpoints_service_iam_policy.json var dataGoogleEndpointsServiceIamPolicy []byte + +//go:embed mapping/google/data/secretmanager/google_secret_manager_regional_secret.json +var dataGoogleSecretManagerRegionalSecret []byte + +//go:embed mapping/google/data/secretmanager/google_secret_manager_regional_secret_iam_policy.json +var dataGoogleSecretManagerRegionalSecretIamPolicy []byte + +//go:embed mapping/google/data/secretmanager/google_secret_manager_regional_secret_version.json +var dataGoogleSecretManagerRegionalSecretVersion []byte + +//go:embed mapping/google/data/secretmanager/google_secret_manager_regional_secret_version_access.json +var dataGoogleSecretManagerRegionalSecretVersionAccess []byte + +//go:embed mapping/google/data/secretmanager/google_secret_manager_secrets.json +var dataGoogleSecretManagerRegionalSecrets []byte + +//go:embed mapping/google/data/iam/google_service_accounts.json +var dataGoogleServiceAccounts []byte + +//go:embed mapping/google/data/spanner/google_spanner_database.json +var dataGoogleSpannerDatabase []byte + +//go:embed mapping/google/data/storage/google_storage_bucket_objects.json +var dataGoogleStorageBucketObjects []byte + +//go:embed mapping/google/data/storage/google_storage_buckets.json +var dataGoogleStorageBuckets []byte + +//go:embed mapping/google/data/privateca/google_privateca_ca_pool_iam_policy.json +var dataGooglePrivatecaCaPoolIamPolicy []byte + +//go:embed mapping/google/data/privateca/google_privateca_certificate_authority.json +var dataGooglePrivatecaCertificateAuthority []byte + +//go:embed mapping/google/data/privateca/google_privateca_certificate_template_iam_policy.json +var dataGooglePrivatecaCertificateTemplateIamPolicy []byte + +//go:embed mapping/google/data/iam/google_project_iam_custom_role.json +var dataGoogleProjectIamCustomRole []byte + +//go:embed mapping/google/data/iam/google_project_iam_custom_roles.json +var dataGoogleProjectIamCustomRoles []byte + +//go:embed mapping/google/data/privilegedaccessmanager/google_privileged_access_manager_entitlement.json +var dataGooglePrivilegedAccessManagerEntitlement []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_docker_image.json +var dataGoogleArtifactRegistryDockerImage []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_locations.json +var dataGoogleArtifactRegistryLocations []byte + +//go:embed mapping/google/data/certificatemanager/google_certificate_manager_certificates.json +var dataGoogleCertificateManagerCertificates []byte + +//go:embed mapping/google/data/composer/google_composer_user_workloads_config_map.json +var dataGoogleComposerUserWorkloadsConfigMap []byte + +//go:embed mapping/google/data/composer/google_composer_user_workloads_secret.json +var dataGoogleComposerUserWorkloadsSecret []byte + +//go:embed mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool_iam_policy.json +var dataGoogleIamWorkloadIdentityPoolIamPolicy []byte + +//go:embed mapping/google/data/cloudkms/google_kms_key_handle.json +var dataGoogleKmsKeyHandle []byte + +//go:embed mapping/google/data/cloudkms/google_kms_key_handles.json +var dataGoogleKmsKeyHandles []byte + +//go:embed mapping/google/data/cloudkms/google_kms_key_rings.json +var dataGoogleKmsKeyRings []byte + +//go:embed mapping/google/data/parametermanager/google_parameter_manager_parameter.json +var dataGoogleParameterManagerParameter []byte + +//go:embed mapping/google/data/parametermanager/google_parameter_manager_parameter_version.json +var dataGoogleParameterManagerParameterVersion []byte + +//go:embed mapping/google/data/parametermanager/google_parameter_manager_parameter_version_render.json +var dataGoogleParameterManagerParameterVersionRender []byte + +//go:embed mapping/google/data/parametermanager/google_parameter_manager_parameters.json +var dataGoogleParameterManagerParameters []byte + +//go:embed mapping/google/data/parametermanager/google_parameter_manager_regional_parameter.json +var dataGoogleParameterManagerRegionalParameter []byte + +//go:embed mapping/google/data/parametermanager/google_parameter_manager_regional_parameter_version.json +var dataGoogleParameterManagerRegionalParameterVersion []byte + +//go:embed mapping/google/data/parametermanager/google_parameter_manager_regional_parameter_version_render.json +var dataGoogleParameterManagerRegionalParameterVersionRender []byte + +//go:embed mapping/google/data/parametermanager/google_parameter_manager_regional_parameters.json +var dataGoogleParameterManagerRegionalParameters []byte + +//go:embed mapping/google/data/cloudkms/google_kms_ekm_connection_iam_policy.json +var dataGoogleEkmConnectionIamPolicy []byte + +//go:embed mapping/google/data/oracledatabase/google_oracle_database_autonomous_database.json +var dataGoogleOracleDatabaseAutonomousDatabase []byte + +//go:embed mapping/google/data/oracledatabase/google_oracle_database_autonomous_databases.json +var dataGoogleOracleDatabaseAutonomousDatabases []byte + +//go:embed mapping/google/data/oracledatabase/google_oracle_database_cloud_exadata_infrastructure.json +var dataGoogleOracleDatabaseCloudExadataInfrastructure []byte + +//go:embed mapping/google/data/oracledatabase/google_oracle_database_cloud_exadata_infrastructures.json +var dataGoogleOracleDatabaseCloudExadataInfrastructures []byte + +//go:embed mapping/google/data/oracledatabase/google_oracle_database_cloud_vm_cluster.json +var dataGoogleOracleDatabaseCloudVMCluster []byte + +//go:embed mapping/google/data/oracledatabase/google_oracle_database_cloud_vm_clusters.json +var dataGoogleOracleDatabaseCloudVMClusters []byte + +//go:embed mapping/google/data/oracledatabase/google_oracle_database_db_nodes.json +var dataGoogleOracleDatabaseDBNodes []byte + +//go:embed mapping/google/data/oracledatabase/google_oracle_database_db_servers.json +var dataGoogleOracleDatabaseDBServers []byte + +//go:embed mapping/google/data/compute/google_compute_forwarding_rules.json +var dataGoogleComputeForwardingRules []byte + +//go:embed mapping/google/data/compute/google_compute_images.json +var dataGoogleComputeImages []byte + +//go:embed mapping/google/data/compute/google_compute_instance_guest_attributes.json +var dataGoogleComputeInstanceGuestAttributes []byte + +//go:embed mapping/google/data/compute/google_compute_instance_template_iam_policy.json +var dataGoogleComputeInstanceTemplateIamPolicy []byte + +//go:embed mapping/google/data/compute/google_compute_instant_snapshot_iam_policy.json +var dataGoogleComputeInstantSnapshotIamPolicy []byte + +//go:embed mapping/google/data/compute/google_compute_machine_types.json +var dataGoogleComputeMachineTypes []byte + +//go:embed mapping/google/data/compute/google_compute_region_backend_service.json +var dataGoogleComputeRegionBackendService []byte + +//go:embed mapping/google/data/compute/google_compute_region_instance_group_manager.json +var dataGoogleComputeRegionInstanceGroupManager []byte + +//go:embed mapping/google/data/compute/google_compute_security_policy.json +var dataGoogleComputeSecurityPolicy []byte + +//go:embed mapping/google/data/compute/google_compute_storage_pool_iam_policy.json +var dataGoogleComputeStoragePoolIamPolicy []byte + +//go:embed mapping/google/data/compute/google_compute_storage_pool_types.json +var dataGoogleComputeStoragePoolTypes []byte + +//go:embed mapping/google/data/compute/google_compute_subnetworks.json +var dataGoogleComputeSubnetworks []byte + +//go:embed mapping/google/data/alloydb/google_alloydb_cluster.json +var dataGoogleAlloydbCluster []byte + +//go:embed mapping/google/data/alloydb/google_alloydb_instance.json +var dataGoogleAlloydbInstance []byte + +//go:embed mapping/google/data/apphub/google_apphub_application.json +var dataGoogleApphubApplication []byte + +//go:embed mapping/google/data/apphub/google_apphub_discovered_service.json +var dataGoogleApphubDiscoveredService []byte + +//go:embed mapping/google/data/apphub/google_apphub_discovered_workload.json +var dataGoogleApphubDiscoveredWorkload []byte + +//go:embed mapping/google/data/backupdr/google_backup_dr_backup.json +var dataGoogleBackupDrBackup []byte + +//go:embed mapping/google/data/backupdr/google_backup_dr_backup_plan_association.json +var dataGoogleBackupDrPlanAssociation []byte + +//go:embed mapping/google/data/backupdr/google_backup_dr_backup_vault.json +var dataGoogleBackupDrBackupVault []byte + +//go:embed mapping/google/data/backupdr/google_backup_dr_data_source.json +var dataGoogleBackupDrDataSource []byte + +//go:embed mapping/google/data/beyondcorp/google_beyondcorp_application_iam_policy.json +var dataGoogleBeyondcorpApplicationIamPolicy []byte + +//go:embed mapping/google/data/beyondcorp/google_beyondcorp_security_gateway.json +var dataGoogleBeyondcorpSecurityGateway []byte + +//go:embed mapping/google/data/beyondcorp/google_beyondcorp_security_gateway_application_iam_policy.json +var dataGoogleBeyondcorpSecurityGatewayApplicationIamPolicy []byte + +//go:embed mapping/google/data/beyondcorp/google_beyondcorp_security_gateway_iam_policy.json +var dataGoogleBeyondcorpSecurityGatewayIamPolicy []byte + +//go:embed mapping/google/data/run/google_cloud_run_v2_worker_pool.json +var dataGoogleCloudRunV2WorkerPool []byte + +//go:embed mapping/google/data/run/google_cloud_run_v2_worker_pool_iam_policy.json +var dataGoogleCloudRunWorkerPoolIamPolicy []byte + +//go:embed mapping/google/data/clouddeploy/google_clouddeploy_custom_target_type_iam_policy.json +var dataGoogleClouddeployCustomTargetTypeIamPolicy []byte + +//go:embed mapping/google/data/clouddeploy/google_clouddeploy_delivery_pipeline_iam_policy.json +var dataGoogleClouddeployDeliveryPipelineIamPolicy []byte + +//go:embed mapping/google/data/clouddeploy/google_clouddeploy_target_iam_policy.json +var dataGoogleClouddeployTargetIamPolicy []byte + +//go:embed mapping/google/data/aiplatform/google_colab_runtime_template_iam_policy.json +var dataGoogleColabRuntimeTemplateIamPolicy []byte + +//go:embed mapping/google/data/gkemulticloud/google_container_attached_install_manifest.json +var dataGoogleContainerAttachedInstallManifest []byte + +//go:embed mapping/google/data/gkemulticloud/google_container_aws_versions.json +var dataGoogleContainerAwsVersions []byte + +//go:embed mapping/google/data/gkemulticloud/google_container_azure_versions.json +var dataGoogleContainerAzureVersions []byte + +//go:embed mapping/google/data/dataplex/google_dataplex_aspect_type_iam_policy.json +var dataGoogleDataplexAspectTypeIamPolicy []byte + +//go:embed mapping/google/data/dataplex/google_dataplex_entry_group_iam_policy.json +var dataGoogleDataplexEntryGroupIamPolicy []byte + +//go:embed mapping/google/data/dataplex/google_dataplex_entry_type_iam_policy.json +var dataGoogleDataplexEntryTypeIamPolicy []byte + +//go:embed mapping/google/data/dataplex/google_dataplex_glossary_iam_policy.json +var dataGoogleDataplexGlossaryIamPolicy []byte + +//go:embed mapping/google/data/metastore/google_dataproc_metastore_database_iam_policy.json +var dataGoogleDataprocMetastoreDatabaseIamPolicy []byte + +//go:embed mapping/google/data/metastore/google_dataproc_metastore_table_iam_policy.json +var dataGoogleDataprocMetastoreTableIamPolicy []byte + +//go:embed mapping/google/data/resourcemanager/google_folder.json +var dataGoogleFolder []byte + +//go:embed mapping/google/data/resourcemanager/google_folder_iam_policy.json +var dataGoogleFolderIamPolicy []byte + +//go:embed mapping/google/data/resourcemanager/google_folders.json +var dataGoogleFolders []byte + +//go:embed mapping/google/data/cloudaicompanion/google_gemini_repository_group_iam_policy.json +var dataGoogleGeminiRepositoryGroupIamPolicy []byte + +//go:embed mapping/google/data/gkehub/google_gke_hub_feature.json +var dataGoogleGkeHubFeature []byte + +//go:embed mapping/google/data/gkehub/google_gke_hub_membership.json +var dataGoogleGkeHubMembership []byte + +//go:embed mapping/google/data/iap/google_iap_tunnel_dest_group_iam_policy.json +var dataGoogleIapTunnelDestGroupIamPolicy []byte + +//go:embed mapping/google/data/iap/google_iap_web_cloud_run_service_iam_policy.json +var dataGoogleIapWebCloudRunServiceIamPolicy []byte + +//go:embed mapping/google/data/lustre/google_lustre_instance.json +var dataGoogleLustreInstance []byte + +//go:embed mapping/google/data/memcache/google_memcache_instance.json +var dataGoogleMemcacheInstance []byte + +//go:embed mapping/google/data/memorystore/google_memorystore_instance.json +var dataGoogleMemorystoreInstance []byte + +//go:embed mapping/google/data/orgpolicy/google_project_organization_policy.json +var dataGoogleProjectOrganizationPolicy []byte + +//go:embed mapping/google/data/resourcemanager/google_organization_iam_policy.json +var dataGoogleOrganizationIamPolicy []byte + +//go:embed mapping/google/data/resourcemanager/google_project_iam_policy.json +var dataGoogleProjectIamPolicy []byte + +//go:embed mapping/google/data/runtimeconfig/google_runtimeconfig_config_iam_policy.json +var dataGoogleRuntimeconfigConfigIamPolicy []byte + +//go:embed mapping/google/data/securitycenter/google_scc_source_iam_policy.json +var dataGoogleSccSourceIamPolicy []byte + +//go:embed mapping/google/data/securitycenter/google_scc_v2_organization_source_iam_policy.json +var dataGoogleSccV2OrganizationSourceIamPolicy []byte + +//go:embed mapping/google/data/securesourcemanager/google_secure_source_manager_instance_iam_policy.json +var dataGoogleSecureSourceManagerInstanceIamPolicy []byte + +//go:embed mapping/google/data/securesourcemanager/google_secure_source_manager_repository_iam_policy.json +var dataGoogleSecureSourceManagerRepositoryIamPolicy []byte + +//go:embed mapping/google/data/resourcemanager/google_tags_tag_key_iam_policy.json +var dataGoogleTagsTagKeyIamPolicy []byte + +//go:embed mapping/google/data/aiplatform/google_vertex_ai_feature_group_iam_policy.json +var dataGoogleVertexAiFeatureGroupIamPolicy []byte + +//go:embed mapping/google/data/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_policy.json +var dataGoogleVertexAiFeatureOnlineStoreFeatureviewIamPolicy []byte + +//go:embed mapping/google/data/tags/google_tags_tag_value_iam_policy.json +var dataGoogleTagsTagValueIamPolicy []byte + +//go:embed mapping/google/data/aiplatform/google_vertex_ai_feature_online_store_iam_policy.json +var dataGoogleVertexAiFeatureOnlineStoreIamPolicy []byte + +//go:embed mapping/google/data/resourcemanager/google_tags_tag_keys.json +var dataGoogleTagsTagKeys []byte + +//go:embed mapping/google/data/resourcemanager/google_tags_tag_value.json +var dataGoogleTagsTagValue []byte + +//go:embed mapping/google/data/resourcemanager/google_tags_tag_values.json +var dataGoogleTagsTagValues []byte + +//go:embed mapping/google/data/storage/google_storage_control_folder_intelligence_config.json +var dataGoogleStorageControlFolderIntelligenceConfig []byte + +//go:embed mapping/google/data/storage/google_storage_control_organization_intelligence_config.json +var dataGoogleStorageControlOrganizationIntelligenceConfig []byte + +//go:embed mapping/google/data/storage/google_storage_control_project_intelligence_config.json +var dataGoogleStorageControlProjectIntelligenceConfig []byte + +//go:embed mapping/google/resource/runtimeconfig/google_runtimeconfig_config.json +var dataGoogleRuntimeconfigConfig []byte + +//go:embed mapping/google/resource/runtimeconfig/google_runtimeconfig_variable.json +var dataGoogleRuntimeconfigVariable []byte + +//go:embed mapping/google/data/redis/google_redis_cluster.json +var dataGoogleRedisCluster []byte + +//go:embed mapping/google/data/resourcemanager/google_project_ancestry.json +var dataGoogleProjectAncestry []byte + +//go:embed mapping/google/data/dns/google_dns_managed_zones.json +var dataGoogleDNSManagedZones []byte + +//go:embed mapping/google/data/accesscontextmanager/google_access_context_manager_access_policy.json +var dataGoogleAccessContextManagerAccessPolicy []byte + +//go:embed mapping/google/data/dataplex/google_dataplex_data_quality_rules.json +var dataGoogleDataplexDataQualityRules []byte + +//go:embed mapping/google/data/iam/google_organization_iam_custom_role.json +var dataGoogleOrganizationIamCustomRole []byte + +//go:embed mapping/google/data/iam/google_organization_iam_custom_roles.json +var dataGoogleOrganizationIamCustomRoles []byte + +//go:embed mapping/google/data/compute/google_compute_network_attachment.json +var dataGoogleComputeNetworkAttachment []byte + +//go:embed mapping/google/data/storageinsights/google_storage_insights_dataset_config.json +var dataGoogleStorageInsightsDatasetConfig []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_docker_images.json +var dataGoogleArtifactRegistryDockerImages []byte + +//go:embed mapping/google/data/iam.googleapis.com/google_iam_workforce_pool_iam_policy.json +var dataGoogleIamWorkforcePoolIamPolicy []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_repositories.json +var dataGoogleArtifactRegistryRepositories []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_version.json +var dataGoogleArtifactRegistryVersion []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_versions.json +var dataGoogleArtifactRegistryVersions []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_npm_package.json +var dataGoogleArtifactRegistryNpmPackage []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_tags.json +var dataGoogleArtifactRegistryTags []byte + +//go:embed mapping/google/data/iap/google_iap_web_region_forwarding_rule_service_iam_policy.json +var dataGoogleIapWebRegionForwardingRuleServiceIamPolicy []byte + +//go:embed mapping/google/data/certificatemanager/google_certificate_manager_dns_authorization.json +var dataGoogleCertificateManagerDnsAuthorization []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_python_package.json +var dataGoogleArtifactRegistryPythonPackage []byte + +//go:embed mapping/google/data/backupdr/google_backup_dr_backup_plan_associations.json +var dataGoogleBackupDrPlanAssociations []byte + +//go:embed mapping/google/data/backupdr/google_backup_dr_data_source_reference.json +var dataGoogleBackupDrDataSourceReference []byte + +//go:embed mapping/google/data/backupdr/google_backup_dr_data_source_references.json +var dataGoogleBackupDrDataSourceReferences []byte + +//go:embed mapping/google/data/bigquery/google_bigquery_datapolicyv2_data_policy_iam_policy.json +var dataGoogleBigqueryDatapolicyv2DataPolicyIamPolicy []byte + +//go:embed mapping/google/data/iap/google_iap_web_forwarding_rule_service_iam_policy.json +var dataGoogleIapForwardingRuleServiceIamPolicy []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_maven_artifact.json +var dataGoogleArtifactRegistryMavenArtifact []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_maven_artifacts.json +var dataGoogleArtifactRegistryMavenArtifacts []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_npm_packages.json +var dataGoogleArtifactRegistryNpmPackages []byte + +//go:embed mapping/google/data/compute/google_compute_interconnect_location.json +var dataGoogleComputeInterconnectLocation []byte + +//go:embed mapping/google/data/compute/google_compute_interconnect_locations.json +var dataGoogleComputeInterconnectLocations []byte + +//go:embed mapping/google/data/artifactregistry/google_artifact_registry_packages.json +var dataGoogleArtifactRegistryPackages []byte diff --git a/src/gcp.go b/src/gcp.go index 5701dc97..4193c863 100644 --- a/src/gcp.go +++ b/src/gcp.go @@ -20,7 +20,7 @@ func (m invalidPermissionMapError) Error() string { // getGCPPermissions for GCP resources. func getGCPPermissions(result ResourceV2) ([]string, error) { - if result.TypeName == resource { + if result.TypeName == resource || result.TypeName == "terraform" { return getGCPResourcePermissions(result) } @@ -50,201 +50,795 @@ func GCPLookup(result string) interface{} { return gCPTfLookup[result] } -var ( - gCPTfLookup = map[string]interface{}{ - "google_access_context_manager_access_level": googleAccessContextManagerAccessLevel, - "google_access_context_manager_access_levels": googleAccessContextManagerAccessLevels, - "google_access_context_manager_access_policy": googleAccessContextManagerAccessPolicy, - "google_access_context_manager_access_policy_iam_binding": googleAccessContextManagerAccessPolicyIam, - "google_access_context_manager_access_policy_iam_member": googleAccessContextManagerAccessPolicyIam, - "google_access_context_manager_access_policy_iam_policy": googleAccessContextManagerAccessPolicyIam, - "google_access_context_manager_authorized_orgs_desc": googleAccessContextManagerAuthorizedOrgsDesc, - "google_access_context_manager_gcp_user_access_binding": googleAccessContextManagerGcpUserAccessBinding, - "google_access_context_manager_service_perimeter": googleAccessContextManagerServicePerimeter, - "google_access_context_manager_service_perimeters": googleAccessContextManagerServicePerimeters, - "google_alloydb_backup": googleAlloydbBackup, - "google_alloydb_cluster": googleAlloydbCluster, - "google_alloydb_instance": googleAlloydbInstance, - "google_alloydb_user": googleAlloydbUser, - "google_api_gateway_api": googleAPIGatewayAPI, - "google_api_gateway_api_config": googleAPIGatewayAPIConfig, - "google_api_gateway_api_config_iam_binding": googleAPIGatewayAPIConfigIam, - "google_api_gateway_api_config_iam_member": googleAPIGatewayAPIConfigIam, - "google_api_gateway_api_config_iam_policy": googleAPIGatewayAPIConfigIam, - "google_api_gateway_api_iam_binding": googleAPIGatewayAPIIam, - "google_api_gateway_api_iam_member": googleAPIGatewayAPIIam, - "google_api_gateway_api_iam_policy": googleAPIGatewayAPIIam, - "google_api_gateway_gateway": googleAPIGatewayGateway, - "google_api_gateway_gateway_iam_binding": googleAPIGatewayGatewayIam, - "google_api_gateway_gateway_iam_member": googleAPIGatewayGatewayIam, - "google_api_gateway_gateway_iam_policy": googleAPIGatewayGatewayIam, - "google_artifact_registry_repository": googleArtifactRegistryRepository, - "google_artifact_registry_repository_iam_binding": googleArtifactRegistryRepositoryIamBinding, - "google_artifact_registry_repository_iam_member": googleArtifactRegistryRepositoryIamMember, - "google_artifact_registry_repository_iam_policy": googleArtifactRegistryRepositoryIamPolicy, - "google_bigquery_dataset": googleBigqueryDataset, - "google_bigquery_job": googleBigqueryJob, - "google_bigquery_table": placeholder, - "google_bigtable_app_profile": googleBigtableAppProfile, - "google_bigtable_gc_policy": googleBigtableGcPolicy, - "google_bigtable_instance": googleBigtableInstance, - "google_bigtable_instance_iam_binding": googleBigTableInstanceIam, - "google_bigtable_instance_iam_member": googleBigTableInstanceIam, - "google_bigtable_instance_iam_policy": googleBigTableInstanceIam, - "google_bigtable_table": googleBigtableTable, - "google_bigtable_table_iam_binding": googleBigTableTableIam, - "google_bigtable_table_iam_member": googleBigTableTableIam, - "google_bigtable_table_iam_policy": googleBigTableTableIam, - "google_cloud_run_v2_job": googleCloudRunV2Job, - "google_cloud_run_v2_job_iam_binding": googleCloudRunV2JobIam, - "google_cloud_run_v2_job_iam_member": googleCloudRunV2JobIam, - "google_cloud_run_v2_job_iam_policy": googleCloudRunV2JobIam, - "google_cloud_run_v2_service": googleCloudRunV2Service, - "google_cloud_run_v2_service_iam_binding": googleCloudRunV2ServiceIam, - "google_cloud_run_v2_service_iam_member": googleCloudRunV2ServiceIam, - "google_cloud_run_v2_service_iam_policy": googleCloudRunV2ServiceIam, - "google_cloud_scheduler_job": googleCloudSchedulerJob, - "google_cloudbuild_trigger": googleCloudbuildTrigger, - "google_cloudfunctions_function": googleCloudfunctionsFunction, - "google_cloudfunctions_function_iam_member": googleCloudfunctionsFunctionIamPolicy, - "google_cloudfunctions_function_iam_policy": googleCloudfunctionsFunctionIamPolicy, - "google_compute_address": googleComputeAddress, - "google_compute_firewall": googleComputeFirewall, - "google_compute_global_address": googleComputeGlobalAddress, - "google_compute_instance": googleComputeInstance, - "google_compute_instance_template": googleComputeInstanceTemplate, - "google_compute_network": googleComputeNetwork, - "google_compute_project_metadata_item": googleComputeProjectMetadataItem, - "google_compute_region_ssl_certificate": googleComputeRegionSslCertificate, - "google_compute_security_policy": googleComputeSecurityPolicy, - "google_compute_subnetwork": googleComputeSubnetwork, - "google_container_cluster": googleContainerCluster, - "google_container_node_pool": googleContainerNodePool, - "google_dns_managed_zone": googleDnsmanagedZone, - "google_dns_policy": googleDNSPolicy, - "google_dns_record_set": googleDNSRecordSet, - "google_firebase_android_app": googleFirebaseAndroidApp, - "google_firebase_apple_app": googleFirebaseAppleApp, - "google_firebase_database_instance": googleFirebaseDatabaseInstance, - "google_firebase_hosting_channel": googleFirebaseHostingSite, - "google_firebase_hosting_custom_domain": googleFirebaseHostingSite, - "google_firebase_hosting_release": googleFirebaseHostingSite, - "google_firebase_hosting_site": googleFirebaseHostingSite, - "google_firebase_hosting_version": googleFirebaseHostingSite, - "google_firebase_project": googleFirebaseProject, - "google_firebase_storage_bucket": googleFirebaseStorageBucket, - "google_firebase_web_app": googleFirebaseWebApp, - "google_firebaserules_release": googleFirebaserulesRelease, - "google_firebaserules_ruleset": googleFirebaserulesRuleset, - "google_kms_crypto_key": googleKmsCryptoKey, - "google_kms_crypto_key_iam_binding": googlekmsCryptoKeyIamBinding, - "google_kms_crypto_key_iam_member": googlekmsCryptoKeyIamMember, - "google_kms_crypto_key_iam_policy": googlekmsCryptoKeyIamPolicy, - "google_kms_key_ring": googleKmsKeyRing, - "google_project_iam_binding": googleProjectIamBinding, - "google_project_iam_custom_role": googleProjectIamCustomRole, - "google_project_iam_member": googleProjectIamBinding, - "google_project_service": googleProjectService, - "google_project_service_identity": placeholder, - "google_pubsub_lite_reservation": googlePubsubLiteReservation, - "google_pubsub_lite_subscription": googlePubsubLiteSubscription, - "google_pubsub_lite_topic": googlePubsubLiteTopic, - "google_pubsub_schema": googlePubsubSchema, - "google_pubsub_subscription": googlePubsubSubscription, - "google_pubsub_topic": googlePubsubTopic, - "google_pubsub_topic_iam_binding": googlePubsubTopicIam, - "google_pubsub_topic_iam_member": googlePubsubTopicIam, - "google_pubsub_topic_iam_policy": googlePubsubTopicIam, - "google_redis_instance": googleRedisInstance, - "google_secret_manager_secret": googleSecretManagerSecret, - "google_secret_manager_secret_iam_binding": googleSecretManagerSecretIam, - "google_secret_manager_secret_iam_member": googleSecretManagerSecretIam, - "google_secret_manager_secret_iam_policy": googleSecretManagerSecretIam, - "google_secret_manager_secret_version": googleSecretManagerSecretVersion, - "google_service_account": googleServiceAccount, - "google_service_account_iam_binding": googleServiceAccountIamBinding, - "google_service_account_iam_member": googleServiceAccountIamMember, - "google_service_account_iam_policy": googleServiceAccountIamPolicy, - "google_service_account_key": googleServiceAccountKey, - "google_service_directory_endpoint": googleServiceDirectoryEndpoint, - "google_service_directory_namespace": googleServiceDirectoryNamespace, - "google_service_directory_namespace_iam_binding": googleServiceDirectoryNamespaceIamBinding, - "google_service_directory_namespace_iam_member": googleServiceDirectoryNamespaceIamMember, - "google_service_directory_namespace_iam_policy": googleServiceDirectoryNamespaceIamPolicy, - "google_service_directory_service": googleServiceDirectoryService, - "google_service_directory_service_iam_binding": googleServiceDirectoryServiceIamBinding, - "google_service_directory_service_iam_member": googleServiceDirectoryServiceIamMember, - "google_service_directory_service_iam_policy": googleServiceDirectoryServiceIamPolicy, - "google_service_networking_connection": googleServiceNetworkingConnection, - "google_sourcerepo_repository": googleSourcerepoRepository, - "google_spanner_database": GoogleSpannerDatabase, - "google_spanner_database_iam_binding": GoogleSpannerDatabaseIam, - "google_spanner_database_iam_member": GoogleSpannerDatabaseIam, - "google_spanner_database_iam_policy": GoogleSpannerDatabaseIam, - "google_spanner_instance": GoogleSpannerInstance, - "google_spanner_instance_iam_binding": GoogleSpannerInstanceIam, - "google_spanner_instance_iam_member": GoogleSpannerInstanceIam, - "google_spanner_instance_iam_policy": GoogleSpannerInstanceIam, - "google_sql_database": googleSQLDatabase, - "google_sql_database_instance": googleSQLDatabaseInstance, - "google_sql_user": googleSQLUser, - "google_storage_bucket": googleStorageBucket, - "google_storage_bucket_access_control": googleStorageBucketAccessControl, - "google_storage_bucket_acl": googleStorageBucketACL, - "google_storage_bucket_iam_binding": googleStorageBucketIamBinding, - "google_storage_bucket_iam_member": googleStorageBucketIamMember, - "google_storage_bucket_iam_policy": googleStorageBucketIamPolicy, - "google_storage_bucket_object": googleStorageBucketObject, - "google_storage_default_object_access_control": googleStorageDefaultObjectAccessControl, - "google_storage_default_object_acl": googleStorageDefaultObjectACL, - "google_storage_hmac_key": googleStorageHmacKey, - "google_storage_insights_report_config": googleStorageInsightsReportConfig, - "google_storage_object_access_control": googleStorageObjectAccessControl, - "google_vertex_ai_dataset": googleVertexAiDataset, - "google_vertex_ai_endpoint": googleVertexAiEndpoint, - "google_vertex_ai_endpoint_iam_binding": googleVertexAiEndpointIam, - "google_vertex_ai_endpoint_iam_member": googleVertexAiEndpointIam, - "google_vertex_ai_endpoint_iam_policy": googleVertexAiEndpointIam, - "google_vertex_ai_feature_group": googleVertexAiFeatureGroup, - "google_vertex_ai_feature_group_feature": googleVertexAiFeatureGroupFeature, - "google_vertex_ai_feature_online_store": googleVertexAiFeatureOnlineStore, - "google_vertex_ai_feature_online_store_featureview": googleVertexAiFeatureOnlineStoreFeatureview, - "google_vertex_ai_featurestore": googleVertexAiFeaturestore, - "google_vertex_ai_featurestore_entitytype": googleVertexAiFeaturestoreEntitytype, - "google_vertex_ai_featurestore_entitytype_feature": googleVertexAiFeaturestoreEntitytypeFeature, - "google_vertex_ai_featurestore_entitytype_iam_binding": googleVertexAiFeaturestoreEntitytypeIam, - "google_vertex_ai_featurestore_entitytype_iam_member": googleVertexAiFeaturestoreEntitytypeIam, - "google_vertex_ai_featurestore_entitytype_iam_policy": googleVertexAiFeaturestoreEntitytypeIam, - "google_vertex_ai_featurestore_iam_binding": googleVertexAiFeaturestoreIam, - "google_vertex_ai_featurestore_iam_member": googleVertexAiFeaturestoreIam, - "google_vertex_ai_featurestore_iam_policy": googleVertexAiFeaturestoreIam, - "google_vertex_ai_index": googleVertexAiIndex, - "google_vertex_ai_index_endpoint": googleVertexAiIndexEndpoint, - "google_vertex_ai_metadata_store": googleVertexAiMetadataStore, - "google_vertex_ai_tensorboard": googleVertexAiTensorboard, - "google_bigquery_analytics_hub_data_exchange": googleBigqueryAnalyticsHubDataExchange, - "google_bigquery_analytics_hub_data_exchange_iam_binding": googleBigqueryAnalyticsHubDataExchangeIam, - "google_bigquery_analytics_hub_data_exchange_iam_member": googleBigqueryAnalyticsHubDataExchangeIam, - "google_bigquery_analytics_hub_data_exchange_iam_policy": googleBigqueryAnalyticsHubDataExchangeIam, - "google_bigquery_analytics_hub_listing": googleBigqueryAnalyticsHubListing, - "google_bigquery_analytics_hub_listing_iam_binding": googleBigqueryAnalyticsHubListingIam, - "google_bigquery_analytics_hub_listing_iam_member": googleBigqueryAnalyticsHubListingIam, - "google_bigquery_analytics_hub_listing_iam_policy": googleBigqueryAnalyticsHubListingIam, - "google_bigquery_bi_reservation": googleBigqueryBiReservation, - "google_bigquery_capacity_commitment": googleBigqueryCapacityCommitment, - "google_bigquery_connection": googleBigqueryConnection, - "google_bigquery_connection_iam_binding": googleBigqueryConnectionIam, - "google_bigquery_connection_iam_member": googleBigqueryConnectionIam, - "google_bigquery_connection_iam_policy": googleBigqueryConnectionIam, - "google_bigquery_data_transfer_config": googleBigqueryDataTransferConfig, - "google_bigquery_dataset_iam_binding": googleBigqueryDatasetIam, - "google_bigquery_dataset_iam_member": googleBigqueryDatasetIam, - "google_bigquery_dataset_iam_policy": googleBigqueryDatasetIam, - "google_bigquery_reservation": googleBigqueryReservation, - "google_bigquery_reservation_assignment": googleBigqueryReservationAssignment, - "google_bigquery_routine": googleBigqueryRoutine, - "google_bigquery_table_iam_binding": googleBigqueryTableIam, - "google_bigquery_table_iam_member": googleBigqueryTableIam, - "google_bigquery_table_iam_policy": googleBigqueryTableIam, - } -) +var gCPTfLookup = map[string]interface{}{ + "backend": gcsBackend, + + "google_access_context_manager_access_level": googleAccessContextManagerAccessLevel, + "google_access_context_manager_access_levels": googleAccessContextManagerAccessLevels, + "google_access_context_manager_access_policy": googleAccessContextManagerAccessPolicy, + "google_access_context_manager_access_policy_iam_binding": googleAccessContextManagerAccessPolicyIam, + "google_access_context_manager_access_policy_iam_member": googleAccessContextManagerAccessPolicyIam, + "google_access_context_manager_access_policy_iam_policy": googleAccessContextManagerAccessPolicyIam, + "google_access_context_manager_authorized_orgs_desc": googleAccessContextManagerAuthorizedOrgsDesc, + "google_access_context_manager_gcp_user_access_binding": googleAccessContextManagerGcpUserAccessBinding, + "google_access_context_manager_service_perimeter": googleAccessContextManagerServicePerimeter, + "google_access_context_manager_service_perimeters": googleAccessContextManagerServicePerimeters, + "google_alloydb_backup": googleAlloydbBackup, + "google_alloydb_cluster": googleAlloydbCluster, + "google_alloydb_instance": googleAlloydbInstance, + "google_alloydb_user": googleAlloydbUser, + "google_api_gateway_api": googleAPIGatewayAPI, + "google_api_gateway_api_config": googleAPIGatewayAPIConfig, + "google_api_gateway_api_config_iam_binding": googleAPIGatewayAPIConfigIam, + "google_api_gateway_api_config_iam_member": googleAPIGatewayAPIConfigIam, + "google_api_gateway_api_config_iam_policy": googleAPIGatewayAPIConfigIam, + "google_api_gateway_api_iam_binding": googleAPIGatewayAPIIam, + "google_api_gateway_api_iam_member": googleAPIGatewayAPIIam, + "google_api_gateway_api_iam_policy": googleAPIGatewayAPIIam, + "google_api_gateway_gateway": googleAPIGatewayGateway, + "google_api_gateway_gateway_iam_binding": googleAPIGatewayGatewayIam, + "google_api_gateway_gateway_iam_member": googleAPIGatewayGatewayIam, + "google_api_gateway_gateway_iam_policy": googleAPIGatewayGatewayIam, + "google_apigee_environment_iam_binding": googleApigeeEnvironmentIamBinding, + "google_apigee_environment_iam_member": googleApigeeEnvironmentIamMember, + "google_apigee_environment_iam_policy": googleApigeeEnvironmentIamPolicy, + "google_apihub_api_hub_instance": googleApihubInstance, + "google_apihub_curation": googleApihubCuration, + "google_apihub_host_project_registration": googleApihubHostProjectRegistration, + "google_apihub_plugin": googleApihubPlugin, + "google_apihub_plugin_instance": googleApihubPluginInstance, + "google_apphub_application": googleApphubApplication, + "google_apphub_service": googleApphubService, + "google_apphub_service_project_attachment": googleApphubServiceProjectAttachment, + "google_apphub_workload": googleApphubWorkload, + "google_artifact_registry_repository": googleArtifactRegistryRepository, + "google_artifact_registry_repository_iam_binding": googleArtifactRegistryRepositoryIamBinding, + "google_artifact_registry_repository_iam_member": googleArtifactRegistryRepositoryIamMember, + "google_artifact_registry_repository_iam_policy": googleArtifactRegistryRepositoryIamPolicy, + "google_backup_dr_backup_plan": googleBackupDRBackupPlan, + "google_backup_dr_backup_plan_association": googleBackupDRBackupPlanAssociation, + "google_backup_dr_backup_vault": googleBackupDRBackupVault, + "google_backup_dr_management_server": googleBackupDRManagementServer, + "google_backup_dr_service_config": googleBackupDRServiceConfig, + "google_beyondcorp_app_connection": googleBeyondcorpAppConnection, + "google_beyondcorp_app_connector": googleBeyondcorpAppConnector, + "google_beyondcorp_app_gateway": googleBeyondcorpAppGateway, + "google_beyondcorp_application": googleBeyondcorpApplication, + "google_beyondcorp_application_iam_binding": googleBeyondcorpApplicationIamBinding, + "google_beyondcorp_application_iam_member": googleBeyondcorpApplicationIamMember, + "google_beyondcorp_application_iam_policy": googleBeyondcorpApplicationIamPolicy, + "google_beyondcorp_security_gateway": googleBeyondcorpSecurityGateway, + "google_beyondcorp_security_gateway_application": googleBeyondcorpSecurityGatewayApplication, + "google_beyondcorp_security_gateway_application_iam_binding": googleBeyondcorpSecurityGatewayApplicationIamBinding, + "google_beyondcorp_security_gateway_application_iam_member": googleBeyondcorpSecurityGatewayApplicationIamMember, + "google_beyondcorp_security_gateway_application_iam_policy": googleBeyondcorpSecurityGatewayApplicationIamPolicy, + "google_beyondcorp_security_gateway_iam_binding": googleBeyondcorpSecurityGatewayIamBinding, + "google_beyondcorp_security_gateway_iam_member": googleBeyondcorpSecurityGatewayIamMember, + "google_beyondcorp_security_gateway_iam_policy": googleBeyondcorpSecurityGatewayIamPolicy, + "google_biglake_catalog": googleBiglakeCatalog, + "google_biglake_database": googleBiglakeDatabase, + "google_biglake_table": googleBiglakeTable, + "google_bigquery_analytics_hub_data_exchange": googleBigqueryAnalyticsHubDataExchange, + "google_bigquery_analytics_hub_data_exchange_iam_binding": googleBigqueryAnalyticsHubDataExchangeIam, + "google_bigquery_analytics_hub_data_exchange_iam_member": googleBigqueryAnalyticsHubDataExchangeIam, + "google_bigquery_analytics_hub_data_exchange_iam_policy": googleBigqueryAnalyticsHubDataExchangeIam, + "google_bigquery_analytics_hub_listing": googleBigqueryAnalyticsHubListing, + "google_bigquery_analytics_hub_listing_iam_binding": googleBigqueryAnalyticsHubListingIam, + "google_bigquery_analytics_hub_listing_iam_member": googleBigqueryAnalyticsHubListingIam, + "google_bigquery_analytics_hub_listing_iam_policy": googleBigqueryAnalyticsHubListingIam, + "google_bigquery_analytics_hub_listing_subscription": googleBigqueryAnalyticsHubListingSubscription, + "google_bigquery_bi_reservation": googleBigqueryBiReservation, + "google_bigquery_capacity_commitment": googleBigqueryCapacityCommitment, + "google_bigquery_connection": googleBigqueryConnection, + "google_bigquery_connection_iam_binding": googleBigqueryConnectionIam, + "google_bigquery_connection_iam_member": googleBigqueryConnectionIam, + "google_bigquery_connection_iam_policy": googleBigqueryConnectionIam, + "google_bigquery_data_transfer_config": googleBigqueryDataTransferConfig, + "google_bigquery_datapolicy_data_policy": googleBigqueryDatapolicyDataPolicy, + "google_bigquery_datapolicy_data_policy_iam_binding": googleBigqueryDatapolicyDataPolicyIamBinding, + "google_bigquery_datapolicy_data_policy_iam_member": googleBigqueryDatapolicyDataPolicyIamMember, + "google_bigquery_datapolicy_data_policy_iam_policy": googleBigqueryDatapolicyDataPolicyIamPolicy, + "google_bigquery_dataset": googleBigqueryDataset, + "google_bigquery_dataset_access": googleBigqueryDatasetAccess, + "google_bigquery_dataset_iam_binding": googleBigqueryDatasetIam, + "google_bigquery_dataset_iam_member": googleBigqueryDatasetIam, + "google_bigquery_dataset_iam_policy": googleBigqueryDatasetIam, + "google_bigquery_job": googleBigqueryJob, + "google_bigquery_reservation": googleBigqueryReservation, + "google_bigquery_reservation_assignment": googleBigqueryReservationAssignment, + "google_bigquery_routine": googleBigqueryRoutine, + "google_bigquery_row_access_policy": googleBigqueryRowAccessPolicy, + "google_bigquery_table": googleBigQueryTable, + "google_bigquery_table_iam_binding": googleBigqueryTableIam, + "google_bigquery_table_iam_member": googleBigqueryTableIam, + "google_bigquery_table_iam_policy": googleBigqueryTableIam, + "google_bigtable_app_profile": googleBigtableAppProfile, + "google_bigtable_authorized_view": googleBigtableAuthorizedView, + "google_bigtable_gc_policy": googleBigtableGcPolicy, + "google_bigtable_instance": googleBigtableInstance, + "google_bigtable_instance_iam_binding": googleBigTableInstanceIam, + "google_bigtable_instance_iam_member": googleBigTableInstanceIam, + "google_bigtable_instance_iam_policy": googleBigTableInstanceIam, + "google_bigtable_logical_view": googleBigtableLogicalView, + "google_bigtable_materialized_view": googleBigtableMaterializedView, + "google_bigtable_schema_bundle": googleBigtableSchemaBundle, + "google_bigtable_table": googleBigtableTable, + "google_bigtable_table_iam_binding": googleBigTableTableIam, + "google_bigtable_table_iam_member": googleBigTableTableIam, + "google_bigtable_table_iam_policy": googleBigTableTableIam, + "google_billing_account_iam_binding": googleBillingAccountIamBinding, + "google_billing_account_iam_member": googleBillingAccountIamMember, + "google_billing_account_iam_policy": googleBillingAccountIamPolicy, + "google_billing_budget": googleBillingBudget, + "google_billing_project_info": googleBillingProjectInfo, + "google_binary_authorization_attestor_iam_binding": googleBinaryAuthorizationAttestorIamBinding, + "google_binary_authorization_attestor_iam_member": googleBinaryAuthorizationAttestorIamMember, + "google_binary_authorization_attestor_iam_policy": googleBinaryAuthorizationAttestorIamPolicy, + "google_chronicle_data_access_label": googleChronicleDataAccessLabel, + "google_chronicle_data_access_scope": googleChronicleDataAccessScope, + "google_chronicle_reference_list": googleChronicleReferenceList, + "google_chronicle_retrohunt": googleChronicleRetrohunt, + "google_chronicle_rule": googleChronicleRule, + "google_chronicle_rule_deployment": googleChronicleRuleDeployment, + "google_chronicle_watchlist": googleChronicleWatchlist, + "google_cloud_run_domain_mapping": googleCloudRunDomainMapping, + "google_cloud_run_service": googleCloudRunService, + "google_cloud_run_service_iam_binding": googleCloudRunServiceIamBinding, + "google_cloud_run_service_iam_member": googleCloudRunServiceIamMember, + "google_cloud_run_service_iam_policy": googleCloudRunServiceIamPolicy, + "google_cloud_run_v2_job": googleCloudRunV2Job, + "google_cloud_run_v2_job_iam_binding": googleCloudRunV2JobIam, + "google_cloud_run_v2_job_iam_member": googleCloudRunV2JobIam, + "google_cloud_run_v2_job_iam_policy": googleCloudRunV2JobIam, + "google_cloud_run_v2_service": googleCloudRunV2Service, + "google_cloud_run_v2_service_iam_binding": googleCloudRunV2ServiceIam, + "google_cloud_run_v2_service_iam_member": googleCloudRunV2ServiceIam, + "google_cloud_run_v2_service_iam_policy": googleCloudRunV2ServiceIam, + "google_cloud_run_v2_worker_pool": googleCloudRunV2WorkerPool, + "google_cloud_run_v2_worker_pool_iam_binding": googleCloudRunV2WorkerPoolIamBinding, + "google_cloud_run_v2_worker_pool_iam_member": googleCloudRunV2WorkerPoolIamMember, + "google_cloud_run_v2_worker_pool_iam_policy": googleCloudRunV2WorkerPoolIamPolicy, + "google_cloud_scheduler_job": googleCloudSchedulerJob, + "google_cloud_tasks_queue_iam_binding": googleCloudTasksQueueIamBinding, + "google_cloud_tasks_queue_iam_member": googleCloudTasksQueueIamMember, + "google_cloud_tasks_queue_iam_policy": googleCloudTasksQueueIamPolicy, + "google_cloudbuild_trigger": googleCloudbuildTrigger, + "google_cloudbuildv2_connection": googleCloudbuildv2Connection, + "google_cloudbuildv2_connection_iam_binding": googleCloudbuildv2ConnectionIamBinding, + "google_cloudbuildv2_connection_iam_member": googleCloudbuildv2ConnectionIamMember, + "google_cloudbuildv2_connection_iam_policy": googleCloudbuildv2ConnectionIamPolicy, + "google_cloudbuildv2_repository": googleCloudbuildv2Repository, + "google_clouddeploy_custom_target_type_iam_binding": googleClouddeployCustomTargetTypeIamBinding, + "google_clouddeploy_custom_target_type_iam_member": googleClouddeployCustomTargetTypeIamMember, + "google_clouddeploy_custom_target_type_iam_policy": googleClouddeployCustomTargetTypeIamPolicy, + "google_clouddeploy_delivery_pipeline_iam_binding": googleClouddeployDeliveryPipelineIamBinding, + "google_clouddeploy_delivery_pipeline_iam_member": googleClouddeployDeliveryPipelineIamMember, + "google_clouddeploy_delivery_pipeline_iam_policy": googleClouddeployDeliveryPipelineIamPolicy, + "google_clouddeploy_target_iam_binding": googleClouddeployTargetIamBinding, + "google_clouddeploy_target_iam_member": googleClouddeployTargetIamMember, + "google_clouddeploy_target_iam_policy": googleClouddeployTargetIamPolicy, + "google_cloudfunctions2_function": googleCloudfunction2Function, + "google_cloudfunctions2_function_iam_binding": googleCloudfunction2FunctionIamBinding, + "google_cloudfunctions2_function_iam_member": googleCloudfunction2FunctionIamMember, + "google_cloudfunctions2_function_iam_policy": googleCloudfunction2FunctionIamPolicy, + "google_cloudfunctions_function": googleCloudfunctionsFunction, + "google_cloudfunctions_function_iam_binding": googleCloudfunctionsFunctionIamBinding, + "google_cloudfunctions_function_iam_member": googleCloudfunctionsFunctionIamPolicy, + "google_cloudfunctions_function_iam_policy": googleCloudfunctionsFunctionIamPolicy, + "google_colab_runtime_template_iam_binding": googleColabRuntimeTemplateIamBinding, + "google_colab_runtime_template_iam_member": googleColabRuntimeTemplateIamMember, + "google_colab_runtime_template_iam_policy": googleColabRuntimeTemplateIamPolicy, + "google_composer_environment": googleComposerEnvironment, + "google_composer_user_workloads_config_map": googleComposerUserWorkloadsConfigMap, + "google_composer_user_workloads_secret": googleComposerUserWorkloadsSecret, + "google_compute_address": googleComputeAddress, + "google_compute_backend_bucket": googleComputeBackendBucket, + "google_compute_backend_bucket_iam_binding": googleComputeBackendBucketIamBinding, + "google_compute_backend_bucket_iam_member": googleComputeBackendBucketIamMember, + "google_compute_backend_bucket_iam_policy": googleComputeBackendBucketIamPolicy, + "google_compute_backend_service": googleComputeBackendService, + "google_compute_backend_service_iam_binding": googleComputeBackendServiceIamBinding, + "google_compute_backend_service_iam_member": googleComputeBackendServiceIamMember, + "google_compute_backend_service_iam_policy": googleComputeBackendServiceIamPolicy, + "google_compute_disk_iam_binding": googleComputeDiskIamBinding, + "google_compute_disk_iam_member": googleComputeDiskIamMember, + "google_compute_disk_iam_policy": googleComputeDiskIamPolicy, + "google_compute_firewall": googleComputeFirewall, + "google_compute_forwarding_rule": googleComputeForwardingRule, + "google_compute_global_address": googleComputeGlobalAddress, + "google_compute_global_forwarding_rule": googleComputeGlobalForwardingRule, + "google_compute_global_network_endpoint_group": googleComputeGlobalNetworkEndpointGroup, + "google_compute_health_check": googleComputeHealthcheck, + "google_compute_http_health_check": googleComputeHttpHealthCheck, + "google_compute_https_health_check": googleComputeHttpsHealthCheck, + "google_compute_image_iam_binding": googleComputeImageIamBinding, + "google_compute_image_iam_member": googleComputeImageIamMember, + "google_compute_image_iam_policy": googleComputeImageIamPolicy, + "google_compute_instance": googleComputeInstance, + "google_compute_instance_iam_binding": googleComputeInstanceIamBinding, + "google_compute_instance_iam_member": googleComputeInstanceIamMember, + "google_compute_instance_iam_policy": googleComputeInstanceIamPolicy, + "google_compute_instance_template": googleComputeInstanceTemplate, + "google_compute_instance_template_iam_binding": googleComputeInstanceTemplateIamBinding, + "google_compute_instance_template_iam_member": googleComputeInstanceTemplateIamMember, + "google_compute_instance_template_iam_policy": googleComputeInstanceTemplateIamPolicy, + "google_compute_instant_snapshot_iam_binding": googleComputeInstanceSnapshotIamBinding, + "google_compute_instant_snapshot_iam_member": googleComputeInstanceSnapshotIamMember, + "google_compute_instant_snapshot_iam_policy": googleComputeInstanceSnapshotIamPolicy, + "google_compute_machine_image_iam_binding": googleComputeMachineImageIamBinding, + "google_compute_machine_image_iam_member": googleComputeMachineImageIamMember, + "google_compute_machine_image_iam_policy": googleComputeMachineImageIamPolicy, + "google_compute_network": googleComputeNetwork, + "google_compute_network_attachment": googleComputeNetworkAttachment, + "google_compute_network_endpoint_group": googleComputeNetworkEndpointGroup, + "google_compute_project_metadata_item": googleComputeProjectMetadataItem, + "google_compute_region_backend_service": googleComputeRgionBackendService, + "google_compute_region_backend_service_iam_binding": googleComputeRegionBackendServiceIamBinding, + "google_compute_region_backend_service_iam_member": googleComputeRegionBackendServiceIamMember, + "google_compute_region_backend_service_iam_policy": googleComputeRegionBackendServiceIamPolicy, + "google_compute_region_disk_iam_binding": googleComputeRegionDiskIamBinding, + "google_compute_region_disk_iam_member": googleComputeRegionDiskIamMember, + "google_compute_region_disk_iam_policy": googleComputeRegionDiskIamPolicy, + "google_compute_region_health_check": googleComputeRegioHealthCheck, + "google_compute_region_network_endpoint_group": googleComputeRegionNetworkEndpointGroup, + "google_compute_region_ssl_certificate": googleComputeRegionSslCertificate, + "google_compute_region_target_http_proxy": googleComputeRegionTargetHttpProxy, + "google_compute_region_target_https_proxy": googleComputeRegionTargetHttpsProxy, + "google_compute_region_target_tcp_proxy": googleComputeRegionTargetTcpProxy, + "google_compute_region_url_map": googleComputeRegionUrlMap, + "google_compute_security_policy": googleComputeSecurityPolicy, + "google_compute_snapshot_iam_binding": googleComputeSnapshotIamBinding, + "google_compute_snapshot_iam_member": googleComputeSnapshotIamMember, + "google_compute_snapshot_iam_policy": googleComputeSnapshotIamPolicy, + "google_compute_storage_pool_iam_binding": googleComputeStoragePoolIamBinding, + "google_compute_storage_pool_iam_member": googleComputeStoragePoolIamMember, + "google_compute_storage_pool_iam_policy": googleComputeStoragePoolIamPolicy, + "google_compute_subnetwork": googleComputeSubnetwork, + "google_compute_subnetwork_iam_binding": googleComputeSubnetworkIamBinding, + "google_compute_subnetwork_iam_member": googleComputeSubnetworkIamMember, + "google_compute_subnetwork_iam_policy": googleComputeSubnetworkIamPolicy, + "google_compute_target_http_proxy": googleComputeTargetHttpProxy, + "google_compute_target_https_proxy": googleComputeTargetHttpsProxy, + "google_compute_url_map": googleComputeUrlMap, + "google_contact_center_insights_analysis_rule": googleContactCenterInsightsAnalysisRule, + "google_contact_center_insights_view": googleContactCenterInsightsView, + "google_container_analysis_note_iam_binding": googleContainerAnalysisNoteIamBinding, + "google_container_analysis_note_iam_member": googleContainerAnalysisNoteIamMember, + "google_container_analysis_note_iam_policy": googleContainerAnalysisNoteIamPolicy, + "google_container_cluster": googleContainerCluster, + "google_container_node_pool": googleContainerNodePool, + "google_data_catalog_entry": googleDataCatalogEntry, + "google_data_catalog_entry_group": googleDataCatalogEntryGroup, + "google_data_catalog_entry_group_iam_binding": googleDataCatalogEntryGroupIamPolicy, + "google_data_catalog_entry_group_iam_member": googleDataCatalogEntryGroupIamMember, + "google_data_catalog_entry_group_iam_policy": googleDataCatalogEntryGroupIamPolicy, + "google_data_catalog_policy_tag": googleDataCatalogPolicyTag, + "google_data_catalog_policy_tag_iam_binding": googleDataCatalogPolicyTagIamPolicy, + "google_data_catalog_policy_tag_iam_member": googleDataCatalogPolicyTagIamMember, + "google_data_catalog_policy_tag_iam_policy": googleDataCatalogPolicyTagIamPolicy, + "google_data_catalog_tag": googleDataCatalogTag, + "google_data_catalog_tag_template": googleDataCatalogTagTemplate, + "google_data_catalog_tag_template_iam_binding": googleDataCatalogTagTemplateIamPolicy, + "google_data_catalog_tag_template_iam_member": googleDataCatalogTagTemplateIamPolicy, + "google_data_catalog_tag_template_iam_policy": googleDataCatalogTagTemplateIamPolicy, + "google_data_catalog_taxonomy": googleDataCatalogTaxonomy, + "google_data_catalog_taxonomy_iam_binding": googleDataCatalogTaxonomyIamBinding, + "google_data_catalog_taxonomy_iam_member": googleDataCatalogTaxonomyIamMember, + "google_data_catalog_taxonomy_iam_policy": googleDataCatalogTaxonomyIamPolicy, + "google_data_fusion_instance_iam_binding": googleDataFusionInstanceIamBinding, + "google_data_fusion_instance_iam_member": googleDataFusionInstanceIamMember, + "google_data_fusion_instance_iam_policy": googleDataFusionInstanceIamPolicy, + "google_dataflow_job": googleDataflowJob, + "google_dataform_repository": googleDataformRepository, + "google_dataform_repository_iam_binding": googleDataformRepositoryIamBinding, + "google_dataform_repository_iam_member": googleDataformRepositoryIamMember, + "google_dataform_repository_iam_policy": googleDataformRepositoryIamPolicy, + "google_dataform_repository_release_config": googleDataformRepositoryReleaseConfig, + "google_dataform_repository_workflow_config": googleDataformRepositoryWorkflowConfig, + "google_dataplex_aspect_type": googleDataplexAspectType, + "google_dataplex_aspect_type_iam_binding": googleDataplexAspectTypeIamBinding, + "google_dataplex_aspect_type_iam_member": googleDataplexAspectTypeIamMember, + "google_dataplex_aspect_type_iam_policy": googleDataplexAspectTypeIamPolicy, + "google_dataplex_asset": googleDataplexAsset, + "google_dataplex_asset_iam_binding": googleDataplexAssetIamBinding, + "google_dataplex_asset_iam_member": googleDataplexAssetIamMember, + "google_dataplex_asset_iam_policy": googleDataplexAssetIamPolicy, + "google_dataplex_datascan": googleDataplexDatascan, + "google_dataplex_datascan_iam_binding": googleDataplexDatascanIamBinding, + "google_dataplex_datascan_iam_member": googleDataplexDatascanIamMember, + "google_dataplex_datascan_iam_policy": googleDataplexDatascanIamPolicy, + "google_dataplex_entry": googleDataplexEntry, + "google_dataplex_entry_group": googleDataplexEntryGroup, + "google_dataplex_entry_group_iam_binding": googleDataplexEntryGroupIamBinding, + "google_dataplex_entry_group_iam_member": googleDataplexEntryGroupIamMember, + "google_dataplex_entry_group_iam_policy": googleDataplexEntryGroupIamPolicy, + "google_dataplex_entry_type": googleDataplexEntryType, + "google_dataplex_entry_type_iam_binding": googleDataplexEntryTypeIamBinding, + "google_dataplex_entry_type_iam_member": googleDataplexEntryTypeIamMember, + "google_dataplex_entry_type_iam_policy": googleDataplexEntryTypeIamPolicy, + "google_dataplex_glossary": googleDataplexGlossary, + "google_dataplex_glossary_category": googleDataplexGlossaryCategory, + "google_dataplex_glossary_iam_binding": googleDataplexGlossaryIamBinding, + "google_dataplex_glossary_iam_member": googleDataplexGlossaryIamMember, + "google_dataplex_glossary_iam_policy": googleDataplexGlossaryIamPolicy, + "google_dataplex_glossary_term": googleDataplexGlossaryTerm, + "google_dataplex_lake": googleDataplexLake, + "google_dataplex_lake_iam_binding": googleDataplexLakeIamBinding, + "google_dataplex_lake_iam_member": googleDataplexLakeIamMember, + "google_dataplex_lake_iam_policy": googleDataplexLakeIamPolicy, + "google_dataplex_task": googleDataplexTask, + "google_dataplex_task_iam_binding": googleDataplexLakeIamBinding, + "google_dataplex_task_iam_member": googleDataplexTaskIamMember, + "google_dataplex_task_iam_policy": googleDataplexTaskIamPolicy, + "google_dataplex_zone": googleDataplexZone, + "google_dataplex_zone_iam_binding": googleDataplexZoneIamBinding, + "google_dataplex_zone_iam_member": googleDataplexZoneIamMember, + "google_dataplex_zone_iam_policy": googleDataplexLakeIamPolicy, + "google_dataproc_autoscaling_policy": googleDataprocAutoscalingPolicy, + "google_dataproc_autoscaling_policy_iam_binding": googleDataprocAutoscalingPolicyIamBinding, + "google_dataproc_autoscaling_policy_iam_member": googleDataprocAutoscalingPolicyIamMember, + "google_dataproc_autoscaling_policy_iam_policy": googleDataprocAutoscalingPolicyIamPolicy, + "google_dataproc_batch": googleDataprocBatch, + "google_dataproc_cluster": googleDataprocCluster, + "google_dataproc_cluster_iam_binding": googleDataprocClusterIamBinding, + "google_dataproc_cluster_iam_member": googleDataprocClusterIamMember, + "google_dataproc_cluster_iam_policy": googleDataprocClusterIamPolicy, + "google_dataproc_job": googleDataprocJob, + "google_dataproc_job_iam_binding": googleDataprocJobIamBinding, + "google_dataproc_job_iam_member": googleDataprocJobIamMember, + "google_dataproc_job_iam_policy": googleDataprocJobIamPolicy, + "google_dataproc_metastore_database_iam_binding": googleDataprocMetastoreDatabaseIamBinding, + "google_dataproc_metastore_database_iam_member": googleDataprocMetastoreDatabaseIamMember, + "google_dataproc_metastore_database_iam_policy": googleDataprocMetastoreDatabaseIamPolicy, + "google_dataproc_metastore_federation_iam_binding": googleDataprocMetastoreFederationIamBinding, + "google_dataproc_metastore_federation_iam_member": googleDataprocMetastoreFederationIamMember, + "google_dataproc_metastore_federation_iam_policy": googleDataprocMetastoreFederationIamPolicy, + "google_dataproc_metastore_service_iam_binding": googleDataprocMetastoreServiceIamBinding, + "google_dataproc_metastore_service_iam_member": googleDataprocMetastoreServiceIamMember, + "google_dataproc_metastore_service_iam_policy": googleDataprocMetastoreServiceIamPolicy, + "google_dataproc_metastore_table_iam_binding": googleDataprocMetastoreTableIamBinding, + "google_dataproc_metastore_table_iam_member": googleDataprocMetastoreTableIamMember, + "google_dataproc_metastore_table_iam_policy": googleDataprocMetastoreTableIamPolicy, + "google_dataproc_session_template": googleDataprocSessionTemplate, + "google_dataproc_workflow_template": googleDataprocWorkflowTemplate, + "google_default_service_accounts": googleDefaultServiceAccounts, + "google_deployment_manager_deployment": googleDeploymentManagerDeployment, + "google_developer_connect_account_connector": googleDeveloperConnectAccountConnector, + "google_developer_connect_connection": googleDeveloperConnectConnection, + "google_developer_connect_git_repository_link": googleDeveloperConnectGitRepositoryLink, + "google_dialogflow_agent": googleDialogflowAgent, + "google_dialogflow_conversation_profile": googleDialogflowConversationProfile, + "google_dialogflow_cx_agent": googleDialogflowCxAgent, + "google_dialogflow_cx_entity_type": googleDialogflowCxEntityType, + "google_dialogflow_cx_environment": googleDialogflowCxEnvironment, + "google_dialogflow_cx_flow": googleDialogflowCxFlow, + "google_dialogflow_cx_generative_settings": googleDialogflowCxGenerativeSettings, + "google_dialogflow_cx_generator": googleDialogflowCxGenerator, + "google_dialogflow_cx_intent": googleDialogflowCxIntent, + "google_dialogflow_cx_page": googleDialogflowCxPage, + "google_dialogflow_cx_playbook": googleDialogflowCxPlaybook, + "google_dialogflow_cx_security_settings": googleDialogflowCxSecuritySettings, + "google_dialogflow_cx_tool": googleDialogflowCxTool, + "google_dialogflow_cx_version": googleDialogflowCxVersion, + "google_dialogflow_cx_webhook": googleDialogflowCxWebhook, + "google_dialogflow_encryption_spec": googleDialogflowEncryptionSpec, + "google_dialogflow_entity_type": googleDialogflowEntityType, + "google_dialogflow_fulfillment": googleDialogflowFulfillment, + "google_dialogflow_intent": googleDialogflowIntent, + "google_dns_managed_zone": googleDnsmanagedZone, + "google_dns_managed_zone_iam_binding": googleDNSManagedZoneIamBinding, + "google_dns_managed_zone_iam_member": googleDNSManagedZoneIamMember, + "google_dns_managed_zone_iam_policy": googleDNSManagedZoneIamPolicy, + "google_dns_policy": googleDNSPolicy, + "google_dns_record_set": googleDNSRecordSet, + "google_edgecontainer_cluster": googleEdgecontainerCluster, + "google_edgecontainer_node_pool": googleEdgecontainerNodePool, + "google_edgecontainer_vpn_connection": googleEdgecontainerVpnConnection, + "google_edgenetwork_interconnect_attachment": googleEdgecontainerInterconnectAttachment, + "google_edgenetwork_network": googleEdgecontainerNetwork, + "google_edgenetwork_subnet": googleEdgecontainerSubnet, + "google_endpoints_service_consumers_iam_binding": googleEndpointsServiceConsumersIamBinding, + "google_endpoints_service_consumers_iam_member": googleEndpointsServiceConsumersIamMember, + "google_endpoints_service_consumers_iam_policy": googleEndpointsServiceConsumersIamPolicy, + "google_endpoints_service_iam_binding": googleEndpointsServiceIamBinding, + "google_endpoints_service_iam_member": googleEndpointsServiceIamMember, + "google_endpoints_service_iam_policy": googleEndpointsServiceIamPolicy, + "google_eventarc_channel": googleEventarcChannel, + "google_eventarc_enrollment": googleEventarcEnrollment, + "google_eventarc_google_api_source": googleEventarcGoogleApiSource, + "google_eventarc_google_channel_config": googleEventarcGoogleChannelConfig, + "google_eventarc_message_bus": googleEventarcMessageBus, + "google_eventarc_pipeline": googleEventarcPipeline, + "google_eventarc_trigger": googleEventarcTrigger, + "google_firebase_android_app": googleFirebaseAndroidApp, + "google_firebase_apple_app": googleFirebaseAppleApp, + "google_firebase_database_instance": googleFirebaseDatabaseInstance, + "google_firebase_hosting_channel": googleFirebaseHostingSite, + "google_firebase_hosting_custom_domain": googleFirebaseHostingSite, + "google_firebase_hosting_release": googleFirebaseHostingSite, + "google_firebase_hosting_site": googleFirebaseHostingSite, + "google_firebase_hosting_version": googleFirebaseHostingSite, + "google_firebase_project": googleFirebaseProject, + "google_firebase_storage_bucket": googleFirebaseStorageBucket, + "google_firebase_web_app": googleFirebaseWebApp, + "google_firebaserules_release": googleFirebaserulesRelease, + "google_firebaserules_ruleset": googleFirebaserulesRuleset, + "google_folder_iam_binding": googleFolderIamBinding, + "google_folder_iam_member": googleFolderIamMember, + "google_folder_iam_policy": googleFolderIamPolicy, + "google_gemini_repository_group_iam_binding": googleGeminiRepositoryGroupIamBinding, + "google_gemini_repository_group_iam_member": googleGeminiRepositoryGroupIamMember, + "google_gemini_repository_group_iam_policy": googleGeminiRepositoryGroupIamPolicy, + "google_gke_backup_backup_plan_iam_binding": googleGkeBackupBackupPlanIamBinding, + "google_gke_backup_backup_plan_iam_member": googleGkeBackupBackupPlanIamMember, + "google_gke_backup_backup_plan_iam_policy": googleGkeBackupBackupPlanIamPolicy, + "google_gke_backup_restore_plan_iam_binding": googleGkeBackupRestorePlanIamBinding, + "google_gke_backup_restore_plan_iam_member": googleGkeBackupRestorePlanIamMember, + "google_gke_backup_restore_plan_iam_policy": googleGkeBackupRestorePlanIamPolicy, + "google_gke_hub_feature_iam_binding": googleGkeHubFeatureIamBinding, + "google_gke_hub_feature_iam_member": googleGkeHubFeatureIamMember, + "google_gke_hub_feature_iam_policy": googleGkeHubFeatureIamPolicy, + "google_gke_hub_membership_iam_binding": googleGkeHubMembershipIamBinding, + "google_gke_hub_membership_iam_member": googleGkeHubMembershipIamMember, + "google_gke_hub_membership_iam_policy": googleGkeHubMembershipIamPolicy, + "google_gke_hub_scope_iam_binding": googleGkeHubScopeIamBinding, + "google_gke_hub_scope_iam_member": googleGkeHubScopeIamMember, + "google_gke_hub_scope_iam_policy": googleGkeHubScopeIamPolicy, + "google_healthcare_consent_store_iam_binding": googleHealthcareConsentStoreIamBinding, + "google_healthcare_consent_store_iam_member": googleHealthcareConsentStoreIamMember, + "google_healthcare_consent_store_iam_policy": googleHealthcareConsentStoreIamPolicy, + "google_healthcare_dataset_iam_binding": googleHealthcareDatasetIamBinding, + "google_healthcare_dataset_iam_member": googleHealthcareDatasetIamMember, + "google_healthcare_dataset_iam_policy": googleHealthcareDatasetIamPolicy, + "google_healthcare_dicom_store_iam_binding": googleHealthcareDicomStoreIamBinding, + "google_healthcare_dicom_store_iam_member": googleHealthcareDicomStoreIamMember, + "google_healthcare_dicom_store_iam_policy": googleHealthcareDicomStoreIamPolicy, + "google_healthcare_fhir_store_iam_binding": googleHealthcareFhirStoreIamBinding, + "google_healthcare_fhir_store_iam_member": googleHealthcareFhirStoreIamMember, + "google_healthcare_fhir_store_iam_policy": googleHealthcareFhirStoreIamPolicy, + "google_healthcare_hl7_v2_store_iam_binding": googleHealthcareHl7V2StoreIamBinding, + "google_healthcare_hl7_v2_store_iam_member": googleHealthcareHl7V2StoreIamMember, + "google_healthcare_hl7_v2_store_iam_policy": googleHealthcareHl7V2StoreIamPolicy, + "google_iam_workforce_pool": googleIamWorkforcePool, + "google_iam_workforce_pool_iam_binding": googleIamWorkforcePoolIamBinding, + "google_iam_workforce_pool_iam_member": googleIamWorkforcePoolIamMember, + "google_iam_workforce_pool_iam_policy": googleIamWorkforcePoolIamPolicy, + "google_iam_workforce_pool_provider": googleIamWorkforcePoolProvider, + "google_iam_workforce_pool_provider_key": googleIamWorkforcePoolProviderKey, + "google_iam_workload_identity_pool": googleIamWorkloadIdentityPool, + "google_iam_workload_identity_pool_iam_binding": googleIamWorkloadIdentityPoolIamBinding, + "google_iam_workload_identity_pool_iam_member": googleIamWorkloadIdentityPoolIamMember, + "google_iam_workload_identity_pool_iam_policy": googleIamWorkloadIdentityPoolIamPolicy, + "google_iam_workload_identity_pool_provider": googleIamWorkloadIdentityPoolProvider, + "google_iap_app_engine_service_iam_binding": googleIapAppEngineServiceIamBinding, + "google_iap_app_engine_service_iam_member": googleIapAppEngineServiceIamMember, + "google_iap_app_engine_service_iam_policy": googleIapAppEngineServiceIamPolicy, + "google_iap_app_engine_version_iam_binding": googleIapAppEngineVersionIamBinding, + "google_iap_app_engine_version_iam_member": googleIapAppEngineVersionIamMember, + "google_iap_app_engine_version_iam_policy": googleIapAppEngineVersionIamPolicy, + "google_iap_tunnel_dest_group_iam_binding": googleIapTunnelDestGroupIamBinding, + "google_iap_tunnel_dest_group_iam_member": googleIapTunnelDestGroupIamMember, + "google_iap_tunnel_dest_group_iam_policy": googleIapTunnelDestGroupIamPolicy, + "google_iap_tunnel_iam_binding": googleIapTunnelIamBinding, + "google_iap_tunnel_iam_member": googleIapTunnelIamMember, + "google_iap_tunnel_iam_policy": googleIapTunnelIamPolicy, + "google_iap_tunnel_instance_iam_binding": googleIapTunnelInstanceIamBinding, + "google_iap_tunnel_instance_iam_member": googleIapTunnelInstanceIamMember, + "google_iap_tunnel_instance_iam_policy": googleIapTunnelInstanceIamPolicy, + "google_iap_web_backend_service_iam_binding": googleIapWebBackendServiceIamBinding, + "google_iap_web_backend_service_iam_member": googleIapWebBackendServiceIamMember, + "google_iap_web_backend_service_iam_policy": googleIapWebBackendServiceIamPolicy, + "google_iap_web_cloud_run_service_iam_binding": googleIapWebCloudRunServiceIamBinding, + "google_iap_web_cloud_run_service_iam_member": googleIapWebCloudRunServiceIamMember, + "google_iap_web_cloud_run_service_iam_policy": googleIapWebCloudRunServiceIamPolicy, + "google_iap_web_iam_binding": googleIapWebIamBinding, + "google_iap_web_iam_member": googleIapWebIamMember, + "google_iap_web_iam_policy": googleIapWebIamPolicy, + "google_iap_web_region_backend_service_iam_binding": googleIapWebRegionBackendServiceIamBinding, + "google_iap_web_region_backend_service_iam_member": googleIapWebRegionBackendServiceIamMember, + "google_iap_web_region_backend_service_iam_policy": googleIapWebRegionBackendServiceIamPolicy, + "google_iap_web_type_app_engine_iam_binding": googleIapWebTypeAppEngineIamBinding, + "google_iap_web_type_app_engine_iam_member": googleIapWebTypeAppEngineIamMember, + "google_iap_web_type_app_engine_iam_policy": googleIapWebTypeAppEngineIamPolicy, + "google_iap_web_type_compute_iam_binding": googleIapWebTypeComputeIamBinding, + "google_iap_web_type_compute_iam_member": googleIapWebTypeComputeIamMember, + "google_iap_web_type_compute_iam_policy": googleIapWebTypeComputeIamPolicy, + "google_kms_crypto_key": googleKmsCryptoKey, + "google_kms_crypto_key_iam_binding": googlekmsCryptoKeyIamBinding, + "google_kms_crypto_key_iam_member": googlekmsCryptoKeyIamMember, + "google_kms_crypto_key_iam_policy": googlekmsCryptoKeyIamPolicy, + "google_kms_crypto_key_version": googleKmsCryptoKeyVersions, + "google_kms_ekm_connection_iam_binding": googleKmsEkmConnectionIamBinding, + "google_kms_ekm_connection_iam_member": googleKmsEkmConnectionIamMember, + "google_kms_ekm_connection_iam_policy": googleKmsEkmConnectionIamPolicy, + "google_kms_key_handle": googleKmsKeyHandle, + "google_kms_key_ring": googleKmsKeyRing, + "google_kms_key_ring_iam_binding": googleKmsKeyRingIamBinding, + "google_kms_key_ring_iam_member": googleKmsKeyRingIamMember, + "google_kms_key_ring_iam_policy": googleKmsKeyRingIamPolicy, + "google_kms_key_ring_import_job": googleKmsKeyRingImportJob, + "google_kms_secret_ciphertext": googleKmsSecretCiphertext, + "google_logging_billing_account_exclusion": googleLoggingBillingAccountExclusion, + "google_logging_billing_account_sink": googleLoggingBillingAccountSink, + "google_logging_folder_exclusion": googleLoggingFolderExclusion, + "google_logging_folder_settings": googleLoggingFolderSettings, + "google_logging_folder_sink": googleLoggingFolderSink, + "google_logging_linked_dataset": googleLoggingLinkedDataset, + "google_logging_log_scope": googleLoggingLogScope, + "google_logging_log_view": googleLoggingLogView, + "google_logging_log_view_iam_binding": googleLoggingLogViewIamBinding, + "google_logging_log_view_iam_member": googleLoggingLogViewIamMember, + "google_logging_log_view_iam_policy": googleLoggingLogViewIamPolicy, + "google_logging_metric": googleLoggingMetric, + "google_logging_organization_exclusion": googleLoggingOrganizationExclusion, + "google_logging_organization_settings": googleLoggingOrganizationSettings, + "google_logging_organization_sink": googleLoggingOrganizationSink, + "google_logging_project_exclusion": googleLoggingProjectExclusion, + "google_logging_project_sink": googleLoggingProjectSink, + "google_managed_kafka_acl": googleManagedKafkaAcl, + "google_managed_kafka_cluster": googleManagedKafkaCluster, + "google_managed_kafka_connect_cluster": googleManagedKafkaConnectCluster, + "google_managed_kafka_connector": googleManagedKafkaConnector, + "google_managed_kafka_topic": googleManagedKafkaTopics, + "google_memcache_instance": googleMemcacheInstance, + "google_memorystore_instance": googleMemorystoreInstance, + "google_model_armor_floorsetting": googleModelArmorFloorsetting, + "google_model_armor_template": googleModelArmorTemplate, + "google_monitoring_alert_policy": googleMonitoringAlertPolicy, + "google_monitoring_custom_service": googleMonitoringCustomService, + "google_monitoring_dashboard": googleMonitoringDashboard, + "google_monitoring_group": googleMonitoringGroup, + "google_monitoring_metric_descriptor": googleMonitoringMetricDescriptor, + "google_monitoring_monitored_project": googleMonitoringMonitoredProject, + "google_monitoring_notification_channel": googleMonitoringNotificationChannel, + "google_monitoring_service": googleMonitoringService, + "google_monitoring_slo": googleMonitoringSLO, + "google_monitoring_uptime_check_config": googleMonitoringUptimeCheckConfig, + "google_network_security_address_group_iam_binding": googleNetworkSecurityAddressGroupIamBinding, + "google_network_security_address_group_iam_member": googleNetworkSecurityAddressGroupIamMember, + "google_network_security_address_group_iam_policy": googleNetworkSecurityAddressGroupIamPolicy, + "google_notebooks_environment": googleNotebooksEnvironment, + "google_notebooks_instance": googleNotebooksInstance, + "google_notebooks_instance_iam_binding": googleNotebooksInstanceIamBinding, + "google_notebooks_instance_iam_member": googleNotebooksInstanceIamMember, + "google_notebooks_instance_iam_policy": googleNotebooksInstanceIamPolicy, + "google_notebooks_runtime": googleNotebooksRuntime, + "google_notebooks_runtime_iam_binding": googleNotebooksRuntimeIamBinding, + "google_notebooks_runtime_iam_member": googleNotebooksRuntimeIamMember, + "google_notebooks_runtime_iam_policy": googleNotebooksRuntimeIamPolicy, + "google_organization_iam_binding": googleOrganizationIamBinding, + "google_organization_iam_member": googleOrganizationIamMember, + "google_organization_iam_policy": googleOrganizationIamPolicy, + "google_os_config_guest_policies": googleOsConfigGuestPolicies, + "google_os_config_os_policy_assignment": googleOsConfigOsPolicyAssignment, + "google_os_config_patch_deployment": googleOsConfigPatchDeployment, + "google_os_config_v2_policy_orchestrator": googleOsConfigV2PolicyOrchestrator, + "google_os_config_v2_policy_orchestrator_for_folder": googleOsConfigV2PolicyOrchestratorForFolder, + "google_os_config_v2_policy_orchestrator_for_organization": googleOsConfigV2PolicyOrchestratorForOrganization, + "google_parallelstore_instance": googleParallelstoreInstance, + "google_privateca_ca_pool": googlePrivateCaPool, + "google_privateca_ca_pool_iam_binding": googlePrivateCaPoolIamBinding, + "google_privateca_ca_pool_iam_member": googlePrivateCaPoolIamMember, + "google_privateca_ca_pool_iam_policy": googlePrivateCaPoolIamPolicy, + "google_privateca_certificate": googlePrivatecaCertificate, + "google_privateca_certificate_authority": googlePrivatecaCertificateAuthority, + "google_privateca_certificate_template": googlePrivatecaCertificateTemplate, + "google_privateca_certificate_template_iam_binding": googlePrivatecaCertificateTemplateIamBinding, + "google_privateca_certificate_template_iam_member": googlePrivatecaCertificateTemplateIamMember, + "google_privateca_certificate_template_iam_policy": googlePrivatecaCertificateTemplateIamPolicy, + "google_privileged_access_manager_entitlement": googlePrivilegedAccessManagerEntitlement, + "google_project": gooleProject, + "google_project_access_approval_settings": googleProjectAccessApprovalSettings, + "google_project_default_service_accounts": googleProjectDefaultServiceAccounts, + "google_project_iam_audit_config": googleProjectIamAuditConfig, + "google_project_iam_binding": googleProjectIamBinding, + "google_project_iam_custom_role": googleProjectIamCustomRole, + "google_project_iam_member": googleProjectIamBinding, + "google_project_iam_member_remove": googleProjectIamMemberRemove, + "google_project_iam_policy": googleProjectIamPolicy, + "google_project_organization_policy": googleProjectOrganizationPolicy, + "google_project_service": googleProjectService, + "google_project_service_identity": placeholder, + "google_project_services": placeholder, + "google_project_usage_export_bucket": googleProjectUsageExportBucket, + "google_pubsub_lite_reservation": googlePubsubLiteReservation, + "google_pubsub_lite_subscription": googlePubsubLiteSubscription, + "google_pubsub_lite_topic": googlePubsubLiteTopic, + "google_pubsub_schema": googlePubsubSchema, + "google_pubsub_schema_iam_binding": googlePubsubSchemaIamBinding, + "google_pubsub_schema_iam_member": googlePubsubSchemaIamMember, + "google_pubsub_schema_iam_policy": googlePubsubSchemaIamPolicy, + "google_pubsub_subscription": googlePubsubSubscription, + "google_pubsub_subscription_iam_binding": googlePubsubSubscriptionIamBinding, + "google_pubsub_subscription_iam_member": googlePubsubSubscriptionIamMember, + "google_pubsub_subscription_iam_policy": googlePubsubSubscriptionIamPolicy, + "google_pubsub_topic": googlePubsubTopic, + "google_pubsub_topic_iam_binding": googlePubsubTopicIam, + "google_pubsub_topic_iam_member": googlePubsubTopicIam, + "google_pubsub_topic_iam_policy": googlePubsubTopicIam, + "google_redis_cluster": googleRedisCluster, + "google_redis_cluster_user_created_connections": googleRedisClusterUserCreatedConnections, + "google_redis_instance": googleRedisInstance, + "google_runtimeconfig_config": googleRuntimeconfigConfig, + "google_runtimeconfig_config_iam_binding": googleRuntimeconfigConfigIamBinding, + "google_runtimeconfig_config_iam_member": googleRuntimeconfigConfigIamMember, + "google_runtimeconfig_config_iam_policy": googleRuntimeconfigConfigIamPolicy, + "google_runtimeconfig_variable": googleRuntimeconfigVariable, + "google_scc_source_iam_binding": googleSccSourceIamBinding, + "google_scc_source_iam_member": googleSccSourceIamMember, + "google_scc_source_iam_policy": googleSccSourceIamPolicy, + "google_scc_v2_organization_source_iam_binding": googleSccV2OrganizationSourceIamBinding, + "google_scc_v2_organization_source_iam_member": googleSccV2OrganizationSourceIamMember, + "google_scc_v2_organization_source_iam_policy": googleSccV2OrganizationSourceIamPolicy, + "google_secret_manager_regional_secret": googleSecretManagerRegionalSecret, + "google_secret_manager_regional_secret_iam_binding": googleSecretManagerRegionalSecretsIamBinding, + "google_secret_manager_regional_secret_iam_member": googleSecretManagerRegionalSecretIamMember, + "google_secret_manager_regional_secret_iam_policy": googleSecretManagerRegionalSecretIamPolicy, + "google_secret_manager_regional_secret_version": googleSecretManagerRegionalSecretVersion, + "google_secret_manager_secret": googleSecretManagerSecret, + "google_secret_manager_secret_iam_binding": googleSecretManagerSecretIam, + "google_secret_manager_secret_iam_member": googleSecretManagerSecretIam, + "google_secret_manager_secret_iam_policy": googleSecretManagerSecretIam, + "google_secret_manager_secret_version": googleSecretManagerSecretVersion, + "google_secure_source_manager_branch_rule": googleSecureSourceManagerBranchRule, + "google_secure_source_manager_instance": googleSecureSourceManagerInstance, + "google_secure_source_manager_instance_iam_binding": googleSecureSourceManagerInstanceIamBinding, + "google_secure_source_manager_instance_iam_member": googleSecureSourceManagerInstanceIamMember, + "google_secure_source_manager_instance_iam_policy": googleSecureSourceManagerInstanceIamPolicy, + "google_secure_source_manager_repository": googleSecureSourceManagerRepository, + "google_secure_source_manager_repository_iam_binding": googleSecureSourceManagerRepositoryIamBinding, + "google_secure_source_manager_repository_iam_member": googleSecureSourceManagerRepositoryIamMember, + "google_secure_source_manager_repository_iam_policy": googleSecureSourceManagerRepositoryIamPolicy, + "google_service_account": googleServiceAccount, + "google_service_account_iam_binding": googleServiceAccountIamBinding, + "google_service_account_iam_member": googleServiceAccountIamMember, + "google_service_account_iam_policy": googleServiceAccountIamPolicy, + "google_service_account_key": googleServiceAccountKey, + "google_service_directory_endpoint": googleServiceDirectoryEndpoint, + "google_service_directory_namespace": googleServiceDirectoryNamespace, + "google_service_directory_namespace_iam_binding": googleServiceDirectoryNamespaceIamBinding, + "google_service_directory_namespace_iam_member": googleServiceDirectoryNamespaceIamMember, + "google_service_directory_namespace_iam_policy": googleServiceDirectoryNamespaceIamPolicy, + "google_service_directory_service": googleServiceDirectoryService, + "google_service_directory_service_iam_binding": googleServiceDirectoryServiceIamBinding, + "google_service_directory_service_iam_member": googleServiceDirectoryServiceIamMember, + "google_service_directory_service_iam_policy": googleServiceDirectoryServiceIamPolicy, + "google_service_networking_connection": googleServiceNetworkingConnection, + "google_site_verification_owner": placeholder, + "google_site_verification_web_resource": placeholder, + "google_sourcerepo_repository": googleSourcerepoRepository, + "google_sourcerepo_repository_iam_binding": googleSourcerepoRepositoryIamBinding, + "google_sourcerepo_repository_iam_member": googleSourcerepoRepositoryIamMember, + "google_sourcerepo_repository_iam_policy": googleSourcerepoRepositoryIamPolicy, + "google_spanner_backup_schedule": googleSpannerBackupSchedule, + "google_spanner_database": googleSpannerDatabase, + "google_spanner_database_iam_binding": googleSpannerDatabaseIam, + "google_spanner_database_iam_member": googleSpannerDatabaseIam, + "google_spanner_database_iam_policy": googleSpannerDatabaseIam, + "google_spanner_instance": googleSpannerInstance, + "google_spanner_instance_config": googleSpannerInstanceConfig, + "google_spanner_instance_iam_binding": googleSpannerInstanceIam, + "google_spanner_instance_iam_member": googleSpannerInstanceIam, + "google_spanner_instance_iam_policy": googleSpannerInstanceIam, + "google_spanner_instance_partition": googleSpannerInstancePartition, + "google_sql_database": googleSQLDatabase, + "google_sql_database_instance": googleSQLDatabaseInstance, + "google_sql_ssl_cert": googleSqlSslCert, + "google_sql_user": googleSQLUser, + "google_storage_bucket": googleStorageBucket, + "google_storage_bucket_access_control": googleStorageBucketAccessControl, + "google_storage_bucket_acl": googleStorageBucketACL, + "google_storage_bucket_iam_binding": googleStorageBucketIamBinding, + "google_storage_bucket_iam_member": googleStorageBucketIamMember, + "google_storage_bucket_iam_policy": googleStorageBucketIamPolicy, + "google_storage_bucket_object": googleStorageBucketObject, + "google_storage_control_folder_intelligence_config": googleStorageControlFolderIntelligenceConfig, + "google_storage_control_organization_intelligence_config": googleStorageControlOrganizationIntelligenceConfig, + "google_storage_control_project_intelligence_config": googleStorageControlProjectIntelligenceConfig, + "google_storage_default_object_access_control": googleStorageDefaultObjectAccessControl, + "google_storage_default_object_acl": googleStorageDefaultObjectACL, + "google_storage_hmac_key": googleStorageHmacKey, + "google_storage_insights_report_config": googleStorageInsightsReportConfig, + "google_storage_managed_folder_iam_binding": googleStorageManagedFolderIamBinding, + "google_storage_managed_folder_iam_member": googleStorageManagedFolderIamMember, + "google_storage_managed_folder_iam_policy": googleStorageManagedFolderIamPolicy, + "google_storage_object_access_control": googleStorageObjectAccessControl, + "google_tags_location_tag_binding": googleTagsLocationTagBinding, + "google_tags_tag_binding": googleTagsTagBinding, + "google_tags_tag_key": googleTagsTagKey, + "google_tags_tag_key_iam_binding": googleTagsTagKeyIamBinding, + "google_tags_tag_key_iam_member": googleTagsTagKeyIamMember, + "google_tags_tag_key_iam_policy": googleTagsTagKeyIamPolicy, + "google_tags_tag_value": googleTagsTagValue, + "google_tags_tag_value_iam_binding": googleTagsTagValueIamBinding, + "google_tags_tag_value_iam_member": googleTagsTagValueIamMember, + "google_tags_tag_value_iam_policy": googleTagsTagValueIamPolicy, + "google_tpu_node": googleTpuNode, + "google_tpu_v2_queued_resource": googleTpuV2QueuedResource, + "google_tpu_v2_vm": googleTpuV2Vm, + "google_transcoder_job": googleTranscoderJob, + "google_transcoder_job_template": googleTranscoderJobTemplate, + "google_vertex_ai_dataset": googleVertexAiDataset, + "google_vertex_ai_endpoint": googleVertexAiEndpoint, + "google_vertex_ai_endpoint_iam_binding": googleVertexAiEndpointIam, + "google_vertex_ai_endpoint_iam_member": googleVertexAiEndpointIam, + "google_vertex_ai_endpoint_iam_policy": googleVertexAiEndpointIam, + "google_vertex_ai_feature_group": googleVertexAiFeatureGroup, + "google_vertex_ai_feature_group_feature": googleVertexAiFeatureGroupFeature, + "google_vertex_ai_feature_group_iam_binding": googleVertexAIFeatureGroupIamBinding, + "google_vertex_ai_feature_group_iam_member": googleVertexAIFeatureGroupIamMember, + "google_vertex_ai_feature_group_iam_policy": googleVertexAIFeatureGroupIamPolicy, + "google_vertex_ai_feature_online_store": googleVertexAiFeatureOnlineStore, + "google_vertex_ai_feature_online_store_featureview": googleVertexAiFeatureOnlineStoreFeatureview, + "google_vertex_ai_feature_online_store_featureview_iam_binding": googleVertexAIFeatureOnlineStoreFeatureviewIamBinding, + "google_vertex_ai_feature_online_store_featureview_iam_member": googleVertexAIFeatureOnlineStoreFeatureviewIamMember, + "google_vertex_ai_feature_online_store_featureview_iam_policy": googleVertexAIFeatureOnlineStoreFeatureviewIamPolicy, + "google_vertex_ai_feature_online_store_iam_binding": googleVertexAIFeatureOnlineStoreIamBinding, + "google_vertex_ai_feature_online_store_iam_member": googleVertexAIFeatureOnlineStoreIamMember, + "google_vertex_ai_feature_online_store_iam_policy": googleVertexAIFeatureOnlineStoreIamPolicy, + "google_vertex_ai_featurestore": googleVertexAiFeaturestore, + "google_vertex_ai_featurestore_entitytype": googleVertexAiFeaturestoreEntitytype, + "google_vertex_ai_featurestore_entitytype_feature": googleVertexAiFeaturestoreEntitytypeFeature, + "google_vertex_ai_featurestore_entitytype_iam_binding": googleVertexAiFeaturestoreEntitytypeIam, + "google_vertex_ai_featurestore_entitytype_iam_member": googleVertexAiFeaturestoreEntitytypeIam, + "google_vertex_ai_featurestore_entitytype_iam_policy": googleVertexAiFeaturestoreEntitytypeIam, + "google_vertex_ai_featurestore_iam_binding": googleVertexAiFeaturestoreIam, + "google_vertex_ai_featurestore_iam_member": googleVertexAiFeaturestoreIam, + "google_vertex_ai_featurestore_iam_policy": googleVertexAiFeaturestoreIam, + "google_vertex_ai_index": googleVertexAiIndex, + "google_vertex_ai_index_endpoint": googleVertexAiIndexEndpoint, + "google_vertex_ai_metadata_store": googleVertexAiMetadataStore, + "google_vertex_ai_tensorboard": googleVertexAiTensorboard, + "google_vmwareengine_cluster": googleVmwareengineCluster, + "google_vmwareengine_external_access_rule": googleVmwareengineExternalAccessRule, + "google_vmwareengine_external_address": googleVmwareengineExternalAddress, + "google_vmwareengine_network": googleVmwareengineNetwork, + "google_vmwareengine_network_peering": googleVmwareengineNetworkPeering, + "google_vmwareengine_network_policy": googleVmwareengineNetworkPolicy, + "google_vmwareengine_private_cloud": googleVmwareenginePrivateCloud, + "google_vmwareengine_subnet": googleVmwareengineSubnet, + "google_workbench_instance_iam_binding": googleWorkbenchInstanceIamBinding, + "google_workbench_instance_iam_member": googleWorkbenchInstanceIamMember, + "google_workbench_instance_iam_policy": googleWorkbenchInstanceIamPolicy, + "google_workflows_workflow": googleWorkflowsWorkflow, + "google_workstations_workstation": googleWorkstationsWorkstation, + "google_workstations_workstation_cluster": googleWorkstationsWorkstationCluster, + "google_workstations_workstation_config": googleWorkstationsWorkstationConfig, + "google_workstations_workstation_config_iam_binding": googleWorkstationsWorkstationConfigIamBinding, + "google_workstations_workstation_config_iam_member": googleWorkstationsWorkstationConfigIamMember, + "google_workstations_workstation_config_iam_policy": googleWorkstationsWorkstationConfigIamPolicy, + "google_workstations_workstation_iam_binding": googleWorkstationsWorkstationIamBinding, + "google_workstations_workstation_iam_member": googleWorkstationsWorkstationIamMember, + "google_workstations_workstation_iam_policy": googleWorkstationsWorkstationIamPolicy, + "google_certificate_manager_dns_authorization": googleCertificateManagerDnsAuthorization, + "google_iap_web_region_forwarding_rule_service_iam_binding": googleIapWebRegionForwardingRuleServiceIamBinding, + "google_iap_web_region_forwarding_rule_service_iam_member": googleIapWebRegionForwardingRuleServiceIamMember, + "google_iap_web_region_forwarding_rule_service_iam_policy": googleIapWebRegionForwardingRuleServiceIamPolicy, + "google_iap_brand": placeholder, //being deprecated + "google_iap_client": placeholder, //being deprecated + "google_iap_settings": googleIapSettings, + "google_iap_tunnel_dest_group": googleIapTunnelDestGroup, + "google_iap_web_forwarding_rule_service_iam_binding": googleIapWebForwardingRuleServiceIamBinding, + "google_iap_web_forwarding_rule_service_iam_member": googleIapWebForwardingRuleServiceIamMember, + "google_iap_web_forwarding_rule_service_iam_policy": googleIapWebForwardingRuleServiceIamPolicy, + "google_gemini_code_repository_index": googleGeminiCodeRepositoryIndex, + "google_gemini_code_tools_setting": googleGeminiCodeToolsSetting, + "google_gemini_code_tools_setting_binding": googleGeminiCodeToolsSettingBinding, + "google_gemini_data_sharing_with_google_setting": googleGeminiDataSharingWithGoogleSetting, + "google_gemini_data_sharing_with_google_setting_binding": googleGeminiDataSharingWithGoogleSettingBinding, + "google_gemini_gemini_gcp_enablement_setting": googleGeminiGeminiGcpEnablementSetting, + "google_gemini_gemini_gcp_enablement_setting_binding": googleGeminiGeminiGcpEnablementSettingBinding, + "google_gemini_logging_setting": googleGeminiLoggingSetting, + "google_gemini_logging_setting_binding": googleGeminiLoggingSettingBinding, + "google_gemini_release_channel_setting": googleGeminiReleaseChannelSetting, + "google_gemini_release_channel_setting_binding": googleGeminiReleaseChannelSettingBinding, + "google_gemini_repository_group": googleGeminiRepositoryGroup, + "google_vertex_ai_cache_config": googleVertexAiCacheConfig, + "google_vertex_ai_deployment_resource_pool": googleVertexAiDeploymentResourcePool, + "google_vertex_ai_rag_engine_config": googleVertexAiRagEngineConfig, + "google_vertex_ai_reasoning_engine": googleVertexAiReasoningEngine, + "google_vpc_access_connector": googleVpcAccessConnector, + "google_workbench_instance": googleWorkbenchInstance, + "google_vertex_ai_endpoint_with_model_garden_deployment": googleVertexAiEndpointWithModelGardenDeployment, + "google_vertex_ai_index_endpoint_deployed_index": googleVertexAiIndexEndpointDeployedIndex, +} diff --git a/src/gcp_datasource.go b/src/gcp_datasource.go index 35604ebc..56a9a275 100644 --- a/src/gcp_datasource.go +++ b/src/gcp_datasource.go @@ -20,249 +20,409 @@ func GetGCPDataPermissions(result ResourceV2) ([]string, error) { func GCPDataLookup(result string) interface{} { TFLookup := map[string]interface{}{ - "google_alloydb_locations": dataGoogleAlloydbLocations, - "google_alloydb_supported_database_flags": dataGoogleAlloydbSupportedDatabaseFlags, - "google_api_gateway_api_config_iam_policy": placeholder, - "google_api_gateway_api_iam_policy": placeholder, - "google_api_gateway_gateway_iam_policy": placeholder, - "google_apigee_environment_iam_policy": placeholder, - "google_app_engine_default_service_account": dataGoogleAppEngineDefaultServiceAccount, - "google_artifact_registry_repository": dataGoogleArtifactRegistryRepository, - "google_artifact_registry_repository_iam_policy": dataGoogleArtifactRegistryRepositoryIamPolicy, - "google_beyondcorp_app_connection": dataGoogleBeyondcorpAppConnection, - "google_beyondcorp_app_connector": dataGoogleBeyondcorpAppConnector, - "google_beyondcorp_app_gateway": dataGoogleBeyondcorpAppGateway, - "google_bigquery_analytics_hub_data_exchange_iam_policy": dataGoogleBigqueryHubDataExchangeIamPolicy, - "google_bigquery_analytics_hub_listing_iam_policy": dataGoogleBigqueryAnalyticsHubListingIamPolicy, - "google_bigquery_connection_iam_policy": placeholder, - "google_bigquery_datapolicy_data_policy_iam_policy": dataGoogleBigqueryDatapolicyDataPolicyIamPolicy, - "google_bigquery_dataset_iam_policy": placeholder, - "google_bigquery_default_service_account": dataGoogleBigqueryDefaultServiceAccount, - "google_bigquery_table_iam_policy": placeholder, - "google_bigtable_instance_iam_policy": dataGoogleBigtableInstanceIamPolicy, - "google_bigtable_table_iam_policy": placeholder, - "google_client_config": placeholder, - "google_client_openid_userinfo": placeholder, - "google_cloud_run_locations": dataGoogleCloudRunLocations, - "google_cloud_run_service": dataGoogleCloudRunService, - "google_cloud_run_service_iam_policy": dataGoogleCloudRunServiceIamPolicy, - "google_cloud_run_v2_job": dataGoogleCloudRunV2Job, - "google_cloud_run_v2_job_iam_policy": dataGoogleCloudRunV2JobIamPolicy, - "google_cloud_run_v2_service": dataGoogleCloudRunV2Service, - "google_cloud_run_v2_service_iam_policy": dataGoogleCloudRunV2ServiceIamPolicy, - "google_cloudfunctions2_function": dataGoogleCloudfunctionsFunction, - "google_cloudfunctions2_function_iam_policy": dataGoogleCloudfunctionsFunctionIamPolicy, - "google_cloudfunctions_function": dataGoogleCloudfunctionsFunction, - "google_cloudfunctions_function_iam_policy": dataGoogleCloudfunctionsFunctionIamPolicy, - "google_compute_address": dataGoogleComputeAddress, - "google_compute_addresses": dataGoogleComputeAddresses, - "google_compute_backend_bucket": dataGoogleComputeBackendBucket, - "google_compute_backend_bucket_iam_policy": dataGoogleComputeBackendBucketIamPolicy, - "google_compute_backend_service": dataGoogleComputeBackendService, - "google_compute_backend_service_iam_policy": dataGoogleComputeBackendServiceIamPolicy, - "google_compute_default_service_account": dataGoogleComputeDefaultServiceAccount, - "google_compute_disk": dataGoogleComputeDisk, - "google_compute_disk_iam_policy": dataGoogleComputeDiskIamPolicy, - "google_compute_forwarding_rule": dataGoogleComputeForwardingRule, - "google_compute_global_address": dataGoogleComputeGlobalAddress, - "google_compute_global_forwarding_rule": dataGoogleComputeGlobalForwardingRule, - "google_compute_ha_vpn_gateway": dataGoogleComputeHaVpnGateway, - "google_compute_health_check": dataGoogleComputeHealthCheck, - "google_compute_image": placeholder, - "google_compute_image_iam_policy": dataGoogleComputeImageIamPolicy, - "google_compute_instance": dataGoogleComputeInstance, - "google_compute_instance_group": dataGoogleComputeInstanceGroup, - "google_compute_instance_group_manager": dataGoogleComputeInstanceGroupManager, - "google_compute_instance_iam_policy": placeholder, - "google_compute_instance_serial_port": dataGoogleComputeInstanceSerialPort, - "google_compute_instance_template": dataGoogleComputeInstanceTemplate, - "google_compute_lb_ip_ranges": placeholder, - "google_compute_machine_image_iam_policy": dataGoogleComputeMachineImageIamPolicy, - "google_compute_network": dataGoogleComputeNetwork, - "google_compute_network_endpoint_group": dataGoogleComputeNetworkEndpointGroup, - "google_compute_network_peering": placeholder, - "google_compute_networks": dataGoogleComputeNetworks, - "google_compute_node_types": dataGoogleComputeNodeTypes, - "google_compute_region_backend_service_iam_policy": dataGoogleComputeRegionBackendServiceIamPolicy, - "google_compute_region_disk_iam_policy": dataGoogleComputeRegionDiskIamPolicy, - "google_compute_region_instance_group": dataGoogleComputeRegionInstanceGroup, - "google_compute_region_instance_template": dataGoogleComputeRegionInstanceTemplate, - "google_compute_region_network_endpoint_group": dataGoogleComputeRegionNetworkEndpointGroup, - "google_compute_region_ssl_certificate": placeholder, - "google_compute_regions": dataGoogleComputeRegions, - "google_compute_resource_policy": dataGoogleComputeResourcePolicy, - "google_compute_router": dataGoogleComputeRouter, - "google_compute_router_nat": dataGoogleComputeRouterNat, - "google_compute_router_status": dataGoogleComputeRouterStatus, - "google_compute_snapshot": dataGoogleComputeSnapshot, - "google_compute_snapshot_iam_policy": dataGoogleComputeSnapshotIamPolicy, - "google_compute_ssl_certificate": dataGoogleComputeSslCertificate, - "google_compute_ssl_policy": dataGoogleComputeSslPolicy, - "google_compute_subnetwork": dataGoogleComputeSubnetwork, - "google_compute_subnetwork_iam_policy": dataGoogleComputeSubnetworkIamPolicy, - "google_compute_vpn_gateway": dataGoogleComputeVpnGateway, - "google_compute_zones": dataGoogleComputeZones, - "google_container_analysis_note_iam_policy": dataGoogleContainerAnalysisNoteIamPolicy, - "google_container_cluster": dataGoogleContainerCluster, - "google_container_engine_versions": placeholder, - "google_container_registry_image": placeholder, - "google_container_registry_repository": placeholder, - "google_dns_keys": dataGoogleDNSKeys, - "google_dns_managed_zone": dataGoogleDNSManagedZone, - "google_dns_managed_zone_iam_policy": dataGoogleDNSManagedZoneIamPolicy, - "google_dns_record_set": dataGoogleDNSRecordSet, - "google_gke_backup_backup_plan_iam_policy": dataGoogleGkeBackupBackupPlanIamPolicy, - "google_gke_backup_restore_plan_iam_policy": dataGoogleGkeBackupRestorePlanIamPolicy, - "google_gke_hub_feature_iam_policy": dataGoogleGkeHubFeatureIamPolicy, - "google_gke_hub_membership_iam_policy": dataGoogleGkeHubMembershipIamPolicy, - "google_gke_hub_scope_iam_policy": dataGoogleGkeHubScopeIamPolicy, - "google_iam_policy": placeholder, - "google_iam_role": placeholder, - "google_kms_crypto_key": dataGoogleKmsCryptoKey, - "google_kms_crypto_key_iam_policy": dataGoogleKmsCryptoKeyIamPolicy, - "google_kms_crypto_key_version": dataGoogleKmsCryptoKeyVersion, - "google_kms_key_ring": dataGoogleKmsKeyRing, - "google_kms_key_ring_iam_policy": dataGoogleKmsKeyRingIamPolicy, - "google_kms_secret": dataGoogleKmsSecret, - "google_kms_secret_asymmetric": dataGoogleKmsSecretAsymnetric, - "google_kms_secret_ciphertext": placeholder, - "google_project": dataGoogleProject, - "google_project_service": dataGoogleProjectService, - "google_projects": placeholder, - "google_pubsub_subscription": dataGooglePubsubSubscription, - "google_pubsub_subscription_iam_policy": dataGooglePubsubSubscriptionIamPolicy, - "google_pubsub_topic": dataGooglePubsubTopic, - "google_pubsub_topic_iam_policy": dataGooglePubsubTopicIamPolicy, - "google_redis_instance": dataGoogleRedisInstance, - "google_secret_manager_secret": dataGoogleSecretManagerSecret, - "google_secret_manager_secret_iam_policy": dataGoogleSecretManagerSecretIamPolicy, - "google_secret_manager_secret_version": dataGoogleSecretManagerSecretVersion, - "google_secret_manager_secret_version_access": dataGoogleManagerSecretVersionAccess, - "google_service_account": dataGoogleServiceAccount, - "google_service_account_access_token": dataGoogleServiceAccountAccessToken, - "google_service_account_iam_policy": dataGoogleServiceAccountIamPolicy, - "google_service_account_id_token": placeholder, - "google_service_account_jwt": dataGoogleServiceAccountJwt, - "google_service_account_key": dataGoogleServiceAccountKey, - "google_sourcerepo_repository": dataGoogleSourcerepoRepository, - "google_sourcerepo_repository_iam_policy": dataGoogleSourcerepoRepositoryIamPolicy, - "google_spanner_database_iam_policy": dataGoogleSpannerDatabaseIamPolicy, - "google_spanner_instance": dataGoogleSpannerInstance, - "google_spanner_instance_iam_policy": dataGoogleSpannerInstanceIamPolicy, - "google_sql_database": dataGoogleSQLDatabase, - "google_sql_database_instance": dataGoogleSQLDatabaseInstance, - "google_sql_database_instances": dataGoogleSQLDatabaseInstances, - "google_sql_databases": dataGoogleSQLDatabases, - "google_sql_tiers": placeholder, - "google_storage_bucket": dataGoogleStorageBucket, - "google_storage_bucket_iam_policy": dataGoogleStorageBucketIamPolicy, - "google_storage_bucket_object": dataGoogleStorageBucketObject, - "google_storage_bucket_object_content": dataGoogleStorageBucketObjectContent, - "google_storage_object_signed_url": placeholder, - "google_storage_project_service_account": dataGoogleStorageProjectServiceAccount, - "google_storage_transfer_project_service_account": dataGoogleStorageTransferProjectServiceAccount, - "google_vertex_ai_featurestore_entitytype_iam_policy": dataGoogleVertexAiFeaturestoreEntitytypeIamPolicy, - "google_vertex_ai_featurestore_iam_policy": dataGoogleVertexAiFeaturestoreIamPolicy, - "google_cloudbuild_trigger": dataGoogleCloudbuildTrigger, - "google_cloudbuildv2_connection_iam_policy": dataGoogleCloudbuildv2ConnectionIamPolicy, - "google_monitoring_istio_canonical_service": dataGoogleMonitoringIstioCanonicalService, - "google_monitoring_mesh_istio_service": dataGoogleMonitoringMeshIstioService, - "google_monitoring_notification_channel": dataGoogleMonitoringNotificationChannel, - "google_monitoring_uptime_check_ips": placeholder, - "google_tpu_tensorflow_versions": dataGoogleTpuTensorflowVersions, - "google_tpu_v2_accelerator_types": dataGoogleTpuV2AcceleratorTypes, - "google_tpu_v2_runtime_versions": dataGoogleTpuV2RuntimeVersions, - "google_vmwareengine_cluster": placeholder, - "google_vmwareengine_network": dataGoogleVmwareengineNetwork, - "google_vmwareengine_private_cloud": dataGoogleVmwareenginePrivateCloud, - "google_vpc_access_connector": dataGoogleVpcAccessConnector, - "google_workstations_workstation_config_iam_policy": dataGoogleWorkstationsWorkstationConfigIamPolicy, - "google_workstations_workstation_iam_policy": dataGoogleWorkstationsWorkstationIamPolicy, - "google_netblock_ip_ranges": placeholder, - "google_notebooks_instance_iam_policy": dataGoogleNotebooksInstanceIamPolicy, - "google_notebooks_runtime_iam_policy": dataGoogleNotebooksRuntimeIamPolicy, - "google_organization": placeholder, - "google_secret_manager_secrets": dataGoogleSecretManagerSecrets, - "google_tags_tag_key": dataGoogleTagsTagKey, - "google_access_approval_folder_service_account": placeholder, - "google_access_approval_organization_service_account": placeholder, - "google_access_approval_project_service_account": placeholder, - "google_access_context_manager_access_policy_iam_policy": placeholder, - "google_active_folder": placeholder, - "google_bigquery_dataset": placeholder, - "google_billing_account_iam_policy": placeholder, - "google_binary_authorization_attestor_iam_policy": dataGoogleBinaryAuthorizationAttestorIamPolicy, - "google_certificate_manager_certificate_map": dataGoogleCertificateManagerCertificateMap, - "google_cloud_identity_group_lookup": placeholder, - "google_cloud_identity_group_memberships": placeholder, - "google_cloud_identity_groups": placeholder, - "google_cloud_tasks_queue_iam_policy": dataGoogleCloudTasksQueueIamPolicy, - "google_composer_environment": dataGoogleComposerEnvironment, - "google_composer_image_versions": dataGoogleComposerImageVersions, - "google_container_attached_versions": dataGoogleContainerAttachedVersions, - "google_data_catalog_entry_group_iam_policy": placeholder, - "google_data_catalog_policy_tag_iam_policy": placeholder, - "google_data_catalog_tag_template_iam_policy": placeholder, - "google_data_fusion_instance_iam_policy": dataGoogleDataFusionInstanceIamPolicy, - "google_dataplex_asset_iam_policy": dataGoogleDataplexAssetIamPolicy, - "google_dataplex_datascan_iam_policy": dataGoogleDataplexDatascanIamPolicy, - "google_dataplex_lake_iam_policy": dataGoogleDataplexLakeIamPolicy, - "google_dataplex_task_iam_policy": dataGoogleDataplexTaskIamPolicy, - "google_dataplex_zone_iam_policy": dataGoogleDataplexZoneIamPolicy, - "google_dataproc_autoscaling_policy_iam_policy": placeholder, - "google_dataproc_cluster_iam_policy": placeholder, - "google_dataproc_job_iam_policy": placeholder, - "google_dataproc_metastore_federation_iam_policy": dataGoogleDataprocMetaStoreFederationIamPolicy, - "google_dataproc_metastore_service": dataGoogleDataprocMetastoreService, - "google_dataproc_metastore_service_iam_policy": dataGoogleDataprocMetastoreServiceIamPolicy, - "google_datastream_static_ips": dataGoogleDataStreamStaticIps, - "google_endpoints_service_consumers_iam_policy": placeholder, - "google_folder_organization_policy": placeholder, - "google_healthcare_consent_store_iam_policy": dataGoogleHealthcareConsentStoreIamPolicy, - "google_healthcare_dataset_iam_policy": dataGoogleHealthcareDatasetStoreIamPolicy, - "google_healthcare_dicom_store_iam_policy": dataGoogleHealthcareDicomStoreIamPolicy, - "google_healthcare_fhir_store_iam_policy": dataGoogleHealthcareFhirStoreIamPolicy, - "google_healthcare_hl7_v2_store_iam_policy": dataGoogleHealthcareHl7V2StoreIamPolicy, - "google_iam_workload_identity_pool": dataGoogleIamWorkloadIdentityPool, - "google_iam_workload_identity_pool_provider": dataGoogleIamWorkloadIdentityPoolProvider, - "google_iap_app_engine_service_iam_policy": dataGoogleIapAppEngineServiceIamPolicy, - "google_iap_app_engine_version_iam_policy": dataGoogleIapAppEngineVersionIamPolicy, - "google_iap_client": placeholder, - "google_iap_tunnel_iam_policy": dataGoogleIapTunnelIamPolicy, - "google_iap_tunnel_instance_iam_policy": dataGoogleIapTunnelInstanceIamPolicy, - "google_iap_web_backend_service_iam_policy": dataGoogleIapWebBackendServiceIamPolicy, - "google_iap_web_iam_policy": dataGoogleIapWebIamPolicy, - "google_iap_web_region_backend_service_iam_policy": dataGoogleIapWebRegionBackendServiceIamPolicy, - "google_iap_web_type_app_engine_iam_policy": dataGoogleIapWebTypeAppEngineIamPolicy, - "google_iap_web_type_compute_iam_policy": dataGoogleIapWebTypeComputeIamPolicy, - "google_logging_project_cmek_settings": dataGoogleLoggingProjectCmekSettings, - "google_monitoring_app_engine_service": dataGoogleMonitoringAppEngineService, - "google_monitoring_cluster_istio_service": dataGoogleMonitoringClusterIstioService, - "google_vmwareengine_network_policy": dataGoogleVmwareengineNetworkPolicy, - "google_vmwareengine_network_peering": dataGoogleVmwareengineNetworkPeering, - "google_vertex_ai_endpoint_iam_policy": dataGoogleVertexAiEndpointIamPolicy, - "google_vmwareengine_external_address": dataGoogleVmwareengineExternalAddress, - "google_vmwareengine_nsx_credentials": dataGoogleVmwareengineNsxCredentials, - "google_vmwareengine_subnet": dataGoogleVmwareengineSubnet, - "google_vmwareengine_vcenter_credentials": dataGoogleVmwareengineVcenterCredentials, - "google_workbench_instance_iam_policy": dataGoogleWorkbenchInstanceIamPolicy, - "google_vmwareengine_external_access_rule": placeholder, - "google_compute_region_disk": dataGoogleComputeRegionDisk, - "google_compute_reservation": dataGoogleComputeReservation, - "google_filestore_instance": dataGoogleFilestoreInstance, - "google_logging_project_settings": dataGoogleLoggingProjectSettings, - "google_billing_account": placeholder, - "google_logging_folder_settings": placeholder, - "google_logging_organization_settings": placeholder, - "google_network_security_address_group_iam_policy": dataGoogleSecurityAddressGroupIamPolicy, - "google_service_directory_namespace_iam_policy": dataGoogleServiceDirectoryNamespaceIamPolicy, - "google_service_directory_service_iam_policy": dataGoogleServiceDirectoryServiceIamPolicy, - "google_sql_backup_run": dataGoogleSQLBackupRun, - "google_sql_ca_certs": placeholder, - "google_sql_database_instance_latest_recovery_time": dataGoogleSQLDatabaseInstanceLatestRecoveryTime, - "google_data_catalog_taxonomy_iam_policy": dataGoogleDataCatalogTaxonomyIamPolicy, - "google_dataform_repository_iam_policy": dataGoogleDataformRepositoryIamPolicy, - "google_endpoints_service_iam_policy": dataGoogleEndpointsServiceIamPolicy, + "google_access_approval_folder_service_account": placeholder, + "google_access_approval_organization_service_account": placeholder, + "google_access_approval_project_service_account": placeholder, + "google_access_context_manager_access_policy_iam_policy": placeholder, + "google_active_folder": placeholder, + "google_alloydb_cluster": dataGoogleAlloydbCluster, + "google_alloydb_instance": dataGoogleAlloydbInstance, + "google_alloydb_locations": dataGoogleAlloydbLocations, + "google_alloydb_supported_database_flags": dataGoogleAlloydbSupportedDatabaseFlags, + "google_api_gateway_api_config_iam_policy": placeholder, + "google_api_gateway_api_iam_policy": placeholder, + "google_api_gateway_gateway_iam_policy": placeholder, + "google_apigee_environment_iam_policy": placeholder, + "google_app_engine_default_service_account": dataGoogleAppEngineDefaultServiceAccount, + "google_apphub_application": dataGoogleApphubApplication, + "google_apphub_discovered_service": dataGoogleApphubDiscoveredService, + "google_apphub_discovered_workload": dataGoogleApphubDiscoveredWorkload, + "google_artifact_registry_docker_image": dataGoogleArtifactRegistryDockerImage, + "google_artifact_registry_locations": dataGoogleArtifactRegistryLocations, + "google_artifact_registry_repository": dataGoogleArtifactRegistryRepository, + "google_artifact_registry_repository_iam_policy": dataGoogleArtifactRegistryRepositoryIamPolicy, + "google_backup_dr_backup": dataGoogleBackupDrBackup, + "google_backup_dr_backup_plan_association": dataGoogleBackupDrPlanAssociation, + "google_backup_dr_backup_vault": dataGoogleBackupDrBackupVault, + "google_backup_dr_data_source": dataGoogleBackupDrDataSource, + "google_beyondcorp_app_connection": dataGoogleBeyondcorpAppConnection, + "google_beyondcorp_app_connector": dataGoogleBeyondcorpAppConnector, + "google_beyondcorp_app_gateway": dataGoogleBeyondcorpAppGateway, + "google_beyondcorp_application_iam_policy": dataGoogleBeyondcorpApplicationIamPolicy, + "google_beyondcorp_security_gateway": dataGoogleBeyondcorpSecurityGateway, + "google_beyondcorp_security_gateway_application_iam_policy": dataGoogleBeyondcorpSecurityGatewayApplicationIamPolicy, + "google_beyondcorp_security_gateway_iam_policy": dataGoogleBeyondcorpSecurityGatewayIamPolicy, + "google_bigquery_analytics_hub_data_exchange_iam_policy": dataGoogleBigqueryHubDataExchangeIamPolicy, + "google_bigquery_analytics_hub_listing_iam_policy": dataGoogleBigqueryAnalyticsHubListingIamPolicy, + "google_bigquery_connection_iam_policy": placeholder, + "google_bigquery_datapolicy_data_policy_iam_policy": dataGoogleBigqueryDatapolicyDataPolicyIamPolicy, + "google_bigquery_dataset": placeholder, + "google_bigquery_dataset_iam_policy": placeholder, + "google_bigquery_datasets": placeholder, + "google_bigquery_default_service_account": dataGoogleBigqueryDefaultServiceAccount, + "google_bigquery_table": placeholder, + "google_bigquery_table_iam_policy": placeholder, + "google_bigquery_tables": placeholder, + "google_bigtable_instance_iam_policy": dataGoogleBigtableInstanceIamPolicy, + "google_bigtable_table_iam_policy": placeholder, + "google_billing_account": placeholder, + "google_billing_account_iam_policy": placeholder, + "google_binary_authorization_attestor_iam_policy": dataGoogleBinaryAuthorizationAttestorIamPolicy, + "google_certificate_manager_certificate_map": dataGoogleCertificateManagerCertificateMap, + "google_certificate_manager_certificates": dataGoogleCertificateManagerCertificates, + "google_client_config": placeholder, + "google_client_openid_userinfo": placeholder, + "google_cloud_identity_group_lookup": placeholder, + "google_cloud_identity_group_memberships": placeholder, + "google_cloud_identity_groups": placeholder, + "google_cloud_quotas_quota_info": placeholder, + "google_cloud_quotas_quota_infos": placeholder, + "google_cloud_run_locations": dataGoogleCloudRunLocations, + "google_cloud_run_service": dataGoogleCloudRunService, + "google_cloud_run_service_iam_policy": dataGoogleCloudRunServiceIamPolicy, + "google_cloud_run_v2_job": dataGoogleCloudRunV2Job, + "google_cloud_run_v2_job_iam_policy": dataGoogleCloudRunV2JobIamPolicy, + "google_cloud_run_v2_service": dataGoogleCloudRunV2Service, + "google_cloud_run_v2_service_iam_policy": dataGoogleCloudRunV2ServiceIamPolicy, + "google_cloud_run_v2_worker_pool": dataGoogleCloudRunV2WorkerPool, + "google_cloud_run_v2_worker_pool_iam_policy": dataGoogleCloudRunWorkerPoolIamPolicy, + "google_cloud_tasks_queue_iam_policy": dataGoogleCloudTasksQueueIamPolicy, + "google_cloudbuild_trigger": dataGoogleCloudbuildTrigger, + "google_cloudbuildv2_connection_iam_policy": dataGoogleCloudbuildv2ConnectionIamPolicy, + "google_clouddeploy_custom_target_type_iam_policy": dataGoogleClouddeployCustomTargetTypeIamPolicy, + "google_clouddeploy_delivery_pipeline_iam_policy": dataGoogleClouddeployDeliveryPipelineIamPolicy, + "google_clouddeploy_target_iam_policy": dataGoogleClouddeployTargetIamPolicy, + "google_cloudfunctions2_function": dataGoogleCloudfunctionsFunction, + "google_cloudfunctions2_function_iam_policy": dataGoogleCloudfunctionsFunctionIamPolicy, + "google_cloudfunctions_function": dataGoogleCloudfunctionsFunction, + "google_cloudfunctions_function_iam_policy": dataGoogleCloudfunctionsFunctionIamPolicy, + "google_colab_runtime_template_iam_policy": dataGoogleColabRuntimeTemplateIamPolicy, + "google_composer_environment": dataGoogleComposerEnvironment, + "google_composer_image_versions": dataGoogleComposerImageVersions, + "google_composer_user_workloads_config_map": dataGoogleComposerUserWorkloadsConfigMap, + "google_composer_user_workloads_secret": dataGoogleComposerUserWorkloadsSecret, + "google_compute_address": dataGoogleComputeAddress, + "google_compute_addresses": dataGoogleComputeAddresses, + "google_compute_backend_bucket": dataGoogleComputeBackendBucket, + "google_compute_backend_bucket_iam_policy": dataGoogleComputeBackendBucketIamPolicy, + "google_compute_backend_service": dataGoogleComputeBackendService, + "google_compute_backend_service_iam_policy": dataGoogleComputeBackendServiceIamPolicy, + "google_compute_default_service_account": dataGoogleComputeDefaultServiceAccount, + "google_compute_disk": dataGoogleComputeDisk, + "google_compute_disk_iam_policy": dataGoogleComputeDiskIamPolicy, + "google_compute_forwarding_rule": dataGoogleComputeForwardingRule, + "google_compute_forwarding_rules": dataGoogleComputeForwardingRules, + "google_compute_global_address": dataGoogleComputeGlobalAddress, + "google_compute_global_forwarding_rule": dataGoogleComputeGlobalForwardingRule, + "google_compute_ha_vpn_gateway": dataGoogleComputeHaVpnGateway, + "google_compute_health_check": dataGoogleComputeHealthCheck, + "google_compute_image": placeholder, + "google_compute_image_iam_policy": dataGoogleComputeImageIamPolicy, + "google_compute_images": dataGoogleComputeImages, + "google_compute_instance": dataGoogleComputeInstance, + "google_compute_instance_group": dataGoogleComputeInstanceGroup, + "google_compute_instance_group_manager": dataGoogleComputeInstanceGroupManager, + "google_compute_instance_guest_attributes": dataGoogleComputeInstanceGuestAttributes, + "google_compute_instance_iam_policy": placeholder, + "google_compute_instance_serial_port": dataGoogleComputeInstanceSerialPort, + "google_compute_instance_template": dataGoogleComputeInstanceTemplate, + "google_compute_instance_template_iam_policy": dataGoogleComputeInstanceTemplateIamPolicy, + "google_compute_instant_snapshot_iam_policy": dataGoogleComputeInstantSnapshotIamPolicy, + "google_compute_lb_ip_ranges": placeholder, + "google_compute_machine_image_iam_policy": dataGoogleComputeMachineImageIamPolicy, + "google_compute_machine_types": dataGoogleComputeMachineTypes, + "google_compute_network": dataGoogleComputeNetwork, + "google_compute_network_endpoint_group": dataGoogleComputeNetworkEndpointGroup, + "google_compute_network_peering": placeholder, + "google_compute_networks": dataGoogleComputeNetworks, + "google_compute_node_types": dataGoogleComputeNodeTypes, + "google_compute_region_backend_service": dataGoogleComputeRegionBackendService, + "google_compute_region_backend_service_iam_policy": dataGoogleComputeRegionBackendServiceIamPolicy, + "google_compute_region_disk": dataGoogleComputeRegionDisk, + "google_compute_region_disk_iam_policy": dataGoogleComputeRegionDiskIamPolicy, + "google_compute_region_instance_group": dataGoogleComputeRegionInstanceGroup, + "google_compute_region_instance_group_manager": dataGoogleComputeRegionInstanceGroupManager, + "google_compute_region_instance_template": dataGoogleComputeRegionInstanceTemplate, + "google_compute_region_network_endpoint_group": dataGoogleComputeRegionNetworkEndpointGroup, + "google_compute_region_ssl_certificate": placeholder, + "google_compute_regions": dataGoogleComputeRegions, + "google_compute_reservation": dataGoogleComputeReservation, + "google_compute_resource_policy": dataGoogleComputeResourcePolicy, + "google_compute_router": dataGoogleComputeRouter, + "google_compute_router_nat": dataGoogleComputeRouterNat, + "google_compute_router_status": dataGoogleComputeRouterStatus, + "google_compute_security_policy": dataGoogleComputeSecurityPolicy, + "google_compute_snapshot": dataGoogleComputeSnapshot, + "google_compute_snapshot_iam_policy": dataGoogleComputeSnapshotIamPolicy, + "google_compute_ssl_certificate": dataGoogleComputeSslCertificate, + "google_compute_ssl_policy": dataGoogleComputeSslPolicy, + "google_compute_storage_pool_iam_policy": dataGoogleComputeStoragePoolIamPolicy, + "google_compute_storage_pool_types": dataGoogleComputeStoragePoolTypes, + "google_compute_subnetwork": dataGoogleComputeSubnetwork, + "google_compute_subnetwork_iam_policy": dataGoogleComputeSubnetworkIamPolicy, + "google_compute_subnetworks": dataGoogleComputeSubnetworks, + "google_compute_vpn_gateway": dataGoogleComputeVpnGateway, + "google_compute_zones": dataGoogleComputeZones, + "google_container_analysis_note_iam_policy": dataGoogleContainerAnalysisNoteIamPolicy, + "google_container_attached_install_manifest": dataGoogleContainerAttachedInstallManifest, + "google_container_attached_versions": dataGoogleContainerAttachedVersions, + "google_container_aws_versions": dataGoogleContainerAwsVersions, + "google_container_azure_versions": dataGoogleContainerAzureVersions, + "google_container_cluster": dataGoogleContainerCluster, + "google_container_engine_versions": placeholder, + "google_container_registry_image": placeholder, + "google_container_registry_repository": placeholder, + "google_data_catalog_entry_group_iam_policy": placeholder, + "google_data_catalog_policy_tag_iam_policy": placeholder, + "google_data_catalog_tag_template_iam_policy": placeholder, + "google_data_catalog_taxonomy_iam_policy": dataGoogleDataCatalogTaxonomyIamPolicy, + "google_data_fusion_instance_iam_policy": dataGoogleDataFusionInstanceIamPolicy, + "google_dataform_repository_iam_policy": dataGoogleDataformRepositoryIamPolicy, + "google_dataplex_aspect_type_iam_policy": dataGoogleDataplexAspectTypeIamPolicy, + "google_dataplex_asset_iam_policy": dataGoogleDataplexAssetIamPolicy, + "google_dataplex_datascan_iam_policy": dataGoogleDataplexDatascanIamPolicy, + "google_dataplex_entry_group_iam_policy": dataGoogleDataplexEntryGroupIamPolicy, + "google_dataplex_entry_type_iam_policy": dataGoogleDataplexEntryTypeIamPolicy, + "google_dataplex_glossary_iam_policy": dataGoogleDataplexGlossaryIamPolicy, + "google_dataplex_lake_iam_policy": dataGoogleDataplexLakeIamPolicy, + "google_dataplex_task_iam_policy": dataGoogleDataplexTaskIamPolicy, + "google_dataplex_zone_iam_policy": dataGoogleDataplexZoneIamPolicy, + "google_dataproc_autoscaling_policy_iam_policy": placeholder, + "google_dataproc_cluster_iam_policy": placeholder, + "google_dataproc_job_iam_policy": placeholder, + "google_dataproc_metastore_database_iam_policy": dataGoogleDataprocMetastoreDatabaseIamPolicy, + "google_dataproc_metastore_federation_iam_policy": dataGoogleDataprocMetaStoreFederationIamPolicy, + "google_dataproc_metastore_service": dataGoogleDataprocMetastoreService, + "google_dataproc_metastore_service_iam_policy": dataGoogleDataprocMetastoreServiceIamPolicy, + "google_dataproc_metastore_table_iam_policy": dataGoogleDataprocMetastoreTableIamPolicy, + "google_datastream_static_ips": dataGoogleDataStreamStaticIps, + "google_dns_keys": dataGoogleDNSKeys, + "google_dns_managed_zone": dataGoogleDNSManagedZone, + "google_dns_managed_zones": dataGoogleDNSManagedZones, + "google_dns_managed_zone_iam_policy": dataGoogleDNSManagedZoneIamPolicy, + "google_dns_record_set": dataGoogleDNSRecordSet, + "google_endpoints_service_consumers_iam_policy": placeholder, + "google_endpoints_service_iam_policy": dataGoogleEndpointsServiceIamPolicy, + "google_filestore_instance": dataGoogleFilestoreInstance, + "google_folder": dataGoogleFolder, + "google_folder_iam_policy": dataGoogleFolderIamPolicy, + "google_folder_organization_policy": placeholder, + "google_folders": dataGoogleFolders, + "google_gemini_repository_group_iam_policy": dataGoogleGeminiRepositoryGroupIamPolicy, + "google_gke_backup_backup_plan_iam_policy": dataGoogleGkeBackupBackupPlanIamPolicy, + "google_gke_backup_restore_plan_iam_policy": dataGoogleGkeBackupRestorePlanIamPolicy, + "google_gke_hub_feature": dataGoogleGkeHubFeature, + "google_gke_hub_feature_iam_policy": dataGoogleGkeHubFeatureIamPolicy, + "google_gke_hub_membership": dataGoogleGkeHubMembership, + "google_gke_hub_membership_iam_policy": dataGoogleGkeHubMembershipIamPolicy, + "google_gke_hub_scope_iam_policy": dataGoogleGkeHubScopeIamPolicy, + "google_healthcare_consent_store_iam_policy": dataGoogleHealthcareConsentStoreIamPolicy, + "google_healthcare_dataset_iam_policy": dataGoogleHealthcareDatasetStoreIamPolicy, + "google_healthcare_dicom_store_iam_policy": dataGoogleHealthcareDicomStoreIamPolicy, + "google_healthcare_fhir_store_iam_policy": dataGoogleHealthcareFhirStoreIamPolicy, + "google_healthcare_hl7_v2_store_iam_policy": dataGoogleHealthcareHl7V2StoreIamPolicy, + "google_iam_policy": placeholder, + "google_iam_role": placeholder, + "google_iam_workload_identity_pool": dataGoogleIamWorkloadIdentityPool, + "google_iam_workload_identity_pool_iam_policy": dataGoogleIamWorkloadIdentityPoolIamPolicy, + "google_iam_workload_identity_pool_provider": dataGoogleIamWorkloadIdentityPoolProvider, + "google_iap_app_engine_service_iam_policy": dataGoogleIapAppEngineServiceIamPolicy, + "google_iap_app_engine_version_iam_policy": dataGoogleIapAppEngineVersionIamPolicy, + "google_iap_client": placeholder, + "google_iap_tunnel_dest_group_iam_policy": dataGoogleIapTunnelDestGroupIamPolicy, + "google_iap_tunnel_iam_policy": dataGoogleIapTunnelIamPolicy, + "google_iap_tunnel_instance_iam_policy": dataGoogleIapTunnelInstanceIamPolicy, + "google_iap_web_backend_service_iam_policy": dataGoogleIapWebBackendServiceIamPolicy, + "google_iap_web_cloud_run_service_iam_policy": dataGoogleIapWebCloudRunServiceIamPolicy, + "google_iap_web_iam_policy": dataGoogleIapWebIamPolicy, + "google_iap_web_region_backend_service_iam_policy": dataGoogleIapWebRegionBackendServiceIamPolicy, + "google_iap_web_type_app_engine_iam_policy": dataGoogleIapWebTypeAppEngineIamPolicy, + "google_iap_web_type_compute_iam_policy": dataGoogleIapWebTypeComputeIamPolicy, + "google_kms_autokey_config": placeholder, + "google_kms_crypto_key": dataGoogleKmsCryptoKey, + "google_kms_crypto_key_iam_policy": dataGoogleKmsCryptoKeyIamPolicy, + "google_kms_crypto_key_latest_version": placeholder, + "google_kms_crypto_key_version": dataGoogleKmsCryptoKeyVersion, + "google_kms_crypto_key_versions": placeholder, + "google_kms_crypto_keys": placeholder, + "google_kms_ekm_connection_iam_policy": dataGoogleEkmConnectionIamPolicy, + "google_kms_key_handle": dataGoogleKmsKeyHandle, + "google_kms_key_handles": dataGoogleKmsKeyHandles, + "google_kms_key_ring": dataGoogleKmsKeyRing, + "google_kms_key_ring_iam_policy": dataGoogleKmsKeyRingIamPolicy, + "google_kms_key_rings": dataGoogleKmsKeyRings, + "google_kms_secret": dataGoogleKmsSecret, + "google_kms_secret_asymmetric": dataGoogleKmsSecretAsymnetric, + "google_kms_secret_ciphertext": placeholder, + "google_logging_folder_settings": placeholder, + "google_logging_log_view_iam_policy": placeholder, + "google_logging_organization_settings": placeholder, + "google_logging_project_cmek_settings": dataGoogleLoggingProjectCmekSettings, + "google_logging_project_settings": dataGoogleLoggingProjectSettings, + "google_lustre_instance": dataGoogleLustreInstance, + "google_memcache_instance": dataGoogleMemcacheInstance, + "google_memorystore_instance": dataGoogleMemorystoreInstance, + "google_monitoring_app_engine_service": dataGoogleMonitoringAppEngineService, + "google_monitoring_cluster_istio_service": dataGoogleMonitoringClusterIstioService, + "google_monitoring_istio_canonical_service": dataGoogleMonitoringIstioCanonicalService, + "google_monitoring_mesh_istio_service": dataGoogleMonitoringMeshIstioService, + "google_monitoring_notification_channel": dataGoogleMonitoringNotificationChannel, + "google_monitoring_uptime_check_ips": placeholder, + "google_netblock_ip_ranges": placeholder, + "google_network_security_address_group_iam_policy": dataGoogleSecurityAddressGroupIamPolicy, + "google_notebooks_instance_iam_policy": dataGoogleNotebooksInstanceIamPolicy, + "google_notebooks_runtime_iam_policy": dataGoogleNotebooksRuntimeIamPolicy, + "google_oracle_database_autonomous_database": dataGoogleOracleDatabaseAutonomousDatabase, + "google_oracle_database_autonomous_databases": dataGoogleOracleDatabaseAutonomousDatabases, + "google_oracle_database_cloud_exadata_infrastructure": dataGoogleOracleDatabaseCloudExadataInfrastructure, + "google_oracle_database_cloud_exadata_infrastructures": dataGoogleOracleDatabaseCloudExadataInfrastructures, + "google_oracle_database_cloud_vm_cluster": dataGoogleOracleDatabaseCloudVMCluster, + "google_oracle_database_cloud_vm_clusters": dataGoogleOracleDatabaseCloudVMClusters, + "google_oracle_database_db_nodes": dataGoogleOracleDatabaseDBNodes, + "google_oracle_database_db_servers": dataGoogleOracleDatabaseDBServers, + "google_organization": placeholder, + "google_organization_iam_policy": dataGoogleOrganizationIamPolicy, + "google_parameter_manager_parameter": dataGoogleParameterManagerParameter, + "google_parameter_manager_parameter_version": dataGoogleParameterManagerParameterVersion, + "google_parameter_manager_parameter_version_render": dataGoogleParameterManagerParameterVersionRender, + "google_parameter_manager_parameters": dataGoogleParameterManagerParameters, + "google_parameter_manager_regional_parameter": dataGoogleParameterManagerRegionalParameter, + "google_parameter_manager_regional_parameter_version": dataGoogleParameterManagerRegionalParameterVersion, + "google_parameter_manager_regional_parameter_version_render": dataGoogleParameterManagerRegionalParameterVersionRender, + "google_parameter_manager_regional_parameters": dataGoogleParameterManagerRegionalParameters, + "google_privateca_ca_pool_iam_policy": dataGooglePrivatecaCaPoolIamPolicy, + "google_privateca_certificate_authority": dataGooglePrivatecaCertificateAuthority, + "google_privateca_certificate_template_iam_policy": dataGooglePrivatecaCertificateTemplateIamPolicy, + "google_privileged_access_manager_entitlement": dataGooglePrivilegedAccessManagerEntitlement, + "google_project": dataGoogleProject, + "google_project_iam_custom_role": dataGoogleProjectIamCustomRole, + "google_project_iam_custom_roles": dataGoogleProjectIamCustomRoles, + "google_project_iam_policy": dataGoogleProjectIamPolicy, + "google_project_organization_policy": dataGoogleProjectOrganizationPolicy, + "google_project_service": dataGoogleProjectService, + "google_projects": placeholder, + "google_pubsub_schema_iam_policy": placeholder, + "google_pubsub_subscription": dataGooglePubsubSubscription, + "google_pubsub_subscription_iam_policy": dataGooglePubsubSubscriptionIamPolicy, + "google_pubsub_topic": dataGooglePubsubTopic, + "google_pubsub_topic_iam_policy": dataGooglePubsubTopicIamPolicy, + "google_redis_instance": dataGoogleRedisInstance, + "google_runtimeconfig_config_iam_policy": dataGoogleRuntimeconfigConfigIamPolicy, + "google_scc_source_iam_policy": dataGoogleSccSourceIamPolicy, + "google_scc_v2_organization_source_iam_policy": dataGoogleSccV2OrganizationSourceIamPolicy, + "google_secret_manager_regional_secret": dataGoogleSecretManagerRegionalSecret, + "google_secret_manager_regional_secret_iam_policy": dataGoogleSecretManagerRegionalSecretIamPolicy, + "google_secret_manager_regional_secret_version": dataGoogleSecretManagerRegionalSecretVersion, + "google_secret_manager_regional_secret_version_access": dataGoogleSecretManagerRegionalSecretVersionAccess, + "google_secret_manager_regional_secrets": dataGoogleSecretManagerRegionalSecrets, + "google_secret_manager_secret": dataGoogleSecretManagerSecret, + "google_secret_manager_secret_iam_policy": dataGoogleSecretManagerSecretIamPolicy, + "google_secret_manager_secret_version": dataGoogleSecretManagerSecretVersion, + "google_secret_manager_secret_version_access": dataGoogleManagerSecretVersionAccess, + "google_secret_manager_secrets": dataGoogleSecretManagerSecrets, + "google_secure_source_manager_instance_iam_policy": dataGoogleSecureSourceManagerInstanceIamPolicy, + "google_secure_source_manager_repository_iam_policy": dataGoogleSecureSourceManagerRepositoryIamPolicy, + "google_service_account": dataGoogleServiceAccount, + "google_service_account_access_token": dataGoogleServiceAccountAccessToken, + "google_service_account_iam_policy": dataGoogleServiceAccountIamPolicy, + "google_service_account_id_token": placeholder, + "google_service_account_jwt": dataGoogleServiceAccountJwt, + "google_service_account_key": dataGoogleServiceAccountKey, + "google_service_accounts": dataGoogleServiceAccounts, + "google_service_directory_namespace_iam_policy": dataGoogleServiceDirectoryNamespaceIamPolicy, + "google_service_directory_service_iam_policy": dataGoogleServiceDirectoryServiceIamPolicy, + "google_sourcerepo_repository": dataGoogleSourcerepoRepository, + "google_sourcerepo_repository_iam_policy": dataGoogleSourcerepoRepositoryIamPolicy, + "google_spanner_database": dataGoogleSpannerDatabase, + "google_spanner_database_iam_policy": dataGoogleSpannerDatabaseIamPolicy, + "google_spanner_instance": dataGoogleSpannerInstance, + "google_spanner_instance_iam_policy": dataGoogleSpannerInstanceIamPolicy, + "google_sql_backup_run": dataGoogleSQLBackupRun, + "google_sql_ca_certs": placeholder, + "google_sql_database": dataGoogleSQLDatabase, + "google_sql_database_instance": dataGoogleSQLDatabaseInstance, + "google_sql_database_instance_latest_recovery_time": dataGoogleSQLDatabaseInstanceLatestRecoveryTime, + "google_sql_database_instances": dataGoogleSQLDatabaseInstances, + "google_sql_databases": dataGoogleSQLDatabases, + "google_sql_tiers": placeholder, + "google_storage_bucket": dataGoogleStorageBucket, + "google_storage_bucket_iam_policy": dataGoogleStorageBucketIamPolicy, + "google_storage_bucket_object": dataGoogleStorageBucketObject, + "google_storage_bucket_object_content": dataGoogleStorageBucketObjectContent, + "google_storage_bucket_objects": dataGoogleStorageBucketObjects, + "google_storage_buckets": dataGoogleStorageBuckets, + "google_storage_object_signed_url": placeholder, + "google_storage_project_service_account": dataGoogleStorageProjectServiceAccount, + "google_storage_transfer_project_service_account": dataGoogleStorageTransferProjectServiceAccount, + "google_tags_tag_key": dataGoogleTagsTagKey, + "google_tags_tag_key_iam_policy": dataGoogleTagsTagKeyIamPolicy, + "google_tags_tag_value_iam_policy": dataGoogleTagsTagValueIamPolicy, + "google_tpu_tensorflow_versions": dataGoogleTpuTensorflowVersions, + "google_tpu_v2_accelerator_types": dataGoogleTpuV2AcceleratorTypes, + "google_tpu_v2_runtime_versions": dataGoogleTpuV2RuntimeVersions, + "google_vertex_ai_endpoint_iam_policy": dataGoogleVertexAiEndpointIamPolicy, + "google_vertex_ai_feature_group_iam_policy": dataGoogleVertexAiFeatureGroupIamPolicy, + "google_vertex_ai_feature_online_store_featureview_iam_policy": dataGoogleVertexAiFeatureOnlineStoreFeatureviewIamPolicy, + "google_vertex_ai_feature_online_store_iam_policy": dataGoogleVertexAiFeatureOnlineStoreIamPolicy, + "google_vertex_ai_featurestore_entitytype_iam_policy": dataGoogleVertexAiFeaturestoreEntitytypeIamPolicy, + "google_vertex_ai_featurestore_iam_policy": dataGoogleVertexAiFeaturestoreIamPolicy, + "google_vmwareengine_cluster": placeholder, + "google_vmwareengine_external_access_rule": placeholder, + "google_vmwareengine_external_address": dataGoogleVmwareengineExternalAddress, + "google_vmwareengine_network": dataGoogleVmwareengineNetwork, + "google_vmwareengine_network_peering": dataGoogleVmwareengineNetworkPeering, + "google_vmwareengine_network_policy": dataGoogleVmwareengineNetworkPolicy, + "google_vmwareengine_nsx_credentials": dataGoogleVmwareengineNsxCredentials, + "google_vmwareengine_private_cloud": dataGoogleVmwareenginePrivateCloud, + "google_vmwareengine_subnet": dataGoogleVmwareengineSubnet, + "google_vmwareengine_vcenter_credentials": dataGoogleVmwareengineVcenterCredentials, + "google_vpc_access_connector": dataGoogleVpcAccessConnector, + "google_workbench_instance_iam_policy": dataGoogleWorkbenchInstanceIamPolicy, + "google_workstations_workstation_config_iam_policy": dataGoogleWorkstationsWorkstationConfigIamPolicy, + "google_workstations_workstation_iam_policy": dataGoogleWorkstationsWorkstationIamPolicy, + "google_tags_tag_keys": dataGoogleTagsTagKeys, + "google_tags_tag_value": dataGoogleTagsTagValue, + "google_tags_tag_values": dataGoogleTagsTagValues, + "google_storage_control_folder_intelligence_config": dataGoogleStorageControlFolderIntelligenceConfig, + "google_storage_control_organization_intelligence_config": dataGoogleStorageControlOrganizationIntelligenceConfig, + "google_storage_control_project_intelligence_config": dataGoogleStorageControlProjectIntelligenceConfig, + "google_site_verification_token": placeholder, + "google_runtimeconfig_config": dataGoogleRuntimeconfigConfig, + "google_runtimeconfig_variable": dataGoogleRuntimeconfigVariable, + "google_redis_cluster": dataGoogleRedisCluster, + "google_project_ancestry": dataGoogleProjectAncestry, + "google_access_context_manager_access_policy": dataGoogleAccessContextManagerAccessPolicy, + "google_cloud_identity_group_transitive_memberships": placeholder, + "google_dataplex_data_quality_rules": dataGoogleDataplexDataQualityRules, + "google_firebase_android_app_config": placeholder, + "google_firebase_apple_app_config": placeholder, + "google_firebase_web_app_config": placeholder, + "google_organizations": placeholder, + "google_organization_iam_custom_role": dataGoogleOrganizationIamCustomRole, + "google_organization_iam_custom_roles": dataGoogleOrganizationIamCustomRoles, + "google_compute_network_attachment": dataGoogleComputeNetworkAttachment, + "google_storage_insights_dataset_config": dataGoogleStorageInsightsDatasetConfig, + "google_artifact_registry_docker_images": dataGoogleArtifactRegistryDockerImages, + "google_iam_workforce_pool_iam_policy": dataGoogleIamWorkforcePoolIamPolicy, + "google_artifact_registry_repositories": dataGoogleArtifactRegistryRepositories, + "google_artifact_registry_version": dataGoogleArtifactRegistryVersion, + "google_artifact_registry_versions": dataGoogleArtifactRegistryVersions, + "google_artifact_registry_npm_package": dataGoogleArtifactRegistryNpmPackage, + "google_artifact_registry_tags": dataGoogleArtifactRegistryTags, + "google_iap_web_region_forwarding_rule_service_iam_policy": dataGoogleIapWebRegionForwardingRuleServiceIamPolicy, + "google_certificate_manager_dns_authorization": dataGoogleCertificateManagerDnsAuthorization, + "google_artifact_registry_python_package": dataGoogleArtifactRegistryPythonPackage, + "google_backup_dr_backup_plan_associations": dataGoogleBackupDrPlanAssociations, + "google_backup_dr_data_source_reference": dataGoogleBackupDrDataSourceReference, + "google_backup_dr_data_source_references": dataGoogleBackupDrDataSourceReferences, + "google_bigquery_datapolicyv2_data_policy_iam_policy": dataGoogleBigqueryDatapolicyv2DataPolicyIamPolicy, + "google_iap_web_forwarding_rule_service_iam_policy": dataGoogleIapForwardingRuleServiceIamPolicy, + "google_artifact_registry_maven_artifact": dataGoogleArtifactRegistryMavenArtifact, + "google_artifact_registry_maven_artifacts": dataGoogleArtifactRegistryMavenArtifacts, + "google_artifact_registry_npm_packages": dataGoogleArtifactRegistryNpmPackages, + "google_compute_interconnect_location": dataGoogleComputeInterconnectLocation, + "google_compute_interconnect_locations": dataGoogleComputeInterconnectLocations, + "google_artifact_registry_packages": dataGoogleArtifactRegistryPackages, } return TFLookup[result] diff --git a/src/gcp_policy.go b/src/gcp_policy.go index 0bca4b34..7dd80fd8 100644 --- a/src/gcp_policy.go +++ b/src/gcp_policy.go @@ -2,23 +2,32 @@ package pike import ( "bytes" + "context" _ "embed" // required for embed + "os" + "path/filepath" + "runtime" "strings" "text/template" + + //"github.com/go-git/go-git/v5/plumbing/format/config" + "golang.org/x/oauth2/google" + "google.golang.org/api/compute/v1" + "gopkg.in/ini.v1" ) const ( - DefaultPolicyName = "terraform_pike" - DefaultProject = "pike" - DefaultRoleID = "terraform_pike" + defaultPolicyName = "terraform_pike" + defaultProject = "pike" + defaultRoleID = "terraform_pike" ) //go:embed terraform.gcppolicy.template var policyGCPTemplate []byte // GCPPolicy create an IAM policy. -func GCPPolicy(permissions []string) (policy string, err error) { - if permissions == nil { +func GCPPolicy(permissions []string, policyName string) (string, error) { + if permissions == nil || len(permissions) == 0 { return "", &emptyPermissionsError{} } @@ -32,11 +41,23 @@ func GCPPolicy(permissions []string) (policy string, err error) { Permissions string // Comma-separated list of permissions } - PolicyName := DefaultPolicyName + var PolicyName string + + if policyName != "" { + PolicyName = policyName + } else { + PolicyName = defaultPolicyName + } + + project, err := getCurrentProject() + if err != nil { + project = defaultProject + } + theDetails := gCPPolicyDetails{ Name: PolicyName, - Project: DefaultProject, - RoleID: DefaultRoleID, + Project: project, + RoleID: PolicyName, Permissions: test, } @@ -48,10 +69,51 @@ func GCPPolicy(permissions []string) (policy string, err error) { } err = tmpl.Execute(&output, theDetails) - if err != nil { return "", &templateExecuteError{err} } return output.String(), nil } + +func getCurrentProject() (string, error) { + //many different ways to ensure that a value for a GCP project is found + if os.Getenv("GOOGLE_CLOUD_PROJECT") != "" { + return os.Getenv("GOOGLE_CLOUD_PROJECT"), nil + } + + if os.Getenv("GOOGLE_PROJECT") != "" { + return os.Getenv("GOOGLE_PROJECT"), nil + } + + if os.Getenv("GCP_PROJECT") != "" { + return os.Getenv("GCP_PROJECT"), nil + } + + ctx := context.Background() + credentials, err := google.FindDefaultCredentials(ctx, compute.ComputeScope) + + var configPath string + if err != nil || credentials.ProjectID == "" { + //gcloud info --format='value(config.paths.global_config_dir)' + if runtime.GOOS != "windows" { + configPath = filepath.Join(os.Getenv("HOME"), ".config", "gcloud", "configurations", "config_default") + } else { + configPath = filepath.Join(os.Getenv("APPDATA"), "gcloud", "configurations", "config_default") + } + + config, err := ini.Load(configPath) + + if err != nil { + return "", err + } + + projectID := config.Section("core").Key("project").String() + + return projectID, nil + } + result := credentials.ProjectID + + return result, nil + +} diff --git a/src/gcp_policy_test.go b/src/gcp_policy_test.go index f091ae54..16fdab3d 100644 --- a/src/gcp_policy_test.go +++ b/src/gcp_policy_test.go @@ -1,15 +1,16 @@ -package pike_test +package pike import ( _ "embed" + "os" + "path/filepath" + "runtime" "testing" - - pike "github.com/jameswoolfenden/pike/src" ) func TestGCPPolicy(t *testing.T) { t.Parallel() - + _ = os.Setenv("GCP_PROJECT", "pike-412922") type args struct { permissions []string } @@ -23,16 +24,22 @@ func TestGCPPolicy(t *testing.T) { { "basic", args{[]string{"bigquery.datasets.create", "bigquery.jobs.create"}}, - "resource\"google_project_iam_custom_role\"\"terraform_pike\"{project=\"pike\"role_id=\"terraform_pike\"title=\"terraform_pike\"description=\"Auserwithleastprivileges\"permissions=[\"bigquery.datasets.create\",\"bigquery.jobs.create\"]}", + "resource\"google_project_iam_custom_role\"\"terraform_pike\"{project=\"pike-412922\"role_id=\"terraform_pike\"title=\"terraform_pike\"description=\"Auserwithleastprivileges\"permissions=[\"bigquery.datasets.create\",\"bigquery.jobs.create\"]}", false, }, + { + "empty", + args{[]string{}}, + "", + true, + }, } for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.GCPPolicy(tt.args.permissions) + got, err := GCPPolicy(tt.args.permissions, "") if (err != nil) != tt.wantErr { t.Errorf("GCPPolicy() error = %v, wantErr %v", err, tt.wantErr) @@ -50,3 +57,324 @@ func TestGCPPolicy(t *testing.T) { }) } } + +func TestGetCurrentProject_EnvironmentVariables(t *testing.T) { + // Save original environment + originalGoogleCloudProject := os.Getenv("GOOGLE_CLOUD_PROJECT") + originalGoogleProject := os.Getenv("GOOGLE_PROJECT") + originalGcpProject := os.Getenv("GCP_PROJECT") + + // Clean up after test + defer func() { + _ = os.Setenv("GOOGLE_CLOUD_PROJECT", originalGoogleCloudProject) + _ = os.Setenv("GOOGLE_PROJECT", originalGoogleProject) + _ = os.Setenv("GCP_PROJECT", originalGcpProject) + }() + + tests := []struct { + name string + googleCloudProject string + googleProject string + gcpProject string + expectedProject string + }{ + { + name: "GOOGLE_CLOUD_PROJECT takes precedence", + googleCloudProject: "test-project-1", + googleProject: "test-project-2", + gcpProject: "test-project-3", + expectedProject: "test-project-1", + }, + { + name: "GOOGLE_PROJECT when GOOGLE_CLOUD_PROJECT empty", + googleProject: "test-project-2", + gcpProject: "test-project-3", + expectedProject: "test-project-2", + }, + { + name: "GCP_PROJECT when others empty", + gcpProject: "test-project-3", + expectedProject: "test-project-3", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + // Clear all environment variables + _ = os.Unsetenv("GOOGLE_CLOUD_PROJECT") + _ = os.Unsetenv("GOOGLE_PROJECT") + _ = os.Unsetenv("GCP_PROJECT") + + // Set test values + if tt.googleCloudProject != "" { + _ = os.Setenv("GOOGLE_CLOUD_PROJECT", tt.googleCloudProject) + } + if tt.googleProject != "" { + _ = os.Setenv("GOOGLE_PROJECT", tt.googleProject) + } + if tt.gcpProject != "" { + _ = os.Setenv("GCP_PROJECT", tt.gcpProject) + } + + project, err := getCurrentProject() + if err != nil { + t.Fatalf("Expected no error, got: %v", err) + } + + if project != tt.expectedProject { + t.Errorf("Expected project %s, got %s", tt.expectedProject, project) + } + }) + } +} + +func TestGetCurrentProject_GcloudConfigFile(t *testing.T) { + // Save original environment + originalGoogleCloudProject := os.Getenv("GOOGLE_CLOUD_PROJECT") + originalGoogleProject := os.Getenv("GOOGLE_PROJECT") + originalGcpProject := os.Getenv("GCP_PROJECT") + originalHome := os.Getenv("HOME") + originalAppData := os.Getenv("APPDATA") + + // Clean up after test + defer func() { + _ = os.Setenv("GOOGLE_CLOUD_PROJECT", originalGoogleCloudProject) + _ = os.Setenv("GOOGLE_PROJECT", originalGoogleProject) + _ = os.Setenv("GCP_PROJECT", originalGcpProject) + _ = os.Setenv("HOME", originalHome) + _ = os.Setenv("APPDATA", originalAppData) + }() + + // Clear environment variables to force config file reading + _ = os.Unsetenv("GOOGLE_CLOUD_PROJECT") + _ = os.Unsetenv("GOOGLE_PROJECT") + _ = os.Unsetenv("GCP_PROJECT") + + // Create temporary directory structure + tempDir := t.TempDir() + + var configPath string + if runtime.GOOS != "windows" { + _ = os.Setenv("HOME", tempDir) + configPath = filepath.Join(tempDir, ".config", "gcloud", "configurations", "config_default") + } else { + _ = os.Setenv("APPDATA", tempDir) + configPath = filepath.Join(tempDir, "gcloud", "configurations", "config_default") + } + + // Create directory structure + err := os.MkdirAll(filepath.Dir(configPath), 0755) + if err != nil { + t.Fatalf("Failed to create config directory: %v", err) + } + + // Create config file with project + configContent := `[core] +project = test-config-project +account = test@example.com + +[compute] +region = us-central1 +zone = us-central1-a +` + + err = os.WriteFile(configPath, []byte(configContent), 0644) + if err != nil { + t.Fatalf("Failed to write config file: %v", err) + } + + project, err := getCurrentProject() + if err != nil { + t.Fatalf("Expected no error, got: %v", err) + } + + if project != "test-config-project" { + t.Errorf("Expected project 'test-config-project', got '%s'", project) + } +} + +func TestGetCurrentProject_EmptyEnvironmentVariables(t *testing.T) { + // Save original environment + originalGoogleCloudProject := os.Getenv("GOOGLE_CLOUD_PROJECT") + originalGoogleProject := os.Getenv("GOOGLE_PROJECT") + originalGcpProject := os.Getenv("GCP_PROJECT") + + // Clean up after test + defer func() { + _ = os.Setenv("GOOGLE_CLOUD_PROJECT", originalGoogleCloudProject) + _ = os.Setenv("GOOGLE_PROJECT", originalGoogleProject) + _ = os.Setenv("GCP_PROJECT", originalGcpProject) + }() + + // Test empty string environment variables (should be treated as not set) + _ = os.Setenv("GOOGLE_CLOUD_PROJECT", "") + _ = os.Setenv("GOOGLE_PROJECT", "") + _ = os.Setenv("GCP_PROJECT", "") + + // This will likely fail due to no credentials or config file, but we're testing the logic + _, err := getCurrentProject() + // We expect an error since no valid project source is available + if err == nil { + t.Log("No error returned - likely found valid credentials or config file") + } +} + +func TestGetCurrentProject_MissingConfigFile(t *testing.T) { + // Save original environment + originalGoogleCloudProject := os.Getenv("GOOGLE_CLOUD_PROJECT") + originalGoogleProject := os.Getenv("GOOGLE_PROJECT") + originalGcpProject := os.Getenv("GCP_PROJECT") + originalHome := os.Getenv("HOME") + originalAppData := os.Getenv("APPDATA") + + // Clean up after test + defer func() { + _ = os.Setenv("GOOGLE_CLOUD_PROJECT", originalGoogleCloudProject) + _ = os.Setenv("GOOGLE_PROJECT", originalGoogleProject) + _ = os.Setenv("GCP_PROJECT", originalGcpProject) + _ = os.Setenv("HOME", originalHome) + _ = os.Setenv("APPDATA", originalAppData) + }() + + // Clear environment variables + _ = os.Unsetenv("GOOGLE_CLOUD_PROJECT") + _ = os.Unsetenv("GOOGLE_PROJECT") + _ = os.Unsetenv("GCP_PROJECT") + + // Set HOME/APPDATA to non-existent directory + tempDir := t.TempDir() + nonExistentDir := filepath.Join(tempDir, "nonexistent") + + if runtime.GOOS != "windows" { + _ = os.Setenv("HOME", nonExistentDir) + } else { + _ = os.Setenv("APPDATA", nonExistentDir) + } + + _, err := getCurrentProject() + if err == nil { + t.Log("No error returned - likely found valid credentials") + } +} + +func TestGetCurrentProject_InvalidConfigFile(t *testing.T) { + // Save original environment + originalGoogleCloudProject := os.Getenv("GOOGLE_CLOUD_PROJECT") + originalGoogleProject := os.Getenv("GOOGLE_PROJECT") + originalGcpProject := os.Getenv("GCP_PROJECT") + originalHome := os.Getenv("HOME") + originalAppData := os.Getenv("APPDATA") + + // Clean up after test + defer func() { + _ = os.Setenv("GOOGLE_CLOUD_PROJECT", originalGoogleCloudProject) + _ = os.Setenv("GOOGLE_PROJECT", originalGoogleProject) + _ = os.Setenv("GCP_PROJECT", originalGcpProject) + _ = os.Setenv("HOME", originalHome) + _ = os.Setenv("APPDATA", originalAppData) + }() + + // Clear environment variables + _ = os.Unsetenv("GOOGLE_CLOUD_PROJECT") + _ = os.Unsetenv("GOOGLE_PROJECT") + _ = os.Unsetenv("GCP_PROJECT") + + // Create temporary directory structure + tempDir := t.TempDir() + + var configPath string + if runtime.GOOS != "windows" { + _ = os.Setenv("HOME", tempDir) + configPath = filepath.Join(tempDir, ".config", "gcloud", "configurations", "config_default") + } else { + _ = os.Setenv("APPDATA", tempDir) + configPath = filepath.Join(tempDir, "gcloud", "configurations", "config_default") + } + + // Create directory structure + err := os.MkdirAll(filepath.Dir(configPath), 0755) + if err != nil { + t.Fatalf("Failed to create config directory: %v", err) + } + + // Create invalid config file + invalidConfigContent := `[core +project = test-project +invalid ini format +` + + err = os.WriteFile(configPath, []byte(invalidConfigContent), 0644) + if err != nil { + t.Fatalf("Failed to write invalid config file: %v", err) + } + + _, err = getCurrentProject() + if err == nil { + t.Log("No error returned - likely found valid credentials or ini parser was lenient") + } +} + +func TestGetCurrentProject_ConfigFileWithoutProject(t *testing.T) { + // Save original environment + originalGoogleCloudProject := os.Getenv("GOOGLE_CLOUD_PROJECT") + originalGoogleProject := os.Getenv("GOOGLE_PROJECT") + originalGcpProject := os.Getenv("GCP_PROJECT") + originalHome := os.Getenv("HOME") + originalAppData := os.Getenv("APPDATA") + + // Clean up after test + defer func() { + _ = os.Setenv("GOOGLE_CLOUD_PROJECT", originalGoogleCloudProject) + _ = os.Setenv("GOOGLE_PROJECT", originalGoogleProject) + _ = os.Setenv("GCP_PROJECT", originalGcpProject) + _ = os.Setenv("HOME", originalHome) + _ = os.Setenv("APPDATA", originalAppData) + }() + + // Clear environment variables + _ = os.Unsetenv("GOOGLE_CLOUD_PROJECT") + _ = os.Unsetenv("GOOGLE_PROJECT") + _ = os.Unsetenv("GCP_PROJECT") + + // Create temporary directory structure + tempDir := t.TempDir() + + var configPath string + if runtime.GOOS != "windows" { + _ = os.Setenv("HOME", tempDir) + configPath = filepath.Join(tempDir, ".config", "gcloud", "configurations", "config_default") + } else { + _ = os.Setenv("APPDATA", tempDir) + configPath = filepath.Join(tempDir, "gcloud", "configurations", "config_default") + } + + // Create directory structure + err := os.MkdirAll(filepath.Dir(configPath), 0755) + if err != nil { + t.Fatalf("Failed to create config directory: %v", err) + } + + // Create config file without project + configContent := `[core] +account = test@example.com + +[compute] +region = us-central1 +zone = us-central1-a +` + + err = os.WriteFile(configPath, []byte(configContent), 0644) + if err != nil { + t.Fatalf("Failed to write config file: %v", err) + } + + project, err := getCurrentProject() + if err != nil { + t.Fatalf("Expected no error, got: %v", err) + } + + // Should return empty string when no project is set in config + if project != "" { + t.Errorf("Expected empty project, got '%s'", project) + } +} diff --git a/src/gcp_test.go b/src/gcp_test.go index 17ce63d2..455a2a36 100644 --- a/src/gcp_test.go +++ b/src/gcp_test.go @@ -61,6 +61,7 @@ func TestGetGCPPermissions(t *testing.T) { "compute.subnetworks.useExternalIp", "compute.instances.setMetadata", "compute.instances.delete", + "compute.instances.get", "compute.instances.delete", }, }, @@ -116,6 +117,7 @@ func TestGetGCPResourcePermissions(t *testing.T) { "compute.subnetworks.useExternalIp", "compute.instances.setMetadata", "compute.instances.delete", + "compute.instances.get", "compute.instances.delete", }, }, @@ -167,6 +169,8 @@ func TestInvalidGCPResourceError(t *testing.T) { } func TestInvalidPermissionMapError(t *testing.T) { + t.Parallel() + tests := []struct { name string err error @@ -191,7 +195,10 @@ func TestInvalidPermissionMapError(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + t.Parallel() + err := invalidPermissionMapError{err: tt.err} + if got := err.Error(); got != tt.want { t.Errorf("invalidPermissionMapError.Error() = %v, want %v", got, tt.want) } diff --git a/src/gitHub.go b/src/gitHub.go index a436c929..718aec96 100644 --- a/src/gitHub.go +++ b/src/gitHub.go @@ -2,7 +2,6 @@ package pike import ( "context" - "errors" "fmt" "io" "net/http" @@ -35,8 +34,7 @@ func (m *verifyBranchError) Error() string { return fmt.Sprintf("failed to verify branch %s %s %s %v", m.branch, m.repo, m.owner, m.err) } -type nilResponseError struct { -} +type nilResponseError struct{} func (m *nilResponseError) Error() string { return "nil response" @@ -82,7 +80,7 @@ func InvokeGithubDispatchEvent(repository string, workflowFileName string, branc url := "https://api.github.com/repos/" + owner + "/" + repo + "/actions/workflows/" + workflowFileName - err = VerifyURL(url) + err = verifyURL(url) if err != nil { log.Error().Err(err) @@ -91,7 +89,7 @@ func InvokeGithubDispatchEvent(repository string, workflowFileName string, branc ctx, client := GetGithubClient() - err = VerifyBranch(client, owner, repo, branch) + err = verifyBranch(client, owner, repo, branch) if err != nil { log.Error().Err(err) @@ -140,13 +138,21 @@ func InvokeGithubDispatchEvent(repository string, workflowFileName string, branc return nil } -// VerifyBranch checks that a branch exists in a repo. -func VerifyBranch(client *github.Client, owner string, repo string, branch string) error { +type listBranchesError struct { + err error +} + +func (m *listBranchesError) Error() string { + return fmt.Sprintf("failed to list branches %v", m.err) +} + +// verifyBranch checks that a branch exists in a repo. +func verifyBranch(client *github.Client, owner string, repo string, branch string) error { ctx := context.Background() branches, _, err := client.Repositories.ListBranches(ctx, owner, repo, nil) if err != nil { - return err + return &listBranchesError{err} } found := false @@ -162,17 +168,26 @@ func VerifyBranch(client *github.Client, owner string, repo string, branch strin return nil } - return errors.New("branch " + branch + " not found for " + repo) + return &branchNotFoundError{branch, repo} +} + +type branchNotFoundError struct { + branch string + repo string +} + +func (m *branchNotFoundError) Error() string { + return fmt.Sprintf("branch %s not found for repo %s", m.branch, m.repo) } -// VerifyURL tests a url. -func VerifyURL(url string) error { +// verifyURL tests a url. +func verifyURL(url string) error { if //goland:noinspection HttpUrlsUsage strings.Contains(strings.ToLower(url), "http://") { return &insecureProtocolError{} } - resp, err := http.Get(url) + resp, err := http.Get(url) //nolint:gosec if resp == nil { return &nilResponseError{} diff --git a/src/gitHub_internal_test.go b/src/gitHub_internal_test.go new file mode 100644 index 00000000..33c4c757 --- /dev/null +++ b/src/gitHub_internal_test.go @@ -0,0 +1,170 @@ +package pike + +import ( + "errors" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestVerifyURL(t *testing.T) { + type args struct { + url string + } + //goland:noinspection HttpUrlsUsage + tests := []struct { + name string + args args + wantErr bool + }{ + {"google", args{"www.google.com"}, true}, + {"http", args{"http://www.google.com"}, true}, + {"https", args{"https://www.google.com"}, false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := verifyURL(tt.args.url); (err != nil) != tt.wantErr { + t.Errorf("verifyURL() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func Test_gitHubRateLimitingError_Error(t *testing.T) { + tests := []struct { + name string + want string + }{ + {"Invoke", "you are being GitHub Rate-limited"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &gitHubRateLimitingError{} + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_insecureProtocolError_Error(t *testing.T) { + tests := []struct { + name string + want string + }{ + {"Invoke", "insecure protocol"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &insecureProtocolError{} + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_nilResponseError_Error(t *testing.T) { + tests := []struct { + name string + want string + }{ + {"Invoke", "nil response"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &nilResponseError{} + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_nonSuccessError_Error(t *testing.T) { + type fields struct { + response string + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"Invoke", fields{"test", errors.New("test")}, "non success response test test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &nonSuccessError{ + response: tt.fields.response, + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_verifyBranchError_Error(t *testing.T) { + type fields struct { + branch string + repo string + owner string + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"Invoke", fields{"branchtest", "repotest", "ownertest", errors.New("test")}, "failed to verify branch branchtest repotest ownertest test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &verifyBranchError{ + branch: tt.fields.branch, + repo: tt.fields.repo, + owner: tt.fields.owner, + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_verifyURLError_Error(t *testing.T) { + type fields struct { + url string + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"Invoke", fields{"https://www.google.com", errors.New("test")}, "failed to verify URL https://www.google.com test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &verifyURLError{ + url: tt.fields.url, + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_workflowInvokeError_Error(t *testing.T) { + type fields struct { + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"Invoke", fields{errors.New("test")}, "failed to invoke workflow test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &workflowInvokeError{ + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} diff --git a/src/gitHub_test.go b/src/gitHub_test.go index 8a78fd02..3f8c6590 100644 --- a/src/gitHub_test.go +++ b/src/gitHub_test.go @@ -38,26 +38,3 @@ func TestInvokeGithubDispatchEvent(t *testing.T) { }) } } - -func TestVerifyURL(t *testing.T) { - type args struct { - url string - } - //goland:noinspection HttpUrlsUsage - tests := []struct { - name string - args args - wantErr bool - }{ - {"google", args{"www.google.com"}, true}, - {"http", args{"http://www.google.com"}, true}, - {"https", args{"https://www.google.com"}, false}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if err := pike.VerifyURL(tt.args.url); (err != nil) != tt.wantErr { - t.Errorf("VerifyURL() error = %v, wantErr %v", err, tt.wantErr) - } - }) - } -} diff --git a/src/inspect.go b/src/inspect.go index 087b8455..6367f664 100644 --- a/src/inspect.go +++ b/src/inspect.go @@ -13,7 +13,7 @@ type PolicyDiff struct { Under []string } -const Allow = "Allow" +const allow = "Allow" type identityParseError struct { err error @@ -44,7 +44,7 @@ func Inspect(directory string, init bool) (PolicyDiff, error) { var Difference PolicyDiff - rawIACPolicy, err := MakePolicy(directory, nil, init, false) + rawIACPolicy, err := MakePolicy(directory, nil, init, false, "", "") if err != nil { if errors.Is(err, &emptyIACError{}) { log.Info().Msgf("nothing to do for IAC as %s for directory %s", err, directory) @@ -54,7 +54,6 @@ func Inspect(directory string, init bool) (PolicyDiff, error) { } iacPolicy, err = Identity.Parse(rawIACPolicy.AWS.JSONOut) - if err != nil { if errors.Is(err, &Identity.EmptyParseError{}) { log.Info().Msgf("nothing to do for IAC as parse for %s was empty", directory) @@ -70,7 +69,7 @@ func Inspect(directory string, init bool) (PolicyDiff, error) { return Difference, &getIAMError{err: err} } - Difference, err = CompareAllow(iamIdentity, iacPolicy) + Difference, err = compareAllow(iamIdentity, iacPolicy) if err != nil { return Difference, &compareAllowError{err: err} } @@ -78,14 +77,20 @@ func Inspect(directory string, init bool) (PolicyDiff, error) { return Difference, nil } -func CompareAllow(identity Identity.IAM, policy Identity.Policy) (PolicyDiff, error) { +type policyDifferenceError struct{} + +func (m *policyDifferenceError) Error() string { + return "invalid input: empty or nil policies/statements" +} + +func compareAllow(identity Identity.IAM, policy Identity.Policy) (PolicyDiff, error) { // Add at start of function if identity.Policies == nil || policy.Statements == nil { - return PolicyDiff{}, errors.New("invalid input: nil policies or statements") + return PolicyDiff{}, &policyDifferenceError{} } if len(identity.Policies) == 0 || len(policy.Statements) == 0 { - return PolicyDiff{}, errors.New("invalid input: empty policies or statements") + return PolicyDiff{}, &policyDifferenceError{} } identityAllows := make([]string, 0, len(identity.Policies)*2) @@ -98,7 +103,7 @@ func CompareAllow(identity Identity.IAM, policy Identity.Policy) (PolicyDiff, er if statements != nil { for _, statement := range identityPolicy.Statements { - if statement.Effect == Allow { + if statement.Effect == allow { identityAllows = append(identityAllows, statement.Action...) } } @@ -106,7 +111,7 @@ func CompareAllow(identity Identity.IAM, policy Identity.Policy) (PolicyDiff, er } for _, policyStatement := range policy.Statements { - if policyStatement.Effect == Allow { + if policyStatement.Effect == allow { policyAllows = append(policyAllows, policyStatement.Action...) } } diff --git a/src/inspect_internal_test.go b/src/inspect_internal_test.go new file mode 100644 index 00000000..581c16ad --- /dev/null +++ b/src/inspect_internal_test.go @@ -0,0 +1,274 @@ +package pike + +import ( + "errors" + "reflect" + "testing" + + Identity "github.com/jameswoolfenden/identity/src" + "github.com/stretchr/testify/assert" +) + +func Test_compareAllowError_Error(t *testing.T) { + type fields struct { + err error + } + tests := []struct { + name string + fields fields + want string + }{ + { + "invoke", fields{errors.New("basic")}, "compare allow error basic", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &compareAllowError{ + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_getIAMError_Error(t *testing.T) { + type fields struct { + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"invoke", fields{errors.New("test")}, "get IAM error test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &getIAMError{ + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func Test_identityParseError_Error(t *testing.T) { + type fields struct { + err error + } + tests := []struct { + name string + fields fields + want string + }{ + {"invoke", fields{errors.New("test")}, "Identity parsing error test"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := &identityParseError{ + err: tt.fields.err, + } + assert.Equalf(t, tt.want, m.Error(), "Error()") + }) + } +} + +func TestCompareAllow(t *testing.T) { + type args struct { + identity Identity.IAM + policy Identity.Policy + } + + var identity Identity.IAM + var moreIdentity Identity.IAM + moreIdentity.Policies = make([]Identity.Policy, 1) + moreIdentity.Policies[0].Statements = make([]Identity.Statement, 1) + moreIdentity.Policies[0].Statements[0] = Identity.Statement{ + Sid: "", + Effect: "Allow", + Action: []string{"s3:*", "s3-object-lambda:*"}, + Resource: []string{"*"}, + } + var policy Identity.Policy + + statements := make([]Identity.Statement, 1) + statements[0] = Identity.Statement{ + Sid: "", + Effect: "Allow", + Action: []string{"s3:*", "s3-object-lambda:*"}, + Resource: []string{"*"}, + } + + var morePolicy Identity.Policy + morePolicy.Statements = statements + + tests := []struct { + name string + args args + want PolicyDiff + wantErr bool + }{ + { + "pass empty", + args{identity, policy}, + PolicyDiff{}, + true, + }, + { + "pass not empty", + args{identity, morePolicy}, + PolicyDiff{nil, nil}, + true, + }, + { + "pass", + args{moreIdentity, morePolicy}, + PolicyDiff{}, + false, + }, + { + "different", + args{moreIdentity, policy}, + PolicyDiff{nil, nil}, + true, + }, + //todo more testcases + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := compareAllow(tt.args.identity, tt.args.policy) + if (err != nil) != tt.wantErr { + t.Errorf("CompareAllow() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("CompareAllow() got = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_contains(t *testing.T) { + type args struct { + s []string + e string + } + tests := []struct { + name string + args args + want bool + }{ + {"found", args{[]string{"foo", "bar"}, "foo"}, true}, + {"not found", args{[]string{"foo", "bar"}, "bart"}, false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := contains(tt.args.s, tt.args.e); got != tt.want { + t.Errorf("contains() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestPolicyDiff_Empty(t *testing.T) { + tests := []struct { + name string + pd PolicyDiff + want bool + }{ + { + name: "both nil", + pd: PolicyDiff{nil, nil}, + want: true, + }, + { + name: "empty slices", + pd: PolicyDiff{[]string{}, []string{}}, + want: true, + }, + { + name: "over nil under empty", + pd: PolicyDiff{nil, []string{}}, + want: true, + }, + { + name: "over empty under nil", + pd: PolicyDiff{[]string{}, nil}, + want: true, + }, + { + name: "over with content", + pd: PolicyDiff{[]string{"s3:GetObject"}, nil}, + want: false, + }, + { + name: "under with content", + pd: PolicyDiff{nil, []string{"s3:PutObject"}}, + want: false, + }, + { + name: "both with content", + pd: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, + want: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := len(tt.pd.Over) == 0 && len(tt.pd.Under) == 0 + if got != tt.want { + t.Errorf("PolicyDiff empty check = %v, want %v", got, tt.want) + } + }) + } +} + +func TestPolicyDiff_Equal(t *testing.T) { + tests := []struct { + name string + first PolicyDiff + second PolicyDiff + wantSame bool + }{ + { + name: "identical empty", + first: PolicyDiff{}, + second: PolicyDiff{}, + wantSame: true, + }, + { + name: "identical with content", + first: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, + second: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, + wantSame: true, + }, + { + name: "different over", + first: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, + second: PolicyDiff{[]string{"s3:ListBucket"}, []string{"s3:PutObject"}}, + wantSame: false, + }, + { + name: "different under", + first: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, + second: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:DeleteObject"}}, + wantSame: false, + }, + { + name: "different lengths", + first: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, + second: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject", "s3:DeleteObject"}}, + wantSame: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := reflect.DeepEqual(tt.first, tt.second) + if got != tt.wantSame { + t.Errorf("PolicyDiff equality check = %v, want %v", got, tt.wantSame) + } + }) + } +} diff --git a/src/inspect_test.go b/src/inspect_test.go index 915400ff..b509db28 100644 --- a/src/inspect_test.go +++ b/src/inspect_test.go @@ -49,13 +49,13 @@ func TestCompareAllow(t *testing.T) { "pass empty", args{identity, policy}, PolicyDiff{}, - false, + true, }, { "pass not empty", args{identity, morePolicy}, - PolicyDiff{nil, []string{"s3:*", "s3-object-lambda:*"}}, - false, + PolicyDiff{nil, nil}, + true, }, { "pass", @@ -66,13 +66,14 @@ func TestCompareAllow(t *testing.T) { { "different", args{moreIdentity, policy}, - PolicyDiff{[]string{"s3:*", "s3-object-lambda:*"}, nil}, - false, + PolicyDiff{nil, nil}, + true, }, + //todo more testcases } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := CompareAllow(tt.args.identity, tt.args.policy) + got, err := compareAllow(tt.args.identity, tt.args.policy) if (err != nil) != tt.wantErr { t.Errorf("CompareAllow() error = %v, wantErr %v", err, tt.wantErr) return @@ -113,130 +114,6 @@ func TestInspect(t *testing.T) { } } -func Test_contains(t *testing.T) { - type args struct { - s []string - e string - } - tests := []struct { - name string - args args - want bool - }{ - {"found", args{[]string{"foo", "bar"}, "foo"}, true}, - {"not found", args{[]string{"foo", "bar"}, "bart"}, false}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if got := contains(tt.args.s, tt.args.e); got != tt.want { - t.Errorf("contains() = %v, want %v", got, tt.want) - } - }) - } -} - -func TestPolicyDiff_Empty(t *testing.T) { - tests := []struct { - name string - pd PolicyDiff - want bool - }{ - { - name: "both nil", - pd: PolicyDiff{nil, nil}, - want: true, - }, - { - name: "empty slices", - pd: PolicyDiff{[]string{}, []string{}}, - want: true, - }, - { - name: "over nil under empty", - pd: PolicyDiff{nil, []string{}}, - want: true, - }, - { - name: "over empty under nil", - pd: PolicyDiff{[]string{}, nil}, - want: true, - }, - { - name: "over with content", - pd: PolicyDiff{[]string{"s3:GetObject"}, nil}, - want: false, - }, - { - name: "under with content", - pd: PolicyDiff{nil, []string{"s3:PutObject"}}, - want: false, - }, - { - name: "both with content", - pd: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, - want: false, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got := len(tt.pd.Over) == 0 && len(tt.pd.Under) == 0 - if got != tt.want { - t.Errorf("PolicyDiff empty check = %v, want %v", got, tt.want) - } - }) - } -} - -func TestPolicyDiff_Equal(t *testing.T) { - tests := []struct { - name string - first PolicyDiff - second PolicyDiff - wantSame bool - }{ - { - name: "identical empty", - first: PolicyDiff{}, - second: PolicyDiff{}, - wantSame: true, - }, - { - name: "identical with content", - first: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, - second: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, - wantSame: true, - }, - { - name: "different over", - first: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, - second: PolicyDiff{[]string{"s3:ListBucket"}, []string{"s3:PutObject"}}, - wantSame: false, - }, - { - name: "different under", - first: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, - second: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:DeleteObject"}}, - wantSame: false, - }, - { - name: "different lengths", - first: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject"}}, - second: PolicyDiff{[]string{"s3:GetObject"}, []string{"s3:PutObject", "s3:DeleteObject"}}, - wantSame: false, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got := reflect.DeepEqual(tt.first, tt.second) - if got != tt.wantSame { - t.Errorf("PolicyDiff equality check = %v, want %v", got, tt.wantSame) - } - }) - } -} - func TestInspectExtended(t *testing.T) { type args struct { directory string @@ -245,8 +122,10 @@ func TestInspectExtended(t *testing.T) { myDiff := PolicyDiff{ Over: []string{"ssm:DescribePatchBaselines"}, - Under: []string{"dynamodb:DeleteItem", "dynamodb:DescribeTable", "dynamodb:GetItem", "dynamodb:PutItem", - "s3:DeleteObject", "s3:GetObject", "s3:ListBucket", "s3:PutObject"}, + Under: []string{ + "dynamodb:DeleteItem", "dynamodb:DescribeTable", "dynamodb:GetItem", "dynamodb:PutItem", + "s3:DeleteObject", "s3:GetObject", "s3:ListBucket", "s3:PutObject", + }, } tests := []struct { @@ -265,7 +144,7 @@ func TestInspectExtended(t *testing.T) { // wantErr: true, //}, { - //its comparing + // its comparing name: "init true", args: args{ directory: "../terraform/aws", diff --git a/src/make.go b/src/make.go index cb80ac3d..242e70f8 100644 --- a/src/make.go +++ b/src/make.go @@ -2,7 +2,6 @@ package pike import ( "context" - "errors" "fmt" "os" "os/exec" @@ -17,11 +16,10 @@ import ( // Make creates the required role. func Make(directory string) (*string, error) { if directory == "" { - return nil, errors.New("directory is required") + return nil, &directoryNotFoundError{directory: directory} } - err := Scan(directory, "terraform", nil, true, true, false) - + err := Scan(directory, "terraform", nil, true, true, false, "", "", "") if err != nil { return nil, fmt.Errorf("failed to scan directory: %w", err) } @@ -31,7 +29,7 @@ func Make(directory string) (*string, error) { return nil, &absolutePathError{directory, err} } - policyPath, err := filepath.Abs(path.Join(directory, ".pike/")) + policyPath, err := filepath.Abs(path.Join(directory, ".pike")) if err != nil { return nil, &absolutePathError{directory, err} } @@ -51,7 +49,7 @@ func Make(directory string) (*string, error) { myValue, ok := arn.Value.(string) if !ok { - return nil, fmt.Errorf("arn value is not a string") + return nil, &castToStringError{"arn"} } log.Info().Msgf("aws role create/updated %s", myValue) @@ -59,13 +57,27 @@ func Make(directory string) (*string, error) { role, ok := arn.Value.(string) if !ok { - return nil, fmt.Errorf("arn value is not a string") + return nil, &castToStringError{"arn"} } return &role, nil } - return nil, errors.New("no arn found in state") + return nil, &arnNotFoundInStateError{} +} + +type castToStringError struct { + value string +} + +func (e *castToStringError) Error() string { + return fmt.Sprint("cannot convert ", e.value, " to a string") +} + +type arnNotFoundInStateError struct{} + +func (e *arnNotFoundInStateError) Error() string { + return "no arn found in state" } func tfApply(policyPath string) (*tfexec.Terraform, error) { @@ -76,7 +88,7 @@ func tfApply(policyPath string) (*tfexec.Terraform, error) { terraform, err := tfexec.NewTerraform(policyPath, tfPath) if err != nil { - return nil, err + return nil, &terraformNewError{err: err} } err = terraform.Init(context.Background(), tfexec.Upgrade(true)) @@ -88,9 +100,8 @@ func tfApply(policyPath string) (*tfexec.Terraform, error) { defer cancel() err = terraform.Apply(ctx) - if err != nil { - return nil, &terraformApplyError{err: err} + return nil, &terraformApplyError{err: err, target: policyPath} } return terraform, nil @@ -152,7 +163,6 @@ func tfPlan(policyPath string) error { cmd := exec.Command(terraform.ExecPath(), chdir, "plan", "--out", "tf.plan") stdout, err := cmd.Output() - if err != nil { return &terraformPlanError{err} } diff --git a/src/make_internal_test.go b/src/make_internal_test.go new file mode 100644 index 00000000..c16d7781 --- /dev/null +++ b/src/make_internal_test.go @@ -0,0 +1,43 @@ +package pike + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_arnNotFoundInStateError_Error(t *testing.T) { + tests := []struct { + name string + want string + }{ + {"Invoke", "no arn found in state"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &arnNotFoundInStateError{} + assert.Equalf(t, tt.want, e.Error(), "Error()") + }) + } +} + +func Test_castToStringError_Error(t *testing.T) { + type fields struct { + value string + } + tests := []struct { + name string + fields fields + want string + }{ + {"Invoke", fields{"test"}, "cannot convert test to a string"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &castToStringError{ + value: tt.fields.value, + } + assert.Equalf(t, tt.want, e.Error(), "Error()") + }) + } +} diff --git a/src/mapping/aws/data/account/aws_account_primary_contact.json b/src/mapping/aws/data/account/aws_account_primary_contact.json new file mode 100644 index 00000000..f47acf5a --- /dev/null +++ b/src/mapping/aws/data/account/aws_account_primary_contact.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "account:GetContactInformation" + ] + } +] diff --git a/src/mapping/aws/data/appconfig/aws_appconfig_application.json b/src/mapping/aws/data/appconfig/aws_appconfig_application.json new file mode 100644 index 00000000..d1cdcebd --- /dev/null +++ b/src/mapping/aws/data/appconfig/aws_appconfig_application.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "appconfig:ListApplications" + ] + } +] diff --git a/src/mapping/aws/data/backend/s3.json b/src/mapping/aws/data/backend/s3.json new file mode 100644 index 00000000..263db0b4 --- /dev/null +++ b/src/mapping/aws/data/backend/s3.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "dynamodb:PutItem", + "dynamodb:DeleteItem", + "dynamodb:GetItem", + "dynamodb:DescribeTable", + "s3:ListBucket", + "s3:PutObject", + "s3:GetObject", + "s3:DeleteObject" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/data/billing/aws_billing_views.json b/src/mapping/aws/data/billing/aws_billing_views.json new file mode 100644 index 00000000..349f67c9 --- /dev/null +++ b/src/mapping/aws/data/billing/aws_billing_views.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "billing:ListBillingViews" + ] + } +] diff --git a/src/mapping/aws/data/cloudwatch/aws_cloudwatch_contributor_managed_insight_rules.json b/src/mapping/aws/data/cloudwatch/aws_cloudwatch_contributor_managed_insight_rules.json new file mode 100644 index 00000000..8ff75631 --- /dev/null +++ b/src/mapping/aws/data/cloudwatch/aws_cloudwatch_contributor_managed_insight_rules.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudwatch:ListManagedInsightRules" + ] + } +] diff --git a/src/mapping/aws/data/cloudwatch/aws_cloudwatch_event_buses.json b/src/mapping/aws/data/cloudwatch/aws_cloudwatch_event_buses.json new file mode 100644 index 00000000..0cfce7a7 --- /dev/null +++ b/src/mapping/aws/data/cloudwatch/aws_cloudwatch_event_buses.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "events:ListEventBuses" + ] + } +] diff --git a/src/mapping/aws/data/datazone/aws_datazone_domain.json b/src/mapping/aws/data/datazone/aws_datazone_domain.json new file mode 100644 index 00000000..148bda1f --- /dev/null +++ b/src/mapping/aws/data/datazone/aws_datazone_domain.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "datazone:ListDomains" + ] + } +] diff --git a/src/mapping/aws/data/dynamodb/aws_dynamodb_tables.json b/src/mapping/aws/data/dynamodb/aws_dynamodb_tables.json new file mode 100644 index 00000000..af7469db --- /dev/null +++ b/src/mapping/aws/data/dynamodb/aws_dynamodb_tables.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dynamodb:ListTables" + ] + } +] diff --git a/src/mapping/aws/data/ec2/aws_network_interface.json b/src/mapping/aws/data/ec2/aws_network_interface.json new file mode 100644 index 00000000..8abbb17d --- /dev/null +++ b/src/mapping/aws/data/ec2/aws_network_interface.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "ec2:DescribeNetworkInterfaces" + ] + } +] diff --git a/src/mapping/aws/data/ec2/aws_vpc_endpoint_associations.json b/src/mapping/aws/data/ec2/aws_vpc_endpoint_associations.json new file mode 100644 index 00000000..4f8ca3f7 --- /dev/null +++ b/src/mapping/aws/data/ec2/aws_vpc_endpoint_associations.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "ec2:DescribeVpcEndpointAssociations" + ] + } +] diff --git a/src/mapping/aws/data/ec2/aws_vpc_ipam.json b/src/mapping/aws/data/ec2/aws_vpc_ipam.json new file mode 100644 index 00000000..27bd8b6f --- /dev/null +++ b/src/mapping/aws/data/ec2/aws_vpc_ipam.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "ec2:DescribeIpams" + ] + } +] diff --git a/src/mapping/aws/data/ec2/aws_vpn_connection.json b/src/mapping/aws/data/ec2/aws_vpn_connection.json new file mode 100644 index 00000000..8d297004 --- /dev/null +++ b/src/mapping/aws/data/ec2/aws_vpn_connection.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "ec2:DescribeVpnConnections" + ] + } +] diff --git a/src/mapping/aws/data/ecr-public/aws_ecrpublic_images.json b/src/mapping/aws/data/ecr-public/aws_ecrpublic_images.json new file mode 100644 index 00000000..007d998a --- /dev/null +++ b/src/mapping/aws/data/ecr-public/aws_ecrpublic_images.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "ecr-public:DescribeImages" + ] + } +] diff --git a/src/mapping/aws/data/ecr/aws_ecr_images.json b/src/mapping/aws/data/ecr/aws_ecr_images.json new file mode 100644 index 00000000..f5aaf48e --- /dev/null +++ b/src/mapping/aws/data/ecr/aws_ecr_images.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "ecr:ListImages" + ] + } +] diff --git a/src/mapping/aws/data/ecs/aws_ecs_clusters.json b/src/mapping/aws/data/ecs/aws_ecs_clusters.json new file mode 100644 index 00000000..664b7b59 --- /dev/null +++ b/src/mapping/aws/data/ecs/aws_ecs_clusters.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "ecs:ListClusters" + ] + } +] diff --git a/src/mapping/aws/data/eks/aws_eks_cluster_versions.json b/src/mapping/aws/data/eks/aws_eks_cluster_versions.json new file mode 100644 index 00000000..71afd7f7 --- /dev/null +++ b/src/mapping/aws/data/eks/aws_eks_cluster_versions.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "eks:DescribeClusterVersions" + ] + } +] diff --git a/src/mapping/aws/data/elasticloadbalancing/aws_elb.json b/src/mapping/aws/data/elasticloadbalancing/aws_elb.json new file mode 100644 index 00000000..9235b33d --- /dev/null +++ b/src/mapping/aws/data/elasticloadbalancing/aws_elb.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + } +] diff --git a/src/mapping/aws/data/fis/aws_fis_experiment_templates.json b/src/mapping/aws/data/fis/aws_fis_experiment_templates.json new file mode 100644 index 00000000..ed6b1d15 --- /dev/null +++ b/src/mapping/aws/data/fis/aws_fis_experiment_templates.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "fis:ListExperimentTemplates" + ] + } +] diff --git a/src/mapping/aws/data/identitystore/aws_identitystore_group_memberships.json b/src/mapping/aws/data/identitystore/aws_identitystore_group_memberships.json new file mode 100644 index 00000000..cecd87ba --- /dev/null +++ b/src/mapping/aws/data/identitystore/aws_identitystore_group_memberships.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "identitystore:ListGroupMemberships" + ] + } +] diff --git a/src/mapping/aws/data/identitystore/aws_identitystore_users.json b/src/mapping/aws/data/identitystore/aws_identitystore_users.json new file mode 100644 index 00000000..55607392 --- /dev/null +++ b/src/mapping/aws/data/identitystore/aws_identitystore_users.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "identitystore:ListUsers" + ] + } +] diff --git a/src/mapping/aws/data/kms/aws_kms_public_key.json b/src/mapping/aws/data/kms/aws_kms_public_key.json new file mode 100644 index 00000000..46cc46bb --- /dev/null +++ b/src/mapping/aws/data/kms/aws_kms_public_key.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "kms:GetPublicKey" + ] + } +] diff --git a/src/mapping/aws/data/lambda/aws_lambda_function_url.json b/src/mapping/aws/data/lambda/aws_lambda_function_url.json new file mode 100644 index 00000000..1a68e69b --- /dev/null +++ b/src/mapping/aws/data/lambda/aws_lambda_function_url.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "lambda:GetFunctionUrlConfig" + ] + } +] diff --git a/src/mapping/aws/data/lambda/aws_lambda_functions.json b/src/mapping/aws/data/lambda/aws_lambda_functions.json new file mode 100644 index 00000000..459333dd --- /dev/null +++ b/src/mapping/aws/data/lambda/aws_lambda_functions.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "lambda:ListFunctions" + ] + } +] diff --git a/src/mapping/aws/data/lambda/aws_lambda_layer_version.json b/src/mapping/aws/data/lambda/aws_lambda_layer_version.json new file mode 100644 index 00000000..e209baca --- /dev/null +++ b/src/mapping/aws/data/lambda/aws_lambda_layer_version.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "lambda:ListLayerVersions" + ] + } +] diff --git a/src/mapping/aws/data/mediaconvert/aws_media_convert_queue.json b/src/mapping/aws/data/mediaconvert/aws_media_convert_queue.json new file mode 100644 index 00000000..39894073 --- /dev/null +++ b/src/mapping/aws/data/mediaconvert/aws_media_convert_queue.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "mediaconvert:GetQueue", + "mediaconvert:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/data/memorydb/aws_memorydb_acl.json b/src/mapping/aws/data/memorydb/aws_memorydb_acl.json new file mode 100644 index 00000000..4105d11d --- /dev/null +++ b/src/mapping/aws/data/memorydb/aws_memorydb_acl.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "memorydb:DescribeACLs" + ] + } +] diff --git a/src/mapping/aws/data/memorydb/aws_memorydb_cluster.json b/src/mapping/aws/data/memorydb/aws_memorydb_cluster.json new file mode 100644 index 00000000..c71d85b7 --- /dev/null +++ b/src/mapping/aws/data/memorydb/aws_memorydb_cluster.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "memorydb:DescribeClusters" + ] + } +] diff --git a/src/mapping/aws/data/memorydb/aws_memorydb_parameter_group.json b/src/mapping/aws/data/memorydb/aws_memorydb_parameter_group.json new file mode 100644 index 00000000..86534bb6 --- /dev/null +++ b/src/mapping/aws/data/memorydb/aws_memorydb_parameter_group.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "memorydb:DescribeParameterGroups" + ] + } +] diff --git a/src/mapping/aws/data/memorydb/aws_memorydb_snapshot.json b/src/mapping/aws/data/memorydb/aws_memorydb_snapshot.json new file mode 100644 index 00000000..e566c281 --- /dev/null +++ b/src/mapping/aws/data/memorydb/aws_memorydb_snapshot.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "memorydb:DescribeSnapshots" + ] + } +] diff --git a/src/mapping/aws/data/memorydb/aws_memorydb_subnet_group.json b/src/mapping/aws/data/memorydb/aws_memorydb_subnet_group.json new file mode 100644 index 00000000..42557913 --- /dev/null +++ b/src/mapping/aws/data/memorydb/aws_memorydb_subnet_group.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "memorydb:DescribeSubnetGroups", + "memorydb:ListTags" + ] + } +] diff --git a/src/mapping/aws/data/memorydb/aws_memorydb_user.json b/src/mapping/aws/data/memorydb/aws_memorydb_user.json new file mode 100644 index 00000000..d02d86d1 --- /dev/null +++ b/src/mapping/aws/data/memorydb/aws_memorydb_user.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "memorydb:DescribeUser", + "memorydb:DescribeUsers" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_cloud_autonomous_vm_cluster.json b/src/mapping/aws/data/odb/aws_odb_cloud_autonomous_vm_cluster.json new file mode 100644 index 00000000..8801ad3e --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_cloud_autonomous_vm_cluster.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:GetCloudAutonomousVmCluster" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_cloud_autonomous_vm_clusters.json b/src/mapping/aws/data/odb/aws_odb_cloud_autonomous_vm_clusters.json new file mode 100644 index 00000000..d6618a15 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_cloud_autonomous_vm_clusters.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "odb:ListCloudAutonomousVmClusters" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_cloud_exadata_infrastructure.json b/src/mapping/aws/data/odb/aws_odb_cloud_exadata_infrastructure.json new file mode 100644 index 00000000..82a5d5b9 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_cloud_exadata_infrastructure.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:GetCloudExadataInfrastructure" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_cloud_exadata_infrastructures.json b/src/mapping/aws/data/odb/aws_odb_cloud_exadata_infrastructures.json new file mode 100644 index 00000000..c1bf5b45 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_cloud_exadata_infrastructures.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:ListCloudExadataInfrastructures" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_cloud_vm_cluster.json b/src/mapping/aws/data/odb/aws_odb_cloud_vm_cluster.json new file mode 100644 index 00000000..ab260bb3 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_cloud_vm_cluster.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:GetCloudVmCluster" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_cloud_vm_clusters.json b/src/mapping/aws/data/odb/aws_odb_cloud_vm_clusters.json new file mode 100644 index 00000000..62411a36 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_cloud_vm_clusters.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:ListCloudVmClusters" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_db_node.json b/src/mapping/aws/data/odb/aws_odb_db_node.json new file mode 100644 index 00000000..a0623069 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_db_node.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:GetDbNode" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_db_nodes.json b/src/mapping/aws/data/odb/aws_odb_db_nodes.json new file mode 100644 index 00000000..25958de7 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_db_nodes.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:ListDbNodes" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_db_server.json b/src/mapping/aws/data/odb/aws_odb_db_server.json new file mode 100644 index 00000000..f0ac70e7 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_db_server.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:GetDbServer" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_db_servers.json b/src/mapping/aws/data/odb/aws_odb_db_servers.json new file mode 100644 index 00000000..b1f3353b --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_db_servers.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:ListDbServers" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_db_system_shapes.json b/src/mapping/aws/data/odb/aws_odb_db_system_shapes.json new file mode 100644 index 00000000..242f5197 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_db_system_shapes.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:ListDbSystemShapes" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_gi_versions.json b/src/mapping/aws/data/odb/aws_odb_gi_versions.json new file mode 100644 index 00000000..1d081824 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_gi_versions.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:ListGiVersions" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_network.json b/src/mapping/aws/data/odb/aws_odb_network.json new file mode 100644 index 00000000..f35f18b9 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_network.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:GetOdbNetwork" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_network_peering_connection.json b/src/mapping/aws/data/odb/aws_odb_network_peering_connection.json new file mode 100644 index 00000000..af5cab86 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_network_peering_connection.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:GetOdbPeeringConnection" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_network_peering_connections.json b/src/mapping/aws/data/odb/aws_odb_network_peering_connections.json new file mode 100644 index 00000000..a20f3921 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_network_peering_connections.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:ListOdbPeeringConnections" + ] + } +] diff --git a/src/mapping/aws/data/odb/aws_odb_networks.json b/src/mapping/aws/data/odb/aws_odb_networks.json new file mode 100644 index 00000000..b30f96b4 --- /dev/null +++ b/src/mapping/aws/data/odb/aws_odb_networks.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "odb:ListOdbNetworks" + ] + } +] diff --git a/src/mapping/aws/data/rds/aws_rds_global_cluster.json b/src/mapping/aws/data/rds/aws_rds_global_cluster.json new file mode 100644 index 00000000..ca56de67 --- /dev/null +++ b/src/mapping/aws/data/rds/aws_rds_global_cluster.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "rds:DescribeGlobalClusters" + ] + } +] diff --git a/src/mapping/aws/data/route53/aws_route53_records.json b/src/mapping/aws/data/route53/aws_route53_records.json new file mode 100644 index 00000000..b808ec35 --- /dev/null +++ b/src/mapping/aws/data/route53/aws_route53_records.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "route53:ListResourceRecordSets" + ] + } +] diff --git a/src/mapping/aws/data/s3/aws_s3_access_point.json b/src/mapping/aws/data/s3/aws_s3_access_point.json new file mode 100644 index 00000000..4015f339 --- /dev/null +++ b/src/mapping/aws/data/s3/aws_s3_access_point.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "s3:ListAccessPoints" + ] + } +] diff --git a/src/mapping/aws/data/securityhub/aws_securityhub_standards_control_associations.json b/src/mapping/aws/data/securityhub/aws_securityhub_standards_control_associations.json new file mode 100644 index 00000000..87efd3b5 --- /dev/null +++ b/src/mapping/aws/data/securityhub/aws_securityhub_standards_control_associations.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securityhub:ListStandardsControlAssociations", + "securityhub:DescribeStandardsControls" + ] + } +] diff --git a/src/mapping/aws/data/waf/aws_waf_subscribed_rule_group.json b/src/mapping/aws/data/waf/aws_waf_subscribed_rule_group.json new file mode 100644 index 00000000..66e4c99a --- /dev/null +++ b/src/mapping/aws/data/waf/aws_waf_subscribed_rule_group.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "waf:ListSubscribedRuleGroups" + ] + } +] diff --git a/src/mapping/aws/data/wafregional/aws_wafregional_subscribed_rule_group.json b/src/mapping/aws/data/wafregional/aws_wafregional_subscribed_rule_group.json new file mode 100644 index 00000000..98570317 --- /dev/null +++ b/src/mapping/aws/data/wafregional/aws_wafregional_subscribed_rule_group.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "waf-regional:ListSubscribedRuleGroups" + ] + } +] diff --git a/src/mapping/aws/data/workspaces/aws_workspaces_workspace.json b/src/mapping/aws/data/workspaces/aws_workspaces_workspace.json new file mode 100644 index 00000000..19b29c26 --- /dev/null +++ b/src/mapping/aws/data/workspaces/aws_workspaces_workspace.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "workspaces:DescribeWorkspaces" + ] + } +] diff --git a/src/mapping/aws/resource/access-analyzer/aws_accessanalyzer_analyzer.json b/src/mapping/aws/resource/access-analyzer/aws_accessanalyzer_analyzer.json index fb260001..dbf52a01 100644 --- a/src/mapping/aws/resource/access-analyzer/aws_accessanalyzer_analyzer.json +++ b/src/mapping/aws/resource/access-analyzer/aws_accessanalyzer_analyzer.json @@ -4,6 +4,7 @@ "access-analyzer:CreateAnalyzer", "access-analyzer:DeleteAnalyzer", "access-analyzer:GetAnalyzer", + "access-analyzer:UpdateAnalyzer", "access-analyzer:ListAnalyzers", "access-analyzer:DeleteArchiveRule", "access-analyzer:UpdateArchiveRule", @@ -20,7 +21,8 @@ ], "modify": [ "access-analyzer:DeleteArchiveRule", - "access-analyzer:UpdateArchiveRule" + "access-analyzer:UpdateArchiveRule", + "access-analyzer:UpdateAnalyzer" ], "plan": [] } diff --git a/src/mapping/aws/resource/acm-pa/aws_acmpca_certificate_authority.json b/src/mapping/aws/resource/acm-pa/aws_acmpca_certificate_authority.json index e6cf2b00..d25838c1 100644 --- a/src/mapping/aws/resource/acm-pa/aws_acmpca_certificate_authority.json +++ b/src/mapping/aws/resource/acm-pa/aws_acmpca_certificate_authority.json @@ -4,10 +4,10 @@ "acm-pca:CreateCertificateAuthority", "acm-pca:GetCertificateAuthorityCertificate", "acm-pca:DeleteCertificateAuthority", - "acm-pa:DescribeCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", "acm-pca:UpdateCertificateAuthority", "acm-pca:GetCertificateAuthorityCsr", - "acm-pa:ListTags" + "acm-pca:ListTags" ], "attributes": { "tags": [ @@ -16,11 +16,16 @@ ] }, "destroy": [ - "acm-pca:DeleteCertificateAuthority" + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" ], "modify": [ "acm-pca:UpdateCertificateAuthority" ], - "plan": [] + "plan": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] } ] diff --git a/src/mapping/aws/resource/airflow/aws_mwaa_environment.json b/src/mapping/aws/resource/airflow/aws_mwaa_environment.json index 6edfcd24..49a0f5d7 100644 --- a/src/mapping/aws/resource/airflow/aws_mwaa_environment.json +++ b/src/mapping/aws/resource/airflow/aws_mwaa_environment.json @@ -1,19 +1,45 @@ -[ - { - "apply": [ - "airflow:CreateEnvironment", - "airflow:DeleteEnvironment", - "airflow:GetEnvironment", - "airflow:UpdateEnvironment" - ], - "attributes": { - "tags": [ - "airflow:TagResource", - "airflow:UntagResource" - ] - }, - "destroy": [], - "modify": [], - "plan": [] - } -] +[ + { + "apply": [ + "airflow:CreateEnvironment", + "airflow:DeleteEnvironment", + "airflow:GetEnvironment", + "airflow:UpdateEnvironment", + "iam:PassRole", + "iam:ListRoles", + "iam:CreatePolicy", + "iam:AttachRolePolicy", + "iam:CreateRole", + "iam:CreateServiceLinkedRole", + "s3:GetBucketLocation", + "s3:ListAllMyBuckets", + "s3:ListBucket", + "s3:ListBucketVersions", + "s3:CreateBucket", + "s3:PutObject", + "s3:GetEncryptionConfiguration", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "ec2:DescribeRouteTables", + "ec2:AuthorizeSecurityGroupIngress", + "ec2:CreateSecurityGroup", + "ec2:CreateVpcEndpoint", + "ec2:CreateNetworkInterface" + ], + "attributes": { + "kms_key": [ + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases" + ], + "tags": [ + "airflow:TagResource", + "airflow:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/amplify/aws_amplify_app.json b/src/mapping/aws/resource/amplify/aws_amplify_app.json index f3c3f4ef..1061f509 100644 --- a/src/mapping/aws/resource/amplify/aws_amplify_app.json +++ b/src/mapping/aws/resource/amplify/aws_amplify_app.json @@ -3,7 +3,6 @@ "apply": [ "amplify:GetApp", "amplify:CreateApp", - "amplify:TagResource", "codecommit:GetRepository", "codecommit:PutRepositoryTriggers", "codecommit:GetRepositoryTriggers", @@ -22,12 +21,32 @@ ] }, "destroy": [ + "amplify:GetApp", "amplify:DeleteApp", - "sns:Unsubscribe" + "codecommit:GetRepository", + "codecommit:GetRepositoryTriggers", + "codecommit:PutRepositoryTriggers", + "sns:Unsubscribe", + "iam:PassRole" ], "modify": [ - "amplify:UpdateApp" + "amplify:GetApp", + "amplify:UpdateApp", + "amplify:ListTagsForResource", + "codecommit:GetRepository", + "codecommit:PutRepositoryTriggers", + "codecommit:GetRepositoryTriggers", + "sns:CreateTopic", + "sns:Subscribe", + "sns:Unsubscribe", + "iam:PassRole" ], - "plan": [] + "plan": [ + "amplify:GetApp", + "amplify:ListTagsForResource", + "codecommit:GetRepository", + "codecommit:GetRepositoryTriggers", + "iam:PassRole" + ] } ] diff --git a/src/mapping/aws/resource/amplify/aws_amplify_backend_environment.json b/src/mapping/aws/resource/amplify/aws_amplify_backend_environment.json new file mode 100644 index 00000000..1b387256 --- /dev/null +++ b/src/mapping/aws/resource/amplify/aws_amplify_backend_environment.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "amplify:GetBackendEnvironment", + "amplify:CreateBackendEnvironment", + "amplify:DeleteBackendEnvironment" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/amplify/aws_amplify_branch.json b/src/mapping/aws/resource/amplify/aws_amplify_branch.json index 4f033925..38430af5 100644 --- a/src/mapping/aws/resource/amplify/aws_amplify_branch.json +++ b/src/mapping/aws/resource/amplify/aws_amplify_branch.json @@ -3,7 +3,6 @@ "apply": [ "amplify:GetBranch", "amplify:CreateBranch", - "amplify:TagResource", "codecommit:GetRepository", "codecommit:PutRepositoryTriggers", "codecommit:GetRepositoryTriggers", diff --git a/src/mapping/aws/resource/amplify/aws_amplify_domain_association.json b/src/mapping/aws/resource/amplify/aws_amplify_domain_association.json index ad221beb..007f3d9e 100644 --- a/src/mapping/aws/resource/amplify/aws_amplify_domain_association.json +++ b/src/mapping/aws/resource/amplify/aws_amplify_domain_association.json @@ -1,6 +1,7 @@ [ { "apply": [ + "amplify:GetDomainAssociation", "amplify:CreateDomainAssociation", "route53:ListHostedZones", "route53:ChangeResourceRecordSets", @@ -17,12 +18,24 @@ ] }, "destroy": [ - "amplify:DeleteDomainAssociation" + "amplify:GetDomainAssociation", + "amplify:DeleteDomainAssociation", + "route53:ListHostedZones", + "iam:PassRole", + "amplify:ListTagsForResource" ], "modify": [ + "amplify:GetDomainAssociation", "amplify:UpdateDomainAssociation", - "route53:ChangeResourceRecordSets" + "route53:ChangeResourceRecordSets", + "amplify:ListTagsForResource", + "iam:PassRole" ], - "plan": [] + "plan": [ + "amplify:GetDomainAssociation", + "route53:ListHostedZones", + "iam:PassRole", + "amplify:ListTagsForResource" + ] } ] diff --git a/src/mapping/aws/resource/amplify/aws_amplify_webhook.json b/src/mapping/aws/resource/amplify/aws_amplify_webhook.json new file mode 100644 index 00000000..dd9e3fb0 --- /dev/null +++ b/src/mapping/aws/resource/amplify/aws_amplify_webhook.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "amplify:GetWebHook", + "amplify:CreateWebHook", + "amplify:DeleteWebHook", + "amplify:UpdateWebHook" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/apigateway/aws_api_gateway_account.json b/src/mapping/aws/resource/apigateway/aws_api_gateway_account.json index 9d3fc17e..7a449a69 100644 --- a/src/mapping/aws/resource/apigateway/aws_api_gateway_account.json +++ b/src/mapping/aws/resource/apigateway/aws_api_gateway_account.json @@ -6,13 +6,22 @@ "apigateway:PATCH", "apigateway:GET", "apigateway:DELETE", - "iam:PassRole" + "iam:PassRole", + "iam:GetRole" ], "attributes": { "tags": [] }, - "destroy": [], - "modify": [], - "plan": [] + "destroy": [ + "apigateway:PATCH" + ], + "modify": [ + "apigateway:PATCH", + "iam:PassRole", + "iam:GetRole" + ], + "plan": [ + "apigateway:GET" + ] } ] diff --git a/src/mapping/aws/resource/apigateway/aws_api_gateway_domain_name_access_association.json b/src/mapping/aws/resource/apigateway/aws_api_gateway_domain_name_access_association.json new file mode 100644 index 00000000..c9fab3a2 --- /dev/null +++ b/src/mapping/aws/resource/apigateway/aws_api_gateway_domain_name_access_association.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "apigateway:POST", + "apigateway:GET", + "apigateway:DELETE" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "apigateway:DELETE", + "apigateway:GET" + ], + "modify": [], + "plan": [ + "apigateway:GET" + ] + } +] diff --git a/src/mapping/aws/resource/appconfig/aws_appconfig_deployment.json b/src/mapping/aws/resource/appconfig/aws_appconfig_deployment.json new file mode 100644 index 00000000..26e0191e --- /dev/null +++ b/src/mapping/aws/resource/appconfig/aws_appconfig_deployment.json @@ -0,0 +1,24 @@ +[ + { + "apply": [ + "appconfig:StartDeployment", + "appconfig:GetDeployment", + "appconfig:ListTagsForResource", + "kms:GenerateDataKey", + "appconfig:StopDeployment" + ], + "attributes": { + "tags": [ + "appconfig:TagResource", + "appconfig:UntagResource" + ] + }, + "destroy": [ + "appconfig:StopDeployment" + ], + "modify": [], + "plan": [ + "appconfig:GetDeployment" + ] + } +] diff --git a/src/mapping/aws/resource/appconfig/aws_appconfig_deployment_strategy.json b/src/mapping/aws/resource/appconfig/aws_appconfig_deployment_strategy.json new file mode 100644 index 00000000..4de6880f --- /dev/null +++ b/src/mapping/aws/resource/appconfig/aws_appconfig_deployment_strategy.json @@ -0,0 +1,27 @@ +[ + { + "apply": [ + "appconfig:CreateDeploymentStrategy", + "appconfig:DeleteDeploymentStrategy", + "appconfig:GetDeploymentStrategy", + "appconfig:ListTagsForResource", + "appconfig:UpdateDeploymentStrategy" + ], + "attributes": { + "tags": [ + "appconfig:TagResource", + "appconfig:UntagResource" + ] + }, + "destroy": [ + "appconfig:DeleteDeploymentStrategy" + ], + "modify": [ + "appconfig:UpdateDeploymentStrategy" + ], + "plan": [ + "appconfig:GetDeploymentStrategy", + "appconfig:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/resource/appconfig/aws_appconfig_extension.json b/src/mapping/aws/resource/appconfig/aws_appconfig_extension.json index 142383f4..f5eed5c3 100644 --- a/src/mapping/aws/resource/appconfig/aws_appconfig_extension.json +++ b/src/mapping/aws/resource/appconfig/aws_appconfig_extension.json @@ -20,7 +20,8 @@ "appconfig:UpdateExtension" ], "plan": [ - "appconfig:GetExtension" + "appconfig:GetExtension", + "appconfig:ListTagsForResource" ] } ] diff --git a/src/mapping/aws/resource/appconfig/aws_appconfig_extension_association.json b/src/mapping/aws/resource/appconfig/aws_appconfig_extension_association.json index 09c7f313..4e07402b 100644 --- a/src/mapping/aws/resource/appconfig/aws_appconfig_extension_association.json +++ b/src/mapping/aws/resource/appconfig/aws_appconfig_extension_association.json @@ -19,7 +19,8 @@ "appconfig:UpdateExtensionAssociation" ], "plan": [ - "appconfig:GetExtensionAssociation" + "appconfig:GetExtensionAssociation", + "appconfig:ListTagsForResource" ] } ] diff --git a/src/mapping/aws/resource/appfabric/aws_appfabric_app_authorization.json b/src/mapping/aws/resource/appfabric/aws_appfabric_app_authorization.json new file mode 100644 index 00000000..510ad6ae --- /dev/null +++ b/src/mapping/aws/resource/appfabric/aws_appfabric_app_authorization.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "appfabric:GetAppAuthorization", + "appfabric:CreateAppAuthorization", + "appfabric:DeleteAppAuthorization", + "appfabric:UpdateAppAuthorization" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appfabric/aws_appfabric_app_authorization_connection.json b/src/mapping/aws/resource/appfabric/aws_appfabric_app_authorization_connection.json new file mode 100644 index 00000000..20b36b35 --- /dev/null +++ b/src/mapping/aws/resource/appfabric/aws_appfabric_app_authorization_connection.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "appfabric:ConnectAppAuthorization" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appfabric/aws_appfabric_app_bundle.json b/src/mapping/aws/resource/appfabric/aws_appfabric_app_bundle.json new file mode 100644 index 00000000..7d530721 --- /dev/null +++ b/src/mapping/aws/resource/appfabric/aws_appfabric_app_bundle.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "appfabric:GetAppBundle", + "appfabric:CreateAppBundle", + "appfabric:DeleteAppBundle", + "appfabric:ListTagsForResource" + ], + "attributes": { + "tags": [ + "appfabric:TagResource", + "appfabric:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appfabric/aws_appfabric_ingestion.json b/src/mapping/aws/resource/appfabric/aws_appfabric_ingestion.json new file mode 100644 index 00000000..6ef83a46 --- /dev/null +++ b/src/mapping/aws/resource/appfabric/aws_appfabric_ingestion.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "appfabric:GetIngestion", + "appfabric:CreateIngestion", + "appfabric:DeleteIngestion", + "appfabric:ListTagsForResource" + ], + "attributes": { + "tags": [ + "appfabric:TagResource", + "appfabric:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appfabric/aws_appfabric_ingestion_destination.json b/src/mapping/aws/resource/appfabric/aws_appfabric_ingestion_destination.json new file mode 100644 index 00000000..f9334e1c --- /dev/null +++ b/src/mapping/aws/resource/appfabric/aws_appfabric_ingestion_destination.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "appfabric:GetIngestionDestination", + "appfabric:CreateIngestionDestination", + "appfabric:DeleteIngestionDestination", + "appfabric:UpdateIngestionDestination", + "appfabric:ListTagsForResource" + ], + "attributes": { + "tags": [ + "appfabric:TagResource", + "appfabric:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/application-autoscaling/aws_appautoscaling_policy.json b/src/mapping/aws/resource/application-autoscaling/aws_appautoscaling_policy.json index 3d395256..31ceeb23 100644 --- a/src/mapping/aws/resource/application-autoscaling/aws_appautoscaling_policy.json +++ b/src/mapping/aws/resource/application-autoscaling/aws_appautoscaling_policy.json @@ -1,17 +1,22 @@ -[ - { - "apply": [ - "application-autoscaling:PutScalingPolicy", - "application-autoscaling:DescribeScalingPolicies", - "application-autoscaling:DeleteScalingPolicy" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "application-autoscaling:DeleteScalingPolicy" - ], - "modify": [], - "plan": [] - } -] +[ + { + "apply": [ + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:DescribeScalingPolicies", + "application-autoscaling:DeleteScalingPolicy", + "cloudwatch:GetMetricData" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "application-autoscaling:DeleteScalingPolicy" + ], + "modify": [ + "application-autoscaling:DescribeScalingPolicies", + "application-autoscaling:PutScalingPolicy", + "cloudwatch:GetMetricData" + ], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appmesh/aws_appmesh_gateway_route.json b/src/mapping/aws/resource/appmesh/aws_appmesh_gateway_route.json new file mode 100644 index 00000000..4a43db13 --- /dev/null +++ b/src/mapping/aws/resource/appmesh/aws_appmesh_gateway_route.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "appmesh:DescribeGatewayRoute", + "appmesh:CreateGatewayRoute", + "appmesh:DeleteGatewayRoute", + "appmesh:UpdateGatewayRoute", + "appmesh:ListTagsForResource" + ], + "attributes": { + "tags": [ + "appmesh:TagResource", + "appmesh:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appmesh/aws_appmesh_mesh.json b/src/mapping/aws/resource/appmesh/aws_appmesh_mesh.json new file mode 100644 index 00000000..84813f0e --- /dev/null +++ b/src/mapping/aws/resource/appmesh/aws_appmesh_mesh.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "appmesh:DescribeMesh", + "appmesh:CreateMesh", + "appmesh:DeleteMesh", + "appmesh:UpdateMesh", + "appmesh:ListTagsForResource" + ], + "attributes": { + "tags": [ + "appmesh:TagResource", + "appmesh:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appmesh/aws_appmesh_route.json b/src/mapping/aws/resource/appmesh/aws_appmesh_route.json new file mode 100644 index 00000000..898ec988 --- /dev/null +++ b/src/mapping/aws/resource/appmesh/aws_appmesh_route.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "appmesh:DescribeRoute", + "appmesh:CreateRoute", + "appmesh:DeleteRoute", + "appmesh:UpdateRoute", + "appmesh:ListTagsForResource" + ], + "attributes": { + "tags": [ + "appmesh:TagResource", + "appmesh:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appmesh/aws_appmesh_virtual_gateway.json b/src/mapping/aws/resource/appmesh/aws_appmesh_virtual_gateway.json new file mode 100644 index 00000000..2a3f2b33 --- /dev/null +++ b/src/mapping/aws/resource/appmesh/aws_appmesh_virtual_gateway.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "appmesh:DescribeVirtualGateway", + "appmesh:CreateVirtualGateway", + "appmesh:DeleteVirtualGateway", + "appmesh:UpdateVirtualGateway", + "appmesh:ListTagsForResource" + ], + "attributes": { + "tags": [ + "appmesh:TagResource", + "appmesh:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appmesh/aws_appmesh_virtual_node.json b/src/mapping/aws/resource/appmesh/aws_appmesh_virtual_node.json new file mode 100644 index 00000000..1ddf35a5 --- /dev/null +++ b/src/mapping/aws/resource/appmesh/aws_appmesh_virtual_node.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "appmesh:DescribeVirtualNode", + "appmesh:CreateVirtualNode", + "appmesh:DeleteVirtualNode", + "appmesh:UpdateVirtualNode", + "appmesh:ListTagsForResource" + ], + "attributes": { + "tags": [ + "appmesh:TagResource", + "appmesh:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appmesh/aws_appmesh_virtual_router.json b/src/mapping/aws/resource/appmesh/aws_appmesh_virtual_router.json new file mode 100644 index 00000000..044700d5 --- /dev/null +++ b/src/mapping/aws/resource/appmesh/aws_appmesh_virtual_router.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "appmesh:DescribeVirtualRouter", + "appmesh:CreateVirtualRouter", + "appmesh:UpdateVirtualRouter", + "appmesh:DeleteVirtualRouter", + "appmesh:ListTagsForResource" + ], + "attributes": { + "tags": [ + "appmesh:TagResource", + "appmesh:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appmesh/aws_appmesh_virtual_service.json b/src/mapping/aws/resource/appmesh/aws_appmesh_virtual_service.json new file mode 100644 index 00000000..237137cc --- /dev/null +++ b/src/mapping/aws/resource/appmesh/aws_appmesh_virtual_service.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "appmesh:DescribeVirtualService", + "appmesh:CreateVirtualService", + "appmesh:DeleteVirtualService", + "appmesh:UpdateVirtualService", + "appmesh:ListTagsForResource" + ], + "attributes": { + "tags": [ + "appmesh:TagResource", + "appmesh:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/apprunner/aws_apprunner_connection.json b/src/mapping/aws/resource/apprunner/aws_apprunner_connection.json new file mode 100644 index 00000000..724dc83d --- /dev/null +++ b/src/mapping/aws/resource/apprunner/aws_apprunner_connection.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "apprunner:CreateConnection", + "apprunner:DeleteConnection", + "apprunner:ListTagsForResource" + ], + "attributes": { + "tags": [ + "apprunner:TagResource", + "apprunner:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/apprunner/aws_apprunner_custom_domain_association.json b/src/mapping/aws/resource/apprunner/aws_apprunner_custom_domain_association.json new file mode 100644 index 00000000..053cd4ac --- /dev/null +++ b/src/mapping/aws/resource/apprunner/aws_apprunner_custom_domain_association.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "apprunner:AssociateCustomDomain", + "apprunner:DisassociateCustomDomain" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/apprunner/aws_apprunner_deployment.json b/src/mapping/aws/resource/apprunner/aws_apprunner_deployment.json new file mode 100644 index 00000000..30d9a8d6 --- /dev/null +++ b/src/mapping/aws/resource/apprunner/aws_apprunner_deployment.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "apprunner:StartDeployment" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appstream/aws_appstream_directory_config.json b/src/mapping/aws/resource/appstream/aws_appstream_directory_config.json new file mode 100644 index 00000000..5855abd9 --- /dev/null +++ b/src/mapping/aws/resource/appstream/aws_appstream_directory_config.json @@ -0,0 +1,47 @@ +[ + { + "apply": [ + "appstream:CreateDirectoryConfig", + "appstream:DeleteDirectoryConfig", + "appstream:DeleteDirectoryConfig", + "appstream:DescribeDirectoryConfigs", + "appstream:UpdateDirectoryConfig", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ], + "attributes": { + "tags": [ + "appstream:TagResource", + "appstream:UntagResource" + ] + }, + "destroy": [ + "appstream:CreateDirectoryConfig", + "appstream:DeleteDirectoryConfig", + "appstream:DescribeDirectoryConfigs", + "appstream:UpdateDirectoryConfig", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ], + "modify": [ + "appstream:CreateDirectoryConfig", + "appstream:DeleteDirectoryConfig", + "appstream:DescribeDirectoryConfigs", + "appstream:UpdateDirectoryConfig", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ], + "plan": [ + "appstream:CreateDirectoryConfig", + "appstream:DeleteDirectoryConfig", + "appstream:DescribeDirectoryConfigs", + "appstream:UpdateDirectoryConfig", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ] + } +] diff --git a/src/mapping/aws/resource/appstream/aws_appstream_fleet.json b/src/mapping/aws/resource/appstream/aws_appstream_fleet.json new file mode 100644 index 00000000..92ce59bd --- /dev/null +++ b/src/mapping/aws/resource/appstream/aws_appstream_fleet.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "appstream:DescribeFleets", + "appstream:CreateFleet", + "appstream:DeleteFleet", + "appstream:UpdateFleet", + "appstream:ListTagsForResource" + ], + "attributes": { + "tags": [ + "appstream:TagResource", + "appstream:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appstream/aws_appstream_fleet_stack_association.json b/src/mapping/aws/resource/appstream/aws_appstream_fleet_stack_association.json new file mode 100644 index 00000000..7ade7a55 --- /dev/null +++ b/src/mapping/aws/resource/appstream/aws_appstream_fleet_stack_association.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "appstream:AssociateFleet", + "appstream:DisassociateFleet" + ], + "attributes": { + "tags": [ + "appstream:TagResource", + "appstream:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appstream/aws_appstream_stack.json b/src/mapping/aws/resource/appstream/aws_appstream_stack.json new file mode 100644 index 00000000..f1d4a106 --- /dev/null +++ b/src/mapping/aws/resource/appstream/aws_appstream_stack.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "appstream:DescribeStacks", + "appstream:CreateStack", + "appstream:DeleteStack", + "appstream:UpdateStack" + ], + "attributes": { + "tags": [ + "appstream:TagResource", + "appstream:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appstream/aws_appstream_user.json b/src/mapping/aws/resource/appstream/aws_appstream_user.json new file mode 100644 index 00000000..710d3f2d --- /dev/null +++ b/src/mapping/aws/resource/appstream/aws_appstream_user.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "appstream:DescribeUsers", + "appstream:CreateUser", + "appstream:DeleteUser" + ], + "attributes": { + "tags": [ + "appstream:TagResource", + "appstream:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appstream/aws_appstream_user_stack_association.json b/src/mapping/aws/resource/appstream/aws_appstream_user_stack_association.json new file mode 100644 index 00000000..07463646 --- /dev/null +++ b/src/mapping/aws/resource/appstream/aws_appstream_user_stack_association.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "appstream:DescribeUserStackAssociations", + "appstream:BatchAssociateUserStack", + "appstream:BatchDisassociateUserStack" + ], + "attributes": { + "tags": [ + "appstream:TagResource", + "appstream:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appsync/aws_appsync_api_cache.json b/src/mapping/aws/resource/appsync/aws_appsync_api_cache.json new file mode 100644 index 00000000..8eacce13 --- /dev/null +++ b/src/mapping/aws/resource/appsync/aws_appsync_api_cache.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "appsync:GetApiCache", + "appsync:CreateApiCache", + "appsync:DeleteApiCache", + "appsync:UpdateApiCache" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appsync/aws_appsync_api_key.json b/src/mapping/aws/resource/appsync/aws_appsync_api_key.json new file mode 100644 index 00000000..c5de1f92 --- /dev/null +++ b/src/mapping/aws/resource/appsync/aws_appsync_api_key.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "appsync:CreateApiKey", + "appsync:DeleteApiKey", + "appsync:UpdateApiKey" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/appsync/aws_appsync_datasource.json b/src/mapping/aws/resource/appsync/aws_appsync_datasource.json new file mode 100644 index 00000000..864d5f81 --- /dev/null +++ b/src/mapping/aws/resource/appsync/aws_appsync_datasource.json @@ -0,0 +1,24 @@ +[ + { + "apply": [ + "appsync:CreateDataSource", + "appsync:GetDataSource", + "appsync:UpdateDataSource", + "iam:PassRole" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "appsync:DeleteDataSource", + "appsync:GetDataSource" + ], + "modify": [ + "appsync:UpdateDataSource", + "iam:PassRole" + ], + "plan": [ + "appsync:GetDataSource" + ] + } +] diff --git a/src/mapping/aws/resource/appsync/aws_appsync_domain_name.json b/src/mapping/aws/resource/appsync/aws_appsync_domain_name.json index e3770684..021ded3c 100644 --- a/src/mapping/aws/resource/appsync/aws_appsync_domain_name.json +++ b/src/mapping/aws/resource/appsync/aws_appsync_domain_name.json @@ -1,24 +1,29 @@ -[ - { - "apply": [ - "appsync:CreateDomainName", - "appsync:GetDomainName", - "acm:DescribeCertificate", - "cloudfront:UpdateDistribution", - "appsync:UpdateDomainName", - "appsync:DeleteDomainName" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "appsync:DeleteDomainName" - ], - "modify": [ - "appsync:UpdateDomainName" - ], - "plan": [ - "appsync:GetDomainName" - ] - } -] +[ + { + "apply": [ + "appsync:CreateDomainName", + "appsync:GetDomainName", + "acm:DescribeCertificate", + "cloudfront:UpdateDistribution", + "appsync:UpdateDomainName", + "appsync:DeleteDomainName", + "appsync:TagResource" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "appsync:DeleteDomainName", + "appsync:UntagResource" + ], + "modify": [ + "appsync:UpdateDomainName", + "appsync:GetDomainName", + "appsync:TagResource", + "appsync:UntagResource" + ], + "plan": [ + "appsync:GetDomainName" + ] + } +] diff --git a/src/mapping/aws/resource/appsync/aws_appsync_graphql_api.json b/src/mapping/aws/resource/appsync/aws_appsync_graphql_api.json new file mode 100644 index 00000000..47f4e9a4 --- /dev/null +++ b/src/mapping/aws/resource/appsync/aws_appsync_graphql_api.json @@ -0,0 +1,29 @@ +[ + { + "apply": [ + "appsync:CreateApi", + "appsync:GetApi", + "appsync:ListTagsForResource", + "iam:PassRole", + "appsync:DeleteApi" + ], + "attributes": { + "tags": [ + "appsync:TagResource", + "appsync:UntagResource" + ] + }, + "destroy": [ + "appsync:DeleteApi" + ], + "modify": [ + "appsync:UpdateApi", + "appsync:GetApi", + "iam:PassRole" + ], + "plan": [ + "appsync:GetApi", + "appsync:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/resource/appsync/aws_appsync_source_api_association.json b/src/mapping/aws/resource/appsync/aws_appsync_source_api_association.json new file mode 100644 index 00000000..d4348078 --- /dev/null +++ b/src/mapping/aws/resource/appsync/aws_appsync_source_api_association.json @@ -0,0 +1,30 @@ +[ + { + "apply": [ + "appsync:AssociateSourceGraphqlApi", + "appsync:AssociateMergedGraphqlApi", + "appsync:UpdateSourceApiAssociation", + "appsync:GetSourceApiAssociation", + "appsync:DisassociateSourceGraphqlApi", + "appsync:DisassociateMergedGraphqlApi", + "appsync:ListSourceApiAssociations" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "appsync:GetSourceApiAssociation", + "appsync:DisassociateSourceGraphqlApi", + "appsync:DisassociateMergedGraphqlApi", + "appsync:ListSourceApiAssociations" + ], + "modify": [ + "appsync:UpdateSourceApiAssociation", + "appsync:GetSourceApiAssociation" + ], + "plan": [ + "appsync:GetSourceApiAssociation", + "appsync:ListSourceApiAssociations" + ] + } +] diff --git a/src/mapping/aws/resource/appsync/aws_appsync_type.json b/src/mapping/aws/resource/appsync/aws_appsync_type.json new file mode 100644 index 00000000..2cc23753 --- /dev/null +++ b/src/mapping/aws/resource/appsync/aws_appsync_type.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "appsync:GetType", + "appsync:CreateType", + "appsync:DeleteType", + "appsync:UpdateType" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/aps/aws_prometheus_alert_manager_definition.json b/src/mapping/aws/resource/aps/aws_prometheus_alert_manager_definition.json new file mode 100644 index 00000000..d19da323 --- /dev/null +++ b/src/mapping/aws/resource/aps/aws_prometheus_alert_manager_definition.json @@ -0,0 +1,26 @@ +[ + { + "apply": [ + "aps:CreateAlertManagerDefinition", + "aps:DescribeAlertManagerDefinition", + "aps:ListTagsForResource" + ], + "attributes": { + "tags": [ + "aps:TagResource", + "aps:UntagResource" + ] + }, + "destroy": [ + "aps:DeleteAlertManagerDefinition" + ], + "modify": [ + "aps:CreateAlertManagerDefinition", + "aps:PutAlertManagerDefinition", + "aps:DeleteAlertManagerDefinition" + ], + "plan": [ + "aps:DescribeAlertManagerDefinition" + ] + } +] diff --git a/src/mapping/aws/resource/aps/aws_prometheus_rule_group_namespace.json b/src/mapping/aws/resource/aps/aws_prometheus_rule_group_namespace.json new file mode 100644 index 00000000..5aa299f6 --- /dev/null +++ b/src/mapping/aws/resource/aps/aws_prometheus_rule_group_namespace.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "aps:DescribeRuleGroupsNamespace", + "aps:CreateRuleGroupsNamespace", + "aps:DeleteRuleGroupsNamespace", + "aps:PutRuleGroupsNamespace" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/aps/aws_prometheus_scraper.json b/src/mapping/aws/resource/aps/aws_prometheus_scraper.json new file mode 100644 index 00000000..87094592 --- /dev/null +++ b/src/mapping/aws/resource/aps/aws_prometheus_scraper.json @@ -0,0 +1,48 @@ +[ + { + "apply": [ + "aps:CreateScraper", + "aps:DeleteScraper", + "aps:DescribeScraper", + "aps:DescribeWorkspace", + "aps:ListTagsForResource", + "aps:UpdateScraper", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "eks:AssociateAccessPolicy", + "eks:CreateAccessEntry", + "eks:DescribeCluster", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:PassRole" + ], + "attributes": { + "tags": [ + "aps:TagResource", + "aps:UntagResource" + ] + }, + "destroy": [ + "aps:DeleteScraper", + "aps:DescribeScraper", + "aps:DescribeWorkspace", + "eks:AssociateAccessPolicy", + "eks:DescribeCluster", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "iam:DeleteServiceLinkedRole" + ], + "modify": [ + "aps:CreateScraper", + "aps:DescribeScraper", + "aps:UpdateScraper", + "aps:DescribeWorkspace", + "aps:ListTagsForResource", + "iam:PassRole" + ], + "plan": [ + "aps:DescribeScraper", + "aps:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/resource/aps/aws_prometheus_workspace.json b/src/mapping/aws/resource/aps/aws_prometheus_workspace.json new file mode 100644 index 00000000..e3eccc61 --- /dev/null +++ b/src/mapping/aws/resource/aps/aws_prometheus_workspace.json @@ -0,0 +1,47 @@ +[ + { + "apply": [ + "aps:CreateWorkspace", + "aps:DescribeWorkspace", + "aps:ListTagsForResource", + "aps:DescribeLoggingConfiguration" + ], + "attributes": { + "kms_key_arn": [ + "kms:CreateGrant", + "kms:Decrypt", + "kms:GenerateDataKey" + ], + "logging-configuration": [ + "aps:CreateLoggingConfiguration", + "aps:DeleteLoggingConfiguration", + "aps:DescribeLoggingConfiguration", + "aps:UpdateLoggingConfiguration", + "logs:CreateLogDelivery", + "logs:DeleteLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "logs:PutResourcePolicy", + "logs:UpdateLogDelivery" + ], + "tags": [ + "aps:TagResource", + "aps:UntagResource" + ] + }, + "destroy": [ + "aps:DeleteWorkspace", + "aps:DescribeWorkspace" + ], + "modify": [ + "aps:UpdateWorkspaceAlias", + "aps:DescribeWorkspace", + "aps:ListTagsForResource" + ], + "plan": [ + "aps:DescribeWorkspace", + "aps:ListTagsForResource", + "aps:DescribeLoggingConfiguration" + ] + } +] diff --git a/src/mapping/aws/resource/aps/aws_prometheus_workspace_configuration.json b/src/mapping/aws/resource/aps/aws_prometheus_workspace_configuration.json new file mode 100644 index 00000000..159f6c28 --- /dev/null +++ b/src/mapping/aws/resource/aps/aws_prometheus_workspace_configuration.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aps:UpdateWorkspaceConfiguration", + "aps:DescribeWorkspaceConfiguration" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/athena/aws_athena_capacity_reservation.json b/src/mapping/aws/resource/athena/aws_athena_capacity_reservation.json new file mode 100644 index 00000000..a7a4f814 --- /dev/null +++ b/src/mapping/aws/resource/athena/aws_athena_capacity_reservation.json @@ -0,0 +1,21 @@ +[ + { + "apply": [ + "athena:GetCapacityReservation", + "athena:CreateCapacityReservation", + "athena:CancelCapacityReservation", + "athena:DeleteCapacityReservation", + "athena:UpdateCapacityReservation", + "athena:ListTagsForResource" + ], + "attributes": { + "tags": [ + "athena:TagResource", + "athena:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/athena/aws_athena_data_catalog.json b/src/mapping/aws/resource/athena/aws_athena_data_catalog.json index 087e8167..4fbb2061 100644 --- a/src/mapping/aws/resource/athena/aws_athena_data_catalog.json +++ b/src/mapping/aws/resource/athena/aws_athena_data_catalog.json @@ -5,7 +5,39 @@ "athena:DeleteDataCatalog", "athena:GetDataCatalog", "athena:ListTagsForResource", - "athena:UpdateDataCatalog" + "athena:UpdateDataCatalog", + "s3:ListBucket", + "glue:TagResource", + "glue:CreateConnection", + "glue:DeleteConnection", + "glue:UpdateConnection", + "serverlessrepo:CreateCloudFormationTemplate", + "serverlessrepo:GetCloudFormationTemplate", + "cloudformation:CreateStack", + "cloudformation:CreateChangeSet", + "cloudformation:DeleteStack", + "cloudformation:DescribeStacks", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "ecr:BatchGetImage", + "ecr:GetDownloadUrlForLayer", + "glue:GetConnection", + "iam:AttachRolePolicy", + "iam:CreateRole", + "iam:DeleteRole", + "iam:DeleteRolePolicy", + "iam:DetachRolePolicy", + "iam:GetRole", + "iam:GetRolePolicy", + "iam:PassRole", + "iam:PutRolePolicy", + "iam:TagRole", + "lambda:CreateFunction", + "lambda:DeleteFunction", + "lambda:GetFunction", + "lambda:TagResource", + "secretsmanager:ListSecrets" ], "attributes": { "tags": [ @@ -14,10 +46,22 @@ ] }, "destroy": [ - "athena:DeleteDataCatalog" + "athena:DeleteDataCatalog", + "athena:GetDataCatalog", + "glue:GetConnection", + "glue:UpdateConnection", + "cloudformation:DeleteStack", + "cloudformation:DescribeStacks", + "lambda:DeleteFunction", + "iam:DeleteRole", + "iam:DeleteRolePolicy", + "iam:DetachRolePolicy", + "s3:ListBucket" ], "modify": [ - "athena:UpdateDataCatalog" + "athena:UpdateDataCatalog", + "athena:GetDataCatalog", + "athena:ListTagsForResource" ], "plan": [ "athena:GetDataCatalog", diff --git a/src/mapping/aws/resource/aws_prometheus_query_logging_configuration.json b/src/mapping/aws/resource/aws_prometheus_query_logging_configuration.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/aws_prometheus_query_logging_configuration.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/backup/aws_backup_framework.json b/src/mapping/aws/resource/backup/aws_backup_framework.json index a309510f..e3aa2df3 100644 --- a/src/mapping/aws/resource/backup/aws_backup_framework.json +++ b/src/mapping/aws/resource/backup/aws_backup_framework.json @@ -2,21 +2,21 @@ { "apply": [ "ec2:DescribeAccountAttributes", - "Backup:CreateFramework", - "Backup:DescribeFramework", - "Backup:DeleteFramework", - "Backup:ListTags", + "backup:CreateFramework", + "backup:DescribeFramework", + "backup:DeleteFramework", + "backup:ListTags", "iam:CreateServiceLinkedRole" ], "attributes": { "tags": [ - "Backup:UntagResource", - "Backup:TagResource" + "backup:UntagResource", + "backup:TagResource" ] }, "destroy": [], "modify": [ - "Backup:UpdateFramework" + "backup:UpdateFramework" ], "plan": [] } diff --git a/src/mapping/aws/resource/backup/aws_backup_global_settings.json b/src/mapping/aws/resource/backup/aws_backup_global_settings.json index c68cb715..3a679339 100644 --- a/src/mapping/aws/resource/backup/aws_backup_global_settings.json +++ b/src/mapping/aws/resource/backup/aws_backup_global_settings.json @@ -2,8 +2,8 @@ { "apply": [ "ec2:DescribeAccountAttributes", - "Backup:UpdateGlobalSettings", - "Backup:DescribeGlobalSettings" + "backup:UpdateGlobalSettings", + "backup:DescribeGlobalSettings" ], "attributes": { "tags": [] diff --git a/src/mapping/aws/resource/backup/aws_backup_plan.json b/src/mapping/aws/resource/backup/aws_backup_plan.json index bd4a6755..4e976733 100644 --- a/src/mapping/aws/resource/backup/aws_backup_plan.json +++ b/src/mapping/aws/resource/backup/aws_backup_plan.json @@ -2,19 +2,19 @@ { "apply": [ "ec2:DescribeAccountAttributes", - "Backup:CreateBackupPlan", - "Backup:GetBackupPlan", - "Backup:ListTags", - "Backup:DeleteBackupPlan" + "backup:CreateBackupPlan", + "backup:GetBackupPlan", + "backup:ListTags", + "backup:DeleteBackupPlan" ], "attributes": { "tags": [ - "Backup:UntagResource", - "Backup:TagResource" + "backup:UntagResource", + "backup:TagResource" ] }, "destroy": [ - "Backup:UpdateBackupPlan" + "backup:UpdateBackupPlan" ], "modify": [], "plan": [] diff --git a/src/mapping/aws/resource/backup/aws_backup_region_settings.json b/src/mapping/aws/resource/backup/aws_backup_region_settings.json index 7a6c1816..e7c28e24 100644 --- a/src/mapping/aws/resource/backup/aws_backup_region_settings.json +++ b/src/mapping/aws/resource/backup/aws_backup_region_settings.json @@ -2,8 +2,8 @@ { "apply": [ "ec2:DescribeAccountAttributes", - "Backup:UpdateRegionSettings", - "Backup:DescribeRegionSettings" + "backup:UpdateRegionSettings", + "backup:DescribeRegionSettings" ], "attributes": { "tags": [] diff --git a/src/mapping/aws/resource/backup/aws_backup_report_plan.json b/src/mapping/aws/resource/backup/aws_backup_report_plan.json index 4b9c436c..5da77311 100644 --- a/src/mapping/aws/resource/backup/aws_backup_report_plan.json +++ b/src/mapping/aws/resource/backup/aws_backup_report_plan.json @@ -2,22 +2,22 @@ { "apply": [ "ec2:DescribeAccountAttributes", - "Backup:DescribeReportPlan", - "Backup:CreateReportPlan", - "Backup:DeleteReportPlan", + "backup:DescribeReportPlan", + "backup:CreateReportPlan", + "backup:DeleteReportPlan", "s3:ListBucket", - "Backup:ListTags", + "backup:ListTags", "iam:CreateServiceLinkedRole", "backup:UpdateReportPlan" ], "attributes": { "tags": [ - "Backup:UntagResource", - "Backup:TagResource" + "backup:UntagResource", + "backup:TagResource" ] }, "destroy": [ - "Backup:DeleteReportPlan" + "backup:DeleteReportPlan" ], "modify": [ "backup:UpdateReportPlan" diff --git a/src/mapping/aws/resource/backup/aws_backup_restore_testing_plan.json b/src/mapping/aws/resource/backup/aws_backup_restore_testing_plan.json new file mode 100644 index 00000000..c52938c2 --- /dev/null +++ b/src/mapping/aws/resource/backup/aws_backup_restore_testing_plan.json @@ -0,0 +1,30 @@ +[ + { + "apply": [ + "backup:CreateRestoreTestingPlan", + "backup:GetRestoreTestingPlan", + "backup:DeleteRestoreTestingPlan", + "backup:UpdateRestoreTestingPlan", + "backup:ListTags" + ], + "attributes": { + "tags": [ + "backup:TagResource", + "backup:UntagResource" + ] + }, + "destroy": [ + "backup:DeleteRestoreTestingPlan", + "backup:GetRestoreTestingPlan" + ], + "modify": [ + "backup:UpdateRestoreTestingPlan", + "backup:GetRestoreTestingPlan", + "backup:ListTags" + ], + "plan": [ + "backup:GetRestoreTestingPlan", + "backup:ListTags" + ] + } +] diff --git a/src/mapping/aws/resource/backup/aws_backup_selection.json b/src/mapping/aws/resource/backup/aws_backup_selection.json index fcb6f71b..5ea84b75 100644 --- a/src/mapping/aws/resource/backup/aws_backup_selection.json +++ b/src/mapping/aws/resource/backup/aws_backup_selection.json @@ -2,9 +2,9 @@ { "apply": [ "ec2:DescribeAccountAttributes", - "Backup:CreateBackupSelection", - "Backup:DeleteBackupSelection", - "Backup:GetBackupSelection", + "backup:CreateBackupSelection", + "backup:DeleteBackupSelection", + "backup:GetBackupSelection", "iam:GetRole", "iam:PassRole", "iam:CreateServiceLinkedRole" @@ -13,9 +13,11 @@ "tags": [] }, "destroy": [ - "Backup:DeleteBackupSelection" + "backup:DeleteBackupSelection" ], "modify": [], - "plan": [] + "plan": [ + "backup:GetBackupSelection" + ] } ] diff --git a/src/mapping/aws/resource/backup/aws_backup_vault_notifications.json b/src/mapping/aws/resource/backup/aws_backup_vault_notifications.json index c0cc56a0..a2363d36 100644 --- a/src/mapping/aws/resource/backup/aws_backup_vault_notifications.json +++ b/src/mapping/aws/resource/backup/aws_backup_vault_notifications.json @@ -8,7 +8,7 @@ }, "destroy": [ "backup:DeleteBackupVaultNotifications", - "Backup:GetBackupVaultNotifications" + "backup:GetBackupVaultNotifications" ], "modify": [], "plan": [] diff --git a/src/mapping/aws/resource/batch/aws_batch_compute_environment.json b/src/mapping/aws/resource/batch/aws_batch_compute_environment.json index 49befa02..7d8f688c 100644 --- a/src/mapping/aws/resource/batch/aws_batch_compute_environment.json +++ b/src/mapping/aws/resource/batch/aws_batch_compute_environment.json @@ -20,7 +20,7 @@ ], "attributes": { "eks_configuration": [ - "Eks:DescribeCluster" + "eks:DescribeCluster" ], "tags": [ "batch:TagResource", diff --git a/src/mapping/aws/resource/batch/aws_batch_job_definition.json b/src/mapping/aws/resource/batch/aws_batch_job_definition.json index d540e50f..f97aaca7 100644 --- a/src/mapping/aws/resource/batch/aws_batch_job_definition.json +++ b/src/mapping/aws/resource/batch/aws_batch_job_definition.json @@ -3,7 +3,8 @@ "apply": [ "batch:DeregisterJobDefinition", "batch:DescribeJobDefinitions", - "batch:RegisterJobDefinition" + "batch:RegisterJobDefinition", + "Iam:PassRole" ], "attributes": { "tags": [ diff --git a/src/mapping/aws/resource/bedrock/aws_bedrock_guardrail.json b/src/mapping/aws/resource/bedrock/aws_bedrock_guardrail.json new file mode 100644 index 00000000..9abcbd5a --- /dev/null +++ b/src/mapping/aws/resource/bedrock/aws_bedrock_guardrail.json @@ -0,0 +1,37 @@ +[ + { + "apply": [ + "bedrock:CreateGuardrail", + "bedrock:GetGuardrail", + "bedrock:ListTagsForResource", + "bedrock:DeleteGuardrail", + "bedrock:UpdateGuardrail" + ], + "attributes": { + "kms_key_arn": [ + "kms:DescribeKey", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt", + "kms:RetireGrant" + ], + "tags": [ + "bedrock:TagResource", + "bedrock:UntagResource" + ] + }, + "destroy": [ + "bedrock:DeleteGuardrail", + "bedrock:GetGuardrail" + ], + "modify": [ + "bedrock:UpdateGuardrail", + "bedrock:GetGuardrail", + "bedrock:ListTagsForResource" + ], + "plan": [ + "bedrock:GetGuardrail", + "bedrock:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/resource/bedrock/aws_bedrock_guardrail_version.json b/src/mapping/aws/resource/bedrock/aws_bedrock_guardrail_version.json new file mode 100644 index 00000000..a2a9cfdf --- /dev/null +++ b/src/mapping/aws/resource/bedrock/aws_bedrock_guardrail_version.json @@ -0,0 +1,23 @@ +[ + { + "apply": [ + "bedrock:CreateGuardrailVersion", + "bedrock:GetGuardrail", + "kms:CreateGrant", + "kms:Decrypt" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "bedrock:DeleteGuardrail", + "bedrock:GetGuardrail", + "kms:RetireGrant" + ], + "modify": [], + "plan": [ + "bedrock:GetGuardrail", + "kms:Decrypt" + ] + } +] diff --git a/src/mapping/aws/resource/bedrock/aws_bedrock_inference_profile.json b/src/mapping/aws/resource/bedrock/aws_bedrock_inference_profile.json new file mode 100644 index 00000000..9b45569d --- /dev/null +++ b/src/mapping/aws/resource/bedrock/aws_bedrock_inference_profile.json @@ -0,0 +1,25 @@ +[ + { + "apply": [ + "bedrock:CreateInferenceProfile", + "bedrock:GetInferenceProfile", + "bedrock:ListTagsForResource", + "bedrock:DeleteInferenceProfile" + ], + "attributes": { + "tags": [ + "bedrock:TagResource", + "bedrock:UntagResource" + ] + }, + "destroy": [ + "bedrock:DeleteInferenceProfile", + "bedrock:GetInferenceProfile" + ], + "modify": [ + "bedrock:GetInferenceProfile", + "bedrock:ListTagsForResource" + ], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/bedrock/aws_bedrockagent_agent.json b/src/mapping/aws/resource/bedrock/aws_bedrockagent_agent.json index 9475dddb..0e9803e7 100644 --- a/src/mapping/aws/resource/bedrock/aws_bedrockagent_agent.json +++ b/src/mapping/aws/resource/bedrock/aws_bedrockagent_agent.json @@ -10,6 +10,13 @@ "bedrock:ListTagsForResource" ], "attributes": { + "customer_encryption_key_arn": [ + "kms:GenerateDataKeyWithoutPlainText", + "kms:ReEncryptFrom", + "kms:ReEncryptTo", + "kms:Decrypt", + "kms:GenerateDataKey" + ], "tags": [ "bedrock:TagResource", "bedrock:UntagResource" diff --git a/src/mapping/aws/resource/bedrock/aws_bedrockagent_agent_collaborator.json b/src/mapping/aws/resource/bedrock/aws_bedrockagent_agent_collaborator.json new file mode 100644 index 00000000..a24a8dfa --- /dev/null +++ b/src/mapping/aws/resource/bedrock/aws_bedrockagent_agent_collaborator.json @@ -0,0 +1,26 @@ +[ + { + "apply": [ + "bedrock:GetAgentCollaborator", + "bedrock:ListAgentCollaborators", + "bedrock:AssociateAgentCollaborator", + "bedrock:DisassociateAgentCollaborator", + "bedrock:UpdateAgentCollaborator" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [ + "bedrock:AssociateAgentCollaborator", + "bedrock:GetAgentCollaborator", + "bedrock:ListAgentCollaborators", + "bedrock:DisassociateAgentCollaborator", + "bedrock:UpdateAgentCollaborator" + ], + "plan": [ + "bedrock:GetAgentCollaborator", + "bedrock:ListAgentCollaborators" + ] + } +] diff --git a/src/mapping/aws/resource/bedrock/aws_bedrockagent_agent_knowledge_base_association.json b/src/mapping/aws/resource/bedrock/aws_bedrockagent_agent_knowledge_base_association.json new file mode 100644 index 00000000..2971ecae --- /dev/null +++ b/src/mapping/aws/resource/bedrock/aws_bedrockagent_agent_knowledge_base_association.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "bedrock:DisassociateAgentKnowledgeBase", + "bedrock:AssociateAgentKnowledgeBase", + "bedrock:GetAgentKnowledgeBase", + "bedrock:UpdateAgentKnowledgeBase" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/bedrock/aws_bedrockagent_prompt.json b/src/mapping/aws/resource/bedrock/aws_bedrockagent_prompt.json new file mode 100644 index 00000000..82e8cc9d --- /dev/null +++ b/src/mapping/aws/resource/bedrock/aws_bedrockagent_prompt.json @@ -0,0 +1,30 @@ +[ + { + "apply": [ + "bedrock:CreatePrompt", + "bedrock:DeletePrompt", + "bedrock:UpdatePrompt", + "bedrock:GetPrompt", + "bedrock:ListTagsForResource" + ], + "attributes": { + "customer_encryption_key_arn": [ + "kms:GenerateDataKey", + "kms:Decrypt" + ], + "tags": [ + "bedrock:UntagResource", + "bedrock:TagResource" + ] + }, + "destroy": [ + "bedrock:DeletePrompt" + ], + "modify": [ + "bedrock:UpdatePrompt" + ], + "plan": [ + "bedrock:GetPrompt" + ] + } +] diff --git a/src/mapping/aws/resource/cassandra/aws_keyspaces_keyspace.json b/src/mapping/aws/resource/cassandra/aws_keyspaces_keyspace.json index a19736ee..63e10eac 100644 --- a/src/mapping/aws/resource/cassandra/aws_keyspaces_keyspace.json +++ b/src/mapping/aws/resource/cassandra/aws_keyspaces_keyspace.json @@ -16,7 +16,18 @@ "cassandra:Drop" ], "modify": [ - "cassandra:Alter" + "cassandra:Alter", + "cassandra:Modify", + "cassandra:Select", + "application-autoscaling:RegisterScalableTarget", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:DescribeScalableTargets", + "application-autoscaling:DescribeScalingPolicies", + "application-autoscaling:PutScalingPolicy", + "cloudwatch:DeleteAlarms", + "cloudwatch:DescribeAlarms", + "cloudwatch:PutMetricAlarm", + "iam:CreateServiceLinkedRole" ], "plan": [ "cassandra:Select" diff --git a/src/mapping/aws/resource/ce/aws_ce_anomaly_monitor.json b/src/mapping/aws/resource/ce/aws_ce_anomaly_monitor.json index 8fc4f750..cd59f357 100644 --- a/src/mapping/aws/resource/ce/aws_ce_anomaly_monitor.json +++ b/src/mapping/aws/resource/ce/aws_ce_anomaly_monitor.json @@ -19,6 +19,9 @@ "modify": [ "ce:UpdateAnomalyMonitor" ], - "plan": [] + "plan": [ + "ce:GetAnomalyMonitors", + "ce:ListTagsForResource" + ] } ] diff --git a/src/mapping/aws/resource/ce/aws_ce_anomaly_subscription.json b/src/mapping/aws/resource/ce/aws_ce_anomaly_subscription.json index c9b3b641..35b18bbe 100644 --- a/src/mapping/aws/resource/ce/aws_ce_anomaly_subscription.json +++ b/src/mapping/aws/resource/ce/aws_ce_anomaly_subscription.json @@ -4,7 +4,8 @@ "ce:CreateAnomalySubscription", "ce:GetAnomalySubscriptions", "ce:DeleteAnomalySubscription", - "ce:UpdateAnomalySubscription" + "ce:UpdateAnomalySubscription", + "ce:ListTagsForResource" ], "attributes": { "tags": [ @@ -19,7 +20,8 @@ "ce:UpdateAnomalySubscription" ], "plan": [ - "ce:GetAnomalySubscriptions" + "ce:GetAnomalySubscriptions", + "ce:ListTagsForResource" ] } ] diff --git a/src/mapping/aws/resource/ce/aws_ce_cost_category.json b/src/mapping/aws/resource/ce/aws_ce_cost_category.json index 023abb2e..ee351716 100644 --- a/src/mapping/aws/resource/ce/aws_ce_cost_category.json +++ b/src/mapping/aws/resource/ce/aws_ce_cost_category.json @@ -7,7 +7,10 @@ "ce:UpdateCostCategoryDefinition" ], "attributes": { - "tags": [] + "tags": [ + "ce:TagResource", + "ce:UntagResource" + ] }, "destroy": [ "ce:DeleteCostCategoryDefinition" @@ -15,6 +18,9 @@ "modify": [ "ce:UpdateCostCategoryDefinition" ], - "plan": [] + "plan": [ + "ce:DescribeCostCategoryDefinition", + "ce:ListTagsForResource" + ] } ] diff --git a/src/mapping/aws/resource/chatbot/aws_chatbot_slack_channel_configuration.json b/src/mapping/aws/resource/chatbot/aws_chatbot_slack_channel_configuration.json index c9bd53e8..f7d89c50 100644 --- a/src/mapping/aws/resource/chatbot/aws_chatbot_slack_channel_configuration.json +++ b/src/mapping/aws/resource/chatbot/aws_chatbot_slack_channel_configuration.json @@ -2,6 +2,9 @@ { "apply": [ "chatbot:CreateSlackChannelConfiguration", + "chatbot:AssociateToConfiguration", + "chatbot:DisassociateFromConfiguration", + "chatbot:ListAssociations", "chatbot:DeleteSlackChannelConfiguration", "chatbot:DescribeSlackChannelConfigurations", "chatbot:UpdateSlackChannelConfiguration" @@ -17,10 +20,15 @@ ] }, "destroy": [ - "chatbot:DeleteSlackChannelConfiguration" + "chatbot:DeleteSlackChannelConfiguration", + "chatbot:DisassociateFromConfiguration", + "chatbot:ListAssociations" ], "modify": [ - "chatbot:UpdateSlackChannelConfiguration" + "chatbot:UpdateSlackChannelConfiguration", + "chatbot:AssociateToConfiguration", + "chatbot:DisassociateFromConfiguration", + "chatbot:ListAssociations" ], "plan": [ "chatbot:DescribeSlackChannelConfigurations" diff --git a/src/mapping/aws/resource/cleanrooms/aws_cleanrooms_configured_table.json b/src/mapping/aws/resource/cleanrooms/aws_cleanrooms_configured_table.json index e42adff3..dc51b8fd 100644 --- a/src/mapping/aws/resource/cleanrooms/aws_cleanrooms_configured_table.json +++ b/src/mapping/aws/resource/cleanrooms/aws_cleanrooms_configured_table.json @@ -18,7 +18,8 @@ "cleanrooms:ListTagsForResource", "cleanrooms:ListConfiguredTables", "cleanrooms:UpdateConfiguredTable", - "cleanrooms:UpdateConfiguredTableAnalysisRule" + "cleanrooms:UpdateConfiguredTableAnalysisRule", + "athena:GetTableMetadata" ], "attributes": { "tags": [ diff --git a/src/mapping/aws/resource/cleanrooms/aws_cleanrooms_membership.json b/src/mapping/aws/resource/cleanrooms/aws_cleanrooms_membership.json new file mode 100644 index 00000000..1cccd8ec --- /dev/null +++ b/src/mapping/aws/resource/cleanrooms/aws_cleanrooms_membership.json @@ -0,0 +1,61 @@ +[ + { + "apply": [ + "cleanrooms:CreateMembership", + "cleanrooms:GetMembership", + "cleanrooms:ListTagsForResource", + "cleanrooms:ListMemberships", + "cleanrooms:DeleteMembership", + "cleanrooms:UpdateMembership", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "logs:DescribeLogGroups", + "logs:DescribeResourcePolicies", + "logs:PutResourcePolicy", + "logs:CreateLogGroup", + "iam:PassRole" + ], + "attributes": { + "tags": [ + "cleanrooms:TagResource", + "cleanrooms:UntagResource" + ] + }, + "destroy": [ + "cleanrooms:DeleteMembership", + "cleanrooms:GetMembership", + "cleanrooms:ListMemberships", + "cleanrooms:ListTagsForResource", + "logs:ListLogDeliveries", + "logs:DescribeLogGroups", + "logs:DescribeResourcePolicies", + "logs:GetLogDelivery" + ], + "modify": [ + "cleanrooms:UpdateMembership", + "cleanrooms:GetMembership", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "logs:DescribeLogGroups", + "logs:DescribeResourcePolicies", + "logs:PutResourcePolicy", + "logs:CreateLogGroup", + "cleanrooms:ListTagsForResource", + "iam:PassRole" + ], + "plan": [ + "cleanrooms:GetMembership", + "cleanrooms:ListTagsForResource", + "logs:ListLogDeliveries", + "logs:DescribeLogGroups", + "logs:DescribeResourcePolicies", + "logs:GetLogDelivery" + ] + } +] diff --git a/src/mapping/aws/resource/cloud9/aws_cloud9_environment_membership.json b/src/mapping/aws/resource/cloud9/aws_cloud9_environment_membership.json new file mode 100644 index 00000000..1bfe22ab --- /dev/null +++ b/src/mapping/aws/resource/cloud9/aws_cloud9_environment_membership.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloud9:CreateEnvironmentMembership", + "cloud9:DeleteEnvironmentMembership", + "cloud9:UpdateEnvironmentMembership", + "cloud9:DescribeEnvironmentMemberships" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/cloudformation/aws_cloudcontrolapi_resource.json b/src/mapping/aws/resource/cloudformation/aws_cloudcontrolapi_resource.json new file mode 100644 index 00000000..5e773208 --- /dev/null +++ b/src/mapping/aws/resource/cloudformation/aws_cloudcontrolapi_resource.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudformation:GetResource", + "cloudformation:UpdateResource", + "cloudformation:DeleteResource", + "cloudformation:CreateResource" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/cloudformation/aws_cloudformation_stack_instances.json b/src/mapping/aws/resource/cloudformation/aws_cloudformation_stack_instances.json new file mode 100644 index 00000000..b5a8dfd7 --- /dev/null +++ b/src/mapping/aws/resource/cloudformation/aws_cloudformation_stack_instances.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudformation:UpdateStackInstances", + "cloudformation:DeleteStackInstances", + "cloudformation:CreateStackInstances", + "cloudformation:ListStackInstances" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/cloudfront-keyvaluestore/aws_cloudfrontkeyvaluestore_keys_exclusive.json b/src/mapping/aws/resource/cloudfront-keyvaluestore/aws_cloudfrontkeyvaluestore_keys_exclusive.json new file mode 100644 index 00000000..e9eaf4ba --- /dev/null +++ b/src/mapping/aws/resource/cloudfront-keyvaluestore/aws_cloudfrontkeyvaluestore_keys_exclusive.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "cloudfront-keyvaluestore:DescribeKeyValueStore", + "cloudfront-keyvaluestore:ListKeys", + "cloudfront-keyvaluestore:UpdateKeys" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/cloudfront/aws_cloudfront_vpc_origin.json b/src/mapping/aws/resource/cloudfront/aws_cloudfront_vpc_origin.json new file mode 100644 index 00000000..315c4578 --- /dev/null +++ b/src/mapping/aws/resource/cloudfront/aws_cloudfront_vpc_origin.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "cloudfront:GetVpcOrigin", + "cloudfront:CreateVpcOrigin", + "cloudfront:DeleteVpcOrigin", + "cloudfront:UpdateVpcOrigin", + "cloudfront:ListTagsForResource" + ], + "attributes": { + "tags": [ + "cloudfront:TagResource", + "cloudfront:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/cloudhsm/aws_cloudhsm_v2_cluster.json b/src/mapping/aws/resource/cloudhsm/aws_cloudhsm_v2_cluster.json new file mode 100644 index 00000000..a0d0fe33 --- /dev/null +++ b/src/mapping/aws/resource/cloudhsm/aws_cloudhsm_v2_cluster.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "cloudhsm:DescribeClusters", + "cloudhsm:CreateCluster", + "cloudhsm:DeleteCluster", + "cloudhsm:ModifyCluster", + "cloudhsm:ListTags" + ], + "attributes": { + "tags": [ + "cloudhsm:TagResource", + "cloudhsm:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/cloudhsm/aws_cloudhsm_v2_hsm.json b/src/mapping/aws/resource/cloudhsm/aws_cloudhsm_v2_hsm.json new file mode 100644 index 00000000..d09beb53 --- /dev/null +++ b/src/mapping/aws/resource/cloudhsm/aws_cloudhsm_v2_hsm.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "cloudhsm:CreateHsm", + "cloudhsm:DeleteHsm" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/cloudtrail/aws_cloudtrail_event_data_store.json b/src/mapping/aws/resource/cloudtrail/aws_cloudtrail_event_data_store.json index 9beee5ba..12f9b06a 100644 --- a/src/mapping/aws/resource/cloudtrail/aws_cloudtrail_event_data_store.json +++ b/src/mapping/aws/resource/cloudtrail/aws_cloudtrail_event_data_store.json @@ -5,10 +5,10 @@ "cloudtrail:AddTags", "cloudtrail:GetEventDataStore", "cloudtrail:ListTags", - "CloudTrail:ListEventDataStores", + "cloudtrail:ListEventDataStores", "cloudtrail:DeleteEventDataStore", "cloudtrail:UpdateEventDataStore", - "CloudTrail:RestoreEventDataStore" + "cloudtrail:RestoreEventDataStore" ], "attributes": { "kms_key_id": [ @@ -17,16 +17,16 @@ "kms:DescribeKey" ], "multi_region_enabled": [ - "CloudTrail:EnableFederation", - "CloudTrail:DisableFederation" + "cloudtrail:EnableFederation", + "cloudtrail:DisableFederation" ], "organization_enabled": [ "organizations:DescribeOrganization", "organizations:ListAWSServiceAccessForOrganization" ], "tags": [ - "CloudTrail:AddTags", - "CloudTrail:RemoveTags" + "cloudtrail:AddTags", + "cloudtrail:RemoveTags" ] }, "destroy": [ @@ -34,7 +34,7 @@ ], "modify": [ "cloudtrail:UpdateEventDataStore", - "CloudTrail:RestoreEventDataStore" + "cloudtrail:RestoreEventDataStore" ], "plan": [] } diff --git a/src/mapping/aws/resource/cloudtrail/aws_cloudtrail_organization_delegated_admin_account.json b/src/mapping/aws/resource/cloudtrail/aws_cloudtrail_organization_delegated_admin_account.json new file mode 100644 index 00000000..e9b885d6 --- /dev/null +++ b/src/mapping/aws/resource/cloudtrail/aws_cloudtrail_organization_delegated_admin_account.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "cloudtrail:DeregisterOrganizationDelegatedAdmin", + "cloudtrail:RegisterOrganizationDelegatedAdmin" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/cloudwatch/aws_cloudwatch_contributor_insight_rule.json b/src/mapping/aws/resource/cloudwatch/aws_cloudwatch_contributor_insight_rule.json new file mode 100644 index 00000000..4013abe5 --- /dev/null +++ b/src/mapping/aws/resource/cloudwatch/aws_cloudwatch_contributor_insight_rule.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "cloudwatch:PutInsightRule", + "cloudwatch:DescribeInsightRules", + "cloudwatch:ListTagsForResource", + "cloudwatch:DeleteInsightRules" + ], + "attributes": { + "tags": [ + "cloudwatch:TagResource", + "cloudwatch:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/cloudwatch/aws_cloudwatch_contributor_managed_insight_rule.json b/src/mapping/aws/resource/cloudwatch/aws_cloudwatch_contributor_managed_insight_rule.json new file mode 100644 index 00000000..e5aee0ec --- /dev/null +++ b/src/mapping/aws/resource/cloudwatch/aws_cloudwatch_contributor_managed_insight_rule.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudwatch:ListManagedInsightRules", + "cloudwatch:ListTagsForResource", + "cloudwatch:DeleteInsightRules", + "cloudwatch:PutManagedInsightRules" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/cloudwatch/aws_cloudwatch_metric_stream.json b/src/mapping/aws/resource/cloudwatch/aws_cloudwatch_metric_stream.json index 028c6bb2..e0a63402 100644 --- a/src/mapping/aws/resource/cloudwatch/aws_cloudwatch_metric_stream.json +++ b/src/mapping/aws/resource/cloudwatch/aws_cloudwatch_metric_stream.json @@ -16,7 +16,14 @@ "destroy": [ "cloudwatch:DeleteMetricStream" ], - "modify": [], - "plan": [] + "modify": [ + "cloudwatch:PutMetricStream", + "cloudwatch:GetMetricStream", + "iam:PassRole" + ], + "plan": [ + "cloudwatch:GetMetricStream", + "cloudwatch:ListTagsForResource" + ] } ] diff --git a/src/mapping/aws/resource/codebuild/aws_codebuild_fleet.json b/src/mapping/aws/resource/codebuild/aws_codebuild_fleet.json new file mode 100644 index 00000000..0d12775b --- /dev/null +++ b/src/mapping/aws/resource/codebuild/aws_codebuild_fleet.json @@ -0,0 +1,26 @@ +[ + { + "apply": [ + "codebuild:BatchGetFleets", + "codebuild:CreateFleet", + "codebuild:UpdateFleet", + "codebuild:DeleteFleet", + "iam:PassRole" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "codebuild:BatchGetFleets", + "codebuild:DeleteFleet" + ], + "modify": [ + "codebuild:BatchGetFleets", + "codebuild:UpdateFleet", + "iam:PassRole" + ], + "plan": [ + "codebuild:BatchGetFleets" + ] + } +] diff --git a/src/mapping/aws/resource/codeconnections/aws_codeconnections_connection.json b/src/mapping/aws/resource/codeconnections/aws_codeconnections_connection.json new file mode 100644 index 00000000..005c4f7f --- /dev/null +++ b/src/mapping/aws/resource/codeconnections/aws_codeconnections_connection.json @@ -0,0 +1,26 @@ +[ + { + "apply": [ + "codeconnections:GetConnection", + "codeconnections:CreateConnection", + "codeconnections:ListTagsForResource", + "codeconnections:DeleteConnection" + ], + "attributes": { + "tags": [ + "codeconnections:TagResource", + "codeconnections:UntagResource" + ] + }, + "destroy": [ + "codeconnections:DeleteConnection" + ], + "modify": [ + "codeconnections:ListTagsForResource" + ], + "plan": [ + "codeconnections:GetConnection", + "codeconnections:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/resource/codeconnections/aws_codeconnections_host.json b/src/mapping/aws/resource/codeconnections/aws_codeconnections_host.json new file mode 100644 index 00000000..8b162cb7 --- /dev/null +++ b/src/mapping/aws/resource/codeconnections/aws_codeconnections_host.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "codeconnections:GetHost", + "codeconnections:CreateHost", + "codeconnections:DeleteHost", + "codeconnections:UpdateHost", + "codeconnections:ListTagsForResource" + ], + "attributes": { + "tags": [ + "codeconnections:TagResource", + "codeconnections:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/cognito-idp/aws_cognito_managed_user_pool_client.json b/src/mapping/aws/resource/cognito-idp/aws_cognito_managed_user_pool_client.json new file mode 100644 index 00000000..81c1387a --- /dev/null +++ b/src/mapping/aws/resource/cognito-idp/aws_cognito_managed_user_pool_client.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cognito-idp:DescribeUserPoolClient", + "cognito-idp:CreateUserPoolClient", + "cognito-idp:DeleteUserPoolClient", + "cognito-idp:UpdateUserPoolClient" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/cognito-idp/aws_cognito_user_pool_domain.json b/src/mapping/aws/resource/cognito-idp/aws_cognito_user_pool_domain.json index 9d72652b..88e2f5f9 100644 --- a/src/mapping/aws/resource/cognito-idp/aws_cognito_user_pool_domain.json +++ b/src/mapping/aws/resource/cognito-idp/aws_cognito_user_pool_domain.json @@ -3,15 +3,24 @@ "apply": [ "cognito-idp:CreateUserPoolDomain", "cognito-idp:DescribeUserPoolDomain", - "cognito-idp:DeleteUserPoolDomain" + "cloudfront:updateDistribution", + "cognito-idp:DeleteUserPoolDomain", + "cognito-idp:UpdateUserPoolDomain" ], "attributes": { "tags": [] }, "destroy": [ - "cognito-idp:DeleteUserPoolDomain" + "cognito-idp:DeleteUserPoolDomain", + "cognito-idp:DescribeUserPoolDomain" ], - "modify": [], - "plan": [] + "modify": [ + "cognito-idp:UpdateUserPoolDomain", + "cognito-idp:DescribeUserPoolDomain", + "cloudfront:updateDistribution" + ], + "plan": [ + "cognito-idp:DescribeUserPoolDomain" + ] } ] diff --git a/src/mapping/aws/resource/comprehend/aws_comprehend_entity_recognizer.json b/src/mapping/aws/resource/comprehend/aws_comprehend_entity_recognizer.json new file mode 100644 index 00000000..f958d5a7 --- /dev/null +++ b/src/mapping/aws/resource/comprehend/aws_comprehend_entity_recognizer.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "comprehend:CreateEntityRecognizer", + "comprehend:DeleteEntityRecognizer", + "comprehend:ListEntityRecognizers" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/compute-optimizer/aws_computeoptimizer_enrollment_status.json b/src/mapping/aws/resource/compute-optimizer/aws_computeoptimizer_enrollment_status.json new file mode 100644 index 00000000..dd03caca --- /dev/null +++ b/src/mapping/aws/resource/compute-optimizer/aws_computeoptimizer_enrollment_status.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute-optimizer:GetEnrollmentStatus", + "compute-optimizer:UpdateEnrollmentStatus" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/compute-optimizer/aws_computeoptimizer_recommendation_preferences.json b/src/mapping/aws/resource/compute-optimizer/aws_computeoptimizer_recommendation_preferences.json new file mode 100644 index 00000000..7230a8cf --- /dev/null +++ b/src/mapping/aws/resource/compute-optimizer/aws_computeoptimizer_recommendation_preferences.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "compute-optimizer:DeleteRecommendationPreferences", + "compute-optimizer:PutRecommendationPreferences", + "compute-optimizer:GetRecommendationPreferences" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/config/aws_config_aggregate_authorization.json b/src/mapping/aws/resource/config/aws_config_aggregate_authorization.json new file mode 100644 index 00000000..fcf73e50 --- /dev/null +++ b/src/mapping/aws/resource/config/aws_config_aggregate_authorization.json @@ -0,0 +1,28 @@ +[ + { + "apply": [ + "config:DescribeAggregationAuthorizations", + "config:PutAggregationAuthorization", + "config:ListTagsForResource", + "config:DeleteAggregationAuthorization" + ], + "attributes": { + "tags": [ + "config:TagResource", + "config:UntagResource" + ] + }, + "destroy": [ + "config:DescribeAggregationAuthorizations", + "config:DeleteAggregationAuthorization" + ], + "modify": [ + "config:DescribeAggregationAuthorizations", + "config:ListTagsForResource" + ], + "plan": [ + "config:DescribeAggregationAuthorizations", + "config:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/resource/config/aws_config_organization_custom_policy_rule.json b/src/mapping/aws/resource/config/aws_config_organization_custom_policy_rule.json new file mode 100644 index 00000000..967fa368 --- /dev/null +++ b/src/mapping/aws/resource/config/aws_config_organization_custom_policy_rule.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "config:GetOrganizationCustomRulePolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "config:GetOrganizationCustomRulePolicy" + ] + } +] diff --git a/src/mapping/aws/resource/config/aws_config_organization_custom_rule.json b/src/mapping/aws/resource/config/aws_config_organization_custom_rule.json new file mode 100644 index 00000000..502a7aa2 --- /dev/null +++ b/src/mapping/aws/resource/config/aws_config_organization_custom_rule.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "config:DeleteOrganizationConfigRule", + "config:PutOrganizationConfigRule", + "config:DescribeOrganizationConfigRules" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/config/aws_config_organization_managed_rule.json b/src/mapping/aws/resource/config/aws_config_organization_managed_rule.json new file mode 100644 index 00000000..2e3ed72f --- /dev/null +++ b/src/mapping/aws/resource/config/aws_config_organization_managed_rule.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "config:DescribeOrganizationConfigRules", + "config:DeleteOrganizationConfigRule", + "config:PutOrganizationConfigRule" + ], + "attributes": { + "tags": [ + "config:TagResource", + "config:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/config/aws_config_remediation_configuration.json b/src/mapping/aws/resource/config/aws_config_remediation_configuration.json new file mode 100644 index 00000000..53513fc4 --- /dev/null +++ b/src/mapping/aws/resource/config/aws_config_remediation_configuration.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "config:DescribeRemediationConfigurations", + "config:DeleteRemediationConfiguration", + "config:PutRemediationConfigurations" + ], + "attributes": { + "tags": [ + "config:TagResource", + "config:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/config/aws_config_retention_configuration.json b/src/mapping/aws/resource/config/aws_config_retention_configuration.json new file mode 100644 index 00000000..8c101bcb --- /dev/null +++ b/src/mapping/aws/resource/config/aws_config_retention_configuration.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "config:DescribeRetentionConfigurations", + "config:DeleteRetentionConfiguration", + "config:PutRetentionConfiguration" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/connect/aws_connect_lambda_function_association.json b/src/mapping/aws/resource/connect/aws_connect_lambda_function_association.json index a92d6fda..0a13d194 100644 --- a/src/mapping/aws/resource/connect/aws_connect_lambda_function_association.json +++ b/src/mapping/aws/resource/connect/aws_connect_lambda_function_association.json @@ -15,4 +15,4 @@ "modify": [], "plan": [] } -] +] diff --git a/src/mapping/aws/resource/connect/aws_connect_phone_number.json b/src/mapping/aws/resource/connect/aws_connect_phone_number.json index 481bb742..b448c120 100644 --- a/src/mapping/aws/resource/connect/aws_connect_phone_number.json +++ b/src/mapping/aws/resource/connect/aws_connect_phone_number.json @@ -8,7 +8,9 @@ "connect:ReleasePhoneNumber", "connect:ImportPhoneNumber", "sms-voice:DescribePhoneNumbers", - "connect:UpdatePhoneNumberMetadata" + "connect:UpdatePhoneNumberMetadata", + "social-messaging:GetLinkedWhatsAppBusinessAccountPhoneNumber", + "social-messaging:TagResource" ], "attributes": { "tags": [ diff --git a/src/mapping/aws/resource/controltower/aws_controltower_control.json b/src/mapping/aws/resource/controltower/aws_controltower_control.json index 75abdb3b..2691cc4b 100644 --- a/src/mapping/aws/resource/controltower/aws_controltower_control.json +++ b/src/mapping/aws/resource/controltower/aws_controltower_control.json @@ -24,12 +24,38 @@ ] }, "destroy": [ + "controltower:ListEnabledControls", + "controltower:GetEnabledControl", + "controltower:GetControlOperation", "controltower:DisableControl", - "organizations:DeletePolicy" + "organizations:UpdatePolicy", + "organizations:DeletePolicy", + "organizations:CreatePolicy", + "organizations:AttachPolicy", + "organizations:DetachPolicy", + "organizations:ListPoliciesForTarget", + "organizations:ListTargetsForPolicy", + "organizations:DescribePolicy", + "controltower:ListTagsForResource" ], "modify": [ - "controltower:UpdateEnabledControl" + "controltower:ListEnabledControls", + "controltower:GetEnabledControl", + "controltower:GetControlOperation", + "controltower:UpdateEnabledControl", + "organizations:UpdatePolicy", + "organizations:CreatePolicy", + "organizations:AttachPolicy", + "organizations:DetachPolicy", + "organizations:ListPoliciesForTarget", + "organizations:ListTargetsForPolicy", + "organizations:DescribePolicy", + "controltower:ListTagsForResource" ], - "plan": [] + "plan": [ + "controltower:ListEnabledControls", + "controltower:GetEnabledControl", + "controltower:ListTagsForResource" + ] } ] diff --git a/src/mapping/aws/resource/controltower/aws_controltower_landing_zone.json b/src/mapping/aws/resource/controltower/aws_controltower_landing_zone.json index 5317d967..865db2d9 100644 --- a/src/mapping/aws/resource/controltower/aws_controltower_landing_zone.json +++ b/src/mapping/aws/resource/controltower/aws_controltower_landing_zone.json @@ -1,48 +1,49 @@ [ { "apply": [ + "cloudformation:DescribeOrganizationsAccess", + "cloudformation:EnableOrganizationsAccess", "controltower:CreateLandingZone", + "controltower:DeleteLandingZone", + "controltower:GetLandingZone", "controltower:GetLandingZoneOperation", "controltower:ListTagsForResource", - "controltower:GetLandingZone", - "cloudformation:DescribeOrganizationsAccess", + "controltower:UpdateLandingZone", + "iam:CreateServiceLinkedRole", + "iam:DeleteRole", + "iam:DeleteRolePolicy", + "iam:DetachRolePolicy", + "organizations:AttachPolicy", + "organizations:CreateOrganization", + "organizations:CreateOrganizationalUnit", + "organizations:CreatePolicy", + "organizations:DeletePolicy", + "organizations:DetachPolicy", + "organizations:EnableAWSServiceAccess", + "organizations:EnablePolicyType", + "organizations:ListRoots", + "organizations:UpdatePolicy", "servicecatalog:AssociatePrincipalWithPortfolio", "servicecatalog:AssociateProductWithPortfolio", "servicecatalog:CreatePortfolio", "servicecatalog:CreateProduct", "servicecatalog:CreateProvisioningArtifact", + "servicecatalog:DeletePortfolio", + "servicecatalog:DeleteProduct", + "servicecatalog:DeleteProvisioningArtifact", + "servicecatalog:DisassociatePrincipalFromPortfolio", + "servicecatalog:DisassociateProductFromPortfolio", "servicecatalog:ListPortfolios", + "servicecatalog:ListPrincipalsForPortfolio", "servicecatalog:ListProvisioningArtifacts", "servicecatalog:SearchProductsAsAdmin", "servicecatalog:UpdatePortfolio", + "servicecatalog:UpdatePortfolio", "servicecatalog:UpdateProvisioningArtifact", - "servicecatalog:ListPrincipalsForPortfolio", - "organizations:CreateOrganizationalUnit", - "organizations:CreateOrganization", - "organizations:UpdatePolicy", - "organizations:CreatePolicy", - "organizations:AttachPolicy", - "organizations:DetachPolicy", - "organizations:DeletePolicy", - "organizations:EnablePolicyType", - "organizations:EnableAWSServiceAccess", - "organizations:ListRoots", "sso:GetPeregrineStatus", "sso:ListDirectoryAssociations", - "sso:StartPeregrine", "sso:RegisterRegion", - "controltower:UpdateLandingZone", - "servicecatalog:UpdatePortfolio", - "servicecatalog:UpdateProvisioningArtifact", - "controltower:DeleteLandingZone", - "servicecatalog:DeleteProvisioningArtifact", - "servicecatalog:DeleteProduct", - "servicecatalog:DisassociatePrincipalFromPortfolio", - "servicecatalog:DisassociateProductFromPortfolio", - "servicecatalog:DeletePortfolio", - "iam:DeleteRolePolicy", - "iam:DetachRolePolicy", - "iam:DeleteRole" + "sso:StartPeregrine" ], "attributes": { "tags": [ @@ -51,12 +52,14 @@ ] }, "destroy": [ + "cloudformation:EnableOrganizationsAccess", "controltower:DeleteLandingZone", "servicecatalog:DeleteProvisioningArtifact", "servicecatalog:DeleteProduct", "servicecatalog:DisassociatePrincipalFromPortfolio", "servicecatalog:DisassociateProductFromPortfolio", "servicecatalog:DeletePortfolio", + "iam:CreateServiceLinkedRole", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:DeleteRole" @@ -64,7 +67,9 @@ "modify": [ "controltower:UpdateLandingZone", "servicecatalog:UpdatePortfolio", - "servicecatalog:UpdateProvisioningArtifact" + "servicecatalog:UpdateProvisioningArtifact", + "iam:CreateServiceLinkedRole", + "cloudformation:EnableOrganizationsAccess" ], "plan": [] } diff --git a/src/mapping/aws/resource/cost-optimization-hub/aws_costoptimizationhub_enrollment_status.json b/src/mapping/aws/resource/cost-optimization-hub/aws_costoptimizationhub_enrollment_status.json new file mode 100644 index 00000000..61afb502 --- /dev/null +++ b/src/mapping/aws/resource/cost-optimization-hub/aws_costoptimizationhub_enrollment_status.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "cost-optimization-hub:UpdateEnrollmentStatus", + "cost-optimization-hub:ListEnrollmentStatuses" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/cost-optimization-hub/aws_costoptimizationhub_preferences.json b/src/mapping/aws/resource/cost-optimization-hub/aws_costoptimizationhub_preferences.json new file mode 100644 index 00000000..1db18633 --- /dev/null +++ b/src/mapping/aws/resource/cost-optimization-hub/aws_costoptimizationhub_preferences.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "cost-optimization-hub:GetPreferences", + "cost-optimization-hub:UpdatePreferences" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/dataexchange/aws_dataexchange_data_set.json b/src/mapping/aws/resource/dataexchange/aws_dataexchange_data_set.json new file mode 100644 index 00000000..2c8f9842 --- /dev/null +++ b/src/mapping/aws/resource/dataexchange/aws_dataexchange_data_set.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataexchange:GetDataSet", + "dataexchange:CreateDataSet", + "dataexchange:DeleteDataSet", + "dataexchange:UpdateDataSet" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/dataexchange/aws_dataexchange_event_action.json b/src/mapping/aws/resource/dataexchange/aws_dataexchange_event_action.json new file mode 100644 index 00000000..3238c045 --- /dev/null +++ b/src/mapping/aws/resource/dataexchange/aws_dataexchange_event_action.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataexchange:GetEventAction", + "dataexchange:CreateEventAction", + "dataexchange:DeleteEventAction", + "dataexchange:UpdateEventAction" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/dataexchange/aws_dataexchange_revision.json b/src/mapping/aws/resource/dataexchange/aws_dataexchange_revision.json new file mode 100644 index 00000000..b526430d --- /dev/null +++ b/src/mapping/aws/resource/dataexchange/aws_dataexchange_revision.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataexchange:GetRevision", + "dataexchange:CreateRevision", + "dataexchange:DeleteRevision", + "dataexchange:UpdateRevision" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/dataexchange/aws_dataexchange_revision_assets.json b/src/mapping/aws/resource/dataexchange/aws_dataexchange_revision_assets.json new file mode 100644 index 00000000..dfa336c0 --- /dev/null +++ b/src/mapping/aws/resource/dataexchange/aws_dataexchange_revision_assets.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "dataexchange:ListTagsForResource", + "dataexchange:CreateRevision", + "dataexchange:DeleteRevision", + "dataexchange:UpdateRevision", + "dataexchange:GetRevision" + ], + "attributes": { + "tags": [ + "dataexchange:TagResource", + "dataexchange:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/datasync/aws_datasync_location_efs.json b/src/mapping/aws/resource/datasync/aws_datasync_location_efs.json index 7a6b80ef..eeb3548f 100644 --- a/src/mapping/aws/resource/datasync/aws_datasync_location_efs.json +++ b/src/mapping/aws/resource/datasync/aws_datasync_location_efs.json @@ -3,7 +3,10 @@ "apply": [ "datasync:DescribeLocationEfs", "datasync:CreateLocationEfs", - "datasync:ListTagsForResource" + "datasync:ListTagsForResource", + "datasync:UpdateLocationEfs", + "elasticfilesystem:DescribeFileSystems", + "elasticfilesystem:DescribeAccessPoints" ], "attributes": { "tags": [ @@ -14,7 +17,11 @@ "destroy": [ "datasync:DeleteLocation" ], - "modify": [], + "modify": [ + "datasync:UpdateLocationEfs", + "elasticfilesystem:DescribeFileSystems", + "elasticfilesystem:DescribeAccessPoints" + ], "plan": [] } ] diff --git a/src/mapping/aws/resource/datasync/aws_datasync_location_fsx_lustre_file_system.json b/src/mapping/aws/resource/datasync/aws_datasync_location_fsx_lustre_file_system.json index 782119a4..04a64fee 100644 --- a/src/mapping/aws/resource/datasync/aws_datasync_location_fsx_lustre_file_system.json +++ b/src/mapping/aws/resource/datasync/aws_datasync_location_fsx_lustre_file_system.json @@ -4,7 +4,12 @@ "datasync:DescribeLocationFsxLustre", "datasync:CreateLocationFsxLustre", "datasync:DeleteLocation", - "datasync:ListTagsForResource" + "datasync:ListTagsForResource", + "datasync:UpdateLocationFsxLustre", + "fsx:DescribeFileSystems", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups" ], "attributes": { "tags": [ @@ -13,7 +18,13 @@ ] }, "destroy": [], - "modify": [], + "modify": [ + "datasync:DescribeLocationFsxLustre", + "datasync:ListTagsForResource", + "datasync:UpdateLocationFsxLustre", + "fsx:DescribeFileSystems", + "ec2:DescribeNetworkInterfaces" + ], "plan": [] } ] diff --git a/src/mapping/aws/resource/datasync/aws_datasync_location_fsx_ontap_file_system.json b/src/mapping/aws/resource/datasync/aws_datasync_location_fsx_ontap_file_system.json index 080bddea..29e0a2a2 100644 --- a/src/mapping/aws/resource/datasync/aws_datasync_location_fsx_ontap_file_system.json +++ b/src/mapping/aws/resource/datasync/aws_datasync_location_fsx_ontap_file_system.json @@ -1,10 +1,16 @@ [ { "apply": [ - "datasync:DescribeLocationFsxOntap", "datasync:CreateLocationFsxOntap", "datasync:DeleteLocation", - "datasync:ListTagsForResource" + "datasync:DescribeLocationFsxOntap", + "datasync:ListTagsForResource", + "datasync:UpdateLocationFsxOntap", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "fsx:DescribeFileSystems", + "fsx:DescribeStorageVirtualMachines" ], "attributes": { "tags": [ @@ -15,7 +21,14 @@ "destroy": [ "datasync:DeleteLocation" ], - "modify": [], + "modify": [ + "datasync:UpdateLocationFsxOntap", + "datasync:DescribeLocationFsxOntap", + "datasync:ListTagsForResource", + "fsx:DescribeFileSystems", + "fsx:DescribeStorageVirtualMachines", + "ec2:DescribeNetworkInterfaces" + ], "plan": [] } ] diff --git a/src/mapping/aws/resource/datasync/aws_datasync_location_fsx_openzfs_file_system.json b/src/mapping/aws/resource/datasync/aws_datasync_location_fsx_openzfs_file_system.json index ac84cd4a..a0497518 100644 --- a/src/mapping/aws/resource/datasync/aws_datasync_location_fsx_openzfs_file_system.json +++ b/src/mapping/aws/resource/datasync/aws_datasync_location_fsx_openzfs_file_system.json @@ -4,7 +4,12 @@ "datasync:DescribeLocationFsxOpenZfs", "datasync:CreateLocationFsxOpenZfs", "datasync:DeleteLocation", - "datasync:ListTagsForResource" + "datasync:ListTagsForResource", + "datasync:UpdateLocationFsxOpenZfs", + "fsx:DescribeFileSystems", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups" ], "attributes": { "tags": [ @@ -15,7 +20,13 @@ "destroy": [ "datasync:DeleteLocation" ], - "modify": [], + "modify": [ + "datasync:DescribeLocationFsxOpenZfs", + "datasync:UpdateLocationFsxOpenZfs", + "datasync:ListTagsForResource", + "fsx:DescribeFileSystems", + "ec2:DescribeNetworkInterfaces" + ], "plan": [] } ] diff --git a/src/mapping/aws/resource/datasync/aws_datasync_location_fsx_windows_file_system.json b/src/mapping/aws/resource/datasync/aws_datasync_location_fsx_windows_file_system.json index 03757c9a..6b4742fd 100644 --- a/src/mapping/aws/resource/datasync/aws_datasync_location_fsx_windows_file_system.json +++ b/src/mapping/aws/resource/datasync/aws_datasync_location_fsx_windows_file_system.json @@ -3,7 +3,11 @@ "apply": [ "datasync:CreateLocationFsxWindows", "datasync:DescribeLocationFsxWindows", - "datasync:ListTagsForResource" + "datasync:ListTagsForResource", + "fsx:DescribeFileSystems", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups" ], "attributes": { "tags": [ @@ -14,7 +18,13 @@ "destroy": [ "datasync:DeleteLocation" ], - "modify": [], + "modify": [ + "datasync:DescribeLocationFsxWindows", + "datasync:UpdateLocationFsxWindows", + "datasync:ListTagsForResource", + "fsx:DescribeFileSystems", + "ec2:DescribeNetworkInterfaces" + ], "plan": [] } ] diff --git a/src/mapping/aws/resource/datasync/aws_datasync_location_s3.json b/src/mapping/aws/resource/datasync/aws_datasync_location_s3.json index 0d429abd..fd835383 100644 --- a/src/mapping/aws/resource/datasync/aws_datasync_location_s3.json +++ b/src/mapping/aws/resource/datasync/aws_datasync_location_s3.json @@ -3,7 +3,13 @@ "apply": [ "datasync:CreateLocationS3", "datasync:DescribeLocationS3", - "datasync:DeleteLocation" + "datasync:DeleteLocation", + "datasync:ListTagsForResource", + "datasync:UpdateLocationS3", + "s3:ListAllMyBuckets", + "s3:ListBucket", + "iam:GetRole", + "iam:PassRole" ], "attributes": { "tags": [ @@ -14,7 +20,11 @@ "destroy": [ "datasync:DeleteLocation" ], - "modify": [], + "modify": [ + "datasync:DescribeLocationS3", + "datasync:ListTagsForResource", + "datasync:UpdateLocationS3" + ], "plan": [] } ] diff --git a/src/mapping/aws/resource/datazone/aws_datazone_domain.json b/src/mapping/aws/resource/datazone/aws_datazone_domain.json index 30f7c36b..460ffa26 100644 --- a/src/mapping/aws/resource/datazone/aws_datazone_domain.json +++ b/src/mapping/aws/resource/datazone/aws_datazone_domain.json @@ -1,24 +1,32 @@ -[ - { - "apply": [ - "datazone:CreateDomain", - "datazone:GetDomain", - "datazone:ListTagsForResource", - "datazone:DeleteDomain", - "datazone:UpdateDomain" - ], - "attributes": { - "tags": [ - "datazone:TagResource", - "datazone:UntagResource" - ] - }, - "destroy": [ - "datazone:DeleteDomain" - ], - "modify": [ - "datazone:UpdateDomain" - ], - "plan": [] - } -] +[ + { + "apply": [ + "datazone:CreateDomain", + "datazone:GetDomain", + "datazone:ListTagsForResource", + "datazone:DeleteDomain", + "datazone:UpdateDomain", + "iam:PassRole" + ], + "attributes": { + "single_sign_on": [ + "sso:CreateManagedApplicationInstance", + "sso:DeleteManagedApplicationInstance", + "sso:PutApplicationAssignmentConfiguration", + "sso:PutApplicationAccessScope", + "sso:ListInstances" + ], + "tags": [ + "datazone:TagResource", + "datazone:UntagResource" + ] + }, + "destroy": [ + "datazone:DeleteDomain" + ], + "modify": [ + "datazone:UpdateDomain" + ], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/detective/aws_detective_graph.json b/src/mapping/aws/resource/detective/aws_detective_graph.json index 6d19d253..dafc6c79 100644 --- a/src/mapping/aws/resource/detective/aws_detective_graph.json +++ b/src/mapping/aws/resource/detective/aws_detective_graph.json @@ -4,8 +4,8 @@ "detective:CreateGraph", "detective:UpdateOrganizationConfiguration", "organizations:DescribeOrganization", - "detective:DeleteGraph", "detective:ListGraphs", + "detective:DeleteGraph", "detective:ListTagsForResource", "detective:DescribeOrganizationConfiguration", "detective:UpdateOrganizationConfiguration" @@ -17,9 +17,11 @@ ] }, "destroy": [ - "detective:DeleteGraph" + "detective:DeleteGraph", + "detective:ListGraphs" ], "modify": [ + "detective:ListGraphs", "detective:UpdateOrganizationConfiguration" ], "plan": [] diff --git a/src/mapping/aws/resource/detective/aws_detective_member.json b/src/mapping/aws/resource/detective/aws_detective_member.json new file mode 100644 index 00000000..850dae33 --- /dev/null +++ b/src/mapping/aws/resource/detective/aws_detective_member.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "detective:GetMembers", + "detective:CreateMembers", + "detective:DeleteMembers" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/detective/aws_detective_organization_configuration.json b/src/mapping/aws/resource/detective/aws_detective_organization_configuration.json new file mode 100644 index 00000000..b217e764 --- /dev/null +++ b/src/mapping/aws/resource/detective/aws_detective_organization_configuration.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "detective:DescribeOrganizationConfiguration", + "detective:UpdateOrganizationConfiguration" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/devicefarm/aws_devicefarm_device_pool.json b/src/mapping/aws/resource/devicefarm/aws_devicefarm_device_pool.json new file mode 100644 index 00000000..f702ca0e --- /dev/null +++ b/src/mapping/aws/resource/devicefarm/aws_devicefarm_device_pool.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "devicefarm:GetDevicePool", + "devicefarm:CreateDevicePool", + "devicefarm:DeleteDevicePool", + "devicefarm:UpdateDevicePool", + "devicefarm:ListTagsForResource" + ], + "attributes": { + "tags": [ + "devicefarm:TagResource", + "devicefarm:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/devicefarm/aws_devicefarm_instance_profile.json b/src/mapping/aws/resource/devicefarm/aws_devicefarm_instance_profile.json new file mode 100644 index 00000000..a1c1695c --- /dev/null +++ b/src/mapping/aws/resource/devicefarm/aws_devicefarm_instance_profile.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "devicefarm:GetInstanceProfile", + "devicefarm:CreateInstanceProfile", + "devicefarm:DeleteInstanceProfile", + "devicefarm:UpdateInstanceProfile", + "devicefarm:ListTagsForResource" + ], + "attributes": { + "tags": [ + "devicefarm:TagResource", + "devicefarm:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/devicefarm/aws_devicefarm_network_profile.json b/src/mapping/aws/resource/devicefarm/aws_devicefarm_network_profile.json new file mode 100644 index 00000000..e327b7a6 --- /dev/null +++ b/src/mapping/aws/resource/devicefarm/aws_devicefarm_network_profile.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "devicefarm:GetNetworkProfile", + "devicefarm:CreateNetworkProfile", + "devicefarm:DeleteNetworkProfile", + "devicefarm:UpdateNetworkProfile", + "devicefarm:ListTagsForResource" + ], + "attributes": { + "tags": [ + "devicefarm:TagResource", + "devicefarm:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/devicefarm/aws_devicefarm_project.json b/src/mapping/aws/resource/devicefarm/aws_devicefarm_project.json new file mode 100644 index 00000000..ea9651ba --- /dev/null +++ b/src/mapping/aws/resource/devicefarm/aws_devicefarm_project.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "devicefarm:GetProject", + "devicefarm:CreateProject", + "devicefarm:DeleteProject", + "devicefarm:UpdateProject", + "devicefarm:ListTagsForResource" + ], + "attributes": { + "tags": [ + "devicefarm:TagResource", + "devicefarm:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/devicefarm/aws_devicefarm_upload.json b/src/mapping/aws/resource/devicefarm/aws_devicefarm_upload.json new file mode 100644 index 00000000..5d6b22a9 --- /dev/null +++ b/src/mapping/aws/resource/devicefarm/aws_devicefarm_upload.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "devicefarm:GetUpload", + "devicefarm:CreateUpload", + "devicefarm:DeleteUpload", + "devicefarm:UpdateUpload" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/devops-guru/aws_devopsguru_event_sources_config.json b/src/mapping/aws/resource/devops-guru/aws_devopsguru_event_sources_config.json new file mode 100644 index 00000000..f5097e64 --- /dev/null +++ b/src/mapping/aws/resource/devops-guru/aws_devopsguru_event_sources_config.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "devops-guru:DescribeEventSourcesConfig", + "devops-guru:UpdateEventSourcesConfig" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/devops-guru/aws_devopsguru_service_integration.json b/src/mapping/aws/resource/devops-guru/aws_devopsguru_service_integration.json new file mode 100644 index 00000000..52a6ae57 --- /dev/null +++ b/src/mapping/aws/resource/devops-guru/aws_devopsguru_service_integration.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "devops-guru:UpdateServiceIntegration", + "devops-guru:DescribeServiceIntegration" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directconnect/aws_dx_bgp_peer.json b/src/mapping/aws/resource/directconnect/aws_dx_bgp_peer.json new file mode 100644 index 00000000..dcae75d7 --- /dev/null +++ b/src/mapping/aws/resource/directconnect/aws_dx_bgp_peer.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "directconnect:CreateBGPPeer", + "directconnect:DeleteBGPPeer" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directconnect/aws_dx_connection.json b/src/mapping/aws/resource/directconnect/aws_dx_connection.json new file mode 100644 index 00000000..144ce9e2 --- /dev/null +++ b/src/mapping/aws/resource/directconnect/aws_dx_connection.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "directconnect:DescribeConnections", + "directconnect:CreateConnection", + "directconnect:DeleteConnection", + "directconnect:UpdateConnection", + "directconnect:DescribeTags" + ], + "attributes": { + "tags": [ + "directconnect:TagResource", + "directconnect:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directconnect/aws_dx_connection_association.json b/src/mapping/aws/resource/directconnect/aws_dx_connection_association.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/directconnect/aws_dx_connection_association.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directconnect/aws_dx_connection_confirmation.json b/src/mapping/aws/resource/directconnect/aws_dx_connection_confirmation.json new file mode 100644 index 00000000..be8dd336 --- /dev/null +++ b/src/mapping/aws/resource/directconnect/aws_dx_connection_confirmation.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "directconnect:ConfirmConnection" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directconnect/aws_dx_gateway_association_proposal.json b/src/mapping/aws/resource/directconnect/aws_dx_gateway_association_proposal.json new file mode 100644 index 00000000..38315998 --- /dev/null +++ b/src/mapping/aws/resource/directconnect/aws_dx_gateway_association_proposal.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "directconnect:AcceptDirectConnectGatewayAssociationProposal", + "directconnect:CreateDirectConnectGatewayAssociationProposal", + "directconnect:DeleteDirectConnectGatewayAssociationProposal" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directconnect/aws_dx_hosted_connection.json b/src/mapping/aws/resource/directconnect/aws_dx_hosted_connection.json new file mode 100644 index 00000000..3892dbbe --- /dev/null +++ b/src/mapping/aws/resource/directconnect/aws_dx_hosted_connection.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "directconnect:DescribeHostedConnections", + "directconnect:AssociateHostedConnection" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directconnect/aws_dx_hosted_private_virtual_interface.json b/src/mapping/aws/resource/directconnect/aws_dx_hosted_private_virtual_interface.json new file mode 100644 index 00000000..7a9684b7 --- /dev/null +++ b/src/mapping/aws/resource/directconnect/aws_dx_hosted_private_virtual_interface.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "directconnect:DescribeVirtualInterfaces", + "directconnect:CreatePrivateVirtualInterface", + "directconnect:DeleteVirtualInterface" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directconnect/aws_dx_hosted_private_virtual_interface_accepter.json b/src/mapping/aws/resource/directconnect/aws_dx_hosted_private_virtual_interface_accepter.json new file mode 100644 index 00000000..524ca65d --- /dev/null +++ b/src/mapping/aws/resource/directconnect/aws_dx_hosted_private_virtual_interface_accepter.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "directconnect:ConfirmPrivateVirtualInterface" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directconnect/aws_dx_hosted_public_virtual_interface.json b/src/mapping/aws/resource/directconnect/aws_dx_hosted_public_virtual_interface.json new file mode 100644 index 00000000..539a4f86 --- /dev/null +++ b/src/mapping/aws/resource/directconnect/aws_dx_hosted_public_virtual_interface.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "directconnect:CreatePublicVirtualInterface", + "directconnect:DescribeVirtualInterfaces", + "directconnect:DeleteVirtualInterface" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directconnect/aws_dx_hosted_public_virtual_interface_accepter.json b/src/mapping/aws/resource/directconnect/aws_dx_hosted_public_virtual_interface_accepter.json new file mode 100644 index 00000000..5959392e --- /dev/null +++ b/src/mapping/aws/resource/directconnect/aws_dx_hosted_public_virtual_interface_accepter.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "directconnect:ConfirmPublicVirtualInterface" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directconnect/aws_dx_hosted_transit_virtual_interface.json b/src/mapping/aws/resource/directconnect/aws_dx_hosted_transit_virtual_interface.json new file mode 100644 index 00000000..4af1c9d0 --- /dev/null +++ b/src/mapping/aws/resource/directconnect/aws_dx_hosted_transit_virtual_interface.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "directconnect:CreateTransitVirtualInterface", + "directconnect:DescribeVirtualInterfaces", + "directconnect:DeleteVirtualInterface" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directconnect/aws_dx_lag.json b/src/mapping/aws/resource/directconnect/aws_dx_lag.json new file mode 100644 index 00000000..cae59182 --- /dev/null +++ b/src/mapping/aws/resource/directconnect/aws_dx_lag.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "directconnect:DescribeLags", + "directconnect:CreateLag", + "directconnect:DeleteLag", + "directconnect:UpdateLag", + "directconnect:DescribeTags" + ], + "attributes": { + "tags": [ + "directconnect:TagResource", + "directconnect:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directconnect/aws_dx_macsec_key_association.json b/src/mapping/aws/resource/directconnect/aws_dx_macsec_key_association.json new file mode 100644 index 00000000..06eb1ab9 --- /dev/null +++ b/src/mapping/aws/resource/directconnect/aws_dx_macsec_key_association.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "directconnect:AssociateMacSecKey", + "directconnect:DisassociateMacSecKey" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directconnect/aws_dx_private_virtual_interface.json b/src/mapping/aws/resource/directconnect/aws_dx_private_virtual_interface.json new file mode 100644 index 00000000..0eb05335 --- /dev/null +++ b/src/mapping/aws/resource/directconnect/aws_dx_private_virtual_interface.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "directconnect:DescribeVirtualInterfaces", + "directconnect:CreatePrivateVirtualInterface", + "directconnect:DeleteVirtualInterface", + "directconnect:DescribeTags" + ], + "attributes": { + "tags": [ + "directconnect:TagResource", + "directconnect:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directconnect/aws_dx_public_virtual_interface.json b/src/mapping/aws/resource/directconnect/aws_dx_public_virtual_interface.json new file mode 100644 index 00000000..185ab5fc --- /dev/null +++ b/src/mapping/aws/resource/directconnect/aws_dx_public_virtual_interface.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "directconnect:CreatePublicVirtualInterface", + "directconnect:DescribeVirtualInterfaces", + "directconnect:DeleteVirtualInterface", + "directconnect:DescribeTags" + ], + "attributes": { + "tags": [ + "directconnect:TagResource", + "directconnect:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directconnect/aws_dx_transit_virtual_interface.json b/src/mapping/aws/resource/directconnect/aws_dx_transit_virtual_interface.json new file mode 100644 index 00000000..a7338745 --- /dev/null +++ b/src/mapping/aws/resource/directconnect/aws_dx_transit_virtual_interface.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "directconnect:CreateTransitVirtualInterface", + "directconnect:DescribeVirtualInterfaces", + "directconnect:DeleteVirtualInterface", + "directconnect:DescribeTags" + ], + "attributes": { + "tags": [ + "directconnect:TagResource", + "directconnect:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directoryservice/aws_directory_service_conditional_forwarder.json b/src/mapping/aws/resource/directoryservice/aws_directory_service_conditional_forwarder.json new file mode 100644 index 00000000..e7d16e8e --- /dev/null +++ b/src/mapping/aws/resource/directoryservice/aws_directory_service_conditional_forwarder.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "ds:DescribeConditionalForwarders", + "ds:CreateConditionalForwarder", + "ds:DeleteConditionalForwarder", + "ds:UpdateConditionalForwarder" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directoryservice/aws_directory_service_radius_settings.json b/src/mapping/aws/resource/directoryservice/aws_directory_service_radius_settings.json new file mode 100644 index 00000000..e3ae16bf --- /dev/null +++ b/src/mapping/aws/resource/directoryservice/aws_directory_service_radius_settings.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ds:DisableRadius", + "ds:EnableRadius", + "ds:UpdateRadius" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directoryservice/aws_directory_service_region.json b/src/mapping/aws/resource/directoryservice/aws_directory_service_region.json new file mode 100644 index 00000000..68e6c4ec --- /dev/null +++ b/src/mapping/aws/resource/directoryservice/aws_directory_service_region.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ds:DescribeRegions", + "ds:AddRegion", + "ds:RemoveRegion" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directoryservice/aws_directory_service_shared_directory.json b/src/mapping/aws/resource/directoryservice/aws_directory_service_shared_directory.json new file mode 100644 index 00000000..88a4cc45 --- /dev/null +++ b/src/mapping/aws/resource/directoryservice/aws_directory_service_shared_directory.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ds:DescribeSharedDirectories", + "ds:UnshareDirectory", + "ds:ShareDirectory" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directoryservice/aws_directory_service_shared_directory_accepter.json b/src/mapping/aws/resource/directoryservice/aws_directory_service_shared_directory_accepter.json new file mode 100644 index 00000000..6d2e1079 --- /dev/null +++ b/src/mapping/aws/resource/directoryservice/aws_directory_service_shared_directory_accepter.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "ds:RejectSharedDirectory", + "ds:AcceptSharedDirectory" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/directoryservice/aws_directory_service_trust.json b/src/mapping/aws/resource/directoryservice/aws_directory_service_trust.json new file mode 100644 index 00000000..3b351737 --- /dev/null +++ b/src/mapping/aws/resource/directoryservice/aws_directory_service_trust.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "ds:DescribeTrusts", + "ds:CreateTrust", + "ds:DeleteTrust", + "ds:UpdateTrust" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/drs/aws_drs_replication_configuration_template.json b/src/mapping/aws/resource/drs/aws_drs_replication_configuration_template.json new file mode 100644 index 00000000..5efacf8a --- /dev/null +++ b/src/mapping/aws/resource/drs/aws_drs_replication_configuration_template.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "drs:CreateReplicationConfigurationTemplate", + "drs:DescribeReplicationConfigurationTemplates", + "drs:DeleteReplicationConfigurationTemplate", + "drs:UpdateReplicationConfigurationTemplate", + "drs:ListTagsForResource" + ], + "attributes": { + "tags": [ + "drs:TagResource", + "drs:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/dsql/aws_dsql_cluster.json b/src/mapping/aws/resource/dsql/aws_dsql_cluster.json new file mode 100644 index 00000000..f25e2f10 --- /dev/null +++ b/src/mapping/aws/resource/dsql/aws_dsql_cluster.json @@ -0,0 +1,28 @@ +[ + { + "apply": [ + "dsql:CreateCluster", + "dsql:GetCluster", + "iam:CreateServiceLinkedRole", + "dsql:GetVpcEndpointServiceName", + "dsql:ListTagsForResource", + "dsql:UpdateCluster", + "dsql:DeleteCluster" + ], + "attributes": { + "tags": [ + "dsql:TagResource", + "dsql:UntagResource" + ] + }, + "destroy": [ + "dsql:DeleteCluster" + ], + "modify": [ + "dsql:UpdateCluster" + ], + "plan": [ + "dsql:GetCluster" + ] + } +] diff --git a/src/mapping/aws/resource/dsql/aws_dsql_cluster_peering.json b/src/mapping/aws/resource/dsql/aws_dsql_cluster_peering.json new file mode 100644 index 00000000..787885f0 --- /dev/null +++ b/src/mapping/aws/resource/dsql/aws_dsql_cluster_peering.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dsql:AddPeerCluster", + "dsql:RemovePeerCluster" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "dsql:RemovePeerCluster" + ], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/dynamodb/aws_dynamodb_kinesis_streaming_destination.json b/src/mapping/aws/resource/dynamodb/aws_dynamodb_kinesis_streaming_destination.json new file mode 100644 index 00000000..2422d812 --- /dev/null +++ b/src/mapping/aws/resource/dynamodb/aws_dynamodb_kinesis_streaming_destination.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:UpdateKinesisStreamingDestination" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/dynamodb/aws_dynamodb_resource_policy.json b/src/mapping/aws/resource/dynamodb/aws_dynamodb_resource_policy.json new file mode 100644 index 00000000..8ede8a54 --- /dev/null +++ b/src/mapping/aws/resource/dynamodb/aws_dynamodb_resource_policy.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "dynamodb:GetResourcePolicy", + "dynamodb:DeleteResourcePolicy", + "dynamodb:PutResourcePolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/dynamodb/aws_dynamodb_table.json b/src/mapping/aws/resource/dynamodb/aws_dynamodb_table.json index dbf51d6a..aeb97f7d 100644 --- a/src/mapping/aws/resource/dynamodb/aws_dynamodb_table.json +++ b/src/mapping/aws/resource/dynamodb/aws_dynamodb_table.json @@ -17,6 +17,9 @@ "kms:Encrypt", "kms:RevokeGrant" ], + "point_in_time_recovery": [ + "dynamodb:UpdateContinuousBackups" + ], "replica": [ "dynamodb:CreateTableReplica", "dynamodb:Query", @@ -52,6 +55,8 @@ "dynamodb:UpdateTable", "dynamodb:UpdateTimeToLive" ], - "plan": [] + "plan": [ + "dynamodb:DescribeTable" + ] } ] diff --git a/src/mapping/aws/resource/dynamodb/aws_dynamodb_table_export.json b/src/mapping/aws/resource/dynamodb/aws_dynamodb_table_export.json new file mode 100644 index 00000000..cd43bda7 --- /dev/null +++ b/src/mapping/aws/resource/dynamodb/aws_dynamodb_table_export.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dynamodb:DescribeExport", + "dynamodb:ExportTableToPointInTime" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/dynamodb/aws_dynamodb_table_replica.json b/src/mapping/aws/resource/dynamodb/aws_dynamodb_table_replica.json new file mode 100644 index 00000000..3b212034 --- /dev/null +++ b/src/mapping/aws/resource/dynamodb/aws_dynamodb_table_replica.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dynamodb:CreateTableReplica", + "dynamodb:DeleteTableReplica" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ebs_fast_snapshot_restore.json b/src/mapping/aws/resource/ec2/aws_ebs_fast_snapshot_restore.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ebs_fast_snapshot_restore.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ebs_snapshot_import.json b/src/mapping/aws/resource/ec2/aws_ebs_snapshot_import.json new file mode 100644 index 00000000..65a2eb2b --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ebs_snapshot_import.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "ec2:ImportSnapshot", + "ec2:DescribeTags" + ], + "attributes": { + "tags": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_capacity_block_reservation.json b/src/mapping/aws/resource/ec2/aws_ec2_capacity_block_reservation.json new file mode 100644 index 00000000..f908a566 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_capacity_block_reservation.json @@ -0,0 +1,32 @@ +[ + { + "apply": [ + "ec2:CreateCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:ModifyCapacityReservation", + "ec2:AssociateCapacityReservationBillingOwner" + ], + "attributes": { + "tags": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "destroy": [ + "ec2:CreateCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation" + ], + "modify": [ + "ec2:ModifyCapacityReservation", + "ec2:CreateCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:AssociateCapacityReservationBillingOwner" + ], + "plan": [ + "ec2:DescribeCapacityReservations" + ] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_default_credit_specification.json b/src/mapping/aws/resource/ec2/aws_ec2_default_credit_specification.json new file mode 100644 index 00000000..e68fcd5a --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_default_credit_specification.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "ec2:GetDefaultCreditSpecification", + "ec2:ModifyDefaultCreditSpecification" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_instance_connect_endpoint.json b/src/mapping/aws/resource/ec2/aws_ec2_instance_connect_endpoint.json new file mode 100644 index 00000000..78cd333a --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_instance_connect_endpoint.json @@ -0,0 +1,27 @@ +[ + { + "apply": [ + "ec2:CreateInstanceConnectEndpoint", + "ec2:DescribeInstanceConnectEndpoints", + "ec2:DescribeInstanceConnectEndpoints", + "ec2:CreateNetworkInterface", + "iam:CreateServiceLinkedRole" + ], + "attributes": { + "tags": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "destroy": [ + "ec2:DeleteInstanceConnectEndpoint", + "ec2:DescribeInstanceConnectEndpoints" + ], + "modify": [ + "ec2:DescribeInstanceConnectEndpoints" + ], + "plan": [ + "ec2:DescribeInstanceConnectEndpoints" + ] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_instance_metadata_defaults.json b/src/mapping/aws/resource/ec2/aws_ec2_instance_metadata_defaults.json new file mode 100644 index 00000000..8dc15c9c --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_instance_metadata_defaults.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "ec2:GetInstanceMetadataDefaults", + "ec2:ModifyInstanceMetadataDefaults" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_instance_state.json b/src/mapping/aws/resource/ec2/aws_ec2_instance_state.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_instance_state.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_local_gateway_route_table_vpc_association.json b/src/mapping/aws/resource/ec2/aws_ec2_local_gateway_route_table_vpc_association.json index 39c66076..0a75b6c8 100644 --- a/src/mapping/aws/resource/ec2/aws_ec2_local_gateway_route_table_vpc_association.json +++ b/src/mapping/aws/resource/ec2/aws_ec2_local_gateway_route_table_vpc_association.json @@ -3,7 +3,8 @@ "apply": [ "ec2:CreateLocalGatewayRouteTable", "ec2:DescribeLocalGatewayRouteTables", - "ec2:DeleteLocalGatewayRouteTable" + "ec2:DeleteLocalGatewayRouteTable", + "ec2:DescribeTags" ], "attributes": { "tags": [ @@ -14,7 +15,13 @@ "destroy": [ "ec2:DeleteLocalGatewayRouteTable" ], - "modify": [], - "plan": [] + "modify": [ + "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", + "ec2:DescribeTags" + ], + "plan": [ + "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", + "ec2:DescribeTags" + ] } ] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_managed_prefix_list.json b/src/mapping/aws/resource/ec2/aws_ec2_managed_prefix_list.json index 158c794a..7a01087c 100644 --- a/src/mapping/aws/resource/ec2/aws_ec2_managed_prefix_list.json +++ b/src/mapping/aws/resource/ec2/aws_ec2_managed_prefix_list.json @@ -1,23 +1,23 @@ [ { "apply": [ - "EC2:CreateManagedPrefixList", - "EC2:DescribeManagedPrefixLists", - "EC2:DeleteManagedPrefixList", - "EC2:GetManagedPrefixListEntries", - "EC2:ModifyManagedPrefixList" + "ec2:CreateManagedPrefixList", + "ec2:DescribeManagedPrefixLists", + "ec2:DeleteManagedPrefixList", + "ec2:GetManagedPrefixListEntries", + "ec2:ModifyManagedPrefixList" ], "attributes": { "tags": [ - "EC2:CreateTags" + "ec2:CreateTags" ] }, "destroy": [ - "EC2:DeleteManagedPrefixList" + "ec2:DeleteManagedPrefixList" ], "modify": [ - "EC2:GetManagedPrefixListEntries", - "EC2:ModifyManagedPrefixList" + "ec2:GetManagedPrefixListEntries", + "ec2:ModifyManagedPrefixList" ], "plan": [] } diff --git a/src/mapping/aws/resource/ec2/aws_ec2_managed_prefix_list_entry.json b/src/mapping/aws/resource/ec2/aws_ec2_managed_prefix_list_entry.json new file mode 100644 index 00000000..e1c4c492 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_managed_prefix_list_entry.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "ec2:DescribeManagedPrefixLists", + "ec2:GetManagedPrefixListEntries" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_subnet_cidr_reservation.json b/src/mapping/aws/resource/ec2/aws_ec2_subnet_cidr_reservation.json new file mode 100644 index 00000000..f5ed6bba --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_subnet_cidr_reservation.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ec2:GetSubnetCidrReservations", + "ec2:CreateSubnetCidrReservation", + "ec2:DeleteSubnetCidrReservation" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_traffic_mirror_filter.json b/src/mapping/aws/resource/ec2/aws_ec2_traffic_mirror_filter.json new file mode 100644 index 00000000..21a648c7 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_traffic_mirror_filter.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "ec2:CreateTrafficMirrorFilter", + "ec2:ModifyTrafficMirrorFilterNetworkServices", + "ec2:DescribeTrafficMirrorFilters", + "ec2:DeleteTrafficMirrorFilter" + ], + "attributes": { + "tags": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_traffic_mirror_filter_rule.json b/src/mapping/aws/resource/ec2/aws_ec2_traffic_mirror_filter_rule.json new file mode 100644 index 00000000..723668da --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_traffic_mirror_filter_rule.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "ec2:CreateTrafficMirrorFilterRule", + "ec2:DeleteTrafficMirrorFilterRule", + "ec2:ModifyTrafficMirrorFilterRule" + ], + "attributes": { + "tags": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_traffic_mirror_session.json b/src/mapping/aws/resource/ec2/aws_ec2_traffic_mirror_session.json new file mode 100644 index 00000000..567e5a4f --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_traffic_mirror_session.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "ec2:CreateTrafficMirrorSession", + "ec2:DeleteTrafficMirrorSession", + "ec2:ModifyTrafficMirrorSession", + "ec2:DescribeTrafficMirrorSessions" + ], + "attributes": { + "tags": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_traffic_mirror_target.json b/src/mapping/aws/resource/ec2/aws_ec2_traffic_mirror_target.json new file mode 100644 index 00000000..0ea89fce --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_traffic_mirror_target.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "ec2:CreateTrafficMirrorTarget", + "ec2:DescribeTrafficMirrorTargets", + "ec2:DeleteTrafficMirrorTarget" + ], + "attributes": { + "tags": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_connect.json b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_connect.json index c4f0dc14..4e5b6e2a 100644 --- a/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_connect.json +++ b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_connect.json @@ -3,7 +3,8 @@ "apply": [ "ec2:CreateTransitGatewayConnect", "ec2:DescribeTransitGatewayConnects", - "ec2:DeleteTransitGatewayConnect" + "ec2:DeleteTransitGatewayConnect", + "ec2:DescribeTags" ], "attributes": { "tags": [ @@ -14,7 +15,10 @@ "destroy": [ "ec2:DeleteTransitGatewayConnect" ], - "modify": [], + "modify": [ + "ec2:DescribeTransitGatewayConnects", + "ec2:DescribeTags" + ], "plan": [ "ec2:DescribeTransitGatewayConnects" ] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_connect_peer.json b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_connect_peer.json new file mode 100644 index 00000000..7390e938 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_connect_peer.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ec2:DescribeTransitGatewayConnectPeers", + "ec2:CreateTransitGatewayConnectPeer", + "ec2:DeleteTransitGatewayConnectPeer" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_default_route_table_association.json b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_default_route_table_association.json new file mode 100644 index 00000000..24100402 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_default_route_table_association.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "ec2:GetTransitGatewayRouteTableAssociations", + "ec2:ReplaceRouteTableAssociation" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_default_route_table_propagation.json b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_default_route_table_propagation.json new file mode 100644 index 00000000..646f9153 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_default_route_table_propagation.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ec2:GetTransitGatewayRouteTablePropagations", + "ec2:DisableTransitGatewayRouteTablePropagation", + "ec2:EnableTransitGatewayRouteTablePropagation" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_multicast_domain.json b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_multicast_domain.json index b1d0cfe5..b5172605 100644 --- a/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_multicast_domain.json +++ b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_multicast_domain.json @@ -2,7 +2,8 @@ { "apply": [ "ec2:DescribeTransitGatewayMulticastDomains", - "ec2:CreateTransitGatewayMulticastDomain" + "ec2:CreateTransitGatewayMulticastDomain", + "ec2:DescribeTags" ], "attributes": { "tags": [ @@ -11,11 +12,16 @@ ] }, "destroy": [ - "ec2:DeleteTransitGatewayMulticastDomain" + "ec2:DeleteTransitGatewayMulticastDomain", + "ec2:DescribeTags" + ], + "modify": [ + "ec2:DescribeTransitGatewayMulticastDomains", + "ec2:DescribeTags" ], - "modify": [], "plan": [ - "ec2:DescribeTransitGatewayMulticastDomains" + "ec2:DescribeTransitGatewayMulticastDomains", + "ec2:DescribeTags" ] } ] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_peering_attachment.json b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_peering_attachment.json index 08753642..eb57c466 100644 --- a/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_peering_attachment.json +++ b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_peering_attachment.json @@ -3,15 +3,27 @@ "apply": [ "ec2:CreateTransitGatewayPeeringAttachment", "ec2:DescribeTransitGatewayPeeringAttachments", - "ec2:DeleteTransitGatewayPeeringAttachment" + "ec2:DeleteTransitGatewayPeeringAttachment", + "ec2:DescribeTags" ], "attributes": { - "tags": [] + "tags": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] }, "destroy": [ - "ec2:DeleteTransitGatewayPeeringAttachment" + "ec2:DeleteTransitGatewayPeeringAttachment", + "ec2:DescribeTransitGatewayPeeringAttachments", + "ec2:DescribeTags" + ], + "modify": [ + "ec2:DescribeTransitGatewayPeeringAttachments", + "ec2:DescribeTags" ], - "modify": [], - "plan": [] + "plan": [ + "ec2:DescribeTransitGatewayPeeringAttachments", + "ec2:DescribeTags" + ] } ] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_peering_attachment_accepter.json b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_peering_attachment_accepter.json new file mode 100644 index 00000000..e2685062 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_peering_attachment_accepter.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "ec2:AcceptTransitGatewayPeeringAttachment" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_policy_table.json b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_policy_table.json new file mode 100644 index 00000000..da572084 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_policy_table.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ec2:DescribeTransitGatewayPolicyTables", + "ec2:DeleteTransitGatewayPolicyTable", + "ec2:CreateTransitGatewayPolicyTable" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_policy_table_association.json b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_policy_table_association.json new file mode 100644 index 00000000..98e5ed16 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_policy_table_association.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ec2:GetTransitGatewayPolicyTableAssociations", + "ec2:AssociateTransitGatewayPolicyTable", + "ec2:DisassociateTransitGatewayPolicyTable" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_prefix_list_reference.json b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_prefix_list_reference.json new file mode 100644 index 00000000..fb3f1419 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_prefix_list_reference.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "ec2:GetTransitGatewayPrefixListReferences", + "ec2:CreateTransitGatewayPrefixListReference", + "ec2:DeleteTransitGatewayPrefixListReference", + "ec2:ModifyTransitGatewayPrefixListReference" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_vpc_attachment.json b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_vpc_attachment.json index aa8b047d..8c13459e 100644 --- a/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_vpc_attachment.json +++ b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_vpc_attachment.json @@ -16,11 +16,20 @@ ] }, "destroy": [ - "ec2:DeleteTransitGatewayVpcAttachment" + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DeleteTransitGatewayVpcAttachment", + "ec2:DescribeTags" ], "modify": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DescribeTags", + "ec2:CreateTransitGatewayVpcAttachment", + "ec2:DeleteTransitGatewayVpcAttachment", "ec2:ModifyTransitGatewayVpcAttachment" ], - "plan": [] + "plan": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DescribeTags" + ] } ] diff --git a/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_vpc_attachment_accepter.json b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_vpc_attachment_accepter.json new file mode 100644 index 00000000..18025b77 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_ec2_transit_gateway_vpc_attachment_accepter.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "ec2:AcceptTransitGatewayVpcAttachment" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_eip_domain_name.json b/src/mapping/aws/resource/ec2/aws_eip_domain_name.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_eip_domain_name.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_instance.json b/src/mapping/aws/resource/ec2/aws_instance.json index 138ac23d..2431ceb9 100644 --- a/src/mapping/aws/resource/ec2/aws_instance.json +++ b/src/mapping/aws/resource/ec2/aws_instance.json @@ -1,37 +1,73 @@ -[ - { - "apply": [ - "ec2:DescribeInstances", - "ec2:DescribeTags", - "ec2:DescribeInstanceAttribute", - "ec2:DescribeVolumes", - "ec2:DescribeInstanceTypes", - "ec2:RunInstances", - "ec2:DescribeInstanceCreditSpecifications", - "ec2:StopInstances", - "ec2:TerminateInstances", - "ec2:DescribeNetworkInterfaces" - ], - "attributes": { - "monitoring": [ - "ec2:MonitorInstances", - "ec2:UnmonitorInstances" - ], - "tags": [ - "ec2:CreateTags", - "ec2:DeleteTags" - ] - }, - "destroy": [ - "ec2:StopInstances", - "ec2:TerminateInstances" - ], - "modify": [ - "ec2:StopInstances", - "ec2:StartInstances", - "ec2:ModifyInstanceAttribute", - "ec2:StopInstances" - ], - "plan": [] - } -] +[ + { + "apply": [ + "ec2:DescribeInstances", + "ec2:DescribeTags", + "ec2:DescribeInstanceAttribute", + "ec2:DescribeVolumes", + "ec2:DescribeInstanceTypes", + "ec2:RunInstances", + "ec2:StopInstances", + "ec2:TerminateInstances", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeInstanceCreditSpecifications" + ], + "attributes": { + "credit_specification": [ + "ec2:ModifyInstanceCreditSpecification", + "ec2:DescribeInstanceCreditSpecifications" + ], + "iam_instance_profile": [ + "ec2:AssociateIamInstanceProfile", + "ec2:DescribeIamInstanceProfileAssociations", + "ec2:DisassociateIamInstanceProfile", + "ec2:ReplaceIamInstanceProfileAssociation", + "iam:PassRole" + ], + "key_name": [ + "ec2:DescribeKeyPairs" + ], + "launch_template": [ + "ec2:DescribeLaunchTemplates", + "ec2:DescribeLaunchTemplateVersions" + ], + "maintenance_options": [ + "ec2:ModifyInstanceMaintenanceOptions" + ], + "monitoring": [ + "ec2:MonitorInstances", + "ec2:UnmonitorInstances" + ], + "network_interface": [ + "ec2:DescribeNetworkInterfaces" + ], + "placement_group": [ + "ec2:ModifyInstancePlacement" + ], + "private_dns_name_options": [ + "ec2:ModifyPrivateDnsNameOptions" + ], + "security_groups": [ + "ec2:DescribeSecurityGroups" + ], + "subnet_id": [ + "ec2:DescribeSubnets" + ], + "tags": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "destroy": [ + "ec2:StopInstances", + "ec2:TerminateInstances" + ], + "modify": [ + "ec2:StopInstances", + "ec2:StartInstances", + "ec2:ModifyInstanceAttribute", + "ec2:StopInstances" + ], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_internet_gateway_attachment.json b/src/mapping/aws/resource/ec2/aws_internet_gateway_attachment.json new file mode 100644 index 00000000..2741e81c --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_internet_gateway_attachment.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "ec2:AttachInternetGateway", + "ec2:DetachInternetGateway" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_main_route_table_association.json b/src/mapping/aws/resource/ec2/aws_main_route_table_association.json new file mode 100644 index 00000000..e0c12840 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_main_route_table_association.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "ec2:AssociateRouteTable", + "ec2:DisassociateRouteTable" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_network_interface.json b/src/mapping/aws/resource/ec2/aws_network_interface.json index 656862df..d97bf352 100644 --- a/src/mapping/aws/resource/ec2/aws_network_interface.json +++ b/src/mapping/aws/resource/ec2/aws_network_interface.json @@ -8,7 +8,8 @@ "ec2:UnassignIpv6Addresses", "ec2:AssignIpv6Addresses", "ec2:UnassignPrivateIpAddresses", - "ec2:AssignPrivateIpAddresses" + "ec2:AssignPrivateIpAddresses", + "ec2:ModifyPublicIpDnsNameOptions" ], "attributes": { "tags": [ @@ -23,7 +24,8 @@ "ec2:UnassignIpv6Addresses", "ec2:AssignIpv6Addresses", "ec2:UnassignPrivateIpAddresses", - "ec2:AssignPrivateIpAddresses" + "ec2:AssignPrivateIpAddresses", + "ec2:ModifyPublicIpDnsNameOptions" ], "plan": [] } diff --git a/src/mapping/aws/resource/ec2/aws_network_interface_permission.json b/src/mapping/aws/resource/ec2/aws_network_interface_permission.json new file mode 100644 index 00000000..5e3fae26 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_network_interface_permission.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ec2:CreateNetworkInterfacePermission", + "ec2:DescribeNetworkInterfacePermissions", + "ec2:DeleteNetworkInterfacePermission" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_network_interface_sg_attachment.json b/src/mapping/aws/resource/ec2/aws_network_interface_sg_attachment.json new file mode 100644 index 00000000..88f12572 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_network_interface_sg_attachment.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "ec2:ModifyNetworkInterfaceAttribute" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_spot_datafeed_subscription.json b/src/mapping/aws/resource/ec2/aws_spot_datafeed_subscription.json new file mode 100644 index 00000000..e79b24a0 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_spot_datafeed_subscription.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ec2:DescribeSpotDatafeedSubscription", + "ec2:CreateSpotDatafeedSubscription", + "ec2:DeleteSpotDatafeedSubscription" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_verifiedaccess_endpoint.json b/src/mapping/aws/resource/ec2/aws_verifiedaccess_endpoint.json index a93d228a..5c689d41 100644 --- a/src/mapping/aws/resource/ec2/aws_verifiedaccess_endpoint.json +++ b/src/mapping/aws/resource/ec2/aws_verifiedaccess_endpoint.json @@ -13,13 +13,23 @@ "ec2:DescribeTags", "ec2:DescribeVerifiedAccessEndpoints", "ec2:ModifyVerifiedAccessEndpoint", + "ec2:DescribeVerifiedAccessEndpoints", + "ec2:DescribeSecurityGroups", + "ec2:DescribeVpcs", "iam:CreateServiceLinkedRole", "iam:ListRoles", "sso:CreateManagedApplicationInstance", "sso:DeleteManagedApplicationInstance", "sso:GetManagedApplicationInstance", "sso:GetPeregrineStatus", - "sso:GetSharedSsoConfiguration" + "sso:GetSharedSsoConfiguration", + "sso:PutApplicationAccessScope", + "sso:GetSharedSsoConfiguration", + "rds:DescribeDbInstances", + "rds:DescribeDbProxies", + "rds:DescribeDbClusters", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeVpcEndpointServiceConfigurations" ], "attributes": { "load_balancer_options": [ @@ -57,6 +67,13 @@ "acm:DeleteCertificateRelation", "sso:DeleteManagedApplicationInstance" ], - "plan": [] + "plan": [ + "ec2:DescribeVerifiedAccessEndpoints", + "ec2:GetVerifiedAccessEndpointPolicy", + "ec2:DescribeTags", + "rds:DescribeDbInstances", + "rds:DescribeDbProxies", + "rds:DescribeDbClusters" + ] } ] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_block_public_access_exclusion.json b/src/mapping/aws/resource/ec2/aws_vpc_block_public_access_exclusion.json new file mode 100644 index 00000000..ab17eacd --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_block_public_access_exclusion.json @@ -0,0 +1,26 @@ +[ + { + "apply": [ + "ec2:DescribeVpcBlockPublicAccessExclusions", + "ec2:CreateVpcBlockPublicAccessExclusion", + "ec2:DeleteVpcBlockPublicAccessExclusion" + ], + "attributes": { + "tags": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "destroy": [ + "ec2:DescribeVpcBlockPublicAccessExclusions", + "ec2:DeleteVpcBlockPublicAccessExclusion" + ], + "modify": [ + "ec2:DescribeVpcBlockPublicAccessExclusions", + "ec2:ModifyVpcBlockPublicAccessExclusion" + ], + "plan": [ + "ec2:DescribeVpcBlockPublicAccessExclusions" + ] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_block_public_access_options.json b/src/mapping/aws/resource/ec2/aws_vpc_block_public_access_options.json new file mode 100644 index 00000000..e9a6bca0 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_block_public_access_options.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "ec2:DescribeVpcBlockPublicAccessOptions", + "ec2:ModifyVpcBlockPublicAccessOptions" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "ec2:DescribeVpcBlockPublicAccessOptions", + "ec2:ModifyVpcBlockPublicAccessOptions" + ], + "modify": [ + "ec2:DescribeVpcBlockPublicAccessOptions", + "ec2:ModifyVpcBlockPublicAccessOptions" + ], + "plan": [ + "ec2:DescribeVpcBlockPublicAccessOptions" + ] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_endpoint.json b/src/mapping/aws/resource/ec2/aws_vpc_endpoint.json index b4058b1a..4bbbfcb2 100644 --- a/src/mapping/aws/resource/ec2/aws_vpc_endpoint.json +++ b/src/mapping/aws/resource/ec2/aws_vpc_endpoint.json @@ -5,7 +5,12 @@ "ec2:DescribeVpcEndpoints", "ec2:DescribePrefixLists", "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint" + "ec2:ModifyVpcEndpoint", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:CreateServiceNetworkVpcEndpointAssociation", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation", + "vpce:AllowMultiRegion" ], "attributes": { "tags": [ @@ -14,11 +19,27 @@ ] }, "destroy": [ - "ec2:DeleteVpcEndpoints" + "ec2:DeleteVpcEndpoints", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation", + "vpce:AllowMultiRegion" ], "modify": [ - "ec2:ModifyVpcEndpoint" + "ec2:ModifyVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:CreateServiceNetworkVpcEndpointAssociation", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation", + "vpce:AllowMultiRegion" ], - "plan": [] + "plan": [ + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation" + ] } ] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_endpoint_connection_accepter.json b/src/mapping/aws/resource/ec2/aws_vpc_endpoint_connection_accepter.json new file mode 100644 index 00000000..a4907acf --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_endpoint_connection_accepter.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ec2:AcceptVpcEndpointConnections", + "ec2:RejectVpcEndpointConnections", + "ec2:DescribeVpcEndpointConnections" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_endpoint_policy.json b/src/mapping/aws/resource/ec2/aws_vpc_endpoint_policy.json new file mode 100644 index 00000000..7387a509 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_endpoint_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "ec2:ModifyVerifiedAccessEndpointPolicy", + "ec2:GetVerifiedAccessEndpointPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_endpoint_private_dns.json b/src/mapping/aws/resource/ec2/aws_vpc_endpoint_private_dns.json new file mode 100644 index 00000000..cbc79d7a --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_endpoint_private_dns.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "ec2:StartVpcEndpointServicePrivateDnsVerification" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_endpoint_security_group_association.json b/src/mapping/aws/resource/ec2/aws_vpc_endpoint_security_group_association.json new file mode 100644 index 00000000..3e7d887a --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_endpoint_security_group_association.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ec2:AssociateSecurityGroupVpc", + "ec2:DescribeSecurityGroupVpcAssociations", + "ec2:DisassociateSecurityGroupVpc" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_endpoint_service.json b/src/mapping/aws/resource/ec2/aws_vpc_endpoint_service.json index ca560927..81f4f054 100644 --- a/src/mapping/aws/resource/ec2/aws_vpc_endpoint_service.json +++ b/src/mapping/aws/resource/ec2/aws_vpc_endpoint_service.json @@ -1,25 +1,42 @@ -[ - { - "apply": [ - "ec2:DescribeAccountAttributes", - "ec2:CreateVpcEndpointServiceConfiguration", - "ec2:DescribeVpcEndpointServiceConfigurations", - "ec2:DescribeVpcEndpointServicePermissions", - "ec2:DeleteVpcEndpointServiceConfigurations", - "ec2:ModifyVpcEndpointServiceConfiguration" - ], - "attributes": { - "tags": [ - "ec2:CreateTags", - "ec2:DeleteTags" - ] - }, - "destroy": [ - "ec2:DeleteVpcEndpointServiceConfigurations" - ], - "modify": [ - "ec2:ModifyVpcEndpointServiceConfiguration" - ], - "plan": [] - } -] +[ + { + "apply": [ + "ec2:CreateVpcEndpointServiceConfiguration", + "ec2:ModifyVpcEndpointServicePayerResponsibility", + "cloudwatch:ListManagedInsightRules", + "cloudwatch:DeleteInsightRules", + "cloudwatch:PutManagedInsightRules", + "ec2:DescribeVpcEndpointServiceConfigurations", + "ec2:DescribeVpcEndpointServicePermissions", + "ec2:DeleteVpcEndpointServiceConfigurations", + "ec2:ModifyVpcEndpointServiceConfiguration", + "vpce:AllowMultiRegion" + ], + "attributes": { + "tags": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "destroy": [ + "ec2:DeleteVpcEndpointServiceConfigurations", + "ec2:DescribeVpcEndpointServiceConfigurations", + "cloudwatch:ListManagedInsightRules", + "cloudwatch:DeleteInsightRules", + "vpce:AllowMultiRegion" + ], + "modify": [ + "ec2:ModifyVpcEndpointServiceConfiguration", + "ec2:DescribeVpcEndpointServiceConfigurations", + "ec2:ModifyVpcEndpointServicePayerResponsibility", + "cloudwatch:ListManagedInsightRules", + "cloudwatch:DeleteInsightRules", + "cloudwatch:PutManagedInsightRules", + "vpce:AllowMultiRegion" + ], + "plan": [ + "ec2:DescribeVpcEndpointServiceConfigurations", + "cloudwatch:ListManagedInsightRules" + ] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_endpoint_service_allowed_principal.json b/src/mapping/aws/resource/ec2/aws_vpc_endpoint_service_allowed_principal.json new file mode 100644 index 00000000..9cae2756 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_endpoint_service_allowed_principal.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "ec2:ModifyVpcEndpointServicePermissions" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_endpoint_service_private_dns_verification.json b/src/mapping/aws/resource/ec2/aws_vpc_endpoint_service_private_dns_verification.json new file mode 100644 index 00000000..cbc79d7a --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_endpoint_service_private_dns_verification.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "ec2:StartVpcEndpointServicePrivateDnsVerification" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_ipam.json b/src/mapping/aws/resource/ec2/aws_vpc_ipam.json index 9a8fa85d..7575d539 100644 --- a/src/mapping/aws/resource/ec2/aws_vpc_ipam.json +++ b/src/mapping/aws/resource/ec2/aws_vpc_ipam.json @@ -6,7 +6,9 @@ "ec2:DescribeIpams", "ec2:DeleteIpam", "ec2:ModifyIpam", - "ec2:DescribeTags" + "ec2:DescribeTags", + "ec2:DescribeIpamResourceDiscoveries", + "ec2:ModifyIpamResourceDiscovery" ], "attributes": { "tags": [ @@ -18,8 +20,13 @@ "ec2:DeleteIpam" ], "modify": [ - "ec2:ModifyIpam" + "ec2:ModifyIpam", + "ec2:DescribeIpamResourceDiscoveries", + "ec2:ModifyIpamResourceDiscovery" ], - "plan": [] + "plan": [ + "ec2:DescribeIpams", + "ec2:DescribeIpamResourceDiscoveries" + ] } ] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_ipam_organization_admin_account.json b/src/mapping/aws/resource/ec2/aws_vpc_ipam_organization_admin_account.json new file mode 100644 index 00000000..d7c85193 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_ipam_organization_admin_account.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "ec2:DisableIpamOrganizationAdminAccount", + "ec2:EnableIpamOrganizationAdminAccount" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_ipam_pool.json b/src/mapping/aws/resource/ec2/aws_vpc_ipam_pool.json index d92a1452..33ece605 100644 --- a/src/mapping/aws/resource/ec2/aws_vpc_ipam_pool.json +++ b/src/mapping/aws/resource/ec2/aws_vpc_ipam_pool.json @@ -4,7 +4,8 @@ "ec2:CreateIpamPool", "ec2:DescribeIpamPools", "ec2:DeleteIpamPool", - "ec2:ModifyIpamPool" + "ec2:ModifyIpamPool", + "ec2:DescribeIpamScopes" ], "attributes": { "tags": [ diff --git a/src/mapping/aws/resource/ec2/aws_vpc_ipv6_cidr_block_association.json b/src/mapping/aws/resource/ec2/aws_vpc_ipv6_cidr_block_association.json new file mode 100644 index 00000000..95a9b221 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_ipv6_cidr_block_association.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ec2:AssociateVpcCidrBlock", + "ec2:AllocateIpamPoolCidr", + "ec2:DisassociateVpcCidrBlock" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_network_performance_metric_subscription.json b/src/mapping/aws/resource/ec2/aws_vpc_network_performance_metric_subscription.json new file mode 100644 index 00000000..d797af1e --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_network_performance_metric_subscription.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ec2:DescribeAwsNetworkPerformanceMetricSubscriptions", + "ec2:DisableAwsNetworkPerformanceMetricSubscription", + "ec2:EnableAwsNetworkPerformanceMetricSubscription" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_route_server.json b/src/mapping/aws/resource/ec2/aws_vpc_route_server.json new file mode 100644 index 00000000..d3405f9c --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_route_server.json @@ -0,0 +1,31 @@ +[ + { + "apply": [ + "ec2:DescribeRouteServers", + "ec2:DeleteRouteServer", + "ec2:CreateRouteServer", + "ec2:DisassociateRouteServer", + "ec2:ModifyRouteServer" + ], + "attributes": { + "sns_notifications_enabled": [ + "sns:DeleteTopic", + "sns:CreateTopic" + ], + "tags": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "destroy": [ + "ec2:DeleteRouteServer", + "ec2:DisassociateRouteServer" + ], + "modify": [ + "ec2:ModifyRouteServer" + ], + "plan": [ + "ec2:DescribeRouteServers" + ] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_route_server_endpoint.json b/src/mapping/aws/resource/ec2/aws_vpc_route_server_endpoint.json new file mode 100644 index 00000000..0dd6ac21 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_route_server_endpoint.json @@ -0,0 +1,33 @@ +[ + { + "apply": [ + "ec2:CreateRouteServerEndpoint", + "ec2:DeleteRouteServerEndpoint", + "ec2:DescribeRouteServerEndpoints", + "ec2:CreateSecurityGroup", + "ec2:DescribeSecurityGroups", + "ec2:DescribeAccountAttributes", + "ec2:DescribeNetworkInterfaces", + "ec2:DeleteSecurityGroup", + "ec2:AuthorizeSecurityGroupIngress", + "ec2:RevokeSecurityGroupIngress", + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:CreateNetworkInterface", + "ec2:DescribeNetworkInterfaces", + "ec2:DeleteNetworkInterface", + "ec2:ModifyNetworkInterfaceAttribute", + "ec2:UnassignIpv6Addresses", + "ec2:AssignIpv6Addresses", + "ec2:UnassignPrivateIpAddresses", + "ec2:AssignPrivateIpAddresses", + "ec2:ModifyPublicIpDnsNameOptions" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_route_server_peer.json b/src/mapping/aws/resource/ec2/aws_vpc_route_server_peer.json new file mode 100644 index 00000000..c6c89167 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_route_server_peer.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "ec2:DescribeRouteServerPeers", + "ec2:CreateRouteServerPeer", + "ec2:DeleteRouteServerPeer" + ], + "attributes": { + "tags": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ] + }, + "destroy": [ + "ec2:DeleteRouteServerPeer" + ], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_route_server_propagation.json b/src/mapping/aws/resource/ec2/aws_vpc_route_server_propagation.json new file mode 100644 index 00000000..d41f85d4 --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_route_server_propagation.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "ec2:DisableRouteServerPropagation", + "ec2:EnableRouteServerPropagation", + "ec2:GetRouteServerPropagations" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "ec2:DisableRouteServerPropagation" + ], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_route_server_vpc_association.json b/src/mapping/aws/resource/ec2/aws_vpc_route_server_vpc_association.json new file mode 100644 index 00000000..59959c0a --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_route_server_vpc_association.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "ec2:AssociateRouteServer", + "ec2:DisassociateRouteServer" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ec2/aws_vpc_security_group_vpc_association.json b/src/mapping/aws/resource/ec2/aws_vpc_security_group_vpc_association.json new file mode 100644 index 00000000..3e7d887a --- /dev/null +++ b/src/mapping/aws/resource/ec2/aws_vpc_security_group_vpc_association.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ec2:AssociateSecurityGroupVpc", + "ec2:DescribeSecurityGroupVpcAssociations", + "ec2:DisassociateSecurityGroupVpc" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ecr-public/aws_ecrpublic_repository.json b/src/mapping/aws/resource/ecr-public/aws_ecrpublic_repository.json index d9d1b874..31c89021 100644 --- a/src/mapping/aws/resource/ecr-public/aws_ecrpublic_repository.json +++ b/src/mapping/aws/resource/ecr-public/aws_ecrpublic_repository.json @@ -15,7 +15,12 @@ "destroy": [ "ecr-public:DeleteRepository" ], - "modify": [], - "plan": [] + "modify": [ + "ecr-public:DescribeRepositories" + ], + "plan": [ + "ecr-public:DescribeRepositories", + "ecr-public:ListTagsForResource" + ] } ] diff --git a/src/mapping/aws/resource/ecr/aws_ecr_account_setting.json b/src/mapping/aws/resource/ecr/aws_ecr_account_setting.json new file mode 100644 index 00000000..4f827c8d --- /dev/null +++ b/src/mapping/aws/resource/ecr/aws_ecr_account_setting.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "ecr:GetAccountSetting", + "ecr:PutAccountSetting" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ecr/aws_ecr_pull_through_cache_rule.json b/src/mapping/aws/resource/ecr/aws_ecr_pull_through_cache_rule.json index 13d28706..06562306 100644 --- a/src/mapping/aws/resource/ecr/aws_ecr_pull_through_cache_rule.json +++ b/src/mapping/aws/resource/ecr/aws_ecr_pull_through_cache_rule.json @@ -4,7 +4,8 @@ "ecr:CreatePullThroughCacheRule", "ecr:DescribePullThroughCacheRules", "ecr:DeletePullThroughCacheRule", - "iam:CreateServiceLinkedRole" + "iam:CreateServiceLinkedRole", + "iam:PassRole" ], "attributes": { "credential_arn": [ @@ -13,9 +14,18 @@ "tags": [] }, "destroy": [ + "ecr:DescribePullThroughCacheRules", "ecr:DeletePullThroughCacheRule" ], - "modify": [], - "plan": [] + "modify": [ + "ecr:DescribePullThroughCacheRules", + "ecr:CreatePullThroughCacheRule", + "ecr:DeletePullThroughCacheRule", + "iam:CreateServiceLinkedRole", + "iam:PassRole" + ], + "plan": [ + "ecr:DescribePullThroughCacheRules" + ] } ] diff --git a/src/mapping/aws/resource/ecs/aws_ecs_account_setting_default.json b/src/mapping/aws/resource/ecs/aws_ecs_account_setting_default.json new file mode 100644 index 00000000..a6588c71 --- /dev/null +++ b/src/mapping/aws/resource/ecs/aws_ecs_account_setting_default.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "ecs:PutAccountSettingDefault" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ecs/aws_ecs_cluster_capacity_providers.json b/src/mapping/aws/resource/ecs/aws_ecs_cluster_capacity_providers.json new file mode 100644 index 00000000..084524bb --- /dev/null +++ b/src/mapping/aws/resource/ecs/aws_ecs_cluster_capacity_providers.json @@ -0,0 +1,30 @@ +[ + { + "apply": [ + "autoscaling:CreateOrUpdateTags", + "ecs:CreateCapacityProvider", + "ecs:UpdateCapacityProvider", + "ecs:DescribeCapacityProviders", + "ecs:DeleteCapacityProvider", + "ecs:ListTagsForResource" + ], + "attributes": { + "tags": [ + "ecs:TagResource", + "ecs:UntagResource" + ] + }, + "destroy": [ + "ecs:DescribeCapacityProviders", + "ecs:DeleteCapacityProvider" + ], + "modify": [ + "ecs:UpdateCapacityProvider", + "ecs:DescribeCapacityProviders", + "ecs:ListTagsForResource" + ], + "plan": [ + "ecs:DescribeCapacityProviders" + ] + } +] diff --git a/src/mapping/aws/resource/eks/aws_eks_access_policy_association.json b/src/mapping/aws/resource/eks/aws_eks_access_policy_association.json new file mode 100644 index 00000000..c3b6d272 --- /dev/null +++ b/src/mapping/aws/resource/eks/aws_eks_access_policy_association.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "eks:DisassociateAccessPolicy", + "eks:AssociateAccessPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/eks/aws_eks_cluster.json b/src/mapping/aws/resource/eks/aws_eks_cluster.json index a0578493..574a5af9 100644 --- a/src/mapping/aws/resource/eks/aws_eks_cluster.json +++ b/src/mapping/aws/resource/eks/aws_eks_cluster.json @@ -2,17 +2,20 @@ { "apply": [ "ec2:DescribeAccountAttributes", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "eks:CreateAccessEntry", "eks:CreateCluster", "eks:DeleteCluster", + "eks:DescribeCluster", "eks:ListTagsForResource", - "iam:PassRole", - "iam:TagInstanceProfile", + "eks:UpdateClusterConfig", "iam:AddRoleToInstanceProfile", - "iam:GetInstanceProfile", "iam:DeleteInstanceProfile", + "iam:GetInstanceProfile", + "iam:PassRole", "iam:RemoveRoleFromInstanceProfile", - "eks:DescribeCluster", - "eks:UpdateClusterConfig", + "iam:TagInstanceProfile", "ec2:DescribeSubnets", "ec2:DescribeVpcs" ], diff --git a/src/mapping/aws/resource/elasticache/aws_elasticache_reserved_cache_node.json b/src/mapping/aws/resource/elasticache/aws_elasticache_reserved_cache_node.json new file mode 100644 index 00000000..5278691e --- /dev/null +++ b/src/mapping/aws/resource/elasticache/aws_elasticache_reserved_cache_node.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "elasticache:DescribeReservedCacheNodes", + "elasticache:PurchaseReservedCacheNodesOffering", + "elasticache:DescribeReservedCacheNodesOfferings", + "elasticache:RemoveTagsFromResource" + ], + "attributes": { + "tags": [ + "elasticache:AddTagsToResource", + "elasticache:ListTagsForResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/elasticache/aws_elasticache_serverless_cache.json b/src/mapping/aws/resource/elasticache/aws_elasticache_serverless_cache.json new file mode 100644 index 00000000..7a4d5351 --- /dev/null +++ b/src/mapping/aws/resource/elasticache/aws_elasticache_serverless_cache.json @@ -0,0 +1,37 @@ +[ + { + "apply": [ + "elasticache:ModifyServerlessCache", + "elasticache:DescribeServerlessCaches", + "elasticache:ListTagsForResource", + "elasticache:CreateServerlessCache", + "elasticache:DeleteServerlessCache", + "ec2:CreateTags", + "ec2:CreateVpcEndpoint" + ], + "attributes": { + "kms_key_id": [ + "kms:CreateGrant", + "kms:DescribeKey" + ], + "tags": [ + "elasticache:AddTagsToResource", + "elasticache:RemoveTagsFromResource" + ] + }, + "destroy": [ + "elasticache:DeleteServerlessCache", + "elasticache:DescribeServerlessCaches", + "elasticache:ListTagsForResource" + ], + "modify": [ + "elasticache:ModifyServerlessCache", + "elasticache:DescribeServerlessCaches", + "elasticache:ListTagsForResource" + ], + "plan": [ + "elasticache:DescribeServerlessCaches", + "elasticache:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/resource/elasticache/aws_elasticache_user_group_association.json b/src/mapping/aws/resource/elasticache/aws_elasticache_user_group_association.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/elasticache/aws_elasticache_user_group_association.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/elasticfilesystem/aws_efs_file_system.json b/src/mapping/aws/resource/elasticfilesystem/aws_efs_file_system.json index 39efe190..f87934c8 100644 --- a/src/mapping/aws/resource/elasticfilesystem/aws_efs_file_system.json +++ b/src/mapping/aws/resource/elasticfilesystem/aws_efs_file_system.json @@ -6,7 +6,9 @@ "ec2:DescribeAccountAttributes", "elasticfilesystem:DescribeLifecycleConfiguration", "elasticfilesystem:DeleteFileSystem", - "elasticfilesystem:ListTagsForResource" + "elasticfilesystem:ListTagsForResource", + "iam:PassRole", + "iam:CreateServiceLinkedRole" ], "attributes": { "kms_key_id": [ @@ -17,6 +19,10 @@ "kms:CreateGrant", "kms:DescribeKey" ], + "lifecycle_policy": [ + "elasticfilesystem:PutLifecycleConfiguration", + "elasticfilesystem:DescribeLifecycleConfiguration" + ], "tags": [ "elasticfilesystem:UntagResource", "elasticfilesystem:TagResource", @@ -26,9 +32,6 @@ "destroy": [ "elasticfilesystem:DeleteFileSystem" ], - "lifecycle_policy": [ - "elasticfilesystem:PutLifecycleConfiguration" - ], "modify": [], "plan": [] } diff --git a/src/mapping/aws/resource/elasticloadbalancing/aws_lb_listener_certificate.json b/src/mapping/aws/resource/elasticloadbalancing/aws_lb_listener_certificate.json new file mode 100644 index 00000000..042701e6 --- /dev/null +++ b/src/mapping/aws/resource/elasticloadbalancing/aws_lb_listener_certificate.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "elasticloadbalancing:DescribeListenerCertificates", + "elasticloadbalancing:AddListenerCertificates", + "elasticloadbalancing:RemoveListenerCertificates" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/elasticloadbalancing/aws_lb_ssl_negotiation_policy.json b/src/mapping/aws/resource/elasticloadbalancing/aws_lb_ssl_negotiation_policy.json new file mode 100644 index 00000000..fd31edd8 --- /dev/null +++ b/src/mapping/aws/resource/elasticloadbalancing/aws_lb_ssl_negotiation_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "elasticloadbalancing:DescribeSSLPolicies" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/elasticmapreduce/aws_emr_instance_fleet.json b/src/mapping/aws/resource/elasticmapreduce/aws_emr_instance_fleet.json new file mode 100644 index 00000000..f877a786 --- /dev/null +++ b/src/mapping/aws/resource/elasticmapreduce/aws_emr_instance_fleet.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "elasticmapreduce:AddInstanceFleet", + "elasticmapreduce:ModifyInstanceFleet" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/elasticmapreduce/aws_emr_instance_group.json b/src/mapping/aws/resource/elasticmapreduce/aws_emr_instance_group.json new file mode 100644 index 00000000..a73fee3d --- /dev/null +++ b/src/mapping/aws/resource/elasticmapreduce/aws_emr_instance_group.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "elasticmapreduce:AddInstanceGroups", + "elasticmapreduce:ModifyInstanceGroups" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/elasticmapreduce/aws_emr_studio_session_mapping.json b/src/mapping/aws/resource/elasticmapreduce/aws_emr_studio_session_mapping.json index b1bd0bee..41b5f79d 100644 --- a/src/mapping/aws/resource/elasticmapreduce/aws_emr_studio_session_mapping.json +++ b/src/mapping/aws/resource/elasticmapreduce/aws_emr_studio_session_mapping.json @@ -5,17 +5,33 @@ "elasticmapreduce:DeleteStudioSessionMapping", "elasticmapreduce:GetStudioSessionMapping", "elasticmapreduce:UpdateStudioSessionMapping", + "sso-directory:CreateGroup", + "sso-directory:CreateUser", "sso-directory:DescribeGroup", "sso-directory:DescribeUser", "sso-directory:SearchGroups", "sso-directory:SearchUsers", "sso:AssociateProfile", + "sso:CreateApplication", + "sso:CreateApplicationAssignment", + "sso:DeleteApplication", + "sso:DeleteApplicationAccessScope", + "sso:DeleteApplicationAssignment", + "sso:DeleteApplicationAuthenticationMethod", + "sso:DeleteApplicationGrant", + "sso:DescribeApplication", "sso:DescribeInstance", "sso:DisassociateProfile", "sso:GetManagedApplicationInstance", "sso:GetProfile", + "sso:ListApplicationAssignments", "sso:ListDirectoryAssociations", - "sso:ListProfiles" + "sso:ListInstances", + "sso:ListProfiles", + "sso:PutApplicationAccessScope", + "sso:PutApplicationAssignmentConfiguration", + "sso:PutApplicationAuthenticationMethod", + "sso:PutApplicationGrant" ], "attributes": { "tags": [] diff --git a/src/mapping/aws/resource/elasticmapreduce/aws_emrcontainers_job_template.json b/src/mapping/aws/resource/elasticmapreduce/aws_emrcontainers_job_template.json new file mode 100644 index 00000000..1bd1ac72 --- /dev/null +++ b/src/mapping/aws/resource/elasticmapreduce/aws_emrcontainers_job_template.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "emr-containers:DescribeJobTemplate", + "emr-containers:CreateJobTemplate", + "emr-containers:DeleteJobTemplate" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/elastictranscoder/aws_elastictranscoder_pipeline.json b/src/mapping/aws/resource/elastictranscoder/aws_elastictranscoder_pipeline.json new file mode 100644 index 00000000..90377527 --- /dev/null +++ b/src/mapping/aws/resource/elastictranscoder/aws_elastictranscoder_pipeline.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "elastictranscoder:ReadPipeline", + "elastictranscoder:CreatePipeline", + "elastictranscoder:DeletePipeline" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/elastictranscoder/aws_elastictranscoder_preset.json b/src/mapping/aws/resource/elastictranscoder/aws_elastictranscoder_preset.json new file mode 100644 index 00000000..a8b9e3d3 --- /dev/null +++ b/src/mapping/aws/resource/elastictranscoder/aws_elastictranscoder_preset.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "elastictranscoder:ReadPreset", + "elastictranscoder:CreatePreset", + "elastictranscoder:DeletePreset" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/es/aws_elasticsearch_domain_saml_options.json b/src/mapping/aws/resource/es/aws_elasticsearch_domain_saml_options.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/es/aws_elasticsearch_domain_saml_options.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/es/aws_elasticsearch_vpc_endpoint.json b/src/mapping/aws/resource/es/aws_elasticsearch_vpc_endpoint.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/es/aws_elasticsearch_vpc_endpoint.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/es/aws_opensearch_authorize_vpc_endpoint_access.json b/src/mapping/aws/resource/es/aws_opensearch_authorize_vpc_endpoint_access.json new file mode 100644 index 00000000..10ea9948 --- /dev/null +++ b/src/mapping/aws/resource/es/aws_opensearch_authorize_vpc_endpoint_access.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "es:AuthorizeVpcEndpointAccess", + "es:RevokeVpcEndpointAccess" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/es/aws_opensearch_domain_saml_options.json b/src/mapping/aws/resource/es/aws_opensearch_domain_saml_options.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/es/aws_opensearch_domain_saml_options.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/es/aws_opensearch_inbound_connection_accepter.json b/src/mapping/aws/resource/es/aws_opensearch_inbound_connection_accepter.json new file mode 100644 index 00000000..08a11448 --- /dev/null +++ b/src/mapping/aws/resource/es/aws_opensearch_inbound_connection_accepter.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "es:AcceptInboundConnection" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/es/aws_opensearch_outbound_connection.json b/src/mapping/aws/resource/es/aws_opensearch_outbound_connection.json new file mode 100644 index 00000000..2d377d48 --- /dev/null +++ b/src/mapping/aws/resource/es/aws_opensearch_outbound_connection.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "es:DescribeOutboundConnections", + "es:CreateOutboundConnection", + "es:DeleteOutboundConnection" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/es/aws_opensearch_package.json b/src/mapping/aws/resource/es/aws_opensearch_package.json new file mode 100644 index 00000000..ed1b2138 --- /dev/null +++ b/src/mapping/aws/resource/es/aws_opensearch_package.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "es:CreatePackage", + "es:DeletePackage", + "es:UpdatePackage" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/es/aws_opensearch_package_association.json b/src/mapping/aws/resource/es/aws_opensearch_package_association.json new file mode 100644 index 00000000..75105b56 --- /dev/null +++ b/src/mapping/aws/resource/es/aws_opensearch_package_association.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "es:AssociatePackage" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/es/aws_opensearch_vpc_endpoint.json b/src/mapping/aws/resource/es/aws_opensearch_vpc_endpoint.json new file mode 100644 index 00000000..138fefc4 --- /dev/null +++ b/src/mapping/aws/resource/es/aws_opensearch_vpc_endpoint.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "es:DescribeVpcEndpoints", + "es:CreateVpcEndpoint", + "es:DeleteVpcEndpoint", + "es:UpdateVpcEndpoint" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/events/aws_cloudwatch_event_archive.json b/src/mapping/aws/resource/events/aws_cloudwatch_event_archive.json new file mode 100644 index 00000000..947e4b2e --- /dev/null +++ b/src/mapping/aws/resource/events/aws_cloudwatch_event_archive.json @@ -0,0 +1,31 @@ +[ + { + "apply": [ + "events:DescribeArchive", + "events:CreateArchive", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "events:DescribeArchive", + "events:DeleteArchive" + ], + "modify": [ + "events:DescribeArchive", + "events:UpdateArchive", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt", + "kms:ReEncryptTo", + "kms:ReEncryptFrom" + ], + "plan": [ + "events:DescribeArchive", + "kms:Decrypt" + ] + } +] diff --git a/src/mapping/aws/resource/events/aws_cloudwatch_event_connection.json b/src/mapping/aws/resource/events/aws_cloudwatch_event_connection.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/events/aws_cloudwatch_event_connection.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/finspace/aws_finspace_kx_cluster.json b/src/mapping/aws/resource/finspace/aws_finspace_kx_cluster.json new file mode 100644 index 00000000..e849b4e4 --- /dev/null +++ b/src/mapping/aws/resource/finspace/aws_finspace_kx_cluster.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "finspace:GetKxCluster", + "finspace:CreateKxCluster", + "finspace:DeleteKxCluster", + "finspace:ListTagsForResource" + ], + "attributes": { + "tags": [ + "finspace:TagResource", + "finspace:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/finspace/aws_finspace_kx_database.json b/src/mapping/aws/resource/finspace/aws_finspace_kx_database.json new file mode 100644 index 00000000..e0f8a408 --- /dev/null +++ b/src/mapping/aws/resource/finspace/aws_finspace_kx_database.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "finspace:ListTagsForResource", + "finspace:GetKxDatabase", + "finspace:CreateKxDatabase", + "finspace:DeleteKxDatabase", + "finspace:UpdateKxDatabase" + ], + "attributes": { + "tags": [ + "finspace:TagResource", + "finspace:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/finspace/aws_finspace_kx_dataview.json b/src/mapping/aws/resource/finspace/aws_finspace_kx_dataview.json new file mode 100644 index 00000000..45fb4a94 --- /dev/null +++ b/src/mapping/aws/resource/finspace/aws_finspace_kx_dataview.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "finspace:GetKxDataview", + "finspace:CreateKxDataview", + "finspace:UpdateKxDataview", + "finspace:DeleteKxDataview" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/finspace/aws_finspace_kx_scaling_group.json b/src/mapping/aws/resource/finspace/aws_finspace_kx_scaling_group.json new file mode 100644 index 00000000..ff450088 --- /dev/null +++ b/src/mapping/aws/resource/finspace/aws_finspace_kx_scaling_group.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "finspace:ListTagsForResource", + "finspace:GetKxScalingGroup", + "finspace:CreateKxScalingGroup", + "finspace:DeleteKxScalingGroup" + ], + "attributes": { + "tags": [ + "finspace:TagResource", + "finspace:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/finspace/aws_finspace_kx_user.json b/src/mapping/aws/resource/finspace/aws_finspace_kx_user.json new file mode 100644 index 00000000..ae3610e5 --- /dev/null +++ b/src/mapping/aws/resource/finspace/aws_finspace_kx_user.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "finspace:ListTagsForResource", + "finspace:GetKxUser", + "finspace:CreateKxUser", + "finspace:DeleteKxUser", + "finspace:UpdateKxUser" + ], + "attributes": { + "tags": [ + "finspace:TagResource", + "finspace:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/finspace/aws_finspace_kx_volume.json b/src/mapping/aws/resource/finspace/aws_finspace_kx_volume.json new file mode 100644 index 00000000..3253b7c7 --- /dev/null +++ b/src/mapping/aws/resource/finspace/aws_finspace_kx_volume.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "finspace:ListTagsForResource", + "finspace:GetKxVolume", + "finspace:CreateKxVolume", + "finspace:DeleteKxVolume", + "finspace:UpdateKxVolume" + ], + "attributes": { + "tags": [ + "finspace:TagResource", + "finspace:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/fms/aws_fms_admin_account.json b/src/mapping/aws/resource/fms/aws_fms_admin_account.json new file mode 100644 index 00000000..d9965e23 --- /dev/null +++ b/src/mapping/aws/resource/fms/aws_fms_admin_account.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "fms:AssociateAdminAccount", + "fms:DisassociateAdminAccount" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/gamelift/aws_gamelift_alias.json b/src/mapping/aws/resource/gamelift/aws_gamelift_alias.json index 29b63345..d4818433 100644 --- a/src/mapping/aws/resource/gamelift/aws_gamelift_alias.json +++ b/src/mapping/aws/resource/gamelift/aws_gamelift_alias.json @@ -4,10 +4,14 @@ "gamelift:CreateAlias", "gamelift:UpdateAlias", "gamelift:DeleteAlias", - "gamelift:DescribeAlias" + "gamelift:DescribeAlias", + "gamelift:ListTagsForResource" ], "attributes": { - "tags": [] + "tags": [ + "gamelift:TagResource", + "gamelift:UntagResource" + ] }, "destroy": [ "gamelift:DeleteAlias" @@ -16,7 +20,8 @@ "gamelift:UpdateAlias" ], "plan": [ - "gamelift:DescribeAlias" + "gamelift:DescribeAlias", + "gamelift:ListTagsForResource" ] } ] diff --git a/src/mapping/aws/resource/gamelift/aws_gamelift_build.json b/src/mapping/aws/resource/gamelift/aws_gamelift_build.json index 7ffd245d..93e9a0c4 100644 --- a/src/mapping/aws/resource/gamelift/aws_gamelift_build.json +++ b/src/mapping/aws/resource/gamelift/aws_gamelift_build.json @@ -5,10 +5,14 @@ "gamelift:CreateBuild", "gamelift:DescribeBuild", "gamelift:DeleteBuild", - "gamelift:UpdateBuild" + "gamelift:UpdateBuild", + "gamelift:ListTagsForResource" ], "attributes": { - "tags": [] + "tags": [ + "gamelift:TagResource", + "gamelift:UntagResource" + ] }, "destroy": [ "gamelift:DescribeBuild", diff --git a/src/mapping/aws/resource/gamelift/aws_gamelift_game_session_queue.json b/src/mapping/aws/resource/gamelift/aws_gamelift_game_session_queue.json index b4853a05..f19f023f 100644 --- a/src/mapping/aws/resource/gamelift/aws_gamelift_game_session_queue.json +++ b/src/mapping/aws/resource/gamelift/aws_gamelift_game_session_queue.json @@ -4,7 +4,8 @@ "gamelift:CreateGameSessionQueue", "gamelift:ListTagsForResource", "gamelift:DescribeGameSessionQueues", - "gamelift:UpdateGameSessionQueue" + "gamelift:UpdateGameSessionQueue", + "gamelift:DeleteGameSessionQueue" ], "attributes": { "tags": [ @@ -16,7 +17,8 @@ "gamelift:DeleteGameSessionQueue" ], "modify": [ - "gamelift:UpdateGameSessionQueue" + "gamelift:UpdateGameSessionQueue", + "gamelift:DescribeGameSessionQueues" ], "plan": [ "gamelift:DescribeGameSessionQueues" diff --git a/src/mapping/aws/resource/globalaccelerator/aws_globalaccelerator_custom_routing_accelerator.json b/src/mapping/aws/resource/globalaccelerator/aws_globalaccelerator_custom_routing_accelerator.json new file mode 100644 index 00000000..7d02fc50 --- /dev/null +++ b/src/mapping/aws/resource/globalaccelerator/aws_globalaccelerator_custom_routing_accelerator.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "globalaccelerator:DescribeCustomRoutingAccelerator", + "globalaccelerator:CreateCustomRoutingAccelerator", + "globalaccelerator:DeleteCustomRoutingAccelerator", + "globalaccelerator:UpdateCustomRoutingAccelerator", + "globalaccelerator:ListTagsForResource" + ], + "attributes": { + "tags": [ + "globalaccelerator:TagResource", + "globalaccelerator:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/globalaccelerator/aws_globalaccelerator_custom_routing_endpoint_group.json b/src/mapping/aws/resource/globalaccelerator/aws_globalaccelerator_custom_routing_endpoint_group.json new file mode 100644 index 00000000..d5d31418 --- /dev/null +++ b/src/mapping/aws/resource/globalaccelerator/aws_globalaccelerator_custom_routing_endpoint_group.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "globalaccelerator:DescribeCustomRoutingEndpointGroup", + "globalaccelerator:CreateCustomRoutingEndpointGroup", + "globalaccelerator:DeleteCustomRoutingEndpointGroup", + "globalaccelerator:ListTagsForResource" + ], + "attributes": { + "tags": [ + "globalaccelerator:TagResource", + "globalaccelerator:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/globalaccelerator/aws_globalaccelerator_custom_routing_listener.json b/src/mapping/aws/resource/globalaccelerator/aws_globalaccelerator_custom_routing_listener.json new file mode 100644 index 00000000..f1b1826a --- /dev/null +++ b/src/mapping/aws/resource/globalaccelerator/aws_globalaccelerator_custom_routing_listener.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "globalaccelerator:DescribeCustomRoutingListener", + "globalaccelerator:CreateCustomRoutingListener", + "globalaccelerator:DeleteCustomRoutingListener", + "globalaccelerator:UpdateCustomRoutingListener", + "globalaccelerator:ListTagsForResource" + ], + "attributes": { + "tags": [ + "globalaccelerator:TagResource", + "globalaccelerator:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/glue/aws_glue_catalog_table_optimizer.json b/src/mapping/aws/resource/glue/aws_glue_catalog_table_optimizer.json new file mode 100644 index 00000000..86e9c843 --- /dev/null +++ b/src/mapping/aws/resource/glue/aws_glue_catalog_table_optimizer.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "glue:GetTableOptimizer", + "glue:CreateTableOptimizer", + "glue:DeleteTableOptimizer", + "glue:UpdateTableOptimizer" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/glue/aws_glue_data_quality_ruleset.json b/src/mapping/aws/resource/glue/aws_glue_data_quality_ruleset.json new file mode 100644 index 00000000..ae7641ff --- /dev/null +++ b/src/mapping/aws/resource/glue/aws_glue_data_quality_ruleset.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "glue:CreateDataQualityRuleset", + "glue:GetDataQualityRuleset", + "glue:DeleteDataQualityRuleset", + "glue:UpdateDataQualityRuleset", + "glue:GetTags" + ], + "attributes": { + "tags": [ + "glue:TagResource", + "glue:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/glue/aws_glue_dev_endpoint.json b/src/mapping/aws/resource/glue/aws_glue_dev_endpoint.json new file mode 100644 index 00000000..bae37d2f --- /dev/null +++ b/src/mapping/aws/resource/glue/aws_glue_dev_endpoint.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "glue:CreateDevEndpoint", + "iam:PassRole", + "glue:GetDevEndpoint", + "glue:DeleteDevEndpoint", + "glue:UpdateDevEndpoint" + ], + "attributes": { + "tags": [ + "glue:TagResource", + "glue:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/glue/aws_glue_partition.json b/src/mapping/aws/resource/glue/aws_glue_partition.json new file mode 100644 index 00000000..cc201899 --- /dev/null +++ b/src/mapping/aws/resource/glue/aws_glue_partition.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "glue:GetPartition", + "glue:CreatePartition", + "glue:DeletePartition", + "glue:UpdatePartition", + "glue:GetTags" + ], + "attributes": { + "tags": [ + "glue:TagResource", + "glue:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/glue/aws_glue_partition_index.json b/src/mapping/aws/resource/glue/aws_glue_partition_index.json new file mode 100644 index 00000000..174fe630 --- /dev/null +++ b/src/mapping/aws/resource/glue/aws_glue_partition_index.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "glue:GetPartitionIndexes", + "glue:CreatePartitionIndex", + "glue:DeletePartitionIndex" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/grafana/aws_grafana_license_association.json b/src/mapping/aws/resource/grafana/aws_grafana_license_association.json new file mode 100644 index 00000000..eca5a90a --- /dev/null +++ b/src/mapping/aws/resource/grafana/aws_grafana_license_association.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "grafana:AssociateLicense", + "grafana:DisassociateLicense" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/grafana/aws_grafana_role_association.json b/src/mapping/aws/resource/grafana/aws_grafana_role_association.json new file mode 100644 index 00000000..75dbcc33 --- /dev/null +++ b/src/mapping/aws/resource/grafana/aws_grafana_role_association.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "grafana:UpdatePermissions" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/grafana/aws_grafana_workspace.json b/src/mapping/aws/resource/grafana/aws_grafana_workspace.json new file mode 100644 index 00000000..09e746a8 --- /dev/null +++ b/src/mapping/aws/resource/grafana/aws_grafana_workspace.json @@ -0,0 +1,57 @@ +[ + { + "apply": [ + "grafana:CreateWorkspace", + "grafana:DescribeWorkspace", + "grafana:DescribeWorkspaceAuthentication", + "grafana:DescribeWorkspaceConfiguration", + "grafana:UpdateWorkspaceAuthentication", + "sso:DescribeRegisteredRegions", + "sso:CreateManagedApplicationInstance", + "organizations:DescribeOrganization", + "sso:GetSharedSsoConfiguration", + "iam:PassRole", + "ec2:GetManagedPrefixListEntries", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "iam:CreateServiceLinkedRole", + "sso:ListApplicationInstances", + "sso:GetApplicationInstance" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "grafana:DeleteWorkspace", + "grafana:DescribeWorkspace", + "grafana:DescribeWorkspaceAuthentication", + "grafana:DescribeWorkspaceConfiguration", + "sso:DeleteManagedApplicationInstance", + "sso:DescribeRegisteredRegions" + ], + "modify": [ + "grafana:DescribeWorkspace", + "grafana:DescribeWorkspaceAuthentication", + "grafana:DescribeWorkspaceConfiguration", + "grafana:UpdateWorkspace", + "grafana:UpdateWorkspaceAuthentication", + "grafana:UpdateWorkspaceConfiguration", + "sso:DescribeRegisteredRegions", + "sso:CreateManagedApplicationInstance", + "ec2:GetManagedPrefixListEntries", + "iam:PassRole", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "iam:CreateServiceLinkedRole", + "sso:ListApplicationInstances", + "sso:GetApplicationInstance" + ], + "plan": [ + "grafana:DescribeWorkspace", + "grafana:DescribeWorkspaceAuthentication", + "grafana:DescribeWorkspaceConfiguration" + ] + } +] diff --git a/src/mapping/aws/resource/grafana/aws_grafana_workspace_saml_configuration.json b/src/mapping/aws/resource/grafana/aws_grafana_workspace_saml_configuration.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/grafana/aws_grafana_workspace_saml_configuration.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/grafana/aws_grafana_workspace_service_account.json b/src/mapping/aws/resource/grafana/aws_grafana_workspace_service_account.json new file mode 100644 index 00000000..ea03e81e --- /dev/null +++ b/src/mapping/aws/resource/grafana/aws_grafana_workspace_service_account.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "grafana:CreateWorkspaceServiceAccount", + "grafana:DeleteWorkspaceServiceAccount" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/grafana/aws_grafana_workspace_service_account_token.json b/src/mapping/aws/resource/grafana/aws_grafana_workspace_service_account_token.json new file mode 100644 index 00000000..626e6c5d --- /dev/null +++ b/src/mapping/aws/resource/grafana/aws_grafana_workspace_service_account_token.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "grafana:DeleteWorkspaceServiceAccountToken", + "grafana:CreateWorkspaceServiceAccountToken" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/guardduty/aws_guardduty_detector_feature.json b/src/mapping/aws/resource/guardduty/aws_guardduty_detector_feature.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/guardduty/aws_guardduty_detector_feature.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/guardduty/aws_guardduty_invite_accepter.json b/src/mapping/aws/resource/guardduty/aws_guardduty_invite_accepter.json new file mode 100644 index 00000000..b40ac71f --- /dev/null +++ b/src/mapping/aws/resource/guardduty/aws_guardduty_invite_accepter.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "guardduty:AcceptInvitation" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/guardduty/aws_guardduty_member_detector_feature.json b/src/mapping/aws/resource/guardduty/aws_guardduty_member_detector_feature.json new file mode 100644 index 00000000..be9b093c --- /dev/null +++ b/src/mapping/aws/resource/guardduty/aws_guardduty_member_detector_feature.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "guardduty:GetMemberDetectors", + "guardduty:UpdateMemberDetectors" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/guardduty/aws_guardduty_organization_admin_account.json b/src/mapping/aws/resource/guardduty/aws_guardduty_organization_admin_account.json new file mode 100644 index 00000000..3d1f231e --- /dev/null +++ b/src/mapping/aws/resource/guardduty/aws_guardduty_organization_admin_account.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "guardduty:GetAdministratorAccount", + "guardduty:EnableOrganizationAdminAccount", + "guardduty:DisableOrganizationAdminAccount" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/guardduty/aws_guardduty_organization_configuration.json b/src/mapping/aws/resource/guardduty/aws_guardduty_organization_configuration.json new file mode 100644 index 00000000..a19d581b --- /dev/null +++ b/src/mapping/aws/resource/guardduty/aws_guardduty_organization_configuration.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "guardduty:DescribeOrganizationConfiguration", + "guardduty:UpdateOrganizationConfiguration" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/guardduty/aws_guardduty_organization_configuration_feature.json b/src/mapping/aws/resource/guardduty/aws_guardduty_organization_configuration_feature.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/guardduty/aws_guardduty_organization_configuration_feature.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/guardduty/aws_guardduty_publishing_destination.json b/src/mapping/aws/resource/guardduty/aws_guardduty_publishing_destination.json new file mode 100644 index 00000000..a689ddda --- /dev/null +++ b/src/mapping/aws/resource/guardduty/aws_guardduty_publishing_destination.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "guardduty:DescribePublishingDestination", + "guardduty:CreatePublishingDestination", + "guardduty:DeletePublishingDestination", + "guardduty:UpdatePublishingDestination" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/iam/aws_iam_group_policy_attachments_exclusive.json b/src/mapping/aws/resource/iam/aws_iam_group_policy_attachments_exclusive.json new file mode 100644 index 00000000..3cd86ee4 --- /dev/null +++ b/src/mapping/aws/resource/iam/aws_iam_group_policy_attachments_exclusive.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iam:DetachGroupPolicy", + "iam:AttachGroupPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/iam/aws_iam_openid_connect_provider.json b/src/mapping/aws/resource/iam/aws_iam_openid_connect_provider.json index a9890c17..b74ec66f 100644 --- a/src/mapping/aws/resource/iam/aws_iam_openid_connect_provider.json +++ b/src/mapping/aws/resource/iam/aws_iam_openid_connect_provider.json @@ -4,7 +4,11 @@ "ec2:DescribeAccountAttributes", "iam:DeleteOpenIDConnectProvider", "iam:GetOpenIDConnectProvider", - "iam:CreateOpenIDConnectProvider" + "iam:CreateOpenIDConnectProvider", + "iam:ListOpenIDConnectProviderTags", + "iam:UpdateOpenIDConnectProviderThumbprint", + "iam:RemoveClientIDFromOpenIDConnectProvider", + "iam:AddClientIDToOpenIDConnectProvider" ], "attributes": { "tags": [ @@ -12,10 +16,18 @@ "iam:TagOpenIDConnectProvider" ] }, - "destroy": [], + "destroy": [ + "iam:DeleteOpenIDConnectProvider" + ], "modify": [ - "iam:UpdateOpenIDConnectProviderThumbprint" + "iam:UpdateOpenIDConnectProviderThumbprint", + "iam:RemoveClientIDFromOpenIDConnectProvider", + "iam:AddClientIDToOpenIDConnectProvider", + "iam:GetOpenIDConnectProvider", + "iam:ListOpenIDConnectProviderTags" ], - "plan": [] + "plan": [ + "iam:GetOpenIDConnectProvider" + ] } ] diff --git a/src/mapping/aws/resource/iam/aws_iam_organizations_features.json b/src/mapping/aws/resource/iam/aws_iam_organizations_features.json new file mode 100644 index 00000000..bfa838fa --- /dev/null +++ b/src/mapping/aws/resource/iam/aws_iam_organizations_features.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iam:EnableOrganizationsRootCredentialsManagement", + "iam:DisableOrganizationsRootCredentialsManagement" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/iam/aws_iam_role_policy_attachments_exclusive.json b/src/mapping/aws/resource/iam/aws_iam_role_policy_attachments_exclusive.json new file mode 100644 index 00000000..317f3130 --- /dev/null +++ b/src/mapping/aws/resource/iam/aws_iam_role_policy_attachments_exclusive.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iam:AttachRolePolicy", + "iam:DetachRolePolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/iam/aws_iam_user_policy_attachments_exclusive.json b/src/mapping/aws/resource/iam/aws_iam_user_policy_attachments_exclusive.json new file mode 100644 index 00000000..ed0930c5 --- /dev/null +++ b/src/mapping/aws/resource/iam/aws_iam_user_policy_attachments_exclusive.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iam:DetachUserPolicy", + "iam:AttachUserPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/identitystore/aws_identitystore_group.json b/src/mapping/aws/resource/identitystore/aws_identitystore_group.json new file mode 100644 index 00000000..735daa31 --- /dev/null +++ b/src/mapping/aws/resource/identitystore/aws_identitystore_group.json @@ -0,0 +1,24 @@ +[ + { + "apply": [ + "identitystore:CreateGroup", + "identitystore:DescribeGroup", + "identitystore:UpdateGroup", + "identitystore:DeleteGroup" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "identitystore:DescribeGroup", + "identitystore:DeleteGroup" + ], + "modify": [ + "identitystore:DescribeGroup", + "identitystore:UpdateGroup" + ], + "plan": [ + "identitystore:DescribeGroup" + ] + } +] diff --git a/src/mapping/aws/resource/identitystore/aws_identitystore_group_membership.json b/src/mapping/aws/resource/identitystore/aws_identitystore_group_membership.json new file mode 100644 index 00000000..c5c4c293 --- /dev/null +++ b/src/mapping/aws/resource/identitystore/aws_identitystore_group_membership.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "identitystore:CreateGroupMembership", + "identitystore:DescribeGroupMembership", + "identitystore:DeleteGroupMembership" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "identitystore:DeleteGroupMembership", + "identitystore:DescribeGroupMembership" + ], + "modify": [], + "plan": [ + "identitystore:DescribeGroupMembership" + ] + } +] diff --git a/src/mapping/aws/resource/identitystore/aws_identitystore_user.json b/src/mapping/aws/resource/identitystore/aws_identitystore_user.json new file mode 100644 index 00000000..71ffc578 --- /dev/null +++ b/src/mapping/aws/resource/identitystore/aws_identitystore_user.json @@ -0,0 +1,24 @@ +[ + { + "apply": [ + "identitystore:CreateUser", + "identitystore:DescribeUser", + "identitystore:UpdateUser", + "identitystore:DeleteUser" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "identitystore:DescribeUser", + "identitystore:DeleteUser" + ], + "modify": [ + "identitystore:DescribeUser", + "identitystore:UpdateUser" + ], + "plan": [ + "identitystore:DescribeUser" + ] + } +] diff --git a/src/mapping/aws/resource/imagebuilder/aws_imagebuilder_container_recipe.json b/src/mapping/aws/resource/imagebuilder/aws_imagebuilder_container_recipe.json index f8ac0621..7a38db48 100644 --- a/src/mapping/aws/resource/imagebuilder/aws_imagebuilder_container_recipe.json +++ b/src/mapping/aws/resource/imagebuilder/aws_imagebuilder_container_recipe.json @@ -9,7 +9,20 @@ "imagebuilder:DeleteImageRecipe" ], "attributes": { - "tags": [] + "kms_key_id": [ + "kms:Encrypt", + "kms:Decrypt", + "kms:ReEncryptFrom", + "kms:ReEncryptTo", + "kms:GenerateDataKey", + "kms:GenerateDataKeyPair", + "kms:GenerateDataKeyPairWithoutPlaintext", + "kms:GenerateDataKeyWithoutPlaintext" + ], + "tags": [ + "imagebuilder:TagResource", + "imagebuilder:UnTagResource" + ] }, "destroy": [ "imagebuilder:DeleteContainerRecipe", diff --git a/src/mapping/aws/resource/imagebuilder/aws_imagebuilder_lifecycle_policy.json b/src/mapping/aws/resource/imagebuilder/aws_imagebuilder_lifecycle_policy.json new file mode 100644 index 00000000..1c6422e8 --- /dev/null +++ b/src/mapping/aws/resource/imagebuilder/aws_imagebuilder_lifecycle_policy.json @@ -0,0 +1,27 @@ +[ + { + "apply": [ + "iam:PassRole", + "imagebuilder:CreateLifecyclePolicy", + "imagebuilder:GetLifecyclePolicy", + "imagebuilder:DeleteLifecyclePolicy", + "imagebuilder:UpdateLifecyclePolicy" + ], + "attributes": { + "tags": [ + "imagebuilder:TagResource", + "imagebuilder:UnTagResource" + ] + }, + "destroy": [ + "imagebuilder:GetLifecyclePolicy", + "imagebuilder:DeleteLifecyclePolicy" + ], + "modify": [ + "iam:PassRole", + "imagebuilder:GetLifecyclePolicy", + "imagebuilder:UpdateLifecyclePolicy" + ], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/inspector2/aws_inspector2_filter.json b/src/mapping/aws/resource/inspector2/aws_inspector2_filter.json new file mode 100644 index 00000000..723f89f5 --- /dev/null +++ b/src/mapping/aws/resource/inspector2/aws_inspector2_filter.json @@ -0,0 +1,26 @@ +[ + { + "apply": [ + "inspector2:ListTagsForResource", + "inspector2:CreateFilter", + "inspector2:ListFilters", + "inspector2:DeleteFilter", + "inspector2:UpdateFilter" + ], + "attributes": { + "tags": [ + "inspector2:TagResource", + "inspector2:UntagResource" + ] + }, + "destroy": [ + "inspector2:DeleteFilter" + ], + "modify": [ + "inspector2:UpdateFilter" + ], + "plan": [ + "inspector2:ListFilters" + ] + } +] diff --git a/src/mapping/aws/resource/internetmonitor/aws_internetmonitor_monitor.json b/src/mapping/aws/resource/internetmonitor/aws_internetmonitor_monitor.json index 7aeab4d5..01926749 100644 --- a/src/mapping/aws/resource/internetmonitor/aws_internetmonitor_monitor.json +++ b/src/mapping/aws/resource/internetmonitor/aws_internetmonitor_monitor.json @@ -1,23 +1,38 @@ -[ - { - "apply": [ - "internetmonitor:CreateMonitor", - "internetmonitor:GetMonitor", - "internetmonitor:UpdateMonitor", - "internetmonitor:DeleteMonitor" - ], - "attributes": { - "tags": [ - "internetmonitor:TagResource", - "internetmonitor:UntagResource" - ] - }, - "destroy": [ - "internetmonitor:DeleteMonitor" - ], - "modify": [ - "internetmonitor:UpdateMonitor" - ], - "plan": [] - } -] +[ + { + "apply": [ + "internetmonitor:CreateMonitor", + "internetmonitor:GetMonitor", + "internetmonitor:UpdateMonitor", + "internetmonitor:DeleteMonitor", + "internetmonitor:ListTagsForResource", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "iam:PassRole" + ], + "attributes": { + "internet_measurements_log_delivery": [ + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "s3:ListBucket" + ], + "tags": [ + "internetmonitor:TagResource", + "internetmonitor:UntagResource" + ] + }, + "destroy": [ + "internetmonitor:DeleteMonitor", + "logs:DeleteLogDelivery" + ], + "modify": [ + "internetmonitor:UpdateMonitor" + ], + "plan": [ + "logs:GetLogDelivery" + ] + } +] diff --git a/src/mapping/aws/resource/iot/aws_iot_domain_configuration.json b/src/mapping/aws/resource/iot/aws_iot_domain_configuration.json new file mode 100644 index 00000000..aef44894 --- /dev/null +++ b/src/mapping/aws/resource/iot/aws_iot_domain_configuration.json @@ -0,0 +1,33 @@ +[ + { + "apply": [ + "iot:CreateDomainConfiguration", + "iot:UpdateDomainConfiguration", + "iot:DescribeDomainConfiguration", + "iot:DeleteDomainConfiguration", + "iot:UpdateDomainConfiguration", + "acm:GetCertificate", + "iot:ListTagsForResource" + ], + "attributes": { + "tags": [ + "iot:TagResource", + "iot:UntagResource" + ] + }, + "destroy": [ + "iot:DescribeDomainConfiguration", + "iot:DeleteDomainConfiguration", + "iot:UpdateDomainConfiguration" + ], + "modify": [ + "iot:UpdateDomainConfiguration", + "iot:DescribeDomainConfiguration", + "iot:ListTagsForResource" + ], + "plan": [ + "iot:DescribeDomainConfiguration", + "iot:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/resource/iot/aws_iot_event_configurations.json b/src/mapping/aws/resource/iot/aws_iot_event_configurations.json new file mode 100644 index 00000000..33426525 --- /dev/null +++ b/src/mapping/aws/resource/iot/aws_iot_event_configurations.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iot:DescribeEventConfigurations", + "iot:UpdateEventConfigurations" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/iot/aws_iot_indexing_configuration.json b/src/mapping/aws/resource/iot/aws_iot_indexing_configuration.json new file mode 100644 index 00000000..e342d198 --- /dev/null +++ b/src/mapping/aws/resource/iot/aws_iot_indexing_configuration.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iot:GetIndexingConfiguration", + "iot:UpdateIndexingConfiguration" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/iot/aws_iot_logging_options.json b/src/mapping/aws/resource/iot/aws_iot_logging_options.json new file mode 100644 index 00000000..b8d8233d --- /dev/null +++ b/src/mapping/aws/resource/iot/aws_iot_logging_options.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iot:GetLoggingOptions", + "iot:GetV2LoggingOptions", + "iot:SetV2LoggingOptions", + "iot:SetLoggingOptions" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/iot/aws_iot_policy_attachment.json b/src/mapping/aws/resource/iot/aws_iot_policy_attachment.json new file mode 100644 index 00000000..92f932ab --- /dev/null +++ b/src/mapping/aws/resource/iot/aws_iot_policy_attachment.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iot:AttachPolicy", + "iot:DetachPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/iot/aws_iot_thing_group_membership.json b/src/mapping/aws/resource/iot/aws_iot_thing_group_membership.json new file mode 100644 index 00000000..c7a06499 --- /dev/null +++ b/src/mapping/aws/resource/iot/aws_iot_thing_group_membership.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "iot:DescribeThingGroup", + "iot:AddThingToThingGroup", + "iot:RemoveThingFromThingGroup" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/iot/aws_iot_thing_principal_attachment.json b/src/mapping/aws/resource/iot/aws_iot_thing_principal_attachment.json new file mode 100644 index 00000000..f92e9a47 --- /dev/null +++ b/src/mapping/aws/resource/iot/aws_iot_thing_principal_attachment.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iot:AttachThingPrincipal", + "iot:DetachThingPrincipal" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/kafka/aws_msk_cluster.json b/src/mapping/aws/resource/kafka/aws_msk_cluster.json index b1f21175..fda2cf22 100644 --- a/src/mapping/aws/resource/kafka/aws_msk_cluster.json +++ b/src/mapping/aws/resource/kafka/aws_msk_cluster.json @@ -1,42 +1,42 @@ [ { "apply": [ - "Kafka:CreateCluster", + "kafka:CreateCluster", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeSecurityGroups", "iam:CreateServiceLinkedRole", - "Kafka:DescribeClusterV2", - "Kafka:DescribeCluster", - "Kafka:ListTagsForResource", - "Kafka:GetBootstrapBrokers", - "Kafka:DeleteCluster", + "kafka:DescribeClusterV2", + "kafka:DescribeCluster", + "kafka:ListTagsForResource", + "kafka:GetBootstrapBrokers", + "kafka:DeleteCluster", "ec2:DeleteVpcEndpoints", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcEndpoints", - "Kafka:DescribeClusterOperation" + "kafka:DescribeClusterOperation" ], "attributes": { "tags": [ - "Kafka:TagResource", - "Kafka:UntagResource" + "kafka:TagResource", + "kafka:UntagResource" ] }, "destroy": [ - "Kafka:DeleteCluster", + "kafka:DeleteCluster", "ec2:DeleteVpcEndpoints" ], "modify": [ - "Kafka:UpdateSecurity", - "Kafka:UpdateBrokerCount", - "Kafka:UpdateBrokerStorage", - "Kafka:UpdateBrokerType", - "Kafka:UpdateClusterConfiguration", - "Kafka:UpdateClusterKafkaVersion", - "Kafka:UpdateConnectivity", - "Kafka:UpdateMonitoring", - "Kafka:UpdateSecurity", - "Kafka:UpdateStorage" + "kafka:UpdateSecurity", + "kafka:UpdateBrokerCount", + "kafka:UpdateBrokerStorage", + "kafka:UpdateBrokerType", + "kafka:UpdateClusterConfiguration", + "kafka:UpdateClusterKafkaVersion", + "kafka:UpdateConnectivity", + "kafka:UpdateMonitoring", + "kafka:UpdateSecurity", + "kafka:UpdateStorage" ], "plan": [] } diff --git a/src/mapping/aws/resource/kafka/aws_msk_configuration.json b/src/mapping/aws/resource/kafka/aws_msk_configuration.json index c1d48b47..bd3188ea 100644 --- a/src/mapping/aws/resource/kafka/aws_msk_configuration.json +++ b/src/mapping/aws/resource/kafka/aws_msk_configuration.json @@ -1,22 +1,22 @@ [ { "apply": [ - "Kafka:CreateConfiguration", - "Kafka:DeleteConfiguration", - "Kafka:DescribeConfiguration", - "Kafka:DescribeConfigurationRevision" + "kafka:CreateConfiguration", + "kafka:DeleteConfiguration", + "kafka:DescribeConfiguration", + "kafka:DescribeConfigurationRevision" ], "attributes": { "tags": [] }, "destroy": [ - "Kafka:DeleteConfiguration" + "kafka:DeleteConfiguration" ], "modify": [ - "Kafka:UpdateConfiguration", - "Kafka:DescribeConfigurationRevision", - "Kafka:UpdateClusterConfiguration", - "Kafka:UpdateConfiguration" + "kafka:UpdateConfiguration", + "kafka:DescribeConfigurationRevision", + "kafka:UpdateClusterConfiguration", + "kafka:UpdateConfiguration" ], "plan": [] } diff --git a/src/mapping/aws/resource/kafka/aws_msk_scram_secret_association.json b/src/mapping/aws/resource/kafka/aws_msk_scram_secret_association.json index 08a3e57e..56202483 100644 --- a/src/mapping/aws/resource/kafka/aws_msk_scram_secret_association.json +++ b/src/mapping/aws/resource/kafka/aws_msk_scram_secret_association.json @@ -3,15 +3,15 @@ "apply": [ "kms:DescribeKey", "kms:CreateGrant", - "Kafka:BatchAssociateScramSecret", - "Kafka:BatchDisassociateScramSecret", - "Kafka:ListScramSecrets" + "kafka:BatchAssociateScramSecret", + "kafka:BatchDisassociateScramSecret", + "kafka:ListScramSecrets" ], "attributes": { "tags": [] }, "destroy": [ - "Kafka:BatchDisassociateScramSecret" + "kafka:BatchDisassociateScramSecret" ], "modify": [], "plan": [] diff --git a/src/mapping/aws/resource/kafka/aws_msk_serverless_cluster.json b/src/mapping/aws/resource/kafka/aws_msk_serverless_cluster.json index 17855ad6..a5a80913 100644 --- a/src/mapping/aws/resource/kafka/aws_msk_serverless_cluster.json +++ b/src/mapping/aws/resource/kafka/aws_msk_serverless_cluster.json @@ -1,7 +1,7 @@ [ { "apply": [ - "Kafka:CreateClusterV2", + "kafka:CreateClusterV2", "ec2:CreateVpcEndpoint", "ec2:DeleteVpcEndpoints", "ec2:DescribeSecurityGroups", @@ -9,9 +9,9 @@ "ec2:DescribeVpcAttribute", "ec2:DescribeVpcEndpoints", "ec2:DescribeVpcs", - "Kafka:DescribeClusterV2", - "Kafka:ListTagsForResource", - "Kafka:DeleteCluster", + "kafka:DescribeClusterV2", + "kafka:ListTagsForResource", + "kafka:DeleteCluster", "ec2:DeleteVpcEndpoints", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcEndpoints" @@ -20,12 +20,12 @@ "tags": [ "ec2:CreateTags", "ec2:DeleteTags", - "Kafka:TagResource", - "Kafka:UntagResource" + "kafka:TagResource", + "kafka:UntagResource" ] }, "destroy": [ - "Kafka:DeleteCluster", + "kafka:DeleteCluster", "ec2:DeleteVpcEndpoints", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcEndpoints" diff --git a/src/mapping/aws/resource/kafka/aws_msk_single_scram_secret_association.json b/src/mapping/aws/resource/kafka/aws_msk_single_scram_secret_association.json new file mode 100644 index 00000000..e4b199c7 --- /dev/null +++ b/src/mapping/aws/resource/kafka/aws_msk_single_scram_secret_association.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "kafka:BatchAssociateScramSecret", + "kafka:BatchDisassociateScramSecret" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/kafka/aws_mskconnect_connector.json b/src/mapping/aws/resource/kafka/aws_mskconnect_connector.json new file mode 100644 index 00000000..95457a8a --- /dev/null +++ b/src/mapping/aws/resource/kafka/aws_mskconnect_connector.json @@ -0,0 +1,61 @@ +[ + { + "apply": [ + "kafkaconnect:CreateConnector", + "kafkaconnect:DescribeConnector", + "kafkaconnect:ListTagsForResource", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "ec2:CreateNetworkInterface", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "firehose:TagDeliveryStream", + "kafkaconnect:UpdateConnector", + "kafkaconnect:DeleteConnector", + "logs:DeleteLogDelivery", + "logs:UpdateLogDelivery" + ], + "attributes": { + "tags": [ + "kafkaconnect:TagResource", + "kafkaconnect:UntagResource" + ] + }, + "destroy": [ + "kafkaconnect:DeleteConnector", + "kafkaconnect:DescribeConnector", + "logs:DeleteLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries" + ], + "modify": [ + "kafkaconnect:UpdateConnector", + "kafkaconnect:DescribeConnector", + "kafkaconnect:DescribeConnectorOperation", + "kafkaconnect:ListTagsForResource", + "iam:CreateServiceLinkedRole", + "logs:UpdateLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "firehose:TagDeliveryStream" + ], + "plan": [ + "kafkaconnect:DescribeConnector", + "kafkaconnect:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/resource/kafkaconnect/aws_mskconnect_custom_plugin.json b/src/mapping/aws/resource/kafkaconnect/aws_mskconnect_custom_plugin.json new file mode 100644 index 00000000..e5b4b38d --- /dev/null +++ b/src/mapping/aws/resource/kafkaconnect/aws_mskconnect_custom_plugin.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "kafkaconnect:DeleteCustomPlugin", + "kafkaconnect:CreateCustomPlugin", + "kafkaconnect:DescribeCustomPlugin" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/kafkaconnect/aws_mskconnect_worker_configuration.json b/src/mapping/aws/resource/kafkaconnect/aws_mskconnect_worker_configuration.json new file mode 100644 index 00000000..52ab6306 --- /dev/null +++ b/src/mapping/aws/resource/kafkaconnect/aws_mskconnect_worker_configuration.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "kafkaconnect:DescribeWorkerConfiguration", + "kafkaconnect:CreateWorkerConfiguration", + "kafkaconnect:DeleteWorkerConfiguration" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/kendra/aws_kendra_experience.json b/src/mapping/aws/resource/kendra/aws_kendra_experience.json new file mode 100644 index 00000000..43923f95 --- /dev/null +++ b/src/mapping/aws/resource/kendra/aws_kendra_experience.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "kendra:DescribeExperience", + "kendra:CreateExperience", + "kendra:DeleteExperience", + "kendra:UpdateExperience" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/kendra/aws_kendra_query_suggestions_block_list.json b/src/mapping/aws/resource/kendra/aws_kendra_query_suggestions_block_list.json new file mode 100644 index 00000000..ab04e1c3 --- /dev/null +++ b/src/mapping/aws/resource/kendra/aws_kendra_query_suggestions_block_list.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "kendra:DescribeQuerySuggestionsBlockList", + "kendra:CreateQuerySuggestionsBlockList", + "kendra:DeleteQuerySuggestionsBlockList", + "kendra:UpdateQuerySuggestionsBlockList" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/kendra/aws_kendra_thesaurus.json b/src/mapping/aws/resource/kendra/aws_kendra_thesaurus.json new file mode 100644 index 00000000..2f910ad2 --- /dev/null +++ b/src/mapping/aws/resource/kendra/aws_kendra_thesaurus.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "kendra:DescribeThesaurus", + "kendra:CreateThesaurus", + "kendra:DeleteThesaurus", + "kendra:UpdateThesaurus" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/kinesis/aws_kinesis_resource_policy.json b/src/mapping/aws/resource/kinesis/aws_kinesis_resource_policy.json index 365db943..c517c5a9 100644 --- a/src/mapping/aws/resource/kinesis/aws_kinesis_resource_policy.json +++ b/src/mapping/aws/resource/kinesis/aws_kinesis_resource_policy.json @@ -18,4 +18,3 @@ ] } ] - diff --git a/src/mapping/aws/resource/kinesisanalytics/aws_kinesis_analytics_application.json b/src/mapping/aws/resource/kinesisanalytics/aws_kinesis_analytics_application.json new file mode 100644 index 00000000..0d37f754 --- /dev/null +++ b/src/mapping/aws/resource/kinesisanalytics/aws_kinesis_analytics_application.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "kinesisanalytics:DescribeApplication", + "kinesisanalytics:CreateApplication", + "kinesisanalytics:DeleteApplication", + "kinesisanalytics:UpdateApplication", + "kinesisanalytics:ListTagsForResource" + ], + "attributes": { + "tags": [ + "kinesisanalytics:TagResource", + "kinesisanalytics:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/kinesisanalytics/aws_kinesisanalyticsv2_application_snapshot.json b/src/mapping/aws/resource/kinesisanalytics/aws_kinesisanalyticsv2_application_snapshot.json new file mode 100644 index 00000000..7a0c1742 --- /dev/null +++ b/src/mapping/aws/resource/kinesisanalytics/aws_kinesisanalyticsv2_application_snapshot.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "kinesisanalytics:CreateApplicationSnapshot", + "kinesisanalytics:DeleteApplicationSnapshot", + "kinesisanalytics:DescribeApplicationSnapshot" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/kms/aws_kms_key.json b/src/mapping/aws/resource/kms/aws_kms_key.json index 46438b02..c8a35a32 100644 --- a/src/mapping/aws/resource/kms/aws_kms_key.json +++ b/src/mapping/aws/resource/kms/aws_kms_key.json @@ -4,6 +4,9 @@ "kms:CreateKey" ], "attributes": { + "description": [ + "kms:UpdateKeyDescription" + ], "enable_key_rotation": [ "kms:EnableKeyRotation" ], diff --git a/src/mapping/aws/resource/lakeformation/aws_lakeformation_data_lake_settings.json b/src/mapping/aws/resource/lakeformation/aws_lakeformation_data_lake_settings.json new file mode 100644 index 00000000..c70fea1f --- /dev/null +++ b/src/mapping/aws/resource/lakeformation/aws_lakeformation_data_lake_settings.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "lakeformation:PutDataLakeSettings", + "lakeformation:GetDataLakeSettings" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lakeformation/aws_lakeformation_lf_tag.json b/src/mapping/aws/resource/lakeformation/aws_lakeformation_lf_tag.json new file mode 100644 index 00000000..62285c76 --- /dev/null +++ b/src/mapping/aws/resource/lakeformation/aws_lakeformation_lf_tag.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "lakeformation:CreateLFTag", + "lakeformation:DeleteLFTag", + "lakeformation:UpdateLFTag", + "lakeformation:GetLFTag" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "lakeformation:DeleteLFTag" + ], + "modify": [ + "lakeformation:UpdateLFTag" + ], + "plan": [ + "lakeformation:GetLFTag" + ] + } +] diff --git a/src/mapping/aws/resource/lakeformation/aws_lakeformation_opt_in.json b/src/mapping/aws/resource/lakeformation/aws_lakeformation_opt_in.json new file mode 100644 index 00000000..4885bc06 --- /dev/null +++ b/src/mapping/aws/resource/lakeformation/aws_lakeformation_opt_in.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "lakeformation:CreateLakeFormationOptIn", + "lakeformation:DeleteLakeFormationOptIn" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lakeformation/aws_lakeformation_permissions.json b/src/mapping/aws/resource/lakeformation/aws_lakeformation_permissions.json new file mode 100644 index 00000000..e1013ddc --- /dev/null +++ b/src/mapping/aws/resource/lakeformation/aws_lakeformation_permissions.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "lakeformation:GrantPermissions", + "lakeformation:RevokePermissions" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lakeformation/aws_lakeformation_resource.json b/src/mapping/aws/resource/lakeformation/aws_lakeformation_resource.json new file mode 100644 index 00000000..a24ed1e0 --- /dev/null +++ b/src/mapping/aws/resource/lakeformation/aws_lakeformation_resource.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "lakeformation:RegisterResource", + "iam:PutRolePolicy", + "lakeformation:DescribeResource", + "lakeformation:DeregisterResource", + "iam:GetRolePolicy", + "lakeformation:UpdateResource" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lakeformation/aws_lakeformation_resource_lf_tags.json b/src/mapping/aws/resource/lakeformation/aws_lakeformation_resource_lf_tags.json new file mode 100644 index 00000000..bcce16cb --- /dev/null +++ b/src/mapping/aws/resource/lakeformation/aws_lakeformation_resource_lf_tags.json @@ -0,0 +1,23 @@ +[ + { + "apply": [ + "lakeformation:CreateLFTag", + "lakeformation:DeleteLFTag", + "lakeformation:GetLFTag", + "lakeformation:UpdateLFTag", + "lakeformation:GetResourceLFTags" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "lakeformation:DeleteLFTag" + ], + "modify": [ + "lakeformation:UpdateLFTag" + ], + "plan": [ + "lakeformation:GetLFTag" + ] + } +] diff --git a/src/mapping/aws/resource/lambda/aws_lambda_event_source_mapping.json b/src/mapping/aws/resource/lambda/aws_lambda_event_source_mapping.json index 7041a62c..2e573ddd 100644 --- a/src/mapping/aws/resource/lambda/aws_lambda_event_source_mapping.json +++ b/src/mapping/aws/resource/lambda/aws_lambda_event_source_mapping.json @@ -1,21 +1,33 @@ [ { "apply": [ - "ec2:DescribeAccountAttributes", "lambda:CreateEventSourceMapping", "lambda:GetEventSourceMapping", "lambda:DeleteEventSourceMapping", - "lambda:UpdateEventSourceMapping" + "lambda:UpdateEventSourceMapping", + "lambda:ListTags" ], "attributes": { - "tags": [] + "kms_key_arn": [ + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ], + "tags": [ + "lambda:TagResource", + "lambda:UntagResource" + ] }, "destroy": [ - "lambda:DeleteEventSourceMapping" + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" ], "modify": [ "lambda:UpdateEventSourceMapping" ], - "plan": [] + "plan": [ + "lambda:GetEventSourceMapping", + "lambda:ListTags" + ] } ] diff --git a/src/mapping/aws/resource/lambda/aws_lambda_function_recursion_config.json b/src/mapping/aws/resource/lambda/aws_lambda_function_recursion_config.json new file mode 100644 index 00000000..9a78a611 --- /dev/null +++ b/src/mapping/aws/resource/lambda/aws_lambda_function_recursion_config.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "lambda:GetFunctionRecursionConfig", + "lambda:PutFunctionRecursionConfig" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lambda/aws_lambda_runtime_management_config.json b/src/mapping/aws/resource/lambda/aws_lambda_runtime_management_config.json new file mode 100644 index 00000000..f8cb1a43 --- /dev/null +++ b/src/mapping/aws/resource/lambda/aws_lambda_runtime_management_config.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "lambda:GetRuntimeManagementConfig", + "lambda:PutRuntimeManagementConfig" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lex/aws_lex_bot.json b/src/mapping/aws/resource/lex/aws_lex_bot.json index 8829a8ec..f9b4a3b3 100644 --- a/src/mapping/aws/resource/lex/aws_lex_bot.json +++ b/src/mapping/aws/resource/lex/aws_lex_bot.json @@ -7,7 +7,12 @@ "lex:UpdateBot", "lex:DeleteBot", "lex:ListBots", - "lex:ListTagsForResource" + "lex:ListTagsForResource", + "iam:CreateServiceLinkedRole", + "iam:GetRole", + "lex:CreateBotReplica", + "lex:DescribeBotReplica", + "lex:DeleteBotReplica" ], "attributes": { "tags": [ diff --git a/src/mapping/aws/resource/lex/aws_lexv2models_bot.json b/src/mapping/aws/resource/lex/aws_lexv2models_bot.json new file mode 100644 index 00000000..6ed8caec --- /dev/null +++ b/src/mapping/aws/resource/lex/aws_lexv2models_bot.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "lex:DescribeBot", + "lex:CreateBot", + "lex:DeleteBot", + "lex:UpdateBot", + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "lex:ListTagsForResource" + ], + "attributes": { + "tags": [ + "lex:TagResource", + "lex:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lex/aws_lexv2models_bot_locale.json b/src/mapping/aws/resource/lex/aws_lexv2models_bot_locale.json new file mode 100644 index 00000000..8b35137e --- /dev/null +++ b/src/mapping/aws/resource/lex/aws_lexv2models_bot_locale.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "lex:DescribeBotLocale", + "lex:CreateBotLocale", + "lex:DeleteBotLocale", + "lex:UpdateBotLocale" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lex/aws_lexv2models_bot_version.json b/src/mapping/aws/resource/lex/aws_lexv2models_bot_version.json new file mode 100644 index 00000000..4686b66c --- /dev/null +++ b/src/mapping/aws/resource/lex/aws_lexv2models_bot_version.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "lex:CreateBotVersion", + "lex:DescribeBotVersion", + "lex:DescribeBot", + "lex:DescribeBotLocale", + "lex:BuildBotLocale" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "lex:DeleteBotVersion", + "lex:DescribeBotVersion" + ], + "modify": [], + "plan": [ + "lex:DescribeBotVersion" + ] + } +] diff --git a/src/mapping/aws/resource/lex/aws_lexv2models_intent.json b/src/mapping/aws/resource/lex/aws_lexv2models_intent.json new file mode 100644 index 00000000..2d0cd06f --- /dev/null +++ b/src/mapping/aws/resource/lex/aws_lexv2models_intent.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "lex:DescribeIntent", + "lex:CreateIntent", + "lex:DeleteIntent", + "lex:UpdateIntent" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lex/aws_lexv2models_slot.json b/src/mapping/aws/resource/lex/aws_lexv2models_slot.json new file mode 100644 index 00000000..f36b65b1 --- /dev/null +++ b/src/mapping/aws/resource/lex/aws_lexv2models_slot.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "lex:DescribeSlot", + "lex:CreateSlot", + "lex:DeleteSlot", + "lex:UpdateSlot" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lex/aws_lexv2models_slot_type.json b/src/mapping/aws/resource/lex/aws_lexv2models_slot_type.json new file mode 100644 index 00000000..8c0abf3a --- /dev/null +++ b/src/mapping/aws/resource/lex/aws_lexv2models_slot_type.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "lex:DescribeSlotType", + "lex:CreateSlotType", + "lex:DeleteSlotType", + "lex:UpdateSlotType" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/license-manager/aws_licensemanager_association.json b/src/mapping/aws/resource/license-manager/aws_licensemanager_association.json new file mode 100644 index 00000000..57ccd997 --- /dev/null +++ b/src/mapping/aws/resource/license-manager/aws_licensemanager_association.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "license-manager:ListAssociationsForLicenseConfiguration" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/license-manager/aws_licensemanager_grant_accepter.json b/src/mapping/aws/resource/license-manager/aws_licensemanager_grant_accepter.json new file mode 100644 index 00000000..96a10d03 --- /dev/null +++ b/src/mapping/aws/resource/license-manager/aws_licensemanager_grant_accepter.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "license-manager:AcceptGrant", + "license-manager:RejectGrant" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lightsail/aws_lightsail_bucket_access_key.json b/src/mapping/aws/resource/lightsail/aws_lightsail_bucket_access_key.json new file mode 100644 index 00000000..0ba465f9 --- /dev/null +++ b/src/mapping/aws/resource/lightsail/aws_lightsail_bucket_access_key.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "lightsail:CreateBucketAccessKey", + "lightsail:DeleteBucketAccessKey", + "lightsail:GetBucketAccessKeys" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lightsail/aws_lightsail_bucket_access_key_access_key.json b/src/mapping/aws/resource/lightsail/aws_lightsail_bucket_access_key_access_key.json new file mode 100644 index 00000000..f2c65ea6 --- /dev/null +++ b/src/mapping/aws/resource/lightsail/aws_lightsail_bucket_access_key_access_key.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "lightsail:GetBucketAccessKeys", + "lightsail:CreateBucketAccessKey", + "lightsail:DeleteBucketAccessKey" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lightsail/aws_lightsail_bucket_resource_access.json b/src/mapping/aws/resource/lightsail/aws_lightsail_bucket_resource_access.json new file mode 100644 index 00000000..43015810 --- /dev/null +++ b/src/mapping/aws/resource/lightsail/aws_lightsail_bucket_resource_access.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "lightsail:SetResourceAccessForBucket" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lightsail/aws_lightsail_container_service.json b/src/mapping/aws/resource/lightsail/aws_lightsail_container_service.json new file mode 100644 index 00000000..c3387c4f --- /dev/null +++ b/src/mapping/aws/resource/lightsail/aws_lightsail_container_service.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "lightsail:GetContainerServices", + "lightsail:CreateContainerService", + "lightsail:DeleteContainerService", + "lightsail:UpdateContainerService" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lightsail/aws_lightsail_container_service_deployment_version.json b/src/mapping/aws/resource/lightsail/aws_lightsail_container_service_deployment_version.json new file mode 100644 index 00000000..349aad66 --- /dev/null +++ b/src/mapping/aws/resource/lightsail/aws_lightsail_container_service_deployment_version.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "lightsail:GetContainerServiceDeployments", + "lightsail:CreateContainerServiceDeployment" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lightsail/aws_lightsail_disk_attachment.json b/src/mapping/aws/resource/lightsail/aws_lightsail_disk_attachment.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/lightsail/aws_lightsail_disk_attachment.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lightsail/aws_lightsail_domain.json b/src/mapping/aws/resource/lightsail/aws_lightsail_domain.json new file mode 100644 index 00000000..e6a02cf0 --- /dev/null +++ b/src/mapping/aws/resource/lightsail/aws_lightsail_domain.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "lightsail:GetDomain", + "lightsail:CreateDomain", + "lightsail:DeleteDomain" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lightsail/aws_lightsail_domain_entry.json b/src/mapping/aws/resource/lightsail/aws_lightsail_domain_entry.json new file mode 100644 index 00000000..5606fa2a --- /dev/null +++ b/src/mapping/aws/resource/lightsail/aws_lightsail_domain_entry.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "lightsail:CreateDomainEntry", + "lightsail:DeleteDomainEntry", + "lightsail:UpdateDomainEntry" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lightsail/aws_lightsail_lb_attachment.json b/src/mapping/aws/resource/lightsail/aws_lightsail_lb_attachment.json new file mode 100644 index 00000000..15c741c4 --- /dev/null +++ b/src/mapping/aws/resource/lightsail/aws_lightsail_lb_attachment.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "lightsail:AttachInstancesToLoadBalancer", + "lightsail:DetachInstancesFromLoadBalancer" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lightsail/aws_lightsail_lb_certificate.json b/src/mapping/aws/resource/lightsail/aws_lightsail_lb_certificate.json new file mode 100644 index 00000000..b7b0e288 --- /dev/null +++ b/src/mapping/aws/resource/lightsail/aws_lightsail_lb_certificate.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "lightsail:GetLoadBalancerTlsCertificates", + "lightsail:CreateLoadBalancerTlsCertificate", + "lightsail:DeleteLoadBalancerTlsCertificate" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lightsail/aws_lightsail_lb_certificate_attachment.json b/src/mapping/aws/resource/lightsail/aws_lightsail_lb_certificate_attachment.json new file mode 100644 index 00000000..e66c77c7 --- /dev/null +++ b/src/mapping/aws/resource/lightsail/aws_lightsail_lb_certificate_attachment.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "lightsail:AttachLoadBalancerTlsCertificate" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lightsail/aws_lightsail_lb_https_redirection_policy.json b/src/mapping/aws/resource/lightsail/aws_lightsail_lb_https_redirection_policy.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/lightsail/aws_lightsail_lb_https_redirection_policy.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/lightsail/aws_lightsail_lb_stickiness_policy.json b/src/mapping/aws/resource/lightsail/aws_lightsail_lb_stickiness_policy.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/lightsail/aws_lightsail_lb_stickiness_policy.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/logs/aws_cloudwatch_log_anomaly_detector.json b/src/mapping/aws/resource/logs/aws_cloudwatch_log_anomaly_detector.json new file mode 100644 index 00000000..1391d947 --- /dev/null +++ b/src/mapping/aws/resource/logs/aws_cloudwatch_log_anomaly_detector.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logs:CreateLogAnomalyDetector", + "logs:GetLogAnomalyDetector", + "logs:DeleteLogAnomalyDetector", + "logs:UpdateLogAnomalyDetector" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/logs/aws_cloudwatch_log_delivery.json b/src/mapping/aws/resource/logs/aws_cloudwatch_log_delivery.json new file mode 100644 index 00000000..ec0d2e1c --- /dev/null +++ b/src/mapping/aws/resource/logs/aws_cloudwatch_log_delivery.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logs:GetLogDelivery", + "logs:CreateLogDelivery", + "logs:DeleteLogDelivery", + "logs:UpdateLogDelivery" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/logs/aws_cloudwatch_log_delivery_destination.json b/src/mapping/aws/resource/logs/aws_cloudwatch_log_delivery_destination.json new file mode 100644 index 00000000..5577e602 --- /dev/null +++ b/src/mapping/aws/resource/logs/aws_cloudwatch_log_delivery_destination.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logs:PutDeliveryDestination", + "logs:GetDeliveryDestination", + "logs:DescribeDeliveryDestinations", + "logs:DeleteDeliveryDestination" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/logs/aws_cloudwatch_log_delivery_destination_policy.json b/src/mapping/aws/resource/logs/aws_cloudwatch_log_delivery_destination_policy.json new file mode 100644 index 00000000..b21fccd6 --- /dev/null +++ b/src/mapping/aws/resource/logs/aws_cloudwatch_log_delivery_destination_policy.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "logs:PutDeliveryDestinationPolicy", + "logs:GetDeliveryDestinationPolicy", + "logs:DeleteDeliveryDestinationPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/logs/aws_cloudwatch_log_delivery_source.json b/src/mapping/aws/resource/logs/aws_cloudwatch_log_delivery_source.json new file mode 100644 index 00000000..03f469fa --- /dev/null +++ b/src/mapping/aws/resource/logs/aws_cloudwatch_log_delivery_source.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "logs:GetDeliverySource", + "logs:PutDeliverySource", + "logs:DeleteDeliverySource" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/logs/aws_cloudwatch_log_group.json b/src/mapping/aws/resource/logs/aws_cloudwatch_log_group.json index a870eed2..5f68f251 100644 --- a/src/mapping/aws/resource/logs/aws_cloudwatch_log_group.json +++ b/src/mapping/aws/resource/logs/aws_cloudwatch_log_group.json @@ -4,7 +4,8 @@ "logs:CreateLogGroup", "logs:DescribeLogGroups", "logs:ListTagsLogGroup", - "logs:DeleteLogGroup" + "logs:DeleteLogGroup", + "logs:ListTagsForResource" ], "attributes": { "kms_key_id": [ diff --git a/src/mapping/aws/resource/logs/aws_cloudwatch_log_index_policy.json b/src/mapping/aws/resource/logs/aws_cloudwatch_log_index_policy.json new file mode 100644 index 00000000..64408e15 --- /dev/null +++ b/src/mapping/aws/resource/logs/aws_cloudwatch_log_index_policy.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "logs:PutIndexPolicy", + "logs:DeleteIndexPolicy", + "logs:DescribeIndexPolicies" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/macie2/aws_macie2_account.json b/src/mapping/aws/resource/macie2/aws_macie2_account.json new file mode 100644 index 00000000..86396b07 --- /dev/null +++ b/src/mapping/aws/resource/macie2/aws_macie2_account.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "macie2:EnableMacie", + "iam:CreateServiceLinkedRole", + "macie2:GetMacieSession", + "macie2:DisableMacie" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/macie2/aws_macie2_classification_export_configuration.json b/src/mapping/aws/resource/macie2/aws_macie2_classification_export_configuration.json new file mode 100644 index 00000000..5f810e9b --- /dev/null +++ b/src/mapping/aws/resource/macie2/aws_macie2_classification_export_configuration.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "macie2:GetClassificationExportConfiguration", + "macie2:PutClassificationExportConfiguration" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/macie2/aws_macie2_classification_job.json b/src/mapping/aws/resource/macie2/aws_macie2_classification_job.json new file mode 100644 index 00000000..90fb5776 --- /dev/null +++ b/src/mapping/aws/resource/macie2/aws_macie2_classification_job.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "macie2:DescribeClassificationJob", + "macie2:CreateClassificationJob", + "macie2:UpdateClassificationJob" + ], + "attributes": { + "tags": [ + "macie2:TagResource", + "macie2:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/macie2/aws_macie2_invitation_accepter.json b/src/mapping/aws/resource/macie2/aws_macie2_invitation_accepter.json new file mode 100644 index 00000000..484723ef --- /dev/null +++ b/src/mapping/aws/resource/macie2/aws_macie2_invitation_accepter.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "macie2:AcceptInvitation" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/macie2/aws_macie2_member.json b/src/mapping/aws/resource/macie2/aws_macie2_member.json new file mode 100644 index 00000000..b6dacd9b --- /dev/null +++ b/src/mapping/aws/resource/macie2/aws_macie2_member.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "macie2:GetMember", + "macie2:DeleteMember", + "macie2:CreateMember" + ], + "attributes": { + "tags": [ + "macie2:TagResource", + "macie2:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/macie2/aws_macie2_organization_admin_account.json b/src/mapping/aws/resource/macie2/aws_macie2_organization_admin_account.json new file mode 100644 index 00000000..a4373af9 --- /dev/null +++ b/src/mapping/aws/resource/macie2/aws_macie2_organization_admin_account.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "macie2:EnableOrganizationAdminAccount", + "macie2:DisableOrganizationAdminAccount" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/macie2/aws_macie2_organization_configuration.json b/src/mapping/aws/resource/macie2/aws_macie2_organization_configuration.json new file mode 100644 index 00000000..4fb9b033 --- /dev/null +++ b/src/mapping/aws/resource/macie2/aws_macie2_organization_configuration.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "macie2:DescribeOrganizationConfiguration", + "macie2:UpdateOrganizationConfiguration" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/medialive/aws_medialive_channel.json b/src/mapping/aws/resource/medialive/aws_medialive_channel.json new file mode 100644 index 00000000..76218b94 --- /dev/null +++ b/src/mapping/aws/resource/medialive/aws_medialive_channel.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "medialive:DescribeChannel", + "medialive:CreateChannel", + "medialive:DeleteChannel", + "medialive:UpdateChannel" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/mediapackagev2/aws_media_packagev2_channel_group.json b/src/mapping/aws/resource/mediapackagev2/aws_media_packagev2_channel_group.json new file mode 100644 index 00000000..0f99b154 --- /dev/null +++ b/src/mapping/aws/resource/mediapackagev2/aws_media_packagev2_channel_group.json @@ -0,0 +1,27 @@ +[ + { + "apply": [ + "mediapackagev2:GetChannelGroup", + "mediapackagev2:DeleteChannelGroup", + "mediapackagev2:CreateChannelGroup", + "mediapackagev2:ListTagsForResource" + ], + "attributes": { + "tags": [ + "mediapackagev2:TagResource", + "mediapackagev2:UntagResource" + ] + }, + "destroy": [ + "mediapackagev2:GetChannelGroup", + "mediapackagev2:DeleteChannelGroup" + ], + "modify": [ + "mediapackagev2:ListTagsForResource", + "mediapackagev2:UpdateChannelGroup" + ], + "plan": [ + "mediapackagev2:GetChannelGroup" + ] + } +] diff --git a/src/mapping/aws/resource/mediastore/aws_media_store_container.json b/src/mapping/aws/resource/mediastore/aws_media_store_container.json new file mode 100644 index 00000000..e0ae6bbb --- /dev/null +++ b/src/mapping/aws/resource/mediastore/aws_media_store_container.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "mediastore:DescribeContainer", + "mediastore:CreateContainer", + "mediastore:DeleteContainer", + "mediastore:ListTagsForResource" + ], + "attributes": { + "tags": [ + "mediastore:TagResource", + "mediastore:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/mediastore/aws_media_store_container_policy.json b/src/mapping/aws/resource/mediastore/aws_media_store_container_policy.json new file mode 100644 index 00000000..051d6259 --- /dev/null +++ b/src/mapping/aws/resource/mediastore/aws_media_store_container_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "mediastore:DeleteContainerPolicy", + "mediastore:PutContainerPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/memorydb/aws_memorydb_acl.json b/src/mapping/aws/resource/memorydb/aws_memorydb_acl.json index 0dee3abd..347e0f09 100644 --- a/src/mapping/aws/resource/memorydb/aws_memorydb_acl.json +++ b/src/mapping/aws/resource/memorydb/aws_memorydb_acl.json @@ -6,7 +6,8 @@ "memorydb:ListTags", "memorydb:ModifyReplicationGroup", "memorydb:DeleteACL", - "memorydb:UpdateACL" + "memorydb:UpdateACL", + "iam:CreateServiceLinkedRole" ], "attributes": { "tags": [ @@ -22,6 +23,9 @@ "modify": [ "memorydb:UpdateACL" ], - "plan": [] + "plan": [ + "memorydb:DescribeACLs", + "memorydb:ListTags" + ] } ] diff --git a/src/mapping/aws/resource/memorydb/aws_memorydb_cluster.json b/src/mapping/aws/resource/memorydb/aws_memorydb_cluster.json index 27866ce54..3dacb277 100644 --- a/src/mapping/aws/resource/memorydb/aws_memorydb_cluster.json +++ b/src/mapping/aws/resource/memorydb/aws_memorydb_cluster.json @@ -4,20 +4,30 @@ "memorydb:CreateCluster", "memorydb:DescribeClusters", "memorydb:DeleteCluster", - "memorydb:ListTags" + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" ], "attributes": { + "kms_key_arn": [ + "kms:DescribeKey", + "kms:CreateGrant" + ], "tags": [ "memorydb:TagResource", "memorydb:UntagResource" ] }, "destroy": [ - "memorydb:DeleteCluster" + "memorydb:DeleteCluster", + "memorydb:DescribeClusters" ], "modify": [ - "memorydb:UpdateCluster" + "memorydb:UpdateCluster", + "memorydb:DescribeClusters" ], - "plan": [] + "plan": [ + "memorydb:DescribeClusters", + "memorydb:ListTags" + ] } ] diff --git a/src/mapping/aws/resource/memorydb/aws_memorydb_multi_region_cluster.json b/src/mapping/aws/resource/memorydb/aws_memorydb_multi_region_cluster.json new file mode 100644 index 00000000..04216116 --- /dev/null +++ b/src/mapping/aws/resource/memorydb/aws_memorydb_multi_region_cluster.json @@ -0,0 +1,31 @@ +[ + { + "apply": [ + "memorydb:CreateMultiRegionCluster", + "memorydb:DescribeMultiRegionClusters", + "memorydb:DeleteMultiRegionCluster", + "memorydb:UpdateMultiRegionCluster", + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" + ], + "attributes": { + "tags": [ + "memorydb:TagResource", + "memorydb:UntagResource" + ] + }, + "destroy": [ + "memorydb:DeleteMultiRegionCluster", + "memorydb:DescribeMultiRegionClusters" + ], + "modify": [ + "memorydb:UpdateMultiRegionCluster", + "memorydb:DescribeMultiRegionClusters", + "memorydb:ListTags" + ], + "plan": [ + "memorydb:DescribeMultiRegionClusters", + "memorydb:ListTags" + ] + } +] diff --git a/src/mapping/aws/resource/memorydb/aws_memorydb_parameter_group.json b/src/mapping/aws/resource/memorydb/aws_memorydb_parameter_group.json index 640e9d90..b2402c59 100644 --- a/src/mapping/aws/resource/memorydb/aws_memorydb_parameter_group.json +++ b/src/mapping/aws/resource/memorydb/aws_memorydb_parameter_group.json @@ -6,7 +6,8 @@ "memorydb:ListTags", "memorydb:UpdateParameterGroup", "memorydb:DescribeParameters", - "memorydb:DescribeClusters" + "memorydb:DescribeClusters", + "iam:CreateServiceLinkedRole" ], "attributes": { "tags": [ diff --git a/src/mapping/aws/resource/memorydb/aws_memorydb_subnet_group.json b/src/mapping/aws/resource/memorydb/aws_memorydb_subnet_group.json index 5ac15162..b4e78704 100644 --- a/src/mapping/aws/resource/memorydb/aws_memorydb_subnet_group.json +++ b/src/mapping/aws/resource/memorydb/aws_memorydb_subnet_group.json @@ -4,7 +4,8 @@ "memorydb:CreateSubnetGroup", "memorydb:DescribeSubnetGroups", "memorydb:ListTags", - "memorydb:DeleteSubnetGroup" + "memorydb:DeleteSubnetGroup", + "iam:CreateServiceLinkedRole" ], "attributes": { "tags": [ diff --git a/src/mapping/aws/resource/memorydb/aws_memorydb_user.json b/src/mapping/aws/resource/memorydb/aws_memorydb_user.json index f22628b1..afecb602 100644 --- a/src/mapping/aws/resource/memorydb/aws_memorydb_user.json +++ b/src/mapping/aws/resource/memorydb/aws_memorydb_user.json @@ -4,7 +4,8 @@ "memorydb:CreateUser", "memorydb:DescribeUsers", "memorydb:ListTags", - "memorydb:DeleteUser" + "memorydb:DeleteUser", + "iam:CreateServiceLinkedRole" ], "attributes": { "tags": [ @@ -12,8 +13,18 @@ "memorydb:UntagResource" ] }, - "destroy": [], - "modify": [], - "plan": [] + "destroy": [ + "memorydb:DeleteUser", + "memorydb:DescribeUsers" + ], + "modify": [ + "memorydb:UpdateUser", + "memorydb:DescribeUsers", + "memorydb:ListTags" + ], + "plan": [ + "memorydb:DescribeUsers", + "memorydb:ListTags" + ] } ] diff --git a/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_adm_channel.json b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_adm_channel.json new file mode 100644 index 00000000..ba7ac400 --- /dev/null +++ b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_adm_channel.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "mobiletargeting:GetAdmChannel", + "mobiletargeting:DeleteAdmChannel", + "mobiletargeting:UpdateAdmChannel" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_apns_channel.json b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_apns_channel.json new file mode 100644 index 00000000..faaad996 --- /dev/null +++ b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_apns_channel.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "mobiletargeting:GetApnsChannel", + "mobiletargeting:DeleteApnsChannel", + "mobiletargeting:UpdateApnsChannel" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_apns_sandbox_channel.json b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_apns_sandbox_channel.json new file mode 100644 index 00000000..0224f51d --- /dev/null +++ b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_apns_sandbox_channel.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "mobiletargeting:GetApnsSandboxChannel", + "mobiletargeting:DeleteApnsSandboxChannel", + "mobiletargeting:UpdateApnsSandboxChannel" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_apns_voip_channel.json b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_apns_voip_channel.json new file mode 100644 index 00000000..11e06943 --- /dev/null +++ b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_apns_voip_channel.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "mobiletargeting:GetApnsVoipChannel", + "mobiletargeting:DeleteApnsVoipChannel", + "mobiletargeting:UpdateApnsVoipChannel" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_apns_voip_sandbox_channel.json b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_apns_voip_sandbox_channel.json new file mode 100644 index 00000000..817615fa --- /dev/null +++ b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_apns_voip_sandbox_channel.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "mobiletargeting:GetApnsVoipSandboxChannel", + "mobiletargeting:DeleteApnsVoipSandboxChannel", + "mobiletargeting:UpdateApnsVoipSandboxChannel" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_app.json b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_app.json new file mode 100644 index 00000000..79621b14 --- /dev/null +++ b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_app.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "mobiletargeting:GetApp", + "mobiletargeting:CreateApp", + "mobiletargeting:DeleteApp", + "mobiletargeting:ListTagsForResource" + ], + "attributes": { + "tags": [ + "mobiletargeting:TagResource", + "mobiletargeting:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_baidu_channel.json b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_baidu_channel.json new file mode 100644 index 00000000..e7ab435c --- /dev/null +++ b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_baidu_channel.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "mobiletargeting:GetBaiduChannel", + "mobiletargeting:DeleteBaiduChannel", + "mobiletargeting:UpdateBaiduChannel" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_email_channel.json b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_email_channel.json new file mode 100644 index 00000000..3c53859b --- /dev/null +++ b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_email_channel.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "mobiletargeting:GetEmailChannel", + "mobiletargeting:DeleteEmailChannel", + "mobiletargeting:UpdateEmailChannel" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_email_template.json b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_email_template.json new file mode 100644 index 00000000..ae052c13 --- /dev/null +++ b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_email_template.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "mobiletargeting:GetEmailTemplate", + "mobiletargeting:CreateEmailTemplate", + "mobiletargeting:DeleteEmailTemplate", + "mobiletargeting:UpdateEmailTemplate" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_event_stream.json b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_event_stream.json new file mode 100644 index 00000000..01c89588 --- /dev/null +++ b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_event_stream.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "mobiletargeting:GetEventStream", + "mobiletargeting:DeleteEventStream", + "mobiletargeting:PutEventStream" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_gcm_channel.json b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_gcm_channel.json new file mode 100644 index 00000000..ec6d679e --- /dev/null +++ b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_gcm_channel.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "mobiletargeting:GetGcmChannel", + "mobiletargeting:DeleteGcmChannel", + "mobiletargeting:UpdateGcmChannel" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_sms_channel.json b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_sms_channel.json new file mode 100644 index 00000000..d35f9977 --- /dev/null +++ b/src/mapping/aws/resource/mobiletargeting/aws_pinpoint_sms_channel.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "mobiletargeting:GetSmsChannel", + "mobiletargeting:DeleteSmsChannel", + "mobiletargeting:UpdateSmsChannel" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/mq/aws_mq_configuration.json b/src/mapping/aws/resource/mq/aws_mq_configuration.json index 27d8cd1d..d6de62d3 100644 --- a/src/mapping/aws/resource/mq/aws_mq_configuration.json +++ b/src/mapping/aws/resource/mq/aws_mq_configuration.json @@ -3,6 +3,7 @@ "apply": [ "mq:CreateConfiguration", "mq:UpdateConfiguration", + "mq:DeleteConfiguration", "mq:DescribeConfiguration", "mq:DescribeConfigurationRevision", "mq:RebootBroker", @@ -14,12 +15,15 @@ "mq:DeleteTags" ] }, - "destroy": [], - "modify": [], + "destroy": [ + "mq:DeleteConfiguration" + ], + "modify": [ + "mq:UpdateConfiguration" + ], "plan": [ + "mq:DescribeConfiguration", "mq:ListTags" ] } ] - - diff --git a/src/mapping/aws/resource/neptune-graph/aws_neptunegraph_graph.json b/src/mapping/aws/resource/neptune-graph/aws_neptunegraph_graph.json new file mode 100644 index 00000000..02466e27 --- /dev/null +++ b/src/mapping/aws/resource/neptune-graph/aws_neptunegraph_graph.json @@ -0,0 +1,38 @@ +[ + { + "apply": [ + "neptune-graph:GetGraph", + "neptune-graph:CreateGraph", + "neptune-graph:ListTagsForResource", + "neptune-graph:DeleteGraph", + "neptune-graph:UpdateGraph", + "iam:PassRole", + "iam:CreateServiceLinkedRole" + ], + "attributes": { + "kms_key_identifier": [ + "kms:DescribeKey", + "kms:CreateGrant", + "kms:Decrypt" + ], + "tags": [ + "neptune-graph:TagResource", + "neptune-graph:UntagResource" + ] + }, + "destroy": [ + "neptune-graph:DeleteGraph", + "neptune-graph:GetGraph" + ], + "modify": [ + "iam:PassRole", + "neptune-graph:GetGraph", + "neptune-graph:ListTagsForResource", + "neptune-graph:UpdateGraph" + ], + "plan": [ + "neptune-graph:GetGraph", + "neptune-graph:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/resource/network-firewall/aws_networkfirewall_firewall.json b/src/mapping/aws/resource/network-firewall/aws_networkfirewall_firewall.json index 41d11a6a..c3018224 100644 --- a/src/mapping/aws/resource/network-firewall/aws_networkfirewall_firewall.json +++ b/src/mapping/aws/resource/network-firewall/aws_networkfirewall_firewall.json @@ -6,6 +6,7 @@ "network-firewall:DeleteFirewall", "network-firewall:DescribeFirewall", "network-firewall:AssociateFirewallPolicy", + "network-firewall:UpdateFirewallAnalysisSettings", "iam:CreateServiceLinkedRole", "network-firewall:AssociateSubnets", "ec2:DescribeSubnets", @@ -36,7 +37,9 @@ "ec2:DescribeRouteTables", "ec2:DeleteVpcEndpoints" ], - "modify": [], + "modify": [ + "network-firewall:UpdateFirewallAnalysisSettings" + ], "plan": [] } ] diff --git a/src/mapping/aws/resource/networkmanager/aws_networkmanager_attachment_accepter.json b/src/mapping/aws/resource/networkmanager/aws_networkmanager_attachment_accepter.json new file mode 100644 index 00000000..8c8dccf3 --- /dev/null +++ b/src/mapping/aws/resource/networkmanager/aws_networkmanager_attachment_accepter.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "networkmanager:AcceptAttachment" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/networkmanager/aws_networkmanager_connection.json b/src/mapping/aws/resource/networkmanager/aws_networkmanager_connection.json new file mode 100644 index 00000000..62acca69 --- /dev/null +++ b/src/mapping/aws/resource/networkmanager/aws_networkmanager_connection.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "networkmanager:GetConnections", + "networkmanager:CreateConnection", + "networkmanager:DeleteConnection", + "networkmanager:UpdateConnection" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/networkmanager/aws_networkmanager_core_network_policy_attachment.json b/src/mapping/aws/resource/networkmanager/aws_networkmanager_core_network_policy_attachment.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/networkmanager/aws_networkmanager_core_network_policy_attachment.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/networkmanager/aws_networkmanager_dx_gateway_attachment.json b/src/mapping/aws/resource/networkmanager/aws_networkmanager_dx_gateway_attachment.json new file mode 100644 index 00000000..c5b4fc4b --- /dev/null +++ b/src/mapping/aws/resource/networkmanager/aws_networkmanager_dx_gateway_attachment.json @@ -0,0 +1,33 @@ +[ + { + "apply": [ + "networkmanager:CreateDirectConnectGatewayAttachment", + "networkmanager:GetDirectConnectGatewayAttachment", + "ec2:DescribeRegions", + "iam:CreateServiceLinkedRole", + "networkmanager:UpdateDirectConnectGatewayAttachment", + "networkmanager:ListTagsForResource", + "networkmanager:DeleteAttachment" + ], + "attributes": { + "tags": [ + "networkmanager:TagResource", + "networkmanager:UntagResource" + ] + }, + "destroy": [ + "networkmanager:DeleteAttachment", + "networkmanager:GetDirectConnectGatewayAttachment", + "ec2:DescribeRegions" + ], + "modify": [ + "networkmanager:UpdateDirectConnectGatewayAttachment", + "networkmanager:GetDirectConnectGatewayAttachment", + "networkmanager:ListTagsForResource", + "ec2:DescribeRegions" + ], + "plan": [ + "networkmanager:GetDirectConnectGatewayAttachment" + ] + } +] diff --git a/src/mapping/aws/resource/networkmanager/aws_networkmanager_transit_gateway_connect_peer_association.json b/src/mapping/aws/resource/networkmanager/aws_networkmanager_transit_gateway_connect_peer_association.json new file mode 100644 index 00000000..7c856417 --- /dev/null +++ b/src/mapping/aws/resource/networkmanager/aws_networkmanager_transit_gateway_connect_peer_association.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "networkmanager:GetTransitGatewayConnectPeerAssociations", + "networkmanager:AssociateTransitGatewayConnectPeer", + "networkmanager:DisassociateTransitGatewayConnectPeer" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/networkmonitor/aws_networkmonitor_monitor.json b/src/mapping/aws/resource/networkmonitor/aws_networkmonitor_monitor.json new file mode 100644 index 00000000..09b20081 --- /dev/null +++ b/src/mapping/aws/resource/networkmonitor/aws_networkmonitor_monitor.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "networkmonitor:GetMonitor", + "networkmonitor:CreateMonitor", + "networkmonitor:DeleteMonitor", + "networkmonitor:UpdateMonitor", + "networkmonitor:ListTagsForResource" + ], + "attributes": { + "tags": [ + "networkmonitor:TagResource", + "networkmonitor:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/networkmonitor/aws_networkmonitor_probe.json b/src/mapping/aws/resource/networkmonitor/aws_networkmonitor_probe.json new file mode 100644 index 00000000..2bf58722 --- /dev/null +++ b/src/mapping/aws/resource/networkmonitor/aws_networkmonitor_probe.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "networkmonitor:ListTagsForResource", + "networkmonitor:GetProbe", + "networkmonitor:CreateProbe", + "networkmonitor:DeleteProbe", + "networkmonitor:UpdateProbe" + ], + "attributes": { + "tags": [ + "networkmonitor:TagResource", + "networkmonitor:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/notifications-contacts/aws_notificationscontacts_email_contact.json b/src/mapping/aws/resource/notifications-contacts/aws_notificationscontacts_email_contact.json new file mode 100644 index 00000000..e6f425e9 --- /dev/null +++ b/src/mapping/aws/resource/notifications-contacts/aws_notificationscontacts_email_contact.json @@ -0,0 +1,24 @@ +[ + { + "apply": [ + "notifications-contacts:CreateEmailContact", + "notifications-contacts:GetEmailContact", + "notifications-contacts:SendActivationCode", + "notifications-contacts:ListTagsForResource", + "notifications-contacts:DeleteEmailContact" + ], + "attributes": { + "tags": [ + "notifications-contacts:TagResource", + "notifications-contacts:UntagResource" + ] + }, + "destroy": [ + "notifications-contacts:DeleteEmailContact" + ], + "modify": [], + "plan": [ + "notifications-contacts:GetEmailContact" + ] + } +] diff --git a/src/mapping/aws/resource/notifications/aws_notifications_channel_association.json b/src/mapping/aws/resource/notifications/aws_notifications_channel_association.json new file mode 100644 index 00000000..af10fbdd --- /dev/null +++ b/src/mapping/aws/resource/notifications/aws_notifications_channel_association.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "notifications:AssociateChannel", + "notifications:DisassociateChannel", + "notifications:ListChannels" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "notifications:DisassociateChannel" + ], + "modify": [], + "plan": [ + "notifications:ListChannels" + ] + } +] diff --git a/src/mapping/aws/resource/notifications/aws_notifications_event_rule.json b/src/mapping/aws/resource/notifications/aws_notifications_event_rule.json new file mode 100644 index 00000000..75e4a382 --- /dev/null +++ b/src/mapping/aws/resource/notifications/aws_notifications_event_rule.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "notifications:CreateEventRule", + "notifications:GetEventRule", + "notifications:DeleteEventRule" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "notifications:DeleteEventRule" + ], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/notifications/aws_notifications_notification_configuration.json b/src/mapping/aws/resource/notifications/aws_notifications_notification_configuration.json new file mode 100644 index 00000000..f79244f5 --- /dev/null +++ b/src/mapping/aws/resource/notifications/aws_notifications_notification_configuration.json @@ -0,0 +1,26 @@ +[ + { + "apply": [ + "notifications:ListTagsForResource", + "notifications:CreateNotificationConfiguration", + "notifications:GetNotificationConfiguration", + "notifications:DeleteNotificationConfiguration", + "notifications:UpdateNotificationConfiguration" + ], + "attributes": { + "tags": [ + "notifications:TagResource", + "notifications:UntagResource" + ] + }, + "destroy": [ + "notifications:DeleteNotificationConfiguration" + ], + "modify": [ + "notifications:UpdateNotificationConfiguration" + ], + "plan": [ + "notifications:GetNotificationConfiguration" + ] + } +] diff --git a/src/mapping/aws/resource/notifications/aws_notifications_notification_hub.json b/src/mapping/aws/resource/notifications/aws_notifications_notification_hub.json new file mode 100644 index 00000000..7431d8fc --- /dev/null +++ b/src/mapping/aws/resource/notifications/aws_notifications_notification_hub.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "notifications:RegisterNotificationHub", + "notifications:DeregisterNotificationHub", + "iam:CreateServiceLinkedRole", + "notifications:ListNotificationHubs" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "notifications:DeregisterNotificationHub" + ], + "modify": [], + "plan": [ + "notifications:ListNotificationHubs" + ] + } +] diff --git a/src/mapping/aws/resource/oam/aws_oam_link.json b/src/mapping/aws/resource/oam/aws_oam_link.json index a283e549..3456e168 100644 --- a/src/mapping/aws/resource/oam/aws_oam_link.json +++ b/src/mapping/aws/resource/oam/aws_oam_link.json @@ -5,17 +5,37 @@ "oam:GetLink", "oam:UpdateLink", "oam:DeleteLink", - "cloudwatch:Link" + "cloudwatch:Link", + "logs:Link", + "xray:Link", + "applicationinsights:Link", + "internetmonitor:Link", + "application-signals:Link", + "oam:ListTagsForResource" ], "attributes": { - "tags": [] + "tags": [ + "oam:TagResource", + "oam:UntagResource" + ] }, "destroy": [ "oam:DeleteLink" ], "modify": [ - "oam:UpdateLink" + "oam:GetLink", + "oam:UpdateLink", + "cloudwatch:Link", + "logs:Link", + "xray:Link", + "applicationinsights:Link", + "internetmonitor:Link", + "application-signals:Link", + "oam:ListTagsForResource" ], - "plan": [] + "plan": [ + "oam:GetLink", + "oam:ListTagsForResource" + ] } ] diff --git a/src/mapping/aws/resource/opsworks/aws_opsworks_application.json b/src/mapping/aws/resource/opsworks/aws_opsworks_application.json new file mode 100644 index 00000000..0c004159 --- /dev/null +++ b/src/mapping/aws/resource/opsworks/aws_opsworks_application.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "opsworks:DescribeApps", + "opsworks:CreateApp", + "opsworks:DeleteApp", + "opsworks:UpdateApp" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/opsworks/aws_opsworks_custom_layer.json b/src/mapping/aws/resource/opsworks/aws_opsworks_custom_layer.json new file mode 100644 index 00000000..817e7726 --- /dev/null +++ b/src/mapping/aws/resource/opsworks/aws_opsworks_custom_layer.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "opsworks:DescribeLayers", + "opsworks:CreateLayer", + "opsworks:DeleteLayer", + "opsworks:UpdateLayer", + "opsworks:ListTags" + ], + "attributes": { + "tags": [ + "opsworks:TagResource", + "opsworks:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/opsworks/aws_opsworks_ecs_cluster_layer.json b/src/mapping/aws/resource/opsworks/aws_opsworks_ecs_cluster_layer.json new file mode 100644 index 00000000..bbfc1c73 --- /dev/null +++ b/src/mapping/aws/resource/opsworks/aws_opsworks_ecs_cluster_layer.json @@ -0,0 +1,23 @@ +[ + { + "apply": [ + "opsworks:DescribeLayers", + "opsworks:CreateLayer", + "opsworks:DeleteLayer", + "opsworks:UpdateLayer", + "opsworks:DescribeEcsClusters", + "opsworks:DeregisterEcsCluster", + "opsworks:RegisterEcsCluster", + "opsworks:ListTags" + ], + "attributes": { + "tags": [ + "opsworks:TagResource", + "opsworks:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/opsworks/aws_opsworks_ganglia_layer.json b/src/mapping/aws/resource/opsworks/aws_opsworks_ganglia_layer.json new file mode 100644 index 00000000..817e7726 --- /dev/null +++ b/src/mapping/aws/resource/opsworks/aws_opsworks_ganglia_layer.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "opsworks:DescribeLayers", + "opsworks:CreateLayer", + "opsworks:DeleteLayer", + "opsworks:UpdateLayer", + "opsworks:ListTags" + ], + "attributes": { + "tags": [ + "opsworks:TagResource", + "opsworks:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/opsworks/aws_opsworks_haproxy_layer.json b/src/mapping/aws/resource/opsworks/aws_opsworks_haproxy_layer.json new file mode 100644 index 00000000..817e7726 --- /dev/null +++ b/src/mapping/aws/resource/opsworks/aws_opsworks_haproxy_layer.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "opsworks:DescribeLayers", + "opsworks:CreateLayer", + "opsworks:DeleteLayer", + "opsworks:UpdateLayer", + "opsworks:ListTags" + ], + "attributes": { + "tags": [ + "opsworks:TagResource", + "opsworks:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/opsworks/aws_opsworks_instance.json b/src/mapping/aws/resource/opsworks/aws_opsworks_instance.json new file mode 100644 index 00000000..8c580699 --- /dev/null +++ b/src/mapping/aws/resource/opsworks/aws_opsworks_instance.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "opsworks:DescribeInstances", + "opsworks:DeleteInstance", + "opsworks:CreateInstance", + "opsworks:UpdateInstance", + "opsworks:ListTags" + ], + "attributes": { + "tags": [ + "opsworks:TagResource", + "opsworks:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/opsworks/aws_opsworks_java_app_layer.json b/src/mapping/aws/resource/opsworks/aws_opsworks_java_app_layer.json new file mode 100644 index 00000000..817e7726 --- /dev/null +++ b/src/mapping/aws/resource/opsworks/aws_opsworks_java_app_layer.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "opsworks:DescribeLayers", + "opsworks:CreateLayer", + "opsworks:DeleteLayer", + "opsworks:UpdateLayer", + "opsworks:ListTags" + ], + "attributes": { + "tags": [ + "opsworks:TagResource", + "opsworks:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/opsworks/aws_opsworks_memcached_layer.json b/src/mapping/aws/resource/opsworks/aws_opsworks_memcached_layer.json new file mode 100644 index 00000000..817e7726 --- /dev/null +++ b/src/mapping/aws/resource/opsworks/aws_opsworks_memcached_layer.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "opsworks:DescribeLayers", + "opsworks:CreateLayer", + "opsworks:DeleteLayer", + "opsworks:UpdateLayer", + "opsworks:ListTags" + ], + "attributes": { + "tags": [ + "opsworks:TagResource", + "opsworks:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/opsworks/aws_opsworks_mysql_layer.json b/src/mapping/aws/resource/opsworks/aws_opsworks_mysql_layer.json new file mode 100644 index 00000000..817e7726 --- /dev/null +++ b/src/mapping/aws/resource/opsworks/aws_opsworks_mysql_layer.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "opsworks:DescribeLayers", + "opsworks:CreateLayer", + "opsworks:DeleteLayer", + "opsworks:UpdateLayer", + "opsworks:ListTags" + ], + "attributes": { + "tags": [ + "opsworks:TagResource", + "opsworks:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/opsworks/aws_opsworks_nodejs_app_layer.json b/src/mapping/aws/resource/opsworks/aws_opsworks_nodejs_app_layer.json new file mode 100644 index 00000000..817e7726 --- /dev/null +++ b/src/mapping/aws/resource/opsworks/aws_opsworks_nodejs_app_layer.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "opsworks:DescribeLayers", + "opsworks:CreateLayer", + "opsworks:DeleteLayer", + "opsworks:UpdateLayer", + "opsworks:ListTags" + ], + "attributes": { + "tags": [ + "opsworks:TagResource", + "opsworks:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/opsworks/aws_opsworks_permission.json b/src/mapping/aws/resource/opsworks/aws_opsworks_permission.json new file mode 100644 index 00000000..970cc243 --- /dev/null +++ b/src/mapping/aws/resource/opsworks/aws_opsworks_permission.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "opsworks:DescribePermissions", + "opsworks:SetPermission" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/opsworks/aws_opsworks_php_app_layer.json b/src/mapping/aws/resource/opsworks/aws_opsworks_php_app_layer.json new file mode 100644 index 00000000..817e7726 --- /dev/null +++ b/src/mapping/aws/resource/opsworks/aws_opsworks_php_app_layer.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "opsworks:DescribeLayers", + "opsworks:CreateLayer", + "opsworks:DeleteLayer", + "opsworks:UpdateLayer", + "opsworks:ListTags" + ], + "attributes": { + "tags": [ + "opsworks:TagResource", + "opsworks:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/opsworks/aws_opsworks_rails_app_layer.json b/src/mapping/aws/resource/opsworks/aws_opsworks_rails_app_layer.json new file mode 100644 index 00000000..817e7726 --- /dev/null +++ b/src/mapping/aws/resource/opsworks/aws_opsworks_rails_app_layer.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "opsworks:DescribeLayers", + "opsworks:CreateLayer", + "opsworks:DeleteLayer", + "opsworks:UpdateLayer", + "opsworks:ListTags" + ], + "attributes": { + "tags": [ + "opsworks:TagResource", + "opsworks:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/opsworks/aws_opsworks_rds_db_instance.json b/src/mapping/aws/resource/opsworks/aws_opsworks_rds_db_instance.json new file mode 100644 index 00000000..6f27a9ff --- /dev/null +++ b/src/mapping/aws/resource/opsworks/aws_opsworks_rds_db_instance.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "opsworks:DescribeRdsDbInstances", + "opsworks:DeregisterRdsDbInstance", + "opsworks:RegisterRdsDbInstance", + "opsworks:UpdateRdsDbInstance", + "opsworks:ListTags" + ], + "attributes": { + "tags": [ + "opsworks:TagResource", + "opsworks:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/opsworks/aws_opsworks_stack.json b/src/mapping/aws/resource/opsworks/aws_opsworks_stack.json new file mode 100644 index 00000000..9e66e049 --- /dev/null +++ b/src/mapping/aws/resource/opsworks/aws_opsworks_stack.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "opsworks:DescribeStacks", + "opsworks:CreateStack", + "opsworks:DeleteStack", + "opsworks:UpdateStack", + "opsworks:ListTags" + ], + "attributes": { + "tags": [ + "opsworks:TagResource", + "opsworks:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/opsworks/aws_opsworks_static_web_layer.json b/src/mapping/aws/resource/opsworks/aws_opsworks_static_web_layer.json new file mode 100644 index 00000000..817e7726 --- /dev/null +++ b/src/mapping/aws/resource/opsworks/aws_opsworks_static_web_layer.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "opsworks:DescribeLayers", + "opsworks:CreateLayer", + "opsworks:DeleteLayer", + "opsworks:UpdateLayer", + "opsworks:ListTags" + ], + "attributes": { + "tags": [ + "opsworks:TagResource", + "opsworks:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/opsworks/aws_opsworks_user_profile.json b/src/mapping/aws/resource/opsworks/aws_opsworks_user_profile.json new file mode 100644 index 00000000..27c8c2ce --- /dev/null +++ b/src/mapping/aws/resource/opsworks/aws_opsworks_user_profile.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "opsworks:DescribeUserProfiles", + "opsworks:CreateUserProfile", + "opsworks:DeleteUserProfile", + "opsworks:UpdateUserProfile", + "opsworks:ListTags" + ], + "attributes": { + "tags": [ + "opsworks:TagResource", + "opsworks:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/organizations/aws_organizations_account.json b/src/mapping/aws/resource/organizations/aws_organizations_account.json index c83bbf41..c4d14724 100644 --- a/src/mapping/aws/resource/organizations/aws_organizations_account.json +++ b/src/mapping/aws/resource/organizations/aws_organizations_account.json @@ -4,6 +4,7 @@ "organizations:CreateAccount", "organizations:DescribeCreateAccountStatus", "organizations:MoveAccount", + "organizations:ListAccounts", "organizations:ListParents", "organizations:DescribeAccount", "organizations:ListTagsForResource", diff --git a/src/mapping/aws/resource/organizations/aws_organizations_delegated_administrator.json b/src/mapping/aws/resource/organizations/aws_organizations_delegated_administrator.json new file mode 100644 index 00000000..f846435c --- /dev/null +++ b/src/mapping/aws/resource/organizations/aws_organizations_delegated_administrator.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "organizations:RegisterDelegatedAdministrator", + "organizations:DeregisterDelegatedAdministrator" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/organizations/aws_organizations_organizational_unit.json b/src/mapping/aws/resource/organizations/aws_organizations_organizational_unit.json index 5e6ad722..1a1c4f78 100644 --- a/src/mapping/aws/resource/organizations/aws_organizations_organizational_unit.json +++ b/src/mapping/aws/resource/organizations/aws_organizations_organizational_unit.json @@ -5,7 +5,8 @@ "organizations:DescribeOrganizationalUnit", "organizations:ListParents", "organizations:ListTagsForResource", - "organizations:UpdateOrganizationalUnit" + "organizations:UpdateOrganizationalUnit", + "organizations:ListOrganizationalUnitsForParent" ], "attributes": { "tags": [ diff --git a/src/mapping/aws/resource/organizations/aws_organizations_policy.json b/src/mapping/aws/resource/organizations/aws_organizations_policy.json index 531a4753..830ad735 100644 --- a/src/mapping/aws/resource/organizations/aws_organizations_policy.json +++ b/src/mapping/aws/resource/organizations/aws_organizations_policy.json @@ -8,7 +8,8 @@ "organizations:AttachPolicy", "organizations:DetachPolicy", "organizations:ListTagsForResource", - "organizations:ListTargetsForPolicy" + "organizations:ListTargetsForPolicy", + "organizations:ListPolicies" ], "attributes": { "tags": [ diff --git a/src/mapping/aws/resource/profile/aws_customerprofiles_domain.json b/src/mapping/aws/resource/profile/aws_customerprofiles_domain.json new file mode 100644 index 00000000..0e5f75eb --- /dev/null +++ b/src/mapping/aws/resource/profile/aws_customerprofiles_domain.json @@ -0,0 +1,27 @@ +[ + { + "apply": [ + "profile:CreateDomain", + "profile:DeleteDomain", + "profile:GetDomain", + "profile:UpdateDomain", + "profile:ListTagsForResource" + ], + "attributes": { + "tags": [ + "profile:UntagResource", + "profile:TagResource" + ] + }, + "destroy": [ + "profile:DeleteDomain" + ], + "modify": [ + "profile:GetDomain", + "profile:UpdateDomain" + ], + "plan": [ + "profile:GetDomain" + ] + } +] diff --git a/src/mapping/aws/resource/profile/aws_customerprofiles_profile.json b/src/mapping/aws/resource/profile/aws_customerprofiles_profile.json new file mode 100644 index 00000000..475f05c4 --- /dev/null +++ b/src/mapping/aws/resource/profile/aws_customerprofiles_profile.json @@ -0,0 +1,23 @@ +[ + { + "apply": [ + "profile:CreateProfile", + "profile:DeleteProfile", + "profile:UpdateProfile", + "profile:ListTagsForResource" + ], + "attributes": { + "tags": [ + "profile:UntagResource", + "profile:TagResource" + ] + }, + "destroy": [ + "profile:DeleteProfile" + ], + "modify": [ + "profile:UpdateProfile" + ], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/qbusiness/aws_qbusiness_application.json b/src/mapping/aws/resource/qbusiness/aws_qbusiness_application.json new file mode 100644 index 00000000..5b6ea6d9 --- /dev/null +++ b/src/mapping/aws/resource/qbusiness/aws_qbusiness_application.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "qbusiness:GetApplication", + "qbusiness:CreateApplication", + "qbusiness:DeleteApplication", + "qbusiness:UpdateApplication" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/qldb/aws_qldb_ledger.json b/src/mapping/aws/resource/qldb/aws_qldb_ledger.json new file mode 100644 index 00000000..48cc6972 --- /dev/null +++ b/src/mapping/aws/resource/qldb/aws_qldb_ledger.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "qldb:DescribeLedger", + "qldb:CreateLedger", + "qldb:DeleteLedger", + "qldb:UpdateLedger", + "qldb:ListTagsForResource" + ], + "attributes": { + "tags": [ + "qldb:TagResource", + "qldb:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/quicksight/aws_quicksight_account_settings.json b/src/mapping/aws/resource/quicksight/aws_quicksight_account_settings.json new file mode 100644 index 00000000..5709f942 --- /dev/null +++ b/src/mapping/aws/resource/quicksight/aws_quicksight_account_settings.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "quicksight:UpdateAccountSettings" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/quicksight/aws_quicksight_folder.json b/src/mapping/aws/resource/quicksight/aws_quicksight_folder.json index cad05bd3..a76c89ab 100644 --- a/src/mapping/aws/resource/quicksight/aws_quicksight_folder.json +++ b/src/mapping/aws/resource/quicksight/aws_quicksight_folder.json @@ -4,13 +4,27 @@ "quicksight:CreateFolder", "quicksight:DescribeFolder", "quicksight:DeleteFolder", - "quicksight:UpdateFolder" + "quicksight:UpdateFolder", + "quicksight:UpdateFolderPermissions", + "quicksight:DescribeFolderPermissions", + "quicksight:ListTagsForResource" ], "attributes": { - "tags": [] + "tags": [ + "quicksight:TagResource", + "quicksight:UntagResource" + ] }, - "destroy": [], - "modify": [], + "destroy": [ + "quicksight:DeleteFolder" + ], + "modify": [ + "quicksight:DescribeFolder", + "quicksight:UpdateFolder", + "quicksight:DescribeFolderPermissions", + "quicksight:UpdateFolderPermissions", + "quicksight:ListTagsForResource" + ], "plan": [] } ] diff --git a/src/mapping/aws/resource/quicksight/aws_quicksight_role_membership.json b/src/mapping/aws/resource/quicksight/aws_quicksight_role_membership.json new file mode 100644 index 00000000..06cdd789 --- /dev/null +++ b/src/mapping/aws/resource/quicksight/aws_quicksight_role_membership.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "quicksight:CreateRoleMembership", + "quicksight:DeleteRoleMembership" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ram/aws_ram_resource_share.json b/src/mapping/aws/resource/ram/aws_ram_resource_share.json index dab39998..e61eaa29 100644 --- a/src/mapping/aws/resource/ram/aws_ram_resource_share.json +++ b/src/mapping/aws/resource/ram/aws_ram_resource_share.json @@ -2,7 +2,14 @@ { "apply": [ "ram:CreateResourceShare", - "ram:GetResourceShares" + "ram:GetResourceShares", + "ram:GetPermission", + "ram:GetResourceShareAssociations", + "ram:ListResourceSharePermissions", + "ram:UpdateResourceShare", + "ram:AssociateResourceSharePermission", + "ram:AssociateResourceShare", + "ram:DisassociateResourceShare" ], "attributes": { "tags": [ @@ -13,7 +20,16 @@ "destroy": [ "ram:DeleteResourceShare" ], - "modify": [], + "modify": [ + "ram:GetPermission", + "ram:GetResourceShares", + "ram:GetResourceShareAssociations", + "ram:ListResourceSharePermissions", + "ram:UpdateResourceShare", + "ram:AssociateResourceSharePermission", + "ram:AssociateResourceShare", + "ram:DisassociateResourceShare" + ], "plan": [] } ] diff --git a/src/mapping/aws/resource/ram/aws_ram_resource_share_accepter.json b/src/mapping/aws/resource/ram/aws_ram_resource_share_accepter.json new file mode 100644 index 00000000..6a4e3d19 --- /dev/null +++ b/src/mapping/aws/resource/ram/aws_ram_resource_share_accepter.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "ram:AcceptResourceShareInvitation" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ram/aws_ram_sharing_with_organization.json b/src/mapping/aws/resource/ram/aws_ram_sharing_with_organization.json new file mode 100644 index 00000000..acac24ba --- /dev/null +++ b/src/mapping/aws/resource/ram/aws_ram_sharing_with_organization.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "ram:EnableSharingWithAwsOrganization" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/rbin/aws_rbin_rule.json b/src/mapping/aws/resource/rbin/aws_rbin_rule.json new file mode 100644 index 00000000..1502c7d1 --- /dev/null +++ b/src/mapping/aws/resource/rbin/aws_rbin_rule.json @@ -0,0 +1,38 @@ +[ + { + "apply": [ + "rbin:GetRule", + "rbin:UpdateRule", + "rbin:LockRule", + "rbin:UnlockRule", + "rbin:ListTagsForResource", + "iam:PassRole", + "rbin:CreateRule", + "rbin:DeleteRule" + ], + "attributes": { + "tags": [ + "rbin:TagResource", + "rbin:UntagResource" + ] + }, + "destroy": [ + "rbin:GetRule", + "rbin:DeleteRule", + "iam:PassRole" + ], + "modify": [ + "rbin:GetRule", + "rbin:UpdateRule", + "rbin:LockRule", + "rbin:UnlockRule", + "rbin:ListTagsForResource", + "iam:PassRole" + ], + "plan": [ + "rbin:GetRule", + "rbin:ListTagsForResource", + "iam:PassRole" + ] + } +] diff --git a/src/mapping/aws/resource/rds/aws_db_instance.json b/src/mapping/aws/resource/rds/aws_db_instance.json index c5bf7374..6ce784b2 100644 --- a/src/mapping/aws/resource/rds/aws_db_instance.json +++ b/src/mapping/aws/resource/rds/aws_db_instance.json @@ -2,10 +2,28 @@ { "apply": [ "ec2:DescribeAccountAttributes", - "rds:CreateDBInstance", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcAttribute", + "ec2:DescribeVpcs", + "rds:DescribeDBClusters", + "rds:DescribeDBEngineVersions", "rds:DescribeDBInstances", + "rds:DescribeDBParameterGroups", + "rds:DescribeDBInstanceAutomatedBackups", + "iam:CreateServiceLinkedRole", + "iam:GetRole", + "iam:ListRoles", + "iam:PassRole", + "rds:CreateDBInstance", "rds:DeleteDBInstance", - "rds:ListTagsForResource" + "rds:DescribeDBInstances", + "rds:ListTagsForResource", + "rds:ModifyDBInstance", + "rds:ModifyDBInstance", + "rds:RebootDBInstance" ], "attributes": { "manage_master_user_password": [ @@ -25,11 +43,22 @@ ] }, "destroy": [ - "rds:DeleteDBInstance" + "rds:CreateDBSnapshot", + "rds:DeleteDBInstance", + "rds:DescribeDBInstances" ], "modify": [ "rds:ModifyDBInstance" ], - "plan": [] + "plan": [ + "ec2:DescribeAccountAttributes", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcAttribute", + "ec2:DescribeVpcs", + "rds:DescribeDBInstances" + ] } ] diff --git a/src/mapping/aws/resource/rds/aws_rds_certificate.json b/src/mapping/aws/resource/rds/aws_rds_certificate.json new file mode 100644 index 00000000..7ca008f1 --- /dev/null +++ b/src/mapping/aws/resource/rds/aws_rds_certificate.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "rds:DescribeCertificates", + "rds:ModifyCertificates" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/rds/aws_rds_cluster_snapshot_copy.json b/src/mapping/aws/resource/rds/aws_rds_cluster_snapshot_copy.json new file mode 100644 index 00000000..8d5c1bb5 --- /dev/null +++ b/src/mapping/aws/resource/rds/aws_rds_cluster_snapshot_copy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "rds:CopyDBSnapshot" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/rds/aws_rds_custom_db_engine_version.json b/src/mapping/aws/resource/rds/aws_rds_custom_db_engine_version.json new file mode 100644 index 00000000..33626261 --- /dev/null +++ b/src/mapping/aws/resource/rds/aws_rds_custom_db_engine_version.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "rds:CopyCustomDBEngineVersion", + "rds:CreateCustomDBEngineVersion", + "rds:DeleteCustomDBEngineVersion", + "rds:ModifyCustomDBEngineVersion" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/rds/aws_rds_export_task.json b/src/mapping/aws/resource/rds/aws_rds_export_task.json new file mode 100644 index 00000000..bd7511d0 --- /dev/null +++ b/src/mapping/aws/resource/rds/aws_rds_export_task.json @@ -0,0 +1,23 @@ +[ + { + "apply": [ + "rds:DescribeExportTasks", + "rds:StartExportTask", + "rds:CancelExportTask", + "s3:PutObject*", + "s3:ListBucket", + "s3:GetObject*", + "s3:DeleteObject*", + "s3:GetBucketLocation", + "iam:GetRole", + "iam:PassRole", + "kms:Decrypt" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/rds/aws_rds_global_cluster.json b/src/mapping/aws/resource/rds/aws_rds_global_cluster.json index ad6a6a5a..a05246d0 100644 --- a/src/mapping/aws/resource/rds/aws_rds_global_cluster.json +++ b/src/mapping/aws/resource/rds/aws_rds_global_cluster.json @@ -9,7 +9,10 @@ "rds:ModifyGlobalCluster" ], "attributes": { - "tags": [] + "tags": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ] }, "destroy": [ "rds:DeleteGlobalCluster", diff --git a/src/mapping/aws/resource/rds/aws_rds_instance_state.json b/src/mapping/aws/resource/rds/aws_rds_instance_state.json new file mode 100644 index 00000000..e4e1f863 --- /dev/null +++ b/src/mapping/aws/resource/rds/aws_rds_instance_state.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "rds:StartDBInstance", + "rds:StopDBInstance" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/rds/aws_rds_reserved_instance.json b/src/mapping/aws/resource/rds/aws_rds_reserved_instance.json new file mode 100644 index 00000000..1ea613fc --- /dev/null +++ b/src/mapping/aws/resource/rds/aws_rds_reserved_instance.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "rds:PurchaseReservedDBInstancesOffering", + "rds:DescribeReservedDBInstancesOfferings" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/rds/aws_rds_shard_group.json b/src/mapping/aws/resource/rds/aws_rds_shard_group.json new file mode 100644 index 00000000..a8c7ec8b --- /dev/null +++ b/src/mapping/aws/resource/rds/aws_rds_shard_group.json @@ -0,0 +1,33 @@ +[ + { + "apply": [ + "rds:CreateDBShardGroup", + "rds:DescribeDBClusters", + "rds:ListTagsForResource", + "rds:DeleteDBShardGroup", + "rds:ModifyDBShardGroup", + "rds:DescribeDBShardGroups" + ], + "attributes": { + "tags": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ] + }, + "destroy": [ + "rds:DeleteDBShardGroup", + "rds:DescribeDBClusters", + "rds:DescribeDbShardGroups" + ], + "modify": [ + "rds:DescribeDBShardGroups", + "rds:DescribeDBClusters", + "rds:ModifyDBShardGroup", + "rds:ListTagsForResource" + ], + "plan": [ + "rds:DescribeDBShardGroups", + "rds:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/resource/redshift-data/aws_redshiftdata_statement.json b/src/mapping/aws/resource/redshift-data/aws_redshiftdata_statement.json new file mode 100644 index 00000000..bdec0f0b --- /dev/null +++ b/src/mapping/aws/resource/redshift-data/aws_redshiftdata_statement.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "redshift-data:DescribeStatement", + "redshift-data:ExecuteStatement", + "redshift-data:CancelStatement" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_custom_domain_association.json b/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_custom_domain_association.json new file mode 100644 index 00000000..c315e6b2 --- /dev/null +++ b/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_custom_domain_association.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "redshift-serverless:GetCustomDomainAssociation", + "redshift-serverless:CreateCustomDomainAssociation", + "redshift-serverless:DeleteCustomDomainAssociation", + "redshift-serverless:UpdateCustomDomainAssociation" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_endpoint_access.json b/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_endpoint_access.json new file mode 100644 index 00000000..4dc75ff7 --- /dev/null +++ b/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_endpoint_access.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "redshift-serverless:GetEndpointAccess", + "redshift-serverless:CreateEndpointAccess", + "redshift-serverless:DeleteEndpointAccess", + "redshift-serverless:UpdateEndpointAccess" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_namespace.json b/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_namespace.json index df774fdc..ed600bc0 100644 --- a/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_namespace.json +++ b/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_namespace.json @@ -2,6 +2,7 @@ { "apply": [ "iam:PassRole", + "iam:CreateServiceLinkedRole", "redshift-serverless:CreateNamespace", "redshift-serverless:GetNamespace", "redshift-serverless:ListSnapshotCopyConfigurations", @@ -9,7 +10,8 @@ "redshift:GetResourcePolicy", "redshift:PutResourcePolicy", "redshift-serverless:UpdateNamespace", - "redshift-serverless:DeleteNamespace" + "redshift-serverless:DeleteNamespace", + "redshift-serverless:ListTagsForResource" ], "attributes": { "kms_key_id": [ @@ -33,7 +35,10 @@ "secretsmanager:RotateSecret", "secretsmanager:DescribeSecret" ], - "tags": [] + "tags": [ + "redshift-serverless:TagResource", + "redshift-serverless:UntagResource" + ] }, "destroy": [ "redshift-serverless:DeleteNamespace" diff --git a/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_resource_policy.json b/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_resource_policy.json new file mode 100644 index 00000000..7920c8c5 --- /dev/null +++ b/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_resource_policy.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "redshift-serverless:GetResourcePolicy", + "redshift-serverless:DeleteResourcePolicy", + "redshift-serverless:PutResourcePolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_snapshot.json b/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_snapshot.json new file mode 100644 index 00000000..d1a5cf9d --- /dev/null +++ b/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_snapshot.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "redshift-serverless:GetSnapshot", + "redshift-serverless:CreateSnapshot", + "redshift-serverless:DeleteSnapshot", + "redshift-serverless:UpdateSnapshot" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_usage_limit.json b/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_usage_limit.json new file mode 100644 index 00000000..165e1327 --- /dev/null +++ b/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_usage_limit.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "redshift-serverless:GetUsageLimit", + "redshift-serverless:CreateUsageLimit", + "redshift-serverless:DeleteUsageLimit", + "redshift-serverless:UpdateUsageLimit" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_workgroup.json b/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_workgroup.json index 6ae53961..c317a930 100644 --- a/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_workgroup.json +++ b/src/mapping/aws/resource/redshift-serverless/aws_redshiftserverless_workgroup.json @@ -14,7 +14,9 @@ "redshift-serverless:GetNamespace", "redshift-serverless:DeleteWorkgroup", "redshift-serverless:UpdateWorkgroup", - "redshift-serverless:ListTagsForResource" + "redshift-serverless:ListTagsForResource", + "redshift-serverless:RestoreFromSnapshot", + "redshift-serverless:RestoreFromRecoveryPoint" ], "attributes": { "tags": [ @@ -35,7 +37,9 @@ "redshift-serverless:DeleteWorkgroup" ], "modify": [ - "redshift-serverless:UpdateWorkgroup" + "redshift-serverless:UpdateWorkgroup", + "redshift-serverless:RestoreFromSnapshot", + "redshift-serverless:RestoreFromRecoveryPoint" ], "plan": [] } diff --git a/src/mapping/aws/resource/redshift/aws_redshift_cluster_snapshot.json b/src/mapping/aws/resource/redshift/aws_redshift_cluster_snapshot.json new file mode 100644 index 00000000..923c8449 --- /dev/null +++ b/src/mapping/aws/resource/redshift/aws_redshift_cluster_snapshot.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "redshift:DescribeClusterSnapshots", + "redshift:CreateClusterSnapshot", + "redshift:DeleteClusterSnapshot", + "redshift:ModifyClusterSnapshot", + "redshift:DescribeTags" + ], + "attributes": { + "tags": [ + "redshift:CreateTags", + "redshift:DeleteTags" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/redshift/aws_redshift_data_share_authorization.json b/src/mapping/aws/resource/redshift/aws_redshift_data_share_authorization.json new file mode 100644 index 00000000..f2f5790a --- /dev/null +++ b/src/mapping/aws/resource/redshift/aws_redshift_data_share_authorization.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "redshift:AuthorizeDataShare", + "redshift:DeauthorizeDataShare", + "redshift:DescribeDataShares" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/redshift/aws_redshift_data_share_consumer_association.json b/src/mapping/aws/resource/redshift/aws_redshift_data_share_consumer_association.json new file mode 100644 index 00000000..69878ee1 --- /dev/null +++ b/src/mapping/aws/resource/redshift/aws_redshift_data_share_consumer_association.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "redshift:AssociateDataShareConsumer", + "redshift:DisassociateDataShareConsumer" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/redshift/aws_redshift_integration.json b/src/mapping/aws/resource/redshift/aws_redshift_integration.json new file mode 100644 index 00000000..e8870c6a --- /dev/null +++ b/src/mapping/aws/resource/redshift/aws_redshift_integration.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "redshift:CreateIntegration", + "redshift:DescribeIntegrations", + "redshift:DeleteIntegration", + "redshift:ModifyIntegration" + ], + "attributes": { + "tags": [ + "redshift:CreateTags", + "redshift:DeleteTags" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/redshift/aws_redshift_logging.json b/src/mapping/aws/resource/redshift/aws_redshift_logging.json new file mode 100644 index 00000000..e918f8d7 --- /dev/null +++ b/src/mapping/aws/resource/redshift/aws_redshift_logging.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "redshift:EnableLogging", + "redshift:DisableLogging", + "redshift:DescribeLoggingStatus" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/redshift/aws_redshift_partner.json b/src/mapping/aws/resource/redshift/aws_redshift_partner.json new file mode 100644 index 00000000..52b77220 --- /dev/null +++ b/src/mapping/aws/resource/redshift/aws_redshift_partner.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "redshift:DescribePartners", + "redshift:AddPartner", + "redshift:DeletePartner", + "redshift:UpdatePartnerStatus" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/redshift/aws_redshift_resource_policy.json b/src/mapping/aws/resource/redshift/aws_redshift_resource_policy.json new file mode 100644 index 00000000..99e283ce --- /dev/null +++ b/src/mapping/aws/resource/redshift/aws_redshift_resource_policy.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "redshift:GetResourcePolicy", + "redshift:DeleteResourcePolicy", + "redshift:PutResourcePolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/redshift/aws_redshift_snapshot_copy.json b/src/mapping/aws/resource/redshift/aws_redshift_snapshot_copy.json new file mode 100644 index 00000000..33983483 --- /dev/null +++ b/src/mapping/aws/resource/redshift/aws_redshift_snapshot_copy.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "redshift:DisableSnapshotCopy", + "redshift:EnableSnapshotCopy", + "redshift:ModifySnapshotCopyRetentionPeriod" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/resiliencehub/aws_resiliencehub_resiliency_policy.json b/src/mapping/aws/resource/resiliencehub/aws_resiliencehub_resiliency_policy.json new file mode 100644 index 00000000..57bb912d --- /dev/null +++ b/src/mapping/aws/resource/resiliencehub/aws_resiliencehub_resiliency_policy.json @@ -0,0 +1,28 @@ +[ + { + "apply": [ + "resiliencehub:CreateResiliencyPolicy", + "resiliencehub:DescribeResiliencyPolicy", + "resiliencehub:UpdateResiliencyPolicy", + "resiliencehub:ListTagsForResource" + ], + "attributes": { + "tags": [ + "resiliencehub:TagResource", + "resiliencehub:UntagResource" + ] + }, + "destroy": [ + "resiliencehub:DeleteResiliencyPolicy" + ], + "modify": [ + "resiliencehub:DescribeResiliencyPolicy", + "resiliencehub:UpdateResiliencyPolicy", + "resiliencehub:ListTagsForResource" + ], + "plan": [ + "resiliencehub:DescribeResiliencyPolicy", + "resiliencehub:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/resource/resource-groups/aws_resourcegroups_resource.json b/src/mapping/aws/resource/resource-groups/aws_resourcegroups_resource.json new file mode 100644 index 00000000..48104d41 --- /dev/null +++ b/src/mapping/aws/resource/resource-groups/aws_resourcegroups_resource.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resource-groups:AssociateResource", + "resource-groups:DisassociateResource" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/route53-recovery-readiness/aws_route53recoverycontrolconfig_cluster.json b/src/mapping/aws/resource/route53-recovery-readiness/aws_route53recoverycontrolconfig_cluster.json index ce042d56..37a29942 100644 --- a/src/mapping/aws/resource/route53-recovery-readiness/aws_route53recoverycontrolconfig_cluster.json +++ b/src/mapping/aws/resource/route53-recovery-readiness/aws_route53recoverycontrolconfig_cluster.json @@ -16,7 +16,11 @@ "route53-recovery-control-config:DescribeCluster", "route53-recovery-control-config:DeleteCluster" ], - "modify": [], + "modify": [ + "route53-recovery-control-config:DescribeCluster", + "route53-recovery-control-config:ListTagsForResource", + "route53-recovery-control-config:UpdateCluster" + ], "plan": [ "route53-recovery-control-config:DescribeCluster", "route53-recovery-control-config:ListTagsForResource" diff --git a/src/mapping/aws/resource/route53/aws_route53_records_exclusive.json b/src/mapping/aws/resource/route53/aws_route53_records_exclusive.json new file mode 100644 index 00000000..5529d710 --- /dev/null +++ b/src/mapping/aws/resource/route53/aws_route53_records_exclusive.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "route53:ChangeResourceRecordSets" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/route53/aws_route53_zone.json b/src/mapping/aws/resource/route53/aws_route53_zone.json index 71542e4d..e541f209 100644 --- a/src/mapping/aws/resource/route53/aws_route53_zone.json +++ b/src/mapping/aws/resource/route53/aws_route53_zone.json @@ -5,7 +5,8 @@ "route53:GetChange", "route53:GetHostedZone", "route53:ListTagsForResource", - "route53:ListResourceRecordSets" + "route53:ListResourceRecordSets", + "route53:GetDNSSEC" ], "attributes": { "tags": [ @@ -17,7 +18,8 @@ ] }, "destroy": [ - "route53:DeleteHostedZone" + "route53:DeleteHostedZone", + "route53:GetDNSSEC" ], "modify": [ "route53:DeleteHostedZone", diff --git a/src/mapping/aws/resource/route53domains/aws_route53domains_delegation_signer_record.json b/src/mapping/aws/resource/route53domains/aws_route53domains_delegation_signer_record.json new file mode 100644 index 00000000..90ed32a2 --- /dev/null +++ b/src/mapping/aws/resource/route53domains/aws_route53domains_delegation_signer_record.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "route53domains:AssociateDelegationSignerToDomain", + "route53domains:DisassociateDelegationSignerFromDomain" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/route53domains/aws_route53domains_domain.json b/src/mapping/aws/resource/route53domains/aws_route53domains_domain.json new file mode 100644 index 00000000..20ac9c21 --- /dev/null +++ b/src/mapping/aws/resource/route53domains/aws_route53domains_domain.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "route53domains:DeleteDomain", + "route53domains:UpdateDomainContact", + "route53domains:RegisterDomain", + "route53domains:EnableDomainAutoRenew", + "route53domains:UpdateDomainContactPrivacy", + "route53domains:ListTagsForDomain", + "route53domains:GetDomainDetail" + ], + "attributes": { + "tags": [ + "route53domains:DeleteTagsForDomain", + "route53domains:UpdateTagsForDomain" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/route53domains/aws_route53domains_registered_domain.json b/src/mapping/aws/resource/route53domains/aws_route53domains_registered_domain.json new file mode 100644 index 00000000..bea105aa --- /dev/null +++ b/src/mapping/aws/resource/route53domains/aws_route53domains_registered_domain.json @@ -0,0 +1,21 @@ +[ + { + "apply": [ + "route53domains:UpdateDomainContact", + "route53domains:EnableDomainAutoRenew", + "route53domains:UpdateDomainContactPrivacy", + "route53domains:ListTagsForDomain", + "route53domains:GetDomainDetail", + "route53domains:ListTagsForDomain" + ], + "attributes": { + "tags": [ + "route53domains:DeleteTagsForDomain", + "route53domains:UpdateTagsForDomain" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/route53profiles/aws_route53profiles_association.json b/src/mapping/aws/resource/route53profiles/aws_route53profiles_association.json new file mode 100644 index 00000000..82537fdd --- /dev/null +++ b/src/mapping/aws/resource/route53profiles/aws_route53profiles_association.json @@ -0,0 +1,30 @@ +[ + { + "apply": [ + "route53profiles:AssociateProfile", + "route53profiles:GetProfileAssociation", + "ec2:DescribeVpcs", + "route53profiles:ListTagsForResource", + "route53profiles:DisassociateProfile" + ], + "attributes": { + "tags": [ + "route53profiles:TagResource", + "route53profiles:UntagResource" + ] + }, + "destroy": [ + "route53profiles:DisassociateProfile", + "route53profiles:GetProfileAssociation", + "route53profiles:ListTagsForResource" + ], + "modify": [ + "route53profiles:GetProfileAssociation", + "route53profiles:ListTagsForResource" + ], + "plan": [ + "route53profiles:GetProfileAssociation", + "route53profiles:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/resource/route53profiles/aws_route53profiles_profile.json b/src/mapping/aws/resource/route53profiles/aws_route53profiles_profile.json new file mode 100644 index 00000000..b3e8ee9c --- /dev/null +++ b/src/mapping/aws/resource/route53profiles/aws_route53profiles_profile.json @@ -0,0 +1,29 @@ +[ + { + "apply": [ + "route53profiles:CreateProfile", + "route53profiles:GetProfile", + "route53profiles:ListTagsForResource", + "route53profiles:DeleteProfile" + ], + "attributes": { + "tags": [ + "route53profiles:TagResource", + "route53profiles:UntagResource" + ] + }, + "destroy": [ + "route53profiles:DeleteProfile", + "route53profiles:GetProfile", + "route53profiles:ListTagsForResource" + ], + "modify": [ + "route53profiles:GetProfile", + "route53profiles:ListTagsForResource" + ], + "plan": [ + "route53profiles:GetProfile", + "route53profiles:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/resource/route53profiles/aws_route53profiles_resource_association.json b/src/mapping/aws/resource/route53profiles/aws_route53profiles_resource_association.json new file mode 100644 index 00000000..be9e744b --- /dev/null +++ b/src/mapping/aws/resource/route53profiles/aws_route53profiles_resource_association.json @@ -0,0 +1,24 @@ +[ + { + "apply": [ + "route53profiles:AssociateResourceToProfile", + "route53profiles:GetProfileResourceAssociation", + "route53profiles:UpdateProfileResourceAssociation", + "route53profiles:DisassociateResourceFromProfile" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "route53profiles:DisassociateResourceFromProfile", + "route53profiles:GetProfileResourceAssociation" + ], + "modify": [ + "route53profiles:UpdateProfileResourceAssociation", + "route53profiles:GetProfileResourceAssociation" + ], + "plan": [ + "route53profiles:GetProfileResourceAssociation" + ] + } +] diff --git a/src/mapping/aws/resource/route53resolver/aws_route53_resolver_query_log_config.json b/src/mapping/aws/resource/route53resolver/aws_route53_resolver_query_log_config.json index 47006653..97f044e3 100644 --- a/src/mapping/aws/resource/route53resolver/aws_route53_resolver_query_log_config.json +++ b/src/mapping/aws/resource/route53resolver/aws_route53_resolver_query_log_config.json @@ -15,12 +15,14 @@ "resolverquerylogging:GetConfig", "resolverquerylogging:ListConfig", "route53resolver:DeleteResolverQueryLogConfig", - "route53resolver:GetResolverQueryLogConfig" + "route53resolver:GetResolverQueryLogConfig", + "route53resolver:ListTagsForResource", + "route53resolver:ListResolverQueryLogConfigs" ], "attributes": { "tags": [ - "route53resolver:ListTagsForResource", - "route53resolver:TagResource" + "route53resolver:TagResource", + "route53resolver:UntagResource" ] }, "destroy": [ @@ -29,6 +31,11 @@ "resolverquerylogging:ListConfig" ], "modify": [], - "plan": [] + "plan": [ + "resolverquerylogging:GetConfig", + "route53resolver:GetResolverQueryLogConfig", + "route53resolver:ListTagsForResource", + "route53resolver:ListResolverQueryLogConfigs" + ] } ] diff --git a/src/mapping/aws/resource/rum/aws_rum_app_monitor.json b/src/mapping/aws/resource/rum/aws_rum_app_monitor.json index dc412e90..7c3f612c 100644 --- a/src/mapping/aws/resource/rum/aws_rum_app_monitor.json +++ b/src/mapping/aws/resource/rum/aws_rum_app_monitor.json @@ -21,6 +21,8 @@ "rum:BatchCreateRumMetricDefinitions", "rum:BatchDeleteRumMetricDefinitions", "rum:BatchGetRumMetricDefinitions", + "rum:GetResourcePolicy", + "rum:PutResourcePolicy", "rum:CreateAppMonitor", "rum:DeleteRumMetricsDestination", "rum:GetAppMonitor", @@ -56,7 +58,9 @@ "rum:DeleteRumMetricsDestination", "rum:BatchDeleteRumMetricDefinitions", "rum:ListRumMetricsDestinations", - "rum:BatchGetRumMetricDefinitions" + "rum:BatchGetRumMetricDefinitions", + "rum:GetResourcePolicy", + "rum:PutResourcePolicy" ], "modify": [ "rum:GetAppMonitor", @@ -87,7 +91,9 @@ "rum:BatchCreateRumMetricDefinitions", "rum:BatchDeleteRumMetricDefinitions", "rum:BatchGetRumMetricDefinitions", - "rum:UpdateRumMetricDefinition" + "rum:UpdateRumMetricDefinition", + "rum:GetResourcePolicy", + "rum:PutResourcePolicy" ], "plan": [ "rum:GetAppMonitor", @@ -97,7 +103,9 @@ "s3:GetObjectAcl", "rum:ListTagsForResource", "rum:ListRumMetricsDestinations", - "rum:BatchGetRumMetricDefinitions" + "rum:BatchGetRumMetricDefinitions", + "rum:GetResourcePolicy", + "rum:PutResourcePolicy" ] } ] diff --git a/src/mapping/aws/resource/rum/aws_rum_metrics_destination.json b/src/mapping/aws/resource/rum/aws_rum_metrics_destination.json new file mode 100644 index 00000000..b5bb702e --- /dev/null +++ b/src/mapping/aws/resource/rum/aws_rum_metrics_destination.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "rum:DeleteRumMetricsDestination", + "rum:PutRumMetricsDestination" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/s3-express/aws_s3_directory_bucket.json b/src/mapping/aws/resource/s3-express/aws_s3_directory_bucket.json new file mode 100644 index 00000000..b2e17215 --- /dev/null +++ b/src/mapping/aws/resource/s3-express/aws_s3_directory_bucket.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "s3express:DeleteBucket", + "s3express:CreateBucket" + ], + "attributes": {}, + "destroy": [ + "s3express:DeleteBucket" + ], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/s3-outposts/aws_s3control_access_grants_instance_resource_policy.json b/src/mapping/aws/resource/s3-outposts/aws_s3control_access_grants_instance_resource_policy.json new file mode 100644 index 00000000..1ee42eca --- /dev/null +++ b/src/mapping/aws/resource/s3-outposts/aws_s3control_access_grants_instance_resource_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "s3:DeleteAccessGrantsInstanceResourcePolicy", + "s3:PutAccessGrantsInstanceResourcePolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/s3-outposts/aws_s3control_bucket.json b/src/mapping/aws/resource/s3-outposts/aws_s3control_bucket.json new file mode 100644 index 00000000..d9afe132 --- /dev/null +++ b/src/mapping/aws/resource/s3-outposts/aws_s3control_bucket.json @@ -0,0 +1,23 @@ +[ + { + "apply": [ + "s3-outposts:DeleteBucket", + "s3-outposts:CreateBucket", + "s3-outposts:GetLifecycleConfiguration", + "s3-outposts:PutLifecycleConfiguration", + "s3-outposts:PutObjectAcl", + "s3-outposts:GetBucketPolicy", + "s3-outposts:GetBucketVersioning" + ], + "attributes": { + "tags": [ + "s3-outposts:GetBucketTagging", + "s3-outposts:PutBucketTagging" + ] + }, + "destroy": [ + "s3-outposts:DeleteBucket" + ], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/s3-outposts/aws_s3control_bucket_lifecycle_configuration.json b/src/mapping/aws/resource/s3-outposts/aws_s3control_bucket_lifecycle_configuration.json new file mode 100644 index 00000000..6ba6f4ce --- /dev/null +++ b/src/mapping/aws/resource/s3-outposts/aws_s3control_bucket_lifecycle_configuration.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "s3-outposts:PutReplicationConfiguration", + "s3-outposts:PutLifecycleConfiguration", + "s3-outposts:GetLifecycleConfiguration" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/s3-outposts/aws_s3control_bucket_policy.json b/src/mapping/aws/resource/s3-outposts/aws_s3control_bucket_policy.json new file mode 100644 index 00000000..c267f0d6 --- /dev/null +++ b/src/mapping/aws/resource/s3-outposts/aws_s3control_bucket_policy.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "s3-outposts:GetBucketPolicy", + "s3-outposts:DeleteBucketPolicy", + "s3-outposts:PutBucketPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/s3-outposts/aws_s3control_object_lambda_access_point.json b/src/mapping/aws/resource/s3-outposts/aws_s3control_object_lambda_access_point.json new file mode 100644 index 00000000..3f5ff17e --- /dev/null +++ b/src/mapping/aws/resource/s3-outposts/aws_s3control_object_lambda_access_point.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "s3-outposts:CreateAccessPoint", + "s3-outposts:DeleteAccessPoint", + "s3-outposts:GetAccessPoint" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/s3-outposts/aws_s3control_object_lambda_access_point_policy.json b/src/mapping/aws/resource/s3-outposts/aws_s3control_object_lambda_access_point_policy.json new file mode 100644 index 00000000..f4435fa5 --- /dev/null +++ b/src/mapping/aws/resource/s3-outposts/aws_s3control_object_lambda_access_point_policy.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "s3-outposts:GetAccessPointPolicy", + "s3-outposts:DeleteAccessPointPolicy", + "s3-outposts:PutAccessPointPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/s3/aws_s3_bucket_ownership_controls.json b/src/mapping/aws/resource/s3/aws_s3_bucket_ownership_controls.json index ba178a1a..c5e7395a 100644 --- a/src/mapping/aws/resource/s3/aws_s3_bucket_ownership_controls.json +++ b/src/mapping/aws/resource/s3/aws_s3_bucket_ownership_controls.json @@ -1,9 +1,8 @@ [ { "apply": [ - "s3:GetIntelligentTieringConfiguration", - "s3:PutIntelligentTieringConfiguration", - "ec2:DescribeAccountAttributes" + "s3:PutBucketOwnershipControls", + "s3:GetBucketOwnershipControls" ], "attributes": { "tags": [] diff --git a/src/mapping/aws/resource/s3/aws_s3_object_copy.json b/src/mapping/aws/resource/s3/aws_s3_object_copy.json new file mode 100644 index 00000000..6a13bfa2 --- /dev/null +++ b/src/mapping/aws/resource/s3/aws_s3_object_copy.json @@ -0,0 +1,24 @@ +[ + { + "apply": [ + "s3:PutObject", + "s3:GetObject", + "s3:GetObjectTagging", + "s3:ListBucketVersions", + "s3:DeleteObjectVersion" + ], + "attributes": { + "kms": [ + "kms:DescribeKey", + "kms:Encrypt" + ], + "tags": [] + }, + "destroy": [ + "s3:ListBucketVersions", + "s3:DeleteObjectVersion" + ], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/s3/aws_s3control_storage_lens_configuration.json b/src/mapping/aws/resource/s3/aws_s3control_storage_lens_configuration.json new file mode 100644 index 00000000..0fa0ee9c --- /dev/null +++ b/src/mapping/aws/resource/s3/aws_s3control_storage_lens_configuration.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "s3:GetStorageLensConfiguration", + "s3:PutStorageLensConfiguration" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/s3control/aws_s3control_directory_bucket_access_point_scope.json b/src/mapping/aws/resource/s3control/aws_s3control_directory_bucket_access_point_scope.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/aws/resource/s3control/aws_s3control_directory_bucket_access_point_scope.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/s3tables/aws_s3tables_namespace.json b/src/mapping/aws/resource/s3tables/aws_s3tables_namespace.json new file mode 100644 index 00000000..c9db6939 --- /dev/null +++ b/src/mapping/aws/resource/s3tables/aws_s3tables_namespace.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "s3tables:CreateNamespace", + "s3tables:GetNamespace", + "s3tables:DeleteNamespace" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "s3tables:DeleteNamespace" + ], + "modify": [], + "plan": [ + "s3tables:GetNamespace" + ] + } +] diff --git a/src/mapping/aws/resource/s3tables/aws_s3tables_table.json b/src/mapping/aws/resource/s3tables/aws_s3tables_table.json new file mode 100644 index 00000000..090ef6cb --- /dev/null +++ b/src/mapping/aws/resource/s3tables/aws_s3tables_table.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "s3tables:GetTable", + "s3tables:CreateTable", + "s3tables:DeleteTable" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "s3tables:DeleteTable" + ], + "modify": [], + "plan": [ + "s3tables:GetTable" + ] + } +] diff --git a/src/mapping/aws/resource/s3tables/aws_s3tables_table_bucket.json b/src/mapping/aws/resource/s3tables/aws_s3tables_table_bucket.json new file mode 100644 index 00000000..f8ef7441 --- /dev/null +++ b/src/mapping/aws/resource/s3tables/aws_s3tables_table_bucket.json @@ -0,0 +1,33 @@ +[ + { + "apply": [ + "s3tables:CreateTableBucket", + "s3tables:PutTableBucketMaintenanceConfiguration", + "s3tables:PutTableBucketEncryption", + "s3tables:GetTableBucket", + "s3tables:GetTableBucketMaintenanceConfiguration", + "s3tables:GetTableBucketEncryption", + "kms:DescribeKey", + "s3tables:DeleteTableBucket" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "s3tables:DeleteTableBucket" + ], + "modify": [ + "s3tables:PutTableBucketMaintenanceConfiguration", + "s3tables:PutTableBucketEncryption", + "s3tables:GetTableBucketMaintenanceConfiguration", + "s3tables:GetTableBucketEncryption", + "s3tables:GetTableBucket", + "kms:DescribeKey" + ], + "plan": [ + "s3tables:GetTableBucket", + "s3tables:GetTableBucketMaintenanceConfiguration", + "s3tables:GetTableBucketEncryption" + ] + } +] diff --git a/src/mapping/aws/resource/s3tables/aws_s3tables_table_bucket_policy.json b/src/mapping/aws/resource/s3tables/aws_s3tables_table_bucket_policy.json new file mode 100644 index 00000000..5856b55c --- /dev/null +++ b/src/mapping/aws/resource/s3tables/aws_s3tables_table_bucket_policy.json @@ -0,0 +1,24 @@ +[ + { + "apply": [ + "s3tables:GetTableBucket", + "s3tables:GetTableBucketPolicy", + "s3tables:PutTableBucketPolicy", + "s3tables:DeleteTableBucketPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "s3tables:GetTableBucketPolicy", + "s3tables:DeleteTableBucketPolicy" + ], + "modify": [ + "s3tables:GetTableBucketPolicy", + "s3tables:PutTableBucketPolicy" + ], + "plan": [ + "s3tables:GetTableBucketPolicy" + ] + } +] diff --git a/src/mapping/aws/resource/s3tables/aws_s3tables_table_policy.json b/src/mapping/aws/resource/s3tables/aws_s3tables_table_policy.json new file mode 100644 index 00000000..943cf84f --- /dev/null +++ b/src/mapping/aws/resource/s3tables/aws_s3tables_table_policy.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "s3tables:GetTablePolicy", + "s3tables:DeleteTablePolicy", + "s3tables:PutTablePolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "s3tables:DeleteTablePolicy" + ], + "modify": [], + "plan": [ + "s3tables:GetTablePolicy" + ] + } +] diff --git a/src/mapping/aws/resource/sagemaker/aws_sagemaker_data_quality_job_definition.json b/src/mapping/aws/resource/sagemaker/aws_sagemaker_data_quality_job_definition.json index 278b7af3..affd4be4 100644 --- a/src/mapping/aws/resource/sagemaker/aws_sagemaker_data_quality_job_definition.json +++ b/src/mapping/aws/resource/sagemaker/aws_sagemaker_data_quality_job_definition.json @@ -5,7 +5,8 @@ "sagemaker:DescribeDataQualityJobDefinition", "sagemaker:DeleteDataQualityJobDefinition", "sagemaker:UpdateDataQualityJobDefinition", - "iam:PassRole" + "iam:PassRole", + "sagemaker:ListTags" ], "attributes": { "tags": [ @@ -13,8 +14,13 @@ "sagemaker:DeleteTags" ] }, - "destroy": [], + "destroy": [ + "sagemaker:DeleteDataQualityJobDefinition" + ], "modify": [], - "plan": [] + "plan": [ + "sagemaker:DescribeDataQualityJobDefinition", + "sagemaker:ListTags" + ] } ] diff --git a/src/mapping/aws/resource/sagemaker/aws_sagemaker_flow_definition.json b/src/mapping/aws/resource/sagemaker/aws_sagemaker_flow_definition.json new file mode 100644 index 00000000..3a3c9608 --- /dev/null +++ b/src/mapping/aws/resource/sagemaker/aws_sagemaker_flow_definition.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "sagemaker:DescribeFlowDefinition", + "sagemaker:CreateFlowDefinition", + "sagemaker:DeleteFlowDefinition", + "sagemaker:ListTags" + ], + "attributes": { + "tags": [ + "sagemaker:AddTags", + "sagemaker:DeleteTags" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/sagemaker/aws_sagemaker_hub.json b/src/mapping/aws/resource/sagemaker/aws_sagemaker_hub.json new file mode 100644 index 00000000..5f8f427f --- /dev/null +++ b/src/mapping/aws/resource/sagemaker/aws_sagemaker_hub.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "sagemaker:DescribeHub", + "sagemaker:CreateHub", + "sagemaker:DeleteHub", + "sagemaker:UpdateHub", + "sagemaker:ListTags" + ], + "attributes": { + "tags": [ + "sagemaker:AddTags", + "sagemaker:DeleteTags" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/sagemaker/aws_sagemaker_mlflow_tracking_server.json b/src/mapping/aws/resource/sagemaker/aws_sagemaker_mlflow_tracking_server.json new file mode 100644 index 00000000..52ce40f9 --- /dev/null +++ b/src/mapping/aws/resource/sagemaker/aws_sagemaker_mlflow_tracking_server.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "sagemaker:DescribeMlflowTrackingServer", + "sagemaker:CreateMlflowTrackingServer", + "sagemaker:DeleteMlflowTrackingServer", + "sagemaker:UpdateMlflowTrackingServer", + "sagemaker:ListTags" + ], + "attributes": { + "tags": [ + "sagemaker:AddTags", + "sagemaker:DeleteTags" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/securityhub/aws_securityhub_account.json b/src/mapping/aws/resource/securityhub/aws_securityhub_account.json new file mode 100644 index 00000000..1e17a556 --- /dev/null +++ b/src/mapping/aws/resource/securityhub/aws_securityhub_account.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "securityhub:EnableSecurityHub", + "securityhub:UpdateSecurityHubConfiguration", + "securityhub:DescribeHub", + "securityhub:DisableSecurityHub" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/securityhub/aws_securityhub_action_target.json b/src/mapping/aws/resource/securityhub/aws_securityhub_action_target.json new file mode 100644 index 00000000..9cfb9e59 --- /dev/null +++ b/src/mapping/aws/resource/securityhub/aws_securityhub_action_target.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "securityhub:DescribeActionTargets", + "securityhub:CreateActionTarget", + "securityhub:DeleteActionTarget", + "securityhub:UpdateActionTarget" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "securityhub:DeleteActionTarget" + ], + "modify": [ + "securityhub:UpdateActionTarget" + ], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/securityhub/aws_securityhub_configuration_policy_association.json b/src/mapping/aws/resource/securityhub/aws_securityhub_configuration_policy_association.json new file mode 100644 index 00000000..0c1ef525 --- /dev/null +++ b/src/mapping/aws/resource/securityhub/aws_securityhub_configuration_policy_association.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securityhub:GetConfigurationPolicyAssociation", + "securityhub:StartConfigurationPolicyAssociation" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/securityhub/aws_securityhub_invite_accepter.json b/src/mapping/aws/resource/securityhub/aws_securityhub_invite_accepter.json new file mode 100644 index 00000000..7de86d3b --- /dev/null +++ b/src/mapping/aws/resource/securityhub/aws_securityhub_invite_accepter.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "securityhub:AcceptInvitation" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/securityhub/aws_securityhub_member.json b/src/mapping/aws/resource/securityhub/aws_securityhub_member.json new file mode 100644 index 00000000..6a1532fb --- /dev/null +++ b/src/mapping/aws/resource/securityhub/aws_securityhub_member.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "securityhub:GetMembers", + "securityhub:CreateMembers", + "securityhub:DeleteMembers" + ], + "attributes": { + "invite": [ + "securityhub:InviteMembers" + ], + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/securityhub/aws_securityhub_organization_admin_account.json b/src/mapping/aws/resource/securityhub/aws_securityhub_organization_admin_account.json new file mode 100644 index 00000000..98d569b2 --- /dev/null +++ b/src/mapping/aws/resource/securityhub/aws_securityhub_organization_admin_account.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securityhub:DisableOrganizationAdminAccount", + "securityhub:EnableOrganizationAdminAccount" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/securityhub/aws_securityhub_standards_control_association.json b/src/mapping/aws/resource/securityhub/aws_securityhub_standards_control_association.json new file mode 100644 index 00000000..bf9438c6 --- /dev/null +++ b/src/mapping/aws/resource/securityhub/aws_securityhub_standards_control_association.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securityhub:DescribeStandardsControls", + "securityhub:UpdateStandardsControl" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/securityhub/aws_securityhub_standards_subscription.json b/src/mapping/aws/resource/securityhub/aws_securityhub_standards_subscription.json new file mode 100644 index 00000000..f2f759e5 --- /dev/null +++ b/src/mapping/aws/resource/securityhub/aws_securityhub_standards_subscription.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securityhub:BatchEnableStandards", + "securityhub:BatchDisableStandards" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/securitylake/aws_securitylake_custom_log_source.json b/src/mapping/aws/resource/securitylake/aws_securitylake_custom_log_source.json new file mode 100644 index 00000000..eadb78cf --- /dev/null +++ b/src/mapping/aws/resource/securitylake/aws_securitylake_custom_log_source.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securitylake:CreateCustomLogSource", + "securitylake:DeleteCustomLogSource" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/serverlessrepo/aws_serverlessapplicationrepository_cloudformation_stack.json b/src/mapping/aws/resource/serverlessrepo/aws_serverlessapplicationrepository_cloudformation_stack.json new file mode 100644 index 00000000..51cc00bf --- /dev/null +++ b/src/mapping/aws/resource/serverlessrepo/aws_serverlessapplicationrepository_cloudformation_stack.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "serverlessrepo:GetCloudFormationTemplate", + "serverlessrepo:CreateCloudFormationTemplate" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/servicecatalog/aws_servicecatalog_provisioning_artifact.json b/src/mapping/aws/resource/servicecatalog/aws_servicecatalog_provisioning_artifact.json index 47ee04c3..932b5543 100644 --- a/src/mapping/aws/resource/servicecatalog/aws_servicecatalog_provisioning_artifact.json +++ b/src/mapping/aws/resource/servicecatalog/aws_servicecatalog_provisioning_artifact.json @@ -1,10 +1,10 @@ [ { "apply": [ + "servicecatalog:DescribeProvisioningArtifact", "servicecatalog:CreateProvisioningArtifact", "servicecatalog:DeleteProvisioningArtifact", - "servicecatalog:UpdateProvisioningArtifact", - "servicecatalog:DescribeProvisioningArtifact" + "servicecatalog:UpdateProvisioningArtifact" ], "attributes": { "tags": [] diff --git a/src/mapping/aws/resource/servicecatalog/aws_servicecatalogappregistry_attribute_group.json b/src/mapping/aws/resource/servicecatalog/aws_servicecatalogappregistry_attribute_group.json new file mode 100644 index 00000000..42f5e342 --- /dev/null +++ b/src/mapping/aws/resource/servicecatalog/aws_servicecatalogappregistry_attribute_group.json @@ -0,0 +1,28 @@ +[ + { + "apply": [ + "servicecatalog:CreateAttributeGroup", + "servicecatalog:DeleteAttributeGroup", + "servicecatalog:GetAttributeGroup", + "servicecatalog:UpdateAttributeGroup", + "servicecatalog:ListTagsForResource" + ], + "attributes": { + "tags": [ + "servicecatalog:TagResource", + "servicecatalog:UntagResource" + ] + }, + "destroy": [ + "servicecatalog:DeleteAttributeGroup" + ], + "modify": [ + "servicecatalog:GetAttributeGroup", + "servicecatalog:UpdateAttributeGroup", + "servicecatalog:ListTagsForResource" + ], + "plan": [ + "servicecatalog:GetAttributeGroup" + ] + } +] diff --git a/src/mapping/aws/resource/servicecatalog/aws_servicecatalogappregistry_attribute_group_association.json b/src/mapping/aws/resource/servicecatalog/aws_servicecatalogappregistry_attribute_group_association.json new file mode 100644 index 00000000..a1089bb4 --- /dev/null +++ b/src/mapping/aws/resource/servicecatalog/aws_servicecatalogappregistry_attribute_group_association.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "servicecatalog:AssociateAttributeGroup", + "servicecatalog:DisassociateAttributeGroup", + "servicecatalog:ListAttributeGroupsForApplication" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "servicecatalog:DisassociateAttributeGroup" + ], + "modify": [], + "plan": [ + "servicecatalog:ListAttributeGroupsForApplication" + ] + } +] diff --git a/src/mapping/aws/resource/servicediscovery/aws_service_discovery_http_namespace.json b/src/mapping/aws/resource/servicediscovery/aws_service_discovery_http_namespace.json new file mode 100644 index 00000000..ff729645 --- /dev/null +++ b/src/mapping/aws/resource/servicediscovery/aws_service_discovery_http_namespace.json @@ -0,0 +1,21 @@ +[ + { + "apply": [ + "servicediscovery:GetNamespace", + "servicediscovery:CreateHttpNamespace", + "servicediscovery:DeleteNamespace", + "servicediscovery:UpdateHttpNamespace", + "servicediscovery:ListTagsForResource", + "servicediscovery:GetOperation" + ], + "attributes": { + "tags": [ + "servicediscovery:TagResource", + "servicediscovery:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/servicediscovery/aws_service_discovery_instance.json b/src/mapping/aws/resource/servicediscovery/aws_service_discovery_instance.json new file mode 100644 index 00000000..44ce5c7c --- /dev/null +++ b/src/mapping/aws/resource/servicediscovery/aws_service_discovery_instance.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "servicediscovery:GetInstance", + "servicediscovery:DeregisterInstance", + "servicediscovery:RegisterInstance" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/servicediscovery/aws_service_discovery_private_dns_namespace.json b/src/mapping/aws/resource/servicediscovery/aws_service_discovery_private_dns_namespace.json new file mode 100644 index 00000000..74e05c72 --- /dev/null +++ b/src/mapping/aws/resource/servicediscovery/aws_service_discovery_private_dns_namespace.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "servicediscovery:CreatePrivateDnsNamespace", + "servicediscovery:UpdatePrivateDnsNamespace", + "servicediscovery:ListTagsForResource" + ], + "attributes": { + "tags": [ + "servicediscovery:TagResource", + "servicediscovery:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/servicediscovery/aws_service_discovery_public_dns_namespace.json b/src/mapping/aws/resource/servicediscovery/aws_service_discovery_public_dns_namespace.json new file mode 100644 index 00000000..7e52e0a5 --- /dev/null +++ b/src/mapping/aws/resource/servicediscovery/aws_service_discovery_public_dns_namespace.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "servicediscovery:CreatePublicDnsNamespace", + "servicediscovery:UpdatePublicDnsNamespace", + "servicediscovery:ListTagsForResource" + ], + "attributes": { + "tags": [ + "servicediscovery:TagResource", + "servicediscovery:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/servicediscovery/aws_service_discovery_service.json b/src/mapping/aws/resource/servicediscovery/aws_service_discovery_service.json new file mode 100644 index 00000000..bb8fa027 --- /dev/null +++ b/src/mapping/aws/resource/servicediscovery/aws_service_discovery_service.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "servicediscovery:ListTagsForResource", + "servicediscovery:GetService", + "servicediscovery:CreateService", + "servicediscovery:DeleteService", + "servicediscovery:UpdateService" + ], + "attributes": { + "tags": [ + "servicediscovery:TagResource", + "servicediscovery:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ses/aws_sesv2_account_suppression_attributes.json b/src/mapping/aws/resource/ses/aws_sesv2_account_suppression_attributes.json new file mode 100644 index 00000000..280d31f0 --- /dev/null +++ b/src/mapping/aws/resource/ses/aws_sesv2_account_suppression_attributes.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "ses:PutAccountSuppressionAttributes" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ses/aws_sesv2_account_vdm_attributes.json b/src/mapping/aws/resource/ses/aws_sesv2_account_vdm_attributes.json new file mode 100644 index 00000000..27882710 --- /dev/null +++ b/src/mapping/aws/resource/ses/aws_sesv2_account_vdm_attributes.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "ses:PutAccountVdmAttributes" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ses/aws_sesv2_configuration_set.json b/src/mapping/aws/resource/ses/aws_sesv2_configuration_set.json new file mode 100644 index 00000000..d4789e41 --- /dev/null +++ b/src/mapping/aws/resource/ses/aws_sesv2_configuration_set.json @@ -0,0 +1,34 @@ +[ + { + "apply": [ + "ses:CreateConfigurationSet", + "ses:GetConfigurationSet", + "ses:DescribeConfigurationSet", + "ses:DeleteConfigurationSet", + "ses:PutConfigurationSetTrackingOptions", + "ses:PutConfigurationSetDeliveryOptions", + "ses:PutConfigurationSetReputationOptions", + "ses:PutConfigurationSetSendingOptions", + "ses:PutConfigurationSetSuppressionOptions", + "ses:PutConfigurationSetVdmOptions" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "ses:DeleteConfigurationSet" + ], + "modify": [ + "ses:PutConfigurationSetTrackingOptions", + "ses:PutConfigurationSetDeliveryOptions", + "ses:PutConfigurationSetReputationOptions", + "ses:PutConfigurationSetSendingOptions", + "ses:PutConfigurationSetSuppressionOptions", + "ses:PutConfigurationSetVdmOptions" + ], + "plan": [ + "ses:GetConfigurationSet", + "ses:DescribeConfigurationSet" + ] + } +] diff --git a/src/mapping/aws/resource/ses/aws_sesv2_configuration_set_event_destination.json b/src/mapping/aws/resource/ses/aws_sesv2_configuration_set_event_destination.json new file mode 100644 index 00000000..57d94afb --- /dev/null +++ b/src/mapping/aws/resource/ses/aws_sesv2_configuration_set_event_destination.json @@ -0,0 +1,25 @@ +[ + { + "apply": [ + "ses:CreateConfigurationSetEventDestination", + "ses:GetConfigurationSetEventDestinations", + "ses:DescribeConfigurationSet", + "ses:DeleteConfigurationSetEventDestination", + "ses:UpdateConfigurationSetEventDestination" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "ses:DeleteConfigurationSetEventDestination" + ], + "modify": [ + "ses:UpdateConfigurationSetEventDestination", + "ses:GetConfigurationSetEventDestinations" + ], + "plan": [ + "ses:GetConfigurationSetEventDestinations", + "ses:DescribeConfigurationSet" + ] + } +] diff --git a/src/mapping/aws/resource/ses/aws_sesv2_contact_list.json b/src/mapping/aws/resource/ses/aws_sesv2_contact_list.json new file mode 100644 index 00000000..aa1c9dbd --- /dev/null +++ b/src/mapping/aws/resource/ses/aws_sesv2_contact_list.json @@ -0,0 +1,24 @@ +[ + { + "apply": [ + "ses:CreateContactList", + "ses:DeleteContactList", + "ses:UpdateContactList" + ], + "attributes": { + "tags": [ + "ses:UntagResource", + "ses:TagResource" + ] + }, + "destroy": [ + "ses:DeleteContactList" + ], + "modify": [ + "ses:UpdateContactList" + ], + "plan": [ + "ses:GetContactList" + ] + } +] diff --git a/src/mapping/aws/resource/ses/aws_sesv2_dedicated_ip_assignment.json b/src/mapping/aws/resource/ses/aws_sesv2_dedicated_ip_assignment.json new file mode 100644 index 00000000..3b4e9804 --- /dev/null +++ b/src/mapping/aws/resource/ses/aws_sesv2_dedicated_ip_assignment.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "ses:PutDedicatedIpInPool" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ses/aws_sesv2_dedicated_ip_pool.json b/src/mapping/aws/resource/ses/aws_sesv2_dedicated_ip_pool.json new file mode 100644 index 00000000..1720587e --- /dev/null +++ b/src/mapping/aws/resource/ses/aws_sesv2_dedicated_ip_pool.json @@ -0,0 +1,25 @@ +[ + { + "apply": [ + "ses:CreateDedicatedIpPool", + "ses:GetDedicatedIpPool", + "ses:GetDedicatedIps", + "ses:DeleteDedicatedIpPool", + "ses:PutDedicatedIpPoolScalingAttributes" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "ses:DeleteDedicatedIpPool" + ], + "modify": [ + "ses:PutDedicatedIpPoolScalingAttributes", + "ses:GetDedicatedIpPool" + ], + "plan": [ + "ses:GetDedicatedIpPool", + "ses:GetDedicatedIps" + ] + } +] diff --git a/src/mapping/aws/resource/ses/aws_sesv2_email_identity.json b/src/mapping/aws/resource/ses/aws_sesv2_email_identity.json new file mode 100644 index 00000000..d31ba6a3 --- /dev/null +++ b/src/mapping/aws/resource/ses/aws_sesv2_email_identity.json @@ -0,0 +1,31 @@ +[ + { + "apply": [ + "ses:CreateEmailIdentity", + "ses:PutEmailIdentityMailFromAttributes", + "ses:PutEmailIdentityFeedbackAttributes", + "ses:PutEmailIdentityDkimAttributes", + "ses:GetEmailIdentity", + "ses:DeleteEmailIdentity", + "ses:PutEmailIdentityConfigurationSetAttributes", + "ses:PutEmailIdentityDkimSigningAttributes" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "ses:DeleteEmailIdentity" + ], + "modify": [ + "ses:PutEmailIdentityMailFromAttributes", + "ses:PutEmailIdentityFeedbackAttributes", + "ses:PutEmailIdentityConfigurationSetAttributes", + "ses:PutEmailIdentityDkimSigningAttributes", + "ses:PutEmailIdentityDkimAttributes", + "ses:GetEmailIdentity" + ], + "plan": [ + "ses:GetEmailIdentity" + ] + } +] diff --git a/src/mapping/aws/resource/ses/aws_sesv2_email_identity_feedback_attributes.json b/src/mapping/aws/resource/ses/aws_sesv2_email_identity_feedback_attributes.json new file mode 100644 index 00000000..710556fd --- /dev/null +++ b/src/mapping/aws/resource/ses/aws_sesv2_email_identity_feedback_attributes.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "ses:PutEmailIdentityFeedbackAttributes" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ses/aws_sesv2_email_identity_mail_from_attributes.json b/src/mapping/aws/resource/ses/aws_sesv2_email_identity_mail_from_attributes.json new file mode 100644 index 00000000..a8ccd7c0 --- /dev/null +++ b/src/mapping/aws/resource/ses/aws_sesv2_email_identity_mail_from_attributes.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "ses:PutEmailIdentityMailFromAttributes" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ses/aws_sesv2_email_identity_policy.json b/src/mapping/aws/resource/ses/aws_sesv2_email_identity_policy.json new file mode 100644 index 00000000..2df49b8b --- /dev/null +++ b/src/mapping/aws/resource/ses/aws_sesv2_email_identity_policy.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ses:CreateEmailIdentityPolicy", + "ses:DeleteEmailIdentityPolicy", + "ses:UpdateEmailIdentityPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/shield/aws_shield_application_layer_automatic_response.json b/src/mapping/aws/resource/shield/aws_shield_application_layer_automatic_response.json new file mode 100644 index 00000000..7c2679d3 --- /dev/null +++ b/src/mapping/aws/resource/shield/aws_shield_application_layer_automatic_response.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "shield:DisableApplicationLayerAutomaticResponse", + "shield:EnableApplicationLayerAutomaticResponse", + "shield:UpdateApplicationLayerAutomaticResponse" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/shield/aws_shield_drt_access_log_bucket_association.json b/src/mapping/aws/resource/shield/aws_shield_drt_access_log_bucket_association.json new file mode 100644 index 00000000..89677586 --- /dev/null +++ b/src/mapping/aws/resource/shield/aws_shield_drt_access_log_bucket_association.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "shield:AssociateDRTLogBucket", + "shield:DisassociateDRTLogBucket" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/shield/aws_shield_drt_access_role_arn_association.json b/src/mapping/aws/resource/shield/aws_shield_drt_access_role_arn_association.json new file mode 100644 index 00000000..5cf0a44c --- /dev/null +++ b/src/mapping/aws/resource/shield/aws_shield_drt_access_role_arn_association.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "shield:AssociateDRTRole", + "shield:DisassociateDRTRole" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/shield/aws_shield_protection_health_check_association.json b/src/mapping/aws/resource/shield/aws_shield_protection_health_check_association.json new file mode 100644 index 00000000..2d79810d --- /dev/null +++ b/src/mapping/aws/resource/shield/aws_shield_protection_health_check_association.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "shield:AssociateHealthCheck", + "shield:DisassociateHealthCheck" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/shield/aws_shield_subscription.json b/src/mapping/aws/resource/shield/aws_shield_subscription.json new file mode 100644 index 00000000..6306baaf --- /dev/null +++ b/src/mapping/aws/resource/shield/aws_shield_subscription.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "shield:DescribeSubscription", + "shield:CreateSubscription", + "shield:DeleteSubscription", + "shield:UpdateSubscription" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/sms-voice/aws_pinpointsmsvoicev2_configuration_set.json b/src/mapping/aws/resource/sms-voice/aws_pinpointsmsvoicev2_configuration_set.json new file mode 100644 index 00000000..c528cb8e --- /dev/null +++ b/src/mapping/aws/resource/sms-voice/aws_pinpointsmsvoicev2_configuration_set.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "sms-voice:CreateConfigurationSet", + "sms-voice:DescribeConfigurationSets", + "sms-voice:DeleteConfigurationSet", + "sms-voice:ListTagsForResource" + ], + "attributes": { + "tags": [ + "sms-voice:TagResource", + "sms-voice:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/sms-voice/aws_pinpointsmsvoicev2_opt_out_list.json b/src/mapping/aws/resource/sms-voice/aws_pinpointsmsvoicev2_opt_out_list.json new file mode 100644 index 00000000..6e6aa49d --- /dev/null +++ b/src/mapping/aws/resource/sms-voice/aws_pinpointsmsvoicev2_opt_out_list.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "sms-voice:CreateOptOutList", + "sms-voice:DescribeOptOutLists", + "sms-voice:DeleteOptOutList", + "sms-voice:ListTagsForResource" + ], + "attributes": { + "tags": [ + "sms-voice:TagResource", + "sms-voice:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/sms-voice/aws_pinpointsmsvoicev2_phone_number.json b/src/mapping/aws/resource/sms-voice/aws_pinpointsmsvoicev2_phone_number.json new file mode 100644 index 00000000..f04bb96e --- /dev/null +++ b/src/mapping/aws/resource/sms-voice/aws_pinpointsmsvoicev2_phone_number.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "sms-voice:ListTagsForResource", + "sms-voice:DescribePhoneNumbers", + "sms-voice:RequestPhoneNumber", + "sms-voice:UpdatePhoneNumber", + "sms-voice:ReleasePhoneNumber" + ], + "attributes": { + "tags": [ + "sms-voice:TagResource", + "sms-voice:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ssm-quicksetup/aws_ssmquicksetup_configuration_manager.json b/src/mapping/aws/resource/ssm-quicksetup/aws_ssmquicksetup_configuration_manager.json new file mode 100644 index 00000000..fadb65b7 --- /dev/null +++ b/src/mapping/aws/resource/ssm-quicksetup/aws_ssmquicksetup_configuration_manager.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "ssm-quicksetup:CreateConfigurationManager", + "ssm-quicksetup:DeleteConfigurationManager", + "ssm-quicksetup:GetConfigurationManager", + "ssm-quicksetup:UpdateConfigurationManager" + ], + "attributes": { + "tags": [ + "ssm-quicksetup:TagResource", + "ssm-quicksetup:UntagResource" + ] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ssm/aws_ssm_activation.json b/src/mapping/aws/resource/ssm/aws_ssm_activation.json new file mode 100644 index 00000000..3be45ca8 --- /dev/null +++ b/src/mapping/aws/resource/ssm/aws_ssm_activation.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ssm:DescribeActivations", + "ssm:CreateActivation", + "ssm:DeleteActivation" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ssm/aws_ssm_default_patch_baseline.json b/src/mapping/aws/resource/ssm/aws_ssm_default_patch_baseline.json new file mode 100644 index 00000000..13c33133 --- /dev/null +++ b/src/mapping/aws/resource/ssm/aws_ssm_default_patch_baseline.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "ssm:GetDefaultPatchBaseline", + "ssm:RegisterDefaultPatchBaseline" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/ssm/aws_ssm_service_setting.json b/src/mapping/aws/resource/ssm/aws_ssm_service_setting.json new file mode 100644 index 00000000..0786fd0c --- /dev/null +++ b/src/mapping/aws/resource/ssm/aws_ssm_service_setting.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "ssm:GetServiceSetting", + "ssm:ResetServiceSetting", + "ssm:UpdateServiceSetting" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/sso/aws_ssoadmin_account_assignment.json b/src/mapping/aws/resource/sso/aws_ssoadmin_account_assignment.json new file mode 100644 index 00000000..2e2f10e7 --- /dev/null +++ b/src/mapping/aws/resource/sso/aws_ssoadmin_account_assignment.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "sso:CreateAccountAssignment", + "sso:DeleteAccountAssignment" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/sso/aws_ssoadmin_application.json b/src/mapping/aws/resource/sso/aws_ssoadmin_application.json index 190b96b2..76ff0220 100644 --- a/src/mapping/aws/resource/sso/aws_ssoadmin_application.json +++ b/src/mapping/aws/resource/sso/aws_ssoadmin_application.json @@ -3,7 +3,8 @@ "apply": [ "sso:CreateApplication", "sso:DescribeApplication", - "sso:DeleteApplication" + "sso:DeleteApplication", + "sso:ListTagsForResource" ], "attributes": { "tags": [ @@ -24,4 +25,4 @@ "sso:ListTagsForResource" ] } -] +] diff --git a/src/mapping/aws/resource/sso/aws_ssoadmin_application_access_scope.json b/src/mapping/aws/resource/sso/aws_ssoadmin_application_access_scope.json new file mode 100644 index 00000000..5d9efe83 --- /dev/null +++ b/src/mapping/aws/resource/sso/aws_ssoadmin_application_access_scope.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "sso:GetApplicationAccessScope", + "sso:DeleteApplicationAccessScope", + "sso:PutApplicationAccessScope" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/sso/aws_ssoadmin_application_assignment_configuration.json b/src/mapping/aws/resource/sso/aws_ssoadmin_application_assignment_configuration.json new file mode 100644 index 00000000..8c6636b4 --- /dev/null +++ b/src/mapping/aws/resource/sso/aws_ssoadmin_application_assignment_configuration.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "sso:GetApplicationAssignmentConfiguration", + "sso:PutApplicationAssignmentConfiguration" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/sso/aws_ssoadmin_customer_managed_policy_attachment.json b/src/mapping/aws/resource/sso/aws_ssoadmin_customer_managed_policy_attachment.json new file mode 100644 index 00000000..615a74c2 --- /dev/null +++ b/src/mapping/aws/resource/sso/aws_ssoadmin_customer_managed_policy_attachment.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "sso:DetachCustomerManagedPolicyReferenceFromPermissionSet", + "sso:AttachCustomerManagedPolicyReferenceToPermissionSet" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/sso/aws_ssoadmin_instance_access_control_attributes.json b/src/mapping/aws/resource/sso/aws_ssoadmin_instance_access_control_attributes.json new file mode 100644 index 00000000..1c0afd6e --- /dev/null +++ b/src/mapping/aws/resource/sso/aws_ssoadmin_instance_access_control_attributes.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "sso:DescribeInstanceAccessControlAttributeConfiguration", + "sso:CreateInstanceAccessControlAttributeConfiguration", + "sso:DeleteInstanceAccessControlAttributeConfiguration", + "sso:UpdateInstanceAccessControlAttributeConfiguration" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/sso/aws_ssoadmin_managed_policy_attachment.json b/src/mapping/aws/resource/sso/aws_ssoadmin_managed_policy_attachment.json new file mode 100644 index 00000000..fc9c690a --- /dev/null +++ b/src/mapping/aws/resource/sso/aws_ssoadmin_managed_policy_attachment.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "sso:AttachManagedPolicyToPermissionSet" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/sso/aws_ssoadmin_permission_set_inline_policy.json b/src/mapping/aws/resource/sso/aws_ssoadmin_permission_set_inline_policy.json new file mode 100644 index 00000000..f5b0b459 --- /dev/null +++ b/src/mapping/aws/resource/sso/aws_ssoadmin_permission_set_inline_policy.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "sso:GetInlinePolicyForPermissionSet", + "sso:DeleteInlinePolicyFromPermissionSet", + "sso:PutInlinePolicyToPermissionSet" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/sso/aws_ssoadmin_permissions_boundary_attachment.json b/src/mapping/aws/resource/sso/aws_ssoadmin_permissions_boundary_attachment.json new file mode 100644 index 00000000..560b1a9d --- /dev/null +++ b/src/mapping/aws/resource/sso/aws_ssoadmin_permissions_boundary_attachment.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "sso:PutPermissionsBoundaryToPermissionSet", + "sso:DeletePermissionsBoundaryFromPermissionSet", + "sso:GetPermissionsBoundaryForPermissionSet" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/sso/aws_ssoadmin_trusted_token_issuer.json b/src/mapping/aws/resource/sso/aws_ssoadmin_trusted_token_issuer.json new file mode 100644 index 00000000..81c01e9d --- /dev/null +++ b/src/mapping/aws/resource/sso/aws_ssoadmin_trusted_token_issuer.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "sso:DescribeTrustedTokenIssuer", + "sso:UpdateTrustedTokenIssuer", + "sso:DeleteTrustedTokenIssuer", + "sso:CreateTrustedTokenIssuer" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/template.json b/src/mapping/aws/resource/template.json index c22551cc..45e4fdaf 100644 --- a/src/mapping/aws/resource/template.json +++ b/src/mapping/aws/resource/template.json @@ -1,11 +1,11 @@ -[ - { - "apply": [], - "attributes": { - "tags": [] - }, - "destroy": [], - "modify": [], - "plan": [] - } -] +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/timestream/aws_timestreamquery_scheduled_query.json b/src/mapping/aws/resource/timestream/aws_timestreamquery_scheduled_query.json new file mode 100644 index 00000000..73389403 --- /dev/null +++ b/src/mapping/aws/resource/timestream/aws_timestreamquery_scheduled_query.json @@ -0,0 +1,31 @@ +[ + { + "apply": [ + "timestream:CreateScheduledQuery", + "timestream:DescribeScheduledQuery", + "timestream:ListTagsForResource", + "timestream:DescribeEndpoints", + "timestream:UpdateScheduledQuery", + "timestream:DeleteScheduledQuery" + ], + "attributes": { + "tags": [ + "timestream:TagResource", + "timestream:UntagResource" + ] + }, + "destroy": [ + "timestream:DeleteScheduledQuery", + "timestream:DescribeEndpoints" + ], + "modify": [ + "timestream:UpdateScheduledQuery", + "timestream:DescribeEndpoints" + ], + "plan": [ + "timestream:DescribeScheduledQuery", + "timestream:ListTagsForResource", + "timestream:DescribeEndpoints" + ] + } +] diff --git a/src/mapping/aws/resource/timestreamwrite/aws_timestreaminfluxdb_db_instance.json b/src/mapping/aws/resource/timestreamwrite/aws_timestreaminfluxdb_db_instance.json index 5c9c17aa..899ca2f5 100644 --- a/src/mapping/aws/resource/timestreamwrite/aws_timestreaminfluxdb_db_instance.json +++ b/src/mapping/aws/resource/timestreamwrite/aws_timestreaminfluxdb_db_instance.json @@ -32,7 +32,9 @@ "timestream-influxdb:GetDbInstance", "timestream-influxdb:ListDbInstances", "timestream-influxdb:UpdateDbInstance", - "timestream-influxdb:ListTagsForResource" + "timestream-influxdb:ListTagsForResource", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs" ], "plan": [ "timestream-influxdb:GetDbInstance", diff --git a/src/mapping/aws/resource/transfer/aws_transfer_access.json b/src/mapping/aws/resource/transfer/aws_transfer_access.json new file mode 100644 index 00000000..fb2ac999 --- /dev/null +++ b/src/mapping/aws/resource/transfer/aws_transfer_access.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "transfer:CreateAccess", + "transfer:DescribeAccess", + "transfer:DeleteAccess", + "transfer:UpdateAccess" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/transfer/aws_transfer_server.json b/src/mapping/aws/resource/transfer/aws_transfer_server.json new file mode 100644 index 00000000..8ae18462 --- /dev/null +++ b/src/mapping/aws/resource/transfer/aws_transfer_server.json @@ -0,0 +1,59 @@ +[ + { + "apply": [ + "apigateway:GET", + "iam:PassRole", + "transfer:CreateServer", + "transfer:DescribeServer", + "transfer:StartServer", + "transfer:StopServer", + "transfer:UpdateServer" + ], + "attributes": { + "directory_id": [ + "ds:AuthorizeApplication", + "ds:DescribeDirectories", + "ds:UnauthorizeApplication" + ], + "endpoint_details": [ + "ec2:AssociateAddress", + "ec2:CreateVpcEndpoint", + "ec2:DescribeAddresses", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeVpcEndpoints", + "ec2:DeleteVpcEndpoints", + "ec2:DisassociateAddress", + "ec2:ModifyVpcEndpoint" + ], + "logging_role": [ + "logs:CreateLogDelivery", + "logs:DeleteLogDelivery", + "logs:DescribeLogGroups", + "logs:DescribeResourcePolicies", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "logs:PutResourcePolicy", + "logs:UpdateLogDelivery" + ], + "tags": [ + "transfer:TagResource", + "transfer:UnTagResource" + ] + }, + "destroy": [ + "transfer:DeleteServer" + ], + "modify": [ + "apigateway:GET", + "iam:PassRole", + "transfer:DescribeServer", + "transfer:StartServer", + "transfer:StopServer", + "transfer:UpdateServer" + ], + "plan": [ + "ec2:DescribeVpcEndpoints", + "transfer:DescribeServer" + ] + } +] diff --git a/src/mapping/aws/resource/transfer/aws_transfer_ssh_key.json b/src/mapping/aws/resource/transfer/aws_transfer_ssh_key.json new file mode 100644 index 00000000..06fd2b22 --- /dev/null +++ b/src/mapping/aws/resource/transfer/aws_transfer_ssh_key.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "transfer:ImportSshPublicKey", + "transfer:DeleteSshPublicKey" + ], + "attributes": { + "tags": [ + "transfer:TagResource", + "transfer:UnTagResource" + ] + }, + "destroy": [ + "transfer:DeleteSshPublicKey" + ], + "modify": [ + "transfer:DeleteSshPublicKey", + "transfer:ImportSshPublicKey" + ], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/transfer/aws_transfer_tag.json b/src/mapping/aws/resource/transfer/aws_transfer_tag.json new file mode 100644 index 00000000..a5645a62 --- /dev/null +++ b/src/mapping/aws/resource/transfer/aws_transfer_tag.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "transfer:TagResource", + "transfer:UntagResource" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/transfer/aws_transfer_user.json b/src/mapping/aws/resource/transfer/aws_transfer_user.json new file mode 100644 index 00000000..2660f7d1 --- /dev/null +++ b/src/mapping/aws/resource/transfer/aws_transfer_user.json @@ -0,0 +1,28 @@ +[ + { + "apply": [ + "iam:PassRole", + "transfer:CreateUser", + "transfer:DescribeUser", + "transfer:UpdateUser", + "transfer:DeleteUser" + ], + "attributes": { + "tags": [ + "transfer:TagResource", + "transfer:UnTagResource" + ] + }, + "destroy": [ + "transfer:DeleteUser" + ], + "modify": [ + "iam:PassRole", + "transfer:DescribeUser", + "transfer:UpdateUser" + ], + "plan": [ + "transfer:DescribeUser" + ] + } +] diff --git a/src/mapping/aws/resource/verified-access/aws_verifiedaccess_instance_trust_provider_attachment.json b/src/mapping/aws/resource/verified-access/aws_verifiedaccess_instance_trust_provider_attachment.json new file mode 100644 index 00000000..37c0d3f5 --- /dev/null +++ b/src/mapping/aws/resource/verified-access/aws_verifiedaccess_instance_trust_provider_attachment.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "verified-access:AllowVerifiedAccess" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/verifiedpermissions/aws_verifiedpermissions_schema.json b/src/mapping/aws/resource/verifiedpermissions/aws_verifiedpermissions_schema.json new file mode 100644 index 00000000..73ee8a38 --- /dev/null +++ b/src/mapping/aws/resource/verifiedpermissions/aws_verifiedpermissions_schema.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "verifiedpermissions:PutSchema", + "verifiedpermissions:GetSchema" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/vpc-lattice/aws_vpclattice_resource_configuration.json b/src/mapping/aws/resource/vpc-lattice/aws_vpclattice_resource_configuration.json new file mode 100644 index 00000000..5ef7a869 --- /dev/null +++ b/src/mapping/aws/resource/vpc-lattice/aws_vpclattice_resource_configuration.json @@ -0,0 +1,32 @@ +[ + { + "apply": [ + "ec2:DescribeSubnets", + "vpc-lattice:CreateResourceConfiguration", + "vpc-lattice:GetResourceConfiguration", + "vpc-lattice:ListTagsForResource", + "vpc-lattice:DeleteResourceConfiguration", + "vpc-lattice:UpdateResourceConfiguration" + ], + "attributes": { + "tags": [ + "vpc-lattice:TagResource", + "vpc-lattice:UntagResource" + ] + }, + "destroy": [ + "vpc-lattice:DeleteResourceConfiguration", + "vpc-lattice:GetResourceConfiguration" + ], + "modify": [ + "ec2:DescribeSubnets", + "vpc-lattice:ListTagsForResource", + "vpc-lattice:UpdateResourceConfiguration", + "vpc-lattice:GetResourceConfiguration" + ], + "plan": [ + "vpc-lattice:GetResourceConfiguration", + "vpc-lattice:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/resource/vpc-lattice/aws_vpclattice_resource_gateway.json b/src/mapping/aws/resource/vpc-lattice/aws_vpclattice_resource_gateway.json new file mode 100644 index 00000000..a595879e --- /dev/null +++ b/src/mapping/aws/resource/vpc-lattice/aws_vpclattice_resource_gateway.json @@ -0,0 +1,36 @@ +[ + { + "apply": [ + "vpc-lattice:CreateResourceGateway", + "vpc-lattice:GetResourceGateway", + "vpc-lattice:ListTagsForResource", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:DeleteResourceGateway", + "vpc-lattice:UpdateResourceGateway" + ], + "attributes": { + "tags": [ + "vpc-lattice:TagResource", + "vpc-lattice:UntagResource" + ] + }, + "destroy": [ + "vpc-lattice:DeleteResourceGateway", + "vpc-lattice:GetResourceGateway" + ], + "modify": [ + "vpc-lattice:UpdateResourceGateway", + "vpc-lattice:GetResourceGateway", + "vpc-lattice:ListTagsForResource", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups" + ], + "plan": [ + "vpc-lattice:GetResourceGateway", + "vpc-lattice:ListTagsForResource" + ] + } +] diff --git a/src/mapping/aws/resource/vpc-lattice/aws_vpclattice_service_network_resource_association.json b/src/mapping/aws/resource/vpc-lattice/aws_vpclattice_service_network_resource_association.json new file mode 100644 index 00000000..3d65bf8c --- /dev/null +++ b/src/mapping/aws/resource/vpc-lattice/aws_vpclattice_service_network_resource_association.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "vpc-lattice:CreateServiceNetworkServiceAssociation", + "vpc-lattice:DeleteServiceNetworkServiceAssociation", + "vpc-lattice:GetServiceNetworkServiceAssociation" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/wafregional/aws_wafregional_web_acl_association.json b/src/mapping/aws/resource/wafregional/aws_wafregional_web_acl_association.json new file mode 100644 index 00000000..c11bb159 --- /dev/null +++ b/src/mapping/aws/resource/wafregional/aws_wafregional_web_acl_association.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "apigateway:SetWebACL", + "elasticloadbalancing:SetWebAcl", + "waf-regional:AssociateWebACL", + "waf-regional:GetWebACLForResource", + "waf-regional:DisassociateWebACL" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "waf-regional:DisassociateWebACL" + ], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/wafv2/aws_wafv2_api_key.json b/src/mapping/aws/resource/wafv2/aws_wafv2_api_key.json new file mode 100644 index 00000000..24bd6ce1 --- /dev/null +++ b/src/mapping/aws/resource/wafv2/aws_wafv2_api_key.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "wafv2:CreateAPIKey", + "wafv2:DeleteAPIKey", + "wafv2:ListAPIKeys" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "wafv2:DeleteAPIKey" + ], + "modify": [], + "plan": [ + "wafv2:ListAPIKeys" + ] + } +] diff --git a/src/mapping/aws/resource/wafv2/aws_wafv2_web_acl_association.json b/src/mapping/aws/resource/wafv2/aws_wafv2_web_acl_association.json index c198cc5d..3d8f3385 100644 --- a/src/mapping/aws/resource/wafv2/aws_wafv2_web_acl_association.json +++ b/src/mapping/aws/resource/wafv2/aws_wafv2_web_acl_association.json @@ -3,6 +3,10 @@ "apply": [ "wafv2:AssociateWebACL", "wafv2:GetWebACLForResource", + "wafv2:GetWebACL", + "wafv2:DisassociateWebACL", + "wafv2:PutPermissionPolicy", + "wafv2:GetPermissionPolicy", "apigateway:SetWebACL", "elasticloadbalancing:SetWebAcl", "appsync:SetWebACL", @@ -11,17 +15,75 @@ "cognito-idp:ListResourcesForWebACL", "apprunner:ListAssociatedServicesForWebAcl", "apprunner:AssociateWebAcl", - "apprunner:DescribeWebAclForService" + "apprunner:DescribeWebAclForService", + "ec2:AssociateVerifiedAccessInstanceWebAcl", + "ec2:DisassociateVerifiedAccessInstanceWebAcl", + "ec2:DescribeVerifiedAccessInstanceWebAclAssociations", + "ec2:GetVerifiedAccessInstanceWebAcl" ], "attributes": { "tags": [] }, "destroy": [ + "wafv2:AssociateWebACL", + "wafv2:GetWebACLForResource", + "wafv2:GetWebACL", + "wafv2:DisassociateWebACL", + "wafv2:PutPermissionPolicy", + "elasticloadbalancing:SetWebACL", + "apigateway:SetWebACL", + "appsync:SetWebACL", + "cognito-idp:AssociateWebACL", + "cognito-idp:DisassociateWebACL", + "cognito-idp:GetWebACLForResource", + "apprunner:AssociateWebAcl", + "apprunner:DisassociateWebAcl", + "apprunner:DescribeWebAclForService", + "ec2:AssociateVerifiedAccessInstanceWebAcl", + "ec2:DisassociateVerifiedAccessInstanceWebAcl", + "ec2:DescribeVerifiedAccessInstanceWebAclAssociations", + "ec2:GetVerifiedAccessInstanceWebAcl", + "amplify:DisassociateWebACL", + "amplify:GetWebACLForResource" + ], + "modify": [ + "wafv2:AssociateWebACL", + "wafv2:GetWebACLForResource", + "wafv2:GetWebACL", + "wafv2:DisassociateWebACL", + "elasticloadbalancing:SetWebACL", + "apigateway:SetWebACL", + "appsync:SetWebACL", + "cognito-idp:AssociateWebACL", "cognito-idp:DisassociateWebACL", + "cognito-idp:GetWebACLForResource", + "apprunner:AssociateWebAcl", "apprunner:DisassociateWebAcl", - "wafv2:DisassociateWebACL" + "apprunner:DescribeWebAclForService", + "ec2:AssociateVerifiedAccessInstanceWebAcl", + "ec2:DisassociateVerifiedAccessInstanceWebAcl", + "ec2:DescribeVerifiedAccessInstanceWebAclAssociations", + "ec2:GetVerifiedAccessInstanceWebAcl" ], - "modify": [], - "plan": [] + "plan": [ + "wafv2:AssociateWebACL", + "wafv2:GetWebACLForResource", + "wafv2:GetWebACL", + "wafv2:DisassociateWebACL", + "elasticloadbalancing:SetWebACL", + "apigateway:SetWebACL", + "appsync:SetWebACL", + "cognito-idp:AssociateWebACL", + "cognito-idp:DisassociateWebACL", + "cognito-idp:GetWebACLForResource", + "apprunner:AssociateWebAcl", + "apprunner:DisassociateWebAcl", + "apprunner:DescribeWebAclForService", + "ec2:AssociateVerifiedAccessInstanceWebAcl", + "ec2:DisassociateVerifiedAccessInstanceWebAcl", + "ec2:DescribeVerifiedAccessInstanceWebAclAssociations", + "ec2:GetVerifiedAccessInstanceWebAcl", + "amplify:GetWebACLForResource" + ] } ] diff --git a/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_browser_settings.json b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_browser_settings.json new file mode 100644 index 00000000..c0e0be44 --- /dev/null +++ b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_browser_settings.json @@ -0,0 +1,23 @@ +[ + { + "apply": [ + "workspaces-web:CreateBrowserSettings", + "workspaces-web:GetBrowserSettings", + "workspaces-web:ListTagsForResource", + "workspaces-web:DeleteBrowserSettings" + ], + "attributes": { + "tags": [ + "workspaces-web:TagResource", + "workspaces-web:UntagResource" + ] + }, + "destroy": [ + "workspaces-web:DeleteBrowserSettings" + ], + "modify": [], + "plan": [ + "workspaces-web:GetBrowserSettings" + ] + } +] diff --git a/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_data_protection_settings.json b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_data_protection_settings.json new file mode 100644 index 00000000..6eec7e6d --- /dev/null +++ b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_data_protection_settings.json @@ -0,0 +1,34 @@ +[ + { + "apply": [ + "workspaces-web:GetDataProtectionSettings", + "workspaces-web:AssociateDataProtectionSettings", + "workspaces-web:CreateDataProtectionSettings", + "workspaces-web:DeleteDataProtectionSettings", + "workspaces-web:DisassociateDataProtectionSettings", + "workspaces-web:UpdateDataProtectionSettings", + "workspaces-web:ListTagsForResource" + ], + "attributes": { + "customer_managed_key": [ + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ], + "tags": [ + "workspaces-web:TagResource", + "workspaces-web:UntagResource" + ] + }, + "destroy": [ + "workspaces-web:DeleteDataProtectionSettings", + "workspaces-web:DisassociateDataProtectionSettings" + ], + "modify": [ + "workspaces-web:UpdateDataProtectionSettings" + ], + "plan": [ + "workspaces-web:GetDataProtectionSettings" + ] + } +] diff --git a/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_ip_access_settings.json b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_ip_access_settings.json new file mode 100644 index 00000000..51311ff4 --- /dev/null +++ b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_ip_access_settings.json @@ -0,0 +1,34 @@ +[ + { + "apply": [ + "workspaces-web:GetIpAccessSettings", + "workspaces-web:AssociateIpAccessSettings", + "workspaces-web:CreateIpAccessSettings", + "workspaces-web:DeleteIpAccessSettings", + "workspaces-web:DisassociateIpAccessSettings", + "workspaces-web:UpdateIpAccessSettings", + "workspaces-web:ListTagsForResource" + ], + "attributes": { + "customer_managed_key": [ + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ], + "tags": [ + "workspaces-web:TagResource", + "workspaces-web:UntagResource" + ] + }, + "destroy": [ + "workspaces-web:DeleteIpAccessSettings", + "workspaces-web:DisassociateIpAccessSettings" + ], + "modify": [ + "workspaces-web:UpdateIpAccessSettings" + ], + "plan": [ + "workspaces-web:GetIpAccessSettings" + ] + } +] diff --git a/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_network_settings.json b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_network_settings.json new file mode 100644 index 00000000..80c8088b --- /dev/null +++ b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_network_settings.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "workspaces-web:CreateNetworkSettings", + "iam:CreateServiceLinkedRole", + "workspaces-web:GetNetworkSettings", + "workspaces-web:DeleteNetworkSettings" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "workspaces-web:DeleteNetworkSettings" + ], + "modify": [], + "plan": [ + "workspaces-web:GetNetworkSettings" + ] + } +] diff --git a/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_user_access_logging_settings.json b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_user_access_logging_settings.json new file mode 100644 index 00000000..199da10c --- /dev/null +++ b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_user_access_logging_settings.json @@ -0,0 +1,29 @@ +[ + { + "apply": [ + "workspaces-web:GetUserAccessLoggingSettings", + "workspaces-web:AssociateUserAccessLoggingSettings", + "workspaces-web:CreateUserAccessLoggingSettings", + "workspaces-web:DeleteUserAccessLoggingSettings", + "workspaces-web:DisassociateUserAccessLoggingSettings", + "workspaces-web:UpdateUserAccessLoggingSettings", + "workspaces-web:ListTagsForResource" + ], + "attributes": { + "tags": [ + "workspaces-web:TagResource", + "workspaces-web:UntagResource" + ] + }, + "destroy": [ + "workspaces-web:DeleteUserAccessLoggingSettings", + "workspaces-web:DisassociateUserAccessLoggingSettings" + ], + "modify": [ + "workspaces-web:UpdateUserAccessLoggingSettings" + ], + "plan": [ + "workspaces-web:GetUserAccessLoggingSettings" + ] + } +] diff --git a/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_user_settings.json b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_user_settings.json new file mode 100644 index 00000000..e7f33392 --- /dev/null +++ b/src/mapping/aws/resource/workspaces-web/aws_workspacesweb_user_settings.json @@ -0,0 +1,25 @@ +[ + { + "apply": [ + "workspaces-web:CreateUserSettings", + "workspaces-web:GetUserSettings", + "workspaces-web:DeleteUserSettings" + ], + "attributes": { + "customer_managed_key": [ + "kms:CreateGrant", + "kms:Decrypt", + "kms:GenerateDataKey" + ], + "tags": [ + "workspaces-web:TagResource", + "workspaces-web:UntagResource" + ] + }, + "destroy": [ + "workspaces-web:DeleteUserSettings" + ], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/aws/resource/xray/aws_xray_resource_policy.json b/src/mapping/aws/resource/xray/aws_xray_resource_policy.json new file mode 100644 index 00000000..f926d323 --- /dev/null +++ b/src/mapping/aws/resource/xray/aws_xray_resource_policy.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "xray:DeleteResourcePolicy", + "xray:ListResourcePolicies", + "xray:PutResourcePolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "xray:DeleteResourcePolicy" + ], + "modify": [ + "xray:PutResourcePolicy", + "xray:ListResourcePolicies" + ], + "plan": [ + "xray:ListResourcePolicies" + ] + } +] diff --git a/src/mapping/google/data/accesscontextmanager/google_access_context_manager_access_policy.json b/src/mapping/google/data/accesscontextmanager/google_access_context_manager_access_policy.json new file mode 100644 index 00000000..afae021d --- /dev/null +++ b/src/mapping/google/data/accesscontextmanager/google_access_context_manager_access_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "accesscontextmanager.accessPolicies.list" + ] + } +] diff --git a/src/mapping/google/data/aiplatform/google_colab_runtime_template_iam_policy.json b/src/mapping/google/data/aiplatform/google_colab_runtime_template_iam_policy.json new file mode 100644 index 00000000..3da82268 --- /dev/null +++ b/src/mapping/google/data/aiplatform/google_colab_runtime_template_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.notebookRuntimeTemplates.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/aiplatform/google_vertex_ai_endpoint_iam_policy.json b/src/mapping/google/data/aiplatform/google_vertex_ai_endpoint_iam_policy.json index 06c1511a..ea1d619b 100644 --- a/src/mapping/google/data/aiplatform/google_vertex_ai_endpoint_iam_policy.json +++ b/src/mapping/google/data/aiplatform/google_vertex_ai_endpoint_iam_policy.json @@ -1,13 +1,13 @@ -[ - { - "apply": [], - "attributes": { - "tags": [] - }, - "destroy": [], - "modify": [], - "plan": [ - "aiplatform.endpoints.getIamPolicy" - ] - } -] +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.endpoints.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/aiplatform/google_vertex_ai_feature_group_iam_policy.json b/src/mapping/google/data/aiplatform/google_vertex_ai_feature_group_iam_policy.json new file mode 100644 index 00000000..ccf0b032 --- /dev/null +++ b/src/mapping/google/data/aiplatform/google_vertex_ai_feature_group_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.featureGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_policy.json b/src/mapping/google/data/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_policy.json new file mode 100644 index 00000000..127bb5ee --- /dev/null +++ b/src/mapping/google/data/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.featureViews.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/aiplatform/google_vertex_ai_feature_online_store_iam_policy.json b/src/mapping/google/data/aiplatform/google_vertex_ai_feature_online_store_iam_policy.json new file mode 100644 index 00000000..c74a5567 --- /dev/null +++ b/src/mapping/google/data/aiplatform/google_vertex_ai_feature_online_store_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.featureOnlineStores.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/alloydb/google_alloydb_cluster.json b/src/mapping/google/data/alloydb/google_alloydb_cluster.json new file mode 100644 index 00000000..1cce33cc --- /dev/null +++ b/src/mapping/google/data/alloydb/google_alloydb_cluster.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "alloydb.clusters.get" + ] + } +] diff --git a/src/mapping/google/data/alloydb/google_alloydb_instance.json b/src/mapping/google/data/alloydb/google_alloydb_instance.json new file mode 100644 index 00000000..7274b00b --- /dev/null +++ b/src/mapping/google/data/alloydb/google_alloydb_instance.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "alloydb.instances.get" + ] + } +] diff --git a/src/mapping/google/data/apphub/google_apphub_application.json b/src/mapping/google/data/apphub/google_apphub_application.json new file mode 100644 index 00000000..2ec65918 --- /dev/null +++ b/src/mapping/google/data/apphub/google_apphub_application.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "apphub.applications.get" + ] + } +] diff --git a/src/mapping/google/data/apphub/google_apphub_discovered_service.json b/src/mapping/google/data/apphub/google_apphub_discovered_service.json new file mode 100644 index 00000000..e3666bc5 --- /dev/null +++ b/src/mapping/google/data/apphub/google_apphub_discovered_service.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "apphub.discoveredServices.list" + ] + } +] diff --git a/src/mapping/google/data/apphub/google_apphub_discovered_workload.json b/src/mapping/google/data/apphub/google_apphub_discovered_workload.json new file mode 100644 index 00000000..8e927429 --- /dev/null +++ b/src/mapping/google/data/apphub/google_apphub_discovered_workload.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "apphub.discoveredWorkloads.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_docker_image.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_docker_image.json new file mode 100644 index 00000000..69011de9 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_docker_image.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.dockerimages.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_docker_images.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_docker_images.json new file mode 100644 index 00000000..69011de9 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_docker_images.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.dockerimages.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_locations.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_locations.json new file mode 100644 index 00000000..4891926d --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_locations.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.locations.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_maven_artifact.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_maven_artifact.json new file mode 100644 index 00000000..ddb1f11f --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_maven_artifact.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.mavenartifacts.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_maven_artifacts.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_maven_artifacts.json new file mode 100644 index 00000000..ddb1f11f --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_maven_artifacts.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.mavenartifacts.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_npm_package.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_npm_package.json new file mode 100644 index 00000000..41734918 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_npm_package.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.npmpackages.get", + "artifactregistry.npmpackages.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_npm_packages.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_npm_packages.json new file mode 100644 index 00000000..24f09962 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_npm_packages.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.npmpackages.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_packages.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_packages.json new file mode 100644 index 00000000..b84e9205 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_packages.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.packages.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_python_package.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_python_package.json new file mode 100644 index 00000000..ae771808 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_python_package.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.pythonpackages.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_repositories.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_repositories.json new file mode 100644 index 00000000..798dcfba --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_repositories.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.repositories.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_tags.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_tags.json new file mode 100644 index 00000000..802bc9f8 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_tags.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.tags.list" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_version.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_version.json new file mode 100644 index 00000000..f3593703 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_version.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.versions.get" + ] + } +] diff --git a/src/mapping/google/data/artifactregistry/google_artifact_registry_versions.json b/src/mapping/google/data/artifactregistry/google_artifact_registry_versions.json new file mode 100644 index 00000000..b99feff0 --- /dev/null +++ b/src/mapping/google/data/artifactregistry/google_artifact_registry_versions.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "artifactregistry.versions.list" + ] + } +] diff --git a/src/mapping/google/data/backend/gcs.json b/src/mapping/google/data/backend/gcs.json new file mode 100644 index 00000000..d9f17369 --- /dev/null +++ b/src/mapping/google/data/backend/gcs.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "storage.buckets.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/data/backupdr/google_backup_dr_backup.json b/src/mapping/google/data/backupdr/google_backup_dr_backup.json new file mode 100644 index 00000000..105f695d --- /dev/null +++ b/src/mapping/google/data/backupdr/google_backup_dr_backup.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "backupdr.bvbackups.list" + ] + } +] diff --git a/src/mapping/google/data/backupdr/google_backup_dr_backup_plan_association.json b/src/mapping/google/data/backupdr/google_backup_dr_backup_plan_association.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/data/backupdr/google_backup_dr_backup_plan_association.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/data/backupdr/google_backup_dr_backup_plan_associations.json b/src/mapping/google/data/backupdr/google_backup_dr_backup_plan_associations.json new file mode 100644 index 00000000..bdc9afa1 --- /dev/null +++ b/src/mapping/google/data/backupdr/google_backup_dr_backup_plan_associations.json @@ -0,0 +1,20 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "backupdr.backupPlanAssociations.fetchForAlloydbCluster", + "backupdr.backupPlanAssociations.fetchForCloudSqlInstance", + "backupdr.backupPlanAssociations.fetchForComputeDisk", + "backupdr.backupPlanAssociations.fetchForComputeInstance", + "backupdr.backupPlanAssociations.getForAlloydbCluster", + "backupdr.backupPlanAssociations.getForCloudSqlInstance", + "backupdr.backupPlanAssociations.getForComputeDisk", + "backupdr.backupPlanAssociations.getForComputeInstance" + ] + } +] diff --git a/src/mapping/google/data/backupdr/google_backup_dr_backup_vault.json b/src/mapping/google/data/backupdr/google_backup_dr_backup_vault.json new file mode 100644 index 00000000..b168f19b --- /dev/null +++ b/src/mapping/google/data/backupdr/google_backup_dr_backup_vault.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "backupdr.backupVaults.get" + ] + } +] diff --git a/src/mapping/google/data/backupdr/google_backup_dr_data_source.json b/src/mapping/google/data/backupdr/google_backup_dr_data_source.json new file mode 100644 index 00000000..aa3071ae --- /dev/null +++ b/src/mapping/google/data/backupdr/google_backup_dr_data_source.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "backupdr.bvdataSources.get" + ] + } +] diff --git a/src/mapping/google/data/backupdr/google_backup_dr_data_source_reference.json b/src/mapping/google/data/backupdr/google_backup_dr_data_source_reference.json new file mode 100644 index 00000000..8e13b3a7 --- /dev/null +++ b/src/mapping/google/data/backupdr/google_backup_dr_data_source_reference.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "backupdr.dataSourceReferences.fetchForAlloydbCluster", + "backupdr.dataSourceReferences.fetchForCloudSqlInstance" + ] + } +] diff --git a/src/mapping/google/data/backupdr/google_backup_dr_data_source_references.json b/src/mapping/google/data/backupdr/google_backup_dr_data_source_references.json new file mode 100644 index 00000000..8e13b3a7 --- /dev/null +++ b/src/mapping/google/data/backupdr/google_backup_dr_data_source_references.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "backupdr.dataSourceReferences.fetchForAlloydbCluster", + "backupdr.dataSourceReferences.fetchForCloudSqlInstance" + ] + } +] diff --git a/src/mapping/google/data/beyondcorp/google_beyondcorp_application_iam_policy.json b/src/mapping/google/data/beyondcorp/google_beyondcorp_application_iam_policy.json new file mode 100644 index 00000000..0b458b2b --- /dev/null +++ b/src/mapping/google/data/beyondcorp/google_beyondcorp_application_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "beyondcorp.sgApplications.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway.json b/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway.json new file mode 100644 index 00000000..c1445d5f --- /dev/null +++ b/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "beyondcorp.securityGateways.get" + ] + } +] diff --git a/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway_application_iam_policy.json b/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway_application_iam_policy.json new file mode 100644 index 00000000..fe15993f --- /dev/null +++ b/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway_application_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "beyondcorp.sgApplications.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway_iam_policy.json b/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway_iam_policy.json new file mode 100644 index 00000000..a044be57 --- /dev/null +++ b/src/mapping/google/data/beyondcorp/google_beyondcorp_security_gateway_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "beyondcorp.securityGateways.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/bigquery/google_bigquery_datapolicyv2_data_policy_iam_policy.json b/src/mapping/google/data/bigquery/google_bigquery_datapolicyv2_data_policy_iam_policy.json new file mode 100644 index 00000000..7fb8dfed --- /dev/null +++ b/src/mapping/google/data/bigquery/google_bigquery_datapolicyv2_data_policy_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "bigquery.dataPolicies.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/binaryauthorization/google_binary_authorization_attestor_iam_policy.json b/src/mapping/google/data/binaryauthorization/google_binary_authorization_attestor_iam_policy.json index fdd86e07..74f73db3 100644 --- a/src/mapping/google/data/binaryauthorization/google_binary_authorization_attestor_iam_policy.json +++ b/src/mapping/google/data/binaryauthorization/google_binary_authorization_attestor_iam_policy.json @@ -1,13 +1,13 @@ -[ - { - "apply": [], - "attributes": { - "tags": [] - }, - "destroy": [], - "modify": [], - "plan": [ - "binaryauthorization.attestors.getIamPolicy" - ] - } -] +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "binaryauthorization.attestors.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/certificatemanager/google_certificate_manager_certificates.json b/src/mapping/google/data/certificatemanager/google_certificate_manager_certificates.json new file mode 100644 index 00000000..ba630f21 --- /dev/null +++ b/src/mapping/google/data/certificatemanager/google_certificate_manager_certificates.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "certificatemanager.certs.list" + ] + } +] diff --git a/src/mapping/google/data/certificatemanager/google_certificate_manager_dns_authorization.json b/src/mapping/google/data/certificatemanager/google_certificate_manager_dns_authorization.json new file mode 100644 index 00000000..4a9a2317 --- /dev/null +++ b/src/mapping/google/data/certificatemanager/google_certificate_manager_dns_authorization.json @@ -0,0 +1,16 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "certificatemanager.operations.get", + "certificatemanager.dnsauthorizations.get", + "certificatemanager.dnsauthorizations.list", + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/cloudaicompanion/google_gemini_repository_group_iam_policy.json b/src/mapping/google/data/cloudaicompanion/google_gemini_repository_group_iam_policy.json new file mode 100644 index 00000000..5476b8c9 --- /dev/null +++ b/src/mapping/google/data/cloudaicompanion/google_gemini_repository_group_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudaicompanion.repositoryGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/clouddeploy/google_clouddeploy_custom_target_type_iam_policy.json b/src/mapping/google/data/clouddeploy/google_clouddeploy_custom_target_type_iam_policy.json new file mode 100644 index 00000000..73c9b912 --- /dev/null +++ b/src/mapping/google/data/clouddeploy/google_clouddeploy_custom_target_type_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "clouddeploy.customTargetTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/clouddeploy/google_clouddeploy_delivery_pipeline_iam_policy.json b/src/mapping/google/data/clouddeploy/google_clouddeploy_delivery_pipeline_iam_policy.json new file mode 100644 index 00000000..31272d00 --- /dev/null +++ b/src/mapping/google/data/clouddeploy/google_clouddeploy_delivery_pipeline_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "clouddeploy.deliveryPipelines.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/clouddeploy/google_clouddeploy_target_iam_policy.json b/src/mapping/google/data/clouddeploy/google_clouddeploy_target_iam_policy.json new file mode 100644 index 00000000..eebf7fb2 --- /dev/null +++ b/src/mapping/google/data/clouddeploy/google_clouddeploy_target_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "clouddeploy.targets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/cloudkms/google_kms_ekm_connection_iam_policy.json b/src/mapping/google/data/cloudkms/google_kms_ekm_connection_iam_policy.json new file mode 100644 index 00000000..0734c60f --- /dev/null +++ b/src/mapping/google/data/cloudkms/google_kms_ekm_connection_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudkms.ekmConnections.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/cloudkms/google_kms_key_handle.json b/src/mapping/google/data/cloudkms/google_kms_key_handle.json new file mode 100644 index 00000000..3bbad249 --- /dev/null +++ b/src/mapping/google/data/cloudkms/google_kms_key_handle.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudkms.keyHandles.get" + ] + } +] diff --git a/src/mapping/google/data/cloudkms/google_kms_key_handles.json b/src/mapping/google/data/cloudkms/google_kms_key_handles.json new file mode 100644 index 00000000..25f97c9b --- /dev/null +++ b/src/mapping/google/data/cloudkms/google_kms_key_handles.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudkms.keyHandles.list" + ] + } +] diff --git a/src/mapping/google/data/cloudkms/google_kms_key_rings.json b/src/mapping/google/data/cloudkms/google_kms_key_rings.json new file mode 100644 index 00000000..2432d185 --- /dev/null +++ b/src/mapping/google/data/cloudkms/google_kms_key_rings.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudkms.keyRings.list" + ] + } +] diff --git a/src/mapping/google/data/cloudtasks/google_cloud_tasks_queue_iam_policy.json b/src/mapping/google/data/cloudtasks/google_cloud_tasks_queue_iam_policy.json index 7870ac9d..4acf6298 100644 --- a/src/mapping/google/data/cloudtasks/google_cloud_tasks_queue_iam_policy.json +++ b/src/mapping/google/data/cloudtasks/google_cloud_tasks_queue_iam_policy.json @@ -7,6 +7,7 @@ "destroy": [], "modify": [], "plan": [ + "cloudtasks.queues.getIamPolicy", "cloudtasks.queues.list" ] } diff --git a/src/mapping/google/data/composer/google_composer_user_workloads_config_map.json b/src/mapping/google/data/composer/google_composer_user_workloads_config_map.json new file mode 100644 index 00000000..2a775b35 --- /dev/null +++ b/src/mapping/google/data/composer/google_composer_user_workloads_config_map.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "composer.userworkloadsconfigmaps.get" + ] + } +] diff --git a/src/mapping/google/data/composer/google_composer_user_workloads_secret.json b/src/mapping/google/data/composer/google_composer_user_workloads_secret.json new file mode 100644 index 00000000..f44e79bf --- /dev/null +++ b/src/mapping/google/data/composer/google_composer_user_workloads_secret.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "composer.userworkloadssecrets.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_forwarding_rules.json b/src/mapping/google/data/compute/google_compute_forwarding_rules.json new file mode 100644 index 00000000..6c5fb9f7 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_forwarding_rules.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.forwardingRules.list" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_images.json b/src/mapping/google/data/compute/google_compute_images.json new file mode 100644 index 00000000..ab20d72f --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_images.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.images.list" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_instance_guest_attributes.json b/src/mapping/google/data/compute/google_compute_instance_guest_attributes.json new file mode 100644 index 00000000..97fa2bf9 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_instance_guest_attributes.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.instances.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_instance_template_iam_policy.json b/src/mapping/google/data/compute/google_compute_instance_template_iam_policy.json new file mode 100644 index 00000000..44b739bd --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_instance_template_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.instanceTemplates.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_instant_snapshot_iam_policy.json b/src/mapping/google/data/compute/google_compute_instant_snapshot_iam_policy.json new file mode 100644 index 00000000..675666dd --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_instant_snapshot_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.instantSnapshots.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_interconnect_location.json b/src/mapping/google/data/compute/google_compute_interconnect_location.json new file mode 100644 index 00000000..17999352 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_interconnect_location.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.interconnectLocations.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_interconnect_locations.json b/src/mapping/google/data/compute/google_compute_interconnect_locations.json new file mode 100644 index 00000000..22c47504 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_interconnect_locations.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.interconnectLocations.list" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_machine_types.json b/src/mapping/google/data/compute/google_compute_machine_types.json new file mode 100644 index 00000000..e30d0e42 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_machine_types.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.machineTypes.list" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_network.json b/src/mapping/google/data/compute/google_compute_network.json index 017647b0..23f83a54 100644 --- a/src/mapping/google/data/compute/google_compute_network.json +++ b/src/mapping/google/data/compute/google_compute_network.json @@ -1,13 +1,13 @@ -[ - { - "apply": [ - "compute.networks.get" - ], - "attributes": { - "tags": [] - }, - "destroy": [], - "modify": [], - "plan": [] - } -] +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.networks.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_network_attachment.json b/src/mapping/google/data/compute/google_compute_network_attachment.json new file mode 100644 index 00000000..af2e79f8 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_network_attachment.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.networkAttachments.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_region_backend_service.json b/src/mapping/google/data/compute/google_compute_region_backend_service.json new file mode 100644 index 00000000..d78140f0 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_region_backend_service.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.regionBackendServices.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_region_instance_group_manager.json b/src/mapping/google/data/compute/google_compute_region_instance_group_manager.json new file mode 100644 index 00000000..6811400c --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_region_instance_group_manager.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.instanceGroupManagers.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_security_policy.json b/src/mapping/google/data/compute/google_compute_security_policy.json new file mode 100644 index 00000000..5dd2e4dd --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_security_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.securityPolicies.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_storage_pool_iam_policy.json b/src/mapping/google/data/compute/google_compute_storage_pool_iam_policy.json new file mode 100644 index 00000000..bff552c7 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_storage_pool_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.storagePools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_storage_pool_types.json b/src/mapping/google/data/compute/google_compute_storage_pool_types.json new file mode 100644 index 00000000..8c87d2b7 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_storage_pool_types.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.storagePoolTypes.get" + ] + } +] diff --git a/src/mapping/google/data/compute/google_compute_subnetworks.json b/src/mapping/google/data/compute/google_compute_subnetworks.json new file mode 100644 index 00000000..74c16c70 --- /dev/null +++ b/src/mapping/google/data/compute/google_compute_subnetworks.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.subnetworks.list" + ] + } +] diff --git a/src/mapping/google/data/dataplex/google_dataplex_aspect_type_iam_policy.json b/src/mapping/google/data/dataplex/google_dataplex_aspect_type_iam_policy.json new file mode 100644 index 00000000..da60ec9c --- /dev/null +++ b/src/mapping/google/data/dataplex/google_dataplex_aspect_type_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.aspectTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/dataplex/google_dataplex_data_quality_rules.json b/src/mapping/google/data/dataplex/google_dataplex_data_quality_rules.json new file mode 100644 index 00000000..36049b2e --- /dev/null +++ b/src/mapping/google/data/dataplex/google_dataplex_data_quality_rules.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.datascans.getData" + ] + } +] diff --git a/src/mapping/google/data/dataplex/google_dataplex_entry_group_iam_policy.json b/src/mapping/google/data/dataplex/google_dataplex_entry_group_iam_policy.json new file mode 100644 index 00000000..a8c69d9a --- /dev/null +++ b/src/mapping/google/data/dataplex/google_dataplex_entry_group_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.entryGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/dataplex/google_dataplex_entry_type_iam_policy.json b/src/mapping/google/data/dataplex/google_dataplex_entry_type_iam_policy.json new file mode 100644 index 00000000..087e095f --- /dev/null +++ b/src/mapping/google/data/dataplex/google_dataplex_entry_type_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.entryTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/dataplex/google_dataplex_glossary_iam_policy.json b/src/mapping/google/data/dataplex/google_dataplex_glossary_iam_policy.json new file mode 100644 index 00000000..b62f41cd --- /dev/null +++ b/src/mapping/google/data/dataplex/google_dataplex_glossary_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.glossaries.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/dns/google_dns_managed_zones.json b/src/mapping/google/data/dns/google_dns_managed_zones.json new file mode 100644 index 00000000..3b2acf9e --- /dev/null +++ b/src/mapping/google/data/dns/google_dns_managed_zones.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dns.managedZones.list" + ] + } +] diff --git a/src/mapping/google/data/gkehub/google_gke_hub_feature.json b/src/mapping/google/data/gkehub/google_gke_hub_feature.json new file mode 100644 index 00000000..cce9a51f --- /dev/null +++ b/src/mapping/google/data/gkehub/google_gke_hub_feature.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkehub.features.get" + ] + } +] diff --git a/src/mapping/google/data/gkehub/google_gke_hub_membership.json b/src/mapping/google/data/gkehub/google_gke_hub_membership.json new file mode 100644 index 00000000..dfb486d1 --- /dev/null +++ b/src/mapping/google/data/gkehub/google_gke_hub_membership.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkehub.memberships.get" + ] + } +] diff --git a/src/mapping/google/data/gkemulticloud/google_container_attached_install_manifest.json b/src/mapping/google/data/gkemulticloud/google_container_attached_install_manifest.json new file mode 100644 index 00000000..83957a8f --- /dev/null +++ b/src/mapping/google/data/gkemulticloud/google_container_attached_install_manifest.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkemulticloud.attachedClusters.generateInstallManifest" + ] + } +] diff --git a/src/mapping/google/data/gkemulticloud/google_container_aws_versions.json b/src/mapping/google/data/gkemulticloud/google_container_aws_versions.json new file mode 100644 index 00000000..48130687 --- /dev/null +++ b/src/mapping/google/data/gkemulticloud/google_container_aws_versions.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkemulticloud.awsServerConfigs.get" + ] + } +] diff --git a/src/mapping/google/data/gkemulticloud/google_container_azure_versions.json b/src/mapping/google/data/gkemulticloud/google_container_azure_versions.json new file mode 100644 index 00000000..a9f29ccf --- /dev/null +++ b/src/mapping/google/data/gkemulticloud/google_container_azure_versions.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkemulticloud.azureServerConfigs.get" + ] + } +] diff --git a/src/mapping/google/data/google_cloud_identity_policy.json b/src/mapping/google/data/google_cloud_identity_policy.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/data/google_cloud_identity_policy.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/data/iam.googleapis.com/google_iam_workforce_pool_iam_policy.json b/src/mapping/google/data/iam.googleapis.com/google_iam_workforce_pool_iam_policy.json new file mode 100644 index 00000000..ce5cc002 --- /dev/null +++ b/src/mapping/google/data/iam.googleapis.com/google_iam_workforce_pool_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iam.googleapis.com/workforcePools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/iam/google_iam_workload_identity_pool.json b/src/mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool.json similarity index 100% rename from src/mapping/google/data/iam/google_iam_workload_identity_pool.json rename to src/mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool.json diff --git a/src/mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool_iam_policy.json b/src/mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool_iam_policy.json new file mode 100644 index 00000000..0b36a48c --- /dev/null +++ b/src/mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iam.googleapis.com/workloadIdentityPools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/iam/google_iam_workload_identity_pool_provider.json b/src/mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool_provider.json similarity index 100% rename from src/mapping/google/data/iam/google_iam_workload_identity_pool_provider.json rename to src/mapping/google/data/iam.googleapis.com/google_iam_workload_identity_pool_provider.json diff --git a/src/mapping/google/data/iam/google_organization_iam_custom_role.json b/src/mapping/google/data/iam/google_organization_iam_custom_role.json new file mode 100644 index 00000000..a4b42a91 --- /dev/null +++ b/src/mapping/google/data/iam/google_organization_iam_custom_role.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iam.roles.get" + ] + } +] diff --git a/src/mapping/google/data/iam/google_organization_iam_custom_roles.json b/src/mapping/google/data/iam/google_organization_iam_custom_roles.json new file mode 100644 index 00000000..d410a5bd --- /dev/null +++ b/src/mapping/google/data/iam/google_organization_iam_custom_roles.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iam.roles.list" + ] + } +] diff --git a/src/mapping/google/data/iam/google_project_iam_custom_role.json b/src/mapping/google/data/iam/google_project_iam_custom_role.json new file mode 100644 index 00000000..a4b42a91 --- /dev/null +++ b/src/mapping/google/data/iam/google_project_iam_custom_role.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iam.roles.get" + ] + } +] diff --git a/src/mapping/google/data/iam/google_project_iam_custom_roles.json b/src/mapping/google/data/iam/google_project_iam_custom_roles.json new file mode 100644 index 00000000..d410a5bd --- /dev/null +++ b/src/mapping/google/data/iam/google_project_iam_custom_roles.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iam.roles.list" + ] + } +] diff --git a/src/mapping/google/data/iam/google_service_accounts.json b/src/mapping/google/data/iam/google_service_accounts.json new file mode 100644 index 00000000..e6331753 --- /dev/null +++ b/src/mapping/google/data/iam/google_service_accounts.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iam.serviceAccounts.list" + ] + } +] diff --git a/src/mapping/google/data/iap/google_iap_tunnel_dest_group_iam_policy.json b/src/mapping/google/data/iap/google_iap_tunnel_dest_group_iam_policy.json new file mode 100644 index 00000000..a3f66273 --- /dev/null +++ b/src/mapping/google/data/iap/google_iap_tunnel_dest_group_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.tunnelDestGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/iap/google_iap_web_cloud_run_service_iam_policy.json b/src/mapping/google/data/iap/google_iap_web_cloud_run_service_iam_policy.json new file mode 100644 index 00000000..72ef31a8 --- /dev/null +++ b/src/mapping/google/data/iap/google_iap_web_cloud_run_service_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/iap/google_iap_web_forwarding_rule_service_iam_policy.json b/src/mapping/google/data/iap/google_iap_web_forwarding_rule_service_iam_policy.json new file mode 100644 index 00000000..72ef31a8 --- /dev/null +++ b/src/mapping/google/data/iap/google_iap_web_forwarding_rule_service_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/iap/google_iap_web_region_forwarding_rule_service_iam_policy.json b/src/mapping/google/data/iap/google_iap_web_region_forwarding_rule_service_iam_policy.json new file mode 100644 index 00000000..56c6462a --- /dev/null +++ b/src/mapping/google/data/iap/google_iap_web_region_forwarding_rule_service_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "certificatemanager.dnsauthorizations.list", + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/lustre/google_lustre_instance.json b/src/mapping/google/data/lustre/google_lustre_instance.json new file mode 100644 index 00000000..43668d45 --- /dev/null +++ b/src/mapping/google/data/lustre/google_lustre_instance.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "lustre.instances.get" + ] + } +] diff --git a/src/mapping/google/data/memcache/google_memcache_instance.json b/src/mapping/google/data/memcache/google_memcache_instance.json new file mode 100644 index 00000000..3dc1c2c7 --- /dev/null +++ b/src/mapping/google/data/memcache/google_memcache_instance.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "memcache.instances.get" + ] + } +] diff --git a/src/mapping/google/data/memorystore/google_memorystore_instance.json b/src/mapping/google/data/memorystore/google_memorystore_instance.json new file mode 100644 index 00000000..16c890f6 --- /dev/null +++ b/src/mapping/google/data/memorystore/google_memorystore_instance.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "memorystore.instances.get" + ] + } +] diff --git a/src/mapping/google/data/metastore/google_dataproc_metastore_database_iam_policy.json b/src/mapping/google/data/metastore/google_dataproc_metastore_database_iam_policy.json new file mode 100644 index 00000000..6618762d --- /dev/null +++ b/src/mapping/google/data/metastore/google_dataproc_metastore_database_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "metastore.databases.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/metastore/google_dataproc_metastore_table_iam_policy.json b/src/mapping/google/data/metastore/google_dataproc_metastore_table_iam_policy.json new file mode 100644 index 00000000..d96a9f02 --- /dev/null +++ b/src/mapping/google/data/metastore/google_dataproc_metastore_table_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "metastore.tables.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/oracledatabase/google_oracle_database_autonomous_database.json b/src/mapping/google/data/oracledatabase/google_oracle_database_autonomous_database.json new file mode 100644 index 00000000..0318e71c --- /dev/null +++ b/src/mapping/google/data/oracledatabase/google_oracle_database_autonomous_database.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "oracledatabase.autonomousDatabases.get" + ] + } +] diff --git a/src/mapping/google/data/oracledatabase/google_oracle_database_autonomous_databases.json b/src/mapping/google/data/oracledatabase/google_oracle_database_autonomous_databases.json new file mode 100644 index 00000000..a80550ac --- /dev/null +++ b/src/mapping/google/data/oracledatabase/google_oracle_database_autonomous_databases.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "oracledatabase.autonomousDatabases.list" + ] + } +] diff --git a/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_exadata_infrastructure.json b/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_exadata_infrastructure.json new file mode 100644 index 00000000..361a930b --- /dev/null +++ b/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_exadata_infrastructure.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "oracledatabase.cloudExadataInfrastructures.get" + ] + } +] diff --git a/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_exadata_infrastructures.json b/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_exadata_infrastructures.json new file mode 100644 index 00000000..ed0e0e4e --- /dev/null +++ b/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_exadata_infrastructures.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "oracledatabase.cloudExadataInfrastructures.list" + ] + } +] diff --git a/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_vm_cluster.json b/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_vm_cluster.json new file mode 100644 index 00000000..39d79136 --- /dev/null +++ b/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_vm_cluster.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "oracledatabase.cloudVmClusters.get" + ] + } +] diff --git a/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_vm_clusters.json b/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_vm_clusters.json new file mode 100644 index 00000000..46586a68 --- /dev/null +++ b/src/mapping/google/data/oracledatabase/google_oracle_database_cloud_vm_clusters.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "oracledatabase.cloudVmClusters.list" + ] + } +] diff --git a/src/mapping/google/data/oracledatabase/google_oracle_database_db_nodes.json b/src/mapping/google/data/oracledatabase/google_oracle_database_db_nodes.json new file mode 100644 index 00000000..5a130844 --- /dev/null +++ b/src/mapping/google/data/oracledatabase/google_oracle_database_db_nodes.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "oracledatabase.dbNodes.list" + ] + } +] diff --git a/src/mapping/google/data/oracledatabase/google_oracle_database_db_servers.json b/src/mapping/google/data/oracledatabase/google_oracle_database_db_servers.json new file mode 100644 index 00000000..41fd0de2 --- /dev/null +++ b/src/mapping/google/data/oracledatabase/google_oracle_database_db_servers.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "oracledatabase.dbServers.list" + ] + } +] diff --git a/src/mapping/google/data/orgpolicy/google_project_organization_policy.json b/src/mapping/google/data/orgpolicy/google_project_organization_policy.json new file mode 100644 index 00000000..9a854f86 --- /dev/null +++ b/src/mapping/google/data/orgpolicy/google_project_organization_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "orgpolicy.policy.get" + ] + } +] diff --git a/src/mapping/google/data/parametermanager/google_parameter_manager_parameter.json b/src/mapping/google/data/parametermanager/google_parameter_manager_parameter.json new file mode 100644 index 00000000..0346ede8 --- /dev/null +++ b/src/mapping/google/data/parametermanager/google_parameter_manager_parameter.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "parametermanager.parameters.get" + ] + } +] diff --git a/src/mapping/google/data/parametermanager/google_parameter_manager_parameter_version.json b/src/mapping/google/data/parametermanager/google_parameter_manager_parameter_version.json new file mode 100644 index 00000000..93b688e5 --- /dev/null +++ b/src/mapping/google/data/parametermanager/google_parameter_manager_parameter_version.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "parametermanager.parameterVersions.get" + ] + } +] diff --git a/src/mapping/google/data/parametermanager/google_parameter_manager_parameter_version_render.json b/src/mapping/google/data/parametermanager/google_parameter_manager_parameter_version_render.json new file mode 100644 index 00000000..81f8bbb9 --- /dev/null +++ b/src/mapping/google/data/parametermanager/google_parameter_manager_parameter_version_render.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "parametermanager.parameterVersions.render" + ] + } +] diff --git a/src/mapping/google/data/parametermanager/google_parameter_manager_parameters.json b/src/mapping/google/data/parametermanager/google_parameter_manager_parameters.json new file mode 100644 index 00000000..2a9ff86b --- /dev/null +++ b/src/mapping/google/data/parametermanager/google_parameter_manager_parameters.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "parametermanager.parameters.list" + ] + } +] diff --git a/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter.json b/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter.json new file mode 100644 index 00000000..0346ede8 --- /dev/null +++ b/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "parametermanager.parameters.get" + ] + } +] diff --git a/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter_version.json b/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter_version.json new file mode 100644 index 00000000..93b688e5 --- /dev/null +++ b/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter_version.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "parametermanager.parameterVersions.get" + ] + } +] diff --git a/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter_version_render.json b/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter_version_render.json new file mode 100644 index 00000000..81f8bbb9 --- /dev/null +++ b/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameter_version_render.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "parametermanager.parameterVersions.render" + ] + } +] diff --git a/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameters.json b/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameters.json new file mode 100644 index 00000000..2a9ff86b --- /dev/null +++ b/src/mapping/google/data/parametermanager/google_parameter_manager_regional_parameters.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "parametermanager.parameters.list" + ] + } +] diff --git a/src/mapping/google/data/privateca/google_privateca_ca_pool_iam_policy.json b/src/mapping/google/data/privateca/google_privateca_ca_pool_iam_policy.json new file mode 100644 index 00000000..23a8225f --- /dev/null +++ b/src/mapping/google/data/privateca/google_privateca_ca_pool_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "privateca.caPools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/privateca/google_privateca_certificate_authority.json b/src/mapping/google/data/privateca/google_privateca_certificate_authority.json new file mode 100644 index 00000000..ef7b2c73 --- /dev/null +++ b/src/mapping/google/data/privateca/google_privateca_certificate_authority.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "privateca.certificateAuthorities.get" + ] + } +] diff --git a/src/mapping/google/data/privateca/google_privateca_certificate_template_iam_policy.json b/src/mapping/google/data/privateca/google_privateca_certificate_template_iam_policy.json new file mode 100644 index 00000000..ac7c2df8 --- /dev/null +++ b/src/mapping/google/data/privateca/google_privateca_certificate_template_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "privateca.certificateTemplates.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/privilegedaccessmanager/google_privileged_access_manager_entitlement.json b/src/mapping/google/data/privilegedaccessmanager/google_privileged_access_manager_entitlement.json new file mode 100644 index 00000000..8ba411c9 --- /dev/null +++ b/src/mapping/google/data/privilegedaccessmanager/google_privileged_access_manager_entitlement.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "privilegedaccessmanager.entitlements.get" + ] + } +] diff --git a/src/mapping/google/data/pubsub/google_pubsub_schema_iam_policy.json b/src/mapping/google/data/pubsub/google_pubsub_schema_iam_policy.json new file mode 100644 index 00000000..0b16235a --- /dev/null +++ b/src/mapping/google/data/pubsub/google_pubsub_schema_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "pubsub.schemas.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/redis/google_redis_cluster.json b/src/mapping/google/data/redis/google_redis_cluster.json new file mode 100644 index 00000000..baedb999 --- /dev/null +++ b/src/mapping/google/data/redis/google_redis_cluster.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "redis.clusters.get" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_folder.json b/src/mapping/google/data/resourcemanager/google_folder.json new file mode 100644 index 00000000..3d88bd22 --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_folder.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.folders.get" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_folder_iam_policy.json b/src/mapping/google/data/resourcemanager/google_folder_iam_policy.json new file mode 100644 index 00000000..b79b946e --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_folder_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.folders.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_folders.json b/src/mapping/google/data/resourcemanager/google_folders.json new file mode 100644 index 00000000..8877de37 --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_folders.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.folders.list" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_organization_iam_policy.json b/src/mapping/google/data/resourcemanager/google_organization_iam_policy.json new file mode 100644 index 00000000..74978faa --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_organization_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.organizations.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_project_ancestry.json b/src/mapping/google/data/resourcemanager/google_project_ancestry.json new file mode 100644 index 00000000..31acf779 --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_project_ancestry.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.projects.get" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_project_iam_policy.json b/src/mapping/google/data/resourcemanager/google_project_iam_policy.json new file mode 100644 index 00000000..8f43eb49 --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_project_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.projects.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_tags_tag_key_iam_policy.json b/src/mapping/google/data/resourcemanager/google_tags_tag_key_iam_policy.json new file mode 100644 index 00000000..b6b83a17 --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_tags_tag_key_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.tagKeys.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_tags_tag_keys.json b/src/mapping/google/data/resourcemanager/google_tags_tag_keys.json new file mode 100644 index 00000000..f2b1df56 --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_tags_tag_keys.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.tagKeys.list", + "resourcemanager.tagKeys.get" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_tags_tag_value.json b/src/mapping/google/data/resourcemanager/google_tags_tag_value.json new file mode 100644 index 00000000..6017c8ad --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_tags_tag_value.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.tagValues.get" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_tags_tag_value_iam_policy.json b/src/mapping/google/data/resourcemanager/google_tags_tag_value_iam_policy.json new file mode 100644 index 00000000..fce4cb1e --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_tags_tag_value_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.tagValues.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/resourcemanager/google_tags_tag_values.json b/src/mapping/google/data/resourcemanager/google_tags_tag_values.json new file mode 100644 index 00000000..cc10ab59 --- /dev/null +++ b/src/mapping/google/data/resourcemanager/google_tags_tag_values.json @@ -0,0 +1,14 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.tagValues.get", + "resourcemanager.tagValues.list" + ] + } +] diff --git a/src/mapping/google/data/run/google_cloud_run_v2_worker_pool.json b/src/mapping/google/data/run/google_cloud_run_v2_worker_pool.json new file mode 100644 index 00000000..a5ae60fc --- /dev/null +++ b/src/mapping/google/data/run/google_cloud_run_v2_worker_pool.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "run.workerpools.get" + ] + } +] diff --git a/src/mapping/google/data/run/google_cloud_run_v2_worker_pool_iam_policy.json b/src/mapping/google/data/run/google_cloud_run_v2_worker_pool_iam_policy.json new file mode 100644 index 00000000..b7565183 --- /dev/null +++ b/src/mapping/google/data/run/google_cloud_run_v2_worker_pool_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "run.workerpools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/runtimeconfig/google_runtimeconfig_config_iam_policy.json b/src/mapping/google/data/runtimeconfig/google_runtimeconfig_config_iam_policy.json new file mode 100644 index 00000000..8ba4dc44 --- /dev/null +++ b/src/mapping/google/data/runtimeconfig/google_runtimeconfig_config_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "runtimeconfig.configs.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/runtimeconfig/google_runtimeconfig_variable.json b/src/mapping/google/data/runtimeconfig/google_runtimeconfig_variable.json new file mode 100644 index 00000000..a09592de --- /dev/null +++ b/src/mapping/google/data/runtimeconfig/google_runtimeconfig_variable.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "runtimeconfig.variables.get" + ] + } +] diff --git a/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret.json b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret.json new file mode 100644 index 00000000..65f8f575 --- /dev/null +++ b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "secretmanager.secrets.get" + ] + } +] diff --git a/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_iam_policy.json b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_iam_policy.json new file mode 100644 index 00000000..bbe5224a --- /dev/null +++ b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "secretmanager.secrets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_version.json b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_version.json new file mode 100644 index 00000000..400ae8d3 --- /dev/null +++ b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_version.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "secretmanager.versions.get" + ] + } +] diff --git a/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_version_access.json b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_version_access.json new file mode 100644 index 00000000..65c61c3b --- /dev/null +++ b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secret_version_access.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "secretmanager.versions.access" + ] + } +] diff --git a/src/mapping/google/data/secretmanager/google_secret_manager_regional_secrets.json b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secrets.json new file mode 100644 index 00000000..0c129994 --- /dev/null +++ b/src/mapping/google/data/secretmanager/google_secret_manager_regional_secrets.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "secretmanager.secrets.list" + ] + } +] diff --git a/src/mapping/google/data/securesourcemanager/google_secure_source_manager_instance_iam_policy.json b/src/mapping/google/data/securesourcemanager/google_secure_source_manager_instance_iam_policy.json new file mode 100644 index 00000000..7994fea8 --- /dev/null +++ b/src/mapping/google/data/securesourcemanager/google_secure_source_manager_instance_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securesourcemanager.instances.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/securesourcemanager/google_secure_source_manager_repository_iam_policy.json b/src/mapping/google/data/securesourcemanager/google_secure_source_manager_repository_iam_policy.json new file mode 100644 index 00000000..2c744cd2 --- /dev/null +++ b/src/mapping/google/data/securesourcemanager/google_secure_source_manager_repository_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securesourcemanager.repositories.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/securitycenter/google_scc_source_iam_policy.json b/src/mapping/google/data/securitycenter/google_scc_source_iam_policy.json new file mode 100644 index 00000000..404b7c3f --- /dev/null +++ b/src/mapping/google/data/securitycenter/google_scc_source_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securitycenter.sources.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/securitycenter/google_scc_v2_organization_source_iam_policy.json b/src/mapping/google/data/securitycenter/google_scc_v2_organization_source_iam_policy.json new file mode 100644 index 00000000..404b7c3f --- /dev/null +++ b/src/mapping/google/data/securitycenter/google_scc_v2_organization_source_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securitycenter.sources.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/spanner/google_spanner_database.json b/src/mapping/google/data/spanner/google_spanner_database.json new file mode 100644 index 00000000..73d45178 --- /dev/null +++ b/src/mapping/google/data/spanner/google_spanner_database.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "spanner.databases.get" + ] + } +] diff --git a/src/mapping/google/data/storage/google_storage_bucket_iam_member.json b/src/mapping/google/data/storage/google_storage_bucket_iam_member.json new file mode 100644 index 00000000..8ca1edde --- /dev/null +++ b/src/mapping/google/data/storage/google_storage_bucket_iam_member.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "storage.buckets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/data/storage/google_storage_bucket_objects.json b/src/mapping/google/data/storage/google_storage_bucket_objects.json new file mode 100644 index 00000000..262f2968 --- /dev/null +++ b/src/mapping/google/data/storage/google_storage_bucket_objects.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "storage.objects.list" + ] + } +] diff --git a/src/mapping/google/data/storage/google_storage_buckets.json b/src/mapping/google/data/storage/google_storage_buckets.json new file mode 100644 index 00000000..de353ee5 --- /dev/null +++ b/src/mapping/google/data/storage/google_storage_buckets.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "storage.buckets.list" + ] + } +] diff --git a/src/mapping/google/data/storage/google_storage_control_folder_intelligence_config.json b/src/mapping/google/data/storage/google_storage_control_folder_intelligence_config.json new file mode 100644 index 00000000..669384ff --- /dev/null +++ b/src/mapping/google/data/storage/google_storage_control_folder_intelligence_config.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "storage.intelligenceConfigs.get" + ] + } +] diff --git a/src/mapping/google/data/storage/google_storage_control_organization_intelligence_config.json b/src/mapping/google/data/storage/google_storage_control_organization_intelligence_config.json new file mode 100644 index 00000000..d823c837 --- /dev/null +++ b/src/mapping/google/data/storage/google_storage_control_organization_intelligence_config.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "storage.intelligenceConfigs.get" + ] + } +] diff --git a/src/mapping/google/data/storage/google_storage_control_project_intelligence_config.json b/src/mapping/google/data/storage/google_storage_control_project_intelligence_config.json new file mode 100644 index 00000000..669384ff --- /dev/null +++ b/src/mapping/google/data/storage/google_storage_control_project_intelligence_config.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "storage.intelligenceConfigs.get" + ] + } +] diff --git a/src/mapping/google/data/storageinsights/google_storage_insights_dataset_config.json b/src/mapping/google/data/storageinsights/google_storage_insights_dataset_config.json new file mode 100644 index 00000000..91409b52 --- /dev/null +++ b/src/mapping/google/data/storageinsights/google_storage_insights_dataset_config.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "storageinsights.reportConfigs.get" + ] + } +] diff --git a/src/mapping/google/data/tags/google_tags_tag_value_iam_policy.json b/src/mapping/google/data/tags/google_tags_tag_value_iam_policy.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/data/tags/google_tags_tag_value_iam_policy.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/accessapproval/google_project_access_approval_settings.json b/src/mapping/google/resource/accessapproval/google_project_access_approval_settings.json new file mode 100644 index 00000000..1a338b9e --- /dev/null +++ b/src/mapping/google/resource/accessapproval/google_project_access_approval_settings.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "accessapproval.settings.delete", + "accessapproval.settings.get", + "accessapproval.settings.create", + "accessapproval.settings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/accesscontextmanager/google_access_context_manager_service_perimeter.json b/src/mapping/google/resource/accesscontextmanager/google_access_context_manager_service_perimeter.json index 3e46e973..45e4fdaf 100644 --- a/src/mapping/google/resource/accesscontextmanager/google_access_context_manager_service_perimeter.json +++ b/src/mapping/google/resource/accesscontextmanager/google_access_context_manager_service_perimeter.json @@ -1,20 +1,11 @@ [ { - "apply": [ - "accesscontextmanager.servicePerimeters.create", - "accesscontextmanager.servicePerimeters.delete", - "accesscontextmanager.servicePerimeters.get", - "accesscontextmanager.servicePerimeters.update" - ], + "apply": [], "attributes": { "tags": [] }, - "destroy": [ - "accesscontextmanager.servicePerimeters.delete" - ], - "modify": [ - "accesscontextmanager.servicePerimeters.update" - ], + "destroy": [], + "modify": [], "plan": [] } ] diff --git a/src/mapping/google/resource/accesscontextmanager/google_access_context_manager_service_perimeters.json b/src/mapping/google/resource/accesscontextmanager/google_access_context_manager_service_perimeters.json index 3e46e973..45e4fdaf 100644 --- a/src/mapping/google/resource/accesscontextmanager/google_access_context_manager_service_perimeters.json +++ b/src/mapping/google/resource/accesscontextmanager/google_access_context_manager_service_perimeters.json @@ -1,20 +1,11 @@ [ { - "apply": [ - "accesscontextmanager.servicePerimeters.create", - "accesscontextmanager.servicePerimeters.delete", - "accesscontextmanager.servicePerimeters.get", - "accesscontextmanager.servicePerimeters.update" - ], + "apply": [], "attributes": { "tags": [] }, - "destroy": [ - "accesscontextmanager.servicePerimeters.delete" - ], - "modify": [ - "accesscontextmanager.servicePerimeters.update" - ], + "destroy": [], + "modify": [], "plan": [] } ] diff --git a/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_binding.json b/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_binding.json new file mode 100644 index 00000000..63082202 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.notebookRuntimeTemplates.getIamPolicy", + "aiplatform.notebookRuntimeTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_member.json b/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_member.json new file mode 100644 index 00000000..63082202 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.notebookRuntimeTemplates.getIamPolicy", + "aiplatform.notebookRuntimeTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_policy.json b/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_policy.json new file mode 100644 index 00000000..6881b52b --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_colab_runtime_template_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "aiplatform.notebookRuntimeTemplates.getIamPolicy", + "aiplatform.notebookRuntimeTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.notebookRuntimeTemplates.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_cache_config.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_cache_config.json new file mode 100644 index 00000000..04986d07 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_cache_config.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.cacheConfigs.get", + "aiplatform.cacheConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_deployment_resource_pool.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_deployment_resource_pool.json new file mode 100644 index 00000000..102ccb5e --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_deployment_resource_pool.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "aiplatform.deploymentResourcePools.create", + "aiplatform.deploymentResourcePools.delete", + "aiplatform.deploymentResourcePools.get", + "aiplatform.deploymentResourcePools.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_endpoint_iam_policy.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_endpoint_iam_policy.json new file mode 100644 index 00000000..ea1d619b --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_endpoint_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.endpoints.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_endpoint_with_model_garden_deployment.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_endpoint_with_model_garden_deployment.json new file mode 100644 index 00000000..15e8f492 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_endpoint_with_model_garden_deployment.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "aiplatform.endpoints.create", + "aiplatform.endpoints.delete", + "aiplatform.endpoints.get", + "aiplatform.endpoints.update", + "aiplatform.endpoints.deploy", + "aiplatform.endpoints.undeploy", + "aiplatform.models.upload" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_binding.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_binding.json new file mode 100644 index 00000000..46cf7206 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.featureGroups.getIamPolicy", + "aiplatform.featureGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_member.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_member.json new file mode 100644 index 00000000..46cf7206 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.featureGroups.getIamPolicy", + "aiplatform.featureGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_policy.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_policy.json new file mode 100644 index 00000000..3a519936 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_group_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "aiplatform.featureGroups.getIamPolicy", + "aiplatform.featureGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.featureGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_binding.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_binding.json new file mode 100644 index 00000000..5b985b83 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.featureViews.getIamPolicy", + "aiplatform.featureViews.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_member.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_member.json new file mode 100644 index 00000000..5b985b83 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.featureViews.getIamPolicy", + "aiplatform.featureViews.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_policy.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_policy.json new file mode 100644 index 00000000..aac47776 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_featureview_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "aiplatform.featureViews.getIamPolicy", + "aiplatform.featureViews.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.featureViews.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_binding.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_binding.json new file mode 100644 index 00000000..9e41eda3 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.featureOnlineStores.getIamPolicy", + "aiplatform.featureOnlineStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_member.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_member.json new file mode 100644 index 00000000..9e41eda3 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.featureOnlineStores.getIamPolicy", + "aiplatform.featureOnlineStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_policy.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_policy.json new file mode 100644 index 00000000..03893b3b --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_feature_online_store_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "aiplatform.featureOnlineStores.getIamPolicy", + "aiplatform.featureOnlineStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.featureOnlineStores.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_entitytype_iam_policy.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_entitytype_iam_policy.json new file mode 100644 index 00000000..a0112fb2 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_entitytype_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "aiplatform.entityTypes.getIamPolicy", + "aiplatform.entityTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.entityTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_iam.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_iam.json index 562b2f1f..2098ec8a 100644 --- a/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_iam.json +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_iam.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "aiplatform.featurestores.getIamPolicy" + ] } ] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_iam_policy.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_iam_policy.json new file mode 100644 index 00000000..b69e35a4 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_featurestore_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "aiplatform.featurestores.getIamPolicy", + "aiplatform.featurestores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "aiplatform.featurestores.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_index_endpoint_deployed_index.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_index_endpoint_deployed_index.json new file mode 100644 index 00000000..c9713836 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_index_endpoint_deployed_index.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "aiplatform.indexEndpoints.delete", + "aiplatform.indexEndpoints.deploy", + "aiplatform.indexEndpoints.get", + "aiplatform.indexEndpoints.undeploy", + "aiplatform.indexEndpoints.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_rag_engine_config.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_rag_engine_config.json new file mode 100644 index 00000000..ab534ee7 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_rag_engine_config.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "aiplatform.ragEngineConfigs.get", + "aiplatform.ragEngineConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/aiplatform/google_vertex_ai_reasoning_engine.json b/src/mapping/google/resource/aiplatform/google_vertex_ai_reasoning_engine.json new file mode 100644 index 00000000..23d19e60 --- /dev/null +++ b/src/mapping/google/resource/aiplatform/google_vertex_ai_reasoning_engine.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "aiplatform.reasoningEngines.create", + "aiplatform.reasoningEngines.delete", + "aiplatform.reasoningEngines.get", + "aiplatform.reasoningEngines.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/alloydb/google_alloydb_cluster.json b/src/mapping/google/resource/alloydb/google_alloydb_cluster.json index b2321593..6f0dc601 100644 --- a/src/mapping/google/resource/alloydb/google_alloydb_cluster.json +++ b/src/mapping/google/resource/alloydb/google_alloydb_cluster.json @@ -1,21 +1,23 @@ -[ - { - "apply": [ - "alloydb.clusters.create", - "alloydb.clusters.delete", - "alloydb.clusters.get", - "alloydb.clusters.update", - "alloydb.operations.get" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "alloydb.clusters.delete" - ], - "modify": [ - "alloydb.clusters.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "alloydb.clusters.create", + "alloydb.clusters.delete", + "alloydb.clusters.get", + "alloydb.clusters.update", + "alloydb.operations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "alloydb.clusters.delete" + ], + "modify": [ + "alloydb.clusters.update" + ], + "plan": [ + "alloydb.clusters.get" + ] + } +] diff --git a/src/mapping/google/resource/alloydb/google_alloydb_instance.json b/src/mapping/google/resource/alloydb/google_alloydb_instance.json index d53113e8..f5ee84cf 100644 --- a/src/mapping/google/resource/alloydb/google_alloydb_instance.json +++ b/src/mapping/google/resource/alloydb/google_alloydb_instance.json @@ -1,20 +1,22 @@ -[ - { - "apply": [ - "alloydb.instances.create", - "alloydb.instances.delete", - "alloydb.instances.get", - "alloydb.instances.update" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "alloydb.instances.delete" - ], - "modify": [ - "alloydb.instances.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "alloydb.instances.create", + "alloydb.instances.delete", + "alloydb.instances.get", + "alloydb.instances.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "alloydb.instances.delete" + ], + "modify": [ + "alloydb.instances.update" + ], + "plan": [ + "alloydb.instances.get" + ] + } +] diff --git a/src/mapping/google/resource/analyticshub/google_bigquery_analytics_hub_listing_subscription.json b/src/mapping/google/resource/analyticshub/google_bigquery_analytics_hub_listing_subscription.json new file mode 100644 index 00000000..e674d29a --- /dev/null +++ b/src/mapping/google/resource/analyticshub/google_bigquery_analytics_hub_listing_subscription.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "analyticshub.subscriptions.get", + "analyticshub.subscriptions.update", + "analyticshub.subscriptions.delete", + "analyticshub.subscriptions.create", + "analyticshub.listings.subscribe" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apigee/google_apigee_environment_iam_binding.json b/src/mapping/google/resource/apigee/google_apigee_environment_iam_binding.json new file mode 100644 index 00000000..68b0624b --- /dev/null +++ b/src/mapping/google/resource/apigee/google_apigee_environment_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "apigee.environments.setIamPolicy", + "apigee.environments.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apigee/google_apigee_environment_iam_member.json b/src/mapping/google/resource/apigee/google_apigee_environment_iam_member.json new file mode 100644 index 00000000..68b0624b --- /dev/null +++ b/src/mapping/google/resource/apigee/google_apigee_environment_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "apigee.environments.setIamPolicy", + "apigee.environments.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apigee/google_apigee_environment_iam_policy.json b/src/mapping/google/resource/apigee/google_apigee_environment_iam_policy.json new file mode 100644 index 00000000..68b0624b --- /dev/null +++ b/src/mapping/google/resource/apigee/google_apigee_environment_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "apigee.environments.setIamPolicy", + "apigee.environments.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apihub/google_apihub_api_hub_instance.json b/src/mapping/google/resource/apihub/google_apihub_api_hub_instance.json new file mode 100644 index 00000000..13e28441 --- /dev/null +++ b/src/mapping/google/resource/apihub/google_apihub_api_hub_instance.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "apihub.apiHubInstances.create", + "apihub.apiHubInstances.delete", + "apihub.apiHubInstances.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apihub/google_apihub_curation.json b/src/mapping/google/resource/apihub/google_apihub_curation.json new file mode 100644 index 00000000..d4a1294c --- /dev/null +++ b/src/mapping/google/resource/apihub/google_apihub_curation.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "apihub.curations.create", + "apihub.curations.delete", + "apihub.curations.get", + "apihub.curations.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apihub/google_apihub_host_project_registration.json b/src/mapping/google/resource/apihub/google_apihub_host_project_registration.json new file mode 100644 index 00000000..e9d49a9d --- /dev/null +++ b/src/mapping/google/resource/apihub/google_apihub_host_project_registration.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "apihub.hostProjectRegistrations.create", + "apihub.hostProjectRegistrations.delete", + "apihub.hostProjectRegistrations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apihub/google_apihub_plugin.json b/src/mapping/google/resource/apihub/google_apihub_plugin.json new file mode 100644 index 00000000..4e33337b --- /dev/null +++ b/src/mapping/google/resource/apihub/google_apihub_plugin.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "apihub.plugins.create", + "apihub.plugins.get", + "apihub.plugins.update", + "apihub.plugins.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apihub/google_apihub_plugin_instance.json b/src/mapping/google/resource/apihub/google_apihub_plugin_instance.json new file mode 100644 index 00000000..e182dccd --- /dev/null +++ b/src/mapping/google/resource/apihub/google_apihub_plugin_instance.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "apihub.plugininstances.create", + "apihub.plugininstances.delete", + "apihub.plugininstances.update", + "apihub.plugininstances.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apphub/google_apphub_application.json b/src/mapping/google/resource/apphub/google_apphub_application.json new file mode 100644 index 00000000..801b1414 --- /dev/null +++ b/src/mapping/google/resource/apphub/google_apphub_application.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "apphub.applications.create", + "apphub.applications.delete", + "apphub.applications.get", + "apphub.applications.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apphub/google_apphub_service.json b/src/mapping/google/resource/apphub/google_apphub_service.json new file mode 100644 index 00000000..86e2e1be --- /dev/null +++ b/src/mapping/google/resource/apphub/google_apphub_service.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "apphub.services.create", + "apphub.services.delete", + "apphub.services.get", + "apphub.services.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apphub/google_apphub_service_project_attachment.json b/src/mapping/google/resource/apphub/google_apphub_service_project_attachment.json new file mode 100644 index 00000000..97798eb0 --- /dev/null +++ b/src/mapping/google/resource/apphub/google_apphub_service_project_attachment.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "apphub.serviceProjectAttachments.attach", + "apphub.serviceProjectAttachments.create", + "apphub.serviceProjectAttachments.delete", + "apphub.serviceProjectAttachments.detach", + "apphub.serviceProjectAttachments.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/apphub/google_apphub_workload.json b/src/mapping/google/resource/apphub/google_apphub_workload.json new file mode 100644 index 00000000..74f51753 --- /dev/null +++ b/src/mapping/google/resource/apphub/google_apphub_workload.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "apphub.workloads.create", + "apphub.workloads.get", + "apphub.workloads.update", + "apphub.workloads.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/artifactregistry/google_artifact_registry_repository_iam_policy.json b/src/mapping/google/resource/artifactregistry/google_artifact_registry_repository_iam_policy.json index 685cf1d4..fa4d79b3 100644 --- a/src/mapping/google/resource/artifactregistry/google_artifact_registry_repository_iam_policy.json +++ b/src/mapping/google/resource/artifactregistry/google_artifact_registry_repository_iam_policy.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "artifactregistry.repositories.getIamPolicy" + ] } ] diff --git a/src/mapping/google/resource/backend/gcs.json b/src/mapping/google/resource/backend/gcs.json new file mode 100644 index 00000000..d9f17369 --- /dev/null +++ b/src/mapping/google/resource/backend/gcs.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "storage.buckets.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/backupdr/google_backup_dr_backup_plan.json b/src/mapping/google/resource/backupdr/google_backup_dr_backup_plan.json new file mode 100644 index 00000000..8ddc374e --- /dev/null +++ b/src/mapping/google/resource/backupdr/google_backup_dr_backup_plan.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "backupdr.backupPlans.create", + "backupdr.backupPlans.delete", + "backupdr.backupPlans.get", + "backupdr.backupPlans.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/backupdr/google_backup_dr_backup_plan_association.json b/src/mapping/google/resource/backupdr/google_backup_dr_backup_plan_association.json new file mode 100644 index 00000000..9a8d07d1 --- /dev/null +++ b/src/mapping/google/resource/backupdr/google_backup_dr_backup_plan_association.json @@ -0,0 +1,27 @@ +[ + { + "apply": [ + "backupdr.backupPlanAssociations.createForCloudSqlInstance", + "backupdr.backupPlanAssociations.createForComputeDisk", + "backupdr.backupPlanAssociations.createForComputeInstance", + "backupdr.backupPlanAssociations.deleteForCloudSqlInstance", + "backupdr.backupPlanAssociations.deleteForComputeDisk", + "backupdr.backupPlanAssociations.deleteForComputeInstance", + "backupdr.backupPlanAssociations.fetchForCloudSqlInstance", + "backupdr.backupPlanAssociations.get", + "backupdr.backupPlanAssociations.getForCloudSqlInstance", + "backupdr.backupPlanAssociations.getForComputeDisk", + "backupdr.backupPlanAssociations.triggerBackupForCloudSqlInstance", + "backupdr.backupPlanAssociations.triggerBackupForComputeDisk", + "backupdr.backupPlanAssociations.triggerBackupForComputeInstance", + "backupdr.backupPlanAssociations.updateForComputeDisk", + "backupdr.backupPlanAssociations.updateForComputeInstance" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/backupdr/google_backup_dr_backup_vault.json b/src/mapping/google/resource/backupdr/google_backup_dr_backup_vault.json new file mode 100644 index 00000000..282eb8ad --- /dev/null +++ b/src/mapping/google/resource/backupdr/google_backup_dr_backup_vault.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "backupdr.backupVaults.create", + "backupdr.backupVaults.delete", + "backupdr.backupVaults.get", + "backupdr.backupVaults.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/backupdr/google_backup_dr_management_server.json b/src/mapping/google/resource/backupdr/google_backup_dr_management_server.json new file mode 100644 index 00000000..d7e9c334 --- /dev/null +++ b/src/mapping/google/resource/backupdr/google_backup_dr_management_server.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "backupdr.managementServers.create", + "backupdr.managementServers.get", + "backupdr.managementServers.update", + "backupdr.managementServers.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/backupdr/google_backup_dr_service_config.json b/src/mapping/google/resource/backupdr/google_backup_dr_service_config.json new file mode 100644 index 00000000..6e6363db --- /dev/null +++ b/src/mapping/google/resource/backupdr/google_backup_dr_service_config.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "backupdr.resourceBackupConfigs.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_connection.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_connection.json new file mode 100644 index 00000000..c357d106 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_connection.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.appConnections.create", + "beyondcorp.appConnections.delete", + "beyondcorp.appConnections.get", + "beyondcorp.appConnections.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_connector.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_connector.json new file mode 100644 index 00000000..19896bc7 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_connector.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.appConnectors.create", + "beyondcorp.appConnectors.get", + "beyondcorp.appConnectors.delete", + "beyondcorp.appConnectors.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_gateway.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_gateway.json new file mode 100644 index 00000000..b337d7f8 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_app_gateway.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.appGateways.create", + "beyondcorp.appGateways.delete", + "beyondcorp.appGateways.update", + "beyondcorp.appGateways.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_application.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_application.json new file mode 100644 index 00000000..0083e5f6 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_application.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.sgApplications.create", + "beyondcorp.sgApplications.delete", + "beyondcorp.sgApplications.get", + "beyondcorp.sgApplications.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_binding.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_binding.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_binding.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_member.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_member.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_member.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_policy.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_policy.json new file mode 100644 index 00000000..1b7d6db6 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_application_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.sgApplications.getIamPolicy", + "beyondcorp.sgApplications.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "beyondcorp.sgApplications.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway.json new file mode 100644 index 00000000..04455491 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.securityGateways.create", + "beyondcorp.securityGateways.get", + "beyondcorp.securityGateways.update", + "beyondcorp.securityGateways.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application.json new file mode 100644 index 00000000..0083e5f6 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.sgApplications.create", + "beyondcorp.sgApplications.delete", + "beyondcorp.sgApplications.get", + "beyondcorp.sgApplications.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_binding.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_binding.json new file mode 100644 index 00000000..1b5ad869 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "beyondcorp.sgApplications.getIamPolicy", + "beyondcorp.sgApplications.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_member.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_member.json new file mode 100644 index 00000000..1b5ad869 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "beyondcorp.sgApplications.getIamPolicy", + "beyondcorp.sgApplications.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_policy.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_policy.json new file mode 100644 index 00000000..fb891754 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_application_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.sgApplications.getIamPolicy", + "beyondcorp.sgApplications.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "beyondcorp.sgApplications.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_binding.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_binding.json new file mode 100644 index 00000000..87b1b386 --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "beyondcorp.securityGateways.getIamPolicy", + "beyondcorp.securityGateways.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_member.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_member.json new file mode 100644 index 00000000..3055048a --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "beyondcorp.securityGateways.getIamPolicy", + "beyondcorp.securityGateways.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_policy.json b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_policy.json new file mode 100644 index 00000000..33e8296b --- /dev/null +++ b/src/mapping/google/resource/beyondcorp/google_beyondcorp_security_gateway_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "beyondcorp.securityGateways.getIamPolicy", + "beyondcorp.securityGateways.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "beyondcorp.securityGateways.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/biglake/google_biglake_catalog.json b/src/mapping/google/resource/biglake/google_biglake_catalog.json new file mode 100644 index 00000000..19598023 --- /dev/null +++ b/src/mapping/google/resource/biglake/google_biglake_catalog.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "biglake.catalogs.create", + "biglake.catalogs.delete", + "biglake.catalogs.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "biglake.catalogs.delete" + ], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/biglake/google_biglake_database.json b/src/mapping/google/resource/biglake/google_biglake_database.json new file mode 100644 index 00000000..966ea125 --- /dev/null +++ b/src/mapping/google/resource/biglake/google_biglake_database.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "biglake.databases.create", + "biglake.databases.delete", + "biglake.databases.get", + "biglake.databases.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "biglake.databases.delete" + ], + "modify": [ + "biglake.databases.update" + ], + "plan": [ + "biglake.databases.get" + ] + } +] diff --git a/src/mapping/google/resource/biglake/google_biglake_table.json b/src/mapping/google/resource/biglake/google_biglake_table.json new file mode 100644 index 00000000..c4a66859 --- /dev/null +++ b/src/mapping/google/resource/biglake/google_biglake_table.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "biglake.tables.create", + "biglake.tables.delete", + "biglake.tables.get", + "biglake.tables.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "biglake.tables.delete" + ], + "modify": [ + "biglake.tables.update" + ], + "plan": [ + "biglake.tables.get" + ] + } +] diff --git a/src/mapping/google/resource/bigquery/google_bigquery_connection.json b/src/mapping/google/resource/bigquery/google_bigquery_connection.json index 6045e5b7..06fd549f 100644 --- a/src/mapping/google/resource/bigquery/google_bigquery_connection.json +++ b/src/mapping/google/resource/bigquery/google_bigquery_connection.json @@ -4,21 +4,15 @@ "bigquery.connections.get", "bigquery.connections.create", "bigquery.connections.delete", - "bigquery.connections.update", - "accesscontextmanager.servicePerimeters.create", - "accesscontextmanager.servicePerimeters.delete", - "accesscontextmanager.servicePerimeters.get", - "accesscontextmanager.servicePerimeters.update" + "bigquery.connections.update" ], "attributes": { "tags": [] }, "destroy": [ - "accesscontextmanager.servicePerimeters.delete", "bigquery.connections.delete" ], "modify": [ - "accesscontextmanager.servicePerimeters.update", "bigquery.connections.update" ], "plan": [] diff --git a/src/mapping/google/resource/bigquery/google_bigquery_dataset_access.json b/src/mapping/google/resource/bigquery/google_bigquery_dataset_access.json new file mode 100644 index 00000000..2c57bc06 --- /dev/null +++ b/src/mapping/google/resource/bigquery/google_bigquery_dataset_access.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "bigquery.datasets.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/bigquery/google_bigquery_row_access_policy.json b/src/mapping/google/resource/bigquery/google_bigquery_row_access_policy.json new file mode 100644 index 00000000..2c57bc06 --- /dev/null +++ b/src/mapping/google/resource/bigquery/google_bigquery_row_access_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "bigquery.datasets.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/bigtable/google_bigtable_authorized_view.json b/src/mapping/google/resource/bigtable/google_bigtable_authorized_view.json new file mode 100644 index 00000000..94e79e45 --- /dev/null +++ b/src/mapping/google/resource/bigtable/google_bigtable_authorized_view.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "bigtable.authorizedViews.create", + "bigtable.authorizedViews.delete", + "bigtable.authorizedViews.get", + "bigtable.authorizedViews.update", + "bigtable.tables.mutateRows", + "bigtable.tables.readRows" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "bigtable.authorizedViews.delete" + ], + "modify": [ + "bigtable.authorizedViews.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/bigtable/google_bigtable_logical_view.json b/src/mapping/google/resource/bigtable/google_bigtable_logical_view.json new file mode 100644 index 00000000..ca61e4ce --- /dev/null +++ b/src/mapping/google/resource/bigtable/google_bigtable_logical_view.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "bigtable.logicalViews.create", + "bigtable.logicalViews.delete", + "bigtable.logicalViews.get", + "bigtable.logicalViews.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "bigtable.logicalViews.delete" + ], + "modify": [ + "bigtable.logicalViews.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/bigtable/google_bigtable_materialized_view.json b/src/mapping/google/resource/bigtable/google_bigtable_materialized_view.json new file mode 100644 index 00000000..3b43d47e --- /dev/null +++ b/src/mapping/google/resource/bigtable/google_bigtable_materialized_view.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "bigtable.materializedViews.create", + "bigtable.materializedViews.delete", + "bigtable.materializedViews.get", + "bigtable.materializedViews.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "bigtable.materializedViews.delete" + ], + "modify": [ + "bigtable.materializedViews.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/bigtable/google_bigtable_schema_bundle.json b/src/mapping/google/resource/bigtable/google_bigtable_schema_bundle.json new file mode 100644 index 00000000..dc80c15c --- /dev/null +++ b/src/mapping/google/resource/bigtable/google_bigtable_schema_bundle.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "bigtable.schemaBundles.get", + "bigtable.schemaBundles.create", + "bigtable.schemaBundles.delete", + "bigtable.schemaBundles.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/billing/google_billing_account_iam_binding.json b/src/mapping/google/resource/billing/google_billing_account_iam_binding.json new file mode 100644 index 00000000..6fbf215f --- /dev/null +++ b/src/mapping/google/resource/billing/google_billing_account_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "billing.accounts.getIamPolicy", + "billing.accounts.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/billing/google_billing_account_iam_member.json b/src/mapping/google/resource/billing/google_billing_account_iam_member.json new file mode 100644 index 00000000..6fbf215f --- /dev/null +++ b/src/mapping/google/resource/billing/google_billing_account_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "billing.accounts.getIamPolicy", + "billing.accounts.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/billing/google_billing_account_iam_policy.json b/src/mapping/google/resource/billing/google_billing_account_iam_policy.json new file mode 100644 index 00000000..6fbf215f --- /dev/null +++ b/src/mapping/google/resource/billing/google_billing_account_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "billing.accounts.getIamPolicy", + "billing.accounts.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/billing/google_billing_budget.json b/src/mapping/google/resource/billing/google_billing_budget.json new file mode 100644 index 00000000..41305e00 --- /dev/null +++ b/src/mapping/google/resource/billing/google_billing_budget.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "billing.budgets.create", + "billing.budgets.get", + "billing.budgets.update", + "billing.budgets.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_binding.json b/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_binding.json new file mode 100644 index 00000000..ba707022 --- /dev/null +++ b/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "binaryauthorization.attestors.getIamPolicy", + "binaryauthorization.attestors.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_member.json b/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_member.json new file mode 100644 index 00000000..ba707022 --- /dev/null +++ b/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "binaryauthorization.attestors.getIamPolicy", + "binaryauthorization.attestors.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_policy.json b/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_policy.json new file mode 100644 index 00000000..05dc7ce7 --- /dev/null +++ b/src/mapping/google/resource/binaryauthorization/google_binary_authorization_attestor_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "binaryauthorization.attestors.getIamPolicy", + "binaryauthorization.attestors.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "binaryauthorization.attestors.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/certificatemanager/google_certificate_manager_dns_authorization.json b/src/mapping/google/resource/certificatemanager/google_certificate_manager_dns_authorization.json new file mode 100644 index 00000000..f9aba094 --- /dev/null +++ b/src/mapping/google/resource/certificatemanager/google_certificate_manager_dns_authorization.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "certificatemanager.dnsauthorizations.create", + "certificatemanager.operations.delete", + "certificatemanager.dnsauthorizations.get", + "certificatemanager.dnsauthorizations.delete", + "certificatemanager.dnsauthorizations.update", + "certificatemanager.dnsauthorizations.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/chronicle/google_chronicle_data_access_label.json b/src/mapping/google/resource/chronicle/google_chronicle_data_access_label.json new file mode 100644 index 00000000..71f9c22e --- /dev/null +++ b/src/mapping/google/resource/chronicle/google_chronicle_data_access_label.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "chronicle.dataAccessLabels.create", + "chronicle.dataAccessLabels.delete", + "chronicle.dataAccessLabels.get", + "chronicle.dataAccessLabels.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/chronicle/google_chronicle_data_access_scope.json b/src/mapping/google/resource/chronicle/google_chronicle_data_access_scope.json new file mode 100644 index 00000000..85431001 --- /dev/null +++ b/src/mapping/google/resource/chronicle/google_chronicle_data_access_scope.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "chronicle.dataAccessScopes.create", + "chronicle.dataAccessScopes.delete", + "chronicle.dataAccessScopes.get", + "chronicle.dataAccessScopes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/chronicle/google_chronicle_reference_list.json b/src/mapping/google/resource/chronicle/google_chronicle_reference_list.json new file mode 100644 index 00000000..1dfcafd2 --- /dev/null +++ b/src/mapping/google/resource/chronicle/google_chronicle_reference_list.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "chronicle.referenceLists.create", + "chronicle.referenceLists.get", + "chronicle.referenceLists.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/chronicle/google_chronicle_retrohunt.json b/src/mapping/google/resource/chronicle/google_chronicle_retrohunt.json new file mode 100644 index 00000000..715fcfe2 --- /dev/null +++ b/src/mapping/google/resource/chronicle/google_chronicle_retrohunt.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "chronicle.retrohunts.create", + "chronicle.retrohunts.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/chronicle/google_chronicle_rule.json b/src/mapping/google/resource/chronicle/google_chronicle_rule.json new file mode 100644 index 00000000..1574ad23 --- /dev/null +++ b/src/mapping/google/resource/chronicle/google_chronicle_rule.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "chronicle.rules.create", + "chronicle.rules.delete", + "chronicle.rules.get", + "chronicle.rules.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/chronicle/google_chronicle_rule_deployment.json b/src/mapping/google/resource/chronicle/google_chronicle_rule_deployment.json new file mode 100644 index 00000000..dbb01ffe --- /dev/null +++ b/src/mapping/google/resource/chronicle/google_chronicle_rule_deployment.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "chronicle.ruleDeployments.get", + "chronicle.ruleDeployments.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/chronicle/google_chronicle_watchlist.json b/src/mapping/google/resource/chronicle/google_chronicle_watchlist.json new file mode 100644 index 00000000..7d50435b --- /dev/null +++ b/src/mapping/google/resource/chronicle/google_chronicle_watchlist.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "chronicle.watchlists.create", + "chronicle.watchlists.delete", + "chronicle.watchlists.get", + "chronicle.watchlists.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_code_repository_index.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_code_repository_index.json new file mode 100644 index 00000000..76fc2a6d --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_code_repository_index.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.codeRepositoryIndexes.create", + "cloudaicompanion.codeRepositoryIndexes.delete", + "cloudaicompanion.codeRepositoryIndexes.get", + "cloudaicompanion.codeRepositoryIndexes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_code_tools_setting.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_code_tools_setting.json new file mode 100644 index 00000000..68b8a4a0 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_code_tools_setting.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.codeToolsSettings.create", + "cloudaicompanion.codeToolsSettings.delete", + "cloudaicompanion.codeToolsSettings.get", + "cloudaicompanion.codeToolsSettings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_code_tools_setting_binding.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_code_tools_setting_binding.json new file mode 100644 index 00000000..e77b08a5 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_code_tools_setting_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.settingBindings.codeToolsSettingsCreate", + "cloudaicompanion.settingBindings.codeToolsSettingsDelete", + "cloudaicompanion.settingBindings.codeToolsSettingsGet", + "cloudaicompanion.settingBindings.codeToolsSettingsUpdate" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_data_sharing_with_google_setting.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_data_sharing_with_google_setting.json new file mode 100644 index 00000000..6a25e1ad --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_data_sharing_with_google_setting.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.dataSharingWithGoogleSettings.create", + "cloudaicompanion.dataSharingWithGoogleSettings.delete", + "cloudaicompanion.dataSharingWithGoogleSettings.get", + "cloudaicompanion.dataSharingWithGoogleSettings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_data_sharing_with_google_setting_binding.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_data_sharing_with_google_setting_binding.json new file mode 100644 index 00000000..35104cd6 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_data_sharing_with_google_setting_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.settingBindings.dataSharingWithGoogleSettingsCreate", + "cloudaicompanion.settingBindings.dataSharingWithGoogleSettingsDelete", + "cloudaicompanion.settingBindings.dataSharingWithGoogleSettingsGet", + "cloudaicompanion.settingBindings.dataSharingWithGoogleSettingsUpdate" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_gemini_gcp_enablement_setting.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_gemini_gcp_enablement_setting.json new file mode 100644 index 00000000..8b4cab83 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_gemini_gcp_enablement_setting.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.geminiGcpEnablementSettings.create", + "cloudaicompanion.geminiGcpEnablementSettings.delete", + "cloudaicompanion.geminiGcpEnablementSettings.get", + "cloudaicompanion.geminiGcpEnablementSettings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_gemini_gcp_enablement_setting_binding.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_gemini_gcp_enablement_setting_binding.json new file mode 100644 index 00000000..d0298df6 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_gemini_gcp_enablement_setting_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.settingBindings.geminiGcpEnablementSettingsCreate", + "cloudaicompanion.settingBindings.geminiGcpEnablementSettingsDelete", + "cloudaicompanion.settingBindings.geminiGcpEnablementSettingsGet", + "cloudaicompanion.settingBindings.geminiGcpEnablementSettingsUpdate" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_logging_setting.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_logging_setting.json new file mode 100644 index 00000000..fcee370f --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_logging_setting.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.loggingSettings.create", + "cloudaicompanion.loggingSettings.delete", + "cloudaicompanion.loggingSettings.get", + "cloudaicompanion.loggingSettings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_logging_setting_binding.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_logging_setting_binding.json new file mode 100644 index 00000000..ca33e164 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_logging_setting_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.settingBindings.loggingSettingsCreate", + "cloudaicompanion.settingBindings.loggingSettingsDelete", + "cloudaicompanion.settingBindings.loggingSettingsGet", + "cloudaicompanion.settingBindings.loggingSettingsUpdate" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_release_channel_setting.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_release_channel_setting.json new file mode 100644 index 00000000..c4adcb70 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_release_channel_setting.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.releaseChannelSettings.create", + "cloudaicompanion.releaseChannelSettings.delete", + "cloudaicompanion.releaseChannelSettings.get", + "cloudaicompanion.releaseChannelSettings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_release_channel_setting_binding.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_release_channel_setting_binding.json new file mode 100644 index 00000000..0f059b11 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_release_channel_setting_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.settingBindings.releaseChannelSettingsCreate", + "cloudaicompanion.settingBindings.releaseChannelSettingsDelete", + "cloudaicompanion.settingBindings.releaseChannelSettingsGet", + "cloudaicompanion.settingBindings.releaseChannelSettingsUpdate" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group.json new file mode 100644 index 00000000..6652c195 --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.repositoryGroups.create", + "cloudaicompanion.repositoryGroups.delete", + "cloudaicompanion.repositoryGroups.get", + "cloudaicompanion.repositoryGroups.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_binding.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_binding.json new file mode 100644 index 00000000..6d39c3bc --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.repositoryGroups.getIamPolicy", + "cloudaicompanion.repositoryGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudaicompanion.repositoryGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_member.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_member.json new file mode 100644 index 00000000..6d39c3bc --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_member.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.repositoryGroups.getIamPolicy", + "cloudaicompanion.repositoryGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudaicompanion.repositoryGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_policy.json b/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_policy.json new file mode 100644 index 00000000..6d39c3bc --- /dev/null +++ b/src/mapping/google/resource/cloudaicompanion/google_gemini_repository_group_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudaicompanion.repositoryGroups.getIamPolicy", + "cloudaicompanion.repositoryGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudaicompanion.repositoryGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/cloudbuild/google_cloudbuild_trigger.json b/src/mapping/google/resource/cloudbuild/google_cloudbuild_trigger.json index e5051fe5..6a8c36df 100644 --- a/src/mapping/google/resource/cloudbuild/google_cloudbuild_trigger.json +++ b/src/mapping/google/resource/cloudbuild/google_cloudbuild_trigger.json @@ -10,6 +10,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "cloudbuild.builds.get" + ] } ] diff --git a/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection.json b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection.json new file mode 100644 index 00000000..ddeb47ed --- /dev/null +++ b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "cloudbuild.connections.create", + "cloudbuild.connections.delete", + "cloudbuild.connections.get", + "cloudbuild.connections.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "cloudbuild.connections.delete" + ], + "modify": [ + "cloudbuild.connections.update" + ], + "plan": [ + "cloudbuild.connections.get" + ] + } +] diff --git a/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_binding.json b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_binding.json new file mode 100644 index 00000000..3633066a --- /dev/null +++ b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_binding.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "cloudbuild.connections.getIamPolicy", + "cloudbuild.connections.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "cloudbuild.connections.setIamPolicy" + ], + "modify": [ + "cloudbuild.connections.setIamPolicy" + ], + "plan": [ + "cloudbuild.connections.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_member.json b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_member.json new file mode 100644 index 00000000..3633066a --- /dev/null +++ b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_member.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "cloudbuild.connections.getIamPolicy", + "cloudbuild.connections.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "cloudbuild.connections.setIamPolicy" + ], + "modify": [ + "cloudbuild.connections.setIamPolicy" + ], + "plan": [ + "cloudbuild.connections.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_policy.json b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_policy.json new file mode 100644 index 00000000..3633066a --- /dev/null +++ b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_connection_iam_policy.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "cloudbuild.connections.getIamPolicy", + "cloudbuild.connections.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "cloudbuild.connections.setIamPolicy" + ], + "modify": [ + "cloudbuild.connections.setIamPolicy" + ], + "plan": [ + "cloudbuild.connections.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_repository.json b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_repository.json new file mode 100644 index 00000000..2b616422 --- /dev/null +++ b/src/mapping/google/resource/cloudbuild/google_cloudbuildv2_repository.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudbuild.repositories.create", + "cloudbuild.repositories.delete", + "cloudbuild.repositories.fetchGitRefs", + "cloudbuild.repositories.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_binding.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_binding.json new file mode 100644 index 00000000..4f97f84e --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "clouddeploy.customTargetTypes.getIamPolicy", + "clouddeploy.customTargetTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_member.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_member.json new file mode 100644 index 00000000..4f97f84e --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "clouddeploy.customTargetTypes.getIamPolicy", + "clouddeploy.customTargetTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_policy.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_policy.json new file mode 100644 index 00000000..86c94851 --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_custom_target_type_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "clouddeploy.customTargetTypes.getIamPolicy", + "clouddeploy.customTargetTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "clouddeploy.customTargetTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_binding.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_binding.json new file mode 100644 index 00000000..252345bd --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "clouddeploy.deliveryPipelines.getIamPolicy", + "clouddeploy.deliveryPipelines.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_member.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_member.json new file mode 100644 index 00000000..252345bd --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "clouddeploy.deliveryPipelines.getIamPolicy", + "clouddeploy.deliveryPipelines.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_policy.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_policy.json new file mode 100644 index 00000000..1d753cd9 --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_delivery_pipeline_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "clouddeploy.deliveryPipelines.getIamPolicy", + "clouddeploy.deliveryPipelines.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "clouddeploy.deliveryPipelines.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_binding.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_binding.json new file mode 100644 index 00000000..c4fff3fc --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "clouddeploy.targets.getIamPolicy", + "clouddeploy.targets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_member.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_member.json new file mode 100644 index 00000000..c4fff3fc --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "clouddeploy.targets.getIamPolicy", + "clouddeploy.targets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_policy.json b/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_policy.json new file mode 100644 index 00000000..57830ad4 --- /dev/null +++ b/src/mapping/google/resource/clouddeploy/google_clouddeploy_target_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "clouddeploy.targets.getIamPolicy", + "clouddeploy.targets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "clouddeploy.targets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function.json b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function.json new file mode 100644 index 00000000..794beaf2 --- /dev/null +++ b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function.json @@ -0,0 +1,24 @@ +[ + { + "apply": [ + "cloudfunctions.functions.create", + "cloudfunctions.functions.get", + "cloudfunctions.functions.update", + "cloudfunctions.functions.delete", + "cloudfunctions.operations.get", + "storage.objects.list" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "cloudfunctions.functions.delete" + ], + "modify": [ + "cloudfunctions.functions.update" + ], + "plan": [ + "cloudfunctions.functions.get" + ] + } +] diff --git a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_binding.json b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_binding.json new file mode 100644 index 00000000..bbce8658 --- /dev/null +++ b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "run.services.getIamPolicy", + "run.services.setIamPolicy", + "cloudfunctions.functions.getIamPolicy", + "cloudfunctions.functions.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_member.json b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_member.json new file mode 100644 index 00000000..bbce8658 --- /dev/null +++ b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_member.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "run.services.getIamPolicy", + "run.services.setIamPolicy", + "cloudfunctions.functions.getIamPolicy", + "cloudfunctions.functions.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_policy.json b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_policy.json new file mode 100644 index 00000000..bbce8658 --- /dev/null +++ b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions2_function_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "run.services.getIamPolicy", + "run.services.setIamPolicy", + "cloudfunctions.functions.getIamPolicy", + "cloudfunctions.functions.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function.json b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function.json index d61d264e..29a714c2 100644 --- a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function.json +++ b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function.json @@ -1,12 +1,12 @@ [ { "apply": [ - "iam.serviceAccounts.actAs", "cloudfunctions.functions.create", "cloudfunctions.operations.get", "cloudfunctions.functions.get", "cloudfunctions.functions.delete", - "cloudfunctions.functions.update" + "cloudfunctions.functions.update", + "storage.objects.list" ], "attributes": { "tags": [] @@ -15,6 +15,8 @@ "cloudfunctions.functions.delete" ], "modify": [], - "plan": [] + "plan": [ + "cloudfunctions.functions.get" + ] } ] diff --git a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function_iam_binding.json b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function_iam_binding.json new file mode 100644 index 00000000..77663d7d --- /dev/null +++ b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "cloudfunctions.functions.setIamPolicy", + "cloudfunctions.functions.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function_iam_policy.json b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function_iam_policy.json index 77663d7d..d77d4ada 100644 --- a/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function_iam_policy.json +++ b/src/mapping/google/resource/cloudfunctions/google_cloudfunctions_function_iam_policy.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "cloudfunctions.functions.getIamPolicy" + ] } ] diff --git a/src/mapping/google/resource/cloudkms/google_kms_crypto_key.json b/src/mapping/google/resource/cloudkms/google_kms_crypto_key.json index fb8cf48f..3bb2dae4 100644 --- a/src/mapping/google/resource/cloudkms/google_kms_crypto_key.json +++ b/src/mapping/google/resource/cloudkms/google_kms_crypto_key.json @@ -1,21 +1,23 @@ -[ - { - "apply": [ - "cloudkms.cryptoKeys.create", - "cloudkms.cryptoKeys.get", - "cloudkms.cryptoKeyVersions.list", - "cloudkms.cryptoKeyVersions.destroy", - "cloudkms.cryptoKeys.update" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "cloudkms.cryptoKeyVersions.destroy" - ], - "modify": [ - "cloudkms.cryptoKeys.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "cloudkms.cryptoKeys.create", + "cloudkms.cryptoKeys.get", + "cloudkms.cryptoKeyVersions.list", + "cloudkms.cryptoKeyVersions.destroy", + "cloudkms.cryptoKeys.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "cloudkms.cryptoKeyVersions.destroy" + ], + "modify": [ + "cloudkms.cryptoKeys.update" + ], + "plan": [ + "cloudkms.cryptoKeys.get" + ] + } +] diff --git a/src/mapping/google/resource/cloudkms/google_kms_crypto_key_iam_policy.json b/src/mapping/google/resource/cloudkms/google_kms_crypto_key_iam_policy.json index 43ac0ca3..6f09d3e1 100644 --- a/src/mapping/google/resource/cloudkms/google_kms_crypto_key_iam_policy.json +++ b/src/mapping/google/resource/cloudkms/google_kms_crypto_key_iam_policy.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "cloudkms.cryptoKeys.getIamPolicy" + ] } ] diff --git a/src/mapping/google/resource/cloudkms/google_kms_crypto_key_version.json b/src/mapping/google/resource/cloudkms/google_kms_crypto_key_version.json new file mode 100644 index 00000000..19b78ad9 --- /dev/null +++ b/src/mapping/google/resource/cloudkms/google_kms_crypto_key_version.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudkms.cryptoKeyVersions.create", + "cloudkms.cryptoKeyVersions.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudkms.cryptoKeyVersions.get" + ] + } +] diff --git a/src/mapping/google/resource/cloudkms/google_kms_key_handle.json b/src/mapping/google/resource/cloudkms/google_kms_key_handle.json new file mode 100644 index 00000000..0559ad5c --- /dev/null +++ b/src/mapping/google/resource/cloudkms/google_kms_key_handle.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudkms.keyHandles.create", + "cloudkms.keyHandles.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudkms.keyHandles.get" + ] + } +] diff --git a/src/mapping/google/resource/cloudkms/google_kms_key_ring.json b/src/mapping/google/resource/cloudkms/google_kms_key_ring.json index 0b29db2b..49f3ef53 100644 --- a/src/mapping/google/resource/cloudkms/google_kms_key_ring.json +++ b/src/mapping/google/resource/cloudkms/google_kms_key_ring.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "cloudkms.keyRings.get" + ] } ] diff --git a/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_binding.json b/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_binding.json new file mode 100644 index 00000000..01220ead --- /dev/null +++ b/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "cloudkms.keyRings.setIamPolicy", + "cloudkms.keyRings.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_member.json b/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_member.json new file mode 100644 index 00000000..01220ead --- /dev/null +++ b/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "cloudkms.keyRings.setIamPolicy", + "cloudkms.keyRings.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_policy.json b/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_policy.json new file mode 100644 index 00000000..cf15ca2c --- /dev/null +++ b/src/mapping/google/resource/cloudkms/google_kms_key_ring_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudkms.keyRings.setIamPolicy", + "cloudkms.keyRings.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudkms.keyRings.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/cloudkms/google_kms_key_ring_import_job.json b/src/mapping/google/resource/cloudkms/google_kms_key_ring_import_job.json new file mode 100644 index 00000000..a962d24e --- /dev/null +++ b/src/mapping/google/resource/cloudkms/google_kms_key_ring_import_job.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "cloudkms.importJobs.create", + "cloudkms.importJobs.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudkms.importJobs.get" + ] + } +] diff --git a/src/mapping/google/resource/cloudkms/google_kms_secret_ciphertext.json b/src/mapping/google/resource/cloudkms/google_kms_secret_ciphertext.json new file mode 100644 index 00000000..4eb63999 --- /dev/null +++ b/src/mapping/google/resource/cloudkms/google_kms_secret_ciphertext.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "cloudkms.cryptoKeyVersions.useToEncrypt" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudsql/google_sql_database.json b/src/mapping/google/resource/cloudsql/google_sql_database.json index 6b085c74..8f2db262 100644 --- a/src/mapping/google/resource/cloudsql/google_sql_database.json +++ b/src/mapping/google/resource/cloudsql/google_sql_database.json @@ -1,20 +1,22 @@ -[ - { - "apply": [ - "cloudsql.databases.create", - "cloudsql.databases.delete", - "cloudsql.databases.get", - "cloudsql.databases.update" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "cloudsql.databases.delete" - ], - "modify": [ - "cloudsql.databases.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "cloudsql.databases.create", + "cloudsql.databases.delete", + "cloudsql.databases.get", + "cloudsql.databases.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "cloudsql.databases.delete" + ], + "modify": [ + "cloudsql.databases.update" + ], + "plan": [ + "cloudsql.databases.get" + ] + } +] diff --git a/src/mapping/google/resource/cloudsql/google_sql_database_instance.json b/src/mapping/google/resource/cloudsql/google_sql_database_instance.json index f6c73287..dfdf682c 100644 --- a/src/mapping/google/resource/cloudsql/google_sql_database_instance.json +++ b/src/mapping/google/resource/cloudsql/google_sql_database_instance.json @@ -1,22 +1,24 @@ -[ - { - "apply": [ - "cloudsql.instances.create", - "cloudsql.instances.get", - "cloudsql.instances.delete", - "cloudsql.instances.update", - "cloudsql.users.list", - "cloudsql.users.delete" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "cloudsql.instances.delete" - ], - "modify": [ - "cloudsql.instances.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "cloudsql.instances.create", + "cloudsql.instances.get", + "cloudsql.instances.delete", + "cloudsql.instances.update", + "cloudsql.users.list", + "cloudsql.users.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "cloudsql.instances.delete" + ], + "modify": [ + "cloudsql.instances.update" + ], + "plan": [ + "cloudsql.instances.get" + ] + } +] diff --git a/src/mapping/google/resource/cloudsql/google_sql_ssl_cert.json b/src/mapping/google/resource/cloudsql/google_sql_ssl_cert.json new file mode 100644 index 00000000..28b71a1c --- /dev/null +++ b/src/mapping/google/resource/cloudsql/google_sql_ssl_cert.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "cloudsql.sslCerts.create", + "cloudsql.sslCerts.delete", + "cloudsql.sslCerts.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_binding.json b/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_binding.json new file mode 100644 index 00000000..b75e4d12 --- /dev/null +++ b/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "cloudtasks.queues.getIamPolicy", + "cloudtasks.queues.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_member.json b/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_member.json new file mode 100644 index 00000000..b75e4d12 --- /dev/null +++ b/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "cloudtasks.queues.getIamPolicy", + "cloudtasks.queues.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_policy.json b/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_policy.json new file mode 100644 index 00000000..54013553 --- /dev/null +++ b/src/mapping/google/resource/cloudtasks/google_cloud_tasks_queue_iam_policy.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "cloudtasks.queues.getIamPolicy", + "cloudtasks.queues.setIamPolicy", + "cloudtasks.queues.list" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "cloudtasks.queues.getIamPolicy", + "cloudtasks.queues.list" + ] + } +] diff --git a/src/mapping/google/resource/composer/google_composer_environment.json b/src/mapping/google/resource/composer/google_composer_environment.json new file mode 100644 index 00000000..6f510229 --- /dev/null +++ b/src/mapping/google/resource/composer/google_composer_environment.json @@ -0,0 +1,24 @@ +[ + { + "apply": [ + "composer.environments.create", + "composer.environments.delete", + "composer.environments.get", + "composer.environments.update", + "iam.serviceAccounts.actAs", + "composer.operations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "composer.environments.delete" + ], + "modify": [ + "composer.environments.update" + ], + "plan": [ + "composer.environments.get" + ] + } +] diff --git a/src/mapping/google/resource/composer/google_composer_user_workloads_config_map.json b/src/mapping/google/resource/composer/google_composer_user_workloads_config_map.json new file mode 100644 index 00000000..cfa782e7 --- /dev/null +++ b/src/mapping/google/resource/composer/google_composer_user_workloads_config_map.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "composer.userworkloadsconfigmaps.create", + "composer.userworkloadsconfigmaps.delete", + "composer.userworkloadsconfigmaps.get", + "composer.userworkloadsconfigmaps.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/composer/google_composer_user_workloads_secret.json b/src/mapping/google/resource/composer/google_composer_user_workloads_secret.json new file mode 100644 index 00000000..084a11c7 --- /dev/null +++ b/src/mapping/google/resource/composer/google_composer_user_workloads_secret.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "composer.userworkloadssecrets.create", + "composer.userworkloadssecrets.delete", + "composer.userworkloadssecrets.get", + "composer.userworkloadssecrets.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_address.json b/src/mapping/google/resource/compute/google_compute_address.json index 7cae8c18..3ee6d9c6 100644 --- a/src/mapping/google/resource/compute/google_compute_address.json +++ b/src/mapping/google/resource/compute/google_compute_address.json @@ -17,6 +17,8 @@ "compute.addresses.delete" ], "modify": [], - "plan": [] + "plan": [ + "compute.addresses.get" + ] } ] diff --git a/src/mapping/google/resource/compute/google_compute_backend_bucket.json b/src/mapping/google/resource/compute/google_compute_backend_bucket.json new file mode 100644 index 00000000..2358f189 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_backend_bucket.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.backendBuckets.create", + "compute.backendBuckets.get", + "compute.backendBuckets.update", + "compute.backendBuckets.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_binding.json b/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_binding.json new file mode 100644 index 00000000..7b36fd5b --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.backendBuckets.setIamPolicy", + "compute.backendBuckets.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_member.json b/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_member.json new file mode 100644 index 00000000..7b36fd5b --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.backendBuckets.setIamPolicy", + "compute.backendBuckets.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_policy.json b/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_policy.json new file mode 100644 index 00000000..53546a85 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_backend_bucket_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.backendBuckets.setIamPolicy", + "compute.backendBuckets.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.backendBuckets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_backend_service.json b/src/mapping/google/resource/compute/google_compute_backend_service.json new file mode 100644 index 00000000..71507945 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_backend_service.json @@ -0,0 +1,19 @@ +[ + { + "apply": [ + "compute.backendServices.create", + "compute.backendServices.get", + "compute.backendServices.update", + "compute.backendServices.delete", + "compute.httpHealthChecks.useReadOnly", + "compute.healthChecks.useReadOnly", + "compute.httpsHealthChecks.useReadOnly" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_backend_service_iam_binding.json b/src/mapping/google/resource/compute/google_compute_backend_service_iam_binding.json new file mode 100644 index 00000000..9453ec82 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_backend_service_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.backendServices.setIamPolicy", + "compute.backendServices.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_backend_service_iam_member.json b/src/mapping/google/resource/compute/google_compute_backend_service_iam_member.json new file mode 100644 index 00000000..9453ec82 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_backend_service_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.backendServices.setIamPolicy", + "compute.backendServices.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_backend_service_iam_policy.json b/src/mapping/google/resource/compute/google_compute_backend_service_iam_policy.json new file mode 100644 index 00000000..a4069e30 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_backend_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.backendServices.setIamPolicy", + "compute.backendServices.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.backendServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_disk_iam_binding.json b/src/mapping/google/resource/compute/google_compute_disk_iam_binding.json new file mode 100644 index 00000000..710e90de --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_disk_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.disks.getIamPolicy", + "compute.disks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_disk_iam_member.json b/src/mapping/google/resource/compute/google_compute_disk_iam_member.json new file mode 100644 index 00000000..710e90de --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_disk_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.disks.getIamPolicy", + "compute.disks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_disk_iam_policy.json b/src/mapping/google/resource/compute/google_compute_disk_iam_policy.json new file mode 100644 index 00000000..85e1fa03 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_disk_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.disks.getIamPolicy", + "compute.disks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.disks.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_forwarding_rule.json b/src/mapping/google/resource/compute/google_compute_forwarding_rule.json new file mode 100644 index 00000000..ccaae82b --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_forwarding_rule.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.forwardingRules.delete", + "compute.forwardingRules.create", + "compute.forwardingRules.get", + "compute.forwardingRules.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_global_address.json b/src/mapping/google/resource/compute/google_compute_global_address.json index 5b2b2490..187f3bd4 100644 --- a/src/mapping/google/resource/compute/google_compute_global_address.json +++ b/src/mapping/google/resource/compute/google_compute_global_address.json @@ -15,6 +15,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "compute.globalAddresses.get" + ] } ] diff --git a/src/mapping/google/resource/compute/google_compute_global_forwarding_rule.json b/src/mapping/google/resource/compute/google_compute_global_forwarding_rule.json new file mode 100644 index 00000000..98ef98a8 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_global_forwarding_rule.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.globalForwardingRules.delete", + "compute.globalForwardingRules.create", + "compute.globalForwardingRules.get", + "compute.globalForwardingRules.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_global_network_endpoint_group.json b/src/mapping/google/resource/compute/google_compute_global_network_endpoint_group.json new file mode 100644 index 00000000..fbecb55f --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_global_network_endpoint_group.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.globalNetworkEndpointGroups.delete", + "compute.globalNetworkEndpointGroups.get", + "compute.globalNetworkEndpointGroups.create", + "compute.globalOperations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_health_check.json b/src/mapping/google/resource/compute/google_compute_health_check.json new file mode 100644 index 00000000..3ec76cfd --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_health_check.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "compute.healthChecks.create", + "compute.healthChecks.delete", + "compute.healthChecks.update", + "compute.healthChecks.get", + "compute.globalOperations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_http_health_check.json b/src/mapping/google/resource/compute/google_compute_http_health_check.json new file mode 100644 index 00000000..842e0a6f --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_http_health_check.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.httpHealthChecks.create", + "compute.httpHealthChecks.get", + "compute.httpHealthChecks.update", + "compute.httpHealthChecks.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_https_health_check.json b/src/mapping/google/resource/compute/google_compute_https_health_check.json new file mode 100644 index 00000000..9152f969 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_https_health_check.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "compute.httpsHealthChecks.create", + "compute.httpsHealthChecks.get", + "compute.httpsHealthChecks.update", + "compute.httpsHealthChecks.delete", + "compute.globalOperations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_image_iam_binding.json b/src/mapping/google/resource/compute/google_compute_image_iam_binding.json new file mode 100644 index 00000000..8ec5191f --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_image_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.images.getIamPolicy", + "compute.images.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_image_iam_member.json b/src/mapping/google/resource/compute/google_compute_image_iam_member.json new file mode 100644 index 00000000..8ec5191f --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_image_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.images.getIamPolicy", + "compute.images.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_image_iam_policy.json b/src/mapping/google/resource/compute/google_compute_image_iam_policy.json new file mode 100644 index 00000000..ef9898b4 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_image_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.images.getIamPolicy", + "compute.images.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.images.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instance.json b/src/mapping/google/resource/compute/google_compute_instance.json index 111ca465..8600589f 100644 --- a/src/mapping/google/resource/compute/google_compute_instance.json +++ b/src/mapping/google/resource/compute/google_compute_instance.json @@ -20,6 +20,8 @@ "compute.instances.delete" ], "modify": [], - "plan": [] + "plan": [ + "compute.instances.get" + ] } ] diff --git a/src/mapping/google/resource/compute/google_compute_instance_iam_binding.json b/src/mapping/google/resource/compute/google_compute_instance_iam_binding.json new file mode 100644 index 00000000..4334d995 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instance_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.instances.getIamPolicy", + "compute.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instance_iam_member.json b/src/mapping/google/resource/compute/google_compute_instance_iam_member.json new file mode 100644 index 00000000..4334d995 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instance_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.instances.getIamPolicy", + "compute.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instance_iam_policy.json b/src/mapping/google/resource/compute/google_compute_instance_iam_policy.json new file mode 100644 index 00000000..4334d995 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instance_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.instances.getIamPolicy", + "compute.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instance_template.json b/src/mapping/google/resource/compute/google_compute_instance_template.json index cc2d5d4b..4e86c569 100644 --- a/src/mapping/google/resource/compute/google_compute_instance_template.json +++ b/src/mapping/google/resource/compute/google_compute_instance_template.json @@ -13,6 +13,8 @@ "compute.instanceTemplates.delete" ], "modify": [], - "plan": [] + "plan": [ + "compute.instanceTemplates.get" + ] } ] diff --git a/src/mapping/google/resource/compute/google_compute_instance_template_iam_binding.json b/src/mapping/google/resource/compute/google_compute_instance_template_iam_binding.json new file mode 100644 index 00000000..1aab841c --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instance_template_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.instanceTemplates.getIamPolicy", + "compute.instanceTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instance_template_iam_member.json b/src/mapping/google/resource/compute/google_compute_instance_template_iam_member.json new file mode 100644 index 00000000..1aab841c --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instance_template_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.instanceTemplates.getIamPolicy", + "compute.instanceTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instance_template_iam_policy.json b/src/mapping/google/resource/compute/google_compute_instance_template_iam_policy.json new file mode 100644 index 00000000..54187607 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instance_template_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.instanceTemplates.getIamPolicy", + "compute.instanceTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.instanceTemplates.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_binding.json b/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_binding.json new file mode 100644 index 00000000..54a48d6c --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.instantSnapshots.getIamPolicy", + "compute.instantSnapshots.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_member.json b/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_member.json new file mode 100644 index 00000000..54a48d6c --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.instantSnapshots.getIamPolicy", + "compute.instantSnapshots.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_policy.json b/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_policy.json new file mode 100644 index 00000000..055038da --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_instant_snapshot_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.instantSnapshots.getIamPolicy", + "compute.instantSnapshots.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.instantSnapshots.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_machine_image_iam_binding.json b/src/mapping/google/resource/compute/google_compute_machine_image_iam_binding.json new file mode 100644 index 00000000..7f170c84 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_machine_image_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.machineImages.getIamPolicy", + "compute.machineImages.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_machine_image_iam_member.json b/src/mapping/google/resource/compute/google_compute_machine_image_iam_member.json new file mode 100644 index 00000000..7f170c84 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_machine_image_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.machineImages.getIamPolicy", + "compute.machineImages.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_machine_image_iam_policy.json b/src/mapping/google/resource/compute/google_compute_machine_image_iam_policy.json new file mode 100644 index 00000000..4faa0149 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_machine_image_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.machineImages.getIamPolicy", + "compute.machineImages.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.machineImages.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_network.json b/src/mapping/google/resource/compute/google_compute_network.json index 61516d5f..627bb0fa 100644 --- a/src/mapping/google/resource/compute/google_compute_network.json +++ b/src/mapping/google/resource/compute/google_compute_network.json @@ -1,16 +1,18 @@ -[ - { - "apply": [ - "compute.networks.create", - "compute.networks.get" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "compute.networks.delete" - ], - "modify": [], - "plan": [] - } -] +[ + { + "apply": [ + "compute.networks.create", + "compute.networks.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "compute.networks.delete" + ], + "modify": [], + "plan": [ + "compute.networks.get" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_network_attachment.json b/src/mapping/google/resource/compute/google_compute_network_attachment.json new file mode 100644 index 00000000..10dc9ec7 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_network_attachment.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.networkAttachments.create", + "compute.networkAttachments.delete", + "compute.networkAttachments.update", + "compute.networkAttachments.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_network_endpoint_group.json b/src/mapping/google/resource/compute/google_compute_network_endpoint_group.json new file mode 100644 index 00000000..42356cd8 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_network_endpoint_group.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "compute.networkEndpointGroups.create", + "compute.networkEndpointGroups.get", + "compute.networkEndpointGroups.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_backend_service.json b/src/mapping/google/resource/compute/google_compute_region_backend_service.json new file mode 100644 index 00000000..8a41913d --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_backend_service.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "compute.regionBackendServices.create", + "compute.regionBackendServices.get", + "compute.regionBackendServices.update", + "compute.regionBackendServices.delete", + "compute.healthChecks.useReadOnly", + "compute.httpHealthChecks.useReadOnly", + "compute.httpsHealthChecks.useReadOnly", + "compute.regionHealthChecks.useReadOnly" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_binding.json b/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_binding.json new file mode 100644 index 00000000..c5f8e63b --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.regionBackendServices.getIamPolicy", + "compute.regionBackendServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_member.json b/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_member.json new file mode 100644 index 00000000..c5f8e63b --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.regionBackendServices.getIamPolicy", + "compute.regionBackendServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_policy.json b/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_policy.json new file mode 100644 index 00000000..9c0e8c4f --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_backend_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.regionBackendServices.getIamPolicy", + "compute.regionBackendServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.regionBackendServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_disk_iam_binding.json b/src/mapping/google/resource/compute/google_compute_region_disk_iam_binding.json new file mode 100644 index 00000000..710e90de --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_disk_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.disks.getIamPolicy", + "compute.disks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_disk_iam_member.json b/src/mapping/google/resource/compute/google_compute_region_disk_iam_member.json new file mode 100644 index 00000000..710e90de --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_disk_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.disks.getIamPolicy", + "compute.disks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_disk_iam_policy.json b/src/mapping/google/resource/compute/google_compute_region_disk_iam_policy.json new file mode 100644 index 00000000..c257cb5f --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_disk_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.disks.getIamPolicy", + "compute.disks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.disks.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_health_check.json b/src/mapping/google/resource/compute/google_compute_region_health_check.json new file mode 100644 index 00000000..203d7af2 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_health_check.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.regionHealthChecks.create", + "compute.regionHealthChecks.delete", + "compute.regionHealthChecks.update", + "compute.regionHealthChecks.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_network_endpoint_group.json b/src/mapping/google/resource/compute/google_compute_region_network_endpoint_group.json new file mode 100644 index 00000000..7aaaa748 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_network_endpoint_group.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.regionNetworkEndpointGroups.create", + "compute.regionNetworkEndpointGroups.get", + "compute.regionNetworkEndpointGroups.delete", + "compute.regionOperations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_target_http_proxy.json b/src/mapping/google/resource/compute/google_compute_region_target_http_proxy.json new file mode 100644 index 00000000..4839531e --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_target_http_proxy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.regionTargetHttpProxies.create", + "compute.regionTargetHttpProxies.get", + "compute.regionTargetHttpProxies.update", + "compute.regionTargetHttpProxies.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_target_https_proxy.json b/src/mapping/google/resource/compute/google_compute_region_target_https_proxy.json new file mode 100644 index 00000000..be23d36e --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_target_https_proxy.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "compute.regionTargetHttpsProxies.create", + "compute.regionTargetHttpsProxies.get", + "compute.regionTargetHttpsProxies.update", + "compute.regionTargetHttpsProxies.delete" + ], + "attributes": { + "ssl_certificates": [ + "compute.regionSslCertificates.get", + "compute.regionTargetHttpsProxies.setSslCertificates" + ], + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_target_tcp_proxy.json b/src/mapping/google/resource/compute/google_compute_region_target_tcp_proxy.json new file mode 100644 index 00000000..6257df9c --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_target_tcp_proxy.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "compute.regionTargetTcpProxies.create", + "compute.regionTargetTcpProxies.get", + "compute.regionTargetTcpProxies.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_region_url_map.json b/src/mapping/google/resource/compute/google_compute_region_url_map.json new file mode 100644 index 00000000..2f8325fc --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_region_url_map.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "compute.regionBackendServices.use", + "compute.regionUrlMaps.create", + "compute.regionUrlMaps.get", + "compute.regionUrlMaps.update", + "compute.regionUrlMaps.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_snapshot_iam_binding.json b/src/mapping/google/resource/compute/google_compute_snapshot_iam_binding.json new file mode 100644 index 00000000..d98fcab2 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_snapshot_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.snapshots.getIamPolicy", + "compute.snapshots.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_snapshot_iam_member.json b/src/mapping/google/resource/compute/google_compute_snapshot_iam_member.json new file mode 100644 index 00000000..d98fcab2 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_snapshot_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.snapshots.getIamPolicy", + "compute.snapshots.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_snapshot_iam_policy.json b/src/mapping/google/resource/compute/google_compute_snapshot_iam_policy.json new file mode 100644 index 00000000..81f35406 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_snapshot_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.snapshots.getIamPolicy", + "compute.snapshots.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.snapshots.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_storage_pool_iam_binding.json b/src/mapping/google/resource/compute/google_compute_storage_pool_iam_binding.json new file mode 100644 index 00000000..7714b4b3 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_storage_pool_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.storagePools.getIamPolicy", + "compute.storagePools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_storage_pool_iam_member.json b/src/mapping/google/resource/compute/google_compute_storage_pool_iam_member.json new file mode 100644 index 00000000..7714b4b3 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_storage_pool_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.storagePools.getIamPolicy", + "compute.storagePools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_storage_pool_iam_policy.json b/src/mapping/google/resource/compute/google_compute_storage_pool_iam_policy.json new file mode 100644 index 00000000..cb3f877a --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_storage_pool_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.storagePools.getIamPolicy", + "compute.storagePools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.storagePools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_subnetwork.json b/src/mapping/google/resource/compute/google_compute_subnetwork.json index d2d7e58e..efac1fa8 100644 --- a/src/mapping/google/resource/compute/google_compute_subnetwork.json +++ b/src/mapping/google/resource/compute/google_compute_subnetwork.json @@ -13,6 +13,8 @@ "compute.subnetworks.delete" ], "modify": [], - "plan": [] + "plan": [ + "compute.subnetworks.get" + ] } ] diff --git a/src/mapping/google/resource/compute/google_compute_subnetwork_iam_binding.json b/src/mapping/google/resource/compute/google_compute_subnetwork_iam_binding.json new file mode 100644 index 00000000..18d45216 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_subnetwork_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "compute.subnetworks.getIamPolicy", + "compute.subnetworks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_subnetwork_iam_member.json b/src/mapping/google/resource/compute/google_compute_subnetwork_iam_member.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_subnetwork_iam_member.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_subnetwork_iam_policy.json b/src/mapping/google/resource/compute/google_compute_subnetwork_iam_policy.json new file mode 100644 index 00000000..5575bb10 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_subnetwork_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.subnetworks.getIamPolicy", + "compute.subnetworks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "compute.subnetworks.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_target_http_proxy.json b/src/mapping/google/resource/compute/google_compute_target_http_proxy.json new file mode 100644 index 00000000..889d00d3 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_target_http_proxy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.targetHttpProxies.create", + "compute.targetHttpProxies.delete", + "compute.targetHttpProxies.update", + "compute.targetHttpProxies.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_target_https_proxy.json b/src/mapping/google/resource/compute/google_compute_target_https_proxy.json new file mode 100644 index 00000000..8ec69317 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_target_https_proxy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "compute.targetHttpsProxies.create", + "compute.targetHttpsProxies.delete", + "compute.targetHttpsProxies.update", + "compute.targetHttpsProxies.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_compute_url_map.json b/src/mapping/google/resource/compute/google_compute_url_map.json new file mode 100644 index 00000000..481225c1 --- /dev/null +++ b/src/mapping/google/resource/compute/google_compute_url_map.json @@ -0,0 +1,18 @@ +[ + { + "apply": [ + "compute.backendBuckets.use", + "compute.backendServices.use", + "compute.urlMaps.create", + "compute.urlMaps.get", + "compute.urlMaps.update", + "compute.urlMaps.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/compute/google_project_usage_export_bucket.json b/src/mapping/google/resource/compute/google_project_usage_export_bucket.json new file mode 100644 index 00000000..6031d67b --- /dev/null +++ b/src/mapping/google/resource/compute/google_project_usage_export_bucket.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "compute.projects.setUsageExportBucket", + "compute.globalOperations.get", + "compute.projects.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/contactcenterinsights/google_contact_center_insights_analysis_rule.json b/src/mapping/google/resource/contactcenterinsights/google_contact_center_insights_analysis_rule.json new file mode 100644 index 00000000..9ecc7e83 --- /dev/null +++ b/src/mapping/google/resource/contactcenterinsights/google_contact_center_insights_analysis_rule.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "contactcenterinsights.analysisRules.create", + "contactcenterinsights.analysisRules.delete", + "contactcenterinsights.analysisRules.get", + "contactcenterinsights.analysisRules.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/contactcenterinsights/google_contact_center_insights_view.json b/src/mapping/google/resource/contactcenterinsights/google_contact_center_insights_view.json new file mode 100644 index 00000000..9d63fe76 --- /dev/null +++ b/src/mapping/google/resource/contactcenterinsights/google_contact_center_insights_view.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "contactcenterinsights.views.create", + "contactcenterinsights.views.delete", + "contactcenterinsights.views.get", + "contactcenterinsights.views.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/container/google_container_cluster.json b/src/mapping/google/resource/container/google_container_cluster.json index 59446403..5ac2b910 100644 --- a/src/mapping/google/resource/container/google_container_cluster.json +++ b/src/mapping/google/resource/container/google_container_cluster.json @@ -1,22 +1,24 @@ -[ - { - "apply": [ - "container.clusters.create", - "container.operations.get", - "container.clusters.get", - "compute.instanceGroupManagers.get", - "container.clusters.delete", - "container.clusters.update" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "container.clusters.delete" - ], - "modify": [ - "container.clusters.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "container.clusters.create", + "container.operations.get", + "container.clusters.get", + "compute.instanceGroupManagers.get", + "container.clusters.delete", + "container.clusters.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "container.clusters.delete" + ], + "modify": [ + "container.clusters.update" + ], + "plan": [ + "container.clusters.get" + ] + } +] diff --git a/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_binding.json b/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_binding.json new file mode 100644 index 00000000..6b0f4bc4 --- /dev/null +++ b/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "containeranalysis.notes.getIamPolicy", + "containeranalysis.notes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_member.json b/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_member.json new file mode 100644 index 00000000..6b0f4bc4 --- /dev/null +++ b/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "containeranalysis.notes.getIamPolicy", + "containeranalysis.notes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_policy.json b/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_policy.json new file mode 100644 index 00000000..cc44d773 --- /dev/null +++ b/src/mapping/google/resource/containeranalysis/google_container_analysis_note_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "containeranalysis.notes.getIamPolicy", + "containeranalysis.notes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "containeranalysis.notes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy.json b/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy.json new file mode 100644 index 00000000..f4482a6f --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.setIamPolicy", + "datacatalog.tagTemplates.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_binding.json b/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_binding.json new file mode 100644 index 00000000..f4482a6f --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.setIamPolicy", + "datacatalog.tagTemplates.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_member.json b/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_member.json new file mode 100644 index 00000000..f4482a6f --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.setIamPolicy", + "datacatalog.tagTemplates.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_policy.json b/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_policy.json new file mode 100644 index 00000000..f4482a6f --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_bigquery_datapolicy_data_policy_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.setIamPolicy", + "datacatalog.tagTemplates.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_entry.json b/src/mapping/google/resource/datacatalog/google_data_catalog_entry.json new file mode 100644 index 00000000..bfdc63a3 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_entry.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "datacatalog.entries.create", + "datacatalog.entries.get", + "datacatalog.entries.update", + "datacatalog.entries.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "datacatalog.entries.delete" + ], + "modify": [ + "datacatalog.entries.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group.json b/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group.json new file mode 100644 index 00000000..05f217a1 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "datacatalog.entryGroups.create", + "datacatalog.entryGroups.get", + "datacatalog.entryGroups.update", + "datacatalog.entryGroups.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "datacatalog.entryGroups.delete" + ], + "modify": [ + "datacatalog.entryGroups.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_binding.json b/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_binding.json new file mode 100644 index 00000000..506d3f61 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.entryGroups.setIamPolicy", + "datacatalog.entryGroups.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_member.json b/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_member.json new file mode 100644 index 00000000..506d3f61 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.entryGroups.setIamPolicy", + "datacatalog.entryGroups.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_policy.json b/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_policy.json new file mode 100644 index 00000000..506d3f61 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_entry_group_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.entryGroups.setIamPolicy", + "datacatalog.entryGroups.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag.json b/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_binding.json b/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_binding.json new file mode 100644 index 00000000..c3c2c148 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.categories.getIamPolicy", + "datacatalog.categories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_member.json b/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_member.json new file mode 100644 index 00000000..ee196a44 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.categories.getIamPolicy", + "datacatalog.categories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_policy.json b/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_policy.json new file mode 100644 index 00000000..c3c2c148 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_policy_tag_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.categories.getIamPolicy", + "datacatalog.categories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_tag.json b/src/mapping/google/resource/datacatalog/google_data_catalog_tag.json new file mode 100644 index 00000000..77b6b2d3 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_tag.json @@ -0,0 +1,21 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.get", + "datacatalog.tagTemplates.getTag", + "datacatalog.tagTemplates.use", + "datacatalog.tagTemplates.delete", + "datacatalog.entries.updateTag" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "datacatalog.tagTemplates.delete" + ], + "modify": [ + "datacatalog.entries.updateTag" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template.json b/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template.json new file mode 100644 index 00000000..ad05a33f --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.create", + "datacatalog.tagTemplates.getIamPolicy", + "datacatalog.tagTemplates.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_binding.json b/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_binding.json new file mode 100644 index 00000000..f4482a6f --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.setIamPolicy", + "datacatalog.tagTemplates.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_member.json b/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_member.json new file mode 100644 index 00000000..f4482a6f --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.setIamPolicy", + "datacatalog.tagTemplates.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_policy.json b/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_policy.json new file mode 100644 index 00000000..f4482a6f --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_tag_template_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.tagTemplates.setIamPolicy", + "datacatalog.tagTemplates.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy.json b/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy.json new file mode 100644 index 00000000..9ad67899 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "datacatalog.taxonomies.create", + "datacatalog.taxonomies.get", + "datacatalog.taxonomies.update", + "datacatalog.taxonomies.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "datacatalog.taxonomies.delete" + ], + "modify": [ + "datacatalog.taxonomies.update" + ], + "plan": [ + "datacatalog.taxonomies.get" + ] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_binding.json b/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_binding.json new file mode 100644 index 00000000..cfab57bb --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.taxonomies.setIamPolicy", + "datacatalog.taxonomies.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_member.json b/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_member.json new file mode 100644 index 00000000..cfab57bb --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datacatalog.taxonomies.setIamPolicy", + "datacatalog.taxonomies.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_policy.json b/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_policy.json new file mode 100644 index 00000000..c257ce68 --- /dev/null +++ b/src/mapping/google/resource/datacatalog/google_data_catalog_taxonomy_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "datacatalog.taxonomies.setIamPolicy", + "datacatalog.taxonomies.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "datacatalog.taxonomies.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataflow/google_dataflow_job.json b/src/mapping/google/resource/dataflow/google_dataflow_job.json new file mode 100644 index 00000000..4562a75f --- /dev/null +++ b/src/mapping/google/resource/dataflow/google_dataflow_job.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "resourcemanager.projects.get", + "dataflow.jobs.create", + "dataflow.jobs.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataform/google_dataform_repository.json b/src/mapping/google/resource/dataform/google_dataform_repository.json new file mode 100644 index 00000000..da37c3fb --- /dev/null +++ b/src/mapping/google/resource/dataform/google_dataform_repository.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "dataform.repositories.create", + "dataform.repositories.get", + "dataform.repositories.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataform/google_dataform_repository_iam_binding.json b/src/mapping/google/resource/dataform/google_dataform_repository_iam_binding.json new file mode 100644 index 00000000..945538b1 --- /dev/null +++ b/src/mapping/google/resource/dataform/google_dataform_repository_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataform.repositories.getIamPolicy", + "dataform.repositories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataform/google_dataform_repository_iam_member.json b/src/mapping/google/resource/dataform/google_dataform_repository_iam_member.json new file mode 100644 index 00000000..945538b1 --- /dev/null +++ b/src/mapping/google/resource/dataform/google_dataform_repository_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataform.repositories.getIamPolicy", + "dataform.repositories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataform/google_dataform_repository_iam_policy.json b/src/mapping/google/resource/dataform/google_dataform_repository_iam_policy.json new file mode 100644 index 00000000..f84ffe5e --- /dev/null +++ b/src/mapping/google/resource/dataform/google_dataform_repository_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataform.repositories.getIamPolicy", + "dataform.repositories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataform.repositories.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataform/google_dataform_repository_release_config.json b/src/mapping/google/resource/dataform/google_dataform_repository_release_config.json new file mode 100644 index 00000000..038bee36 --- /dev/null +++ b/src/mapping/google/resource/dataform/google_dataform_repository_release_config.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataform.releaseConfigs.create", + "dataform.releaseConfigs.get", + "dataform.releaseConfigs.update", + "dataform.releaseConfigs.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataform/google_dataform_repository_workflow_config.json b/src/mapping/google/resource/dataform/google_dataform_repository_workflow_config.json new file mode 100644 index 00000000..1bb346ec --- /dev/null +++ b/src/mapping/google/resource/dataform/google_dataform_repository_workflow_config.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataform.workflowConfigs.create", + "dataform.workflowConfigs.get", + "dataform.workflowConfigs.update", + "dataform.workflowConfigs.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_binding.json b/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_binding.json new file mode 100644 index 00000000..a70aae7c --- /dev/null +++ b/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datafusion.instances.getIamPolicy", + "datafusion.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_member.json b/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_member.json new file mode 100644 index 00000000..a70aae7c --- /dev/null +++ b/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "datafusion.instances.getIamPolicy", + "datafusion.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_policy.json b/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_policy.json new file mode 100644 index 00000000..b89ee453 --- /dev/null +++ b/src/mapping/google/resource/datafusion/google_data_fusion_instance_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "datafusion.instances.getIamPolicy", + "datafusion.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "datafusion.instances.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_aspect_type.json b/src/mapping/google/resource/dataplex/google_dataplex_aspect_type.json new file mode 100644 index 00000000..c37476af --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_aspect_type.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.aspectTypes.create", + "dataplex.aspectTypes.delete", + "dataplex.aspectTypes.get", + "dataplex.aspectTypes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_binding.json new file mode 100644 index 00000000..05fc6b20 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.aspectTypes.getIamPolicy", + "dataplex.aspectTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_member.json new file mode 100644 index 00000000..05fc6b20 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.aspectTypes.getIamPolicy", + "dataplex.aspectTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_policy.json new file mode 100644 index 00000000..7c76e4b5 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_aspect_type_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.aspectTypes.getIamPolicy", + "dataplex.aspectTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.aspectTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_asset.json b/src/mapping/google/resource/dataplex/google_dataplex_asset.json new file mode 100644 index 00000000..fd5bce16 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_asset.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.assets.create", + "dataplex.assets.delete", + "dataplex.assets.get", + "dataplex.assets.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_binding.json new file mode 100644 index 00000000..373e1c4b --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.assets.getIamPolicy", + "dataplex.assets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_member.json new file mode 100644 index 00000000..373e1c4b --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.assets.getIamPolicy", + "dataplex.assets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_policy.json new file mode 100644 index 00000000..d80ff76c --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_asset_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.assets.getIamPolicy", + "dataplex.assets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.assets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_datascan.json b/src/mapping/google/resource/dataplex/google_dataplex_datascan.json new file mode 100644 index 00000000..18e60a74 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_datascan.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.datascans.create", + "dataplex.datascans.delete", + "dataplex.datascans.get", + "dataplex.datascans.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_binding.json new file mode 100644 index 00000000..54172815 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.datascans.getIamPolicy", + "dataplex.datascans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_member.json new file mode 100644 index 00000000..54172815 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.datascans.getIamPolicy", + "dataplex.datascans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_policy.json new file mode 100644 index 00000000..b2e1eef7 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_datascan_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.datascans.getIamPolicy", + "dataplex.datascans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.datascans.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry.json b/src/mapping/google/resource/dataplex/google_dataplex_entry.json new file mode 100644 index 00000000..cf24b229 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.entries.create", + "dataplex.entries.delete", + "dataplex.entries.get", + "dataplex.entries.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry_group.json b/src/mapping/google/resource/dataplex/google_dataplex_entry_group.json new file mode 100644 index 00000000..a4b1b19c --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry_group.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.entryGroups.create", + "dataplex.entryGroups.delete", + "dataplex.entryGroups.get", + "dataplex.entryGroups.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_binding.json new file mode 100644 index 00000000..71fca963 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.entryGroups.getIamPolicy", + "dataplex.entryGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_member.json new file mode 100644 index 00000000..71fca963 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.entryGroups.getIamPolicy", + "dataplex.entryGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_policy.json new file mode 100644 index 00000000..22829f17 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry_group_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.entryGroups.getIamPolicy", + "dataplex.entryGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.entryGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry_type.json b/src/mapping/google/resource/dataplex/google_dataplex_entry_type.json new file mode 100644 index 00000000..b7c13bb1 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry_type.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.entryTypes.create", + "dataplex.entryTypes.delete", + "dataplex.entryTypes.get", + "dataplex.entryTypes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_binding.json new file mode 100644 index 00000000..025abc2c --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.entryTypes.getIamPolicy", + "dataplex.entryTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_member.json new file mode 100644 index 00000000..025abc2c --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.entryTypes.getIamPolicy", + "dataplex.entryTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_policy.json new file mode 100644 index 00000000..c08904bf --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_entry_type_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.entryTypes.getIamPolicy", + "dataplex.entryTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.entryTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_glossary.json b/src/mapping/google/resource/dataplex/google_dataplex_glossary.json new file mode 100644 index 00000000..d7452cbb --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_glossary.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "dataplex.glossaries.create", + "dataplex.glossaries.get", + "dataplex.glossaries.update", + "dataplex.operations.get", + "dataplex.glossaries.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_glossary_category.json b/src/mapping/google/resource/dataplex/google_dataplex_glossary_category.json new file mode 100644 index 00000000..bbbc5abd --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_glossary_category.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.glossaryCategories.create", + "dataplex.glossaryCategories.get", + "dataplex.glossaryCategories.update", + "dataplex.glossaryCategories.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_binding.json new file mode 100644 index 00000000..a80e4286 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.glossaries.getIamPolicy", + "dataplex.glossaries.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_member.json new file mode 100644 index 00000000..a80e4286 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.glossaries.getIamPolicy", + "dataplex.glossaries.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_policy.json new file mode 100644 index 00000000..d44a08bf --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_glossary_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.glossaries.getIamPolicy", + "dataplex.glossaries.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.glossaries.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_glossary_term.json b/src/mapping/google/resource/dataplex/google_dataplex_glossary_term.json new file mode 100644 index 00000000..5865073a --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_glossary_term.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.glossaryTerms.create", + "dataplex.glossaryTerms.get", + "dataplex.glossaryTerms.update", + "dataplex.glossaryTerms.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_lake.json b/src/mapping/google/resource/dataplex/google_dataplex_lake.json new file mode 100644 index 00000000..278ae353 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_lake.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.lakes.create", + "dataplex.lakes.delete", + "dataplex.lakes.get", + "dataplex.lakes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_binding.json new file mode 100644 index 00000000..d2e1276d --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.lakes.setIamPolicy", + "dataplex.lakes.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_member.json new file mode 100644 index 00000000..d2e1276d --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.lakes.setIamPolicy", + "dataplex.lakes.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_policy.json new file mode 100644 index 00000000..4800f72e --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_lake_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.lakes.setIamPolicy", + "dataplex.lakes.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.lakes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_task.json b/src/mapping/google/resource/dataplex/google_dataplex_task.json new file mode 100644 index 00000000..d0a43fa1 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_task.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.tasks.create", + "dataplex.tasks.delete", + "dataplex.tasks.get", + "dataplex.tasks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_task_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_task_iam_binding.json new file mode 100644 index 00000000..a0487f9a --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_task_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.tasks.getIamPolicy", + "dataplex.tasks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_task_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_task_iam_member.json new file mode 100644 index 00000000..a0487f9a --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_task_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.tasks.getIamPolicy", + "dataplex.tasks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_task_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_task_iam_policy.json new file mode 100644 index 00000000..89c0645e --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_task_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.tasks.getIamPolicy", + "dataplex.tasks.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.tasks.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_zone.json b/src/mapping/google/resource/dataplex/google_dataplex_zone.json new file mode 100644 index 00000000..eb4b730c --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_zone.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.zones.create", + "dataplex.zones.delete", + "dataplex.zones.get", + "dataplex.zones.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_binding.json b/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_binding.json new file mode 100644 index 00000000..27938fa5 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.zones.getIamPolicy", + "dataplex.zones.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_member.json b/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_member.json new file mode 100644 index 00000000..27938fa5 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataplex.zones.getIamPolicy", + "dataplex.zones.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_policy.json b/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_policy.json new file mode 100644 index 00000000..54a95c83 --- /dev/null +++ b/src/mapping/google/resource/dataplex/google_dataplex_zone_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataplex.zones.getIamPolicy", + "dataplex.zones.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dataplex.zones.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy.json b/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy.json new file mode 100644 index 00000000..e09fa3f6 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataproc.autoscalingPolicies.update", + "dataproc.autoscalingPolicies.get", + "dataproc.autoscalingPolicies.delete", + "dataproc.autoscalingPolicies.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_binding.json b/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_binding.json new file mode 100644 index 00000000..5254b2d9 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.autoscalingPolicies.getIamPolicy", + "dataproc.autoscalingPolicies.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_member.json b/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_member.json new file mode 100644 index 00000000..5254b2d9 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.autoscalingPolicies.getIamPolicy", + "dataproc.autoscalingPolicies.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_policy.json b/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_policy.json new file mode 100644 index 00000000..5254b2d9 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_autoscaling_policy_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.autoscalingPolicies.getIamPolicy", + "dataproc.autoscalingPolicies.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_batch.json b/src/mapping/google/resource/dataproc/google_dataproc_batch.json new file mode 100644 index 00000000..5b72d8f0 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_batch.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "dataproc.batches.get", + "dataproc.batches.delete", + "dataproc.batches.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_cluster.json b/src/mapping/google/resource/dataproc/google_dataproc_cluster.json new file mode 100644 index 00000000..30e38690 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_cluster.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataproc.clusters.update", + "dataproc.clusters.get", + "dataproc.clusters.delete", + "dataproc.clusters.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_binding.json b/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_binding.json new file mode 100644 index 00000000..30eeb478 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.clusters.getIamPolicy", + "dataproc.clusters.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_member.json b/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_member.json new file mode 100644 index 00000000..30eeb478 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.clusters.getIamPolicy", + "dataproc.clusters.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_policy.json b/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_policy.json new file mode 100644 index 00000000..30eeb478 --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_cluster_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.clusters.getIamPolicy", + "dataproc.clusters.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_job.json b/src/mapping/google/resource/dataproc/google_dataproc_job.json new file mode 100644 index 00000000..153afa8d --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_job.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataproc.jobs.update", + "dataproc.jobs.get", + "dataproc.jobs.delete", + "dataproc.jobs.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_job_iam_binding.json b/src/mapping/google/resource/dataproc/google_dataproc_job_iam_binding.json new file mode 100644 index 00000000..382d37ce --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_job_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.jobs.getIamPolicy", + "dataproc.jobs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_job_iam_member.json b/src/mapping/google/resource/dataproc/google_dataproc_job_iam_member.json new file mode 100644 index 00000000..382d37ce --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_job_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.jobs.getIamPolicy", + "dataproc.jobs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_job_iam_policy.json b/src/mapping/google/resource/dataproc/google_dataproc_job_iam_policy.json new file mode 100644 index 00000000..382d37ce --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_job_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dataproc.jobs.getIamPolicy", + "dataproc.jobs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_session_template.json b/src/mapping/google/resource/dataproc/google_dataproc_session_template.json new file mode 100644 index 00000000..ea0a508b --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_session_template.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataproc.sessionTemplates.update", + "dataproc.sessionTemplates.get", + "dataproc.sessionTemplates.delete", + "dataproc.sessionTemplates.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dataproc/google_dataproc_workflow_template.json b/src/mapping/google/resource/dataproc/google_dataproc_workflow_template.json new file mode 100644 index 00000000..dac21daa --- /dev/null +++ b/src/mapping/google/resource/dataproc/google_dataproc_workflow_template.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dataproc.workflowTemplates.update", + "dataproc.workflowTemplates.get", + "dataproc.workflowTemplates.delete", + "dataproc.workflowTemplates.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/deploymentmanager/google_deployment_manager_deployment.json b/src/mapping/google/resource/deploymentmanager/google_deployment_manager_deployment.json new file mode 100644 index 00000000..e091a4a0 --- /dev/null +++ b/src/mapping/google/resource/deploymentmanager/google_deployment_manager_deployment.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "deploymentmanager.deployments.create", + "deploymentmanager.deployments.delete", + "deploymentmanager.deployments.get", + "deploymentmanager.deployments.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/developerconnect/google_developer_connect_account_connector.json b/src/mapping/google/resource/developerconnect/google_developer_connect_account_connector.json new file mode 100644 index 00000000..f6eaca18 --- /dev/null +++ b/src/mapping/google/resource/developerconnect/google_developer_connect_account_connector.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "developerconnect.accountConnectors.create", + "developerconnect.accountConnectors.delete", + "developerconnect.accountConnectors.get", + "developerconnect.accountConnectors.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/developerconnect/google_developer_connect_connection.json b/src/mapping/google/resource/developerconnect/google_developer_connect_connection.json new file mode 100644 index 00000000..c2f369cc --- /dev/null +++ b/src/mapping/google/resource/developerconnect/google_developer_connect_connection.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "developerconnect.connections.create", + "developerconnect.connections.delete", + "developerconnect.connections.update", + "developerconnect.connections.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/developerconnect/google_developer_connect_git_repository_link.json b/src/mapping/google/resource/developerconnect/google_developer_connect_git_repository_link.json new file mode 100644 index 00000000..48125aeb --- /dev/null +++ b/src/mapping/google/resource/developerconnect/google_developer_connect_git_repository_link.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "developerconnect.gitRepositoryLinks.create", + "developerconnect.gitRepositoryLinks.delete", + "developerconnect.gitRepositoryLinks.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_agent.json b/src/mapping/google/resource/dialogflow/google_dialogflow_agent.json new file mode 100644 index 00000000..3071aad8 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_agent.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.agents.get", + "dialogflow.agents.create", + "dialogflow.agents.update", + "dialogflow.agents.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_conversation_profile.json b/src/mapping/google/resource/dialogflow/google_dialogflow_conversation_profile.json new file mode 100644 index 00000000..4f8ea4b4 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_conversation_profile.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.conversationProfiles.update", + "dialogflow.conversationProfiles.get", + "dialogflow.conversationProfiles.delete", + "dialogflow.conversationProfiles.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_agent.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_agent.json new file mode 100644 index 00000000..3071aad8 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_agent.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.agents.get", + "dialogflow.agents.create", + "dialogflow.agents.update", + "dialogflow.agents.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_entity_type.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_entity_type.json new file mode 100644 index 00000000..dfa858e8 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_entity_type.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.entityTypes.update", + "dialogflow.entityTypes.get", + "dialogflow.entityTypes.delete", + "dialogflow.entityTypes.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_environment.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_environment.json new file mode 100644 index 00000000..4db2c7b5 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_environment.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.environments.create", + "dialogflow.environments.get", + "dialogflow.environments.update", + "dialogflow.environments.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_flow.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_flow.json new file mode 100644 index 00000000..89d3febf --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_flow.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.flows.create", + "dialogflow.flows.get", + "dialogflow.flows.update", + "dialogflow.flows.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_generative_settings.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_generative_settings.json new file mode 100644 index 00000000..c3c0dcdb --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_generative_settings.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.securitySettings.create", + "dialogflow.securitySettings.get", + "dialogflow.securitySettings.update", + "dialogflow.securitySettings.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_generator.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_generator.json new file mode 100644 index 00000000..bedd2afe --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_generator.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.generators.create", + "dialogflow.generators.get", + "dialogflow.generators.update", + "dialogflow.generators.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_intent.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_intent.json new file mode 100644 index 00000000..eadc2c22 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_intent.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.intents.create", + "dialogflow.intents.get", + "dialogflow.intents.update", + "dialogflow.intents.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_page.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_page.json new file mode 100644 index 00000000..78836a3b --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_page.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.pages.create", + "dialogflow.pages.get", + "dialogflow.pages.delete", + "dialogflow.pages.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_playbook.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_playbook.json new file mode 100644 index 00000000..3630f068 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_playbook.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.playbooks.create", + "dialogflow.playbooks.get", + "dialogflow.playbooks.update", + "dialogflow.playbooks.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_security_settings.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_security_settings.json new file mode 100644 index 00000000..c3c0dcdb --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_security_settings.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.securitySettings.create", + "dialogflow.securitySettings.get", + "dialogflow.securitySettings.update", + "dialogflow.securitySettings.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_tool.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_tool.json new file mode 100644 index 00000000..7715a638 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_tool.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.tools.create", + "dialogflow.tools.get", + "dialogflow.tools.update", + "dialogflow.tools.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_version.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_version.json new file mode 100644 index 00000000..c9e9d35b --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_version.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "dialogflow.versions.create", + "dialogflow.versions.get", + "dialogflow.versions.update", + "dialogflow.versions.delete", + "dialogflow.operations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_cx_webhook.json b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_webhook.json new file mode 100644 index 00000000..623db5bb --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_cx_webhook.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.webhooks.create", + "dialogflow.webhooks.delete", + "dialogflow.webhooks.get", + "dialogflow.webhooks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_encryption_spec.json b/src/mapping/google/resource/dialogflow/google_dialogflow_encryption_spec.json new file mode 100644 index 00000000..4bf8dcfc --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_encryption_spec.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dialogflow.encryptionspec.update", + "dialogflow.encryptionspec.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_entity_type.json b/src/mapping/google/resource/dialogflow/google_dialogflow_entity_type.json new file mode 100644 index 00000000..dfa858e8 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_entity_type.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.entityTypes.update", + "dialogflow.entityTypes.get", + "dialogflow.entityTypes.delete", + "dialogflow.entityTypes.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_fulfillment.json b/src/mapping/google/resource/dialogflow/google_dialogflow_fulfillment.json new file mode 100644 index 00000000..8a802c3d --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_fulfillment.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "dialogflow.fulfillments.update", + "dialogflow.fulfillments.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dialogflow/google_dialogflow_intent.json b/src/mapping/google/resource/dialogflow/google_dialogflow_intent.json new file mode 100644 index 00000000..9cbde953 --- /dev/null +++ b/src/mapping/google/resource/dialogflow/google_dialogflow_intent.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dialogflow.intents.update", + "dialogflow.intents.get", + "dialogflow.intents.delete", + "dialogflow.intents.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dns/google_dns_managed_zone.json b/src/mapping/google/resource/dns/google_dns_managed_zone.json index b4dfe956..bf5b674d 100644 --- a/src/mapping/google/resource/dns/google_dns_managed_zone.json +++ b/src/mapping/google/resource/dns/google_dns_managed_zone.json @@ -1,27 +1,29 @@ -[ - { - "apply": [ - "dns.managedZones.get", - "dns.managedZones.create", - "dns.managedZones.delete", - "dns.managedZones.update" - ], - "attributes": { - "gke_clusters": [ - "dns.gkeClusters.bindPrivateDNSZone" - ], - "private_visibility_config": [ - "dns.networks.bindPrivateDNSZone", - "dns.networks.targetWithPeeringZone" - ], - "tags": [] - }, - "destroy": [ - "dns.managedZones.delete" - ], - "modify": [], - "plan": [ - "dns.managedZones.update" - ] - } -] +[ + { + "apply": [ + "dns.managedZones.get", + "dns.managedZones.create", + "dns.managedZones.delete", + "dns.managedZones.update" + ], + "attributes": { + "gke_clusters": [ + "dns.gkeClusters.bindPrivateDNSZone" + ], + "private_visibility_config": [ + "dns.networks.bindPrivateDNSZone", + "dns.networks.targetWithPeeringZone" + ], + "tags": [] + }, + "destroy": [ + "dns.managedZones.delete" + ], + "modify": [ + "dns.managedZones.update" + ], + "plan": [ + "dns.managedZones.get" + ] + } +] diff --git a/src/mapping/google/resource/dns/google_dns_managed_zone_iam_binding.json b/src/mapping/google/resource/dns/google_dns_managed_zone_iam_binding.json new file mode 100644 index 00000000..a7122ffc --- /dev/null +++ b/src/mapping/google/resource/dns/google_dns_managed_zone_iam_binding.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "dns.managedZones.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dns/google_dns_managed_zone_iam_member.json b/src/mapping/google/resource/dns/google_dns_managed_zone_iam_member.json new file mode 100644 index 00000000..a7122ffc --- /dev/null +++ b/src/mapping/google/resource/dns/google_dns_managed_zone_iam_member.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "dns.managedZones.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/dns/google_dns_managed_zone_iam_policy.json b/src/mapping/google/resource/dns/google_dns_managed_zone_iam_policy.json new file mode 100644 index 00000000..089e1bb6 --- /dev/null +++ b/src/mapping/google/resource/dns/google_dns_managed_zone_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "dns.managedZones.getIamPolicy", + "dns.managedZones.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "dns.managedZones.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/edgecontainer/google_edgecontainer_cluster.json b/src/mapping/google/resource/edgecontainer/google_edgecontainer_cluster.json new file mode 100644 index 00000000..496d10b4 --- /dev/null +++ b/src/mapping/google/resource/edgecontainer/google_edgecontainer_cluster.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "edgecontainer.clusters.create", + "edgecontainer.clusters.delete", + "edgecontainer.clusters.get", + "edgecontainer.clusters.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/edgecontainer/google_edgecontainer_node_pool.json b/src/mapping/google/resource/edgecontainer/google_edgecontainer_node_pool.json new file mode 100644 index 00000000..2fc0156c --- /dev/null +++ b/src/mapping/google/resource/edgecontainer/google_edgecontainer_node_pool.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "edgecontainer.nodePools.create", + "edgecontainer.nodePools.delete", + "edgecontainer.nodePools.get", + "edgecontainer.nodePools.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/edgecontainer/google_edgecontainer_vpn_connection.json b/src/mapping/google/resource/edgecontainer/google_edgecontainer_vpn_connection.json new file mode 100644 index 00000000..0c74247b --- /dev/null +++ b/src/mapping/google/resource/edgecontainer/google_edgecontainer_vpn_connection.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "edgecontainer.vpnConnections.create", + "edgecontainer.vpnConnections.delete", + "edgecontainer.vpnConnections.get", + "edgecontainer.vpnConnections.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/edgenetwork/google_edgenetwork_interconnect_attachment.json b/src/mapping/google/resource/edgenetwork/google_edgenetwork_interconnect_attachment.json new file mode 100644 index 00000000..a75f395d --- /dev/null +++ b/src/mapping/google/resource/edgenetwork/google_edgenetwork_interconnect_attachment.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "edgenetwork.interconnectAttachments.create", + "edgenetwork.interconnectAttachments.delete", + "edgenetwork.interconnectAttachments.get", + "edgenetwork.interconnectAttachments.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/edgenetwork/google_edgenetwork_network.json b/src/mapping/google/resource/edgenetwork/google_edgenetwork_network.json new file mode 100644 index 00000000..b3cf845d --- /dev/null +++ b/src/mapping/google/resource/edgenetwork/google_edgenetwork_network.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "edgenetwork.networks.create", + "edgenetwork.networks.delete", + "edgenetwork.networks.get", + "edgenetwork.networks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/edgenetwork/google_edgenetwork_subnet.json b/src/mapping/google/resource/edgenetwork/google_edgenetwork_subnet.json new file mode 100644 index 00000000..82fd35d2 --- /dev/null +++ b/src/mapping/google/resource/edgenetwork/google_edgenetwork_subnet.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "edgenetwork.subnetworks.create", + "edgenetwork.subnetworks.delete", + "edgenetwork.subnetworks.get", + "edgenetwork.subnetworks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/eventarc/google_eventarc_channel.json b/src/mapping/google/resource/eventarc/google_eventarc_channel.json new file mode 100644 index 00000000..0f3cb13a --- /dev/null +++ b/src/mapping/google/resource/eventarc/google_eventarc_channel.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "eventarc.channels.create", + "eventarc.channels.delete", + "eventarc.channels.get", + "eventarc.channels.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/eventarc/google_eventarc_enrollment.json b/src/mapping/google/resource/eventarc/google_eventarc_enrollment.json new file mode 100644 index 00000000..046eae72 --- /dev/null +++ b/src/mapping/google/resource/eventarc/google_eventarc_enrollment.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "eventarc.enrollments.create", + "eventarc.enrollments.delete", + "eventarc.enrollments.get", + "eventarc.enrollments.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/eventarc/google_eventarc_google_api_source.json b/src/mapping/google/resource/eventarc/google_eventarc_google_api_source.json new file mode 100644 index 00000000..c2d6763a --- /dev/null +++ b/src/mapping/google/resource/eventarc/google_eventarc_google_api_source.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "eventarc.googleApiSources.create", + "eventarc.googleApiSources.delete", + "eventarc.googleApiSources.get", + "eventarc.googleApiSources.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/eventarc/google_eventarc_google_channel_config.json b/src/mapping/google/resource/eventarc/google_eventarc_google_channel_config.json new file mode 100644 index 00000000..0ed64a36 --- /dev/null +++ b/src/mapping/google/resource/eventarc/google_eventarc_google_channel_config.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "eventarc.googleChannelConfigs.get", + "eventarc.googleChannelConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/eventarc/google_eventarc_message_bus.json b/src/mapping/google/resource/eventarc/google_eventarc_message_bus.json new file mode 100644 index 00000000..818325e9 --- /dev/null +++ b/src/mapping/google/resource/eventarc/google_eventarc_message_bus.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "eventarc.messageBuses.create", + "eventarc.messageBuses.delete", + "eventarc.messageBuses.get", + "eventarc.messageBuses.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/eventarc/google_eventarc_pipeline.json b/src/mapping/google/resource/eventarc/google_eventarc_pipeline.json new file mode 100644 index 00000000..f2c85918 --- /dev/null +++ b/src/mapping/google/resource/eventarc/google_eventarc_pipeline.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "eventarc.pipelines.create", + "eventarc.pipelines.delete", + "eventarc.pipelines.get", + "eventarc.pipelines.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/eventarc/google_eventarc_trigger.json b/src/mapping/google/resource/eventarc/google_eventarc_trigger.json new file mode 100644 index 00000000..b0d0ffdc --- /dev/null +++ b/src/mapping/google/resource/eventarc/google_eventarc_trigger.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "eventarc.triggers.update", + "eventarc.triggers.get", + "eventarc.triggers.delete", + "eventarc.triggers.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/firebase/google_firebase_web_app.json b/src/mapping/google/resource/firebase/google_firebase_web_app.json new file mode 100644 index 00000000..47a73452 --- /dev/null +++ b/src/mapping/google/resource/firebase/google_firebase_web_app.json @@ -0,0 +1,24 @@ +[ + { + "apply": [ + "resourcemanager.projects.get", + "serviceusage.services.enable", + "serviceusage.services.get", + "firebase.clients.create", + "firebase.clients.delete", + "firebase.clients.update", + "firebase.clients.get", + "clientauthconfig.clients.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "firebase.clients.delete" + ], + "modify": [ + "firebase.clients.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_binding.json b/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_binding.json new file mode 100644 index 00000000..15ec09a7 --- /dev/null +++ b/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkebackup.backupPlans.getIamPolicy", + "gkebackup.backupPlans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_member.json b/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_member.json new file mode 100644 index 00000000..15ec09a7 --- /dev/null +++ b/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkebackup.backupPlans.getIamPolicy", + "gkebackup.backupPlans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_policy.json b/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_policy.json new file mode 100644 index 00000000..01cf86c3 --- /dev/null +++ b/src/mapping/google/resource/gkebackup/google_gke_backup_backup_plan_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "gkebackup.backupPlans.getIamPolicy", + "gkebackup.backupPlans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkebackup.backupPlans.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_binding.json b/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_binding.json new file mode 100644 index 00000000..3c4be9c1 --- /dev/null +++ b/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkebackup.restorePlans.getIamPolicy", + "gkebackup.restorePlans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_member.json b/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_member.json new file mode 100644 index 00000000..3c4be9c1 --- /dev/null +++ b/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkebackup.restorePlans.getIamPolicy", + "gkebackup.restorePlans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_policy.json b/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_policy.json new file mode 100644 index 00000000..bcf9e5d8 --- /dev/null +++ b/src/mapping/google/resource/gkebackup/google_gke_backup_restore_plan_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "gkebackup.restorePlans.getIamPolicy", + "gkebackup.restorePlans.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkebackup.restorePlans.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_binding.json b/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_binding.json new file mode 100644 index 00000000..a628e4aa --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkehub.features.getIamPolicy", + "gkehub.features.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_member.json b/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_member.json new file mode 100644 index 00000000..a628e4aa --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkehub.features.getIamPolicy", + "gkehub.features.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_policy.json b/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_policy.json new file mode 100644 index 00000000..a8ca6a93 --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_feature_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "gkehub.features.getIamPolicy", + "gkehub.features.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkehub.features.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_binding.json b/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_binding.json new file mode 100644 index 00000000..76b22174 --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkehub.memberships.getIamPolicy", + "gkehub.memberships.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_member.json b/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_member.json new file mode 100644 index 00000000..76b22174 --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkehub.memberships.getIamPolicy", + "gkehub.memberships.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_policy.json b/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_policy.json new file mode 100644 index 00000000..cd6cd3f7 --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_membership_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "gkehub.memberships.getIamPolicy", + "gkehub.memberships.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkehub.memberships.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_binding.json b/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_binding.json new file mode 100644 index 00000000..ac65a607 --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkehub.scopes.getIamPolicy", + "gkehub.scopes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_member.json b/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_member.json new file mode 100644 index 00000000..ac65a607 --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "gkehub.scopes.getIamPolicy", + "gkehub.scopes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_policy.json b/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_policy.json new file mode 100644 index 00000000..b248451d --- /dev/null +++ b/src/mapping/google/resource/gkehub/google_gke_hub_scope_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "gkehub.scopes.getIamPolicy", + "gkehub.scopes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "gkehub.scopes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/google_apigee_environment.json b/src/mapping/google/resource/google_apigee_environment.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/resource/google_apigee_environment.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_binding.json b/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_binding.json new file mode 100644 index 00000000..add4b9fe --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.consentStores.getIamPolicy", + "healthcare.consentStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_member.json b/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_member.json new file mode 100644 index 00000000..add4b9fe --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.consentStores.getIamPolicy", + "healthcare.consentStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_policy.json b/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_policy.json new file mode 100644 index 00000000..e1f8cdb4 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_consent_store_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "healthcare.consentStores.getIamPolicy", + "healthcare.consentStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "healthcare.consentStores.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_binding.json b/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_binding.json new file mode 100644 index 00000000..534516d8 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.datasets.getIamPolicy", + "healthcare.datasets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_member.json b/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_member.json new file mode 100644 index 00000000..534516d8 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.datasets.getIamPolicy", + "healthcare.datasets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_policy.json b/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_policy.json new file mode 100644 index 00000000..0272db19 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_dataset_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "healthcare.datasets.getIamPolicy", + "healthcare.datasets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "healthcare.datasets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_binding.json b/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_binding.json new file mode 100644 index 00000000..44ad44c3 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.dicomStores.getIamPolicy", + "healthcare.dicomStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_member.json b/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_member.json new file mode 100644 index 00000000..44ad44c3 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.dicomStores.getIamPolicy", + "healthcare.dicomStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_policy.json b/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_policy.json new file mode 100644 index 00000000..791029e5 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_dicom_store_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "healthcare.dicomStores.getIamPolicy", + "healthcare.dicomStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "healthcare.dicomStores.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_binding.json b/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_binding.json new file mode 100644 index 00000000..4f956554 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.fhirStores.getIamPolicy", + "healthcare.fhirStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_member.json b/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_member.json new file mode 100644 index 00000000..4f956554 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.fhirStores.getIamPolicy", + "healthcare.fhirStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_policy.json b/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_policy.json new file mode 100644 index 00000000..9eea946b --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_fhir_store_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "healthcare.fhirStores.getIamPolicy", + "healthcare.fhirStores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "healthcare.fhirStores.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_binding.json b/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_binding.json new file mode 100644 index 00000000..1db1c90c --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.hl7V2Stores.getIamPolicy", + "healthcare.hl7V2Stores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_member.json b/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_member.json new file mode 100644 index 00000000..1db1c90c --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "healthcare.hl7V2Stores.getIamPolicy", + "healthcare.hl7V2Stores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_policy.json b/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_policy.json new file mode 100644 index 00000000..6a08f9c3 --- /dev/null +++ b/src/mapping/google/resource/healthcare/google_healthcare_hl7_v2_store_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "healthcare.hl7V2Stores.getIamPolicy", + "healthcare.hl7V2Stores.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "healthcare.hl7V2Stores.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool.json new file mode 100644 index 00000000..9c4820c2 --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iam.googleapis.com/workforcePools.update", + "iam.googleapis.com/workforcePools.get", + "iam.googleapis.com/workforcePools.create", + "iam.googleapis.com/workforcePools.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_binding.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_binding.json new file mode 100644 index 00000000..220eb8cc --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iam.googleapis.com/workforcePools.getIamPolicy", + "iam.googleapis.com/workforcePools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_member.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_member.json new file mode 100644 index 00000000..220eb8cc --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iam.googleapis.com/workforcePools.getIamPolicy", + "iam.googleapis.com/workforcePools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_policy.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_policy.json new file mode 100644 index 00000000..220eb8cc --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iam.googleapis.com/workforcePools.getIamPolicy", + "iam.googleapis.com/workforcePools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_provider.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_provider.json new file mode 100644 index 00000000..a62fa309 --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_provider.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iam.googleapis.com/workforcePoolProviders.create", + "iam.googleapis.com/workforcePoolProviders.delete", + "iam.googleapis.com/workforcePoolProviders.get", + "iam.googleapis.com/workforcePoolProviders.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_provider_key.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_provider_key.json new file mode 100644 index 00000000..bd16b01e --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workforce_pool_provider_key.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "iam.googleapis.com/workforcePoolProviderKeys.create", + "iam.googleapis.com/workforcePoolProviderKeys.delete", + "iam.googleapis.com/workforcePoolProviderKeys.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_binding.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_binding.json new file mode 100644 index 00000000..220eb8cc --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iam.googleapis.com/workforcePools.getIamPolicy", + "iam.googleapis.com/workforcePools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_member.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_member.json new file mode 100644 index 00000000..220eb8cc --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iam.googleapis.com/workforcePools.getIamPolicy", + "iam.googleapis.com/workforcePools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_policy.json b/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_policy.json new file mode 100644 index 00000000..8b851596 --- /dev/null +++ b/src/mapping/google/resource/iam.googleapis.com/google_iam_workload_identity_pool_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iam.googleapis.com/workloadIdentityPools.getIamPolicy", + "iam.googleapis.com/workloadIdentityPools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iam.googleapis.com/workloadIdentityPools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iam/google_default_service_accounts.json b/src/mapping/google/resource/iam/google_default_service_accounts.json new file mode 100644 index 00000000..eb272b93 --- /dev/null +++ b/src/mapping/google/resource/iam/google_default_service_accounts.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iam.serviceAccounts.disable", + "iam.serviceAccounts.enable" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam/google_iam_workload_identity_pool.json b/src/mapping/google/resource/iam/google_iam_workload_identity_pool.json new file mode 100644 index 00000000..fd610d72 --- /dev/null +++ b/src/mapping/google/resource/iam/google_iam_workload_identity_pool.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "iam.workloadIdentityPools.create", + "iam.workloadIdentityPools.delete", + "iam.workloadIdentityPools.get", + "iam.workloadIdentityPools.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "iam.workloadIdentityPools.delete" + ], + "modify": [ + "iam.workloadIdentityPools.update" + ], + "plan": [ + "iam.workloadIdentityPools.get" + ] + } +] diff --git a/src/mapping/google/resource/iam/google_iam_workload_identity_pool_provider.json b/src/mapping/google/resource/iam/google_iam_workload_identity_pool_provider.json new file mode 100644 index 00000000..78350df1 --- /dev/null +++ b/src/mapping/google/resource/iam/google_iam_workload_identity_pool_provider.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "iam.workloadIdentityPoolProviders.create", + "iam.workloadIdentityPoolProviders.delete", + "iam.workloadIdentityPoolProviders.get", + "iam.workloadIdentityPoolProviders.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "iam.workloadIdentityPoolProviders.delete" + ], + "modify": [ + "iam.workloadIdentityPoolProviders.update" + ], + "plan": [ + "iam.workloadIdentityPoolProviders.get" + ] + } +] diff --git a/src/mapping/google/resource/iam/google_project_default_service_accounts.json b/src/mapping/google/resource/iam/google_project_default_service_accounts.json new file mode 100644 index 00000000..763c2cef --- /dev/null +++ b/src/mapping/google/resource/iam/google_project_default_service_accounts.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "iam.serviceAccounts.list" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam/google_project_iam_audit_config.json b/src/mapping/google/resource/iam/google_project_iam_audit_config.json new file mode 100644 index 00000000..81ef0c90 --- /dev/null +++ b/src/mapping/google/resource/iam/google_project_iam_audit_config.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.projects.getIamPolicy", + "resourcemanager.projects.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iam/google_project_iam_custom_role.json b/src/mapping/google/resource/iam/google_project_iam_custom_role.json index 8f0ce2e1..c1e3f457 100644 --- a/src/mapping/google/resource/iam/google_project_iam_custom_role.json +++ b/src/mapping/google/resource/iam/google_project_iam_custom_role.json @@ -1,18 +1,20 @@ -[ - { - "apply": [ - "iam.roles.get", - "iam.roles.create" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "iam.roles.delete" - ], - "modify": [ - "iam.roles.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "iam.roles.get", + "iam.roles.create" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "iam.roles.delete" + ], + "modify": [ + "iam.roles.update" + ], + "plan": [ + "iam.roles.get" + ] + } +] diff --git a/src/mapping/google/resource/iam/google_service_account.json b/src/mapping/google/resource/iam/google_service_account.json index 0f5d3f50..5b6691a9 100644 --- a/src/mapping/google/resource/iam/google_service_account.json +++ b/src/mapping/google/resource/iam/google_service_account.json @@ -13,6 +13,8 @@ "modify": [ "iam.serviceAccounts.update" ], - "plan": [] + "plan": [ + "iam.serviceAccounts.get" + ] } ] diff --git a/src/mapping/google/resource/iam/google_service_account_iam_policy.json b/src/mapping/google/resource/iam/google_service_account_iam_policy.json index 60650881..6befb2e7 100644 --- a/src/mapping/google/resource/iam/google_service_account_iam_policy.json +++ b/src/mapping/google/resource/iam/google_service_account_iam_policy.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "iam.serviceAccounts.getIamPolicy" + ] } ] diff --git a/src/mapping/google/resource/iam/google_service_account_key.json b/src/mapping/google/resource/iam/google_service_account_key.json index 96625498..c7ebf1a4 100644 --- a/src/mapping/google/resource/iam/google_service_account_key.json +++ b/src/mapping/google/resource/iam/google_service_account_key.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "iam.serviceAccountKeys.get" + ] } ] diff --git a/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_binding.json b/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_binding.json new file mode 100644 index 00000000..187c96ae --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_member.json b/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_member.json new file mode 100644 index 00000000..886fd193 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_policy.json b/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_policy.json new file mode 100644 index 00000000..45d8a940 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_app_engine_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_binding.json b/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_binding.json new file mode 100644 index 00000000..187c96ae --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_member.json b/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_member.json new file mode 100644 index 00000000..187c96ae --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_policy.json b/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_policy.json new file mode 100644 index 00000000..0ab53f8d --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_app_engine_version_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServiceVersions.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_settings.json b/src/mapping/google/resource/iap/google_iap_settings.json new file mode 100644 index 00000000..d9abc424 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_settings.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getSettings", + "iap.webServices.updateSettings" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_dest_group.json b/src/mapping/google/resource/iap/google_iap_tunnel_dest_group.json new file mode 100644 index 00000000..3b5e3fe2 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_dest_group.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.tunnelDestGroups.create", + "iap.tunnelDestGroups.delete", + "iap.tunnelDestGroups.get", + "iap.tunnelDestGroups.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_binding.json b/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_binding.json new file mode 100644 index 00000000..5a4139da --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.tunnelDestGroups.getIamPolicy", + "iap.tunnelDestGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_member.json b/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_member.json new file mode 100644 index 00000000..5a4139da --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.tunnelDestGroups.getIamPolicy", + "iap.tunnelDestGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_policy.json b/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_policy.json new file mode 100644 index 00000000..1ef22e4e --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_dest_group_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.tunnelDestGroups.getIamPolicy", + "iap.tunnelDestGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.tunnelDestGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_iam_binding.json b/src/mapping/google/resource/iap/google_iap_tunnel_iam_binding.json new file mode 100644 index 00000000..16ac30bb --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.tunnel.getIamPolicy", + "iap.tunnel.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_iam_member.json b/src/mapping/google/resource/iap/google_iap_tunnel_iam_member.json new file mode 100644 index 00000000..16ac30bb --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.tunnel.getIamPolicy", + "iap.tunnel.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_iam_policy.json b/src/mapping/google/resource/iap/google_iap_tunnel_iam_policy.json new file mode 100644 index 00000000..733c71c6 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.tunnel.getIamPolicy", + "iap.tunnel.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.tunnel.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_binding.json b/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_binding.json new file mode 100644 index 00000000..82821da3 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.tunnelInstances.getIamPolicy", + "iap.tunnelInstances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_member.json b/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_member.json new file mode 100644 index 00000000..82821da3 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.tunnelInstances.getIamPolicy", + "iap.tunnelInstances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_policy.json b/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_policy.json new file mode 100644 index 00000000..5557cda3 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_tunnel_instance_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.tunnelInstances.getIamPolicy", + "iap.tunnelInstances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.tunnelInstances.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_binding.json b/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_binding.json new file mode 100644 index 00000000..886fd193 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_member.json b/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_member.json new file mode 100644 index 00000000..886fd193 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_policy.json b/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_policy.json new file mode 100644 index 00000000..45d8a940 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_backend_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_binding.json b/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_binding.json new file mode 100644 index 00000000..37814a4f --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_member.json b/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_member.json new file mode 100644 index 00000000..37814a4f --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_member.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_policy.json b/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_policy.json new file mode 100644 index 00000000..37814a4f --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_cloud_run_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_binding.json b/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_binding.json new file mode 100644 index 00000000..187c96ae --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_member.json b/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_member.json new file mode 100644 index 00000000..187c96ae --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_policy.json b/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_policy.json new file mode 100644 index 00000000..187c96ae --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_forwarding_rule_service_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_iam_binding.json b/src/mapping/google/resource/iap/google_iap_web_iam_binding.json new file mode 100644 index 00000000..331f5f94 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.web.getIamPolicy", + "iap.web.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_iam_member.json b/src/mapping/google/resource/iap/google_iap_web_iam_member.json new file mode 100644 index 00000000..331f5f94 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.web.getIamPolicy", + "iap.web.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_iam_policy.json b/src/mapping/google/resource/iap/google_iap_web_iam_policy.json new file mode 100644 index 00000000..de36f83c --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.web.getIamPolicy", + "iap.web.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.web.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_binding.json b/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_binding.json new file mode 100644 index 00000000..45d8a940 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_member.json b/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_member.json new file mode 100644 index 00000000..45d8a940 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_member.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_policy.json b/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_policy.json new file mode 100644 index 00000000..45d8a940 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_region_backend_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_binding.json b/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_binding.json new file mode 100644 index 00000000..45d8a940 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_member.json b/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_member.json new file mode 100644 index 00000000..45d8a940 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_member.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_policy.json b/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_policy.json new file mode 100644 index 00000000..45d8a940 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_region_forwarding_rule_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webServices.getIamPolicy", + "iap.webServices.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webServices.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_binding.json b/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_binding.json new file mode 100644 index 00000000..f92ccd33 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webTypes.getIamPolicy", + "iap.webTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_member.json b/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_member.json new file mode 100644 index 00000000..f92ccd33 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webTypes.getIamPolicy", + "iap.webTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_policy.json b/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_policy.json new file mode 100644 index 00000000..0794b0fd --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_type_app_engine_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webTypes.getIamPolicy", + "iap.webTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_binding.json b/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_binding.json new file mode 100644 index 00000000..f92ccd33 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webTypes.getIamPolicy", + "iap.webTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_member.json b/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_member.json new file mode 100644 index 00000000..f92ccd33 --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "iap.webTypes.getIamPolicy", + "iap.webTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_policy.json b/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_policy.json new file mode 100644 index 00000000..0794b0fd --- /dev/null +++ b/src/mapping/google/resource/iap/google_iap_web_type_compute_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "iap.webTypes.getIamPolicy", + "iap.webTypes.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "iap.webTypes.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_binding.json b/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_binding.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_binding.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_member.json b/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_member.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_member.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_policy.json b/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_policy.json new file mode 100644 index 00000000..45e4fdaf --- /dev/null +++ b/src/mapping/google/resource/kms/google_kms_ekm_connection_iam_policy.json @@ -0,0 +1,11 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_billing_account_exclusion.json b/src/mapping/google/resource/logging/google_logging_billing_account_exclusion.json new file mode 100644 index 00000000..3f642a0d --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_billing_account_exclusion.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.exclusions.create", + "logging.exclusions.delete", + "logging.exclusions.get", + "logging.exclusions.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_billing_account_sink.json b/src/mapping/google/resource/logging/google_logging_billing_account_sink.json new file mode 100644 index 00000000..42fe9b37 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_billing_account_sink.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.sinks.create", + "logging.sinks.delete", + "logging.sinks.get", + "logging.sinks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_folder_exclusion.json b/src/mapping/google/resource/logging/google_logging_folder_exclusion.json new file mode 100644 index 00000000..3f642a0d --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_folder_exclusion.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.exclusions.create", + "logging.exclusions.delete", + "logging.exclusions.get", + "logging.exclusions.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_folder_settings.json b/src/mapping/google/resource/logging/google_logging_folder_settings.json new file mode 100644 index 00000000..cf6a6a52 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_folder_settings.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "logging.settings.get", + "logging.settings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_folder_sink.json b/src/mapping/google/resource/logging/google_logging_folder_sink.json new file mode 100644 index 00000000..42fe9b37 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_folder_sink.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.sinks.create", + "logging.sinks.delete", + "logging.sinks.get", + "logging.sinks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_linked_dataset.json b/src/mapping/google/resource/logging/google_logging_linked_dataset.json new file mode 100644 index 00000000..5bfe5ce2 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_linked_dataset.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "logging.links.create", + "logging.links.delete", + "logging.links.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_log_scope.json b/src/mapping/google/resource/logging/google_logging_log_scope.json new file mode 100644 index 00000000..b9f3b151 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_log_scope.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.logScopes.create", + "logging.logScopes.delete", + "logging.logScopes.get", + "logging.logScopes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_log_view.json b/src/mapping/google/resource/logging/google_logging_log_view.json new file mode 100644 index 00000000..91574519 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_log_view.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.views.create", + "logging.views.delete", + "logging.views.get", + "logging.views.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_log_view_iam_binding.json b/src/mapping/google/resource/logging/google_logging_log_view_iam_binding.json new file mode 100644 index 00000000..0078a88b --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_log_view_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "logging.views.getIamPolicy", + "logging.views.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_log_view_iam_member.json b/src/mapping/google/resource/logging/google_logging_log_view_iam_member.json new file mode 100644 index 00000000..0078a88b --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_log_view_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "logging.views.getIamPolicy", + "logging.views.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_log_view_iam_policy.json b/src/mapping/google/resource/logging/google_logging_log_view_iam_policy.json new file mode 100644 index 00000000..0078a88b --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_log_view_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "logging.views.getIamPolicy", + "logging.views.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_metric.json b/src/mapping/google/resource/logging/google_logging_metric.json new file mode 100644 index 00000000..6f25ab17 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_metric.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.logMetrics.create", + "logging.logMetrics.delete", + "logging.logMetrics.get", + "logging.logMetrics.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_organization_exclusion.json b/src/mapping/google/resource/logging/google_logging_organization_exclusion.json new file mode 100644 index 00000000..3f642a0d --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_organization_exclusion.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.exclusions.create", + "logging.exclusions.delete", + "logging.exclusions.get", + "logging.exclusions.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_organization_settings.json b/src/mapping/google/resource/logging/google_logging_organization_settings.json new file mode 100644 index 00000000..cf6a6a52 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_organization_settings.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "logging.settings.get", + "logging.settings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_organization_sink.json b/src/mapping/google/resource/logging/google_logging_organization_sink.json new file mode 100644 index 00000000..42fe9b37 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_organization_sink.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.sinks.create", + "logging.sinks.delete", + "logging.sinks.get", + "logging.sinks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_project_exclusion.json b/src/mapping/google/resource/logging/google_logging_project_exclusion.json new file mode 100644 index 00000000..3f642a0d --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_project_exclusion.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.exclusions.create", + "logging.exclusions.delete", + "logging.exclusions.get", + "logging.exclusions.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/logging/google_logging_project_sink.json b/src/mapping/google/resource/logging/google_logging_project_sink.json new file mode 100644 index 00000000..42fe9b37 --- /dev/null +++ b/src/mapping/google/resource/logging/google_logging_project_sink.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "logging.sinks.create", + "logging.sinks.delete", + "logging.sinks.get", + "logging.sinks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/managedkafka/google_managed_kafka_acl.json b/src/mapping/google/resource/managedkafka/google_managed_kafka_acl.json new file mode 100644 index 00000000..ae47c306 --- /dev/null +++ b/src/mapping/google/resource/managedkafka/google_managed_kafka_acl.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "managedkafka.acls.create", + "managedkafka.acls.get", + "managedkafka.acls.update", + "managedkafka.acls.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/managedkafka/google_managed_kafka_cluster.json b/src/mapping/google/resource/managedkafka/google_managed_kafka_cluster.json new file mode 100644 index 00000000..173c7ce4 --- /dev/null +++ b/src/mapping/google/resource/managedkafka/google_managed_kafka_cluster.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "managedkafka.operations.get", + "managedkafka.clusters.create", + "managedkafka.clusters.delete", + "managedkafka.clusters.get", + "managedkafka.clusters.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/managedkafka/google_managed_kafka_connect_cluster.json b/src/mapping/google/resource/managedkafka/google_managed_kafka_connect_cluster.json new file mode 100644 index 00000000..9153e8c6 --- /dev/null +++ b/src/mapping/google/resource/managedkafka/google_managed_kafka_connect_cluster.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "managedkafka.connectClusters.create", + "managedkafka.connectClusters.delete", + "managedkafka.connectClusters.get", + "managedkafka.connectClusters.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/managedkafka/google_managed_kafka_connector.json b/src/mapping/google/resource/managedkafka/google_managed_kafka_connector.json new file mode 100644 index 00000000..7aaff0e7 --- /dev/null +++ b/src/mapping/google/resource/managedkafka/google_managed_kafka_connector.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "managedkafka.connectors.create", + "managedkafka.connectors.delete", + "managedkafka.connectors.get", + "managedkafka.connectors.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/managedkafka/google_managed_kafka_topic.json b/src/mapping/google/resource/managedkafka/google_managed_kafka_topic.json new file mode 100644 index 00000000..0e883415 --- /dev/null +++ b/src/mapping/google/resource/managedkafka/google_managed_kafka_topic.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "managedkafka.topics.create", + "managedkafka.topics.delete", + "managedkafka.topics.get", + "managedkafka.topics.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/memcache/google_memcache_instance.json b/src/mapping/google/resource/memcache/google_memcache_instance.json new file mode 100644 index 00000000..9d41770b --- /dev/null +++ b/src/mapping/google/resource/memcache/google_memcache_instance.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "memcache.instances.create", + "memcache.instances.delete", + "memcache.instances.get", + "memcache.instances.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/memorystore/google_memorystore_instance.json b/src/mapping/google/resource/memorystore/google_memorystore_instance.json new file mode 100644 index 00000000..373399d3 --- /dev/null +++ b/src/mapping/google/resource/memorystore/google_memorystore_instance.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "memorystore.instances.create", + "memorystore.instances.delete", + "memorystore.instances.get", + "memorystore.instances.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_binding.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_binding.json new file mode 100644 index 00000000..92a6e38d --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "metastore.databases.getIamPolicy", + "metastore.databases.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_member.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_member.json new file mode 100644 index 00000000..92a6e38d --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "metastore.databases.getIamPolicy", + "metastore.databases.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_policy.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_policy.json new file mode 100644 index 00000000..c00e781b --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_database_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "metastore.databases.getIamPolicy", + "metastore.databases.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "metastore.databases.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_binding.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_binding.json new file mode 100644 index 00000000..83c21eb8 --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "metastore.federations.getIamPolicy", + "metastore.federations.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_member.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_member.json new file mode 100644 index 00000000..bde192e8 --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "metastore.federations.getIamPolicy", + "metastore.federations.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_policy.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_policy.json new file mode 100644 index 00000000..dbe537fa --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_federation_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "metastore.federations.getIamPolicy", + "metastore.federations.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "metastore.federations.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_binding.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_binding.json new file mode 100644 index 00000000..fd29e0ce --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "metastore.services.getIamPolicy", + "metastore.services.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_member.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_member.json new file mode 100644 index 00000000..fd29e0ce --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "metastore.services.getIamPolicy", + "metastore.services.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_policy.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_policy.json new file mode 100644 index 00000000..47253269 --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "metastore.services.getIamPolicy", + "metastore.services.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "metastore.services.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_binding.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_binding.json new file mode 100644 index 00000000..16dc262b --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "metastore.tables.getIamPolicy", + "metastore.tables.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_member.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_member.json new file mode 100644 index 00000000..16dc262b --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "metastore.tables.getIamPolicy", + "metastore.tables.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_policy.json b/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_policy.json new file mode 100644 index 00000000..f8d3a2b6 --- /dev/null +++ b/src/mapping/google/resource/metastore/google_dataproc_metastore_table_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "metastore.tables.getIamPolicy", + "metastore.tables.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "metastore.tables.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/modelarmor/google_model_armor_floorsetting.json b/src/mapping/google/resource/modelarmor/google_model_armor_floorsetting.json new file mode 100644 index 00000000..f015b70c --- /dev/null +++ b/src/mapping/google/resource/modelarmor/google_model_armor_floorsetting.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "modelarmor.floorSettings.get", + "modelarmor.floorSettings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/modelarmor/google_model_armor_template.json b/src/mapping/google/resource/modelarmor/google_model_armor_template.json new file mode 100644 index 00000000..2b5199b6 --- /dev/null +++ b/src/mapping/google/resource/modelarmor/google_model_armor_template.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "modelarmor.templates.create", + "modelarmor.templates.delete", + "modelarmor.templates.get", + "modelarmor.templates.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_alert_policy.json b/src/mapping/google/resource/monitoring/google_monitoring_alert_policy.json new file mode 100644 index 00000000..f7005cac --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_alert_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "monitoring.alertPolicies.update", + "monitoring.alertPolicies.create", + "monitoring.alertPolicies.delete", + "monitoring.alertPolicies.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_custom_service.json b/src/mapping/google/resource/monitoring/google_monitoring_custom_service.json new file mode 100644 index 00000000..02f27609 --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_custom_service.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "monitoring.services.create", + "monitoring.services.get", + "monitoring.services.delete", + "monitoring.services.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_dashboard.json b/src/mapping/google/resource/monitoring/google_monitoring_dashboard.json new file mode 100644 index 00000000..c5e327fc --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_dashboard.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "monitoring.dashboards.delete", + "monitoring.dashboards.create", + "monitoring.dashboards.update", + "monitoring.dashboards.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_group.json b/src/mapping/google/resource/monitoring/google_monitoring_group.json new file mode 100644 index 00000000..0dbd4c5b --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_group.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "monitoring.groups.create", + "monitoring.groups.delete", + "monitoring.groups.get", + "monitoring.groups.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_metric_descriptor.json b/src/mapping/google/resource/monitoring/google_monitoring_metric_descriptor.json new file mode 100644 index 00000000..6cc7876f --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_metric_descriptor.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "monitoring.metricDescriptors.create", + "monitoring.metricDescriptors.delete", + "monitoring.metricDescriptors.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_monitored_project.json b/src/mapping/google/resource/monitoring/google_monitoring_monitored_project.json new file mode 100644 index 00000000..76ea4abf --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_monitored_project.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "monitoring.metricsScopes.link" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_notification_channel.json b/src/mapping/google/resource/monitoring/google_monitoring_notification_channel.json new file mode 100644 index 00000000..1f31388e --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_notification_channel.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "monitoring.notificationChannels.create", + "monitoring.notificationChannels.delete", + "monitoring.notificationChannels.get", + "monitoring.notificationChannels.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_service.json b/src/mapping/google/resource/monitoring/google_monitoring_service.json new file mode 100644 index 00000000..ea5a0a16 --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_service.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "monitoring.services.create", + "monitoring.services.delete", + "monitoring.services.get", + "monitoring.services.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_slo.json b/src/mapping/google/resource/monitoring/google_monitoring_slo.json new file mode 100644 index 00000000..71690592 --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_slo.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "monitoring.slos.create", + "monitoring.slos.delete", + "monitoring.slos.get", + "monitoring.slos.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/monitoring/google_monitoring_uptime_check_config.json b/src/mapping/google/resource/monitoring/google_monitoring_uptime_check_config.json new file mode 100644 index 00000000..714992ef --- /dev/null +++ b/src/mapping/google/resource/monitoring/google_monitoring_uptime_check_config.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "monitoring.uptimeCheckConfigs.create", + "monitoring.uptimeCheckConfigs.delete", + "monitoring.uptimeCheckConfigs.get", + "monitoring.uptimeCheckConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_binding.json b/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_binding.json new file mode 100644 index 00000000..edec3438 --- /dev/null +++ b/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "networksecurity.addressGroups.getIamPolicy", + "networksecurity.addressGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_member.json b/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_member.json new file mode 100644 index 00000000..edec3438 --- /dev/null +++ b/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "networksecurity.addressGroups.getIamPolicy", + "networksecurity.addressGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_policy.json b/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_policy.json new file mode 100644 index 00000000..a5853ef4 --- /dev/null +++ b/src/mapping/google/resource/networksecurity/google_network_security_address_group_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "networksecurity.addressGroups.getIamPolicy", + "networksecurity.addressGroups.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "networksecurity.addressGroups.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_environment.json b/src/mapping/google/resource/notebooks/google_notebooks_environment.json new file mode 100644 index 00000000..dcb902ad --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_environment.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "notebooks.environments.create", + "notebooks.environments.get", + "notebooks.environments.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_instance.json b/src/mapping/google/resource/notebooks/google_notebooks_instance.json new file mode 100644 index 00000000..c7dfcaac --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_instance.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "notebooks.instances.create", + "notebooks.instances.delete", + "notebooks.instances.update", + "notebooks.instances.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_binding.json b/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_binding.json new file mode 100644 index 00000000..23967943 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_member.json b/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_member.json new file mode 100644 index 00000000..23967943 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_policy.json b/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_policy.json new file mode 100644 index 00000000..23967943 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_instance_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_runtime.json b/src/mapping/google/resource/notebooks/google_notebooks_runtime.json new file mode 100644 index 00000000..075657d4 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_runtime.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "notebooks.runtimes.create", + "notebooks.runtimes.delete", + "notebooks.runtimes.get", + "notebooks.runtimes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_binding.json b/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_binding.json new file mode 100644 index 00000000..23967943 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_member.json b/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_member.json new file mode 100644 index 00000000..23967943 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_policy.json b/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_policy.json new file mode 100644 index 00000000..23967943 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_notebooks_runtime_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_workbench_instance.json b/src/mapping/google/resource/notebooks/google_workbench_instance.json new file mode 100644 index 00000000..4369cd64 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_workbench_instance.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "notebooks.instances.create", + "notebooks.instances.delete", + "notebooks.instances.get", + "notebooks.instances.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_workbench_instance_iam_binding.json b/src/mapping/google/resource/notebooks/google_workbench_instance_iam_binding.json new file mode 100644 index 00000000..23967943 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_workbench_instance_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_workbench_instance_iam_member.json b/src/mapping/google/resource/notebooks/google_workbench_instance_iam_member.json new file mode 100644 index 00000000..23967943 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_workbench_instance_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/notebooks/google_workbench_instance_iam_policy.json b/src/mapping/google/resource/notebooks/google_workbench_instance_iam_policy.json new file mode 100644 index 00000000..f5265a27 --- /dev/null +++ b/src/mapping/google/resource/notebooks/google_workbench_instance_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "notebooks.instances.getIamPolicy", + "notebooks.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "notebooks.instances.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/orgpolicy/google_project_organization_policy.json b/src/mapping/google/resource/orgpolicy/google_project_organization_policy.json new file mode 100644 index 00000000..527d46c2 --- /dev/null +++ b/src/mapping/google/resource/orgpolicy/google_project_organization_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "orgpolicy.policy.set", + "orgpolicy.policy.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/osconfig/google_os_config_guest_policies.json b/src/mapping/google/resource/osconfig/google_os_config_guest_policies.json new file mode 100644 index 00000000..034ffd3f --- /dev/null +++ b/src/mapping/google/resource/osconfig/google_os_config_guest_policies.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "osconfig.guestPolicies.create", + "osconfig.guestPolicies.delete", + "osconfig.guestPolicies.get", + "osconfig.guestPolicies.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/osconfig/google_os_config_os_policy_assignment.json b/src/mapping/google/resource/osconfig/google_os_config_os_policy_assignment.json new file mode 100644 index 00000000..ff6ec407 --- /dev/null +++ b/src/mapping/google/resource/osconfig/google_os_config_os_policy_assignment.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "osconfig.osPolicyAssignments.create", + "osconfig.osPolicyAssignments.delete", + "osconfig.osPolicyAssignments.get", + "osconfig.osPolicyAssignments.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/osconfig/google_os_config_patch_deployment.json b/src/mapping/google/resource/osconfig/google_os_config_patch_deployment.json new file mode 100644 index 00000000..76d305f0 --- /dev/null +++ b/src/mapping/google/resource/osconfig/google_os_config_patch_deployment.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "osconfig.patchDeployments.create", + "osconfig.patchDeployments.delete", + "osconfig.patchDeployments.update", + "osconfig.patchDeployments.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator.json b/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator.json new file mode 100644 index 00000000..14e8558b --- /dev/null +++ b/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "osconfig.policyOrchestrators.create", + "osconfig.policyOrchestrators.delete", + "osconfig.policyOrchestrators.get", + "osconfig.policyOrchestrators.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator_for_folder.json b/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator_for_folder.json new file mode 100644 index 00000000..14e8558b --- /dev/null +++ b/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator_for_folder.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "osconfig.policyOrchestrators.create", + "osconfig.policyOrchestrators.delete", + "osconfig.policyOrchestrators.get", + "osconfig.policyOrchestrators.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator_for_organization.json b/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator_for_organization.json new file mode 100644 index 00000000..14e8558b --- /dev/null +++ b/src/mapping/google/resource/osconfig/google_os_config_v2_policy_orchestrator_for_organization.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "osconfig.policyOrchestrators.create", + "osconfig.policyOrchestrators.delete", + "osconfig.policyOrchestrators.get", + "osconfig.policyOrchestrators.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/parallelstore/google_parallelstore_instance.json b/src/mapping/google/resource/parallelstore/google_parallelstore_instance.json new file mode 100644 index 00000000..1a3aadf0 --- /dev/null +++ b/src/mapping/google/resource/parallelstore/google_parallelstore_instance.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "parallelstore.instances.create", + "parallelstore.instances.get", + "parallelstore.instances.update", + "parallelstore.instances.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_ca_pool.json b/src/mapping/google/resource/privateca/google_privateca_ca_pool.json new file mode 100644 index 00000000..f2023311 --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_ca_pool.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "privateca.caPools.create", + "privateca.caPools.get", + "privateca.caPools.delete", + "privateca.caPools.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "privateca.caPools.delete" + ], + "modify": [ + "privateca.caPools.update" + ], + "plan": [ + "privateca.caPools.get" + ] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_binding.json b/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_binding.json new file mode 100644 index 00000000..d4e6b1a1 --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "privateca.caPools.getIamPolicy", + "privateca.caPools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_member.json b/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_member.json new file mode 100644 index 00000000..d4e6b1a1 --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "privateca.caPools.getIamPolicy", + "privateca.caPools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_policy.json b/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_policy.json new file mode 100644 index 00000000..7ddb7897 --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_ca_pool_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "privateca.caPools.getIamPolicy", + "privateca.caPools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "privateca.caPools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_certificate.json b/src/mapping/google/resource/privateca/google_privateca_certificate.json new file mode 100644 index 00000000..c3c4fe3a --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_certificate.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "privateca.certificates.create", + "privateca.certificates.get", + "privateca.certificates.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_certificate_authority.json b/src/mapping/google/resource/privateca/google_privateca_certificate_authority.json new file mode 100644 index 00000000..81312ca2 --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_certificate_authority.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "privateca.certificateAuthorities.create", + "privateca.certificateAuthorities.get", + "privateca.certificateAuthorities.update", + "privateca.certificateAuthorities.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_certificate_template.json b/src/mapping/google/resource/privateca/google_privateca_certificate_template.json new file mode 100644 index 00000000..8dfeb2dc --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_certificate_template.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "privateca.certificateTemplates.create", + "privateca.certificateTemplates.get", + "privateca.certificateTemplates.delete", + "privateca.operations.get", + "privateca.operations.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_binding.json b/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_binding.json new file mode 100644 index 00000000..fcd861ad --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "privateca.certificateTemplates.getIamPolicy", + "privateca.certificateTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_member.json b/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_member.json new file mode 100644 index 00000000..fcd861ad --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "privateca.certificateTemplates.getIamPolicy", + "privateca.certificateTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_policy.json b/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_policy.json new file mode 100644 index 00000000..21db326c --- /dev/null +++ b/src/mapping/google/resource/privateca/google_privateca_certificate_template_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "privateca.certificateTemplates.getIamPolicy", + "privateca.certificateTemplates.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "privateca.certificateTemplates.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/privilegedaccessmanager/google_privileged_access_manager_entitlement.json b/src/mapping/google/resource/privilegedaccessmanager/google_privileged_access_manager_entitlement.json new file mode 100644 index 00000000..4a19a167 --- /dev/null +++ b/src/mapping/google/resource/privilegedaccessmanager/google_privileged_access_manager_entitlement.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "privilegedaccessmanager.entitlements.get", + "privilegedaccessmanager.entitlements.list", + "privilegedaccessmanager.entitlements.update", + "privilegedaccessmanager.entitlements.create", + "privilegedaccessmanager.entitlements.delete", + "privilegedaccessmanager.entitlements.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "privilegedaccessmanager.entitlements.get" + ] + } +] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_binding.json b/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_binding.json new file mode 100644 index 00000000..c3e4810d --- /dev/null +++ b/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "pubsub.schemas.getIamPolicy", + "pubsub.schemas.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_member.json b/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_member.json new file mode 100644 index 00000000..c3e4810d --- /dev/null +++ b/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "pubsub.schemas.getIamPolicy", + "pubsub.schemas.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_policy.json b/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_policy.json new file mode 100644 index 00000000..ab5ed7e5 --- /dev/null +++ b/src/mapping/google/resource/pubsub/google_pubsub_schema_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "pubsub.schemas.getIamPolicy", + "pubsub.schemas.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "pubsub.schemas.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_subscription.json b/src/mapping/google/resource/pubsub/google_pubsub_subscription.json index e9bcf53e..44aa95c7 100644 --- a/src/mapping/google/resource/pubsub/google_pubsub_subscription.json +++ b/src/mapping/google/resource/pubsub/google_pubsub_subscription.json @@ -14,6 +14,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "pubsub.subscriptions.get" + ] } ] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_binding.json b/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_binding.json new file mode 100644 index 00000000..4c0b7ac8 --- /dev/null +++ b/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "pubsub.subscriptions.getIamPolicy", + "pubsub.subscriptions.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_member.json b/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_member.json new file mode 100644 index 00000000..4c0b7ac8 --- /dev/null +++ b/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "pubsub.subscriptions.getIamPolicy", + "pubsub.subscriptions.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_policy.json b/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_policy.json new file mode 100644 index 00000000..ad47cd92 --- /dev/null +++ b/src/mapping/google/resource/pubsub/google_pubsub_subscription_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "pubsub.subscriptions.getIamPolicy", + "pubsub.subscriptions.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "pubsub.subscriptions.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_topic.json b/src/mapping/google/resource/pubsub/google_pubsub_topic.json index 371b65b8..f7dfdd70 100644 --- a/src/mapping/google/resource/pubsub/google_pubsub_topic.json +++ b/src/mapping/google/resource/pubsub/google_pubsub_topic.json @@ -11,6 +11,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "pubsub.topics.get" + ] } ] diff --git a/src/mapping/google/resource/pubsub/google_pubsub_topic_iam_policy.json b/src/mapping/google/resource/pubsub/google_pubsub_topic_iam_policy.json new file mode 100644 index 00000000..c3a19d5b --- /dev/null +++ b/src/mapping/google/resource/pubsub/google_pubsub_topic_iam_policy.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "pubsub.topics.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/redis/google_redis_cluster.json b/src/mapping/google/resource/redis/google_redis_cluster.json new file mode 100644 index 00000000..bb3b262f --- /dev/null +++ b/src/mapping/google/resource/redis/google_redis_cluster.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "redis.clusters.get", + "redis.clusters.create", + "redis.operations.get", + "redis.clusters.update", + "redis.clusters.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/redis/google_redis_cluster_user_created_connections.json b/src/mapping/google/resource/redis/google_redis_cluster_user_created_connections.json new file mode 100644 index 00000000..599a50a0 --- /dev/null +++ b/src/mapping/google/resource/redis/google_redis_cluster_user_created_connections.json @@ -0,0 +1,13 @@ +[ + { + "apply": [ + "redis.clusters.connect" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_billing_project_info.json b/src/mapping/google/resource/resourcemanager/google_billing_project_info.json new file mode 100644 index 00000000..4de8ae1e --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_billing_project_info.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "resourcemanager.projects.get", + "resourcemanager.projects.deleteBillingAssignment", + "resourcemanager.projects.createBillingAssignment" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_folder_iam_binding.json b/src/mapping/google/resource/resourcemanager/google_folder_iam_binding.json new file mode 100644 index 00000000..564d4c7b --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_folder_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.folders.getIamPolicy", + "resourcemanager.folders.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_folder_iam_member.json b/src/mapping/google/resource/resourcemanager/google_folder_iam_member.json new file mode 100644 index 00000000..564d4c7b --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_folder_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.folders.getIamPolicy", + "resourcemanager.folders.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_folder_iam_policy.json b/src/mapping/google/resource/resourcemanager/google_folder_iam_policy.json new file mode 100644 index 00000000..07f8dced --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_folder_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "resourcemanager.folders.getIamPolicy", + "resourcemanager.folders.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.folders.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_organization_iam_binding.json b/src/mapping/google/resource/resourcemanager/google_organization_iam_binding.json new file mode 100644 index 00000000..6d588b66 --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_organization_iam_binding.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "resourcemanager.organizations.getIamPolicy", + "resourcemanager.organizations.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.organizations.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_organization_iam_member.json b/src/mapping/google/resource/resourcemanager/google_organization_iam_member.json new file mode 100644 index 00000000..74978faa --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_organization_iam_member.json @@ -0,0 +1,13 @@ +[ + { + "apply": [], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.organizations.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_organization_iam_policy.json b/src/mapping/google/resource/resourcemanager/google_organization_iam_policy.json new file mode 100644 index 00000000..6d588b66 --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_organization_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "resourcemanager.organizations.getIamPolicy", + "resourcemanager.organizations.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.organizations.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_project.json b/src/mapping/google/resource/resourcemanager/google_project.json new file mode 100644 index 00000000..18ab5802 --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_project.json @@ -0,0 +1,17 @@ +[ + { + "apply": [ + "resourcemanager.organizations.get", + "resourcemanager.projects.create", + "resourcemanager.projects.delete", + "resourcemanager.projects.get", + "resourcemanager.projects.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_project_iam_member_remove.json b/src/mapping/google/resource/resourcemanager/google_project_iam_member_remove.json new file mode 100644 index 00000000..81b04628 --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_project_iam_member_remove.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.projects.setIamPolicy", + "resourcemanager.projects.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_project_iam_policy.json b/src/mapping/google/resource/resourcemanager/google_project_iam_policy.json new file mode 100644 index 00000000..06958c4b --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_project_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "resourcemanager.projects.setIamPolicy", + "resourcemanager.projects.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.projects.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_location_tag_binding.json b/src/mapping/google/resource/resourcemanager/google_tags_location_tag_binding.json new file mode 100644 index 00000000..16223e3f --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_location_tag_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.tagValueBindings.create", + "resourcemanager.tagValueBindings.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_binding.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_binding.json new file mode 100644 index 00000000..16223e3f --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.tagValueBindings.create", + "resourcemanager.tagValueBindings.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_key.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_key.json new file mode 100644 index 00000000..a977ae2d --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_key.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "resourcemanager.tagKeys.create", + "resourcemanager.tagKeys.delete", + "resourcemanager.tagKeys.get", + "resourcemanager.tagKeys.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_binding.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_binding.json new file mode 100644 index 00000000..d1bbd30a --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.tagKeys.getIamPolicy", + "resourcemanager.tagKeys.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_member.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_member.json new file mode 100644 index 00000000..d1bbd30a --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.tagKeys.getIamPolicy", + "resourcemanager.tagKeys.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_policy.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_policy.json new file mode 100644 index 00000000..5e0dbbcd --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_key_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "resourcemanager.tagKeys.getIamPolicy", + "resourcemanager.tagKeys.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.tagKeys.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_value.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_value.json new file mode 100644 index 00000000..4eb0c0b1 --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_value.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "resourcemanager.tagValues.create", + "resourcemanager.tagValues.update", + "resourcemanager.tagValues.delete", + "resourcemanager.tagValues.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_binding.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_binding.json new file mode 100644 index 00000000..b87a8a3d --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.tagValues.getIamPolicy", + "resourcemanager.tagValues.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_member.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_member.json new file mode 100644 index 00000000..b87a8a3d --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "resourcemanager.tagValues.getIamPolicy", + "resourcemanager.tagValues.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_policy.json b/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_policy.json new file mode 100644 index 00000000..b2c6d5f4 --- /dev/null +++ b/src/mapping/google/resource/resourcemanager/google_tags_tag_value_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "resourcemanager.tagValues.getIamPolicy", + "resourcemanager.tagValues.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "resourcemanager.tagValues.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_domain_mapping.json b/src/mapping/google/resource/run/google_cloud_run_domain_mapping.json new file mode 100644 index 00000000..670b80ca --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_domain_mapping.json @@ -0,0 +1,20 @@ +[ + { + "apply": [ + "run.domainmappings.create", + "run.domainmappings.get", + "run.domainmappings.delete", + "run.domainmappings.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "run.domainmappings.delete" + ], + "modify": [ + "run.domainmappings.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_service.json b/src/mapping/google/resource/run/google_cloud_run_service.json new file mode 100644 index 00000000..938d5ca6 --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_service.json @@ -0,0 +1,23 @@ +[ + { + "apply": [ + "run.services.create", + "run.services.get", + "run.services.delete", + "run.services.update", + "run.operations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "run.services.delete" + ], + "modify": [ + "run.services.update" + ], + "plan": [ + "run.services.get" + ] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_service_iam_binding.json b/src/mapping/google/resource/run/google_cloud_run_service_iam_binding.json new file mode 100644 index 00000000..a69c8dd3 --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_service_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "run.services.getIamPolicy", + "run.services.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_service_iam_member.json b/src/mapping/google/resource/run/google_cloud_run_service_iam_member.json new file mode 100644 index 00000000..a69c8dd3 --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_service_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "run.services.getIamPolicy", + "run.services.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_service_iam_policy.json b/src/mapping/google/resource/run/google_cloud_run_service_iam_policy.json new file mode 100644 index 00000000..d0a9d794 --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "run.services.getIamPolicy", + "run.services.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "run.services.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_v2_job.json b/src/mapping/google/resource/run/google_cloud_run_v2_job.json index b4f20b11..7acab11b 100644 --- a/src/mapping/google/resource/run/google_cloud_run_v2_job.json +++ b/src/mapping/google/resource/run/google_cloud_run_v2_job.json @@ -1,21 +1,23 @@ -[ - { - "apply": [ - "run.jobs.create", - "run.jobs.get", - "run.operations.get", - "run.jobs.delete", - "run.jobs.update" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "run.jobs.delete" - ], - "modify": [ - "run.jobs.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "run.jobs.create", + "run.jobs.get", + "run.operations.get", + "run.jobs.delete", + "run.jobs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "run.jobs.delete" + ], + "modify": [ + "run.jobs.update" + ], + "plan": [ + "run.jobs.get" + ] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_v2_service.json b/src/mapping/google/resource/run/google_cloud_run_v2_service.json index 1a29dd24..311267a1 100644 --- a/src/mapping/google/resource/run/google_cloud_run_v2_service.json +++ b/src/mapping/google/resource/run/google_cloud_run_v2_service.json @@ -4,9 +4,13 @@ "run.services.create", "run.services.get", "run.services.delete", - "run.services.update" + "run.services.update", + "run.operations.get" ], "attributes": { + "image_uri": [ + "artifactregistry.repositories.downloadArtifacts" + ], "tags": [] }, "destroy": [ @@ -15,6 +19,8 @@ "modify": [ "run.services.update" ], - "plan": [] + "plan": [ + "run.services.get" + ] } ] diff --git a/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool.json b/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool.json new file mode 100644 index 00000000..b051de2f --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "run.workerpools.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "run.workerpools.get" + ] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_binding.json b/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_binding.json new file mode 100644 index 00000000..b17b287e --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "run.workerpools.getIamPolicy", + "run.workerpools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_member.json b/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_member.json new file mode 100644 index 00000000..b17b287e --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "run.workerpools.getIamPolicy", + "run.workerpools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_policy.json b/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_policy.json new file mode 100644 index 00000000..53f40436 --- /dev/null +++ b/src/mapping/google/resource/run/google_cloud_run_v2_worker_pool_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "run.workerpools.getIamPolicy", + "run.workerpools.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "run.workerpools.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config.json b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config.json new file mode 100644 index 00000000..7770456d --- /dev/null +++ b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "runtimeconfig.configs.create", + "runtimeconfig.configs.get", + "runtimeconfig.configs.update", + "runtimeconfig.configs.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_binding.json b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_binding.json new file mode 100644 index 00000000..f3a89537 --- /dev/null +++ b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "runtimeconfig.configs.getIamPolicy", + "runtimeconfig.configs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_member.json b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_member.json new file mode 100644 index 00000000..f3a89537 --- /dev/null +++ b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "runtimeconfig.configs.getIamPolicy", + "runtimeconfig.configs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_policy.json b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_policy.json new file mode 100644 index 00000000..463acda2 --- /dev/null +++ b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_config_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "runtimeconfig.configs.getIamPolicy", + "runtimeconfig.configs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "runtimeconfig.configs.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_variable.json b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_variable.json new file mode 100644 index 00000000..73ffaf2a --- /dev/null +++ b/src/mapping/google/resource/runtimeconfig/google_runtimeconfig_variable.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "runtimeconfig.variables.create", + "runtimeconfig.variables.delete", + "runtimeconfig.variables.get", + "runtimeconfig.variables.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret.json b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret.json new file mode 100644 index 00000000..478b9d78 --- /dev/null +++ b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret.json @@ -0,0 +1,22 @@ +[ + { + "apply": [ + "secretmanager.secrets.create", + "secretmanager.secrets.get", + "secretmanager.secrets.update", + "secretmanager.secrets.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "secretmanager.secrets.delete" + ], + "modify": [ + "secretmanager.secrets.update" + ], + "plan": [ + "secretmanager.secrets.get" + ] + } +] diff --git a/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_binding.json b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_binding.json new file mode 100644 index 00000000..aa7d0851 --- /dev/null +++ b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "secretmanager.secrets.getIamPolicy", + "secretmanager.secrets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_member.json b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_member.json new file mode 100644 index 00000000..aa7d0851 --- /dev/null +++ b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "secretmanager.secrets.getIamPolicy", + "secretmanager.secrets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_policy.json b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_policy.json new file mode 100644 index 00000000..9f1df28a --- /dev/null +++ b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "secretmanager.secrets.getIamPolicy", + "secretmanager.secrets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "secretmanager.secrets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_version.json b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_version.json new file mode 100644 index 00000000..2733eb1a --- /dev/null +++ b/src/mapping/google/resource/secretmanager/google_secret_manager_regional_secret_version.json @@ -0,0 +1,23 @@ +[ + { + "apply": [ + "secretmanager.versions.add", + "secretmanager.versions.enable", + "secretmanager.versions.get", + "secretmanager.versions.disable", + "secretmanager.versions.access", + "secretmanager.versions.destroy" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "secretmanager.versions.disable", + "secretmanager.versions.destroy" + ], + "modify": [], + "plan": [ + "secretmanager.versions.get" + ] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_branch_rule.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_branch_rule.json new file mode 100644 index 00000000..35c1e881 --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_branch_rule.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "securesourcemanager.branchRules.delete", + "securesourcemanager.branchRules.create", + "securesourcemanager.branchRules.get", + "securesourcemanager.branchRules.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance.json new file mode 100644 index 00000000..57c9d967 --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "securesourcemanager.instances.create", + "securesourcemanager.instances.get", + "securesourcemanager.instances.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_binding.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_binding.json new file mode 100644 index 00000000..2e67a409 --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securesourcemanager.instances.getIamPolicy", + "securesourcemanager.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_member.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_member.json new file mode 100644 index 00000000..2e67a409 --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securesourcemanager.instances.getIamPolicy", + "securesourcemanager.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_policy.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_policy.json new file mode 100644 index 00000000..1f17ab2d --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_instance_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "securesourcemanager.instances.getIamPolicy", + "securesourcemanager.instances.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securesourcemanager.instances.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository.json new file mode 100644 index 00000000..c72b880f --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "securesourcemanager.repositories.get", + "securesourcemanager.repositories.create", + "securesourcemanager.repositories.update", + "securesourcemanager.repositories.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_binding.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_binding.json new file mode 100644 index 00000000..fc1a8baf --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securesourcemanager.repositories.getIamPolicy", + "securesourcemanager.repositories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_member.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_member.json new file mode 100644 index 00000000..fc1a8baf --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securesourcemanager.repositories.getIamPolicy", + "securesourcemanager.repositories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_policy.json b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_policy.json new file mode 100644 index 00000000..871acd6b --- /dev/null +++ b/src/mapping/google/resource/securesourcemanager/google_secure_source_manager_repository_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "securesourcemanager.repositories.getIamPolicy", + "securesourcemanager.repositories.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securesourcemanager.repositories.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/securitycenter/google_scc_source_iam_binding.json b/src/mapping/google/resource/securitycenter/google_scc_source_iam_binding.json new file mode 100644 index 00000000..9b11e06f --- /dev/null +++ b/src/mapping/google/resource/securitycenter/google_scc_source_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securitycenter.sources.getIamPolicy", + "securitycenter.sources.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securitycenter/google_scc_source_iam_member.json b/src/mapping/google/resource/securitycenter/google_scc_source_iam_member.json new file mode 100644 index 00000000..9b11e06f --- /dev/null +++ b/src/mapping/google/resource/securitycenter/google_scc_source_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securitycenter.sources.getIamPolicy", + "securitycenter.sources.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securitycenter/google_scc_source_iam_policy.json b/src/mapping/google/resource/securitycenter/google_scc_source_iam_policy.json new file mode 100644 index 00000000..670013cf --- /dev/null +++ b/src/mapping/google/resource/securitycenter/google_scc_source_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "securitycenter.sources.getIamPolicy", + "securitycenter.sources.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securitycenter.sources.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_binding.json b/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_binding.json new file mode 100644 index 00000000..9b11e06f --- /dev/null +++ b/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securitycenter.sources.getIamPolicy", + "securitycenter.sources.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_member.json b/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_member.json new file mode 100644 index 00000000..9b11e06f --- /dev/null +++ b/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "securitycenter.sources.getIamPolicy", + "securitycenter.sources.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_policy.json b/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_policy.json new file mode 100644 index 00000000..670013cf --- /dev/null +++ b/src/mapping/google/resource/securitycenter/google_scc_v2_organization_source_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "securitycenter.sources.getIamPolicy", + "securitycenter.sources.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "securitycenter.sources.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/servicedirectory/google_service_directory_namespace_iam_policy.json b/src/mapping/google/resource/servicedirectory/google_service_directory_namespace_iam_policy.json index 94aba09d..5d313248 100644 --- a/src/mapping/google/resource/servicedirectory/google_service_directory_namespace_iam_policy.json +++ b/src/mapping/google/resource/servicedirectory/google_service_directory_namespace_iam_policy.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "servicedirectory.namespaces.getIamPolicy" + ] } ] diff --git a/src/mapping/google/resource/servicedirectory/google_service_directory_service_iam_policy.json b/src/mapping/google/resource/servicedirectory/google_service_directory_service_iam_policy.json index 025bf9be..8872696a 100644 --- a/src/mapping/google/resource/servicedirectory/google_service_directory_service_iam_policy.json +++ b/src/mapping/google/resource/servicedirectory/google_service_directory_service_iam_policy.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "servicedirectory.services.getIamPolicy" + ] } ] diff --git a/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_binding.json b/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_binding.json new file mode 100644 index 00000000..abf5af0b --- /dev/null +++ b/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "servicemanagement.services.setIamPolicy", + "servicemanagement.services.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_member.json b/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_member.json new file mode 100644 index 00000000..abf5af0b --- /dev/null +++ b/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "servicemanagement.services.setIamPolicy", + "servicemanagement.services.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_policy.json b/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_policy.json new file mode 100644 index 00000000..abf5af0b --- /dev/null +++ b/src/mapping/google/resource/servicemanagement/google_endpoints_service_consumers_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "servicemanagement.services.setIamPolicy", + "servicemanagement.services.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_binding.json b/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_binding.json new file mode 100644 index 00000000..abf5af0b --- /dev/null +++ b/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "servicemanagement.services.setIamPolicy", + "servicemanagement.services.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_member.json b/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_member.json new file mode 100644 index 00000000..abf5af0b --- /dev/null +++ b/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "servicemanagement.services.setIamPolicy", + "servicemanagement.services.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_policy.json b/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_policy.json new file mode 100644 index 00000000..8a22e54c --- /dev/null +++ b/src/mapping/google/resource/servicemanagement/google_endpoints_service_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "servicemanagement.services.setIamPolicy", + "servicemanagement.services.getIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "servicemanagement.services.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/source/google_sourcerepo_repository_iam_binding.json b/src/mapping/google/resource/source/google_sourcerepo_repository_iam_binding.json new file mode 100644 index 00000000..327b5075 --- /dev/null +++ b/src/mapping/google/resource/source/google_sourcerepo_repository_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "source.repos.getIamPolicy", + "source.repos.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/source/google_sourcerepo_repository_iam_member.json b/src/mapping/google/resource/source/google_sourcerepo_repository_iam_member.json new file mode 100644 index 00000000..327b5075 --- /dev/null +++ b/src/mapping/google/resource/source/google_sourcerepo_repository_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "source.repos.getIamPolicy", + "source.repos.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/source/google_sourcerepo_repository_iam_policy.json b/src/mapping/google/resource/source/google_sourcerepo_repository_iam_policy.json new file mode 100644 index 00000000..497b9782 --- /dev/null +++ b/src/mapping/google/resource/source/google_sourcerepo_repository_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "source.repos.getIamPolicy", + "source.repos.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "source.repos.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/spanner/google_spanner_backup_schedule.json b/src/mapping/google/resource/spanner/google_spanner_backup_schedule.json new file mode 100644 index 00000000..2e72af7a --- /dev/null +++ b/src/mapping/google/resource/spanner/google_spanner_backup_schedule.json @@ -0,0 +1,21 @@ +[ + { + "apply": [ + "spanner.databases.createBackup", + "spanner.backupSchedules.create", + "spanner.backupSchedules.get", + "spanner.backupSchedules.delete", + "spanner.backupSchedules.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "spanner.backupSchedules.delete" + ], + "modify": [ + "spanner.backupSchedules.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/spanner/google_spanner_database.json b/src/mapping/google/resource/spanner/google_spanner_database.json index 48cfe204..9346d30c 100644 --- a/src/mapping/google/resource/spanner/google_spanner_database.json +++ b/src/mapping/google/resource/spanner/google_spanner_database.json @@ -1,23 +1,25 @@ -[ - { - "apply": [ - "spanner.databases.create", - "spanner.databases.drop", - "spanner.databases.updateDdl", - "spanner.databases.update", - "spanner.databases.get", - "spanner.databaseOperations.get" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "spanner.databases.drop" - ], - "modify": [ - "spanner.databases.updateDdl", - "spanner.databases.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "spanner.databases.create", + "spanner.databases.drop", + "spanner.databases.updateDdl", + "spanner.databases.update", + "spanner.databases.get", + "spanner.databaseOperations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "spanner.databases.drop" + ], + "modify": [ + "spanner.databases.updateDdl", + "spanner.databases.update" + ], + "plan": [ + "spanner.databases.get" + ] + } +] diff --git a/src/mapping/google/resource/spanner/google_spanner_instance.json b/src/mapping/google/resource/spanner/google_spanner_instance.json index 3f7a54a9..ec5fd758 100644 --- a/src/mapping/google/resource/spanner/google_spanner_instance.json +++ b/src/mapping/google/resource/spanner/google_spanner_instance.json @@ -1,21 +1,23 @@ -[ - { - "apply": [ - "spanner.instances.create", - "spanner.instances.delete", - "spanner.instances.update", - "spanner.instances.get", - "spanner.instanceOperations.get" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "spanner.instances.delete" - ], - "modify": [ - "spanner.instances.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "spanner.instances.create", + "spanner.instances.delete", + "spanner.instances.update", + "spanner.instances.get", + "spanner.instanceOperations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "spanner.instances.delete" + ], + "modify": [ + "spanner.instances.update" + ], + "plan": [ + "spanner.instances.get" + ] + } +] diff --git a/src/mapping/google/resource/spanner/google_spanner_instance_config.json b/src/mapping/google/resource/spanner/google_spanner_instance_config.json new file mode 100644 index 00000000..c3776c78 --- /dev/null +++ b/src/mapping/google/resource/spanner/google_spanner_instance_config.json @@ -0,0 +1,23 @@ +[ + { + "apply": [ + "spanner.instanceConfigs.get", + "spanner.instanceConfigs.create", + "spanner.instanceConfigs.update", + "spanner.instanceConfigs.delete", + "spanner.instanceConfigOperations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "spanner.instanceConfigs.delete" + ], + "modify": [ + "spanner.instanceConfigs.update" + ], + "plan": [ + "spanner.instanceConfigOperations.get" + ] + } +] diff --git a/src/mapping/google/resource/spanner/google_spanner_instance_partition.json b/src/mapping/google/resource/spanner/google_spanner_instance_partition.json new file mode 100644 index 00000000..0432bef9 --- /dev/null +++ b/src/mapping/google/resource/spanner/google_spanner_instance_partition.json @@ -0,0 +1,23 @@ +[ + { + "apply": [ + "spanner.instancePartitions.create", + "spanner.instancePartitions.get", + "spanner.instancePartitions.update", + "spanner.instancePartitions.delete", + "spanner.instancePartitionOperations.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "spanner.instancePartitions.delete" + ], + "modify": [ + "spanner.instancePartitions.update" + ], + "plan": [ + "spanner.instancePartitions.get" + ] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_bucket.json b/src/mapping/google/resource/storage/google_storage_bucket.json index 74e9554b..0c73f1f8 100644 --- a/src/mapping/google/resource/storage/google_storage_bucket.json +++ b/src/mapping/google/resource/storage/google_storage_bucket.json @@ -1,19 +1,21 @@ -[ - { - "apply": [ - "storage.buckets.create", - "storage.buckets.get", - "storage.buckets.delete" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "storage.buckets.delete" - ], - "modify": [ - "storage.buckets.update" - ], - "plan": [] - } -] +[ + { + "apply": [ + "storage.buckets.create", + "storage.buckets.get", + "storage.buckets.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "storage.buckets.delete" + ], + "modify": [ + "storage.buckets.update" + ], + "plan": [ + "storage.buckets.get" + ] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_bucket_iam_member.json b/src/mapping/google/resource/storage/google_storage_bucket_iam_member.json index fa816333..039c73b1 100644 --- a/src/mapping/google/resource/storage/google_storage_bucket_iam_member.json +++ b/src/mapping/google/resource/storage/google_storage_bucket_iam_member.json @@ -1,14 +1,16 @@ -[ - { - "apply": [ - "storage.buckets.getIamPolicy", - "storage.buckets.setIamPolicy" - ], - "attributes": { - "tags": [] - }, - "destroy": [], - "modify": [], - "plan": [] - } -] +[ + { + "apply": [ + "storage.buckets.getIamPolicy", + "storage.buckets.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "storage.buckets.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_bucket_iam_policy.json b/src/mapping/google/resource/storage/google_storage_bucket_iam_policy.json index fa816333..1115d60d 100644 --- a/src/mapping/google/resource/storage/google_storage_bucket_iam_policy.json +++ b/src/mapping/google/resource/storage/google_storage_bucket_iam_policy.json @@ -9,6 +9,8 @@ }, "destroy": [], "modify": [], - "plan": [] + "plan": [ + "storage.buckets.getIamPolicy" + ] } ] diff --git a/src/mapping/google/resource/storage/google_storage_bucket_object.json b/src/mapping/google/resource/storage/google_storage_bucket_object.json index ab601cde..8ded2526 100644 --- a/src/mapping/google/resource/storage/google_storage_bucket_object.json +++ b/src/mapping/google/resource/storage/google_storage_bucket_object.json @@ -1,18 +1,20 @@ -[ - { - "apply": [ - "storage.objects.create", - "storage.objects.delete" - ], - "attributes": { - "tags": [] - }, - "destroy": [ - "storage.objects.delete" - ], - "modify": [ - "storage.objects.get" - ], - "plan": [] - } -] +[ + { + "apply": [ + "storage.objects.create", + "storage.objects.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "storage.objects.delete" + ], + "modify": [ + "storage.objects.get" + ], + "plan": [ + "storage.objects.list" + ] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_control_folder_intelligence_config.json b/src/mapping/google/resource/storage/google_storage_control_folder_intelligence_config.json new file mode 100644 index 00000000..9e66cdec --- /dev/null +++ b/src/mapping/google/resource/storage/google_storage_control_folder_intelligence_config.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "storage.intelligenceConfigs.get", + "storage.intelligenceConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_control_organization_intelligence_config.json b/src/mapping/google/resource/storage/google_storage_control_organization_intelligence_config.json new file mode 100644 index 00000000..9e66cdec --- /dev/null +++ b/src/mapping/google/resource/storage/google_storage_control_organization_intelligence_config.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "storage.intelligenceConfigs.get", + "storage.intelligenceConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_control_project_intelligence_config.json b/src/mapping/google/resource/storage/google_storage_control_project_intelligence_config.json new file mode 100644 index 00000000..29e3fb56 --- /dev/null +++ b/src/mapping/google/resource/storage/google_storage_control_project_intelligence_config.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "storage.intelligenceConfigs.get", + "storage.intelligenceConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_managed_folder_iam_binding.json b/src/mapping/google/resource/storage/google_storage_managed_folder_iam_binding.json new file mode 100644 index 00000000..04e7576b --- /dev/null +++ b/src/mapping/google/resource/storage/google_storage_managed_folder_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "storage.managedFolders.getIamPolicy", + "storage.managedFolders.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_managed_folder_iam_member.json b/src/mapping/google/resource/storage/google_storage_managed_folder_iam_member.json new file mode 100644 index 00000000..04e7576b --- /dev/null +++ b/src/mapping/google/resource/storage/google_storage_managed_folder_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "storage.managedFolders.getIamPolicy", + "storage.managedFolders.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/storage/google_storage_managed_folder_iam_policy.json b/src/mapping/google/resource/storage/google_storage_managed_folder_iam_policy.json new file mode 100644 index 00000000..04e7576b --- /dev/null +++ b/src/mapping/google/resource/storage/google_storage_managed_folder_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "storage.managedFolders.getIamPolicy", + "storage.managedFolders.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/storageinsights/google_storage_insights_dataset_config.json b/src/mapping/google/resource/storageinsights/google_storage_insights_dataset_config.json new file mode 100644 index 00000000..b77bd46a --- /dev/null +++ b/src/mapping/google/resource/storageinsights/google_storage_insights_dataset_config.json @@ -0,0 +1,25 @@ +[ + { + "apply": [ + "storage.buckets.get", + "storage.objects.list", + "storage.buckets.getObjectInsights", + "storage.objects.create", + "storage.buckets.get", + "storageinsights.reportConfigs.get", + "storageinsights.reportConfigs.create", + "storageinsights.reportConfigs.delete", + "storageinsights.reportConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [ + "storageinsights.reportConfigs.delete" + ], + "modify": [ + "storageinsights.reportConfigs.update" + ], + "plan": [] + } +] diff --git a/src/mapping/google/resource/tpu/google_tpu_node.json b/src/mapping/google/resource/tpu/google_tpu_node.json new file mode 100644 index 00000000..a8e6e84a --- /dev/null +++ b/src/mapping/google/resource/tpu/google_tpu_node.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "tpu.nodes.create", + "tpu.nodes.get", + "tpu.nodes.delete", + "tpu.nodes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/tpu/google_tpu_v2_queued_resource.json b/src/mapping/google/resource/tpu/google_tpu_v2_queued_resource.json new file mode 100644 index 00000000..a8e6e84a --- /dev/null +++ b/src/mapping/google/resource/tpu/google_tpu_v2_queued_resource.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "tpu.nodes.create", + "tpu.nodes.get", + "tpu.nodes.delete", + "tpu.nodes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/tpu/google_tpu_v2_vm.json b/src/mapping/google/resource/tpu/google_tpu_v2_vm.json new file mode 100644 index 00000000..a8e6e84a --- /dev/null +++ b/src/mapping/google/resource/tpu/google_tpu_v2_vm.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "tpu.nodes.create", + "tpu.nodes.get", + "tpu.nodes.delete", + "tpu.nodes.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/transcoder/google_transcoder_job.json b/src/mapping/google/resource/transcoder/google_transcoder_job.json new file mode 100644 index 00000000..8b781d7e --- /dev/null +++ b/src/mapping/google/resource/transcoder/google_transcoder_job.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "transcoder.jobs.create", + "transcoder.jobs.get", + "transcoder.jobs.delete", + "transcoder.jobs.get" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/transcoder/google_transcoder_job_template.json b/src/mapping/google/resource/transcoder/google_transcoder_job_template.json new file mode 100644 index 00000000..ebe5f17e --- /dev/null +++ b/src/mapping/google/resource/transcoder/google_transcoder_job_template.json @@ -0,0 +1,15 @@ +[ + { + "apply": [ + "transcoder.jobTemplates.create", + "transcoder.jobTemplates.get", + "transcoder.jobTemplates.delete" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vmwareengine/google_vmwareengine_cluster.json b/src/mapping/google/resource/vmwareengine/google_vmwareengine_cluster.json new file mode 100644 index 00000000..52ec3615 --- /dev/null +++ b/src/mapping/google/resource/vmwareengine/google_vmwareengine_cluster.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "vmwareengine.clusters.create", + "vmwareengine.clusters.delete", + "vmwareengine.clusters.get", + "vmwareengine.clusters.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vmwareengine/google_vmwareengine_external_access_rule.json b/src/mapping/google/resource/vmwareengine/google_vmwareengine_external_access_rule.json new file mode 100644 index 00000000..d9447e1b --- /dev/null +++ b/src/mapping/google/resource/vmwareengine/google_vmwareengine_external_access_rule.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "vmwareengine.externalAccessRules.create", + "vmwareengine.externalAccessRules.delete", + "vmwareengine.externalAccessRules.get", + "vmwareengine.externalAccessRules.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vmwareengine/google_vmwareengine_external_address.json b/src/mapping/google/resource/vmwareengine/google_vmwareengine_external_address.json new file mode 100644 index 00000000..8a3f5329 --- /dev/null +++ b/src/mapping/google/resource/vmwareengine/google_vmwareengine_external_address.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "vmwareengine.externalAddresses.create", + "vmwareengine.externalAddresses.delete", + "vmwareengine.externalAddresses.get", + "vmwareengine.externalAddresses.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vmwareengine/google_vmwareengine_network.json b/src/mapping/google/resource/vmwareengine/google_vmwareengine_network.json new file mode 100644 index 00000000..57e7ec5f --- /dev/null +++ b/src/mapping/google/resource/vmwareengine/google_vmwareengine_network.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "vmwareengine.vmwareEngineNetworks.create", + "vmwareengine.vmwareEngineNetworks.delete", + "vmwareengine.vmwareEngineNetworks.get", + "vmwareengine.vmwareEngineNetworks.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vmwareengine/google_vmwareengine_network_peering.json b/src/mapping/google/resource/vmwareengine/google_vmwareengine_network_peering.json new file mode 100644 index 00000000..fee1226f --- /dev/null +++ b/src/mapping/google/resource/vmwareengine/google_vmwareengine_network_peering.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "vmwareengine.externalAddresses.create", + "vmwareengine.externalAddresses.delete", + "vmwareengine.externalAddresses.get", + "vmwareengine.externalAddresses.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vmwareengine/google_vmwareengine_network_policy.json b/src/mapping/google/resource/vmwareengine/google_vmwareengine_network_policy.json new file mode 100644 index 00000000..3dacb5d2 --- /dev/null +++ b/src/mapping/google/resource/vmwareengine/google_vmwareengine_network_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "vmwareengine.networkPolicies.create", + "vmwareengine.networkPolicies.delete", + "vmwareengine.networkPolicies.get", + "vmwareengine.networkPolicies.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vmwareengine/google_vmwareengine_private_cloud.json b/src/mapping/google/resource/vmwareengine/google_vmwareengine_private_cloud.json new file mode 100644 index 00000000..b8ec8759 --- /dev/null +++ b/src/mapping/google/resource/vmwareengine/google_vmwareengine_private_cloud.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "vmwareengine.privateClouds.create", + "vmwareengine.privateClouds.get", + "vmwareengine.privateClouds.delete", + "vmwareengine.privateClouds.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vmwareengine/google_vmwareengine_subnet.json b/src/mapping/google/resource/vmwareengine/google_vmwareengine_subnet.json new file mode 100644 index 00000000..090dbc7c --- /dev/null +++ b/src/mapping/google/resource/vmwareengine/google_vmwareengine_subnet.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "vmwareengine.subnets.get", + "vmwareengine.subnets.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/vpcaccess/google_vpc_access_connector.json b/src/mapping/google/resource/vpcaccess/google_vpc_access_connector.json new file mode 100644 index 00000000..4dadb545 --- /dev/null +++ b/src/mapping/google/resource/vpcaccess/google_vpc_access_connector.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "vpcaccess.connectors.create", + "vpcaccess.connectors.delete", + "vpcaccess.connectors.get", + "vpcaccess.connectors.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workflows/google_workflows_workflow.json b/src/mapping/google/resource/workflows/google_workflows_workflow.json new file mode 100644 index 00000000..45efd560 --- /dev/null +++ b/src/mapping/google/resource/workflows/google_workflows_workflow.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "workflows.workflows.create", + "workflows.workflows.delete", + "workflows.workflows.get", + "workflows.workflows.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation.json b/src/mapping/google/resource/workstations/google_workstations_workstation.json new file mode 100644 index 00000000..d83fe594 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "workstations.workstations.create", + "workstations.workstations.delete", + "workstations.workstations.get", + "workstations.workstations.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation_cluster.json b/src/mapping/google/resource/workstations/google_workstations_workstation_cluster.json new file mode 100644 index 00000000..525e4cf2 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation_cluster.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "workstations.workstationClusters.create", + "workstations.workstationClusters.delete", + "workstations.workstationClusters.get", + "workstations.workstationClusters.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation_config.json b/src/mapping/google/resource/workstations/google_workstations_workstation_config.json new file mode 100644 index 00000000..4b11e785 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation_config.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "workstations.workstationConfigs.create", + "workstations.workstationConfigs.delete", + "workstations.workstationConfigs.get", + "workstations.workstationConfigs.update" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_binding.json b/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_binding.json new file mode 100644 index 00000000..a8904bc7 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "workstations.workstationConfigs.getIamPolicy", + "workstations.workstationConfigs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_member.json b/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_member.json new file mode 100644 index 00000000..a8904bc7 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "workstations.workstationConfigs.getIamPolicy", + "workstations.workstationConfigs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_policy.json b/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_policy.json new file mode 100644 index 00000000..60e562c0 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation_config_iam_policy.json @@ -0,0 +1,16 @@ +[ + { + "apply": [ + "workstations.workstationConfigs.getIamPolicy", + "workstations.workstationConfigs.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [ + "workstations.workstationConfigs.getIamPolicy" + ] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation_iam_binding.json b/src/mapping/google/resource/workstations/google_workstations_workstation_iam_binding.json new file mode 100644 index 00000000..a9763718 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation_iam_binding.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "workstations.workstations.getIamPolicy", + "workstations.workstations.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation_iam_member.json b/src/mapping/google/resource/workstations/google_workstations_workstation_iam_member.json new file mode 100644 index 00000000..a9763718 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation_iam_member.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "workstations.workstations.getIamPolicy", + "workstations.workstations.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/mapping/google/resource/workstations/google_workstations_workstation_iam_policy.json b/src/mapping/google/resource/workstations/google_workstations_workstation_iam_policy.json new file mode 100644 index 00000000..a9763718 --- /dev/null +++ b/src/mapping/google/resource/workstations/google_workstations_workstation_iam_policy.json @@ -0,0 +1,14 @@ +[ + { + "apply": [ + "workstations.workstations.getIamPolicy", + "workstations.workstations.setIamPolicy" + ], + "attributes": { + "tags": [] + }, + "destroy": [], + "modify": [], + "plan": [] + } +] diff --git a/src/modules.go b/src/modules.go new file mode 100644 index 00000000..a3f34b17 --- /dev/null +++ b/src/modules.go @@ -0,0 +1,101 @@ +package pike + +import ( + "encoding/json" + "fmt" + "io" + "os" + "path/filepath" + + "github.com/hashicorp/go-version" +) + +const ( + ManifestSnapshotFilename = "modules.json" +) + +// Record represents some metadata about an installed module, as part +// of a module JSON. +type Record struct { + Key string `json:"Key"` + SourceAddr string `json:"Source"` + Version *version.Version `json:"-"` + VersionStr string `json:"Version,omitempty"` + Dir string `json:"Dir"` +} + +type ModuleJson map[string]Record + +type modulesJson struct { + Records []Record `json:"Modules"` +} + +type invalidVersionError struct { + err error + key string + version string +} + +func (m *invalidVersionError) Error() string { + return fmt.Sprintf("invalid version %q for %s: %s", m.version, m.key, m.err) +} + +func ReadModuleJson(r io.Reader) (ModuleJson, error) { + src, err := io.ReadAll(r) + + if err != nil { + return nil, err + } + + if len(src) == 0 { + return make(ModuleJson), nil + } + + var read modulesJson + err = json.Unmarshal(src, &read) + + if err != nil { + return nil, &unmarshallJSONError{err, ""} + } + + newModuleJson := make(ModuleJson) + for _, record := range read.Records { + if record.VersionStr != "" { + record.Version, err = version.NewVersion(record.VersionStr) + if err != nil { + return nil, &invalidVersionError{err, record.Key, record.VersionStr} + } + } + // Ensure Windows is using the proper modules path format after + // reading the module's manifest Dir records + record.Dir = filepath.FromSlash(record.Dir) + + if _, exists := newModuleJson[record.Key]; exists { + return nil, fmt.Errorf("snapshot file contains two records for path %s", record.Key) + } + newModuleJson[record.Key] = record + } + return newModuleJson, nil +} + +func ReadModuleJsonForDir(dir string) (ModuleJson, error) { + fn := filepath.Join(dir, ManifestSnapshotFilename) + r, err := os.Open(fn) + if err != nil { + if os.IsNotExist(err) { + return make(ModuleJson), nil + } + return nil, err + } + defer r.Close() + return ReadModuleJson(r) +} + +func ReturnLocalAddrFromSource(source string, listModules ModuleJson) string { + for _, module := range listModules { + if module.SourceAddr == source { + return module.Dir + } + } + return "" +} diff --git a/src/modules_test.go b/src/modules_test.go new file mode 100644 index 00000000..ca4836d7 --- /dev/null +++ b/src/modules_test.go @@ -0,0 +1,305 @@ +package pike + +import ( + "os" + "path/filepath" + "strings" + "testing" +) + +func TestReadModuleJson_ValidInput(t *testing.T) { + jsonInput := `{ + "Modules": [ + { + "Key": "module1", + "Source": "github.com/example/module1", + "Version": "1.0.0", + "Dir": "modules/module1" + }, + { + "Key": "module2", + "Source": "github.com/example/module2", + "Dir": "modules/module2" + } + ] + }` + + reader := strings.NewReader(jsonInput) + result, err := ReadModuleJson(reader) + + if err != nil { + t.Fatalf("Expected no error, got: %v", err) + } + + if len(result) != 2 { + t.Fatalf("Expected 2 modules, got: %d", len(result)) + } + + // Test module1 + module1, exists := result["module1"] + if !exists { + t.Fatal("Expected module1 to exist") + } + if module1.Key != "module1" { + t.Errorf("Expected Key 'module1', got: %s", module1.Key) + } + if module1.SourceAddr != "github.com/example/module1" { + t.Errorf("Expected SourceAddr 'github.com/example/module1', got: %s", module1.SourceAddr) + } + if module1.VersionStr != "1.0.0" { + t.Errorf("Expected VersionStr '1.0.0', got: %s", module1.VersionStr) + } + if module1.Version == nil { + t.Error("Expected Version to be parsed") + } else if module1.Version.String() != "1.0.0" { + t.Errorf("Expected Version '1.0.0', got: %s", module1.Version.String()) + } + + // Test module2 (no version) + module2, exists := result["module2"] + if !exists { + t.Fatal("Expected module2 to exist") + } + if module2.Version != nil { + t.Error("Expected Version to be nil for module without version") + } +} + +func TestReadModuleJson_EmptyInput(t *testing.T) { + reader := strings.NewReader("") + result, err := ReadModuleJson(reader) + + if err != nil { + t.Fatalf("Expected no error, got: %v", err) + } + + if len(result) != 0 { + t.Fatalf("Expected empty ModuleJson, got: %d modules", len(result)) + } +} + +func TestReadModuleJson_InvalidJSON(t *testing.T) { + reader := strings.NewReader(`{"invalid": json}`) + _, err := ReadModuleJson(reader) + + if err == nil { + t.Fatal("Expected error for invalid JSON") + } + + if !strings.Contains(err.Error(), "invalid character 'j' looking for beginning of value") { + t.Errorf("Expected unmarshalling error, got: %v", err) + } +} + +func TestReadModuleJson_DuplicateKeys(t *testing.T) { + jsonInput := `{ + "Modules": [ + { + "Key": "duplicate", + "Source": "github.com/example/module1", + "Dir": "modules/module1" + }, + { + "Key": "duplicate", + "Source": "github.com/example/module2", + "Dir": "modules/module2" + } + ] + }` + + reader := strings.NewReader(jsonInput) + _, err := ReadModuleJson(reader) + + if err == nil { + t.Fatal("Expected error for duplicate keys") + } + + if !strings.Contains(err.Error(), "snapshot file contains two records for path duplicate") { + t.Errorf("Expected duplicate key error, got: %v", err) + } +} + +func TestReadModuleJson_InvalidVersion(t *testing.T) { + jsonInput := `{ + "Modules": [ + { + "Key": "module1", + "Source": "github.com/example/module1", + "Version": "invalid-version", + "Dir": "modules/module1" + } + ] + }` + + reader := strings.NewReader(jsonInput) + _, err := ReadModuleJson(reader) + + if err == nil { + t.Fatal("Expected error for invalid version") + } + + if !strings.Contains(err.Error(), "invalid version") { + t.Errorf("Expected invalid version error, got: %v", err) + } +} + +func TestReadModuleJson_WindowsPathHandling(t *testing.T) { + jsonInput := `{ + "Modules": [ + { + "Key": "module1", + "Source": "github.com/example/module1", + "Dir": "modules/subdir/module1" + } + ] + }` + + reader := strings.NewReader(jsonInput) + result, err := ReadModuleJson(reader) + + if err != nil { + t.Fatalf("Expected no error, got: %v", err) + } + + module1 := result["module1"] + expectedDir := filepath.FromSlash("modules/subdir/module1") + if module1.Dir != expectedDir { + t.Errorf("Expected Dir '%s', got: '%s'", expectedDir, module1.Dir) + } +} + +func TestReadModuleJsonForDir_ValidFile(t *testing.T) { + // Create a temporary directory + tempDir, err := os.MkdirTemp("", "pike-test") + if err != nil { + t.Fatalf("Failed to create temp dir: %v", err) + } + defer os.RemoveAll(tempDir) + + // Create a modules.json file + jsonContent := `{ + "Modules": [ + { + "Key": "test-module", + "Source": "github.com/example/test", + "Dir": "modules/test" + } + ] + }` + + modulesFile := filepath.Join(tempDir, ManifestSnapshotFilename) + err = os.WriteFile(modulesFile, []byte(jsonContent), 0644) + if err != nil { + t.Fatalf("Failed to write modules file: %v", err) + } + + result, err := ReadModuleJsonForDir(tempDir) + if err != nil { + t.Fatalf("Expected no error, got: %v", err) + } + + if len(result) != 1 { + t.Fatalf("Expected 1 module, got: %d", len(result)) + } + + module, exists := result["test-module"] + if !exists { + t.Fatal("Expected test-module to exist") + } + if module.SourceAddr != "github.com/example/test" { + t.Errorf("Expected SourceAddr 'github.com/example/test', got: %s", module.SourceAddr) + } +} + +func TestReadModuleJsonForDir_NonExistentFile(t *testing.T) { + // Create a temporary directory without modules.json + tempDir, err := os.MkdirTemp("", "pike-test") + if err != nil { + t.Fatalf("Failed to create temp dir: %v", err) + } + defer os.RemoveAll(tempDir) + + result, err := ReadModuleJsonForDir(tempDir) + if err != nil { + t.Fatalf("Expected no error for non-existent file, got: %v", err) + } + + if len(result) != 0 { + t.Fatalf("Expected empty ModuleJson, got: %d modules", len(result)) + } +} + +func TestReadModuleJsonForDir_NonExistentDirectory(t *testing.T) { + result, err := ReadModuleJsonForDir("/non/existent/directory") + if err != nil { + t.Fatalf("Expected no error for non-existent directory, got: %v", err) + } + + if len(result) != 0 { + t.Fatalf("Expected empty ModuleJson, got: %d modules", len(result)) + } +} + +func TestReturnLocalAddrFromSource_Found(t *testing.T) { + modules := ModuleJson{ + "module1": Record{ + Key: "module1", + SourceAddr: "github.com/example/module1", + Dir: "/path/to/module1", + }, + "module2": Record{ + Key: "module2", + SourceAddr: "github.com/example/module2", + Dir: "/path/to/module2", + }, + } + + result := ReturnLocalAddrFromSource("github.com/example/module2", modules) + expected := "/path/to/module2" + + if result != expected { + t.Errorf("Expected '%s', got: '%s'", expected, result) + } +} + +func TestReturnLocalAddrFromSource_NotFound(t *testing.T) { + modules := ModuleJson{ + "module1": Record{ + Key: "module1", + SourceAddr: "github.com/example/module1", + Dir: "/path/to/module1", + }, + } + + result := ReturnLocalAddrFromSource("github.com/example/nonexistent", modules) + + if result != "" { + t.Errorf("Expected empty string, got: '%s'", result) + } +} + +func TestReturnLocalAddrFromSource_EmptyModules(t *testing.T) { + modules := make(ModuleJson) + + result := ReturnLocalAddrFromSource("github.com/example/any", modules) + + if result != "" { + t.Errorf("Expected empty string, got: '%s'", result) + } +} + +func TestReturnLocalAddrFromSource_EmptySource(t *testing.T) { + modules := ModuleJson{ + "module1": Record{ + Key: "module1", + SourceAddr: "github.com/example/module1", + Dir: "/path/to/module1", + }, + } + + result := ReturnLocalAddrFromSource("", modules) + + if result != "" { + t.Errorf("Expected empty string, got: '%s'", result) + } +} diff --git a/src/parse/aws-members.json b/src/parse/aws-members.json index 243cea73..1c433ceb 100755 --- a/src/parse/aws-members.json +++ b/src/parse/aws-members.json @@ -1,2038 +1,2195 @@ { - "dataSources": [ - "aws_acm_certificate", - "aws_acmpca_certificate", - "aws_acmpca_certificate_authority", - "aws_ami", - "aws_ami_ids", - "aws_api_gateway_api_key", - "aws_api_gateway_authorizer", - "aws_api_gateway_authorizers", - "aws_api_gateway_domain_name", - "aws_api_gateway_export", - "aws_api_gateway_resource", - "aws_api_gateway_rest_api", - "aws_api_gateway_sdk", - "aws_api_gateway_vpc_link", - "aws_apigatewayv2_api", - "aws_apigatewayv2_apis", - "aws_apigatewayv2_export", - "aws_apigatewayv2_vpc_link", - "aws_appconfig_configuration_profile", - "aws_appconfig_configuration_profiles", - "aws_appconfig_environment", - "aws_appconfig_environments", - "aws_appintegrations_event_integration", - "aws_appmesh_gateway_route", - "aws_appmesh_mesh", - "aws_appmesh_route", - "aws_appmesh_virtual_gateway", - "aws_appmesh_virtual_node", - "aws_appmesh_virtual_router", - "aws_appmesh_virtual_service", - "aws_apprunner_hosted_zone_id", - "aws_appstream_image", - "aws_arn", - "aws_athena_named_query", - "aws_auditmanager_control", - "aws_auditmanager_framework", - "aws_autoscaling_group", - "aws_autoscaling_groups", - "aws_availability_zone", - "aws_availability_zones", - "aws_backup_framework", - "aws_backup_plan", - "aws_backup_report_plan", - "aws_backup_selection", - "aws_backup_vault", - "aws_batch_compute_environment", - "aws_batch_job_definition", - "aws_batch_job_queue", - "aws_batch_scheduling_policy", - "aws_bedrock_custom_model", - "aws_bedrock_custom_models", - "aws_bedrock_foundation_model", - "aws_bedrock_foundation_models", - "aws_bedrock_inference_profile", - "aws_bedrock_inference_profiles", - "aws_bedrockagent_agent_versions", - "aws_billing_service_account", - "aws_budgets_budget", - "aws_caller_identity", - "aws_canonical_user_id", - "aws_chatbot_slack_workspace", - "aws_cloudcontrolapi_resource", - "aws_cloudformation_export", - "aws_cloudformation_stack", - "aws_cloudformation_type", - "aws_cloudfront_cache_policy", - "aws_cloudfront_distribution", - "aws_cloudfront_log_delivery_canonical_user_id", - "aws_cloudfront_origin_access_control", - "aws_cloudfront_origin_access_identities", - "aws_cloudfront_origin_access_identity", - "aws_cloudfront_origin_request_policy", - "aws_cloudfront_realtime_log_config", - "aws_cloudfront_response_headers_policy", - "aws_cloudhsm_v2_cluster", - "aws_cloudtrail_service_account", - "aws_cloudwatch_event_bus", - "aws_cloudwatch_event_buses", - "aws_cloudwatch_event_connection", - "aws_cloudwatch_event_source", - "aws_cloudwatch_log_data_protection_policy_document", - "aws_cloudwatch_log_group", - "aws_cloudwatch_log_groups", - "aws_codeartifact_authorization_token", - "aws_codeartifact_repository_endpoint", - "aws_codebuild_fleet", - "aws_codecatalyst_dev_environment", - "aws_codecommit_approval_rule_template", - "aws_codecommit_repository", - "aws_codeguruprofiler_profiling_group", - "aws_codestarconnections_connection", - "aws_cognito_identity_pool", - "aws_cognito_user_group", - "aws_cognito_user_groups", - "aws_cognito_user_pool", - "aws_cognito_user_pool_client", - "aws_cognito_user_pool_clients", - "aws_cognito_user_pool_signing_certificate", - "aws_cognito_user_pools", - "aws_connect_bot_association", - "aws_connect_contact_flow", - "aws_connect_contact_flow_module", - "aws_connect_hours_of_operation", - "aws_connect_instance", - "aws_connect_instance_storage_config", - "aws_connect_lambda_function_association", - "aws_connect_prompt", - "aws_connect_queue", - "aws_connect_quick_connect", - "aws_connect_routing_profile", - "aws_connect_security_profile", - "aws_connect_user", - "aws_connect_user_hierarchy_group", - "aws_connect_user_hierarchy_structure", - "aws_connect_vocabulary", - "aws_controltower_controls", - "aws_cur_report_definition", - "aws_customer_gateway", - "aws_datazone_environment_blueprint", - "aws_db_cluster_snapshot", - "aws_db_event_categories", - "aws_db_instance", - "aws_db_instances", - "aws_db_parameter_group", - "aws_db_proxy", - "aws_db_snapshot", - "aws_db_subnet_group", - "aws_default_tags", - "aws_devopsguru_notification_channel", - "aws_devopsguru_resource_collection", - "aws_directory_service_directory", - "aws_dms_certificate", - "aws_dms_endpoint", - "aws_dms_replication_instance", - "aws_dms_replication_subnet_group", - "aws_dms_replication_task", - "aws_docdb_engine_version", - "aws_docdb_orderable_db_instance", - "aws_dx_connection", - "aws_dx_gateway", - "aws_dx_location", - "aws_dx_locations", - "aws_dx_router_configuration", - "aws_dynamodb_table", - "aws_dynamodb_table_item", - "aws_ebs_default_kms_key", - "aws_ebs_encryption_by_default", - "aws_ebs_snapshot", - "aws_ebs_snapshot_ids", - "aws_ebs_volume", - "aws_ebs_volumes", - "aws_ec2_capacity_block_offering", - "aws_ec2_client_vpn_endpoint", - "aws_ec2_coip_pool", - "aws_ec2_coip_pools", - "aws_ec2_host", - "aws_ec2_instance_type", - "aws_ec2_instance_type_offering", - "aws_ec2_instance_type_offerings", - "aws_ec2_instance_types", - "aws_ec2_local_gateway", - "aws_ec2_local_gateway_route_table", - "aws_ec2_local_gateway_route_tables", - "aws_ec2_local_gateway_virtual_interface", - "aws_ec2_local_gateway_virtual_interface_group", - "aws_ec2_local_gateway_virtual_interface_groups", - "aws_ec2_local_gateways", - "aws_ec2_managed_prefix_list", - "aws_ec2_managed_prefix_lists", - "aws_ec2_network_insights_analysis", - "aws_ec2_network_insights_path", - "aws_ec2_public_ipv4_pool", - "aws_ec2_public_ipv4_pools", - "aws_ec2_serial_console_access", - "aws_ec2_spot_price", - "aws_ec2_transit_gateway", - "aws_ec2_transit_gateway_attachment", - "aws_ec2_transit_gateway_attachments", - "aws_ec2_transit_gateway_connect", - "aws_ec2_transit_gateway_connect_peer", - "aws_ec2_transit_gateway_dx_gateway_attachment", - "aws_ec2_transit_gateway_multicast_domain", - "aws_ec2_transit_gateway_peering_attachment", - "aws_ec2_transit_gateway_peering_attachments", - "aws_ec2_transit_gateway_route_table", - "aws_ec2_transit_gateway_route_table_associations", - "aws_ec2_transit_gateway_route_table_routes", - "aws_ec2_transit_gateway_route_tables", - "aws_ec2_transit_gateway_vpc_attachment", - "aws_ec2_transit_gateway_vpc_attachments", - "aws_ec2_transit_gateway_vpn_attachment", - "aws_ec2_transitgateway_route_table_propagations", - "aws_ecr_authorization_token", - "aws_ecr_image", - "aws_ecr_lifecycle_policy_document", - "aws_ecr_pull_through_cache_rule", - "aws_ecr_repositories", - "aws_ecr_repository", - "aws_ecr_repository_creation_template", - "aws_ecrpublic_authorization_token", - "aws_ecs_cluster", - "aws_ecs_clusters", - "aws_ecs_container_definition", - "aws_ecs_service", - "aws_ecs_task_definition", - "aws_ecs_task_execution", - "aws_efs_access_point", - "aws_efs_access_points", - "aws_efs_file_system", - "aws_efs_mount_target", - "aws_eip", - "aws_eips", - "aws_eks_access_entry", - "aws_eks_addon", - "aws_eks_addon_version", - "aws_eks_cluster", - "aws_eks_cluster_auth", - "aws_eks_clusters", - "aws_eks_node_group", - "aws_eks_node_groups", - "aws_elastic_beanstalk_application", - "aws_elastic_beanstalk_hosted_zone", - "aws_elastic_beanstalk_solution_stack", - "aws_elasticache_cluster", - "aws_elasticache_replication_group", - "aws_elasticache_reserved_cache_node_offering", - "aws_elasticache_serverless_cache", - "aws_elasticache_user", - "aws_elasticsearch_domain", - "aws_elb_hosted_zone_id", - "aws_elb_service_account", - "aws_emr_release_labels", - "aws_emr_supported_instance_types", - "aws_emrcontainers_virtual_cluster", - "aws_fsx_ontap_file_system", - "aws_fsx_ontap_storage_virtual_machine", - "aws_fsx_ontap_storage_virtual_machines", - "aws_fsx_openzfs_snapshot", - "aws_fsx_windows_file_system", - "aws_globalaccelerator_accelerator", - "aws_globalaccelerator_custom_routing_accelerator", - "aws_glue_catalog_table", - "aws_glue_connection", - "aws_glue_data_catalog_encryption_settings", - "aws_glue_registry", - "aws_glue_script", - "aws_grafana_workspace", - "aws_guardduty_detector", - "aws_guardduty_finding_ids", - "aws_iam_access_keys", - "aws_iam_account_alias", - "aws_iam_group", - "aws_iam_instance_profile", - "aws_iam_instance_profiles", - "aws_iam_openid_connect_provider", - "aws_iam_policy", - "aws_iam_policy_document", - "aws_iam_principal_policy_simulation", - "aws_iam_role", - "aws_iam_roles", - "aws_iam_server_certificate", - "aws_iam_session_context", - "aws_iam_user", - "aws_iam_user_ssh_key", - "aws_iam_users", - "aws_identitystore_group", - "aws_identitystore_groups", - "aws_identitystore_user", - "aws_imagebuilder_component", - "aws_imagebuilder_components", - "aws_imagebuilder_container_recipe", - "aws_imagebuilder_container_recipes", - "aws_imagebuilder_distribution_configuration", - "aws_imagebuilder_distribution_configurations", - "aws_imagebuilder_image", - "aws_imagebuilder_image_pipeline", - "aws_imagebuilder_image_pipelines", - "aws_imagebuilder_image_recipe", - "aws_imagebuilder_image_recipes", - "aws_imagebuilder_infrastructure_configuration", - "aws_imagebuilder_infrastructure_configurations", - "aws_inspector_rules_packages", - "aws_instance", - "aws_instances", - "aws_internet_gateway", - "aws_iot_endpoint", - "aws_iot_registration_code", - "aws_ip_ranges", - "aws_ivs_stream_key", - "aws_kendra_experience", - "aws_kendra_faq", - "aws_kendra_index", - "aws_kendra_query_suggestions_block_list", - "aws_kendra_thesaurus", - "aws_key_pair", - "aws_kinesis_firehose_delivery_stream", - "aws_kinesis_stream", - "aws_kinesis_stream_consumer", - "aws_kms_alias", - "aws_kms_ciphertext", - "aws_kms_custom_key_store", - "aws_kms_secret", - "aws_kms_secrets", - "aws_lakeformation_data_lake_settings", - "aws_lakeformation_permissions", - "aws_lakeformation_resource", - "aws_lambda_alias", - "aws_lambda_code_signing_config", - "aws_lambda_function", - "aws_lambda_invocation", - "aws_launch_configuration", - "aws_launch_template", - "aws_lb", - "aws_lb_hosted_zone_id", - "aws_lb_listener", - "aws_lb_listener_rule", - "aws_lb_target_group", - "aws_lb_trust_store", - "aws_lbs", - "aws_lex_bot", - "aws_lex_bot_alias", - "aws_lex_intent", - "aws_lex_slot_type", - "aws_licensemanager_grants", - "aws_licensemanager_received_license", - "aws_licensemanager_received_licenses", - "aws_location_geofence_collection", - "aws_location_map", - "aws_location_place_index", - "aws_location_route_calculator", - "aws_location_tracker", - "aws_location_tracker_association", - "aws_location_tracker_associations", - "aws_medialive_input", - "aws_mq_broker", - "aws_mq_broker_engine_types", - "aws_mq_broker_instance_type_offerings", - "aws_msk_bootstrap_brokers", - "aws_msk_broker_nodes", - "aws_msk_cluster", - "aws_msk_configuration", - "aws_msk_vpc_connection", - "aws_mskconnect_connector", - "aws_mskconnect_custom_plugin", - "aws_mskconnect_worker_configuration", - "aws_nat_gateway", - "aws_nat_gateways", - "aws_neptune_engine_version", - "aws_neptune_orderable_db_instance", - "aws_network_acls", - "aws_network_interfaces", - "aws_networkfirewall_firewall", - "aws_networkfirewall_firewall_policy", - "aws_networkfirewall_resource_policy", - "aws_networkmanager_connection", - "aws_networkmanager_connections", - "aws_networkmanager_core_network_policy_document", - "aws_networkmanager_device", - "aws_networkmanager_devices", - "aws_networkmanager_global_network", - "aws_networkmanager_global_networks", - "aws_networkmanager_link", - "aws_networkmanager_links", - "aws_networkmanager_site", - "aws_networkmanager_sites", - "aws_oam_link", - "aws_oam_links", - "aws_oam_sink", - "aws_oam_sinks", - "aws_opensearch_domain", - "aws_opensearchserverless_access_policy", - "aws_opensearchserverless_collection", - "aws_opensearchserverless_lifecycle_policy", - "aws_opensearchserverless_security_config", - "aws_opensearchserverless_security_policy", - "aws_opensearchserverless_vpc_endpoint", - "aws_organizations_delegated_administrators", - "aws_organizations_delegated_services", - "aws_organizations_organization", - "aws_organizations_organizational_unit", - "aws_organizations_organizational_unit_child_accounts", - "aws_organizations_organizational_unit_descendant_accounts", - "aws_organizations_organizational_unit_descendant_organizational_units", - "aws_organizations_organizational_units", - "aws_organizations_policies", - "aws_organizations_policies_for_target", - "aws_organizations_policy", - "aws_organizations_resource_tags", - "aws_outposts_asset", - "aws_outposts_assets", - "aws_outposts_outpost", - "aws_outposts_outpost_instance_type", - "aws_outposts_outpost_instance_types", - "aws_outposts_outposts", - "aws_outposts_site", - "aws_outposts_sites", - "aws_partition", - "aws_polly_voices", - "aws_prefix_list", - "aws_pricing_product", - "aws_prometheus_default_scraper_configuration", - "aws_prometheus_workspace", - "aws_prometheus_workspaces", - "aws_qldb_ledger", - "aws_quicksight_analysis", - "aws_quicksight_data_set", - "aws_quicksight_group", - "aws_quicksight_theme", - "aws_quicksight_user", - "aws_ram_resource_share", - "aws_rds_certificate", - "aws_rds_cluster", - "aws_rds_cluster_parameter_group", - "aws_rds_clusters", - "aws_rds_engine_version", - "aws_rds_orderable_db_instance", - "aws_rds_reserved_instance_offering", - "aws_redshift_cluster", - "aws_redshift_cluster_credentials", - "aws_redshift_data_shares", - "aws_redshift_orderable_cluster", - "aws_redshift_producer_data_shares", - "aws_redshift_service_account", - "aws_redshift_subnet_group", - "aws_redshiftserverless_credentials", - "aws_redshiftserverless_namespace", - "aws_redshiftserverless_workgroup", - "aws_region", - "aws_regions", - "aws_resourceexplorer2_search", - "aws_resourcegroupstaggingapi_resources", - "aws_route", - "aws_route53_delegation_set", - "aws_route53_resolver_endpoint", - "aws_route53_resolver_firewall_config", - "aws_route53_resolver_firewall_domain_list", - "aws_route53_resolver_firewall_rule_group", - "aws_route53_resolver_firewall_rule_group_association", - "aws_route53_resolver_firewall_rules", - "aws_route53_resolver_query_log_config", - "aws_route53_resolver_rule", - "aws_route53_resolver_rules", - "aws_route53_traffic_policy_document", - "aws_route53_zone", - "aws_route53_zones", - "aws_route53profiles_profiles", - "aws_route_table", - "aws_route_tables", - "aws_s3_account_public_access_block", - "aws_s3_bucket", - "aws_s3_bucket_object", - "aws_s3_bucket_objects", - "aws_s3_bucket_policy", - "aws_s3_directory_buckets", - "aws_s3_object", - "aws_s3_objects", - "aws_s3control_multi_region_access_point", - "aws_sagemaker_prebuilt_ecr_image", - "aws_saml_provider", - "aws_secretsmanager_random_password", - "aws_secretsmanager_secret", - "aws_secretsmanager_secret_rotation", - "aws_secretsmanager_secret_version", - "aws_secretsmanager_secret_versions", - "aws_secretsmanager_secrets", - "aws_security_group", - "aws_security_groups", - "aws_serverlessapplicationrepository_application", - "aws_service", - "aws_service_discovery_dns_namespace", - "aws_service_discovery_http_namespace", - "aws_service_discovery_service", - "aws_service_principal", - "aws_servicecatalog_constraint", - "aws_servicecatalog_launch_paths", - "aws_servicecatalog_portfolio", - "aws_servicecatalog_portfolio_constraints", - "aws_servicecatalog_product", - "aws_servicecatalog_provisioning_artifacts", - "aws_servicecatalogappregistry_application", - "aws_servicecatalogappregistry_attribute_group", - "aws_servicecatalogappregistry_attribute_group_associations", - "aws_servicequotas_service", - "aws_servicequotas_service_quota", - "aws_servicequotas_templates", - "aws_ses_active_receipt_rule_set", - "aws_ses_domain_identity", - "aws_ses_email_identity", - "aws_sesv2_configuration_set", - "aws_sesv2_dedicated_ip_pool", - "aws_sesv2_email_identity", - "aws_sesv2_email_identity_mail_from_attributes", - "aws_sfn_activity", - "aws_sfn_alias", - "aws_sfn_state_machine", - "aws_sfn_state_machine_versions", - "aws_shield_protection", - "aws_signer_signing_job", - "aws_signer_signing_profile", - "aws_sns_topic", - "aws_spot_datafeed_subscription", - "aws_sqs_queue", - "aws_sqs_queues", - "aws_ssm_document", - "aws_ssm_instances", - "aws_ssm_parameter", - "aws_ssm_parameters_by_path", - "aws_ssm_patch_baseline", - "aws_ssm_patch_baselines", - "aws_ssmcontacts_contact", - "aws_ssmcontacts_contact_channel", - "aws_ssmcontacts_plan", - "aws_ssmcontacts_rotation", - "aws_ssmincidents_replication_set", - "aws_ssmincidents_response_plan", - "aws_ssoadmin_application", - "aws_ssoadmin_application_assignments", - "aws_ssoadmin_application_providers", - "aws_ssoadmin_instances", - "aws_ssoadmin_permission_set", - "aws_ssoadmin_permission_sets", - "aws_ssoadmin_principal_application_assignments", - "aws_storagegateway_local_disk", - "aws_subnet", - "aws_subnet_ids", - "aws_subnets", - "aws_synthetics_runtime_version", - "aws_synthetics_runtime_versions", - "aws_timestreamwrite_database", - "aws_timestreamwrite_table", - "aws_transfer_connector", - "aws_transfer_server", - "aws_verifiedpermissions_policy_store", - "aws_vpc", - "aws_vpc_dhcp_options", - "aws_vpc_endpoint", - "aws_vpc_endpoint_service", - "aws_vpc_ipam_pool", - "aws_vpc_ipam_pool_cidrs", - "aws_vpc_ipam_pools", - "aws_vpc_ipam_preview_next_cidr", - "aws_vpc_peering_connection", - "aws_vpc_peering_connections", - "aws_vpc_security_group_rule", - "aws_vpc_security_group_rules", - "aws_vpclattice_auth_policy", - "aws_vpclattice_listener", - "aws_vpclattice_resource_policy", - "aws_vpclattice_service", - "aws_vpclattice_service_network", - "aws_vpcs", - "aws_vpn_gateway", - "aws_waf_ipset", - "aws_waf_rate_based_rule", - "aws_waf_rule", - "aws_waf_web_acl", - "aws_wafregional_ipset", - "aws_wafregional_rate_based_rule", - "aws_wafregional_rule", - "aws_wafregional_web_acl", - "aws_wafv2_ip_set", - "aws_wafv2_regex_pattern_set", - "aws_wafv2_rule_group", - "aws_wafv2_web_acl", - "aws_workspaces_bundle", - "aws_workspaces_directory", - "aws_workspaces_image", - "ssm_maintenance_windows" - ], - "resources": [ - "aws_accessanalyzer_analyzer", - "aws_accessanalyzer_archive_rule", - "aws_account_alternate_contact", - "aws_account_primary_contact", - "aws_account_region", - "aws_acm_certificate", - "aws_acm_certificate_validation", - "aws_acmpca_certificate", - "aws_acmpca_certificate_authority", - "aws_acmpca_certificate_authority_certificate", - "aws_acmpca_permission", - "aws_acmpca_policy", - "aws_alb", - "aws_ami", - "aws_ami_copy", - "aws_ami_from_instance", - "aws_ami_launch_permission", - "aws_amplify_app", - "aws_amplify_backend_environment", - "aws_amplify_branch", - "aws_amplify_domain_association", - "aws_amplify_webhook", - "aws_api_gateway_account", - "aws_api_gateway_api_key", - "aws_api_gateway_authorizer", - "aws_api_gateway_base_path_mapping", - "aws_api_gateway_client_certificate", - "aws_api_gateway_deployment", - "aws_api_gateway_documentation_part", - "aws_api_gateway_documentation_version", - "aws_api_gateway_domain_name", - "aws_api_gateway_domain_name_access_association", - "aws_api_gateway_gateway_response", - "aws_api_gateway_integration", - "aws_api_gateway_integration_response", - "aws_api_gateway_method", - "aws_api_gateway_method_response", - "aws_api_gateway_method_settings", - "aws_api_gateway_model", - "aws_api_gateway_request_validator", - "aws_api_gateway_resource", - "aws_api_gateway_rest_api", - "aws_api_gateway_rest_api_policy", - "aws_api_gateway_stage", - "aws_api_gateway_usage_plan", - "aws_api_gateway_usage_plan_key", - "aws_api_gateway_vpc_link", - "aws_apigatewayv2_api", - "aws_apigatewayv2_api_mapping", - "aws_apigatewayv2_authorizer", - "aws_apigatewayv2_deployment", - "aws_apigatewayv2_domain_name", - "aws_apigatewayv2_integration", - "aws_apigatewayv2_integration_response", - "aws_apigatewayv2_model", - "aws_apigatewayv2_route", - "aws_apigatewayv2_route_response", - "aws_apigatewayv2_stage", - "aws_apigatewayv2_vpc_link", - "aws_app_cookie_stickiness_policy", - "aws_appautoscaling_policy", - "aws_appautoscaling_scheduled_action", - "aws_appautoscaling_target", - "aws_appconfig_application", - "aws_appconfig_configuration_profile", - "aws_appconfig_deployment", - "aws_appconfig_deployment_strategy", - "aws_appconfig_environment", - "aws_appconfig_extension", - "aws_appconfig_extension_association", - "aws_appconfig_hosted_configuration_version", - "aws_appfabric_app_authorization", - "aws_appfabric_app_authorization_connection", - "aws_appfabric_app_bundle", - "aws_appfabric_ingestion", - "aws_appfabric_ingestion_destination", - "aws_appflow_connector_profile", - "aws_appflow_flow", - "aws_appintegrations_data_integration", - "aws_appintegrations_event_integration", - "aws_applicationinsights_application", - "aws_appmesh_gateway_route", - "aws_appmesh_mesh", - "aws_appmesh_route", - "aws_appmesh_virtual_gateway", - "aws_appmesh_virtual_node", - "aws_appmesh_virtual_router", - "aws_appmesh_virtual_service", - "aws_apprunner_auto_scaling_configuration_version", - "aws_apprunner_connection", - "aws_apprunner_custom_domain_association", - "aws_apprunner_default_auto_scaling_configuration_version", - "aws_apprunner_deployment", - "aws_apprunner_observability_configuration", - "aws_apprunner_service", - "aws_apprunner_vpc_connector", - "aws_apprunner_vpc_ingress_connection", - "aws_appstream_directory_config", - "aws_appstream_fleet", - "aws_appstream_fleet_stack_association", - "aws_appstream_image_builder", - "aws_appstream_stack", - "aws_appstream_user", - "aws_appstream_user_stack_association", - "aws_appsync_api_cache", - "aws_appsync_api_key", - "aws_appsync_datasource", - "aws_appsync_domain_name", - "aws_appsync_domain_name_api_association", - "aws_appsync_function", - "aws_appsync_graphql_api", - "aws_appsync_resolver", - "aws_appsync_source_api_association", - "aws_appsync_type", - "aws_athena_data_catalog", - "aws_athena_database", - "aws_athena_named_query", - "aws_athena_prepared_statement", - "aws_athena_workgroup", - "aws_auditmanager_account_registration", - "aws_auditmanager_assessment", - "aws_auditmanager_assessment_delegation", - "aws_auditmanager_assessment_report", - "aws_auditmanager_control", - "aws_auditmanager_framework", - "aws_auditmanager_framework_share", - "aws_auditmanager_organization_admin_account_registration", - "aws_autoscaling_attachment", - "aws_autoscaling_group", - "aws_autoscaling_group_tag", - "aws_autoscaling_lifecycle_hook", - "aws_autoscaling_notification", - "aws_autoscaling_policy", - "aws_autoscaling_schedule", - "aws_autoscaling_traffic_source_attachment", - "aws_autoscalingplans_scaling_plan", - "aws_backup_framework", - "aws_backup_global_settings", - "aws_backup_logically_air_gapped_vault", - "aws_backup_plan", - "aws_backup_region_settings", - "aws_backup_report_plan", - "aws_backup_selection", - "aws_backup_vault", - "aws_backup_vault_lock_configuration", - "aws_backup_vault_notifications", - "aws_backup_vault_policy", - "aws_batch_compute_environment", - "aws_batch_job_definition", - "aws_batch_job_queue", - "aws_batch_scheduling_policy", - "aws_bcmdataexports_export", - "aws_bedrock_custom_model", - "aws_bedrock_guardrail", - "aws_bedrock_guardrail_version", - "aws_bedrock_inference_profile", - "aws_bedrock_model_invocation_logging_configuration", - "aws_bedrock_provisioned_model_throughput", - "aws_bedrockagent_agent", - "aws_bedrockagent_agent_action_group", - "aws_bedrockagent_agent_alias", - "aws_bedrockagent_agent_knowledge_base_association", - "aws_bedrockagent_data_source", - "aws_bedrockagent_knowledge_base", - "aws_budgets_budget", - "aws_budgets_budget_action", - "aws_ce_anomaly_monitor", - "aws_ce_anomaly_subscription", - "aws_ce_cost_allocation_tag", - "aws_ce_cost_category", - "aws_chatbot_slack_channel_configuration", - "aws_chatbot_teams_channel_configuration", - "aws_chime_voice_connector", - "aws_chime_voice_connector_group", - "aws_chime_voice_connector_logging", - "aws_chime_voice_connector_origination", - "aws_chime_voice_connector_streaming", - "aws_chime_voice_connector_termination", - "aws_chime_voice_connector_termination_credentials", - "aws_chimesdkmediapipelines_media_insights_pipeline_configuration", - "aws_chimesdkvoice_global_settings", - "aws_chimesdkvoice_sip_media_application", - "aws_chimesdkvoice_sip_rule", - "aws_chimesdkvoice_voice_profile_domain", - "aws_cleanrooms_collaboration", - "aws_cleanrooms_configured_table", - "aws_cloud9_environment_ec2", - "aws_cloud9_environment_membership", - "aws_cloudcontrolapi_resource", - "aws_cloudformation_stack", - "aws_cloudformation_stack_instances", - "aws_cloudformation_stack_set", - "aws_cloudformation_stack_set_instance", - "aws_cloudformation_type", - "aws_cloudfront_cache_policy", - "aws_cloudfront_continuous_deployment_policy", - "aws_cloudfront_distribution", - "aws_cloudfront_field_level_encryption_config", - "aws_cloudfront_field_level_encryption_profile", - "aws_cloudfront_function", - "aws_cloudfront_key_group", - "aws_cloudfront_key_value_store", - "aws_cloudfront_monitoring_subscription", - "aws_cloudfront_origin_access_control", - "aws_cloudfront_origin_access_identity", - "aws_cloudfront_origin_request_policy", - "aws_cloudfront_public_key", - "aws_cloudfront_realtime_log_config", - "aws_cloudfront_response_headers_policy", - "aws_cloudfront_vpc_origin", - "aws_cloudfrontkeyvaluestore_key", - "aws_cloudhsm_v2_cluster", - "aws_cloudhsm_v2_hsm", - "aws_cloudsearch_domain", - "aws_cloudsearch_domain_service_access_policy", - "aws_cloudtrail", - "aws_cloudtrail_event_data_store", - "aws_cloudtrail_organization_delegated_admin_account", - "aws_cloudwatch_composite_alarm", - "aws_cloudwatch_dashboard", - "aws_cloudwatch_event_api_destination", - "aws_cloudwatch_event_archive", - "aws_cloudwatch_event_bus", - "aws_cloudwatch_event_bus_policy", - "aws_cloudwatch_event_connection", - "aws_cloudwatch_event_endpoint", - "aws_cloudwatch_event_permission", - "aws_cloudwatch_event_rule", - "aws_cloudwatch_event_target", - "aws_cloudwatch_log_account_policy", - "aws_cloudwatch_log_anomaly_detector", - "aws_cloudwatch_log_data_protection_policy", - "aws_cloudwatch_log_destination", - "aws_cloudwatch_log_destination_policy", - "aws_cloudwatch_log_group", - "aws_cloudwatch_log_index_policy", - "aws_cloudwatch_log_metric_filter", - "aws_cloudwatch_log_resource_policy", - "aws_cloudwatch_log_stream", - "aws_cloudwatch_log_subscription_filter", - "aws_cloudwatch_metric_alarm", - "aws_cloudwatch_metric_stream", - "aws_cloudwatch_query_definition", - "aws_codeartifact_domain", - "aws_codeartifact_domain_permissions_policy", - "aws_codeartifact_repository", - "aws_codeartifact_repository_permissions_policy", - "aws_codebuild_fleet", - "aws_codebuild_project", - "aws_codebuild_report_group", - "aws_codebuild_resource_policy", - "aws_codebuild_source_credential", - "aws_codebuild_webhook", - "aws_codecatalyst_dev_environment", - "aws_codecatalyst_project", - "aws_codecatalyst_source_repository", - "aws_codecommit_approval_rule_template", - "aws_codecommit_approval_rule_template_association", - "aws_codecommit_repository", - "aws_codecommit_trigger", - "aws_codeconnections_connection", - "aws_codeconnections_host", - "aws_codedeploy_app", - "aws_codedeploy_deployment_config", - "aws_codedeploy_deployment_group", - "aws_codeguruprofiler_profiling_group", - "aws_codegurureviewer_repository_association", - "aws_codepipeline", - "aws_codepipeline_custom_action_type", - "aws_codepipeline_webhook", - "aws_codestarconnections_connection", - "aws_codestarconnections_host", - "aws_codestarnotifications_notification_rule", - "aws_cognito_identity_pool", - "aws_cognito_identity_pool_provider_principal_tag", - "aws_cognito_identity_pool_roles_attachment", - "aws_cognito_identity_provider", - "aws_cognito_managed_user_pool_client", - "aws_cognito_resource_server", - "aws_cognito_risk_configuration", - "aws_cognito_user", - "aws_cognito_user_group", - "aws_cognito_user_in_group", - "aws_cognito_user_pool", - "aws_cognito_user_pool_client", - "aws_cognito_user_pool_domain", - "aws_cognito_user_pool_ui_customization", - "aws_comprehend_document_classifier", - "aws_comprehend_entity_recognizer", - "aws_computeoptimizer_enrollment_status", - "aws_computeoptimizer_recommendation_preferences", - "aws_config_aggregate_authorization", - "aws_config_config_rule", - "aws_config_configuration_aggregator", - "aws_config_configuration_recorder", - "aws_config_configuration_recorder_status", - "aws_config_conformance_pack", - "aws_config_delivery_channel", - "aws_config_organization_conformance_pack", - "aws_config_organization_custom_policy_rule", - "aws_config_organization_custom_rule", - "aws_config_organization_managed_rule", - "aws_config_remediation_configuration", - "aws_config_retention_configuration", - "aws_connect_bot_association", - "aws_connect_contact_flow", - "aws_connect_contact_flow_module", - "aws_connect_hours_of_operation", - "aws_connect_instance", - "aws_connect_instance_storage_config", - "aws_connect_lambda_function_association", - "aws_connect_phone_number", - "aws_connect_queue", - "aws_connect_quick_connect", - "aws_connect_routing_profile", - "aws_connect_security_profile", - "aws_connect_user", - "aws_connect_user_hierarchy_group", - "aws_connect_user_hierarchy_structure", - "aws_connect_vocabulary", - "aws_controltower_control", - "aws_controltower_landing_zone", - "aws_costoptimizationhub_enrollment_status", - "aws_costoptimizationhub_preferences", - "aws_cur_report_definition", - "aws_customer_gateway", - "aws_customerprofiles_domain", - "aws_customerprofiles_profile", - "aws_dataexchange_data_set", - "aws_dataexchange_revision", - "aws_datapipeline_pipeline", - "aws_datapipeline_pipeline_definition", - "aws_datasync_agent", - "aws_datasync_location_azure_blob", - "aws_datasync_location_efs", - "aws_datasync_location_fsx_lustre_file_system", - "aws_datasync_location_fsx_ontap_file_system", - "aws_datasync_location_fsx_openzfs_file_system", - "aws_datasync_location_fsx_windows_file_system", - "aws_datasync_location_hdfs", - "aws_datasync_location_nfs", - "aws_datasync_location_object_storage", - "aws_datasync_location_s3", - "aws_datasync_location_smb", - "aws_datasync_task", - "aws_datazone_asset_type", - "aws_datazone_domain", - "aws_datazone_environment", - "aws_datazone_environment_blueprint_configuration", - "aws_datazone_environment_profile", - "aws_datazone_form_type", - "aws_datazone_glossary", - "aws_datazone_glossary_term", - "aws_datazone_project", - "aws_datazone_user_profile", - "aws_dax_cluster", - "aws_dax_parameter_group", - "aws_dax_subnet_group", - "aws_db_cluster_snapshot", - "aws_db_event_subscription", - "aws_db_instance", - "aws_db_instance_automated_backups_replication", - "aws_db_instance_role_association", - "aws_db_option_group", - "aws_db_parameter_group", - "aws_db_proxy", - "aws_db_proxy_default_target_group", - "aws_db_proxy_endpoint", - "aws_db_proxy_target", - "aws_db_snapshot", - "aws_db_snapshot_copy", - "aws_db_subnet_group", - "aws_default_network_acl", - "aws_default_route_table", - "aws_default_security_group", - "aws_default_subnet", - "aws_default_vpc", - "aws_default_vpc_dhcp_options", - "aws_detective_graph", - "aws_detective_invitation_accepter", - "aws_detective_member", - "aws_detective_organization_admin_account", - "aws_detective_organization_configuration", - "aws_devicefarm_device_pool", - "aws_devicefarm_instance_profile", - "aws_devicefarm_network_profile", - "aws_devicefarm_project", - "aws_devicefarm_upload", - "aws_devopsguru_event_sources_config", - "aws_devopsguru_notification_channel", - "aws_devopsguru_resource_collection", - "aws_devopsguru_service_integration", - "aws_directory_service_conditional_forwarder", - "aws_directory_service_directory", - "aws_directory_service_log_subscription", - "aws_directory_service_radius_settings", - "aws_directory_service_region", - "aws_directory_service_shared_directory", - "aws_directory_service_shared_directory_accepter", - "aws_directory_service_trust", - "aws_dlm_lifecycle_policy", - "aws_dms_certificate", - "aws_dms_endpoint", - "aws_dms_event_subscription", - "aws_dms_replication_config", - "aws_dms_replication_instance", - "aws_dms_replication_subnet_group", - "aws_dms_replication_task", - "aws_dms_s3_endpoint", - "aws_docdb_cluster", - "aws_docdb_cluster_instance", - "aws_docdb_cluster_parameter_group", - "aws_docdb_cluster_snapshot", - "aws_docdb_event_subscription", - "aws_docdb_global_cluster", - "aws_docdb_subnet_group", - "aws_docdbelastic_cluster", - "aws_drs_replication_configuration_template", - "aws_dx_bgp_peer", - "aws_dx_connection", - "aws_dx_connection_association", - "aws_dx_connection_confirmation", - "aws_dx_gateway", - "aws_dx_gateway_association", - "aws_dx_gateway_association_proposal", - "aws_dx_hosted_connection", - "aws_dx_hosted_private_virtual_interface", - "aws_dx_hosted_private_virtual_interface_accepter", - "aws_dx_hosted_public_virtual_interface", - "aws_dx_hosted_public_virtual_interface_accepter", - "aws_dx_hosted_transit_virtual_interface", - "aws_dx_hosted_transit_virtual_interface_accepter", - "aws_dx_lag", - "aws_dx_macsec_key_association", - "aws_dx_private_virtual_interface", - "aws_dx_public_virtual_interface", - "aws_dx_transit_virtual_interface", - "aws_dynamodb_contributor_insights", - "aws_dynamodb_global_table", - "aws_dynamodb_kinesis_streaming_destination", - "aws_dynamodb_resource_policy", - "aws_dynamodb_table", - "aws_dynamodb_table_export", - "aws_dynamodb_table_item", - "aws_dynamodb_table_replica", - "aws_dynamodb_tag", - "aws_ebs_default_kms_key", - "aws_ebs_encryption_by_default", - "aws_ebs_fast_snapshot_restore", - "aws_ebs_snapshot", - "aws_ebs_snapshot_block_public_access", - "aws_ebs_snapshot_copy", - "aws_ebs_snapshot_import", - "aws_ebs_volume", - "aws_ec2_availability_zone_group", - "aws_ec2_capacity_block_reservation", - "aws_ec2_capacity_reservation", - "aws_ec2_carrier_gateway", - "aws_ec2_client_vpn_authorization_rule", - "aws_ec2_client_vpn_endpoint", - "aws_ec2_client_vpn_network_association", - "aws_ec2_client_vpn_route", - "aws_ec2_fleet", - "aws_ec2_host", - "aws_ec2_image_block_public_access", - "aws_ec2_instance", - "aws_ec2_instance_connect_endpoint", - "aws_ec2_instance_metadata_defaults", - "aws_ec2_instance_state", - "aws_ec2_local_gateway_route", - "aws_ec2_local_gateway_route_table_vpc_association", - "aws_ec2_managed_prefix_list", - "aws_ec2_managed_prefix_list_entry", - "aws_ec2_network_insights_analysis", - "aws_ec2_network_insights_path", - "aws_ec2_serial_console_access", - "aws_ec2_subnet_cidr_reservation", - "aws_ec2_tag", - "aws_ec2_traffic_mirror_filter", - "aws_ec2_traffic_mirror_filter_rule", - "aws_ec2_traffic_mirror_session", - "aws_ec2_traffic_mirror_target", - "aws_ec2_transit_gateway", - "aws_ec2_transit_gateway_connect", - "aws_ec2_transit_gateway_connect_peer", - "aws_ec2_transit_gateway_default_route_table_association", - "aws_ec2_transit_gateway_default_route_table_propagation", - "aws_ec2_transit_gateway_multicast_domain", - "aws_ec2_transit_gateway_multicast_domain_association", - "aws_ec2_transit_gateway_multicast_group_member", - "aws_ec2_transit_gateway_multicast_group_source", - "aws_ec2_transit_gateway_peering_attachment", - "aws_ec2_transit_gateway_peering_attachment_accepter", - "aws_ec2_transit_gateway_policy_table", - "aws_ec2_transit_gateway_policy_table_association", - "aws_ec2_transit_gateway_prefix_list_reference", - "aws_ec2_transit_gateway_route", - "aws_ec2_transit_gateway_route_table", - "aws_ec2_transit_gateway_route_table_association", - "aws_ec2_transit_gateway_route_table_propagation", - "aws_ec2_transit_gateway_vpc_attachment", - "aws_ec2_transit_gateway_vpc_attachment_accepter", - "aws_ecr_account_setting", - "aws_ecr_lifecycle_policy", - "aws_ecr_pull_through_cache_rule", - "aws_ecr_registry_policy", - "aws_ecr_registry_scanning_configuration", - "aws_ecr_replication_configuration", - "aws_ecr_repository", - "aws_ecr_repository_creation_template", - "aws_ecr_repository_policy", - "aws_ecrpublic_repository", - "aws_ecrpublic_repository_policy", - "aws_ecs_account_setting_default", - "aws_ecs_capacity_provider", - "aws_ecs_cluster", - "aws_ecs_cluster_capacity_providers", - "aws_ecs_service", - "aws_ecs_tag", - "aws_ecs_task_definition", - "aws_ecs_task_set", - "aws_efs_access_point", - "aws_efs_backup_policy", - "aws_efs_file_system", - "aws_efs_file_system_policy", - "aws_efs_mount_target", - "aws_efs_replication_configuration", - "aws_egress_only_internet_gateway", - "aws_eip", - "aws_eip_association", - "aws_eip_domain_name", - "aws_eks_access_entry", - "aws_eks_access_policy_association", - "aws_eks_addon", - "aws_eks_cluster", - "aws_eks_fargate_profile", - "aws_eks_identity_provider_config", - "aws_eks_node_group", - "aws_eks_pod_identity_association", - "aws_elastic_beanstalk_application", - "aws_elastic_beanstalk_application_version", - "aws_elastic_beanstalk_configuration_template", - "aws_elastic_beanstalk_environment", - "aws_elasticache_cluster", - "aws_elasticache_global_replication_group", - "aws_elasticache_parameter_group", - "aws_elasticache_replication_group", - "aws_elasticache_reserved_cache_node", - "aws_elasticache_serverless_cache", - "aws_elasticache_subnet_group", - "aws_elasticache_user", - "aws_elasticache_user_group", - "aws_elasticache_user_group_association", - "aws_elasticsearch_domain", - "aws_elasticsearch_domain_policy", - "aws_elasticsearch_domain_saml_options", - "aws_elasticsearch_vpc_endpoint", - "aws_elastictranscoder_pipeline", - "aws_elastictranscoder_preset", - "aws_elb", - "aws_elb_attachment", - "aws_emr_block_public_access_configuration", - "aws_emr_cluster", - "aws_emr_instance_fleet", - "aws_emr_instance_group", - "aws_emr_managed_scaling_policy", - "aws_emr_security_configuration", - "aws_emr_studio", - "aws_emr_studio_session_mapping", - "aws_emrcontainers_job_template", - "aws_emrcontainers_virtual_cluster", - "aws_emrserverless_application", - "aws_evidently_feature", - "aws_evidently_launch", - "aws_evidently_project", - "aws_evidently_segment", - "aws_finspace_kx_cluster", - "aws_finspace_kx_database", - "aws_finspace_kx_dataview", - "aws_finspace_kx_environment", - "aws_finspace_kx_scaling_group", - "aws_finspace_kx_user", - "aws_finspace_kx_volume", - "aws_fis_experiment_template", - "aws_flow_log", - "aws_fms_admin_account", - "aws_fms_policy", - "aws_fms_resource_set", - "aws_fsx_backup", - "aws_fsx_data_repository_association", - "aws_fsx_file_cache", - "aws_fsx_lustre_file_system", - "aws_fsx_ontap_file_system", - "aws_fsx_ontap_storage_virtual_machine", - "aws_fsx_ontap_volume", - "aws_fsx_openzfs_file_system", - "aws_fsx_openzfs_snapshot", - "aws_fsx_openzfs_volume", - "aws_fsx_windows_file_system", - "aws_gamelift_alias", - "aws_gamelift_build", - "aws_gamelift_fleet", - "aws_gamelift_game_server_group", - "aws_gamelift_game_session_queue", - "aws_gamelift_script", - "aws_glacier_vault", - "aws_glacier_vault_lock", - "aws_globalaccelerator_accelerator", - "aws_globalaccelerator_cross_account_attachment", - "aws_globalaccelerator_custom_routing_accelerator", - "aws_globalaccelerator_custom_routing_endpoint_group", - "aws_globalaccelerator_custom_routing_listener", - "aws_globalaccelerator_endpoint_group", - "aws_globalaccelerator_listener", - "aws_glue_catalog_database", - "aws_glue_catalog_table", - "aws_glue_catalog_table_optimizer", - "aws_glue_classifier", - "aws_glue_connection", - "aws_glue_crawler", - "aws_glue_data_catalog_encryption_settings", - "aws_glue_data_quality_ruleset", - "aws_glue_dev_endpoint", - "aws_glue_job", - "aws_glue_ml_transform", - "aws_glue_partition", - "aws_glue_partition_index", - "aws_glue_registry", - "aws_glue_resource_policy", - "aws_glue_schema", - "aws_glue_security_configuration", - "aws_glue_trigger", - "aws_glue_user_defined_function", - "aws_glue_workflow", - "aws_grafana_license_association", - "aws_grafana_role_association", - "aws_grafana_workspace", - "aws_grafana_workspace_api_key", - "aws_grafana_workspace_saml_configuration", - "aws_grafana_workspace_service_account", - "aws_grafana_workspace_service_account_token", - "aws_guardduty_detector", - "aws_guardduty_detector_feature", - "aws_guardduty_filter", - "aws_guardduty_invite_accepter", - "aws_guardduty_ipset", - "aws_guardduty_malware_protection_plan", - "aws_guardduty_member", - "aws_guardduty_organization_admin_account", - "aws_guardduty_organization_configuration", - "aws_guardduty_organization_configuration_feature", - "aws_guardduty_publishing_destination", - "aws_guardduty_threatintelset", - "aws_iam_access_key", - "aws_iam_account_alias", - "aws_iam_account_password_policy", - "aws_iam_group", - "aws_iam_group_membership", - "aws_iam_group_policies_exclusive", - "aws_iam_group_policy", - "aws_iam_group_policy_attachment", - "aws_iam_group_policy_attachments_exclusive", - "aws_iam_instance_profile", - "aws_iam_openid_connect_provider", - "aws_iam_organizations_features", - "aws_iam_policy", - "aws_iam_policy_attachment", - "aws_iam_role", - "aws_iam_role_policies_exclusive", - "aws_iam_role_policy", - "aws_iam_role_policy_attachment", - "aws_iam_role_policy_attachments_exclusive", - "aws_iam_saml_provider", - "aws_iam_security_token_service_preferences", - "aws_iam_server_certificate", - "aws_iam_service_linked_role", - "aws_iam_service_specific_credential", - "aws_iam_signing_certificate", - "aws_iam_user", - "aws_iam_user_group_membership", - "aws_iam_user_login_profile", - "aws_iam_user_policies_exclusive", - "aws_iam_user_policy", - "aws_iam_user_policy_attachment", - "aws_iam_user_policy_attachments_exclusive", - "aws_iam_user_ssh_key", - "aws_iam_virtual_mfa_device", - "aws_identitystore_group", - "aws_identitystore_group_membership", - "aws_identitystore_user", - "aws_imagebuilder_component", - "aws_imagebuilder_container_recipe", - "aws_imagebuilder_distribution_configuration", - "aws_imagebuilder_image", - "aws_imagebuilder_image_pipeline", - "aws_imagebuilder_image_recipe", - "aws_imagebuilder_infrastructure_configuration", - "aws_imagebuilder_lifecycle_policy", - "aws_imagebuilder_workflow", - "aws_inspector2_delegated_admin_account", - "aws_inspector2_enabler", - "aws_inspector2_member_association", - "aws_inspector2_organization_configuration", - "aws_inspector_assessment_target", - "aws_inspector_assessment_template", - "aws_inspector_resource_group", - "aws_instance", - "aws_internet_gateway", - "aws_internet_gateway_attachment", - "aws_internetmonitor_monitor", - "aws_iot_authorizer", - "aws_iot_billing_group", - "aws_iot_ca_certificate", - "aws_iot_certificate", - "aws_iot_domain_configuration", - "aws_iot_event_configurations", - "aws_iot_indexing_configuration", - "aws_iot_logging_options", - "aws_iot_policy", - "aws_iot_policy_attachment", - "aws_iot_provisioning_template", - "aws_iot_role_alias", - "aws_iot_thing", - "aws_iot_thing_group", - "aws_iot_thing_group_membership", - "aws_iot_thing_principal_attachment", - "aws_iot_thing_type", - "aws_iot_topic_rule", - "aws_iot_topic_rule_destination", - "aws_ivs_channel", - "aws_ivs_playback_key_pair", - "aws_ivs_recording_configuration", - "aws_ivschat_logging_configuration", - "aws_ivschat_room", - "aws_kendra_data_source", - "aws_kendra_experience", - "aws_kendra_faq", - "aws_kendra_index", - "aws_kendra_query_suggestions_block_list", - "aws_kendra_thesaurus", - "aws_key_pair", - "aws_keyspaces_keyspace", - "aws_keyspaces_table", - "aws_kinesis_analytics_application", - "aws_kinesis_firehose_delivery_stream", - "aws_kinesis_resource_policy", - "aws_kinesis_stream", - "aws_kinesis_stream_consumer", - "aws_kinesis_video_stream", - "aws_kinesisanalyticsv2_application", - "aws_kinesisanalyticsv2_application_snapshot", - "aws_kms_alias", - "aws_kms_ciphertext", - "aws_kms_custom_key_store", - "aws_kms_external_key", - "aws_kms_grant", - "aws_kms_key", - "aws_kms_key_policy", - "aws_kms_replica_external_key", - "aws_kms_replica_key", - "aws_lakeformation_data_cells_filter", - "aws_lakeformation_data_lake_settings", - "aws_lakeformation_lf_tag", - "aws_lakeformation_permissions", - "aws_lakeformation_resource", - "aws_lakeformation_resource_lf_tag", - "aws_lakeformation_resource_lf_tags", - "aws_lambda_alias", - "aws_lambda_code_signing_config", - "aws_lambda_event_source_mapping", - "aws_lambda_function", - "aws_lambda_function_event_invoke_config", - "aws_lambda_function_recursion_config", - "aws_lambda_function_url", - "aws_lambda_invocation", - "aws_lambda_layer_version", - "aws_lambda_layer_version_permission", - "aws_lambda_permission", - "aws_lambda_provisioned_concurrency_config", - "aws_lambda_runtime_management_config", - "aws_launch_configuration", - "aws_launch_template", - "aws_lb", - "aws_lb_cookie_stickiness_policy", - "aws_lb_listener", - "aws_lb_listener_certificate", - "aws_lb_listener_rule", - "aws_lb_ssl_negotiation_policy", - "aws_lb_target_group", - "aws_lb_target_group_attachment", - "aws_lb_trust_store", - "aws_lb_trust_store_revocation", - "aws_lex_bot", - "aws_lex_bot_alias", - "aws_lex_intent", - "aws_lex_slot_type", - "aws_lexv2models_bot", - "aws_lexv2models_bot_locale", - "aws_lexv2models_bot_version", - "aws_lexv2models_intent", - "aws_lexv2models_slot", - "aws_lexv2models_slot_type", - "aws_licensemanager_association", - "aws_licensemanager_grant", - "aws_licensemanager_grant_accepter", - "aws_licensemanager_license_configuration", - "aws_lightsail_bucket", - "aws_lightsail_bucket_access_key_access_key", - "aws_lightsail_bucket_resource_access", - "aws_lightsail_certificate", - "aws_lightsail_container_service", - "aws_lightsail_container_service_deployment_version", - "aws_lightsail_database", - "aws_lightsail_disk", - "aws_lightsail_disk_attachment", - "aws_lightsail_distribution", - "aws_lightsail_domain", - "aws_lightsail_domain_entry", - "aws_lightsail_instance", - "aws_lightsail_instance_public_ports", - "aws_lightsail_key_pair", - "aws_lightsail_lb", - "aws_lightsail_lb_attachment", - "aws_lightsail_lb_certificate", - "aws_lightsail_lb_certificate_attachment", - "aws_lightsail_lb_https_redirection_policy", - "aws_lightsail_lb_stickiness_policy", - "aws_lightsail_static_ip", - "aws_lightsail_static_ip_attachment", - "aws_load_balancer_backend_server_policy", - "aws_load_balancer_listener_policy", - "aws_load_balancer_policy", - "aws_location_geofence_collection", - "aws_location_map", - "aws_location_place_index", - "aws_location_route_calculator", - "aws_location_tracker", - "aws_location_tracker_association", - "aws_m2_application", - "aws_m2_deployment", - "aws_m2_environment", - "aws_macie2_account", - "aws_macie2_classification_export_configuration", - "aws_macie2_classification_job", - "aws_macie2_custom_data_identifier", - "aws_macie2_findings_filter", - "aws_macie2_invitation_accepter", - "aws_macie2_member", - "aws_macie2_organization_admin_account", - "aws_main_route_table_association", - "aws_media_convert_queue", - "aws_media_package_channel", - "aws_media_store_container", - "aws_media_store_container_policy", - "aws_medialive_channel", - "aws_medialive_input", - "aws_medialive_input_security_group", - "aws_medialive_multiplex", - "aws_medialive_multiplex_program", - "aws_memorydb_acl", - "aws_memorydb_cluster", - "aws_memorydb_multi_region_cluster", - "aws_memorydb_parameter_group", - "aws_memorydb_snapshot", - "aws_memorydb_subnet_group", - "aws_memorydb_user", - "aws_mq_broker", - "aws_mq_configuration", - "aws_msk_cluster", - "aws_msk_cluster_policy", - "aws_msk_configuration", - "aws_msk_replicator", - "aws_msk_scram_secret_association", - "aws_msk_serverless_cluster", - "aws_msk_single_scram_secret_association", - "aws_msk_vpc_connection", - "aws_mskconnect_connector", - "aws_mskconnect_custom_plugin", - "aws_mskconnect_worker_configuration", - "aws_mwaa_environment", - "aws_nat_gateway", - "aws_neptune_cluster", - "aws_neptune_cluster_endpoint", - "aws_neptune_cluster_instance", - "aws_neptune_cluster_parameter_group", - "aws_neptune_cluster_snapshot", - "aws_neptune_event_subscription", - "aws_neptune_global_cluster", - "aws_neptune_parameter_group", - "aws_neptune_subnet_group", - "aws_network_acl", - "aws_network_acl_association", - "aws_network_acl_rule", - "aws_network_interface", - "aws_network_interface_attachment", - "aws_network_interface_sg_attachment", - "aws_networkfirewall_firewall", - "aws_networkfirewall_firewall_policy", - "aws_networkfirewall_logging_configuration", - "aws_networkfirewall_resource_policy", - "aws_networkfirewall_rule_group", - "aws_networkfirewall_tls_inspection_configuration", - "aws_networkmanager_attachment_accepter", - "aws_networkmanager_connect_attachment", - "aws_networkmanager_connect_peer", - "aws_networkmanager_connection", - "aws_networkmanager_core_network", - "aws_networkmanager_core_network_policy_attachment", - "aws_networkmanager_customer_gateway_association", - "aws_networkmanager_device", - "aws_networkmanager_dx_gateway_attachment", - "aws_networkmanager_global_network", - "aws_networkmanager_link", - "aws_networkmanager_link_association", - "aws_networkmanager_site", - "aws_networkmanager_site_to_site_vpn_attachment", - "aws_networkmanager_transit_gateway_connect_peer_association", - "aws_networkmanager_transit_gateway_peering", - "aws_networkmanager_transit_gateway_registration", - "aws_networkmanager_transit_gateway_route_table_attachment", - "aws_networkmanager_vpc_attachment", - "aws_networkmonitor_monitor", - "aws_networkmonitor_probe", - "aws_oam_link", - "aws_oam_sink", - "aws_oam_sink_policy", - "aws_opensearch_authorize_vpc_endpoint_access", - "aws_opensearch_domain", - "aws_opensearch_domain_policy", - "aws_opensearch_domain_saml_options", - "aws_opensearch_inbound_connection_accepter", - "aws_opensearch_outbound_connection", - "aws_opensearch_package", - "aws_opensearch_package_association", - "aws_opensearch_vpc_endpoint", - "aws_opensearchserverless_access_policy", - "aws_opensearchserverless_collection", - "aws_opensearchserverless_lifecycle_policy", - "aws_opensearchserverless_security_config", - "aws_opensearchserverless_security_policy", - "aws_opensearchserverless_vpc_endpoint", - "aws_opsworks_application", - "aws_opsworks_custom_layer", - "aws_opsworks_ecs_cluster_layer", - "aws_opsworks_ganglia_layer", - "aws_opsworks_haproxy_layer", - "aws_opsworks_instance", - "aws_opsworks_java_app_layer", - "aws_opsworks_memcached_layer", - "aws_opsworks_mysql_layer", - "aws_opsworks_nodejs_app_layer", - "aws_opsworks_permission", - "aws_opsworks_php_app_layer", - "aws_opsworks_rails_app_layer", - "aws_opsworks_rds_db_instance", - "aws_opsworks_stack", - "aws_opsworks_static_web_layer", - "aws_opsworks_user_profile", - "aws_organizations_account", - "aws_organizations_delegated_administrator", - "aws_organizations_organization", - "aws_organizations_organizational_unit", - "aws_organizations_policy", - "aws_organizations_policy_attachment", - "aws_organizations_resource_policy", - "aws_osis_pipeline", - "aws_paymentcryptography_key", - "aws_paymentcryptography_key_alias", - "aws_pinpoint_adm_channel", - "aws_pinpoint_apns_channel", - "aws_pinpoint_apns_sandbox_channel", - "aws_pinpoint_apns_voip_channel", - "aws_pinpoint_apns_voip_sandbox_channel", - "aws_pinpoint_app", - "aws_pinpoint_baidu_channel", - "aws_pinpoint_email_channel", - "aws_pinpoint_email_template", - "aws_pinpoint_event_stream", - "aws_pinpoint_gcm_channel", - "aws_pinpoint_sms_channel", - "aws_pinpointsmsvoicev2_configuration_set", - "aws_pinpointsmsvoicev2_opt_out_list", - "aws_pinpointsmsvoicev2_phone_number", - "aws_pipes_pipe", - "aws_placement_group", - "aws_prometheus_alert_manager_definition", - "aws_prometheus_rule_group_namespace", - "aws_prometheus_scraper", - "aws_prometheus_workspace", - "aws_proxy_protocol_policy", - "aws_qldb_ledger", - "aws_qldb_stream", - "aws_quicksight_account_subscription", - "aws_quicksight_analysis", - "aws_quicksight_dashboard", - "aws_quicksight_data_set", - "aws_quicksight_data_source", - "aws_quicksight_folder", - "aws_quicksight_folder_membership", - "aws_quicksight_group", - "aws_quicksight_group_membership", - "aws_quicksight_iam_policy_assignment", - "aws_quicksight_ingestion", - "aws_quicksight_namespace", - "aws_quicksight_refresh_schedule", - "aws_quicksight_template", - "aws_quicksight_template_alias", - "aws_quicksight_theme", - "aws_quicksight_user", - "aws_quicksight_vpc_connection", - "aws_ram_principal_association", - "aws_ram_resource_association", - "aws_ram_resource_share", - "aws_ram_resource_share_accepter", - "aws_ram_sharing_with_organization", - "aws_rbin_rule", - "aws_rds_certificate", - "aws_rds_cluster", - "aws_rds_cluster_activity_stream", - "aws_rds_cluster_endpoint", - "aws_rds_cluster_instance", - "aws_rds_cluster_parameter_group", - "aws_rds_cluster_role_association", - "aws_rds_cluster_snapshot_copy", - "aws_rds_custom_db_engine_version", - "aws_rds_export_task", - "aws_rds_global_cluster", - "aws_rds_instance_state", - "aws_rds_integration", - "aws_rds_reserved_instance", - "aws_redshift_authentication_profile", - "aws_redshift_cluster", - "aws_redshift_cluster_iam_roles", - "aws_redshift_cluster_snapshot", - "aws_redshift_data_share_authorization", - "aws_redshift_data_share_consumer_association", - "aws_redshift_endpoint_access", - "aws_redshift_endpoint_authorization", - "aws_redshift_event_subscription", - "aws_redshift_hsm_client_certificate", - "aws_redshift_hsm_configuration", - "aws_redshift_logging", - "aws_redshift_parameter_group", - "aws_redshift_partner", - "aws_redshift_resource_policy", - "aws_redshift_scheduled_action", - "aws_redshift_snapshot_copy", - "aws_redshift_snapshot_copy_grant", - "aws_redshift_snapshot_schedule", - "aws_redshift_snapshot_schedule_association", - "aws_redshift_subnet_group", - "aws_redshift_usage_limit", - "aws_redshiftdata_statement", - "aws_redshiftserverless_custom_domain_association", - "aws_redshiftserverless_endpoint_access", - "aws_redshiftserverless_namespace", - "aws_redshiftserverless_resource_policy", - "aws_redshiftserverless_snapshot", - "aws_redshiftserverless_usage_limit", - "aws_redshiftserverless_workgroup", - "aws_rekognition_collection", - "aws_rekognition_project", - "aws_rekognition_stream_processor", - "aws_resiliencehub_resiliency_policy", - "aws_resourceexplorer2_index", - "aws_resourceexplorer2_view", - "aws_resourcegroups_group", - "aws_resourcegroups_resource", - "aws_rolesanywhere_profile", - "aws_rolesanywhere_trust_anchor", - "aws_route", - "aws_route53_cidr_collection", - "aws_route53_cidr_location", - "aws_route53_delegation_set", - "aws_route53_health_check", - "aws_route53_hosted_zone_dnssec", - "aws_route53_key_signing_key", - "aws_route53_query_log", - "aws_route53_record", - "aws_route53_resolver_config", - "aws_route53_resolver_dnssec_config", - "aws_route53_resolver_endpoint", - "aws_route53_resolver_firewall_config", - "aws_route53_resolver_firewall_domain_list", - "aws_route53_resolver_firewall_rule", - "aws_route53_resolver_firewall_rule_group", - "aws_route53_resolver_firewall_rule_group_association", - "aws_route53_resolver_query_log_config", - "aws_route53_resolver_query_log_config_association", - "aws_route53_resolver_rule", - "aws_route53_resolver_rule_association", - "aws_route53_traffic_policy", - "aws_route53_traffic_policy_instance", - "aws_route53_vpc_association_authorization", - "aws_route53_zone", - "aws_route53_zone_association", - "aws_route53domains_delegation_signer_record", - "aws_route53domains_registered_domain", - "aws_route53profiles_association", - "aws_route53profiles_profile", - "aws_route53profiles_resource_association", - "aws_route53recoverycontrolconfig_cluster", - "aws_route53recoverycontrolconfig_control_panel", - "aws_route53recoverycontrolconfig_routing_control", - "aws_route53recoverycontrolconfig_safety_rule", - "aws_route53recoveryreadiness_cell", - "aws_route53recoveryreadiness_readiness_check", - "aws_route53recoveryreadiness_recovery_group", - "aws_route53recoveryreadiness_resource_set", - "aws_route_table", - "aws_route_table_association", - "aws_rum_app_monitor", - "aws_rum_metrics_destination", - "aws_s3_access_point", - "aws_s3_account_public_access_block", - "aws_s3_bucket", - "aws_s3_bucket_accelerate_configuration", - "aws_s3_bucket_acl", - "aws_s3_bucket_analytics_configuration", - "aws_s3_bucket_cors_configuration", - "aws_s3_bucket_intelligent_tiering_configuration", - "aws_s3_bucket_inventory", - "aws_s3_bucket_lifecycle_configuration", - "aws_s3_bucket_logging", - "aws_s3_bucket_metric", - "aws_s3_bucket_notification", - "aws_s3_bucket_object", - "aws_s3_bucket_object_lock_configuration", - "aws_s3_bucket_ownership_controls", - "aws_s3_bucket_policy", - "aws_s3_bucket_public_access_block", - "aws_s3_bucket_replication_configuration", - "aws_s3_bucket_request_payment_configuration", - "aws_s3_bucket_server_side_encryption_configuration", - "aws_s3_bucket_versioning", - "aws_s3_bucket_website_configuration", - "aws_s3_directory_bucket", - "aws_s3_object", - "aws_s3_object_copy", - "aws_s3control_access_grant", - "aws_s3control_access_grants_instance", - "aws_s3control_access_grants_instance_resource_policy", - "aws_s3control_access_grants_location", - "aws_s3control_access_point_policy", - "aws_s3control_bucket", - "aws_s3control_bucket_lifecycle_configuration", - "aws_s3control_bucket_policy", - "aws_s3control_multi_region_access_point", - "aws_s3control_multi_region_access_point_policy", - "aws_s3control_object_lambda_access_point", - "aws_s3control_object_lambda_access_point_policy", - "aws_s3control_storage_lens_configuration", - "aws_s3outposts_endpoint", - "aws_s3tables_namespace", - "aws_s3tables_table", - "aws_s3tables_table_bucket", - "aws_s3tables_table_bucket_policy", - "aws_s3tables_table_policy", - "aws_sagemaker_app", - "aws_sagemaker_app_image_config", - "aws_sagemaker_code_repository", - "aws_sagemaker_data_quality_job_definition", - "aws_sagemaker_device", - "aws_sagemaker_device_fleet", - "aws_sagemaker_domain", - "aws_sagemaker_endpoint", - "aws_sagemaker_endpoint_configuration", - "aws_sagemaker_feature_group", - "aws_sagemaker_flow_definition", - "aws_sagemaker_hub", - "aws_sagemaker_human_task_ui", - "aws_sagemaker_image", - "aws_sagemaker_image_version", - "aws_sagemaker_mlflow_tracking_server", - "aws_sagemaker_model", - "aws_sagemaker_model_package_group", - "aws_sagemaker_model_package_group_policy", - "aws_sagemaker_monitoring_schedule", - "aws_sagemaker_notebook_instance", - "aws_sagemaker_notebook_instance_lifecycle_configuration", - "aws_sagemaker_pipeline", - "aws_sagemaker_project", - "aws_sagemaker_servicecatalog_portfolio_status", - "aws_sagemaker_space", - "aws_sagemaker_studio_lifecycle_config", - "aws_sagemaker_user_profile", - "aws_sagemaker_workforce", - "aws_sagemaker_workteam", - "aws_scheduler_schedule", - "aws_scheduler_schedule_group", - "aws_schemas_discoverer", - "aws_schemas_registry", - "aws_schemas_registry_policy", - "aws_schemas_schema", - "aws_secretsmanager_secret", - "aws_secretsmanager_secret_policy", - "aws_secretsmanager_secret_rotation", - "aws_secretsmanager_secret_version", - "aws_security_group", - "aws_security_group_rule", - "aws_securityhub_account", - "aws_securityhub_action_target", - "aws_securityhub_automation_rule", - "aws_securityhub_configuration_policy", - "aws_securityhub_configuration_policy_association", - "aws_securityhub_finding_aggregator", - "aws_securityhub_insight", - "aws_securityhub_invite_accepter", - "aws_securityhub_member", - "aws_securityhub_organization_admin_account", - "aws_securityhub_organization_configuration", - "aws_securityhub_product_subscription", - "aws_securityhub_standards_control", - "aws_securityhub_standards_control_association", - "aws_securityhub_standards_subscription", - "aws_securitylake_aws_log_source", - "aws_securitylake_custom_log_source", - "aws_securitylake_data_lake", - "aws_securitylake_subscriber", - "aws_securitylake_subscriber_notification", - "aws_serverlessapplicationrepository_cloudformation_stack", - "aws_service_discovery_http_namespace", - "aws_service_discovery_instance", - "aws_service_discovery_private_dns_namespace", - "aws_service_discovery_public_dns_namespace", - "aws_service_discovery_service", - "aws_servicecatalog_budget_resource_association", - "aws_servicecatalog_constraint", - "aws_servicecatalog_organizations_access", - "aws_servicecatalog_portfolio", - "aws_servicecatalog_portfolio_share", - "aws_servicecatalog_principal_portfolio_association", - "aws_servicecatalog_product", - "aws_servicecatalog_product_portfolio_association", - "aws_servicecatalog_provisioned_product", - "aws_servicecatalog_provisioning_artifact", - "aws_servicecatalog_service_action", - "aws_servicecatalog_tag_option", - "aws_servicecatalog_tag_option_resource_association", - "aws_servicecatalogappregistry_application", - "aws_servicecatalogappregistry_attribute_group", - "aws_servicecatalogappregistry_attribute_group_association", - "aws_servicequotas_service_quota", - "aws_servicequotas_template", - "aws_servicequotas_template_association", - "aws_ses_active_receipt_rule_set", - "aws_ses_configuration_set", - "aws_ses_domain_dkim", - "aws_ses_domain_identity", - "aws_ses_domain_identity_verification", - "aws_ses_domain_mail_from", - "aws_ses_email_identity", - "aws_ses_event_destination", - "aws_ses_identity_notification_topic", - "aws_ses_identity_policy", - "aws_ses_receipt_filter", - "aws_ses_receipt_rule", - "aws_ses_receipt_rule_set", - "aws_ses_template", - "aws_sesv2_account_suppression_attributes", - "aws_sesv2_account_vdm_attributes", - "aws_sesv2_configuration_set", - "aws_sesv2_configuration_set_event_destination", - "aws_sesv2_contact_list", - "aws_sesv2_dedicated_ip_assignment", - "aws_sesv2_dedicated_ip_pool", - "aws_sesv2_email_identity", - "aws_sesv2_email_identity_feedback_attributes", - "aws_sesv2_email_identity_mail_from_attributes", - "aws_sesv2_email_identity_policy", - "aws_sfn_activity", - "aws_sfn_alias", - "aws_sfn_state_machine", - "aws_shield_application_layer_automatic_response", - "aws_shield_drt_access_log_bucket_association", - "aws_shield_drt_access_role_arn_association", - "aws_shield_proactive_engagement", - "aws_shield_protection", - "aws_shield_protection_group", - "aws_shield_protection_health_check_association", - "aws_shield_subscription", - "aws_signer_signing_job", - "aws_signer_signing_profile", - "aws_signer_signing_profile_permission", - "aws_simpledb_domain", - "aws_snapshot_create_volume_permission", - "aws_sns_platform_application", - "aws_sns_sms_preferences", - "aws_sns_topic", - "aws_sns_topic_data_protection_policy", - "aws_sns_topic_policy", - "aws_sns_topic_subscription", - "aws_spot_datafeed_subscription", - "aws_spot_fleet_request", - "aws_spot_instance_request", - "aws_sqs_queue", - "aws_sqs_queue_policy", - "aws_sqs_queue_redrive_allow_policy", - "aws_sqs_queue_redrive_policy", - "aws_ssm_activation", - "aws_ssm_association", - "aws_ssm_default_patch_baseline", - "aws_ssm_document", - "aws_ssm_maintenance_window", - "aws_ssm_maintenance_window_target", - "aws_ssm_maintenance_window_task", - "aws_ssm_parameter", - "aws_ssm_patch_baseline", - "aws_ssm_patch_group", - "aws_ssm_resource_data_sync", - "aws_ssm_service_setting", - "aws_ssmcontacts_contact", - "aws_ssmcontacts_contact_channel", - "aws_ssmcontacts_plan", - "aws_ssmcontacts_rotation", - "aws_ssmincidents_replication_set", - "aws_ssmincidents_response_plan", - "aws_ssmquicksetup_configuration_manager", - "aws_ssoadmin_account_assignment", - "aws_ssoadmin_application", - "aws_ssoadmin_application_access_scope", - "aws_ssoadmin_application_assignment", - "aws_ssoadmin_application_assignment_configuration", - "aws_ssoadmin_customer_managed_policy_attachment", - "aws_ssoadmin_instance_access_control_attributes", - "aws_ssoadmin_managed_policy_attachment", - "aws_ssoadmin_permission_set", - "aws_ssoadmin_permission_set_inline_policy", - "aws_ssoadmin_permissions_boundary_attachment", - "aws_ssoadmin_trusted_token_issuer", - "aws_storagegateway_cache", - "aws_storagegateway_cached_iscsi_volume", - "aws_storagegateway_file_system_association", - "aws_storagegateway_gateway", - "aws_storagegateway_nfs_file_share", - "aws_storagegateway_smb_file_share", - "aws_storagegateway_stored_iscsi_volume", - "aws_storagegateway_tape_pool", - "aws_storagegateway_upload_buffer", - "aws_storagegateway_working_storage", - "aws_subnet", - "aws_swf_domain", - "aws_synthetics_canary", - "aws_synthetics_group", - "aws_synthetics_group_association", - "aws_timestreaminfluxdb_db_instance", - "aws_timestreamwrite_database", - "aws_timestreamwrite_table", - "aws_transcribe_language_model", - "aws_transcribe_medical_vocabulary", - "aws_transcribe_vocabulary", - "aws_transcribe_vocabulary_filter", - "aws_transfer_access", - "aws_transfer_agreement", - "aws_transfer_certificate", - "aws_transfer_connector", - "aws_transfer_profile", - "aws_transfer_server", - "aws_transfer_ssh_key", - "aws_transfer_tag", - "aws_transfer_user", - "aws_transfer_workflow", - "aws_verifiedaccess_endpoint", - "aws_verifiedaccess_group", - "aws_verifiedaccess_instance", - "aws_verifiedaccess_instance_logging_configuration", - "aws_verifiedaccess_instance_trust_provider_attachment", - "aws_verifiedaccess_trust_provider", - "aws_verifiedpermissions_identity_source", - "aws_verifiedpermissions_policy", - "aws_verifiedpermissions_policy_store", - "aws_verifiedpermissions_policy_template", - "aws_verifiedpermissions_schema", - "aws_volume_attachment", - "aws_vpc", - "aws_vpc_block_public_access_exclusion", - "aws_vpc_block_public_access_options", - "aws_vpc_dhcp_options", - "aws_vpc_dhcp_options_association", - "aws_vpc_endpoint", - "aws_vpc_endpoint_connection_accepter", - "aws_vpc_endpoint_connection_notification", - "aws_vpc_endpoint_policy", - "aws_vpc_endpoint_private_dns", - "aws_vpc_endpoint_route_table_association", - "aws_vpc_endpoint_security_group_association", - "aws_vpc_endpoint_service", - "aws_vpc_endpoint_service_allowed_principal", - "aws_vpc_endpoint_service_private_dns_verification", - "aws_vpc_endpoint_subnet_association", - "aws_vpc_ipam", - "aws_vpc_ipam_organization_admin_account", - "aws_vpc_ipam_pool", - "aws_vpc_ipam_pool_cidr", - "aws_vpc_ipam_pool_cidr_allocation", - "aws_vpc_ipam_preview_next_cidr", - "aws_vpc_ipam_resource_discovery", - "aws_vpc_ipam_resource_discovery_association", - "aws_vpc_ipam_scope", - "aws_vpc_ipv4_cidr_block_association", - "aws_vpc_ipv6_cidr_block_association", - "aws_vpc_network_performance_metric_subscription", - "aws_vpc_peering_connection", - "aws_vpc_peering_connection_accepter", - "aws_vpc_peering_connection_options", - "aws_vpc_security_group_egress_rule", - "aws_vpc_security_group_ingress_rule", - "aws_vpc_security_group_vpc_association", - "aws_vpclattice_access_log_subscription", - "aws_vpclattice_auth_policy", - "aws_vpclattice_listener", - "aws_vpclattice_listener_rule", - "aws_vpclattice_resource_policy", - "aws_vpclattice_service", - "aws_vpclattice_service_network", - "aws_vpclattice_service_network_service_association", - "aws_vpclattice_service_network_vpc_association", - "aws_vpclattice_target_group", - "aws_vpclattice_target_group_attachment", - "aws_vpn_connection", - "aws_vpn_connection_route", - "aws_vpn_gateway", - "aws_vpn_gateway_attachment", - "aws_vpn_gateway_route_propagation", - "aws_waf_byte_match_set", - "aws_waf_geo_match_set", - "aws_waf_ipset", - "aws_waf_rate_based_rule", - "aws_waf_regex_match_set", - "aws_waf_regex_pattern_set", - "aws_waf_rule", - "aws_waf_rule_group", - "aws_waf_size_constraint_set", - "aws_waf_sql_injection_match_set", - "aws_waf_web_acl", - "aws_waf_xss_match_set", - "aws_wafregional_byte_match_set", - "aws_wafregional_geo_match_set", - "aws_wafregional_ipset", - "aws_wafregional_rate_based_rule", - "aws_wafregional_regex_match_set", - "aws_wafregional_regex_pattern_set", - "aws_wafregional_rule", - "aws_wafregional_rule_group", - "aws_wafregional_size_constraint_set", - "aws_wafregional_sql_injection_match_set", - "aws_wafregional_web_acl", - "aws_wafregional_web_acl_association", - "aws_wafregional_xss_match_set", - "aws_wafv2_ip_set", - "aws_wafv2_regex_pattern_set", - "aws_wafv2_rule_group", - "aws_wafv2_web_acl", - "aws_wafv2_web_acl_association", - "aws_wafv2_web_acl_logging_configuration", - "aws_worklink_fleet", - "aws_worklink_website_certificate_authority_association", - "aws_workspaces_connection_alias", - "aws_workspaces_directory", - "aws_workspaces_ip_group", - "aws_workspaces_workspace", - "aws_xray_encryption_config", - "aws_xray_group", - "aws_xray_sampling_rule" - ] -} + "resources": [ + "aws_accessanalyzer_analyzer", + "aws_accessanalyzer_archive_rule", + "aws_account_alternate_contact", + "aws_account_primary_contact", + "aws_account_region", + "aws_acm_certificate", + "aws_acm_certificate_validation", + "aws_acmpca_certificate", + "aws_acmpca_certificate_authority", + "aws_acmpca_certificate_authority_certificate", + "aws_acmpca_permission", + "aws_acmpca_policy", + "aws_alb", + "aws_ami", + "aws_ami_copy", + "aws_ami_from_instance", + "aws_ami_launch_permission", + "aws_amplify_app", + "aws_amplify_backend_environment", + "aws_amplify_branch", + "aws_amplify_domain_association", + "aws_amplify_webhook", + "aws_api_gateway_account", + "aws_api_gateway_api_key", + "aws_api_gateway_authorizer", + "aws_api_gateway_base_path_mapping", + "aws_api_gateway_client_certificate", + "aws_api_gateway_deployment", + "aws_api_gateway_documentation_part", + "aws_api_gateway_documentation_version", + "aws_api_gateway_domain_name", + "aws_api_gateway_domain_name_access_association", + "aws_api_gateway_gateway_response", + "aws_api_gateway_integration", + "aws_api_gateway_integration_response", + "aws_api_gateway_method", + "aws_api_gateway_method_response", + "aws_api_gateway_method_settings", + "aws_api_gateway_model", + "aws_api_gateway_request_validator", + "aws_api_gateway_resource", + "aws_api_gateway_rest_api", + "aws_api_gateway_rest_api_policy", + "aws_api_gateway_rest_api_put", + "aws_api_gateway_stage", + "aws_api_gateway_usage_plan", + "aws_api_gateway_usage_plan_key", + "aws_api_gateway_vpc_link", + "aws_apigatewayv2_api", + "aws_apigatewayv2_api_mapping", + "aws_apigatewayv2_authorizer", + "aws_apigatewayv2_deployment", + "aws_apigatewayv2_domain_name", + "aws_apigatewayv2_integration", + "aws_apigatewayv2_integration_response", + "aws_apigatewayv2_model", + "aws_apigatewayv2_route", + "aws_apigatewayv2_route_response", + "aws_apigatewayv2_stage", + "aws_apigatewayv2_vpc_link", + "aws_app_cookie_stickiness_policy", + "aws_appautoscaling_policy", + "aws_appautoscaling_scheduled_action", + "aws_appautoscaling_target", + "aws_appconfig_application", + "aws_appconfig_configuration_profile", + "aws_appconfig_deployment", + "aws_appconfig_deployment_strategy", + "aws_appconfig_environment", + "aws_appconfig_extension", + "aws_appconfig_extension_association", + "aws_appconfig_hosted_configuration_version", + "aws_appfabric_app_authorization", + "aws_appfabric_app_authorization_connection", + "aws_appfabric_app_bundle", + "aws_appfabric_ingestion", + "aws_appfabric_ingestion_destination", + "aws_appflow_connector_profile", + "aws_appflow_flow", + "aws_appintegrations_data_integration", + "aws_appintegrations_event_integration", + "aws_applicationinsights_application", + "aws_appmesh_gateway_route", + "aws_appmesh_mesh", + "aws_appmesh_route", + "aws_appmesh_virtual_gateway", + "aws_appmesh_virtual_node", + "aws_appmesh_virtual_router", + "aws_appmesh_virtual_service", + "aws_apprunner_auto_scaling_configuration_version", + "aws_apprunner_connection", + "aws_apprunner_custom_domain_association", + "aws_apprunner_default_auto_scaling_configuration_version", + "aws_apprunner_deployment", + "aws_apprunner_observability_configuration", + "aws_apprunner_service", + "aws_apprunner_vpc_connector", + "aws_apprunner_vpc_ingress_connection", + "aws_appstream_directory_config", + "aws_appstream_fleet", + "aws_appstream_fleet_stack_association", + "aws_appstream_image_builder", + "aws_appstream_stack", + "aws_appstream_user", + "aws_appstream_user_stack_association", + "aws_appsync_api", + "aws_appsync_api_cache", + "aws_appsync_api_key", + "aws_appsync_channel_namespace", + "aws_appsync_datasource", + "aws_appsync_domain_name", + "aws_appsync_domain_name_api_association", + "aws_appsync_function", + "aws_appsync_graphql_api", + "aws_appsync_resolver", + "aws_appsync_source_api_association", + "aws_appsync_type", + "aws_athena_capacity_reservation", + "aws_athena_data_catalog", + "aws_athena_database", + "aws_athena_named_query", + "aws_athena_prepared_statement", + "aws_athena_workgroup", + "aws_auditmanager_account_registration", + "aws_auditmanager_assessment", + "aws_auditmanager_assessment_delegation", + "aws_auditmanager_assessment_report", + "aws_auditmanager_control", + "aws_auditmanager_framework", + "aws_auditmanager_framework_share", + "aws_auditmanager_organization_admin_account_registration", + "aws_autoscaling_attachment", + "aws_autoscaling_group", + "aws_autoscaling_group_tag", + "aws_autoscaling_lifecycle_hook", + "aws_autoscaling_notification", + "aws_autoscaling_policy", + "aws_autoscaling_schedule", + "aws_autoscaling_traffic_source_attachment", + "aws_autoscalingplans_scaling_plan", + "aws_backup_framework", + "aws_backup_global_settings", + "aws_backup_logically_air_gapped_vault", + "aws_backup_plan", + "aws_backup_region_settings", + "aws_backup_report_plan", + "aws_backup_selection", + "aws_backup_vault", + "aws_backup_vault_lock_configuration", + "aws_backup_vault_notifications", + "aws_backup_vault_policy", + "aws_batch_compute_environment", + "aws_batch_job_definition", + "aws_batch_job_queue", + "aws_batch_scheduling_policy", + "aws_bcmdataexports_export", + "aws_bedrock_custom_model", + "aws_bedrock_guardrail", + "aws_bedrock_guardrail_version", + "aws_bedrock_inference_profile", + "aws_bedrock_model_invocation_logging_configuration", + "aws_bedrock_provisioned_model_throughput", + "aws_bedrockagent_agent", + "aws_bedrockagent_agent_action_group", + "aws_bedrockagent_agent_alias", + "aws_bedrockagent_agent_collaborator", + "aws_bedrockagent_agent_knowledge_base_association", + "aws_bedrockagent_data_source", + "aws_bedrockagent_flow", + "aws_bedrockagent_knowledge_base", + "aws_bedrockagent_prompt", + "aws_bedrockagentcore_agent_runtime", + "aws_bedrockagentcore_agent_runtime_endpoint", + "aws_bedrockagentcore_api_key_credential_provider", + "aws_bedrockagentcore_browser", + "aws_bedrockagentcore_code_interpreter", + "aws_bedrockagentcore_gateway", + "aws_bedrockagentcore_gateway_target", + "aws_bedrockagentcore_memory", + "aws_bedrockagentcore_memory_strategy", + "aws_bedrockagentcore_oauth2_credential_provider", + "aws_bedrockagentcore_token_vault_cmk", + "aws_bedrockagentcore_workload_identity", + "aws_budgets_budget", + "aws_budgets_budget_action", + "aws_ce_anomaly_monitor", + "aws_ce_anomaly_subscription", + "aws_ce_cost_allocation_tag", + "aws_ce_cost_category", + "aws_chatbot_slack_channel_configuration", + "aws_chatbot_teams_channel_configuration", + "aws_chime_voice_connector", + "aws_chime_voice_connector_group", + "aws_chime_voice_connector_logging", + "aws_chime_voice_connector_origination", + "aws_chime_voice_connector_streaming", + "aws_chime_voice_connector_termination", + "aws_chime_voice_connector_termination_credentials", + "aws_chimesdkmediapipelines_media_insights_pipeline_configuration", + "aws_chimesdkvoice_global_settings", + "aws_chimesdkvoice_sip_media_application", + "aws_chimesdkvoice_sip_rule", + "aws_chimesdkvoice_voice_profile_domain", + "aws_cleanrooms_collaboration", + "aws_cleanrooms_configured_table", + "aws_cleanrooms_membership", + "aws_cloud9_environment_ec2", + "aws_cloud9_environment_membership", + "aws_cloudcontrolapi_resource", + "aws_cloudformation_stack", + "aws_cloudformation_stack_instances", + "aws_cloudformation_stack_set", + "aws_cloudformation_stack_set_instance", + "aws_cloudformation_type", + "aws_cloudfront_cache_policy", + "aws_cloudfront_continuous_deployment_policy", + "aws_cloudfront_distribution", + "aws_cloudfront_field_level_encryption_config", + "aws_cloudfront_field_level_encryption_profile", + "aws_cloudfront_function", + "aws_cloudfront_key_group", + "aws_cloudfront_key_value_store", + "aws_cloudfront_monitoring_subscription", + "aws_cloudfront_origin_access_control", + "aws_cloudfront_origin_access_identity", + "aws_cloudfront_origin_request_policy", + "aws_cloudfront_public_key", + "aws_cloudfront_realtime_log_config", + "aws_cloudfront_response_headers_policy", + "aws_cloudfront_vpc_origin", + "aws_cloudfrontkeyvaluestore_key", + "aws_cloudfrontkeyvaluestore_keys_exclusive", + "aws_cloudhsm_v2_cluster", + "aws_cloudhsm_v2_hsm", + "aws_cloudsearch_domain", + "aws_cloudsearch_domain_service_access_policy", + "aws_cloudtrail", + "aws_cloudtrail_event_data_store", + "aws_cloudtrail_organization_delegated_admin_account", + "aws_cloudwatch_composite_alarm", + "aws_cloudwatch_contributor_insight_rule", + "aws_cloudwatch_contributor_managed_insight_rule", + "aws_cloudwatch_dashboard", + "aws_cloudwatch_event_api_destination", + "aws_cloudwatch_event_archive", + "aws_cloudwatch_event_bus", + "aws_cloudwatch_event_bus_policy", + "aws_cloudwatch_event_connection", + "aws_cloudwatch_event_endpoint", + "aws_cloudwatch_event_permission", + "aws_cloudwatch_event_rule", + "aws_cloudwatch_event_target", + "aws_cloudwatch_log_account_policy", + "aws_cloudwatch_log_anomaly_detector", + "aws_cloudwatch_log_data_protection_policy", + "aws_cloudwatch_log_delivery", + "aws_cloudwatch_log_delivery_destination", + "aws_cloudwatch_log_delivery_destination_policy", + "aws_cloudwatch_log_delivery_source", + "aws_cloudwatch_log_destination", + "aws_cloudwatch_log_destination_policy", + "aws_cloudwatch_log_group", + "aws_cloudwatch_log_index_policy", + "aws_cloudwatch_log_metric_filter", + "aws_cloudwatch_log_resource_policy", + "aws_cloudwatch_log_stream", + "aws_cloudwatch_log_subscription_filter", + "aws_cloudwatch_metric_alarm", + "aws_cloudwatch_metric_stream", + "aws_cloudwatch_query_definition", + "aws_codeartifact_domain", + "aws_codeartifact_domain_permissions_policy", + "aws_codeartifact_repository", + "aws_codeartifact_repository_permissions_policy", + "aws_codebuild_fleet", + "aws_codebuild_project", + "aws_codebuild_report_group", + "aws_codebuild_resource_policy", + "aws_codebuild_source_credential", + "aws_codebuild_webhook", + "aws_codecatalyst_dev_environment", + "aws_codecatalyst_project", + "aws_codecatalyst_source_repository", + "aws_codecommit_approval_rule_template", + "aws_codecommit_approval_rule_template_association", + "aws_codecommit_repository", + "aws_codecommit_trigger", + "aws_codeconnections_connection", + "aws_codeconnections_host", + "aws_codedeploy_app", + "aws_codedeploy_deployment_config", + "aws_codedeploy_deployment_group", + "aws_codeguruprofiler_profiling_group", + "aws_codegurureviewer_repository_association", + "aws_codepipeline", + "aws_codepipeline_custom_action_type", + "aws_codepipeline_webhook", + "aws_codestarconnections_connection", + "aws_codestarconnections_host", + "aws_codestarnotifications_notification_rule", + "aws_cognito_identity_pool", + "aws_cognito_identity_pool_provider_principal_tag", + "aws_cognito_identity_pool_roles_attachment", + "aws_cognito_identity_provider", + "aws_cognito_log_delivery_configuration", + "aws_cognito_managed_login_branding", + "aws_cognito_managed_user_pool_client", + "aws_cognito_resource_server", + "aws_cognito_risk_configuration", + "aws_cognito_user", + "aws_cognito_user_group", + "aws_cognito_user_in_group", + "aws_cognito_user_pool", + "aws_cognito_user_pool_client", + "aws_cognito_user_pool_domain", + "aws_cognito_user_pool_ui_customization", + "aws_comprehend_document_classifier", + "aws_comprehend_entity_recognizer", + "aws_computeoptimizer_enrollment_status", + "aws_computeoptimizer_recommendation_preferences", + "aws_config_aggregate_authorization", + "aws_config_config_rule", + "aws_config_configuration_aggregator", + "aws_config_configuration_recorder", + "aws_config_configuration_recorder_status", + "aws_config_conformance_pack", + "aws_config_delivery_channel", + "aws_config_organization_conformance_pack", + "aws_config_organization_custom_policy_rule", + "aws_config_organization_custom_rule", + "aws_config_organization_managed_rule", + "aws_config_remediation_configuration", + "aws_config_retention_configuration", + "aws_connect_bot_association", + "aws_connect_contact_flow", + "aws_connect_contact_flow_module", + "aws_connect_hours_of_operation", + "aws_connect_instance", + "aws_connect_instance_storage_config", + "aws_connect_lambda_function_association", + "aws_connect_phone_number", + "aws_connect_phone_number_contact_flow_association", + "aws_connect_queue", + "aws_connect_quick_connect", + "aws_connect_routing_profile", + "aws_connect_security_profile", + "aws_connect_user", + "aws_connect_user_hierarchy_group", + "aws_connect_user_hierarchy_structure", + "aws_connect_vocabulary", + "aws_controltower_baseline", + "aws_controltower_control", + "aws_controltower_landing_zone", + "aws_costoptimizationhub_enrollment_status", + "aws_costoptimizationhub_preferences", + "aws_cur_report_definition", + "aws_customer_gateway", + "aws_customerprofiles_domain", + "aws_customerprofiles_profile", + "aws_dataexchange_data_set", + "aws_dataexchange_event_action", + "aws_dataexchange_revision", + "aws_dataexchange_revision_assets", + "aws_datapipeline_pipeline", + "aws_datapipeline_pipeline_definition", + "aws_datasync_agent", + "aws_datasync_location_azure_blob", + "aws_datasync_location_efs", + "aws_datasync_location_fsx_lustre_file_system", + "aws_datasync_location_fsx_ontap_file_system", + "aws_datasync_location_fsx_openzfs_file_system", + "aws_datasync_location_fsx_windows_file_system", + "aws_datasync_location_hdfs", + "aws_datasync_location_nfs", + "aws_datasync_location_object_storage", + "aws_datasync_location_s3", + "aws_datasync_location_smb", + "aws_datasync_task", + "aws_datazone_asset_type", + "aws_datazone_domain", + "aws_datazone_environment", + "aws_datazone_environment_blueprint_configuration", + "aws_datazone_environment_profile", + "aws_datazone_form_type", + "aws_datazone_glossary", + "aws_datazone_glossary_term", + "aws_datazone_project", + "aws_datazone_user_profile", + "aws_dax_cluster", + "aws_dax_parameter_group", + "aws_dax_subnet_group", + "aws_db_cluster_snapshot", + "aws_db_event_subscription", + "aws_db_instance", + "aws_db_instance_automated_backups_replication", + "aws_db_instance_role_association", + "aws_db_option_group", + "aws_db_parameter_group", + "aws_db_proxy", + "aws_db_proxy_default_target_group", + "aws_db_proxy_endpoint", + "aws_db_proxy_target", + "aws_db_snapshot", + "aws_db_snapshot_copy", + "aws_db_subnet_group", + "aws_default_network_acl", + "aws_default_route_table", + "aws_default_security_group", + "aws_default_subnet", + "aws_default_vpc", + "aws_default_vpc_dhcp_options", + "aws_detective_graph", + "aws_detective_invitation_accepter", + "aws_detective_member", + "aws_detective_organization_admin_account", + "aws_detective_organization_configuration", + "aws_devicefarm_device_pool", + "aws_devicefarm_instance_profile", + "aws_devicefarm_network_profile", + "aws_devicefarm_project", + "aws_devicefarm_upload", + "aws_devopsguru_event_sources_config", + "aws_devopsguru_notification_channel", + "aws_devopsguru_resource_collection", + "aws_devopsguru_service_integration", + "aws_directory_service_conditional_forwarder", + "aws_directory_service_directory", + "aws_directory_service_log_subscription", + "aws_directory_service_radius_settings", + "aws_directory_service_region", + "aws_directory_service_shared_directory", + "aws_directory_service_shared_directory_accepter", + "aws_directory_service_trust", + "aws_dlm_lifecycle_policy", + "aws_dms_certificate", + "aws_dms_endpoint", + "aws_dms_event_subscription", + "aws_dms_replication_config", + "aws_dms_replication_instance", + "aws_dms_replication_subnet_group", + "aws_dms_replication_task", + "aws_dms_s3_endpoint", + "aws_docdb_cluster", + "aws_docdb_cluster_instance", + "aws_docdb_cluster_parameter_group", + "aws_docdb_cluster_snapshot", + "aws_docdb_event_subscription", + "aws_docdb_global_cluster", + "aws_docdb_subnet_group", + "aws_docdbelastic_cluster", + "aws_drs_replication_configuration_template", + "aws_dsql_cluster", + "aws_dsql_cluster_peering", + "aws_dx_bgp_peer", + "aws_dx_connection", + "aws_dx_connection_association", + "aws_dx_connection_confirmation", + "aws_dx_gateway", + "aws_dx_gateway_association", + "aws_dx_gateway_association_proposal", + "aws_dx_hosted_connection", + "aws_dx_hosted_private_virtual_interface", + "aws_dx_hosted_private_virtual_interface_accepter", + "aws_dx_hosted_public_virtual_interface", + "aws_dx_hosted_public_virtual_interface_accepter", + "aws_dx_hosted_transit_virtual_interface", + "aws_dx_hosted_transit_virtual_interface_accepter", + "aws_dx_lag", + "aws_dx_macsec_key_association", + "aws_dx_private_virtual_interface", + "aws_dx_public_virtual_interface", + "aws_dx_transit_virtual_interface", + "aws_dynamodb_contributor_insights", + "aws_dynamodb_global_table", + "aws_dynamodb_kinesis_streaming_destination", + "aws_dynamodb_resource_policy", + "aws_dynamodb_table", + "aws_dynamodb_table_export", + "aws_dynamodb_table_item", + "aws_dynamodb_table_replica", + "aws_dynamodb_tag", + "aws_ebs_default_kms_key", + "aws_ebs_encryption_by_default", + "aws_ebs_fast_snapshot_restore", + "aws_ebs_snapshot", + "aws_ebs_snapshot_block_public_access", + "aws_ebs_snapshot_copy", + "aws_ebs_snapshot_import", + "aws_ebs_volume", + "aws_ec2_allowed_images_settings", + "aws_ec2_availability_zone_group", + "aws_ec2_capacity_block_reservation", + "aws_ec2_capacity_reservation", + "aws_ec2_carrier_gateway", + "aws_ec2_client_vpn_authorization_rule", + "aws_ec2_client_vpn_endpoint", + "aws_ec2_client_vpn_network_association", + "aws_ec2_client_vpn_route", + "aws_ec2_default_credit_specification", + "aws_ec2_fleet", + "aws_ec2_host", + "aws_ec2_image_block_public_access", + "aws_ec2_instance", + "aws_ec2_instance_connect_endpoint", + "aws_ec2_instance_metadata_defaults", + "aws_ec2_instance_state", + "aws_ec2_local_gateway_route", + "aws_ec2_local_gateway_route_table_vpc_association", + "aws_ec2_managed_prefix_list", + "aws_ec2_managed_prefix_list_entry", + "aws_ec2_network_insights_analysis", + "aws_ec2_network_insights_path", + "aws_ec2_serial_console_access", + "aws_ec2_subnet_cidr_reservation", + "aws_ec2_tag", + "aws_ec2_traffic_mirror_filter", + "aws_ec2_traffic_mirror_filter_rule", + "aws_ec2_traffic_mirror_session", + "aws_ec2_traffic_mirror_target", + "aws_ec2_transit_gateway", + "aws_ec2_transit_gateway_connect", + "aws_ec2_transit_gateway_connect_peer", + "aws_ec2_transit_gateway_default_route_table_association", + "aws_ec2_transit_gateway_default_route_table_propagation", + "aws_ec2_transit_gateway_multicast_domain", + "aws_ec2_transit_gateway_multicast_domain_association", + "aws_ec2_transit_gateway_multicast_group_member", + "aws_ec2_transit_gateway_multicast_group_source", + "aws_ec2_transit_gateway_peering_attachment", + "aws_ec2_transit_gateway_peering_attachment_accepter", + "aws_ec2_transit_gateway_policy_table", + "aws_ec2_transit_gateway_policy_table_association", + "aws_ec2_transit_gateway_prefix_list_reference", + "aws_ec2_transit_gateway_route", + "aws_ec2_transit_gateway_route_table", + "aws_ec2_transit_gateway_route_table_association", + "aws_ec2_transit_gateway_route_table_propagation", + "aws_ec2_transit_gateway_vpc_attachment", + "aws_ec2_transit_gateway_vpc_attachment_accepter", + "aws_ecr_account_setting", + "aws_ecr_lifecycle_policy", + "aws_ecr_pull_through_cache_rule", + "aws_ecr_registry_policy", + "aws_ecr_registry_scanning_configuration", + "aws_ecr_replication_configuration", + "aws_ecr_repository", + "aws_ecr_repository_creation_template", + "aws_ecr_repository_policy", + "aws_ecrpublic_repository", + "aws_ecrpublic_repository_policy", + "aws_ecs_account_setting_default", + "aws_ecs_capacity_provider", + "aws_ecs_cluster", + "aws_ecs_cluster_capacity_providers", + "aws_ecs_service", + "aws_ecs_tag", + "aws_ecs_task_definition", + "aws_ecs_task_set", + "aws_efs_access_point", + "aws_efs_backup_policy", + "aws_efs_file_system", + "aws_efs_file_system_policy", + "aws_efs_mount_target", + "aws_efs_replication_configuration", + "aws_egress_only_internet_gateway", + "aws_eip", + "aws_eip_association", + "aws_eip_domain_name", + "aws_eks_access_entry", + "aws_eks_access_policy_association", + "aws_eks_addon", + "aws_eks_cluster", + "aws_eks_fargate_profile", + "aws_eks_identity_provider_config", + "aws_eks_node_group", + "aws_eks_pod_identity_association", + "aws_elastic_beanstalk_application", + "aws_elastic_beanstalk_application_version", + "aws_elastic_beanstalk_configuration_template", + "aws_elastic_beanstalk_environment", + "aws_elasticache_cluster", + "aws_elasticache_global_replication_group", + "aws_elasticache_parameter_group", + "aws_elasticache_replication_group", + "aws_elasticache_reserved_cache_node", + "aws_elasticache_serverless_cache", + "aws_elasticache_subnet_group", + "aws_elasticache_user", + "aws_elasticache_user_group", + "aws_elasticache_user_group_association", + "aws_elasticsearch_domain", + "aws_elasticsearch_domain_policy", + "aws_elasticsearch_domain_saml_options", + "aws_elasticsearch_vpc_endpoint", + "aws_elastictranscoder_pipeline", + "aws_elastictranscoder_preset", + "aws_elb", + "aws_elb_attachment", + "aws_emr_block_public_access_configuration", + "aws_emr_cluster", + "aws_emr_instance_fleet", + "aws_emr_instance_group", + "aws_emr_managed_scaling_policy", + "aws_emr_security_configuration", + "aws_emr_studio", + "aws_emr_studio_session_mapping", + "aws_emrcontainers_job_template", + "aws_emrcontainers_virtual_cluster", + "aws_emrserverless_application", + "aws_evidently_feature", + "aws_evidently_launch", + "aws_evidently_project", + "aws_evidently_segment", + "aws_finspace_kx_cluster", + "aws_finspace_kx_database", + "aws_finspace_kx_dataview", + "aws_finspace_kx_environment", + "aws_finspace_kx_scaling_group", + "aws_finspace_kx_user", + "aws_finspace_kx_volume", + "aws_fis_experiment_template", + "aws_fis_target_account_configuration", + "aws_flow_log", + "aws_fms_admin_account", + "aws_fms_policy", + "aws_fms_resource_set", + "aws_fsx_backup", + "aws_fsx_data_repository_association", + "aws_fsx_file_cache", + "aws_fsx_lustre_file_system", + "aws_fsx_ontap_file_system", + "aws_fsx_ontap_storage_virtual_machine", + "aws_fsx_ontap_volume", + "aws_fsx_openzfs_file_system", + "aws_fsx_openzfs_snapshot", + "aws_fsx_openzfs_volume", + "aws_fsx_s3_access_point_attachment", + "aws_fsx_windows_file_system", + "aws_gamelift_alias", + "aws_gamelift_build", + "aws_gamelift_fleet", + "aws_gamelift_game_server_group", + "aws_gamelift_game_session_queue", + "aws_gamelift_script", + "aws_glacier_vault", + "aws_glacier_vault_lock", + "aws_globalaccelerator_accelerator", + "aws_globalaccelerator_cross_account_attachment", + "aws_globalaccelerator_custom_routing_accelerator", + "aws_globalaccelerator_custom_routing_endpoint_group", + "aws_globalaccelerator_custom_routing_listener", + "aws_globalaccelerator_endpoint_group", + "aws_globalaccelerator_listener", + "aws_glue_catalog_database", + "aws_glue_catalog_table", + "aws_glue_catalog_table_optimizer", + "aws_glue_classifier", + "aws_glue_connection", + "aws_glue_crawler", + "aws_glue_data_catalog_encryption_settings", + "aws_glue_data_quality_ruleset", + "aws_glue_dev_endpoint", + "aws_glue_job", + "aws_glue_ml_transform", + "aws_glue_partition", + "aws_glue_partition_index", + "aws_glue_registry", + "aws_glue_resource_policy", + "aws_glue_schema", + "aws_glue_security_configuration", + "aws_glue_trigger", + "aws_glue_user_defined_function", + "aws_glue_workflow", + "aws_grafana_license_association", + "aws_grafana_role_association", + "aws_grafana_workspace", + "aws_grafana_workspace_api_key", + "aws_grafana_workspace_saml_configuration", + "aws_grafana_workspace_service_account", + "aws_grafana_workspace_service_account_token", + "aws_guardduty_detector", + "aws_guardduty_detector_feature", + "aws_guardduty_filter", + "aws_guardduty_invite_accepter", + "aws_guardduty_ipset", + "aws_guardduty_malware_protection_plan", + "aws_guardduty_member", + "aws_guardduty_member_detector_feature", + "aws_guardduty_organization_admin_account", + "aws_guardduty_organization_configuration", + "aws_guardduty_organization_configuration_feature", + "aws_guardduty_publishing_destination", + "aws_guardduty_threatintelset", + "aws_iam_access_key", + "aws_iam_account_alias", + "aws_iam_account_password_policy", + "aws_iam_group", + "aws_iam_group_membership", + "aws_iam_group_policies_exclusive", + "aws_iam_group_policy", + "aws_iam_group_policy_attachment", + "aws_iam_group_policy_attachments_exclusive", + "aws_iam_instance_profile", + "aws_iam_openid_connect_provider", + "aws_iam_organizations_features", + "aws_iam_policy", + "aws_iam_policy_attachment", + "aws_iam_role", + "aws_iam_role_policies_exclusive", + "aws_iam_role_policy", + "aws_iam_role_policy_attachment", + "aws_iam_role_policy_attachments_exclusive", + "aws_iam_saml_provider", + "aws_iam_security_token_service_preferences", + "aws_iam_server_certificate", + "aws_iam_service_linked_role", + "aws_iam_service_specific_credential", + "aws_iam_signing_certificate", + "aws_iam_user", + "aws_iam_user_group_membership", + "aws_iam_user_login_profile", + "aws_iam_user_policies_exclusive", + "aws_iam_user_policy", + "aws_iam_user_policy_attachment", + "aws_iam_user_policy_attachments_exclusive", + "aws_iam_user_ssh_key", + "aws_iam_virtual_mfa_device", + "aws_identitystore_group", + "aws_identitystore_group_membership", + "aws_identitystore_user", + "aws_imagebuilder_component", + "aws_imagebuilder_container_recipe", + "aws_imagebuilder_distribution_configuration", + "aws_imagebuilder_image", + "aws_imagebuilder_image_pipeline", + "aws_imagebuilder_image_recipe", + "aws_imagebuilder_infrastructure_configuration", + "aws_imagebuilder_lifecycle_policy", + "aws_imagebuilder_workflow", + "aws_inspector2_delegated_admin_account", + "aws_inspector2_enabler", + "aws_inspector2_filter", + "aws_inspector2_member_association", + "aws_inspector2_organization_configuration", + "aws_inspector_assessment_target", + "aws_inspector_assessment_template", + "aws_inspector_resource_group", + "aws_instance", + "aws_internet_gateway", + "aws_internet_gateway_attachment", + "aws_internetmonitor_monitor", + "aws_invoicing_invoice_unit", + "aws_iot_authorizer", + "aws_iot_billing_group", + "aws_iot_ca_certificate", + "aws_iot_certificate", + "aws_iot_domain_configuration", + "aws_iot_event_configurations", + "aws_iot_indexing_configuration", + "aws_iot_logging_options", + "aws_iot_policy", + "aws_iot_policy_attachment", + "aws_iot_provisioning_template", + "aws_iot_role_alias", + "aws_iot_thing", + "aws_iot_thing_group", + "aws_iot_thing_group_membership", + "aws_iot_thing_principal_attachment", + "aws_iot_thing_type", + "aws_iot_topic_rule", + "aws_iot_topic_rule_destination", + "aws_ivs_channel", + "aws_ivs_playback_key_pair", + "aws_ivs_recording_configuration", + "aws_ivschat_logging_configuration", + "aws_ivschat_room", + "aws_kendra_data_source", + "aws_kendra_experience", + "aws_kendra_faq", + "aws_kendra_index", + "aws_kendra_query_suggestions_block_list", + "aws_kendra_thesaurus", + "aws_key_pair", + "aws_keyspaces_keyspace", + "aws_keyspaces_table", + "aws_kinesis_analytics_application", + "aws_kinesis_firehose_delivery_stream", + "aws_kinesis_resource_policy", + "aws_kinesis_stream", + "aws_kinesis_stream_consumer", + "aws_kinesis_video_stream", + "aws_kinesisanalyticsv2_application", + "aws_kinesisanalyticsv2_application_snapshot", + "aws_kms_alias", + "aws_kms_ciphertext", + "aws_kms_custom_key_store", + "aws_kms_external_key", + "aws_kms_grant", + "aws_kms_key", + "aws_kms_key_policy", + "aws_kms_replica_external_key", + "aws_kms_replica_key", + "aws_lakeformation_data_cells_filter", + "aws_lakeformation_data_lake_settings", + "aws_lakeformation_identity_center_configuration", + "aws_lakeformation_lf_tag", + "aws_lakeformation_lf_tag_expression", + "aws_lakeformation_opt_in", + "aws_lakeformation_permissions", + "aws_lakeformation_resource", + "aws_lakeformation_resource_lf_tag", + "aws_lakeformation_resource_lf_tags", + "aws_lambda_alias", + "aws_lambda_code_signing_config", + "aws_lambda_event_source_mapping", + "aws_lambda_function", + "aws_lambda_function_event_invoke_config", + "aws_lambda_function_recursion_config", + "aws_lambda_function_url", + "aws_lambda_invocation", + "aws_lambda_layer_version", + "aws_lambda_layer_version_permission", + "aws_lambda_permission", + "aws_lambda_provisioned_concurrency_config", + "aws_lambda_runtime_management_config", + "aws_launch_configuration", + "aws_launch_template", + "aws_lb", + "aws_lb_cookie_stickiness_policy", + "aws_lb_listener", + "aws_lb_listener_certificate", + "aws_lb_listener_rule", + "aws_lb_ssl_negotiation_policy", + "aws_lb_target_group", + "aws_lb_target_group_attachment", + "aws_lb_trust_store", + "aws_lb_trust_store_revocation", + "aws_lex_bot", + "aws_lex_bot_alias", + "aws_lex_intent", + "aws_lex_slot_type", + "aws_lexv2models_bot", + "aws_lexv2models_bot_locale", + "aws_lexv2models_bot_version", + "aws_lexv2models_intent", + "aws_lexv2models_slot", + "aws_lexv2models_slot_type", + "aws_licensemanager_association", + "aws_licensemanager_grant", + "aws_licensemanager_grant_accepter", + "aws_licensemanager_license_configuration", + "aws_lightsail_bucket", + "aws_lightsail_bucket_access_key", + "aws_lightsail_bucket_resource_access", + "aws_lightsail_certificate", + "aws_lightsail_container_service", + "aws_lightsail_container_service_deployment_version", + "aws_lightsail_database", + "aws_lightsail_disk", + "aws_lightsail_disk_attachment", + "aws_lightsail_distribution", + "aws_lightsail_domain", + "aws_lightsail_domain_entry", + "aws_lightsail_instance", + "aws_lightsail_instance_public_ports", + "aws_lightsail_key_pair", + "aws_lightsail_lb", + "aws_lightsail_lb_attachment", + "aws_lightsail_lb_certificate", + "aws_lightsail_lb_certificate_attachment", + "aws_lightsail_lb_https_redirection_policy", + "aws_lightsail_lb_stickiness_policy", + "aws_lightsail_static_ip", + "aws_lightsail_static_ip_attachment", + "aws_load_balancer_backend_server_policy", + "aws_load_balancer_listener_policy", + "aws_load_balancer_policy", + "aws_location_geofence_collection", + "aws_location_map", + "aws_location_place_index", + "aws_location_route_calculator", + "aws_location_tracker", + "aws_location_tracker_association", + "aws_m2_application", + "aws_m2_deployment", + "aws_m2_environment", + "aws_macie2_account", + "aws_macie2_classification_export_configuration", + "aws_macie2_classification_job", + "aws_macie2_custom_data_identifier", + "aws_macie2_findings_filter", + "aws_macie2_invitation_accepter", + "aws_macie2_member", + "aws_macie2_organization_admin_account", + "aws_macie2_organization_configuration", + "aws_main_route_table_association", + "aws_media_convert_queue", + "aws_media_package_channel", + "aws_media_packagev2_channel_group", + "aws_media_store_container", + "aws_media_store_container_policy", + "aws_medialive_channel", + "aws_medialive_input", + "aws_medialive_input_security_group", + "aws_medialive_multiplex", + "aws_medialive_multiplex_program", + "aws_memorydb_acl", + "aws_memorydb_cluster", + "aws_memorydb_multi_region_cluster", + "aws_memorydb_parameter_group", + "aws_memorydb_snapshot", + "aws_memorydb_subnet_group", + "aws_memorydb_user", + "aws_mq_broker", + "aws_mq_configuration", + "aws_msk_cluster", + "aws_msk_cluster_policy", + "aws_msk_configuration", + "aws_msk_replicator", + "aws_msk_scram_secret_association", + "aws_msk_serverless_cluster", + "aws_msk_single_scram_secret_association", + "aws_msk_vpc_connection", + "aws_mskconnect_connector", + "aws_mskconnect_custom_plugin", + "aws_mskconnect_worker_configuration", + "aws_mwaa_environment", + "aws_nat_gateway", + "aws_nat_gateway_eip_association", + "aws_neptune_cluster", + "aws_neptune_cluster_endpoint", + "aws_neptune_cluster_instance", + "aws_neptune_cluster_parameter_group", + "aws_neptune_cluster_snapshot", + "aws_neptune_event_subscription", + "aws_neptune_global_cluster", + "aws_neptune_parameter_group", + "aws_neptune_subnet_group", + "aws_neptunegraph_graph", + "aws_network_acl", + "aws_network_acl_association", + "aws_network_acl_rule", + "aws_network_interface", + "aws_network_interface_attachment", + "aws_network_interface_permission", + "aws_network_interface_sg_attachment", + "aws_networkfirewall_firewall", + "aws_networkfirewall_firewall_policy", + "aws_networkfirewall_firewall_transit_gateway_attachment_accepter", + "aws_networkfirewall_logging_configuration", + "aws_networkfirewall_resource_policy", + "aws_networkfirewall_rule_group", + "aws_networkfirewall_tls_inspection_configuration", + "aws_networkfirewall_vpc_endpoint_association", + "aws_networkflowmonitor_monitor", + "aws_networkflowmonitor_scope", + "aws_networkmanager_attachment_accepter", + "aws_networkmanager_connect_attachment", + "aws_networkmanager_connect_peer", + "aws_networkmanager_connection", + "aws_networkmanager_core_network", + "aws_networkmanager_core_network_policy_attachment", + "aws_networkmanager_customer_gateway_association", + "aws_networkmanager_device", + "aws_networkmanager_dx_gateway_attachment", + "aws_networkmanager_global_network", + "aws_networkmanager_link", + "aws_networkmanager_link_association", + "aws_networkmanager_site", + "aws_networkmanager_site_to_site_vpn_attachment", + "aws_networkmanager_transit_gateway_connect_peer_association", + "aws_networkmanager_transit_gateway_peering", + "aws_networkmanager_transit_gateway_registration", + "aws_networkmanager_transit_gateway_route_table_attachment", + "aws_networkmanager_vpc_attachment", + "aws_networkmonitor_monitor", + "aws_networkmonitor_probe", + "aws_notifications_channel_association", + "aws_notifications_event_rule", + "aws_notifications_notification_configuration", + "aws_notifications_notification_hub", + "aws_notificationscontacts_email_contact", + "aws_oam_link", + "aws_oam_sink", + "aws_oam_sink_policy", + "aws_observabilityadmin_centralization_rule_for_organization", + "aws_odb_cloud_autonomous_vm_cluster", + "aws_odb_cloud_exadata_infrastructure", + "aws_odb_cloud_vm_cluster", + "aws_odb_network", + "aws_odb_network_peering_connection", + "aws_opensearch_authorize_vpc_endpoint_access", + "aws_opensearch_domain", + "aws_opensearch_domain_policy", + "aws_opensearch_domain_saml_options", + "aws_opensearch_inbound_connection_accepter", + "aws_opensearch_outbound_connection", + "aws_opensearch_package", + "aws_opensearch_package_association", + "aws_opensearch_vpc_endpoint", + "aws_opensearchserverless_access_policy", + "aws_opensearchserverless_collection", + "aws_opensearchserverless_lifecycle_policy", + "aws_opensearchserverless_security_config", + "aws_opensearchserverless_security_policy", + "aws_opensearchserverless_vpc_endpoint", + "aws_organizations_account", + "aws_organizations_delegated_administrator", + "aws_organizations_organization", + "aws_organizations_organizational_unit", + "aws_organizations_policy", + "aws_organizations_policy_attachment", + "aws_organizations_resource_policy", + "aws_osis_pipeline", + "aws_paymentcryptography_key", + "aws_paymentcryptography_key_alias", + "aws_pinpoint_adm_channel", + "aws_pinpoint_apns_channel", + "aws_pinpoint_apns_sandbox_channel", + "aws_pinpoint_apns_voip_channel", + "aws_pinpoint_apns_voip_sandbox_channel", + "aws_pinpoint_app", + "aws_pinpoint_baidu_channel", + "aws_pinpoint_email_channel", + "aws_pinpoint_email_template", + "aws_pinpoint_event_stream", + "aws_pinpoint_gcm_channel", + "aws_pinpoint_sms_channel", + "aws_pinpointsmsvoicev2_configuration_set", + "aws_pinpointsmsvoicev2_opt_out_list", + "aws_pinpointsmsvoicev2_phone_number", + "aws_pipes_pipe", + "aws_placement_group", + "aws_prometheus_alert_manager_definition", + "aws_prometheus_query_logging_configuration", + "aws_prometheus_resource_policy", + "aws_prometheus_rule_group_namespace", + "aws_prometheus_scraper", + "aws_prometheus_workspace", + "aws_prometheus_workspace_configuration", + "aws_proxy_protocol_policy", + "aws_qbusiness_application", + "aws_qldb_ledger", + "aws_qldb_stream", + "aws_quicksight_account_settings", + "aws_quicksight_account_subscription", + "aws_quicksight_analysis", + "aws_quicksight_custom_permissions", + "aws_quicksight_dashboard", + "aws_quicksight_data_set", + "aws_quicksight_data_source", + "aws_quicksight_folder", + "aws_quicksight_folder_membership", + "aws_quicksight_group", + "aws_quicksight_group_membership", + "aws_quicksight_iam_policy_assignment", + "aws_quicksight_ingestion", + "aws_quicksight_ip_restriction", + "aws_quicksight_key_registration", + "aws_quicksight_namespace", + "aws_quicksight_refresh_schedule", + "aws_quicksight_role_custom_permission", + "aws_quicksight_role_membership", + "aws_quicksight_template", + "aws_quicksight_template_alias", + "aws_quicksight_theme", + "aws_quicksight_user", + "aws_quicksight_user_custom_permission", + "aws_quicksight_vpc_connection", + "aws_ram_principal_association", + "aws_ram_resource_association", + "aws_ram_resource_share", + "aws_ram_resource_share_accepter", + "aws_ram_sharing_with_organization", + "aws_rbin_rule", + "aws_rds_certificate", + "aws_rds_cluster", + "aws_rds_cluster_activity_stream", + "aws_rds_cluster_endpoint", + "aws_rds_cluster_instance", + "aws_rds_cluster_parameter_group", + "aws_rds_cluster_role_association", + "aws_rds_cluster_snapshot_copy", + "aws_rds_custom_db_engine_version", + "aws_rds_export_task", + "aws_rds_global_cluster", + "aws_rds_instance_state", + "aws_rds_integration", + "aws_rds_reserved_instance", + "aws_rds_shard_group", + "aws_redshift_authentication_profile", + "aws_redshift_cluster", + "aws_redshift_cluster_iam_roles", + "aws_redshift_cluster_snapshot", + "aws_redshift_data_share_authorization", + "aws_redshift_data_share_consumer_association", + "aws_redshift_endpoint_access", + "aws_redshift_endpoint_authorization", + "aws_redshift_event_subscription", + "aws_redshift_hsm_client_certificate", + "aws_redshift_hsm_configuration", + "aws_redshift_integration", + "aws_redshift_logging", + "aws_redshift_parameter_group", + "aws_redshift_partner", + "aws_redshift_resource_policy", + "aws_redshift_scheduled_action", + "aws_redshift_snapshot_copy", + "aws_redshift_snapshot_copy_grant", + "aws_redshift_snapshot_schedule", + "aws_redshift_snapshot_schedule_association", + "aws_redshift_subnet_group", + "aws_redshift_usage_limit", + "aws_redshiftdata_statement", + "aws_redshiftserverless_custom_domain_association", + "aws_redshiftserverless_endpoint_access", + "aws_redshiftserverless_namespace", + "aws_redshiftserverless_resource_policy", + "aws_redshiftserverless_snapshot", + "aws_redshiftserverless_usage_limit", + "aws_redshiftserverless_workgroup", + "aws_rekognition_collection", + "aws_rekognition_project", + "aws_rekognition_stream_processor", + "aws_resiliencehub_resiliency_policy", + "aws_resourceexplorer2_index", + "aws_resourceexplorer2_view", + "aws_resourcegroups_group", + "aws_resourcegroups_resource", + "aws_rolesanywhere_profile", + "aws_rolesanywhere_trust_anchor", + "aws_route", + "aws_route53_cidr_collection", + "aws_route53_cidr_location", + "aws_route53_delegation_set", + "aws_route53_health_check", + "aws_route53_hosted_zone_dnssec", + "aws_route53_key_signing_key", + "aws_route53_query_log", + "aws_route53_record", + "aws_route53_records_exclusive", + "aws_route53_resolver_config", + "aws_route53_resolver_dnssec_config", + "aws_route53_resolver_endpoint", + "aws_route53_resolver_firewall_config", + "aws_route53_resolver_firewall_domain_list", + "aws_route53_resolver_firewall_rule", + "aws_route53_resolver_firewall_rule_group", + "aws_route53_resolver_firewall_rule_group_association", + "aws_route53_resolver_query_log_config", + "aws_route53_resolver_query_log_config_association", + "aws_route53_resolver_rule", + "aws_route53_resolver_rule_association", + "aws_route53_traffic_policy", + "aws_route53_traffic_policy_instance", + "aws_route53_vpc_association_authorization", + "aws_route53_zone", + "aws_route53_zone_association", + "aws_route53domains_delegation_signer_record", + "aws_route53domains_domain", + "aws_route53domains_registered_domain", + "aws_route53profiles_association", + "aws_route53profiles_profile", + "aws_route53profiles_resource_association", + "aws_route53recoverycontrolconfig_cluster", + "aws_route53recoverycontrolconfig_control_panel", + "aws_route53recoverycontrolconfig_routing_control", + "aws_route53recoverycontrolconfig_safety_rule", + "aws_route53recoveryreadiness_cell", + "aws_route53recoveryreadiness_readiness_check", + "aws_route53recoveryreadiness_recovery_group", + "aws_route53recoveryreadiness_resource_set", + "aws_route_table", + "aws_route_table_association", + "aws_rum_app_monitor", + "aws_rum_metrics_destination", + "aws_s3_access_point", + "aws_s3_account_public_access_block", + "aws_s3_bucket", + "aws_s3_bucket_accelerate_configuration", + "aws_s3_bucket_acl", + "aws_s3_bucket_analytics_configuration", + "aws_s3_bucket_cors_configuration", + "aws_s3_bucket_intelligent_tiering_configuration", + "aws_s3_bucket_inventory", + "aws_s3_bucket_lifecycle_configuration", + "aws_s3_bucket_logging", + "aws_s3_bucket_metadata_configuration", + "aws_s3_bucket_metric", + "aws_s3_bucket_notification", + "aws_s3_bucket_object", + "aws_s3_bucket_object_lock_configuration", + "aws_s3_bucket_ownership_controls", + "aws_s3_bucket_policy", + "aws_s3_bucket_public_access_block", + "aws_s3_bucket_replication_configuration", + "aws_s3_bucket_request_payment_configuration", + "aws_s3_bucket_server_side_encryption_configuration", + "aws_s3_bucket_versioning", + "aws_s3_bucket_website_configuration", + "aws_s3_directory_bucket", + "aws_s3_object", + "aws_s3_object_copy", + "aws_s3control_access_grant", + "aws_s3control_access_grants_instance", + "aws_s3control_access_grants_instance_resource_policy", + "aws_s3control_access_grants_location", + "aws_s3control_access_point_policy", + "aws_s3control_bucket", + "aws_s3control_bucket_lifecycle_configuration", + "aws_s3control_bucket_policy", + "aws_s3control_directory_bucket_access_point_scope", + "aws_s3control_multi_region_access_point", + "aws_s3control_multi_region_access_point_policy", + "aws_s3control_object_lambda_access_point", + "aws_s3control_object_lambda_access_point_policy", + "aws_s3control_storage_lens_configuration", + "aws_s3outposts_endpoint", + "aws_s3tables_namespace", + "aws_s3tables_table", + "aws_s3tables_table_bucket", + "aws_s3tables_table_bucket_policy", + "aws_s3tables_table_policy", + "aws_sagemaker_app", + "aws_sagemaker_app_image_config", + "aws_sagemaker_code_repository", + "aws_sagemaker_data_quality_job_definition", + "aws_sagemaker_device", + "aws_sagemaker_device_fleet", + "aws_sagemaker_domain", + "aws_sagemaker_endpoint", + "aws_sagemaker_endpoint_configuration", + "aws_sagemaker_feature_group", + "aws_sagemaker_flow_definition", + "aws_sagemaker_hub", + "aws_sagemaker_human_task_ui", + "aws_sagemaker_image", + "aws_sagemaker_image_version", + "aws_sagemaker_mlflow_tracking_server", + "aws_sagemaker_model", + "aws_sagemaker_model_package_group", + "aws_sagemaker_model_package_group_policy", + "aws_sagemaker_monitoring_schedule", + "aws_sagemaker_notebook_instance", + "aws_sagemaker_notebook_instance_lifecycle_configuration", + "aws_sagemaker_pipeline", + "aws_sagemaker_project", + "aws_sagemaker_servicecatalog_portfolio_status", + "aws_sagemaker_space", + "aws_sagemaker_studio_lifecycle_config", + "aws_sagemaker_user_profile", + "aws_sagemaker_workforce", + "aws_sagemaker_workteam", + "aws_scheduler_schedule", + "aws_scheduler_schedule_group", + "aws_schemas_discoverer", + "aws_schemas_registry", + "aws_schemas_registry_policy", + "aws_schemas_schema", + "aws_secretsmanager_secret", + "aws_secretsmanager_secret_policy", + "aws_secretsmanager_secret_rotation", + "aws_secretsmanager_secret_version", + "aws_security_group", + "aws_security_group_rule", + "aws_securityhub_account", + "aws_securityhub_action_target", + "aws_securityhub_automation_rule", + "aws_securityhub_configuration_policy", + "aws_securityhub_configuration_policy_association", + "aws_securityhub_finding_aggregator", + "aws_securityhub_insight", + "aws_securityhub_invite_accepter", + "aws_securityhub_member", + "aws_securityhub_organization_admin_account", + "aws_securityhub_organization_configuration", + "aws_securityhub_product_subscription", + "aws_securityhub_standards_control", + "aws_securityhub_standards_control_association", + "aws_securityhub_standards_subscription", + "aws_securitylake_aws_log_source", + "aws_securitylake_custom_log_source", + "aws_securitylake_data_lake", + "aws_securitylake_subscriber", + "aws_securitylake_subscriber_notification", + "aws_serverlessapplicationrepository_cloudformation_stack", + "aws_service_discovery_http_namespace", + "aws_service_discovery_instance", + "aws_service_discovery_private_dns_namespace", + "aws_service_discovery_public_dns_namespace", + "aws_service_discovery_service", + "aws_servicecatalog_budget_resource_association", + "aws_servicecatalog_constraint", + "aws_servicecatalog_organizations_access", + "aws_servicecatalog_portfolio", + "aws_servicecatalog_portfolio_share", + "aws_servicecatalog_principal_portfolio_association", + "aws_servicecatalog_product", + "aws_servicecatalog_product_portfolio_association", + "aws_servicecatalog_provisioned_product", + "aws_servicecatalog_provisioning_artifact", + "aws_servicecatalog_service_action", + "aws_servicecatalog_tag_option", + "aws_servicecatalog_tag_option_resource_association", + "aws_servicecatalogappregistry_application", + "aws_servicecatalogappregistry_attribute_group", + "aws_servicecatalogappregistry_attribute_group_association", + "aws_servicequotas_service_quota", + "aws_servicequotas_template", + "aws_servicequotas_template_association", + "aws_ses_active_receipt_rule_set", + "aws_ses_configuration_set", + "aws_ses_domain_dkim", + "aws_ses_domain_identity", + "aws_ses_domain_identity_verification", + "aws_ses_domain_mail_from", + "aws_ses_email_identity", + "aws_ses_event_destination", + "aws_ses_identity_notification_topic", + "aws_ses_identity_policy", + "aws_ses_receipt_filter", + "aws_ses_receipt_rule", + "aws_ses_receipt_rule_set", + "aws_ses_template", + "aws_sesv2_account_suppression_attributes", + "aws_sesv2_account_vdm_attributes", + "aws_sesv2_configuration_set", + "aws_sesv2_configuration_set_event_destination", + "aws_sesv2_contact_list", + "aws_sesv2_dedicated_ip_assignment", + "aws_sesv2_dedicated_ip_pool", + "aws_sesv2_email_identity", + "aws_sesv2_email_identity_feedback_attributes", + "aws_sesv2_email_identity_mail_from_attributes", + "aws_sesv2_email_identity_policy", + "aws_sfn_activity", + "aws_sfn_alias", + "aws_sfn_state_machine", + "aws_shield_application_layer_automatic_response", + "aws_shield_drt_access_log_bucket_association", + "aws_shield_drt_access_role_arn_association", + "aws_shield_proactive_engagement", + "aws_shield_protection", + "aws_shield_protection_group", + "aws_shield_protection_health_check_association", + "aws_shield_subscription", + "aws_signer_signing_job", + "aws_signer_signing_profile", + "aws_signer_signing_profile_permission", + "aws_snapshot_create_volume_permission", + "aws_sns_platform_application", + "aws_sns_sms_preferences", + "aws_sns_topic", + "aws_sns_topic_data_protection_policy", + "aws_sns_topic_policy", + "aws_sns_topic_subscription", + "aws_spot_datafeed_subscription", + "aws_spot_fleet_request", + "aws_spot_instance_request", + "aws_sqs_queue", + "aws_sqs_queue_policy", + "aws_sqs_queue_redrive_allow_policy", + "aws_sqs_queue_redrive_policy", + "aws_ssm_activation", + "aws_ssm_association", + "aws_ssm_default_patch_baseline", + "aws_ssm_document", + "aws_ssm_maintenance_window", + "aws_ssm_maintenance_window_target", + "aws_ssm_maintenance_window_task", + "aws_ssm_parameter", + "aws_ssm_patch_baseline", + "aws_ssm_patch_group", + "aws_ssm_resource_data_sync", + "aws_ssm_service_setting", + "aws_ssmcontacts_contact", + "aws_ssmcontacts_contact_channel", + "aws_ssmcontacts_plan", + "aws_ssmcontacts_rotation", + "aws_ssmincidents_replication_set", + "aws_ssmincidents_response_plan", + "aws_ssmquicksetup_configuration_manager", + "aws_ssoadmin_account_assignment", + "aws_ssoadmin_application", + "aws_ssoadmin_application_access_scope", + "aws_ssoadmin_application_assignment", + "aws_ssoadmin_application_assignment_configuration", + "aws_ssoadmin_customer_managed_policy_attachment", + "aws_ssoadmin_instance_access_control_attributes", + "aws_ssoadmin_managed_policy_attachment", + "aws_ssoadmin_permission_set", + "aws_ssoadmin_permission_set_inline_policy", + "aws_ssoadmin_permissions_boundary_attachment", + "aws_ssoadmin_trusted_token_issuer", + "aws_storagegateway_cache", + "aws_storagegateway_cached_iscsi_volume", + "aws_storagegateway_file_system_association", + "aws_storagegateway_gateway", + "aws_storagegateway_nfs_file_share", + "aws_storagegateway_smb_file_share", + "aws_storagegateway_stored_iscsi_volume", + "aws_storagegateway_tape_pool", + "aws_storagegateway_upload_buffer", + "aws_storagegateway_working_storage", + "aws_subnet", + "aws_swf_domain", + "aws_synthetics_canary", + "aws_synthetics_group", + "aws_synthetics_group_association", + "aws_timestreaminfluxdb_db_cluster", + "aws_timestreaminfluxdb_db_instance", + "aws_timestreamquery_scheduled_query", + "aws_timestreamwrite_database", + "aws_timestreamwrite_table", + "aws_transcribe_language_model", + "aws_transcribe_medical_vocabulary", + "aws_transcribe_vocabulary", + "aws_transcribe_vocabulary_filter", + "aws_transfer_access", + "aws_transfer_agreement", + "aws_transfer_certificate", + "aws_transfer_connector", + "aws_transfer_host_key", + "aws_transfer_profile", + "aws_transfer_server", + "aws_transfer_ssh_key", + "aws_transfer_tag", + "aws_transfer_user", + "aws_transfer_web_app", + "aws_transfer_web_app_customization", + "aws_transfer_workflow", + "aws_verifiedaccess_endpoint", + "aws_verifiedaccess_group", + "aws_verifiedaccess_instance", + "aws_verifiedaccess_instance_logging_configuration", + "aws_verifiedaccess_instance_trust_provider_attachment", + "aws_verifiedaccess_trust_provider", + "aws_verifiedpermissions_identity_source", + "aws_verifiedpermissions_policy", + "aws_verifiedpermissions_policy_store", + "aws_verifiedpermissions_policy_template", + "aws_verifiedpermissions_schema", + "aws_volume_attachment", + "aws_vpc", + "aws_vpc_block_public_access_exclusion", + "aws_vpc_block_public_access_options", + "aws_vpc_dhcp_options", + "aws_vpc_dhcp_options_association", + "aws_vpc_endpoint", + "aws_vpc_endpoint_connection_accepter", + "aws_vpc_endpoint_connection_notification", + "aws_vpc_endpoint_policy", + "aws_vpc_endpoint_private_dns", + "aws_vpc_endpoint_route_table_association", + "aws_vpc_endpoint_security_group_association", + "aws_vpc_endpoint_service", + "aws_vpc_endpoint_service_allowed_principal", + "aws_vpc_endpoint_service_private_dns_verification", + "aws_vpc_endpoint_subnet_association", + "aws_vpc_ipam", + "aws_vpc_ipam_organization_admin_account", + "aws_vpc_ipam_pool", + "aws_vpc_ipam_pool_cidr", + "aws_vpc_ipam_pool_cidr_allocation", + "aws_vpc_ipam_preview_next_cidr", + "aws_vpc_ipam_resource_discovery", + "aws_vpc_ipam_resource_discovery_association", + "aws_vpc_ipam_scope", + "aws_vpc_ipv4_cidr_block_association", + "aws_vpc_ipv6_cidr_block_association", + "aws_vpc_network_performance_metric_subscription", + "aws_vpc_peering_connection", + "aws_vpc_peering_connection_accepter", + "aws_vpc_peering_connection_options", + "aws_vpc_route_server", + "aws_vpc_route_server_association", + "aws_vpc_route_server_endpoint", + "aws_vpc_route_server_peer", + "aws_vpc_route_server_propagation", + "aws_vpc_route_server_vpc_association", + "aws_vpc_security_group_egress_rule", + "aws_vpc_security_group_ingress_rule", + "aws_vpc_security_group_vpc_association", + "aws_vpclattice_access_log_subscription", + "aws_vpclattice_auth_policy", + "aws_vpclattice_listener", + "aws_vpclattice_listener_rule", + "aws_vpclattice_resource_configuration", + "aws_vpclattice_resource_gateway", + "aws_vpclattice_resource_policy", + "aws_vpclattice_service", + "aws_vpclattice_service_network", + "aws_vpclattice_service_network_resource_association", + "aws_vpclattice_service_network_service_association", + "aws_vpclattice_service_network_vpc_association", + "aws_vpclattice_target_group", + "aws_vpclattice_target_group_attachment", + "aws_vpn_connection", + "aws_vpn_connection_route", + "aws_vpn_gateway", + "aws_vpn_gateway_attachment", + "aws_vpn_gateway_route_propagation", + "aws_waf_byte_match_set", + "aws_waf_geo_match_set", + "aws_waf_ipset", + "aws_waf_rate_based_rule", + "aws_waf_regex_match_set", + "aws_waf_regex_pattern_set", + "aws_waf_rule", + "aws_waf_rule_group", + "aws_waf_size_constraint_set", + "aws_waf_sql_injection_match_set", + "aws_waf_web_acl", + "aws_waf_xss_match_set", + "aws_wafregional_byte_match_set", + "aws_wafregional_geo_match_set", + "aws_wafregional_ipset", + "aws_wafregional_rate_based_rule", + "aws_wafregional_regex_match_set", + "aws_wafregional_regex_pattern_set", + "aws_wafregional_rule", + "aws_wafregional_rule_group", + "aws_wafregional_size_constraint_set", + "aws_wafregional_sql_injection_match_set", + "aws_wafregional_web_acl", + "aws_wafregional_web_acl_association", + "aws_wafregional_xss_match_set", + "aws_wafv2_api_key", + "aws_wafv2_ip_set", + "aws_wafv2_regex_pattern_set", + "aws_wafv2_rule_group", + "aws_wafv2_web_acl", + "aws_wafv2_web_acl_association", + "aws_wafv2_web_acl_logging_configuration", + "aws_wafv2_web_acl_rule_group_association", + "aws_workspaces_connection_alias", + "aws_workspaces_directory", + "aws_workspaces_ip_group", + "aws_workspaces_workspace", + "aws_workspacesweb_browser_settings", + "aws_workspacesweb_browser_settings_association", + "aws_workspacesweb_data_protection_settings", + "aws_workspacesweb_data_protection_settings_association", + "aws_workspacesweb_identity_provider", + "aws_workspacesweb_ip_access_settings", + "aws_workspacesweb_ip_access_settings_association", + "aws_workspacesweb_network_settings", + "aws_workspacesweb_network_settings_association", + "aws_workspacesweb_portal", + "aws_workspacesweb_session_logger", + "aws_workspacesweb_session_logger_association", + "aws_workspacesweb_trust_store", + "aws_workspacesweb_trust_store_association", + "aws_workspacesweb_user_access_logging_settings", + "aws_workspacesweb_user_access_logging_settings_association", + "aws_workspacesweb_user_settings", + "aws_workspacesweb_user_settings_association", + "aws_xray_encryption_config", + "aws_xray_group", + "aws_xray_resource_policy", + "aws_xray_sampling_rule" + ], + "dataSources": [ + "aws_account_primary_contact", + "aws_acm_certificate", + "aws_acmpca_certificate", + "aws_acmpca_certificate_authority", + "aws_ami", + "aws_ami_ids", + "aws_api_gateway_api_key", + "aws_api_gateway_api_keys", + "aws_api_gateway_authorizer", + "aws_api_gateway_authorizers", + "aws_api_gateway_domain_name", + "aws_api_gateway_export", + "aws_api_gateway_resource", + "aws_api_gateway_rest_api", + "aws_api_gateway_sdk", + "aws_api_gateway_vpc_link", + "aws_apigatewayv2_api", + "aws_apigatewayv2_apis", + "aws_apigatewayv2_export", + "aws_apigatewayv2_vpc_link", + "aws_appconfig_application", + "aws_appconfig_configuration_profile", + "aws_appconfig_configuration_profiles", + "aws_appconfig_environment", + "aws_appconfig_environments", + "aws_appintegrations_event_integration", + "aws_appmesh_gateway_route", + "aws_appmesh_mesh", + "aws_appmesh_route", + "aws_appmesh_virtual_gateway", + "aws_appmesh_virtual_node", + "aws_appmesh_virtual_router", + "aws_appmesh_virtual_service", + "aws_apprunner_hosted_zone_id", + "aws_appstream_image", + "aws_arn", + "aws_athena_named_query", + "aws_auditmanager_control", + "aws_auditmanager_framework", + "aws_autoscaling_group", + "aws_autoscaling_groups", + "aws_availability_zone", + "aws_availability_zones", + "aws_backup_framework", + "aws_backup_plan", + "aws_backup_report_plan", + "aws_backup_selection", + "aws_backup_vault", + "aws_batch_compute_environment", + "aws_batch_job_definition", + "aws_batch_job_queue", + "aws_batch_scheduling_policy", + "aws_bedrock_custom_model", + "aws_bedrock_custom_models", + "aws_bedrock_foundation_model", + "aws_bedrock_foundation_models", + "aws_bedrock_inference_profile", + "aws_bedrock_inference_profiles", + "aws_bedrockagent_agent_versions", + "aws_billing_service_account", + "aws_billing_views", + "aws_budgets_budget", + "aws_caller_identity", + "aws_canonical_user_id", + "aws_ce_cost_category", + "aws_ce_tags", + "aws_chatbot_slack_workspace", + "aws_cloudcontrolapi_resource", + "aws_cloudformation_export", + "aws_cloudformation_stack", + "aws_cloudformation_type", + "aws_cloudfront_cache_policy", + "aws_cloudfront_distribution", + "aws_cloudfront_function", + "aws_cloudfront_log_delivery_canonical_user_id", + "aws_cloudfront_origin_access_control", + "aws_cloudfront_origin_access_identities", + "aws_cloudfront_origin_access_identity", + "aws_cloudfront_origin_request_policy", + "aws_cloudfront_realtime_log_config", + "aws_cloudfront_response_headers_policy", + "aws_cloudhsm_v2_cluster", + "aws_cloudtrail_service_account", + "aws_cloudwatch_contributor_managed_insight_rules", + "aws_cloudwatch_event_bus", + "aws_cloudwatch_event_buses", + "aws_cloudwatch_event_connection", + "aws_cloudwatch_event_source", + "aws_cloudwatch_log_data_protection_policy_document", + "aws_cloudwatch_log_group", + "aws_cloudwatch_log_groups", + "aws_codeartifact_authorization_token", + "aws_codeartifact_repository_endpoint", + "aws_codebuild_fleet", + "aws_codecatalyst_dev_environment", + "aws_codecommit_approval_rule_template", + "aws_codecommit_repository", + "aws_codeguruprofiler_profiling_group", + "aws_codestarconnections_connection", + "aws_cognito_identity_pool", + "aws_cognito_user_group", + "aws_cognito_user_groups", + "aws_cognito_user_pool", + "aws_cognito_user_pool_client", + "aws_cognito_user_pool_clients", + "aws_cognito_user_pool_signing_certificate", + "aws_cognito_user_pools", + "aws_connect_bot_association", + "aws_connect_contact_flow", + "aws_connect_contact_flow_module", + "aws_connect_hours_of_operation", + "aws_connect_instance", + "aws_connect_instance_storage_config", + "aws_connect_lambda_function_association", + "aws_connect_prompt", + "aws_connect_queue", + "aws_connect_quick_connect", + "aws_connect_routing_profile", + "aws_connect_security_profile", + "aws_connect_user", + "aws_connect_user_hierarchy_group", + "aws_connect_user_hierarchy_structure", + "aws_connect_vocabulary", + "aws_controltower_controls", + "aws_cur_report_definition", + "aws_customer_gateway", + "aws_datapipeline_pipeline", + "aws_datapipeline_pipeline_definition", + "aws_datazone_domain", + "aws_datazone_environment_blueprint", + "aws_db_cluster_snapshot", + "aws_db_event_categories", + "aws_db_instance", + "aws_db_instances", + "aws_db_parameter_group", + "aws_db_proxy", + "aws_db_snapshot", + "aws_db_subnet_group", + "aws_default_tags", + "aws_devopsguru_notification_channel", + "aws_devopsguru_resource_collection", + "aws_directory_service_directory", + "aws_dms_certificate", + "aws_dms_endpoint", + "aws_dms_replication_instance", + "aws_dms_replication_subnet_group", + "aws_dms_replication_task", + "aws_docdb_engine_version", + "aws_docdb_orderable_db_instance", + "aws_dx_connection", + "aws_dx_gateway", + "aws_dx_location", + "aws_dx_locations", + "aws_dx_router_configuration", + "aws_dynamodb_table", + "aws_dynamodb_table_item", + "aws_dynamodb_tables", + "aws_ebs_default_kms_key", + "aws_ebs_encryption_by_default", + "aws_ebs_snapshot", + "aws_ebs_snapshot_ids", + "aws_ebs_volume", + "aws_ebs_volumes", + "aws_ec2_capacity_block_offering", + "aws_ec2_client_vpn_endpoint", + "aws_ec2_coip_pool", + "aws_ec2_coip_pools", + "aws_ec2_host", + "aws_ec2_instance_type", + "aws_ec2_instance_type_offering", + "aws_ec2_instance_type_offerings", + "aws_ec2_instance_types", + "aws_ec2_local_gateway", + "aws_ec2_local_gateway_route_table", + "aws_ec2_local_gateway_route_tables", + "aws_ec2_local_gateway_virtual_interface", + "aws_ec2_local_gateway_virtual_interface_group", + "aws_ec2_local_gateway_virtual_interface_groups", + "aws_ec2_local_gateways", + "aws_ec2_managed_prefix_list", + "aws_ec2_managed_prefix_lists", + "aws_ec2_network_insights_analysis", + "aws_ec2_network_insights_path", + "aws_ec2_public_ipv4_pool", + "aws_ec2_public_ipv4_pools", + "aws_ec2_serial_console_access", + "aws_ec2_spot_price", + "aws_ec2_transit_gateway", + "aws_ec2_transit_gateway_attachment", + "aws_ec2_transit_gateway_attachments", + "aws_ec2_transit_gateway_connect", + "aws_ec2_transit_gateway_connect_peer", + "aws_ec2_transit_gateway_dx_gateway_attachment", + "aws_ec2_transit_gateway_multicast_domain", + "aws_ec2_transit_gateway_peering_attachment", + "aws_ec2_transit_gateway_peering_attachments", + "aws_ec2_transit_gateway_route_table", + "aws_ec2_transit_gateway_route_table_associations", + "aws_ec2_transit_gateway_route_table_propagations", + "aws_ec2_transit_gateway_route_table_routes", + "aws_ec2_transit_gateway_route_tables", + "aws_ec2_transit_gateway_vpc_attachment", + "aws_ec2_transit_gateway_vpc_attachments", + "aws_ec2_transit_gateway_vpn_attachment", + "aws_ecr_authorization_token", + "aws_ecr_image", + "aws_ecr_images", + "aws_ecr_lifecycle_policy_document", + "aws_ecr_pull_through_cache_rule", + "aws_ecr_repositories", + "aws_ecr_repository", + "aws_ecr_repository_creation_template", + "aws_ecrpublic_authorization_token", + "aws_ecrpublic_images", + "aws_ecs_cluster", + "aws_ecs_clusters", + "aws_ecs_container_definition", + "aws_ecs_service", + "aws_ecs_task_definition", + "aws_ecs_task_execution", + "aws_efs_access_point", + "aws_efs_access_points", + "aws_efs_file_system", + "aws_efs_mount_target", + "aws_eip", + "aws_eips", + "aws_eks_access_entry", + "aws_eks_addon", + "aws_eks_addon_version", + "aws_eks_cluster", + "aws_eks_cluster_auth", + "aws_eks_cluster_versions", + "aws_eks_clusters", + "aws_eks_node_group", + "aws_eks_node_groups", + "aws_elastic_beanstalk_application", + "aws_elastic_beanstalk_hosted_zone", + "aws_elastic_beanstalk_solution_stack", + "aws_elasticache_cluster", + "aws_elasticache_replication_group", + "aws_elasticache_reserved_cache_node_offering", + "aws_elasticache_serverless_cache", + "aws_elasticache_subnet_group", + "aws_elasticache_user", + "aws_elasticsearch_domain", + "aws_elb", + "aws_elb_hosted_zone_id", + "aws_elb_service_account", + "aws_emr_release_labels", + "aws_emr_supported_instance_types", + "aws_emrcontainers_virtual_cluster", + "aws_fis_experiment_templates", + "aws_fsx_ontap_file_system", + "aws_fsx_ontap_storage_virtual_machine", + "aws_fsx_ontap_storage_virtual_machines", + "aws_fsx_openzfs_snapshot", + "aws_fsx_windows_file_system", + "aws_globalaccelerator_accelerator", + "aws_globalaccelerator_custom_routing_accelerator", + "aws_glue_catalog_table", + "aws_glue_connection", + "aws_glue_data_catalog_encryption_settings", + "aws_glue_registry", + "aws_glue_script", + "aws_grafana_workspace", + "aws_guardduty_detector", + "aws_guardduty_finding_ids", + "aws_iam_access_keys", + "aws_iam_account_alias", + "aws_iam_group", + "aws_iam_instance_profile", + "aws_iam_instance_profiles", + "aws_iam_openid_connect_provider", + "aws_iam_policy", + "aws_iam_policy_document", + "aws_iam_principal_policy_simulation", + "aws_iam_role", + "aws_iam_roles", + "aws_iam_saml_provider", + "aws_iam_server_certificate", + "aws_iam_session_context", + "aws_iam_user", + "aws_iam_user_ssh_key", + "aws_iam_users", + "aws_identitystore_group", + "aws_identitystore_group_memberships", + "aws_identitystore_groups", + "aws_identitystore_user", + "aws_identitystore_users", + "aws_imagebuilder_component", + "aws_imagebuilder_components", + "aws_imagebuilder_container_recipe", + "aws_imagebuilder_container_recipes", + "aws_imagebuilder_distribution_configuration", + "aws_imagebuilder_distribution_configurations", + "aws_imagebuilder_image", + "aws_imagebuilder_image_pipeline", + "aws_imagebuilder_image_pipelines", + "aws_imagebuilder_image_recipe", + "aws_imagebuilder_image_recipes", + "aws_imagebuilder_infrastructure_configuration", + "aws_imagebuilder_infrastructure_configurations", + "aws_inspector_rules_packages", + "aws_instance", + "aws_instances", + "aws_internet_gateway", + "aws_iot_endpoint", + "aws_iot_registration_code", + "aws_ip_ranges", + "aws_ivs_stream_key", + "aws_kendra_experience", + "aws_kendra_faq", + "aws_kendra_index", + "aws_kendra_query_suggestions_block_list", + "aws_kendra_thesaurus", + "aws_key_pair", + "aws_kinesis_firehose_delivery_stream", + "aws_kinesis_stream", + "aws_kinesis_stream_consumer", + "aws_kms_alias", + "aws_kms_ciphertext", + "aws_kms_custom_key_store", + "aws_kms_key", + "aws_kms_public_key", + "aws_kms_secret", + "aws_kms_secrets", + "aws_lakeformation_data_lake_settings", + "aws_lakeformation_permissions", + "aws_lakeformation_resource", + "aws_lambda_alias", + "aws_lambda_code_signing_config", + "aws_lambda_function", + "aws_lambda_function_url", + "aws_lambda_functions", + "aws_lambda_invocation", + "aws_lambda_layer_version", + "aws_launch_configuration", + "aws_launch_template", + "aws_lb", + "aws_lb_hosted_zone_id", + "aws_lb_listener", + "aws_lb_listener_rule", + "aws_lb_target_group", + "aws_lb_trust_store", + "aws_lbs", + "aws_lex_bot", + "aws_lex_bot_alias", + "aws_lex_intent", + "aws_lex_slot_type", + "aws_licensemanager_grants", + "aws_licensemanager_received_license", + "aws_licensemanager_received_licenses", + "aws_location_geofence_collection", + "aws_location_map", + "aws_location_place_index", + "aws_location_route_calculator", + "aws_location_tracker", + "aws_location_tracker_association", + "aws_location_tracker_associations", + "aws_media_convert_queue", + "aws_medialive_input", + "aws_memorydb_acl", + "aws_memorydb_cluster", + "aws_memorydb_parameter_group", + "aws_memorydb_snapshot", + "aws_memorydb_subnet_group", + "aws_memorydb_user", + "aws_mq_broker", + "aws_mq_broker_engine_types", + "aws_mq_broker_instance_type_offerings", + "aws_msk_bootstrap_brokers", + "aws_msk_broker_nodes", + "aws_msk_cluster", + "aws_msk_configuration", + "aws_msk_kafka_version", + "aws_msk_vpc_connection", + "aws_mskconnect_connector", + "aws_mskconnect_custom_plugin", + "aws_mskconnect_worker_configuration", + "aws_nat_gateway", + "aws_nat_gateways", + "aws_neptune_engine_version", + "aws_neptune_orderable_db_instance", + "aws_network_acls", + "aws_network_interface", + "aws_network_interfaces", + "aws_networkfirewall_firewall", + "aws_networkfirewall_firewall_policy", + "aws_networkfirewall_resource_policy", + "aws_networkmanager_connection", + "aws_networkmanager_connections", + "aws_networkmanager_core_network_policy_document", + "aws_networkmanager_device", + "aws_networkmanager_devices", + "aws_networkmanager_global_network", + "aws_networkmanager_global_networks", + "aws_networkmanager_link", + "aws_networkmanager_links", + "aws_networkmanager_site", + "aws_networkmanager_sites", + "aws_oam_link", + "aws_oam_links", + "aws_oam_sink", + "aws_oam_sinks", + "aws_odb_cloud_autonomous_vm_cluster", + "aws_odb_cloud_autonomous_vm_clusters", + "aws_odb_cloud_exadata_infrastructure", + "aws_odb_cloud_exadata_infrastructures", + "aws_odb_cloud_vm_cluster", + "aws_odb_cloud_vm_clusters", + "aws_odb_db_node", + "aws_odb_db_nodes", + "aws_odb_db_server", + "aws_odb_db_servers", + "aws_odb_db_system_shapes", + "aws_odb_gi_versions", + "aws_odb_network", + "aws_odb_network_peering_connection", + "aws_odb_network_peering_connections", + "aws_odb_networks", + "aws_opensearch_domain", + "aws_opensearchserverless_access_policy", + "aws_opensearchserverless_collection", + "aws_opensearchserverless_lifecycle_policy", + "aws_opensearchserverless_security_config", + "aws_opensearchserverless_security_policy", + "aws_opensearchserverless_vpc_endpoint", + "aws_organizations_delegated_administrators", + "aws_organizations_delegated_services", + "aws_organizations_organization", + "aws_organizations_organizational_unit", + "aws_organizations_organizational_unit_child_accounts", + "aws_organizations_organizational_unit_descendant_accounts", + "aws_organizations_organizational_unit_descendant_organizational_units", + "aws_organizations_organizational_units", + "aws_organizations_policies", + "aws_organizations_policies_for_target", + "aws_organizations_policy", + "aws_organizations_resource_tags", + "aws_outposts_asset", + "aws_outposts_assets", + "aws_outposts_outpost", + "aws_outposts_outpost_instance_type", + "aws_outposts_outpost_instance_types", + "aws_outposts_outposts", + "aws_outposts_site", + "aws_outposts_sites", + "aws_partition", + "aws_polly_voices", + "aws_prefix_list", + "aws_pricing_product", + "aws_prometheus_default_scraper_configuration", + "aws_prometheus_workspace", + "aws_prometheus_workspaces", + "aws_qldb_ledger", + "aws_quicksight_analysis", + "aws_quicksight_data_set", + "aws_quicksight_group", + "aws_quicksight_theme", + "aws_quicksight_user", + "aws_ram_resource_share", + "aws_rds_certificate", + "aws_rds_cluster", + "aws_rds_cluster_parameter_group", + "aws_rds_clusters", + "aws_rds_engine_version", + "aws_rds_global_cluster", + "aws_rds_orderable_db_instance", + "aws_rds_reserved_instance_offering", + "aws_redshift_cluster", + "aws_redshift_cluster_credentials", + "aws_redshift_data_shares", + "aws_redshift_orderable_cluster", + "aws_redshift_producer_data_shares", + "aws_redshift_subnet_group", + "aws_redshiftserverless_credentials", + "aws_redshiftserverless_namespace", + "aws_redshiftserverless_workgroup", + "aws_region", + "aws_regions", + "aws_resourceexplorer2_search", + "aws_resourcegroupstaggingapi_resources", + "aws_route", + "aws_route53_delegation_set", + "aws_route53_records", + "aws_route53_resolver_endpoint", + "aws_route53_resolver_firewall_config", + "aws_route53_resolver_firewall_domain_list", + "aws_route53_resolver_firewall_rule_group", + "aws_route53_resolver_firewall_rule_group_association", + "aws_route53_resolver_firewall_rules", + "aws_route53_resolver_query_log_config", + "aws_route53_resolver_rule", + "aws_route53_resolver_rules", + "aws_route53_traffic_policy_document", + "aws_route53_zone", + "aws_route53_zones", + "aws_route53profiles_profiles", + "aws_route_table", + "aws_route_tables", + "aws_s3_access_point", + "aws_s3_account_public_access_block", + "aws_s3_bucket", + "aws_s3_bucket_object", + "aws_s3_bucket_objects", + "aws_s3_bucket_policy", + "aws_s3_directory_buckets", + "aws_s3_object", + "aws_s3_objects", + "aws_s3control_multi_region_access_point", + "aws_sagemaker_prebuilt_ecr_image", + "aws_secretsmanager_random_password", + "aws_secretsmanager_secret", + "aws_secretsmanager_secret_rotation", + "aws_secretsmanager_secret_version", + "aws_secretsmanager_secret_versions", + "aws_secretsmanager_secrets", + "aws_security_group", + "aws_security_groups", + "aws_securityhub_standards_control_associations", + "aws_serverlessapplicationrepository_application", + "aws_service", + "aws_service_discovery_dns_namespace", + "aws_service_discovery_http_namespace", + "aws_service_discovery_service", + "aws_service_principal", + "aws_servicecatalog_constraint", + "aws_servicecatalog_launch_paths", + "aws_servicecatalog_portfolio", + "aws_servicecatalog_portfolio_constraints", + "aws_servicecatalog_product", + "aws_servicecatalog_provisioning_artifacts", + "aws_servicecatalogappregistry_application", + "aws_servicecatalogappregistry_attribute_group", + "aws_servicecatalogappregistry_attribute_group_associations", + "aws_servicequotas_service", + "aws_servicequotas_service_quota", + "aws_servicequotas_templates", + "aws_ses_active_receipt_rule_set", + "aws_ses_domain_identity", + "aws_ses_email_identity", + "aws_sesv2_configuration_set", + "aws_sesv2_dedicated_ip_pool", + "aws_sesv2_email_identity", + "aws_sesv2_email_identity_mail_from_attributes", + "aws_sfn_activity", + "aws_sfn_alias", + "aws_sfn_state_machine", + "aws_sfn_state_machine_versions", + "aws_shield_protection", + "aws_signer_signing_job", + "aws_signer_signing_profile", + "aws_sns_topic", + "aws_spot_datafeed_subscription", + "aws_sqs_queue", + "aws_sqs_queues", + "aws_ssm_document", + "aws_ssm_instances", + "aws_ssm_maintenance_windows", + "aws_ssm_parameter", + "aws_ssm_parameters_by_path", + "aws_ssm_patch_baseline", + "aws_ssm_patch_baselines", + "aws_ssmcontacts_contact", + "aws_ssmcontacts_contact_channel", + "aws_ssmcontacts_plan", + "aws_ssmcontacts_rotation", + "aws_ssmincidents_replication_set", + "aws_ssmincidents_response_plan", + "aws_ssoadmin_application", + "aws_ssoadmin_application_assignments", + "aws_ssoadmin_application_providers", + "aws_ssoadmin_instances", + "aws_ssoadmin_permission_set", + "aws_ssoadmin_permission_sets", + "aws_ssoadmin_principal_application_assignments", + "aws_storagegateway_local_disk", + "aws_subnet", + "aws_subnet_ids", + "aws_subnets", + "aws_synthetics_runtime_version", + "aws_synthetics_runtime_versions", + "aws_timestreamwrite_database", + "aws_timestreamwrite_table", + "aws_transfer_connector", + "aws_transfer_server", + "aws_verifiedpermissions_policy_store", + "aws_vpc", + "aws_vpc_dhcp_options", + "aws_vpc_endpoint", + "aws_vpc_endpoint_associations", + "aws_vpc_endpoint_service", + "aws_vpc_ipam", + "aws_vpc_ipam_pool", + "aws_vpc_ipam_pool_cidrs", + "aws_vpc_ipam_pools", + "aws_vpc_ipam_preview_next_cidr", + "aws_vpc_ipams", + "aws_vpc_peering_connection", + "aws_vpc_peering_connections", + "aws_vpc_security_group_rule", + "aws_vpc_security_group_rules", + "aws_vpclattice_auth_policy", + "aws_vpclattice_listener", + "aws_vpclattice_resource_policy", + "aws_vpclattice_service", + "aws_vpclattice_service_network", + "aws_vpcs", + "aws_vpn_connection", + "aws_vpn_gateway", + "aws_waf_ipset", + "aws_waf_rate_based_rule", + "aws_waf_rule", + "aws_waf_subscribed_rule_group", + "aws_waf_web_acl", + "aws_wafregional_ipset", + "aws_wafregional_rate_based_rule", + "aws_wafregional_rule", + "aws_wafregional_subscribed_rule_group", + "aws_wafregional_web_acl", + "aws_wafv2_ip_set", + "aws_wafv2_regex_pattern_set", + "aws_wafv2_rule_group", + "aws_wafv2_web_acl", + "aws_workspaces_bundle", + "aws_workspaces_directory", + "aws_workspaces_image", + "aws_workspaces_workspace" + ] +} \ No newline at end of file diff --git a/src/parse/azurerm-members.json b/src/parse/azurerm-members.json index e993b22a..753b8536 100755 --- a/src/parse/azurerm-members.json +++ b/src/parse/azurerm-members.json @@ -6,6 +6,8 @@ "azurerm_active_directory_domain_service_trust", "azurerm_advanced_threat_protection", "azurerm_advisor_suppression", + "azurerm_ai_foundry", + "azurerm_ai_foundry_project", "azurerm_ai_services", "azurerm_analysis_services_server", "azurerm_api_connection", @@ -53,9 +55,15 @@ "azurerm_api_management_product_policy", "azurerm_api_management_product_tag", "azurerm_api_management_redis_cache", + "azurerm_api_management_standalone_gateway", "azurerm_api_management_subscription", "azurerm_api_management_tag", "azurerm_api_management_user", + "azurerm_api_management_workspace", + "azurerm_api_management_workspace_api_version_set", + "azurerm_api_management_workspace_certificate", + "azurerm_api_management_workspace_policy", + "azurerm_api_management_workspace_policy_fragment", "azurerm_app_configuration", "azurerm_app_configuration_feature", "azurerm_app_configuration_key", @@ -87,11 +95,13 @@ "azurerm_application_insights_workbook_template", "azurerm_application_load_balancer", "azurerm_application_load_balancer_frontend", + "azurerm_application_load_balancer_security_policy", "azurerm_application_load_balancer_subnet_association", "azurerm_application_security_group", "azurerm_arc_kubernetes_cluster", "azurerm_arc_kubernetes_cluster_extension", "azurerm_arc_kubernetes_flux_configuration", + "azurerm_arc_kubernetes_provisioned_cluster", "azurerm_arc_machine", "azurerm_arc_machine_automanage_configuration_assignment", "azurerm_arc_machine_extension", @@ -178,6 +188,7 @@ "azurerm_cognitive_account", "azurerm_cognitive_account_customer_managed_key", "azurerm_cognitive_account_rai_blocklist", + "azurerm_cognitive_account_rai_policy", "azurerm_cognitive_deployment", "azurerm_communication_service", "azurerm_communication_service_email_domain_association", @@ -198,6 +209,7 @@ "azurerm_container_registry", "azurerm_container_registry_agent_pool", "azurerm_container_registry_cache_rule", + "azurerm_container_registry_credential_set", "azurerm_container_registry_scope_map", "azurerm_container_registry_task", "azurerm_container_registry_task_schedule_run_now", @@ -240,6 +252,7 @@ "azurerm_data_factory_credential_service_principal", "azurerm_data_factory_credential_user_managed_identity", "azurerm_data_factory_custom_dataset", + "azurerm_data_factory_customer_managed_key", "azurerm_data_factory_data_flow", "azurerm_data_factory_dataset_azure_blob", "azurerm_data_factory_dataset_azure_sql_table", @@ -298,6 +311,7 @@ "azurerm_data_protection_backup_policy_postgresql", "azurerm_data_protection_backup_policy_postgresql_flexible_server", "azurerm_data_protection_backup_vault", + "azurerm_data_protection_backup_vault_customer_managed_key", "azurerm_data_protection_resource_guard", "azurerm_data_share", "azurerm_data_share_account", @@ -346,16 +360,21 @@ "azurerm_dns_txt_record", "azurerm_dns_zone", "azurerm_dynatrace_monitor", + "azurerm_dynatrace_tag_rules", "azurerm_elastic_cloud_elasticsearch", "azurerm_elastic_san", "azurerm_elastic_san_volume", "azurerm_elastic_san_volume_group", "azurerm_email_communication_service", "azurerm_email_communication_service_domain", + "azurerm_email_communication_service_domain_sender_username", "azurerm_eventgrid_domain", "azurerm_eventgrid_domain_topic", "azurerm_eventgrid_event_subscription", "azurerm_eventgrid_namespace", + "azurerm_eventgrid_partner_configuration", + "azurerm_eventgrid_partner_namespace", + "azurerm_eventgrid_partner_registration", "azurerm_eventgrid_system_topic", "azurerm_eventgrid_system_topic_event_subscription", "azurerm_eventgrid_topic", @@ -393,6 +412,7 @@ "azurerm_function_app", "azurerm_function_app_active_slot", "azurerm_function_app_connection", + "azurerm_function_app_flex_consumption", "azurerm_function_app_function", "azurerm_function_app_hybrid_connection", "azurerm_function_app_slot", @@ -534,6 +554,7 @@ "azurerm_machine_learning_workspace", "azurerm_machine_learning_workspace_network_outbound_rule_fqdn", "azurerm_machine_learning_workspace_network_outbound_rule_private_endpoint", + "azurerm_machine_learning_workspace_network_outbound_rule_service_tag", "azurerm_maintenance_assignment_dedicated_host", "azurerm_maintenance_assignment_dynamic_scope", "azurerm_maintenance_assignment_virtual_machine", @@ -544,10 +565,13 @@ "azurerm_managed_disk", "azurerm_managed_disk_sas_token", "azurerm_managed_lustre_file_system", + "azurerm_managed_redis", + "azurerm_managed_redis_geo_replication", "azurerm_management_group", "azurerm_management_group_policy_assignment", "azurerm_management_group_policy_exemption", "azurerm_management_group_policy_remediation", + "azurerm_management_group_policy_set_definition", "azurerm_management_group_subscription_association", "azurerm_management_group_template_deployment", "azurerm_management_lock", @@ -569,6 +593,7 @@ "azurerm_mobile_network_site", "azurerm_mobile_network_slice", "azurerm_mongo_cluster", + "azurerm_mongo_cluster_firewall_rule", "azurerm_monitor_aad_diagnostic_setting", "azurerm_monitor_action_group", "azurerm_monitor_activity_log_alert", @@ -594,13 +619,18 @@ "azurerm_mssql_elasticpool", "azurerm_mssql_failover_group", "azurerm_mssql_firewall_rule", + "azurerm_mssql_job", "azurerm_mssql_job_agent", "azurerm_mssql_job_credential", + "azurerm_mssql_job_schedule", + "azurerm_mssql_job_step", + "azurerm_mssql_job_target_group", "azurerm_mssql_managed_database", "azurerm_mssql_managed_instance", "azurerm_mssql_managed_instance_active_directory_administrator", "azurerm_mssql_managed_instance_failover_group", "azurerm_mssql_managed_instance_security_alert_policy", + "azurerm_mssql_managed_instance_start_stop_schedule", "azurerm_mssql_managed_instance_transparent_data_encryption", "azurerm_mssql_managed_instance_vulnerability_assessment", "azurerm_mssql_outbound_firewall_rule", @@ -631,6 +661,7 @@ "azurerm_netapp_snapshot", "azurerm_netapp_snapshot_policy", "azurerm_netapp_volume", + "azurerm_netapp_volume_group_oracle", "azurerm_netapp_volume_group_sap_hana", "azurerm_netapp_volume_quota_rule", "azurerm_network_connection_monitor", @@ -648,12 +679,19 @@ "azurerm_network_manager_admin_rule_collection", "azurerm_network_manager_connectivity_configuration", "azurerm_network_manager_deployment", + "azurerm_network_manager_ipam_pool", + "azurerm_network_manager_ipam_pool_static_cidr", "azurerm_network_manager_management_group_connection", "azurerm_network_manager_network_group", + "azurerm_network_manager_routing_configuration", + "azurerm_network_manager_routing_rule", + "azurerm_network_manager_routing_rule_collection", "azurerm_network_manager_scope_connection", "azurerm_network_manager_security_admin_configuration", "azurerm_network_manager_static_member", "azurerm_network_manager_subscription_connection", + "azurerm_network_manager_verifier_workspace", + "azurerm_network_manager_verifier_workspace_reachability_analysis_intent", "azurerm_network_profile", "azurerm_network_security_group", "azurerm_network_security_rule", @@ -661,6 +699,7 @@ "azurerm_network_watcher_flow_log", "azurerm_new_relic_monitor", "azurerm_new_relic_tag_rule", + "azurerm_nginx_api_key", "azurerm_nginx_certificate", "azurerm_nginx_configuration", "azurerm_nginx_deployment", @@ -668,8 +707,13 @@ "azurerm_notification_hub_authorization_rule", "azurerm_notification_hub_namespace", "azurerm_oracle_autonomous_database", + "azurerm_oracle_autonomous_database_backup", + "azurerm_oracle_autonomous_database_clone_from_backup", + "azurerm_oracle_autonomous_database_clone_from_database", "azurerm_oracle_cloud_vm_cluster", "azurerm_oracle_exadata_infrastructure", + "azurerm_oracle_exascale_database_storage_vault", + "azurerm_oracle_resource_anchor", "azurerm_orbital_contact", "azurerm_orbital_contact_profile", "azurerm_orbital_spacecraft", @@ -700,6 +744,7 @@ "azurerm_postgresql_firewall_rule", "azurerm_postgresql_flexible_server", "azurerm_postgresql_flexible_server_active_directory_administrator", + "azurerm_postgresql_flexible_server_backup", "azurerm_postgresql_flexible_server_configuration", "azurerm_postgresql_flexible_server_database", "azurerm_postgresql_flexible_server_firewall_rule", @@ -731,6 +776,7 @@ "azurerm_public_ip", "azurerm_public_ip_prefix", "azurerm_purview_account", + "azurerm_qumulo_file_system", "azurerm_recovery_services_vault", "azurerm_recovery_services_vault_resource_guard_association", "azurerm_redhat_openshift_cluster", @@ -819,6 +865,7 @@ "azurerm_service_plan", "azurerm_servicebus_namespace", "azurerm_servicebus_namespace_authorization_rule", + "azurerm_servicebus_namespace_customer_managed_key", "azurerm_servicebus_namespace_disaster_recovery_config", "azurerm_servicebus_queue", "azurerm_servicebus_queue_authorization_rule", @@ -850,7 +897,6 @@ "azurerm_site_recovery_vmware_replication_policy_association", "azurerm_snapshot", "azurerm_source_control_token", - "azurerm_spatial_anchors_account", "azurerm_spring_cloud_accelerator", "azurerm_spring_cloud_active_deployment", "azurerm_spring_cloud_api_portal", @@ -881,7 +927,6 @@ "azurerm_spring_cloud_new_relic_application_performance_monitoring", "azurerm_spring_cloud_service", "azurerm_spring_cloud_storage", - "azurerm_sql_database", "azurerm_sql_firewall_rule", "azurerm_sql_server", "azurerm_sql_virtual_network_rule", @@ -935,6 +980,7 @@ "azurerm_stream_analytics_function_javascript_udf", "azurerm_stream_analytics_job", "azurerm_stream_analytics_job_schedule", + "azurerm_stream_analytics_job_storage_account", "azurerm_stream_analytics_managed_private_endpoint", "azurerm_stream_analytics_output_blob", "azurerm_stream_analytics_output_cosmosdb", @@ -989,6 +1035,8 @@ "azurerm_system_center_virtual_machine_manager_availability_set", "azurerm_system_center_virtual_machine_manager_cloud", "azurerm_system_center_virtual_machine_manager_server", + "azurerm_system_center_virtual_machine_manager_virtual_machine_instance", + "azurerm_system_center_virtual_machine_manager_virtual_machine_instance_guest_agent", "azurerm_system_center_virtual_machine_manager_virtual_machine_template", "azurerm_system_center_virtual_machine_manager_virtual_network", "azurerm_tenant_template_deployment", @@ -1028,6 +1076,7 @@ "azurerm_virtual_machine_scale_set", "azurerm_virtual_machine_scale_set_extension", "azurerm_virtual_machine_scale_set_packet_capture", + "azurerm_virtual_machine_scale_set_standby_pool", "azurerm_virtual_network", "azurerm_virtual_network_dns_servers", "azurerm_virtual_network_gateway", @@ -1056,6 +1105,7 @@ "azurerm_web_pubsub_network_acl", "azurerm_web_pubsub_service", "azurerm_web_pubsub_shared_private_link_resource", + "azurerm_web_pubsub_socketio", "azurerm_windows_function_app", "azurerm_windows_function_app_slot", "azurerm_windows_virtual_machine", @@ -1070,6 +1120,7 @@ "azurerm_aadb2c_directory", "azurerm_active_directory_domain_service", "azurerm_advisor_recommendations", + "azurerm_api_connection", "azurerm_api_management", "azurerm_api_management_api", "azurerm_api_management_api_version_set", @@ -1077,6 +1128,7 @@ "azurerm_api_management_gateway_host_name_configuration", "azurerm_api_management_group", "azurerm_api_management_product", + "azurerm_api_management_subscription", "azurerm_api_management_user", "azurerm_app_configuration", "azurerm_app_configuration_key", @@ -1091,7 +1143,7 @@ "azurerm_application_security_group", "azurerm_arc_machine", "azurerm_arc_resource_bridge_appliance", - "azurerm_attestation", + "azurerm_attestation_provider", "azurerm_automation_account", "azurerm_automation_runbook", "azurerm_automation_variable_bool", @@ -1128,8 +1180,8 @@ "azurerm_consumption_budget_resource_group", "azurerm_consumption_budget_subscription", "azurerm_container_app", - "azurerm_container_app_environment.", - "azurerm_container_app_environment_certificate.", + "azurerm_container_app_environment", + "azurerm_container_app_environment_certificate", "azurerm_container_app_environment_dapr_component.", "azurerm_container_group", "azurerm_container_registry", @@ -1140,6 +1192,7 @@ "azurerm_cosmosdb_mongo_database", "azurerm_cosmosdb_restorable_database_accounts", "azurerm_cosmosdb_sql_database", + "azurerm_cosmosdb_sql_role_definition", "azurerm_dashboard_grafana", "azurerm_data_factory", "azurerm_data_factory_trigger_schedule", @@ -1155,11 +1208,22 @@ "azurerm_data_share_dataset_kusto_database", "azurerm_database_migration_project", "azurerm_database_migration_service", + "azurerm_databox_edge_device", "azurerm_databricks_access_connector", "azurerm_databricks_workspace", "azurerm_databricks_workspace_private_endpoint_connection", "azurerm_dedicated_host", "azurerm_dedicated_host_group", + "azurerm_dev_center", + "azurerm_dev_center_attached_network", + "azurerm_dev_center_catalog", + "azurerm_dev_center_dev_box_definition", + "azurerm_dev_center_environment_type", + "azurerm_dev_center_gallery", + "azurerm_dev_center_network_connection", + "azurerm_dev_center_project", + "azurerm_dev_center_project_environment_type", + "azurerm_dev_center_project_pool", "azurerm_digital_twins_instance", "azurerm_disk_access", "azurerm_disk_encryption_set", @@ -1174,15 +1238,19 @@ "azurerm_dns_srv_record", "azurerm_dns_txt_record", "azurerm_dns_zone", + "azurerm_dynatrace_monitor", "azurerm_elastic_cloud_elasticsearch", "azurerm_elastic_san", "azurerm_elastic_san_volume_group", "azurerm_elastic_san_volume_snapshot", "azurerm_eventgrid_domain", "azurerm_eventgrid_domain_topic", + "azurerm_eventgrid_partner_namespace", + "azurerm_eventgrid_partner_registration", "azurerm_eventgrid_system_topic", "azurerm_eventgrid_topic", "azurerm_eventhub", + "azurerm_eventhub_authorization_rule", "azurerm_eventhub_cluster", "azurerm_eventhub_consumer_group", "azurerm_eventhub_namespace", @@ -1190,11 +1258,13 @@ "azurerm_eventhub_sas", "azurerm_express_route_circuit", "azurerm_express_route_circuit_peering", + "azurerm_extended_location_custom_location", "azurerm_extended_locations", "azurerm_firewall", "azurerm_firewall_policy", "azurerm_function_app", "azurerm_function_app_host_keys", + "azurerm_graph_services_account", "azurerm_hdinsight_cluster", "azurerm_healthcare_dicom_service", "azurerm_healthcare_fhir_service", @@ -1238,6 +1308,7 @@ "azurerm_local_network_gateway", "azurerm_location", "azurerm_log_analytics_workspace", + "azurerm_log_analytics_workspace_table", "azurerm_logic_app_integration_account", "azurerm_logic_app_standard", "azurerm_logic_app_workflow", @@ -1246,9 +1317,23 @@ "azurerm_managed_api", "azurerm_managed_application_definition", "azurerm_managed_disk", + "azurerm_managed_disks", + "azurerm_managed_redis", "azurerm_management_group", "azurerm_management_group_template_deployment", "azurerm_maps_account", + "azurerm_marketplace_agreement", + "azurerm_mobile_network", + "azurerm_mobile_network_attached_data_network", + "azurerm_mobile_network_data_network", + "azurerm_mobile_network_packet_core_control_plane", + "azurerm_mobile_network_packet_core_data_plane", + "azurerm_mobile_network_service", + "azurerm_mobile_network_sim", + "azurerm_mobile_network_sim_group", + "azurerm_mobile_network_sim_policy", + "azurerm_mobile_network_site", + "azurerm_mobile_network_slice", "azurerm_monitor_action_group", "azurerm_monitor_data_collection_endpoint", "azurerm_monitor_data_collection_rule", @@ -1258,24 +1343,33 @@ "azurerm_monitor_workspace", "azurerm_mssql_database", "azurerm_mssql_elasticpool", + "azurerm_mssql_failover_group", "azurerm_mssql_managed_database", "azurerm_mssql_managed_instance", "azurerm_mssql_server", + "azurerm_mysql_flexible_server", "azurerm_nat_gateway", "azurerm_netapp_account", "azurerm_netapp_account_encryption", + "azurerm_netapp_backup_policy", + "azurerm_netapp_backup_vault", "azurerm_netapp_pool", "azurerm_netapp_snapshot", "azurerm_netapp_snapshot_policy", "azurerm_netapp_volume", + "azurerm_netapp_volume_group_oracle", "azurerm_netapp_volume_group_sap_hana", "azurerm_netapp_volume_quota_rule", "azurerm_network_ddos_protection_plan", "azurerm_network_interface", + "azurerm_network_manager", "azurerm_network_manager_connectivity_configuration", + "azurerm_network_manager_ipam_pool", + "azurerm_network_manager_network_group", "azurerm_network_security_group", "azurerm_network_service_tags", "azurerm_network_watcher", + "azurerm_nginx_api_key", "azurerm_nginx_certificate", "azurerm_nginx_configuration", "azurerm_nginx_deployment", @@ -1284,13 +1378,20 @@ "azurerm_oracle_adbs_character_sets", "azurerm_oracle_adbs_national_character_sets", "azurerm_oracle_autonomous_database", + "azurerm_oracle_autonomous_database_backup", + "azurerm_oracle_autonomous_database_backups", + "azurerm_oracle_autonomous_database_clone_from_backup", + "azurerm_oracle_autonomous_database_clone_from_database", "azurerm_oracle_cloud_vm_cluster", "azurerm_oracle_db_nodes", "azurerm_oracle_db_servers", "azurerm_oracle_db_system_shapes", "azurerm_oracle_exadata_infrastructure", + "azurerm_oracle_exascale_database_storage_vault", "azurerm_oracle_gi_versions", + "azurerm_oracle_resource_anchor", "azurerm_orchestrated_virtual_machine_scale_set", + "azurerm_palo_alto_local_rulestack", "azurerm_platform_image", "azurerm_policy_assignment", "azurerm_policy_definition", @@ -1330,16 +1431,19 @@ "azurerm_resource_group", "azurerm_resource_group_template_deployment", "azurerm_resources", + "azurerm_role_assignments", "azurerm_role_definition", "azurerm_role_management_policy", "azurerm_route_filter", "azurerm_route_table", + "azurerm_search_service", "azurerm_sentinel_alert_rule", "azurerm_sentinel_alert_rule_anomaly", "azurerm_sentinel_alert_rule_template", "azurerm_service_plan", "azurerm_servicebus_namespace", "azurerm_servicebus_namespace_authorization_rule", + "azurerm_servicebus_namespace_disaster_recovery_config", "azurerm_servicebus_queue", "azurerm_servicebus_queue_authorization_rule", "azurerm_servicebus_subscription", @@ -1353,12 +1457,14 @@ "azurerm_site_recovery_fabric", "azurerm_site_recovery_protection_container", "azurerm_site_recovery_replication_policy", + "azurerm_site_recovery_replication_recovery_plan", "azurerm_snapshot", "azurerm_source_control_token", "azurerm_spring_cloud_app", "azurerm_spring_cloud_service", "azurerm_ssh_public_key", "azurerm_stack_hci_cluster", + "azurerm_stack_hci_storage_path", "azurerm_static_web_app", "azurerm_storage_account", "azurerm_storage_account_blob_container_sas", @@ -1373,6 +1479,7 @@ "azurerm_storage_sync", "azurerm_storage_sync_group", "azurerm_storage_table", + "azurerm_storage_table_entities", "azurerm_storage_table_entity", "azurerm_stream_analytics_job", "azurerm_subnet", @@ -1385,6 +1492,7 @@ "azurerm_tenant_template_deployment", "azurerm_traffic_manager_geographical_location", "azurerm_traffic_manager_profile", + "azurerm_trusted_signing_account", "azurerm_user_assigned_identity", "azurerm_virtual_desktop_application_group", "azurerm_virtual_desktop_host_pool", @@ -1406,8 +1514,6 @@ "azurerm_web_pubsub", "azurerm_web_pubsub_private_link_resource", "azurerm_windows_function_app", - "azurerm_windows_web_app", - "netapp_backup_policy", - "netapp_backup_vault" + "azurerm_windows_web_app" ] } \ No newline at end of file diff --git a/src/parse/google-members.json b/src/parse/google-members.json index 2146bc0f..ec006955 100755 --- a/src/parse/google-members.json +++ b/src/parse/google-members.json @@ -1,1365 +1,1664 @@ { - "dataSources": [ - "google_access_approval_folder_service_account", - "google_access_approval_organization_service_account", - "google_access_approval_project_service_account", - "google_access_context_manager_access_policy", - "google_access_context_manager_access_policy_iam_policy", - "google_active_folder", - "google_alloydb_locations", - "google_alloydb_supported_database_flags", - "google_api_gateway_api_config_iam_policy", - "google_api_gateway_api_iam_policy", - "google_api_gateway_gateway_iam_policy", - "google_apigee_environment_iam_policy", - "google_app_engine_default_service_account", - "google_apphub_application", - "google_apphub_discovered_service", - "google_apphub_discovered_workload", - "google_artifact_registry_docker_image", - "google_artifact_registry_locations", - "google_artifact_registry_repository", - "google_artifact_registry_repository_iam_policy", - "google_backup_dr_backup", - "google_backup_dr_backup_plan_association", - "google_backup_dr_backup_vault", - "google_backup_dr_data_source", - "google_beyondcorp_app_connection", - "google_beyondcorp_app_connector", - "google_beyondcorp_app_gateway", - "google_bigquery_analytics_hub_data_exchange_iam_policy", - "google_bigquery_analytics_hub_listing_iam_policy", - "google_bigquery_connection_iam_policy", - "google_bigquery_datapolicy_data_policy_iam_policy", - "google_bigquery_dataset", - "google_bigquery_dataset_iam_policy", - "google_bigquery_default_service_account", - "google_bigquery_table_iam_policy", - "google_bigquery_tables", - "google_bigtable_instance_iam_policy", - "google_bigtable_table_iam_policy", - "google_billing_account", - "google_billing_account_iam_policy", - "google_binary_authorization_attestor_iam_policy", - "google_certificate_manager_certificate_map", - "google_certificate_manager_certificates", - "google_client_config", - "google_client_openid_userinfo", - "google_cloud_identity_group_lookup", - "google_cloud_identity_group_memberships", - "google_cloud_identity_group_transitive_memberships", - "google_cloud_identity_groups", - "google_cloud_quotas_quota_info", - "google_cloud_quotas_quota_infos", - "google_cloud_run_locations", - "google_cloud_run_service", - "google_cloud_run_service_iam_policy", - "google_cloud_run_v2_job", - "google_cloud_run_v2_job_iam_policy", - "google_cloud_run_v2_service", - "google_cloud_run_v2_service_iam_policy", - "google_cloud_tasks_queue_iam_policy", - "google_cloudbuild_trigger", - "google_cloudbuildv2_connection_iam_policy", - "google_clouddeploy_custom_target_type_iam_policy", - "google_clouddeploy_delivery_pipeline_iam_policy", - "google_clouddeploy_target_iam_policy", - "google_cloudfunctions2_function", - "google_cloudfunctions2_function_iam_policy", - "google_cloudfunctions_function", - "google_cloudfunctions_function_iam_policy", - "google_composer_environment", - "google_composer_image_versions", - "google_composer_user_workloads_config_map", - "google_composer_user_workloads_secret", - "google_compute_address", - "google_compute_addresses", - "google_compute_backend_bucket", - "google_compute_backend_bucket_iam_policy", - "google_compute_backend_service", - "google_compute_backend_service_iam_policy", - "google_compute_default_service_account", - "google_compute_disk", - "google_compute_disk_iam_policy", - "google_compute_forwarding_rule", - "google_compute_forwarding_rules", - "google_compute_global_address", - "google_compute_global_forwarding_rule", - "google_compute_ha_vpn_gateway", - "google_compute_health_check", - "google_compute_image", - "google_compute_image_iam_policy", - "google_compute_instance", - "google_compute_instance_group", - "google_compute_instance_group_manager", - "google_compute_instance_guest_attributes", - "google_compute_instance_iam_policy", - "google_compute_instance_serial_port", - "google_compute_instance_template", - "google_compute_lb_ip_ranges", - "google_compute_machine_image_iam_policy", - "google_compute_machine_types", - "google_compute_network", - "google_compute_network_endpoint_group", - "google_compute_network_peering", - "google_compute_networks", - "google_compute_node_types", - "google_compute_region_backend_service_iam_policy", - "google_compute_region_disk", - "google_compute_region_disk_iam_policy", - "google_compute_region_instance_group", - "google_compute_region_instance_group_manager", - "google_compute_region_instance_template", - "google_compute_region_network_endpoint_group", - "google_compute_region_ssl_certificate", - "google_compute_regions", - "google_compute_reservation", - "google_compute_resource_policy", - "google_compute_router", - "google_compute_router_nat", - "google_compute_router_status", - "google_compute_security_policy", - "google_compute_snapshot", - "google_compute_snapshot_iam_policy", - "google_compute_ssl_certificate", - "google_compute_ssl_policy", - "google_compute_subnetwork", - "google_compute_subnetwork_iam_policy", - "google_compute_subnetworks", - "google_compute_vpn_gateway", - "google_compute_zones", - "google_container_analysis_note_iam_policy", - "google_container_attached_install_manifest", - "google_container_attached_versions", - "google_container_aws_versions", - "google_container_azure_versions", - "google_container_cluster", - "google_container_engine_versions", - "google_container_registry_image", - "google_container_registry_repository", - "google_data_catalog_entry_group_iam_policy", - "google_data_catalog_policy_tag_iam_policy", - "google_data_catalog_tag_template_iam_policy", - "google_data_catalog_taxonomy_iam_policy", - "google_data_fusion_instance_iam_policy", - "google_dataform_repository_iam_policy", - "google_dataplex_aspect_type_iam_policy", - "google_dataplex_asset_iam_policy", - "google_dataplex_datascan_iam_policy", - "google_dataplex_entry_group_iam_policy", - "google_dataplex_entry_type_iam_policy", - "google_dataplex_lake_iam_policy", - "google_dataplex_task_iam_policy", - "google_dataplex_zone_iam_policy", - "google_dataproc_autoscaling_policy_iam_policy", - "google_dataproc_cluster_iam_policy", - "google_dataproc_job_iam_policy", - "google_dataproc_metastore_federation_iam_policy", - "google_dataproc_metastore_service", - "google_dataproc_metastore_service_iam_policy", - "google_datastream_static_ips", - "google_dns_keys", - "google_dns_managed_zone", - "google_dns_managed_zone_iam_policy", - "google_dns_managed_zones", - "google_dns_record_set", - "google_endpoints_service_consumers_iam_policy", - "google_endpoints_service_iam_policy", - "google_filestore_instance", - "google_firebase_web_app_config", - "google_folder", - "google_folder_iam_policy", - "google_folder_organization_policy", - "google_folders", - "google_gemini_repository_group_iam_policy", - "google_gke_backup_backup_plan_iam_policy", - "google_gke_backup_restore_plan_iam_policy", - "google_gke_hub_feature_iam_policy", - "google_gke_hub_membership_iam_policy", - "google_gke_hub_scope_iam_policy", - "google_healthcare_consent_store_iam_policy", - "google_healthcare_dataset_iam_policy", - "google_healthcare_dicom_store_iam_policy", - "google_healthcare_fhir_store_iam_policy", - "google_healthcare_hl7_v2_store_iam_policy", - "google_iam_policy", - "google_iam_role", - "google_iam_workload_identity_pool", - "google_iam_workload_identity_pool_provider", - "google_iap_app_engine_service_iam_policy", - "google_iap_app_engine_version_iam_policy", - "google_iap_client", - "google_iap_tunnel_dest_group_iam_policy", - "google_iap_tunnel_iam_policy", - "google_iap_tunnel_instance_iam_policy", - "google_iap_web_backend_service_iam_policy", - "google_iap_web_iam_policy", - "google_iap_web_region_backend_service_iam_policy", - "google_iap_web_type_app_engine_iam_policy", - "google_iap_web_type_compute_iam_policy", - "google_kms_autokey_config", - "google_kms_crypto_key", - "google_kms_crypto_key_iam_policy", - "google_kms_crypto_key_latest_version", - "google_kms_crypto_key_version", - "google_kms_crypto_key_versions", - "google_kms_crypto_keys", - "google_kms_ekm_connection_iam_policy", - "google_kms_key_handle", - "google_kms_key_ring", - "google_kms_key_ring_iam_policy", - "google_kms_key_rings", - "google_kms_secret", - "google_kms_secret_asymmetric", - "google_kms_secret_ciphertext", - "google_logging_folder_settings", - "google_logging_log_view_iam_policy", - "google_logging_organization_settings", - "google_logging_project_cmek_settings", - "google_logging_project_settings", - "google_monitoring_app_engine_service", - "google_monitoring_cluster_istio_service", - "google_monitoring_istio_canonical_service", - "google_monitoring_mesh_istio_service", - "google_monitoring_notification_channel", - "google_monitoring_uptime_check_ips", - "google_netblock_ip_ranges", - "google_network_security_address_group_iam_policy", - "google_notebooks_instance_iam_policy", - "google_notebooks_runtime_iam_policy", - "google_oracle_database_autonomous_database", - "google_oracle_database_autonomous_databases", - "google_oracle_database_cloud_exadata_infrastructure", - "google_oracle_database_cloud_exadata_infrastructures", - "google_oracle_database_cloud_vm_cluster", - "google_oracle_database_cloud_vm_clusters", - "google_oracle_database_db_nodes", - "google_oracle_database_db_servers", - "google_organization", - "google_organization_iam_policy", - "google_privateca_ca_pool_iam_policy", - "google_privateca_certificate_authority", - "google_privateca_certificate_template_iam_policy", - "google_privileged_access_manager_entitlement", - "google_project", - "google_project_iam_policy", - "google_project_organization_policy", - "google_project_service", - "google_projects", - "google_pubsub_schema_iam_policy", - "google_pubsub_subscription", - "google_pubsub_subscription_iam_policy", - "google_pubsub_topic", - "google_pubsub_topic_iam_policy", - "google_redis_instance", - "google_runtimeconfig_config", - "google_runtimeconfig_config_iam_policy", - "google_runtimeconfig_variable", - "google_scc_source_iam_policy", - "google_scc_v2_organization_source_iam_policy", - "google_secret_manager_regional_secret", - "google_secret_manager_regional_secret_iam_policy", - "google_secret_manager_regional_secret_version", - "google_secret_manager_regional_secret_version_access", - "google_secret_manager_regional_secrets", - "google_secret_manager_secret", - "google_secret_manager_secret_iam_policy", - "google_secret_manager_secret_version", - "google_secret_manager_secret_version_access", - "google_secret_manager_secrets", - "google_secure_source_manager_instance_iam_policy", - "google_secure_source_manager_repository_iam_policy", - "google_service_account", - "google_service_account_access_token", - "google_service_account_iam_policy", - "google_service_account_id_token", - "google_service_account_jwt", - "google_service_account_key", - "google_service_accounts", - "google_service_directory_namespace_iam_policy", - "google_service_directory_service_iam_policy", - "google_site_verification_token", - "google_sourcerepo_repository", - "google_sourcerepo_repository_iam_policy", - "google_spanner_database", - "google_spanner_database_iam_policy", - "google_spanner_instance", - "google_spanner_instance_iam_policy", - "google_sql_backup_run", - "google_sql_ca_certs", - "google_sql_database", - "google_sql_database_instance", - "google_sql_database_instance_latest_recovery_time", - "google_sql_database_instances", - "google_sql_databases", - "google_sql_tiers", - "google_storage_bucket", - "google_storage_bucket_iam_policy", - "google_storage_bucket_object", - "google_storage_bucket_object_content", - "google_storage_bucket_objects", - "google_storage_buckets", - "google_storage_object_signed_url", - "google_storage_project_service_account", - "google_storage_transfer_project_service_account", - "google_tags_tag_key", - "google_tags_tag_key_iam_policy", - "google_tags_tag_keys", - "google_tags_tag_value", - "google_tags_tag_value_iam_policy", - "google_tags_tag_values", - "google_tpu_tensorflow_versions", - "google_tpu_v2_accelerator_types", - "google_tpu_v2_runtime_versions", - "google_vertex_ai_endpoint_iam_policy", - "google_vertex_ai_featurestore_entitytype_iam_policy", - "google_vertex_ai_featurestore_iam_policy", - "google_vmwareengine_cluster", - "google_vmwareengine_external_access_rule", - "google_vmwareengine_external_address", - "google_vmwareengine_network", - "google_vmwareengine_network_peering", - "google_vmwareengine_network_policy", - "google_vmwareengine_nsx_credentials", - "google_vmwareengine_private_cloud", - "google_vmwareengine_subnet", - "google_vmwareengine_vcenter_credentials", - "google_vpc_access_connector", - "google_workbench_instance_iam_policy", - "google_workstations_workstation_config_iam_policy", - "google_workstations_workstation_iam_policy" - ], - "resources": [ - "google_access_context_manager_access_level", - "google_access_context_manager_access_level_condition", - "google_access_context_manager_access_levels", - "google_access_context_manager_access_policy", - "google_access_context_manager_access_policy_iam_binding", - "google_access_context_manager_access_policy_iam_member", - "google_access_context_manager_access_policy_iam_policy", - "google_access_context_manager_authorized_orgs_desc", - "google_access_context_manager_gcp_user_access_binding", - "google_access_context_manager_service_perimeter", - "google_access_context_manager_service_perimeter_dry_run_egress_policy", - "google_access_context_manager_service_perimeter_dry_run_ingress_policy", - "google_access_context_manager_service_perimeter_dry_run_resource", - "google_access_context_manager_service_perimeter_egress_policy", - "google_access_context_manager_service_perimeter_ingress_policy", - "google_access_context_manager_service_perimeter_resource", - "google_access_context_manager_service_perimeters", - "google_active_directory_domain", - "google_active_directory_domain_trust", - "google_active_directory_peering", - "google_alloydb_backup", - "google_alloydb_cluster", - "google_alloydb_instance", - "google_alloydb_user", - "google_api_gateway_api", - "google_api_gateway_api_config", - "google_api_gateway_api_config_iam_binding", - "google_api_gateway_api_config_iam_member", - "google_api_gateway_api_config_iam_policy", - "google_api_gateway_api_iam_binding", - "google_api_gateway_api_iam_member", - "google_api_gateway_api_iam_policy", - "google_api_gateway_gateway", - "google_api_gateway_gateway_iam_binding", - "google_api_gateway_gateway_iam_member", - "google_api_gateway_gateway_iam_policy", - "google_apigee_addons_config", - "google_apigee_app_group", - "google_apigee_developer", - "google_apigee_endpoint_attachment", - "google_apigee_env_keystore", - "google_apigee_envgroup", - "google_apigee_envgroup_attachment", - "google_apigee_environment", - "google_apigee_environment_iam_binding", - "google_apigee_environment_iam_member", - "google_apigee_environment_iam_policy", - "google_apigee_environment_keyvaluemaps", - "google_apigee_environment_keyvaluemaps_entries", - "google_apigee_instance", - "google_apigee_instance_attachment", - "google_apigee_keystores_aliases_self_signed_cert", - "google_apigee_nat_address", - "google_apigee_organization", - "google_apigee_sharedflow", - "google_apigee_sync_authorization", - "google_apigee_target_server", - "google_apikeys_key", - "google_app_engine_application", - "google_app_engine_application_url_dispatch_rules", - "google_app_engine_domain_mapping", - "google_app_engine_firewall_rule", - "google_app_engine_flexible_app_version", - "google_app_engine_service_network_settings", - "google_app_engine_service_split_traffic", - "google_app_engine_standard_app_version", - "google_apphub_application", - "google_apphub_service", - "google_apphub_service_project_attachment", - "google_apphub_workload", - "google_artifact_registry_repository", - "google_artifact_registry_repository_iam_binding", - "google_artifact_registry_repository_iam_member", - "google_artifact_registry_repository_iam_policy", - "google_artifact_registry_vpcsc_config", - "google_assured_workloads_workload", - "google_backup_dr_backup_plan", - "google_backup_dr_backup_plan_association", - "google_backup_dr_backup_vault", - "google_backup_dr_management_server", - "google_beyondcorp_app_connection", - "google_beyondcorp_app_connector", - "google_beyondcorp_app_gateway", - "google_biglake_catalog", - "google_biglake_database", - "google_biglake_table", - "google_bigquery_analytics_hub_data_exchange", - "google_bigquery_analytics_hub_data_exchange_iam_binding", - "google_bigquery_analytics_hub_data_exchange_iam_member", - "google_bigquery_analytics_hub_data_exchange_iam_policy", - "google_bigquery_analytics_hub_listing", - "google_bigquery_analytics_hub_listing_iam_binding", - "google_bigquery_analytics_hub_listing_iam_member", - "google_bigquery_analytics_hub_listing_iam_policy", - "google_bigquery_bi_reservation", - "google_bigquery_capacity_commitment", - "google_bigquery_connection", - "google_bigquery_connection_iam_binding", - "google_bigquery_connection_iam_member", - "google_bigquery_connection_iam_policy", - "google_bigquery_data_transfer_config", - "google_bigquery_datapolicy_data_policy", - "google_bigquery_datapolicy_data_policy_iam_binding", - "google_bigquery_datapolicy_data_policy_iam_member", - "google_bigquery_datapolicy_data_policy_iam_policy", - "google_bigquery_dataset", - "google_bigquery_dataset_access", - "google_bigquery_dataset_iam_binding", - "google_bigquery_dataset_iam_member", - "google_bigquery_dataset_iam_policy", - "google_bigquery_job", - "google_bigquery_reservation", - "google_bigquery_reservation_assignment", - "google_bigquery_routine", - "google_bigquery_table", - "google_bigquery_table_iam_binding", - "google_bigquery_table_iam_member", - "google_bigquery_table_iam_policy", - "google_bigtable_app_profile", - "google_bigtable_authorized_view", - "google_bigtable_gc_policy", - "google_bigtable_instance", - "google_bigtable_instance_iam_binding", - "google_bigtable_instance_iam_member", - "google_bigtable_instance_iam_policy", - "google_bigtable_table", - "google_bigtable_table_iam_binding", - "google_bigtable_table_iam_member", - "google_bigtable_table_iam_policy", - "google_billing_account_iam_binding", - "google_billing_account_iam_member", - "google_billing_account_iam_policy", - "google_billing_budget", - "google_billing_project_info", - "google_billing_subaccount", - "google_binary_authorization_attestor", - "google_binary_authorization_attestor_iam_binding", - "google_binary_authorization_attestor_iam_member", - "google_binary_authorization_attestor_iam_policy", - "google_binary_authorization_policy", - "google_blockchain_node_engine_blockchain_nodes", - "google_certificate_manager_certificate", - "google_certificate_manager_certificate_issuance_config", - "google_certificate_manager_certificate_map", - "google_certificate_manager_certificate_map_entry", - "google_certificate_manager_dns_authorization", - "google_certificate_manager_trust_config", - "google_chronicle_watchlist", - "google_cloud_asset_folder_feed", - "google_cloud_asset_organization_feed", - "google_cloud_asset_project_feed", - "google_cloud_identity_group", - "google_cloud_identity_group_membership", - "google_cloud_ids_endpoint", - "google_cloud_quotas_quota_preference", - "google_cloud_run_domain_mapping", - "google_cloud_run_service", - "google_cloud_run_service_iam_binding", - "google_cloud_run_service_iam_member", - "google_cloud_run_service_iam_policy", - "google_cloud_run_v2_job", - "google_cloud_run_v2_job_iam_binding", - "google_cloud_run_v2_job_iam_member", - "google_cloud_run_v2_job_iam_policy", - "google_cloud_run_v2_service", - "google_cloud_run_v2_service_iam_binding", - "google_cloud_run_v2_service_iam_member", - "google_cloud_run_v2_service_iam_policy", - "google_cloud_scheduler_job", - "google_cloud_tasks_queue", - "google_cloud_tasks_queue_iam_binding", - "google_cloud_tasks_queue_iam_member", - "google_cloud_tasks_queue_iam_policy", - "google_cloudbuild_bitbucket_server_config", - "google_cloudbuild_trigger", - "google_cloudbuild_worker_pool", - "google_cloudbuildv2_connection", - "google_cloudbuildv2_connection_iam_binding", - "google_cloudbuildv2_connection_iam_member", - "google_cloudbuildv2_connection_iam_policy", - "google_cloudbuildv2_repository", - "google_clouddeploy_automation", - "google_clouddeploy_custom_target_type", - "google_clouddeploy_custom_target_type_iam_binding", - "google_clouddeploy_custom_target_type_iam_member", - "google_clouddeploy_custom_target_type_iam_policy", - "google_clouddeploy_delivery_pipeline", - "google_clouddeploy_delivery_pipeline_iam_binding", - "google_clouddeploy_delivery_pipeline_iam_member", - "google_clouddeploy_delivery_pipeline_iam_policy", - "google_clouddeploy_target", - "google_clouddeploy_target_iam_binding", - "google_clouddeploy_target_iam_member", - "google_clouddeploy_target_iam_policy", - "google_clouddomains_registration", - "google_cloudfunctions2_function", - "google_cloudfunctions2_function_iam_binding", - "google_cloudfunctions2_function_iam_member", - "google_cloudfunctions2_function_iam_policy", - "google_cloudfunctions_function", - "google_cloudfunctions_function_iam_binding", - "google_cloudfunctions_function_iam_member", - "google_cloudfunctions_function_iam_policy", - "google_cloudiot_registry", - "google_composer_environment", - "google_composer_user_workloads_config_map", - "google_composer_user_workloads_secret", - "google_compute_address", - "google_compute_attached_disk", - "google_compute_autoscaler", - "google_compute_backend_bucket", - "google_compute_backend_bucket_iam_binding", - "google_compute_backend_bucket_iam_member", - "google_compute_backend_bucket_iam_policy", - "google_compute_backend_bucket_signed_url_key", - "google_compute_backend_service", - "google_compute_backend_service_iam_binding", - "google_compute_backend_service_iam_member", - "google_compute_backend_service_iam_policy", - "google_compute_backend_service_signed_url_key", - "google_compute_disk", - "google_compute_disk_async_replication", - "google_compute_disk_iam_binding", - "google_compute_disk_iam_member", - "google_compute_disk_iam_policy", - "google_compute_disk_resource_policy_attachment", - "google_compute_external_vpn_gateway", - "google_compute_firewall", - "google_compute_firewall_policy", - "google_compute_firewall_policy_association", - "google_compute_firewall_policy_rule", - "google_compute_firewall_policy_with_rules", - "google_compute_forwarding_rule", - "google_compute_global_address", - "google_compute_global_forwarding_rule", - "google_compute_global_network_endpoint", - "google_compute_global_network_endpoint_group", - "google_compute_ha_vpn_gateway", - "google_compute_health_check", - "google_compute_http_health_check", - "google_compute_https_health_check", - "google_compute_image", - "google_compute_image_iam_binding", - "google_compute_image_iam_member", - "google_compute_image_iam_policy", - "google_compute_instance", - "google_compute_instance_from_machine_image", - "google_compute_instance_from_template", - "google_compute_instance_group", - "google_compute_instance_group_manager", - "google_compute_instance_group_membership", - "google_compute_instance_group_named_port", - "google_compute_instance_iam_binding", - "google_compute_instance_iam_member", - "google_compute_instance_iam_policy", - "google_compute_instance_settings", - "google_compute_instance_template", - "google_compute_interconnect", - "google_compute_interconnect_attachment", - "google_compute_machine_image", - "google_compute_machine_image_iam_binding", - "google_compute_machine_image_iam_member", - "google_compute_machine_image_iam_policy", - "google_compute_managed_ssl_certificate", - "google_compute_network", - "google_compute_network_attachment", - "google_compute_network_edge_security_service", - "google_compute_network_endpoint", - "google_compute_network_endpoint_group", - "google_compute_network_endpoints", - "google_compute_network_firewall_policy", - "google_compute_network_firewall_policy_association", - "google_compute_network_firewall_policy_rule", - "google_compute_network_firewall_policy_with_rules", - "google_compute_network_peering", - "google_compute_network_peering_routes_config", - "google_compute_node_group", - "google_compute_node_template", - "google_compute_organization_security_policy", - "google_compute_organization_security_policy_association", - "google_compute_organization_security_policy_rule", - "google_compute_packet_mirroring", - "google_compute_per_instance_config", - "google_compute_project_cloud_armor_tier", - "google_compute_project_default_network_tier", - "google_compute_project_metadata", - "google_compute_project_metadata_item", - "google_compute_public_advertised_prefix", - "google_compute_public_delegated_prefix", - "google_compute_region_autoscaler", - "google_compute_region_backend_service", - "google_compute_region_backend_service_iam_binding", - "google_compute_region_backend_service_iam_member", - "google_compute_region_backend_service_iam_policy", - "google_compute_region_commitment", - "google_compute_region_disk", - "google_compute_region_disk_iam_binding", - "google_compute_region_disk_iam_member", - "google_compute_region_disk_iam_policy", - "google_compute_region_disk_resource_policy_attachment", - "google_compute_region_health_check", - "google_compute_region_instance_group_manager", - "google_compute_region_instance_template", - "google_compute_region_network_endpoint", - "google_compute_region_network_endpoint_group", - "google_compute_region_network_firewall_policy", - "google_compute_region_network_firewall_policy_association", - "google_compute_region_network_firewall_policy_rule", - "google_compute_region_network_firewall_policy_with_rules", - "google_compute_region_per_instance_config", - "google_compute_region_resize_request", - "google_compute_region_security_policy", - "google_compute_region_security_policy_rule", - "google_compute_region_ssl_certificate", - "google_compute_region_target_http_proxy", - "google_compute_region_target_https_proxy", - "google_compute_region_target_tcp_proxy", - "google_compute_region_url_map", - "google_compute_reservation", - "google_compute_resize_request", - "google_compute_resource_policy", - "google_compute_route", - "google_compute_router", - "google_compute_router_interface", - "google_compute_router_nat", - "google_compute_router_nat_address", - "google_compute_router_peer", - "google_compute_router_route_policy", - "google_compute_security_policy", - "google_compute_security_policy_rule", - "google_compute_service_attachment", - "google_compute_shared_vpc_host_project", - "google_compute_shared_vpc_service_project", - "google_compute_snapshot", - "google_compute_snapshot_iam_binding", - "google_compute_snapshot_iam_member", - "google_compute_snapshot_iam_policy", - "google_compute_ssl_certificate", - "google_compute_ssl_policy", - "google_compute_subnetwork", - "google_compute_subnetwork_iam_binding", - "google_compute_subnetwork_iam_member", - "google_compute_subnetwork_iam_policy", - "google_compute_target_grpc_proxy", - "google_compute_target_http_proxy", - "google_compute_target_https_proxy", - "google_compute_target_instance", - "google_compute_target_pool", - "google_compute_target_ssl_proxy", - "google_compute_target_tcp_proxy", - "google_compute_url_map", - "google_compute_vpn_gateway", - "google_compute_vpn_tunnel", - "google_container_analysis_note", - "google_container_analysis_note_iam_binding", - "google_container_analysis_note_iam_member", - "google_container_analysis_note_iam_policy", - "google_container_analysis_occurrence", - "google_container_attached_cluster", - "google_container_aws_cluster", - "google_container_aws_node_pool", - "google_container_azure_client", - "google_container_azure_cluster", - "google_container_azure_node_pool", - "google_container_cluster", - "google_container_node_pool", - "google_container_registry", - "google_data_catalog_entry", - "google_data_catalog_entry_group", - "google_data_catalog_entry_group_iam_binding", - "google_data_catalog_entry_group_iam_member", - "google_data_catalog_entry_group_iam_policy", - "google_data_catalog_policy_tag", - "google_data_catalog_policy_tag_iam_binding", - "google_data_catalog_policy_tag_iam_member", - "google_data_catalog_policy_tag_iam_policy", - "google_data_catalog_tag", - "google_data_catalog_tag_template", - "google_data_catalog_tag_template_iam_binding", - "google_data_catalog_tag_template_iam_member", - "google_data_catalog_tag_template_iam_policy", - "google_data_catalog_taxonomy", - "google_data_catalog_taxonomy_iam_binding", - "google_data_catalog_taxonomy_iam_member", - "google_data_catalog_taxonomy_iam_policy", - "google_data_fusion_instance", - "google_data_fusion_instance_iam_binding", - "google_data_fusion_instance_iam_member", - "google_data_fusion_instance_iam_policy", - "google_data_loss_prevention_deidentify_template", - "google_data_loss_prevention_discovery_config", - "google_data_loss_prevention_inspect_template", - "google_data_loss_prevention_job_trigger", - "google_data_loss_prevention_stored_info_type", - "google_data_pipeline_pipeline", - "google_database_migration_service_connection_profile", - "google_database_migration_service_migration_job", - "google_database_migration_service_private_connection", - "google_dataflow_flex_template_job", - "google_dataflow_job", - "google_dataform_repository", - "google_dataform_repository_iam_binding", - "google_dataform_repository_iam_member", - "google_dataform_repository_iam_policy", - "google_dataform_repository_release_config", - "google_dataform_repository_workflow_config", - "google_dataplex_aspect_type", - "google_dataplex_aspect_type_iam_binding", - "google_dataplex_aspect_type_iam_member", - "google_dataplex_aspect_type_iam_policy", - "google_dataplex_asset", - "google_dataplex_asset_iam_binding", - "google_dataplex_asset_iam_member", - "google_dataplex_asset_iam_policy", - "google_dataplex_datascan", - "google_dataplex_datascan_iam_binding", - "google_dataplex_datascan_iam_member", - "google_dataplex_datascan_iam_policy", - "google_dataplex_entry_group", - "google_dataplex_entry_group_iam_binding", - "google_dataplex_entry_group_iam_member", - "google_dataplex_entry_group_iam_policy", - "google_dataplex_entry_type", - "google_dataplex_entry_type_iam_binding", - "google_dataplex_entry_type_iam_member", - "google_dataplex_entry_type_iam_policy", - "google_dataplex_lake", - "google_dataplex_lake_iam_binding", - "google_dataplex_lake_iam_member", - "google_dataplex_lake_iam_policy", - "google_dataplex_task", - "google_dataplex_task_iam_binding", - "google_dataplex_task_iam_member", - "google_dataplex_task_iam_policy", - "google_dataplex_zone", - "google_dataplex_zone_iam_binding", - "google_dataplex_zone_iam_member", - "google_dataplex_zone_iam_policy", - "google_dataproc_autoscaling_policy", - "google_dataproc_autoscaling_policy_iam_binding", - "google_dataproc_autoscaling_policy_iam_member", - "google_dataproc_autoscaling_policy_iam_policy", - "google_dataproc_batch", - "google_dataproc_cluster", - "google_dataproc_cluster_iam_binding", - "google_dataproc_cluster_iam_member", - "google_dataproc_cluster_iam_policy", - "google_dataproc_gdc_application_environment", - "google_dataproc_gdc_service_instance", - "google_dataproc_gdc_spark_application", - "google_dataproc_job", - "google_dataproc_job_iam_binding", - "google_dataproc_job_iam_member", - "google_dataproc_job_iam_policy", - "google_dataproc_metastore_federation", - "google_dataproc_metastore_federation_iam_binding", - "google_dataproc_metastore_federation_iam_member", - "google_dataproc_metastore_federation_iam_policy", - "google_dataproc_metastore_service", - "google_dataproc_metastore_service_iam_binding", - "google_dataproc_metastore_service_iam_member", - "google_dataproc_metastore_service_iam_policy", - "google_dataproc_workflow_template", - "google_datastream_connection_profile", - "google_datastream_private_connection", - "google_datastream_stream", - "google_deployment_manager_deployment", - "google_developer_connect_connection", - "google_developer_connect_git_repository_link", - "google_dialogflow_agent", - "google_dialogflow_cx_agent", - "google_dialogflow_cx_entity_type", - "google_dialogflow_cx_environment", - "google_dialogflow_cx_flow", - "google_dialogflow_cx_intent", - "google_dialogflow_cx_page", - "google_dialogflow_cx_security_settings", - "google_dialogflow_cx_version", - "google_dialogflow_cx_webhook", - "google_dialogflow_entity_type", - "google_dialogflow_fulfillment", - "google_dialogflow_intent", - "google_discovery_engine_chat_engine", - "google_discovery_engine_data_store", - "google_discovery_engine_schema", - "google_discovery_engine_search_engine", - "google_discovery_engine_target_site", - "google_dns_managed_zone", - "google_dns_managed_zone_iam_binding", - "google_dns_managed_zone_iam_member", - "google_dns_managed_zone_iam_policy", - "google_dns_policy", - "google_dns_record_set", - "google_dns_response_policy", - "google_dns_response_policy_rule", - "google_document_ai_processor", - "google_document_ai_processor_default_version", - "google_document_ai_warehouse_document_schema", - "google_document_ai_warehouse_location", - "google_edgecontainer_cluster", - "google_edgecontainer_node_pool", - "google_edgecontainer_vpn_connection", - "google_edgenetwork_network", - "google_edgenetwork_subnet", - "google_endpoints_service", - "google_endpoints_service_consumers_iam_binding", - "google_endpoints_service_consumers_iam_member", - "google_endpoints_service_consumers_iam_policy", - "google_endpoints_service_iam_binding", - "google_endpoints_service_iam_member", - "google_endpoints_service_iam_policy", - "google_essential_contacts_contact", - "google_eventarc_channel", - "google_eventarc_google_channel_config", - "google_eventarc_trigger", - "google_filestore_backup", - "google_filestore_instance", - "google_filestore_snapshot", - "google_firebase_android_app", - "google_firebase_app_check_app_attest_config", - "google_firebase_app_check_debug_token", - "google_firebase_app_check_device_check_config", - "google_firebase_app_check_play_integrity_config", - "google_firebase_app_check_recaptcha_enterprise_config", - "google_firebase_app_check_recaptcha_v3_config", - "google_firebase_app_check_service_config", - "google_firebase_apple_app", - "google_firebase_database_instance", - "google_firebase_extensions_instance", - "google_firebase_hosting_channel", - "google_firebase_hosting_custom_domain", - "google_firebase_hosting_release", - "google_firebase_hosting_site", - "google_firebase_hosting_version", - "google_firebase_project", - "google_firebase_project_location", - "google_firebase_storage_bucket", - "google_firebase_web_app", - "google_firebaserules_release", - "google_firebaserules_ruleset", - "google_firestore_backup_schedule", - "google_firestore_database", - "google_firestore_document", - "google_firestore_field", - "google_firestore_index", - "google_folder", - "google_folder_access_approval_settings", - "google_folder_iam_audit_config", - "google_folder_iam_binding", - "google_folder_iam_member", - "google_folder_iam_policy", - "google_folder_organization_policy", - "google_gemini_code_repository_index", - "google_gemini_repository_group", - "google_gemini_repository_group_iam_binding", - "google_gemini_repository_group_iam_member", - "google_gemini_repository_group_iam_policy", - "google_gke_backup_backup_plan", - "google_gke_backup_backup_plan_iam_binding", - "google_gke_backup_backup_plan_iam_member", - "google_gke_backup_backup_plan_iam_policy", - "google_gke_backup_restore_plan", - "google_gke_backup_restore_plan_iam_binding", - "google_gke_backup_restore_plan_iam_member", - "google_gke_backup_restore_plan_iam_policy", - "google_gke_hub_feature", - "google_gke_hub_feature_iam_binding", - "google_gke_hub_feature_iam_member", - "google_gke_hub_feature_iam_policy", - "google_gke_hub_feature_membership", - "google_gke_hub_fleet", - "google_gke_hub_membership", - "google_gke_hub_membership_binding", - "google_gke_hub_membership_iam_binding", - "google_gke_hub_membership_iam_member", - "google_gke_hub_membership_iam_policy", - "google_gke_hub_membership_rbac_role_binding", - "google_gke_hub_namespace", - "google_gke_hub_scope", - "google_gke_hub_scope_iam_binding", - "google_gke_hub_scope_iam_member", - "google_gke_hub_scope_iam_policy", - "google_gke_hub_scope_rbac_role_binding", - "google_gkeonprem_bare_metal_admin_cluster", - "google_gkeonprem_bare_metal_cluster", - "google_gkeonprem_bare_metal_node_pool", - "google_gkeonprem_vmware_admin_cluster", - "google_gkeonprem_vmware_cluster", - "google_gkeonprem_vmware_node_pool", - "google_healthcare_consent_store", - "google_healthcare_consent_store_iam_binding", - "google_healthcare_consent_store_iam_member", - "google_healthcare_consent_store_iam_policy", - "google_healthcare_dataset", - "google_healthcare_dataset_iam_binding", - "google_healthcare_dataset_iam_member", - "google_healthcare_dataset_iam_policy", - "google_healthcare_dicom_store", - "google_healthcare_dicom_store_iam_binding", - "google_healthcare_dicom_store_iam_member", - "google_healthcare_dicom_store_iam_policy", - "google_healthcare_fhir_store", - "google_healthcare_fhir_store_iam_binding", - "google_healthcare_fhir_store_iam_member", - "google_healthcare_fhir_store_iam_policy", - "google_healthcare_hl7_v2_store", - "google_healthcare_hl7_v2_store_iam_binding", - "google_healthcare_hl7_v2_store_iam_member", - "google_healthcare_hl7_v2_store_iam_policy", - "google_healthcare_pipeline_job", - "google_healthcare_workspace", - "google_iam_access_boundary_policy", - "google_iam_deny_policy", - "google_iam_folders_policy_binding", - "google_iam_organizations_policy_binding", - "google_iam_principal_access_boundary_policy", - "google_iam_projects_policy_binding", - "google_iam_workforce_pool", - "google_iam_workforce_pool_provider", - "google_iam_workload_identity_pool", - "google_iam_workload_identity_pool_provider", - "google_iap_app_engine_service_iam_binding", - "google_iap_app_engine_service_iam_member", - "google_iap_app_engine_service_iam_policy", - "google_iap_app_engine_version_iam_binding", - "google_iap_app_engine_version_iam_member", - "google_iap_app_engine_version_iam_policy", - "google_iap_brand", - "google_iap_client", - "google_iap_settings", - "google_iap_tunnel_dest_group", - "google_iap_tunnel_dest_group_iam_binding", - "google_iap_tunnel_dest_group_iam_member", - "google_iap_tunnel_dest_group_iam_policy", - "google_iap_tunnel_iam_binding", - "google_iap_tunnel_iam_member", - "google_iap_tunnel_iam_policy", - "google_iap_tunnel_instance_iam_binding", - "google_iap_tunnel_instance_iam_member", - "google_iap_tunnel_instance_iam_policy", - "google_iap_web_backend_service_iam_binding", - "google_iap_web_backend_service_iam_member", - "google_iap_web_backend_service_iam_policy", - "google_iap_web_iam_binding", - "google_iap_web_iam_member", - "google_iap_web_iam_policy", - "google_iap_web_region_backend_service_iam_binding", - "google_iap_web_region_backend_service_iam_member", - "google_iap_web_region_backend_service_iam_policy", - "google_iap_web_type_app_engine_iam_binding", - "google_iap_web_type_app_engine_iam_member", - "google_iap_web_type_app_engine_iam_policy", - "google_iap_web_type_compute_iam_binding", - "google_iap_web_type_compute_iam_member", - "google_iap_web_type_compute_iam_policy", - "google_identity_platform_config", - "google_identity_platform_default_supported_idp_config", - "google_identity_platform_inbound_saml_config", - "google_identity_platform_oauth_idp_config", - "google_identity_platform_tenant", - "google_identity_platform_tenant_default_supported_idp_config", - "google_identity_platform_tenant_inbound_saml_config", - "google_identity_platform_tenant_oauth_idp_config", - "google_integration_connectors_connection", - "google_integration_connectors_endpoint_attachment", - "google_integration_connectors_managed_zone", - "google_integrations_auth_config", - "google_integrations_client", - "google_kms_autokey_config", - "google_kms_crypto_key", - "google_kms_crypto_key_iam_binding", - "google_kms_crypto_key_iam_member", - "google_kms_crypto_key_iam_policy", - "google_kms_crypto_key_version", - "google_kms_ekm_connection", - "google_kms_ekm_connection_iam_binding", - "google_kms_ekm_connection_iam_member", - "google_kms_ekm_connection_iam_policy", - "google_kms_key_handle", - "google_kms_key_ring", - "google_kms_key_ring_iam_binding", - "google_kms_key_ring_iam_member", - "google_kms_key_ring_iam_policy", - "google_kms_key_ring_import_job", - "google_kms_secret_ciphertext", - "google_logging_billing_account_bucket_config", - "google_logging_billing_account_exclusion", - "google_logging_billing_account_sink", - "google_logging_folder_bucket_config", - "google_logging_folder_exclusion", - "google_logging_folder_settings", - "google_logging_folder_sink", - "google_logging_linked_dataset", - "google_logging_log_scope", - "google_logging_log_view", - "google_logging_log_view_iam_binding", - "google_logging_log_view_iam_member", - "google_logging_log_view_iam_policy", - "google_logging_metric", - "google_logging_organization_bucket_config", - "google_logging_organization_exclusion", - "google_logging_organization_settings", - "google_logging_organization_sink", - "google_logging_project_bucket_config", - "google_logging_project_exclusion", - "google_logging_project_sink", - "google_looker_instance", - "google_managed_kafka_cluster", - "google_managed_kafka_topic", - "google_memcache_instance", - "google_memorystore_instance", - "google_migration_center_group", - "google_migration_center_preference_set", - "google_ml_engine_model", - "google_monitoring_alert_policy", - "google_monitoring_custom_service", - "google_monitoring_dashboard", - "google_monitoring_group", - "google_monitoring_metric_descriptor", - "google_monitoring_monitored_project", - "google_monitoring_notification_channel", - "google_monitoring_service", - "google_monitoring_slo", - "google_monitoring_uptime_check_config", - "google_netapp_active_directory", - "google_netapp_backup", - "google_netapp_backup_policy", - "google_netapp_backup_vault", - "google_netapp_kmsconfig", - "google_netapp_storage_pool", - "google_netapp_volume", - "google_netapp_volume_replication", - "google_netapp_volume_snapshot", - "google_network_connectivity_group", - "google_network_connectivity_hub", - "google_network_connectivity_internal_range", - "google_network_connectivity_policy_based_route", - "google_network_connectivity_regional_endpoint", - "google_network_connectivity_service_connection_policy", - "google_network_connectivity_spoke", - "google_network_management_vpc_flow_logs_config", - "google_network_security_address_group", - "google_network_security_address_group_iam_binding", - "google_network_security_address_group_iam_member", - "google_network_security_address_group_iam_policy", - "google_network_security_authorization_policy", - "google_network_security_authz_policy", - "google_network_security_client_tls_policy", - "google_network_security_firewall_endpoint", - "google_network_security_firewall_endpoint_association", - "google_network_security_gateway_security_policy", - "google_network_security_gateway_security_policy_rule", - "google_network_security_intercept_deployment", - "google_network_security_intercept_deployment_group", - "google_network_security_intercept_endpoint_group", - "google_network_security_intercept_endpoint_group_association", - "google_network_security_mirroring_deployment", - "google_network_security_mirroring_deployment_group", - "google_network_security_mirroring_endpoint_group", - "google_network_security_mirroring_endpoint_group_association", - "google_network_security_security_profile", - "google_network_security_security_profile_group", - "google_network_security_server_tls_policy", - "google_network_security_tls_inspection_policy", - "google_network_security_url_lists", - "google_network_services_authz_extension", - "google_network_services_edge_cache_keyset", - "google_network_services_edge_cache_origin", - "google_network_services_edge_cache_service", - "google_network_services_endpoint_policy", - "google_network_services_gateway", - "google_network_services_grpc_route", - "google_network_services_http_route", - "google_network_services_lb_route_extension", - "google_network_services_lb_traffic_extension", - "google_network_services_mesh", - "google_network_services_service_binding", - "google_network_services_service_lb_policies", - "google_network_services_tcp_route", - "google_network_services_tls_route", - "google_notebooks_environment", - "google_notebooks_instance", - "google_notebooks_instance_iam_binding", - "google_notebooks_instance_iam_member", - "google_notebooks_instance_iam_policy", - "google_notebooks_runtime", - "google_notebooks_runtime_iam_binding", - "google_notebooks_runtime_iam_member", - "google_notebooks_runtime_iam_policy", - "google_oracle_database_autonomous_database", - "google_oracle_database_cloud_exadata_infrastructure", - "google_oracle_database_cloud_vm_cluster", - "google_org_policy_custom_constraint", - "google_org_policy_policy", - "google_organization_access_approval_settings", - "google_organization_iam_audit_config", - "google_organization_iam_binding", - "google_organization_iam_custom_role", - "google_organization_iam_member", - "google_organization_iam_policy", - "google_organization_policy", - "google_os_config_guest_policies", - "google_os_config_os_policy_assignment", - "google_os_config_patch_deployment", - "google_os_login_ssh_public_key", - "google_parallelstore_instance", - "google_privateca_ca_pool", - "google_privateca_ca_pool_iam_binding", - "google_privateca_ca_pool_iam_member", - "google_privateca_ca_pool_iam_policy", - "google_privateca_certificate", - "google_privateca_certificate_authority", - "google_privateca_certificate_template", - "google_privateca_certificate_template_iam_binding", - "google_privateca_certificate_template_iam_member", - "google_privateca_certificate_template_iam_policy", - "google_privileged_access_manager_entitlement", - "google_project", - "google_project_access_approval_settings", - "google_project_default_service_accounts", - "google_project_iam_audit_config", - "google_project_iam_binding", - "google_project_iam_custom_role", - "google_project_iam_member", - "google_project_iam_member_remove", - "google_project_iam_policy", - "google_project_organization_policy", - "google_project_service", - "google_project_service_identity", - "google_project_services", - "google_project_usage_export_bucket", - "google_public_ca_external_account_key", - "google_pubsub_lite_reservation", - "google_pubsub_lite_subscription", - "google_pubsub_lite_topic", - "google_pubsub_schema", - "google_pubsub_schema_iam_binding", - "google_pubsub_schema_iam_member", - "google_pubsub_schema_iam_policy", - "google_pubsub_subscription", - "google_pubsub_subscription_iam_binding", - "google_pubsub_subscription_iam_member", - "google_pubsub_subscription_iam_policy", - "google_pubsub_topic", - "google_pubsub_topic_iam_binding", - "google_pubsub_topic_iam_member", - "google_pubsub_topic_iam_policy", - "google_recaptcha_enterprise_key", - "google_redis_cluster", - "google_redis_instance", - "google_resource_manager_lien", - "google_runtimeconfig_config", - "google_runtimeconfig_config_iam_binding", - "google_runtimeconfig_config_iam_member", - "google_runtimeconfig_config_iam_policy", - "google_runtimeconfig_variable", - "google_scc_event_threat_detection_custom_module", - "google_scc_folder_custom_module", - "google_scc_folder_notification_config", - "google_scc_folder_scc_big_query_export", - "google_scc_management_folder_security_health_analytics_custom_module", - "google_scc_management_organization_event_threat_detection_custom_module", - "google_scc_management_organization_security_health_analytics_custom_module", - "google_scc_management_project_security_health_analytics_custom_module", - "google_scc_mute_config", - "google_scc_notification_config", - "google_scc_organization_custom_module", - "google_scc_organization_scc_big_query_export", - "google_scc_project_custom_module", - "google_scc_project_notification_config", - "google_scc_project_scc_big_query_export", - "google_scc_source", - "google_scc_source_iam_binding", - "google_scc_source_iam_member", - "google_scc_source_iam_policy", - "google_scc_v2_folder_mute_config", - "google_scc_v2_folder_notification_config", - "google_scc_v2_folder_scc_big_query_export", - "google_scc_v2_organization_mute_config", - "google_scc_v2_organization_notification_config", - "google_scc_v2_organization_scc_big_query_export", - "google_scc_v2_organization_scc_big_query_exports", - "google_scc_v2_organization_source_iam_binding", - "google_scc_v2_organization_source_iam_member", - "google_scc_v2_organization_source_iam_policy", - "google_scc_v2_project_mute_config", - "google_scc_v2_project_notification_config", - "google_scc_v2_project_scc_big_query_export", - "google_secret_manager_regional_secret", - "google_secret_manager_regional_secret_iam_binding", - "google_secret_manager_regional_secret_iam_member", - "google_secret_manager_regional_secret_iam_policy", - "google_secret_manager_regional_secret_version", - "google_secret_manager_secret", - "google_secret_manager_secret_iam_binding", - "google_secret_manager_secret_iam_member", - "google_secret_manager_secret_iam_policy", - "google_secret_manager_secret_version", - "google_secure_source_manager_branch_rule", - "google_secure_source_manager_instance", - "google_secure_source_manager_instance_iam_binding", - "google_secure_source_manager_instance_iam_member", - "google_secure_source_manager_instance_iam_policy", - "google_secure_source_manager_repository", - "google_secure_source_manager_repository_iam_binding", - "google_secure_source_manager_repository_iam_member", - "google_secure_source_manager_repository_iam_policy", - "google_security_scanner_scan_config", - "google_securityposture_posture", - "google_service_account", - "google_service_account_iam_binding", - "google_service_account_iam_member", - "google_service_account_iam_policy", - "google_service_account_key", - "google_service_directory_endpoint", - "google_service_directory_namespace", - "google_service_directory_namespace_iam_binding", - "google_service_directory_namespace_iam_member", - "google_service_directory_namespace_iam_policy", - "google_service_directory_service", - "google_service_directory_service_iam_binding", - "google_service_directory_service_iam_member", - "google_service_directory_service_iam_policy", - "google_service_networking_connection", - "google_service_networking_peered_dns_domain", - "google_service_networking_vpc_service_controls", - "google_service_usage_consumer_quota_override", - "google_site_verification_owner", - "google_site_verification_web_resource", - "google_sourcerepo_repository", - "google_sourcerepo_repository_iam_binding", - "google_sourcerepo_repository_iam_member", - "google_sourcerepo_repository_iam_policy", - "google_spanner_backup_schedule", - "google_spanner_database", - "google_spanner_database_iam_binding", - "google_spanner_database_iam_member", - "google_spanner_database_iam_policy", - "google_spanner_instance", - "google_spanner_instance_config", - "google_spanner_instance_iam_binding", - "google_spanner_instance_iam_member", - "google_spanner_instance_iam_policy", - "google_sql_database", - "google_sql_database_instance", - "google_sql_source_representation_instance", - "google_sql_ssl_cert", - "google_sql_user", - "google_storage_bucket", - "google_storage_bucket_access_control", - "google_storage_bucket_acl", - "google_storage_bucket_iam_binding", - "google_storage_bucket_iam_member", - "google_storage_bucket_iam_policy", - "google_storage_bucket_object", - "google_storage_default_object_access_control", - "google_storage_default_object_acl", - "google_storage_folder", - "google_storage_hmac_key", - "google_storage_insights_report_config", - "google_storage_managed_folder", - "google_storage_managed_folder_iam_binding", - "google_storage_managed_folder_iam_member", - "google_storage_managed_folder_iam_policy", - "google_storage_notification", - "google_storage_object_access_control", - "google_storage_object_acl", - "google_storage_transfer_agent_pool", - "google_storage_transfer_job", - "google_tags_location_tag_binding", - "google_tags_tag_binding", - "google_tags_tag_key", - "google_tags_tag_key_iam_binding", - "google_tags_tag_key_iam_member", - "google_tags_tag_key_iam_policy", - "google_tags_tag_value", - "google_tags_tag_value_iam_binding", - "google_tags_tag_value_iam_member", - "google_tags_tag_value_iam_policy", - "google_tpu_node", - "google_tpu_v2_queued_resource", - "google_tpu_v2_vm", - "google_transcoder_job", - "google_transcoder_job_template", - "google_vertex_ai_dataset", - "google_vertex_ai_deployment_resource_pool", - "google_vertex_ai_endpoint", - "google_vertex_ai_endpoint_iam_binding", - "google_vertex_ai_endpoint_iam_member", - "google_vertex_ai_endpoint_iam_policy", - "google_vertex_ai_feature_group", - "google_vertex_ai_feature_group_feature", - "google_vertex_ai_feature_online_store", - "google_vertex_ai_feature_online_store_featureview", - "google_vertex_ai_featurestore", - "google_vertex_ai_featurestore_entitytype", - "google_vertex_ai_featurestore_entitytype_feature", - "google_vertex_ai_featurestore_entitytype_iam_binding", - "google_vertex_ai_featurestore_entitytype_iam_member", - "google_vertex_ai_featurestore_entitytype_iam_policy", - "google_vertex_ai_featurestore_iam_binding", - "google_vertex_ai_featurestore_iam_member", - "google_vertex_ai_featurestore_iam_policy", - "google_vertex_ai_index", - "google_vertex_ai_index_endpoint", - "google_vertex_ai_index_endpoint_deployed_index", - "google_vertex_ai_metadata_store", - "google_vertex_ai_tensorboard", - "google_vmwareengine_cluster", - "google_vmwareengine_external_access_rule", - "google_vmwareengine_external_address", - "google_vmwareengine_network", - "google_vmwareengine_network_peering", - "google_vmwareengine_network_policy", - "google_vmwareengine_private_cloud", - "google_vmwareengine_subnet", - "google_vpc_access_connector", - "google_workbench_instance", - "google_workbench_instance_iam_binding", - "google_workbench_instance_iam_member", - "google_workbench_instance_iam_policy", - "google_workflows_workflow", - "google_workstations_workstation", - "google_workstations_workstation_cluster", - "google_workstations_workstation_config", - "google_workstations_workstation_config_iam_binding", - "google_workstations_workstation_config_iam_member", - "google_workstations_workstation_config_iam_policy", - "google_workstations_workstation_iam_binding", - "google_workstations_workstation_iam_member", - "google_workstations_workstation_iam_policy" - ] -} + "resources": [ + "google_access_context_manager_access_level", + "google_access_context_manager_access_level_condition", + "google_access_context_manager_access_levels", + "google_access_context_manager_access_policy", + "google_access_context_manager_access_policy_iam_binding", + "google_access_context_manager_access_policy_iam_member", + "google_access_context_manager_access_policy_iam_policy", + "google_access_context_manager_authorized_orgs_desc", + "google_access_context_manager_gcp_user_access_binding", + "google_access_context_manager_service_perimeter", + "google_access_context_manager_service_perimeter_dry_run_egress_policy", + "google_access_context_manager_service_perimeter_dry_run_ingress_policy", + "google_access_context_manager_service_perimeter_dry_run_resource", + "google_access_context_manager_service_perimeter_egress_policy", + "google_access_context_manager_service_perimeter_ingress_policy", + "google_access_context_manager_service_perimeter_resource", + "google_access_context_manager_service_perimeters", + "google_active_directory_domain", + "google_active_directory_domain_trust", + "google_active_directory_peering", + "google_alloydb_backup", + "google_alloydb_cluster", + "google_alloydb_instance", + "google_alloydb_user", + "google_api_gateway_api", + "google_api_gateway_api_config", + "google_api_gateway_api_config_iam_binding", + "google_api_gateway_api_config_iam_member", + "google_api_gateway_api_config_iam_policy", + "google_api_gateway_api_iam_binding", + "google_api_gateway_api_iam_member", + "google_api_gateway_api_iam_policy", + "google_api_gateway_gateway", + "google_api_gateway_gateway_iam_binding", + "google_api_gateway_gateway_iam_member", + "google_api_gateway_gateway_iam_policy", + "google_apigee_addons_config", + "google_apigee_api", + "google_apigee_api_deployment", + "google_apigee_api_product", + "google_apigee_app_group", + "google_apigee_control_plane_access", + "google_apigee_developer", + "google_apigee_developer_app", + "google_apigee_dns_zone", + "google_apigee_env_keystore", + "google_apigee_envgroup", + "google_apigee_envgroup_attachment", + "google_apigee_environment", + "google_apigee_environment_addons_config", + "google_apigee_environment_api_revision_deployment", + "google_apigee_environment_iam_binding", + "google_apigee_environment_iam_member", + "google_apigee_environment_iam_policy", + "google_apigee_environment_keyvaluemaps", + "google_apigee_environment_keyvaluemaps_entries", + "google_apigee_instance", + "google_apigee_instance_attachment", + "google_apigee_keystores_aliases_self_signed_cert", + "google_apigee_nat_address", + "google_apigee_organization", + "google_apigee_security_action", + "google_apigee_security_monitoring_condition", + "google_apigee_security_profile_v2", + "google_apigee_sync_authorization", + "google_apigee_target_server", + "google_apihub_api_hub_instance", + "google_apihub_curation", + "google_apihub_host_project_registration", + "google_apihub_plugin", + "google_apihub_plugin_instance", + "google_apikeys_key", + "google_app_engine_application", + "google_app_engine_application_url_dispatch_rules", + "google_app_engine_domain_mapping", + "google_app_engine_firewall_rule", + "google_app_engine_flexible_app_version", + "google_app_engine_service_network_settings", + "google_app_engine_service_split_traffic", + "google_app_engine_standard_app_version", + "google_apphub_application", + "google_apphub_service", + "google_apphub_service_project_attachment", + "google_apphub_workload", + "google_artifact_registry_package", + "google_artifact_registry_repository", + "google_artifact_registry_repository_iam_binding", + "google_artifact_registry_repository_iam_member", + "google_artifact_registry_repository_iam_policy", + "google_artifact_registry_vpcsc_config", + "google_assured_workloads_workload", + "google_backup_dr_backup_plan", + "google_backup_dr_backup_plan_association", + "google_backup_dr_backup_vault", + "google_backup_dr_management_server", + "google_backup_dr_service_config", + "google_beyondcorp_app_connection", + "google_beyondcorp_app_connector", + "google_beyondcorp_app_gateway", + "google_beyondcorp_security_gateway", + "google_beyondcorp_security_gateway_application", + "google_beyondcorp_security_gateway_application_iam_binding", + "google_beyondcorp_security_gateway_application_iam_member", + "google_beyondcorp_security_gateway_application_iam_policy", + "google_beyondcorp_security_gateway_iam_binding", + "google_beyondcorp_security_gateway_iam_member", + "google_beyondcorp_security_gateway_iam_policy", + "google_biglake_catalog", + "google_biglake_database", + "google_biglake_table", + "google_bigquery_analytics_hub_data_exchange", + "google_bigquery_analytics_hub_data_exchange_iam_binding", + "google_bigquery_analytics_hub_data_exchange_iam_member", + "google_bigquery_analytics_hub_data_exchange_iam_policy", + "google_bigquery_analytics_hub_data_exchange_subscription", + "google_bigquery_analytics_hub_listing", + "google_bigquery_analytics_hub_listing_iam_binding", + "google_bigquery_analytics_hub_listing_iam_member", + "google_bigquery_analytics_hub_listing_iam_policy", + "google_bigquery_analytics_hub_listing_subscription", + "google_bigquery_bi_reservation", + "google_bigquery_capacity_commitment", + "google_bigquery_connection", + "google_bigquery_connection_iam_binding", + "google_bigquery_connection_iam_member", + "google_bigquery_connection_iam_policy", + "google_bigquery_data_transfer_config", + "google_bigquery_datapolicy_data_policy", + "google_bigquery_datapolicy_data_policy_iam_binding", + "google_bigquery_datapolicy_data_policy_iam_member", + "google_bigquery_datapolicy_data_policy_iam_policy", + "google_bigquery_datapolicyv2_data_policy", + "google_bigquery_datapolicyv2_data_policy_iam_binding", + "google_bigquery_datapolicyv2_data_policy_iam_member", + "google_bigquery_datapolicyv2_data_policy_iam_policy", + "google_bigquery_dataset", + "google_bigquery_dataset_access", + "google_bigquery_dataset_iam_binding", + "google_bigquery_dataset_iam_member", + "google_bigquery_dataset_iam_policy", + "google_bigquery_job", + "google_bigquery_reservation", + "google_bigquery_reservation_assignment", + "google_bigquery_routine", + "google_bigquery_row_access_policy", + "google_bigquery_table", + "google_bigquery_table_iam_binding", + "google_bigquery_table_iam_member", + "google_bigquery_table_iam_policy", + "google_bigtable_app_profile", + "google_bigtable_authorized_view", + "google_bigtable_gc_policy", + "google_bigtable_instance", + "google_bigtable_instance_iam_binding", + "google_bigtable_instance_iam_member", + "google_bigtable_instance_iam_policy", + "google_bigtable_logical_view", + "google_bigtable_materialized_view", + "google_bigtable_schema_bundle", + "google_bigtable_table", + "google_bigtable_table_iam_binding", + "google_bigtable_table_iam_member", + "google_bigtable_table_iam_policy", + "google_billing_account_iam_binding", + "google_billing_account_iam_member", + "google_billing_account_iam_policy", + "google_billing_budget", + "google_billing_project_info", + "google_billing_subaccount", + "google_binary_authorization_attestor", + "google_binary_authorization_attestor_iam_binding", + "google_binary_authorization_attestor_iam_member", + "google_binary_authorization_attestor_iam_policy", + "google_binary_authorization_policy", + "google_blockchain_node_engine_blockchain_nodes", + "google_certificate_manager_certificate", + "google_certificate_manager_certificate_issuance_config", + "google_certificate_manager_certificate_map", + "google_certificate_manager_certificate_map_entry", + "google_certificate_manager_dns_authorization", + "google_certificate_manager_trust_config", + "google_ces_agent", + "google_ces_app", + "google_ces_deployment", + "google_ces_example", + "google_ces_guardrail", + "google_ces_tool", + "google_ces_toolset", + "google_chronicle_data_access_label", + "google_chronicle_data_access_scope", + "google_chronicle_reference_list", + "google_chronicle_retrohunt", + "google_chronicle_rule", + "google_chronicle_rule_deployment", + "google_chronicle_watchlist", + "google_cloud_asset_folder_feed", + "google_cloud_asset_organization_feed", + "google_cloud_asset_project_feed", + "google_cloud_identity_group", + "google_cloud_identity_group_membership", + "google_cloud_ids_endpoint", + "google_cloud_quotas_quota_adjuster_settings", + "google_cloud_quotas_quota_preference", + "google_cloud_run_domain_mapping", + "google_cloud_run_service", + "google_cloud_run_service_iam_binding", + "google_cloud_run_service_iam_member", + "google_cloud_run_service_iam_policy", + "google_cloud_run_v2_job", + "google_cloud_run_v2_job_iam_binding", + "google_cloud_run_v2_job_iam_member", + "google_cloud_run_v2_job_iam_policy", + "google_cloud_run_v2_service", + "google_cloud_run_v2_service_iam_binding", + "google_cloud_run_v2_service_iam_member", + "google_cloud_run_v2_service_iam_policy", + "google_cloud_run_v2_worker_pool", + "google_cloud_run_v2_worker_pool_iam_binding", + "google_cloud_run_v2_worker_pool_iam_member", + "google_cloud_run_v2_worker_pool_iam_policy", + "google_cloud_scheduler_job", + "google_cloud_security_compliance_cloud_control", + "google_cloud_security_compliance_framework", + "google_cloud_security_compliance_framework_deployment", + "google_cloud_tasks_queue", + "google_cloud_tasks_queue_iam_binding", + "google_cloud_tasks_queue_iam_member", + "google_cloud_tasks_queue_iam_policy", + "google_cloudbuild_bitbucket_server_config", + "google_cloudbuild_trigger", + "google_cloudbuild_worker_pool", + "google_cloudbuildv2_connection", + "google_cloudbuildv2_connection_iam_binding", + "google_cloudbuildv2_connection_iam_member", + "google_cloudbuildv2_connection_iam_policy", + "google_cloudbuildv2_repository", + "google_clouddeploy_automation", + "google_clouddeploy_custom_target_type", + "google_clouddeploy_custom_target_type_iam_binding", + "google_clouddeploy_custom_target_type_iam_member", + "google_clouddeploy_custom_target_type_iam_policy", + "google_clouddeploy_delivery_pipeline", + "google_clouddeploy_delivery_pipeline_iam_binding", + "google_clouddeploy_delivery_pipeline_iam_member", + "google_clouddeploy_delivery_pipeline_iam_policy", + "google_clouddeploy_deploy_policy", + "google_clouddeploy_target", + "google_clouddeploy_target_iam_binding", + "google_clouddeploy_target_iam_member", + "google_clouddeploy_target_iam_policy", + "google_clouddomains_registration", + "google_cloudfunctions2_function", + "google_cloudfunctions2_function_iam_binding", + "google_cloudfunctions2_function_iam_member", + "google_cloudfunctions2_function_iam_policy", + "google_cloudfunctions_function", + "google_cloudfunctions_function_iam_binding", + "google_cloudfunctions_function_iam_member", + "google_cloudfunctions_function_iam_policy", + "google_cloudiot_registry", + "google_colab_notebook_execution", + "google_colab_runtime", + "google_colab_runtime_template", + "google_colab_runtime_template_iam_binding", + "google_colab_runtime_template_iam_member", + "google_colab_runtime_template_iam_policy", + "google_colab_schedule", + "google_composer_environment", + "google_composer_user_workloads_config_map", + "google_composer_user_workloads_secret", + "google_compute_address", + "google_compute_attached_disk", + "google_compute_autoscaler", + "google_compute_backend_bucket", + "google_compute_backend_bucket_iam_binding", + "google_compute_backend_bucket_iam_member", + "google_compute_backend_bucket_iam_policy", + "google_compute_backend_bucket_signed_url_key", + "google_compute_backend_service", + "google_compute_backend_service_iam_binding", + "google_compute_backend_service_iam_member", + "google_compute_backend_service_iam_policy", + "google_compute_backend_service_signed_url_key", + "google_compute_cross_site_network", + "google_compute_disk", + "google_compute_disk_async_replication", + "google_compute_disk_iam_binding", + "google_compute_disk_iam_member", + "google_compute_disk_iam_policy", + "google_compute_disk_resource_policy_attachment", + "google_compute_external_vpn_gateway", + "google_compute_firewall", + "google_compute_firewall_policy", + "google_compute_firewall_policy_association", + "google_compute_firewall_policy_rule", + "google_compute_firewall_policy_with_rules", + "google_compute_forwarding_rule", + "google_compute_future_reservation", + "google_compute_global_address", + "google_compute_global_forwarding_rule", + "google_compute_global_network_endpoint", + "google_compute_global_network_endpoint_group", + "google_compute_ha_vpn_gateway", + "google_compute_health_check", + "google_compute_http_health_check", + "google_compute_https_health_check", + "google_compute_image", + "google_compute_image_iam_binding", + "google_compute_image_iam_member", + "google_compute_image_iam_policy", + "google_compute_instance", + "google_compute_instance_from_machine_image", + "google_compute_instance_from_template", + "google_compute_instance_group", + "google_compute_instance_group_manager", + "google_compute_instance_group_membership", + "google_compute_instance_group_named_port", + "google_compute_instance_iam_binding", + "google_compute_instance_iam_member", + "google_compute_instance_iam_policy", + "google_compute_instance_settings", + "google_compute_instance_template", + "google_compute_instance_template_iam_binding", + "google_compute_instance_template_iam_member", + "google_compute_instance_template_iam_policy", + "google_compute_instant_snapshot", + "google_compute_instant_snapshot_iam_binding", + "google_compute_instant_snapshot_iam_member", + "google_compute_instant_snapshot_iam_policy", + "google_compute_interconnect", + "google_compute_interconnect_attachment", + "google_compute_interconnect_attachment_group", + "google_compute_interconnect_group", + "google_compute_machine_image", + "google_compute_machine_image_iam_binding", + "google_compute_machine_image_iam_member", + "google_compute_machine_image_iam_policy", + "google_compute_managed_ssl_certificate", + "google_compute_network", + "google_compute_network_attachment", + "google_compute_network_edge_security_service", + "google_compute_network_endpoint", + "google_compute_network_endpoint_group", + "google_compute_network_endpoints", + "google_compute_network_firewall_policy", + "google_compute_network_firewall_policy_association", + "google_compute_network_firewall_policy_packet_mirroring_rule", + "google_compute_network_firewall_policy_rule", + "google_compute_network_firewall_policy_with_rules", + "google_compute_network_peering", + "google_compute_network_peering_routes_config", + "google_compute_node_group", + "google_compute_node_template", + "google_compute_organization_security_policy", + "google_compute_organization_security_policy_association", + "google_compute_organization_security_policy_rule", + "google_compute_packet_mirroring", + "google_compute_per_instance_config", + "google_compute_preview_feature", + "google_compute_project_cloud_armor_tier", + "google_compute_project_default_network_tier", + "google_compute_project_metadata", + "google_compute_project_metadata_item", + "google_compute_public_advertised_prefix", + "google_compute_public_delegated_prefix", + "google_compute_region_autoscaler", + "google_compute_region_backend_service", + "google_compute_region_backend_service_iam_binding", + "google_compute_region_backend_service_iam_member", + "google_compute_region_backend_service_iam_policy", + "google_compute_region_commitment", + "google_compute_region_disk", + "google_compute_region_disk_iam_binding", + "google_compute_region_disk_iam_member", + "google_compute_region_disk_iam_policy", + "google_compute_region_disk_resource_policy_attachment", + "google_compute_region_health_aggregation_policy", + "google_compute_region_health_check", + "google_compute_region_instance_group_manager", + "google_compute_region_instance_template", + "google_compute_region_network_endpoint", + "google_compute_region_network_endpoint_group", + "google_compute_region_network_firewall_policy", + "google_compute_region_network_firewall_policy_association", + "google_compute_region_network_firewall_policy_rule", + "google_compute_region_network_firewall_policy_with_rules", + "google_compute_region_per_instance_config", + "google_compute_region_resize_request", + "google_compute_region_security_policy", + "google_compute_region_security_policy_rule", + "google_compute_region_ssl_certificate", + "google_compute_region_target_http_proxy", + "google_compute_region_target_https_proxy", + "google_compute_region_target_tcp_proxy", + "google_compute_region_url_map", + "google_compute_reservation", + "google_compute_resize_request", + "google_compute_resource_policy", + "google_compute_resource_policy_attachment", + "google_compute_route", + "google_compute_router", + "google_compute_router_interface", + "google_compute_router_nat", + "google_compute_router_nat_address", + "google_compute_router_peer", + "google_compute_router_route_policy", + "google_compute_security_policy", + "google_compute_security_policy_rule", + "google_compute_service_attachment", + "google_compute_shared_vpc_host_project", + "google_compute_shared_vpc_service_project", + "google_compute_snapshot", + "google_compute_snapshot_iam_binding", + "google_compute_snapshot_iam_member", + "google_compute_snapshot_iam_policy", + "google_compute_snapshot_settings", + "google_compute_ssl_certificate", + "google_compute_ssl_policy", + "google_compute_storage_pool", + "google_compute_storage_pool_iam_binding", + "google_compute_storage_pool_iam_member", + "google_compute_storage_pool_iam_policy", + "google_compute_subnetwork", + "google_compute_subnetwork_iam_binding", + "google_compute_subnetwork_iam_member", + "google_compute_subnetwork_iam_policy", + "google_compute_target_grpc_proxy", + "google_compute_target_http_proxy", + "google_compute_target_https_proxy", + "google_compute_target_instance", + "google_compute_target_pool", + "google_compute_target_ssl_proxy", + "google_compute_target_tcp_proxy", + "google_compute_url_map", + "google_compute_vpn_gateway", + "google_compute_vpn_tunnel", + "google_compute_wire_group", + "google_contact_center_insights_analysis_rule", + "google_contact_center_insights_view", + "google_container_analysis_note", + "google_container_analysis_note_iam_binding", + "google_container_analysis_note_iam_member", + "google_container_analysis_note_iam_policy", + "google_container_analysis_occurrence", + "google_container_attached_cluster", + "google_container_aws_cluster", + "google_container_aws_node_pool", + "google_container_azure_client", + "google_container_azure_cluster", + "google_container_azure_node_pool", + "google_container_cluster", + "google_container_node_pool", + "google_container_registry", + "google_data_catalog_entry", + "google_data_catalog_entry_group", + "google_data_catalog_entry_group_iam_binding", + "google_data_catalog_entry_group_iam_member", + "google_data_catalog_entry_group_iam_policy", + "google_data_catalog_policy_tag", + "google_data_catalog_policy_tag_iam_binding", + "google_data_catalog_policy_tag_iam_member", + "google_data_catalog_policy_tag_iam_policy", + "google_data_catalog_tag", + "google_data_catalog_tag_template", + "google_data_catalog_tag_template_iam_binding", + "google_data_catalog_tag_template_iam_member", + "google_data_catalog_tag_template_iam_policy", + "google_data_catalog_taxonomy", + "google_data_catalog_taxonomy_iam_binding", + "google_data_catalog_taxonomy_iam_member", + "google_data_catalog_taxonomy_iam_policy", + "google_data_fusion_instance", + "google_data_fusion_instance_iam_binding", + "google_data_fusion_instance_iam_member", + "google_data_fusion_instance_iam_policy", + "google_data_loss_prevention_deidentify_template", + "google_data_loss_prevention_discovery_config", + "google_data_loss_prevention_inspect_template", + "google_data_loss_prevention_job_trigger", + "google_data_loss_prevention_stored_info_type", + "google_data_pipeline_pipeline", + "google_database_migration_service_connection_profile", + "google_database_migration_service_migration_job", + "google_database_migration_service_private_connection", + "google_dataflow_flex_template_job", + "google_dataflow_job", + "google_dataform_repository", + "google_dataform_repository_iam_binding", + "google_dataform_repository_iam_member", + "google_dataform_repository_iam_policy", + "google_dataform_repository_release_config", + "google_dataform_repository_workflow_config", + "google_dataplex_aspect_type", + "google_dataplex_aspect_type_iam_binding", + "google_dataplex_aspect_type_iam_member", + "google_dataplex_aspect_type_iam_policy", + "google_dataplex_asset", + "google_dataplex_asset_iam_binding", + "google_dataplex_asset_iam_member", + "google_dataplex_asset_iam_policy", + "google_dataplex_datascan", + "google_dataplex_datascan_iam_binding", + "google_dataplex_datascan_iam_member", + "google_dataplex_datascan_iam_policy", + "google_dataplex_entry", + "google_dataplex_entry_group", + "google_dataplex_entry_group_iam_binding", + "google_dataplex_entry_group_iam_member", + "google_dataplex_entry_group_iam_policy", + "google_dataplex_entry_link", + "google_dataplex_entry_type", + "google_dataplex_entry_type_iam_binding", + "google_dataplex_entry_type_iam_member", + "google_dataplex_entry_type_iam_policy", + "google_dataplex_glossary", + "google_dataplex_glossary_category", + "google_dataplex_glossary_iam_binding", + "google_dataplex_glossary_iam_member", + "google_dataplex_glossary_iam_policy", + "google_dataplex_glossary_term", + "google_dataplex_lake", + "google_dataplex_lake_iam_binding", + "google_dataplex_lake_iam_member", + "google_dataplex_lake_iam_policy", + "google_dataplex_task", + "google_dataplex_task_iam_binding", + "google_dataplex_task_iam_member", + "google_dataplex_task_iam_policy", + "google_dataplex_zone", + "google_dataplex_zone_iam_binding", + "google_dataplex_zone_iam_member", + "google_dataplex_zone_iam_policy", + "google_dataproc_autoscaling_policy", + "google_dataproc_autoscaling_policy_iam_binding", + "google_dataproc_autoscaling_policy_iam_member", + "google_dataproc_autoscaling_policy_iam_policy", + "google_dataproc_batch", + "google_dataproc_cluster", + "google_dataproc_cluster_iam_binding", + "google_dataproc_cluster_iam_member", + "google_dataproc_cluster_iam_policy", + "google_dataproc_gdc_application_environment", + "google_dataproc_gdc_service_instance", + "google_dataproc_gdc_spark_application", + "google_dataproc_job", + "google_dataproc_job_iam_binding", + "google_dataproc_job_iam_member", + "google_dataproc_job_iam_policy", + "google_dataproc_metastore_database_iam_binding", + "google_dataproc_metastore_database_iam_member", + "google_dataproc_metastore_database_iam_policy", + "google_dataproc_metastore_federation", + "google_dataproc_metastore_federation_iam_binding", + "google_dataproc_metastore_federation_iam_member", + "google_dataproc_metastore_federation_iam_policy", + "google_dataproc_metastore_service", + "google_dataproc_metastore_service_iam_binding", + "google_dataproc_metastore_service_iam_member", + "google_dataproc_metastore_service_iam_policy", + "google_dataproc_metastore_table_iam_binding", + "google_dataproc_metastore_table_iam_member", + "google_dataproc_metastore_table_iam_policy", + "google_dataproc_session_template", + "google_dataproc_workflow_template", + "google_datastream_connection_profile", + "google_datastream_private_connection", + "google_datastream_stream", + "google_deployment_manager_deployment", + "google_developer_connect_account_connector", + "google_developer_connect_connection", + "google_developer_connect_git_repository_link", + "google_developer_connect_insights_config", + "google_dialogflow_agent", + "google_dialogflow_conversation_profile", + "google_dialogflow_cx_agent", + "google_dialogflow_cx_entity_type", + "google_dialogflow_cx_environment", + "google_dialogflow_cx_flow", + "google_dialogflow_cx_generative_settings", + "google_dialogflow_cx_generator", + "google_dialogflow_cx_intent", + "google_dialogflow_cx_page", + "google_dialogflow_cx_playbook", + "google_dialogflow_cx_security_settings", + "google_dialogflow_cx_tool", + "google_dialogflow_cx_version", + "google_dialogflow_cx_webhook", + "google_dialogflow_encryption_spec", + "google_dialogflow_entity_type", + "google_dialogflow_fulfillment", + "google_dialogflow_intent", + "google_discovery_engine_acl_config", + "google_discovery_engine_assistant", + "google_discovery_engine_chat_engine", + "google_discovery_engine_cmek_config", + "google_discovery_engine_control", + "google_discovery_engine_data_connector", + "google_discovery_engine_data_store", + "google_discovery_engine_license_config", + "google_discovery_engine_recommendation_engine", + "google_discovery_engine_schema", + "google_discovery_engine_search_engine", + "google_discovery_engine_sitemap", + "google_discovery_engine_target_site", + "google_discovery_engine_user_store", + "google_dns_managed_zone", + "google_dns_managed_zone_iam_binding", + "google_dns_managed_zone_iam_member", + "google_dns_managed_zone_iam_policy", + "google_dns_policy", + "google_dns_record_set", + "google_dns_response_policy", + "google_dns_response_policy_rule", + "google_document_ai_processor", + "google_document_ai_processor_default_version", + "google_document_ai_warehouse_document_schema", + "google_document_ai_warehouse_location", + "google_edgecontainer_cluster", + "google_edgecontainer_node_pool", + "google_edgecontainer_vpn_connection", + "google_edgenetwork_interconnect_attachment", + "google_edgenetwork_network", + "google_edgenetwork_subnet", + "google_endpoints_service", + "google_endpoints_service_consumers_iam_binding", + "google_endpoints_service_consumers_iam_member", + "google_endpoints_service_consumers_iam_policy", + "google_endpoints_service_iam_binding", + "google_endpoints_service_iam_member", + "google_endpoints_service_iam_policy", + "google_essential_contacts_contact", + "google_eventarc_channel", + "google_eventarc_enrollment", + "google_eventarc_google_api_source", + "google_eventarc_google_channel_config", + "google_eventarc_message_bus", + "google_eventarc_pipeline", + "google_eventarc_trigger", + "google_filestore_backup", + "google_filestore_instance", + "google_filestore_snapshot", + "google_firebase_android_app", + "google_firebase_app_check_app_attest_config", + "google_firebase_app_check_debug_token", + "google_firebase_app_check_device_check_config", + "google_firebase_app_check_play_integrity_config", + "google_firebase_app_check_recaptcha_enterprise_config", + "google_firebase_app_check_recaptcha_v3_config", + "google_firebase_app_check_service_config", + "google_firebase_app_hosting_backend", + "google_firebase_app_hosting_build", + "google_firebase_app_hosting_default_domain", + "google_firebase_app_hosting_domain", + "google_firebase_app_hosting_traffic", + "google_firebase_apple_app", + "google_firebase_data_connect_service", + "google_firebase_database_instance", + "google_firebase_extensions_instance", + "google_firebase_hosting_channel", + "google_firebase_hosting_custom_domain", + "google_firebase_hosting_release", + "google_firebase_hosting_site", + "google_firebase_hosting_version", + "google_firebase_project", + "google_firebase_project_location", + "google_firebase_storage_bucket", + "google_firebase_web_app", + "google_firebaserules_release", + "google_firebaserules_ruleset", + "google_firestore_backup_schedule", + "google_firestore_database", + "google_firestore_document", + "google_firestore_field", + "google_firestore_index", + "google_firestore_user_creds", + "google_folder", + "google_folder_access_approval_settings", + "google_folder_iam_audit_config", + "google_folder_iam_binding", + "google_folder_iam_member", + "google_folder_iam_policy", + "google_folder_organization_policy", + "google_folder_service_identity", + "google_gemini_code_repository_index", + "google_gemini_code_tools_setting", + "google_gemini_code_tools_setting_binding", + "google_gemini_data_sharing_with_google_setting", + "google_gemini_data_sharing_with_google_setting_binding", + "google_gemini_gemini_gcp_enablement_setting", + "google_gemini_gemini_gcp_enablement_setting_binding", + "google_gemini_logging_setting", + "google_gemini_logging_setting_binding", + "google_gemini_release_channel_setting", + "google_gemini_release_channel_setting_binding", + "google_gemini_repository_group", + "google_gemini_repository_group_iam_binding", + "google_gemini_repository_group_iam_member", + "google_gemini_repository_group_iam_policy", + "google_gke_backup_backup_channel", + "google_gke_backup_backup_plan", + "google_gke_backup_backup_plan_iam_binding", + "google_gke_backup_backup_plan_iam_member", + "google_gke_backup_backup_plan_iam_policy", + "google_gke_backup_restore_channel", + "google_gke_backup_restore_plan", + "google_gke_backup_restore_plan_iam_binding", + "google_gke_backup_restore_plan_iam_member", + "google_gke_backup_restore_plan_iam_policy", + "google_gke_hub_feature", + "google_gke_hub_feature_iam_binding", + "google_gke_hub_feature_iam_member", + "google_gke_hub_feature_iam_policy", + "google_gke_hub_feature_membership", + "google_gke_hub_fleet", + "google_gke_hub_membership", + "google_gke_hub_membership_binding", + "google_gke_hub_membership_iam_binding", + "google_gke_hub_membership_iam_member", + "google_gke_hub_membership_iam_policy", + "google_gke_hub_membership_rbac_role_binding", + "google_gke_hub_namespace", + "google_gke_hub_scope", + "google_gke_hub_scope_iam_binding", + "google_gke_hub_scope_iam_member", + "google_gke_hub_scope_iam_policy", + "google_gke_hub_scope_rbac_role_binding", + "google_gkeonprem_bare_metal_admin_cluster", + "google_gkeonprem_bare_metal_cluster", + "google_gkeonprem_bare_metal_node_pool", + "google_gkeonprem_vmware_admin_cluster", + "google_gkeonprem_vmware_cluster", + "google_gkeonprem_vmware_node_pool", + "google_healthcare_consent_store", + "google_healthcare_consent_store_iam_binding", + "google_healthcare_consent_store_iam_member", + "google_healthcare_consent_store_iam_policy", + "google_healthcare_dataset", + "google_healthcare_dataset_iam_binding", + "google_healthcare_dataset_iam_member", + "google_healthcare_dataset_iam_policy", + "google_healthcare_dicom_store", + "google_healthcare_dicom_store_iam_binding", + "google_healthcare_dicom_store_iam_member", + "google_healthcare_dicom_store_iam_policy", + "google_healthcare_fhir_store", + "google_healthcare_fhir_store_iam_binding", + "google_healthcare_fhir_store_iam_member", + "google_healthcare_fhir_store_iam_policy", + "google_healthcare_hl7_v2_store", + "google_healthcare_hl7_v2_store_iam_binding", + "google_healthcare_hl7_v2_store_iam_member", + "google_healthcare_hl7_v2_store_iam_policy", + "google_healthcare_pipeline_job", + "google_healthcare_workspace", + "google_iam_access_boundary_policy", + "google_iam_deny_policy", + "google_iam_folders_policy_binding", + "google_iam_oauth_client", + "google_iam_oauth_client_credential", + "google_iam_organizations_policy_binding", + "google_iam_principal_access_boundary_policy", + "google_iam_projects_policy_binding", + "google_iam_workforce_pool", + "google_iam_workforce_pool_iam_binding", + "google_iam_workforce_pool_iam_member", + "google_iam_workforce_pool_iam_policy", + "google_iam_workforce_pool_provider", + "google_iam_workforce_pool_provider_key", + "google_iam_workforce_pool_provider_scim_tenant", + "google_iam_workload_identity_pool", + "google_iam_workload_identity_pool_iam_binding", + "google_iam_workload_identity_pool_iam_member", + "google_iam_workload_identity_pool_iam_policy", + "google_iam_workload_identity_pool_managed_identity", + "google_iam_workload_identity_pool_namespace", + "google_iam_workload_identity_pool_provider", + "google_iap_app_engine_service_iam_binding", + "google_iap_app_engine_service_iam_member", + "google_iap_app_engine_service_iam_policy", + "google_iap_app_engine_version_iam_binding", + "google_iap_app_engine_version_iam_member", + "google_iap_app_engine_version_iam_policy", + "google_iap_brand", + "google_iap_client", + "google_iap_settings", + "google_iap_tunnel_dest_group", + "google_iap_tunnel_dest_group_iam_binding", + "google_iap_tunnel_dest_group_iam_member", + "google_iap_tunnel_dest_group_iam_policy", + "google_iap_tunnel_iam_binding", + "google_iap_tunnel_iam_member", + "google_iap_tunnel_iam_policy", + "google_iap_tunnel_instance_iam_binding", + "google_iap_tunnel_instance_iam_member", + "google_iap_tunnel_instance_iam_policy", + "google_iap_web_backend_service_iam_binding", + "google_iap_web_backend_service_iam_member", + "google_iap_web_backend_service_iam_policy", + "google_iap_web_cloud_run_service_iam_binding", + "google_iap_web_cloud_run_service_iam_member", + "google_iap_web_cloud_run_service_iam_policy", + "google_iap_web_forwarding_rule_service_iam_binding", + "google_iap_web_forwarding_rule_service_iam_member", + "google_iap_web_forwarding_rule_service_iam_policy", + "google_iap_web_iam_binding", + "google_iap_web_iam_member", + "google_iap_web_iam_policy", + "google_iap_web_region_backend_service_iam_binding", + "google_iap_web_region_backend_service_iam_member", + "google_iap_web_region_backend_service_iam_policy", + "google_iap_web_region_forwarding_rule_service_iam_binding", + "google_iap_web_region_forwarding_rule_service_iam_member", + "google_iap_web_region_forwarding_rule_service_iam_policy", + "google_iap_web_type_app_engine_iam_binding", + "google_iap_web_type_app_engine_iam_member", + "google_iap_web_type_app_engine_iam_policy", + "google_iap_web_type_compute_iam_binding", + "google_iap_web_type_compute_iam_member", + "google_iap_web_type_compute_iam_policy", + "google_identity_platform_config", + "google_identity_platform_default_supported_idp_config", + "google_identity_platform_inbound_saml_config", + "google_identity_platform_oauth_idp_config", + "google_identity_platform_tenant", + "google_identity_platform_tenant_default_supported_idp_config", + "google_identity_platform_tenant_inbound_saml_config", + "google_identity_platform_tenant_oauth_idp_config", + "google_integration_connectors_connection", + "google_integration_connectors_endpoint_attachment", + "google_integration_connectors_managed_zone", + "google_integrations_auth_config", + "google_integrations_client", + "google_kms_autokey_config", + "google_kms_crypto_key", + "google_kms_crypto_key_iam_binding", + "google_kms_crypto_key_iam_member", + "google_kms_crypto_key_iam_policy", + "google_kms_crypto_key_version", + "google_kms_ekm_connection", + "google_kms_ekm_connection_iam_binding", + "google_kms_ekm_connection_iam_member", + "google_kms_ekm_connection_iam_policy", + "google_kms_folder_kaj_policy_config", + "google_kms_key_handle", + "google_kms_key_ring", + "google_kms_key_ring_iam_binding", + "google_kms_key_ring_iam_member", + "google_kms_key_ring_iam_policy", + "google_kms_key_ring_import_job", + "google_kms_organization_kaj_policy_config", + "google_kms_project_kaj_policy_config", + "google_kms_secret_ciphertext", + "google_logging_billing_account_bucket_config", + "google_logging_billing_account_exclusion", + "google_logging_billing_account_sink", + "google_logging_folder_bucket_config", + "google_logging_folder_exclusion", + "google_logging_folder_settings", + "google_logging_folder_sink", + "google_logging_linked_dataset", + "google_logging_log_scope", + "google_logging_log_view", + "google_logging_log_view_iam_binding", + "google_logging_log_view_iam_member", + "google_logging_log_view_iam_policy", + "google_logging_metric", + "google_logging_organization_bucket_config", + "google_logging_organization_exclusion", + "google_logging_organization_settings", + "google_logging_organization_sink", + "google_logging_project_bucket_config", + "google_logging_project_exclusion", + "google_logging_project_sink", + "google_looker_instance", + "google_lustre_instance", + "google_managed_kafka_acl", + "google_managed_kafka_cluster", + "google_managed_kafka_connect_cluster", + "google_managed_kafka_connector", + "google_managed_kafka_topic", + "google_memcache_instance", + "google_memorystore_instance", + "google_memorystore_instance_desired_user_created_endpoints", + "google_migration_center_group", + "google_migration_center_preference_set", + "google_ml_engine_model", + "google_model_armor_floorsetting", + "google_model_armor_template", + "google_monitoring_alert_policy", + "google_monitoring_custom_service", + "google_monitoring_dashboard", + "google_monitoring_group", + "google_monitoring_metric_descriptor", + "google_monitoring_monitored_project", + "google_monitoring_notification_channel", + "google_monitoring_service", + "google_monitoring_slo", + "google_monitoring_uptime_check_config", + "google_netapp_active_directory", + "google_netapp_backup", + "google_netapp_backup_policy", + "google_netapp_backup_vault", + "google_netapp_host_group", + "google_netapp_kmsconfig", + "google_netapp_storage_pool", + "google_netapp_volume", + "google_netapp_volume_quota_rule", + "google_netapp_volume_replication", + "google_netapp_volume_snapshot", + "google_network_connectivity_group", + "google_network_connectivity_hub", + "google_network_connectivity_internal_range", + "google_network_connectivity_policy_based_route", + "google_network_connectivity_regional_endpoint", + "google_network_connectivity_service_connection_policy", + "google_network_connectivity_spoke", + "google_network_management_organization_vpc_flow_logs_config", + "google_network_management_vpc_flow_logs_config", + "google_network_security_address_group", + "google_network_security_address_group_iam_binding", + "google_network_security_address_group_iam_member", + "google_network_security_address_group_iam_policy", + "google_network_security_authorization_policy", + "google_network_security_authz_policy", + "google_network_security_backend_authentication_config", + "google_network_security_client_tls_policy", + "google_network_security_dns_threat_detector", + "google_network_security_firewall_endpoint", + "google_network_security_firewall_endpoint_association", + "google_network_security_gateway_security_policy", + "google_network_security_gateway_security_policy_rule", + "google_network_security_intercept_deployment", + "google_network_security_intercept_deployment_group", + "google_network_security_intercept_endpoint_group", + "google_network_security_intercept_endpoint_group_association", + "google_network_security_mirroring_deployment", + "google_network_security_mirroring_deployment_group", + "google_network_security_mirroring_endpoint", + "google_network_security_mirroring_endpoint_group", + "google_network_security_mirroring_endpoint_group_association", + "google_network_security_security_profile", + "google_network_security_security_profile_group", + "google_network_security_server_tls_policy", + "google_network_security_tls_inspection_policy", + "google_network_security_url_lists", + "google_network_services_authz_extension", + "google_network_services_edge_cache_keyset", + "google_network_services_edge_cache_origin", + "google_network_services_edge_cache_service", + "google_network_services_endpoint_policy", + "google_network_services_gateway", + "google_network_services_grpc_route", + "google_network_services_http_route", + "google_network_services_lb_route_extension", + "google_network_services_lb_traffic_extension", + "google_network_services_mesh", + "google_network_services_multicast_domain", + "google_network_services_service_binding", + "google_network_services_service_lb_policies", + "google_network_services_tcp_route", + "google_network_services_tls_route", + "google_network_services_wasm_plugin", + "google_notebooks_environment", + "google_notebooks_instance", + "google_notebooks_instance_iam_binding", + "google_notebooks_instance_iam_member", + "google_notebooks_instance_iam_policy", + "google_notebooks_runtime", + "google_notebooks_runtime_iam_binding", + "google_notebooks_runtime_iam_member", + "google_notebooks_runtime_iam_policy", + "google_observability_trace_scope", + "google_oracle_database_autonomous_database", + "google_oracle_database_cloud_exadata_infrastructure", + "google_oracle_database_cloud_vm_cluster", + "google_oracle_database_db_system", + "google_oracle_database_exascale_db_storage_vault", + "google_oracle_database_odb_network", + "google_oracle_database_odb_subnet", + "google_org_policy_custom_constraint", + "google_org_policy_policy", + "google_organization_access_approval_settings", + "google_organization_iam_audit_config", + "google_organization_iam_binding", + "google_organization_iam_custom_role", + "google_organization_iam_member", + "google_organization_iam_policy", + "google_organization_policy", + "google_os_config_guest_policies", + "google_os_config_os_policy_assignment", + "google_os_config_patch_deployment", + "google_os_config_v2_policy_orchestrator", + "google_os_config_v2_policy_orchestrator_for_folder", + "google_os_config_v2_policy_orchestrator_for_organization", + "google_os_login_ssh_public_key", + "google_parallelstore_instance", + "google_parameter_manager_parameter", + "google_parameter_manager_parameter_version", + "google_parameter_manager_regional_parameter", + "google_parameter_manager_regional_parameter_version", + "google_privateca_ca_pool", + "google_privateca_ca_pool_iam_binding", + "google_privateca_ca_pool_iam_member", + "google_privateca_ca_pool_iam_policy", + "google_privateca_certificate", + "google_privateca_certificate_authority", + "google_privateca_certificate_template", + "google_privateca_certificate_template_iam_binding", + "google_privateca_certificate_template_iam_member", + "google_privateca_certificate_template_iam_policy", + "google_privileged_access_manager_entitlement", + "google_privileged_access_manager_settings", + "google_project", + "google_project_access_approval_settings", + "google_project_default_service_accounts", + "google_project_iam_audit_config", + "google_project_iam_binding", + "google_project_iam_custom_role", + "google_project_iam_member", + "google_project_iam_member_remove", + "google_project_iam_policy", + "google_project_organization_policy", + "google_project_service", + "google_project_service_identity", + "google_project_services", + "google_project_usage_export_bucket", + "google_public_ca_external_account_key", + "google_pubsub_lite_reservation", + "google_pubsub_lite_subscription", + "google_pubsub_lite_topic", + "google_pubsub_schema", + "google_pubsub_schema_iam_binding", + "google_pubsub_schema_iam_member", + "google_pubsub_schema_iam_policy", + "google_pubsub_subscription", + "google_pubsub_subscription_iam_binding", + "google_pubsub_subscription_iam_member", + "google_pubsub_subscription_iam_policy", + "google_pubsub_topic", + "google_pubsub_topic_iam_binding", + "google_pubsub_topic_iam_member", + "google_pubsub_topic_iam_policy", + "google_recaptcha_enterprise_key", + "google_redis_cluster", + "google_redis_cluster_user_created_connections", + "google_redis_instance", + "google_resource_manager_capability", + "google_resource_manager_lien", + "google_runtimeconfig_config", + "google_runtimeconfig_config_iam_binding", + "google_runtimeconfig_config_iam_member", + "google_runtimeconfig_config_iam_policy", + "google_runtimeconfig_variable", + "google_saas_runtime_release", + "google_saas_runtime_rollout_kind", + "google_saas_runtime_saas", + "google_saas_runtime_tenant", + "google_saas_runtime_unit", + "google_saas_runtime_unit_kind", + "google_scc_event_threat_detection_custom_module", + "google_scc_folder_custom_module", + "google_scc_folder_notification_config", + "google_scc_folder_scc_big_query_export", + "google_scc_management_folder_security_health_analytics_custom_module", + "google_scc_management_organization_event_threat_detection_custom_module", + "google_scc_management_organization_security_health_analytics_custom_module", + "google_scc_management_project_security_health_analytics_custom_module", + "google_scc_mute_config", + "google_scc_notification_config", + "google_scc_organization_custom_module", + "google_scc_organization_scc_big_query_export", + "google_scc_project_custom_module", + "google_scc_project_notification_config", + "google_scc_project_scc_big_query_export", + "google_scc_source", + "google_scc_source_iam_binding", + "google_scc_source_iam_member", + "google_scc_source_iam_policy", + "google_scc_v2_folder_mute_config", + "google_scc_v2_folder_notification_config", + "google_scc_v2_folder_scc_big_query_export", + "google_scc_v2_organization_mute_config", + "google_scc_v2_organization_notification_config", + "google_scc_v2_organization_scc_big_query_export", + "google_scc_v2_organization_scc_big_query_exports", + "google_scc_v2_organization_source_iam_binding", + "google_scc_v2_organization_source_iam_member", + "google_scc_v2_organization_source_iam_policy", + "google_scc_v2_project_mute_config", + "google_scc_v2_project_notification_config", + "google_scc_v2_project_scc_big_query_export", + "google_secret_manager_regional_secret", + "google_secret_manager_regional_secret_iam_binding", + "google_secret_manager_regional_secret_iam_member", + "google_secret_manager_regional_secret_iam_policy", + "google_secret_manager_regional_secret_version", + "google_secret_manager_secret", + "google_secret_manager_secret_iam_binding", + "google_secret_manager_secret_iam_member", + "google_secret_manager_secret_iam_policy", + "google_secret_manager_secret_version", + "google_secure_source_manager_branch_rule", + "google_secure_source_manager_hook", + "google_secure_source_manager_instance", + "google_secure_source_manager_instance_iam_binding", + "google_secure_source_manager_instance_iam_member", + "google_secure_source_manager_instance_iam_policy", + "google_secure_source_manager_repository", + "google_secure_source_manager_repository_iam_binding", + "google_secure_source_manager_repository_iam_member", + "google_secure_source_manager_repository_iam_policy", + "google_security_scanner_scan_config", + "google_securityposture_posture", + "google_service_account", + "google_service_account_iam_binding", + "google_service_account_iam_member", + "google_service_account_iam_policy", + "google_service_account_key", + "google_service_directory_endpoint", + "google_service_directory_namespace", + "google_service_directory_namespace_iam_binding", + "google_service_directory_namespace_iam_member", + "google_service_directory_namespace_iam_policy", + "google_service_directory_service", + "google_service_directory_service_iam_binding", + "google_service_directory_service_iam_member", + "google_service_directory_service_iam_policy", + "google_service_networking_connection", + "google_service_networking_peered_dns_domain", + "google_service_networking_vpc_service_controls", + "google_service_usage_consumer_quota_override", + "google_site_verification_owner", + "google_site_verification_web_resource", + "google_sourcerepo_repository", + "google_sourcerepo_repository_iam_binding", + "google_sourcerepo_repository_iam_member", + "google_sourcerepo_repository_iam_policy", + "google_spanner_backup_schedule", + "google_spanner_database", + "google_spanner_database_iam_binding", + "google_spanner_database_iam_member", + "google_spanner_database_iam_policy", + "google_spanner_instance", + "google_spanner_instance_config", + "google_spanner_instance_iam_binding", + "google_spanner_instance_iam_member", + "google_spanner_instance_iam_policy", + "google_spanner_instance_partition", + "google_sql_database", + "google_sql_database_instance", + "google_sql_source_representation_instance", + "google_sql_ssl_cert", + "google_sql_user", + "google_storage_anywhere_cache", + "google_storage_batch_operations_job", + "google_storage_bucket", + "google_storage_bucket_access_control", + "google_storage_bucket_acl", + "google_storage_bucket_iam_binding", + "google_storage_bucket_iam_member", + "google_storage_bucket_iam_policy", + "google_storage_bucket_object", + "google_storage_control_folder_intelligence_config", + "google_storage_control_organization_intelligence_config", + "google_storage_control_project_intelligence_config", + "google_storage_default_object_access_control", + "google_storage_default_object_acl", + "google_storage_folder", + "google_storage_hmac_key", + "google_storage_insights_dataset_config", + "google_storage_insights_report_config", + "google_storage_managed_folder", + "google_storage_managed_folder_iam_binding", + "google_storage_managed_folder_iam_member", + "google_storage_managed_folder_iam_policy", + "google_storage_notification", + "google_storage_object_access_control", + "google_storage_object_acl", + "google_storage_transfer_agent_pool", + "google_storage_transfer_job", + "google_tags_location_tag_binding", + "google_tags_tag_binding", + "google_tags_tag_key", + "google_tags_tag_key_iam_binding", + "google_tags_tag_key_iam_member", + "google_tags_tag_key_iam_policy", + "google_tags_tag_value", + "google_tags_tag_value_iam_binding", + "google_tags_tag_value_iam_member", + "google_tags_tag_value_iam_policy", + "google_tpu_node", + "google_tpu_v2_queued_resource", + "google_tpu_v2_vm", + "google_transcoder_job", + "google_transcoder_job_template", + "google_vertex_ai_cache_config", + "google_vertex_ai_dataset", + "google_vertex_ai_deployment_resource_pool", + "google_vertex_ai_endpoint", + "google_vertex_ai_endpoint_iam_binding", + "google_vertex_ai_endpoint_iam_member", + "google_vertex_ai_endpoint_iam_policy", + "google_vertex_ai_endpoint_with_model_garden_deployment", + "google_vertex_ai_feature_group", + "google_vertex_ai_feature_group_feature", + "google_vertex_ai_feature_group_iam_binding", + "google_vertex_ai_feature_group_iam_member", + "google_vertex_ai_feature_group_iam_policy", + "google_vertex_ai_feature_online_store", + "google_vertex_ai_feature_online_store_featureview", + "google_vertex_ai_feature_online_store_featureview_iam_binding", + "google_vertex_ai_feature_online_store_featureview_iam_member", + "google_vertex_ai_feature_online_store_featureview_iam_policy", + "google_vertex_ai_feature_online_store_iam_binding", + "google_vertex_ai_feature_online_store_iam_member", + "google_vertex_ai_feature_online_store_iam_policy", + "google_vertex_ai_featurestore", + "google_vertex_ai_featurestore_entitytype", + "google_vertex_ai_featurestore_entitytype_feature", + "google_vertex_ai_featurestore_entitytype_iam_binding", + "google_vertex_ai_featurestore_entitytype_iam_member", + "google_vertex_ai_featurestore_entitytype_iam_policy", + "google_vertex_ai_featurestore_iam_binding", + "google_vertex_ai_featurestore_iam_member", + "google_vertex_ai_featurestore_iam_policy", + "google_vertex_ai_index", + "google_vertex_ai_index_endpoint", + "google_vertex_ai_index_endpoint_deployed_index", + "google_vertex_ai_metadata_store", + "google_vertex_ai_rag_engine_config", + "google_vertex_ai_reasoning_engine", + "google_vertex_ai_tensorboard", + "google_vmwareengine_cluster", + "google_vmwareengine_external_access_rule", + "google_vmwareengine_external_address", + "google_vmwareengine_network", + "google_vmwareengine_network_peering", + "google_vmwareengine_network_policy", + "google_vmwareengine_private_cloud", + "google_vmwareengine_subnet", + "google_vpc_access_connector", + "google_workbench_instance", + "google_workbench_instance_iam_binding", + "google_workbench_instance_iam_member", + "google_workbench_instance_iam_policy", + "google_workflows_workflow", + "google_workstations_workstation", + "google_workstations_workstation_cluster", + "google_workstations_workstation_config", + "google_workstations_workstation_config_iam_binding", + "google_workstations_workstation_config_iam_member", + "google_workstations_workstation_config_iam_policy", + "google_workstations_workstation_iam_binding", + "google_workstations_workstation_iam_member", + "google_workstations_workstation_iam_policy" + ], + "dataSources": [ + "google_access_approval_folder_service_account", + "google_access_approval_organization_service_account", + "google_access_approval_project_service_account", + "google_access_context_manager_access_policy", + "google_access_context_manager_access_policy_iam_policy", + "google_active_folder", + "google_alloydb_cluster", + "google_alloydb_instance", + "google_alloydb_locations", + "google_alloydb_supported_database_flags", + "google_api_gateway_api_config_iam_policy", + "google_api_gateway_api_iam_policy", + "google_api_gateway_gateway_iam_policy", + "google_apigee_environment_iam_policy", + "google_app_engine_default_service_account", + "google_apphub_application", + "google_apphub_discovered_service", + "google_apphub_discovered_workload", + "google_artifact_registry_docker_image", + "google_artifact_registry_docker_images", + "google_artifact_registry_locations", + "google_artifact_registry_maven_artifact", + "google_artifact_registry_maven_artifacts", + "google_artifact_registry_npm_package", + "google_artifact_registry_npm_packages", + "google_artifact_registry_packages", + "google_artifact_registry_python_package", + "google_artifact_registry_python_packages", + "google_artifact_registry_repositories", + "google_artifact_registry_repository", + "google_artifact_registry_repository_iam_policy", + "google_artifact_registry_tags", + "google_artifact_registry_versions", + "google_backup_dr_backup", + "google_backup_dr_backup_plan_association", + "google_backup_dr_backup_plan_associations", + "google_backup_dr_backup_vault", + "google_backup_dr_data_source", + "google_backup_dr_data_source_reference", + "google_backup_dr_data_source_references", + "google_beyondcorp_app_connection", + "google_beyondcorp_app_connector", + "google_beyondcorp_app_gateway", + "google_beyondcorp_security_gateway", + "google_beyondcorp_security_gateway_application_iam_policy", + "google_beyondcorp_security_gateway_iam_policy", + "google_bigquery_analytics_hub_data_exchange_iam_policy", + "google_bigquery_analytics_hub_listing_iam_policy", + "google_bigquery_connection_iam_policy", + "google_bigquery_datapolicy_data_policy_iam_policy", + "google_bigquery_datapolicyv2_data_policy_iam_policy", + "google_bigquery_dataset", + "google_bigquery_dataset_iam_policy", + "google_bigquery_datasets", + "google_bigquery_default_service_account", + "google_bigquery_table", + "google_bigquery_table_iam_policy", + "google_bigquery_tables", + "google_bigtable_instance_iam_policy", + "google_bigtable_table_iam_policy", + "google_billing_account", + "google_billing_account_iam_policy", + "google_binary_authorization_attestor_iam_policy", + "google_certificate_manager_certificate_map", + "google_certificate_manager_certificates", + "google_certificate_manager_dns_authorization", + "google_client_config", + "google_client_openid_userinfo", + "google_cloud_identity_group_lookup", + "google_cloud_identity_group_memberships", + "google_cloud_identity_group_transitive_memberships", + "google_cloud_identity_groups", + "google_cloud_identity_policy", + "google_cloud_quotas_quota_info", + "google_cloud_quotas_quota_infos", + "google_cloud_run_locations", + "google_cloud_run_service", + "google_cloud_run_service_iam_policy", + "google_cloud_run_v2_job", + "google_cloud_run_v2_job_iam_policy", + "google_cloud_run_v2_service", + "google_cloud_run_v2_service_iam_policy", + "google_cloud_run_v2_worker_pool", + "google_cloud_run_v2_worker_pool_iam_policy", + "google_cloud_tasks_queue_iam_policy", + "google_cloudbuild_trigger", + "google_cloudbuildv2_connection_iam_policy", + "google_clouddeploy_custom_target_type_iam_policy", + "google_clouddeploy_delivery_pipeline_iam_policy", + "google_clouddeploy_target_iam_policy", + "google_cloudfunctions2_function", + "google_cloudfunctions2_function_iam_policy", + "google_cloudfunctions_function", + "google_cloudfunctions_function_iam_policy", + "google_colab_runtime_template_iam_policy", + "google_composer_environment", + "google_composer_image_versions", + "google_composer_user_workloads_config_map", + "google_composer_user_workloads_secret", + "google_compute_address", + "google_compute_addresses", + "google_compute_backend_bucket", + "google_compute_backend_bucket_iam_policy", + "google_compute_backend_service", + "google_compute_backend_service_iam_policy", + "google_compute_default_service_account", + "google_compute_disk", + "google_compute_disk_iam_policy", + "google_compute_forwarding_rule", + "google_compute_forwarding_rules", + "google_compute_global_address", + "google_compute_global_forwarding_rule", + "google_compute_ha_vpn_gateway", + "google_compute_health_check", + "google_compute_image", + "google_compute_image_iam_policy", + "google_compute_images", + "google_compute_instance", + "google_compute_instance_group", + "google_compute_instance_group_manager", + "google_compute_instance_guest_attributes", + "google_compute_instance_iam_policy", + "google_compute_instance_serial_port", + "google_compute_instance_template", + "google_compute_instance_template_iam_policy", + "google_compute_instant_snapshot_iam_policy", + "google_compute_interconnect_location", + "google_compute_interconnect_locations", + "google_compute_lb_ip_ranges", + "google_compute_machine_image_iam_policy", + "google_compute_machine_types", + "google_compute_network", + "google_compute_network_attachment", + "google_compute_network_endpoint_group", + "google_compute_network_peering", + "google_compute_networks", + "google_compute_node_types", + "google_compute_region_backend_service", + "google_compute_region_backend_service_iam_policy", + "google_compute_region_disk", + "google_compute_region_disk_iam_policy", + "google_compute_region_instance_group", + "google_compute_region_instance_group_manager", + "google_compute_region_instance_template", + "google_compute_region_network_endpoint_group", + "google_compute_region_ssl_certificate", + "google_compute_regions", + "google_compute_reservation", + "google_compute_reservation_block", + "google_compute_reservation_sub_block", + "google_compute_resource_policy", + "google_compute_router", + "google_compute_router_nat", + "google_compute_router_status", + "google_compute_security_policy", + "google_compute_snapshot", + "google_compute_snapshot_iam_policy", + "google_compute_ssl_certificate", + "google_compute_ssl_policy", + "google_compute_storage_pool_iam_policy", + "google_compute_storage_pool_types", + "google_compute_subnetwork", + "google_compute_subnetwork_iam_policy", + "google_compute_subnetworks", + "google_compute_vpn_gateway", + "google_compute_zones", + "google_container_analysis_note_iam_policy", + "google_container_attached_install_manifest", + "google_container_attached_versions", + "google_container_aws_versions", + "google_container_azure_versions", + "google_container_cluster", + "google_container_engine_versions", + "google_container_registry_image", + "google_container_registry_repository", + "google_data_catalog_entry_group_iam_policy", + "google_data_catalog_policy_tag_iam_policy", + "google_data_catalog_tag_template_iam_policy", + "google_data_catalog_taxonomy_iam_policy", + "google_data_fusion_instance_iam_policy", + "google_dataform_repository_iam_policy", + "google_dataplex_aspect_type_iam_policy", + "google_dataplex_asset_iam_policy", + "google_dataplex_data_quality_rules", + "google_dataplex_datascan_iam_policy", + "google_dataplex_entry_group_iam_policy", + "google_dataplex_entry_type_iam_policy", + "google_dataplex_glossary_iam_policy", + "google_dataplex_lake_iam_policy", + "google_dataplex_task_iam_policy", + "google_dataplex_zone_iam_policy", + "google_dataproc_autoscaling_policy_iam_policy", + "google_dataproc_cluster_iam_policy", + "google_dataproc_job_iam_policy", + "google_dataproc_metastore_database_iam_policy", + "google_dataproc_metastore_federation_iam_policy", + "google_dataproc_metastore_service", + "google_dataproc_metastore_service_iam_policy", + "google_dataproc_metastore_table_iam_policy", + "google_datastream_static_ips", + "google_dns_keys", + "google_dns_managed_zone", + "google_dns_managed_zone_iam_policy", + "google_dns_managed_zones", + "google_dns_record_set", + "google_endpoints_service_consumers_iam_policy", + "google_endpoints_service_iam_policy", + "google_filestore_instance", + "google_firebase_web_app_config", + "google_folder", + "google_folder_iam_policy", + "google_folder_organization_policy", + "google_folders", + "google_gemini_repository_group_iam_policy", + "google_gke_backup_backup_plan_iam_policy", + "google_gke_backup_restore_plan_iam_policy", + "google_gke_hub_feature", + "google_gke_hub_feature_iam_policy", + "google_gke_hub_membership", + "google_gke_hub_membership_iam_policy", + "google_gke_hub_scope_iam_policy", + "google_healthcare_consent_store_iam_policy", + "google_healthcare_dataset_iam_policy", + "google_healthcare_dicom_store_iam_policy", + "google_healthcare_fhir_store_iam_policy", + "google_healthcare_hl7_v2_store_iam_policy", + "google_iam_policy", + "google_iam_role", + "google_iam_workforce_pool_iam_policy", + "google_iam_workload_identity_pool", + "google_iam_workload_identity_pool_iam_policy", + "google_iam_workload_identity_pool_provider", + "google_iap_app_engine_service_iam_policy", + "google_iap_app_engine_version_iam_policy", + "google_iap_client", + "google_iap_tunnel_dest_group_iam_policy", + "google_iap_tunnel_iam_policy", + "google_iap_tunnel_instance_iam_policy", + "google_iap_web_backend_service_iam_policy", + "google_iap_web_cloud_run_service_iam_policy", + "google_iap_web_forwarding_rule_service_iam_policy", + "google_iap_web_iam_policy", + "google_iap_web_region_backend_service_iam_policy", + "google_iap_web_region_forwarding_rule_service_iam_policy", + "google_iap_web_type_app_engine_iam_policy", + "google_iap_web_type_compute_iam_policy", + "google_kms_autokey_config", + "google_kms_crypto_key", + "google_kms_crypto_key_iam_policy", + "google_kms_crypto_key_latest_version", + "google_kms_crypto_key_version", + "google_kms_crypto_key_versions", + "google_kms_crypto_keys", + "google_kms_ekm_connection_iam_policy", + "google_kms_key_handle", + "google_kms_key_handles", + "google_kms_key_ring", + "google_kms_key_ring_iam_policy", + "google_kms_key_rings", + "google_kms_secret", + "google_kms_secret_asymmetric", + "google_kms_secret_ciphertext", + "google_logging_folder_settings", + "google_logging_log_view_iam_policy", + "google_logging_organization_settings", + "google_logging_project_cmek_settings", + "google_logging_project_settings", + "google_lustre_instance", + "google_memcache_instance", + "google_memorystore_instance", + "google_monitoring_app_engine_service", + "google_monitoring_cluster_istio_service", + "google_monitoring_istio_canonical_service", + "google_monitoring_mesh_istio_service", + "google_monitoring_notification_channel", + "google_monitoring_uptime_check_ips", + "google_netblock_ip_ranges", + "google_network_security_address_group_iam_policy", + "google_notebooks_instance_iam_policy", + "google_notebooks_runtime_iam_policy", + "google_oracle_database_autonomous_database", + "google_oracle_database_autonomous_databases", + "google_oracle_database_cloud_exadata_infrastructure", + "google_oracle_database_cloud_exadata_infrastructures", + "google_oracle_database_cloud_vm_cluster", + "google_oracle_database_cloud_vm_clusters", + "google_oracle_database_db_nodes", + "google_oracle_database_db_servers", + "google_organization", + "google_organization_iam_custom_role", + "google_organization_iam_custom_roles", + "google_organization_iam_policy", + "google_organizations", + "google_parameter_manager_parameter", + "google_parameter_manager_parameter_version", + "google_parameter_manager_parameter_version_render", + "google_parameter_manager_parameters", + "google_parameter_manager_regional_parameter", + "google_parameter_manager_regional_parameter_version", + "google_parameter_manager_regional_parameter_version_render", + "google_parameter_manager_regional_parameters", + "google_privateca_ca_pool_iam_policy", + "google_privateca_certificate_authority", + "google_privateca_certificate_template_iam_policy", + "google_privileged_access_manager_entitlement", + "google_project", + "google_project_ancestry", + "google_project_iam_custom_role", + "google_project_iam_custom_roles", + "google_project_iam_policy", + "google_project_organization_policy", + "google_project_service", + "google_projects", + "google_pubsub_schema_iam_policy", + "google_pubsub_subscription", + "google_pubsub_subscription_iam_policy", + "google_pubsub_topic", + "google_pubsub_topic_iam_policy", + "google_redis_cluster", + "google_redis_instance", + "google_runtimeconfig_config", + "google_runtimeconfig_config_iam_policy", + "google_runtimeconfig_variable", + "google_scc_source_iam_policy", + "google_scc_v2_organization_source_iam_policy", + "google_secret_manager_regional_secret", + "google_secret_manager_regional_secret_iam_policy", + "google_secret_manager_regional_secret_version", + "google_secret_manager_regional_secret_version_access", + "google_secret_manager_regional_secrets", + "google_secret_manager_secret", + "google_secret_manager_secret_iam_policy", + "google_secret_manager_secret_version", + "google_secret_manager_secret_version_access", + "google_secret_manager_secrets", + "google_secure_source_manager_instance_iam_policy", + "google_secure_source_manager_repository_iam_policy", + "google_service_account", + "google_service_account_access_token", + "google_service_account_iam_policy", + "google_service_account_id_token", + "google_service_account_jwt", + "google_service_account_key", + "google_service_accounts", + "google_service_directory_namespace_iam_policy", + "google_service_directory_service_iam_policy", + "google_site_verification_token", + "google_sourcerepo_repository", + "google_sourcerepo_repository_iam_policy", + "google_spanner_database", + "google_spanner_database_iam_policy", + "google_spanner_instance", + "google_spanner_instance_iam_policy", + "google_sql_backup_run", + "google_sql_ca_certs", + "google_sql_database", + "google_sql_database_instance", + "google_sql_database_instance_latest_recovery_time", + "google_sql_database_instances", + "google_sql_databases", + "google_sql_tiers", + "google_storage_bucket", + "google_storage_bucket_iam_policy", + "google_storage_bucket_object", + "google_storage_bucket_object_content", + "google_storage_bucket_objects", + "google_storage_buckets", + "google_storage_control_folder_intelligence_config", + "google_storage_control_organization_intelligence_config", + "google_storage_control_project_intelligence_config", + "google_storage_insights_dataset_config", + "google_storage_object_signed_url", + "google_storage_project_service_account", + "google_storage_transfer_project_service_account", + "google_tags_tag_key", + "google_tags_tag_key_iam_policy", + "google_tags_tag_keys", + "google_tags_tag_value", + "google_tags_tag_value_iam_policy", + "google_tags_tag_values", + "google_tpu_tensorflow_versions", + "google_tpu_v2_accelerator_types", + "google_tpu_v2_runtime_versions", + "google_vertex_ai_endpoint_iam_policy", + "google_vertex_ai_feature_group_iam_policy", + "google_vertex_ai_feature_online_store_featureview_iam_policy", + "google_vertex_ai_feature_online_store_iam_policy", + "google_vertex_ai_featurestore_entitytype_iam_policy", + "google_vertex_ai_featurestore_iam_policy", + "google_vmwareengine_cluster", + "google_vmwareengine_external_access_rule", + "google_vmwareengine_external_address", + "google_vmwareengine_network", + "google_vmwareengine_network_peering", + "google_vmwareengine_network_policy", + "google_vmwareengine_nsx_credentials", + "google_vmwareengine_private_cloud", + "google_vmwareengine_subnet", + "google_vmwareengine_vcenter_credentials", + "google_vpc_access_connector", + "google_workbench_instance_iam_policy", + "google_workstations_workstation_config_iam_policy", + "google_workstations_workstation_iam_policy" + ] +} \ No newline at end of file diff --git a/src/parse/parse.go b/src/parse/parse.go index de167066..cad2a1c5 100644 --- a/src/parse/parse.go +++ b/src/parse/parse.go @@ -19,7 +19,6 @@ type provider struct { } func Parse(codebase string, name string) error { - if name == "" || codebase == "" { return errors.New("name or codebase is required") } @@ -37,6 +36,7 @@ func Parse(codebase string, name string) error { { match := `resource "(` + name + `_.*?)"` myProvider.Resources, err = getMatches(codebase, match, "markdown") + if err != nil { return err } @@ -61,7 +61,6 @@ func Parse(codebase string, name string) error { } jsonOut, err = json.MarshalIndent(myProvider, "", " ") - if err != nil { return err } @@ -124,14 +123,13 @@ func getGoFiles(path string, extension string) ([]string, error) { absPath, err := filepath.Abs(path) - log.Info().Msgf(absPath) + log.Info().Msg(absPath) if err != nil { return nil, fmt.Errorf("absolute path error %v", err) } _, err = os.Stat(absPath) - if err != nil { return nil, fmt.Errorf("path does not exist error %v", err) } @@ -148,7 +146,6 @@ func getGoFiles(path string, extension string) ([]string, error) { return nil }) - if err != nil { return nil, err } diff --git a/src/parse/parse_test.go b/src/parse/parse_test.go index e0a3e021..ae16107b 100644 --- a/src/parse/parse_test.go +++ b/src/parse/parse_test.go @@ -30,14 +30,18 @@ func TestGetGoFiles(t *testing.T) { {name: "None", args: args{path: "../mapping", extension: "go"}}, { name: "Valid path", - args: args{path: "./testdata", - extension: "markdown"}, + args: args{ + path: "./testdata", + extension: "markdown", + }, wantErr: false, }, { name: "Invalid path", - args: args{path: "/nonexistent", - extension: "markdown"}, + args: args{ + path: "/nonexistent", + extension: "markdown", + }, wantErr: true, }, } @@ -75,6 +79,7 @@ func TestGetKeys(t *testing.T) { nothing := map[string]bool{} var bumpkis []string + myKeys := []string{"first"} tests := []struct { @@ -90,7 +95,8 @@ func TestGetKeys(t *testing.T) { m: map[string]bool{ "key1": true, "key2": true, - }}, + }, + }, want: []string{"key1", "key2"}, }, { @@ -133,17 +139,21 @@ func TestGetMatches(t *testing.T) { {name: "go", args: args{source: "./testdata", match: "(aws_.*?)", extension: "go"}, want: []string{"aws_"}}, { name: "Valid pattern", - args: args{source: "./testdata", + args: args{ + source: "./testdata", match: `resource "(test_.*?)"`, - extension: "markdown"}, + extension: "markdown", + }, want: empty, wantErr: false, }, { name: "Invalid regex pattern", - args: args{source: "./testdata", + args: args{ + source: "./testdata", match: "[", - extension: "markdown"}, + extension: "markdown", + }, want: empty, wantErr: false, }, @@ -160,6 +170,7 @@ func TestGetMatches(t *testing.T) { t.Errorf("GetMatches() error = %v, wantErr %v", err, tt.wantErr) return } + if !reflect.DeepEqual(got, tt.want) { t.Errorf("GetMatches() got = %v, want %v", got, tt.want) } @@ -202,11 +213,9 @@ func teardown(cloud string) { case "google": _ = os.RemoveAll("./terraform-provider-google") } - } func TestParse(t *testing.T) { - type args struct { codebase string name string @@ -233,9 +242,11 @@ func TestParse(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() setup(tt.args.name) + if err := Parse(tt.args.codebase, tt.args.name); (err != nil) != tt.wantErr { t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) } + teardown(tt.args.name) }) } @@ -282,9 +293,11 @@ func Test_add(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() got, got1 := add(tt.args.s, tt.args.m, tt.args.a) + if !reflect.DeepEqual(got, tt.want) { t.Errorf("add() got = %v, want %v", got, tt.want) } + if !reflect.DeepEqual(got1, tt.want1) { t.Errorf("add() got1 = %v, want %v", got1, tt.want1) } @@ -322,9 +335,11 @@ func TestAdd(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { gotSlice, gotMap := add(tt.s, tt.m, tt.a) + if !reflect.DeepEqual(gotSlice, tt.wantSlice) { t.Errorf("add() gotSlice = %v, want %v", gotSlice, tt.wantSlice) } + if !reflect.DeepEqual(gotMap, tt.wantMap) { t.Errorf("add() gotMap = %v, want %v", gotMap, tt.wantMap) } diff --git a/src/policy.go b/src/policy.go index 2969402a..71f407a8 100644 --- a/src/policy.go +++ b/src/policy.go @@ -80,7 +80,7 @@ func NewAWSPolicy(actions []string, resources bool) (Policy, error) { state := NewStatement( "VisualEditor"+strconv.Itoa(count), - Allow, + allow, myActions, myResource) @@ -93,7 +93,7 @@ func NewAWSPolicy(actions []string, resources bool) (Policy, error) { } // GetPolicy creates new iam polices from a list of Permissions. -func GetPolicy(actions Sorted, resources bool) (OutputPolicy, error) { +func GetPolicy(actions Sorted, resources bool, policyName string) (OutputPolicy, error) { var ( OutPolicy OutputPolicy Empty bool @@ -101,7 +101,7 @@ func GetPolicy(actions Sorted, resources bool) (OutputPolicy, error) { Empty = true - var actionsValue = reflect.ValueOf(actions) + actionsValue := reflect.ValueOf(actions) typeOfV := actionsValue.Type() values := make([]interface{}, actionsValue.NumField()) @@ -119,7 +119,7 @@ func GetPolicy(actions Sorted, resources bool) (OutputPolicy, error) { Empty = false // dedupe AWSPermissions := Unique(actions.AWS) - OutPolicy.AWS, err = AWSPolicy(AWSPermissions, resources) + OutPolicy.AWS, err = AWSPolicy(AWSPermissions, resources, policyName) if err != nil { log.Error().Err(err) @@ -135,7 +135,7 @@ func GetPolicy(actions Sorted, resources bool) (OutputPolicy, error) { Empty = false // dedupe GCPPermissions := Unique(actions.GCP) - OutPolicy.GCP, err = GCPPolicy(GCPPermissions) + OutPolicy.GCP, err = GCPPolicy(GCPPermissions, policyName) if err != nil { log.Error().Err(err) @@ -151,7 +151,7 @@ func GetPolicy(actions Sorted, resources bool) (OutputPolicy, error) { Empty = false // dedupe AZUREPermissions := Unique(actions.AZURE) - OutPolicy.AZURE, err = AZUREPolicy(AZUREPermissions, DefaultPolicyName) + OutPolicy.AZURE, err = AZUREPolicy(AZUREPermissions, policyName) if err != nil { log.Error().Err(err) @@ -169,7 +169,7 @@ func GetPolicy(actions Sorted, resources bool) (OutputPolicy, error) { } // AWSPolicy create an IAM policy. -func AWSPolicy(permissions []string, resources bool) (AwsOutput, error) { +func AWSPolicy(permissions []string, resources bool, policyName string) (AwsOutput, error) { var OutPolicy AwsOutput Policy, err := NewAWSPolicy(permissions, resources) @@ -184,7 +184,13 @@ func AWSPolicy(permissions []string, resources bool) (AwsOutput, error) { return OutPolicy, &marshallAWSPolicyError{err} } - theDetails := policyDetails{string(indent), DefaultPolicyName, "/", "Pike Autogenerated policy from IAC"} + var theDetails policyDetails + + if policyName != "" { + theDetails = policyDetails{string(indent), policyName, "/", "Pike Autogenerated policy from IAC"} + } else { + theDetails = policyDetails{string(indent), defaultPolicyName, "/", "Pike Autogenerated policy from IAC"} + } var output bytes.Buffer @@ -194,7 +200,6 @@ func AWSPolicy(permissions []string, resources bool) (AwsOutput, error) { } err = tmpl.Execute(&output, theDetails) - if err != nil { panic(err) } @@ -223,3 +228,11 @@ func Unique(s []string) []string { return result } + +func Minify(JSONOut string) string { + return strings.ReplaceAll( + strings.ReplaceAll( + strings.ReplaceAll( + strings.ReplaceAll( + strings.ReplaceAll(JSONOut, "\n", ""), " ", ""), " ", ""), "\r", ""), "\t", "") +} diff --git a/src/policy_test.go b/src/policy_test.go index f4d21695..5f490211 100644 --- a/src/policy_test.go +++ b/src/policy_test.go @@ -1,12 +1,9 @@ -package pike_test +package pike import ( _ "embed" "reflect" - "strings" "testing" - - pike "github.com/jameswoolfenden/pike/src" ) func TestNewAWSPolicy(t *testing.T) { @@ -19,7 +16,7 @@ func TestNewAWSPolicy(t *testing.T) { tests := []struct { name string args args - want pike.Policy + want Policy wantErr bool }{ { @@ -44,9 +41,9 @@ func TestNewAWSPolicy(t *testing.T) { "s3:GetReplicationConfiguration", "s3:ListBucket", }}, - pike.Policy{ + Policy{ Version: "2012-10-17", - Statements: []pike.Statement{ + Statements: []Statement{ {"VisualEditor0", "Allow", []string{ "s3:CreateBucket", "s3:DeleteBucket", @@ -78,7 +75,7 @@ func TestNewAWSPolicy(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.NewAWSPolicy(tt.args.Actions, false) + got, err := NewAWSPolicy(tt.args.Actions, false) if (err != nil) != tt.wantErr { t.Errorf("NewAWSPolicy() error = %v, wantErr %v", err, tt.wantErr) @@ -97,7 +94,7 @@ func TestGetPolicy(t *testing.T) { t.Parallel() type args struct { - actions pike.Sorted + actions Sorted } tests := []struct { @@ -108,7 +105,7 @@ func TestGetPolicy(t *testing.T) { }{ { "first", - args{pike.Sorted{ + args{Sorted{ AWS: []string{}, }}, ``, @@ -116,7 +113,7 @@ func TestGetPolicy(t *testing.T) { }, { "aws", - args{pike.Sorted{AWS: []string{ + args{Sorted{AWS: []string{ "ec2:DescribeInstances", "ec2:DescribeTags", "ec2:DescribeInstanceAttribute", @@ -160,7 +157,7 @@ func TestGetPolicy(t *testing.T) { }, { "short", - args{pike.Sorted{AWS: []string{"s3:*"}}}, + args{Sorted{AWS: []string{"s3:*"}}}, `{ "Version": "2012-10-17", "Statement": [ @@ -185,7 +182,7 @@ func TestGetPolicy(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.GetPolicy(tt.args.actions, false) + got, err := GetPolicy(tt.args.actions, false, "") if (err != nil) != tt.wantErr { t.Errorf("GetPolicy() error = %v, wantErr %v", err, tt.wantErr) @@ -203,14 +200,6 @@ func TestGetPolicy(t *testing.T) { } } -func Minify(JSONOut string) string { - return strings.ReplaceAll( - strings.ReplaceAll( - strings.ReplaceAll( - strings.ReplaceAll( - strings.ReplaceAll(JSONOut, "\n", ""), " ", ""), " ", ""), "\r", ""), "\t", "") -} - func TestAWSPolicy(t *testing.T) { t.Parallel() @@ -221,20 +210,20 @@ func TestAWSPolicy(t *testing.T) { tests := []struct { name string args args - want pike.AwsOutput + want AwsOutput wantErr bool }{ { "fail", args{[]string{"woof"}}, - pike.AwsOutput{}, + AwsOutput{}, true, }, - {"fail2", args{[]string{"woof", "meow:*"}}, pike.AwsOutput{}, true}, + {"fail2", args{[]string{"woof", "meow:*"}}, AwsOutput{}, true}, { "pass", args{[]string{"woof:*"}}, - pike.AwsOutput{JSONOut: `{ + AwsOutput{JSONOut: `{ "Version": "2012-10-17", "Statement": [ { @@ -258,7 +247,7 @@ func TestAWSPolicy(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.AWSPolicy(tt.args.Permissions, false) + got, err := AWSPolicy(tt.args.Permissions, false, "") if (err != nil) != tt.wantErr { t.Errorf("AWSPolicy() error = %v, wantErr %v", err, tt.wantErr) @@ -292,7 +281,8 @@ func Test_unique(t *testing.T) { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() - if got := pike.Unique(tt.args.s); !reflect.DeepEqual(got, tt.want) { + + if got := Unique(tt.args.s); !reflect.DeepEqual(got, tt.want) { t.Errorf("Unique() = %v, want %v", got, tt.want) } }) diff --git a/src/readme.go b/src/readme.go index b2b1057e..bafb6c8c 100644 --- a/src/readme.go +++ b/src/readme.go @@ -14,6 +14,15 @@ type replaceSectionError struct { err error } +type fileDoesNotExistError struct { + file string + err error +} + +func (e fileDoesNotExistError) Error() string { + return fmt.Sprintf("file %s does not exist %v", e.file, e.err) +} + func (m *replaceSectionError) Error() string { return fmt.Sprintf("failed to replace section %v", m.err) } @@ -23,10 +32,10 @@ func Readme(dirName string, output string, init bool, autoAppend bool) error { file := path.Join(dirName, "README.md") if _, err := os.Stat(file); errors.Is(err, os.ErrNotExist) { - return err + return &fileDoesNotExistError{file, err} } - OutPolicy, err := MakePolicy(dirName, nil, init, false) + OutPolicy, err := MakePolicy(dirName, nil, init, false, "", "") if err != nil { log.Info().Msg("failed to make policy") diff --git a/src/repository.go b/src/repository.go index 9cd8dd2a..e12c314d 100644 --- a/src/repository.go +++ b/src/repository.go @@ -68,5 +68,5 @@ func Repository(repository, destination, directory, output string, init, write, return &gitCommitObjectError{repository, destination, err} } - return Scan(filepath.Join(destination, directory), output, nil, init, write, enableResources) + return Scan(filepath.Join(destination, directory), output, nil, init, write, enableResources, "", "", "") } diff --git a/src/repository_internal_test.go b/src/repository_internal_test.go new file mode 100644 index 00000000..78f7c580 --- /dev/null +++ b/src/repository_internal_test.go @@ -0,0 +1,175 @@ +package pike + +import ( + "errors" + "testing" +) + +func TestGitCloneError_Error(t *testing.T) { + tests := []struct { + name string + repository string + destination string + err error + expected string + }{ + { + name: "basic error message", + repository: "https://github.com/user/repo.git", + destination: "/tmp/repo", + err: errors.New("connection failed"), + expected: "failed to clone repository https://github.com/user/repo.git /tmp/repo connection failed", + }, + { + name: "empty repository", + repository: "", + destination: "/tmp/repo", + err: errors.New("invalid URL"), + expected: "failed to clone repository /tmp/repo invalid URL", + }, + { + name: "empty destination", + repository: "https://github.com/user/repo.git", + destination: "", + err: errors.New("no destination"), + expected: "failed to clone repository https://github.com/user/repo.git no destination", + }, + { + name: "nil error", + repository: "https://github.com/user/repo.git", + destination: "/tmp/repo", + err: nil, + expected: "failed to clone repository https://github.com/user/repo.git /tmp/repo ", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &gitCloneError{ + repository: tt.repository, + destination: tt.destination, + err: tt.err, + } + if got := e.Error(); got != tt.expected { + t.Errorf("gitCloneError.Error() = %v, want %v", got, tt.expected) + } + }) + } +} + +func TestGitHeadError_Error(t *testing.T) { + tests := []struct { + name string + repository string + destination string + err error + expected string + }{ + { + name: "basic error message", + repository: "https://github.com/user/repo.git", + destination: "/tmp/repo", + err: errors.New("head not found"), + expected: "failed to get head https://github.com/user/repo.git /tmp/repo head not found", + }, + { + name: "empty strings", + repository: "", + destination: "", + err: errors.New("reference error"), + expected: "failed to get head reference error", + }, + { + name: "nil error", + repository: "repo", + destination: "dest", + err: nil, + expected: "failed to get head repo dest ", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &gitHeadError{ + repository: tt.repository, + destination: tt.destination, + err: tt.err, + } + if got := e.Error(); got != tt.expected { + t.Errorf("gitHeadError.Error() = %v, want %v", got, tt.expected) + } + }) + } +} + +func TestGitCommitObjectError_Error(t *testing.T) { + tests := []struct { + name string + repository string + destination string + err error + expected string + }{ + { + name: "basic error message", + repository: "https://github.com/user/repo.git", + destination: "/tmp/repo", + err: errors.New("commit not found"), + expected: "failed to get commit object https://github.com/user/repo.git /tmp/repo commit not found", + }, + { + name: "long repository URL", + repository: "https://very-long-domain-name.example.com/organization/very-long-repository-name.git", + destination: "/very/long/path/to/destination/directory", + err: errors.New("object does not exist"), + expected: "failed to get commit object https://very-long-domain-name.example.com/organization/very-long-repository-name.git /very/long/path/to/destination/directory object does not exist", + }, + { + name: "all empty except error", + repository: "", + destination: "", + err: errors.New("some error"), + expected: "failed to get commit object some error", + }, + { + name: "nil error", + repository: "repo", + destination: "dest", + err: nil, + expected: "failed to get commit object repo dest ", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &gitCommitObjectError{ + repository: tt.repository, + destination: tt.destination, + err: tt.err, + } + if got := e.Error(); got != tt.expected { + t.Errorf("gitCommitObjectError.Error() = %v, want %v", got, tt.expected) + } + }) + } +} + +func TestErrorTypes_ImplementErrorInterface(t *testing.T) { + var err error + + // Test that all error types implement the error interface + err = &gitCloneError{repository: "repo", destination: "dest", err: errors.New("test")} + if err.Error() == "" { + t.Error("gitCloneError should implement error interface") + } + + err = &gitHeadError{repository: "repo", destination: "dest", err: errors.New("test")} + if err.Error() == "" { + t.Error("gitHeadError should implement error interface") + } + + err = &gitCommitObjectError{repository: "repo", destination: "dest", err: errors.New("test")} + if err.Error() == "" { + t.Error("gitCommitObjectError should implement error interface") + } +} diff --git a/src/scan.go b/src/scan.go index 72df4abe..6b6d9515 100644 --- a/src/scan.go +++ b/src/scan.go @@ -2,12 +2,15 @@ package pike import ( "context" + "errors" "fmt" "os" "os/exec" "path" "path/filepath" "strings" + "sync" + "time" "github.com/hashicorp/go-version" "github.com/hashicorp/hc-install/product" @@ -18,7 +21,16 @@ import ( const tfVersion = "1.5.4" -var dotTfModules = path.Join(".terraform", "modules") +const ( + modulesJSON = "modules.json" + dsStore = ".DS_Store" + dotTfModules = ".terraform/modules" +) + +var ( + terraformMutex sync.Mutex + initMutex sync.Map // per-directory mutex +) type emptyIACError struct{} @@ -109,92 +121,111 @@ func (m *getPolicyError) Error() string { } // Scan looks for resources in a given directory. -func Scan(dirName string, output string, file *string, init bool, write bool, enableResources bool) error { +func Scan(dirName string, outputType string, file *string, init bool, write bool, enableResources bool, provider string, outFile string, policyName string) error { if dirName == "" && file == nil { return &emptyScanLocationError{} } - OutPolicy, err := MakePolicy(dirName, file, init, enableResources) + OutPolicy, err := MakePolicy(dirName, file, init, enableResources, provider, policyName) if err != nil { + fmt.Print(err.Error()) return &makePolicyError{err} } if write { - err = WriteOutput(OutPolicy, output, dirName) + err = WriteOutput(OutPolicy, outputType, dirName, outFile) if err != nil { - return &writeFileError{file: output, err: err} + return &writeFileError{file: outputType, err: err} } } else { - - fmt.Print(OutPolicy.AsString(output)) //permit + fmt.Print(OutPolicy.AsString(outputType)) // permit } return err } -// WriteOutput writes out the policy as json or terraform. -func WriteOutput(outPolicy OutputPolicy, output, location string) error { - if location == "" { - location = "." - } +// WriteOutput writes out the policy as JSON or Terraform. +func WriteOutput(outPolicy OutputPolicy, outputType string, scanPath string, outFile string) error { - newPath, _ := filepath.Abs(location + "/.pike") - err := os.MkdirAll(newPath, os.ModePerm) + var newPath string - if err != nil { - return &makeDirectoryError{directory: newPath, err: err} - } + d1 := []byte(outPolicy.AsString(outputType)) + + if outFile != "" { - var outFile string + } else { + if scanPath == "" { + scanPath = "." + } + newPath, _ = filepath.Abs(path.Join(scanPath, ".pike")) - d1 := []byte(outPolicy.AsString(output)) + err := os.MkdirAll(newPath, os.ModePerm) + + if err != nil { + return &makeDirectoryError{directory: newPath, err: err} + } - switch strings.ToLower(output) { - case terraform: - outFile = newPath + "/pike.generated_policy.tf" + switch strings.ToLower(outputType) { + case terraform: + outFile = filepath.Join(newPath, "pike.generated_policy.tf") //path.join does not work here - if outPolicy.AWS.Terraform != "" { - roleFile := path.Join(newPath, "aws_iam_role.terraform_pike.tf") - err = os.WriteFile(roleFile, roleTemplate, 0o644) + if outPolicy.AWS.Terraform != "" { + roleFile := path.Join(newPath, "aws_iam_role.terraform_pike.tf") + err = os.WriteFile(roleFile, roleTemplate, 0o644) - if err != nil { - return &writeFileError{file: roleFile, err: err} + if err != nil { + return &writeFileError{file: roleFile, err: err} + } } - } - case "json": - outFile = newPath + "/pike.generated_policy.json" - default: - return &tfPolicyFormatError{} + case "json": + outFile = path.Join(newPath, "pike.generated_policy.json") + default: + return &tfPolicyFormatError{} + } } - err = os.WriteFile(outFile, d1, 0o644) - + err := os.WriteFile(outFile, d1, 0o644) if err != nil { return &writeFileError{file: outFile, err: err} } + log.Info().Msgf("wrote %s", outFile) + return nil } // Init can download and install terraform if required and then terraform init your specified directory. + func Init(dirName string) (*string, []string, error) { + // Per-directory locking + dirMutex, _ := initMutex.LoadOrStore(dirName, &sync.Mutex{}) + mutex := dirMutex.(*sync.Mutex) + mutex.Lock() + defer mutex.Unlock() + tfPath, err := LocateTerraform() if err != nil { return nil, nil, &locateTerraformError{err} } tf, err := tfexec.NewTerraform(dirName, tfPath) + if err != nil { return nil, nil, &terraformExecError{err} } - err = tf.Init(context.Background(), tfexec.Upgrade(true)) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute) + defer cancel() + err = tf.Init(ctx, tfexec.Upgrade(true)) if err != nil { + if errors.Is(context.DeadlineExceeded, ctx.Err()) { + return nil, nil, fmt.Errorf("terraform init timed out after 10 minutes: %w", err) + } return nil, nil, &terraformInitError{err} } - log.Printf("terraform init at %s", dirName) + log.Info().Msgf("terraform init at %s", dirName) modulesDir := path.Join(dirName, dotTfModules) modules, err := os.ReadDir(modulesDir) @@ -214,16 +245,19 @@ func Init(dirName string) (*string, []string, error) { found = append(found, module.Name()) } - return &tfPath, found, err + return &tfPath, found, nil } // LocateTerraform finds the Terraform executable or installs it. func LocateTerraform() (string, error) { + terraformMutex.Lock() + defer terraformMutex.Unlock() + tfPath, err := exec.LookPath(terraform) // if you don't have tf installed, we have to install it if err != nil || tfPath == "" { - log.Printf("installing Terraform %s\n", tfVersion) + log.Info().Msgf("installing Terraform %s\n", tfVersion) installer := &releases.ExactVersion{ Product: product.Terraform, Version: version.Must(version.NewVersion(tfVersion)), @@ -241,16 +275,43 @@ func LocateTerraform() (string, error) { } // MakePolicy does the guts of determining a policy from code. -func MakePolicy(dirName string, file *string, init bool, EnableResources bool) (OutputPolicy, error) { - var ( - files []string - Output OutputPolicy - ) +func MakePolicy(dirName string, file *string, init bool, enableResources bool, provider string, policyName string) (OutputPolicy, error) { + // Validate inputs early + if dirName == "" && file == nil { + return OutputPolicy{}, errors.New("either directory or file should be be set") + } + + var output OutputPolicy + + permissionsBag, err := makePermissionBag(dirName, file, init, provider) + if err != nil { + return output, fmt.Errorf("failed to create permission bag: %w", err) + } + + output, err = GetPolicy(permissionsBag, enableResources, policyName) + if err != nil { + return output, &getPolicyError{err: err} + } + + return output, nil +} + +// Extract common absolute path logic +func getAbsolutePath(path string) (string, error) { + absPath, err := filepath.Abs(path) + if err != nil { + return "", &absolutePathError{directory: path, err: err} + } + return absPath, nil +} +func makePermissionBag(dirName string, file *string, init bool, provider string) (Sorted, error) { + + var files []string if file == nil { - fullPath, err := filepath.Abs(dirName) + fullPath, err := getAbsolutePath(dirName) if err != nil { - return Output, &absolutePathError{directory: dirName, err: err} + return Sorted{}, err } if init { @@ -265,35 +326,37 @@ func MakePolicy(dirName string, file *string, init bool, EnableResources bool) ( } files, err = GetTF(fullPath) - if err != nil { - return Output, &getTFError{directory: fullPath, err: err} + return Sorted{}, &getTFError{directory: fullPath, err: err} } } else { - myFile, err := filepath.Abs(*file) + myFile, err := getAbsolutePath(*file) if err != nil { - return Output, &absolutePathError{directory: *file, err: err} + return Sorted{}, err } // is this a tfFile? if !(FileExists(myFile)) { - return Output, os.ErrNotExist + return Sorted{}, os.ErrNotExist } files = append(files, myFile) } if len(files) == 0 { - return Output, &emptyIACError{} + return Sorted{}, &emptyIACError{} } var resources []ResourceV2 + var failedFiles []string + var criticalErrors []error for _, tfFile := range files { resource, err := GetResources(tfFile, dirName) if err != nil { - // parse the other files - log.Print(err) + failedFiles = append(failedFiles, tfFile) + criticalErrors = append(criticalErrors, fmt.Errorf("failed to parse %s: %w", tfFile, err)) + continue } if resource != nil { @@ -301,36 +364,58 @@ func MakePolicy(dirName string, file *string, init bool, EnableResources bool) ( } } - var PermissionBag Sorted + // Fail fast if too many critical files failed + if len(criticalErrors) > 0 { + if len(failedFiles) > len(files)/2 { // More than 50% failed + return Sorted{}, fmt.Errorf("critical parsing failures in %d/%d files: %v", + len(failedFiles), len(files), criticalErrors) + } + log.Warn().Int("failed_files", len(failedFiles)).Msg("some terraform files failed to parse") + } + permissionsBag := GetPermissionBag(resources, provider) + return permissionsBag, nil +} +func GetPermissionBag(resources []ResourceV2, provider string) Sorted { + var permissionBag Sorted var newPerms Sorted for _, resource := range resources { var err error - newPerms, err = GetPermission(resource) - if err != nil { + // implement provider filter + if provider == "" || provider == resource.Provider { + newPerms, err = GetPermission(resource) + } else { continue } - PermissionBag.AWS = append(PermissionBag.AWS, newPerms.AWS...) - PermissionBag.GCP = append(PermissionBag.GCP, newPerms.GCP...) - PermissionBag.AZURE = append(PermissionBag.AZURE, newPerms.AZURE...) - } + if err != nil { + continue + } - Output, err := GetPolicy(PermissionBag, EnableResources) - if err != nil { - return Output, &getPolicyError{err: err} + switch strings.ToLower(provider) { + case "aws": + permissionBag.AWS = append(permissionBag.AWS, newPerms.AWS...) + case "gcp", "google": + permissionBag.GCP = append(permissionBag.GCP, newPerms.GCP...) + case "azure", "azurerm": + permissionBag.AZURE = append(permissionBag.AZURE, newPerms.AZURE...) + case "": + permissionBag.AWS = append(permissionBag.AWS, newPerms.AWS...) + permissionBag.GCP = append(permissionBag.GCP, newPerms.GCP...) + permissionBag.AZURE = append(permissionBag.AZURE, newPerms.AZURE...) + } } - - return Output, nil + return permissionBag } // GetTF return tf files in a directory. func GetTF(dirName string) ([]string, error) { files, err := GetTFFiles(dirName) + if err != nil { - return nil, fmt.Errorf("folder %s can't be found, may not be local path", dirName) + return nil, &directoryNotFoundError{dirName} } modulePath := path.Join(dirName, dotTfModules) @@ -348,9 +433,8 @@ func GetTF(dirName string) ([]string, error) { // GetTFFiles get tf files in directory. func GetTFFiles(dirName string) ([]string, error) { rawFiles, err := os.ReadDir(dirName) - if err != nil { - return nil, err + return nil, &readDirectoryError{dirName, err} } var files []string @@ -384,3 +468,16 @@ func StringInSlice(a string, list []string) bool { func GetHCLType(resourceName string) string { return strings.Split(resourceName, "_")[0] } + +const ( + maxFiles = 1000 + maxFileSize = 10 * 1024 * 1024 // 10MB + maxResources = 50000 +) + +func validateLimits(files []string) error { + if len(files) > maxFiles { + return fmt.Errorf("too many files: %d > %d", len(files), maxFiles) + } + return nil +} diff --git a/src/scan_test.go b/src/scan_test.go index 93ce73a5..e575bda6 100644 --- a/src/scan_test.go +++ b/src/scan_test.go @@ -1,4 +1,4 @@ -package pike_test +package pike import ( "os" @@ -7,7 +7,6 @@ import ( "runtime" "testing" - pike "github.com/jameswoolfenden/pike/src" "github.com/rs/zerolog/log" ) @@ -20,16 +19,16 @@ func TestScan(t *testing.T) { write bool } - testpath, _ := filepath.Abs("../terraform/aws/backup") + testPath, _ := filepath.Abs("../terraform/aws/backup") tests := []struct { name string args args wantErr bool }{ - {"aws", args{testpath, "json", false}, false}, - {"aws-out", args{testpath, "terraform", true}, false}, - {"google", args{testpath, "json", false}, false}, + {"aws", args{testPath, "json", false}, false}, + {"aws-out", args{testPath, "terraform", true}, false}, + {"google", args{testPath, "json", false}, false}, } for _, tt := range tests { @@ -37,11 +36,7 @@ func TestScan(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - if err := pike.Scan( - tt.args.dirname, - tt.args.output, - nil, - false, tt.args.write, false); (err != nil) != tt.wantErr { + if err := Scan(tt.args.dirname, tt.args.output, nil, false, tt.args.write, false, "", "", ""); (err != nil) != tt.wantErr { t.Errorf("Scan() error = %v, wantErr %v", err, tt.wantErr) } }) @@ -77,12 +72,15 @@ func TestGetTF(t *testing.T) { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.GetTF(tt.args.dirname) + + got, err := GetTF(tt.args.dirname) + if (err != nil) != tt.wantErr { t.Errorf("GetTF() error = %v, wantErr %v", err, tt.wantErr) return } + if !reflect.DeepEqual(got, tt.want) { t.Errorf("GetTF() = %v, want %v", got, tt.want) } @@ -90,6 +88,75 @@ func TestGetTF(t *testing.T) { } } +func TestGetPermissionBag(t *testing.T) { + t.Parallel() + + type args struct { + resources []ResourceV2 + provider string + } + + //goland:noinspection GoLinter + tests := []struct { + name string + args args + want Sorted + }{ + { + "basic_aws", + args{ + resources: []ResourceV2{ + { + TypeName: "terraform", + Name: "aws_s3_bucket", + Provider: "aws", + Attributes: []string{ + "tags", + }, + }, + }, + }, + Sorted{ + AWS: []string{ + "s3:PutBucketTagging", + "s3:DeleteBucket", + "s3:CreateBucket", + "s3:GetLifecycleConfiguration", + "s3:GetBucketTagging", + "s3:GetBucketWebsite", + "s3:GetBucketLogging", + "s3:ListBucket", + "s3:GetAccelerateConfiguration", + "s3:GetBucketVersioning", + "s3:GetBucketAcl", + "s3:GetBucketPolicy", + "s3:GetReplicationConfiguration", + "s3:GetBucketObjectLockConfiguration", + "s3:GetObjectAcl", + "s3:GetObject", + "s3:GetEncryptionConfiguration", + "s3:GetBucketRequestPayment", + "s3:GetBucketCORS", + "s3:DeleteBucket", + }, + }, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + + permissionBag := GetPermissionBag(tt.args.resources, tt.args.provider) + + if !reflect.DeepEqual(permissionBag, tt.want) { + t.Errorf("MakePolicy() = %v, want %v", permissionBag, tt.want) + } + }) + } +} + func Test_stringInSlice(t *testing.T) { t.Parallel() @@ -111,7 +178,8 @@ func Test_stringInSlice(t *testing.T) { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() - if got := pike.StringInSlice(tt.args.a, tt.args.list); got != tt.want { + + if got := StringInSlice(tt.args.a, tt.args.list); got != tt.want { t.Errorf("StringInSlice() = %v, want %v", got, tt.want) } }) @@ -183,6 +251,7 @@ func TestMakePolicy(t *testing.T) { "Action": [ "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarms", + "cloudwatch:GetMetricData", "cloudwatch:PutMetricAlarm" ], "Resource": [ @@ -295,35 +364,36 @@ func TestMakePolicy(t *testing.T) { "Sid": "VisualEditor8", "Effect": "Allow", "Action": [ - "lambda:AddPermission", - "lambda:CreateEventSourceMapping", - "lambda:CreateFunction", - "lambda:CreateFunctionUrlConfig", - "lambda:DeleteEventSourceMapping", - "lambda:DeleteFunction", - "lambda:DeleteFunctionEventInvokeConfig", - "lambda:DeleteFunctionUrlConfig", - "lambda:DeleteLayerVersion", - "lambda:DeleteProvisionedConcurrencyConfig", - "lambda:GetCodeSigningConfig", - "lambda:GetEventSourceMapping", - "lambda:GetFunction", - "lambda:GetFunctionCodeSigningConfig", - "lambda:GetFunctionEventInvokeConfig", - "lambda:GetFunctionUrlConfig", - "lambda:GetLayerVersion", - "lambda:GetPolicy", - "lambda:GetProvisionedConcurrencyConfig", - "lambda:ListVersionsByFunction", - "lambda:PublishLayerVersion", - "lambda:PutFunctionEventInvokeConfig", - "lambda:PutProvisionedConcurrencyConfig", - "lambda:RemovePermission", - "lambda:TagResource", - "lambda:UntagResource", - "lambda:UpdateEventSourceMapping", - "lambda:UpdateFunctionEventInvokeConfig", - "lambda:UpdateFunctionUrlConfig" + "lambda:AddPermission", + "lambda:CreateEventSourceMapping", + "lambda:CreateFunction", + "lambda:CreateFunctionUrlConfig", + "lambda:DeleteEventSourceMapping", + "lambda:DeleteFunction", + "lambda:DeleteFunctionEventInvokeConfig", + "lambda:DeleteFunctionUrlConfig", + "lambda:DeleteLayerVersion", + "lambda:DeleteProvisionedConcurrencyConfig", + "lambda:GetCodeSigningConfig", + "lambda:GetEventSourceMapping", + "lambda:GetFunction", + "lambda:GetFunctionCodeSigningConfig", + "lambda:GetFunctionEventInvokeConfig", + "lambda:GetFunctionUrlConfig", + "lambda:GetLayerVersion", + "lambda:GetPolicy", + "lambda:GetProvisionedConcurrencyConfig", + "lambda:ListTags", + "lambda:ListVersionsByFunction", + "lambda:PublishLayerVersion", + "lambda:PutFunctionEventInvokeConfig", + "lambda:PutProvisionedConcurrencyConfig", + "lambda:RemovePermission", + "lambda:TagResource", + "lambda:UntagResource", + "lambda:UpdateEventSourceMapping", + "lambda:UpdateFunctionEventInvokeConfig", + "lambda:UpdateFunctionUrlConfig" ], "Resource": [ "*" @@ -339,6 +409,7 @@ func TestMakePolicy(t *testing.T) { "logs:DeleteRetentionPolicy", "logs:DescribeLogGroups", "logs:DisassociateKmsKey", + "logs:ListTagsForResource", "logs:ListTagsLogGroup", "logs:PutRetentionPolicy", "logs:TagLogGroup", @@ -492,7 +563,7 @@ func TestMakePolicy(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.MakePolicy(tt.args.dirName, tt.args.file, tt.args.init, false) + got, err := MakePolicy(tt.args.dirName, tt.args.file, tt.args.init, false, "", "") if (err != nil) != tt.wantErr { t.Errorf("MakePolicy() error = %v, wantErr %v", err, tt.wantErr) @@ -523,13 +594,16 @@ func TestGetHCLType(t *testing.T) { want string }{ {"basic", args{"aws_s3_bucket"}, "aws"}, + {"gcp", args{"google_storage_bucket"}, "google"}, + {"azurerm", args{"azurerm_storage_account"}, "azurerm"}, } for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() - if got := pike.GetHCLType(tt.args.resourceName); got != tt.want { + + if got := GetHCLType(tt.args.resourceName); got != tt.want { t.Errorf("GetHCLType() = %v, want %v", got, tt.want) } }) @@ -570,12 +644,15 @@ func Test_getTFFiles(t *testing.T) { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.GetTFFiles(tt.args.dirName) + + got, err := GetTFFiles(tt.args.dirName) + if (err != nil) != tt.wantErr { t.Errorf("GetTFFiles() error = %v, wantErr %v", err, tt.wantErr) return } + if !reflect.DeepEqual(got, tt.want) { t.Errorf("GetTFFiles() = %v, want %v", got, tt.want) } @@ -587,12 +664,12 @@ func TestWriteOutput(t *testing.T) { t.Parallel() type args struct { - OutPolicy pike.OutputPolicy + OutPolicy OutputPolicy output string location string } - out := pike.OutputPolicy{AWS: pike.AwsOutput{ + out := OutputPolicy{AWS: AwsOutput{ JSONOut: "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"VisualEditor0\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"SNS:CreateTopic\",\n \"SNS:DeleteTopic\",\n \"SNS:GetTopicAttributes\",\n \"SNS:ListTagsForResource\",\n \"SNS:ListTopics\",\n \"SNS:SetTopicAttributes\",\n \"SNS:TagResource\",\n \"SNS:UnTagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor1\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"acm:AddTagsToCertificate\",\n \"acm:DeleteCertificate\",\n \"acm:DescribeCertificate\",\n \"acm:ListTagsForCertificate\",\n \"acm:RemoveTagsFromCertificate\",\n \"acm:RequestCertificate\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor2\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"acm-pa:DescribeCertificateAuthority\",\n \"acm-pa:ListTags\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor3\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"acm-pca:CreateCertificateAuthority\",\n \"acm-pca:DeleteCertificateAuthority\",\n \"acm-pca:GetCertificateAuthorityCertificate\",\n \"acm-pca:UpdateCertificateAuthority\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor4\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"apigateway:DELETE\",\n \"apigateway:GET\",\n \"apigateway:PATCH\",\n \"apigateway:POST\",\n \"apigateway:PUT\",\n \"apigateway:UpdateRestApiPolicy\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor5\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"application-autoscaling:DeleteScalingPolicy\",\n \"application-autoscaling:DeleteScheduledAction\",\n \"application-autoscaling:DeregisterScalableTarget\",\n \"application-autoscaling:DescribeScalableTargets\",\n \"application-autoscaling:DescribeScalingPolicies\",\n \"application-autoscaling:DescribeScheduledActions\",\n \"application-autoscaling:PutScalingPolicy\",\n \"application-autoscaling:PutScheduledAction\",\n \"application-autoscaling:RegisterScalableTarget\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor6\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"application-autoscaling:DeleteScalingPolicy\",\n \"application-autoscaling:DeleteScheduledAction\",\n \"application-autoscaling:DeregisterScalableTarget\",\n \"application-autoscaling:DescribeScalableTargets\",\n \"application-autoscaling:DescribeScalingPolicies\",\n \"application-autoscaling:DescribeScheduledActions\",\n \"application-autoscaling:PutScalingPolicy\",\n \"application-autoscaling:PutScheduledAction\",\n \"application-autoscaling:RegisterScalableTarget\",\n \"autoscaling:AttachLoadBalancers\",\n \"autoscaling:CreateAutoScalingGroup\",\n \"autoscaling:CreateLaunchConfiguration\",\n \"autoscaling:DeleteAutoScalingGroup\",\n \"autoscaling:DeleteLaunchConfiguration\",\n \"autoscaling:DescribeAutoScalingGroups\",\n \"autoscaling:DescribeLaunchConfigurations\",\n \"autoscaling:DescribeScalingActivities\",\n \"autoscaling:DetachLoadBalancers\",\n \"autoscaling:UpdateAutoScalingGroup\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor7\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"budgets:ModifyBudget\",\n \"budgets:ViewBudget\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor8\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"cloudtrail:AddTags\",\n \"cloudtrail:CreateTrail\",\n \"cloudtrail:DeleteTrail\",\n \"cloudtrail:DescribeTrails\",\n \"cloudtrail:GetEventSelectors\",\n \"cloudtrail:GetTrailStatus\",\n \"cloudtrail:ListTags\",\n \"cloudtrail:PutEventSelectors\",\n \"cloudtrail:RemoveTags\",\n \"cloudtrail:StartLogging\",\n \"cloudtrail:UpdateTrail\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor9\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"cloudwatch:DeleteAlarms\",\n \"cloudwatch:DescribeAlarms\",\n \"cloudwatch:ListTagsForResource\",\n \"cloudwatch:PutMetricAlarm\",\n \"cloudwatch:TagResource\",\n \"cloudwatch:UnTagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor10\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"codeartifact:CreateDomain\",\n \"codeartifact:CreateRepository\",\n \"codeartifact:DeleteDomain\",\n \"codeartifact:DeleteDomainPermissionsPolicy\",\n \"codeartifact:DeleteRepository\",\n \"codeartifact:DeleteRepositoryPermissionsPolicy\",\n \"codeartifact:DescribeDomain\",\n \"codeartifact:DescribeRepository\",\n \"codeartifact:GetDomainPermissionsPolicy\",\n \"codeartifact:GetRepositoryPermissionsPolicy\",\n \"codeartifact:ListTagsForResource\",\n \"codeartifact:PutDomainPermissionsPolicy\",\n \"codeartifact:PutRepositoryPermissionsPolicy\",\n \"codeartifact:TagResource\",\n \"codeartifact:UntagResource\",\n \"codeartifact:UpdateRepository\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor11\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"codebuild:BatchGetProjects\",\n \"codebuild:CreateProject\",\n \"codebuild:DeleteProject\",\n \"codebuild:UpdateProject\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor12\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"codecommit:CreateRepository\",\n \"codecommit:DeleteRepository\",\n \"codecommit:GetRepository\",\n \"codecommit:ListBranches\",\n \"codecommit:ListTagsForResource\",\n \"codecommit:TagResource\",\n \"codecommit:UntagResource\",\n \"codecommit:UpdateRepositoryDescription\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor13\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"codepipeline:CreatePipeline\",\n \"codepipeline:DeletePipeline\",\n \"codepipeline:GetPipeline\",\n \"codepipeline:ListTagsForResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor14\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"cognito-idp:AddCustomAttributes\",\n \"cognito-idp:AdminAddUserToGroup\",\n \"cognito-idp:AdminCreateUser\",\n \"cognito-idp:AdminDeleteUser\",\n \"cognito-idp:AdminGetUser\",\n \"cognito-idp:AdminListGroupsForUser\",\n \"cognito-idp:AdminRemoveUserFromGroup\",\n \"cognito-idp:CreateGroup\",\n \"cognito-idp:CreateIdentityProvider\",\n \"cognito-idp:CreateResourceServer\",\n \"cognito-idp:CreateUserPool\",\n \"cognito-idp:CreateUserPoolClient\",\n \"cognito-idp:CreateUserPoolDomain\",\n \"cognito-idp:DeleteGroup\",\n \"cognito-idp:DeleteIdentityProvider\",\n \"cognito-idp:DeleteResourceServer\",\n \"cognito-idp:DeleteUserPool\",\n \"cognito-idp:DeleteUserPoolClient\",\n \"cognito-idp:DeleteUserPoolDomain\",\n \"cognito-idp:DescribeIdentityProvider\",\n \"cognito-idp:DescribeResourceServer\",\n \"cognito-idp:DescribeUserPool\",\n \"cognito-idp:DescribeUserPoolClient\",\n \"cognito-idp:DescribeUserPoolDomain\",\n \"cognito-idp:GetGroup\",\n \"cognito-idp:GetSigningCertificate\",\n \"cognito-idp:GetUICustomization\",\n \"cognito-idp:GetUserPoolMfaConfig\",\n \"cognito-idp:ListUserPoolClients\",\n \"cognito-idp:ListUserPools\",\n \"cognito-idp:SetUICustomization\",\n \"cognito-idp:SetUserPoolMfaConfig\",\n \"cognito-idp:TagResource\",\n \"cognito-idp:UntagResource\",\n \"cognito-idp:UpdateGroup\",\n \"cognito-idp:UpdateIdentityProvider\",\n \"cognito-idp:UpdateResourceServer\",\n \"cognito-idp:UpdateUserPool\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor15\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"dax:CreateParameterGroup\",\n \"dax:CreateSubnetGroup\",\n \"dax:DeleteParameterGroup\",\n \"dax:DeleteSubnetGroup\",\n \"dax:DescribeParameterGroups\",\n \"dax:DescribeParameters\",\n \"dax:DescribeSubnetGroups\",\n \"dax:UpdateParameterGroup\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor16\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ds:AddTagsToResource\",\n \"ds:CreateDirectory\",\n \"ds:CreateLogSubscription\",\n \"ds:DeleteDirectory\",\n \"ds:DeleteLogSubscription\",\n \"ds:ListTagsForResource\",\n \"ds:RemoveTagsFromResource\",\n \"rds:AddRoleToDBCluster\",\n \"rds:AddTagsToResource\",\n \"rds:CreateDBCluster\",\n \"rds:CreateDBClusterEndpoint\",\n \"rds:CreateDBClusterParameterGroup\",\n \"rds:CreateDBClusterSnapshot\",\n \"rds:CreateDBInstance\",\n \"rds:CreateDBParameterGroup\",\n \"rds:CreateDBSubnetGroup\",\n \"rds:CreateGlobalCluster\",\n \"rds:CreateOptionGroup\",\n \"rds:DeleteDBCluster\",\n \"rds:DeleteDBClusterEndpoint\",\n \"rds:DeleteDBClusterParameterGroup\",\n \"rds:DeleteDBClusterSnapshot\",\n \"rds:DeleteDBParameterGroup\",\n \"rds:DeleteDBSubnetGroup\",\n \"rds:DeleteGlobalCluster\",\n \"rds:DeleteOptionGroup\",\n \"rds:DescribeCertificates\",\n \"rds:DescribeDBClusterParameterGroups\",\n \"rds:DescribeDBClusterParameters\",\n \"rds:DescribeDBClusterSnapshots\",\n \"rds:DescribeDBClusters\",\n \"rds:DescribeDBEngineVersions\",\n \"rds:DescribeDBInstances\",\n \"rds:DescribeDBParameterGroups\",\n \"rds:DescribeDBParameters\",\n \"rds:DescribeDBSnapshots\",\n \"rds:DescribeDBSubnetGroups\",\n \"rds:DescribeEventCategories\",\n \"rds:DescribeGlobalClusters\",\n \"rds:DescribeOptionGroups\",\n \"rds:DescribeOrderableDBInstanceOptions\",\n \"rds:ListTagsForResource\",\n \"rds:ModifyDBCluster\",\n \"rds:ModifyDBClusterEndpoint\",\n \"rds:ModifyDBClusterParameterGroup\",\n \"rds:ModifyDBInstance\",\n \"rds:ModifyDBParameterGroup\",\n \"rds:ModifyGlobalCluster\",\n \"rds:ModifyOptionGroup\",\n \"rds:RemoveRoleFromDBCluster\",\n \"rds:RemoveTagsFromResource\",\n \"rds:StartActivityStream\",\n \"rds:StopActivityStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor17\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"dynamodb:BatchWriteItem\",\n \"dynamodb:CreateTable\",\n \"dynamodb:CreateTableReplica\",\n \"dynamodb:DeleteItem\",\n \"dynamodb:DeleteTable\",\n \"dynamodb:DeleteTableReplica\",\n \"dynamodb:DescribeContinuousBackups\",\n \"dynamodb:DescribeTable\",\n \"dynamodb:DescribeTimeToLive\",\n \"dynamodb:GetItem\",\n \"dynamodb:ListTagsOfResource\",\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:Scan\",\n \"dynamodb:TagResource\",\n \"dynamodb:UntagResource\",\n \"dynamodb:UpdateContinuousBackups\",\n \"dynamodb:UpdateItem\",\n \"dynamodb:UpdateTable\",\n \"dynamodb:UpdateTimeToLive\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor18\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:AllocateAddress\",\n \"ec2:AssociateAddress\",\n \"ec2:AssociateRouteTable\",\n \"ec2:AttachInternetGateway\",\n \"ec2:AttachVolume\",\n \"ec2:AttachVpnGateway\",\n \"ec2:AuthorizeSecurityGroupEgress\",\n \"ec2:AuthorizeSecurityGroupIngress\",\n \"ec2:CancelCapacityReservation\",\n \"ec2:CancelSpotInstanceRequests\",\n \"ec2:CreateCapacityReservation\",\n \"ec2:CreateDefaultVpc\",\n \"ec2:CreateFlowLogs\",\n \"ec2:CreateInternetGateway\",\n \"ec2:CreateKeyPair\",\n \"ec2:CreateLaunchTemplate\",\n \"ec2:CreateLaunchTemplateVersion\",\n \"ec2:CreateNatGateway\",\n \"ec2:CreateNetworkAcl\",\n \"ec2:CreateNetworkAclEntry\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:CreatePlacementGroup\",\n \"ec2:CreateRoute\",\n \"ec2:CreateRouteTable\",\n \"ec2:CreateSecurityGroup\",\n \"ec2:CreateSubnet\",\n \"ec2:CreateTags\",\n \"ec2:CreateVPC\",\n \"ec2:CreateVolume\",\n \"ec2:CreateVpcEndpoint\",\n \"ec2:CreateVpnGateway\",\n \"ec2:DeleteFlowLogs\",\n \"ec2:DeleteInternetGateway\",\n \"ec2:DeleteKeyPair\",\n \"ec2:DeleteLaunchTemplate\",\n \"ec2:DeleteNatGateway\",\n \"ec2:DeleteNetworkAcl\",\n \"ec2:DeleteNetworkAclEntry\",\n \"ec2:DeleteNetworkInterface\",\n \"ec2:DeleteNetworkInterfacePermission\",\n \"ec2:DeletePlacementGroup\",\n \"ec2:DeleteRoute\",\n \"ec2:DeleteRouteTable\",\n \"ec2:DeleteSecurityGroup\",\n \"ec2:DeleteSubnet\",\n \"ec2:DeleteTags\",\n \"ec2:DeleteVPC\",\n \"ec2:DeleteVolume\",\n \"ec2:DeleteVpcEndpoints\",\n \"ec2:DeleteVpnGateway\",\n \"ec2:DescribeAccountAttributes\",\n \"ec2:DescribeAddresses\",\n \"ec2:DescribeAvailabilityZones\",\n \"ec2:DescribeCapacityReservations\",\n \"ec2:DescribeDhcpOptions\",\n \"ec2:DescribeFlowLogs\",\n \"ec2:DescribeImages\",\n \"ec2:DescribeInstanceAttribute\",\n \"ec2:DescribeInstanceCreditSpecifications\",\n \"ec2:DescribeInstanceTypes\",\n \"ec2:DescribeInstances\",\n \"ec2:DescribeInternetGateways\",\n \"ec2:DescribeKeyPairs\",\n \"ec2:DescribeLaunchTemplateVersions\",\n \"ec2:DescribeLaunchTemplates\",\n \"ec2:DescribeNatGateways\",\n \"ec2:DescribeNetworkAcls\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:DescribePlacementGroups\",\n \"ec2:DescribePrefixLists\",\n \"ec2:DescribeRouteTables\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeSpotInstanceRequests\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeTags\",\n \"ec2:DescribeVolumes\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeVpcEndpointServices\",\n \"ec2:DescribeVpcEndpoints\",\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpnGateways\",\n \"ec2:DetachInternetGateway\",\n \"ec2:DetachNetworkInterface\",\n \"ec2:DetachVolume\",\n \"ec2:DetachVpnGateway\",\n \"ec2:DisassociateAddress\",\n \"ec2:DisassociateRouteTable\",\n \"ec2:GetEbsDefaultKmsKeyId\",\n \"ec2:ImportKeyPair\",\n \"ec2:ModifyCapacityReservation\",\n \"ec2:ModifyInstanceAttribute\",\n \"ec2:ModifyVolume\",\n \"ec2:ModifyVpcEndpoint\",\n \"ec2:MonitorInstances\",\n \"ec2:ReleaseAddress\",\n \"ec2:RequestSpotInstances\",\n \"ec2:RevokeSecurityGroupEgress\",\n \"ec2:RevokeSecurityGroupIngress\",\n \"ec2:RunInstances\",\n \"ec2:StartInstances\",\n \"ec2:StopInstances\",\n \"ec2:TerminateInstances\",\n \"ec2:UnmonitorInstances\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor19\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ecr:CreatePullThroughCacheRule\",\n \"ecr:CreateRepository\",\n \"ecr:DeleteLifecyclePolicy\",\n \"ecr:DeletePullThroughCacheRule\",\n \"ecr:DeleteRepository\",\n \"ecr:DescribePullThroughCacheRules\",\n \"ecr:DescribeRepositories\",\n \"ecr:GetAuthorizationToken\",\n \"ecr:GetLifecyclePolicy\",\n \"ecr:ListTagsForResource\",\n \"ecr:PutImageScanningConfiguration\",\n \"ecr:PutLifecyclePolicy\",\n \"ecr:TagResource\",\n \"ecr:UntagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor20\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ecs:CreateCluster\",\n \"ecs:CreateService\",\n \"ecs:DeleteCluster\",\n \"ecs:DeleteService\",\n \"ecs:DeregisterTaskDefinition\",\n \"ecs:DescribeClusters\",\n \"ecs:DescribeServices\",\n \"ecs:DescribeTaskDefinition\",\n \"ecs:UpdateCluster\",\n \"ecs:RegisterTaskDefinition\",\n \"ecs:TagResource\",\n \"ecs:UntagResource\",\n \"ecs:UpdateService\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor21\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"eks:DescribeCluster\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor22\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"elasticache:AddTagsToResource\",\n \"elasticache:CreateCacheParameterGroup\",\n \"elasticache:CreateCacheSubnetGroup\",\n \"elasticache:DeleteCacheParameterGroup\",\n \"elasticache:DeleteCacheSubnetGroup\",\n \"elasticache:DescribeCacheParameterGroups\",\n \"elasticache:DescribeCacheParameters\",\n \"elasticache:DescribeCacheSubnetGroups\",\n \"elasticache:ListTagsForResource\",\n \"elasticache:ModifyCacheParameterGroup\",\n \"elasticache:ModifyCacheSubnetGroup\",\n \"elasticache:RemoveTagsFromResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor23\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"elasticbeanstalk:AddTags\",\n \"elasticbeanstalk:CreateApplication\",\n \"elasticbeanstalk:DeleteApplication\",\n \"elasticbeanstalk:DescribeApplications\",\n \"elasticbeanstalk:ListAvailableSolutionStacks\",\n \"elasticbeanstalk:ListTagsForResource\",\n \"elasticbeanstalk:RemoveTags\",\n \"elasticbeanstalk:UpdateApplicationResourceLifecycle\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor24\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"elasticfilesystem:CreateAccessPoint\",\n \"elasticfilesystem:CreateFileSystem\",\n \"elasticfilesystem:CreateReplicationConfiguration\",\n \"elasticfilesystem:DeleteAccessPoint\",\n \"elasticfilesystem:DeleteFileSystem\",\n \"elasticfilesystem:DeleteFileSystemPolicy\",\n \"elasticfilesystem:DeleteReplicationConfiguration\",\n \"elasticfilesystem:DescribeAccessPoints\",\n \"elasticfilesystem:DescribeBackupPolicy\",\n \"elasticfilesystem:DescribeFileSystemPolicy\",\n \"elasticfilesystem:DescribeFileSystems\",\n \"elasticfilesystem:DescribeLifecycleConfiguration\",\n \"elasticfilesystem:DescribeMountTargetSecurityGroups\",\n \"elasticfilesystem:DescribeMountTargets\",\n \"elasticfilesystem:DescribeReplicationConfigurations\",\n \"elasticfilesystem:PutBackupPolicy\",\n \"elasticfilesystem:PutFileSystemPolicy\",\n \"elasticfilesystem:TagResource\",\n \"elasticfilesystem:UntagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor25\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"elasticloadbalancing:AddTags\",\n \"elasticloadbalancing:AttachLoadBalancerToSubnets\",\n \"elasticloadbalancing:CreateListener\",\n \"elasticloadbalancing:CreateLoadBalancer\",\n \"elasticloadbalancing:CreateLoadBalancerListeners\",\n \"elasticloadbalancing:CreateTargetGroup\",\n \"elasticloadbalancing:DeleteListener\",\n \"elasticloadbalancing:DeleteLoadBalancer\",\n \"elasticloadbalancing:DeleteTargetGroup\",\n \"elasticloadbalancing:DeregisterTargets\",\n \"elasticloadbalancing:DescribeListeners\",\n \"elasticloadbalancing:DescribeLoadBalancerAttributes\",\n \"elasticloadbalancing:DescribeLoadBalancers\",\n \"elasticloadbalancing:DescribeTags\",\n \"elasticloadbalancing:DescribeTargetGroupAttributes\",\n \"elasticloadbalancing:DescribeTargetGroups\",\n \"elasticloadbalancing:DescribeTargetHealth\",\n \"elasticloadbalancing:ModifyListener\",\n \"elasticloadbalancing:ModifyLoadBalancerAttributes\",\n \"elasticloadbalancing:ModifyTargetGroupAttributes\",\n \"elasticloadbalancing:RegisterTargets\",\n \"elasticloadbalancing:RemoveTags\",\n \"elasticloadbalancing:SetSecurityGroups\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor26\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"events:DeleteRule\",\n \"events:DescribeRule\",\n \"events:ListTagsForResource\",\n \"events:ListTargetsByRule\",\n \"events:PutRule\",\n \"events:PutTargets\",\n \"events:RemoveTargets\",\n \"events:TagResource\",\n \"events:UnTagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor27\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"firehose:CreateDeliveryStream\",\n \"firehose:DeleteDeliveryStream\",\n \"firehose:DescribeDeliveryStream\",\n \"firehose:ListTagsForDeliveryStream\",\n \"firehose:TagDeliveryStream\",\n \"firehose:UntagDeliveryStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor28\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"glue:CreateClassifier\",\n \"glue:CreateConnection\",\n \"glue:CreateCrawler\",\n \"glue:CreateDatabase\",\n \"glue:CreateJob\",\n \"glue:CreateMLTransform\",\n \"glue:CreateRegistry\",\n \"glue:CreateSchema\",\n \"glue:CreateScript\",\n \"glue:CreateSecurityConfiguration\",\n \"glue:CreateTable\",\n \"glue:CreateTrigger\",\n \"glue:CreateUserDefinedFunction\",\n \"glue:CreateWorkflow\",\n \"glue:DeleteClassifier\",\n \"glue:DeleteConnection\",\n \"glue:DeleteCrawler\",\n \"glue:DeleteDatabase\",\n \"glue:DeleteJob\",\n \"glue:DeleteMLTransform\",\n \"glue:DeleteRegistry\",\n \"glue:DeleteResourcePolicy\",\n \"glue:DeleteSchema\",\n \"glue:DeleteSecurityConfiguration\",\n \"glue:DeleteTable\",\n \"glue:DeleteTrigger\",\n \"glue:DeleteUserDefinedFunction\",\n \"glue:DeleteWorkflow\",\n \"glue:GetClassifier\",\n \"glue:GetConnection\",\n \"glue:GetCrawler\",\n \"glue:GetDataCatalogEncryptionSettings\",\n \"glue:GetDatabase\",\n \"glue:GetJob\",\n \"glue:GetMLTransform\",\n \"glue:GetRegistry\",\n \"glue:GetResourcePolicy\",\n \"glue:GetSchema\",\n \"glue:GetSchemaVersion\",\n \"glue:GetSecurityConfiguration\",\n \"glue:GetTable\",\n \"glue:GetTags\",\n \"glue:GetTrigger\",\n \"glue:GetUserDefinedFunction\",\n \"glue:GetWorkflow\",\n \"glue:PutDataCatalogEncryptionSettings\",\n \"glue:PutResourcePolicy\",\n \"glue:TagResource\",\n \"glue:UntagResource\",\n \"glue:UpdateClassifier\",\n \"glue:UpdateConnection\",\n \"glue:UpdateCrawler\",\n \"glue:UpdateDatabase\",\n \"glue:UpdateJob\",\n \"glue:UpdateMLTransform\",\n \"glue:UpdateRegistry\",\n \"glue:UpdateSchema\",\n \"glue:UpdateTable\",\n \"glue:UpdateTrigger\",\n \"glue:UpdateUserDefinedFunction\",\n \"glue:UpdateWorkflow\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor29\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"iam:AddRoleToInstanceProfile\",\n \"iam:AddUserToGroup\",\n \"iam:AttachGroupPolicy\",\n \"iam:AttachRolePolicy\",\n \"iam:AttachUserPolicy\",\n \"iam:CreateAccessKey\",\n \"iam:CreateGroup\",\n \"iam:CreateInstanceProfile\",\n \"iam:CreateLoginProfile\",\n \"iam:CreatePolicy\",\n \"iam:CreateRole\",\n \"iam:CreateServiceLinkedRole\",\n \"iam:CreateUser\",\n \"iam:DeleteAccessKey\",\n \"iam:DeleteGroup\",\n \"iam:DeleteGroupPolicy\",\n \"iam:DeleteInstanceProfile\",\n \"iam:DeleteLoginProfile\",\n \"iam:DeletePolicy\",\n \"iam:DeleteRole\",\n \"iam:DeleteRolePolicy\",\n \"iam:DeleteServiceLinkedRole\",\n \"iam:DeleteUser\",\n \"iam:DeleteUserPolicy\",\n \"iam:DetachGroupPolicy\",\n \"iam:DetachRolePolicy\",\n \"iam:DetachUserPolicy\",\n \"iam:GetGroup\",\n \"iam:GetGroupPolicy\",\n \"iam:GetInstanceProfile\",\n \"iam:GetLoginProfile\",\n \"iam:GetPolicy\",\n \"iam:GetPolicyVersion\",\n \"iam:GetRole\",\n \"iam:GetRolePolicy\",\n \"iam:GetServiceLinkedRoleDeletionStatus\",\n \"iam:GetUser\",\n \"iam:GetUserPolicy\",\n \"iam:ListAccessKeys\",\n \"iam:ListAttachedGroupPolicies\",\n \"iam:ListAttachedRolePolicies\",\n \"iam:ListAttachedUserPolicies\",\n \"iam:ListEntitiesForPolicy\",\n \"iam:ListGroupsForUser\",\n \"iam:ListInstanceProfilesForRole\",\n \"iam:ListPolicies\",\n \"iam:ListPolicyVersions\",\n \"iam:ListRolePolicies\",\n \"iam:PassRole\",\n \"iam:PutGroupPolicy\",\n \"iam:PutRolePolicy\",\n \"iam:PutUserPolicy\",\n \"iam:RemoveRoleFromInstanceProfile\",\n \"iam:RemoveUserFromGroup\",\n \"iam:TagPolicy\",\n \"iam:TagRole\",\n \"iam:TagUser\",\n \"iam:UnTagRole\",\n \"iam:UnTagUser\",\n \"iam:UntagPolicy\",\n \"iam:UpdateAccessKey\",\n \"iam:UpdateRoleDescription\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor30\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"inspector:CreateAssessmentTarget\",\n \"inspector:CreateAssessmentTemplate\",\n \"inspector:CreateResourceGroup\",\n \"inspector:DeleteAssessmentTarget\",\n \"inspector:DeleteAssessmentTemplate\",\n \"inspector:DescribeAssessmentTargets\",\n \"inspector:DescribeAssessmentTemplates\",\n \"inspector:DescribeResourceGroups\",\n \"inspector:ListEventSubscriptions\",\n \"inspector:ListRulesPackages\",\n \"inspector:ListTagsForResource\",\n \"inspector:SetTagsForResource\",\n \"inspector:SubscribeToEvent\",\n \"inspector:UnsubscribeFromEvent\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor31\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"kinesis:AddTagsToStream\",\n \"kinesis:CreateStream\",\n \"kinesis:DeleteStream\",\n \"kinesis:DescribeStreamSummary\",\n \"kinesis:EnableEnhancedMonitoring\",\n \"kinesis:IncreaseStreamRetentionPeriod\",\n \"kinesis:ListTagsForStream\",\n \"kinesis:RemoveTagsFromStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor32\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"kinesisvideo:CreateStream\",\n \"kinesisvideo:DeleteStream\",\n \"kinesisvideo:DescribeStream\",\n \"kinesisvideo:ListTagsForStream\",\n \"kinesisvideo:TagStream\",\n \"kinesisvideo:UntagStream\",\n \"kinesisvideo:UpdateStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor33\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"kms:CreateAlias\",\n \"kms:CreateGrant\",\n \"kms:CreateKey\",\n \"kms:Decrypt\",\n \"kms:DeleteAlias\",\n \"kms:DescribeKey\",\n \"kms:DisableKey\",\n \"kms:EnableKey\",\n \"kms:EnableKeyRotation\",\n \"kms:Encrypt\",\n \"kms:GenerateDataKey*\",\n \"kms:GetKeyPolicy\",\n \"kms:GetKeyRotationStatus\",\n \"kms:ListAliases\",\n \"kms:ListResourceTags\",\n \"kms:PutKeyPolicy\",\n \"kms:ReEncrypt*\",\n \"kms:ScheduleKeyDeletion\",\n \"kms:TagResource\",\n \"kms:UntagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor34\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"lambda:AddPermission\",\n \"lambda:CreateAlias\",\n \"lambda:CreateFunction\",\n \"lambda:DeleteAlias\",\n \"lambda:DeleteFunction\",\n \"lambda:GetAlias\",\n \"lambda:GetFunction\",\n \"lambda:GetFunctionCodeSigningConfig\",\n \"lambda:GetPolicy\",\n \"lambda:ListVersionsByFunction\",\n \"lambda:RemovePermission\",\n \"lambda:TagResource\",\n \"lambda:UntagResource\",\n \"lambda:UpdateAlias\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor35\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"logs:CreateLogGroup\",\n \"logs:DeleteLogGroup\",\n \"logs:DeleteMetricFilter\",\n \"logs:DeleteResourcePolicy\",\n \"logs:DeleteRetentionPolicy\",\n \"logs:DeleteSubscriptionFilter\",\n \"logs:DescribeLogGroups\",\n \"logs:DescribeMetricFilters\",\n \"logs:DescribeResourcePolicies\",\n \"logs:DescribeSubscriptionFilters\",\n \"logs:ListTagsLogGroup\",\n \"logs:PutMetricFilter\",\n \"logs:PutResourcePolicy\",\n \"logs:PutRetentionPolicy\",\n \"logs:PutSubscriptionFilter\",\n \"logs:TagLogGroup\",\n \"logs:UntagLogGroup\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor36\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"memorydb:CreateSubnetGroup\",\n \"memorydb:DeleteSubnetGroup\",\n \"memorydb:DescribeSubnetGroups\",\n \"memorydb:ListTags\",\n \"memorydb:TagResource\",\n \"memorydb:UntagResource\",\n \"memorydb:UpdateSubnetGroup\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor37\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"mq:CreateBroker\",\n \"mq:CreateConfiguration\",\n \"mq:CreateTags\",\n \"mq:CreateUser\",\n \"mq:DeleteBroker\",\n \"mq:DeleteTags\",\n \"mq:DeleteUser\",\n \"mq:DescribeBroker\",\n \"mq:DescribeConfiguration\",\n \"mq:DescribeConfigurationRevision\",\n \"mq:DescribeUser\",\n \"mq:RebootBroker\",\n \"mq:UpdateBroker\",\n \"mq:UpdateConfiguration\",\n \"mq:UpdateUser\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor38\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"organizations:DescribeOrganization\",\n \"organizations:ListAWSServiceAccessForOrganization\",\n \"organizations:ListAccounts\",\n \"organizations:ListRoots\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor39\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"outposts:ListOutposts\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor40\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"rds:AddRoleToDBCluster\",\n \"rds:AddTagsToResource\",\n \"rds:CreateDBCluster\",\n \"rds:CreateDBClusterEndpoint\",\n \"rds:CreateDBClusterParameterGroup\",\n \"rds:CreateDBClusterSnapshot\",\n \"rds:CreateDBInstance\",\n \"rds:CreateDBParameterGroup\",\n \"rds:CreateDBSubnetGroup\",\n \"rds:CreateGlobalCluster\",\n \"rds:CreateOptionGroup\",\n \"rds:DeleteDBCluster\",\n \"rds:DeleteDBClusterEndpoint\",\n \"rds:DeleteDBClusterParameterGroup\",\n \"rds:DeleteDBClusterSnapshot\",\n \"rds:DeleteDBParameterGroup\",\n \"rds:DeleteDBSubnetGroup\",\n \"rds:DeleteGlobalCluster\",\n \"rds:DeleteOptionGroup\",\n \"rds:DescribeCertificates\",\n \"rds:DescribeDBClusterParameterGroups\",\n \"rds:DescribeDBClusterParameters\",\n \"rds:DescribeDBClusterSnapshots\",\n \"rds:DescribeDBClusters\",\n \"rds:DescribeDBEngineVersions\",\n \"rds:DescribeDBInstances\",\n \"rds:DescribeDBParameterGroups\",\n \"rds:DescribeDBParameters\",\n \"rds:DescribeDBSnapshots\",\n \"rds:DescribeDBSubnetGroups\",\n \"rds:DescribeEventCategories\",\n \"rds:DescribeGlobalClusters\",\n \"rds:DescribeOptionGroups\",\n \"rds:DescribeOrderableDBInstanceOptions\",\n \"rds:ListTagsForResource\",\n \"rds:ModifyDBCluster\",\n \"rds:ModifyDBClusterEndpoint\",\n \"rds:ModifyDBClusterParameterGroup\",\n \"rds:ModifyDBInstance\",\n \"rds:ModifyDBParameterGroup\",\n \"rds:ModifyGlobalCluster\",\n \"rds:ModifyOptionGroup\",\n \"rds:RemoveRoleFromDBCluster\",\n \"rds:RemoveTagsFromResource\",\n \"rds:StartActivityStream\",\n \"rds:StopActivityStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor41\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"redshift:CreateAuthenticationProfile\",\n \"redshift:CreateCluster\",\n \"redshift:CreateClusterParameterGroup\",\n \"redshift:CreateClusterSubnetGroup\",\n \"redshift:CreateEventSubscription\",\n \"redshift:CreateHsmClientCertificate\",\n \"redshift:CreateHsmConfiguration\",\n \"redshift:CreateScheduledAction\",\n \"redshift:CreateSnapshotCopyGrant\",\n \"redshift:CreateSnapshotSchedule\",\n \"redshift:CreateTags\",\n \"redshift:CreateUsageLimit\",\n \"redshift:DeleteAuthenticationProfile\",\n \"redshift:DeleteCluster\",\n \"redshift:DeleteClusterParameterGroup\",\n \"redshift:DeleteClusterSubnetGroup\",\n \"redshift:DeleteEventSubscription\",\n \"redshift:DeleteHsmClientCertificate\",\n \"redshift:DeleteHsmConfiguration\",\n \"redshift:DeleteScheduledAction\",\n \"redshift:DeleteSnapshotCopyGrant\",\n \"redshift:DeleteSnapshotSchedule\",\n \"redshift:DeleteTags\",\n \"redshift:DeleteUsageLimit\",\n \"redshift:DescribeAuthenticationProfiles\",\n \"redshift:DescribeClusterParameterGroups\",\n \"redshift:DescribeClusterParameters\",\n \"redshift:DescribeClusterSubnetGroups\",\n \"redshift:DescribeClusters\",\n \"redshift:DescribeEventSubscriptions\",\n \"redshift:DescribeHsmClientCertificates\",\n \"redshift:DescribeHsmConfigurations\",\n \"redshift:DescribeLoggingStatus\",\n \"redshift:DescribeOrderableClusterOptions\",\n \"redshift:DescribeScheduledActions\",\n \"redshift:DescribeSnapshotCopyGrants\",\n \"redshift:DescribeSnapshotSchedules\",\n \"redshift:DescribeUsageLimits\",\n \"redshift:DisableLogging\",\n \"redshift:EnableLogging\",\n \"redshift:GetClusterCredentials\",\n \"redshift:ModifyAuthenticationProfile\",\n \"redshift:ModifyCluster\",\n \"redshift:ModifyClusterIamRoles\",\n \"redshift:ModifyClusterParameterGroup\",\n \"redshift:ModifyClusterSnapshotSchedule\",\n \"redshift:ModifyClusterSubnetGroup\",\n \"redshift:ModifyEventSubscription\",\n \"redshift:ModifyScheduledAction\",\n \"redshift:ModifySnapshotSchedule\",\n \"redshift:ModifyUsageLimit\",\n \"redshift:PauseCluster\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor42\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"route53:AssociateVPCWithHostedZone\",\n \"route53:ChangeResourceRecordSets\",\n \"route53:ChangeTagsForResource\",\n \"route53:CreateHostedZone\",\n \"route53:DeleteHostedZone\",\n \"route53:GetChange\",\n \"route53:GetHostedZone\",\n \"route53:ListHostedZones\",\n \"route53:ListResourceRecordSets\",\n \"route53:ListTagsForResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor43\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:CreateBucket\",\n \"s3:DeleteBucket\",\n \"s3:DeleteObject\",\n \"s3:GetAccelerateConfiguration\",\n \"s3:GetBucketAcl\",\n \"s3:GetBucketCORS\",\n \"s3:GetBucketLocation\",\n \"s3:GetBucketLogging\",\n \"s3:GetBucketObjectLockConfiguration\",\n \"s3:GetBucketPolicy\",\n \"s3:GetBucketPublicAccessBlock\",\n \"s3:GetBucketRequestPayment\",\n \"s3:GetBucketTagging\",\n \"s3:GetBucketVersioning\",\n \"s3:GetBucketWebsite\",\n \"s3:GetEncryptionConfiguration\",\n \"s3:GetLifecycleConfiguration\",\n \"s3:GetObject\",\n \"s3:GetObjectAcl\",\n \"s3:GetObjectTagging\",\n \"s3:GetReplicationConfiguration\",\n \"s3:ListAllMyBuckets\",\n \"s3:ListBucket\",\n \"s3:PutBucketAcl\",\n \"s3:PutBucketLogging\",\n \"s3:PutBucketObjectLockConfiguration\",\n \"s3:PutBucketPolicy\",\n \"s3:PutBucketPublicAccessBlock\",\n \"s3:PutBucketVersioning\",\n \"s3:PutEncryptionConfiguration\",\n \"s3:PutLifecycleConfiguration\",\n \"s3:PutObject\",\n \"s3:PutObjectLegalHold\",\n \"s3:PutObjectRetention\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor44\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"secretsmanager:CreateSecret\",\n \"secretsmanager:DeleteSecret\",\n \"secretsmanager:DescribeSecret\",\n \"secretsmanager:GetResourcePolicy\",\n \"secretsmanager:GetSecretValue\",\n \"secretsmanager:PutSecretValue\",\n \"secretsmanager:TagResource\",\n \"secretsmanager:UntagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor45\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"servicecatalog:CreatePortfolio\",\n \"servicecatalog:DeletePortfolio\",\n \"servicecatalog:DescribePortfolio\",\n \"servicecatalog:TagResource\",\n \"servicecatalog:UpdatePortfolio\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor46\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"sqs:GetQueueAttributes\",\n \"sqs:ListQueueTags\",\n \"sqs:SetQueueAttributes\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor47\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ssm:AddTagsToResource\",\n \"ssm:CreateDocument\",\n \"ssm:CreateMaintenanceWindow\",\n \"ssm:CreatePatchBaseline\",\n \"ssm:DeleteDocument\",\n \"ssm:DeleteMaintenanceWindow\",\n \"ssm:DeleteParameter\",\n \"ssm:DeletePatchBaseline\",\n \"ssm:DeregisterPatchBaselineForPatchGroup\",\n \"ssm:DeregisterTargetFromMaintenanceWindow\",\n \"ssm:DeregisterTaskFromMaintenanceWindow\",\n \"ssm:DescribeDocument\",\n \"ssm:DescribeDocumentPermission\",\n \"ssm:DescribeMaintenanceWindowTargets\",\n \"ssm:DescribeMaintenanceWindowTasks\",\n \"ssm:DescribeParameters\",\n \"ssm:DescribePatchGroups\",\n \"ssm:GetDocument\",\n \"ssm:GetMaintenanceWindow\",\n \"ssm:GetParameter\",\n \"ssm:GetParameters\",\n \"ssm:GetPatchBaseline\",\n \"ssm:ListTagsForResource\",\n \"ssm:PutParameter\",\n \"ssm:RegisterPatchBaselineForPatchGroup\",\n \"ssm:RegisterTargetWithMaintenanceWindow\",\n \"ssm:RegisterTaskWithMaintenanceWindow\",\n \"ssm:RemoveTagsFromResource\",\n \"ssm:UpdateDocument\",\n \"ssm:UpdateMaintenanceWindow\",\n \"ssm:UpdatePatchBaseline\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor48\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"sso:ListInstances\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor49\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"states:CreateActivity\",\n \"states:CreateStateMachine\",\n \"states:DeleteActivity\",\n \"states:DeleteStateMachine\",\n \"states:DescribeActivity\",\n \"states:DescribeStateMachine\",\n \"states:ListTagsForResource\",\n \"states:TagResource\",\n \"states:UntagResource\",\n \"states:UpdateStateMachine\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor50\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"wafv2:CreateIpSet\",\n \"wafv2:CreateRegexPatternSet\",\n \"wafv2:CreateRuleGroup\",\n \"wafv2:CreateWebACL\",\n \"wafv2:DeleteIpSet\",\n \"wafv2:DeleteRegexPatternSet\",\n \"wafv2:DeleteRuleGroup\",\n \"wafv2:DeleteWebACL\",\n \"wafv2:GetIpSet\",\n \"wafv2:GetRegexPatternSet\",\n \"wafv2:GetRuleGroup\",\n \"wafv2:GetWebACL\",\n \"wafv2:ListIPSets\",\n \"wafv2:ListRegexPatternSets\",\n \"wafv2:ListRuleGroups\",\n \"wafv2:ListTagsForResource\",\n \"wafv2:ListWebACLs\",\n \"wafv2:TagResource\",\n \"wafv2:UntagResource\",\n \"wafv2:UpdateIpSet\",\n \"wafv2:UpdateRegexPatternSet\",\n \"wafv2:UpdateRuleGroup\"\n ],\n \"Resource\": \"*\"\n }\n ]\n}\n", Terraform: "resource \"aws_iam_policy\" \"terraform_pike\" {\n name_prefix = \"terraform_pike\"\n path = \"/\"\n description = \"Pike Autogenerated policy from IAC\"\n\n policy = jsonencode({\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"VisualEditor0\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"SNS:CreateTopic\",\n \"SNS:DeleteTopic\",\n \"SNS:GetTopicAttributes\",\n \"SNS:ListTagsForResource\",\n \"SNS:ListTopics\",\n \"SNS:SetTopicAttributes\",\n \"SNS:TagResource\",\n \"SNS:UnTagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor1\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"acm:AddTagsToCertificate\",\n \"acm:DeleteCertificate\",\n \"acm:DescribeCertificate\",\n \"acm:ListTagsForCertificate\",\n \"acm:RemoveTagsFromCertificate\",\n \"acm:RequestCertificate\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor2\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"acm-pa:DescribeCertificateAuthority\",\n \"acm-pa:ListTags\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor3\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"acm-pca:CreateCertificateAuthority\",\n \"acm-pca:DeleteCertificateAuthority\",\n \"acm-pca:GetCertificateAuthorityCertificate\",\n \"acm-pca:UpdateCertificateAuthority\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor4\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"apigateway:DELETE\",\n \"apigateway:GET\",\n \"apigateway:PATCH\",\n \"apigateway:POST\",\n \"apigateway:PUT\",\n \"apigateway:UpdateRestApiPolicy\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor5\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"application-autoscaling:DeleteScalingPolicy\",\n \"application-autoscaling:DeleteScheduledAction\",\n \"application-autoscaling:DeregisterScalableTarget\",\n \"application-autoscaling:DescribeScalableTargets\",\n \"application-autoscaling:DescribeScalingPolicies\",\n \"application-autoscaling:DescribeScheduledActions\",\n \"application-autoscaling:PutScalingPolicy\",\n \"application-autoscaling:PutScheduledAction\",\n \"application-autoscaling:RegisterScalableTarget\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor6\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"application-autoscaling:DeleteScalingPolicy\",\n \"application-autoscaling:DeleteScheduledAction\",\n \"application-autoscaling:DeregisterScalableTarget\",\n \"application-autoscaling:DescribeScalableTargets\",\n \"application-autoscaling:DescribeScalingPolicies\",\n \"application-autoscaling:DescribeScheduledActions\",\n \"application-autoscaling:PutScalingPolicy\",\n \"application-autoscaling:PutScheduledAction\",\n \"application-autoscaling:RegisterScalableTarget\",\n \"autoscaling:AttachLoadBalancers\",\n \"autoscaling:CreateAutoScalingGroup\",\n \"autoscaling:CreateLaunchConfiguration\",\n \"autoscaling:DeleteAutoScalingGroup\",\n \"autoscaling:DeleteLaunchConfiguration\",\n \"autoscaling:DescribeAutoScalingGroups\",\n \"autoscaling:DescribeLaunchConfigurations\",\n \"autoscaling:DescribeScalingActivities\",\n \"autoscaling:DetachLoadBalancers\",\n \"autoscaling:UpdateAutoScalingGroup\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor7\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"budgets:ModifyBudget\",\n \"budgets:ViewBudget\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor8\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"cloudtrail:AddTags\",\n \"cloudtrail:CreateTrail\",\n \"cloudtrail:DeleteTrail\",\n \"cloudtrail:DescribeTrails\",\n \"cloudtrail:GetEventSelectors\",\n \"cloudtrail:GetTrailStatus\",\n \"cloudtrail:ListTags\",\n \"cloudtrail:PutEventSelectors\",\n \"cloudtrail:RemoveTags\",\n \"cloudtrail:StartLogging\",\n \"cloudtrail:UpdateTrail\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor9\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"cloudwatch:DeleteAlarms\",\n \"cloudwatch:DescribeAlarms\",\n \"cloudwatch:ListTagsForResource\",\n \"cloudwatch:PutMetricAlarm\",\n \"cloudwatch:TagResource\",\n \"cloudwatch:UnTagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor10\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"codeartifact:CreateDomain\",\n \"codeartifact:CreateRepository\",\n \"codeartifact:DeleteDomain\",\n \"codeartifact:DeleteDomainPermissionsPolicy\",\n \"codeartifact:DeleteRepository\",\n \"codeartifact:DeleteRepositoryPermissionsPolicy\",\n \"codeartifact:DescribeDomain\",\n \"codeartifact:DescribeRepository\",\n \"codeartifact:GetDomainPermissionsPolicy\",\n \"codeartifact:GetRepositoryPermissionsPolicy\",\n \"codeartifact:ListTagsForResource\",\n \"codeartifact:PutDomainPermissionsPolicy\",\n \"codeartifact:PutRepositoryPermissionsPolicy\",\n \"codeartifact:TagResource\",\n \"codeartifact:UntagResource\",\n \"codeartifact:UpdateRepository\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor11\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"codebuild:BatchGetProjects\",\n \"codebuild:CreateProject\",\n \"codebuild:DeleteProject\",\n \"codebuild:UpdateProject\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor12\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"codecommit:CreateRepository\",\n \"codecommit:DeleteRepository\",\n \"codecommit:GetRepository\",\n \"codecommit:ListBranches\",\n \"codecommit:ListTagsForResource\",\n \"codecommit:TagResource\",\n \"codecommit:UntagResource\",\n \"codecommit:UpdateRepositoryDescription\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor13\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"codepipeline:CreatePipeline\",\n \"codepipeline:DeletePipeline\",\n \"codepipeline:GetPipeline\",\n \"codepipeline:ListTagsForResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor14\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"cognito-idp:AddCustomAttributes\",\n \"cognito-idp:AdminAddUserToGroup\",\n \"cognito-idp:AdminCreateUser\",\n \"cognito-idp:AdminDeleteUser\",\n \"cognito-idp:AdminGetUser\",\n \"cognito-idp:AdminListGroupsForUser\",\n \"cognito-idp:AdminRemoveUserFromGroup\",\n \"cognito-idp:CreateGroup\",\n \"cognito-idp:CreateIdentityProvider\",\n \"cognito-idp:CreateResourceServer\",\n \"cognito-idp:CreateUserPool\",\n \"cognito-idp:CreateUserPoolClient\",\n \"cognito-idp:CreateUserPoolDomain\",\n \"cognito-idp:DeleteGroup\",\n \"cognito-idp:DeleteIdentityProvider\",\n \"cognito-idp:DeleteResourceServer\",\n \"cognito-idp:DeleteUserPool\",\n \"cognito-idp:DeleteUserPoolClient\",\n \"cognito-idp:DeleteUserPoolDomain\",\n \"cognito-idp:DescribeIdentityProvider\",\n \"cognito-idp:DescribeResourceServer\",\n \"cognito-idp:DescribeUserPool\",\n \"cognito-idp:DescribeUserPoolClient\",\n \"cognito-idp:DescribeUserPoolDomain\",\n \"cognito-idp:GetGroup\",\n \"cognito-idp:GetSigningCertificate\",\n \"cognito-idp:GetUICustomization\",\n \"cognito-idp:GetUserPoolMfaConfig\",\n \"cognito-idp:ListUserPoolClients\",\n \"cognito-idp:ListUserPools\",\n \"cognito-idp:SetUICustomization\",\n \"cognito-idp:SetUserPoolMfaConfig\",\n \"cognito-idp:TagResource\",\n \"cognito-idp:UntagResource\",\n \"cognito-idp:UpdateGroup\",\n \"cognito-idp:UpdateIdentityProvider\",\n \"cognito-idp:UpdateResourceServer\",\n \"cognito-idp:UpdateUserPool\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor15\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"dax:CreateParameterGroup\",\n \"dax:CreateSubnetGroup\",\n \"dax:DeleteParameterGroup\",\n \"dax:DeleteSubnetGroup\",\n \"dax:DescribeParameterGroups\",\n \"dax:DescribeParameters\",\n \"dax:DescribeSubnetGroups\",\n \"dax:UpdateParameterGroup\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor16\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ds:AddTagsToResource\",\n \"ds:CreateDirectory\",\n \"ds:CreateLogSubscription\",\n \"ds:DeleteDirectory\",\n \"ds:DeleteLogSubscription\",\n \"ds:ListTagsForResource\",\n \"ds:RemoveTagsFromResource\",\n \"rds:AddRoleToDBCluster\",\n \"rds:AddTagsToResource\",\n \"rds:CreateDBCluster\",\n \"rds:CreateDBClusterEndpoint\",\n \"rds:CreateDBClusterParameterGroup\",\n \"rds:CreateDBClusterSnapshot\",\n \"rds:CreateDBInstance\",\n \"rds:CreateDBParameterGroup\",\n \"rds:CreateDBSubnetGroup\",\n \"rds:CreateGlobalCluster\",\n \"rds:CreateOptionGroup\",\n \"rds:DeleteDBCluster\",\n \"rds:DeleteDBClusterEndpoint\",\n \"rds:DeleteDBClusterParameterGroup\",\n \"rds:DeleteDBClusterSnapshot\",\n \"rds:DeleteDBParameterGroup\",\n \"rds:DeleteDBSubnetGroup\",\n \"rds:DeleteGlobalCluster\",\n \"rds:DeleteOptionGroup\",\n \"rds:DescribeCertificates\",\n \"rds:DescribeDBClusterParameterGroups\",\n \"rds:DescribeDBClusterParameters\",\n \"rds:DescribeDBClusterSnapshots\",\n \"rds:DescribeDBClusters\",\n \"rds:DescribeDBEngineVersions\",\n \"rds:DescribeDBInstances\",\n \"rds:DescribeDBParameterGroups\",\n \"rds:DescribeDBParameters\",\n \"rds:DescribeDBSnapshots\",\n \"rds:DescribeDBSubnetGroups\",\n \"rds:DescribeEventCategories\",\n \"rds:DescribeGlobalClusters\",\n \"rds:DescribeOptionGroups\",\n \"rds:DescribeOrderableDBInstanceOptions\",\n \"rds:ListTagsForResource\",\n \"rds:ModifyDBCluster\",\n \"rds:ModifyDBClusterEndpoint\",\n \"rds:ModifyDBClusterParameterGroup\",\n \"rds:ModifyDBInstance\",\n \"rds:ModifyDBParameterGroup\",\n \"rds:ModifyGlobalCluster\",\n \"rds:ModifyOptionGroup\",\n \"rds:RemoveRoleFromDBCluster\",\n \"rds:RemoveTagsFromResource\",\n \"rds:StartActivityStream\",\n \"rds:StopActivityStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor17\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"dynamodb:BatchWriteItem\",\n \"dynamodb:CreateTable\",\n \"dynamodb:CreateTableReplica\",\n \"dynamodb:DeleteItem\",\n \"dynamodb:DeleteTable\",\n \"dynamodb:DeleteTableReplica\",\n \"dynamodb:DescribeContinuousBackups\",\n \"dynamodb:DescribeTable\",\n \"dynamodb:DescribeTimeToLive\",\n \"dynamodb:GetItem\",\n \"dynamodb:ListTagsOfResource\",\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:Scan\",\n \"dynamodb:TagResource\",\n \"dynamodb:UntagResource\",\n \"dynamodb:UpdateContinuousBackups\",\n \"dynamodb:UpdateItem\",\n \"dynamodb:UpdateTable\",\n \"dynamodb:UpdateTimeToLive\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor18\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:AllocateAddress\",\n \"ec2:AssociateAddress\",\n \"ec2:AssociateRouteTable\",\n \"ec2:AttachInternetGateway\",\n \"ec2:AttachVolume\",\n \"ec2:AttachVpnGateway\",\n \"ec2:AuthorizeSecurityGroupEgress\",\n \"ec2:AuthorizeSecurityGroupIngress\",\n \"ec2:CancelCapacityReservation\",\n \"ec2:CancelSpotInstanceRequests\",\n \"ec2:CreateCapacityReservation\",\n \"ec2:CreateDefaultVpc\",\n \"ec2:CreateFlowLogs\",\n \"ec2:CreateInternetGateway\",\n \"ec2:CreateKeyPair\",\n \"ec2:CreateLaunchTemplate\",\n \"ec2:CreateLaunchTemplateVersion\",\n \"ec2:CreateNatGateway\",\n \"ec2:CreateNetworkAcl\",\n \"ec2:CreateNetworkAclEntry\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:CreatePlacementGroup\",\n \"ec2:CreateRoute\",\n \"ec2:CreateRouteTable\",\n \"ec2:CreateSecurityGroup\",\n \"ec2:CreateSubnet\",\n \"ec2:CreateTags\",\n \"ec2:CreateVPC\",\n \"ec2:CreateVolume\",\n \"ec2:CreateVpcEndpoint\",\n \"ec2:CreateVpnGateway\",\n \"ec2:DeleteFlowLogs\",\n \"ec2:DeleteInternetGateway\",\n \"ec2:DeleteKeyPair\",\n \"ec2:DeleteLaunchTemplate\",\n \"ec2:DeleteNatGateway\",\n \"ec2:DeleteNetworkAcl\",\n \"ec2:DeleteNetworkAclEntry\",\n \"ec2:DeleteNetworkInterface\",\n \"ec2:DeleteNetworkInterfacePermission\",\n \"ec2:DeletePlacementGroup\",\n \"ec2:DeleteRoute\",\n \"ec2:DeleteRouteTable\",\n \"ec2:DeleteSecurityGroup\",\n \"ec2:DeleteSubnet\",\n \"ec2:DeleteTags\",\n \"ec2:DeleteVPC\",\n \"ec2:DeleteVolume\",\n \"ec2:DeleteVpcEndpoints\",\n \"ec2:DeleteVpnGateway\",\n \"ec2:DescribeAccountAttributes\",\n \"ec2:DescribeAddresses\",\n \"ec2:DescribeAvailabilityZones\",\n \"ec2:DescribeCapacityReservations\",\n \"ec2:DescribeDhcpOptions\",\n \"ec2:DescribeFlowLogs\",\n \"ec2:DescribeImages\",\n \"ec2:DescribeInstanceAttribute\",\n \"ec2:DescribeInstanceCreditSpecifications\",\n \"ec2:DescribeInstanceTypes\",\n \"ec2:DescribeInstances\",\n \"ec2:DescribeInternetGateways\",\n \"ec2:DescribeKeyPairs\",\n \"ec2:DescribeLaunchTemplateVersions\",\n \"ec2:DescribeLaunchTemplates\",\n \"ec2:DescribeNatGateways\",\n \"ec2:DescribeNetworkAcls\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:DescribePlacementGroups\",\n \"ec2:DescribePrefixLists\",\n \"ec2:DescribeRouteTables\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeSpotInstanceRequests\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeTags\",\n \"ec2:DescribeVolumes\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeVpcEndpointServices\",\n \"ec2:DescribeVpcEndpoints\",\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpnGateways\",\n \"ec2:DetachInternetGateway\",\n \"ec2:DetachNetworkInterface\",\n \"ec2:DetachVolume\",\n \"ec2:DetachVpnGateway\",\n \"ec2:DisassociateAddress\",\n \"ec2:DisassociateRouteTable\",\n \"ec2:GetEbsDefaultKmsKeyId\",\n \"ec2:ImportKeyPair\",\n \"ec2:ModifyCapacityReservation\",\n \"ec2:ModifyInstanceAttribute\",\n \"ec2:ModifyVolume\",\n \"ec2:ModifyVpcEndpoint\",\n \"ec2:MonitorInstances\",\n \"ec2:ReleaseAddress\",\n \"ec2:RequestSpotInstances\",\n \"ec2:RevokeSecurityGroupEgress\",\n \"ec2:RevokeSecurityGroupIngress\",\n \"ec2:RunInstances\",\n \"ec2:StartInstances\",\n \"ec2:StopInstances\",\n \"ec2:TerminateInstances\",\n \"ec2:UnmonitorInstances\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor19\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ecr:CreatePullThroughCacheRule\",\n \"ecr:CreateRepository\",\n \"ecr:DeleteLifecyclePolicy\",\n \"ecr:DeletePullThroughCacheRule\",\n \"ecr:DeleteRepository\",\n \"ecr:DescribePullThroughCacheRules\",\n \"ecr:DescribeRepositories\",\n \"ecr:GetAuthorizationToken\",\n \"ecr:GetLifecyclePolicy\",\n \"ecr:ListTagsForResource\",\n \"ecr:PutImageScanningConfiguration\",\n \"ecr:PutLifecyclePolicy\",\n \"ecr:TagResource\",\n \"ecr:UntagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor20\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ecs:CreateCluster\",\n \"ecs:CreateService\",\n \"ecs:DeleteCluster\",\n \"ecs:DeleteService\",\n \"ecs:DeregisterTaskDefinition\",\n \"ecs:DescribeClusters\",\n \"ecs:DescribeServices\",\n \"ecs:DescribeTaskDefinition\",\n \"ecs:UpdateCluster\",\n \"ecs:RegisterTaskDefinition\",\n \"ecs:TagResource\",\n \"ecs:UntagResource\",\n \"ecs:UpdateService\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor21\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"eks:DescribeCluster\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor22\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"elasticache:AddTagsToResource\",\n \"elasticache:CreateCacheParameterGroup\",\n \"elasticache:CreateCacheSubnetGroup\",\n \"elasticache:DeleteCacheParameterGroup\",\n \"elasticache:DeleteCacheSubnetGroup\",\n \"elasticache:DescribeCacheParameterGroups\",\n \"elasticache:DescribeCacheParameters\",\n \"elasticache:DescribeCacheSubnetGroups\",\n \"elasticache:ListTagsForResource\",\n \"elasticache:ModifyCacheParameterGroup\",\n \"elasticache:ModifyCacheSubnetGroup\",\n \"elasticache:RemoveTagsFromResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor23\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"elasticbeanstalk:AddTags\",\n \"elasticbeanstalk:CreateApplication\",\n \"elasticbeanstalk:DeleteApplication\",\n \"elasticbeanstalk:DescribeApplications\",\n \"elasticbeanstalk:ListAvailableSolutionStacks\",\n \"elasticbeanstalk:ListTagsForResource\",\n \"elasticbeanstalk:RemoveTags\",\n \"elasticbeanstalk:UpdateApplicationResourceLifecycle\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor24\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"elasticfilesystem:CreateAccessPoint\",\n \"elasticfilesystem:CreateFileSystem\",\n \"elasticfilesystem:CreateReplicationConfiguration\",\n \"elasticfilesystem:DeleteAccessPoint\",\n \"elasticfilesystem:DeleteFileSystem\",\n \"elasticfilesystem:DeleteFileSystemPolicy\",\n \"elasticfilesystem:DeleteReplicationConfiguration\",\n \"elasticfilesystem:DescribeAccessPoints\",\n \"elasticfilesystem:DescribeBackupPolicy\",\n \"elasticfilesystem:DescribeFileSystemPolicy\",\n \"elasticfilesystem:DescribeFileSystems\",\n \"elasticfilesystem:DescribeLifecycleConfiguration\",\n \"elasticfilesystem:DescribeMountTargetSecurityGroups\",\n \"elasticfilesystem:DescribeMountTargets\",\n \"elasticfilesystem:DescribeReplicationConfigurations\",\n \"elasticfilesystem:PutBackupPolicy\",\n \"elasticfilesystem:PutFileSystemPolicy\",\n \"elasticfilesystem:TagResource\",\n \"elasticfilesystem:UntagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor25\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"elasticloadbalancing:AddTags\",\n \"elasticloadbalancing:AttachLoadBalancerToSubnets\",\n \"elasticloadbalancing:CreateListener\",\n \"elasticloadbalancing:CreateLoadBalancer\",\n \"elasticloadbalancing:CreateLoadBalancerListeners\",\n \"elasticloadbalancing:CreateTargetGroup\",\n \"elasticloadbalancing:DeleteListener\",\n \"elasticloadbalancing:DeleteLoadBalancer\",\n \"elasticloadbalancing:DeleteTargetGroup\",\n \"elasticloadbalancing:DeregisterTargets\",\n \"elasticloadbalancing:DescribeListeners\",\n \"elasticloadbalancing:DescribeLoadBalancerAttributes\",\n \"elasticloadbalancing:DescribeLoadBalancers\",\n \"elasticloadbalancing:DescribeTags\",\n \"elasticloadbalancing:DescribeTargetGroupAttributes\",\n \"elasticloadbalancing:DescribeTargetGroups\",\n \"elasticloadbalancing:DescribeTargetHealth\",\n \"elasticloadbalancing:ModifyListener\",\n \"elasticloadbalancing:ModifyLoadBalancerAttributes\",\n \"elasticloadbalancing:ModifyTargetGroupAttributes\",\n \"elasticloadbalancing:RegisterTargets\",\n \"elasticloadbalancing:RemoveTags\",\n \"elasticloadbalancing:SetSecurityGroups\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor26\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"events:DeleteRule\",\n \"events:DescribeRule\",\n \"events:ListTagsForResource\",\n \"events:ListTargetsByRule\",\n \"events:PutRule\",\n \"events:PutTargets\",\n \"events:RemoveTargets\",\n \"events:TagResource\",\n \"events:UnTagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor27\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"firehose:CreateDeliveryStream\",\n \"firehose:DeleteDeliveryStream\",\n \"firehose:DescribeDeliveryStream\",\n \"firehose:ListTagsForDeliveryStream\",\n \"firehose:TagDeliveryStream\",\n \"firehose:UntagDeliveryStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor28\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"glue:CreateClassifier\",\n \"glue:CreateConnection\",\n \"glue:CreateCrawler\",\n \"glue:CreateDatabase\",\n \"glue:CreateJob\",\n \"glue:CreateMLTransform\",\n \"glue:CreateRegistry\",\n \"glue:CreateSchema\",\n \"glue:CreateScript\",\n \"glue:CreateSecurityConfiguration\",\n \"glue:CreateTable\",\n \"glue:CreateTrigger\",\n \"glue:CreateUserDefinedFunction\",\n \"glue:CreateWorkflow\",\n \"glue:DeleteClassifier\",\n \"glue:DeleteConnection\",\n \"glue:DeleteCrawler\",\n \"glue:DeleteDatabase\",\n \"glue:DeleteJob\",\n \"glue:DeleteMLTransform\",\n \"glue:DeleteRegistry\",\n \"glue:DeleteResourcePolicy\",\n \"glue:DeleteSchema\",\n \"glue:DeleteSecurityConfiguration\",\n \"glue:DeleteTable\",\n \"glue:DeleteTrigger\",\n \"glue:DeleteUserDefinedFunction\",\n \"glue:DeleteWorkflow\",\n \"glue:GetClassifier\",\n \"glue:GetConnection\",\n \"glue:GetCrawler\",\n \"glue:GetDataCatalogEncryptionSettings\",\n \"glue:GetDatabase\",\n \"glue:GetJob\",\n \"glue:GetMLTransform\",\n \"glue:GetRegistry\",\n \"glue:GetResourcePolicy\",\n \"glue:GetSchema\",\n \"glue:GetSchemaVersion\",\n \"glue:GetSecurityConfiguration\",\n \"glue:GetTable\",\n \"glue:GetTags\",\n \"glue:GetTrigger\",\n \"glue:GetUserDefinedFunction\",\n \"glue:GetWorkflow\",\n \"glue:PutDataCatalogEncryptionSettings\",\n \"glue:PutResourcePolicy\",\n \"glue:TagResource\",\n \"glue:UntagResource\",\n \"glue:UpdateClassifier\",\n \"glue:UpdateConnection\",\n \"glue:UpdateCrawler\",\n \"glue:UpdateDatabase\",\n \"glue:UpdateJob\",\n \"glue:UpdateMLTransform\",\n \"glue:UpdateRegistry\",\n \"glue:UpdateSchema\",\n \"glue:UpdateTable\",\n \"glue:UpdateTrigger\",\n \"glue:UpdateUserDefinedFunction\",\n \"glue:UpdateWorkflow\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor29\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"iam:AddRoleToInstanceProfile\",\n \"iam:AddUserToGroup\",\n \"iam:AttachGroupPolicy\",\n \"iam:AttachRolePolicy\",\n \"iam:AttachUserPolicy\",\n \"iam:CreateAccessKey\",\n \"iam:CreateGroup\",\n \"iam:CreateInstanceProfile\",\n \"iam:CreateLoginProfile\",\n \"iam:CreatePolicy\",\n \"iam:CreateRole\",\n \"iam:CreateServiceLinkedRole\",\n \"iam:CreateUser\",\n \"iam:DeleteAccessKey\",\n \"iam:DeleteGroup\",\n \"iam:DeleteGroupPolicy\",\n \"iam:DeleteInstanceProfile\",\n \"iam:DeleteLoginProfile\",\n \"iam:DeletePolicy\",\n \"iam:DeleteRole\",\n \"iam:DeleteRolePolicy\",\n \"iam:DeleteServiceLinkedRole\",\n \"iam:DeleteUser\",\n \"iam:DeleteUserPolicy\",\n \"iam:DetachGroupPolicy\",\n \"iam:DetachRolePolicy\",\n \"iam:DetachUserPolicy\",\n \"iam:GetGroup\",\n \"iam:GetGroupPolicy\",\n \"iam:GetInstanceProfile\",\n \"iam:GetLoginProfile\",\n \"iam:GetPolicy\",\n \"iam:GetPolicyVersion\",\n \"iam:GetRole\",\n \"iam:GetRolePolicy\",\n \"iam:GetServiceLinkedRoleDeletionStatus\",\n \"iam:GetUser\",\n \"iam:GetUserPolicy\",\n \"iam:ListAccessKeys\",\n \"iam:ListAttachedGroupPolicies\",\n \"iam:ListAttachedRolePolicies\",\n \"iam:ListAttachedUserPolicies\",\n \"iam:ListEntitiesForPolicy\",\n \"iam:ListGroupsForUser\",\n \"iam:ListInstanceProfilesForRole\",\n \"iam:ListPolicies\",\n \"iam:ListPolicyVersions\",\n \"iam:ListRolePolicies\",\n \"iam:PassRole\",\n \"iam:PutGroupPolicy\",\n \"iam:PutRolePolicy\",\n \"iam:PutUserPolicy\",\n \"iam:RemoveRoleFromInstanceProfile\",\n \"iam:RemoveUserFromGroup\",\n \"iam:TagPolicy\",\n \"iam:TagRole\",\n \"iam:TagUser\",\n \"iam:UnTagRole\",\n \"iam:UnTagUser\",\n \"iam:UntagPolicy\",\n \"iam:UpdateAccessKey\",\n \"iam:UpdateRoleDescription\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor30\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"inspector:CreateAssessmentTarget\",\n \"inspector:CreateAssessmentTemplate\",\n \"inspector:CreateResourceGroup\",\n \"inspector:DeleteAssessmentTarget\",\n \"inspector:DeleteAssessmentTemplate\",\n \"inspector:DescribeAssessmentTargets\",\n \"inspector:DescribeAssessmentTemplates\",\n \"inspector:DescribeResourceGroups\",\n \"inspector:ListEventSubscriptions\",\n \"inspector:ListRulesPackages\",\n \"inspector:ListTagsForResource\",\n \"inspector:SetTagsForResource\",\n \"inspector:SubscribeToEvent\",\n \"inspector:UnsubscribeFromEvent\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor31\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"kinesis:AddTagsToStream\",\n \"kinesis:CreateStream\",\n \"kinesis:DeleteStream\",\n \"kinesis:DescribeStreamSummary\",\n \"kinesis:EnableEnhancedMonitoring\",\n \"kinesis:IncreaseStreamRetentionPeriod\",\n \"kinesis:ListTagsForStream\",\n \"kinesis:RemoveTagsFromStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor32\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"kinesisvideo:CreateStream\",\n \"kinesisvideo:DeleteStream\",\n \"kinesisvideo:DescribeStream\",\n \"kinesisvideo:ListTagsForStream\",\n \"kinesisvideo:TagStream\",\n \"kinesisvideo:UntagStream\",\n \"kinesisvideo:UpdateStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor33\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"kms:CreateAlias\",\n \"kms:CreateGrant\",\n \"kms:CreateKey\",\n \"kms:Decrypt\",\n \"kms:DeleteAlias\",\n \"kms:DescribeKey\",\n \"kms:DisableKey\",\n \"kms:EnableKey\",\n \"kms:EnableKeyRotation\",\n \"kms:Encrypt\",\n \"kms:GenerateDataKey*\",\n \"kms:GetKeyPolicy\",\n \"kms:GetKeyRotationStatus\",\n \"kms:ListAliases\",\n \"kms:ListResourceTags\",\n \"kms:PutKeyPolicy\",\n \"kms:ReEncrypt*\",\n \"kms:ScheduleKeyDeletion\",\n \"kms:TagResource\",\n \"kms:UntagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor34\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"lambda:AddPermission\",\n \"lambda:CreateAlias\",\n \"lambda:CreateFunction\",\n \"lambda:DeleteAlias\",\n \"lambda:DeleteFunction\",\n \"lambda:GetAlias\",\n \"lambda:GetFunction\",\n \"lambda:GetFunctionCodeSigningConfig\",\n \"lambda:GetPolicy\",\n \"lambda:ListVersionsByFunction\",\n \"lambda:RemovePermission\",\n \"lambda:TagResource\",\n \"lambda:UntagResource\",\n \"lambda:UpdateAlias\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor35\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"logs:CreateLogGroup\",\n \"logs:DeleteLogGroup\",\n \"logs:DeleteMetricFilter\",\n \"logs:DeleteResourcePolicy\",\n \"logs:DeleteRetentionPolicy\",\n \"logs:DeleteSubscriptionFilter\",\n \"logs:DescribeLogGroups\",\n \"logs:DescribeMetricFilters\",\n \"logs:DescribeResourcePolicies\",\n \"logs:DescribeSubscriptionFilters\",\n \"logs:ListTagsLogGroup\",\n \"logs:PutMetricFilter\",\n \"logs:PutResourcePolicy\",\n \"logs:PutRetentionPolicy\",\n \"logs:PutSubscriptionFilter\",\n \"logs:TagLogGroup\",\n \"logs:UntagLogGroup\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor36\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"memorydb:CreateSubnetGroup\",\n \"memorydb:DeleteSubnetGroup\",\n \"memorydb:DescribeSubnetGroups\",\n \"memorydb:ListTags\",\n \"memorydb:TagResource\",\n \"memorydb:UntagResource\",\n \"memorydb:UpdateSubnetGroup\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor37\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"mq:CreateBroker\",\n \"mq:CreateConfiguration\",\n \"mq:CreateTags\",\n \"mq:CreateUser\",\n \"mq:DeleteBroker\",\n \"mq:DeleteTags\",\n \"mq:DeleteUser\",\n \"mq:DescribeBroker\",\n \"mq:DescribeConfiguration\",\n \"mq:DescribeConfigurationRevision\",\n \"mq:DescribeUser\",\n \"mq:RebootBroker\",\n \"mq:UpdateBroker\",\n \"mq:UpdateConfiguration\",\n \"mq:UpdateUser\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor38\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"organizations:DescribeOrganization\",\n \"organizations:ListAWSServiceAccessForOrganization\",\n \"organizations:ListAccounts\",\n \"organizations:ListRoots\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor39\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"outposts:ListOutposts\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor40\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"rds:AddRoleToDBCluster\",\n \"rds:AddTagsToResource\",\n \"rds:CreateDBCluster\",\n \"rds:CreateDBClusterEndpoint\",\n \"rds:CreateDBClusterParameterGroup\",\n \"rds:CreateDBClusterSnapshot\",\n \"rds:CreateDBInstance\",\n \"rds:CreateDBParameterGroup\",\n \"rds:CreateDBSubnetGroup\",\n \"rds:CreateGlobalCluster\",\n \"rds:CreateOptionGroup\",\n \"rds:DeleteDBCluster\",\n \"rds:DeleteDBClusterEndpoint\",\n \"rds:DeleteDBClusterParameterGroup\",\n \"rds:DeleteDBClusterSnapshot\",\n \"rds:DeleteDBParameterGroup\",\n \"rds:DeleteDBSubnetGroup\",\n \"rds:DeleteGlobalCluster\",\n \"rds:DeleteOptionGroup\",\n \"rds:DescribeCertificates\",\n \"rds:DescribeDBClusterParameterGroups\",\n \"rds:DescribeDBClusterParameters\",\n \"rds:DescribeDBClusterSnapshots\",\n \"rds:DescribeDBClusters\",\n \"rds:DescribeDBEngineVersions\",\n \"rds:DescribeDBInstances\",\n \"rds:DescribeDBParameterGroups\",\n \"rds:DescribeDBParameters\",\n \"rds:DescribeDBSnapshots\",\n \"rds:DescribeDBSubnetGroups\",\n \"rds:DescribeEventCategories\",\n \"rds:DescribeGlobalClusters\",\n \"rds:DescribeOptionGroups\",\n \"rds:DescribeOrderableDBInstanceOptions\",\n \"rds:ListTagsForResource\",\n \"rds:ModifyDBCluster\",\n \"rds:ModifyDBClusterEndpoint\",\n \"rds:ModifyDBClusterParameterGroup\",\n \"rds:ModifyDBInstance\",\n \"rds:ModifyDBParameterGroup\",\n \"rds:ModifyGlobalCluster\",\n \"rds:ModifyOptionGroup\",\n \"rds:RemoveRoleFromDBCluster\",\n \"rds:RemoveTagsFromResource\",\n \"rds:StartActivityStream\",\n \"rds:StopActivityStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor41\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"redshift:CreateAuthenticationProfile\",\n \"redshift:CreateCluster\",\n \"redshift:CreateClusterParameterGroup\",\n \"redshift:CreateClusterSubnetGroup\",\n \"redshift:CreateEventSubscription\",\n \"redshift:CreateHsmClientCertificate\",\n \"redshift:CreateHsmConfiguration\",\n \"redshift:CreateScheduledAction\",\n \"redshift:CreateSnapshotCopyGrant\",\n \"redshift:CreateSnapshotSchedule\",\n \"redshift:CreateTags\",\n \"redshift:CreateUsageLimit\",\n \"redshift:DeleteAuthenticationProfile\",\n \"redshift:DeleteCluster\",\n \"redshift:DeleteClusterParameterGroup\",\n \"redshift:DeleteClusterSubnetGroup\",\n \"redshift:DeleteEventSubscription\",\n \"redshift:DeleteHsmClientCertificate\",\n \"redshift:DeleteHsmConfiguration\",\n \"redshift:DeleteScheduledAction\",\n \"redshift:DeleteSnapshotCopyGrant\",\n \"redshift:DeleteSnapshotSchedule\",\n \"redshift:DeleteTags\",\n \"redshift:DeleteUsageLimit\",\n \"redshift:DescribeAuthenticationProfiles\",\n \"redshift:DescribeClusterParameterGroups\",\n \"redshift:DescribeClusterParameters\",\n \"redshift:DescribeClusterSubnetGroups\",\n \"redshift:DescribeClusters\",\n \"redshift:DescribeEventSubscriptions\",\n \"redshift:DescribeHsmClientCertificates\",\n \"redshift:DescribeHsmConfigurations\",\n \"redshift:DescribeLoggingStatus\",\n \"redshift:DescribeOrderableClusterOptions\",\n \"redshift:DescribeScheduledActions\",\n \"redshift:DescribeSnapshotCopyGrants\",\n \"redshift:DescribeSnapshotSchedules\",\n \"redshift:DescribeUsageLimits\",\n \"redshift:DisableLogging\",\n \"redshift:EnableLogging\",\n \"redshift:GetClusterCredentials\",\n \"redshift:ModifyAuthenticationProfile\",\n \"redshift:ModifyCluster\",\n \"redshift:ModifyClusterIamRoles\",\n \"redshift:ModifyClusterParameterGroup\",\n \"redshift:ModifyClusterSnapshotSchedule\",\n \"redshift:ModifyClusterSubnetGroup\",\n \"redshift:ModifyEventSubscription\",\n \"redshift:ModifyScheduledAction\",\n \"redshift:ModifySnapshotSchedule\",\n \"redshift:ModifyUsageLimit\",\n \"redshift:PauseCluster\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor42\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"route53:AssociateVPCWithHostedZone\",\n \"route53:ChangeResourceRecordSets\",\n \"route53:ChangeTagsForResource\",\n \"route53:CreateHostedZone\",\n \"route53:DeleteHostedZone\",\n \"route53:GetChange\",\n \"route53:GetHostedZone\",\n \"route53:ListHostedZones\",\n \"route53:ListResourceRecordSets\",\n \"route53:ListTagsForResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor43\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:CreateBucket\",\n \"s3:DeleteBucket\",\n \"s3:DeleteObject\",\n \"s3:GetAccelerateConfiguration\",\n \"s3:GetBucketAcl\",\n \"s3:GetBucketCORS\",\n \"s3:GetBucketLocation\",\n \"s3:GetBucketLogging\",\n \"s3:GetBucketObjectLockConfiguration\",\n \"s3:GetBucketPolicy\",\n \"s3:GetBucketPublicAccessBlock\",\n \"s3:GetBucketRequestPayment\",\n \"s3:GetBucketTagging\",\n \"s3:GetBucketVersioning\",\n \"s3:GetBucketWebsite\",\n \"s3:GetEncryptionConfiguration\",\n \"s3:GetLifecycleConfiguration\",\n \"s3:GetObject\",\n \"s3:GetObjectAcl\",\n \"s3:GetObjectTagging\",\n \"s3:GetReplicationConfiguration\",\n \"s3:ListAllMyBuckets\",\n \"s3:ListBucket\",\n \"s3:PutBucketAcl\",\n \"s3:PutBucketLogging\",\n \"s3:PutBucketObjectLockConfiguration\",\n \"s3:PutBucketPolicy\",\n \"s3:PutBucketPublicAccessBlock\",\n \"s3:PutBucketVersioning\",\n \"s3:PutEncryptionConfiguration\",\n \"s3:PutLifecycleConfiguration\",\n \"s3:PutObject\",\n \"s3:PutObjectLegalHold\",\n \"s3:PutObjectRetention\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor44\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"secretsmanager:CreateSecret\",\n \"secretsmanager:DeleteSecret\",\n \"secretsmanager:DescribeSecret\",\n \"secretsmanager:GetResourcePolicy\",\n \"secretsmanager:GetSecretValue\",\n \"secretsmanager:PutSecretValue\",\n \"secretsmanager:TagResource\",\n \"secretsmanager:UntagResource\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor45\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"servicecatalog:CreatePortfolio\",\n \"servicecatalog:DeletePortfolio\",\n \"servicecatalog:DescribePortfolio\",\n \"servicecatalog:TagResource\",\n \"servicecatalog:UpdatePortfolio\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor46\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"sqs:GetQueueAttributes\",\n \"sqs:ListQueueTags\",\n \"sqs:SetQueueAttributes\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor47\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ssm:AddTagsToResource\",\n \"ssm:CreateDocument\",\n \"ssm:CreateMaintenanceWindow\",\n \"ssm:CreatePatchBaseline\",\n \"ssm:DeleteDocument\",\n \"ssm:DeleteMaintenanceWindow\",\n \"ssm:DeleteParameter\",\n \"ssm:DeletePatchBaseline\",\n \"ssm:DeregisterPatchBaselineForPatchGroup\",\n \"ssm:DeregisterTargetFromMaintenanceWindow\",\n \"ssm:DeregisterTaskFromMaintenanceWindow\",\n \"ssm:DescribeDocument\",\n \"ssm:DescribeDocumentPermission\",\n \"ssm:DescribeMaintenanceWindowTargets\",\n \"ssm:DescribeMaintenanceWindowTasks\",\n \"ssm:DescribeParameters\",\n \"ssm:DescribePatchGroups\",\n \"ssm:GetDocument\",\n \"ssm:GetMaintenanceWindow\",\n \"ssm:GetParameter\",\n \"ssm:GetParameters\",\n \"ssm:GetPatchBaseline\",\n \"ssm:ListTagsForResource\",\n \"ssm:PutParameter\",\n \"ssm:RegisterPatchBaselineForPatchGroup\",\n \"ssm:RegisterTargetWithMaintenanceWindow\",\n \"ssm:RegisterTaskWithMaintenanceWindow\",\n \"ssm:RemoveTagsFromResource\",\n \"ssm:UpdateDocument\",\n \"ssm:UpdateMaintenanceWindow\",\n \"ssm:UpdatePatchBaseline\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor48\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"sso:ListInstances\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor49\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"states:CreateActivity\",\n \"states:CreateStateMachine\",\n \"states:DeleteActivity\",\n \"states:DeleteStateMachine\",\n \"states:DescribeActivity\",\n \"states:DescribeStateMachine\",\n \"states:ListTagsForResource\",\n \"states:TagResource\",\n \"states:UntagResource\",\n \"states:UpdateStateMachine\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"VisualEditor50\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"wafv2:CreateIpSet\",\n \"wafv2:CreateRegexPatternSet\",\n \"wafv2:CreateRuleGroup\",\n \"wafv2:CreateWebACL\",\n \"wafv2:DeleteIpSet\",\n \"wafv2:DeleteRegexPatternSet\",\n \"wafv2:DeleteRuleGroup\",\n \"wafv2:DeleteWebACL\",\n \"wafv2:GetIpSet\",\n \"wafv2:GetRegexPatternSet\",\n \"wafv2:GetRuleGroup\",\n \"wafv2:GetWebACL\",\n \"wafv2:ListIPSets\",\n \"wafv2:ListRegexPatternSets\",\n \"wafv2:ListRuleGroups\",\n \"wafv2:ListTagsForResource\",\n \"wafv2:ListWebACLs\",\n \"wafv2:TagResource\",\n \"wafv2:UntagResource\",\n \"wafv2:UpdateIpSet\",\n \"wafv2:UpdateRegexPatternSet\",\n \"wafv2:UpdateRuleGroup\"\n ],\n \"Resource\": \"*\"\n }\n ]\n})\n}\n", }, GCP: "", AZURE: ""} @@ -611,7 +688,8 @@ func TestWriteOutput(t *testing.T) { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() - if err := pike.WriteOutput(tt.args.OutPolicy, tt.args.output, tt.args.location); (err != nil) != tt.wantErr { + + if err := WriteOutput(tt.args.OutPolicy, tt.args.output, tt.args.location, ""); (err != nil) != tt.wantErr { t.Errorf("WriteOutput() error = %v, wantErr %v", err, tt.wantErr) } }) @@ -637,15 +715,19 @@ func TestLocateTerraform(t *testing.T) { if tt.os == runtime.GOOS { t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, err := pike.LocateTerraform() + + got, err := LocateTerraform() + if (err != nil) != tt.wantErr { t.Errorf("LocateTerraform() error = %v, wantErr %v", err, tt.wantErr) return } + if got == "" { t.Errorf("LocateTerraform() = %v, expected %v", got, tt.want) } + log.Info().Msgf("terraform is at %s", got) }) } @@ -662,13 +744,15 @@ func TestInitWithEmptyDir(t *testing.T) { //goland:noinspection GoUnhandledErrorResult defer os.RemoveAll(tempDir) - tfPath, modules, err := pike.Init(tempDir) + tfPath, modules, err := Init(tempDir) if err == nil { t.Error("Expected error for empty directory, got nil") } + if tfPath == nil { t.Error("TFPath was not set") } + if modules != nil { t.Errorf("Expected nil modules for empty directory, got %v", modules) } @@ -690,15 +774,18 @@ func TestInitWithInvalidTerraformConfig(t *testing.T) { bad config } `) - err = os.WriteFile(filepath.Join(tempDir, "main.tf"), invalidConfig, 0644) + + err = os.WriteFile(filepath.Join(tempDir, "main.tf"), invalidConfig, 0o644) + if err != nil { t.Fatal(err) } - _, modules, err := pike.Init(tempDir) + _, modules, err := Init(tempDir) if err == nil { t.Error("Expected error for invalid terraform config, got nil") } + if modules != nil { t.Errorf("Expected nil modules for invalid config, got %v", modules) } @@ -716,20 +803,22 @@ func TestInitWithModulesJsonOnly(t *testing.T) { // Create .terraform/modules directory with only modules.json modulesDir := filepath.Join(tempDir, ".terraform", "modules") - err = os.MkdirAll(modulesDir, 0755) + err = os.MkdirAll(modulesDir, 0o755) + if err != nil { t.Fatal(err) } - err = os.WriteFile(filepath.Join(modulesDir, "modules.json"), []byte("{}"), 0644) + err = os.WriteFile(filepath.Join(modulesDir, "modules.json"), []byte("{}"), 0o644) if err != nil { t.Fatal(err) } - _, modules, err := pike.Init(tempDir) + _, modules, err := Init(tempDir) if err != nil { t.Errorf("Unexpected error: %v", err) } + if len(modules) != 0 { t.Errorf("Expected empty modules slice, got %v", modules) } @@ -747,20 +836,23 @@ func TestInitWithDSStoreOnly(t *testing.T) { // Create .terraform/modules directory with only .DS_Store modulesDir := filepath.Join(tempDir, ".terraform", "modules") - err = os.MkdirAll(modulesDir, 0755) + err = os.MkdirAll(modulesDir, 0o755) + if err != nil { t.Fatal(err) } - err = os.WriteFile(filepath.Join(modulesDir, ".DS_Store"), []byte{}, 0644) + err = os.WriteFile(filepath.Join(modulesDir, ".DS_Store"), []byte{}, 0o644) + if err != nil { t.Fatal(err) } - _, modules, err := pike.Init(tempDir) + _, modules, err := Init(tempDir) if err != nil { t.Errorf("Unexpected error: %v", err) } + if len(modules) != 0 { t.Errorf("Expected empty modules slice, got %v", modules) } @@ -769,13 +861,16 @@ func TestInitWithDSStoreOnly(t *testing.T) { func TestInitWithNonExistentDir(t *testing.T) { t.Parallel() - tfPath, modules, err := pike.Init("/path/that/does/not/exist") + tfPath, modules, err := Init("/path/that/does/not/exist") + if err == nil { t.Error("Expected error for non-existent directory, got nil") } + if tfPath != nil { t.Errorf("Expected nil tfPath for non-existent directory, got %v", *tfPath) } + if modules != nil { t.Errorf("Expected nil modules for non-existent directory, got %v", modules) } diff --git a/src/schema/alexa-ask-skill.json b/src/schema/alexa-ask-skill.json index fa3d1287..529be4f6 100644 --- a/src/schema/alexa-ask-skill.json +++ b/src/schema/alexa-ask-skill.json @@ -1,89 +1,89 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/VendorId" - ], - "definitions": { - "AuthenticationConfiguration": { - "additionalProperties": false, - "properties": { - "ClientId": { - "type": "string" - }, - "ClientSecret": { - "type": "string" - }, - "RefreshToken": { - "type": "string" - } - }, - "required": [ - "RefreshToken", - "ClientSecret", - "ClientId" - ], - "type": "object" - }, - "Overrides": { - "additionalProperties": false, - "properties": { - "Manifest": { - "type": "object" - } - }, - "type": "object" - }, - "SkillPackage": { - "additionalProperties": false, - "properties": { - "Overrides": { - "$ref": "#/definitions/Overrides" - }, - "S3Bucket": { - "type": "string" - }, - "S3BucketRole": { - "type": "string" - }, - "S3Key": { - "type": "string" - }, - "S3ObjectVersion": { - "type": "string" - } - }, - "required": [ - "S3Bucket", - "S3Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for Alexa::ASK::Skill", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AuthenticationConfiguration": { - "$ref": "#/definitions/AuthenticationConfiguration" - }, - "Id": { - "type": "string" - }, - "SkillPackage": { - "$ref": "#/definitions/SkillPackage" - }, - "VendorId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "AuthenticationConfiguration", - "VendorId", - "SkillPackage" - ], - "typeName": "Alexa::ASK::Skill" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VendorId" + ], + "definitions": { + "AuthenticationConfiguration": { + "additionalProperties": false, + "properties": { + "ClientId": { + "type": "string" + }, + "ClientSecret": { + "type": "string" + }, + "RefreshToken": { + "type": "string" + } + }, + "required": [ + "RefreshToken", + "ClientSecret", + "ClientId" + ], + "type": "object" + }, + "Overrides": { + "additionalProperties": false, + "properties": { + "Manifest": { + "type": "object" + } + }, + "type": "object" + }, + "SkillPackage": { + "additionalProperties": false, + "properties": { + "Overrides": { + "$ref": "#/definitions/Overrides" + }, + "S3Bucket": { + "type": "string" + }, + "S3BucketRole": { + "type": "string" + }, + "S3Key": { + "type": "string" + }, + "S3ObjectVersion": { + "type": "string" + } + }, + "required": [ + "S3Bucket", + "S3Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for Alexa::ASK::Skill", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AuthenticationConfiguration": { + "$ref": "#/definitions/AuthenticationConfiguration" + }, + "Id": { + "type": "string" + }, + "SkillPackage": { + "$ref": "#/definitions/SkillPackage" + }, + "VendorId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "AuthenticationConfiguration", + "VendorId", + "SkillPackage" + ], + "typeName": "Alexa::ASK::Skill" +} diff --git a/src/schema/aws-accessanalyzer-analyzer.json b/src/schema/aws-accessanalyzer-analyzer.json index fdfe4600..45df2177 100644 --- a/src/schema/aws-accessanalyzer-analyzer.json +++ b/src/schema/aws-accessanalyzer-analyzer.json @@ -1,219 +1,269 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AnalyzerName", - "/properties/Type", - "/properties/AnalyzerConfiguration" - ], - "definitions": { - "ArchiveRule": { - "additionalProperties": false, - "description": "An Access Analyzer archive rule. Archive rules automatically archive new findings that meet the criteria you define when you create the rule.", - "properties": { - "Filter": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Filter" - }, - "minItems": 1, - "type": "array" - }, - "RuleName": { - "description": "The archive rule name", - "type": "string" - } - }, - "required": [ - "Filter", - "RuleName" - ], - "type": "object" - }, - "Filter": { - "additionalProperties": false, - "properties": { - "Contains": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "Eq": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "Exists": { - "type": "boolean" - }, - "Neq": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "Property": { - "type": "string" - } - }, - "required": [ - "Property" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UnusedAccessConfiguration": { - "additionalProperties": false, - "description": "The Configuration for Unused Access Analyzer", - "properties": { - "UnusedAccessAge": { - "description": "The specified access age in days for which to generate findings for unused access. For example, if you specify 90 days, the analyzer will generate findings for IAM entities within the accounts of the selected organization for any access that hasn't been used in 90 or more days since the analyzer's last scan. You can choose a value between 1 and 180 days.", - "maximum": 180, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "The AWS::AccessAnalyzer::Analyzer type specifies an analyzer of the user's account", - "handlers": { - "create": { - "permissions": [ - "access-analyzer:CreateAnalyzer", - "access-analyzer:TagResource", - "iam:CreateServiceLinkedRole", - "organizations:ListAWSServiceAccessForOrganization", - "organizations:ListDelegatedAdministrators" - ] - }, - "delete": { - "permissions": [ - "access-analyzer:DeleteAnalyzer" - ] - }, - "list": { - "permissions": [ - "access-analyzer:ListAnalyzers" - ] - }, - "read": { - "permissions": [ - "access-analyzer:ListAnalyzers", - "access-analyzer:GetAnalyzer", - "access-analyzer:ListArchiveRules" - ] - }, - "update": { - "permissions": [ - "access-analyzer:CreateArchiveRule", - "access-analyzer:DeleteArchiveRule", - "access-analyzer:ListAnalyzers", - "access-analyzer:TagResource", - "access-analyzer:UntagResource", - "access-analyzer:UpdateArchiveRule" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "AnalyzerConfiguration": { - "additionalProperties": false, - "description": "The configuration for the analyzer", - "properties": { - "UnusedAccessConfiguration": { - "$ref": "#/definitions/UnusedAccessConfiguration" - } - }, - "type": "object" - }, - "AnalyzerName": { - "description": "Analyzer name", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "ArchiveRules": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ArchiveRule" - }, - "type": "array" - }, - "Arn": { - "description": "Amazon Resource Name (ARN) of the analyzer", - "maxLength": 1600, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "Type": { - "description": "The type of the analyzer, must be one of ACCOUNT, ORGANIZATION, ACCOUNT_UNUSED_ACCESS or ORGANIZATION_UNUSED_ACCESS", - "maxLength": 1024, - "minLength": 0, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Type" - ], - "resourceLink": { - "mappings": { - "AnalyzerName": "/AnalyzerName" - }, - "templateUri": "/access-analyzer/home?region=${awsRegion}#/analyzer/${AnalyzerName}" - }, - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-accessanalyzer.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "access-analyzer:UntagResource", - "access-analyzer:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AccessAnalyzer::Analyzer" -} +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/AnalyzerConfiguration" + ], + "createOnlyProperties": [ + "/properties/AnalyzerName", + "/properties/Type" + ], + "definitions": { + "AnalysisRuleCriteria": { + "additionalProperties": false, + "description": "The criteria for an analysis rule for an analyzer.", + "properties": { + "AccountIds": { + "description": "A list of AWS account IDs to apply to the analysis rule criteria. The accounts cannot include the organization analyzer owner account. Account IDs can only be applied to the analysis rule criteria for organization-level analyzers.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "ResourceTags": { + "description": "An array of key-value pairs to match for your resources. You can use the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.\n\nFor the tag key, you can specify a value that is 1 to 128 characters in length and cannot be prefixed with aws:.\n\nFor the tag value, you can specify a value that is 0 to 256 characters in length. If the specified tag value is 0 characters, the rule is applied to all principals with the specified tag key.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tags" + }, + "type": "array" + } + }, + "type": "object" + }, + "ArchiveRule": { + "additionalProperties": false, + "description": "An Access Analyzer archive rule. Archive rules automatically archive new findings that meet the criteria you define when you create the rule.", + "properties": { + "Filter": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Filter" + }, + "minItems": 1, + "type": "array" + }, + "RuleName": { + "description": "The archive rule name", + "type": "string" + } + }, + "required": [ + "Filter", + "RuleName" + ], + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Contains": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Eq": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Exists": { + "type": "boolean" + }, + "Neq": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Property": { + "type": "string" + } + }, + "required": [ + "Property" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "UnusedAccessConfiguration": { + "additionalProperties": false, + "description": "The Configuration for Unused Access Analyzer", + "properties": { + "AnalysisRule": { + "additionalProperties": false, + "description": "Contains information about rules for the analyzer.", + "properties": { + "Exclusions": { + "description": "A list of rules for the analyzer containing criteria to exclude from analysis. Entities that meet the rule criteria will not generate findings.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AnalysisRuleCriteria" + }, + "type": "array" + } + }, + "type": "object" + }, + "UnusedAccessAge": { + "description": "The specified access age in days for which to generate findings for unused access. For example, if you specify 90 days, the analyzer will generate findings for IAM entities within the accounts of the selected organization for any access that hasn't been used in 90 or more days since the analyzer's last scan. You can choose a value between 1 and 365 days.", + "maximum": 365, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "The AWS::AccessAnalyzer::Analyzer type specifies an analyzer of the user's account", + "handlers": { + "create": { + "permissions": [ + "access-analyzer:CreateAnalyzer", + "access-analyzer:TagResource", + "iam:CreateServiceLinkedRole", + "organizations:ListAWSServiceAccessForOrganization", + "organizations:ListDelegatedAdministrators" + ] + }, + "delete": { + "permissions": [ + "access-analyzer:DeleteAnalyzer" + ] + }, + "list": { + "permissions": [ + "access-analyzer:ListAnalyzers" + ] + }, + "read": { + "permissions": [ + "access-analyzer:ListAnalyzers", + "access-analyzer:GetAnalyzer", + "access-analyzer:ListArchiveRules" + ] + }, + "update": { + "permissions": [ + "access-analyzer:CreateArchiveRule", + "access-analyzer:DeleteArchiveRule", + "access-analyzer:ListAnalyzers", + "access-analyzer:TagResource", + "access-analyzer:UntagResource", + "access-analyzer:UpdateAnalyzer", + "access-analyzer:UpdateArchiveRule" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AnalyzerConfiguration": { + "additionalProperties": false, + "description": "The configuration for the analyzer", + "properties": { + "UnusedAccessConfiguration": { + "$ref": "#/definitions/UnusedAccessConfiguration" + } + }, + "type": "object" + }, + "AnalyzerName": { + "description": "Analyzer name", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "ArchiveRules": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ArchiveRule" + }, + "type": "array" + }, + "Arn": { + "description": "Amazon Resource Name (ARN) of the analyzer", + "maxLength": 1600, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "The type of the analyzer, must be one of ACCOUNT, ORGANIZATION, ACCOUNT_UNUSED_ACCESS or ORGANIZATION_UNUSED_ACCESS", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Type" + ], + "resourceLink": { + "mappings": { + "AnalyzerName": "/AnalyzerName" + }, + "templateUri": "/access-analyzer/home?region=${awsRegion}#/analyzer/${AnalyzerName}" + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-accessanalyzer.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "access-analyzer:UntagResource", + "access-analyzer:TagResource", + "access-analyzer:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AccessAnalyzer::Analyzer" +} diff --git a/src/schema/aws-acmpca-certificate.json b/src/schema/aws-acmpca-certificate.json index 0923b76c..dcfbf81d 100644 --- a/src/schema/aws-acmpca-certificate.json +++ b/src/schema/aws-acmpca-certificate.json @@ -1,528 +1,528 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApiPassthrough", - "/properties/CertificateAuthorityArn", - "/properties/CertificateSigningRequest", - "/properties/SigningAlgorithm", - "/properties/TemplateArn", - "/properties/Validity", - "/properties/ValidityNotBefore" - ], - "definitions": { - "ApiPassthrough": { - "additionalProperties": false, - "description": "Contains X.509 certificate information to be placed in an issued certificate. An ``APIPassthrough`` or ``APICSRPassthrough`` template variant must be selected, or else this parameter is ignored. \n If conflicting or duplicate certificate information is supplied from other sources, AWS Private CA applies [order of operation rules](https://docs.aws.amazon.com/privateca/latest/userguide/UsingTemplates.html#template-order-of-operations) to determine what information is used.", - "properties": { - "Extensions": { - "$ref": "#/definitions/Extensions", - "description": "Specifies X.509 extension information for a certificate." - }, - "Subject": { - "$ref": "#/definitions/Subject", - "description": "Contains information about the certificate subject. The Subject field in the certificate identifies the entity that owns or controls the public key in the certificate. The entity can be a user, computer, device, or service. The Subject must contain an X.500 distinguished name (DN). A DN is a sequence of relative distinguished names (RDNs). The RDNs are separated by commas in the certificate." - } - }, - "type": "object" - }, - "Arn": { - "type": "string" - }, - "CertificatePolicyList": { - "items": { - "$ref": "#/definitions/PolicyInformation" - }, - "type": "array" - }, - "CustomAttribute": { - "additionalProperties": false, - "description": "Defines the X.500 relative distinguished name (RDN).", - "properties": { - "ObjectIdentifier": { - "$ref": "#/definitions/CustomObjectIdentifier", - "description": "Specifies the object identifier (OID) of the attribute type of the relative distinguished name (RDN)." - }, - "Value": { - "description": "Specifies the attribute value of relative distinguished name (RDN).", - "type": "string" - } - }, - "required": [ - "ObjectIdentifier", - "Value" - ], - "type": "object" - }, - "CustomAttributeList": { - "description": "Array of X.500 attribute type and value. CustomAttributes cannot be used along with pre-defined attributes.", - "items": { - "$ref": "#/definitions/CustomAttribute" - }, - "type": "array" - }, - "CustomExtension": { - "additionalProperties": false, - "description": "Specifies the X.509 extension information for a certificate.\n Extensions present in ``CustomExtensions`` follow the ``ApiPassthrough`` [template rules](https://docs.aws.amazon.com/privateca/latest/userguide/UsingTemplates.html#template-order-of-operations).", - "properties": { - "Critical": { - "description": "Specifies the critical flag of the X.509 extension.", - "type": "boolean" - }, - "ObjectIdentifier": { - "$ref": "#/definitions/CustomObjectIdentifier", - "description": "Specifies the object identifier (OID) of the X.509 extension. For more information, see the [Global OID reference database.](https://docs.aws.amazon.com/https://oidref.com/2.5.29)" - }, - "Value": { - "description": "Specifies the base64-encoded value of the X.509 extension.", - "type": "string" - } - }, - "required": [ - "ObjectIdentifier", - "Value" - ], - "type": "object" - }, - "CustomExtensionList": { - "description": "Array of X.509 extensions for a certificate.", - "items": { - "$ref": "#/definitions/CustomExtension" - }, - "type": "array" - }, - "CustomObjectIdentifier": { - "description": "String that contains X.509 ObjectIdentifier information.", - "type": "string" - }, - "DnsName": { - "description": "String that contains X.509 DnsName information.", - "type": "string" - }, - "EdiPartyName": { - "additionalProperties": false, - "description": "Describes an Electronic Data Interchange (EDI) entity as described in as defined in [Subject Alternative Name](https://docs.aws.amazon.com/https://datatracker.ietf.org/doc/html/rfc5280) in RFC 5280.", - "properties": { - "NameAssigner": { - "description": "Specifies the name assigner.", - "type": "string" - }, - "PartyName": { - "description": "Specifies the party name.", - "type": "string" - } - }, - "required": [ - "PartyName", - "NameAssigner" - ], - "type": "object" - }, - "ExtendedKeyUsage": { - "additionalProperties": false, - "description": "Specifies additional purposes for which the certified public key may be used other than basic purposes indicated in the ``KeyUsage`` extension.", - "properties": { - "ExtendedKeyUsageObjectIdentifier": { - "$ref": "#/definitions/CustomObjectIdentifier", - "description": "Specifies a custom ``ExtendedKeyUsage`` with an object identifier (OID)." - }, - "ExtendedKeyUsageType": { - "description": "Specifies a standard ``ExtendedKeyUsage`` as defined as in [RFC 5280](https://docs.aws.amazon.com/https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.12).", - "type": "string" - } - }, - "type": "object" - }, - "ExtendedKeyUsageList": { - "items": { - "$ref": "#/definitions/ExtendedKeyUsage" - }, - "type": "array" - }, - "Extensions": { - "additionalProperties": false, - "description": "Contains X.509 extension information for a certificate.", - "properties": { - "CertificatePolicies": { - "$ref": "#/definitions/CertificatePolicyList", - "description": "Contains a sequence of one or more policy information terms, each of which consists of an object identifier (OID) and optional qualifiers. For more information, see NIST's definition of [Object Identifier (OID)](https://docs.aws.amazon.com/https://csrc.nist.gov/glossary/term/Object_Identifier).\n In an end-entity certificate, these terms indicate the policy under which the certificate was issued and the purposes for which it may be used. In a CA certificate, these terms limit the set of policies for certification paths that include this certificate." - }, - "CustomExtensions": { - "$ref": "#/definitions/CustomExtensionList", - "description": "Contains a sequence of one or more X.509 extensions, each of which consists of an object identifier (OID), a base64-encoded value, and the critical flag. For more information, see the [Global OID reference database.](https://docs.aws.amazon.com/https://oidref.com/2.5.29)" - }, - "ExtendedKeyUsage": { - "$ref": "#/definitions/ExtendedKeyUsageList", - "description": "Specifies additional purposes for which the certified public key may be used other than basic purposes indicated in the ``KeyUsage`` extension." - }, - "KeyUsage": { - "$ref": "#/definitions/KeyUsage", - "description": "Defines one or more purposes for which the key contained in the certificate can be used. Default value for each option is false." - }, - "SubjectAlternativeNames": { - "$ref": "#/definitions/GeneralNameList", - "description": "The subject alternative name extension allows identities to be bound to the subject of the certificate. These identities may be included in addition to or in place of the identity in the subject field of the certificate." - } - }, - "type": "object" - }, - "GeneralName": { - "additionalProperties": false, - "description": "Describes an ASN.1 X.400 ``GeneralName`` as defined in [RFC 5280](https://docs.aws.amazon.com/https://datatracker.ietf.org/doc/html/rfc5280). Only one of the following naming options should be provided. Providing more than one option results in an ``InvalidArgsException`` error.", - "properties": { - "DirectoryName": { - "$ref": "#/definitions/Subject", - "description": "Contains information about the certificate subject. The certificate can be one issued by your private certificate authority (CA) or it can be your private CA certificate. The Subject field in the certificate identifies the entity that owns or controls the public key in the certificate. The entity can be a user, computer, device, or service. The Subject must contain an X.500 distinguished name (DN). A DN is a sequence of relative distinguished names (RDNs). The RDNs are separated by commas in the certificate. The DN must be unique for each entity, but your private CA can issue more than one certificate with the same DN to the same entity." - }, - "DnsName": { - "$ref": "#/definitions/DnsName", - "description": "Represents ``GeneralName`` as a DNS name." - }, - "EdiPartyName": { - "$ref": "#/definitions/EdiPartyName", - "description": "Represents ``GeneralName`` as an ``EdiPartyName`` object." - }, - "IpAddress": { - "$ref": "#/definitions/IpAddress", - "description": "Represents ``GeneralName`` as an IPv4 or IPv6 address." - }, - "OtherName": { - "$ref": "#/definitions/OtherName", - "description": "Represents ``GeneralName`` using an ``OtherName`` object." - }, - "RegisteredId": { - "$ref": "#/definitions/CustomObjectIdentifier", - "description": "Represents ``GeneralName`` as an object identifier (OID)." - }, - "Rfc822Name": { - "$ref": "#/definitions/Rfc822Name", - "description": "Represents ``GeneralName`` as an [RFC 822](https://docs.aws.amazon.com/https://datatracker.ietf.org/doc/html/rfc822) email address." - }, - "UniformResourceIdentifier": { - "$ref": "#/definitions/UniformResourceIdentifier", - "description": "Represents ``GeneralName`` as a URI." - } - }, - "type": "object" - }, - "GeneralNameList": { - "items": { - "$ref": "#/definitions/GeneralName" - }, - "type": "array" - }, - "IpAddress": { - "description": "String that contains X.509 IpAddress information.", - "type": "string" - }, - "KeyUsage": { - "additionalProperties": false, - "description": "Defines one or more purposes for which the key contained in the certificate can be used. Default value for each option is false.", - "properties": { - "CRLSign": { - "default": false, - "description": "Key can be used to sign CRLs.", - "type": "boolean" - }, - "DataEncipherment": { - "default": false, - "description": "Key can be used to decipher data.", - "type": "boolean" - }, - "DecipherOnly": { - "default": false, - "description": "Key can be used only to decipher data.", - "type": "boolean" - }, - "DigitalSignature": { - "default": false, - "description": "Key can be used for digital signing.", - "type": "boolean" - }, - "EncipherOnly": { - "default": false, - "description": "Key can be used only to encipher data.", - "type": "boolean" - }, - "KeyAgreement": { - "default": false, - "description": "Key can be used in a key-agreement protocol.", - "type": "boolean" - }, - "KeyCertSign": { - "default": false, - "description": "Key can be used to sign certificates.", - "type": "boolean" - }, - "KeyEncipherment": { - "default": false, - "description": "Key can be used to encipher data.", - "type": "boolean" - }, - "NonRepudiation": { - "default": false, - "description": "Key can be used for non-repudiation.", - "type": "boolean" - } - }, - "type": "object" - }, - "OtherName": { - "additionalProperties": false, - "description": "Defines a custom ASN.1 X.400 ``GeneralName`` using an object identifier (OID) and value. The OID must satisfy the regular expression shown below. For more information, see NIST's definition of [Object Identifier (OID)](https://docs.aws.amazon.com/https://csrc.nist.gov/glossary/term/Object_Identifier).", - "properties": { - "TypeId": { - "$ref": "#/definitions/CustomObjectIdentifier", - "description": "Specifies an OID." - }, - "Value": { - "description": "Specifies an OID value.", - "type": "string" - } - }, - "required": [ - "TypeId", - "Value" - ], - "type": "object" - }, - "PolicyInformation": { - "additionalProperties": false, - "description": "Defines the X.509 ``CertificatePolicies`` extension.", - "properties": { - "CertPolicyId": { - "$ref": "#/definitions/CustomObjectIdentifier", - "description": "Specifies the object identifier (OID) of the certificate policy under which the certificate was issued. For more information, see NIST's definition of [Object Identifier (OID)](https://docs.aws.amazon.com/https://csrc.nist.gov/glossary/term/Object_Identifier)." - }, - "PolicyQualifiers": { - "$ref": "#/definitions/PolicyQualifierInfoList", - "description": "Modifies the given ``CertPolicyId`` with a qualifier. AWS Private CA supports the certification practice statement (CPS) qualifier." - } - }, - "required": [ - "CertPolicyId" - ], - "type": "object" - }, - "PolicyQualifierInfo": { - "additionalProperties": false, - "description": "Modifies the ``CertPolicyId`` of a ``PolicyInformation`` object with a qualifier. AWS Private CA supports the certification practice statement (CPS) qualifier.", - "properties": { - "PolicyQualifierId": { - "description": "Identifies the qualifier modifying a ``CertPolicyId``.", - "type": "string" - }, - "Qualifier": { - "$ref": "#/definitions/Qualifier", - "description": "Defines the qualifier type. AWS Private CA supports the use of a URI for a CPS qualifier in this field." - } - }, - "required": [ - "PolicyQualifierId", - "Qualifier" - ], - "type": "object" - }, - "PolicyQualifierInfoList": { - "items": { - "$ref": "#/definitions/PolicyQualifierInfo" - }, - "type": "array" - }, - "Qualifier": { - "additionalProperties": false, - "description": "Defines a ``PolicyInformation`` qualifier. AWS Private CA supports the [certification practice statement (CPS) qualifier](https://docs.aws.amazon.com/https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.4) defined in RFC 5280.", - "properties": { - "CpsUri": { - "description": "Contains a pointer to a certification practice statement (CPS) published by the CA.", - "type": "string" - } - }, - "required": [ - "CpsUri" - ], - "type": "object" - }, - "Rfc822Name": { - "description": "String that contains X.509 Rfc822Name information.", - "type": "string" - }, - "Subject": { - "additionalProperties": false, - "description": "Contains information about the certificate subject. The ``Subject`` field in the certificate identifies the entity that owns or controls the public key in the certificate. The entity can be a user, computer, device, or service. The ``Subject``must contain an X.500 distinguished name (DN). A DN is a sequence of relative distinguished names (RDNs). The RDNs are separated by commas in the certificate.", - "properties": { - "CommonName": { - "description": "For CA and end-entity certificates in a private PKI, the common name (CN) can be any string within the length limit.\n Note: In publicly trusted certificates, the common name must be a fully qualified domain name (FQDN) associated with the certificate subject.", - "type": "string" - }, - "Country": { - "description": "Two-digit code that specifies the country in which the certificate subject located.", - "type": "string" - }, - "CustomAttributes": { - "$ref": "#/definitions/CustomAttributeList", - "description": "Contains a sequence of one or more X.500 relative distinguished names (RDNs), each of which consists of an object identifier (OID) and a value. For more information, see NIST\u2019s definition of [Object Identifier (OID)](https://docs.aws.amazon.com/https://csrc.nist.gov/glossary/term/Object_Identifier).\n Custom attributes cannot be used in combination with standard attributes." - }, - "DistinguishedNameQualifier": { - "description": "Disambiguating information for the certificate subject.", - "type": "string" - }, - "GenerationQualifier": { - "description": "Typically a qualifier appended to the name of an individual. Examples include Jr. for junior, Sr. for senior, and III for third.", - "type": "string" - }, - "GivenName": { - "description": "First name.", - "type": "string" - }, - "Initials": { - "description": "Concatenation that typically contains the first letter of the *GivenName*, the first letter of the middle name if one exists, and the first letter of the *Surname*.", - "type": "string" - }, - "Locality": { - "description": "The locality (such as a city or town) in which the certificate subject is located.", - "type": "string" - }, - "Organization": { - "description": "Legal name of the organization with which the certificate subject is affiliated.", - "type": "string" - }, - "OrganizationalUnit": { - "description": "A subdivision or unit of the organization (such as sales or finance) with which the certificate subject is affiliated.", - "type": "string" - }, - "Pseudonym": { - "description": "Typically a shortened version of a longer *GivenName*. For example, Jonathan is often shortened to John. Elizabeth is often shortened to Beth, Liz, or Eliza.", - "type": "string" - }, - "SerialNumber": { - "description": "The certificate serial number.", - "type": "string" - }, - "State": { - "description": "State in which the subject of the certificate is located.", - "type": "string" - }, - "Surname": { - "description": "Family name. In the US and the UK, for example, the surname of an individual is ordered last. In Asian cultures the surname is typically ordered first.", - "type": "string" - }, - "Title": { - "description": "A title such as Mr. or Ms., which is pre-pended to the name to refer formally to the certificate subject.", - "type": "string" - } - }, - "type": "object" - }, - "UniformResourceIdentifier": { - "description": "String that contains X.509 UniformResourceIdentifier information.", - "type": "string" - }, - "Validity": { - "additionalProperties": false, - "description": "Length of time for which the certificate issued by your private certificate authority (CA), or by the private CA itself, is valid in days, months, or years. You can issue a certificate by calling the ``IssueCertificate`` operation.", - "properties": { - "Type": { - "description": "Specifies whether the ``Value`` parameter represents days, months, or years.", - "type": "string" - }, - "Value": { - "description": "A long integer interpreted according to the value of ``Type``, below.", - "type": "number" - } - }, - "required": [ - "Value", - "Type" - ], - "type": "object" - } - }, - "description": "The ``AWS::ACMPCA::Certificate`` resource is used to issue a certificate using your private certificate authority. For more information, see the [IssueCertificate](https://docs.aws.amazon.com/privateca/latest/APIReference/API_IssueCertificate.html) action.", - "handlers": { - "create": { - "permissions": [ - "acm-pca:IssueCertificate", - "acm-pca:GetCertificate" - ] - }, - "delete": { - "permissions": [ - "acm-pca:GetCertificate" - ] - }, - "read": { - "permissions": [ - "acm-pca:GetCertificate" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn", - "/properties/CertificateAuthorityArn" - ], - "properties": { - "ApiPassthrough": { - "$ref": "#/definitions/ApiPassthrough", - "description": "Specifies X.509 certificate information to be included in the issued certificate. An ``APIPassthrough`` or ``APICSRPassthrough`` template variant must be selected, or else this parameter is ignored." - }, - "Arn": { - "$ref": "#/definitions/Arn", - "description": "" - }, - "Certificate": { - "description": "", - "type": "string" - }, - "CertificateAuthorityArn": { - "$ref": "#/definitions/Arn", - "description": "The Amazon Resource Name (ARN) for the private CA issues the certificate." - }, - "CertificateSigningRequest": { - "description": "The certificate signing request (CSR) for the certificate.", - "minLength": 1, - "type": "string" - }, - "SigningAlgorithm": { - "description": "The name of the algorithm that will be used to sign the certificate to be issued. \n This parameter should not be confused with the ``SigningAlgorithm`` parameter used to sign a CSR in the ``CreateCertificateAuthority`` action.\n The specified signing algorithm family (RSA or ECDSA) must match the algorithm family of the CA's secret key.", - "type": "string" - }, - "TemplateArn": { - "$ref": "#/definitions/Arn", - "description": "Specifies a custom configuration template to use when issuing a certificate. If this parameter is not provided, PCAshort defaults to the ``EndEntityCertificate/V1`` template. For more information about PCAshort templates, see [Using Templates](https://docs.aws.amazon.com/privateca/latest/userguide/UsingTemplates.html)." - }, - "Validity": { - "$ref": "#/definitions/Validity", - "description": "The period of time during which the certificate will be valid." - }, - "ValidityNotBefore": { - "$ref": "#/definitions/Validity", - "description": "Information describing the start of the validity period of the certificate. This parameter sets the \u201cNot Before\" date for the certificate.\n By default, when issuing a certificate, PCAshort sets the \"Not Before\" date to the issuance time minus 60 minutes. This compensates for clock inconsistencies across computer systems. The ``ValidityNotBefore`` parameter can be used to customize the \u201cNot Before\u201d value. \n Unlike the ``Validity`` parameter, the ``ValidityNotBefore`` parameter is optional.\n The ``ValidityNotBefore`` value is expressed as an explicit date and time, using the ``Validity`` type value ``ABSOLUTE``." - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Certificate" - ], - "required": [ - "CertificateAuthorityArn", - "CertificateSigningRequest", - "SigningAlgorithm", - "Validity" - ], - "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ACMPCA::Certificate", - "writeOnlyProperties": [ - "/properties/ApiPassthrough", - "/properties/CertificateSigningRequest", - "/properties/SigningAlgorithm", - "/properties/TemplateArn", - "/properties/Validity", - "/properties/ValidityNotBefore" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiPassthrough", + "/properties/CertificateAuthorityArn", + "/properties/CertificateSigningRequest", + "/properties/SigningAlgorithm", + "/properties/TemplateArn", + "/properties/Validity", + "/properties/ValidityNotBefore" + ], + "definitions": { + "ApiPassthrough": { + "additionalProperties": false, + "description": "Contains X.509 certificate information to be placed in an issued certificate. An ``APIPassthrough`` or ``APICSRPassthrough`` template variant must be selected, or else this parameter is ignored. \n If conflicting or duplicate certificate information is supplied from other sources, AWS Private CA applies [order of operation rules](https://docs.aws.amazon.com/privateca/latest/userguide/UsingTemplates.html#template-order-of-operations) to determine what information is used.", + "properties": { + "Extensions": { + "$ref": "#/definitions/Extensions", + "description": "Specifies X.509 extension information for a certificate." + }, + "Subject": { + "$ref": "#/definitions/Subject", + "description": "Contains information about the certificate subject. The Subject field in the certificate identifies the entity that owns or controls the public key in the certificate. The entity can be a user, computer, device, or service. The Subject must contain an X.500 distinguished name (DN). A DN is a sequence of relative distinguished names (RDNs). The RDNs are separated by commas in the certificate." + } + }, + "type": "object" + }, + "Arn": { + "type": "string" + }, + "CertificatePolicyList": { + "items": { + "$ref": "#/definitions/PolicyInformation" + }, + "type": "array" + }, + "CustomAttribute": { + "additionalProperties": false, + "description": "Defines the X.500 relative distinguished name (RDN).", + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier", + "description": "Specifies the object identifier (OID) of the attribute type of the relative distinguished name (RDN)." + }, + "Value": { + "description": "Specifies the attribute value of relative distinguished name (RDN).", + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "description": "Array of X.500 attribute type and value. CustomAttributes cannot be used along with pre-defined attributes.", + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomExtension": { + "additionalProperties": false, + "description": "Specifies the X.509 extension information for a certificate.\n Extensions present in ``CustomExtensions`` follow the ``ApiPassthrough`` [template rules](https://docs.aws.amazon.com/privateca/latest/userguide/UsingTemplates.html#template-order-of-operations).", + "properties": { + "Critical": { + "description": "Specifies the critical flag of the X.509 extension.", + "type": "boolean" + }, + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier", + "description": "Specifies the object identifier (OID) of the X.509 extension. For more information, see the [Global OID reference database.](https://docs.aws.amazon.com/https://oidref.com/2.5.29)" + }, + "Value": { + "description": "Specifies the base64-encoded value of the X.509 extension.", + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomExtensionList": { + "description": "Array of X.509 extensions for a certificate.", + "items": { + "$ref": "#/definitions/CustomExtension" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "description": "String that contains X.509 ObjectIdentifier information.", + "type": "string" + }, + "DnsName": { + "description": "String that contains X.509 DnsName information.", + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "description": "Describes an Electronic Data Interchange (EDI) entity as described in as defined in [Subject Alternative Name](https://docs.aws.amazon.com/https://datatracker.ietf.org/doc/html/rfc5280) in RFC 5280.", + "properties": { + "NameAssigner": { + "description": "Specifies the name assigner.", + "type": "string" + }, + "PartyName": { + "description": "Specifies the party name.", + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "ExtendedKeyUsage": { + "additionalProperties": false, + "description": "Specifies additional purposes for which the certified public key may be used other than basic purposes indicated in the ``KeyUsage`` extension.", + "properties": { + "ExtendedKeyUsageObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier", + "description": "Specifies a custom ``ExtendedKeyUsage`` with an object identifier (OID)." + }, + "ExtendedKeyUsageType": { + "description": "Specifies a standard ``ExtendedKeyUsage`` as defined as in [RFC 5280](https://docs.aws.amazon.com/https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.12).", + "type": "string" + } + }, + "type": "object" + }, + "ExtendedKeyUsageList": { + "items": { + "$ref": "#/definitions/ExtendedKeyUsage" + }, + "type": "array" + }, + "Extensions": { + "additionalProperties": false, + "description": "Contains X.509 extension information for a certificate.", + "properties": { + "CertificatePolicies": { + "$ref": "#/definitions/CertificatePolicyList", + "description": "Contains a sequence of one or more policy information terms, each of which consists of an object identifier (OID) and optional qualifiers. For more information, see NIST's definition of [Object Identifier (OID)](https://docs.aws.amazon.com/https://csrc.nist.gov/glossary/term/Object_Identifier).\n In an end-entity certificate, these terms indicate the policy under which the certificate was issued and the purposes for which it may be used. In a CA certificate, these terms limit the set of policies for certification paths that include this certificate." + }, + "CustomExtensions": { + "$ref": "#/definitions/CustomExtensionList", + "description": "Contains a sequence of one or more X.509 extensions, each of which consists of an object identifier (OID), a base64-encoded value, and the critical flag. For more information, see the [Global OID reference database.](https://docs.aws.amazon.com/https://oidref.com/2.5.29)" + }, + "ExtendedKeyUsage": { + "$ref": "#/definitions/ExtendedKeyUsageList", + "description": "Specifies additional purposes for which the certified public key may be used other than basic purposes indicated in the ``KeyUsage`` extension." + }, + "KeyUsage": { + "$ref": "#/definitions/KeyUsage", + "description": "Defines one or more purposes for which the key contained in the certificate can be used. Default value for each option is false." + }, + "SubjectAlternativeNames": { + "$ref": "#/definitions/GeneralNameList", + "description": "The subject alternative name extension allows identities to be bound to the subject of the certificate. These identities may be included in addition to or in place of the identity in the subject field of the certificate." + } + }, + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "description": "Describes an ASN.1 X.400 ``GeneralName`` as defined in [RFC 5280](https://docs.aws.amazon.com/https://datatracker.ietf.org/doc/html/rfc5280). Only one of the following naming options should be provided. Providing more than one option results in an ``InvalidArgsException`` error.", + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject", + "description": "Contains information about the certificate subject. The certificate can be one issued by your private certificate authority (CA) or it can be your private CA certificate. The Subject field in the certificate identifies the entity that owns or controls the public key in the certificate. The entity can be a user, computer, device, or service. The Subject must contain an X.500 distinguished name (DN). A DN is a sequence of relative distinguished names (RDNs). The RDNs are separated by commas in the certificate. The DN must be unique for each entity, but your private CA can issue more than one certificate with the same DN to the same entity." + }, + "DnsName": { + "$ref": "#/definitions/DnsName", + "description": "Represents ``GeneralName`` as a DNS name." + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName", + "description": "Represents ``GeneralName`` as an ``EdiPartyName`` object." + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress", + "description": "Represents ``GeneralName`` as an IPv4 or IPv6 address." + }, + "OtherName": { + "$ref": "#/definitions/OtherName", + "description": "Represents ``GeneralName`` using an ``OtherName`` object." + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier", + "description": "Represents ``GeneralName`` as an object identifier (OID)." + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name", + "description": "Represents ``GeneralName`` as an [RFC 822](https://docs.aws.amazon.com/https://datatracker.ietf.org/doc/html/rfc822) email address." + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier", + "description": "Represents ``GeneralName`` as a URI." + } + }, + "type": "object" + }, + "GeneralNameList": { + "items": { + "$ref": "#/definitions/GeneralName" + }, + "type": "array" + }, + "IpAddress": { + "description": "String that contains X.509 IpAddress information.", + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "description": "Defines one or more purposes for which the key contained in the certificate can be used. Default value for each option is false.", + "properties": { + "CRLSign": { + "default": false, + "description": "Key can be used to sign CRLs.", + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "description": "Key can be used to decipher data.", + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "description": "Key can be used only to decipher data.", + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "description": "Key can be used for digital signing.", + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "description": "Key can be used only to encipher data.", + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "description": "Key can be used in a key-agreement protocol.", + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "description": "Key can be used to sign certificates.", + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "description": "Key can be used to encipher data.", + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "description": "Key can be used for non-repudiation.", + "type": "boolean" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "description": "Defines a custom ASN.1 X.400 ``GeneralName`` using an object identifier (OID) and value. The OID must satisfy the regular expression shown below. For more information, see NIST's definition of [Object Identifier (OID)](https://docs.aws.amazon.com/https://csrc.nist.gov/glossary/term/Object_Identifier).", + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier", + "description": "Specifies an OID." + }, + "Value": { + "description": "Specifies an OID value.", + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "PolicyInformation": { + "additionalProperties": false, + "description": "Defines the X.509 ``CertificatePolicies`` extension.", + "properties": { + "CertPolicyId": { + "$ref": "#/definitions/CustomObjectIdentifier", + "description": "Specifies the object identifier (OID) of the certificate policy under which the certificate was issued. For more information, see NIST's definition of [Object Identifier (OID)](https://docs.aws.amazon.com/https://csrc.nist.gov/glossary/term/Object_Identifier)." + }, + "PolicyQualifiers": { + "$ref": "#/definitions/PolicyQualifierInfoList", + "description": "Modifies the given ``CertPolicyId`` with a qualifier. AWS Private CA supports the certification practice statement (CPS) qualifier." + } + }, + "required": [ + "CertPolicyId" + ], + "type": "object" + }, + "PolicyQualifierInfo": { + "additionalProperties": false, + "description": "Modifies the ``CertPolicyId`` of a ``PolicyInformation`` object with a qualifier. AWS Private CA supports the certification practice statement (CPS) qualifier.", + "properties": { + "PolicyQualifierId": { + "description": "Identifies the qualifier modifying a ``CertPolicyId``.", + "type": "string" + }, + "Qualifier": { + "$ref": "#/definitions/Qualifier", + "description": "Defines the qualifier type. AWS Private CA supports the use of a URI for a CPS qualifier in this field." + } + }, + "required": [ + "PolicyQualifierId", + "Qualifier" + ], + "type": "object" + }, + "PolicyQualifierInfoList": { + "items": { + "$ref": "#/definitions/PolicyQualifierInfo" + }, + "type": "array" + }, + "Qualifier": { + "additionalProperties": false, + "description": "Defines a ``PolicyInformation`` qualifier. AWS Private CA supports the [certification practice statement (CPS) qualifier](https://docs.aws.amazon.com/https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.4) defined in RFC 5280.", + "properties": { + "CpsUri": { + "description": "Contains a pointer to a certification practice statement (CPS) published by the CA.", + "type": "string" + } + }, + "required": [ + "CpsUri" + ], + "type": "object" + }, + "Rfc822Name": { + "description": "String that contains X.509 Rfc822Name information.", + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "description": "Contains information about the certificate subject. The ``Subject`` field in the certificate identifies the entity that owns or controls the public key in the certificate. The entity can be a user, computer, device, or service. The ``Subject``must contain an X.500 distinguished name (DN). A DN is a sequence of relative distinguished names (RDNs). The RDNs are separated by commas in the certificate.", + "properties": { + "CommonName": { + "description": "For CA and end-entity certificates in a private PKI, the common name (CN) can be any string within the length limit.\n Note: In publicly trusted certificates, the common name must be a fully qualified domain name (FQDN) associated with the certificate subject.", + "type": "string" + }, + "Country": { + "description": "Two-digit code that specifies the country in which the certificate subject located.", + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList", + "description": "Contains a sequence of one or more X.500 relative distinguished names (RDNs), each of which consists of an object identifier (OID) and a value. For more information, see NIST\u2019s definition of [Object Identifier (OID)](https://docs.aws.amazon.com/https://csrc.nist.gov/glossary/term/Object_Identifier).\n Custom attributes cannot be used in combination with standard attributes." + }, + "DistinguishedNameQualifier": { + "description": "Disambiguating information for the certificate subject.", + "type": "string" + }, + "GenerationQualifier": { + "description": "Typically a qualifier appended to the name of an individual. Examples include Jr. for junior, Sr. for senior, and III for third.", + "type": "string" + }, + "GivenName": { + "description": "First name.", + "type": "string" + }, + "Initials": { + "description": "Concatenation that typically contains the first letter of the *GivenName*, the first letter of the middle name if one exists, and the first letter of the *Surname*.", + "type": "string" + }, + "Locality": { + "description": "The locality (such as a city or town) in which the certificate subject is located.", + "type": "string" + }, + "Organization": { + "description": "Legal name of the organization with which the certificate subject is affiliated.", + "type": "string" + }, + "OrganizationalUnit": { + "description": "A subdivision or unit of the organization (such as sales or finance) with which the certificate subject is affiliated.", + "type": "string" + }, + "Pseudonym": { + "description": "Typically a shortened version of a longer *GivenName*. For example, Jonathan is often shortened to John. Elizabeth is often shortened to Beth, Liz, or Eliza.", + "type": "string" + }, + "SerialNumber": { + "description": "The certificate serial number.", + "type": "string" + }, + "State": { + "description": "State in which the subject of the certificate is located.", + "type": "string" + }, + "Surname": { + "description": "Family name. In the US and the UK, for example, the surname of an individual is ordered last. In Asian cultures the surname is typically ordered first.", + "type": "string" + }, + "Title": { + "description": "A title such as Mr. or Ms., which is pre-pended to the name to refer formally to the certificate subject.", + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "description": "String that contains X.509 UniformResourceIdentifier information.", + "type": "string" + }, + "Validity": { + "additionalProperties": false, + "description": "Length of time for which the certificate issued by your private certificate authority (CA), or by the private CA itself, is valid in days, months, or years. You can issue a certificate by calling the ``IssueCertificate`` operation.", + "properties": { + "Type": { + "description": "Specifies whether the ``Value`` parameter represents days, months, or years.", + "type": "string" + }, + "Value": { + "description": "A long integer interpreted according to the value of ``Type``, below.", + "type": "number" + } + }, + "required": [ + "Value", + "Type" + ], + "type": "object" + } + }, + "description": "The ``AWS::ACMPCA::Certificate`` resource is used to issue a certificate using your private certificate authority. For more information, see the [IssueCertificate](https://docs.aws.amazon.com/privateca/latest/APIReference/API_IssueCertificate.html) action.", + "handlers": { + "create": { + "permissions": [ + "acm-pca:IssueCertificate", + "acm-pca:GetCertificate" + ] + }, + "delete": { + "permissions": [ + "acm-pca:GetCertificate" + ] + }, + "read": { + "permissions": [ + "acm-pca:GetCertificate" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn", + "/properties/CertificateAuthorityArn" + ], + "properties": { + "ApiPassthrough": { + "$ref": "#/definitions/ApiPassthrough", + "description": "Specifies X.509 certificate information to be included in the issued certificate. An ``APIPassthrough`` or ``APICSRPassthrough`` template variant must be selected, or else this parameter is ignored." + }, + "Arn": { + "$ref": "#/definitions/Arn", + "description": "" + }, + "Certificate": { + "description": "", + "type": "string" + }, + "CertificateAuthorityArn": { + "$ref": "#/definitions/Arn", + "description": "The Amazon Resource Name (ARN) for the private CA issues the certificate." + }, + "CertificateSigningRequest": { + "description": "The certificate signing request (CSR) for the certificate.", + "minLength": 1, + "type": "string" + }, + "SigningAlgorithm": { + "description": "The name of the algorithm that will be used to sign the certificate to be issued. \n This parameter should not be confused with the ``SigningAlgorithm`` parameter used to sign a CSR in the ``CreateCertificateAuthority`` action.\n The specified signing algorithm family (RSA or ECDSA) must match the algorithm family of the CA's secret key.", + "type": "string" + }, + "TemplateArn": { + "$ref": "#/definitions/Arn", + "description": "Specifies a custom configuration template to use when issuing a certificate. If this parameter is not provided, PCAshort defaults to the ``EndEntityCertificate/V1`` template. For more information about PCAshort templates, see [Using Templates](https://docs.aws.amazon.com/privateca/latest/userguide/UsingTemplates.html)." + }, + "Validity": { + "$ref": "#/definitions/Validity", + "description": "The period of time during which the certificate will be valid." + }, + "ValidityNotBefore": { + "$ref": "#/definitions/Validity", + "description": "Information describing the start of the validity period of the certificate. This parameter sets the \u201cNot Before\" date for the certificate.\n By default, when issuing a certificate, PCAshort sets the \"Not Before\" date to the issuance time minus 60 minutes. This compensates for clock inconsistencies across computer systems. The ``ValidityNotBefore`` parameter can be used to customize the \u201cNot Before\u201d value. \n Unlike the ``Validity`` parameter, the ``ValidityNotBefore`` parameter is optional.\n The ``ValidityNotBefore`` value is expressed as an explicit date and time, using the ``Validity`` type value ``ABSOLUTE``." + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Certificate" + ], + "required": [ + "CertificateAuthorityArn", + "CertificateSigningRequest", + "SigningAlgorithm", + "Validity" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ACMPCA::Certificate", + "writeOnlyProperties": [ + "/properties/ApiPassthrough", + "/properties/CertificateSigningRequest", + "/properties/SigningAlgorithm", + "/properties/TemplateArn", + "/properties/Validity", + "/properties/ValidityNotBefore" + ] +} diff --git a/src/schema/aws-acmpca-certificateauthority.json b/src/schema/aws-acmpca-certificateauthority.json index 73be4c93..ae9ebcc1 100644 --- a/src/schema/aws-acmpca-certificateauthority.json +++ b/src/schema/aws-acmpca-certificateauthority.json @@ -1,476 +1,484 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Type", - "/properties/KeyAlgorithm", - "/properties/SigningAlgorithm", - "/properties/Subject", - "/properties/CsrExtensions", - "/properties/KeyStorageSecurityStandard", - "/properties/UsageMode" - ], - "definitions": { - "AccessDescription": { - "additionalProperties": false, - "description": "Structure that contains X.509 AccessDescription information.", - "properties": { - "AccessLocation": { - "$ref": "#/definitions/GeneralName" - }, - "AccessMethod": { - "$ref": "#/definitions/AccessMethod" - } - }, - "required": [ - "AccessMethod", - "AccessLocation" - ], - "type": "object" - }, - "AccessMethod": { - "additionalProperties": false, - "description": "Structure that contains X.509 AccessMethod information. Assign one and ONLY one field.", - "properties": { - "AccessMethodType": { - "$ref": "#/definitions/AccessMethodType" - }, - "CustomObjectIdentifier": { - "$ref": "#/definitions/CustomObjectIdentifier" - } - }, - "type": "object" - }, - "AccessMethodType": { - "description": "Pre-defined enum string for X.509 AccessMethod ObjectIdentifiers.", - "type": "string" - }, - "Arn": { - "type": "string" - }, - "CrlConfiguration": { - "additionalProperties": false, - "description": "Your certificate authority can create and maintain a certificate revocation list (CRL). A CRL contains information about certificates that have been revoked.", - "properties": { - "CrlDistributionPointExtensionConfiguration": { - "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" - }, - "CustomCname": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - }, - "ExpirationInDays": { - "type": "integer" - }, - "S3BucketName": { - "type": "string" - }, - "S3ObjectAcl": { - "type": "string" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "CrlDistributionPointExtensionConfiguration": { - "additionalProperties": false, - "description": "Configures the default behavior of the CRL Distribution Point extension for certificates issued by your certificate authority", - "properties": { - "OmitExtension": { - "type": "boolean" - } - }, - "required": [ - "OmitExtension" - ], - "type": "object" - }, - "CsrExtensions": { - "additionalProperties": false, - "description": "Structure that contains CSR pass though extensions information.", - "properties": { - "KeyUsage": { - "$ref": "#/definitions/KeyUsage" - }, - "SubjectInformationAccess": { - "$ref": "#/definitions/SubjectInformationAccess" - } - }, - "type": "object" - }, - "CustomAttribute": { - "additionalProperties": false, - "description": "Structure that contains X.500 attribute type and value.", - "properties": { - "ObjectIdentifier": { - "$ref": "#/definitions/CustomObjectIdentifier" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "ObjectIdentifier", - "Value" - ], - "type": "object" - }, - "CustomAttributeList": { - "description": "Array of X.500 attribute type and value. CustomAttributes cannot be used along with pre-defined attributes.", - "items": { - "$ref": "#/definitions/CustomAttribute" - }, - "type": "array" - }, - "CustomObjectIdentifier": { - "description": "String that contains X.509 ObjectIdentifier information.", - "type": "string" - }, - "DnsName": { - "description": "String that contains X.509 DnsName information.", - "type": "string" - }, - "EdiPartyName": { - "additionalProperties": false, - "description": "Structure that contains X.509 EdiPartyName information.", - "properties": { - "NameAssigner": { - "type": "string" - }, - "PartyName": { - "type": "string" - } - }, - "required": [ - "PartyName" - ], - "type": "object" - }, - "GeneralName": { - "additionalProperties": false, - "description": "Structure that contains X.509 GeneralName information. Assign one and ONLY one field.", - "properties": { - "DirectoryName": { - "$ref": "#/definitions/Subject" - }, - "DnsName": { - "$ref": "#/definitions/DnsName" - }, - "EdiPartyName": { - "$ref": "#/definitions/EdiPartyName" - }, - "IpAddress": { - "$ref": "#/definitions/IpAddress" - }, - "OtherName": { - "$ref": "#/definitions/OtherName" - }, - "RegisteredId": { - "$ref": "#/definitions/CustomObjectIdentifier" - }, - "Rfc822Name": { - "$ref": "#/definitions/Rfc822Name" - }, - "UniformResourceIdentifier": { - "$ref": "#/definitions/UniformResourceIdentifier" - } - }, - "type": "object" - }, - "IpAddress": { - "description": "String that contains X.509 IpAddress information.", - "type": "string" - }, - "KeyUsage": { - "additionalProperties": false, - "description": "Structure that contains X.509 KeyUsage information.", - "properties": { - "CRLSign": { - "default": false, - "type": "boolean" - }, - "DataEncipherment": { - "default": false, - "type": "boolean" - }, - "DecipherOnly": { - "default": false, - "type": "boolean" - }, - "DigitalSignature": { - "default": false, - "type": "boolean" - }, - "EncipherOnly": { - "default": false, - "type": "boolean" - }, - "KeyAgreement": { - "default": false, - "type": "boolean" - }, - "KeyCertSign": { - "default": false, - "type": "boolean" - }, - "KeyEncipherment": { - "default": false, - "type": "boolean" - }, - "NonRepudiation": { - "default": false, - "type": "boolean" - } - }, - "type": "object" - }, - "OcspConfiguration": { - "additionalProperties": false, - "description": "Helps to configure online certificate status protocol (OCSP) responder for your certificate authority", - "properties": { - "Enabled": { - "type": "boolean" - }, - "OcspCustomCname": { - "type": "string" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "OtherName": { - "additionalProperties": false, - "description": "Structure that contains X.509 OtherName information.", - "properties": { - "TypeId": { - "$ref": "#/definitions/CustomObjectIdentifier" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "TypeId", - "Value" - ], - "type": "object" - }, - "RevocationConfiguration": { - "additionalProperties": false, - "description": "Certificate Authority revocation information.", - "properties": { - "CrlConfiguration": { - "$ref": "#/definitions/CrlConfiguration" - }, - "OcspConfiguration": { - "$ref": "#/definitions/OcspConfiguration" - } - }, - "type": "object" - }, - "Rfc822Name": { - "description": "String that contains X.509 Rfc822Name information.", - "type": "string" - }, - "Subject": { - "additionalProperties": false, - "description": "Structure that contains X.500 distinguished name information for your CA.", - "properties": { - "CommonName": { - "type": "string" - }, - "Country": { - "type": "string" - }, - "CustomAttributes": { - "$ref": "#/definitions/CustomAttributeList" - }, - "DistinguishedNameQualifier": { - "type": "string" - }, - "GenerationQualifier": { - "type": "string" - }, - "GivenName": { - "type": "string" - }, - "Initials": { - "type": "string" - }, - "Locality": { - "type": "string" - }, - "Organization": { - "type": "string" - }, - "OrganizationalUnit": { - "type": "string" - }, - "Pseudonym": { - "type": "string" - }, - "SerialNumber": { - "type": "string" - }, - "State": { - "type": "string" - }, - "Surname": { - "type": "string" - }, - "Title": { - "type": "string" - } - }, - "type": "object" - }, - "SubjectInformationAccess": { - "description": "Array of X.509 AccessDescription.", - "items": { - "$ref": "#/definitions/AccessDescription" - }, - "type": "array" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - }, - "UniformResourceIdentifier": { - "description": "String that contains X.509 UniformResourceIdentifier information.", - "type": "string" - } - }, - "description": "Private certificate authority.", - "handlers": { - "create": { - "permissions": [ - "acm-pca:CreateCertificateAuthority", - "acm-pca:DescribeCertificateAuthority", - "acm-pca:GetCertificateAuthorityCsr" - ] - }, - "delete": { - "permissions": [ - "acm-pca:DeleteCertificateAuthority", - "acm-pca:DescribeCertificateAuthority" - ] - }, - "list": { - "permissions": [ - "acm-pca:DescribeCertificateAuthority", - "acm-pca:GetCertificateAuthorityCsr", - "acm-pca:ListCertificateAuthorities", - "acm-pca:ListTags" - ] - }, - "read": { - "permissions": [ - "acm-pca:DescribeCertificateAuthority", - "acm-pca:GetCertificateAuthorityCsr", - "acm-pca:ListTags" - ] - }, - "update": { - "permissions": [ - "acm-pca:ListTags", - "acm-pca:TagCertificateAuthority", - "acm-pca:UntagCertificateAuthority", - "acm-pca:UpdateCertificateAuthority" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn", - "description": "The Amazon Resource Name (ARN) of the certificate authority." - }, - "CertificateSigningRequest": { - "description": "The base64 PEM-encoded certificate signing request (CSR) for your certificate authority certificate.", - "type": "string" - }, - "CsrExtensions": { - "$ref": "#/definitions/CsrExtensions", - "description": "Structure that contains CSR pass through extension information used by the CreateCertificateAuthority action." - }, - "KeyAlgorithm": { - "description": "Public key algorithm and size, in bits, of the key pair that your CA creates when it issues a certificate.", - "type": "string" - }, - "KeyStorageSecurityStandard": { - "description": "KeyStorageSecurityStadard defines a cryptographic key management compliance standard used for handling CA keys.", - "type": "string" - }, - "RevocationConfiguration": { - "$ref": "#/definitions/RevocationConfiguration", - "description": "Certificate revocation information used by the CreateCertificateAuthority and UpdateCertificateAuthority actions." - }, - "SigningAlgorithm": { - "description": "Algorithm your CA uses to sign certificate requests.", - "type": "string" - }, - "Subject": { - "$ref": "#/definitions/Subject", - "description": "Structure that contains X.500 distinguished name information for your CA." - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "Type": { - "description": "The type of the certificate authority.", - "type": "string" - }, - "UsageMode": { - "description": "Usage mode of the ceritificate authority.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CertificateSigningRequest" - ], - "required": [ - "Type", - "KeyAlgorithm", - "SigningAlgorithm", - "Subject" - ], - "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ACMPCA::CertificateAuthority", - "writeOnlyProperties": [ - "/properties/Subject", - "/properties/Subject", - "/properties/CsrExtensions", - "/properties/Tags", - "/properties/RevocationConfiguration", - "/properties/KeyStorageSecurityStandard" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "description": "Structure that contains X.509 AccessDescription information.", + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "description": "Structure that contains X.509 AccessMethod information. Assign one and ONLY one field.", + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "description": "Pre-defined enum string for X.509 AccessMethod ObjectIdentifiers.", + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "description": "Your certificate authority can create and maintain a certificate revocation list (CRL). A CRL contains information about certificates that have been revoked.", + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CrlType": { + "type": "string" + }, + "CustomCname": { + "type": "string" + }, + "CustomPath": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "description": "Configures the default behavior of the CRL Distribution Point extension for certificates issued by your certificate authority", + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "description": "Structure that contains CSR pass though extensions information.", + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "description": "Structure that contains X.500 attribute type and value.", + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "description": "Array of X.500 attribute type and value. CustomAttributes cannot be used along with pre-defined attributes.", + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "description": "String that contains X.509 ObjectIdentifier information.", + "type": "string" + }, + "DnsName": { + "description": "String that contains X.509 DnsName information.", + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "description": "Structure that contains X.509 EdiPartyName information.", + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "description": "Structure that contains X.509 GeneralName information. Assign one and ONLY one field.", + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "description": "String that contains X.509 IpAddress information.", + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "description": "Structure that contains X.509 KeyUsage information.", + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "description": "Helps to configure online certificate status protocol (OCSP) responder for your certificate authority", + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "description": "Structure that contains X.509 OtherName information.", + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "description": "Certificate Authority revocation information.", + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "description": "String that contains X.509 Rfc822Name information.", + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "description": "Structure that contains X.500 distinguished name information for your CA.", + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "description": "Array of X.509 AccessDescription.", + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "UniformResourceIdentifier": { + "description": "String that contains X.509 UniformResourceIdentifier information.", + "type": "string" + } + }, + "description": "Private certificate authority.", + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:TagCertificateAuthority" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn", + "description": "The Amazon Resource Name (ARN) of the certificate authority." + }, + "CertificateSigningRequest": { + "description": "The base64 PEM-encoded certificate signing request (CSR) for your certificate authority certificate.", + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions", + "description": "Structure that contains CSR pass through extension information used by the CreateCertificateAuthority action." + }, + "KeyAlgorithm": { + "description": "Public key algorithm and size, in bits, of the key pair that your CA creates when it issues a certificate.", + "type": "string" + }, + "KeyStorageSecurityStandard": { + "description": "KeyStorageSecurityStadard defines a cryptographic key management compliance standard used for handling CA keys.", + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration", + "description": "Certificate revocation information used by the CreateCertificateAuthority and UpdateCertificateAuthority actions." + }, + "SigningAlgorithm": { + "description": "Algorithm your CA uses to sign certificate requests.", + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject", + "description": "Structure that contains X.500 distinguished name information for your CA." + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "description": "The type of the certificate authority.", + "type": "string" + }, + "UsageMode": { + "description": "Usage mode of the ceritificate authority.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/schema/aws-acmpca-certificateauthorityactivation.json b/src/schema/aws-acmpca-certificateauthorityactivation.json index f99f0ed1..014d4b97 100644 --- a/src/schema/aws-acmpca-certificateauthorityactivation.json +++ b/src/schema/aws-acmpca-certificateauthorityactivation.json @@ -1,76 +1,76 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CertificateAuthorityArn" - ], - "description": "Used to install the certificate authority certificate and update the certificate authority status.", - "handlers": { - "create": { - "permissions": [ - "acm-pca:ImportCertificateAuthorityCertificate", - "acm-pca:UpdateCertificateAuthority" - ] - }, - "delete": { - "permissions": [ - "acm-pca:UpdateCertificateAuthority" - ] - }, - "read": { - "permissions": [ - "acm-pca:GetCertificateAuthorityCertificate", - "acm-pca:DescribeCertificateAuthority" - ] - }, - "update": { - "permissions": [ - "acm-pca:ImportCertificateAuthorityCertificate", - "acm-pca:UpdateCertificateAuthority" - ] - } - }, - "primaryIdentifier": [ - "/properties/CertificateAuthorityArn" - ], - "properties": { - "Certificate": { - "description": "Certificate Authority certificate that will be installed in the Certificate Authority.", - "type": "string" - }, - "CertificateAuthorityArn": { - "description": "Arn of the Certificate Authority.", - "type": "string" - }, - "CertificateChain": { - "description": "Certificate chain for the Certificate Authority certificate.", - "type": "string" - }, - "CompleteCertificateChain": { - "description": "The complete certificate chain, including the Certificate Authority certificate.", - "type": "string" - }, - "Status": { - "description": "The status of the Certificate Authority.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CompleteCertificateChain" - ], - "required": [ - "CertificateAuthorityArn", - "Certificate" - ], - "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ACMPCA::CertificateAuthorityActivation", - "writeOnlyProperties": [ - "/properties/Certificate", - "/properties/CertificateChain" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CertificateAuthorityArn" + ], + "description": "Used to install the certificate authority certificate and update the certificate authority status.", + "handlers": { + "create": { + "permissions": [ + "acm-pca:ImportCertificateAuthorityCertificate", + "acm-pca:UpdateCertificateAuthority" + ] + }, + "delete": { + "permissions": [ + "acm-pca:UpdateCertificateAuthority" + ] + }, + "read": { + "permissions": [ + "acm-pca:GetCertificateAuthorityCertificate", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "update": { + "permissions": [ + "acm-pca:ImportCertificateAuthorityCertificate", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/CertificateAuthorityArn" + ], + "properties": { + "Certificate": { + "description": "Certificate Authority certificate that will be installed in the Certificate Authority.", + "type": "string" + }, + "CertificateAuthorityArn": { + "description": "Arn of the Certificate Authority.", + "type": "string" + }, + "CertificateChain": { + "description": "Certificate chain for the Certificate Authority certificate.", + "type": "string" + }, + "CompleteCertificateChain": { + "description": "The complete certificate chain, including the Certificate Authority certificate.", + "type": "string" + }, + "Status": { + "description": "The status of the Certificate Authority.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CompleteCertificateChain" + ], + "required": [ + "CertificateAuthorityArn", + "Certificate" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ACMPCA::CertificateAuthorityActivation", + "writeOnlyProperties": [ + "/properties/Certificate", + "/properties/CertificateChain" + ] +} diff --git a/src/schema/aws-acmpca-permission.json b/src/schema/aws-acmpca-permission.json index 3906fed7..b8213630 100644 --- a/src/schema/aws-acmpca-permission.json +++ b/src/schema/aws-acmpca-permission.json @@ -1,67 +1,67 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Actions", - "/properties/CertificateAuthorityArn", - "/properties/Principal", - "/properties/SourceAccount" - ], - "description": "Permission set on private certificate authority", - "handlers": { - "create": { - "permissions": [ - "acm-pca:CreatePermission", - "acm-pca:ListPermissions" - ] - }, - "delete": { - "permissions": [ - "acm-pca:DeletePermission" - ] - }, - "read": { - "permissions": [ - "acm-pca:ListPermissions" - ] - } - }, - "primaryIdentifier": [ - "/properties/CertificateAuthorityArn", - "/properties/Principal" - ], - "properties": { - "Actions": { - "description": "The actions that the specified AWS service principal can use. Actions IssueCertificate, GetCertificate and ListPermissions must be provided.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "CertificateAuthorityArn": { - "description": "The Amazon Resource Name (ARN) of the Private Certificate Authority that grants the permission.", - "type": "string" - }, - "Principal": { - "description": "The AWS service or identity that receives the permission. At this time, the only valid principal is acm.amazonaws.com.", - "type": "string" - }, - "SourceAccount": { - "description": "The ID of the calling account.", - "type": "string" - } - }, - "required": [ - "Actions", - "CertificateAuthorityArn", - "Principal" - ], - "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ACMPCA::Permission" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Actions", + "/properties/CertificateAuthorityArn", + "/properties/Principal", + "/properties/SourceAccount" + ], + "description": "Permission set on private certificate authority", + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreatePermission", + "acm-pca:ListPermissions" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeletePermission" + ] + }, + "read": { + "permissions": [ + "acm-pca:ListPermissions" + ] + } + }, + "primaryIdentifier": [ + "/properties/CertificateAuthorityArn", + "/properties/Principal" + ], + "properties": { + "Actions": { + "description": "The actions that the specified AWS service principal can use. Actions IssueCertificate, GetCertificate and ListPermissions must be provided.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "CertificateAuthorityArn": { + "description": "The Amazon Resource Name (ARN) of the Private Certificate Authority that grants the permission.", + "type": "string" + }, + "Principal": { + "description": "The AWS service or identity that receives the permission. At this time, the only valid principal is acm.amazonaws.com.", + "type": "string" + }, + "SourceAccount": { + "description": "The ID of the calling account.", + "type": "string" + } + }, + "required": [ + "Actions", + "CertificateAuthorityArn", + "Principal" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ACMPCA::Permission" +} diff --git a/src/schema/aws-amazonmq-broker.json b/src/schema/aws-amazonmq-broker.json index 9e380321..5af359cd 100644 --- a/src/schema/aws-amazonmq-broker.json +++ b/src/schema/aws-amazonmq-broker.json @@ -1,332 +1,335 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/BrokerName", - "/properties/StorageType", - "/properties/DeploymentMode", - "/properties/EngineType", - "/properties/SubnetIds", - "/properties/AuthenticationStrategy", - "/properties/EncryptionOptions", - "/properties/PubliclyAccessible" - ], - "definitions": { - "ConfigurationId": { - "additionalProperties": false, - "properties": { - "Id": { - "type": "string" - }, - "Revision": { - "type": "integer" - } - }, - "required": [ - "Revision", - "Id" - ], - "type": "object" - }, - "EncryptionOptions": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "type": "string" - }, - "UseAwsOwnedKey": { - "type": "boolean" - } - }, - "required": [ - "UseAwsOwnedKey" - ], - "type": "object" - }, - "LdapServerMetadata": { - "additionalProperties": false, - "properties": { - "Hosts": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "RoleBase": { - "type": "string" - }, - "RoleName": { - "type": "string" - }, - "RoleSearchMatching": { - "type": "string" - }, - "RoleSearchSubtree": { - "type": "boolean" - }, - "ServiceAccountPassword": { - "type": "string" - }, - "ServiceAccountUsername": { - "type": "string" - }, - "UserBase": { - "type": "string" - }, - "UserRoleName": { - "type": "string" - }, - "UserSearchMatching": { - "type": "string" - }, - "UserSearchSubtree": { - "type": "boolean" - } - }, - "required": [ - "Hosts", - "UserSearchMatching", - "UserBase", - "RoleSearchMatching", - "ServiceAccountUsername", - "RoleBase", - "ServiceAccountPassword" - ], - "type": "object" - }, - "LogList": { - "additionalProperties": false, - "properties": { - "Audit": { - "type": "boolean" - }, - "General": { - "type": "boolean" - } - }, - "type": "object" - }, - "MaintenanceWindow": { - "additionalProperties": false, - "properties": { - "DayOfWeek": { - "type": "string" - }, - "TimeOfDay": { - "type": "string" - }, - "TimeZone": { - "type": "string" - } - }, - "required": [ - "DayOfWeek", - "TimeOfDay", - "TimeZone" - ], - "type": "object" - }, - "TagsEntry": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "User": { - "additionalProperties": false, - "properties": { - "ConsoleAccess": { - "type": "boolean" - }, - "Groups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Password": { - "type": "string" - }, - "ReplicationUser": { - "type": "boolean" - }, - "Username": { - "type": "string" - } - }, - "required": [ - "Username", - "Password" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AmazonMQ::Broker", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AmqpEndpoints": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Arn": { - "type": "string" - }, - "AuthenticationStrategy": { - "type": "string" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "BrokerName": { - "type": "string" - }, - "Configuration": { - "$ref": "#/definitions/ConfigurationId" - }, - "ConfigurationId": { - "type": "string" - }, - "ConfigurationRevision": { - "type": "integer" - }, - "DataReplicationMode": { - "type": "string" - }, - "DataReplicationPrimaryBrokerArn": { - "type": "string" - }, - "DeploymentMode": { - "type": "string" - }, - "EncryptionOptions": { - "$ref": "#/definitions/EncryptionOptions" - }, - "EngineType": { - "type": "string" - }, - "EngineVersion": { - "type": "string" - }, - "HostInstanceType": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "IpAddresses": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "LdapServerMetadata": { - "$ref": "#/definitions/LdapServerMetadata" - }, - "Logs": { - "$ref": "#/definitions/LogList" - }, - "MaintenanceWindowStartTime": { - "$ref": "#/definitions/MaintenanceWindow" - }, - "MqttEndpoints": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "OpenWireEndpoints": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "StompEndpoints": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "StorageType": { - "type": "string" - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/TagsEntry" - }, - "type": "array", - "uniqueItems": false - }, - "Users": { - "items": { - "$ref": "#/definitions/User" - }, - "type": "array", - "uniqueItems": false - }, - "WssEndpoints": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/IpAddresses", - "/properties/Id", - "/properties/MqttEndpoints", - "/properties/OpenWireEndpoints", - "/properties/ConfigurationId", - "/properties/ConfigurationRevision", - "/properties/StompEndpoints", - "/properties/WssEndpoints", - "/properties/AmqpEndpoints", - "/properties/Arn" - ], - "required": [ - "DeploymentMode", - "HostInstanceType", - "EngineType", - "Users", - "PubliclyAccessible", - "BrokerName" - ], - "typeName": "AWS::AmazonMQ::Broker" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BrokerName", + "/properties/StorageType", + "/properties/DeploymentMode", + "/properties/EngineType", + "/properties/SubnetIds", + "/properties/AuthenticationStrategy", + "/properties/EncryptionOptions", + "/properties/PubliclyAccessible" + ], + "definitions": { + "ConfigurationId": { + "additionalProperties": false, + "properties": { + "Id": { + "type": "string" + }, + "Revision": { + "type": "integer" + } + }, + "required": [ + "Revision", + "Id" + ], + "type": "object" + }, + "EncryptionOptions": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "type": "string" + }, + "UseAwsOwnedKey": { + "type": "boolean" + } + }, + "required": [ + "UseAwsOwnedKey" + ], + "type": "object" + }, + "LdapServerMetadata": { + "additionalProperties": false, + "properties": { + "Hosts": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "RoleBase": { + "type": "string" + }, + "RoleName": { + "type": "string" + }, + "RoleSearchMatching": { + "type": "string" + }, + "RoleSearchSubtree": { + "type": "boolean" + }, + "ServiceAccountPassword": { + "type": "string" + }, + "ServiceAccountUsername": { + "type": "string" + }, + "UserBase": { + "type": "string" + }, + "UserRoleName": { + "type": "string" + }, + "UserSearchMatching": { + "type": "string" + }, + "UserSearchSubtree": { + "type": "boolean" + } + }, + "required": [ + "Hosts", + "UserSearchMatching", + "UserBase", + "RoleSearchMatching", + "ServiceAccountUsername", + "RoleBase", + "ServiceAccountPassword" + ], + "type": "object" + }, + "LogList": { + "additionalProperties": false, + "properties": { + "Audit": { + "type": "boolean" + }, + "General": { + "type": "boolean" + } + }, + "type": "object" + }, + "MaintenanceWindow": { + "additionalProperties": false, + "properties": { + "DayOfWeek": { + "type": "string" + }, + "TimeOfDay": { + "type": "string" + }, + "TimeZone": { + "type": "string" + } + }, + "required": [ + "DayOfWeek", + "TimeOfDay", + "TimeZone" + ], + "type": "object" + }, + "TagsEntry": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "User": { + "additionalProperties": false, + "properties": { + "ConsoleAccess": { + "type": "boolean" + }, + "Groups": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "JolokiaApiAccess": { + "type": "string" + }, + "Password": { + "type": "string" + }, + "ReplicationUser": { + "type": "boolean" + }, + "Username": { + "type": "string" + } + }, + "required": [ + "Username", + "Password" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AmazonMQ::Broker", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmqpEndpoints": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Arn": { + "type": "string" + }, + "AuthenticationStrategy": { + "type": "string" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "BrokerName": { + "type": "string" + }, + "Configuration": { + "$ref": "#/definitions/ConfigurationId" + }, + "ConfigurationId": { + "type": "string" + }, + "ConfigurationRevision": { + "type": "integer" + }, + "DataReplicationMode": { + "type": "string" + }, + "DataReplicationPrimaryBrokerArn": { + "type": "string" + }, + "DeploymentMode": { + "type": "string" + }, + "EncryptionOptions": { + "$ref": "#/definitions/EncryptionOptions" + }, + "EngineType": { + "type": "string" + }, + "EngineVersion": { + "type": "string" + }, + "HostInstanceType": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpAddresses": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "LdapServerMetadata": { + "$ref": "#/definitions/LdapServerMetadata" + }, + "Logs": { + "$ref": "#/definitions/LogList" + }, + "MaintenanceWindowStartTime": { + "$ref": "#/definitions/MaintenanceWindow" + }, + "MqttEndpoints": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "OpenWireEndpoints": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "SecurityGroups": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "StompEndpoints": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "StorageType": { + "type": "string" + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "items": { + "$ref": "#/definitions/TagsEntry" + }, + "type": "array", + "uniqueItems": false + }, + "Users": { + "items": { + "$ref": "#/definitions/User" + }, + "type": "array", + "uniqueItems": false + }, + "WssEndpoints": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/IpAddresses", + "/properties/Id", + "/properties/MqttEndpoints", + "/properties/OpenWireEndpoints", + "/properties/ConfigurationId", + "/properties/ConfigurationRevision", + "/properties/StompEndpoints", + "/properties/WssEndpoints", + "/properties/AmqpEndpoints", + "/properties/Arn" + ], + "required": [ + "DeploymentMode", + "HostInstanceType", + "EngineType", + "Users", + "PubliclyAccessible", + "BrokerName" + ], + "typeName": "AWS::AmazonMQ::Broker" +} diff --git a/src/schema/aws-amazonmq-configuration.json b/src/schema/aws-amazonmq-configuration.json index 19cd84fd..624855ef 100644 --- a/src/schema/aws-amazonmq-configuration.json +++ b/src/schema/aws-amazonmq-configuration.json @@ -1,140 +1,139 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AuthenticationStrategy", - "/properties/EngineType", - "/properties/EngineVersion", - "/properties/Name" - ], - "definitions": { - "TagsEntry": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AmazonMQ::Configuration", - "handlers": { - "create": { - "permissions": [ - "mq:CreateConfiguration", - "mq:CreateTags", - "mq:UpdateConfiguration" - ] - }, - "delete": { - "permissions": [ - "mq:DescribeConfiguration" - ] - }, - "list": { - "permissions": [ - "mq:ListConfigurations" - ] - }, - "read": { - "permissions": [ - "mq:DescribeConfiguration", - "mq:ListTags" - ] - }, - "update": { - "permissions": [ - "mq:UpdateConfiguration", - "mq:CreateTags", - "mq:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the Amazon MQ configuration.", - "type": "string" - }, - "AuthenticationStrategy": { - "description": "The authentication strategy associated with the configuration. The default is SIMPLE.", - "type": "string" - }, - "Data": { - "description": "The base64-encoded XML configuration.", - "type": "string" - }, - "Description": { - "description": "The description of the configuration.", - "type": "string" - }, - "EngineType": { - "description": "The type of broker engine. Note: Currently, Amazon MQ only supports ACTIVEMQ for creating and editing broker configurations.", - "type": "string" - }, - "EngineVersion": { - "description": "The version of the broker engine.", - "type": "string" - }, - "Id": { - "description": "The ID of the Amazon MQ configuration.", - "type": "string" - }, - "Name": { - "description": "The name of the configuration.", - "type": "string" - }, - "Revision": { - "description": "The revision number of the configuration.", - "type": "string" - }, - "Tags": { - "description": "Create tags when creating the configuration.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TagsEntry" - }, - "type": "array" - } - }, - "propertyTransform": { - "/properties/AuthenticationStrategy": "$uppercase(AuthenticationStrategy)", - "/properties/EngineType": "$uppercase(EngineType)" - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id", - "/properties/Revision" - ], - "required": [ - "EngineType", - "Data", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "mq:ListTags", - "mq:CreateTags", - "mq:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AmazonMQ::Configuration", - "writeOnlyProperties": [ - "/properties/Data" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AuthenticationStrategy", + "/properties/EngineType", + "/properties/EngineVersion", + "/properties/Name" + ], + "definitions": { + "TagsEntry": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AmazonMQ::Configuration", + "handlers": { + "create": { + "permissions": [ + "mq:CreateConfiguration", + "mq:CreateTags", + "mq:UpdateConfiguration" + ] + }, + "delete": { + "permissions": [ + "mq:DeleteConfiguration" + ] + }, + "list": { + "permissions": [ + "mq:ListConfigurations" + ] + }, + "read": { + "permissions": [ + "mq:DescribeConfiguration", + "mq:ListTags" + ] + }, + "update": { + "permissions": [ + "mq:UpdateConfiguration", + "mq:CreateTags", + "mq:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the Amazon MQ configuration.", + "type": "string" + }, + "AuthenticationStrategy": { + "description": "The authentication strategy associated with the configuration. The default is SIMPLE.", + "type": "string" + }, + "Data": { + "description": "The base64-encoded XML configuration.", + "type": "string" + }, + "Description": { + "description": "The description of the configuration.", + "type": "string" + }, + "EngineType": { + "description": "The type of broker engine. Note: Currently, Amazon MQ only supports ACTIVEMQ for creating and editing broker configurations.", + "type": "string" + }, + "EngineVersion": { + "description": "The version of the broker engine.", + "type": "string" + }, + "Id": { + "description": "The ID of the Amazon MQ configuration.", + "type": "string" + }, + "Name": { + "description": "The name of the configuration.", + "type": "string" + }, + "Revision": { + "description": "The revision number of the configuration.", + "type": "string" + }, + "Tags": { + "description": "Create tags when creating the configuration.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagsEntry" + }, + "type": "array" + } + }, + "propertyTransform": { + "/properties/AuthenticationStrategy": "$uppercase(AuthenticationStrategy)", + "/properties/EngineType": "$uppercase(EngineType)" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/Revision" + ], + "required": [ + "EngineType", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "mq:ListTags", + "mq:CreateTags", + "mq:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AmazonMQ::Configuration", + "writeOnlyProperties": [ + "/properties/Data" + ] +} diff --git a/src/schema/aws-amazonmq-configurationassociation.json b/src/schema/aws-amazonmq-configurationassociation.json index d657619f..ccbb1991 100644 --- a/src/schema/aws-amazonmq-configurationassociation.json +++ b/src/schema/aws-amazonmq-configurationassociation.json @@ -1,47 +1,47 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Broker" - ], - "definitions": { - "ConfigurationId": { - "additionalProperties": false, - "properties": { - "Id": { - "type": "string" - }, - "Revision": { - "type": "integer" - } - }, - "required": [ - "Revision", - "Id" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AmazonMQ::ConfigurationAssociation", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Broker": { - "type": "string" - }, - "Configuration": { - "$ref": "#/definitions/ConfigurationId" - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Configuration", - "Broker" - ], - "typeName": "AWS::AmazonMQ::ConfigurationAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Broker" + ], + "definitions": { + "ConfigurationId": { + "additionalProperties": false, + "properties": { + "Id": { + "type": "string" + }, + "Revision": { + "type": "integer" + } + }, + "required": [ + "Revision", + "Id" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AmazonMQ::ConfigurationAssociation", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Broker": { + "type": "string" + }, + "Configuration": { + "$ref": "#/definitions/ConfigurationId" + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Configuration", + "Broker" + ], + "typeName": "AWS::AmazonMQ::ConfigurationAssociation" +} diff --git a/src/schema/aws-amplify-app.json b/src/schema/aws-amplify-app.json index cf8d4909..0d59ae5e 100644 --- a/src/schema/aws-amplify-app.json +++ b/src/schema/aws-amplify-app.json @@ -1,363 +1,381 @@ -{ - "additionalProperties": false, - "definitions": { - "AutoBranchCreationConfig": { - "additionalProperties": false, - "properties": { - "AutoBranchCreationPatterns": { - "items": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "BasicAuthConfig": { - "$ref": "#/definitions/BasicAuthConfig" - }, - "BuildSpec": { - "maxLength": 25000, - "minLength": 1, - "type": "string" - }, - "EnableAutoBranchCreation": { - "type": "boolean" - }, - "EnableAutoBuild": { - "type": "boolean" - }, - "EnablePerformanceMode": { - "type": "boolean" - }, - "EnablePullRequestPreview": { - "type": "boolean" - }, - "EnvironmentVariables": { - "items": { - "$ref": "#/definitions/EnvironmentVariable" - }, - "type": "array", - "uniqueItems": false - }, - "Framework": { - "maxLength": 255, - "pattern": "(?s).*", - "type": "string" - }, - "PullRequestEnvironmentName": { - "maxLength": 20, - "pattern": "(?s).*", - "type": "string" - }, - "Stage": { - "enum": [ - "EXPERIMENTAL", - "BETA", - "PULL_REQUEST", - "PRODUCTION", - "DEVELOPMENT" - ], - "type": "string" - } - }, - "type": "object" - }, - "BasicAuthConfig": { - "additionalProperties": false, - "properties": { - "EnableBasicAuth": { - "type": "boolean" - }, - "Password": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Username": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "CacheConfig": { - "additionalProperties": false, - "properties": { - "Type": { - "enum": [ - "AMPLIFY_MANAGED", - "AMPLIFY_MANAGED_NO_COOKIES" - ], - "type": "string" - } - }, - "type": "object" - }, - "CustomRule": { - "additionalProperties": false, - "properties": { - "Condition": { - "maxLength": 2048, - "minLength": 0, - "pattern": "(?s).*", - "type": "string" - }, - "Source": { - "maxLength": 2048, - "minLength": 1, - "pattern": "(?s).+", - "type": "string" - }, - "Status": { - "maxLength": 7, - "minLength": 3, - "pattern": ".{3,7}", - "type": "string" - }, - "Target": { - "maxLength": 2048, - "minLength": 1, - "pattern": "(?s).+", - "type": "string" - } - }, - "required": [ - "Target", - "Source" - ], - "type": "object" - }, - "EnvironmentVariable": { - "additionalProperties": false, - "properties": { - "Name": { - "maxLength": 255, - "pattern": "(?s).*", - "type": "string" - }, - "Value": { - "maxLength": 5500, - "pattern": "(?s).*", - "type": "string" - } - }, - "required": [ - "Name", - "Value" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "insertionOrder": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::Amplify::App resource creates Apps in the Amplify Console. An App is a collection of branches.", - "handlers": { - "create": { - "permissions": [ - "amplify:GetApp", - "amplify:CreateApp", - "amplify:TagResource", - "codecommit:GetRepository", - "codecommit:PutRepositoryTriggers", - "codecommit:GetRepositoryTriggers", - "sns:CreateTopic", - "sns:Subscribe", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "amplify:GetApp", - "amplify:DeleteApp", - "codecommit:GetRepository", - "codecommit:GetRepositoryTriggers", - "codecommit:PutRepositoryTriggers", - "sns:Unsubscribe", - "iam:PassRole" - ] - }, - "list": { - "permissions": [ - "amplify:GetApp", - "amplify:ListApps", - "amplify:ListTagsForResource", - "iam:PassRole" - ] - }, - "read": { - "permissions": [ - "amplify:GetApp", - "amplify:ListTagsForResource", - "codecommit:GetRepository", - "codecommit:GetRepositoryTriggers", - "iam:PassRole" - ] - }, - "update": { - "permissions": [ - "amplify:GetApp", - "amplify:UpdateApp", - "amplify:ListTagsForResource", - "amplify:TagResource", - "amplify:UntagResource", - "codecommit:GetRepository", - "codecommit:PutRepositoryTriggers", - "codecommit:GetRepositoryTriggers", - "sns:CreateTopic", - "sns:Subscribe", - "sns:Unsubscribe", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "AccessToken": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "AppId": { - "maxLength": 20, - "minLength": 1, - "pattern": "d[a-z0-9]+", - "type": "string" - }, - "AppName": { - "maxLength": 255, - "minLength": 1, - "pattern": "(?s).+", - "type": "string" - }, - "Arn": { - "maxLength": 1000, - "pattern": "(?s).*", - "type": "string" - }, - "AutoBranchCreationConfig": { - "$ref": "#/definitions/AutoBranchCreationConfig" - }, - "BasicAuthConfig": { - "$ref": "#/definitions/BasicAuthConfig" - }, - "BuildSpec": { - "maxLength": 25000, - "minLength": 1, - "pattern": "(?s).+", - "type": "string" - }, - "CacheConfig": { - "$ref": "#/definitions/CacheConfig" - }, - "CustomHeaders": { - "maxLength": 25000, - "minLength": 0, - "pattern": "(?s).*", - "type": "string" - }, - "CustomRules": { - "items": { - "$ref": "#/definitions/CustomRule" - }, - "type": "array", - "uniqueItems": false - }, - "DefaultDomain": { - "maxLength": 1000, - "minLength": 0, - "type": "string" - }, - "Description": { - "maxLength": 1000, - "pattern": "(?s).*", - "type": "string" - }, - "EnableBranchAutoDeletion": { - "type": "boolean" - }, - "EnvironmentVariables": { - "items": { - "$ref": "#/definitions/EnvironmentVariable" - }, - "type": "array", - "uniqueItems": false - }, - "IAMServiceRole": { - "maxLength": 1000, - "minLength": 1, - "pattern": "(?s).*", - "type": "string" - }, - "Name": { - "maxLength": 255, - "minLength": 1, - "pattern": "(?s).+", - "type": "string" - }, - "OauthToken": { - "maxLength": 1000, - "pattern": "(?s).*", - "type": "string" - }, - "Platform": { - "enum": [ - "WEB", - "WEB_DYNAMIC", - "WEB_COMPUTE" - ], - "type": "string" - }, - "Repository": { - "pattern": "(?s).*", - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/AppId", - "/properties/AppName", - "/properties/Arn", - "/properties/DefaultDomain" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-amplify", - "typeName": "AWS::Amplify::App", - "writeOnlyProperties": [ - "/properties/AccessToken", - "/properties/BasicAuthConfig", - "/properties/OauthToken", - "/properties/AutoBranchCreationConfig" - ] -} +{ + "additionalProperties": false, + "definitions": { + "AutoBranchCreationConfig": { + "additionalProperties": false, + "properties": { + "AutoBranchCreationPatterns": { + "items": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "BasicAuthConfig": { + "$ref": "#/definitions/BasicAuthConfig" + }, + "BuildSpec": { + "maxLength": 25000, + "minLength": 1, + "type": "string" + }, + "EnableAutoBranchCreation": { + "type": "boolean" + }, + "EnableAutoBuild": { + "type": "boolean" + }, + "EnablePerformanceMode": { + "type": "boolean" + }, + "EnablePullRequestPreview": { + "type": "boolean" + }, + "EnvironmentVariables": { + "items": { + "$ref": "#/definitions/EnvironmentVariable" + }, + "type": "array", + "uniqueItems": false + }, + "Framework": { + "maxLength": 255, + "pattern": "(?s).*", + "type": "string" + }, + "PullRequestEnvironmentName": { + "maxLength": 20, + "pattern": "(?s).*", + "type": "string" + }, + "Stage": { + "enum": [ + "EXPERIMENTAL", + "BETA", + "PULL_REQUEST", + "PRODUCTION", + "DEVELOPMENT" + ], + "type": "string" + } + }, + "type": "object" + }, + "BasicAuthConfig": { + "additionalProperties": false, + "properties": { + "EnableBasicAuth": { + "type": "boolean" + }, + "Password": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Username": { + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "CacheConfig": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "AMPLIFY_MANAGED", + "AMPLIFY_MANAGED_NO_COOKIES" + ], + "type": "string" + } + }, + "type": "object" + }, + "CustomRule": { + "additionalProperties": false, + "properties": { + "Condition": { + "maxLength": 2048, + "minLength": 0, + "pattern": "(?s).*", + "type": "string" + }, + "Source": { + "maxLength": 2048, + "minLength": 1, + "pattern": "(?s).+", + "type": "string" + }, + "Status": { + "maxLength": 7, + "minLength": 3, + "pattern": ".{3,7}", + "type": "string" + }, + "Target": { + "maxLength": 2048, + "minLength": 1, + "pattern": "(?s).+", + "type": "string" + } + }, + "required": [ + "Target", + "Source" + ], + "type": "object" + }, + "EnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 255, + "pattern": "(?s).*", + "type": "string" + }, + "Value": { + "maxLength": 5500, + "pattern": "(?s).*", + "type": "string" + } + }, + "required": [ + "Name", + "Value" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "insertionOrder": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::Amplify::App resource creates Apps in the Amplify Console. An App is a collection of branches.", + "handlers": { + "create": { + "permissions": [ + "amplify:GetApp", + "amplify:CreateApp", + "amplify:TagResource", + "codecommit:GetRepository", + "codecommit:PutRepositoryTriggers", + "codecommit:GetRepositoryTriggers", + "sns:CreateTopic", + "sns:Subscribe", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "amplify:GetApp", + "amplify:DeleteApp", + "codecommit:GetRepository", + "codecommit:GetRepositoryTriggers", + "codecommit:PutRepositoryTriggers", + "sns:Unsubscribe", + "iam:PassRole" + ] + }, + "list": { + "permissions": [ + "amplify:GetApp", + "amplify:ListApps", + "amplify:ListTagsForResource", + "iam:PassRole" + ] + }, + "read": { + "permissions": [ + "amplify:GetApp", + "amplify:ListTagsForResource", + "codecommit:GetRepository", + "codecommit:GetRepositoryTriggers", + "iam:PassRole" + ] + }, + "update": { + "permissions": [ + "amplify:GetApp", + "amplify:UpdateApp", + "amplify:ListTagsForResource", + "amplify:TagResource", + "amplify:UntagResource", + "codecommit:GetRepository", + "codecommit:PutRepositoryTriggers", + "codecommit:GetRepositoryTriggers", + "sns:CreateTopic", + "sns:Subscribe", + "sns:Unsubscribe", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AccessToken": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "AppId": { + "maxLength": 20, + "minLength": 1, + "pattern": "d[a-z0-9]+", + "type": "string" + }, + "AppName": { + "maxLength": 255, + "minLength": 1, + "pattern": "(?s).+", + "type": "string" + }, + "Arn": { + "maxLength": 1000, + "pattern": "(?s).*", + "type": "string" + }, + "AutoBranchCreationConfig": { + "$ref": "#/definitions/AutoBranchCreationConfig" + }, + "BasicAuthConfig": { + "$ref": "#/definitions/BasicAuthConfig" + }, + "BuildSpec": { + "maxLength": 25000, + "minLength": 1, + "pattern": "(?s).+", + "type": "string" + }, + "CacheConfig": { + "$ref": "#/definitions/CacheConfig" + }, + "ComputeRoleArn": { + "maxLength": 1000, + "minLength": 0, + "pattern": "(?s).*", + "type": "string" + }, + "CustomHeaders": { + "maxLength": 25000, + "minLength": 0, + "pattern": "(?s).*", + "type": "string" + }, + "CustomRules": { + "items": { + "$ref": "#/definitions/CustomRule" + }, + "type": "array", + "uniqueItems": false + }, + "DefaultDomain": { + "maxLength": 1000, + "minLength": 0, + "type": "string" + }, + "Description": { + "maxLength": 1000, + "pattern": "(?s).*", + "type": "string" + }, + "EnableBranchAutoDeletion": { + "type": "boolean" + }, + "EnvironmentVariables": { + "items": { + "$ref": "#/definitions/EnvironmentVariable" + }, + "type": "array", + "uniqueItems": false + }, + "IAMServiceRole": { + "maxLength": 1000, + "minLength": 1, + "pattern": "(?s).*", + "type": "string" + }, + "Name": { + "maxLength": 255, + "minLength": 1, + "pattern": "(?s).+", + "type": "string" + }, + "OauthToken": { + "maxLength": 1000, + "pattern": "(?s).*", + "type": "string" + }, + "Platform": { + "enum": [ + "WEB", + "WEB_DYNAMIC", + "WEB_COMPUTE" + ], + "type": "string" + }, + "Repository": { + "pattern": "(?s).*", + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppId", + "/properties/AppName", + "/properties/Arn", + "/properties/DefaultDomain" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-amplify", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "amplify:TagResource", + "amplify:ListTagsForResource", + "amplify:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Amplify::App", + "writeOnlyProperties": [ + "/properties/AccessToken", + "/properties/BasicAuthConfig", + "/properties/OauthToken", + "/properties/AutoBranchCreationConfig" + ] +} diff --git a/src/schema/aws-amplify-branch.json b/src/schema/aws-amplify-branch.json index 37dba592..48565ba8 100644 --- a/src/schema/aws-amplify-branch.json +++ b/src/schema/aws-amplify-branch.json @@ -1,259 +1,280 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AppId", - "/properties/BranchName" - ], - "definitions": { - "Backend": { - "additionalProperties": false, - "properties": { - "StackArn": { - "maxLength": 2048, - "minLength": 20, - "type": "string" - } - }, - "type": "object" - }, - "BasicAuthConfig": { - "additionalProperties": false, - "properties": { - "EnableBasicAuth": { - "type": "boolean" - }, - "Password": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Username": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Username", - "Password" - ], - "type": "object" - }, - "EnvironmentVariable": { - "additionalProperties": false, - "properties": { - "Name": { - "maxLength": 255, - "pattern": "(?s).*", - "type": "string" - }, - "Value": { - "maxLength": 5500, - "pattern": "(?s).*", - "type": "string" - } - }, - "required": [ - "Name", - "Value" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "insertionOrder": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::Amplify::Branch resource creates a new branch within an app.", - "handlers": { - "create": { - "permissions": [ - "amplify:GetBranch", - "amplify:CreateBranch", - "amplify:TagResource", - "codecommit:GetRepository", - "codecommit:PutRepositoryTriggers", - "codecommit:GetRepositoryTriggers", - "s3:GetObject", - "s3:GetObjectAcl", - "s3:PutObject", - "s3:PutObjectAcl", - "sns:CreateTopic", - "sns:Subscribe", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "amplify:GetBranch", - "amplify:DeleteBranch", - "codecommit:GetRepository", - "codecommit:GetRepositoryTriggers", - "sns:Unsubscribe", - "iam:PassRole" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "AppId": { - "$ref": "resource-schema.json#/properties/AppId" - } - }, - "required": [ - "AppId" - ] - }, - "permissions": [ - "amplify:GetBranch", - "amplify:ListBranches", - "amplify:ListTagsForResource", - "iam:PassRole" - ] - }, - "read": { - "permissions": [ - "amplify:GetBranch", - "amplify:ListTagsForResource", - "codecommit:GetRepository", - "codecommit:GetRepositoryTriggers", - "s3:GetObject", - "s3:GetObjectAcl", - "iam:PassRole" - ] - }, - "update": { - "permissions": [ - "amplify:GetBranch", - "amplify:UpdateBranch", - "amplify:ListTagsForResource", - "amplify:TagResource", - "amplify:UntagResource", - "codecommit:GetRepository", - "codecommit:PutRepositoryTriggers", - "codecommit:GetRepositoryTriggers", - "s3:GetObject", - "s3:GetObjectAcl", - "s3:PutObject", - "s3:PutObjectAcl", - "sns:CreateTopic", - "sns:Subscribe", - "sns:Unsubscribe", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "AppId": { - "maxLength": 20, - "minLength": 1, - "pattern": "d[a-z0-9]+", - "type": "string" - }, - "Arn": { - "maxLength": 1000, - "pattern": "(?s).*", - "type": "string" - }, - "Backend": { - "$ref": "#/definitions/Backend" - }, - "BasicAuthConfig": { - "$ref": "#/definitions/BasicAuthConfig" - }, - "BranchName": { - "maxLength": 255, - "minLength": 1, - "pattern": "(?s).+", - "type": "string" - }, - "BuildSpec": { - "maxLength": 25000, - "minLength": 1, - "pattern": "(?s).+", - "type": "string" - }, - "Description": { - "maxLength": 1000, - "pattern": "(?s).*", - "type": "string" - }, - "EnableAutoBuild": { - "type": "boolean" - }, - "EnablePerformanceMode": { - "type": "boolean" - }, - "EnablePullRequestPreview": { - "type": "boolean" - }, - "EnvironmentVariables": { - "items": { - "$ref": "#/definitions/EnvironmentVariable" - }, - "type": "array", - "uniqueItems": false - }, - "Framework": { - "maxLength": 255, - "pattern": "(?s).*", - "type": "string" - }, - "PullRequestEnvironmentName": { - "maxLength": 20, - "pattern": "(?s).*", - "type": "string" - }, - "Stage": { - "enum": [ - "EXPERIMENTAL", - "BETA", - "PULL_REQUEST", - "PRODUCTION", - "DEVELOPMENT" - ], - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "AppId", - "BranchName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-amplify", - "typeName": "AWS::Amplify::Branch", - "writeOnlyProperties": [ - "/properties/BasicAuthConfig" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppId", + "/properties/BranchName" + ], + "definitions": { + "Backend": { + "additionalProperties": false, + "properties": { + "StackArn": { + "maxLength": 2048, + "minLength": 20, + "type": "string" + } + }, + "type": "object" + }, + "BasicAuthConfig": { + "additionalProperties": false, + "properties": { + "EnableBasicAuth": { + "type": "boolean" + }, + "Password": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Username": { + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Username", + "Password" + ], + "type": "object" + }, + "EnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 255, + "pattern": "(?s).*", + "type": "string" + }, + "Value": { + "maxLength": 5500, + "pattern": "(?s).*", + "type": "string" + } + }, + "required": [ + "Name", + "Value" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "insertionOrder": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::Amplify::Branch resource creates a new branch within an app.", + "handlers": { + "create": { + "permissions": [ + "amplify:GetBranch", + "amplify:CreateBranch", + "amplify:TagResource", + "codecommit:GetRepository", + "codecommit:PutRepositoryTriggers", + "codecommit:GetRepositoryTriggers", + "s3:GetObject", + "s3:GetObjectAcl", + "s3:PutObject", + "s3:PutObjectAcl", + "sns:CreateTopic", + "sns:Subscribe", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "amplify:GetBranch", + "amplify:DeleteBranch", + "codecommit:GetRepository", + "codecommit:GetRepositoryTriggers", + "sns:Unsubscribe", + "iam:PassRole" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "AppId": { + "$ref": "resource-schema.json#/properties/AppId" + } + }, + "required": [ + "AppId" + ] + }, + "permissions": [ + "amplify:GetBranch", + "amplify:ListBranches", + "amplify:ListTagsForResource", + "iam:PassRole" + ] + }, + "read": { + "permissions": [ + "amplify:GetBranch", + "amplify:ListTagsForResource", + "codecommit:GetRepository", + "codecommit:GetRepositoryTriggers", + "s3:GetObject", + "s3:GetObjectAcl", + "iam:PassRole" + ] + }, + "update": { + "permissions": [ + "amplify:GetBranch", + "amplify:UpdateBranch", + "amplify:ListTagsForResource", + "amplify:TagResource", + "amplify:UntagResource", + "codecommit:GetRepository", + "codecommit:PutRepositoryTriggers", + "codecommit:GetRepositoryTriggers", + "s3:GetObject", + "s3:GetObjectAcl", + "s3:PutObject", + "s3:PutObjectAcl", + "sns:CreateTopic", + "sns:Subscribe", + "sns:Unsubscribe", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AppId": { + "maxLength": 20, + "minLength": 1, + "pattern": "d[a-z0-9]+", + "type": "string" + }, + "Arn": { + "maxLength": 1000, + "pattern": "(?s).*", + "type": "string" + }, + "Backend": { + "$ref": "#/definitions/Backend" + }, + "BasicAuthConfig": { + "$ref": "#/definitions/BasicAuthConfig" + }, + "BranchName": { + "maxLength": 255, + "minLength": 1, + "pattern": "(?s).+", + "type": "string" + }, + "BuildSpec": { + "maxLength": 25000, + "minLength": 1, + "pattern": "(?s).+", + "type": "string" + }, + "ComputeRoleArn": { + "maxLength": 1000, + "minLength": 0, + "pattern": "(?s).*", + "type": "string" + }, + "Description": { + "maxLength": 1000, + "pattern": "(?s).*", + "type": "string" + }, + "EnableAutoBuild": { + "type": "boolean" + }, + "EnablePerformanceMode": { + "type": "boolean" + }, + "EnablePullRequestPreview": { + "type": "boolean" + }, + "EnableSkewProtection": { + "type": "boolean" + }, + "EnvironmentVariables": { + "items": { + "$ref": "#/definitions/EnvironmentVariable" + }, + "type": "array", + "uniqueItems": false + }, + "Framework": { + "maxLength": 255, + "pattern": "(?s).*", + "type": "string" + }, + "PullRequestEnvironmentName": { + "maxLength": 20, + "pattern": "(?s).*", + "type": "string" + }, + "Stage": { + "enum": [ + "EXPERIMENTAL", + "BETA", + "PULL_REQUEST", + "PRODUCTION", + "DEVELOPMENT" + ], + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "AppId", + "BranchName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-amplify", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "amplify:TagResource", + "amplify:ListTagsForResource", + "amplify:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Amplify::Branch", + "writeOnlyProperties": [ + "/properties/BasicAuthConfig" + ] +} diff --git a/src/schema/aws-amplify-domain.json b/src/schema/aws-amplify-domain.json index 3910d285..b42d6ebe 100644 --- a/src/schema/aws-amplify-domain.json +++ b/src/schema/aws-amplify-domain.json @@ -1,197 +1,200 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AppId", - "/properties/DomainName" - ], - "definitions": { - "Certificate": { - "additionalProperties": false, - "properties": { - "CertificateArn": { - "pattern": "\"^arn:aws:acm:[a-z0-9-]+:\\d{12}:certificate\\/.+$\"", - "type": "string" - }, - "CertificateType": { - "enum": [ - "AMPLIFY_MANAGED", - "CUSTOM" - ], - "type": "string" - }, - "CertificateVerificationDNSRecord": { - "maxLength": 1000, - "type": "string" - } - }, - "type": "object" - }, - "CertificateSettings": { - "additionalProperties": false, - "properties": { - "CertificateType": { - "enum": [ - "AMPLIFY_MANAGED", - "CUSTOM" - ], - "type": "string" - }, - "CustomCertificateArn": { - "pattern": "^arn:aws:acm:[a-z0-9-]+:\\d{12}:certificate\\/.+$", - "type": "string" - } - }, - "type": "object" - }, - "SubDomainSetting": { - "additionalProperties": false, - "properties": { - "BranchName": { - "maxLength": 255, - "minLength": 1, - "pattern": "(?s).+", - "type": "string" - }, - "Prefix": { - "maxLength": 255, - "pattern": "(?s).*", - "type": "string" - } - }, - "required": [ - "Prefix", - "BranchName" - ], - "type": "object" - } - }, - "description": "The AWS::Amplify::Domain resource allows you to connect a custom domain to your app.", - "handlers": { - "create": { - "permissions": [ - "amplify:CreateDomainAssociation", - "route53:ListHostedZones", - "route53:ChangeResourceRecordSets", - "iam:PassRole", - "amplify:TagResource" - ] - }, - "delete": { - "permissions": [ - "amplify:DeleteDomainAssociation", - "iam:PassRole", - "amplify:DeleteDomainAssociation" - ] - }, - "list": { - "permissions": [ - "amplify:ListDomainAssociations", - "iam:PassRole", - "amplify:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "amplify:GetDomainAssociation", - "route53:ListHostedZones", - "iam:PassRole", - "amplify:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "amplify:UpdateDomainAssociation", - "route53:ListHostedZones", - "route53:ChangeResourceRecordSets", - "iam:PassRole", - "amplify:ListTagsForResource", - "amplify:TagResource", - "amplify:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "AppId": { - "maxLength": 20, - "minLength": 1, - "pattern": "d[a-z0-9]+", - "type": "string" - }, - "Arn": { - "maxLength": 1000, - "pattern": "(?s).*", - "type": "string" - }, - "AutoSubDomainCreationPatterns": { - "items": { - "maxLength": 2048, - "minLength": 1, - "pattern": "(?s).+", - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AutoSubDomainIAMRole": { - "maxLength": 1000, - "pattern": "^$|^arn:.+:iam::\\d{12}:role.+", - "type": "string" - }, - "Certificate": { - "$ref": "#/definitions/Certificate" - }, - "CertificateRecord": { - "maxLength": 1000, - "type": "string" - }, - "CertificateSettings": { - "$ref": "#/definitions/CertificateSettings" - }, - "DomainName": { - "maxLength": 255, - "pattern": "^(((?!-)[A-Za-z0-9-]{0,62}[A-Za-z0-9])\\.)+((?!-)[A-Za-z0-9-]{1,62}[A-Za-z0-9])(\\.)?$", - "type": "string" - }, - "DomainStatus": { - "type": "string" - }, - "EnableAutoSubDomain": { - "type": "boolean" - }, - "StatusReason": { - "maxLength": 1000, - "type": "string" - }, - "SubDomainSettings": { - "items": { - "$ref": "#/definitions/SubDomainSetting" - }, - "maxItems": 255, - "type": "array", - "uniqueItems": false - }, - "UpdateStatus": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/DomainStatus", - "/properties/StatusReason", - "/properties/CertificateRecord", - "/properties/Certificate", - "/properties/UpdateStatus" - ], - "required": [ - "AppId", - "DomainName", - "SubDomainSettings" - ], - "typeName": "AWS::Amplify::Domain", - "writeOnlyProperties": [ - "/properties/CertificateSettings" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppId", + "/properties/DomainName" + ], + "definitions": { + "Certificate": { + "additionalProperties": false, + "properties": { + "CertificateArn": { + "pattern": "\"^arn:aws:acm:[a-z0-9-]+:\\d{12}:certificate\\/.+$\"", + "type": "string" + }, + "CertificateType": { + "enum": [ + "AMPLIFY_MANAGED", + "CUSTOM" + ], + "type": "string" + }, + "CertificateVerificationDNSRecord": { + "maxLength": 1000, + "type": "string" + } + }, + "type": "object" + }, + "CertificateSettings": { + "additionalProperties": false, + "properties": { + "CertificateType": { + "enum": [ + "AMPLIFY_MANAGED", + "CUSTOM" + ], + "type": "string" + }, + "CustomCertificateArn": { + "pattern": "^arn:aws:acm:[a-z0-9-]+:\\d{12}:certificate\\/.+$", + "type": "string" + } + }, + "type": "object" + }, + "SubDomainSetting": { + "additionalProperties": false, + "properties": { + "BranchName": { + "maxLength": 255, + "minLength": 1, + "pattern": "(?s).+", + "type": "string" + }, + "Prefix": { + "maxLength": 255, + "pattern": "(?s).*", + "type": "string" + } + }, + "required": [ + "Prefix", + "BranchName" + ], + "type": "object" + } + }, + "description": "The AWS::Amplify::Domain resource allows you to connect a custom domain to your app.", + "handlers": { + "create": { + "permissions": [ + "amplify:GetDomainAssociation", + "amplify:CreateDomainAssociation", + "route53:ListHostedZones", + "route53:ChangeResourceRecordSets", + "iam:PassRole", + "amplify:TagResource" + ] + }, + "delete": { + "permissions": [ + "amplify:GetDomainAssociation", + "amplify:DeleteDomainAssociation", + "route53:ListHostedZones", + "iam:PassRole" + ] + }, + "list": { + "permissions": [ + "amplify:ListDomainAssociations", + "iam:PassRole", + "amplify:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "amplify:GetDomainAssociation", + "route53:ListHostedZones", + "iam:PassRole", + "amplify:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "amplify:GetDomainAssociation", + "amplify:UpdateDomainAssociation", + "route53:ListHostedZones", + "route53:ChangeResourceRecordSets", + "iam:PassRole", + "amplify:ListTagsForResource", + "amplify:TagResource", + "amplify:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AppId": { + "maxLength": 20, + "minLength": 1, + "pattern": "d[a-z0-9]+", + "type": "string" + }, + "Arn": { + "maxLength": 1000, + "pattern": "(?s).*", + "type": "string" + }, + "AutoSubDomainCreationPatterns": { + "items": { + "maxLength": 2048, + "minLength": 1, + "pattern": "(?s).+", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AutoSubDomainIAMRole": { + "maxLength": 1000, + "pattern": "^$|^arn:.+:iam::\\d{12}:role.+", + "type": "string" + }, + "Certificate": { + "$ref": "#/definitions/Certificate" + }, + "CertificateRecord": { + "maxLength": 1000, + "type": "string" + }, + "CertificateSettings": { + "$ref": "#/definitions/CertificateSettings" + }, + "DomainName": { + "maxLength": 255, + "pattern": "^(((?!-)[A-Za-z0-9-]{0,62}[A-Za-z0-9])\\.)+((?!-)[A-Za-z0-9-]{1,62}[A-Za-z0-9])(\\.)?$", + "type": "string" + }, + "DomainStatus": { + "type": "string" + }, + "EnableAutoSubDomain": { + "type": "boolean" + }, + "StatusReason": { + "maxLength": 1000, + "type": "string" + }, + "SubDomainSettings": { + "items": { + "$ref": "#/definitions/SubDomainSetting" + }, + "maxItems": 255, + "type": "array", + "uniqueItems": false + }, + "UpdateStatus": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/DomainStatus", + "/properties/StatusReason", + "/properties/CertificateRecord", + "/properties/Certificate", + "/properties/UpdateStatus" + ], + "required": [ + "AppId", + "DomainName", + "SubDomainSettings" + ], + "typeName": "AWS::Amplify::Domain", + "writeOnlyProperties": [ + "/properties/CertificateSettings" + ] +} diff --git a/src/schema/aws-amplifyuibuilder-component.json b/src/schema/aws-amplifyuibuilder-component.json index 6417a47b..9f181a63 100644 --- a/src/schema/aws-amplifyuibuilder-component.json +++ b/src/schema/aws-amplifyuibuilder-component.json @@ -1,587 +1,587 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AppId", - "/properties/EnvironmentName" - ], - "definitions": { - "ActionParameters": { - "additionalProperties": false, - "properties": { - "Anchor": { - "$ref": "#/definitions/ComponentProperty" - }, - "Fields": { - "$ref": "#/definitions/ComponentProperties" - }, - "Global": { - "$ref": "#/definitions/ComponentProperty" - }, - "Id": { - "$ref": "#/definitions/ComponentProperty" - }, - "Model": { - "type": "string" - }, - "State": { - "$ref": "#/definitions/MutationActionSetStateParameter" - }, - "Target": { - "$ref": "#/definitions/ComponentProperty" - }, - "Type": { - "$ref": "#/definitions/ComponentProperty" - }, - "Url": { - "$ref": "#/definitions/ComponentProperty" - } - }, - "type": "object" - }, - "ComponentBindingProperties": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "$ref": "#/definitions/ComponentBindingPropertiesValue" - } - }, - "type": "object" - }, - "ComponentBindingPropertiesValue": { - "additionalProperties": false, - "properties": { - "BindingProperties": { - "$ref": "#/definitions/ComponentBindingPropertiesValueProperties" - }, - "DefaultValue": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "type": "object" - }, - "ComponentBindingPropertiesValueProperties": { - "additionalProperties": false, - "properties": { - "Bucket": { - "type": "string" - }, - "DefaultValue": { - "type": "string" - }, - "Field": { - "type": "string" - }, - "Key": { - "type": "string" - }, - "Model": { - "type": "string" - }, - "Predicates": { - "items": { - "$ref": "#/definitions/Predicate" - }, - "type": "array" - }, - "SlotName": { - "type": "string" - }, - "UserAttribute": { - "type": "string" - } - }, - "type": "object" - }, - "ComponentChild": { - "additionalProperties": false, - "properties": { - "Children": { - "items": { - "$ref": "#/definitions/ComponentChild" - }, - "type": "array" - }, - "ComponentType": { - "type": "string" - }, - "Events": { - "$ref": "#/definitions/ComponentEvents" - }, - "Name": { - "type": "string" - }, - "Properties": { - "$ref": "#/definitions/ComponentProperties" - }, - "SourceId": { - "type": "string" - } - }, - "required": [ - "ComponentType", - "Name", - "Properties" - ], - "type": "object" - }, - "ComponentCollectionProperties": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "$ref": "#/definitions/ComponentDataConfiguration" - } - }, - "type": "object" - }, - "ComponentConditionProperty": { - "additionalProperties": false, - "properties": { - "Else": { - "$ref": "#/definitions/ComponentProperty" - }, - "Field": { - "type": "string" - }, - "Operand": { - "type": "string" - }, - "OperandType": { - "type": "string" - }, - "Operator": { - "type": "string" - }, - "Property": { - "type": "string" - }, - "Then": { - "$ref": "#/definitions/ComponentProperty" - } - }, - "type": "object" - }, - "ComponentDataConfiguration": { - "additionalProperties": false, - "properties": { - "Identifiers": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Model": { - "type": "string" - }, - "Predicate": { - "$ref": "#/definitions/Predicate" - }, - "Sort": { - "items": { - "$ref": "#/definitions/SortProperty" - }, - "type": "array" - } - }, - "required": [ - "Model" - ], - "type": "object" - }, - "ComponentEvent": { - "additionalProperties": false, - "properties": { - "Action": { - "type": "string" - }, - "BindingEvent": { - "type": "string" - }, - "Parameters": { - "$ref": "#/definitions/ActionParameters" - } - }, - "type": "object" - }, - "ComponentEvents": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "$ref": "#/definitions/ComponentEvent" - } - }, - "type": "object" - }, - "ComponentOverrides": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "$ref": "#/definitions/ComponentOverridesValue" - } - }, - "type": "object" - }, - "ComponentOverridesValue": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - }, - "ComponentProperties": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "$ref": "#/definitions/ComponentProperty" - } - }, - "type": "object" - }, - "ComponentProperty": { - "additionalProperties": false, - "properties": { - "BindingProperties": { - "$ref": "#/definitions/ComponentPropertyBindingProperties" - }, - "Bindings": { - "$ref": "#/definitions/FormBindings" - }, - "CollectionBindingProperties": { - "$ref": "#/definitions/ComponentPropertyBindingProperties" - }, - "ComponentName": { - "type": "string" - }, - "Concat": { - "items": { - "$ref": "#/definitions/ComponentProperty" - }, - "type": "array" - }, - "Condition": { - "$ref": "#/definitions/ComponentConditionProperty" - }, - "Configured": { - "type": "boolean" - }, - "DefaultValue": { - "type": "string" - }, - "Event": { - "type": "string" - }, - "ImportedValue": { - "type": "string" - }, - "Model": { - "type": "string" - }, - "Property": { - "type": "string" - }, - "Type": { - "type": "string" - }, - "UserAttribute": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "ComponentPropertyBindingProperties": { - "additionalProperties": false, - "properties": { - "Field": { - "type": "string" - }, - "Property": { - "type": "string" - } - }, - "required": [ - "Property" - ], - "type": "object" - }, - "ComponentVariant": { - "additionalProperties": false, - "properties": { - "Overrides": { - "$ref": "#/definitions/ComponentOverrides" - }, - "VariantValues": { - "$ref": "#/definitions/ComponentVariantValues" - } - }, - "type": "object" - }, - "ComponentVariantValues": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - }, - "FormBindingElement": { - "additionalProperties": false, - "properties": { - "Element": { - "type": "string" - }, - "Property": { - "type": "string" - } - }, - "required": [ - "Element", - "Property" - ], - "type": "object" - }, - "FormBindings": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "$ref": "#/definitions/FormBindingElement" - } - }, - "type": "object" - }, - "MutationActionSetStateParameter": { - "additionalProperties": false, - "properties": { - "ComponentName": { - "type": "string" - }, - "Property": { - "type": "string" - }, - "Set": { - "$ref": "#/definitions/ComponentProperty" - } - }, - "required": [ - "ComponentName", - "Property", - "Set" - ], - "type": "object" - }, - "Predicate": { - "additionalProperties": false, - "properties": { - "And": { - "items": { - "$ref": "#/definitions/Predicate" - }, - "type": "array" - }, - "Field": { - "type": "string" - }, - "Operand": { - "type": "string" - }, - "OperandType": { - "pattern": "^boolean|string|number$", - "type": "string" - }, - "Operator": { - "type": "string" - }, - "Or": { - "items": { - "$ref": "#/definitions/Predicate" - }, - "type": "array" - } - }, - "type": "object" - }, - "SortDirection": { - "enum": [ - "ASC", - "DESC" - ], - "type": "string" - }, - "SortProperty": { - "additionalProperties": false, - "properties": { - "Direction": { - "$ref": "#/definitions/SortDirection" - }, - "Field": { - "type": "string" - } - }, - "required": [ - "Direction", - "Field" - ], - "type": "object" - }, - "Tags": { - "additionalProperties": false, - "patternProperties": { - "^(?!aws:)[a-zA-Z+-=._:/]+$": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::AmplifyUIBuilder::Component Resource Type", - "handlers": { - "create": { - "permissions": [ - "amplify:GetApp", - "amplifyuibuilder:CreateComponent", - "amplifyuibuilder:GetComponent", - "amplifyuibuilder:TagResource" - ] - }, - "delete": { - "permissions": [ - "amplify:GetApp", - "amplifyuibuilder:DeleteComponent", - "amplifyuibuilder:GetComponent", - "amplifyuibuilder:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "AppId": { - "$ref": "resource-schema.json#/properties/AppId" - }, - "EnvironmentName": { - "$ref": "resource-schema.json#/properties/EnvironmentName" - } - }, - "required": [ - "AppId", - "EnvironmentName" - ] - }, - "permissions": [ - "amplify:GetApp", - "amplifyuibuilder:ListComponents" - ] - }, - "read": { - "permissions": [ - "amplify:GetApp", - "amplifyuibuilder:GetComponent" - ] - }, - "update": { - "permissions": [ - "amplify:GetApp", - "amplifyuibuilder:GetComponent", - "amplifyuibuilder:TagResource", - "amplifyuibuilder:UntagResource", - "amplifyuibuilder:UpdateComponent" - ] - } - }, - "primaryIdentifier": [ - "/properties/AppId", - "/properties/EnvironmentName", - "/properties/Id" - ], - "properties": { - "AppId": { - "type": "string" - }, - "BindingProperties": { - "$ref": "#/definitions/ComponentBindingProperties" - }, - "Children": { - "items": { - "$ref": "#/definitions/ComponentChild" - }, - "type": "array" - }, - "CollectionProperties": { - "$ref": "#/definitions/ComponentCollectionProperties" - }, - "ComponentType": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "CreatedAt": { - "format": "date-time", - "type": "string" - }, - "EnvironmentName": { - "type": "string" - }, - "Events": { - "$ref": "#/definitions/ComponentEvents" - }, - "Id": { - "type": "string" - }, - "ModifiedAt": { - "format": "date-time", - "type": "string" - }, - "Name": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Overrides": { - "$ref": "#/definitions/ComponentOverrides" - }, - "Properties": { - "$ref": "#/definitions/ComponentProperties" - }, - "SchemaVersion": { - "type": "string" - }, - "SourceId": { - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/Tags" - }, - "Variants": { - "items": { - "$ref": "#/definitions/ComponentVariant" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/Id", - "/properties/ModifiedAt" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-amplifyuibuilder", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "amplifyuibuilder:TagResource", - "amplifyuibuilder:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AmplifyUIBuilder::Component" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppId", + "/properties/EnvironmentName" + ], + "definitions": { + "ActionParameters": { + "additionalProperties": false, + "properties": { + "Anchor": { + "$ref": "#/definitions/ComponentProperty" + }, + "Fields": { + "$ref": "#/definitions/ComponentProperties" + }, + "Global": { + "$ref": "#/definitions/ComponentProperty" + }, + "Id": { + "$ref": "#/definitions/ComponentProperty" + }, + "Model": { + "type": "string" + }, + "State": { + "$ref": "#/definitions/MutationActionSetStateParameter" + }, + "Target": { + "$ref": "#/definitions/ComponentProperty" + }, + "Type": { + "$ref": "#/definitions/ComponentProperty" + }, + "Url": { + "$ref": "#/definitions/ComponentProperty" + } + }, + "type": "object" + }, + "ComponentBindingProperties": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "$ref": "#/definitions/ComponentBindingPropertiesValue" + } + }, + "type": "object" + }, + "ComponentBindingPropertiesValue": { + "additionalProperties": false, + "properties": { + "BindingProperties": { + "$ref": "#/definitions/ComponentBindingPropertiesValueProperties" + }, + "DefaultValue": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "type": "object" + }, + "ComponentBindingPropertiesValueProperties": { + "additionalProperties": false, + "properties": { + "Bucket": { + "type": "string" + }, + "DefaultValue": { + "type": "string" + }, + "Field": { + "type": "string" + }, + "Key": { + "type": "string" + }, + "Model": { + "type": "string" + }, + "Predicates": { + "items": { + "$ref": "#/definitions/Predicate" + }, + "type": "array" + }, + "SlotName": { + "type": "string" + }, + "UserAttribute": { + "type": "string" + } + }, + "type": "object" + }, + "ComponentChild": { + "additionalProperties": false, + "properties": { + "Children": { + "items": { + "$ref": "#/definitions/ComponentChild" + }, + "type": "array" + }, + "ComponentType": { + "type": "string" + }, + "Events": { + "$ref": "#/definitions/ComponentEvents" + }, + "Name": { + "type": "string" + }, + "Properties": { + "$ref": "#/definitions/ComponentProperties" + }, + "SourceId": { + "type": "string" + } + }, + "required": [ + "ComponentType", + "Name", + "Properties" + ], + "type": "object" + }, + "ComponentCollectionProperties": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "$ref": "#/definitions/ComponentDataConfiguration" + } + }, + "type": "object" + }, + "ComponentConditionProperty": { + "additionalProperties": false, + "properties": { + "Else": { + "$ref": "#/definitions/ComponentProperty" + }, + "Field": { + "type": "string" + }, + "Operand": { + "type": "string" + }, + "OperandType": { + "type": "string" + }, + "Operator": { + "type": "string" + }, + "Property": { + "type": "string" + }, + "Then": { + "$ref": "#/definitions/ComponentProperty" + } + }, + "type": "object" + }, + "ComponentDataConfiguration": { + "additionalProperties": false, + "properties": { + "Identifiers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Model": { + "type": "string" + }, + "Predicate": { + "$ref": "#/definitions/Predicate" + }, + "Sort": { + "items": { + "$ref": "#/definitions/SortProperty" + }, + "type": "array" + } + }, + "required": [ + "Model" + ], + "type": "object" + }, + "ComponentEvent": { + "additionalProperties": false, + "properties": { + "Action": { + "type": "string" + }, + "BindingEvent": { + "type": "string" + }, + "Parameters": { + "$ref": "#/definitions/ActionParameters" + } + }, + "type": "object" + }, + "ComponentEvents": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "$ref": "#/definitions/ComponentEvent" + } + }, + "type": "object" + }, + "ComponentOverrides": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "$ref": "#/definitions/ComponentOverridesValue" + } + }, + "type": "object" + }, + "ComponentOverridesValue": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "ComponentProperties": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "$ref": "#/definitions/ComponentProperty" + } + }, + "type": "object" + }, + "ComponentProperty": { + "additionalProperties": false, + "properties": { + "BindingProperties": { + "$ref": "#/definitions/ComponentPropertyBindingProperties" + }, + "Bindings": { + "$ref": "#/definitions/FormBindings" + }, + "CollectionBindingProperties": { + "$ref": "#/definitions/ComponentPropertyBindingProperties" + }, + "ComponentName": { + "type": "string" + }, + "Concat": { + "items": { + "$ref": "#/definitions/ComponentProperty" + }, + "type": "array" + }, + "Condition": { + "$ref": "#/definitions/ComponentConditionProperty" + }, + "Configured": { + "type": "boolean" + }, + "DefaultValue": { + "type": "string" + }, + "Event": { + "type": "string" + }, + "ImportedValue": { + "type": "string" + }, + "Model": { + "type": "string" + }, + "Property": { + "type": "string" + }, + "Type": { + "type": "string" + }, + "UserAttribute": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "ComponentPropertyBindingProperties": { + "additionalProperties": false, + "properties": { + "Field": { + "type": "string" + }, + "Property": { + "type": "string" + } + }, + "required": [ + "Property" + ], + "type": "object" + }, + "ComponentVariant": { + "additionalProperties": false, + "properties": { + "Overrides": { + "$ref": "#/definitions/ComponentOverrides" + }, + "VariantValues": { + "$ref": "#/definitions/ComponentVariantValues" + } + }, + "type": "object" + }, + "ComponentVariantValues": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "FormBindingElement": { + "additionalProperties": false, + "properties": { + "Element": { + "type": "string" + }, + "Property": { + "type": "string" + } + }, + "required": [ + "Element", + "Property" + ], + "type": "object" + }, + "FormBindings": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "$ref": "#/definitions/FormBindingElement" + } + }, + "type": "object" + }, + "MutationActionSetStateParameter": { + "additionalProperties": false, + "properties": { + "ComponentName": { + "type": "string" + }, + "Property": { + "type": "string" + }, + "Set": { + "$ref": "#/definitions/ComponentProperty" + } + }, + "required": [ + "ComponentName", + "Property", + "Set" + ], + "type": "object" + }, + "Predicate": { + "additionalProperties": false, + "properties": { + "And": { + "items": { + "$ref": "#/definitions/Predicate" + }, + "type": "array" + }, + "Field": { + "type": "string" + }, + "Operand": { + "type": "string" + }, + "OperandType": { + "pattern": "^boolean|string|number$", + "type": "string" + }, + "Operator": { + "type": "string" + }, + "Or": { + "items": { + "$ref": "#/definitions/Predicate" + }, + "type": "array" + } + }, + "type": "object" + }, + "SortDirection": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + }, + "SortProperty": { + "additionalProperties": false, + "properties": { + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "Field": { + "type": "string" + } + }, + "required": [ + "Direction", + "Field" + ], + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "patternProperties": { + "^(?!aws:)[a-zA-Z+-=._:/]+$": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::AmplifyUIBuilder::Component Resource Type", + "handlers": { + "create": { + "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:CreateComponent", + "amplifyuibuilder:GetComponent", + "amplifyuibuilder:TagResource" + ] + }, + "delete": { + "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:DeleteComponent", + "amplifyuibuilder:GetComponent", + "amplifyuibuilder:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "AppId": { + "$ref": "resource-schema.json#/properties/AppId" + }, + "EnvironmentName": { + "$ref": "resource-schema.json#/properties/EnvironmentName" + } + }, + "required": [ + "AppId", + "EnvironmentName" + ] + }, + "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:ListComponents" + ] + }, + "read": { + "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:GetComponent" + ] + }, + "update": { + "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:GetComponent", + "amplifyuibuilder:TagResource", + "amplifyuibuilder:UntagResource", + "amplifyuibuilder:UpdateComponent" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppId", + "/properties/EnvironmentName", + "/properties/Id" + ], + "properties": { + "AppId": { + "type": "string" + }, + "BindingProperties": { + "$ref": "#/definitions/ComponentBindingProperties" + }, + "Children": { + "items": { + "$ref": "#/definitions/ComponentChild" + }, + "type": "array" + }, + "CollectionProperties": { + "$ref": "#/definitions/ComponentCollectionProperties" + }, + "ComponentType": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "EnvironmentName": { + "type": "string" + }, + "Events": { + "$ref": "#/definitions/ComponentEvents" + }, + "Id": { + "type": "string" + }, + "ModifiedAt": { + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Overrides": { + "$ref": "#/definitions/ComponentOverrides" + }, + "Properties": { + "$ref": "#/definitions/ComponentProperties" + }, + "SchemaVersion": { + "type": "string" + }, + "SourceId": { + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags" + }, + "Variants": { + "items": { + "$ref": "#/definitions/ComponentVariant" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/Id", + "/properties/ModifiedAt" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-amplifyuibuilder", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "amplifyuibuilder:TagResource", + "amplifyuibuilder:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AmplifyUIBuilder::Component" +} diff --git a/src/schema/aws-amplifyuibuilder-form.json b/src/schema/aws-amplifyuibuilder-form.json index 38442bb0..0998a6c2 100644 --- a/src/schema/aws-amplifyuibuilder-form.json +++ b/src/schema/aws-amplifyuibuilder-form.json @@ -1,598 +1,598 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AppId", - "/properties/EnvironmentName" - ], - "definitions": { - "FieldConfig": { - "additionalProperties": false, - "properties": { - "Excluded": { - "type": "boolean" - }, - "InputType": { - "$ref": "#/definitions/FieldInputConfig" - }, - "Label": { - "type": "string" - }, - "Position": { - "$ref": "#/definitions/FieldPosition" - }, - "Validations": { - "items": { - "$ref": "#/definitions/FieldValidationConfiguration" - }, - "type": "array" - } - }, - "type": "object" - }, - "FieldInputConfig": { - "additionalProperties": false, - "properties": { - "DefaultChecked": { - "type": "boolean" - }, - "DefaultCountryCode": { - "type": "string" - }, - "DefaultValue": { - "type": "string" - }, - "DescriptiveText": { - "type": "string" - }, - "FileUploaderConfig": { - "$ref": "#/definitions/FileUploaderFieldConfig" - }, - "IsArray": { - "type": "boolean" - }, - "MaxValue": { - "type": "number" - }, - "MinValue": { - "type": "number" - }, - "Name": { - "type": "string" - }, - "Placeholder": { - "type": "string" - }, - "ReadOnly": { - "type": "boolean" - }, - "Required": { - "type": "boolean" - }, - "Step": { - "type": "number" - }, - "Type": { - "type": "string" - }, - "Value": { - "type": "string" - }, - "ValueMappings": { - "$ref": "#/definitions/ValueMappings" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "FieldPosition": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Fixed": { - "$ref": "#/definitions/FixedPosition" - } - }, - "required": [ - "Fixed" - ], - "title": "Fixed", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "RightOf": { - "type": "string" - } - }, - "required": [ - "RightOf" - ], - "title": "RightOf", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Below": { - "type": "string" - } - }, - "required": [ - "Below" - ], - "title": "Below", - "type": "object" - } - ] - }, - "FieldValidationConfiguration": { - "additionalProperties": false, - "properties": { - "NumValues": { - "items": { - "type": "number" - }, - "type": "array" - }, - "StrValues": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Type": { - "type": "string" - }, - "ValidationMessage": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "FieldsMap": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "$ref": "#/definitions/FieldConfig" - } - }, - "type": "object" - }, - "FileUploaderFieldConfig": { - "additionalProperties": false, - "properties": { - "AcceptedFileTypes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "AccessLevel": { - "$ref": "#/definitions/StorageAccessLevel" - }, - "IsResumable": { - "type": "boolean" - }, - "MaxFileCount": { - "type": "number" - }, - "MaxSize": { - "type": "number" - }, - "ShowThumbnails": { - "type": "boolean" - } - }, - "required": [ - "AcceptedFileTypes", - "AccessLevel" - ], - "type": "object" - }, - "FixedPosition": { - "enum": [ - "first" - ], - "type": "string" - }, - "FormActionType": { - "enum": [ - "create", - "update" - ], - "type": "string" - }, - "FormButton": { - "additionalProperties": false, - "properties": { - "Children": { - "type": "string" - }, - "Excluded": { - "type": "boolean" - }, - "Position": { - "$ref": "#/definitions/FieldPosition" - } - }, - "type": "object" - }, - "FormButtonsPosition": { - "enum": [ - "top", - "bottom", - "top_and_bottom" - ], - "type": "string" - }, - "FormCTA": { - "additionalProperties": false, - "properties": { - "Cancel": { - "$ref": "#/definitions/FormButton" - }, - "Clear": { - "$ref": "#/definitions/FormButton" - }, - "Position": { - "$ref": "#/definitions/FormButtonsPosition" - }, - "Submit": { - "$ref": "#/definitions/FormButton" - } - }, - "type": "object" - }, - "FormDataSourceType": { - "enum": [ - "DataStore", - "Custom" - ], - "type": "string" - }, - "FormDataTypeConfig": { - "additionalProperties": false, - "properties": { - "DataSourceType": { - "$ref": "#/definitions/FormDataSourceType" - }, - "DataTypeName": { - "type": "string" - } - }, - "required": [ - "DataSourceType", - "DataTypeName" - ], - "type": "object" - }, - "FormInputBindingProperties": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "$ref": "#/definitions/FormInputBindingPropertiesValue" - } - }, - "type": "object" - }, - "FormInputBindingPropertiesValue": { - "additionalProperties": false, - "properties": { - "BindingProperties": { - "$ref": "#/definitions/FormInputBindingPropertiesValueProperties" - }, - "Type": { - "type": "string" - } - }, - "type": "object" - }, - "FormInputBindingPropertiesValueProperties": { - "additionalProperties": false, - "properties": { - "Model": { - "type": "string" - } - }, - "type": "object" - }, - "FormInputValueProperty": { - "additionalProperties": false, - "properties": { - "BindingProperties": { - "$ref": "#/definitions/FormInputValuePropertyBindingProperties" - }, - "Concat": { - "items": { - "$ref": "#/definitions/FormInputValueProperty" - }, - "type": "array" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "FormInputValuePropertyBindingProperties": { - "additionalProperties": false, - "properties": { - "Field": { - "type": "string" - }, - "Property": { - "type": "string" - } - }, - "required": [ - "Property" - ], - "type": "object" - }, - "FormStyle": { - "additionalProperties": false, - "properties": { - "HorizontalGap": { - "$ref": "#/definitions/FormStyleConfig" - }, - "OuterPadding": { - "$ref": "#/definitions/FormStyleConfig" - }, - "VerticalGap": { - "$ref": "#/definitions/FormStyleConfig" - } - }, - "type": "object" - }, - "FormStyleConfig": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "TokenReference": { - "type": "string" - } - }, - "required": [ - "TokenReference" - ], - "title": "TokenReference", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Value": { - "type": "string" - } - }, - "required": [ - "Value" - ], - "title": "Value", - "type": "object" - } - ] - }, - "LabelDecorator": { - "enum": [ - "required", - "optional", - "none" - ], - "type": "string" - }, - "SectionalElement": { - "additionalProperties": false, - "properties": { - "Excluded": { - "type": "boolean" - }, - "Level": { - "type": "number" - }, - "Orientation": { - "type": "string" - }, - "Position": { - "$ref": "#/definitions/FieldPosition" - }, - "Text": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "SectionalElementMap": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "$ref": "#/definitions/SectionalElement" - } - }, - "type": "object" - }, - "StorageAccessLevel": { - "enum": [ - "public", - "protected", - "private" - ], - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "patternProperties": { - "^(?!aws:)[a-zA-Z+-=._:/]+$": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "ValueMapping": { - "additionalProperties": false, - "properties": { - "DisplayValue": { - "$ref": "#/definitions/FormInputValueProperty" - }, - "Value": { - "$ref": "#/definitions/FormInputValueProperty" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "ValueMappings": { - "additionalProperties": false, - "properties": { - "BindingProperties": { - "$ref": "#/definitions/FormInputBindingProperties" - }, - "Values": { - "items": { - "$ref": "#/definitions/ValueMapping" - }, - "type": "array" - } - }, - "required": [ - "Values" - ], - "type": "object" - } - }, - "description": "Definition of AWS::AmplifyUIBuilder::Form Resource Type", - "handlers": { - "create": { - "permissions": [ - "amplify:GetApp", - "amplifyuibuilder:CreateForm", - "amplifyuibuilder:GetForm", - "amplifyuibuilder:TagResource" - ] - }, - "delete": { - "permissions": [ - "amplify:GetApp", - "amplifyuibuilder:DeleteForm", - "amplifyuibuilder:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "AppId": { - "$ref": "resource-schema.json#/properties/AppId" - }, - "EnvironmentName": { - "$ref": "resource-schema.json#/properties/EnvironmentName" - } - }, - "required": [ - "AppId", - "EnvironmentName" - ] - }, - "permissions": [ - "amplify:GetApp", - "amplifyuibuilder:ListForms" - ] - }, - "read": { - "permissions": [ - "amplify:GetApp", - "amplifyuibuilder:GetForm" - ] - }, - "update": { - "permissions": [ - "amplify:GetApp", - "amplifyuibuilder:GetForm", - "amplifyuibuilder:TagResource", - "amplifyuibuilder:UntagResource", - "amplifyuibuilder:UpdateForm" - ] - } - }, - "primaryIdentifier": [ - "/properties/AppId", - "/properties/EnvironmentName", - "/properties/Id" - ], - "properties": { - "AppId": { - "type": "string" - }, - "Cta": { - "$ref": "#/definitions/FormCTA" - }, - "DataType": { - "$ref": "#/definitions/FormDataTypeConfig" - }, - "EnvironmentName": { - "type": "string" - }, - "Fields": { - "$ref": "#/definitions/FieldsMap" - }, - "FormActionType": { - "$ref": "#/definitions/FormActionType" - }, - "Id": { - "type": "string" - }, - "LabelDecorator": { - "$ref": "#/definitions/LabelDecorator" - }, - "Name": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "SchemaVersion": { - "type": "string" - }, - "SectionalElements": { - "$ref": "#/definitions/SectionalElementMap" - }, - "Style": { - "$ref": "#/definitions/FormStyle" - }, - "Tags": { - "$ref": "#/definitions/Tags" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-amplifyuibuilder", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "amplifyuibuilder:TagResource", - "amplifyuibuilder:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AmplifyUIBuilder::Form" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppId", + "/properties/EnvironmentName" + ], + "definitions": { + "FieldConfig": { + "additionalProperties": false, + "properties": { + "Excluded": { + "type": "boolean" + }, + "InputType": { + "$ref": "#/definitions/FieldInputConfig" + }, + "Label": { + "type": "string" + }, + "Position": { + "$ref": "#/definitions/FieldPosition" + }, + "Validations": { + "items": { + "$ref": "#/definitions/FieldValidationConfiguration" + }, + "type": "array" + } + }, + "type": "object" + }, + "FieldInputConfig": { + "additionalProperties": false, + "properties": { + "DefaultChecked": { + "type": "boolean" + }, + "DefaultCountryCode": { + "type": "string" + }, + "DefaultValue": { + "type": "string" + }, + "DescriptiveText": { + "type": "string" + }, + "FileUploaderConfig": { + "$ref": "#/definitions/FileUploaderFieldConfig" + }, + "IsArray": { + "type": "boolean" + }, + "MaxValue": { + "type": "number" + }, + "MinValue": { + "type": "number" + }, + "Name": { + "type": "string" + }, + "Placeholder": { + "type": "string" + }, + "ReadOnly": { + "type": "boolean" + }, + "Required": { + "type": "boolean" + }, + "Step": { + "type": "number" + }, + "Type": { + "type": "string" + }, + "Value": { + "type": "string" + }, + "ValueMappings": { + "$ref": "#/definitions/ValueMappings" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "FieldPosition": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Fixed": { + "$ref": "#/definitions/FixedPosition" + } + }, + "required": [ + "Fixed" + ], + "title": "Fixed", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "RightOf": { + "type": "string" + } + }, + "required": [ + "RightOf" + ], + "title": "RightOf", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Below": { + "type": "string" + } + }, + "required": [ + "Below" + ], + "title": "Below", + "type": "object" + } + ] + }, + "FieldValidationConfiguration": { + "additionalProperties": false, + "properties": { + "NumValues": { + "items": { + "type": "number" + }, + "type": "array" + }, + "StrValues": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "ValidationMessage": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "FieldsMap": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "$ref": "#/definitions/FieldConfig" + } + }, + "type": "object" + }, + "FileUploaderFieldConfig": { + "additionalProperties": false, + "properties": { + "AcceptedFileTypes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "AccessLevel": { + "$ref": "#/definitions/StorageAccessLevel" + }, + "IsResumable": { + "type": "boolean" + }, + "MaxFileCount": { + "type": "number" + }, + "MaxSize": { + "type": "number" + }, + "ShowThumbnails": { + "type": "boolean" + } + }, + "required": [ + "AcceptedFileTypes", + "AccessLevel" + ], + "type": "object" + }, + "FixedPosition": { + "enum": [ + "first" + ], + "type": "string" + }, + "FormActionType": { + "enum": [ + "create", + "update" + ], + "type": "string" + }, + "FormButton": { + "additionalProperties": false, + "properties": { + "Children": { + "type": "string" + }, + "Excluded": { + "type": "boolean" + }, + "Position": { + "$ref": "#/definitions/FieldPosition" + } + }, + "type": "object" + }, + "FormButtonsPosition": { + "enum": [ + "top", + "bottom", + "top_and_bottom" + ], + "type": "string" + }, + "FormCTA": { + "additionalProperties": false, + "properties": { + "Cancel": { + "$ref": "#/definitions/FormButton" + }, + "Clear": { + "$ref": "#/definitions/FormButton" + }, + "Position": { + "$ref": "#/definitions/FormButtonsPosition" + }, + "Submit": { + "$ref": "#/definitions/FormButton" + } + }, + "type": "object" + }, + "FormDataSourceType": { + "enum": [ + "DataStore", + "Custom" + ], + "type": "string" + }, + "FormDataTypeConfig": { + "additionalProperties": false, + "properties": { + "DataSourceType": { + "$ref": "#/definitions/FormDataSourceType" + }, + "DataTypeName": { + "type": "string" + } + }, + "required": [ + "DataSourceType", + "DataTypeName" + ], + "type": "object" + }, + "FormInputBindingProperties": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "$ref": "#/definitions/FormInputBindingPropertiesValue" + } + }, + "type": "object" + }, + "FormInputBindingPropertiesValue": { + "additionalProperties": false, + "properties": { + "BindingProperties": { + "$ref": "#/definitions/FormInputBindingPropertiesValueProperties" + }, + "Type": { + "type": "string" + } + }, + "type": "object" + }, + "FormInputBindingPropertiesValueProperties": { + "additionalProperties": false, + "properties": { + "Model": { + "type": "string" + } + }, + "type": "object" + }, + "FormInputValueProperty": { + "additionalProperties": false, + "properties": { + "BindingProperties": { + "$ref": "#/definitions/FormInputValuePropertyBindingProperties" + }, + "Concat": { + "items": { + "$ref": "#/definitions/FormInputValueProperty" + }, + "type": "array" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "FormInputValuePropertyBindingProperties": { + "additionalProperties": false, + "properties": { + "Field": { + "type": "string" + }, + "Property": { + "type": "string" + } + }, + "required": [ + "Property" + ], + "type": "object" + }, + "FormStyle": { + "additionalProperties": false, + "properties": { + "HorizontalGap": { + "$ref": "#/definitions/FormStyleConfig" + }, + "OuterPadding": { + "$ref": "#/definitions/FormStyleConfig" + }, + "VerticalGap": { + "$ref": "#/definitions/FormStyleConfig" + } + }, + "type": "object" + }, + "FormStyleConfig": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "TokenReference": { + "type": "string" + } + }, + "required": [ + "TokenReference" + ], + "title": "TokenReference", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Value": { + "type": "string" + } + }, + "required": [ + "Value" + ], + "title": "Value", + "type": "object" + } + ] + }, + "LabelDecorator": { + "enum": [ + "required", + "optional", + "none" + ], + "type": "string" + }, + "SectionalElement": { + "additionalProperties": false, + "properties": { + "Excluded": { + "type": "boolean" + }, + "Level": { + "type": "number" + }, + "Orientation": { + "type": "string" + }, + "Position": { + "$ref": "#/definitions/FieldPosition" + }, + "Text": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "SectionalElementMap": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "$ref": "#/definitions/SectionalElement" + } + }, + "type": "object" + }, + "StorageAccessLevel": { + "enum": [ + "public", + "protected", + "private" + ], + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "patternProperties": { + "^(?!aws:)[a-zA-Z+-=._:/]+$": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "ValueMapping": { + "additionalProperties": false, + "properties": { + "DisplayValue": { + "$ref": "#/definitions/FormInputValueProperty" + }, + "Value": { + "$ref": "#/definitions/FormInputValueProperty" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "ValueMappings": { + "additionalProperties": false, + "properties": { + "BindingProperties": { + "$ref": "#/definitions/FormInputBindingProperties" + }, + "Values": { + "items": { + "$ref": "#/definitions/ValueMapping" + }, + "type": "array" + } + }, + "required": [ + "Values" + ], + "type": "object" + } + }, + "description": "Definition of AWS::AmplifyUIBuilder::Form Resource Type", + "handlers": { + "create": { + "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:CreateForm", + "amplifyuibuilder:GetForm", + "amplifyuibuilder:TagResource" + ] + }, + "delete": { + "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:DeleteForm", + "amplifyuibuilder:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "AppId": { + "$ref": "resource-schema.json#/properties/AppId" + }, + "EnvironmentName": { + "$ref": "resource-schema.json#/properties/EnvironmentName" + } + }, + "required": [ + "AppId", + "EnvironmentName" + ] + }, + "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:ListForms" + ] + }, + "read": { + "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:GetForm" + ] + }, + "update": { + "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:GetForm", + "amplifyuibuilder:TagResource", + "amplifyuibuilder:UntagResource", + "amplifyuibuilder:UpdateForm" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppId", + "/properties/EnvironmentName", + "/properties/Id" + ], + "properties": { + "AppId": { + "type": "string" + }, + "Cta": { + "$ref": "#/definitions/FormCTA" + }, + "DataType": { + "$ref": "#/definitions/FormDataTypeConfig" + }, + "EnvironmentName": { + "type": "string" + }, + "Fields": { + "$ref": "#/definitions/FieldsMap" + }, + "FormActionType": { + "$ref": "#/definitions/FormActionType" + }, + "Id": { + "type": "string" + }, + "LabelDecorator": { + "$ref": "#/definitions/LabelDecorator" + }, + "Name": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "SchemaVersion": { + "type": "string" + }, + "SectionalElements": { + "$ref": "#/definitions/SectionalElementMap" + }, + "Style": { + "$ref": "#/definitions/FormStyle" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-amplifyuibuilder", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "amplifyuibuilder:TagResource", + "amplifyuibuilder:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AmplifyUIBuilder::Form" +} diff --git a/src/schema/aws-amplifyuibuilder-theme.json b/src/schema/aws-amplifyuibuilder-theme.json index 494bdffd..c525f08e 100644 --- a/src/schema/aws-amplifyuibuilder-theme.json +++ b/src/schema/aws-amplifyuibuilder-theme.json @@ -1,162 +1,162 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AppId", - "/properties/EnvironmentName" - ], - "definitions": { - "Tags": { - "additionalProperties": false, - "patternProperties": { - "^(?!aws:)[a-zA-Z+-=._:/]+$": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "ThemeValue": { - "additionalProperties": false, - "properties": { - "Children": { - "items": { - "$ref": "#/definitions/ThemeValues" - }, - "type": "array" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "ThemeValues": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "$ref": "#/definitions/ThemeValue" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::AmplifyUIBuilder::Theme Resource Type", - "handlers": { - "create": { - "permissions": [ - "amplify:GetApp", - "amplifyuibuilder:CreateTheme", - "amplifyuibuilder:GetTheme", - "amplifyuibuilder:TagResource" - ] - }, - "delete": { - "permissions": [ - "amplify:GetApp", - "amplifyuibuilder:DeleteTheme", - "amplifyuibuilder:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "AppId": { - "$ref": "resource-schema.json#/properties/AppId" - }, - "EnvironmentName": { - "$ref": "resource-schema.json#/properties/EnvironmentName" - } - }, - "required": [ - "AppId", - "EnvironmentName" - ] - }, - "permissions": [ - "amplify:GetApp", - "amplifyuibuilder:ListThemes" - ] - }, - "read": { - "permissions": [ - "amplify:GetApp", - "amplifyuibuilder:GetTheme" - ] - }, - "update": { - "permissions": [ - "amplify:GetApp", - "amplifyuibuilder:GetTheme", - "amplifyuibuilder:TagResource", - "amplifyuibuilder:UntagResource", - "amplifyuibuilder:UpdateTheme" - ] - } - }, - "primaryIdentifier": [ - "/properties/AppId", - "/properties/EnvironmentName", - "/properties/Id" - ], - "properties": { - "AppId": { - "type": "string" - }, - "CreatedAt": { - "format": "date-time", - "type": "string" - }, - "EnvironmentName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ModifiedAt": { - "format": "date-time", - "type": "string" - }, - "Name": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Overrides": { - "items": { - "$ref": "#/definitions/ThemeValues" - }, - "type": "array" - }, - "Tags": { - "$ref": "#/definitions/Tags" - }, - "Values": { - "items": { - "$ref": "#/definitions/ThemeValues" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/Id", - "/properties/ModifiedAt" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-amplifyuibuilder", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "amplifyuibuilder:TagResource", - "amplifyuibuilder:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AmplifyUIBuilder::Theme" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppId", + "/properties/EnvironmentName" + ], + "definitions": { + "Tags": { + "additionalProperties": false, + "patternProperties": { + "^(?!aws:)[a-zA-Z+-=._:/]+$": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "ThemeValue": { + "additionalProperties": false, + "properties": { + "Children": { + "items": { + "$ref": "#/definitions/ThemeValues" + }, + "type": "array" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "ThemeValues": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "$ref": "#/definitions/ThemeValue" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::AmplifyUIBuilder::Theme Resource Type", + "handlers": { + "create": { + "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:CreateTheme", + "amplifyuibuilder:GetTheme", + "amplifyuibuilder:TagResource" + ] + }, + "delete": { + "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:DeleteTheme", + "amplifyuibuilder:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "AppId": { + "$ref": "resource-schema.json#/properties/AppId" + }, + "EnvironmentName": { + "$ref": "resource-schema.json#/properties/EnvironmentName" + } + }, + "required": [ + "AppId", + "EnvironmentName" + ] + }, + "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:ListThemes" + ] + }, + "read": { + "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:GetTheme" + ] + }, + "update": { + "permissions": [ + "amplify:GetApp", + "amplifyuibuilder:GetTheme", + "amplifyuibuilder:TagResource", + "amplifyuibuilder:UntagResource", + "amplifyuibuilder:UpdateTheme" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppId", + "/properties/EnvironmentName", + "/properties/Id" + ], + "properties": { + "AppId": { + "type": "string" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "EnvironmentName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "ModifiedAt": { + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Overrides": { + "items": { + "$ref": "#/definitions/ThemeValues" + }, + "type": "array" + }, + "Tags": { + "$ref": "#/definitions/Tags" + }, + "Values": { + "items": { + "$ref": "#/definitions/ThemeValues" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/Id", + "/properties/ModifiedAt" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-amplifyuibuilder", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "amplifyuibuilder:TagResource", + "amplifyuibuilder:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AmplifyUIBuilder::Theme" +} diff --git a/src/schema/aws-apigateway-account.json b/src/schema/aws-apigateway-account.json index 918d2a50..b252714b 100644 --- a/src/schema/aws-apigateway-account.json +++ b/src/schema/aws-apigateway-account.json @@ -1,51 +1,51 @@ -{ - "additionalProperties": false, - "description": "The ``AWS::ApiGateway::Account`` resource specifies the IAM role that Amazon API Gateway uses to write API logs to Amazon CloudWatch Logs. To avoid overwriting other roles, you should only have one ``AWS::ApiGateway::Account`` resource per region per account.", - "handlers": { - "create": { - "permissions": [ - "apigateway:PATCH", - "iam:GetRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "apigateway:PATCH" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:PATCH", - "iam:GetRole", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CloudWatchRoleArn": { - "description": "", - "type": "string" - }, - "Id": { - "description": "", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ApiGateway::Account" -} +{ + "additionalProperties": false, + "description": "The ``AWS::ApiGateway::Account`` resource specifies the IAM role that Amazon API Gateway uses to write API logs to Amazon CloudWatch Logs. To avoid overwriting other roles, you should only have one ``AWS::ApiGateway::Account`` resource per region per account.", + "handlers": { + "create": { + "permissions": [ + "apigateway:PATCH", + "iam:GetRole", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "apigateway:PATCH" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "iam:GetRole", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CloudWatchRoleArn": { + "description": "", + "type": "string" + }, + "Id": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ApiGateway::Account" +} diff --git a/src/schema/aws-apigateway-apikey.json b/src/schema/aws-apigateway-apikey.json index bfd4af4a..b513da61 100644 --- a/src/schema/aws-apigateway-apikey.json +++ b/src/schema/aws-apigateway-apikey.json @@ -1,151 +1,151 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GenerateDistinctId", - "/properties/Name", - "/properties/Value" - ], - "definitions": { - "StageKey": { - "additionalProperties": false, - "description": "``StageKey`` is a property of the [AWS::ApiGateway::ApiKey](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-apikey.html) resource that specifies the stage to associate with the API key. This association allows only clients with the key to make requests to methods in that stage.", - "properties": { - "RestApiId": { - "description": "The string identifier of the associated RestApi.", - "type": "string" - }, - "StageName": { - "description": "The stage name associated with the stage key.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The ``AWS::ApiGateway::ApiKey`` resource creates a unique key that you can distribute to clients who are executing API Gateway ``Method`` resources that require an API key. To specify which API key clients must use, map the API key with the ``RestApi`` and ``Stage`` resources that include the methods that require a key.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST", - "apigateway:GET", - "apigateway:PUT" - ] - }, - "delete": { - "permissions": [ - "apigateway:DELETE", - "apigateway:GET" - ] - }, - "list": { - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:GET", - "apigateway:PATCH", - "apigateway:PUT", - "apigateway:DELETE" - ] - } - }, - "primaryIdentifier": [ - "/properties/APIKeyId" - ], - "properties": { - "APIKeyId": { - "description": "", - "type": "string" - }, - "CustomerId": { - "description": "An MKT customer identifier, when integrating with the AWS SaaS Marketplace.", - "type": "string" - }, - "Description": { - "description": "The description of the ApiKey.", - "type": "string" - }, - "Enabled": { - "default": false, - "description": "Specifies whether the ApiKey can be used by callers.", - "type": "boolean" - }, - "GenerateDistinctId": { - "description": "Specifies whether (``true``) or not (``false``) the key identifier is distinct from the created API key value. This parameter is deprecated and should not be used.", - "type": "boolean" - }, - "Name": { - "description": "A name for the API key. If you don't specify a name, CFN generates a unique physical ID and uses that ID for the API key name. For more information, see [Name Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", - "type": "string" - }, - "StageKeys": { - "description": "DEPRECATED FOR USAGE PLANS - Specifies stages associated with the API key.", - "items": { - "$ref": "#/definitions/StageKey" - }, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "description": "The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with ``aws:``. The tag value can be up to 256 characters.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Value": { - "description": "Specifies a value of the API key.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/APIKeyId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "apigateway:PUT", - "apigateway:DELETE", - "apigateway:GET" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ApiGateway::ApiKey", - "writeOnlyProperties": [ - "/properties/GenerateDistinctId" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GenerateDistinctId", + "/properties/Name", + "/properties/Value" + ], + "definitions": { + "StageKey": { + "additionalProperties": false, + "description": "``StageKey`` is a property of the [AWS::ApiGateway::ApiKey](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-apikey.html) resource that specifies the stage to associate with the API key. This association allows only clients with the key to make requests to methods in that stage.", + "properties": { + "RestApiId": { + "description": "", + "type": "string" + }, + "StageName": { + "description": "", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The ``AWS::ApiGateway::ApiKey`` resource creates a unique key that you can distribute to clients who are executing API Gateway ``Method`` resources that require an API key. To specify which API key clients must use, map the API key with the ``RestApi`` and ``Stage`` resources that include the methods that require a key.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:GET", + "apigateway:PUT" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE", + "apigateway:GET" + ] + }, + "list": { + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:GET", + "apigateway:PATCH", + "apigateway:PUT", + "apigateway:DELETE" + ] + } + }, + "primaryIdentifier": [ + "/properties/APIKeyId" + ], + "properties": { + "APIKeyId": { + "description": "", + "type": "string" + }, + "CustomerId": { + "description": "", + "type": "string" + }, + "Description": { + "description": "", + "type": "string" + }, + "Enabled": { + "default": false, + "description": "", + "type": "boolean" + }, + "GenerateDistinctId": { + "description": "", + "type": "boolean" + }, + "Name": { + "description": "A name for the API key. If you don't specify a name, CFN generates a unique physical ID and uses that ID for the API key name. For more information, see [Name Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", + "type": "string" + }, + "StageKeys": { + "description": "", + "items": { + "$ref": "#/definitions/StageKey" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Value": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/APIKeyId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "apigateway:PUT", + "apigateway:DELETE", + "apigateway:GET" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ApiGateway::ApiKey", + "writeOnlyProperties": [ + "/properties/GenerateDistinctId" + ] +} diff --git a/src/schema/aws-apigateway-authorizer.json b/src/schema/aws-apigateway-authorizer.json index 0e852813..e5b433de 100644 --- a/src/schema/aws-apigateway-authorizer.json +++ b/src/schema/aws-apigateway-authorizer.json @@ -1,118 +1,118 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RestApiId" - ], - "description": "The ``AWS::ApiGateway::Authorizer`` resource creates an authorization layer that API Gateway activates for methods that have authorization enabled. API Gateway activates the authorizer when a client calls those methods.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "apigateway:DELETE" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "RestApiId": { - "$ref": "resource-schema.json#/properties/RestApiId" - } - }, - "required": [ - "RestApiId" - ] - }, - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:GET", - "apigateway:PATCH", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/RestApiId", - "/properties/AuthorizerId" - ], - "properties": { - "AuthType": { - "description": "Optional customer-defined field, used in OpenAPI imports and exports without functional impact.", - "type": "string" - }, - "AuthorizerCredentials": { - "description": "Specifies the required credentials as an IAM role for API Gateway to invoke the authorizer. To specify an IAM role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, specify null.", - "type": "string" - }, - "AuthorizerId": { - "description": "", - "type": "string" - }, - "AuthorizerResultTtlInSeconds": { - "description": "The TTL in seconds of cached authorizer results. If it equals 0, authorization caching is disabled. If it is greater than 0, API Gateway will cache authorizer responses. If this field is not set, the default value is 300. The maximum value is 3600, or 1 hour.", - "type": "integer" - }, - "AuthorizerUri": { - "description": "Specifies the authorizer's Uniform Resource Identifier (URI). For ``TOKEN`` or ``REQUEST`` authorizers, this must be a well-formed Lambda function URI, for example, ``arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:{account_id}:function:{lambda_function_name}/invocations``. In general, the URI has this form ``arn:aws:apigateway:{region}:lambda:path/{service_api}``, where ``{region}`` is the same as the region hosting the Lambda function, ``path`` indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial ``/``. For Lambda functions, this is usually of the form ``/2015-03-31/functions/[FunctionARN]/invocations``.", - "type": "string" - }, - "IdentitySource": { - "description": "The identity source for which authorization is requested. For a ``TOKEN`` or ``COGNITO_USER_POOLS`` authorizer, this is required and specifies the request header mapping expression for the custom header holding the authorization token submitted by the client. For example, if the token header name is ``Auth``, the header mapping expression is ``method.request.header.Auth``. For the ``REQUEST`` authorizer, this is required when authorization caching is enabled. The value is a comma-separated string of one or more mapping expressions of the specified request parameters. For example, if an ``Auth`` header, a ``Name`` query string parameter are defined as identity sources, this value is ``method.request.header.Auth, method.request.querystring.Name``. These parameters will be used to derive the authorization caching key and to perform runtime validation of the ``REQUEST`` authorizer by verifying all of the identity-related request parameters are present, not null and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function, otherwise, it returns a 401 Unauthorized response without calling the Lambda function. The valid value is a string of comma-separated mapping expressions of the specified request parameters. When the authorization caching is not enabled, this property is optional.", - "type": "string" - }, - "IdentityValidationExpression": { - "description": "A validation expression for the incoming identity token. For ``TOKEN`` authorizers, this value is a regular expression. For ``COGNITO_USER_POOLS`` authorizers, API Gateway will match the ``aud`` field of the incoming token from the client against the specified regular expression. It will invoke the authorizer's Lambda function when there is a match. Otherwise, it will return a 401 Unauthorized response without calling the Lambda function. The validation expression does not apply to the ``REQUEST`` authorizer.", - "type": "string" - }, - "Name": { - "description": "The name of the authorizer.", - "type": "string" - }, - "ProviderARNs": { - "description": "A list of the Amazon Cognito user pool ARNs for the ``COGNITO_USER_POOLS`` authorizer. Each element is of this format: ``arn:aws:cognito-idp:{region}:{account_id}:userpool/{user_pool_id}``. For a ``TOKEN`` or ``REQUEST`` authorizer, this is not defined.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "RestApiId": { - "description": "The string identifier of the associated RestApi.", - "type": "string" - }, - "Type": { - "description": "The authorizer type. Valid values are ``TOKEN`` for a Lambda function using a single authorization token submitted in a custom header, ``REQUEST`` for a Lambda function using incoming request parameters, and ``COGNITO_USER_POOLS`` for using an Amazon Cognito user pool.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AuthorizerId" - ], - "required": [ - "RestApiId", - "Type", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ApiGateway::Authorizer" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RestApiId" + ], + "description": "The ``AWS::ApiGateway::Authorizer`` resource creates an authorization layer that API Gateway activates for methods that have authorization enabled. API Gateway activates the authorizer when a client calls those methods.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "RestApiId": { + "$ref": "resource-schema.json#/properties/RestApiId" + } + }, + "required": [ + "RestApiId" + ] + }, + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:GET", + "apigateway:PATCH", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/RestApiId", + "/properties/AuthorizerId" + ], + "properties": { + "AuthType": { + "description": "", + "type": "string" + }, + "AuthorizerCredentials": { + "description": "", + "type": "string" + }, + "AuthorizerId": { + "description": "", + "type": "string" + }, + "AuthorizerResultTtlInSeconds": { + "description": "", + "type": "integer" + }, + "AuthorizerUri": { + "description": "", + "type": "string" + }, + "IdentitySource": { + "description": "", + "type": "string" + }, + "IdentityValidationExpression": { + "description": "", + "type": "string" + }, + "Name": { + "description": "", + "type": "string" + }, + "ProviderARNs": { + "description": "", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "RestApiId": { + "description": "", + "type": "string" + }, + "Type": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AuthorizerId" + ], + "required": [ + "RestApiId", + "Type", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ApiGateway::Authorizer" +} diff --git a/src/schema/aws-apigateway-basepathmapping.json b/src/schema/aws-apigateway-basepathmapping.json index 86f315b1..9b18de4e 100644 --- a/src/schema/aws-apigateway-basepathmapping.json +++ b/src/schema/aws-apigateway-basepathmapping.json @@ -1,81 +1,81 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainName", - "/properties/BasePath" - ], - "description": "The ``AWS::ApiGateway::BasePathMapping`` resource creates a base path that clients who call your API must use in the invocation URL.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST", - "apigateway:GET" - ] - }, - "delete": { - "permissions": [ - "apigateway:DELETE" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DomainName": { - "$ref": "resource-schema.json#/properties/DomainName" - } - }, - "required": [ - "DomainName" - ] - }, - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE", - "apigateway:PATCH" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainName", - "/properties/BasePath" - ], - "properties": { - "BasePath": { - "description": "The base path name that callers of the API must provide as part of the URL after the domain name.", - "type": "string" - }, - "DomainName": { - "description": "The domain name of the BasePathMapping resource to be described.", - "type": "string" - }, - "RestApiId": { - "description": "The string identifier of the associated RestApi.", - "type": "string" - }, - "Stage": { - "description": "The name of the associated stage.", - "type": "string" - } - }, - "required": [ - "DomainName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ApiGateway::BasePathMapping" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainName", + "/properties/BasePath" + ], + "description": "The ``AWS::ApiGateway::BasePathMapping`` resource creates a base path that clients who call your API must use in the invocation URL.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:GET" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainName": { + "$ref": "resource-schema.json#/properties/DomainName" + } + }, + "required": [ + "DomainName" + ] + }, + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE", + "apigateway:PATCH" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainName", + "/properties/BasePath" + ], + "properties": { + "BasePath": { + "description": "", + "type": "string" + }, + "DomainName": { + "description": "", + "type": "string" + }, + "RestApiId": { + "description": "", + "type": "string" + }, + "Stage": { + "description": "", + "type": "string" + } + }, + "required": [ + "DomainName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ApiGateway::BasePathMapping" +} diff --git a/src/schema/aws-apigateway-basepathmappingv2.json b/src/schema/aws-apigateway-basepathmappingv2.json new file mode 100644 index 00000000..f213a290 --- /dev/null +++ b/src/schema/aws-apigateway-basepathmappingv2.json @@ -0,0 +1,88 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainNameArn", + "/properties/BasePath" + ], + "description": "Resource Type definition for AWS::ApiGateway::BasePathMappingV2", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:GET" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainNameArn": { + "$ref": "resource-schema.json#/properties/DomainNameArn" + } + }, + "required": [ + "DomainNameArn" + ] + }, + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE", + "apigateway:PATCH" + ] + } + }, + "primaryIdentifier": [ + "/properties/BasePathMappingArn" + ], + "properties": { + "BasePath": { + "description": "The base path name that callers of the API must provide in the URL after the domain name.", + "type": "string" + }, + "BasePathMappingArn": { + "description": "Amazon Resource Name (ARN) of the resource.", + "type": "string" + }, + "DomainNameArn": { + "description": "The Arn of an AWS::ApiGateway::DomainNameV2 resource.", + "type": "string" + }, + "RestApiId": { + "description": "The ID of the API.", + "type": "string" + }, + "Stage": { + "description": "The name of the API's stage.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/BasePathMappingArn" + ], + "required": [ + "DomainNameArn", + "RestApiId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ApiGateway::BasePathMappingV2" +} diff --git a/src/schema/aws-apigateway-clientcertificate.json b/src/schema/aws-apigateway-clientcertificate.json index 800f489d..88bc1d7e 100644 --- a/src/schema/aws-apigateway-clientcertificate.json +++ b/src/schema/aws-apigateway-clientcertificate.json @@ -1,93 +1,93 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "", - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The ``AWS::ApiGateway::ClientCertificate`` resource creates a client certificate that API Gateway uses to configure client-side SSL authentication for sending requests to the integration endpoint.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST", - "apigateway:GET", - "apigateway:PUT" - ] - }, - "delete": { - "permissions": [ - "apigateway:DELETE" - ] - }, - "list": { - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:GET", - "apigateway:PATCH", - "apigateway:PUT", - "apigateway:DELETE" - ] - } - }, - "primaryIdentifier": [ - "/properties/ClientCertificateId" - ], - "properties": { - "ClientCertificateId": { - "description": "", - "type": "string" - }, - "Description": { - "description": "The description of the client certificate.", - "type": "string" - }, - "Tags": { - "description": "The collection of tags. Each tag element is associated with a given resource.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ClientCertificateId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "apigateway:PUT", - "apigateway:DELETE", - "apigateway:GET" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ApiGateway::ClientCertificate" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The ``AWS::ApiGateway::ClientCertificate`` resource creates a client certificate that API Gateway uses to configure client-side SSL authentication for sending requests to the integration endpoint.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:GET", + "apigateway:PUT" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE" + ] + }, + "list": { + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:GET", + "apigateway:PATCH", + "apigateway:PUT", + "apigateway:DELETE" + ] + } + }, + "primaryIdentifier": [ + "/properties/ClientCertificateId" + ], + "properties": { + "ClientCertificateId": { + "description": "", + "type": "string" + }, + "Description": { + "description": "", + "type": "string" + }, + "Tags": { + "description": "", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ClientCertificateId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "apigateway:PUT", + "apigateway:DELETE", + "apigateway:GET" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ApiGateway::ClientCertificate" +} diff --git a/src/schema/aws-apigateway-deployment.json b/src/schema/aws-apigateway-deployment.json index 7b3937f9..7786496e 100644 --- a/src/schema/aws-apigateway-deployment.json +++ b/src/schema/aws-apigateway-deployment.json @@ -1,330 +1,330 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DeploymentCanarySettings", - "/properties/RestApiId" - ], - "definitions": { - "AccessLogSetting": { - "additionalProperties": false, - "description": "The ``AccessLogSetting`` property type specifies settings for logging access in this stage.\n ``AccessLogSetting`` is a property of the [StageDescription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html) property type.", - "properties": { - "DestinationArn": { - "description": "The Amazon Resource Name (ARN) of the CloudWatch Logs log group or Kinesis Data Firehose delivery stream to receive access logs. If you specify a Kinesis Data Firehose delivery stream, the stream name must begin with ``amazon-apigateway-``.", - "type": "string" - }, - "Format": { - "description": "A single line format of the access logs of data, as specified by selected $context variables. The format must include at least ``$context.requestId``.", - "type": "string" - } - }, - "type": "object" - }, - "CanarySetting": { - "additionalProperties": false, - "description": "The ``CanarySetting`` property type specifies settings for the canary deployment in this stage.\n ``CanarySetting`` is a property of the [StageDescription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html) property type.", - "properties": { - "PercentTraffic": { - "description": "The percent (0-100) of traffic diverted to a canary deployment.", - "type": "number" - }, - "StageVariableOverrides": { - "additionalProperties": false, - "description": "Stage variables overridden for a canary release deployment, including new stage variables introduced in the canary. These stage variables are represented as a string-to-string map between stage variable names and their values.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "UseStageCache": { - "description": "A Boolean flag to indicate whether the canary deployment uses the stage cache or not.", - "type": "boolean" - } - }, - "type": "object" - }, - "DeploymentCanarySettings": { - "additionalProperties": false, - "description": "The ``DeploymentCanarySettings`` property type specifies settings for the canary deployment.", - "properties": { - "PercentTraffic": { - "description": "The percentage (0.0-100.0) of traffic routed to the canary deployment.", - "type": "number" - }, - "StageVariableOverrides": { - "additionalProperties": false, - "description": "A stage variable overrides used for the canary release deployment. They can override existing stage variables or add new stage variables for the canary release deployment. These stage variables are represented as a string-to-string map between stage variable names and their values.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "UseStageCache": { - "description": "A Boolean flag to indicate whether the canary release deployment uses the stage cache or not.", - "type": "boolean" - } - }, - "type": "object" - }, - "MethodSetting": { - "additionalProperties": false, - "description": "The ``MethodSetting`` property type configures settings for all methods in a stage.\n The ``MethodSettings`` property of the [Amazon API Gateway Deployment StageDescription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html) property type contains a list of ``MethodSetting`` property types.", - "properties": { - "CacheDataEncrypted": { - "description": "Specifies whether the cached responses are encrypted.", - "type": "boolean" - }, - "CacheTtlInSeconds": { - "description": "Specifies the time to live (TTL), in seconds, for cached responses. The higher the TTL, the longer the response will be cached.", - "type": "integer" - }, - "CachingEnabled": { - "description": "Specifies whether responses should be cached and returned for requests. A cache cluster must be enabled on the stage for responses to be cached.", - "type": "boolean" - }, - "DataTraceEnabled": { - "description": "Specifies whether data trace logging is enabled for this method, which affects the log entries pushed to Amazon CloudWatch Logs. This can be useful to troubleshoot APIs, but can result in logging sensitive data. We recommend that you don't enable this option for production APIs.", - "type": "boolean" - }, - "HttpMethod": { - "description": "The HTTP method.", - "type": "string" - }, - "LoggingLevel": { - "description": "Specifies the logging level for this method, which affects the log entries pushed to Amazon CloudWatch Logs. Valid values are ``OFF``, ``ERROR``, and ``INFO``. Choose ``ERROR`` to write only error-level entries to CloudWatch Logs, or choose ``INFO`` to include all ``ERROR`` events as well as extra informational events.", - "type": "string" - }, - "MetricsEnabled": { - "description": "Specifies whether Amazon CloudWatch metrics are enabled for this method.", - "type": "boolean" - }, - "ResourcePath": { - "description": "The resource path for this method. Forward slashes (``/``) are encoded as ``~1`` and the initial slash must include a forward slash. For example, the path value ``/resource/subresource`` must be encoded as ``/~1resource~1subresource``. To specify the root path, use only a slash (``/``).", - "type": "string" - }, - "ThrottlingBurstLimit": { - "description": "Specifies the throttling burst limit.", - "type": "integer" - }, - "ThrottlingRateLimit": { - "description": "Specifies the throttling rate limit.", - "type": "number" - } - }, - "type": "object" - }, - "StageDescription": { - "additionalProperties": false, - "description": "``StageDescription`` is a property of the [AWS::ApiGateway::Deployment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-deployment.html) resource that configures a deployment stage.", - "properties": { - "AccessLogSetting": { - "$ref": "#/definitions/AccessLogSetting", - "description": "Specifies settings for logging access in this stage." - }, - "CacheClusterEnabled": { - "description": "Specifies whether a cache cluster is enabled for the stage.", - "type": "boolean" - }, - "CacheClusterSize": { - "description": "The size of the stage's cache cluster. For more information, see [cacheClusterSize](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateStage.html#apigw-CreateStage-request-cacheClusterSize) in the *API Gateway API Reference*.", - "type": "string" - }, - "CacheDataEncrypted": { - "description": "Indicates whether the cached responses are encrypted.", - "type": "boolean" - }, - "CacheTtlInSeconds": { - "description": "The time-to-live (TTL) period, in seconds, that specifies how long API Gateway caches responses.", - "type": "integer" - }, - "CachingEnabled": { - "description": "Indicates whether responses are cached and returned for requests. You must enable a cache cluster on the stage to cache responses. For more information, see [Enable API Gateway Caching in a Stage to Enhance API Performance](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html) in the *API Gateway Developer Guide*.", - "type": "boolean" - }, - "CanarySetting": { - "$ref": "#/definitions/CanarySetting", - "description": "Specifies settings for the canary deployment in this stage." - }, - "ClientCertificateId": { - "description": "The identifier of the client certificate that API Gateway uses to call your integration endpoints in the stage.", - "type": "string" - }, - "DataTraceEnabled": { - "description": "Indicates whether data trace logging is enabled for methods in the stage. API Gateway pushes these logs to Amazon CloudWatch Logs.", - "type": "boolean" - }, - "Description": { - "description": "A description of the purpose of the stage.", - "type": "string" - }, - "DocumentationVersion": { - "description": "The version identifier of the API documentation snapshot.", - "type": "string" - }, - "LoggingLevel": { - "description": "The logging level for this method. For valid values, see the ``loggingLevel`` property of the [MethodSetting](https://docs.aws.amazon.com/apigateway/latest/api/API_MethodSetting.html) resource in the *Amazon API Gateway API Reference*.", - "type": "string" - }, - "MethodSettings": { - "description": "Configures settings for all of the stage's methods.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MethodSetting" - }, - "type": "array", - "uniqueItems": true - }, - "MetricsEnabled": { - "description": "Indicates whether Amazon CloudWatch metrics are enabled for methods in the stage.", - "type": "boolean" - }, - "Tags": { - "description": "An array of arbitrary tags (key-value pairs) to associate with the stage.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "ThrottlingBurstLimit": { - "description": "The target request burst rate limit. This allows more requests through for a period of time than the target rate limit. For more information, see [Manage API Request Throttling](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-request-throttling.html) in the *API Gateway Developer Guide*.", - "type": "integer" - }, - "ThrottlingRateLimit": { - "description": "The target request steady-state rate limit. For more information, see [Manage API Request Throttling](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-request-throttling.html) in the *API Gateway Developer Guide*.", - "type": "number" - }, - "TracingEnabled": { - "description": "Specifies whether active tracing with X-ray is enabled for this stage.\n For more information, see [Trace API Gateway API Execution with X-Ray](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-xray.html) in the *API Gateway Developer Guide*.", - "type": "boolean" - }, - "Variables": { - "additionalProperties": false, - "description": "A map that defines the stage variables. Variable names must consist of alphanumeric characters, and the values must match the following regular expression: ``[A-Za-z0-9-._~:/?#&=,]+``.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "", - "properties": { - "Key": { - "description": "The key name of the tag", - "type": "string" - }, - "Value": { - "description": "The value for the tag", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The ``AWS::ApiGateway::Deployment`` resource deploys an API Gateway ``RestApi`` resource to a stage so that clients can call the API over the internet. The stage acts as an environment.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST", - "apigateway:PATCH", - "apigateway:PUT", - "apigateway:GET" - ] - }, - "delete": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "RestApiId": { - "$ref": "resource-schema.json#/properties/RestApiId" - } - }, - "required": [ - "RestApiId" - ] - }, - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:PATCH", - "apigateway:GET", - "apigateway:PUT", - "apigateway:DELETE" - ] - } - }, - "primaryIdentifier": [ - "/properties/DeploymentId", - "/properties/RestApiId" - ], - "properties": { - "DeploymentCanarySettings": { - "$ref": "#/definitions/DeploymentCanarySettings", - "description": "The input configuration for a canary deployment." - }, - "DeploymentId": { - "description": "", - "type": "string" - }, - "Description": { - "description": "The description for the Deployment resource to create.", - "type": "string" - }, - "RestApiId": { - "description": "The string identifier of the associated RestApi.", - "type": "string" - }, - "StageDescription": { - "$ref": "#/definitions/StageDescription", - "description": "The description of the Stage resource for the Deployment resource to create. To specify a stage description, you must also provide a stage name." - }, - "StageName": { - "description": "The name of the Stage resource for the Deployment resource to create.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/DeploymentId" - ], - "required": [ - "RestApiId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ApiGateway::Deployment", - "writeOnlyProperties": [ - "/properties/StageName", - "/properties/StageDescription", - "/properties/DeploymentCanarySettings" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DeploymentCanarySettings", + "/properties/RestApiId" + ], + "definitions": { + "AccessLogSetting": { + "additionalProperties": false, + "description": "The ``AccessLogSetting`` property type specifies settings for logging access in this stage.\n ``AccessLogSetting`` is a property of the [StageDescription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html) property type.", + "properties": { + "DestinationArn": { + "description": "", + "type": "string" + }, + "Format": { + "description": "", + "type": "string" + } + }, + "type": "object" + }, + "CanarySetting": { + "additionalProperties": false, + "description": "The ``CanarySetting`` property type specifies settings for the canary deployment in this stage.\n ``CanarySetting`` is a property of the [StageDescription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html) property type.", + "properties": { + "PercentTraffic": { + "description": "", + "type": "number" + }, + "StageVariableOverrides": { + "additionalProperties": false, + "description": "", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "UseStageCache": { + "description": "", + "type": "boolean" + } + }, + "type": "object" + }, + "DeploymentCanarySettings": { + "additionalProperties": false, + "description": "The ``DeploymentCanarySettings`` property type specifies settings for the canary deployment.", + "properties": { + "PercentTraffic": { + "description": "", + "type": "number" + }, + "StageVariableOverrides": { + "additionalProperties": false, + "description": "", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "UseStageCache": { + "description": "", + "type": "boolean" + } + }, + "type": "object" + }, + "MethodSetting": { + "additionalProperties": false, + "description": "The ``MethodSetting`` property type configures settings for all methods in a stage.\n The ``MethodSettings`` property of the [Amazon API Gateway Deployment StageDescription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html) property type contains a list of ``MethodSetting`` property types.", + "properties": { + "CacheDataEncrypted": { + "description": "", + "type": "boolean" + }, + "CacheTtlInSeconds": { + "description": "", + "type": "integer" + }, + "CachingEnabled": { + "description": "", + "type": "boolean" + }, + "DataTraceEnabled": { + "description": "", + "type": "boolean" + }, + "HttpMethod": { + "description": "The HTTP method.", + "type": "string" + }, + "LoggingLevel": { + "description": "", + "type": "string" + }, + "MetricsEnabled": { + "description": "", + "type": "boolean" + }, + "ResourcePath": { + "description": "The resource path for this method. Forward slashes (``/``) are encoded as ``~1`` and the initial slash must include a forward slash. For example, the path value ``/resource/subresource`` must be encoded as ``/~1resource~1subresource``. To specify the root path, use only a slash (``/``).", + "type": "string" + }, + "ThrottlingBurstLimit": { + "description": "", + "type": "integer" + }, + "ThrottlingRateLimit": { + "description": "", + "type": "number" + } + }, + "type": "object" + }, + "StageDescription": { + "additionalProperties": false, + "description": "``StageDescription`` is a property of the [AWS::ApiGateway::Deployment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-deployment.html) resource that configures a deployment stage.", + "properties": { + "AccessLogSetting": { + "$ref": "#/definitions/AccessLogSetting", + "description": "Specifies settings for logging access in this stage." + }, + "CacheClusterEnabled": { + "description": "", + "type": "boolean" + }, + "CacheClusterSize": { + "description": "The size of the stage's cache cluster. For more information, see [cacheClusterSize](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateStage.html#apigw-CreateStage-request-cacheClusterSize) in the *API Gateway API Reference*.", + "type": "string" + }, + "CacheDataEncrypted": { + "description": "Indicates whether the cached responses are encrypted.", + "type": "boolean" + }, + "CacheTtlInSeconds": { + "description": "The time-to-live (TTL) period, in seconds, that specifies how long API Gateway caches responses.", + "type": "integer" + }, + "CachingEnabled": { + "description": "Indicates whether responses are cached and returned for requests. You must enable a cache cluster on the stage to cache responses. For more information, see [Enable API Gateway Caching in a Stage to Enhance API Performance](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html) in the *API Gateway Developer Guide*.", + "type": "boolean" + }, + "CanarySetting": { + "$ref": "#/definitions/CanarySetting", + "description": "Specifies settings for the canary deployment in this stage." + }, + "ClientCertificateId": { + "description": "The identifier of the client certificate that API Gateway uses to call your integration endpoints in the stage.", + "type": "string" + }, + "DataTraceEnabled": { + "description": "Indicates whether data trace logging is enabled for methods in the stage. API Gateway pushes these logs to Amazon CloudWatch Logs.", + "type": "boolean" + }, + "Description": { + "description": "A description of the purpose of the stage.", + "type": "string" + }, + "DocumentationVersion": { + "description": "The version identifier of the API documentation snapshot.", + "type": "string" + }, + "LoggingLevel": { + "description": "The logging level for this method. For valid values, see the ``loggingLevel`` property of the [MethodSetting](https://docs.aws.amazon.com/apigateway/latest/api/API_MethodSetting.html) resource in the *Amazon API Gateway API Reference*.", + "type": "string" + }, + "MethodSettings": { + "description": "Configures settings for all of the stage's methods.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MethodSetting" + }, + "type": "array", + "uniqueItems": true + }, + "MetricsEnabled": { + "description": "Indicates whether Amazon CloudWatch metrics are enabled for methods in the stage.", + "type": "boolean" + }, + "Tags": { + "description": "An array of arbitrary tags (key-value pairs) to associate with the stage.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "ThrottlingBurstLimit": { + "description": "The target request burst rate limit. This allows more requests through for a period of time than the target rate limit. For more information, see [Manage API Request Throttling](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-request-throttling.html) in the *API Gateway Developer Guide*.", + "type": "integer" + }, + "ThrottlingRateLimit": { + "description": "The target request steady-state rate limit. For more information, see [Manage API Request Throttling](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-request-throttling.html) in the *API Gateway Developer Guide*.", + "type": "number" + }, + "TracingEnabled": { + "description": "Specifies whether active tracing with X-ray is enabled for this stage.\n For more information, see [Trace API Gateway API Execution with X-Ray](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-xray.html) in the *API Gateway Developer Guide*.", + "type": "boolean" + }, + "Variables": { + "additionalProperties": false, + "description": "A map that defines the stage variables. Variable names must consist of alphanumeric characters, and the values must match the following regular expression: ``[A-Za-z0-9-._~:/?#&=,]+``.", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "", + "properties": { + "Key": { + "description": "The key name of the tag", + "type": "string" + }, + "Value": { + "description": "The value for the tag", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The ``AWS::ApiGateway::Deployment`` resource deploys an API Gateway ``RestApi`` resource to a stage so that clients can call the API over the internet. The stage acts as an environment.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:PATCH", + "apigateway:PUT", + "apigateway:GET" + ] + }, + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "RestApiId": { + "$ref": "resource-schema.json#/properties/RestApiId" + } + }, + "required": [ + "RestApiId" + ] + }, + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:GET", + "apigateway:PUT", + "apigateway:DELETE" + ] + } + }, + "primaryIdentifier": [ + "/properties/DeploymentId", + "/properties/RestApiId" + ], + "properties": { + "DeploymentCanarySettings": { + "$ref": "#/definitions/DeploymentCanarySettings", + "description": "" + }, + "DeploymentId": { + "description": "", + "type": "string" + }, + "Description": { + "description": "", + "type": "string" + }, + "RestApiId": { + "description": "", + "type": "string" + }, + "StageDescription": { + "$ref": "#/definitions/StageDescription", + "description": "The description of the Stage resource for the Deployment resource to create. To specify a stage description, you must also provide a stage name." + }, + "StageName": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DeploymentId" + ], + "required": [ + "RestApiId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ApiGateway::Deployment", + "writeOnlyProperties": [ + "/properties/StageName", + "/properties/StageDescription", + "/properties/DeploymentCanarySettings" + ] +} diff --git a/src/schema/aws-apigateway-documentationpart.json b/src/schema/aws-apigateway-documentationpart.json index 400f4c31..3ecf7901 100644 --- a/src/schema/aws-apigateway-documentationpart.json +++ b/src/schema/aws-apigateway-documentationpart.json @@ -1,125 +1,125 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Location", - "/properties/RestApiId" - ], - "definitions": { - "Location": { - "additionalProperties": false, - "description": "The ``Location`` property specifies the location of the Amazon API Gateway API entity that the documentation applies to. ``Location`` is a property of the [AWS::ApiGateway::DocumentationPart](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationpart.html) resource.\n For more information about each property, including constraints and valid values, see [DocumentationPart](https://docs.aws.amazon.com/apigateway/latest/api/API_DocumentationPartLocation.html) in the *Amazon API Gateway REST API Reference*.", - "properties": { - "Method": { - "description": "The HTTP verb of a method. It is a valid field for the API entity types of ``METHOD``, ``PATH_PARAMETER``, ``QUERY_PARAMETER``, ``REQUEST_HEADER``, ``REQUEST_BODY``, ``RESPONSE``, ``RESPONSE_HEADER``, and ``RESPONSE_BODY``. The default value is ``*`` for any method. When an applicable child entity inherits the content of an entity of the same type with more general specifications of the other ``location`` attributes, the child entity's ``method`` attribute must match that of the parent entity exactly.", - "type": "string" - }, - "Name": { - "description": "The name of the targeted API entity. It is a valid and required field for the API entity types of ``AUTHORIZER``, ``MODEL``, ``PATH_PARAMETER``, ``QUERY_PARAMETER``, ``REQUEST_HEADER``, ``REQUEST_BODY`` and ``RESPONSE_HEADER``. It is an invalid field for any other entity type.", - "type": "string" - }, - "Path": { - "description": "The URL path of the target. It is a valid field for the API entity types of ``RESOURCE``, ``METHOD``, ``PATH_PARAMETER``, ``QUERY_PARAMETER``, ``REQUEST_HEADER``, ``REQUEST_BODY``, ``RESPONSE``, ``RESPONSE_HEADER``, and ``RESPONSE_BODY``. The default value is ``/`` for the root resource. When an applicable child entity inherits the content of another entity of the same type with more general specifications of the other ``location`` attributes, the child entity's ``path`` attribute must match that of the parent entity as a prefix.", - "type": "string" - }, - "StatusCode": { - "description": "The HTTP status code of a response. It is a valid field for the API entity types of ``RESPONSE``, ``RESPONSE_HEADER``, and ``RESPONSE_BODY``. The default value is ``*`` for any status code. When an applicable child entity inherits the content of an entity of the same type with more general specifications of the other ``location`` attributes, the child entity's ``statusCode`` attribute must match that of the parent entity exactly.", - "type": "string" - }, - "Type": { - "description": "The type of API entity to which the documentation content applies. Valid values are ``API``, ``AUTHORIZER``, ``MODEL``, ``RESOURCE``, ``METHOD``, ``PATH_PARAMETER``, ``QUERY_PARAMETER``, ``REQUEST_HEADER``, ``REQUEST_BODY``, ``RESPONSE``, ``RESPONSE_HEADER``, and ``RESPONSE_BODY``. Content inheritance does not apply to any entity of the ``API``, ``AUTHORIZER``, ``METHOD``, ``MODEL``, ``REQUEST_BODY``, or ``RESOURCE`` type.", - "enum": [ - "API", - "AUTHORIZER", - "MODEL", - "RESOURCE", - "METHOD", - "PATH_PARAMETER", - "QUERY_PARAMETER", - "REQUEST_HEADER", - "REQUEST_BODY", - "RESPONSE", - "RESPONSE_HEADER", - "RESPONSE_BODY" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The ``AWS::ApiGateway::DocumentationPart`` resource creates a documentation part for an API. For more information, see [Representation of API Documentation in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-documenting-api-content-representation.html) in the *API Gateway Developer Guide*.", - "handlers": { - "create": { - "permissions": [ - "apigateway:GET", - "apigateway:POST" - ] - }, - "delete": { - "permissions": [ - "apigateway:DELETE" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "RestApiId": { - "$ref": "resource-schema.json#/properties/RestApiId" - } - }, - "required": [ - "RestApiId" - ] - }, - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:GET", - "apigateway:PATCH" - ] - } - }, - "primaryIdentifier": [ - "/properties/DocumentationPartId", - "/properties/RestApiId" - ], - "properties": { - "DocumentationPartId": { - "description": "", - "type": "string" - }, - "Location": { - "$ref": "#/definitions/Location", - "description": "The location of the targeted API entity of the to-be-created documentation part." - }, - "Properties": { - "description": "The new documentation content map of the targeted API entity. Enclosed key-value pairs are API-specific, but only OpenAPI-compliant key-value pairs can be exported and, hence, published.", - "type": "string" - }, - "RestApiId": { - "description": "The string identifier of the associated RestApi.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/DocumentationPartId" - ], - "required": [ - "Location", - "Properties", - "RestApiId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ApiGateway::DocumentationPart" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Location", + "/properties/RestApiId" + ], + "definitions": { + "Location": { + "additionalProperties": false, + "description": "The ``Location`` property specifies the location of the Amazon API Gateway API entity that the documentation applies to. ``Location`` is a property of the [AWS::ApiGateway::DocumentationPart](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationpart.html) resource.\n For more information about each property, including constraints and valid values, see [DocumentationPart](https://docs.aws.amazon.com/apigateway/latest/api/API_DocumentationPartLocation.html) in the *Amazon API Gateway REST API Reference*.", + "properties": { + "Method": { + "description": "", + "type": "string" + }, + "Name": { + "description": "", + "type": "string" + }, + "Path": { + "description": "", + "type": "string" + }, + "StatusCode": { + "description": "", + "type": "string" + }, + "Type": { + "description": "", + "enum": [ + "API", + "AUTHORIZER", + "MODEL", + "RESOURCE", + "METHOD", + "PATH_PARAMETER", + "QUERY_PARAMETER", + "REQUEST_HEADER", + "REQUEST_BODY", + "RESPONSE", + "RESPONSE_HEADER", + "RESPONSE_BODY" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The ``AWS::ApiGateway::DocumentationPart`` resource creates a documentation part for an API. For more information, see [Representation of API Documentation in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-documenting-api-content-representation.html) in the *API Gateway Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "apigateway:GET", + "apigateway:POST" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "RestApiId": { + "$ref": "resource-schema.json#/properties/RestApiId" + } + }, + "required": [ + "RestApiId" + ] + }, + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:GET", + "apigateway:PATCH" + ] + } + }, + "primaryIdentifier": [ + "/properties/DocumentationPartId", + "/properties/RestApiId" + ], + "properties": { + "DocumentationPartId": { + "description": "", + "type": "string" + }, + "Location": { + "$ref": "#/definitions/Location", + "description": "" + }, + "Properties": { + "description": "", + "type": "string" + }, + "RestApiId": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DocumentationPartId" + ], + "required": [ + "Location", + "Properties", + "RestApiId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ApiGateway::DocumentationPart" +} diff --git a/src/schema/aws-apigateway-documentationversion.json b/src/schema/aws-apigateway-documentationversion.json index a842dc26..6d58d308 100644 --- a/src/schema/aws-apigateway-documentationversion.json +++ b/src/schema/aws-apigateway-documentationversion.json @@ -1,77 +1,77 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DocumentationVersion", - "/properties/RestApiId" - ], - "definitions": {}, - "description": "The ``AWS::ApiGateway::DocumentationVersion`` resource creates a snapshot of the documentation for an API. For more information, see [Representation of API Documentation in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-documenting-api-content-representation.html) in the *API Gateway Developer Guide*.", - "handlers": { - "create": { - "permissions": [ - "apigateway:GET", - "apigateway:POST" - ] - }, - "delete": { - "permissions": [ - "apigateway:DELETE" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "RestApiId": { - "$ref": "resource-schema.json#/properties/RestApiId" - } - }, - "required": [ - "RestApiId" - ] - }, - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:GET", - "apigateway:PATCH" - ] - } - }, - "primaryIdentifier": [ - "/properties/DocumentationVersion", - "/properties/RestApiId" - ], - "properties": { - "Description": { - "description": "A description about the new documentation snapshot.", - "type": "string" - }, - "DocumentationVersion": { - "description": "The version identifier of the to-be-updated documentation version.", - "minLength": 1, - "type": "string" - }, - "RestApiId": { - "description": "The string identifier of the associated RestApi.", - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DocumentationVersion", - "RestApiId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ApiGateway::DocumentationVersion" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DocumentationVersion", + "/properties/RestApiId" + ], + "definitions": {}, + "description": "The ``AWS::ApiGateway::DocumentationVersion`` resource creates a snapshot of the documentation for an API. For more information, see [Representation of API Documentation in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-documenting-api-content-representation.html) in the *API Gateway Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "apigateway:GET", + "apigateway:POST" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "RestApiId": { + "$ref": "resource-schema.json#/properties/RestApiId" + } + }, + "required": [ + "RestApiId" + ] + }, + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:GET", + "apigateway:PATCH" + ] + } + }, + "primaryIdentifier": [ + "/properties/DocumentationVersion", + "/properties/RestApiId" + ], + "properties": { + "Description": { + "description": "", + "type": "string" + }, + "DocumentationVersion": { + "description": "", + "minLength": 1, + "type": "string" + }, + "RestApiId": { + "description": "", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DocumentationVersion", + "RestApiId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ApiGateway::DocumentationVersion" +} diff --git a/src/schema/aws-apigateway-domainname.json b/src/schema/aws-apigateway-domainname.json index 605ada0c..4b57bfee 100644 --- a/src/schema/aws-apigateway-domainname.json +++ b/src/schema/aws-apigateway-domainname.json @@ -1,131 +1,139 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainName" - ], - "definitions": { - "EndpointConfiguration": { - "additionalProperties": false, - "properties": { - "Types": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "MutualTlsAuthentication": { - "additionalProperties": false, - "properties": { - "TruststoreUri": { - "type": "string" - }, - "TruststoreVersion": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ApiGateway::DomainName.", - "handlers": { - "create": { - "permissions": [ - "apigateway:*" - ] - }, - "delete": { - "permissions": [ - "apigateway:*" - ] - }, - "list": { - "permissions": [ - "apigateway:*" - ] - }, - "read": { - "permissions": [ - "apigateway:*" - ] - }, - "update": { - "permissions": [ - "apigateway:*" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainName" - ], - "properties": { - "CertificateArn": { - "type": "string" - }, - "DistributionDomainName": { - "type": "string" - }, - "DistributionHostedZoneId": { - "type": "string" - }, - "DomainName": { - "type": "string" - }, - "EndpointConfiguration": { - "$ref": "#/definitions/EndpointConfiguration" - }, - "MutualTlsAuthentication": { - "$ref": "#/definitions/MutualTlsAuthentication" - }, - "OwnershipVerificationCertificateArn": { - "type": "string" - }, - "RegionalCertificateArn": { - "type": "string" - }, - "RegionalDomainName": { - "type": "string" - }, - "RegionalHostedZoneId": { - "type": "string" - }, - "SecurityPolicy": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/RegionalHostedZoneId", - "/properties/DistributionDomainName", - "/properties/RegionalDomainName", - "/properties/DistributionHostedZoneId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ApiGateway::DomainName" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainName" + ], + "definitions": { + "EndpointConfiguration": { + "additionalProperties": false, + "properties": { + "IpAddressType": { + "type": "string" + }, + "Types": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "MutualTlsAuthentication": { + "additionalProperties": false, + "properties": { + "TruststoreUri": { + "type": "string" + }, + "TruststoreVersion": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ApiGateway::DomainName.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:PUT", + "apigateway:GET" + ] + }, + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE" + ] + }, + "list": { + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:GET", + "apigateway:PUT", + "apigateway:PATCH" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainName" + ], + "properties": { + "CertificateArn": { + "type": "string" + }, + "DistributionDomainName": { + "type": "string" + }, + "DistributionHostedZoneId": { + "type": "string" + }, + "DomainName": { + "type": "string" + }, + "EndpointConfiguration": { + "$ref": "#/definitions/EndpointConfiguration" + }, + "MutualTlsAuthentication": { + "$ref": "#/definitions/MutualTlsAuthentication" + }, + "OwnershipVerificationCertificateArn": { + "type": "string" + }, + "RegionalCertificateArn": { + "type": "string" + }, + "RegionalDomainName": { + "type": "string" + }, + "RegionalHostedZoneId": { + "type": "string" + }, + "SecurityPolicy": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/RegionalHostedZoneId", + "/properties/DistributionDomainName", + "/properties/RegionalDomainName", + "/properties/DistributionHostedZoneId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ApiGateway::DomainName" +} diff --git a/src/schema/aws-apigateway-domainnameaccessassociation.json b/src/schema/aws-apigateway-domainnameaccessassociation.json new file mode 100644 index 00000000..e122ad8a --- /dev/null +++ b/src/schema/aws-apigateway-domainnameaccessassociation.json @@ -0,0 +1,106 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainNameArn", + "/properties/AccessAssociationSource", + "/properties/AccessAssociationSourceType", + "/properties/Tags" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ApiGateway::DomainNameAccessAssociation.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:GET" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE", + "apigateway:GET" + ] + }, + "list": { + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainNameAccessAssociationArn" + ], + "properties": { + "AccessAssociationSource": { + "description": "The source of the domain name access association resource.", + "type": "string" + }, + "AccessAssociationSourceType": { + "description": "The source type of the domain name access association resource.", + "enum": [ + "VPCE" + ], + "type": "string" + }, + "DomainNameAccessAssociationArn": { + "description": "The amazon resource name (ARN) of the domain name access association resource.", + "type": "string" + }, + "DomainNameArn": { + "description": "The amazon resource name (ARN) of the domain name resource.", + "type": "string" + }, + "Tags": { + "description": "An array of arbitrary tags (key-value pairs) to associate with the domainname access association.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/DomainNameAccessAssociationArn" + ], + "required": [ + "DomainNameArn", + "AccessAssociationSource", + "AccessAssociationSourceType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "apigateway:POST", + "apigateway:DELETE", + "apigateway:GET" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::ApiGateway::DomainNameAccessAssociation" +} diff --git a/src/schema/aws-apigateway-domainnamev2.json b/src/schema/aws-apigateway-domainnamev2.json new file mode 100644 index 00000000..64563f1a --- /dev/null +++ b/src/schema/aws-apigateway-domainnamev2.json @@ -0,0 +1,125 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainName", + "/properties/SecurityPolicy", + "/properties/EndpointConfiguration" + ], + "definitions": { + "EndpointConfiguration": { + "additionalProperties": false, + "properties": { + "Types": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ApiGateway::DomainNameV2.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:GET", + "apigateway:UpdateDomainNamePolicy" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE", + "apigateway:GET", + "apigateway:UpdateDomainNamePolicy" + ] + }, + "list": { + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:GET", + "apigateway:PUT", + "apigateway:PATCH", + "apigateway:UpdateDomainNamePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainNameArn" + ], + "properties": { + "CertificateArn": { + "type": "string" + }, + "DomainName": { + "type": "string" + }, + "DomainNameArn": { + "description": "The amazon resource name (ARN) of the domain name resource.", + "type": "string" + }, + "DomainNameId": { + "type": "string" + }, + "EndpointConfiguration": { + "$ref": "#/definitions/EndpointConfiguration" + }, + "Policy": { + "type": [ + "object", + "string" + ] + }, + "SecurityPolicy": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/DomainNameId", + "/properties/DomainNameArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "apigateway:PUT", + "apigateway:PATCH", + "apigateway:DELETE", + "apigateway:GET", + "apigateway:POST" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ApiGateway::DomainNameV2" +} diff --git a/src/schema/aws-apigateway-gatewayresponse.json b/src/schema/aws-apigateway-gatewayresponse.json index 9e882a9c..e114720e 100644 --- a/src/schema/aws-apigateway-gatewayresponse.json +++ b/src/schema/aws-apigateway-gatewayresponse.json @@ -1,101 +1,101 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResponseType", - "/properties/RestApiId" - ], - "description": "The ``AWS::ApiGateway::GatewayResponse`` resource creates a gateway response for your API. For more information, see [API Gateway Responses](https://docs.aws.amazon.com/apigateway/latest/developerguide/customize-gateway-responses.html#api-gateway-gatewayResponse-definition) in the *API Gateway Developer Guide*.", - "handlers": { - "create": { - "permissions": [ - "apigateway:PUT", - "apigateway:GET" - ] - }, - "delete": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "RestApiId": { - "$ref": "resource-schema.json#/properties/RestApiId" - } - }, - "required": [ - "RestApiId" - ] - }, - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:GET", - "apigateway:PUT" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "description": "", - "type": "string" - }, - "ResponseParameters": { - "additionalProperties": false, - "description": "Response parameters (paths, query strings and headers) of the GatewayResponse as a string-to-string map of key-value pairs.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "ResponseTemplates": { - "additionalProperties": false, - "description": "Response templates of the GatewayResponse as a string-to-string map of key-value pairs.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "ResponseType": { - "description": "The response type of the associated GatewayResponse.", - "type": "string" - }, - "RestApiId": { - "description": "The string identifier of the associated RestApi.", - "type": "string" - }, - "StatusCode": { - "description": "The HTTP status code for this GatewayResponse.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ResponseType", - "RestApiId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ApiGateway::GatewayResponse" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResponseType", + "/properties/RestApiId" + ], + "description": "The ``AWS::ApiGateway::GatewayResponse`` resource creates a gateway response for your API. For more information, see [API Gateway Responses](https://docs.aws.amazon.com/apigateway/latest/developerguide/customize-gateway-responses.html#api-gateway-gatewayResponse-definition) in the *API Gateway Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "apigateway:PUT", + "apigateway:GET" + ] + }, + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "RestApiId": { + "$ref": "resource-schema.json#/properties/RestApiId" + } + }, + "required": [ + "RestApiId" + ] + }, + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:GET", + "apigateway:PUT" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "", + "type": "string" + }, + "ResponseParameters": { + "additionalProperties": false, + "description": "", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "ResponseTemplates": { + "additionalProperties": false, + "description": "", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "ResponseType": { + "description": "", + "type": "string" + }, + "RestApiId": { + "description": "", + "type": "string" + }, + "StatusCode": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ResponseType", + "RestApiId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ApiGateway::GatewayResponse" +} diff --git a/src/schema/aws-apigateway-method.json b/src/schema/aws-apigateway-method.json index 5c18070c..dc77e777 100644 --- a/src/schema/aws-apigateway-method.json +++ b/src/schema/aws-apigateway-method.json @@ -1,322 +1,322 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RestApiId", - "/properties/ResourceId", - "/properties/HttpMethod" - ], - "definitions": { - "Integration": { - "additionalProperties": false, - "description": "``Integration`` is a property of the [AWS::ApiGateway::Method](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html) resource that specifies information about the target backend that a method calls.", - "properties": { - "CacheKeyParameters": { - "description": "A list of request parameters whose values API Gateway caches. To be valid values for ``cacheKeyParameters``, these parameters must also be specified for Method ``requestParameters``.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "CacheNamespace": { - "description": "Specifies a group of related cached parameters. By default, API Gateway uses the resource ID as the ``cacheNamespace``. You can specify the same ``cacheNamespace`` across resources to return the same cached data for requests to different resources.", - "type": "string" - }, - "ConnectionId": { - "description": "The ID of the VpcLink used for the integration when ``connectionType=VPC_LINK`` and undefined, otherwise.", - "type": "string" - }, - "ConnectionType": { - "description": "The type of the network connection to the integration endpoint. The valid value is ``INTERNET`` for connections through the public routable internet or ``VPC_LINK`` for private connections between API Gateway and a network load balancer in a VPC. The default value is ``INTERNET``.", - "enum": [ - "INTERNET", - "VPC_LINK" - ], - "type": "string" - }, - "ContentHandling": { - "description": "Specifies how to handle request payload content type conversions. Supported values are ``CONVERT_TO_BINARY`` and ``CONVERT_TO_TEXT``, with the following behaviors:\n If this property is not defined, the request payload will be passed through from the method request to integration request without modification, provided that the ``passthroughBehavior`` is configured to support payload pass-through.", - "enum": [ - "CONVERT_TO_BINARY", - "CONVERT_TO_TEXT" - ], - "type": "string" - }, - "Credentials": { - "description": "Specifies the credentials required for the integration, if any. For AWS integrations, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify the string ``arn:aws:iam::\\*:user/\\*``. To use resource-based permissions on supported AWS services, specify null.", - "type": "string" - }, - "IntegrationHttpMethod": { - "description": "Specifies the integration's HTTP method type. For the Type property, if you specify ``MOCK``, this property is optional. For Lambda integrations, you must set the integration method to ``POST``. For all other types, you must specify this property.", - "type": "string" - }, - "IntegrationResponses": { - "description": "Specifies the integration's responses.", - "items": { - "$ref": "#/definitions/IntegrationResponse" - }, - "type": "array", - "uniqueItems": true - }, - "PassthroughBehavior": { - "description": "Specifies how the method request body of an unmapped content type will be passed through the integration request to the back end without transformation. A content type is unmapped if no mapping template is defined in the integration or the content type does not match any of the mapped content types, as specified in ``requestTemplates``. The valid value is one of the following: ``WHEN_NO_MATCH``: passes the method request body through the integration request to the back end without transformation when the method request content type does not match any content type associated with the mapping templates defined in the integration request. ``WHEN_NO_TEMPLATES``: passes the method request body through the integration request to the back end without transformation when no mapping template is defined in the integration request. If a template is defined when this option is selected, the method request of an unmapped content-type will be rejected with an HTTP 415 Unsupported Media Type response. ``NEVER``: rejects the method request with an HTTP 415 Unsupported Media Type response when either the method request content type does not match any content type associated with the mapping templates defined in the integration request or no mapping template is defined in the integration request.", - "enum": [ - "WHEN_NO_MATCH", - "WHEN_NO_TEMPLATES", - "NEVER" - ], - "type": "string" - }, - "RequestParameters": { - "additionalProperties": false, - "description": "A key-value map specifying request parameters that are passed from the method request to the back end. The key is an integration request parameter name and the associated value is a method request parameter value or static value that must be enclosed within single quotes and pre-encoded as required by the back end. The method request parameter value must match the pattern of ``method.request.{location}.{name}``, where ``location`` is ``querystring``, ``path``, or ``header`` and ``name`` must be a valid and unique method request parameter name.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "RequestTemplates": { - "additionalProperties": false, - "description": "Represents a map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client. The content type value is the key in this map, and the template (as a String) is the value.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "TimeoutInMillis": { - "description": "Custom timeout between 50 and 29,000 milliseconds. The default value is 29,000 milliseconds or 29 seconds.", - "minimum": 50, - "type": "integer" - }, - "Type": { - "description": "Specifies an API method integration type. The valid value is one of the following:\n For the HTTP and HTTP proxy integrations, each integration can specify a protocol (``http/https``), port and path. Standard 80 and 443 ports are supported as well as custom ports above 1024. An HTTP or HTTP proxy integration with a ``connectionType`` of ``VPC_LINK`` is referred to as a private integration and uses a VpcLink to connect API Gateway to a network load balancer of a VPC.", - "enum": [ - "AWS", - "AWS_PROXY", - "HTTP", - "HTTP_PROXY", - "MOCK" - ], - "type": "string" - }, - "Uri": { - "description": "Specifies Uniform Resource Identifier (URI) of the integration endpoint.\n For ``HTTP`` or ``HTTP_PROXY`` integrations, the URI must be a fully formed, encoded HTTP(S) URL according to the RFC-3986 specification for standard integrations. If ``connectionType`` is ``VPC_LINK`` specify the Network Load Balancer DNS name. For ``AWS`` or ``AWS_PROXY`` integrations, the URI is of the form ``arn:aws:apigateway:{region}:{subdomain.service|service}:path|action/{service_api}``. Here, {Region} is the API Gateway region (e.g., us-east-1); {service} is the name of the integrated AWS service (e.g., s3); and {subdomain} is a designated subdomain supported by certain AWS service for fast host-name lookup. action can be used for an AWS service action-based API, using an Action={name}&{p1}={v1}&p2={v2}... query string. The ensuing {service_api} refers to a supported action {name} plus any required input parameters. Alternatively, path can be used for an AWS service path-based API. The ensuing service_api refers to the path to an AWS service resource, including the region of the integrated AWS service, if applicable. For example, for integration with the S3 API of GetObject, the uri can be either ``arn:aws:apigateway:us-west-2:s3:action/GetObject&Bucket={bucket}&Key={key}`` or ``arn:aws:apigateway:us-west-2:s3:path/{bucket}/{key}``", - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "IntegrationResponse": { - "additionalProperties": false, - "description": "``IntegrationResponse`` is a property of the [Amazon API Gateway Method Integration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html) property type that specifies the response that API Gateway sends after a method's backend finishes processing a request.", - "properties": { - "ContentHandling": { - "description": "Specifies how to handle response payload content type conversions. Supported values are ``CONVERT_TO_BINARY`` and ``CONVERT_TO_TEXT``, with the following behaviors:\n If this property is not defined, the response payload will be passed through from the integration response to the method response without modification.", - "enum": [ - "CONVERT_TO_BINARY", - "CONVERT_TO_TEXT" - ], - "type": "string" - }, - "ResponseParameters": { - "additionalProperties": false, - "description": "A key-value map specifying response parameters that are passed to the method response from the back end. The key is a method response header parameter name and the mapped value is an integration response header value, a static value enclosed within a pair of single quotes, or a JSON expression from the integration response body. The mapping key must match the pattern of ``method.response.header.{name}``, where ``name`` is a valid and unique header name. The mapped non-static value must match the pattern of ``integration.response.header.{name}`` or ``integration.response.body.{JSON-expression}``, where ``name`` is a valid and unique response header name and ``JSON-expression`` is a valid JSON expression without the ``$`` prefix.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "ResponseTemplates": { - "additionalProperties": false, - "description": "Specifies the templates used to transform the integration response body. Response templates are represented as a key/value map, with a content-type as the key and a template as the value.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "SelectionPattern": { - "description": "Specifies the regular expression (regex) pattern used to choose an integration response based on the response from the back end. For example, if the success response returns nothing and the error response returns some string, you could use the ``.+`` regex to match error response. However, make sure that the error response does not contain any newline (``\\n``) character in such cases. If the back end is an LAMlong function, the LAMlong function error header is matched. For all other HTTP and AWS back ends, the HTTP status code is matched.", - "type": "string" - }, - "StatusCode": { - "description": "Specifies the status code that is used to map the integration response to an existing MethodResponse.", - "type": "string" - } - }, - "required": [ - "StatusCode" - ], - "type": "object" - }, - "MethodResponse": { - "additionalProperties": false, - "description": "Represents a method response of a given HTTP status code returned to the client. The method response is passed from the back end through the associated integration response that can be transformed using a mapping template.", - "properties": { - "ResponseModels": { - "additionalProperties": false, - "description": "Specifies the Model resources used for the response's content-type. Response models are represented as a key/value map, with a content-type as the key and a Model name as the value.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "ResponseParameters": { - "additionalProperties": false, - "description": "A key-value map specifying required or optional response parameters that API Gateway can send back to the caller. A key defines a method response header and the value specifies whether the associated method response header is required or not. The expression of the key must match the pattern ``method.response.header.{name}``, where ``name`` is a valid and unique header name. API Gateway passes certain integration response data to the method response headers specified here according to the mapping you prescribe in the API's IntegrationResponse. The integration response data that can be mapped include an integration response header expressed in ``integration.response.header.{name}``, a static value enclosed within a pair of single quotes (e.g., ``'application/json'``), or a JSON expression from the back-end response payload in the form of ``integration.response.body.{JSON-expression}``, where ``JSON-expression`` is a valid JSON expression without the ``$`` prefix.)", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": [ - "boolean", - "string" - ] - } - }, - "type": "object" - }, - "StatusCode": { - "description": "The method response's status code.", - "type": "string" - } - }, - "required": [ - "StatusCode" - ], - "type": "object" - } - }, - "description": "The ``AWS::ApiGateway::Method`` resource creates API Gateway methods that define the parameters and body that clients must send in their requests.", - "handlers": { - "create": { - "permissions": [ - "apigateway:PUT", - "apigateway:GET", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "apigateway:DELETE" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE", - "apigateway:PUT", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/RestApiId", - "/properties/ResourceId", - "/properties/HttpMethod" - ], - "properties": { - "ApiKeyRequired": { - "description": "A boolean flag specifying whether a valid ApiKey is required to invoke this method.", - "type": "boolean" - }, - "AuthorizationScopes": { - "description": "A list of authorization scopes configured on the method. The scopes are used with a ``COGNITO_USER_POOLS`` authorizer to authorize the method invocation. The authorization works by matching the method scopes against the scopes parsed from the access token in the incoming request. The method invocation is authorized if any method scopes matches a claimed scope in the access token. Otherwise, the invocation is not authorized. When the method scope is configured, the client must provide an access token instead of an identity token for authorization purposes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "AuthorizationType": { - "description": "The method's authorization type. This parameter is required. For valid values, see [Method](https://docs.aws.amazon.com/apigateway/latest/api/API_Method.html) in the *API Gateway API Reference*.\n If you specify the ``AuthorizerId`` property, specify ``CUSTOM`` or ``COGNITO_USER_POOLS`` for this property.", - "type": "string" - }, - "AuthorizerId": { - "description": "The identifier of an authorizer to use on this method. The method's authorization type must be ``CUSTOM`` or ``COGNITO_USER_POOLS``.", - "type": "string" - }, - "HttpMethod": { - "description": "The method's HTTP verb.", - "type": "string" - }, - "Integration": { - "$ref": "#/definitions/Integration", - "description": "Represents an ``HTTP``, ``HTTP_PROXY``, ``AWS``, ``AWS_PROXY``, or Mock integration." - }, - "MethodResponses": { - "description": "Gets a method response associated with a given HTTP status code.", - "items": { - "$ref": "#/definitions/MethodResponse" - }, - "type": "array", - "uniqueItems": true - }, - "OperationName": { - "description": "A human-friendly operation identifier for the method. For example, you can assign the ``operationName`` of ``ListPets`` for the ``GET /pets`` method in the ``PetStore`` example.", - "type": "string" - }, - "RequestModels": { - "additionalProperties": false, - "description": "A key-value map specifying data schemas, represented by Model resources, (as the mapped value) of the request payloads of given content types (as the mapping key).", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "RequestParameters": { - "additionalProperties": false, - "description": "A key-value map defining required or optional method request parameters that can be accepted by API Gateway. A key is a method request parameter name matching the pattern of ``method.request.{location}.{name}``, where ``location`` is ``querystring``, ``path``, or ``header`` and ``name`` is a valid and unique parameter name. The value associated with the key is a Boolean flag indicating whether the parameter is required (``true``) or optional (``false``). The method request parameter names defined here are available in Integration to be mapped to integration request parameters or templates.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": [ - "boolean", - "string" - ] - } - }, - "type": "object" - }, - "RequestValidatorId": { - "description": "The identifier of a RequestValidator for request validation.", - "type": "string" - }, - "ResourceId": { - "description": "The Resource identifier for the MethodResponse resource.", - "type": "string" - }, - "RestApiId": { - "description": "The string identifier of the associated RestApi.", - "type": "string" - } - }, - "required": [ - "RestApiId", - "ResourceId", - "HttpMethod" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ApiGateway::Method" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RestApiId", + "/properties/ResourceId", + "/properties/HttpMethod" + ], + "definitions": { + "Integration": { + "additionalProperties": false, + "description": "``Integration`` is a property of the [AWS::ApiGateway::Method](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html) resource that specifies information about the target backend that a method calls.", + "properties": { + "CacheKeyParameters": { + "description": "", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "CacheNamespace": { + "description": "", + "type": "string" + }, + "ConnectionId": { + "description": "", + "type": "string" + }, + "ConnectionType": { + "description": "", + "enum": [ + "INTERNET", + "VPC_LINK" + ], + "type": "string" + }, + "ContentHandling": { + "description": "", + "enum": [ + "CONVERT_TO_BINARY", + "CONVERT_TO_TEXT" + ], + "type": "string" + }, + "Credentials": { + "description": "", + "type": "string" + }, + "IntegrationHttpMethod": { + "description": "", + "type": "string" + }, + "IntegrationResponses": { + "description": "", + "items": { + "$ref": "#/definitions/IntegrationResponse" + }, + "type": "array", + "uniqueItems": true + }, + "PassthroughBehavior": { + "description": "", + "enum": [ + "WHEN_NO_MATCH", + "WHEN_NO_TEMPLATES", + "NEVER" + ], + "type": "string" + }, + "RequestParameters": { + "additionalProperties": false, + "description": "", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "RequestTemplates": { + "additionalProperties": false, + "description": "", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "TimeoutInMillis": { + "description": "", + "minimum": 50, + "type": "integer" + }, + "Type": { + "description": "", + "enum": [ + "AWS", + "AWS_PROXY", + "HTTP", + "HTTP_PROXY", + "MOCK" + ], + "type": "string" + }, + "Uri": { + "description": "", + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "IntegrationResponse": { + "additionalProperties": false, + "description": "``IntegrationResponse`` is a property of the [Amazon API Gateway Method Integration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html) property type that specifies the response that API Gateway sends after a method's backend finishes processing a request.", + "properties": { + "ContentHandling": { + "description": "", + "enum": [ + "CONVERT_TO_BINARY", + "CONVERT_TO_TEXT" + ], + "type": "string" + }, + "ResponseParameters": { + "additionalProperties": false, + "description": "", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "ResponseTemplates": { + "additionalProperties": false, + "description": "", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "SelectionPattern": { + "description": "", + "type": "string" + }, + "StatusCode": { + "description": "", + "type": "string" + } + }, + "required": [ + "StatusCode" + ], + "type": "object" + }, + "MethodResponse": { + "additionalProperties": false, + "description": "", + "properties": { + "ResponseModels": { + "additionalProperties": false, + "description": "", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "ResponseParameters": { + "additionalProperties": false, + "description": "", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": [ + "boolean", + "string" + ] + } + }, + "type": "object" + }, + "StatusCode": { + "description": "", + "type": "string" + } + }, + "required": [ + "StatusCode" + ], + "type": "object" + } + }, + "description": "The ``AWS::ApiGateway::Method`` resource creates API Gateway methods that define the parameters and body that clients must send in their requests.", + "handlers": { + "create": { + "permissions": [ + "apigateway:PUT", + "apigateway:GET", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE", + "apigateway:PUT", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/RestApiId", + "/properties/ResourceId", + "/properties/HttpMethod" + ], + "properties": { + "ApiKeyRequired": { + "description": "", + "type": "boolean" + }, + "AuthorizationScopes": { + "description": "", + "items": { + "type": "string" + }, + "type": "array" + }, + "AuthorizationType": { + "description": "The method's authorization type. This parameter is required. For valid values, see [Method](https://docs.aws.amazon.com/apigateway/latest/api/API_Method.html) in the *API Gateway API Reference*.\n If you specify the ``AuthorizerId`` property, specify ``CUSTOM`` or ``COGNITO_USER_POOLS`` for this property.", + "type": "string" + }, + "AuthorizerId": { + "description": "", + "type": "string" + }, + "HttpMethod": { + "description": "", + "type": "string" + }, + "Integration": { + "$ref": "#/definitions/Integration", + "description": "" + }, + "MethodResponses": { + "description": "", + "items": { + "$ref": "#/definitions/MethodResponse" + }, + "type": "array", + "uniqueItems": true + }, + "OperationName": { + "description": "", + "type": "string" + }, + "RequestModels": { + "additionalProperties": false, + "description": "", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "RequestParameters": { + "additionalProperties": false, + "description": "", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": [ + "boolean", + "string" + ] + } + }, + "type": "object" + }, + "RequestValidatorId": { + "description": "", + "type": "string" + }, + "ResourceId": { + "description": "", + "type": "string" + }, + "RestApiId": { + "description": "", + "type": "string" + } + }, + "required": [ + "RestApiId", + "ResourceId", + "HttpMethod" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ApiGateway::Method" +} diff --git a/src/schema/aws-apigateway-model.json b/src/schema/aws-apigateway-model.json index ff4e1068..7590e21f 100644 --- a/src/schema/aws-apigateway-model.json +++ b/src/schema/aws-apigateway-model.json @@ -1,86 +1,86 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ContentType", - "/properties/Name", - "/properties/RestApiId" - ], - "description": "The ``AWS::ApiGateway::Model`` resource defines the structure of a request or response payload for an API method.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST", - "apigateway:GET" - ] - }, - "delete": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "RestApiId": { - "$ref": "resource-schema.json#/properties/RestApiId" - } - }, - "required": [ - "RestApiId" - ] - }, - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:PATCH", - "apigateway:GET" - ] - } - }, - "primaryIdentifier": [ - "/properties/RestApiId", - "/properties/Name" - ], - "properties": { - "ContentType": { - "description": "The content-type for the model.", - "type": "string" - }, - "Description": { - "description": "The description of the model.", - "type": "string" - }, - "Name": { - "description": "A name for the model. If you don't specify a name, CFN generates a unique physical ID and uses that ID for the model name. For more information, see [Name Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", - "type": "string" - }, - "RestApiId": { - "description": "The string identifier of the associated RestApi.", - "type": "string" - }, - "Schema": { - "description": "The schema for the model. For ``application/json`` models, this should be JSON schema draft 4 model. Do not include \"\\*/\" characters in the description of any properties because such \"\\*/\" characters may be interpreted as the closing marker for comments in some languages, such as Java or JavaScript, causing the installation of your API's SDK generated by API Gateway to fail.", - "type": [ - "object", - "string" - ] - } - }, - "required": [ - "RestApiId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ApiGateway::Model" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ContentType", + "/properties/Name", + "/properties/RestApiId" + ], + "description": "The ``AWS::ApiGateway::Model`` resource defines the structure of a request or response payload for an API method.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:GET" + ] + }, + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "RestApiId": { + "$ref": "resource-schema.json#/properties/RestApiId" + } + }, + "required": [ + "RestApiId" + ] + }, + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:GET" + ] + } + }, + "primaryIdentifier": [ + "/properties/RestApiId", + "/properties/Name" + ], + "properties": { + "ContentType": { + "description": "", + "type": "string" + }, + "Description": { + "description": "", + "type": "string" + }, + "Name": { + "description": "A name for the model. If you don't specify a name, CFN generates a unique physical ID and uses that ID for the model name. For more information, see [Name Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", + "type": "string" + }, + "RestApiId": { + "description": "", + "type": "string" + }, + "Schema": { + "description": "", + "type": [ + "object", + "string" + ] + } + }, + "required": [ + "RestApiId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ApiGateway::Model" +} diff --git a/src/schema/aws-apigateway-requestvalidator.json b/src/schema/aws-apigateway-requestvalidator.json index 87a5b93d..ece75b03 100644 --- a/src/schema/aws-apigateway-requestvalidator.json +++ b/src/schema/aws-apigateway-requestvalidator.json @@ -1,84 +1,84 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/RestApiId" - ], - "description": "The ``AWS::ApiGateway::RequestValidator`` resource sets up basic validation rules for incoming requests to your API. For more information, see [Enable Basic Request Validation for an API in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-request-validation.html) in the *API Gateway Developer Guide*.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST", - "apigateway:GET" - ] - }, - "delete": { - "permissions": [ - "apigateway:DELETE" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "RestApiId": { - "$ref": "resource-schema.json#/properties/RestApiId" - } - }, - "required": [ - "RestApiId" - ] - }, - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:PATCH", - "apigateway:GET" - ] - } - }, - "primaryIdentifier": [ - "/properties/RestApiId", - "/properties/RequestValidatorId" - ], - "properties": { - "Name": { - "description": "The name of this RequestValidator", - "type": "string" - }, - "RequestValidatorId": { - "description": "", - "type": "string" - }, - "RestApiId": { - "description": "The string identifier of the associated RestApi.", - "type": "string" - }, - "ValidateRequestBody": { - "description": "A Boolean flag to indicate whether to validate a request body according to the configured Model schema.", - "type": "boolean" - }, - "ValidateRequestParameters": { - "description": "A Boolean flag to indicate whether to validate request parameters (``true``) or not (``false``).", - "type": "boolean" - } - }, - "readOnlyProperties": [ - "/properties/RequestValidatorId" - ], - "required": [ - "RestApiId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ApiGateway::RequestValidator" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/RestApiId" + ], + "description": "The ``AWS::ApiGateway::RequestValidator`` resource sets up basic validation rules for incoming requests to your API. For more information, see [Enable Basic Request Validation for an API in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-request-validation.html) in the *API Gateway Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:GET" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "RestApiId": { + "$ref": "resource-schema.json#/properties/RestApiId" + } + }, + "required": [ + "RestApiId" + ] + }, + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:GET" + ] + } + }, + "primaryIdentifier": [ + "/properties/RestApiId", + "/properties/RequestValidatorId" + ], + "properties": { + "Name": { + "description": "", + "type": "string" + }, + "RequestValidatorId": { + "description": "", + "type": "string" + }, + "RestApiId": { + "description": "", + "type": "string" + }, + "ValidateRequestBody": { + "description": "", + "type": "boolean" + }, + "ValidateRequestParameters": { + "description": "", + "type": "boolean" + } + }, + "readOnlyProperties": [ + "/properties/RequestValidatorId" + ], + "required": [ + "RestApiId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ApiGateway::RequestValidator" +} diff --git a/src/schema/aws-apigateway-resource.json b/src/schema/aws-apigateway-resource.json index 7df63637..473b265d 100644 --- a/src/schema/aws-apigateway-resource.json +++ b/src/schema/aws-apigateway-resource.json @@ -1,82 +1,82 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PathPart", - "/properties/ParentId", - "/properties/RestApiId" - ], - "description": "The ``AWS::ApiGateway::Resource`` resource creates a resource in an API.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST" - ] - }, - "delete": { - "permissions": [ - "apigateway:DELETE" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "RestApiId": { - "$ref": "resource-schema.json#/properties/RestApiId" - } - }, - "required": [ - "RestApiId" - ] - }, - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:GET", - "apigateway:PATCH" - ] - } - }, - "primaryIdentifier": [ - "/properties/RestApiId", - "/properties/ResourceId" - ], - "properties": { - "ParentId": { - "description": "The parent resource's identifier.", - "type": "string" - }, - "PathPart": { - "description": "The last path segment for this resource.", - "type": "string" - }, - "ResourceId": { - "description": "", - "type": "string" - }, - "RestApiId": { - "description": "The string identifier of the associated RestApi.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ResourceId" - ], - "required": [ - "ParentId", - "PathPart", - "RestApiId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ApiGateway::Resource" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PathPart", + "/properties/ParentId", + "/properties/RestApiId" + ], + "description": "The ``AWS::ApiGateway::Resource`` resource creates a resource in an API.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "RestApiId": { + "$ref": "resource-schema.json#/properties/RestApiId" + } + }, + "required": [ + "RestApiId" + ] + }, + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:GET", + "apigateway:PATCH" + ] + } + }, + "primaryIdentifier": [ + "/properties/RestApiId", + "/properties/ResourceId" + ], + "properties": { + "ParentId": { + "description": "", + "type": "string" + }, + "PathPart": { + "description": "", + "type": "string" + }, + "ResourceId": { + "description": "", + "type": "string" + }, + "RestApiId": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ResourceId" + ], + "required": [ + "ParentId", + "PathPart", + "RestApiId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ApiGateway::Resource" +} diff --git a/src/schema/aws-apigateway-restapi.json b/src/schema/aws-apigateway-restapi.json index 41f97919..772f19d6 100644 --- a/src/schema/aws-apigateway-restapi.json +++ b/src/schema/aws-apigateway-restapi.json @@ -1,238 +1,242 @@ -{ - "additionalProperties": false, - "definitions": { - "EndpointConfiguration": { - "additionalProperties": false, - "description": "The ``EndpointConfiguration`` property type specifies the endpoint types of a REST API.\n ``EndpointConfiguration`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource.", - "properties": { - "Types": { - "description": "A list of endpoint types of an API (RestApi) or its custom domain name (DomainName). For an edge-optimized API and its custom domain name, the endpoint type is ``\"EDGE\"``. For a regional API and its custom domain name, the endpoint type is ``REGIONAL``. For a private API, the endpoint type is ``PRIVATE``.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "VpcEndpointIds": { - "description": "A list of VpcEndpointIds of an API (RestApi) against which to create Route53 ALIASes. It is only supported for ``PRIVATE`` endpoint type.", - "items": { - "relationshipRef": { - "propertyPath": "/properties/Id", - "typeName": "AWS::EC2::VPCEndpoint" - }, - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "S3Location": { - "additionalProperties": false, - "description": "``S3Location`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource that specifies the Amazon S3 location of a OpenAPI (formerly Swagger) file that defines a set of RESTful APIs in JSON or YAML.\n On January 1, 2016, the Swagger Specification was donated to the [OpenAPI initiative](https://docs.aws.amazon.com/https://www.openapis.org/), becoming the foundation of the OpenAPI Specification.", - "properties": { - "Bucket": { - "description": "The name of the S3 bucket where the OpenAPI file is stored.", - "relationshipRef": { - "propertyPath": "/properties/BucketName", - "typeName": "AWS::S3::Bucket" - }, - "type": "string" - }, - "ETag": { - "description": "The Amazon S3 ETag (a file checksum) of the OpenAPI file. If you don't specify a value, API Gateway skips ETag validation of your OpenAPI file.", - "type": "string" - }, - "Key": { - "description": "The file name of the OpenAPI file (Amazon S3 object name).", - "type": "string" - }, - "Version": { - "description": "For versioning-enabled buckets, a specific version of the OpenAPI file.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "", - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The ``AWS::ApiGateway::RestApi`` resource creates a REST API. For more information, see [restapi:create](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateRestApi.html) in the *Amazon API Gateway REST API Reference*.\n On January 1, 2016, the Swagger Specification was donated to the [OpenAPI initiative](https://docs.aws.amazon.com/https://www.openapis.org/), becoming the foundation of the OpenAPI Specification.", - "handlers": { - "create": { - "permissions": [ - "apigateway:GET", - "apigateway:POST", - "apigateway:PUT", - "apigateway:PATCH", - "apigateway:UpdateRestApiPolicy", - "s3:GetObject", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "apigateway:DELETE" - ] - }, - "list": { - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE", - "apigateway:PATCH", - "apigateway:PUT", - "apigateway:UpdateRestApiPolicy", - "s3:GetObject", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/RestApiId" - ], - "properties": { - "ApiKeySourceType": { - "description": "The source of the API key for metering requests according to a usage plan. Valid values are: ``HEADER`` to read the API key from the ``X-API-Key`` header of a request. ``AUTHORIZER`` to read the API key from the ``UsageIdentifierKey`` from a custom authorizer.", - "type": "string" - }, - "BinaryMediaTypes": { - "description": "The list of binary media types supported by the RestApi. By default, the RestApi supports only UTF-8-encoded text payloads.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Body": { - "description": "An OpenAPI specification that defines a set of RESTful APIs in JSON format. For YAML templates, you can also provide the specification in YAML format.", - "type": [ - "object", - "string" - ] - }, - "BodyS3Location": { - "$ref": "#/definitions/S3Location", - "description": "The Amazon Simple Storage Service (Amazon S3) location that points to an OpenAPI file, which defines a set of RESTful APIs in JSON or YAML format." - }, - "CloneFrom": { - "description": "The ID of the RestApi that you want to clone from.", - "type": "string" - }, - "Description": { - "description": "The description of the RestApi.", - "type": "string" - }, - "DisableExecuteApiEndpoint": { - "description": "Specifies whether clients can invoke your API by using the default ``execute-api`` endpoint. By default, clients can invoke your API with the default ``https://{api_id}.execute-api.{region}.amazonaws.com`` endpoint. To require that clients use a custom domain name to invoke your API, disable the default endpoint", - "type": "boolean" - }, - "EndpointConfiguration": { - "$ref": "#/definitions/EndpointConfiguration", - "description": "A list of the endpoint types of the API. Use this property when creating an API. When importing an existing API, specify the endpoint configuration types using the ``Parameters`` property." - }, - "FailOnWarnings": { - "description": "A query parameter to indicate whether to rollback the API update (``true``) or not (``false``) when a warning is encountered. The default value is ``false``.", - "type": "boolean" - }, - "MinimumCompressionSize": { - "description": "A nullable integer that is used to enable compression (with non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable compression (with a null value) on an API. When compression is enabled, compression or decompression is not applied on the payload if the payload size is smaller than this value. Setting it to zero allows compression for any payload size.", - "type": "integer" - }, - "Mode": { - "description": "This property applies only when you use OpenAPI to define your REST API. The ``Mode`` determines how API Gateway handles resource updates.\n Valid values are ``overwrite`` or ``merge``. \n For ``overwrite``, the new API definition replaces the existing one. The existing API identifier remains unchanged.\n For ``merge``, the new API definition is merged with the existing API.\n If you don't specify this property, a default value is chosen. For REST APIs created before March 29, 2021, the default is ``overwrite``. For REST APIs created after March 29, 2021, the new API definition takes precedence, but any container types such as endpoint configurations and binary media types are merged with the existing API. \n Use the default mode to define top-level ``RestApi`` properties in addition to using OpenAPI. Generally, it's preferred to use API Gateway's OpenAPI extensions to model these properties.", - "type": "string" - }, - "Name": { - "description": "The name of the RestApi. A name is required if the REST API is not based on an OpenAPI specification.", - "type": "string" - }, - "Parameters": { - "additionalProperties": false, - "description": "Custom header parameters as part of the request. For example, to exclude DocumentationParts from an imported API, set ``ignore=documentation`` as a ``parameters`` value, as in the AWS CLI command of ``aws apigateway import-rest-api --parameters ignore=documentation --body 'file:///path/to/imported-api-body.json'``.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": [ - "object", - "string" - ] - }, - "Policy": { - "description": "A policy document that contains the permissions for the ``RestApi`` resource. To set the ARN for the policy, use the ``!Join`` intrinsic function with ``\"\"`` as delimiter and values of ``\"execute-api:/\"`` and ``\"*\"``.", - "type": [ - "object", - "string" - ] - }, - "RestApiId": { - "description": "", - "type": "string" - }, - "RootResourceId": { - "description": "", - "type": "string" - }, - "Tags": { - "description": "The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with ``aws:``. The tag value can be up to 256 characters.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/RestApiId", - "/properties/RootResourceId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "apigateway:PUT", - "apigateway:DELETE", - "apigateway:GET" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ApiGateway::RestApi", - "writeOnlyProperties": [ - "/properties/Body", - "/properties/BodyS3Location", - "/properties/CloneFrom", - "/properties/FailOnWarnings", - "/properties/Mode", - "/properties/Parameters" - ] -} +{ + "additionalProperties": false, + "definitions": { + "EndpointConfiguration": { + "additionalProperties": false, + "description": "The ``EndpointConfiguration`` property type specifies the endpoint types of a REST API.\n ``EndpointConfiguration`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource.", + "properties": { + "IpAddressType": { + "description": "", + "type": "string" + }, + "Types": { + "description": "", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "VpcEndpointIds": { + "description": "", + "items": { + "relationshipRef": { + "propertyPath": "/properties/Id", + "typeName": "AWS::EC2::VPCEndpoint" + }, + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "S3Location": { + "additionalProperties": false, + "description": "``S3Location`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource that specifies the Amazon S3 location of a OpenAPI (formerly Swagger) file that defines a set of RESTful APIs in JSON or YAML.\n On January 1, 2016, the Swagger Specification was donated to the [OpenAPI initiative](https://docs.aws.amazon.com/https://www.openapis.org/), becoming the foundation of the OpenAPI Specification.", + "properties": { + "Bucket": { + "description": "The name of the S3 bucket where the OpenAPI file is stored.", + "relationshipRef": { + "propertyPath": "/properties/BucketName", + "typeName": "AWS::S3::Bucket" + }, + "type": "string" + }, + "ETag": { + "description": "The Amazon S3 ETag (a file checksum) of the OpenAPI file. If you don't specify a value, API Gateway skips ETag validation of your OpenAPI file.", + "type": "string" + }, + "Key": { + "description": "The file name of the OpenAPI file (Amazon S3 object name).", + "type": "string" + }, + "Version": { + "description": "For versioning-enabled buckets, a specific version of the OpenAPI file.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The ``AWS::ApiGateway::RestApi`` resource creates a REST API. For more information, see [restapi:create](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateRestApi.html) in the *Amazon API Gateway REST API Reference*.\n On January 1, 2016, the Swagger Specification was donated to the [OpenAPI initiative](https://docs.aws.amazon.com/https://www.openapis.org/), becoming the foundation of the OpenAPI Specification.", + "handlers": { + "create": { + "permissions": [ + "apigateway:GET", + "apigateway:POST", + "apigateway:PUT", + "apigateway:PATCH", + "apigateway:UpdateRestApiPolicy", + "s3:GetObject", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE" + ] + }, + "list": { + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE", + "apigateway:PATCH", + "apigateway:PUT", + "apigateway:UpdateRestApiPolicy", + "s3:GetObject", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/RestApiId" + ], + "properties": { + "ApiKeySourceType": { + "description": "", + "type": "string" + }, + "BinaryMediaTypes": { + "description": "", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Body": { + "description": "An OpenAPI specification that defines a set of RESTful APIs in JSON format. For YAML templates, you can also provide the specification in YAML format.", + "type": [ + "object", + "string" + ] + }, + "BodyS3Location": { + "$ref": "#/definitions/S3Location", + "description": "The Amazon Simple Storage Service (Amazon S3) location that points to an OpenAPI file, which defines a set of RESTful APIs in JSON or YAML format." + }, + "CloneFrom": { + "description": "", + "type": "string" + }, + "Description": { + "description": "", + "type": "string" + }, + "DisableExecuteApiEndpoint": { + "description": "", + "type": "boolean" + }, + "EndpointConfiguration": { + "$ref": "#/definitions/EndpointConfiguration", + "description": "A list of the endpoint types of the API. Use this property when creating an API. When importing an existing API, specify the endpoint configuration types using the ``Parameters`` property." + }, + "FailOnWarnings": { + "description": "", + "type": "boolean" + }, + "MinimumCompressionSize": { + "description": "", + "type": "integer" + }, + "Mode": { + "description": "This property applies only when you use OpenAPI to define your REST API. The ``Mode`` determines how API Gateway handles resource updates.\n Valid values are ``overwrite`` or ``merge``. \n For ``overwrite``, the new API definition replaces the existing one. The existing API identifier remains unchanged.\n For ``merge``, the new API definition is merged with the existing API.\n If you don't specify this property, a default value is chosen. For REST APIs created before March 29, 2021, the default is ``overwrite``. For REST APIs created after March 29, 2021, the new API definition takes precedence, but any container types such as endpoint configurations and binary media types are merged with the existing API. \n Use the default mode to define top-level ``RestApi`` properties in addition to using OpenAPI. Generally, it's preferred to use API Gateway's OpenAPI extensions to model these properties.", + "type": "string" + }, + "Name": { + "description": "The name of the RestApi. A name is required if the REST API is not based on an OpenAPI specification.", + "type": "string" + }, + "Parameters": { + "additionalProperties": false, + "description": "", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": [ + "object", + "string" + ] + }, + "Policy": { + "description": "A policy document that contains the permissions for the ``RestApi`` resource. To set the ARN for the policy, use the ``!Join`` intrinsic function with ``\"\"`` as delimiter and values of ``\"execute-api:/\"`` and ``\"*\"``.", + "type": [ + "object", + "string" + ] + }, + "RestApiId": { + "description": "", + "type": "string" + }, + "RootResourceId": { + "description": "", + "type": "string" + }, + "Tags": { + "description": "", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/RestApiId", + "/properties/RootResourceId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "apigateway:PUT", + "apigateway:DELETE", + "apigateway:GET" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ApiGateway::RestApi", + "writeOnlyProperties": [ + "/properties/Body", + "/properties/BodyS3Location", + "/properties/CloneFrom", + "/properties/FailOnWarnings", + "/properties/Mode", + "/properties/Parameters" + ] +} diff --git a/src/schema/aws-apigateway-stage.json b/src/schema/aws-apigateway-stage.json index 8c476a32..1531efd8 100644 --- a/src/schema/aws-apigateway-stage.json +++ b/src/schema/aws-apigateway-stage.json @@ -1,266 +1,266 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RestApiId", - "/properties/StageName" - ], - "definitions": { - "AccessLogSetting": { - "additionalProperties": false, - "description": "The ``AccessLogSetting`` property type specifies settings for logging access in this stage.\n ``AccessLogSetting`` is a property of the [AWS::ApiGateway::Stage](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html) resource.", - "properties": { - "DestinationArn": { - "description": "The Amazon Resource Name (ARN) of the CloudWatch Logs log group or Kinesis Data Firehose delivery stream to receive access logs. If you specify a Kinesis Data Firehose delivery stream, the stream name must begin with ``amazon-apigateway-``. This parameter is required to enable access logging.", - "type": "string" - }, - "Format": { - "description": "A single line format of the access logs of data, as specified by selected [$context variables](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#context-variable-reference). The format must include at least ``$context.requestId``. This parameter is required to enable access logging.", - "type": "string" - } - }, - "type": "object" - }, - "CanarySetting": { - "additionalProperties": false, - "description": "Configuration settings of a canary deployment.", - "properties": { - "DeploymentId": { - "description": "The ID of the canary deployment.", - "type": "string" - }, - "PercentTraffic": { - "description": "The percent (0-100) of traffic diverted to a canary deployment.", - "maximum": 100, - "minimum": 0, - "type": "number" - }, - "StageVariableOverrides": { - "additionalProperties": false, - "description": "Stage variables overridden for a canary release deployment, including new stage variables introduced in the canary. These stage variables are represented as a string-to-string map between stage variable names and their values.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "UseStageCache": { - "description": "A Boolean flag to indicate whether the canary deployment uses the stage cache or not.", - "type": "boolean" - } - }, - "type": "object" - }, - "MethodSetting": { - "additionalProperties": false, - "description": "The ``MethodSetting`` property type configures settings for all methods in a stage.\n The ``MethodSettings`` property of the ``AWS::ApiGateway::Stage`` resource contains a list of ``MethodSetting`` property types.", - "properties": { - "CacheDataEncrypted": { - "description": "Specifies whether the cached responses are encrypted.", - "type": "boolean" - }, - "CacheTtlInSeconds": { - "description": "Specifies the time to live (TTL), in seconds, for cached responses. The higher the TTL, the longer the response will be cached.", - "type": "integer" - }, - "CachingEnabled": { - "description": "Specifies whether responses should be cached and returned for requests. A cache cluster must be enabled on the stage for responses to be cached.", - "type": "boolean" - }, - "DataTraceEnabled": { - "description": "Specifies whether data trace logging is enabled for this method, which affects the log entries pushed to Amazon CloudWatch Logs. This can be useful to troubleshoot APIs, but can result in logging sensitive data. We recommend that you don't enable this option for production APIs.", - "type": "boolean" - }, - "HttpMethod": { - "description": "The HTTP method. To apply settings to multiple resources and methods, specify an asterisk (``*``) for the ``HttpMethod`` and ``/*`` for the ``ResourcePath``. This parameter is required when you specify a ``MethodSetting``.", - "type": "string" - }, - "LoggingLevel": { - "description": "Specifies the logging level for this method, which affects the log entries pushed to Amazon CloudWatch Logs. Valid values are ``OFF``, ``ERROR``, and ``INFO``. Choose ``ERROR`` to write only error-level entries to CloudWatch Logs, or choose ``INFO`` to include all ``ERROR`` events as well as extra informational events.", - "type": "string" - }, - "MetricsEnabled": { - "description": "Specifies whether Amazon CloudWatch metrics are enabled for this method.", - "type": "boolean" - }, - "ResourcePath": { - "description": "The resource path for this method. Forward slashes (``/``) are encoded as ``~1`` and the initial slash must include a forward slash. For example, the path value ``/resource/subresource`` must be encoded as ``/~1resource~1subresource``. To specify the root path, use only a slash (``/``). To apply settings to multiple resources and methods, specify an asterisk (``*``) for the ``HttpMethod`` and ``/*`` for the ``ResourcePath``. This parameter is required when you specify a ``MethodSetting``.", - "type": "string" - }, - "ThrottlingBurstLimit": { - "description": "Specifies the throttling burst limit.", - "minimum": 0, - "type": "integer" - }, - "ThrottlingRateLimit": { - "description": "Specifies the throttling rate limit.", - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The ``AWS::ApiGateway::Stage`` resource creates a stage for a deployment.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST", - "apigateway:PATCH", - "apigateway:GET", - "apigateway:PUT" - ] - }, - "delete": { - "permissions": [ - "apigateway:DELETE" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "RestApiId": { - "$ref": "resource-schema.json#/properties/RestApiId" - } - }, - "required": [ - "RestApiId" - ] - }, - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:GET", - "apigateway:PATCH", - "apigateway:PUT", - "apigateway:DELETE" - ] - } - }, - "primaryIdentifier": [ - "/properties/RestApiId", - "/properties/StageName" - ], - "properties": { - "AccessLogSetting": { - "$ref": "#/definitions/AccessLogSetting", - "description": "Access log settings, including the access log format and access log destination ARN." - }, - "CacheClusterEnabled": { - "description": "Specifies whether a cache cluster is enabled for the stage.", - "type": "boolean" - }, - "CacheClusterSize": { - "description": "The stage's cache capacity in GB. For more information about choosing a cache size, see [Enabling API caching to enhance responsiveness](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html).", - "type": "string" - }, - "CanarySetting": { - "$ref": "#/definitions/CanarySetting", - "description": "Settings for the canary deployment in this stage." - }, - "ClientCertificateId": { - "description": "The identifier of a client certificate for an API stage.", - "type": "string" - }, - "DeploymentId": { - "description": "The identifier of the Deployment that the stage points to.", - "type": "string" - }, - "Description": { - "description": "The stage's description.", - "type": "string" - }, - "DocumentationVersion": { - "description": "The version of the associated API documentation.", - "type": "string" - }, - "MethodSettings": { - "description": "A map that defines the method settings for a Stage resource. Keys (designated as ``/{method_setting_key`` below) are method paths defined as ``{resource_path}/{http_method}`` for an individual method override, or ``/\\*/\\*`` for overriding all methods in the stage.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MethodSetting" - }, - "type": "array", - "uniqueItems": true - }, - "RestApiId": { - "description": "The string identifier of the associated RestApi.", - "type": "string" - }, - "StageName": { - "description": "The name of the stage is the first path segment in the Uniform Resource Identifier (URI) of a call to API Gateway. Stage names can only contain alphanumeric characters, hyphens, and underscores. Maximum length is 128 characters.", - "type": "string" - }, - "Tags": { - "description": "The collection of tags. Each tag element is associated with a given resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TracingEnabled": { - "description": "Specifies whether active tracing with X-ray is enabled for the Stage.", - "type": "boolean" - }, - "Variables": { - "additionalProperties": false, - "description": "A map (string-to-string map) that defines the stage variables, where the variable name is the key and the variable value is the value. Variable names are limited to alphanumeric characters. Values must match the following regular expression: ``[A-Za-z0-9-._~:/?#&=,]+``.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "RestApiId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "apigateway:PUT", - "apigateway:DELETE", - "apigateway:GET" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ApiGateway::Stage" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RestApiId", + "/properties/StageName" + ], + "definitions": { + "AccessLogSetting": { + "additionalProperties": false, + "description": "The ``AccessLogSetting`` property type specifies settings for logging access in this stage.\n ``AccessLogSetting`` is a property of the [AWS::ApiGateway::Stage](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html) resource.", + "properties": { + "DestinationArn": { + "description": "The Amazon Resource Name (ARN) of the CloudWatch Logs log group or Kinesis Data Firehose delivery stream to receive access logs. If you specify a Kinesis Data Firehose delivery stream, the stream name must begin with ``amazon-apigateway-``. This parameter is required to enable access logging.", + "type": "string" + }, + "Format": { + "description": "A single line format of the access logs of data, as specified by selected [$context variables](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#context-variable-reference). The format must include at least ``$context.requestId``. This parameter is required to enable access logging.", + "type": "string" + } + }, + "type": "object" + }, + "CanarySetting": { + "additionalProperties": false, + "description": "", + "properties": { + "DeploymentId": { + "description": "", + "type": "string" + }, + "PercentTraffic": { + "description": "", + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "StageVariableOverrides": { + "additionalProperties": false, + "description": "", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "UseStageCache": { + "description": "", + "type": "boolean" + } + }, + "type": "object" + }, + "MethodSetting": { + "additionalProperties": false, + "description": "The ``MethodSetting`` property type configures settings for all methods in a stage.\n The ``MethodSettings`` property of the ``AWS::ApiGateway::Stage`` resource contains a list of ``MethodSetting`` property types.", + "properties": { + "CacheDataEncrypted": { + "description": "", + "type": "boolean" + }, + "CacheTtlInSeconds": { + "description": "", + "type": "integer" + }, + "CachingEnabled": { + "description": "", + "type": "boolean" + }, + "DataTraceEnabled": { + "description": "", + "type": "boolean" + }, + "HttpMethod": { + "description": "The HTTP method. To apply settings to multiple resources and methods, specify an asterisk (``*``) for the ``HttpMethod`` and ``/*`` for the ``ResourcePath``. This parameter is required when you specify a ``MethodSetting``.", + "type": "string" + }, + "LoggingLevel": { + "description": "", + "type": "string" + }, + "MetricsEnabled": { + "description": "", + "type": "boolean" + }, + "ResourcePath": { + "description": "The resource path for this method. Forward slashes (``/``) are encoded as ``~1`` and the initial slash must include a forward slash. For example, the path value ``/resource/subresource`` must be encoded as ``/~1resource~1subresource``. To specify the root path, use only a slash (``/``). To apply settings to multiple resources and methods, specify an asterisk (``*``) for the ``HttpMethod`` and ``/*`` for the ``ResourcePath``. This parameter is required when you specify a ``MethodSetting``.", + "type": "string" + }, + "ThrottlingBurstLimit": { + "description": "", + "minimum": 0, + "type": "integer" + }, + "ThrottlingRateLimit": { + "description": "", + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The ``AWS::ApiGateway::Stage`` resource creates a stage for a deployment.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:PATCH", + "apigateway:GET", + "apigateway:PUT" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "RestApiId": { + "$ref": "resource-schema.json#/properties/RestApiId" + } + }, + "required": [ + "RestApiId" + ] + }, + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:GET", + "apigateway:PATCH", + "apigateway:PUT", + "apigateway:DELETE" + ] + } + }, + "primaryIdentifier": [ + "/properties/RestApiId", + "/properties/StageName" + ], + "properties": { + "AccessLogSetting": { + "$ref": "#/definitions/AccessLogSetting", + "description": "" + }, + "CacheClusterEnabled": { + "description": "", + "type": "boolean" + }, + "CacheClusterSize": { + "description": "", + "type": "string" + }, + "CanarySetting": { + "$ref": "#/definitions/CanarySetting", + "description": "" + }, + "ClientCertificateId": { + "description": "", + "type": "string" + }, + "DeploymentId": { + "description": "", + "type": "string" + }, + "Description": { + "description": "", + "type": "string" + }, + "DocumentationVersion": { + "description": "", + "type": "string" + }, + "MethodSettings": { + "description": "", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MethodSetting" + }, + "type": "array", + "uniqueItems": true + }, + "RestApiId": { + "description": "", + "type": "string" + }, + "StageName": { + "description": "", + "type": "string" + }, + "Tags": { + "description": "", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TracingEnabled": { + "description": "", + "type": "boolean" + }, + "Variables": { + "additionalProperties": false, + "description": "A map (string-to-string map) that defines the stage variables, where the variable name is the key and the variable value is the value. Variable names are limited to alphanumeric characters. Values must match the following regular expression: ``[A-Za-z0-9-._~:/?#&=,]+``.", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + } + }, + "required": [ + "RestApiId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "apigateway:PUT", + "apigateway:DELETE", + "apigateway:GET" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ApiGateway::Stage" +} diff --git a/src/schema/aws-apigateway-usageplan.json b/src/schema/aws-apigateway-usageplan.json index 38a13121..6eb0cc78 100644 --- a/src/schema/aws-apigateway-usageplan.json +++ b/src/schema/aws-apigateway-usageplan.json @@ -1,185 +1,185 @@ -{ - "additionalProperties": false, - "definitions": { - "ApiStage": { - "additionalProperties": false, - "description": "API stage name of the associated API stage in a usage plan.", - "properties": { - "ApiId": { - "description": "API Id of the associated API stage in a usage plan.", - "type": "string" - }, - "Stage": { - "description": "API stage name of the associated API stage in a usage plan.", - "type": "string" - }, - "Throttle": { - "additionalProperties": false, - "description": "Map containing method level throttling information for API stage in a usage plan.", - "patternProperties": { - ".*": { - "$ref": "#/definitions/ThrottleSettings" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "QuotaSettings": { - "additionalProperties": false, - "description": "``QuotaSettings`` is a property of the [AWS::ApiGateway::UsagePlan](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplan.html) resource that specifies a target for the maximum number of requests users can make to your REST APIs.\n In some cases clients can exceed the targets that you set. Don\u2019t rely on usage plans to control costs. Consider using [](https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-managing-costs.html) to monitor costs and [](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html) to manage API requests.", - "properties": { - "Limit": { - "description": "The target maximum number of requests that can be made in a given time period.", - "minimum": 0, - "type": "integer" - }, - "Offset": { - "description": "The number of requests subtracted from the given limit in the initial time period.", - "minimum": 0, - "type": "integer" - }, - "Period": { - "description": "The time period in which the limit applies. Valid values are \"DAY\", \"WEEK\" or \"MONTH\".", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "ThrottleSettings": { - "additionalProperties": false, - "description": "``ThrottleSettings`` is a property of the [AWS::ApiGateway::UsagePlan](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplan.html) resource that specifies the overall request rate (average requests per second) and burst capacity when users call your REST APIs.", - "properties": { - "BurstLimit": { - "description": "The API target request burst rate limit. This allows more requests through for a period of time than the target rate limit.", - "minimum": 0, - "type": "integer" - }, - "RateLimit": { - "description": "The API target request rate limit.", - "minimum": 0, - "type": "number" - } - }, - "type": "object" - } - }, - "description": "The ``AWS::ApiGateway::UsagePlan`` resource creates a usage plan for deployed APIs. A usage plan sets a target for the throttling and quota limits on individual client API keys. For more information, see [Creating and Using API Usage Plans in Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html) in the *API Gateway Developer Guide*.\n In some cases clients can exceed the targets that you set. Don\u2019t rely on usage plans to control costs. Consider using [](https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-managing-costs.html) to monitor costs and [](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html) to manage API requests.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST", - "apigateway:GET", - "apigateway:PUT" - ] - }, - "delete": { - "permissions": [ - "apigateway:DELETE", - "apigateway:GET", - "apigateway:PATCH" - ] - }, - "list": { - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE", - "apigateway:PATCH", - "apigateway:PUT" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApiStages": { - "description": "The associated API stages of a usage plan.", - "items": { - "$ref": "#/definitions/ApiStage" - }, - "type": "array", - "uniqueItems": true - }, - "Description": { - "description": "The description of a usage plan.", - "type": "string" - }, - "Id": { - "description": "", - "type": "string" - }, - "Quota": { - "$ref": "#/definitions/QuotaSettings", - "description": "The target maximum number of permitted requests per a given unit time interval." - }, - "Tags": { - "description": "The collection of tags. Each tag element is associated with a given resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Throttle": { - "$ref": "#/definitions/ThrottleSettings", - "description": "A map containing method level throttling information for API stage in a usage plan." - }, - "UsagePlanName": { - "description": "The name of a usage plan.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "apigateway:PUT", - "apigateway:DELETE", - "apigateway:GET" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ApiGateway::UsagePlan" -} +{ + "additionalProperties": false, + "definitions": { + "ApiStage": { + "additionalProperties": false, + "description": "", + "properties": { + "ApiId": { + "description": "", + "type": "string" + }, + "Stage": { + "description": "", + "type": "string" + }, + "Throttle": { + "additionalProperties": false, + "description": "", + "patternProperties": { + ".*": { + "$ref": "#/definitions/ThrottleSettings" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "QuotaSettings": { + "additionalProperties": false, + "description": "``QuotaSettings`` is a property of the [AWS::ApiGateway::UsagePlan](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplan.html) resource that specifies a target for the maximum number of requests users can make to your REST APIs.\n In some cases clients can exceed the targets that you set. Don\u2019t rely on usage plans to control costs. Consider using [](https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-managing-costs.html) to monitor costs and [](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html) to manage API requests.", + "properties": { + "Limit": { + "description": "", + "minimum": 0, + "type": "integer" + }, + "Offset": { + "description": "", + "minimum": 0, + "type": "integer" + }, + "Period": { + "description": "", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "ThrottleSettings": { + "additionalProperties": false, + "description": "``ThrottleSettings`` is a property of the [AWS::ApiGateway::UsagePlan](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplan.html) resource that specifies the overall request rate (average requests per second) and burst capacity when users call your REST APIs.", + "properties": { + "BurstLimit": { + "description": "", + "minimum": 0, + "type": "integer" + }, + "RateLimit": { + "description": "", + "minimum": 0, + "type": "number" + } + }, + "type": "object" + } + }, + "description": "The ``AWS::ApiGateway::UsagePlan`` resource creates a usage plan for deployed APIs. A usage plan sets a target for the throttling and quota limits on individual client API keys. For more information, see [Creating and Using API Usage Plans in Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html) in the *API Gateway Developer Guide*.\n In some cases clients can exceed the targets that you set. Don\u2019t rely on usage plans to control costs. Consider using [](https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-managing-costs.html) to monitor costs and [](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html) to manage API requests.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:GET", + "apigateway:PUT" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE", + "apigateway:GET", + "apigateway:PATCH" + ] + }, + "list": { + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE", + "apigateway:PATCH", + "apigateway:PUT" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApiStages": { + "description": "", + "items": { + "$ref": "#/definitions/ApiStage" + }, + "type": "array", + "uniqueItems": true + }, + "Description": { + "description": "", + "type": "string" + }, + "Id": { + "description": "", + "type": "string" + }, + "Quota": { + "$ref": "#/definitions/QuotaSettings", + "description": "" + }, + "Tags": { + "description": "", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Throttle": { + "$ref": "#/definitions/ThrottleSettings", + "description": "" + }, + "UsagePlanName": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "apigateway:PUT", + "apigateway:DELETE", + "apigateway:GET" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ApiGateway::UsagePlan" +} diff --git a/src/schema/aws-apigateway-usageplankey.json b/src/schema/aws-apigateway-usageplankey.json index 74cf3f2b..9a216f1d 100644 --- a/src/schema/aws-apigateway-usageplankey.json +++ b/src/schema/aws-apigateway-usageplankey.json @@ -1,80 +1,80 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KeyId", - "/properties/UsagePlanId", - "/properties/KeyType" - ], - "description": "The ``AWS::ApiGateway::UsagePlanKey`` resource associates an API key with a usage plan. This association determines which users the usage plan is applied to.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST", - "apigateway:GET" - ] - }, - "delete": { - "permissions": [ - "apigateway:DELETE", - "apigateway:GET" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "UsagePlanId": { - "$ref": "resource-schema.json#/properties/UsagePlanId" - } - }, - "required": [ - "UsagePlanId" - ] - }, - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "description": "", - "type": "string" - }, - "KeyId": { - "description": "The Id of the UsagePlanKey resource.", - "type": "string" - }, - "KeyType": { - "description": "The type of a UsagePlanKey resource for a plan customer.", - "enum": [ - "API_KEY" - ], - "type": "string" - }, - "UsagePlanId": { - "description": "The Id of the UsagePlan resource representing the usage plan containing the UsagePlanKey resource representing a plan customer.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "KeyType", - "UsagePlanId", - "KeyId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ApiGateway::UsagePlanKey" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KeyId", + "/properties/UsagePlanId", + "/properties/KeyType" + ], + "description": "The ``AWS::ApiGateway::UsagePlanKey`` resource associates an API key with a usage plan. This association determines which users the usage plan is applied to.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:GET" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE", + "apigateway:GET" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "UsagePlanId": { + "$ref": "resource-schema.json#/properties/UsagePlanId" + } + }, + "required": [ + "UsagePlanId" + ] + }, + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "", + "type": "string" + }, + "KeyId": { + "description": "The Id of the UsagePlanKey resource.", + "type": "string" + }, + "KeyType": { + "description": "", + "enum": [ + "API_KEY" + ], + "type": "string" + }, + "UsagePlanId": { + "description": "The Id of the UsagePlan resource representing the usage plan containing the UsagePlanKey resource representing a plan customer.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "KeyType", + "UsagePlanId", + "KeyId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ApiGateway::UsagePlanKey" +} diff --git a/src/schema/aws-apigateway-vpclink.json b/src/schema/aws-apigateway-vpclink.json index 746a11d9..dd3227e7 100644 --- a/src/schema/aws-apigateway-vpclink.json +++ b/src/schema/aws-apigateway-vpclink.json @@ -1,130 +1,130 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TargetArns" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "", - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The ``AWS::ApiGateway::VpcLink`` resource creates an API Gateway VPC link for a REST API to access resources in an Amazon Virtual Private Cloud (VPC). For more information, see [vpclink:create](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateVpcLink.html) in the ``Amazon API Gateway REST API Reference``.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST", - "apigateway:PUT", - "apigateway:GET", - "ec2:CreateVpcEndpointServiceConfiguration", - "ec2:DeleteVpcEndpointServiceConfigurations", - "ec2:DescribeVpcEndpointServiceConfigurations", - "ec2:ModifyVpcEndpointServicePermissions" - ] - }, - "delete": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE", - "apigateway:PUT", - "ec2:CreateVpcEndpointServiceConfiguration", - "ec2:DeleteVpcEndpointServiceConfigurations", - "ec2:DescribeVpcEndpointServiceConfigurations", - "ec2:ModifyVpcEndpointServicePermissions" - ] - }, - "list": { - "permissions": [ - "apigateway:GET", - "ec2:CreateVpcEndpointServiceConfiguration", - "ec2:DeleteVpcEndpointServiceConfigurations", - "ec2:DescribeVpcEndpointServiceConfigurations", - "ec2:ModifyVpcEndpointServicePermissions" - ] - }, - "read": { - "permissions": [ - "apigateway:GET", - "ec2:CreateVpcEndpointServiceConfiguration", - "ec2:DeleteVpcEndpointServiceConfigurations", - "ec2:DescribeVpcEndpointServiceConfigurations", - "ec2:ModifyVpcEndpointServicePermissions" - ] - }, - "update": { - "permissions": [ - "apigateway:PATCH", - "apigateway:GET", - "apigateway:PUT", - "ec2:CreateVpcEndpointServiceConfiguration", - "ec2:DeleteVpcEndpointServiceConfigurations", - "ec2:DescribeVpcEndpointServiceConfigurations", - "ec2:ModifyVpcEndpointServicePermissions" - ] - } - }, - "primaryIdentifier": [ - "/properties/VpcLinkId" - ], - "properties": { - "Description": { - "description": "The description of the VPC link.", - "type": "string" - }, - "Name": { - "description": "The name used to label and identify the VPC link.", - "type": "string" - }, - "Tags": { - "description": "An array of arbitrary tags (key-value pairs) to associate with the VPC link.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "TargetArns": { - "description": "The ARN of the network load balancer of the VPC targeted by the VPC link. The network load balancer must be owned by the same AWS-account of the API owner.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "VpcLinkId": { - "description": "", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/VpcLinkId" - ], - "required": [ - "Name", - "TargetArns" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ApiGateway::VpcLink" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TargetArns" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The ``AWS::ApiGateway::VpcLink`` resource creates an API Gateway VPC link for a REST API to access resources in an Amazon Virtual Private Cloud (VPC). For more information, see [vpclink:create](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateVpcLink.html) in the ``Amazon API Gateway REST API Reference``.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:PUT", + "apigateway:GET", + "ec2:CreateVpcEndpointServiceConfiguration", + "ec2:DeleteVpcEndpointServiceConfigurations", + "ec2:DescribeVpcEndpointServiceConfigurations", + "ec2:ModifyVpcEndpointServicePermissions" + ] + }, + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE", + "apigateway:PUT", + "ec2:CreateVpcEndpointServiceConfiguration", + "ec2:DeleteVpcEndpointServiceConfigurations", + "ec2:DescribeVpcEndpointServiceConfigurations", + "ec2:ModifyVpcEndpointServicePermissions" + ] + }, + "list": { + "permissions": [ + "apigateway:GET", + "ec2:CreateVpcEndpointServiceConfiguration", + "ec2:DeleteVpcEndpointServiceConfigurations", + "ec2:DescribeVpcEndpointServiceConfigurations", + "ec2:ModifyVpcEndpointServicePermissions" + ] + }, + "read": { + "permissions": [ + "apigateway:GET", + "ec2:CreateVpcEndpointServiceConfiguration", + "ec2:DeleteVpcEndpointServiceConfigurations", + "ec2:DescribeVpcEndpointServiceConfigurations", + "ec2:ModifyVpcEndpointServicePermissions" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:GET", + "apigateway:PUT", + "ec2:CreateVpcEndpointServiceConfiguration", + "ec2:DeleteVpcEndpointServiceConfigurations", + "ec2:DescribeVpcEndpointServiceConfigurations", + "ec2:ModifyVpcEndpointServicePermissions" + ] + } + }, + "primaryIdentifier": [ + "/properties/VpcLinkId" + ], + "properties": { + "Description": { + "description": "", + "type": "string" + }, + "Name": { + "description": "", + "type": "string" + }, + "Tags": { + "description": "An array of arbitrary tags (key-value pairs) to associate with the VPC link.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TargetArns": { + "description": "", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "VpcLinkId": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VpcLinkId" + ], + "required": [ + "Name", + "TargetArns" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ApiGateway::VpcLink" +} diff --git a/src/schema/aws-apigatewayv2-api.json b/src/schema/aws-apigatewayv2-api.json index 634af840..0bc603a3 100644 --- a/src/schema/aws-apigatewayv2-api.json +++ b/src/schema/aws-apigatewayv2-api.json @@ -1,229 +1,233 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProtocolType" - ], - "definitions": { - "BodyS3Location": { - "additionalProperties": false, - "description": "The ``BodyS3Location`` property specifies an S3 location from which to import an OpenAPI definition. Supported only for HTTP APIs.", - "properties": { - "Bucket": { - "description": "The S3 bucket that contains the OpenAPI definition to import. Required if you specify a ``BodyS3Location`` for an API.", - "type": "string" - }, - "Etag": { - "description": "The Etag of the S3 object.", - "type": "string" - }, - "Key": { - "description": "The key of the S3 object. Required if you specify a ``BodyS3Location`` for an API.", - "type": "string" - }, - "Version": { - "description": "The version of the S3 object.", - "type": "string" - } - }, - "type": "object" - }, - "Cors": { - "additionalProperties": false, - "description": "The ``Cors`` property specifies a CORS configuration for an API. Supported only for HTTP APIs. See [Configuring CORS](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-cors.html) for more information.", - "properties": { - "AllowCredentials": { - "description": "Specifies whether credentials are included in the CORS request. Supported only for HTTP APIs.", - "type": "boolean" - }, - "AllowHeaders": { - "description": "Represents a collection of allowed headers. Supported only for HTTP APIs.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AllowMethods": { - "description": "Represents a collection of allowed HTTP methods. Supported only for HTTP APIs.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AllowOrigins": { - "description": "Represents a collection of allowed origins. Supported only for HTTP APIs.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ExposeHeaders": { - "description": "Represents a collection of exposed headers. Supported only for HTTP APIs.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "MaxAge": { - "description": "The number of seconds that the browser should cache preflight request results. Supported only for HTTP APIs.", - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "The ``AWS::ApiGatewayV2::Api`` resource creates an API. WebSocket APIs and HTTP APIs are supported. For more information about WebSocket APIs, see [About WebSocket APIs in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-overview.html) in the *API Gateway Developer Guide*. For more information about HTTP APIs, see [HTTP APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api.html) in the *API Gateway Developer Guide.*", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST", - "apigateway:PUT", - "s3:getObject" - ] - }, - "delete": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE", - "s3:getObject" - ] - }, - "list": { - "permissions": [ - "apigateway:GET", - "s3:getObject" - ] - }, - "read": { - "permissions": [ - "apigateway:GET", - "s3:getObject" - ] - }, - "update": { - "permissions": [ - "apigateway:PATCH", - "apigateway:GET", - "apigateway:PUT", - "apigateway:POST", - "s3:getObject" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApiId" - ], - "properties": { - "ApiEndpoint": { - "description": "", - "type": "string" - }, - "ApiId": { - "description": "", - "type": "string" - }, - "ApiKeySelectionExpression": { - "description": "An API key selection expression. Supported only for WebSocket APIs. See [API Key Selection Expressions](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions).", - "type": "string" - }, - "BasePath": { - "description": "Specifies how to interpret the base path of the API during import. Valid values are ``ignore``, ``prepend``, and ``split``. The default value is ``ignore``. To learn more, see [Set the OpenAPI basePath Property](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-import-api-basePath.html). Supported only for HTTP APIs.", - "type": "string" - }, - "Body": { - "description": "The OpenAPI definition. Supported only for HTTP APIs. To import an HTTP API, you must specify a ``Body`` or ``BodyS3Location``. If you specify a ``Body`` or ``BodyS3Location``, don't specify CloudFormation resources such as ``AWS::ApiGatewayV2::Authorizer`` or ``AWS::ApiGatewayV2::Route``. API Gateway doesn't support the combination of OpenAPI and CloudFormation resources.", - "type": "object" - }, - "BodyS3Location": { - "$ref": "#/definitions/BodyS3Location", - "description": "The S3 location of an OpenAPI definition. Supported only for HTTP APIs. To import an HTTP API, you must specify a ``Body`` or ``BodyS3Location``. If you specify a ``Body`` or ``BodyS3Location``, don't specify CloudFormation resources such as ``AWS::ApiGatewayV2::Authorizer`` or ``AWS::ApiGatewayV2::Route``. API Gateway doesn't support the combination of OpenAPI and CloudFormation resources." - }, - "CorsConfiguration": { - "$ref": "#/definitions/Cors", - "description": "A CORS configuration. Supported only for HTTP APIs. See [Configuring CORS](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-cors.html) for more information." - }, - "CredentialsArn": { - "description": "This property is part of quick create. It specifies the credentials required for the integration, if any. For a Lambda integration, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify ``arn:aws:iam::*:user/*``. To use resource-based permissions on supported AWS services, specify ``null``. Currently, this property is not used for HTTP integrations. Supported only for HTTP APIs.", - "type": "string" - }, - "Description": { - "description": "The description of the API.", - "type": "string" - }, - "DisableExecuteApiEndpoint": { - "description": "Specifies whether clients can invoke your API by using the default ``execute-api`` endpoint. By default, clients can invoke your API with the default https://{api_id}.execute-api.{region}.amazonaws.com endpoint. To require that clients use a custom domain name to invoke your API, disable the default endpoint.", - "type": "boolean" - }, - "DisableSchemaValidation": { - "description": "Avoid validating models when creating a deployment. Supported only for WebSocket APIs.", - "type": "boolean" - }, - "FailOnWarnings": { - "description": "Specifies whether to rollback the API creation when a warning is encountered. By default, API creation continues if a warning is encountered.", - "type": "boolean" - }, - "Name": { - "description": "The name of the API. Required unless you specify an OpenAPI definition for ``Body`` or ``S3BodyLocation``.", - "type": "string" - }, - "ProtocolType": { - "description": "The API protocol. Valid values are ``WEBSOCKET`` or ``HTTP``. Required unless you specify an OpenAPI definition for ``Body`` or ``S3BodyLocation``.", - "type": "string" - }, - "RouteKey": { - "description": "This property is part of quick create. If you don't specify a ``routeKey``, a default route of ``$default`` is created. The ``$default`` route acts as a catch-all for any request made to your API, for a particular stage. The ``$default`` route key can't be modified. You can add routes after creating the API, and you can update the route keys of additional routes. Supported only for HTTP APIs.", - "type": "string" - }, - "RouteSelectionExpression": { - "description": "The route selection expression for the API. For HTTP APIs, the ``routeSelectionExpression`` must be ``${request.method} ${request.path}``. If not provided, this will be the default for HTTP APIs. This property is required for WebSocket APIs.", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "The collection of tags. Each tag element is associated with a given resource.", - "patternProperties": { - ".*": { - "type": "string" - } - }, - "type": "object" - }, - "Target": { - "description": "This property is part of quick create. Quick create produces an API with an integration, a default catch-all route, and a default stage which is configured to automatically deploy changes. For HTTP integrations, specify a fully qualified URL. For Lambda integrations, specify a function ARN. The type of the integration will be HTTP_PROXY or AWS_PROXY, respectively. Supported only for HTTP APIs.", - "type": "string" - }, - "Version": { - "description": "A version identifier for the API.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ApiId", - "/properties/ApiEndpoint" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ApiGatewayV2::Api", - "writeOnlyProperties": [ - "/properties/BasePath", - "/properties/Body", - "/properties/BodyS3Location", - "/properties/BodyS3Location/Etag", - "/properties/BodyS3Location/Bucket", - "/properties/BodyS3Location/Version", - "/properties/BodyS3Location/Key", - "/properties/CredentialsArn", - "/properties/FailOnWarnings", - "/properties/RouteKey", - "/properties/Target", - "/properties/DisableSchemaValidation" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ProtocolType" + ], + "definitions": { + "BodyS3Location": { + "additionalProperties": false, + "description": "The ``BodyS3Location`` property specifies an S3 location from which to import an OpenAPI definition. Supported only for HTTP APIs.", + "properties": { + "Bucket": { + "description": "The S3 bucket that contains the OpenAPI definition to import. Required if you specify a ``BodyS3Location`` for an API.", + "type": "string" + }, + "Etag": { + "description": "The Etag of the S3 object.", + "type": "string" + }, + "Key": { + "description": "The key of the S3 object. Required if you specify a ``BodyS3Location`` for an API.", + "type": "string" + }, + "Version": { + "description": "The version of the S3 object.", + "type": "string" + } + }, + "type": "object" + }, + "Cors": { + "additionalProperties": false, + "description": "The ``Cors`` property specifies a CORS configuration for an API. Supported only for HTTP APIs. See [Configuring CORS](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-cors.html) for more information.", + "properties": { + "AllowCredentials": { + "description": "Specifies whether credentials are included in the CORS request. Supported only for HTTP APIs.", + "type": "boolean" + }, + "AllowHeaders": { + "description": "Represents a collection of allowed headers. Supported only for HTTP APIs.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AllowMethods": { + "description": "Represents a collection of allowed HTTP methods. Supported only for HTTP APIs.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AllowOrigins": { + "description": "Represents a collection of allowed origins. Supported only for HTTP APIs.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ExposeHeaders": { + "description": "Represents a collection of exposed headers. Supported only for HTTP APIs.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MaxAge": { + "description": "The number of seconds that the browser should cache preflight request results. Supported only for HTTP APIs.", + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "The ``AWS::ApiGatewayV2::Api`` resource creates an API. WebSocket APIs and HTTP APIs are supported. For more information about WebSocket APIs, see [About WebSocket APIs in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-overview.html) in the *API Gateway Developer Guide*. For more information about HTTP APIs, see [HTTP APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api.html) in the *API Gateway Developer Guide.*", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:PUT", + "s3:getObject" + ] + }, + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE", + "s3:getObject" + ] + }, + "list": { + "permissions": [ + "apigateway:GET", + "s3:getObject" + ] + }, + "read": { + "permissions": [ + "apigateway:GET", + "s3:getObject" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:GET", + "apigateway:PUT", + "apigateway:POST", + "s3:getObject" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApiId" + ], + "properties": { + "ApiEndpoint": { + "description": "", + "type": "string" + }, + "ApiId": { + "description": "", + "type": "string" + }, + "ApiKeySelectionExpression": { + "description": "An API key selection expression. Supported only for WebSocket APIs. See [API Key Selection Expressions](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions).", + "type": "string" + }, + "BasePath": { + "description": "Specifies how to interpret the base path of the API during import. Valid values are ``ignore``, ``prepend``, and ``split``. The default value is ``ignore``. To learn more, see [Set the OpenAPI basePath Property](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-import-api-basePath.html). Supported only for HTTP APIs.", + "type": "string" + }, + "Body": { + "description": "The OpenAPI definition. Supported only for HTTP APIs. To import an HTTP API, you must specify a ``Body`` or ``BodyS3Location``. If you specify a ``Body`` or ``BodyS3Location``, don't specify CloudFormation resources such as ``AWS::ApiGatewayV2::Authorizer`` or ``AWS::ApiGatewayV2::Route``. API Gateway doesn't support the combination of OpenAPI and CloudFormation resources.", + "type": "object" + }, + "BodyS3Location": { + "$ref": "#/definitions/BodyS3Location", + "description": "The S3 location of an OpenAPI definition. Supported only for HTTP APIs. To import an HTTP API, you must specify a ``Body`` or ``BodyS3Location``. If you specify a ``Body`` or ``BodyS3Location``, don't specify CloudFormation resources such as ``AWS::ApiGatewayV2::Authorizer`` or ``AWS::ApiGatewayV2::Route``. API Gateway doesn't support the combination of OpenAPI and CloudFormation resources." + }, + "CorsConfiguration": { + "$ref": "#/definitions/Cors", + "description": "A CORS configuration. Supported only for HTTP APIs. See [Configuring CORS](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-cors.html) for more information." + }, + "CredentialsArn": { + "description": "This property is part of quick create. It specifies the credentials required for the integration, if any. For a Lambda integration, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify ``arn:aws:iam::*:user/*``. To use resource-based permissions on supported AWS services, specify ``null``. Currently, this property is not used for HTTP integrations. Supported only for HTTP APIs.", + "type": "string" + }, + "Description": { + "description": "The description of the API.", + "type": "string" + }, + "DisableExecuteApiEndpoint": { + "description": "Specifies whether clients can invoke your API by using the default ``execute-api`` endpoint. By default, clients can invoke your API with the default https://{api_id}.execute-api.{region}.amazonaws.com endpoint. To require that clients use a custom domain name to invoke your API, disable the default endpoint.", + "type": "boolean" + }, + "DisableSchemaValidation": { + "description": "Avoid validating models when creating a deployment. Supported only for WebSocket APIs.", + "type": "boolean" + }, + "FailOnWarnings": { + "description": "Specifies whether to rollback the API creation when a warning is encountered. By default, API creation continues if a warning is encountered.", + "type": "boolean" + }, + "IpAddressType": { + "description": "", + "type": "string" + }, + "Name": { + "description": "The name of the API. Required unless you specify an OpenAPI definition for ``Body`` or ``S3BodyLocation``.", + "type": "string" + }, + "ProtocolType": { + "description": "The API protocol. Valid values are ``WEBSOCKET`` or ``HTTP``. Required unless you specify an OpenAPI definition for ``Body`` or ``S3BodyLocation``.", + "type": "string" + }, + "RouteKey": { + "description": "This property is part of quick create. If you don't specify a ``routeKey``, a default route of ``$default`` is created. The ``$default`` route acts as a catch-all for any request made to your API, for a particular stage. The ``$default`` route key can't be modified. You can add routes after creating the API, and you can update the route keys of additional routes. Supported only for HTTP APIs.", + "type": "string" + }, + "RouteSelectionExpression": { + "description": "The route selection expression for the API. For HTTP APIs, the ``routeSelectionExpression`` must be ``${request.method} ${request.path}``. If not provided, this will be the default for HTTP APIs. This property is required for WebSocket APIs.", + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "The collection of tags. Each tag element is associated with a given resource.", + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + }, + "Target": { + "description": "This property is part of quick create. Quick create produces an API with an integration, a default catch-all route, and a default stage which is configured to automatically deploy changes. For HTTP integrations, specify a fully qualified URL. For Lambda integrations, specify a function ARN. The type of the integration will be HTTP_PROXY or AWS_PROXY, respectively. Supported only for HTTP APIs.", + "type": "string" + }, + "Version": { + "description": "A version identifier for the API.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ApiId", + "/properties/ApiEndpoint" + ], + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ApiGatewayV2::Api", + "writeOnlyProperties": [ + "/properties/BasePath", + "/properties/Body", + "/properties/BodyS3Location", + "/properties/BodyS3Location/Etag", + "/properties/BodyS3Location/Bucket", + "/properties/BodyS3Location/Version", + "/properties/BodyS3Location/Key", + "/properties/CredentialsArn", + "/properties/FailOnWarnings", + "/properties/RouteKey", + "/properties/Target", + "/properties/DisableSchemaValidation" + ] +} diff --git a/src/schema/aws-apigatewayv2-apigatewaymanagedoverrides.json b/src/schema/aws-apigatewayv2-apigatewaymanagedoverrides.json index dbe47e0b..be84bc13 100644 --- a/src/schema/aws-apigatewayv2-apigatewaymanagedoverrides.json +++ b/src/schema/aws-apigatewayv2-apigatewaymanagedoverrides.json @@ -1,136 +1,136 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApiId" - ], - "definitions": { - "AccessLogSettings": { - "additionalProperties": false, - "properties": { - "DestinationArn": { - "type": "string" - }, - "Format": { - "type": "string" - } - }, - "type": "object" - }, - "IntegrationOverrides": { - "additionalProperties": false, - "properties": { - "Description": { - "type": "string" - }, - "IntegrationMethod": { - "type": "string" - }, - "PayloadFormatVersion": { - "type": "string" - }, - "TimeoutInMillis": { - "type": "integer" - } - }, - "type": "object" - }, - "RouteOverrides": { - "additionalProperties": false, - "properties": { - "AuthorizationScopes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AuthorizationType": { - "type": "string" - }, - "AuthorizerId": { - "type": "string" - }, - "OperationName": { - "type": "string" - }, - "Target": { - "type": "string" - } - }, - "type": "object" - }, - "RouteSettings": { - "additionalProperties": false, - "properties": { - "DataTraceEnabled": { - "type": "boolean" - }, - "DetailedMetricsEnabled": { - "type": "boolean" - }, - "LoggingLevel": { - "type": "string" - }, - "ThrottlingBurstLimit": { - "type": "integer" - }, - "ThrottlingRateLimit": { - "type": "number" - } - }, - "type": "object" - }, - "StageOverrides": { - "additionalProperties": false, - "properties": { - "AccessLogSettings": { - "$ref": "#/definitions/AccessLogSettings" - }, - "AutoDeploy": { - "type": "boolean" - }, - "DefaultRouteSettings": { - "$ref": "#/definitions/RouteSettings" - }, - "Description": { - "type": "string" - }, - "RouteSettings": { - "type": "object" - }, - "StageVariables": { - "type": "object" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ApiGatewayV2::ApiGatewayManagedOverrides", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApiId": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Integration": { - "$ref": "#/definitions/IntegrationOverrides" - }, - "Route": { - "$ref": "#/definitions/RouteOverrides" - }, - "Stage": { - "$ref": "#/definitions/StageOverrides" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ApiId" - ], - "typeName": "AWS::ApiGatewayV2::ApiGatewayManagedOverrides" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiId" + ], + "definitions": { + "AccessLogSettings": { + "additionalProperties": false, + "properties": { + "DestinationArn": { + "type": "string" + }, + "Format": { + "type": "string" + } + }, + "type": "object" + }, + "IntegrationOverrides": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "IntegrationMethod": { + "type": "string" + }, + "PayloadFormatVersion": { + "type": "string" + }, + "TimeoutInMillis": { + "type": "integer" + } + }, + "type": "object" + }, + "RouteOverrides": { + "additionalProperties": false, + "properties": { + "AuthorizationScopes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AuthorizationType": { + "type": "string" + }, + "AuthorizerId": { + "type": "string" + }, + "OperationName": { + "type": "string" + }, + "Target": { + "type": "string" + } + }, + "type": "object" + }, + "RouteSettings": { + "additionalProperties": false, + "properties": { + "DataTraceEnabled": { + "type": "boolean" + }, + "DetailedMetricsEnabled": { + "type": "boolean" + }, + "LoggingLevel": { + "type": "string" + }, + "ThrottlingBurstLimit": { + "type": "integer" + }, + "ThrottlingRateLimit": { + "type": "number" + } + }, + "type": "object" + }, + "StageOverrides": { + "additionalProperties": false, + "properties": { + "AccessLogSettings": { + "$ref": "#/definitions/AccessLogSettings" + }, + "AutoDeploy": { + "type": "boolean" + }, + "DefaultRouteSettings": { + "$ref": "#/definitions/RouteSettings" + }, + "Description": { + "type": "string" + }, + "RouteSettings": { + "type": "object" + }, + "StageVariables": { + "type": "object" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ApiGatewayV2::ApiGatewayManagedOverrides", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApiId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Integration": { + "$ref": "#/definitions/IntegrationOverrides" + }, + "Route": { + "$ref": "#/definitions/RouteOverrides" + }, + "Stage": { + "$ref": "#/definitions/StageOverrides" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApiId" + ], + "typeName": "AWS::ApiGatewayV2::ApiGatewayManagedOverrides" +} diff --git a/src/schema/aws-apigatewayv2-apimapping.json b/src/schema/aws-apigatewayv2-apimapping.json index ad82fc28..cc7fd72e 100644 --- a/src/schema/aws-apigatewayv2-apimapping.json +++ b/src/schema/aws-apigatewayv2-apimapping.json @@ -1,78 +1,78 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainName" - ], - "description": "The ``AWS::ApiGatewayV2::ApiMapping`` resource contains an API mapping. An API mapping relates a path of your custom domain name to a stage of your API. A custom domain name can have multiple API mappings, but the paths can't overlap. A custom domain can map only to APIs of the same protocol type. For more information, see [CreateApiMapping](https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/domainnames-domainname-apimappings.html#CreateApiMapping) in the *Amazon API Gateway V2 API Reference*.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST" - ] - }, - "delete": { - "permissions": [ - "apigateway:DELETE" - ] - }, - "list": { - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:PATCH", - "apigateway:GET", - "apigateway:PUT" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApiMappingId", - "/properties/DomainName" - ], - "properties": { - "ApiId": { - "description": "The identifier of the API.", - "type": "string" - }, - "ApiMappingId": { - "description": "", - "type": "string" - }, - "ApiMappingKey": { - "description": "The API mapping key.", - "type": "string" - }, - "DomainName": { - "description": "The domain name.", - "type": "string" - }, - "Stage": { - "description": "The API stage.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ApiMappingId" - ], - "required": [ - "DomainName", - "Stage", - "ApiId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigatewayv2.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ApiGatewayV2::ApiMapping" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainName" + ], + "description": "The ``AWS::ApiGatewayV2::ApiMapping`` resource contains an API mapping. An API mapping relates a path of your custom domain name to a stage of your API. A custom domain name can have multiple API mappings, but the paths can't overlap. A custom domain can map only to APIs of the same protocol type. For more information, see [CreateApiMapping](https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/domainnames-domainname-apimappings.html#CreateApiMapping) in the *Amazon API Gateway V2 API Reference*.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE" + ] + }, + "list": { + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:GET", + "apigateway:PUT" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApiMappingId", + "/properties/DomainName" + ], + "properties": { + "ApiId": { + "description": "The identifier of the API.", + "type": "string" + }, + "ApiMappingId": { + "description": "", + "type": "string" + }, + "ApiMappingKey": { + "description": "The API mapping key.", + "type": "string" + }, + "DomainName": { + "description": "The domain name.", + "type": "string" + }, + "Stage": { + "description": "The API stage.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ApiMappingId" + ], + "required": [ + "DomainName", + "Stage", + "ApiId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigatewayv2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ApiGatewayV2::ApiMapping" +} diff --git a/src/schema/aws-apigatewayv2-authorizer.json b/src/schema/aws-apigatewayv2-authorizer.json index f81d4566..15ba39c6 100644 --- a/src/schema/aws-apigatewayv2-authorizer.json +++ b/src/schema/aws-apigatewayv2-authorizer.json @@ -1,144 +1,144 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApiId" - ], - "definitions": { - "JWTConfiguration": { - "additionalProperties": false, - "description": "The ``JWTConfiguration`` property specifies the configuration of a JWT authorizer. Required for the ``JWT`` authorizer type. Supported only for HTTP APIs.", - "properties": { - "Audience": { - "description": "A list of the intended recipients of the JWT. A valid JWT must provide an ``aud`` that matches at least one entry in this list. See [RFC 7519](https://docs.aws.amazon.com/https://tools.ietf.org/html/rfc7519#section-4.1.3). Required for the ``JWT`` authorizer type. Supported only for HTTP APIs.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Issuer": { - "description": "The base domain of the identity provider that issues JSON Web Tokens. For example, an Amazon Cognito user pool has the following format: ``https://cognito-idp.{region}.amazonaws.com/{userPoolId}``. Required for the ``JWT`` authorizer type. Supported only for HTTP APIs.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The ``AWS::ApiGatewayV2::Authorizer`` resource creates an authorizer for a WebSocket API or an HTTP API. To learn more, see [Controlling and managing access to a WebSocket API in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-control-access.html) and [Controlling and managing access to an HTTP API in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-access-control.html) in the *API Gateway Developer Guide*.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApiId": { - "$ref": "resource-schema.json#/properties/ApiId" - } - }, - "required": [ - "ApiId" - ] - }, - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:PATCH", - "apigateway:GET", - "apigateway:PUT", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/AuthorizerId", - "/properties/ApiId" - ], - "properties": { - "ApiId": { - "description": "The API identifier.", - "type": "string" - }, - "AuthorizerCredentialsArn": { - "description": "Specifies the required credentials as an IAM role for API Gateway to invoke the authorizer. To specify an IAM role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, specify null. Supported only for ``REQUEST`` authorizers.", - "type": "string" - }, - "AuthorizerId": { - "description": "", - "type": "string" - }, - "AuthorizerPayloadFormatVersion": { - "description": "Specifies the format of the payload sent to an HTTP API Lambda authorizer. Required for HTTP API Lambda authorizers. Supported values are ``1.0`` and ``2.0``. To learn more, see [Working with Lambda authorizers for HTTP APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html).", - "type": "string" - }, - "AuthorizerResultTtlInSeconds": { - "description": "The time to live (TTL) for cached authorizer results, in seconds. If it equals 0, authorization caching is disabled. If it is greater than 0, API Gateway caches authorizer responses. The maximum value is 3600, or 1 hour. Supported only for HTTP API Lambda authorizers.", - "type": "integer" - }, - "AuthorizerType": { - "description": "The authorizer type. Specify ``REQUEST`` for a Lambda function using incoming request parameters. Specify ``JWT`` to use JSON Web Tokens (supported only for HTTP APIs).", - "type": "string" - }, - "AuthorizerUri": { - "description": "The authorizer's Uniform Resource Identifier (URI). For ``REQUEST`` authorizers, this must be a well-formed Lambda function URI, for example, ``arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:{account_id}:function:{lambda_function_name}/invocations``. In general, the URI has this form: ``arn:aws:apigateway:{region}:lambda:path/{service_api}``, where *{region}* is the same as the region hosting the Lambda function, path indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial ``/``. For Lambda functions, this is usually of the form ``/2015-03-31/functions/[FunctionARN]/invocations``.", - "type": "string" - }, - "EnableSimpleResponses": { - "description": "Specifies whether a Lambda authorizer returns a response in a simple format. By default, a Lambda authorizer must return an IAM policy. If enabled, the Lambda authorizer can return a boolean value instead of an IAM policy. Supported only for HTTP APIs. To learn more, see [Working with Lambda authorizers for HTTP APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html).", - "type": "boolean" - }, - "IdentitySource": { - "description": "The identity source for which authorization is requested.\n For a ``REQUEST`` authorizer, this is optional. The value is a set of one or more mapping expressions of the specified request parameters. The identity source can be headers, query string parameters, stage variables, and context parameters. For example, if an Auth header and a Name query string parameter are defined as identity sources, this value is route.request.header.Auth, route.request.querystring.Name for WebSocket APIs. For HTTP APIs, use selection expressions prefixed with ``$``, for example, ``$request.header.Auth``, ``$request.querystring.Name``. These parameters are used to perform runtime validation for Lambda-based authorizers by verifying all of the identity-related request parameters are present in the request, not null, and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function. Otherwise, it returns a 401 Unauthorized response without calling the Lambda function. For HTTP APIs, identity sources are also used as the cache key when caching is enabled. To learn more, see [Working with Lambda authorizers for HTTP APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html).\n For ``JWT``, a single entry that specifies where to extract the JSON Web Token (JWT) from inbound requests. Currently only header-based and query parameter-based selections are supported, for example ``$request.header.Authorization``.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "IdentityValidationExpression": { - "description": "This parameter is not used.", - "type": "string" - }, - "JwtConfiguration": { - "$ref": "#/definitions/JWTConfiguration", - "description": "The ``JWTConfiguration`` property specifies the configuration of a JWT authorizer. Required for the ``JWT`` authorizer type. Supported only for HTTP APIs." - }, - "Name": { - "description": "The name of the authorizer.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AuthorizerId" - ], - "required": [ - "AuthorizerType", - "ApiId", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigatewayv2", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ApiGatewayV2::Authorizer" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiId" + ], + "definitions": { + "JWTConfiguration": { + "additionalProperties": false, + "description": "The ``JWTConfiguration`` property specifies the configuration of a JWT authorizer. Required for the ``JWT`` authorizer type. Supported only for HTTP APIs.", + "properties": { + "Audience": { + "description": "A list of the intended recipients of the JWT. A valid JWT must provide an ``aud`` that matches at least one entry in this list. See [RFC 7519](https://docs.aws.amazon.com/https://tools.ietf.org/html/rfc7519#section-4.1.3). Required for the ``JWT`` authorizer type. Supported only for HTTP APIs.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Issuer": { + "description": "The base domain of the identity provider that issues JSON Web Tokens. For example, an Amazon Cognito user pool has the following format: ``https://cognito-idp.{region}.amazonaws.com/{userPoolId}``. Required for the ``JWT`` authorizer type. Supported only for HTTP APIs.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The ``AWS::ApiGatewayV2::Authorizer`` resource creates an authorizer for a WebSocket API or an HTTP API. To learn more, see [Controlling and managing access to a WebSocket API in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-control-access.html) and [Controlling and managing access to an HTTP API in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-access-control.html) in the *API Gateway Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApiId": { + "$ref": "resource-schema.json#/properties/ApiId" + } + }, + "required": [ + "ApiId" + ] + }, + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:GET", + "apigateway:PUT", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/AuthorizerId", + "/properties/ApiId" + ], + "properties": { + "ApiId": { + "description": "The API identifier.", + "type": "string" + }, + "AuthorizerCredentialsArn": { + "description": "Specifies the required credentials as an IAM role for API Gateway to invoke the authorizer. To specify an IAM role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, specify null. Supported only for ``REQUEST`` authorizers.", + "type": "string" + }, + "AuthorizerId": { + "description": "", + "type": "string" + }, + "AuthorizerPayloadFormatVersion": { + "description": "Specifies the format of the payload sent to an HTTP API Lambda authorizer. Required for HTTP API Lambda authorizers. Supported values are ``1.0`` and ``2.0``. To learn more, see [Working with Lambda authorizers for HTTP APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html).", + "type": "string" + }, + "AuthorizerResultTtlInSeconds": { + "description": "The time to live (TTL) for cached authorizer results, in seconds. If it equals 0, authorization caching is disabled. If it is greater than 0, API Gateway caches authorizer responses. The maximum value is 3600, or 1 hour. Supported only for HTTP API Lambda authorizers.", + "type": "integer" + }, + "AuthorizerType": { + "description": "The authorizer type. Specify ``REQUEST`` for a Lambda function using incoming request parameters. Specify ``JWT`` to use JSON Web Tokens (supported only for HTTP APIs).", + "type": "string" + }, + "AuthorizerUri": { + "description": "The authorizer's Uniform Resource Identifier (URI). For ``REQUEST`` authorizers, this must be a well-formed Lambda function URI, for example, ``arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:{account_id}:function:{lambda_function_name}/invocations``. In general, the URI has this form: ``arn:aws:apigateway:{region}:lambda:path/{service_api}``, where *{region}* is the same as the region hosting the Lambda function, path indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial ``/``. For Lambda functions, this is usually of the form ``/2015-03-31/functions/[FunctionARN]/invocations``.", + "type": "string" + }, + "EnableSimpleResponses": { + "description": "Specifies whether a Lambda authorizer returns a response in a simple format. By default, a Lambda authorizer must return an IAM policy. If enabled, the Lambda authorizer can return a boolean value instead of an IAM policy. Supported only for HTTP APIs. To learn more, see [Working with Lambda authorizers for HTTP APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html).", + "type": "boolean" + }, + "IdentitySource": { + "description": "The identity source for which authorization is requested.\n For a ``REQUEST`` authorizer, this is optional. The value is a set of one or more mapping expressions of the specified request parameters. The identity source can be headers, query string parameters, stage variables, and context parameters. For example, if an Auth header and a Name query string parameter are defined as identity sources, this value is route.request.header.Auth, route.request.querystring.Name for WebSocket APIs. For HTTP APIs, use selection expressions prefixed with ``$``, for example, ``$request.header.Auth``, ``$request.querystring.Name``. These parameters are used to perform runtime validation for Lambda-based authorizers by verifying all of the identity-related request parameters are present in the request, not null, and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function. Otherwise, it returns a 401 Unauthorized response without calling the Lambda function. For HTTP APIs, identity sources are also used as the cache key when caching is enabled. To learn more, see [Working with Lambda authorizers for HTTP APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html).\n For ``JWT``, a single entry that specifies where to extract the JSON Web Token (JWT) from inbound requests. Currently only header-based and query parameter-based selections are supported, for example ``$request.header.Authorization``.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "IdentityValidationExpression": { + "description": "This parameter is not used.", + "type": "string" + }, + "JwtConfiguration": { + "$ref": "#/definitions/JWTConfiguration", + "description": "The ``JWTConfiguration`` property specifies the configuration of a JWT authorizer. Required for the ``JWT`` authorizer type. Supported only for HTTP APIs." + }, + "Name": { + "description": "The name of the authorizer.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AuthorizerId" + ], + "required": [ + "AuthorizerType", + "ApiId", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigatewayv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ApiGatewayV2::Authorizer" +} diff --git a/src/schema/aws-apigatewayv2-deployment.json b/src/schema/aws-apigatewayv2-deployment.json index 13943a19..db020b30 100644 --- a/src/schema/aws-apigatewayv2-deployment.json +++ b/src/schema/aws-apigatewayv2-deployment.json @@ -1,87 +1,87 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApiId" - ], - "description": "The ``AWS::ApiGatewayV2::Deployment`` resource creates a deployment for an API.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST" - ] - }, - "delete": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApiId": { - "$ref": "resource-schema.json#/properties/ApiId" - } - }, - "required": [ - "ApiId" - ] - }, - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:PATCH", - "apigateway:GET", - "apigateway:PUT" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApiId", - "/properties/DeploymentId" - ], - "properties": { - "ApiId": { - "description": "The API identifier.", - "type": "string" - }, - "DeploymentId": { - "description": "", - "type": "string" - }, - "Description": { - "description": "The description for the deployment resource.", - "type": "string" - }, - "StageName": { - "description": "The name of an existing stage to associate with the deployment.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/DeploymentId" - ], - "required": [ - "ApiId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigatewayv2", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ApiGatewayV2::Deployment", - "writeOnlyProperties": [ - "/properties/StageName" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiId" + ], + "description": "The ``AWS::ApiGatewayV2::Deployment`` resource creates a deployment for an API.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST" + ] + }, + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApiId": { + "$ref": "resource-schema.json#/properties/ApiId" + } + }, + "required": [ + "ApiId" + ] + }, + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:GET", + "apigateway:PUT" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApiId", + "/properties/DeploymentId" + ], + "properties": { + "ApiId": { + "description": "The API identifier.", + "type": "string" + }, + "DeploymentId": { + "description": "", + "type": "string" + }, + "Description": { + "description": "The description for the deployment resource.", + "type": "string" + }, + "StageName": { + "description": "The name of an existing stage to associate with the deployment.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DeploymentId" + ], + "required": [ + "ApiId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigatewayv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ApiGatewayV2::Deployment", + "writeOnlyProperties": [ + "/properties/StageName" + ] +} diff --git a/src/schema/aws-apigatewayv2-domainname.json b/src/schema/aws-apigatewayv2-domainname.json index 6d7a3879..5c2537c2 100644 --- a/src/schema/aws-apigatewayv2-domainname.json +++ b/src/schema/aws-apigatewayv2-domainname.json @@ -1,138 +1,147 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainName" - ], - "definitions": { - "DomainNameConfiguration": { - "additionalProperties": false, - "description": "The ``DomainNameConfiguration`` property type specifies the configuration for an API's domain name.\n ``DomainNameConfiguration`` is a property of the [AWS::ApiGatewayV2::DomainName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-domainname.html) resource.", - "properties": { - "CertificateArn": { - "description": "An AWS-managed certificate that will be used by the edge-optimized endpoint for this domain name. AWS Certificate Manager is the only supported source.", - "type": "string" - }, - "CertificateName": { - "description": "The user-friendly name of the certificate that will be used by the edge-optimized endpoint for this domain name.", - "type": "string" - }, - "EndpointType": { - "description": "The endpoint type.", - "type": "string" - }, - "OwnershipVerificationCertificateArn": { - "description": "The Amazon resource name (ARN) for the public certificate issued by ACMlong. This ARN is used to validate custom domain ownership. It's required only if you configure mutual TLS and use either an ACM-imported or a private CA certificate ARN as the regionalCertificateArn.", - "type": "string" - }, - "SecurityPolicy": { - "description": "The Transport Layer Security (TLS) version of the security policy for this domain name. The valid values are ``TLS_1_0`` and ``TLS_1_2``.", - "type": "string" - } - }, - "type": "object" - }, - "MutualTlsAuthentication": { - "additionalProperties": false, - "description": "If specified, API Gateway performs two-way authentication between the client and the server. Clients must present a trusted certificate to access your API.", - "properties": { - "TruststoreUri": { - "description": "An Amazon S3 URL that specifies the truststore for mutual TLS authentication, for example, ``s3://bucket-name/key-name``. The truststore can contain certificates from public or private certificate authorities. To update the truststore, upload a new version to S3, and then update your custom domain name to use the new version. To update the truststore, you must have permissions to access the S3 object.", - "type": "string" - }, - "TruststoreVersion": { - "description": "The version of the S3 object that contains your truststore. To specify a version, you must have versioning enabled for the S3 bucket.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The ``AWS::ApiGatewayV2::DomainName`` resource specifies a custom domain name for your API in Amazon API Gateway (API Gateway). \n You can use a custom domain name to provide a URL that's more intuitive and easier to recall. For more information about using custom domain names, see [Set up Custom Domain Name for an API in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html) in the *API Gateway Developer Guide*.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST", - "apigateway:GET", - "apigateway:PUT" - ] - }, - "delete": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE" - ] - }, - "list": { - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:PATCH", - "apigateway:GET", - "apigateway:PUT" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainName" - ], - "properties": { - "DomainName": { - "description": "The custom domain name for your API in Amazon API Gateway. Uppercase letters are not supported.", - "type": "string" - }, - "DomainNameConfigurations": { - "description": "The domain name configurations.", - "items": { - "$ref": "#/definitions/DomainNameConfiguration" - }, - "type": "array", - "uniqueItems": false - }, - "MutualTlsAuthentication": { - "$ref": "#/definitions/MutualTlsAuthentication", - "description": "The mutual TLS authentication configuration for a custom domain name." - }, - "RegionalDomainName": { - "description": "", - "type": "string" - }, - "RegionalHostedZoneId": { - "description": "", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "The collection of tags associated with a domain name.", - "patternProperties": { - ".*": { - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/RegionalDomainName", - "/properties/RegionalHostedZoneId" - ], - "required": [ - "DomainName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigatewayv2.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::ApiGatewayV2::DomainName" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainName" + ], + "definitions": { + "DomainNameConfiguration": { + "additionalProperties": false, + "description": "The ``DomainNameConfiguration`` property type specifies the configuration for an API's domain name.\n ``DomainNameConfiguration`` is a property of the [AWS::ApiGatewayV2::DomainName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-domainname.html) resource.", + "properties": { + "CertificateArn": { + "description": "An AWS-managed certificate that will be used by the edge-optimized endpoint for this domain name. AWS Certificate Manager is the only supported source.", + "type": "string" + }, + "CertificateName": { + "description": "The user-friendly name of the certificate that will be used by the edge-optimized endpoint for this domain name.", + "type": "string" + }, + "EndpointType": { + "description": "The endpoint type.", + "type": "string" + }, + "IpAddressType": { + "description": "", + "type": "string" + }, + "OwnershipVerificationCertificateArn": { + "description": "The Amazon resource name (ARN) for the public certificate issued by ACMlong. This ARN is used to validate custom domain ownership. It's required only if you configure mutual TLS and use either an ACM-imported or a private CA certificate ARN as the regionalCertificateArn.", + "type": "string" + }, + "SecurityPolicy": { + "description": "The Transport Layer Security (TLS) version of the security policy for this domain name. The valid values are ``TLS_1_0`` and ``TLS_1_2``.", + "type": "string" + } + }, + "type": "object" + }, + "MutualTlsAuthentication": { + "additionalProperties": false, + "description": "If specified, API Gateway performs two-way authentication between the client and the server. Clients must present a trusted certificate to access your API.", + "properties": { + "TruststoreUri": { + "description": "An Amazon S3 URL that specifies the truststore for mutual TLS authentication, for example, ``s3://bucket-name/key-name``. The truststore can contain certificates from public or private certificate authorities. To update the truststore, upload a new version to S3, and then update your custom domain name to use the new version. To update the truststore, you must have permissions to access the S3 object.", + "type": "string" + }, + "TruststoreVersion": { + "description": "The version of the S3 object that contains your truststore. To specify a version, you must have versioning enabled for the S3 bucket.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The ``AWS::ApiGatewayV2::DomainName`` resource specifies a custom domain name for your API in Amazon API Gateway (API Gateway). \n You can use a custom domain name to provide a URL that's more intuitive and easier to recall. For more information about using custom domain names, see [Set up Custom Domain Name for an API in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html) in the *API Gateway Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:GET", + "apigateway:PUT" + ] + }, + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE" + ] + }, + "list": { + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:GET", + "apigateway:PUT" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainName" + ], + "properties": { + "DomainName": { + "description": "The custom domain name for your API in Amazon API Gateway. Uppercase letters and the underscore (``_``) character are not supported.", + "type": "string" + }, + "DomainNameArn": { + "description": "", + "type": "string" + }, + "DomainNameConfigurations": { + "description": "The domain name configurations.", + "items": { + "$ref": "#/definitions/DomainNameConfiguration" + }, + "type": "array", + "uniqueItems": false + }, + "MutualTlsAuthentication": { + "$ref": "#/definitions/MutualTlsAuthentication", + "description": "The mutual TLS authentication configuration for a custom domain name." + }, + "RegionalDomainName": { + "description": "", + "type": "string" + }, + "RegionalHostedZoneId": { + "description": "", + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "The collection of tags associated with a domain name.", + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/RegionalDomainName", + "/properties/RegionalHostedZoneId", + "/properties/DomainNameArn" + ], + "required": [ + "DomainName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigatewayv2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::ApiGatewayV2::DomainName" +} diff --git a/src/schema/aws-apigatewayv2-integration.json b/src/schema/aws-apigatewayv2-integration.json index fbbd30df..3021ed58 100644 --- a/src/schema/aws-apigatewayv2-integration.json +++ b/src/schema/aws-apigatewayv2-integration.json @@ -1,224 +1,224 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApiId" - ], - "definitions": { - "ResponseParameter": { - "additionalProperties": false, - "description": "response parameter", - "properties": { - "Destination": { - "type": "string" - }, - "Source": { - "type": "string" - } - }, - "type": "object" - }, - "ResponseParameterList": { - "description": "list of response parameters", - "items": { - "$ref": "#/definitions/ResponseParameter" - }, - "type": "array" - }, - "ResponseParameterMap": { - "additionalProperties": false, - "description": "map of response parameter lists", - "properties": { - "ResponseParameters": { - "$ref": "#/definitions/ResponseParameterList" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TlsConfig": { - "additionalProperties": false, - "description": "The TlsConfig property specifies the TLS configuration for a private integration. Supported only for HTTP APIs.", - "properties": { - "ServerNameToVerify": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "An example resource schema demonstrating some basic constructs and validation rules.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST" - ] - }, - "delete": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApiId": { - "$ref": "resource-schema.json#/properties/ApiId" - } - }, - "required": [ - "ApiId" - ] - }, - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:PATCH", - "apigateway:GET", - "apigateway:PUT" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApiId", - "/properties/IntegrationId" - ], - "properties": { - "ApiId": { - "description": "The API identifier.", - "type": "string" - }, - "ConnectionId": { - "description": "The ID of the VPC link for a private integration. Supported only for HTTP APIs.", - "type": "string" - }, - "ConnectionType": { - "description": "The type of the network connection to the integration endpoint. Specify INTERNET for connections through the public routable internet or VPC_LINK for private connections between API Gateway and resources in a VPC. The default value is INTERNET.", - "type": "string" - }, - "ContentHandlingStrategy": { - "description": "Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT.", - "type": "string" - }, - "CredentialsArn": { - "description": "Specifies the credentials required for the integration, if any. For AWS integrations, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify the string arn:aws:iam::*:user/*. To use resource-based permissions on supported AWS services, don't specify this parameter.", - "type": "string" - }, - "Description": { - "description": "The description of the integration.", - "type": "string" - }, - "IntegrationId": { - "description": "The integration ID.", - "type": "string" - }, - "IntegrationMethod": { - "description": "Specifies the integration's HTTP method type.", - "type": "string" - }, - "IntegrationSubtype": { - "description": "Supported only for HTTP API AWS_PROXY integrations. Specifies the AWS service action to invoke.", - "type": "string" - }, - "IntegrationType": { - "description": "The integration type of an integration.", - "type": "string" - }, - "IntegrationUri": { - "description": "For a Lambda integration, specify the URI of a Lambda function. For an HTTP integration, specify a fully-qualified URL. For an HTTP API private integration, specify the ARN of an Application Load Balancer listener, Network Load Balancer listener, or AWS Cloud Map service.", - "type": "string" - }, - "PassthroughBehavior": { - "description": "Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and the available mapping templates specified as the requestTemplates property on the Integration resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and NEVER. Supported only for WebSocket APIs.", - "type": "string" - }, - "PayloadFormatVersion": { - "description": "Specifies the format of the payload sent to an integration. Required for HTTP APIs. For HTTP APIs, supported values for Lambda proxy integrations are 1.0 and 2.0 For all other integrations, 1.0 is the only supported value.", - "type": "string" - }, - "RequestParameters": { - "additionalProperties": false, - "description": "A key-value map specifying parameters.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "RequestTemplates": { - "additionalProperties": false, - "description": "A map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "ResponseParameters": { - "additionalProperties": false, - "description": "Parameters that transform the HTTP response from a backend integration before returning the response to clients. Supported only for HTTP APIs.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "$ref": "#/definitions/ResponseParameterMap" - } - }, - "type": "object" - }, - "TemplateSelectionExpression": { - "description": "The template selection expression for the integration. Supported only for WebSocket APIs.", - "type": "string" - }, - "TimeoutInMillis": { - "description": "Custom timeout between 50 and 29000 milliseconds for WebSocket APIs and between 50 and 30000 milliseconds for HTTP APIs. The default timeout is 29 seconds for WebSocket APIs and 30 seconds for HTTP APIs.", - "type": "integer" - }, - "TlsConfig": { - "$ref": "#/definitions/TlsConfig", - "description": "The TLS configuration for a private integration. If you specify a TLS configuration, private integration traffic uses the HTTPS protocol. Supported only for HTTP APIs." - } - }, - "readOnlyProperties": [ - "/properties/IntegrationId" - ], - "required": [ - "ApiId", - "IntegrationType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ApiGatewayV2::Integration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiId" + ], + "definitions": { + "ResponseParameter": { + "additionalProperties": false, + "description": "response parameter", + "properties": { + "Destination": { + "type": "string" + }, + "Source": { + "type": "string" + } + }, + "type": "object" + }, + "ResponseParameterList": { + "description": "list of response parameters", + "items": { + "$ref": "#/definitions/ResponseParameter" + }, + "type": "array" + }, + "ResponseParameterMap": { + "additionalProperties": false, + "description": "map of response parameter lists", + "properties": { + "ResponseParameters": { + "$ref": "#/definitions/ResponseParameterList" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TlsConfig": { + "additionalProperties": false, + "description": "The TlsConfig property specifies the TLS configuration for a private integration. Supported only for HTTP APIs.", + "properties": { + "ServerNameToVerify": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST" + ] + }, + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApiId": { + "$ref": "resource-schema.json#/properties/ApiId" + } + }, + "required": [ + "ApiId" + ] + }, + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:GET", + "apigateway:PUT" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApiId", + "/properties/IntegrationId" + ], + "properties": { + "ApiId": { + "description": "The API identifier.", + "type": "string" + }, + "ConnectionId": { + "description": "The ID of the VPC link for a private integration. Supported only for HTTP APIs.", + "type": "string" + }, + "ConnectionType": { + "description": "The type of the network connection to the integration endpoint. Specify INTERNET for connections through the public routable internet or VPC_LINK for private connections between API Gateway and resources in a VPC. The default value is INTERNET.", + "type": "string" + }, + "ContentHandlingStrategy": { + "description": "Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT.", + "type": "string" + }, + "CredentialsArn": { + "description": "Specifies the credentials required for the integration, if any. For AWS integrations, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify the string arn:aws:iam::*:user/*. To use resource-based permissions on supported AWS services, don't specify this parameter.", + "type": "string" + }, + "Description": { + "description": "The description of the integration.", + "type": "string" + }, + "IntegrationId": { + "description": "The integration ID.", + "type": "string" + }, + "IntegrationMethod": { + "description": "Specifies the integration's HTTP method type.", + "type": "string" + }, + "IntegrationSubtype": { + "description": "Supported only for HTTP API AWS_PROXY integrations. Specifies the AWS service action to invoke.", + "type": "string" + }, + "IntegrationType": { + "description": "The integration type of an integration.", + "type": "string" + }, + "IntegrationUri": { + "description": "For a Lambda integration, specify the URI of a Lambda function. For an HTTP integration, specify a fully-qualified URL. For an HTTP API private integration, specify the ARN of an Application Load Balancer listener, Network Load Balancer listener, or AWS Cloud Map service.", + "type": "string" + }, + "PassthroughBehavior": { + "description": "Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and the available mapping templates specified as the requestTemplates property on the Integration resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and NEVER. Supported only for WebSocket APIs.", + "type": "string" + }, + "PayloadFormatVersion": { + "description": "Specifies the format of the payload sent to an integration. Required for HTTP APIs. For HTTP APIs, supported values for Lambda proxy integrations are 1.0 and 2.0 For all other integrations, 1.0 is the only supported value.", + "type": "string" + }, + "RequestParameters": { + "additionalProperties": false, + "description": "A key-value map specifying parameters.", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "RequestTemplates": { + "additionalProperties": false, + "description": "A map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client.", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "ResponseParameters": { + "additionalProperties": false, + "description": "Parameters that transform the HTTP response from a backend integration before returning the response to clients. Supported only for HTTP APIs.", + "patternProperties": { + "[a-zA-Z0-9]+": { + "$ref": "#/definitions/ResponseParameterMap" + } + }, + "type": "object" + }, + "TemplateSelectionExpression": { + "description": "The template selection expression for the integration. Supported only for WebSocket APIs.", + "type": "string" + }, + "TimeoutInMillis": { + "description": "Custom timeout between 50 and 29000 milliseconds for WebSocket APIs and between 50 and 30000 milliseconds for HTTP APIs. The default timeout is 29 seconds for WebSocket APIs and 30 seconds for HTTP APIs.", + "type": "integer" + }, + "TlsConfig": { + "$ref": "#/definitions/TlsConfig", + "description": "The TLS configuration for a private integration. If you specify a TLS configuration, private integration traffic uses the HTTPS protocol. Supported only for HTTP APIs." + } + }, + "readOnlyProperties": [ + "/properties/IntegrationId" + ], + "required": [ + "ApiId", + "IntegrationType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ApiGatewayV2::Integration" +} diff --git a/src/schema/aws-apigatewayv2-integrationresponse.json b/src/schema/aws-apigatewayv2-integrationresponse.json index 7be84180..22f580fd 100644 --- a/src/schema/aws-apigatewayv2-integrationresponse.json +++ b/src/schema/aws-apigatewayv2-integrationresponse.json @@ -1,90 +1,90 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApiId", - "/properties/IntegrationId" - ], - "description": "The ``AWS::ApiGatewayV2::IntegrationResponse`` resource updates an integration response for an WebSocket API. For more information, see [Set up WebSocket API Integration Responses in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-integration-responses.html) in the *API Gateway Developer Guide*.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST" - ] - }, - "delete": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE" - ] - }, - "list": { - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:PATCH", - "apigateway:PUT", - "apigateway:GET" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApiId", - "/properties/IntegrationId", - "/properties/IntegrationResponseId" - ], - "properties": { - "ApiId": { - "description": "The API identifier.", - "type": "string" - }, - "ContentHandlingStrategy": { - "description": "Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are ``CONVERT_TO_BINARY`` and ``CONVERT_TO_TEXT``, with the following behaviors:\n ``CONVERT_TO_BINARY``: Converts a response payload from a Base64-encoded string to the corresponding binary blob.\n ``CONVERT_TO_TEXT``: Converts a response payload from a binary blob to a Base64-encoded string.\n If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.", - "type": "string" - }, - "IntegrationId": { - "description": "The integration ID.", - "type": "string" - }, - "IntegrationResponseId": { - "description": "", - "type": "string" - }, - "IntegrationResponseKey": { - "description": "The integration response key.", - "type": "string" - }, - "ResponseParameters": { - "description": "A key-value map specifying response parameters that are passed to the method response from the backend. The key is a method response header parameter name and the mapped value is an integration response header value, a static value enclosed within a pair of single quotes, or a JSON expression from the integration response body. The mapping key must match the pattern of ``method.response.header.{name}``, where name is a valid and unique header name. The mapped non-static value must match the pattern of ``integration.response.header.{name}`` or ``integration.response.body.{JSON-expression}``, where ``{name}`` is a valid and unique response header name and ``{JSON-expression}`` is a valid JSON expression without the ``$`` prefix.", - "type": "object" - }, - "ResponseTemplates": { - "description": "The collection of response templates for the integration response as a string-to-string map of key-value pairs. Response templates are represented as a key/value map, with a content-type as the key and a template as the value.", - "type": "object" - }, - "TemplateSelectionExpression": { - "description": "The template selection expression for the integration response. Supported only for WebSocket APIs.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/IntegrationResponseId" - ], - "required": [ - "ApiId", - "IntegrationId", - "IntegrationResponseKey" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigatewayv2.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ApiGatewayV2::IntegrationResponse" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiId", + "/properties/IntegrationId" + ], + "description": "The ``AWS::ApiGatewayV2::IntegrationResponse`` resource updates an integration response for an WebSocket API. For more information, see [Set up WebSocket API Integration Responses in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-integration-responses.html) in the *API Gateway Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST" + ] + }, + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE" + ] + }, + "list": { + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:PUT", + "apigateway:GET" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApiId", + "/properties/IntegrationId", + "/properties/IntegrationResponseId" + ], + "properties": { + "ApiId": { + "description": "The API identifier.", + "type": "string" + }, + "ContentHandlingStrategy": { + "description": "Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are ``CONVERT_TO_BINARY`` and ``CONVERT_TO_TEXT``, with the following behaviors:\n ``CONVERT_TO_BINARY``: Converts a response payload from a Base64-encoded string to the corresponding binary blob.\n ``CONVERT_TO_TEXT``: Converts a response payload from a binary blob to a Base64-encoded string.\n If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.", + "type": "string" + }, + "IntegrationId": { + "description": "The integration ID.", + "type": "string" + }, + "IntegrationResponseId": { + "description": "", + "type": "string" + }, + "IntegrationResponseKey": { + "description": "The integration response key.", + "type": "string" + }, + "ResponseParameters": { + "description": "A key-value map specifying response parameters that are passed to the method response from the backend. The key is a method response header parameter name and the mapped value is an integration response header value, a static value enclosed within a pair of single quotes, or a JSON expression from the integration response body. The mapping key must match the pattern of ``method.response.header.{name}``, where name is a valid and unique header name. The mapped non-static value must match the pattern of ``integration.response.header.{name}`` or ``integration.response.body.{JSON-expression}``, where ``{name}`` is a valid and unique response header name and ``{JSON-expression}`` is a valid JSON expression without the ``$`` prefix.", + "type": "object" + }, + "ResponseTemplates": { + "description": "The collection of response templates for the integration response as a string-to-string map of key-value pairs. Response templates are represented as a key/value map, with a content-type as the key and a template as the value.", + "type": "object" + }, + "TemplateSelectionExpression": { + "description": "The template selection expression for the integration response. Supported only for WebSocket APIs.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/IntegrationResponseId" + ], + "required": [ + "ApiId", + "IntegrationId", + "IntegrationResponseKey" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigatewayv2.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ApiGatewayV2::IntegrationResponse" +} diff --git a/src/schema/aws-apigatewayv2-model.json b/src/schema/aws-apigatewayv2-model.json index 5d497210..19f28b55 100644 --- a/src/schema/aws-apigatewayv2-model.json +++ b/src/schema/aws-apigatewayv2-model.json @@ -1,90 +1,90 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApiId" - ], - "description": "The ``AWS::ApiGatewayV2::Model`` resource updates data model for a WebSocket API. For more information, see [Model Selection Expressions](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-model-selection-expressions) in the *API Gateway Developer Guide*.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST" - ] - }, - "delete": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApiId": { - "$ref": "resource-schema.json#/properties/ApiId" - } - }, - "required": [ - "ApiId" - ] - }, - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:PATCH", - "apigateway:GET", - "apigateway:PUT" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApiId", - "/properties/ModelId" - ], - "properties": { - "ApiId": { - "description": "The API identifier.", - "type": "string" - }, - "ContentType": { - "description": "The content-type for the model, for example, \"application/json\".", - "type": "string" - }, - "Description": { - "description": "The description of the model.", - "type": "string" - }, - "ModelId": { - "description": "", - "type": "string" - }, - "Name": { - "description": "The name of the model.", - "type": "string" - }, - "Schema": { - "description": "The schema for the model. For application/json models, this should be JSON schema draft 4 model.", - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/ModelId" - ], - "required": [ - "ApiId", - "Schema", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigatewayv2", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ApiGatewayV2::Model" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiId" + ], + "description": "The ``AWS::ApiGatewayV2::Model`` resource updates data model for a WebSocket API. For more information, see [Model Selection Expressions](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-model-selection-expressions) in the *API Gateway Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST" + ] + }, + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApiId": { + "$ref": "resource-schema.json#/properties/ApiId" + } + }, + "required": [ + "ApiId" + ] + }, + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:GET", + "apigateway:PUT" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApiId", + "/properties/ModelId" + ], + "properties": { + "ApiId": { + "description": "The API identifier.", + "type": "string" + }, + "ContentType": { + "description": "The content-type for the model, for example, \"application/json\".", + "type": "string" + }, + "Description": { + "description": "The description of the model.", + "type": "string" + }, + "ModelId": { + "description": "", + "type": "string" + }, + "Name": { + "description": "The name of the model.", + "type": "string" + }, + "Schema": { + "description": "The schema for the model. For application/json models, this should be JSON schema draft 4 model.", + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/ModelId" + ], + "required": [ + "ApiId", + "Schema", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigatewayv2", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ApiGatewayV2::Model" +} diff --git a/src/schema/aws-apigatewayv2-route.json b/src/schema/aws-apigatewayv2-route.json index 2d123661..e20454c4 100644 --- a/src/schema/aws-apigatewayv2-route.json +++ b/src/schema/aws-apigatewayv2-route.json @@ -1,143 +1,143 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApiId" - ], - "definitions": { - "ParameterConstraints": { - "additionalProperties": false, - "description": "", - "properties": { - "Required": { - "type": "boolean" - } - }, - "required": [ - "Required" - ], - "type": "object" - } - }, - "description": "The ``AWS::ApiGatewayV2::Route`` resource creates a route for an API.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST" - ] - }, - "delete": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApiId": { - "$ref": "resource-schema.json#/properties/ApiId" - } - }, - "required": [ - "ApiId" - ] - }, - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:PATCH", - "apigateway:GET", - "apigateway:PUT" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApiId", - "/properties/RouteId" - ], - "properties": { - "ApiId": { - "description": "The API identifier.", - "type": "string" - }, - "ApiKeyRequired": { - "description": "Specifies whether an API key is required for the route. Supported only for WebSocket APIs.", - "type": "boolean" - }, - "AuthorizationScopes": { - "description": "The authorization scopes supported by this route.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AuthorizationType": { - "description": "The authorization type for the route. For WebSocket APIs, valid values are ``NONE`` for open access, ``AWS_IAM`` for using AWS IAM permissions, and ``CUSTOM`` for using a Lambda authorizer. For HTTP APIs, valid values are ``NONE`` for open access, ``JWT`` for using JSON Web Tokens, ``AWS_IAM`` for using AWS IAM permissions, and ``CUSTOM`` for using a Lambda authorizer.", - "type": "string" - }, - "AuthorizerId": { - "description": "The identifier of the ``Authorizer`` resource to be associated with this route. The authorizer identifier is generated by API Gateway when you created the authorizer.", - "type": "string" - }, - "ModelSelectionExpression": { - "description": "The model selection expression for the route. Supported only for WebSocket APIs.", - "type": "string" - }, - "OperationName": { - "description": "The operation name for the route.", - "type": "string" - }, - "RequestModels": { - "description": "The request models for the route. Supported only for WebSocket APIs.", - "type": "object" - }, - "RequestParameters": { - "description": "The request parameters for the route. Supported only for WebSocket APIs.", - "items": { - "$ref": "#/definitions/ParameterConstraints" - }, - "type": "object" - }, - "RouteId": { - "description": "", - "type": "string" - }, - "RouteKey": { - "description": "The route key for the route. For HTTP APIs, the route key can be either ``$default``, or a combination of an HTTP method and resource path, for example, ``GET /pets``.", - "type": "string" - }, - "RouteResponseSelectionExpression": { - "description": "The route response selection expression for the route. Supported only for WebSocket APIs.", - "type": "string" - }, - "Target": { - "description": "The target for the route.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/RouteId" - ], - "required": [ - "RouteKey", - "ApiId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigatewayv2", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ApiGatewayV2::Route", - "writeOnlyProperties": [ - "/properties/AuthorizerId", - "/properties/RequestParameters" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiId" + ], + "definitions": { + "ParameterConstraints": { + "additionalProperties": false, + "description": "", + "properties": { + "Required": { + "type": "boolean" + } + }, + "required": [ + "Required" + ], + "type": "object" + } + }, + "description": "The ``AWS::ApiGatewayV2::Route`` resource creates a route for an API.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST" + ] + }, + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApiId": { + "$ref": "resource-schema.json#/properties/ApiId" + } + }, + "required": [ + "ApiId" + ] + }, + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:GET", + "apigateway:PUT" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApiId", + "/properties/RouteId" + ], + "properties": { + "ApiId": { + "description": "The API identifier.", + "type": "string" + }, + "ApiKeyRequired": { + "description": "Specifies whether an API key is required for the route. Supported only for WebSocket APIs.", + "type": "boolean" + }, + "AuthorizationScopes": { + "description": "The authorization scopes supported by this route.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AuthorizationType": { + "description": "The authorization type for the route. For WebSocket APIs, valid values are ``NONE`` for open access, ``AWS_IAM`` for using AWS IAM permissions, and ``CUSTOM`` for using a Lambda authorizer. For HTTP APIs, valid values are ``NONE`` for open access, ``JWT`` for using JSON Web Tokens, ``AWS_IAM`` for using AWS IAM permissions, and ``CUSTOM`` for using a Lambda authorizer.", + "type": "string" + }, + "AuthorizerId": { + "description": "The identifier of the ``Authorizer`` resource to be associated with this route. The authorizer identifier is generated by API Gateway when you created the authorizer.", + "type": "string" + }, + "ModelSelectionExpression": { + "description": "The model selection expression for the route. Supported only for WebSocket APIs.", + "type": "string" + }, + "OperationName": { + "description": "The operation name for the route.", + "type": "string" + }, + "RequestModels": { + "description": "The request models for the route. Supported only for WebSocket APIs.", + "type": "object" + }, + "RequestParameters": { + "description": "The request parameters for the route. Supported only for WebSocket APIs.", + "items": { + "$ref": "#/definitions/ParameterConstraints" + }, + "type": "object" + }, + "RouteId": { + "description": "", + "type": "string" + }, + "RouteKey": { + "description": "The route key for the route. For HTTP APIs, the route key can be either ``$default``, or a combination of an HTTP method and resource path, for example, ``GET /pets``.", + "type": "string" + }, + "RouteResponseSelectionExpression": { + "description": "The route response selection expression for the route. Supported only for WebSocket APIs.", + "type": "string" + }, + "Target": { + "description": "The target for the route.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/RouteId" + ], + "required": [ + "RouteKey", + "ApiId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigatewayv2", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ApiGatewayV2::Route", + "writeOnlyProperties": [ + "/properties/AuthorizerId", + "/properties/RequestParameters" + ] +} diff --git a/src/schema/aws-apigatewayv2-routeresponse.json b/src/schema/aws-apigatewayv2-routeresponse.json index 4664168e..4ed45729 100644 --- a/src/schema/aws-apigatewayv2-routeresponse.json +++ b/src/schema/aws-apigatewayv2-routeresponse.json @@ -1,112 +1,112 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApiId", - "/properties/RouteId" - ], - "definitions": { - "ParameterConstraints": { - "additionalProperties": false, - "description": "Specifies whether the parameter is required.", - "properties": { - "Required": { - "description": "Specifies whether the parameter is required.", - "type": "boolean" - } - }, - "required": [ - "Required" - ], - "type": "object" - }, - "RouteParameters": { - "additionalProperties": false, - "patternProperties": { - "^.+$": { - "$ref": "#/definitions/ParameterConstraints" - } - } - } - }, - "description": "The ``AWS::ApiGatewayV2::RouteResponse`` resource creates a route response for a WebSocket API. For more information, see [Set up Route Responses for a WebSocket API in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-route-response.html) in the *API Gateway Developer Guide*.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST" - ] - }, - "delete": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE" - ] - }, - "list": { - "permissions": [ - "apigateway:GET" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:PATCH", - "apigateway:GET", - "apigateway:PUT" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApiId", - "/properties/RouteId", - "/properties/RouteResponseId" - ], - "properties": { - "ApiId": { - "description": "The API identifier.", - "type": "string" - }, - "ModelSelectionExpression": { - "description": "The model selection expression for the route response. Supported only for WebSocket APIs.", - "type": "string" - }, - "ResponseModels": { - "description": "The response models for the route response.", - "type": "object" - }, - "ResponseParameters": { - "$ref": "#/definitions/RouteParameters", - "description": "The route response parameters." - }, - "RouteId": { - "description": "The route ID.", - "type": "string" - }, - "RouteResponseId": { - "description": "", - "type": "string" - }, - "RouteResponseKey": { - "description": "The route response key.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/RouteResponseId" - ], - "required": [ - "RouteResponseKey", - "RouteId", - "ApiId" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ApiGatewayV2::RouteResponse" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiId", + "/properties/RouteId" + ], + "definitions": { + "ParameterConstraints": { + "additionalProperties": false, + "description": "Specifies whether the parameter is required.", + "properties": { + "Required": { + "description": "Specifies whether the parameter is required.", + "type": "boolean" + } + }, + "required": [ + "Required" + ], + "type": "object" + }, + "RouteParameters": { + "additionalProperties": false, + "patternProperties": { + "^.+$": { + "$ref": "#/definitions/ParameterConstraints" + } + } + } + }, + "description": "The ``AWS::ApiGatewayV2::RouteResponse`` resource creates a route response for a WebSocket API. For more information, see [Set up Route Responses for a WebSocket API in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-route-response.html) in the *API Gateway Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST" + ] + }, + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE" + ] + }, + "list": { + "permissions": [ + "apigateway:GET" + ] + }, + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:GET", + "apigateway:PUT" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApiId", + "/properties/RouteId", + "/properties/RouteResponseId" + ], + "properties": { + "ApiId": { + "description": "The API identifier.", + "type": "string" + }, + "ModelSelectionExpression": { + "description": "The model selection expression for the route response. Supported only for WebSocket APIs.", + "type": "string" + }, + "ResponseModels": { + "description": "The response models for the route response.", + "type": "object" + }, + "ResponseParameters": { + "$ref": "#/definitions/RouteParameters", + "description": "The route response parameters." + }, + "RouteId": { + "description": "The route ID.", + "type": "string" + }, + "RouteResponseId": { + "description": "", + "type": "string" + }, + "RouteResponseKey": { + "description": "The route response key.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/RouteResponseId" + ], + "required": [ + "RouteResponseKey", + "RouteId", + "ApiId" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ApiGatewayV2::RouteResponse" +} diff --git a/src/schema/aws-apigatewayv2-stage.json b/src/schema/aws-apigatewayv2-stage.json index d275adbe..86fec060 100644 --- a/src/schema/aws-apigatewayv2-stage.json +++ b/src/schema/aws-apigatewayv2-stage.json @@ -1,95 +1,95 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StageName", - "/properties/ApiId" - ], - "definitions": { - "AccessLogSettings": { - "additionalProperties": false, - "properties": { - "DestinationArn": { - "type": "string" - }, - "Format": { - "type": "string" - } - }, - "type": "object" - }, - "RouteSettings": { - "additionalProperties": false, - "properties": { - "DataTraceEnabled": { - "type": "boolean" - }, - "DetailedMetricsEnabled": { - "type": "boolean" - }, - "LoggingLevel": { - "type": "string" - }, - "ThrottlingBurstLimit": { - "type": "integer" - }, - "ThrottlingRateLimit": { - "type": "number" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ApiGatewayV2::Stage", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AccessLogSettings": { - "$ref": "#/definitions/AccessLogSettings" - }, - "AccessPolicyId": { - "type": "string" - }, - "ApiId": { - "type": "string" - }, - "AutoDeploy": { - "type": "boolean" - }, - "ClientCertificateId": { - "type": "string" - }, - "DefaultRouteSettings": { - "$ref": "#/definitions/RouteSettings" - }, - "DeploymentId": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "RouteSettings": { - "type": "object" - }, - "StageName": { - "type": "string" - }, - "StageVariables": { - "type": "object" - }, - "Tags": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "StageName", - "ApiId" - ], - "typeName": "AWS::ApiGatewayV2::Stage" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StageName", + "/properties/ApiId" + ], + "definitions": { + "AccessLogSettings": { + "additionalProperties": false, + "properties": { + "DestinationArn": { + "type": "string" + }, + "Format": { + "type": "string" + } + }, + "type": "object" + }, + "RouteSettings": { + "additionalProperties": false, + "properties": { + "DataTraceEnabled": { + "type": "boolean" + }, + "DetailedMetricsEnabled": { + "type": "boolean" + }, + "LoggingLevel": { + "type": "string" + }, + "ThrottlingBurstLimit": { + "type": "integer" + }, + "ThrottlingRateLimit": { + "type": "number" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ApiGatewayV2::Stage", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AccessLogSettings": { + "$ref": "#/definitions/AccessLogSettings" + }, + "AccessPolicyId": { + "type": "string" + }, + "ApiId": { + "type": "string" + }, + "AutoDeploy": { + "type": "boolean" + }, + "ClientCertificateId": { + "type": "string" + }, + "DefaultRouteSettings": { + "$ref": "#/definitions/RouteSettings" + }, + "DeploymentId": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "RouteSettings": { + "type": "object" + }, + "StageName": { + "type": "string" + }, + "StageVariables": { + "type": "object" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "StageName", + "ApiId" + ], + "typeName": "AWS::ApiGatewayV2::Stage" +} diff --git a/src/schema/aws-apigatewayv2-vpclink.json b/src/schema/aws-apigatewayv2-vpclink.json index ef22360c..8a63eae2 100644 --- a/src/schema/aws-apigatewayv2-vpclink.json +++ b/src/schema/aws-apigatewayv2-vpclink.json @@ -1,110 +1,110 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SecurityGroupIds", - "/properties/SubnetIds" - ], - "description": "The ``AWS::ApiGatewayV2::VpcLink`` resource creates a VPC link. Supported only for HTTP APIs. The VPC link status must transition from ``PENDING`` to ``AVAILABLE`` to successfully create a VPC link, which can take up to 10 minutes. To learn more, see [Working with VPC Links for HTTP APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-vpc-links.html) in the *API Gateway Developer Guide*.", - "handlers": { - "create": { - "permissions": [ - "apigateway:POST", - "apigateway:GET", - "apigateway:TagResource", - "iam:CreateServiceLinkedRole", - "iam:DeleteServiceLinkedRole", - "iam:GetServiceLinkedRoleDeletionStatus" - ] - }, - "delete": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE", - "iam:CreateServiceLinkedRole", - "iam:DeleteServiceLinkedRole", - "iam:GetServiceLinkedRoleDeletionStatus" - ] - }, - "list": { - "permissions": [ - "apigateway:GET", - "iam:CreateServiceLinkedRole", - "iam:DeleteServiceLinkedRole", - "iam:GetServiceLinkedRoleDeletionStatus" - ] - }, - "read": { - "permissions": [ - "apigateway:GET", - "iam:CreateServiceLinkedRole", - "iam:DeleteServiceLinkedRole", - "iam:GetServiceLinkedRoleDeletionStatus" - ] - }, - "update": { - "permissions": [ - "apigateway:PATCH", - "apigateway:GET", - "apigateway:TagResource", - "apigateway:unTagResource", - "iam:CreateServiceLinkedRole", - "iam:DeleteServiceLinkedRole", - "iam:GetServiceLinkedRoleDeletionStatus" - ] - } - }, - "primaryIdentifier": [ - "/properties/VpcLinkId" - ], - "properties": { - "Name": { - "description": "The name of the VPC link.", - "type": "string" - }, - "SecurityGroupIds": { - "description": "A list of security group IDs for the VPC link.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetIds": { - "description": "A list of subnet IDs to include in the VPC link.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "additionalProperties": false, - "description": "The collection of tags. Each tag element is associated with a given resource.", - "patternProperties": { - ".*": { - "type": "string" - } - }, - "type": "object" - }, - "VpcLinkId": { - "description": "", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/VpcLinkId" - ], - "required": [ - "SubnetIds", - "Name" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ApiGatewayV2::VpcLink" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SecurityGroupIds", + "/properties/SubnetIds" + ], + "description": "The ``AWS::ApiGatewayV2::VpcLink`` resource creates a VPC link. Supported only for HTTP APIs. The VPC link status must transition from ``PENDING`` to ``AVAILABLE`` to successfully create a VPC link, which can take up to 10 minutes. To learn more, see [Working with VPC Links for HTTP APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-vpc-links.html) in the *API Gateway Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:GET", + "apigateway:TagResource", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ] + }, + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ] + }, + "list": { + "permissions": [ + "apigateway:GET", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ] + }, + "read": { + "permissions": [ + "apigateway:GET", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ] + }, + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:GET", + "apigateway:TagResource", + "apigateway:unTagResource", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ] + } + }, + "primaryIdentifier": [ + "/properties/VpcLinkId" + ], + "properties": { + "Name": { + "description": "The name of the VPC link.", + "type": "string" + }, + "SecurityGroupIds": { + "description": "A list of security group IDs for the VPC link.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SubnetIds": { + "description": "A list of subnet IDs to include in the VPC link.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "additionalProperties": false, + "description": "The collection of tags. Each tag element is associated with a given resource.", + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + }, + "VpcLinkId": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VpcLinkId" + ], + "required": [ + "SubnetIds", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ApiGatewayV2::VpcLink" +} diff --git a/src/schema/aws-appconfig-application.json b/src/schema/aws-appconfig-application.json index f9ecd889..e44aab55 100644 --- a/src/schema/aws-appconfig-application.json +++ b/src/schema/aws-appconfig-application.json @@ -1,109 +1,109 @@ -{ - "additionalProperties": false, - "definitions": { - "Tags": { - "additionalProperties": false, - "description": "Metadata to assign to the application. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", - "properties": { - "Key": { - "description": "The key-value string map. The valid character set is [a-zA-Z1-9 +-=._:/-]. The tag key can be up to 128 characters and must not start with aws:.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The tag value can be up to 256 characters.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppConfig::Application", - "handlers": { - "create": { - "permissions": [ - "appconfig:CreateApplication", - "appconfig:GetApplication", - "appconfig:ListTagsForResource", - "appconfig:TagResource" - ] - }, - "delete": { - "permissions": [ - "appconfig:GetApplication", - "appconfig:DeleteApplication" - ] - }, - "list": { - "permissions": [ - "appconfig:ListApplications" - ] - }, - "read": { - "permissions": [ - "appconfig:GetApplication", - "appconfig:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "appconfig:UpdateApplication", - "appconfig:TagResource", - "appconfig:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationId" - ], - "properties": { - "ApplicationId": { - "description": "The application Id", - "type": "string" - }, - "Description": { - "description": "A description of the application.", - "type": "string" - }, - "Name": { - "description": "A name for the application.", - "type": "string" - }, - "Tags": { - "description": "Metadata to assign to the application. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tags" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/ApplicationId" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appconfig.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "appconfig:TagResource", - "appconfig:UntagResource", - "appconfig:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AppConfig::Application" -} +{ + "additionalProperties": false, + "definitions": { + "Tags": { + "additionalProperties": false, + "description": "Metadata to assign to the application. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", + "properties": { + "Key": { + "description": "The key-value string map. The valid character set is [a-zA-Z1-9 +-=._:/-]. The tag key can be up to 128 characters and must not start with aws:.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The tag value can be up to 256 characters.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppConfig::Application", + "handlers": { + "create": { + "permissions": [ + "appconfig:CreateApplication", + "appconfig:GetApplication", + "appconfig:ListTagsForResource", + "appconfig:TagResource" + ] + }, + "delete": { + "permissions": [ + "appconfig:GetApplication", + "appconfig:DeleteApplication" + ] + }, + "list": { + "permissions": [ + "appconfig:ListApplications" + ] + }, + "read": { + "permissions": [ + "appconfig:GetApplication", + "appconfig:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "appconfig:UpdateApplication", + "appconfig:TagResource", + "appconfig:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId" + ], + "properties": { + "ApplicationId": { + "description": "The application Id", + "type": "string" + }, + "Description": { + "description": "A description of the application.", + "type": "string" + }, + "Name": { + "description": "A name for the application.", + "type": "string" + }, + "Tags": { + "description": "Metadata to assign to the application. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tags" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/ApplicationId" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appconfig.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "appconfig:TagResource", + "appconfig:UntagResource", + "appconfig:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppConfig::Application" +} diff --git a/src/schema/aws-appconfig-configurationprofile.json b/src/schema/aws-appconfig-configurationprofile.json index 614357db..7317e6a6 100644 --- a/src/schema/aws-appconfig-configurationprofile.json +++ b/src/schema/aws-appconfig-configurationprofile.json @@ -1,192 +1,203 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LocationUri", - "/properties/Type", - "/properties/ApplicationId" - ], - "definitions": { - "Tags": { - "additionalProperties": false, - "description": "Metadata to assign to the configuration profile. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", - "properties": { - "Key": { - "description": "The key-value string map. The tag key can be up to 128 characters and must not start with aws:.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:.)[a-zA-Z0-9 +=._:/-]*$", - "type": "string" - }, - "Value": { - "description": "The tag value can be up to 256 characters.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "Validators": { - "additionalProperties": false, - "description": "A list of methods for validating the configuration.", - "properties": { - "Content": { - "description": "Either the JSON Schema content or the Amazon Resource Name (ARN) of an Lambda function.", - "maxLength": 32768, - "minLength": 0, - "type": "string" - }, - "Type": { - "description": "AWS AppConfig supports validators of type JSON_SCHEMA and LAMBDA.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "An example resource schema demonstrating some basic constructs and validation rules.", - "handlers": { - "create": { - "permissions": [ - "appconfig:CreateConfigurationProfile", - "appconfig:GetConfigurationProfile", - "appconfig:TagResource", - "appconfig:ListTagsForResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "appconfig:DeleteConfigurationProfile" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApplicationId": { - "$ref": "resource-schema.json#/properties/ApplicationId" - } - }, - "required": [ - "ApplicationId" - ] - }, - "permissions": [ - "appconfig:ListConfigurationProfiles" - ] - }, - "read": { - "permissions": [ - "appconfig:GetConfigurationProfile", - "appconfig:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "appconfig:UpdateConfigurationProfile", - "appconfig:TagResource", - "appconfig:UntagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationId", - "/properties/ConfigurationProfileId" - ], - "properties": { - "ApplicationId": { - "description": "The application ID.", - "pattern": "[a-z0-9]{4,7}", - "type": "string" - }, - "ConfigurationProfileId": { - "description": "The configuration profile ID", - "type": "string" - }, - "Description": { - "description": "A description of the configuration profile.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "KmsKeyArn": { - "description": "The Amazon Resource Name of the AWS Key Management Service key to encrypt new configuration data versions in the AWS AppConfig hosted configuration store. This attribute is only used for hosted configuration types. To encrypt data managed in other configuration stores, see the documentation for how to specify an AWS KMS key for that particular service.", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:(aws[a-zA-Z-]*)?:[a-z]+:([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1})?:(\\d{12})?:[a-zA-Z0-9-_/:.]+", - "type": "string" - }, - "KmsKeyIdentifier": { - "description": "The AWS Key Management Service key identifier (key ID, key alias, or key ARN) provided when the resource was created or updated.", - "pattern": "^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}|alias/[a-zA-Z0-9/_-]{1,250}|arn:aws[a-zA-Z-]*:kms:[a-z]{2}(-gov|-iso(b?))?-[a-z]+-\\d{1}:\\d{12}:(key/[0-9a-f-]{36}|alias/[a-zA-Z0-9/_-]{1,250})$", - "type": "string" - }, - "LocationUri": { - "description": "A URI to locate the configuration. You can specify the AWS AppConfig hosted configuration store, Systems Manager (SSM) document, an SSM Parameter Store parameter, or an Amazon S3 object.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "A name for the configuration profile.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "RetrievalRoleArn": { - "description": "The ARN of an IAM role with permission to access the configuration at the specified LocationUri.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^((arn):(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):(iam)::\\d{12}:role[/].*)$", - "type": "string" - }, - "Tags": { - "description": "Metadata to assign to the configuration profile. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tags" - }, - "type": "array", - "uniqueItems": false - }, - "Type": { - "description": "The type of configurations contained in the profile. When calling this API, enter one of the following values for Type: AWS.AppConfig.FeatureFlags, AWS.Freeform", - "pattern": "^[a-zA-Z\\.]+", - "type": "string" - }, - "Validators": { - "description": "A list of methods for validating the configuration.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Validators" - }, - "maxItems": 2, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ConfigurationProfileId", - "/properties/KmsKeyArn" - ], - "required": [ - "LocationUri", - "ApplicationId", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appconfig", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "appconfig:TagResource", - "appconfig:UntagResource", - "appconfig:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AppConfig::ConfigurationProfile" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LocationUri", + "/properties/Type", + "/properties/ApplicationId" + ], + "definitions": { + "Tags": { + "additionalProperties": false, + "description": "Metadata to assign to the configuration profile. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", + "properties": { + "Key": { + "description": "The key-value string map. The tag key can be up to 128 characters and must not start with aws:.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The tag value can be up to 256 characters.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "Validators": { + "additionalProperties": false, + "description": "A list of methods for validating the configuration.", + "properties": { + "Content": { + "description": "Either the JSON Schema content or the Amazon Resource Name (ARN) of an Lambda function.", + "maxLength": 32768, + "minLength": 0, + "type": "string" + }, + "Type": { + "description": "AWS AppConfig supports validators of type JSON_SCHEMA and LAMBDA.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "handlers": { + "create": { + "permissions": [ + "appconfig:CreateConfigurationProfile", + "appconfig:GetConfigurationProfile", + "appconfig:TagResource", + "appconfig:ListTagsForResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "appconfig:DeleteConfigurationProfile" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "appconfig:ListConfigurationProfiles" + ] + }, + "read": { + "permissions": [ + "appconfig:GetConfigurationProfile", + "appconfig:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "appconfig:UpdateConfigurationProfile", + "appconfig:TagResource", + "appconfig:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/ConfigurationProfileId" + ], + "properties": { + "ApplicationId": { + "description": "The application ID.", + "pattern": "[a-z0-9]{4,7}", + "type": "string" + }, + "ConfigurationProfileId": { + "description": "The configuration profile ID", + "type": "string" + }, + "DeletionProtectionCheck": { + "description": "On resource deletion this controls whether the Deletion Protection check should be applied, bypassed, or (the default) whether the behavior should be controlled by the account-level Deletion Protection setting. See https://docs.aws.amazon.com/appconfig/latest/userguide/deletion-protection.html", + "enum": [ + "ACCOUNT_DEFAULT", + "APPLY", + "BYPASS" + ], + "type": "string" + }, + "Description": { + "description": "A description of the configuration profile.", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "KmsKeyArn": { + "description": "The Amazon Resource Name of the AWS Key Management Service key to encrypt new configuration data versions in the AWS AppConfig hosted configuration store. This attribute is only used for hosted configuration types. To encrypt data managed in other configuration stores, see the documentation for how to specify an AWS KMS key for that particular service.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:(aws[a-zA-Z-]*)?:[a-z]+:([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1})?:(\\d{12})?:[a-zA-Z0-9-_/:.]+", + "type": "string" + }, + "KmsKeyIdentifier": { + "description": "The AWS Key Management Service key identifier (key ID, key alias, or key ARN) provided when the resource was created or updated.", + "pattern": "^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}|alias/[a-zA-Z0-9/_-]{1,250}|arn:aws[a-zA-Z-]*:kms:[a-z]{2}(-gov|-iso(b?))?-[a-z]+-\\d{1}:\\d{12}:(key/[0-9a-f-]{36}|alias/[a-zA-Z0-9/_-]{1,250})$", + "type": "string" + }, + "LocationUri": { + "description": "A URI to locate the configuration. You can specify the AWS AppConfig hosted configuration store, Systems Manager (SSM) document, an SSM Parameter Store parameter, or an Amazon S3 object.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "A name for the configuration profile.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "RetrievalRoleArn": { + "description": "The ARN of an IAM role with permission to access the configuration at the specified LocationUri.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^((arn):(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):(iam)::\\d{12}:role[/].*)$", + "type": "string" + }, + "Tags": { + "description": "Metadata to assign to the configuration profile. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tags" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "description": "The type of configurations contained in the profile. When calling this API, enter one of the following values for Type: AWS.AppConfig.FeatureFlags, AWS.Freeform", + "pattern": "^[a-zA-Z\\.]+", + "type": "string" + }, + "Validators": { + "description": "A list of methods for validating the configuration.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Validators" + }, + "maxItems": 2, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ConfigurationProfileId", + "/properties/KmsKeyArn" + ], + "required": [ + "LocationUri", + "ApplicationId", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appconfig", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "appconfig:TagResource", + "appconfig:UntagResource", + "appconfig:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppConfig::ConfigurationProfile", + "writeOnlyProperties": [ + "/properties/DeletionProtectionCheck" + ] +} diff --git a/src/schema/aws-appconfig-deployment.json b/src/schema/aws-appconfig-deployment.json index 2d2831a6..a8c878d3 100644 --- a/src/schema/aws-appconfig-deployment.json +++ b/src/schema/aws-appconfig-deployment.json @@ -1,98 +1,172 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKeyIdentifier", - "/properties/DeploymentStrategyId", - "/properties/ConfigurationVersion", - "/properties/ApplicationId", - "/properties/ConfigurationProfileId", - "/properties/Tags", - "/properties/EnvironmentId", - "/properties/Description", - "/properties/DynamicExtensionParameters" - ], - "definitions": { - "DynamicExtensionParameters": { - "additionalProperties": false, - "properties": { - "ExtensionReference": { - "type": "string" - }, - "ParameterName": { - "type": "string" - }, - "ParameterValue": { - "type": "string" - } - }, - "type": "object" - }, - "Tags": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppConfig::Deployment", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationId": { - "type": "string" - }, - "ConfigurationProfileId": { - "type": "string" - }, - "ConfigurationVersion": { - "type": "string" - }, - "DeploymentStrategyId": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "DynamicExtensionParameters": { - "items": { - "$ref": "#/definitions/DynamicExtensionParameters" - }, - "type": "array", - "uniqueItems": false - }, - "EnvironmentId": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "KmsKeyIdentifier": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tags" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "DeploymentStrategyId", - "ConfigurationProfileId", - "EnvironmentId", - "ConfigurationVersion", - "ApplicationId" - ], - "typeName": "AWS::AppConfig::Deployment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/ConfigurationProfileId", + "/properties/DeploymentStrategyId", + "/properties/EnvironmentId", + "/properties/Description", + "/properties/ConfigurationVersion", + "/properties/KmsKeyIdentifier", + "/properties/DynamicExtensionParameters", + "/properties/Tags" + ], + "definitions": { + "DynamicExtensionParameters": { + "additionalProperties": false, + "properties": { + "ExtensionReference": { + "type": "string" + }, + "ParameterName": { + "type": "string" + }, + "ParameterValue": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Metadata to assign to the deployment. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", + "properties": { + "Key": { + "description": "The key-value string map. The valid character set is [a-zA-Z1-9+-=._:/]. The tag key can be up to 128 characters and must not start with aws:.", + "type": "string" + }, + "Value": { + "description": "The tag value can be up to 256 characters.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppConfig::Deployment", + "handlers": { + "create": { + "permissions": [ + "appconfig:StartDeployment", + "appconfig:GetDeployment", + "appconfig:TagResource", + "appconfig:ListTagsForResource", + "kms:GenerateDataKey" + ], + "timeoutInMinutes": 1445 + }, + "delete": { + "permissions": [ + "appconfig:StopDeployment" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + }, + "EnvironmentId": { + "$ref": "resource-schema.json#/properties/EnvironmentId" + } + }, + "required": [ + "ApplicationId", + "EnvironmentId" + ] + }, + "permissions": [ + "appconfig:ListDeployments" + ] + }, + "read": { + "permissions": [ + "appconfig:GetDeployment", + "appconfig:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/EnvironmentId", + "/properties/DeploymentNumber" + ], + "properties": { + "ApplicationId": { + "description": "The application ID.", + "type": "string" + }, + "ConfigurationProfileId": { + "description": "The configuration profile ID.", + "type": "string" + }, + "ConfigurationVersion": { + "description": "The configuration version to deploy. If deploying an AWS AppConfig hosted configuration version, you can specify either the version number or version label. For all other configurations, you must specify the version number.", + "type": "string" + }, + "DeploymentNumber": { + "description": "The sequence number of the deployment.", + "type": "string" + }, + "DeploymentStrategyId": { + "description": "The deployment strategy ID.", + "type": "string" + }, + "Description": { + "description": "A description of the deployment.", + "type": "string" + }, + "DynamicExtensionParameters": { + "items": { + "$ref": "#/definitions/DynamicExtensionParameters" + }, + "type": "array", + "uniqueItems": false + }, + "EnvironmentId": { + "description": "The environment ID.", + "type": "string" + }, + "KmsKeyIdentifier": { + "description": "The AWS Key Management Service key identifier (key ID, key alias, or key ARN) provided when the resource was created or updated.", + "pattern": "^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}|alias/[a-zA-Z0-9/_-]{1,250}|arn:aws[a-zA-Z-]*:kms:[a-z]{2}(-gov|-iso(b?))?-[a-z]+-\\d{1}:\\d{12}:(key/[0-9a-f-]{36}|alias/[a-zA-Z0-9/_-]{1,250})$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/DeploymentNumber" + ], + "required": [ + "ApplicationId", + "ConfigurationProfileId", + "DeploymentStrategyId", + "EnvironmentId", + "ConfigurationVersion" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "appconfig:TagResource", + "appconfig:UntagResource", + "appconfig:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::AppConfig::Deployment", + "writeOnlyProperties": [ + "/properties/DynamicExtensionParameters" + ] +} diff --git a/src/schema/aws-appconfig-deploymentstrategy.json b/src/schema/aws-appconfig-deploymentstrategy.json index 73d9ab2c..bfdc966b 100644 --- a/src/schema/aws-appconfig-deploymentstrategy.json +++ b/src/schema/aws-appconfig-deploymentstrategy.json @@ -1,133 +1,133 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/ReplicateTo" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "Metadata to assign to the deployment strategy. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppConfig::DeploymentStrategy", - "handlers": { - "create": { - "permissions": [ - "appconfig:CreateDeploymentStrategy", - "appconfig:TagResource" - ] - }, - "delete": { - "permissions": [ - "appconfig:DeleteDeploymentStrategy" - ] - }, - "list": { - "permissions": [ - "appconfig:ListDeploymentStrategies" - ] - }, - "read": { - "permissions": [ - "appconfig:GetDeploymentStrategy", - "appconfig:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "appconfig:UpdateDeploymentStrategy", - "appconfig:TagResource", - "appconfig:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DeploymentDurationInMinutes": { - "description": "Total amount of time for a deployment to last.", - "type": "number" - }, - "Description": { - "description": "A description of the deployment strategy.", - "type": "string" - }, - "FinalBakeTimeInMinutes": { - "description": "Specifies the amount of time AWS AppConfig monitors for Amazon CloudWatch alarms after the configuration has been deployed to 100% of its targets, before considering the deployment to be complete. If an alarm is triggered during this time, AWS AppConfig rolls back the deployment. You must configure permissions for AWS AppConfig to roll back based on CloudWatch alarms. For more information, see Configuring permissions for rollback based on Amazon CloudWatch alarms in the AWS AppConfig User Guide.", - "type": "number" - }, - "GrowthFactor": { - "description": "The percentage of targets to receive a deployed configuration during each interval.", - "type": "number" - }, - "GrowthType": { - "description": "The algorithm used to define how percentage grows over time. AWS AppConfig supports the following growth types:\n\nLinear: For this type, AWS AppConfig processes the deployment by dividing the total number of targets by the value specified for Step percentage. For example, a linear deployment that uses a Step percentage of 10 deploys the configuration to 10 percent of the hosts. After those deployments are complete, the system deploys the configuration to the next 10 percent. This continues until 100% of the targets have successfully received the configuration.\n\nExponential: For this type, AWS AppConfig processes the deployment exponentially using the following formula: G*(2^N). In this formula, G is the growth factor specified by the user and N is the number of steps until the configuration is deployed to all targets. For example, if you specify a growth factor of 2, then the system rolls out the configuration as follows:\n\n2*(2^0)\n\n2*(2^1)\n\n2*(2^2)\n\nExpressed numerically, the deployment rolls out as follows: 2% of the targets, 4% of the targets, 8% of the targets, and continues until the configuration has been deployed to all targets.", - "enum": [ - "EXPONENTIAL", - "LINEAR" - ], - "type": "string" - }, - "Id": { - "description": "The deployment strategy ID.", - "type": "string" - }, - "Name": { - "description": "A name for the deployment strategy.", - "type": "string" - }, - "ReplicateTo": { - "description": "Save the deployment strategy to a Systems Manager (SSM) document.", - "enum": [ - "NONE", - "SSM_DOCUMENT" - ], - "type": "string" - }, - "Tags": { - "description": "Assigns metadata to an AWS AppConfig resource. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define. You can specify a maximum of 50 tags for a resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "DeploymentDurationInMinutes", - "GrowthFactor", - "Name", - "ReplicateTo" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appconfig.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "appconfig:TagResource", - "appconfig:UntagResource", - "appconfig:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AppConfig::DeploymentStrategy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/ReplicateTo" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Metadata to assign to the deployment strategy. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppConfig::DeploymentStrategy", + "handlers": { + "create": { + "permissions": [ + "appconfig:CreateDeploymentStrategy", + "appconfig:TagResource" + ] + }, + "delete": { + "permissions": [ + "appconfig:DeleteDeploymentStrategy" + ] + }, + "list": { + "permissions": [ + "appconfig:ListDeploymentStrategies" + ] + }, + "read": { + "permissions": [ + "appconfig:GetDeploymentStrategy", + "appconfig:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "appconfig:UpdateDeploymentStrategy", + "appconfig:TagResource", + "appconfig:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DeploymentDurationInMinutes": { + "description": "Total amount of time for a deployment to last.", + "type": "number" + }, + "Description": { + "description": "A description of the deployment strategy.", + "type": "string" + }, + "FinalBakeTimeInMinutes": { + "description": "Specifies the amount of time AWS AppConfig monitors for Amazon CloudWatch alarms after the configuration has been deployed to 100% of its targets, before considering the deployment to be complete. If an alarm is triggered during this time, AWS AppConfig rolls back the deployment. You must configure permissions for AWS AppConfig to roll back based on CloudWatch alarms. For more information, see Configuring permissions for rollback based on Amazon CloudWatch alarms in the AWS AppConfig User Guide.", + "type": "number" + }, + "GrowthFactor": { + "description": "The percentage of targets to receive a deployed configuration during each interval.", + "type": "number" + }, + "GrowthType": { + "description": "The algorithm used to define how percentage grows over time. AWS AppConfig supports the following growth types:\n\nLinear: For this type, AWS AppConfig processes the deployment by dividing the total number of targets by the value specified for Step percentage. For example, a linear deployment that uses a Step percentage of 10 deploys the configuration to 10 percent of the hosts. After those deployments are complete, the system deploys the configuration to the next 10 percent. This continues until 100% of the targets have successfully received the configuration.\n\nExponential: For this type, AWS AppConfig processes the deployment exponentially using the following formula: G*(2^N). In this formula, G is the growth factor specified by the user and N is the number of steps until the configuration is deployed to all targets. For example, if you specify a growth factor of 2, then the system rolls out the configuration as follows:\n\n2*(2^0)\n\n2*(2^1)\n\n2*(2^2)\n\nExpressed numerically, the deployment rolls out as follows: 2% of the targets, 4% of the targets, 8% of the targets, and continues until the configuration has been deployed to all targets.", + "enum": [ + "EXPONENTIAL", + "LINEAR" + ], + "type": "string" + }, + "Id": { + "description": "The deployment strategy ID.", + "type": "string" + }, + "Name": { + "description": "A name for the deployment strategy.", + "type": "string" + }, + "ReplicateTo": { + "description": "Save the deployment strategy to a Systems Manager (SSM) document.", + "enum": [ + "NONE", + "SSM_DOCUMENT" + ], + "type": "string" + }, + "Tags": { + "description": "Assigns metadata to an AWS AppConfig resource. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define. You can specify a maximum of 50 tags for a resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "DeploymentDurationInMinutes", + "GrowthFactor", + "Name", + "ReplicateTo" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appconfig.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "appconfig:TagResource", + "appconfig:UntagResource", + "appconfig:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppConfig::DeploymentStrategy" +} diff --git a/src/schema/aws-appconfig-environment.json b/src/schema/aws-appconfig-environment.json index 4936c80b..273b0ce2 100644 --- a/src/schema/aws-appconfig-environment.json +++ b/src/schema/aws-appconfig-environment.json @@ -1,177 +1,189 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId" - ], - "definitions": { - "Monitor": { - "additionalProperties": false, - "description": "Amazon CloudWatch alarm to monitor during the deployment process.", - "properties": { - "AlarmArn": { - "description": "Amazon Resource Name (ARN) of the Amazon CloudWatch alarm.", - "maxLength": 2048, - "minLength": 1, - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::CloudWatch::Alarm" - }, - "type": "string" - }, - "AlarmRoleArn": { - "description": "ARN of an AWS Identity and Access Management (IAM) role for AWS AppConfig to monitor AlarmArn.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^((arn):(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):(iam)::\\d{12}:role[/].*)$", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::Role" - }, - "type": "string" - } - }, - "required": [ - "AlarmArn" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Metadata to assign to the environment. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", - "properties": { - "Key": { - "description": "The key-value string map. The valid character set is [a-zA-Z1-9+-=._:/]. The tag key can be up to 128 characters and must not start with aws:.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The tag value can be up to 256 characters.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppConfig::Environment", - "handlers": { - "create": { - "permissions": [ - "appconfig:CreateEnvironment", - "appconfig:GetEnvironment", - "appconfig:ListTagsForResource", - "appconfig:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "appconfig:GetEnvironment", - "appconfig:DeleteEnvironment" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApplicationId": { - "$ref": "resource-schema.json#/properties/ApplicationId" - } - }, - "required": [ - "ApplicationId" - ] - }, - "permissions": [ - "appconfig:ListEnvironments" - ] - }, - "read": { - "permissions": [ - "appconfig:GetEnvironment", - "appconfig:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "appconfig:UpdateEnvironment", - "appconfig:TagResource", - "appconfig:UntagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationId", - "/properties/EnvironmentId" - ], - "properties": { - "ApplicationId": { - "description": "The application ID.", - "pattern": "[a-z0-9]{4,7}", - "type": "string" - }, - "Description": { - "description": "A description of the environment.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "EnvironmentId": { - "description": "The environment ID.", - "pattern": "[a-z0-9]{4,7}", - "type": "string" - }, - "Monitors": { - "description": "Amazon CloudWatch alarms to monitor during the deployment process.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Monitor" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - }, - "Name": { - "description": "A name for the environment.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "Metadata to assign to the environment. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/EnvironmentId" - ], - "required": [ - "Name", - "ApplicationId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appconfig.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "appconfig:TagResource", - "appconfig:UntagResource", - "appconfig:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AppConfig::Environment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "definitions": { + "Monitor": { + "additionalProperties": false, + "description": "Amazon CloudWatch alarm to monitor during the deployment process.", + "properties": { + "AlarmArn": { + "description": "Amazon Resource Name (ARN) of the Amazon CloudWatch alarm.", + "maxLength": 2048, + "minLength": 1, + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::CloudWatch::Alarm" + }, + "type": "string" + }, + "AlarmRoleArn": { + "description": "ARN of an AWS Identity and Access Management (IAM) role for AWS AppConfig to monitor AlarmArn.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^((arn):(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):(iam)::\\d{12}:role[/].*)$", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + }, + "type": "string" + } + }, + "required": [ + "AlarmArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Metadata to assign to the environment. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", + "properties": { + "Key": { + "description": "The key-value string map. The valid character set is [a-zA-Z1-9+-=._:/]. The tag key can be up to 128 characters and must not start with aws:.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The tag value can be up to 256 characters.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppConfig::Environment", + "handlers": { + "create": { + "permissions": [ + "appconfig:CreateEnvironment", + "appconfig:GetEnvironment", + "appconfig:ListTagsForResource", + "appconfig:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "appconfig:GetEnvironment", + "appconfig:DeleteEnvironment" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "appconfig:ListEnvironments" + ] + }, + "read": { + "permissions": [ + "appconfig:GetEnvironment", + "appconfig:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "appconfig:UpdateEnvironment", + "appconfig:TagResource", + "appconfig:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/EnvironmentId" + ], + "properties": { + "ApplicationId": { + "description": "The application ID.", + "pattern": "[a-z0-9]{4,7}", + "type": "string" + }, + "DeletionProtectionCheck": { + "description": "On resource deletion this controls whether the Deletion Protection check should be applied, bypassed, or (the default) whether the behavior should be controlled by the account-level Deletion Protection setting. See https://docs.aws.amazon.com/appconfig/latest/userguide/deletion-protection.html", + "enum": [ + "ACCOUNT_DEFAULT", + "APPLY", + "BYPASS" + ], + "type": "string" + }, + "Description": { + "description": "A description of the environment.", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "EnvironmentId": { + "description": "The environment ID.", + "pattern": "[a-z0-9]{4,7}", + "type": "string" + }, + "Monitors": { + "description": "Amazon CloudWatch alarms to monitor during the deployment process.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Monitor" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "Name": { + "description": "A name for the environment.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "Metadata to assign to the environment. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/EnvironmentId" + ], + "required": [ + "Name", + "ApplicationId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appconfig.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "appconfig:TagResource", + "appconfig:UntagResource", + "appconfig:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppConfig::Environment", + "writeOnlyProperties": [ + "/properties/DeletionProtectionCheck" + ] +} diff --git a/src/schema/aws-appconfig-extension.json b/src/schema/aws-appconfig-extension.json index 0d357a2c..bb19114c 100644 --- a/src/schema/aws-appconfig-extension.json +++ b/src/schema/aws-appconfig-extension.json @@ -1,214 +1,209 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ], - "definitions": { - "Action": { - "additionalProperties": false, - "description": "An action for an extension to take at a specific action point.", - "properties": { - "Description": { - "description": "The description of the extension Action.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "Name": { - "description": "The name of the extension action.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "RoleArn": { - "description": "The ARN of the role for invoking the extension action.", - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "Uri": { - "description": "The URI of the extension action.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Name", - "Uri" - ], - "type": "object" - }, - "Actions": { - "description": "A list of actions for an extension to take at a specific action point.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Action" - }, - "type": "array", - "uniqueItems": true - }, - "Parameter": { - "additionalProperties": false, - "description": "A parameter for the extension to send to a specific action.", - "properties": { - "Description": { - "description": "The description of the extension Parameter.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "Dynamic": { - "type": "boolean" - }, - "Required": { - "type": "boolean" - } - }, - "required": [ - "Required" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppConfig::Extension", - "handlers": { - "create": { - "permissions": [ - "appconfig:CreateExtension", - "appconfig:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "appconfig:DeleteExtension", - "appconfig:UntagResource" - ] - }, - "list": { - "permissions": [ - "appconfig:ListExtensions" - ] - }, - "read": { - "permissions": [ - "appconfig:GetExtension" - ] - }, - "update": { - "permissions": [ - "appconfig:UpdateExtension", - "appconfig:TagResource", - "appconfig:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Actions": { - "additionalProperties": false, - "patternProperties": { - "^.+$": { - "$ref": "#/definitions/Actions" - } - }, - "type": "object" - }, - "Arn": { - "type": "string" - }, - "Description": { - "description": "Description of the extension.", - "type": "string" - }, - "Id": { - "type": "string" - }, - "LatestVersionNumber": { - "type": "integer" - }, - "Name": { - "description": "Name of the extension.", - "type": "string" - }, - "Parameters": { - "additionalProperties": false, - "patternProperties": { - "^.+$": { - "$ref": "#/definitions/Parameter" - } - }, - "type": "object" - }, - "Tags": { - "description": "An array of key-value tags to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VersionNumber": { - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/VersionNumber" - ], - "required": [ - "Name", - "Actions" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "appconfig:TagResource", - "appconfig:UntagResource", - "appconfig:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AppConfig::Extension", - "writeOnlyProperties": [ - "/properties/LatestVersionNumber", - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Action": { + "additionalProperties": false, + "description": "An action for an extension to take at a specific action point.", + "properties": { + "Description": { + "description": "The description of the extension Action.", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "Name": { + "description": "The name of the extension action.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the role for invoking the extension action.", + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "Uri": { + "description": "The URI of the extension action.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name", + "Uri" + ], + "type": "object" + }, + "Actions": { + "description": "A list of actions for an extension to take at a specific action point.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Action" + }, + "type": "array", + "uniqueItems": true + }, + "Parameter": { + "additionalProperties": false, + "description": "A parameter for the extension to send to a specific action.", + "properties": { + "Description": { + "description": "The description of the extension Parameter.", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "Dynamic": { + "type": "boolean" + }, + "Required": { + "type": "boolean" + } + }, + "required": [ + "Required" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppConfig::Extension", + "handlers": { + "create": { + "permissions": [ + "appconfig:CreateExtension", + "appconfig:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "appconfig:DeleteExtension", + "appconfig:UntagResource" + ] + }, + "list": { + "permissions": [ + "appconfig:ListExtensions" + ] + }, + "read": { + "permissions": [ + "appconfig:GetExtension", + "appconfig:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "appconfig:UpdateExtension", + "appconfig:TagResource", + "appconfig:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Actions": { + "additionalProperties": false, + "patternProperties": { + "^.+$": { + "$ref": "#/definitions/Actions" + } + }, + "type": "object" + }, + "Arn": { + "type": "string" + }, + "Description": { + "description": "Description of the extension.", + "type": "string" + }, + "Id": { + "type": "string" + }, + "LatestVersionNumber": { + "type": "integer" + }, + "Name": { + "description": "Name of the extension.", + "type": "string" + }, + "Parameters": { + "additionalProperties": false, + "patternProperties": { + "^.+$": { + "$ref": "#/definitions/Parameter" + } + }, + "type": "object" + }, + "Tags": { + "description": "An array of key-value tags to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VersionNumber": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/VersionNumber" + ], + "required": [ + "Name", + "Actions" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "appconfig:TagResource", + "appconfig:UntagResource", + "appconfig:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppConfig::Extension", + "writeOnlyProperties": [ + "/properties/LatestVersionNumber" + ] +} diff --git a/src/schema/aws-appconfig-extensionassociation.json b/src/schema/aws-appconfig-extensionassociation.json index a72c066c..de75794a 100644 --- a/src/schema/aws-appconfig-extensionassociation.json +++ b/src/schema/aws-appconfig-extensionassociation.json @@ -1,139 +1,134 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ExtensionIdentifier", - "/properties/ResourceIdentifier", - "/properties/ExtensionVersionNumber", - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "An example resource schema demonstrating some basic constructs and validation rules.", - "handlers": { - "create": { - "permissions": [ - "appconfig:CreateExtensionAssociation", - "appconfig:TagResource" - ] - }, - "delete": { - "permissions": [ - "appconfig:DeleteExtensionAssociation", - "appconfig:UntagResource" - ] - }, - "list": { - "permissions": [ - "appconfig:ListExtensionAssociations" - ] - }, - "read": { - "permissions": [ - "appconfig:GetExtensionAssociation" - ] - }, - "update": { - "permissions": [ - "appconfig:UpdateExtensionAssociation", - "appconfig:TagResource", - "appconfig:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "ExtensionArn": { - "type": "string" - }, - "ExtensionIdentifier": { - "type": "string" - }, - "ExtensionVersionNumber": { - "type": "integer" - }, - "Id": { - "type": "string" - }, - "Parameters": { - "additionalProperties": false, - "patternProperties": { - "^.+$": { - "type": "string" - } - }, - "type": "object" - }, - "ResourceArn": { - "type": "string" - }, - "ResourceIdentifier": { - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/ResourceArn", - "/properties/ExtensionArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "appconfig:TagResource", - "appconfig:UntagResource", - "appconfig:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AppConfig::ExtensionAssociation", - "writeOnlyProperties": [ - "/properties/ExtensionIdentifier", - "/properties/ResourceIdentifier", - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ExtensionIdentifier", + "/properties/ResourceIdentifier", + "/properties/ExtensionVersionNumber" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "handlers": { + "create": { + "permissions": [ + "appconfig:CreateExtensionAssociation", + "appconfig:TagResource" + ] + }, + "delete": { + "permissions": [ + "appconfig:DeleteExtensionAssociation", + "appconfig:UntagResource" + ] + }, + "list": { + "permissions": [ + "appconfig:ListExtensionAssociations" + ] + }, + "read": { + "permissions": [ + "appconfig:GetExtensionAssociation", + "appconfig:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "appconfig:UpdateExtensionAssociation", + "appconfig:TagResource", + "appconfig:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "ExtensionArn": { + "type": "string" + }, + "ExtensionIdentifier": { + "type": "string" + }, + "ExtensionVersionNumber": { + "type": "integer" + }, + "Id": { + "type": "string" + }, + "Parameters": { + "additionalProperties": false, + "patternProperties": { + "^.+$": { + "type": "string" + } + }, + "type": "object" + }, + "ResourceArn": { + "type": "string" + }, + "ResourceIdentifier": { + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/ResourceArn", + "/properties/ExtensionArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "appconfig:TagResource", + "appconfig:UntagResource", + "appconfig:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppConfig::ExtensionAssociation", + "writeOnlyProperties": [ + "/properties/ExtensionIdentifier", + "/properties/ResourceIdentifier" + ] +} diff --git a/src/schema/aws-appconfig-hostedconfigurationversion.json b/src/schema/aws-appconfig-hostedconfigurationversion.json index b6f65fa0..e1cf9a2e 100644 --- a/src/schema/aws-appconfig-hostedconfigurationversion.json +++ b/src/schema/aws-appconfig-hostedconfigurationversion.json @@ -1,117 +1,117 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId", - "/properties/ConfigurationProfileId", - "/properties/Description", - "/properties/Content", - "/properties/ContentType", - "/properties/LatestVersionNumber", - "/properties/VersionLabel" - ], - "description": "Resource Type definition for AWS::AppConfig::HostedConfigurationVersion", - "handlers": { - "create": { - "permissions": [ - "appconfig:CreateHostedConfigurationVersion" - ] - }, - "delete": { - "permissions": [ - "appconfig:DeleteHostedConfigurationVersion" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApplicationId": { - "$ref": "resource-schema.json#/properties/ApplicationId" - }, - "ConfigurationProfileId": { - "$ref": "resource-schema.json#/properties/ConfigurationProfileId" - } - }, - "required": [ - "ApplicationId", - "ConfigurationProfileId" - ] - }, - "permissions": [ - "appconfig:ListHostedConfigurationVersions" - ] - }, - "read": { - "permissions": [ - "appconfig:GetHostedConfigurationVersion" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationId", - "/properties/ConfigurationProfileId", - "/properties/VersionNumber" - ], - "properties": { - "ApplicationId": { - "description": "The application ID.", - "pattern": "[a-z0-9]{4,7}", - "type": "string" - }, - "ConfigurationProfileId": { - "description": "The configuration profile ID.", - "pattern": "[a-z0-9]{4,7}", - "type": "string" - }, - "Content": { - "description": "The content of the configuration or the configuration data.", - "type": "string" - }, - "ContentType": { - "description": "A standard MIME type describing the format of the configuration content.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Description": { - "description": "A description of the hosted configuration version.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "LatestVersionNumber": { - "description": "An optional locking token used to prevent race conditions from overwriting configuration updates when creating a new version. To ensure your data is not overwritten when creating multiple hosted configuration versions in rapid succession, specify the version number of the latest hosted configuration version.", - "type": "integer" - }, - "VersionLabel": { - "description": "A user-defined label for an AWS AppConfig hosted configuration version.", - "maxLength": 64, - "minLength": 0, - "pattern": "^$|.*[^0-9].*", - "type": "string" - }, - "VersionNumber": { - "description": "Current version number of hosted configuration version.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/VersionNumber" - ], - "required": [ - "ApplicationId", - "ConfigurationProfileId", - "Content", - "ContentType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appconfig.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::AppConfig::HostedConfigurationVersion", - "writeOnlyProperties": [ - "/properties/LatestVersionNumber" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/ConfigurationProfileId", + "/properties/Description", + "/properties/Content", + "/properties/ContentType", + "/properties/LatestVersionNumber", + "/properties/VersionLabel" + ], + "description": "Resource Type definition for AWS::AppConfig::HostedConfigurationVersion", + "handlers": { + "create": { + "permissions": [ + "appconfig:CreateHostedConfigurationVersion" + ] + }, + "delete": { + "permissions": [ + "appconfig:DeleteHostedConfigurationVersion" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + }, + "ConfigurationProfileId": { + "$ref": "resource-schema.json#/properties/ConfigurationProfileId" + } + }, + "required": [ + "ApplicationId", + "ConfigurationProfileId" + ] + }, + "permissions": [ + "appconfig:ListHostedConfigurationVersions" + ] + }, + "read": { + "permissions": [ + "appconfig:GetHostedConfigurationVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/ConfigurationProfileId", + "/properties/VersionNumber" + ], + "properties": { + "ApplicationId": { + "description": "The application ID.", + "pattern": "[a-z0-9]{4,7}", + "type": "string" + }, + "ConfigurationProfileId": { + "description": "The configuration profile ID.", + "pattern": "[a-z0-9]{4,7}", + "type": "string" + }, + "Content": { + "description": "The content of the configuration or the configuration data.", + "type": "string" + }, + "ContentType": { + "description": "A standard MIME type describing the format of the configuration content.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Description": { + "description": "A description of the hosted configuration version.", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "LatestVersionNumber": { + "description": "An optional locking token used to prevent race conditions from overwriting configuration updates when creating a new version. To ensure your data is not overwritten when creating multiple hosted configuration versions in rapid succession, specify the version number of the latest hosted configuration version.", + "type": "integer" + }, + "VersionLabel": { + "description": "A user-defined label for an AWS AppConfig hosted configuration version.", + "maxLength": 64, + "minLength": 0, + "pattern": "^$|.*[^0-9].*", + "type": "string" + }, + "VersionNumber": { + "description": "Current version number of hosted configuration version.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VersionNumber" + ], + "required": [ + "ApplicationId", + "ConfigurationProfileId", + "Content", + "ContentType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appconfig.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::AppConfig::HostedConfigurationVersion", + "writeOnlyProperties": [ + "/properties/LatestVersionNumber" + ] +} diff --git a/src/schema/aws-appflow-connector.json b/src/schema/aws-appflow-connector.json index 0f11ec00..4887b173 100644 --- a/src/schema/aws-appflow-connector.json +++ b/src/schema/aws-appflow-connector.json @@ -1,114 +1,114 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConnectorLabel" - ], - "definitions": { - "ConnectorProvisioningConfig": { - "additionalProperties": false, - "description": "Contains information about the configuration of the connector being registered.", - "properties": { - "Lambda": { - "$ref": "#/definitions/LambdaConnectorProvisioningConfig", - "description": "Contains information about the configuration of the lambda which is being registered as the connector." - } - }, - "type": "object" - }, - "LambdaConnectorProvisioningConfig": { - "additionalProperties": false, - "description": "Contains information about the configuration of the lambda which is being registered as the connector.", - "properties": { - "LambdaArn": { - "description": "Lambda ARN of the connector being registered.", - "maxLength": 512, - "pattern": "arn:*:.*:.*:[0-9]+:.*", - "type": "string" - } - }, - "required": [ - "LambdaArn" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::AppFlow::Connector", - "handlers": { - "create": { - "permissions": [ - "appflow:RegisterConnector", - "lambda:InvokeFunction" - ] - }, - "delete": { - "permissions": [ - "appflow:UnRegisterConnector" - ] - }, - "list": { - "permissions": [ - "appflow:ListConnectors" - ] - }, - "read": { - "permissions": [ - "appflow:DescribeConnector" - ] - }, - "update": { - "permissions": [ - "appflow:UpdateConnectorRegistration", - "lambda:InvokeFunction" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConnectorLabel" - ], - "properties": { - "ConnectorArn": { - "description": " The arn of the connector. The arn is unique for each ConnectorRegistration in your AWS account.", - "maxLength": 512, - "pattern": "arn:.*:appflow:.*:[0-9]+:.*", - "type": "string" - }, - "ConnectorLabel": { - "description": " The name of the connector. The name is unique for each ConnectorRegistration in your AWS account.", - "maxLength": 512, - "pattern": "[a-zA-Z0-9][\\w!@#.-]+", - "type": "string" - }, - "ConnectorProvisioningConfig": { - "$ref": "#/definitions/ConnectorProvisioningConfig", - "description": "Contains information about the configuration of the connector being registered." - }, - "ConnectorProvisioningType": { - "description": "The provisioning type of the connector. Currently the only supported value is LAMBDA. ", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z0-9][\\w!@#.-]+", - "type": "string" - }, - "Description": { - "description": "A description about the connector that's being registered.", - "maxLength": 2048, - "pattern": "[\\s\\w/!@#+=.-]*", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ConnectorArn" - ], - "required": [ - "ConnectorProvisioningType", - "ConnectorProvisioningConfig" - ], - "sourceUrl": "https://docs.aws.amazon.com/appflow/latest/userguide/what-is-appflow.html", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::AppFlow::Connector" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConnectorLabel" + ], + "definitions": { + "ConnectorProvisioningConfig": { + "additionalProperties": false, + "description": "Contains information about the configuration of the connector being registered.", + "properties": { + "Lambda": { + "$ref": "#/definitions/LambdaConnectorProvisioningConfig", + "description": "Contains information about the configuration of the lambda which is being registered as the connector." + } + }, + "type": "object" + }, + "LambdaConnectorProvisioningConfig": { + "additionalProperties": false, + "description": "Contains information about the configuration of the lambda which is being registered as the connector.", + "properties": { + "LambdaArn": { + "description": "Lambda ARN of the connector being registered.", + "maxLength": 512, + "pattern": "arn:*:.*:.*:[0-9]+:.*", + "type": "string" + } + }, + "required": [ + "LambdaArn" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::AppFlow::Connector", + "handlers": { + "create": { + "permissions": [ + "appflow:RegisterConnector", + "lambda:InvokeFunction" + ] + }, + "delete": { + "permissions": [ + "appflow:UnRegisterConnector" + ] + }, + "list": { + "permissions": [ + "appflow:ListConnectors" + ] + }, + "read": { + "permissions": [ + "appflow:DescribeConnector" + ] + }, + "update": { + "permissions": [ + "appflow:UpdateConnectorRegistration", + "lambda:InvokeFunction" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConnectorLabel" + ], + "properties": { + "ConnectorArn": { + "description": " The arn of the connector. The arn is unique for each ConnectorRegistration in your AWS account.", + "maxLength": 512, + "pattern": "arn:.*:appflow:.*:[0-9]+:.*", + "type": "string" + }, + "ConnectorLabel": { + "description": " The name of the connector. The name is unique for each ConnectorRegistration in your AWS account.", + "maxLength": 512, + "pattern": "[a-zA-Z0-9][\\w!@#.-]+", + "type": "string" + }, + "ConnectorProvisioningConfig": { + "$ref": "#/definitions/ConnectorProvisioningConfig", + "description": "Contains information about the configuration of the connector being registered." + }, + "ConnectorProvisioningType": { + "description": "The provisioning type of the connector. Currently the only supported value is LAMBDA. ", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z0-9][\\w!@#.-]+", + "type": "string" + }, + "Description": { + "description": "A description about the connector that's being registered.", + "maxLength": 2048, + "pattern": "[\\s\\w/!@#+=.-]*", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ConnectorArn" + ], + "required": [ + "ConnectorProvisioningType", + "ConnectorProvisioningConfig" + ], + "sourceUrl": "https://docs.aws.amazon.com/appflow/latest/userguide/what-is-appflow.html", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::AppFlow::Connector" +} diff --git a/src/schema/aws-appflow-connectorprofile.json b/src/schema/aws-appflow-connectorprofile.json index 9d768d14..185b252d 100644 --- a/src/schema/aws-appflow-connectorprofile.json +++ b/src/schema/aws-appflow-connectorprofile.json @@ -1,1265 +1,1265 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConnectorProfileName", - "/properties/ConnectorType", - "/properties/ConnectorLabel" - ], - "definitions": { - "AccessKeyId": { - "maxLength": 256, - "pattern": "\\S+", - "type": "string" - }, - "AccessToken": { - "maxLength": 4096, - "pattern": "\\S+", - "type": "string" - }, - "AccountName": { - "maxLength": 512, - "pattern": "\\S+", - "type": "string" - }, - "AmplitudeConnectorProfileCredentials": { - "properties": { - "ApiKey": { - "$ref": "#/definitions/ApiKey", - "description": "A unique alphanumeric identi\ufb01er used to authenticate a user, developer, or calling program to your API." - }, - "SecretKey": { - "$ref": "#/definitions/SecretKey" - } - }, - "required": [ - "ApiKey", - "SecretKey" - ], - "type": "object" - }, - "ApiKey": { - "maxLength": 256, - "pattern": "\\S+", - "type": "string" - }, - "ApiKeyCredentials": { - "additionalProperties": false, - "properties": { - "ApiKey": { - "$ref": "#/definitions/ApiKey" - }, - "ApiSecretKey": { - "$ref": "#/definitions/ApiSecretKey" - } - }, - "required": [ - "ApiKey" - ], - "type": "object" - }, - "ApiSecretKey": { - "maxLength": 256, - "pattern": "\\S+", - "type": "string" - }, - "ApiToken": { - "maxLength": 256, - "pattern": "\\S+", - "type": "string" - }, - "ApplicationHostUrl": { - "maxLength": 256, - "pattern": "^(https?)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", - "type": "string" - }, - "ApplicationKey": { - "maxLength": 512, - "pattern": "\\S+", - "type": "string" - }, - "ApplicationServicePath": { - "maxLength": 512, - "pattern": "\\S+", - "type": "string" - }, - "AuthCode": { - "maxLength": 4096, - "pattern": "\\S+", - "type": "string" - }, - "AuthenticationType": { - "enum": [ - "OAUTH2", - "APIKEY", - "BASIC", - "CUSTOM" - ], - "type": "string" - }, - "BasicAuthCredentials": { - "additionalProperties": false, - "properties": { - "Password": { - "$ref": "#/definitions/Password" - }, - "Username": { - "$ref": "#/definitions/Username" - } - }, - "required": [ - "Username", - "Password" - ], - "type": "object" - }, - "BucketName": { - "maxLength": 63, - "minLength": 3, - "pattern": "\\S+", - "type": "string" - }, - "BucketPrefix": { - "maxLength": 128, - "type": "string" - }, - "BusinessUnitId": { - "maxLength": 18, - "pattern": "\\S+", - "type": "string" - }, - "ClientCredentialsArn": { - "maxLength": 2048, - "pattern": "arn:aws:secretsmanager:.*:[0-9]+:.*", - "type": "string" - }, - "ClientId": { - "maxLength": 512, - "pattern": "\\S+", - "type": "string" - }, - "ClientNumber": { - "maxLength": 3, - "minLength": 3, - "pattern": "^\\d{3}$", - "type": "string" - }, - "ClientSecret": { - "maxLength": 512, - "pattern": "\\S+", - "type": "string" - }, - "ClusterIdentifier": { - "maxLength": 512, - "pattern": "\\S+", - "type": "string" - }, - "ConnectorOAuthRequest": { - "properties": { - "AuthCode": { - "description": "The code provided by the connector when it has been authenticated via the connected app.", - "type": "string" - }, - "RedirectUri": { - "description": "The URL to which the authentication server redirects the browser after authorization has been\ngranted.", - "type": "string" - } - }, - "type": "object" - }, - "ConnectorProfileConfig": { - "description": "Connector specific configurations needed to create connector profile", - "properties": { - "ConnectorProfileCredentials": { - "$ref": "#/definitions/ConnectorProfileCredentials" - }, - "ConnectorProfileProperties": { - "$ref": "#/definitions/ConnectorProfileProperties" - } - }, - "type": "object" - }, - "ConnectorProfileCredentials": { - "description": "Connector specific configuration needed to create connector profile based on Authentication mechanism", - "properties": { - "Amplitude": { - "$ref": "#/definitions/AmplitudeConnectorProfileCredentials" - }, - "CustomConnector": { - "$ref": "#/definitions/CustomConnectorProfileCredentials" - }, - "Datadog": { - "$ref": "#/definitions/DatadogConnectorProfileCredentials" - }, - "Dynatrace": { - "$ref": "#/definitions/DynatraceConnectorProfileCredentials" - }, - "GoogleAnalytics": { - "$ref": "#/definitions/GoogleAnalyticsConnectorProfileCredentials" - }, - "InforNexus": { - "$ref": "#/definitions/InforNexusConnectorProfileCredentials" - }, - "Marketo": { - "$ref": "#/definitions/MarketoConnectorProfileCredentials" - }, - "Pardot": { - "$ref": "#/definitions/PardotConnectorProfileCredentials" - }, - "Redshift": { - "$ref": "#/definitions/RedshiftConnectorProfileCredentials" - }, - "SAPOData": { - "$ref": "#/definitions/SAPODataConnectorProfileCredentials" - }, - "Salesforce": { - "$ref": "#/definitions/SalesforceConnectorProfileCredentials" - }, - "ServiceNow": { - "$ref": "#/definitions/ServiceNowConnectorProfileCredentials" - }, - "Singular": { - "$ref": "#/definitions/SingularConnectorProfileCredentials" - }, - "Slack": { - "$ref": "#/definitions/SlackConnectorProfileCredentials" - }, - "Snowflake": { - "$ref": "#/definitions/SnowflakeConnectorProfileCredentials" - }, - "Trendmicro": { - "$ref": "#/definitions/TrendmicroConnectorProfileCredentials" - }, - "Veeva": { - "$ref": "#/definitions/VeevaConnectorProfileCredentials" - }, - "Zendesk": { - "$ref": "#/definitions/ZendeskConnectorProfileCredentials" - } - }, - "type": "object" - }, - "ConnectorProfileProperties": { - "description": "Connector specific properties needed to create connector profile - currently not needed for Amplitude, Trendmicro, Googleanalytics and Singular", - "properties": { - "CustomConnector": { - "$ref": "#/definitions/CustomConnectorProfileProperties" - }, - "Datadog": { - "$ref": "#/definitions/DatadogConnectorProfileProperties" - }, - "Dynatrace": { - "$ref": "#/definitions/DynatraceConnectorProfileProperties" - }, - "InforNexus": { - "$ref": "#/definitions/InforNexusConnectorProfileProperties" - }, - "Marketo": { - "$ref": "#/definitions/MarketoConnectorProfileProperties" - }, - "Pardot": { - "$ref": "#/definitions/PardotConnectorProfileProperties" - }, - "Redshift": { - "$ref": "#/definitions/RedshiftConnectorProfileProperties" - }, - "SAPOData": { - "$ref": "#/definitions/SAPODataConnectorProfileProperties" - }, - "Salesforce": { - "$ref": "#/definitions/SalesforceConnectorProfileProperties" - }, - "ServiceNow": { - "$ref": "#/definitions/ServiceNowConnectorProfileProperties" - }, - "Slack": { - "$ref": "#/definitions/SlackConnectorProfileProperties" - }, - "Snowflake": { - "$ref": "#/definitions/SnowflakeConnectorProfileProperties" - }, - "Veeva": { - "$ref": "#/definitions/VeevaConnectorProfileProperties" - }, - "Zendesk": { - "$ref": "#/definitions/ZendeskConnectorProfileProperties" - } - }, - "type": "object" - }, - "ConnectorType": { - "enum": [ - "Salesforce", - "Pardot", - "Singular", - "Slack", - "Redshift", - "Marketo", - "Googleanalytics", - "Zendesk", - "Servicenow", - "SAPOData", - "Datadog", - "Trendmicro", - "Snowflake", - "Dynatrace", - "Infornexus", - "Amplitude", - "Veeva", - "CustomConnector" - ], - "type": "string" - }, - "CredentialsMap": { - "additionalProperties": false, - "description": "A map for properties for custom authentication.", - "patternProperties": { - "^[\\w]{1,128}$": { - "description": "A string containing the value for the property", - "maxLength": 2048, - "minLength": 1, - "pattern": "\\S+", - "type": "string" - } - }, - "required": [], - "type": "object" - }, - "CustomAuthCredentials": { - "additionalProperties": false, - "properties": { - "CredentialsMap": { - "$ref": "#/definitions/CredentialsMap" - }, - "CustomAuthenticationType": { - "$ref": "#/definitions/CustomAuthenticationType" - } - }, - "required": [ - "CustomAuthenticationType" - ], - "type": "object" - }, - "CustomAuthenticationType": { - "maxLength": 256, - "pattern": "\\S+", - "type": "string" - }, - "CustomConnectorProfileCredentials": { - "additionalProperties": false, - "properties": { - "ApiKey": { - "$ref": "#/definitions/ApiKeyCredentials" - }, - "AuthenticationType": { - "$ref": "#/definitions/AuthenticationType" - }, - "Basic": { - "$ref": "#/definitions/BasicAuthCredentials" - }, - "Custom": { - "$ref": "#/definitions/CustomAuthCredentials" - }, - "Oauth2": { - "$ref": "#/definitions/OAuth2Credentials" - } - }, - "required": [ - "AuthenticationType" - ], - "type": "object" - }, - "CustomConnectorProfileProperties": { - "additionalProperties": false, - "properties": { - "OAuth2Properties": { - "$ref": "#/definitions/OAuth2Properties" - }, - "ProfileProperties": { - "$ref": "#/definitions/ProfileProperties" - } - }, - "type": "object" - }, - "DataApiRoleArn": { - "maxLength": 512, - "pattern": "arn:aws:iam:.*:[0-9]+:.*", - "type": "string" - }, - "DatabaseName": { - "maxLength": 512, - "pattern": "\\S+", - "type": "string" - }, - "DatabaseUrl": { - "maxLength": 512, - "pattern": "\\S+", - "type": "string" - }, - "DatadogConnectorProfileCredentials": { - "properties": { - "ApiKey": { - "$ref": "#/definitions/ApiKey", - "description": "A unique alphanumeric identi\ufb01er used to authenticate a user, developer, or calling program to your API." - }, - "ApplicationKey": { - "$ref": "#/definitions/ApplicationKey", - "description": "Application keys, in conjunction with your API key, give you full access to Datadog\u2019s programmatic API. Application keys are associated with the user account that created them. The application key is used to log all requests made to the API." - } - }, - "required": [ - "ApiKey", - "ApplicationKey" - ], - "type": "object" - }, - "DatadogConnectorProfileProperties": { - "properties": { - "InstanceUrl": { - "$ref": "#/definitions/InstanceUrl", - "description": "The location of the Datadog resource" - } - }, - "required": [ - "InstanceUrl" - ], - "type": "object" - }, - "DynatraceConnectorProfileCredentials": { - "properties": { - "ApiToken": { - "$ref": "#/definitions/ApiToken", - "description": "The API tokens used by Dynatrace API to authenticate various API calls." - } - }, - "required": [ - "ApiToken" - ], - "type": "object" - }, - "DynatraceConnectorProfileProperties": { - "properties": { - "InstanceUrl": { - "$ref": "#/definitions/InstanceUrl", - "description": "The location of the Dynatrace resource" - } - }, - "required": [ - "InstanceUrl" - ], - "type": "object" - }, - "GoogleAnalyticsConnectorProfileCredentials": { - "properties": { - "AccessToken": { - "$ref": "#/definitions/AccessToken", - "description": "The credentials used to access protected resources." - }, - "ClientId": { - "$ref": "#/definitions/ClientId", - "description": "The identi\ufb01er for the desired client." - }, - "ClientSecret": { - "$ref": "#/definitions/ClientSecret", - "description": "The client secret used by the oauth client to authenticate to the authorization server." - }, - "ConnectorOAuthRequest": { - "$ref": "#/definitions/ConnectorOAuthRequest", - "description": "The oauth needed to request security tokens from the connector endpoint." - }, - "RefreshToken": { - "$ref": "#/definitions/RefreshToken", - "description": "The credentials used to acquire new access tokens." - } - }, - "required": [ - "ClientId", - "ClientSecret" - ], - "type": "object" - }, - "InforNexusConnectorProfileCredentials": { - "properties": { - "AccessKeyId": { - "$ref": "#/definitions/AccessKeyId", - "description": "The Access Key portion of the credentials." - }, - "Datakey": { - "$ref": "#/definitions/Key", - "description": "The encryption keys used to encrypt data." - }, - "SecretAccessKey": { - "$ref": "#/definitions/Key", - "description": "The secret key used to sign requests." - }, - "UserId": { - "$ref": "#/definitions/Username", - "description": "The identi\ufb01er for the user." - } - }, - "required": [ - "AccessKeyId", - "UserId", - "SecretAccessKey", - "Datakey" - ], - "type": "object" - }, - "InforNexusConnectorProfileProperties": { - "properties": { - "InstanceUrl": { - "$ref": "#/definitions/InstanceUrl", - "description": "The location of the InforNexus resource" - } - }, - "required": [ - "InstanceUrl" - ], - "type": "object" - }, - "InstanceUrl": { - "maxLength": 256, - "pattern": "\\S+", - "type": "string" - }, - "JwtToken": { - "maxLength": 8000, - "pattern": "^[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_.+/=]*$", - "type": "string" - }, - "Key": { - "maxLength": 512, - "pattern": "\\S+", - "type": "string" - }, - "LogonLanguage": { - "maxLength": 2, - "pattern": "^[a-zA-Z0-9_]*$", - "type": "string" - }, - "MarketoConnectorProfileCredentials": { - "properties": { - "AccessToken": { - "$ref": "#/definitions/AccessToken", - "description": "The credentials used to access protected resources." - }, - "ClientId": { - "$ref": "#/definitions/ClientId", - "description": "The identi\ufb01er for the desired client." - }, - "ClientSecret": { - "$ref": "#/definitions/ClientSecret", - "description": "The client secret used by the oauth client to authenticate to the authorization server." - }, - "ConnectorOAuthRequest": { - "$ref": "#/definitions/ConnectorOAuthRequest", - "description": "The oauth needed to request security tokens from the connector endpoint." - } - }, - "required": [ - "ClientId", - "ClientSecret" - ], - "type": "object" - }, - "MarketoConnectorProfileProperties": { - "properties": { - "InstanceUrl": { - "$ref": "#/definitions/InstanceUrl", - "description": "The location of the Marketo resource" - } - }, - "required": [ - "InstanceUrl" - ], - "type": "object" - }, - "OAuth2Credentials": { - "additionalProperties": false, - "properties": { - "AccessToken": { - "$ref": "#/definitions/AccessToken" - }, - "ClientId": { - "$ref": "#/definitions/ClientId" - }, - "ClientSecret": { - "$ref": "#/definitions/ClientSecret" - }, - "OAuthRequest": { - "$ref": "#/definitions/ConnectorOAuthRequest" - }, - "RefreshToken": { - "$ref": "#/definitions/RefreshToken" - } - }, - "type": "object" - }, - "OAuth2GrantType": { - "enum": [ - "CLIENT_CREDENTIALS", - "AUTHORIZATION_CODE", - "JWT_BEARER" - ], - "type": "string" - }, - "OAuth2Properties": { - "additionalProperties": false, - "properties": { - "OAuth2GrantType": { - "$ref": "#/definitions/OAuth2GrantType" - }, - "TokenUrl": { - "maxLength": 256, - "minLength": 0, - "pattern": "^(https?)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", - "type": "string" - }, - "TokenUrlCustomProperties": { - "$ref": "#/definitions/TokenUrlCustomProperties" - } - }, - "type": "object" - }, - "OAuthProperties": { - "properties": { - "AuthCodeUrl": { - "maxLength": 256, - "pattern": "^(https?)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", - "type": "string" - }, - "OAuthScopes": { - "items": { - "maxLength": 128, - "pattern": "[/\\w]*", - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "TokenUrl": { - "maxLength": 256, - "pattern": "^(https?)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", - "type": "string" - } - }, - "type": "object" - }, - "PardotConnectorProfileCredentials": { - "properties": { - "AccessToken": { - "$ref": "#/definitions/AccessToken", - "description": "The credentials used to access protected resources." - }, - "ClientCredentialsArn": { - "$ref": "#/definitions/ClientCredentialsArn", - "description": "The client credentials to fetch access token and refresh token." - }, - "ConnectorOAuthRequest": { - "$ref": "#/definitions/ConnectorOAuthRequest", - "description": "The oauth needed to request security tokens from the connector endpoint." - }, - "RefreshToken": { - "$ref": "#/definitions/RefreshToken", - "description": "The credentials used to acquire new access tokens." - } - }, - "type": "object" - }, - "PardotConnectorProfileProperties": { - "properties": { - "BusinessUnitId": { - "$ref": "#/definitions/BusinessUnitId", - "description": "The Business unit id of Salesforce Pardot instance to be connected" - }, - "InstanceUrl": { - "$ref": "#/definitions/InstanceUrl", - "description": "The location of the Salesforce Pardot resource" - }, - "IsSandboxEnvironment": { - "description": "Indicates whether the connector profile applies to a demo or production environment", - "type": "boolean" - } - }, - "required": [ - "BusinessUnitId" - ], - "type": "object" - }, - "Password": { - "maxLength": 512, - "pattern": "\\S+", - "type": "string" - }, - "PortNumber": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "PrivateLinkServiceName": { - "maxLength": 512, - "pattern": "\\S+", - "type": "string" - }, - "ProfileProperties": { - "additionalProperties": false, - "description": "A map for properties for custom connector.", - "patternProperties": { - "^[\\w]{1,256}$": { - "description": "A string containing the value for the property", - "maxLength": 2048, - "minLength": 1, - "pattern": "\\S+", - "type": "string" - } - }, - "required": [], - "type": "object" - }, - "RedshiftConnectorProfileCredentials": { - "properties": { - "Password": { - "$ref": "#/definitions/Password", - "description": "The password that corresponds to the username." - }, - "Username": { - "$ref": "#/definitions/Username", - "description": "The name of the user." - } - }, - "type": "object" - }, - "RedshiftConnectorProfileProperties": { - "properties": { - "BucketName": { - "$ref": "#/definitions/BucketName", - "description": "The name of the Amazon S3 bucket associated with Redshift." - }, - "BucketPrefix": { - "$ref": "#/definitions/BucketPrefix", - "description": "The object key for the destination bucket in which Amazon AppFlow will place the \ufb01les." - }, - "ClusterIdentifier": { - "$ref": "#/definitions/ClusterIdentifier", - "description": "The unique identifier of the Amazon Redshift cluster." - }, - "DataApiRoleArn": { - "$ref": "#/definitions/DataApiRoleArn", - "description": "The Amazon Resource Name (ARN) of the IAM role that grants Amazon AppFlow access to the data through the Amazon Redshift Data API." - }, - "DatabaseName": { - "$ref": "#/definitions/DatabaseName", - "description": "The name of the Amazon Redshift database that will store the transferred data." - }, - "DatabaseUrl": { - "$ref": "#/definitions/DatabaseUrl", - "description": "The JDBC URL of the Amazon Redshift cluster." - }, - "IsRedshiftServerless": { - "description": "If Amazon AppFlow will connect to Amazon Redshift Serverless or Amazon Redshift cluster.", - "type": "boolean" - }, - "RoleArn": { - "$ref": "#/definitions/RoleArn", - "description": "The Amazon Resource Name (ARN) of the IAM role." - }, - "WorkgroupName": { - "$ref": "#/definitions/WorkgroupName", - "description": "The name of the Amazon Redshift serverless workgroup" - } - }, - "required": [ - "BucketName", - "RoleArn" - ], - "type": "object" - }, - "RefreshToken": { - "maxLength": 4096, - "pattern": "\\S+", - "type": "string" - }, - "Region": { - "maxLength": 64, - "pattern": "\\S+", - "type": "string" - }, - "RoleArn": { - "maxLength": 512, - "pattern": "arn:aws:iam:.*:[0-9]+:.*", - "type": "string" - }, - "SAPODataConnectorProfileCredentials": { - "properties": { - "BasicAuthCredentials": { - "$ref": "#/definitions/BasicAuthCredentials" - }, - "OAuthCredentials": { - "properties": { - "AccessToken": { - "$ref": "#/definitions/AccessToken" - }, - "ClientId": { - "$ref": "#/definitions/ClientId" - }, - "ClientSecret": { - "$ref": "#/definitions/ClientSecret" - }, - "ConnectorOAuthRequest": { - "$ref": "#/definitions/ConnectorOAuthRequest" - }, - "RefreshToken": { - "$ref": "#/definitions/RefreshToken" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "SAPODataConnectorProfileProperties": { - "properties": { - "ApplicationHostUrl": { - "$ref": "#/definitions/ApplicationHostUrl" - }, - "ApplicationServicePath": { - "$ref": "#/definitions/ApplicationServicePath" - }, - "ClientNumber": { - "$ref": "#/definitions/ClientNumber" - }, - "DisableSSO": { - "description": "If you set this parameter to true, Amazon AppFlow bypasses the single sign-on (SSO) settings in your SAP account when it accesses your SAP OData instance.", - "type": "boolean" - }, - "LogonLanguage": { - "$ref": "#/definitions/LogonLanguage" - }, - "OAuthProperties": { - "$ref": "#/definitions/OAuthProperties" - }, - "PortNumber": { - "$ref": "#/definitions/PortNumber" - }, - "PrivateLinkServiceName": { - "$ref": "#/definitions/PrivateLinkServiceName" - } - }, - "type": "object" - }, - "SalesforceConnectorProfileCredentials": { - "properties": { - "AccessToken": { - "$ref": "#/definitions/AccessToken", - "description": "The credentials used to access protected resources." - }, - "ClientCredentialsArn": { - "$ref": "#/definitions/ClientCredentialsArn", - "description": "The client credentials to fetch access token and refresh token." - }, - "ConnectorOAuthRequest": { - "$ref": "#/definitions/ConnectorOAuthRequest", - "description": "The oauth needed to request security tokens from the connector endpoint." - }, - "JwtToken": { - "$ref": "#/definitions/JwtToken", - "description": "The credentials used to access your Salesforce records" - }, - "OAuth2GrantType": { - "$ref": "#/definitions/OAuth2GrantType", - "description": "The grant types to fetch an access token" - }, - "RefreshToken": { - "$ref": "#/definitions/RefreshToken", - "description": "The credentials used to acquire new access tokens." - } - }, - "type": "object" - }, - "SalesforceConnectorProfileProperties": { - "properties": { - "InstanceUrl": { - "$ref": "#/definitions/InstanceUrl", - "description": "The location of the Salesforce resource" - }, - "isSandboxEnvironment": { - "description": "Indicates whether the connector profile applies to a sandbox or production environment", - "type": "boolean" - }, - "usePrivateLinkForMetadataAndAuthorization": { - "description": "Indicates whether to make Metadata And Authorization calls over Pivate Network", - "type": "boolean" - } - }, - "type": "object" - }, - "SecretKey": { - "maxLength": 256, - "pattern": "\\S+", - "type": "string" - }, - "ServiceNowConnectorProfileCredentials": { - "properties": { - "OAuth2Credentials": { - "$ref": "#/definitions/OAuth2Credentials", - "description": "The OAuth 2.0 credentials required to authenticate the user." - }, - "Password": { - "$ref": "#/definitions/Password", - "description": "The password that corresponds to the username." - }, - "Username": { - "$ref": "#/definitions/Username", - "description": "The name of the user." - } - }, - "type": "object" - }, - "ServiceNowConnectorProfileProperties": { - "properties": { - "InstanceUrl": { - "$ref": "#/definitions/InstanceUrl", - "description": "The location of the ServiceNow resource" - } - }, - "required": [ - "InstanceUrl" - ], - "type": "object" - }, - "SingularConnectorProfileCredentials": { - "properties": { - "ApiKey": { - "$ref": "#/definitions/ApiKey", - "description": "A unique alphanumeric identi\ufb01er used to authenticate a user, developer, or calling program to your API." - } - }, - "required": [ - "ApiKey" - ], - "type": "object" - }, - "SlackConnectorProfileCredentials": { - "properties": { - "AccessToken": { - "$ref": "#/definitions/AccessToken", - "description": "The credentials used to access protected resources." - }, - "ClientId": { - "$ref": "#/definitions/ClientId", - "description": "The identi\ufb01er for the desired client." - }, - "ClientSecret": { - "$ref": "#/definitions/ClientSecret", - "description": "The client secret used by the oauth client to authenticate to the authorization server." - }, - "ConnectorOAuthRequest": { - "$ref": "#/definitions/ConnectorOAuthRequest", - "description": "The oauth needed to request security tokens from the connector endpoint." - } - }, - "required": [ - "ClientId", - "ClientSecret" - ], - "type": "object" - }, - "SlackConnectorProfileProperties": { - "properties": { - "InstanceUrl": { - "$ref": "#/definitions/InstanceUrl", - "description": "The location of the Slack resource" - } - }, - "required": [ - "InstanceUrl" - ], - "type": "object" - }, - "SnowflakeConnectorProfileCredentials": { - "properties": { - "Password": { - "$ref": "#/definitions/Password", - "description": "The password that corresponds to the username." - }, - "Username": { - "$ref": "#/definitions/Username", - "description": "The name of the user." - } - }, - "required": [ - "Username", - "Password" - ], - "type": "object" - }, - "SnowflakeConnectorProfileProperties": { - "properties": { - "AccountName": { - "$ref": "#/definitions/AccountName", - "description": "The name of the account." - }, - "BucketName": { - "$ref": "#/definitions/BucketName", - "description": "The name of the Amazon S3 bucket associated with Snow\ufb02ake." - }, - "BucketPrefix": { - "$ref": "#/definitions/BucketPrefix", - "description": "The bucket prefix that refers to the Amazon S3 bucket associated with Snow\ufb02ake." - }, - "PrivateLinkServiceName": { - "$ref": "#/definitions/PrivateLinkServiceName", - "description": "The Snow\ufb02ake Private Link service name to be used for private data transfers." - }, - "Region": { - "$ref": "#/definitions/Region", - "description": "The region of the Snow\ufb02ake account." - }, - "Stage": { - "$ref": "#/definitions/Stage", - "description": "The name of the Amazon S3 stage that was created while setting up an Amazon S3 stage in the\nSnow\ufb02ake account. This is written in the following format: < Database>< Schema>." - }, - "Warehouse": { - "$ref": "#/definitions/Warehouse", - "description": "The name of the Snow\ufb02ake warehouse." - } - }, - "required": [ - "Warehouse", - "Stage", - "BucketName" - ], - "type": "object" - }, - "Stage": { - "maxLength": 512, - "pattern": "\\S+", - "type": "string" - }, - "TokenUrlCustomProperties": { - "additionalProperties": false, - "description": "A map for properties for custom connector Token Url.", - "patternProperties": { - "^[\\w]{1,128}$": { - "description": "A string containing the value for the property", - "maxLength": 2048, - "minLength": 1, - "pattern": "\\S+", - "type": "string" - } - }, - "required": [], - "type": "object" - }, - "TrendmicroConnectorProfileCredentials": { - "properties": { - "ApiSecretKey": { - "$ref": "#/definitions/ApiSecretKey", - "description": "The Secret Access Key portion of the credentials." - } - }, - "required": [ - "ApiSecretKey" - ], - "type": "object" - }, - "Username": { - "maxLength": 512, - "pattern": "\\S+", - "type": "string" - }, - "VeevaConnectorProfileCredentials": { - "properties": { - "Password": { - "$ref": "#/definitions/Password", - "description": "The password that corresponds to the username." - }, - "Username": { - "$ref": "#/definitions/Username", - "description": "The name of the user." - } - }, - "required": [ - "Username", - "Password" - ], - "type": "object" - }, - "VeevaConnectorProfileProperties": { - "properties": { - "InstanceUrl": { - "$ref": "#/definitions/InstanceUrl", - "description": "The location of the Veeva resource" - } - }, - "required": [ - "InstanceUrl" - ], - "type": "object" - }, - "Warehouse": { - "maxLength": 512, - "pattern": "[\\s\\w/!@#+=.-]*", - "type": "string" - }, - "WorkgroupName": { - "maxLength": 512, - "pattern": "\\S+", - "type": "string" - }, - "ZendeskConnectorProfileCredentials": { - "properties": { - "AccessToken": { - "$ref": "#/definitions/AccessToken", - "description": "The credentials used to access protected resources." - }, - "ClientId": { - "$ref": "#/definitions/ClientId", - "description": "The identi\ufb01er for the desired client." - }, - "ClientSecret": { - "$ref": "#/definitions/ClientSecret", - "description": "The client secret used by the oauth client to authenticate to the authorization server." - }, - "ConnectorOAuthRequest": { - "$ref": "#/definitions/ConnectorOAuthRequest", - "description": "The oauth needed to request security tokens from the connector endpoint." - } - }, - "required": [ - "ClientId", - "ClientSecret" - ], - "type": "object" - }, - "ZendeskConnectorProfileProperties": { - "properties": { - "InstanceUrl": { - "$ref": "#/definitions/InstanceUrl", - "description": "The location of the Zendesk resource" - } - }, - "required": [ - "InstanceUrl" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppFlow::ConnectorProfile", - "handlers": { - "create": { - "permissions": [ - "appflow:CreateConnectorProfile", - "kms:ListKeys", - "kms:DescribeKey", - "kms:ListAliases", - "kms:CreateGrant", - "kms:ListGrants", - "iam:PassRole", - "secretsmanager:CreateSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:PutResourcePolicy" - ] - }, - "delete": { - "permissions": [ - "appflow:DeleteConnectorProfile" - ] - }, - "list": { - "permissions": [ - "appflow:DescribeConnectorProfiles" - ] - }, - "read": { - "permissions": [ - "appflow:DescribeConnectorProfiles" - ] - }, - "update": { - "permissions": [ - "appflow:UpdateConnectorProfile", - "kms:ListKeys", - "kms:DescribeKey", - "kms:ListAliases", - "kms:CreateGrant", - "kms:ListGrants", - "iam:PassRole", - "secretsmanager:CreateSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:PutResourcePolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConnectorProfileName" - ], - "properties": { - "ConnectionMode": { - "description": "Mode in which data transfer should be enabled. Private connection mode is currently enabled for Salesforce, Snowflake, Trendmicro and Singular", - "enum": [ - "Public", - "Private" - ], - "type": "string" - }, - "ConnectorLabel": { - "description": "The label of the connector. The label is unique for each ConnectorRegistration in your AWS account. Only needed if calling for CUSTOMCONNECTOR connector type/.", - "maxLength": 256, - "pattern": "[\\w!@#.-]+", - "type": "string" - }, - "ConnectorProfileArn": { - "description": "Unique identifier for connector profile resources", - "maxLength": 512, - "pattern": "arn:aws:appflow:.*:[0-9]+:.*", - "type": "string" - }, - "ConnectorProfileConfig": { - "$ref": "#/definitions/ConnectorProfileConfig", - "description": "Connector specific configurations needed to create connector profile" - }, - "ConnectorProfileName": { - "description": "The maximum number of items to retrieve in a single batch.", - "maxLength": 256, - "pattern": "[\\w/!@#+=.-]+", - "type": "string" - }, - "ConnectorType": { - "$ref": "#/definitions/ConnectorType", - "description": "List of Saas providers that need connector profile to be created" - }, - "CredentialsArn": { - "description": "A unique Arn for Connector-Profile resource", - "maxLength": 512, - "pattern": "arn:aws:.*:.*:[0-9]+:.*", - "type": "string" - }, - "KMSArn": { - "description": "The ARN of the AWS Key Management Service (AWS KMS) key that's used to encrypt your function's environment variables. If it's not provided, AWS Lambda uses a default service key.", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:aws:kms:.*:[0-9]+:.*", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ConnectorProfileArn", - "/properties/CredentialsArn" - ], - "required": [ - "ConnectorProfileName", - "ConnectionMode", - "ConnectorType" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::AppFlow::ConnectorProfile", - "writeOnlyProperties": [ - "/properties/ConnectorProfileConfig", - "/properties/KMSArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConnectorProfileName", + "/properties/ConnectorType", + "/properties/ConnectorLabel" + ], + "definitions": { + "AccessKeyId": { + "maxLength": 256, + "pattern": "\\S+", + "type": "string" + }, + "AccessToken": { + "maxLength": 4096, + "pattern": "\\S+", + "type": "string" + }, + "AccountName": { + "maxLength": 512, + "pattern": "\\S+", + "type": "string" + }, + "AmplitudeConnectorProfileCredentials": { + "properties": { + "ApiKey": { + "$ref": "#/definitions/ApiKey", + "description": "A unique alphanumeric identi\ufb01er used to authenticate a user, developer, or calling program to your API." + }, + "SecretKey": { + "$ref": "#/definitions/SecretKey" + } + }, + "required": [ + "ApiKey", + "SecretKey" + ], + "type": "object" + }, + "ApiKey": { + "maxLength": 256, + "pattern": "\\S+", + "type": "string" + }, + "ApiKeyCredentials": { + "additionalProperties": false, + "properties": { + "ApiKey": { + "$ref": "#/definitions/ApiKey" + }, + "ApiSecretKey": { + "$ref": "#/definitions/ApiSecretKey" + } + }, + "required": [ + "ApiKey" + ], + "type": "object" + }, + "ApiSecretKey": { + "maxLength": 256, + "pattern": "\\S+", + "type": "string" + }, + "ApiToken": { + "maxLength": 256, + "pattern": "\\S+", + "type": "string" + }, + "ApplicationHostUrl": { + "maxLength": 256, + "pattern": "^(https?)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", + "type": "string" + }, + "ApplicationKey": { + "maxLength": 512, + "pattern": "\\S+", + "type": "string" + }, + "ApplicationServicePath": { + "maxLength": 512, + "pattern": "\\S+", + "type": "string" + }, + "AuthCode": { + "maxLength": 4096, + "pattern": "\\S+", + "type": "string" + }, + "AuthenticationType": { + "enum": [ + "OAUTH2", + "APIKEY", + "BASIC", + "CUSTOM" + ], + "type": "string" + }, + "BasicAuthCredentials": { + "additionalProperties": false, + "properties": { + "Password": { + "$ref": "#/definitions/Password" + }, + "Username": { + "$ref": "#/definitions/Username" + } + }, + "required": [ + "Username", + "Password" + ], + "type": "object" + }, + "BucketName": { + "maxLength": 63, + "minLength": 3, + "pattern": "\\S+", + "type": "string" + }, + "BucketPrefix": { + "maxLength": 128, + "type": "string" + }, + "BusinessUnitId": { + "maxLength": 18, + "pattern": "\\S+", + "type": "string" + }, + "ClientCredentialsArn": { + "maxLength": 2048, + "pattern": "arn:aws:secretsmanager:.*:[0-9]+:.*", + "type": "string" + }, + "ClientId": { + "maxLength": 512, + "pattern": "\\S+", + "type": "string" + }, + "ClientNumber": { + "maxLength": 3, + "minLength": 3, + "pattern": "^\\d{3}$", + "type": "string" + }, + "ClientSecret": { + "maxLength": 512, + "pattern": "\\S+", + "type": "string" + }, + "ClusterIdentifier": { + "maxLength": 512, + "pattern": "\\S+", + "type": "string" + }, + "ConnectorOAuthRequest": { + "properties": { + "AuthCode": { + "description": "The code provided by the connector when it has been authenticated via the connected app.", + "type": "string" + }, + "RedirectUri": { + "description": "The URL to which the authentication server redirects the browser after authorization has been\ngranted.", + "type": "string" + } + }, + "type": "object" + }, + "ConnectorProfileConfig": { + "description": "Connector specific configurations needed to create connector profile", + "properties": { + "ConnectorProfileCredentials": { + "$ref": "#/definitions/ConnectorProfileCredentials" + }, + "ConnectorProfileProperties": { + "$ref": "#/definitions/ConnectorProfileProperties" + } + }, + "type": "object" + }, + "ConnectorProfileCredentials": { + "description": "Connector specific configuration needed to create connector profile based on Authentication mechanism", + "properties": { + "Amplitude": { + "$ref": "#/definitions/AmplitudeConnectorProfileCredentials" + }, + "CustomConnector": { + "$ref": "#/definitions/CustomConnectorProfileCredentials" + }, + "Datadog": { + "$ref": "#/definitions/DatadogConnectorProfileCredentials" + }, + "Dynatrace": { + "$ref": "#/definitions/DynatraceConnectorProfileCredentials" + }, + "GoogleAnalytics": { + "$ref": "#/definitions/GoogleAnalyticsConnectorProfileCredentials" + }, + "InforNexus": { + "$ref": "#/definitions/InforNexusConnectorProfileCredentials" + }, + "Marketo": { + "$ref": "#/definitions/MarketoConnectorProfileCredentials" + }, + "Pardot": { + "$ref": "#/definitions/PardotConnectorProfileCredentials" + }, + "Redshift": { + "$ref": "#/definitions/RedshiftConnectorProfileCredentials" + }, + "SAPOData": { + "$ref": "#/definitions/SAPODataConnectorProfileCredentials" + }, + "Salesforce": { + "$ref": "#/definitions/SalesforceConnectorProfileCredentials" + }, + "ServiceNow": { + "$ref": "#/definitions/ServiceNowConnectorProfileCredentials" + }, + "Singular": { + "$ref": "#/definitions/SingularConnectorProfileCredentials" + }, + "Slack": { + "$ref": "#/definitions/SlackConnectorProfileCredentials" + }, + "Snowflake": { + "$ref": "#/definitions/SnowflakeConnectorProfileCredentials" + }, + "Trendmicro": { + "$ref": "#/definitions/TrendmicroConnectorProfileCredentials" + }, + "Veeva": { + "$ref": "#/definitions/VeevaConnectorProfileCredentials" + }, + "Zendesk": { + "$ref": "#/definitions/ZendeskConnectorProfileCredentials" + } + }, + "type": "object" + }, + "ConnectorProfileProperties": { + "description": "Connector specific properties needed to create connector profile - currently not needed for Amplitude, Trendmicro, Googleanalytics and Singular", + "properties": { + "CustomConnector": { + "$ref": "#/definitions/CustomConnectorProfileProperties" + }, + "Datadog": { + "$ref": "#/definitions/DatadogConnectorProfileProperties" + }, + "Dynatrace": { + "$ref": "#/definitions/DynatraceConnectorProfileProperties" + }, + "InforNexus": { + "$ref": "#/definitions/InforNexusConnectorProfileProperties" + }, + "Marketo": { + "$ref": "#/definitions/MarketoConnectorProfileProperties" + }, + "Pardot": { + "$ref": "#/definitions/PardotConnectorProfileProperties" + }, + "Redshift": { + "$ref": "#/definitions/RedshiftConnectorProfileProperties" + }, + "SAPOData": { + "$ref": "#/definitions/SAPODataConnectorProfileProperties" + }, + "Salesforce": { + "$ref": "#/definitions/SalesforceConnectorProfileProperties" + }, + "ServiceNow": { + "$ref": "#/definitions/ServiceNowConnectorProfileProperties" + }, + "Slack": { + "$ref": "#/definitions/SlackConnectorProfileProperties" + }, + "Snowflake": { + "$ref": "#/definitions/SnowflakeConnectorProfileProperties" + }, + "Veeva": { + "$ref": "#/definitions/VeevaConnectorProfileProperties" + }, + "Zendesk": { + "$ref": "#/definitions/ZendeskConnectorProfileProperties" + } + }, + "type": "object" + }, + "ConnectorType": { + "enum": [ + "Salesforce", + "Pardot", + "Singular", + "Slack", + "Redshift", + "Marketo", + "Googleanalytics", + "Zendesk", + "Servicenow", + "SAPOData", + "Datadog", + "Trendmicro", + "Snowflake", + "Dynatrace", + "Infornexus", + "Amplitude", + "Veeva", + "CustomConnector" + ], + "type": "string" + }, + "CredentialsMap": { + "additionalProperties": false, + "description": "A map for properties for custom authentication.", + "patternProperties": { + "^[\\w]{1,128}$": { + "description": "A string containing the value for the property", + "maxLength": 2048, + "minLength": 1, + "pattern": "\\S+", + "type": "string" + } + }, + "required": [], + "type": "object" + }, + "CustomAuthCredentials": { + "additionalProperties": false, + "properties": { + "CredentialsMap": { + "$ref": "#/definitions/CredentialsMap" + }, + "CustomAuthenticationType": { + "$ref": "#/definitions/CustomAuthenticationType" + } + }, + "required": [ + "CustomAuthenticationType" + ], + "type": "object" + }, + "CustomAuthenticationType": { + "maxLength": 256, + "pattern": "\\S+", + "type": "string" + }, + "CustomConnectorProfileCredentials": { + "additionalProperties": false, + "properties": { + "ApiKey": { + "$ref": "#/definitions/ApiKeyCredentials" + }, + "AuthenticationType": { + "$ref": "#/definitions/AuthenticationType" + }, + "Basic": { + "$ref": "#/definitions/BasicAuthCredentials" + }, + "Custom": { + "$ref": "#/definitions/CustomAuthCredentials" + }, + "Oauth2": { + "$ref": "#/definitions/OAuth2Credentials" + } + }, + "required": [ + "AuthenticationType" + ], + "type": "object" + }, + "CustomConnectorProfileProperties": { + "additionalProperties": false, + "properties": { + "OAuth2Properties": { + "$ref": "#/definitions/OAuth2Properties" + }, + "ProfileProperties": { + "$ref": "#/definitions/ProfileProperties" + } + }, + "type": "object" + }, + "DataApiRoleArn": { + "maxLength": 512, + "pattern": "arn:aws:iam:.*:[0-9]+:.*", + "type": "string" + }, + "DatabaseName": { + "maxLength": 512, + "pattern": "\\S+", + "type": "string" + }, + "DatabaseUrl": { + "maxLength": 512, + "pattern": "\\S+", + "type": "string" + }, + "DatadogConnectorProfileCredentials": { + "properties": { + "ApiKey": { + "$ref": "#/definitions/ApiKey", + "description": "A unique alphanumeric identi\ufb01er used to authenticate a user, developer, or calling program to your API." + }, + "ApplicationKey": { + "$ref": "#/definitions/ApplicationKey", + "description": "Application keys, in conjunction with your API key, give you full access to Datadog\u2019s programmatic API. Application keys are associated with the user account that created them. The application key is used to log all requests made to the API." + } + }, + "required": [ + "ApiKey", + "ApplicationKey" + ], + "type": "object" + }, + "DatadogConnectorProfileProperties": { + "properties": { + "InstanceUrl": { + "$ref": "#/definitions/InstanceUrl", + "description": "The location of the Datadog resource" + } + }, + "required": [ + "InstanceUrl" + ], + "type": "object" + }, + "DynatraceConnectorProfileCredentials": { + "properties": { + "ApiToken": { + "$ref": "#/definitions/ApiToken", + "description": "The API tokens used by Dynatrace API to authenticate various API calls." + } + }, + "required": [ + "ApiToken" + ], + "type": "object" + }, + "DynatraceConnectorProfileProperties": { + "properties": { + "InstanceUrl": { + "$ref": "#/definitions/InstanceUrl", + "description": "The location of the Dynatrace resource" + } + }, + "required": [ + "InstanceUrl" + ], + "type": "object" + }, + "GoogleAnalyticsConnectorProfileCredentials": { + "properties": { + "AccessToken": { + "$ref": "#/definitions/AccessToken", + "description": "The credentials used to access protected resources." + }, + "ClientId": { + "$ref": "#/definitions/ClientId", + "description": "The identi\ufb01er for the desired client." + }, + "ClientSecret": { + "$ref": "#/definitions/ClientSecret", + "description": "The client secret used by the oauth client to authenticate to the authorization server." + }, + "ConnectorOAuthRequest": { + "$ref": "#/definitions/ConnectorOAuthRequest", + "description": "The oauth needed to request security tokens from the connector endpoint." + }, + "RefreshToken": { + "$ref": "#/definitions/RefreshToken", + "description": "The credentials used to acquire new access tokens." + } + }, + "required": [ + "ClientId", + "ClientSecret" + ], + "type": "object" + }, + "InforNexusConnectorProfileCredentials": { + "properties": { + "AccessKeyId": { + "$ref": "#/definitions/AccessKeyId", + "description": "The Access Key portion of the credentials." + }, + "Datakey": { + "$ref": "#/definitions/Key", + "description": "The encryption keys used to encrypt data." + }, + "SecretAccessKey": { + "$ref": "#/definitions/Key", + "description": "The secret key used to sign requests." + }, + "UserId": { + "$ref": "#/definitions/Username", + "description": "The identi\ufb01er for the user." + } + }, + "required": [ + "AccessKeyId", + "UserId", + "SecretAccessKey", + "Datakey" + ], + "type": "object" + }, + "InforNexusConnectorProfileProperties": { + "properties": { + "InstanceUrl": { + "$ref": "#/definitions/InstanceUrl", + "description": "The location of the InforNexus resource" + } + }, + "required": [ + "InstanceUrl" + ], + "type": "object" + }, + "InstanceUrl": { + "maxLength": 256, + "pattern": "\\S+", + "type": "string" + }, + "JwtToken": { + "maxLength": 8000, + "pattern": "^[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_.+/=]*$", + "type": "string" + }, + "Key": { + "maxLength": 512, + "pattern": "\\S+", + "type": "string" + }, + "LogonLanguage": { + "maxLength": 2, + "pattern": "^[a-zA-Z0-9_]*$", + "type": "string" + }, + "MarketoConnectorProfileCredentials": { + "properties": { + "AccessToken": { + "$ref": "#/definitions/AccessToken", + "description": "The credentials used to access protected resources." + }, + "ClientId": { + "$ref": "#/definitions/ClientId", + "description": "The identi\ufb01er for the desired client." + }, + "ClientSecret": { + "$ref": "#/definitions/ClientSecret", + "description": "The client secret used by the oauth client to authenticate to the authorization server." + }, + "ConnectorOAuthRequest": { + "$ref": "#/definitions/ConnectorOAuthRequest", + "description": "The oauth needed to request security tokens from the connector endpoint." + } + }, + "required": [ + "ClientId", + "ClientSecret" + ], + "type": "object" + }, + "MarketoConnectorProfileProperties": { + "properties": { + "InstanceUrl": { + "$ref": "#/definitions/InstanceUrl", + "description": "The location of the Marketo resource" + } + }, + "required": [ + "InstanceUrl" + ], + "type": "object" + }, + "OAuth2Credentials": { + "additionalProperties": false, + "properties": { + "AccessToken": { + "$ref": "#/definitions/AccessToken" + }, + "ClientId": { + "$ref": "#/definitions/ClientId" + }, + "ClientSecret": { + "$ref": "#/definitions/ClientSecret" + }, + "OAuthRequest": { + "$ref": "#/definitions/ConnectorOAuthRequest" + }, + "RefreshToken": { + "$ref": "#/definitions/RefreshToken" + } + }, + "type": "object" + }, + "OAuth2GrantType": { + "enum": [ + "CLIENT_CREDENTIALS", + "AUTHORIZATION_CODE", + "JWT_BEARER" + ], + "type": "string" + }, + "OAuth2Properties": { + "additionalProperties": false, + "properties": { + "OAuth2GrantType": { + "$ref": "#/definitions/OAuth2GrantType" + }, + "TokenUrl": { + "maxLength": 256, + "minLength": 0, + "pattern": "^(https?)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", + "type": "string" + }, + "TokenUrlCustomProperties": { + "$ref": "#/definitions/TokenUrlCustomProperties" + } + }, + "type": "object" + }, + "OAuthProperties": { + "properties": { + "AuthCodeUrl": { + "maxLength": 256, + "pattern": "^(https?)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", + "type": "string" + }, + "OAuthScopes": { + "items": { + "maxLength": 128, + "pattern": "[/\\w]*", + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "TokenUrl": { + "maxLength": 256, + "pattern": "^(https?)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", + "type": "string" + } + }, + "type": "object" + }, + "PardotConnectorProfileCredentials": { + "properties": { + "AccessToken": { + "$ref": "#/definitions/AccessToken", + "description": "The credentials used to access protected resources." + }, + "ClientCredentialsArn": { + "$ref": "#/definitions/ClientCredentialsArn", + "description": "The client credentials to fetch access token and refresh token." + }, + "ConnectorOAuthRequest": { + "$ref": "#/definitions/ConnectorOAuthRequest", + "description": "The oauth needed to request security tokens from the connector endpoint." + }, + "RefreshToken": { + "$ref": "#/definitions/RefreshToken", + "description": "The credentials used to acquire new access tokens." + } + }, + "type": "object" + }, + "PardotConnectorProfileProperties": { + "properties": { + "BusinessUnitId": { + "$ref": "#/definitions/BusinessUnitId", + "description": "The Business unit id of Salesforce Pardot instance to be connected" + }, + "InstanceUrl": { + "$ref": "#/definitions/InstanceUrl", + "description": "The location of the Salesforce Pardot resource" + }, + "IsSandboxEnvironment": { + "description": "Indicates whether the connector profile applies to a demo or production environment", + "type": "boolean" + } + }, + "required": [ + "BusinessUnitId" + ], + "type": "object" + }, + "Password": { + "maxLength": 512, + "pattern": "\\S+", + "type": "string" + }, + "PortNumber": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "PrivateLinkServiceName": { + "maxLength": 512, + "pattern": "\\S+", + "type": "string" + }, + "ProfileProperties": { + "additionalProperties": false, + "description": "A map for properties for custom connector.", + "patternProperties": { + "^[\\w]{1,256}$": { + "description": "A string containing the value for the property", + "maxLength": 2048, + "minLength": 1, + "pattern": "\\S+", + "type": "string" + } + }, + "required": [], + "type": "object" + }, + "RedshiftConnectorProfileCredentials": { + "properties": { + "Password": { + "$ref": "#/definitions/Password", + "description": "The password that corresponds to the username." + }, + "Username": { + "$ref": "#/definitions/Username", + "description": "The name of the user." + } + }, + "type": "object" + }, + "RedshiftConnectorProfileProperties": { + "properties": { + "BucketName": { + "$ref": "#/definitions/BucketName", + "description": "The name of the Amazon S3 bucket associated with Redshift." + }, + "BucketPrefix": { + "$ref": "#/definitions/BucketPrefix", + "description": "The object key for the destination bucket in which Amazon AppFlow will place the \ufb01les." + }, + "ClusterIdentifier": { + "$ref": "#/definitions/ClusterIdentifier", + "description": "The unique identifier of the Amazon Redshift cluster." + }, + "DataApiRoleArn": { + "$ref": "#/definitions/DataApiRoleArn", + "description": "The Amazon Resource Name (ARN) of the IAM role that grants Amazon AppFlow access to the data through the Amazon Redshift Data API." + }, + "DatabaseName": { + "$ref": "#/definitions/DatabaseName", + "description": "The name of the Amazon Redshift database that will store the transferred data." + }, + "DatabaseUrl": { + "$ref": "#/definitions/DatabaseUrl", + "description": "The JDBC URL of the Amazon Redshift cluster." + }, + "IsRedshiftServerless": { + "description": "If Amazon AppFlow will connect to Amazon Redshift Serverless or Amazon Redshift cluster.", + "type": "boolean" + }, + "RoleArn": { + "$ref": "#/definitions/RoleArn", + "description": "The Amazon Resource Name (ARN) of the IAM role." + }, + "WorkgroupName": { + "$ref": "#/definitions/WorkgroupName", + "description": "The name of the Amazon Redshift serverless workgroup" + } + }, + "required": [ + "BucketName", + "RoleArn" + ], + "type": "object" + }, + "RefreshToken": { + "maxLength": 4096, + "pattern": "\\S+", + "type": "string" + }, + "Region": { + "maxLength": 64, + "pattern": "\\S+", + "type": "string" + }, + "RoleArn": { + "maxLength": 512, + "pattern": "arn:aws:iam:.*:[0-9]+:.*", + "type": "string" + }, + "SAPODataConnectorProfileCredentials": { + "properties": { + "BasicAuthCredentials": { + "$ref": "#/definitions/BasicAuthCredentials" + }, + "OAuthCredentials": { + "properties": { + "AccessToken": { + "$ref": "#/definitions/AccessToken" + }, + "ClientId": { + "$ref": "#/definitions/ClientId" + }, + "ClientSecret": { + "$ref": "#/definitions/ClientSecret" + }, + "ConnectorOAuthRequest": { + "$ref": "#/definitions/ConnectorOAuthRequest" + }, + "RefreshToken": { + "$ref": "#/definitions/RefreshToken" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "SAPODataConnectorProfileProperties": { + "properties": { + "ApplicationHostUrl": { + "$ref": "#/definitions/ApplicationHostUrl" + }, + "ApplicationServicePath": { + "$ref": "#/definitions/ApplicationServicePath" + }, + "ClientNumber": { + "$ref": "#/definitions/ClientNumber" + }, + "DisableSSO": { + "description": "If you set this parameter to true, Amazon AppFlow bypasses the single sign-on (SSO) settings in your SAP account when it accesses your SAP OData instance.", + "type": "boolean" + }, + "LogonLanguage": { + "$ref": "#/definitions/LogonLanguage" + }, + "OAuthProperties": { + "$ref": "#/definitions/OAuthProperties" + }, + "PortNumber": { + "$ref": "#/definitions/PortNumber" + }, + "PrivateLinkServiceName": { + "$ref": "#/definitions/PrivateLinkServiceName" + } + }, + "type": "object" + }, + "SalesforceConnectorProfileCredentials": { + "properties": { + "AccessToken": { + "$ref": "#/definitions/AccessToken", + "description": "The credentials used to access protected resources." + }, + "ClientCredentialsArn": { + "$ref": "#/definitions/ClientCredentialsArn", + "description": "The client credentials to fetch access token and refresh token." + }, + "ConnectorOAuthRequest": { + "$ref": "#/definitions/ConnectorOAuthRequest", + "description": "The oauth needed to request security tokens from the connector endpoint." + }, + "JwtToken": { + "$ref": "#/definitions/JwtToken", + "description": "The credentials used to access your Salesforce records" + }, + "OAuth2GrantType": { + "$ref": "#/definitions/OAuth2GrantType", + "description": "The grant types to fetch an access token" + }, + "RefreshToken": { + "$ref": "#/definitions/RefreshToken", + "description": "The credentials used to acquire new access tokens." + } + }, + "type": "object" + }, + "SalesforceConnectorProfileProperties": { + "properties": { + "InstanceUrl": { + "$ref": "#/definitions/InstanceUrl", + "description": "The location of the Salesforce resource" + }, + "isSandboxEnvironment": { + "description": "Indicates whether the connector profile applies to a sandbox or production environment", + "type": "boolean" + }, + "usePrivateLinkForMetadataAndAuthorization": { + "description": "Indicates whether to make Metadata And Authorization calls over Pivate Network", + "type": "boolean" + } + }, + "type": "object" + }, + "SecretKey": { + "maxLength": 256, + "pattern": "\\S+", + "type": "string" + }, + "ServiceNowConnectorProfileCredentials": { + "properties": { + "OAuth2Credentials": { + "$ref": "#/definitions/OAuth2Credentials", + "description": "The OAuth 2.0 credentials required to authenticate the user." + }, + "Password": { + "$ref": "#/definitions/Password", + "description": "The password that corresponds to the username." + }, + "Username": { + "$ref": "#/definitions/Username", + "description": "The name of the user." + } + }, + "type": "object" + }, + "ServiceNowConnectorProfileProperties": { + "properties": { + "InstanceUrl": { + "$ref": "#/definitions/InstanceUrl", + "description": "The location of the ServiceNow resource" + } + }, + "required": [ + "InstanceUrl" + ], + "type": "object" + }, + "SingularConnectorProfileCredentials": { + "properties": { + "ApiKey": { + "$ref": "#/definitions/ApiKey", + "description": "A unique alphanumeric identi\ufb01er used to authenticate a user, developer, or calling program to your API." + } + }, + "required": [ + "ApiKey" + ], + "type": "object" + }, + "SlackConnectorProfileCredentials": { + "properties": { + "AccessToken": { + "$ref": "#/definitions/AccessToken", + "description": "The credentials used to access protected resources." + }, + "ClientId": { + "$ref": "#/definitions/ClientId", + "description": "The identi\ufb01er for the desired client." + }, + "ClientSecret": { + "$ref": "#/definitions/ClientSecret", + "description": "The client secret used by the oauth client to authenticate to the authorization server." + }, + "ConnectorOAuthRequest": { + "$ref": "#/definitions/ConnectorOAuthRequest", + "description": "The oauth needed to request security tokens from the connector endpoint." + } + }, + "required": [ + "ClientId", + "ClientSecret" + ], + "type": "object" + }, + "SlackConnectorProfileProperties": { + "properties": { + "InstanceUrl": { + "$ref": "#/definitions/InstanceUrl", + "description": "The location of the Slack resource" + } + }, + "required": [ + "InstanceUrl" + ], + "type": "object" + }, + "SnowflakeConnectorProfileCredentials": { + "properties": { + "Password": { + "$ref": "#/definitions/Password", + "description": "The password that corresponds to the username." + }, + "Username": { + "$ref": "#/definitions/Username", + "description": "The name of the user." + } + }, + "required": [ + "Username", + "Password" + ], + "type": "object" + }, + "SnowflakeConnectorProfileProperties": { + "properties": { + "AccountName": { + "$ref": "#/definitions/AccountName", + "description": "The name of the account." + }, + "BucketName": { + "$ref": "#/definitions/BucketName", + "description": "The name of the Amazon S3 bucket associated with Snow\ufb02ake." + }, + "BucketPrefix": { + "$ref": "#/definitions/BucketPrefix", + "description": "The bucket prefix that refers to the Amazon S3 bucket associated with Snow\ufb02ake." + }, + "PrivateLinkServiceName": { + "$ref": "#/definitions/PrivateLinkServiceName", + "description": "The Snow\ufb02ake Private Link service name to be used for private data transfers." + }, + "Region": { + "$ref": "#/definitions/Region", + "description": "The region of the Snow\ufb02ake account." + }, + "Stage": { + "$ref": "#/definitions/Stage", + "description": "The name of the Amazon S3 stage that was created while setting up an Amazon S3 stage in the\nSnow\ufb02ake account. This is written in the following format: < Database>< Schema>." + }, + "Warehouse": { + "$ref": "#/definitions/Warehouse", + "description": "The name of the Snow\ufb02ake warehouse." + } + }, + "required": [ + "Warehouse", + "Stage", + "BucketName" + ], + "type": "object" + }, + "Stage": { + "maxLength": 512, + "pattern": "\\S+", + "type": "string" + }, + "TokenUrlCustomProperties": { + "additionalProperties": false, + "description": "A map for properties for custom connector Token Url.", + "patternProperties": { + "^[\\w]{1,128}$": { + "description": "A string containing the value for the property", + "maxLength": 2048, + "minLength": 1, + "pattern": "\\S+", + "type": "string" + } + }, + "required": [], + "type": "object" + }, + "TrendmicroConnectorProfileCredentials": { + "properties": { + "ApiSecretKey": { + "$ref": "#/definitions/ApiSecretKey", + "description": "The Secret Access Key portion of the credentials." + } + }, + "required": [ + "ApiSecretKey" + ], + "type": "object" + }, + "Username": { + "maxLength": 512, + "pattern": "\\S+", + "type": "string" + }, + "VeevaConnectorProfileCredentials": { + "properties": { + "Password": { + "$ref": "#/definitions/Password", + "description": "The password that corresponds to the username." + }, + "Username": { + "$ref": "#/definitions/Username", + "description": "The name of the user." + } + }, + "required": [ + "Username", + "Password" + ], + "type": "object" + }, + "VeevaConnectorProfileProperties": { + "properties": { + "InstanceUrl": { + "$ref": "#/definitions/InstanceUrl", + "description": "The location of the Veeva resource" + } + }, + "required": [ + "InstanceUrl" + ], + "type": "object" + }, + "Warehouse": { + "maxLength": 512, + "pattern": "[\\s\\w/!@#+=.-]*", + "type": "string" + }, + "WorkgroupName": { + "maxLength": 512, + "pattern": "\\S+", + "type": "string" + }, + "ZendeskConnectorProfileCredentials": { + "properties": { + "AccessToken": { + "$ref": "#/definitions/AccessToken", + "description": "The credentials used to access protected resources." + }, + "ClientId": { + "$ref": "#/definitions/ClientId", + "description": "The identi\ufb01er for the desired client." + }, + "ClientSecret": { + "$ref": "#/definitions/ClientSecret", + "description": "The client secret used by the oauth client to authenticate to the authorization server." + }, + "ConnectorOAuthRequest": { + "$ref": "#/definitions/ConnectorOAuthRequest", + "description": "The oauth needed to request security tokens from the connector endpoint." + } + }, + "required": [ + "ClientId", + "ClientSecret" + ], + "type": "object" + }, + "ZendeskConnectorProfileProperties": { + "properties": { + "InstanceUrl": { + "$ref": "#/definitions/InstanceUrl", + "description": "The location of the Zendesk resource" + } + }, + "required": [ + "InstanceUrl" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppFlow::ConnectorProfile", + "handlers": { + "create": { + "permissions": [ + "appflow:CreateConnectorProfile", + "kms:ListKeys", + "kms:DescribeKey", + "kms:ListAliases", + "kms:CreateGrant", + "kms:ListGrants", + "iam:PassRole", + "secretsmanager:CreateSecret", + "secretsmanager:GetSecretValue", + "secretsmanager:PutResourcePolicy" + ] + }, + "delete": { + "permissions": [ + "appflow:DeleteConnectorProfile" + ] + }, + "list": { + "permissions": [ + "appflow:DescribeConnectorProfiles" + ] + }, + "read": { + "permissions": [ + "appflow:DescribeConnectorProfiles" + ] + }, + "update": { + "permissions": [ + "appflow:UpdateConnectorProfile", + "kms:ListKeys", + "kms:DescribeKey", + "kms:ListAliases", + "kms:CreateGrant", + "kms:ListGrants", + "iam:PassRole", + "secretsmanager:CreateSecret", + "secretsmanager:GetSecretValue", + "secretsmanager:PutResourcePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConnectorProfileName" + ], + "properties": { + "ConnectionMode": { + "description": "Mode in which data transfer should be enabled. Private connection mode is currently enabled for Salesforce, Snowflake, Trendmicro and Singular", + "enum": [ + "Public", + "Private" + ], + "type": "string" + }, + "ConnectorLabel": { + "description": "The label of the connector. The label is unique for each ConnectorRegistration in your AWS account. Only needed if calling for CUSTOMCONNECTOR connector type/.", + "maxLength": 256, + "pattern": "[\\w!@#.-]+", + "type": "string" + }, + "ConnectorProfileArn": { + "description": "Unique identifier for connector profile resources", + "maxLength": 512, + "pattern": "arn:aws:appflow:.*:[0-9]+:.*", + "type": "string" + }, + "ConnectorProfileConfig": { + "$ref": "#/definitions/ConnectorProfileConfig", + "description": "Connector specific configurations needed to create connector profile" + }, + "ConnectorProfileName": { + "description": "The maximum number of items to retrieve in a single batch.", + "maxLength": 256, + "pattern": "[\\w/!@#+=.-]+", + "type": "string" + }, + "ConnectorType": { + "$ref": "#/definitions/ConnectorType", + "description": "List of Saas providers that need connector profile to be created" + }, + "CredentialsArn": { + "description": "A unique Arn for Connector-Profile resource", + "maxLength": 512, + "pattern": "arn:aws:.*:.*:[0-9]+:.*", + "type": "string" + }, + "KMSArn": { + "description": "The ARN of the AWS Key Management Service (AWS KMS) key that's used to encrypt your function's environment variables. If it's not provided, AWS Lambda uses a default service key.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:aws:kms:.*:[0-9]+:.*", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ConnectorProfileArn", + "/properties/CredentialsArn" + ], + "required": [ + "ConnectorProfileName", + "ConnectionMode", + "ConnectorType" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::AppFlow::ConnectorProfile", + "writeOnlyProperties": [ + "/properties/ConnectorProfileConfig", + "/properties/KMSArn" + ] +} diff --git a/src/schema/aws-appflow-flow.json b/src/schema/aws-appflow-flow.json index 46e54714..ab03f3b1 100644 --- a/src/schema/aws-appflow-flow.json +++ b/src/schema/aws-appflow-flow.json @@ -1,1770 +1,1777 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FlowName", - "/properties/KMSArn" - ], - "definitions": { - "AggregationConfig": { - "properties": { - "AggregationType": { - "$ref": "#/definitions/AggregationType" - }, - "TargetFileSize": { - "$ref": "#/definitions/TargetFileSize" - } - }, - "type": "object" - }, - "AggregationType": { - "enum": [ - "None", - "SingleFile" - ], - "type": "string" - }, - "AmplitudeConnectorOperator": { - "enum": [ - "BETWEEN" - ], - "type": "string" - }, - "AmplitudeSourceProperties": { - "additionalProperties": false, - "properties": { - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "ApiVersion": { - "description": "The API version that the connector will use.", - "maxLength": 256, - "pattern": "\\S+", - "type": "string" - }, - "BucketName": { - "maxLength": 63, - "minLength": 3, - "pattern": "\\S+", - "type": "string" - }, - "BucketPrefix": { - "maxLength": 512, - "type": "string" - }, - "ConnectorOperator": { - "description": "Operation to be performed on provided source fields", - "properties": { - "Amplitude": { - "$ref": "#/definitions/AmplitudeConnectorOperator" - }, - "CustomConnector": { - "$ref": "#/definitions/Operator" - }, - "Datadog": { - "$ref": "#/definitions/DatadogConnectorOperator" - }, - "Dynatrace": { - "$ref": "#/definitions/DynatraceConnectorOperator" - }, - "GoogleAnalytics": { - "$ref": "#/definitions/GoogleAnalyticsConnectorOperator" - }, - "InforNexus": { - "$ref": "#/definitions/InforNexusConnectorOperator" - }, - "Marketo": { - "$ref": "#/definitions/MarketoConnectorOperator" - }, - "Pardot": { - "$ref": "#/definitions/PardotConnectorOperator" - }, - "S3": { - "$ref": "#/definitions/S3ConnectorOperator" - }, - "SAPOData": { - "$ref": "#/definitions/SAPODataConnectorOperator" - }, - "Salesforce": { - "$ref": "#/definitions/SalesforceConnectorOperator" - }, - "ServiceNow": { - "$ref": "#/definitions/ServiceNowConnectorOperator" - }, - "Singular": { - "$ref": "#/definitions/SingularConnectorOperator" - }, - "Slack": { - "$ref": "#/definitions/SlackConnectorOperator" - }, - "Trendmicro": { - "$ref": "#/definitions/TrendmicroConnectorOperator" - }, - "Veeva": { - "$ref": "#/definitions/VeevaConnectorOperator" - }, - "Zendesk": { - "$ref": "#/definitions/ZendeskConnectorOperator" - } - }, - "type": "object" - }, - "ConnectorProfileName": { - "description": "Name of connector profile", - "maxLength": 256, - "pattern": "[\\w/!@#+=.-]+", - "type": "string" - }, - "ConnectorType": { - "enum": [ - "SAPOData", - "Salesforce", - "Pardot", - "Singular", - "Slack", - "Redshift", - "S3", - "Marketo", - "Googleanalytics", - "Zendesk", - "Servicenow", - "Datadog", - "Trendmicro", - "Snowflake", - "Dynatrace", - "Infornexus", - "Amplitude", - "Veeva", - "CustomConnector", - "EventBridge", - "Upsolver", - "LookoutMetrics" - ], - "type": "string" - }, - "CustomConnectorDestinationProperties": { - "additionalProperties": false, - "properties": { - "CustomProperties": { - "$ref": "#/definitions/CustomProperties" - }, - "EntityName": { - "$ref": "#/definitions/EntityName" - }, - "ErrorHandlingConfig": { - "$ref": "#/definitions/ErrorHandlingConfig" - }, - "IdFieldNames": { - "description": "List of fields used as ID when performing a write operation.", - "items": { - "type": "string" - }, - "type": "array" - }, - "WriteOperationType": { - "$ref": "#/definitions/WriteOperationType" - } - }, - "required": [ - "EntityName" - ], - "type": "object" - }, - "CustomConnectorSourceProperties": { - "additionalProperties": false, - "properties": { - "CustomProperties": { - "$ref": "#/definitions/CustomProperties" - }, - "DataTransferApi": { - "additionalProperties": false, - "properties": { - "Name": { - "maxLength": 64, - "pattern": "[\\w/-]+", - "type": "string" - }, - "Type": { - "enum": [ - "SYNC", - "ASYNC", - "AUTOMATIC" - ], - "type": "string" - } - }, - "required": [ - "Name", - "Type" - ], - "type": "object" - }, - "EntityName": { - "$ref": "#/definitions/EntityName" - } - }, - "required": [ - "EntityName" - ], - "type": "object" - }, - "CustomProperties": { - "additionalProperties": false, - "description": "A map for properties for custom connector.", - "patternProperties": { - "^[\\w]{1,2048}$": { - "description": "A string containing the value for the property", - "maxLength": 2048, - "minLength": 1, - "pattern": "\\S+", - "type": "string" - } - }, - "required": [], - "type": "object" - }, - "DataTransferApi": { - "enum": [ - "AUTOMATIC", - "BULKV2", - "REST_SYNC" - ], - "type": "string" - }, - "DatadogConnectorOperator": { - "enum": [ - "PROJECTION", - "BETWEEN", - "EQUAL_TO", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "DatadogSourceProperties": { - "additionalProperties": false, - "properties": { - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "DatetimeTypeFieldName": { - "description": "Name of the datetime/timestamp data type field to be used for importing incremental records from the source", - "maxLength": 256, - "type": "string" - }, - "DestinationConnectorProperties": { - "description": "Destination connector details", - "properties": { - "CustomConnector": { - "$ref": "#/definitions/CustomConnectorDestinationProperties" - }, - "EventBridge": { - "$ref": "#/definitions/EventBridgeDestinationProperties" - }, - "LookoutMetrics": { - "$ref": "#/definitions/LookoutMetricsDestinationProperties" - }, - "Marketo": { - "$ref": "#/definitions/MarketoDestinationProperties" - }, - "Redshift": { - "$ref": "#/definitions/RedshiftDestinationProperties" - }, - "S3": { - "$ref": "#/definitions/S3DestinationProperties" - }, - "SAPOData": { - "$ref": "#/definitions/SAPODataDestinationProperties" - }, - "Salesforce": { - "$ref": "#/definitions/SalesforceDestinationProperties" - }, - "Snowflake": { - "$ref": "#/definitions/SnowflakeDestinationProperties" - }, - "Upsolver": { - "$ref": "#/definitions/UpsolverDestinationProperties" - }, - "Zendesk": { - "$ref": "#/definitions/ZendeskDestinationProperties" - } - }, - "type": "object" - }, - "DestinationFlowConfig": { - "additionalProperties": false, - "description": "Configurations of destination connector.", - "properties": { - "ApiVersion": { - "$ref": "#/definitions/ApiVersion", - "description": "The API version that the destination connector uses." - }, - "ConnectorProfileName": { - "$ref": "#/definitions/ConnectorProfileName", - "description": "Name of destination connector profile" - }, - "ConnectorType": { - "$ref": "#/definitions/ConnectorType", - "description": "Destination connector type" - }, - "DestinationConnectorProperties": { - "$ref": "#/definitions/DestinationConnectorProperties", - "description": "Destination connector details" - } - }, - "required": [ - "ConnectorType", - "DestinationConnectorProperties" - ], - "type": "object" - }, - "DocumentType": { - "maxLength": 512, - "pattern": "[\\s\\w_-]+", - "type": "string" - }, - "DynatraceConnectorOperator": { - "enum": [ - "PROJECTION", - "BETWEEN", - "EQUAL_TO", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "DynatraceSourceProperties": { - "additionalProperties": false, - "properties": { - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "EnableDynamicFieldUpdate": { - "type": "boolean" - }, - "EntityName": { - "maxLength": 1024, - "pattern": "\\S+", - "type": "string" - }, - "ErrorHandlingConfig": { - "additionalProperties": false, - "properties": { - "BucketName": { - "$ref": "#/definitions/BucketName" - }, - "BucketPrefix": { - "$ref": "#/definitions/BucketPrefix" - }, - "FailOnFirstError": { - "type": "boolean" - } - }, - "type": "object" - }, - "EventBridgeDestinationProperties": { - "additionalProperties": false, - "properties": { - "ErrorHandlingConfig": { - "$ref": "#/definitions/ErrorHandlingConfig" - }, - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "FileType": { - "enum": [ - "CSV", - "JSON", - "PARQUET" - ], - "type": "string" - }, - "GlueDataCatalog": { - "additionalProperties": false, - "description": "Trigger settings of the flow.", - "properties": { - "DatabaseName": { - "description": "A string containing the value for the tag", - "maxLength": 255, - "minLength": 0, - "pattern": "[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*", - "type": "string" - }, - "RoleArn": { - "description": "A string containing the value for the tag", - "maxLength": 512, - "minLength": 0, - "pattern": "arn:aws:iam:.*:[0-9]+:.*", - "type": "string" - }, - "TablePrefix": { - "description": "A string containing the value for the tag", - "maxLength": 128, - "minLength": 0, - "pattern": "[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*", - "type": "string" - } - }, - "required": [ - "RoleArn", - "DatabaseName", - "TablePrefix" - ], - "type": "object" - }, - "GoogleAnalyticsConnectorOperator": { - "enum": [ - "PROJECTION", - "BETWEEN" - ], - "type": "string" - }, - "GoogleAnalyticsSourceProperties": { - "additionalProperties": false, - "properties": { - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "IncludeAllVersions": { - "type": "boolean" - }, - "IncludeDeletedRecords": { - "type": "boolean" - }, - "IncludeRenditions": { - "type": "boolean" - }, - "IncludeSourceFiles": { - "type": "boolean" - }, - "IncrementalPullConfig": { - "description": "Configuration for scheduled incremental data pull", - "properties": { - "DatetimeTypeFieldName": { - "$ref": "#/definitions/DatetimeTypeFieldName" - } - }, - "type": "object" - }, - "InforNexusConnectorOperator": { - "enum": [ - "PROJECTION", - "BETWEEN", - "EQUAL_TO", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "InforNexusSourceProperties": { - "additionalProperties": false, - "properties": { - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "LookoutMetricsDestinationProperties": { - "additionalProperties": false, - "properties": { - "Object": { - "$ref": "#/definitions/Object" - } - }, - "type": "object" - }, - "MarketoConnectorOperator": { - "enum": [ - "PROJECTION", - "LESS_THAN", - "GREATER_THAN", - "BETWEEN", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "MarketoDestinationProperties": { - "additionalProperties": false, - "properties": { - "ErrorHandlingConfig": { - "$ref": "#/definitions/ErrorHandlingConfig" - }, - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "MarketoSourceProperties": { - "additionalProperties": false, - "properties": { - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "MetadataCatalogConfig": { - "additionalProperties": false, - "description": "Configurations of metadata catalog of the flow.", - "properties": { - "GlueDataCatalog": { - "$ref": "#/definitions/GlueDataCatalog", - "description": "Configurations of glue data catalog of the flow." - } - }, - "type": "object" - }, - "Name": { - "maxLength": 128, - "pattern": "\\S+", - "type": "string" - }, - "Object": { - "maxLength": 512, - "pattern": "\\S+", - "type": "string" - }, - "Operator": { - "enum": [ - "PROJECTION", - "LESS_THAN", - "GREATER_THAN", - "CONTAINS", - "BETWEEN", - "LESS_THAN_OR_EQUAL_TO", - "GREATER_THAN_OR_EQUAL_TO", - "EQUAL_TO", - "NOT_EQUAL_TO", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "OperatorPropertiesKeys": { - "enum": [ - "VALUE", - "VALUES", - "DATA_TYPE", - "UPPER_BOUND", - "LOWER_BOUND", - "SOURCE_DATA_TYPE", - "DESTINATION_DATA_TYPE", - "VALIDATION_ACTION", - "MASK_VALUE", - "MASK_LENGTH", - "TRUNCATE_LENGTH", - "MATH_OPERATION_FIELDS_ORDER", - "CONCAT_FORMAT", - "SUBFIELD_CATEGORY_MAP", - "EXCLUDE_SOURCE_FIELDS_LIST", - "INCLUDE_NEW_FIELDS", - "ORDERED_PARTITION_KEYS_LIST" - ], - "type": "string" - }, - "PardotConnectorOperator": { - "enum": [ - "PROJECTION", - "EQUAL_TO", - "NO_OP", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC" - ], - "type": "string" - }, - "PardotSourceProperties": { - "additionalProperties": false, - "properties": { - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "PathPrefix": { - "enum": [ - "EXECUTION_ID", - "SCHEMA_VERSION" - ], - "type": "string" - }, - "PathPrefixHierarchy": { - "items": { - "$ref": "#/definitions/PathPrefix" - }, - "type": "array" - }, - "PrefixConfig": { - "additionalProperties": false, - "properties": { - "PathPrefixHierarchy": { - "$ref": "#/definitions/PathPrefixHierarchy" - }, - "PrefixFormat": { - "$ref": "#/definitions/PrefixFormat" - }, - "PrefixType": { - "$ref": "#/definitions/PrefixType" - } - }, - "type": "object" - }, - "PrefixFormat": { - "enum": [ - "YEAR", - "MONTH", - "DAY", - "HOUR", - "MINUTE" - ], - "type": "string" - }, - "PrefixType": { - "enum": [ - "FILENAME", - "PATH", - "PATH_AND_FILENAME" - ], - "type": "string" - }, - "PreserveSourceDataTyping": { - "type": "boolean" - }, - "RedshiftDestinationProperties": { - "additionalProperties": false, - "properties": { - "BucketPrefix": { - "$ref": "#/definitions/BucketPrefix" - }, - "ErrorHandlingConfig": { - "$ref": "#/definitions/ErrorHandlingConfig" - }, - "IntermediateBucketName": { - "$ref": "#/definitions/BucketName" - }, - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object", - "IntermediateBucketName" - ], - "type": "object" - }, - "S3ConnectorOperator": { - "enum": [ - "PROJECTION", - "LESS_THAN", - "GREATER_THAN", - "BETWEEN", - "LESS_THAN_OR_EQUAL_TO", - "GREATER_THAN_OR_EQUAL_TO", - "EQUAL_TO", - "NOT_EQUAL_TO", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "S3DestinationProperties": { - "additionalProperties": false, - "properties": { - "BucketName": { - "$ref": "#/definitions/BucketName" - }, - "BucketPrefix": { - "$ref": "#/definitions/BucketPrefix" - }, - "S3OutputFormatConfig": { - "$ref": "#/definitions/S3OutputFormatConfig" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "S3InputFormatConfig": { - "properties": { - "S3InputFileType": { - "enum": [ - "CSV", - "JSON" - ], - "type": "string" - } - }, - "type": "object" - }, - "S3OutputFormatConfig": { - "additionalProperties": false, - "properties": { - "AggregationConfig": { - "$ref": "#/definitions/AggregationConfig" - }, - "FileType": { - "$ref": "#/definitions/FileType" - }, - "PrefixConfig": { - "$ref": "#/definitions/PrefixConfig" - }, - "PreserveSourceDataTyping": { - "$ref": "#/definitions/PreserveSourceDataTyping" - } - }, - "type": "object" - }, - "S3SourceProperties": { - "additionalProperties": false, - "properties": { - "BucketName": { - "$ref": "#/definitions/BucketName" - }, - "BucketPrefix": { - "$ref": "#/definitions/BucketPrefix" - }, - "S3InputFormatConfig": { - "$ref": "#/definitions/S3InputFormatConfig" - } - }, - "required": [ - "BucketName", - "BucketPrefix" - ], - "type": "object" - }, - "SAPODataConnectorOperator": { - "enum": [ - "PROJECTION", - "LESS_THAN", - "CONTAINS", - "GREATER_THAN", - "BETWEEN", - "LESS_THAN_OR_EQUAL_TO", - "GREATER_THAN_OR_EQUAL_TO", - "EQUAL_TO", - "NOT_EQUAL_TO", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "SAPODataDestinationProperties": { - "additionalProperties": false, - "properties": { - "ErrorHandlingConfig": { - "$ref": "#/definitions/ErrorHandlingConfig" - }, - "IdFieldNames": { - "description": "List of fields used as ID when performing a write operation.", - "items": { - "type": "string" - }, - "type": "array" - }, - "ObjectPath": { - "$ref": "#/definitions/Object" - }, - "SuccessResponseHandlingConfig": { - "$ref": "#/definitions/SuccessResponseHandlingConfig" - }, - "WriteOperationType": { - "$ref": "#/definitions/WriteOperationType" - } - }, - "required": [ - "ObjectPath" - ], - "type": "object" - }, - "SAPODataMaxPageSize": { - "maximum": 10000, - "minimum": 1, - "type": "integer" - }, - "SAPODataMaxParallelism": { - "maximum": 10, - "minimum": 1, - "type": "integer" - }, - "SAPODataPaginationConfig": { - "additionalProperties": false, - "description": "SAP Source connector page size", - "properties": { - "maxPageSize": { - "$ref": "#/definitions/SAPODataMaxPageSize" - } - }, - "required": [ - "maxPageSize" - ], - "type": "object" - }, - "SAPODataParallelismConfig": { - "additionalProperties": false, - "description": "SAP Source connector parallelism factor", - "properties": { - "maxParallelism": { - "$ref": "#/definitions/SAPODataMaxParallelism" - } - }, - "required": [ - "maxParallelism" - ], - "type": "object" - }, - "SAPODataSourceProperties": { - "additionalProperties": false, - "properties": { - "ObjectPath": { - "$ref": "#/definitions/Object" - }, - "paginationConfig": { - "$ref": "#/definitions/SAPODataPaginationConfig" - }, - "parallelismConfig": { - "$ref": "#/definitions/SAPODataParallelismConfig" - } - }, - "required": [ - "ObjectPath" - ], - "type": "object" - }, - "SalesforceConnectorOperator": { - "enum": [ - "PROJECTION", - "LESS_THAN", - "CONTAINS", - "GREATER_THAN", - "BETWEEN", - "LESS_THAN_OR_EQUAL_TO", - "GREATER_THAN_OR_EQUAL_TO", - "EQUAL_TO", - "NOT_EQUAL_TO", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "SalesforceDestinationProperties": { - "additionalProperties": false, - "properties": { - "DataTransferApi": { - "$ref": "#/definitions/DataTransferApi" - }, - "ErrorHandlingConfig": { - "$ref": "#/definitions/ErrorHandlingConfig" - }, - "IdFieldNames": { - "description": "List of fields used as ID when performing a write operation.", - "items": { - "type": "string" - }, - "type": "array" - }, - "Object": { - "$ref": "#/definitions/Object" - }, - "WriteOperationType": { - "$ref": "#/definitions/WriteOperationType" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "SalesforceSourceProperties": { - "additionalProperties": false, - "properties": { - "DataTransferApi": { - "$ref": "#/definitions/DataTransferApi" - }, - "EnableDynamicFieldUpdate": { - "$ref": "#/definitions/EnableDynamicFieldUpdate" - }, - "IncludeDeletedRecords": { - "$ref": "#/definitions/IncludeDeletedRecords" - }, - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "ScheduledTriggerProperties": { - "additionalProperties": false, - "description": "Details required for scheduled trigger type", - "properties": { - "DataPullMode": { - "enum": [ - "Incremental", - "Complete" - ], - "type": "string" - }, - "FirstExecutionFrom": { - "type": "number" - }, - "FlowErrorDeactivationThreshold": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "ScheduleEndTime": { - "type": "number" - }, - "ScheduleExpression": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "ScheduleOffset": { - "maximum": 36000, - "minimum": 0, - "type": "number" - }, - "ScheduleStartTime": { - "type": "number" - }, - "TimeZone": { - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "ScheduleExpression" - ], - "type": "object" - }, - "ServiceNowConnectorOperator": { - "enum": [ - "PROJECTION", - "LESS_THAN", - "CONTAINS", - "GREATER_THAN", - "BETWEEN", - "LESS_THAN_OR_EQUAL_TO", - "GREATER_THAN_OR_EQUAL_TO", - "EQUAL_TO", - "NOT_EQUAL_TO", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "ServiceNowSourceProperties": { - "additionalProperties": false, - "properties": { - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "SingularConnectorOperator": { - "enum": [ - "PROJECTION", - "EQUAL_TO", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "SingularSourceProperties": { - "additionalProperties": false, - "properties": { - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "SlackConnectorOperator": { - "enum": [ - "PROJECTION", - "BETWEEN", - "EQUAL_TO", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "SlackSourceProperties": { - "additionalProperties": false, - "properties": { - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "SnowflakeDestinationProperties": { - "additionalProperties": false, - "properties": { - "BucketPrefix": { - "$ref": "#/definitions/BucketPrefix" - }, - "ErrorHandlingConfig": { - "$ref": "#/definitions/ErrorHandlingConfig" - }, - "IntermediateBucketName": { - "$ref": "#/definitions/BucketName" - }, - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object", - "IntermediateBucketName" - ], - "type": "object" - }, - "SourceConnectorProperties": { - "description": "Source connector details required to query a connector", - "properties": { - "Amplitude": { - "$ref": "#/definitions/AmplitudeSourceProperties" - }, - "CustomConnector": { - "$ref": "#/definitions/CustomConnectorSourceProperties" - }, - "Datadog": { - "$ref": "#/definitions/DatadogSourceProperties" - }, - "Dynatrace": { - "$ref": "#/definitions/DynatraceSourceProperties" - }, - "GoogleAnalytics": { - "$ref": "#/definitions/GoogleAnalyticsSourceProperties" - }, - "InforNexus": { - "$ref": "#/definitions/InforNexusSourceProperties" - }, - "Marketo": { - "$ref": "#/definitions/MarketoSourceProperties" - }, - "Pardot": { - "$ref": "#/definitions/PardotSourceProperties" - }, - "S3": { - "$ref": "#/definitions/S3SourceProperties" - }, - "SAPOData": { - "$ref": "#/definitions/SAPODataSourceProperties" - }, - "Salesforce": { - "$ref": "#/definitions/SalesforceSourceProperties" - }, - "ServiceNow": { - "$ref": "#/definitions/ServiceNowSourceProperties" - }, - "Singular": { - "$ref": "#/definitions/SingularSourceProperties" - }, - "Slack": { - "$ref": "#/definitions/SlackSourceProperties" - }, - "Trendmicro": { - "$ref": "#/definitions/TrendmicroSourceProperties" - }, - "Veeva": { - "$ref": "#/definitions/VeevaSourceProperties" - }, - "Zendesk": { - "$ref": "#/definitions/ZendeskSourceProperties" - } - }, - "type": "object" - }, - "SourceFlowConfig": { - "additionalProperties": false, - "description": "Configurations of Source connector of the flow.", - "properties": { - "ApiVersion": { - "$ref": "#/definitions/ApiVersion", - "description": "The API version that the destination connector uses." - }, - "ConnectorProfileName": { - "$ref": "#/definitions/ConnectorProfileName", - "description": "Name of source connector profile" - }, - "ConnectorType": { - "$ref": "#/definitions/ConnectorType", - "description": "Type of source connector" - }, - "IncrementalPullConfig": { - "$ref": "#/definitions/IncrementalPullConfig", - "description": "Configuration for scheduled incremental data pull" - }, - "SourceConnectorProperties": { - "$ref": "#/definitions/SourceConnectorProperties", - "description": "Source connector details required to query a connector" - } - }, - "required": [ - "ConnectorType", - "SourceConnectorProperties" - ], - "type": "object" - }, - "Status": { - "enum": [ - "Active", - "Draft", - "Errored", - "Suspended" - ], - "type": "string" - }, - "SuccessResponseHandlingConfig": { - "additionalProperties": false, - "properties": { - "BucketName": { - "$ref": "#/definitions/BucketName" - }, - "BucketPrefix": { - "$ref": "#/definitions/BucketPrefix" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A label for tagging AppFlow resources", - "properties": { - "Key": { - "description": "A string used to identify this tag", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "A string containing the value for the tag", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TargetFileSize": { - "type": "integer" - }, - "Task": { - "additionalProperties": false, - "properties": { - "ConnectorOperator": { - "$ref": "#/definitions/ConnectorOperator", - "description": "Operation to be performed on provided source fields" - }, - "DestinationField": { - "description": "A field value on which source field should be validated", - "maxLength": 256, - "type": "string" - }, - "SourceFields": { - "description": "Source fields on which particular task will be applied", - "items": { - "type": "string" - }, - "type": "array" - }, - "TaskProperties": { - "description": "A Map used to store task related info", - "items": { - "$ref": "#/definitions/TaskPropertiesObject" - }, - "type": "array" - }, - "TaskType": { - "$ref": "#/definitions/TaskType", - "description": "Type of task" - } - }, - "required": [ - "SourceFields", - "TaskType" - ], - "type": "object" - }, - "TaskPropertiesObject": { - "additionalProperties": false, - "description": "An object used to store task related info", - "properties": { - "Key": { - "$ref": "#/definitions/OperatorPropertiesKeys" - }, - "Value": { - "maxLength": 2048, - "pattern": ".+", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TaskType": { - "enum": [ - "Arithmetic", - "Filter", - "Map", - "Map_all", - "Mask", - "Merge", - "Passthrough", - "Truncate", - "Validate", - "Partition" - ], - "type": "string" - }, - "TrendmicroConnectorOperator": { - "enum": [ - "PROJECTION", - "EQUAL_TO", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "TrendmicroSourceProperties": { - "additionalProperties": false, - "properties": { - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "TriggerConfig": { - "additionalProperties": false, - "description": "Trigger settings of the flow.", - "properties": { - "TriggerProperties": { - "$ref": "#/definitions/ScheduledTriggerProperties", - "description": "Details required based on the type of trigger" - }, - "TriggerType": { - "$ref": "#/definitions/TriggerType", - "description": "Trigger type of the flow" - } - }, - "required": [ - "TriggerType" - ], - "type": "object" - }, - "TriggerType": { - "enum": [ - "Scheduled", - "Event", - "OnDemand" - ], - "type": "string" - }, - "UpsolverBucketName": { - "maxLength": 63, - "minLength": 16, - "pattern": "^(upsolver-appflow)\\S*", - "type": "string" - }, - "UpsolverDestinationProperties": { - "additionalProperties": false, - "properties": { - "BucketName": { - "$ref": "#/definitions/UpsolverBucketName" - }, - "BucketPrefix": { - "$ref": "#/definitions/BucketPrefix" - }, - "S3OutputFormatConfig": { - "$ref": "#/definitions/UpsolverS3OutputFormatConfig" - } - }, - "required": [ - "BucketName", - "S3OutputFormatConfig" - ], - "type": "object" - }, - "UpsolverS3OutputFormatConfig": { - "additionalProperties": false, - "properties": { - "AggregationConfig": { - "$ref": "#/definitions/AggregationConfig" - }, - "FileType": { - "$ref": "#/definitions/FileType" - }, - "PrefixConfig": { - "$ref": "#/definitions/PrefixConfig" - } - }, - "required": [ - "PrefixConfig" - ], - "type": "object" - }, - "VeevaConnectorOperator": { - "enum": [ - "PROJECTION", - "LESS_THAN", - "GREATER_THAN", - "BETWEEN", - "LESS_THAN_OR_EQUAL_TO", - "GREATER_THAN_OR_EQUAL_TO", - "EQUAL_TO", - "NOT_EQUAL_TO", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "VeevaSourceProperties": { - "additionalProperties": false, - "properties": { - "DocumentType": { - "$ref": "#/definitions/DocumentType" - }, - "IncludeAllVersions": { - "$ref": "#/definitions/IncludeAllVersions" - }, - "IncludeRenditions": { - "$ref": "#/definitions/IncludeRenditions" - }, - "IncludeSourceFiles": { - "$ref": "#/definitions/IncludeSourceFiles" - }, - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "WriteOperationType": { - "enum": [ - "INSERT", - "UPSERT", - "UPDATE", - "DELETE" - ], - "type": "string" - }, - "ZendeskConnectorOperator": { - "enum": [ - "PROJECTION", - "GREATER_THAN", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "ZendeskDestinationProperties": { - "additionalProperties": false, - "properties": { - "ErrorHandlingConfig": { - "$ref": "#/definitions/ErrorHandlingConfig" - }, - "IdFieldNames": { - "description": "List of fields used as ID when performing a write operation.", - "items": { - "type": "string" - }, - "type": "array" - }, - "Object": { - "$ref": "#/definitions/Object" - }, - "WriteOperationType": { - "$ref": "#/definitions/WriteOperationType" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "ZendeskSourceProperties": { - "additionalProperties": false, - "properties": { - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::AppFlow::Flow.", - "handlers": { - "create": { - "permissions": [ - "appflow:CreateFlow", - "appflow:StartFlow", - "appflow:TagResource", - "appflow:ListTagsForResource", - "appflow:UseConnectorProfile", - "iam:PassRole", - "s3:ListAllMyBuckets", - "s3:GetBucketLocation", - "s3:GetBucketPolicy", - "kms:ListGrants", - "kms:ListKeys", - "kms:DescribeKey", - "kms:ListAliases", - "kms:CreateGrant", - "secretsmanager:CreateSecret", - "secretsmanager:PutResourcePolicy" - ] - }, - "delete": { - "permissions": [ - "appflow:DeleteFlow" - ] - }, - "list": { - "permissions": [ - "appflow:ListFlows" - ] - }, - "read": { - "permissions": [ - "appflow:DescribeFlow", - "appflow:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "appflow:UpdateFlow", - "appflow:StartFlow", - "appflow:StopFlow", - "appflow:TagResource", - "appflow:UntagResource", - "appflow:ListTagsForResource", - "appflow:UseConnectorProfile", - "iam:PassRole", - "s3:ListAllMyBuckets", - "s3:GetBucketLocation", - "s3:GetBucketPolicy", - "kms:ListGrants", - "secretsmanager:CreateSecret", - "secretsmanager:PutResourcePolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/FlowName" - ], - "properties": { - "Description": { - "description": "Description of the flow.", - "maxLength": 2048, - "pattern": "[\\w!@#\\-.?,\\s]*", - "type": "string" - }, - "DestinationFlowConfigList": { - "description": "List of Destination connectors of the flow.", - "items": { - "$ref": "#/definitions/DestinationFlowConfig" - }, - "type": "array" - }, - "FlowArn": { - "description": "ARN identifier of the flow.", - "maxLength": 512, - "pattern": "arn:aws:appflow:.*:[0-9]+:.*", - "type": "string" - }, - "FlowName": { - "description": "Name of the flow.", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z0-9][\\w!@#.-]+", - "type": "string" - }, - "FlowStatus": { - "description": "Flow activation status for Scheduled- and Event-triggered flows", - "enum": [ - "Active", - "Suspended", - "Draft" - ], - "type": "string" - }, - "KMSArn": { - "description": "The ARN of the AWS Key Management Service (AWS KMS) key that's used to encrypt your function's environment variables. If it's not provided, AWS Lambda uses a default service key.", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:aws:kms:.*:[0-9]+:.*", - "type": "string" - }, - "MetadataCatalogConfig": { - "$ref": "#/definitions/MetadataCatalogConfig", - "description": "Configurations of metadata catalog of the flow." - }, - "SourceFlowConfig": { - "$ref": "#/definitions/SourceFlowConfig", - "description": "Configurations of Source connector of the flow." - }, - "Tags": { - "description": "List of Tags.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "Tasks": { - "description": "List of tasks for the flow.", - "items": { - "$ref": "#/definitions/Task" - }, - "type": "array" - }, - "TriggerConfig": { - "$ref": "#/definitions/TriggerConfig", - "description": "Trigger settings of the flow." - } - }, - "readOnlyProperties": [ - "/properties/FlowArn" - ], - "required": [ - "FlowName", - "Tasks", - "SourceFlowConfig", - "DestinationFlowConfigList", - "TriggerConfig" - ], - "sourceUrl": "https://docs.aws.amazon.com/appflow/latest/userguide/what-is-appflow.html", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::AppFlow::Flow" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FlowName", + "/properties/KMSArn" + ], + "definitions": { + "AggregationConfig": { + "properties": { + "AggregationType": { + "$ref": "#/definitions/AggregationType" + }, + "TargetFileSize": { + "$ref": "#/definitions/TargetFileSize" + } + }, + "type": "object" + }, + "AggregationType": { + "enum": [ + "None", + "SingleFile" + ], + "type": "string" + }, + "AmplitudeConnectorOperator": { + "enum": [ + "BETWEEN" + ], + "type": "string" + }, + "AmplitudeSourceProperties": { + "additionalProperties": false, + "properties": { + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "ApiVersion": { + "description": "The API version that the connector will use.", + "maxLength": 256, + "pattern": "\\S+", + "type": "string" + }, + "BucketName": { + "maxLength": 63, + "minLength": 3, + "pattern": "\\S+", + "type": "string" + }, + "BucketPrefix": { + "maxLength": 512, + "type": "string" + }, + "ConnectorOperator": { + "description": "Operation to be performed on provided source fields", + "properties": { + "Amplitude": { + "$ref": "#/definitions/AmplitudeConnectorOperator" + }, + "CustomConnector": { + "$ref": "#/definitions/Operator" + }, + "Datadog": { + "$ref": "#/definitions/DatadogConnectorOperator" + }, + "Dynatrace": { + "$ref": "#/definitions/DynatraceConnectorOperator" + }, + "GoogleAnalytics": { + "$ref": "#/definitions/GoogleAnalyticsConnectorOperator" + }, + "InforNexus": { + "$ref": "#/definitions/InforNexusConnectorOperator" + }, + "Marketo": { + "$ref": "#/definitions/MarketoConnectorOperator" + }, + "Pardot": { + "$ref": "#/definitions/PardotConnectorOperator" + }, + "S3": { + "$ref": "#/definitions/S3ConnectorOperator" + }, + "SAPOData": { + "$ref": "#/definitions/SAPODataConnectorOperator" + }, + "Salesforce": { + "$ref": "#/definitions/SalesforceConnectorOperator" + }, + "ServiceNow": { + "$ref": "#/definitions/ServiceNowConnectorOperator" + }, + "Singular": { + "$ref": "#/definitions/SingularConnectorOperator" + }, + "Slack": { + "$ref": "#/definitions/SlackConnectorOperator" + }, + "Trendmicro": { + "$ref": "#/definitions/TrendmicroConnectorOperator" + }, + "Veeva": { + "$ref": "#/definitions/VeevaConnectorOperator" + }, + "Zendesk": { + "$ref": "#/definitions/ZendeskConnectorOperator" + } + }, + "type": "object" + }, + "ConnectorProfileName": { + "description": "Name of connector profile", + "maxLength": 256, + "pattern": "[\\w/!@#+=.-]+", + "type": "string" + }, + "ConnectorType": { + "enum": [ + "SAPOData", + "Salesforce", + "Pardot", + "Singular", + "Slack", + "Redshift", + "S3", + "Marketo", + "Googleanalytics", + "Zendesk", + "Servicenow", + "Datadog", + "Trendmicro", + "Snowflake", + "Dynatrace", + "Infornexus", + "Amplitude", + "Veeva", + "CustomConnector", + "EventBridge", + "Upsolver", + "LookoutMetrics" + ], + "type": "string" + }, + "CustomConnectorDestinationProperties": { + "additionalProperties": false, + "properties": { + "CustomProperties": { + "$ref": "#/definitions/CustomProperties" + }, + "EntityName": { + "$ref": "#/definitions/EntityName" + }, + "ErrorHandlingConfig": { + "$ref": "#/definitions/ErrorHandlingConfig" + }, + "IdFieldNames": { + "description": "List of fields used as ID when performing a write operation.", + "items": { + "type": "string" + }, + "type": "array" + }, + "WriteOperationType": { + "$ref": "#/definitions/WriteOperationType" + } + }, + "required": [ + "EntityName" + ], + "type": "object" + }, + "CustomConnectorSourceProperties": { + "additionalProperties": false, + "properties": { + "CustomProperties": { + "$ref": "#/definitions/CustomProperties" + }, + "DataTransferApi": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 64, + "pattern": "[\\w/-]+", + "type": "string" + }, + "Type": { + "enum": [ + "SYNC", + "ASYNC", + "AUTOMATIC" + ], + "type": "string" + } + }, + "required": [ + "Name", + "Type" + ], + "type": "object" + }, + "EntityName": { + "$ref": "#/definitions/EntityName" + } + }, + "required": [ + "EntityName" + ], + "type": "object" + }, + "CustomProperties": { + "additionalProperties": false, + "description": "A map for properties for custom connector.", + "patternProperties": { + "^[\\w]{1,2048}$": { + "description": "A string containing the value for the property", + "maxLength": 2048, + "minLength": 1, + "pattern": "\\S+", + "type": "string" + } + }, + "required": [], + "type": "object" + }, + "DataTransferApi": { + "enum": [ + "AUTOMATIC", + "BULKV2", + "REST_SYNC" + ], + "type": "string" + }, + "DatadogConnectorOperator": { + "enum": [ + "PROJECTION", + "BETWEEN", + "EQUAL_TO", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "DatadogSourceProperties": { + "additionalProperties": false, + "properties": { + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "DatetimeTypeFieldName": { + "description": "Name of the datetime/timestamp data type field to be used for importing incremental records from the source", + "maxLength": 256, + "type": "string" + }, + "DestinationConnectorProperties": { + "description": "Destination connector details", + "properties": { + "CustomConnector": { + "$ref": "#/definitions/CustomConnectorDestinationProperties" + }, + "EventBridge": { + "$ref": "#/definitions/EventBridgeDestinationProperties" + }, + "LookoutMetrics": { + "$ref": "#/definitions/LookoutMetricsDestinationProperties" + }, + "Marketo": { + "$ref": "#/definitions/MarketoDestinationProperties" + }, + "Redshift": { + "$ref": "#/definitions/RedshiftDestinationProperties" + }, + "S3": { + "$ref": "#/definitions/S3DestinationProperties" + }, + "SAPOData": { + "$ref": "#/definitions/SAPODataDestinationProperties" + }, + "Salesforce": { + "$ref": "#/definitions/SalesforceDestinationProperties" + }, + "Snowflake": { + "$ref": "#/definitions/SnowflakeDestinationProperties" + }, + "Upsolver": { + "$ref": "#/definitions/UpsolverDestinationProperties" + }, + "Zendesk": { + "$ref": "#/definitions/ZendeskDestinationProperties" + } + }, + "type": "object" + }, + "DestinationFlowConfig": { + "additionalProperties": false, + "description": "Configurations of destination connector.", + "properties": { + "ApiVersion": { + "$ref": "#/definitions/ApiVersion", + "description": "The API version that the destination connector uses." + }, + "ConnectorProfileName": { + "$ref": "#/definitions/ConnectorProfileName", + "description": "Name of destination connector profile" + }, + "ConnectorType": { + "$ref": "#/definitions/ConnectorType", + "description": "Destination connector type" + }, + "DestinationConnectorProperties": { + "$ref": "#/definitions/DestinationConnectorProperties", + "description": "Destination connector details" + } + }, + "required": [ + "ConnectorType", + "DestinationConnectorProperties" + ], + "type": "object" + }, + "DocumentType": { + "maxLength": 512, + "pattern": "[\\s\\w_-]+", + "type": "string" + }, + "DynatraceConnectorOperator": { + "enum": [ + "PROJECTION", + "BETWEEN", + "EQUAL_TO", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "DynatraceSourceProperties": { + "additionalProperties": false, + "properties": { + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "EnableDynamicFieldUpdate": { + "type": "boolean" + }, + "EntityName": { + "maxLength": 1024, + "pattern": "\\S+", + "type": "string" + }, + "ErrorHandlingConfig": { + "additionalProperties": false, + "properties": { + "BucketName": { + "$ref": "#/definitions/BucketName" + }, + "BucketPrefix": { + "$ref": "#/definitions/BucketPrefix" + }, + "FailOnFirstError": { + "type": "boolean" + } + }, + "type": "object" + }, + "EventBridgeDestinationProperties": { + "additionalProperties": false, + "properties": { + "ErrorHandlingConfig": { + "$ref": "#/definitions/ErrorHandlingConfig" + }, + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "FileType": { + "enum": [ + "CSV", + "JSON", + "PARQUET" + ], + "type": "string" + }, + "GlueDataCatalog": { + "additionalProperties": false, + "description": "Trigger settings of the flow.", + "properties": { + "DatabaseName": { + "description": "A string containing the value for the tag", + "maxLength": 255, + "minLength": 0, + "pattern": "[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*", + "type": "string" + }, + "RoleArn": { + "description": "A string containing the value for the tag", + "maxLength": 512, + "minLength": 0, + "pattern": "arn:aws:iam:.*:[0-9]+:.*", + "type": "string" + }, + "TablePrefix": { + "description": "A string containing the value for the tag", + "maxLength": 128, + "minLength": 0, + "pattern": "[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*", + "type": "string" + } + }, + "required": [ + "RoleArn", + "DatabaseName", + "TablePrefix" + ], + "type": "object" + }, + "GoogleAnalyticsConnectorOperator": { + "enum": [ + "PROJECTION", + "BETWEEN" + ], + "type": "string" + }, + "GoogleAnalyticsSourceProperties": { + "additionalProperties": false, + "properties": { + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "IncludeAllVersions": { + "type": "boolean" + }, + "IncludeDeletedRecords": { + "type": "boolean" + }, + "IncludeRenditions": { + "type": "boolean" + }, + "IncludeSourceFiles": { + "type": "boolean" + }, + "IncrementalPullConfig": { + "description": "Configuration for scheduled incremental data pull", + "properties": { + "DatetimeTypeFieldName": { + "$ref": "#/definitions/DatetimeTypeFieldName" + } + }, + "type": "object" + }, + "InforNexusConnectorOperator": { + "enum": [ + "PROJECTION", + "BETWEEN", + "EQUAL_TO", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "InforNexusSourceProperties": { + "additionalProperties": false, + "properties": { + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "LookoutMetricsDestinationProperties": { + "additionalProperties": false, + "properties": { + "Object": { + "$ref": "#/definitions/Object" + } + }, + "type": "object" + }, + "MarketoConnectorOperator": { + "enum": [ + "PROJECTION", + "LESS_THAN", + "GREATER_THAN", + "BETWEEN", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "MarketoDestinationProperties": { + "additionalProperties": false, + "properties": { + "ErrorHandlingConfig": { + "$ref": "#/definitions/ErrorHandlingConfig" + }, + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "MarketoSourceProperties": { + "additionalProperties": false, + "properties": { + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "MetadataCatalogConfig": { + "additionalProperties": false, + "description": "Configurations of metadata catalog of the flow.", + "properties": { + "GlueDataCatalog": { + "$ref": "#/definitions/GlueDataCatalog", + "description": "Configurations of glue data catalog of the flow." + } + }, + "type": "object" + }, + "Name": { + "maxLength": 128, + "pattern": "\\S+", + "type": "string" + }, + "Object": { + "maxLength": 512, + "pattern": "\\S+", + "type": "string" + }, + "Operator": { + "enum": [ + "PROJECTION", + "LESS_THAN", + "GREATER_THAN", + "CONTAINS", + "BETWEEN", + "LESS_THAN_OR_EQUAL_TO", + "GREATER_THAN_OR_EQUAL_TO", + "EQUAL_TO", + "NOT_EQUAL_TO", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "OperatorPropertiesKeys": { + "enum": [ + "VALUE", + "VALUES", + "DATA_TYPE", + "UPPER_BOUND", + "LOWER_BOUND", + "SOURCE_DATA_TYPE", + "DESTINATION_DATA_TYPE", + "VALIDATION_ACTION", + "MASK_VALUE", + "MASK_LENGTH", + "TRUNCATE_LENGTH", + "MATH_OPERATION_FIELDS_ORDER", + "CONCAT_FORMAT", + "SUBFIELD_CATEGORY_MAP", + "EXCLUDE_SOURCE_FIELDS_LIST", + "INCLUDE_NEW_FIELDS", + "ORDERED_PARTITION_KEYS_LIST" + ], + "type": "string" + }, + "PardotConnectorOperator": { + "enum": [ + "PROJECTION", + "EQUAL_TO", + "NO_OP", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC" + ], + "type": "string" + }, + "PardotSourceProperties": { + "additionalProperties": false, + "properties": { + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "PathPrefix": { + "enum": [ + "EXECUTION_ID", + "SCHEMA_VERSION" + ], + "type": "string" + }, + "PathPrefixHierarchy": { + "items": { + "$ref": "#/definitions/PathPrefix" + }, + "type": "array" + }, + "PrefixConfig": { + "additionalProperties": false, + "properties": { + "PathPrefixHierarchy": { + "$ref": "#/definitions/PathPrefixHierarchy" + }, + "PrefixFormat": { + "$ref": "#/definitions/PrefixFormat" + }, + "PrefixType": { + "$ref": "#/definitions/PrefixType" + } + }, + "type": "object" + }, + "PrefixFormat": { + "enum": [ + "YEAR", + "MONTH", + "DAY", + "HOUR", + "MINUTE" + ], + "type": "string" + }, + "PrefixType": { + "enum": [ + "FILENAME", + "PATH", + "PATH_AND_FILENAME" + ], + "type": "string" + }, + "PreserveSourceDataTyping": { + "type": "boolean" + }, + "RedshiftDestinationProperties": { + "additionalProperties": false, + "properties": { + "BucketPrefix": { + "$ref": "#/definitions/BucketPrefix" + }, + "ErrorHandlingConfig": { + "$ref": "#/definitions/ErrorHandlingConfig" + }, + "IntermediateBucketName": { + "$ref": "#/definitions/BucketName" + }, + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object", + "IntermediateBucketName" + ], + "type": "object" + }, + "S3ConnectorOperator": { + "enum": [ + "PROJECTION", + "LESS_THAN", + "GREATER_THAN", + "BETWEEN", + "LESS_THAN_OR_EQUAL_TO", + "GREATER_THAN_OR_EQUAL_TO", + "EQUAL_TO", + "NOT_EQUAL_TO", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "S3DestinationProperties": { + "additionalProperties": false, + "properties": { + "BucketName": { + "$ref": "#/definitions/BucketName" + }, + "BucketPrefix": { + "$ref": "#/definitions/BucketPrefix" + }, + "S3OutputFormatConfig": { + "$ref": "#/definitions/S3OutputFormatConfig" + } + }, + "required": [ + "BucketName" + ], + "type": "object" + }, + "S3InputFormatConfig": { + "properties": { + "S3InputFileType": { + "enum": [ + "CSV", + "JSON" + ], + "type": "string" + } + }, + "type": "object" + }, + "S3OutputFormatConfig": { + "additionalProperties": false, + "properties": { + "AggregationConfig": { + "$ref": "#/definitions/AggregationConfig" + }, + "FileType": { + "$ref": "#/definitions/FileType" + }, + "PrefixConfig": { + "$ref": "#/definitions/PrefixConfig" + }, + "PreserveSourceDataTyping": { + "$ref": "#/definitions/PreserveSourceDataTyping" + } + }, + "type": "object" + }, + "S3SourceProperties": { + "additionalProperties": false, + "properties": { + "BucketName": { + "$ref": "#/definitions/BucketName" + }, + "BucketPrefix": { + "$ref": "#/definitions/BucketPrefix" + }, + "S3InputFormatConfig": { + "$ref": "#/definitions/S3InputFormatConfig" + } + }, + "required": [ + "BucketName", + "BucketPrefix" + ], + "type": "object" + }, + "SAPODataConnectorOperator": { + "enum": [ + "PROJECTION", + "LESS_THAN", + "CONTAINS", + "GREATER_THAN", + "BETWEEN", + "LESS_THAN_OR_EQUAL_TO", + "GREATER_THAN_OR_EQUAL_TO", + "EQUAL_TO", + "NOT_EQUAL_TO", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "SAPODataDestinationProperties": { + "additionalProperties": false, + "properties": { + "ErrorHandlingConfig": { + "$ref": "#/definitions/ErrorHandlingConfig" + }, + "IdFieldNames": { + "description": "List of fields used as ID when performing a write operation.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ObjectPath": { + "$ref": "#/definitions/Object" + }, + "SuccessResponseHandlingConfig": { + "$ref": "#/definitions/SuccessResponseHandlingConfig" + }, + "WriteOperationType": { + "$ref": "#/definitions/WriteOperationType" + } + }, + "required": [ + "ObjectPath" + ], + "type": "object" + }, + "SAPODataMaxPageSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "SAPODataMaxParallelism": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "SAPODataPaginationConfig": { + "additionalProperties": false, + "description": "SAP Source connector page size", + "properties": { + "maxPageSize": { + "$ref": "#/definitions/SAPODataMaxPageSize" + } + }, + "required": [ + "maxPageSize" + ], + "type": "object" + }, + "SAPODataParallelismConfig": { + "additionalProperties": false, + "description": "SAP Source connector parallelism factor", + "properties": { + "maxParallelism": { + "$ref": "#/definitions/SAPODataMaxParallelism" + } + }, + "required": [ + "maxParallelism" + ], + "type": "object" + }, + "SAPODataSourceProperties": { + "additionalProperties": false, + "properties": { + "ObjectPath": { + "$ref": "#/definitions/Object" + }, + "paginationConfig": { + "$ref": "#/definitions/SAPODataPaginationConfig" + }, + "parallelismConfig": { + "$ref": "#/definitions/SAPODataParallelismConfig" + } + }, + "required": [ + "ObjectPath" + ], + "type": "object" + }, + "SalesforceConnectorOperator": { + "enum": [ + "PROJECTION", + "LESS_THAN", + "CONTAINS", + "GREATER_THAN", + "BETWEEN", + "LESS_THAN_OR_EQUAL_TO", + "GREATER_THAN_OR_EQUAL_TO", + "EQUAL_TO", + "NOT_EQUAL_TO", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "SalesforceDestinationProperties": { + "additionalProperties": false, + "properties": { + "DataTransferApi": { + "$ref": "#/definitions/DataTransferApi" + }, + "ErrorHandlingConfig": { + "$ref": "#/definitions/ErrorHandlingConfig" + }, + "IdFieldNames": { + "description": "List of fields used as ID when performing a write operation.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Object": { + "$ref": "#/definitions/Object" + }, + "WriteOperationType": { + "$ref": "#/definitions/WriteOperationType" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "SalesforceSourceProperties": { + "additionalProperties": false, + "properties": { + "DataTransferApi": { + "$ref": "#/definitions/DataTransferApi" + }, + "EnableDynamicFieldUpdate": { + "$ref": "#/definitions/EnableDynamicFieldUpdate" + }, + "IncludeDeletedRecords": { + "$ref": "#/definitions/IncludeDeletedRecords" + }, + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "ScheduledTriggerProperties": { + "additionalProperties": false, + "description": "Details required for scheduled trigger type", + "properties": { + "DataPullMode": { + "enum": [ + "Incremental", + "Complete" + ], + "type": "string" + }, + "FirstExecutionFrom": { + "type": "number" + }, + "FlowErrorDeactivationThreshold": { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "ScheduleEndTime": { + "type": "number" + }, + "ScheduleExpression": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "ScheduleOffset": { + "maximum": 36000, + "minimum": 0, + "type": "number" + }, + "ScheduleStartTime": { + "type": "number" + }, + "TimeZone": { + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "ScheduleExpression" + ], + "type": "object" + }, + "ServiceNowConnectorOperator": { + "enum": [ + "PROJECTION", + "LESS_THAN", + "CONTAINS", + "GREATER_THAN", + "BETWEEN", + "LESS_THAN_OR_EQUAL_TO", + "GREATER_THAN_OR_EQUAL_TO", + "EQUAL_TO", + "NOT_EQUAL_TO", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "ServiceNowSourceProperties": { + "additionalProperties": false, + "properties": { + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "SingularConnectorOperator": { + "enum": [ + "PROJECTION", + "EQUAL_TO", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "SingularSourceProperties": { + "additionalProperties": false, + "properties": { + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "SlackConnectorOperator": { + "enum": [ + "PROJECTION", + "BETWEEN", + "EQUAL_TO", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "SlackSourceProperties": { + "additionalProperties": false, + "properties": { + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "SnowflakeDestinationProperties": { + "additionalProperties": false, + "properties": { + "BucketPrefix": { + "$ref": "#/definitions/BucketPrefix" + }, + "ErrorHandlingConfig": { + "$ref": "#/definitions/ErrorHandlingConfig" + }, + "IntermediateBucketName": { + "$ref": "#/definitions/BucketName" + }, + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object", + "IntermediateBucketName" + ], + "type": "object" + }, + "SourceConnectorProperties": { + "description": "Source connector details required to query a connector", + "properties": { + "Amplitude": { + "$ref": "#/definitions/AmplitudeSourceProperties" + }, + "CustomConnector": { + "$ref": "#/definitions/CustomConnectorSourceProperties" + }, + "Datadog": { + "$ref": "#/definitions/DatadogSourceProperties" + }, + "Dynatrace": { + "$ref": "#/definitions/DynatraceSourceProperties" + }, + "GoogleAnalytics": { + "$ref": "#/definitions/GoogleAnalyticsSourceProperties" + }, + "InforNexus": { + "$ref": "#/definitions/InforNexusSourceProperties" + }, + "Marketo": { + "$ref": "#/definitions/MarketoSourceProperties" + }, + "Pardot": { + "$ref": "#/definitions/PardotSourceProperties" + }, + "S3": { + "$ref": "#/definitions/S3SourceProperties" + }, + "SAPOData": { + "$ref": "#/definitions/SAPODataSourceProperties" + }, + "Salesforce": { + "$ref": "#/definitions/SalesforceSourceProperties" + }, + "ServiceNow": { + "$ref": "#/definitions/ServiceNowSourceProperties" + }, + "Singular": { + "$ref": "#/definitions/SingularSourceProperties" + }, + "Slack": { + "$ref": "#/definitions/SlackSourceProperties" + }, + "Trendmicro": { + "$ref": "#/definitions/TrendmicroSourceProperties" + }, + "Veeva": { + "$ref": "#/definitions/VeevaSourceProperties" + }, + "Zendesk": { + "$ref": "#/definitions/ZendeskSourceProperties" + } + }, + "type": "object" + }, + "SourceFlowConfig": { + "additionalProperties": false, + "description": "Configurations of Source connector of the flow.", + "properties": { + "ApiVersion": { + "$ref": "#/definitions/ApiVersion", + "description": "The API version that the destination connector uses." + }, + "ConnectorProfileName": { + "$ref": "#/definitions/ConnectorProfileName", + "description": "Name of source connector profile" + }, + "ConnectorType": { + "$ref": "#/definitions/ConnectorType", + "description": "Type of source connector" + }, + "IncrementalPullConfig": { + "$ref": "#/definitions/IncrementalPullConfig", + "description": "Configuration for scheduled incremental data pull" + }, + "SourceConnectorProperties": { + "$ref": "#/definitions/SourceConnectorProperties", + "description": "Source connector details required to query a connector" + } + }, + "required": [ + "ConnectorType", + "SourceConnectorProperties" + ], + "type": "object" + }, + "Status": { + "enum": [ + "Active", + "Draft", + "Errored", + "Suspended" + ], + "type": "string" + }, + "SuccessResponseHandlingConfig": { + "additionalProperties": false, + "properties": { + "BucketName": { + "$ref": "#/definitions/BucketName" + }, + "BucketPrefix": { + "$ref": "#/definitions/BucketPrefix" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A label for tagging AppFlow resources", + "properties": { + "Key": { + "description": "A string used to identify this tag", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A string containing the value for the tag", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TargetFileSize": { + "type": "integer" + }, + "Task": { + "additionalProperties": false, + "properties": { + "ConnectorOperator": { + "$ref": "#/definitions/ConnectorOperator", + "description": "Operation to be performed on provided source fields" + }, + "DestinationField": { + "description": "A field value on which source field should be validated", + "maxLength": 256, + "type": "string" + }, + "SourceFields": { + "description": "Source fields on which particular task will be applied", + "items": { + "type": "string" + }, + "type": "array" + }, + "TaskProperties": { + "description": "A Map used to store task related info", + "items": { + "$ref": "#/definitions/TaskPropertiesObject" + }, + "type": "array" + }, + "TaskType": { + "$ref": "#/definitions/TaskType", + "description": "Type of task" + } + }, + "required": [ + "SourceFields", + "TaskType" + ], + "type": "object" + }, + "TaskPropertiesObject": { + "additionalProperties": false, + "description": "An object used to store task related info", + "properties": { + "Key": { + "$ref": "#/definitions/OperatorPropertiesKeys" + }, + "Value": { + "maxLength": 2048, + "pattern": ".+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TaskType": { + "enum": [ + "Arithmetic", + "Filter", + "Map", + "Map_all", + "Mask", + "Merge", + "Passthrough", + "Truncate", + "Validate", + "Partition" + ], + "type": "string" + }, + "TrendmicroConnectorOperator": { + "enum": [ + "PROJECTION", + "EQUAL_TO", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "TrendmicroSourceProperties": { + "additionalProperties": false, + "properties": { + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "TriggerConfig": { + "additionalProperties": false, + "description": "Trigger settings of the flow.", + "properties": { + "TriggerProperties": { + "$ref": "#/definitions/ScheduledTriggerProperties", + "description": "Details required based on the type of trigger" + }, + "TriggerType": { + "$ref": "#/definitions/TriggerType", + "description": "Trigger type of the flow" + } + }, + "required": [ + "TriggerType" + ], + "type": "object" + }, + "TriggerType": { + "enum": [ + "Scheduled", + "Event", + "OnDemand" + ], + "type": "string" + }, + "UpsolverBucketName": { + "maxLength": 63, + "minLength": 16, + "pattern": "^(upsolver-appflow)\\S*", + "type": "string" + }, + "UpsolverDestinationProperties": { + "additionalProperties": false, + "properties": { + "BucketName": { + "$ref": "#/definitions/UpsolverBucketName" + }, + "BucketPrefix": { + "$ref": "#/definitions/BucketPrefix" + }, + "S3OutputFormatConfig": { + "$ref": "#/definitions/UpsolverS3OutputFormatConfig" + } + }, + "required": [ + "BucketName", + "S3OutputFormatConfig" + ], + "type": "object" + }, + "UpsolverS3OutputFormatConfig": { + "additionalProperties": false, + "properties": { + "AggregationConfig": { + "$ref": "#/definitions/AggregationConfig" + }, + "FileType": { + "$ref": "#/definitions/FileType" + }, + "PrefixConfig": { + "$ref": "#/definitions/PrefixConfig" + } + }, + "required": [ + "PrefixConfig" + ], + "type": "object" + }, + "VeevaConnectorOperator": { + "enum": [ + "PROJECTION", + "LESS_THAN", + "GREATER_THAN", + "BETWEEN", + "LESS_THAN_OR_EQUAL_TO", + "GREATER_THAN_OR_EQUAL_TO", + "EQUAL_TO", + "NOT_EQUAL_TO", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "VeevaSourceProperties": { + "additionalProperties": false, + "properties": { + "DocumentType": { + "$ref": "#/definitions/DocumentType" + }, + "IncludeAllVersions": { + "$ref": "#/definitions/IncludeAllVersions" + }, + "IncludeRenditions": { + "$ref": "#/definitions/IncludeRenditions" + }, + "IncludeSourceFiles": { + "$ref": "#/definitions/IncludeSourceFiles" + }, + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "WriteOperationType": { + "enum": [ + "INSERT", + "UPSERT", + "UPDATE", + "DELETE" + ], + "type": "string" + }, + "ZendeskConnectorOperator": { + "enum": [ + "PROJECTION", + "GREATER_THAN", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "ZendeskDestinationProperties": { + "additionalProperties": false, + "properties": { + "ErrorHandlingConfig": { + "$ref": "#/definitions/ErrorHandlingConfig" + }, + "IdFieldNames": { + "description": "List of fields used as ID when performing a write operation.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Object": { + "$ref": "#/definitions/Object" + }, + "WriteOperationType": { + "$ref": "#/definitions/WriteOperationType" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "ZendeskSourceProperties": { + "additionalProperties": false, + "properties": { + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::AppFlow::Flow.", + "handlers": { + "create": { + "permissions": [ + "appflow:CreateFlow", + "appflow:StartFlow", + "appflow:TagResource", + "appflow:ListTagsForResource", + "appflow:UseConnectorProfile", + "iam:PassRole", + "s3:ListAllMyBuckets", + "s3:GetBucketLocation", + "s3:GetBucketPolicy", + "kms:ListGrants", + "kms:ListKeys", + "kms:DescribeKey", + "kms:ListAliases", + "kms:CreateGrant", + "secretsmanager:CreateSecret", + "secretsmanager:PutResourcePolicy" + ] + }, + "delete": { + "permissions": [ + "appflow:DeleteFlow" + ] + }, + "list": { + "permissions": [ + "appflow:ListFlows" + ] + }, + "read": { + "permissions": [ + "appflow:DescribeFlow", + "appflow:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "appflow:DescribeFlow", + "appflow:UpdateFlow", + "appflow:StartFlow", + "appflow:StopFlow", + "appflow:TagResource", + "appflow:UntagResource", + "appflow:ListTagsForResource", + "appflow:UseConnectorProfile", + "iam:PassRole", + "s3:ListAllMyBuckets", + "s3:GetBucketLocation", + "s3:GetBucketPolicy", + "kms:ListGrants", + "secretsmanager:CreateSecret", + "secretsmanager:PutResourcePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/FlowName" + ], + "properties": { + "Description": { + "description": "Description of the flow.", + "maxLength": 2048, + "pattern": "[\\w!@#\\-.?,\\s]*", + "type": "string" + }, + "DestinationFlowConfigList": { + "description": "List of Destination connectors of the flow.", + "items": { + "$ref": "#/definitions/DestinationFlowConfig" + }, + "type": "array" + }, + "FlowArn": { + "description": "ARN identifier of the flow.", + "maxLength": 512, + "pattern": "arn:aws:appflow:.*:[0-9]+:.*", + "type": "string" + }, + "FlowName": { + "description": "Name of the flow.", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z0-9][\\w!@#.-]+", + "type": "string" + }, + "FlowStatus": { + "description": "Flow activation status for Scheduled- and Event-triggered flows", + "enum": [ + "Active", + "Suspended", + "Draft" + ], + "type": "string" + }, + "KMSArn": { + "description": "The ARN of the AWS Key Management Service (AWS KMS) key that's used to encrypt your function's environment variables. If it's not provided, AWS Lambda uses a default service key.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:aws:kms:.*:[0-9]+:.*", + "type": "string" + }, + "MetadataCatalogConfig": { + "$ref": "#/definitions/MetadataCatalogConfig", + "description": "Configurations of metadata catalog of the flow." + }, + "SourceFlowConfig": { + "$ref": "#/definitions/SourceFlowConfig", + "description": "Configurations of Source connector of the flow." + }, + "Tags": { + "description": "List of Tags.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Tasks": { + "description": "List of tasks for the flow.", + "items": { + "$ref": "#/definitions/Task" + }, + "type": "array" + }, + "TriggerConfig": { + "$ref": "#/definitions/TriggerConfig", + "description": "Trigger settings of the flow." + } + }, + "readOnlyProperties": [ + "/properties/FlowArn" + ], + "required": [ + "FlowName", + "Tasks", + "SourceFlowConfig", + "DestinationFlowConfigList", + "TriggerConfig" + ], + "sourceUrl": "https://docs.aws.amazon.com/appflow/latest/userguide/what-is-appflow.html", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "appflow:TagResource", + "appflow:UntagResource", + "appflow:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::AppFlow::Flow" +} diff --git a/src/schema/aws-appintegrations-application.json b/src/schema/aws-appintegrations-application.json index 96ae9424..161a39cc 100644 --- a/src/schema/aws-appintegrations-application.json +++ b/src/schema/aws-appintegrations-application.json @@ -1,192 +1,192 @@ -{ - "additionalProperties": false, - "definitions": { - "ApprovedOrigins": { - "maxLength": 1000, - "minLength": 1, - "pattern": "^\\w+\\:\\/\\/.*$", - "type": "string" - }, - "ExternalUrlConfig": { - "additionalProperties": false, - "properties": { - "AccessUrl": { - "maxLength": 1000, - "minLength": 1, - "pattern": "^\\w+\\:\\/\\/.*$", - "type": "string" - }, - "ApprovedOrigins": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ApprovedOrigins" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "AccessUrl" - ], - "type": "object" - }, - "Permissions": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\/\\._\\-\\*]+$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A label for tagging Application resources", - "properties": { - "Key": { - "description": "A key to identify the tag.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "Corresponding tag value for the key.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS:AppIntegrations::Application", - "handlers": { - "create": { - "permissions": [ - "app-integrations:CreateApplication", - "app-integrations:TagResource" - ] - }, - "delete": { - "permissions": [ - "app-integrations:DeleteApplication" - ] - }, - "list": { - "permissions": [ - "app-integrations:ListApplications", - "app-integrations:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "app-integrations:GetApplication" - ] - }, - "update": { - "permissions": [ - "app-integrations:GetApplication", - "app-integrations:UpdateApplication", - "app-integrations:TagResource", - "app-integrations:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationArn" - ], - "properties": { - "ApplicationArn": { - "description": "The Amazon Resource Name (ARN) of the application.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:aws[-a-z0-9]*:app-integrations:[-a-z0-9]*:[0-9]{12}:application/[-a-zA-Z0-9]*", - "type": "string" - }, - "ApplicationSourceConfig": { - "additionalProperties": false, - "description": "Application source config", - "properties": { - "ExternalUrlConfig": { - "$ref": "#/definitions/ExternalUrlConfig" - } - }, - "required": [ - "ExternalUrlConfig" - ], - "type": "object" - }, - "Description": { - "description": "The application description.", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "Id": { - "description": "The id of the application.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9/\\._\\-]+$", - "type": "string" - }, - "Name": { - "description": "The name of the application.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\/\\._ \\-]+$", - "type": "string" - }, - "Namespace": { - "description": "The namespace of the application.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9/\\._\\-]+$", - "type": "string" - }, - "Permissions": { - "description": "The configuration of events or requests that the application has access to.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Permissions" - }, - "maxItems": 150, - "minItems": 0, - "type": "array" - }, - "Tags": { - "description": "The tags (keys and values) associated with the application.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ApplicationArn", - "/properties/Id" - ], - "required": [ - "Name", - "Namespace", - "Description", - "ApplicationSourceConfig" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "app-integrations:TagResource", - "app-integrations:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AppIntegrations::Application" -} +{ + "additionalProperties": false, + "definitions": { + "ApprovedOrigins": { + "maxLength": 1000, + "minLength": 1, + "pattern": "^\\w+\\:\\/\\/.*$", + "type": "string" + }, + "ExternalUrlConfig": { + "additionalProperties": false, + "properties": { + "AccessUrl": { + "maxLength": 1000, + "minLength": 1, + "pattern": "^\\w+\\:\\/\\/.*$", + "type": "string" + }, + "ApprovedOrigins": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ApprovedOrigins" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "AccessUrl" + ], + "type": "object" + }, + "Permissions": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\/\\._\\-\\*]+$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A label for tagging Application resources", + "properties": { + "Key": { + "description": "A key to identify the tag.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "Corresponding tag value for the key.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS:AppIntegrations::Application", + "handlers": { + "create": { + "permissions": [ + "app-integrations:CreateApplication", + "app-integrations:TagResource" + ] + }, + "delete": { + "permissions": [ + "app-integrations:DeleteApplication" + ] + }, + "list": { + "permissions": [ + "app-integrations:ListApplications", + "app-integrations:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "app-integrations:GetApplication" + ] + }, + "update": { + "permissions": [ + "app-integrations:GetApplication", + "app-integrations:UpdateApplication", + "app-integrations:TagResource", + "app-integrations:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationArn" + ], + "properties": { + "ApplicationArn": { + "description": "The Amazon Resource Name (ARN) of the application.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws[-a-z0-9]*:app-integrations:[-a-z0-9]*:[0-9]{12}:application/[-a-zA-Z0-9]*", + "type": "string" + }, + "ApplicationSourceConfig": { + "additionalProperties": false, + "description": "Application source config", + "properties": { + "ExternalUrlConfig": { + "$ref": "#/definitions/ExternalUrlConfig" + } + }, + "required": [ + "ExternalUrlConfig" + ], + "type": "object" + }, + "Description": { + "description": "The application description.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "Id": { + "description": "The id of the application.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9/\\._\\-]+$", + "type": "string" + }, + "Name": { + "description": "The name of the application.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\/\\._ \\-]+$", + "type": "string" + }, + "Namespace": { + "description": "The namespace of the application.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9/\\._\\-]+$", + "type": "string" + }, + "Permissions": { + "description": "The configuration of events or requests that the application has access to.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Permissions" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Tags": { + "description": "The tags (keys and values) associated with the application.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ApplicationArn", + "/properties/Id" + ], + "required": [ + "Name", + "Namespace", + "Description", + "ApplicationSourceConfig" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "app-integrations:TagResource", + "app-integrations:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppIntegrations::Application" +} diff --git a/src/schema/aws-appintegrations-dataintegration.json b/src/schema/aws-appintegrations-dataintegration.json index 2711f100..6677fdfd 100644 --- a/src/schema/aws-appintegrations-dataintegration.json +++ b/src/schema/aws-appintegrations-dataintegration.json @@ -1,286 +1,286 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKey", - "/properties/ScheduleConfig", - "/properties/SourceURI" - ], - "definitions": { - "FileConfiguration": { - "additionalProperties": false, - "description": "The configuration for what files should be pulled from the source.", - "properties": { - "Filters": { - "additionalProperties": false, - "description": "Restrictions for what files should be pulled from the source.", - "patternProperties": { - "^[A-Za-z]": { - "items": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "maxItems": 2048, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "Folders": { - "description": "Identifiers for the source folders to pull all files from recursively.", - "items": { - "maxLength": 200, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Folders" - ], - "type": "object" - }, - "ObjectConfiguration": { - "additionalProperties": false, - "description": "The configuration for what data should be pulled from the source.", - "patternProperties": { - "^.+$": { - "additionalProperties": false, - "patternProperties": { - "^[A-Za-z]": { - "items": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "maxItems": 2048, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "ScheduleConfig": { - "additionalProperties": false, - "properties": { - "FirstExecutionFrom": { - "description": "The start date for objects to import in the first flow run. Epoch or ISO timestamp format is supported.", - "maxLength": 255, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "Object": { - "description": "The name of the object to pull from the data source.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9/\\._\\-]+$", - "type": "string" - }, - "ScheduleExpression": { - "description": "How often the data should be pulled from data source.", - "maxLength": 255, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - } - }, - "required": [ - "ScheduleExpression" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A label for tagging DataIntegration resources", - "properties": { - "Key": { - "description": "A key to identify the tag.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "Corresponding tag value for the key.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppIntegrations::DataIntegration", - "handlers": { - "create": { - "permissions": [ - "app-integrations:CreateDataIntegration", - "app-integrations:TagResource", - "appflow:DescribeConnectorProfiles", - "appflow:CreateFlow", - "appflow:DeleteFlow", - "appflow:DescribeConnectorEntity", - "appflow:UseConnectorProfile", - "appflow:TagResource", - "appflow:UntagResource", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:ListAliases", - "kms:ListGrants", - "kms:ListKeys", - "s3:GetBucketNotification", - "s3:PutBucketNotification", - "s3:GetEncryptionConfiguration" - ] - }, - "delete": { - "permissions": [ - "app-integrations:DeleteDataIntegration", - "app-integrations:UntagResource", - "appflow:CreateFlow", - "appflow:DeleteFlow", - "appflow:DescribeConnectorEntity", - "appflow:UseConnectorProfile", - "appflow:TagResource", - "appflow:UntagResource", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:ListAliases", - "kms:ListGrants", - "kms:ListKeys" - ] - }, - "list": { - "permissions": [ - "app-integrations:ListDataIntegrations" - ] - }, - "read": { - "permissions": [ - "app-integrations:GetDataIntegration", - "app-integrations:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "app-integrations:GetDataIntegration", - "app-integrations:UpdateDataIntegration", - "app-integrations:TagResource", - "app-integrations:UntagResource", - "appflow:DescribeConnectorProfiles", - "appflow:DeleteFlow", - "appflow:DescribeConnectorEntity", - "appflow:UseConnectorProfile", - "appflow:TagResource", - "appflow:UntagResource", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:ListAliases", - "kms:ListGrants", - "kms:ListKeys" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DataIntegrationArn": { - "description": "The Amazon Resource Name (ARN) of the data integration.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:aws[-a-z]*:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "Description": { - "description": "The data integration description.", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "FileConfiguration": { - "$ref": "#/definitions/FileConfiguration", - "description": "The configuration for what files should be pulled from the source." - }, - "Id": { - "description": "The unique identifer of the data integration.", - "maxLength": 255, - "minLength": 1, - "pattern": "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}", - "type": "string" - }, - "KmsKey": { - "description": "The KMS key of the data integration.", - "maxLength": 255, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "Name": { - "description": "The name of the data integration.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9/\\._\\-]+$", - "type": "string" - }, - "ObjectConfiguration": { - "$ref": "#/definitions/ObjectConfiguration", - "description": "The configuration for what data should be pulled from the source." - }, - "ScheduleConfig": { - "$ref": "#/definitions/ScheduleConfig", - "description": "The name of the data and how often it should be pulled from the source." - }, - "SourceURI": { - "description": "The URI of the data source.", - "maxLength": 1000, - "minLength": 1, - "pattern": "^(\\w+\\:\\/\\/[\\w.-]+[\\w/!@#+=.-]+$)|(\\w+\\:\\/\\/[\\w.-]+[\\w/!@#+=.-]+[\\w/!@#+=.-]+[\\w/!@#+=.,-]+$)", - "type": "string" - }, - "Tags": { - "description": "The tags (keys and values) associated with the data integration.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/DataIntegrationArn" - ], - "required": [ - "Name", - "KmsKey", - "SourceURI" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "app-integrations:TagResource", - "app-integrations:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AppIntegrations::DataIntegration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KmsKey", + "/properties/ScheduleConfig", + "/properties/SourceURI" + ], + "definitions": { + "FileConfiguration": { + "additionalProperties": false, + "description": "The configuration for what files should be pulled from the source.", + "properties": { + "Filters": { + "additionalProperties": false, + "description": "Restrictions for what files should be pulled from the source.", + "patternProperties": { + "^[A-Za-z]": { + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "maxItems": 2048, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "Folders": { + "description": "Identifiers for the source folders to pull all files from recursively.", + "items": { + "maxLength": 200, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Folders" + ], + "type": "object" + }, + "ObjectConfiguration": { + "additionalProperties": false, + "description": "The configuration for what data should be pulled from the source.", + "patternProperties": { + "^.+$": { + "additionalProperties": false, + "patternProperties": { + "^[A-Za-z]": { + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "maxItems": 2048, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "ScheduleConfig": { + "additionalProperties": false, + "properties": { + "FirstExecutionFrom": { + "description": "The start date for objects to import in the first flow run. Epoch or ISO timestamp format is supported.", + "maxLength": 255, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "Object": { + "description": "The name of the object to pull from the data source.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9/\\._\\-]+$", + "type": "string" + }, + "ScheduleExpression": { + "description": "How often the data should be pulled from data source.", + "maxLength": 255, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + } + }, + "required": [ + "ScheduleExpression" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A label for tagging DataIntegration resources", + "properties": { + "Key": { + "description": "A key to identify the tag.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "Corresponding tag value for the key.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppIntegrations::DataIntegration", + "handlers": { + "create": { + "permissions": [ + "app-integrations:CreateDataIntegration", + "app-integrations:TagResource", + "appflow:DescribeConnectorProfiles", + "appflow:CreateFlow", + "appflow:DeleteFlow", + "appflow:DescribeConnectorEntity", + "appflow:UseConnectorProfile", + "appflow:TagResource", + "appflow:UntagResource", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeys", + "s3:GetBucketNotification", + "s3:PutBucketNotification", + "s3:GetEncryptionConfiguration" + ] + }, + "delete": { + "permissions": [ + "app-integrations:DeleteDataIntegration", + "app-integrations:UntagResource", + "appflow:CreateFlow", + "appflow:DeleteFlow", + "appflow:DescribeConnectorEntity", + "appflow:UseConnectorProfile", + "appflow:TagResource", + "appflow:UntagResource", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeys" + ] + }, + "list": { + "permissions": [ + "app-integrations:ListDataIntegrations" + ] + }, + "read": { + "permissions": [ + "app-integrations:GetDataIntegration", + "app-integrations:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "app-integrations:GetDataIntegration", + "app-integrations:UpdateDataIntegration", + "app-integrations:TagResource", + "app-integrations:UntagResource", + "appflow:DescribeConnectorProfiles", + "appflow:DeleteFlow", + "appflow:DescribeConnectorEntity", + "appflow:UseConnectorProfile", + "appflow:TagResource", + "appflow:UntagResource", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeys" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DataIntegrationArn": { + "description": "The Amazon Resource Name (ARN) of the data integration.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws[-a-z]*:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", + "type": "string" + }, + "Description": { + "description": "The data integration description.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "FileConfiguration": { + "$ref": "#/definitions/FileConfiguration", + "description": "The configuration for what files should be pulled from the source." + }, + "Id": { + "description": "The unique identifer of the data integration.", + "maxLength": 255, + "minLength": 1, + "pattern": "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}", + "type": "string" + }, + "KmsKey": { + "description": "The KMS key of the data integration.", + "maxLength": 255, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "Name": { + "description": "The name of the data integration.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9/\\._\\-]+$", + "type": "string" + }, + "ObjectConfiguration": { + "$ref": "#/definitions/ObjectConfiguration", + "description": "The configuration for what data should be pulled from the source." + }, + "ScheduleConfig": { + "$ref": "#/definitions/ScheduleConfig", + "description": "The name of the data and how often it should be pulled from the source." + }, + "SourceURI": { + "description": "The URI of the data source.", + "maxLength": 1000, + "minLength": 1, + "pattern": "^(\\w+\\:\\/\\/[\\w.-]+[\\w/!@#+=.-]+$)|(\\w+\\:\\/\\/[\\w.-]+[\\w/!@#+=.-]+[\\w/!@#+=.-]+[\\w/!@#+=.,-]+$)", + "type": "string" + }, + "Tags": { + "description": "The tags (keys and values) associated with the data integration.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/DataIntegrationArn" + ], + "required": [ + "Name", + "KmsKey", + "SourceURI" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "app-integrations:TagResource", + "app-integrations:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppIntegrations::DataIntegration" +} diff --git a/src/schema/aws-appintegrations-eventintegration.json b/src/schema/aws-appintegrations-eventintegration.json index 57469691..00afd9cf 100644 --- a/src/schema/aws-appintegrations-eventintegration.json +++ b/src/schema/aws-appintegrations-eventintegration.json @@ -1,172 +1,172 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/EventBridgeBus", - "/properties/EventFilter" - ], - "definitions": { - "EventFilter": { - "additionalProperties": false, - "properties": { - "Source": { - "description": "The source of the events.", - "maxLength": 256, - "minLength": 1, - "pattern": "^aws\\.partner\\/.*$", - "type": "string" - } - }, - "required": [ - "Source" - ], - "type": "object" - }, - "Metadata": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "A key to identify the metadata.", - "maxLength": 255, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "Value": { - "description": "Corresponding metadata value for the key.", - "maxLength": 255, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "A key to identify the tag.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "Corresponding tag value for the key.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppIntegrations::EventIntegration", - "handlers": { - "create": { - "permissions": [ - "app-integrations:CreateEventIntegration", - "app-integrations:TagResource" - ] - }, - "delete": { - "permissions": [ - "app-integrations:DeleteEventIntegration" - ] - }, - "list": { - "permissions": [ - "app-integrations:ListEventIntegrations" - ] - }, - "read": { - "permissions": [ - "app-integrations:GetEventIntegration", - "app-integrations:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "app-integrations:GetEventIntegration", - "app-integrations:UpdateEventIntegration", - "app-integrations:TagResource", - "app-integrations:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Description": { - "description": "The event integration description.", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "EventBridgeBus": { - "description": "The Amazon Eventbridge bus for the event integration.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9/\\._\\-]+$", - "type": "string" - }, - "EventFilter": { - "$ref": "#/definitions/EventFilter", - "description": "The EventFilter (source) associated with the event integration." - }, - "EventIntegrationArn": { - "description": "The Amazon Resource Name (ARN) of the event integration.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:aws[-a-z]*:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "Name": { - "description": "The name of the event integration.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9/\\._\\-]+$", - "type": "string" - }, - "Tags": { - "description": "The tags (keys and values) associated with the event integration.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/EventIntegrationArn" - ], - "required": [ - "Name", - "EventBridgeBus", - "EventFilter" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "app-integrations:TagResource", - "app-integrations:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AppIntegrations::EventIntegration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/EventBridgeBus", + "/properties/EventFilter" + ], + "definitions": { + "EventFilter": { + "additionalProperties": false, + "properties": { + "Source": { + "description": "The source of the events.", + "maxLength": 256, + "minLength": 1, + "pattern": "^aws\\.(partner\\/.*|cases)$", + "type": "string" + } + }, + "required": [ + "Source" + ], + "type": "object" + }, + "Metadata": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "A key to identify the metadata.", + "maxLength": 255, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "Value": { + "description": "Corresponding metadata value for the key.", + "maxLength": 255, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "A key to identify the tag.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "Corresponding tag value for the key.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppIntegrations::EventIntegration", + "handlers": { + "create": { + "permissions": [ + "app-integrations:CreateEventIntegration", + "app-integrations:TagResource" + ] + }, + "delete": { + "permissions": [ + "app-integrations:DeleteEventIntegration" + ] + }, + "list": { + "permissions": [ + "app-integrations:ListEventIntegrations" + ] + }, + "read": { + "permissions": [ + "app-integrations:GetEventIntegration", + "app-integrations:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "app-integrations:GetEventIntegration", + "app-integrations:UpdateEventIntegration", + "app-integrations:TagResource", + "app-integrations:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Description": { + "description": "The event integration description.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "EventBridgeBus": { + "description": "The Amazon Eventbridge bus for the event integration.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9/\\._\\-]+$", + "type": "string" + }, + "EventFilter": { + "$ref": "#/definitions/EventFilter", + "description": "The EventFilter (source) associated with the event integration." + }, + "EventIntegrationArn": { + "description": "The Amazon Resource Name (ARN) of the event integration.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws[-a-z]*:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", + "type": "string" + }, + "Name": { + "description": "The name of the event integration.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9/\\._\\-]+$", + "type": "string" + }, + "Tags": { + "description": "The tags (keys and values) associated with the event integration.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/EventIntegrationArn" + ], + "required": [ + "Name", + "EventBridgeBus", + "EventFilter" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "app-integrations:TagResource", + "app-integrations:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppIntegrations::EventIntegration" +} diff --git a/src/schema/aws-applicationautoscaling-scalabletarget.json b/src/schema/aws-applicationautoscaling-scalabletarget.json index 29359ad2..d4921748 100644 --- a/src/schema/aws-applicationautoscaling-scalabletarget.json +++ b/src/schema/aws-applicationautoscaling-scalabletarget.json @@ -1,212 +1,212 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceId", - "/properties/ScalableDimension", - "/properties/ServiceNamespace" - ], - "definitions": { - "ScalableTargetAction": { - "additionalProperties": false, - "description": "``ScalableTargetAction`` specifies the minimum and maximum capacity for the ``ScalableTargetAction`` property of the [AWS::ApplicationAutoScaling::ScalableTarget ScheduledAction](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html) property type.", - "properties": { - "MaxCapacity": { - "description": "The maximum capacity.", - "type": "integer" - }, - "MinCapacity": { - "description": "The minimum capacity.", - "type": "integer" - } - }, - "type": "object" - }, - "ScheduledAction": { - "additionalProperties": false, - "description": "``ScheduledAction`` is a property of the [AWS::ApplicationAutoScaling::ScalableTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html) resource that specifies a scheduled action for a scalable target. \n For more information, see [Scheduled scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html) in the *Application Auto Scaling User Guide*.", - "properties": { - "EndTime": { - "description": "The date and time that the action is scheduled to end, in UTC.", - "type": "string" - }, - "ScalableTargetAction": { - "$ref": "#/definitions/ScalableTargetAction", - "description": "The new minimum and maximum capacity. You can set both values or just one. At the scheduled time, if the current capacity is below the minimum capacity, Application Auto Scaling scales out to the minimum capacity. If the current capacity is above the maximum capacity, Application Auto Scaling scales in to the maximum capacity." - }, - "Schedule": { - "description": "The schedule for this action. The following formats are supported:\n + At expressions - \"``at(yyyy-mm-ddThh:mm:ss)``\"\n + Rate expressions - \"``rate(value unit)``\"\n + Cron expressions - \"``cron(fields)``\"\n \n At expressions are useful for one-time schedules. Cron expressions are useful for scheduled actions that run periodically at a specified date and time, and rate expressions are useful for scheduled actions that run at a regular interval.\n At and cron expressions use Universal Coordinated Time (UTC) by default.\n The cron format consists of six fields separated by white spaces: [Minutes] [Hours] [Day_of_Month] [Month] [Day_of_Week] [Year].\n For rate expressions, *value* is a positive integer and *unit* is ``minute`` | ``minutes`` | ``hour`` | ``hours`` | ``day`` | ``days``.", - "type": "string" - }, - "ScheduledActionName": { - "description": "The name of the scheduled action. This name must be unique among all other scheduled actions on the specified scalable target.", - "type": "string" - }, - "StartTime": { - "description": "The date and time that the action is scheduled to begin, in UTC.", - "type": "string" - }, - "Timezone": { - "description": "The time zone used when referring to the date and time of a scheduled action, when the scheduled action uses an at or cron expression.", - "type": "string" - } - }, - "required": [ - "ScheduledActionName", - "Schedule" - ], - "type": "object" - }, - "SuspendedState": { - "additionalProperties": false, - "description": "``SuspendedState`` is a property of the [AWS::ApplicationAutoScaling::ScalableTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html) resource that specifies whether the scaling activities for a scalable target are in a suspended state.\n For more information, see [Suspending and resuming scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-suspend-resume-scaling.html) in the *Application Auto Scaling User Guide*.", - "properties": { - "DynamicScalingInSuspended": { - "description": "Whether scale in by a target tracking scaling policy or a step scaling policy is suspended. Set the value to ``true`` if you don't want Application Auto Scaling to remove capacity when a scaling policy is triggered. The default is ``false``.", - "type": "boolean" - }, - "DynamicScalingOutSuspended": { - "description": "Whether scale out by a target tracking scaling policy or a step scaling policy is suspended. Set the value to ``true`` if you don't want Application Auto Scaling to add capacity when a scaling policy is triggered. The default is ``false``.", - "type": "boolean" - }, - "ScheduledScalingSuspended": { - "description": "Whether scheduled scaling is suspended. Set the value to ``true`` if you don't want Application Auto Scaling to add or remove capacity by initiating scheduled actions. The default is ``false``.", - "type": "boolean" - } - }, - "type": "object" - } - }, - "description": "The ``AWS::ApplicationAutoScaling::ScalableTarget`` resource specifies a resource that Application Auto Scaling can scale, such as an AWS::DynamoDB::Table or AWS::ECS::Service resource.\n For more information, see [Getting started](https://docs.aws.amazon.com/autoscaling/application/userguide/getting-started.html) in the *Application Auto Scaling User Guide*.\n If the resource that you want Application Auto Scaling to scale is not yet created in your account, add a dependency on the resource when registering it as a scalable target using the [DependsOn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) attribute.", - "handlers": { - "create": { - "permissions": [ - "application-autoscaling:DescribeScalableTargets", - "application-autoscaling:RegisterScalableTarget", - "application-autoscaling:DescribeScheduledActions", - "application-autoscaling:PutScheduledAction", - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "cloudwatch:PutMetricAlarm", - "cloudwatch:DeleteAlarms", - "cloudwatch:DescribeAlarms", - "lambda:GetProvisionedConcurrencyConfig", - "lambda:PutProvisionedConcurrencyConfig", - "lambda:DeleteProvisionedConcurrencyConfig" - ] - }, - "delete": { - "permissions": [ - "application-autoscaling:DeregisterScalableTarget" - ] - }, - "list": { - "permissions": [ - "application-autoscaling:DescribeScalableTargets" - ] - }, - "read": { - "permissions": [ - "application-autoscaling:DescribeScalableTargets", - "application-autoscaling:DescribeScheduledActions" - ] - }, - "update": { - "permissions": [ - "application-autoscaling:RegisterScalableTarget", - "application-autoscaling:DescribeScalableTargets", - "application-autoscaling:DescribeScheduledActions", - "application-autoscaling:DeleteScheduledAction", - "application-autoscaling:PutScheduledAction", - "cloudwatch:PutMetricAlarm", - "cloudwatch:DeleteAlarms", - "cloudwatch:DescribeAlarms", - "lambda:GetProvisionedConcurrencyConfig", - "lambda:PutProvisionedConcurrencyConfig", - "lambda:DeleteProvisionedConcurrencyConfig" - ] - } - }, - "primaryIdentifier": [ - "/properties/ResourceId", - "/properties/ScalableDimension", - "/properties/ServiceNamespace" - ], - "properties": { - "Id": { - "description": "", - "type": "string" - }, - "MaxCapacity": { - "description": "The maximum value that you plan to scale out to. When a scaling policy is in effect, Application Auto Scaling can scale out (expand) as needed to the maximum capacity limit in response to changing demand.", - "type": "integer" - }, - "MinCapacity": { - "description": "The minimum value that you plan to scale in to. When a scaling policy is in effect, Application Auto Scaling can scale in (contract) as needed to the minimum capacity limit in response to changing demand.", - "type": "integer" - }, - "ResourceId": { - "anyOf": [ - { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::MSK::Cluster" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/ServiceArn", - "typeName": "AWS::ECS::Service" - } - } - ], - "description": "The identifier of the resource associated with the scalable target. This string consists of the resource type and unique identifier.\n + ECS service - The resource type is ``service`` and the unique identifier is the cluster name and service name. Example: ``service/my-cluster/my-service``.\n + Spot Fleet - The resource type is ``spot-fleet-request`` and the unique identifier is the Spot Fleet request ID. Example: ``spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE``.\n + EMR cluster - The resource type is ``instancegroup`` and the unique identifier is the cluster ID and instance group ID. Example: ``instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0``.\n + AppStream 2.0 fleet - The resource type is ``fleet`` and the unique identifier is the fleet name. Example: ``fleet/sample-fleet``.\n + DynamoDB table - The resource type is ``table`` and the unique identifier is the table name. Example: ``table/my-table``.\n + DynamoDB global secondary index - The resource type is ``index`` and the unique identifier is the index name. Example: ``table/my-table/index/my-table-index``.\n + Aurora DB cluster - The resource type is ``cluster`` and the unique identifier is the cluster name. Example: ``cluster:my-db-cluster``.\n + SageMaker endpoint variant - The resource type is ``variant`` and the unique identifier is the resource ID. Example: ``endpoint/my-end-point/variant/KMeansClustering``.\n + Custom resources are not supported with a resource type. This parameter must specify the ``OutputValue`` from the CloudFormation template stack used to access the resources. The unique identifier is defined by the service provider. More information is available in our [GitHub repository](https://docs.aws.amazon.com/https://github.com/aws/aws-auto-scaling-custom-resource).\n + Amazon Comprehend document classification endpoint - The resource type and unique identifier are specified using the endpoint ARN. Example: ``arn:aws:comprehend:us-west-2:123456789012:document-classifier-endpoint/EXAMPLE``.\n + Amazon Comprehend entity recognizer endpoint - The resource type and unique identifier are specified using the endpoint ARN. Example: ``arn:aws:comprehend:us-west-2:123456789012:entity-recognizer-endpoint/EXAMPLE``.\n + Lambda provisioned concurrency - The resource type is ``function`` and the unique identifier is the function name with a function version or alias name suffix that is not ``$LATEST``. Example: ``function:my-function:prod`` or ``function:my-function:1``.\n + Amazon Keyspaces table - The resource type is ``table`` and the unique identifier is the table name. Example: ``keyspace/mykeyspace/table/mytable``.\n + Amazon MSK cluster - The resource type and unique identifier are specified using the cluster ARN. Example: ``arn:aws:kafka:us-east-1:123456789012:cluster/demo-cluster-1/6357e0b2-0e6a-4b86-a0b4-70df934c2e31-5``.\n + Amazon ElastiCache replication group - The resource type is ``replication-group`` and the unique identifier is the replication group name. Example: ``replication-group/mycluster``.\n + Neptune cluster - The resource type is ``cluster`` and the unique identifier is the cluster name. Example: ``cluster:mycluster``.\n + SageMaker serverless endpoint - The resource type is ``variant`` and the unique identifier is the resource ID. Example: ``endpoint/my-end-point/variant/KMeansClustering``.\n + SageMaker inference component - The resource type is ``inference-component`` and the unique identifier is the resource ID. Example: ``inference-component/my-inference-component``.", - "type": "string" - }, - "RoleARN": { - "description": "Specify the Amazon Resource Name (ARN) of an Identity and Access Management (IAM) role that allows Application Auto Scaling to modify the scalable target on your behalf. This can be either an IAM service role that Application Auto Scaling can assume to make calls to other AWS resources on your behalf, or a service-linked role for the specified service. For more information, see [How Application Auto Scaling works with IAM](https://docs.aws.amazon.com/autoscaling/application/userguide/security_iam_service-with-iam.html) in the *Application Auto Scaling User Guide*.\n To automatically create a service-linked role (recommended), specify the full ARN of the service-linked role in your stack template. To find the exact ARN of the service-linked role for your AWS or custom resource, see the [Service-linked roles](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html) topic in the *Application Auto Scaling User Guide*. Look for the ARN in the table at the bottom of the page.", - "type": "string" - }, - "ScalableDimension": { - "description": "The scalable dimension associated with the scalable target. This string consists of the service namespace, resource type, and scaling property.\n + ``ecs:service:DesiredCount`` - The desired task count of an ECS service.\n + ``elasticmapreduce:instancegroup:InstanceCount`` - The instance count of an EMR Instance Group.\n + ``ec2:spot-fleet-request:TargetCapacity`` - The target capacity of a Spot Fleet.\n + ``appstream:fleet:DesiredCapacity`` - The desired capacity of an AppStream 2.0 fleet.\n + ``dynamodb:table:ReadCapacityUnits`` - The provisioned read capacity for a DynamoDB table.\n + ``dynamodb:table:WriteCapacityUnits`` - The provisioned write capacity for a DynamoDB table.\n + ``dynamodb:index:ReadCapacityUnits`` - The provisioned read capacity for a DynamoDB global secondary index.\n + ``dynamodb:index:WriteCapacityUnits`` - The provisioned write capacity for a DynamoDB global secondary index.\n + ``rds:cluster:ReadReplicaCount`` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora PostgreSQL-compatible edition.\n + ``sagemaker:variant:DesiredInstanceCount`` - The number of EC2 instances for a SageMaker model endpoint variant.\n + ``custom-resource:ResourceType:Property`` - The scalable dimension for a custom resource provided by your own application or service.\n + ``comprehend:document-classifier-endpoint:DesiredInferenceUnits`` - The number of inference units for an Amazon Comprehend document classification endpoint.\n + ``comprehend:entity-recognizer-endpoint:DesiredInferenceUnits`` - The number of inference units for an Amazon Comprehend entity recognizer endpoint.\n + ``lambda:function:ProvisionedConcurrency`` - The provisioned concurrency for a Lambda function.\n + ``cassandra:table:ReadCapacityUnits`` - The provisioned read capacity for an Amazon Keyspaces table.\n + ``cassandra:table:WriteCapacityUnits`` - The provisioned write capacity for an Amazon Keyspaces table.\n + ``kafka:broker-storage:VolumeSize`` - The provisioned volume size (in GiB) for brokers in an Amazon MSK cluster.\n + ``elasticache:replication-group:NodeGroups`` - The number of node groups for an Amazon ElastiCache replication group.\n + ``elasticache:replication-group:Replicas`` - The number of replicas per node group for an Amazon ElastiCache replication group.\n + ``neptune:cluster:ReadReplicaCount`` - The count of read replicas in an Amazon Neptune DB cluster.\n + ``sagemaker:variant:DesiredProvisionedConcurrency`` - The provisioned concurrency for a SageMaker serverless endpoint.\n + ``sagemaker:inference-component:DesiredCopyCount`` - The number of copies across an endpoint for a SageMaker inference component.", - "type": "string" - }, - "ScheduledActions": { - "description": "The scheduled actions for the scalable target. Duplicates aren't allowed.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ScheduledAction" - }, - "type": "array", - "uniqueItems": true - }, - "ServiceNamespace": { - "description": "The namespace of the AWS service that provides the resource, or a ``custom-resource``.", - "type": "string" - }, - "SuspendedState": { - "$ref": "#/definitions/SuspendedState", - "description": "An embedded object that contains attributes and attribute values that are used to suspend and resume automatic scaling. Setting the value of an attribute to ``true`` suspends the specified scaling activities. Setting it to ``false`` (default) resumes the specified scaling activities. \n *Suspension Outcomes* \n + For ``DynamicScalingInSuspended``, while a suspension is in effect, all scale-in activities that are triggered by a scaling policy are suspended.\n + For ``DynamicScalingOutSuspended``, while a suspension is in effect, all scale-out activities that are triggered by a scaling policy are suspended.\n + For ``ScheduledScalingSuspended``, while a suspension is in effect, all scaling activities that involve scheduled actions are suspended." - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ResourceId", - "ServiceNamespace", - "ScalableDimension", - "MinCapacity", - "MaxCapacity" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ApplicationAutoScaling::ScalableTarget", - "writeOnlyProperties": [ - "/properties/RoleARN" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceId", + "/properties/ScalableDimension", + "/properties/ServiceNamespace" + ], + "definitions": { + "ScalableTargetAction": { + "additionalProperties": false, + "description": "``ScalableTargetAction`` specifies the minimum and maximum capacity for the ``ScalableTargetAction`` property of the [AWS::ApplicationAutoScaling::ScalableTarget ScheduledAction](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html) property type.", + "properties": { + "MaxCapacity": { + "description": "The maximum capacity.", + "type": "integer" + }, + "MinCapacity": { + "description": "The minimum capacity.", + "type": "integer" + } + }, + "type": "object" + }, + "ScheduledAction": { + "additionalProperties": false, + "description": "``ScheduledAction`` is a property of the [AWS::ApplicationAutoScaling::ScalableTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html) resource that specifies a scheduled action for a scalable target. \n For more information, see [Scheduled scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html) in the *Application Auto Scaling User Guide*.", + "properties": { + "EndTime": { + "description": "The date and time that the action is scheduled to end, in UTC.", + "type": "string" + }, + "ScalableTargetAction": { + "$ref": "#/definitions/ScalableTargetAction", + "description": "The new minimum and maximum capacity. You can set both values or just one. At the scheduled time, if the current capacity is below the minimum capacity, Application Auto Scaling scales out to the minimum capacity. If the current capacity is above the maximum capacity, Application Auto Scaling scales in to the maximum capacity." + }, + "Schedule": { + "description": "The schedule for this action. The following formats are supported:\n + At expressions - \"``at(yyyy-mm-ddThh:mm:ss)``\"\n + Rate expressions - \"``rate(value unit)``\"\n + Cron expressions - \"``cron(fields)``\"\n \n At expressions are useful for one-time schedules. Cron expressions are useful for scheduled actions that run periodically at a specified date and time, and rate expressions are useful for scheduled actions that run at a regular interval.\n At and cron expressions use Universal Coordinated Time (UTC) by default.\n The cron format consists of six fields separated by white spaces: [Minutes] [Hours] [Day_of_Month] [Month] [Day_of_Week] [Year].\n For rate expressions, *value* is a positive integer and *unit* is ``minute`` | ``minutes`` | ``hour`` | ``hours`` | ``day`` | ``days``.", + "type": "string" + }, + "ScheduledActionName": { + "description": "The name of the scheduled action. This name must be unique among all other scheduled actions on the specified scalable target.", + "type": "string" + }, + "StartTime": { + "description": "The date and time that the action is scheduled to begin, in UTC.", + "type": "string" + }, + "Timezone": { + "description": "The time zone used when referring to the date and time of a scheduled action, when the scheduled action uses an at or cron expression.", + "type": "string" + } + }, + "required": [ + "ScheduledActionName", + "Schedule" + ], + "type": "object" + }, + "SuspendedState": { + "additionalProperties": false, + "description": "``SuspendedState`` is a property of the [AWS::ApplicationAutoScaling::ScalableTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html) resource that specifies whether the scaling activities for a scalable target are in a suspended state.\n For more information, see [Suspending and resuming scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-suspend-resume-scaling.html) in the *Application Auto Scaling User Guide*.", + "properties": { + "DynamicScalingInSuspended": { + "description": "Whether scale in by a target tracking scaling policy or a step scaling policy is suspended. Set the value to ``true`` if you don't want Application Auto Scaling to remove capacity when a scaling policy is triggered. The default is ``false``.", + "type": "boolean" + }, + "DynamicScalingOutSuspended": { + "description": "Whether scale out by a target tracking scaling policy or a step scaling policy is suspended. Set the value to ``true`` if you don't want Application Auto Scaling to add capacity when a scaling policy is triggered. The default is ``false``.", + "type": "boolean" + }, + "ScheduledScalingSuspended": { + "description": "Whether scheduled scaling is suspended. Set the value to ``true`` if you don't want Application Auto Scaling to add or remove capacity by initiating scheduled actions. The default is ``false``.", + "type": "boolean" + } + }, + "type": "object" + } + }, + "description": "The ``AWS::ApplicationAutoScaling::ScalableTarget`` resource specifies a resource that Application Auto Scaling can scale, such as an AWS::DynamoDB::Table or AWS::ECS::Service resource.\n For more information, see [Getting started](https://docs.aws.amazon.com/autoscaling/application/userguide/getting-started.html) in the *Application Auto Scaling User Guide*.\n If the resource that you want Application Auto Scaling to scale is not yet created in your account, add a dependency on the resource when registering it as a scalable target using the [DependsOn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) attribute.", + "handlers": { + "create": { + "permissions": [ + "application-autoscaling:DescribeScalableTargets", + "application-autoscaling:RegisterScalableTarget", + "application-autoscaling:DescribeScheduledActions", + "application-autoscaling:PutScheduledAction", + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "cloudwatch:PutMetricAlarm", + "cloudwatch:DeleteAlarms", + "cloudwatch:DescribeAlarms", + "lambda:GetProvisionedConcurrencyConfig", + "lambda:PutProvisionedConcurrencyConfig", + "lambda:DeleteProvisionedConcurrencyConfig" + ] + }, + "delete": { + "permissions": [ + "application-autoscaling:DeregisterScalableTarget" + ] + }, + "list": { + "permissions": [ + "application-autoscaling:DescribeScalableTargets" + ] + }, + "read": { + "permissions": [ + "application-autoscaling:DescribeScalableTargets", + "application-autoscaling:DescribeScheduledActions" + ] + }, + "update": { + "permissions": [ + "application-autoscaling:RegisterScalableTarget", + "application-autoscaling:DescribeScalableTargets", + "application-autoscaling:DescribeScheduledActions", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:PutScheduledAction", + "cloudwatch:PutMetricAlarm", + "cloudwatch:DeleteAlarms", + "cloudwatch:DescribeAlarms", + "lambda:GetProvisionedConcurrencyConfig", + "lambda:PutProvisionedConcurrencyConfig", + "lambda:DeleteProvisionedConcurrencyConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/ResourceId", + "/properties/ScalableDimension", + "/properties/ServiceNamespace" + ], + "properties": { + "Id": { + "description": "", + "type": "string" + }, + "MaxCapacity": { + "description": "The maximum value that you plan to scale out to. When a scaling policy is in effect, Application Auto Scaling can scale out (expand) as needed to the maximum capacity limit in response to changing demand.", + "type": "integer" + }, + "MinCapacity": { + "description": "The minimum value that you plan to scale in to. When a scaling policy is in effect, Application Auto Scaling can scale in (contract) as needed to the minimum capacity limit in response to changing demand.", + "type": "integer" + }, + "ResourceId": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::MSK::Cluster" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/ServiceArn", + "typeName": "AWS::ECS::Service" + } + } + ], + "description": "The identifier of the resource associated with the scalable target. This string consists of the resource type and unique identifier.\n + ECS service - The resource type is ``service`` and the unique identifier is the cluster name and service name. Example: ``service/my-cluster/my-service``.\n + Spot Fleet - The resource type is ``spot-fleet-request`` and the unique identifier is the Spot Fleet request ID. Example: ``spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE``.\n + EMR cluster - The resource type is ``instancegroup`` and the unique identifier is the cluster ID and instance group ID. Example: ``instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0``.\n + AppStream 2.0 fleet - The resource type is ``fleet`` and the unique identifier is the fleet name. Example: ``fleet/sample-fleet``.\n + DynamoDB table - The resource type is ``table`` and the unique identifier is the table name. Example: ``table/my-table``.\n + DynamoDB global secondary index - The resource type is ``index`` and the unique identifier is the index name. Example: ``table/my-table/index/my-table-index``.\n + Aurora DB cluster - The resource type is ``cluster`` and the unique identifier is the cluster name. Example: ``cluster:my-db-cluster``.\n + SageMaker endpoint variant - The resource type is ``variant`` and the unique identifier is the resource ID. Example: ``endpoint/my-end-point/variant/KMeansClustering``.\n + Custom resources are not supported with a resource type. This parameter must specify the ``OutputValue`` from the CloudFormation template stack used to access the resources. The unique identifier is defined by the service provider. More information is available in our [GitHub repository](https://docs.aws.amazon.com/https://github.com/aws/aws-auto-scaling-custom-resource).\n + Amazon Comprehend document classification endpoint - The resource type and unique identifier are specified using the endpoint ARN. Example: ``arn:aws:comprehend:us-west-2:123456789012:document-classifier-endpoint/EXAMPLE``.\n + Amazon Comprehend entity recognizer endpoint - The resource type and unique identifier are specified using the endpoint ARN. Example: ``arn:aws:comprehend:us-west-2:123456789012:entity-recognizer-endpoint/EXAMPLE``.\n + Lambda provisioned concurrency - The resource type is ``function`` and the unique identifier is the function name with a function version or alias name suffix that is not ``$LATEST``. Example: ``function:my-function:prod`` or ``function:my-function:1``.\n + Amazon Keyspaces table - The resource type is ``table`` and the unique identifier is the table name. Example: ``keyspace/mykeyspace/table/mytable``.\n + Amazon MSK cluster - The resource type and unique identifier are specified using the cluster ARN. Example: ``arn:aws:kafka:us-east-1:123456789012:cluster/demo-cluster-1/6357e0b2-0e6a-4b86-a0b4-70df934c2e31-5``.\n + Amazon ElastiCache replication group - The resource type is ``replication-group`` and the unique identifier is the replication group name. Example: ``replication-group/mycluster``.\n + Neptune cluster - The resource type is ``cluster`` and the unique identifier is the cluster name. Example: ``cluster:mycluster``.\n + SageMaker serverless endpoint - The resource type is ``variant`` and the unique identifier is the resource ID. Example: ``endpoint/my-end-point/variant/KMeansClustering``.\n + SageMaker inference component - The resource type is ``inference-component`` and the unique identifier is the resource ID. Example: ``inference-component/my-inference-component``.", + "type": "string" + }, + "RoleARN": { + "description": "Specify the Amazon Resource Name (ARN) of an Identity and Access Management (IAM) role that allows Application Auto Scaling to modify the scalable target on your behalf. This can be either an IAM service role that Application Auto Scaling can assume to make calls to other AWS resources on your behalf, or a service-linked role for the specified service. For more information, see [How Application Auto Scaling works with IAM](https://docs.aws.amazon.com/autoscaling/application/userguide/security_iam_service-with-iam.html) in the *Application Auto Scaling User Guide*.\n To automatically create a service-linked role (recommended), specify the full ARN of the service-linked role in your stack template. To find the exact ARN of the service-linked role for your AWS or custom resource, see the [Service-linked roles](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html) topic in the *Application Auto Scaling User Guide*. Look for the ARN in the table at the bottom of the page.", + "type": "string" + }, + "ScalableDimension": { + "description": "The scalable dimension associated with the scalable target. This string consists of the service namespace, resource type, and scaling property.\n + ``ecs:service:DesiredCount`` - The desired task count of an ECS service.\n + ``elasticmapreduce:instancegroup:InstanceCount`` - The instance count of an EMR Instance Group.\n + ``ec2:spot-fleet-request:TargetCapacity`` - The target capacity of a Spot Fleet.\n + ``appstream:fleet:DesiredCapacity`` - The desired capacity of an AppStream 2.0 fleet.\n + ``dynamodb:table:ReadCapacityUnits`` - The provisioned read capacity for a DynamoDB table.\n + ``dynamodb:table:WriteCapacityUnits`` - The provisioned write capacity for a DynamoDB table.\n + ``dynamodb:index:ReadCapacityUnits`` - The provisioned read capacity for a DynamoDB global secondary index.\n + ``dynamodb:index:WriteCapacityUnits`` - The provisioned write capacity for a DynamoDB global secondary index.\n + ``rds:cluster:ReadReplicaCount`` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora PostgreSQL-compatible edition.\n + ``sagemaker:variant:DesiredInstanceCount`` - The number of EC2 instances for a SageMaker model endpoint variant.\n + ``custom-resource:ResourceType:Property`` - The scalable dimension for a custom resource provided by your own application or service.\n + ``comprehend:document-classifier-endpoint:DesiredInferenceUnits`` - The number of inference units for an Amazon Comprehend document classification endpoint.\n + ``comprehend:entity-recognizer-endpoint:DesiredInferenceUnits`` - The number of inference units for an Amazon Comprehend entity recognizer endpoint.\n + ``lambda:function:ProvisionedConcurrency`` - The provisioned concurrency for a Lambda function.\n + ``cassandra:table:ReadCapacityUnits`` - The provisioned read capacity for an Amazon Keyspaces table.\n + ``cassandra:table:WriteCapacityUnits`` - The provisioned write capacity for an Amazon Keyspaces table.\n + ``kafka:broker-storage:VolumeSize`` - The provisioned volume size (in GiB) for brokers in an Amazon MSK cluster.\n + ``elasticache:replication-group:NodeGroups`` - The number of node groups for an Amazon ElastiCache replication group.\n + ``elasticache:replication-group:Replicas`` - The number of replicas per node group for an Amazon ElastiCache replication group.\n + ``neptune:cluster:ReadReplicaCount`` - The count of read replicas in an Amazon Neptune DB cluster.\n + ``sagemaker:variant:DesiredProvisionedConcurrency`` - The provisioned concurrency for a SageMaker serverless endpoint.\n + ``sagemaker:inference-component:DesiredCopyCount`` - The number of copies across an endpoint for a SageMaker inference component.", + "type": "string" + }, + "ScheduledActions": { + "description": "The scheduled actions for the scalable target. Duplicates aren't allowed.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ScheduledAction" + }, + "type": "array", + "uniqueItems": true + }, + "ServiceNamespace": { + "description": "The namespace of the AWS service that provides the resource, or a ``custom-resource``.", + "type": "string" + }, + "SuspendedState": { + "$ref": "#/definitions/SuspendedState", + "description": "An embedded object that contains attributes and attribute values that are used to suspend and resume automatic scaling. Setting the value of an attribute to ``true`` suspends the specified scaling activities. Setting it to ``false`` (default) resumes the specified scaling activities. \n *Suspension Outcomes* \n + For ``DynamicScalingInSuspended``, while a suspension is in effect, all scale-in activities that are triggered by a scaling policy are suspended.\n + For ``DynamicScalingOutSuspended``, while a suspension is in effect, all scale-out activities that are triggered by a scaling policy are suspended.\n + For ``ScheduledScalingSuspended``, while a suspension is in effect, all scaling activities that involve scheduled actions are suspended." + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ResourceId", + "ServiceNamespace", + "ScalableDimension", + "MinCapacity", + "MaxCapacity" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ApplicationAutoScaling::ScalableTarget", + "writeOnlyProperties": [ + "/properties/RoleARN" + ] +} diff --git a/src/schema/aws-applicationautoscaling-scalingpolicy.json b/src/schema/aws-applicationautoscaling-scalingpolicy.json index 85cf881c..73a7113d 100644 --- a/src/schema/aws-applicationautoscaling-scalingpolicy.json +++ b/src/schema/aws-applicationautoscaling-scalingpolicy.json @@ -1,366 +1,641 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyName", - "/properties/ServiceNamespace", - "/properties/ResourceId", - "/properties/ScalableDimension", - "/properties/ScalingTargetId" - ], - "definitions": { - "CustomizedMetricSpecification": { - "additionalProperties": false, - "description": "Contains customized metric specification information for a target tracking scaling policy for Application Auto Scaling. \n For information about the available metrics for a service, see [services that publish CloudWatch metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html) in the *Amazon CloudWatch User Guide*.\n To create your customized metric specification:\n + Add values for each required parameter from CloudWatch. You can use an existing metric, or a new metric that you create. To use your own metric, you must first publish the metric to CloudWatch. For more information, see [Publish custom metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html) in the *Amazon CloudWatch User Guide*.\n + Choose a metric that changes proportionally with capacity. The value of the metric should increase or decrease in inverse proportion to the number of capacity units. That is, the value of the metric should decrease when capacity increases, and increase when capacity decreases. \n \n For an example of how creating new metrics can be useful, see [Scaling based on Amazon SQS](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-using-sqs-queue.html) in the *Amazon EC2 Auto Scaling User Guide*. This topic mentions Auto Scaling groups, but the same scenario for Amazon SQS can apply to the target tracking scaling policies that you create for a Spot Fleet by using Application Auto Scaling.\n For more information about the CloudWatch terminology below, see [Amazon CloudWatch concepts](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html). \n ``CustomizedMetricSpecification`` is a property of the [AWS::ApplicationAutoScaling::ScalingPolicy TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html) property type.", - "properties": { - "Dimensions": { - "description": "The dimensions of the metric. \n Conditional: If you published your metric with dimensions, you must specify the same dimensions in your scaling policy.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MetricDimension" - }, - "type": "array", - "uniqueItems": false - }, - "MetricName": { - "description": "The name of the metric. To get the exact metric name, namespace, and dimensions, inspect the [Metric](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Metric.html) object that's returned by a call to [ListMetrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_ListMetrics.html).", - "type": "string" - }, - "Metrics": { - "description": "The metrics to include in the target tracking scaling policy, as a metric data query. This can include both raw metric and metric math expressions.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TargetTrackingMetricDataQuery" - }, - "type": "array", - "uniqueItems": false - }, - "Namespace": { - "description": "The namespace of the metric.", - "type": "string" - }, - "Statistic": { - "description": "The statistic of the metric.", - "type": "string" - }, - "Unit": { - "description": "The unit of the metric. For a complete list of the units that CloudWatch supports, see the [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) data type in the *Amazon CloudWatch API Reference*.", - "type": "string" - } - }, - "type": "object" - }, - "MetricDimension": { - "additionalProperties": false, - "description": "``MetricDimension`` specifies a name/value pair that is part of the identity of a CloudWatch metric for the ``Dimensions`` property of the [AWS::ApplicationAutoScaling::ScalingPolicy CustomizedMetricSpecification](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html) property type. Duplicate dimensions are not allowed.", - "properties": { - "Name": { - "description": "The name of the dimension.", - "type": "string" - }, - "Value": { - "description": "The value of the dimension.", - "type": "string" - } - }, - "required": [ - "Value", - "Name" - ], - "type": "object" - }, - "PredefinedMetricSpecification": { - "additionalProperties": false, - "description": "Contains predefined metric specification information for a target tracking scaling policy for Application Auto Scaling.\n ``PredefinedMetricSpecification`` is a property of the [AWS::ApplicationAutoScaling::ScalingPolicy TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html) property type.", - "properties": { - "PredefinedMetricType": { - "description": "The metric type. The ``ALBRequestCountPerTarget`` metric type applies only to Spot fleet requests and ECS services.", - "type": "string" - }, - "ResourceLabel": { - "description": "Identifies the resource associated with the metric type. You can't specify a resource label unless the metric type is ``ALBRequestCountPerTarget`` and there is a target group attached to the Spot Fleet or ECS service.\n You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). The format of the resource label is:\n ``app/my-alb/778d41231b141a0f/targetgroup/my-alb-target-group/943f017f100becff``.\n Where:\n + app// is the final portion of the load balancer ARN\n + targetgroup// is the final portion of the target group ARN.\n \n To find the ARN for an Application Load Balancer, use the [DescribeLoadBalancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeLoadBalancers.html) API operation. To find the ARN for the target group, use the [DescribeTargetGroups](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeTargetGroups.html) API operation.", - "type": "string" - } - }, - "required": [ - "PredefinedMetricType" - ], - "type": "object" - }, - "StepAdjustment": { - "additionalProperties": false, - "description": "``StepAdjustment`` specifies a step adjustment for the ``StepAdjustments`` property of the [AWS::ApplicationAutoScaling::ScalingPolicy StepScalingPolicyConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html) property type. \n For the following examples, suppose that you have an alarm with a breach threshold of 50: \n + To trigger a step adjustment when the metric is greater than or equal to 50 and less than 60, specify a lower bound of 0 and an upper bound of 10. \n + To trigger a step adjustment when the metric is greater than 40 and less than or equal to 50, specify a lower bound of -10 and an upper bound of 0. \n \n For more information, see [Step adjustments](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html#as-scaling-steps) in the *Application Auto Scaling User Guide*.\n You can find a sample template snippet in the [Examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#aws-resource-applicationautoscaling-scalingpolicy--examples) section of the ``AWS::ApplicationAutoScaling::ScalingPolicy`` documentation.", - "properties": { - "MetricIntervalLowerBound": { - "description": "The lower bound for the difference between the alarm threshold and the CloudWatch metric. If the metric value is above the breach threshold, the lower bound is inclusive (the metric must be greater than or equal to the threshold plus the lower bound). Otherwise, it is exclusive (the metric must be greater than the threshold plus the lower bound). A null value indicates negative infinity.\n You must specify at least one upper or lower bound.", - "type": "number" - }, - "MetricIntervalUpperBound": { - "description": "The upper bound for the difference between the alarm threshold and the CloudWatch metric. If the metric value is above the breach threshold, the upper bound is exclusive (the metric must be less than the threshold plus the upper bound). Otherwise, it is inclusive (the metric must be less than or equal to the threshold plus the upper bound). A null value indicates positive infinity.\n You must specify at least one upper or lower bound.", - "type": "number" - }, - "ScalingAdjustment": { - "description": "The amount by which to scale. The adjustment is based on the value that you specified in the ``AdjustmentType`` property (either an absolute number or a percentage). A positive value adds to the current capacity and a negative number subtracts from the current capacity.", - "type": "integer" - } - }, - "required": [ - "ScalingAdjustment" - ], - "type": "object" - }, - "StepScalingPolicyConfiguration": { - "additionalProperties": false, - "description": "``StepScalingPolicyConfiguration`` is a property of the [AWS::ApplicationAutoScaling::ScalingPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html) resource that specifies a step scaling policy configuration for Application Auto Scaling. \n For more information, see [Step scaling policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html) in the *Application Auto Scaling User Guide*.", - "properties": { - "AdjustmentType": { - "description": "Specifies whether the ``ScalingAdjustment`` value in the ``StepAdjustment`` property is an absolute number or a percentage of the current capacity.", - "type": "string" - }, - "Cooldown": { - "description": "The amount of time, in seconds, to wait for a previous scaling activity to take effect. If not specified, the default value is 300. For more information, see [Cooldown period](https://docs.aws.amazon.com/autoscaling/application/userguide/step-scaling-policy-overview.html#step-scaling-cooldown) in the *Application Auto Scaling User Guide*.", - "type": "integer" - }, - "MetricAggregationType": { - "description": "The aggregation type for the CloudWatch metrics. Valid values are ``Minimum``, ``Maximum``, and ``Average``. If the aggregation type is null, the value is treated as ``Average``.", - "type": "string" - }, - "MinAdjustmentMagnitude": { - "description": "The minimum value to scale by when the adjustment type is ``PercentChangeInCapacity``. For example, suppose that you create a step scaling policy to scale out an Amazon ECS service by 25 percent and you specify a ``MinAdjustmentMagnitude`` of 2. If the service has 4 tasks and the scaling policy is performed, 25 percent of 4 is 1. However, because you specified a ``MinAdjustmentMagnitude`` of 2, Application Auto Scaling scales out the service by 2 tasks.", - "type": "integer" - }, - "StepAdjustments": { - "description": "A set of adjustments that enable you to scale based on the size of the alarm breach.\n At least one step adjustment is required if you are adding a new step scaling policy configuration.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/StepAdjustment" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "TargetTrackingMetric": { - "additionalProperties": false, - "description": "Represents a specific metric for a target tracking scaling policy for Application Auto Scaling.\n Metric is a property of the [AWS::ApplicationAutoScaling::ScalingPolicy TargetTrackingMetricStat](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricstat.html) property type.", - "properties": { - "Dimensions": { - "description": "The dimensions for the metric. For the list of available dimensions, see the AWS documentation available from the table in [services that publish CloudWatch metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html) in the *Amazon CloudWatch User Guide*. \n Conditional: If you published your metric with dimensions, you must specify the same dimensions in your scaling policy.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TargetTrackingMetricDimension" - }, - "type": "array", - "uniqueItems": false - }, - "MetricName": { - "description": "The name of the metric.", - "type": "string" - }, - "Namespace": { - "description": "The namespace of the metric. For more information, see the table in [services that publish CloudWatch metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html) in the *Amazon CloudWatch User Guide*.", - "type": "string" - } - }, - "type": "object" - }, - "TargetTrackingMetricDataQuery": { - "additionalProperties": false, - "description": "The metric data to return. Also defines whether this call is returning data for one metric only, or whether it is performing a math expression on the values of returned metric statistics to create a new time series. A time series is a series of data points, each of which is associated with a timestamp.\n You can call for a single metric or perform math expressions on multiple metrics. Any expressions used in a metric specification must eventually return a single time series.\n For more information and examples, see [Create a target tracking scaling policy for Application Auto Scaling using metric math](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking-metric-math.html) in the *Application Auto Scaling User Guide*.\n ``TargetTrackingMetricDataQuery`` is a property of the [AWS::ApplicationAutoScaling::ScalingPolicy CustomizedMetricSpecification](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html) property type.", - "properties": { - "Expression": { - "description": "The math expression to perform on the returned data, if this object is performing a math expression. This expression can use the ``Id`` of the other metrics to refer to those metrics, and can also use the ``Id`` of other expressions to use the result of those expressions. \n Conditional: Within each ``TargetTrackingMetricDataQuery`` object, you must specify either ``Expression`` or ``MetricStat``, but not both.", - "type": "string" - }, - "Id": { - "description": "A short name that identifies the object's results in the response. This name must be unique among all ``MetricDataQuery`` objects specified for a single scaling policy. If you are performing math expressions on this set of data, this name represents that data and can serve as a variable in the mathematical expression. The valid characters are letters, numbers, and underscores. The first character must be a lowercase letter.", - "type": "string" - }, - "Label": { - "description": "A human-readable label for this metric or expression. This is especially useful if this is a math expression, so that you know what the value represents.", - "type": "string" - }, - "MetricStat": { - "$ref": "#/definitions/TargetTrackingMetricStat", - "description": "Information about the metric data to return.\n Conditional: Within each ``MetricDataQuery`` object, you must specify either ``Expression`` or ``MetricStat``, but not both." - }, - "ReturnData": { - "description": "Indicates whether to return the timestamps and raw data values of this metric. \n If you use any math expressions, specify ``true`` for this value for only the final math expression that the metric specification is based on. You must specify ``false`` for ``ReturnData`` for all the other metrics and expressions used in the metric specification.\n If you are only retrieving metrics and not performing any math expressions, do not specify anything for ``ReturnData``. This sets it to its default (``true``).", - "type": "boolean" - } - }, - "type": "object" - }, - "TargetTrackingMetricDimension": { - "additionalProperties": false, - "description": "``TargetTrackingMetricDimension`` specifies a name/value pair that is part of the identity of a CloudWatch metric for the ``Dimensions`` property of the [AWS::ApplicationAutoScaling::ScalingPolicy TargetTrackingMetric](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetric.html) property type. Duplicate dimensions are not allowed.", - "properties": { - "Name": { - "description": "The name of the dimension.", - "type": "string" - }, - "Value": { - "description": "The value of the dimension.", - "type": "string" - } - }, - "type": "object" - }, - "TargetTrackingMetricStat": { - "additionalProperties": false, - "description": "This structure defines the CloudWatch metric to return, along with the statistic and unit.\n ``TargetTrackingMetricStat`` is a property of the [AWS::ApplicationAutoScaling::ScalingPolicy TargetTrackingMetricDataQuery](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricdataquery.html) property type.\n For more information about the CloudWatch terminology below, see [Amazon CloudWatch concepts](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html) in the *Amazon CloudWatch User Guide*.", - "properties": { - "Metric": { - "$ref": "#/definitions/TargetTrackingMetric", - "description": "The CloudWatch metric to return, including the metric name, namespace, and dimensions. To get the exact metric name, namespace, and dimensions, inspect the [Metric](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Metric.html) object that is returned by a call to [ListMetrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_ListMetrics.html)." - }, - "Stat": { - "description": "The statistic to return. It can include any CloudWatch statistic or extended statistic. For a list of valid values, see the table in [Statistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Statistic) in the *Amazon CloudWatch User Guide*.\n The most commonly used metric for scaling is ``Average``.", - "type": "string" - }, - "Unit": { - "description": "The unit to use for the returned data points. For a complete list of the units that CloudWatch supports, see the [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) data type in the *Amazon CloudWatch API Reference*.", - "type": "string" - } - }, - "type": "object" - }, - "TargetTrackingScalingPolicyConfiguration": { - "additionalProperties": false, - "description": "``TargetTrackingScalingPolicyConfiguration`` is a property of the [AWS::ApplicationAutoScaling::ScalingPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html) resource that specifies a target tracking scaling policy configuration for Application Auto Scaling. Use a target tracking scaling policy to adjust the capacity of the specified scalable target in response to actual workloads, so that resource utilization remains at or near the target utilization value. \n For more information, see [Target tracking scaling policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html) in the *Application Auto Scaling User Guide*.", - "properties": { - "CustomizedMetricSpecification": { - "$ref": "#/definitions/CustomizedMetricSpecification", - "description": "A customized metric. You can specify either a predefined metric or a customized metric." - }, - "DisableScaleIn": { - "description": "Indicates whether scale in by the target tracking scaling policy is disabled. If the value is ``true``, scale in is disabled and the target tracking scaling policy won't remove capacity from the scalable target. Otherwise, scale in is enabled and the target tracking scaling policy can remove capacity from the scalable target. The default value is ``false``.", - "type": "boolean" - }, - "PredefinedMetricSpecification": { - "$ref": "#/definitions/PredefinedMetricSpecification", - "description": "A predefined metric. You can specify either a predefined metric or a customized metric." - }, - "ScaleInCooldown": { - "description": "The amount of time, in seconds, after a scale-in activity completes before another scale-in activity can start. For more information and for default values, see [Define cooldown periods](https://docs.aws.amazon.com/autoscaling/application/userguide/target-tracking-scaling-policy-overview.html#target-tracking-cooldown) in the *Application Auto Scaling User Guide*.", - "type": "integer" - }, - "ScaleOutCooldown": { - "description": "The amount of time, in seconds, to wait for a previous scale-out activity to take effect. For more information and for default values, see [Define cooldown periods](https://docs.aws.amazon.com/autoscaling/application/userguide/target-tracking-scaling-policy-overview.html#target-tracking-cooldown) in the *Application Auto Scaling User Guide*.", - "type": "integer" - }, - "TargetValue": { - "description": "The target value for the metric. Although this property accepts numbers of type Double, it won't accept values that are either too small or too large. Values must be in the range of -2^360 to 2^360. The value must be a valid number based on the choice of metric. For example, if the metric is CPU utilization, then the target value is a percent value that represents how much of the CPU can be used before scaling out.", - "type": "number" - } - }, - "required": [ - "TargetValue" - ], - "type": "object" - } - }, - "description": "The ``AWS::ApplicationAutoScaling::ScalingPolicy`` resource defines a scaling policy that Application Auto Scaling uses to adjust the capacity of a scalable target. \n For more information, see [Target tracking scaling policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html) and [Step scaling policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html) in the *Application Auto Scaling User Guide*.", - "handlers": { - "create": { - "permissions": [ - "application-autoscaling:DescribeScalingPolicies", - "application-autoscaling:PutScalingPolicy" - ] - }, - "delete": { - "permissions": [ - "application-autoscaling:DescribeScalingPolicies", - "application-autoscaling:DeleteScalingPolicy" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ServiceNamespace": { - "description": "The name of the service", - "type": "string" - } - }, - "required": [ - "ServiceNamespace" - ] - }, - "permissions": [ - "application-autoscaling:DescribeScalingPolicies" - ] - }, - "read": { - "permissions": [ - "application-autoscaling:DescribeScalingPolicies" - ] - }, - "update": { - "permissions": [ - "application-autoscaling:DescribeScalingPolicies", - "application-autoscaling:PutScalingPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn", - "/properties/ScalableDimension" - ], - "properties": { - "Arn": { - "description": "", - "type": "string" - }, - "PolicyName": { - "description": "The name of the scaling policy.\n Updates to the name of a target tracking scaling policy are not supported, unless you also update the metric used for scaling. To change only a target tracking scaling policy's name, first delete the policy by removing the existing ``AWS::ApplicationAutoScaling::ScalingPolicy`` resource from the template and updating the stack. Then, recreate the resource with the same settings and a different name.", - "type": "string" - }, - "PolicyType": { - "description": "The scaling policy type.\n The following policy types are supported: \n ``TargetTrackingScaling``\u2014Not supported for Amazon EMR\n ``StepScaling``\u2014Not supported for DynamoDB, Amazon Comprehend, Lambda, Amazon Keyspaces, Amazon MSK, Amazon ElastiCache, or Neptune.", - "type": "string" - }, - "ResourceId": { - "description": "The identifier of the resource associated with the scaling policy. This string consists of the resource type and unique identifier.\n + ECS service - The resource type is ``service`` and the unique identifier is the cluster name and service name. Example: ``service/my-cluster/my-service``.\n + Spot Fleet - The resource type is ``spot-fleet-request`` and the unique identifier is the Spot Fleet request ID. Example: ``spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE``.\n + EMR cluster - The resource type is ``instancegroup`` and the unique identifier is the cluster ID and instance group ID. Example: ``instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0``.\n + AppStream 2.0 fleet - The resource type is ``fleet`` and the unique identifier is the fleet name. Example: ``fleet/sample-fleet``.\n + DynamoDB table - The resource type is ``table`` and the unique identifier is the table name. Example: ``table/my-table``.\n + DynamoDB global secondary index - The resource type is ``index`` and the unique identifier is the index name. Example: ``table/my-table/index/my-table-index``.\n + Aurora DB cluster - The resource type is ``cluster`` and the unique identifier is the cluster name. Example: ``cluster:my-db-cluster``.\n + SageMaker endpoint variant - The resource type is ``variant`` and the unique identifier is the resource ID. Example: ``endpoint/my-end-point/variant/KMeansClustering``.\n + Custom resources are not supported with a resource type. This parameter must specify the ``OutputValue`` from the CloudFormation template stack used to access the resources. The unique identifier is defined by the service provider. More information is available in our [GitHub repository](https://docs.aws.amazon.com/https://github.com/aws/aws-auto-scaling-custom-resource).\n + Amazon Comprehend document classification endpoint - The resource type and unique identifier are specified using the endpoint ARN. Example: ``arn:aws:comprehend:us-west-2:123456789012:document-classifier-endpoint/EXAMPLE``.\n + Amazon Comprehend entity recognizer endpoint - The resource type and unique identifier are specified using the endpoint ARN. Example: ``arn:aws:comprehend:us-west-2:123456789012:entity-recognizer-endpoint/EXAMPLE``.\n + Lambda provisioned concurrency - The resource type is ``function`` and the unique identifier is the function name with a function version or alias name suffix that is not ``$LATEST``. Example: ``function:my-function:prod`` or ``function:my-function:1``.\n + Amazon Keyspaces table - The resource type is ``table`` and the unique identifier is the table name. Example: ``keyspace/mykeyspace/table/mytable``.\n + Amazon MSK cluster - The resource type and unique identifier are specified using the cluster ARN. Example: ``arn:aws:kafka:us-east-1:123456789012:cluster/demo-cluster-1/6357e0b2-0e6a-4b86-a0b4-70df934c2e31-5``.\n + Amazon ElastiCache replication group - The resource type is ``replication-group`` and the unique identifier is the replication group name. Example: ``replication-group/mycluster``.\n + Neptune cluster - The resource type is ``cluster`` and the unique identifier is the cluster name. Example: ``cluster:mycluster``.\n + SageMaker serverless endpoint - The resource type is ``variant`` and the unique identifier is the resource ID. Example: ``endpoint/my-end-point/variant/KMeansClustering``.\n + SageMaker inference component - The resource type is ``inference-component`` and the unique identifier is the resource ID. Example: ``inference-component/my-inference-component``.\n + Pool of WorkSpaces - The resource type is ``workspacespool`` and the unique identifier is the pool ID. Example: ``workspacespool/wspool-123456``.", - "type": "string" - }, - "ScalableDimension": { - "description": "The scalable dimension. This string consists of the service namespace, resource type, and scaling property.\n + ``ecs:service:DesiredCount`` - The task count of an ECS service.\n + ``elasticmapreduce:instancegroup:InstanceCount`` - The instance count of an EMR Instance Group.\n + ``ec2:spot-fleet-request:TargetCapacity`` - The target capacity of a Spot Fleet.\n + ``appstream:fleet:DesiredCapacity`` - The capacity of an AppStream 2.0 fleet.\n + ``dynamodb:table:ReadCapacityUnits`` - The provisioned read capacity for a DynamoDB table.\n + ``dynamodb:table:WriteCapacityUnits`` - The provisioned write capacity for a DynamoDB table.\n + ``dynamodb:index:ReadCapacityUnits`` - The provisioned read capacity for a DynamoDB global secondary index.\n + ``dynamodb:index:WriteCapacityUnits`` - The provisioned write capacity for a DynamoDB global secondary index.\n + ``rds:cluster:ReadReplicaCount`` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora PostgreSQL-compatible edition.\n + ``sagemaker:variant:DesiredInstanceCount`` - The number of EC2 instances for a SageMaker model endpoint variant.\n + ``custom-resource:ResourceType:Property`` - The scalable dimension for a custom resource provided by your own application or service.\n + ``comprehend:document-classifier-endpoint:DesiredInferenceUnits`` - The number of inference units for an Amazon Comprehend document classification endpoint.\n + ``comprehend:entity-recognizer-endpoint:DesiredInferenceUnits`` - The number of inference units for an Amazon Comprehend entity recognizer endpoint.\n + ``lambda:function:ProvisionedConcurrency`` - The provisioned concurrency for a Lambda function.\n + ``cassandra:table:ReadCapacityUnits`` - The provisioned read capacity for an Amazon Keyspaces table.\n + ``cassandra:table:WriteCapacityUnits`` - The provisioned write capacity for an Amazon Keyspaces table.\n + ``kafka:broker-storage:VolumeSize`` - The provisioned volume size (in GiB) for brokers in an Amazon MSK cluster.\n + ``elasticache:replication-group:NodeGroups`` - The number of node groups for an Amazon ElastiCache replication group.\n + ``elasticache:replication-group:Replicas`` - The number of replicas per node group for an Amazon ElastiCache replication group.\n + ``neptune:cluster:ReadReplicaCount`` - The count of read replicas in an Amazon Neptune DB cluster.\n + ``sagemaker:variant:DesiredProvisionedConcurrency`` - The provisioned concurrency for a SageMaker serverless endpoint.\n + ``sagemaker:inference-component:DesiredCopyCount`` - The number of copies across an endpoint for a SageMaker inference component.\n + ``workspaces:workspacespool:DesiredUserSessions`` - The number of user sessions for the WorkSpaces in the pool.", - "type": "string" - }, - "ScalingTargetId": { - "description": "The CloudFormation-generated ID of an Application Auto Scaling scalable target. For more information about the ID, see the Return Value section of the ``AWS::ApplicationAutoScaling::ScalableTarget`` resource.\n You must specify either the ``ScalingTargetId`` property, or the ``ResourceId``, ``ScalableDimension``, and ``ServiceNamespace`` properties, but not both.", - "type": "string" - }, - "ServiceNamespace": { - "description": "The namespace of the AWS service that provides the resource, or a ``custom-resource``.", - "type": "string" - }, - "StepScalingPolicyConfiguration": { - "$ref": "#/definitions/StepScalingPolicyConfiguration", - "description": "A step scaling policy." - }, - "TargetTrackingScalingPolicyConfiguration": { - "$ref": "#/definitions/TargetTrackingScalingPolicyConfiguration", - "description": "A target tracking scaling policy." - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "PolicyName", - "PolicyType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ApplicationAutoScaling::ScalingPolicy", - "writeOnlyProperties": [ - "/properties/TargetTrackingScalingPolicyConfiguration/PredefinedMetricSpecification/ResourceLabel", - "/properties/ScalingTargetId" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyName", + "/properties/ServiceNamespace", + "/properties/ResourceId", + "/properties/ScalableDimension", + "/properties/ScalingTargetId" + ], + "definitions": { + "CustomizedMetricSpecification": { + "additionalProperties": false, + "description": "Contains customized metric specification information for a target tracking scaling policy for Application Auto Scaling. \n For information about the available metrics for a service, see [services that publish CloudWatch metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html) in the *Amazon CloudWatch User Guide*.\n To create your customized metric specification:\n + Add values for each required parameter from CloudWatch. You can use an existing metric, or a new metric that you create. To use your own metric, you must first publish the metric to CloudWatch. For more information, see [Publish custom metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html) in the *Amazon CloudWatch User Guide*.\n + Choose a metric that changes proportionally with capacity. The value of the metric should increase or decrease in inverse proportion to the number of capacity units. That is, the value of the metric should decrease when capacity increases, and increase when capacity decreases. \n \n For an example of how creating new metrics can be useful, see [Scaling based on Amazon SQS](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-using-sqs-queue.html) in the *Amazon EC2 Auto Scaling User Guide*. This topic mentions Auto Scaling groups, but the same scenario for Amazon SQS can apply to the target tracking scaling policies that you create for a Spot Fleet by using Application Auto Scaling.\n For more information about the CloudWatch terminology below, see [Amazon CloudWatch concepts](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html). \n ``CustomizedMetricSpecification`` is a property of the [AWS::ApplicationAutoScaling::ScalingPolicy TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html) property type.", + "properties": { + "Dimensions": { + "description": "The dimensions of the metric. \n Conditional: If you published your metric with dimensions, you must specify the same dimensions in your scaling policy.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MetricDimension" + }, + "type": "array", + "uniqueItems": false + }, + "MetricName": { + "description": "The name of the metric. To get the exact metric name, namespace, and dimensions, inspect the [Metric](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Metric.html) object that's returned by a call to [ListMetrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_ListMetrics.html).", + "type": "string" + }, + "Metrics": { + "description": "The metrics to include in the target tracking scaling policy, as a metric data query. This can include both raw metric and metric math expressions.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TargetTrackingMetricDataQuery" + }, + "type": "array", + "uniqueItems": false + }, + "Namespace": { + "description": "The namespace of the metric.", + "type": "string" + }, + "Statistic": { + "description": "The statistic of the metric.", + "type": "string" + }, + "Unit": { + "description": "The unit of the metric. For a complete list of the units that CloudWatch supports, see the [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) data type in the *Amazon CloudWatch API Reference*.", + "type": "string" + } + }, + "type": "object" + }, + "MetricDimension": { + "additionalProperties": false, + "description": "``MetricDimension`` specifies a name/value pair that is part of the identity of a CloudWatch metric for the ``Dimensions`` property of the [AWS::ApplicationAutoScaling::ScalingPolicy CustomizedMetricSpecification](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html) property type. Duplicate dimensions are not allowed.", + "properties": { + "Name": { + "description": "The name of the dimension.", + "type": "string" + }, + "Value": { + "description": "The value of the dimension.", + "type": "string" + } + }, + "required": [ + "Value", + "Name" + ], + "type": "object" + }, + "PredefinedMetricSpecification": { + "additionalProperties": false, + "description": "Contains predefined metric specification information for a target tracking scaling policy for Application Auto Scaling.\n ``PredefinedMetricSpecification`` is a property of the [AWS::ApplicationAutoScaling::ScalingPolicy TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html) property type.", + "properties": { + "PredefinedMetricType": { + "description": "The metric type. The ``ALBRequestCountPerTarget`` metric type applies only to Spot fleet requests and ECS services.", + "type": "string" + }, + "ResourceLabel": { + "description": "Identifies the resource associated with the metric type. You can't specify a resource label unless the metric type is ``ALBRequestCountPerTarget`` and there is a target group attached to the Spot Fleet or ECS service.\n You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). The format of the resource label is:\n ``app/my-alb/778d41231b141a0f/targetgroup/my-alb-target-group/943f017f100becff``.\n Where:\n + app// is the final portion of the load balancer ARN\n + targetgroup// is the final portion of the target group ARN.\n \n To find the ARN for an Application Load Balancer, use the [DescribeLoadBalancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeLoadBalancers.html) API operation. To find the ARN for the target group, use the [DescribeTargetGroups](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeTargetGroups.html) API operation.", + "type": "string" + } + }, + "required": [ + "PredefinedMetricType" + ], + "type": "object" + }, + "PredictiveScalingCustomizedCapacityMetric": { + "additionalProperties": false, + "description": "Represents a CloudWatch metric of your choosing for a predictive scaling policy.", + "properties": { + "MetricDataQueries": { + "description": "One or more metric data queries to provide data points for a metric specification.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PredictiveScalingMetricDataQuery" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "MetricDataQueries" + ], + "type": "object" + }, + "PredictiveScalingCustomizedLoadMetric": { + "additionalProperties": false, + "description": "The customized load metric specification.", + "properties": { + "MetricDataQueries": { + "description": "", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PredictiveScalingMetricDataQuery" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "MetricDataQueries" + ], + "type": "object" + }, + "PredictiveScalingCustomizedScalingMetric": { + "additionalProperties": false, + "description": "One or more metric data queries to provide data points for a metric specification.", + "properties": { + "MetricDataQueries": { + "description": "One or more metric data queries to provide data points for a metric specification.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PredictiveScalingMetricDataQuery" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "MetricDataQueries" + ], + "type": "object" + }, + "PredictiveScalingMetric": { + "additionalProperties": false, + "description": "Describes the scaling metric.", + "properties": { + "Dimensions": { + "description": "Describes the dimensions of the metric.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PredictiveScalingMetricDimension" + }, + "type": "array", + "uniqueItems": false + }, + "MetricName": { + "description": "The name of the metric.", + "type": "string" + }, + "Namespace": { + "description": "The namespace of the metric.", + "type": "string" + } + }, + "type": "object" + }, + "PredictiveScalingMetricDataQuery": { + "additionalProperties": false, + "description": "The metric data to return. Also defines whether this call is returning data for one metric only, or whether it is performing a math expression on the values of returned metric statistics to create a new time series. A time series is a series of data points, each of which is associated with a timestamp.", + "properties": { + "Expression": { + "description": "The math expression to perform on the returned data, if this object is performing a math expression. This expression can use the ``Id`` of the other metrics to refer to those metrics, and can also use the ``Id`` of other expressions to use the result of those expressions. \n Conditional: Within each ``MetricDataQuery`` object, you must specify either ``Expression`` or ``MetricStat``, but not both.", + "type": "string" + }, + "Id": { + "description": "A short name that identifies the object's results in the response. This name must be unique among all ``MetricDataQuery`` objects specified for a single scaling policy. If you are performing math expressions on this set of data, this name represents that data and can serve as a variable in the mathematical expression. The valid characters are letters, numbers, and underscores. The first character must be a lowercase letter.", + "type": "string" + }, + "Label": { + "description": "A human-readable label for this metric or expression. This is especially useful if this is a math expression, so that you know what the value represents.", + "type": "string" + }, + "MetricStat": { + "$ref": "#/definitions/PredictiveScalingMetricStat", + "description": "Information about the metric data to return. \n Conditional: Within each ``MetricDataQuery`` object, you must specify either ``Expression`` or ``MetricStat``, but not both." + }, + "ReturnData": { + "description": "Indicates whether to return the timestamps and raw data values of this metric. \n If you use any math expressions, specify ``true`` for this value for only the final math expression that the metric specification is based on. You must specify ``false`` for ``ReturnData`` for all the other metrics and expressions used in the metric specification.\n If you are only retrieving metrics and not performing any math expressions, do not specify anything for ``ReturnData``. This sets it to its default (``true``).", + "type": "boolean" + } + }, + "type": "object" + }, + "PredictiveScalingMetricDimension": { + "additionalProperties": false, + "description": "Describes the dimension of a metric.", + "properties": { + "Name": { + "description": "The name of the dimension.", + "type": "string" + }, + "Value": { + "description": "The value of the dimension.", + "type": "string" + } + }, + "type": "object" + }, + "PredictiveScalingMetricSpecification": { + "additionalProperties": false, + "description": "This structure specifies the metrics and target utilization settings for a predictive scaling policy. \n You must specify either a metric pair, or a load metric and a scaling metric individually. Specifying a metric pair instead of individual metrics provides a simpler way to configure metrics for a scaling policy. You choose the metric pair, and the policy automatically knows the correct sum and average statistics to use for the load metric and the scaling metric.", + "properties": { + "CustomizedCapacityMetricSpecification": { + "$ref": "#/definitions/PredictiveScalingCustomizedCapacityMetric", + "description": "The customized capacity metric specification." + }, + "CustomizedLoadMetricSpecification": { + "$ref": "#/definitions/PredictiveScalingCustomizedLoadMetric", + "description": "The customized load metric specification." + }, + "CustomizedScalingMetricSpecification": { + "$ref": "#/definitions/PredictiveScalingCustomizedScalingMetric", + "description": "The customized scaling metric specification." + }, + "PredefinedLoadMetricSpecification": { + "$ref": "#/definitions/PredictiveScalingPredefinedLoadMetric", + "description": "The predefined load metric specification." + }, + "PredefinedMetricPairSpecification": { + "$ref": "#/definitions/PredictiveScalingPredefinedMetricPair", + "description": "The predefined metric pair specification that determines the appropriate scaling metric and load metric to use." + }, + "PredefinedScalingMetricSpecification": { + "$ref": "#/definitions/PredictiveScalingPredefinedScalingMetric", + "description": "The predefined scaling metric specification." + }, + "TargetValue": { + "description": "Specifies the target utilization.", + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + }, + "PredictiveScalingMetricStat": { + "additionalProperties": false, + "description": "This structure defines the CloudWatch metric to return, along with the statistic and unit.", + "properties": { + "Metric": { + "$ref": "#/definitions/PredictiveScalingMetric", + "description": "The CloudWatch metric to return, including the metric name, namespace, and dimensions. To get the exact metric name, namespace, and dimensions, inspect the [Metric](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Metric.html) object that is returned by a call to [ListMetrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_ListMetrics.html)." + }, + "Stat": { + "description": "The statistic to return. It can include any CloudWatch statistic or extended statistic. For a list of valid values, see the table in [Statistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Statistic) in the *Amazon CloudWatch User Guide*. \n The most commonly used metrics for predictive scaling are ``Average`` and ``Sum``.", + "type": "string" + }, + "Unit": { + "description": "The unit to use for the returned data points. For a complete list of the units that CloudWatch supports, see the [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) data type in the *Amazon CloudWatch API Reference*.", + "type": "string" + } + }, + "type": "object" + }, + "PredictiveScalingPolicyConfiguration": { + "additionalProperties": false, + "description": "Represents a predictive scaling policy configuration.", + "properties": { + "MaxCapacityBreachBehavior": { + "description": "Defines the behavior that should be applied if the forecast capacity approaches or exceeds the maximum capacity. Defaults to ``HonorMaxCapacity`` if not specified.", + "type": "string" + }, + "MaxCapacityBuffer": { + "description": "The size of the capacity buffer to use when the forecast capacity is close to or exceeds the maximum capacity. The value is specified as a percentage relative to the forecast capacity. For example, if the buffer is 10, this means a 10 percent buffer, such that if the forecast capacity is 50, and the maximum capacity is 40, then the effective maximum capacity is 55. \n Required if the ``MaxCapacityBreachBehavior`` property is set to ``IncreaseMaxCapacity``, and cannot be used otherwise.", + "type": "integer" + }, + "MetricSpecifications": { + "description": "This structure includes the metrics and target utilization to use for predictive scaling. \n This is an array, but we currently only support a single metric specification. That is, you can specify a target value and a single metric pair, or a target value and one scaling metric and one load metric.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PredictiveScalingMetricSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "Mode": { + "description": "The predictive scaling mode. Defaults to ``ForecastOnly`` if not specified.", + "type": "string" + }, + "SchedulingBufferTime": { + "description": "The amount of time, in seconds, that the start time can be advanced. \n The value must be less than the forecast interval duration of 3600 seconds (60 minutes). Defaults to 300 seconds if not specified.", + "type": "integer" + } + }, + "required": [ + "MetricSpecifications" + ], + "type": "object" + }, + "PredictiveScalingPredefinedLoadMetric": { + "additionalProperties": false, + "description": "Describes a load metric for a predictive scaling policy. \n When returned in the output of ``DescribePolicies``, it indicates that a predictive scaling policy uses individually specified load and scaling metrics instead of a metric pair.", + "properties": { + "PredefinedMetricType": { + "description": "The metric type.", + "type": "string" + }, + "ResourceLabel": { + "description": "A label that uniquely identifies a target group.", + "type": "string" + } + }, + "required": [ + "PredefinedMetricType" + ], + "type": "object" + }, + "PredictiveScalingPredefinedMetricPair": { + "additionalProperties": false, + "description": "Represents a metric pair for a predictive scaling policy.", + "properties": { + "PredefinedMetricType": { + "description": "Indicates which metrics to use. There are two different types of metrics for each metric type: one is a load metric and one is a scaling metric.", + "type": "string" + }, + "ResourceLabel": { + "description": "A label that uniquely identifies a specific target group from which to determine the total and average request count.", + "type": "string" + } + }, + "required": [ + "PredefinedMetricType" + ], + "type": "object" + }, + "PredictiveScalingPredefinedScalingMetric": { + "additionalProperties": false, + "description": "Describes a scaling metric for a predictive scaling policy. \n When returned in the output of ``DescribePolicies``, it indicates that a predictive scaling policy uses individually specified load and scaling metrics instead of a metric pair.", + "properties": { + "PredefinedMetricType": { + "description": "The metric type.", + "type": "string" + }, + "ResourceLabel": { + "description": "A label that uniquely identifies a specific target group from which to determine the average request count.", + "type": "string" + } + }, + "required": [ + "PredefinedMetricType" + ], + "type": "object" + }, + "StepAdjustment": { + "additionalProperties": false, + "description": "``StepAdjustment`` specifies a step adjustment for the ``StepAdjustments`` property of the [AWS::ApplicationAutoScaling::ScalingPolicy StepScalingPolicyConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html) property type. \n For the following examples, suppose that you have an alarm with a breach threshold of 50: \n + To trigger a step adjustment when the metric is greater than or equal to 50 and less than 60, specify a lower bound of 0 and an upper bound of 10. \n + To trigger a step adjustment when the metric is greater than 40 and less than or equal to 50, specify a lower bound of -10 and an upper bound of 0. \n \n For more information, see [Step adjustments](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html#as-scaling-steps) in the *Application Auto Scaling User Guide*.\n You can find a sample template snippet in the [Examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#aws-resource-applicationautoscaling-scalingpolicy--examples) section of the ``AWS::ApplicationAutoScaling::ScalingPolicy`` documentation.", + "properties": { + "MetricIntervalLowerBound": { + "description": "The lower bound for the difference between the alarm threshold and the CloudWatch metric. If the metric value is above the breach threshold, the lower bound is inclusive (the metric must be greater than or equal to the threshold plus the lower bound). Otherwise, it is exclusive (the metric must be greater than the threshold plus the lower bound). A null value indicates negative infinity.\n You must specify at least one upper or lower bound.", + "type": "number" + }, + "MetricIntervalUpperBound": { + "description": "The upper bound for the difference between the alarm threshold and the CloudWatch metric. If the metric value is above the breach threshold, the upper bound is exclusive (the metric must be less than the threshold plus the upper bound). Otherwise, it is inclusive (the metric must be less than or equal to the threshold plus the upper bound). A null value indicates positive infinity.\n You must specify at least one upper or lower bound.", + "type": "number" + }, + "ScalingAdjustment": { + "description": "The amount by which to scale. The adjustment is based on the value that you specified in the ``AdjustmentType`` property (either an absolute number or a percentage). A positive value adds to the current capacity and a negative number subtracts from the current capacity.", + "type": "integer" + } + }, + "required": [ + "ScalingAdjustment" + ], + "type": "object" + }, + "StepScalingPolicyConfiguration": { + "additionalProperties": false, + "description": "``StepScalingPolicyConfiguration`` is a property of the [AWS::ApplicationAutoScaling::ScalingPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html) resource that specifies a step scaling policy configuration for Application Auto Scaling. \n For more information, see [Step scaling policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html) in the *Application Auto Scaling User Guide*.", + "properties": { + "AdjustmentType": { + "description": "Specifies whether the ``ScalingAdjustment`` value in the ``StepAdjustment`` property is an absolute number or a percentage of the current capacity.", + "type": "string" + }, + "Cooldown": { + "description": "The amount of time, in seconds, to wait for a previous scaling activity to take effect. If not specified, the default value is 300. For more information, see [Cooldown period](https://docs.aws.amazon.com/autoscaling/application/userguide/step-scaling-policy-overview.html#step-scaling-cooldown) in the *Application Auto Scaling User Guide*.", + "type": "integer" + }, + "MetricAggregationType": { + "description": "The aggregation type for the CloudWatch metrics. Valid values are ``Minimum``, ``Maximum``, and ``Average``. If the aggregation type is null, the value is treated as ``Average``.", + "type": "string" + }, + "MinAdjustmentMagnitude": { + "description": "The minimum value to scale by when the adjustment type is ``PercentChangeInCapacity``. For example, suppose that you create a step scaling policy to scale out an Amazon ECS service by 25 percent and you specify a ``MinAdjustmentMagnitude`` of 2. If the service has 4 tasks and the scaling policy is performed, 25 percent of 4 is 1. However, because you specified a ``MinAdjustmentMagnitude`` of 2, Application Auto Scaling scales out the service by 2 tasks.", + "type": "integer" + }, + "StepAdjustments": { + "description": "A set of adjustments that enable you to scale based on the size of the alarm breach.\n At least one step adjustment is required if you are adding a new step scaling policy configuration.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StepAdjustment" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "TargetTrackingMetric": { + "additionalProperties": false, + "description": "Represents a specific metric for a target tracking scaling policy for Application Auto Scaling.\n Metric is a property of the [AWS::ApplicationAutoScaling::ScalingPolicy TargetTrackingMetricStat](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricstat.html) property type.", + "properties": { + "Dimensions": { + "description": "The dimensions for the metric. For the list of available dimensions, see the AWS documentation available from the table in [services that publish CloudWatch metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html) in the *Amazon CloudWatch User Guide*. \n Conditional: If you published your metric with dimensions, you must specify the same dimensions in your scaling policy.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TargetTrackingMetricDimension" + }, + "type": "array", + "uniqueItems": false + }, + "MetricName": { + "description": "The name of the metric.", + "type": "string" + }, + "Namespace": { + "description": "The namespace of the metric. For more information, see the table in [services that publish CloudWatch metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html) in the *Amazon CloudWatch User Guide*.", + "type": "string" + } + }, + "type": "object" + }, + "TargetTrackingMetricDataQuery": { + "additionalProperties": false, + "description": "The metric data to return. Also defines whether this call is returning data for one metric only, or whether it is performing a math expression on the values of returned metric statistics to create a new time series. A time series is a series of data points, each of which is associated with a timestamp.\n You can call for a single metric or perform math expressions on multiple metrics. Any expressions used in a metric specification must eventually return a single time series.\n For more information and examples, see [Create a target tracking scaling policy for Application Auto Scaling using metric math](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking-metric-math.html) in the *Application Auto Scaling User Guide*.\n ``TargetTrackingMetricDataQuery`` is a property of the [AWS::ApplicationAutoScaling::ScalingPolicy CustomizedMetricSpecification](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html) property type.", + "properties": { + "Expression": { + "description": "The math expression to perform on the returned data, if this object is performing a math expression. This expression can use the ``Id`` of the other metrics to refer to those metrics, and can also use the ``Id`` of other expressions to use the result of those expressions. \n Conditional: Within each ``TargetTrackingMetricDataQuery`` object, you must specify either ``Expression`` or ``MetricStat``, but not both.", + "type": "string" + }, + "Id": { + "description": "A short name that identifies the object's results in the response. This name must be unique among all ``MetricDataQuery`` objects specified for a single scaling policy. If you are performing math expressions on this set of data, this name represents that data and can serve as a variable in the mathematical expression. The valid characters are letters, numbers, and underscores. The first character must be a lowercase letter.", + "type": "string" + }, + "Label": { + "description": "A human-readable label for this metric or expression. This is especially useful if this is a math expression, so that you know what the value represents.", + "type": "string" + }, + "MetricStat": { + "$ref": "#/definitions/TargetTrackingMetricStat", + "description": "Information about the metric data to return.\n Conditional: Within each ``MetricDataQuery`` object, you must specify either ``Expression`` or ``MetricStat``, but not both." + }, + "ReturnData": { + "description": "Indicates whether to return the timestamps and raw data values of this metric. \n If you use any math expressions, specify ``true`` for this value for only the final math expression that the metric specification is based on. You must specify ``false`` for ``ReturnData`` for all the other metrics and expressions used in the metric specification.\n If you are only retrieving metrics and not performing any math expressions, do not specify anything for ``ReturnData``. This sets it to its default (``true``).", + "type": "boolean" + } + }, + "type": "object" + }, + "TargetTrackingMetricDimension": { + "additionalProperties": false, + "description": "``TargetTrackingMetricDimension`` specifies a name/value pair that is part of the identity of a CloudWatch metric for the ``Dimensions`` property of the [AWS::ApplicationAutoScaling::ScalingPolicy TargetTrackingMetric](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetric.html) property type. Duplicate dimensions are not allowed.", + "properties": { + "Name": { + "description": "The name of the dimension.", + "type": "string" + }, + "Value": { + "description": "The value of the dimension.", + "type": "string" + } + }, + "type": "object" + }, + "TargetTrackingMetricStat": { + "additionalProperties": false, + "description": "This structure defines the CloudWatch metric to return, along with the statistic and unit.\n ``TargetTrackingMetricStat`` is a property of the [AWS::ApplicationAutoScaling::ScalingPolicy TargetTrackingMetricDataQuery](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricdataquery.html) property type.\n For more information about the CloudWatch terminology below, see [Amazon CloudWatch concepts](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html) in the *Amazon CloudWatch User Guide*.", + "properties": { + "Metric": { + "$ref": "#/definitions/TargetTrackingMetric", + "description": "The CloudWatch metric to return, including the metric name, namespace, and dimensions. To get the exact metric name, namespace, and dimensions, inspect the [Metric](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Metric.html) object that is returned by a call to [ListMetrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_ListMetrics.html)." + }, + "Stat": { + "description": "The statistic to return. It can include any CloudWatch statistic or extended statistic. For a list of valid values, see the table in [Statistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Statistic) in the *Amazon CloudWatch User Guide*.\n The most commonly used metric for scaling is ``Average``.", + "type": "string" + }, + "Unit": { + "description": "The unit to use for the returned data points. For a complete list of the units that CloudWatch supports, see the [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) data type in the *Amazon CloudWatch API Reference*.", + "type": "string" + } + }, + "type": "object" + }, + "TargetTrackingScalingPolicyConfiguration": { + "additionalProperties": false, + "description": "``TargetTrackingScalingPolicyConfiguration`` is a property of the [AWS::ApplicationAutoScaling::ScalingPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html) resource that specifies a target tracking scaling policy configuration for Application Auto Scaling. Use a target tracking scaling policy to adjust the capacity of the specified scalable target in response to actual workloads, so that resource utilization remains at or near the target utilization value. \n For more information, see [Target tracking scaling policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html) in the *Application Auto Scaling User Guide*.", + "properties": { + "CustomizedMetricSpecification": { + "$ref": "#/definitions/CustomizedMetricSpecification", + "description": "A customized metric. You can specify either a predefined metric or a customized metric." + }, + "DisableScaleIn": { + "description": "Indicates whether scale in by the target tracking scaling policy is disabled. If the value is ``true``, scale in is disabled and the target tracking scaling policy won't remove capacity from the scalable target. Otherwise, scale in is enabled and the target tracking scaling policy can remove capacity from the scalable target. The default value is ``false``.", + "type": "boolean" + }, + "PredefinedMetricSpecification": { + "$ref": "#/definitions/PredefinedMetricSpecification", + "description": "A predefined metric. You can specify either a predefined metric or a customized metric." + }, + "ScaleInCooldown": { + "description": "The amount of time, in seconds, after a scale-in activity completes before another scale-in activity can start. For more information and for default values, see [Define cooldown periods](https://docs.aws.amazon.com/autoscaling/application/userguide/target-tracking-scaling-policy-overview.html#target-tracking-cooldown) in the *Application Auto Scaling User Guide*.", + "type": "integer" + }, + "ScaleOutCooldown": { + "description": "The amount of time, in seconds, to wait for a previous scale-out activity to take effect. For more information and for default values, see [Define cooldown periods](https://docs.aws.amazon.com/autoscaling/application/userguide/target-tracking-scaling-policy-overview.html#target-tracking-cooldown) in the *Application Auto Scaling User Guide*.", + "type": "integer" + }, + "TargetValue": { + "description": "The target value for the metric. Although this property accepts numbers of type Double, it won't accept values that are either too small or too large. Values must be in the range of -2^360 to 2^360. The value must be a valid number based on the choice of metric. For example, if the metric is CPU utilization, then the target value is a percent value that represents how much of the CPU can be used before scaling out.", + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + } + }, + "description": "The ``AWS::ApplicationAutoScaling::ScalingPolicy`` resource defines a scaling policy that Application Auto Scaling uses to adjust the capacity of a scalable target. \n For more information, see [Target tracking scaling policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html) and [Step scaling policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html) in the *Application Auto Scaling User Guide*.", + "handlers": { + "create": { + "permissions": [ + "application-autoscaling:DescribeScalingPolicies", + "application-autoscaling:PutScalingPolicy", + "cloudwatch:GetMetricData" + ] + }, + "delete": { + "permissions": [ + "application-autoscaling:DescribeScalingPolicies", + "application-autoscaling:DeleteScalingPolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ServiceNamespace": { + "description": "The name of the service", + "type": "string" + } + }, + "required": [ + "ServiceNamespace" + ] + }, + "permissions": [ + "application-autoscaling:DescribeScalingPolicies" + ] + }, + "read": { + "permissions": [ + "application-autoscaling:DescribeScalingPolicies" + ] + }, + "update": { + "permissions": [ + "application-autoscaling:DescribeScalingPolicies", + "application-autoscaling:PutScalingPolicy", + "cloudwatch:GetMetricData" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn", + "/properties/ScalableDimension" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "PolicyName": { + "description": "The name of the scaling policy.\n Updates to the name of a target tracking scaling policy are not supported, unless you also update the metric used for scaling. To change only a target tracking scaling policy's name, first delete the policy by removing the existing ``AWS::ApplicationAutoScaling::ScalingPolicy`` resource from the template and updating the stack. Then, recreate the resource with the same settings and a different name.", + "type": "string" + }, + "PolicyType": { + "description": "The scaling policy type.\n The following policy types are supported: \n ``TargetTrackingScaling``\u2014Not supported for Amazon EMR\n ``StepScaling``\u2014Not supported for DynamoDB, Amazon Comprehend, Lambda, Amazon Keyspaces, Amazon MSK, Amazon ElastiCache, or Neptune.", + "type": "string" + }, + "PredictiveScalingPolicyConfiguration": { + "$ref": "#/definitions/PredictiveScalingPolicyConfiguration", + "description": "The predictive scaling policy configuration." + }, + "ResourceId": { + "description": "The identifier of the resource associated with the scaling policy. This string consists of the resource type and unique identifier.\n + ECS service - The resource type is ``service`` and the unique identifier is the cluster name and service name. Example: ``service/my-cluster/my-service``.\n + Spot Fleet - The resource type is ``spot-fleet-request`` and the unique identifier is the Spot Fleet request ID. Example: ``spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE``.\n + EMR cluster - The resource type is ``instancegroup`` and the unique identifier is the cluster ID and instance group ID. Example: ``instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0``.\n + AppStream 2.0 fleet - The resource type is ``fleet`` and the unique identifier is the fleet name. Example: ``fleet/sample-fleet``.\n + DynamoDB table - The resource type is ``table`` and the unique identifier is the table name. Example: ``table/my-table``.\n + DynamoDB global secondary index - The resource type is ``index`` and the unique identifier is the index name. Example: ``table/my-table/index/my-table-index``.\n + Aurora DB cluster - The resource type is ``cluster`` and the unique identifier is the cluster name. Example: ``cluster:my-db-cluster``.\n + SageMaker endpoint variant - The resource type is ``variant`` and the unique identifier is the resource ID. Example: ``endpoint/my-end-point/variant/KMeansClustering``.\n + Custom resources are not supported with a resource type. This parameter must specify the ``OutputValue`` from the CloudFormation template stack used to access the resources. The unique identifier is defined by the service provider. More information is available in our [GitHub repository](https://docs.aws.amazon.com/https://github.com/aws/aws-auto-scaling-custom-resource).\n + Amazon Comprehend document classification endpoint - The resource type and unique identifier are specified using the endpoint ARN. Example: ``arn:aws:comprehend:us-west-2:123456789012:document-classifier-endpoint/EXAMPLE``.\n + Amazon Comprehend entity recognizer endpoint - The resource type and unique identifier are specified using the endpoint ARN. Example: ``arn:aws:comprehend:us-west-2:123456789012:entity-recognizer-endpoint/EXAMPLE``.\n + Lambda provisioned concurrency - The resource type is ``function`` and the unique identifier is the function name with a function version or alias name suffix that is not ``$LATEST``. Example: ``function:my-function:prod`` or ``function:my-function:1``.\n + Amazon Keyspaces table - The resource type is ``table`` and the unique identifier is the table name. Example: ``keyspace/mykeyspace/table/mytable``.\n + Amazon MSK cluster - The resource type and unique identifier are specified using the cluster ARN. Example: ``arn:aws:kafka:us-east-1:123456789012:cluster/demo-cluster-1/6357e0b2-0e6a-4b86-a0b4-70df934c2e31-5``.\n + Amazon ElastiCache replication group - The resource type is ``replication-group`` and the unique identifier is the replication group name. Example: ``replication-group/mycluster``.\n + Neptune cluster - The resource type is ``cluster`` and the unique identifier is the cluster name. Example: ``cluster:mycluster``.\n + SageMaker serverless endpoint - The resource type is ``variant`` and the unique identifier is the resource ID. Example: ``endpoint/my-end-point/variant/KMeansClustering``.\n + SageMaker inference component - The resource type is ``inference-component`` and the unique identifier is the resource ID. Example: ``inference-component/my-inference-component``.\n + Pool of WorkSpaces - The resource type is ``workspacespool`` and the unique identifier is the pool ID. Example: ``workspacespool/wspool-123456``.", + "type": "string" + }, + "ScalableDimension": { + "description": "The scalable dimension. This string consists of the service namespace, resource type, and scaling property.\n + ``ecs:service:DesiredCount`` - The task count of an ECS service.\n + ``elasticmapreduce:instancegroup:InstanceCount`` - The instance count of an EMR Instance Group.\n + ``ec2:spot-fleet-request:TargetCapacity`` - The target capacity of a Spot Fleet.\n + ``appstream:fleet:DesiredCapacity`` - The capacity of an AppStream 2.0 fleet.\n + ``dynamodb:table:ReadCapacityUnits`` - The provisioned read capacity for a DynamoDB table.\n + ``dynamodb:table:WriteCapacityUnits`` - The provisioned write capacity for a DynamoDB table.\n + ``dynamodb:index:ReadCapacityUnits`` - The provisioned read capacity for a DynamoDB global secondary index.\n + ``dynamodb:index:WriteCapacityUnits`` - The provisioned write capacity for a DynamoDB global secondary index.\n + ``rds:cluster:ReadReplicaCount`` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora PostgreSQL-compatible edition.\n + ``sagemaker:variant:DesiredInstanceCount`` - The number of EC2 instances for a SageMaker model endpoint variant.\n + ``custom-resource:ResourceType:Property`` - The scalable dimension for a custom resource provided by your own application or service.\n + ``comprehend:document-classifier-endpoint:DesiredInferenceUnits`` - The number of inference units for an Amazon Comprehend document classification endpoint.\n + ``comprehend:entity-recognizer-endpoint:DesiredInferenceUnits`` - The number of inference units for an Amazon Comprehend entity recognizer endpoint.\n + ``lambda:function:ProvisionedConcurrency`` - The provisioned concurrency for a Lambda function.\n + ``cassandra:table:ReadCapacityUnits`` - The provisioned read capacity for an Amazon Keyspaces table.\n + ``cassandra:table:WriteCapacityUnits`` - The provisioned write capacity for an Amazon Keyspaces table.\n + ``kafka:broker-storage:VolumeSize`` - The provisioned volume size (in GiB) for brokers in an Amazon MSK cluster.\n + ``elasticache:replication-group:NodeGroups`` - The number of node groups for an Amazon ElastiCache replication group.\n + ``elasticache:replication-group:Replicas`` - The number of replicas per node group for an Amazon ElastiCache replication group.\n + ``neptune:cluster:ReadReplicaCount`` - The count of read replicas in an Amazon Neptune DB cluster.\n + ``sagemaker:variant:DesiredProvisionedConcurrency`` - The provisioned concurrency for a SageMaker serverless endpoint.\n + ``sagemaker:inference-component:DesiredCopyCount`` - The number of copies across an endpoint for a SageMaker inference component.\n + ``workspaces:workspacespool:DesiredUserSessions`` - The number of user sessions for the WorkSpaces in the pool.", + "type": "string" + }, + "ScalingTargetId": { + "description": "The CloudFormation-generated ID of an Application Auto Scaling scalable target. For more information about the ID, see the Return Value section of the ``AWS::ApplicationAutoScaling::ScalableTarget`` resource.\n You must specify either the ``ScalingTargetId`` property, or the ``ResourceId``, ``ScalableDimension``, and ``ServiceNamespace`` properties, but not both.", + "type": "string" + }, + "ServiceNamespace": { + "description": "The namespace of the AWS service that provides the resource, or a ``custom-resource``.", + "type": "string" + }, + "StepScalingPolicyConfiguration": { + "$ref": "#/definitions/StepScalingPolicyConfiguration", + "description": "A step scaling policy." + }, + "TargetTrackingScalingPolicyConfiguration": { + "$ref": "#/definitions/TargetTrackingScalingPolicyConfiguration", + "description": "A target tracking scaling policy." + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "PolicyName", + "PolicyType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ApplicationAutoScaling::ScalingPolicy", + "writeOnlyProperties": [ + "/properties/TargetTrackingScalingPolicyConfiguration/PredefinedMetricSpecification/ResourceLabel", + "/properties/ScalingTargetId" + ] +} diff --git a/src/schema/aws-applicationinsights-application.json b/src/schema/aws-applicationinsights-application.json index 20f46408..a398f9d5 100644 --- a/src/schema/aws-applicationinsights-application.json +++ b/src/schema/aws-applicationinsights-application.json @@ -1,813 +1,813 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceGroupName", - "/properties/GroupingType" - ], - "definitions": { - "Alarm": { - "additionalProperties": false, - "description": "A CloudWatch alarm to be monitored for the component.", - "properties": { - "AlarmName": { - "description": "The name of the CloudWatch alarm to be monitored for the component.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Severity": { - "description": "Indicates the degree of outage when the alarm goes off.", - "enum": [ - "HIGH", - "MEDIUM", - "LOW" - ], - "type": "string" - } - }, - "required": [ - "AlarmName" - ], - "type": "object" - }, - "AlarmMetric": { - "additionalProperties": false, - "description": "A metric to be monitored for the component.", - "properties": { - "AlarmMetricName": { - "description": "The name of the metric to be monitored for the component.", - "type": "string" - } - }, - "required": [ - "AlarmMetricName" - ], - "type": "object" - }, - "ComponentConfiguration": { - "additionalProperties": false, - "description": "The configuration settings of the component.", - "properties": { - "ConfigurationDetails": { - "$ref": "#/definitions/ConfigurationDetails", - "description": "The configuration settings" - }, - "SubComponentTypeConfigurations": { - "description": "Sub component configurations of the component.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/SubComponentTypeConfiguration" - }, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "ComponentMonitoringSetting": { - "additionalProperties": false, - "description": "The monitoring setting of the component.", - "oneOf": [ - { - "required": [ - "ComponentName" - ] - }, - { - "required": [ - "ComponentARN" - ] - } - ], - "properties": { - "ComponentARN": { - "description": "The ARN of the compnonent.", - "maxLength": 300, - "minLength": 20, - "pattern": "^arn:aws(-[\\w]+)*:[\\w\\d-]+:([\\w\\d-]*)?:[\\w\\d_-]*([:/].+)*$", - "type": "string" - }, - "ComponentConfigurationMode": { - "description": "The component monitoring configuration mode.", - "enum": [ - "DEFAULT", - "DEFAULT_WITH_OVERWRITE", - "CUSTOM" - ], - "type": "string" - }, - "ComponentName": { - "description": "The name of the component.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[\\d\\w\\-_.+]*$", - "type": "string" - }, - "CustomComponentConfiguration": { - "$ref": "#/definitions/ComponentConfiguration", - "description": "The monitoring configuration of the component." - }, - "DefaultOverwriteComponentConfiguration": { - "$ref": "#/definitions/ComponentConfiguration", - "description": "The overwritten settings on default component monitoring configuration." - }, - "Tier": { - "description": "The tier of the application component.", - "pattern": "^[A-Z][[A-Z]_]*$", - "type": "string" - } - }, - "required": [ - "Tier", - "ComponentConfigurationMode" - ], - "type": "object" - }, - "ConfigurationDetails": { - "additionalProperties": false, - "description": "The configuration settings.", - "properties": { - "AlarmMetrics": { - "description": "A list of metrics to monitor for the component.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/AlarmMetric" - }, - "type": "array" - }, - "Alarms": { - "description": "A list of alarms to monitor for the component.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Alarm" - }, - "type": "array" - }, - "HAClusterPrometheusExporter": { - "$ref": "#/definitions/HAClusterPrometheusExporter", - "description": "The HA cluster Prometheus Exporter settings." - }, - "HANAPrometheusExporter": { - "$ref": "#/definitions/HANAPrometheusExporter", - "description": "The HANA DB Prometheus Exporter settings." - }, - "JMXPrometheusExporter": { - "$ref": "#/definitions/JMXPrometheusExporter", - "description": "The JMX Prometheus Exporter settings." - }, - "Logs": { - "description": "A list of logs to monitor for the component.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Log" - }, - "type": "array" - }, - "NetWeaverPrometheusExporter": { - "$ref": "#/definitions/NetWeaverPrometheusExporter", - "description": "The NetWeaver Prometheus Exporter settings." - }, - "Processes": { - "description": "A list of processes to monitor for the component. Only Windows EC2 instances can have a processes section.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Process" - }, - "type": "array" - }, - "SQLServerPrometheusExporter": { - "$ref": "#/definitions/SQLServerPrometheusExporter", - "description": "The SQL Prometheus Exporter settings." - }, - "WindowsEvents": { - "description": "A list of Windows Events to log.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/WindowsEvent" - }, - "type": "array" - } - }, - "type": "object" - }, - "CustomComponent": { - "additionalProperties": false, - "description": "The custom grouped component.", - "properties": { - "ComponentName": { - "description": "The name of the component.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[\\d\\w\\-_.+]*$", - "type": "string" - }, - "ResourceList": { - "description": "The list of resource ARNs that belong to the component.", - "insertionOrder": true, - "items": { - "maxLength": 300, - "minLength": 20, - "pattern": "^arn:aws(-[\\w]+)*:[\\w\\d-]+:([\\w\\d-]*)?:[\\w\\d_-]*([:/].+)*$", - "type": "string" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "ComponentName", - "ResourceList" - ], - "type": "object" - }, - "EventLevel": { - "description": "The level of event to log.", - "enum": [ - "INFORMATION", - "WARNING", - "ERROR", - "CRITICAL", - "VERBOSE" - ], - "type": "string" - }, - "HAClusterPrometheusExporter": { - "additionalProperties": false, - "description": "The HA cluster Prometheus Exporter settings.", - "properties": { - "PrometheusPort": { - "description": "Prometheus exporter port.", - "type": "string" - } - }, - "type": "object" - }, - "HANAPrometheusExporter": { - "additionalProperties": false, - "description": "The HANA DB Prometheus Exporter settings.", - "properties": { - "AgreeToInstallHANADBClient": { - "description": "A flag which indicates agreeing to install SAP HANA DB client.", - "type": "boolean" - }, - "HANAPort": { - "description": "The HANA DB port.", - "type": "string" - }, - "HANASID": { - "description": "HANA DB SID.", - "type": "string" - }, - "HANASecretName": { - "description": "The secret name which manages the HANA DB credentials e.g. {\n \"username\": \"<>\",\n \"password\": \"<>\"\n}.", - "type": "string" - }, - "PrometheusPort": { - "description": "Prometheus exporter port.", - "type": "string" - } - }, - "required": [ - "HANASID", - "HANAPort", - "HANASecretName", - "AgreeToInstallHANADBClient" - ], - "type": "object" - }, - "JMXPrometheusExporter": { - "additionalProperties": false, - "description": "The JMX Prometheus Exporter settings.", - "properties": { - "HostPort": { - "description": "Java agent host port", - "type": "string" - }, - "JMXURL": { - "description": "JMX service URL.", - "type": "string" - }, - "PrometheusPort": { - "description": "Prometheus exporter port.", - "type": "string" - } - }, - "type": "object" - }, - "Log": { - "additionalProperties": false, - "description": "A log to be monitored for the component.", - "properties": { - "Encoding": { - "description": "The type of encoding of the logs to be monitored.", - "enum": [ - "utf-8", - "utf-16", - "ascii" - ], - "type": "string" - }, - "LogGroupName": { - "description": "The CloudWatch log group name to be associated to the monitored log.", - "maxLength": 512, - "minLength": 1, - "pattern": "[\\.\\-_/#A-Za-z0-9]+", - "type": "string" - }, - "LogPath": { - "description": "The path of the logs to be monitored.", - "maxLength": 260, - "minLength": 1, - "pattern": "^([a-zA-Z]:\\\\[\\\\\\S|*\\S]?.*|/[^\"']*)$", - "type": "string" - }, - "LogType": { - "description": "The log type decides the log patterns against which Application Insights analyzes the log.", - "pattern": "^[A-Z][[A-Z]_]*$", - "type": "string" - }, - "PatternSet": { - "description": "The name of the log pattern set.", - "maxLength": 30, - "minLength": 1, - "pattern": "[a-zA-Z0-9.-_]*", - "type": "string" - } - }, - "required": [ - "LogType" - ], - "type": "object" - }, - "LogPattern": { - "additionalProperties": false, - "description": "The log pattern.", - "properties": { - "Pattern": { - "description": "The log pattern.", - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "PatternName": { - "description": "The name of the log pattern.", - "maxLength": 50, - "minLength": 1, - "pattern": "[a-zA-Z0-9.-_]*", - "type": "string" - }, - "Rank": { - "description": "Rank of the log pattern.", - "type": "integer" - } - }, - "required": [ - "PatternName", - "Pattern", - "Rank" - ], - "type": "object" - }, - "LogPatternSet": { - "additionalProperties": false, - "description": "The log pattern set.", - "properties": { - "LogPatterns": { - "description": "The log patterns of a set.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/LogPattern" - }, - "minItems": 1, - "type": "array" - }, - "PatternSetName": { - "description": "The name of the log pattern set.", - "maxLength": 30, - "minLength": 1, - "pattern": "[a-zA-Z0-9.-_]*", - "type": "string" - } - }, - "required": [ - "PatternSetName", - "LogPatterns" - ], - "type": "object" - }, - "NetWeaverPrometheusExporter": { - "additionalProperties": false, - "description": "The NetWeaver Prometheus Exporter Settings.", - "properties": { - "InstanceNumbers": { - "description": "SAP instance numbers for ASCS, ERS, and App Servers.", - "items": { - "maxLength": 2, - "minLength": 1, - "pattern": "\\b([0-9]|[0-9][0-9])\\b", - "type": "string" - }, - "type": "array" - }, - "PrometheusPort": { - "description": "Prometheus exporter port.", - "type": "string" - }, - "SAPSID": { - "description": "SAP NetWeaver SID.", - "type": "string" - } - }, - "required": [ - "SAPSID", - "InstanceNumbers" - ], - "type": "object" - }, - "Process": { - "additionalProperties": false, - "description": "A process to be monitored for the component.", - "properties": { - "AlarmMetrics": { - "description": "A list of metrics to monitor for the component.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/AlarmMetric" - }, - "type": "array" - }, - "ProcessName": { - "description": "The name of the process to be monitored for the component.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_,-]+$", - "type": "string" - } - }, - "required": [ - "ProcessName", - "AlarmMetrics" - ], - "type": "object" - }, - "SQLServerPrometheusExporter": { - "additionalProperties": false, - "description": "The SQL prometheus exporter settings.", - "properties": { - "PrometheusPort": { - "description": "Prometheus exporter port.", - "type": "string" - }, - "SQLSecretName": { - "description": "Secret name which managers SQL exporter connection. e.g. {\"data_source_name\": \"sqlserver://:@localhost:1433\"}", - "type": "string" - } - }, - "required": [ - "PrometheusPort", - "SQLSecretName" - ], - "type": "object" - }, - "SubComponentConfigurationDetails": { - "additionalProperties": false, - "description": "The configuration settings of sub components.", - "properties": { - "AlarmMetrics": { - "description": "A list of metrics to monitor for the component.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/AlarmMetric" - }, - "type": "array" - }, - "Logs": { - "description": "A list of logs to monitor for the component.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Log" - }, - "type": "array" - }, - "Processes": { - "description": "A list of processes to monitor for the component. Only Windows EC2 instances can have a processes section.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Process" - }, - "type": "array" - }, - "WindowsEvents": { - "description": "A list of Windows Events to log.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/WindowsEvent" - }, - "type": "array" - } - }, - "type": "object" - }, - "SubComponentTypeConfiguration": { - "additionalProperties": false, - "description": "One type sub component configurations for the component.", - "properties": { - "SubComponentConfigurationDetails": { - "$ref": "#/definitions/SubComponentConfigurationDetails", - "description": "The configuration settings of sub components." - }, - "SubComponentType": { - "description": "The sub component type.", - "enum": [ - "AWS::EC2::Instance", - "AWS::EC2::Volume" - ], - "type": "string" - } - }, - "required": [ - "SubComponentType", - "SubComponentConfigurationDetails" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "WindowsEvent": { - "additionalProperties": false, - "description": "A Windows Event to be monitored for the component.", - "properties": { - "EventLevels": { - "description": "The levels of event to log. ", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/EventLevel" - }, - "minItems": 1, - "type": "array" - }, - "EventName": { - "description": "The type of Windows Events to log.", - "maxLength": 260, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_ \\\\/-]+$", - "type": "string" - }, - "LogGroupName": { - "description": "The CloudWatch log group name to be associated to the monitored log.", - "maxLength": 512, - "minLength": 1, - "pattern": "[\\.\\-_/#A-Za-z0-9]+", - "type": "string" - }, - "PatternSet": { - "description": "The name of the log pattern set.", - "maxLength": 30, - "minLength": 1, - "pattern": "[a-zA-Z0-9.-_]*", - "type": "string" - } - }, - "required": [ - "LogGroupName", - "EventName", - "EventLevels" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::ApplicationInsights::Application", - "handlers": { - "create": { - "permissions": [ - "applicationinsights:CreateApplication", - "applicationinsights:DescribeApplication", - "applicationinsights:CreateComponent", - "applicationinsights:DescribeComponent", - "applicationinsights:CreateLogPattern", - "applicationinsights:DescribeLogPattern", - "applicationinsights:DescribeComponentConfigurationRecommendation", - "applicationinsights:UpdateComponentConfiguration", - "applicationinsights:ListComponents", - "applicationinsights:TagResource", - "ec2:DescribeInstances", - "ec2:DescribeVolumes", - "rds:DescribeDBInstances", - "rds:DescribeDBClusters", - "sqs:ListQueues", - "elasticloadbalancing:DescribeLoadBalancers", - "elasticloadbalancing:DescribeTargetGroups", - "elasticloadbalancing:DescribeTargetHealth", - "autoscaling:DescribeAutoScalingGroups", - "lambda:ListFunctions", - "dynamodb:ListTables", - "s3:ListAllMyBuckets", - "sns:ListTopics", - "states:ListStateMachines", - "apigateway:GET", - "ecs:ListClusters", - "ecs:DescribeTaskDefinition", - "ecs:ListServices", - "ecs:ListTasks", - "eks:ListClusters", - "eks:ListNodegroups", - "fsx:DescribeFileSystems", - "logs:DescribeLogGroups", - "elasticfilesystem:DescribeFileSystems" - ], - "timeoutInMinutes": 600 - }, - "delete": { - "permissions": [ - "applicationinsights:DeleteApplication", - "applicationinsights:DescribeApplication" - ] - }, - "list": { - "permissions": [ - "applicationinsights:ListApplications", - "applicationinsights:DescribeApplication", - "applicationinsights:ListTagsForResource", - "applicationinsights:DescribeComponent", - "applicationinsights:ListComponents", - "applicationinsights:DescribeLogPattern", - "applicationinsights:ListLogPatterns", - "applicationinsights:ListLogPatternSets" - ] - }, - "read": { - "permissions": [ - "applicationinsights:DescribeApplication", - "applicationinsights:ListTagsForResource", - "applicationinsights:DescribeComponent", - "applicationinsights:ListComponents", - "applicationinsights:DescribeLogPattern", - "applicationinsights:ListLogPatterns", - "applicationinsights:ListLogPatternSets" - ] - }, - "update": { - "permissions": [ - "applicationinsights:CreateApplication", - "applicationinsights:DescribeApplication", - "applicationinsights:UpdateApplication", - "applicationinsights:TagResource", - "applicationinsights:UntagResource", - "applicationinsights:ListTagsForResource", - "applicationinsights:CreateComponent", - "applicationinsights:DescribeComponent", - "applicationinsights:DeleteComponent", - "applicationinsights:ListComponents", - "applicationinsights:CreateLogPattern", - "applicationinsights:DeleteLogPattern", - "applicationinsights:DescribeLogPattern", - "applicationinsights:ListLogPatterns", - "applicationinsights:ListLogPatternSets", - "applicationinsights:UpdateLogPattern", - "applicationinsights:DescribeComponentConfiguration", - "applicationinsights:DescribeComponentConfigurationRecommendation", - "applicationinsights:UpdateComponentConfiguration" - ], - "timeoutInMinutes": 600 - } - }, - "primaryIdentifier": [ - "/properties/ApplicationARN" - ], - "properties": { - "ApplicationARN": { - "description": "The ARN of the ApplicationInsights application.", - "type": "string" - }, - "AttachMissingPermission": { - "description": "If set to true, the managed policies for SSM and CW will be attached to the instance roles if they are missing", - "type": "boolean" - }, - "AutoConfigurationEnabled": { - "description": "If set to true, application will be configured with recommended monitoring configuration.", - "type": "boolean" - }, - "CWEMonitorEnabled": { - "description": "Indicates whether Application Insights can listen to CloudWatch events for the application resources.", - "type": "boolean" - }, - "ComponentMonitoringSettings": { - "description": "The monitoring settings of the components.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ComponentMonitoringSetting" - }, - "minItems": 1, - "type": "array" - }, - "CustomComponents": { - "description": "The custom grouped components.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/CustomComponent" - }, - "minItems": 1, - "type": "array" - }, - "GroupingType": { - "description": "The grouping type of the application", - "enum": [ - "ACCOUNT_BASED" - ], - "type": "string" - }, - "LogPatternSets": { - "description": "The log pattern sets.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/LogPatternSet" - }, - "minItems": 1, - "type": "array" - }, - "OpsCenterEnabled": { - "description": "When set to true, creates opsItems for any problems detected on an application.", - "type": "boolean" - }, - "OpsItemSNSTopicArn": { - "description": "The SNS topic provided to Application Insights that is associated to the created opsItem.", - "maxLength": 300, - "minLength": 20, - "pattern": "^arn:aws(-[\\w]+)*:[\\w\\d-]+:([\\w\\d-]*)?:[\\w\\d_-]*([:/].+)*$", - "type": "string" - }, - "ResourceGroupName": { - "description": "The name of the resource group.", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z0-9.-_]*", - "type": "string" - }, - "SNSNotificationArn": { - "description": "Application Insights sends notifications to this SNS topic whenever there is a problem update in the associated application.", - "maxLength": 300, - "minLength": 20, - "pattern": "^arn:aws(-[\\w]+)*:[\\w\\d-]+:([\\w\\d-]*)?:[\\w\\d_-]*([:/].+)*$", - "type": "string" - }, - "Tags": { - "description": "The tags of Application Insights application.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Tag" - }, - "minItems": 1, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ApplicationARN" - ], - "required": [ - "ResourceGroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-applicationinsights.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "applicationinsights:ListTagsForResource", - "applicationinsights:TagResource", - "applicationinsights:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ApplicationInsights::Application", - "writeOnlyProperties": [ - "/properties/ComponentMonitoringSettings", - "/properties/LogPatternSets", - "/properties/CustomComponents", - "/properties/GroupingType", - "/properties/OpsItemSNSTopicArn", - "/properties/SNSNotificationArn", - "/properties/AttachMissingPermission" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceGroupName", + "/properties/GroupingType" + ], + "definitions": { + "Alarm": { + "additionalProperties": false, + "description": "A CloudWatch alarm to be monitored for the component.", + "properties": { + "AlarmName": { + "description": "The name of the CloudWatch alarm to be monitored for the component.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Severity": { + "description": "Indicates the degree of outage when the alarm goes off.", + "enum": [ + "HIGH", + "MEDIUM", + "LOW" + ], + "type": "string" + } + }, + "required": [ + "AlarmName" + ], + "type": "object" + }, + "AlarmMetric": { + "additionalProperties": false, + "description": "A metric to be monitored for the component.", + "properties": { + "AlarmMetricName": { + "description": "The name of the metric to be monitored for the component.", + "type": "string" + } + }, + "required": [ + "AlarmMetricName" + ], + "type": "object" + }, + "ComponentConfiguration": { + "additionalProperties": false, + "description": "The configuration settings of the component.", + "properties": { + "ConfigurationDetails": { + "$ref": "#/definitions/ConfigurationDetails", + "description": "The configuration settings" + }, + "SubComponentTypeConfigurations": { + "description": "Sub component configurations of the component.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/SubComponentTypeConfiguration" + }, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "ComponentMonitoringSetting": { + "additionalProperties": false, + "description": "The monitoring setting of the component.", + "oneOf": [ + { + "required": [ + "ComponentName" + ] + }, + { + "required": [ + "ComponentARN" + ] + } + ], + "properties": { + "ComponentARN": { + "description": "The ARN of the compnonent.", + "maxLength": 300, + "minLength": 20, + "pattern": "^arn:aws(-[\\w]+)*:[\\w\\d-]+:([\\w\\d-]*)?:[\\w\\d_-]*([:/].+)*$", + "type": "string" + }, + "ComponentConfigurationMode": { + "description": "The component monitoring configuration mode.", + "enum": [ + "DEFAULT", + "DEFAULT_WITH_OVERWRITE", + "CUSTOM" + ], + "type": "string" + }, + "ComponentName": { + "description": "The name of the component.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\d\\w\\-_.+]*$", + "type": "string" + }, + "CustomComponentConfiguration": { + "$ref": "#/definitions/ComponentConfiguration", + "description": "The monitoring configuration of the component." + }, + "DefaultOverwriteComponentConfiguration": { + "$ref": "#/definitions/ComponentConfiguration", + "description": "The overwritten settings on default component monitoring configuration." + }, + "Tier": { + "description": "The tier of the application component.", + "pattern": "^[A-Z][[A-Z]_]*$", + "type": "string" + } + }, + "required": [ + "Tier", + "ComponentConfigurationMode" + ], + "type": "object" + }, + "ConfigurationDetails": { + "additionalProperties": false, + "description": "The configuration settings.", + "properties": { + "AlarmMetrics": { + "description": "A list of metrics to monitor for the component.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AlarmMetric" + }, + "type": "array" + }, + "Alarms": { + "description": "A list of alarms to monitor for the component.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Alarm" + }, + "type": "array" + }, + "HAClusterPrometheusExporter": { + "$ref": "#/definitions/HAClusterPrometheusExporter", + "description": "The HA cluster Prometheus Exporter settings." + }, + "HANAPrometheusExporter": { + "$ref": "#/definitions/HANAPrometheusExporter", + "description": "The HANA DB Prometheus Exporter settings." + }, + "JMXPrometheusExporter": { + "$ref": "#/definitions/JMXPrometheusExporter", + "description": "The JMX Prometheus Exporter settings." + }, + "Logs": { + "description": "A list of logs to monitor for the component.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Log" + }, + "type": "array" + }, + "NetWeaverPrometheusExporter": { + "$ref": "#/definitions/NetWeaverPrometheusExporter", + "description": "The NetWeaver Prometheus Exporter settings." + }, + "Processes": { + "description": "A list of processes to monitor for the component. Only Windows EC2 instances can have a processes section.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Process" + }, + "type": "array" + }, + "SQLServerPrometheusExporter": { + "$ref": "#/definitions/SQLServerPrometheusExporter", + "description": "The SQL Prometheus Exporter settings." + }, + "WindowsEvents": { + "description": "A list of Windows Events to log.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/WindowsEvent" + }, + "type": "array" + } + }, + "type": "object" + }, + "CustomComponent": { + "additionalProperties": false, + "description": "The custom grouped component.", + "properties": { + "ComponentName": { + "description": "The name of the component.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\d\\w\\-_.+]*$", + "type": "string" + }, + "ResourceList": { + "description": "The list of resource ARNs that belong to the component.", + "insertionOrder": true, + "items": { + "maxLength": 300, + "minLength": 20, + "pattern": "^arn:aws(-[\\w]+)*:[\\w\\d-]+:([\\w\\d-]*)?:[\\w\\d_-]*([:/].+)*$", + "type": "string" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "ComponentName", + "ResourceList" + ], + "type": "object" + }, + "EventLevel": { + "description": "The level of event to log.", + "enum": [ + "INFORMATION", + "WARNING", + "ERROR", + "CRITICAL", + "VERBOSE" + ], + "type": "string" + }, + "HAClusterPrometheusExporter": { + "additionalProperties": false, + "description": "The HA cluster Prometheus Exporter settings.", + "properties": { + "PrometheusPort": { + "description": "Prometheus exporter port.", + "type": "string" + } + }, + "type": "object" + }, + "HANAPrometheusExporter": { + "additionalProperties": false, + "description": "The HANA DB Prometheus Exporter settings.", + "properties": { + "AgreeToInstallHANADBClient": { + "description": "A flag which indicates agreeing to install SAP HANA DB client.", + "type": "boolean" + }, + "HANAPort": { + "description": "The HANA DB port.", + "type": "string" + }, + "HANASID": { + "description": "HANA DB SID.", + "type": "string" + }, + "HANASecretName": { + "description": "The secret name which manages the HANA DB credentials e.g. {\n \"username\": \"<>\",\n \"password\": \"<>\"\n}.", + "type": "string" + }, + "PrometheusPort": { + "description": "Prometheus exporter port.", + "type": "string" + } + }, + "required": [ + "HANASID", + "HANAPort", + "HANASecretName", + "AgreeToInstallHANADBClient" + ], + "type": "object" + }, + "JMXPrometheusExporter": { + "additionalProperties": false, + "description": "The JMX Prometheus Exporter settings.", + "properties": { + "HostPort": { + "description": "Java agent host port", + "type": "string" + }, + "JMXURL": { + "description": "JMX service URL.", + "type": "string" + }, + "PrometheusPort": { + "description": "Prometheus exporter port.", + "type": "string" + } + }, + "type": "object" + }, + "Log": { + "additionalProperties": false, + "description": "A log to be monitored for the component.", + "properties": { + "Encoding": { + "description": "The type of encoding of the logs to be monitored.", + "enum": [ + "utf-8", + "utf-16", + "ascii" + ], + "type": "string" + }, + "LogGroupName": { + "description": "The CloudWatch log group name to be associated to the monitored log.", + "maxLength": 512, + "minLength": 1, + "pattern": "[\\.\\-_/#A-Za-z0-9]+", + "type": "string" + }, + "LogPath": { + "description": "The path of the logs to be monitored.", + "maxLength": 260, + "minLength": 1, + "pattern": "^([a-zA-Z]:\\\\[\\\\\\S|*\\S]?.*|/[^\"']*)$", + "type": "string" + }, + "LogType": { + "description": "The log type decides the log patterns against which Application Insights analyzes the log.", + "pattern": "^[A-Z][[A-Z]_]*$", + "type": "string" + }, + "PatternSet": { + "description": "The name of the log pattern set.", + "maxLength": 30, + "minLength": 1, + "pattern": "[a-zA-Z0-9.-_]*", + "type": "string" + } + }, + "required": [ + "LogType" + ], + "type": "object" + }, + "LogPattern": { + "additionalProperties": false, + "description": "The log pattern.", + "properties": { + "Pattern": { + "description": "The log pattern.", + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "PatternName": { + "description": "The name of the log pattern.", + "maxLength": 50, + "minLength": 1, + "pattern": "[a-zA-Z0-9.-_]*", + "type": "string" + }, + "Rank": { + "description": "Rank of the log pattern.", + "type": "integer" + } + }, + "required": [ + "PatternName", + "Pattern", + "Rank" + ], + "type": "object" + }, + "LogPatternSet": { + "additionalProperties": false, + "description": "The log pattern set.", + "properties": { + "LogPatterns": { + "description": "The log patterns of a set.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/LogPattern" + }, + "minItems": 1, + "type": "array" + }, + "PatternSetName": { + "description": "The name of the log pattern set.", + "maxLength": 30, + "minLength": 1, + "pattern": "[a-zA-Z0-9.-_]*", + "type": "string" + } + }, + "required": [ + "PatternSetName", + "LogPatterns" + ], + "type": "object" + }, + "NetWeaverPrometheusExporter": { + "additionalProperties": false, + "description": "The NetWeaver Prometheus Exporter Settings.", + "properties": { + "InstanceNumbers": { + "description": "SAP instance numbers for ASCS, ERS, and App Servers.", + "items": { + "maxLength": 2, + "minLength": 1, + "pattern": "\\b([0-9]|[0-9][0-9])\\b", + "type": "string" + }, + "type": "array" + }, + "PrometheusPort": { + "description": "Prometheus exporter port.", + "type": "string" + }, + "SAPSID": { + "description": "SAP NetWeaver SID.", + "type": "string" + } + }, + "required": [ + "SAPSID", + "InstanceNumbers" + ], + "type": "object" + }, + "Process": { + "additionalProperties": false, + "description": "A process to be monitored for the component.", + "properties": { + "AlarmMetrics": { + "description": "A list of metrics to monitor for the component.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AlarmMetric" + }, + "type": "array" + }, + "ProcessName": { + "description": "The name of the process to be monitored for the component.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_,-]+$", + "type": "string" + } + }, + "required": [ + "ProcessName", + "AlarmMetrics" + ], + "type": "object" + }, + "SQLServerPrometheusExporter": { + "additionalProperties": false, + "description": "The SQL prometheus exporter settings.", + "properties": { + "PrometheusPort": { + "description": "Prometheus exporter port.", + "type": "string" + }, + "SQLSecretName": { + "description": "Secret name which managers SQL exporter connection. e.g. {\"data_source_name\": \"sqlserver://:@localhost:1433\"}", + "type": "string" + } + }, + "required": [ + "PrometheusPort", + "SQLSecretName" + ], + "type": "object" + }, + "SubComponentConfigurationDetails": { + "additionalProperties": false, + "description": "The configuration settings of sub components.", + "properties": { + "AlarmMetrics": { + "description": "A list of metrics to monitor for the component.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AlarmMetric" + }, + "type": "array" + }, + "Logs": { + "description": "A list of logs to monitor for the component.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Log" + }, + "type": "array" + }, + "Processes": { + "description": "A list of processes to monitor for the component. Only Windows EC2 instances can have a processes section.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Process" + }, + "type": "array" + }, + "WindowsEvents": { + "description": "A list of Windows Events to log.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/WindowsEvent" + }, + "type": "array" + } + }, + "type": "object" + }, + "SubComponentTypeConfiguration": { + "additionalProperties": false, + "description": "One type sub component configurations for the component.", + "properties": { + "SubComponentConfigurationDetails": { + "$ref": "#/definitions/SubComponentConfigurationDetails", + "description": "The configuration settings of sub components." + }, + "SubComponentType": { + "description": "The sub component type.", + "enum": [ + "AWS::EC2::Instance", + "AWS::EC2::Volume" + ], + "type": "string" + } + }, + "required": [ + "SubComponentType", + "SubComponentConfigurationDetails" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "WindowsEvent": { + "additionalProperties": false, + "description": "A Windows Event to be monitored for the component.", + "properties": { + "EventLevels": { + "description": "The levels of event to log. ", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/EventLevel" + }, + "minItems": 1, + "type": "array" + }, + "EventName": { + "description": "The type of Windows Events to log.", + "maxLength": 260, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_ \\\\/-]+$", + "type": "string" + }, + "LogGroupName": { + "description": "The CloudWatch log group name to be associated to the monitored log.", + "maxLength": 512, + "minLength": 1, + "pattern": "[\\.\\-_/#A-Za-z0-9]+", + "type": "string" + }, + "PatternSet": { + "description": "The name of the log pattern set.", + "maxLength": 30, + "minLength": 1, + "pattern": "[a-zA-Z0-9.-_]*", + "type": "string" + } + }, + "required": [ + "LogGroupName", + "EventName", + "EventLevels" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::ApplicationInsights::Application", + "handlers": { + "create": { + "permissions": [ + "applicationinsights:CreateApplication", + "applicationinsights:DescribeApplication", + "applicationinsights:CreateComponent", + "applicationinsights:DescribeComponent", + "applicationinsights:CreateLogPattern", + "applicationinsights:DescribeLogPattern", + "applicationinsights:DescribeComponentConfigurationRecommendation", + "applicationinsights:UpdateComponentConfiguration", + "applicationinsights:ListComponents", + "applicationinsights:TagResource", + "ec2:DescribeInstances", + "ec2:DescribeVolumes", + "rds:DescribeDBInstances", + "rds:DescribeDBClusters", + "sqs:ListQueues", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeTargetGroups", + "elasticloadbalancing:DescribeTargetHealth", + "autoscaling:DescribeAutoScalingGroups", + "lambda:ListFunctions", + "dynamodb:ListTables", + "s3:ListAllMyBuckets", + "sns:ListTopics", + "states:ListStateMachines", + "apigateway:GET", + "ecs:ListClusters", + "ecs:DescribeTaskDefinition", + "ecs:ListServices", + "ecs:ListTasks", + "eks:ListClusters", + "eks:ListNodegroups", + "fsx:DescribeFileSystems", + "logs:DescribeLogGroups", + "elasticfilesystem:DescribeFileSystems" + ], + "timeoutInMinutes": 600 + }, + "delete": { + "permissions": [ + "applicationinsights:DeleteApplication", + "applicationinsights:DescribeApplication" + ] + }, + "list": { + "permissions": [ + "applicationinsights:ListApplications", + "applicationinsights:DescribeApplication", + "applicationinsights:ListTagsForResource", + "applicationinsights:DescribeComponent", + "applicationinsights:ListComponents", + "applicationinsights:DescribeLogPattern", + "applicationinsights:ListLogPatterns", + "applicationinsights:ListLogPatternSets" + ] + }, + "read": { + "permissions": [ + "applicationinsights:DescribeApplication", + "applicationinsights:ListTagsForResource", + "applicationinsights:DescribeComponent", + "applicationinsights:ListComponents", + "applicationinsights:DescribeLogPattern", + "applicationinsights:ListLogPatterns", + "applicationinsights:ListLogPatternSets" + ] + }, + "update": { + "permissions": [ + "applicationinsights:CreateApplication", + "applicationinsights:DescribeApplication", + "applicationinsights:UpdateApplication", + "applicationinsights:TagResource", + "applicationinsights:UntagResource", + "applicationinsights:ListTagsForResource", + "applicationinsights:CreateComponent", + "applicationinsights:DescribeComponent", + "applicationinsights:DeleteComponent", + "applicationinsights:ListComponents", + "applicationinsights:CreateLogPattern", + "applicationinsights:DeleteLogPattern", + "applicationinsights:DescribeLogPattern", + "applicationinsights:ListLogPatterns", + "applicationinsights:ListLogPatternSets", + "applicationinsights:UpdateLogPattern", + "applicationinsights:DescribeComponentConfiguration", + "applicationinsights:DescribeComponentConfigurationRecommendation", + "applicationinsights:UpdateComponentConfiguration" + ], + "timeoutInMinutes": 600 + } + }, + "primaryIdentifier": [ + "/properties/ApplicationARN" + ], + "properties": { + "ApplicationARN": { + "description": "The ARN of the ApplicationInsights application.", + "type": "string" + }, + "AttachMissingPermission": { + "description": "If set to true, the managed policies for SSM and CW will be attached to the instance roles if they are missing", + "type": "boolean" + }, + "AutoConfigurationEnabled": { + "description": "If set to true, application will be configured with recommended monitoring configuration.", + "type": "boolean" + }, + "CWEMonitorEnabled": { + "description": "Indicates whether Application Insights can listen to CloudWatch events for the application resources.", + "type": "boolean" + }, + "ComponentMonitoringSettings": { + "description": "The monitoring settings of the components.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ComponentMonitoringSetting" + }, + "minItems": 1, + "type": "array" + }, + "CustomComponents": { + "description": "The custom grouped components.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/CustomComponent" + }, + "minItems": 1, + "type": "array" + }, + "GroupingType": { + "description": "The grouping type of the application", + "enum": [ + "ACCOUNT_BASED" + ], + "type": "string" + }, + "LogPatternSets": { + "description": "The log pattern sets.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/LogPatternSet" + }, + "minItems": 1, + "type": "array" + }, + "OpsCenterEnabled": { + "description": "When set to true, creates opsItems for any problems detected on an application.", + "type": "boolean" + }, + "OpsItemSNSTopicArn": { + "description": "The SNS topic provided to Application Insights that is associated to the created opsItem.", + "maxLength": 300, + "minLength": 20, + "pattern": "^arn:aws(-[\\w]+)*:[\\w\\d-]+:([\\w\\d-]*)?:[\\w\\d_-]*([:/].+)*$", + "type": "string" + }, + "ResourceGroupName": { + "description": "The name of the resource group.", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z0-9.-_]*", + "type": "string" + }, + "SNSNotificationArn": { + "description": "Application Insights sends notifications to this SNS topic whenever there is a problem update in the associated application.", + "maxLength": 300, + "minLength": 20, + "pattern": "^arn:aws(-[\\w]+)*:[\\w\\d-]+:([\\w\\d-]*)?:[\\w\\d_-]*([:/].+)*$", + "type": "string" + }, + "Tags": { + "description": "The tags of Application Insights application.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Tag" + }, + "minItems": 1, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ApplicationARN" + ], + "required": [ + "ResourceGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-applicationinsights.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "applicationinsights:ListTagsForResource", + "applicationinsights:TagResource", + "applicationinsights:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ApplicationInsights::Application", + "writeOnlyProperties": [ + "/properties/ComponentMonitoringSettings", + "/properties/LogPatternSets", + "/properties/CustomComponents", + "/properties/GroupingType", + "/properties/OpsItemSNSTopicArn", + "/properties/SNSNotificationArn", + "/properties/AttachMissingPermission" + ] +} diff --git a/src/schema/aws-applicationsignals-discovery.json b/src/schema/aws-applicationsignals-discovery.json new file mode 100644 index 00000000..8691b275 --- /dev/null +++ b/src/schema/aws-applicationsignals-discovery.json @@ -0,0 +1,59 @@ +{ + "additionalProperties": false, + "definitions": { + "AccountId": { + "description": "The identifier for the specified AWS account.", + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + } + }, + "description": "Resource Type definition for AWS::ApplicationSignals::Discovery", + "handlers": { + "create": { + "permissions": [ + "application-signals:StartDiscovery", + "application-signals:ListServices", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "application-signals:ListServices" + ] + }, + "list": { + "permissions": [ + "application-signals:ListServices" + ] + }, + "read": { + "permissions": [ + "application-signals:ListServices" + ] + }, + "update": { + "permissions": [ + "application-signals:ListServices" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccountId" + ], + "properties": { + "AccountId": { + "$ref": "#/definitions/AccountId" + } + }, + "readOnlyProperties": [ + "/properties/AccountId" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-applicationsignals", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ApplicationSignals::Discovery" +} diff --git a/src/schema/aws-applicationsignals-servicelevelobjective.json b/src/schema/aws-applicationsignals-servicelevelobjective.json index fb854dff..f7aeb714 100644 --- a/src/schema/aws-applicationsignals-servicelevelobjective.json +++ b/src/schema/aws-applicationsignals-servicelevelobjective.json @@ -1,503 +1,650 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "CalendarInterval": { - "additionalProperties": false, - "description": "If the interval for this service level objective is a calendar interval, this structure contains the interval specifications.", - "properties": { - "Duration": { - "$ref": "#/definitions/Duration" - }, - "DurationUnit": { - "$ref": "#/definitions/DurationUnit" - }, - "StartTime": { - "description": "Epoch time in seconds you want the first interval to start. Be sure to choose a time that configures the intervals the way that you want. For example, if you want weekly intervals starting on Mondays at 6 a.m., be sure to specify a start time that is a Monday at 6 a.m.\nAs soon as one calendar interval ends, another automatically begins.", - "minimum": 946684800, - "type": "integer" - } - }, - "required": [ - "StartTime", - "DurationUnit", - "Duration" - ], - "type": "object" - }, - "Dimension": { - "additionalProperties": false, - "description": "A dimension is a name/value pair that is part of the identity of a metric. Because dimensions are part of the unique identifier for a metric, whenever you add a unique name/value pair to one of your metrics, you are creating a new variation of that metric. For example, many Amazon EC2 metrics publish `InstanceId` as a dimension name, and the actual instance ID as the value for that dimension. You can assign up to 30 dimensions to a metric.", - "properties": { - "Name": { - "description": "The name of the dimension. Dimension names must contain only ASCII characters, must include at least one non-whitespace character, and cannot start with a colon (:). ASCII control characters are not supported as part of dimension names.", - "type": "string" - }, - "Value": { - "description": "The value of the dimension. Dimension values must contain only ASCII characters and must include at least one non-whitespace character. ASCII control characters are not supported as part of dimension values", - "type": "string" - } - }, - "required": [ - "Value", - "Name" - ], - "type": "object" - }, - "Duration": { - "description": "Specifies the duration of each calendar interval. For example, if `Duration` is 1 and `DurationUnit` is `MONTH`, each interval is one month, aligned with the calendar.", - "minimum": 1, - "type": "integer" - }, - "DurationUnit": { - "description": "Specifies the calendar interval unit.", - "enum": [ - "DAY", - "MONTH" - ], - "type": "string" - }, - "Goal": { - "additionalProperties": false, - "description": "A structure that contains the attributes that determine the goal of the SLO. This includes the time period for evaluation and the attainment threshold.", - "properties": { - "AttainmentGoal": { - "description": "The threshold that determines if the goal is being met. An attainment goal is the ratio of good periods that meet the threshold requirements to the total periods within the interval. For example, an attainment goal of 99.9% means that within your interval, you are targeting 99.9% of the periods to be in healthy state.\nIf you omit this parameter, 99 is used to represent 99% as the attainment goal.", - "type": "number" - }, - "Interval": { - "$ref": "#/definitions/Interval" - }, - "WarningThreshold": { - "description": "The percentage of remaining budget over total budget that you want to get warnings for. If you omit this parameter, the default of 50.0 is used.", - "type": "number" - } - }, - "type": "object" - }, - "Interval": { - "additionalProperties": false, - "description": "The time period used to evaluate the SLO. It can be either a calendar interval or rolling interval.\nIf you omit this parameter, a rolling interval of 7 days is used.", - "properties": { - "CalendarInterval": { - "$ref": "#/definitions/CalendarInterval" - }, - "RollingInterval": { - "$ref": "#/definitions/RollingInterval" - } - }, - "type": "object" - }, - "KeyAttributes": { - "additionalProperties": false, - "description": "This is a string-to-string map that contains information about the type of object that this SLO is related to.", - "patternProperties": { - "^.+$": { - "type": "string" - } - } - }, - "Metric": { - "additionalProperties": false, - "description": "This structure defines the metric used for a service level indicator, including the metric name, namespace, and dimensions.", - "properties": { - "Dimensions": { - "description": "An array of one or more dimensions to use to define the metric that you want to use.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Dimension" - }, - "type": "array", - "uniqueItems": false - }, - "MetricName": { - "description": "The name of the metric to use.", - "type": "string" - }, - "Namespace": { - "description": "The namespace of the metric.", - "type": "string" - } - }, - "type": "object" - }, - "MetricDataQueries": { - "description": "If this SLO monitors a CloudWatch metric or the result of a CloudWatch metric math expression, this structure includes the information about that metric or expression.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/MetricDataQuery" - }, - "type": "array", - "uniqueItems": false - }, - "MetricDataQuery": { - "additionalProperties": false, - "description": "Use this structure to define a metric or metric math expression that you want to use as for a service level objective.\nEach `MetricDataQuery` in the `MetricDataQueries` array specifies either a metric to retrieve, or a metric math expression to be performed on retrieved metrics. A single `MetricDataQueries` array can include as many as 20 `MetricDataQuery` structures in the array. The 20 structures can include as many as 10 structures that contain a `MetricStat` parameter to retrieve a metric, and as many as 10 structures that contain the `Expression` parameter to perform a math expression. Of those Expression structures, exactly one must have true as the value for `ReturnData`. The result of this expression used for the SLO.", - "properties": { - "AccountId": { - "description": "The ID of the account where the metrics are located, if this is a cross-account alarm.", - "type": "string" - }, - "Expression": { - "description": "The math expression to be performed on the returned data.", - "type": "string" - }, - "Id": { - "description": "A short name used to tie this object to the results in the response.", - "type": "string" - }, - "MetricStat": { - "$ref": "#/definitions/MetricStat", - "description": "A metric to be used directly for the SLO, or to be used in the math expression that will be used for the SLO. Within one MetricDataQuery, you must specify either Expression or MetricStat but not both." - }, - "ReturnData": { - "description": "This option indicates whether to return the timestamps and raw data values of this metric.", - "type": "boolean" - } - }, - "required": [ - "Id" - ], - "type": "object" - }, - "MetricStat": { - "additionalProperties": false, - "description": "A metric to be used directly for the SLO, or to be used in the math expression that will be used for the SLO. Within one MetricDataQuery object, you must specify either Expression or MetricStat but not both.", - "properties": { - "Metric": { - "$ref": "#/definitions/Metric" - }, - "Period": { - "description": "The granularity, in seconds, to be used for the metric.", - "type": "integer" - }, - "Stat": { - "description": "The statistic to use for comparison to the threshold. It can be any CloudWatch statistic or extended statistic.", - "type": "string" - }, - "Unit": { - "description": "If you omit Unit then all data that was collected with any unit is returned, along with the corresponding units that were specified when the data was reported to CloudWatch. If you specify a unit, the operation returns only data that was collected with that unit specified. If you specify a unit that does not match the data collected, the results of the operation are null. CloudWatch does not perform unit conversions.", - "type": "string" - } - }, - "required": [ - "Stat", - "Period", - "Metric" - ], - "type": "object" - }, - "MonitoredRequestCountMetric": { - "additionalProperties": false, - "description": "This structure defines the metric that is used as the \"good request\" or \"bad request\" value for a request-based SLO. This value observed for the metric defined in `TotalRequestCountMetric` is divided by the number found for `MonitoredRequestCountMetric` to determine the percentage of successful requests that this SLO tracks.", - "properties": { - "BadCountMetric": { - "$ref": "#/definitions/MetricDataQueries", - "description": "If you want to count \"bad requests\" to determine the percentage of successful requests for this request-based SLO, specify the metric to use as \"bad requests\" in this structure." - }, - "GoodCountMetric": { - "$ref": "#/definitions/MetricDataQueries", - "description": "If you want to count \"good requests\" to determine the percentage of successful requests for this request-based SLO, specify the metric to use as \"good requests\" in this structure." - } - }, - "type": "object" - }, - "RequestBasedSli": { - "additionalProperties": false, - "description": "This structure contains information about the performance metric that a request-based SLO monitors.", - "properties": { - "ComparisonOperator": { - "description": "The arithmetic operation used when comparing the specified metric to the threshold.", - "enum": [ - "GreaterThanOrEqualTo", - "LessThanOrEqualTo", - "LessThan", - "GreaterThan" - ], - "type": "string" - }, - "MetricThreshold": { - "description": "The value that the SLI metric is compared to.", - "type": "number" - }, - "RequestBasedSliMetric": { - "$ref": "#/definitions/RequestBasedSliMetric" - } - }, - "required": [ - "RequestBasedSliMetric" - ], - "type": "object" - }, - "RequestBasedSliMetric": { - "additionalProperties": false, - "description": "This structure contains the information about the metric that is used for a request-based SLO.", - "properties": { - "KeyAttributes": { - "$ref": "#/definitions/KeyAttributes" - }, - "MetricType": { - "description": "If the SLO monitors either the LATENCY or AVAILABILITY metric that Application Signals collects, this field displays which of those metrics is used.", - "enum": [ - "LATENCY", - "AVAILABILITY" - ], - "type": "string" - }, - "MonitoredRequestCountMetric": { - "$ref": "#/definitions/MonitoredRequestCountMetric" - }, - "OperationName": { - "description": "If the SLO monitors a specific operation of the service, this field displays that operation name.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "TotalRequestCountMetric": { - "$ref": "#/definitions/MetricDataQueries", - "description": "This structure defines the metric that is used as the \"total requests\" number for a request-based SLO. The number observed for this metric is divided by the number of \"good requests\" or \"bad requests\" that is observed for the metric defined in `MonitoredRequestCountMetric`." - } - }, - "type": "object" - }, - "RollingInterval": { - "additionalProperties": false, - "description": "If the interval is a calendar interval, this structure contains the interval specifications.", - "properties": { - "Duration": { - "$ref": "#/definitions/Duration" - }, - "DurationUnit": { - "$ref": "#/definitions/DurationUnit" - } - }, - "required": [ - "DurationUnit", - "Duration" - ], - "type": "object" - }, - "Sli": { - "additionalProperties": false, - "description": "This structure contains information about the performance metric that an SLO monitors.", - "properties": { - "ComparisonOperator": { - "description": "The arithmetic operation used when comparing the specified metric to the threshold.", - "enum": [ - "GreaterThanOrEqualTo", - "LessThanOrEqualTo", - "LessThan", - "GreaterThan" - ], - "type": "string" - }, - "MetricThreshold": { - "description": "The value that the SLI metric is compared to.", - "type": "number" - }, - "SliMetric": { - "$ref": "#/definitions/SliMetric" - } - }, - "required": [ - "SliMetric", - "MetricThreshold", - "ComparisonOperator" - ], - "type": "object" - }, - "SliMetric": { - "additionalProperties": false, - "description": "A structure that contains information about the metric that the SLO monitors.", - "properties": { - "KeyAttributes": { - "$ref": "#/definitions/KeyAttributes" - }, - "MetricDataQueries": { - "$ref": "#/definitions/MetricDataQueries" - }, - "MetricType": { - "description": "If the SLO monitors either the LATENCY or AVAILABILITY metric that Application Signals collects, this field displays which of those metrics is used.", - "enum": [ - "LATENCY", - "AVAILABILITY" - ], - "type": "string" - }, - "OperationName": { - "description": "If the SLO monitors a specific operation of the service, this field displays that operation name.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "PeriodSeconds": { - "description": "The number of seconds to use as the period for SLO evaluation. Your application's performance is compared to the SLI during each period. For each period, the application is determined to have either achieved or not achieved the necessary performance.", - "maximum": 900, - "minimum": 60, - "type": "integer" - }, - "Statistic": { - "description": "The statistic to use for comparison to the threshold. It can be any CloudWatch statistic or extended statistic", - "maxLength": 20, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "A string that you can use to assign a value. The combination of tag keys and values can help you organize and categorize your resources.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the specified tag key.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Tags": { - "description": "The list of tag keys and values associated with the resource you specified", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "description": "Resource Type definition for AWS::ApplicationSignals::ServiceLevelObjective", - "handlers": { - "create": { - "permissions": [ - "application-signals:CreateServiceLevelObjective", - "cloudwatch:GetMetricData", - "application-signals:TagResource", - "application-signals:GetServiceLevelObjective", - "application-signals:ListTagsForResource", - "iam:GetRole", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "application-signals:DeleteServiceLevelObjective", - "application-signals:UntagResource", - "application-signals:GetServiceLevelObjective" - ] - }, - "list": { - "permissions": [ - "application-signals:ListServiceLevelObjectives", - "application-signals:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "application-signals:GetServiceLevelObjective", - "application-signals:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "application-signals:UpdateServiceLevelObjective", - "cloudwatch:GetMetricData", - "application-signals:TagResource", - "application-signals:UntagResource", - "application-signals:GetServiceLevelObjective", - "application-signals:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The ARN of this SLO.", - "pattern": "^arn:[^:]*:application-signals:[^:]*:[^:]*:slo\\/[0-9A-Za-z][-._0-9A-Za-z ]{0,126}[0-9A-Za-z]$", - "type": "string" - }, - "CreatedTime": { - "description": "Epoch time in seconds of the time that this SLO was created", - "minimum": 946684800, - "type": "integer" - }, - "Description": { - "default": "No description", - "description": "An optional description for this SLO. Default is 'No description'", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "EvaluationType": { - "description": "Displays whether this is a period-based SLO or a request-based SLO.", - "enum": [ - "PeriodBased", - "RequestBased" - ], - "type": "string" - }, - "Goal": { - "$ref": "#/definitions/Goal" - }, - "LastUpdatedTime": { - "description": "Epoch time in seconds of the time that this SLO was most recently updated", - "minimum": 946684800, - "type": "integer" - }, - "Name": { - "description": "The name of this SLO.", - "pattern": "^[0-9A-Za-z][-._0-9A-Za-z ]{0,126}[0-9A-Za-z]$", - "type": "string" - }, - "RequestBasedSli": { - "$ref": "#/definitions/RequestBasedSli" - }, - "Sli": { - "$ref": "#/definitions/Sli" - }, - "Tags": { - "$ref": "#/definitions/Tags" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedTime", - "/properties/LastUpdatedTime", - "/properties/EvaluationType" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-applicationsignals", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "application-signals:ListTagsForResource", - "application-signals:TagResource", - "application-signals:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ApplicationSignals::ServiceLevelObjective" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "BurnRateConfiguration": { + "additionalProperties": false, + "description": "This object defines the length of the look-back window used to calculate one burn rate metric for this SLO. The burn rate measures how fast the service is consuming the error budget, relative to the attainment goal of the SLO. A burn rate of exactly 1 indicates that the SLO goal will be met exactly.\nFor example, if you specify 60 as the number of minutes in the look-back window, the burn rate is calculated as the following:\nburn rate = error rate over the look-back window / (1 - attainment goal percentage)", + "properties": { + "LookBackWindowMinutes": { + "description": "The number of minutes to use as the look-back window.", + "maximum": 10080, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "LookBackWindowMinutes" + ], + "type": "object" + }, + "BurnRateConfigurations": { + "description": "Each object in this array defines the length of the look-back window used to calculate one burn rate metric for this SLO. The burn rate measures how fast the service is consuming the error budget, relative to the attainment goal of the SLO.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/BurnRateConfiguration" + }, + "maxItems": 10, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CalendarInterval": { + "additionalProperties": false, + "description": "If the interval for this service level objective is a calendar interval, this structure contains the interval specifications.", + "properties": { + "Duration": { + "$ref": "#/definitions/Duration" + }, + "DurationUnit": { + "$ref": "#/definitions/DurationUnit" + }, + "StartTime": { + "description": "Epoch time in seconds you want the first interval to start. Be sure to choose a time that configures the intervals the way that you want. For example, if you want weekly intervals starting on Mondays at 6 a.m., be sure to specify a start time that is a Monday at 6 a.m.\nAs soon as one calendar interval ends, another automatically begins.", + "minimum": 946684800, + "type": "integer" + } + }, + "required": [ + "StartTime", + "DurationUnit", + "Duration" + ], + "type": "object" + }, + "DependencyConfig": { + "additionalProperties": false, + "description": "Configuration for identifying a dependency and its operation", + "properties": { + "DependencyKeyAttributes": { + "$ref": "#/definitions/DependencyKeyAttributes" + }, + "DependencyOperationName": { + "description": "When the SLO monitors a specific operation of the dependency, this field specifies the name of that operation in the dependency.", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DependencyKeyAttributes", + "DependencyOperationName" + ], + "type": "object" + }, + "DependencyKeyAttributes": { + "additionalProperties": false, + "description": "If this SLO is related to a metric collected by Application Signals, you must use this field to specify which dependency the SLO metric is related to.", + "patternProperties": { + "^.+$": { + "type": "string" + } + } + }, + "Dimension": { + "additionalProperties": false, + "description": "A dimension is a name/value pair that is part of the identity of a metric. Because dimensions are part of the unique identifier for a metric, whenever you add a unique name/value pair to one of your metrics, you are creating a new variation of that metric. For example, many Amazon EC2 metrics publish `InstanceId` as a dimension name, and the actual instance ID as the value for that dimension. You can assign up to 30 dimensions to a metric.", + "properties": { + "Name": { + "description": "The name of the dimension. Dimension names must contain only ASCII characters, must include at least one non-whitespace character, and cannot start with a colon (:). ASCII control characters are not supported as part of dimension names.", + "type": "string" + }, + "Value": { + "description": "The value of the dimension. Dimension values must contain only ASCII characters and must include at least one non-whitespace character. ASCII control characters are not supported as part of dimension values", + "type": "string" + } + }, + "required": [ + "Value", + "Name" + ], + "type": "object" + }, + "Duration": { + "description": "Specifies the duration of each interval. For example, if `Duration` is 1 and `DurationUnit` is `MONTH`, each interval is one month, aligned with the calendar.", + "minimum": 1, + "type": "integer" + }, + "DurationUnit": { + "description": "Specifies the interval unit.", + "enum": [ + "MINUTE", + "HOUR", + "DAY", + "MONTH" + ], + "type": "string" + }, + "ExclusionWindow": { + "additionalProperties": false, + "description": "This object defines a time exclusion window for this SLO. The time exclusion window is used to exclude breaching data points from affecting attainment rate, error budget, and burn rate metrics.", + "properties": { + "Reason": { + "default": "No reason", + "description": "An optional reason for scheduling this time exclusion window. Default is 'No reason'.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "RecurrenceRule": { + "$ref": "#/definitions/RecurrenceRule" + }, + "StartTime": { + "description": "The time you want the exclusion window to start at. Note that time exclusion windows can only be scheduled in the future, not the past.", + "type": "string" + }, + "Window": { + "$ref": "#/definitions/Window" + } + }, + "required": [ + "Window" + ], + "type": "object" + }, + "ExclusionWindows": { + "description": "Each object in this array defines a time exclusion window for this SLO. The time exclusion window is used to exclude breaching data points from affecting attainment rate, error budget, and burn rate metrics.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ExclusionWindow" + }, + "maxItems": 10, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "Goal": { + "additionalProperties": false, + "description": "A structure that contains the attributes that determine the goal of the SLO. This includes the time period for evaluation and the attainment threshold.", + "properties": { + "AttainmentGoal": { + "description": "The threshold that determines if the goal is being met. An attainment goal is the ratio of good periods that meet the threshold requirements to the total periods within the interval. For example, an attainment goal of 99.9% means that within your interval, you are targeting 99.9% of the periods to be in healthy state.\nIf you omit this parameter, 99 is used to represent 99% as the attainment goal.", + "type": "number" + }, + "Interval": { + "$ref": "#/definitions/Interval" + }, + "WarningThreshold": { + "description": "The percentage of remaining budget over total budget that you want to get warnings for. If you omit this parameter, the default of 50.0 is used.", + "type": "number" + } + }, + "type": "object" + }, + "Interval": { + "additionalProperties": false, + "description": "The time period used to evaluate the SLO. It can be either a calendar interval or rolling interval.\nIf you omit this parameter, a rolling interval of 7 days is used.", + "properties": { + "CalendarInterval": { + "$ref": "#/definitions/CalendarInterval" + }, + "RollingInterval": { + "$ref": "#/definitions/RollingInterval" + } + }, + "type": "object" + }, + "KeyAttributes": { + "additionalProperties": false, + "description": "This is a string-to-string map that contains information about the type of object that this SLO is related to.", + "patternProperties": { + "^.+$": { + "type": "string" + } + } + }, + "Metric": { + "additionalProperties": false, + "description": "This structure defines the metric used for a service level indicator, including the metric name, namespace, and dimensions.", + "properties": { + "Dimensions": { + "description": "An array of one or more dimensions to use to define the metric that you want to use.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Dimension" + }, + "type": "array", + "uniqueItems": false + }, + "MetricName": { + "description": "The name of the metric to use.", + "type": "string" + }, + "Namespace": { + "description": "The namespace of the metric.", + "type": "string" + } + }, + "type": "object" + }, + "MetricDataQueries": { + "description": "If this SLO monitors a CloudWatch metric or the result of a CloudWatch metric math expression, this structure includes the information about that metric or expression.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/MetricDataQuery" + }, + "type": "array", + "uniqueItems": false + }, + "MetricDataQuery": { + "additionalProperties": false, + "description": "Use this structure to define a metric or metric math expression that you want to use as for a service level objective.\nEach `MetricDataQuery` in the `MetricDataQueries` array specifies either a metric to retrieve, or a metric math expression to be performed on retrieved metrics. A single `MetricDataQueries` array can include as many as 20 `MetricDataQuery` structures in the array. The 20 structures can include as many as 10 structures that contain a `MetricStat` parameter to retrieve a metric, and as many as 10 structures that contain the `Expression` parameter to perform a math expression. Of those Expression structures, exactly one must have true as the value for `ReturnData`. The result of this expression used for the SLO.", + "properties": { + "AccountId": { + "description": "The ID of the account where the metrics are located, if this is a cross-account alarm.", + "type": "string" + }, + "Expression": { + "description": "The math expression to be performed on the returned data.", + "type": "string" + }, + "Id": { + "description": "A short name used to tie this object to the results in the response.", + "type": "string" + }, + "MetricStat": { + "$ref": "#/definitions/MetricStat", + "description": "A metric to be used directly for the SLO, or to be used in the math expression that will be used for the SLO. Within one MetricDataQuery, you must specify either Expression or MetricStat but not both." + }, + "ReturnData": { + "description": "This option indicates whether to return the timestamps and raw data values of this metric.", + "type": "boolean" + } + }, + "required": [ + "Id" + ], + "type": "object" + }, + "MetricStat": { + "additionalProperties": false, + "description": "A metric to be used directly for the SLO, or to be used in the math expression that will be used for the SLO. Within one MetricDataQuery object, you must specify either Expression or MetricStat but not both.", + "properties": { + "Metric": { + "$ref": "#/definitions/Metric" + }, + "Period": { + "description": "The granularity, in seconds, to be used for the metric.", + "type": "integer" + }, + "Stat": { + "description": "The statistic to use for comparison to the threshold. It can be any CloudWatch statistic or extended statistic.", + "type": "string" + }, + "Unit": { + "description": "If you omit Unit then all data that was collected with any unit is returned, along with the corresponding units that were specified when the data was reported to CloudWatch. If you specify a unit, the operation returns only data that was collected with that unit specified. If you specify a unit that does not match the data collected, the results of the operation are null. CloudWatch does not perform unit conversions.", + "type": "string" + } + }, + "required": [ + "Stat", + "Period", + "Metric" + ], + "type": "object" + }, + "MonitoredRequestCountMetric": { + "additionalProperties": false, + "description": "This structure defines the metric that is used as the \"good request\" or \"bad request\" value for a request-based SLO. This value observed for the metric defined in `TotalRequestCountMetric` is divided by the number found for `MonitoredRequestCountMetric` to determine the percentage of successful requests that this SLO tracks.", + "properties": { + "BadCountMetric": { + "$ref": "#/definitions/MetricDataQueries", + "description": "If you want to count \"bad requests\" to determine the percentage of successful requests for this request-based SLO, specify the metric to use as \"bad requests\" in this structure." + }, + "GoodCountMetric": { + "$ref": "#/definitions/MetricDataQueries", + "description": "If you want to count \"good requests\" to determine the percentage of successful requests for this request-based SLO, specify the metric to use as \"good requests\" in this structure." + } + }, + "type": "object" + }, + "RecurrenceRule": { + "additionalProperties": false, + "description": "This object defines how often to repeat a time exclusion window.", + "properties": { + "Expression": { + "description": "A cron or rate expression denoting how often to repeat this exclusion window.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "RequestBasedSli": { + "additionalProperties": false, + "description": "This structure contains information about the performance metric that a request-based SLO monitors.", + "properties": { + "ComparisonOperator": { + "description": "The arithmetic operation used when comparing the specified metric to the threshold.", + "enum": [ + "GreaterThanOrEqualTo", + "LessThanOrEqualTo", + "LessThan", + "GreaterThan" + ], + "type": "string" + }, + "MetricThreshold": { + "description": "The value that the SLI metric is compared to.", + "type": "number" + }, + "RequestBasedSliMetric": { + "$ref": "#/definitions/RequestBasedSliMetric" + } + }, + "required": [ + "RequestBasedSliMetric" + ], + "type": "object" + }, + "RequestBasedSliMetric": { + "additionalProperties": false, + "description": "This structure contains the information about the metric that is used for a request-based SLO.", + "properties": { + "DependencyConfig": { + "$ref": "#/definitions/DependencyConfig" + }, + "KeyAttributes": { + "$ref": "#/definitions/KeyAttributes" + }, + "MetricType": { + "description": "If the SLO monitors either the LATENCY or AVAILABILITY metric that Application Signals collects, this field displays which of those metrics is used.", + "enum": [ + "LATENCY", + "AVAILABILITY" + ], + "type": "string" + }, + "MonitoredRequestCountMetric": { + "$ref": "#/definitions/MonitoredRequestCountMetric" + }, + "OperationName": { + "description": "If the SLO monitors a specific operation of the service, this field displays that operation name.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "TotalRequestCountMetric": { + "$ref": "#/definitions/MetricDataQueries", + "description": "This structure defines the metric that is used as the \"total requests\" number for a request-based SLO. The number observed for this metric is divided by the number of \"good requests\" or \"bad requests\" that is observed for the metric defined in `MonitoredRequestCountMetric`." + } + }, + "type": "object" + }, + "RollingInterval": { + "additionalProperties": false, + "description": "If the interval is a calendar interval, this structure contains the interval specifications.", + "properties": { + "Duration": { + "$ref": "#/definitions/Duration" + }, + "DurationUnit": { + "$ref": "#/definitions/DurationUnit" + } + }, + "required": [ + "DurationUnit", + "Duration" + ], + "type": "object" + }, + "Sli": { + "additionalProperties": false, + "description": "This structure contains information about the performance metric that an SLO monitors.", + "properties": { + "ComparisonOperator": { + "description": "The arithmetic operation used when comparing the specified metric to the threshold.", + "enum": [ + "GreaterThanOrEqualTo", + "LessThanOrEqualTo", + "LessThan", + "GreaterThan" + ], + "type": "string" + }, + "MetricThreshold": { + "description": "The value that the SLI metric is compared to.", + "type": "number" + }, + "SliMetric": { + "$ref": "#/definitions/SliMetric" + } + }, + "required": [ + "SliMetric", + "MetricThreshold", + "ComparisonOperator" + ], + "type": "object" + }, + "SliMetric": { + "additionalProperties": false, + "description": "A structure that contains information about the metric that the SLO monitors.", + "properties": { + "DependencyConfig": { + "$ref": "#/definitions/DependencyConfig" + }, + "KeyAttributes": { + "$ref": "#/definitions/KeyAttributes" + }, + "MetricDataQueries": { + "$ref": "#/definitions/MetricDataQueries" + }, + "MetricType": { + "description": "If the SLO monitors either the LATENCY or AVAILABILITY metric that Application Signals collects, this field displays which of those metrics is used.", + "enum": [ + "LATENCY", + "AVAILABILITY" + ], + "type": "string" + }, + "OperationName": { + "description": "If the SLO monitors a specific operation of the service, this field displays that operation name.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "PeriodSeconds": { + "description": "The number of seconds to use as the period for SLO evaluation. Your application's performance is compared to the SLI during each period. For each period, the application is determined to have either achieved or not achieved the necessary performance.", + "maximum": 900, + "minimum": 60, + "type": "integer" + }, + "Statistic": { + "description": "The statistic to use for comparison to the threshold. It can be any CloudWatch statistic or extended statistic", + "maxLength": 20, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "A string that you can use to assign a value. The combination of tag keys and values can help you organize and categorize your resources.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the specified tag key.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Tags": { + "description": "The list of tag keys and values associated with the resource you specified", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Window": { + "additionalProperties": false, + "description": "This object defines the length of time an exclusion window should span.", + "properties": { + "Duration": { + "$ref": "#/definitions/Duration" + }, + "DurationUnit": { + "$ref": "#/definitions/DurationUnit" + } + }, + "required": [ + "DurationUnit", + "Duration" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ApplicationSignals::ServiceLevelObjective", + "handlers": { + "create": { + "permissions": [ + "application-signals:CreateServiceLevelObjective", + "cloudwatch:GetMetricData", + "application-signals:TagResource", + "application-signals:GetServiceLevelObjective", + "application-signals:ListTagsForResource", + "iam:GetRole", + "iam:CreateServiceLinkedRole", + "application-signals:ListServiceLevelObjectiveExclusionWindows", + "application-signals:BatchUpdateExclusionWindows" + ] + }, + "delete": { + "permissions": [ + "application-signals:DeleteServiceLevelObjective", + "application-signals:UntagResource", + "application-signals:GetServiceLevelObjective" + ] + }, + "list": { + "permissions": [ + "application-signals:ListServiceLevelObjectives", + "application-signals:ListTagsForResource", + "application-signals:ListServiceLevelObjectiveExclusionWindows" + ] + }, + "read": { + "permissions": [ + "application-signals:GetServiceLevelObjective", + "application-signals:ListTagsForResource", + "application-signals:ListServiceLevelObjectiveExclusionWindows" + ] + }, + "update": { + "permissions": [ + "application-signals:UpdateServiceLevelObjective", + "cloudwatch:GetMetricData", + "application-signals:TagResource", + "application-signals:UntagResource", + "application-signals:GetServiceLevelObjective", + "application-signals:ListTagsForResource", + "application-signals:ListServiceLevelObjectiveExclusionWindows", + "application-signals:BatchUpdateExclusionWindows" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The ARN of this SLO.", + "pattern": "^arn:[^:]*:application-signals:[^:]*:[^:]*:slo\\/[0-9A-Za-z][-._0-9A-Za-z ]{0,126}[0-9A-Za-z]$", + "type": "string" + }, + "BurnRateConfigurations": { + "$ref": "#/definitions/BurnRateConfigurations" + }, + "CreatedTime": { + "description": "Epoch time in seconds of the time that this SLO was created", + "minimum": 946684800, + "type": "integer" + }, + "Description": { + "default": "No description", + "description": "An optional description for this SLO. Default is 'No description'", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "EvaluationType": { + "description": "Displays whether this is a period-based SLO or a request-based SLO.", + "enum": [ + "PeriodBased", + "RequestBased" + ], + "type": "string" + }, + "ExclusionWindows": { + "$ref": "#/definitions/ExclusionWindows" + }, + "Goal": { + "$ref": "#/definitions/Goal" + }, + "LastUpdatedTime": { + "description": "Epoch time in seconds of the time that this SLO was most recently updated", + "minimum": 946684800, + "type": "integer" + }, + "Name": { + "description": "The name of this SLO.", + "pattern": "^[0-9A-Za-z][-._0-9A-Za-z ]{0,126}[0-9A-Za-z]$", + "type": "string" + }, + "RequestBasedSli": { + "$ref": "#/definitions/RequestBasedSli" + }, + "Sli": { + "$ref": "#/definitions/Sli" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastUpdatedTime", + "/properties/EvaluationType" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-applicationsignals", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "application-signals:ListTagsForResource", + "application-signals:TagResource", + "application-signals:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ApplicationSignals::ServiceLevelObjective" +} diff --git a/src/schema/aws-appmesh-gatewayroute.json b/src/schema/aws-appmesh-gatewayroute.json index a3fe4e30..0d69845f 100644 --- a/src/schema/aws-appmesh-gatewayroute.json +++ b/src/schema/aws-appmesh-gatewayroute.json @@ -1,439 +1,439 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MeshName", - "/properties/VirtualGatewayName", - "/properties/MeshOwner", - "/properties/GatewayRouteName" - ], - "definitions": { - "GatewayRouteHostnameMatch": { - "additionalProperties": false, - "properties": { - "Exact": { - "type": "string" - }, - "Suffix": { - "type": "string" - } - }, - "type": "object" - }, - "GatewayRouteHostnameRewrite": { - "additionalProperties": false, - "properties": { - "DefaultTargetHostname": { - "type": "string" - } - }, - "type": "object" - }, - "GatewayRouteMetadataMatch": { - "additionalProperties": false, - "properties": { - "Exact": { - "type": "string" - }, - "Prefix": { - "type": "string" - }, - "Range": { - "$ref": "#/definitions/GatewayRouteRangeMatch" - }, - "Regex": { - "type": "string" - }, - "Suffix": { - "type": "string" - } - }, - "type": "object" - }, - "GatewayRouteRangeMatch": { - "additionalProperties": false, - "properties": { - "End": { - "type": "integer" - }, - "Start": { - "type": "integer" - } - }, - "required": [ - "Start", - "End" - ], - "type": "object" - }, - "GatewayRouteSpec": { - "additionalProperties": false, - "properties": { - "GrpcRoute": { - "$ref": "#/definitions/GrpcGatewayRoute" - }, - "Http2Route": { - "$ref": "#/definitions/HttpGatewayRoute" - }, - "HttpRoute": { - "$ref": "#/definitions/HttpGatewayRoute" - }, - "Priority": { - "type": "integer" - } - }, - "type": "object" - }, - "GatewayRouteTarget": { - "additionalProperties": false, - "properties": { - "Port": { - "type": "integer" - }, - "VirtualService": { - "$ref": "#/definitions/GatewayRouteVirtualService" - } - }, - "required": [ - "VirtualService" - ], - "type": "object" - }, - "GatewayRouteVirtualService": { - "additionalProperties": false, - "properties": { - "VirtualServiceName": { - "type": "string" - } - }, - "required": [ - "VirtualServiceName" - ], - "type": "object" - }, - "GrpcGatewayRoute": { - "additionalProperties": false, - "properties": { - "Action": { - "$ref": "#/definitions/GrpcGatewayRouteAction" - }, - "Match": { - "$ref": "#/definitions/GrpcGatewayRouteMatch" - } - }, - "required": [ - "Action", - "Match" - ], - "type": "object" - }, - "GrpcGatewayRouteAction": { - "additionalProperties": false, - "properties": { - "Rewrite": { - "$ref": "#/definitions/GrpcGatewayRouteRewrite" - }, - "Target": { - "$ref": "#/definitions/GatewayRouteTarget" - } - }, - "required": [ - "Target" - ], - "type": "object" - }, - "GrpcGatewayRouteMatch": { - "additionalProperties": false, - "properties": { - "Hostname": { - "$ref": "#/definitions/GatewayRouteHostnameMatch" - }, - "Metadata": { - "items": { - "$ref": "#/definitions/GrpcGatewayRouteMetadata" - }, - "type": "array", - "uniqueItems": false - }, - "Port": { - "type": "integer" - }, - "ServiceName": { - "type": "string" - } - }, - "type": "object" - }, - "GrpcGatewayRouteMetadata": { - "additionalProperties": false, - "properties": { - "Invert": { - "type": "boolean" - }, - "Match": { - "$ref": "#/definitions/GatewayRouteMetadataMatch" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "GrpcGatewayRouteRewrite": { - "additionalProperties": false, - "properties": { - "Hostname": { - "$ref": "#/definitions/GatewayRouteHostnameRewrite" - } - }, - "type": "object" - }, - "HttpGatewayRoute": { - "additionalProperties": false, - "properties": { - "Action": { - "$ref": "#/definitions/HttpGatewayRouteAction" - }, - "Match": { - "$ref": "#/definitions/HttpGatewayRouteMatch" - } - }, - "required": [ - "Action", - "Match" - ], - "type": "object" - }, - "HttpGatewayRouteAction": { - "additionalProperties": false, - "properties": { - "Rewrite": { - "$ref": "#/definitions/HttpGatewayRouteRewrite" - }, - "Target": { - "$ref": "#/definitions/GatewayRouteTarget" - } - }, - "required": [ - "Target" - ], - "type": "object" - }, - "HttpGatewayRouteHeader": { - "additionalProperties": false, - "properties": { - "Invert": { - "type": "boolean" - }, - "Match": { - "$ref": "#/definitions/HttpGatewayRouteHeaderMatch" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "HttpGatewayRouteHeaderMatch": { - "additionalProperties": false, - "properties": { - "Exact": { - "type": "string" - }, - "Prefix": { - "type": "string" - }, - "Range": { - "$ref": "#/definitions/GatewayRouteRangeMatch" - }, - "Regex": { - "type": "string" - }, - "Suffix": { - "type": "string" - } - }, - "type": "object" - }, - "HttpGatewayRouteMatch": { - "additionalProperties": false, - "properties": { - "Headers": { - "items": { - "$ref": "#/definitions/HttpGatewayRouteHeader" - }, - "type": "array", - "uniqueItems": false - }, - "Hostname": { - "$ref": "#/definitions/GatewayRouteHostnameMatch" - }, - "Method": { - "type": "string" - }, - "Path": { - "$ref": "#/definitions/HttpPathMatch" - }, - "Port": { - "type": "integer" - }, - "Prefix": { - "type": "string" - }, - "QueryParameters": { - "items": { - "$ref": "#/definitions/QueryParameter" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "HttpGatewayRoutePathRewrite": { - "additionalProperties": false, - "properties": { - "Exact": { - "type": "string" - } - }, - "type": "object" - }, - "HttpGatewayRoutePrefixRewrite": { - "additionalProperties": false, - "properties": { - "DefaultPrefix": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "HttpGatewayRouteRewrite": { - "additionalProperties": false, - "properties": { - "Hostname": { - "$ref": "#/definitions/GatewayRouteHostnameRewrite" - }, - "Path": { - "$ref": "#/definitions/HttpGatewayRoutePathRewrite" - }, - "Prefix": { - "$ref": "#/definitions/HttpGatewayRoutePrefixRewrite" - } - }, - "type": "object" - }, - "HttpPathMatch": { - "additionalProperties": false, - "properties": { - "Exact": { - "type": "string" - }, - "Regex": { - "type": "string" - } - }, - "type": "object" - }, - "HttpQueryParameterMatch": { - "additionalProperties": false, - "properties": { - "Exact": { - "type": "string" - } - }, - "type": "object" - }, - "QueryParameter": { - "additionalProperties": false, - "properties": { - "Match": { - "$ref": "#/definitions/HttpQueryParameterMatch" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppMesh::GatewayRoute", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "GatewayRouteName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "MeshName": { - "type": "string" - }, - "MeshOwner": { - "type": "string" - }, - "ResourceOwner": { - "type": "string" - }, - "Spec": { - "$ref": "#/definitions/GatewayRouteSpec" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Uid": { - "type": "string" - }, - "VirtualGatewayName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ResourceOwner", - "/properties/Arn", - "/properties/Uid" - ], - "required": [ - "MeshName", - "VirtualGatewayName", - "Spec" - ], - "typeName": "AWS::AppMesh::GatewayRoute" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MeshName", + "/properties/VirtualGatewayName", + "/properties/MeshOwner", + "/properties/GatewayRouteName" + ], + "definitions": { + "GatewayRouteHostnameMatch": { + "additionalProperties": false, + "properties": { + "Exact": { + "type": "string" + }, + "Suffix": { + "type": "string" + } + }, + "type": "object" + }, + "GatewayRouteHostnameRewrite": { + "additionalProperties": false, + "properties": { + "DefaultTargetHostname": { + "type": "string" + } + }, + "type": "object" + }, + "GatewayRouteMetadataMatch": { + "additionalProperties": false, + "properties": { + "Exact": { + "type": "string" + }, + "Prefix": { + "type": "string" + }, + "Range": { + "$ref": "#/definitions/GatewayRouteRangeMatch" + }, + "Regex": { + "type": "string" + }, + "Suffix": { + "type": "string" + } + }, + "type": "object" + }, + "GatewayRouteRangeMatch": { + "additionalProperties": false, + "properties": { + "End": { + "type": "integer" + }, + "Start": { + "type": "integer" + } + }, + "required": [ + "Start", + "End" + ], + "type": "object" + }, + "GatewayRouteSpec": { + "additionalProperties": false, + "properties": { + "GrpcRoute": { + "$ref": "#/definitions/GrpcGatewayRoute" + }, + "Http2Route": { + "$ref": "#/definitions/HttpGatewayRoute" + }, + "HttpRoute": { + "$ref": "#/definitions/HttpGatewayRoute" + }, + "Priority": { + "type": "integer" + } + }, + "type": "object" + }, + "GatewayRouteTarget": { + "additionalProperties": false, + "properties": { + "Port": { + "type": "integer" + }, + "VirtualService": { + "$ref": "#/definitions/GatewayRouteVirtualService" + } + }, + "required": [ + "VirtualService" + ], + "type": "object" + }, + "GatewayRouteVirtualService": { + "additionalProperties": false, + "properties": { + "VirtualServiceName": { + "type": "string" + } + }, + "required": [ + "VirtualServiceName" + ], + "type": "object" + }, + "GrpcGatewayRoute": { + "additionalProperties": false, + "properties": { + "Action": { + "$ref": "#/definitions/GrpcGatewayRouteAction" + }, + "Match": { + "$ref": "#/definitions/GrpcGatewayRouteMatch" + } + }, + "required": [ + "Action", + "Match" + ], + "type": "object" + }, + "GrpcGatewayRouteAction": { + "additionalProperties": false, + "properties": { + "Rewrite": { + "$ref": "#/definitions/GrpcGatewayRouteRewrite" + }, + "Target": { + "$ref": "#/definitions/GatewayRouteTarget" + } + }, + "required": [ + "Target" + ], + "type": "object" + }, + "GrpcGatewayRouteMatch": { + "additionalProperties": false, + "properties": { + "Hostname": { + "$ref": "#/definitions/GatewayRouteHostnameMatch" + }, + "Metadata": { + "items": { + "$ref": "#/definitions/GrpcGatewayRouteMetadata" + }, + "type": "array", + "uniqueItems": false + }, + "Port": { + "type": "integer" + }, + "ServiceName": { + "type": "string" + } + }, + "type": "object" + }, + "GrpcGatewayRouteMetadata": { + "additionalProperties": false, + "properties": { + "Invert": { + "type": "boolean" + }, + "Match": { + "$ref": "#/definitions/GatewayRouteMetadataMatch" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "GrpcGatewayRouteRewrite": { + "additionalProperties": false, + "properties": { + "Hostname": { + "$ref": "#/definitions/GatewayRouteHostnameRewrite" + } + }, + "type": "object" + }, + "HttpGatewayRoute": { + "additionalProperties": false, + "properties": { + "Action": { + "$ref": "#/definitions/HttpGatewayRouteAction" + }, + "Match": { + "$ref": "#/definitions/HttpGatewayRouteMatch" + } + }, + "required": [ + "Action", + "Match" + ], + "type": "object" + }, + "HttpGatewayRouteAction": { + "additionalProperties": false, + "properties": { + "Rewrite": { + "$ref": "#/definitions/HttpGatewayRouteRewrite" + }, + "Target": { + "$ref": "#/definitions/GatewayRouteTarget" + } + }, + "required": [ + "Target" + ], + "type": "object" + }, + "HttpGatewayRouteHeader": { + "additionalProperties": false, + "properties": { + "Invert": { + "type": "boolean" + }, + "Match": { + "$ref": "#/definitions/HttpGatewayRouteHeaderMatch" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "HttpGatewayRouteHeaderMatch": { + "additionalProperties": false, + "properties": { + "Exact": { + "type": "string" + }, + "Prefix": { + "type": "string" + }, + "Range": { + "$ref": "#/definitions/GatewayRouteRangeMatch" + }, + "Regex": { + "type": "string" + }, + "Suffix": { + "type": "string" + } + }, + "type": "object" + }, + "HttpGatewayRouteMatch": { + "additionalProperties": false, + "properties": { + "Headers": { + "items": { + "$ref": "#/definitions/HttpGatewayRouteHeader" + }, + "type": "array", + "uniqueItems": false + }, + "Hostname": { + "$ref": "#/definitions/GatewayRouteHostnameMatch" + }, + "Method": { + "type": "string" + }, + "Path": { + "$ref": "#/definitions/HttpPathMatch" + }, + "Port": { + "type": "integer" + }, + "Prefix": { + "type": "string" + }, + "QueryParameters": { + "items": { + "$ref": "#/definitions/QueryParameter" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "HttpGatewayRoutePathRewrite": { + "additionalProperties": false, + "properties": { + "Exact": { + "type": "string" + } + }, + "type": "object" + }, + "HttpGatewayRoutePrefixRewrite": { + "additionalProperties": false, + "properties": { + "DefaultPrefix": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "HttpGatewayRouteRewrite": { + "additionalProperties": false, + "properties": { + "Hostname": { + "$ref": "#/definitions/GatewayRouteHostnameRewrite" + }, + "Path": { + "$ref": "#/definitions/HttpGatewayRoutePathRewrite" + }, + "Prefix": { + "$ref": "#/definitions/HttpGatewayRoutePrefixRewrite" + } + }, + "type": "object" + }, + "HttpPathMatch": { + "additionalProperties": false, + "properties": { + "Exact": { + "type": "string" + }, + "Regex": { + "type": "string" + } + }, + "type": "object" + }, + "HttpQueryParameterMatch": { + "additionalProperties": false, + "properties": { + "Exact": { + "type": "string" + } + }, + "type": "object" + }, + "QueryParameter": { + "additionalProperties": false, + "properties": { + "Match": { + "$ref": "#/definitions/HttpQueryParameterMatch" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppMesh::GatewayRoute", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "GatewayRouteName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "MeshName": { + "type": "string" + }, + "MeshOwner": { + "type": "string" + }, + "ResourceOwner": { + "type": "string" + }, + "Spec": { + "$ref": "#/definitions/GatewayRouteSpec" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Uid": { + "type": "string" + }, + "VirtualGatewayName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/ResourceOwner", + "/properties/Arn", + "/properties/Uid" + ], + "required": [ + "MeshName", + "VirtualGatewayName", + "Spec" + ], + "typeName": "AWS::AppMesh::GatewayRoute" +} diff --git a/src/schema/aws-appmesh-mesh.json b/src/schema/aws-appmesh-mesh.json index a465b707..ebe470e4 100644 --- a/src/schema/aws-appmesh-mesh.json +++ b/src/schema/aws-appmesh-mesh.json @@ -1,99 +1,99 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MeshName" - ], - "definitions": { - "EgressFilter": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "MeshServiceDiscovery": { - "additionalProperties": false, - "properties": { - "IpPreference": { - "type": "string" - } - }, - "type": "object" - }, - "MeshSpec": { - "additionalProperties": false, - "properties": { - "EgressFilter": { - "$ref": "#/definitions/EgressFilter" - }, - "ServiceDiscovery": { - "$ref": "#/definitions/MeshServiceDiscovery" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppMesh::Mesh", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "MeshName": { - "type": "string" - }, - "MeshOwner": { - "type": "string" - }, - "ResourceOwner": { - "type": "string" - }, - "Spec": { - "$ref": "#/definitions/MeshSpec" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Uid": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ResourceOwner", - "/properties/MeshOwner", - "/properties/Arn", - "/properties/Uid" - ], - "typeName": "AWS::AppMesh::Mesh" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MeshName" + ], + "definitions": { + "EgressFilter": { + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "MeshServiceDiscovery": { + "additionalProperties": false, + "properties": { + "IpPreference": { + "type": "string" + } + }, + "type": "object" + }, + "MeshSpec": { + "additionalProperties": false, + "properties": { + "EgressFilter": { + "$ref": "#/definitions/EgressFilter" + }, + "ServiceDiscovery": { + "$ref": "#/definitions/MeshServiceDiscovery" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppMesh::Mesh", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "MeshName": { + "type": "string" + }, + "MeshOwner": { + "type": "string" + }, + "ResourceOwner": { + "type": "string" + }, + "Spec": { + "$ref": "#/definitions/MeshSpec" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Uid": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/ResourceOwner", + "/properties/MeshOwner", + "/properties/Arn", + "/properties/Uid" + ], + "typeName": "AWS::AppMesh::Mesh" +} diff --git a/src/schema/aws-appmesh-route.json b/src/schema/aws-appmesh-route.json index 5a1cbd55..62e45df3 100644 --- a/src/schema/aws-appmesh-route.json +++ b/src/schema/aws-appmesh-route.json @@ -1,541 +1,541 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MeshName", - "/properties/VirtualRouterName", - "/properties/RouteName", - "/properties/MeshOwner" - ], - "definitions": { - "Duration": { - "additionalProperties": false, - "properties": { - "Unit": { - "type": "string" - }, - "Value": { - "type": "integer" - } - }, - "required": [ - "Value", - "Unit" - ], - "type": "object" - }, - "GrpcRetryPolicy": { - "additionalProperties": false, - "properties": { - "GrpcRetryEvents": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "HttpRetryEvents": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "MaxRetries": { - "type": "integer" - }, - "PerRetryTimeout": { - "$ref": "#/definitions/Duration" - }, - "TcpRetryEvents": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "MaxRetries", - "PerRetryTimeout" - ], - "type": "object" - }, - "GrpcRoute": { - "additionalProperties": false, - "properties": { - "Action": { - "$ref": "#/definitions/GrpcRouteAction" - }, - "Match": { - "$ref": "#/definitions/GrpcRouteMatch" - }, - "RetryPolicy": { - "$ref": "#/definitions/GrpcRetryPolicy" - }, - "Timeout": { - "$ref": "#/definitions/GrpcTimeout" - } - }, - "required": [ - "Action", - "Match" - ], - "type": "object" - }, - "GrpcRouteAction": { - "additionalProperties": false, - "properties": { - "WeightedTargets": { - "items": { - "$ref": "#/definitions/WeightedTarget" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "WeightedTargets" - ], - "type": "object" - }, - "GrpcRouteMatch": { - "additionalProperties": false, - "properties": { - "Metadata": { - "items": { - "$ref": "#/definitions/GrpcRouteMetadata" - }, - "type": "array", - "uniqueItems": false - }, - "MethodName": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "ServiceName": { - "type": "string" - } - }, - "type": "object" - }, - "GrpcRouteMetadata": { - "additionalProperties": false, - "properties": { - "Invert": { - "type": "boolean" - }, - "Match": { - "$ref": "#/definitions/GrpcRouteMetadataMatchMethod" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "GrpcRouteMetadataMatchMethod": { - "additionalProperties": false, - "properties": { - "Exact": { - "type": "string" - }, - "Prefix": { - "type": "string" - }, - "Range": { - "$ref": "#/definitions/MatchRange" - }, - "Regex": { - "type": "string" - }, - "Suffix": { - "type": "string" - } - }, - "type": "object" - }, - "GrpcTimeout": { - "additionalProperties": false, - "properties": { - "Idle": { - "$ref": "#/definitions/Duration" - }, - "PerRequest": { - "$ref": "#/definitions/Duration" - } - }, - "type": "object" - }, - "HeaderMatchMethod": { - "additionalProperties": false, - "properties": { - "Exact": { - "type": "string" - }, - "Prefix": { - "type": "string" - }, - "Range": { - "$ref": "#/definitions/MatchRange" - }, - "Regex": { - "type": "string" - }, - "Suffix": { - "type": "string" - } - }, - "type": "object" - }, - "HttpPathMatch": { - "additionalProperties": false, - "properties": { - "Exact": { - "type": "string" - }, - "Regex": { - "type": "string" - } - }, - "type": "object" - }, - "HttpQueryParameterMatch": { - "additionalProperties": false, - "properties": { - "Exact": { - "type": "string" - } - }, - "type": "object" - }, - "HttpRetryPolicy": { - "additionalProperties": false, - "properties": { - "HttpRetryEvents": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "MaxRetries": { - "type": "integer" - }, - "PerRetryTimeout": { - "$ref": "#/definitions/Duration" - }, - "TcpRetryEvents": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "MaxRetries", - "PerRetryTimeout" - ], - "type": "object" - }, - "HttpRoute": { - "additionalProperties": false, - "properties": { - "Action": { - "$ref": "#/definitions/HttpRouteAction" - }, - "Match": { - "$ref": "#/definitions/HttpRouteMatch" - }, - "RetryPolicy": { - "$ref": "#/definitions/HttpRetryPolicy" - }, - "Timeout": { - "$ref": "#/definitions/HttpTimeout" - } - }, - "required": [ - "Action", - "Match" - ], - "type": "object" - }, - "HttpRouteAction": { - "additionalProperties": false, - "properties": { - "WeightedTargets": { - "items": { - "$ref": "#/definitions/WeightedTarget" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "WeightedTargets" - ], - "type": "object" - }, - "HttpRouteHeader": { - "additionalProperties": false, - "properties": { - "Invert": { - "type": "boolean" - }, - "Match": { - "$ref": "#/definitions/HeaderMatchMethod" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "HttpRouteMatch": { - "additionalProperties": false, - "properties": { - "Headers": { - "items": { - "$ref": "#/definitions/HttpRouteHeader" - }, - "type": "array", - "uniqueItems": false - }, - "Method": { - "type": "string" - }, - "Path": { - "$ref": "#/definitions/HttpPathMatch" - }, - "Port": { - "type": "integer" - }, - "Prefix": { - "type": "string" - }, - "QueryParameters": { - "items": { - "$ref": "#/definitions/QueryParameter" - }, - "type": "array", - "uniqueItems": false - }, - "Scheme": { - "type": "string" - } - }, - "type": "object" - }, - "HttpTimeout": { - "additionalProperties": false, - "properties": { - "Idle": { - "$ref": "#/definitions/Duration" - }, - "PerRequest": { - "$ref": "#/definitions/Duration" - } - }, - "type": "object" - }, - "MatchRange": { - "additionalProperties": false, - "properties": { - "End": { - "type": "integer" - }, - "Start": { - "type": "integer" - } - }, - "required": [ - "Start", - "End" - ], - "type": "object" - }, - "QueryParameter": { - "additionalProperties": false, - "properties": { - "Match": { - "$ref": "#/definitions/HttpQueryParameterMatch" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "RouteSpec": { - "additionalProperties": false, - "properties": { - "GrpcRoute": { - "$ref": "#/definitions/GrpcRoute" - }, - "Http2Route": { - "$ref": "#/definitions/HttpRoute" - }, - "HttpRoute": { - "$ref": "#/definitions/HttpRoute" - }, - "Priority": { - "type": "integer" - }, - "TcpRoute": { - "$ref": "#/definitions/TcpRoute" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TcpRoute": { - "additionalProperties": false, - "properties": { - "Action": { - "$ref": "#/definitions/TcpRouteAction" - }, - "Match": { - "$ref": "#/definitions/TcpRouteMatch" - }, - "Timeout": { - "$ref": "#/definitions/TcpTimeout" - } - }, - "required": [ - "Action" - ], - "type": "object" - }, - "TcpRouteAction": { - "additionalProperties": false, - "properties": { - "WeightedTargets": { - "items": { - "$ref": "#/definitions/WeightedTarget" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "WeightedTargets" - ], - "type": "object" - }, - "TcpRouteMatch": { - "additionalProperties": false, - "properties": { - "Port": { - "type": "integer" - } - }, - "type": "object" - }, - "TcpTimeout": { - "additionalProperties": false, - "properties": { - "Idle": { - "$ref": "#/definitions/Duration" - } - }, - "type": "object" - }, - "WeightedTarget": { - "additionalProperties": false, - "properties": { - "Port": { - "type": "integer" - }, - "VirtualNode": { - "type": "string" - }, - "Weight": { - "type": "integer" - } - }, - "required": [ - "VirtualNode", - "Weight" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppMesh::Route", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "MeshName": { - "type": "string" - }, - "MeshOwner": { - "type": "string" - }, - "ResourceOwner": { - "type": "string" - }, - "RouteName": { - "type": "string" - }, - "Spec": { - "$ref": "#/definitions/RouteSpec" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Uid": { - "type": "string" - }, - "VirtualRouterName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ResourceOwner", - "/properties/Arn", - "/properties/Uid" - ], - "required": [ - "MeshName", - "VirtualRouterName", - "Spec" - ], - "typeName": "AWS::AppMesh::Route" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MeshName", + "/properties/VirtualRouterName", + "/properties/RouteName", + "/properties/MeshOwner" + ], + "definitions": { + "Duration": { + "additionalProperties": false, + "properties": { + "Unit": { + "type": "string" + }, + "Value": { + "type": "integer" + } + }, + "required": [ + "Value", + "Unit" + ], + "type": "object" + }, + "GrpcRetryPolicy": { + "additionalProperties": false, + "properties": { + "GrpcRetryEvents": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "HttpRetryEvents": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MaxRetries": { + "type": "integer" + }, + "PerRetryTimeout": { + "$ref": "#/definitions/Duration" + }, + "TcpRetryEvents": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "MaxRetries", + "PerRetryTimeout" + ], + "type": "object" + }, + "GrpcRoute": { + "additionalProperties": false, + "properties": { + "Action": { + "$ref": "#/definitions/GrpcRouteAction" + }, + "Match": { + "$ref": "#/definitions/GrpcRouteMatch" + }, + "RetryPolicy": { + "$ref": "#/definitions/GrpcRetryPolicy" + }, + "Timeout": { + "$ref": "#/definitions/GrpcTimeout" + } + }, + "required": [ + "Action", + "Match" + ], + "type": "object" + }, + "GrpcRouteAction": { + "additionalProperties": false, + "properties": { + "WeightedTargets": { + "items": { + "$ref": "#/definitions/WeightedTarget" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "WeightedTargets" + ], + "type": "object" + }, + "GrpcRouteMatch": { + "additionalProperties": false, + "properties": { + "Metadata": { + "items": { + "$ref": "#/definitions/GrpcRouteMetadata" + }, + "type": "array", + "uniqueItems": false + }, + "MethodName": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "ServiceName": { + "type": "string" + } + }, + "type": "object" + }, + "GrpcRouteMetadata": { + "additionalProperties": false, + "properties": { + "Invert": { + "type": "boolean" + }, + "Match": { + "$ref": "#/definitions/GrpcRouteMetadataMatchMethod" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "GrpcRouteMetadataMatchMethod": { + "additionalProperties": false, + "properties": { + "Exact": { + "type": "string" + }, + "Prefix": { + "type": "string" + }, + "Range": { + "$ref": "#/definitions/MatchRange" + }, + "Regex": { + "type": "string" + }, + "Suffix": { + "type": "string" + } + }, + "type": "object" + }, + "GrpcTimeout": { + "additionalProperties": false, + "properties": { + "Idle": { + "$ref": "#/definitions/Duration" + }, + "PerRequest": { + "$ref": "#/definitions/Duration" + } + }, + "type": "object" + }, + "HeaderMatchMethod": { + "additionalProperties": false, + "properties": { + "Exact": { + "type": "string" + }, + "Prefix": { + "type": "string" + }, + "Range": { + "$ref": "#/definitions/MatchRange" + }, + "Regex": { + "type": "string" + }, + "Suffix": { + "type": "string" + } + }, + "type": "object" + }, + "HttpPathMatch": { + "additionalProperties": false, + "properties": { + "Exact": { + "type": "string" + }, + "Regex": { + "type": "string" + } + }, + "type": "object" + }, + "HttpQueryParameterMatch": { + "additionalProperties": false, + "properties": { + "Exact": { + "type": "string" + } + }, + "type": "object" + }, + "HttpRetryPolicy": { + "additionalProperties": false, + "properties": { + "HttpRetryEvents": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MaxRetries": { + "type": "integer" + }, + "PerRetryTimeout": { + "$ref": "#/definitions/Duration" + }, + "TcpRetryEvents": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "MaxRetries", + "PerRetryTimeout" + ], + "type": "object" + }, + "HttpRoute": { + "additionalProperties": false, + "properties": { + "Action": { + "$ref": "#/definitions/HttpRouteAction" + }, + "Match": { + "$ref": "#/definitions/HttpRouteMatch" + }, + "RetryPolicy": { + "$ref": "#/definitions/HttpRetryPolicy" + }, + "Timeout": { + "$ref": "#/definitions/HttpTimeout" + } + }, + "required": [ + "Action", + "Match" + ], + "type": "object" + }, + "HttpRouteAction": { + "additionalProperties": false, + "properties": { + "WeightedTargets": { + "items": { + "$ref": "#/definitions/WeightedTarget" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "WeightedTargets" + ], + "type": "object" + }, + "HttpRouteHeader": { + "additionalProperties": false, + "properties": { + "Invert": { + "type": "boolean" + }, + "Match": { + "$ref": "#/definitions/HeaderMatchMethod" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "HttpRouteMatch": { + "additionalProperties": false, + "properties": { + "Headers": { + "items": { + "$ref": "#/definitions/HttpRouteHeader" + }, + "type": "array", + "uniqueItems": false + }, + "Method": { + "type": "string" + }, + "Path": { + "$ref": "#/definitions/HttpPathMatch" + }, + "Port": { + "type": "integer" + }, + "Prefix": { + "type": "string" + }, + "QueryParameters": { + "items": { + "$ref": "#/definitions/QueryParameter" + }, + "type": "array", + "uniqueItems": false + }, + "Scheme": { + "type": "string" + } + }, + "type": "object" + }, + "HttpTimeout": { + "additionalProperties": false, + "properties": { + "Idle": { + "$ref": "#/definitions/Duration" + }, + "PerRequest": { + "$ref": "#/definitions/Duration" + } + }, + "type": "object" + }, + "MatchRange": { + "additionalProperties": false, + "properties": { + "End": { + "type": "integer" + }, + "Start": { + "type": "integer" + } + }, + "required": [ + "Start", + "End" + ], + "type": "object" + }, + "QueryParameter": { + "additionalProperties": false, + "properties": { + "Match": { + "$ref": "#/definitions/HttpQueryParameterMatch" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "RouteSpec": { + "additionalProperties": false, + "properties": { + "GrpcRoute": { + "$ref": "#/definitions/GrpcRoute" + }, + "Http2Route": { + "$ref": "#/definitions/HttpRoute" + }, + "HttpRoute": { + "$ref": "#/definitions/HttpRoute" + }, + "Priority": { + "type": "integer" + }, + "TcpRoute": { + "$ref": "#/definitions/TcpRoute" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TcpRoute": { + "additionalProperties": false, + "properties": { + "Action": { + "$ref": "#/definitions/TcpRouteAction" + }, + "Match": { + "$ref": "#/definitions/TcpRouteMatch" + }, + "Timeout": { + "$ref": "#/definitions/TcpTimeout" + } + }, + "required": [ + "Action" + ], + "type": "object" + }, + "TcpRouteAction": { + "additionalProperties": false, + "properties": { + "WeightedTargets": { + "items": { + "$ref": "#/definitions/WeightedTarget" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "WeightedTargets" + ], + "type": "object" + }, + "TcpRouteMatch": { + "additionalProperties": false, + "properties": { + "Port": { + "type": "integer" + } + }, + "type": "object" + }, + "TcpTimeout": { + "additionalProperties": false, + "properties": { + "Idle": { + "$ref": "#/definitions/Duration" + } + }, + "type": "object" + }, + "WeightedTarget": { + "additionalProperties": false, + "properties": { + "Port": { + "type": "integer" + }, + "VirtualNode": { + "type": "string" + }, + "Weight": { + "type": "integer" + } + }, + "required": [ + "VirtualNode", + "Weight" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppMesh::Route", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "MeshName": { + "type": "string" + }, + "MeshOwner": { + "type": "string" + }, + "ResourceOwner": { + "type": "string" + }, + "RouteName": { + "type": "string" + }, + "Spec": { + "$ref": "#/definitions/RouteSpec" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Uid": { + "type": "string" + }, + "VirtualRouterName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/ResourceOwner", + "/properties/Arn", + "/properties/Uid" + ], + "required": [ + "MeshName", + "VirtualRouterName", + "Spec" + ], + "typeName": "AWS::AppMesh::Route" +} diff --git a/src/schema/aws-appmesh-virtualgateway.json b/src/schema/aws-appmesh-virtualgateway.json index 25becac3..304b9999 100644 --- a/src/schema/aws-appmesh-virtualgateway.json +++ b/src/schema/aws-appmesh-virtualgateway.json @@ -1,537 +1,537 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MeshName", - "/properties/VirtualGatewayName", - "/properties/MeshOwner" - ], - "definitions": { - "JsonFormatRef": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "LoggingFormat": { - "additionalProperties": false, - "properties": { - "Json": { - "items": { - "$ref": "#/definitions/JsonFormatRef" - }, - "type": "array", - "uniqueItems": false - }, - "Text": { - "type": "string" - } - }, - "type": "object" - }, - "SubjectAlternativeNameMatchers": { - "additionalProperties": false, - "properties": { - "Exact": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "SubjectAlternativeNames": { - "additionalProperties": false, - "properties": { - "Match": { - "$ref": "#/definitions/SubjectAlternativeNameMatchers" - } - }, - "required": [ - "Match" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "VirtualGatewayAccessLog": { - "additionalProperties": false, - "properties": { - "File": { - "$ref": "#/definitions/VirtualGatewayFileAccessLog" - } - }, - "type": "object" - }, - "VirtualGatewayBackendDefaults": { - "additionalProperties": false, - "properties": { - "ClientPolicy": { - "$ref": "#/definitions/VirtualGatewayClientPolicy" - } - }, - "type": "object" - }, - "VirtualGatewayClientPolicy": { - "additionalProperties": false, - "properties": { - "TLS": { - "$ref": "#/definitions/VirtualGatewayClientPolicyTls" - } - }, - "type": "object" - }, - "VirtualGatewayClientPolicyTls": { - "additionalProperties": false, - "properties": { - "Certificate": { - "$ref": "#/definitions/VirtualGatewayClientTlsCertificate" - }, - "Enforce": { - "type": "boolean" - }, - "Ports": { - "items": { - "type": "integer" - }, - "type": "array", - "uniqueItems": false - }, - "Validation": { - "$ref": "#/definitions/VirtualGatewayTlsValidationContext" - } - }, - "required": [ - "Validation" - ], - "type": "object" - }, - "VirtualGatewayClientTlsCertificate": { - "additionalProperties": false, - "properties": { - "File": { - "$ref": "#/definitions/VirtualGatewayListenerTlsFileCertificate" - }, - "SDS": { - "$ref": "#/definitions/VirtualGatewayListenerTlsSdsCertificate" - } - }, - "type": "object" - }, - "VirtualGatewayConnectionPool": { - "additionalProperties": false, - "properties": { - "GRPC": { - "$ref": "#/definitions/VirtualGatewayGrpcConnectionPool" - }, - "HTTP": { - "$ref": "#/definitions/VirtualGatewayHttpConnectionPool" - }, - "HTTP2": { - "$ref": "#/definitions/VirtualGatewayHttp2ConnectionPool" - } - }, - "type": "object" - }, - "VirtualGatewayFileAccessLog": { - "additionalProperties": false, - "properties": { - "Format": { - "$ref": "#/definitions/LoggingFormat" - }, - "Path": { - "type": "string" - } - }, - "required": [ - "Path" - ], - "type": "object" - }, - "VirtualGatewayGrpcConnectionPool": { - "additionalProperties": false, - "properties": { - "MaxRequests": { - "type": "integer" - } - }, - "required": [ - "MaxRequests" - ], - "type": "object" - }, - "VirtualGatewayHealthCheckPolicy": { - "additionalProperties": false, - "properties": { - "HealthyThreshold": { - "type": "integer" - }, - "IntervalMillis": { - "type": "integer" - }, - "Path": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "Protocol": { - "type": "string" - }, - "TimeoutMillis": { - "type": "integer" - }, - "UnhealthyThreshold": { - "type": "integer" - } - }, - "required": [ - "UnhealthyThreshold", - "HealthyThreshold", - "TimeoutMillis", - "Protocol", - "IntervalMillis" - ], - "type": "object" - }, - "VirtualGatewayHttp2ConnectionPool": { - "additionalProperties": false, - "properties": { - "MaxRequests": { - "type": "integer" - } - }, - "required": [ - "MaxRequests" - ], - "type": "object" - }, - "VirtualGatewayHttpConnectionPool": { - "additionalProperties": false, - "properties": { - "MaxConnections": { - "type": "integer" - }, - "MaxPendingRequests": { - "type": "integer" - } - }, - "required": [ - "MaxConnections" - ], - "type": "object" - }, - "VirtualGatewayListener": { - "additionalProperties": false, - "properties": { - "ConnectionPool": { - "$ref": "#/definitions/VirtualGatewayConnectionPool" - }, - "HealthCheck": { - "$ref": "#/definitions/VirtualGatewayHealthCheckPolicy" - }, - "PortMapping": { - "$ref": "#/definitions/VirtualGatewayPortMapping" - }, - "TLS": { - "$ref": "#/definitions/VirtualGatewayListenerTls" - } - }, - "required": [ - "PortMapping" - ], - "type": "object" - }, - "VirtualGatewayListenerTls": { - "additionalProperties": false, - "properties": { - "Certificate": { - "$ref": "#/definitions/VirtualGatewayListenerTlsCertificate" - }, - "Mode": { - "type": "string" - }, - "Validation": { - "$ref": "#/definitions/VirtualGatewayListenerTlsValidationContext" - } - }, - "required": [ - "Mode", - "Certificate" - ], - "type": "object" - }, - "VirtualGatewayListenerTlsAcmCertificate": { - "additionalProperties": false, - "properties": { - "CertificateArn": { - "type": "string" - } - }, - "required": [ - "CertificateArn" - ], - "type": "object" - }, - "VirtualGatewayListenerTlsCertificate": { - "additionalProperties": false, - "properties": { - "ACM": { - "$ref": "#/definitions/VirtualGatewayListenerTlsAcmCertificate" - }, - "File": { - "$ref": "#/definitions/VirtualGatewayListenerTlsFileCertificate" - }, - "SDS": { - "$ref": "#/definitions/VirtualGatewayListenerTlsSdsCertificate" - } - }, - "type": "object" - }, - "VirtualGatewayListenerTlsFileCertificate": { - "additionalProperties": false, - "properties": { - "CertificateChain": { - "type": "string" - }, - "PrivateKey": { - "type": "string" - } - }, - "required": [ - "PrivateKey", - "CertificateChain" - ], - "type": "object" - }, - "VirtualGatewayListenerTlsSdsCertificate": { - "additionalProperties": false, - "properties": { - "SecretName": { - "type": "string" - } - }, - "required": [ - "SecretName" - ], - "type": "object" - }, - "VirtualGatewayListenerTlsValidationContext": { - "additionalProperties": false, - "properties": { - "SubjectAlternativeNames": { - "$ref": "#/definitions/SubjectAlternativeNames" - }, - "Trust": { - "$ref": "#/definitions/VirtualGatewayListenerTlsValidationContextTrust" - } - }, - "required": [ - "Trust" - ], - "type": "object" - }, - "VirtualGatewayListenerTlsValidationContextTrust": { - "additionalProperties": false, - "properties": { - "File": { - "$ref": "#/definitions/VirtualGatewayTlsValidationContextFileTrust" - }, - "SDS": { - "$ref": "#/definitions/VirtualGatewayTlsValidationContextSdsTrust" - } - }, - "type": "object" - }, - "VirtualGatewayLogging": { - "additionalProperties": false, - "properties": { - "AccessLog": { - "$ref": "#/definitions/VirtualGatewayAccessLog" - } - }, - "type": "object" - }, - "VirtualGatewayPortMapping": { - "additionalProperties": false, - "properties": { - "Port": { - "type": "integer" - }, - "Protocol": { - "type": "string" - } - }, - "required": [ - "Port", - "Protocol" - ], - "type": "object" - }, - "VirtualGatewaySpec": { - "additionalProperties": false, - "properties": { - "BackendDefaults": { - "$ref": "#/definitions/VirtualGatewayBackendDefaults" - }, - "Listeners": { - "items": { - "$ref": "#/definitions/VirtualGatewayListener" - }, - "type": "array", - "uniqueItems": false - }, - "Logging": { - "$ref": "#/definitions/VirtualGatewayLogging" - } - }, - "required": [ - "Listeners" - ], - "type": "object" - }, - "VirtualGatewayTlsValidationContext": { - "additionalProperties": false, - "properties": { - "SubjectAlternativeNames": { - "$ref": "#/definitions/SubjectAlternativeNames" - }, - "Trust": { - "$ref": "#/definitions/VirtualGatewayTlsValidationContextTrust" - } - }, - "required": [ - "Trust" - ], - "type": "object" - }, - "VirtualGatewayTlsValidationContextAcmTrust": { - "additionalProperties": false, - "properties": { - "CertificateAuthorityArns": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "CertificateAuthorityArns" - ], - "type": "object" - }, - "VirtualGatewayTlsValidationContextFileTrust": { - "additionalProperties": false, - "properties": { - "CertificateChain": { - "type": "string" - } - }, - "required": [ - "CertificateChain" - ], - "type": "object" - }, - "VirtualGatewayTlsValidationContextSdsTrust": { - "additionalProperties": false, - "properties": { - "SecretName": { - "type": "string" - } - }, - "required": [ - "SecretName" - ], - "type": "object" - }, - "VirtualGatewayTlsValidationContextTrust": { - "additionalProperties": false, - "properties": { - "ACM": { - "$ref": "#/definitions/VirtualGatewayTlsValidationContextAcmTrust" - }, - "File": { - "$ref": "#/definitions/VirtualGatewayTlsValidationContextFileTrust" - }, - "SDS": { - "$ref": "#/definitions/VirtualGatewayTlsValidationContextSdsTrust" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppMesh::VirtualGateway", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "MeshName": { - "type": "string" - }, - "MeshOwner": { - "type": "string" - }, - "ResourceOwner": { - "type": "string" - }, - "Spec": { - "$ref": "#/definitions/VirtualGatewaySpec" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Uid": { - "type": "string" - }, - "VirtualGatewayName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ResourceOwner", - "/properties/Arn", - "/properties/Uid" - ], - "required": [ - "MeshName", - "Spec" - ], - "typeName": "AWS::AppMesh::VirtualGateway" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MeshName", + "/properties/VirtualGatewayName", + "/properties/MeshOwner" + ], + "definitions": { + "JsonFormatRef": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "LoggingFormat": { + "additionalProperties": false, + "properties": { + "Json": { + "items": { + "$ref": "#/definitions/JsonFormatRef" + }, + "type": "array", + "uniqueItems": false + }, + "Text": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectAlternativeNameMatchers": { + "additionalProperties": false, + "properties": { + "Exact": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "SubjectAlternativeNames": { + "additionalProperties": false, + "properties": { + "Match": { + "$ref": "#/definitions/SubjectAlternativeNameMatchers" + } + }, + "required": [ + "Match" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VirtualGatewayAccessLog": { + "additionalProperties": false, + "properties": { + "File": { + "$ref": "#/definitions/VirtualGatewayFileAccessLog" + } + }, + "type": "object" + }, + "VirtualGatewayBackendDefaults": { + "additionalProperties": false, + "properties": { + "ClientPolicy": { + "$ref": "#/definitions/VirtualGatewayClientPolicy" + } + }, + "type": "object" + }, + "VirtualGatewayClientPolicy": { + "additionalProperties": false, + "properties": { + "TLS": { + "$ref": "#/definitions/VirtualGatewayClientPolicyTls" + } + }, + "type": "object" + }, + "VirtualGatewayClientPolicyTls": { + "additionalProperties": false, + "properties": { + "Certificate": { + "$ref": "#/definitions/VirtualGatewayClientTlsCertificate" + }, + "Enforce": { + "type": "boolean" + }, + "Ports": { + "items": { + "type": "integer" + }, + "type": "array", + "uniqueItems": false + }, + "Validation": { + "$ref": "#/definitions/VirtualGatewayTlsValidationContext" + } + }, + "required": [ + "Validation" + ], + "type": "object" + }, + "VirtualGatewayClientTlsCertificate": { + "additionalProperties": false, + "properties": { + "File": { + "$ref": "#/definitions/VirtualGatewayListenerTlsFileCertificate" + }, + "SDS": { + "$ref": "#/definitions/VirtualGatewayListenerTlsSdsCertificate" + } + }, + "type": "object" + }, + "VirtualGatewayConnectionPool": { + "additionalProperties": false, + "properties": { + "GRPC": { + "$ref": "#/definitions/VirtualGatewayGrpcConnectionPool" + }, + "HTTP": { + "$ref": "#/definitions/VirtualGatewayHttpConnectionPool" + }, + "HTTP2": { + "$ref": "#/definitions/VirtualGatewayHttp2ConnectionPool" + } + }, + "type": "object" + }, + "VirtualGatewayFileAccessLog": { + "additionalProperties": false, + "properties": { + "Format": { + "$ref": "#/definitions/LoggingFormat" + }, + "Path": { + "type": "string" + } + }, + "required": [ + "Path" + ], + "type": "object" + }, + "VirtualGatewayGrpcConnectionPool": { + "additionalProperties": false, + "properties": { + "MaxRequests": { + "type": "integer" + } + }, + "required": [ + "MaxRequests" + ], + "type": "object" + }, + "VirtualGatewayHealthCheckPolicy": { + "additionalProperties": false, + "properties": { + "HealthyThreshold": { + "type": "integer" + }, + "IntervalMillis": { + "type": "integer" + }, + "Path": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "Protocol": { + "type": "string" + }, + "TimeoutMillis": { + "type": "integer" + }, + "UnhealthyThreshold": { + "type": "integer" + } + }, + "required": [ + "UnhealthyThreshold", + "HealthyThreshold", + "TimeoutMillis", + "Protocol", + "IntervalMillis" + ], + "type": "object" + }, + "VirtualGatewayHttp2ConnectionPool": { + "additionalProperties": false, + "properties": { + "MaxRequests": { + "type": "integer" + } + }, + "required": [ + "MaxRequests" + ], + "type": "object" + }, + "VirtualGatewayHttpConnectionPool": { + "additionalProperties": false, + "properties": { + "MaxConnections": { + "type": "integer" + }, + "MaxPendingRequests": { + "type": "integer" + } + }, + "required": [ + "MaxConnections" + ], + "type": "object" + }, + "VirtualGatewayListener": { + "additionalProperties": false, + "properties": { + "ConnectionPool": { + "$ref": "#/definitions/VirtualGatewayConnectionPool" + }, + "HealthCheck": { + "$ref": "#/definitions/VirtualGatewayHealthCheckPolicy" + }, + "PortMapping": { + "$ref": "#/definitions/VirtualGatewayPortMapping" + }, + "TLS": { + "$ref": "#/definitions/VirtualGatewayListenerTls" + } + }, + "required": [ + "PortMapping" + ], + "type": "object" + }, + "VirtualGatewayListenerTls": { + "additionalProperties": false, + "properties": { + "Certificate": { + "$ref": "#/definitions/VirtualGatewayListenerTlsCertificate" + }, + "Mode": { + "type": "string" + }, + "Validation": { + "$ref": "#/definitions/VirtualGatewayListenerTlsValidationContext" + } + }, + "required": [ + "Mode", + "Certificate" + ], + "type": "object" + }, + "VirtualGatewayListenerTlsAcmCertificate": { + "additionalProperties": false, + "properties": { + "CertificateArn": { + "type": "string" + } + }, + "required": [ + "CertificateArn" + ], + "type": "object" + }, + "VirtualGatewayListenerTlsCertificate": { + "additionalProperties": false, + "properties": { + "ACM": { + "$ref": "#/definitions/VirtualGatewayListenerTlsAcmCertificate" + }, + "File": { + "$ref": "#/definitions/VirtualGatewayListenerTlsFileCertificate" + }, + "SDS": { + "$ref": "#/definitions/VirtualGatewayListenerTlsSdsCertificate" + } + }, + "type": "object" + }, + "VirtualGatewayListenerTlsFileCertificate": { + "additionalProperties": false, + "properties": { + "CertificateChain": { + "type": "string" + }, + "PrivateKey": { + "type": "string" + } + }, + "required": [ + "PrivateKey", + "CertificateChain" + ], + "type": "object" + }, + "VirtualGatewayListenerTlsSdsCertificate": { + "additionalProperties": false, + "properties": { + "SecretName": { + "type": "string" + } + }, + "required": [ + "SecretName" + ], + "type": "object" + }, + "VirtualGatewayListenerTlsValidationContext": { + "additionalProperties": false, + "properties": { + "SubjectAlternativeNames": { + "$ref": "#/definitions/SubjectAlternativeNames" + }, + "Trust": { + "$ref": "#/definitions/VirtualGatewayListenerTlsValidationContextTrust" + } + }, + "required": [ + "Trust" + ], + "type": "object" + }, + "VirtualGatewayListenerTlsValidationContextTrust": { + "additionalProperties": false, + "properties": { + "File": { + "$ref": "#/definitions/VirtualGatewayTlsValidationContextFileTrust" + }, + "SDS": { + "$ref": "#/definitions/VirtualGatewayTlsValidationContextSdsTrust" + } + }, + "type": "object" + }, + "VirtualGatewayLogging": { + "additionalProperties": false, + "properties": { + "AccessLog": { + "$ref": "#/definitions/VirtualGatewayAccessLog" + } + }, + "type": "object" + }, + "VirtualGatewayPortMapping": { + "additionalProperties": false, + "properties": { + "Port": { + "type": "integer" + }, + "Protocol": { + "type": "string" + } + }, + "required": [ + "Port", + "Protocol" + ], + "type": "object" + }, + "VirtualGatewaySpec": { + "additionalProperties": false, + "properties": { + "BackendDefaults": { + "$ref": "#/definitions/VirtualGatewayBackendDefaults" + }, + "Listeners": { + "items": { + "$ref": "#/definitions/VirtualGatewayListener" + }, + "type": "array", + "uniqueItems": false + }, + "Logging": { + "$ref": "#/definitions/VirtualGatewayLogging" + } + }, + "required": [ + "Listeners" + ], + "type": "object" + }, + "VirtualGatewayTlsValidationContext": { + "additionalProperties": false, + "properties": { + "SubjectAlternativeNames": { + "$ref": "#/definitions/SubjectAlternativeNames" + }, + "Trust": { + "$ref": "#/definitions/VirtualGatewayTlsValidationContextTrust" + } + }, + "required": [ + "Trust" + ], + "type": "object" + }, + "VirtualGatewayTlsValidationContextAcmTrust": { + "additionalProperties": false, + "properties": { + "CertificateAuthorityArns": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "CertificateAuthorityArns" + ], + "type": "object" + }, + "VirtualGatewayTlsValidationContextFileTrust": { + "additionalProperties": false, + "properties": { + "CertificateChain": { + "type": "string" + } + }, + "required": [ + "CertificateChain" + ], + "type": "object" + }, + "VirtualGatewayTlsValidationContextSdsTrust": { + "additionalProperties": false, + "properties": { + "SecretName": { + "type": "string" + } + }, + "required": [ + "SecretName" + ], + "type": "object" + }, + "VirtualGatewayTlsValidationContextTrust": { + "additionalProperties": false, + "properties": { + "ACM": { + "$ref": "#/definitions/VirtualGatewayTlsValidationContextAcmTrust" + }, + "File": { + "$ref": "#/definitions/VirtualGatewayTlsValidationContextFileTrust" + }, + "SDS": { + "$ref": "#/definitions/VirtualGatewayTlsValidationContextSdsTrust" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppMesh::VirtualGateway", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "MeshName": { + "type": "string" + }, + "MeshOwner": { + "type": "string" + }, + "ResourceOwner": { + "type": "string" + }, + "Spec": { + "$ref": "#/definitions/VirtualGatewaySpec" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Uid": { + "type": "string" + }, + "VirtualGatewayName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/ResourceOwner", + "/properties/Arn", + "/properties/Uid" + ], + "required": [ + "MeshName", + "Spec" + ], + "typeName": "AWS::AppMesh::VirtualGateway" +} diff --git a/src/schema/aws-appmesh-virtualnode.json b/src/schema/aws-appmesh-virtualnode.json index 21cd9cc1..6aacab22 100644 --- a/src/schema/aws-appmesh-virtualnode.json +++ b/src/schema/aws-appmesh-virtualnode.json @@ -1,752 +1,752 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MeshName", - "/properties/VirtualNodeName", - "/properties/MeshOwner" - ], - "definitions": { - "AccessLog": { - "additionalProperties": false, - "properties": { - "File": { - "$ref": "#/definitions/FileAccessLog" - } - }, - "type": "object" - }, - "AwsCloudMapInstanceAttribute": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "AwsCloudMapServiceDiscovery": { - "additionalProperties": false, - "properties": { - "Attributes": { - "items": { - "$ref": "#/definitions/AwsCloudMapInstanceAttribute" - }, - "type": "array", - "uniqueItems": false - }, - "IpPreference": { - "type": "string" - }, - "NamespaceName": { - "type": "string" - }, - "ServiceName": { - "type": "string" - } - }, - "required": [ - "NamespaceName", - "ServiceName" - ], - "type": "object" - }, - "Backend": { - "additionalProperties": false, - "properties": { - "VirtualService": { - "$ref": "#/definitions/VirtualServiceBackend" - } - }, - "type": "object" - }, - "BackendDefaults": { - "additionalProperties": false, - "properties": { - "ClientPolicy": { - "$ref": "#/definitions/ClientPolicy" - } - }, - "type": "object" - }, - "ClientPolicy": { - "additionalProperties": false, - "properties": { - "TLS": { - "$ref": "#/definitions/ClientPolicyTls" - } - }, - "type": "object" - }, - "ClientPolicyTls": { - "additionalProperties": false, - "properties": { - "Certificate": { - "$ref": "#/definitions/ClientTlsCertificate" - }, - "Enforce": { - "type": "boolean" - }, - "Ports": { - "items": { - "type": "integer" - }, - "type": "array", - "uniqueItems": false - }, - "Validation": { - "$ref": "#/definitions/TlsValidationContext" - } - }, - "required": [ - "Validation" - ], - "type": "object" - }, - "ClientTlsCertificate": { - "additionalProperties": false, - "properties": { - "File": { - "$ref": "#/definitions/ListenerTlsFileCertificate" - }, - "SDS": { - "$ref": "#/definitions/ListenerTlsSdsCertificate" - } - }, - "type": "object" - }, - "DnsServiceDiscovery": { - "additionalProperties": false, - "properties": { - "Hostname": { - "type": "string" - }, - "IpPreference": { - "type": "string" - }, - "ResponseType": { - "type": "string" - } - }, - "required": [ - "Hostname" - ], - "type": "object" - }, - "Duration": { - "additionalProperties": false, - "properties": { - "Unit": { - "type": "string" - }, - "Value": { - "type": "integer" - } - }, - "required": [ - "Value", - "Unit" - ], - "type": "object" - }, - "FileAccessLog": { - "additionalProperties": false, - "properties": { - "Format": { - "$ref": "#/definitions/LoggingFormat" - }, - "Path": { - "type": "string" - } - }, - "required": [ - "Path" - ], - "type": "object" - }, - "GrpcTimeout": { - "additionalProperties": false, - "properties": { - "Idle": { - "$ref": "#/definitions/Duration" - }, - "PerRequest": { - "$ref": "#/definitions/Duration" - } - }, - "type": "object" - }, - "HealthCheck": { - "additionalProperties": false, - "properties": { - "HealthyThreshold": { - "type": "integer" - }, - "IntervalMillis": { - "type": "integer" - }, - "Path": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "Protocol": { - "type": "string" - }, - "TimeoutMillis": { - "type": "integer" - }, - "UnhealthyThreshold": { - "type": "integer" - } - }, - "required": [ - "UnhealthyThreshold", - "HealthyThreshold", - "TimeoutMillis", - "Protocol", - "IntervalMillis" - ], - "type": "object" - }, - "HttpTimeout": { - "additionalProperties": false, - "properties": { - "Idle": { - "$ref": "#/definitions/Duration" - }, - "PerRequest": { - "$ref": "#/definitions/Duration" - } - }, - "type": "object" - }, - "JsonFormatRef": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Listener": { - "additionalProperties": false, - "properties": { - "ConnectionPool": { - "$ref": "#/definitions/VirtualNodeConnectionPool" - }, - "HealthCheck": { - "$ref": "#/definitions/HealthCheck" - }, - "OutlierDetection": { - "$ref": "#/definitions/OutlierDetection" - }, - "PortMapping": { - "$ref": "#/definitions/PortMapping" - }, - "TLS": { - "$ref": "#/definitions/ListenerTls" - }, - "Timeout": { - "$ref": "#/definitions/ListenerTimeout" - } - }, - "required": [ - "PortMapping" - ], - "type": "object" - }, - "ListenerTimeout": { - "additionalProperties": false, - "properties": { - "GRPC": { - "$ref": "#/definitions/GrpcTimeout" - }, - "HTTP": { - "$ref": "#/definitions/HttpTimeout" - }, - "HTTP2": { - "$ref": "#/definitions/HttpTimeout" - }, - "TCP": { - "$ref": "#/definitions/TcpTimeout" - } - }, - "type": "object" - }, - "ListenerTls": { - "additionalProperties": false, - "properties": { - "Certificate": { - "$ref": "#/definitions/ListenerTlsCertificate" - }, - "Mode": { - "type": "string" - }, - "Validation": { - "$ref": "#/definitions/ListenerTlsValidationContext" - } - }, - "required": [ - "Mode", - "Certificate" - ], - "type": "object" - }, - "ListenerTlsAcmCertificate": { - "additionalProperties": false, - "properties": { - "CertificateArn": { - "type": "string" - } - }, - "required": [ - "CertificateArn" - ], - "type": "object" - }, - "ListenerTlsCertificate": { - "additionalProperties": false, - "properties": { - "ACM": { - "$ref": "#/definitions/ListenerTlsAcmCertificate" - }, - "File": { - "$ref": "#/definitions/ListenerTlsFileCertificate" - }, - "SDS": { - "$ref": "#/definitions/ListenerTlsSdsCertificate" - } - }, - "type": "object" - }, - "ListenerTlsFileCertificate": { - "additionalProperties": false, - "properties": { - "CertificateChain": { - "type": "string" - }, - "PrivateKey": { - "type": "string" - } - }, - "required": [ - "PrivateKey", - "CertificateChain" - ], - "type": "object" - }, - "ListenerTlsSdsCertificate": { - "additionalProperties": false, - "properties": { - "SecretName": { - "type": "string" - } - }, - "required": [ - "SecretName" - ], - "type": "object" - }, - "ListenerTlsValidationContext": { - "additionalProperties": false, - "properties": { - "SubjectAlternativeNames": { - "$ref": "#/definitions/SubjectAlternativeNames" - }, - "Trust": { - "$ref": "#/definitions/ListenerTlsValidationContextTrust" - } - }, - "required": [ - "Trust" - ], - "type": "object" - }, - "ListenerTlsValidationContextTrust": { - "additionalProperties": false, - "properties": { - "File": { - "$ref": "#/definitions/TlsValidationContextFileTrust" - }, - "SDS": { - "$ref": "#/definitions/TlsValidationContextSdsTrust" - } - }, - "type": "object" - }, - "Logging": { - "additionalProperties": false, - "properties": { - "AccessLog": { - "$ref": "#/definitions/AccessLog" - } - }, - "type": "object" - }, - "LoggingFormat": { - "additionalProperties": false, - "properties": { - "Json": { - "items": { - "$ref": "#/definitions/JsonFormatRef" - }, - "type": "array", - "uniqueItems": false - }, - "Text": { - "type": "string" - } - }, - "type": "object" - }, - "OutlierDetection": { - "additionalProperties": false, - "properties": { - "BaseEjectionDuration": { - "$ref": "#/definitions/Duration" - }, - "Interval": { - "$ref": "#/definitions/Duration" - }, - "MaxEjectionPercent": { - "type": "integer" - }, - "MaxServerErrors": { - "type": "integer" - } - }, - "required": [ - "MaxEjectionPercent", - "BaseEjectionDuration", - "MaxServerErrors", - "Interval" - ], - "type": "object" - }, - "PortMapping": { - "additionalProperties": false, - "properties": { - "Port": { - "type": "integer" - }, - "Protocol": { - "type": "string" - } - }, - "required": [ - "Port", - "Protocol" - ], - "type": "object" - }, - "ServiceDiscovery": { - "additionalProperties": false, - "properties": { - "AWSCloudMap": { - "$ref": "#/definitions/AwsCloudMapServiceDiscovery" - }, - "DNS": { - "$ref": "#/definitions/DnsServiceDiscovery" - } - }, - "type": "object" - }, - "SubjectAlternativeNameMatchers": { - "additionalProperties": false, - "properties": { - "Exact": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "SubjectAlternativeNames": { - "additionalProperties": false, - "properties": { - "Match": { - "$ref": "#/definitions/SubjectAlternativeNameMatchers" - } - }, - "required": [ - "Match" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TcpTimeout": { - "additionalProperties": false, - "properties": { - "Idle": { - "$ref": "#/definitions/Duration" - } - }, - "type": "object" - }, - "TlsValidationContext": { - "additionalProperties": false, - "properties": { - "SubjectAlternativeNames": { - "$ref": "#/definitions/SubjectAlternativeNames" - }, - "Trust": { - "$ref": "#/definitions/TlsValidationContextTrust" - } - }, - "required": [ - "Trust" - ], - "type": "object" - }, - "TlsValidationContextAcmTrust": { - "additionalProperties": false, - "properties": { - "CertificateAuthorityArns": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "CertificateAuthorityArns" - ], - "type": "object" - }, - "TlsValidationContextFileTrust": { - "additionalProperties": false, - "properties": { - "CertificateChain": { - "type": "string" - } - }, - "required": [ - "CertificateChain" - ], - "type": "object" - }, - "TlsValidationContextSdsTrust": { - "additionalProperties": false, - "properties": { - "SecretName": { - "type": "string" - } - }, - "required": [ - "SecretName" - ], - "type": "object" - }, - "TlsValidationContextTrust": { - "additionalProperties": false, - "properties": { - "ACM": { - "$ref": "#/definitions/TlsValidationContextAcmTrust" - }, - "File": { - "$ref": "#/definitions/TlsValidationContextFileTrust" - }, - "SDS": { - "$ref": "#/definitions/TlsValidationContextSdsTrust" - } - }, - "type": "object" - }, - "VirtualNodeConnectionPool": { - "additionalProperties": false, - "properties": { - "GRPC": { - "$ref": "#/definitions/VirtualNodeGrpcConnectionPool" - }, - "HTTP": { - "$ref": "#/definitions/VirtualNodeHttpConnectionPool" - }, - "HTTP2": { - "$ref": "#/definitions/VirtualNodeHttp2ConnectionPool" - }, - "TCP": { - "$ref": "#/definitions/VirtualNodeTcpConnectionPool" - } - }, - "type": "object" - }, - "VirtualNodeGrpcConnectionPool": { - "additionalProperties": false, - "properties": { - "MaxRequests": { - "type": "integer" - } - }, - "required": [ - "MaxRequests" - ], - "type": "object" - }, - "VirtualNodeHttp2ConnectionPool": { - "additionalProperties": false, - "properties": { - "MaxRequests": { - "type": "integer" - } - }, - "required": [ - "MaxRequests" - ], - "type": "object" - }, - "VirtualNodeHttpConnectionPool": { - "additionalProperties": false, - "properties": { - "MaxConnections": { - "type": "integer" - }, - "MaxPendingRequests": { - "type": "integer" - } - }, - "required": [ - "MaxConnections" - ], - "type": "object" - }, - "VirtualNodeSpec": { - "additionalProperties": false, - "properties": { - "BackendDefaults": { - "$ref": "#/definitions/BackendDefaults" - }, - "Backends": { - "items": { - "$ref": "#/definitions/Backend" - }, - "type": "array", - "uniqueItems": false - }, - "Listeners": { - "items": { - "$ref": "#/definitions/Listener" - }, - "type": "array", - "uniqueItems": false - }, - "Logging": { - "$ref": "#/definitions/Logging" - }, - "ServiceDiscovery": { - "$ref": "#/definitions/ServiceDiscovery" - } - }, - "type": "object" - }, - "VirtualNodeTcpConnectionPool": { - "additionalProperties": false, - "properties": { - "MaxConnections": { - "type": "integer" - } - }, - "required": [ - "MaxConnections" - ], - "type": "object" - }, - "VirtualServiceBackend": { - "additionalProperties": false, - "properties": { - "ClientPolicy": { - "$ref": "#/definitions/ClientPolicy" - }, - "VirtualServiceName": { - "type": "string" - } - }, - "required": [ - "VirtualServiceName" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppMesh::VirtualNode", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "MeshName": { - "type": "string" - }, - "MeshOwner": { - "type": "string" - }, - "ResourceOwner": { - "type": "string" - }, - "Spec": { - "$ref": "#/definitions/VirtualNodeSpec" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Uid": { - "type": "string" - }, - "VirtualNodeName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ResourceOwner", - "/properties/Arn", - "/properties/Uid" - ], - "required": [ - "MeshName", - "Spec" - ], - "typeName": "AWS::AppMesh::VirtualNode" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MeshName", + "/properties/VirtualNodeName", + "/properties/MeshOwner" + ], + "definitions": { + "AccessLog": { + "additionalProperties": false, + "properties": { + "File": { + "$ref": "#/definitions/FileAccessLog" + } + }, + "type": "object" + }, + "AwsCloudMapInstanceAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "AwsCloudMapServiceDiscovery": { + "additionalProperties": false, + "properties": { + "Attributes": { + "items": { + "$ref": "#/definitions/AwsCloudMapInstanceAttribute" + }, + "type": "array", + "uniqueItems": false + }, + "IpPreference": { + "type": "string" + }, + "NamespaceName": { + "type": "string" + }, + "ServiceName": { + "type": "string" + } + }, + "required": [ + "NamespaceName", + "ServiceName" + ], + "type": "object" + }, + "Backend": { + "additionalProperties": false, + "properties": { + "VirtualService": { + "$ref": "#/definitions/VirtualServiceBackend" + } + }, + "type": "object" + }, + "BackendDefaults": { + "additionalProperties": false, + "properties": { + "ClientPolicy": { + "$ref": "#/definitions/ClientPolicy" + } + }, + "type": "object" + }, + "ClientPolicy": { + "additionalProperties": false, + "properties": { + "TLS": { + "$ref": "#/definitions/ClientPolicyTls" + } + }, + "type": "object" + }, + "ClientPolicyTls": { + "additionalProperties": false, + "properties": { + "Certificate": { + "$ref": "#/definitions/ClientTlsCertificate" + }, + "Enforce": { + "type": "boolean" + }, + "Ports": { + "items": { + "type": "integer" + }, + "type": "array", + "uniqueItems": false + }, + "Validation": { + "$ref": "#/definitions/TlsValidationContext" + } + }, + "required": [ + "Validation" + ], + "type": "object" + }, + "ClientTlsCertificate": { + "additionalProperties": false, + "properties": { + "File": { + "$ref": "#/definitions/ListenerTlsFileCertificate" + }, + "SDS": { + "$ref": "#/definitions/ListenerTlsSdsCertificate" + } + }, + "type": "object" + }, + "DnsServiceDiscovery": { + "additionalProperties": false, + "properties": { + "Hostname": { + "type": "string" + }, + "IpPreference": { + "type": "string" + }, + "ResponseType": { + "type": "string" + } + }, + "required": [ + "Hostname" + ], + "type": "object" + }, + "Duration": { + "additionalProperties": false, + "properties": { + "Unit": { + "type": "string" + }, + "Value": { + "type": "integer" + } + }, + "required": [ + "Value", + "Unit" + ], + "type": "object" + }, + "FileAccessLog": { + "additionalProperties": false, + "properties": { + "Format": { + "$ref": "#/definitions/LoggingFormat" + }, + "Path": { + "type": "string" + } + }, + "required": [ + "Path" + ], + "type": "object" + }, + "GrpcTimeout": { + "additionalProperties": false, + "properties": { + "Idle": { + "$ref": "#/definitions/Duration" + }, + "PerRequest": { + "$ref": "#/definitions/Duration" + } + }, + "type": "object" + }, + "HealthCheck": { + "additionalProperties": false, + "properties": { + "HealthyThreshold": { + "type": "integer" + }, + "IntervalMillis": { + "type": "integer" + }, + "Path": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "Protocol": { + "type": "string" + }, + "TimeoutMillis": { + "type": "integer" + }, + "UnhealthyThreshold": { + "type": "integer" + } + }, + "required": [ + "UnhealthyThreshold", + "HealthyThreshold", + "TimeoutMillis", + "Protocol", + "IntervalMillis" + ], + "type": "object" + }, + "HttpTimeout": { + "additionalProperties": false, + "properties": { + "Idle": { + "$ref": "#/definitions/Duration" + }, + "PerRequest": { + "$ref": "#/definitions/Duration" + } + }, + "type": "object" + }, + "JsonFormatRef": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "Listener": { + "additionalProperties": false, + "properties": { + "ConnectionPool": { + "$ref": "#/definitions/VirtualNodeConnectionPool" + }, + "HealthCheck": { + "$ref": "#/definitions/HealthCheck" + }, + "OutlierDetection": { + "$ref": "#/definitions/OutlierDetection" + }, + "PortMapping": { + "$ref": "#/definitions/PortMapping" + }, + "TLS": { + "$ref": "#/definitions/ListenerTls" + }, + "Timeout": { + "$ref": "#/definitions/ListenerTimeout" + } + }, + "required": [ + "PortMapping" + ], + "type": "object" + }, + "ListenerTimeout": { + "additionalProperties": false, + "properties": { + "GRPC": { + "$ref": "#/definitions/GrpcTimeout" + }, + "HTTP": { + "$ref": "#/definitions/HttpTimeout" + }, + "HTTP2": { + "$ref": "#/definitions/HttpTimeout" + }, + "TCP": { + "$ref": "#/definitions/TcpTimeout" + } + }, + "type": "object" + }, + "ListenerTls": { + "additionalProperties": false, + "properties": { + "Certificate": { + "$ref": "#/definitions/ListenerTlsCertificate" + }, + "Mode": { + "type": "string" + }, + "Validation": { + "$ref": "#/definitions/ListenerTlsValidationContext" + } + }, + "required": [ + "Mode", + "Certificate" + ], + "type": "object" + }, + "ListenerTlsAcmCertificate": { + "additionalProperties": false, + "properties": { + "CertificateArn": { + "type": "string" + } + }, + "required": [ + "CertificateArn" + ], + "type": "object" + }, + "ListenerTlsCertificate": { + "additionalProperties": false, + "properties": { + "ACM": { + "$ref": "#/definitions/ListenerTlsAcmCertificate" + }, + "File": { + "$ref": "#/definitions/ListenerTlsFileCertificate" + }, + "SDS": { + "$ref": "#/definitions/ListenerTlsSdsCertificate" + } + }, + "type": "object" + }, + "ListenerTlsFileCertificate": { + "additionalProperties": false, + "properties": { + "CertificateChain": { + "type": "string" + }, + "PrivateKey": { + "type": "string" + } + }, + "required": [ + "PrivateKey", + "CertificateChain" + ], + "type": "object" + }, + "ListenerTlsSdsCertificate": { + "additionalProperties": false, + "properties": { + "SecretName": { + "type": "string" + } + }, + "required": [ + "SecretName" + ], + "type": "object" + }, + "ListenerTlsValidationContext": { + "additionalProperties": false, + "properties": { + "SubjectAlternativeNames": { + "$ref": "#/definitions/SubjectAlternativeNames" + }, + "Trust": { + "$ref": "#/definitions/ListenerTlsValidationContextTrust" + } + }, + "required": [ + "Trust" + ], + "type": "object" + }, + "ListenerTlsValidationContextTrust": { + "additionalProperties": false, + "properties": { + "File": { + "$ref": "#/definitions/TlsValidationContextFileTrust" + }, + "SDS": { + "$ref": "#/definitions/TlsValidationContextSdsTrust" + } + }, + "type": "object" + }, + "Logging": { + "additionalProperties": false, + "properties": { + "AccessLog": { + "$ref": "#/definitions/AccessLog" + } + }, + "type": "object" + }, + "LoggingFormat": { + "additionalProperties": false, + "properties": { + "Json": { + "items": { + "$ref": "#/definitions/JsonFormatRef" + }, + "type": "array", + "uniqueItems": false + }, + "Text": { + "type": "string" + } + }, + "type": "object" + }, + "OutlierDetection": { + "additionalProperties": false, + "properties": { + "BaseEjectionDuration": { + "$ref": "#/definitions/Duration" + }, + "Interval": { + "$ref": "#/definitions/Duration" + }, + "MaxEjectionPercent": { + "type": "integer" + }, + "MaxServerErrors": { + "type": "integer" + } + }, + "required": [ + "MaxEjectionPercent", + "BaseEjectionDuration", + "MaxServerErrors", + "Interval" + ], + "type": "object" + }, + "PortMapping": { + "additionalProperties": false, + "properties": { + "Port": { + "type": "integer" + }, + "Protocol": { + "type": "string" + } + }, + "required": [ + "Port", + "Protocol" + ], + "type": "object" + }, + "ServiceDiscovery": { + "additionalProperties": false, + "properties": { + "AWSCloudMap": { + "$ref": "#/definitions/AwsCloudMapServiceDiscovery" + }, + "DNS": { + "$ref": "#/definitions/DnsServiceDiscovery" + } + }, + "type": "object" + }, + "SubjectAlternativeNameMatchers": { + "additionalProperties": false, + "properties": { + "Exact": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "SubjectAlternativeNames": { + "additionalProperties": false, + "properties": { + "Match": { + "$ref": "#/definitions/SubjectAlternativeNameMatchers" + } + }, + "required": [ + "Match" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TcpTimeout": { + "additionalProperties": false, + "properties": { + "Idle": { + "$ref": "#/definitions/Duration" + } + }, + "type": "object" + }, + "TlsValidationContext": { + "additionalProperties": false, + "properties": { + "SubjectAlternativeNames": { + "$ref": "#/definitions/SubjectAlternativeNames" + }, + "Trust": { + "$ref": "#/definitions/TlsValidationContextTrust" + } + }, + "required": [ + "Trust" + ], + "type": "object" + }, + "TlsValidationContextAcmTrust": { + "additionalProperties": false, + "properties": { + "CertificateAuthorityArns": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "CertificateAuthorityArns" + ], + "type": "object" + }, + "TlsValidationContextFileTrust": { + "additionalProperties": false, + "properties": { + "CertificateChain": { + "type": "string" + } + }, + "required": [ + "CertificateChain" + ], + "type": "object" + }, + "TlsValidationContextSdsTrust": { + "additionalProperties": false, + "properties": { + "SecretName": { + "type": "string" + } + }, + "required": [ + "SecretName" + ], + "type": "object" + }, + "TlsValidationContextTrust": { + "additionalProperties": false, + "properties": { + "ACM": { + "$ref": "#/definitions/TlsValidationContextAcmTrust" + }, + "File": { + "$ref": "#/definitions/TlsValidationContextFileTrust" + }, + "SDS": { + "$ref": "#/definitions/TlsValidationContextSdsTrust" + } + }, + "type": "object" + }, + "VirtualNodeConnectionPool": { + "additionalProperties": false, + "properties": { + "GRPC": { + "$ref": "#/definitions/VirtualNodeGrpcConnectionPool" + }, + "HTTP": { + "$ref": "#/definitions/VirtualNodeHttpConnectionPool" + }, + "HTTP2": { + "$ref": "#/definitions/VirtualNodeHttp2ConnectionPool" + }, + "TCP": { + "$ref": "#/definitions/VirtualNodeTcpConnectionPool" + } + }, + "type": "object" + }, + "VirtualNodeGrpcConnectionPool": { + "additionalProperties": false, + "properties": { + "MaxRequests": { + "type": "integer" + } + }, + "required": [ + "MaxRequests" + ], + "type": "object" + }, + "VirtualNodeHttp2ConnectionPool": { + "additionalProperties": false, + "properties": { + "MaxRequests": { + "type": "integer" + } + }, + "required": [ + "MaxRequests" + ], + "type": "object" + }, + "VirtualNodeHttpConnectionPool": { + "additionalProperties": false, + "properties": { + "MaxConnections": { + "type": "integer" + }, + "MaxPendingRequests": { + "type": "integer" + } + }, + "required": [ + "MaxConnections" + ], + "type": "object" + }, + "VirtualNodeSpec": { + "additionalProperties": false, + "properties": { + "BackendDefaults": { + "$ref": "#/definitions/BackendDefaults" + }, + "Backends": { + "items": { + "$ref": "#/definitions/Backend" + }, + "type": "array", + "uniqueItems": false + }, + "Listeners": { + "items": { + "$ref": "#/definitions/Listener" + }, + "type": "array", + "uniqueItems": false + }, + "Logging": { + "$ref": "#/definitions/Logging" + }, + "ServiceDiscovery": { + "$ref": "#/definitions/ServiceDiscovery" + } + }, + "type": "object" + }, + "VirtualNodeTcpConnectionPool": { + "additionalProperties": false, + "properties": { + "MaxConnections": { + "type": "integer" + } + }, + "required": [ + "MaxConnections" + ], + "type": "object" + }, + "VirtualServiceBackend": { + "additionalProperties": false, + "properties": { + "ClientPolicy": { + "$ref": "#/definitions/ClientPolicy" + }, + "VirtualServiceName": { + "type": "string" + } + }, + "required": [ + "VirtualServiceName" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppMesh::VirtualNode", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "MeshName": { + "type": "string" + }, + "MeshOwner": { + "type": "string" + }, + "ResourceOwner": { + "type": "string" + }, + "Spec": { + "$ref": "#/definitions/VirtualNodeSpec" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Uid": { + "type": "string" + }, + "VirtualNodeName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/ResourceOwner", + "/properties/Arn", + "/properties/Uid" + ], + "required": [ + "MeshName", + "Spec" + ], + "typeName": "AWS::AppMesh::VirtualNode" +} diff --git a/src/schema/aws-appmesh-virtualrouter.json b/src/schema/aws-appmesh-virtualrouter.json index e97aab47..36271de3 100644 --- a/src/schema/aws-appmesh-virtualrouter.json +++ b/src/schema/aws-appmesh-virtualrouter.json @@ -1,118 +1,118 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MeshName", - "/properties/VirtualRouterName", - "/properties/MeshOwner" - ], - "definitions": { - "PortMapping": { - "additionalProperties": false, - "properties": { - "Port": { - "type": "integer" - }, - "Protocol": { - "type": "string" - } - }, - "required": [ - "Port", - "Protocol" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "VirtualRouterListener": { - "additionalProperties": false, - "properties": { - "PortMapping": { - "$ref": "#/definitions/PortMapping" - } - }, - "required": [ - "PortMapping" - ], - "type": "object" - }, - "VirtualRouterSpec": { - "additionalProperties": false, - "properties": { - "Listeners": { - "items": { - "$ref": "#/definitions/VirtualRouterListener" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Listeners" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppMesh::VirtualRouter", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "MeshName": { - "type": "string" - }, - "MeshOwner": { - "type": "string" - }, - "ResourceOwner": { - "type": "string" - }, - "Spec": { - "$ref": "#/definitions/VirtualRouterSpec" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Uid": { - "type": "string" - }, - "VirtualRouterName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ResourceOwner", - "/properties/Arn", - "/properties/Uid" - ], - "required": [ - "MeshName", - "Spec" - ], - "typeName": "AWS::AppMesh::VirtualRouter" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MeshName", + "/properties/VirtualRouterName", + "/properties/MeshOwner" + ], + "definitions": { + "PortMapping": { + "additionalProperties": false, + "properties": { + "Port": { + "type": "integer" + }, + "Protocol": { + "type": "string" + } + }, + "required": [ + "Port", + "Protocol" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VirtualRouterListener": { + "additionalProperties": false, + "properties": { + "PortMapping": { + "$ref": "#/definitions/PortMapping" + } + }, + "required": [ + "PortMapping" + ], + "type": "object" + }, + "VirtualRouterSpec": { + "additionalProperties": false, + "properties": { + "Listeners": { + "items": { + "$ref": "#/definitions/VirtualRouterListener" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Listeners" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppMesh::VirtualRouter", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "MeshName": { + "type": "string" + }, + "MeshOwner": { + "type": "string" + }, + "ResourceOwner": { + "type": "string" + }, + "Spec": { + "$ref": "#/definitions/VirtualRouterSpec" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Uid": { + "type": "string" + }, + "VirtualRouterName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/ResourceOwner", + "/properties/Arn", + "/properties/Uid" + ], + "required": [ + "MeshName", + "Spec" + ], + "typeName": "AWS::AppMesh::VirtualRouter" +} diff --git a/src/schema/aws-appmesh-virtualservice.json b/src/schema/aws-appmesh-virtualservice.json index 09312c0e..67f55507 100644 --- a/src/schema/aws-appmesh-virtualservice.json +++ b/src/schema/aws-appmesh-virtualservice.json @@ -1,120 +1,120 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MeshName", - "/properties/VirtualServiceName", - "/properties/MeshOwner" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "VirtualNodeServiceProvider": { - "additionalProperties": false, - "properties": { - "VirtualNodeName": { - "type": "string" - } - }, - "required": [ - "VirtualNodeName" - ], - "type": "object" - }, - "VirtualRouterServiceProvider": { - "additionalProperties": false, - "properties": { - "VirtualRouterName": { - "type": "string" - } - }, - "required": [ - "VirtualRouterName" - ], - "type": "object" - }, - "VirtualServiceProvider": { - "additionalProperties": false, - "properties": { - "VirtualNode": { - "$ref": "#/definitions/VirtualNodeServiceProvider" - }, - "VirtualRouter": { - "$ref": "#/definitions/VirtualRouterServiceProvider" - } - }, - "type": "object" - }, - "VirtualServiceSpec": { - "additionalProperties": false, - "properties": { - "Provider": { - "$ref": "#/definitions/VirtualServiceProvider" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppMesh::VirtualService", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "MeshName": { - "type": "string" - }, - "MeshOwner": { - "type": "string" - }, - "ResourceOwner": { - "type": "string" - }, - "Spec": { - "$ref": "#/definitions/VirtualServiceSpec" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Uid": { - "type": "string" - }, - "VirtualServiceName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ResourceOwner", - "/properties/Arn", - "/properties/Uid" - ], - "required": [ - "MeshName", - "VirtualServiceName", - "Spec" - ], - "typeName": "AWS::AppMesh::VirtualService" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MeshName", + "/properties/VirtualServiceName", + "/properties/MeshOwner" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VirtualNodeServiceProvider": { + "additionalProperties": false, + "properties": { + "VirtualNodeName": { + "type": "string" + } + }, + "required": [ + "VirtualNodeName" + ], + "type": "object" + }, + "VirtualRouterServiceProvider": { + "additionalProperties": false, + "properties": { + "VirtualRouterName": { + "type": "string" + } + }, + "required": [ + "VirtualRouterName" + ], + "type": "object" + }, + "VirtualServiceProvider": { + "additionalProperties": false, + "properties": { + "VirtualNode": { + "$ref": "#/definitions/VirtualNodeServiceProvider" + }, + "VirtualRouter": { + "$ref": "#/definitions/VirtualRouterServiceProvider" + } + }, + "type": "object" + }, + "VirtualServiceSpec": { + "additionalProperties": false, + "properties": { + "Provider": { + "$ref": "#/definitions/VirtualServiceProvider" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppMesh::VirtualService", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "MeshName": { + "type": "string" + }, + "MeshOwner": { + "type": "string" + }, + "ResourceOwner": { + "type": "string" + }, + "Spec": { + "$ref": "#/definitions/VirtualServiceSpec" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Uid": { + "type": "string" + }, + "VirtualServiceName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/ResourceOwner", + "/properties/Arn", + "/properties/Uid" + ], + "required": [ + "MeshName", + "VirtualServiceName", + "Spec" + ], + "typeName": "AWS::AppMesh::VirtualService" +} diff --git a/src/schema/aws-apprunner-autoscalingconfiguration.json b/src/schema/aws-apprunner-autoscalingconfiguration.json index e83a5afc..e60c3752 100644 --- a/src/schema/aws-apprunner-autoscalingconfiguration.json +++ b/src/schema/aws-apprunner-autoscalingconfiguration.json @@ -1,113 +1,113 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AutoScalingConfigurationName", - "/properties/MaxConcurrency", - "/properties/MaxSize", - "/properties/MinSize", - "/properties/Tags" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Describes an AWS App Runner automatic configuration resource that enables automatic scaling of instances used to process web requests. You can share an auto scaling configuration across multiple services.", - "handlers": { - "create": { - "permissions": [ - "apprunner:CreateAutoScalingConfiguration", - "apprunner:DescribeAutoScalingConfiguration", - "apprunner:TagResource" - ] - }, - "delete": { - "permissions": [ - "apprunner:DeleteAutoScalingConfiguration" - ] - }, - "list": { - "permissions": [ - "apprunner:ListAutoScalingConfiguration" - ] - }, - "read": { - "permissions": [ - "apprunner:DescribeAutoScalingConfiguration" - ] - } - }, - "primaryIdentifier": [ - "/properties/AutoScalingConfigurationArn" - ], - "properties": { - "AutoScalingConfigurationArn": { - "description": "The Amazon Resource Name (ARN) of this auto scaling configuration.", - "maxLength": 1011, - "minLength": 1, - "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[0-9]{12}:(\\w|/|-){1,1011}", - "type": "string" - }, - "AutoScalingConfigurationName": { - "description": "The customer-provided auto scaling configuration name. When you use it for the first time in an AWS Region, App Runner creates revision number 1 of this name. When you use the same name in subsequent calls, App Runner creates incremental revisions of the configuration. The auto scaling configuration name can be used in multiple revisions of a configuration.", - "maxLength": 32, - "minLength": 4, - "pattern": "[A-Za-z0-9][A-Za-z0-9\\-_]{3,31}", - "type": "string" - }, - "AutoScalingConfigurationRevision": { - "description": "The revision of this auto scaling configuration. It's unique among all the active configurations (\"Status\": \"ACTIVE\") that share the same AutoScalingConfigurationName.", - "type": "integer" - }, - "Latest": { - "description": "It's set to true for the configuration with the highest Revision among all configurations that share the same AutoScalingConfigurationName. It's set to false otherwise. App Runner temporarily doubles the number of provisioned instances during deployments, to maintain the same capacity for both old and new code.", - "type": "boolean" - }, - "MaxConcurrency": { - "description": "The maximum number of concurrent requests that an instance processes. If the number of concurrent requests exceeds this limit, App Runner scales the service up to use more instances to process the requests.", - "type": "integer" - }, - "MaxSize": { - "description": "The maximum number of instances that an App Runner service scales up to. At most MaxSize instances actively serve traffic for your service.", - "type": "integer" - }, - "MinSize": { - "description": "The minimum number of instances that App Runner provisions for a service. The service always has at least MinSize provisioned instances. Some of them actively serve traffic. The rest of them (provisioned and inactive instances) are a cost-effective compute capacity reserve and are ready to be quickly activated. You pay for memory usage of all the provisioned instances. You pay for CPU usage of only the active subset.", - "type": "integer" - }, - "Tags": { - "description": "A list of metadata items that you can associate with your auto scaling configuration resource. A tag is a key-value pair.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/AutoScalingConfigurationArn", - "/properties/AutoScalingConfigurationRevision", - "/properties/Latest" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::AppRunner::AutoScalingConfiguration", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AutoScalingConfigurationName", + "/properties/MaxConcurrency", + "/properties/MaxSize", + "/properties/MinSize", + "/properties/Tags" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Describes an AWS App Runner automatic configuration resource that enables automatic scaling of instances used to process web requests. You can share an auto scaling configuration across multiple services.", + "handlers": { + "create": { + "permissions": [ + "apprunner:CreateAutoScalingConfiguration", + "apprunner:DescribeAutoScalingConfiguration", + "apprunner:TagResource" + ] + }, + "delete": { + "permissions": [ + "apprunner:DeleteAutoScalingConfiguration" + ] + }, + "list": { + "permissions": [ + "apprunner:ListAutoScalingConfiguration" + ] + }, + "read": { + "permissions": [ + "apprunner:DescribeAutoScalingConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/AutoScalingConfigurationArn" + ], + "properties": { + "AutoScalingConfigurationArn": { + "description": "The Amazon Resource Name (ARN) of this auto scaling configuration.", + "maxLength": 1011, + "minLength": 1, + "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[0-9]{12}:(\\w|/|-){1,1011}", + "type": "string" + }, + "AutoScalingConfigurationName": { + "description": "The customer-provided auto scaling configuration name. When you use it for the first time in an AWS Region, App Runner creates revision number 1 of this name. When you use the same name in subsequent calls, App Runner creates incremental revisions of the configuration. The auto scaling configuration name can be used in multiple revisions of a configuration.", + "maxLength": 32, + "minLength": 4, + "pattern": "[A-Za-z0-9][A-Za-z0-9\\-_]{3,31}", + "type": "string" + }, + "AutoScalingConfigurationRevision": { + "description": "The revision of this auto scaling configuration. It's unique among all the active configurations (\"Status\": \"ACTIVE\") that share the same AutoScalingConfigurationName.", + "type": "integer" + }, + "Latest": { + "description": "It's set to true for the configuration with the highest Revision among all configurations that share the same AutoScalingConfigurationName. It's set to false otherwise. App Runner temporarily doubles the number of provisioned instances during deployments, to maintain the same capacity for both old and new code.", + "type": "boolean" + }, + "MaxConcurrency": { + "description": "The maximum number of concurrent requests that an instance processes. If the number of concurrent requests exceeds this limit, App Runner scales the service up to use more instances to process the requests.", + "type": "integer" + }, + "MaxSize": { + "description": "The maximum number of instances that an App Runner service scales up to. At most MaxSize instances actively serve traffic for your service.", + "type": "integer" + }, + "MinSize": { + "description": "The minimum number of instances that App Runner provisions for a service. The service always has at least MinSize provisioned instances. Some of them actively serve traffic. The rest of them (provisioned and inactive instances) are a cost-effective compute capacity reserve and are ready to be quickly activated. You pay for memory usage of all the provisioned instances. You pay for CPU usage of only the active subset.", + "type": "integer" + }, + "Tags": { + "description": "A list of metadata items that you can associate with your auto scaling configuration resource. A tag is a key-value pair.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/AutoScalingConfigurationArn", + "/properties/AutoScalingConfigurationRevision", + "/properties/Latest" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::AppRunner::AutoScalingConfiguration", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/schema/aws-apprunner-observabilityconfiguration.json b/src/schema/aws-apprunner-observabilityconfiguration.json index 84ee22d0..c1d34eec 100644 --- a/src/schema/aws-apprunner-observabilityconfiguration.json +++ b/src/schema/aws-apprunner-observabilityconfiguration.json @@ -1,120 +1,120 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ObservabilityConfigurationName", - "/properties/TraceConfiguration", - "/properties/Tags" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "TraceConfiguration": { - "additionalProperties": false, - "description": "Describes the configuration of the tracing feature within an AWS App Runner observability configuration.", - "properties": { - "Vendor": { - "description": "The implementation provider chosen for tracing App Runner services.", - "enum": [ - "AWSXRAY" - ], - "type": "string" - } - }, - "required": [ - "Vendor" - ], - "type": "object" - } - }, - "description": "The AWS::AppRunner::ObservabilityConfiguration resource is an AWS App Runner resource type that specifies an App Runner observability configuration", - "handlers": { - "create": { - "permissions": [ - "apprunner:CreateObservabilityConfiguration", - "apprunner:DescribeObservabilityConfiguration", - "apprunner:TagResource" - ] - }, - "delete": { - "permissions": [ - "apprunner:DeleteObservabilityConfiguration" - ] - }, - "list": { - "permissions": [ - "apprunner:ListObservabilityConfigurations" - ] - }, - "read": { - "permissions": [ - "apprunner:DescribeObservabilityConfiguration" - ] - } - }, - "primaryIdentifier": [ - "/properties/ObservabilityConfigurationArn" - ], - "properties": { - "Latest": { - "description": "It's set to true for the configuration with the highest Revision among all configurations that share the same Name. It's set to false otherwise.", - "type": "boolean" - }, - "ObservabilityConfigurationArn": { - "description": "The Amazon Resource Name (ARN) of this ObservabilityConfiguration", - "maxLength": 1011, - "minLength": 1, - "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[0-9]{12}:(\\w|/|-){1,1011}", - "type": "string" - }, - "ObservabilityConfigurationName": { - "description": "A name for the observability configuration. When you use it for the first time in an AWS Region, App Runner creates revision number 1 of this name. When you use the same name in subsequent calls, App Runner creates incremental revisions of the configuration.", - "maxLength": 32, - "minLength": 4, - "pattern": "[A-Za-z0-9][A-Za-z0-9\\-_]{3,31}", - "type": "string" - }, - "ObservabilityConfigurationRevision": { - "description": "The revision of this observability configuration. It's unique among all the active configurations ('Status': 'ACTIVE') that share the same ObservabilityConfigurationName.", - "type": "integer" - }, - "Tags": { - "description": "A list of metadata items that you can associate with your observability configuration resource. A tag is a key-value pair.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "TraceConfiguration": { - "$ref": "#/definitions/TraceConfiguration", - "description": "The configuration of the tracing feature within this observability configuration. If you don't specify it, App Runner doesn't enable tracing." - } - }, - "readOnlyProperties": [ - "/properties/ObservabilityConfigurationArn", - "/properties/ObservabilityConfigurationRevision", - "/properties/Latest" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apprunner.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::AppRunner::ObservabilityConfiguration", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ObservabilityConfigurationName", + "/properties/TraceConfiguration", + "/properties/Tags" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "TraceConfiguration": { + "additionalProperties": false, + "description": "Describes the configuration of the tracing feature within an AWS App Runner observability configuration.", + "properties": { + "Vendor": { + "description": "The implementation provider chosen for tracing App Runner services.", + "enum": [ + "AWSXRAY" + ], + "type": "string" + } + }, + "required": [ + "Vendor" + ], + "type": "object" + } + }, + "description": "The AWS::AppRunner::ObservabilityConfiguration resource is an AWS App Runner resource type that specifies an App Runner observability configuration", + "handlers": { + "create": { + "permissions": [ + "apprunner:CreateObservabilityConfiguration", + "apprunner:DescribeObservabilityConfiguration", + "apprunner:TagResource" + ] + }, + "delete": { + "permissions": [ + "apprunner:DeleteObservabilityConfiguration" + ] + }, + "list": { + "permissions": [ + "apprunner:ListObservabilityConfigurations" + ] + }, + "read": { + "permissions": [ + "apprunner:DescribeObservabilityConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/ObservabilityConfigurationArn" + ], + "properties": { + "Latest": { + "description": "It's set to true for the configuration with the highest Revision among all configurations that share the same Name. It's set to false otherwise.", + "type": "boolean" + }, + "ObservabilityConfigurationArn": { + "description": "The Amazon Resource Name (ARN) of this ObservabilityConfiguration", + "maxLength": 1011, + "minLength": 1, + "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[0-9]{12}:(\\w|/|-){1,1011}", + "type": "string" + }, + "ObservabilityConfigurationName": { + "description": "A name for the observability configuration. When you use it for the first time in an AWS Region, App Runner creates revision number 1 of this name. When you use the same name in subsequent calls, App Runner creates incremental revisions of the configuration.", + "maxLength": 32, + "minLength": 4, + "pattern": "[A-Za-z0-9][A-Za-z0-9\\-_]{3,31}", + "type": "string" + }, + "ObservabilityConfigurationRevision": { + "description": "The revision of this observability configuration. It's unique among all the active configurations ('Status': 'ACTIVE') that share the same ObservabilityConfigurationName.", + "type": "integer" + }, + "Tags": { + "description": "A list of metadata items that you can associate with your observability configuration resource. A tag is a key-value pair.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TraceConfiguration": { + "$ref": "#/definitions/TraceConfiguration", + "description": "The configuration of the tracing feature within this observability configuration. If you don't specify it, App Runner doesn't enable tracing." + } + }, + "readOnlyProperties": [ + "/properties/ObservabilityConfigurationArn", + "/properties/ObservabilityConfigurationRevision", + "/properties/Latest" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apprunner.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::AppRunner::ObservabilityConfiguration", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/schema/aws-apprunner-service.json b/src/schema/aws-apprunner-service.json index 60a86796..ef3f705a 100644 --- a/src/schema/aws-apprunner-service.json +++ b/src/schema/aws-apprunner-service.json @@ -1,549 +1,549 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServiceName", - "/properties/EncryptionConfiguration", - "/properties/Tags" - ], - "definitions": { - "AuthenticationConfiguration": { - "additionalProperties": false, - "description": "Authentication Configuration", - "properties": { - "AccessRoleArn": { - "$ref": "#/definitions/RoleArn", - "description": "Access Role Arn" - }, - "ConnectionArn": { - "description": "Connection Arn", - "maxLength": 1011, - "minLength": 1, - "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\\\.]{0,63}:[a-z0-9-\\\\.]{0,63}:[0-9]{12}:(\\w|\\/|-){1,1011}", - "type": "string" - } - }, - "type": "object" - }, - "CodeConfiguration": { - "additionalProperties": false, - "description": "Code Configuration", - "properties": { - "CodeConfigurationValues": { - "$ref": "#/definitions/CodeConfigurationValues" - }, - "ConfigurationSource": { - "description": "Configuration Source", - "enum": [ - "REPOSITORY", - "API" - ], - "type": "string" - } - }, - "required": [ - "ConfigurationSource" - ], - "type": "object" - }, - "CodeConfigurationValues": { - "additionalProperties": false, - "description": "Code Configuration Values", - "properties": { - "BuildCommand": { - "description": "Build Command", - "type": "string" - }, - "Port": { - "description": "Port", - "type": "string" - }, - "Runtime": { - "description": "Runtime", - "enum": [ - "PYTHON_3", - "NODEJS_12", - "NODEJS_14", - "CORRETTO_8", - "CORRETTO_11", - "NODEJS_16", - "GO_1", - "DOTNET_6", - "PHP_81", - "RUBY_31", - "PYTHON_311", - "NODEJS_18" - ], - "type": "string" - }, - "RuntimeEnvironmentSecrets": { - "description": "The secrets and parameters that get referenced by your service as environment variables", - "items": { - "$ref": "#/definitions/KeyValuePair" - }, - "type": "array" - }, - "RuntimeEnvironmentVariables": { - "items": { - "$ref": "#/definitions/KeyValuePair" - }, - "type": "array" - }, - "StartCommand": { - "description": "Start Command", - "type": "string" - } - }, - "required": [ - "Runtime" - ], - "type": "object" - }, - "CodeRepository": { - "additionalProperties": false, - "description": "Source Code Repository", - "properties": { - "CodeConfiguration": { - "$ref": "#/definitions/CodeConfiguration" - }, - "RepositoryUrl": { - "description": "Repository Url", - "type": "string" - }, - "SourceCodeVersion": { - "$ref": "#/definitions/SourceCodeVersion" - }, - "SourceDirectory": { - "description": "Source Directory", - "maxLength": 4096, - "minLength": 1, - "pattern": "[^\\x00]+", - "type": "string" - } - }, - "required": [ - "RepositoryUrl", - "SourceCodeVersion" - ], - "type": "object" - }, - "EgressConfiguration": { - "additionalProperties": false, - "description": "Network egress configuration", - "properties": { - "EgressType": { - "description": "Network egress type.", - "enum": [ - "DEFAULT", - "VPC" - ], - "type": "string" - }, - "VpcConnectorArn": { - "description": "The Amazon Resource Name (ARN) of the App Runner VpcConnector.", - "maxLength": 1011, - "minLength": 44, - "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\\\.]{0,63}:[a-z0-9-\\\\.]{0,63}:[0-9]{12}:(\\w|\\/|-){1,1011}", - "type": "string" - } - }, - "required": [ - "EgressType" - ], - "type": "object" - }, - "EncryptionConfiguration": { - "additionalProperties": false, - "description": "Encryption configuration (KMS key)", - "properties": { - "KmsKey": { - "description": "The KMS Key", - "maxLength": 256, - "minLength": 0, - "pattern": "arn:aws(-[\\w]+)*:kms:[a-z\\-]+-[0-9]{1}:[0-9]{12}:key\\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", - "type": "string" - } - }, - "required": [ - "KmsKey" - ], - "type": "object" - }, - "HealthCheckConfiguration": { - "additionalProperties": false, - "description": "Health check configuration", - "properties": { - "HealthyThreshold": { - "description": "Health check Healthy Threshold", - "maximum": 20, - "minimum": 1, - "type": "integer" - }, - "Interval": { - "description": "Health check Interval", - "type": "integer" - }, - "Path": { - "description": "Health check Path", - "type": "string" - }, - "Protocol": { - "description": "Health Check Protocol", - "enum": [ - "TCP", - "HTTP" - ], - "type": "string" - }, - "Timeout": { - "description": "Health check Timeout", - "maximum": 20, - "minimum": 1, - "type": "integer" - }, - "UnhealthyThreshold": { - "description": "Health check Unhealthy Threshold", - "maximum": 20, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "ImageConfiguration": { - "additionalProperties": false, - "description": "Image Configuration", - "properties": { - "Port": { - "description": "Port", - "type": "string" - }, - "RuntimeEnvironmentSecrets": { - "description": "The secrets and parameters that get referenced by your service as environment variables", - "items": { - "$ref": "#/definitions/KeyValuePair" - }, - "type": "array" - }, - "RuntimeEnvironmentVariables": { - "items": { - "$ref": "#/definitions/KeyValuePair" - }, - "type": "array" - }, - "StartCommand": { - "description": "Start Command", - "type": "string" - } - }, - "type": "object" - }, - "ImageRepository": { - "additionalProperties": false, - "description": "Image Repository", - "properties": { - "ImageConfiguration": { - "$ref": "#/definitions/ImageConfiguration" - }, - "ImageIdentifier": { - "description": "Image Identifier", - "maxLength": 1024, - "minLength": 1, - "pattern": "([0-9]{12}.dkr.ecr.[a-z\\-]+-[0-9]{1}.amazonaws.com\\/.*)|(^public\\.ecr\\.aws\\/.+\\/.+)", - "type": "string" - }, - "ImageRepositoryType": { - "description": "Image Repository Type", - "enum": [ - "ECR", - "ECR_PUBLIC" - ], - "type": "string" - } - }, - "required": [ - "ImageIdentifier", - "ImageRepositoryType" - ], - "type": "object" - }, - "IngressConfiguration": { - "additionalProperties": false, - "description": "Network ingress configuration", - "properties": { - "IsPubliclyAccessible": { - "description": "It's set to true if the Apprunner service is publicly accessible. It's set to false otherwise.", - "type": "boolean" - } - }, - "required": [ - "IsPubliclyAccessible" - ], - "type": "object" - }, - "InstanceConfiguration": { - "additionalProperties": false, - "description": "Instance Configuration", - "properties": { - "Cpu": { - "description": "CPU", - "maxLength": 9, - "minLength": 3, - "pattern": "256|512|1024|2048|4096|(0.25|0.5|1|2|4) vCPU", - "type": "string" - }, - "InstanceRoleArn": { - "$ref": "#/definitions/RoleArn", - "description": "Instance Role Arn" - }, - "Memory": { - "description": "Memory", - "maxLength": 6, - "minLength": 3, - "pattern": "512|1024|2048|3072|4096|6144|8192|10240|12288|(0.5|1|2|3|4|6|8|10|12) GB", - "type": "string" - } - }, - "type": "object" - }, - "KeyValuePair": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "NetworkConfiguration": { - "additionalProperties": false, - "description": "Network configuration", - "properties": { - "EgressConfiguration": { - "$ref": "#/definitions/EgressConfiguration" - }, - "IngressConfiguration": { - "$ref": "#/definitions/IngressConfiguration" - }, - "IpAddressType": { - "description": "App Runner service endpoint IP address type", - "enum": [ - "IPV4", - "DUAL_STACK" - ], - "type": "string" - } - }, - "type": "object" - }, - "RoleArn": { - "maxLength": 1024, - "minLength": 29, - "pattern": "arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):iam::[0-9]{12}:role/[\\w+=,.@-]{1,64}", - "type": "string" - }, - "ServiceObservabilityConfiguration": { - "additionalProperties": false, - "description": "Service observability configuration", - "properties": { - "ObservabilityConfigurationArn": { - "description": "The Amazon Resource Name (ARN) of the App Runner ObservabilityConfiguration.", - "maxLength": 1011, - "minLength": 1, - "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[0-9]{12}:(\\w|/|-){1,1011}", - "type": "string" - }, - "ObservabilityEnabled": { - "description": "Observability enabled", - "type": "boolean" - } - }, - "required": [ - "ObservabilityEnabled" - ], - "type": "object" - }, - "SourceCodeVersion": { - "additionalProperties": false, - "description": "Source Code Version", - "properties": { - "Type": { - "description": "Source Code Version Type", - "enum": [ - "BRANCH" - ], - "type": "string" - }, - "Value": { - "description": "Source Code Version Value", - "type": "string" - } - }, - "required": [ - "Type", - "Value" - ], - "type": "object" - }, - "SourceConfiguration": { - "additionalProperties": false, - "description": "Source Code configuration", - "properties": { - "AuthenticationConfiguration": { - "$ref": "#/definitions/AuthenticationConfiguration" - }, - "AutoDeploymentsEnabled": { - "description": "Auto Deployment enabled", - "type": "boolean" - }, - "CodeRepository": { - "$ref": "#/definitions/CodeRepository" - }, - "ImageRepository": { - "$ref": "#/definitions/ImageRepository" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The AWS::AppRunner::Service resource specifies an AppRunner Service.", - "handlers": { - "create": { - "permissions": [ - "apprunner:CreateService", - "apprunner:TagResource", - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "logs:CreateLogGroup", - "logs:PutRetentionPolicy", - "logs:CreateLogStream", - "logs:PutLogEvents", - "logs:DescribeLogStreams", - "events:PutRule", - "events:PutTargets" - ] - }, - "delete": { - "permissions": [ - "apprunner:DeleteService" - ] - }, - "list": { - "permissions": [ - "apprunner:ListServices", - "iam:PassRole" - ] - }, - "read": { - "permissions": [ - "apprunner:DescribeService" - ] - }, - "update": { - "permissions": [ - "apprunner:UpdateService", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/ServiceArn" - ], - "properties": { - "AutoScalingConfigurationArn": { - "description": "Autoscaling configuration ARN", - "maxLength": 1011, - "minLength": 1, - "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\\\.]{0,63}:[a-z0-9-\\\\.]{0,63}:[0-9]{12}:(\\w|\\/|-){1,1011}", - "type": "string" - }, - "EncryptionConfiguration": { - "$ref": "#/definitions/EncryptionConfiguration" - }, - "HealthCheckConfiguration": { - "$ref": "#/definitions/HealthCheckConfiguration" - }, - "InstanceConfiguration": { - "$ref": "#/definitions/InstanceConfiguration" - }, - "NetworkConfiguration": { - "$ref": "#/definitions/NetworkConfiguration" - }, - "ObservabilityConfiguration": { - "$ref": "#/definitions/ServiceObservabilityConfiguration" - }, - "ServiceArn": { - "description": "The Amazon Resource Name (ARN) of the AppRunner Service.", - "maxLength": 1011, - "minLength": 1, - "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\\\.]{0,63}:[a-z0-9-\\\\.]{0,63}:[0-9]{12}:(\\w|\\/|-){1,1011}", - "type": "string" - }, - "ServiceId": { - "description": "The AppRunner Service Id", - "maxLength": 32, - "minLength": 32, - "type": "string" - }, - "ServiceName": { - "description": "The AppRunner Service Name.", - "maxLength": 40, - "minLength": 4, - "pattern": "[A-Za-z0-9][A-Za-z0-9-_]{3,39}", - "type": "string" - }, - "ServiceUrl": { - "description": "The Service Url of the AppRunner Service.", - "type": "string" - }, - "SourceConfiguration": { - "$ref": "#/definitions/SourceConfiguration" - }, - "Status": { - "description": "AppRunner Service status.", - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ServiceArn", - "/properties/ServiceId", - "/properties/ServiceUrl", - "/properties/Status" - ], - "required": [ - "SourceConfiguration" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apprunner.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::AppRunner::Service", - "writeOnlyProperties": [ - "/properties/Tags", - "/properties/AutoScalingConfigurationArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServiceName", + "/properties/EncryptionConfiguration", + "/properties/Tags" + ], + "definitions": { + "AuthenticationConfiguration": { + "additionalProperties": false, + "description": "Authentication Configuration", + "properties": { + "AccessRoleArn": { + "$ref": "#/definitions/RoleArn", + "description": "Access Role Arn" + }, + "ConnectionArn": { + "description": "Connection Arn", + "maxLength": 1011, + "minLength": 1, + "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\\\.]{0,63}:[a-z0-9-\\\\.]{0,63}:[0-9]{12}:(\\w|\\/|-){1,1011}", + "type": "string" + } + }, + "type": "object" + }, + "CodeConfiguration": { + "additionalProperties": false, + "description": "Code Configuration", + "properties": { + "CodeConfigurationValues": { + "$ref": "#/definitions/CodeConfigurationValues" + }, + "ConfigurationSource": { + "description": "Configuration Source", + "enum": [ + "REPOSITORY", + "API" + ], + "type": "string" + } + }, + "required": [ + "ConfigurationSource" + ], + "type": "object" + }, + "CodeConfigurationValues": { + "additionalProperties": false, + "description": "Code Configuration Values", + "properties": { + "BuildCommand": { + "description": "Build Command", + "type": "string" + }, + "Port": { + "description": "Port", + "type": "string" + }, + "Runtime": { + "description": "Runtime", + "enum": [ + "PYTHON_3", + "NODEJS_12", + "NODEJS_14", + "CORRETTO_8", + "CORRETTO_11", + "NODEJS_16", + "GO_1", + "DOTNET_6", + "PHP_81", + "RUBY_31", + "PYTHON_311", + "NODEJS_18" + ], + "type": "string" + }, + "RuntimeEnvironmentSecrets": { + "description": "The secrets and parameters that get referenced by your service as environment variables", + "items": { + "$ref": "#/definitions/KeyValuePair" + }, + "type": "array" + }, + "RuntimeEnvironmentVariables": { + "items": { + "$ref": "#/definitions/KeyValuePair" + }, + "type": "array" + }, + "StartCommand": { + "description": "Start Command", + "type": "string" + } + }, + "required": [ + "Runtime" + ], + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "description": "Source Code Repository", + "properties": { + "CodeConfiguration": { + "$ref": "#/definitions/CodeConfiguration" + }, + "RepositoryUrl": { + "description": "Repository Url", + "type": "string" + }, + "SourceCodeVersion": { + "$ref": "#/definitions/SourceCodeVersion" + }, + "SourceDirectory": { + "description": "Source Directory", + "maxLength": 4096, + "minLength": 1, + "pattern": "[^\\x00]+", + "type": "string" + } + }, + "required": [ + "RepositoryUrl", + "SourceCodeVersion" + ], + "type": "object" + }, + "EgressConfiguration": { + "additionalProperties": false, + "description": "Network egress configuration", + "properties": { + "EgressType": { + "description": "Network egress type.", + "enum": [ + "DEFAULT", + "VPC" + ], + "type": "string" + }, + "VpcConnectorArn": { + "description": "The Amazon Resource Name (ARN) of the App Runner VpcConnector.", + "maxLength": 1011, + "minLength": 44, + "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\\\.]{0,63}:[a-z0-9-\\\\.]{0,63}:[0-9]{12}:(\\w|\\/|-){1,1011}", + "type": "string" + } + }, + "required": [ + "EgressType" + ], + "type": "object" + }, + "EncryptionConfiguration": { + "additionalProperties": false, + "description": "Encryption configuration (KMS key)", + "properties": { + "KmsKey": { + "description": "The KMS Key", + "maxLength": 256, + "minLength": 0, + "pattern": "arn:aws(-[\\w]+)*:kms:[a-z\\-]+-[0-9]{1}:[0-9]{12}:key\\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + "type": "string" + } + }, + "required": [ + "KmsKey" + ], + "type": "object" + }, + "HealthCheckConfiguration": { + "additionalProperties": false, + "description": "Health check configuration", + "properties": { + "HealthyThreshold": { + "description": "Health check Healthy Threshold", + "maximum": 20, + "minimum": 1, + "type": "integer" + }, + "Interval": { + "description": "Health check Interval", + "type": "integer" + }, + "Path": { + "description": "Health check Path", + "type": "string" + }, + "Protocol": { + "description": "Health Check Protocol", + "enum": [ + "TCP", + "HTTP" + ], + "type": "string" + }, + "Timeout": { + "description": "Health check Timeout", + "maximum": 20, + "minimum": 1, + "type": "integer" + }, + "UnhealthyThreshold": { + "description": "Health check Unhealthy Threshold", + "maximum": 20, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "ImageConfiguration": { + "additionalProperties": false, + "description": "Image Configuration", + "properties": { + "Port": { + "description": "Port", + "type": "string" + }, + "RuntimeEnvironmentSecrets": { + "description": "The secrets and parameters that get referenced by your service as environment variables", + "items": { + "$ref": "#/definitions/KeyValuePair" + }, + "type": "array" + }, + "RuntimeEnvironmentVariables": { + "items": { + "$ref": "#/definitions/KeyValuePair" + }, + "type": "array" + }, + "StartCommand": { + "description": "Start Command", + "type": "string" + } + }, + "type": "object" + }, + "ImageRepository": { + "additionalProperties": false, + "description": "Image Repository", + "properties": { + "ImageConfiguration": { + "$ref": "#/definitions/ImageConfiguration" + }, + "ImageIdentifier": { + "description": "Image Identifier", + "maxLength": 1024, + "minLength": 1, + "pattern": "([0-9]{12}.dkr.ecr.[a-z\\-]+-[0-9]{1}.amazonaws.com\\/.*)|(^public\\.ecr\\.aws\\/.+\\/.+)", + "type": "string" + }, + "ImageRepositoryType": { + "description": "Image Repository Type", + "enum": [ + "ECR", + "ECR_PUBLIC" + ], + "type": "string" + } + }, + "required": [ + "ImageIdentifier", + "ImageRepositoryType" + ], + "type": "object" + }, + "IngressConfiguration": { + "additionalProperties": false, + "description": "Network ingress configuration", + "properties": { + "IsPubliclyAccessible": { + "description": "It's set to true if the Apprunner service is publicly accessible. It's set to false otherwise.", + "type": "boolean" + } + }, + "required": [ + "IsPubliclyAccessible" + ], + "type": "object" + }, + "InstanceConfiguration": { + "additionalProperties": false, + "description": "Instance Configuration", + "properties": { + "Cpu": { + "description": "CPU", + "maxLength": 9, + "minLength": 3, + "pattern": "256|512|1024|2048|4096|(0.25|0.5|1|2|4) vCPU", + "type": "string" + }, + "InstanceRoleArn": { + "$ref": "#/definitions/RoleArn", + "description": "Instance Role Arn" + }, + "Memory": { + "description": "Memory", + "maxLength": 6, + "minLength": 3, + "pattern": "512|1024|2048|3072|4096|6144|8192|10240|12288|(0.5|1|2|3|4|6|8|10|12) GB", + "type": "string" + } + }, + "type": "object" + }, + "KeyValuePair": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "NetworkConfiguration": { + "additionalProperties": false, + "description": "Network configuration", + "properties": { + "EgressConfiguration": { + "$ref": "#/definitions/EgressConfiguration" + }, + "IngressConfiguration": { + "$ref": "#/definitions/IngressConfiguration" + }, + "IpAddressType": { + "description": "App Runner service endpoint IP address type", + "enum": [ + "IPV4", + "DUAL_STACK" + ], + "type": "string" + } + }, + "type": "object" + }, + "RoleArn": { + "maxLength": 1024, + "minLength": 29, + "pattern": "arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):iam::[0-9]{12}:role/[\\w+=,.@-]{1,64}", + "type": "string" + }, + "ServiceObservabilityConfiguration": { + "additionalProperties": false, + "description": "Service observability configuration", + "properties": { + "ObservabilityConfigurationArn": { + "description": "The Amazon Resource Name (ARN) of the App Runner ObservabilityConfiguration.", + "maxLength": 1011, + "minLength": 1, + "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[0-9]{12}:(\\w|/|-){1,1011}", + "type": "string" + }, + "ObservabilityEnabled": { + "description": "Observability enabled", + "type": "boolean" + } + }, + "required": [ + "ObservabilityEnabled" + ], + "type": "object" + }, + "SourceCodeVersion": { + "additionalProperties": false, + "description": "Source Code Version", + "properties": { + "Type": { + "description": "Source Code Version Type", + "enum": [ + "BRANCH" + ], + "type": "string" + }, + "Value": { + "description": "Source Code Version Value", + "type": "string" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, + "SourceConfiguration": { + "additionalProperties": false, + "description": "Source Code configuration", + "properties": { + "AuthenticationConfiguration": { + "$ref": "#/definitions/AuthenticationConfiguration" + }, + "AutoDeploymentsEnabled": { + "description": "Auto Deployment enabled", + "type": "boolean" + }, + "CodeRepository": { + "$ref": "#/definitions/CodeRepository" + }, + "ImageRepository": { + "$ref": "#/definitions/ImageRepository" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The AWS::AppRunner::Service resource specifies an AppRunner Service.", + "handlers": { + "create": { + "permissions": [ + "apprunner:CreateService", + "apprunner:TagResource", + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "logs:CreateLogGroup", + "logs:PutRetentionPolicy", + "logs:CreateLogStream", + "logs:PutLogEvents", + "logs:DescribeLogStreams", + "events:PutRule", + "events:PutTargets" + ] + }, + "delete": { + "permissions": [ + "apprunner:DeleteService" + ] + }, + "list": { + "permissions": [ + "apprunner:ListServices", + "iam:PassRole" + ] + }, + "read": { + "permissions": [ + "apprunner:DescribeService" + ] + }, + "update": { + "permissions": [ + "apprunner:UpdateService", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/ServiceArn" + ], + "properties": { + "AutoScalingConfigurationArn": { + "description": "Autoscaling configuration ARN", + "maxLength": 1011, + "minLength": 1, + "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\\\.]{0,63}:[a-z0-9-\\\\.]{0,63}:[0-9]{12}:(\\w|\\/|-){1,1011}", + "type": "string" + }, + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration" + }, + "HealthCheckConfiguration": { + "$ref": "#/definitions/HealthCheckConfiguration" + }, + "InstanceConfiguration": { + "$ref": "#/definitions/InstanceConfiguration" + }, + "NetworkConfiguration": { + "$ref": "#/definitions/NetworkConfiguration" + }, + "ObservabilityConfiguration": { + "$ref": "#/definitions/ServiceObservabilityConfiguration" + }, + "ServiceArn": { + "description": "The Amazon Resource Name (ARN) of the AppRunner Service.", + "maxLength": 1011, + "minLength": 1, + "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\\\.]{0,63}:[a-z0-9-\\\\.]{0,63}:[0-9]{12}:(\\w|\\/|-){1,1011}", + "type": "string" + }, + "ServiceId": { + "description": "The AppRunner Service Id", + "maxLength": 32, + "minLength": 32, + "type": "string" + }, + "ServiceName": { + "description": "The AppRunner Service Name.", + "maxLength": 40, + "minLength": 4, + "pattern": "[A-Za-z0-9][A-Za-z0-9-_]{3,39}", + "type": "string" + }, + "ServiceUrl": { + "description": "The Service Url of the AppRunner Service.", + "type": "string" + }, + "SourceConfiguration": { + "$ref": "#/definitions/SourceConfiguration" + }, + "Status": { + "description": "AppRunner Service status.", + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ServiceArn", + "/properties/ServiceId", + "/properties/ServiceUrl", + "/properties/Status" + ], + "required": [ + "SourceConfiguration" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apprunner.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::AppRunner::Service", + "writeOnlyProperties": [ + "/properties/Tags", + "/properties/AutoScalingConfigurationArn" + ] +} diff --git a/src/schema/aws-apprunner-vpcconnector.json b/src/schema/aws-apprunner-vpcconnector.json index 3301b045..a21a85b6 100644 --- a/src/schema/aws-apprunner-vpcconnector.json +++ b/src/schema/aws-apprunner-vpcconnector.json @@ -1,119 +1,119 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/VpcConnectorName", - "/properties/Subnets", - "/properties/SecurityGroups", - "/properties/Tags" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The AWS::AppRunner::VpcConnector resource specifies an App Runner VpcConnector.", - "handlers": { - "create": { - "permissions": [ - "iam:CreateServiceLinkedRole", - "apprunner:CreateVpcConnector", - "apprunner:DescribeVpcConnector", - "apprunner:TagResource", - "ec2:DescribeSubnets", - "ec2:DescribeSecurityGroups" - ] - }, - "delete": { - "permissions": [ - "apprunner:DeleteVpcConnector" - ] - }, - "list": { - "permissions": [ - "apprunner:ListVpcConnectors" - ] - }, - "read": { - "permissions": [ - "apprunner:DescribeVpcConnector" - ] - } - }, - "primaryIdentifier": [ - "/properties/VpcConnectorArn" - ], - "properties": { - "SecurityGroups": { - "description": "A list of IDs of security groups that App Runner should use for access to AWS resources under the specified subnets. If not specified, App Runner uses the default security group of the Amazon VPC. The default security group allows all outbound traffic.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Subnets": { - "description": "A list of IDs of subnets that App Runner should use when it associates your service with a custom Amazon VPC. Specify IDs of subnets of a single Amazon VPC. App Runner determines the Amazon VPC from the subnets you specify.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "description": "A list of metadata items that you can associate with your VPC connector resource. A tag is a key-value pair.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "VpcConnectorArn": { - "description": "The Amazon Resource Name (ARN) of this VPC connector.", - "maxLength": 1011, - "minLength": 44, - "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\\\.]{0,63}:[a-z0-9-\\\\.]{0,63}:[0-9]{12}:(\\w|\\/|-){1,1011}", - "type": "string" - }, - "VpcConnectorName": { - "description": "A name for the VPC connector. If you don't specify a name, AWS CloudFormation generates a name for your VPC connector.", - "maxLength": 40, - "minLength": 4, - "pattern": "^[A-Za-z0-9][A-Za-z0-9-\\\\_]{3,39}$", - "type": "string" - }, - "VpcConnectorRevision": { - "description": "The revision of this VPC connector. It's unique among all the active connectors (\"Status\": \"ACTIVE\") that share the same Name.", - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/VpcConnectorArn", - "/properties/VpcConnectorRevision" - ], - "required": [ - "Subnets" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apprunner.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::AppRunner::VpcConnector", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcConnectorName", + "/properties/Subnets", + "/properties/SecurityGroups", + "/properties/Tags" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The AWS::AppRunner::VpcConnector resource specifies an App Runner VpcConnector.", + "handlers": { + "create": { + "permissions": [ + "iam:CreateServiceLinkedRole", + "apprunner:CreateVpcConnector", + "apprunner:DescribeVpcConnector", + "apprunner:TagResource", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups" + ] + }, + "delete": { + "permissions": [ + "apprunner:DeleteVpcConnector" + ] + }, + "list": { + "permissions": [ + "apprunner:ListVpcConnectors" + ] + }, + "read": { + "permissions": [ + "apprunner:DescribeVpcConnector" + ] + } + }, + "primaryIdentifier": [ + "/properties/VpcConnectorArn" + ], + "properties": { + "SecurityGroups": { + "description": "A list of IDs of security groups that App Runner should use for access to AWS resources under the specified subnets. If not specified, App Runner uses the default security group of the Amazon VPC. The default security group allows all outbound traffic.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "description": "A list of IDs of subnets that App Runner should use when it associates your service with a custom Amazon VPC. Specify IDs of subnets of a single Amazon VPC. App Runner determines the Amazon VPC from the subnets you specify.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "A list of metadata items that you can associate with your VPC connector resource. A tag is a key-value pair.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "VpcConnectorArn": { + "description": "The Amazon Resource Name (ARN) of this VPC connector.", + "maxLength": 1011, + "minLength": 44, + "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\\\.]{0,63}:[a-z0-9-\\\\.]{0,63}:[0-9]{12}:(\\w|\\/|-){1,1011}", + "type": "string" + }, + "VpcConnectorName": { + "description": "A name for the VPC connector. If you don't specify a name, AWS CloudFormation generates a name for your VPC connector.", + "maxLength": 40, + "minLength": 4, + "pattern": "^[A-Za-z0-9][A-Za-z0-9-\\\\_]{3,39}$", + "type": "string" + }, + "VpcConnectorRevision": { + "description": "The revision of this VPC connector. It's unique among all the active connectors (\"Status\": \"ACTIVE\") that share the same Name.", + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/VpcConnectorArn", + "/properties/VpcConnectorRevision" + ], + "required": [ + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apprunner.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::AppRunner::VpcConnector", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/schema/aws-apprunner-vpcingressconnection.json b/src/schema/aws-apprunner-vpcingressconnection.json index 89017c0c..3a99b5ef 100644 --- a/src/schema/aws-apprunner-vpcingressconnection.json +++ b/src/schema/aws-apprunner-vpcingressconnection.json @@ -1,151 +1,151 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/VpcIngressConnectionName", - "/properties/ServiceArn", - "/properties/Tags" - ], - "definitions": { - "IngressVpcConfiguration": { - "additionalProperties": false, - "description": "The configuration of customer\u2019s VPC and related VPC endpoint", - "properties": { - "VpcEndpointId": { - "description": "The ID of the VPC endpoint that your App Runner service connects to.", - "type": "string" - }, - "VpcId": { - "description": "The ID of the VPC that the VPC endpoint is used in.", - "type": "string" - } - }, - "required": [ - "VpcId", - "VpcEndpointId" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The AWS::AppRunner::VpcIngressConnection resource is an App Runner resource that specifies an App Runner VpcIngressConnection.", - "handlers": { - "create": { - "permissions": [ - "apprunner:CreateVpcIngressConnection", - "apprunner:DescribeVpcIngressConnection", - "ec2:DescribeVpcs", - "ec2:DescribeVpcEndpoints", - "ec2:DescribeSubnets", - "apprunner:TagResource" - ] - }, - "delete": { - "permissions": [ - "apprunner:DeleteVpcIngressConnection" - ] - }, - "list": { - "permissions": [ - "apprunner:ListVpcIngressConnections" - ] - }, - "read": { - "permissions": [ - "apprunner:DescribeVpcIngressConnection" - ] - }, - "update": { - "permissions": [ - "apprunner:UpdateVpcIngressConnection" - ] - } - }, - "primaryIdentifier": [ - "/properties/VpcIngressConnectionArn" - ], - "properties": { - "DomainName": { - "description": "The Domain name associated with the VPC Ingress Connection.", - "maxLength": 255, - "minLength": 1, - "pattern": "[A-Za-z0-9*.-]{1,255}", - "type": "string" - }, - "IngressVpcConfiguration": { - "$ref": "#/definitions/IngressVpcConfiguration" - }, - "ServiceArn": { - "description": "The Amazon Resource Name (ARN) of the service.", - "maxLength": 1011, - "minLength": 1, - "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[0-9]{12}:(\\w|/|-){1,1011}", - "type": "string" - }, - "Status": { - "description": "The current status of the VpcIngressConnection.", - "enum": [ - "AVAILABLE", - "PENDING_CREATION", - "PENDING_UPDATE", - "PENDING_DELETION", - "FAILED_CREATION", - "FAILED_UPDATE", - "FAILED_DELETION", - "DELETED" - ], - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "VpcIngressConnectionArn": { - "description": "The Amazon Resource Name (ARN) of the VpcIngressConnection.", - "maxLength": 1011, - "minLength": 1, - "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[0-9]{12}:(\\w|/|-){1,1011}", - "type": "string" - }, - "VpcIngressConnectionName": { - "description": "The customer-provided Vpc Ingress Connection name.", - "maxLength": 40, - "minLength": 4, - "pattern": "[A-Za-z0-9][A-Za-z0-9\\-_]{3,39}", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/VpcIngressConnectionArn", - "/properties/DomainName", - "/properties/Status" - ], - "required": [ - "ServiceArn", - "IngressVpcConfiguration" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apprunner.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::AppRunner::VpcIngressConnection", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcIngressConnectionName", + "/properties/ServiceArn", + "/properties/Tags" + ], + "definitions": { + "IngressVpcConfiguration": { + "additionalProperties": false, + "description": "The configuration of customer\u2019s VPC and related VPC endpoint", + "properties": { + "VpcEndpointId": { + "description": "The ID of the VPC endpoint that your App Runner service connects to.", + "type": "string" + }, + "VpcId": { + "description": "The ID of the VPC that the VPC endpoint is used in.", + "type": "string" + } + }, + "required": [ + "VpcId", + "VpcEndpointId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The AWS::AppRunner::VpcIngressConnection resource is an App Runner resource that specifies an App Runner VpcIngressConnection.", + "handlers": { + "create": { + "permissions": [ + "apprunner:CreateVpcIngressConnection", + "apprunner:DescribeVpcIngressConnection", + "ec2:DescribeVpcs", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "apprunner:TagResource" + ] + }, + "delete": { + "permissions": [ + "apprunner:DeleteVpcIngressConnection" + ] + }, + "list": { + "permissions": [ + "apprunner:ListVpcIngressConnections" + ] + }, + "read": { + "permissions": [ + "apprunner:DescribeVpcIngressConnection" + ] + }, + "update": { + "permissions": [ + "apprunner:UpdateVpcIngressConnection" + ] + } + }, + "primaryIdentifier": [ + "/properties/VpcIngressConnectionArn" + ], + "properties": { + "DomainName": { + "description": "The Domain name associated with the VPC Ingress Connection.", + "maxLength": 255, + "minLength": 1, + "pattern": "[A-Za-z0-9*.-]{1,255}", + "type": "string" + }, + "IngressVpcConfiguration": { + "$ref": "#/definitions/IngressVpcConfiguration" + }, + "ServiceArn": { + "description": "The Amazon Resource Name (ARN) of the service.", + "maxLength": 1011, + "minLength": 1, + "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[0-9]{12}:(\\w|/|-){1,1011}", + "type": "string" + }, + "Status": { + "description": "The current status of the VpcIngressConnection.", + "enum": [ + "AVAILABLE", + "PENDING_CREATION", + "PENDING_UPDATE", + "PENDING_DELETION", + "FAILED_CREATION", + "FAILED_UPDATE", + "FAILED_DELETION", + "DELETED" + ], + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "VpcIngressConnectionArn": { + "description": "The Amazon Resource Name (ARN) of the VpcIngressConnection.", + "maxLength": 1011, + "minLength": 1, + "pattern": "arn:aws(-[\\w]+)*:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[0-9]{12}:(\\w|/|-){1,1011}", + "type": "string" + }, + "VpcIngressConnectionName": { + "description": "The customer-provided Vpc Ingress Connection name.", + "maxLength": 40, + "minLength": 4, + "pattern": "[A-Za-z0-9][A-Za-z0-9\\-_]{3,39}", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VpcIngressConnectionArn", + "/properties/DomainName", + "/properties/Status" + ], + "required": [ + "ServiceArn", + "IngressVpcConfiguration" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apprunner.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::AppRunner::VpcIngressConnection", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/schema/aws-appstream-appblock.json b/src/schema/aws-appstream-appblock.json index 57d487e0..4c0c13e6 100644 --- a/src/schema/aws-appstream-appblock.json +++ b/src/schema/aws-appstream-appblock.json @@ -1,180 +1,180 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/DisplayName", - "/properties/Description", - "/properties/SourceS3Location", - "/properties/SetupScriptDetails", - "/properties/PackagingType", - "/properties/PostSetupScriptDetails" - ], - "definitions": { - "Arn": { - "type": "string" - }, - "PackagingType": { - "type": "string" - }, - "S3Location": { - "additionalProperties": false, - "properties": { - "S3Bucket": { - "type": "string" - }, - "S3Key": { - "type": "string" - } - }, - "required": [ - "S3Bucket" - ], - "type": "object" - }, - "ScriptDetails": { - "additionalProperties": false, - "properties": { - "ExecutableParameters": { - "type": "string" - }, - "ExecutablePath": { - "type": "string" - }, - "ScriptS3Location": { - "$ref": "#/definitions/S3Location" - }, - "TimeoutInSeconds": { - "type": "integer" - } - }, - "required": [ - "ScriptS3Location", - "ExecutablePath", - "TimeoutInSeconds" - ], - "type": "object" - }, - "Tag": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "TagKey": { - "type": "string" - }, - "TagValue": { - "type": "string" - } - }, - "required": [ - "TagKey", - "TagValue" - ], - "type": "object" - } - ] - } - }, - "deprecatedProperties": [ - "/properties/Tags/TagKey", - "/properties/Tags/TagValue" - ], - "description": "Resource Type definition for AWS::AppStream::AppBlock", - "handlers": { - "create": { - "permissions": [ - "appstream:CreateAppBlock", - "appstream:TagResource", - "s3:GetObject", - "s3:ListBucket", - "s3:GetBucketOwnershipControls" - ] - }, - "delete": { - "permissions": [ - "appstream:DeleteAppBlock" - ] - }, - "read": { - "permissions": [ - "appstream:DescribeAppBlocks" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "CreatedTime": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "DisplayName": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "PackagingType": { - "$ref": "#/definitions/PackagingType" - }, - "PostSetupScriptDetails": { - "$ref": "#/definitions/ScriptDetails" - }, - "SetupScriptDetails": { - "$ref": "#/definitions/ScriptDetails" - }, - "SourceS3Location": { - "$ref": "#/definitions/S3Location" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedTime" - ], - "required": [ - "Name", - "SourceS3Location" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appstream.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::AppStream::AppBlock", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/DisplayName", + "/properties/Description", + "/properties/SourceS3Location", + "/properties/SetupScriptDetails", + "/properties/PackagingType", + "/properties/PostSetupScriptDetails" + ], + "definitions": { + "Arn": { + "type": "string" + }, + "PackagingType": { + "type": "string" + }, + "S3Location": { + "additionalProperties": false, + "properties": { + "S3Bucket": { + "type": "string" + }, + "S3Key": { + "type": "string" + } + }, + "required": [ + "S3Bucket" + ], + "type": "object" + }, + "ScriptDetails": { + "additionalProperties": false, + "properties": { + "ExecutableParameters": { + "type": "string" + }, + "ExecutablePath": { + "type": "string" + }, + "ScriptS3Location": { + "$ref": "#/definitions/S3Location" + }, + "TimeoutInSeconds": { + "type": "integer" + } + }, + "required": [ + "ScriptS3Location", + "ExecutablePath", + "TimeoutInSeconds" + ], + "type": "object" + }, + "Tag": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "TagKey": { + "type": "string" + }, + "TagValue": { + "type": "string" + } + }, + "required": [ + "TagKey", + "TagValue" + ], + "type": "object" + } + ] + } + }, + "deprecatedProperties": [ + "/properties/Tags/TagKey", + "/properties/Tags/TagValue" + ], + "description": "Resource Type definition for AWS::AppStream::AppBlock", + "handlers": { + "create": { + "permissions": [ + "appstream:CreateAppBlock", + "appstream:TagResource", + "s3:GetObject", + "s3:ListBucket", + "s3:GetBucketOwnershipControls" + ] + }, + "delete": { + "permissions": [ + "appstream:DeleteAppBlock" + ] + }, + "read": { + "permissions": [ + "appstream:DescribeAppBlocks" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CreatedTime": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DisplayName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "PackagingType": { + "$ref": "#/definitions/PackagingType" + }, + "PostSetupScriptDetails": { + "$ref": "#/definitions/ScriptDetails" + }, + "SetupScriptDetails": { + "$ref": "#/definitions/ScriptDetails" + }, + "SourceS3Location": { + "$ref": "#/definitions/S3Location" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime" + ], + "required": [ + "Name", + "SourceS3Location" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appstream.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::AppStream::AppBlock", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/schema/aws-appstream-appblockbuilder.json b/src/schema/aws-appstream-appblockbuilder.json index 22a00117..2976365b 100644 --- a/src/schema/aws-appstream-appblockbuilder.json +++ b/src/schema/aws-appstream-appblockbuilder.json @@ -1,197 +1,197 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "AccessEndpoint": { - "additionalProperties": false, - "properties": { - "EndpointType": { - "type": "string" - }, - "VpceId": { - "type": "string" - } - }, - "required": [ - "EndpointType", - "VpceId" - ], - "type": "object" - }, - "Arn": { - "type": "string" - }, - "PlatformType": { - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "VpcConfig": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppStream::AppBlockBuilder.", - "handlers": { - "create": { - "permissions": [ - "appstream:CreateAppBlockBuilder", - "appstream:DescribeAppBlockBuilders", - "appstream:StartAppBlockBuilder", - "appstream:AssociateAppBlockBuilderAppBlock", - "appstream:DescribeAppBlockBuilderAppBlockAssociations", - "appstream:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "appstream:DescribeAppBlockBuilders", - "appstream:DeleteAppBlockBuilder", - "appstream:DisassociateAppBlockBuilderAppBlock", - "appstream:DescribeAppBlockBuilderAppBlockAssociations" - ] - }, - "list": { - "permissions": [ - "appstream:DescribeAppBlockBuilders" - ] - }, - "read": { - "permissions": [ - "appstream:DescribeAppBlockBuilders" - ] - }, - "update": { - "permissions": [ - "appstream:UpdateAppBlockBuilder", - "appstream:DescribeAppBlockBuilders", - "appstream:StartAppBlockBuilder", - "appstream:StopAppBlockBuilder", - "appstream:AssociateAppBlockBuilderAppBlock", - "appstream:DisassociateAppBlockBuilderAppBlock", - "appstream:DescribeAppBlockBuilderAppBlockAssociations", - "appstream:ListTagsForResource", - "appstream:TagResource", - "appstream:UntagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "AccessEndpoints": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AccessEndpoint" - }, - "type": "array", - "uniqueItems": true - }, - "AppBlockArns": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Arn" - }, - "type": "array", - "uniqueItems": true - }, - "Arn": { - "$ref": "#/definitions/Arn" - }, - "CreatedTime": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "DisplayName": { - "type": "string" - }, - "EnableDefaultInternetAccess": { - "type": "boolean" - }, - "IamRoleArn": { - "type": "string" - }, - "InstanceType": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Platform": { - "$ref": "#/definitions/PlatformType" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "VpcConfig": { - "$ref": "#/definitions/VpcConfig" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedTime" - ], - "required": [ - "Name", - "Platform", - "InstanceType", - "VpcConfig" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appstream.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AppStream::AppBlockBuilder", - "writeOnlyProperties": [ - "/properties/Tags", - "/properties/AppBlockArns" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "AccessEndpoint": { + "additionalProperties": false, + "properties": { + "EndpointType": { + "type": "string" + }, + "VpceId": { + "type": "string" + } + }, + "required": [ + "EndpointType", + "VpceId" + ], + "type": "object" + }, + "Arn": { + "type": "string" + }, + "PlatformType": { + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VpcConfig": { + "additionalProperties": false, + "properties": { + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppStream::AppBlockBuilder.", + "handlers": { + "create": { + "permissions": [ + "appstream:CreateAppBlockBuilder", + "appstream:DescribeAppBlockBuilders", + "appstream:StartAppBlockBuilder", + "appstream:AssociateAppBlockBuilderAppBlock", + "appstream:DescribeAppBlockBuilderAppBlockAssociations", + "appstream:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "appstream:DescribeAppBlockBuilders", + "appstream:DeleteAppBlockBuilder", + "appstream:DisassociateAppBlockBuilderAppBlock", + "appstream:DescribeAppBlockBuilderAppBlockAssociations" + ] + }, + "list": { + "permissions": [ + "appstream:DescribeAppBlockBuilders" + ] + }, + "read": { + "permissions": [ + "appstream:DescribeAppBlockBuilders" + ] + }, + "update": { + "permissions": [ + "appstream:UpdateAppBlockBuilder", + "appstream:DescribeAppBlockBuilders", + "appstream:StartAppBlockBuilder", + "appstream:StopAppBlockBuilder", + "appstream:AssociateAppBlockBuilderAppBlock", + "appstream:DisassociateAppBlockBuilderAppBlock", + "appstream:DescribeAppBlockBuilderAppBlockAssociations", + "appstream:ListTagsForResource", + "appstream:TagResource", + "appstream:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "AccessEndpoints": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AccessEndpoint" + }, + "type": "array", + "uniqueItems": true + }, + "AppBlockArns": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Arn" + }, + "type": "array", + "uniqueItems": true + }, + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CreatedTime": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DisplayName": { + "type": "string" + }, + "EnableDefaultInternetAccess": { + "type": "boolean" + }, + "IamRoleArn": { + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Platform": { + "$ref": "#/definitions/PlatformType" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VpcConfig": { + "$ref": "#/definitions/VpcConfig" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime" + ], + "required": [ + "Name", + "Platform", + "InstanceType", + "VpcConfig" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appstream.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppStream::AppBlockBuilder", + "writeOnlyProperties": [ + "/properties/Tags", + "/properties/AppBlockArns" + ] +} diff --git a/src/schema/aws-appstream-application.json b/src/schema/aws-appstream-application.json index 2201b327..a01d8045 100644 --- a/src/schema/aws-appstream-application.json +++ b/src/schema/aws-appstream-application.json @@ -1,193 +1,193 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/InstanceFamilies", - "/properties/Platforms" - ], - "definitions": { - "ApplicationAttribute": { - "type": "string" - }, - "Arn": { - "type": "string" - }, - "PlatformType": { - "type": "string" - }, - "S3Location": { - "additionalProperties": false, - "properties": { - "S3Bucket": { - "type": "string" - }, - "S3Key": { - "type": "string" - } - }, - "required": [ - "S3Bucket", - "S3Key" - ], - "type": "object" - }, - "Tag": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "TagKey": { - "type": "string" - }, - "TagValue": { - "type": "string" - } - }, - "required": [ - "TagKey", - "TagValue" - ], - "type": "object" - } - ] - } - }, - "deprecatedProperties": [ - "/properties/Tags/TagKey", - "/properties/Tags/TagValue" - ], - "description": "Resource Type definition for AWS::AppStream::Application", - "handlers": { - "create": { - "permissions": [ - "s3:GetObject", - "appstream:CreateApplication", - "appstream:TagResource" - ] - }, - "delete": { - "permissions": [ - "appstream:DeleteApplication" - ] - }, - "read": { - "permissions": [ - "appstream:DescribeApplications" - ] - }, - "update": { - "permissions": [ - "appstream:UpdateApplication", - "s3:GetObject" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "AppBlockArn": { - "$ref": "#/definitions/Arn" - }, - "Arn": { - "$ref": "#/definitions/Arn" - }, - "AttributesToDelete": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ApplicationAttribute" - }, - "type": "array", - "uniqueItems": true - }, - "CreatedTime": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "DisplayName": { - "type": "string" - }, - "IconS3Location": { - "$ref": "#/definitions/S3Location" - }, - "InstanceFamilies": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "LaunchParameters": { - "type": "string" - }, - "LaunchPath": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Platforms": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PlatformType" - }, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "WorkingDirectory": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedTime" - ], - "required": [ - "Name", - "IconS3Location", - "LaunchPath", - "Platforms", - "InstanceFamilies", - "AppBlockArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appstream.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::AppStream::Application", - "writeOnlyProperties": [ - "/properties/Tags", - "/properties/AttributesToDelete" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/InstanceFamilies", + "/properties/Platforms" + ], + "definitions": { + "ApplicationAttribute": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "PlatformType": { + "type": "string" + }, + "S3Location": { + "additionalProperties": false, + "properties": { + "S3Bucket": { + "type": "string" + }, + "S3Key": { + "type": "string" + } + }, + "required": [ + "S3Bucket", + "S3Key" + ], + "type": "object" + }, + "Tag": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "TagKey": { + "type": "string" + }, + "TagValue": { + "type": "string" + } + }, + "required": [ + "TagKey", + "TagValue" + ], + "type": "object" + } + ] + } + }, + "deprecatedProperties": [ + "/properties/Tags/TagKey", + "/properties/Tags/TagValue" + ], + "description": "Resource Type definition for AWS::AppStream::Application", + "handlers": { + "create": { + "permissions": [ + "s3:GetObject", + "appstream:CreateApplication", + "appstream:TagResource" + ] + }, + "delete": { + "permissions": [ + "appstream:DeleteApplication" + ] + }, + "read": { + "permissions": [ + "appstream:DescribeApplications" + ] + }, + "update": { + "permissions": [ + "appstream:UpdateApplication", + "s3:GetObject" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AppBlockArn": { + "$ref": "#/definitions/Arn" + }, + "Arn": { + "$ref": "#/definitions/Arn" + }, + "AttributesToDelete": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ApplicationAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "CreatedTime": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DisplayName": { + "type": "string" + }, + "IconS3Location": { + "$ref": "#/definitions/S3Location" + }, + "InstanceFamilies": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "LaunchParameters": { + "type": "string" + }, + "LaunchPath": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Platforms": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PlatformType" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "WorkingDirectory": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime" + ], + "required": [ + "Name", + "IconS3Location", + "LaunchPath", + "Platforms", + "InstanceFamilies", + "AppBlockArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appstream.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::AppStream::Application", + "writeOnlyProperties": [ + "/properties/Tags", + "/properties/AttributesToDelete" + ] +} diff --git a/src/schema/aws-appstream-applicationentitlementassociation.json b/src/schema/aws-appstream-applicationentitlementassociation.json index 8bf420f0..076cdf1d 100644 --- a/src/schema/aws-appstream-applicationentitlementassociation.json +++ b/src/schema/aws-appstream-applicationentitlementassociation.json @@ -1,55 +1,55 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StackName", - "/properties/EntitlementName", - "/properties/ApplicationIdentifier" - ], - "definitions": {}, - "description": "Resource Type definition for AWS::AppStream::ApplicationEntitlementAssociation", - "handlers": { - "create": { - "permissions": [ - "appstream:AssociateApplicationToEntitlement", - "appstream:ListEntitledApplications" - ] - }, - "delete": { - "permissions": [ - "appstream:DisassociateApplicationFromEntitlement", - "appstream:ListEntitledApplications" - ] - }, - "read": { - "permissions": [ - "appstream:ListEntitledApplications" - ] - } - }, - "primaryIdentifier": [ - "/properties/StackName", - "/properties/EntitlementName", - "/properties/ApplicationIdentifier" - ], - "properties": { - "ApplicationIdentifier": { - "type": "string" - }, - "EntitlementName": { - "type": "string" - }, - "StackName": { - "type": "string" - } - }, - "required": [ - "StackName", - "EntitlementName", - "ApplicationIdentifier" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appstream.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::AppStream::ApplicationEntitlementAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StackName", + "/properties/EntitlementName", + "/properties/ApplicationIdentifier" + ], + "definitions": {}, + "description": "Resource Type definition for AWS::AppStream::ApplicationEntitlementAssociation", + "handlers": { + "create": { + "permissions": [ + "appstream:AssociateApplicationToEntitlement", + "appstream:ListEntitledApplications" + ] + }, + "delete": { + "permissions": [ + "appstream:DisassociateApplicationFromEntitlement", + "appstream:ListEntitledApplications" + ] + }, + "read": { + "permissions": [ + "appstream:ListEntitledApplications" + ] + } + }, + "primaryIdentifier": [ + "/properties/StackName", + "/properties/EntitlementName", + "/properties/ApplicationIdentifier" + ], + "properties": { + "ApplicationIdentifier": { + "type": "string" + }, + "EntitlementName": { + "type": "string" + }, + "StackName": { + "type": "string" + } + }, + "required": [ + "StackName", + "EntitlementName", + "ApplicationIdentifier" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appstream.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::AppStream::ApplicationEntitlementAssociation" +} diff --git a/src/schema/aws-appstream-applicationfleetassociation.json b/src/schema/aws-appstream-applicationfleetassociation.json index a4e3a1bd..bef91ec6 100644 --- a/src/schema/aws-appstream-applicationfleetassociation.json +++ b/src/schema/aws-appstream-applicationfleetassociation.json @@ -1,53 +1,53 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FleetName", - "/properties/ApplicationArn" - ], - "definitions": { - "Arn": { - "type": "string" - } - }, - "description": "Resource Type definition for AWS::AppStream::ApplicationFleetAssociation", - "handlers": { - "create": { - "permissions": [ - "appstream:AssociateApplicationFleet", - "appstream:DescribeApplicationFleetAssociations" - ] - }, - "delete": { - "permissions": [ - "appstream:DisassociateApplicationFleet", - "appstream:DescribeApplicationFleetAssociations" - ] - }, - "read": { - "permissions": [ - "appstream:DescribeApplicationFleetAssociations" - ] - } - }, - "primaryIdentifier": [ - "/properties/FleetName", - "/properties/ApplicationArn" - ], - "properties": { - "ApplicationArn": { - "$ref": "#/definitions/Arn" - }, - "FleetName": { - "type": "string" - } - }, - "required": [ - "FleetName", - "ApplicationArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appstream.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::AppStream::ApplicationFleetAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FleetName", + "/properties/ApplicationArn" + ], + "definitions": { + "Arn": { + "type": "string" + } + }, + "description": "Resource Type definition for AWS::AppStream::ApplicationFleetAssociation", + "handlers": { + "create": { + "permissions": [ + "appstream:AssociateApplicationFleet", + "appstream:DescribeApplicationFleetAssociations" + ] + }, + "delete": { + "permissions": [ + "appstream:DisassociateApplicationFleet", + "appstream:DescribeApplicationFleetAssociations" + ] + }, + "read": { + "permissions": [ + "appstream:DescribeApplicationFleetAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/FleetName", + "/properties/ApplicationArn" + ], + "properties": { + "ApplicationArn": { + "$ref": "#/definitions/Arn" + }, + "FleetName": { + "type": "string" + } + }, + "required": [ + "FleetName", + "ApplicationArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appstream.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::AppStream::ApplicationFleetAssociation" +} diff --git a/src/schema/aws-appstream-directoryconfig.json b/src/schema/aws-appstream-directoryconfig.json index eed1f07c..8536235c 100644 --- a/src/schema/aws-appstream-directoryconfig.json +++ b/src/schema/aws-appstream-directoryconfig.json @@ -1,127 +1,127 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DirectoryName" - ], - "definitions": { - "CertificateBasedAuthProperties": { - "additionalProperties": false, - "properties": { - "CertificateAuthorityArn": { - "type": "string" - }, - "Status": { - "type": "string" - } - }, - "type": "object" - }, - "ServiceAccountCredentials": { - "additionalProperties": false, - "properties": { - "AccountName": { - "type": "string" - }, - "AccountPassword": { - "type": "string" - } - }, - "required": [ - "AccountName", - "AccountPassword" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppStream::DirectoryConfig", - "handlers": { - "create": { - "permissions": [ - "appstream:CreateDirectoryConfig", - "appstream:DeleteDirectoryConfig", - "appstream:DescribeDirectoryConfigs", - "appstream:UpdateDirectoryConfig", - "iam:CreateServiceLinkedRole", - "iam:DeleteServiceLinkedRole", - "iam:GetServiceLinkedRoleDeletionStatus" - ] - }, - "delete": { - "permissions": [ - "appstream:CreateDirectoryConfig", - "appstream:DeleteDirectoryConfig", - "appstream:DescribeDirectoryConfigs", - "appstream:UpdateDirectoryConfig", - "iam:CreateServiceLinkedRole", - "iam:DeleteServiceLinkedRole", - "iam:GetServiceLinkedRoleDeletionStatus" - ] - }, - "list": { - "permissions": [ - "appstream:CreateDirectoryConfig", - "appstream:DeleteDirectoryConfig", - "appstream:DescribeDirectoryConfigs", - "appstream:UpdateDirectoryConfig", - "iam:CreateServiceLinkedRole", - "iam:DeleteServiceLinkedRole", - "iam:GetServiceLinkedRoleDeletionStatus" - ] - }, - "read": { - "permissions": [ - "appstream:CreateDirectoryConfig", - "appstream:DeleteDirectoryConfig", - "appstream:DescribeDirectoryConfigs", - "appstream:UpdateDirectoryConfig", - "iam:CreateServiceLinkedRole", - "iam:DeleteServiceLinkedRole", - "iam:GetServiceLinkedRoleDeletionStatus" - ] - }, - "update": { - "permissions": [ - "appstream:CreateDirectoryConfig", - "appstream:DeleteDirectoryConfig", - "appstream:DescribeDirectoryConfigs", - "appstream:UpdateDirectoryConfig", - "iam:CreateServiceLinkedRole", - "iam:DeleteServiceLinkedRole", - "iam:GetServiceLinkedRoleDeletionStatus" - ] - } - }, - "primaryIdentifier": [ - "/properties/DirectoryName" - ], - "properties": { - "CertificateBasedAuthProperties": { - "$ref": "#/definitions/CertificateBasedAuthProperties" - }, - "DirectoryName": { - "type": "string" - }, - "OrganizationalUnitDistinguishedNames": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ServiceAccountCredentials": { - "$ref": "#/definitions/ServiceAccountCredentials" - } - }, - "required": [ - "DirectoryName", - "OrganizationalUnitDistinguishedNames", - "ServiceAccountCredentials" - ], - "tagging": { - "taggable": false - }, - "typeName": "AWS::AppStream::DirectoryConfig", - "writeOnlyProperties": [ - "/properties/ServiceAccountCredentials/AccountPassword" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DirectoryName" + ], + "definitions": { + "CertificateBasedAuthProperties": { + "additionalProperties": false, + "properties": { + "CertificateAuthorityArn": { + "type": "string" + }, + "Status": { + "type": "string" + } + }, + "type": "object" + }, + "ServiceAccountCredentials": { + "additionalProperties": false, + "properties": { + "AccountName": { + "type": "string" + }, + "AccountPassword": { + "type": "string" + } + }, + "required": [ + "AccountName", + "AccountPassword" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppStream::DirectoryConfig", + "handlers": { + "create": { + "permissions": [ + "appstream:CreateDirectoryConfig", + "appstream:DeleteDirectoryConfig", + "appstream:DescribeDirectoryConfigs", + "appstream:UpdateDirectoryConfig", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ] + }, + "delete": { + "permissions": [ + "appstream:CreateDirectoryConfig", + "appstream:DeleteDirectoryConfig", + "appstream:DescribeDirectoryConfigs", + "appstream:UpdateDirectoryConfig", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ] + }, + "list": { + "permissions": [ + "appstream:CreateDirectoryConfig", + "appstream:DeleteDirectoryConfig", + "appstream:DescribeDirectoryConfigs", + "appstream:UpdateDirectoryConfig", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ] + }, + "read": { + "permissions": [ + "appstream:CreateDirectoryConfig", + "appstream:DeleteDirectoryConfig", + "appstream:DescribeDirectoryConfigs", + "appstream:UpdateDirectoryConfig", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ] + }, + "update": { + "permissions": [ + "appstream:CreateDirectoryConfig", + "appstream:DeleteDirectoryConfig", + "appstream:DescribeDirectoryConfigs", + "appstream:UpdateDirectoryConfig", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ] + } + }, + "primaryIdentifier": [ + "/properties/DirectoryName" + ], + "properties": { + "CertificateBasedAuthProperties": { + "$ref": "#/definitions/CertificateBasedAuthProperties" + }, + "DirectoryName": { + "type": "string" + }, + "OrganizationalUnitDistinguishedNames": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ServiceAccountCredentials": { + "$ref": "#/definitions/ServiceAccountCredentials" + } + }, + "required": [ + "DirectoryName", + "OrganizationalUnitDistinguishedNames", + "ServiceAccountCredentials" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::AppStream::DirectoryConfig", + "writeOnlyProperties": [ + "/properties/ServiceAccountCredentials/AccountPassword" + ] +} diff --git a/src/schema/aws-appstream-entitlement.json b/src/schema/aws-appstream-entitlement.json index 7cdfa98c..92a9ce97 100644 --- a/src/schema/aws-appstream-entitlement.json +++ b/src/schema/aws-appstream-entitlement.json @@ -1,95 +1,95 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/StackName" - ], - "definitions": { - "Attribute": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Name", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppStream::Entitlement", - "handlers": { - "create": { - "permissions": [ - "appstream:CreateEntitlement" - ] - }, - "delete": { - "permissions": [ - "appstream:DeleteEntitlement" - ] - }, - "read": { - "permissions": [ - "appstream:DescribeEntitlements" - ] - }, - "update": { - "permissions": [ - "appstream:UpdateEntitlement" - ] - } - }, - "primaryIdentifier": [ - "/properties/StackName", - "/properties/Name" - ], - "properties": { - "AppVisibility": { - "type": "string" - }, - "Attributes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Attribute" - }, - "type": "array", - "uniqueItems": true - }, - "CreatedTime": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "LastModifiedTime": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "StackName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CreatedTime", - "/properties/LastModifiedTime" - ], - "required": [ - "Name", - "StackName", - "AppVisibility", - "Attributes" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appstream.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::AppStream::Entitlement" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/StackName" + ], + "definitions": { + "Attribute": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Name", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppStream::Entitlement", + "handlers": { + "create": { + "permissions": [ + "appstream:CreateEntitlement" + ] + }, + "delete": { + "permissions": [ + "appstream:DeleteEntitlement" + ] + }, + "read": { + "permissions": [ + "appstream:DescribeEntitlements" + ] + }, + "update": { + "permissions": [ + "appstream:UpdateEntitlement" + ] + } + }, + "primaryIdentifier": [ + "/properties/StackName", + "/properties/Name" + ], + "properties": { + "AppVisibility": { + "type": "string" + }, + "Attributes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Attribute" + }, + "type": "array", + "uniqueItems": true + }, + "CreatedTime": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "LastModifiedTime": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "StackName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedTime", + "/properties/LastModifiedTime" + ], + "required": [ + "Name", + "StackName", + "AppVisibility", + "Attributes" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appstream.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::AppStream::Entitlement" +} diff --git a/src/schema/aws-appstream-fleet.json b/src/schema/aws-appstream-fleet.json index a057053f..295fc035 100644 --- a/src/schema/aws-appstream-fleet.json +++ b/src/schema/aws-appstream-fleet.json @@ -1,176 +1,176 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/FleetType" - ], - "definitions": { - "ComputeCapacity": { - "additionalProperties": false, - "properties": { - "DesiredInstances": { - "type": "integer" - }, - "DesiredSessions": { - "type": "integer" - } - }, - "type": "object" - }, - "DomainJoinInfo": { - "additionalProperties": false, - "properties": { - "DirectoryName": { - "type": "string" - }, - "OrganizationalUnitDistinguishedName": { - "type": "string" - } - }, - "type": "object" - }, - "S3Location": { - "additionalProperties": false, - "properties": { - "S3Bucket": { - "type": "string" - }, - "S3Key": { - "type": "string" - } - }, - "required": [ - "S3Bucket", - "S3Key" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "VpcConfig": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppStream::Fleet", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ComputeCapacity": { - "$ref": "#/definitions/ComputeCapacity" - }, - "Description": { - "type": "string" - }, - "DisconnectTimeoutInSeconds": { - "type": "integer" - }, - "DisplayName": { - "type": "string" - }, - "DomainJoinInfo": { - "$ref": "#/definitions/DomainJoinInfo" - }, - "EnableDefaultInternetAccess": { - "type": "boolean" - }, - "FleetType": { - "type": "string" - }, - "IamRoleArn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "IdleDisconnectTimeoutInSeconds": { - "type": "integer" - }, - "ImageArn": { - "type": "string" - }, - "ImageName": { - "type": "string" - }, - "InstanceType": { - "type": "string" - }, - "MaxConcurrentSessions": { - "type": "integer" - }, - "MaxSessionsPerInstance": { - "type": "integer" - }, - "MaxUserDurationInSeconds": { - "type": "integer" - }, - "Name": { - "type": "string" - }, - "Platform": { - "type": "string" - }, - "SessionScriptS3Location": { - "$ref": "#/definitions/S3Location" - }, - "StreamView": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "UsbDeviceFilterStrings": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "VpcConfig": { - "$ref": "#/definitions/VpcConfig" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "InstanceType", - "Name" - ], - "typeName": "AWS::AppStream::Fleet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/FleetType" + ], + "definitions": { + "ComputeCapacity": { + "additionalProperties": false, + "properties": { + "DesiredInstances": { + "type": "integer" + }, + "DesiredSessions": { + "type": "integer" + } + }, + "type": "object" + }, + "DomainJoinInfo": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "type": "string" + }, + "OrganizationalUnitDistinguishedName": { + "type": "string" + } + }, + "type": "object" + }, + "S3Location": { + "additionalProperties": false, + "properties": { + "S3Bucket": { + "type": "string" + }, + "S3Key": { + "type": "string" + } + }, + "required": [ + "S3Bucket", + "S3Key" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VpcConfig": { + "additionalProperties": false, + "properties": { + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppStream::Fleet", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ComputeCapacity": { + "$ref": "#/definitions/ComputeCapacity" + }, + "Description": { + "type": "string" + }, + "DisconnectTimeoutInSeconds": { + "type": "integer" + }, + "DisplayName": { + "type": "string" + }, + "DomainJoinInfo": { + "$ref": "#/definitions/DomainJoinInfo" + }, + "EnableDefaultInternetAccess": { + "type": "boolean" + }, + "FleetType": { + "type": "string" + }, + "IamRoleArn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IdleDisconnectTimeoutInSeconds": { + "type": "integer" + }, + "ImageArn": { + "type": "string" + }, + "ImageName": { + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "MaxConcurrentSessions": { + "type": "integer" + }, + "MaxSessionsPerInstance": { + "type": "integer" + }, + "MaxUserDurationInSeconds": { + "type": "integer" + }, + "Name": { + "type": "string" + }, + "Platform": { + "type": "string" + }, + "SessionScriptS3Location": { + "$ref": "#/definitions/S3Location" + }, + "StreamView": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "UsbDeviceFilterStrings": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "VpcConfig": { + "$ref": "#/definitions/VpcConfig" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "InstanceType", + "Name" + ], + "typeName": "AWS::AppStream::Fleet" +} diff --git a/src/schema/aws-appstream-imagebuilder.json b/src/schema/aws-appstream-imagebuilder.json index 5742510c..ad9f691a 100644 --- a/src/schema/aws-appstream-imagebuilder.json +++ b/src/schema/aws-appstream-imagebuilder.json @@ -1,198 +1,198 @@ -{ - "additionalProperties": false, - "definitions": { - "AccessEndpoint": { - "additionalProperties": false, - "properties": { - "EndpointType": { - "type": "string" - }, - "VpceId": { - "type": "string" - } - }, - "required": [ - "EndpointType", - "VpceId" - ], - "type": "object" - }, - "DomainJoinInfo": { - "additionalProperties": false, - "properties": { - "DirectoryName": { - "type": "string" - }, - "OrganizationalUnitDistinguishedName": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "VpcConfig": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppStream::ImageBuilder", - "handlers": { - "create": { - "permissions": [ - "appstream:CreateImageBuilder", - "appstream:CreateImageBuilderStreamingURL", - "appstream:CreateStreamingURL", - "appstream:DeleteImageBuilder", - "appstream:DescribeImageBuilders", - "appstream:StartImageBuilder", - "appstream:StopImageBuilder", - "iam:CreateServiceLinkedRole", - "iam:DeleteServiceLinkedRole", - "iam:GetServiceLinkedRoleDeletionStatus" - ] - }, - "delete": { - "permissions": [ - "appstream:CreateImageBuilder", - "appstream:CreateImageBuilderStreamingURL", - "appstream:CreateStreamingURL", - "appstream:DeleteImageBuilder", - "appstream:DescribeImageBuilders", - "appstream:StartImageBuilder", - "appstream:StopImageBuilder", - "iam:CreateServiceLinkedRole", - "iam:DeleteServiceLinkedRole", - "iam:GetServiceLinkedRoleDeletionStatus" - ] - }, - "list": { - "permissions": [ - "appstream:CreateImageBuilder", - "appstream:CreateImageBuilderStreamingURL", - "appstream:CreateStreamingURL", - "appstream:DeleteImageBuilder", - "appstream:DescribeImageBuilders", - "appstream:StartImageBuilder", - "appstream:StopImageBuilder", - "iam:CreateServiceLinkedRole", - "iam:DeleteServiceLinkedRole", - "iam:GetServiceLinkedRoleDeletionStatus" - ] - }, - "read": { - "permissions": [ - "appstream:CreateImageBuilder", - "appstream:CreateImageBuilderStreamingURL", - "appstream:CreateStreamingURL", - "appstream:DeleteImageBuilder", - "appstream:DescribeImageBuilders", - "appstream:StartImageBuilder", - "appstream:StopImageBuilder", - "iam:CreateServiceLinkedRole", - "iam:DeleteServiceLinkedRole", - "iam:GetServiceLinkedRoleDeletionStatus" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "AccessEndpoints": { - "items": { - "$ref": "#/definitions/AccessEndpoint" - }, - "type": "array", - "uniqueItems": false - }, - "AppstreamAgentVersion": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "DisplayName": { - "type": "string" - }, - "DomainJoinInfo": { - "$ref": "#/definitions/DomainJoinInfo" - }, - "EnableDefaultInternetAccess": { - "type": "boolean" - }, - "IamRoleArn": { - "type": "string" - }, - "ImageArn": { - "type": "string" - }, - "ImageName": { - "type": "string" - }, - "InstanceType": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "StreamingUrl": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcConfig": { - "$ref": "#/definitions/VpcConfig" - } - }, - "readOnlyProperties": [ - "/properties/StreamingUrl" - ], - "required": [ - "InstanceType", - "Name" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::AppStream::ImageBuilder" -} +{ + "additionalProperties": false, + "definitions": { + "AccessEndpoint": { + "additionalProperties": false, + "properties": { + "EndpointType": { + "type": "string" + }, + "VpceId": { + "type": "string" + } + }, + "required": [ + "EndpointType", + "VpceId" + ], + "type": "object" + }, + "DomainJoinInfo": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "type": "string" + }, + "OrganizationalUnitDistinguishedName": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VpcConfig": { + "additionalProperties": false, + "properties": { + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppStream::ImageBuilder", + "handlers": { + "create": { + "permissions": [ + "appstream:CreateImageBuilder", + "appstream:CreateImageBuilderStreamingURL", + "appstream:CreateStreamingURL", + "appstream:DeleteImageBuilder", + "appstream:DescribeImageBuilders", + "appstream:StartImageBuilder", + "appstream:StopImageBuilder", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ] + }, + "delete": { + "permissions": [ + "appstream:CreateImageBuilder", + "appstream:CreateImageBuilderStreamingURL", + "appstream:CreateStreamingURL", + "appstream:DeleteImageBuilder", + "appstream:DescribeImageBuilders", + "appstream:StartImageBuilder", + "appstream:StopImageBuilder", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ] + }, + "list": { + "permissions": [ + "appstream:CreateImageBuilder", + "appstream:CreateImageBuilderStreamingURL", + "appstream:CreateStreamingURL", + "appstream:DeleteImageBuilder", + "appstream:DescribeImageBuilders", + "appstream:StartImageBuilder", + "appstream:StopImageBuilder", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ] + }, + "read": { + "permissions": [ + "appstream:CreateImageBuilder", + "appstream:CreateImageBuilderStreamingURL", + "appstream:CreateStreamingURL", + "appstream:DeleteImageBuilder", + "appstream:DescribeImageBuilders", + "appstream:StartImageBuilder", + "appstream:StopImageBuilder", + "iam:CreateServiceLinkedRole", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "AccessEndpoints": { + "items": { + "$ref": "#/definitions/AccessEndpoint" + }, + "type": "array", + "uniqueItems": false + }, + "AppstreamAgentVersion": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DisplayName": { + "type": "string" + }, + "DomainJoinInfo": { + "$ref": "#/definitions/DomainJoinInfo" + }, + "EnableDefaultInternetAccess": { + "type": "boolean" + }, + "IamRoleArn": { + "type": "string" + }, + "ImageArn": { + "type": "string" + }, + "ImageName": { + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "StreamingUrl": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcConfig": { + "$ref": "#/definitions/VpcConfig" + } + }, + "readOnlyProperties": [ + "/properties/StreamingUrl" + ], + "required": [ + "InstanceType", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::AppStream::ImageBuilder" +} diff --git a/src/schema/aws-appstream-stack.json b/src/schema/aws-appstream-stack.json index 00b89f49..dea24ab4 100644 --- a/src/schema/aws-appstream-stack.json +++ b/src/schema/aws-appstream-stack.json @@ -1,184 +1,184 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "AccessEndpoint": { - "additionalProperties": false, - "properties": { - "EndpointType": { - "type": "string" - }, - "VpceId": { - "type": "string" - } - }, - "required": [ - "EndpointType", - "VpceId" - ], - "type": "object" - }, - "ApplicationSettings": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "SettingsGroup": { - "type": "string" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "StorageConnector": { - "additionalProperties": false, - "properties": { - "ConnectorType": { - "type": "string" - }, - "Domains": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ResourceIdentifier": { - "type": "string" - } - }, - "required": [ - "ConnectorType" - ], - "type": "object" - }, - "StreamingExperienceSettings": { - "additionalProperties": false, - "properties": { - "PreferredProtocol": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "UserSetting": { - "additionalProperties": false, - "properties": { - "Action": { - "type": "string" - }, - "MaximumLength": { - "type": "integer" - }, - "Permission": { - "type": "string" - } - }, - "required": [ - "Action", - "Permission" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppStream::Stack", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AccessEndpoints": { - "items": { - "$ref": "#/definitions/AccessEndpoint" - }, - "type": "array", - "uniqueItems": false - }, - "ApplicationSettings": { - "$ref": "#/definitions/ApplicationSettings" - }, - "AttributesToDelete": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "DeleteStorageConnectors": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DisplayName": { - "type": "string" - }, - "EmbedHostDomains": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "FeedbackURL": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "RedirectURL": { - "type": "string" - }, - "StorageConnectors": { - "items": { - "$ref": "#/definitions/StorageConnector" - }, - "type": "array", - "uniqueItems": false - }, - "StreamingExperienceSettings": { - "$ref": "#/definitions/StreamingExperienceSettings" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "UserSettings": { - "items": { - "$ref": "#/definitions/UserSetting" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "typeName": "AWS::AppStream::Stack" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "AccessEndpoint": { + "additionalProperties": false, + "properties": { + "EndpointType": { + "type": "string" + }, + "VpceId": { + "type": "string" + } + }, + "required": [ + "EndpointType", + "VpceId" + ], + "type": "object" + }, + "ApplicationSettings": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "SettingsGroup": { + "type": "string" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "StorageConnector": { + "additionalProperties": false, + "properties": { + "ConnectorType": { + "type": "string" + }, + "Domains": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ResourceIdentifier": { + "type": "string" + } + }, + "required": [ + "ConnectorType" + ], + "type": "object" + }, + "StreamingExperienceSettings": { + "additionalProperties": false, + "properties": { + "PreferredProtocol": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "UserSetting": { + "additionalProperties": false, + "properties": { + "Action": { + "type": "string" + }, + "MaximumLength": { + "type": "integer" + }, + "Permission": { + "type": "string" + } + }, + "required": [ + "Action", + "Permission" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppStream::Stack", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AccessEndpoints": { + "items": { + "$ref": "#/definitions/AccessEndpoint" + }, + "type": "array", + "uniqueItems": false + }, + "ApplicationSettings": { + "$ref": "#/definitions/ApplicationSettings" + }, + "AttributesToDelete": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "DeleteStorageConnectors": { + "type": "boolean" + }, + "Description": { + "type": "string" + }, + "DisplayName": { + "type": "string" + }, + "EmbedHostDomains": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "FeedbackURL": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "RedirectURL": { + "type": "string" + }, + "StorageConnectors": { + "items": { + "$ref": "#/definitions/StorageConnector" + }, + "type": "array", + "uniqueItems": false + }, + "StreamingExperienceSettings": { + "$ref": "#/definitions/StreamingExperienceSettings" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "UserSettings": { + "items": { + "$ref": "#/definitions/UserSetting" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::AppStream::Stack" +} diff --git a/src/schema/aws-appstream-stackfleetassociation.json b/src/schema/aws-appstream-stackfleetassociation.json index 30ef38b4..8bb349c5 100644 --- a/src/schema/aws-appstream-stackfleetassociation.json +++ b/src/schema/aws-appstream-stackfleetassociation.json @@ -1,26 +1,26 @@ -{ - "additionalProperties": false, - "description": "Resource Type definition for AWS::AppStream::StackFleetAssociation", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "FleetName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "StackName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "FleetName", - "StackName" - ], - "typeName": "AWS::AppStream::StackFleetAssociation" -} +{ + "additionalProperties": false, + "description": "Resource Type definition for AWS::AppStream::StackFleetAssociation", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "FleetName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "StackName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FleetName", + "StackName" + ], + "typeName": "AWS::AppStream::StackFleetAssociation" +} diff --git a/src/schema/aws-appstream-stackuserassociation.json b/src/schema/aws-appstream-stackuserassociation.json index a2c8a5db..47f01815 100644 --- a/src/schema/aws-appstream-stackuserassociation.json +++ b/src/schema/aws-appstream-stackuserassociation.json @@ -1,39 +1,39 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StackName", - "/properties/AuthenticationType", - "/properties/SendEmailNotification", - "/properties/UserName" - ], - "description": "Resource Type definition for AWS::AppStream::StackUserAssociation", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AuthenticationType": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "SendEmailNotification": { - "type": "boolean" - }, - "StackName": { - "type": "string" - }, - "UserName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "StackName", - "UserName", - "AuthenticationType" - ], - "typeName": "AWS::AppStream::StackUserAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StackName", + "/properties/AuthenticationType", + "/properties/SendEmailNotification", + "/properties/UserName" + ], + "description": "Resource Type definition for AWS::AppStream::StackUserAssociation", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AuthenticationType": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "SendEmailNotification": { + "type": "boolean" + }, + "StackName": { + "type": "string" + }, + "UserName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "StackName", + "UserName", + "AuthenticationType" + ], + "typeName": "AWS::AppStream::StackUserAssociation" +} diff --git a/src/schema/aws-appstream-user.json b/src/schema/aws-appstream-user.json index 01b02217..5156a6ba 100644 --- a/src/schema/aws-appstream-user.json +++ b/src/schema/aws-appstream-user.json @@ -1,42 +1,42 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FirstName", - "/properties/MessageAction", - "/properties/LastName", - "/properties/AuthenticationType", - "/properties/UserName" - ], - "description": "Resource Type definition for AWS::AppStream::User", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AuthenticationType": { - "type": "string" - }, - "FirstName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "LastName": { - "type": "string" - }, - "MessageAction": { - "type": "string" - }, - "UserName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "UserName", - "AuthenticationType" - ], - "typeName": "AWS::AppStream::User" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FirstName", + "/properties/MessageAction", + "/properties/LastName", + "/properties/AuthenticationType", + "/properties/UserName" + ], + "description": "Resource Type definition for AWS::AppStream::User", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AuthenticationType": { + "type": "string" + }, + "FirstName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "LastName": { + "type": "string" + }, + "MessageAction": { + "type": "string" + }, + "UserName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "UserName", + "AuthenticationType" + ], + "typeName": "AWS::AppStream::User" +} diff --git a/src/schema/aws-appsync-api.json b/src/schema/aws-appsync-api.json index 62c7935f..d9d352a4 100644 --- a/src/schema/aws-appsync-api.json +++ b/src/schema/aws-appsync-api.json @@ -1,268 +1,332 @@ { - "typeName" : "AWS::AppSync::Api", - "description" : "Resource schema for AppSync Api", - "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "definitions" : { - "EventConfig" : { - "description" : "The configuration for an Event Api", - "type" : "object", - "additionalProperties" : false, - "properties" : { - "AuthProviders" : { - "$ref" : "#/definitions/AuthProviders" - }, - "ConnectionAuthModes" : { - "$ref" : "#/definitions/AuthModes" - }, - "DefaultPublishAuthModes" : { - "$ref" : "#/definitions/AuthModes" - }, - "DefaultSubscribeAuthModes" : { - "$ref" : "#/definitions/AuthModes" - }, - "LogConfig" : { - "$ref" : "#/definitions/EventLogConfig" - } - }, - "required" : [ "AuthProviders", "ConnectionAuthModes", "DefaultPublishAuthModes", "DefaultSubscribeAuthModes" ] + "additionalProperties": false, + "definitions": { + "ApiName": { + "description": "The name of the AppSync API.", + "maxLength": 50, + "minLength": 1, + "pattern": "[A-Za-z0-9_\\-\\ ]+", + "type": "string" }, - "AuthMode" : { - "description" : "An auth mode.", - "type" : "object", - "additionalProperties" : false, - "properties" : { - "AuthType" : { - "$ref" : "#/definitions/AuthenticationType" + "AuthMode": { + "additionalProperties": false, + "description": "An auth mode.", + "properties": { + "AuthType": { + "$ref": "#/definitions/AuthenticationType" } - } - }, - "AuthModes" : { - "description" : "A list of auth modes for the AppSync API.", - "type" : "array", - "insertionOrder" : false, - "items" : { - "$ref" : "#/definitions/AuthMode" - } + }, + "type": "object" }, - "AuthenticationType" : { - "description" : "Security configuration for your AppSync API.", - "type" : "string", - "enum" : [ "AMAZON_COGNITO_USER_POOLS", "AWS_IAM", "API_KEY", "OPENID_CONNECT", "AWS_LAMBDA" ] + "AuthModes": { + "description": "A list of auth modes for the AppSync API.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AuthMode" + }, + "type": "array" }, - "OpenIDConnectConfig" : { - "description" : "The OpenID Connect configuration.", - "type" : "object", - "additionalProperties" : false, - "properties" : { - "ClientId" : { - "type" : "string" + "AuthProvider": { + "additionalProperties": false, + "description": "An auth provider for the AppSync API.", + "properties": { + "AuthType": { + "$ref": "#/definitions/AuthenticationType" }, - "AuthTTL" : { - "type" : "number" + "CognitoConfig": { + "$ref": "#/definitions/CognitoConfig" }, - "Issuer" : { - "type" : "string" + "LambdaAuthorizerConfig": { + "$ref": "#/definitions/LambdaAuthorizerConfig" }, - "IatTTL" : { - "type" : "number" + "OpenIDConnectConfig": { + "$ref": "#/definitions/OpenIDConnectConfig" } }, - "required" : [ "Issuer" ] + "required": [ + "AuthType" + ], + "type": "object" + }, + "AuthProviders": { + "description": "A list of auth providers for the AppSync API.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AuthProvider" + }, + "type": "array" + }, + "AuthenticationType": { + "description": "Security configuration for your AppSync API.", + "enum": [ + "AMAZON_COGNITO_USER_POOLS", + "AWS_IAM", + "API_KEY", + "OPENID_CONNECT", + "AWS_LAMBDA" + ], + "type": "string" }, - "CognitoConfig" : { - "description" : "Optional authorization configuration for using Amazon Cognito user pools with your API endpoint.", - "type" : "object", - "additionalProperties" : false, - "properties" : { - "AppIdClientRegex" : { - "type" : "string" + "CognitoConfig": { + "additionalProperties": false, + "description": "Optional authorization configuration for using Amazon Cognito user pools with your API endpoint.", + "properties": { + "AppIdClientRegex": { + "type": "string" }, - "UserPoolId" : { - "type" : "string" + "AwsRegion": { + "type": "string" }, - "AwsRegion" : { - "type" : "string" + "UserPoolId": { + "type": "string" } }, - "required" : [ "UserPoolId", "AwsRegion" ] + "required": [ + "UserPoolId", + "AwsRegion" + ], + "type": "object" }, - "LambdaAuthorizerConfig" : { - "description" : "A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time.", - "type" : "object", - "additionalProperties" : false, - "properties" : { - "AuthorizerResultTtlInSeconds" : { - "type" : "integer", - "minimum" : 0, - "maximum" : 3600 + "DnsMap": { + "additionalProperties": false, + "description": "A map of DNS names for the AppSync API.", + "properties": { + "Http": { + "type": "string" }, - "AuthorizerUri" : { - "type" : "string" - }, - "IdentityValidationExpression" : { - "type" : "string" + "Realtime": { + "type": "string" } }, - "required" : [ "AuthorizerUri" ] - }, - "AuthProviders" : { - "description" : "A list of auth providers for the AppSync API.", - "type" : "array", - "insertionOrder" : false, - "items" : { - "$ref" : "#/definitions/AuthProvider" - } + "type": "object" }, - "AuthProvider" : { - "description" : "An auth provider for the AppSync API.", - "type" : "object", - "additionalProperties" : false, - "properties" : { - "AuthType" : { - "$ref" : "#/definitions/AuthenticationType" + "EventConfig": { + "additionalProperties": false, + "description": "The configuration for an Event Api", + "properties": { + "AuthProviders": { + "$ref": "#/definitions/AuthProviders" }, - "OpenIDConnectConfig" : { - "$ref" : "#/definitions/OpenIDConnectConfig" + "ConnectionAuthModes": { + "$ref": "#/definitions/AuthModes" }, - "CognitoConfig" : { - "$ref" : "#/definitions/CognitoConfig" + "DefaultPublishAuthModes": { + "$ref": "#/definitions/AuthModes" }, - "LambdaAuthorizerConfig" : { - "$ref" : "#/definitions/LambdaAuthorizerConfig" + "DefaultSubscribeAuthModes": { + "$ref": "#/definitions/AuthModes" + }, + "LogConfig": { + "$ref": "#/definitions/EventLogConfig" } }, - "required" : [ "AuthType" ] + "required": [ + "AuthProviders", + "ConnectionAuthModes", + "DefaultPublishAuthModes", + "DefaultSubscribeAuthModes" + ], + "type": "object" }, - "Tag" : { - "description" : "An arbitrary set of tags (key-value pairs) for this AppSync API.", - "type" : "object", - "properties" : { - "Key" : { - "description" : "A string used to identify this tag. You can specify a maximum of 128 characters for a tag key.", - "type" : "string", - "minLength" : 1, - "maxLength" : 128, - "pattern" : "^(?!aws:)[ a-zA-Z+-=._:/]+$" + "EventLogConfig": { + "additionalProperties": false, + "description": "The log config for the AppSync API.", + "properties": { + "CloudWatchLogsRoleArn": { + "type": "string" }, - "Value" : { - "description" : "A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value.", - "type" : "string", - "minLength" : 0, - "maxLength" : 256, - "pattern" : "^[\\s\\w+-=\\.:/@]*$" + "LogLevel": { + "$ref": "#/definitions/EventLogLevel" } }, - "required" : [ "Key", "Value" ], - "additionalProperties" : false - }, - "Tags" : { - "description" : "An arbitrary set of tags (key-value pairs) for this AppSync API.", - "type" : "array", - "uniqueItems" : true, - "insertionOrder" : false, - "items" : { - "$ref" : "#/definitions/Tag" - } + "required": [ + "LogLevel", + "CloudWatchLogsRoleArn" + ], + "type": "object" }, - "ApiName" : { - "description" : "The name of the AppSync API.", - "type" : "string", - "minLength" : 1, - "maxLength" : 50, - "pattern" : "[A-Za-z0-9_\\-\\ ]+" + "EventLogLevel": { + "description": "Logging level for the AppSync API.", + "enum": [ + "NONE", + "ERROR", + "ALL", + "INFO", + "DEBUG" + ], + "type": "string" }, - "OwnerContact" : { - "description" : "The owner contact information for an API resource.", - "type" : "string", - "minLength" : 1, - "maxLength" : 250, - "pattern" : "[A-Za-z0-9_\\-\\ \\.]+" + "LambdaAuthorizerConfig": { + "additionalProperties": false, + "description": "A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time.", + "properties": { + "AuthorizerResultTtlInSeconds": { + "maximum": 3600, + "minimum": 0, + "type": "integer" + }, + "AuthorizerUri": { + "type": "string" + }, + "IdentityValidationExpression": { + "type": "string" + } + }, + "required": [ + "AuthorizerUri" + ], + "type": "object" }, - "DnsMap" : { - "description" : "A map of DNS names for the AppSync API.", - "type" : "object", - "additionalProperties" : false, - "properties" : { - "Realtime" : { - "type" : "string" + "OpenIDConnectConfig": { + "additionalProperties": false, + "description": "The OpenID Connect configuration.", + "properties": { + "AuthTTL": { + "type": "number" }, - "Http" : { - "type" : "string" + "ClientId": { + "type": "string" + }, + "IatTTL": { + "type": "number" + }, + "Issuer": { + "type": "string" } - } + }, + "required": [ + "Issuer" + ], + "type": "object" }, - "EventLogLevel" : { - "description" : "Logging level for the AppSync API.", - "type" : "string", - "enum" : [ "NONE", "ERROR", "ALL", "INFO", "DEBUG" ] + "OwnerContact": { + "description": "The owner contact information for an API resource.", + "maxLength": 250, + "minLength": 1, + "pattern": "[A-Za-z0-9_\\-\\ \\.]+", + "type": "string" }, - "EventLogConfig" : { - "description" : "The log config for the AppSync API.", - "type" : "object", - "additionalProperties" : false, - "properties" : { - "LogLevel" : { - "$ref" : "#/definitions/EventLogLevel" + "Tag": { + "additionalProperties": false, + "description": "An arbitrary set of tags (key-value pairs) for this AppSync API.", + "properties": { + "Key": { + "description": "A string used to identify this tag. You can specify a maximum of 128 characters for a tag key.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[ a-zA-Z+-=._:/]+$", + "type": "string" }, - "CloudWatchLogsRoleArn" : { - "type" : "string" + "Value": { + "description": "A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[\\s\\w+-=\\.:/@]*$", + "type": "string" } }, - "required" : [ "LogLevel", "CloudWatchLogsRoleArn" ] + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this AppSync API.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true } }, - "properties" : { - "ApiId" : { - "description" : "The unique identifier for the AppSync Api generated by the service", - "type" : "string" - }, - "ApiArn" : { - "description" : "The Amazon Resource Name (ARN) of the AppSync Api", - "type" : "string" + "description": "Resource schema for AppSync Api", + "handlers": { + "create": { + "permissions": [ + "appsync:CreateApi", + "appsync:TagResource", + "appsync:GetApi", + "iam:PassRole" + ] }, - "Name" : { - "$ref" : "#/definitions/ApiName" + "delete": { + "permissions": [ + "appsync:DeleteApi", + "appsync:UntagResource" + ] }, - "OwnerContact" : { - "$ref" : "#/definitions/OwnerContact" + "list": { + "permissions": [ + "appsync:ListApis" + ] }, - "Dns" : { - "$ref" : "#/definitions/DnsMap" + "read": { + "permissions": [ + "appsync:GetApi", + "appsync:ListTagsForResource" + ] }, - "EventConfig" : { - "$ref" : "#/definitions/EventConfig" - }, - "Tags" : { - "$ref" : "#/definitions/Tags" + "update": { + "permissions": [ + "appsync:UpdateApi", + "appsync:TagResource", + "appsync:UntagResource", + "appsync:GetApi", + "iam:PassRole" + ] } }, - "tagging" : { - "taggable" : true, - "tagOnCreate" : true, - "tagUpdatable" : true, - "cloudFormationSystemTags" : true, - "tagProperty" : "/properties/Tags", - "permissions" : [ "appsync:TagResource", "appsync:UntagResource" ] - }, - "additionalProperties" : false, - "required" : [ "Name" ], - "readOnlyProperties" : [ "/properties/ApiId", "/properties/Dns", "/properties/Dns/Realtime", "/properties/Dns/Http", "/properties/ApiArn" ], - "primaryIdentifier" : [ "/properties/ApiArn" ], - "handlers" : { - "create" : { - "permissions" : [ "appsync:CreateApi", "appsync:TagResource", "appsync:GetApi", "iam:PassRole" ] + "primaryIdentifier": [ + "/properties/ApiArn" + ], + "properties": { + "ApiArn": { + "description": "The Amazon Resource Name (ARN) of the AppSync Api", + "type": "string" }, - "read" : { - "permissions" : [ "appsync:GetApi", "appsync:ListTagsForResource" ] + "ApiId": { + "description": "The unique identifier for the AppSync Api generated by the service", + "type": "string" }, - "update" : { - "permissions" : [ "appsync:UpdateApi", "appsync:TagResource", "appsync:UntagResource", "appsync:GetApi", "iam:PassRole" ] + "Dns": { + "$ref": "#/definitions/DnsMap" }, - "delete" : { - "permissions" : [ "appsync:DeleteApi", "appsync:UntagResource" ] + "EventConfig": { + "$ref": "#/definitions/EventConfig" }, - "list" : { - "permissions" : [ "appsync:ListApis" ] + "Name": { + "$ref": "#/definitions/ApiName" + }, + "OwnerContact": { + "$ref": "#/definitions/OwnerContact" + }, + "Tags": { + "$ref": "#/definitions/Tags" } - } -} \ No newline at end of file + }, + "readOnlyProperties": [ + "/properties/ApiId", + "/properties/Dns", + "/properties/Dns/Realtime", + "/properties/Dns/Http", + "/properties/ApiArn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "appsync:TagResource", + "appsync:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppSync::Api" +} diff --git a/src/schema/aws-appsync-apicache.json b/src/schema/aws-appsync-apicache.json index 20655c0f..664fa02f 100644 --- a/src/schema/aws-appsync-apicache.json +++ b/src/schema/aws-appsync-apicache.json @@ -1,46 +1,46 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApiId" - ], - "description": "Resource Type definition for AWS::AppSync::ApiCache", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApiCachingBehavior": { - "type": "string" - }, - "ApiId": { - "type": "string" - }, - "AtRestEncryptionEnabled": { - "type": "boolean" - }, - "HealthMetricsConfig": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "TransitEncryptionEnabled": { - "type": "boolean" - }, - "Ttl": { - "type": "number" - }, - "Type": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Type", - "ApiId", - "ApiCachingBehavior", - "Ttl" - ], - "typeName": "AWS::AppSync::ApiCache" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiId" + ], + "description": "Resource Type definition for AWS::AppSync::ApiCache", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApiCachingBehavior": { + "type": "string" + }, + "ApiId": { + "type": "string" + }, + "AtRestEncryptionEnabled": { + "type": "boolean" + }, + "HealthMetricsConfig": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "TransitEncryptionEnabled": { + "type": "boolean" + }, + "Ttl": { + "type": "number" + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Type", + "ApiId", + "ApiCachingBehavior", + "Ttl" + ], + "typeName": "AWS::AppSync::ApiCache" +} diff --git a/src/schema/aws-appsync-apikey.json b/src/schema/aws-appsync-apikey.json index 94eb1031..71a6bbdb 100644 --- a/src/schema/aws-appsync-apikey.json +++ b/src/schema/aws-appsync-apikey.json @@ -1,39 +1,39 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApiId" - ], - "description": "Resource Type definition for AWS::AppSync::ApiKey", - "primaryIdentifier": [ - "/properties/ApiKeyId" - ], - "properties": { - "ApiId": { - "type": "string" - }, - "ApiKey": { - "type": "string" - }, - "ApiKeyId": { - "type": "string" - }, - "Arn": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Expires": { - "type": "number" - } - }, - "readOnlyProperties": [ - "/properties/ApiKeyId", - "/properties/ApiKey", - "/properties/Arn" - ], - "required": [ - "ApiId" - ], - "typeName": "AWS::AppSync::ApiKey" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiId" + ], + "description": "Resource Type definition for AWS::AppSync::ApiKey", + "primaryIdentifier": [ + "/properties/ApiKeyId" + ], + "properties": { + "ApiId": { + "type": "string" + }, + "ApiKey": { + "type": "string" + }, + "ApiKeyId": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Expires": { + "type": "number" + } + }, + "readOnlyProperties": [ + "/properties/ApiKeyId", + "/properties/ApiKey", + "/properties/Arn" + ], + "required": [ + "ApiId" + ], + "typeName": "AWS::AppSync::ApiKey" +} diff --git a/src/schema/aws-appsync-channelnamespace.json b/src/schema/aws-appsync-channelnamespace.json index 46efd304..c51009d3 100644 --- a/src/schema/aws-appsync-channelnamespace.json +++ b/src/schema/aws-appsync-channelnamespace.json @@ -1,146 +1,269 @@ { - "typeName" : "AWS::AppSync::ChannelNamespace", - "description" : "Resource schema for AppSync ChannelNamespace", - "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "definitions" : { - "Namespace" : { - "description" : "Namespace indentifier.", - "type" : "string", - "minLength" : 1, - "maxLength" : 50, - "pattern" : "([A-Za-z0-9](?:[A-Za-z0-9\\-]{0,48}[A-Za-z0-9])?)" - }, - "AuthMode" : { - "description" : "An auth mode.", - "type" : "object", - "additionalProperties" : false, - "properties" : { - "AuthType" : { - "$ref" : "#/definitions/AuthenticationType" + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiId", + "/properties/Name" + ], + "definitions": { + "AuthMode": { + "additionalProperties": false, + "description": "An auth mode.", + "properties": { + "AuthType": { + "$ref": "#/definitions/AuthenticationType" } - } - }, - "AuthModes" : { - "type" : "array", - "insertionOrder" : false, - "items" : { - "$ref" : "#/definitions/AuthMode" - } - }, - "AuthenticationType" : { - "description" : "Security configuration for your AppSync API.", - "type" : "string", - "enum" : [ "AMAZON_COGNITO_USER_POOLS", "AWS_IAM", "API_KEY", "OPENID_CONNECT", "AWS_LAMBDA" ] - }, - "Code" : { - "description" : "String of APPSYNC_JS code to be used by the handlers.", - "type" : "string", - "minLength" : 1, - "maxLength" : 32768 - }, - "ChannelNamespaceArn" : { - "type" : "string", - "description" : "The Amazon Resource Name (ARN) for the Channel Namespace." - }, - "Tag" : { - "description" : "An arbitrary set of tags (key-value pairs) for this AppSync API.", - "type" : "object", - "properties" : { - "Key" : { - "description" : "A string used to identify this tag. You can specify a maximum of 128 characters for a tag key.", - "type" : "string", - "minLength" : 1, - "maxLength" : 128, - "pattern" : "^(?!aws:)[ a-zA-Z+-=._:/]+$" + }, + "type": "object" + }, + "AuthModes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AuthMode" + }, + "type": "array" + }, + "AuthenticationType": { + "description": "Security configuration for your AppSync API.", + "enum": [ + "AMAZON_COGNITO_USER_POOLS", + "AWS_IAM", + "API_KEY", + "OPENID_CONNECT", + "AWS_LAMBDA" + ], + "type": "string" + }, + "ChannelNamespaceArn": { + "description": "The Amazon Resource Name (ARN) for the Channel Namespace.", + "type": "string" + }, + "Code": { + "description": "String of APPSYNC_JS code to be used by the handlers.", + "maxLength": 32768, + "minLength": 1, + "type": "string" + }, + "HandlerBehavior": { + "description": "Integration behavior for a handler configuration.", + "enum": [ + "CODE", + "DIRECT" + ], + "type": "string" + }, + "HandlerConfig": { + "additionalProperties": false, + "properties": { + "Behavior": { + "$ref": "#/definitions/HandlerBehavior" }, - "Value" : { - "description" : "A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value.", - "type" : "string", - "minLength" : 0, - "maxLength" : 256, - "pattern" : "^[\\s\\w+-=\\.:/@]*$" + "Integration": { + "$ref": "#/definitions/Integration" } }, - "required" : [ "Key", "Value" ], - "additionalProperties" : false - }, - "Tags" : { - "description" : "An arbitrary set of tags (key-value pairs) for this AppSync API.", - "type" : "array", - "uniqueItems" : true, - "insertionOrder" : false, - "items" : { - "$ref" : "#/definitions/Tag" - } - } - }, - "properties" : { - "ApiId" : { - "description" : "AppSync Api Id that this Channel Namespace belongs to.", - "type" : "string" + "required": [ + "Behavior", + "Integration" + ], + "type": "object" }, - "Name" : { - "$ref" : "#/definitions/Namespace" + "HandlerConfigs": { + "additionalProperties": false, + "properties": { + "OnPublish": { + "$ref": "#/definitions/HandlerConfig" + }, + "OnSubscribe": { + "$ref": "#/definitions/HandlerConfig" + } + }, + "type": "object" }, - "SubscribeAuthModes" : { - "description" : "List of AuthModes supported for Subscribe operations.", - "$ref" : "#/definitions/AuthModes" + "Integration": { + "additionalProperties": false, + "properties": { + "DataSourceName": { + "description": "Data source to invoke for this integration.", + "maxLength": 512, + "minLength": 1, + "pattern": "([_A-Za-z][_0-9A-Za-z]{0,511})?", + "type": "string" + }, + "LambdaConfig": { + "$ref": "#/definitions/LambdaConfig" + } + }, + "required": [ + "DataSourceName" + ], + "type": "object" }, - "PublishAuthModes" : { - "description" : "List of AuthModes supported for Publish operations.", - "$ref" : "#/definitions/AuthModes" + "InvokeType": { + "description": "Invocation type for direct lambda integrations.", + "enum": [ + "REQUEST_RESPONSE", + "EVENT" + ], + "type": "string" }, - "CodeHandlers" : { - "$ref" : "#/definitions/Code" + "LambdaConfig": { + "additionalProperties": false, + "properties": { + "InvokeType": { + "$ref": "#/definitions/InvokeType" + } + }, + "required": [ + "InvokeType" + ], + "type": "object" }, - "CodeS3Location" : { - "description" : "The Amazon S3 endpoint where the code is located.", - "type" : "string" + "Namespace": { + "description": "Namespace indentifier.", + "maxLength": 50, + "minLength": 1, + "pattern": "([A-Za-z0-9](?:[A-Za-z0-9\\-]{0,48}[A-Za-z0-9])?)", + "type": "string" }, - "ChannelNamespaceArn" : { - "$ref" : "#/definitions/ChannelNamespaceArn" + "Tag": { + "additionalProperties": false, + "description": "An arbitrary set of tags (key-value pairs) for this AppSync API.", + "properties": { + "Key": { + "description": "A string used to identify this tag. You can specify a maximum of 128 characters for a tag key.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[ a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[\\s\\w+-=\\.:/@]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" }, - "Tags" : { - "$ref" : "#/definitions/Tags" + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this AppSync API.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true } }, - "tagging" : { - "taggable" : true, - "tagOnCreate" : true, - "tagUpdatable" : true, - "cloudFormationSystemTags" : true, - "tagProperty" : "/properties/Tags", - "permissions" : [ "appsync:TagResource", "appsync:UntagResource" ] - }, - "additionalProperties" : false, - "required" : [ "ApiId", "Name" ], - "readOnlyProperties" : [ "/properties/ChannelNamespaceArn" ], - "createOnlyProperties" : [ "/properties/ApiId", "/properties/Name" ], - "primaryIdentifier" : [ "/properties/ChannelNamespaceArn" ], - "writeOnlyProperties" : [ "/properties/CodeS3Location" ], - "handlers" : { - "create" : { - "permissions" : [ "appsync:CreateChannelNamespace", "appsync:TagResource", "appsync:GetChannelNamespace", "s3:GetObject" ] - }, - "read" : { - "permissions" : [ "appsync:GetChannelNamespace", "appsync:ListTagsForResource" ] - }, - "update" : { - "permissions" : [ "appsync:UpdateChannelNamespace", "appsync:TagResource", "appsync:UntagResource", "appsync:GetChannelNamespace", "s3:GetObject" ] - }, - "delete" : { - "permissions" : [ "appsync:DeleteChannelNamespace", "appsync:UntagResource" ] - }, - "list" : { - "permissions" : [ "appsync:ListChannelNamespaces" ], - "handlerSchema" : { - "properties" : { - "ApiId" : { - "$ref" : "resource-schema.json#/properties/ApiId" + "description": "Resource schema for AppSync ChannelNamespace", + "handlers": { + "create": { + "permissions": [ + "appsync:CreateChannelNamespace", + "appsync:TagResource", + "appsync:GetChannelNamespace", + "s3:GetObject" + ] + }, + "delete": { + "permissions": [ + "appsync:DeleteChannelNamespace", + "appsync:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApiId": { + "$ref": "resource-schema.json#/properties/ApiId" } }, - "required" : [ "ApiId" ] - } + "required": [ + "ApiId" + ] + }, + "permissions": [ + "appsync:ListChannelNamespaces" + ] + }, + "read": { + "permissions": [ + "appsync:GetChannelNamespace", + "appsync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "appsync:UpdateChannelNamespace", + "appsync:TagResource", + "appsync:UntagResource", + "appsync:GetChannelNamespace", + "s3:GetObject" + ] + } + }, + "primaryIdentifier": [ + "/properties/ChannelNamespaceArn" + ], + "properties": { + "ApiId": { + "description": "AppSync Api Id that this Channel Namespace belongs to.", + "type": "string" + }, + "ChannelNamespaceArn": { + "$ref": "#/definitions/ChannelNamespaceArn" + }, + "CodeHandlers": { + "$ref": "#/definitions/Code" + }, + "CodeS3Location": { + "description": "The Amazon S3 endpoint where the code is located.", + "type": "string" + }, + "HandlerConfigs": { + "$ref": "#/definitions/HandlerConfigs" + }, + "Name": { + "$ref": "#/definitions/Namespace" + }, + "PublishAuthModes": { + "$ref": "#/definitions/AuthModes", + "description": "List of AuthModes supported for Publish operations." + }, + "SubscribeAuthModes": { + "$ref": "#/definitions/AuthModes", + "description": "List of AuthModes supported for Subscribe operations." + }, + "Tags": { + "$ref": "#/definitions/Tags" } - } -} \ No newline at end of file + }, + "readOnlyProperties": [ + "/properties/ChannelNamespaceArn" + ], + "required": [ + "ApiId", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "appsync:TagResource", + "appsync:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppSync::ChannelNamespace", + "writeOnlyProperties": [ + "/properties/CodeS3Location" + ] +} diff --git a/src/schema/aws-appsync-datasource.json b/src/schema/aws-appsync-datasource.json index e367bb3c..dff9f6ad 100644 --- a/src/schema/aws-appsync-datasource.json +++ b/src/schema/aws-appsync-datasource.json @@ -1,343 +1,343 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApiId", - "/properties/Name" - ], - "definitions": { - "AuthorizationConfig": { - "additionalProperties": false, - "properties": { - "AuthorizationType": { - "description": "The authorization type that the HTTP endpoint requires.", - "type": "string" - }, - "AwsIamConfig": { - "$ref": "#/definitions/AwsIamConfig", - "description": "The AWS Identity and Access Management settings." - } - }, - "required": [ - "AuthorizationType" - ], - "type": "object" - }, - "AwsIamConfig": { - "additionalProperties": false, - "properties": { - "SigningRegion": { - "description": "The signing Region for AWS Identity and Access Management authorization.", - "type": "string" - }, - "SigningServiceName": { - "description": "The signing service name for AWS Identity and Access Management authorization.", - "type": "string" - } - }, - "type": "object" - }, - "DeltaSyncConfig": { - "additionalProperties": false, - "properties": { - "BaseTableTTL": { - "description": "The number of minutes that an Item is stored in the data source.", - "type": "string" - }, - "DeltaSyncTableName": { - "description": "The Delta Sync table name.", - "type": "string" - }, - "DeltaSyncTableTTL": { - "description": "The number of minutes that a Delta Sync log entry is stored in the Delta Sync table.", - "type": "string" - } - }, - "required": [ - "BaseTableTTL", - "DeltaSyncTableTTL", - "DeltaSyncTableName" - ], - "type": "object" - }, - "DynamoDBConfig": { - "additionalProperties": false, - "properties": { - "AwsRegion": { - "description": "The AWS Region.", - "type": "string" - }, - "DeltaSyncConfig": { - "$ref": "#/definitions/DeltaSyncConfig", - "description": "The DeltaSyncConfig for a versioned datasource." - }, - "TableName": { - "description": "The table name.", - "type": "string" - }, - "UseCallerCredentials": { - "description": "Set to TRUE to use AWS Identity and Access Management with this data source.", - "type": "boolean" - }, - "Versioned": { - "description": "Set to TRUE to use Conflict Detection and Resolution with this data source.", - "type": "boolean" - } - }, - "required": [ - "TableName", - "AwsRegion" - ], - "type": "object" - }, - "ElasticsearchConfig": { - "additionalProperties": false, - "properties": { - "AwsRegion": { - "description": "The AWS Region.", - "type": "string" - }, - "Endpoint": { - "description": "The endpoint.", - "type": "string" - } - }, - "required": [ - "AwsRegion", - "Endpoint" - ], - "type": "object" - }, - "EventBridgeConfig": { - "additionalProperties": false, - "properties": { - "EventBusArn": { - "description": "ARN for the EventBridge bus.", - "type": "string" - } - }, - "required": [ - "EventBusArn" - ], - "type": "object" - }, - "HttpConfig": { - "additionalProperties": false, - "properties": { - "AuthorizationConfig": { - "$ref": "#/definitions/AuthorizationConfig", - "description": "The authorization configuration." - }, - "Endpoint": { - "description": "The endpoint.", - "type": "string" - } - }, - "required": [ - "Endpoint" - ], - "type": "object" - }, - "LambdaConfig": { - "additionalProperties": false, - "properties": { - "LambdaFunctionArn": { - "description": "The ARN for the Lambda function.", - "type": "string" - } - }, - "required": [ - "LambdaFunctionArn" - ], - "type": "object" - }, - "OpenSearchServiceConfig": { - "additionalProperties": false, - "properties": { - "AwsRegion": { - "description": "The AWS Region.", - "type": "string" - }, - "Endpoint": { - "description": "The endpoint.", - "type": "string" - } - }, - "required": [ - "AwsRegion", - "Endpoint" - ], - "type": "object" - }, - "RdsHttpEndpointConfig": { - "additionalProperties": false, - "properties": { - "AwsRegion": { - "description": "AWS Region for RDS HTTP endpoint.", - "type": "string" - }, - "AwsSecretStoreArn": { - "description": "The ARN for database credentials stored in AWS Secrets Manager.", - "type": "string" - }, - "DatabaseName": { - "description": "Logical database name.", - "type": "string" - }, - "DbClusterIdentifier": { - "description": "Amazon RDS cluster Amazon Resource Name (ARN).", - "type": "string" - }, - "Schema": { - "description": "Logical schema name.", - "type": "string" - } - }, - "required": [ - "AwsRegion", - "DbClusterIdentifier", - "AwsSecretStoreArn" - ], - "type": "object" - }, - "RelationalDatabaseConfig": { - "additionalProperties": false, - "properties": { - "RdsHttpEndpointConfig": { - "$ref": "#/definitions/RdsHttpEndpointConfig", - "description": "Information about the Amazon RDS resource." - }, - "RelationalDatabaseSourceType": { - "description": "The type of relational data source.", - "type": "string" - } - }, - "required": [ - "RelationalDatabaseSourceType" - ], - "type": "object" - } - }, - "deprecatedProperties": [ - "/properties/ElasticsearchConfig" - ], - "description": "Resource Type definition for AWS::AppSync::DataSource", - "handlers": { - "create": { - "permissions": [ - "appsync:CreateDataSource", - "appsync:GetDataSource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "appsync:DeleteDataSource", - "appsync:GetDataSource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApiId": { - "$ref": "resource-schema.json#/properties/ApiId" - } - }, - "required": [ - "ApiId" - ] - }, - "permissions": [ - "appsync:ListDataSources" - ] - }, - "read": { - "permissions": [ - "appsync:GetDataSource" - ] - }, - "update": { - "permissions": [ - "appsync:UpdateDataSource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/DataSourceArn" - ], - "properties": { - "ApiId": { - "description": "Unique AWS AppSync GraphQL API identifier where this data source will be created.", - "type": "string" - }, - "DataSourceArn": { - "description": "The Amazon Resource Name (ARN) of the API key, such as arn:aws:appsync:us-east-1:123456789012:apis/graphqlapiid/datasources/datasourcename.", - "type": "string" - }, - "Description": { - "description": "The description of the data source.", - "type": "string" - }, - "DynamoDBConfig": { - "$ref": "#/definitions/DynamoDBConfig", - "description": "AWS Region and TableName for an Amazon DynamoDB table in your account." - }, - "ElasticsearchConfig": { - "$ref": "#/definitions/ElasticsearchConfig", - "description": "AWS Region and Endpoints for an Amazon OpenSearch Service domain in your account.\nAs of September 2021, Amazon Elasticsearch Service is Amazon OpenSearch Service. This property is deprecated. For new data sources, use OpenSearchServiceConfig to specify an OpenSearch Service data source." - }, - "EventBridgeConfig": { - "$ref": "#/definitions/EventBridgeConfig", - "description": "ARN for the EventBridge bus." - }, - "HttpConfig": { - "$ref": "#/definitions/HttpConfig", - "description": "Endpoints for an HTTP data source." - }, - "LambdaConfig": { - "$ref": "#/definitions/LambdaConfig", - "description": "An ARN of a Lambda function in valid ARN format. This can be the ARN of a Lambda function that exists in the current account or in another account." - }, - "MetricsConfig": { - "description": "", - "enum": [ - "DISABLED", - "ENABLED" - ], - "type": "string" - }, - "Name": { - "description": "Friendly name for you to identify your AppSync data source after creation.", - "type": "string" - }, - "OpenSearchServiceConfig": { - "$ref": "#/definitions/OpenSearchServiceConfig", - "description": "AWS Region and Endpoints for an Amazon OpenSearch Service domain in your account." - }, - "RelationalDatabaseConfig": { - "$ref": "#/definitions/RelationalDatabaseConfig", - "description": "Relational Database configuration of the relational database data source." - }, - "ServiceRoleArn": { - "description": "The AWS Identity and Access Management service role ARN for the data source. The system assumes this role when accessing the data source.", - "type": "string" - }, - "Type": { - "description": "The type of the data source.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/DataSourceArn" - ], - "required": [ - "Type", - "ApiId", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appsync", - "tagging": { - "taggable": false - }, - "typeName": "AWS::AppSync::DataSource" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiId", + "/properties/Name" + ], + "definitions": { + "AuthorizationConfig": { + "additionalProperties": false, + "properties": { + "AuthorizationType": { + "description": "The authorization type that the HTTP endpoint requires.", + "type": "string" + }, + "AwsIamConfig": { + "$ref": "#/definitions/AwsIamConfig", + "description": "The AWS Identity and Access Management settings." + } + }, + "required": [ + "AuthorizationType" + ], + "type": "object" + }, + "AwsIamConfig": { + "additionalProperties": false, + "properties": { + "SigningRegion": { + "description": "The signing Region for AWS Identity and Access Management authorization.", + "type": "string" + }, + "SigningServiceName": { + "description": "The signing service name for AWS Identity and Access Management authorization.", + "type": "string" + } + }, + "type": "object" + }, + "DeltaSyncConfig": { + "additionalProperties": false, + "properties": { + "BaseTableTTL": { + "description": "The number of minutes that an Item is stored in the data source.", + "type": "string" + }, + "DeltaSyncTableName": { + "description": "The Delta Sync table name.", + "type": "string" + }, + "DeltaSyncTableTTL": { + "description": "The number of minutes that a Delta Sync log entry is stored in the Delta Sync table.", + "type": "string" + } + }, + "required": [ + "BaseTableTTL", + "DeltaSyncTableTTL", + "DeltaSyncTableName" + ], + "type": "object" + }, + "DynamoDBConfig": { + "additionalProperties": false, + "properties": { + "AwsRegion": { + "description": "The AWS Region.", + "type": "string" + }, + "DeltaSyncConfig": { + "$ref": "#/definitions/DeltaSyncConfig", + "description": "The DeltaSyncConfig for a versioned datasource." + }, + "TableName": { + "description": "The table name.", + "type": "string" + }, + "UseCallerCredentials": { + "description": "Set to TRUE to use AWS Identity and Access Management with this data source.", + "type": "boolean" + }, + "Versioned": { + "description": "Set to TRUE to use Conflict Detection and Resolution with this data source.", + "type": "boolean" + } + }, + "required": [ + "TableName", + "AwsRegion" + ], + "type": "object" + }, + "ElasticsearchConfig": { + "additionalProperties": false, + "properties": { + "AwsRegion": { + "description": "The AWS Region.", + "type": "string" + }, + "Endpoint": { + "description": "The endpoint.", + "type": "string" + } + }, + "required": [ + "AwsRegion", + "Endpoint" + ], + "type": "object" + }, + "EventBridgeConfig": { + "additionalProperties": false, + "properties": { + "EventBusArn": { + "description": "ARN for the EventBridge bus.", + "type": "string" + } + }, + "required": [ + "EventBusArn" + ], + "type": "object" + }, + "HttpConfig": { + "additionalProperties": false, + "properties": { + "AuthorizationConfig": { + "$ref": "#/definitions/AuthorizationConfig", + "description": "The authorization configuration." + }, + "Endpoint": { + "description": "The endpoint.", + "type": "string" + } + }, + "required": [ + "Endpoint" + ], + "type": "object" + }, + "LambdaConfig": { + "additionalProperties": false, + "properties": { + "LambdaFunctionArn": { + "description": "The ARN for the Lambda function.", + "type": "string" + } + }, + "required": [ + "LambdaFunctionArn" + ], + "type": "object" + }, + "OpenSearchServiceConfig": { + "additionalProperties": false, + "properties": { + "AwsRegion": { + "description": "The AWS Region.", + "type": "string" + }, + "Endpoint": { + "description": "The endpoint.", + "type": "string" + } + }, + "required": [ + "AwsRegion", + "Endpoint" + ], + "type": "object" + }, + "RdsHttpEndpointConfig": { + "additionalProperties": false, + "properties": { + "AwsRegion": { + "description": "AWS Region for RDS HTTP endpoint.", + "type": "string" + }, + "AwsSecretStoreArn": { + "description": "The ARN for database credentials stored in AWS Secrets Manager.", + "type": "string" + }, + "DatabaseName": { + "description": "Logical database name.", + "type": "string" + }, + "DbClusterIdentifier": { + "description": "Amazon RDS cluster Amazon Resource Name (ARN).", + "type": "string" + }, + "Schema": { + "description": "Logical schema name.", + "type": "string" + } + }, + "required": [ + "AwsRegion", + "DbClusterIdentifier", + "AwsSecretStoreArn" + ], + "type": "object" + }, + "RelationalDatabaseConfig": { + "additionalProperties": false, + "properties": { + "RdsHttpEndpointConfig": { + "$ref": "#/definitions/RdsHttpEndpointConfig", + "description": "Information about the Amazon RDS resource." + }, + "RelationalDatabaseSourceType": { + "description": "The type of relational data source.", + "type": "string" + } + }, + "required": [ + "RelationalDatabaseSourceType" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/ElasticsearchConfig" + ], + "description": "Resource Type definition for AWS::AppSync::DataSource", + "handlers": { + "create": { + "permissions": [ + "appsync:CreateDataSource", + "appsync:GetDataSource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "appsync:DeleteDataSource", + "appsync:GetDataSource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApiId": { + "$ref": "resource-schema.json#/properties/ApiId" + } + }, + "required": [ + "ApiId" + ] + }, + "permissions": [ + "appsync:ListDataSources" + ] + }, + "read": { + "permissions": [ + "appsync:GetDataSource" + ] + }, + "update": { + "permissions": [ + "appsync:UpdateDataSource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DataSourceArn" + ], + "properties": { + "ApiId": { + "description": "Unique AWS AppSync GraphQL API identifier where this data source will be created.", + "type": "string" + }, + "DataSourceArn": { + "description": "The Amazon Resource Name (ARN) of the API key, such as arn:aws:appsync:us-east-1:123456789012:apis/graphqlapiid/datasources/datasourcename.", + "type": "string" + }, + "Description": { + "description": "The description of the data source.", + "type": "string" + }, + "DynamoDBConfig": { + "$ref": "#/definitions/DynamoDBConfig", + "description": "AWS Region and TableName for an Amazon DynamoDB table in your account." + }, + "ElasticsearchConfig": { + "$ref": "#/definitions/ElasticsearchConfig", + "description": "AWS Region and Endpoints for an Amazon OpenSearch Service domain in your account.\nAs of September 2021, Amazon Elasticsearch Service is Amazon OpenSearch Service. This property is deprecated. For new data sources, use OpenSearchServiceConfig to specify an OpenSearch Service data source." + }, + "EventBridgeConfig": { + "$ref": "#/definitions/EventBridgeConfig", + "description": "ARN for the EventBridge bus." + }, + "HttpConfig": { + "$ref": "#/definitions/HttpConfig", + "description": "Endpoints for an HTTP data source." + }, + "LambdaConfig": { + "$ref": "#/definitions/LambdaConfig", + "description": "An ARN of a Lambda function in valid ARN format. This can be the ARN of a Lambda function that exists in the current account or in another account." + }, + "MetricsConfig": { + "description": "", + "enum": [ + "DISABLED", + "ENABLED" + ], + "type": "string" + }, + "Name": { + "description": "Friendly name for you to identify your AppSync data source after creation.", + "type": "string" + }, + "OpenSearchServiceConfig": { + "$ref": "#/definitions/OpenSearchServiceConfig", + "description": "AWS Region and Endpoints for an Amazon OpenSearch Service domain in your account." + }, + "RelationalDatabaseConfig": { + "$ref": "#/definitions/RelationalDatabaseConfig", + "description": "Relational Database configuration of the relational database data source." + }, + "ServiceRoleArn": { + "description": "The AWS Identity and Access Management service role ARN for the data source. The system assumes this role when accessing the data source.", + "type": "string" + }, + "Type": { + "description": "The type of the data source.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DataSourceArn" + ], + "required": [ + "Type", + "ApiId", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appsync", + "tagging": { + "taggable": false + }, + "typeName": "AWS::AppSync::DataSource" +} diff --git a/src/schema/aws-appsync-domainname.json b/src/schema/aws-appsync-domainname.json index 37e88dd8..56968cae 100644 --- a/src/schema/aws-appsync-domainname.json +++ b/src/schema/aws-appsync-domainname.json @@ -1,82 +1,136 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainName", - "/properties/CertificateArn" - ], - "description": "Resource Type definition for AWS::AppSync::DomainName", - "handlers": { - "create": { - "permissions": [ - "appsync:CreateDomainName", - "appsync:GetDomainName", - "acm:DescribeCertificate", - "cloudfront:UpdateDistribution" - ] - }, - "delete": { - "permissions": [ - "appsync:GetDomainName", - "appsync:DeleteDomainName" - ] - }, - "list": { - "permissions": [ - "appsync:ListDomainNames" - ] - }, - "read": { - "permissions": [ - "appsync:GetDomainName" - ] - }, - "update": { - "permissions": [ - "appsync:UpdateDomainName" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainName" - ], - "properties": { - "AppSyncDomainName": { - "type": "string" - }, - "CertificateArn": { - "maxLength": 2048, - "minLength": 3, - "pattern": "^arn:[a-z-]*:acm:[a-z0-9-]*:\\d{12}:certificate/[0-9A-Za-z_/-]*$", - "type": "string" - }, - "Description": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "DomainName": { - "maxLength": 253, - "minLength": 1, - "pattern": "^(\\*[a-z\\d-]*\\.)?([a-z\\d-]+\\.)+[a-z\\d-]+$", - "type": "string" - }, - "HostedZoneId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AppSyncDomainName", - "/properties/HostedZoneId" - ], - "required": [ - "DomainName", - "CertificateArn" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::AppSync::DomainName" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainName", + "/properties/CertificateArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "An arbitrary set of tags (key-value pairs) for this Domain Name.", + "properties": { + "Key": { + "description": "A string used to identify this tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[ a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[\\s\\w+-=\\.:/@]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this Domain Name.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "description": "Resource Type definition for AWS::AppSync::DomainName", + "handlers": { + "create": { + "permissions": [ + "appsync:CreateDomainName", + "appsync:GetDomainName", + "acm:DescribeCertificate", + "cloudfront:UpdateDistribution", + "appsync:TagResource" + ] + }, + "delete": { + "permissions": [ + "appsync:GetDomainName", + "appsync:DeleteDomainName", + "appsync:UntagResource" + ] + }, + "list": { + "permissions": [ + "appsync:ListDomainNames" + ] + }, + "read": { + "permissions": [ + "appsync:GetDomainName" + ] + }, + "update": { + "permissions": [ + "appsync:UpdateDomainName", + "appsync:TagResource", + "appsync:UntagResource", + "appsync:GetDomainName" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainName" + ], + "properties": { + "AppSyncDomainName": { + "type": "string" + }, + "CertificateArn": { + "maxLength": 2048, + "minLength": 3, + "pattern": "^arn:[a-z-]*:acm:[a-z0-9-]*:\\d{12}:certificate/[0-9A-Za-z_/-]*$", + "type": "string" + }, + "Description": { + "maxLength": 255, + "minLength": 0, + "type": "string" + }, + "DomainName": { + "maxLength": 253, + "minLength": 1, + "pattern": "^(\\*[a-z\\d-]*\\.)?([a-z\\d-]+\\.)+[a-z\\d-]+$", + "type": "string" + }, + "DomainNameArn": { + "description": "The Amazon Resource Name (ARN) for the Domain Name.", + "type": "string" + }, + "HostedZoneId": { + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/AppSyncDomainName", + "/properties/HostedZoneId", + "/properties/DomainNameArn" + ], + "required": [ + "DomainName", + "CertificateArn" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "appsync:TagResource", + "appsync:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppSync::DomainName" +} diff --git a/src/schema/aws-appsync-domainnameapiassociation.json b/src/schema/aws-appsync-domainnameapiassociation.json index 1c3979ab..14d225ae 100644 --- a/src/schema/aws-appsync-domainnameapiassociation.json +++ b/src/schema/aws-appsync-domainnameapiassociation.json @@ -1,63 +1,63 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainName" - ], - "description": "Resource Type definition for AWS::AppSync::DomainNameApiAssociation", - "handlers": { - "create": { - "permissions": [ - "appsync:AssociateApi", - "appsync:GetApiAssociation" - ] - }, - "delete": { - "permissions": [ - "appsync:DisassociateApi", - "appsync:GetApiAssociation" - ] - }, - "read": { - "permissions": [ - "appsync:GetApiAssociation" - ] - }, - "update": { - "permissions": [ - "appsync:AssociateApi", - "appsync:GetApiAssociation" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApiAssociationIdentifier" - ], - "properties": { - "ApiAssociationIdentifier": { - "type": "string" - }, - "ApiId": { - "type": "string" - }, - "DomainName": { - "maxLength": 253, - "minLength": 1, - "pattern": "^(\\*[a-z\\d-]*\\.)?([a-z\\d-]+\\.)+[a-z\\d-]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ApiAssociationIdentifier" - ], - "required": [ - "DomainName", - "ApiId" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::AppSync::DomainNameApiAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainName" + ], + "description": "Resource Type definition for AWS::AppSync::DomainNameApiAssociation", + "handlers": { + "create": { + "permissions": [ + "appsync:AssociateApi", + "appsync:GetApiAssociation" + ] + }, + "delete": { + "permissions": [ + "appsync:DisassociateApi", + "appsync:GetApiAssociation" + ] + }, + "read": { + "permissions": [ + "appsync:GetApiAssociation" + ] + }, + "update": { + "permissions": [ + "appsync:AssociateApi", + "appsync:GetApiAssociation" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApiAssociationIdentifier" + ], + "properties": { + "ApiAssociationIdentifier": { + "type": "string" + }, + "ApiId": { + "type": "string" + }, + "DomainName": { + "maxLength": 253, + "minLength": 1, + "pattern": "^(\\*[a-z\\d-]*\\.)?([a-z\\d-]+\\.)+[a-z\\d-]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ApiAssociationIdentifier" + ], + "required": [ + "DomainName", + "ApiId" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::AppSync::DomainNameApiAssociation" +} diff --git a/src/schema/aws-appsync-functionconfiguration.json b/src/schema/aws-appsync-functionconfiguration.json index 36ec501a..75143a4e 100644 --- a/src/schema/aws-appsync-functionconfiguration.json +++ b/src/schema/aws-appsync-functionconfiguration.json @@ -1,190 +1,190 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApiId" - ], - "definitions": { - "AppSyncRuntime": { - "additionalProperties": false, - "description": "Describes a runtime used by an AWS AppSync pipeline resolver or AWS AppSync function. Specifies the name and version of the runtime to use. Note that if a runtime is specified, code must also be specified.", - "properties": { - "Name": { - "description": "The name of the runtime to use. Currently, the only allowed value is APPSYNC_JS.", - "type": "string" - }, - "RuntimeVersion": { - "description": "The version of the runtime to use. Currently, the only allowed version is 1.0.0.", - "type": "string" - } - }, - "required": [ - "Name", - "RuntimeVersion" - ], - "type": "object" - }, - "LambdaConflictHandlerConfig": { - "additionalProperties": false, - "description": "The LambdaConflictHandlerConfig when configuring LAMBDA as the Conflict Handler.", - "properties": { - "LambdaConflictHandlerArn": { - "description": "The Amazon Resource Name (ARN) for the Lambda function to use as the Conflict Handler.", - "type": "string" - } - }, - "type": "object" - }, - "SyncConfig": { - "additionalProperties": false, - "description": "Describes a Sync configuration for a resolver. Specifies which Conflict Detection strategy and Resolution strategy to use when the resolver is invoked.", - "properties": { - "ConflictDetection": { - "description": "The Conflict Detection strategy to use.", - "type": "string" - }, - "ConflictHandler": { - "description": "The Conflict Resolution strategy to perform in the event of a conflict.", - "type": "string" - }, - "LambdaConflictHandlerConfig": { - "$ref": "#/definitions/LambdaConflictHandlerConfig" - } - }, - "required": [ - "ConflictDetection" - ], - "type": "object" - } - }, - "description": "An example resource schema demonstrating some basic constructs and validation rules.", - "handlers": { - "create": { - "permissions": [ - "s3:GetObject", - "appsync:CreateFunction" - ] - }, - "delete": { - "permissions": [ - "appsync:DeleteFunction" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApiId": { - "$ref": "resource-schema.json#/properties/ApiId" - } - }, - "required": [ - "ApiId" - ] - }, - "permissions": [ - "appsync:ListFunctions" - ] - }, - "read": { - "permissions": [ - "appsync:GetFunction" - ] - }, - "update": { - "permissions": [ - "s3:GetObject", - "appsync:UpdateFunction" - ] - } - }, - "primaryIdentifier": [ - "/properties/FunctionArn" - ], - "properties": { - "ApiId": { - "description": "The AWS AppSync GraphQL API that you want to attach using this function.", - "type": "string" - }, - "Code": { - "description": "The resolver code that contains the request and response functions. When code is used, the runtime is required. The runtime value must be APPSYNC_JS.", - "type": "string" - }, - "CodeS3Location": { - "description": "The Amazon S3 endpoint (where the code is located??).", - "type": "string" - }, - "DataSourceName": { - "description": "The name of data source this function will attach.", - "type": "string" - }, - "Description": { - "description": "The function description.", - "type": "string" - }, - "FunctionArn": { - "description": "The ARN for the function generated by the service", - "type": "string" - }, - "FunctionId": { - "description": "The unique identifier for the function generated by the service", - "type": "string" - }, - "FunctionVersion": { - "description": "The version of the request mapping template. Currently, only the 2018-05-29 version of the template is supported.", - "type": "string" - }, - "MaxBatchSize": { - "description": "The maximum number of resolver request inputs that will be sent to a single AWS Lambda function in a BatchInvoke operation.", - "type": "integer" - }, - "Name": { - "description": "The name of the function.", - "type": "string" - }, - "RequestMappingTemplate": { - "description": "The Function request mapping template. Functions support only the 2018-05-29 version of the request mapping template.", - "type": "string" - }, - "RequestMappingTemplateS3Location": { - "description": "Describes a Sync configuration for a resolver. Contains information on which Conflict Detection, as well as Resolution strategy, should be performed when the resolver is invoked.", - "type": "string" - }, - "ResponseMappingTemplate": { - "description": "The Function response mapping template.", - "type": "string" - }, - "ResponseMappingTemplateS3Location": { - "description": "The location of a response mapping template in an Amazon S3 bucket. Use this if you want to provision with a template file in Amazon S3 rather than embedding it in your CloudFormation template.", - "type": "string" - }, - "Runtime": { - "$ref": "#/definitions/AppSyncRuntime", - "description": "Describes a runtime used by an AWS AppSync pipeline resolver or AWS AppSync function. Specifies the name and version of the runtime to use. Note that if a runtime is specified, code must also be specified." - }, - "SyncConfig": { - "$ref": "#/definitions/SyncConfig", - "description": "Describes a Sync configuration for a resolver. Specifies which Conflict Detection strategy and Resolution strategy to use when the resolver is invoked." - } - }, - "readOnlyProperties": [ - "/properties/FunctionArn", - "/properties/FunctionId" - ], - "required": [ - "ApiId", - "DataSourceName", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::AppSync::FunctionConfiguration", - "writeOnlyProperties": [ - "/properties/CodeS3Location", - "/properties/ResponseMappingTemplateS3Location", - "/properties/RequestMappingTemplateS3Location" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiId" + ], + "definitions": { + "AppSyncRuntime": { + "additionalProperties": false, + "description": "Describes a runtime used by an AWS AppSync pipeline resolver or AWS AppSync function. Specifies the name and version of the runtime to use. Note that if a runtime is specified, code must also be specified.", + "properties": { + "Name": { + "description": "The name of the runtime to use. Currently, the only allowed value is APPSYNC_JS.", + "type": "string" + }, + "RuntimeVersion": { + "description": "The version of the runtime to use. Currently, the only allowed version is 1.0.0.", + "type": "string" + } + }, + "required": [ + "Name", + "RuntimeVersion" + ], + "type": "object" + }, + "LambdaConflictHandlerConfig": { + "additionalProperties": false, + "description": "The LambdaConflictHandlerConfig when configuring LAMBDA as the Conflict Handler.", + "properties": { + "LambdaConflictHandlerArn": { + "description": "The Amazon Resource Name (ARN) for the Lambda function to use as the Conflict Handler.", + "type": "string" + } + }, + "type": "object" + }, + "SyncConfig": { + "additionalProperties": false, + "description": "Describes a Sync configuration for a resolver. Specifies which Conflict Detection strategy and Resolution strategy to use when the resolver is invoked.", + "properties": { + "ConflictDetection": { + "description": "The Conflict Detection strategy to use.", + "type": "string" + }, + "ConflictHandler": { + "description": "The Conflict Resolution strategy to perform in the event of a conflict.", + "type": "string" + }, + "LambdaConflictHandlerConfig": { + "$ref": "#/definitions/LambdaConflictHandlerConfig" + } + }, + "required": [ + "ConflictDetection" + ], + "type": "object" + } + }, + "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "handlers": { + "create": { + "permissions": [ + "s3:GetObject", + "appsync:CreateFunction" + ] + }, + "delete": { + "permissions": [ + "appsync:DeleteFunction" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApiId": { + "$ref": "resource-schema.json#/properties/ApiId" + } + }, + "required": [ + "ApiId" + ] + }, + "permissions": [ + "appsync:ListFunctions" + ] + }, + "read": { + "permissions": [ + "appsync:GetFunction" + ] + }, + "update": { + "permissions": [ + "s3:GetObject", + "appsync:UpdateFunction" + ] + } + }, + "primaryIdentifier": [ + "/properties/FunctionArn" + ], + "properties": { + "ApiId": { + "description": "The AWS AppSync GraphQL API that you want to attach using this function.", + "type": "string" + }, + "Code": { + "description": "The resolver code that contains the request and response functions. When code is used, the runtime is required. The runtime value must be APPSYNC_JS.", + "type": "string" + }, + "CodeS3Location": { + "description": "The Amazon S3 endpoint (where the code is located??).", + "type": "string" + }, + "DataSourceName": { + "description": "The name of data source this function will attach.", + "type": "string" + }, + "Description": { + "description": "The function description.", + "type": "string" + }, + "FunctionArn": { + "description": "The ARN for the function generated by the service", + "type": "string" + }, + "FunctionId": { + "description": "The unique identifier for the function generated by the service", + "type": "string" + }, + "FunctionVersion": { + "description": "The version of the request mapping template. Currently, only the 2018-05-29 version of the template is supported.", + "type": "string" + }, + "MaxBatchSize": { + "description": "The maximum number of resolver request inputs that will be sent to a single AWS Lambda function in a BatchInvoke operation.", + "type": "integer" + }, + "Name": { + "description": "The name of the function.", + "type": "string" + }, + "RequestMappingTemplate": { + "description": "The Function request mapping template. Functions support only the 2018-05-29 version of the request mapping template.", + "type": "string" + }, + "RequestMappingTemplateS3Location": { + "description": "Describes a Sync configuration for a resolver. Contains information on which Conflict Detection, as well as Resolution strategy, should be performed when the resolver is invoked.", + "type": "string" + }, + "ResponseMappingTemplate": { + "description": "The Function response mapping template.", + "type": "string" + }, + "ResponseMappingTemplateS3Location": { + "description": "The location of a response mapping template in an Amazon S3 bucket. Use this if you want to provision with a template file in Amazon S3 rather than embedding it in your CloudFormation template.", + "type": "string" + }, + "Runtime": { + "$ref": "#/definitions/AppSyncRuntime", + "description": "Describes a runtime used by an AWS AppSync pipeline resolver or AWS AppSync function. Specifies the name and version of the runtime to use. Note that if a runtime is specified, code must also be specified." + }, + "SyncConfig": { + "$ref": "#/definitions/SyncConfig", + "description": "Describes a Sync configuration for a resolver. Specifies which Conflict Detection strategy and Resolution strategy to use when the resolver is invoked." + } + }, + "readOnlyProperties": [ + "/properties/FunctionArn", + "/properties/FunctionId" + ], + "required": [ + "ApiId", + "DataSourceName", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::AppSync::FunctionConfiguration", + "writeOnlyProperties": [ + "/properties/CodeS3Location", + "/properties/ResponseMappingTemplateS3Location", + "/properties/RequestMappingTemplateS3Location" + ] +} diff --git a/src/schema/aws-appsync-graphqlapi.json b/src/schema/aws-appsync-graphqlapi.json index e21e0ef0..2c21b709 100644 --- a/src/schema/aws-appsync-graphqlapi.json +++ b/src/schema/aws-appsync-graphqlapi.json @@ -1,343 +1,343 @@ -{ - "additionalProperties": false, - "definitions": { - "AdditionalAuthenticationProvider": { - "additionalProperties": false, - "properties": { - "AuthenticationType": { - "description": "The authentication type for API key, AWS Identity and Access Management, OIDC, Amazon Cognito user pools, or AWS Lambda.", - "type": "string" - }, - "LambdaAuthorizerConfig": { - "$ref": "#/definitions/LambdaAuthorizerConfig" - }, - "OpenIDConnectConfig": { - "$ref": "#/definitions/OpenIDConnectConfig" - }, - "UserPoolConfig": { - "$ref": "#/definitions/CognitoUserPoolConfig" - } - }, - "required": [ - "AuthenticationType" - ], - "type": "object" - }, - "CognitoUserPoolConfig": { - "additionalProperties": false, - "properties": { - "AppIdClientRegex": { - "description": "A regular expression for validating the incoming Amazon Cognito user pool app client ID. ", - "type": "string" - }, - "AwsRegion": { - "description": "The AWS Region in which the user pool was created.", - "type": "string" - }, - "UserPoolId": { - "description": "The user pool ID", - "type": "string" - } - }, - "type": "object" - }, - "EnhancedMetricsConfig": { - "additionalProperties": false, - "properties": { - "DataSourceLevelMetricsBehavior": { - "description": "Controls how data source metrics will be emitted to CloudWatch. Data source metrics include:\n\n", - "type": "string" - }, - "OperationLevelMetricsConfig": { - "description": "Controls how operation metrics will be emitted to CloudWatch. Operation metrics include:\n\n", - "type": "string" - }, - "ResolverLevelMetricsBehavior": { - "description": "Controls how resolver metrics will be emitted to CloudWatch. Resolver metrics include:\n\n", - "type": "string" - } - }, - "required": [ - "OperationLevelMetricsConfig", - "ResolverLevelMetricsBehavior", - "DataSourceLevelMetricsBehavior" - ], - "type": "object" - }, - "LambdaAuthorizerConfig": { - "additionalProperties": false, - "properties": { - "AuthorizerResultTtlInSeconds": { - "description": "The number of seconds a response should be cached for.", - "type": "integer" - }, - "AuthorizerUri": { - "description": "The ARN of the Lambda function to be called for authorization.", - "type": "string" - }, - "IdentityValidationExpression": { - "description": "A regular expression for validation of tokens before the Lambda function is called.", - "type": "string" - } - }, - "type": "object" - }, - "LogConfig": { - "additionalProperties": false, - "properties": { - "CloudWatchLogsRoleArn": { - "description": "The service role that AWS AppSync will assume to publish to Amazon CloudWatch Logs in your account.", - "type": "string" - }, - "ExcludeVerboseContent": { - "description": "Set to TRUE to exclude sections that contain information such as headers, context, and evaluated mapping templates, regardless of logging level.", - "type": "boolean" - }, - "FieldLogLevel": { - "description": "The field logging level. Values can be NONE, ERROR, INFO, DEBUG, or ALL.", - "type": "string" - } - }, - "type": "object" - }, - "OpenIDConnectConfig": { - "additionalProperties": false, - "properties": { - "AuthTTL": { - "description": "The number of milliseconds that a token is valid after being authenticated.", - "type": "number" - }, - "ClientId": { - "description": "The client identifier of the Relying party at the OpenID identity provider.", - "type": "string" - }, - "IatTTL": { - "description": "The number of milliseconds that a token is valid after it's issued to a user.\n\n", - "type": "number" - }, - "Issuer": { - "description": "The issuer for the OIDC configuration. ", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "UserPoolConfig": { - "additionalProperties": false, - "properties": { - "AppIdClientRegex": { - "description": "A regular expression for validating the incoming Amazon Cognito user pool app client ID.", - "type": "string" - }, - "AwsRegion": { - "description": "The AWS Region in which the user pool was created.", - "type": "string" - }, - "DefaultAction": { - "description": "The action that you want your GraphQL API to take when a request that uses Amazon Cognito user pool authentication doesn't match the Amazon Cognito user pool configuration.", - "type": "string" - }, - "UserPoolId": { - "description": "The user pool ID.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AppSync::GraphQLApi", - "handlers": { - "create": { - "permissions": [ - "appsync:CreateGraphqlApi", - "appsync:TagResource" - ] - }, - "delete": { - "permissions": [ - "appsync:DeleteGraphqlApi" - ] - }, - "list": { - "permissions": [ - "appsync:ListGraphqlApis" - ] - }, - "read": { - "permissions": [ - "appsync:GetGraphqlApi", - "appsync:GetGraphqlApiEnvironmentVariables", - "appsync:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "appsync:GetGraphqlApi", - "appsync:UpdateGraphqlApi", - "appsync:TagResource", - "appsync:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApiId" - ], - "properties": { - "AdditionalAuthenticationProviders": { - "description": "A list of additional authentication providers for the GraphqlApi API.", - "items": { - "$ref": "#/definitions/AdditionalAuthenticationProvider" - }, - "type": "array", - "uniqueItems": true - }, - "ApiId": { - "description": "Unique AWS AppSync GraphQL API identifier.", - "type": "string" - }, - "ApiType": { - "description": "The value that indicates whether the GraphQL API is a standard API (GRAPHQL) or merged API (MERGED).", - "type": "string" - }, - "Arn": { - "description": "The Amazon Resource Name (ARN) of the API key", - "type": "string" - }, - "AuthenticationType": { - "description": "Security configuration for your GraphQL API", - "type": "string" - }, - "EnhancedMetricsConfig": { - "$ref": "#/definitions/EnhancedMetricsConfig", - "description": "Enables and controls the enhanced metrics feature. Enhanced metrics emit granular data on API usage and performance such as AppSync request and error counts, latency, and cache hits/misses. All enhanced metric data is sent to your CloudWatch account, and you can configure the types of data that will be sent." - }, - "EnvironmentVariables": { - "additionalProperties": false, - "description": "A map containing the list of resources with their properties and environment variables.", - "patternProperties": { - "^[A-Za-z]+\\w*$": { - "type": "string" - } - }, - "type": "object" - }, - "GraphQLDns": { - "description": "The fully qualified domain name (FQDN) of the endpoint URL of your GraphQL API.", - "type": "string" - }, - "GraphQLEndpointArn": { - "description": "The GraphQL endpoint ARN.", - "type": "string" - }, - "GraphQLUrl": { - "description": "The Endpoint URL of your GraphQL API.", - "type": "string" - }, - "IntrospectionConfig": { - "description": "Sets the value of the GraphQL API to enable (ENABLED) or disable (DISABLED) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled.", - "type": "string" - }, - "LambdaAuthorizerConfig": { - "$ref": "#/definitions/LambdaAuthorizerConfig", - "description": "A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time." - }, - "LogConfig": { - "$ref": "#/definitions/LogConfig", - "description": "The Amazon CloudWatch Logs configuration." - }, - "MergedApiExecutionRoleArn": { - "description": "The AWS Identity and Access Management service role ARN for a merged API. ", - "type": "string" - }, - "Name": { - "description": "The API name", - "type": "string" - }, - "OpenIDConnectConfig": { - "$ref": "#/definitions/OpenIDConnectConfig", - "description": "The OpenID Connect configuration." - }, - "OwnerContact": { - "description": "The owner contact information for an API resource.", - "type": "string" - }, - "QueryDepthLimit": { - "description": "The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query.", - "type": "integer" - }, - "RealtimeDns": { - "description": "The fully qualified domain name (FQDN) of the real-time endpoint URL of your GraphQL API.", - "type": "string" - }, - "RealtimeUrl": { - "description": "The GraphQL API real-time endpoint URL.", - "type": "string" - }, - "ResolverCountLimit": { - "description": "The maximum number of resolvers that can be invoked in a single request.", - "type": "integer" - }, - "Tags": { - "description": "An arbitrary set of tags (key-value pairs) for this GraphQL API.\n\n", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "UserPoolConfig": { - "$ref": "#/definitions/UserPoolConfig", - "description": "Optional authorization configuration for using Amazon Cognito user pools with your GraphQL endpoint.\n\n" - }, - "Visibility": { - "description": "Sets the scope of the GraphQL API to public (GLOBAL) or private (PRIVATE). By default, the scope is set to Global if no value is provided.", - "type": "string" - }, - "XrayEnabled": { - "description": "A flag indicating whether to use AWS X-Ray tracing for this GraphqlApi.\n\n", - "type": "boolean" - } - }, - "readOnlyProperties": [ - "/properties/ApiId", - "/properties/Arn", - "/properties/GraphQLEndpointArn", - "/properties/GraphQLDns", - "/properties/GraphQLUrl", - "/properties/RealtimeDns", - "/properties/RealtimeUrl" - ], - "required": [ - "Name", - "AuthenticationType" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "appsync:TagResource", - "appsync:UntagResource", - "appsync:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AppSync::GraphQLApi" -} +{ + "additionalProperties": false, + "definitions": { + "AdditionalAuthenticationProvider": { + "additionalProperties": false, + "properties": { + "AuthenticationType": { + "description": "The authentication type for API key, AWS Identity and Access Management, OIDC, Amazon Cognito user pools, or AWS Lambda.", + "type": "string" + }, + "LambdaAuthorizerConfig": { + "$ref": "#/definitions/LambdaAuthorizerConfig" + }, + "OpenIDConnectConfig": { + "$ref": "#/definitions/OpenIDConnectConfig" + }, + "UserPoolConfig": { + "$ref": "#/definitions/CognitoUserPoolConfig" + } + }, + "required": [ + "AuthenticationType" + ], + "type": "object" + }, + "CognitoUserPoolConfig": { + "additionalProperties": false, + "properties": { + "AppIdClientRegex": { + "description": "A regular expression for validating the incoming Amazon Cognito user pool app client ID. ", + "type": "string" + }, + "AwsRegion": { + "description": "The AWS Region in which the user pool was created.", + "type": "string" + }, + "UserPoolId": { + "description": "The user pool ID", + "type": "string" + } + }, + "type": "object" + }, + "EnhancedMetricsConfig": { + "additionalProperties": false, + "properties": { + "DataSourceLevelMetricsBehavior": { + "description": "Controls how data source metrics will be emitted to CloudWatch. Data source metrics include:\n\n", + "type": "string" + }, + "OperationLevelMetricsConfig": { + "description": "Controls how operation metrics will be emitted to CloudWatch. Operation metrics include:\n\n", + "type": "string" + }, + "ResolverLevelMetricsBehavior": { + "description": "Controls how resolver metrics will be emitted to CloudWatch. Resolver metrics include:\n\n", + "type": "string" + } + }, + "required": [ + "OperationLevelMetricsConfig", + "ResolverLevelMetricsBehavior", + "DataSourceLevelMetricsBehavior" + ], + "type": "object" + }, + "LambdaAuthorizerConfig": { + "additionalProperties": false, + "properties": { + "AuthorizerResultTtlInSeconds": { + "description": "The number of seconds a response should be cached for.", + "type": "integer" + }, + "AuthorizerUri": { + "description": "The ARN of the Lambda function to be called for authorization.", + "type": "string" + }, + "IdentityValidationExpression": { + "description": "A regular expression for validation of tokens before the Lambda function is called.", + "type": "string" + } + }, + "type": "object" + }, + "LogConfig": { + "additionalProperties": false, + "properties": { + "CloudWatchLogsRoleArn": { + "description": "The service role that AWS AppSync will assume to publish to Amazon CloudWatch Logs in your account.", + "type": "string" + }, + "ExcludeVerboseContent": { + "description": "Set to TRUE to exclude sections that contain information such as headers, context, and evaluated mapping templates, regardless of logging level.", + "type": "boolean" + }, + "FieldLogLevel": { + "description": "The field logging level. Values can be NONE, ERROR, INFO, DEBUG, or ALL.", + "type": "string" + } + }, + "type": "object" + }, + "OpenIDConnectConfig": { + "additionalProperties": false, + "properties": { + "AuthTTL": { + "description": "The number of milliseconds that a token is valid after being authenticated.", + "type": "number" + }, + "ClientId": { + "description": "The client identifier of the Relying party at the OpenID identity provider.", + "type": "string" + }, + "IatTTL": { + "description": "The number of milliseconds that a token is valid after it's issued to a user.\n\n", + "type": "number" + }, + "Issuer": { + "description": "The issuer for the OIDC configuration. ", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "UserPoolConfig": { + "additionalProperties": false, + "properties": { + "AppIdClientRegex": { + "description": "A regular expression for validating the incoming Amazon Cognito user pool app client ID.", + "type": "string" + }, + "AwsRegion": { + "description": "The AWS Region in which the user pool was created.", + "type": "string" + }, + "DefaultAction": { + "description": "The action that you want your GraphQL API to take when a request that uses Amazon Cognito user pool authentication doesn't match the Amazon Cognito user pool configuration.", + "type": "string" + }, + "UserPoolId": { + "description": "The user pool ID.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AppSync::GraphQLApi", + "handlers": { + "create": { + "permissions": [ + "appsync:CreateGraphqlApi", + "appsync:TagResource" + ] + }, + "delete": { + "permissions": [ + "appsync:DeleteGraphqlApi" + ] + }, + "list": { + "permissions": [ + "appsync:ListGraphqlApis" + ] + }, + "read": { + "permissions": [ + "appsync:GetGraphqlApi", + "appsync:GetGraphqlApiEnvironmentVariables", + "appsync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "appsync:GetGraphqlApi", + "appsync:UpdateGraphqlApi", + "appsync:TagResource", + "appsync:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApiId" + ], + "properties": { + "AdditionalAuthenticationProviders": { + "description": "A list of additional authentication providers for the GraphqlApi API.", + "items": { + "$ref": "#/definitions/AdditionalAuthenticationProvider" + }, + "type": "array", + "uniqueItems": true + }, + "ApiId": { + "description": "Unique AWS AppSync GraphQL API identifier.", + "type": "string" + }, + "ApiType": { + "description": "The value that indicates whether the GraphQL API is a standard API (GRAPHQL) or merged API (MERGED).", + "type": "string" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the API key", + "type": "string" + }, + "AuthenticationType": { + "description": "Security configuration for your GraphQL API", + "type": "string" + }, + "EnhancedMetricsConfig": { + "$ref": "#/definitions/EnhancedMetricsConfig", + "description": "Enables and controls the enhanced metrics feature. Enhanced metrics emit granular data on API usage and performance such as AppSync request and error counts, latency, and cache hits/misses. All enhanced metric data is sent to your CloudWatch account, and you can configure the types of data that will be sent." + }, + "EnvironmentVariables": { + "additionalProperties": false, + "description": "A map containing the list of resources with their properties and environment variables.", + "patternProperties": { + "^[A-Za-z]+\\w*$": { + "type": "string" + } + }, + "type": "object" + }, + "GraphQLDns": { + "description": "The fully qualified domain name (FQDN) of the endpoint URL of your GraphQL API.", + "type": "string" + }, + "GraphQLEndpointArn": { + "description": "The GraphQL endpoint ARN.", + "type": "string" + }, + "GraphQLUrl": { + "description": "The Endpoint URL of your GraphQL API.", + "type": "string" + }, + "IntrospectionConfig": { + "description": "Sets the value of the GraphQL API to enable (ENABLED) or disable (DISABLED) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled.", + "type": "string" + }, + "LambdaAuthorizerConfig": { + "$ref": "#/definitions/LambdaAuthorizerConfig", + "description": "A LambdaAuthorizerConfig holds configuration on how to authorize AWS AppSync API access when using the AWS_LAMBDA authorizer mode. Be aware that an AWS AppSync API may have only one Lambda authorizer configured at a time." + }, + "LogConfig": { + "$ref": "#/definitions/LogConfig", + "description": "The Amazon CloudWatch Logs configuration." + }, + "MergedApiExecutionRoleArn": { + "description": "The AWS Identity and Access Management service role ARN for a merged API. ", + "type": "string" + }, + "Name": { + "description": "The API name", + "type": "string" + }, + "OpenIDConnectConfig": { + "$ref": "#/definitions/OpenIDConnectConfig", + "description": "The OpenID Connect configuration." + }, + "OwnerContact": { + "description": "The owner contact information for an API resource.", + "type": "string" + }, + "QueryDepthLimit": { + "description": "The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query.", + "type": "integer" + }, + "RealtimeDns": { + "description": "The fully qualified domain name (FQDN) of the real-time endpoint URL of your GraphQL API.", + "type": "string" + }, + "RealtimeUrl": { + "description": "The GraphQL API real-time endpoint URL.", + "type": "string" + }, + "ResolverCountLimit": { + "description": "The maximum number of resolvers that can be invoked in a single request.", + "type": "integer" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this GraphQL API.\n\n", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "UserPoolConfig": { + "$ref": "#/definitions/UserPoolConfig", + "description": "Optional authorization configuration for using Amazon Cognito user pools with your GraphQL endpoint.\n\n" + }, + "Visibility": { + "description": "Sets the scope of the GraphQL API to public (GLOBAL) or private (PRIVATE). By default, the scope is set to Global if no value is provided.", + "type": "string" + }, + "XrayEnabled": { + "description": "A flag indicating whether to use AWS X-Ray tracing for this GraphqlApi.\n\n", + "type": "boolean" + } + }, + "readOnlyProperties": [ + "/properties/ApiId", + "/properties/Arn", + "/properties/GraphQLEndpointArn", + "/properties/GraphQLDns", + "/properties/GraphQLUrl", + "/properties/RealtimeDns", + "/properties/RealtimeUrl" + ], + "required": [ + "Name", + "AuthenticationType" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "appsync:TagResource", + "appsync:UntagResource", + "appsync:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppSync::GraphQLApi" +} diff --git a/src/schema/aws-appsync-graphqlschema.json b/src/schema/aws-appsync-graphqlschema.json index ae185145..98879e05 100644 --- a/src/schema/aws-appsync-graphqlschema.json +++ b/src/schema/aws-appsync-graphqlschema.json @@ -1,31 +1,31 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApiId" - ], - "description": "Resource Type definition for AWS::AppSync::GraphQLSchema", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApiId": { - "type": "string" - }, - "Definition": { - "type": "string" - }, - "DefinitionS3Location": { - "type": "string" - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ApiId" - ], - "typeName": "AWS::AppSync::GraphQLSchema" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiId" + ], + "description": "Resource Type definition for AWS::AppSync::GraphQLSchema", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApiId": { + "type": "string" + }, + "Definition": { + "type": "string" + }, + "DefinitionS3Location": { + "type": "string" + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApiId" + ], + "typeName": "AWS::AppSync::GraphQLSchema" +} diff --git a/src/schema/aws-appsync-resolver.json b/src/schema/aws-appsync-resolver.json index 28e44c22..957cf92b 100644 --- a/src/schema/aws-appsync-resolver.json +++ b/src/schema/aws-appsync-resolver.json @@ -1,245 +1,245 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApiId", - "/properties/FieldName", - "/properties/TypeName" - ], - "definitions": { - "AppSyncRuntime": { - "additionalProperties": false, - "description": "Describes a runtime used by an APSYlong resolver or APSYlong function. Specifies the name and version of the runtime to use. Note that if a runtime is specified, code must also be specified.", - "properties": { - "Name": { - "description": "The ``name`` of the runtime to use. Currently, the only allowed value is ``APPSYNC_JS``.", - "type": "string" - }, - "RuntimeVersion": { - "description": "The ``version`` of the runtime to use. Currently, the only allowed version is ``1.0.0``.", - "type": "string" - } - }, - "required": [ - "RuntimeVersion", - "Name" - ], - "type": "object" - }, - "CachingConfig": { - "additionalProperties": false, - "description": "The caching configuration for a resolver that has caching activated.", - "properties": { - "CachingKeys": { - "description": "The caching keys for a resolver that has caching activated.\n Valid values are entries from the ``$context.arguments``, ``$context.source``, and ``$context.identity`` maps.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ttl": { - "description": "The TTL in seconds for a resolver that has caching activated.\n Valid values are 1\u20133,600 seconds.", - "type": "number" - } - }, - "required": [ - "Ttl" - ], - "type": "object" - }, - "LambdaConflictHandlerConfig": { - "additionalProperties": false, - "description": "The ``LambdaConflictHandlerConfig`` when configuring LAMBDA as the Conflict Handler.", - "properties": { - "LambdaConflictHandlerArn": { - "description": "The Amazon Resource Name (ARN) for the Lambda function to use as the Conflict Handler.", - "type": "string" - } - }, - "type": "object" - }, - "PipelineConfig": { - "additionalProperties": false, - "description": "Use the ``PipelineConfig`` property type to specify ``PipelineConfig`` for an APSYlong resolver.\n ``PipelineConfig`` is a property of the [AWS::AppSync::Resolver](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html) resource.", - "properties": { - "Functions": { - "description": "A list of ``Function`` objects.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "SyncConfig": { - "additionalProperties": false, - "description": "Describes a Sync configuration for a resolver.\n Specifies which Conflict Detection strategy and Resolution strategy to use when the resolver is invoked.", - "properties": { - "ConflictDetection": { - "description": "The Conflict Detection strategy to use.\n + *VERSION*: Detect conflicts based on object versions for this resolver.\n + *NONE*: Do not detect conflicts when invoking this resolver.", - "type": "string" - }, - "ConflictHandler": { - "description": "The Conflict Resolution strategy to perform in the event of a conflict.\n + *OPTIMISTIC_CONCURRENCY*: Resolve conflicts by rejecting mutations when versions don't match the latest version at the server.\n + *AUTOMERGE*: Resolve conflicts with the Automerge conflict resolution strategy.\n + *LAMBDA*: Resolve conflicts with an LAMlong function supplied in the ``LambdaConflictHandlerConfig``.", - "type": "string" - }, - "LambdaConflictHandlerConfig": { - "$ref": "#/definitions/LambdaConflictHandlerConfig", - "description": "The ``LambdaConflictHandlerConfig`` when configuring ``LAMBDA`` as the Conflict Handler." - } - }, - "required": [ - "ConflictDetection" - ], - "type": "object" - } - }, - "description": "The ``AWS::AppSync::Resolver`` resource defines the logical GraphQL resolver that you attach to fields in a schema. Request and response templates for resolvers are written in Apache Velocity Template Language (VTL) format. For more information about resolvers, see [Resolver Mapping Template Reference](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference.html).\n When you submit an update, CFNLong updates resources based on differences between what you submit and the stack's current template. To cause this resource to be updated you must change a property value for this resource in the CFNshort template. Changing the S3 file content without changing a property value will not result in an update operation.\n See [Update Behaviors of Stack Resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html) in the *User Guide*.", - "handlers": { - "create": { - "permissions": [ - "s3:GetObject", - "appsync:CreateResolver", - "appsync:GetResolver" - ] - }, - "delete": { - "permissions": [ - "appsync:DeleteResolver" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApiId": { - "$ref": "resource-schema.json#/properties/ApiId" - }, - "TypeName": { - "$ref": "resource-schema.json#/properties/TypeName" - } - }, - "required": [ - "ApiId", - "TypeName" - ] - }, - "permissions": [ - "appsync:ListResolvers" - ] - }, - "read": { - "permissions": [ - "appsync:GetResolver" - ] - }, - "update": { - "permissions": [ - "s3:GetObject", - "appsync:UpdateResolver" - ] - } - }, - "primaryIdentifier": [ - "/properties/ResolverArn" - ], - "properties": { - "ApiId": { - "description": "The APSYlong GraphQL API to which you want to attach this resolver.", - "type": "string" - }, - "CachingConfig": { - "$ref": "#/definitions/CachingConfig", - "description": "The caching configuration for the resolver." - }, - "Code": { - "description": "The ``resolver`` code that contains the request and response functions. When code is used, the ``runtime`` is required. The runtime value must be ``APPSYNC_JS``.", - "type": "string" - }, - "CodeS3Location": { - "description": "The Amazon S3 endpoint.", - "type": "string" - }, - "DataSourceName": { - "description": "The resolver data source name.", - "type": "string" - }, - "FieldName": { - "description": "The GraphQL field on a type that invokes the resolver.", - "type": "string" - }, - "Kind": { - "description": "The resolver type.\n + *UNIT*: A UNIT resolver type. A UNIT resolver is the default resolver type. You can use a UNIT resolver to run a GraphQL query against a single data source.\n + *PIPELINE*: A PIPELINE resolver type. You can use a PIPELINE resolver to invoke a series of ``Function`` objects in a serial manner. You can use a pipeline resolver to run a GraphQL query against multiple data sources.", - "type": "string" - }, - "MaxBatchSize": { - "description": "The maximum number of resolver request inputs that will be sent to a single LAMlong function in a ``BatchInvoke`` operation.", - "type": "integer" - }, - "MetricsConfig": { - "description": "Enables or disables enhanced resolver metrics for specified resolvers. Note that ``MetricsConfig`` won't be used unless the ``resolverLevelMetricsBehavior`` value is set to ``PER_RESOLVER_METRICS``. If the ``resolverLevelMetricsBehavior`` is set to ``FULL_REQUEST_RESOLVER_METRICS`` instead, ``MetricsConfig`` will be ignored. However, you can still set its value.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "PipelineConfig": { - "$ref": "#/definitions/PipelineConfig", - "description": "Functions linked with the pipeline resolver." - }, - "RequestMappingTemplate": { - "description": "The request mapping template.\n Request mapping templates are optional when using a Lambda data source. For all other data sources, a request mapping template is required.", - "type": "string" - }, - "RequestMappingTemplateS3Location": { - "description": "The location of a request mapping template in an S3 bucket. Use this if you want to provision with a template file in S3 rather than embedding it in your CFNshort template.", - "type": "string" - }, - "ResolverArn": { - "description": "", - "type": "string" - }, - "ResponseMappingTemplate": { - "description": "The response mapping template.", - "type": "string" - }, - "ResponseMappingTemplateS3Location": { - "description": "The location of a response mapping template in an S3 bucket. Use this if you want to provision with a template file in S3 rather than embedding it in your CFNshort template.", - "type": "string" - }, - "Runtime": { - "$ref": "#/definitions/AppSyncRuntime", - "description": "Describes a runtime used by an APSYlong resolver or APSYlong function. Specifies the name and version of the runtime to use. Note that if a runtime is specified, code must also be specified." - }, - "SyncConfig": { - "$ref": "#/definitions/SyncConfig", - "description": "The ``SyncConfig`` for a resolver attached to a versioned data source." - }, - "TypeName": { - "description": "The GraphQL type that invokes this resolver.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ResolverArn" - ], - "required": [ - "TypeName", - "ApiId", - "FieldName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appsync.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::AppSync::Resolver", - "writeOnlyProperties": [ - "/properties/RequestMappingTemplateS3Location", - "/properties/ResponseMappingTemplateS3Location", - "/properties/CodeS3Location" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiId", + "/properties/FieldName", + "/properties/TypeName" + ], + "definitions": { + "AppSyncRuntime": { + "additionalProperties": false, + "description": "Describes a runtime used by an APSYlong resolver or APSYlong function. Specifies the name and version of the runtime to use. Note that if a runtime is specified, code must also be specified.", + "properties": { + "Name": { + "description": "The ``name`` of the runtime to use. Currently, the only allowed value is ``APPSYNC_JS``.", + "type": "string" + }, + "RuntimeVersion": { + "description": "The ``version`` of the runtime to use. Currently, the only allowed version is ``1.0.0``.", + "type": "string" + } + }, + "required": [ + "RuntimeVersion", + "Name" + ], + "type": "object" + }, + "CachingConfig": { + "additionalProperties": false, + "description": "The caching configuration for a resolver that has caching activated.", + "properties": { + "CachingKeys": { + "description": "The caching keys for a resolver that has caching activated.\n Valid values are entries from the ``$context.arguments``, ``$context.source``, and ``$context.identity`` maps.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Ttl": { + "description": "The TTL in seconds for a resolver that has caching activated.\n Valid values are 1\u20133,600 seconds.", + "type": "number" + } + }, + "required": [ + "Ttl" + ], + "type": "object" + }, + "LambdaConflictHandlerConfig": { + "additionalProperties": false, + "description": "The ``LambdaConflictHandlerConfig`` when configuring LAMBDA as the Conflict Handler.", + "properties": { + "LambdaConflictHandlerArn": { + "description": "The Amazon Resource Name (ARN) for the Lambda function to use as the Conflict Handler.", + "type": "string" + } + }, + "type": "object" + }, + "PipelineConfig": { + "additionalProperties": false, + "description": "Use the ``PipelineConfig`` property type to specify ``PipelineConfig`` for an APSYlong resolver.\n ``PipelineConfig`` is a property of the [AWS::AppSync::Resolver](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html) resource.", + "properties": { + "Functions": { + "description": "A list of ``Function`` objects.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "SyncConfig": { + "additionalProperties": false, + "description": "Describes a Sync configuration for a resolver.\n Specifies which Conflict Detection strategy and Resolution strategy to use when the resolver is invoked.", + "properties": { + "ConflictDetection": { + "description": "The Conflict Detection strategy to use.\n + *VERSION*: Detect conflicts based on object versions for this resolver.\n + *NONE*: Do not detect conflicts when invoking this resolver.", + "type": "string" + }, + "ConflictHandler": { + "description": "The Conflict Resolution strategy to perform in the event of a conflict.\n + *OPTIMISTIC_CONCURRENCY*: Resolve conflicts by rejecting mutations when versions don't match the latest version at the server.\n + *AUTOMERGE*: Resolve conflicts with the Automerge conflict resolution strategy.\n + *LAMBDA*: Resolve conflicts with an LAMlong function supplied in the ``LambdaConflictHandlerConfig``.", + "type": "string" + }, + "LambdaConflictHandlerConfig": { + "$ref": "#/definitions/LambdaConflictHandlerConfig", + "description": "The ``LambdaConflictHandlerConfig`` when configuring ``LAMBDA`` as the Conflict Handler." + } + }, + "required": [ + "ConflictDetection" + ], + "type": "object" + } + }, + "description": "The ``AWS::AppSync::Resolver`` resource defines the logical GraphQL resolver that you attach to fields in a schema. Request and response templates for resolvers are written in Apache Velocity Template Language (VTL) format. For more information about resolvers, see [Resolver Mapping Template Reference](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference.html).\n When you submit an update, CFNLong updates resources based on differences between what you submit and the stack's current template. To cause this resource to be updated you must change a property value for this resource in the CFNshort template. Changing the S3 file content without changing a property value will not result in an update operation.\n See [Update Behaviors of Stack Resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html) in the *User Guide*.", + "handlers": { + "create": { + "permissions": [ + "s3:GetObject", + "appsync:CreateResolver", + "appsync:GetResolver" + ] + }, + "delete": { + "permissions": [ + "appsync:DeleteResolver" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApiId": { + "$ref": "resource-schema.json#/properties/ApiId" + }, + "TypeName": { + "$ref": "resource-schema.json#/properties/TypeName" + } + }, + "required": [ + "ApiId", + "TypeName" + ] + }, + "permissions": [ + "appsync:ListResolvers" + ] + }, + "read": { + "permissions": [ + "appsync:GetResolver" + ] + }, + "update": { + "permissions": [ + "s3:GetObject", + "appsync:UpdateResolver" + ] + } + }, + "primaryIdentifier": [ + "/properties/ResolverArn" + ], + "properties": { + "ApiId": { + "description": "The APSYlong GraphQL API to which you want to attach this resolver.", + "type": "string" + }, + "CachingConfig": { + "$ref": "#/definitions/CachingConfig", + "description": "The caching configuration for the resolver." + }, + "Code": { + "description": "The ``resolver`` code that contains the request and response functions. When code is used, the ``runtime`` is required. The runtime value must be ``APPSYNC_JS``.", + "type": "string" + }, + "CodeS3Location": { + "description": "The Amazon S3 endpoint.", + "type": "string" + }, + "DataSourceName": { + "description": "The resolver data source name.", + "type": "string" + }, + "FieldName": { + "description": "The GraphQL field on a type that invokes the resolver.", + "type": "string" + }, + "Kind": { + "description": "The resolver type.\n + *UNIT*: A UNIT resolver type. A UNIT resolver is the default resolver type. You can use a UNIT resolver to run a GraphQL query against a single data source.\n + *PIPELINE*: A PIPELINE resolver type. You can use a PIPELINE resolver to invoke a series of ``Function`` objects in a serial manner. You can use a pipeline resolver to run a GraphQL query against multiple data sources.", + "type": "string" + }, + "MaxBatchSize": { + "description": "The maximum number of resolver request inputs that will be sent to a single LAMlong function in a ``BatchInvoke`` operation.", + "type": "integer" + }, + "MetricsConfig": { + "description": "Enables or disables enhanced resolver metrics for specified resolvers. Note that ``MetricsConfig`` won't be used unless the ``resolverLevelMetricsBehavior`` value is set to ``PER_RESOLVER_METRICS``. If the ``resolverLevelMetricsBehavior`` is set to ``FULL_REQUEST_RESOLVER_METRICS`` instead, ``MetricsConfig`` will be ignored. However, you can still set its value.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "PipelineConfig": { + "$ref": "#/definitions/PipelineConfig", + "description": "Functions linked with the pipeline resolver." + }, + "RequestMappingTemplate": { + "description": "The request mapping template.\n Request mapping templates are optional when using a Lambda data source. For all other data sources, a request mapping template is required.", + "type": "string" + }, + "RequestMappingTemplateS3Location": { + "description": "The location of a request mapping template in an S3 bucket. Use this if you want to provision with a template file in S3 rather than embedding it in your CFNshort template.", + "type": "string" + }, + "ResolverArn": { + "description": "", + "type": "string" + }, + "ResponseMappingTemplate": { + "description": "The response mapping template.", + "type": "string" + }, + "ResponseMappingTemplateS3Location": { + "description": "The location of a response mapping template in an S3 bucket. Use this if you want to provision with a template file in S3 rather than embedding it in your CFNshort template.", + "type": "string" + }, + "Runtime": { + "$ref": "#/definitions/AppSyncRuntime", + "description": "Describes a runtime used by an APSYlong resolver or APSYlong function. Specifies the name and version of the runtime to use. Note that if a runtime is specified, code must also be specified." + }, + "SyncConfig": { + "$ref": "#/definitions/SyncConfig", + "description": "The ``SyncConfig`` for a resolver attached to a versioned data source." + }, + "TypeName": { + "description": "The GraphQL type that invokes this resolver.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ResolverArn" + ], + "required": [ + "TypeName", + "ApiId", + "FieldName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appsync.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::AppSync::Resolver", + "writeOnlyProperties": [ + "/properties/RequestMappingTemplateS3Location", + "/properties/ResponseMappingTemplateS3Location", + "/properties/CodeS3Location" + ] +} diff --git a/src/schema/aws-appsync-sourceapiassociation.json b/src/schema/aws-appsync-sourceapiassociation.json index 8171120d..c88f39c8 100644 --- a/src/schema/aws-appsync-sourceapiassociation.json +++ b/src/schema/aws-appsync-sourceapiassociation.json @@ -1,171 +1,171 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/SourceApiIdentifier", - "/properties/MergedApiIdentifier" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SourceApiIdentifier", - "/properties/MergedApiIdentifier" - ], - "definitions": { - "SourceApiAssociationConfig": { - "additionalProperties": false, - "properties": { - "MergeType": { - "description": "Configuration of the merged behavior for the association. For example when it could be auto or has to be manual.", - "enum": [ - "AUTO_MERGE", - "MANUAL_MERGE" - ], - "type": "string" - } - } - } - }, - "description": "Resource Type definition for AWS::AppSync::SourceApiAssociation", - "handlers": { - "create": { - "permissions": [ - "appsync:AssociateSourceGraphqlApi", - "appsync:AssociateMergedGraphqlApi", - "appsync:GetSourceApiAssociation" - ] - }, - "delete": { - "permissions": [ - "appsync:GetSourceApiAssociation", - "appsync:DisassociateSourceGraphqlApi", - "appsync:DisassociateMergedGraphqlApi", - "appsync:ListSourceApiAssociations" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "MergedApiIdentifier": { - "$ref": "resource-schema.json#/properties/MergedApiIdentifier" - }, - "SourceApiIdentifier": { - "$ref": "resource-schema.json#/properties/SourceApiIdentifier" - } - }, - "required": [ - "SourceApiIdentifier", - "MergedApiIdentifier" - ] - }, - "permissions": [ - "appsync:ListSourceApiAssociations" - ] - }, - "read": { - "permissions": [ - "appsync:GetSourceApiAssociation", - "appsync:ListSourceApiAssociations" - ] - }, - "update": { - "permissions": [ - "appsync:GetSourceApiAssociation", - "appsync:UpdateSourceApiAssociation", - "appsync:GetSourceApiAssociation" - ] - } - }, - "primaryIdentifier": [ - "/properties/AssociationArn" - ], - "properties": { - "AssociationArn": { - "description": "ARN of the SourceApiAssociation.", - "type": "string" - }, - "AssociationId": { - "description": "Id of the SourceApiAssociation.", - "type": "string" - }, - "Description": { - "description": "Description of the SourceApiAssociation.", - "type": "string" - }, - "LastSuccessfulMergeDate": { - "description": "Date of last schema successful merge.", - "format": "date-time", - "type": "string" - }, - "MergedApiArn": { - "description": "ARN of the Merged API in the association.", - "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", - "type": "string" - }, - "MergedApiId": { - "description": "GraphQLApiId of the Merged API in the association.", - "type": "string" - }, - "MergedApiIdentifier": { - "description": "Identifier of the Merged GraphQLApi to associate. It could be either GraphQLApi ApiId or ARN", - "type": "string" - }, - "SourceApiArn": { - "description": "ARN of the source API in the association.", - "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", - "type": "string" - }, - "SourceApiAssociationConfig": { - "$ref": "#/definitions/SourceApiAssociationConfig", - "description": "Customized configuration for SourceApiAssociation." - }, - "SourceApiAssociationStatus": { - "description": "Current status of SourceApiAssociation.", - "enum": [ - "MERGE_SCHEDULED", - "MERGE_FAILED", - "MERGE_SUCCESS", - "MERGE_IN_PROGRESS", - "AUTO_MERGE_SCHEDULE_FAILED", - "DELETION_SCHEDULED", - "DELETION_IN_PROGRESS", - "DELETION_FAILED" - ], - "type": "string" - }, - "SourceApiAssociationStatusDetail": { - "description": "Current SourceApiAssociation status details.", - "type": "string" - }, - "SourceApiId": { - "description": "GraphQLApiId of the source API in the association.", - "type": "string" - }, - "SourceApiIdentifier": { - "description": "Identifier of the Source GraphQLApi to associate. It could be either GraphQLApi ApiId or ARN", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AssociationId", - "/properties/AssociationArn", - "/properties/SourceApiId", - "/properties/SourceApiArn", - "/properties/MergedApiId", - "/properties/MergedApiArn", - "/properties/SourceApiAssociationStatus", - "/properties/SourceApiAssociationStatusDetail", - "/properties/LastSuccessfulMergeDate" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appsync", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::AppSync::SourceApiAssociation", - "writeOnlyProperties": [ - "/properties/SourceApiIdentifier", - "/properties/MergedApiIdentifier" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/SourceApiIdentifier", + "/properties/MergedApiIdentifier" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SourceApiIdentifier", + "/properties/MergedApiIdentifier" + ], + "definitions": { + "SourceApiAssociationConfig": { + "additionalProperties": false, + "properties": { + "MergeType": { + "description": "Configuration of the merged behavior for the association. For example when it could be auto or has to be manual.", + "enum": [ + "AUTO_MERGE", + "MANUAL_MERGE" + ], + "type": "string" + } + } + } + }, + "description": "Resource Type definition for AWS::AppSync::SourceApiAssociation", + "handlers": { + "create": { + "permissions": [ + "appsync:AssociateSourceGraphqlApi", + "appsync:AssociateMergedGraphqlApi", + "appsync:GetSourceApiAssociation" + ] + }, + "delete": { + "permissions": [ + "appsync:GetSourceApiAssociation", + "appsync:DisassociateSourceGraphqlApi", + "appsync:DisassociateMergedGraphqlApi", + "appsync:ListSourceApiAssociations" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "MergedApiIdentifier": { + "$ref": "resource-schema.json#/properties/MergedApiIdentifier" + }, + "SourceApiIdentifier": { + "$ref": "resource-schema.json#/properties/SourceApiIdentifier" + } + }, + "required": [ + "SourceApiIdentifier", + "MergedApiIdentifier" + ] + }, + "permissions": [ + "appsync:ListSourceApiAssociations" + ] + }, + "read": { + "permissions": [ + "appsync:GetSourceApiAssociation", + "appsync:ListSourceApiAssociations" + ] + }, + "update": { + "permissions": [ + "appsync:GetSourceApiAssociation", + "appsync:UpdateSourceApiAssociation", + "appsync:GetSourceApiAssociation" + ] + } + }, + "primaryIdentifier": [ + "/properties/AssociationArn" + ], + "properties": { + "AssociationArn": { + "description": "ARN of the SourceApiAssociation.", + "type": "string" + }, + "AssociationId": { + "description": "Id of the SourceApiAssociation.", + "type": "string" + }, + "Description": { + "description": "Description of the SourceApiAssociation.", + "type": "string" + }, + "LastSuccessfulMergeDate": { + "description": "Date of last schema successful merge.", + "format": "date-time", + "type": "string" + }, + "MergedApiArn": { + "description": "ARN of the Merged API in the association.", + "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "MergedApiId": { + "description": "GraphQLApiId of the Merged API in the association.", + "type": "string" + }, + "MergedApiIdentifier": { + "description": "Identifier of the Merged GraphQLApi to associate. It could be either GraphQLApi ApiId or ARN", + "type": "string" + }, + "SourceApiArn": { + "description": "ARN of the source API in the association.", + "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "SourceApiAssociationConfig": { + "$ref": "#/definitions/SourceApiAssociationConfig", + "description": "Customized configuration for SourceApiAssociation." + }, + "SourceApiAssociationStatus": { + "description": "Current status of SourceApiAssociation.", + "enum": [ + "MERGE_SCHEDULED", + "MERGE_FAILED", + "MERGE_SUCCESS", + "MERGE_IN_PROGRESS", + "AUTO_MERGE_SCHEDULE_FAILED", + "DELETION_SCHEDULED", + "DELETION_IN_PROGRESS", + "DELETION_FAILED" + ], + "type": "string" + }, + "SourceApiAssociationStatusDetail": { + "description": "Current SourceApiAssociation status details.", + "type": "string" + }, + "SourceApiId": { + "description": "GraphQLApiId of the source API in the association.", + "type": "string" + }, + "SourceApiIdentifier": { + "description": "Identifier of the Source GraphQLApi to associate. It could be either GraphQLApi ApiId or ARN", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AssociationId", + "/properties/AssociationArn", + "/properties/SourceApiId", + "/properties/SourceApiArn", + "/properties/MergedApiId", + "/properties/MergedApiArn", + "/properties/SourceApiAssociationStatus", + "/properties/SourceApiAssociationStatusDetail", + "/properties/LastSuccessfulMergeDate" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appsync", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::AppSync::SourceApiAssociation", + "writeOnlyProperties": [ + "/properties/SourceApiIdentifier", + "/properties/MergedApiIdentifier" + ] +} diff --git a/src/schema/aws-apptest-testcase.json b/src/schema/aws-apptest-testcase.json index b00397a2..3431ccab 100644 --- a/src/schema/aws-apptest-testcase.json +++ b/src/schema/aws-apptest-testcase.json @@ -1,713 +1,713 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Batch": { - "additionalProperties": false, - "properties": { - "BatchJobName": { - "pattern": "^\\S{1,1000}$", - "type": "string" - }, - "BatchJobParameters": { - "$ref": "#/definitions/BatchJobParameters" - }, - "ExportDataSetNames": { - "items": { - "pattern": "^\\S{1,100}$", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "BatchJobName" - ], - "type": "object" - }, - "BatchJobParameters": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - }, - "CaptureTool": { - "enum": [ - "Precisely", - "AWS DMS" - ], - "type": "string" - }, - "CloudFormationAction": { - "additionalProperties": false, - "properties": { - "ActionType": { - "$ref": "#/definitions/CloudFormationActionType" - }, - "Resource": { - "pattern": "^\\S{1,1000}$", - "type": "string" - } - }, - "required": [ - "Resource" - ], - "type": "object" - }, - "CloudFormationActionType": { - "enum": [ - "Create", - "Delete" - ], - "type": "string" - }, - "CompareAction": { - "additionalProperties": false, - "properties": { - "Input": { - "$ref": "#/definitions/Input" - }, - "Output": { - "$ref": "#/definitions/Output" - } - }, - "required": [ - "Input" - ], - "type": "object" - }, - "DataSet": { - "additionalProperties": false, - "properties": { - "Ccsid": { - "pattern": "^\\S{1,50}$", - "type": "string" - }, - "Format": { - "$ref": "#/definitions/Format" - }, - "Length": { - "type": "number" - }, - "Name": { - "pattern": "^\\S{1,100}$", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/DataSetType" - } - }, - "required": [ - "Ccsid", - "Format", - "Length", - "Name", - "Type" - ], - "type": "object" - }, - "DataSetType": { - "enum": [ - "PS" - ], - "type": "string" - }, - "DatabaseCDC": { - "additionalProperties": false, - "properties": { - "SourceMetadata": { - "$ref": "#/definitions/SourceDatabaseMetadata" - }, - "TargetMetadata": { - "$ref": "#/definitions/TargetDatabaseMetadata" - } - }, - "required": [ - "SourceMetadata", - "TargetMetadata" - ], - "type": "object" - }, - "FileMetadata": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "DataSets": { - "items": { - "$ref": "#/definitions/DataSet" - }, - "type": "array" - } - }, - "required": [ - "DataSets" - ], - "title": "DataSets", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "DatabaseCDC": { - "$ref": "#/definitions/DatabaseCDC" - } - }, - "required": [ - "DatabaseCDC" - ], - "title": "DatabaseCDC", - "type": "object" - } - ] - }, - "Format": { - "enum": [ - "FIXED", - "VARIABLE", - "LINE_SEQUENTIAL" - ], - "type": "string" - }, - "Input": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "File": { - "$ref": "#/definitions/InputFile" - } - }, - "required": [ - "File" - ], - "title": "File", - "type": "object" - } - ] - }, - "InputFile": { - "additionalProperties": false, - "properties": { - "FileMetadata": { - "$ref": "#/definitions/FileMetadata" - }, - "SourceLocation": { - "pattern": "^\\S{1,1000}$", - "type": "string" - }, - "TargetLocation": { - "pattern": "^\\S{1,1000}$", - "type": "string" - } - }, - "required": [ - "FileMetadata", - "SourceLocation", - "TargetLocation" - ], - "type": "object" - }, - "M2ManagedActionProperties": { - "additionalProperties": false, - "properties": { - "ForceStop": { - "type": "boolean" - }, - "ImportDataSetLocation": { - "pattern": "^\\S{1,1000}$", - "type": "string" - } - }, - "type": "object" - }, - "M2ManagedActionType": { - "enum": [ - "Configure", - "Deconfigure" - ], - "type": "string" - }, - "M2ManagedApplicationAction": { - "additionalProperties": false, - "properties": { - "ActionType": { - "$ref": "#/definitions/M2ManagedActionType" - }, - "Properties": { - "$ref": "#/definitions/M2ManagedActionProperties" - }, - "Resource": { - "pattern": "^\\S{1,1000}$", - "type": "string" - } - }, - "required": [ - "ActionType", - "Resource" - ], - "type": "object" - }, - "M2NonManagedActionType": { - "enum": [ - "Configure", - "Deconfigure" - ], - "type": "string" - }, - "M2NonManagedApplicationAction": { - "additionalProperties": false, - "properties": { - "ActionType": { - "$ref": "#/definitions/M2NonManagedActionType" - }, - "Resource": { - "pattern": "^\\S{1,1000}$", - "type": "string" - } - }, - "required": [ - "ActionType", - "Resource" - ], - "type": "object" - }, - "MainframeAction": { - "additionalProperties": false, - "properties": { - "ActionType": { - "$ref": "#/definitions/MainframeActionType" - }, - "Properties": { - "$ref": "#/definitions/MainframeActionProperties" - }, - "Resource": { - "pattern": "^\\S{1,1000}$", - "type": "string" - } - }, - "required": [ - "ActionType", - "Resource" - ], - "type": "object" - }, - "MainframeActionProperties": { - "additionalProperties": false, - "properties": { - "DmsTaskArn": { - "pattern": "^\\S{1,1000}$", - "type": "string" - } - }, - "type": "object" - }, - "MainframeActionType": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Batch": { - "$ref": "#/definitions/Batch" - } - }, - "required": [ - "Batch" - ], - "title": "Batch", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Tn3270": { - "$ref": "#/definitions/TN3270" - } - }, - "required": [ - "Tn3270" - ], - "title": "Tn3270", - "type": "object" - } - ] - }, - "Output": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "File": { - "$ref": "#/definitions/OutputFile" - } - }, - "required": [ - "File" - ], - "title": "File", - "type": "object" - } - ] - }, - "OutputFile": { - "additionalProperties": false, - "properties": { - "FileLocation": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "ResourceAction": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "M2ManagedApplicationAction": { - "$ref": "#/definitions/M2ManagedApplicationAction" - } - }, - "required": [ - "M2ManagedApplicationAction" - ], - "title": "M2ManagedApplicationAction", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "M2NonManagedApplicationAction": { - "$ref": "#/definitions/M2NonManagedApplicationAction" - } - }, - "required": [ - "M2NonManagedApplicationAction" - ], - "title": "M2NonManagedApplicationAction", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "CloudFormationAction": { - "$ref": "#/definitions/CloudFormationAction" - } - }, - "required": [ - "CloudFormationAction" - ], - "title": "CloudFormationAction", - "type": "object" - } - ] - }, - "Script": { - "additionalProperties": false, - "properties": { - "ScriptLocation": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/ScriptType" - } - }, - "required": [ - "ScriptLocation", - "Type" - ], - "type": "object" - }, - "ScriptType": { - "enum": [ - "Selenium" - ], - "type": "string" - }, - "SourceDatabase": { - "enum": [ - "z/OS-DB2" - ], - "type": "string" - }, - "SourceDatabaseMetadata": { - "additionalProperties": false, - "properties": { - "CaptureTool": { - "$ref": "#/definitions/CaptureTool" - }, - "Type": { - "$ref": "#/definitions/SourceDatabase" - } - }, - "required": [ - "CaptureTool", - "Type" - ], - "type": "object" - }, - "Step": { - "additionalProperties": false, - "properties": { - "Action": { - "$ref": "#/definitions/StepAction" - }, - "Description": { - "maxLength": 1000, - "minLength": 0, - "type": "string" - }, - "Name": { - "pattern": "^[A-Za-z][A-Za-z0-9_\\-]{1,59}$", - "type": "string" - } - }, - "required": [ - "Action", - "Name" - ], - "type": "object" - }, - "StepAction": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "ResourceAction": { - "$ref": "#/definitions/ResourceAction" - } - }, - "required": [ - "ResourceAction" - ], - "title": "ResourceAction", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "MainframeAction": { - "$ref": "#/definitions/MainframeAction" - } - }, - "required": [ - "MainframeAction" - ], - "title": "MainframeAction", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "CompareAction": { - "$ref": "#/definitions/CompareAction" - } - }, - "required": [ - "CompareAction" - ], - "title": "CompareAction", - "type": "object" - } - ] - }, - "TN3270": { - "additionalProperties": false, - "properties": { - "ExportDataSetNames": { - "items": { - "pattern": "^\\S{1,100}$", - "type": "string" - }, - "type": "array" - }, - "Script": { - "$ref": "#/definitions/Script" - } - }, - "required": [ - "Script" - ], - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "maxProperties": 200, - "minProperties": 0, - "patternProperties": { - "^(?!aws:).+$": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "TargetDatabase": { - "enum": [ - "PostgreSQL" - ], - "type": "string" - }, - "TargetDatabaseMetadata": { - "additionalProperties": false, - "properties": { - "CaptureTool": { - "$ref": "#/definitions/CaptureTool" - }, - "Type": { - "$ref": "#/definitions/TargetDatabase" - } - }, - "required": [ - "CaptureTool", - "Type" - ], - "type": "object" - }, - "TestCaseLatestVersion": { - "additionalProperties": false, - "properties": { - "Status": { - "$ref": "#/definitions/TestCaseLifecycle" - }, - "Version": { - "type": "number" - } - }, - "required": [ - "Status", - "Version" - ], - "type": "object" - }, - "TestCaseLifecycle": { - "enum": [ - "Active", - "Deleting" - ], - "type": "string" - } - }, - "description": "Represents a Test Case that can be captured and executed", - "handlers": { - "create": { - "permissions": [ - "apptest:CreateTestCase", - "apptest:GetTestCase", - "apptest:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "apptest:GetTestCase", - "apptest:ListTagsForResource", - "apptest:DeleteTestCase" - ] - }, - "list": { - "permissions": [ - "apptest:ListTestCases" - ] - }, - "read": { - "permissions": [ - "apptest:GetTestCase", - "apptest:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "apptest:UpdateTestCase", - "apptest:GetTestCase", - "apptest:TagResource", - "apptest:UnTagResource", - "apptest:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/TestCaseId" - ], - "properties": { - "CreationTime": { - "format": "date-time", - "type": "string" - }, - "Description": { - "maxLength": 1000, - "minLength": 0, - "type": "string" - }, - "LastUpdateTime": { - "format": "date-time", - "type": "string" - }, - "LatestVersion": { - "$ref": "#/definitions/TestCaseLatestVersion" - }, - "Name": { - "pattern": "^[A-Za-z][A-Za-z0-9_\\-]{1,59}$", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/TestCaseLifecycle" - }, - "Steps": { - "items": { - "$ref": "#/definitions/Step" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - }, - "Tags": { - "$ref": "#/definitions/TagMap" - }, - "TestCaseArn": { - "pattern": "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]):[0-9]{12}:[A-Za-z0-9/][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "TestCaseId": { - "pattern": "^[A-Za-z0-9:/\\-]{1,100}$", - "type": "string" - }, - "TestCaseVersion": { - "type": "number" - } - }, - "readOnlyProperties": [ - "/properties/CreationTime", - "/properties/LastUpdateTime", - "/properties/LatestVersion", - "/properties/Status", - "/properties/TestCaseArn", - "/properties/TestCaseId", - "/properties/TestCaseVersion" - ], - "required": [ - "Name", - "Steps" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "apptest:TagResource", - "apptest:UntagResource", - "apptest:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AppTest::TestCase" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Batch": { + "additionalProperties": false, + "properties": { + "BatchJobName": { + "pattern": "^\\S{1,1000}$", + "type": "string" + }, + "BatchJobParameters": { + "$ref": "#/definitions/BatchJobParameters" + }, + "ExportDataSetNames": { + "items": { + "pattern": "^\\S{1,100}$", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "BatchJobName" + ], + "type": "object" + }, + "BatchJobParameters": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "CaptureTool": { + "enum": [ + "Precisely", + "AWS DMS" + ], + "type": "string" + }, + "CloudFormationAction": { + "additionalProperties": false, + "properties": { + "ActionType": { + "$ref": "#/definitions/CloudFormationActionType" + }, + "Resource": { + "pattern": "^\\S{1,1000}$", + "type": "string" + } + }, + "required": [ + "Resource" + ], + "type": "object" + }, + "CloudFormationActionType": { + "enum": [ + "Create", + "Delete" + ], + "type": "string" + }, + "CompareAction": { + "additionalProperties": false, + "properties": { + "Input": { + "$ref": "#/definitions/Input" + }, + "Output": { + "$ref": "#/definitions/Output" + } + }, + "required": [ + "Input" + ], + "type": "object" + }, + "DataSet": { + "additionalProperties": false, + "properties": { + "Ccsid": { + "pattern": "^\\S{1,50}$", + "type": "string" + }, + "Format": { + "$ref": "#/definitions/Format" + }, + "Length": { + "type": "number" + }, + "Name": { + "pattern": "^\\S{1,100}$", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/DataSetType" + } + }, + "required": [ + "Ccsid", + "Format", + "Length", + "Name", + "Type" + ], + "type": "object" + }, + "DataSetType": { + "enum": [ + "PS" + ], + "type": "string" + }, + "DatabaseCDC": { + "additionalProperties": false, + "properties": { + "SourceMetadata": { + "$ref": "#/definitions/SourceDatabaseMetadata" + }, + "TargetMetadata": { + "$ref": "#/definitions/TargetDatabaseMetadata" + } + }, + "required": [ + "SourceMetadata", + "TargetMetadata" + ], + "type": "object" + }, + "FileMetadata": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "DataSets": { + "items": { + "$ref": "#/definitions/DataSet" + }, + "type": "array" + } + }, + "required": [ + "DataSets" + ], + "title": "DataSets", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "DatabaseCDC": { + "$ref": "#/definitions/DatabaseCDC" + } + }, + "required": [ + "DatabaseCDC" + ], + "title": "DatabaseCDC", + "type": "object" + } + ] + }, + "Format": { + "enum": [ + "FIXED", + "VARIABLE", + "LINE_SEQUENTIAL" + ], + "type": "string" + }, + "Input": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "File": { + "$ref": "#/definitions/InputFile" + } + }, + "required": [ + "File" + ], + "title": "File", + "type": "object" + } + ] + }, + "InputFile": { + "additionalProperties": false, + "properties": { + "FileMetadata": { + "$ref": "#/definitions/FileMetadata" + }, + "SourceLocation": { + "pattern": "^\\S{1,1000}$", + "type": "string" + }, + "TargetLocation": { + "pattern": "^\\S{1,1000}$", + "type": "string" + } + }, + "required": [ + "FileMetadata", + "SourceLocation", + "TargetLocation" + ], + "type": "object" + }, + "M2ManagedActionProperties": { + "additionalProperties": false, + "properties": { + "ForceStop": { + "type": "boolean" + }, + "ImportDataSetLocation": { + "pattern": "^\\S{1,1000}$", + "type": "string" + } + }, + "type": "object" + }, + "M2ManagedActionType": { + "enum": [ + "Configure", + "Deconfigure" + ], + "type": "string" + }, + "M2ManagedApplicationAction": { + "additionalProperties": false, + "properties": { + "ActionType": { + "$ref": "#/definitions/M2ManagedActionType" + }, + "Properties": { + "$ref": "#/definitions/M2ManagedActionProperties" + }, + "Resource": { + "pattern": "^\\S{1,1000}$", + "type": "string" + } + }, + "required": [ + "ActionType", + "Resource" + ], + "type": "object" + }, + "M2NonManagedActionType": { + "enum": [ + "Configure", + "Deconfigure" + ], + "type": "string" + }, + "M2NonManagedApplicationAction": { + "additionalProperties": false, + "properties": { + "ActionType": { + "$ref": "#/definitions/M2NonManagedActionType" + }, + "Resource": { + "pattern": "^\\S{1,1000}$", + "type": "string" + } + }, + "required": [ + "ActionType", + "Resource" + ], + "type": "object" + }, + "MainframeAction": { + "additionalProperties": false, + "properties": { + "ActionType": { + "$ref": "#/definitions/MainframeActionType" + }, + "Properties": { + "$ref": "#/definitions/MainframeActionProperties" + }, + "Resource": { + "pattern": "^\\S{1,1000}$", + "type": "string" + } + }, + "required": [ + "ActionType", + "Resource" + ], + "type": "object" + }, + "MainframeActionProperties": { + "additionalProperties": false, + "properties": { + "DmsTaskArn": { + "pattern": "^\\S{1,1000}$", + "type": "string" + } + }, + "type": "object" + }, + "MainframeActionType": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Batch": { + "$ref": "#/definitions/Batch" + } + }, + "required": [ + "Batch" + ], + "title": "Batch", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Tn3270": { + "$ref": "#/definitions/TN3270" + } + }, + "required": [ + "Tn3270" + ], + "title": "Tn3270", + "type": "object" + } + ] + }, + "Output": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "File": { + "$ref": "#/definitions/OutputFile" + } + }, + "required": [ + "File" + ], + "title": "File", + "type": "object" + } + ] + }, + "OutputFile": { + "additionalProperties": false, + "properties": { + "FileLocation": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "ResourceAction": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "M2ManagedApplicationAction": { + "$ref": "#/definitions/M2ManagedApplicationAction" + } + }, + "required": [ + "M2ManagedApplicationAction" + ], + "title": "M2ManagedApplicationAction", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "M2NonManagedApplicationAction": { + "$ref": "#/definitions/M2NonManagedApplicationAction" + } + }, + "required": [ + "M2NonManagedApplicationAction" + ], + "title": "M2NonManagedApplicationAction", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "CloudFormationAction": { + "$ref": "#/definitions/CloudFormationAction" + } + }, + "required": [ + "CloudFormationAction" + ], + "title": "CloudFormationAction", + "type": "object" + } + ] + }, + "Script": { + "additionalProperties": false, + "properties": { + "ScriptLocation": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/ScriptType" + } + }, + "required": [ + "ScriptLocation", + "Type" + ], + "type": "object" + }, + "ScriptType": { + "enum": [ + "Selenium" + ], + "type": "string" + }, + "SourceDatabase": { + "enum": [ + "z/OS-DB2" + ], + "type": "string" + }, + "SourceDatabaseMetadata": { + "additionalProperties": false, + "properties": { + "CaptureTool": { + "$ref": "#/definitions/CaptureTool" + }, + "Type": { + "$ref": "#/definitions/SourceDatabase" + } + }, + "required": [ + "CaptureTool", + "Type" + ], + "type": "object" + }, + "Step": { + "additionalProperties": false, + "properties": { + "Action": { + "$ref": "#/definitions/StepAction" + }, + "Description": { + "maxLength": 1000, + "minLength": 0, + "type": "string" + }, + "Name": { + "pattern": "^[A-Za-z][A-Za-z0-9_\\-]{1,59}$", + "type": "string" + } + }, + "required": [ + "Action", + "Name" + ], + "type": "object" + }, + "StepAction": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "ResourceAction": { + "$ref": "#/definitions/ResourceAction" + } + }, + "required": [ + "ResourceAction" + ], + "title": "ResourceAction", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "MainframeAction": { + "$ref": "#/definitions/MainframeAction" + } + }, + "required": [ + "MainframeAction" + ], + "title": "MainframeAction", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "CompareAction": { + "$ref": "#/definitions/CompareAction" + } + }, + "required": [ + "CompareAction" + ], + "title": "CompareAction", + "type": "object" + } + ] + }, + "TN3270": { + "additionalProperties": false, + "properties": { + "ExportDataSetNames": { + "items": { + "pattern": "^\\S{1,100}$", + "type": "string" + }, + "type": "array" + }, + "Script": { + "$ref": "#/definitions/Script" + } + }, + "required": [ + "Script" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "maxProperties": 200, + "minProperties": 0, + "patternProperties": { + "^(?!aws:).+$": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "TargetDatabase": { + "enum": [ + "PostgreSQL" + ], + "type": "string" + }, + "TargetDatabaseMetadata": { + "additionalProperties": false, + "properties": { + "CaptureTool": { + "$ref": "#/definitions/CaptureTool" + }, + "Type": { + "$ref": "#/definitions/TargetDatabase" + } + }, + "required": [ + "CaptureTool", + "Type" + ], + "type": "object" + }, + "TestCaseLatestVersion": { + "additionalProperties": false, + "properties": { + "Status": { + "$ref": "#/definitions/TestCaseLifecycle" + }, + "Version": { + "type": "number" + } + }, + "required": [ + "Status", + "Version" + ], + "type": "object" + }, + "TestCaseLifecycle": { + "enum": [ + "Active", + "Deleting" + ], + "type": "string" + } + }, + "description": "Represents a Test Case that can be captured and executed", + "handlers": { + "create": { + "permissions": [ + "apptest:CreateTestCase", + "apptest:GetTestCase", + "apptest:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "apptest:GetTestCase", + "apptest:ListTagsForResource", + "apptest:DeleteTestCase" + ] + }, + "list": { + "permissions": [ + "apptest:ListTestCases" + ] + }, + "read": { + "permissions": [ + "apptest:GetTestCase", + "apptest:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "apptest:UpdateTestCase", + "apptest:GetTestCase", + "apptest:TagResource", + "apptest:UnTagResource", + "apptest:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/TestCaseId" + ], + "properties": { + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "Description": { + "maxLength": 1000, + "minLength": 0, + "type": "string" + }, + "LastUpdateTime": { + "format": "date-time", + "type": "string" + }, + "LatestVersion": { + "$ref": "#/definitions/TestCaseLatestVersion" + }, + "Name": { + "pattern": "^[A-Za-z][A-Za-z0-9_\\-]{1,59}$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/TestCaseLifecycle" + }, + "Steps": { + "items": { + "$ref": "#/definitions/Step" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + }, + "TestCaseArn": { + "pattern": "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]):[0-9]{12}:[A-Za-z0-9/][A-Za-z0-9:_/+=,@.-]{0,1023}$", + "type": "string" + }, + "TestCaseId": { + "pattern": "^[A-Za-z0-9:/\\-]{1,100}$", + "type": "string" + }, + "TestCaseVersion": { + "type": "number" + } + }, + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/LastUpdateTime", + "/properties/LatestVersion", + "/properties/Status", + "/properties/TestCaseArn", + "/properties/TestCaseId", + "/properties/TestCaseVersion" + ], + "required": [ + "Name", + "Steps" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "apptest:TagResource", + "apptest:UntagResource", + "apptest:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppTest::TestCase" +} diff --git a/src/schema/aws-aps-rulegroupsnamespace.json b/src/schema/aws-aps-rulegroupsnamespace.json index e8b5e492..f04c1acd 100644 --- a/src/schema/aws-aps-rulegroupsnamespace.json +++ b/src/schema/aws-aps-rulegroupsnamespace.json @@ -1,130 +1,134 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Workspace" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "RuleGroupsNamespace schema for cloudformation.", - "handlers": { - "create": { - "permissions": [ - "aps:CreateRuleGroupsNamespace", - "aps:DescribeRuleGroupsNamespace", - "aps:TagResource" - ] - }, - "delete": { - "permissions": [ - "aps:DeleteRuleGroupsNamespace", - "aps:DescribeRuleGroupsNamespace" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Arn": { - "$ref": "resource-schema.json#/properties/Workspace" - } - }, - "required": [ - "Arn" - ] - }, - "permissions": [ - "aps:ListRuleGroupsNamespaces", - "aps:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "aps:DescribeRuleGroupsNamespace", - "aps:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "aps:PutRuleGroupsNamespace", - "aps:DescribeRuleGroupsNamespace", - "aps:TagResource", - "aps:UntagResource", - "aps:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The RuleGroupsNamespace ARN.", - "pattern": "^arn:(aws|aws-us-gov|aws-cn):aps:[a-z0-9-]+:[0-9]+:rulegroupsnamespace/[a-zA-Z0-9-]+/[0-9A-Za-z][-.0-9A-Z_a-z]*$", - "type": "string" - }, - "Data": { - "description": "The RuleGroupsNamespace data.", - "type": "string" - }, - "Name": { - "description": "The RuleGroupsNamespace name.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Workspace": { - "description": "Required to identify a specific APS Workspace associated with this RuleGroupsNamespace.", - "pattern": "^arn:(aws|aws-us-gov|aws-cn):aps:[a-z0-9-]+:[0-9]+:workspace/[a-zA-Z0-9-]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Workspace", - "Data", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-aps", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::APS::RuleGroupsNamespace" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Workspace" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "RuleGroupsNamespace schema for cloudformation.", + "handlers": { + "create": { + "permissions": [ + "aps:CreateRuleGroupsNamespace", + "aps:DescribeRuleGroupsNamespace", + "aps:TagResource" + ] + }, + "delete": { + "permissions": [ + "aps:DeleteRuleGroupsNamespace", + "aps:DescribeRuleGroupsNamespace" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Arn": { + "$ref": "resource-schema.json#/properties/Workspace" + } + }, + "required": [ + "Arn" + ] + }, + "permissions": [ + "aps:ListRuleGroupsNamespaces", + "aps:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "aps:DescribeRuleGroupsNamespace", + "aps:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "aps:PutRuleGroupsNamespace", + "aps:DescribeRuleGroupsNamespace", + "aps:TagResource", + "aps:UntagResource", + "aps:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The RuleGroupsNamespace ARN.", + "pattern": "^arn:(aws|aws-us-gov|aws-cn):aps:[a-z0-9-]+:[0-9]+:rulegroupsnamespace/[a-zA-Z0-9-]+/[0-9A-Za-z][-.0-9A-Z_a-z]*$", + "type": "string" + }, + "Data": { + "description": "The RuleGroupsNamespace data.", + "type": "string" + }, + "Name": { + "description": "The RuleGroupsNamespace name.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Workspace": { + "description": "Required to identify a specific APS Workspace associated with this RuleGroupsNamespace.", + "pattern": "^arn:(aws|aws-us-gov|aws-cn):aps:[a-z0-9-]+:[0-9]+:workspace/[a-zA-Z0-9-]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Workspace", + "Data", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-aps", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "aps:TagResource", + "aps:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::APS::RuleGroupsNamespace" +} diff --git a/src/schema/aws-aps-scraper.json b/src/schema/aws-aps-scraper.json index 226d8321..c0b5100d 100644 --- a/src/schema/aws-aps-scraper.json +++ b/src/schema/aws-aps-scraper.json @@ -1,254 +1,278 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Source" - ], - "definitions": { - "Destination": { - "additionalProperties": false, - "description": "Scraper metrics destination", - "oneOf": [ - { - "required": [ - "AmpConfiguration" - ] - } - ], - "properties": { - "AmpConfiguration": { - "additionalProperties": false, - "description": "Configuration for Amazon Managed Prometheus metrics destination", - "properties": { - "WorkspaceArn": { - "description": "ARN of an Amazon Managed Prometheus workspace", - "pattern": "^arn:aws[-a-z]*:aps:[-a-z0-9]+:[0-9]{12}:workspace/.+$", - "type": "string" - } - }, - "required": [ - "WorkspaceArn" - ], - "type": "object" - } - }, - "type": "object" - }, - "ScrapeConfiguration": { - "additionalProperties": false, - "description": "Scraper configuration", - "oneOf": [ - { - "required": [ - "ConfigurationBlob" - ] - } - ], - "properties": { - "ConfigurationBlob": { - "description": "Prometheus compatible scrape configuration in base64 encoded blob format", - "type": "string" - } - }, - "type": "object" - }, - "SecurityGroupId": { - "description": "ID of a security group", - "pattern": "^sg-[0-9a-z]+$", - "type": "string" - }, - "Source": { - "additionalProperties": false, - "description": "Scraper metrics source", - "oneOf": [ - { - "required": [ - "EksConfiguration" - ] - } - ], - "properties": { - "EksConfiguration": { - "additionalProperties": false, - "description": "Configuration for EKS metrics source", - "properties": { - "ClusterArn": { - "description": "ARN of an EKS cluster", - "pattern": "^arn:aws[-a-z]*:eks:[-a-z0-9]+:[0-9]{12}:cluster/.+$", - "type": "string" - }, - "SecurityGroupIds": { - "description": "List of security group IDs", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SecurityGroupId" - }, - "type": "array" - }, - "SubnetIds": { - "description": "List of subnet IDs", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SubnetId" - }, - "type": "array" - } - }, - "required": [ - "ClusterArn", - "SubnetIds" - ], - "type": "object" - } - }, - "type": "object" - }, - "SubnetId": { - "description": "ID of a subnet", - "pattern": "^subnet-[0-9a-z]+$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::APS::Scraper", - "handlers": { - "create": { - "permissions": [ - "aps:CreateScraper", - "aps:DescribeScraper", - "aps:DescribeWorkspace", - "aps:TagResource", - "eks:CreateAccessEntry", - "eks:AssociateAccessPolicy", - "eks:DescribeCluster", - "ec2:DescribeSubnets", - "ec2:DescribeSecurityGroups", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "aps:DeleteScraper", - "aps:DescribeScraper", - "aps:DescribeWorkspace", - "eks:AssociateAccessPolicy", - "eks:DescribeCluster", - "ec2:DescribeSubnets", - "ec2:DescribeSecurityGroups", - "iam:DeleteServiceLinkedRole" - ] - }, - "list": { - "permissions": [ - "aps:ListScrapers", - "aps:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "aps:DescribeScraper", - "aps:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "aps:CreateScraper", - "aps:DescribeScraper", - "aps:UpdateScraper", - "aps:DescribeWorkspace", - "aps:TagResource", - "aps:UntagResource", - "aps:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Alias": { - "description": "Scraper alias.", - "maxLength": 100, - "minLength": 1, - "pattern": "^[0-9A-Za-z][-.0-9A-Z_a-z]*$", - "type": "string" - }, - "Arn": { - "description": "Scraper ARN.", - "pattern": "^arn:(aws|aws-us-gov|aws-cn):aps:(af|ap|ca|eu|me|sa|us)-(central|north|(north(?:east|west))|south|south(?:east|west)|east|west)-[0-9]+:[0-9]+:scraper/s-[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$", - "type": "string" - }, - "Destination": { - "$ref": "#/definitions/Destination" - }, - "RoleArn": { - "description": "IAM role ARN for the scraper.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:(aws|aws-us-gov|aws-cn):iam::[0-9]{12}:role/[a-zA-Z0-9-]+$", - "type": "string" - }, - "ScrapeConfiguration": { - "$ref": "#/definitions/ScrapeConfiguration" - }, - "ScraperId": { - "description": "Required to identify a specific scraper.", - "maxLength": 64, - "minLength": 1, - "pattern": "^s-[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$", - "type": "string" - }, - "Source": { - "$ref": "#/definitions/Source" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/ScraperId", - "/properties/Arn", - "/properties/RoleArn" - ], - "required": [ - "ScrapeConfiguration", - "Source", - "Destination" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-aps", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::APS::Scraper" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Source" + ], + "definitions": { + "Destination": { + "additionalProperties": false, + "description": "Scraper metrics destination", + "oneOf": [ + { + "required": [ + "AmpConfiguration" + ] + } + ], + "properties": { + "AmpConfiguration": { + "additionalProperties": false, + "description": "Configuration for Amazon Managed Prometheus metrics destination", + "properties": { + "WorkspaceArn": { + "description": "ARN of an Amazon Managed Prometheus workspace", + "pattern": "^arn:aws[-a-z]*:aps:[-a-z0-9]+:[0-9]{12}:workspace/.+$", + "type": "string" + } + }, + "required": [ + "WorkspaceArn" + ], + "type": "object" + } + }, + "type": "object" + }, + "RoleConfiguration": { + "additionalProperties": false, + "description": "Role configuration", + "properties": { + "SourceRoleArn": { + "description": "IAM Role in source account", + "type": "string" + }, + "TargetRoleArn": { + "description": "IAM Role in the target account", + "type": "string" + } + }, + "type": "object" + }, + "ScrapeConfiguration": { + "additionalProperties": false, + "description": "Scraper configuration", + "oneOf": [ + { + "required": [ + "ConfigurationBlob" + ] + } + ], + "properties": { + "ConfigurationBlob": { + "description": "Prometheus compatible scrape configuration in base64 encoded blob format", + "type": "string" + } + }, + "type": "object" + }, + "SecurityGroupId": { + "description": "ID of a security group", + "pattern": "^sg-[0-9a-z]+$", + "type": "string" + }, + "Source": { + "additionalProperties": false, + "description": "Scraper metrics source", + "oneOf": [ + { + "required": [ + "EksConfiguration" + ] + } + ], + "properties": { + "EksConfiguration": { + "additionalProperties": false, + "description": "Configuration for EKS metrics source", + "properties": { + "ClusterArn": { + "description": "ARN of an EKS cluster", + "pattern": "^arn:aws[-a-z]*:eks:[-a-z0-9]+:[0-9]{12}:cluster/.+$", + "type": "string" + }, + "SecurityGroupIds": { + "description": "List of security group IDs", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SecurityGroupId" + }, + "type": "array" + }, + "SubnetIds": { + "description": "List of subnet IDs", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetId" + }, + "type": "array" + } + }, + "required": [ + "ClusterArn", + "SubnetIds" + ], + "type": "object" + } + }, + "type": "object" + }, + "SubnetId": { + "description": "ID of a subnet", + "pattern": "^subnet-[0-9a-z]+$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::APS::Scraper", + "handlers": { + "create": { + "permissions": [ + "aps:CreateScraper", + "aps:DescribeScraper", + "aps:DescribeWorkspace", + "aps:TagResource", + "eks:CreateAccessEntry", + "eks:AssociateAccessPolicy", + "eks:DescribeCluster", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "iam:CreateServiceLinkedRole", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "aps:DeleteScraper", + "aps:DescribeScraper", + "aps:DescribeWorkspace", + "eks:AssociateAccessPolicy", + "eks:DescribeCluster", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "iam:DeleteServiceLinkedRole" + ] + }, + "list": { + "permissions": [ + "aps:ListScrapers", + "aps:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "aps:DescribeScraper", + "aps:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "aps:CreateScraper", + "aps:DescribeScraper", + "aps:UpdateScraper", + "aps:DescribeWorkspace", + "aps:TagResource", + "aps:UntagResource", + "aps:ListTagsForResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Alias": { + "description": "Scraper alias.", + "maxLength": 100, + "minLength": 1, + "pattern": "^[0-9A-Za-z][-.0-9A-Z_a-z]*$", + "type": "string" + }, + "Arn": { + "description": "Scraper ARN.", + "pattern": "^arn:(aws|aws-us-gov|aws-cn):aps:(af|ap|ca|eu|me|sa|us)-(central|north|(north(?:east|west))|south|south(?:east|west)|east|west)-[0-9]+:[0-9]+:scraper/s-[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$", + "type": "string" + }, + "Destination": { + "$ref": "#/definitions/Destination" + }, + "RoleArn": { + "description": "IAM role ARN for the scraper.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:(aws|aws-us-gov|aws-cn):iam::[0-9]{12}:role/[a-zA-Z0-9-]+$", + "type": "string" + }, + "RoleConfiguration": { + "$ref": "#/definitions/RoleConfiguration" + }, + "ScrapeConfiguration": { + "$ref": "#/definitions/ScrapeConfiguration" + }, + "ScraperId": { + "description": "Required to identify a specific scraper.", + "maxLength": 64, + "minLength": 1, + "pattern": "^s-[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$", + "type": "string" + }, + "Source": { + "$ref": "#/definitions/Source" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/ScraperId", + "/properties/Arn", + "/properties/RoleArn" + ], + "required": [ + "ScrapeConfiguration", + "Source", + "Destination" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-aps", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "aps:TagResource", + "aps:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::APS::Scraper" +} diff --git a/src/schema/aws-aps-workspace.json b/src/schema/aws-aps-workspace.json index 2742ede9..f0119881 100644 --- a/src/schema/aws-aps-workspace.json +++ b/src/schema/aws-aps-workspace.json @@ -1,176 +1,268 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKeyArn" - ], - "definitions": { - "LoggingConfiguration": { - "additionalProperties": false, - "description": "Logging configuration", - "properties": { - "LogGroupArn": { - "description": "CloudWatch log group ARN", - "maxLength": 512, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::APS::Workspace", - "handlers": { - "create": { - "permissions": [ - "aps:CreateWorkspace", - "aps:DescribeWorkspace", - "aps:TagResource", - "aps:CreateAlertManagerDefinition", - "aps:DescribeAlertManagerDefinition", - "aps:CreateLoggingConfiguration", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:ListLogDeliveries", - "logs:PutResourcePolicy", - "kms:CreateGrant", - "kms:Decrypt", - "kms:GenerateDataKey" - ] - }, - "delete": { - "permissions": [ - "aps:DeleteWorkspace", - "aps:DescribeWorkspace", - "aps:DeleteAlertManagerDefinition", - "aps:DeleteLoggingConfiguration", - "logs:DeleteLogDelivery" - ] - }, - "list": { - "permissions": [ - "aps:ListWorkspaces", - "aps:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "aps:DescribeWorkspace", - "aps:ListTagsForResource", - "aps:DescribeAlertManagerDefinition", - "aps:DescribeLoggingConfiguration" - ] - }, - "update": { - "permissions": [ - "aps:UpdateWorkspaceAlias", - "aps:DescribeWorkspace", - "aps:TagResource", - "aps:UntagResource", - "aps:ListTagsForResource", - "aps:CreateAlertManagerDefinition", - "aps:PutAlertManagerDefinition", - "aps:DeleteAlertManagerDefinition", - "aps:CreateLoggingConfiguration", - "aps:DescribeLoggingConfiguration", - "aps:UpdateLoggingConfiguration", - "aps:DeleteLoggingConfiguration", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:UpdateLogDelivery", - "logs:ListLogDeliveries", - "logs:DeleteLogDelivery", - "logs:PutResourcePolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "AlertManagerDefinition": { - "description": "The AMP Workspace alert manager definition data", - "type": "string" - }, - "Alias": { - "description": "AMP Workspace alias.", - "maxLength": 100, - "minLength": 0, - "type": "string" - }, - "Arn": { - "description": "Workspace arn.", - "maxLength": 128, - "minLength": 1, - "pattern": "^arn:(aws|aws-us-gov|aws-cn):aps:[a-z0-9-]+:[0-9]+:workspace/[a-zA-Z0-9-]+$", - "type": "string" - }, - "KmsKeyArn": { - "description": "KMS Key ARN used to encrypt and decrypt AMP workspace data.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[-a-z]*:kms:[-a-z0-9]+:[0-9]{12}:key/.+$", - "type": "string" - }, - "LoggingConfiguration": { - "$ref": "#/definitions/LoggingConfiguration" - }, - "PrometheusEndpoint": { - "description": "AMP Workspace prometheus endpoint", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "WorkspaceId": { - "description": "Required to identify a specific APS Workspace.", - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{1,99}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/WorkspaceId", - "/properties/Arn", - "/properties/PrometheusEndpoint" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::APS::Workspace" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KmsKeyArn" + ], + "definitions": { + "Label": { + "additionalProperties": false, + "description": "Series label", + "properties": { + "Name": { + "description": "Name of the label", + "minLength": 1, + "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$", + "type": "string" + }, + "Value": { + "description": "Value of the label", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name", + "Value" + ], + "type": "object" + }, + "LimitsPerLabelSet": { + "additionalProperties": false, + "description": "Label set and its associated limits", + "properties": { + "LabelSet": { + "description": "An array of series labels", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Label" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "Limits": { + "$ref": "#/definitions/LimitsPerLabelSetEntry" + } + }, + "required": [ + "Limits", + "LabelSet" + ], + "type": "object" + }, + "LimitsPerLabelSetEntry": { + "additionalProperties": false, + "description": "Limits that can be applied to a label set", + "properties": { + "MaxSeries": { + "description": "The maximum number of active series that can be ingested for this label set", + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "LoggingConfiguration": { + "additionalProperties": false, + "description": "Logging configuration", + "properties": { + "LogGroupArn": { + "description": "CloudWatch log group ARN", + "maxLength": 512, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "WorkspaceConfiguration": { + "additionalProperties": false, + "description": "Workspace configuration", + "properties": { + "LimitsPerLabelSets": { + "description": "An array of label set and associated limits", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LimitsPerLabelSet" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "RetentionPeriodInDays": { + "description": "How many days that metrics are retained in the workspace", + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::APS::Workspace", + "handlers": { + "create": { + "permissions": [ + "aps:CreateWorkspace", + "aps:DescribeWorkspace", + "aps:TagResource", + "aps:CreateAlertManagerDefinition", + "aps:DescribeAlertManagerDefinition", + "aps:CreateLoggingConfiguration", + "aps:DescribeWorkspaceConfiguration", + "aps:UpdateWorkspaceConfiguration", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "logs:PutResourcePolicy", + "kms:CreateGrant", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + }, + "delete": { + "permissions": [ + "aps:DeleteWorkspace", + "aps:DescribeWorkspace", + "aps:DeleteAlertManagerDefinition", + "aps:DeleteLoggingConfiguration", + "logs:DeleteLogDelivery" + ] + }, + "list": { + "permissions": [ + "aps:ListWorkspaces", + "aps:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "aps:DescribeWorkspace", + "aps:ListTagsForResource", + "aps:DescribeAlertManagerDefinition", + "aps:DescribeLoggingConfiguration", + "aps:DescribeWorkspaceConfiguration" + ] + }, + "update": { + "permissions": [ + "aps:UpdateWorkspaceAlias", + "aps:DescribeWorkspace", + "aps:TagResource", + "aps:UntagResource", + "aps:ListTagsForResource", + "aps:CreateAlertManagerDefinition", + "aps:PutAlertManagerDefinition", + "aps:DeleteAlertManagerDefinition", + "aps:CreateLoggingConfiguration", + "aps:DescribeLoggingConfiguration", + "aps:UpdateLoggingConfiguration", + "aps:DeleteLoggingConfiguration", + "aps:DescribeWorkspaceConfiguration", + "aps:UpdateWorkspaceConfiguration", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:ListLogDeliveries", + "logs:DeleteLogDelivery", + "logs:PutResourcePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AlertManagerDefinition": { + "description": "The AMP Workspace alert manager definition data", + "type": "string" + }, + "Alias": { + "description": "AMP Workspace alias.", + "maxLength": 100, + "minLength": 0, + "type": "string" + }, + "Arn": { + "description": "Workspace arn.", + "maxLength": 128, + "minLength": 1, + "pattern": "^arn:(aws|aws-us-gov|aws-cn):aps:[a-z0-9-]+:[0-9]+:workspace/[a-zA-Z0-9-]+$", + "type": "string" + }, + "KmsKeyArn": { + "description": "KMS Key ARN used to encrypt and decrypt AMP workspace data.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[-a-z]*:kms:[-a-z0-9]+:[0-9]{12}:key/.+$", + "type": "string" + }, + "LoggingConfiguration": { + "$ref": "#/definitions/LoggingConfiguration" + }, + "PrometheusEndpoint": { + "description": "AMP Workspace prometheus endpoint", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "WorkspaceConfiguration": { + "$ref": "#/definitions/WorkspaceConfiguration" + }, + "WorkspaceId": { + "description": "Required to identify a specific APS Workspace.", + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{1,99}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/WorkspaceId", + "/properties/Arn", + "/properties/PrometheusEndpoint" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "aps:TagResource", + "aps:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::APS::Workspace" +} diff --git a/src/schema/aws-arczonalshift-autoshiftobservernotificationstatus.json b/src/schema/aws-arczonalshift-autoshiftobservernotificationstatus.json index dd360b09..a1b720cc 100644 --- a/src/schema/aws-arczonalshift-autoshiftobservernotificationstatus.json +++ b/src/schema/aws-arczonalshift-autoshiftobservernotificationstatus.json @@ -1,76 +1,76 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Status" - ], - "definitions": { - "AccountId": { - "description": "User account id, used as part of the primary identifier for the resource", - "pattern": "^\\d{12}$", - "type": "string" - }, - "AutoshiftObserverNotificationStatus": { - "enum": [ - "ENABLED" - ], - "type": "string" - }, - "Region": { - "description": "Region, used as part of the primary identifier for the resource", - "maxLength": 30, - "minLength": 5, - "pattern": "^[a-z0-9-]*$", - "type": "string" - } - }, - "description": "Definition of AWS::ARCZonalShift::AutoshiftObserverNotificationStatus Resource Type", - "handlers": { - "create": { - "permissions": [ - "arc-zonal-shift:UpdateAutoshiftObserverNotificationStatus" - ] - }, - "delete": { - "permissions": [ - "arc-zonal-shift:UpdateAutoshiftObserverNotificationStatus", - "arc-zonal-shift:GetAutoshiftObserverNotificationStatus" - ] - }, - "list": { - "permissions": [ - "arc-zonal-shift:GetAutoshiftObserverNotificationStatus" - ] - }, - "read": { - "permissions": [ - "arc-zonal-shift:GetAutoshiftObserverNotificationStatus" - ] - } - }, - "primaryIdentifier": [ - "/properties/AccountId", - "/properties/Region" - ], - "properties": { - "AccountId": { - "$ref": "#/definitions/AccountId" - }, - "Region": { - "$ref": "#/definitions/Region" - }, - "Status": { - "$ref": "#/definitions/AutoshiftObserverNotificationStatus" - } - }, - "readOnlyProperties": [ - "/properties/AccountId", - "/properties/Region" - ], - "required": [ - "Status" - ], - "tagging": { - "taggable": false - }, - "typeName": "AWS::ARCZonalShift::AutoshiftObserverNotificationStatus" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Status" + ], + "definitions": { + "AccountId": { + "description": "User account id, used as part of the primary identifier for the resource", + "pattern": "^\\d{12}$", + "type": "string" + }, + "AutoshiftObserverNotificationStatus": { + "enum": [ + "ENABLED" + ], + "type": "string" + }, + "Region": { + "description": "Region, used as part of the primary identifier for the resource", + "maxLength": 30, + "minLength": 5, + "pattern": "^[a-z0-9-]*$", + "type": "string" + } + }, + "description": "Definition of AWS::ARCZonalShift::AutoshiftObserverNotificationStatus Resource Type", + "handlers": { + "create": { + "permissions": [ + "arc-zonal-shift:UpdateAutoshiftObserverNotificationStatus" + ] + }, + "delete": { + "permissions": [ + "arc-zonal-shift:UpdateAutoshiftObserverNotificationStatus", + "arc-zonal-shift:GetAutoshiftObserverNotificationStatus" + ] + }, + "list": { + "permissions": [ + "arc-zonal-shift:GetAutoshiftObserverNotificationStatus" + ] + }, + "read": { + "permissions": [ + "arc-zonal-shift:GetAutoshiftObserverNotificationStatus" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccountId", + "/properties/Region" + ], + "properties": { + "AccountId": { + "$ref": "#/definitions/AccountId" + }, + "Region": { + "$ref": "#/definitions/Region" + }, + "Status": { + "$ref": "#/definitions/AutoshiftObserverNotificationStatus" + } + }, + "readOnlyProperties": [ + "/properties/AccountId", + "/properties/Region" + ], + "required": [ + "Status" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::ARCZonalShift::AutoshiftObserverNotificationStatus" +} diff --git a/src/schema/aws-arczonalshift-zonalautoshiftconfiguration.json b/src/schema/aws-arczonalshift-zonalautoshiftconfiguration.json index c6972631..836bf403 100644 --- a/src/schema/aws-arczonalshift-zonalautoshiftconfiguration.json +++ b/src/schema/aws-arczonalshift-zonalautoshiftconfiguration.json @@ -1,170 +1,170 @@ -{ - "additionalProperties": false, - "allOf": [ - { - "allOf": [ - { - "required": [ - "ResourceIdentifier" - ] - } - ], - "anyOf": [ - { - "required": [ - "ZonalAutoshiftStatus" - ] - }, - { - "required": [ - "PracticeRunConfiguration" - ] - } - ] - } - ], - "createOnlyProperties": [ - "/properties/ResourceIdentifier" - ], - "definitions": { - "ControlCondition": { - "additionalProperties": false, - "properties": { - "AlarmIdentifier": { - "maxLength": 1024, - "minLength": 8, - "pattern": "^.*$", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/ControlConditionType" - } - }, - "required": [ - "AlarmIdentifier", - "Type" - ], - "type": "object" - }, - "ControlConditionType": { - "maxLength": 10, - "minLength": 8, - "pattern": "^[a-zA-Z]*$", - "type": "string" - }, - "PracticeRunConfiguration": { - "additionalProperties": false, - "properties": { - "BlockedDates": { - "insertionOrder": false, - "items": { - "maxLength": 10, - "minLength": 10, - "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$", - "type": "string" - }, - "maxItems": 15, - "minItems": 0, - "type": "array" - }, - "BlockedWindows": { - "insertionOrder": false, - "items": { - "maxLength": 19, - "minLength": 19, - "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun):[0-9]{2}:[0-9]{2}-(Mon|Tue|Wed|Thu|Fri|Sat|Sun):[0-9]{2}:[0-9]{2}$", - "type": "string" - }, - "maxItems": 15, - "minItems": 0, - "type": "array" - }, - "BlockingAlarms": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ControlCondition" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "OutcomeAlarms": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ControlCondition" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "OutcomeAlarms" - ], - "type": "object" - }, - "ZonalAutoshiftStatus": { - "enum": [ - "ENABLED" - ], - "type": "string" - } - }, - "description": "Definition of AWS::ARCZonalShift::ZonalAutoshiftConfiguration Resource Type", - "handlers": { - "create": { - "permissions": [ - "arc-zonal-shift:CreatePracticeRunConfiguration", - "arc-zonal-shift:GetManagedResource", - "arc-zonal-shift:UpdateZonalAutoshiftConfiguration", - "cloudwatch:DescribeAlarms", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "arc-zonal-shift:DeletePracticeRunConfiguration", - "arc-zonal-shift:GetManagedResource", - "arc-zonal-shift:UpdateZonalAutoshiftConfiguration" - ] - }, - "list": { - "permissions": [ - "arc-zonal-shift:ListManagedResources" - ] - }, - "read": { - "permissions": [ - "arc-zonal-shift:GetManagedResource" - ] - }, - "update": { - "permissions": [ - "arc-zonal-shift:GetManagedResource", - "arc-zonal-shift:UpdatePracticeRunConfiguration", - "arc-zonal-shift:UpdateZonalAutoshiftConfiguration", - "cloudwatch:DescribeAlarms" - ] - } - }, - "primaryIdentifier": [ - "/properties/ResourceIdentifier" - ], - "properties": { - "PracticeRunConfiguration": { - "$ref": "#/definitions/PracticeRunConfiguration" - }, - "ResourceIdentifier": { - "maxLength": 1024, - "minLength": 8, - "type": "string" - }, - "ZonalAutoshiftStatus": { - "$ref": "#/definitions/ZonalAutoshiftStatus" - } - }, - "tagging": { - "taggable": false - }, - "typeName": "AWS::ARCZonalShift::ZonalAutoshiftConfiguration" -} +{ + "additionalProperties": false, + "allOf": [ + { + "allOf": [ + { + "required": [ + "ResourceIdentifier" + ] + } + ], + "anyOf": [ + { + "required": [ + "ZonalAutoshiftStatus" + ] + }, + { + "required": [ + "PracticeRunConfiguration" + ] + } + ] + } + ], + "createOnlyProperties": [ + "/properties/ResourceIdentifier" + ], + "definitions": { + "ControlCondition": { + "additionalProperties": false, + "properties": { + "AlarmIdentifier": { + "maxLength": 1024, + "minLength": 8, + "pattern": "^.*$", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/ControlConditionType" + } + }, + "required": [ + "AlarmIdentifier", + "Type" + ], + "type": "object" + }, + "ControlConditionType": { + "maxLength": 10, + "minLength": 8, + "pattern": "^[a-zA-Z]*$", + "type": "string" + }, + "PracticeRunConfiguration": { + "additionalProperties": false, + "properties": { + "BlockedDates": { + "insertionOrder": false, + "items": { + "maxLength": 10, + "minLength": 10, + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$", + "type": "string" + }, + "maxItems": 15, + "minItems": 0, + "type": "array" + }, + "BlockedWindows": { + "insertionOrder": false, + "items": { + "maxLength": 19, + "minLength": 19, + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun):[0-9]{2}:[0-9]{2}-(Mon|Tue|Wed|Thu|Fri|Sat|Sun):[0-9]{2}:[0-9]{2}$", + "type": "string" + }, + "maxItems": 15, + "minItems": 0, + "type": "array" + }, + "BlockingAlarms": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ControlCondition" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "OutcomeAlarms": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ControlCondition" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "OutcomeAlarms" + ], + "type": "object" + }, + "ZonalAutoshiftStatus": { + "enum": [ + "ENABLED" + ], + "type": "string" + } + }, + "description": "Definition of AWS::ARCZonalShift::ZonalAutoshiftConfiguration Resource Type", + "handlers": { + "create": { + "permissions": [ + "arc-zonal-shift:CreatePracticeRunConfiguration", + "arc-zonal-shift:GetManagedResource", + "arc-zonal-shift:UpdateZonalAutoshiftConfiguration", + "cloudwatch:DescribeAlarms", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "arc-zonal-shift:DeletePracticeRunConfiguration", + "arc-zonal-shift:GetManagedResource", + "arc-zonal-shift:UpdateZonalAutoshiftConfiguration" + ] + }, + "list": { + "permissions": [ + "arc-zonal-shift:ListManagedResources" + ] + }, + "read": { + "permissions": [ + "arc-zonal-shift:GetManagedResource" + ] + }, + "update": { + "permissions": [ + "arc-zonal-shift:GetManagedResource", + "arc-zonal-shift:UpdatePracticeRunConfiguration", + "arc-zonal-shift:UpdateZonalAutoshiftConfiguration", + "cloudwatch:DescribeAlarms" + ] + } + }, + "primaryIdentifier": [ + "/properties/ResourceIdentifier" + ], + "properties": { + "PracticeRunConfiguration": { + "$ref": "#/definitions/PracticeRunConfiguration" + }, + "ResourceIdentifier": { + "maxLength": 1024, + "minLength": 8, + "type": "string" + }, + "ZonalAutoshiftStatus": { + "$ref": "#/definitions/ZonalAutoshiftStatus" + } + }, + "tagging": { + "taggable": false + }, + "typeName": "AWS::ARCZonalShift::ZonalAutoshiftConfiguration" +} diff --git a/src/schema/aws-athena-capacityreservation.json b/src/schema/aws-athena-capacityreservation.json index fbb92d14..89dfa309 100644 --- a/src/schema/aws-athena-capacityreservation.json +++ b/src/schema/aws-athena-capacityreservation.json @@ -1,206 +1,211 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Name" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the specified capacity reservation", - "type": "string" - }, - "CapacityAssignment": { - "additionalProperties": false, - "properties": { - "WorkgroupNames": { - "$ref": "#/definitions/WorkgroupNames" - } - }, - "required": [ - "WorkgroupNames" - ], - "type": "object" - }, - "CapacityAssignmentConfiguration": { - "additionalProperties": false, - "description": "Assignment configuration to assign workgroups to a reservation", - "properties": { - "CapacityAssignments": { - "$ref": "#/definitions/CapacityAssignments" - } - }, - "required": [ - "CapacityAssignments" - ], - "type": "object" - }, - "CapacityAssignments": { - "description": "List of capacity assignments", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CapacityAssignment" - }, - "type": "array" - }, - "CapacityReservationStatus": { - "enum": [ - "PENDING", - "ACTIVE", - "CANCELLING", - "CANCELLED", - "FAILED", - "UPDATE_PENDING" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "WorkgroupName": { - "pattern": "[a-zA-Z0-9._-]{1,128}", - "type": "string" - }, - "WorkgroupNames": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/WorkgroupName" - }, - "type": "array" - } - }, - "description": "Resource schema for AWS::Athena::CapacityReservation", - "handlers": { - "create": { - "permissions": [ - "athena:CreateCapacityReservation", - "athena:PutCapacityAssignmentConfiguration", - "athena:GetCapacityReservation", - "athena:TagResource" - ], - "timeoutInMinutes": 60 - }, - "delete": { - "permissions": [ - "athena:CancelCapacityReservation", - "athena:GetCapacityReservation", - "athena:DeleteCapacityReservation" - ], - "timeoutInMinutes": 60 - }, - "list": { - "permissions": [ - "athena:ListCapacityReservations", - "athena:GetCapacityReservation" - ], - "timeoutInMinutes": 60 - }, - "read": { - "permissions": [ - "athena:GetCapacityReservation", - "athena:GetCapacityAssignmentConfiguration", - "athena:ListTagsForResource" - ], - "timeoutInMinutes": 60 - }, - "update": { - "permissions": [ - "athena:UpdateCapacityReservation", - "athena:PutCapacityAssignmentConfiguration", - "athena:GetCapacityReservation", - "athena:TagResource", - "athena:UntagResource" - ], - "timeoutInMinutes": 60 - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "AllocatedDpus": { - "description": "The number of DPUs Athena has provisioned and allocated for the reservation", - "format": "int64", - "minimum": 0, - "type": "integer" - }, - "Arn": { - "$ref": "#/definitions/Arn" - }, - "CapacityAssignmentConfiguration": { - "$ref": "#/definitions/CapacityAssignmentConfiguration" - }, - "CreationTime": { - "description": "The date and time the reservation was created.", - "type": "string" - }, - "LastSuccessfulAllocationTime": { - "description": "The timestamp when the last successful allocated was made", - "type": "string" - }, - "Name": { - "description": "The reservation name.", - "pattern": "[a-zA-Z0-9._-]{1,128}", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/CapacityReservationStatus", - "description": "The status of the reservation." - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "TargetDpus": { - "description": "The number of DPUs to request to be allocated to the reservation.", - "format": "int64", - "minimum": 1, - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Status", - "/properties/AllocatedDpus", - "/properties/CreationTime", - "/properties/LastSuccessfulAllocationTime" - ], - "required": [ - "Name", - "TargetDpus" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-athena.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Athena::CapacityReservation" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the specified capacity reservation", + "type": "string" + }, + "CapacityAssignment": { + "additionalProperties": false, + "properties": { + "WorkgroupNames": { + "$ref": "#/definitions/WorkgroupNames" + } + }, + "required": [ + "WorkgroupNames" + ], + "type": "object" + }, + "CapacityAssignmentConfiguration": { + "additionalProperties": false, + "description": "Assignment configuration to assign workgroups to a reservation", + "properties": { + "CapacityAssignments": { + "$ref": "#/definitions/CapacityAssignments" + } + }, + "required": [ + "CapacityAssignments" + ], + "type": "object" + }, + "CapacityAssignments": { + "description": "List of capacity assignments", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CapacityAssignment" + }, + "type": "array" + }, + "CapacityReservationStatus": { + "enum": [ + "PENDING", + "ACTIVE", + "CANCELLING", + "CANCELLED", + "FAILED", + "UPDATE_PENDING" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "WorkgroupName": { + "pattern": "[a-zA-Z0-9._-]{1,128}", + "type": "string" + }, + "WorkgroupNames": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/WorkgroupName" + }, + "type": "array" + } + }, + "description": "Resource schema for AWS::Athena::CapacityReservation", + "handlers": { + "create": { + "permissions": [ + "athena:CreateCapacityReservation", + "athena:PutCapacityAssignmentConfiguration", + "athena:GetCapacityReservation", + "athena:TagResource" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "athena:CancelCapacityReservation", + "athena:GetCapacityReservation", + "athena:DeleteCapacityReservation" + ], + "timeoutInMinutes": 60 + }, + "list": { + "permissions": [ + "athena:ListCapacityReservations", + "athena:GetCapacityReservation" + ], + "timeoutInMinutes": 60 + }, + "read": { + "permissions": [ + "athena:GetCapacityReservation", + "athena:GetCapacityAssignmentConfiguration", + "athena:ListTagsForResource" + ], + "timeoutInMinutes": 60 + }, + "update": { + "permissions": [ + "athena:UpdateCapacityReservation", + "athena:PutCapacityAssignmentConfiguration", + "athena:GetCapacityReservation", + "athena:TagResource", + "athena:UntagResource" + ], + "timeoutInMinutes": 60 + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AllocatedDpus": { + "description": "The number of DPUs Athena has provisioned and allocated for the reservation", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CapacityAssignmentConfiguration": { + "$ref": "#/definitions/CapacityAssignmentConfiguration" + }, + "CreationTime": { + "description": "The date and time the reservation was created.", + "type": "string" + }, + "LastSuccessfulAllocationTime": { + "description": "The timestamp when the last successful allocated was made", + "type": "string" + }, + "Name": { + "description": "The reservation name.", + "pattern": "[a-zA-Z0-9._-]{1,128}", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/CapacityReservationStatus", + "description": "The status of the reservation." + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TargetDpus": { + "description": "The number of DPUs to request to be allocated to the reservation.", + "format": "int64", + "minimum": 1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Status", + "/properties/AllocatedDpus", + "/properties/CreationTime", + "/properties/LastSuccessfulAllocationTime" + ], + "required": [ + "Name", + "TargetDpus" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-athena.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "athena:UntagResource", + "athena:TagResource", + "athena:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Athena::CapacityReservation" +} diff --git a/src/schema/aws-athena-datacatalog.json b/src/schema/aws-athena-datacatalog.json index 1adfb140..549d6b59 100644 --- a/src/schema/aws-athena-datacatalog.json +++ b/src/schema/aws-athena-datacatalog.json @@ -1,117 +1,195 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "description": "Resource schema for AWS::Athena::DataCatalog", - "handlers": { - "create": { - "permissions": [ - "athena:CreateDataCatalog", - "athena:TagResource" - ] - }, - "delete": { - "permissions": [ - "athena:DeleteDataCatalog" - ] - }, - "list": { - "permissions": [ - "athena:ListDataCatalog" - ] - }, - "read": { - "permissions": [ - "athena:GetDataCatalog", - "athena:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "athena:UpdateDataCatalog", - "athena:TagResource", - "athena:GetDataCatalog", - "athena:UntagResource", - "athena:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Description": { - "description": "A description of the data catalog to be created. ", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "The name of the data catalog to create. The catalog name must be unique for the AWS account and can use a maximum of 128 alphanumeric, underscore, at sign, or hyphen characters. ", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Parameters": { - "additionalProperties": false, - "description": "Specifies the Lambda function or functions to use for creating the data catalog. This is a mapping whose values depend on the catalog type. ", - "patternProperties": { - ".*": { - "maxLength": 51200, - "type": "string" - } - }, - "type": "object" - }, - "Tags": { - "$ref": "#/definitions/Tags", - "description": "A list of comma separated tags to add to the data catalog that is created. " - }, - "Type": { - "description": "The type of data catalog to create: LAMBDA for a federated catalog, GLUE for AWS Glue Catalog, or HIVE for an external hive metastore. ", - "enum": [ - "LAMBDA", - "GLUE", - "HIVE" - ], - "type": "string" - } - }, - "required": [ - "Name", - "Type" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-athena.git", - "taggable": true, - "typeName": "AWS::Athena::DataCatalog" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "description": "Resource schema for AWS::Athena::DataCatalog", + "handlers": { + "create": { + "permissions": [ + "athena:CreateDataCatalog", + "athena:GetDataCatalog", + "athena:TagResource", + "s3:ListBucket", + "glue:TagResource", + "glue:CreateConnection", + "glue:DeleteConnection", + "glue:UpdateConnection", + "serverlessrepo:CreateCloudFormationTemplate", + "serverlessrepo:GetCloudFormationTemplate", + "cloudformation:CreateStack", + "cloudformation:DeleteStack", + "cloudformation:DescribeStacks", + "cloudformation:CreateChangeSet", + "iam:AttachRolePolicy", + "iam:DetachRolePolicy", + "iam:DeleteRolePolicy", + "iam:PutRolePolicy", + "iam:CreateRole", + "iam:TagRole", + "iam:DeleteRole", + "iam:GetRole", + "iam:GetRolePolicy", + "iam:PassRole", + "lambda:DeleteFunction", + "lambda:CreateFunction", + "lambda:TagResource", + "lambda:GetFunction", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "secretsmanager:ListSecrets", + "glue:GetConnection", + "ecr:BatchGetImage", + "ecr:GetDownloadUrlForLayer" + ] + }, + "delete": { + "permissions": [ + "athena:DeleteDataCatalog", + "athena:GetDataCatalog", + "glue:GetConnection", + "glue:UpdateConnection", + "cloudformation:DeleteStack", + "cloudformation:DescribeStacks", + "lambda:DeleteFunction", + "iam:DeleteRole", + "iam:DeleteRolePolicy", + "iam:DetachRolePolicy", + "s3:ListBucket" + ] + }, + "list": { + "permissions": [ + "athena:ListDataCatalogs" + ] + }, + "read": { + "permissions": [ + "athena:GetDataCatalog", + "athena:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "athena:UpdateDataCatalog", + "athena:TagResource", + "athena:GetDataCatalog", + "athena:UntagResource", + "athena:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "ConnectionType": { + "description": "The type of connection for a FEDERATED data catalog", + "type": "string" + }, + "Description": { + "description": "A description of the data catalog to be created. ", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Error": { + "description": "Text of the error that occurred during data catalog creation or deletion.", + "type": "string" + }, + "Name": { + "description": "The name of the data catalog to create. The catalog name must be unique for the AWS account and can use a maximum of 128 alphanumeric, underscore, at sign, or hyphen characters. ", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Parameters": { + "additionalProperties": false, + "description": "Specifies the Lambda function or functions to use for creating the data catalog. This is a mapping whose values depend on the catalog type. ", + "patternProperties": { + ".*": { + "maxLength": 51200, + "type": "string" + } + }, + "type": "object" + }, + "Status": { + "description": "The status of the creation or deletion of the data catalog. LAMBDA, GLUE, and HIVE data catalog types are created synchronously. Their status is either CREATE_COMPLETE or CREATE_FAILED. The FEDERATED data catalog type is created asynchronously.", + "enum": [ + "CREATE_IN_PROGRESS", + "CREATE_COMPLETE", + "CREATE_FAILED", + "CREATE_FAILED_CLEANUP_IN_PROGRESS", + "CREATE_FAILED_CLEANUP_COMPLETE", + "CREATE_FAILED_CLEANUP_FAILED", + "DELETE_IN_PROGRESS", + "DELETE_COMPLETE", + "DELETE_FAILED" + ], + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags", + "description": "A list of comma separated tags to add to the data catalog that is created. " + }, + "Type": { + "description": "The type of data catalog to create: LAMBDA for a federated catalog, GLUE for AWS Glue Catalog, or HIVE for an external hive metastore. FEDERATED is a federated catalog for which Athena creates the connection and the Lambda function for you based on the parameters that you pass.", + "enum": [ + "LAMBDA", + "GLUE", + "HIVE", + "FEDERATED" + ], + "type": "string" + } + }, + "required": [ + "Name", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-athena.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "athena:UntagResource", + "athena:TagResource", + "athena:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Athena::DataCatalog" +} diff --git a/src/schema/aws-athena-namedquery.json b/src/schema/aws-athena-namedquery.json index e7872a99..83e7689d 100644 --- a/src/schema/aws-athena-namedquery.json +++ b/src/schema/aws-athena-namedquery.json @@ -1,82 +1,82 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Database", - "/properties/Description", - "/properties/QueryString", - "/properties/WorkGroup" - ], - "description": "Resource schema for AWS::Athena::NamedQuery", - "handlers": { - "create": { - "permissions": [ - "athena:CreateNamedQuery" - ] - }, - "delete": { - "permissions": [ - "athena:DeleteNamedQuery" - ] - }, - "list": { - "permissions": [ - "athena:ListNamedQueries" - ] - }, - "read": { - "permissions": [ - "athena:GetNamedQuery" - ] - } - }, - "primaryIdentifier": [ - "/properties/NamedQueryId" - ], - "properties": { - "Database": { - "description": "The database to which the query belongs.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Description": { - "description": "The query description.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "The query name.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "NamedQueryId": { - "description": "The unique ID of the query.", - "type": "string" - }, - "QueryString": { - "description": "The contents of the query with all query statements.", - "maxLength": 262144, - "minLength": 1, - "type": "string" - }, - "WorkGroup": { - "description": "The name of the workgroup that contains the named query.", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/NamedQueryId" - ], - "required": [ - "Database", - "QueryString" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-athena.git", - "taggable": false, - "typeName": "AWS::Athena::NamedQuery" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Database", + "/properties/Description", + "/properties/QueryString", + "/properties/WorkGroup" + ], + "description": "Resource schema for AWS::Athena::NamedQuery", + "handlers": { + "create": { + "permissions": [ + "athena:CreateNamedQuery" + ] + }, + "delete": { + "permissions": [ + "athena:DeleteNamedQuery" + ] + }, + "list": { + "permissions": [ + "athena:ListNamedQueries" + ] + }, + "read": { + "permissions": [ + "athena:GetNamedQuery" + ] + } + }, + "primaryIdentifier": [ + "/properties/NamedQueryId" + ], + "properties": { + "Database": { + "description": "The database to which the query belongs.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Description": { + "description": "The query description.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "The query name.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "NamedQueryId": { + "description": "The unique ID of the query.", + "type": "string" + }, + "QueryString": { + "description": "The contents of the query with all query statements.", + "maxLength": 262144, + "minLength": 1, + "type": "string" + }, + "WorkGroup": { + "description": "The name of the workgroup that contains the named query.", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/NamedQueryId" + ], + "required": [ + "Database", + "QueryString" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-athena.git", + "taggable": false, + "typeName": "AWS::Athena::NamedQuery" +} diff --git a/src/schema/aws-athena-preparedstatement.json b/src/schema/aws-athena-preparedstatement.json index 4d430baf..31ff0b47 100644 --- a/src/schema/aws-athena-preparedstatement.json +++ b/src/schema/aws-athena-preparedstatement.json @@ -1,85 +1,85 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StatementName", - "/properties/WorkGroup" - ], - "description": "Resource schema for AWS::Athena::PreparedStatement", - "handlers": { - "create": { - "permissions": [ - "athena:CreatePreparedStatement", - "athena:GetPreparedStatement" - ] - }, - "delete": { - "permissions": [ - "athena:DeletePreparedStatement", - "athena:GetPreparedStatement" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "WorkGroup": { - "$ref": "resource-schema.json#/properties/WorkGroup" - } - }, - "required": [ - "WorkGroup" - ] - }, - "permissions": [ - "athena:ListPreparedStatements" - ] - }, - "read": { - "permissions": [ - "athena:GetPreparedStatement" - ] - }, - "update": { - "permissions": [ - "athena:UpdatePreparedStatement" - ] - } - }, - "primaryIdentifier": [ - "/properties/StatementName", - "/properties/WorkGroup" - ], - "properties": { - "Description": { - "description": "The description of the prepared statement.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "QueryStatement": { - "description": "The query string for the prepared statement.", - "maxLength": 262144, - "minLength": 1, - "type": "string" - }, - "StatementName": { - "description": "The name of the prepared statement.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "WorkGroup": { - "description": "The name of the workgroup to which the prepared statement belongs.", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "StatementName", - "WorkGroup", - "QueryStatement" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-athena.git", - "taggable": false, - "typeName": "AWS::Athena::PreparedStatement" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StatementName", + "/properties/WorkGroup" + ], + "description": "Resource schema for AWS::Athena::PreparedStatement", + "handlers": { + "create": { + "permissions": [ + "athena:CreatePreparedStatement", + "athena:GetPreparedStatement" + ] + }, + "delete": { + "permissions": [ + "athena:DeletePreparedStatement", + "athena:GetPreparedStatement" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "WorkGroup": { + "$ref": "resource-schema.json#/properties/WorkGroup" + } + }, + "required": [ + "WorkGroup" + ] + }, + "permissions": [ + "athena:ListPreparedStatements" + ] + }, + "read": { + "permissions": [ + "athena:GetPreparedStatement" + ] + }, + "update": { + "permissions": [ + "athena:UpdatePreparedStatement" + ] + } + }, + "primaryIdentifier": [ + "/properties/StatementName", + "/properties/WorkGroup" + ], + "properties": { + "Description": { + "description": "The description of the prepared statement.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "QueryStatement": { + "description": "The query string for the prepared statement.", + "maxLength": 262144, + "minLength": 1, + "type": "string" + }, + "StatementName": { + "description": "The name of the prepared statement.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "WorkGroup": { + "description": "The name of the workgroup to which the prepared statement belongs.", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "StatementName", + "WorkGroup", + "QueryStatement" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-athena.git", + "taggable": false, + "typeName": "AWS::Athena::PreparedStatement" +} diff --git a/src/schema/aws-athena-workgroup.json b/src/schema/aws-athena-workgroup.json index 3b5221a2..71ddb29f 100644 --- a/src/schema/aws-athena-workgroup.json +++ b/src/schema/aws-athena-workgroup.json @@ -1,412 +1,423 @@ -{ - "$comment": "Resource Schema for AWS::Athena::WorkGroup. Any changes made to SDK model for WorkGroup should be reflected here.", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "AclConfiguration": { - "additionalProperties": false, - "description": "Indicates that an Amazon S3 canned ACL should be set to control ownership of stored query results", - "properties": { - "S3AclOption": { - "$ref": "#/definitions/S3AclOption" - } - }, - "required": [ - "S3AclOption" - ], - "type": "object" - }, - "AdditionalConfiguration": { - "description": "Additional Configuration that are passed to Athena Spark Calculations running in this workgroup", - "type": "string" - }, - "BytesScannedCutoffPerQuery": { - "description": "The upper data usage limit (cutoff) for the amount of bytes a single query in a workgroup is allowed to scan.", - "format": "int64", - "minimum": 10000000, - "type": "integer" - }, - "CustomerContentEncryptionConfiguration": { - "additionalProperties": false, - "description": "Indicates the KMS key for encrypting notebook content.", - "properties": { - "KmsKey": { - "$ref": "#/definitions/KmsKey" - } - }, - "required": [ - "KmsKey" - ], - "type": "object" - }, - "EffectiveEngineVersion": { - "description": "Read only. The engine version on which the query runs. If the user requests a valid engine version other than Auto, the effective engine version is the same as the engine version that the user requested. If the user requests Auto, the effective engine version is chosen by Athena. When a request to update the engine version is made by a CreateWorkGroup or UpdateWorkGroup operation, the EffectiveEngineVersion field is ignored.", - "type": "string" - }, - "EncryptionConfiguration": { - "additionalProperties": false, - "description": "If query results are encrypted in Amazon S3, indicates the encryption option used (for example, SSE-KMS or CSE-KMS) and key information.", - "properties": { - "EncryptionOption": { - "$ref": "#/definitions/EncryptionOption" - }, - "KmsKey": { - "$ref": "#/definitions/KmsKey" - } - }, - "required": [ - "EncryptionOption" - ], - "type": "object" - }, - "EncryptionOption": { - "description": "Indicates whether Amazon S3 server-side encryption with Amazon S3-managed keys (SSE-S3), server-side encryption with KMS-managed keys (SSE-KMS), or client-side encryption with KMS-managed keys (CSE-KMS) is used.", - "enum": [ - "SSE_S3", - "SSE_KMS", - "CSE_KMS" - ], - "type": "string" - }, - "EnforceWorkGroupConfiguration": { - "description": "If set to \"true\", the settings for the workgroup override client-side settings. If set to \"false\", client-side settings are used", - "type": "boolean" - }, - "EngineVersion": { - "additionalProperties": false, - "description": "The Athena engine version for running queries.", - "properties": { - "EffectiveEngineVersion": { - "$ref": "#/definitions/EffectiveEngineVersion" - }, - "SelectedEngineVersion": { - "$ref": "#/definitions/SelectedEngineVersion" - } - }, - "type": "object" - }, - "ExecutionRole": { - "description": "Execution Role ARN required to run Athena Spark Calculations", - "type": "string" - }, - "ExpectedBucketOwner": { - "description": "The AWS account ID of the owner of S3 bucket where query results are stored", - "type": "string" - }, - "KmsKey": { - "description": "For SSE-KMS and CSE-KMS, this is the KMS key ARN or ID. ", - "type": "string" - }, - "OutputLocation": { - "description": "The location in Amazon S3 where your query results are stored, such as s3://path/to/query/bucket/. To run the query, you must specify the query results location using one of the ways: either for individual queries using either this setting (client-side), or in the workgroup, using WorkGroupConfiguration", - "type": "string" - }, - "PublishCloudWatchMetricsEnabled": { - "description": "Indicates that the Amazon CloudWatch metrics are enabled for the workgroup.", - "type": "boolean" - }, - "RemoveAclConfiguration": { - "type": "boolean" - }, - "RemoveBytesScannedCutoffPerQuery": { - "description": "Indicates that the data usage control limit per query is removed.", - "type": "boolean" - }, - "RemoveCustomerContentEncryptionConfiguration": { - "type": "boolean" - }, - "RemoveEncryptionConfiguration": { - "type": "boolean" - }, - "RemoveExpectedBucketOwner": { - "type": "boolean" - }, - "RemoveOutputLocation": { - "type": "boolean" - }, - "RequesterPaysEnabled": { - "description": "If set to true, allows members assigned to a workgroup to reference Amazon S3 Requester Pays buckets in queries. If set to false, workgroup members cannot query data from Requester Pays buckets, and queries that retrieve data from Requester Pays buckets cause an error. ", - "type": "boolean" - }, - "ResultConfiguration": { - "additionalProperties": false, - "description": "The location in Amazon S3 where query results are stored and the encryption option, if any, used for query results. These are known as \"client-side settings\". If workgroup settings override client-side settings, then the query uses the workgroup settings.\n", - "properties": { - "AclConfiguration": { - "$ref": "#/definitions/AclConfiguration" - }, - "EncryptionConfiguration": { - "$ref": "#/definitions/EncryptionConfiguration" - }, - "ExpectedBucketOwner": { - "$ref": "#/definitions/ExpectedBucketOwner" - }, - "OutputLocation": { - "$ref": "#/definitions/OutputLocation" - } - }, - "type": "object" - }, - "ResultConfigurationUpdates": { - "additionalProperties": false, - "description": "The result configuration information about the queries in this workgroup that will be updated. Includes the updated results location and an updated option for encrypting query results. ", - "properties": { - "AclConfiguration": { - "$ref": "#/definitions/AclConfiguration" - }, - "EncryptionConfiguration": { - "$ref": "#/definitions/EncryptionConfiguration" - }, - "ExpectedBucketOwner": { - "$ref": "#/definitions/ExpectedBucketOwner" - }, - "OutputLocation": { - "$ref": "#/definitions/OutputLocation" - }, - "RemoveAclConfiguration": { - "$ref": "#/definitions/RemoveAclConfiguration" - }, - "RemoveEncryptionConfiguration": { - "$ref": "#/definitions/RemoveEncryptionConfiguration" - }, - "RemoveExpectedBucketOwner": { - "$ref": "#/definitions/RemoveExpectedBucketOwner" - }, - "RemoveOutputLocation": { - "$ref": "#/definitions/RemoveOutputLocation" - } - }, - "type": "object" - }, - "S3AclOption": { - "description": "The Amazon S3 canned ACL that Athena should specify when storing query results. Currently the only supported canned ACL is BUCKET_OWNER_FULL_CONTROL", - "enum": [ - "BUCKET_OWNER_FULL_CONTROL" - ], - "type": "string" - }, - "SelectedEngineVersion": { - "description": "The engine version requested by the user. Possible values are determined by the output of ListEngineVersions, including Auto. The default is Auto.", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "WorkGroupConfiguration": { - "additionalProperties": false, - "properties": { - "AdditionalConfiguration": { - "$ref": "#/definitions/AdditionalConfiguration" - }, - "BytesScannedCutoffPerQuery": { - "$ref": "#/definitions/BytesScannedCutoffPerQuery" - }, - "CustomerContentEncryptionConfiguration": { - "$ref": "#/definitions/CustomerContentEncryptionConfiguration" - }, - "EnforceWorkGroupConfiguration": { - "$ref": "#/definitions/EnforceWorkGroupConfiguration" - }, - "EngineVersion": { - "$ref": "#/definitions/EngineVersion" - }, - "ExecutionRole": { - "$ref": "#/definitions/ExecutionRole" - }, - "PublishCloudWatchMetricsEnabled": { - "$ref": "#/definitions/PublishCloudWatchMetricsEnabled" - }, - "RequesterPaysEnabled": { - "$ref": "#/definitions/RequesterPaysEnabled" - }, - "ResultConfiguration": { - "$ref": "#/definitions/ResultConfiguration" - } - }, - "type": "object" - }, - "WorkGroupConfigurationUpdates": { - "additionalProperties": false, - "description": "The configuration information that will be updated for this workgroup, which includes the location in Amazon S3 where query results are stored, the encryption option, if any, used for query results, whether the Amazon CloudWatch Metrics are enabled for the workgroup, whether the workgroup settings override the client-side settings, and the data usage limit for the amount of bytes scanned per query, if it is specified. ", - "properties": { - "AdditionalConfiguration": { - "$ref": "#/definitions/AdditionalConfiguration" - }, - "BytesScannedCutoffPerQuery": { - "$ref": "#/definitions/BytesScannedCutoffPerQuery" - }, - "CustomerContentEncryptionConfiguration": { - "$ref": "#/definitions/CustomerContentEncryptionConfiguration" - }, - "EnforceWorkGroupConfiguration": { - "$ref": "#/definitions/EnforceWorkGroupConfiguration" - }, - "EngineVersion": { - "$ref": "#/definitions/EngineVersion" - }, - "ExecutionRole": { - "$ref": "#/definitions/ExecutionRole" - }, - "PublishCloudWatchMetricsEnabled": { - "$ref": "#/definitions/PublishCloudWatchMetricsEnabled" - }, - "RemoveBytesScannedCutoffPerQuery": { - "$ref": "#/definitions/RemoveBytesScannedCutoffPerQuery" - }, - "RemoveCustomerContentEncryptionConfiguration": { - "$ref": "#/definitions/RemoveCustomerContentEncryptionConfiguration" - }, - "RequesterPaysEnabled": { - "$ref": "#/definitions/RequesterPaysEnabled" - }, - "ResultConfigurationUpdates": { - "$ref": "#/definitions/ResultConfigurationUpdates" - } - }, - "type": "object" - } - }, - "deprecatedProperties": [ - "/properties/WorkGroupConfigurationUpdates" - ], - "description": "Resource schema for AWS::Athena::WorkGroup", - "handlers": { - "create": { - "permissions": [ - "athena:CreateWorkGroup", - "athena:TagResource", - "iam:PassRole", - "s3:GetBucketLocation", - "s3:GetObject", - "s3:ListBucket", - "s3:ListBucketMultipartUploads", - "s3:AbortMultipartUpload", - "s3:PutObject", - "s3:ListMultipartUploadParts", - "kms:Decrypt", - "kms:GenerateDataKey" - ] - }, - "delete": { - "permissions": [ - "athena:DeleteWorkGroup", - "athena:GetWorkGroup", - "athena:UntagResource" - ] - }, - "list": { - "permissions": [ - "athena:ListWorkGroups" - ] - }, - "read": { - "permissions": [ - "athena:GetWorkGroup", - "athena:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "athena:UpdateWorkGroup", - "athena:TagResource", - "athena:UntagResource", - "iam:PassRole", - "s3:GetBucketLocation", - "s3:GetObject", - "s3:ListBucket", - "s3:ListBucketMultipartUploads", - "s3:AbortMultipartUpload", - "s3:PutObject", - "s3:ListMultipartUploadParts", - "kms:Decrypt", - "kms:GenerateDataKey" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "CreationTime": { - "description": "The date and time the workgroup was created.", - "type": "string" - }, - "Description": { - "description": "The workgroup description.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "Name": { - "description": "The workGroup name.", - "pattern": "[a-zA-Z0-9._-]{1,128}", - "type": "string" - }, - "RecursiveDeleteOption": { - "description": "The option to delete the workgroup and its contents even if the workgroup contains any named queries.", - "type": "boolean" - }, - "State": { - "description": "The state of the workgroup: ENABLED or DISABLED.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/Tags", - "description": "One or more tags, separated by commas, that you want to attach to the workgroup as you create it" - }, - "WorkGroupConfiguration": { - "$ref": "#/definitions/WorkGroupConfiguration", - "description": "The workgroup configuration" - }, - "WorkGroupConfigurationUpdates": { - "$ref": "#/definitions/WorkGroupConfigurationUpdates", - "description": "The workgroup configuration update object" - } - }, - "readOnlyProperties": [ - "/properties/CreationTime", - "/properties/WorkGroupConfiguration/EngineVersion/EffectiveEngineVersion", - "/properties/WorkGroupConfigurationUpdates/EngineVersion/EffectiveEngineVersion" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-athena.git", - "taggable": true, - "typeName": "AWS::Athena::WorkGroup", - "writeOnlyProperties": [ - "/properties/WorkGroupConfigurationUpdates", - "/properties/RecursiveDeleteOption", - "/properties/WorkGroupConfiguration/AdditionalConfiguration" - ] -} +{ + "$comment": "Resource Schema for AWS::Athena::WorkGroup. Any changes made to SDK model for WorkGroup should be reflected here.", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "AclConfiguration": { + "additionalProperties": false, + "description": "Indicates that an Amazon S3 canned ACL should be set to control ownership of stored query results", + "properties": { + "S3AclOption": { + "$ref": "#/definitions/S3AclOption" + } + }, + "required": [ + "S3AclOption" + ], + "type": "object" + }, + "AdditionalConfiguration": { + "description": "Additional Configuration that are passed to Athena Spark Calculations running in this workgroup", + "type": "string" + }, + "BytesScannedCutoffPerQuery": { + "description": "The upper data usage limit (cutoff) for the amount of bytes a single query in a workgroup is allowed to scan.", + "format": "int64", + "minimum": 10000000, + "type": "integer" + }, + "CustomerContentEncryptionConfiguration": { + "additionalProperties": false, + "description": "Indicates the KMS key for encrypting notebook content.", + "properties": { + "KmsKey": { + "$ref": "#/definitions/KmsKey" + } + }, + "required": [ + "KmsKey" + ], + "type": "object" + }, + "EffectiveEngineVersion": { + "description": "Read only. The engine version on which the query runs. If the user requests a valid engine version other than Auto, the effective engine version is the same as the engine version that the user requested. If the user requests Auto, the effective engine version is chosen by Athena. When a request to update the engine version is made by a CreateWorkGroup or UpdateWorkGroup operation, the EffectiveEngineVersion field is ignored.", + "type": "string" + }, + "EncryptionConfiguration": { + "additionalProperties": false, + "description": "If query results are encrypted in Amazon S3, indicates the encryption option used (for example, SSE-KMS or CSE-KMS) and key information.", + "properties": { + "EncryptionOption": { + "$ref": "#/definitions/EncryptionOption" + }, + "KmsKey": { + "$ref": "#/definitions/KmsKey" + } + }, + "required": [ + "EncryptionOption" + ], + "type": "object" + }, + "EncryptionOption": { + "description": "Indicates whether Amazon S3 server-side encryption with Amazon S3-managed keys (SSE-S3), server-side encryption with KMS-managed keys (SSE-KMS), or client-side encryption with KMS-managed keys (CSE-KMS) is used.", + "enum": [ + "SSE_S3", + "SSE_KMS", + "CSE_KMS" + ], + "type": "string" + }, + "EnforceWorkGroupConfiguration": { + "description": "If set to \"true\", the settings for the workgroup override client-side settings. If set to \"false\", client-side settings are used", + "type": "boolean" + }, + "EngineVersion": { + "additionalProperties": false, + "description": "The Athena engine version for running queries.", + "properties": { + "EffectiveEngineVersion": { + "$ref": "#/definitions/EffectiveEngineVersion" + }, + "SelectedEngineVersion": { + "$ref": "#/definitions/SelectedEngineVersion" + } + }, + "type": "object" + }, + "ExecutionRole": { + "description": "Execution Role ARN required to run Athena Spark Calculations", + "type": "string" + }, + "ExpectedBucketOwner": { + "description": "The AWS account ID of the owner of S3 bucket where query results are stored", + "type": "string" + }, + "KmsKey": { + "description": "For SSE-KMS and CSE-KMS, this is the KMS key ARN or ID. ", + "type": "string" + }, + "OutputLocation": { + "description": "The location in Amazon S3 where your query results are stored, such as s3://path/to/query/bucket/. To run the query, you must specify the query results location using one of the ways: either for individual queries using either this setting (client-side), or in the workgroup, using WorkGroupConfiguration", + "type": "string" + }, + "PublishCloudWatchMetricsEnabled": { + "description": "Indicates that the Amazon CloudWatch metrics are enabled for the workgroup.", + "type": "boolean" + }, + "RemoveAclConfiguration": { + "type": "boolean" + }, + "RemoveBytesScannedCutoffPerQuery": { + "description": "Indicates that the data usage control limit per query is removed.", + "type": "boolean" + }, + "RemoveCustomerContentEncryptionConfiguration": { + "type": "boolean" + }, + "RemoveEncryptionConfiguration": { + "type": "boolean" + }, + "RemoveExpectedBucketOwner": { + "type": "boolean" + }, + "RemoveOutputLocation": { + "type": "boolean" + }, + "RequesterPaysEnabled": { + "description": "If set to true, allows members assigned to a workgroup to reference Amazon S3 Requester Pays buckets in queries. If set to false, workgroup members cannot query data from Requester Pays buckets, and queries that retrieve data from Requester Pays buckets cause an error. ", + "type": "boolean" + }, + "ResultConfiguration": { + "additionalProperties": false, + "description": "The location in Amazon S3 where query results are stored and the encryption option, if any, used for query results. These are known as \"client-side settings\". If workgroup settings override client-side settings, then the query uses the workgroup settings.\n", + "properties": { + "AclConfiguration": { + "$ref": "#/definitions/AclConfiguration" + }, + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration" + }, + "ExpectedBucketOwner": { + "$ref": "#/definitions/ExpectedBucketOwner" + }, + "OutputLocation": { + "$ref": "#/definitions/OutputLocation" + } + }, + "type": "object" + }, + "ResultConfigurationUpdates": { + "additionalProperties": false, + "description": "The result configuration information about the queries in this workgroup that will be updated. Includes the updated results location and an updated option for encrypting query results. ", + "properties": { + "AclConfiguration": { + "$ref": "#/definitions/AclConfiguration" + }, + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration" + }, + "ExpectedBucketOwner": { + "$ref": "#/definitions/ExpectedBucketOwner" + }, + "OutputLocation": { + "$ref": "#/definitions/OutputLocation" + }, + "RemoveAclConfiguration": { + "$ref": "#/definitions/RemoveAclConfiguration" + }, + "RemoveEncryptionConfiguration": { + "$ref": "#/definitions/RemoveEncryptionConfiguration" + }, + "RemoveExpectedBucketOwner": { + "$ref": "#/definitions/RemoveExpectedBucketOwner" + }, + "RemoveOutputLocation": { + "$ref": "#/definitions/RemoveOutputLocation" + } + }, + "type": "object" + }, + "S3AclOption": { + "description": "The Amazon S3 canned ACL that Athena should specify when storing query results. Currently the only supported canned ACL is BUCKET_OWNER_FULL_CONTROL", + "enum": [ + "BUCKET_OWNER_FULL_CONTROL" + ], + "type": "string" + }, + "SelectedEngineVersion": { + "description": "The engine version requested by the user. Possible values are determined by the output of ListEngineVersions, including Auto. The default is Auto.", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "WorkGroupConfiguration": { + "additionalProperties": false, + "properties": { + "AdditionalConfiguration": { + "$ref": "#/definitions/AdditionalConfiguration" + }, + "BytesScannedCutoffPerQuery": { + "$ref": "#/definitions/BytesScannedCutoffPerQuery" + }, + "CustomerContentEncryptionConfiguration": { + "$ref": "#/definitions/CustomerContentEncryptionConfiguration" + }, + "EnforceWorkGroupConfiguration": { + "$ref": "#/definitions/EnforceWorkGroupConfiguration" + }, + "EngineVersion": { + "$ref": "#/definitions/EngineVersion" + }, + "ExecutionRole": { + "$ref": "#/definitions/ExecutionRole" + }, + "PublishCloudWatchMetricsEnabled": { + "$ref": "#/definitions/PublishCloudWatchMetricsEnabled" + }, + "RequesterPaysEnabled": { + "$ref": "#/definitions/RequesterPaysEnabled" + }, + "ResultConfiguration": { + "$ref": "#/definitions/ResultConfiguration" + } + }, + "type": "object" + }, + "WorkGroupConfigurationUpdates": { + "additionalProperties": false, + "description": "The configuration information that will be updated for this workgroup, which includes the location in Amazon S3 where query results are stored, the encryption option, if any, used for query results, whether the Amazon CloudWatch Metrics are enabled for the workgroup, whether the workgroup settings override the client-side settings, and the data usage limit for the amount of bytes scanned per query, if it is specified. ", + "properties": { + "AdditionalConfiguration": { + "$ref": "#/definitions/AdditionalConfiguration" + }, + "BytesScannedCutoffPerQuery": { + "$ref": "#/definitions/BytesScannedCutoffPerQuery" + }, + "CustomerContentEncryptionConfiguration": { + "$ref": "#/definitions/CustomerContentEncryptionConfiguration" + }, + "EnforceWorkGroupConfiguration": { + "$ref": "#/definitions/EnforceWorkGroupConfiguration" + }, + "EngineVersion": { + "$ref": "#/definitions/EngineVersion" + }, + "ExecutionRole": { + "$ref": "#/definitions/ExecutionRole" + }, + "PublishCloudWatchMetricsEnabled": { + "$ref": "#/definitions/PublishCloudWatchMetricsEnabled" + }, + "RemoveBytesScannedCutoffPerQuery": { + "$ref": "#/definitions/RemoveBytesScannedCutoffPerQuery" + }, + "RemoveCustomerContentEncryptionConfiguration": { + "$ref": "#/definitions/RemoveCustomerContentEncryptionConfiguration" + }, + "RequesterPaysEnabled": { + "$ref": "#/definitions/RequesterPaysEnabled" + }, + "ResultConfigurationUpdates": { + "$ref": "#/definitions/ResultConfigurationUpdates" + } + }, + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/WorkGroupConfigurationUpdates" + ], + "description": "Resource schema for AWS::Athena::WorkGroup", + "handlers": { + "create": { + "permissions": [ + "athena:CreateWorkGroup", + "athena:TagResource", + "iam:PassRole", + "s3:GetBucketLocation", + "s3:GetObject", + "s3:ListBucket", + "s3:ListBucketMultipartUploads", + "s3:AbortMultipartUpload", + "s3:PutObject", + "s3:ListMultipartUploadParts", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + }, + "delete": { + "permissions": [ + "athena:DeleteWorkGroup", + "athena:GetWorkGroup", + "athena:UntagResource" + ] + }, + "list": { + "permissions": [ + "athena:ListWorkGroups" + ] + }, + "read": { + "permissions": [ + "athena:GetWorkGroup", + "athena:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "athena:UpdateWorkGroup", + "athena:TagResource", + "athena:UntagResource", + "iam:PassRole", + "s3:GetBucketLocation", + "s3:GetObject", + "s3:ListBucket", + "s3:ListBucketMultipartUploads", + "s3:AbortMultipartUpload", + "s3:PutObject", + "s3:ListMultipartUploadParts", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "CreationTime": { + "description": "The date and time the workgroup was created.", + "type": "string" + }, + "Description": { + "description": "The workgroup description.", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "Name": { + "description": "The workGroup name.", + "pattern": "[a-zA-Z0-9._-]{1,128}", + "type": "string" + }, + "RecursiveDeleteOption": { + "description": "The option to delete the workgroup and its contents even if the workgroup contains any named queries.", + "type": "boolean" + }, + "State": { + "description": "The state of the workgroup: ENABLED or DISABLED.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags", + "description": "One or more tags, separated by commas, that you want to attach to the workgroup as you create it" + }, + "WorkGroupConfiguration": { + "$ref": "#/definitions/WorkGroupConfiguration", + "description": "The workgroup configuration" + }, + "WorkGroupConfigurationUpdates": { + "$ref": "#/definitions/WorkGroupConfigurationUpdates", + "description": "The workgroup configuration update object" + } + }, + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/WorkGroupConfiguration/EngineVersion/EffectiveEngineVersion", + "/properties/WorkGroupConfigurationUpdates/EngineVersion/EffectiveEngineVersion" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-athena.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "athena:UntagResource", + "athena:TagResource", + "athena:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Athena::WorkGroup", + "writeOnlyProperties": [ + "/properties/WorkGroupConfigurationUpdates", + "/properties/RecursiveDeleteOption", + "/properties/WorkGroupConfiguration/AdditionalConfiguration" + ] +} diff --git a/src/schema/aws-auditmanager-assessment.json b/src/schema/aws-auditmanager-assessment.json index abb085d8..284d8158 100644 --- a/src/schema/aws-auditmanager-assessment.json +++ b/src/schema/aws-auditmanager-assessment.json @@ -1,385 +1,385 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FrameworkId", - "/properties/AwsAccount" - ], - "definitions": { - "AWSAccount": { - "additionalProperties": false, - "description": "The AWS account associated with the assessment.", - "properties": { - "EmailAddress": { - "$ref": "#/definitions/EmailAddress" - }, - "Id": { - "$ref": "#/definitions/AccountId" - }, - "Name": { - "$ref": "#/definitions/AccountName" - } - }, - "type": "object" - }, - "AWSService": { - "additionalProperties": false, - "description": "An AWS service such as Amazon S3, AWS CloudTrail, and so on.", - "properties": { - "ServiceName": { - "$ref": "#/definitions/AWSServiceName" - } - }, - "type": "object" - }, - "AWSServiceName": { - "description": "The name of the AWS service.", - "type": "string" - }, - "AccountId": { - "description": "The identifier for the specified AWS account.", - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "AccountName": { - "description": "The name of the specified AWS account.", - "maxLength": 50, - "minLength": 1, - "pattern": "^[\\u0020-\\u007E]+$", - "type": "string" - }, - "AssessmentArn": { - "description": "The Amazon Resource Name (ARN) of the assessment.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:.*:auditmanager:.*", - "type": "string" - }, - "AssessmentDescription": { - "description": "The description of the specified assessment.", - "type": "string" - }, - "AssessmentName": { - "description": "The name of the related assessment.", - "maxLength": 127, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-_\\.]+$", - "type": "string" - }, - "AssessmentReportDestinationType": { - "description": "The destination type, such as Amazon S3.", - "enum": [ - "S3" - ], - "type": "string" - }, - "AssessmentReportsDestination": { - "additionalProperties": false, - "description": "The destination in which evidence reports are stored for the specified assessment.", - "properties": { - "Destination": { - "$ref": "#/definitions/S3Url" - }, - "DestinationType": { - "$ref": "#/definitions/AssessmentReportDestinationType" - } - }, - "type": "object" - }, - "AssessmentStatus": { - "description": "The status of the specified assessment. ", - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "type": "string" - }, - "ControlSetId": { - "description": "The identifier for the specified control set.", - "maxLength": 300, - "minLength": 1, - "pattern": "^[\\w\\W\\s\\S]*$", - "type": "string" - }, - "CreatedBy": { - "description": "The IAM user or role that performed the action.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:.*:*:.*", - "type": "string" - }, - "Delegation": { - "additionalProperties": false, - "description": "The assignment of a control set to a delegate for review.", - "properties": { - "AssessmentId": { - "$ref": "#/definitions/UUID" - }, - "AssessmentName": { - "$ref": "#/definitions/AssessmentName" - }, - "Comment": { - "$ref": "#/definitions/DelegationComment" - }, - "ControlSetId": { - "$ref": "#/definitions/ControlSetId" - }, - "CreatedBy": { - "$ref": "#/definitions/CreatedBy" - }, - "CreationTime": { - "$ref": "#/definitions/Timestamp" - }, - "Id": { - "$ref": "#/definitions/UUID" - }, - "LastUpdated": { - "$ref": "#/definitions/Timestamp" - }, - "RoleArn": { - "$ref": "#/definitions/IamArn" - }, - "RoleType": { - "$ref": "#/definitions/RoleType" - }, - "Status": { - "$ref": "#/definitions/DelegationStatus" - } - }, - "type": "object" - }, - "DelegationComment": { - "description": "The comment related to the delegation.", - "maxLength": 350, - "pattern": "^[\\w\\W\\s\\S]*$", - "type": "string" - }, - "DelegationStatus": { - "description": "The status of the delegation.", - "enum": [ - "IN_PROGRESS", - "UNDER_REVIEW", - "COMPLETE" - ], - "type": "string" - }, - "EmailAddress": { - "description": "The unique identifier for the email account.", - "maxLength": 320, - "minLength": 1, - "pattern": "^.*@.*$", - "type": "string" - }, - "FrameworkId": { - "description": "The identifier for the specified framework.", - "maxLength": 36, - "minLength": 32, - "pattern": "^([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|.*\\S.*)$", - "type": "string" - }, - "IamArn": { - "description": "The Amazon Resource Name (ARN) of the IAM user or role.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:.*:iam:.*", - "type": "string" - }, - "Role": { - "additionalProperties": false, - "description": "The wrapper that contains AWS Audit Manager role information, such as the role type and IAM ARN.", - "properties": { - "RoleArn": { - "$ref": "#/definitions/IamArn" - }, - "RoleType": { - "$ref": "#/definitions/RoleType" - } - }, - "type": "object" - }, - "RoleType": { - "description": " The IAM role type.", - "enum": [ - "PROCESS_OWNER", - "RESOURCE_OWNER" - ], - "type": "string" - }, - "S3Url": { - "description": "The URL of the specified Amazon S3 bucket.", - "type": "string" - }, - "Scope": { - "additionalProperties": false, - "description": "The wrapper that contains the AWS accounts and AWS services in scope for the assessment.", - "properties": { - "AwsAccounts": { - "description": "The AWS accounts included in scope.", - "items": { - "$ref": "#/definitions/AWSAccount" - }, - "type": "array" - }, - "AwsServices": { - "description": "The AWS services included in scope.", - "items": { - "$ref": "#/definitions/AWSService" - }, - "type": "array" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Timestamp": { - "description": "The sequence of characters that identifies when the event occurred.", - "type": "number" - }, - "UUID": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", - "type": "string" - } - }, - "description": "An entity that defines the scope of audit evidence collected by AWS Audit Manager.", - "handlers": { - "create": { - "permissions": [ - "auditmanager:CreateAssessment", - "auditmanager:TagResource", - "auditmanager:ListTagsForResource", - "auditmanager:BatchCreateDelegationByAssessment", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "auditmanager:DeleteAssessment", - "auditmanager:UntagResource" - ] - }, - "list": { - "permissions": [ - "auditmanager:ListAssessments", - "auditmanager:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "auditmanager:GetAssessment" - ] - }, - "update": { - "permissions": [ - "auditmanager:UpdateAssessment", - "auditmanager:UpdateAssessmentStatus", - "auditmanager:BatchCreateDelegationByAssessment", - "auditmanager:BatchDeleteDelegationByAssessment" - ] - } - }, - "primaryIdentifier": [ - "/properties/AssessmentId" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/AssessmentArn" - }, - "AssessmentId": { - "$ref": "#/definitions/UUID" - }, - "AssessmentReportsDestination": { - "$ref": "#/definitions/AssessmentReportsDestination" - }, - "AwsAccount": { - "$ref": "#/definitions/AWSAccount" - }, - "CreationTime": { - "$ref": "#/definitions/Timestamp" - }, - "Delegations": { - "description": "The list of delegations.", - "items": { - "$ref": "#/definitions/Delegation" - }, - "type": "array" - }, - "Description": { - "$ref": "#/definitions/AssessmentDescription" - }, - "FrameworkId": { - "$ref": "#/definitions/FrameworkId" - }, - "Name": { - "$ref": "#/definitions/AssessmentName" - }, - "Roles": { - "description": "The list of roles for the specified assessment.", - "items": { - "$ref": "#/definitions/Role" - }, - "type": "array" - }, - "Scope": { - "$ref": "#/definitions/Scope" - }, - "Status": { - "$ref": "#/definitions/AssessmentStatus" - }, - "Tags": { - "description": "The tags associated with the assessment.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/AssessmentId", - "/properties/Arn", - "/properties/CreationTime" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "auditmanager:TagResource", - "auditmanager:ListTagsForResource", - "auditmanager:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::AuditManager::Assessment", - "writeOnlyProperties": [ - "/properties/Name", - "/properties/Description" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FrameworkId", + "/properties/AwsAccount" + ], + "definitions": { + "AWSAccount": { + "additionalProperties": false, + "description": "The AWS account associated with the assessment.", + "properties": { + "EmailAddress": { + "$ref": "#/definitions/EmailAddress" + }, + "Id": { + "$ref": "#/definitions/AccountId" + }, + "Name": { + "$ref": "#/definitions/AccountName" + } + }, + "type": "object" + }, + "AWSService": { + "additionalProperties": false, + "description": "An AWS service such as Amazon S3, AWS CloudTrail, and so on.", + "properties": { + "ServiceName": { + "$ref": "#/definitions/AWSServiceName" + } + }, + "type": "object" + }, + "AWSServiceName": { + "description": "The name of the AWS service.", + "type": "string" + }, + "AccountId": { + "description": "The identifier for the specified AWS account.", + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "AccountName": { + "description": "The name of the specified AWS account.", + "maxLength": 50, + "minLength": 1, + "pattern": "^[\\u0020-\\u007E]+$", + "type": "string" + }, + "AssessmentArn": { + "description": "The Amazon Resource Name (ARN) of the assessment.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:.*:auditmanager:.*", + "type": "string" + }, + "AssessmentDescription": { + "description": "The description of the specified assessment.", + "type": "string" + }, + "AssessmentName": { + "description": "The name of the related assessment.", + "maxLength": 127, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-_\\.]+$", + "type": "string" + }, + "AssessmentReportDestinationType": { + "description": "The destination type, such as Amazon S3.", + "enum": [ + "S3" + ], + "type": "string" + }, + "AssessmentReportsDestination": { + "additionalProperties": false, + "description": "The destination in which evidence reports are stored for the specified assessment.", + "properties": { + "Destination": { + "$ref": "#/definitions/S3Url" + }, + "DestinationType": { + "$ref": "#/definitions/AssessmentReportDestinationType" + } + }, + "type": "object" + }, + "AssessmentStatus": { + "description": "The status of the specified assessment. ", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "type": "string" + }, + "ControlSetId": { + "description": "The identifier for the specified control set.", + "maxLength": 300, + "minLength": 1, + "pattern": "^[\\w\\W\\s\\S]*$", + "type": "string" + }, + "CreatedBy": { + "description": "The IAM user or role that performed the action.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:.*:*:.*", + "type": "string" + }, + "Delegation": { + "additionalProperties": false, + "description": "The assignment of a control set to a delegate for review.", + "properties": { + "AssessmentId": { + "$ref": "#/definitions/UUID" + }, + "AssessmentName": { + "$ref": "#/definitions/AssessmentName" + }, + "Comment": { + "$ref": "#/definitions/DelegationComment" + }, + "ControlSetId": { + "$ref": "#/definitions/ControlSetId" + }, + "CreatedBy": { + "$ref": "#/definitions/CreatedBy" + }, + "CreationTime": { + "$ref": "#/definitions/Timestamp" + }, + "Id": { + "$ref": "#/definitions/UUID" + }, + "LastUpdated": { + "$ref": "#/definitions/Timestamp" + }, + "RoleArn": { + "$ref": "#/definitions/IamArn" + }, + "RoleType": { + "$ref": "#/definitions/RoleType" + }, + "Status": { + "$ref": "#/definitions/DelegationStatus" + } + }, + "type": "object" + }, + "DelegationComment": { + "description": "The comment related to the delegation.", + "maxLength": 350, + "pattern": "^[\\w\\W\\s\\S]*$", + "type": "string" + }, + "DelegationStatus": { + "description": "The status of the delegation.", + "enum": [ + "IN_PROGRESS", + "UNDER_REVIEW", + "COMPLETE" + ], + "type": "string" + }, + "EmailAddress": { + "description": "The unique identifier for the email account.", + "maxLength": 320, + "minLength": 1, + "pattern": "^.*@.*$", + "type": "string" + }, + "FrameworkId": { + "description": "The identifier for the specified framework.", + "maxLength": 36, + "minLength": 32, + "pattern": "^([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|.*\\S.*)$", + "type": "string" + }, + "IamArn": { + "description": "The Amazon Resource Name (ARN) of the IAM user or role.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:.*:iam:.*", + "type": "string" + }, + "Role": { + "additionalProperties": false, + "description": "The wrapper that contains AWS Audit Manager role information, such as the role type and IAM ARN.", + "properties": { + "RoleArn": { + "$ref": "#/definitions/IamArn" + }, + "RoleType": { + "$ref": "#/definitions/RoleType" + } + }, + "type": "object" + }, + "RoleType": { + "description": " The IAM role type.", + "enum": [ + "PROCESS_OWNER", + "RESOURCE_OWNER" + ], + "type": "string" + }, + "S3Url": { + "description": "The URL of the specified Amazon S3 bucket.", + "type": "string" + }, + "Scope": { + "additionalProperties": false, + "description": "The wrapper that contains the AWS accounts and AWS services in scope for the assessment.", + "properties": { + "AwsAccounts": { + "description": "The AWS accounts included in scope.", + "items": { + "$ref": "#/definitions/AWSAccount" + }, + "type": "array" + }, + "AwsServices": { + "description": "The AWS services included in scope.", + "items": { + "$ref": "#/definitions/AWSService" + }, + "type": "array" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Timestamp": { + "description": "The sequence of characters that identifies when the event occurred.", + "type": "number" + }, + "UUID": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + } + }, + "description": "An entity that defines the scope of audit evidence collected by AWS Audit Manager.", + "handlers": { + "create": { + "permissions": [ + "auditmanager:CreateAssessment", + "auditmanager:TagResource", + "auditmanager:ListTagsForResource", + "auditmanager:BatchCreateDelegationByAssessment", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "auditmanager:DeleteAssessment", + "auditmanager:UntagResource" + ] + }, + "list": { + "permissions": [ + "auditmanager:ListAssessments", + "auditmanager:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "auditmanager:GetAssessment" + ] + }, + "update": { + "permissions": [ + "auditmanager:UpdateAssessment", + "auditmanager:UpdateAssessmentStatus", + "auditmanager:BatchCreateDelegationByAssessment", + "auditmanager:BatchDeleteDelegationByAssessment" + ] + } + }, + "primaryIdentifier": [ + "/properties/AssessmentId" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/AssessmentArn" + }, + "AssessmentId": { + "$ref": "#/definitions/UUID" + }, + "AssessmentReportsDestination": { + "$ref": "#/definitions/AssessmentReportsDestination" + }, + "AwsAccount": { + "$ref": "#/definitions/AWSAccount" + }, + "CreationTime": { + "$ref": "#/definitions/Timestamp" + }, + "Delegations": { + "description": "The list of delegations.", + "items": { + "$ref": "#/definitions/Delegation" + }, + "type": "array" + }, + "Description": { + "$ref": "#/definitions/AssessmentDescription" + }, + "FrameworkId": { + "$ref": "#/definitions/FrameworkId" + }, + "Name": { + "$ref": "#/definitions/AssessmentName" + }, + "Roles": { + "description": "The list of roles for the specified assessment.", + "items": { + "$ref": "#/definitions/Role" + }, + "type": "array" + }, + "Scope": { + "$ref": "#/definitions/Scope" + }, + "Status": { + "$ref": "#/definitions/AssessmentStatus" + }, + "Tags": { + "description": "The tags associated with the assessment.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/AssessmentId", + "/properties/Arn", + "/properties/CreationTime" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "auditmanager:TagResource", + "auditmanager:ListTagsForResource", + "auditmanager:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::AuditManager::Assessment", + "writeOnlyProperties": [ + "/properties/Name", + "/properties/Description" + ] +} diff --git a/src/schema/aws-autoscaling-autoscalinggroup.json b/src/schema/aws-autoscaling-autoscalinggroup.json index 65980a6e..87dae38f 100644 --- a/src/schema/aws-autoscaling-autoscalinggroup.json +++ b/src/schema/aws-autoscaling-autoscalinggroup.json @@ -1,878 +1,1005 @@ -{ - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/LaunchConfigurationName", - "/properties/VPCZoneIdentifier", - "/properties/LaunchTemplate", - "/properties/MixedInstancesPolicy" - ], - "createOnlyProperties": [ - "/properties/InstanceId", - "/properties/AutoScalingGroupName" - ], - "definitions": { - "AcceleratorCountRequest": { - "additionalProperties": false, - "description": "``AcceleratorCountRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum number of accelerators for an instance type.", - "properties": { - "Max": { - "description": "The maximum value.", - "type": "integer" - }, - "Min": { - "description": "The minimum value.", - "type": "integer" - } - }, - "type": "object" - }, - "AcceleratorTotalMemoryMiBRequest": { - "additionalProperties": false, - "description": "``AcceleratorTotalMemoryMiBRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum total memory size for the accelerators for an instance type, in MiB.", - "properties": { - "Max": { - "description": "The memory maximum in MiB.", - "type": "integer" - }, - "Min": { - "description": "The memory minimum in MiB.", - "type": "integer" - } - }, - "type": "object" - }, - "AvailabilityZoneDistribution": { - "additionalProperties": false, - "description": "", - "properties": { - "CapacityDistributionStrategy": { - "enum": [ - "balanced-best-effort", - "balanced-only" - ], - "type": "string" - } - }, - "type": "object" - }, - "BaselineEbsBandwidthMbpsRequest": { - "additionalProperties": false, - "description": "``BaselineEbsBandwidthMbpsRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum baseline bandwidth performance for an instance type, in Mbps.", - "properties": { - "Max": { - "description": "The maximum value in Mbps.", - "type": "integer" - }, - "Min": { - "description": "The minimum value in Mbps.", - "type": "integer" - } - }, - "type": "object" - }, - "InstanceMaintenancePolicy": { - "additionalProperties": false, - "dependencies": { - "MaxHealthyPercentage": [ - "MinHealthyPercentage" - ], - "MinHealthyPercentage": [ - "MaxHealthyPercentage" - ] - }, - "description": "``InstanceMaintenancePolicy`` is a property of the [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource.\n For more information, see [Instance maintenance policies](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html) in the *Amazon EC2 Auto Scaling User Guide*.", - "properties": { - "MaxHealthyPercentage": { - "description": "Specifies the upper threshold as a percentage of the desired capacity of the Auto Scaling group. It represents the maximum percentage of the group that can be in service and healthy, or pending, to support your workload when replacing instances. Value range is 100 to 200. To clear a previously set value, specify a value of ``-1``.\n Both ``MinHealthyPercentage`` and ``MaxHealthyPercentage`` must be specified, and the difference between them cannot be greater than 100. A large range increases the number of instances that can be replaced at the same time.", - "type": "integer" - }, - "MinHealthyPercentage": { - "description": "Specifies the lower threshold as a percentage of the desired capacity of the Auto Scaling group. It represents the minimum percentage of the group to keep in service, healthy, and ready to use to support your workload when replacing instances. Value range is 0 to 100. To clear a previously set value, specify a value of ``-1``.", - "type": "integer" - } - }, - "type": "object" - }, - "InstanceRequirements": { - "additionalProperties": false, - "description": "The attributes for the instance types for a mixed instances policy. Amazon EC2 Auto Scaling uses your specified requirements to identify instance types. Then, it uses your On-Demand and Spot allocation strategies to launch instances from these instance types.\n When you specify multiple attributes, you get instance types that satisfy all of the specified attributes. If you specify multiple values for an attribute, you get instance types that satisfy any of the specified values.\n To limit the list of instance types from which Amazon EC2 Auto Scaling can identify matching instance types, you can use one of the following parameters, but not both in the same request:\n + ``AllowedInstanceTypes`` - The instance types to include in the list. All other instance types are ignored, even if they match your specified attributes.\n + ``ExcludedInstanceTypes`` - The instance types to exclude from the list, even if they match your specified attributes.\n \n You must specify ``VCpuCount`` and ``MemoryMiB``. All other attributes are optional. Any unspecified optional attribute is set to its default.\n For an example template, see [Configure Amazon EC2 Auto Scaling resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2-auto-scaling.html).\n For more information, see [Creating an Auto Scaling group using attribute-based instance type selection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-instance-type-requirements.html) in the *Amazon EC2 Auto Scaling User Guide*. For help determining which instance types match your attributes before you apply them to your Auto Scaling group, see [Preview instance types with specified attributes](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html#ec2fleet-get-instance-types-from-instance-requirements) in the *Amazon EC2 User Guide for Linux Instances*.\n ``InstanceRequirements`` is a property of the ``LaunchTemplateOverrides`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplate.html) property type.", - "properties": { - "AcceleratorCount": { - "$ref": "#/definitions/AcceleratorCountRequest", - "description": "The minimum and maximum number of accelerators (GPUs, FPGAs, or AWS Inferentia chips) for an instance type.\n To exclude accelerator-enabled instance types, set ``Max`` to ``0``.\n Default: No minimum or maximum limits" - }, - "AcceleratorManufacturers": { - "description": "Indicates whether instance types must have accelerators by specific manufacturers.\n + For instance types with NVIDIA devices, specify ``nvidia``.\n + For instance types with AMD devices, specify ``amd``.\n + For instance types with AWS devices, specify ``amazon-web-services``.\n + For instance types with Xilinx devices, specify ``xilinx``.\n \n Default: Any manufacturer", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "AcceleratorNames": { - "description": "Lists the accelerators that must be on an instance type.\n + For instance types with NVIDIA A100 GPUs, specify ``a100``.\n + For instance types with NVIDIA V100 GPUs, specify ``v100``.\n + For instance types with NVIDIA K80 GPUs, specify ``k80``.\n + For instance types with NVIDIA T4 GPUs, specify ``t4``.\n + For instance types with NVIDIA M60 GPUs, specify ``m60``.\n + For instance types with AMD Radeon Pro V520 GPUs, specify ``radeon-pro-v520``.\n + For instance types with Xilinx VU9P FPGAs, specify ``vu9p``.\n \n Default: Any accelerator", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "AcceleratorTotalMemoryMiB": { - "$ref": "#/definitions/AcceleratorTotalMemoryMiBRequest", - "description": "The minimum and maximum total memory size for the accelerators on an instance type, in MiB.\n Default: No minimum or maximum limits" - }, - "AcceleratorTypes": { - "description": "Lists the accelerator types that must be on an instance type.\n + For instance types with GPU accelerators, specify ``gpu``.\n + For instance types with FPGA accelerators, specify ``fpga``.\n + For instance types with inference accelerators, specify ``inference``.\n \n Default: Any accelerator type", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "AllowedInstanceTypes": { - "description": "The instance types to apply your specified attributes against. All other instance types are ignored, even if they match your specified attributes.\n You can use strings with one or more wild cards, represented by an asterisk (``*``), to allow an instance type, size, or generation. The following are examples: ``m5.8xlarge``, ``c5*.*``, ``m5a.*``, ``r*``, ``*3*``.\n For example, if you specify ``c5*``, Amazon EC2 Auto Scaling will allow the entire C5 instance family, which includes all C5a and C5n instance types. If you specify ``m5a.*``, Amazon EC2 Auto Scaling will allow all the M5a instance types, but not the M5n instance types.\n If you specify ``AllowedInstanceTypes``, you can't specify ``ExcludedInstanceTypes``.\n Default: All instance types", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "BareMetal": { - "description": "Indicates whether bare metal instance types are included, excluded, or required.\n Default: ``excluded``", - "type": "string" - }, - "BaselineEbsBandwidthMbps": { - "$ref": "#/definitions/BaselineEbsBandwidthMbpsRequest", - "description": "The minimum and maximum baseline bandwidth performance for an instance type, in Mbps. For more information, see [Amazon EBS\u2013optimized instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) in the *Amazon EC2 User Guide for Linux Instances*.\n Default: No minimum or maximum limits" - }, - "BurstablePerformance": { - "description": "Indicates whether burstable performance instance types are included, excluded, or required. For more information, see [Burstable performance instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html) in the *Amazon EC2 User Guide for Linux Instances*.\n Default: ``excluded``", - "type": "string" - }, - "CpuManufacturers": { - "description": "Lists which specific CPU manufacturers to include.\n + For instance types with Intel CPUs, specify ``intel``.\n + For instance types with AMD CPUs, specify ``amd``.\n + For instance types with AWS CPUs, specify ``amazon-web-services``.\n \n Don't confuse the CPU hardware manufacturer with the CPU hardware architecture. Instances will be launched with a compatible CPU architecture based on the Amazon Machine Image (AMI) that you specify in your launch template. \n Default: Any manufacturer", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "ExcludedInstanceTypes": { - "description": "The instance types to exclude. You can use strings with one or more wild cards, represented by an asterisk (``*``), to exclude an instance family, type, size, or generation. The following are examples: ``m5.8xlarge``, ``c5*.*``, ``m5a.*``, ``r*``, ``*3*``. \n For example, if you specify ``c5*``, you are excluding the entire C5 instance family, which includes all C5a and C5n instance types. If you specify ``m5a.*``, Amazon EC2 Auto Scaling will exclude all the M5a instance types, but not the M5n instance types.\n If you specify ``ExcludedInstanceTypes``, you can't specify ``AllowedInstanceTypes``.\n Default: No excluded instance types", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "InstanceGenerations": { - "description": "Indicates whether current or previous generation instance types are included.\n + For current generation instance types, specify ``current``. The current generation includes EC2 instance types currently recommended for use. This typically includes the latest two to three generations in each instance family. For more information, see [Instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide for Linux Instances*.\n + For previous generation instance types, specify ``previous``.\n \n Default: Any current or previous generation", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "LocalStorage": { - "description": "Indicates whether instance types with instance store volumes are included, excluded, or required. For more information, see [Amazon EC2 instance store](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html) in the *Amazon EC2 User Guide for Linux Instances*.\n Default: ``included``", - "type": "string" - }, - "LocalStorageTypes": { - "description": "Indicates the type of local storage that is required.\n + For instance types with hard disk drive (HDD) storage, specify ``hdd``.\n + For instance types with solid state drive (SSD) storage, specify ``ssd``.\n \n Default: Any local storage type", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": { - "description": "[Price protection] The price protection threshold for Spot Instances, as a percentage of an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from either the lowest priced current generation instance types or, failing that, the lowest priced previous generation instance types that match your attributes. When Amazon EC2 Auto Scaling selects instance types with your attributes, we will exclude instance types whose price exceeds your specified threshold.\n The parameter accepts an integer, which Amazon EC2 Auto Scaling interprets as a percentage.\n If you set ``DesiredCapacityType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is based on the per-vCPU or per-memory price instead of the per instance price. \n Only one of ``SpotMaxPricePercentageOverLowestPrice`` or ``MaxSpotPriceAsPercentageOfOptimalOnDemandPrice`` can be specified. If you don't specify either, Amazon EC2 Auto Scaling will automatically apply optimal price protection to consistently select from a wide range of instance types. To indicate no price protection threshold for Spot Instances, meaning you want to consider all instance types that match your attributes, include one of these parameters and specify a high value, such as ``999999``.", - "type": "integer" - }, - "MemoryGiBPerVCpu": { - "$ref": "#/definitions/MemoryGiBPerVCpuRequest", - "description": "The minimum and maximum amount of memory per vCPU for an instance type, in GiB.\n Default: No minimum or maximum limits" - }, - "MemoryMiB": { - "$ref": "#/definitions/MemoryMiBRequest", - "description": "The minimum and maximum instance memory size for an instance type, in MiB." - }, - "NetworkBandwidthGbps": { - "$ref": "#/definitions/NetworkBandwidthGbpsRequest", - "description": "The minimum and maximum amount of network bandwidth, in gigabits per second (Gbps).\n Default: No minimum or maximum limits" - }, - "NetworkInterfaceCount": { - "$ref": "#/definitions/NetworkInterfaceCountRequest", - "description": "The minimum and maximum number of network interfaces for an instance type.\n Default: No minimum or maximum limits" - }, - "OnDemandMaxPricePercentageOverLowestPrice": { - "description": "[Price protection] The price protection threshold for On-Demand Instances, as a percentage higher than an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from either the lowest priced current generation instance types or, failing that, the lowest priced previous generation instance types that match your attributes. When Amazon EC2 Auto Scaling selects instance types with your attributes, we will exclude instance types whose price exceeds your specified threshold. \n The parameter accepts an integer, which Amazon EC2 Auto Scaling interprets as a percentage.\n To turn off price protection, specify a high value, such as ``999999``. \n If you set ``DesiredCapacityType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per instance price. \n Default: ``20``", - "type": "integer" - }, - "RequireHibernateSupport": { - "description": "Indicates whether instance types must provide On-Demand Instance hibernation support.\n Default: ``false``", - "type": "boolean" - }, - "SpotMaxPricePercentageOverLowestPrice": { - "description": "[Price protection] The price protection threshold for Spot Instances, as a percentage higher than an identified Spot price. The identified Spot price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from either the lowest priced current generation instance types or, failing that, the lowest priced previous generation instance types that match your attributes. When Amazon EC2 Auto Scaling selects instance types with your attributes, we will exclude instance types whose price exceeds your specified threshold.\n The parameter accepts an integer, which Amazon EC2 Auto Scaling interprets as a percentage. \n If you set ``DesiredCapacityType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is based on the per-vCPU or per-memory price instead of the per instance price. \n Only one of ``SpotMaxPricePercentageOverLowestPrice`` or ``MaxSpotPriceAsPercentageOfOptimalOnDemandPrice`` can be specified. If you don't specify either, Amazon EC2 Auto Scaling will automatically apply optimal price protection to consistently select from a wide range of instance types. To indicate no price protection threshold for Spot Instances, meaning you want to consider all instance types that match your attributes, include one of these parameters and specify a high value, such as ``999999``.", - "type": "integer" - }, - "TotalLocalStorageGB": { - "$ref": "#/definitions/TotalLocalStorageGBRequest", - "description": "The minimum and maximum total local storage size for an instance type, in GB.\n Default: No minimum or maximum limits" - }, - "VCpuCount": { - "$ref": "#/definitions/VCpuCountRequest", - "description": "The minimum and maximum number of vCPUs for an instance type." - } - }, - "required": [ - "MemoryMiB", - "VCpuCount" - ], - "type": "object" - }, - "InstancesDistribution": { - "additionalProperties": false, - "description": "Use this structure to specify the distribution of On-Demand Instances and Spot Instances and the allocation strategies used to fulfill On-Demand and Spot capacities for a mixed instances policy.\n For more information, see [Auto Scaling groups with multiple instance types and purchase options](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html) in the *Amazon EC2 Auto Scaling User Guide*.\n ``InstancesDistribution`` is a property of the [AWS::AutoScaling::AutoScalingGroup MixedInstancesPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-mixedinstancespolicy.html) property type.", - "properties": { - "OnDemandAllocationStrategy": { - "description": "The allocation strategy to apply to your On-Demand Instances when they are launched. Possible instance types are determined by the launch template overrides that you specify.\n The following lists the valid values:\n + lowest-price Uses price to determine which instance types are the highest priority, launching the lowest priced instance types within an Availability Zone first. This is the default value for Auto Scaling groups that specify InstanceRequirements. + prioritized You set the order of instance types for the launch template overrides from highest to lowest priority (from first to last in the list). Amazon EC2 Auto Scaling launches your highest priority instance types first. If all your On-Demand capacity cannot be fulfilled using your highest priority instance type, then Amazon EC2 Auto Scaling launches the remaining capacity using the second priority instance type, and so on. This is the default value for Auto Scaling groups that don't specify InstanceRequirements and cannot be used for groups that do.", - "type": "string" - }, - "OnDemandBaseCapacity": { - "description": "The minimum amount of the Auto Scaling group's capacity that must be fulfilled by On-Demand Instances. This base portion is launched first as your group scales.\n This number has the same unit of measurement as the group's desired capacity. If you change the default unit of measurement (number of instances) by specifying weighted capacity values in your launch template overrides list, or by changing the default desired capacity type setting of the group, you must specify this number using the same unit of measurement.\n Default: 0\n An update to this setting means a gradual replacement of instances to adjust the current On-Demand Instance levels. When replacing instances, Amazon EC2 Auto Scaling launches new instances before terminating the previous ones.", - "type": "integer" - }, - "OnDemandPercentageAboveBaseCapacity": { - "description": "Controls the percentages of On-Demand Instances and Spot Instances for your additional capacity beyond ``OnDemandBaseCapacity``. Expressed as a number (for example, 20 specifies 20% On-Demand Instances, 80% Spot Instances). If set to 100, only On-Demand Instances are used.\n Default: 100\n An update to this setting means a gradual replacement of instances to adjust the current On-Demand and Spot Instance levels for your additional capacity higher than the base capacity. When replacing instances, Amazon EC2 Auto Scaling launches new instances before terminating the previous ones.", - "type": "integer" - }, - "SpotAllocationStrategy": { - "description": "The allocation strategy to apply to your Spot Instances when they are launched. Possible instance types are determined by the launch template overrides that you specify.\n The following lists the valid values:\n + capacity-optimized Requests Spot Instances using pools that are optimally chosen based on the available Spot capacity. This strategy has the lowest risk of interruption. To give certain instance types a higher chance of launching first, use capacity-optimized-prioritized. + capacity-optimized-prioritized You set the order of instance types for the launch template overrides from highest to lowest priority (from first to last in the list). Amazon EC2 Auto Scaling honors the instance type priorities on a best effort basis but optimizes for capacity first. Note that if the On-Demand allocation strategy is set to prioritized, the same priority is applied when fulfilling On-Demand capacity. This is not a valid value for Auto Scaling groups that specify InstanceRequirements. + lowest-price Requests Spot Instances using the lowest priced pools within an Availability Zone, across the number of Spot pools that you specify for the SpotInstancePools property. To ensure that your desired capacity is met, you might receive Spot Instances from several pools. This is the default value, but it might lead to high interruption rates because this strategy only considers instance price and not available capacity. + price-capacity-optimized (recommended) The price and capacity optimized allocation strategy looks at both price and capacity to select the Spot Instance pools that are the least likely to be interrupted and have the lowest possible price.", - "type": "string" - }, - "SpotInstancePools": { - "description": "The number of Spot Instance pools across which to allocate your Spot Instances. The Spot pools are determined from the different instance types in the overrides. Valid only when the ``SpotAllocationStrategy`` is ``lowest-price``. Value must be in the range of 1\u201320.\n Default: 2", - "type": "integer" - }, - "SpotMaxPrice": { - "description": "The maximum price per unit hour that you are willing to pay for a Spot Instance. If your maximum price is lower than the Spot price for the instance types that you selected, your Spot Instances are not launched. We do not recommend specifying a maximum price because it can lead to increased interruptions. When Spot Instances launch, you pay the current Spot price. To remove a maximum price that you previously set, include the property but specify an empty string (\"\") for the value.\n If you specify a maximum price, your instances will be interrupted more frequently than if you do not specify one.\n Valid Range: Minimum value of 0.001", - "type": "string" - } - }, - "type": "object" - }, - "LaunchTemplate": { - "additionalProperties": false, - "description": "Use this structure to specify the launch templates and instance types (overrides) for a mixed instances policy.\n ``LaunchTemplate`` is a property of the [AWS::AutoScaling::AutoScalingGroup MixedInstancesPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-mixedinstancespolicy.html) property type.", - "properties": { - "LaunchTemplateSpecification": { - "$ref": "#/definitions/LaunchTemplateSpecification", - "description": "The launch template." - }, - "Overrides": { - "description": "Any properties that you specify override the same properties in the launch template.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/LaunchTemplateOverrides" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "LaunchTemplateSpecification" - ], - "type": "object" - }, - "LaunchTemplateOverrides": { - "additionalProperties": false, - "description": "Use this structure to let Amazon EC2 Auto Scaling do the following when the Auto Scaling group has a mixed instances policy:\n + Override the instance type that is specified in the launch template.\n + Use multiple instance types.\n \n Specify the instance types that you want, or define your instance requirements instead and let Amazon EC2 Auto Scaling provision the available instance types that meet your requirements. This can provide Amazon EC2 Auto Scaling with a larger selection of instance types to choose from when fulfilling Spot and On-Demand capacities. You can view which instance types are matched before you apply the instance requirements to your Auto Scaling group.\n After you define your instance requirements, you don't have to keep updating these settings to get new EC2 instance types automatically. Amazon EC2 Auto Scaling uses the instance requirements of the Auto Scaling group to determine whether a new EC2 instance type can be used.\n ``LaunchTemplateOverrides`` is a property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplate.html) property type.", - "properties": { - "InstanceRequirements": { - "$ref": "#/definitions/InstanceRequirements", - "description": "The instance requirements. Amazon EC2 Auto Scaling uses your specified requirements to identify instance types. Then, it uses your On-Demand and Spot allocation strategies to launch instances from these instance types.\n You can specify up to four separate sets of instance requirements per Auto Scaling group. This is useful for provisioning instances from different Amazon Machine Images (AMIs) in the same Auto Scaling group. To do this, create the AMIs and create a new launch template for each AMI. Then, create a compatible set of instance requirements for each launch template. \n If you specify ``InstanceRequirements``, you can't specify ``InstanceType``." - }, - "InstanceType": { - "description": "The instance type, such as ``m3.xlarge``. You must specify an instance type that is supported in your requested Region and Availability Zones. For more information, see [Instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide for Linux Instances*.\n You can specify up to 40 instance types per Auto Scaling group.", - "type": "string" - }, - "LaunchTemplateSpecification": { - "$ref": "#/definitions/LaunchTemplateSpecification", - "description": "Provides a launch template for the specified instance type or set of instance requirements. For example, some instance types might require a launch template with a different AMI. If not provided, Amazon EC2 Auto Scaling uses the launch template that's specified in the ``LaunchTemplate`` definition. For more information, see [Specifying a different launch template for an instance type](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups-launch-template-overrides.html) in the *Amazon EC2 Auto Scaling User Guide*. \n You can specify up to 20 launch templates per Auto Scaling group. The launch templates specified in the overrides and in the ``LaunchTemplate`` definition count towards this limit." - }, - "WeightedCapacity": { - "description": "If you provide a list of instance types to use, you can specify the number of capacity units provided by each instance type in terms of virtual CPUs, memory, storage, throughput, or other relative performance characteristic. When a Spot or On-Demand Instance is launched, the capacity units count toward the desired capacity. Amazon EC2 Auto Scaling launches instances until the desired capacity is totally fulfilled, even if this results in an overage. For example, if there are two units remaining to fulfill capacity, and Amazon EC2 Auto Scaling can only launch an instance with a ``WeightedCapacity`` of five units, the instance is launched, and the desired capacity is exceeded by three units. For more information, see [Configure instance weighting for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups-instance-weighting.html) in the *Amazon EC2 Auto Scaling User Guide*. Value must be in the range of 1-999. \n If you specify a value for ``WeightedCapacity`` for one instance type, you must specify a value for ``WeightedCapacity`` for all of them.\n Every Auto Scaling group has three size parameters (``DesiredCapacity``, ``MaxSize``, and ``MinSize``). Usually, you set these sizes based on a specific number of instances. However, if you configure a mixed instances policy that defines weights for the instance types, you must specify these sizes with the same units that you use for weighting instances.", - "type": "string" - } - }, - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "description": "Specifies a launch template to use when provisioning EC2 instances for an Auto Scaling group.\n You must specify the following:\n + The ID or the name of the launch template, but not both.\n + The version of the launch template.\n \n ``LaunchTemplateSpecification`` is property of the [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource. It is also a property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplate.html) and [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property types.\n For information about creating a launch template, see [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html) and [Create a launch template for an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) in the *Amazon EC2 Auto Scaling User Guide*.\n For examples of launch templates, see [Create launch templates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2-launch-templates.html).", - "properties": { - "LaunchTemplateId": { - "description": "The ID of the launch template.\n You must specify the ``LaunchTemplateID`` or the ``LaunchTemplateName``, but not both.", - "type": "string" - }, - "LaunchTemplateName": { - "description": "The name of the launch template.\n You must specify the ``LaunchTemplateName`` or the ``LaunchTemplateID``, but not both.", - "type": "string" - }, - "Version": { - "description": "The version number of the launch template.\n Specifying ``$Latest`` or ``$Default`` for the template version number is not supported. However, you can specify ``LatestVersionNumber`` or ``DefaultVersionNumber`` using the ``Fn::GetAtt`` intrinsic function. For more information, see [Fn::GetAtt](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html).\n For an example of using the ``Fn::GetAtt`` function, see the [Examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#aws-resource-autoscaling-autoscalinggroup--examples) section of the ``AWS::AutoScaling::AutoScalingGroup`` resource.", - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LifecycleHookSpecification": { - "additionalProperties": false, - "description": "``LifecycleHookSpecification`` specifies a lifecycle hook for the ``LifecycleHookSpecificationList`` property of the [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource. A lifecycle hook specifies actions to perform when Amazon EC2 Auto Scaling launches or terminates instances. \n For more information, see [Amazon EC2 Auto Scaling lifecycle hooks](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html) in the *Amazon EC2 Auto Scaling User Guide*. You can find a sample template snippet in the [Examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html#aws-resource-as-lifecyclehook--examples) section of the ``AWS::AutoScaling::LifecycleHook`` resource.", - "properties": { - "DefaultResult": { - "description": "The action the Auto Scaling group takes when the lifecycle hook timeout elapses or if an unexpected failure occurs. The default value is ``ABANDON``.\n Valid values: ``CONTINUE`` | ``ABANDON``", - "type": "string" - }, - "HeartbeatTimeout": { - "description": "The maximum time, in seconds, that can elapse before the lifecycle hook times out. The range is from ``30`` to ``7200`` seconds. The default value is ``3600`` seconds (1 hour).", - "type": "integer" - }, - "LifecycleHookName": { - "description": "The name of the lifecycle hook.", - "type": "string" - }, - "LifecycleTransition": { - "description": "The lifecycle transition. For Auto Scaling groups, there are two major lifecycle transitions.\n + To create a lifecycle hook for scale-out events, specify ``autoscaling:EC2_INSTANCE_LAUNCHING``.\n + To create a lifecycle hook for scale-in events, specify ``autoscaling:EC2_INSTANCE_TERMINATING``.", - "type": "string" - }, - "NotificationMetadata": { - "description": "Additional information that you want to include any time Amazon EC2 Auto Scaling sends a message to the notification target.", - "type": "string" - }, - "NotificationTargetARN": { - "description": "The Amazon Resource Name (ARN) of the notification target that Amazon EC2 Auto Scaling sends notifications to when an instance is in a wait state for the lifecycle hook. You can specify an Amazon SNS topic or an Amazon SQS queue.", - "type": "string" - }, - "RoleARN": { - "description": "The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target. For information about creating this role, see [Prepare to add a lifecycle hook to your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/prepare-for-lifecycle-notifications.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Valid only if the notification target is an Amazon SNS topic or an Amazon SQS queue.", - "type": "string" - } - }, - "required": [ - "LifecycleHookName", - "LifecycleTransition" - ], - "type": "object" - }, - "MemoryGiBPerVCpuRequest": { - "additionalProperties": false, - "description": "``MemoryGiBPerVCpuRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum amount of memory per vCPU for an instance type, in GiB.", - "properties": { - "Max": { - "description": "The memory maximum in GiB.", - "type": "number" - }, - "Min": { - "description": "The memory minimum in GiB.", - "type": "number" - } - }, - "type": "object" - }, - "MemoryMiBRequest": { - "additionalProperties": false, - "description": "``MemoryMiBRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum instance memory size for an instance type, in MiB.", - "properties": { - "Max": { - "description": "The memory maximum in MiB.", - "type": "integer" - }, - "Min": { - "description": "The memory minimum in MiB.", - "type": "integer" - } - }, - "type": "object" - }, - "MetricsCollection": { - "additionalProperties": false, - "description": "``MetricsCollection`` is a property of the [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource that describes the group metrics that an Amazon EC2 Auto Scaling group sends to Amazon CloudWatch. These metrics describe the group rather than any of its instances. \n For more information, see [Monitor CloudWatch metrics for your Auto Scaling groups and instances](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-monitoring.html) in the *Amazon EC2 Auto Scaling User Guide*. You can find a sample template snippet in the [Examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#aws-resource-autoscaling-autoscalinggroup--examples) section of the ``AWS::AutoScaling::AutoScalingGroup`` resource.", - "properties": { - "Granularity": { - "description": "The frequency at which Amazon EC2 Auto Scaling sends aggregated data to CloudWatch. The only valid value is ``1Minute``.", - "type": "string" - }, - "Metrics": { - "description": "Identifies the metrics to enable.\n You can specify one or more of the following metrics:\n + ``GroupMinSize`` \n + ``GroupMaxSize`` \n + ``GroupDesiredCapacity`` \n + ``GroupInServiceInstances`` \n + ``GroupPendingInstances`` \n + ``GroupStandbyInstances`` \n + ``GroupTerminatingInstances`` \n + ``GroupTotalInstances`` \n + ``GroupInServiceCapacity`` \n + ``GroupPendingCapacity`` \n + ``GroupStandbyCapacity`` \n + ``GroupTerminatingCapacity`` \n + ``GroupTotalCapacity`` \n + ``WarmPoolDesiredCapacity`` \n + ``WarmPoolWarmedCapacity`` \n + ``WarmPoolPendingCapacity`` \n + ``WarmPoolTerminatingCapacity`` \n + ``WarmPoolTotalCapacity`` \n + ``GroupAndWarmPoolDesiredCapacity`` \n + ``GroupAndWarmPoolTotalCapacity`` \n \n If you specify ``Granularity`` and don't specify any metrics, all metrics are enabled.\n For more information, see [Amazon CloudWatch metrics for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-metrics.html) in the *Amazon EC2 Auto Scaling User Guide*.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Granularity" - ], - "type": "object" - }, - "MixedInstancesPolicy": { - "additionalProperties": false, - "description": "Use this structure to launch multiple instance types and On-Demand Instances and Spot Instances within a single Auto Scaling group.\n A mixed instances policy contains information that Amazon EC2 Auto Scaling can use to launch instances and help optimize your costs. For more information, see [Auto Scaling groups with multiple instance types and purchase options](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html) in the *Amazon EC2 Auto Scaling User Guide*.\n You can create a mixed instances policy for new and existing Auto Scaling groups. You must use a launch template to configure the policy. You cannot use a launch configuration.\n There are key differences between Spot Instances and On-Demand Instances:\n + The price for Spot Instances varies based on demand\n + Amazon EC2 can terminate an individual Spot Instance as the availability of, or price for, Spot Instances changes\n \n When a Spot Instance is terminated, Amazon EC2 Auto Scaling group attempts to launch a replacement instance to maintain the desired capacity for the group. \n ``MixedInstancesPolicy`` is a property of the [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource.", - "properties": { - "InstancesDistribution": { - "$ref": "#/definitions/InstancesDistribution", - "description": "The instances distribution." - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplate", - "description": "One or more launch templates and the instance types (overrides) that are used to launch EC2 instances to fulfill On-Demand and Spot capacities." - } - }, - "required": [ - "LaunchTemplate" - ], - "type": "object" - }, - "NetworkBandwidthGbpsRequest": { - "additionalProperties": false, - "description": "``NetworkBandwidthGbpsRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum network bandwidth for an instance type, in Gbps.\n Setting the minimum bandwidth does not guarantee that your instance will achieve the minimum bandwidth. Amazon EC2 will identify instance types that support the specified minimum bandwidth, but the actual bandwidth of your instance might go below the specified minimum at times. For more information, see [Available instance bandwidth](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html#available-instance-bandwidth) in the *Amazon EC2 User Guide for Linux Instances*.", - "properties": { - "Max": { - "description": "The maximum amount of network bandwidth, in gigabits per second (Gbps).", - "type": "number" - }, - "Min": { - "description": "The minimum amount of network bandwidth, in gigabits per second (Gbps).", - "type": "number" - } - }, - "type": "object" - }, - "NetworkInterfaceCountRequest": { - "additionalProperties": false, - "description": "``NetworkInterfaceCountRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum number of network interfaces for an instance type.", - "properties": { - "Max": { - "description": "The maximum number of network interfaces.", - "type": "integer" - }, - "Min": { - "description": "The minimum number of network interfaces.", - "type": "integer" - } - }, - "type": "object" - }, - "NotificationConfiguration": { - "additionalProperties": false, - "description": "A structure that specifies an Amazon SNS notification configuration for the ``NotificationConfigurations`` property of the [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource.\n For an example template snippet, see [Configure Amazon EC2 Auto Scaling resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2-auto-scaling.html).\n For more information, see [Get Amazon SNS notifications when your Auto Scaling group scales](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ASGettingNotifications.html) in the *Amazon EC2 Auto Scaling User Guide*.", - "properties": { - "NotificationTypes": { - "description": "A list of event types that send a notification. Event types can include any of the following types. \n *Allowed values*:\n + ``autoscaling:EC2_INSTANCE_LAUNCH`` \n + ``autoscaling:EC2_INSTANCE_LAUNCH_ERROR`` \n + ``autoscaling:EC2_INSTANCE_TERMINATE`` \n + ``autoscaling:EC2_INSTANCE_TERMINATE_ERROR`` \n + ``autoscaling:TEST_NOTIFICATION``", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "TopicARN": { - "description": "The Amazon Resource Name (ARN) of the Amazon SNS topic.", - "items": { - "type": "string" - }, - "type": [ - "string", - "array" - ] - } - }, - "required": [ - "TopicARN" - ], - "type": "object" - }, - "TagProperty": { - "additionalProperties": false, - "description": "A structure that specifies a tag for the ``Tags`` property of [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource.\n For more information, see [Tag Auto Scaling groups and instances](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-tagging.html) in the *Amazon EC2 Auto Scaling User Guide*. You can find a sample template snippet in the [Examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#aws-resource-autoscaling-autoscalinggroup--examples) section of the ``AWS::AutoScaling::AutoScalingGroup`` resource.\n CloudFormation adds the following tags to all Auto Scaling groups and associated instances: \n + aws:cloudformation:stack-name\n + aws:cloudformation:stack-id\n + aws:cloudformation:logical-id", - "properties": { - "Key": { - "description": "The tag key.", - "type": "string" - }, - "PropagateAtLaunch": { - "description": "Set to ``true`` if you want CloudFormation to copy the tag to EC2 instances that are launched as part of the Auto Scaling group. Set to ``false`` if you want the tag attached only to the Auto Scaling group and not copied to any instances launched as part of the Auto Scaling group.", - "type": "boolean" - }, - "Value": { - "description": "The tag value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key", - "PropagateAtLaunch" - ], - "type": "object" - }, - "TotalLocalStorageGBRequest": { - "additionalProperties": false, - "description": "``TotalLocalStorageGBRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum total local storage size for an instance type, in GB.", - "properties": { - "Max": { - "description": "The storage maximum in GB.", - "type": "number" - }, - "Min": { - "description": "The storage minimum in GB.", - "type": "number" - } - }, - "type": "object" - }, - "TrafficSourceIdentifier": { - "additionalProperties": false, - "description": "Identifying information for a traffic source.", - "properties": { - "Identifier": { - "description": "Identifies the traffic source.\n For Application Load Balancers, Gateway Load Balancers, Network Load Balancers, and VPC Lattice, this will be the Amazon Resource Name (ARN) for a target group in this account and Region. For Classic Load Balancers, this will be the name of the Classic Load Balancer in this account and Region.\n For example: \n + Application Load Balancer ARN: ``arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/1234567890123456`` \n + Classic Load Balancer name: ``my-classic-load-balancer`` \n + VPC Lattice ARN: ``arn:aws:vpc-lattice:us-west-2:123456789012:targetgroup/tg-1234567890123456`` \n \n To get the ARN of a target group for a Application Load Balancer, Gateway Load Balancer, or Network Load Balancer, or the name of a Classic Load Balancer, use the Elastic Load Balancing [DescribeTargetGroups](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeTargetGroups.html) and [DescribeLoadBalancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeLoadBalancers.html) API operations.\n To get the ARN of a target group for VPC Lattice, use the VPC Lattice [GetTargetGroup](https://docs.aws.amazon.com/vpc-lattice/latest/APIReference/API_GetTargetGroup.html) API operation.", - "type": "string" - }, - "Type": { - "description": "Provides additional context for the value of ``Identifier``.\n The following lists the valid values:\n + ``elb`` if ``Identifier`` is the name of a Classic Load Balancer.\n + ``elbv2`` if ``Identifier`` is the ARN of an Application Load Balancer, Gateway Load Balancer, or Network Load Balancer target group.\n + ``vpc-lattice`` if ``Identifier`` is the ARN of a VPC Lattice target group.\n \n Required if the identifier is the name of a Classic Load Balancer.", - "type": "string" - } - }, - "required": [ - "Identifier", - "Type" - ], - "type": "object" - }, - "VCpuCountRequest": { - "additionalProperties": false, - "description": "``VCpuCountRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum number of vCPUs for an instance type.", - "properties": { - "Max": { - "description": "The maximum number of vCPUs.", - "type": "integer" - }, - "Min": { - "description": "The minimum number of vCPUs.", - "type": "integer" - } - }, - "type": "object" - } - }, - "deprecatedProperties": [ - "/properties/NotificationConfiguration" - ], - "description": "The ``AWS::AutoScaling::AutoScalingGroup`` resource defines an Amazon EC2 Auto Scaling group, which is a collection of Amazon EC2 instances that are treated as a logical grouping for the purposes of automatic scaling and management. \n For more information about Amazon EC2 Auto Scaling, see the [Amazon EC2 Auto Scaling User Guide](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html). \n Amazon EC2 Auto Scaling configures instances launched as part of an Auto Scaling group using either a [launch template](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html) or a launch configuration. We strongly recommend that you do not use launch configurations. For more information, see [Launch configurations](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-configurations.html) in the *Amazon EC2 Auto Scaling User Guide*.\n For help migrating from launch configurations to launch templates, see [Migrate CloudFormation stacks from launch configurations to launch templates](https://docs.aws.amazon.com/autoscaling/ec2/userguide/migrate-launch-configurations-with-cloudformation.html) in the *Amazon EC2 Auto Scaling User Guide*.", - "handlers": { - "create": { - "permissions": [ - "autoscaling:CreateAutoScalingGroup", - "autoscaling:UpdateAutoScalingGroup", - "autoscaling:CreateOrUpdateTags", - "autoscaling:Describe*", - "autoscaling:EnableMetricsCollection", - "autoscaling:PutNotificationConfiguration", - "cloudwatch:PutMetricAlarm", - "ec2:Describe*", - "ec2:Get*", - "ec2:RunInstances", - "elasticloadbalancing:Describe*", - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "managed-fleets:Get*", - "managed-fleets:CreateAutoScalingGroup", - "managed-fleets:UpdateAutoScalingGroup", - "ssm:Get*", - "vpc-lattice:DeregisterTargets", - "vpc-lattice:GetTargetGroup", - "vpc-lattice:ListTargets", - "vpc-lattice:RegisterTargets" - ], - "timeoutInMinutes": 360 - }, - "delete": { - "permissions": [ - "autoscaling:DeleteAutoScalingGroup", - "autoscaling:UpdateAutoScalingGroup", - "autoscaling:Describe*", - "managed-fleets:Get*", - "managed-fleets:DeleteAutoScalingGroup" - ], - "timeoutInMinutes": 240 - }, - "list": { - "permissions": [ - "autoscaling:Describe*" - ] - }, - "read": { - "permissions": [ - "autoscaling:Describe*", - "managed-fleets:Get*" - ] - }, - "update": { - "permissions": [ - "autoscaling:UpdateAutoScalingGroup", - "autoscaling:CreateOrUpdateTags", - "autoscaling:DeleteTags", - "autoscaling:Describe*", - "autoscaling:EnableMetricsCollection", - "autoscaling:DisableMetricsCollection", - "autoscaling:PutNotificationConfiguration", - "autoscaling:DeleteNotificationConfiguration", - "autoscaling:DetachLoadBalancerTargetGroups", - "autoscaling:AttachLoadBalancerTargetGroups", - "autoscaling:AttachLoadBalancers", - "autoscaling:DetachLoadBalancers", - "autoscaling:AttachTrafficSources", - "autoscaling:DetachTrafficSources", - "autoscaling:DeleteLifecycleHook", - "autoscaling:PutLifecycleHook", - "cloudwatch:PutMetricAlarm", - "ec2:Describe*", - "ec2:Get*", - "ec2:RunInstances", - "elasticloadbalancing:Describe*", - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "managed-fleets:Get*", - "managed-fleets:RegisterAutoScalingGroup", - "managed-fleets:DeregisterAutoScalingGroup", - "managed-fleets:UpdateAutoScalingGroup", - "ssm:Get*", - "vpc-lattice:DeregisterTargets", - "vpc-lattice:GetTargetGroup", - "vpc-lattice:ListTargets", - "vpc-lattice:RegisterTargets" - ], - "timeoutInMinutes": 660 - } - }, - "primaryIdentifier": [ - "/properties/AutoScalingGroupName" - ], - "properties": { - "AutoScalingGroupName": { - "description": "The name of the Auto Scaling group. This name must be unique per Region per account.\n The name can contain any ASCII character 33 to 126 including most punctuation characters, digits, and upper and lowercased letters.\n You cannot use a colon (:) in the name.", - "type": "string" - }, - "AvailabilityZoneDistribution": { - "$ref": "#/definitions/AvailabilityZoneDistribution", - "description": "" - }, - "AvailabilityZones": { - "description": "A list of Availability Zones where instances in the Auto Scaling group can be created. Used for launching into the default VPC subnet in each Availability Zone when not using the ``VPCZoneIdentifier`` property, or for attaching a network interface when an existing network interface ID is specified in a launch template.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "CapacityRebalance": { - "description": "Indicates whether Capacity Rebalancing is enabled. Otherwise, Capacity Rebalancing is disabled. When you turn on Capacity Rebalancing, Amazon EC2 Auto Scaling attempts to launch a Spot Instance whenever Amazon EC2 notifies that a Spot Instance is at an elevated risk of interruption. After launching a new instance, it then terminates an old instance. For more information, see [Use Capacity Rebalancing to handle Amazon EC2 Spot Interruptions](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html) in the in the *Amazon EC2 Auto Scaling User Guide*.", - "type": "boolean" - }, - "Context": { - "description": "Reserved.", - "type": "string" - }, - "Cooldown": { - "description": "*Only needed if you use simple scaling policies.* \n The amount of time, in seconds, between one scaling activity ending and another one starting due to simple scaling policies. For more information, see [Scaling cooldowns for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-scaling-cooldowns.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Default: ``300`` seconds", - "type": "string" - }, - "DefaultInstanceWarmup": { - "description": "The amount of time, in seconds, until a new instance is considered to have finished initializing and resource consumption to become stable after it enters the ``InService`` state. \n During an instance refresh, Amazon EC2 Auto Scaling waits for the warm-up period after it replaces an instance before it moves on to replacing the next instance. Amazon EC2 Auto Scaling also waits for the warm-up period before aggregating the metrics for new instances with existing instances in the Amazon CloudWatch metrics that are used for scaling, resulting in more reliable usage data. For more information, see [Set the default instance warmup for an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-default-instance-warmup.html) in the *Amazon EC2 Auto Scaling User Guide*.\n To manage various warm-up settings at the group level, we recommend that you set the default instance warmup, *even if it is set to 0 seconds*. To remove a value that you previously set, include the property but specify ``-1`` for the value. However, we strongly recommend keeping the default instance warmup enabled by specifying a value of ``0`` or other nominal value.\n Default: None", - "type": "integer" - }, - "DesiredCapacity": { - "description": "The desired capacity is the initial capacity of the Auto Scaling group at the time of its creation and the capacity it attempts to maintain. It can scale beyond this capacity if you configure automatic scaling.\n The number must be greater than or equal to the minimum size of the group and less than or equal to the maximum size of the group. If you do not specify a desired capacity when creating the stack, the default is the minimum size of the group.\n CloudFormation marks the Auto Scaling group as successful (by setting its status to CREATE_COMPLETE) when the desired capacity is reached. However, if a maximum Spot price is set in the launch template or launch configuration that you specified, then desired capacity is not used as a criteria for success. Whether your request is fulfilled depends on Spot Instance capacity and your maximum price.", - "pattern": "^[0-9]+$", - "type": "string" - }, - "DesiredCapacityType": { - "description": "The unit of measurement for the value specified for desired capacity. Amazon EC2 Auto Scaling supports ``DesiredCapacityType`` for attribute-based instance type selection only. For more information, see [Create a mixed instances group using attribute-based instance type selection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-mixed-instances-group-attribute-based-instance-type-selection.html) in the *Amazon EC2 Auto Scaling User Guide*.\n By default, Amazon EC2 Auto Scaling specifies ``units``, which translates into number of instances.\n Valid values: ``units`` | ``vcpu`` | ``memory-mib``", - "type": "string" - }, - "HealthCheckGracePeriod": { - "description": "The amount of time, in seconds, that Amazon EC2 Auto Scaling waits before checking the health status of an EC2 instance that has come into service and marking it unhealthy due to a failed health check. This is useful if your instances do not immediately pass their health checks after they enter the ``InService`` state. For more information, see [Set the health check grace period for an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/health-check-grace-period.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Default: ``0`` seconds", - "type": "integer" - }, - "HealthCheckType": { - "description": "A comma-separated value string of one or more health check types.\n The valid values are ``EC2``, ``EBS``, ``ELB``, and ``VPC_LATTICE``. ``EC2`` is the default health check and cannot be disabled. For more information, see [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Only specify ``EC2`` if you must clear a value that was previously set.", - "type": "string" - }, - "InstanceId": { - "description": "The ID of the instance used to base the launch configuration on. For more information, see [Create an Auto Scaling group using an EC2 instance](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-from-instance.html) in the *Amazon EC2 Auto Scaling User Guide*.\n If you specify ``LaunchTemplate``, ``MixedInstancesPolicy``, or ``LaunchConfigurationName``, don't specify ``InstanceId``.", - "type": "string" - }, - "InstanceMaintenancePolicy": { - "$ref": "#/definitions/InstanceMaintenancePolicy", - "description": "An instance maintenance policy. For more information, see [Set instance maintenance policy](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html) in the *Amazon EC2 Auto Scaling User Guide*." - }, - "LaunchConfigurationName": { - "description": "The name of the launch configuration to use to launch instances.\n Required only if you don't specify ``LaunchTemplate``, ``MixedInstancesPolicy``, or ``InstanceId``.", - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification", - "description": "Information used to specify the launch template and version to use to launch instances. You can alternatively associate a launch template to the Auto Scaling group by specifying a ``MixedInstancesPolicy``. For more information about creating launch templates, see [Create a launch template for an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) in the *Amazon EC2 Auto Scaling User Guide*.\n If you omit this property, you must specify ``MixedInstancesPolicy``, ``LaunchConfigurationName``, or ``InstanceId``." - }, - "LifecycleHookSpecificationList": { - "description": "One or more lifecycle hooks to add to the Auto Scaling group before instances are launched.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/LifecycleHookSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "LoadBalancerNames": { - "description": "A list of Classic Load Balancers associated with this Auto Scaling group. For Application Load Balancers, Network Load Balancers, and Gateway Load Balancers, specify the ``TargetGroupARNs`` property instead.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "MaxInstanceLifetime": { - "description": "The maximum amount of time, in seconds, that an instance can be in service. The default is null. If specified, the value must be either 0 or a number equal to or greater than 86,400 seconds (1 day). For more information, see [Replace Auto Scaling instances based on maximum instance lifetime](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-max-instance-lifetime.html) in the *Amazon EC2 Auto Scaling User Guide*.", - "type": "integer" - }, - "MaxSize": { - "description": "The maximum size of the group.\n With a mixed instances policy that uses instance weighting, Amazon EC2 Auto Scaling may need to go above ``MaxSize`` to meet your capacity requirements. In this event, Amazon EC2 Auto Scaling will never go above ``MaxSize`` by more than your largest instance weight (weights that define how many units each instance contributes to the desired capacity of the group).", - "pattern": "^[0-9]+$", - "type": "string" - }, - "MetricsCollection": { - "description": "Enables the monitoring of group metrics of an Auto Scaling group. By default, these metrics are disabled.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/MetricsCollection" - }, - "type": "array", - "uniqueItems": false - }, - "MinSize": { - "description": "The minimum size of the group.", - "pattern": "^[0-9]+$", - "type": "string" - }, - "MixedInstancesPolicy": { - "$ref": "#/definitions/MixedInstancesPolicy", - "description": "An embedded object that specifies a mixed instances policy.\n The policy includes properties that not only define the distribution of On-Demand Instances and Spot Instances, the maximum price to pay for Spot Instances (optional), and how the Auto Scaling group allocates instance types to fulfill On-Demand and Spot capacities, but also the properties that specify the instance configuration information\u2014the launch template and instance types. The policy can also include a weight for each instance type and different launch templates for individual instance types.\n For more information, see [Auto Scaling groups with multiple instance types and purchase options](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html) in the *Amazon EC2 Auto Scaling User Guide*." - }, - "NewInstancesProtectedFromScaleIn": { - "description": "Indicates whether newly launched instances are protected from termination by Amazon EC2 Auto Scaling when scaling in. For more information about preventing instances from terminating on scale in, see [Use instance scale-in protection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html) in the *Amazon EC2 Auto Scaling User Guide*.", - "type": "boolean" - }, - "NotificationConfiguration": { - "$ref": "#/definitions/NotificationConfiguration", - "description": "" - }, - "NotificationConfigurations": { - "description": "Configures an Auto Scaling group to send notifications when specified events take place.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/NotificationConfiguration" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroup": { - "description": "The name of the placement group into which to launch your instances. For more information, see [Placement groups](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) in the *Amazon EC2 User Guide for Linux Instances*.\n A *cluster* placement group is a logical grouping of instances within a single Availability Zone. You cannot specify multiple Availability Zones and a cluster placement group.", - "type": "string" - }, - "ServiceLinkedRoleARN": { - "description": "The Amazon Resource Name (ARN) of the service-linked role that the Auto Scaling group uses to call other AWS service on your behalf. By default, Amazon EC2 Auto Scaling uses a service-linked role named ``AWSServiceRoleForAutoScaling``, which it creates if it does not exist. For more information, see [Service-linked roles](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html) in the *Amazon EC2 Auto Scaling User Guide*.", - "type": "string" - }, - "Tags": { - "description": "One or more tags. You can tag your Auto Scaling group and propagate the tags to the Amazon EC2 instances it launches. Tags are not propagated to Amazon EBS volumes. To add tags to Amazon EBS volumes, specify the tags in a launch template but use caution. If the launch template specifies an instance tag with a key that is also specified for the Auto Scaling group, Amazon EC2 Auto Scaling overrides the value of that instance tag with the value specified by the Auto Scaling group. For more information, see [Tag Auto Scaling groups and instances](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-tagging.html) in the *Amazon EC2 Auto Scaling User Guide*.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TagProperty" - }, - "type": "array" - }, - "TargetGroupARNs": { - "description": "The Amazon Resource Names (ARN) of the Elastic Load Balancing target groups to associate with the Auto Scaling group. Instances are registered as targets with the target groups. The target groups receive incoming traffic and route requests to one or more registered targets. For more information, see [Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in the *Amazon EC2 Auto Scaling User Guide*.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "TerminationPolicies": { - "description": "A policy or a list of policies that are used to select the instance to terminate. These policies are executed in the order that you list them. For more information, see [Configure termination policies for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-termination-policies.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Valid values: ``Default`` | ``AllocationStrategy`` | ``ClosestToNextInstanceHour`` | ``NewestInstance`` | ``OldestInstance`` | ``OldestLaunchConfiguration`` | ``OldestLaunchTemplate`` | ``arn:aws:lambda:region:account-id:function:my-function:my-alias``", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "TrafficSources": { - "description": "The traffic sources associated with this Auto Scaling group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TrafficSourceIdentifier" - }, - "type": "array", - "uniqueItems": true - }, - "VPCZoneIdentifier": { - "description": "A list of subnet IDs for a virtual private cloud (VPC) where instances in the Auto Scaling group can be created.\n If this resource specifies public subnets and is also in a VPC that is defined in the same stack template, you must use the [DependsOn attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) to declare a dependency on the [VPC-gateway attachment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html).\n When you update ``VPCZoneIdentifier``, this retains the same Auto Scaling group and replaces old instances with new ones, according to the specified subnets. You can optionally specify how CloudFormation handles these updates by using an [UpdatePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html).\n Required to launch instances into a nondefault VPC. If you specify ``VPCZoneIdentifier`` with ``AvailabilityZones``, the subnets that you specify for this property must reside in those Availability Zones.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "propertyTransform": { - "/properties/LaunchConfigurationName": "InstanceId? AutoScalingGroupName : LaunchConfigurationName" - }, - "required": [ - "MinSize", - "MaxSize" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::AutoScaling::AutoScalingGroup", - "writeOnlyProperties": [ - "/properties/InstanceId" - ] -} +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/LaunchConfigurationName", + "/properties/VPCZoneIdentifier", + "/properties/LaunchTemplate", + "/properties/MixedInstancesPolicy" + ], + "createOnlyProperties": [ + "/properties/InstanceId", + "/properties/AutoScalingGroupName" + ], + "definitions": { + "AcceleratorCountRequest": { + "additionalProperties": false, + "description": "``AcceleratorCountRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum number of accelerators for an instance type.", + "properties": { + "Max": { + "description": "The maximum value.", + "type": "integer" + }, + "Min": { + "description": "The minimum value.", + "type": "integer" + } + }, + "type": "object" + }, + "AcceleratorTotalMemoryMiBRequest": { + "additionalProperties": false, + "description": "``AcceleratorTotalMemoryMiBRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum total memory size for the accelerators for an instance type, in MiB.", + "properties": { + "Max": { + "description": "The memory maximum in MiB.", + "type": "integer" + }, + "Min": { + "description": "The memory minimum in MiB.", + "type": "integer" + } + }, + "type": "object" + }, + "AvailabilityZoneDistribution": { + "additionalProperties": false, + "description": "``AvailabilityZoneDistribution`` is a property of the [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource.", + "properties": { + "CapacityDistributionStrategy": { + "description": "If launches fail in an Availability Zone, the following strategies are available. The default is ``balanced-best-effort``. \n + ``balanced-only`` - If launches fail in an Availability Zone, Auto Scaling will continue to attempt to launch in the unhealthy zone to preserve a balanced distribution.\n + ``balanced-best-effort`` - If launches fail in an Availability Zone, Auto Scaling will attempt to launch in another healthy Availability Zone instead.", + "enum": [ + "balanced-best-effort", + "balanced-only" + ], + "type": "string" + } + }, + "type": "object" + }, + "AvailabilityZoneImpairmentPolicy": { + "additionalProperties": false, + "description": "Describes an Availability Zone impairment policy.", + "properties": { + "ImpairedZoneHealthCheckBehavior": { + "description": "Specifies the health check behavior for the impaired Availability Zone in an active zonal shift. If you select ``Replace unhealthy``, instances that appear unhealthy will be replaced in all Availability Zones. If you select ``Ignore unhealthy``, instances will not be replaced in the Availability Zone with the active zonal shift. For more information, see [Auto Scaling group zonal shift](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-zonal-shift.html) in the *Amazon EC2 Auto Scaling User Guide*.", + "enum": [ + "IgnoreUnhealthy", + "ReplaceUnhealthy" + ], + "type": "string" + }, + "ZonalShiftEnabled": { + "description": "If ``true``, enable zonal shift for your Auto Scaling group.", + "type": "boolean" + } + }, + "required": [ + "ImpairedZoneHealthCheckBehavior", + "ZonalShiftEnabled" + ], + "type": "object" + }, + "BaselineEbsBandwidthMbpsRequest": { + "additionalProperties": false, + "description": "``BaselineEbsBandwidthMbpsRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum baseline bandwidth performance for an instance type, in Mbps.", + "properties": { + "Max": { + "description": "The maximum value in Mbps.", + "type": "integer" + }, + "Min": { + "description": "The minimum value in Mbps.", + "type": "integer" + } + }, + "type": "object" + }, + "BaselinePerformanceFactorsRequest": { + "additionalProperties": false, + "description": "", + "properties": { + "Cpu": { + "$ref": "#/definitions/CpuPerformanceFactorRequest", + "description": "" + } + }, + "type": "object" + }, + "CapacityReservationIds": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "CapacityReservationResourceGroupArns": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "CapacityReservationSpecification": { + "additionalProperties": false, + "description": "", + "properties": { + "CapacityReservationPreference": { + "type": "string" + }, + "CapacityReservationTarget": { + "$ref": "#/definitions/CapacityReservationTarget" + } + }, + "required": [ + "CapacityReservationPreference" + ], + "type": "object" + }, + "CapacityReservationTarget": { + "additionalProperties": false, + "description": "", + "properties": { + "CapacityReservationIds": { + "$ref": "#/definitions/CapacityReservationIds" + }, + "CapacityReservationResourceGroupArns": { + "$ref": "#/definitions/CapacityReservationResourceGroupArns" + } + }, + "type": "object" + }, + "CpuPerformanceFactorRequest": { + "additionalProperties": false, + "description": "", + "properties": { + "References": { + "$ref": "#/definitions/PerformanceFactorReferenceSetRequest", + "description": "" + } + }, + "type": "object" + }, + "InstanceMaintenancePolicy": { + "additionalProperties": false, + "dependencies": { + "MaxHealthyPercentage": [ + "MinHealthyPercentage" + ], + "MinHealthyPercentage": [ + "MaxHealthyPercentage" + ] + }, + "description": "``InstanceMaintenancePolicy`` is a property of the [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource.\n For more information, see [Instance maintenance policies](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html) in the *Amazon EC2 Auto Scaling User Guide*.", + "properties": { + "MaxHealthyPercentage": { + "description": "Specifies the upper threshold as a percentage of the desired capacity of the Auto Scaling group. It represents the maximum percentage of the group that can be in service and healthy, or pending, to support your workload when replacing instances. Value range is 100 to 200. To clear a previously set value, specify a value of ``-1``.\n Both ``MinHealthyPercentage`` and ``MaxHealthyPercentage`` must be specified, and the difference between them cannot be greater than 100. A large range increases the number of instances that can be replaced at the same time.", + "type": "integer" + }, + "MinHealthyPercentage": { + "description": "Specifies the lower threshold as a percentage of the desired capacity of the Auto Scaling group. It represents the minimum percentage of the group to keep in service, healthy, and ready to use to support your workload when replacing instances. Value range is 0 to 100. To clear a previously set value, specify a value of ``-1``.", + "type": "integer" + } + }, + "type": "object" + }, + "InstanceRequirements": { + "additionalProperties": false, + "description": "The attributes for the instance types for a mixed instances policy. Amazon EC2 Auto Scaling uses your specified requirements to identify instance types. Then, it uses your On-Demand and Spot allocation strategies to launch instances from these instance types.\n When you specify multiple attributes, you get instance types that satisfy all of the specified attributes. If you specify multiple values for an attribute, you get instance types that satisfy any of the specified values.\n To limit the list of instance types from which Amazon EC2 Auto Scaling can identify matching instance types, you can use one of the following parameters, but not both in the same request:\n + ``AllowedInstanceTypes`` - The instance types to include in the list. All other instance types are ignored, even if they match your specified attributes.\n + ``ExcludedInstanceTypes`` - The instance types to exclude from the list, even if they match your specified attributes.\n \n You must specify ``VCpuCount`` and ``MemoryMiB``. All other attributes are optional. Any unspecified optional attribute is set to its default.\n For an example template, see [Configure Amazon EC2 Auto Scaling resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2-auto-scaling.html).\n For more information, see [Creating an Auto Scaling group using attribute-based instance type selection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-instance-type-requirements.html) in the *Amazon EC2 Auto Scaling User Guide*. For help determining which instance types match your attributes before you apply them to your Auto Scaling group, see [Preview instance types with specified attributes](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html#ec2fleet-get-instance-types-from-instance-requirements) in the *Amazon EC2 User Guide for Linux Instances*.\n ``InstanceRequirements`` is a property of the ``LaunchTemplateOverrides`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplate.html) property type.", + "properties": { + "AcceleratorCount": { + "$ref": "#/definitions/AcceleratorCountRequest", + "description": "The minimum and maximum number of accelerators (GPUs, FPGAs, or AWS Inferentia chips) for an instance type.\n To exclude accelerator-enabled instance types, set ``Max`` to ``0``.\n Default: No minimum or maximum limits" + }, + "AcceleratorManufacturers": { + "description": "Indicates whether instance types must have accelerators by specific manufacturers.\n + For instance types with NVIDIA devices, specify ``nvidia``.\n + For instance types with AMD devices, specify ``amd``.\n + For instance types with AWS devices, specify ``amazon-web-services``.\n + For instance types with Xilinx devices, specify ``xilinx``.\n \n Default: Any manufacturer", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "AcceleratorNames": { + "description": "Lists the accelerators that must be on an instance type.\n + For instance types with NVIDIA A100 GPUs, specify ``a100``.\n + For instance types with NVIDIA V100 GPUs, specify ``v100``.\n + For instance types with NVIDIA K80 GPUs, specify ``k80``.\n + For instance types with NVIDIA T4 GPUs, specify ``t4``.\n + For instance types with NVIDIA M60 GPUs, specify ``m60``.\n + For instance types with AMD Radeon Pro V520 GPUs, specify ``radeon-pro-v520``.\n + For instance types with Xilinx VU9P FPGAs, specify ``vu9p``.\n \n Default: Any accelerator", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "AcceleratorTotalMemoryMiB": { + "$ref": "#/definitions/AcceleratorTotalMemoryMiBRequest", + "description": "The minimum and maximum total memory size for the accelerators on an instance type, in MiB.\n Default: No minimum or maximum limits" + }, + "AcceleratorTypes": { + "description": "Lists the accelerator types that must be on an instance type.\n + For instance types with GPU accelerators, specify ``gpu``.\n + For instance types with FPGA accelerators, specify ``fpga``.\n + For instance types with inference accelerators, specify ``inference``.\n \n Default: Any accelerator type", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "AllowedInstanceTypes": { + "description": "The instance types to apply your specified attributes against. All other instance types are ignored, even if they match your specified attributes.\n You can use strings with one or more wild cards, represented by an asterisk (``*``), to allow an instance type, size, or generation. The following are examples: ``m5.8xlarge``, ``c5*.*``, ``m5a.*``, ``r*``, ``*3*``.\n For example, if you specify ``c5*``, Amazon EC2 Auto Scaling will allow the entire C5 instance family, which includes all C5a and C5n instance types. If you specify ``m5a.*``, Amazon EC2 Auto Scaling will allow all the M5a instance types, but not the M5n instance types.\n If you specify ``AllowedInstanceTypes``, you can't specify ``ExcludedInstanceTypes``.\n Default: All instance types", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "BareMetal": { + "description": "Indicates whether bare metal instance types are included, excluded, or required.\n Default: ``excluded``", + "type": "string" + }, + "BaselineEbsBandwidthMbps": { + "$ref": "#/definitions/BaselineEbsBandwidthMbpsRequest", + "description": "The minimum and maximum baseline bandwidth performance for an instance type, in Mbps. For more information, see [Amazon EBS\u2013optimized instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) in the *Amazon EC2 User Guide for Linux Instances*.\n Default: No minimum or maximum limits" + }, + "BaselinePerformanceFactors": { + "$ref": "#/definitions/BaselinePerformanceFactorsRequest", + "description": "" + }, + "BurstablePerformance": { + "description": "Indicates whether burstable performance instance types are included, excluded, or required. For more information, see [Burstable performance instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html) in the *Amazon EC2 User Guide for Linux Instances*.\n Default: ``excluded``", + "type": "string" + }, + "CpuManufacturers": { + "description": "Lists which specific CPU manufacturers to include.\n + For instance types with Intel CPUs, specify ``intel``.\n + For instance types with AMD CPUs, specify ``amd``.\n + For instance types with AWS CPUs, specify ``amazon-web-services``.\n \n Don't confuse the CPU hardware manufacturer with the CPU hardware architecture. Instances will be launched with a compatible CPU architecture based on the Amazon Machine Image (AMI) that you specify in your launch template. \n Default: Any manufacturer", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "ExcludedInstanceTypes": { + "description": "The instance types to exclude. You can use strings with one or more wild cards, represented by an asterisk (``*``), to exclude an instance family, type, size, or generation. The following are examples: ``m5.8xlarge``, ``c5*.*``, ``m5a.*``, ``r*``, ``*3*``. \n For example, if you specify ``c5*``, you are excluding the entire C5 instance family, which includes all C5a and C5n instance types. If you specify ``m5a.*``, Amazon EC2 Auto Scaling will exclude all the M5a instance types, but not the M5n instance types.\n If you specify ``ExcludedInstanceTypes``, you can't specify ``AllowedInstanceTypes``.\n Default: No excluded instance types", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "InstanceGenerations": { + "description": "Indicates whether current or previous generation instance types are included.\n + For current generation instance types, specify ``current``. The current generation includes EC2 instance types currently recommended for use. This typically includes the latest two to three generations in each instance family. For more information, see [Instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide for Linux Instances*.\n + For previous generation instance types, specify ``previous``.\n \n Default: Any current or previous generation", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "LocalStorage": { + "description": "Indicates whether instance types with instance store volumes are included, excluded, or required. For more information, see [Amazon EC2 instance store](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html) in the *Amazon EC2 User Guide for Linux Instances*.\n Default: ``included``", + "type": "string" + }, + "LocalStorageTypes": { + "description": "Indicates the type of local storage that is required.\n + For instance types with hard disk drive (HDD) storage, specify ``hdd``.\n + For instance types with solid state drive (SSD) storage, specify ``ssd``.\n \n Default: Any local storage type", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": { + "description": "[Price protection] The price protection threshold for Spot Instances, as a percentage of an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from either the lowest priced current generation instance types or, failing that, the lowest priced previous generation instance types that match your attributes. When Amazon EC2 Auto Scaling selects instance types with your attributes, we will exclude instance types whose price exceeds your specified threshold.\n The parameter accepts an integer, which Amazon EC2 Auto Scaling interprets as a percentage.\n If you set ``DesiredCapacityType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is based on the per-vCPU or per-memory price instead of the per instance price. \n Only one of ``SpotMaxPricePercentageOverLowestPrice`` or ``MaxSpotPriceAsPercentageOfOptimalOnDemandPrice`` can be specified. If you don't specify either, Amazon EC2 Auto Scaling will automatically apply optimal price protection to consistently select from a wide range of instance types. To indicate no price protection threshold for Spot Instances, meaning you want to consider all instance types that match your attributes, include one of these parameters and specify a high value, such as ``999999``.", + "type": "integer" + }, + "MemoryGiBPerVCpu": { + "$ref": "#/definitions/MemoryGiBPerVCpuRequest", + "description": "The minimum and maximum amount of memory per vCPU for an instance type, in GiB.\n Default: No minimum or maximum limits" + }, + "MemoryMiB": { + "$ref": "#/definitions/MemoryMiBRequest", + "description": "The minimum and maximum instance memory size for an instance type, in MiB." + }, + "NetworkBandwidthGbps": { + "$ref": "#/definitions/NetworkBandwidthGbpsRequest", + "description": "The minimum and maximum amount of network bandwidth, in gigabits per second (Gbps).\n Default: No minimum or maximum limits" + }, + "NetworkInterfaceCount": { + "$ref": "#/definitions/NetworkInterfaceCountRequest", + "description": "The minimum and maximum number of network interfaces for an instance type.\n Default: No minimum or maximum limits" + }, + "OnDemandMaxPricePercentageOverLowestPrice": { + "description": "[Price protection] The price protection threshold for On-Demand Instances, as a percentage higher than an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from either the lowest priced current generation instance types or, failing that, the lowest priced previous generation instance types that match your attributes. When Amazon EC2 Auto Scaling selects instance types with your attributes, we will exclude instance types whose price exceeds your specified threshold. \n The parameter accepts an integer, which Amazon EC2 Auto Scaling interprets as a percentage.\n To turn off price protection, specify a high value, such as ``999999``. \n If you set ``DesiredCapacityType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per instance price. \n Default: ``20``", + "type": "integer" + }, + "RequireHibernateSupport": { + "description": "Indicates whether instance types must provide On-Demand Instance hibernation support.\n Default: ``false``", + "type": "boolean" + }, + "SpotMaxPricePercentageOverLowestPrice": { + "description": "[Price protection] The price protection threshold for Spot Instances, as a percentage higher than an identified Spot price. The identified Spot price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from either the lowest priced current generation instance types or, failing that, the lowest priced previous generation instance types that match your attributes. When Amazon EC2 Auto Scaling selects instance types with your attributes, we will exclude instance types whose price exceeds your specified threshold.\n The parameter accepts an integer, which Amazon EC2 Auto Scaling interprets as a percentage. \n If you set ``DesiredCapacityType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is based on the per-vCPU or per-memory price instead of the per instance price. \n Only one of ``SpotMaxPricePercentageOverLowestPrice`` or ``MaxSpotPriceAsPercentageOfOptimalOnDemandPrice`` can be specified. If you don't specify either, Amazon EC2 Auto Scaling will automatically apply optimal price protection to consistently select from a wide range of instance types. To indicate no price protection threshold for Spot Instances, meaning you want to consider all instance types that match your attributes, include one of these parameters and specify a high value, such as ``999999``.", + "type": "integer" + }, + "TotalLocalStorageGB": { + "$ref": "#/definitions/TotalLocalStorageGBRequest", + "description": "The minimum and maximum total local storage size for an instance type, in GB.\n Default: No minimum or maximum limits" + }, + "VCpuCount": { + "$ref": "#/definitions/VCpuCountRequest", + "description": "The minimum and maximum number of vCPUs for an instance type." + } + }, + "required": [ + "MemoryMiB", + "VCpuCount" + ], + "type": "object" + }, + "InstancesDistribution": { + "additionalProperties": false, + "description": "Use this structure to specify the distribution of On-Demand Instances and Spot Instances and the allocation strategies used to fulfill On-Demand and Spot capacities for a mixed instances policy.\n For more information, see [Auto Scaling groups with multiple instance types and purchase options](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html) in the *Amazon EC2 Auto Scaling User Guide*.\n ``InstancesDistribution`` is a property of the [AWS::AutoScaling::AutoScalingGroup MixedInstancesPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-mixedinstancespolicy.html) property type.", + "properties": { + "OnDemandAllocationStrategy": { + "description": "The allocation strategy to apply to your On-Demand Instances when they are launched. Possible instance types are determined by the launch template overrides that you specify.\n The following lists the valid values:\n + lowest-price Uses price to determine which instance types are the highest priority, launching the lowest priced instance types within an Availability Zone first. This is the default value for Auto Scaling groups that specify InstanceRequirements. + prioritized You set the order of instance types for the launch template overrides from highest to lowest priority (from first to last in the list). Amazon EC2 Auto Scaling launches your highest priority instance types first. If all your On-Demand capacity cannot be fulfilled using your highest priority instance type, then Amazon EC2 Auto Scaling launches the remaining capacity using the second priority instance type, and so on. This is the default value for Auto Scaling groups that don't specify InstanceRequirements and cannot be used for groups that do.", + "type": "string" + }, + "OnDemandBaseCapacity": { + "description": "The minimum amount of the Auto Scaling group's capacity that must be fulfilled by On-Demand Instances. This base portion is launched first as your group scales.\n This number has the same unit of measurement as the group's desired capacity. If you change the default unit of measurement (number of instances) by specifying weighted capacity values in your launch template overrides list, or by changing the default desired capacity type setting of the group, you must specify this number using the same unit of measurement.\n Default: 0\n An update to this setting means a gradual replacement of instances to adjust the current On-Demand Instance levels. When replacing instances, Amazon EC2 Auto Scaling launches new instances before terminating the previous ones.", + "type": "integer" + }, + "OnDemandPercentageAboveBaseCapacity": { + "description": "Controls the percentages of On-Demand Instances and Spot Instances for your additional capacity beyond ``OnDemandBaseCapacity``. Expressed as a number (for example, 20 specifies 20% On-Demand Instances, 80% Spot Instances). If set to 100, only On-Demand Instances are used.\n Default: 100\n An update to this setting means a gradual replacement of instances to adjust the current On-Demand and Spot Instance levels for your additional capacity higher than the base capacity. When replacing instances, Amazon EC2 Auto Scaling launches new instances before terminating the previous ones.", + "type": "integer" + }, + "SpotAllocationStrategy": { + "description": "The allocation strategy to apply to your Spot Instances when they are launched. Possible instance types are determined by the launch template overrides that you specify.\n The following lists the valid values:\n + capacity-optimized Requests Spot Instances using pools that are optimally chosen based on the available Spot capacity. This strategy has the lowest risk of interruption. To give certain instance types a higher chance of launching first, use capacity-optimized-prioritized. + capacity-optimized-prioritized You set the order of instance types for the launch template overrides from highest to lowest priority (from first to last in the list). Amazon EC2 Auto Scaling honors the instance type priorities on a best effort basis but optimizes for capacity first. Note that if the On-Demand allocation strategy is set to prioritized, the same priority is applied when fulfilling On-Demand capacity. This is not a valid value for Auto Scaling groups that specify InstanceRequirements. + lowest-price Requests Spot Instances using the lowest priced pools within an Availability Zone, across the number of Spot pools that you specify for the SpotInstancePools property. To ensure that your desired capacity is met, you might receive Spot Instances from several pools. This is the default value, but it might lead to high interruption rates because this strategy only considers instance price and not available capacity. + price-capacity-optimized (recommended) The price and capacity optimized allocation strategy looks at both price and capacity to select the Spot Instance pools that are the least likely to be interrupted and have the lowest possible price.", + "type": "string" + }, + "SpotInstancePools": { + "description": "The number of Spot Instance pools across which to allocate your Spot Instances. The Spot pools are determined from the different instance types in the overrides. Valid only when the ``SpotAllocationStrategy`` is ``lowest-price``. Value must be in the range of 1\u201320.\n Default: 2", + "type": "integer" + }, + "SpotMaxPrice": { + "description": "The maximum price per unit hour that you are willing to pay for a Spot Instance. If your maximum price is lower than the Spot price for the instance types that you selected, your Spot Instances are not launched. We do not recommend specifying a maximum price because it can lead to increased interruptions. When Spot Instances launch, you pay the current Spot price. To remove a maximum price that you previously set, include the property but specify an empty string (\"\") for the value.\n If you specify a maximum price, your instances will be interrupted more frequently than if you do not specify one.\n Valid Range: Minimum value of 0.001", + "type": "string" + } + }, + "type": "object" + }, + "LaunchTemplate": { + "additionalProperties": false, + "description": "Use this structure to specify the launch templates and instance types (overrides) for a mixed instances policy.\n ``LaunchTemplate`` is a property of the [AWS::AutoScaling::AutoScalingGroup MixedInstancesPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-mixedinstancespolicy.html) property type.", + "properties": { + "LaunchTemplateSpecification": { + "$ref": "#/definitions/LaunchTemplateSpecification", + "description": "The launch template." + }, + "Overrides": { + "description": "Any properties that you specify override the same properties in the launch template.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/LaunchTemplateOverrides" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "LaunchTemplateSpecification" + ], + "type": "object" + }, + "LaunchTemplateOverrides": { + "additionalProperties": false, + "description": "Use this structure to let Amazon EC2 Auto Scaling do the following when the Auto Scaling group has a mixed instances policy:\n + Override the instance type that is specified in the launch template.\n + Use multiple instance types.\n \n Specify the instance types that you want, or define your instance requirements instead and let Amazon EC2 Auto Scaling provision the available instance types that meet your requirements. This can provide Amazon EC2 Auto Scaling with a larger selection of instance types to choose from when fulfilling Spot and On-Demand capacities. You can view which instance types are matched before you apply the instance requirements to your Auto Scaling group.\n After you define your instance requirements, you don't have to keep updating these settings to get new EC2 instance types automatically. Amazon EC2 Auto Scaling uses the instance requirements of the Auto Scaling group to determine whether a new EC2 instance type can be used.\n ``LaunchTemplateOverrides`` is a property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplate.html) property type.", + "properties": { + "InstanceRequirements": { + "$ref": "#/definitions/InstanceRequirements", + "description": "The instance requirements. Amazon EC2 Auto Scaling uses your specified requirements to identify instance types. Then, it uses your On-Demand and Spot allocation strategies to launch instances from these instance types.\n You can specify up to four separate sets of instance requirements per Auto Scaling group. This is useful for provisioning instances from different Amazon Machine Images (AMIs) in the same Auto Scaling group. To do this, create the AMIs and create a new launch template for each AMI. Then, create a compatible set of instance requirements for each launch template. \n If you specify ``InstanceRequirements``, you can't specify ``InstanceType``." + }, + "InstanceType": { + "description": "The instance type, such as ``m3.xlarge``. You must specify an instance type that is supported in your requested Region and Availability Zones. For more information, see [Instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide for Linux Instances*.\n You can specify up to 40 instance types per Auto Scaling group.", + "type": "string" + }, + "LaunchTemplateSpecification": { + "$ref": "#/definitions/LaunchTemplateSpecification", + "description": "Provides a launch template for the specified instance type or set of instance requirements. For example, some instance types might require a launch template with a different AMI. If not provided, Amazon EC2 Auto Scaling uses the launch template that's specified in the ``LaunchTemplate`` definition. For more information, see [Specifying a different launch template for an instance type](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups-launch-template-overrides.html) in the *Amazon EC2 Auto Scaling User Guide*. \n You can specify up to 20 launch templates per Auto Scaling group. The launch templates specified in the overrides and in the ``LaunchTemplate`` definition count towards this limit." + }, + "WeightedCapacity": { + "description": "If you provide a list of instance types to use, you can specify the number of capacity units provided by each instance type in terms of virtual CPUs, memory, storage, throughput, or other relative performance characteristic. When a Spot or On-Demand Instance is launched, the capacity units count toward the desired capacity. Amazon EC2 Auto Scaling launches instances until the desired capacity is totally fulfilled, even if this results in an overage. For example, if there are two units remaining to fulfill capacity, and Amazon EC2 Auto Scaling can only launch an instance with a ``WeightedCapacity`` of five units, the instance is launched, and the desired capacity is exceeded by three units. For more information, see [Configure instance weighting for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups-instance-weighting.html) in the *Amazon EC2 Auto Scaling User Guide*. Value must be in the range of 1-999. \n If you specify a value for ``WeightedCapacity`` for one instance type, you must specify a value for ``WeightedCapacity`` for all of them.\n Every Auto Scaling group has three size parameters (``DesiredCapacity``, ``MaxSize``, and ``MinSize``). Usually, you set these sizes based on a specific number of instances. However, if you configure a mixed instances policy that defines weights for the instance types, you must specify these sizes with the same units that you use for weighting instances.", + "type": "string" + } + }, + "type": "object" + }, + "LaunchTemplateSpecification": { + "additionalProperties": false, + "description": "Specifies a launch template to use when provisioning EC2 instances for an Auto Scaling group.\n You must specify the following:\n + The ID or the name of the launch template, but not both.\n + The version of the launch template.\n \n ``LaunchTemplateSpecification`` is property of the [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource. It is also a property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplate.html) and [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property types.\n For information about creating a launch template, see [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html) and [Create a launch template for an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) in the *Amazon EC2 Auto Scaling User Guide*.\n For examples of launch templates, see [Create launch templates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2-launch-templates.html).", + "properties": { + "LaunchTemplateId": { + "description": "The ID of the launch template.\n You must specify the ``LaunchTemplateID`` or the ``LaunchTemplateName``, but not both.", + "type": "string" + }, + "LaunchTemplateName": { + "description": "The name of the launch template.\n You must specify the ``LaunchTemplateName`` or the ``LaunchTemplateID``, but not both.", + "type": "string" + }, + "Version": { + "description": "The version number of the launch template.\n Specifying ``$Latest`` or ``$Default`` for the template version number is not supported. However, you can specify ``LatestVersionNumber`` or ``DefaultVersionNumber`` using the ``Fn::GetAtt`` intrinsic function. For more information, see [Fn::GetAtt](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html).\n For an example of using the ``Fn::GetAtt`` function, see the [Examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#aws-resource-autoscaling-autoscalinggroup--examples) section of the ``AWS::AutoScaling::AutoScalingGroup`` resource.", + "type": "string" + } + }, + "required": [ + "Version" + ], + "type": "object" + }, + "LifecycleHookSpecification": { + "additionalProperties": false, + "description": "``LifecycleHookSpecification`` specifies a lifecycle hook for the ``LifecycleHookSpecificationList`` property of the [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource. A lifecycle hook specifies actions to perform when Amazon EC2 Auto Scaling launches or terminates instances. \n For more information, see [Amazon EC2 Auto Scaling lifecycle hooks](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html) in the *Amazon EC2 Auto Scaling User Guide*. You can find a sample template snippet in the [Examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html#aws-resource-as-lifecyclehook--examples) section of the ``AWS::AutoScaling::LifecycleHook`` resource.", + "properties": { + "DefaultResult": { + "description": "The action the Auto Scaling group takes when the lifecycle hook timeout elapses or if an unexpected failure occurs. The default value is ``ABANDON``.\n Valid values: ``CONTINUE`` | ``ABANDON``", + "type": "string" + }, + "HeartbeatTimeout": { + "description": "The maximum time, in seconds, that can elapse before the lifecycle hook times out. The range is from ``30`` to ``7200`` seconds. The default value is ``3600`` seconds (1 hour).", + "type": "integer" + }, + "LifecycleHookName": { + "description": "The name of the lifecycle hook.", + "type": "string" + }, + "LifecycleTransition": { + "description": "The lifecycle transition. For Auto Scaling groups, there are two major lifecycle transitions.\n + To create a lifecycle hook for scale-out events, specify ``autoscaling:EC2_INSTANCE_LAUNCHING``.\n + To create a lifecycle hook for scale-in events, specify ``autoscaling:EC2_INSTANCE_TERMINATING``.", + "type": "string" + }, + "NotificationMetadata": { + "description": "Additional information that you want to include any time Amazon EC2 Auto Scaling sends a message to the notification target.", + "type": "string" + }, + "NotificationTargetARN": { + "description": "The Amazon Resource Name (ARN) of the notification target that Amazon EC2 Auto Scaling sends notifications to when an instance is in a wait state for the lifecycle hook. You can specify an Amazon SNS topic or an Amazon SQS queue.", + "type": "string" + }, + "RoleARN": { + "description": "The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target. For information about creating this role, see [Prepare to add a lifecycle hook to your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/prepare-for-lifecycle-notifications.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Valid only if the notification target is an Amazon SNS topic or an Amazon SQS queue.", + "type": "string" + } + }, + "required": [ + "LifecycleHookName", + "LifecycleTransition" + ], + "type": "object" + }, + "MemoryGiBPerVCpuRequest": { + "additionalProperties": false, + "description": "``MemoryGiBPerVCpuRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum amount of memory per vCPU for an instance type, in GiB.", + "properties": { + "Max": { + "description": "The memory maximum in GiB.", + "type": "number" + }, + "Min": { + "description": "The memory minimum in GiB.", + "type": "number" + } + }, + "type": "object" + }, + "MemoryMiBRequest": { + "additionalProperties": false, + "description": "``MemoryMiBRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum instance memory size for an instance type, in MiB.", + "properties": { + "Max": { + "description": "The memory maximum in MiB.", + "type": "integer" + }, + "Min": { + "description": "The memory minimum in MiB.", + "type": "integer" + } + }, + "type": "object" + }, + "MetricsCollection": { + "additionalProperties": false, + "description": "``MetricsCollection`` is a property of the [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource that describes the group metrics that an Amazon EC2 Auto Scaling group sends to Amazon CloudWatch. These metrics describe the group rather than any of its instances. \n For more information, see [Monitor CloudWatch metrics for your Auto Scaling groups and instances](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-monitoring.html) in the *Amazon EC2 Auto Scaling User Guide*. You can find a sample template snippet in the [Examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#aws-resource-autoscaling-autoscalinggroup--examples) section of the ``AWS::AutoScaling::AutoScalingGroup`` resource.", + "properties": { + "Granularity": { + "description": "The frequency at which Amazon EC2 Auto Scaling sends aggregated data to CloudWatch. The only valid value is ``1Minute``.", + "type": "string" + }, + "Metrics": { + "description": "Identifies the metrics to enable.\n You can specify one or more of the following metrics:\n + ``GroupMinSize`` \n + ``GroupMaxSize`` \n + ``GroupDesiredCapacity`` \n + ``GroupInServiceInstances`` \n + ``GroupPendingInstances`` \n + ``GroupStandbyInstances`` \n + ``GroupTerminatingInstances`` \n + ``GroupTotalInstances`` \n + ``GroupInServiceCapacity`` \n + ``GroupPendingCapacity`` \n + ``GroupStandbyCapacity`` \n + ``GroupTerminatingCapacity`` \n + ``GroupTotalCapacity`` \n + ``WarmPoolDesiredCapacity`` \n + ``WarmPoolWarmedCapacity`` \n + ``WarmPoolPendingCapacity`` \n + ``WarmPoolTerminatingCapacity`` \n + ``WarmPoolTotalCapacity`` \n + ``GroupAndWarmPoolDesiredCapacity`` \n + ``GroupAndWarmPoolTotalCapacity`` \n \n If you specify ``Granularity`` and don't specify any metrics, all metrics are enabled.\n For more information, see [Amazon CloudWatch metrics for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-metrics.html) in the *Amazon EC2 Auto Scaling User Guide*.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Granularity" + ], + "type": "object" + }, + "MixedInstancesPolicy": { + "additionalProperties": false, + "description": "Use this structure to launch multiple instance types and On-Demand Instances and Spot Instances within a single Auto Scaling group.\n A mixed instances policy contains information that Amazon EC2 Auto Scaling can use to launch instances and help optimize your costs. For more information, see [Auto Scaling groups with multiple instance types and purchase options](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html) in the *Amazon EC2 Auto Scaling User Guide*.\n You can create a mixed instances policy for new and existing Auto Scaling groups. You must use a launch template to configure the policy. You cannot use a launch configuration.\n There are key differences between Spot Instances and On-Demand Instances:\n + The price for Spot Instances varies based on demand\n + Amazon EC2 can terminate an individual Spot Instance as the availability of, or price for, Spot Instances changes\n \n When a Spot Instance is terminated, Amazon EC2 Auto Scaling group attempts to launch a replacement instance to maintain the desired capacity for the group. \n ``MixedInstancesPolicy`` is a property of the [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource.", + "properties": { + "InstancesDistribution": { + "$ref": "#/definitions/InstancesDistribution", + "description": "The instances distribution." + }, + "LaunchTemplate": { + "$ref": "#/definitions/LaunchTemplate", + "description": "One or more launch templates and the instance types (overrides) that are used to launch EC2 instances to fulfill On-Demand and Spot capacities." + } + }, + "required": [ + "LaunchTemplate" + ], + "type": "object" + }, + "NetworkBandwidthGbpsRequest": { + "additionalProperties": false, + "description": "``NetworkBandwidthGbpsRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum network bandwidth for an instance type, in Gbps.\n Setting the minimum bandwidth does not guarantee that your instance will achieve the minimum bandwidth. Amazon EC2 will identify instance types that support the specified minimum bandwidth, but the actual bandwidth of your instance might go below the specified minimum at times. For more information, see [Available instance bandwidth](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html#available-instance-bandwidth) in the *Amazon EC2 User Guide for Linux Instances*.", + "properties": { + "Max": { + "description": "The maximum amount of network bandwidth, in gigabits per second (Gbps).", + "type": "number" + }, + "Min": { + "description": "The minimum amount of network bandwidth, in gigabits per second (Gbps).", + "type": "number" + } + }, + "type": "object" + }, + "NetworkInterfaceCountRequest": { + "additionalProperties": false, + "description": "``NetworkInterfaceCountRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum number of network interfaces for an instance type.", + "properties": { + "Max": { + "description": "The maximum number of network interfaces.", + "type": "integer" + }, + "Min": { + "description": "The minimum number of network interfaces.", + "type": "integer" + } + }, + "type": "object" + }, + "NotificationConfiguration": { + "additionalProperties": false, + "description": "A structure that specifies an Amazon SNS notification configuration for the ``NotificationConfigurations`` property of the [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource.\n For an example template snippet, see [Configure Amazon EC2 Auto Scaling resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2-auto-scaling.html).\n For more information, see [Get Amazon SNS notifications when your Auto Scaling group scales](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ASGettingNotifications.html) in the *Amazon EC2 Auto Scaling User Guide*.", + "properties": { + "NotificationTypes": { + "description": "A list of event types that send a notification. Event types can include any of the following types. \n *Allowed values*:\n + ``autoscaling:EC2_INSTANCE_LAUNCH`` \n + ``autoscaling:EC2_INSTANCE_LAUNCH_ERROR`` \n + ``autoscaling:EC2_INSTANCE_TERMINATE`` \n + ``autoscaling:EC2_INSTANCE_TERMINATE_ERROR`` \n + ``autoscaling:TEST_NOTIFICATION``", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "TopicARN": { + "description": "The Amazon Resource Name (ARN) of the Amazon SNS topic.", + "items": { + "type": "string" + }, + "type": [ + "string", + "array" + ] + } + }, + "required": [ + "TopicARN" + ], + "type": "object" + }, + "PerformanceFactorReferenceRequest": { + "additionalProperties": false, + "description": "", + "properties": { + "InstanceFamily": { + "description": "", + "type": "string" + } + }, + "type": "object" + }, + "PerformanceFactorReferenceSetRequest": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PerformanceFactorReferenceRequest" + }, + "type": "array", + "uniqueItems": true + }, + "TagProperty": { + "additionalProperties": false, + "description": "A structure that specifies a tag for the ``Tags`` property of [AWS::AutoScaling::AutoScalingGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html) resource.\n For more information, see [Tag Auto Scaling groups and instances](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-tagging.html) in the *Amazon EC2 Auto Scaling User Guide*. You can find a sample template snippet in the [Examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#aws-resource-autoscaling-autoscalinggroup--examples) section of the ``AWS::AutoScaling::AutoScalingGroup`` resource.\n CloudFormation adds the following tags to all Auto Scaling groups and associated instances: \n + aws:cloudformation:stack-name\n + aws:cloudformation:stack-id\n + aws:cloudformation:logical-id", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "PropagateAtLaunch": { + "description": "Set to ``true`` if you want CloudFormation to copy the tag to EC2 instances that are launched as part of the Auto Scaling group. Set to ``false`` if you want the tag attached only to the Auto Scaling group and not copied to any instances launched as part of the Auto Scaling group.", + "type": "boolean" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key", + "PropagateAtLaunch" + ], + "type": "object" + }, + "TotalLocalStorageGBRequest": { + "additionalProperties": false, + "description": "``TotalLocalStorageGBRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum total local storage size for an instance type, in GB.", + "properties": { + "Max": { + "description": "The storage maximum in GB.", + "type": "number" + }, + "Min": { + "description": "The storage minimum in GB.", + "type": "number" + } + }, + "type": "object" + }, + "TrafficSourceIdentifier": { + "additionalProperties": false, + "description": "Identifying information for a traffic source.", + "properties": { + "Identifier": { + "description": "Identifies the traffic source.\n For Application Load Balancers, Gateway Load Balancers, Network Load Balancers, and VPC Lattice, this will be the Amazon Resource Name (ARN) for a target group in this account and Region. For Classic Load Balancers, this will be the name of the Classic Load Balancer in this account and Region.\n For example: \n + Application Load Balancer ARN: ``arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/1234567890123456`` \n + Classic Load Balancer name: ``my-classic-load-balancer`` \n + VPC Lattice ARN: ``arn:aws:vpc-lattice:us-west-2:123456789012:targetgroup/tg-1234567890123456`` \n \n To get the ARN of a target group for a Application Load Balancer, Gateway Load Balancer, or Network Load Balancer, or the name of a Classic Load Balancer, use the Elastic Load Balancing [DescribeTargetGroups](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeTargetGroups.html) and [DescribeLoadBalancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeLoadBalancers.html) API operations.\n To get the ARN of a target group for VPC Lattice, use the VPC Lattice [GetTargetGroup](https://docs.aws.amazon.com/vpc-lattice/latest/APIReference/API_GetTargetGroup.html) API operation.", + "type": "string" + }, + "Type": { + "description": "Provides additional context for the value of ``Identifier``.\n The following lists the valid values:\n + ``elb`` if ``Identifier`` is the name of a Classic Load Balancer.\n + ``elbv2`` if ``Identifier`` is the ARN of an Application Load Balancer, Gateway Load Balancer, or Network Load Balancer target group.\n + ``vpc-lattice`` if ``Identifier`` is the ARN of a VPC Lattice target group.\n \n Required if the identifier is the name of a Classic Load Balancer.", + "type": "string" + } + }, + "required": [ + "Identifier", + "Type" + ], + "type": "object" + }, + "VCpuCountRequest": { + "additionalProperties": false, + "description": "``VCpuCountRequest`` is a property of the ``InstanceRequirements`` property of the [AWS::AutoScaling::AutoScalingGroup LaunchTemplateOverrides](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html) property type that describes the minimum and maximum number of vCPUs for an instance type.", + "properties": { + "Max": { + "description": "The maximum number of vCPUs.", + "type": "integer" + }, + "Min": { + "description": "The minimum number of vCPUs.", + "type": "integer" + } + }, + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/NotificationConfiguration" + ], + "description": "The ``AWS::AutoScaling::AutoScalingGroup`` resource defines an Amazon EC2 Auto Scaling group, which is a collection of Amazon EC2 instances that are treated as a logical grouping for the purposes of automatic scaling and management. \n For more information about Amazon EC2 Auto Scaling, see the [Amazon EC2 Auto Scaling User Guide](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html). \n Amazon EC2 Auto Scaling configures instances launched as part of an Auto Scaling group using either a [launch template](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html) or a launch configuration. We strongly recommend that you do not use launch configurations. For more information, see [Launch configurations](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-configurations.html) in the *Amazon EC2 Auto Scaling User Guide*.\n For help migrating from launch configurations to launch templates, see [Migrate CloudFormation stacks from launch configurations to launch templates](https://docs.aws.amazon.com/autoscaling/ec2/userguide/migrate-launch-configurations-with-cloudformation.html) in the *Amazon EC2 Auto Scaling User Guide*.", + "handlers": { + "create": { + "permissions": [ + "autoscaling:CreateAutoScalingGroup", + "autoscaling:UpdateAutoScalingGroup", + "autoscaling:CreateOrUpdateTags", + "autoscaling:Describe*", + "autoscaling:EnableMetricsCollection", + "autoscaling:PutNotificationConfiguration", + "cloudwatch:PutMetricAlarm", + "ec2:Describe*", + "ec2:Get*", + "ec2:RunInstances", + "elasticloadbalancing:Describe*", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "managed-fleets:Get*", + "managed-fleets:CreateAutoScalingGroup", + "managed-fleets:UpdateAutoScalingGroup", + "ssm:Get*", + "vpc-lattice:DeregisterTargets", + "vpc-lattice:GetTargetGroup", + "vpc-lattice:ListTargets", + "vpc-lattice:RegisterTargets" + ], + "timeoutInMinutes": 360 + }, + "delete": { + "permissions": [ + "autoscaling:DeleteAutoScalingGroup", + "autoscaling:UpdateAutoScalingGroup", + "autoscaling:Describe*", + "managed-fleets:Get*", + "managed-fleets:DeleteAutoScalingGroup" + ], + "timeoutInMinutes": 240 + }, + "list": { + "permissions": [ + "autoscaling:Describe*" + ] + }, + "read": { + "permissions": [ + "autoscaling:Describe*", + "managed-fleets:Get*" + ] + }, + "update": { + "permissions": [ + "autoscaling:UpdateAutoScalingGroup", + "autoscaling:CreateOrUpdateTags", + "autoscaling:DeleteTags", + "autoscaling:Describe*", + "autoscaling:EnableMetricsCollection", + "autoscaling:DisableMetricsCollection", + "autoscaling:PutNotificationConfiguration", + "autoscaling:DeleteNotificationConfiguration", + "autoscaling:DetachLoadBalancerTargetGroups", + "autoscaling:AttachLoadBalancerTargetGroups", + "autoscaling:AttachLoadBalancers", + "autoscaling:DetachLoadBalancers", + "autoscaling:AttachTrafficSources", + "autoscaling:DetachTrafficSources", + "autoscaling:DeleteLifecycleHook", + "autoscaling:PutLifecycleHook", + "cloudwatch:PutMetricAlarm", + "ec2:Describe*", + "ec2:Get*", + "ec2:RunInstances", + "elasticloadbalancing:Describe*", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "managed-fleets:Get*", + "managed-fleets:RegisterAutoScalingGroup", + "managed-fleets:DeregisterAutoScalingGroup", + "managed-fleets:UpdateAutoScalingGroup", + "ssm:Get*", + "vpc-lattice:DeregisterTargets", + "vpc-lattice:GetTargetGroup", + "vpc-lattice:ListTargets", + "vpc-lattice:RegisterTargets" + ], + "timeoutInMinutes": 660 + } + }, + "primaryIdentifier": [ + "/properties/AutoScalingGroupName" + ], + "properties": { + "AutoScalingGroupName": { + "description": "The name of the Auto Scaling group. This name must be unique per Region per account.\n The name can contain any ASCII character 33 to 126 including most punctuation characters, digits, and upper and lowercased letters.\n You cannot use a colon (:) in the name.", + "type": "string" + }, + "AvailabilityZoneDistribution": { + "$ref": "#/definitions/AvailabilityZoneDistribution", + "description": "The instance capacity distribution across Availability Zones." + }, + "AvailabilityZoneImpairmentPolicy": { + "$ref": "#/definitions/AvailabilityZoneImpairmentPolicy", + "description": "The Availability Zone impairment policy." + }, + "AvailabilityZones": { + "description": "A list of Availability Zones where instances in the Auto Scaling group can be created. Used for launching into the default VPC subnet in each Availability Zone when not using the ``VPCZoneIdentifier`` property, or for attaching a network interface when an existing network interface ID is specified in a launch template.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "CapacityRebalance": { + "description": "Indicates whether Capacity Rebalancing is enabled. Otherwise, Capacity Rebalancing is disabled. When you turn on Capacity Rebalancing, Amazon EC2 Auto Scaling attempts to launch a Spot Instance whenever Amazon EC2 notifies that a Spot Instance is at an elevated risk of interruption. After launching a new instance, it then terminates an old instance. For more information, see [Use Capacity Rebalancing to handle Amazon EC2 Spot Interruptions](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html) in the in the *Amazon EC2 Auto Scaling User Guide*.", + "type": "boolean" + }, + "CapacityReservationSpecification": { + "$ref": "#/definitions/CapacityReservationSpecification", + "description": "" + }, + "Context": { + "description": "Reserved.", + "type": "string" + }, + "Cooldown": { + "description": "*Only needed if you use simple scaling policies.* \n The amount of time, in seconds, between one scaling activity ending and another one starting due to simple scaling policies. For more information, see [Scaling cooldowns for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-scaling-cooldowns.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Default: ``300`` seconds", + "type": "string" + }, + "DefaultInstanceWarmup": { + "description": "The amount of time, in seconds, until a new instance is considered to have finished initializing and resource consumption to become stable after it enters the ``InService`` state. \n During an instance refresh, Amazon EC2 Auto Scaling waits for the warm-up period after it replaces an instance before it moves on to replacing the next instance. Amazon EC2 Auto Scaling also waits for the warm-up period before aggregating the metrics for new instances with existing instances in the Amazon CloudWatch metrics that are used for scaling, resulting in more reliable usage data. For more information, see [Set the default instance warmup for an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-default-instance-warmup.html) in the *Amazon EC2 Auto Scaling User Guide*.\n To manage various warm-up settings at the group level, we recommend that you set the default instance warmup, *even if it is set to 0 seconds*. To remove a value that you previously set, include the property but specify ``-1`` for the value. However, we strongly recommend keeping the default instance warmup enabled by specifying a value of ``0`` or other nominal value.\n Default: None", + "type": "integer" + }, + "DesiredCapacity": { + "description": "The desired capacity is the initial capacity of the Auto Scaling group at the time of its creation and the capacity it attempts to maintain. It can scale beyond this capacity if you configure automatic scaling.\n The number must be greater than or equal to the minimum size of the group and less than or equal to the maximum size of the group. If you do not specify a desired capacity when creating the stack, the default is the minimum size of the group.\n CloudFormation marks the Auto Scaling group as successful (by setting its status to CREATE_COMPLETE) when the desired capacity is reached. However, if a maximum Spot price is set in the launch template or launch configuration that you specified, then desired capacity is not used as a criteria for success. Whether your request is fulfilled depends on Spot Instance capacity and your maximum price.", + "pattern": "^[0-9]+$", + "type": "string" + }, + "DesiredCapacityType": { + "description": "The unit of measurement for the value specified for desired capacity. Amazon EC2 Auto Scaling supports ``DesiredCapacityType`` for attribute-based instance type selection only. For more information, see [Create a mixed instances group using attribute-based instance type selection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-mixed-instances-group-attribute-based-instance-type-selection.html) in the *Amazon EC2 Auto Scaling User Guide*.\n By default, Amazon EC2 Auto Scaling specifies ``units``, which translates into number of instances.\n Valid values: ``units`` | ``vcpu`` | ``memory-mib``", + "type": "string" + }, + "HealthCheckGracePeriod": { + "description": "The amount of time, in seconds, that Amazon EC2 Auto Scaling waits before checking the health status of an EC2 instance that has come into service and marking it unhealthy due to a failed health check. This is useful if your instances do not immediately pass their health checks after they enter the ``InService`` state. For more information, see [Set the health check grace period for an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/health-check-grace-period.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Default: ``0`` seconds", + "type": "integer" + }, + "HealthCheckType": { + "description": "A comma-separated value string of one or more health check types.\n The valid values are ``EC2``, ``EBS``, ``ELB``, and ``VPC_LATTICE``. ``EC2`` is the default health check and cannot be disabled. For more information, see [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Only specify ``EC2`` if you must clear a value that was previously set.", + "type": "string" + }, + "InstanceId": { + "description": "The ID of the instance used to base the launch configuration on. For more information, see [Create an Auto Scaling group using an EC2 instance](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-from-instance.html) in the *Amazon EC2 Auto Scaling User Guide*.\n If you specify ``LaunchTemplate``, ``MixedInstancesPolicy``, or ``LaunchConfigurationName``, don't specify ``InstanceId``.", + "type": "string" + }, + "InstanceMaintenancePolicy": { + "$ref": "#/definitions/InstanceMaintenancePolicy", + "description": "An instance maintenance policy. For more information, see [Set instance maintenance policy](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html) in the *Amazon EC2 Auto Scaling User Guide*." + }, + "LaunchConfigurationName": { + "description": "The name of the launch configuration to use to launch instances.\n Required only if you don't specify ``LaunchTemplate``, ``MixedInstancesPolicy``, or ``InstanceId``.", + "type": "string" + }, + "LaunchTemplate": { + "$ref": "#/definitions/LaunchTemplateSpecification", + "description": "Information used to specify the launch template and version to use to launch instances. You can alternatively associate a launch template to the Auto Scaling group by specifying a ``MixedInstancesPolicy``. For more information about creating launch templates, see [Create a launch template for an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) in the *Amazon EC2 Auto Scaling User Guide*.\n If you omit this property, you must specify ``MixedInstancesPolicy``, ``LaunchConfigurationName``, or ``InstanceId``." + }, + "LifecycleHookSpecificationList": { + "description": "One or more lifecycle hooks to add to the Auto Scaling group before instances are launched.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/LifecycleHookSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "LoadBalancerNames": { + "description": "A list of Classic Load Balancers associated with this Auto Scaling group. For Application Load Balancers, Network Load Balancers, and Gateway Load Balancers, specify the ``TargetGroupARNs`` property instead.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MaxInstanceLifetime": { + "description": "The maximum amount of time, in seconds, that an instance can be in service. The default is null. If specified, the value must be either 0 or a number equal to or greater than 86,400 seconds (1 day). For more information, see [Replace Auto Scaling instances based on maximum instance lifetime](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-max-instance-lifetime.html) in the *Amazon EC2 Auto Scaling User Guide*.", + "type": "integer" + }, + "MaxSize": { + "description": "The maximum size of the group.\n With a mixed instances policy that uses instance weighting, Amazon EC2 Auto Scaling may need to go above ``MaxSize`` to meet your capacity requirements. In this event, Amazon EC2 Auto Scaling will never go above ``MaxSize`` by more than your largest instance weight (weights that define how many units each instance contributes to the desired capacity of the group).", + "pattern": "^[0-9]+$", + "type": "string" + }, + "MetricsCollection": { + "description": "Enables the monitoring of group metrics of an Auto Scaling group. By default, these metrics are disabled.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/MetricsCollection" + }, + "type": "array", + "uniqueItems": false + }, + "MinSize": { + "description": "The minimum size of the group.", + "pattern": "^[0-9]+$", + "type": "string" + }, + "MixedInstancesPolicy": { + "$ref": "#/definitions/MixedInstancesPolicy", + "description": "An embedded object that specifies a mixed instances policy.\n The policy includes properties that not only define the distribution of On-Demand Instances and Spot Instances, the maximum price to pay for Spot Instances (optional), and how the Auto Scaling group allocates instance types to fulfill On-Demand and Spot capacities, but also the properties that specify the instance configuration information\u2014the launch template and instance types. The policy can also include a weight for each instance type and different launch templates for individual instance types.\n For more information, see [Auto Scaling groups with multiple instance types and purchase options](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html) in the *Amazon EC2 Auto Scaling User Guide*." + }, + "NewInstancesProtectedFromScaleIn": { + "description": "Indicates whether newly launched instances are protected from termination by Amazon EC2 Auto Scaling when scaling in. For more information about preventing instances from terminating on scale in, see [Use instance scale-in protection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html) in the *Amazon EC2 Auto Scaling User Guide*.", + "type": "boolean" + }, + "NotificationConfiguration": { + "$ref": "#/definitions/NotificationConfiguration", + "description": "" + }, + "NotificationConfigurations": { + "description": "Configures an Auto Scaling group to send notifications when specified events take place.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/NotificationConfiguration" + }, + "type": "array", + "uniqueItems": false + }, + "PlacementGroup": { + "description": "The name of the placement group into which to launch your instances. For more information, see [Placement groups](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) in the *Amazon EC2 User Guide for Linux Instances*.\n A *cluster* placement group is a logical grouping of instances within a single Availability Zone. You cannot specify multiple Availability Zones and a cluster placement group.", + "type": "string" + }, + "ServiceLinkedRoleARN": { + "description": "The Amazon Resource Name (ARN) of the service-linked role that the Auto Scaling group uses to call other AWS service on your behalf. By default, Amazon EC2 Auto Scaling uses a service-linked role named ``AWSServiceRoleForAutoScaling``, which it creates if it does not exist. For more information, see [Service-linked roles](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html) in the *Amazon EC2 Auto Scaling User Guide*.", + "type": "string" + }, + "SkipZonalShiftValidation": { + "description": "", + "type": "boolean" + }, + "Tags": { + "description": "One or more tags. You can tag your Auto Scaling group and propagate the tags to the Amazon EC2 instances it launches. Tags are not propagated to Amazon EBS volumes. To add tags to Amazon EBS volumes, specify the tags in a launch template but use caution. If the launch template specifies an instance tag with a key that is also specified for the Auto Scaling group, Amazon EC2 Auto Scaling overrides the value of that instance tag with the value specified by the Auto Scaling group. For more information, see [Tag Auto Scaling groups and instances](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-tagging.html) in the *Amazon EC2 Auto Scaling User Guide*.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagProperty" + }, + "type": "array" + }, + "TargetGroupARNs": { + "description": "The Amazon Resource Names (ARN) of the Elastic Load Balancing target groups to associate with the Auto Scaling group. Instances are registered as targets with the target groups. The target groups receive incoming traffic and route requests to one or more registered targets. For more information, see [Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in the *Amazon EC2 Auto Scaling User Guide*.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "TerminationPolicies": { + "description": "A policy or a list of policies that are used to select the instance to terminate. These policies are executed in the order that you list them. For more information, see [Configure termination policies for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-termination-policies.html) in the *Amazon EC2 Auto Scaling User Guide*.\n Valid values: ``Default`` | ``AllocationStrategy`` | ``ClosestToNextInstanceHour`` | ``NewestInstance`` | ``OldestInstance`` | ``OldestLaunchConfiguration`` | ``OldestLaunchTemplate`` | ``arn:aws:lambda:region:account-id:function:my-function:my-alias``", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "TrafficSources": { + "description": "The traffic sources associated with this Auto Scaling group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TrafficSourceIdentifier" + }, + "type": "array", + "uniqueItems": true + }, + "VPCZoneIdentifier": { + "description": "A list of subnet IDs for a virtual private cloud (VPC) where instances in the Auto Scaling group can be created.\n If this resource specifies public subnets and is also in a VPC that is defined in the same stack template, you must use the [DependsOn attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) to declare a dependency on the [VPC-gateway attachment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html).\n When you update ``VPCZoneIdentifier``, this retains the same Auto Scaling group and replaces old instances with new ones, according to the specified subnets. You can optionally specify how CloudFormation handles these updates by using an [UpdatePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html).\n Required to launch instances into a nondefault VPC. If you specify ``VPCZoneIdentifier`` with ``AvailabilityZones``, the subnets that you specify for this property must reside in those Availability Zones.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "propertyTransform": { + "/properties/LaunchConfigurationName": "InstanceId? AutoScalingGroupName : LaunchConfigurationName" + }, + "required": [ + "MinSize", + "MaxSize" + ], + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AutoScaling::AutoScalingGroup", + "writeOnlyProperties": [ + "/properties/SkipZonalShiftValidation", + "/properties/InstanceId" + ] +} diff --git a/src/schema/aws-autoscaling-launchconfiguration.json b/src/schema/aws-autoscaling-launchconfiguration.json index 783347da..e0dde6c5 100644 --- a/src/schema/aws-autoscaling-launchconfiguration.json +++ b/src/schema/aws-autoscaling-launchconfiguration.json @@ -1,255 +1,255 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AssociatePublicIpAddress", - "/properties/BlockDeviceMappings", - "/properties/ClassicLinkVPCId", - "/properties/ClassicLinkVPCSecurityGroups", - "/properties/EbsOptimized", - "/properties/IamInstanceProfile", - "/properties/ImageId", - "/properties/InstanceId", - "/properties/InstanceMonitoring", - "/properties/InstanceType", - "/properties/KernelId", - "/properties/KeyName", - "/properties/LaunchConfigurationName", - "/properties/MetadataOptions", - "/properties/PlacementTenancy", - "/properties/RamDiskId", - "/properties/SecurityGroups", - "/properties/SpotPrice", - "/properties/UserData" - ], - "definitions": { - "BlockDevice": { - "additionalProperties": false, - "description": "BlockDevice is a subproperty of BlockDeviceMapping that describes an Amazon EBS volume.", - "properties": { - "DeleteOnTermination": { - "description": "Indicates whether the volume is deleted on instance termination. ", - "type": "boolean" - }, - "Encrypted": { - "description": "Specifies whether the volume should be encrypted. ", - "type": "boolean" - }, - "Iops": { - "description": "The number of input/output (I/O) operations per second (IOPS) to provision for the volume. ", - "type": "integer" - }, - "SnapshotId": { - "description": "The snapshot ID of the volume to use.", - "type": "string" - }, - "Throughput": { - "description": "The throughput (MiBps) to provision for a gp3 volume.", - "type": "integer" - }, - "VolumeSize": { - "description": "The volume size, in GiBs.", - "type": "integer" - }, - "VolumeType": { - "description": "The volume type.", - "type": "string" - } - }, - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "description": "BlockDeviceMapping is a property of AWS::AutoScaling::LaunchConfiguration that describes a block device mapping for an Auto Scaling group.", - "properties": { - "DeviceName": { - "description": "The device name exposed to the EC2 instance (for example, /dev/sdh or xvdh). ", - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/BlockDevice", - "description": "Parameters used to automatically set up EBS volumes when an instance is launched." - }, - "NoDevice": { - "description": "Setting this value to true suppresses the specified device included in the block device mapping of the AMI.", - "type": "boolean" - }, - "VirtualName": { - "description": "The name of the virtual device.", - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "type": "object" - }, - "MetadataOptions": { - "additionalProperties": false, - "description": "MetadataOptions is a property of AWS::AutoScaling::LaunchConfiguration that describes metadata options for the instances.", - "properties": { - "HttpEndpoint": { - "description": "This parameter enables or disables the HTTP metadata endpoint on your instances.", - "type": "string" - }, - "HttpPutResponseHopLimit": { - "description": "The desired HTTP PUT response hop limit for instance metadata requests.", - "type": "integer" - }, - "HttpTokens": { - "description": "The state of token usage for your instance metadata requests.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The AWS::AutoScaling::LaunchConfiguration resource specifies the launch configuration that can be used by an Auto Scaling group to configure Amazon EC2 instances.", - "handlers": { - "create": { - "permissions": [ - "autoscaling:CreateLaunchConfiguration", - "autoscaling:DescribeLaunchConfigurations", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "autoscaling:DeleteLaunchConfiguration", - "autoscaling:DescribeLaunchConfigurations" - ] - }, - "list": { - "permissions": [ - "autoscaling:DescribeLaunchConfigurations" - ] - }, - "read": { - "permissions": [ - "autoscaling:DescribeLaunchConfigurations" - ] - } - }, - "primaryIdentifier": [ - "/properties/LaunchConfigurationName" - ], - "properties": { - "AssociatePublicIpAddress": { - "description": "For Auto Scaling groups that are running in a virtual private cloud (VPC), specifies whether to assign a public IP address to the group's instances.", - "type": "boolean" - }, - "BlockDeviceMappings": { - "description": "Specifies how block devices are exposed to the instance. You can specify virtual devices and EBS volumes.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": true - }, - "ClassicLinkVPCId": { - "description": "The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to.", - "type": "string" - }, - "ClassicLinkVPCSecurityGroups": { - "description": "The IDs of one or more security groups for the VPC that you specified in the ClassicLinkVPCId property.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "EbsOptimized": { - "description": "Specifies whether the launch configuration is optimized for EBS I/O (true) or not (false).", - "type": "boolean" - }, - "IamInstanceProfile": { - "description": "Provides the name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance. The instance profile contains the IAM role.", - "type": "string" - }, - "ImageId": { - "description": "Provides the unique ID of the Amazon Machine Image (AMI) that was assigned during registration.", - "type": "string" - }, - "InstanceId": { - "description": "The ID of the Amazon EC2 instance you want to use to create the launch configuration.", - "type": "string" - }, - "InstanceMonitoring": { - "description": "Controls whether instances in this group are launched with detailed (true) or basic (false) monitoring.", - "type": "boolean" - }, - "InstanceType": { - "description": "Specifies the instance type of the EC2 instance.", - "type": "string" - }, - "KernelId": { - "description": "Provides the ID of the kernel associated with the EC2 AMI.", - "type": "string" - }, - "KeyName": { - "description": "Provides the name of the EC2 key pair.", - "type": "string" - }, - "LaunchConfigurationName": { - "description": "The name of the launch configuration. This name must be unique per Region per account.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "MetadataOptions": { - "$ref": "#/definitions/MetadataOptions", - "description": "The metadata options for the instances." - }, - "PlacementTenancy": { - "description": "The tenancy of the instance, either default or dedicated.", - "type": "string" - }, - "RamDiskId": { - "description": "The ID of the RAM disk to select.", - "type": "string" - }, - "SecurityGroups": { - "description": "A list that contains the security groups to assign to the instances in the Auto Scaling group.", - "insertionOrder": false, - "items": { - "anyOf": [ - { - "relationshipRef": { - "propertyPath": "/properties/GroupId", - "typeName": "AWS::EC2::SecurityGroup" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/Id", - "typeName": "AWS::EC2::SecurityGroup" - } - } - ], - "type": "string" - }, - "type": "array" - }, - "SpotPrice": { - "description": "The maximum hourly price you are willing to pay for any Spot Instances launched to fulfill the request.", - "type": "string" - }, - "UserData": { - "description": "The Base64-encoded user data to make available to the launched EC2 instances.", - "maxLength": 21847, - "type": "string" - } - }, - "required": [ - "ImageId", - "InstanceType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-autoscaling.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::AutoScaling::LaunchConfiguration", - "writeOnlyProperties": [ - "/properties/InstanceId" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AssociatePublicIpAddress", + "/properties/BlockDeviceMappings", + "/properties/ClassicLinkVPCId", + "/properties/ClassicLinkVPCSecurityGroups", + "/properties/EbsOptimized", + "/properties/IamInstanceProfile", + "/properties/ImageId", + "/properties/InstanceId", + "/properties/InstanceMonitoring", + "/properties/InstanceType", + "/properties/KernelId", + "/properties/KeyName", + "/properties/LaunchConfigurationName", + "/properties/MetadataOptions", + "/properties/PlacementTenancy", + "/properties/RamDiskId", + "/properties/SecurityGroups", + "/properties/SpotPrice", + "/properties/UserData" + ], + "definitions": { + "BlockDevice": { + "additionalProperties": false, + "description": "BlockDevice is a subproperty of BlockDeviceMapping that describes an Amazon EBS volume.", + "properties": { + "DeleteOnTermination": { + "description": "Indicates whether the volume is deleted on instance termination. ", + "type": "boolean" + }, + "Encrypted": { + "description": "Specifies whether the volume should be encrypted. ", + "type": "boolean" + }, + "Iops": { + "description": "The number of input/output (I/O) operations per second (IOPS) to provision for the volume. ", + "type": "integer" + }, + "SnapshotId": { + "description": "The snapshot ID of the volume to use.", + "type": "string" + }, + "Throughput": { + "description": "The throughput (MiBps) to provision for a gp3 volume.", + "type": "integer" + }, + "VolumeSize": { + "description": "The volume size, in GiBs.", + "type": "integer" + }, + "VolumeType": { + "description": "The volume type.", + "type": "string" + } + }, + "type": "object" + }, + "BlockDeviceMapping": { + "additionalProperties": false, + "description": "BlockDeviceMapping is a property of AWS::AutoScaling::LaunchConfiguration that describes a block device mapping for an Auto Scaling group.", + "properties": { + "DeviceName": { + "description": "The device name exposed to the EC2 instance (for example, /dev/sdh or xvdh). ", + "type": "string" + }, + "Ebs": { + "$ref": "#/definitions/BlockDevice", + "description": "Parameters used to automatically set up EBS volumes when an instance is launched." + }, + "NoDevice": { + "description": "Setting this value to true suppresses the specified device included in the block device mapping of the AMI.", + "type": "boolean" + }, + "VirtualName": { + "description": "The name of the virtual device.", + "type": "string" + } + }, + "required": [ + "DeviceName" + ], + "type": "object" + }, + "MetadataOptions": { + "additionalProperties": false, + "description": "MetadataOptions is a property of AWS::AutoScaling::LaunchConfiguration that describes metadata options for the instances.", + "properties": { + "HttpEndpoint": { + "description": "This parameter enables or disables the HTTP metadata endpoint on your instances.", + "type": "string" + }, + "HttpPutResponseHopLimit": { + "description": "The desired HTTP PUT response hop limit for instance metadata requests.", + "type": "integer" + }, + "HttpTokens": { + "description": "The state of token usage for your instance metadata requests.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The AWS::AutoScaling::LaunchConfiguration resource specifies the launch configuration that can be used by an Auto Scaling group to configure Amazon EC2 instances.", + "handlers": { + "create": { + "permissions": [ + "autoscaling:CreateLaunchConfiguration", + "autoscaling:DescribeLaunchConfigurations", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "autoscaling:DeleteLaunchConfiguration", + "autoscaling:DescribeLaunchConfigurations" + ] + }, + "list": { + "permissions": [ + "autoscaling:DescribeLaunchConfigurations" + ] + }, + "read": { + "permissions": [ + "autoscaling:DescribeLaunchConfigurations" + ] + } + }, + "primaryIdentifier": [ + "/properties/LaunchConfigurationName" + ], + "properties": { + "AssociatePublicIpAddress": { + "description": "For Auto Scaling groups that are running in a virtual private cloud (VPC), specifies whether to assign a public IP address to the group's instances.", + "type": "boolean" + }, + "BlockDeviceMappings": { + "description": "Specifies how block devices are exposed to the instance. You can specify virtual devices and EBS volumes.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/BlockDeviceMapping" + }, + "type": "array", + "uniqueItems": true + }, + "ClassicLinkVPCId": { + "description": "The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to.", + "type": "string" + }, + "ClassicLinkVPCSecurityGroups": { + "description": "The IDs of one or more security groups for the VPC that you specified in the ClassicLinkVPCId property.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "EbsOptimized": { + "description": "Specifies whether the launch configuration is optimized for EBS I/O (true) or not (false).", + "type": "boolean" + }, + "IamInstanceProfile": { + "description": "Provides the name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance. The instance profile contains the IAM role.", + "type": "string" + }, + "ImageId": { + "description": "Provides the unique ID of the Amazon Machine Image (AMI) that was assigned during registration.", + "type": "string" + }, + "InstanceId": { + "description": "The ID of the Amazon EC2 instance you want to use to create the launch configuration.", + "type": "string" + }, + "InstanceMonitoring": { + "description": "Controls whether instances in this group are launched with detailed (true) or basic (false) monitoring.", + "type": "boolean" + }, + "InstanceType": { + "description": "Specifies the instance type of the EC2 instance.", + "type": "string" + }, + "KernelId": { + "description": "Provides the ID of the kernel associated with the EC2 AMI.", + "type": "string" + }, + "KeyName": { + "description": "Provides the name of the EC2 key pair.", + "type": "string" + }, + "LaunchConfigurationName": { + "description": "The name of the launch configuration. This name must be unique per Region per account.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "MetadataOptions": { + "$ref": "#/definitions/MetadataOptions", + "description": "The metadata options for the instances." + }, + "PlacementTenancy": { + "description": "The tenancy of the instance, either default or dedicated.", + "type": "string" + }, + "RamDiskId": { + "description": "The ID of the RAM disk to select.", + "type": "string" + }, + "SecurityGroups": { + "description": "A list that contains the security groups to assign to the instances in the Auto Scaling group.", + "insertionOrder": false, + "items": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/GroupId", + "typeName": "AWS::EC2::SecurityGroup" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/Id", + "typeName": "AWS::EC2::SecurityGroup" + } + } + ], + "type": "string" + }, + "type": "array" + }, + "SpotPrice": { + "description": "The maximum hourly price you are willing to pay for any Spot Instances launched to fulfill the request.", + "type": "string" + }, + "UserData": { + "description": "The Base64-encoded user data to make available to the launched EC2 instances.", + "maxLength": 21847, + "type": "string" + } + }, + "required": [ + "ImageId", + "InstanceType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-autoscaling.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::AutoScaling::LaunchConfiguration", + "writeOnlyProperties": [ + "/properties/InstanceId" + ] +} diff --git a/src/schema/aws-autoscaling-lifecyclehook.json b/src/schema/aws-autoscaling-lifecyclehook.json index 0b43afd3..2f6494a7 100644 --- a/src/schema/aws-autoscaling-lifecyclehook.json +++ b/src/schema/aws-autoscaling-lifecyclehook.json @@ -1,92 +1,92 @@ -{ - "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/master/src/main/resources/schema/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AutoScalingGroupName", - "/properties/LifecycleHookName" - ], - "description": "Resource Type definition for AWS::AutoScaling::LifecycleHook", - "handlers": { - "create": { - "permissions": [ - "autoscaling:PutLifecycleHook", - "autoscaling:DescribeLifecycleHooks", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "autoscaling:DeleteLifecycleHook", - "autoscaling:DescribeLifecycleHooks" - ] - }, - "list": { - "permissions": [ - "autoscaling:DescribeLifecycleHooks" - ] - }, - "read": { - "permissions": [ - "autoscaling:DescribeLifecycleHooks" - ] - }, - "update": { - "permissions": [ - "autoscaling:PutLifecycleHook", - "autoscaling:DescribeLifecycleHooks", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/AutoScalingGroupName", - "/properties/LifecycleHookName" - ], - "properties": { - "AutoScalingGroupName": { - "description": "The name of the Auto Scaling group for the lifecycle hook.", - "type": "string" - }, - "DefaultResult": { - "description": "The action the Auto Scaling group takes when the lifecycle hook timeout elapses or if an unexpected failure occurs. The valid values are CONTINUE and ABANDON (default).", - "type": "string" - }, - "HeartbeatTimeout": { - "description": "The maximum time, in seconds, that can elapse before the lifecycle hook times out. The range is from 30 to 7200 seconds. The default value is 3600 seconds (1 hour). If the lifecycle hook times out, Amazon EC2 Auto Scaling performs the action that you specified in the DefaultResult property.", - "type": "integer" - }, - "LifecycleHookName": { - "description": "The name of the lifecycle hook.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "LifecycleTransition": { - "description": "The instance state to which you want to attach the lifecycle hook.", - "type": "string" - }, - "NotificationMetadata": { - "description": "Additional information that is included any time Amazon EC2 Auto Scaling sends a message to the notification target.", - "maxLength": 1023, - "minLength": 1, - "type": "string" - }, - "NotificationTargetARN": { - "description": "The Amazon Resource Name (ARN) of the notification target that Amazon EC2 Auto Scaling uses to notify you when an instance is in the transition state for the lifecycle hook. You can specify an Amazon SQS queue or an Amazon SNS topic. The notification message includes the following information: lifecycle action token, user account ID, Auto Scaling group name, lifecycle hook name, instance ID, lifecycle transition, and notification metadata.", - "type": "string" - }, - "RoleARN": { - "description": "The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target, for example, an Amazon SNS topic or an Amazon SQS queue.", - "type": "string" - } - }, - "required": [ - "LifecycleTransition", - "AutoScalingGroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-autoscaling.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::AutoScaling::LifecycleHook" -} +{ + "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/master/src/main/resources/schema/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AutoScalingGroupName", + "/properties/LifecycleHookName" + ], + "description": "Resource Type definition for AWS::AutoScaling::LifecycleHook", + "handlers": { + "create": { + "permissions": [ + "autoscaling:PutLifecycleHook", + "autoscaling:DescribeLifecycleHooks", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "autoscaling:DeleteLifecycleHook", + "autoscaling:DescribeLifecycleHooks" + ] + }, + "list": { + "permissions": [ + "autoscaling:DescribeLifecycleHooks" + ] + }, + "read": { + "permissions": [ + "autoscaling:DescribeLifecycleHooks" + ] + }, + "update": { + "permissions": [ + "autoscaling:PutLifecycleHook", + "autoscaling:DescribeLifecycleHooks", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/AutoScalingGroupName", + "/properties/LifecycleHookName" + ], + "properties": { + "AutoScalingGroupName": { + "description": "The name of the Auto Scaling group for the lifecycle hook.", + "type": "string" + }, + "DefaultResult": { + "description": "The action the Auto Scaling group takes when the lifecycle hook timeout elapses or if an unexpected failure occurs. The valid values are CONTINUE and ABANDON (default).", + "type": "string" + }, + "HeartbeatTimeout": { + "description": "The maximum time, in seconds, that can elapse before the lifecycle hook times out. The range is from 30 to 7200 seconds. The default value is 3600 seconds (1 hour). If the lifecycle hook times out, Amazon EC2 Auto Scaling performs the action that you specified in the DefaultResult property.", + "type": "integer" + }, + "LifecycleHookName": { + "description": "The name of the lifecycle hook.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "LifecycleTransition": { + "description": "The instance state to which you want to attach the lifecycle hook.", + "type": "string" + }, + "NotificationMetadata": { + "description": "Additional information that is included any time Amazon EC2 Auto Scaling sends a message to the notification target.", + "maxLength": 1023, + "minLength": 1, + "type": "string" + }, + "NotificationTargetARN": { + "description": "The Amazon Resource Name (ARN) of the notification target that Amazon EC2 Auto Scaling uses to notify you when an instance is in the transition state for the lifecycle hook. You can specify an Amazon SQS queue or an Amazon SNS topic. The notification message includes the following information: lifecycle action token, user account ID, Auto Scaling group name, lifecycle hook name, instance ID, lifecycle transition, and notification metadata.", + "type": "string" + }, + "RoleARN": { + "description": "The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target, for example, an Amazon SNS topic or an Amazon SQS queue.", + "type": "string" + } + }, + "required": [ + "LifecycleTransition", + "AutoScalingGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-autoscaling.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::AutoScaling::LifecycleHook" +} diff --git a/src/schema/aws-autoscaling-scalingpolicy.json b/src/schema/aws-autoscaling-scalingpolicy.json index 6b90f130..e5543999 100644 --- a/src/schema/aws-autoscaling-scalingpolicy.json +++ b/src/schema/aws-autoscaling-scalingpolicy.json @@ -1,488 +1,497 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AutoScalingGroupName" - ], - "definitions": { - "CustomizedMetricSpecification": { - "additionalProperties": false, - "properties": { - "Dimensions": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MetricDimension" - }, - "type": "array", - "uniqueItems": true - }, - "MetricName": { - "type": "string" - }, - "Metrics": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TargetTrackingMetricDataQuery" - }, - "type": "array", - "uniqueItems": true - }, - "Namespace": { - "type": "string" - }, - "Statistic": { - "type": "string" - }, - "Unit": { - "type": "string" - } - }, - "required": [], - "type": "object" - }, - "Metric": { - "additionalProperties": false, - "properties": { - "Dimensions": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MetricDimension" - }, - "type": "array", - "uniqueItems": true - }, - "MetricName": { - "type": "string" - }, - "Namespace": { - "type": "string" - } - }, - "required": [ - "MetricName", - "Namespace" - ], - "type": "object" - }, - "MetricDataQuery": { - "additionalProperties": false, - "properties": { - "Expression": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Label": { - "type": "string" - }, - "MetricStat": { - "$ref": "#/definitions/MetricStat" - }, - "ReturnData": { - "type": "boolean" - } - }, - "required": [ - "Id" - ], - "type": "object" - }, - "MetricDimension": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Name" - ], - "type": "object" - }, - "MetricStat": { - "additionalProperties": false, - "properties": { - "Metric": { - "$ref": "#/definitions/Metric" - }, - "Stat": { - "type": "string" - }, - "Unit": { - "type": "string" - } - }, - "required": [ - "Stat", - "Metric" - ], - "type": "object" - }, - "PredefinedMetricSpecification": { - "additionalProperties": false, - "properties": { - "PredefinedMetricType": { - "type": "string" - }, - "ResourceLabel": { - "type": "string" - } - }, - "required": [ - "PredefinedMetricType" - ], - "type": "object" - }, - "PredictiveScalingConfiguration": { - "additionalProperties": false, - "properties": { - "MaxCapacityBreachBehavior": { - "type": "string" - }, - "MaxCapacityBuffer": { - "type": "integer" - }, - "MetricSpecifications": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PredictiveScalingMetricSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Mode": { - "type": "string" - }, - "SchedulingBufferTime": { - "type": "integer" - } - }, - "required": [ - "MetricSpecifications" - ], - "type": "object" - }, - "PredictiveScalingCustomizedCapacityMetric": { - "additionalProperties": false, - "properties": { - "MetricDataQueries": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MetricDataQuery" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "MetricDataQueries" - ], - "type": "object" - }, - "PredictiveScalingCustomizedLoadMetric": { - "additionalProperties": false, - "properties": { - "MetricDataQueries": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MetricDataQuery" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "MetricDataQueries" - ], - "type": "object" - }, - "PredictiveScalingCustomizedScalingMetric": { - "additionalProperties": false, - "properties": { - "MetricDataQueries": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MetricDataQuery" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "MetricDataQueries" - ], - "type": "object" - }, - "PredictiveScalingMetricSpecification": { - "additionalProperties": false, - "properties": { - "CustomizedCapacityMetricSpecification": { - "$ref": "#/definitions/PredictiveScalingCustomizedCapacityMetric" - }, - "CustomizedLoadMetricSpecification": { - "$ref": "#/definitions/PredictiveScalingCustomizedLoadMetric" - }, - "CustomizedScalingMetricSpecification": { - "$ref": "#/definitions/PredictiveScalingCustomizedScalingMetric" - }, - "PredefinedLoadMetricSpecification": { - "$ref": "#/definitions/PredictiveScalingPredefinedLoadMetric" - }, - "PredefinedMetricPairSpecification": { - "$ref": "#/definitions/PredictiveScalingPredefinedMetricPair" - }, - "PredefinedScalingMetricSpecification": { - "$ref": "#/definitions/PredictiveScalingPredefinedScalingMetric" - }, - "TargetValue": { - "type": "number" - } - }, - "required": [ - "TargetValue" - ], - "type": "object" - }, - "PredictiveScalingPredefinedLoadMetric": { - "additionalProperties": false, - "properties": { - "PredefinedMetricType": { - "type": "string" - }, - "ResourceLabel": { - "type": "string" - } - }, - "required": [ - "PredefinedMetricType" - ], - "type": "object" - }, - "PredictiveScalingPredefinedMetricPair": { - "additionalProperties": false, - "properties": { - "PredefinedMetricType": { - "type": "string" - }, - "ResourceLabel": { - "type": "string" - } - }, - "required": [ - "PredefinedMetricType" - ], - "type": "object" - }, - "PredictiveScalingPredefinedScalingMetric": { - "additionalProperties": false, - "properties": { - "PredefinedMetricType": { - "type": "string" - }, - "ResourceLabel": { - "type": "string" - } - }, - "required": [ - "PredefinedMetricType" - ], - "type": "object" - }, - "StepAdjustment": { - "additionalProperties": false, - "insertionOrder": false, - "properties": { - "MetricIntervalLowerBound": { - "type": "number" - }, - "MetricIntervalUpperBound": { - "type": "number" - }, - "ScalingAdjustment": { - "type": "integer" - } - }, - "required": [ - "ScalingAdjustment" - ], - "type": "object" - }, - "TargetTrackingConfiguration": { - "additionalProperties": false, - "properties": { - "CustomizedMetricSpecification": { - "$ref": "#/definitions/CustomizedMetricSpecification" - }, - "DisableScaleIn": { - "type": "boolean" - }, - "PredefinedMetricSpecification": { - "$ref": "#/definitions/PredefinedMetricSpecification" - }, - "TargetValue": { - "type": "number" - } - }, - "required": [ - "TargetValue" - ], - "type": "object" - }, - "TargetTrackingMetricDataQuery": { - "additionalProperties": false, - "properties": { - "Expression": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Label": { - "type": "string" - }, - "MetricStat": { - "$ref": "#/definitions/TargetTrackingMetricStat" - }, - "ReturnData": { - "type": "boolean" - } - }, - "required": [ - "Id" - ], - "type": "object" - }, - "TargetTrackingMetricStat": { - "additionalProperties": false, - "properties": { - "Metric": { - "$ref": "#/definitions/Metric" - }, - "Stat": { - "type": "string" - }, - "Unit": { - "type": "string" - } - }, - "required": [ - "Stat", - "Metric" - ], - "type": "object" - } - }, - "description": "The AWS::AutoScaling::ScalingPolicy resource specifies an Amazon EC2 Auto Scaling scaling policy so that the Auto Scaling group can scale the number of instances available for your application.", - "handlers": { - "create": { - "permissions": [ - "autoscaling:DescribePolicies", - "autoscaling:PutScalingPolicy", - "cloudwatch:GetMetricData" - ] - }, - "delete": { - "permissions": [ - "autoscaling:DeletePolicy", - "autoscaling:DescribePolicies" - ] - }, - "list": { - "permissions": [ - "autoscaling:DescribePolicies" - ] - }, - "read": { - "permissions": [ - "autoscaling:DescribePolicies" - ] - }, - "update": { - "permissions": [ - "autoscaling:DescribePolicies", - "autoscaling:PutScalingPolicy", - "cloudwatch:GetMetricData" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "AdjustmentType": { - "description": "Specifies how the scaling adjustment is interpreted. The valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.", - "type": "string" - }, - "Arn": { - "description": "The ARN of the AutoScaling scaling policy", - "type": "string" - }, - "AutoScalingGroupName": { - "description": "The name of the Auto Scaling group.", - "type": "string" - }, - "Cooldown": { - "description": "The duration of the policy's cooldown period, in seconds. When a cooldown period is specified here, it overrides the default cooldown period defined for the Auto Scaling group.", - "type": "string" - }, - "EstimatedInstanceWarmup": { - "description": "The estimated time, in seconds, until a newly launched instance can contribute to the CloudWatch metrics. If not provided, the default is to use the value from the default cooldown period for the Auto Scaling group. Valid only if the policy type is TargetTrackingScaling or StepScaling.", - "type": "integer" - }, - "MetricAggregationType": { - "description": "The aggregation type for the CloudWatch metrics. The valid values are Minimum, Maximum, and Average. If the aggregation type is null, the value is treated as Average. Valid only if the policy type is StepScaling.", - "type": "string" - }, - "MinAdjustmentMagnitude": { - "description": "The minimum value to scale by when the adjustment type is PercentChangeInCapacity. For example, suppose that you create a step scaling policy to scale out an Auto Scaling group by 25 percent and you specify a MinAdjustmentMagnitude of 2. If the group has 4 instances and the scaling policy is performed, 25 percent of 4 is 1. However, because you specified a MinAdjustmentMagnitude of 2, Amazon EC2 Auto Scaling scales out the group by 2 instances.", - "type": "integer" - }, - "PolicyName": { - "type": "string" - }, - "PolicyType": { - "description": "One of the following policy types: TargetTrackingScaling, StepScaling, SimpleScaling (default), PredictiveScaling", - "type": "string" - }, - "PredictiveScalingConfiguration": { - "$ref": "#/definitions/PredictiveScalingConfiguration", - "description": "A predictive scaling policy. Includes support for predefined metrics only." - }, - "ScalingAdjustment": { - "description": "The amount by which to scale, based on the specified adjustment type. A positive value adds to the current capacity while a negative number removes from the current capacity. For exact capacity, you must specify a positive value. Required if the policy type is SimpleScaling. (Not used with any other policy type.)", - "type": "integer" - }, - "StepAdjustments": { - "description": "A set of adjustments that enable you to scale based on the size of the alarm breach. Required if the policy type is StepScaling. (Not used with any other policy type.)", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/StepAdjustment" - }, - "type": "array", - "uniqueItems": true - }, - "TargetTrackingConfiguration": { - "$ref": "#/definitions/TargetTrackingConfiguration", - "description": "A target tracking scaling policy. Includes support for predefined or customized metrics." - } - }, - "readOnlyProperties": [ - "/properties/PolicyName", - "/properties/Arn" - ], - "required": [ - "AutoScalingGroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-autoscaling.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::AutoScaling::ScalingPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AutoScalingGroupName" + ], + "definitions": { + "CustomizedMetricSpecification": { + "additionalProperties": false, + "properties": { + "Dimensions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MetricDimension" + }, + "type": "array", + "uniqueItems": true + }, + "MetricName": { + "type": "string" + }, + "Metrics": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TargetTrackingMetricDataQuery" + }, + "type": "array", + "uniqueItems": true + }, + "Namespace": { + "type": "string" + }, + "Period": { + "type": "integer" + }, + "Statistic": { + "type": "string" + }, + "Unit": { + "type": "string" + } + }, + "required": [], + "type": "object" + }, + "Metric": { + "additionalProperties": false, + "properties": { + "Dimensions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MetricDimension" + }, + "type": "array", + "uniqueItems": true + }, + "MetricName": { + "type": "string" + }, + "Namespace": { + "type": "string" + } + }, + "required": [ + "MetricName", + "Namespace" + ], + "type": "object" + }, + "MetricDataQuery": { + "additionalProperties": false, + "properties": { + "Expression": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Label": { + "type": "string" + }, + "MetricStat": { + "$ref": "#/definitions/MetricStat" + }, + "ReturnData": { + "type": "boolean" + } + }, + "required": [ + "Id" + ], + "type": "object" + }, + "MetricDimension": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Name" + ], + "type": "object" + }, + "MetricStat": { + "additionalProperties": false, + "properties": { + "Metric": { + "$ref": "#/definitions/Metric" + }, + "Stat": { + "type": "string" + }, + "Unit": { + "type": "string" + } + }, + "required": [ + "Stat", + "Metric" + ], + "type": "object" + }, + "PredefinedMetricSpecification": { + "additionalProperties": false, + "properties": { + "PredefinedMetricType": { + "type": "string" + }, + "ResourceLabel": { + "type": "string" + } + }, + "required": [ + "PredefinedMetricType" + ], + "type": "object" + }, + "PredictiveScalingConfiguration": { + "additionalProperties": false, + "properties": { + "MaxCapacityBreachBehavior": { + "type": "string" + }, + "MaxCapacityBuffer": { + "type": "integer" + }, + "MetricSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PredictiveScalingMetricSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "Mode": { + "type": "string" + }, + "SchedulingBufferTime": { + "type": "integer" + } + }, + "required": [ + "MetricSpecifications" + ], + "type": "object" + }, + "PredictiveScalingCustomizedCapacityMetric": { + "additionalProperties": false, + "properties": { + "MetricDataQueries": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MetricDataQuery" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "MetricDataQueries" + ], + "type": "object" + }, + "PredictiveScalingCustomizedLoadMetric": { + "additionalProperties": false, + "properties": { + "MetricDataQueries": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MetricDataQuery" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "MetricDataQueries" + ], + "type": "object" + }, + "PredictiveScalingCustomizedScalingMetric": { + "additionalProperties": false, + "properties": { + "MetricDataQueries": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MetricDataQuery" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "MetricDataQueries" + ], + "type": "object" + }, + "PredictiveScalingMetricSpecification": { + "additionalProperties": false, + "properties": { + "CustomizedCapacityMetricSpecification": { + "$ref": "#/definitions/PredictiveScalingCustomizedCapacityMetric" + }, + "CustomizedLoadMetricSpecification": { + "$ref": "#/definitions/PredictiveScalingCustomizedLoadMetric" + }, + "CustomizedScalingMetricSpecification": { + "$ref": "#/definitions/PredictiveScalingCustomizedScalingMetric" + }, + "PredefinedLoadMetricSpecification": { + "$ref": "#/definitions/PredictiveScalingPredefinedLoadMetric" + }, + "PredefinedMetricPairSpecification": { + "$ref": "#/definitions/PredictiveScalingPredefinedMetricPair" + }, + "PredefinedScalingMetricSpecification": { + "$ref": "#/definitions/PredictiveScalingPredefinedScalingMetric" + }, + "TargetValue": { + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + }, + "PredictiveScalingPredefinedLoadMetric": { + "additionalProperties": false, + "properties": { + "PredefinedMetricType": { + "type": "string" + }, + "ResourceLabel": { + "type": "string" + } + }, + "required": [ + "PredefinedMetricType" + ], + "type": "object" + }, + "PredictiveScalingPredefinedMetricPair": { + "additionalProperties": false, + "properties": { + "PredefinedMetricType": { + "type": "string" + }, + "ResourceLabel": { + "type": "string" + } + }, + "required": [ + "PredefinedMetricType" + ], + "type": "object" + }, + "PredictiveScalingPredefinedScalingMetric": { + "additionalProperties": false, + "properties": { + "PredefinedMetricType": { + "type": "string" + }, + "ResourceLabel": { + "type": "string" + } + }, + "required": [ + "PredefinedMetricType" + ], + "type": "object" + }, + "StepAdjustment": { + "additionalProperties": false, + "insertionOrder": false, + "properties": { + "MetricIntervalLowerBound": { + "type": "number" + }, + "MetricIntervalUpperBound": { + "type": "number" + }, + "ScalingAdjustment": { + "type": "integer" + } + }, + "required": [ + "ScalingAdjustment" + ], + "type": "object" + }, + "TargetTrackingConfiguration": { + "additionalProperties": false, + "properties": { + "CustomizedMetricSpecification": { + "$ref": "#/definitions/CustomizedMetricSpecification" + }, + "DisableScaleIn": { + "type": "boolean" + }, + "PredefinedMetricSpecification": { + "$ref": "#/definitions/PredefinedMetricSpecification" + }, + "TargetValue": { + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + }, + "TargetTrackingMetricDataQuery": { + "additionalProperties": false, + "properties": { + "Expression": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Label": { + "type": "string" + }, + "MetricStat": { + "$ref": "#/definitions/TargetTrackingMetricStat" + }, + "Period": { + "type": "integer" + }, + "ReturnData": { + "type": "boolean" + } + }, + "required": [ + "Id" + ], + "type": "object" + }, + "TargetTrackingMetricStat": { + "additionalProperties": false, + "properties": { + "Metric": { + "$ref": "#/definitions/Metric" + }, + "Period": { + "type": "integer" + }, + "Stat": { + "type": "string" + }, + "Unit": { + "type": "string" + } + }, + "required": [ + "Stat", + "Metric" + ], + "type": "object" + } + }, + "description": "The AWS::AutoScaling::ScalingPolicy resource specifies an Amazon EC2 Auto Scaling scaling policy so that the Auto Scaling group can scale the number of instances available for your application.", + "handlers": { + "create": { + "permissions": [ + "autoscaling:DescribePolicies", + "autoscaling:PutScalingPolicy", + "cloudwatch:GetMetricData" + ] + }, + "delete": { + "permissions": [ + "autoscaling:DeletePolicy", + "autoscaling:DescribePolicies" + ] + }, + "list": { + "permissions": [ + "autoscaling:DescribePolicies" + ] + }, + "read": { + "permissions": [ + "autoscaling:DescribePolicies" + ] + }, + "update": { + "permissions": [ + "autoscaling:DescribePolicies", + "autoscaling:PutScalingPolicy", + "cloudwatch:GetMetricData" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AdjustmentType": { + "description": "Specifies how the scaling adjustment is interpreted. The valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.", + "type": "string" + }, + "Arn": { + "description": "The ARN of the AutoScaling scaling policy", + "type": "string" + }, + "AutoScalingGroupName": { + "description": "The name of the Auto Scaling group.", + "type": "string" + }, + "Cooldown": { + "description": "The duration of the policy's cooldown period, in seconds. When a cooldown period is specified here, it overrides the default cooldown period defined for the Auto Scaling group.", + "type": "string" + }, + "EstimatedInstanceWarmup": { + "description": "The estimated time, in seconds, until a newly launched instance can contribute to the CloudWatch metrics. If not provided, the default is to use the value from the default cooldown period for the Auto Scaling group. Valid only if the policy type is TargetTrackingScaling or StepScaling.", + "type": "integer" + }, + "MetricAggregationType": { + "description": "The aggregation type for the CloudWatch metrics. The valid values are Minimum, Maximum, and Average. If the aggregation type is null, the value is treated as Average. Valid only if the policy type is StepScaling.", + "type": "string" + }, + "MinAdjustmentMagnitude": { + "description": "The minimum value to scale by when the adjustment type is PercentChangeInCapacity. For example, suppose that you create a step scaling policy to scale out an Auto Scaling group by 25 percent and you specify a MinAdjustmentMagnitude of 2. If the group has 4 instances and the scaling policy is performed, 25 percent of 4 is 1. However, because you specified a MinAdjustmentMagnitude of 2, Amazon EC2 Auto Scaling scales out the group by 2 instances.", + "type": "integer" + }, + "PolicyName": { + "type": "string" + }, + "PolicyType": { + "description": "One of the following policy types: TargetTrackingScaling, StepScaling, SimpleScaling (default), PredictiveScaling", + "type": "string" + }, + "PredictiveScalingConfiguration": { + "$ref": "#/definitions/PredictiveScalingConfiguration", + "description": "A predictive scaling policy. Includes support for predefined metrics only." + }, + "ScalingAdjustment": { + "description": "The amount by which to scale, based on the specified adjustment type. A positive value adds to the current capacity while a negative number removes from the current capacity. For exact capacity, you must specify a positive value. Required if the policy type is SimpleScaling. (Not used with any other policy type.)", + "type": "integer" + }, + "StepAdjustments": { + "description": "A set of adjustments that enable you to scale based on the size of the alarm breach. Required if the policy type is StepScaling. (Not used with any other policy type.)", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StepAdjustment" + }, + "type": "array", + "uniqueItems": true + }, + "TargetTrackingConfiguration": { + "$ref": "#/definitions/TargetTrackingConfiguration", + "description": "A target tracking scaling policy. Includes support for predefined or customized metrics." + } + }, + "readOnlyProperties": [ + "/properties/PolicyName", + "/properties/Arn" + ], + "required": [ + "AutoScalingGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-autoscaling.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::AutoScaling::ScalingPolicy" +} diff --git a/src/schema/aws-autoscaling-scheduledaction.json b/src/schema/aws-autoscaling-scheduledaction.json index 6a270f54..3a6cb13c 100644 --- a/src/schema/aws-autoscaling-scheduledaction.json +++ b/src/schema/aws-autoscaling-scheduledaction.json @@ -1,89 +1,89 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AutoScalingGroupName" - ], - "description": "The AWS::AutoScaling::ScheduledAction resource specifies an Amazon EC2 Auto Scaling scheduled action so that the Auto Scaling group can change the number of instances available for your application in response to predictable load changes.", - "handlers": { - "create": { - "permissions": [ - "autoscaling:PutScheduledUpdateGroupAction", - "autoscaling:DescribeScheduledActions" - ] - }, - "delete": { - "permissions": [ - "autoscaling:DeleteScheduledAction", - "autoscaling:DescribeScheduledActions" - ] - }, - "list": { - "permissions": [ - "autoscaling:DescribeScheduledActions" - ] - }, - "read": { - "permissions": [ - "autoscaling:DescribeScheduledActions" - ] - }, - "update": { - "permissions": [ - "autoscaling:PutScheduledUpdateGroupAction" - ] - } - }, - "primaryIdentifier": [ - "/properties/ScheduledActionName", - "/properties/AutoScalingGroupName" - ], - "properties": { - "AutoScalingGroupName": { - "description": "The name of the Auto Scaling group.", - "type": "string" - }, - "DesiredCapacity": { - "description": "The desired capacity is the initial capacity of the Auto Scaling group after the scheduled action runs and the capacity it attempts to maintain.", - "type": "integer" - }, - "EndTime": { - "description": "The latest scheduled start time to return. If scheduled action names are provided, this parameter is ignored.", - "type": "string" - }, - "MaxSize": { - "description": "The minimum size of the Auto Scaling group.", - "type": "integer" - }, - "MinSize": { - "description": "The minimum size of the Auto Scaling group.", - "type": "integer" - }, - "Recurrence": { - "description": "The recurring schedule for the action, in Unix cron syntax format. When StartTime and EndTime are specified with Recurrence , they form the boundaries of when the recurring action starts and stops.", - "type": "string" - }, - "ScheduledActionName": { - "description": "Auto-generated unique identifier", - "type": "string" - }, - "StartTime": { - "description": "The earliest scheduled start time to return. If scheduled action names are provided, this parameter is ignored.", - "type": "string" - }, - "TimeZone": { - "description": "The time zone for the cron expression.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ScheduledActionName" - ], - "required": [ - "AutoScalingGroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::AutoScaling::ScheduledAction" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AutoScalingGroupName" + ], + "description": "The AWS::AutoScaling::ScheduledAction resource specifies an Amazon EC2 Auto Scaling scheduled action so that the Auto Scaling group can change the number of instances available for your application in response to predictable load changes.", + "handlers": { + "create": { + "permissions": [ + "autoscaling:PutScheduledUpdateGroupAction", + "autoscaling:DescribeScheduledActions" + ] + }, + "delete": { + "permissions": [ + "autoscaling:DeleteScheduledAction", + "autoscaling:DescribeScheduledActions" + ] + }, + "list": { + "permissions": [ + "autoscaling:DescribeScheduledActions" + ] + }, + "read": { + "permissions": [ + "autoscaling:DescribeScheduledActions" + ] + }, + "update": { + "permissions": [ + "autoscaling:PutScheduledUpdateGroupAction" + ] + } + }, + "primaryIdentifier": [ + "/properties/ScheduledActionName", + "/properties/AutoScalingGroupName" + ], + "properties": { + "AutoScalingGroupName": { + "description": "The name of the Auto Scaling group.", + "type": "string" + }, + "DesiredCapacity": { + "description": "The desired capacity is the initial capacity of the Auto Scaling group after the scheduled action runs and the capacity it attempts to maintain.", + "type": "integer" + }, + "EndTime": { + "description": "The latest scheduled start time to return. If scheduled action names are provided, this parameter is ignored.", + "type": "string" + }, + "MaxSize": { + "description": "The minimum size of the Auto Scaling group.", + "type": "integer" + }, + "MinSize": { + "description": "The minimum size of the Auto Scaling group.", + "type": "integer" + }, + "Recurrence": { + "description": "The recurring schedule for the action, in Unix cron syntax format. When StartTime and EndTime are specified with Recurrence , they form the boundaries of when the recurring action starts and stops.", + "type": "string" + }, + "ScheduledActionName": { + "description": "Auto-generated unique identifier", + "type": "string" + }, + "StartTime": { + "description": "The earliest scheduled start time to return. If scheduled action names are provided, this parameter is ignored.", + "type": "string" + }, + "TimeZone": { + "description": "The time zone for the cron expression.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ScheduledActionName" + ], + "required": [ + "AutoScalingGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::AutoScaling::ScheduledAction" +} diff --git a/src/schema/aws-autoscaling-warmpool.json b/src/schema/aws-autoscaling-warmpool.json index 89ac1dd1..52e34384 100644 --- a/src/schema/aws-autoscaling-warmpool.json +++ b/src/schema/aws-autoscaling-warmpool.json @@ -1,73 +1,73 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AutoScalingGroupName" - ], - "definitions": { - "InstanceReusePolicy": { - "additionalProperties": false, - "properties": { - "ReuseOnScaleIn": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::AutoScaling::WarmPool.", - "handlers": { - "create": { - "permissions": [ - "autoscaling:PutWarmPool", - "autoscaling:DescribeWarmPool", - "autoscaling:DescribeAutoScalingGroups" - ] - }, - "delete": { - "permissions": [ - "autoscaling:DeleteWarmPool", - "autoscaling:DescribeWarmPool" - ] - }, - "read": { - "permissions": [ - "autoscaling:DescribeWarmPool" - ] - }, - "update": { - "permissions": [ - "autoscaling:PutWarmPool", - "autoscaling:DescribeWarmPool", - "autoscaling:DescribeAutoScalingGroups" - ] - } - }, - "primaryIdentifier": [ - "/properties/AutoScalingGroupName" - ], - "properties": { - "AutoScalingGroupName": { - "type": "string" - }, - "InstanceReusePolicy": { - "$ref": "#/definitions/InstanceReusePolicy" - }, - "MaxGroupPreparedCapacity": { - "type": "integer" - }, - "MinSize": { - "type": "integer" - }, - "PoolState": { - "type": "string" - } - }, - "required": [ - "AutoScalingGroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-autoscaling", - "tagging": { - "taggable": false - }, - "typeName": "AWS::AutoScaling::WarmPool" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AutoScalingGroupName" + ], + "definitions": { + "InstanceReusePolicy": { + "additionalProperties": false, + "properties": { + "ReuseOnScaleIn": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::AutoScaling::WarmPool.", + "handlers": { + "create": { + "permissions": [ + "autoscaling:PutWarmPool", + "autoscaling:DescribeWarmPool", + "autoscaling:DescribeAutoScalingGroups" + ] + }, + "delete": { + "permissions": [ + "autoscaling:DeleteWarmPool", + "autoscaling:DescribeWarmPool" + ] + }, + "read": { + "permissions": [ + "autoscaling:DescribeWarmPool" + ] + }, + "update": { + "permissions": [ + "autoscaling:PutWarmPool", + "autoscaling:DescribeWarmPool", + "autoscaling:DescribeAutoScalingGroups" + ] + } + }, + "primaryIdentifier": [ + "/properties/AutoScalingGroupName" + ], + "properties": { + "AutoScalingGroupName": { + "type": "string" + }, + "InstanceReusePolicy": { + "$ref": "#/definitions/InstanceReusePolicy" + }, + "MaxGroupPreparedCapacity": { + "type": "integer" + }, + "MinSize": { + "type": "integer" + }, + "PoolState": { + "type": "string" + } + }, + "required": [ + "AutoScalingGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-autoscaling", + "tagging": { + "taggable": false + }, + "typeName": "AWS::AutoScaling::WarmPool" +} diff --git a/src/schema/aws-autoscalingplans-scalingplan.json b/src/schema/aws-autoscalingplans-scalingplan.json index b4887f0c..fc4a1469 100644 --- a/src/schema/aws-autoscalingplans-scalingplan.json +++ b/src/schema/aws-autoscalingplans-scalingplan.json @@ -1,271 +1,271 @@ -{ - "additionalProperties": false, - "definitions": { - "ApplicationSource": { - "additionalProperties": false, - "properties": { - "CloudFormationStackARN": { - "type": "string" - }, - "TagFilters": { - "items": { - "$ref": "#/definitions/TagFilter" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "CustomizedLoadMetricSpecification": { - "additionalProperties": false, - "properties": { - "Dimensions": { - "items": { - "$ref": "#/definitions/MetricDimension" - }, - "type": "array", - "uniqueItems": false - }, - "MetricName": { - "type": "string" - }, - "Namespace": { - "type": "string" - }, - "Statistic": { - "type": "string" - }, - "Unit": { - "type": "string" - } - }, - "required": [ - "MetricName", - "Statistic", - "Namespace" - ], - "type": "object" - }, - "CustomizedScalingMetricSpecification": { - "additionalProperties": false, - "properties": { - "Dimensions": { - "items": { - "$ref": "#/definitions/MetricDimension" - }, - "type": "array", - "uniqueItems": false - }, - "MetricName": { - "type": "string" - }, - "Namespace": { - "type": "string" - }, - "Statistic": { - "type": "string" - }, - "Unit": { - "type": "string" - } - }, - "required": [ - "MetricName", - "Statistic", - "Namespace" - ], - "type": "object" - }, - "MetricDimension": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Name" - ], - "type": "object" - }, - "PredefinedLoadMetricSpecification": { - "additionalProperties": false, - "properties": { - "PredefinedLoadMetricType": { - "type": "string" - }, - "ResourceLabel": { - "type": "string" - } - }, - "required": [ - "PredefinedLoadMetricType" - ], - "type": "object" - }, - "PredefinedScalingMetricSpecification": { - "additionalProperties": false, - "properties": { - "PredefinedScalingMetricType": { - "type": "string" - }, - "ResourceLabel": { - "type": "string" - } - }, - "required": [ - "PredefinedScalingMetricType" - ], - "type": "object" - }, - "ScalingInstruction": { - "additionalProperties": false, - "properties": { - "CustomizedLoadMetricSpecification": { - "$ref": "#/definitions/CustomizedLoadMetricSpecification" - }, - "DisableDynamicScaling": { - "type": "boolean" - }, - "MaxCapacity": { - "type": "integer" - }, - "MinCapacity": { - "type": "integer" - }, - "PredefinedLoadMetricSpecification": { - "$ref": "#/definitions/PredefinedLoadMetricSpecification" - }, - "PredictiveScalingMaxCapacityBehavior": { - "type": "string" - }, - "PredictiveScalingMaxCapacityBuffer": { - "type": "integer" - }, - "PredictiveScalingMode": { - "type": "string" - }, - "ResourceId": { - "type": "string" - }, - "ScalableDimension": { - "type": "string" - }, - "ScalingPolicyUpdateBehavior": { - "type": "string" - }, - "ScheduledActionBufferTime": { - "type": "integer" - }, - "ServiceNamespace": { - "type": "string" - }, - "TargetTrackingConfigurations": { - "items": { - "$ref": "#/definitions/TargetTrackingConfiguration" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "ResourceId", - "ServiceNamespace", - "ScalableDimension", - "MinCapacity", - "TargetTrackingConfigurations", - "MaxCapacity" - ], - "type": "object" - }, - "TagFilter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Values": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Key" - ], - "type": "object" - }, - "TargetTrackingConfiguration": { - "additionalProperties": false, - "properties": { - "CustomizedScalingMetricSpecification": { - "$ref": "#/definitions/CustomizedScalingMetricSpecification" - }, - "DisableScaleIn": { - "type": "boolean" - }, - "EstimatedInstanceWarmup": { - "type": "integer" - }, - "PredefinedScalingMetricSpecification": { - "$ref": "#/definitions/PredefinedScalingMetricSpecification" - }, - "ScaleInCooldown": { - "type": "integer" - }, - "ScaleOutCooldown": { - "type": "integer" - }, - "TargetValue": { - "type": "number" - } - }, - "required": [ - "TargetValue" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::AutoScalingPlans::ScalingPlan", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationSource": { - "$ref": "#/definitions/ApplicationSource" - }, - "Id": { - "type": "string" - }, - "ScalingInstructions": { - "items": { - "$ref": "#/definitions/ScalingInstruction" - }, - "type": "array", - "uniqueItems": false - }, - "ScalingPlanName": { - "type": "string" - }, - "ScalingPlanVersion": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ScalingPlanVersion", - "/properties/ScalingPlanName", - "/properties/Id" - ], - "required": [ - "ScalingInstructions", - "ApplicationSource" - ], - "typeName": "AWS::AutoScalingPlans::ScalingPlan" -} +{ + "additionalProperties": false, + "definitions": { + "ApplicationSource": { + "additionalProperties": false, + "properties": { + "CloudFormationStackARN": { + "type": "string" + }, + "TagFilters": { + "items": { + "$ref": "#/definitions/TagFilter" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomizedLoadMetricSpecification": { + "additionalProperties": false, + "properties": { + "Dimensions": { + "items": { + "$ref": "#/definitions/MetricDimension" + }, + "type": "array", + "uniqueItems": false + }, + "MetricName": { + "type": "string" + }, + "Namespace": { + "type": "string" + }, + "Statistic": { + "type": "string" + }, + "Unit": { + "type": "string" + } + }, + "required": [ + "MetricName", + "Statistic", + "Namespace" + ], + "type": "object" + }, + "CustomizedScalingMetricSpecification": { + "additionalProperties": false, + "properties": { + "Dimensions": { + "items": { + "$ref": "#/definitions/MetricDimension" + }, + "type": "array", + "uniqueItems": false + }, + "MetricName": { + "type": "string" + }, + "Namespace": { + "type": "string" + }, + "Statistic": { + "type": "string" + }, + "Unit": { + "type": "string" + } + }, + "required": [ + "MetricName", + "Statistic", + "Namespace" + ], + "type": "object" + }, + "MetricDimension": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Name" + ], + "type": "object" + }, + "PredefinedLoadMetricSpecification": { + "additionalProperties": false, + "properties": { + "PredefinedLoadMetricType": { + "type": "string" + }, + "ResourceLabel": { + "type": "string" + } + }, + "required": [ + "PredefinedLoadMetricType" + ], + "type": "object" + }, + "PredefinedScalingMetricSpecification": { + "additionalProperties": false, + "properties": { + "PredefinedScalingMetricType": { + "type": "string" + }, + "ResourceLabel": { + "type": "string" + } + }, + "required": [ + "PredefinedScalingMetricType" + ], + "type": "object" + }, + "ScalingInstruction": { + "additionalProperties": false, + "properties": { + "CustomizedLoadMetricSpecification": { + "$ref": "#/definitions/CustomizedLoadMetricSpecification" + }, + "DisableDynamicScaling": { + "type": "boolean" + }, + "MaxCapacity": { + "type": "integer" + }, + "MinCapacity": { + "type": "integer" + }, + "PredefinedLoadMetricSpecification": { + "$ref": "#/definitions/PredefinedLoadMetricSpecification" + }, + "PredictiveScalingMaxCapacityBehavior": { + "type": "string" + }, + "PredictiveScalingMaxCapacityBuffer": { + "type": "integer" + }, + "PredictiveScalingMode": { + "type": "string" + }, + "ResourceId": { + "type": "string" + }, + "ScalableDimension": { + "type": "string" + }, + "ScalingPolicyUpdateBehavior": { + "type": "string" + }, + "ScheduledActionBufferTime": { + "type": "integer" + }, + "ServiceNamespace": { + "type": "string" + }, + "TargetTrackingConfigurations": { + "items": { + "$ref": "#/definitions/TargetTrackingConfiguration" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ResourceId", + "ServiceNamespace", + "ScalableDimension", + "MinCapacity", + "TargetTrackingConfigurations", + "MaxCapacity" + ], + "type": "object" + }, + "TagFilter": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Values": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "TargetTrackingConfiguration": { + "additionalProperties": false, + "properties": { + "CustomizedScalingMetricSpecification": { + "$ref": "#/definitions/CustomizedScalingMetricSpecification" + }, + "DisableScaleIn": { + "type": "boolean" + }, + "EstimatedInstanceWarmup": { + "type": "integer" + }, + "PredefinedScalingMetricSpecification": { + "$ref": "#/definitions/PredefinedScalingMetricSpecification" + }, + "ScaleInCooldown": { + "type": "integer" + }, + "ScaleOutCooldown": { + "type": "integer" + }, + "TargetValue": { + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::AutoScalingPlans::ScalingPlan", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationSource": { + "$ref": "#/definitions/ApplicationSource" + }, + "Id": { + "type": "string" + }, + "ScalingInstructions": { + "items": { + "$ref": "#/definitions/ScalingInstruction" + }, + "type": "array", + "uniqueItems": false + }, + "ScalingPlanName": { + "type": "string" + }, + "ScalingPlanVersion": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ScalingPlanVersion", + "/properties/ScalingPlanName", + "/properties/Id" + ], + "required": [ + "ScalingInstructions", + "ApplicationSource" + ], + "typeName": "AWS::AutoScalingPlans::ScalingPlan" +} diff --git a/src/schema/aws-b2bi-capability.json b/src/schema/aws-b2bi-capability.json index f6acb44a..10aafe57 100644 --- a/src/schema/aws-b2bi-capability.json +++ b/src/schema/aws-b2bi-capability.json @@ -1,343 +1,612 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Type" - ], - "definitions": { - "CapabilityConfiguration": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Edi": { - "$ref": "#/definitions/EdiConfiguration" - } - }, - "required": [ - "Edi" - ], - "title": "Edi", - "type": "object" - } - ] - }, - "CapabilityDirection": { - "enum": [ - "INBOUND", - "OUTBOUND" - ], - "type": "string" - }, - "CapabilityType": { - "enum": [ - "edi" - ], - "type": "string" - }, - "EdiConfiguration": { - "additionalProperties": false, - "properties": { - "CapabilityDirection": { - "$ref": "#/definitions/CapabilityDirection" - }, - "InputLocation": { - "$ref": "#/definitions/S3Location" - }, - "OutputLocation": { - "$ref": "#/definitions/S3Location" - }, - "TransformerId": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/EdiType" - } - }, - "required": [ - "InputLocation", - "OutputLocation", - "TransformerId", - "Type" - ], - "type": "object" - }, - "EdiType": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "X12Details": { - "$ref": "#/definitions/X12Details" - } - }, - "required": [ - "X12Details" - ], - "title": "X12Details", - "type": "object" - } - ] - }, - "S3Location": { - "additionalProperties": false, - "properties": { - "BucketName": { - "maxLength": 63, - "minLength": 3, - "type": "string" - }, - "Key": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "X12Details": { - "additionalProperties": false, - "properties": { - "TransactionSet": { - "$ref": "#/definitions/X12TransactionSet" - }, - "Version": { - "$ref": "#/definitions/X12Version" - } - }, - "type": "object" - }, - "X12TransactionSet": { - "enum": [ - "X12_110", - "X12_180", - "X12_204", - "X12_210", - "X12_211", - "X12_214", - "X12_215", - "X12_259", - "X12_260", - "X12_266", - "X12_269", - "X12_270", - "X12_271", - "X12_274", - "X12_275", - "X12_276", - "X12_277", - "X12_278", - "X12_310", - "X12_315", - "X12_322", - "X12_404", - "X12_410", - "X12_417", - "X12_421", - "X12_426", - "X12_810", - "X12_820", - "X12_824", - "X12_830", - "X12_832", - "X12_834", - "X12_835", - "X12_837", - "X12_844", - "X12_846", - "X12_849", - "X12_850", - "X12_852", - "X12_855", - "X12_856", - "X12_860", - "X12_861", - "X12_864", - "X12_865", - "X12_869", - "X12_870", - "X12_940", - "X12_945", - "X12_990", - "X12_997", - "X12_999", - "X12_270_X279", - "X12_271_X279", - "X12_275_X210", - "X12_275_X211", - "X12_276_X212", - "X12_277_X212", - "X12_277_X214", - "X12_277_X364", - "X12_278_X217", - "X12_820_X218", - "X12_820_X306", - "X12_824_X186", - "X12_834_X220", - "X12_834_X307", - "X12_834_X318", - "X12_835_X221", - "X12_837_X222", - "X12_837_X223", - "X12_837_X224", - "X12_837_X291", - "X12_837_X292", - "X12_837_X298", - "X12_999_X231" - ], - "type": "string" - }, - "X12Version": { - "enum": [ - "VERSION_4010", - "VERSION_4030", - "VERSION_5010", - "VERSION_5010_HIPAA" - ], - "type": "string" - } - }, - "description": "Definition of AWS::B2BI::Capability Resource Type", - "handlers": { - "create": { - "permissions": [ - "b2bi:CreateCapability", - "b2bi:TagResource", - "events:ListRules", - "events:PutRule", - "events:PutTargets", - "logs:CreateLogDelivery", - "logs:CreateLogGroup", - "logs:CreateLogStream", - "logs:DescribeLogGroups", - "logs:DescribeLogStreams", - "logs:DescribeResourcePolicies", - "logs:ListLogDeliveries", - "logs:PutLogEvents", - "logs:PutResourcePolicy", - "s3:GetObject", - "s3:ListBucket" - ] - }, - "delete": { - "permissions": [ - "b2bi:DeleteCapability" - ] - }, - "list": { - "permissions": [ - "b2bi:ListCapabilities" - ] - }, - "read": { - "permissions": [ - "b2bi:GetCapability", - "b2bi:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "b2bi:TagResource", - "b2bi:UntagResource", - "b2bi:UpdateCapability" - ] - } - }, - "primaryIdentifier": [ - "/properties/CapabilityId" - ], - "properties": { - "CapabilityArn": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "CapabilityId": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "Configuration": { - "$ref": "#/definitions/CapabilityConfiguration" - }, - "CreatedAt": { - "format": "date-time", - "type": "string" - }, - "InstructionsDocuments": { - "items": { - "$ref": "#/definitions/S3Location" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - }, - "ModifiedAt": { - "format": "date-time", - "type": "string" - }, - "Name": { - "maxLength": 254, - "minLength": 1, - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Type": { - "$ref": "#/definitions/CapabilityType" - } - }, - "readOnlyProperties": [ - "/properties/CapabilityArn", - "/properties/CapabilityId", - "/properties/CreatedAt", - "/properties/ModifiedAt" - ], - "required": [ - "Configuration", - "Name", - "Type" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "b2bi:ListTagsForResource", - "b2bi:TagResource", - "b2bi:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::B2BI::Capability" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type" + ], + "definitions": { + "CapabilityConfiguration": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Edi": { + "$ref": "#/definitions/EdiConfiguration" + } + }, + "required": [ + "Edi" + ], + "title": "Edi", + "type": "object" + } + ] + }, + "CapabilityDirection": { + "enum": [ + "INBOUND", + "OUTBOUND" + ], + "type": "string" + }, + "CapabilityType": { + "enum": [ + "edi" + ], + "type": "string" + }, + "EdiConfiguration": { + "additionalProperties": false, + "properties": { + "CapabilityDirection": { + "$ref": "#/definitions/CapabilityDirection" + }, + "InputLocation": { + "$ref": "#/definitions/S3Location" + }, + "OutputLocation": { + "$ref": "#/definitions/S3Location" + }, + "TransformerId": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/EdiType" + } + }, + "required": [ + "InputLocation", + "OutputLocation", + "TransformerId", + "Type" + ], + "type": "object" + }, + "EdiType": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "X12Details": { + "$ref": "#/definitions/X12Details" + } + }, + "required": [ + "X12Details" + ], + "title": "X12Details", + "type": "object" + } + ] + }, + "S3Location": { + "additionalProperties": false, + "properties": { + "BucketName": { + "maxLength": 63, + "minLength": 3, + "type": "string" + }, + "Key": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "X12Details": { + "additionalProperties": false, + "properties": { + "TransactionSet": { + "$ref": "#/definitions/X12TransactionSet" + }, + "Version": { + "$ref": "#/definitions/X12Version" + } + }, + "type": "object" + }, + "X12TransactionSet": { + "enum": [ + "X12_100", + "X12_101", + "X12_102", + "X12_103", + "X12_104", + "X12_105", + "X12_106", + "X12_107", + "X12_108", + "X12_109", + "X12_110", + "X12_111", + "X12_112", + "X12_113", + "X12_120", + "X12_121", + "X12_124", + "X12_125", + "X12_126", + "X12_127", + "X12_128", + "X12_129", + "X12_130", + "X12_131", + "X12_132", + "X12_133", + "X12_135", + "X12_138", + "X12_139", + "X12_140", + "X12_141", + "X12_142", + "X12_143", + "X12_144", + "X12_146", + "X12_147", + "X12_148", + "X12_149", + "X12_150", + "X12_151", + "X12_152", + "X12_153", + "X12_154", + "X12_155", + "X12_157", + "X12_158", + "X12_159", + "X12_160", + "X12_161", + "X12_163", + "X12_170", + "X12_175", + "X12_176", + "X12_179", + "X12_180", + "X12_185", + "X12_186", + "X12_187", + "X12_188", + "X12_189", + "X12_190", + "X12_191", + "X12_194", + "X12_195", + "X12_196", + "X12_197", + "X12_198", + "X12_199", + "X12_200", + "X12_201", + "X12_202", + "X12_203", + "X12_204", + "X12_205", + "X12_206", + "X12_210", + "X12_211", + "X12_212", + "X12_213", + "X12_214", + "X12_215", + "X12_216", + "X12_217", + "X12_218", + "X12_219", + "X12_220", + "X12_222", + "X12_223", + "X12_224", + "X12_225", + "X12_227", + "X12_228", + "X12_240", + "X12_242", + "X12_244", + "X12_245", + "X12_248", + "X12_249", + "X12_250", + "X12_251", + "X12_252", + "X12_255", + "X12_256", + "X12_259", + "X12_260", + "X12_261", + "X12_262", + "X12_263", + "X12_264", + "X12_265", + "X12_266", + "X12_267", + "X12_268", + "X12_269", + "X12_270", + "X12_271", + "X12_272", + "X12_273", + "X12_274", + "X12_275", + "X12_276", + "X12_277", + "X12_278", + "X12_280", + "X12_283", + "X12_284", + "X12_285", + "X12_286", + "X12_288", + "X12_290", + "X12_300", + "X12_301", + "X12_303", + "X12_304", + "X12_309", + "X12_310", + "X12_311", + "X12_312", + "X12_313", + "X12_315", + "X12_317", + "X12_319", + "X12_322", + "X12_323", + "X12_324", + "X12_325", + "X12_326", + "X12_350", + "X12_352", + "X12_353", + "X12_354", + "X12_355", + "X12_356", + "X12_357", + "X12_358", + "X12_361", + "X12_362", + "X12_404", + "X12_410", + "X12_412", + "X12_414", + "X12_417", + "X12_418", + "X12_419", + "X12_420", + "X12_421", + "X12_422", + "X12_423", + "X12_424", + "X12_425", + "X12_426", + "X12_429", + "X12_431", + "X12_432", + "X12_433", + "X12_434", + "X12_435", + "X12_436", + "X12_437", + "X12_440", + "X12_451", + "X12_452", + "X12_453", + "X12_455", + "X12_456", + "X12_460", + "X12_463", + "X12_466", + "X12_468", + "X12_470", + "X12_475", + "X12_485", + "X12_486", + "X12_490", + "X12_492", + "X12_494", + "X12_500", + "X12_501", + "X12_503", + "X12_504", + "X12_511", + "X12_517", + "X12_521", + "X12_527", + "X12_536", + "X12_540", + "X12_561", + "X12_567", + "X12_568", + "X12_601", + "X12_602", + "X12_620", + "X12_625", + "X12_650", + "X12_715", + "X12_753", + "X12_754", + "X12_805", + "X12_806", + "X12_810", + "X12_811", + "X12_812", + "X12_813", + "X12_814", + "X12_815", + "X12_816", + "X12_818", + "X12_819", + "X12_820", + "X12_821", + "X12_822", + "X12_823", + "X12_824", + "X12_826", + "X12_827", + "X12_828", + "X12_829", + "X12_830", + "X12_831", + "X12_832", + "X12_833", + "X12_834", + "X12_835", + "X12_836", + "X12_837", + "X12_838", + "X12_839", + "X12_840", + "X12_841", + "X12_842", + "X12_843", + "X12_844", + "X12_845", + "X12_846", + "X12_847", + "X12_848", + "X12_849", + "X12_850", + "X12_851", + "X12_852", + "X12_853", + "X12_854", + "X12_855", + "X12_856", + "X12_857", + "X12_858", + "X12_859", + "X12_860", + "X12_861", + "X12_862", + "X12_863", + "X12_864", + "X12_865", + "X12_866", + "X12_867", + "X12_868", + "X12_869", + "X12_870", + "X12_871", + "X12_872", + "X12_873", + "X12_874", + "X12_875", + "X12_876", + "X12_877", + "X12_878", + "X12_879", + "X12_880", + "X12_881", + "X12_882", + "X12_883", + "X12_884", + "X12_885", + "X12_886", + "X12_887", + "X12_888", + "X12_889", + "X12_891", + "X12_893", + "X12_894", + "X12_895", + "X12_896", + "X12_920", + "X12_924", + "X12_925", + "X12_926", + "X12_928", + "X12_940", + "X12_943", + "X12_944", + "X12_945", + "X12_947", + "X12_980", + "X12_990", + "X12_993", + "X12_996", + "X12_997", + "X12_998", + "X12_999", + "X12_270_X279", + "X12_271_X279", + "X12_275_X210", + "X12_275_X211", + "X12_276_X212", + "X12_277_X212", + "X12_277_X214", + "X12_277_X364", + "X12_278_X217", + "X12_820_X218", + "X12_820_X306", + "X12_824_X186", + "X12_834_X220", + "X12_834_X307", + "X12_834_X318", + "X12_835_X221", + "X12_837_X222", + "X12_837_X223", + "X12_837_X224", + "X12_837_X291", + "X12_837_X292", + "X12_837_X298", + "X12_999_X231" + ], + "type": "string" + }, + "X12Version": { + "enum": [ + "VERSION_4010", + "VERSION_4030", + "VERSION_4050", + "VERSION_4060", + "VERSION_5010", + "VERSION_5010_HIPAA" + ], + "type": "string" + } + }, + "description": "Definition of AWS::B2BI::Capability Resource Type", + "handlers": { + "create": { + "permissions": [ + "b2bi:CreateCapability", + "b2bi:TagResource", + "events:ListRules", + "events:PutRule", + "events:PutTargets", + "logs:CreateLogDelivery", + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:DescribeLogGroups", + "logs:DescribeLogStreams", + "logs:DescribeResourcePolicies", + "logs:ListLogDeliveries", + "logs:PutLogEvents", + "logs:PutResourcePolicy", + "s3:GetObject", + "s3:ListBucket" + ] + }, + "delete": { + "permissions": [ + "b2bi:DeleteCapability" + ] + }, + "list": { + "permissions": [ + "b2bi:ListCapabilities" + ] + }, + "read": { + "permissions": [ + "b2bi:GetCapability", + "b2bi:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "b2bi:TagResource", + "b2bi:UntagResource", + "b2bi:UpdateCapability" + ] + } + }, + "primaryIdentifier": [ + "/properties/CapabilityId" + ], + "properties": { + "CapabilityArn": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "CapabilityId": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "Configuration": { + "$ref": "#/definitions/CapabilityConfiguration" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "InstructionsDocuments": { + "items": { + "$ref": "#/definitions/S3Location" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "ModifiedAt": { + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 254, + "minLength": 1, + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Type": { + "$ref": "#/definitions/CapabilityType" + } + }, + "readOnlyProperties": [ + "/properties/CapabilityArn", + "/properties/CapabilityId", + "/properties/CreatedAt", + "/properties/ModifiedAt" + ], + "required": [ + "Configuration", + "Name", + "Type" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "b2bi:ListTagsForResource", + "b2bi:TagResource", + "b2bi:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::B2BI::Capability" +} diff --git a/src/schema/aws-b2bi-partnership.json b/src/schema/aws-b2bi-partnership.json index 54fd4ba0..0e3a67ba 100644 --- a/src/schema/aws-b2bi-partnership.json +++ b/src/schema/aws-b2bi-partnership.json @@ -1,310 +1,310 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Email", - "/properties/Phone", - "/properties/ProfileId" - ], - "definitions": { - "CapabilityOptions": { - "additionalProperties": false, - "properties": { - "OutboundEdi": { - "$ref": "#/definitions/OutboundEdiOptions" - } - }, - "type": "object" - }, - "OutboundEdiOptions": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "X12": { - "$ref": "#/definitions/X12Envelope" - } - }, - "required": [ - "X12" - ], - "title": "X12", - "type": "object" - } - ] - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "X12Delimiters": { - "additionalProperties": false, - "properties": { - "ComponentSeparator": { - "maxLength": 1, - "minLength": 1, - "pattern": "^[!&'()*+,\\-./:;?=%@\\[\\]_{}|<>~^`\"]$", - "type": "string" - }, - "DataElementSeparator": { - "maxLength": 1, - "minLength": 1, - "pattern": "^[!&'()*+,\\-./:;?=%@\\[\\]_{}|<>~^`\"]$", - "type": "string" - }, - "SegmentTerminator": { - "maxLength": 1, - "minLength": 1, - "pattern": "^[!&'()*+,\\-./:;?=%@\\[\\]_{}|<>~^`\"]$", - "type": "string" - } - }, - "type": "object" - }, - "X12Envelope": { - "additionalProperties": false, - "properties": { - "Common": { - "$ref": "#/definitions/X12OutboundEdiHeaders" - } - }, - "type": "object" - }, - "X12FunctionalGroupHeaders": { - "additionalProperties": false, - "properties": { - "ApplicationReceiverCode": { - "maxLength": 15, - "minLength": 2, - "pattern": "^[a-zA-Z0-9]*$", - "type": "string" - }, - "ApplicationSenderCode": { - "maxLength": 15, - "minLength": 2, - "pattern": "^[a-zA-Z0-9]*$", - "type": "string" - }, - "ResponsibleAgencyCode": { - "maxLength": 2, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]*$", - "type": "string" - } - }, - "type": "object" - }, - "X12InterchangeControlHeaders": { - "additionalProperties": false, - "properties": { - "AcknowledgmentRequestedCode": { - "maxLength": 1, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]*$", - "type": "string" - }, - "ReceiverId": { - "maxLength": 15, - "minLength": 15, - "pattern": "^[a-zA-Z0-9]*$", - "type": "string" - }, - "ReceiverIdQualifier": { - "maxLength": 2, - "minLength": 2, - "pattern": "^[a-zA-Z0-9]*$", - "type": "string" - }, - "RepetitionSeparator": { - "maxLength": 1, - "minLength": 1, - "type": "string" - }, - "SenderId": { - "maxLength": 15, - "minLength": 15, - "pattern": "^[a-zA-Z0-9]*$", - "type": "string" - }, - "SenderIdQualifier": { - "maxLength": 2, - "minLength": 2, - "pattern": "^[a-zA-Z0-9]*$", - "type": "string" - }, - "UsageIndicatorCode": { - "maxLength": 1, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]*$", - "type": "string" - } - }, - "type": "object" - }, - "X12OutboundEdiHeaders": { - "additionalProperties": false, - "properties": { - "Delimiters": { - "$ref": "#/definitions/X12Delimiters" - }, - "FunctionalGroupHeaders": { - "$ref": "#/definitions/X12FunctionalGroupHeaders" - }, - "InterchangeControlHeaders": { - "$ref": "#/definitions/X12InterchangeControlHeaders" - }, - "ValidateEdi": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::B2BI::Partnership Resource Type", - "handlers": { - "create": { - "permissions": [ - "b2bi:CreatePartnership", - "b2bi:TagResource", - "s3:PutObject" - ] - }, - "delete": { - "permissions": [ - "b2bi:DeletePartnership" - ] - }, - "list": { - "permissions": [ - "b2bi:ListPartnerships" - ] - }, - "read": { - "permissions": [ - "b2bi:GetPartnership", - "b2bi:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "b2bi:TagResource", - "b2bi:UntagResource", - "b2bi:UpdatePartnership" - ] - } - }, - "primaryIdentifier": [ - "/properties/PartnershipId" - ], - "properties": { - "Capabilities": { - "items": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "type": "array" - }, - "CapabilityOptions": { - "$ref": "#/definitions/CapabilityOptions" - }, - "CreatedAt": { - "format": "date-time", - "type": "string" - }, - "Email": { - "maxLength": 254, - "minLength": 5, - "pattern": "^[\\w\\.\\-]+@[\\w\\.\\-]+$", - "type": "string" - }, - "ModifiedAt": { - "format": "date-time", - "type": "string" - }, - "Name": { - "maxLength": 254, - "minLength": 1, - "type": "string" - }, - "PartnershipArn": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "PartnershipId": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "Phone": { - "maxLength": 22, - "minLength": 7, - "pattern": "^\\+?([0-9 \\t\\-()\\/]{7,})(?:\\s*(?:#|x\\.?|ext\\.?|extension) \\t*(\\d+))?$", - "type": "string" - }, - "ProfileId": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TradingPartnerId": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/ModifiedAt", - "/properties/PartnershipArn", - "/properties/PartnershipId", - "/properties/TradingPartnerId" - ], - "required": [ - "Capabilities", - "Email", - "Name", - "ProfileId" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "b2bi:ListTagsForResource", - "b2bi:TagResource", - "b2bi:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::B2BI::Partnership" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Email", + "/properties/Phone", + "/properties/ProfileId" + ], + "definitions": { + "CapabilityOptions": { + "additionalProperties": false, + "properties": { + "OutboundEdi": { + "$ref": "#/definitions/OutboundEdiOptions" + } + }, + "type": "object" + }, + "OutboundEdiOptions": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "X12": { + "$ref": "#/definitions/X12Envelope" + } + }, + "required": [ + "X12" + ], + "title": "X12", + "type": "object" + } + ] + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "X12Delimiters": { + "additionalProperties": false, + "properties": { + "ComponentSeparator": { + "maxLength": 1, + "minLength": 1, + "pattern": "^[!&'()*+,\\-./:;?=%@\\[\\]_{}|<>~^`\"]$", + "type": "string" + }, + "DataElementSeparator": { + "maxLength": 1, + "minLength": 1, + "pattern": "^[!&'()*+,\\-./:;?=%@\\[\\]_{}|<>~^`\"]$", + "type": "string" + }, + "SegmentTerminator": { + "maxLength": 1, + "minLength": 1, + "pattern": "^[!&'()*+,\\-./:;?=%@\\[\\]_{}|<>~^`\"]$", + "type": "string" + } + }, + "type": "object" + }, + "X12Envelope": { + "additionalProperties": false, + "properties": { + "Common": { + "$ref": "#/definitions/X12OutboundEdiHeaders" + } + }, + "type": "object" + }, + "X12FunctionalGroupHeaders": { + "additionalProperties": false, + "properties": { + "ApplicationReceiverCode": { + "maxLength": 15, + "minLength": 2, + "pattern": "^[a-zA-Z0-9 ]*$", + "type": "string" + }, + "ApplicationSenderCode": { + "maxLength": 15, + "minLength": 2, + "pattern": "^[a-zA-Z0-9 ]*$", + "type": "string" + }, + "ResponsibleAgencyCode": { + "maxLength": 2, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]*$", + "type": "string" + } + }, + "type": "object" + }, + "X12InterchangeControlHeaders": { + "additionalProperties": false, + "properties": { + "AcknowledgmentRequestedCode": { + "maxLength": 1, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]*$", + "type": "string" + }, + "ReceiverId": { + "maxLength": 15, + "minLength": 15, + "pattern": "^[a-zA-Z0-9 ]*$", + "type": "string" + }, + "ReceiverIdQualifier": { + "maxLength": 2, + "minLength": 2, + "pattern": "^[a-zA-Z0-9]*$", + "type": "string" + }, + "RepetitionSeparator": { + "maxLength": 1, + "minLength": 1, + "type": "string" + }, + "SenderId": { + "maxLength": 15, + "minLength": 15, + "pattern": "^[a-zA-Z0-9 ]*$", + "type": "string" + }, + "SenderIdQualifier": { + "maxLength": 2, + "minLength": 2, + "pattern": "^[a-zA-Z0-9]*$", + "type": "string" + }, + "UsageIndicatorCode": { + "maxLength": 1, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]*$", + "type": "string" + } + }, + "type": "object" + }, + "X12OutboundEdiHeaders": { + "additionalProperties": false, + "properties": { + "Delimiters": { + "$ref": "#/definitions/X12Delimiters" + }, + "FunctionalGroupHeaders": { + "$ref": "#/definitions/X12FunctionalGroupHeaders" + }, + "InterchangeControlHeaders": { + "$ref": "#/definitions/X12InterchangeControlHeaders" + }, + "ValidateEdi": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::B2BI::Partnership Resource Type", + "handlers": { + "create": { + "permissions": [ + "b2bi:CreatePartnership", + "b2bi:TagResource", + "s3:PutObject" + ] + }, + "delete": { + "permissions": [ + "b2bi:DeletePartnership" + ] + }, + "list": { + "permissions": [ + "b2bi:ListPartnerships" + ] + }, + "read": { + "permissions": [ + "b2bi:GetPartnership", + "b2bi:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "b2bi:TagResource", + "b2bi:UntagResource", + "b2bi:UpdatePartnership" + ] + } + }, + "primaryIdentifier": [ + "/properties/PartnershipId" + ], + "properties": { + "Capabilities": { + "items": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "type": "array" + }, + "CapabilityOptions": { + "$ref": "#/definitions/CapabilityOptions" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "Email": { + "maxLength": 254, + "minLength": 5, + "pattern": "^[\\w\\.\\-]+@[\\w\\.\\-]+$", + "type": "string" + }, + "ModifiedAt": { + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 254, + "minLength": 1, + "type": "string" + }, + "PartnershipArn": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "PartnershipId": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "Phone": { + "maxLength": 22, + "minLength": 7, + "pattern": "^\\+?([0-9 \\t\\-()\\/]{7,})(?:\\s*(?:#|x\\.?|ext\\.?|extension) \\t*(\\d+))?$", + "type": "string" + }, + "ProfileId": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TradingPartnerId": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/ModifiedAt", + "/properties/PartnershipArn", + "/properties/PartnershipId", + "/properties/TradingPartnerId" + ], + "required": [ + "Capabilities", + "Email", + "Name", + "ProfileId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "b2bi:ListTagsForResource", + "b2bi:TagResource", + "b2bi:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::B2BI::Partnership" +} diff --git a/src/schema/aws-b2bi-profile.json b/src/schema/aws-b2bi-profile.json index 1f659e3f..5b086080 100644 --- a/src/schema/aws-b2bi-profile.json +++ b/src/schema/aws-b2bi-profile.json @@ -1,166 +1,166 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Logging" - ], - "definitions": { - "Logging": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::B2BI::Profile Resource Type", - "handlers": { - "create": { - "permissions": [ - "b2bi:CreateProfile", - "b2bi:TagResource", - "logs:CreateLogDelivery", - "logs:CreateLogGroup", - "logs:CreateLogStream", - "logs:DescribeLogGroups", - "logs:DescribeLogStreams", - "logs:DescribeResourcePolicies", - "logs:ListLogDeliveries", - "logs:PutLogEvents", - "logs:PutResourcePolicy" - ] - }, - "delete": { - "permissions": [ - "b2bi:DeleteProfile", - "logs:DeleteLogDelivery", - "logs:ListLogDeliveries" - ] - }, - "list": { - "permissions": [ - "b2bi:ListProfiles" - ] - }, - "read": { - "permissions": [ - "b2bi:GetProfile", - "b2bi:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "b2bi:TagResource", - "b2bi:UntagResource", - "b2bi:UpdateProfile" - ] - } - }, - "primaryIdentifier": [ - "/properties/ProfileId" - ], - "properties": { - "BusinessName": { - "maxLength": 254, - "minLength": 1, - "type": "string" - }, - "CreatedAt": { - "format": "date-time", - "type": "string" - }, - "Email": { - "maxLength": 254, - "minLength": 5, - "pattern": "^[\\w\\.\\-]+@[\\w\\.\\-]+$", - "type": "string" - }, - "LogGroupName": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Logging": { - "$ref": "#/definitions/Logging" - }, - "ModifiedAt": { - "format": "date-time", - "type": "string" - }, - "Name": { - "maxLength": 254, - "minLength": 1, - "type": "string" - }, - "Phone": { - "maxLength": 22, - "minLength": 7, - "pattern": "^\\+?([0-9 \\t\\-()\\/]{7,})(?:\\s*(?:#|x\\.?|ext\\.?|extension) \\t*(\\d+))?$", - "type": "string" - }, - "ProfileArn": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "ProfileId": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/LogGroupName", - "/properties/ModifiedAt", - "/properties/ProfileArn", - "/properties/ProfileId" - ], - "required": [ - "BusinessName", - "Logging", - "Name", - "Phone" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "b2bi:ListTagsForResource", - "b2bi:TagResource", - "b2bi:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::B2BI::Profile" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Logging" + ], + "definitions": { + "Logging": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::B2BI::Profile Resource Type", + "handlers": { + "create": { + "permissions": [ + "b2bi:CreateProfile", + "b2bi:TagResource", + "logs:CreateLogDelivery", + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:DescribeLogGroups", + "logs:DescribeLogStreams", + "logs:DescribeResourcePolicies", + "logs:ListLogDeliveries", + "logs:PutLogEvents", + "logs:PutResourcePolicy" + ] + }, + "delete": { + "permissions": [ + "b2bi:DeleteProfile", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries" + ] + }, + "list": { + "permissions": [ + "b2bi:ListProfiles" + ] + }, + "read": { + "permissions": [ + "b2bi:GetProfile", + "b2bi:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "b2bi:TagResource", + "b2bi:UntagResource", + "b2bi:UpdateProfile" + ] + } + }, + "primaryIdentifier": [ + "/properties/ProfileId" + ], + "properties": { + "BusinessName": { + "maxLength": 254, + "minLength": 1, + "type": "string" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "Email": { + "maxLength": 254, + "minLength": 5, + "pattern": "^[\\w\\.\\-]+@[\\w\\.\\-]+$", + "type": "string" + }, + "LogGroupName": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Logging": { + "$ref": "#/definitions/Logging" + }, + "ModifiedAt": { + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 254, + "minLength": 1, + "type": "string" + }, + "Phone": { + "maxLength": 22, + "minLength": 7, + "pattern": "^\\+?([0-9 \\t\\-()\\/]{7,})(?:\\s*(?:#|x\\.?|ext\\.?|extension) \\t*(\\d+))?$", + "type": "string" + }, + "ProfileArn": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "ProfileId": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/LogGroupName", + "/properties/ModifiedAt", + "/properties/ProfileArn", + "/properties/ProfileId" + ], + "required": [ + "BusinessName", + "Logging", + "Name", + "Phone" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "b2bi:ListTagsForResource", + "b2bi:TagResource", + "b2bi:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::B2BI::Profile" +} diff --git a/src/schema/aws-b2bi-transformer.json b/src/schema/aws-b2bi-transformer.json index e299b8cd..4f71b4c1 100644 --- a/src/schema/aws-b2bi-transformer.json +++ b/src/schema/aws-b2bi-transformer.json @@ -1,422 +1,691 @@ -{ - "additionalProperties": false, - "definitions": { - "EdiType": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "X12Details": { - "$ref": "#/definitions/X12Details" - } - }, - "required": [ - "X12Details" - ], - "title": "X12Details", - "type": "object" - } - ] - }, - "FileFormat": { - "enum": [ - "XML", - "JSON", - "NOT_USED" - ], - "type": "string" - }, - "FormatOptions": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "X12": { - "$ref": "#/definitions/X12Details" - } - }, - "required": [ - "X12" - ], - "title": "X12", - "type": "object" - } - ] - }, - "FromFormat": { - "enum": [ - "X12" - ], - "type": "string" - }, - "InputConversion": { - "additionalProperties": false, - "properties": { - "FormatOptions": { - "$ref": "#/definitions/FormatOptions" - }, - "FromFormat": { - "$ref": "#/definitions/FromFormat" - } - }, - "required": [ - "FromFormat" - ], - "type": "object" - }, - "Mapping": { - "additionalProperties": false, - "properties": { - "Template": { - "maxLength": 350000, - "minLength": 0, - "type": "string" - }, - "TemplateLanguage": { - "$ref": "#/definitions/MappingTemplateLanguage" - } - }, - "required": [ - "TemplateLanguage" - ], - "type": "object" - }, - "MappingTemplateLanguage": { - "enum": [ - "XSLT", - "JSONATA" - ], - "type": "string" - }, - "OutputConversion": { - "additionalProperties": false, - "properties": { - "FormatOptions": { - "$ref": "#/definitions/FormatOptions" - }, - "ToFormat": { - "$ref": "#/definitions/ToFormat" - } - }, - "required": [ - "ToFormat" - ], - "type": "object" - }, - "SampleDocumentKeys": { - "additionalProperties": false, - "properties": { - "Input": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "Output": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "SampleDocuments": { - "additionalProperties": false, - "properties": { - "BucketName": { - "maxLength": 63, - "minLength": 3, - "type": "string" - }, - "Keys": { - "items": { - "$ref": "#/definitions/SampleDocumentKeys" - }, - "type": "array" - } - }, - "required": [ - "BucketName", - "Keys" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "ToFormat": { - "enum": [ - "X12" - ], - "type": "string" - }, - "TransformerStatus": { - "enum": [ - "active", - "inactive" - ], - "type": "string" - }, - "X12Details": { - "additionalProperties": false, - "properties": { - "TransactionSet": { - "$ref": "#/definitions/X12TransactionSet" - }, - "Version": { - "$ref": "#/definitions/X12Version" - } - }, - "type": "object" - }, - "X12TransactionSet": { - "enum": [ - "X12_110", - "X12_180", - "X12_204", - "X12_210", - "X12_211", - "X12_214", - "X12_215", - "X12_259", - "X12_260", - "X12_266", - "X12_269", - "X12_270", - "X12_271", - "X12_274", - "X12_275", - "X12_276", - "X12_277", - "X12_278", - "X12_310", - "X12_315", - "X12_322", - "X12_404", - "X12_410", - "X12_417", - "X12_421", - "X12_426", - "X12_810", - "X12_820", - "X12_824", - "X12_830", - "X12_832", - "X12_834", - "X12_835", - "X12_837", - "X12_844", - "X12_846", - "X12_849", - "X12_850", - "X12_852", - "X12_855", - "X12_856", - "X12_860", - "X12_861", - "X12_864", - "X12_865", - "X12_869", - "X12_870", - "X12_940", - "X12_945", - "X12_990", - "X12_997", - "X12_999", - "X12_270_X279", - "X12_271_X279", - "X12_275_X210", - "X12_275_X211", - "X12_276_X212", - "X12_277_X212", - "X12_277_X214", - "X12_277_X364", - "X12_278_X217", - "X12_820_X218", - "X12_820_X306", - "X12_824_X186", - "X12_834_X220", - "X12_834_X307", - "X12_834_X318", - "X12_835_X221", - "X12_837_X222", - "X12_837_X223", - "X12_837_X224", - "X12_837_X291", - "X12_837_X292", - "X12_837_X298", - "X12_999_X231" - ], - "type": "string" - }, - "X12Version": { - "enum": [ - "VERSION_4010", - "VERSION_4030", - "VERSION_5010", - "VERSION_5010_HIPAA" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/EdiType", - "/properties/FileFormat", - "/properties/MappingTemplate", - "/properties/SampleDocument" - ], - "description": "Definition of AWS::B2BI::Transformer Resource Type", - "handlers": { - "create": { - "permissions": [ - "b2bi:CreateTransformer", - "b2bi:TagResource", - "b2bi:UpdateTransformer", - "logs:CreateLogDelivery", - "logs:CreateLogGroup", - "logs:CreateLogStream", - "logs:DescribeLogGroups", - "logs:DescribeLogStreams", - "logs:DescribeResourcePolicies", - "logs:ListLogDeliveries", - "logs:PutLogEvents", - "logs:PutResourcePolicy" - ] - }, - "delete": { - "permissions": [ - "b2bi:DeleteTransformer", - "logs:DeleteLogDelivery", - "logs:ListLogDeliveries" - ] - }, - "list": { - "permissions": [ - "b2bi:ListTransformers" - ] - }, - "read": { - "permissions": [ - "b2bi:GetTransformer", - "b2bi:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "b2bi:TagResource", - "b2bi:UntagResource", - "b2bi:UpdateTransformer" - ] - } - }, - "primaryIdentifier": [ - "/properties/TransformerId" - ], - "properties": { - "CreatedAt": { - "format": "date-time", - "type": "string" - }, - "EdiType": { - "$ref": "#/definitions/EdiType" - }, - "FileFormat": { - "$ref": "#/definitions/FileFormat" - }, - "InputConversion": { - "$ref": "#/definitions/InputConversion" - }, - "Mapping": { - "$ref": "#/definitions/Mapping" - }, - "MappingTemplate": { - "description": "This shape is deprecated: This is a legacy trait. Please use input-conversion or output-conversion.", - "maxLength": 350000, - "minLength": 0, - "type": "string" - }, - "ModifiedAt": { - "format": "date-time", - "type": "string" - }, - "Name": { - "maxLength": 254, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]{1,512}$", - "type": "string" - }, - "OutputConversion": { - "$ref": "#/definitions/OutputConversion" - }, - "SampleDocument": { - "description": "This shape is deprecated: This is a legacy trait. Please use input-conversion or output-conversion.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "SampleDocuments": { - "$ref": "#/definitions/SampleDocuments" - }, - "Status": { - "$ref": "#/definitions/TransformerStatus" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TransformerArn": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "TransformerId": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/ModifiedAt", - "/properties/TransformerArn", - "/properties/TransformerId" - ], - "required": [ - "Name", - "Status" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "b2bi:ListTagsForResource", - "b2bi:TagResource", - "b2bi:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::B2BI::Transformer" -} +{ + "additionalProperties": false, + "definitions": { + "EdiType": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "X12Details": { + "$ref": "#/definitions/X12Details" + } + }, + "required": [ + "X12Details" + ], + "title": "X12Details", + "type": "object" + } + ] + }, + "FileFormat": { + "enum": [ + "XML", + "JSON", + "NOT_USED" + ], + "type": "string" + }, + "FormatOptions": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "X12": { + "$ref": "#/definitions/X12Details" + } + }, + "required": [ + "X12" + ], + "title": "X12", + "type": "object" + } + ] + }, + "FromFormat": { + "enum": [ + "X12" + ], + "type": "string" + }, + "InputConversion": { + "additionalProperties": false, + "properties": { + "FormatOptions": { + "$ref": "#/definitions/FormatOptions" + }, + "FromFormat": { + "$ref": "#/definitions/FromFormat" + } + }, + "required": [ + "FromFormat" + ], + "type": "object" + }, + "Mapping": { + "additionalProperties": false, + "properties": { + "Template": { + "maxLength": 350000, + "minLength": 0, + "type": "string" + }, + "TemplateLanguage": { + "$ref": "#/definitions/MappingTemplateLanguage" + } + }, + "required": [ + "TemplateLanguage" + ], + "type": "object" + }, + "MappingTemplateLanguage": { + "enum": [ + "XSLT", + "JSONATA" + ], + "type": "string" + }, + "OutputConversion": { + "additionalProperties": false, + "properties": { + "FormatOptions": { + "$ref": "#/definitions/FormatOptions" + }, + "ToFormat": { + "$ref": "#/definitions/ToFormat" + } + }, + "required": [ + "ToFormat" + ], + "type": "object" + }, + "SampleDocumentKeys": { + "additionalProperties": false, + "properties": { + "Input": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "Output": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "SampleDocuments": { + "additionalProperties": false, + "properties": { + "BucketName": { + "maxLength": 63, + "minLength": 3, + "type": "string" + }, + "Keys": { + "items": { + "$ref": "#/definitions/SampleDocumentKeys" + }, + "type": "array" + } + }, + "required": [ + "BucketName", + "Keys" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "ToFormat": { + "enum": [ + "X12" + ], + "type": "string" + }, + "TransformerStatus": { + "enum": [ + "active", + "inactive" + ], + "type": "string" + }, + "X12Details": { + "additionalProperties": false, + "properties": { + "TransactionSet": { + "$ref": "#/definitions/X12TransactionSet" + }, + "Version": { + "$ref": "#/definitions/X12Version" + } + }, + "type": "object" + }, + "X12TransactionSet": { + "enum": [ + "X12_100", + "X12_101", + "X12_102", + "X12_103", + "X12_104", + "X12_105", + "X12_106", + "X12_107", + "X12_108", + "X12_109", + "X12_110", + "X12_111", + "X12_112", + "X12_113", + "X12_120", + "X12_121", + "X12_124", + "X12_125", + "X12_126", + "X12_127", + "X12_128", + "X12_129", + "X12_130", + "X12_131", + "X12_132", + "X12_133", + "X12_135", + "X12_138", + "X12_139", + "X12_140", + "X12_141", + "X12_142", + "X12_143", + "X12_144", + "X12_146", + "X12_147", + "X12_148", + "X12_149", + "X12_150", + "X12_151", + "X12_152", + "X12_153", + "X12_154", + "X12_155", + "X12_157", + "X12_158", + "X12_159", + "X12_160", + "X12_161", + "X12_163", + "X12_170", + "X12_175", + "X12_176", + "X12_179", + "X12_180", + "X12_185", + "X12_186", + "X12_187", + "X12_188", + "X12_189", + "X12_190", + "X12_191", + "X12_194", + "X12_195", + "X12_196", + "X12_197", + "X12_198", + "X12_199", + "X12_200", + "X12_201", + "X12_202", + "X12_203", + "X12_204", + "X12_205", + "X12_206", + "X12_210", + "X12_211", + "X12_212", + "X12_213", + "X12_214", + "X12_215", + "X12_216", + "X12_217", + "X12_218", + "X12_219", + "X12_220", + "X12_222", + "X12_223", + "X12_224", + "X12_225", + "X12_227", + "X12_228", + "X12_240", + "X12_242", + "X12_244", + "X12_245", + "X12_248", + "X12_249", + "X12_250", + "X12_251", + "X12_252", + "X12_255", + "X12_256", + "X12_259", + "X12_260", + "X12_261", + "X12_262", + "X12_263", + "X12_264", + "X12_265", + "X12_266", + "X12_267", + "X12_268", + "X12_269", + "X12_270", + "X12_271", + "X12_272", + "X12_273", + "X12_274", + "X12_275", + "X12_276", + "X12_277", + "X12_278", + "X12_280", + "X12_283", + "X12_284", + "X12_285", + "X12_286", + "X12_288", + "X12_290", + "X12_300", + "X12_301", + "X12_303", + "X12_304", + "X12_309", + "X12_310", + "X12_311", + "X12_312", + "X12_313", + "X12_315", + "X12_317", + "X12_319", + "X12_322", + "X12_323", + "X12_324", + "X12_325", + "X12_326", + "X12_350", + "X12_352", + "X12_353", + "X12_354", + "X12_355", + "X12_356", + "X12_357", + "X12_358", + "X12_361", + "X12_362", + "X12_404", + "X12_410", + "X12_412", + "X12_414", + "X12_417", + "X12_418", + "X12_419", + "X12_420", + "X12_421", + "X12_422", + "X12_423", + "X12_424", + "X12_425", + "X12_426", + "X12_429", + "X12_431", + "X12_432", + "X12_433", + "X12_434", + "X12_435", + "X12_436", + "X12_437", + "X12_440", + "X12_451", + "X12_452", + "X12_453", + "X12_455", + "X12_456", + "X12_460", + "X12_463", + "X12_466", + "X12_468", + "X12_470", + "X12_475", + "X12_485", + "X12_486", + "X12_490", + "X12_492", + "X12_494", + "X12_500", + "X12_501", + "X12_503", + "X12_504", + "X12_511", + "X12_517", + "X12_521", + "X12_527", + "X12_536", + "X12_540", + "X12_561", + "X12_567", + "X12_568", + "X12_601", + "X12_602", + "X12_620", + "X12_625", + "X12_650", + "X12_715", + "X12_753", + "X12_754", + "X12_805", + "X12_806", + "X12_810", + "X12_811", + "X12_812", + "X12_813", + "X12_814", + "X12_815", + "X12_816", + "X12_818", + "X12_819", + "X12_820", + "X12_821", + "X12_822", + "X12_823", + "X12_824", + "X12_826", + "X12_827", + "X12_828", + "X12_829", + "X12_830", + "X12_831", + "X12_832", + "X12_833", + "X12_834", + "X12_835", + "X12_836", + "X12_837", + "X12_838", + "X12_839", + "X12_840", + "X12_841", + "X12_842", + "X12_843", + "X12_844", + "X12_845", + "X12_846", + "X12_847", + "X12_848", + "X12_849", + "X12_850", + "X12_851", + "X12_852", + "X12_853", + "X12_854", + "X12_855", + "X12_856", + "X12_857", + "X12_858", + "X12_859", + "X12_860", + "X12_861", + "X12_862", + "X12_863", + "X12_864", + "X12_865", + "X12_866", + "X12_867", + "X12_868", + "X12_869", + "X12_870", + "X12_871", + "X12_872", + "X12_873", + "X12_874", + "X12_875", + "X12_876", + "X12_877", + "X12_878", + "X12_879", + "X12_880", + "X12_881", + "X12_882", + "X12_883", + "X12_884", + "X12_885", + "X12_886", + "X12_887", + "X12_888", + "X12_889", + "X12_891", + "X12_893", + "X12_894", + "X12_895", + "X12_896", + "X12_920", + "X12_924", + "X12_925", + "X12_926", + "X12_928", + "X12_940", + "X12_943", + "X12_944", + "X12_945", + "X12_947", + "X12_980", + "X12_990", + "X12_993", + "X12_996", + "X12_997", + "X12_998", + "X12_999", + "X12_270_X279", + "X12_271_X279", + "X12_275_X210", + "X12_275_X211", + "X12_276_X212", + "X12_277_X212", + "X12_277_X214", + "X12_277_X364", + "X12_278_X217", + "X12_820_X218", + "X12_820_X306", + "X12_824_X186", + "X12_834_X220", + "X12_834_X307", + "X12_834_X318", + "X12_835_X221", + "X12_837_X222", + "X12_837_X223", + "X12_837_X224", + "X12_837_X291", + "X12_837_X292", + "X12_837_X298", + "X12_999_X231" + ], + "type": "string" + }, + "X12Version": { + "enum": [ + "VERSION_4010", + "VERSION_4030", + "VERSION_4050", + "VERSION_4060", + "VERSION_5010", + "VERSION_5010_HIPAA" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/EdiType", + "/properties/FileFormat", + "/properties/MappingTemplate", + "/properties/SampleDocument" + ], + "description": "Definition of AWS::B2BI::Transformer Resource Type", + "handlers": { + "create": { + "permissions": [ + "b2bi:CreateTransformer", + "b2bi:TagResource", + "b2bi:UpdateTransformer", + "logs:CreateLogDelivery", + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:DescribeLogGroups", + "logs:DescribeLogStreams", + "logs:DescribeResourcePolicies", + "logs:ListLogDeliveries", + "logs:PutLogEvents", + "logs:PutResourcePolicy" + ] + }, + "delete": { + "permissions": [ + "b2bi:DeleteTransformer", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries" + ] + }, + "list": { + "permissions": [ + "b2bi:ListTransformers" + ] + }, + "read": { + "permissions": [ + "b2bi:GetTransformer", + "b2bi:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "b2bi:TagResource", + "b2bi:UntagResource", + "b2bi:UpdateTransformer" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransformerId" + ], + "properties": { + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "EdiType": { + "$ref": "#/definitions/EdiType" + }, + "FileFormat": { + "$ref": "#/definitions/FileFormat" + }, + "InputConversion": { + "$ref": "#/definitions/InputConversion" + }, + "Mapping": { + "$ref": "#/definitions/Mapping" + }, + "MappingTemplate": { + "description": "This shape is deprecated: This is a legacy trait. Please use input-conversion or output-conversion.", + "maxLength": 350000, + "minLength": 0, + "type": "string" + }, + "ModifiedAt": { + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 254, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]{1,512}$", + "type": "string" + }, + "OutputConversion": { + "$ref": "#/definitions/OutputConversion" + }, + "SampleDocument": { + "description": "This shape is deprecated: This is a legacy trait. Please use input-conversion or output-conversion.", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "SampleDocuments": { + "$ref": "#/definitions/SampleDocuments" + }, + "Status": { + "$ref": "#/definitions/TransformerStatus" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TransformerArn": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "TransformerId": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/ModifiedAt", + "/properties/TransformerArn", + "/properties/TransformerId" + ], + "required": [ + "Name", + "Status" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "b2bi:ListTagsForResource", + "b2bi:TagResource", + "b2bi:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::B2BI::Transformer" +} diff --git a/src/schema/aws-backup-backupplan.json b/src/schema/aws-backup-backupplan.json index 0ddbbdbe..c212e2e4 100644 --- a/src/schema/aws-backup-backupplan.json +++ b/src/schema/aws-backup-backupplan.json @@ -1,214 +1,242 @@ -{ - "additionalProperties": false, - "definitions": { - "AdvancedBackupSettingResourceType": { - "additionalProperties": false, - "properties": { - "BackupOptions": { - "type": "object" - }, - "ResourceType": { - "type": "string" - } - }, - "required": [ - "BackupOptions", - "ResourceType" - ], - "type": "object" - }, - "BackupPlanResourceType": { - "additionalProperties": false, - "properties": { - "AdvancedBackupSettings": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/AdvancedBackupSettingResourceType" - }, - "type": "array", - "uniqueItems": false - }, - "BackupPlanName": { - "type": "string" - }, - "BackupPlanRule": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/BackupRuleResourceType" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "BackupPlanName", - "BackupPlanRule" - ], - "type": "object" - }, - "BackupRuleResourceType": { - "additionalProperties": false, - "properties": { - "CompletionWindowMinutes": { - "type": "number" - }, - "CopyActions": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/CopyActionResourceType" - }, - "type": "array", - "uniqueItems": false - }, - "EnableContinuousBackup": { - "type": "boolean" - }, - "Lifecycle": { - "$ref": "#/definitions/LifecycleResourceType" - }, - "RecoveryPointTags": { - "additionalProperties": false, - "patternProperties": { - "^.{1,128}$": { - "type": "string" - } - }, - "type": "object" - }, - "RuleName": { - "type": "string" - }, - "ScheduleExpression": { - "type": "string" - }, - "ScheduleExpressionTimezone": { - "type": "string" - }, - "StartWindowMinutes": { - "type": "number" - }, - "TargetBackupVault": { - "type": "string" - } - }, - "required": [ - "TargetBackupVault", - "RuleName" - ], - "type": "object" - }, - "CopyActionResourceType": { - "additionalProperties": false, - "properties": { - "DestinationBackupVaultArn": { - "type": "string" - }, - "Lifecycle": { - "$ref": "#/definitions/LifecycleResourceType" - } - }, - "required": [ - "DestinationBackupVaultArn" - ], - "type": "object" - }, - "LifecycleResourceType": { - "additionalProperties": false, - "properties": { - "DeleteAfterDays": { - "type": "number" - }, - "MoveToColdStorageAfterDays": { - "type": "number" - }, - "OptInToArchiveForSupportedResources": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Backup::BackupPlan", - "handlers": { - "create": { - "permissions": [ - "backup:GetBackupPlan", - "backup:TagResource", - "backup:CreateBackupPlan" - ] - }, - "delete": { - "permissions": [ - "backup:GetBackupPlan", - "backup:DeleteBackupPlan" - ] - }, - "list": { - "permissions": [ - "backup:ListBackupPlans" - ] - }, - "read": { - "permissions": [ - "backup:GetBackupPlan", - "backup:ListTags" - ] - }, - "update": { - "permissions": [ - "backup:UpdateBackupPlan", - "backup:ListTags", - "backup:TagResource", - "backup:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/BackupPlanId" - ], - "properties": { - "BackupPlan": { - "$ref": "#/definitions/BackupPlanResourceType" - }, - "BackupPlanArn": { - "type": "string" - }, - "BackupPlanId": { - "type": "string" - }, - "BackupPlanTags": { - "additionalProperties": false, - "patternProperties": { - "^.{1,128}$": { - "type": "string" - } - }, - "type": "object" - }, - "VersionId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/BackupPlanId", - "/properties/VersionId", - "/properties/BackupPlanArn" - ], - "required": [ - "BackupPlan" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "backup:TagResource", - "backup:UntagResource", - "backup:ListTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/BackupPlanTags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Backup::BackupPlan" -} +{ + "additionalProperties": false, + "definitions": { + "AdvancedBackupSettingResourceType": { + "additionalProperties": false, + "properties": { + "BackupOptions": { + "type": "object" + }, + "ResourceType": { + "type": "string" + } + }, + "required": [ + "BackupOptions", + "ResourceType" + ], + "type": "object" + }, + "BackupPlanResourceType": { + "additionalProperties": false, + "properties": { + "AdvancedBackupSettings": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AdvancedBackupSettingResourceType" + }, + "type": "array", + "uniqueItems": false + }, + "BackupPlanName": { + "type": "string" + }, + "BackupPlanRule": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/BackupRuleResourceType" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "BackupPlanName", + "BackupPlanRule" + ], + "type": "object" + }, + "BackupRuleResourceType": { + "additionalProperties": false, + "properties": { + "CompletionWindowMinutes": { + "type": "number" + }, + "CopyActions": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/CopyActionResourceType" + }, + "type": "array", + "uniqueItems": false + }, + "EnableContinuousBackup": { + "type": "boolean" + }, + "IndexActions": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IndexActionsResourceType" + }, + "type": "array", + "uniqueItems": false + }, + "Lifecycle": { + "$ref": "#/definitions/LifecycleResourceType" + }, + "RecoveryPointTags": { + "additionalProperties": false, + "patternProperties": { + "^.{1,128}$": { + "type": "string" + } + }, + "type": "object" + }, + "RuleName": { + "type": "string" + }, + "ScheduleExpression": { + "type": "string" + }, + "ScheduleExpressionTimezone": { + "type": "string" + }, + "StartWindowMinutes": { + "type": "number" + }, + "TargetBackupVault": { + "type": "string" + } + }, + "required": [ + "TargetBackupVault", + "RuleName" + ], + "type": "object" + }, + "CopyActionResourceType": { + "additionalProperties": false, + "properties": { + "DestinationBackupVaultArn": { + "type": "string" + }, + "Lifecycle": { + "$ref": "#/definitions/LifecycleResourceType" + } + }, + "required": [ + "DestinationBackupVaultArn" + ], + "type": "object" + }, + "IndexActionsResourceType": { + "additionalProperties": false, + "properties": { + "ResourceTypes": { + "$ref": "#/definitions/ResourceTypes" + } + }, + "type": "object" + }, + "LifecycleResourceType": { + "additionalProperties": false, + "properties": { + "DeleteAfterDays": { + "type": "number" + }, + "MoveToColdStorageAfterDays": { + "type": "number" + }, + "OptInToArchiveForSupportedResources": { + "type": "boolean" + } + }, + "type": "object" + }, + "ResourceType": { + "type": "string" + }, + "ResourceTypes": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ResourceType" + }, + "type": "array", + "uniqueItems": true + } + }, + "description": "Resource Type definition for AWS::Backup::BackupPlan", + "handlers": { + "create": { + "permissions": [ + "backup:GetBackupPlan", + "backup:TagResource", + "backup:CreateBackupPlan" + ] + }, + "delete": { + "permissions": [ + "backup:GetBackupPlan", + "backup:DeleteBackupPlan" + ] + }, + "list": { + "permissions": [ + "backup:ListBackupPlans" + ] + }, + "read": { + "permissions": [ + "backup:GetBackupPlan", + "backup:ListTags" + ] + }, + "update": { + "permissions": [ + "backup:UpdateBackupPlan", + "backup:ListTags", + "backup:TagResource", + "backup:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/BackupPlanId" + ], + "properties": { + "BackupPlan": { + "$ref": "#/definitions/BackupPlanResourceType" + }, + "BackupPlanArn": { + "type": "string" + }, + "BackupPlanId": { + "type": "string" + }, + "BackupPlanTags": { + "additionalProperties": false, + "patternProperties": { + "^.{1,128}$": { + "type": "string" + } + }, + "type": "object" + }, + "VersionId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/BackupPlanId", + "/properties/VersionId", + "/properties/BackupPlanArn" + ], + "required": [ + "BackupPlan" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "backup:TagResource", + "backup:UntagResource", + "backup:ListTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/BackupPlanTags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Backup::BackupPlan" +} diff --git a/src/schema/aws-backup-backupselection.json b/src/schema/aws-backup-backupselection.json index f4117f47..539586f3 100644 --- a/src/schema/aws-backup-backupselection.json +++ b/src/schema/aws-backup-backupselection.json @@ -1,179 +1,180 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/BackupSelection", - "/properties/BackupPlanId" - ], - "definitions": { - "BackupSelectionResourceType": { - "additionalProperties": false, - "properties": { - "Conditions": { - "additionalProperties": false, - "properties": { - "StringEquals": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ConditionParameter" - }, - "type": "array", - "uniqueItems": false - }, - "StringLike": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ConditionParameter" - }, - "type": "array", - "uniqueItems": false - }, - "StringNotEquals": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ConditionParameter" - }, - "type": "array", - "uniqueItems": false - }, - "StringNotLike": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ConditionParameter" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "IamRoleArn": { - "type": "string" - }, - "ListOfTags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ConditionResourceType" - }, - "type": "array", - "uniqueItems": false - }, - "NotResources": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Resources": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SelectionName": { - "type": "string" - } - }, - "required": [ - "SelectionName", - "IamRoleArn" - ], - "type": "object" - }, - "ConditionParameter": { - "additionalProperties": false, - "properties": { - "ConditionKey": { - "type": "string" - }, - "ConditionValue": { - "type": "string" - } - }, - "type": "object" - }, - "ConditionResourceType": { - "additionalProperties": false, - "properties": { - "ConditionKey": { - "type": "string" - }, - "ConditionType": { - "type": "string" - }, - "ConditionValue": { - "type": "string" - } - }, - "required": [ - "ConditionValue", - "ConditionKey", - "ConditionType" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Backup::BackupSelection", - "handlers": { - "create": { - "permissions": [ - "backup:CreateBackupSelection", - "iam:GetRole", - "iam:PassRole", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "backup:GetBackupSelection", - "backup:DeleteBackupSelection" - ] - }, - "list": { - "permissions": [ - "backup:ListBackupSelections" - ] - }, - "read": { - "permissions": [ - "backup:GetBackupSelection" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "BackupPlanId": { - "type": "string" - }, - "BackupSelection": { - "$ref": "#/definitions/BackupSelectionResourceType" - }, - "Id": { - "type": "string" - }, - "SelectionId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/SelectionId", - "/properties/Id" - ], - "required": [ - "BackupSelection", - "BackupPlanId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Backup::BackupSelection" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BackupSelection", + "/properties/BackupPlanId" + ], + "definitions": { + "BackupSelectionResourceType": { + "additionalProperties": false, + "properties": { + "Conditions": { + "additionalProperties": false, + "properties": { + "StringEquals": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ConditionParameter" + }, + "type": "array", + "uniqueItems": false + }, + "StringLike": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ConditionParameter" + }, + "type": "array", + "uniqueItems": false + }, + "StringNotEquals": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ConditionParameter" + }, + "type": "array", + "uniqueItems": false + }, + "StringNotLike": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ConditionParameter" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "IamRoleArn": { + "type": "string" + }, + "ListOfTags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ConditionResourceType" + }, + "type": "array", + "uniqueItems": false + }, + "NotResources": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Resources": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SelectionName": { + "type": "string" + } + }, + "required": [ + "SelectionName", + "IamRoleArn" + ], + "type": "object" + }, + "ConditionParameter": { + "additionalProperties": false, + "properties": { + "ConditionKey": { + "type": "string" + }, + "ConditionValue": { + "type": "string" + } + }, + "type": "object" + }, + "ConditionResourceType": { + "additionalProperties": false, + "properties": { + "ConditionKey": { + "type": "string" + }, + "ConditionType": { + "type": "string" + }, + "ConditionValue": { + "type": "string" + } + }, + "required": [ + "ConditionValue", + "ConditionKey", + "ConditionType" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Backup::BackupSelection", + "handlers": { + "create": { + "permissions": [ + "backup:CreateBackupSelection", + "iam:GetRole", + "iam:PassRole", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "backup:GetBackupSelection", + "backup:DeleteBackupSelection" + ] + }, + "list": { + "permissions": [ + "backup:ListBackupSelections", + "backup:ListBackupPlans" + ] + }, + "read": { + "permissions": [ + "backup:GetBackupSelection" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "BackupPlanId": { + "type": "string" + }, + "BackupSelection": { + "$ref": "#/definitions/BackupSelectionResourceType" + }, + "Id": { + "type": "string" + }, + "SelectionId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/SelectionId", + "/properties/Id" + ], + "required": [ + "BackupSelection", + "BackupPlanId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Backup::BackupSelection" +} diff --git a/src/schema/aws-backup-backupvault.json b/src/schema/aws-backup-backupvault.json index 429d0ea1..fb77ac97 100644 --- a/src/schema/aws-backup-backupvault.json +++ b/src/schema/aws-backup-backupvault.json @@ -1,161 +1,161 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/BackupVaultName", - "/properties/EncryptionKeyArn" - ], - "definitions": { - "BackupVaultNamePattern": { - "pattern": "^[a-zA-Z0-9\\-\\_]{2,50}$", - "type": "string" - }, - "LockConfigurationType": { - "additionalProperties": false, - "properties": { - "ChangeableForDays": { - "type": "integer" - }, - "MaxRetentionDays": { - "type": "integer" - }, - "MinRetentionDays": { - "type": "integer" - } - }, - "required": [ - "MinRetentionDays" - ], - "type": "object" - }, - "NotificationObjectType": { - "additionalProperties": false, - "properties": { - "BackupVaultEvents": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SNSTopicArn": { - "type": "string" - } - }, - "required": [ - "SNSTopicArn", - "BackupVaultEvents" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Backup::BackupVault", - "handlers": { - "create": { - "permissions": [ - "backup:TagResource", - "backup:CreateBackupVault", - "backup:PutBackupVaultAccessPolicy", - "backup:PutBackupVaultNotifications", - "backup:PutBackupVaultLockConfiguration", - "backup-storage:Mount", - "backup-storage:MountCapsule", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt", - "kms:RetireGrant", - "kms:DescribeKey" - ] - }, - "delete": { - "permissions": [ - "backup:DeleteBackupVault" - ] - }, - "list": { - "permissions": [ - "backup:ListBackupVaults" - ] - }, - "read": { - "permissions": [ - "backup:DescribeBackupVault", - "backup:GetBackupVaultNotifications", - "backup:GetBackupVaultAccessPolicy", - "backup:ListTags" - ] - }, - "update": { - "permissions": [ - "backup:DescribeBackupVault", - "backup:DeleteBackupVaultAccessPolicy", - "backup:DeleteBackupVaultNotifications", - "backup:DeleteBackupVaultLockConfiguration", - "backup:ListTags", - "backup:TagResource", - "backup:UntagResource", - "backup:PutBackupVaultAccessPolicy", - "backup:PutBackupVaultNotifications", - "backup:PutBackupVaultLockConfiguration" - ] - } - }, - "primaryIdentifier": [ - "/properties/BackupVaultName" - ], - "properties": { - "AccessPolicy": { - "type": [ - "object", - "string" - ] - }, - "BackupVaultArn": { - "type": "string" - }, - "BackupVaultName": { - "$ref": "#/definitions/BackupVaultNamePattern" - }, - "BackupVaultTags": { - "additionalProperties": false, - "patternProperties": { - "^.{1,128}$": { - "type": "string" - } - }, - "type": "object" - }, - "EncryptionKeyArn": { - "type": "string" - }, - "LockConfiguration": { - "$ref": "#/definitions/LockConfigurationType" - }, - "Notifications": { - "$ref": "#/definitions/NotificationObjectType" - } - }, - "readOnlyProperties": [ - "/properties/BackupVaultArn" - ], - "required": [ - "BackupVaultName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "backup:TagResource", - "backup:UntagResource", - "backup:ListTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/BackupVaultTags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Backup::BackupVault", - "writeOnlyProperties": [ - "/properties/LockConfiguration/ChangeableForDays" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BackupVaultName", + "/properties/EncryptionKeyArn" + ], + "definitions": { + "BackupVaultNamePattern": { + "pattern": "^[a-zA-Z0-9\\-\\_]{2,50}$", + "type": "string" + }, + "LockConfigurationType": { + "additionalProperties": false, + "properties": { + "ChangeableForDays": { + "type": "integer" + }, + "MaxRetentionDays": { + "type": "integer" + }, + "MinRetentionDays": { + "type": "integer" + } + }, + "required": [ + "MinRetentionDays" + ], + "type": "object" + }, + "NotificationObjectType": { + "additionalProperties": false, + "properties": { + "BackupVaultEvents": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SNSTopicArn": { + "type": "string" + } + }, + "required": [ + "SNSTopicArn", + "BackupVaultEvents" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Backup::BackupVault", + "handlers": { + "create": { + "permissions": [ + "backup:TagResource", + "backup:CreateBackupVault", + "backup:PutBackupVaultAccessPolicy", + "backup:PutBackupVaultNotifications", + "backup:PutBackupVaultLockConfiguration", + "backup-storage:Mount", + "backup-storage:MountCapsule", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt", + "kms:RetireGrant", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "backup:DeleteBackupVault" + ] + }, + "list": { + "permissions": [ + "backup:ListBackupVaults" + ] + }, + "read": { + "permissions": [ + "backup:DescribeBackupVault", + "backup:GetBackupVaultNotifications", + "backup:GetBackupVaultAccessPolicy", + "backup:ListTags" + ] + }, + "update": { + "permissions": [ + "backup:DescribeBackupVault", + "backup:DeleteBackupVaultAccessPolicy", + "backup:DeleteBackupVaultNotifications", + "backup:DeleteBackupVaultLockConfiguration", + "backup:ListTags", + "backup:TagResource", + "backup:UntagResource", + "backup:PutBackupVaultAccessPolicy", + "backup:PutBackupVaultNotifications", + "backup:PutBackupVaultLockConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/BackupVaultName" + ], + "properties": { + "AccessPolicy": { + "type": [ + "object", + "string" + ] + }, + "BackupVaultArn": { + "type": "string" + }, + "BackupVaultName": { + "$ref": "#/definitions/BackupVaultNamePattern" + }, + "BackupVaultTags": { + "additionalProperties": false, + "patternProperties": { + "^.{1,128}$": { + "type": "string" + } + }, + "type": "object" + }, + "EncryptionKeyArn": { + "type": "string" + }, + "LockConfiguration": { + "$ref": "#/definitions/LockConfigurationType" + }, + "Notifications": { + "$ref": "#/definitions/NotificationObjectType" + } + }, + "readOnlyProperties": [ + "/properties/BackupVaultArn" + ], + "required": [ + "BackupVaultName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "backup:TagResource", + "backup:UntagResource", + "backup:ListTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/BackupVaultTags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Backup::BackupVault", + "writeOnlyProperties": [ + "/properties/LockConfiguration/ChangeableForDays" + ] +} diff --git a/src/schema/aws-backup-framework.json b/src/schema/aws-backup-framework.json index 3cfe7ab0..6f70b39c 100644 --- a/src/schema/aws-backup-framework.json +++ b/src/schema/aws-backup-framework.json @@ -1,208 +1,208 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FrameworkName" - ], - "definitions": { - "ControlInputParameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "type": "string" - }, - "ParameterValue": { - "type": "string" - } - }, - "required": [ - "ParameterName", - "ParameterValue" - ], - "type": "object" - }, - "FrameworkControl": { - "additionalProperties": false, - "properties": { - "ControlInputParameters": { - "description": "A list of ParameterName and ParameterValue pairs.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ControlInputParameter" - }, - "type": "array", - "uniqueItems": true - }, - "ControlName": { - "description": "The name of a control. This name is between 1 and 256 characters.", - "type": "string" - }, - "ControlScope": { - "additionalProperties": false, - "description": "The scope of a control. The control scope defines what the control will evaluate. Three examples of control scopes are: a specific backup plan, all backup plans with a specific tag, or all backup plans.", - "properties": { - "ComplianceResourceIds": { - "description": "The ID of the only AWS resource that you want your control scope to contain.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "ComplianceResourceTypes": { - "description": "Describes whether the control scope includes one or more types of resources, such as `EFS` or `RDS`.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "Tags": { - "description": "Describes whether the control scope includes resources with one or more tags. Each tag is a key-value pair.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "required": [ - "ControlName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Contains detailed information about a framework. Frameworks contain controls, which evaluate and report on your backup events and resources. Frameworks generate daily compliance results.", - "handlers": { - "create": { - "permissions": [ - "backup:CreateFramework", - "backup:DescribeFramework", - "backup:ListTags", - "backup:TagResource", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "backup:DeleteFramework", - "backup:DescribeFramework" - ] - }, - "list": { - "permissions": [ - "backup:ListFrameworks" - ] - }, - "read": { - "permissions": [ - "backup:DescribeFramework", - "backup:ListTags" - ] - }, - "update": { - "permissions": [ - "backup:DescribeFramework", - "backup:UpdateFramework", - "backup:ListTags", - "backup:TagResource", - "backup:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/FrameworkArn" - ], - "properties": { - "CreationTime": { - "description": "The date and time that a framework is created, in ISO 8601 representation. The value of CreationTime is accurate to milliseconds. For example, 2020-07-10T15:00:00.000-08:00 represents the 10th of July 2020 at 3:00 PM 8 hours behind UTC.", - "type": "string" - }, - "DeploymentStatus": { - "description": "The deployment status of a framework. The statuses are: `CREATE_IN_PROGRESS | UPDATE_IN_PROGRESS | DELETE_IN_PROGRESS | COMPLETED | FAILED`", - "type": "string" - }, - "FrameworkArn": { - "description": "An Amazon Resource Name (ARN) that uniquely identifies Framework as a resource", - "type": "string" - }, - "FrameworkControls": { - "description": "Contains detailed information about all of the controls of a framework. Each framework must contain at least one control.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/FrameworkControl" - }, - "type": "array", - "uniqueItems": true - }, - "FrameworkDescription": { - "description": "An optional description of the framework with a maximum 1,024 characters.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "FrameworkName": { - "description": "The unique name of a framework. This name is between 1 and 256 characters, starting with a letter, and consisting of letters (a-z, A-Z), numbers (0-9), and underscores (_).", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z][_a-zA-Z0-9]*", - "type": "string" - }, - "FrameworkStatus": { - "description": "A framework consists of one or more controls. Each control governs a resource, such as backup plans, backup selections, backup vaults, or recovery points. You can also turn AWS Config recording on or off for each resource. The statuses are:\n\n`ACTIVE` when recording is turned on for all resources governed by the framework.\n\n`PARTIALLY_ACTIVE` when recording is turned off for at least one resource governed by the framework.\n\n`INACTIVE` when recording is turned off for all resources governed by the framework.\n\n`UNAVAILABLE` when AWS Backup is unable to validate recording status at this time.", - "type": "string" - }, - "FrameworkTags": { - "description": "Metadata that you can assign to help organize the frameworks that you create. Each tag is a key-value pair.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/FrameworkArn", - "/properties/CreationTime", - "/properties/FrameworkStatus", - "/properties/DeploymentStatus" - ], - "required": [ - "FrameworkControls" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "backup:TagResource", - "backup:UntagResource", - "backup:ListTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/FrameworkTags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Backup::Framework" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FrameworkName" + ], + "definitions": { + "ControlInputParameter": { + "additionalProperties": false, + "properties": { + "ParameterName": { + "type": "string" + }, + "ParameterValue": { + "type": "string" + } + }, + "required": [ + "ParameterName", + "ParameterValue" + ], + "type": "object" + }, + "FrameworkControl": { + "additionalProperties": false, + "properties": { + "ControlInputParameters": { + "description": "A list of ParameterName and ParameterValue pairs.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ControlInputParameter" + }, + "type": "array", + "uniqueItems": true + }, + "ControlName": { + "description": "The name of a control. This name is between 1 and 256 characters.", + "type": "string" + }, + "ControlScope": { + "additionalProperties": false, + "description": "The scope of a control. The control scope defines what the control will evaluate. Three examples of control scopes are: a specific backup plan, all backup plans with a specific tag, or all backup plans.", + "properties": { + "ComplianceResourceIds": { + "description": "The ID of the only AWS resource that you want your control scope to contain.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "ComplianceResourceTypes": { + "description": "Describes whether the control scope includes one or more types of resources, such as `EFS` or `RDS`.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Tags": { + "description": "Describes whether the control scope includes resources with one or more tags. Each tag is a key-value pair.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "required": [ + "ControlName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Contains detailed information about a framework. Frameworks contain controls, which evaluate and report on your backup events and resources. Frameworks generate daily compliance results.", + "handlers": { + "create": { + "permissions": [ + "backup:CreateFramework", + "backup:DescribeFramework", + "backup:ListTags", + "backup:TagResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "backup:DeleteFramework", + "backup:DescribeFramework" + ] + }, + "list": { + "permissions": [ + "backup:ListFrameworks" + ] + }, + "read": { + "permissions": [ + "backup:DescribeFramework", + "backup:ListTags" + ] + }, + "update": { + "permissions": [ + "backup:DescribeFramework", + "backup:UpdateFramework", + "backup:ListTags", + "backup:TagResource", + "backup:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/FrameworkArn" + ], + "properties": { + "CreationTime": { + "description": "The date and time that a framework is created, in ISO 8601 representation. The value of CreationTime is accurate to milliseconds. For example, 2020-07-10T15:00:00.000-08:00 represents the 10th of July 2020 at 3:00 PM 8 hours behind UTC.", + "type": "string" + }, + "DeploymentStatus": { + "description": "The deployment status of a framework. The statuses are: `CREATE_IN_PROGRESS | UPDATE_IN_PROGRESS | DELETE_IN_PROGRESS | COMPLETED | FAILED`", + "type": "string" + }, + "FrameworkArn": { + "description": "An Amazon Resource Name (ARN) that uniquely identifies Framework as a resource", + "type": "string" + }, + "FrameworkControls": { + "description": "Contains detailed information about all of the controls of a framework. Each framework must contain at least one control.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/FrameworkControl" + }, + "type": "array", + "uniqueItems": true + }, + "FrameworkDescription": { + "description": "An optional description of the framework with a maximum 1,024 characters.", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "FrameworkName": { + "description": "The unique name of a framework. This name is between 1 and 256 characters, starting with a letter, and consisting of letters (a-z, A-Z), numbers (0-9), and underscores (_).", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z][_a-zA-Z0-9]*", + "type": "string" + }, + "FrameworkStatus": { + "description": "A framework consists of one or more controls. Each control governs a resource, such as backup plans, backup selections, backup vaults, or recovery points. You can also turn AWS Config recording on or off for each resource. The statuses are:\n\n`ACTIVE` when recording is turned on for all resources governed by the framework.\n\n`PARTIALLY_ACTIVE` when recording is turned off for at least one resource governed by the framework.\n\n`INACTIVE` when recording is turned off for all resources governed by the framework.\n\n`UNAVAILABLE` when AWS Backup is unable to validate recording status at this time.", + "type": "string" + }, + "FrameworkTags": { + "description": "Metadata that you can assign to help organize the frameworks that you create. Each tag is a key-value pair.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/FrameworkArn", + "/properties/CreationTime", + "/properties/FrameworkStatus", + "/properties/DeploymentStatus" + ], + "required": [ + "FrameworkControls" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "backup:TagResource", + "backup:UntagResource", + "backup:ListTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/FrameworkTags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Backup::Framework" +} diff --git a/src/schema/aws-backup-logicallyairgappedbackupvault.json b/src/schema/aws-backup-logicallyairgappedbackupvault.json index f90c044a..e18f4f4a 100644 --- a/src/schema/aws-backup-logicallyairgappedbackupvault.json +++ b/src/schema/aws-backup-logicallyairgappedbackupvault.json @@ -1,97 +1,151 @@ { - "typeName" : "AWS::Backup::LogicallyAirGappedBackupVault", - "description" : "Resource Type definition for AWS::Backup::LogicallyAirGappedBackupVault", - "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "definitions" : { - "NotificationObjectType" : { - "type" : "object", - "additionalProperties" : false, - "properties" : { - "BackupVaultEvents" : { - "type" : "array", - "insertionOrder" : false, - "uniqueItems" : false, - "items" : { - "type" : "string" - } + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BackupVaultName", + "/properties/MinRetentionDays", + "/properties/MaxRetentionDays" + ], + "definitions": { + "BackupVaultNamePattern": { + "pattern": "^[a-zA-Z0-9\\-\\_]{2,50}$", + "type": "string" + }, + "NotificationObjectType": { + "additionalProperties": false, + "properties": { + "BackupVaultEvents": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false }, - "SNSTopicArn" : { - "type" : "string" + "SNSTopicArn": { + "type": "string" } }, - "required" : [ "SNSTopicArn", "BackupVaultEvents" ] - }, - "BackupVaultNamePattern" : { - "type" : "string", - "pattern" : "^[a-zA-Z0-9\\-\\_]{2,50}$" + "required": [ + "SNSTopicArn", + "BackupVaultEvents" + ], + "type": "object" } }, - "properties" : { - "AccessPolicy" : { - "type" : [ "object", "string" ] + "description": "Resource Type definition for AWS::Backup::LogicallyAirGappedBackupVault", + "handlers": { + "create": { + "permissions": [ + "backup:TagResource", + "backup:CreateLogicallyAirGappedBackupVault", + "backup:PutBackupVaultAccessPolicy", + "backup:PutBackupVaultNotifications", + "backup-storage:Mount", + "backup-storage:MountCapsule", + "backup:DescribeBackupVault" + ] }, - "BackupVaultName" : { - "$ref" : "#/definitions/BackupVaultNamePattern" + "delete": { + "permissions": [ + "backup:DeleteBackupVault" + ] }, - "MinRetentionDays" : { - "type" : "integer" + "list": { + "permissions": [ + "backup:ListBackupVaults" + ] }, - "MaxRetentionDays" : { - "type" : "integer" + "read": { + "permissions": [ + "backup:DescribeBackupVault", + "backup:GetBackupVaultNotifications", + "backup:GetBackupVaultAccessPolicy", + "backup:ListTags" + ] }, - "BackupVaultTags" : { - "type" : "object", - "additionalProperties" : false, - "patternProperties" : { - "^.{1,128}$" : { - "type" : "string" - } - } + "update": { + "permissions": [ + "backup:DescribeBackupVault", + "backup:DeleteBackupVaultAccessPolicy", + "backup:DeleteBackupVaultNotifications", + "backup:DeleteBackupVaultLockConfiguration", + "backup:GetBackupVaultAccessPolicy", + "backup:ListTags", + "backup:TagResource", + "backup:UntagResource", + "backup:PutBackupVaultAccessPolicy", + "backup:PutBackupVaultNotifications", + "backup:PutBackupVaultLockConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/BackupVaultName" + ], + "properties": { + "AccessPolicy": { + "type": [ + "object", + "string" + ] }, - "Notifications" : { - "$ref" : "#/definitions/NotificationObjectType" + "BackupVaultArn": { + "type": "string" }, - "EncryptionKeyArn" : { - "type" : "string" + "BackupVaultName": { + "$ref": "#/definitions/BackupVaultNamePattern" }, - "BackupVaultArn" : { - "type" : "string" + "BackupVaultTags": { + "additionalProperties": false, + "patternProperties": { + "^.{1,128}$": { + "type": "string" + } + }, + "type": "object" }, - "VaultState" : { - "type" : "string" + "EncryptionKeyArn": { + "type": "string" }, - "VaultType" : { - "type" : "string" - } - }, - "additionalProperties" : false, - "tagging" : { - "taggable" : true, - "tagOnCreate" : true, - "tagUpdatable" : true, - "cloudFormationSystemTags" : true, - "tagProperty" : "/properties/BackupVaultTags", - "permissions" : [ "backup:TagResource", "backup:UntagResource", "backup:ListTags" ] - }, - "required" : [ "BackupVaultName", "MinRetentionDays", "MaxRetentionDays" ], - "createOnlyProperties" : [ "/properties/BackupVaultName", "/properties/MinRetentionDays", "/properties/MaxRetentionDays" ], - "readOnlyProperties" : [ "/properties/BackupVaultArn", "/properties/EncryptionKeyArn" ], - "primaryIdentifier" : [ "/properties/BackupVaultName" ], - "handlers" : { - "create" : { - "permissions" : [ "backup:TagResource", "backup:CreateLogicallyAirGappedBackupVault", "backup:PutBackupVaultAccessPolicy", "backup:PutBackupVaultNotifications", "backup-storage:Mount", "backup-storage:MountCapsule", "backup:DescribeBackupVault" ] + "MaxRetentionDays": { + "type": "integer" }, - "read" : { - "permissions" : [ "backup:DescribeBackupVault", "backup:GetBackupVaultNotifications", "backup:GetBackupVaultAccessPolicy", "backup:ListTags" ] + "MinRetentionDays": { + "type": "integer" }, - "update" : { - "permissions" : [ "backup:DescribeBackupVault", "backup:DeleteBackupVaultAccessPolicy", "backup:DeleteBackupVaultNotifications", "backup:DeleteBackupVaultLockConfiguration", "backup:GetBackupVaultAccessPolicy", "backup:ListTags", "backup:TagResource", "backup:UntagResource", "backup:PutBackupVaultAccessPolicy", "backup:PutBackupVaultNotifications", "backup:PutBackupVaultLockConfiguration" ] + "Notifications": { + "$ref": "#/definitions/NotificationObjectType" }, - "delete" : { - "permissions" : [ "backup:DeleteBackupVault" ] + "VaultState": { + "type": "string" }, - "list" : { - "permissions" : [ "backup:ListBackupVaults" ] + "VaultType": { + "type": "string" } - } -} \ No newline at end of file + }, + "readOnlyProperties": [ + "/properties/BackupVaultArn", + "/properties/EncryptionKeyArn", + "/properties/VaultState", + "/properties/VaultType" + ], + "required": [ + "BackupVaultName", + "MinRetentionDays", + "MaxRetentionDays" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "backup:TagResource", + "backup:UntagResource", + "backup:ListTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/BackupVaultTags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Backup::LogicallyAirGappedBackupVault" +} diff --git a/src/schema/aws-backup-reportplan.json b/src/schema/aws-backup-reportplan.json index b9b750c4..aedcb4c3 100644 --- a/src/schema/aws-backup-reportplan.json +++ b/src/schema/aws-backup-reportplan.json @@ -1,194 +1,194 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ReportPlanName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Contains detailed information about a report plan in AWS Backup Audit Manager.", - "handlers": { - "create": { - "permissions": [ - "backup:CreateReportPlan", - "backup:DescribeReportPlan", - "backup:ListTags", - "backup:TagResource", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "backup:DeleteReportPlan", - "backup:DescribeReportPlan" - ] - }, - "list": { - "permissions": [ - "backup:ListReportPlans" - ] - }, - "read": { - "permissions": [ - "backup:DescribeReportPlan", - "backup:ListTags" - ] - }, - "update": { - "permissions": [ - "backup:DescribeReportPlan", - "backup:UpdateReportPlan", - "backup:ListTags", - "backup:UntagResource", - "backup:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ReportPlanArn" - ], - "properties": { - "ReportDeliveryChannel": { - "additionalProperties": false, - "description": "A structure that contains information about where and how to deliver your reports, specifically your Amazon S3 bucket name, S3 key prefix, and the formats of your reports.", - "properties": { - "Formats": { - "description": "A list of the format of your reports: CSV, JSON, or both. If not specified, the default format is CSV.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "S3BucketName": { - "description": "The unique name of the S3 bucket that receives your reports.", - "type": "string" - }, - "S3KeyPrefix": { - "description": "The prefix for where AWS Backup Audit Manager delivers your reports to Amazon S3. The prefix is this part of the following path: s3://your-bucket-name/prefix/Backup/us-west-2/year/month/day/report-name. If not specified, there is no prefix.", - "type": "string" - } - }, - "required": [ - "S3BucketName" - ], - "type": "object" - }, - "ReportPlanArn": { - "description": "An Amazon Resource Name (ARN) that uniquely identifies a resource. The format of the ARN depends on the resource type.", - "type": "string" - }, - "ReportPlanDescription": { - "description": "An optional description of the report plan with a maximum of 1,024 characters.", - "maxLength": 1024, - "minLength": 0, - "pattern": ".*\\S.*", - "type": "string" - }, - "ReportPlanName": { - "description": "The unique name of the report plan. The name must be between 1 and 256 characters, starting with a letter, and consisting of letters (a-z, A-Z), numbers (0-9), and underscores (_).", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z][_a-zA-Z0-9]*", - "type": "string" - }, - "ReportPlanTags": { - "description": "Metadata that you can assign to help organize the report plans that you create. Each tag is a key-value pair.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "ReportSetting": { - "additionalProperties": false, - "description": "Identifies the report template for the report. Reports are built using a report template.", - "properties": { - "Accounts": { - "description": "The list of AWS accounts that a report covers.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "FrameworkArns": { - "description": "The Amazon Resource Names (ARNs) of the frameworks a report covers.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "OrganizationUnits": { - "description": "The list of AWS organization units that a report covers.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Regions": { - "description": "The list of AWS regions that a report covers.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "ReportTemplate": { - "description": "Identifies the report template for the report. Reports are built using a report template. The report templates are: `BACKUP_JOB_REPORT | COPY_JOB_REPORT | RESTORE_JOB_REPORT`", - "type": "string" - } - }, - "required": [ - "ReportTemplate" - ], - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/ReportPlanArn" - ], - "required": [ - "ReportDeliveryChannel", - "ReportSetting" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "backup:TagResource", - "backup:UntagResource", - "backup:ListTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/ReportPlanTags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Backup::ReportPlan" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ReportPlanName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Contains detailed information about a report plan in AWS Backup Audit Manager.", + "handlers": { + "create": { + "permissions": [ + "backup:CreateReportPlan", + "backup:DescribeReportPlan", + "backup:ListTags", + "backup:TagResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "backup:DeleteReportPlan", + "backup:DescribeReportPlan" + ] + }, + "list": { + "permissions": [ + "backup:ListReportPlans" + ] + }, + "read": { + "permissions": [ + "backup:DescribeReportPlan", + "backup:ListTags" + ] + }, + "update": { + "permissions": [ + "backup:DescribeReportPlan", + "backup:UpdateReportPlan", + "backup:ListTags", + "backup:UntagResource", + "backup:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ReportPlanArn" + ], + "properties": { + "ReportDeliveryChannel": { + "additionalProperties": false, + "description": "A structure that contains information about where and how to deliver your reports, specifically your Amazon S3 bucket name, S3 key prefix, and the formats of your reports.", + "properties": { + "Formats": { + "description": "A list of the format of your reports: CSV, JSON, or both. If not specified, the default format is CSV.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "S3BucketName": { + "description": "The unique name of the S3 bucket that receives your reports.", + "type": "string" + }, + "S3KeyPrefix": { + "description": "The prefix for where AWS Backup Audit Manager delivers your reports to Amazon S3. The prefix is this part of the following path: s3://your-bucket-name/prefix/Backup/us-west-2/year/month/day/report-name. If not specified, there is no prefix.", + "type": "string" + } + }, + "required": [ + "S3BucketName" + ], + "type": "object" + }, + "ReportPlanArn": { + "description": "An Amazon Resource Name (ARN) that uniquely identifies a resource. The format of the ARN depends on the resource type.", + "type": "string" + }, + "ReportPlanDescription": { + "description": "An optional description of the report plan with a maximum of 1,024 characters.", + "maxLength": 1024, + "minLength": 0, + "pattern": ".*\\S.*", + "type": "string" + }, + "ReportPlanName": { + "description": "The unique name of the report plan. The name must be between 1 and 256 characters, starting with a letter, and consisting of letters (a-z, A-Z), numbers (0-9), and underscores (_).", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z][_a-zA-Z0-9]*", + "type": "string" + }, + "ReportPlanTags": { + "description": "Metadata that you can assign to help organize the report plans that you create. Each tag is a key-value pair.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "ReportSetting": { + "additionalProperties": false, + "description": "Identifies the report template for the report. Reports are built using a report template.", + "properties": { + "Accounts": { + "description": "The list of AWS accounts that a report covers.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "FrameworkArns": { + "description": "The Amazon Resource Names (ARNs) of the frameworks a report covers.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "OrganizationUnits": { + "description": "The list of AWS organization units that a report covers.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Regions": { + "description": "The list of AWS regions that a report covers.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "ReportTemplate": { + "description": "Identifies the report template for the report. Reports are built using a report template. The report templates are: `BACKUP_JOB_REPORT | COPY_JOB_REPORT | RESTORE_JOB_REPORT`", + "type": "string" + } + }, + "required": [ + "ReportTemplate" + ], + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/ReportPlanArn" + ], + "required": [ + "ReportDeliveryChannel", + "ReportSetting" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "backup:TagResource", + "backup:UntagResource", + "backup:ListTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/ReportPlanTags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Backup::ReportPlan" +} diff --git a/src/schema/aws-backup-restoretestingplan.json b/src/schema/aws-backup-restoretestingplan.json index 5097ca43..d7c94298 100644 --- a/src/schema/aws-backup-restoretestingplan.json +++ b/src/schema/aws-backup-restoretestingplan.json @@ -1,188 +1,176 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RestoreTestingPlanName" - ], - "definitions": { - "RestoreTestingRecoveryPointSelection": { - "additionalProperties": false, - "properties": { - "Algorithm": { - "$ref": "#/definitions/RestoreTestingRecoveryPointSelectionAlgorithm" - }, - "ExcludeVaults": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "IncludeVaults": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "RecoveryPointTypes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RestoreTestingRecoveryPointType" - }, - "type": "array" - }, - "SelectionWindowDays": { - "type": "integer" - } - }, - "required": [ - "Algorithm", - "RecoveryPointTypes", - "IncludeVaults" - ], - "type": "object" - }, - "RestoreTestingRecoveryPointSelectionAlgorithm": { - "enum": [ - "LATEST_WITHIN_WINDOW", - "RANDOM_WITHIN_WINDOW" - ], - "type": "string" - }, - "RestoreTestingRecoveryPointType": { - "enum": [ - "SNAPSHOT", - "CONTINUOUS" - ], - "type": "string" - }, - "RestoreTestingScheduleStatus": { - "enum": [ - "ACTIVE", - "SUSPENDED" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::Backup::RestoreTestingPlan Resource Type", - "handlers": { - "create": { - "permissions": [ - "backup:CreateRestoreTestingPlan", - "backup:UpdateRestoreTestingPlanScheduleStatus", - "backup:TagResource", - "backup:GetRestoreTestingPlan", - "backup:ListTags" - ], - "timeoutInMinutes": 5 - }, - "delete": { - "permissions": [ - "backup:DeleteRestoreTestingPlan", - "backup:GetRestoreTestingPlan" - ], - "timeoutInMinutes": 5 - }, - "list": { - "permissions": [ - "backup:ListRestoreTestingPlans" - ], - "timeoutInMinutes": 5 - }, - "read": { - "permissions": [ - "backup:GetRestoreTestingPlan", - "backup:ListTags" - ], - "timeoutInMinutes": 5 - }, - "update": { - "permissions": [ - "backup:UpdateRestoreTestingPlan", - "backup:UpdateRestoreTestingPlanScheduleStatus", - "backup:TagResource", - "backup:UntagResource", - "backup:GetRestoreTestingPlan", - "backup:ListTags" - ], - "timeoutInMinutes": 5 - } - }, - "primaryIdentifier": [ - "/properties/RestoreTestingPlanName" - ], - "properties": { - "RecoveryPointSelection": { - "$ref": "#/definitions/RestoreTestingRecoveryPointSelection" - }, - "RestoreTestingPlanArn": { - "type": "string" - }, - "RestoreTestingPlanName": { - "type": "string" - }, - "ScheduleExpression": { - "type": "string" - }, - "ScheduleExpressionTimezone": { - "type": "string" - }, - "ScheduleStatus": { - "$ref": "#/definitions/RestoreTestingScheduleStatus" - }, - "StartWindowHours": { - "type": "integer" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/RestoreTestingPlanArn" - ], - "required": [ - "RecoveryPointSelection", - "ScheduleExpression", - "RestoreTestingPlanName" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "backup:TagResource", - "backup:UntagResource", - "backup:ListTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Backup::RestoreTestingPlan" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RestoreTestingPlanName" + ], + "definitions": { + "RestoreTestingRecoveryPointSelection": { + "additionalProperties": false, + "properties": { + "Algorithm": { + "$ref": "#/definitions/RestoreTestingRecoveryPointSelectionAlgorithm" + }, + "ExcludeVaults": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "IncludeVaults": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "RecoveryPointTypes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RestoreTestingRecoveryPointType" + }, + "type": "array" + }, + "SelectionWindowDays": { + "type": "integer" + } + }, + "required": [ + "Algorithm", + "RecoveryPointTypes", + "IncludeVaults" + ], + "type": "object" + }, + "RestoreTestingRecoveryPointSelectionAlgorithm": { + "enum": [ + "LATEST_WITHIN_WINDOW", + "RANDOM_WITHIN_WINDOW" + ], + "type": "string" + }, + "RestoreTestingRecoveryPointType": { + "enum": [ + "SNAPSHOT", + "CONTINUOUS" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Backup::RestoreTestingPlan Resource Type", + "handlers": { + "create": { + "permissions": [ + "backup:CreateRestoreTestingPlan", + "backup:TagResource", + "backup:GetRestoreTestingPlan", + "backup:ListTags" + ], + "timeoutInMinutes": 5 + }, + "delete": { + "permissions": [ + "backup:DeleteRestoreTestingPlan", + "backup:GetRestoreTestingPlan" + ], + "timeoutInMinutes": 5 + }, + "list": { + "permissions": [ + "backup:ListRestoreTestingPlans" + ], + "timeoutInMinutes": 5 + }, + "read": { + "permissions": [ + "backup:GetRestoreTestingPlan", + "backup:ListTags" + ], + "timeoutInMinutes": 5 + }, + "update": { + "permissions": [ + "backup:UpdateRestoreTestingPlan", + "backup:TagResource", + "backup:UntagResource", + "backup:GetRestoreTestingPlan", + "backup:ListTags" + ], + "timeoutInMinutes": 5 + } + }, + "primaryIdentifier": [ + "/properties/RestoreTestingPlanName" + ], + "properties": { + "RecoveryPointSelection": { + "$ref": "#/definitions/RestoreTestingRecoveryPointSelection" + }, + "RestoreTestingPlanArn": { + "type": "string" + }, + "RestoreTestingPlanName": { + "type": "string" + }, + "ScheduleExpression": { + "type": "string" + }, + "ScheduleExpressionTimezone": { + "type": "string" + }, + "StartWindowHours": { + "type": "integer" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/RestoreTestingPlanArn" + ], + "required": [ + "RecoveryPointSelection", + "ScheduleExpression", + "RestoreTestingPlanName" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "backup:TagResource", + "backup:UntagResource", + "backup:ListTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Backup::RestoreTestingPlan" +} diff --git a/src/schema/aws-backup-restoretestingselection.json b/src/schema/aws-backup-restoretestingselection.json index a55c0384..717798f7 100644 --- a/src/schema/aws-backup-restoretestingselection.json +++ b/src/schema/aws-backup-restoretestingselection.json @@ -1,142 +1,143 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProtectedResourceType", - "/properties/RestoreTestingPlanName", - "/properties/RestoreTestingSelectionName" - ], - "definitions": { - "KeyValue": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "ProtectedResourceConditions": { - "additionalProperties": false, - "properties": { - "StringEquals": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/KeyValue" - }, - "type": "array" - }, - "StringNotEquals": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/KeyValue" - }, - "type": "array" - } - }, - "type": "object" - }, - "SensitiveStringMap": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Backup::RestoreTestingSelection", - "handlers": { - "create": { - "permissions": [ - "backup:CreateRestoreTestingSelection", - "backup:GetRestoreTestingSelection", - "iam:PassRole" - ], - "timeoutInMinutes": 5 - }, - "delete": { - "permissions": [ - "backup:DeleteRestoreTestingSelection", - "backup:GetRestoreTestingSelection" - ], - "timeoutInMinutes": 5 - }, - "list": { - "permissions": [ - "backup:ListRestoreTestingSelections" - ], - "timeoutInMinutes": 5 - }, - "read": { - "permissions": [ - "backup:GetRestoreTestingSelection" - ], - "timeoutInMinutes": 5 - }, - "update": { - "permissions": [ - "backup:UpdateRestoreTestingSelection", - "backup:GetRestoreTestingSelection", - "iam:PassRole" - ], - "timeoutInMinutes": 5 - } - }, - "primaryIdentifier": [ - "/properties/RestoreTestingPlanName", - "/properties/RestoreTestingSelectionName" - ], - "properties": { - "IamRoleArn": { - "type": "string" - }, - "ProtectedResourceArns": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "ProtectedResourceConditions": { - "$ref": "#/definitions/ProtectedResourceConditions" - }, - "ProtectedResourceType": { - "type": "string" - }, - "RestoreMetadataOverrides": { - "$ref": "#/definitions/SensitiveStringMap" - }, - "RestoreTestingPlanName": { - "type": "string" - }, - "RestoreTestingSelectionName": { - "type": "string" - }, - "ValidationWindowHours": { - "type": "integer" - } - }, - "replacementStrategy": "delete_then_create", - "required": [ - "IamRoleArn", - "ProtectedResourceType", - "RestoreTestingPlanName", - "RestoreTestingSelectionName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Backup::RestoreTestingSelection" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ProtectedResourceType", + "/properties/RestoreTestingPlanName", + "/properties/RestoreTestingSelectionName" + ], + "definitions": { + "KeyValue": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "ProtectedResourceConditions": { + "additionalProperties": false, + "properties": { + "StringEquals": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/KeyValue" + }, + "type": "array" + }, + "StringNotEquals": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/KeyValue" + }, + "type": "array" + } + }, + "type": "object" + }, + "SensitiveStringMap": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Backup::RestoreTestingSelection", + "handlers": { + "create": { + "permissions": [ + "backup:CreateRestoreTestingSelection", + "backup:GetRestoreTestingSelection", + "iam:PassRole" + ], + "timeoutInMinutes": 5 + }, + "delete": { + "permissions": [ + "backup:DeleteRestoreTestingSelection", + "backup:GetRestoreTestingSelection" + ], + "timeoutInMinutes": 5 + }, + "list": { + "permissions": [ + "backup:ListRestoreTestingSelections", + "backup:ListRestoreTestingPlans" + ], + "timeoutInMinutes": 5 + }, + "read": { + "permissions": [ + "backup:GetRestoreTestingSelection" + ], + "timeoutInMinutes": 5 + }, + "update": { + "permissions": [ + "backup:UpdateRestoreTestingSelection", + "backup:GetRestoreTestingSelection", + "iam:PassRole" + ], + "timeoutInMinutes": 5 + } + }, + "primaryIdentifier": [ + "/properties/RestoreTestingPlanName", + "/properties/RestoreTestingSelectionName" + ], + "properties": { + "IamRoleArn": { + "type": "string" + }, + "ProtectedResourceArns": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "ProtectedResourceConditions": { + "$ref": "#/definitions/ProtectedResourceConditions" + }, + "ProtectedResourceType": { + "type": "string" + }, + "RestoreMetadataOverrides": { + "$ref": "#/definitions/SensitiveStringMap" + }, + "RestoreTestingPlanName": { + "type": "string" + }, + "RestoreTestingSelectionName": { + "type": "string" + }, + "ValidationWindowHours": { + "type": "integer" + } + }, + "replacementStrategy": "delete_then_create", + "required": [ + "IamRoleArn", + "ProtectedResourceType", + "RestoreTestingPlanName", + "RestoreTestingSelectionName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Backup::RestoreTestingSelection" +} diff --git a/src/schema/aws-backupgateway-hypervisor.json b/src/schema/aws-backupgateway-hypervisor.json index ed4e3e7a..bce90bc7 100644 --- a/src/schema/aws-backupgateway-hypervisor.json +++ b/src/schema/aws-backupgateway-hypervisor.json @@ -1,162 +1,169 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKeyArn", - "/properties/Tags" - ], - "definitions": { - "HypervisorState": { - "enum": [ - "PENDING", - "ONLINE", - "OFFLINE", - "ERROR" - ], - "type": "string" - }, - "SyncMetadataStatus": { - "enum": [ - "PENDING", - "IN_PROGRESS", - "FAILED", - "SUCCEEDED" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[^\\x00]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::BackupGateway::Hypervisor Resource Type", - "handlers": { - "create": { - "permissions": [ - "backup-gateway:ImportHypervisorConfiguration", - "backup-gateway:GetHypervisor", - "backup-gateway:ListHypervisors", - "backup-gateway:TagResource", - "kms:CreateGrant", - "kms:Encrypt", - "kms:Decrypt" - ] - }, - "delete": { - "permissions": [ - "backup-gateway:DeleteHypervisor", - "backup-gateway:GetHypervisor", - "backup-gateway:ListHypervisors" - ] - }, - "list": { - "permissions": [ - "backup-gateway:ListHypervisors" - ] - }, - "read": { - "permissions": [ - "backup-gateway:GetHypervisor", - "backup-gateway:ListHypervisors" - ] - }, - "update": { - "permissions": [ - "backup-gateway:UpdateHypervisor", - "backup-gateway:GetHypervisor", - "backup-gateway:ListHypervisors", - "backup-gateway:ImportHypervisorConfiguration", - "backup-gateway:DeleteHypervisor" - ] - } - }, - "primaryIdentifier": [ - "/properties/HypervisorArn" - ], - "properties": { - "Host": { - "maxLength": 128, - "minLength": 3, - "pattern": "^.+$", - "type": "string" - }, - "HypervisorArn": { - "maxLength": 500, - "minLength": 50, - "pattern": "^arn:(aws|aws-cn|aws-us-gov):backup-gateway(:[a-zA-Z-0-9]+){3}\\/[a-zA-Z-0-9]+$", - "type": "string" - }, - "KmsKeyArn": { - "maxLength": 500, - "minLength": 50, - "pattern": "^(^arn:(aws|aws-cn|aws-us-gov):kms:([a-zA-Z0-9-]+):([0-9]+):(key|alias)/(\\S+)$)|(^alias/(\\S+)$)$", - "type": "string" - }, - "LogGroupArn": { - "maxLength": 2048, - "minLength": 0, - "pattern": "^$|^arn:(aws|aws-cn|aws-us-gov):logs:([a-zA-Z0-9-]+):([0-9]+):log-group:[a-zA-Z0-9_\\-\\/\\.]+:\\*$", - "type": "string" - }, - "Name": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "Password": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[ -~]+$", - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "Username": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[ -\\.0-\\[\\]-~]*[!-\\.0-\\[\\]-~][ -\\.0-\\[\\]-~]*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/HypervisorArn" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::BackupGateway::Hypervisor", - "writeOnlyProperties": [ - "/properties/KmsKeyArn", - "/properties/LogGroupArn", - "/properties/Name", - "/properties/Password", - "/properties/Tags", - "/properties/Username" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KmsKeyArn", + "/properties/Tags" + ], + "definitions": { + "HypervisorState": { + "enum": [ + "PENDING", + "ONLINE", + "OFFLINE", + "ERROR" + ], + "type": "string" + }, + "SyncMetadataStatus": { + "enum": [ + "PENDING", + "IN_PROGRESS", + "FAILED", + "SUCCEEDED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[^\\x00]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::BackupGateway::Hypervisor Resource Type", + "handlers": { + "create": { + "permissions": [ + "backup-gateway:ListTagsForResource", + "backup-gateway:ImportHypervisorConfiguration", + "backup-gateway:GetHypervisor", + "backup-gateway:ListHypervisors", + "backup-gateway:TagResource", + "kms:CreateGrant", + "kms:Encrypt", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "backup-gateway:DeleteHypervisor", + "backup-gateway:GetHypervisor", + "backup-gateway:ListHypervisors" + ] + }, + "list": { + "permissions": [ + "backup-gateway:ListHypervisors" + ] + }, + "read": { + "permissions": [ + "backup-gateway:GetHypervisor", + "backup-gateway:ListHypervisors", + "backup-gateway:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "backup-gateway:UpdateHypervisor", + "backup-gateway:GetHypervisor", + "backup-gateway:ListHypervisors", + "backup-gateway:ImportHypervisorConfiguration", + "backup-gateway:DeleteHypervisor", + "backup-gateway:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/HypervisorArn" + ], + "properties": { + "Host": { + "maxLength": 128, + "minLength": 3, + "pattern": "^.+$", + "type": "string" + }, + "HypervisorArn": { + "maxLength": 500, + "minLength": 50, + "pattern": "^arn:(aws|aws-cn|aws-us-gov):backup-gateway(:[a-zA-Z-0-9]+){3}\\/[a-zA-Z-0-9]+$", + "type": "string" + }, + "KmsKeyArn": { + "maxLength": 500, + "minLength": 50, + "pattern": "^(^arn:(aws|aws-cn|aws-us-gov):kms:([a-zA-Z0-9-]+):([0-9]+):(key|alias)/(\\S+)$)|(^alias/(\\S+)$)$", + "type": "string" + }, + "LogGroupArn": { + "maxLength": 2048, + "minLength": 0, + "pattern": "^$|^arn:(aws|aws-cn|aws-us-gov):logs:([a-zA-Z0-9-]+):([0-9]+):log-group:[a-zA-Z0-9_\\-\\/\\.]+:\\*$", + "type": "string" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "Password": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[ -~]+$", + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Username": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[ -\\.0-\\[\\]-~]*[!-\\.0-\\[\\]-~][ -\\.0-\\[\\]-~]*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/HypervisorArn" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "backup-gateway:UntagResource", + "backup-gateway:TagResource", + "backup-gateway:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::BackupGateway::Hypervisor", + "writeOnlyProperties": [ + "/properties/KmsKeyArn", + "/properties/LogGroupArn", + "/properties/Name", + "/properties/Password", + "/properties/Username" + ] +} diff --git a/src/schema/aws-batch-computeenvironment.json b/src/schema/aws-batch-computeenvironment.json index c757e663..e71b1705 100644 --- a/src/schema/aws-batch-computeenvironment.json +++ b/src/schema/aws-batch-computeenvironment.json @@ -1,335 +1,335 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ComputeEnvironmentName" - ] - ], - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/ComputeResources/AllocationStrategy", - "/properties/ComputeResources/BidPercentage", - "/properties/ComputeResources/Ec2Configuration", - "/properties/ComputeResources/Ec2KeyPair", - "/properties/ComputeResources/ImageId", - "/properties/ComputeResources/InstanceRole", - "/properties/ComputeResources/InstanceTypes", - "/properties/ComputeResources/LaunchTemplate", - "/properties/ComputeResources/PlacementGroup", - "/properties/ComputeResources/SecurityGroupIds", - "/properties/ComputeResources/Subnets", - "/properties/ComputeResources/Tags", - "/properties/ComputeResources/Type" - ], - "createOnlyProperties": [ - "/properties/ComputeResources/SpotIamFleetRole", - "/properties/ComputeEnvironmentName", - "/properties/Tags", - "/properties/Type", - "/properties/EksConfiguration" - ], - "definitions": { - "ComputeResources": { - "additionalProperties": false, - "properties": { - "AllocationStrategy": { - "type": "string" - }, - "BidPercentage": { - "type": "integer" - }, - "DesiredvCpus": { - "type": "integer" - }, - "Ec2Configuration": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Ec2ConfigurationObject" - }, - "type": "array", - "uniqueItems": false - }, - "Ec2KeyPair": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceRole": { - "type": "string" - }, - "InstanceTypes": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "MaxvCpus": { - "type": "integer" - }, - "MinvCpus": { - "type": "integer" - }, - "PlacementGroup": { - "type": "string" - }, - "SecurityGroupIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SpotIamFleetRole": { - "type": "string" - }, - "Subnets": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "patternProperties": { - ".*": { - "type": "string" - } - }, - "type": "object" - }, - "Type": { - "type": "string" - }, - "UpdateToLatestImageVersion": { - "default": false, - "type": "boolean" - } - }, - "required": [ - "Subnets", - "Type", - "MaxvCpus" - ], - "type": "object" - }, - "Ec2ConfigurationObject": { - "additionalProperties": false, - "properties": { - "ImageIdOverride": { - "type": "string" - }, - "ImageKubernetesVersion": { - "type": "string" - }, - "ImageType": { - "type": "string" - } - }, - "required": [ - "ImageType" - ], - "type": "object" - }, - "EksConfiguration": { - "additionalProperties": false, - "properties": { - "EksClusterArn": { - "default": false, - "type": "string" - }, - "KubernetesNamespace": { - "default": false, - "type": "string" - } - }, - "required": [ - "EksClusterArn", - "KubernetesNamespace" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Overrides": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LaunchTemplateSpecificationOverride" - }, - "type": "array", - "uniqueItems": false - }, - "Version": { - "type": "string" - } - }, - "type": "object" - }, - "LaunchTemplateSpecificationOverride": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "TargetInstanceTypes": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Version": { - "type": "string" - } - }, - "type": "object" - }, - "UpdatePolicy": { - "additionalProperties": false, - "properties": { - "JobExecutionTimeoutMinutes": { - "default": 30, - "type": "integer" - }, - "TerminateJobsOnUpdate": { - "default": false, - "type": "boolean" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Batch::ComputeEnvironment", - "handlers": { - "create": { - "permissions": [ - "Batch:CreateComputeEnvironment", - "Batch:TagResource", - "Batch:DescribeComputeEnvironments", - "iam:CreateServiceLinkedRole", - "Iam:PassRole", - "Eks:DescribeCluster" - ] - }, - "delete": { - "permissions": [ - "Batch:DeleteComputeEnvironment", - "Batch:DescribeComputeEnvironments", - "Batch:UpdateComputeEnvironment", - "Iam:PassRole", - "Eks:DescribeCluster" - ] - }, - "list": { - "permissions": [ - "Batch:DescribeComputeEnvironments" - ] - }, - "read": { - "permissions": [ - "Batch:DescribeComputeEnvironments" - ] - }, - "update": { - "permissions": [ - "Batch:UpdateComputeEnvironment", - "Batch:DescribeComputeEnvironments", - "Batch:TagResource", - "Batch:UnTagResource", - "Iam:PassRole", - "Eks:DescribeCluster" - ] - } - }, - "primaryIdentifier": [ - "/properties/ComputeEnvironmentArn" - ], - "properties": { - "ComputeEnvironmentArn": { - "type": "string" - }, - "ComputeEnvironmentName": { - "type": "string" - }, - "ComputeResources": { - "$ref": "#/definitions/ComputeResources" - }, - "Context": { - "type": "string" - }, - "EksConfiguration": { - "$ref": "#/definitions/EksConfiguration" - }, - "ReplaceComputeEnvironment": { - "default": true, - "type": "boolean" - }, - "ServiceRole": { - "type": "string" - }, - "State": { - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "patternProperties": { - ".*": { - "type": "string" - } - }, - "type": "object" - }, - "Type": { - "type": "string" - }, - "UnmanagedvCpus": { - "type": "integer" - }, - "UpdatePolicy": { - "$ref": "#/definitions/UpdatePolicy" - } - }, - "readOnlyProperties": [ - "/properties/ComputeEnvironmentArn" - ], - "required": [ - "Type" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "Batch:TagResource", - "Batch:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::Batch::ComputeEnvironment", - "writeOnlyProperties": [ - "/properties/ComputeResources/UpdateToLatestImageVersion", - "/properties/ReplaceComputeEnvironment", - "/properties/UpdatePolicy" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/ComputeEnvironmentName" + ] + ], + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/ComputeResources/AllocationStrategy", + "/properties/ComputeResources/BidPercentage", + "/properties/ComputeResources/Ec2Configuration", + "/properties/ComputeResources/Ec2KeyPair", + "/properties/ComputeResources/ImageId", + "/properties/ComputeResources/InstanceRole", + "/properties/ComputeResources/InstanceTypes", + "/properties/ComputeResources/LaunchTemplate", + "/properties/ComputeResources/PlacementGroup", + "/properties/ComputeResources/SecurityGroupIds", + "/properties/ComputeResources/Subnets", + "/properties/ComputeResources/Tags", + "/properties/ComputeResources/Type" + ], + "createOnlyProperties": [ + "/properties/ComputeResources/SpotIamFleetRole", + "/properties/ComputeEnvironmentName", + "/properties/Tags", + "/properties/Type", + "/properties/EksConfiguration" + ], + "definitions": { + "ComputeResources": { + "additionalProperties": false, + "properties": { + "AllocationStrategy": { + "type": "string" + }, + "BidPercentage": { + "type": "integer" + }, + "DesiredvCpus": { + "type": "integer" + }, + "Ec2Configuration": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Ec2ConfigurationObject" + }, + "type": "array", + "uniqueItems": false + }, + "Ec2KeyPair": { + "type": "string" + }, + "ImageId": { + "type": "string" + }, + "InstanceRole": { + "type": "string" + }, + "InstanceTypes": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "LaunchTemplate": { + "$ref": "#/definitions/LaunchTemplateSpecification" + }, + "MaxvCpus": { + "type": "integer" + }, + "MinvCpus": { + "type": "integer" + }, + "PlacementGroup": { + "type": "string" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SpotIamFleetRole": { + "type": "string" + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + }, + "Type": { + "type": "string" + }, + "UpdateToLatestImageVersion": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "Subnets", + "Type", + "MaxvCpus" + ], + "type": "object" + }, + "Ec2ConfigurationObject": { + "additionalProperties": false, + "properties": { + "ImageIdOverride": { + "type": "string" + }, + "ImageKubernetesVersion": { + "type": "string" + }, + "ImageType": { + "type": "string" + } + }, + "required": [ + "ImageType" + ], + "type": "object" + }, + "EksConfiguration": { + "additionalProperties": false, + "properties": { + "EksClusterArn": { + "default": false, + "type": "string" + }, + "KubernetesNamespace": { + "default": false, + "type": "string" + } + }, + "required": [ + "EksClusterArn", + "KubernetesNamespace" + ], + "type": "object" + }, + "LaunchTemplateSpecification": { + "additionalProperties": false, + "properties": { + "LaunchTemplateId": { + "type": "string" + }, + "LaunchTemplateName": { + "type": "string" + }, + "Overrides": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LaunchTemplateSpecificationOverride" + }, + "type": "array", + "uniqueItems": false + }, + "Version": { + "type": "string" + } + }, + "type": "object" + }, + "LaunchTemplateSpecificationOverride": { + "additionalProperties": false, + "properties": { + "LaunchTemplateId": { + "type": "string" + }, + "LaunchTemplateName": { + "type": "string" + }, + "TargetInstanceTypes": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Version": { + "type": "string" + } + }, + "type": "object" + }, + "UpdatePolicy": { + "additionalProperties": false, + "properties": { + "JobExecutionTimeoutMinutes": { + "default": 30, + "type": "integer" + }, + "TerminateJobsOnUpdate": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Batch::ComputeEnvironment", + "handlers": { + "create": { + "permissions": [ + "Batch:CreateComputeEnvironment", + "Batch:TagResource", + "Batch:DescribeComputeEnvironments", + "iam:CreateServiceLinkedRole", + "Iam:PassRole", + "Eks:DescribeCluster" + ] + }, + "delete": { + "permissions": [ + "Batch:DeleteComputeEnvironment", + "Batch:DescribeComputeEnvironments", + "Batch:UpdateComputeEnvironment", + "Iam:PassRole", + "Eks:DescribeCluster" + ] + }, + "list": { + "permissions": [ + "Batch:DescribeComputeEnvironments" + ] + }, + "read": { + "permissions": [ + "Batch:DescribeComputeEnvironments" + ] + }, + "update": { + "permissions": [ + "Batch:UpdateComputeEnvironment", + "Batch:DescribeComputeEnvironments", + "Batch:TagResource", + "Batch:UnTagResource", + "Iam:PassRole", + "Eks:DescribeCluster" + ] + } + }, + "primaryIdentifier": [ + "/properties/ComputeEnvironmentArn" + ], + "properties": { + "ComputeEnvironmentArn": { + "type": "string" + }, + "ComputeEnvironmentName": { + "type": "string" + }, + "ComputeResources": { + "$ref": "#/definitions/ComputeResources" + }, + "Context": { + "type": "string" + }, + "EksConfiguration": { + "$ref": "#/definitions/EksConfiguration" + }, + "ReplaceComputeEnvironment": { + "default": true, + "type": "boolean" + }, + "ServiceRole": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + }, + "Type": { + "type": "string" + }, + "UnmanagedvCpus": { + "type": "integer" + }, + "UpdatePolicy": { + "$ref": "#/definitions/UpdatePolicy" + } + }, + "readOnlyProperties": [ + "/properties/ComputeEnvironmentArn" + ], + "required": [ + "Type" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "Batch:TagResource", + "Batch:UnTagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Batch::ComputeEnvironment", + "writeOnlyProperties": [ + "/properties/ComputeResources/UpdateToLatestImageVersion", + "/properties/ReplaceComputeEnvironment", + "/properties/UpdatePolicy" + ] +} diff --git a/src/schema/aws-batch-consumableresource.json b/src/schema/aws-batch-consumableresource.json new file mode 100644 index 00000000..209887c1 --- /dev/null +++ b/src/schema/aws-batch-consumableresource.json @@ -0,0 +1,122 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConsumableResourceName", + "/properties/ResourceType", + "/properties/Tags" + ], + "definitions": { + "ResourceArn": { + "description": "ARN of the Consumable Resource.", + "type": "string" + }, + "ResourceType": { + "description": "Type of Consumable Resource.", + "enum": [ + "REPLENISHABLE", + "NON_REPLENISHABLE" + ], + "type": "string" + } + }, + "description": "Resource Type definition for AWS::Batch::ConsumableResource", + "handlers": { + "create": { + "permissions": [ + "Batch:CreateConsumableResource", + "Batch:TagResource" + ] + }, + "delete": { + "permissions": [ + "Batch:DescribeConsumableResource", + "Batch:DeleteConsumableResource" + ] + }, + "list": { + "permissions": [ + "Batch:ListConsumableResources" + ] + }, + "read": { + "permissions": [ + "Batch:DescribeConsumableResource" + ] + }, + "update": { + "permissions": [ + "Batch:UpdateConsumableResource", + "Batch:TagResource", + "Batch:UnTagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConsumableResourceArn" + ], + "properties": { + "AvailableQuantity": { + "description": "Available Quantity of ConsumableResource.", + "format": "int64", + "type": "integer" + }, + "ConsumableResourceArn": { + "$ref": "#/definitions/ResourceArn" + }, + "ConsumableResourceName": { + "description": "Name of ConsumableResource.", + "pattern": "", + "type": "string" + }, + "CreatedAt": { + "format": "int64", + "type": "integer" + }, + "InUseQuantity": { + "description": "In-use Quantity of ConsumableResource.", + "format": "int64", + "type": "integer" + }, + "ResourceType": { + "$ref": "#/definitions/ResourceType" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + }, + "TotalQuantity": { + "description": "Total Quantity of ConsumableResource.", + "format": "int64", + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/ConsumableResourceArn", + "/properties/CreatedAt", + "/properties/InUseQuantity", + "/properties/AvailableQuantity" + ], + "required": [ + "ResourceType", + "TotalQuantity" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-batch.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "Batch:TagResource", + "Batch:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Batch::ConsumableResource" +} diff --git a/src/schema/aws-batch-jobdefinition.json b/src/schema/aws-batch-jobdefinition.json index 962e6f9a..98b18231 100644 --- a/src/schema/aws-batch-jobdefinition.json +++ b/src/schema/aws-batch-jobdefinition.json @@ -1,972 +1,1349 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Tags", - "/properties/JobDefinitionName" - ], - "definitions": { - "AuthorizationConfig": { - "additionalProperties": false, - "properties": { - "AccessPointId": { - "type": "string" - }, - "Iam": { - "type": "string" - } - }, - "type": "object" - }, - "ContainerProperties": { - "additionalProperties": false, - "properties": { - "Command": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Environment": { - "items": { - "$ref": "#/definitions/Environment" - }, - "type": "array", - "uniqueItems": false - }, - "EphemeralStorage": { - "$ref": "#/definitions/EphemeralStorage" - }, - "ExecutionRoleArn": { - "type": "string" - }, - "FargatePlatformConfiguration": { - "$ref": "#/definitions/FargatePlatformConfiguration" - }, - "Image": { - "type": "string" - }, - "InstanceType": { - "type": "string" - }, - "JobRoleArn": { - "type": "string" - }, - "LinuxParameters": { - "$ref": "#/definitions/LinuxParameters" - }, - "LogConfiguration": { - "$ref": "#/definitions/LogConfiguration" - }, - "Memory": { - "type": "integer" - }, - "MountPoints": { - "items": { - "$ref": "#/definitions/MountPoints" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkConfiguration": { - "$ref": "#/definitions/NetworkConfiguration" - }, - "Privileged": { - "type": "boolean" - }, - "ReadonlyRootFilesystem": { - "type": "boolean" - }, - "RepositoryCredentials": { - "$ref": "#/definitions/RepositoryCredentials" - }, - "ResourceRequirements": { - "items": { - "$ref": "#/definitions/ResourceRequirement" - }, - "type": "array", - "uniqueItems": false - }, - "RuntimePlatform": { - "$ref": "#/definitions/RuntimePlatform" - }, - "Secrets": { - "items": { - "$ref": "#/definitions/Secret" - }, - "type": "array", - "uniqueItems": false - }, - "Ulimits": { - "items": { - "$ref": "#/definitions/Ulimit" - }, - "type": "array", - "uniqueItems": false - }, - "User": { - "type": "string" - }, - "Vcpus": { - "type": "integer" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volumes" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Image" - ], - "type": "object" - }, - "Device": { - "additionalProperties": false, - "properties": { - "ContainerPath": { - "type": "string" - }, - "HostPath": { - "type": "string" - }, - "Permissions": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "EcsProperties": { - "additionalProperties": false, - "properties": { - "TaskProperties": { - "items": { - "$ref": "#/definitions/EcsTaskProperties" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "TaskProperties" - ], - "type": "object" - }, - "EcsTaskProperties": { - "additionalProperties": false, - "properties": { - "Containers": { - "items": { - "$ref": "#/definitions/TaskContainerProperties" - }, - "type": "array", - "uniqueItems": false - }, - "EphemeralStorage": { - "$ref": "#/definitions/EphemeralStorage" - }, - "ExecutionRoleArn": { - "type": "string" - }, - "IpcMode": { - "type": "string" - }, - "NetworkConfiguration": { - "$ref": "#/definitions/NetworkConfiguration" - }, - "PidMode": { - "type": "string" - }, - "PlatformVersion": { - "type": "string" - }, - "RuntimePlatform": { - "$ref": "#/definitions/RuntimePlatform" - }, - "TaskRoleArn": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volumes" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "EfsVolumeConfiguration": { - "additionalProperties": false, - "properties": { - "AuthorizationConfig": { - "$ref": "#/definitions/AuthorizationConfig" - }, - "FileSystemId": { - "type": "string" - }, - "RootDirectory": { - "type": "string" - }, - "TransitEncryption": { - "type": "string" - }, - "TransitEncryptionPort": { - "type": "integer" - } - }, - "required": [ - "FileSystemId" - ], - "type": "object" - }, - "EksContainer": { - "additionalProperties": false, - "properties": { - "Args": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Command": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Env": { - "items": { - "$ref": "#/definitions/EksContainerEnvironmentVariable" - }, - "type": "array", - "uniqueItems": false - }, - "Image": { - "type": "string" - }, - "ImagePullPolicy": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Resources": { - "$ref": "#/definitions/EksContainerResourceRequirements" - }, - "SecurityContext": { - "$ref": "#/definitions/EksContainerSecurityContext" - }, - "VolumeMounts": { - "items": { - "$ref": "#/definitions/EksContainerVolumeMount" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Image" - ], - "type": "object" - }, - "EksContainerEnvironmentVariable": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "EksContainerResourceRequirements": { - "additionalProperties": false, - "properties": { - "Limits": { - "type": "object" - }, - "Requests": { - "type": "object" - } - }, - "type": "object" - }, - "EksContainerSecurityContext": { - "additionalProperties": false, - "properties": { - "AllowPrivilegeEscalation": { - "type": "boolean" - }, - "Privileged": { - "type": "boolean" - }, - "ReadOnlyRootFilesystem": { - "type": "boolean" - }, - "RunAsGroup": { - "type": "integer" - }, - "RunAsNonRoot": { - "type": "boolean" - }, - "RunAsUser": { - "type": "integer" - } - }, - "type": "object" - }, - "EksContainerVolumeMount": { - "additionalProperties": false, - "properties": { - "MountPath": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "ReadOnly": { - "type": "boolean" - } - }, - "type": "object" - }, - "EksEmptyDir": { - "additionalProperties": false, - "properties": { - "Medium": { - "type": "string" - }, - "SizeLimit": { - "type": "string" - } - }, - "type": "object" - }, - "EksHostPath": { - "additionalProperties": false, - "properties": { - "Path": { - "type": "string" - } - }, - "type": "object" - }, - "EksProperties": { - "additionalProperties": false, - "properties": { - "PodProperties": { - "$ref": "#/definitions/PodProperties" - } - }, - "type": "object" - }, - "EksSecret": { - "additionalProperties": false, - "properties": { - "Optional": { - "type": "boolean" - }, - "SecretName": { - "type": "string" - } - }, - "required": [ - "SecretName" - ], - "type": "object" - }, - "EksVolume": { - "additionalProperties": false, - "properties": { - "EmptyDir": { - "$ref": "#/definitions/EksEmptyDir" - }, - "HostPath": { - "$ref": "#/definitions/EksHostPath" - }, - "Name": { - "type": "string" - }, - "Secret": { - "$ref": "#/definitions/EksSecret" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "Environment": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "EphemeralStorage": { - "additionalProperties": false, - "properties": { - "SizeInGiB": { - "type": "integer" - } - }, - "required": [ - "SizeInGiB" - ], - "type": "object" - }, - "EvaluateOnExit": { - "additionalProperties": false, - "properties": { - "Action": { - "type": "string" - }, - "OnExitCode": { - "type": "string" - }, - "OnReason": { - "type": "string" - }, - "OnStatusReason": { - "type": "string" - } - }, - "required": [ - "Action" - ], - "type": "object" - }, - "FargatePlatformConfiguration": { - "additionalProperties": false, - "properties": { - "PlatformVersion": { - "type": "string" - } - }, - "type": "object" - }, - "ImagePullSecret": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "LinuxParameters": { - "additionalProperties": false, - "properties": { - "Devices": { - "items": { - "$ref": "#/definitions/Device" - }, - "type": "array", - "uniqueItems": false - }, - "InitProcessEnabled": { - "type": "boolean" - }, - "MaxSwap": { - "type": "integer" - }, - "SharedMemorySize": { - "type": "integer" - }, - "Swappiness": { - "type": "integer" - }, - "Tmpfs": { - "items": { - "$ref": "#/definitions/Tmpfs" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "LogConfiguration": { - "additionalProperties": false, - "properties": { - "LogDriver": { - "type": "string" - }, - "Options": { - "type": "object" - }, - "SecretOptions": { - "items": { - "$ref": "#/definitions/Secret" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "LogDriver" - ], - "type": "object" - }, - "Metadata": { - "additionalProperties": false, - "properties": { - "Labels": { - "type": "object" - } - }, - "type": "object" - }, - "MountPoints": { - "additionalProperties": false, - "properties": { - "ContainerPath": { - "type": "string" - }, - "ReadOnly": { - "type": "boolean" - }, - "SourceVolume": { - "type": "string" - } - }, - "type": "object" - }, - "NetworkConfiguration": { - "additionalProperties": false, - "properties": { - "AssignPublicIp": { - "type": "string" - } - }, - "type": "object" - }, - "NodeProperties": { - "additionalProperties": false, - "properties": { - "MainNode": { - "type": "integer" - }, - "NodeRangeProperties": { - "items": { - "$ref": "#/definitions/NodeRangeProperty" - }, - "type": "array", - "uniqueItems": false - }, - "NumNodes": { - "type": "integer" - } - }, - "required": [ - "MainNode", - "NodeRangeProperties", - "NumNodes" - ], - "type": "object" - }, - "NodeRangeProperty": { - "additionalProperties": false, - "properties": { - "Container": { - "$ref": "#/definitions/ContainerProperties" - }, - "EcsProperties": { - "$ref": "#/definitions/EcsProperties" - }, - "EksProperties": { - "$ref": "#/definitions/EksProperties" - }, - "InstanceTypes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "TargetNodes": { - "type": "string" - } - }, - "required": [ - "TargetNodes" - ], - "type": "object" - }, - "PodProperties": { - "additionalProperties": false, - "properties": { - "Containers": { - "items": { - "$ref": "#/definitions/EksContainer" - }, - "type": "array", - "uniqueItems": false - }, - "DnsPolicy": { - "type": "string" - }, - "HostNetwork": { - "type": "boolean" - }, - "ImagePullSecrets": { - "items": { - "$ref": "#/definitions/ImagePullSecret" - }, - "type": "array", - "uniqueItems": false - }, - "InitContainers": { - "items": { - "$ref": "#/definitions/EksContainer" - }, - "type": "array", - "uniqueItems": false - }, - "Metadata": { - "$ref": "#/definitions/Metadata" - }, - "ServiceAccountName": { - "type": "string" - }, - "ShareProcessNamespace": { - "type": "boolean" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/EksVolume" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "RepositoryCredentials": { - "additionalProperties": false, - "properties": { - "CredentialsParameter": { - "type": "string" - } - }, - "required": [ - "CredentialsParameter" - ], - "type": "object" - }, - "ResourceRequirement": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "RetryStrategy": { - "additionalProperties": false, - "properties": { - "Attempts": { - "type": "integer" - }, - "EvaluateOnExit": { - "items": { - "$ref": "#/definitions/EvaluateOnExit" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "RuntimePlatform": { - "additionalProperties": false, - "properties": { - "CpuArchitecture": { - "type": "string" - }, - "OperatingSystemFamily": { - "type": "string" - } - }, - "type": "object" - }, - "Secret": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "ValueFrom": { - "type": "string" - } - }, - "required": [ - "ValueFrom", - "Name" - ], - "type": "object" - }, - "TaskContainerDependency": { - "additionalProperties": false, - "properties": { - "Condition": { - "type": "string" - }, - "ContainerName": { - "type": "string" - } - }, - "required": [ - "Condition", - "ContainerName" - ], - "type": "object" - }, - "TaskContainerProperties": { - "additionalProperties": false, - "properties": { - "Command": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "DependsOn": { - "items": { - "$ref": "#/definitions/TaskContainerDependency" - }, - "type": "array", - "uniqueItems": false - }, - "Environment": { - "items": { - "$ref": "#/definitions/Environment" - }, - "type": "array", - "uniqueItems": false - }, - "Essential": { - "type": "boolean" - }, - "Image": { - "type": "string" - }, - "LinuxParameters": { - "$ref": "#/definitions/LinuxParameters" - }, - "LogConfiguration": { - "$ref": "#/definitions/LogConfiguration" - }, - "MountPoints": { - "items": { - "$ref": "#/definitions/MountPoints" - }, - "type": "array", - "uniqueItems": false - }, - "Name": { - "type": "string" - }, - "Privileged": { - "type": "boolean" - }, - "ReadonlyRootFilesystem": { - "type": "boolean" - }, - "RepositoryCredentials": { - "$ref": "#/definitions/RepositoryCredentials" - }, - "ResourceRequirements": { - "items": { - "$ref": "#/definitions/ResourceRequirement" - }, - "type": "array", - "uniqueItems": false - }, - "Secrets": { - "items": { - "$ref": "#/definitions/Secret" - }, - "type": "array", - "uniqueItems": false - }, - "Ulimits": { - "items": { - "$ref": "#/definitions/Ulimit" - }, - "type": "array", - "uniqueItems": false - }, - "User": { - "type": "string" - } - }, - "required": [ - "Image" - ], - "type": "object" - }, - "Timeout": { - "additionalProperties": false, - "properties": { - "AttemptDurationSeconds": { - "type": "integer" - } - }, - "type": "object" - }, - "Tmpfs": { - "additionalProperties": false, - "properties": { - "ContainerPath": { - "type": "string" - }, - "MountOptions": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Size": { - "type": "integer" - } - }, - "required": [ - "Size", - "ContainerPath" - ], - "type": "object" - }, - "Ulimit": { - "additionalProperties": false, - "properties": { - "HardLimit": { - "type": "integer" - }, - "Name": { - "type": "string" - }, - "SoftLimit": { - "type": "integer" - } - }, - "required": [ - "SoftLimit", - "HardLimit", - "Name" - ], - "type": "object" - }, - "Volumes": { - "additionalProperties": false, - "properties": { - "EfsVolumeConfiguration": { - "$ref": "#/definitions/EfsVolumeConfiguration" - }, - "Host": { - "$ref": "#/definitions/VolumesHost" - }, - "Name": { - "type": "string" - } - }, - "type": "object" - }, - "VolumesHost": { - "additionalProperties": false, - "properties": { - "SourcePath": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Batch::JobDefinition", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ContainerProperties": { - "$ref": "#/definitions/ContainerProperties" - }, - "EcsProperties": { - "$ref": "#/definitions/EcsProperties" - }, - "EksProperties": { - "$ref": "#/definitions/EksProperties" - }, - "Id": { - "type": "string" - }, - "JobDefinitionName": { - "type": "string" - }, - "NodeProperties": { - "$ref": "#/definitions/NodeProperties" - }, - "Parameters": { - "type": "object" - }, - "PlatformCapabilities": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "PropagateTags": { - "type": "boolean" - }, - "RetryStrategy": { - "$ref": "#/definitions/RetryStrategy" - }, - "SchedulingPriority": { - "type": "integer" - }, - "Tags": { - "type": "object" - }, - "Timeout": { - "$ref": "#/definitions/Timeout" - }, - "Type": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Type" - ], - "typeName": "AWS::Batch::JobDefinition" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/JobDefinitionName" + ], + "definitions": { + "ConsumableResourceProperties": { + "additionalProperties": false, + "properties": { + "ConsumableResourceList": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ConsumableResourceRequirement" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "ConsumableResourceList" + ], + "type": "object" + }, + "ConsumableResourceRequirement": { + "additionalProperties": false, + "properties": { + "ConsumableResource": { + "description": "The ARN of the consumable resource the job definition should consume.", + "pattern": "arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}", + "type": "string" + }, + "Quantity": { + "format": "int64", + "type": "integer" + } + }, + "required": [ + "ConsumableResource", + "Quantity" + ], + "type": "object" + }, + "ContainerProperties": { + "additionalProperties": false, + "properties": { + "Command": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "EnableExecuteCommand": { + "type": "boolean" + }, + "Environment": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Environment" + }, + "type": "array", + "uniqueItems": false + }, + "EphemeralStorage": { + "$ref": "#/definitions/EphemeralStorage" + }, + "ExecutionRoleArn": { + "type": "string" + }, + "FargatePlatformConfiguration": { + "additionalProperties": false, + "properties": { + "PlatformVersion": { + "type": "string" + } + }, + "type": "object" + }, + "Image": { + "type": "string" + }, + "JobRoleArn": { + "type": "string" + }, + "LinuxParameters": { + "$ref": "#/definitions/LinuxParameters" + }, + "LogConfiguration": { + "$ref": "#/definitions/LogConfiguration" + }, + "Memory": { + "type": "integer" + }, + "MountPoints": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MountPoint" + }, + "type": "array", + "uniqueItems": false + }, + "NetworkConfiguration": { + "$ref": "#/definitions/NetworkConfiguration" + }, + "Privileged": { + "type": "boolean" + }, + "ReadonlyRootFilesystem": { + "type": "boolean" + }, + "RepositoryCredentials": { + "$ref": "#/definitions/RepositoryCredentials" + }, + "ResourceRequirements": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourceRequirement" + }, + "type": "array", + "uniqueItems": false + }, + "RuntimePlatform": { + "$ref": "#/definitions/RuntimePlatform" + }, + "Secrets": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Secret" + }, + "type": "array", + "uniqueItems": false + }, + "Ulimits": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Ulimit" + }, + "type": "array", + "uniqueItems": false + }, + "User": { + "type": "string" + }, + "Vcpus": { + "type": "integer" + }, + "Volumes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Volume" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Image" + ], + "type": "object" + }, + "Device": { + "additionalProperties": false, + "properties": { + "ContainerPath": { + "type": "string" + }, + "HostPath": { + "type": "string" + }, + "Permissions": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EFSAuthorizationConfig": { + "additionalProperties": false, + "properties": { + "AccessPointId": { + "type": "string" + }, + "Iam": { + "type": "string" + } + }, + "type": "object" + }, + "EFSVolumeConfiguration": { + "additionalProperties": false, + "properties": { + "AuthorizationConfig": { + "$ref": "#/definitions/EFSAuthorizationConfig" + }, + "FileSystemId": { + "type": "string" + }, + "RootDirectory": { + "type": "string" + }, + "TransitEncryption": { + "type": "string" + }, + "TransitEncryptionPort": { + "type": "integer" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "EcsProperties": { + "additionalProperties": false, + "properties": { + "TaskProperties": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EcsTaskProperties" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "TaskProperties" + ], + "type": "object" + }, + "EcsTaskProperties": { + "additionalProperties": false, + "properties": { + "Containers": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TaskContainerProperties" + }, + "type": "array", + "uniqueItems": false + }, + "EnableExecuteCommand": { + "type": "boolean" + }, + "EphemeralStorage": { + "$ref": "#/definitions/EphemeralStorage" + }, + "ExecutionRoleArn": { + "type": "string" + }, + "IpcMode": { + "type": "string" + }, + "NetworkConfiguration": { + "$ref": "#/definitions/NetworkConfiguration" + }, + "PidMode": { + "type": "string" + }, + "PlatformVersion": { + "type": "string" + }, + "RuntimePlatform": { + "$ref": "#/definitions/RuntimePlatform" + }, + "TaskRoleArn": { + "type": "string" + }, + "Volumes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Volume" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EksContainer": { + "additionalProperties": false, + "properties": { + "Args": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Command": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Env": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EksContainerEnvironmentVariable" + }, + "type": "array", + "uniqueItems": false + }, + "Image": { + "type": "string" + }, + "ImagePullPolicy": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Resources": { + "$ref": "#/definitions/EksContainerResourceRequirements" + }, + "SecurityContext": { + "$ref": "#/definitions/EksContainerSecurityContext" + }, + "VolumeMounts": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EksContainerVolumeMount" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Image" + ], + "type": "object" + }, + "EksContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "EksContainerResourceRequirements": { + "additionalProperties": false, + "properties": { + "Limits": { + "additionalProperties": false, + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + }, + "Requests": { + "additionalProperties": false, + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "EksContainerSecurityContext": { + "additionalProperties": false, + "properties": { + "AllowPrivilegeEscalation": { + "type": "boolean" + }, + "Privileged": { + "type": "boolean" + }, + "ReadOnlyRootFilesystem": { + "type": "boolean" + }, + "RunAsGroup": { + "type": "integer" + }, + "RunAsNonRoot": { + "type": "boolean" + }, + "RunAsUser": { + "type": "integer" + } + }, + "type": "object" + }, + "EksContainerVolumeMount": { + "additionalProperties": false, + "properties": { + "MountPath": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "ReadOnly": { + "type": "boolean" + }, + "SubPath": { + "type": "string" + } + }, + "type": "object" + }, + "EksEmptyDir": { + "additionalProperties": false, + "properties": { + "Medium": { + "type": "string" + }, + "SizeLimit": { + "type": "string" + } + }, + "type": "object" + }, + "EksHostPath": { + "additionalProperties": false, + "properties": { + "Path": { + "type": "string" + } + }, + "type": "object" + }, + "EksMetadata": { + "additionalProperties": false, + "properties": { + "Annotations": { + "additionalProperties": false, + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + }, + "Labels": { + "additionalProperties": false, + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + }, + "Namespace": { + "type": "string" + } + }, + "type": "object" + }, + "EksPersistentVolumeClaim": { + "additionalProperties": false, + "properties": { + "ClaimName": { + "type": "string" + }, + "ReadOnly": { + "type": "boolean" + } + }, + "required": [ + "ClaimName" + ], + "type": "object" + }, + "EksPodProperties": { + "additionalProperties": false, + "properties": { + "Containers": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EksContainer" + }, + "type": "array", + "uniqueItems": false + }, + "DnsPolicy": { + "type": "string" + }, + "HostNetwork": { + "type": "boolean" + }, + "ImagePullSecrets": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ImagePullSecret" + }, + "type": "array", + "uniqueItems": false + }, + "InitContainers": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EksContainer" + }, + "type": "array", + "uniqueItems": false + }, + "Metadata": { + "$ref": "#/definitions/EksMetadata" + }, + "ServiceAccountName": { + "type": "string" + }, + "ShareProcessNamespace": { + "type": "boolean" + }, + "Volumes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EksVolume" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EksProperties": { + "additionalProperties": false, + "properties": { + "PodProperties": { + "$ref": "#/definitions/EksPodProperties" + } + }, + "type": "object" + }, + "EksSecret": { + "additionalProperties": false, + "properties": { + "Optional": { + "type": "boolean" + }, + "SecretName": { + "type": "string" + } + }, + "required": [ + "SecretName" + ], + "type": "object" + }, + "EksVolume": { + "additionalProperties": false, + "properties": { + "EmptyDir": { + "$ref": "#/definitions/EksEmptyDir" + }, + "HostPath": { + "$ref": "#/definitions/EksHostPath" + }, + "Name": { + "type": "string" + }, + "PersistentVolumeClaim": { + "$ref": "#/definitions/EksPersistentVolumeClaim" + }, + "Secret": { + "$ref": "#/definitions/EksSecret" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Environment": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "EphemeralStorage": { + "additionalProperties": false, + "properties": { + "SizeInGiB": { + "type": "integer" + } + }, + "required": [ + "SizeInGiB" + ], + "type": "object" + }, + "EvaluateOnExit": { + "additionalProperties": false, + "properties": { + "Action": { + "type": "string" + }, + "OnExitCode": { + "type": "string" + }, + "OnReason": { + "type": "string" + }, + "OnStatusReason": { + "type": "string" + } + }, + "required": [ + "Action" + ], + "type": "object" + }, + "Host": { + "additionalProperties": false, + "properties": { + "SourcePath": { + "type": "string" + } + }, + "type": "object" + }, + "ImagePullSecret": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "type": "object" + }, + "JobTimeout": { + "additionalProperties": false, + "properties": { + "AttemptDurationSeconds": { + "type": "integer" + } + }, + "type": "object" + }, + "LinuxParameters": { + "additionalProperties": false, + "properties": { + "Devices": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Device" + }, + "type": "array", + "uniqueItems": false + }, + "InitProcessEnabled": { + "type": "boolean" + }, + "MaxSwap": { + "type": "integer" + }, + "SharedMemorySize": { + "type": "integer" + }, + "Swappiness": { + "type": "integer" + }, + "Tmpfs": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tmpfs" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "LogConfiguration": { + "additionalProperties": false, + "properties": { + "LogDriver": { + "type": "string" + }, + "Options": { + "additionalProperties": false, + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + }, + "SecretOptions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Secret" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "LogDriver" + ], + "type": "object" + }, + "MountPoint": { + "additionalProperties": false, + "properties": { + "ContainerPath": { + "type": "string" + }, + "ReadOnly": { + "type": "boolean" + }, + "SourceVolume": { + "type": "string" + } + }, + "type": "object" + }, + "MultiNodeContainerProperties": { + "additionalProperties": false, + "properties": { + "Command": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "EnableExecuteCommand": { + "type": "boolean" + }, + "Environment": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Environment" + }, + "type": "array", + "uniqueItems": false + }, + "EphemeralStorage": { + "$ref": "#/definitions/EphemeralStorage" + }, + "ExecutionRoleArn": { + "type": "string" + }, + "Image": { + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "JobRoleArn": { + "type": "string" + }, + "LinuxParameters": { + "$ref": "#/definitions/LinuxParameters" + }, + "LogConfiguration": { + "$ref": "#/definitions/LogConfiguration" + }, + "Memory": { + "type": "integer" + }, + "MountPoints": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MountPoint" + }, + "type": "array", + "uniqueItems": false + }, + "Privileged": { + "type": "boolean" + }, + "ReadonlyRootFilesystem": { + "type": "boolean" + }, + "RepositoryCredentials": { + "$ref": "#/definitions/RepositoryCredentials" + }, + "ResourceRequirements": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourceRequirement" + }, + "type": "array", + "uniqueItems": false + }, + "RuntimePlatform": { + "$ref": "#/definitions/RuntimePlatform" + }, + "Secrets": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Secret" + }, + "type": "array", + "uniqueItems": false + }, + "Ulimits": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Ulimit" + }, + "type": "array", + "uniqueItems": false + }, + "User": { + "type": "string" + }, + "Vcpus": { + "type": "integer" + }, + "Volumes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Volume" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Image" + ], + "type": "object" + }, + "MultiNodeEcsProperties": { + "additionalProperties": false, + "properties": { + "TaskProperties": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MultiNodeEcsTaskProperties" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "TaskProperties" + ], + "type": "object" + }, + "MultiNodeEcsTaskProperties": { + "additionalProperties": false, + "properties": { + "Containers": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TaskContainerProperties" + }, + "type": "array", + "uniqueItems": false + }, + "EnableExecuteCommand": { + "type": "boolean" + }, + "ExecutionRoleArn": { + "type": "string" + }, + "IpcMode": { + "type": "string" + }, + "PidMode": { + "type": "string" + }, + "TaskRoleArn": { + "type": "string" + }, + "Volumes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Volume" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "NetworkConfiguration": { + "additionalProperties": false, + "properties": { + "AssignPublicIp": { + "type": "string" + } + }, + "type": "object" + }, + "NodeProperties": { + "additionalProperties": false, + "properties": { + "MainNode": { + "type": "integer" + }, + "NodeRangeProperties": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/NodeRangeProperty" + }, + "type": "array", + "uniqueItems": false + }, + "NumNodes": { + "type": "integer" + } + }, + "required": [ + "NumNodes", + "MainNode", + "NodeRangeProperties" + ], + "type": "object" + }, + "NodeRangeProperty": { + "additionalProperties": false, + "properties": { + "ConsumableResourceProperties": { + "$ref": "#/definitions/ConsumableResourceProperties" + }, + "Container": { + "$ref": "#/definitions/MultiNodeContainerProperties" + }, + "EcsProperties": { + "$ref": "#/definitions/MultiNodeEcsProperties" + }, + "EksProperties": { + "$ref": "#/definitions/EksProperties" + }, + "InstanceTypes": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "TargetNodes": { + "type": "string" + } + }, + "required": [ + "TargetNodes" + ], + "type": "object" + }, + "RepositoryCredentials": { + "additionalProperties": false, + "properties": { + "CredentialsParameter": { + "type": "string" + } + }, + "required": [ + "CredentialsParameter" + ], + "type": "object" + }, + "ResourceRequirement": { + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "RetryStrategy": { + "additionalProperties": false, + "properties": { + "Attempts": { + "type": "integer" + }, + "EvaluateOnExit": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EvaluateOnExit" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "RuntimePlatform": { + "additionalProperties": false, + "properties": { + "CpuArchitecture": { + "type": "string" + }, + "OperatingSystemFamily": { + "type": "string" + } + }, + "type": "object" + }, + "Secret": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "ValueFrom": { + "type": "string" + } + }, + "required": [ + "Name", + "ValueFrom" + ], + "type": "object" + }, + "TaskContainerDependency": { + "additionalProperties": false, + "properties": { + "Condition": { + "type": "string" + }, + "ContainerName": { + "type": "string" + } + }, + "required": [ + "ContainerName", + "Condition" + ], + "type": "object" + }, + "TaskContainerProperties": { + "additionalProperties": false, + "properties": { + "Command": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "DependsOn": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TaskContainerDependency" + }, + "type": "array", + "uniqueItems": false + }, + "Environment": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Environment" + }, + "type": "array", + "uniqueItems": false + }, + "Essential": { + "type": "boolean" + }, + "FirelensConfiguration": { + "additionalProperties": false, + "properties": { + "Options": { + "additionalProperties": false, + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "Image": { + "type": "string" + }, + "LinuxParameters": { + "$ref": "#/definitions/LinuxParameters" + }, + "LogConfiguration": { + "$ref": "#/definitions/LogConfiguration" + }, + "MountPoints": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MountPoint" + }, + "type": "array", + "uniqueItems": false + }, + "Name": { + "type": "string" + }, + "Privileged": { + "type": "boolean" + }, + "ReadonlyRootFilesystem": { + "type": "boolean" + }, + "RepositoryCredentials": { + "$ref": "#/definitions/RepositoryCredentials" + }, + "ResourceRequirements": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourceRequirement" + }, + "type": "array", + "uniqueItems": false + }, + "Secrets": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Secret" + }, + "type": "array", + "uniqueItems": false + }, + "Ulimits": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Ulimit" + }, + "type": "array", + "uniqueItems": false + }, + "User": { + "type": "string" + } + }, + "required": [ + "Image" + ], + "type": "object" + }, + "Tmpfs": { + "additionalProperties": false, + "properties": { + "ContainerPath": { + "type": "string" + }, + "MountOptions": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Size": { + "type": "integer" + } + }, + "required": [ + "ContainerPath", + "Size" + ], + "type": "object" + }, + "Ulimit": { + "additionalProperties": false, + "properties": { + "HardLimit": { + "type": "integer" + }, + "Name": { + "type": "string" + }, + "SoftLimit": { + "type": "integer" + } + }, + "required": [ + "HardLimit", + "Name", + "SoftLimit" + ], + "type": "object" + }, + "Volume": { + "additionalProperties": false, + "properties": { + "EfsVolumeConfiguration": { + "$ref": "#/definitions/EFSVolumeConfiguration" + }, + "Host": { + "$ref": "#/definitions/Host" + }, + "Name": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Batch::JobDefinition", + "handlers": { + "create": { + "permissions": [ + "Batch:RegisterJobDefinition", + "Batch:TagResource", + "Batch:DescribeJobDefinitions", + "Iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "Batch:DescribeJobDefinitions", + "Batch:DeregisterJobDefinition", + "Iam:PassRole" + ] + }, + "list": { + "permissions": [ + "Batch:DescribeJobDefinitions" + ] + }, + "read": { + "permissions": [ + "Batch:DescribeJobDefinitions" + ] + }, + "update": { + "permissions": [ + "Batch:DescribeJobDefinitions", + "Batch:RegisterJobDefinition", + "Batch:DeregisterJobDefinition", + "Batch:TagResource", + "Batch:UntagResource", + "Iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/JobDefinitionName" + ], + "properties": { + "ConsumableResourceProperties": { + "$ref": "#/definitions/ConsumableResourceProperties" + }, + "ContainerProperties": { + "$ref": "#/definitions/ContainerProperties" + }, + "EcsProperties": { + "$ref": "#/definitions/EcsProperties" + }, + "EksProperties": { + "$ref": "#/definitions/EksProperties" + }, + "JobDefinitionArn": { + "type": "string" + }, + "JobDefinitionName": { + "maxLength": 128, + "type": "string" + }, + "NodeProperties": { + "$ref": "#/definitions/NodeProperties" + }, + "Parameters": { + "additionalProperties": false, + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + }, + "PlatformCapabilities": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "PropagateTags": { + "type": "boolean" + }, + "RetryStrategy": { + "$ref": "#/definitions/RetryStrategy" + }, + "SchedulingPriority": { + "type": "integer" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + }, + "Timeout": { + "$ref": "#/definitions/JobTimeout" + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/JobDefinitionArn" + ], + "required": [ + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "Batch:TagResource", + "Batch:UnTagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Batch::JobDefinition" +} diff --git a/src/schema/aws-batch-jobqueue.json b/src/schema/aws-batch-jobqueue.json index b085d9e3..74f27124 100644 --- a/src/schema/aws-batch-jobqueue.json +++ b/src/schema/aws-batch-jobqueue.json @@ -1,169 +1,169 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Tags", - "/properties/JobQueueName" - ], - "definitions": { - "ComputeEnvironmentOrder": { - "additionalProperties": false, - "properties": { - "ComputeEnvironment": { - "type": "string" - }, - "Order": { - "type": "integer" - } - }, - "required": [ - "ComputeEnvironment", - "Order" - ], - "type": "object" - }, - "JobStateTimeLimitAction": { - "additionalProperties": false, - "properties": { - "Action": { - "enum": [ - "CANCEL" - ], - "type": "string" - }, - "MaxTimeSeconds": { - "maximum": 86400, - "minimum": 600, - "type": "integer" - }, - "Reason": { - "type": "string" - }, - "State": { - "enum": [ - "RUNNABLE" - ], - "type": "string" - } - }, - "required": [ - "Action", - "MaxTimeSeconds", - "Reason", - "State" - ], - "type": "object" - }, - "ResourceArn": { - "pattern": "arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}", - "type": "string" - } - }, - "description": "Resource Type definition for AWS::Batch::JobQueue", - "handlers": { - "create": { - "permissions": [ - "Batch:CreateJobQueue", - "Batch:TagResource", - "Batch:DescribeJobQueues" - ] - }, - "delete": { - "permissions": [ - "Batch:UpdateJobQueue", - "Batch:DescribeJobQueues", - "Batch:DeleteJobQueue" - ] - }, - "list": { - "permissions": [ - "Batch:DescribeJobQueues" - ] - }, - "read": { - "permissions": [ - "Batch:DescribeJobQueues" - ] - }, - "update": { - "permissions": [ - "Batch:DescribeJobQueues", - "Batch:UpdateJobQueue", - "Batch:TagResource", - "Batch:UnTagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/JobQueueArn" - ], - "properties": { - "ComputeEnvironmentOrder": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ComputeEnvironmentOrder" - }, - "type": "array", - "uniqueItems": false - }, - "JobQueueArn": { - "$ref": "#/definitions/ResourceArn" - }, - "JobQueueName": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "JobStateTimeLimitActions": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/JobStateTimeLimitAction" - }, - "type": "array", - "uniqueItems": false - }, - "Priority": { - "maximum": 1000, - "minimum": 0, - "type": "integer" - }, - "SchedulingPolicyArn": { - "$ref": "#/definitions/ResourceArn" - }, - "State": { - "enum": [ - "DISABLED", - "ENABLED" - ], - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "patternProperties": { - ".*": { - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/JobQueueArn" - ], - "required": [ - "ComputeEnvironmentOrder", - "Priority" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "Batch:TagResource", - "Batch:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::Batch::JobQueue" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tags", + "/properties/JobQueueName" + ], + "definitions": { + "ComputeEnvironmentOrder": { + "additionalProperties": false, + "properties": { + "ComputeEnvironment": { + "type": "string" + }, + "Order": { + "type": "integer" + } + }, + "required": [ + "ComputeEnvironment", + "Order" + ], + "type": "object" + }, + "JobStateTimeLimitAction": { + "additionalProperties": false, + "properties": { + "Action": { + "enum": [ + "CANCEL" + ], + "type": "string" + }, + "MaxTimeSeconds": { + "maximum": 86400, + "minimum": 600, + "type": "integer" + }, + "Reason": { + "type": "string" + }, + "State": { + "enum": [ + "RUNNABLE" + ], + "type": "string" + } + }, + "required": [ + "Action", + "MaxTimeSeconds", + "Reason", + "State" + ], + "type": "object" + }, + "ResourceArn": { + "pattern": "arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}", + "type": "string" + } + }, + "description": "Resource Type definition for AWS::Batch::JobQueue", + "handlers": { + "create": { + "permissions": [ + "Batch:CreateJobQueue", + "Batch:TagResource", + "Batch:DescribeJobQueues" + ] + }, + "delete": { + "permissions": [ + "Batch:UpdateJobQueue", + "Batch:DescribeJobQueues", + "Batch:DeleteJobQueue" + ] + }, + "list": { + "permissions": [ + "Batch:DescribeJobQueues" + ] + }, + "read": { + "permissions": [ + "Batch:DescribeJobQueues" + ] + }, + "update": { + "permissions": [ + "Batch:DescribeJobQueues", + "Batch:UpdateJobQueue", + "Batch:TagResource", + "Batch:UnTagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/JobQueueArn" + ], + "properties": { + "ComputeEnvironmentOrder": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ComputeEnvironmentOrder" + }, + "type": "array", + "uniqueItems": false + }, + "JobQueueArn": { + "$ref": "#/definitions/ResourceArn" + }, + "JobQueueName": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "JobStateTimeLimitActions": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/JobStateTimeLimitAction" + }, + "type": "array", + "uniqueItems": false + }, + "Priority": { + "maximum": 1000, + "minimum": 0, + "type": "integer" + }, + "SchedulingPolicyArn": { + "$ref": "#/definitions/ResourceArn" + }, + "State": { + "enum": [ + "DISABLED", + "ENABLED" + ], + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/JobQueueArn" + ], + "required": [ + "ComputeEnvironmentOrder", + "Priority" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "Batch:TagResource", + "Batch:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Batch::JobQueue" +} diff --git a/src/schema/aws-batch-schedulingpolicy.json b/src/schema/aws-batch-schedulingpolicy.json index e7902d62..9387a883 100644 --- a/src/schema/aws-batch-schedulingpolicy.json +++ b/src/schema/aws-batch-schedulingpolicy.json @@ -1,125 +1,129 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Tags" - ], - "definitions": { - "FairsharePolicy": { - "additionalProperties": false, - "description": "Fair Share Policy for the Job Queue.", - "properties": { - "ComputeReservation": { - "maximum": 99, - "minimum": 0, - "type": "number" - }, - "ShareDecaySeconds": { - "maximum": 604800, - "minimum": 0, - "type": "number" - }, - "ShareDistribution": { - "description": "List of Share Attributes", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ShareAttributes" - }, - "type": "array" - } - }, - "required": [], - "type": "object" - }, - "ResourceArn": { - "description": "ARN of the Scheduling Policy.", - "type": "string" - }, - "ShareAttributes": { - "additionalProperties": false, - "properties": { - "ShareIdentifier": { - "type": "string" - }, - "WeightFactor": { - "maximum": 1000, - "minimum": 0, - "type": "number" - } - }, - "required": [], - "type": "object" - } - }, - "description": "Resource Type schema for AWS::Batch::SchedulingPolicy", - "handlers": { - "create": { - "permissions": [ - "Batch:CreateSchedulingPolicy", - "Batch:TagResource" - ] - }, - "delete": { - "permissions": [ - "Batch:DescribeSchedulingPolicies", - "Batch:DeleteSchedulingPolicy" - ] - }, - "list": { - "permissions": [ - "Batch:ListSchedulingPolicies", - "Batch:DescribeSchedulingPolicies" - ] - }, - "read": { - "permissions": [ - "Batch:DescribeSchedulingPolicies" - ] - }, - "update": { - "permissions": [ - "Batch:UpdateSchedulingPolicy", - "Batch:TagResource", - "Batch:UnTagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/ResourceArn" - }, - "FairsharePolicy": { - "$ref": "#/definitions/FairsharePolicy" - }, - "Name": { - "description": "Name of Scheduling Policy.", - "pattern": "", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "patternProperties": { - ".*": { - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-batch.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::Batch::SchedulingPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Tags" + ], + "definitions": { + "FairsharePolicy": { + "additionalProperties": false, + "description": "Fair Share Policy for the Job Queue.", + "properties": { + "ComputeReservation": { + "maximum": 99, + "minimum": 0, + "type": "number" + }, + "ShareDecaySeconds": { + "maximum": 604800, + "minimum": 0, + "type": "number" + }, + "ShareDistribution": { + "description": "List of Share Attributes", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ShareAttributes" + }, + "type": "array" + } + }, + "required": [], + "type": "object" + }, + "ResourceArn": { + "description": "ARN of the Scheduling Policy.", + "type": "string" + }, + "ShareAttributes": { + "additionalProperties": false, + "properties": { + "ShareIdentifier": { + "type": "string" + }, + "WeightFactor": { + "maximum": 1000, + "minimum": 0, + "type": "number" + } + }, + "required": [], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Batch::SchedulingPolicy", + "handlers": { + "create": { + "permissions": [ + "Batch:CreateSchedulingPolicy", + "Batch:TagResource" + ] + }, + "delete": { + "permissions": [ + "Batch:DescribeSchedulingPolicies", + "Batch:DeleteSchedulingPolicy" + ] + }, + "list": { + "permissions": [ + "Batch:ListSchedulingPolicies", + "Batch:DescribeSchedulingPolicies" + ] + }, + "read": { + "permissions": [ + "Batch:DescribeSchedulingPolicies" + ] + }, + "update": { + "permissions": [ + "Batch:UpdateSchedulingPolicy", + "Batch:TagResource", + "Batch:UnTagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/ResourceArn" + }, + "FairsharePolicy": { + "$ref": "#/definitions/FairsharePolicy" + }, + "Name": { + "description": "Name of Scheduling Policy.", + "pattern": "", + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-batch.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "Batch:TagResource", + "Batch:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Batch::SchedulingPolicy" +} diff --git a/src/schema/aws-bcmdataexports-export.json b/src/schema/aws-bcmdataexports-export.json index 8190a2d5..62b62edd 100644 --- a/src/schema/aws-bcmdataexports-export.json +++ b/src/schema/aws-bcmdataexports-export.json @@ -1,296 +1,301 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Export/Name", - "/properties/Export/DataQuery/TableConfigurations", - "/properties/Export/RefreshCadence" - ], - "definitions": { - "CompressionOption": { - "enum": [ - "GZIP", - "PARQUET" - ], - "type": "string" - }, - "DataQuery": { - "additionalProperties": false, - "properties": { - "QueryStatement": { - "maxLength": 36000, - "minLength": 1, - "pattern": "^[\\S\\s]*$", - "type": "string" - }, - "TableConfigurations": { - "$ref": "#/definitions/TableConfigurations" - } - }, - "required": [ - "QueryStatement" - ], - "type": "object" - }, - "DestinationConfigurations": { - "additionalProperties": false, - "properties": { - "S3Destination": { - "$ref": "#/definitions/S3Destination" - } - }, - "required": [ - "S3Destination" - ], - "type": "object" - }, - "Export": { - "additionalProperties": false, - "properties": { - "DataQuery": { - "$ref": "#/definitions/DataQuery" - }, - "Description": { - "maxLength": 1024, - "minLength": 0, - "pattern": "^[\\S\\s]*$", - "type": "string" - }, - "DestinationConfigurations": { - "$ref": "#/definitions/DestinationConfigurations" - }, - "ExportArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[-a-z0-9]*:[-a-z0-9]+:[-a-z0-9]*:[0-9]{12}:[-a-zA-Z0-9/:_]+$", - "type": "string" - }, - "Name": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[0-9A-Za-z\\-_]+$", - "type": "string" - }, - "RefreshCadence": { - "$ref": "#/definitions/RefreshCadence" - } - }, - "required": [ - "DataQuery", - "DestinationConfigurations", - "Name", - "RefreshCadence" - ], - "type": "object" - }, - "FormatOption": { - "enum": [ - "TEXT_OR_CSV", - "PARQUET" - ], - "type": "string" - }, - "FrequencyOption": { - "enum": [ - "SYNCHRONOUS" - ], - "type": "string" - }, - "OverwriteOption": { - "enum": [ - "CREATE_NEW_REPORT", - "OVERWRITE_REPORT" - ], - "type": "string" - }, - "RefreshCadence": { - "additionalProperties": false, - "properties": { - "Frequency": { - "$ref": "#/definitions/FrequencyOption" - } - }, - "required": [ - "Frequency" - ], - "type": "object" - }, - "ResourceTag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "S3Destination": { - "additionalProperties": false, - "properties": { - "S3Bucket": { - "maxLength": 1024, - "minLength": 0, - "pattern": "^[\\S\\s]*$", - "type": "string" - }, - "S3OutputConfigurations": { - "$ref": "#/definitions/S3OutputConfigurations" - }, - "S3Prefix": { - "maxLength": 1024, - "minLength": 0, - "pattern": "^[\\S\\s]*$", - "type": "string" - }, - "S3Region": { - "maxLength": 1024, - "minLength": 0, - "pattern": "^[\\S\\s]*$", - "type": "string" - } - }, - "required": [ - "S3Bucket", - "S3OutputConfigurations", - "S3Prefix", - "S3Region" - ], - "type": "object" - }, - "S3OutputConfigurations": { - "additionalProperties": false, - "properties": { - "Compression": { - "$ref": "#/definitions/CompressionOption" - }, - "Format": { - "$ref": "#/definitions/FormatOption" - }, - "OutputType": { - "$ref": "#/definitions/S3OutputType" - }, - "Overwrite": { - "$ref": "#/definitions/OverwriteOption" - } - }, - "required": [ - "Compression", - "Format", - "OutputType", - "Overwrite" - ], - "type": "object" - }, - "S3OutputType": { - "enum": [ - "CUSTOM" - ], - "type": "string" - }, - "TableConfigurations": { - "additionalProperties": false, - "patternProperties": { - "^[\\S\\s]*$": { - "$ref": "#/definitions/TableProperties" - } - }, - "type": "object" - }, - "TableProperties": { - "additionalProperties": false, - "patternProperties": { - "^[\\S\\s]*$": { - "maxLength": 1024, - "minLength": 0, - "pattern": "^[\\S\\s]*$", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::BCMDataExports::Export Resource Type", - "documentationUrl": "https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_DataExports_CreateExport.html#API_DataExports_CreateExport_RequestSyntax", - "handlers": { - "create": { - "permissions": [ - "bcm-data-exports:CreateExport", - "bcm-data-exports:GetExport", - "bcm-data-exports:ListTagsForResource", - "bcm-data-exports:TagResource", - "cur:PutReportDefinition" - ] - }, - "delete": { - "permissions": [ - "bcm-data-exports:DeleteExport" - ] - }, - "list": { - "permissions": [ - "bcm-data-exports:ListExports" - ] - }, - "read": { - "permissions": [ - "bcm-data-exports:GetExport", - "bcm-data-exports:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "bcm-data-exports:UpdateExport", - "bcm-data-exports:TagResource", - "bcm-data-exports:UntagResource", - "bcm-data-exports:GetExport", - "bcm-data-exports:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ExportArn" - ], - "properties": { - "Export": { - "$ref": "#/definitions/Export" - }, - "ExportArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[-a-z0-9]*:[-a-z0-9]+:[-a-z0-9]*:[0-9]{12}:[-a-zA-Z0-9/:_]+$", - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/ResourceTag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ExportArn" - ], - "required": [ - "Export" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::BCMDataExports::Export" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Export/Name", + "/properties/Export/DataQuery/TableConfigurations", + "/properties/Export/RefreshCadence" + ], + "definitions": { + "CompressionOption": { + "enum": [ + "GZIP", + "PARQUET" + ], + "type": "string" + }, + "DataQuery": { + "additionalProperties": false, + "properties": { + "QueryStatement": { + "maxLength": 36000, + "minLength": 1, + "pattern": "^[\\S\\s]*$", + "type": "string" + }, + "TableConfigurations": { + "$ref": "#/definitions/TableConfigurations" + } + }, + "required": [ + "QueryStatement" + ], + "type": "object" + }, + "DestinationConfigurations": { + "additionalProperties": false, + "properties": { + "S3Destination": { + "$ref": "#/definitions/S3Destination" + } + }, + "required": [ + "S3Destination" + ], + "type": "object" + }, + "Export": { + "additionalProperties": false, + "properties": { + "DataQuery": { + "$ref": "#/definitions/DataQuery" + }, + "Description": { + "maxLength": 1024, + "minLength": 0, + "pattern": "^[\\S\\s]*$", + "type": "string" + }, + "DestinationConfigurations": { + "$ref": "#/definitions/DestinationConfigurations" + }, + "ExportArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[-a-z0-9]*:[-a-z0-9]+:[-a-z0-9]*:[0-9]{12}:[-a-zA-Z0-9/:_]+$", + "type": "string" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[0-9A-Za-z\\-_]+$", + "type": "string" + }, + "RefreshCadence": { + "$ref": "#/definitions/RefreshCadence" + } + }, + "required": [ + "DataQuery", + "DestinationConfigurations", + "Name", + "RefreshCadence" + ], + "type": "object" + }, + "FormatOption": { + "enum": [ + "TEXT_OR_CSV", + "PARQUET" + ], + "type": "string" + }, + "FrequencyOption": { + "enum": [ + "SYNCHRONOUS" + ], + "type": "string" + }, + "OverwriteOption": { + "enum": [ + "CREATE_NEW_REPORT", + "OVERWRITE_REPORT" + ], + "type": "string" + }, + "RefreshCadence": { + "additionalProperties": false, + "properties": { + "Frequency": { + "$ref": "#/definitions/FrequencyOption" + } + }, + "required": [ + "Frequency" + ], + "type": "object" + }, + "ResourceTag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "S3Destination": { + "additionalProperties": false, + "properties": { + "S3Bucket": { + "maxLength": 1024, + "minLength": 0, + "pattern": "^[\\S\\s]*$", + "type": "string" + }, + "S3OutputConfigurations": { + "$ref": "#/definitions/S3OutputConfigurations" + }, + "S3Prefix": { + "maxLength": 1024, + "minLength": 0, + "pattern": "^[\\S\\s]*$", + "type": "string" + }, + "S3Region": { + "maxLength": 1024, + "minLength": 0, + "pattern": "^[\\S\\s]*$", + "type": "string" + } + }, + "required": [ + "S3Bucket", + "S3OutputConfigurations", + "S3Prefix", + "S3Region" + ], + "type": "object" + }, + "S3OutputConfigurations": { + "additionalProperties": false, + "properties": { + "Compression": { + "$ref": "#/definitions/CompressionOption" + }, + "Format": { + "$ref": "#/definitions/FormatOption" + }, + "OutputType": { + "$ref": "#/definitions/S3OutputType" + }, + "Overwrite": { + "$ref": "#/definitions/OverwriteOption" + } + }, + "required": [ + "Compression", + "Format", + "OutputType", + "Overwrite" + ], + "type": "object" + }, + "S3OutputType": { + "enum": [ + "CUSTOM" + ], + "type": "string" + }, + "TableConfigurations": { + "additionalProperties": false, + "patternProperties": { + "^[\\S\\s]*$": { + "$ref": "#/definitions/TableProperties" + } + }, + "type": "object" + }, + "TableProperties": { + "additionalProperties": false, + "patternProperties": { + "^[\\S\\s]*$": { + "maxLength": 1024, + "minLength": 0, + "pattern": "^[\\S\\s]*$", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::BCMDataExports::Export Resource Type", + "documentationUrl": "https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_DataExports_CreateExport.html#API_DataExports_CreateExport_RequestSyntax", + "handlers": { + "create": { + "permissions": [ + "bcm-data-exports:CreateExport", + "bcm-data-exports:GetExport", + "bcm-data-exports:ListTagsForResource", + "bcm-data-exports:TagResource", + "cur:PutReportDefinition" + ] + }, + "delete": { + "permissions": [ + "bcm-data-exports:DeleteExport" + ] + }, + "list": { + "permissions": [ + "bcm-data-exports:ListExports" + ] + }, + "read": { + "permissions": [ + "bcm-data-exports:GetExport", + "bcm-data-exports:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "bcm-data-exports:UpdateExport", + "bcm-data-exports:TagResource", + "bcm-data-exports:UntagResource", + "bcm-data-exports:GetExport", + "bcm-data-exports:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ExportArn" + ], + "properties": { + "Export": { + "$ref": "#/definitions/Export" + }, + "ExportArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[-a-z0-9]*:[-a-z0-9]+:[-a-z0-9]*:[0-9]{12}:[-a-zA-Z0-9/:_]+$", + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/ResourceTag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ExportArn" + ], + "required": [ + "Export" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "bcm-data-exports:ListTagsForResource", + "bcm-data-exports:TagResource", + "bcm-data-exports:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::BCMDataExports::Export" +} diff --git a/src/schema/aws-bedrock-agent.json b/src/schema/aws-bedrock-agent.json index ff728079..46bc43d7 100644 --- a/src/schema/aws-bedrock-agent.json +++ b/src/schema/aws-bedrock-agent.json @@ -1,683 +1,889 @@ -{ - "additionalProperties": false, - "definitions": { - "APISchema": { - "description": "Contains information about the API Schema for the Action Group", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "S3": { - "$ref": "#/definitions/S3Identifier" - } - }, - "required": [ - "S3" - ], - "title": "S3", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Payload": { - "description": "String OpenAPI Payload", - "type": "string" - } - }, - "required": [ - "Payload" - ], - "title": "Payload", - "type": "object" - } - ] - }, - "ActionGroupExecutor": { - "description": "Type of Executors for an Action Group", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Lambda": { - "description": "ARN of a Lambda.", - "maxLength": 2048, - "pattern": "^arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-_\\.]+(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", - "type": "string" - } - }, - "required": [ - "Lambda" - ], - "title": "Lambda", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "CustomControl": { - "$ref": "#/definitions/CustomControlMethod" - } - }, - "required": [ - "CustomControl" - ], - "title": "CustomControl", - "type": "object" - } - ] - }, - "ActionGroupSignature": { - "description": "Action Group Signature for a BuiltIn Action", - "enum": [ - "AMAZON.UserInput", - "AMAZON.CodeInterpreter" - ], - "type": "string" - }, - "ActionGroupState": { - "description": "State of the action group", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "AgentActionGroup": { - "additionalProperties": false, - "description": "Contains the information of an Agent Action Group", - "properties": { - "ActionGroupExecutor": { - "$ref": "#/definitions/ActionGroupExecutor" - }, - "ActionGroupName": { - "description": "Name of the action group", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - }, - "ActionGroupState": { - "$ref": "#/definitions/ActionGroupState" - }, - "ApiSchema": { - "$ref": "#/definitions/APISchema" - }, - "Description": { - "description": "Description of action group", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "FunctionSchema": { - "$ref": "#/definitions/FunctionSchema" - }, - "ParentActionGroupSignature": { - "$ref": "#/definitions/ActionGroupSignature" - }, - "SkipResourceInUseCheckOnDelete": { - "default": false, - "description": "Specifies whether to allow deleting action group while it is in use.", - "type": "boolean" - } - }, - "required": [ - "ActionGroupName" - ], - "type": "object" - }, - "AgentKnowledgeBase": { - "additionalProperties": false, - "description": "Agent Knowledge Base", - "properties": { - "Description": { - "description": "Description of the Resource.", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "KnowledgeBaseId": { - "description": "Identifier for a resource.", - "pattern": "^[0-9a-zA-Z]{10}$", - "type": "string" - }, - "KnowledgeBaseState": { - "$ref": "#/definitions/KnowledgeBaseState" - } - }, - "required": [ - "KnowledgeBaseId", - "Description" - ], - "type": "object" - }, - "AgentStatus": { - "description": "Schema Type for Action APIs.", - "enum": [ - "CREATING", - "PREPARING", - "PREPARED", - "NOT_PREPARED", - "DELETING", - "FAILED", - "VERSIONING", - "UPDATING" - ], - "type": "string" - }, - "CreationMode": { - "description": "Creation Mode for Prompt Configuration.", - "enum": [ - "DEFAULT", - "OVERRIDDEN" - ], - "type": "string" - }, - "CustomControlMethod": { - "description": "Custom control of action execution", - "enum": [ - "RETURN_CONTROL" - ], - "type": "string" - }, - "Function": { - "additionalProperties": false, - "description": "Function definition", - "properties": { - "Description": { - "description": "Description of function", - "maxLength": 1200, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "Name for a resource.", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - }, - "Parameters": { - "$ref": "#/definitions/ParameterMap" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "FunctionSchema": { - "additionalProperties": false, - "description": "Schema of Functions", - "properties": { - "Functions": { - "description": "List of Function definitions", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Function" - }, - "type": "array" - } - }, - "required": [ - "Functions" - ], - "title": "Functions", - "type": "object" - }, - "GuardrailConfiguration": { - "additionalProperties": false, - "description": "Configuration for a guardrail.", - "properties": { - "GuardrailIdentifier": { - "description": "Identifier for the guardrail, could be the id or the arn", - "maxLength": 2048, - "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$", - "type": "string" - }, - "GuardrailVersion": { - "description": "Version of the guardrail", - "pattern": "^(([0-9]{1,8})|(DRAFT))$", - "type": "string" - } - }, - "type": "object" - }, - "InferenceConfiguration": { - "additionalProperties": false, - "description": "Configuration for inference in prompt configuration", - "properties": { - "MaximumLength": { - "description": "Maximum length of output", - "maximum": 4096, - "minimum": 0, - "type": "number" - }, - "StopSequences": { - "description": "List of stop sequences", - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 4, - "minItems": 0, - "type": "array" - }, - "Temperature": { - "description": "Controls randomness, higher values increase diversity", - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "TopK": { - "description": "Sample from the k most likely next tokens", - "maximum": 500, - "minimum": 0, - "type": "number" - }, - "TopP": { - "description": "Cumulative probability cutoff for token selection", - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "KnowledgeBaseState": { - "description": "State of the knowledge base; whether it is enabled or disabled", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "ParameterDetail": { - "additionalProperties": false, - "description": "Parameter detail", - "properties": { - "Description": { - "description": "Description of function parameter.", - "maxLength": 500, - "minLength": 1, - "type": "string" - }, - "Required": { - "description": "Information about if a parameter is required for function call. Default to false.", - "type": "boolean" - }, - "Type": { - "$ref": "#/definitions/Type" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ParameterMap": { - "additionalProperties": false, - "description": "A map of parameter name and detail", - "patternProperties": { - "^([0-9a-zA-Z][_-]?){1,100}$": { - "$ref": "#/definitions/ParameterDetail" - } - }, - "type": "object" - }, - "PromptConfiguration": { - "additionalProperties": false, - "description": "BasePromptConfiguration per Prompt Type.", - "properties": { - "BasePromptTemplate": { - "description": "Base Prompt Template.", - "maxLength": 100000, - "minLength": 1, - "type": "string" - }, - "InferenceConfiguration": { - "$ref": "#/definitions/InferenceConfiguration" - }, - "ParserMode": { - "$ref": "#/definitions/CreationMode" - }, - "PromptCreationMode": { - "$ref": "#/definitions/CreationMode" - }, - "PromptState": { - "$ref": "#/definitions/PromptState" - }, - "PromptType": { - "$ref": "#/definitions/PromptType" - } - }, - "type": "object" - }, - "PromptOverrideConfiguration": { - "additionalProperties": false, - "description": "Configuration for prompt override.", - "properties": { - "OverrideLambda": { - "description": "ARN of a Lambda.", - "maxLength": 2048, - "pattern": "^arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-_\\.]+(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", - "type": "string" - }, - "PromptConfigurations": { - "description": "List of BasePromptConfiguration", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PromptConfiguration" - }, - "maxItems": 10, - "type": "array" - } - }, - "required": [ - "PromptConfigurations" - ], - "type": "object" - }, - "PromptState": { - "description": "Prompt State.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "PromptType": { - "description": "Prompt Type.", - "enum": [ - "PRE_PROCESSING", - "ORCHESTRATION", - "POST_PROCESSING", - "KNOWLEDGE_BASE_RESPONSE_GENERATION" - ], - "type": "string" - }, - "S3Identifier": { - "additionalProperties": false, - "description": "The identifier for the S3 resource.", - "properties": { - "S3BucketName": { - "description": "A bucket in S3.", - "maxLength": 63, - "minLength": 3, - "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", - "type": "string" - }, - "S3ObjectKey": { - "description": "A object key in S3.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^[\\.\\-\\!\\*\\_\\'\\(\\)a-zA-Z0-9][\\.\\-\\!\\*\\_\\'\\(\\)\\/a-zA-Z0-9]*$", - "type": "string" - } - }, - "type": "object" - }, - "TagsMap": { - "additionalProperties": false, - "description": "A map of tag keys and values", - "patternProperties": { - "^[a-zA-Z0-9\\s._:/=+@-]*$": { - "description": "Value of a tag", - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", - "type": "string" - } - }, - "type": "object" - }, - "Type": { - "description": "Parameter Type", - "enum": [ - "string", - "number", - "integer", - "boolean", - "array" - ], - "type": "string" - } - }, - "description": "Definition of AWS::Bedrock::Agent Resource Type", - "handlers": { - "create": { - "permissions": [ - "bedrock:CreateAgent", - "bedrock:GetAgent", - "bedrock:PrepareAgent", - "bedrock:GetAgentKnowledgeBase", - "bedrock:AssociateAgentKnowledgeBase", - "bedrock:ListAgentKnowledgeBases", - "bedrock:CreateAgentActionGroup", - "bedrock:GetAgentActionGroup", - "bedrock:ListAgentActionGroups", - "bedrock:TagResource", - "bedrock:ListTagsForResource", - "bedrock:CreateGuardrail", - "bedrock:CreateGuardrailVersion", - "bedrock:GetGuardrail", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "bedrock:GetAgent", - "bedrock:DeleteAgent", - "bedrock:DeleteGuardrail", - "bedrock:GetGuardrail" - ] - }, - "list": { - "permissions": [ - "bedrock:ListAgents", - "bedrock:ListGuardrails" - ] - }, - "read": { - "permissions": [ - "bedrock:GetAgent", - "bedrock:GetAgentActionGroup", - "bedrock:ListAgentActionGroups", - "bedrock:GetAgentKnowledgeBase", - "bedrock:ListAgentKnowledgeBases", - "bedrock:ListTagsForResource", - "bedrock:GetGuardrail", - "kms:Decrypt" - ] - }, - "update": { - "permissions": [ - "bedrock:GetAgent", - "bedrock:UpdateAgent", - "bedrock:PrepareAgent", - "bedrock:GetAgentKnowledgeBase", - "bedrock:UpdateAgentKnowledgeBase", - "bedrock:AssociateAgentKnowledgeBase", - "bedrock:DisassociateAgentKnowledgeBase", - "bedrock:ListAgentKnowledgeBases", - "bedrock:CreateAgentActionGroup", - "bedrock:GetAgentActionGroup", - "bedrock:UpdateAgentActionGroup", - "bedrock:DeleteAgentActionGroup", - "bedrock:ListAgentActionGroups", - "bedrock:TagResource", - "bedrock:UntagResource", - "bedrock:ListTagsForResource", - "bedrock:UpdateGuardrail", - "bedrock:GetGuardrail", - "kms:Decrypt", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/AgentId" - ], - "properties": { - "ActionGroups": { - "description": "List of ActionGroups", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AgentActionGroup" - }, - "type": "array" - }, - "AgentArn": { - "description": "Arn representation of the Agent.", - "maxLength": 2048, - "pattern": "^arn:aws(|-cn|-us-gov):bedrock:[a-z0-9-]{1,20}:[0-9]{12}:agent/[0-9a-zA-Z]{10}$", - "type": "string" - }, - "AgentId": { - "description": "Identifier for a resource.", - "pattern": "^[0-9a-zA-Z]{10}$", - "type": "string" - }, - "AgentName": { - "description": "Name for a resource.", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - }, - "AgentResourceRoleArn": { - "description": "ARN of a IAM role.", - "maxLength": 2048, - "type": "string" - }, - "AgentStatus": { - "$ref": "#/definitions/AgentStatus" - }, - "AgentVersion": { - "description": "Draft Agent Version.", - "maxLength": 5, - "minLength": 5, - "pattern": "^DRAFT$", - "type": "string" - }, - "AutoPrepare": { - "default": false, - "description": "Specifies whether to automatically prepare after creating or updating the agent.", - "type": "boolean" - }, - "CreatedAt": { - "description": "Time Stamp.", - "format": "date-time", - "type": "string" - }, - "CustomerEncryptionKeyArn": { - "description": "A KMS key ARN", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", - "type": "string" - }, - "Description": { - "description": "Description of the Resource.", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "FailureReasons": { - "description": "Failure Reasons for Error.", - "insertionOrder": false, - "items": { - "description": "Failure Reason for Error.", - "maxLength": 2048, - "type": "string" - }, - "maxItems": 2048, - "type": "array" - }, - "FoundationModel": { - "description": "ARN or name of a Bedrock model.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}(([:][a-z0-9-]{1,63}){0,2})?/[a-z0-9]{12})|(:foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|([0-9]{12}:(inference-profile|application-inference-profile)/[a-zA-Z0-9-:.]+))|(([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|(([0-9a-zA-Z][_-]?)+)$", - "type": "string" - }, - "GuardrailConfiguration": { - "$ref": "#/definitions/GuardrailConfiguration" - }, - "IdleSessionTTLInSeconds": { - "description": "Max Session Time.", - "maximum": 3600, - "minimum": 60, - "type": "number" - }, - "Instruction": { - "description": "Instruction for the agent.", - "minLength": 40, - "type": "string" - }, - "KnowledgeBases": { - "description": "List of Agent Knowledge Bases", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AgentKnowledgeBase" - }, - "type": "array" - }, - "PreparedAt": { - "description": "Time Stamp.", - "format": "date-time", - "type": "string" - }, - "PromptOverrideConfiguration": { - "$ref": "#/definitions/PromptOverrideConfiguration" - }, - "RecommendedActions": { - "description": "The recommended actions users can take to resolve an error in failureReasons.", - "insertionOrder": false, - "items": { - "description": "The recommended action users can take to resolve an error in failureReasons.", - "maxLength": 2048, - "type": "string" - }, - "maxItems": 2048, - "type": "array" - }, - "SkipResourceInUseCheckOnDelete": { - "default": false, - "description": "Specifies whether to allow deleting agent while it is in use.", - "type": "boolean" - }, - "Tags": { - "$ref": "#/definitions/TagsMap" - }, - "TestAliasTags": { - "$ref": "#/definitions/TagsMap" - }, - "UpdatedAt": { - "description": "Time Stamp.", - "format": "date-time", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AgentArn", - "/properties/AgentId", - "/properties/AgentStatus", - "/properties/AgentVersion", - "/properties/CreatedAt", - "/properties/FailureReasons", - "/properties/PreparedAt", - "/properties/RecommendedActions", - "/properties/UpdatedAt" - ], - "required": [ - "AgentName" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Bedrock::Agent", - "writeOnlyProperties": [ - "/properties/AutoPrepare", - "/properties/SkipResourceInUseCheckOnDelete", - "/properties/ActionGroups/*/SkipResourceInUseCheckOnDelete" - ] -} +{ + "additionalProperties": false, + "definitions": { + "APISchema": { + "description": "Contains information about the API Schema for the Action Group", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "S3": { + "$ref": "#/definitions/S3Identifier" + } + }, + "required": [ + "S3" + ], + "title": "S3", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Payload": { + "description": "String OpenAPI Payload", + "type": "string" + } + }, + "required": [ + "Payload" + ], + "title": "Payload", + "type": "object" + } + ] + }, + "ActionGroupExecutor": { + "description": "Type of Executors for an Action Group", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Lambda": { + "description": "ARN of a Lambda.", + "maxLength": 2048, + "pattern": "^arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-_\\.]+(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", + "type": "string" + } + }, + "required": [ + "Lambda" + ], + "title": "Lambda", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "CustomControl": { + "$ref": "#/definitions/CustomControlMethod" + } + }, + "required": [ + "CustomControl" + ], + "title": "CustomControl", + "type": "object" + } + ] + }, + "ActionGroupSignature": { + "description": "Action Group Signature for a BuiltIn Action", + "enum": [ + "AMAZON.UserInput", + "AMAZON.CodeInterpreter" + ], + "type": "string" + }, + "ActionGroupState": { + "description": "State of the action group", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "AdditionalModelRequestFields": { + "description": "Additional Model Request Fields for Prompt Configuration", + "type": "object" + }, + "AgentActionGroup": { + "additionalProperties": false, + "description": "Contains the information of an Agent Action Group", + "properties": { + "ActionGroupExecutor": { + "$ref": "#/definitions/ActionGroupExecutor" + }, + "ActionGroupName": { + "description": "Name of the action group", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "ActionGroupState": { + "$ref": "#/definitions/ActionGroupState" + }, + "ApiSchema": { + "$ref": "#/definitions/APISchema" + }, + "Description": { + "description": "Description of action group", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "FunctionSchema": { + "$ref": "#/definitions/FunctionSchema" + }, + "ParentActionGroupSignature": { + "$ref": "#/definitions/ActionGroupSignature" + }, + "SkipResourceInUseCheckOnDelete": { + "default": false, + "description": "Specifies whether to allow deleting action group while it is in use.", + "type": "boolean" + } + }, + "required": [ + "ActionGroupName" + ], + "type": "object" + }, + "AgentCollaboration": { + "description": "Agent collaboration state", + "enum": [ + "DISABLED", + "SUPERVISOR", + "SUPERVISOR_ROUTER" + ], + "type": "string" + }, + "AgentCollaborator": { + "additionalProperties": false, + "description": "Agent Collaborator", + "properties": { + "AgentDescriptor": { + "additionalProperties": false, + "description": "Agent descriptor for agent collaborator", + "properties": { + "AliasArn": { + "description": "Alias ARN for agent descriptor", + "pattern": "^arn:aws(|-cn|-us-gov):bedrock:[a-z0-9-]{1,20}:[0-9]{12}:agent-alias/[0-9a-zA-Z]{10}/[0-9a-zA-Z]{10}$", + "type": "string" + } + }, + "type": "object" + }, + "CollaborationInstruction": { + "description": "Agent collaborator instruction", + "type": "string" + }, + "CollaboratorName": { + "description": "Agent collaborator name", + "type": "string" + }, + "RelayConversationHistory": { + "$ref": "#/definitions/RelayConversationHistory" + } + }, + "required": [ + "AgentDescriptor", + "CollaborationInstruction", + "CollaboratorName" + ], + "type": "object" + }, + "AgentKnowledgeBase": { + "additionalProperties": false, + "description": "Agent Knowledge Base", + "properties": { + "Description": { + "description": "Description of the Resource.", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "KnowledgeBaseId": { + "description": "Identifier for a resource.", + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "KnowledgeBaseState": { + "$ref": "#/definitions/KnowledgeBaseState" + } + }, + "required": [ + "KnowledgeBaseId", + "Description" + ], + "type": "object" + }, + "AgentStatus": { + "description": "Schema Type for Action APIs.", + "enum": [ + "CREATING", + "PREPARING", + "PREPARED", + "NOT_PREPARED", + "DELETING", + "FAILED", + "VERSIONING", + "UPDATING" + ], + "type": "string" + }, + "CreationMode": { + "description": "Creation Mode for Prompt Configuration.", + "enum": [ + "DEFAULT", + "OVERRIDDEN" + ], + "type": "string" + }, + "CustomControlMethod": { + "description": "Custom control of action execution", + "enum": [ + "RETURN_CONTROL" + ], + "type": "string" + }, + "CustomOrchestration": { + "additionalProperties": false, + "description": "Structure for custom orchestration", + "properties": { + "Executor": { + "$ref": "#/definitions/OrchestrationExecutor" + } + }, + "type": "object" + }, + "EnabledMemoryTypes": { + "description": "Types of session storage persisted in memory", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MemoryType" + }, + "type": "array" + }, + "FoundationModel": { + "description": "ARN or name of a Bedrock model.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}(([:][a-z0-9-]{1,63}){0,2})?/[a-z0-9]{12})|(:foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|([0-9]{12}:(inference-profile|application-inference-profile)/[a-zA-Z0-9-:.]+))|(([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|(([0-9a-zA-Z][_-]?)+)$", + "type": "string" + }, + "Function": { + "additionalProperties": false, + "description": "Function definition", + "properties": { + "Description": { + "description": "Description of function", + "maxLength": 1200, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "Name for a resource.", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "Parameters": { + "$ref": "#/definitions/ParameterMap" + }, + "RequireConfirmation": { + "$ref": "#/definitions/RequireConfirmation" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "FunctionSchema": { + "additionalProperties": false, + "description": "Schema of Functions", + "properties": { + "Functions": { + "description": "List of Function definitions", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Function" + }, + "type": "array" + } + }, + "required": [ + "Functions" + ], + "title": "Functions", + "type": "object" + }, + "GuardrailConfiguration": { + "additionalProperties": false, + "description": "Configuration for a guardrail.", + "properties": { + "GuardrailIdentifier": { + "description": "Identifier for the guardrail, could be the id or the arn", + "maxLength": 2048, + "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$", + "type": "string" + }, + "GuardrailVersion": { + "description": "Version of the guardrail", + "pattern": "^(([0-9]{1,8})|(DRAFT))$", + "type": "string" + } + }, + "type": "object" + }, + "InferenceConfiguration": { + "additionalProperties": false, + "description": "Configuration for inference in prompt configuration", + "properties": { + "MaximumLength": { + "description": "Maximum length of output", + "maximum": 4096, + "minimum": 0, + "type": "number" + }, + "StopSequences": { + "description": "List of stop sequences", + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 4, + "minItems": 0, + "type": "array" + }, + "Temperature": { + "description": "Controls randomness, higher values increase diversity", + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "TopK": { + "description": "Sample from the k most likely next tokens", + "maximum": 500, + "minimum": 0, + "type": "number" + }, + "TopP": { + "description": "Cumulative probability cutoff for token selection", + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "KnowledgeBaseState": { + "description": "State of the knowledge base; whether it is enabled or disabled", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "MemoryConfiguration": { + "additionalProperties": false, + "description": "Configuration for memory storage", + "properties": { + "EnabledMemoryTypes": { + "$ref": "#/definitions/EnabledMemoryTypes" + }, + "SessionSummaryConfiguration": { + "$ref": "#/definitions/SessionSummaryConfiguration" + }, + "StorageDays": { + "description": "Maximum number of days to store session details", + "type": "number" + } + }, + "type": "object" + }, + "MemoryType": { + "description": "Memory type", + "enum": [ + "SESSION_SUMMARY" + ], + "type": "string" + }, + "OrchestrationExecutor": { + "additionalProperties": false, + "description": "Types of executors for custom orchestration strategy", + "properties": { + "Lambda": { + "description": "ARN of a Lambda.", + "maxLength": 2048, + "pattern": "^arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-_\\.]+(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", + "type": "string" + } + }, + "required": [ + "Lambda" + ], + "title": "Lambda", + "type": "object" + }, + "OrchestrationType": { + "description": "Types of orchestration strategy for agents", + "enum": [ + "DEFAULT", + "CUSTOM_ORCHESTRATION" + ], + "type": "string" + }, + "ParameterDetail": { + "additionalProperties": false, + "description": "Parameter detail", + "properties": { + "Description": { + "description": "Description of function parameter.", + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "Required": { + "description": "Information about if a parameter is required for function call. Default to false.", + "type": "boolean" + }, + "Type": { + "$ref": "#/definitions/Type" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "ParameterMap": { + "additionalProperties": false, + "description": "A map of parameter name and detail", + "patternProperties": { + "^([0-9a-zA-Z][_-]?){1,100}$": { + "$ref": "#/definitions/ParameterDetail" + } + }, + "type": "object" + }, + "PromptConfiguration": { + "additionalProperties": false, + "description": "BasePromptConfiguration per Prompt Type.", + "properties": { + "AdditionalModelRequestFields": { + "$ref": "#/definitions/AdditionalModelRequestFields" + }, + "BasePromptTemplate": { + "description": "Base Prompt Template.", + "maxLength": 100000, + "minLength": 1, + "type": "string" + }, + "FoundationModel": { + "$ref": "#/definitions/FoundationModel" + }, + "InferenceConfiguration": { + "$ref": "#/definitions/InferenceConfiguration" + }, + "ParserMode": { + "$ref": "#/definitions/CreationMode" + }, + "PromptCreationMode": { + "$ref": "#/definitions/CreationMode" + }, + "PromptState": { + "$ref": "#/definitions/PromptState" + }, + "PromptType": { + "$ref": "#/definitions/PromptType" + } + }, + "type": "object" + }, + "PromptOverrideConfiguration": { + "additionalProperties": false, + "description": "Configuration for prompt override.", + "properties": { + "OverrideLambda": { + "description": "ARN of a Lambda.", + "maxLength": 2048, + "pattern": "^arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-_\\.]+(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", + "type": "string" + }, + "PromptConfigurations": { + "description": "List of BasePromptConfiguration", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PromptConfiguration" + }, + "maxItems": 10, + "type": "array" + } + }, + "required": [ + "PromptConfigurations" + ], + "type": "object" + }, + "PromptState": { + "description": "Prompt State.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "PromptType": { + "description": "Prompt Type.", + "enum": [ + "PRE_PROCESSING", + "ORCHESTRATION", + "POST_PROCESSING", + "ROUTING_CLASSIFIER", + "MEMORY_SUMMARIZATION", + "KNOWLEDGE_BASE_RESPONSE_GENERATION" + ], + "type": "string" + }, + "RelayConversationHistory": { + "description": "Relay conversation history state", + "enum": [ + "TO_COLLABORATOR", + "DISABLED" + ], + "type": "string" + }, + "RequireConfirmation": { + "description": "ENUM to check if action requires user confirmation", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "S3Identifier": { + "additionalProperties": false, + "description": "The identifier for the S3 resource.", + "properties": { + "S3BucketName": { + "description": "A bucket in S3.", + "maxLength": 63, + "minLength": 3, + "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", + "type": "string" + }, + "S3ObjectKey": { + "description": "A object key in S3.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[\\.\\-\\!\\*\\_\\'\\(\\)a-zA-Z0-9][\\.\\-\\!\\*\\_\\'\\(\\)\\/a-zA-Z0-9]*$", + "type": "string" + } + }, + "type": "object" + }, + "SessionSummaryConfiguration": { + "additionalProperties": false, + "description": "Configuration for Session Summarization", + "properties": { + "MaxRecentSessions": { + "description": "Maximum number of Sessions to Summarize", + "type": "number" + } + }, + "type": "object" + }, + "TagsMap": { + "additionalProperties": false, + "description": "A map of tag keys and values", + "patternProperties": { + "^[a-zA-Z0-9\\s._:/=+@-]*$": { + "description": "Value of a tag", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + } + }, + "type": "object" + }, + "Type": { + "description": "Parameter Type", + "enum": [ + "string", + "number", + "integer", + "boolean", + "array" + ], + "type": "string" + } + }, + "description": "Definition of AWS::Bedrock::Agent Resource Type", + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateAgent", + "bedrock:GetAgent", + "bedrock:PrepareAgent", + "bedrock:GetAgentKnowledgeBase", + "bedrock:AssociateAgentKnowledgeBase", + "bedrock:ListAgentKnowledgeBases", + "bedrock:CreateAgentActionGroup", + "bedrock:GetAgentActionGroup", + "bedrock:ListAgentActionGroups", + "bedrock:TagResource", + "bedrock:ListTagsForResource", + "bedrock:CreateGuardrail", + "bedrock:CreateGuardrailVersion", + "bedrock:GetGuardrail", + "bedrock:AssociateAgentCollaborator", + "bedrock:GetAgentCollaborator", + "bedrock:ListAgentCollaborators", + "iam:PassRole", + "kms:GenerateDataKeyWithoutPlainText", + "kms:ReEncryptFrom", + "kms:ReEncryptTo", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + }, + "delete": { + "permissions": [ + "bedrock:GetAgent", + "bedrock:DeleteAgent", + "bedrock:DeleteGuardrail", + "bedrock:GetGuardrail", + "kms:Decrypt", + "kms:Encrypt", + "kms:GenerateDataKey" + ] + }, + "list": { + "permissions": [ + "bedrock:ListAgents", + "bedrock:ListGuardrails" + ] + }, + "read": { + "permissions": [ + "bedrock:GetAgent", + "bedrock:GetAgentActionGroup", + "bedrock:ListAgentActionGroups", + "bedrock:GetAgentKnowledgeBase", + "bedrock:ListAgentKnowledgeBases", + "bedrock:ListTagsForResource", + "bedrock:GetGuardrail", + "bedrock:GetAgentCollaborator", + "bedrock:ListAgentCollaborators", + "kms:Decrypt", + "kms:GenerateDataKey", + "kms:Encrypt" + ] + }, + "update": { + "permissions": [ + "bedrock:GetAgent", + "bedrock:UpdateAgent", + "bedrock:PrepareAgent", + "bedrock:GetAgentKnowledgeBase", + "bedrock:UpdateAgentKnowledgeBase", + "bedrock:AssociateAgentKnowledgeBase", + "bedrock:DisassociateAgentKnowledgeBase", + "bedrock:ListAgentKnowledgeBases", + "bedrock:CreateAgentActionGroup", + "bedrock:GetAgentActionGroup", + "bedrock:UpdateAgentActionGroup", + "bedrock:DeleteAgentActionGroup", + "bedrock:ListAgentActionGroups", + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource", + "bedrock:UpdateGuardrail", + "bedrock:GetGuardrail", + "bedrock:AssociateAgentCollaborator", + "bedrock:GetAgentCollaborator", + "bedrock:ListAgentCollaborators", + "bedrock:DisassociateAgentCollaborator", + "bedrock:UpdateAgentCollaborator", + "kms:Decrypt", + "kms:Encrypt", + "kms:GenerateDataKey", + "kms:GenerateDataKeyWithoutPlainText", + "kms:ReEncryptFrom", + "kms:ReEncryptTo", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/AgentId" + ], + "properties": { + "ActionGroups": { + "description": "List of ActionGroups", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AgentActionGroup" + }, + "type": "array" + }, + "AgentArn": { + "description": "Arn representation of the Agent.", + "maxLength": 2048, + "pattern": "^arn:aws(|-cn|-us-gov):bedrock:[a-z0-9-]{1,20}:[0-9]{12}:agent/[0-9a-zA-Z]{10}$", + "type": "string" + }, + "AgentCollaboration": { + "$ref": "#/definitions/AgentCollaboration" + }, + "AgentCollaborators": { + "description": "List of Agent Collaborators", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AgentCollaborator" + }, + "type": "array" + }, + "AgentId": { + "description": "Identifier for a resource.", + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "AgentName": { + "description": "Name for a resource.", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "AgentResourceRoleArn": { + "description": "ARN of a IAM role.", + "maxLength": 2048, + "type": "string" + }, + "AgentStatus": { + "$ref": "#/definitions/AgentStatus" + }, + "AgentVersion": { + "description": "Draft Agent Version.", + "maxLength": 5, + "minLength": 5, + "pattern": "^DRAFT$", + "type": "string" + }, + "AutoPrepare": { + "default": false, + "description": "Specifies whether to automatically prepare after creating or updating the agent.", + "type": "boolean" + }, + "CreatedAt": { + "description": "Time Stamp.", + "format": "date-time", + "type": "string" + }, + "CustomOrchestration": { + "$ref": "#/definitions/CustomOrchestration" + }, + "CustomerEncryptionKeyArn": { + "description": "A KMS key ARN", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", + "type": "string" + }, + "Description": { + "description": "Description of the Resource.", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "FailureReasons": { + "description": "Failure Reasons for Error.", + "insertionOrder": false, + "items": { + "description": "Failure Reason for Error.", + "maxLength": 2048, + "type": "string" + }, + "maxItems": 2048, + "type": "array" + }, + "FoundationModel": { + "$ref": "#/definitions/FoundationModel" + }, + "GuardrailConfiguration": { + "$ref": "#/definitions/GuardrailConfiguration" + }, + "IdleSessionTTLInSeconds": { + "description": "Max Session Time.", + "maximum": 3600, + "minimum": 60, + "type": "number" + }, + "Instruction": { + "description": "Instruction for the agent.", + "minLength": 40, + "type": "string" + }, + "KnowledgeBases": { + "description": "List of Agent Knowledge Bases", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AgentKnowledgeBase" + }, + "type": "array" + }, + "MemoryConfiguration": { + "$ref": "#/definitions/MemoryConfiguration" + }, + "OrchestrationType": { + "$ref": "#/definitions/OrchestrationType" + }, + "PreparedAt": { + "description": "Time Stamp.", + "format": "date-time", + "type": "string" + }, + "PromptOverrideConfiguration": { + "$ref": "#/definitions/PromptOverrideConfiguration" + }, + "RecommendedActions": { + "description": "The recommended actions users can take to resolve an error in failureReasons.", + "insertionOrder": false, + "items": { + "description": "The recommended action users can take to resolve an error in failureReasons.", + "maxLength": 2048, + "type": "string" + }, + "maxItems": 2048, + "type": "array" + }, + "SkipResourceInUseCheckOnDelete": { + "default": false, + "description": "Specifies whether to allow deleting agent while it is in use.", + "type": "boolean" + }, + "Tags": { + "$ref": "#/definitions/TagsMap" + }, + "TestAliasTags": { + "$ref": "#/definitions/TagsMap" + }, + "UpdatedAt": { + "description": "Time Stamp.", + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AgentArn", + "/properties/AgentId", + "/properties/AgentStatus", + "/properties/AgentVersion", + "/properties/CreatedAt", + "/properties/FailureReasons", + "/properties/PreparedAt", + "/properties/RecommendedActions", + "/properties/UpdatedAt" + ], + "required": [ + "AgentName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Bedrock::Agent", + "writeOnlyProperties": [ + "/properties/AutoPrepare", + "/properties/SkipResourceInUseCheckOnDelete", + "/properties/ActionGroups/*/SkipResourceInUseCheckOnDelete" + ] +} diff --git a/src/schema/aws-bedrock-agentalias.json b/src/schema/aws-bedrock-agentalias.json index 00a8e5b4..537d5e8e 100644 --- a/src/schema/aws-bedrock-agentalias.json +++ b/src/schema/aws-bedrock-agentalias.json @@ -1,217 +1,222 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/AgentAliasArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AgentId" - ], - "definitions": { - "AgentAliasHistoryEvent": { - "additionalProperties": false, - "description": "History event for an alias for an Agent.", - "properties": { - "EndDate": { - "description": "Time Stamp.", - "type": "string" - }, - "RoutingConfiguration": { - "description": "Routing configuration for an Agent alias.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AgentAliasRoutingConfigurationListItem" - }, - "maxItems": 1, - "type": "array" - }, - "StartDate": { - "description": "Time Stamp.", - "type": "string" - } - }, - "type": "object" - }, - "AgentAliasRoutingConfigurationListItem": { - "additionalProperties": false, - "description": "Details about the routing configuration for an Agent alias.", - "properties": { - "AgentVersion": { - "description": "Agent Version.", - "maxLength": 5, - "minLength": 1, - "pattern": "^(DRAFT|[0-9]{0,4}[1-9][0-9]{0,4})$", - "type": "string" - } - }, - "required": [ - "AgentVersion" - ], - "type": "object" - }, - "AgentAliasStatus": { - "description": "The statuses an Agent Alias can be in.", - "enum": [ - "CREATING", - "PREPARED", - "FAILED", - "UPDATING", - "DELETING" - ], - "type": "string" - }, - "TagsMap": { - "additionalProperties": false, - "description": "A map of tag keys and values", - "patternProperties": { - "^[a-zA-Z0-9\\s._:/=+@-]*$": { - "description": "Value of a tag", - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::Bedrock::AgentAlias Resource Type", - "handlers": { - "create": { - "permissions": [ - "bedrock:PrepareAgent", - "bedrock:GetAgent", - "bedrock:CreateAgentAlias", - "bedrock:TagResource", - "bedrock:GetAgentAlias", - "bedrock:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "bedrock:DeleteAgentAlias" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "AgentId": { - "$ref": "resource-schema.json#/properties/AgentId" - } - }, - "required": [ - "AgentId" - ] - }, - "permissions": [ - "bedrock:ListAgentAliases" - ] - }, - "read": { - "permissions": [ - "bedrock:GetAgentAlias", - "bedrock:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "bedrock:PrepareAgent", - "bedrock:GetAgent", - "bedrock:UpdateAgentAlias", - "bedrock:TagResource", - "bedrock:UntagResource", - "bedrock:GetAgentAlias", - "bedrock:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AgentId", - "/properties/AgentAliasId" - ], - "properties": { - "AgentAliasArn": { - "description": "Arn representation of the Agent Alias.", - "maxLength": 2048, - "pattern": "^arn:aws(|-cn|-us-gov):bedrock:[a-z0-9-]{1,20}:[0-9]{12}:agent-alias/[0-9a-zA-Z]{10}/[0-9a-zA-Z]{10}$", - "type": "string" - }, - "AgentAliasHistoryEvents": { - "description": "The list of history events for an alias for an Agent.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AgentAliasHistoryEvent" - }, - "maxItems": 10, - "type": "array" - }, - "AgentAliasId": { - "description": "Id for an Agent Alias generated at the server side.", - "maxLength": 10, - "minLength": 10, - "pattern": "^(\\bTSTALIASID\\b|[0-9a-zA-Z]+)$", - "type": "string" - }, - "AgentAliasName": { - "description": "Name for a resource.", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - }, - "AgentAliasStatus": { - "$ref": "#/definitions/AgentAliasStatus" - }, - "AgentId": { - "description": "Identifier for a resource.", - "pattern": "^[0-9a-zA-Z]{10}$", - "type": "string" - }, - "CreatedAt": { - "description": "Time Stamp.", - "type": "string" - }, - "Description": { - "description": "Description of the Resource.", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "RoutingConfiguration": { - "description": "Routing configuration for an Agent alias.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AgentAliasRoutingConfigurationListItem" - }, - "maxItems": 1, - "type": "array" - }, - "Tags": { - "$ref": "#/definitions/TagsMap" - }, - "UpdatedAt": { - "description": "Time Stamp.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AgentAliasArn", - "/properties/AgentAliasHistoryEvents", - "/properties/AgentAliasId", - "/properties/AgentAliasStatus", - "/properties/CreatedAt", - "/properties/UpdatedAt" - ], - "required": [ - "AgentAliasName", - "AgentId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-agents", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Bedrock::AgentAlias" -} +{ + "additionalIdentifiers": [ + [ + "/properties/AgentAliasArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AgentId" + ], + "definitions": { + "AgentAliasHistoryEvent": { + "additionalProperties": false, + "description": "History event for an alias for an Agent.", + "properties": { + "EndDate": { + "description": "Time Stamp.", + "type": "string" + }, + "RoutingConfiguration": { + "description": "Routing configuration for an Agent alias.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AgentAliasRoutingConfigurationListItem" + }, + "maxItems": 1, + "type": "array" + }, + "StartDate": { + "description": "Time Stamp.", + "type": "string" + } + }, + "type": "object" + }, + "AgentAliasRoutingConfigurationListItem": { + "additionalProperties": false, + "description": "Details about the routing configuration for an Agent alias.", + "properties": { + "AgentVersion": { + "description": "Agent Version.", + "maxLength": 5, + "minLength": 1, + "pattern": "^(DRAFT|[0-9]{0,4}[1-9][0-9]{0,4})$", + "type": "string" + } + }, + "required": [ + "AgentVersion" + ], + "type": "object" + }, + "AgentAliasStatus": { + "description": "The statuses an Agent Alias can be in.", + "enum": [ + "CREATING", + "PREPARED", + "FAILED", + "UPDATING", + "DELETING" + ], + "type": "string" + }, + "TagsMap": { + "additionalProperties": false, + "description": "A map of tag keys and values", + "patternProperties": { + "^[a-zA-Z0-9\\s._:/=+@-]*$": { + "description": "Value of a tag", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::Bedrock::AgentAlias Resource Type", + "handlers": { + "create": { + "permissions": [ + "bedrock:PrepareAgent", + "bedrock:GetAgent", + "bedrock:CreateAgentAlias", + "bedrock:TagResource", + "bedrock:GetAgentAlias", + "bedrock:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeleteAgentAlias" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "AgentId": { + "$ref": "resource-schema.json#/properties/AgentId" + } + }, + "required": [ + "AgentId" + ] + }, + "permissions": [ + "bedrock:ListAgentAliases" + ] + }, + "read": { + "permissions": [ + "bedrock:GetAgentAlias", + "bedrock:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "bedrock:PrepareAgent", + "bedrock:GetAgent", + "bedrock:UpdateAgentAlias", + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:GetAgentAlias", + "bedrock:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AgentId", + "/properties/AgentAliasId" + ], + "properties": { + "AgentAliasArn": { + "description": "Arn representation of the Agent Alias.", + "maxLength": 2048, + "pattern": "^arn:aws(|-cn|-us-gov):bedrock:[a-z0-9-]{1,20}:[0-9]{12}:agent-alias/[0-9a-zA-Z]{10}/[0-9a-zA-Z]{10}$", + "type": "string" + }, + "AgentAliasHistoryEvents": { + "description": "The list of history events for an alias for an Agent.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AgentAliasHistoryEvent" + }, + "maxItems": 10, + "type": "array" + }, + "AgentAliasId": { + "description": "Id for an Agent Alias generated at the server side.", + "maxLength": 10, + "minLength": 10, + "pattern": "^(\\bTSTALIASID\\b|[0-9a-zA-Z]+)$", + "type": "string" + }, + "AgentAliasName": { + "description": "Name for a resource.", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "AgentAliasStatus": { + "$ref": "#/definitions/AgentAliasStatus" + }, + "AgentId": { + "description": "Identifier for a resource.", + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "CreatedAt": { + "description": "Time Stamp.", + "type": "string" + }, + "Description": { + "description": "Description of the Resource.", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "RoutingConfiguration": { + "description": "Routing configuration for an Agent alias.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AgentAliasRoutingConfigurationListItem" + }, + "maxItems": 1, + "type": "array" + }, + "Tags": { + "$ref": "#/definitions/TagsMap" + }, + "UpdatedAt": { + "description": "Time Stamp.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AgentAliasArn", + "/properties/AgentAliasHistoryEvents", + "/properties/AgentAliasId", + "/properties/AgentAliasStatus", + "/properties/CreatedAt", + "/properties/UpdatedAt" + ], + "required": [ + "AgentAliasName", + "AgentId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-agents", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Bedrock::AgentAlias" +} diff --git a/src/schema/aws-bedrock-applicationinferenceprofile.json b/src/schema/aws-bedrock-applicationinferenceprofile.json index 224cbc83..95534c61 100644 --- a/src/schema/aws-bedrock-applicationinferenceprofile.json +++ b/src/schema/aws-bedrock-applicationinferenceprofile.json @@ -1,182 +1,235 @@ { - "typeName" : "AWS::Bedrock::ApplicationInferenceProfile", - "description" : "Definition of AWS::Bedrock::ApplicationInferenceProfile Resource Type", - "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-application-inference-profile", - "definitions" : { - "InferenceProfileModelSource" : { - "description" : "Various ways to encode a list of models in a CreateInferenceProfile request", - "oneOf" : [ { - "type" : "object", - "title" : "CopyFrom", - "properties" : { - "CopyFrom" : { - "type" : "string", - "maxLength" : 2048, - "minLength" : 1, - "pattern" : "^arn:aws(|-us-gov|-cn|-iso|-iso-b):bedrock:(|[0-9a-z-]{0,20}):(|[0-9]{12}):(inference-profile|foundation-model)/[a-zA-Z0-9-:.]+$", - "description" : "Source arns for a custom inference profile to copy its regional load balancing config from. This\ncan either be a foundation model or predefined inference profile ARN." - } - }, - "required" : [ "CopyFrom" ], - "additionalProperties" : false - } ] - }, - "InferenceProfileStatus" : { - "type" : "string", - "description" : "Status of the Inference Profile", - "enum" : [ "ACTIVE" ] - }, - "InferenceProfileType" : { - "type" : "string", - "description" : "Type of the Inference Profile", - "enum" : [ "APPLICATION", "SYSTEM_DEFINED" ] - }, - "InferenceProfileModel" : { - "type" : "object", - "description" : "Model configuration", - "properties" : { - "ModelArn" : { - "type" : "string", - "pattern" : "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}::foundation-model/[a-z0-9-]{1,63}[.]{1}([a-z0-9-]{1,63}[.]){0,2}[a-z0-9-]{1,63}([:][a-z0-9-]{1,63}){0,2}$", - "description" : "ARN for Foundation Models in Bedrock. These models can be used as base models for model customization jobs" + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description", + "/properties/InferenceProfileName", + "/properties/ModelSource" + ], + "definitions": { + "InferenceProfileModel": { + "additionalProperties": false, + "description": "Model configuration", + "properties": { + "ModelArn": { + "description": "ARN for Foundation Models in Bedrock. These models can be used as base models for model customization jobs", + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}::foundation-model/[a-z0-9-]{1,63}[.]{1}([a-z0-9-]{1,63}[.]){0,2}[a-z0-9-]{1,63}([:][a-z0-9-]{1,63}){0,2}$", + "type": "string" } }, - "additionalProperties" : false - }, - "Tag" : { - "type" : "object", - "description" : "Definition of the key/value pair for a tag", - "properties" : { - "Key" : { - "type" : "string", - "maxLength" : 128, - "minLength" : 1, - "pattern" : "^[a-zA-Z0-9\\s._:/=+@-]*$", - "description" : "Tag Key" + "type": "object" + }, + "InferenceProfileModelSource": { + "description": "Various ways to encode a list of models in a CreateInferenceProfile request", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "CopyFrom": { + "description": "Source arns for a custom inference profile to copy its regional load balancing config from. This\ncan either be a foundation model or predefined inference profile ARN.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(|-us-gov|-cn|-iso|-iso-b):bedrock:(|[0-9a-z-]{0,20}):(|[0-9]{12}):(inference-profile|foundation-model)/[a-zA-Z0-9-:.]+$", + "type": "string" + } + }, + "required": [ + "CopyFrom" + ], + "title": "CopyFrom", + "type": "object" + } + ] + }, + "InferenceProfileStatus": { + "description": "Status of the Inference Profile", + "enum": [ + "ACTIVE" + ], + "type": "string" + }, + "InferenceProfileType": { + "description": "Type of the Inference Profile", + "enum": [ + "APPLICATION", + "SYSTEM_DEFINED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "Definition of the key/value pair for a tag", + "properties": { + "Key": { + "description": "Tag Key", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" }, - "Value" : { - "type" : "string", - "maxLength" : 256, - "minLength" : 0, - "pattern" : "^[a-zA-Z0-9\\s._:/=+@-]*$", - "description" : "Tag Value" + "Value": { + "description": "Tag Value", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" } }, - "required" : [ "Key", "Value" ], - "additionalProperties" : false - }, - "Unit" : { - "type" : "object", - "additionalProperties" : false + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Unit": { + "additionalProperties": false, + "type": "object" + } + }, + "description": "Definition of AWS::Bedrock::ApplicationInferenceProfile Resource Type", + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateInferenceProfile", + "bedrock:GetInferenceProfile", + "bedrock:TagResource", + "bedrock:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeleteInferenceProfile", + "bedrock:GetInferenceProfile" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Type": { + "$ref": "resource-schema.json#/properties/Type" + } + } + }, + "permissions": [ + "bedrock:ListInferenceProfiles" + ] + }, + "read": { + "permissions": [ + "bedrock:GetInferenceProfile", + "bedrock:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "bedrock:GetInferenceProfile", + "bedrock:ListTagsForResource", + "bedrock:TagResource", + "bedrock:UntagResource" + ] } }, - "properties" : { - "CreatedAt" : { - "type" : "string", - "description" : "Time Stamp", - "format" : "date-time" - }, - "Description" : { - "type" : "string", - "maxLength" : 200, - "minLength" : 1, - "pattern" : "^([0-9a-zA-Z:.][ _-]?)+$", - "description" : "Description of the inference profile" - }, - "InferenceProfileArn" : { - "type" : "string", - "maxLength" : 2048, - "minLength" : 1, - "pattern" : "^arn:aws(|-us-gov|-cn|-iso|-iso-b):bedrock:(|[0-9a-z-]{0,20}):(|[0-9]{12}):(inference-profile|application-inference-profile)/[a-zA-Z0-9-:.]+$" - }, - "InferenceProfileId" : { - "type" : "string", - "maxLength" : 64, - "minLength" : 1, - "pattern" : "^[a-zA-Z0-9-:.]+$" - }, - "InferenceProfileIdentifier" : { - "type" : "string", - "maxLength" : 2048, - "minLength" : 1, - "pattern" : "^(arn:aws(|-us-gov|-cn|-iso|-iso-b):bedrock:(|[0-9a-z-]{0,20}):(|[0-9]{12}):(inference-profile|application-inference-profile)/)?[a-zA-Z0-9-:.]+$", - "description" : "Inference profile identifier. Supports both system-defined inference profile ids, and inference profile ARNs." - }, - "InferenceProfileName" : { - "type" : "string", - "maxLength" : 64, - "minLength" : 1, - "pattern" : "^([0-9a-zA-Z][ _-]?)+$" - }, - "ModelSource" : { - "$ref" : "#/definitions/InferenceProfileModelSource" - }, - "Models" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/InferenceProfileModel" + "primaryIdentifier": [ + "/properties/InferenceProfileIdentifier" + ], + "properties": { + "CreatedAt": { + "description": "Time Stamp", + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "Description of the inference profile", + "maxLength": 200, + "minLength": 1, + "pattern": "^([0-9a-zA-Z:.][ _-]?)+$", + "type": "string" + }, + "InferenceProfileArn": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(|-us-gov|-cn|-iso|-iso-b):bedrock:(|[0-9a-z-]{0,20}):(|[0-9]{12}):(inference-profile|application-inference-profile)/[a-zA-Z0-9-:.]+$", + "type": "string" + }, + "InferenceProfileId": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-:.]+$", + "type": "string" + }, + "InferenceProfileIdentifier": { + "description": "Inference profile identifier. Supports both system-defined inference profile ids, and inference profile ARNs.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^(arn:aws(|-us-gov|-cn|-iso|-iso-b):bedrock:(|[0-9a-z-]{0,20}):(|[0-9]{12}):(inference-profile|application-inference-profile)/)?[a-zA-Z0-9-:.]+$", + "type": "string" + }, + "InferenceProfileName": { + "maxLength": 64, + "minLength": 1, + "pattern": "^([0-9a-zA-Z][ _-]?)+$", + "type": "string" + }, + "ModelSource": { + "$ref": "#/definitions/InferenceProfileModelSource" + }, + "Models": { + "description": "List of model configuration", + "items": { + "$ref": "#/definitions/InferenceProfileModel" }, - "maxItems" : 5, - "minItems" : 1, - "description" : "List of model configuration" + "maxItems": 5, + "minItems": 1, + "type": "array" }, - "Status" : { - "$ref" : "#/definitions/InferenceProfileStatus" + "Status": { + "$ref": "#/definitions/InferenceProfileStatus" }, - "Tags" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Tag" + "Tags": { + "description": "List of Tags", + "items": { + "$ref": "#/definitions/Tag" }, - "maxItems" : 200, - "minItems" : 0, - "description" : "List of Tags" + "maxItems": 200, + "minItems": 0, + "type": "array" }, - "Type" : { - "$ref" : "#/definitions/InferenceProfileType" + "Type": { + "$ref": "#/definitions/InferenceProfileType" }, - "UpdatedAt" : { - "type" : "string", - "description" : "Time Stamp", - "format" : "date-time" - } - }, - "required" : [ "InferenceProfileName" ], - "readOnlyProperties" : [ "/properties/Models", "/properties/InferenceProfileArn", "/properties/InferenceProfileId", "/properties/InferenceProfileIdentifier", "/properties/Status", "/properties/Type", "/properties/CreatedAt", "/properties/UpdatedAt" ], - "writeOnlyProperties" : [ "/properties/ModelSource" ], - "createOnlyProperties" : [ "/properties/Description", "/properties/InferenceProfileName", "/properties/ModelSource" ], - "primaryIdentifier" : [ "/properties/InferenceProfileIdentifier" ], - "handlers" : { - "create" : { - "permissions" : [ "bedrock:CreateInferenceProfile", "bedrock:GetInferenceProfile", "bedrock:TagResource", "bedrock:ListTagsForResource" ] - }, - "read" : { - "permissions" : [ "bedrock:GetInferenceProfile", "bedrock:ListTagsForResource" ] - }, - "update" : { - "permissions" : [ "bedrock:GetInferenceProfile", "bedrock:ListTagsForResource", "bedrock:TagResource", "bedrock:UntagResource" ] - }, - "delete" : { - "permissions" : [ "bedrock:DeleteInferenceProfile", "bedrock:GetInferenceProfile" ] - }, - "list" : { - "handlerSchema" : { - "properties" : { - "Type" : { - "$ref" : "resource-schema.json#/properties/Type" - } - } - }, - "permissions" : [ "bedrock:ListInferenceProfiles" ] + "UpdatedAt": { + "description": "Time Stamp", + "format": "date-time", + "type": "string" } }, - "tagging" : { - "cloudFormationSystemTags" : true, - "tagOnCreate" : true, - "tagProperty" : "/properties/Tags", - "tagUpdatable" : true, - "taggable" : true, - "permissions" : [ "bedrock:TagResource", "bedrock:UntagResource", "bedrock:ListTagsForResource" ] + "readOnlyProperties": [ + "/properties/Models", + "/properties/InferenceProfileArn", + "/properties/InferenceProfileId", + "/properties/InferenceProfileIdentifier", + "/properties/Status", + "/properties/Type", + "/properties/CreatedAt", + "/properties/UpdatedAt" + ], + "required": [ + "InferenceProfileName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-application-inference-profile", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true }, - "additionalProperties" : false -} \ No newline at end of file + "typeName": "AWS::Bedrock::ApplicationInferenceProfile", + "writeOnlyProperties": [ + "/properties/ModelSource" + ] +} diff --git a/src/schema/aws-bedrock-blueprint.json b/src/schema/aws-bedrock-blueprint.json new file mode 100644 index 00000000..e03ca7c5 --- /dev/null +++ b/src/schema/aws-bedrock-blueprint.json @@ -0,0 +1,184 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BlueprintName", + "/properties/Type" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Definition of the key/value pair for a tag", + "properties": { + "Key": { + "description": "Key for the tag", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + }, + "Value": { + "description": "Value for the tag", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Bedrock::Blueprint Resource Type", + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateBlueprint", + "bedrock:GetBlueprint", + "bedrock:TagResource", + "bedrock:ListTagsForResource", + "kms:DescribeKey", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeleteBlueprint", + "bedrock:GetBlueprint", + "kms:DescribeKey", + "kms:Decrypt" + ] + }, + "list": { + "permissions": [ + "bedrock:ListBlueprints" + ] + }, + "read": { + "permissions": [ + "bedrock:GetBlueprint", + "bedrock:ListTagsForResource", + "kms:DescribeKey", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "bedrock:UpdateBlueprint", + "bedrock:GetBlueprint", + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource", + "kms:DescribeKey", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/BlueprintArn" + ], + "properties": { + "BlueprintArn": { + "description": "ARN of a Blueprint", + "maxLength": 128, + "pattern": "^arn:aws(|-cn|-us-gov):bedrock:[a-zA-Z0-9-]*:(aws|[0-9]{12}):blueprint/(bedrock-data-automation-public-[a-zA-Z0-9-_]{1,30}|[a-zA-Z0-9-]{12,36})$", + "type": "string" + }, + "BlueprintName": { + "description": "Name of the Blueprint", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-_]+$", + "type": "string" + }, + "BlueprintStage": { + "description": "Stage of the Blueprint", + "enum": [ + "DEVELOPMENT", + "LIVE" + ], + "type": "string" + }, + "CreationTime": { + "description": "Creation timestamp", + "format": "date-time", + "type": "string" + }, + "KmsEncryptionContext": { + "additionalProperties": false, + "dependencies": { + "KmsEncryptionContext": [ + "KmsKeyId" + ] + }, + "description": "KMS encryption context", + "patternProperties": { + "^.*$": { + "type": "string" + } + }, + "type": "object" + }, + "KmsKeyId": { + "description": "KMS key identifier", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "LastModifiedTime": { + "description": "Last modified timestamp", + "format": "date-time", + "type": "string" + }, + "Schema": { + "description": "Schema of the blueprint", + "type": "object" + }, + "Tags": { + "description": "List of Tags", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Type": { + "description": "Modality Type", + "enum": [ + "DOCUMENT", + "IMAGE" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/BlueprintArn", + "/properties/BlueprintStage", + "/properties/CreationTime", + "/properties/LastModifiedTime" + ], + "required": [ + "BlueprintName", + "Schema", + "Type" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Bedrock::Blueprint" +} diff --git a/src/schema/aws-bedrock-dataautomationproject.json b/src/schema/aws-bedrock-dataautomationproject.json new file mode 100644 index 00000000..9cb5927c --- /dev/null +++ b/src/schema/aws-bedrock-dataautomationproject.json @@ -0,0 +1,695 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ProjectName" + ], + "definitions": { + "AudioExtractionCategory": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/State" + }, + "Types": { + "items": { + "$ref": "#/definitions/AudioExtractionCategoryType" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "State" + ], + "type": "object" + }, + "AudioExtractionCategoryType": { + "enum": [ + "AUDIO_CONTENT_MODERATION", + "TRANSCRIPT", + "TOPIC_CONTENT_MODERATION" + ], + "type": "string" + }, + "AudioStandardExtraction": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/AudioExtractionCategory" + } + }, + "required": [ + "Category" + ], + "type": "object" + }, + "AudioStandardGenerativeField": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/State" + }, + "Types": { + "items": { + "$ref": "#/definitions/AudioStandardGenerativeFieldType" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "State" + ], + "type": "object" + }, + "AudioStandardGenerativeFieldType": { + "enum": [ + "AUDIO_SUMMARY", + "IAB", + "TOPIC_SUMMARY" + ], + "type": "string" + }, + "AudioStandardOutputConfiguration": { + "additionalProperties": false, + "properties": { + "Extraction": { + "$ref": "#/definitions/AudioStandardExtraction" + }, + "GenerativeField": { + "$ref": "#/definitions/AudioStandardGenerativeField" + } + }, + "type": "object" + }, + "BlueprintItem": { + "additionalProperties": false, + "properties": { + "BlueprintArn": { + "description": "ARN of a Blueprint", + "maxLength": 128, + "pattern": "^arn:aws(|-cn|-us-gov):bedrock:[a-zA-Z0-9-]*:(aws|[0-9]{12}):blueprint/(bedrock-data-automation-public-[a-zA-Z0-9-_]{1,30}|[a-zA-Z0-9-]{12,36})$", + "type": "string" + }, + "BlueprintStage": { + "$ref": "#/definitions/BlueprintStage" + }, + "BlueprintVersion": { + "description": "Blueprint Version", + "maxLength": 128, + "minLength": 1, + "pattern": "^[0-9]*$", + "type": "string" + } + }, + "required": [ + "BlueprintArn" + ], + "type": "object" + }, + "BlueprintStage": { + "description": "Stage of the Blueprint", + "enum": [ + "DEVELOPMENT", + "LIVE" + ], + "type": "string" + }, + "CustomOutputConfiguration": { + "additionalProperties": false, + "description": "Custom output configuration", + "properties": { + "Blueprints": { + "items": { + "$ref": "#/definitions/BlueprintItem" + }, + "type": "array" + } + }, + "type": "object" + }, + "DataAutomationProjectStage": { + "description": "Stage of the Project", + "enum": [ + "DEVELOPMENT", + "LIVE" + ], + "type": "string" + }, + "DataAutomationProjectStatus": { + "enum": [ + "COMPLETED", + "IN_PROGRESS", + "FAILED" + ], + "type": "string" + }, + "DocumentBoundingBox": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/State" + } + }, + "required": [ + "State" + ], + "type": "object" + }, + "DocumentExtractionGranularity": { + "additionalProperties": false, + "properties": { + "Types": { + "items": { + "$ref": "#/definitions/DocumentExtractionGranularityType" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "DocumentExtractionGranularityType": { + "enum": [ + "DOCUMENT", + "PAGE", + "ELEMENT", + "WORD", + "LINE" + ], + "type": "string" + }, + "DocumentOutputAdditionalFileFormat": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/State" + } + }, + "required": [ + "State" + ], + "type": "object" + }, + "DocumentOutputFormat": { + "additionalProperties": false, + "properties": { + "AdditionalFileFormat": { + "$ref": "#/definitions/DocumentOutputAdditionalFileFormat" + }, + "TextFormat": { + "$ref": "#/definitions/DocumentOutputTextFormat" + } + }, + "required": [ + "AdditionalFileFormat", + "TextFormat" + ], + "type": "object" + }, + "DocumentOutputTextFormat": { + "additionalProperties": false, + "properties": { + "Types": { + "items": { + "$ref": "#/definitions/DocumentOutputTextFormatType" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "DocumentOutputTextFormatType": { + "enum": [ + "PLAIN_TEXT", + "MARKDOWN", + "HTML", + "CSV" + ], + "type": "string" + }, + "DocumentOverrideConfiguration": { + "additionalProperties": false, + "properties": { + "Splitter": { + "$ref": "#/definitions/SplitterConfiguration" + } + }, + "type": "object" + }, + "DocumentStandardExtraction": { + "additionalProperties": false, + "properties": { + "BoundingBox": { + "$ref": "#/definitions/DocumentBoundingBox" + }, + "Granularity": { + "$ref": "#/definitions/DocumentExtractionGranularity" + } + }, + "required": [ + "BoundingBox", + "Granularity" + ], + "type": "object" + }, + "DocumentStandardGenerativeField": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/State" + } + }, + "required": [ + "State" + ], + "type": "object" + }, + "DocumentStandardOutputConfiguration": { + "additionalProperties": false, + "properties": { + "Extraction": { + "$ref": "#/definitions/DocumentStandardExtraction" + }, + "GenerativeField": { + "$ref": "#/definitions/DocumentStandardGenerativeField" + }, + "OutputFormat": { + "$ref": "#/definitions/DocumentOutputFormat" + } + }, + "type": "object" + }, + "ImageBoundingBox": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/State" + } + }, + "required": [ + "State" + ], + "type": "object" + }, + "ImageExtractionCategory": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/State" + }, + "Types": { + "items": { + "$ref": "#/definitions/ImageExtractionCategoryType" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "State" + ], + "type": "object" + }, + "ImageExtractionCategoryType": { + "enum": [ + "CONTENT_MODERATION", + "TEXT_DETECTION", + "LOGOS" + ], + "type": "string" + }, + "ImageStandardExtraction": { + "additionalProperties": false, + "properties": { + "BoundingBox": { + "$ref": "#/definitions/ImageBoundingBox" + }, + "Category": { + "$ref": "#/definitions/ImageExtractionCategory" + } + }, + "required": [ + "BoundingBox", + "Category" + ], + "type": "object" + }, + "ImageStandardGenerativeField": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/State" + }, + "Types": { + "items": { + "$ref": "#/definitions/ImageStandardGenerativeFieldType" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "State" + ], + "type": "object" + }, + "ImageStandardGenerativeFieldType": { + "enum": [ + "IMAGE_SUMMARY", + "IAB" + ], + "type": "string" + }, + "ImageStandardOutputConfiguration": { + "additionalProperties": false, + "properties": { + "Extraction": { + "$ref": "#/definitions/ImageStandardExtraction" + }, + "GenerativeField": { + "$ref": "#/definitions/ImageStandardGenerativeField" + } + }, + "type": "object" + }, + "OverrideConfiguration": { + "additionalProperties": false, + "description": "Override configuration", + "properties": { + "Document": { + "$ref": "#/definitions/DocumentOverrideConfiguration" + } + }, + "type": "object" + }, + "SplitterConfiguration": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/State" + } + }, + "type": "object" + }, + "StandardOutputConfiguration": { + "additionalProperties": false, + "description": "Standard output configuration", + "properties": { + "Audio": { + "$ref": "#/definitions/AudioStandardOutputConfiguration" + }, + "Document": { + "$ref": "#/definitions/DocumentStandardOutputConfiguration" + }, + "Image": { + "$ref": "#/definitions/ImageStandardOutputConfiguration" + }, + "Video": { + "$ref": "#/definitions/VideoStandardOutputConfiguration" + } + }, + "type": "object" + }, + "State": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "Definition of the key/value pair for a tag", + "properties": { + "Key": { + "description": "Key for the tag", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + }, + "Value": { + "description": "Value for the tag", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Unit": { + "additionalProperties": false, + "type": "object" + }, + "VideoBoundingBox": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/State" + } + }, + "required": [ + "State" + ], + "type": "object" + }, + "VideoExtractionCategory": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/State" + }, + "Types": { + "items": { + "$ref": "#/definitions/VideoExtractionCategoryType" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "State" + ], + "type": "object" + }, + "VideoExtractionCategoryType": { + "enum": [ + "CONTENT_MODERATION", + "TEXT_DETECTION", + "TRANSCRIPT", + "LOGOS" + ], + "type": "string" + }, + "VideoStandardExtraction": { + "additionalProperties": false, + "properties": { + "BoundingBox": { + "$ref": "#/definitions/VideoBoundingBox" + }, + "Category": { + "$ref": "#/definitions/VideoExtractionCategory" + } + }, + "required": [ + "BoundingBox", + "Category" + ], + "type": "object" + }, + "VideoStandardGenerativeField": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/State" + }, + "Types": { + "items": { + "$ref": "#/definitions/VideoStandardGenerativeFieldType" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "State" + ], + "type": "object" + }, + "VideoStandardGenerativeFieldType": { + "enum": [ + "VIDEO_SUMMARY", + "IAB", + "CHAPTER_SUMMARY" + ], + "type": "string" + }, + "VideoStandardOutputConfiguration": { + "additionalProperties": false, + "properties": { + "Extraction": { + "$ref": "#/definitions/VideoStandardExtraction" + }, + "GenerativeField": { + "$ref": "#/definitions/VideoStandardGenerativeField" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::Bedrock::DataAutomationProject Resource Type", + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateDataAutomationProject", + "bedrock:GetDataAutomationProject", + "bedrock:TagResource", + "bedrock:ListTagsForResource", + "kms:DescribeKey", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeleteDataAutomationProject", + "bedrock:GetDataAutomationProject", + "kms:DescribeKey", + "kms:Decrypt" + ] + }, + "list": { + "permissions": [ + "bedrock:ListDataAutomationProjects" + ] + }, + "read": { + "permissions": [ + "bedrock:GetDataAutomationProject", + "bedrock:ListTagsForResource", + "kms:DescribeKey", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "bedrock:UpdateDataAutomationProject", + "bedrock:GetDataAutomationProject", + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource", + "kms:DescribeKey", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/ProjectArn" + ], + "properties": { + "CreationTime": { + "description": "Time Stamp", + "format": "date-time", + "type": "string" + }, + "CustomOutputConfiguration": { + "$ref": "#/definitions/CustomOutputConfiguration" + }, + "KmsEncryptionContext": { + "additionalProperties": false, + "dependencies": { + "KmsEncryptionContext": [ + "KmsKeyId" + ] + }, + "description": "KMS encryption context", + "patternProperties": { + "^.*$": { + "type": "string" + } + }, + "type": "object" + }, + "KmsKeyId": { + "description": "KMS key identifier", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "LastModifiedTime": { + "description": "Time Stamp", + "format": "date-time", + "type": "string" + }, + "OverrideConfiguration": { + "$ref": "#/definitions/OverrideConfiguration" + }, + "ProjectArn": { + "description": "ARN of a DataAutomationProject", + "maxLength": 128, + "pattern": "^arn:aws(|-cn|-us-gov):bedrock:[a-zA-Z0-9-]*:(aws|[0-9]{12}):data-automation-project/[a-zA-Z0-9-]{12,36}$", + "type": "string" + }, + "ProjectDescription": { + "description": "Description of the DataAutomationProject", + "type": "string" + }, + "ProjectName": { + "description": "Name of the DataAutomationProject", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-_]+$", + "type": "string" + }, + "ProjectStage": { + "$ref": "#/definitions/DataAutomationProjectStage" + }, + "StandardOutputConfiguration": { + "$ref": "#/definitions/StandardOutputConfiguration" + }, + "Status": { + "$ref": "#/definitions/DataAutomationProjectStatus" + }, + "Tags": { + "description": "List of Tags", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/LastModifiedTime", + "/properties/ProjectArn", + "/properties/ProjectStage", + "/properties/Status" + ], + "required": [ + "ProjectName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Bedrock::DataAutomationProject" +} diff --git a/src/schema/aws-bedrock-datasource.json b/src/schema/aws-bedrock-datasource.json index af51f4db..3945840a 100644 --- a/src/schema/aws-bedrock-datasource.json +++ b/src/schema/aws-bedrock-datasource.json @@ -1,959 +1,1045 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KnowledgeBaseId", - "/properties/VectorIngestionConfiguration/ChunkingConfiguration", - "/properties/VectorIngestionConfiguration/ParsingConfiguration", - "/properties/DataSourceConfiguration/Type" - ], - "definitions": { - "BedrockFoundationModelConfiguration": { - "additionalProperties": false, - "description": "Settings for a foundation model used to parse documents for a data source.", - "properties": { - "ModelArn": { - "description": "The model's ARN.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}::foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2})|(arn:aws(|-us-gov|-cn|-iso|-iso-b):bedrock:(|[0-9a-z-]{1,20}):(|[0-9]{12}):(inference-profile|application-inference-profile)/[a-zA-Z0-9-:.]+)$", - "type": "string" - }, - "ParsingPrompt": { - "$ref": "#/definitions/ParsingPrompt" - } - }, - "required": [ - "ModelArn" - ], - "type": "object" - }, - "ChunkingConfiguration": { - "additionalProperties": false, - "description": "Details about how to chunk the documents in the data source. A chunk refers to an excerpt from a data source that is returned when the knowledge base that it belongs to is queried.", - "properties": { - "ChunkingStrategy": { - "$ref": "#/definitions/ChunkingStrategy" - }, - "FixedSizeChunkingConfiguration": { - "$ref": "#/definitions/FixedSizeChunkingConfiguration" - }, - "HierarchicalChunkingConfiguration": { - "$ref": "#/definitions/HierarchicalChunkingConfiguration" - }, - "SemanticChunkingConfiguration": { - "$ref": "#/definitions/SemanticChunkingConfiguration" - } - }, - "required": [ - "ChunkingStrategy" - ], - "type": "object" - }, - "ChunkingStrategy": { - "description": "Knowledge base can split your source data into chunks. A chunk refers to an excerpt from a data source that is returned when the knowledge base that it belongs to is queried. You have the following options for chunking your data. If you opt for NONE, then you may want to pre-process your files by splitting them up such that each file corresponds to a chunk.", - "enum": [ - "FIXED_SIZE", - "NONE", - "HIERARCHICAL", - "SEMANTIC" - ], - "type": "string" - }, - "ConfluenceCrawlerConfiguration": { - "additionalProperties": false, - "description": "The configuration of the Confluence content. For example, configuring specific types of Confluence content.", - "properties": { - "FilterConfiguration": { - "$ref": "#/definitions/CrawlFilterConfiguration" - } - }, - "type": "object" - }, - "ConfluenceDataSourceConfiguration": { - "additionalProperties": false, - "description": "The configuration information to connect to Confluence as your data source.", - "properties": { - "CrawlerConfiguration": { - "$ref": "#/definitions/ConfluenceCrawlerConfiguration" - }, - "SourceConfiguration": { - "$ref": "#/definitions/ConfluenceSourceConfiguration" - } - }, - "required": [ - "SourceConfiguration" - ], - "type": "object" - }, - "ConfluenceSourceConfiguration": { - "additionalProperties": false, - "description": "The endpoint information to connect to your Confluence data source.", - "properties": { - "AuthType": { - "description": "The supported authentication type to authenticate and connect to your Confluence instance.", - "enum": [ - "BASIC", - "OAUTH2_CLIENT_CREDENTIALS" - ], - "type": "string" - }, - "CredentialsSecretArn": { - "description": "The Amazon Resource Name of an AWS Secrets Manager secret that stores your authentication credentials for your Confluence instance URL. For more information on the key-value pairs that must be included in your secret, depending on your authentication type, see Confluence connection configuration.", - "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", - "type": "string" - }, - "HostType": { - "description": "The supported host type, whether online/cloud or server/on-premises.", - "enum": [ - "SAAS" - ], - "type": "string" - }, - "HostUrl": { - "description": "The Confluence host URL or instance URL.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://[A-Za-z0-9][^\\s]*$", - "type": "string" - } - }, - "required": [ - "HostUrl", - "HostType", - "AuthType", - "CredentialsSecretArn" - ], - "type": "object" - }, - "CrawlFilterConfiguration": { - "additionalProperties": false, - "description": "The type of filtering that you want to apply to certain objects or content of the data source. For example, the PATTERN type is regular expression patterns you can apply to filter your content.", - "properties": { - "PatternObjectFilter": { - "$ref": "#/definitions/PatternObjectFilterConfiguration" - }, - "Type": { - "description": "The crawl filter type.", - "enum": [ - "PATTERN" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "CustomTransformationConfiguration": { - "additionalProperties": false, - "description": "Settings for customizing steps in the data source content ingestion pipeline.", - "properties": { - "IntermediateStorage": { - "$ref": "#/definitions/IntermediateStorage" - }, - "Transformations": { - "description": "A list of Lambda functions that process documents.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Transformation" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "IntermediateStorage", - "Transformations" - ], - "type": "object" - }, - "DataDeletionPolicy": { - "description": "The deletion policy for the data source.", - "enum": [ - "RETAIN", - "DELETE" - ], - "type": "string" - }, - "DataSourceConfiguration": { - "additionalProperties": false, - "description": "Specifies a raw data source location to ingest.", - "oneOf": [ - { - "required": [ - "S3Configuration" - ] - }, - { - "required": [ - "ConfluenceConfiguration" - ] - }, - { - "required": [ - "SalesforceConfiguration" - ] - }, - { - "required": [ - "SharePointConfiguration" - ] - }, - { - "required": [ - "WebConfiguration" - ] - } - ], - "properties": { - "ConfluenceConfiguration": { - "$ref": "#/definitions/ConfluenceDataSourceConfiguration" - }, - "S3Configuration": { - "$ref": "#/definitions/S3DataSourceConfiguration" - }, - "SalesforceConfiguration": { - "$ref": "#/definitions/SalesforceDataSourceConfiguration" - }, - "SharePointConfiguration": { - "$ref": "#/definitions/SharePointDataSourceConfiguration" - }, - "Type": { - "$ref": "#/definitions/DataSourceType" - }, - "WebConfiguration": { - "$ref": "#/definitions/WebDataSourceConfiguration" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "DataSourceStatus": { - "description": "The status of a data source.", - "enum": [ - "AVAILABLE", - "DELETING", - "DELETE_UNSUCCESSFUL" - ], - "type": "string" - }, - "DataSourceType": { - "description": "The type of the data source location.", - "enum": [ - "S3", - "CONFLUENCE", - "SALESFORCE", - "SHAREPOINT", - "WEB" - ], - "type": "string" - }, - "FilterList": { - "description": "A set of regular expression filter patterns for a type of object.", - "insertionOrder": false, - "items": { - "description": "A list of one or more inclusion/exclusion regular expression patterns to include certain object types that adhere to the pattern. If you specify an inclusion and exclusion filter/pattern and both match a document, the exclusion filter takes precedence and the document isn't crawled.", - "maxLength": 1000, - "type": "string" - }, - "maxItems": 25, - "minItems": 1, - "type": "array" - }, - "FixedSizeChunkingConfiguration": { - "additionalProperties": false, - "description": "Configurations for when you choose fixed-size chunking. If you set the chunkingStrategy as NONE, exclude this field.", - "properties": { - "MaxTokens": { - "description": "The maximum number of tokens to include in a chunk.", - "minimum": 1, - "type": "integer" - }, - "OverlapPercentage": { - "description": "The percentage of overlap between adjacent chunks of a data source.", - "maximum": 99, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "MaxTokens", - "OverlapPercentage" - ], - "type": "object" - }, - "HierarchicalChunkingConfiguration": { - "additionalProperties": false, - "description": "Configurations for when you choose hierarchical chunking. If you set the chunkingStrategy as NONE, exclude this field.", - "properties": { - "LevelConfigurations": { - "description": "Token settings for each layer.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/HierarchicalChunkingLevelConfiguration" - }, - "maxItems": 2, - "minItems": 2, - "type": "array" - }, - "OverlapTokens": { - "description": "The number of tokens to repeat across chunks in the same layer.", - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "LevelConfigurations", - "OverlapTokens" - ], - "type": "object" - }, - "HierarchicalChunkingLevelConfiguration": { - "additionalProperties": false, - "description": "Token settings for a layer in a hierarchical chunking configuration.", - "properties": { - "MaxTokens": { - "description": "The maximum number of tokens that a chunk can contain in this layer.", - "maximum": 8192, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "MaxTokens" - ], - "type": "object" - }, - "IntermediateStorage": { - "additionalProperties": false, - "description": "A location for storing content from data sources temporarily as it is processed by custom components in the ingestion pipeline.", - "properties": { - "S3Location": { - "$ref": "#/definitions/S3Location" - } - }, - "required": [ - "S3Location" - ], - "type": "object" - }, - "ParsingConfiguration": { - "additionalProperties": false, - "description": "Settings for parsing document contents", - "properties": { - "BedrockFoundationModelConfiguration": { - "$ref": "#/definitions/BedrockFoundationModelConfiguration" - }, - "ParsingStrategy": { - "$ref": "#/definitions/ParsingStrategy" - } - }, - "required": [ - "ParsingStrategy" - ], - "type": "object" - }, - "ParsingPrompt": { - "additionalProperties": false, - "description": "Instructions for interpreting the contents of a document.", - "properties": { - "ParsingPromptText": { - "description": "Instructions for interpreting the contents of a document.", - "maxLength": 10000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ParsingPromptText" - ], - "type": "object" - }, - "ParsingStrategy": { - "description": "The parsing strategy for the data source.", - "enum": [ - "BEDROCK_FOUNDATION_MODEL" - ], - "type": "string" - }, - "PatternObjectFilter": { - "additionalProperties": false, - "description": "The specific filters applied to your data source content. You can filter out or include certain content.", - "properties": { - "ExclusionFilters": { - "$ref": "#/definitions/FilterList" - }, - "InclusionFilters": { - "$ref": "#/definitions/FilterList" - }, - "ObjectType": { - "description": "The supported object type or content type of the data source.", - "maxLength": 50, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ObjectType" - ], - "type": "object" - }, - "PatternObjectFilterConfiguration": { - "additionalProperties": false, - "description": "The configuration of specific filters applied to your data source content. You can filter out or include certain content.", - "properties": { - "Filters": { - "$ref": "#/definitions/PatternObjectFilterList" - } - }, - "required": [ - "Filters" - ], - "type": "object" - }, - "PatternObjectFilterList": { - "description": "Contains information", - "items": { - "$ref": "#/definitions/PatternObjectFilter" - }, - "maxItems": 25, - "minItems": 1, - "type": "array" - }, - "S3DataSourceConfiguration": { - "additionalProperties": false, - "description": "The configuration information to connect to Amazon S3 as your data source.", - "properties": { - "BucketArn": { - "description": "The ARN of the bucket that contains the data source.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:aws(|-cn|-us-gov):s3:::[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$", - "type": "string" - }, - "BucketOwnerAccountId": { - "description": "The account ID for the owner of the S3 bucket.", - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "InclusionPrefixes": { - "description": "A list of S3 prefixes that define the object containing the data sources.", - "insertionOrder": false, - "items": { - "description": "Prefix for s3 object.", - "maxLength": 300, - "minLength": 1, - "type": "string" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "BucketArn" - ], - "type": "object" - }, - "S3Location": { - "additionalProperties": false, - "description": "An Amazon S3 location.", - "properties": { - "URI": { - "description": "The location's URI", - "maxLength": 2048, - "minLength": 1, - "pattern": "^s3://.{1,128}$", - "type": "string" - } - }, - "required": [ - "URI" - ], - "type": "object" - }, - "SalesforceCrawlerConfiguration": { - "additionalProperties": false, - "description": "The configuration of filtering the Salesforce content. For example, configuring regular expression patterns to include or exclude certain content.", - "properties": { - "FilterConfiguration": { - "$ref": "#/definitions/CrawlFilterConfiguration" - } - }, - "type": "object" - }, - "SalesforceDataSourceConfiguration": { - "additionalProperties": false, - "description": "The configuration information to connect to Salesforce as your data source.", - "properties": { - "CrawlerConfiguration": { - "$ref": "#/definitions/SalesforceCrawlerConfiguration" - }, - "SourceConfiguration": { - "$ref": "#/definitions/SalesforceSourceConfiguration" - } - }, - "required": [ - "SourceConfiguration" - ], - "type": "object" - }, - "SalesforceSourceConfiguration": { - "additionalProperties": false, - "description": "The endpoint information to connect to your Salesforce data source.", - "properties": { - "AuthType": { - "description": "The supported authentication type to authenticate and connect to your Salesforce instance.", - "enum": [ - "OAUTH2_CLIENT_CREDENTIALS" - ], - "type": "string" - }, - "CredentialsSecretArn": { - "description": "The Amazon Resource Name of an AWS Secrets Manager secret that stores your authentication credentials for your Salesforce instance URL. For more information on the key-value pairs that must be included in your secret, depending on your authentication type, see Salesforce connection configuration.", - "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", - "type": "string" - }, - "HostUrl": { - "description": "The Salesforce host URL or instance URL.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://[A-Za-z0-9][^\\s]*$", - "type": "string" - } - }, - "required": [ - "HostUrl", - "AuthType", - "CredentialsSecretArn" - ], - "type": "object" - }, - "SeedUrl": { - "additionalProperties": false, - "description": "A seed url object.", - "properties": { - "Url": { - "description": "A web url.", - "pattern": "^https?://[A-Za-z0-9][^\\s]*$", - "type": "string" - } - }, - "required": [ - "Url" - ], - "type": "object" - }, - "SeedUrls": { - "description": "A list of web urls.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SeedUrl" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "SemanticChunkingConfiguration": { - "additionalProperties": false, - "description": "Configurations for when you choose semantic chunking. If you set the chunkingStrategy as NONE, exclude this field.", - "properties": { - "BreakpointPercentileThreshold": { - "description": "The dissimilarity threshold for splitting chunks.", - "maximum": 99, - "minimum": 50, - "type": "integer" - }, - "BufferSize": { - "description": "The buffer size.", - "maximum": 1, - "minimum": 0, - "type": "integer" - }, - "MaxTokens": { - "description": "The maximum number of tokens that a chunk can contain.", - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "BreakpointPercentileThreshold", - "BufferSize", - "MaxTokens" - ], - "type": "object" - }, - "ServerSideEncryptionConfiguration": { - "additionalProperties": false, - "description": "Contains details about the server-side encryption for the data source.", - "properties": { - "KmsKeyArn": { - "description": "The ARN of the AWS KMS key used to encrypt the resource.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", - "type": "string" - } - }, - "type": "object" - }, - "SharePointCrawlerConfiguration": { - "additionalProperties": false, - "description": "The configuration of the SharePoint content. For example, configuring specific types of SharePoint content.", - "properties": { - "FilterConfiguration": { - "$ref": "#/definitions/CrawlFilterConfiguration" - } - }, - "type": "object" - }, - "SharePointDataSourceConfiguration": { - "additionalProperties": false, - "description": "The configuration information to connect to SharePoint as your data source.", - "properties": { - "CrawlerConfiguration": { - "$ref": "#/definitions/SharePointCrawlerConfiguration" - }, - "SourceConfiguration": { - "$ref": "#/definitions/SharePointSourceConfiguration" - } - }, - "required": [ - "SourceConfiguration" - ], - "type": "object" - }, - "SharePointSourceConfiguration": { - "additionalProperties": false, - "description": "The endpoint information to connect to your SharePoint data source.", - "properties": { - "AuthType": { - "description": "The supported authentication type to authenticate and connect to your SharePoint site/sites.", - "enum": [ - "OAUTH2_CLIENT_CREDENTIALS" - ], - "type": "string" - }, - "CredentialsSecretArn": { - "description": "The Amazon Resource Name of an AWS Secrets Manager secret that stores your authentication credentials for your SharePoint site/sites. For more information on the key-value pairs that must be included in your secret, depending on your authentication type, see SharePoint connection configuration.", - "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", - "type": "string" - }, - "Domain": { - "description": "The domain of your SharePoint instance or site URL/URLs.", - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "HostType": { - "description": "The supported host type, whether online/cloud or server/on-premises.", - "enum": [ - "ONLINE" - ], - "type": "string" - }, - "SiteUrls": { - "description": "A list of one or more SharePoint site URLs.", - "insertionOrder": false, - "items": { - "description": "A forced-HTTPS web url.", - "pattern": "^https://[A-Za-z0-9][^\\s]*$", - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "TenantId": { - "description": "The identifier of your Microsoft 365 tenant.", - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - } - }, - "required": [ - "Domain", - "SiteUrls", - "HostType", - "AuthType", - "CredentialsSecretArn" - ], - "type": "object" - }, - "Transformation": { - "additionalProperties": false, - "description": "A Lambda function that processes documents.", - "properties": { - "StepToApply": { - "description": "When the service applies the transformation.", - "enum": [ - "POST_CHUNKING" - ], - "type": "string" - }, - "TransformationFunction": { - "$ref": "#/definitions/TransformationFunction" - } - }, - "required": [ - "StepToApply", - "TransformationFunction" - ], - "type": "object" - }, - "TransformationFunction": { - "additionalProperties": false, - "description": "A Lambda function that processes documents.", - "properties": { - "TransformationLambdaConfiguration": { - "$ref": "#/definitions/TransformationLambdaConfiguration" - } - }, - "required": [ - "TransformationLambdaConfiguration" - ], - "type": "object" - }, - "TransformationLambdaConfiguration": { - "additionalProperties": false, - "description": "A Lambda function that processes documents.", - "properties": { - "LambdaArn": { - "description": "The function's ARN identifier.", - "maxLength": 2048, - "minLength": 0, - "pattern": "^arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-_\\.]+(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", - "type": "string" - } - }, - "required": [ - "LambdaArn" - ], - "type": "object" - }, - "UrlConfiguration": { - "additionalProperties": false, - "description": "A url configuration.", - "properties": { - "SeedUrls": { - "$ref": "#/definitions/SeedUrls" - } - }, - "required": [ - "SeedUrls" - ], - "type": "object" - }, - "VectorIngestionConfiguration": { - "additionalProperties": false, - "description": "Details about how to chunk the documents in the data source. A chunk refers to an excerpt from a data source that is returned when the knowledge base that it belongs to is queried.", - "properties": { - "ChunkingConfiguration": { - "$ref": "#/definitions/ChunkingConfiguration" - }, - "CustomTransformationConfiguration": { - "$ref": "#/definitions/CustomTransformationConfiguration" - }, - "ParsingConfiguration": { - "$ref": "#/definitions/ParsingConfiguration" - } - }, - "type": "object" - }, - "WebCrawlerConfiguration": { - "additionalProperties": false, - "description": "Configuration for the web crawler.", - "properties": { - "CrawlerLimits": { - "$ref": "#/definitions/WebCrawlerLimits" - }, - "ExclusionFilters": { - "$ref": "#/definitions/FilterList" - }, - "InclusionFilters": { - "$ref": "#/definitions/FilterList" - }, - "Scope": { - "$ref": "#/definitions/WebScopeType" - } - }, - "type": "object" - }, - "WebCrawlerLimits": { - "additionalProperties": false, - "description": "Limit settings for the web crawler.", - "properties": { - "RateLimit": { - "description": "Rate of web URLs retrieved per minute.", - "maximum": 300, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "WebDataSourceConfiguration": { - "additionalProperties": false, - "description": "Configures a web data source location.", - "properties": { - "CrawlerConfiguration": { - "$ref": "#/definitions/WebCrawlerConfiguration" - }, - "SourceConfiguration": { - "$ref": "#/definitions/WebSourceConfiguration" - } - }, - "required": [ - "SourceConfiguration" - ], - "type": "object" - }, - "WebScopeType": { - "description": "The scope that a web crawl job will be restricted to.", - "enum": [ - "HOST_ONLY", - "SUBDOMAINS" - ], - "type": "string" - }, - "WebSourceConfiguration": { - "additionalProperties": false, - "description": "A web source configuration.", - "properties": { - "UrlConfiguration": { - "$ref": "#/definitions/UrlConfiguration" - } - }, - "required": [ - "UrlConfiguration" - ], - "type": "object" - } - }, - "description": "Definition of AWS::Bedrock::DataSource Resource Type", - "handlers": { - "create": { - "permissions": [ - "bedrock:CreateDataSource", - "bedrock:GetDataSource", - "bedrock:GetKnowledgeBase" - ] - }, - "delete": { - "permissions": [ - "bedrock:GetDataSource", - "bedrock:DeleteDataSource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "KnowledgeBaseId": { - "$ref": "resource-schema.json#/properties/KnowledgeBaseId" - } - }, - "required": [ - "KnowledgeBaseId" - ] - }, - "permissions": [ - "bedrock:ListDataSources" - ] - }, - "read": { - "permissions": [ - "bedrock:GetDataSource" - ] - }, - "update": { - "permissions": [ - "bedrock:GetDataSource", - "bedrock:UpdateDataSource" - ] - } - }, - "primaryIdentifier": [ - "/properties/KnowledgeBaseId", - "/properties/DataSourceId" - ], - "properties": { - "CreatedAt": { - "description": "The time at which the data source was created.", - "type": "string" - }, - "DataDeletionPolicy": { - "$ref": "#/definitions/DataDeletionPolicy" - }, - "DataSourceConfiguration": { - "$ref": "#/definitions/DataSourceConfiguration" - }, - "DataSourceId": { - "description": "Identifier for a resource.", - "pattern": "^[0-9a-zA-Z]{10}$", - "type": "string" - }, - "DataSourceStatus": { - "$ref": "#/definitions/DataSourceStatus" - }, - "Description": { - "description": "Description of the Resource.", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "FailureReasons": { - "description": "The details of the failure reasons related to the data source.", - "insertionOrder": false, - "items": { - "description": "Failure Reason for Error.", - "maxLength": 2048, - "type": "string" - }, - "maxItems": 2048, - "type": "array" - }, - "KnowledgeBaseId": { - "description": "The unique identifier of the knowledge base to which to add the data source.", - "pattern": "^[0-9a-zA-Z]{10}$", - "type": "string" - }, - "Name": { - "description": "The name of the data source.", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - }, - "ServerSideEncryptionConfiguration": { - "$ref": "#/definitions/ServerSideEncryptionConfiguration" - }, - "UpdatedAt": { - "description": "The time at which the knowledge base was last updated.", - "type": "string" - }, - "VectorIngestionConfiguration": { - "$ref": "#/definitions/VectorIngestionConfiguration" - } - }, - "readOnlyProperties": [ - "/properties/DataSourceId", - "/properties/DataSourceStatus", - "/properties/CreatedAt", - "/properties/UpdatedAt", - "/properties/FailureReasons" - ], - "required": [ - "DataSourceConfiguration", - "Name", - "KnowledgeBaseId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-aps", - "tagging": { - "cloudFormationSystemTags": false, - "taggable": false - }, - "typeName": "AWS::Bedrock::DataSource" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KnowledgeBaseId", + "/properties/VectorIngestionConfiguration/ChunkingConfiguration", + "/properties/VectorIngestionConfiguration/ParsingConfiguration", + "/properties/DataSourceConfiguration/Type" + ], + "definitions": { + "BedrockDataAutomationConfiguration": { + "additionalProperties": false, + "description": "Settings for a Bedrock Data Automation used to parse documents for a data source.", + "properties": { + "ParsingModality": { + "$ref": "#/definitions/ParsingModality" + } + }, + "type": "object" + }, + "BedrockFoundationModelConfiguration": { + "additionalProperties": false, + "description": "Settings for a foundation model used to parse documents for a data source.", + "properties": { + "ModelArn": { + "$ref": "#/definitions/ModelArn" + }, + "ParsingModality": { + "$ref": "#/definitions/ParsingModality" + }, + "ParsingPrompt": { + "$ref": "#/definitions/ParsingPrompt" + } + }, + "required": [ + "ModelArn" + ], + "type": "object" + }, + "BedrockFoundationModelContextEnrichmentConfiguration": { + "additionalProperties": false, + "description": "Bedrock Foundation Model configuration to be used for Context Enrichment.", + "properties": { + "EnrichmentStrategyConfiguration": { + "$ref": "#/definitions/EnrichmentStrategyConfiguration" + }, + "ModelArn": { + "$ref": "#/definitions/ModelArn" + } + }, + "required": [ + "EnrichmentStrategyConfiguration", + "ModelArn" + ], + "type": "object" + }, + "ChunkingConfiguration": { + "additionalProperties": false, + "description": "Details about how to chunk the documents in the data source. A chunk refers to an excerpt from a data source that is returned when the knowledge base that it belongs to is queried.", + "properties": { + "ChunkingStrategy": { + "$ref": "#/definitions/ChunkingStrategy" + }, + "FixedSizeChunkingConfiguration": { + "$ref": "#/definitions/FixedSizeChunkingConfiguration" + }, + "HierarchicalChunkingConfiguration": { + "$ref": "#/definitions/HierarchicalChunkingConfiguration" + }, + "SemanticChunkingConfiguration": { + "$ref": "#/definitions/SemanticChunkingConfiguration" + } + }, + "required": [ + "ChunkingStrategy" + ], + "type": "object" + }, + "ChunkingStrategy": { + "description": "Knowledge base can split your source data into chunks. A chunk refers to an excerpt from a data source that is returned when the knowledge base that it belongs to is queried. You have the following options for chunking your data. If you opt for NONE, then you may want to pre-process your files by splitting them up such that each file corresponds to a chunk.", + "enum": [ + "FIXED_SIZE", + "NONE", + "HIERARCHICAL", + "SEMANTIC" + ], + "type": "string" + }, + "ConfluenceCrawlerConfiguration": { + "additionalProperties": false, + "description": "The configuration of the Confluence content. For example, configuring specific types of Confluence content.", + "properties": { + "FilterConfiguration": { + "$ref": "#/definitions/CrawlFilterConfiguration" + } + }, + "type": "object" + }, + "ConfluenceDataSourceConfiguration": { + "additionalProperties": false, + "description": "The configuration information to connect to Confluence as your data source.", + "properties": { + "CrawlerConfiguration": { + "$ref": "#/definitions/ConfluenceCrawlerConfiguration" + }, + "SourceConfiguration": { + "$ref": "#/definitions/ConfluenceSourceConfiguration" + } + }, + "required": [ + "SourceConfiguration" + ], + "type": "object" + }, + "ConfluenceSourceConfiguration": { + "additionalProperties": false, + "description": "The endpoint information to connect to your Confluence data source.", + "properties": { + "AuthType": { + "description": "The supported authentication type to authenticate and connect to your Confluence instance.", + "enum": [ + "BASIC", + "OAUTH2_CLIENT_CREDENTIALS" + ], + "type": "string" + }, + "CredentialsSecretArn": { + "description": "The Amazon Resource Name of an AWS Secrets Manager secret that stores your authentication credentials for your Confluence instance URL. For more information on the key-value pairs that must be included in your secret, depending on your authentication type, see Confluence connection configuration.", + "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", + "type": "string" + }, + "HostType": { + "description": "The supported host type, whether online/cloud or server/on-premises.", + "enum": [ + "SAAS" + ], + "type": "string" + }, + "HostUrl": { + "description": "The Confluence host URL or instance URL.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://[A-Za-z0-9][^\\s]*$", + "type": "string" + } + }, + "required": [ + "HostUrl", + "HostType", + "AuthType", + "CredentialsSecretArn" + ], + "type": "object" + }, + "ContextEnrichmentConfiguration": { + "additionalProperties": false, + "description": "Additional Enrichment Configuration for example when using GraphRag.", + "properties": { + "BedrockFoundationModelConfiguration": { + "$ref": "#/definitions/BedrockFoundationModelContextEnrichmentConfiguration" + }, + "Type": { + "$ref": "#/definitions/ContextEnrichmentType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "ContextEnrichmentType": { + "description": "Enrichment type to be used for the vector database.", + "enum": [ + "BEDROCK_FOUNDATION_MODEL" + ], + "type": "string" + }, + "CrawlFilterConfiguration": { + "additionalProperties": false, + "description": "The type of filtering that you want to apply to certain objects or content of the data source. For example, the PATTERN type is regular expression patterns you can apply to filter your content.", + "properties": { + "PatternObjectFilter": { + "$ref": "#/definitions/PatternObjectFilterConfiguration" + }, + "Type": { + "description": "The crawl filter type.", + "enum": [ + "PATTERN" + ], + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "CustomTransformationConfiguration": { + "additionalProperties": false, + "description": "Settings for customizing steps in the data source content ingestion pipeline.", + "properties": { + "IntermediateStorage": { + "$ref": "#/definitions/IntermediateStorage" + }, + "Transformations": { + "description": "A list of Lambda functions that process documents.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Transformation" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "IntermediateStorage", + "Transformations" + ], + "type": "object" + }, + "DataDeletionPolicy": { + "description": "The deletion policy for the data source.", + "enum": [ + "RETAIN", + "DELETE" + ], + "type": "string" + }, + "DataSourceConfiguration": { + "additionalProperties": false, + "description": "Specifies a raw data source location to ingest.", + "properties": { + "ConfluenceConfiguration": { + "$ref": "#/definitions/ConfluenceDataSourceConfiguration" + }, + "S3Configuration": { + "$ref": "#/definitions/S3DataSourceConfiguration" + }, + "SalesforceConfiguration": { + "$ref": "#/definitions/SalesforceDataSourceConfiguration" + }, + "SharePointConfiguration": { + "$ref": "#/definitions/SharePointDataSourceConfiguration" + }, + "Type": { + "$ref": "#/definitions/DataSourceType" + }, + "WebConfiguration": { + "$ref": "#/definitions/WebDataSourceConfiguration" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "DataSourceStatus": { + "description": "The status of a data source.", + "enum": [ + "AVAILABLE", + "DELETING", + "DELETE_UNSUCCESSFUL" + ], + "type": "string" + }, + "DataSourceType": { + "description": "The type of the data source location.", + "enum": [ + "S3", + "CONFLUENCE", + "SALESFORCE", + "SHAREPOINT", + "WEB", + "CUSTOM", + "REDSHIFT_METADATA" + ], + "type": "string" + }, + "EnrichmentStrategyConfiguration": { + "additionalProperties": false, + "description": "Strategy to be used when using Bedrock Foundation Model for Context Enrichment.", + "properties": { + "Method": { + "$ref": "#/definitions/EnrichmentStrategyMethod" + } + }, + "required": [ + "Method" + ], + "type": "object" + }, + "EnrichmentStrategyMethod": { + "description": "Enrichment Strategy method.", + "enum": [ + "CHUNK_ENTITY_EXTRACTION" + ], + "type": "string" + }, + "FilterList": { + "description": "A set of regular expression filter patterns for a type of object.", + "insertionOrder": false, + "items": { + "description": "A list of one or more inclusion/exclusion regular expression patterns to include certain object types that adhere to the pattern. If you specify an inclusion and exclusion filter/pattern and both match a document, the exclusion filter takes precedence and the document isn't crawled.", + "maxLength": 1000, + "type": "string" + }, + "maxItems": 25, + "minItems": 1, + "type": "array" + }, + "FixedSizeChunkingConfiguration": { + "additionalProperties": false, + "description": "Configurations for when you choose fixed-size chunking. If you set the chunkingStrategy as NONE, exclude this field.", + "properties": { + "MaxTokens": { + "description": "The maximum number of tokens to include in a chunk.", + "minimum": 1, + "type": "integer" + }, + "OverlapPercentage": { + "description": "The percentage of overlap between adjacent chunks of a data source.", + "maximum": 99, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "MaxTokens", + "OverlapPercentage" + ], + "type": "object" + }, + "HierarchicalChunkingConfiguration": { + "additionalProperties": false, + "description": "Configurations for when you choose hierarchical chunking. If you set the chunkingStrategy as NONE, exclude this field.", + "properties": { + "LevelConfigurations": { + "description": "Token settings for each layer.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/HierarchicalChunkingLevelConfiguration" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + "OverlapTokens": { + "description": "The number of tokens to repeat across chunks in the same layer.", + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "LevelConfigurations", + "OverlapTokens" + ], + "type": "object" + }, + "HierarchicalChunkingLevelConfiguration": { + "additionalProperties": false, + "description": "Token settings for a layer in a hierarchical chunking configuration.", + "properties": { + "MaxTokens": { + "description": "The maximum number of tokens that a chunk can contain in this layer.", + "maximum": 8192, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "MaxTokens" + ], + "type": "object" + }, + "IntermediateStorage": { + "additionalProperties": false, + "description": "A location for storing content from data sources temporarily as it is processed by custom components in the ingestion pipeline.", + "properties": { + "S3Location": { + "$ref": "#/definitions/S3Location" + } + }, + "required": [ + "S3Location" + ], + "type": "object" + }, + "ModelArn": { + "description": "The model's ARN.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}::foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2})|(arn:aws(|-us-gov|-cn|-iso|-iso-b):bedrock:(|[0-9a-z-]{1,20}):(|[0-9]{12}):(inference-profile|application-inference-profile)/[a-zA-Z0-9-:.]+)$", + "type": "string" + }, + "ParsingConfiguration": { + "additionalProperties": false, + "description": "Settings for parsing document contents", + "properties": { + "BedrockDataAutomationConfiguration": { + "$ref": "#/definitions/BedrockDataAutomationConfiguration" + }, + "BedrockFoundationModelConfiguration": { + "$ref": "#/definitions/BedrockFoundationModelConfiguration" + }, + "ParsingStrategy": { + "$ref": "#/definitions/ParsingStrategy" + } + }, + "required": [ + "ParsingStrategy" + ], + "type": "object" + }, + "ParsingModality": { + "description": "Determine how will parsed content be stored.", + "enum": [ + "MULTIMODAL" + ], + "type": "string" + }, + "ParsingPrompt": { + "additionalProperties": false, + "description": "Instructions for interpreting the contents of a document.", + "properties": { + "ParsingPromptText": { + "description": "Instructions for interpreting the contents of a document.", + "maxLength": 10000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParsingPromptText" + ], + "type": "object" + }, + "ParsingStrategy": { + "description": "The parsing strategy for the data source.", + "enum": [ + "BEDROCK_FOUNDATION_MODEL", + "BEDROCK_DATA_AUTOMATION" + ], + "type": "string" + }, + "PatternObjectFilter": { + "additionalProperties": false, + "description": "The specific filters applied to your data source content. You can filter out or include certain content.", + "properties": { + "ExclusionFilters": { + "$ref": "#/definitions/FilterList" + }, + "InclusionFilters": { + "$ref": "#/definitions/FilterList" + }, + "ObjectType": { + "description": "The supported object type or content type of the data source.", + "maxLength": 50, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ObjectType" + ], + "type": "object" + }, + "PatternObjectFilterConfiguration": { + "additionalProperties": false, + "description": "The configuration of specific filters applied to your data source content. You can filter out or include certain content.", + "properties": { + "Filters": { + "$ref": "#/definitions/PatternObjectFilterList" + } + }, + "required": [ + "Filters" + ], + "type": "object" + }, + "PatternObjectFilterList": { + "description": "Contains information", + "items": { + "$ref": "#/definitions/PatternObjectFilter" + }, + "maxItems": 25, + "minItems": 1, + "type": "array" + }, + "S3DataSourceConfiguration": { + "additionalProperties": false, + "description": "The configuration information to connect to Amazon S3 as your data source.", + "properties": { + "BucketArn": { + "description": "The ARN of the bucket that contains the data source.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(|-cn|-us-gov):s3:::[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$", + "type": "string" + }, + "BucketOwnerAccountId": { + "description": "The account ID for the owner of the S3 bucket.", + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "InclusionPrefixes": { + "description": "A list of S3 prefixes that define the object containing the data sources.", + "insertionOrder": false, + "items": { + "description": "Prefix for s3 object.", + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "BucketArn" + ], + "type": "object" + }, + "S3Location": { + "additionalProperties": false, + "description": "An Amazon S3 location.", + "properties": { + "URI": { + "description": "The location's URI", + "maxLength": 2048, + "minLength": 1, + "pattern": "^s3://.{1,128}$", + "type": "string" + } + }, + "required": [ + "URI" + ], + "type": "object" + }, + "SalesforceCrawlerConfiguration": { + "additionalProperties": false, + "description": "The configuration of filtering the Salesforce content. For example, configuring regular expression patterns to include or exclude certain content.", + "properties": { + "FilterConfiguration": { + "$ref": "#/definitions/CrawlFilterConfiguration" + } + }, + "type": "object" + }, + "SalesforceDataSourceConfiguration": { + "additionalProperties": false, + "description": "The configuration information to connect to Salesforce as your data source.", + "properties": { + "CrawlerConfiguration": { + "$ref": "#/definitions/SalesforceCrawlerConfiguration" + }, + "SourceConfiguration": { + "$ref": "#/definitions/SalesforceSourceConfiguration" + } + }, + "required": [ + "SourceConfiguration" + ], + "type": "object" + }, + "SalesforceSourceConfiguration": { + "additionalProperties": false, + "description": "The endpoint information to connect to your Salesforce data source.", + "properties": { + "AuthType": { + "description": "The supported authentication type to authenticate and connect to your Salesforce instance.", + "enum": [ + "OAUTH2_CLIENT_CREDENTIALS" + ], + "type": "string" + }, + "CredentialsSecretArn": { + "description": "The Amazon Resource Name of an AWS Secrets Manager secret that stores your authentication credentials for your Salesforce instance URL. For more information on the key-value pairs that must be included in your secret, depending on your authentication type, see Salesforce connection configuration.", + "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", + "type": "string" + }, + "HostUrl": { + "description": "The Salesforce host URL or instance URL.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://[A-Za-z0-9][^\\s]*$", + "type": "string" + } + }, + "required": [ + "HostUrl", + "AuthType", + "CredentialsSecretArn" + ], + "type": "object" + }, + "SeedUrl": { + "additionalProperties": false, + "description": "A seed url object.", + "properties": { + "Url": { + "description": "A web url.", + "pattern": "^https?://[A-Za-z0-9][^\\s]*$", + "type": "string" + } + }, + "required": [ + "Url" + ], + "type": "object" + }, + "SeedUrls": { + "description": "A list of web urls.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SeedUrl" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "SemanticChunkingConfiguration": { + "additionalProperties": false, + "description": "Configurations for when you choose semantic chunking. If you set the chunkingStrategy as NONE, exclude this field.", + "properties": { + "BreakpointPercentileThreshold": { + "description": "The dissimilarity threshold for splitting chunks.", + "maximum": 99, + "minimum": 50, + "type": "integer" + }, + "BufferSize": { + "description": "The buffer size.", + "maximum": 1, + "minimum": 0, + "type": "integer" + }, + "MaxTokens": { + "description": "The maximum number of tokens that a chunk can contain.", + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "BreakpointPercentileThreshold", + "BufferSize", + "MaxTokens" + ], + "type": "object" + }, + "ServerSideEncryptionConfiguration": { + "additionalProperties": false, + "description": "Contains details about the server-side encryption for the data source.", + "properties": { + "KmsKeyArn": { + "description": "The ARN of the AWS KMS key used to encrypt the resource.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", + "type": "string" + } + }, + "type": "object" + }, + "SharePointCrawlerConfiguration": { + "additionalProperties": false, + "description": "The configuration of the SharePoint content. For example, configuring specific types of SharePoint content.", + "properties": { + "FilterConfiguration": { + "$ref": "#/definitions/CrawlFilterConfiguration" + } + }, + "type": "object" + }, + "SharePointDataSourceConfiguration": { + "additionalProperties": false, + "description": "The configuration information to connect to SharePoint as your data source.", + "properties": { + "CrawlerConfiguration": { + "$ref": "#/definitions/SharePointCrawlerConfiguration" + }, + "SourceConfiguration": { + "$ref": "#/definitions/SharePointSourceConfiguration" + } + }, + "required": [ + "SourceConfiguration" + ], + "type": "object" + }, + "SharePointSourceConfiguration": { + "additionalProperties": false, + "description": "The endpoint information to connect to your SharePoint data source.", + "properties": { + "AuthType": { + "description": "The supported authentication type to authenticate and connect to your SharePoint site/sites.", + "enum": [ + "OAUTH2_CLIENT_CREDENTIALS", + "OAUTH2_SHAREPOINT_APP_ONLY_CLIENT_CREDENTIALS" + ], + "type": "string" + }, + "CredentialsSecretArn": { + "description": "The Amazon Resource Name of an AWS Secrets Manager secret that stores your authentication credentials for your SharePoint site/sites. For more information on the key-value pairs that must be included in your secret, depending on your authentication type, see SharePoint connection configuration.", + "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", + "type": "string" + }, + "Domain": { + "description": "The domain of your SharePoint instance or site URL/URLs.", + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "HostType": { + "description": "The supported host type, whether online/cloud or server/on-premises.", + "enum": [ + "ONLINE" + ], + "type": "string" + }, + "SiteUrls": { + "description": "A list of one or more SharePoint site URLs.", + "insertionOrder": false, + "items": { + "description": "A forced-HTTPS web url.", + "pattern": "^https://[A-Za-z0-9][^\\s]*$", + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "TenantId": { + "description": "The identifier of your Microsoft 365 tenant.", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + } + }, + "required": [ + "Domain", + "SiteUrls", + "HostType", + "AuthType", + "CredentialsSecretArn" + ], + "type": "object" + }, + "Transformation": { + "additionalProperties": false, + "description": "A Lambda function that processes documents.", + "properties": { + "StepToApply": { + "description": "When the service applies the transformation.", + "enum": [ + "POST_CHUNKING" + ], + "type": "string" + }, + "TransformationFunction": { + "$ref": "#/definitions/TransformationFunction" + } + }, + "required": [ + "StepToApply", + "TransformationFunction" + ], + "type": "object" + }, + "TransformationFunction": { + "additionalProperties": false, + "description": "A Lambda function that processes documents.", + "properties": { + "TransformationLambdaConfiguration": { + "$ref": "#/definitions/TransformationLambdaConfiguration" + } + }, + "required": [ + "TransformationLambdaConfiguration" + ], + "type": "object" + }, + "TransformationLambdaConfiguration": { + "additionalProperties": false, + "description": "A Lambda function that processes documents.", + "properties": { + "LambdaArn": { + "description": "The function's ARN identifier.", + "maxLength": 2048, + "minLength": 0, + "pattern": "^arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-_\\.]+(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", + "type": "string" + } + }, + "required": [ + "LambdaArn" + ], + "type": "object" + }, + "UrlConfiguration": { + "additionalProperties": false, + "description": "A url configuration.", + "properties": { + "SeedUrls": { + "$ref": "#/definitions/SeedUrls" + } + }, + "required": [ + "SeedUrls" + ], + "type": "object" + }, + "VectorIngestionConfiguration": { + "additionalProperties": false, + "description": "Details about how to chunk the documents in the data source. A chunk refers to an excerpt from a data source that is returned when the knowledge base that it belongs to is queried.", + "properties": { + "ChunkingConfiguration": { + "$ref": "#/definitions/ChunkingConfiguration" + }, + "ContextEnrichmentConfiguration": { + "$ref": "#/definitions/ContextEnrichmentConfiguration" + }, + "CustomTransformationConfiguration": { + "$ref": "#/definitions/CustomTransformationConfiguration" + }, + "ParsingConfiguration": { + "$ref": "#/definitions/ParsingConfiguration" + } + }, + "type": "object" + }, + "WebCrawlerConfiguration": { + "additionalProperties": false, + "description": "Configuration for the web crawler.", + "properties": { + "CrawlerLimits": { + "$ref": "#/definitions/WebCrawlerLimits" + }, + "ExclusionFilters": { + "$ref": "#/definitions/FilterList" + }, + "InclusionFilters": { + "$ref": "#/definitions/FilterList" + }, + "Scope": { + "$ref": "#/definitions/WebScopeType" + }, + "UserAgent": { + "description": "The suffix that will be included in the user agent header.", + "maxLength": 40, + "minLength": 15, + "type": "string" + }, + "UserAgentHeader": { + "description": "The full user agent header, including UUID and suffix.", + "maxLength": 86, + "minLength": 61, + "type": "string" + } + }, + "type": "object" + }, + "WebCrawlerLimits": { + "additionalProperties": false, + "description": "Limit settings for the web crawler.", + "properties": { + "MaxPages": { + "description": "Maximum number of pages the crawler can crawl.", + "minimum": 1, + "type": "integer" + }, + "RateLimit": { + "description": "Rate of web URLs retrieved per minute.", + "maximum": 300, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "WebDataSourceConfiguration": { + "additionalProperties": false, + "description": "Configures a web data source location.", + "properties": { + "CrawlerConfiguration": { + "$ref": "#/definitions/WebCrawlerConfiguration" + }, + "SourceConfiguration": { + "$ref": "#/definitions/WebSourceConfiguration" + } + }, + "required": [ + "SourceConfiguration" + ], + "type": "object" + }, + "WebScopeType": { + "description": "The scope that a web crawl job will be restricted to.", + "enum": [ + "HOST_ONLY", + "SUBDOMAINS" + ], + "type": "string" + }, + "WebSourceConfiguration": { + "additionalProperties": false, + "description": "A web source configuration.", + "properties": { + "UrlConfiguration": { + "$ref": "#/definitions/UrlConfiguration" + } + }, + "required": [ + "UrlConfiguration" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Bedrock::DataSource Resource Type", + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateDataSource", + "bedrock:GetDataSource", + "bedrock:GetKnowledgeBase", + "kms:GenerateDataKey" + ] + }, + "delete": { + "permissions": [ + "bedrock:GetDataSource", + "bedrock:DeleteDataSource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "KnowledgeBaseId": { + "$ref": "resource-schema.json#/properties/KnowledgeBaseId" + } + }, + "required": [ + "KnowledgeBaseId" + ] + }, + "permissions": [ + "bedrock:ListDataSources" + ] + }, + "read": { + "permissions": [ + "bedrock:GetDataSource" + ] + }, + "update": { + "permissions": [ + "bedrock:GetDataSource", + "bedrock:UpdateDataSource", + "kms:GenerateDataKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/KnowledgeBaseId", + "/properties/DataSourceId" + ], + "properties": { + "CreatedAt": { + "description": "The time at which the data source was created.", + "type": "string" + }, + "DataDeletionPolicy": { + "$ref": "#/definitions/DataDeletionPolicy" + }, + "DataSourceConfiguration": { + "$ref": "#/definitions/DataSourceConfiguration" + }, + "DataSourceId": { + "description": "Identifier for a resource.", + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "DataSourceStatus": { + "$ref": "#/definitions/DataSourceStatus" + }, + "Description": { + "description": "Description of the Resource.", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "FailureReasons": { + "description": "The details of the failure reasons related to the data source.", + "insertionOrder": false, + "items": { + "description": "Failure Reason for Error.", + "maxLength": 2048, + "type": "string" + }, + "maxItems": 2048, + "type": "array" + }, + "KnowledgeBaseId": { + "description": "The unique identifier of the knowledge base to which to add the data source.", + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "Name": { + "description": "The name of the data source.", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "ServerSideEncryptionConfiguration": { + "$ref": "#/definitions/ServerSideEncryptionConfiguration" + }, + "UpdatedAt": { + "description": "The time at which the knowledge base was last updated.", + "type": "string" + }, + "VectorIngestionConfiguration": { + "$ref": "#/definitions/VectorIngestionConfiguration" + } + }, + "readOnlyProperties": [ + "/properties/DataSourceId", + "/properties/DataSourceStatus", + "/properties/CreatedAt", + "/properties/UpdatedAt", + "/properties/FailureReasons", + "/properties/DataSourceConfiguration/WebConfiguration/CrawlerConfiguration/UserAgentHeader" + ], + "required": [ + "DataSourceConfiguration", + "Name", + "KnowledgeBaseId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-aps", + "tagging": { + "cloudFormationSystemTags": false, + "taggable": false + }, + "typeName": "AWS::Bedrock::DataSource" +} diff --git a/src/schema/aws-bedrock-flow.json b/src/schema/aws-bedrock-flow.json index fcf77fcb..a59a0821 100644 --- a/src/schema/aws-bedrock-flow.json +++ b/src/schema/aws-bedrock-flow.json @@ -1,1144 +1,1144 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Id" - ] - ], - "additionalProperties": false, - "definitions": { - "AgentFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Agent flow node configuration", - "properties": { - "AgentAliasArn": { - "description": "Arn representation of the Agent Alias.", - "maxLength": 2048, - "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:agent-alias/[0-9a-zA-Z]{10}/[0-9a-zA-Z]{10}$", - "type": "string" - } - }, - "required": [ - "AgentAliasArn" - ], - "type": "object" - }, - "CollectorFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Collector flow node configuration", - "type": "object" - }, - "ConditionFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Condition flow node configuration", - "properties": { - "Conditions": { - "description": "List of conditions in a condition node", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/FlowCondition" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Conditions" - ], - "type": "object" - }, - "DefinitionSubstitutions": { - "additionalProperties": false, - "description": "When supplied with DefinitionString or DefinitionS3Location, substrings in the definition matching ${keyname} will be replaced with the associated value from this map", - "maxProperties": 500, - "minProperties": 1, - "patternProperties": { - "^[a-zA-Z0-9]+$": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - }, - { - "type": "boolean" - } - ] - } - }, - "type": "object" - }, - "FlowCondition": { - "additionalProperties": false, - "description": "Condition branch for a condition node", - "properties": { - "Expression": { - "description": "Expression for a condition in a flow", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "Name of a condition in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "FlowConditionalConnectionConfiguration": { - "additionalProperties": false, - "description": "Conditional connection configuration", - "properties": { - "Condition": { - "description": "Name of a condition in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - } - }, - "required": [ - "Condition" - ], - "type": "object" - }, - "FlowConnection": { - "additionalProperties": false, - "description": "Flow connection", - "properties": { - "Configuration": { - "$ref": "#/definitions/FlowConnectionConfiguration" - }, - "Name": { - "description": "Name of a connection in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,100}$", - "type": "string" - }, - "Source": { - "description": "Name of a node in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - }, - "Target": { - "description": "Name of a node in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/FlowConnectionType" - } - }, - "required": [ - "Name", - "Source", - "Target", - "Type" - ], - "type": "object" - }, - "FlowConnectionConfiguration": { - "description": "Connection configuration", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Data": { - "$ref": "#/definitions/FlowDataConnectionConfiguration" - } - }, - "required": [ - "Data" - ], - "title": "Data", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Conditional": { - "$ref": "#/definitions/FlowConditionalConnectionConfiguration" - } - }, - "required": [ - "Conditional" - ], - "title": "Conditional", - "type": "object" - } - ] - }, - "FlowConnectionType": { - "description": "Connection type", - "enum": [ - "Data", - "Conditional" - ], - "type": "string" - }, - "FlowDataConnectionConfiguration": { - "additionalProperties": false, - "description": "Data connection configuration", - "properties": { - "SourceOutput": { - "description": "Name of a node output in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - }, - "TargetInput": { - "description": "Name of a node input in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - } - }, - "required": [ - "SourceOutput", - "TargetInput" - ], - "type": "object" - }, - "FlowDefinition": { - "additionalProperties": false, - "description": "Flow definition", - "properties": { - "Connections": { - "description": "List of connections", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/FlowConnection" - }, - "maxItems": 20, - "type": "array" - }, - "Nodes": { - "description": "List of nodes in a flow", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/FlowNode" - }, - "maxItems": 20, - "type": "array" - } - }, - "type": "object" - }, - "FlowNode": { - "additionalProperties": false, - "description": "Internal mixin for flow node", - "properties": { - "Configuration": { - "$ref": "#/definitions/FlowNodeConfiguration" - }, - "Inputs": { - "description": "List of node inputs in a flow", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/FlowNodeInput" - }, - "maxItems": 5, - "type": "array" - }, - "Name": { - "description": "Name of a node in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - }, - "Outputs": { - "description": "List of node outputs in a flow", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/FlowNodeOutput" - }, - "maxItems": 5, - "type": "array" - }, - "Type": { - "$ref": "#/definitions/FlowNodeType" - } - }, - "required": [ - "Name", - "Type" - ], - "type": "object" - }, - "FlowNodeConfiguration": { - "description": "Node configuration in a flow", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Input": { - "$ref": "#/definitions/InputFlowNodeConfiguration" - } - }, - "required": [ - "Input" - ], - "title": "Input", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Output": { - "$ref": "#/definitions/OutputFlowNodeConfiguration" - } - }, - "required": [ - "Output" - ], - "title": "Output", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "KnowledgeBase": { - "$ref": "#/definitions/KnowledgeBaseFlowNodeConfiguration" - } - }, - "required": [ - "KnowledgeBase" - ], - "title": "KnowledgeBase", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Condition": { - "$ref": "#/definitions/ConditionFlowNodeConfiguration" - } - }, - "required": [ - "Condition" - ], - "title": "Condition", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Lex": { - "$ref": "#/definitions/LexFlowNodeConfiguration" - } - }, - "required": [ - "Lex" - ], - "title": "Lex", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Prompt": { - "$ref": "#/definitions/PromptFlowNodeConfiguration" - } - }, - "required": [ - "Prompt" - ], - "title": "Prompt", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "LambdaFunction": { - "$ref": "#/definitions/LambdaFunctionFlowNodeConfiguration" - } - }, - "required": [ - "LambdaFunction" - ], - "title": "LambdaFunction", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Agent": { - "$ref": "#/definitions/AgentFlowNodeConfiguration" - } - }, - "required": [ - "Agent" - ], - "title": "Agent", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Storage": { - "$ref": "#/definitions/StorageFlowNodeConfiguration" - } - }, - "required": [ - "Storage" - ], - "title": "Storage", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Iterator": { - "$ref": "#/definitions/IteratorFlowNodeConfiguration" - } - }, - "required": [ - "Iterator" - ], - "title": "Iterator", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Collector": { - "$ref": "#/definitions/CollectorFlowNodeConfiguration" - } - }, - "required": [ - "Collector" - ], - "title": "Collector", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Retrieval": { - "$ref": "#/definitions/RetrievalFlowNodeConfiguration" - } - }, - "required": [ - "Retrieval" - ], - "title": "Retrieval", - "type": "object" - } - ] - }, - "FlowNodeIODataType": { - "description": "Type of input/output for a node in a flow", - "enum": [ - "String", - "Number", - "Boolean", - "Object", - "Array" - ], - "type": "string" - }, - "FlowNodeInput": { - "additionalProperties": false, - "description": "Input to a node in a flow", - "properties": { - "Expression": { - "description": "Expression for a node input in a flow", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "Name of a node input in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/FlowNodeIODataType" - } - }, - "required": [ - "Expression", - "Name", - "Type" - ], - "type": "object" - }, - "FlowNodeOutput": { - "additionalProperties": false, - "description": "Output of a node in a flow", - "properties": { - "Name": { - "description": "Name of a node output in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/FlowNodeIODataType" - } - }, - "required": [ - "Name", - "Type" - ], - "type": "object" - }, - "FlowNodeType": { - "description": "Flow node types", - "enum": [ - "Input", - "Output", - "KnowledgeBase", - "Condition", - "Lex", - "Prompt", - "LambdaFunction", - "Agent", - "Storage", - "Retrieval", - "Iterator", - "Collector" - ], - "type": "string" - }, - "FlowStatus": { - "description": "Schema Type for Flow APIs", - "enum": [ - "Failed", - "Prepared", - "Preparing", - "NotPrepared" - ], - "type": "string" - }, - "FlowValidation": { - "additionalProperties": false, - "description": "Validation for Flow", - "properties": { - "Message": { - "description": "validation message", - "type": "string" - } - }, - "required": [ - "Message" - ], - "type": "object" - }, - "FlowValidations": { - "description": "List of flow validations", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/FlowValidation" - }, - "type": "array" - }, - "GuardrailConfiguration": { - "additionalProperties": false, - "description": "Configuration for a guardrail", - "properties": { - "GuardrailIdentifier": { - "description": "Identifier for the guardrail, could be the id or the arn", - "maxLength": 2048, - "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$", - "type": "string" - }, - "GuardrailVersion": { - "description": "Version of the guardrail", - "pattern": "^(([0-9]{1,8})|(DRAFT))$", - "type": "string" - } - }, - "type": "object" - }, - "InputFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Input flow node configuration", - "type": "object" - }, - "IteratorFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Iterator flow node configuration", - "type": "object" - }, - "KnowledgeBaseFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Knowledge base flow node configuration", - "properties": { - "GuardrailConfiguration": { - "$ref": "#/definitions/GuardrailConfiguration" - }, - "KnowledgeBaseId": { - "description": "Identifier of the KnowledgeBase", - "maxLength": 10, - "pattern": "^[0-9a-zA-Z]+$", - "type": "string" - }, - "ModelId": { - "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^(arn:aws(-[^:]{1,12})?:(bedrock|sagemaker):[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", - "type": "string" - } - }, - "required": [ - "KnowledgeBaseId" - ], - "type": "object" - }, - "LambdaFunctionFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Lambda function flow node configuration", - "properties": { - "LambdaArn": { - "description": "ARN of a Lambda.", - "maxLength": 2048, - "pattern": "^arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-_\\.]+(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", - "type": "string" - } - }, - "required": [ - "LambdaArn" - ], - "type": "object" - }, - "LexFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Lex flow node configuration", - "properties": { - "BotAliasArn": { - "description": "ARN of a Lex bot alias", - "maxLength": 78, - "pattern": "^arn:aws(|-us-gov):lex:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:bot-alias/[0-9a-zA-Z]+/[0-9a-zA-Z]+$", - "type": "string" - }, - "LocaleId": { - "description": "Lex bot locale id", - "maxLength": 10, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "BotAliasArn", - "LocaleId" - ], - "type": "object" - }, - "OutputFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Output flow node configuration", - "type": "object" - }, - "PromptFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Prompt flow node configuration", - "properties": { - "GuardrailConfiguration": { - "$ref": "#/definitions/GuardrailConfiguration" - }, - "SourceConfiguration": { - "$ref": "#/definitions/PromptFlowNodeSourceConfiguration" - } - }, - "required": [ - "SourceConfiguration" - ], - "type": "object" - }, - "PromptFlowNodeInlineConfiguration": { - "additionalProperties": false, - "description": "Inline prompt configuration for prompt node", - "properties": { - "InferenceConfiguration": { - "$ref": "#/definitions/PromptInferenceConfiguration" - }, - "ModelId": { - "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^(arn:aws(-[^:]{1,12})?:(bedrock|sagemaker):[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", - "type": "string" - }, - "TemplateConfiguration": { - "$ref": "#/definitions/PromptTemplateConfiguration" - }, - "TemplateType": { - "$ref": "#/definitions/PromptTemplateType" - } - }, - "required": [ - "ModelId", - "TemplateConfiguration", - "TemplateType" - ], - "type": "object" - }, - "PromptFlowNodeResourceConfiguration": { - "additionalProperties": false, - "description": "Resource prompt configuration for prompt node", - "properties": { - "PromptArn": { - "description": "ARN of a prompt resource possibly with a version", - "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:prompt/[0-9a-zA-Z]{10}(?::[0-9]{1,5})?)$", - "type": "string" - } - }, - "required": [ - "PromptArn" - ], - "type": "object" - }, - "PromptFlowNodeSourceConfiguration": { - "description": "Prompt source configuration for prompt node", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Resource": { - "$ref": "#/definitions/PromptFlowNodeResourceConfiguration" - } - }, - "required": [ - "Resource" - ], - "title": "Resource", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Inline": { - "$ref": "#/definitions/PromptFlowNodeInlineConfiguration" - } - }, - "required": [ - "Inline" - ], - "title": "Inline", - "type": "object" - } - ] - }, - "PromptInferenceConfiguration": { - "description": "Model inference configuration", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Text": { - "$ref": "#/definitions/PromptModelInferenceConfiguration" - } - }, - "required": [ - "Text" - ], - "title": "Text", - "type": "object" - } - ] - }, - "PromptInputVariable": { - "additionalProperties": false, - "description": "Input variable", - "properties": { - "Name": { - "description": "Name for an input variable", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - } - }, - "type": "object" - }, - "PromptModelInferenceConfiguration": { - "additionalProperties": false, - "description": "Prompt model inference configuration", - "properties": { - "MaxTokens": { - "description": "Maximum length of output", - "maximum": 4096, - "minimum": 0, - "type": "number" - }, - "StopSequences": { - "description": "List of stop sequences", - "insertionOrder": true, - "items": { - "type": "string" - }, - "maxItems": 4, - "minItems": 0, - "type": "array" - }, - "Temperature": { - "description": "Controls randomness, higher values increase diversity", - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "TopP": { - "description": "Cumulative probability cutoff for token selection", - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "PromptTemplateConfiguration": { - "description": "Prompt template configuration", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Text": { - "$ref": "#/definitions/TextPromptTemplateConfiguration" - } - }, - "required": [ - "Text" - ], - "title": "Text", - "type": "object" - } - ] - }, - "PromptTemplateType": { - "description": "Prompt template type", - "enum": [ - "TEXT" - ], - "type": "string" - }, - "RetrievalFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Retrieval flow node configuration", - "properties": { - "ServiceConfiguration": { - "$ref": "#/definitions/RetrievalFlowNodeServiceConfiguration" - } - }, - "required": [ - "ServiceConfiguration" - ], - "type": "object" - }, - "RetrievalFlowNodeS3Configuration": { - "additionalProperties": false, - "description": "s3 Retrieval configuration for Retrieval node", - "properties": { - "BucketName": { - "description": "bucket name of an s3 that will be used for Retrieval flow node configuration", - "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "RetrievalFlowNodeServiceConfiguration": { - "description": "Retrieval service configuration for Retrieval node", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "S3": { - "$ref": "#/definitions/RetrievalFlowNodeS3Configuration" - } - }, - "title": "S3", - "type": "object" - } - ] - }, - "S3Location": { - "additionalProperties": false, - "description": "A bucket, key and optional version pointing to an S3 object containing a UTF-8 encoded JSON string Definition with the same schema as the Definition property of this resource", - "properties": { - "Bucket": { - "description": "A bucket in S3", - "maxLength": 63, - "minLength": 3, - "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", - "type": "string" - }, - "Key": { - "description": "A object key in S3", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Version": { - "description": "The version of the the S3 object to use", - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Bucket", - "Key" - ], - "type": "object" - }, - "StorageFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Storage flow node configuration", - "properties": { - "ServiceConfiguration": { - "$ref": "#/definitions/StorageFlowNodeServiceConfiguration" - } - }, - "required": [ - "ServiceConfiguration" - ], - "type": "object" - }, - "StorageFlowNodeS3Configuration": { - "additionalProperties": false, - "description": "s3 storage configuration for storage node", - "properties": { - "BucketName": { - "description": "bucket name of an s3 that will be used for storage flow node configuration", - "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "StorageFlowNodeServiceConfiguration": { - "description": "storage service configuration for storage node", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "S3": { - "$ref": "#/definitions/StorageFlowNodeS3Configuration" - } - }, - "title": "S3", - "type": "object" - } - ] - }, - "TagsMap": { - "additionalProperties": false, - "description": "A map of tag keys and values", - "patternProperties": { - "^[a-zA-Z0-9\\s._:/=+@-]*$": { - "description": "Value of a tag", - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", - "type": "string" - } - }, - "type": "object" - }, - "TextPromptTemplateConfiguration": { - "additionalProperties": false, - "description": "Configuration for text prompt template", - "properties": { - "InputVariables": { - "description": "List of input variables", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PromptInputVariable" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - }, - "Text": { - "description": "Prompt content for String prompt template", - "maxLength": 200000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Text" - ], - "type": "object" - } - }, - "description": "Definition of AWS::Bedrock::Flow Resource Type", - "handlers": { - "create": { - "permissions": [ - "bedrock:CreateFlow", - "bedrock:GetFlow", - "bedrock:PrepareFlow", - "iam:PassRole", - "s3:GetObject", - "s3:GetObjectVersion", - "bedrock:TagResource", - "bedrock:ListTagsForResource", - "kms:GenerateDataKey", - "kms:Decrypt", - "bedrock:CreateGuardrail", - "bedrock:CreateGuardrailVersion", - "bedrock:GetGuardrail" - ] - }, - "delete": { - "permissions": [ - "bedrock:DeleteFlow", - "bedrock:GetFlow", - "bedrock:DeleteGuardrail", - "bedrock:GetGuardrail" - ] - }, - "list": { - "permissions": [ - "bedrock:ListFlows", - "bedrock:ListGuardrails" - ] - }, - "read": { - "permissions": [ - "bedrock:GetFlow", - "bedrock:ListTagsForResource", - "kms:Decrypt", - "bedrock:GetGuardrail" - ] - }, - "update": { - "permissions": [ - "bedrock:UpdateFlow", - "bedrock:GetFlow", - "bedrock:PrepareFlow", - "iam:PassRole", - "s3:GetObject", - "s3:GetObjectVersion", - "bedrock:TagResource", - "bedrock:UntagResource", - "bedrock:ListTagsForResource", - "kms:GenerateDataKey", - "kms:Decrypt", - "bedrock:UpdateGuardrail", - "bedrock:GetGuardrail" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Arn representation of the Flow", - "maxLength": 1011, - "minLength": 20, - "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:flow/[0-9a-zA-Z]{10}$", - "type": "string" - }, - "CreatedAt": { - "description": "Time Stamp.", - "format": "date-time", - "type": "string" - }, - "CustomerEncryptionKeyArn": { - "description": "A KMS key ARN", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", - "type": "string" - }, - "Definition": { - "$ref": "#/definitions/FlowDefinition" - }, - "DefinitionS3Location": { - "$ref": "#/definitions/S3Location" - }, - "DefinitionString": { - "description": "A JSON string containing a Definition with the same schema as the Definition property of this resource", - "maxLength": 512000, - "type": "string" - }, - "DefinitionSubstitutions": { - "$ref": "#/definitions/DefinitionSubstitutions" - }, - "Description": { - "description": "Description of the flow", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "ExecutionRoleArn": { - "description": "ARN of a IAM role", - "maxLength": 2048, - "pattern": "^arn:aws(-[^:]+)?:iam::([0-9]{12})?:role/(service-role/)?.+$", - "type": "string" - }, - "Id": { - "description": "Identifier for a Flow", - "pattern": "^[0-9a-zA-Z]{10}$", - "type": "string" - }, - "Name": { - "description": "Name for the flow", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/FlowStatus" - }, - "Tags": { - "$ref": "#/definitions/TagsMap" - }, - "TestAliasTags": { - "$ref": "#/definitions/TagsMap" - }, - "UpdatedAt": { - "description": "Time Stamp.", - "format": "date-time", - "type": "string" - }, - "Validations": { - "$ref": "#/definitions/FlowValidations" - }, - "Version": { - "description": "Draft Version.", - "maxLength": 5, - "minLength": 5, - "pattern": "^DRAFT$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/Id", - "/properties/Status", - "/properties/UpdatedAt", - "/properties/Version", - "/properties/Validations" - ], - "required": [ - "ExecutionRoleArn", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-flows", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "bedrock:TagResource", - "bedrock:UntagResource", - "bedrock:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Bedrock::Flow", - "writeOnlyProperties": [ - "/properties/DefinitionString", - "/properties/DefinitionS3Location", - "/properties/DefinitionSubstitutions" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/Id" + ] + ], + "additionalProperties": false, + "definitions": { + "AgentFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Agent flow node configuration", + "properties": { + "AgentAliasArn": { + "description": "Arn representation of the Agent Alias.", + "maxLength": 2048, + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:agent-alias/[0-9a-zA-Z]{10}/[0-9a-zA-Z]{10}$", + "type": "string" + } + }, + "required": [ + "AgentAliasArn" + ], + "type": "object" + }, + "CollectorFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Collector flow node configuration", + "type": "object" + }, + "ConditionFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Condition flow node configuration", + "properties": { + "Conditions": { + "description": "List of conditions in a condition node", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/FlowCondition" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Conditions" + ], + "type": "object" + }, + "DefinitionSubstitutions": { + "additionalProperties": false, + "description": "When supplied with DefinitionString or DefinitionS3Location, substrings in the definition matching ${keyname} will be replaced with the associated value from this map", + "maxProperties": 500, + "minProperties": 1, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "FlowCondition": { + "additionalProperties": false, + "description": "Condition branch for a condition node", + "properties": { + "Expression": { + "description": "Expression for a condition in a flow", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "Name of a condition in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "FlowConditionalConnectionConfiguration": { + "additionalProperties": false, + "description": "Conditional connection configuration", + "properties": { + "Condition": { + "description": "Name of a condition in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + } + }, + "required": [ + "Condition" + ], + "type": "object" + }, + "FlowConnection": { + "additionalProperties": false, + "description": "Flow connection", + "properties": { + "Configuration": { + "$ref": "#/definitions/FlowConnectionConfiguration" + }, + "Name": { + "description": "Name of a connection in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,100}$", + "type": "string" + }, + "Source": { + "description": "Name of a node in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + }, + "Target": { + "description": "Name of a node in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/FlowConnectionType" + } + }, + "required": [ + "Name", + "Source", + "Target", + "Type" + ], + "type": "object" + }, + "FlowConnectionConfiguration": { + "description": "Connection configuration", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Data": { + "$ref": "#/definitions/FlowDataConnectionConfiguration" + } + }, + "required": [ + "Data" + ], + "title": "Data", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Conditional": { + "$ref": "#/definitions/FlowConditionalConnectionConfiguration" + } + }, + "required": [ + "Conditional" + ], + "title": "Conditional", + "type": "object" + } + ] + }, + "FlowConnectionType": { + "description": "Connection type", + "enum": [ + "Data", + "Conditional" + ], + "type": "string" + }, + "FlowDataConnectionConfiguration": { + "additionalProperties": false, + "description": "Data connection configuration", + "properties": { + "SourceOutput": { + "description": "Name of a node output in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + }, + "TargetInput": { + "description": "Name of a node input in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + } + }, + "required": [ + "SourceOutput", + "TargetInput" + ], + "type": "object" + }, + "FlowDefinition": { + "additionalProperties": false, + "description": "Flow definition", + "properties": { + "Connections": { + "description": "List of connections", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/FlowConnection" + }, + "maxItems": 100, + "type": "array" + }, + "Nodes": { + "description": "List of nodes in a flow", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/FlowNode" + }, + "maxItems": 40, + "type": "array" + } + }, + "type": "object" + }, + "FlowNode": { + "additionalProperties": false, + "description": "Internal mixin for flow node", + "properties": { + "Configuration": { + "$ref": "#/definitions/FlowNodeConfiguration" + }, + "Inputs": { + "description": "List of node inputs in a flow", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/FlowNodeInput" + }, + "maxItems": 5, + "type": "array" + }, + "Name": { + "description": "Name of a node in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + }, + "Outputs": { + "description": "List of node outputs in a flow", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/FlowNodeOutput" + }, + "maxItems": 5, + "type": "array" + }, + "Type": { + "$ref": "#/definitions/FlowNodeType" + } + }, + "required": [ + "Name", + "Type" + ], + "type": "object" + }, + "FlowNodeConfiguration": { + "description": "Node configuration in a flow", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Input": { + "$ref": "#/definitions/InputFlowNodeConfiguration" + } + }, + "required": [ + "Input" + ], + "title": "Input", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Output": { + "$ref": "#/definitions/OutputFlowNodeConfiguration" + } + }, + "required": [ + "Output" + ], + "title": "Output", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "KnowledgeBase": { + "$ref": "#/definitions/KnowledgeBaseFlowNodeConfiguration" + } + }, + "required": [ + "KnowledgeBase" + ], + "title": "KnowledgeBase", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Condition": { + "$ref": "#/definitions/ConditionFlowNodeConfiguration" + } + }, + "required": [ + "Condition" + ], + "title": "Condition", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Lex": { + "$ref": "#/definitions/LexFlowNodeConfiguration" + } + }, + "required": [ + "Lex" + ], + "title": "Lex", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Prompt": { + "$ref": "#/definitions/PromptFlowNodeConfiguration" + } + }, + "required": [ + "Prompt" + ], + "title": "Prompt", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "LambdaFunction": { + "$ref": "#/definitions/LambdaFunctionFlowNodeConfiguration" + } + }, + "required": [ + "LambdaFunction" + ], + "title": "LambdaFunction", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Agent": { + "$ref": "#/definitions/AgentFlowNodeConfiguration" + } + }, + "required": [ + "Agent" + ], + "title": "Agent", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Storage": { + "$ref": "#/definitions/StorageFlowNodeConfiguration" + } + }, + "required": [ + "Storage" + ], + "title": "Storage", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Iterator": { + "$ref": "#/definitions/IteratorFlowNodeConfiguration" + } + }, + "required": [ + "Iterator" + ], + "title": "Iterator", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Collector": { + "$ref": "#/definitions/CollectorFlowNodeConfiguration" + } + }, + "required": [ + "Collector" + ], + "title": "Collector", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Retrieval": { + "$ref": "#/definitions/RetrievalFlowNodeConfiguration" + } + }, + "required": [ + "Retrieval" + ], + "title": "Retrieval", + "type": "object" + } + ] + }, + "FlowNodeIODataType": { + "description": "Type of input/output for a node in a flow", + "enum": [ + "String", + "Number", + "Boolean", + "Object", + "Array" + ], + "type": "string" + }, + "FlowNodeInput": { + "additionalProperties": false, + "description": "Input to a node in a flow", + "properties": { + "Expression": { + "description": "Expression for a node input in a flow", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "Name of a node input in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/FlowNodeIODataType" + } + }, + "required": [ + "Expression", + "Name", + "Type" + ], + "type": "object" + }, + "FlowNodeOutput": { + "additionalProperties": false, + "description": "Output of a node in a flow", + "properties": { + "Name": { + "description": "Name of a node output in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/FlowNodeIODataType" + } + }, + "required": [ + "Name", + "Type" + ], + "type": "object" + }, + "FlowNodeType": { + "description": "Flow node types", + "enum": [ + "Input", + "Output", + "KnowledgeBase", + "Condition", + "Lex", + "Prompt", + "LambdaFunction", + "Agent", + "Storage", + "Retrieval", + "Iterator", + "Collector" + ], + "type": "string" + }, + "FlowStatus": { + "description": "Schema Type for Flow APIs", + "enum": [ + "Failed", + "Prepared", + "Preparing", + "NotPrepared" + ], + "type": "string" + }, + "FlowValidation": { + "additionalProperties": false, + "description": "Validation for Flow", + "properties": { + "Message": { + "description": "validation message", + "type": "string" + } + }, + "required": [ + "Message" + ], + "type": "object" + }, + "FlowValidations": { + "description": "List of flow validations", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/FlowValidation" + }, + "type": "array" + }, + "GuardrailConfiguration": { + "additionalProperties": false, + "description": "Configuration for a guardrail", + "properties": { + "GuardrailIdentifier": { + "description": "Identifier for the guardrail, could be the id or the arn", + "maxLength": 2048, + "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$", + "type": "string" + }, + "GuardrailVersion": { + "description": "Version of the guardrail", + "pattern": "^(([0-9]{1,8})|(DRAFT))$", + "type": "string" + } + }, + "type": "object" + }, + "InputFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Input flow node configuration", + "type": "object" + }, + "IteratorFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Iterator flow node configuration", + "type": "object" + }, + "KnowledgeBaseFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Knowledge base flow node configuration", + "properties": { + "GuardrailConfiguration": { + "$ref": "#/definitions/GuardrailConfiguration" + }, + "KnowledgeBaseId": { + "description": "Identifier of the KnowledgeBase", + "maxLength": 10, + "pattern": "^[0-9a-zA-Z]+$", + "type": "string" + }, + "ModelId": { + "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^(arn:aws(-[^:]{1,12})?:(bedrock|sagemaker):[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", + "type": "string" + } + }, + "required": [ + "KnowledgeBaseId" + ], + "type": "object" + }, + "LambdaFunctionFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Lambda function flow node configuration", + "properties": { + "LambdaArn": { + "description": "ARN of a Lambda.", + "maxLength": 2048, + "pattern": "^arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-_\\.]+(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", + "type": "string" + } + }, + "required": [ + "LambdaArn" + ], + "type": "object" + }, + "LexFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Lex flow node configuration", + "properties": { + "BotAliasArn": { + "description": "ARN of a Lex bot alias", + "maxLength": 78, + "pattern": "^arn:aws(|-us-gov):lex:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:bot-alias/[0-9a-zA-Z]+/[0-9a-zA-Z]+$", + "type": "string" + }, + "LocaleId": { + "description": "Lex bot locale id", + "maxLength": 10, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "BotAliasArn", + "LocaleId" + ], + "type": "object" + }, + "OutputFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Output flow node configuration", + "type": "object" + }, + "PromptFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Prompt flow node configuration", + "properties": { + "GuardrailConfiguration": { + "$ref": "#/definitions/GuardrailConfiguration" + }, + "SourceConfiguration": { + "$ref": "#/definitions/PromptFlowNodeSourceConfiguration" + } + }, + "required": [ + "SourceConfiguration" + ], + "type": "object" + }, + "PromptFlowNodeInlineConfiguration": { + "additionalProperties": false, + "description": "Inline prompt configuration for prompt node", + "properties": { + "InferenceConfiguration": { + "$ref": "#/definitions/PromptInferenceConfiguration" + }, + "ModelId": { + "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^(arn:aws(-[^:]{1,12})?:(bedrock|sagemaker):[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", + "type": "string" + }, + "TemplateConfiguration": { + "$ref": "#/definitions/PromptTemplateConfiguration" + }, + "TemplateType": { + "$ref": "#/definitions/PromptTemplateType" + } + }, + "required": [ + "ModelId", + "TemplateConfiguration", + "TemplateType" + ], + "type": "object" + }, + "PromptFlowNodeResourceConfiguration": { + "additionalProperties": false, + "description": "Resource prompt configuration for prompt node", + "properties": { + "PromptArn": { + "description": "ARN of a prompt resource possibly with a version", + "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:prompt/[0-9a-zA-Z]{10}(?::[0-9]{1,5})?)$", + "type": "string" + } + }, + "required": [ + "PromptArn" + ], + "type": "object" + }, + "PromptFlowNodeSourceConfiguration": { + "description": "Prompt source configuration for prompt node", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Resource": { + "$ref": "#/definitions/PromptFlowNodeResourceConfiguration" + } + }, + "required": [ + "Resource" + ], + "title": "Resource", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Inline": { + "$ref": "#/definitions/PromptFlowNodeInlineConfiguration" + } + }, + "required": [ + "Inline" + ], + "title": "Inline", + "type": "object" + } + ] + }, + "PromptInferenceConfiguration": { + "description": "Model inference configuration", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Text": { + "$ref": "#/definitions/PromptModelInferenceConfiguration" + } + }, + "required": [ + "Text" + ], + "title": "Text", + "type": "object" + } + ] + }, + "PromptInputVariable": { + "additionalProperties": false, + "description": "Input variable", + "properties": { + "Name": { + "description": "Name for an input variable", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + } + }, + "type": "object" + }, + "PromptModelInferenceConfiguration": { + "additionalProperties": false, + "description": "Prompt model inference configuration", + "properties": { + "MaxTokens": { + "description": "Maximum length of output", + "maximum": 4096, + "minimum": 0, + "type": "number" + }, + "StopSequences": { + "description": "List of stop sequences", + "insertionOrder": true, + "items": { + "type": "string" + }, + "maxItems": 4, + "minItems": 0, + "type": "array" + }, + "Temperature": { + "description": "Controls randomness, higher values increase diversity", + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "TopP": { + "description": "Cumulative probability cutoff for token selection", + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "PromptTemplateConfiguration": { + "description": "Prompt template configuration", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Text": { + "$ref": "#/definitions/TextPromptTemplateConfiguration" + } + }, + "required": [ + "Text" + ], + "title": "Text", + "type": "object" + } + ] + }, + "PromptTemplateType": { + "description": "Prompt template type", + "enum": [ + "TEXT" + ], + "type": "string" + }, + "RetrievalFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Retrieval flow node configuration", + "properties": { + "ServiceConfiguration": { + "$ref": "#/definitions/RetrievalFlowNodeServiceConfiguration" + } + }, + "required": [ + "ServiceConfiguration" + ], + "type": "object" + }, + "RetrievalFlowNodeS3Configuration": { + "additionalProperties": false, + "description": "s3 Retrieval configuration for Retrieval node", + "properties": { + "BucketName": { + "description": "bucket name of an s3 that will be used for Retrieval flow node configuration", + "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", + "type": "string" + } + }, + "required": [ + "BucketName" + ], + "type": "object" + }, + "RetrievalFlowNodeServiceConfiguration": { + "description": "Retrieval service configuration for Retrieval node", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "S3": { + "$ref": "#/definitions/RetrievalFlowNodeS3Configuration" + } + }, + "title": "S3", + "type": "object" + } + ] + }, + "S3Location": { + "additionalProperties": false, + "description": "A bucket, key and optional version pointing to an S3 object containing a UTF-8 encoded JSON string Definition with the same schema as the Definition property of this resource", + "properties": { + "Bucket": { + "description": "A bucket in S3", + "maxLength": 63, + "minLength": 3, + "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", + "type": "string" + }, + "Key": { + "description": "A object key in S3", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Version": { + "description": "The version of the the S3 object to use", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Bucket", + "Key" + ], + "type": "object" + }, + "StorageFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Storage flow node configuration", + "properties": { + "ServiceConfiguration": { + "$ref": "#/definitions/StorageFlowNodeServiceConfiguration" + } + }, + "required": [ + "ServiceConfiguration" + ], + "type": "object" + }, + "StorageFlowNodeS3Configuration": { + "additionalProperties": false, + "description": "s3 storage configuration for storage node", + "properties": { + "BucketName": { + "description": "bucket name of an s3 that will be used for storage flow node configuration", + "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", + "type": "string" + } + }, + "required": [ + "BucketName" + ], + "type": "object" + }, + "StorageFlowNodeServiceConfiguration": { + "description": "storage service configuration for storage node", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "S3": { + "$ref": "#/definitions/StorageFlowNodeS3Configuration" + } + }, + "title": "S3", + "type": "object" + } + ] + }, + "TagsMap": { + "additionalProperties": false, + "description": "A map of tag keys and values", + "patternProperties": { + "^[a-zA-Z0-9\\s._:/=+@-]*$": { + "description": "Value of a tag", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + } + }, + "type": "object" + }, + "TextPromptTemplateConfiguration": { + "additionalProperties": false, + "description": "Configuration for text prompt template", + "properties": { + "InputVariables": { + "description": "List of input variables", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PromptInputVariable" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "Text": { + "description": "Prompt content for String prompt template", + "maxLength": 200000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Text" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Bedrock::Flow Resource Type", + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateFlow", + "bedrock:GetFlow", + "bedrock:PrepareFlow", + "iam:PassRole", + "s3:GetObject", + "s3:GetObjectVersion", + "bedrock:TagResource", + "bedrock:ListTagsForResource", + "kms:GenerateDataKey", + "kms:Decrypt", + "bedrock:CreateGuardrail", + "bedrock:CreateGuardrailVersion", + "bedrock:GetGuardrail" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeleteFlow", + "bedrock:GetFlow", + "bedrock:DeleteGuardrail", + "bedrock:GetGuardrail" + ] + }, + "list": { + "permissions": [ + "bedrock:ListFlows", + "bedrock:ListGuardrails" + ] + }, + "read": { + "permissions": [ + "bedrock:GetFlow", + "bedrock:ListTagsForResource", + "kms:Decrypt", + "bedrock:GetGuardrail" + ] + }, + "update": { + "permissions": [ + "bedrock:UpdateFlow", + "bedrock:GetFlow", + "bedrock:PrepareFlow", + "iam:PassRole", + "s3:GetObject", + "s3:GetObjectVersion", + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource", + "kms:GenerateDataKey", + "kms:Decrypt", + "bedrock:UpdateGuardrail", + "bedrock:GetGuardrail" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Arn representation of the Flow", + "maxLength": 1011, + "minLength": 20, + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:flow/[0-9a-zA-Z]{10}$", + "type": "string" + }, + "CreatedAt": { + "description": "Time Stamp.", + "format": "date-time", + "type": "string" + }, + "CustomerEncryptionKeyArn": { + "description": "A KMS key ARN", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", + "type": "string" + }, + "Definition": { + "$ref": "#/definitions/FlowDefinition" + }, + "DefinitionS3Location": { + "$ref": "#/definitions/S3Location" + }, + "DefinitionString": { + "description": "A JSON string containing a Definition with the same schema as the Definition property of this resource", + "maxLength": 512000, + "type": "string" + }, + "DefinitionSubstitutions": { + "$ref": "#/definitions/DefinitionSubstitutions" + }, + "Description": { + "description": "Description of the flow", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "ExecutionRoleArn": { + "description": "ARN of a IAM role", + "maxLength": 2048, + "pattern": "^arn:aws(-[^:]+)?:iam::([0-9]{12})?:role/(service-role/)?.+$", + "type": "string" + }, + "Id": { + "description": "Identifier for a Flow", + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "Name": { + "description": "Name for the flow", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/FlowStatus" + }, + "Tags": { + "$ref": "#/definitions/TagsMap" + }, + "TestAliasTags": { + "$ref": "#/definitions/TagsMap" + }, + "UpdatedAt": { + "description": "Time Stamp.", + "format": "date-time", + "type": "string" + }, + "Validations": { + "$ref": "#/definitions/FlowValidations" + }, + "Version": { + "description": "Draft Version.", + "maxLength": 5, + "minLength": 5, + "pattern": "^DRAFT$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/Id", + "/properties/Status", + "/properties/UpdatedAt", + "/properties/Version", + "/properties/Validations" + ], + "required": [ + "ExecutionRoleArn", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-flows", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Bedrock::Flow", + "writeOnlyProperties": [ + "/properties/DefinitionString", + "/properties/DefinitionS3Location", + "/properties/DefinitionSubstitutions" + ] +} diff --git a/src/schema/aws-bedrock-flowalias.json b/src/schema/aws-bedrock-flowalias.json index f30b9e7a..f5e6e149 100644 --- a/src/schema/aws-bedrock-flowalias.json +++ b/src/schema/aws-bedrock-flowalias.json @@ -1,172 +1,172 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FlowArn" - ], - "definitions": { - "FlowAliasRoutingConfigurationListItem": { - "additionalProperties": false, - "description": "Details about the routing configuration for a Flow alias.", - "properties": { - "FlowVersion": { - "description": "Version.", - "maxLength": 5, - "minLength": 1, - "pattern": "^(DRAFT|[0-9]{0,4}[1-9][0-9]{0,4})$", - "type": "string" - } - }, - "type": "object" - }, - "TagsMap": { - "additionalProperties": false, - "description": "A map of tag keys and values", - "patternProperties": { - "^[a-zA-Z0-9\\s._:/=+@-]*$": { - "description": "Value of a tag", - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::Bedrock::FlowAlias Resource Type", - "handlers": { - "create": { - "permissions": [ - "bedrock:CreateFlowAlias", - "bedrock:GetFlowAlias", - "bedrock:TagResource", - "bedrock:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "bedrock:DeleteFlowAlias" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "FlowArn": { - "$ref": "resource-schema.json#/properties/FlowArn" - } - }, - "required": [ - "FlowArn" - ] - }, - "permissions": [ - "bedrock:ListFlowAliases" - ] - }, - "read": { - "permissions": [ - "bedrock:GetFlowAlias", - "bedrock:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "bedrock:UpdateFlowAlias", - "bedrock:GetFlowAlias", - "bedrock:TagResource", - "bedrock:UntagResource", - "bedrock:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn", - "/properties/FlowArn" - ], - "properties": { - "Arn": { - "description": "Arn of the Flow Alias", - "maxLength": 2048, - "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:flow/[0-9a-zA-Z]{10}/alias/[0-9a-zA-Z]{10}$", - "type": "string" - }, - "CreatedAt": { - "description": "Time Stamp.", - "format": "date-time", - "type": "string" - }, - "Description": { - "description": "Description of the Resource.", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "FlowArn": { - "description": "Arn representation of the Flow", - "maxLength": 2048, - "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:flow/[0-9a-zA-Z]{10}$", - "type": "string" - }, - "FlowId": { - "description": "Identifier for a flow resource.", - "pattern": "^[0-9a-zA-Z]{10}$", - "type": "string" - }, - "Id": { - "description": "Id for a Flow Alias generated at the server side.", - "maxLength": 10, - "minLength": 10, - "pattern": "^(\\bTSTALIASID\\b|[0-9a-zA-Z]+)$", - "type": "string" - }, - "Name": { - "description": "Name for a resource.", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - }, - "RoutingConfiguration": { - "description": "Routing configuration for a Flow alias.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/FlowAliasRoutingConfigurationListItem" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "Tags": { - "$ref": "#/definitions/TagsMap" - }, - "UpdatedAt": { - "description": "Time Stamp.", - "format": "date-time", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/FlowId", - "/properties/Id", - "/properties/UpdatedAt" - ], - "required": [ - "Name", - "FlowArn", - "RoutingConfiguration" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-flows", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "bedrock:TagResource", - "bedrock:UntagResource", - "bedrock:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Bedrock::FlowAlias" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FlowArn" + ], + "definitions": { + "FlowAliasRoutingConfigurationListItem": { + "additionalProperties": false, + "description": "Details about the routing configuration for a Flow alias.", + "properties": { + "FlowVersion": { + "description": "Version.", + "maxLength": 5, + "minLength": 1, + "pattern": "^(DRAFT|[0-9]{0,4}[1-9][0-9]{0,4})$", + "type": "string" + } + }, + "type": "object" + }, + "TagsMap": { + "additionalProperties": false, + "description": "A map of tag keys and values", + "patternProperties": { + "^[a-zA-Z0-9\\s._:/=+@-]*$": { + "description": "Value of a tag", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::Bedrock::FlowAlias Resource Type", + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateFlowAlias", + "bedrock:GetFlowAlias", + "bedrock:TagResource", + "bedrock:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeleteFlowAlias" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FlowArn": { + "$ref": "resource-schema.json#/properties/FlowArn" + } + }, + "required": [ + "FlowArn" + ] + }, + "permissions": [ + "bedrock:ListFlowAliases" + ] + }, + "read": { + "permissions": [ + "bedrock:GetFlowAlias", + "bedrock:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "bedrock:UpdateFlowAlias", + "bedrock:GetFlowAlias", + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn", + "/properties/FlowArn" + ], + "properties": { + "Arn": { + "description": "Arn of the Flow Alias", + "maxLength": 2048, + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:flow/[0-9a-zA-Z]{10}/alias/[0-9a-zA-Z]{10}$", + "type": "string" + }, + "CreatedAt": { + "description": "Time Stamp.", + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "Description of the Resource.", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "FlowArn": { + "description": "Arn representation of the Flow", + "maxLength": 2048, + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:flow/[0-9a-zA-Z]{10}$", + "type": "string" + }, + "FlowId": { + "description": "Identifier for a flow resource.", + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "Id": { + "description": "Id for a Flow Alias generated at the server side.", + "maxLength": 10, + "minLength": 10, + "pattern": "^(\\bTSTALIASID\\b|[0-9a-zA-Z]+)$", + "type": "string" + }, + "Name": { + "description": "Name for a resource.", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "RoutingConfiguration": { + "description": "Routing configuration for a Flow alias.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/FlowAliasRoutingConfigurationListItem" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "Tags": { + "$ref": "#/definitions/TagsMap" + }, + "UpdatedAt": { + "description": "Time Stamp.", + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/FlowId", + "/properties/Id", + "/properties/UpdatedAt" + ], + "required": [ + "Name", + "FlowArn", + "RoutingConfiguration" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-flows", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Bedrock::FlowAlias" +} diff --git a/src/schema/aws-bedrock-flowversion.json b/src/schema/aws-bedrock-flowversion.json index 362e0ce3..caf8cd9b 100644 --- a/src/schema/aws-bedrock-flowversion.json +++ b/src/schema/aws-bedrock-flowversion.json @@ -1,1004 +1,1004 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Description", - "/properties/FlowArn" - ], - "definitions": { - "AgentFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Agent flow node configuration", - "properties": { - "AgentAliasArn": { - "description": "Arn representation of the Agent Alias.", - "maxLength": 2048, - "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:agent-alias/[0-9a-zA-Z]{10}/[0-9a-zA-Z]{10}$", - "type": "string" - } - }, - "required": [ - "AgentAliasArn" - ], - "type": "object" - }, - "CollectorFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Collector flow node configuration", - "type": "object" - }, - "ConditionFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Condition flow node configuration", - "properties": { - "Conditions": { - "description": "List of conditions in a condition node", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/FlowCondition" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Conditions" - ], - "type": "object" - }, - "FlowCondition": { - "additionalProperties": false, - "description": "Condition branch for a condition node", - "properties": { - "Expression": { - "description": "Expression for a condition in a flow", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "Name of a condition in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "FlowConditionalConnectionConfiguration": { - "additionalProperties": false, - "description": "Conditional connection configuration", - "properties": { - "Condition": { - "description": "Name of a condition in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - } - }, - "required": [ - "Condition" - ], - "type": "object" - }, - "FlowConnection": { - "additionalProperties": false, - "description": "Flow connection", - "properties": { - "Configuration": { - "$ref": "#/definitions/FlowConnectionConfiguration" - }, - "Name": { - "description": "Name of a connection in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,100}$", - "type": "string" - }, - "Source": { - "description": "Name of a node in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - }, - "Target": { - "description": "Name of a node in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/FlowConnectionType" - } - }, - "required": [ - "Name", - "Source", - "Target", - "Type" - ], - "type": "object" - }, - "FlowConnectionConfiguration": { - "description": "Connection configuration", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Data": { - "$ref": "#/definitions/FlowDataConnectionConfiguration" - } - }, - "required": [ - "Data" - ], - "title": "Data", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Conditional": { - "$ref": "#/definitions/FlowConditionalConnectionConfiguration" - } - }, - "required": [ - "Conditional" - ], - "title": "Conditional", - "type": "object" - } - ] - }, - "FlowConnectionType": { - "description": "Connection type", - "enum": [ - "Data", - "Conditional" - ], - "type": "string" - }, - "FlowDataConnectionConfiguration": { - "additionalProperties": false, - "description": "Data connection configuration", - "properties": { - "SourceOutput": { - "description": "Name of a node output in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - }, - "TargetInput": { - "description": "Name of a node input in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - } - }, - "required": [ - "SourceOutput", - "TargetInput" - ], - "type": "object" - }, - "FlowDefinition": { - "additionalProperties": false, - "description": "Flow definition", - "properties": { - "Connections": { - "description": "List of connections", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/FlowConnection" - }, - "maxItems": 20, - "type": "array" - }, - "Nodes": { - "description": "List of nodes in a flow", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/FlowNode" - }, - "maxItems": 20, - "type": "array" - } - }, - "type": "object" - }, - "FlowNode": { - "additionalProperties": false, - "description": "Internal mixin for flow node", - "properties": { - "Configuration": { - "$ref": "#/definitions/FlowNodeConfiguration" - }, - "Inputs": { - "description": "List of node inputs in a flow", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/FlowNodeInput" - }, - "maxItems": 5, - "type": "array" - }, - "Name": { - "description": "Name of a node in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - }, - "Outputs": { - "description": "List of node outputs in a flow", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/FlowNodeOutput" - }, - "maxItems": 5, - "type": "array" - }, - "Type": { - "$ref": "#/definitions/FlowNodeType" - } - }, - "required": [ - "Name", - "Type" - ], - "type": "object" - }, - "FlowNodeConfiguration": { - "description": "Node configuration in a flow", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Input": { - "$ref": "#/definitions/InputFlowNodeConfiguration" - } - }, - "required": [ - "Input" - ], - "title": "Input", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Output": { - "$ref": "#/definitions/OutputFlowNodeConfiguration" - } - }, - "required": [ - "Output" - ], - "title": "Output", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "KnowledgeBase": { - "$ref": "#/definitions/KnowledgeBaseFlowNodeConfiguration" - } - }, - "required": [ - "KnowledgeBase" - ], - "title": "KnowledgeBase", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Condition": { - "$ref": "#/definitions/ConditionFlowNodeConfiguration" - } - }, - "required": [ - "Condition" - ], - "title": "Condition", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Lex": { - "$ref": "#/definitions/LexFlowNodeConfiguration" - } - }, - "required": [ - "Lex" - ], - "title": "Lex", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Prompt": { - "$ref": "#/definitions/PromptFlowNodeConfiguration" - } - }, - "required": [ - "Prompt" - ], - "title": "Prompt", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "LambdaFunction": { - "$ref": "#/definitions/LambdaFunctionFlowNodeConfiguration" - } - }, - "required": [ - "LambdaFunction" - ], - "title": "LambdaFunction", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Agent": { - "$ref": "#/definitions/AgentFlowNodeConfiguration" - } - }, - "required": [ - "Agent" - ], - "title": "Agent", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Storage": { - "$ref": "#/definitions/StorageFlowNodeConfiguration" - } - }, - "required": [ - "Storage" - ], - "title": "Storage", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Retrieval": { - "$ref": "#/definitions/RetrievalFlowNodeConfiguration" - } - }, - "required": [ - "Retrieval" - ], - "title": "Retrieval", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Iterator": { - "$ref": "#/definitions/IteratorFlowNodeConfiguration" - } - }, - "required": [ - "Iterator" - ], - "title": "Iterator", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Collector": { - "$ref": "#/definitions/CollectorFlowNodeConfiguration" - } - }, - "required": [ - "Collector" - ], - "title": "Collector", - "type": "object" - } - ] - }, - "FlowNodeIODataType": { - "description": "Type of input/output for a node in a flow", - "enum": [ - "String", - "Number", - "Boolean", - "Object", - "Array" - ], - "type": "string" - }, - "FlowNodeInput": { - "additionalProperties": false, - "description": "Input to a node in a flow", - "properties": { - "Expression": { - "description": "Expression for a node input in a flow", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "Name of a node input in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/FlowNodeIODataType" - } - }, - "required": [ - "Expression", - "Name", - "Type" - ], - "type": "object" - }, - "FlowNodeOutput": { - "additionalProperties": false, - "description": "Output of a node in a flow", - "properties": { - "Name": { - "description": "Name of a node output in a flow", - "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/FlowNodeIODataType" - } - }, - "required": [ - "Name", - "Type" - ], - "type": "object" - }, - "FlowNodeType": { - "description": "Flow node types", - "enum": [ - "Input", - "Output", - "KnowledgeBase", - "Condition", - "Lex", - "Prompt", - "LambdaFunction", - "Agent", - "Iterator", - "Collector", - "Storage", - "Retrieval" - ], - "type": "string" - }, - "FlowStatus": { - "description": "Schema Type for Flow APIs", - "enum": [ - "Failed", - "Prepared", - "Preparing", - "NotPrepared" - ], - "type": "string" - }, - "GuardrailConfiguration": { - "additionalProperties": false, - "description": "Configuration for a guardrail", - "properties": { - "GuardrailIdentifier": { - "description": "Identifier for the guardrail, could be the id or the arn", - "maxLength": 2048, - "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$", - "type": "string" - }, - "GuardrailVersion": { - "description": "Version of the guardrail", - "pattern": "^(([0-9]{1,8})|(DRAFT))$", - "type": "string" - } - }, - "type": "object" - }, - "InputFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Input flow node configuration", - "type": "object" - }, - "IteratorFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Iterator flow node configuration", - "type": "object" - }, - "KnowledgeBaseFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Knowledge base flow node configuration", - "properties": { - "GuardrailConfiguration": { - "$ref": "#/definitions/GuardrailConfiguration" - }, - "KnowledgeBaseId": { - "description": "Identifier of the KnowledgeBase", - "maxLength": 10, - "pattern": "^[0-9a-zA-Z]+$", - "type": "string" - }, - "ModelId": { - "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^(arn:aws(-[^:]{1,12})?:(bedrock|sagemaker):[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", - "type": "string" - } - }, - "required": [ - "KnowledgeBaseId" - ], - "type": "object" - }, - "LambdaFunctionFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Lambda function flow node configuration", - "properties": { - "LambdaArn": { - "description": "ARN of a Lambda.", - "maxLength": 2048, - "pattern": "^arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-_\\.]+(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", - "type": "string" - } - }, - "required": [ - "LambdaArn" - ], - "type": "object" - }, - "LexFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Lex flow node configuration", - "properties": { - "BotAliasArn": { - "description": "ARN of a Lex bot alias", - "maxLength": 78, - "pattern": "^arn:aws(|-us-gov):lex:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:bot-alias/[0-9a-zA-Z]+/[0-9a-zA-Z]+$", - "type": "string" - }, - "LocaleId": { - "description": "Lex bot locale id", - "maxLength": 10, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "BotAliasArn", - "LocaleId" - ], - "type": "object" - }, - "OutputFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Output flow node configuration", - "type": "object" - }, - "PromptFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Prompt flow node configuration", - "properties": { - "GuardrailConfiguration": { - "$ref": "#/definitions/GuardrailConfiguration" - }, - "SourceConfiguration": { - "$ref": "#/definitions/PromptFlowNodeSourceConfiguration" - } - }, - "required": [ - "SourceConfiguration" - ], - "type": "object" - }, - "PromptFlowNodeInlineConfiguration": { - "additionalProperties": false, - "description": "Inline prompt configuration for prompt node", - "properties": { - "InferenceConfiguration": { - "$ref": "#/definitions/PromptInferenceConfiguration" - }, - "ModelId": { - "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^(arn:aws(-[^:]{1,12})?:(bedrock|sagemaker):[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", - "type": "string" - }, - "TemplateConfiguration": { - "$ref": "#/definitions/PromptTemplateConfiguration" - }, - "TemplateType": { - "$ref": "#/definitions/PromptTemplateType" - } - }, - "required": [ - "ModelId", - "TemplateConfiguration", - "TemplateType" - ], - "type": "object" - }, - "PromptFlowNodeResourceConfiguration": { - "additionalProperties": false, - "description": "Resource prompt configuration for prompt node", - "properties": { - "PromptArn": { - "description": "ARN of a prompt resource possibly with a version", - "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:prompt/[0-9a-zA-Z]{10}(?::[0-9]{1,5})?)$", - "type": "string" - } - }, - "required": [ - "PromptArn" - ], - "type": "object" - }, - "PromptFlowNodeSourceConfiguration": { - "description": "Prompt source configuration for prompt node", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Resource": { - "$ref": "#/definitions/PromptFlowNodeResourceConfiguration" - } - }, - "required": [ - "Resource" - ], - "title": "Resource", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Inline": { - "$ref": "#/definitions/PromptFlowNodeInlineConfiguration" - } - }, - "required": [ - "Inline" - ], - "title": "Inline", - "type": "object" - } - ] - }, - "PromptInferenceConfiguration": { - "description": "Model inference configuration", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Text": { - "$ref": "#/definitions/PromptModelInferenceConfiguration" - } - }, - "required": [ - "Text" - ], - "title": "Text", - "type": "object" - } - ] - }, - "PromptInputVariable": { - "additionalProperties": false, - "description": "Input variable", - "properties": { - "Name": { - "description": "Name for an input variable", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - } - }, - "type": "object" - }, - "PromptModelInferenceConfiguration": { - "additionalProperties": false, - "description": "Prompt model inference configuration", - "properties": { - "MaxTokens": { - "description": "Maximum length of output", - "maximum": 4096, - "minimum": 0, - "type": "number" - }, - "StopSequences": { - "description": "List of stop sequences", - "insertionOrder": true, - "items": { - "type": "string" - }, - "maxItems": 4, - "minItems": 0, - "type": "array" - }, - "Temperature": { - "description": "Controls randomness, higher values increase diversity", - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "TopP": { - "description": "Cumulative probability cutoff for token selection", - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "PromptTemplateConfiguration": { - "description": "Prompt template configuration", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Text": { - "$ref": "#/definitions/TextPromptTemplateConfiguration" - } - }, - "required": [ - "Text" - ], - "title": "Text", - "type": "object" - } - ] - }, - "PromptTemplateType": { - "description": "Prompt template type", - "enum": [ - "TEXT" - ], - "type": "string" - }, - "RetrievalFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Retrieval flow node configuration", - "properties": { - "ServiceConfiguration": { - "$ref": "#/definitions/RetrievalFlowNodeServiceConfiguration" - } - }, - "required": [ - "ServiceConfiguration" - ], - "type": "object" - }, - "RetrievalFlowNodeS3Configuration": { - "additionalProperties": false, - "description": "s3 Retrieval configuration for Retrieval node", - "properties": { - "BucketName": { - "description": "bucket name of an s3 that will be used for Retrieval flow node configuration", - "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "RetrievalFlowNodeServiceConfiguration": { - "description": "Retrieval service configuration for Retrieval node", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "S3": { - "$ref": "#/definitions/RetrievalFlowNodeS3Configuration" - } - }, - "title": "S3", - "type": "object" - } - ] - }, - "StorageFlowNodeConfiguration": { - "additionalProperties": false, - "description": "Storage flow node configuration", - "properties": { - "ServiceConfiguration": { - "$ref": "#/definitions/StorageFlowNodeServiceConfiguration" - } - }, - "required": [ - "ServiceConfiguration" - ], - "type": "object" - }, - "StorageFlowNodeS3Configuration": { - "additionalProperties": false, - "description": "s3 storage configuration for storage node", - "properties": { - "BucketName": { - "description": "bucket name of an s3 that will be used for storage flow node configuration", - "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "StorageFlowNodeServiceConfiguration": { - "description": "storage service configuration for storage node", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "S3": { - "$ref": "#/definitions/StorageFlowNodeS3Configuration" - } - }, - "title": "S3", - "type": "object" - } - ] - }, - "TextPromptTemplateConfiguration": { - "additionalProperties": false, - "description": "Configuration for text prompt template", - "properties": { - "InputVariables": { - "description": "List of input variables", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PromptInputVariable" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - }, - "Text": { - "description": "Prompt content for String prompt template", - "maxLength": 200000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Text" - ], - "type": "object" - } - }, - "description": "Definition of AWS::Bedrock::FlowVersion Resource Type", - "handlers": { - "create": { - "permissions": [ - "bedrock:CreateFlowVersion", - "bedrock:GetFlowVersion", - "kms:GenerateDataKey", - "kms:Decrypt", - "bedrock:CreateGuardrail", - "bedrock:CreateGuardrailVersion", - "bedrock:GetGuardrail" - ] - }, - "delete": { - "permissions": [ - "bedrock:DeleteFlowVersion", - "bedrock:GetFlowVersion", - "bedrock:DeleteGuardrail", - "bedrock:GetGuardrail" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "FlowArn": { - "$ref": "resource-schema.json#/properties/FlowArn" - } - }, - "required": [ - "FlowArn" - ] - }, - "permissions": [ - "bedrock:ListFlowVersions", - "bedrock:ListGuardrails" - ] - }, - "read": { - "permissions": [ - "bedrock:GetFlowVersion", - "kms:Decrypt", - "bedrock:GetGuardrail" - ] - }, - "update": { - "permissions": [ - "noservice:NoAction" - ] - } - }, - "primaryIdentifier": [ - "/properties/FlowArn", - "/properties/Version" - ], - "properties": { - "CreatedAt": { - "description": "Time Stamp.", - "format": "date-time", - "type": "string" - }, - "CustomerEncryptionKeyArn": { - "description": "A KMS key ARN", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", - "type": "string" - }, - "Definition": { - "$ref": "#/definitions/FlowDefinition" - }, - "Description": { - "description": "Description of the flow version", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "ExecutionRoleArn": { - "description": "ARN of a IAM role", - "maxLength": 2048, - "pattern": "^arn:aws(-[^:]+)?:iam::([0-9]{12})?:role/(service-role/)?.+$", - "type": "string" - }, - "FlowArn": { - "description": "Arn representation of the Flow", - "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:flow/[0-9a-zA-Z]{10}$", - "type": "string" - }, - "FlowId": { - "description": "Identifier for a Flow", - "pattern": "^[0-9a-zA-Z]{10}$", - "type": "string" - }, - "Name": { - "description": "Name for the flow", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/FlowStatus" - }, - "Version": { - "description": "Numerical Version.", - "pattern": "^[0-9]{1,5}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/Definition", - "/properties/ExecutionRoleArn", - "/properties/FlowId", - "/properties/Name", - "/properties/Status", - "/properties/Version", - "/properties/CustomerEncryptionKeyArn" - ], - "required": [ - "FlowArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-flows", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Bedrock::FlowVersion" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description", + "/properties/FlowArn" + ], + "definitions": { + "AgentFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Agent flow node configuration", + "properties": { + "AgentAliasArn": { + "description": "Arn representation of the Agent Alias.", + "maxLength": 2048, + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:agent-alias/[0-9a-zA-Z]{10}/[0-9a-zA-Z]{10}$", + "type": "string" + } + }, + "required": [ + "AgentAliasArn" + ], + "type": "object" + }, + "CollectorFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Collector flow node configuration", + "type": "object" + }, + "ConditionFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Condition flow node configuration", + "properties": { + "Conditions": { + "description": "List of conditions in a condition node", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/FlowCondition" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Conditions" + ], + "type": "object" + }, + "FlowCondition": { + "additionalProperties": false, + "description": "Condition branch for a condition node", + "properties": { + "Expression": { + "description": "Expression for a condition in a flow", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "Name of a condition in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "FlowConditionalConnectionConfiguration": { + "additionalProperties": false, + "description": "Conditional connection configuration", + "properties": { + "Condition": { + "description": "Name of a condition in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + } + }, + "required": [ + "Condition" + ], + "type": "object" + }, + "FlowConnection": { + "additionalProperties": false, + "description": "Flow connection", + "properties": { + "Configuration": { + "$ref": "#/definitions/FlowConnectionConfiguration" + }, + "Name": { + "description": "Name of a connection in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,100}$", + "type": "string" + }, + "Source": { + "description": "Name of a node in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + }, + "Target": { + "description": "Name of a node in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/FlowConnectionType" + } + }, + "required": [ + "Name", + "Source", + "Target", + "Type" + ], + "type": "object" + }, + "FlowConnectionConfiguration": { + "description": "Connection configuration", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Data": { + "$ref": "#/definitions/FlowDataConnectionConfiguration" + } + }, + "required": [ + "Data" + ], + "title": "Data", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Conditional": { + "$ref": "#/definitions/FlowConditionalConnectionConfiguration" + } + }, + "required": [ + "Conditional" + ], + "title": "Conditional", + "type": "object" + } + ] + }, + "FlowConnectionType": { + "description": "Connection type", + "enum": [ + "Data", + "Conditional" + ], + "type": "string" + }, + "FlowDataConnectionConfiguration": { + "additionalProperties": false, + "description": "Data connection configuration", + "properties": { + "SourceOutput": { + "description": "Name of a node output in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + }, + "TargetInput": { + "description": "Name of a node input in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + } + }, + "required": [ + "SourceOutput", + "TargetInput" + ], + "type": "object" + }, + "FlowDefinition": { + "additionalProperties": false, + "description": "Flow definition", + "properties": { + "Connections": { + "description": "List of connections", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/FlowConnection" + }, + "maxItems": 100, + "type": "array" + }, + "Nodes": { + "description": "List of nodes in a flow", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/FlowNode" + }, + "maxItems": 40, + "type": "array" + } + }, + "type": "object" + }, + "FlowNode": { + "additionalProperties": false, + "description": "Internal mixin for flow node", + "properties": { + "Configuration": { + "$ref": "#/definitions/FlowNodeConfiguration" + }, + "Inputs": { + "description": "List of node inputs in a flow", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/FlowNodeInput" + }, + "maxItems": 5, + "type": "array" + }, + "Name": { + "description": "Name of a node in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + }, + "Outputs": { + "description": "List of node outputs in a flow", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/FlowNodeOutput" + }, + "maxItems": 5, + "type": "array" + }, + "Type": { + "$ref": "#/definitions/FlowNodeType" + } + }, + "required": [ + "Name", + "Type" + ], + "type": "object" + }, + "FlowNodeConfiguration": { + "description": "Node configuration in a flow", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Input": { + "$ref": "#/definitions/InputFlowNodeConfiguration" + } + }, + "required": [ + "Input" + ], + "title": "Input", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Output": { + "$ref": "#/definitions/OutputFlowNodeConfiguration" + } + }, + "required": [ + "Output" + ], + "title": "Output", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "KnowledgeBase": { + "$ref": "#/definitions/KnowledgeBaseFlowNodeConfiguration" + } + }, + "required": [ + "KnowledgeBase" + ], + "title": "KnowledgeBase", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Condition": { + "$ref": "#/definitions/ConditionFlowNodeConfiguration" + } + }, + "required": [ + "Condition" + ], + "title": "Condition", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Lex": { + "$ref": "#/definitions/LexFlowNodeConfiguration" + } + }, + "required": [ + "Lex" + ], + "title": "Lex", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Prompt": { + "$ref": "#/definitions/PromptFlowNodeConfiguration" + } + }, + "required": [ + "Prompt" + ], + "title": "Prompt", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "LambdaFunction": { + "$ref": "#/definitions/LambdaFunctionFlowNodeConfiguration" + } + }, + "required": [ + "LambdaFunction" + ], + "title": "LambdaFunction", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Agent": { + "$ref": "#/definitions/AgentFlowNodeConfiguration" + } + }, + "required": [ + "Agent" + ], + "title": "Agent", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Storage": { + "$ref": "#/definitions/StorageFlowNodeConfiguration" + } + }, + "required": [ + "Storage" + ], + "title": "Storage", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Retrieval": { + "$ref": "#/definitions/RetrievalFlowNodeConfiguration" + } + }, + "required": [ + "Retrieval" + ], + "title": "Retrieval", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Iterator": { + "$ref": "#/definitions/IteratorFlowNodeConfiguration" + } + }, + "required": [ + "Iterator" + ], + "title": "Iterator", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Collector": { + "$ref": "#/definitions/CollectorFlowNodeConfiguration" + } + }, + "required": [ + "Collector" + ], + "title": "Collector", + "type": "object" + } + ] + }, + "FlowNodeIODataType": { + "description": "Type of input/output for a node in a flow", + "enum": [ + "String", + "Number", + "Boolean", + "Object", + "Array" + ], + "type": "string" + }, + "FlowNodeInput": { + "additionalProperties": false, + "description": "Input to a node in a flow", + "properties": { + "Expression": { + "description": "Expression for a node input in a flow", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "Name of a node input in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/FlowNodeIODataType" + } + }, + "required": [ + "Expression", + "Name", + "Type" + ], + "type": "object" + }, + "FlowNodeOutput": { + "additionalProperties": false, + "description": "Output of a node in a flow", + "properties": { + "Name": { + "description": "Name of a node output in a flow", + "pattern": "^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/FlowNodeIODataType" + } + }, + "required": [ + "Name", + "Type" + ], + "type": "object" + }, + "FlowNodeType": { + "description": "Flow node types", + "enum": [ + "Input", + "Output", + "KnowledgeBase", + "Condition", + "Lex", + "Prompt", + "LambdaFunction", + "Agent", + "Iterator", + "Collector", + "Storage", + "Retrieval" + ], + "type": "string" + }, + "FlowStatus": { + "description": "Schema Type for Flow APIs", + "enum": [ + "Failed", + "Prepared", + "Preparing", + "NotPrepared" + ], + "type": "string" + }, + "GuardrailConfiguration": { + "additionalProperties": false, + "description": "Configuration for a guardrail", + "properties": { + "GuardrailIdentifier": { + "description": "Identifier for the guardrail, could be the id or the arn", + "maxLength": 2048, + "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$", + "type": "string" + }, + "GuardrailVersion": { + "description": "Version of the guardrail", + "pattern": "^(([0-9]{1,8})|(DRAFT))$", + "type": "string" + } + }, + "type": "object" + }, + "InputFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Input flow node configuration", + "type": "object" + }, + "IteratorFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Iterator flow node configuration", + "type": "object" + }, + "KnowledgeBaseFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Knowledge base flow node configuration", + "properties": { + "GuardrailConfiguration": { + "$ref": "#/definitions/GuardrailConfiguration" + }, + "KnowledgeBaseId": { + "description": "Identifier of the KnowledgeBase", + "maxLength": 10, + "pattern": "^[0-9a-zA-Z]+$", + "type": "string" + }, + "ModelId": { + "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^(arn:aws(-[^:]{1,12})?:(bedrock|sagemaker):[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", + "type": "string" + } + }, + "required": [ + "KnowledgeBaseId" + ], + "type": "object" + }, + "LambdaFunctionFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Lambda function flow node configuration", + "properties": { + "LambdaArn": { + "description": "ARN of a Lambda.", + "maxLength": 2048, + "pattern": "^arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-_\\.]+(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", + "type": "string" + } + }, + "required": [ + "LambdaArn" + ], + "type": "object" + }, + "LexFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Lex flow node configuration", + "properties": { + "BotAliasArn": { + "description": "ARN of a Lex bot alias", + "maxLength": 78, + "pattern": "^arn:aws(|-us-gov):lex:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:bot-alias/[0-9a-zA-Z]+/[0-9a-zA-Z]+$", + "type": "string" + }, + "LocaleId": { + "description": "Lex bot locale id", + "maxLength": 10, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "BotAliasArn", + "LocaleId" + ], + "type": "object" + }, + "OutputFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Output flow node configuration", + "type": "object" + }, + "PromptFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Prompt flow node configuration", + "properties": { + "GuardrailConfiguration": { + "$ref": "#/definitions/GuardrailConfiguration" + }, + "SourceConfiguration": { + "$ref": "#/definitions/PromptFlowNodeSourceConfiguration" + } + }, + "required": [ + "SourceConfiguration" + ], + "type": "object" + }, + "PromptFlowNodeInlineConfiguration": { + "additionalProperties": false, + "description": "Inline prompt configuration for prompt node", + "properties": { + "InferenceConfiguration": { + "$ref": "#/definitions/PromptInferenceConfiguration" + }, + "ModelId": { + "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^(arn:aws(-[^:]{1,12})?:(bedrock|sagemaker):[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", + "type": "string" + }, + "TemplateConfiguration": { + "$ref": "#/definitions/PromptTemplateConfiguration" + }, + "TemplateType": { + "$ref": "#/definitions/PromptTemplateType" + } + }, + "required": [ + "ModelId", + "TemplateConfiguration", + "TemplateType" + ], + "type": "object" + }, + "PromptFlowNodeResourceConfiguration": { + "additionalProperties": false, + "description": "Resource prompt configuration for prompt node", + "properties": { + "PromptArn": { + "description": "ARN of a prompt resource possibly with a version", + "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:prompt/[0-9a-zA-Z]{10}(?::[0-9]{1,5})?)$", + "type": "string" + } + }, + "required": [ + "PromptArn" + ], + "type": "object" + }, + "PromptFlowNodeSourceConfiguration": { + "description": "Prompt source configuration for prompt node", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Resource": { + "$ref": "#/definitions/PromptFlowNodeResourceConfiguration" + } + }, + "required": [ + "Resource" + ], + "title": "Resource", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Inline": { + "$ref": "#/definitions/PromptFlowNodeInlineConfiguration" + } + }, + "required": [ + "Inline" + ], + "title": "Inline", + "type": "object" + } + ] + }, + "PromptInferenceConfiguration": { + "description": "Model inference configuration", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Text": { + "$ref": "#/definitions/PromptModelInferenceConfiguration" + } + }, + "required": [ + "Text" + ], + "title": "Text", + "type": "object" + } + ] + }, + "PromptInputVariable": { + "additionalProperties": false, + "description": "Input variable", + "properties": { + "Name": { + "description": "Name for an input variable", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + } + }, + "type": "object" + }, + "PromptModelInferenceConfiguration": { + "additionalProperties": false, + "description": "Prompt model inference configuration", + "properties": { + "MaxTokens": { + "description": "Maximum length of output", + "maximum": 4096, + "minimum": 0, + "type": "number" + }, + "StopSequences": { + "description": "List of stop sequences", + "insertionOrder": true, + "items": { + "type": "string" + }, + "maxItems": 4, + "minItems": 0, + "type": "array" + }, + "Temperature": { + "description": "Controls randomness, higher values increase diversity", + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "TopP": { + "description": "Cumulative probability cutoff for token selection", + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "PromptTemplateConfiguration": { + "description": "Prompt template configuration", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Text": { + "$ref": "#/definitions/TextPromptTemplateConfiguration" + } + }, + "required": [ + "Text" + ], + "title": "Text", + "type": "object" + } + ] + }, + "PromptTemplateType": { + "description": "Prompt template type", + "enum": [ + "TEXT" + ], + "type": "string" + }, + "RetrievalFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Retrieval flow node configuration", + "properties": { + "ServiceConfiguration": { + "$ref": "#/definitions/RetrievalFlowNodeServiceConfiguration" + } + }, + "required": [ + "ServiceConfiguration" + ], + "type": "object" + }, + "RetrievalFlowNodeS3Configuration": { + "additionalProperties": false, + "description": "s3 Retrieval configuration for Retrieval node", + "properties": { + "BucketName": { + "description": "bucket name of an s3 that will be used for Retrieval flow node configuration", + "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", + "type": "string" + } + }, + "required": [ + "BucketName" + ], + "type": "object" + }, + "RetrievalFlowNodeServiceConfiguration": { + "description": "Retrieval service configuration for Retrieval node", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "S3": { + "$ref": "#/definitions/RetrievalFlowNodeS3Configuration" + } + }, + "title": "S3", + "type": "object" + } + ] + }, + "StorageFlowNodeConfiguration": { + "additionalProperties": false, + "description": "Storage flow node configuration", + "properties": { + "ServiceConfiguration": { + "$ref": "#/definitions/StorageFlowNodeServiceConfiguration" + } + }, + "required": [ + "ServiceConfiguration" + ], + "type": "object" + }, + "StorageFlowNodeS3Configuration": { + "additionalProperties": false, + "description": "s3 storage configuration for storage node", + "properties": { + "BucketName": { + "description": "bucket name of an s3 that will be used for storage flow node configuration", + "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", + "type": "string" + } + }, + "required": [ + "BucketName" + ], + "type": "object" + }, + "StorageFlowNodeServiceConfiguration": { + "description": "storage service configuration for storage node", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "S3": { + "$ref": "#/definitions/StorageFlowNodeS3Configuration" + } + }, + "title": "S3", + "type": "object" + } + ] + }, + "TextPromptTemplateConfiguration": { + "additionalProperties": false, + "description": "Configuration for text prompt template", + "properties": { + "InputVariables": { + "description": "List of input variables", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PromptInputVariable" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "Text": { + "description": "Prompt content for String prompt template", + "maxLength": 200000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Text" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Bedrock::FlowVersion Resource Type", + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateFlowVersion", + "bedrock:GetFlowVersion", + "kms:GenerateDataKey", + "kms:Decrypt", + "bedrock:CreateGuardrail", + "bedrock:CreateGuardrailVersion", + "bedrock:GetGuardrail" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeleteFlowVersion", + "bedrock:GetFlowVersion", + "bedrock:DeleteGuardrail", + "bedrock:GetGuardrail" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FlowArn": { + "$ref": "resource-schema.json#/properties/FlowArn" + } + }, + "required": [ + "FlowArn" + ] + }, + "permissions": [ + "bedrock:ListFlowVersions", + "bedrock:ListGuardrails" + ] + }, + "read": { + "permissions": [ + "bedrock:GetFlowVersion", + "kms:Decrypt", + "bedrock:GetGuardrail" + ] + }, + "update": { + "permissions": [ + "noservice:NoAction" + ] + } + }, + "primaryIdentifier": [ + "/properties/FlowArn", + "/properties/Version" + ], + "properties": { + "CreatedAt": { + "description": "Time Stamp.", + "format": "date-time", + "type": "string" + }, + "CustomerEncryptionKeyArn": { + "description": "A KMS key ARN", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", + "type": "string" + }, + "Definition": { + "$ref": "#/definitions/FlowDefinition" + }, + "Description": { + "description": "Description of the flow version", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "ExecutionRoleArn": { + "description": "ARN of a IAM role", + "maxLength": 2048, + "pattern": "^arn:aws(-[^:]+)?:iam::([0-9]{12})?:role/(service-role/)?.+$", + "type": "string" + }, + "FlowArn": { + "description": "Arn representation of the Flow", + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:flow/[0-9a-zA-Z]{10}$", + "type": "string" + }, + "FlowId": { + "description": "Identifier for a Flow", + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "Name": { + "description": "Name for the flow", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/FlowStatus" + }, + "Version": { + "description": "Numerical Version.", + "pattern": "^[0-9]{1,5}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/Definition", + "/properties/ExecutionRoleArn", + "/properties/FlowId", + "/properties/Name", + "/properties/Status", + "/properties/Version", + "/properties/CustomerEncryptionKeyArn" + ], + "required": [ + "FlowArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-flows", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Bedrock::FlowVersion" +} diff --git a/src/schema/aws-bedrock-guardrail.json b/src/schema/aws-bedrock-guardrail.json index f42c60aa..d414ee07 100644 --- a/src/schema/aws-bedrock-guardrail.json +++ b/src/schema/aws-bedrock-guardrail.json @@ -1,662 +1,708 @@ -{ - "additionalProperties": false, - "definitions": { - "ContentFilter": { - "additionalProperties": false, - "description": "Content filter in content policy.", - "properties": { - "InputStrength": { - "$ref": "#/definitions/FilterStrength" - }, - "OutputStrength": { - "$ref": "#/definitions/FilterStrength" - }, - "Type": { - "$ref": "#/definitions/ContentFilterType" - } - }, - "required": [ - "InputStrength", - "OutputStrength", - "Type" - ], - "type": "object" - }, - "ContentFilterConfig": { - "additionalProperties": false, - "description": "Content filter config in content policy.", - "properties": { - "InputStrength": { - "$ref": "#/definitions/FilterStrength" - }, - "OutputStrength": { - "$ref": "#/definitions/FilterStrength" - }, - "Type": { - "$ref": "#/definitions/ContentFilterType" - } - }, - "required": [ - "InputStrength", - "OutputStrength", - "Type" - ], - "type": "object" - }, - "ContentFilterType": { - "description": "Type of filter in content policy", - "enum": [ - "SEXUAL", - "VIOLENCE", - "HATE", - "INSULTS", - "MISCONDUCT", - "PROMPT_ATTACK" - ], - "type": "string" - }, - "ContentPolicyConfig": { - "additionalProperties": false, - "description": "Content policy config for a guardrail.", - "properties": { - "FiltersConfig": { - "description": "List of content filter configs in content policy.", - "items": { - "$ref": "#/definitions/ContentFilterConfig" - }, - "maxItems": 6, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "FiltersConfig" - ], - "type": "object" - }, - "ContextualGroundingFilterConfig": { - "additionalProperties": false, - "description": "A config for grounding filter.", - "properties": { - "Threshold": { - "description": "The threshold for this filter.", - "minimum": 0, - "type": "number" - }, - "Type": { - "$ref": "#/definitions/ContextualGroundingFilterType" - } - }, - "required": [ - "Threshold", - "Type" - ], - "type": "object" - }, - "ContextualGroundingFilterType": { - "description": "Type of contextual grounding filter", - "enum": [ - "GROUNDING", - "RELEVANCE" - ], - "type": "string" - }, - "ContextualGroundingPolicyConfig": { - "additionalProperties": false, - "description": "Contextual grounding policy config for a guardrail.", - "properties": { - "FiltersConfig": { - "description": "List of contextual grounding filter configs.", - "items": { - "$ref": "#/definitions/ContextualGroundingFilterConfig" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "FiltersConfig" - ], - "type": "object" - }, - "FilterStrength": { - "description": "Strength for filters", - "enum": [ - "NONE", - "LOW", - "MEDIUM", - "HIGH" - ], - "type": "string" - }, - "GuardrailStatus": { - "description": "Status of the guardrail", - "enum": [ - "CREATING", - "UPDATING", - "VERSIONING", - "READY", - "FAILED", - "DELETING" - ], - "type": "string" - }, - "ManagedWords": { - "additionalProperties": false, - "description": "A managed words definition.", - "properties": { - "Type": { - "$ref": "#/definitions/ManagedWordsType" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ManagedWordsConfig": { - "additionalProperties": false, - "description": "A managed words config.", - "properties": { - "Type": { - "$ref": "#/definitions/ManagedWordsType" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ManagedWordsType": { - "description": "Options for managed words.", - "enum": [ - "PROFANITY" - ], - "type": "string" - }, - "PiiEntity": { - "additionalProperties": false, - "description": "Entity name and behavior.", - "properties": { - "Action": { - "$ref": "#/definitions/SensitiveInformationAction" - }, - "Type": { - "$ref": "#/definitions/PiiEntityType" - } - }, - "required": [ - "Action", - "Type" - ], - "type": "object" - }, - "PiiEntityConfig": { - "additionalProperties": false, - "description": "Pii entity configuration.", - "properties": { - "Action": { - "$ref": "#/definitions/SensitiveInformationAction" - }, - "Type": { - "$ref": "#/definitions/PiiEntityType" - } - }, - "required": [ - "Action", - "Type" - ], - "type": "object" - }, - "PiiEntityType": { - "description": "The currently supported PII entities", - "enum": [ - "ADDRESS", - "AGE", - "AWS_ACCESS_KEY", - "AWS_SECRET_KEY", - "CA_HEALTH_NUMBER", - "CA_SOCIAL_INSURANCE_NUMBER", - "CREDIT_DEBIT_CARD_CVV", - "CREDIT_DEBIT_CARD_EXPIRY", - "CREDIT_DEBIT_CARD_NUMBER", - "DRIVER_ID", - "EMAIL", - "INTERNATIONAL_BANK_ACCOUNT_NUMBER", - "IP_ADDRESS", - "LICENSE_PLATE", - "MAC_ADDRESS", - "NAME", - "PASSWORD", - "PHONE", - "PIN", - "SWIFT_CODE", - "UK_NATIONAL_HEALTH_SERVICE_NUMBER", - "UK_NATIONAL_INSURANCE_NUMBER", - "UK_UNIQUE_TAXPAYER_REFERENCE_NUMBER", - "URL", - "USERNAME", - "US_BANK_ACCOUNT_NUMBER", - "US_BANK_ROUTING_NUMBER", - "US_INDIVIDUAL_TAX_IDENTIFICATION_NUMBER", - "US_PASSPORT_NUMBER", - "US_SOCIAL_SECURITY_NUMBER", - "VEHICLE_IDENTIFICATION_NUMBER" - ], - "type": "string" - }, - "RegexConfig": { - "additionalProperties": false, - "description": "A regex configuration.", - "properties": { - "Action": { - "$ref": "#/definitions/SensitiveInformationAction" - }, - "Description": { - "description": "The regex description.", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "The regex name.", - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "Pattern": { - "description": "The regex pattern.", - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Action", - "Name", - "Pattern" - ], - "type": "object" - }, - "SensitiveInformationAction": { - "description": "Options for sensitive information action.", - "enum": [ - "BLOCK", - "ANONYMIZE" - ], - "type": "string" - }, - "SensitiveInformationPolicyConfig": { - "additionalProperties": false, - "description": "Sensitive information policy config for a guardrail.", - "properties": { - "PiiEntitiesConfig": { - "description": "List of entities.", - "items": { - "$ref": "#/definitions/PiiEntityConfig" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "RegexesConfig": { - "description": "List of regex.", - "items": { - "$ref": "#/definitions/RegexConfig" - }, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Definition of the key/value pair for a tag", - "properties": { - "Key": { - "description": "Tag Key", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", - "type": "string" - }, - "Value": { - "description": "Tag Value", - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Topic": { - "additionalProperties": false, - "description": "Topic in topic policy.", - "properties": { - "Definition": { - "description": "Definition of topic in topic policy", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "Examples": { - "description": "List of text examples", - "items": { - "description": "Text example in topic policy", - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "minItems": 0, - "type": "array" - }, - "Name": { - "description": "Name of topic in topic policy", - "maxLength": 100, - "minLength": 1, - "pattern": "^[0-9a-zA-Z-_ !?.]+$", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/TopicType" - } - }, - "required": [ - "Definition", - "Name", - "Type" - ], - "type": "object" - }, - "TopicConfig": { - "additionalProperties": false, - "description": "Topic config in topic policy.", - "properties": { - "Definition": { - "description": "Definition of topic in topic policy", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "Examples": { - "description": "List of text examples", - "items": { - "description": "Text example in topic policy", - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "minItems": 0, - "type": "array" - }, - "Name": { - "description": "Name of topic in topic policy", - "maxLength": 100, - "minLength": 1, - "pattern": "^[0-9a-zA-Z-_ !?.]+$", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/TopicType" - } - }, - "required": [ - "Definition", - "Name", - "Type" - ], - "type": "object" - }, - "TopicPolicyConfig": { - "additionalProperties": false, - "description": "Topic policy config for a guardrail.", - "properties": { - "TopicsConfig": { - "description": "List of topic configs in topic policy.", - "items": { - "$ref": "#/definitions/TopicConfig" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "TopicsConfig" - ], - "type": "object" - }, - "TopicType": { - "description": "Type of topic in a policy", - "enum": [ - "DENY" - ], - "type": "string" - }, - "WordConfig": { - "additionalProperties": false, - "description": "A custom word config.", - "properties": { - "Text": { - "description": "The custom word text.", - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Text" - ], - "type": "object" - }, - "WordPolicyConfig": { - "additionalProperties": false, - "description": "Word policy config for a guardrail.", - "properties": { - "ManagedWordListsConfig": { - "description": "A config for the list of managed words.", - "items": { - "$ref": "#/definitions/ManagedWordsConfig" - }, - "type": "array" - }, - "WordsConfig": { - "description": "List of custom word configs.", - "items": { - "$ref": "#/definitions/WordConfig" - }, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::Bedrock::Guardrail Resource Type", - "handlers": { - "create": { - "permissions": [ - "bedrock:CreateGuardrail", - "bedrock:GetGuardrail", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt", - "bedrock:TagResource", - "bedrock:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "bedrock:DeleteGuardrail", - "bedrock:GetGuardrail", - "kms:Decrypt", - "kms:RetireGrant" - ] - }, - "list": { - "permissions": [ - "bedrock:ListGuardrails" - ] - }, - "read": { - "permissions": [ - "bedrock:GetGuardrail", - "kms:Decrypt", - "bedrock:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "bedrock:UpdateGuardrail", - "bedrock:GetGuardrail", - "bedrock:ListTagsForResource", - "bedrock:TagResource", - "bedrock:UntagResource", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/GuardrailArn" - ], - "properties": { - "BlockedInputMessaging": { - "description": "Messaging for when violations are detected in text", - "maxLength": 500, - "minLength": 1, - "type": "string" - }, - "BlockedOutputsMessaging": { - "description": "Messaging for when violations are detected in text", - "maxLength": 500, - "minLength": 1, - "type": "string" - }, - "ContentPolicyConfig": { - "$ref": "#/definitions/ContentPolicyConfig" - }, - "ContextualGroundingPolicyConfig": { - "$ref": "#/definitions/ContextualGroundingPolicyConfig" - }, - "CreatedAt": { - "description": "Time Stamp", - "format": "date-time", - "type": "string" - }, - "Description": { - "description": "Description of the guardrail or its version", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "FailureRecommendations": { - "description": "List of failure recommendations", - "items": { - "description": "Recommendation for guardrail failure status", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "type": "array" - }, - "GuardrailArn": { - "description": "Arn representation for the guardrail", - "maxLength": 2048, - "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+$", - "type": "string" - }, - "GuardrailId": { - "description": "Unique id for the guardrail", - "maxLength": 64, - "pattern": "^[a-z0-9]+$", - "type": "string" - }, - "KmsKeyArn": { - "description": "The KMS key with which the guardrail was encrypted at rest", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:aws(-[^:]+)?:kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", - "type": "string" - }, - "Name": { - "description": "Name of the guardrail", - "maxLength": 50, - "minLength": 1, - "pattern": "^[0-9a-zA-Z-_]+$", - "type": "string" - }, - "SensitiveInformationPolicyConfig": { - "$ref": "#/definitions/SensitiveInformationPolicyConfig" - }, - "Status": { - "$ref": "#/definitions/GuardrailStatus" - }, - "StatusReasons": { - "description": "List of status reasons", - "items": { - "description": "Reason for guardrail status", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "type": "array" - }, - "Tags": { - "description": "List of Tags", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TopicPolicyConfig": { - "$ref": "#/definitions/TopicPolicyConfig" - }, - "UpdatedAt": { - "description": "Time Stamp", - "format": "date-time", - "type": "string" - }, - "Version": { - "description": "Guardrail version", - "pattern": "^(([1-9][0-9]{0,7})|(DRAFT))$", - "type": "string" - }, - "WordPolicyConfig": { - "$ref": "#/definitions/WordPolicyConfig" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/FailureRecommendations", - "/properties/GuardrailArn", - "/properties/GuardrailId", - "/properties/Status", - "/properties/StatusReasons", - "/properties/UpdatedAt", - "/properties/Version" - ], - "required": [ - "Name", - "BlockedInputMessaging", - "BlockedOutputsMessaging" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Bedrock::Guardrail" -} +{ + "additionalProperties": false, + "definitions": { + "ContentFilterAction": { + "enum": [ + "BLOCK", + "NONE" + ], + "type": "string" + }, + "ContentFilterConfig": { + "additionalProperties": false, + "description": "Content filter config in content policy.", + "properties": { + "InputAction": { + "$ref": "#/definitions/ContentFilterAction" + }, + "InputEnabled": { + "type": "boolean" + }, + "InputModalities": { + "description": "List of modalities", + "items": { + "$ref": "#/definitions/Modality" + }, + "minItems": 1, + "type": "array" + }, + "InputStrength": { + "$ref": "#/definitions/FilterStrength" + }, + "OutputAction": { + "$ref": "#/definitions/ContentFilterAction" + }, + "OutputEnabled": { + "type": "boolean" + }, + "OutputModalities": { + "description": "List of modalities", + "items": { + "$ref": "#/definitions/Modality" + }, + "minItems": 1, + "type": "array" + }, + "OutputStrength": { + "$ref": "#/definitions/FilterStrength" + }, + "Type": { + "$ref": "#/definitions/ContentFilterType" + } + }, + "required": [ + "InputStrength", + "OutputStrength", + "Type" + ], + "type": "object" + }, + "ContentFilterType": { + "description": "Type of filter in content policy", + "enum": [ + "SEXUAL", + "VIOLENCE", + "HATE", + "INSULTS", + "MISCONDUCT", + "PROMPT_ATTACK" + ], + "type": "string" + }, + "ContentPolicyConfig": { + "additionalProperties": false, + "description": "Content policy config for a guardrail.", + "properties": { + "FiltersConfig": { + "description": "List of content filter configs in content policy.", + "items": { + "$ref": "#/definitions/ContentFilterConfig" + }, + "maxItems": 6, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "FiltersConfig" + ], + "type": "object" + }, + "ContextualGroundingAction": { + "enum": [ + "BLOCK", + "NONE" + ], + "type": "string" + }, + "ContextualGroundingFilterConfig": { + "additionalProperties": false, + "description": "A config for grounding filter.", + "properties": { + "Action": { + "$ref": "#/definitions/ContextualGroundingAction" + }, + "Enabled": { + "type": "boolean" + }, + "Threshold": { + "description": "The threshold for this filter.", + "minimum": 0, + "type": "number" + }, + "Type": { + "$ref": "#/definitions/ContextualGroundingFilterType" + } + }, + "required": [ + "Threshold", + "Type" + ], + "type": "object" + }, + "ContextualGroundingFilterType": { + "description": "Type of contextual grounding filter", + "enum": [ + "GROUNDING", + "RELEVANCE" + ], + "type": "string" + }, + "ContextualGroundingPolicyConfig": { + "additionalProperties": false, + "description": "Contextual grounding policy config for a guardrail.", + "properties": { + "FiltersConfig": { + "description": "List of contextual grounding filter configs.", + "items": { + "$ref": "#/definitions/ContextualGroundingFilterConfig" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "FiltersConfig" + ], + "type": "object" + }, + "FilterStrength": { + "description": "Strength for filters", + "enum": [ + "NONE", + "LOW", + "MEDIUM", + "HIGH" + ], + "type": "string" + }, + "GuardrailStatus": { + "description": "Status of the guardrail", + "enum": [ + "CREATING", + "UPDATING", + "VERSIONING", + "READY", + "FAILED", + "DELETING" + ], + "type": "string" + }, + "ManagedWordsConfig": { + "additionalProperties": false, + "description": "A managed words config.", + "properties": { + "InputAction": { + "$ref": "#/definitions/WordAction" + }, + "InputEnabled": { + "type": "boolean" + }, + "OutputAction": { + "$ref": "#/definitions/WordAction" + }, + "OutputEnabled": { + "type": "boolean" + }, + "Type": { + "$ref": "#/definitions/ManagedWordsType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "ManagedWordsType": { + "description": "Options for managed words.", + "enum": [ + "PROFANITY" + ], + "type": "string" + }, + "Modality": { + "description": "Modality for filters", + "enum": [ + "TEXT", + "IMAGE" + ], + "type": "string" + }, + "PiiEntityConfig": { + "additionalProperties": false, + "description": "Pii entity configuration.", + "properties": { + "Action": { + "$ref": "#/definitions/SensitiveInformationAction" + }, + "InputAction": { + "$ref": "#/definitions/SensitiveInformationAction" + }, + "InputEnabled": { + "type": "boolean" + }, + "OutputAction": { + "$ref": "#/definitions/SensitiveInformationAction" + }, + "OutputEnabled": { + "type": "boolean" + }, + "Type": { + "$ref": "#/definitions/PiiEntityType" + } + }, + "required": [ + "Action", + "Type" + ], + "type": "object" + }, + "PiiEntityType": { + "description": "The currently supported PII entities", + "enum": [ + "ADDRESS", + "AGE", + "AWS_ACCESS_KEY", + "AWS_SECRET_KEY", + "CA_HEALTH_NUMBER", + "CA_SOCIAL_INSURANCE_NUMBER", + "CREDIT_DEBIT_CARD_CVV", + "CREDIT_DEBIT_CARD_EXPIRY", + "CREDIT_DEBIT_CARD_NUMBER", + "DRIVER_ID", + "EMAIL", + "INTERNATIONAL_BANK_ACCOUNT_NUMBER", + "IP_ADDRESS", + "LICENSE_PLATE", + "MAC_ADDRESS", + "NAME", + "PASSWORD", + "PHONE", + "PIN", + "SWIFT_CODE", + "UK_NATIONAL_HEALTH_SERVICE_NUMBER", + "UK_NATIONAL_INSURANCE_NUMBER", + "UK_UNIQUE_TAXPAYER_REFERENCE_NUMBER", + "URL", + "USERNAME", + "US_BANK_ACCOUNT_NUMBER", + "US_BANK_ROUTING_NUMBER", + "US_INDIVIDUAL_TAX_IDENTIFICATION_NUMBER", + "US_PASSPORT_NUMBER", + "US_SOCIAL_SECURITY_NUMBER", + "VEHICLE_IDENTIFICATION_NUMBER" + ], + "type": "string" + }, + "RegexConfig": { + "additionalProperties": false, + "description": "A regex configuration.", + "properties": { + "Action": { + "$ref": "#/definitions/SensitiveInformationAction" + }, + "Description": { + "description": "The regex description.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "InputAction": { + "$ref": "#/definitions/SensitiveInformationAction" + }, + "InputEnabled": { + "type": "boolean" + }, + "Name": { + "description": "The regex name.", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "OutputAction": { + "$ref": "#/definitions/SensitiveInformationAction" + }, + "OutputEnabled": { + "type": "boolean" + }, + "Pattern": { + "description": "The regex pattern.", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Action", + "Name", + "Pattern" + ], + "type": "object" + }, + "SensitiveInformationAction": { + "description": "Options for sensitive information action.", + "enum": [ + "BLOCK", + "ANONYMIZE", + "NONE" + ], + "type": "string" + }, + "SensitiveInformationPolicyConfig": { + "additionalProperties": false, + "description": "Sensitive information policy config for a guardrail.", + "properties": { + "PiiEntitiesConfig": { + "description": "List of entities.", + "items": { + "$ref": "#/definitions/PiiEntityConfig" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "RegexesConfig": { + "description": "List of regex.", + "items": { + "$ref": "#/definitions/RegexConfig" + }, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Definition of the key/value pair for a tag", + "properties": { + "Key": { + "description": "Tag Key", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + }, + "Value": { + "description": "Tag Value", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TopicAction": { + "enum": [ + "BLOCK", + "NONE" + ], + "type": "string" + }, + "TopicConfig": { + "additionalProperties": false, + "description": "Topic config in topic policy.", + "properties": { + "Definition": { + "description": "Definition of topic in topic policy", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "Examples": { + "description": "List of text examples", + "items": { + "description": "Text example in topic policy", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "minItems": 0, + "type": "array" + }, + "InputAction": { + "$ref": "#/definitions/TopicAction" + }, + "InputEnabled": { + "type": "boolean" + }, + "Name": { + "description": "Name of topic in topic policy", + "maxLength": 100, + "minLength": 1, + "pattern": "^[0-9a-zA-Z-_ !?.]+$", + "type": "string" + }, + "OutputAction": { + "$ref": "#/definitions/TopicAction" + }, + "OutputEnabled": { + "type": "boolean" + }, + "Type": { + "$ref": "#/definitions/TopicType" + } + }, + "required": [ + "Definition", + "Name", + "Type" + ], + "type": "object" + }, + "TopicPolicyConfig": { + "additionalProperties": false, + "description": "Topic policy config for a guardrail.", + "properties": { + "TopicsConfig": { + "description": "List of topic configs in topic policy.", + "items": { + "$ref": "#/definitions/TopicConfig" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "TopicsConfig" + ], + "type": "object" + }, + "TopicType": { + "description": "Type of topic in a policy", + "enum": [ + "DENY" + ], + "type": "string" + }, + "WordAction": { + "enum": [ + "BLOCK", + "NONE" + ], + "type": "string" + }, + "WordConfig": { + "additionalProperties": false, + "description": "A custom word config.", + "properties": { + "InputAction": { + "$ref": "#/definitions/WordAction" + }, + "InputEnabled": { + "type": "boolean" + }, + "OutputAction": { + "$ref": "#/definitions/WordAction" + }, + "OutputEnabled": { + "type": "boolean" + }, + "Text": { + "description": "The custom word text.", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Text" + ], + "type": "object" + }, + "WordPolicyConfig": { + "additionalProperties": false, + "description": "Word policy config for a guardrail.", + "properties": { + "ManagedWordListsConfig": { + "description": "A config for the list of managed words.", + "items": { + "$ref": "#/definitions/ManagedWordsConfig" + }, + "type": "array" + }, + "WordsConfig": { + "description": "List of custom word configs.", + "items": { + "$ref": "#/definitions/WordConfig" + }, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::Bedrock::Guardrail Resource Type", + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateGuardrail", + "bedrock:GetGuardrail", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt", + "bedrock:TagResource", + "bedrock:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeleteGuardrail", + "bedrock:GetGuardrail", + "kms:Decrypt", + "kms:RetireGrant" + ] + }, + "list": { + "permissions": [ + "bedrock:ListGuardrails" + ] + }, + "read": { + "permissions": [ + "bedrock:GetGuardrail", + "kms:Decrypt", + "bedrock:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "bedrock:UpdateGuardrail", + "bedrock:GetGuardrail", + "bedrock:ListTagsForResource", + "bedrock:TagResource", + "bedrock:UntagResource", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/GuardrailArn" + ], + "properties": { + "BlockedInputMessaging": { + "description": "Messaging for when violations are detected in text", + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "BlockedOutputsMessaging": { + "description": "Messaging for when violations are detected in text", + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "ContentPolicyConfig": { + "$ref": "#/definitions/ContentPolicyConfig" + }, + "ContextualGroundingPolicyConfig": { + "$ref": "#/definitions/ContextualGroundingPolicyConfig" + }, + "CreatedAt": { + "description": "Time Stamp", + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "Description of the guardrail or its version", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "FailureRecommendations": { + "description": "List of failure recommendations", + "items": { + "description": "Recommendation for guardrail failure status", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "type": "array" + }, + "GuardrailArn": { + "description": "Arn representation for the guardrail", + "maxLength": 2048, + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+$", + "type": "string" + }, + "GuardrailId": { + "description": "Unique id for the guardrail", + "maxLength": 64, + "pattern": "^[a-z0-9]+$", + "type": "string" + }, + "KmsKeyArn": { + "description": "The KMS key with which the guardrail was encrypted at rest", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(-[^:]+)?:kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", + "type": "string" + }, + "Name": { + "description": "Name of the guardrail", + "maxLength": 50, + "minLength": 1, + "pattern": "^[0-9a-zA-Z-_]+$", + "type": "string" + }, + "SensitiveInformationPolicyConfig": { + "$ref": "#/definitions/SensitiveInformationPolicyConfig" + }, + "Status": { + "$ref": "#/definitions/GuardrailStatus" + }, + "StatusReasons": { + "description": "List of status reasons", + "items": { + "description": "Reason for guardrail status", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "type": "array" + }, + "Tags": { + "description": "List of Tags", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TopicPolicyConfig": { + "$ref": "#/definitions/TopicPolicyConfig" + }, + "UpdatedAt": { + "description": "Time Stamp", + "format": "date-time", + "type": "string" + }, + "Version": { + "description": "Guardrail version", + "pattern": "^(([1-9][0-9]{0,7})|(DRAFT))$", + "type": "string" + }, + "WordPolicyConfig": { + "$ref": "#/definitions/WordPolicyConfig" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/FailureRecommendations", + "/properties/GuardrailArn", + "/properties/GuardrailId", + "/properties/Status", + "/properties/StatusReasons", + "/properties/UpdatedAt", + "/properties/Version" + ], + "required": [ + "Name", + "BlockedInputMessaging", + "BlockedOutputsMessaging" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "bedrock:ListTagsForResource", + "bedrock:TagResource", + "bedrock:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Bedrock::Guardrail" +} diff --git a/src/schema/aws-bedrock-guardrailversion.json b/src/schema/aws-bedrock-guardrailversion.json index f5fc84b1..984e2110 100644 --- a/src/schema/aws-bedrock-guardrailversion.json +++ b/src/schema/aws-bedrock-guardrailversion.json @@ -1,82 +1,82 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Description", - "/properties/GuardrailIdentifier" - ], - "definitions": {}, - "description": "Definition of AWS::Bedrock::GuardrailVersion Resource Type", - "handlers": { - "create": { - "permissions": [ - "bedrock:CreateGuardrailVersion", - "bedrock:GetGuardrail", - "kms:CreateGrant", - "kms:Decrypt" - ] - }, - "delete": { - "permissions": [ - "bedrock:DeleteGuardrail", - "bedrock:GetGuardrail", - "kms:RetireGrant" - ] - }, - "read": { - "permissions": [ - "bedrock:GetGuardrail", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/GuardrailId", - "/properties/Version" - ], - "properties": { - "Description": { - "description": "Description of the Guardrail version", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "GuardrailArn": { - "description": "Arn representation for the guardrail", - "maxLength": 2048, - "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+$", - "type": "string" - }, - "GuardrailId": { - "description": "Unique id for the guardrail", - "maxLength": 64, - "pattern": "^[a-z0-9]+$", - "type": "string" - }, - "GuardrailIdentifier": { - "description": "Identifier (GuardrailId or GuardrailArn) for the guardrail", - "maxLength": 2048, - "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$", - "type": "string" - }, - "Version": { - "description": "Guardrail version", - "pattern": "^[1-9][0-9]{0,7}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/GuardrailArn", - "/properties/GuardrailId", - "/properties/Version" - ], - "required": [ - "GuardrailIdentifier" - ], - "tagging": { - "taggable": false - }, - "typeName": "AWS::Bedrock::GuardrailVersion", - "writeOnlyProperties": [ - "/properties/GuardrailIdentifier" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description", + "/properties/GuardrailIdentifier" + ], + "definitions": {}, + "description": "Definition of AWS::Bedrock::GuardrailVersion Resource Type", + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateGuardrailVersion", + "bedrock:GetGuardrail", + "kms:CreateGrant", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeleteGuardrail", + "bedrock:GetGuardrail", + "kms:RetireGrant" + ] + }, + "read": { + "permissions": [ + "bedrock:GetGuardrail", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/GuardrailId", + "/properties/Version" + ], + "properties": { + "Description": { + "description": "Description of the Guardrail version", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "GuardrailArn": { + "description": "Arn representation for the guardrail", + "maxLength": 2048, + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+$", + "type": "string" + }, + "GuardrailId": { + "description": "Unique id for the guardrail", + "maxLength": 64, + "pattern": "^[a-z0-9]+$", + "type": "string" + }, + "GuardrailIdentifier": { + "description": "Identifier (GuardrailId or GuardrailArn) for the guardrail", + "maxLength": 2048, + "pattern": "^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$", + "type": "string" + }, + "Version": { + "description": "Guardrail version", + "pattern": "^[1-9][0-9]{0,7}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/GuardrailArn", + "/properties/GuardrailId", + "/properties/Version" + ], + "required": [ + "GuardrailIdentifier" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::Bedrock::GuardrailVersion", + "writeOnlyProperties": [ + "/properties/GuardrailIdentifier" + ] +} diff --git a/src/schema/aws-bedrock-knowledgebase.json b/src/schema/aws-bedrock-knowledgebase.json index acb52c7a..8b529083 100644 --- a/src/schema/aws-bedrock-knowledgebase.json +++ b/src/schema/aws-bedrock-knowledgebase.json @@ -1,622 +1,1278 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StorageConfiguration", - "/properties/KnowledgeBaseConfiguration" - ], - "definitions": { - "BedrockEmbeddingModelConfiguration": { - "additionalProperties": false, - "description": "The vector configuration details for the Bedrock embeddings model.", - "properties": { - "Dimensions": { - "description": "The dimensions details for the vector configuration used on the Bedrock embeddings model.", - "maximum": 4096, - "minimum": 0, - "type": "integer" - } - }, - "type": "object" - }, - "EmbeddingModelConfiguration": { - "additionalProperties": false, - "description": "The embeddings model configuration details for the vector model used in Knowledge Base.", - "properties": { - "BedrockEmbeddingModelConfiguration": { - "$ref": "#/definitions/BedrockEmbeddingModelConfiguration" - } - }, - "type": "object" - }, - "KnowledgeBaseConfiguration": { - "additionalProperties": false, - "description": "Contains details about the embeddings model used for the knowledge base.", - "properties": { - "Type": { - "$ref": "#/definitions/KnowledgeBaseType" - }, - "VectorKnowledgeBaseConfiguration": { - "$ref": "#/definitions/VectorKnowledgeBaseConfiguration" - } - }, - "required": [ - "Type", - "VectorKnowledgeBaseConfiguration" - ], - "type": "object" - }, - "KnowledgeBaseStatus": { - "description": "The status of a knowledge base.", - "enum": [ - "CREATING", - "ACTIVE", - "DELETING", - "UPDATING", - "FAILED", - "DELETE_UNSUCCESSFUL" - ], - "type": "string" - }, - "KnowledgeBaseStorageType": { - "description": "The storage type of a knowledge base.", - "enum": [ - "OPENSEARCH_SERVERLESS", - "PINECONE", - "RDS", - "MONGO_DB_ATLAS" - ], - "type": "string" - }, - "KnowledgeBaseType": { - "description": "The type of a knowledge base.", - "enum": [ - "VECTOR" - ], - "type": "string" - }, - "MongoDbAtlasConfiguration": { - "additionalProperties": false, - "description": "Contains the storage configuration of the knowledge base in MongoDb Atlas Cloud.", - "properties": { - "CollectionName": { - "description": "Name of the collection within MongoDB Atlas.", - "maxLength": 63, - "pattern": "^.*$", - "type": "string" - }, - "CredentialsSecretArn": { - "description": "The ARN of the secret that you created in AWS Secrets Manager that is linked to your Amazon Mongo database.", - "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", - "type": "string" - }, - "DatabaseName": { - "description": "Name of the database within MongoDB Atlas.", - "maxLength": 63, - "pattern": "^.*$", - "type": "string" - }, - "Endpoint": { - "description": "MongoDB Atlas endpoint.", - "maxLength": 2048, - "pattern": "^[a-zA-Z0-9_-]+\\.[a-zA-Z0-9_-]+\\.mongodb\\.net$", - "type": "string" - }, - "EndpointServiceName": { - "description": "MongoDB Atlas endpoint service name.", - "maxLength": 255, - "pattern": "^(?:arn:aws(?:-us-gov|-cn|-iso|-iso-[a-z])*:.+:.*:\\d+:.+/.+$|[a-zA-Z0-9*]+[a-zA-Z0-9._-]*)$", - "type": "string" - }, - "FieldMapping": { - "$ref": "#/definitions/MongoDbAtlasFieldMapping" - }, - "VectorIndexName": { - "description": "Name of a MongoDB Atlas index.", - "maxLength": 2048, - "pattern": "^.*$", - "type": "string" - } - }, - "required": [ - "Endpoint", - "CredentialsSecretArn", - "DatabaseName", - "CollectionName", - "VectorIndexName", - "FieldMapping" - ], - "type": "object" - }, - "MongoDbAtlasFieldMapping": { - "additionalProperties": false, - "description": "Contains the names of the fields to which to map information about the vector store.", - "properties": { - "MetadataField": { - "description": "The name of the field in which Amazon Bedrock stores metadata about the vector store.", - "maxLength": 2048, - "pattern": "^.*$", - "type": "string" - }, - "TextField": { - "description": "The name of the field in which Amazon Bedrock stores the raw text from your data. The text is split according to the chunking strategy you choose.", - "maxLength": 2048, - "pattern": "^.*$", - "type": "string" - }, - "VectorField": { - "description": "The name of the field in which Amazon Bedrock stores the vector embeddings for your data sources.", - "maxLength": 2048, - "pattern": "^.*$", - "type": "string" - } - }, - "required": [ - "VectorField", - "MetadataField", - "TextField" - ], - "type": "object" - }, - "OpenSearchServerlessConfiguration": { - "additionalProperties": false, - "description": "Contains the storage configuration of the knowledge base in Amazon OpenSearch Service.", - "properties": { - "CollectionArn": { - "description": "The ARN of the OpenSearch Service vector store.", - "maxLength": 2048, - "pattern": "^arn:aws:aoss:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:collection/[a-z0-9-]{3,32}$", - "type": "string" - }, - "FieldMapping": { - "$ref": "#/definitions/OpenSearchServerlessFieldMapping" - }, - "VectorIndexName": { - "description": "The name of the vector store.", - "maxLength": 2048, - "pattern": "^.*$", - "type": "string" - } - }, - "required": [ - "CollectionArn", - "FieldMapping", - "VectorIndexName" - ], - "type": "object" - }, - "OpenSearchServerlessFieldMapping": { - "additionalProperties": false, - "description": "A mapping of Bedrock Knowledge Base fields to OpenSearch Serverless field names", - "properties": { - "MetadataField": { - "description": "The name of the field in which Amazon Bedrock stores metadata about the vector store.", - "maxLength": 2048, - "pattern": "^.*$", - "type": "string" - }, - "TextField": { - "description": "The name of the field in which Amazon Bedrock stores the raw text from your data. The text is split according to the chunking strategy you choose.", - "maxLength": 2048, - "pattern": "^.*$", - "type": "string" - }, - "VectorField": { - "description": "The name of the field in which Amazon Bedrock stores the vector embeddings for your data sources.", - "maxLength": 2048, - "pattern": "^.*$", - "type": "string" - } - }, - "required": [ - "MetadataField", - "TextField", - "VectorField" - ], - "type": "object" - }, - "PineconeConfiguration": { - "additionalProperties": false, - "description": "Contains the storage configuration of the knowledge base in Pinecone.", - "properties": { - "ConnectionString": { - "description": "The endpoint URL for your index management page.", - "maxLength": 2048, - "pattern": "^.*$", - "type": "string" - }, - "CredentialsSecretArn": { - "description": "The ARN of the secret that you created in AWS Secrets Manager that is linked to your Pinecone API key.", - "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", - "type": "string" - }, - "FieldMapping": { - "$ref": "#/definitions/PineconeFieldMapping" - }, - "Namespace": { - "description": "The namespace to be used to write new data to your database.", - "maxLength": 2048, - "pattern": "^.*$", - "type": "string" - } - }, - "required": [ - "ConnectionString", - "CredentialsSecretArn", - "FieldMapping" - ], - "type": "object" - }, - "PineconeFieldMapping": { - "additionalProperties": false, - "description": "Contains the names of the fields to which to map information about the vector store.", - "properties": { - "MetadataField": { - "description": "The name of the field in which Amazon Bedrock stores metadata about the vector store.", - "maxLength": 2048, - "pattern": "^.*$", - "type": "string" - }, - "TextField": { - "description": "The name of the field in which Amazon Bedrock stores the raw text from your data. The text is split according to the chunking strategy you choose.", - "maxLength": 2048, - "pattern": "^.*$", - "type": "string" - } - }, - "required": [ - "MetadataField", - "TextField" - ], - "type": "object" - }, - "RdsConfiguration": { - "additionalProperties": false, - "description": "Contains details about the storage configuration of the knowledge base in Amazon RDS. For more information, see Create a vector index in Amazon RDS.", - "properties": { - "CredentialsSecretArn": { - "description": "The ARN of the secret that you created in AWS Secrets Manager that is linked to your Amazon RDS database.", - "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", - "type": "string" - }, - "DatabaseName": { - "description": "The name of your Amazon RDS database.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9_\\-]+$", - "type": "string" - }, - "FieldMapping": { - "$ref": "#/definitions/RdsFieldMapping" - }, - "ResourceArn": { - "description": "The ARN of the vector store.", - "pattern": "^arn:aws(|-cn|-us-gov):rds:[a-zA-Z0-9-]*:[0-9]{12}:cluster:[a-zA-Z0-9-]{1,63}$", - "type": "string" - }, - "TableName": { - "description": "The name of the table in the database.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9_\\.\\-]+$", - "type": "string" - } - }, - "required": [ - "CredentialsSecretArn", - "DatabaseName", - "FieldMapping", - "ResourceArn", - "TableName" - ], - "type": "object" - }, - "RdsFieldMapping": { - "additionalProperties": false, - "description": "Contains the names of the fields to which to map information about the vector store.", - "properties": { - "MetadataField": { - "description": "The name of the field in which Amazon Bedrock stores metadata about the vector store.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9_\\-]+$", - "type": "string" - }, - "PrimaryKeyField": { - "description": "The name of the field in which Amazon Bedrock stores the ID for each entry.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9_\\-]+$", - "type": "string" - }, - "TextField": { - "description": "The name of the field in which Amazon Bedrock stores the raw text from your data. The text is split according to the chunking strategy you choose.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9_\\-]+$", - "type": "string" - }, - "VectorField": { - "description": "The name of the field in which Amazon Bedrock stores the vector embeddings for your data sources.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9_\\-]+$", - "type": "string" - } - }, - "required": [ - "MetadataField", - "PrimaryKeyField", - "TextField", - "VectorField" - ], - "type": "object" - }, - "RedisEnterpriseCloudConfiguration": { - "additionalProperties": false, - "description": "Contains the storage configuration of the knowledge base in Redis Enterprise Cloud.", - "properties": { - "CredentialsSecretArn": { - "description": "The ARN of the secret that you created in AWS Secrets Manager that is linked to your Redis Enterprise Cloud database.", - "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", - "type": "string" - }, - "Endpoint": { - "description": "The endpoint URL of the Redis Enterprise Cloud database.", - "maxLength": 2048, - "pattern": "^.*$", - "type": "string" - }, - "FieldMapping": { - "$ref": "#/definitions/RedisEnterpriseCloudFieldMapping" - }, - "VectorIndexName": { - "description": "The name of the vector index.", - "maxLength": 2048, - "pattern": "^.*$", - "type": "string" - } - }, - "required": [ - "CredentialsSecretArn", - "Endpoint", - "FieldMapping", - "VectorIndexName" - ], - "type": "object" - }, - "RedisEnterpriseCloudFieldMapping": { - "additionalProperties": false, - "description": "Contains the names of the fields to which to map information about the vector store.", - "properties": { - "MetadataField": { - "description": "The name of the field in which Amazon Bedrock stores metadata about the vector store.", - "maxLength": 2048, - "pattern": "^.*$", - "type": "string" - }, - "TextField": { - "description": "The name of the field in which Amazon Bedrock stores the raw text from your data. The text is split according to the chunking strategy you choose.", - "maxLength": 2048, - "pattern": "^.*$", - "type": "string" - }, - "VectorField": { - "description": "The name of the field in which Amazon Bedrock stores the vector embeddings for your data sources.", - "maxLength": 2048, - "pattern": "^.*$", - "type": "string" - } - }, - "required": [ - "MetadataField", - "TextField", - "VectorField" - ], - "type": "object" - }, - "StorageConfiguration": { - "additionalProperties": false, - "description": "The vector store service in which the knowledge base is stored.", - "oneOf": [ - { - "required": [ - "OpensearchServerlessConfiguration" - ] - }, - { - "required": [ - "PineconeConfiguration" - ] - }, - { - "required": [ - "RdsConfiguration" - ] - }, - { - "required": [ - "MongoDbAtlasConfiguration" - ] - } - ], - "properties": { - "MongoDbAtlasConfiguration": { - "$ref": "#/definitions/MongoDbAtlasConfiguration" - }, - "OpensearchServerlessConfiguration": { - "$ref": "#/definitions/OpenSearchServerlessConfiguration" - }, - "PineconeConfiguration": { - "$ref": "#/definitions/PineconeConfiguration" - }, - "RdsConfiguration": { - "$ref": "#/definitions/RdsConfiguration" - }, - "Type": { - "$ref": "#/definitions/KnowledgeBaseStorageType" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "TagsMap": { - "additionalProperties": false, - "description": "A map of tag keys and values", - "patternProperties": { - "^[a-zA-Z0-9\\s._:/=+@-]*$": { - "description": "Value of a tag", - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", - "type": "string" - } - }, - "type": "object" - }, - "VectorKnowledgeBaseConfiguration": { - "additionalProperties": false, - "description": "Contains details about the model used to create vector embeddings for the knowledge base.", - "properties": { - "EmbeddingModelArn": { - "description": "The ARN of the model used to create vector embeddings for the knowledge base.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^(arn:aws(-[^:]+)?:[a-z0-9-]+:[a-z0-9-]{1,20}:[0-9]{0,12}:[a-zA-Z0-9-:/._+]+)$", - "type": "string" - }, - "EmbeddingModelConfiguration": { - "$ref": "#/definitions/EmbeddingModelConfiguration" - } - }, - "required": [ - "EmbeddingModelArn" - ], - "type": "object" - } - }, - "description": "Definition of AWS::Bedrock::KnowledgeBase Resource Type", - "handlers": { - "create": { - "permissions": [ - "bedrock:CreateKnowledgeBase", - "bedrock:GetKnowledgeBase", - "bedrock:TagResource", - "bedrock:ListTagsForResource", - "bedrock:AssociateThirdPartyKnowledgeBase", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "bedrock:GetKnowledgeBase", - "bedrock:DeleteKnowledgeBase", - "bedrock:ListDataSources" - ] - }, - "list": { - "permissions": [ - "bedrock:ListKnowledgeBases" - ] - }, - "read": { - "permissions": [ - "bedrock:GetKnowledgeBase", - "bedrock:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "bedrock:GetKnowledgeBase", - "bedrock:UpdateKnowledgeBase", - "bedrock:TagResource", - "bedrock:UntagResource", - "bedrock:ListTagsForResource", - "bedrock:AssociateThirdPartyKnowledgeBase", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/KnowledgeBaseId" - ], - "properties": { - "CreatedAt": { - "description": "The time at which the knowledge base was created.", - "type": "string" - }, - "Description": { - "description": "Description of the Resource.", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "FailureReasons": { - "description": "A list of reasons that the API operation on the knowledge base failed.", - "insertionOrder": false, - "items": { - "description": "Failure Reason for Error.", - "maxLength": 2048, - "type": "string" - }, - "maxItems": 2048, - "type": "array" - }, - "KnowledgeBaseArn": { - "description": "The ARN of the knowledge base.", - "maxLength": 128, - "minLength": 0, - "pattern": "^arn:aws(|-cn|-us-gov):bedrock:[a-zA-Z0-9-]*:[0-9]{12}:knowledge-base/[0-9a-zA-Z]+$", - "type": "string" - }, - "KnowledgeBaseConfiguration": { - "$ref": "#/definitions/KnowledgeBaseConfiguration" - }, - "KnowledgeBaseId": { - "description": "The unique identifier of the knowledge base.", - "pattern": "^[0-9a-zA-Z]{10}$", - "type": "string" - }, - "Name": { - "description": "The name of the knowledge base.", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - }, - "RoleArn": { - "description": "The ARN of the IAM role with permissions to invoke API operations on the knowledge base. The ARN must begin with AmazonBedrockExecutionRoleForKnowledgeBase_", - "maxLength": 2048, - "pattern": "^arn:aws(-[^:]+)?:iam::([0-9]{12})?:role/.+$", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/KnowledgeBaseStatus" - }, - "StorageConfiguration": { - "$ref": "#/definitions/StorageConfiguration" - }, - "Tags": { - "$ref": "#/definitions/TagsMap" - }, - "UpdatedAt": { - "description": "The time at which the knowledge base was last updated.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/KnowledgeBaseId", - "/properties/KnowledgeBaseArn", - "/properties/CreatedAt", - "/properties/UpdatedAt", - "/properties/FailureReasons", - "/properties/Status" - ], - "required": [ - "KnowledgeBaseConfiguration", - "Name", - "RoleArn", - "StorageConfiguration" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Bedrock::KnowledgeBase" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StorageConfiguration", + "/properties/KnowledgeBaseConfiguration/Type", + "/properties/KnowledgeBaseConfiguration/VectorKnowledgeBaseConfiguration", + "/properties/KnowledgeBaseConfiguration/KendraKnowledgeBaseConfiguration", + "/properties/KnowledgeBaseConfiguration/SqlKnowledgeBaseConfiguration/Type", + "/properties/KnowledgeBaseConfiguration/SqlKnowledgeBaseConfiguration/RedshiftConfiguration/StorageConfigurations", + "/properties/KnowledgeBaseConfiguration/SqlKnowledgeBaseConfiguration/RedshiftConfiguration/QueryEngineConfiguration" + ], + "definitions": { + "AwsDataCatalogTableName": { + "description": "AWS Data Catalog table name", + "maxLength": 200, + "minLength": 1, + "pattern": "^.*\\.*$", + "type": "string" + }, + "AwsDataCatalogTableNames": { + "description": "List of table names in AWS Data Catalog. Must follow two part notation", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AwsDataCatalogTableName" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + }, + "BedrockEmbeddingModelConfiguration": { + "additionalProperties": false, + "description": "The vector configuration details for the Bedrock embeddings model.", + "properties": { + "Dimensions": { + "description": "The dimensions details for the vector configuration used on the Bedrock embeddings model.", + "maximum": 4096, + "minimum": 0, + "type": "integer" + }, + "EmbeddingDataType": { + "description": "The data type for the vectors when using a model to convert text into vector embeddings.", + "enum": [ + "FLOAT32", + "BINARY" + ], + "type": "string" + } + }, + "type": "object" + }, + "CuratedQueries": { + "description": "List of example queries and results", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CuratedQuery" + }, + "maxItems": 10, + "type": "array" + }, + "CuratedQuery": { + "additionalProperties": false, + "description": "Curated query or question and answer pair", + "properties": { + "NaturalLanguage": { + "$ref": "#/definitions/NaturalLanguageString" + }, + "Sql": { + "$ref": "#/definitions/SqlString" + } + }, + "required": [ + "NaturalLanguage", + "Sql" + ], + "type": "object" + }, + "DescriptionString": { + "description": "Description for the attached entity", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "EmbeddingModelConfiguration": { + "additionalProperties": false, + "description": "The embeddings model configuration details for the vector model used in Knowledge Base.", + "properties": { + "BedrockEmbeddingModelConfiguration": { + "$ref": "#/definitions/BedrockEmbeddingModelConfiguration" + } + }, + "type": "object" + }, + "InclusionType": { + "description": "Include or Exclude status for an entity", + "enum": [ + "INCLUDE", + "EXCLUDE" + ], + "type": "string" + }, + "KendraIndexArn": { + "description": "Arn of a Kendra index", + "pattern": "^arn:aws(|-cn|-us-gov):kendra:[a-z0-9-]{1,20}:([0-9]{12}|):index/([a-zA-Z0-9][a-zA-Z0-9-]{35}|[a-zA-Z0-9][a-zA-Z0-9-]{35}-[a-zA-Z0-9][a-zA-Z0-9-]{35})$", + "type": "string" + }, + "KendraKnowledgeBaseConfiguration": { + "additionalProperties": false, + "description": "Configurations for a Kendra knowledge base", + "properties": { + "KendraIndexArn": { + "$ref": "#/definitions/KendraIndexArn" + } + }, + "required": [ + "KendraIndexArn" + ], + "type": "object" + }, + "KnowledgeBaseConfiguration": { + "additionalProperties": false, + "description": "Contains details about the embeddings model used for the knowledge base.", + "properties": { + "KendraKnowledgeBaseConfiguration": { + "$ref": "#/definitions/KendraKnowledgeBaseConfiguration" + }, + "SqlKnowledgeBaseConfiguration": { + "$ref": "#/definitions/SqlKnowledgeBaseConfiguration" + }, + "Type": { + "$ref": "#/definitions/KnowledgeBaseType" + }, + "VectorKnowledgeBaseConfiguration": { + "$ref": "#/definitions/VectorKnowledgeBaseConfiguration" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "KnowledgeBaseStatus": { + "description": "The status of a knowledge base.", + "enum": [ + "CREATING", + "ACTIVE", + "DELETING", + "UPDATING", + "FAILED", + "DELETE_UNSUCCESSFUL" + ], + "type": "string" + }, + "KnowledgeBaseStorageType": { + "description": "The storage type of a knowledge base.", + "enum": [ + "OPENSEARCH_SERVERLESS", + "PINECONE", + "RDS", + "MONGO_DB_ATLAS", + "NEPTUNE_ANALYTICS", + "OPENSEARCH_MANAGED_CLUSTER" + ], + "type": "string" + }, + "KnowledgeBaseType": { + "description": "The type of a knowledge base.", + "enum": [ + "VECTOR", + "KENDRA", + "SQL" + ], + "type": "string" + }, + "MongoDbAtlasConfiguration": { + "additionalProperties": false, + "description": "Contains the storage configuration of the knowledge base in MongoDb Atlas Cloud.", + "properties": { + "CollectionName": { + "description": "Name of the collection within MongoDB Atlas.", + "maxLength": 63, + "pattern": "^.*$", + "type": "string" + }, + "CredentialsSecretArn": { + "description": "The ARN of the secret that you created in AWS Secrets Manager that is linked to your Amazon Mongo database.", + "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", + "type": "string" + }, + "DatabaseName": { + "description": "Name of the database within MongoDB Atlas.", + "maxLength": 63, + "pattern": "^.*$", + "type": "string" + }, + "Endpoint": { + "description": "MongoDB Atlas endpoint.", + "maxLength": 2048, + "pattern": "^[a-zA-Z0-9_-]+\\.[a-zA-Z0-9_-]+\\.mongodb\\.net$", + "type": "string" + }, + "EndpointServiceName": { + "description": "MongoDB Atlas endpoint service name.", + "maxLength": 255, + "pattern": "^(?:arn:aws(?:-us-gov|-cn|-iso|-iso-[a-z])*:.+:.*:\\d+:.+/.+$|[a-zA-Z0-9*]+[a-zA-Z0-9._-]*)$", + "type": "string" + }, + "FieldMapping": { + "$ref": "#/definitions/MongoDbAtlasFieldMapping" + }, + "TextIndexName": { + "description": "Name of a MongoDB Atlas text index.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "VectorIndexName": { + "description": "Name of a MongoDB Atlas index.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "Endpoint", + "CredentialsSecretArn", + "DatabaseName", + "CollectionName", + "VectorIndexName", + "FieldMapping" + ], + "type": "object" + }, + "MongoDbAtlasFieldMapping": { + "additionalProperties": false, + "description": "Contains the names of the fields to which to map information about the vector store.", + "properties": { + "MetadataField": { + "description": "The name of the field in which Amazon Bedrock stores metadata about the vector store.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "TextField": { + "description": "The name of the field in which Amazon Bedrock stores the raw text from your data. The text is split according to the chunking strategy you choose.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "VectorField": { + "description": "The name of the field in which Amazon Bedrock stores the vector embeddings for your data sources.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "VectorField", + "MetadataField", + "TextField" + ], + "type": "object" + }, + "NaturalLanguageString": { + "description": "Question for the curated query", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "NeptuneAnalyticsConfiguration": { + "additionalProperties": false, + "description": "Contains the configurations to use Neptune Analytics as Vector Store.", + "properties": { + "FieldMapping": { + "$ref": "#/definitions/NeptuneAnalyticsFieldMapping" + }, + "GraphArn": { + "description": "ARN for Neptune Analytics graph database.", + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:aws(|-cn|-us-gov):neptune-graph:[a-zA-Z0-9-]*:[0-9]{12}:graph\\/g-[a-zA-Z0-9]{10}$", + "type": "string" + } + }, + "required": [ + "GraphArn", + "FieldMapping" + ], + "type": "object" + }, + "NeptuneAnalyticsFieldMapping": { + "additionalProperties": false, + "description": "A mapping of Bedrock Knowledge Base fields to Neptune Analytics fields.", + "properties": { + "MetadataField": { + "description": "The name of the field in which Amazon Bedrock stores metadata about the vector store.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "TextField": { + "description": "The name of the field in which Amazon Bedrock stores the raw text from your data. The text is split according to the chunking strategy you choose.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "TextField", + "MetadataField" + ], + "type": "object" + }, + "OpenSearchManagedClusterConfiguration": { + "additionalProperties": false, + "description": "Contains the storage configuration of the knowledge base in Amazon OpenSearch Service.", + "properties": { + "DomainArn": { + "description": "The Amazon Resource Name (ARN) of the OpenSearch domain.", + "maxLength": 2048, + "pattern": "^arn:aws(|-cn|-us-gov|-iso):es:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:domain/[a-z][a-z0-9-]{3,28}$", + "type": "string" + }, + "DomainEndpoint": { + "description": "The endpoint URL the OpenSearch domain.", + "maxLength": 2048, + "pattern": "^https://.*$", + "type": "string" + }, + "FieldMapping": { + "$ref": "#/definitions/OpenSearchManagedClusterFieldMapping" + }, + "VectorIndexName": { + "description": "The name of the vector store.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^(?![\\-_+.])[a-z0-9][a-z0-9\\-_\\.]*$", + "type": "string" + } + }, + "required": [ + "DomainArn", + "DomainEndpoint", + "VectorIndexName", + "FieldMapping" + ], + "type": "object" + }, + "OpenSearchManagedClusterFieldMapping": { + "additionalProperties": false, + "description": "A mapping of Bedrock Knowledge Base fields to OpenSearch Managed Cluster field names", + "properties": { + "MetadataField": { + "description": "The name of the field in which Amazon Bedrock stores metadata about the vector store.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "TextField": { + "description": "The name of the field in which Amazon Bedrock stores the raw text from your data. The text is split according to the chunking strategy you choose.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "VectorField": { + "description": "The name of the field in which Amazon Bedrock stores the vector embeddings for your data sources.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "MetadataField", + "TextField", + "VectorField" + ], + "type": "object" + }, + "OpenSearchServerlessConfiguration": { + "additionalProperties": false, + "description": "Contains the storage configuration of the knowledge base in Amazon OpenSearch Service.", + "properties": { + "CollectionArn": { + "description": "The ARN of the OpenSearch Service vector store.", + "maxLength": 2048, + "pattern": "^arn:aws(|-cn|-us-gov|-iso):aoss:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:collection/[a-z0-9-]{3,32}$", + "type": "string" + }, + "FieldMapping": { + "$ref": "#/definitions/OpenSearchServerlessFieldMapping" + }, + "VectorIndexName": { + "description": "The name of the vector store.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "CollectionArn", + "FieldMapping", + "VectorIndexName" + ], + "type": "object" + }, + "OpenSearchServerlessFieldMapping": { + "additionalProperties": false, + "description": "A mapping of Bedrock Knowledge Base fields to OpenSearch Serverless field names", + "properties": { + "MetadataField": { + "description": "The name of the field in which Amazon Bedrock stores metadata about the vector store.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "TextField": { + "description": "The name of the field in which Amazon Bedrock stores the raw text from your data. The text is split according to the chunking strategy you choose.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "VectorField": { + "description": "The name of the field in which Amazon Bedrock stores the vector embeddings for your data sources.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "MetadataField", + "TextField", + "VectorField" + ], + "type": "object" + }, + "PineconeConfiguration": { + "additionalProperties": false, + "description": "Contains the storage configuration of the knowledge base in Pinecone.", + "properties": { + "ConnectionString": { + "description": "The endpoint URL for your index management page.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "CredentialsSecretArn": { + "description": "The ARN of the secret that you created in AWS Secrets Manager that is linked to your Pinecone API key.", + "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", + "type": "string" + }, + "FieldMapping": { + "$ref": "#/definitions/PineconeFieldMapping" + }, + "Namespace": { + "description": "The namespace to be used to write new data to your database.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "ConnectionString", + "CredentialsSecretArn", + "FieldMapping" + ], + "type": "object" + }, + "PineconeFieldMapping": { + "additionalProperties": false, + "description": "Contains the names of the fields to which to map information about the vector store.", + "properties": { + "MetadataField": { + "description": "The name of the field in which Amazon Bedrock stores metadata about the vector store.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "TextField": { + "description": "The name of the field in which Amazon Bedrock stores the raw text from your data. The text is split according to the chunking strategy you choose.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "MetadataField", + "TextField" + ], + "type": "object" + }, + "QueryEngineType": { + "description": "SQL query engine type", + "enum": [ + "REDSHIFT" + ], + "type": "string" + }, + "QueryExecutionTimeoutSeconds": { + "description": "Max query execution timeout", + "maximum": 200, + "minimum": 1, + "type": "integer" + }, + "QueryGenerationColumn": { + "additionalProperties": false, + "description": "Redshift query generation column", + "properties": { + "Description": { + "$ref": "#/definitions/DescriptionString" + }, + "Inclusion": { + "$ref": "#/definitions/InclusionType" + }, + "Name": { + "$ref": "#/definitions/QueryGenerationColumnName" + } + }, + "type": "object" + }, + "QueryGenerationColumnName": { + "description": "Query generation column name", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "QueryGenerationColumns": { + "description": "List of Redshift query generation columns", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/QueryGenerationColumn" + }, + "type": "array" + }, + "QueryGenerationConfiguration": { + "additionalProperties": false, + "description": "Configurations for generating Redshift engine queries", + "properties": { + "ExecutionTimeoutSeconds": { + "$ref": "#/definitions/QueryExecutionTimeoutSeconds" + }, + "GenerationContext": { + "$ref": "#/definitions/QueryGenerationContext" + } + }, + "type": "object" + }, + "QueryGenerationContext": { + "additionalProperties": false, + "description": "Context used to improve query generation", + "properties": { + "CuratedQueries": { + "$ref": "#/definitions/CuratedQueries" + }, + "Tables": { + "$ref": "#/definitions/QueryGenerationTables" + } + }, + "type": "object" + }, + "QueryGenerationTable": { + "additionalProperties": false, + "description": "Tables used for Redshift query generation context", + "properties": { + "Columns": { + "$ref": "#/definitions/QueryGenerationColumns" + }, + "Description": { + "$ref": "#/definitions/DescriptionString" + }, + "Inclusion": { + "$ref": "#/definitions/InclusionType" + }, + "Name": { + "$ref": "#/definitions/QueryGenerationTableName" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "QueryGenerationTableName": { + "description": "Query generation table name. Must follow three-part notation", + "pattern": "^.*\\..*\\..*$", + "type": "string" + }, + "QueryGenerationTables": { + "description": "List of tables used for Redshift query generation context", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/QueryGenerationTable" + }, + "maxItems": 50, + "type": "array" + }, + "RdsConfiguration": { + "additionalProperties": false, + "description": "Contains details about the storage configuration of the knowledge base in Amazon RDS. For more information, see Create a vector index in Amazon RDS.", + "properties": { + "CredentialsSecretArn": { + "description": "The ARN of the secret that you created in AWS Secrets Manager that is linked to your Amazon RDS database.", + "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", + "type": "string" + }, + "DatabaseName": { + "description": "The name of your Amazon RDS database.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9_\\-]+$", + "type": "string" + }, + "FieldMapping": { + "$ref": "#/definitions/RdsFieldMapping" + }, + "ResourceArn": { + "description": "The ARN of the vector store.", + "pattern": "^arn:aws(|-cn|-us-gov):rds:[a-zA-Z0-9-]*:[0-9]{12}:cluster:[a-zA-Z0-9-]{1,63}$", + "type": "string" + }, + "TableName": { + "description": "The name of the table in the database.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9_\\.\\-]+$", + "type": "string" + } + }, + "required": [ + "CredentialsSecretArn", + "DatabaseName", + "FieldMapping", + "ResourceArn", + "TableName" + ], + "type": "object" + }, + "RdsFieldMapping": { + "additionalProperties": false, + "description": "Contains the names of the fields to which to map information about the vector store.", + "properties": { + "CustomMetadataField": { + "description": "The name of the field in which Amazon Bedrock stores custom metadata about the vector store.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9_\\-]+$", + "type": "string" + }, + "MetadataField": { + "description": "The name of the field in which Amazon Bedrock stores metadata about the vector store.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9_\\-]+$", + "type": "string" + }, + "PrimaryKeyField": { + "description": "The name of the field in which Amazon Bedrock stores the ID for each entry.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9_\\-]+$", + "type": "string" + }, + "TextField": { + "description": "The name of the field in which Amazon Bedrock stores the raw text from your data. The text is split according to the chunking strategy you choose.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9_\\-]+$", + "type": "string" + }, + "VectorField": { + "description": "The name of the field in which Amazon Bedrock stores the vector embeddings for your data sources.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9_\\-]+$", + "type": "string" + } + }, + "required": [ + "MetadataField", + "PrimaryKeyField", + "TextField", + "VectorField" + ], + "type": "object" + }, + "RedisEnterpriseCloudConfiguration": { + "additionalProperties": false, + "description": "Contains the storage configuration of the knowledge base in Redis Enterprise Cloud.", + "properties": { + "CredentialsSecretArn": { + "description": "The ARN of the secret that you created in AWS Secrets Manager that is linked to your Redis Enterprise Cloud database.", + "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", + "type": "string" + }, + "Endpoint": { + "description": "The endpoint URL of the Redis Enterprise Cloud database.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "FieldMapping": { + "$ref": "#/definitions/RedisEnterpriseCloudFieldMapping" + }, + "VectorIndexName": { + "description": "The name of the vector index.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "CredentialsSecretArn", + "Endpoint", + "FieldMapping", + "VectorIndexName" + ], + "type": "object" + }, + "RedisEnterpriseCloudFieldMapping": { + "additionalProperties": false, + "description": "Contains the names of the fields to which to map information about the vector store.", + "properties": { + "MetadataField": { + "description": "The name of the field in which Amazon Bedrock stores metadata about the vector store.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "TextField": { + "description": "The name of the field in which Amazon Bedrock stores the raw text from your data. The text is split according to the chunking strategy you choose.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "VectorField": { + "description": "The name of the field in which Amazon Bedrock stores the vector embeddings for your data sources.", + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "MetadataField", + "TextField", + "VectorField" + ], + "type": "object" + }, + "RedshiftClusterIdentifier": { + "description": "Redshift cluster identifier", + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "RedshiftConfiguration": { + "additionalProperties": false, + "description": "Configurations for a Redshift knowledge base", + "properties": { + "QueryEngineConfiguration": { + "$ref": "#/definitions/RedshiftQueryEngineConfiguration" + }, + "QueryGenerationConfiguration": { + "$ref": "#/definitions/QueryGenerationConfiguration" + }, + "StorageConfigurations": { + "$ref": "#/definitions/RedshiftQueryEngineStorageConfigurations" + } + }, + "required": [ + "StorageConfigurations", + "QueryEngineConfiguration" + ], + "type": "object" + }, + "RedshiftDatabase": { + "description": "Redshift database name", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "RedshiftProvisionedAuthConfiguration": { + "additionalProperties": false, + "description": "Configurations for Redshift query engine provisioned auth setup", + "properties": { + "DatabaseUser": { + "description": "Redshift database user", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/RedshiftProvisionedAuthType" + }, + "UsernamePasswordSecretArn": { + "$ref": "#/definitions/SecretArn" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "RedshiftProvisionedAuthType": { + "description": "Provisioned Redshift auth type", + "enum": [ + "IAM", + "USERNAME_PASSWORD", + "USERNAME" + ], + "type": "string" + }, + "RedshiftProvisionedConfiguration": { + "additionalProperties": false, + "description": "Configurations for provisioned Redshift query engine", + "properties": { + "AuthConfiguration": { + "$ref": "#/definitions/RedshiftProvisionedAuthConfiguration" + }, + "ClusterIdentifier": { + "$ref": "#/definitions/RedshiftClusterIdentifier" + } + }, + "required": [ + "ClusterIdentifier", + "AuthConfiguration" + ], + "type": "object" + }, + "RedshiftQueryEngineAwsDataCatalogStorageConfiguration": { + "additionalProperties": false, + "description": "Configurations for Redshift query engine AWS Data Catalog backed storage", + "properties": { + "TableNames": { + "$ref": "#/definitions/AwsDataCatalogTableNames" + } + }, + "required": [ + "TableNames" + ], + "type": "object" + }, + "RedshiftQueryEngineConfiguration": { + "additionalProperties": false, + "description": "Configurations for Redshift query engine", + "properties": { + "ProvisionedConfiguration": { + "$ref": "#/definitions/RedshiftProvisionedConfiguration" + }, + "ServerlessConfiguration": { + "$ref": "#/definitions/RedshiftServerlessConfiguration" + }, + "Type": { + "$ref": "#/definitions/RedshiftQueryEngineType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "RedshiftQueryEngineRedshiftStorageConfiguration": { + "additionalProperties": false, + "description": "Configurations for Redshift query engine Redshift backed storage", + "properties": { + "DatabaseName": { + "$ref": "#/definitions/RedshiftDatabase" + } + }, + "required": [ + "DatabaseName" + ], + "type": "object" + }, + "RedshiftQueryEngineStorageConfiguration": { + "additionalProperties": false, + "description": "Configurations for available Redshift query engine storage types", + "properties": { + "AwsDataCatalogConfiguration": { + "$ref": "#/definitions/RedshiftQueryEngineAwsDataCatalogStorageConfiguration" + }, + "RedshiftConfiguration": { + "$ref": "#/definitions/RedshiftQueryEngineRedshiftStorageConfiguration" + }, + "Type": { + "$ref": "#/definitions/RedshiftQueryEngineStorageType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "RedshiftQueryEngineStorageConfigurations": { + "description": "List of configurations for available Redshift query engine storage types", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RedshiftQueryEngineStorageConfiguration" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "RedshiftQueryEngineStorageType": { + "description": "Redshift query engine storage type", + "enum": [ + "REDSHIFT", + "AWS_DATA_CATALOG" + ], + "type": "string" + }, + "RedshiftQueryEngineType": { + "description": "Redshift query engine type", + "enum": [ + "SERVERLESS", + "PROVISIONED" + ], + "type": "string" + }, + "RedshiftServerlessAuthConfiguration": { + "additionalProperties": false, + "description": "Configurations for Redshift query engine serverless auth setup", + "properties": { + "Type": { + "$ref": "#/definitions/RedshiftServerlessAuthType" + }, + "UsernamePasswordSecretArn": { + "$ref": "#/definitions/SecretArn" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "RedshiftServerlessAuthType": { + "description": "Serverless Redshift auth type", + "enum": [ + "IAM", + "USERNAME_PASSWORD" + ], + "type": "string" + }, + "RedshiftServerlessConfiguration": { + "additionalProperties": false, + "description": "Configurations for serverless Redshift query engine", + "properties": { + "AuthConfiguration": { + "$ref": "#/definitions/RedshiftServerlessAuthConfiguration" + }, + "WorkgroupArn": { + "$ref": "#/definitions/WorkgroupArn" + } + }, + "required": [ + "WorkgroupArn", + "AuthConfiguration" + ], + "type": "object" + }, + "S3Location": { + "additionalProperties": false, + "description": "An Amazon S3 location.", + "properties": { + "URI": { + "description": "The location's URI", + "maxLength": 2048, + "minLength": 1, + "pattern": "^s3://.{1,128}$", + "type": "string" + } + }, + "required": [ + "URI" + ], + "type": "object" + }, + "SecretArn": { + "description": "Arn of a SecretsManager Secret", + "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", + "type": "string" + }, + "SqlKnowledgeBaseConfiguration": { + "additionalProperties": false, + "description": "Configurations for a SQL knowledge base", + "properties": { + "RedshiftConfiguration": { + "$ref": "#/definitions/RedshiftConfiguration" + }, + "Type": { + "$ref": "#/definitions/QueryEngineType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "SqlString": { + "description": "Answer for the curated query", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "StorageConfiguration": { + "additionalProperties": false, + "description": "The vector store service in which the knowledge base is stored.", + "oneOf": [ + { + "required": [ + "OpensearchServerlessConfiguration" + ] + }, + { + "required": [ + "PineconeConfiguration" + ] + }, + { + "required": [ + "RdsConfiguration" + ] + }, + { + "required": [ + "NeptuneAnalyticsConfiguration" + ] + }, + { + "required": [ + "MongoDbAtlasConfiguration" + ] + }, + { + "required": [ + "OpensearchManagedClusterConfiguration" + ] + } + ], + "properties": { + "MongoDbAtlasConfiguration": { + "$ref": "#/definitions/MongoDbAtlasConfiguration" + }, + "NeptuneAnalyticsConfiguration": { + "$ref": "#/definitions/NeptuneAnalyticsConfiguration" + }, + "OpensearchManagedClusterConfiguration": { + "$ref": "#/definitions/OpenSearchManagedClusterConfiguration" + }, + "OpensearchServerlessConfiguration": { + "$ref": "#/definitions/OpenSearchServerlessConfiguration" + }, + "PineconeConfiguration": { + "$ref": "#/definitions/PineconeConfiguration" + }, + "RdsConfiguration": { + "$ref": "#/definitions/RdsConfiguration" + }, + "Type": { + "$ref": "#/definitions/KnowledgeBaseStorageType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "SupplementalDataStorageConfiguration": { + "additionalProperties": false, + "description": "Configurations for supplemental data storage.", + "properties": { + "SupplementalDataStorageLocations": { + "$ref": "#/definitions/SupplementalDataStorageLocations" + } + }, + "required": [ + "SupplementalDataStorageLocations" + ], + "type": "object" + }, + "SupplementalDataStorageLocation": { + "additionalProperties": false, + "description": "Supplemental data storage location.", + "properties": { + "S3Location": { + "$ref": "#/definitions/S3Location" + }, + "SupplementalDataStorageLocationType": { + "$ref": "#/definitions/SupplementalDataStorageLocationType" + } + }, + "required": [ + "SupplementalDataStorageLocationType" + ], + "type": "object" + }, + "SupplementalDataStorageLocationType": { + "description": "Supplemental data storage location type.", + "enum": [ + "S3" + ], + "type": "string" + }, + "SupplementalDataStorageLocations": { + "description": "List of supplemental data storage locations.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SupplementalDataStorageLocation" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "TagsMap": { + "additionalProperties": false, + "description": "A map of tag keys and values", + "patternProperties": { + "^[a-zA-Z0-9\\s._:/=+@-]*$": { + "description": "Value of a tag", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + } + }, + "type": "object" + }, + "VectorKnowledgeBaseConfiguration": { + "additionalProperties": false, + "description": "Contains details about the model used to create vector embeddings for the knowledge base.", + "properties": { + "EmbeddingModelArn": { + "description": "The ARN of the model used to create vector embeddings for the knowledge base.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^(arn:aws(-[^:]+)?:[a-z0-9-]+:[a-z0-9-]{1,20}:[0-9]{0,12}:[a-zA-Z0-9-:/._+]+)$", + "type": "string" + }, + "EmbeddingModelConfiguration": { + "$ref": "#/definitions/EmbeddingModelConfiguration" + }, + "SupplementalDataStorageConfiguration": { + "$ref": "#/definitions/SupplementalDataStorageConfiguration" + } + }, + "required": [ + "EmbeddingModelArn" + ], + "type": "object" + }, + "WorkgroupArn": { + "description": "Workgroup arn", + "pattern": "^(arn:(aws(-[a-z]+)*):redshift-serverless:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:workgroup/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$", + "type": "string" + } + }, + "description": "Definition of AWS::Bedrock::KnowledgeBase Resource Type", + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateKnowledgeBase", + "bedrock:GetKnowledgeBase", + "bedrock:TagResource", + "bedrock:ListTagsForResource", + "bedrock:AssociateThirdPartyKnowledgeBase", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "bedrock:GetKnowledgeBase", + "bedrock:DeleteKnowledgeBase", + "bedrock:ListDataSources" + ] + }, + "list": { + "permissions": [ + "bedrock:ListKnowledgeBases" + ] + }, + "read": { + "permissions": [ + "bedrock:GetKnowledgeBase", + "bedrock:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "bedrock:GetKnowledgeBase", + "bedrock:UpdateKnowledgeBase", + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource", + "bedrock:AssociateThirdPartyKnowledgeBase", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/KnowledgeBaseId" + ], + "properties": { + "CreatedAt": { + "description": "The time at which the knowledge base was created.", + "type": "string" + }, + "Description": { + "description": "Description of the Resource.", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "FailureReasons": { + "description": "A list of reasons that the API operation on the knowledge base failed.", + "insertionOrder": false, + "items": { + "description": "Failure Reason for Error.", + "maxLength": 2048, + "type": "string" + }, + "maxItems": 2048, + "type": "array" + }, + "KnowledgeBaseArn": { + "description": "The ARN of the knowledge base.", + "maxLength": 128, + "minLength": 0, + "pattern": "^arn:aws(|-cn|-us-gov):bedrock:[a-zA-Z0-9-]*:[0-9]{12}:knowledge-base/[0-9a-zA-Z]+$", + "type": "string" + }, + "KnowledgeBaseConfiguration": { + "$ref": "#/definitions/KnowledgeBaseConfiguration" + }, + "KnowledgeBaseId": { + "description": "The unique identifier of the knowledge base.", + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "Name": { + "description": "The name of the knowledge base.", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the IAM role with permissions to invoke API operations on the knowledge base. The ARN must begin with AmazonBedrockExecutionRoleForKnowledgeBase_", + "maxLength": 2048, + "pattern": "^arn:aws(-[^:]+)?:iam::([0-9]{12})?:role/.+$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/KnowledgeBaseStatus" + }, + "StorageConfiguration": { + "$ref": "#/definitions/StorageConfiguration" + }, + "Tags": { + "$ref": "#/definitions/TagsMap" + }, + "UpdatedAt": { + "description": "The time at which the knowledge base was last updated.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/KnowledgeBaseId", + "/properties/KnowledgeBaseArn", + "/properties/CreatedAt", + "/properties/UpdatedAt", + "/properties/FailureReasons", + "/properties/Status" + ], + "required": [ + "KnowledgeBaseConfiguration", + "Name", + "RoleArn" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Bedrock::KnowledgeBase" +} diff --git a/src/schema/aws-bedrock-prompt.json b/src/schema/aws-bedrock-prompt.json index 656591f1..318dfff5 100644 --- a/src/schema/aws-bedrock-prompt.json +++ b/src/schema/aws-bedrock-prompt.json @@ -1,341 +1,772 @@ -{ - "additionalProperties": false, - "definitions": { - "PromptInferenceConfiguration": { - "description": "Model inference configuration", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Text": { - "$ref": "#/definitions/PromptModelInferenceConfiguration" - } - }, - "required": [ - "Text" - ], - "title": "Text", - "type": "object" - } - ] - }, - "PromptInputVariable": { - "additionalProperties": false, - "description": "Input variable", - "properties": { - "Name": { - "description": "Name for an input variable", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - } - }, - "type": "object" - }, - "PromptModelInferenceConfiguration": { - "additionalProperties": false, - "description": "Prompt model inference configuration", - "properties": { - "MaxTokens": { - "description": "Maximum length of output", - "maximum": 4096, - "minimum": 0, - "type": "number" - }, - "StopSequences": { - "description": "List of stop sequences", - "insertionOrder": true, - "items": { - "type": "string" - }, - "maxItems": 4, - "minItems": 0, - "type": "array" - }, - "Temperature": { - "description": "Controls randomness, higher values increase diversity", - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "TopP": { - "description": "Cumulative probability cutoff for token selection", - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "PromptTemplateConfiguration": { - "description": "Prompt template configuration", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Text": { - "$ref": "#/definitions/TextPromptTemplateConfiguration" - } - }, - "required": [ - "Text" - ], - "title": "Text", - "type": "object" - } - ] - }, - "PromptTemplateType": { - "description": "Prompt template type", - "enum": [ - "TEXT" - ], - "type": "string" - }, - "PromptVariant": { - "additionalProperties": false, - "description": "Prompt variant", - "properties": { - "InferenceConfiguration": { - "$ref": "#/definitions/PromptInferenceConfiguration" - }, - "ModelId": { - "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^(arn:aws(-[^:]{1,12})?:(bedrock|sagemaker):[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", - "type": "string" - }, - "Name": { - "description": "Name for a variant.", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - }, - "TemplateConfiguration": { - "$ref": "#/definitions/PromptTemplateConfiguration" - }, - "TemplateType": { - "$ref": "#/definitions/PromptTemplateType" - } - }, - "required": [ - "Name", - "TemplateType", - "TemplateConfiguration" - ], - "type": "object" - }, - "TagsMap": { - "additionalProperties": false, - "description": "A map of tag keys and values", - "patternProperties": { - "^[a-zA-Z0-9\\s._:/=+@-]*$": { - "description": "Value of a tag", - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", - "type": "string" - } - }, - "type": "object" - }, - "TextPromptTemplateConfiguration": { - "additionalProperties": false, - "description": "Configuration for text prompt template", - "properties": { - "InputVariables": { - "description": "List of input variables", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PromptInputVariable" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - }, - "Text": { - "description": "Prompt content for String prompt template", - "maxLength": 200000, - "minLength": 1, - "type": "string" - }, - "TextS3Location": { - "$ref": "#/definitions/TextS3Location" - } - }, - "required": [], - "type": "object" - }, - "TextS3Location": { - "additionalProperties": false, - "description": "The identifier for the S3 resource.", - "properties": { - "Bucket": { - "description": "A bucket in S3", - "maxLength": 63, - "minLength": 3, - "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", - "type": "string" - }, - "Key": { - "description": "A object key in S3", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Version": { - "description": "The version of the the S3 object to use", - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Bucket", - "Key" - ], - "type": "object" - } - }, - "description": "Definition of AWS::Bedrock::Prompt Resource Type", - "handlers": { - "create": { - "permissions": [ - "bedrock:CreatePrompt", - "bedrock:GetPrompt", - "s3:GetObject", - "s3:GetObjectVersion", - "bedrock:TagResource", - "bedrock:ListTagsForResource", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "delete": { - "permissions": [ - "bedrock:DeletePrompt", - "bedrock:GetPrompt" - ] - }, - "list": { - "permissions": [ - "bedrock:ListPrompts" - ] - }, - "read": { - "permissions": [ - "bedrock:GetPrompt", - "bedrock:ListTagsForResource", - "kms:Decrypt" - ] - }, - "update": { - "permissions": [ - "bedrock:UpdatePrompt", - "bedrock:GetPrompt", - "s3:GetObject", - "s3:GetObjectVersion", - "bedrock:TagResource", - "bedrock:UntagResource", - "bedrock:ListTagsForResource", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "ARN of a prompt resource possibly with a version", - "maxLength": 2048, - "minLength": 1, - "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:prompt/[0-9a-zA-Z]{10})$", - "type": "string" - }, - "CreatedAt": { - "description": "Time Stamp.", - "format": "date-time", - "type": "string" - }, - "CustomerEncryptionKeyArn": { - "description": "A KMS key ARN", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", - "type": "string" - }, - "DefaultVariant": { - "description": "Name for a variant.", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - }, - "Description": { - "description": "Name for a prompt resource.", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "Id": { - "description": "Identifier for a Prompt", - "pattern": "^[0-9a-zA-Z]{10}$", - "type": "string" - }, - "Name": { - "description": "Name for a prompt resource.", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/TagsMap" - }, - "UpdatedAt": { - "description": "Time Stamp.", - "format": "date-time", - "type": "string" - }, - "Variants": { - "description": "List of prompt variants", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PromptVariant" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Version": { - "description": "Draft Version.", - "maxLength": 5, - "minLength": 5, - "pattern": "^DRAFT$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/Id", - "/properties/UpdatedAt", - "/properties/Version" - ], - "required": [ - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "bedrock:TagResource", - "bedrock:UntagResource", - "bedrock:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Bedrock::Prompt", - "writeOnlyProperties": [ - "/properties/Variants/*/TemplateConfiguration/Text/TextS3Location" - ] -} +{ + "additionalProperties": false, + "definitions": { + "AdditionalModelRequestFields": { + "description": "Contains model-specific configurations", + "type": "object" + }, + "AnyToolChoice": { + "additionalProperties": false, + "description": "Any Tool choice", + "type": "object" + }, + "AutoToolChoice": { + "additionalProperties": false, + "description": "Auto Tool choice", + "type": "object" + }, + "CachePointBlock": { + "additionalProperties": false, + "description": "CachePointBlock", + "properties": { + "Type": { + "$ref": "#/definitions/CachePointType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "CachePointType": { + "description": "CachePoint types for CachePointBlock", + "enum": [ + "default" + ], + "type": "string" + }, + "ChatPromptTemplateConfiguration": { + "additionalProperties": false, + "description": "Configuration for chat prompt template", + "properties": { + "InputVariables": { + "description": "List of input variables", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PromptInputVariable" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "Messages": { + "description": "List of messages for chat prompt template", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Message" + }, + "minItems": 0, + "type": "array" + }, + "System": { + "description": "Configuration for chat prompt template", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/SystemContentBlock" + }, + "minItems": 0, + "type": "array" + }, + "ToolConfiguration": { + "$ref": "#/definitions/ToolConfiguration" + } + }, + "required": [ + "Messages" + ], + "type": "object" + }, + "ContentBlock": { + "description": "Configuration for chat prompt template", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Text": { + "description": "Configuration for chat prompt template", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Text" + ], + "title": "Text", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "CachePoint": { + "$ref": "#/definitions/CachePointBlock" + } + }, + "required": [ + "CachePoint" + ], + "title": "CachePoint", + "type": "object" + } + ] + }, + "ConversationRole": { + "description": "Conversation roles for the chat prompt", + "enum": [ + "user", + "assistant" + ], + "type": "string" + }, + "Message": { + "additionalProperties": false, + "description": "Chat prompt Message", + "properties": { + "Content": { + "description": "List of Content Blocks", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ContentBlock" + }, + "minItems": 1, + "type": "array" + }, + "Role": { + "$ref": "#/definitions/ConversationRole" + } + }, + "required": [ + "Role", + "Content" + ], + "type": "object" + }, + "PromptAgentResource": { + "additionalProperties": false, + "description": "Target Agent to invoke with Prompt", + "properties": { + "AgentIdentifier": { + "description": "Arn representation of the Agent Alias.", + "maxLength": 2048, + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:agent-alias/[0-9a-zA-Z]{10}/[0-9a-zA-Z]{10}$", + "type": "string" + } + }, + "required": [ + "AgentIdentifier" + ], + "type": "object" + }, + "PromptGenAiResource": { + "description": "Target resource to invoke with Prompt", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Agent": { + "$ref": "#/definitions/PromptAgentResource" + } + }, + "required": [ + "Agent" + ], + "title": "Agent", + "type": "object" + } + ] + }, + "PromptInferenceConfiguration": { + "description": "Model inference configuration", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Text": { + "$ref": "#/definitions/PromptModelInferenceConfiguration" + } + }, + "required": [ + "Text" + ], + "title": "Text", + "type": "object" + } + ] + }, + "PromptInputVariable": { + "additionalProperties": false, + "description": "Input variable", + "properties": { + "Name": { + "description": "Name for an input variable", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + } + }, + "type": "object" + }, + "PromptMetadataEntry": { + "additionalProperties": false, + "description": "Contains a key-value pair that defines a metadata tag and value to attach to a prompt variant.", + "properties": { + "Key": { + "$ref": "#/definitions/PromptMetadataKey" + }, + "Value": { + "$ref": "#/definitions/PromptMetadataValue" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "PromptMetadataKey": { + "description": "The key of a metadata tag for a prompt variant.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + }, + "PromptMetadataList": { + "description": "List of metadata to associate with the prompt variant.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PromptMetadataEntry" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + }, + "PromptMetadataValue": { + "description": "The value of a metadata tag for a prompt variant.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + }, + "PromptModelInferenceConfiguration": { + "additionalProperties": false, + "description": "Prompt model inference configuration", + "properties": { + "MaxTokens": { + "description": "Maximum length of output", + "maximum": 4096, + "minimum": 0, + "type": "number" + }, + "StopSequences": { + "description": "List of stop sequences", + "insertionOrder": true, + "items": { + "type": "string" + }, + "maxItems": 4, + "minItems": 0, + "type": "array" + }, + "Temperature": { + "description": "Controls randomness, higher values increase diversity", + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "TopP": { + "description": "Cumulative probability cutoff for token selection", + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "PromptTemplateConfiguration": { + "description": "Prompt template configuration", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Text": { + "$ref": "#/definitions/TextPromptTemplateConfiguration" + } + }, + "required": [ + "Text" + ], + "title": "Text", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Chat": { + "$ref": "#/definitions/ChatPromptTemplateConfiguration" + } + }, + "required": [ + "Chat" + ], + "title": "Chat", + "type": "object" + } + ] + }, + "PromptTemplateType": { + "description": "Prompt template type", + "enum": [ + "TEXT", + "CHAT" + ], + "type": "string" + }, + "PromptVariant": { + "additionalProperties": false, + "description": "Prompt variant", + "properties": { + "AdditionalModelRequestFields": { + "$ref": "#/definitions/AdditionalModelRequestFields" + }, + "GenAiResource": { + "$ref": "#/definitions/PromptGenAiResource" + }, + "InferenceConfiguration": { + "$ref": "#/definitions/PromptInferenceConfiguration" + }, + "Metadata": { + "$ref": "#/definitions/PromptMetadataList" + }, + "ModelId": { + "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^(arn:aws(-[^:]{1,12})?:(bedrock|sagemaker):[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", + "type": "string" + }, + "Name": { + "description": "Name for a variant.", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "TemplateConfiguration": { + "$ref": "#/definitions/PromptTemplateConfiguration" + }, + "TemplateType": { + "$ref": "#/definitions/PromptTemplateType" + } + }, + "required": [ + "Name", + "TemplateType", + "TemplateConfiguration" + ], + "type": "object" + }, + "SpecificToolChoice": { + "additionalProperties": false, + "description": "Specific Tool choice", + "properties": { + "Name": { + "description": "Tool name", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "SystemContentBlock": { + "description": "Configuration for chat prompt template", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Text": { + "description": "Configuration for chat prompt template", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Text" + ], + "title": "Text", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "CachePoint": { + "$ref": "#/definitions/CachePointBlock" + } + }, + "required": [ + "CachePoint" + ], + "title": "CachePoint", + "type": "object" + } + ] + }, + "TagsMap": { + "additionalProperties": false, + "description": "A map of tag keys and values", + "patternProperties": { + "^[a-zA-Z0-9\\s._:/=+@-]*$": { + "description": "Value of a tag", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + } + }, + "type": "object" + }, + "TextPromptTemplateConfiguration": { + "additionalProperties": false, + "description": "Configuration for text prompt template", + "properties": { + "CachePoint": { + "$ref": "#/definitions/CachePointBlock" + }, + "InputVariables": { + "description": "List of input variables", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PromptInputVariable" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "Text": { + "description": "Prompt content for String prompt template", + "maxLength": 200000, + "minLength": 1, + "type": "string" + }, + "TextS3Location": { + "$ref": "#/definitions/TextS3Location" + } + }, + "required": [], + "type": "object" + }, + "TextS3Location": { + "additionalProperties": false, + "description": "The identifier for the S3 resource.", + "properties": { + "Bucket": { + "description": "A bucket in S3", + "maxLength": 63, + "minLength": 3, + "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", + "type": "string" + }, + "Key": { + "description": "A object key in S3", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Version": { + "description": "The version of the the S3 object to use", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Bucket", + "Key" + ], + "type": "object" + }, + "Tool": { + "description": "Tool details", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "ToolSpec": { + "$ref": "#/definitions/ToolSpecification" + } + }, + "required": [ + "ToolSpec" + ], + "title": "ToolSpec", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "CachePoint": { + "$ref": "#/definitions/CachePointBlock" + } + }, + "required": [ + "CachePoint" + ], + "title": "CachePoint", + "type": "object" + } + ] + }, + "ToolChoice": { + "description": "Tool choice", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Auto": { + "$ref": "#/definitions/AutoToolChoice" + } + }, + "required": [ + "Auto" + ], + "title": "Auto", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Any": { + "$ref": "#/definitions/AnyToolChoice" + } + }, + "required": [ + "Any" + ], + "title": "Any", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Tool": { + "$ref": "#/definitions/SpecificToolChoice" + } + }, + "required": [ + "Tool" + ], + "title": "Tool", + "type": "object" + } + ] + }, + "ToolConfiguration": { + "additionalProperties": false, + "description": "Tool configuration", + "properties": { + "ToolChoice": { + "$ref": "#/definitions/ToolChoice" + }, + "Tools": { + "description": "List of Tools", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Tool" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Tools" + ], + "type": "object" + }, + "ToolInputSchema": { + "description": "Tool input schema", + "oneOf": [ + { + "additionalProperties": false, + "description": "Tool input schema json", + "properties": { + "Json": { + "type": "object" + } + }, + "required": [ + "Json" + ], + "title": "Json", + "type": "object" + } + ] + }, + "ToolSpecification": { + "additionalProperties": false, + "description": "Tool specification", + "properties": { + "Description": { + "minLength": 1, + "type": "string" + }, + "InputSchema": { + "$ref": "#/definitions/ToolInputSchema" + }, + "Name": { + "description": "Tool name", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + } + }, + "required": [ + "Name", + "InputSchema" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Bedrock::Prompt Resource Type", + "handlers": { + "create": { + "permissions": [ + "bedrock:CreatePrompt", + "bedrock:GetPrompt", + "s3:GetObject", + "s3:GetObjectVersion", + "bedrock:TagResource", + "bedrock:ListTagsForResource", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeletePrompt", + "bedrock:GetPrompt" + ] + }, + "list": { + "permissions": [ + "bedrock:ListPrompts" + ] + }, + "read": { + "permissions": [ + "bedrock:GetPrompt", + "bedrock:ListTagsForResource", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "bedrock:UpdatePrompt", + "bedrock:GetPrompt", + "s3:GetObject", + "s3:GetObjectVersion", + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "ARN of a prompt resource possibly with a version", + "maxLength": 2048, + "minLength": 1, + "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:prompt/[0-9a-zA-Z]{10})$", + "type": "string" + }, + "CreatedAt": { + "description": "Time Stamp.", + "format": "date-time", + "type": "string" + }, + "CustomerEncryptionKeyArn": { + "description": "A KMS key ARN", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", + "type": "string" + }, + "DefaultVariant": { + "description": "Name for a variant.", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "Description": { + "description": "Name for a prompt resource.", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "Id": { + "description": "Identifier for a Prompt", + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "Name": { + "description": "Name for a prompt resource.", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/TagsMap" + }, + "UpdatedAt": { + "description": "Time Stamp.", + "format": "date-time", + "type": "string" + }, + "Variants": { + "description": "List of prompt variants", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PromptVariant" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Version": { + "description": "Draft Version.", + "maxLength": 5, + "minLength": 5, + "pattern": "^DRAFT$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/Id", + "/properties/UpdatedAt", + "/properties/Version" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Bedrock::Prompt", + "writeOnlyProperties": [ + "/properties/Variants/*/TemplateConfiguration/Text/TextS3Location" + ] +} diff --git a/src/schema/aws-bedrock-promptversion.json b/src/schema/aws-bedrock-promptversion.json index 36befd84..a85d4b90 100644 --- a/src/schema/aws-bedrock-promptversion.json +++ b/src/schema/aws-bedrock-promptversion.json @@ -1,318 +1,749 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PromptArn", - "/properties/Description", - "/properties/Tags" - ], - "definitions": { - "PromptInferenceConfiguration": { - "description": "Model inference configuration", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Text": { - "$ref": "#/definitions/PromptModelInferenceConfiguration" - } - }, - "required": [ - "Text" - ], - "title": "Text", - "type": "object" - } - ] - }, - "PromptInputVariable": { - "additionalProperties": false, - "description": "Input variable", - "properties": { - "Name": { - "description": "Name for an input variable", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - } - }, - "type": "object" - }, - "PromptModelInferenceConfiguration": { - "additionalProperties": false, - "description": "Prompt model inference configuration", - "properties": { - "MaxTokens": { - "description": "Maximum length of output", - "maximum": 4096, - "minimum": 0, - "type": "number" - }, - "StopSequences": { - "description": "List of stop sequences", - "insertionOrder": true, - "items": { - "type": "string" - }, - "maxItems": 4, - "minItems": 0, - "type": "array" - }, - "Temperature": { - "description": "Controls randomness, higher values increase diversity", - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "TopP": { - "description": "Cumulative probability cutoff for token selection", - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "PromptTemplateConfiguration": { - "description": "Prompt template configuration", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Text": { - "$ref": "#/definitions/TextPromptTemplateConfiguration" - } - }, - "required": [ - "Text" - ], - "title": "Text", - "type": "object" - } - ] - }, - "PromptTemplateType": { - "description": "Prompt template type", - "enum": [ - "TEXT" - ], - "type": "string" - }, - "PromptVariant": { - "additionalProperties": false, - "description": "Prompt variant", - "properties": { - "InferenceConfiguration": { - "$ref": "#/definitions/PromptInferenceConfiguration" - }, - "ModelId": { - "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^(arn:aws(-[^:]{1,12})?:(bedrock|sagemaker):[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", - "type": "string" - }, - "Name": { - "description": "Name for a variant.", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - }, - "TemplateConfiguration": { - "$ref": "#/definitions/PromptTemplateConfiguration" - }, - "TemplateType": { - "$ref": "#/definitions/PromptTemplateType" - } - }, - "required": [ - "Name", - "TemplateType", - "TemplateConfiguration" - ], - "type": "object" - }, - "TagsMap": { - "additionalProperties": false, - "description": "A map of tag keys and values", - "patternProperties": { - "^[a-zA-Z0-9\\s._:/=+@-]*$": { - "description": "Value of a tag", - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", - "type": "string" - } - }, - "type": "object" - }, - "TextPromptTemplateConfiguration": { - "additionalProperties": false, - "description": "Configuration for text prompt template", - "properties": { - "InputVariables": { - "description": "List of input variables", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PromptInputVariable" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - }, - "Text": { - "description": "Prompt content for String prompt template", - "maxLength": 200000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Text" - ], - "type": "object" - } - }, - "description": "Definition of AWS::Bedrock::PromptVersion Resource Type", - "handlers": { - "create": { - "permissions": [ - "bedrock:CreatePromptVersion", - "bedrock:GetPrompt", - "bedrock:TagResource", - "bedrock:ListTagsForResource", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "delete": { - "permissions": [ - "bedrock:DeletePrompt", - "bedrock:GetPrompt" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PromptArn": { - "$ref": "resource-schema.json#/properties/PromptArn" - } - }, - "required": [ - "PromptArn" - ] - }, - "permissions": [ - "bedrock:ListPrompts" - ] - }, - "read": { - "permissions": [ - "bedrock:GetPrompt", - "bedrock:ListTagsForResource", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "ARN of a prompt version resource", - "maxLength": 2048, - "minLength": 1, - "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:prompt/[0-9a-zA-Z]{10}:[0-9]{1,20})$", - "type": "string" - }, - "CreatedAt": { - "description": "Time Stamp.", - "format": "date-time", - "type": "string" - }, - "CustomerEncryptionKeyArn": { - "description": "A KMS key ARN", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", - "type": "string" - }, - "DefaultVariant": { - "description": "Name for a variant.", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - }, - "Description": { - "description": "Description for a prompt version resource.", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "Name for a prompt resource.", - "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", - "type": "string" - }, - "PromptArn": { - "description": "ARN of a prompt resource possibly with a version", - "maxLength": 2048, - "minLength": 1, - "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:prompt/[0-9a-zA-Z]{10})$", - "type": "string" - }, - "PromptId": { - "description": "Identifier for a Prompt", - "pattern": "^[0-9a-zA-Z]{10}$", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/TagsMap" - }, - "UpdatedAt": { - "description": "Time Stamp.", - "format": "date-time", - "type": "string" - }, - "Variants": { - "description": "List of prompt variants", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PromptVariant" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "Version": { - "description": "Version.", - "maxLength": 5, - "minLength": 1, - "pattern": "^(DRAFT|[0-9]{0,4}[1-9][0-9]{0,4})$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/PromptId", - "/properties/UpdatedAt", - "/properties/Version", - "/properties/Name", - "/properties/DefaultVariant", - "/properties/Variants", - "/properties/CustomerEncryptionKeyArn" - ], - "required": [ - "PromptArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-prompts", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "bedrock:TagResource", - "bedrock:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::Bedrock::PromptVersion" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PromptArn", + "/properties/Description", + "/properties/Tags" + ], + "definitions": { + "AdditionalModelRequestFields": { + "description": "Contains model-specific configurations", + "type": "object" + }, + "AnyToolChoice": { + "additionalProperties": false, + "description": "Any Tool choice", + "type": "object" + }, + "AutoToolChoice": { + "additionalProperties": false, + "description": "Auto Tool choice", + "type": "object" + }, + "CachePointBlock": { + "additionalProperties": false, + "description": "CachePointBlock", + "properties": { + "Type": { + "$ref": "#/definitions/CachePointType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "CachePointType": { + "description": "CachePoint types for CachePointBlock", + "enum": [ + "default" + ], + "type": "string" + }, + "ChatPromptTemplateConfiguration": { + "additionalProperties": false, + "description": "Configuration for chat prompt template", + "properties": { + "InputVariables": { + "description": "List of input variables", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PromptInputVariable" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "Messages": { + "description": "List of messages for chat prompt template", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Message" + }, + "minItems": 0, + "type": "array" + }, + "System": { + "description": "Configuration for chat prompt template", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/SystemContentBlock" + }, + "minItems": 0, + "type": "array" + }, + "ToolConfiguration": { + "$ref": "#/definitions/ToolConfiguration" + } + }, + "required": [ + "Messages" + ], + "type": "object" + }, + "ContentBlock": { + "description": "Configuration for chat prompt template", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Text": { + "description": "Configuration for chat prompt template", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Text" + ], + "title": "Text", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "CachePoint": { + "$ref": "#/definitions/CachePointBlock" + } + }, + "required": [ + "CachePoint" + ], + "title": "CachePoint", + "type": "object" + } + ] + }, + "ConversationRole": { + "description": "Conversation roles for the chat prompt", + "enum": [ + "user", + "assistant" + ], + "type": "string" + }, + "Message": { + "additionalProperties": false, + "description": "Chat prompt Message", + "properties": { + "Content": { + "description": "List of Content Blocks", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ContentBlock" + }, + "minItems": 1, + "type": "array" + }, + "Role": { + "$ref": "#/definitions/ConversationRole" + } + }, + "required": [ + "Role", + "Content" + ], + "type": "object" + }, + "PromptAgentResource": { + "additionalProperties": false, + "description": "Target Agent to invoke with Prompt", + "properties": { + "AgentIdentifier": { + "description": "Arn representation of the Agent Alias.", + "maxLength": 2048, + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:agent-alias/[0-9a-zA-Z]{10}/[0-9a-zA-Z]{10}$", + "type": "string" + } + }, + "required": [ + "AgentIdentifier" + ], + "type": "object" + }, + "PromptGenAiResource": { + "description": "Target resource to invoke with Prompt", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Agent": { + "$ref": "#/definitions/PromptAgentResource" + } + }, + "required": [ + "Agent" + ], + "title": "Agent", + "type": "object" + } + ] + }, + "PromptInferenceConfiguration": { + "description": "Model inference configuration", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Text": { + "$ref": "#/definitions/PromptModelInferenceConfiguration" + } + }, + "required": [ + "Text" + ], + "title": "Text", + "type": "object" + } + ] + }, + "PromptInputVariable": { + "additionalProperties": false, + "description": "Input variable", + "properties": { + "Name": { + "description": "Name for an input variable", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + } + }, + "type": "object" + }, + "PromptMetadataEntry": { + "additionalProperties": false, + "description": "Contains a key-value pair that defines a metadata tag and value to attach to a prompt variant.", + "properties": { + "Key": { + "$ref": "#/definitions/PromptMetadataKey" + }, + "Value": { + "$ref": "#/definitions/PromptMetadataValue" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "PromptMetadataKey": { + "description": "The key of a metadata tag for a prompt variant.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + }, + "PromptMetadataList": { + "description": "List of metadata to associate with the prompt variant.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PromptMetadataEntry" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + }, + "PromptMetadataValue": { + "description": "The value of a metadata tag for a prompt variant.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + }, + "PromptModelInferenceConfiguration": { + "additionalProperties": false, + "description": "Prompt model inference configuration", + "properties": { + "MaxTokens": { + "description": "Maximum length of output", + "maximum": 4096, + "minimum": 0, + "type": "number" + }, + "StopSequences": { + "description": "List of stop sequences", + "insertionOrder": true, + "items": { + "type": "string" + }, + "maxItems": 4, + "minItems": 0, + "type": "array" + }, + "Temperature": { + "description": "Controls randomness, higher values increase diversity", + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "TopP": { + "description": "Cumulative probability cutoff for token selection", + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "PromptTemplateConfiguration": { + "description": "Prompt template configuration", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Text": { + "$ref": "#/definitions/TextPromptTemplateConfiguration" + } + }, + "required": [ + "Text" + ], + "title": "Text", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Chat": { + "$ref": "#/definitions/ChatPromptTemplateConfiguration" + } + }, + "required": [ + "Chat" + ], + "title": "Chat", + "type": "object" + } + ] + }, + "PromptTemplateType": { + "description": "Prompt template type", + "enum": [ + "TEXT", + "CHAT" + ], + "type": "string" + }, + "PromptVariant": { + "additionalProperties": false, + "description": "Prompt variant", + "properties": { + "AdditionalModelRequestFields": { + "$ref": "#/definitions/AdditionalModelRequestFields" + }, + "GenAiResource": { + "$ref": "#/definitions/PromptGenAiResource" + }, + "InferenceConfiguration": { + "$ref": "#/definitions/PromptInferenceConfiguration" + }, + "Metadata": { + "$ref": "#/definitions/PromptMetadataList" + }, + "ModelId": { + "description": "ARN or Id of a Bedrock Foundational Model or Inference Profile, or the ARN of a imported model, or a provisioned throughput ARN for custom models.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^(arn:aws(-[^:]{1,12})?:(bedrock|sagemaker):[a-z0-9-]{1,20}:([0-9]{12})?:([a-z-]+/)?)?([a-zA-Z0-9.-]{1,63}){0,2}(([:][a-z0-9-]{1,63}){0,2})?(/[a-z0-9]{1,12})?$", + "type": "string" + }, + "Name": { + "description": "Name for a variant.", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "TemplateConfiguration": { + "$ref": "#/definitions/PromptTemplateConfiguration" + }, + "TemplateType": { + "$ref": "#/definitions/PromptTemplateType" + } + }, + "required": [ + "Name", + "TemplateType", + "TemplateConfiguration" + ], + "type": "object" + }, + "SpecificToolChoice": { + "additionalProperties": false, + "description": "Specific Tool choice", + "properties": { + "Name": { + "description": "Tool name", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "SystemContentBlock": { + "description": "Configuration for chat prompt template", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Text": { + "description": "Configuration for chat prompt template", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Text" + ], + "title": "Text", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "CachePoint": { + "$ref": "#/definitions/CachePointBlock" + } + }, + "required": [ + "CachePoint" + ], + "title": "CachePoint", + "type": "object" + } + ] + }, + "TagsMap": { + "additionalProperties": false, + "description": "A map of tag keys and values", + "patternProperties": { + "^[a-zA-Z0-9\\s._:/=+@-]*$": { + "description": "Value of a tag", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + } + }, + "type": "object" + }, + "TextPromptTemplateConfiguration": { + "additionalProperties": false, + "description": "Configuration for text prompt template", + "properties": { + "CachePoint": { + "$ref": "#/definitions/CachePointBlock" + }, + "InputVariables": { + "description": "List of input variables", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PromptInputVariable" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "Text": { + "description": "Prompt content for String prompt template", + "maxLength": 200000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Text" + ], + "type": "object" + }, + "Tool": { + "description": "Tool details", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "ToolSpec": { + "$ref": "#/definitions/ToolSpecification" + } + }, + "required": [ + "ToolSpec" + ], + "title": "ToolSpec", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "CachePoint": { + "$ref": "#/definitions/CachePointBlock" + } + }, + "required": [ + "CachePoint" + ], + "title": "CachePoint", + "type": "object" + } + ] + }, + "ToolChoice": { + "description": "Tool choice", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Auto": { + "$ref": "#/definitions/AutoToolChoice" + } + }, + "required": [ + "Auto" + ], + "title": "Auto", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Any": { + "$ref": "#/definitions/AnyToolChoice" + } + }, + "required": [ + "Any" + ], + "title": "Any", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Tool": { + "$ref": "#/definitions/SpecificToolChoice" + } + }, + "required": [ + "Tool" + ], + "title": "Tool", + "type": "object" + } + ] + }, + "ToolConfiguration": { + "additionalProperties": false, + "description": "Tool configuration", + "properties": { + "ToolChoice": { + "$ref": "#/definitions/ToolChoice" + }, + "Tools": { + "description": "List of Tools", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Tool" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Tools" + ], + "type": "object" + }, + "ToolInputSchema": { + "description": "Tool input schema", + "oneOf": [ + { + "additionalProperties": false, + "description": "Tool input schema json", + "properties": { + "Json": { + "type": "object" + } + }, + "required": [ + "Json" + ], + "title": "Json", + "type": "object" + } + ] + }, + "ToolSpecification": { + "additionalProperties": false, + "description": "Tool specification", + "properties": { + "Description": { + "minLength": 1, + "type": "string" + }, + "InputSchema": { + "$ref": "#/definitions/ToolInputSchema" + }, + "Name": { + "description": "Tool name", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + } + }, + "required": [ + "Name", + "InputSchema" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Bedrock::PromptVersion Resource Type", + "handlers": { + "create": { + "permissions": [ + "bedrock:CreatePromptVersion", + "bedrock:GetPrompt", + "bedrock:TagResource", + "bedrock:ListTagsForResource", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeletePrompt", + "bedrock:GetPrompt" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PromptArn": { + "$ref": "resource-schema.json#/properties/PromptArn" + } + }, + "required": [ + "PromptArn" + ] + }, + "permissions": [ + "bedrock:ListPrompts" + ] + }, + "read": { + "permissions": [ + "bedrock:GetPrompt", + "bedrock:ListTagsForResource", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "ARN of a prompt version resource", + "maxLength": 2048, + "minLength": 1, + "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:prompt/[0-9a-zA-Z]{10}:[0-9]{1,20})$", + "type": "string" + }, + "CreatedAt": { + "description": "Time Stamp.", + "format": "date-time", + "type": "string" + }, + "CustomerEncryptionKeyArn": { + "description": "A KMS key ARN", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", + "type": "string" + }, + "DefaultVariant": { + "description": "Name for a variant.", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "Description": { + "description": "Description for a prompt version resource.", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "Name for a prompt resource.", + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "PromptArn": { + "description": "ARN of a prompt resource possibly with a version", + "maxLength": 2048, + "minLength": 1, + "pattern": "^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:prompt/[0-9a-zA-Z]{10})$", + "type": "string" + }, + "PromptId": { + "description": "Identifier for a Prompt", + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/TagsMap" + }, + "UpdatedAt": { + "description": "Time Stamp.", + "format": "date-time", + "type": "string" + }, + "Variants": { + "description": "List of prompt variants", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PromptVariant" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "Version": { + "description": "Version.", + "maxLength": 5, + "minLength": 1, + "pattern": "^(DRAFT|[0-9]{0,4}[1-9][0-9]{0,4})$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/PromptId", + "/properties/UpdatedAt", + "/properties/Version", + "/properties/Name", + "/properties/DefaultVariant", + "/properties/Variants", + "/properties/CustomerEncryptionKeyArn" + ], + "required": [ + "PromptArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-prompts", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "bedrock:TagResource", + "bedrock:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Bedrock::PromptVersion" +} diff --git a/src/schema/aws-billingconductor-billinggroup.json b/src/schema/aws-billingconductor-billinggroup.json index 97129025..67f07ee8 100644 --- a/src/schema/aws-billingconductor-billinggroup.json +++ b/src/schema/aws-billingconductor-billinggroup.json @@ -1,199 +1,204 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PrimaryAccountId" - ], - "definitions": { - "AccountGrouping": { - "additionalProperties": false, - "properties": { - "AutoAssociate": { - "type": "boolean" - }, - "LinkedAccountIds": { - "insertionOrder": false, - "items": { - "pattern": "[0-9]{12}", - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "LinkedAccountIds" - ], - "type": "object" - }, - "BillingGroupStatus": { - "enum": [ - "ACTIVE", - "PRIMARY_ACCOUNT_MISSING" - ], - "type": "string" - }, - "ComputationPreference": { - "additionalProperties": false, - "properties": { - "PricingPlanArn": { - "description": "ARN of the attached pricing plan", - "pattern": "arn:aws(-cn)?:billingconductor::[0-9]{12}:pricingplan/[a-zA-Z0-9]{10}", - "type": "string" - } - }, - "required": [ - "PricingPlanArn" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "A billing group is a set of linked account which belong to the same end customer. It can be seen as a virtual consolidated billing family.", - "handlers": { - "create": { - "permissions": [ - "billingconductor:CreateBillingGroup", - "billingconductor:AssociateAccounts", - "billingconductor:ListBillingGroups", - "billingconductor:TagResource", - "billingconductor:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "billingconductor:DeleteBillingGroup", - "billingconductor:ListBillingGroups", - "billingconductor:UntagResource", - "billingconductor:UpdateBillingGroup" - ] - }, - "list": { - "permissions": [ - "billingconductor:ListBillingGroups", - "billingconductor:ListAccountAssociations", - "organizations:ListAccounts", - "billingconductor:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "billingconductor:ListBillingGroups", - "billingconductor:ListAccountAssociations", - "organizations:ListAccounts", - "billingconductor:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "billingconductor:UpdateBillingGroup", - "billingconductor:ListAccountAssociations", - "organizations:ListAccounts", - "billingconductor:AssociateAccounts", - "billingconductor:DisassociateAccounts", - "billingconductor:ListBillingGroups", - "billingconductor:TagResource", - "billingconductor:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "AccountGrouping": { - "$ref": "#/definitions/AccountGrouping" - }, - "Arn": { - "description": "Billing Group ARN", - "pattern": "arn:aws(-cn)?:billingconductor::[0-9]{12}:billinggroup/?[0-9]{12}", - "type": "string" - }, - "ComputationPreference": { - "$ref": "#/definitions/ComputationPreference" - }, - "CreationTime": { - "description": "Creation timestamp in UNIX epoch time format", - "type": "integer" - }, - "Description": { - "maxLength": 1024, - "type": "string" - }, - "LastModifiedTime": { - "description": "Latest modified timestamp in UNIX epoch time format", - "type": "integer" - }, - "Name": { - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z0-9_\\+=\\.\\-@]+", - "type": "string" - }, - "PrimaryAccountId": { - "description": "This account will act as a virtual payer account of the billing group", - "pattern": "[0-9]{12}", - "type": "string" - }, - "Size": { - "description": "Number of accounts in the billing group", - "type": "integer" - }, - "Status": { - "$ref": "#/definitions/BillingGroupStatus" - }, - "StatusReason": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Size", - "/properties/Status", - "/properties/StatusReason", - "/properties/CreationTime", - "/properties/LastModifiedTime" - ], - "required": [ - "Name", - "AccountGrouping", - "PrimaryAccountId", - "ComputationPreference" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-billing-conductor.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::BillingConductor::BillingGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PrimaryAccountId" + ], + "definitions": { + "AccountGrouping": { + "additionalProperties": false, + "properties": { + "AutoAssociate": { + "type": "boolean" + }, + "LinkedAccountIds": { + "insertionOrder": false, + "items": { + "pattern": "[0-9]{12}", + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "LinkedAccountIds" + ], + "type": "object" + }, + "BillingGroupStatus": { + "enum": [ + "ACTIVE", + "PRIMARY_ACCOUNT_MISSING" + ], + "type": "string" + }, + "ComputationPreference": { + "additionalProperties": false, + "properties": { + "PricingPlanArn": { + "description": "ARN of the attached pricing plan", + "pattern": "arn:aws(-cn)?:billingconductor::[0-9]{12}:pricingplan/[a-zA-Z0-9]{10}", + "type": "string" + } + }, + "required": [ + "PricingPlanArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "A billing group is a set of linked account which belong to the same end customer. It can be seen as a virtual consolidated billing family.", + "handlers": { + "create": { + "permissions": [ + "billingconductor:CreateBillingGroup", + "billingconductor:AssociateAccounts", + "billingconductor:ListBillingGroups", + "billingconductor:TagResource", + "billingconductor:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "billingconductor:DeleteBillingGroup", + "billingconductor:ListBillingGroups", + "billingconductor:UntagResource", + "billingconductor:UpdateBillingGroup" + ] + }, + "list": { + "permissions": [ + "billingconductor:ListBillingGroups", + "billingconductor:ListAccountAssociations", + "organizations:ListAccounts", + "billingconductor:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "billingconductor:ListBillingGroups", + "billingconductor:ListAccountAssociations", + "organizations:ListAccounts", + "billingconductor:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "billingconductor:UpdateBillingGroup", + "billingconductor:ListAccountAssociations", + "organizations:ListAccounts", + "billingconductor:AssociateAccounts", + "billingconductor:DisassociateAccounts", + "billingconductor:ListBillingGroups", + "billingconductor:TagResource", + "billingconductor:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AccountGrouping": { + "$ref": "#/definitions/AccountGrouping" + }, + "Arn": { + "description": "Billing Group ARN", + "pattern": "arn:aws(-cn)?:billingconductor::[0-9]{12}:billinggroup/?[0-9]{12}", + "type": "string" + }, + "ComputationPreference": { + "$ref": "#/definitions/ComputationPreference" + }, + "CreationTime": { + "description": "Creation timestamp in UNIX epoch time format", + "type": "integer" + }, + "Description": { + "maxLength": 1024, + "type": "string" + }, + "LastModifiedTime": { + "description": "Latest modified timestamp in UNIX epoch time format", + "type": "integer" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "pattern": "[a-zA-Z0-9_\\+=\\.\\-@]+", + "type": "string" + }, + "PrimaryAccountId": { + "description": "This account will act as a virtual payer account of the billing group", + "pattern": "[0-9]{12}", + "type": "string" + }, + "Size": { + "description": "Number of accounts in the billing group", + "type": "integer" + }, + "Status": { + "$ref": "#/definitions/BillingGroupStatus" + }, + "StatusReason": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Size", + "/properties/Status", + "/properties/StatusReason", + "/properties/CreationTime", + "/properties/LastModifiedTime" + ], + "required": [ + "Name", + "AccountGrouping", + "PrimaryAccountId", + "ComputationPreference" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-billing-conductor.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "billingconductor:ListTagsForResource", + "billingconductor:TagResource", + "billingconductor:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::BillingConductor::BillingGroup" +} diff --git a/src/schema/aws-billingconductor-customlineitem.json b/src/schema/aws-billingconductor-customlineitem.json index 5086a296..8a6985a9 100644 --- a/src/schema/aws-billingconductor-customlineitem.json +++ b/src/schema/aws-billingconductor-customlineitem.json @@ -1,298 +1,303 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/BillingGroupArn", - "/properties/AccountId", - "/properties/BillingPeriodRange/InclusiveStartBillingPeriod", - "/properties/BillingPeriodRange/ExclusiveEndBillingPeriod", - "/properties/CustomLineItemChargeDetails/Type" - ], - "definitions": { - "BillingPeriodRange": { - "additionalProperties": false, - "properties": { - "ExclusiveEndBillingPeriod": { - "$ref": "#/definitions/ExclusiveEndBillingPeriod" - }, - "InclusiveStartBillingPeriod": { - "$ref": "#/definitions/InclusiveStartBillingPeriod" - } - }, - "type": "object" - }, - "CustomLineItemChargeDetails": { - "additionalProperties": false, - "properties": { - "Flat": { - "$ref": "#/definitions/CustomLineItemFlatChargeDetails" - }, - "LineItemFilters": { - "$ref": "#/definitions/LineItemFilters" - }, - "Percentage": { - "$ref": "#/definitions/CustomLineItemPercentageChargeDetails" - }, - "Type": { - "$ref": "#/definitions/Type" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "CustomLineItemFlatChargeDetails": { - "additionalProperties": false, - "properties": { - "ChargeValue": { - "maximum": 1000000, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "ChargeValue" - ], - "type": "object" - }, - "CustomLineItemPercentageChargeDetails": { - "additionalProperties": false, - "properties": { - "ChildAssociatedResources": { - "insertionOrder": false, - "items": { - "pattern": "(arn:aws(-cn)?:billingconductor::[0-9]{12}:(customlineitem|billinggroup)/)?[a-zA-Z0-9]{10,12}", - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "PercentageValue": { - "maximum": 10000, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "PercentageValue" - ], - "type": "object" - }, - "ExclusiveEndBillingPeriod": { - "pattern": "\\d{4}-(0?[1-9]|1[012])", - "type": "string" - }, - "InclusiveStartBillingPeriod": { - "pattern": "\\d{4}-(0?[1-9]|1[012])", - "type": "string" - }, - "LineItemFilter": { - "additionalProperties": false, - "properties": { - "Attribute": { - "enum": [ - "LINE_ITEM_TYPE" - ], - "type": "string" - }, - "MatchOption": { - "enum": [ - "NOT_EQUAL" - ], - "type": "string" - }, - "Values": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LineItemFilterValue" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Attribute", - "MatchOption", - "Values" - ], - "type": "object" - }, - "LineItemFilterValue": { - "enum": [ - "SAVINGS_PLAN_NEGATION" - ], - "type": "string" - }, - "LineItemFilters": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LineItemFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Type": { - "enum": [ - "FEE", - "CREDIT" - ], - "type": "string" - } - }, - "description": "A custom line item is an one time charge that is applied to a specific billing group's bill.", - "handlers": { - "create": { - "permissions": [ - "billingconductor:CreateCustomLineItem", - "billingconductor:BatchAssociateResourcesToCustomLineItem", - "billingconductor:ListCustomLineItems", - "billingconductor:TagResource", - "billingconductor:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "billingconductor:DeleteCustomLineItem", - "billingconductor:ListCustomLineItems", - "billingconductor:BatchDisassociateResourcesFromCustomLineItem", - "billingconductor:ListResourcesAssociatedToCustomLineItem", - "billingconductor:UntagResource" - ] - }, - "list": { - "permissions": [ - "billingconductor:ListCustomLineItems", - "billingconductor:ListResourcesAssociatedToCustomLineItem", - "billingconductor:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "billingconductor:ListCustomLineItems", - "billingconductor:ListCustomLineItemVersions", - "billingconductor:ListResourcesAssociatedToCustomLineItem", - "billingconductor:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "billingconductor:UpdateCustomLineItem", - "billingconductor:ListCustomLineItems", - "billingconductor:ListResourcesAssociatedToCustomLineItem", - "billingconductor:BatchAssociateResourcesToCustomLineItem", - "billingconductor:BatchDisassociateResourcesFromCustomLineItem", - "billingconductor:TagResource", - "billingconductor:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "AccountId": { - "description": "The account which this custom line item will be charged to", - "pattern": "[0-9]{12}", - "type": "string" - }, - "Arn": { - "description": "ARN", - "pattern": "(arn:aws(-cn)?:billingconductor::[0-9]{12}:customlineitem/)?[a-zA-Z0-9]{10}", - "type": "string" - }, - "AssociationSize": { - "description": "Number of source values associated to this custom line item", - "type": "integer" - }, - "BillingGroupArn": { - "description": "Billing Group ARN", - "pattern": "arn:aws(-cn)?:billingconductor::[0-9]{12}:billinggroup/?[0-9]{12}", - "type": "string" - }, - "BillingPeriodRange": { - "$ref": "#/definitions/BillingPeriodRange" - }, - "CreationTime": { - "description": "Creation timestamp in UNIX epoch time format", - "type": "integer" - }, - "CurrencyCode": { - "enum": [ - "USD", - "CNY" - ], - "type": "string" - }, - "CustomLineItemChargeDetails": { - "$ref": "#/definitions/CustomLineItemChargeDetails" - }, - "Description": { - "maxLength": 255, - "type": "string" - }, - "LastModifiedTime": { - "description": "Latest modified timestamp in UNIX epoch time format", - "type": "integer" - }, - "Name": { - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z0-9_\\+=\\.\\-@]+", - "type": "string" - }, - "ProductCode": { - "maxLength": 29, - "minLength": 1, - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationTime", - "/properties/LastModifiedTime", - "/properties/AssociationSize", - "/properties/CurrencyCode", - "/properties/ProductCode" - ], - "required": [ - "Name", - "BillingGroupArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-billing-conductor.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::BillingConductor::CustomLineItem" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BillingGroupArn", + "/properties/AccountId", + "/properties/BillingPeriodRange/InclusiveStartBillingPeriod", + "/properties/BillingPeriodRange/ExclusiveEndBillingPeriod", + "/properties/CustomLineItemChargeDetails/Type" + ], + "definitions": { + "BillingPeriodRange": { + "additionalProperties": false, + "properties": { + "ExclusiveEndBillingPeriod": { + "$ref": "#/definitions/ExclusiveEndBillingPeriod" + }, + "InclusiveStartBillingPeriod": { + "$ref": "#/definitions/InclusiveStartBillingPeriod" + } + }, + "type": "object" + }, + "CustomLineItemChargeDetails": { + "additionalProperties": false, + "properties": { + "Flat": { + "$ref": "#/definitions/CustomLineItemFlatChargeDetails" + }, + "LineItemFilters": { + "$ref": "#/definitions/LineItemFilters" + }, + "Percentage": { + "$ref": "#/definitions/CustomLineItemPercentageChargeDetails" + }, + "Type": { + "$ref": "#/definitions/Type" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "CustomLineItemFlatChargeDetails": { + "additionalProperties": false, + "properties": { + "ChargeValue": { + "maximum": 1000000, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "ChargeValue" + ], + "type": "object" + }, + "CustomLineItemPercentageChargeDetails": { + "additionalProperties": false, + "properties": { + "ChildAssociatedResources": { + "insertionOrder": false, + "items": { + "pattern": "(arn:aws(-cn)?:billingconductor::[0-9]{12}:(customlineitem|billinggroup)/)?[a-zA-Z0-9]{10,12}", + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "PercentageValue": { + "maximum": 10000, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "PercentageValue" + ], + "type": "object" + }, + "ExclusiveEndBillingPeriod": { + "pattern": "\\d{4}-(0?[1-9]|1[012])", + "type": "string" + }, + "InclusiveStartBillingPeriod": { + "pattern": "\\d{4}-(0?[1-9]|1[012])", + "type": "string" + }, + "LineItemFilter": { + "additionalProperties": false, + "properties": { + "Attribute": { + "enum": [ + "LINE_ITEM_TYPE" + ], + "type": "string" + }, + "MatchOption": { + "enum": [ + "NOT_EQUAL" + ], + "type": "string" + }, + "Values": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LineItemFilterValue" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Attribute", + "MatchOption", + "Values" + ], + "type": "object" + }, + "LineItemFilterValue": { + "enum": [ + "SAVINGS_PLAN_NEGATION" + ], + "type": "string" + }, + "LineItemFilters": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LineItemFilter" + }, + "type": "array", + "uniqueItems": true + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Type": { + "enum": [ + "FEE", + "CREDIT" + ], + "type": "string" + } + }, + "description": "A custom line item is an one time charge that is applied to a specific billing group's bill.", + "handlers": { + "create": { + "permissions": [ + "billingconductor:CreateCustomLineItem", + "billingconductor:BatchAssociateResourcesToCustomLineItem", + "billingconductor:ListCustomLineItems", + "billingconductor:TagResource", + "billingconductor:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "billingconductor:DeleteCustomLineItem", + "billingconductor:ListCustomLineItems", + "billingconductor:BatchDisassociateResourcesFromCustomLineItem", + "billingconductor:ListResourcesAssociatedToCustomLineItem", + "billingconductor:UntagResource" + ] + }, + "list": { + "permissions": [ + "billingconductor:ListCustomLineItems", + "billingconductor:ListResourcesAssociatedToCustomLineItem", + "billingconductor:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "billingconductor:ListCustomLineItems", + "billingconductor:ListCustomLineItemVersions", + "billingconductor:ListResourcesAssociatedToCustomLineItem", + "billingconductor:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "billingconductor:UpdateCustomLineItem", + "billingconductor:ListCustomLineItems", + "billingconductor:ListResourcesAssociatedToCustomLineItem", + "billingconductor:BatchAssociateResourcesToCustomLineItem", + "billingconductor:BatchDisassociateResourcesFromCustomLineItem", + "billingconductor:TagResource", + "billingconductor:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AccountId": { + "description": "The account which this custom line item will be charged to", + "pattern": "[0-9]{12}", + "type": "string" + }, + "Arn": { + "description": "ARN", + "pattern": "(arn:aws(-cn)?:billingconductor::[0-9]{12}:customlineitem/)?[a-zA-Z0-9]{10}", + "type": "string" + }, + "AssociationSize": { + "description": "Number of source values associated to this custom line item", + "type": "integer" + }, + "BillingGroupArn": { + "description": "Billing Group ARN", + "pattern": "arn:aws(-cn)?:billingconductor::[0-9]{12}:billinggroup/?[0-9]{12}", + "type": "string" + }, + "BillingPeriodRange": { + "$ref": "#/definitions/BillingPeriodRange" + }, + "CreationTime": { + "description": "Creation timestamp in UNIX epoch time format", + "type": "integer" + }, + "CurrencyCode": { + "enum": [ + "USD", + "CNY" + ], + "type": "string" + }, + "CustomLineItemChargeDetails": { + "$ref": "#/definitions/CustomLineItemChargeDetails" + }, + "Description": { + "maxLength": 255, + "type": "string" + }, + "LastModifiedTime": { + "description": "Latest modified timestamp in UNIX epoch time format", + "type": "integer" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "pattern": "[a-zA-Z0-9_\\+=\\.\\-@]+", + "type": "string" + }, + "ProductCode": { + "maxLength": 29, + "minLength": 1, + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/LastModifiedTime", + "/properties/AssociationSize", + "/properties/CurrencyCode", + "/properties/ProductCode" + ], + "required": [ + "Name", + "BillingGroupArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-billing-conductor.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "billingconductor:ListTagsForResource", + "billingconductor:TagResource", + "billingconductor:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::BillingConductor::CustomLineItem" +} diff --git a/src/schema/aws-billingconductor-pricingplan.json b/src/schema/aws-billingconductor-pricingplan.json index 407fc5ad..3882ecdc 100644 --- a/src/schema/aws-billingconductor-pricingplan.json +++ b/src/schema/aws-billingconductor-pricingplan.json @@ -1,139 +1,144 @@ -{ - "additionalProperties": false, - "definitions": { - "PricingRuleArn": { - "description": "Pricing Rule ARN", - "pattern": "arn:aws(-cn)?:billingconductor::[0-9]{12}:pricingrule/[a-zA-Z0-9]{10}", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Pricing Plan enables you to customize your billing details consistent with the usage that accrues in each of your billing groups.", - "handlers": { - "create": { - "permissions": [ - "billingconductor:CreatePricingPlan", - "billingconductor:AssociatePricingRules", - "billingconductor:ListPricingPlans", - "billingconductor:TagResource", - "billingconductor:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "billingconductor:ListPricingPlans", - "billingconductor:DeletePricingPlan", - "billingconductor:UntagResource" - ] - }, - "list": { - "permissions": [ - "billingconductor:ListPricingPlans", - "billingconductor:ListPricingRulesAssociatedToPricingPlan", - "billingconductor:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "billingconductor:ListPricingPlans", - "billingconductor:ListPricingRulesAssociatedToPricingPlan", - "billingconductor:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "billingconductor:ListPricingPlans", - "billingconductor:UpdatePricingPlan", - "billingconductor:ListPricingRulesAssociatedToPricingPlan", - "billingconductor:AssociatePricingRules", - "billingconductor:DisassociatePricingRules", - "billingconductor:TagResource", - "billingconductor:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Pricing Plan ARN", - "pattern": "arn:aws(-cn)?:billingconductor::[0-9]{12}:pricingplan/[a-zA-Z0-9]{10}", - "type": "string" - }, - "CreationTime": { - "description": "Creation timestamp in UNIX epoch time format", - "type": "integer" - }, - "Description": { - "maxLength": 1024, - "type": "string" - }, - "LastModifiedTime": { - "description": "Latest modified timestamp in UNIX epoch time format", - "type": "integer" - }, - "Name": { - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z0-9_\\+=\\.\\-@]+", - "type": "string" - }, - "PricingRuleArns": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PricingRuleArn" - }, - "type": "array" - }, - "Size": { - "description": "Number of associated pricing rules", - "type": "integer" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Size", - "/properties/CreationTime", - "/properties/LastModifiedTime" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-billing-conductor.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::BillingConductor::PricingPlan" -} +{ + "additionalProperties": false, + "definitions": { + "PricingRuleArn": { + "description": "Pricing Rule ARN", + "pattern": "arn:aws(-cn)?:billingconductor::[0-9]{12}:pricingrule/[a-zA-Z0-9]{10}", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Pricing Plan enables you to customize your billing details consistent with the usage that accrues in each of your billing groups.", + "handlers": { + "create": { + "permissions": [ + "billingconductor:CreatePricingPlan", + "billingconductor:AssociatePricingRules", + "billingconductor:ListPricingPlans", + "billingconductor:TagResource", + "billingconductor:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "billingconductor:ListPricingPlans", + "billingconductor:DeletePricingPlan", + "billingconductor:UntagResource" + ] + }, + "list": { + "permissions": [ + "billingconductor:ListPricingPlans", + "billingconductor:ListPricingRulesAssociatedToPricingPlan", + "billingconductor:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "billingconductor:ListPricingPlans", + "billingconductor:ListPricingRulesAssociatedToPricingPlan", + "billingconductor:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "billingconductor:ListPricingPlans", + "billingconductor:UpdatePricingPlan", + "billingconductor:ListPricingRulesAssociatedToPricingPlan", + "billingconductor:AssociatePricingRules", + "billingconductor:DisassociatePricingRules", + "billingconductor:TagResource", + "billingconductor:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Pricing Plan ARN", + "pattern": "arn:aws(-cn)?:billingconductor::[0-9]{12}:pricingplan/[a-zA-Z0-9]{10}", + "type": "string" + }, + "CreationTime": { + "description": "Creation timestamp in UNIX epoch time format", + "type": "integer" + }, + "Description": { + "maxLength": 1024, + "type": "string" + }, + "LastModifiedTime": { + "description": "Latest modified timestamp in UNIX epoch time format", + "type": "integer" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "pattern": "[a-zA-Z0-9_\\+=\\.\\-@]+", + "type": "string" + }, + "PricingRuleArns": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PricingRuleArn" + }, + "type": "array" + }, + "Size": { + "description": "Number of associated pricing rules", + "type": "integer" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Size", + "/properties/CreationTime", + "/properties/LastModifiedTime" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-billing-conductor.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "billingconductor:ListTagsForResource", + "billingconductor:TagResource", + "billingconductor:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::BillingConductor::PricingPlan" +} diff --git a/src/schema/aws-billingconductor-pricingrule.json b/src/schema/aws-billingconductor-pricingrule.json index 9359481a..883b2076 100644 --- a/src/schema/aws-billingconductor-pricingrule.json +++ b/src/schema/aws-billingconductor-pricingrule.json @@ -1,210 +1,215 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Scope", - "/properties/Service", - "/properties/BillingEntity", - "/properties/UsageType", - "/properties/Operation" - ], - "definitions": { - "FreeTier": { - "additionalProperties": false, - "description": "The possible customizable free tier configurations.", - "properties": { - "Activated": { - "type": "boolean" - } - }, - "required": [ - "Activated" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "A markup/discount that is defined for a specific set of services that can later be associated with a pricing plan.", - "handlers": { - "create": { - "permissions": [ - "billingconductor:CreatePricingRule", - "billingconductor:ListPricingRules", - "billingconductor:TagResource", - "billingconductor:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "billingconductor:DeletePricingRule", - "billingconductor:ListPricingRules", - "billingconductor:UntagResource" - ] - }, - "list": { - "permissions": [ - "billingconductor:ListPricingRules", - "billingconductor:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "billingconductor:ListPricingRules", - "billingconductor:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "billingconductor:UpdatePricingRule", - "billingconductor:ListPricingRules", - "billingconductor:TagResource", - "billingconductor:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Pricing rule ARN", - "pattern": "arn:aws(-cn)?:billingconductor::[0-9]{12}:pricingrule/[a-zA-Z0-9]{10}", - "type": "string" - }, - "AssociatedPricingPlanCount": { - "description": "The number of pricing plans associated with pricing rule", - "minimum": 0, - "type": "integer" - }, - "BillingEntity": { - "description": "The seller of services provided by AWS, their affiliates, or third-party providers selling services via AWS Marketplaces. Supported billing entities are AWS, AWS Marketplace, and AISPL.", - "enum": [ - "AWS", - "AWS Marketplace", - "AISPL" - ], - "type": "string" - }, - "CreationTime": { - "description": "Creation timestamp in UNIX epoch time format", - "type": "integer" - }, - "Description": { - "description": "Pricing rule description", - "maxLength": 1024, - "type": "string" - }, - "LastModifiedTime": { - "description": "Latest modified timestamp in UNIX epoch time format", - "type": "integer" - }, - "ModifierPercentage": { - "description": "Pricing rule modifier percentage", - "minimum": 0, - "type": "number" - }, - "Name": { - "description": "Pricing rule name", - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z0-9_\\+=\\.\\-@]+", - "type": "string" - }, - "Operation": { - "description": "The Operation which a SKU pricing rule is modifying", - "maxLength": 256, - "minLength": 1, - "pattern": "^\\S+$", - "type": "string" - }, - "Scope": { - "description": "A term used to categorize the granularity of a Pricing Rule.", - "enum": [ - "GLOBAL", - "SERVICE", - "BILLING_ENTITY", - "SKU" - ], - "type": "string" - }, - "Service": { - "description": "The service which a pricing rule is applied on", - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z0-9\\.\\-]+", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Tiering": { - "additionalProperties": false, - "description": "The set of tiering configurations for the pricing rule.", - "properties": { - "FreeTier": { - "$ref": "#/definitions/FreeTier" - } - }, - "type": "object" - }, - "Type": { - "description": "One of MARKUP, DISCOUNT or TIERING that describes the behaviour of the pricing rule.", - "enum": [ - "MARKUP", - "DISCOUNT", - "TIERING" - ], - "type": "string" - }, - "UsageType": { - "description": "The UsageType which a SKU pricing rule is modifying", - "maxLength": 256, - "minLength": 1, - "pattern": "^\\S+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/AssociatedPricingPlanCount", - "/properties/CreationTime", - "/properties/LastModifiedTime" - ], - "required": [ - "Name", - "Scope", - "Type" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-billing-conductor.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::BillingConductor::PricingRule" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Scope", + "/properties/Service", + "/properties/BillingEntity", + "/properties/UsageType", + "/properties/Operation" + ], + "definitions": { + "FreeTier": { + "additionalProperties": false, + "description": "The possible customizable free tier configurations.", + "properties": { + "Activated": { + "type": "boolean" + } + }, + "required": [ + "Activated" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "A markup/discount that is defined for a specific set of services that can later be associated with a pricing plan.", + "handlers": { + "create": { + "permissions": [ + "billingconductor:CreatePricingRule", + "billingconductor:ListPricingRules", + "billingconductor:TagResource", + "billingconductor:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "billingconductor:DeletePricingRule", + "billingconductor:ListPricingRules", + "billingconductor:UntagResource" + ] + }, + "list": { + "permissions": [ + "billingconductor:ListPricingRules", + "billingconductor:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "billingconductor:ListPricingRules", + "billingconductor:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "billingconductor:UpdatePricingRule", + "billingconductor:ListPricingRules", + "billingconductor:TagResource", + "billingconductor:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Pricing rule ARN", + "pattern": "arn:aws(-cn)?:billingconductor::[0-9]{12}:pricingrule/[a-zA-Z0-9]{10}", + "type": "string" + }, + "AssociatedPricingPlanCount": { + "description": "The number of pricing plans associated with pricing rule", + "minimum": 0, + "type": "integer" + }, + "BillingEntity": { + "description": "The seller of services provided by AWS, their affiliates, or third-party providers selling services via AWS Marketplaces. Supported billing entities are AWS, AWS Marketplace, and AISPL.", + "enum": [ + "AWS", + "AWS Marketplace", + "AISPL" + ], + "type": "string" + }, + "CreationTime": { + "description": "Creation timestamp in UNIX epoch time format", + "type": "integer" + }, + "Description": { + "description": "Pricing rule description", + "maxLength": 1024, + "type": "string" + }, + "LastModifiedTime": { + "description": "Latest modified timestamp in UNIX epoch time format", + "type": "integer" + }, + "ModifierPercentage": { + "description": "Pricing rule modifier percentage", + "minimum": 0, + "type": "number" + }, + "Name": { + "description": "Pricing rule name", + "maxLength": 128, + "minLength": 1, + "pattern": "[a-zA-Z0-9_\\+=\\.\\-@]+", + "type": "string" + }, + "Operation": { + "description": "The Operation which a SKU pricing rule is modifying", + "maxLength": 256, + "minLength": 1, + "pattern": "^\\S+$", + "type": "string" + }, + "Scope": { + "description": "A term used to categorize the granularity of a Pricing Rule.", + "enum": [ + "GLOBAL", + "SERVICE", + "BILLING_ENTITY", + "SKU" + ], + "type": "string" + }, + "Service": { + "description": "The service which a pricing rule is applied on", + "maxLength": 128, + "minLength": 1, + "pattern": "[a-zA-Z0-9\\.\\-]+", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Tiering": { + "additionalProperties": false, + "description": "The set of tiering configurations for the pricing rule.", + "properties": { + "FreeTier": { + "$ref": "#/definitions/FreeTier" + } + }, + "type": "object" + }, + "Type": { + "description": "One of MARKUP, DISCOUNT or TIERING that describes the behaviour of the pricing rule.", + "enum": [ + "MARKUP", + "DISCOUNT", + "TIERING" + ], + "type": "string" + }, + "UsageType": { + "description": "The UsageType which a SKU pricing rule is modifying", + "maxLength": 256, + "minLength": 1, + "pattern": "^\\S+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/AssociatedPricingPlanCount", + "/properties/CreationTime", + "/properties/LastModifiedTime" + ], + "required": [ + "Name", + "Scope", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-billing-conductor.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "billingconductor:ListTagsForResource", + "billingconductor:TagResource", + "billingconductor:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::BillingConductor::PricingRule" +} diff --git a/src/schema/aws-budgets-budget.json b/src/schema/aws-budgets-budget.json index ba0281a4..08005a64 100644 --- a/src/schema/aws-budgets-budget.json +++ b/src/schema/aws-budgets-budget.json @@ -1,246 +1,246 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/NotificationsWithSubscribers" - ], - "definitions": { - "AutoAdjustData": { - "additionalProperties": false, - "properties": { - "AutoAdjustType": { - "type": "string" - }, - "HistoricalOptions": { - "$ref": "#/definitions/HistoricalOptions" - } - }, - "required": [ - "AutoAdjustType" - ], - "type": "object" - }, - "BudgetData": { - "additionalProperties": false, - "properties": { - "AutoAdjustData": { - "$ref": "#/definitions/AutoAdjustData" - }, - "BudgetLimit": { - "$ref": "#/definitions/Spend" - }, - "BudgetName": { - "type": "string" - }, - "BudgetType": { - "type": "string" - }, - "CostFilters": { - "type": "object" - }, - "CostTypes": { - "$ref": "#/definitions/CostTypes" - }, - "PlannedBudgetLimits": { - "type": "object" - }, - "TimePeriod": { - "$ref": "#/definitions/TimePeriod" - }, - "TimeUnit": { - "type": "string" - } - }, - "required": [ - "TimeUnit", - "BudgetType" - ], - "type": "object" - }, - "CostTypes": { - "additionalProperties": false, - "properties": { - "IncludeCredit": { - "type": "boolean" - }, - "IncludeDiscount": { - "type": "boolean" - }, - "IncludeOtherSubscription": { - "type": "boolean" - }, - "IncludeRecurring": { - "type": "boolean" - }, - "IncludeRefund": { - "type": "boolean" - }, - "IncludeSubscription": { - "type": "boolean" - }, - "IncludeSupport": { - "type": "boolean" - }, - "IncludeTax": { - "type": "boolean" - }, - "IncludeUpfront": { - "type": "boolean" - }, - "UseAmortized": { - "type": "boolean" - }, - "UseBlended": { - "type": "boolean" - } - }, - "type": "object" - }, - "HistoricalOptions": { - "additionalProperties": false, - "properties": { - "BudgetAdjustmentPeriod": { - "type": "integer" - } - }, - "required": [ - "BudgetAdjustmentPeriod" - ], - "type": "object" - }, - "Notification": { - "additionalProperties": false, - "properties": { - "ComparisonOperator": { - "type": "string" - }, - "NotificationType": { - "type": "string" - }, - "Threshold": { - "type": "number" - }, - "ThresholdType": { - "type": "string" - } - }, - "required": [ - "ComparisonOperator", - "NotificationType", - "Threshold" - ], - "type": "object" - }, - "NotificationWithSubscribers": { - "additionalProperties": false, - "properties": { - "Notification": { - "$ref": "#/definitions/Notification" - }, - "Subscribers": { - "items": { - "$ref": "#/definitions/Subscriber" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Subscribers", - "Notification" - ], - "type": "object" - }, - "ResourceTag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - }, - "Spend": { - "additionalProperties": false, - "properties": { - "Amount": { - "type": "number" - }, - "Unit": { - "type": "string" - } - }, - "required": [ - "Amount", - "Unit" - ], - "type": "object" - }, - "Subscriber": { - "additionalProperties": false, - "properties": { - "Address": { - "type": "string" - }, - "SubscriptionType": { - "type": "string" - } - }, - "required": [ - "SubscriptionType", - "Address" - ], - "type": "object" - }, - "TimePeriod": { - "additionalProperties": false, - "properties": { - "End": { - "type": "string" - }, - "Start": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Budgets::Budget", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Budget": { - "$ref": "#/definitions/BudgetData" - }, - "Id": { - "type": "string" - }, - "NotificationsWithSubscribers": { - "items": { - "$ref": "#/definitions/NotificationWithSubscribers" - }, - "type": "array", - "uniqueItems": false - }, - "ResourceTags": { - "items": { - "$ref": "#/definitions/ResourceTag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Budget" - ], - "typeName": "AWS::Budgets::Budget" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/NotificationsWithSubscribers" + ], + "definitions": { + "AutoAdjustData": { + "additionalProperties": false, + "properties": { + "AutoAdjustType": { + "type": "string" + }, + "HistoricalOptions": { + "$ref": "#/definitions/HistoricalOptions" + } + }, + "required": [ + "AutoAdjustType" + ], + "type": "object" + }, + "BudgetData": { + "additionalProperties": false, + "properties": { + "AutoAdjustData": { + "$ref": "#/definitions/AutoAdjustData" + }, + "BudgetLimit": { + "$ref": "#/definitions/Spend" + }, + "BudgetName": { + "type": "string" + }, + "BudgetType": { + "type": "string" + }, + "CostFilters": { + "type": "object" + }, + "CostTypes": { + "$ref": "#/definitions/CostTypes" + }, + "PlannedBudgetLimits": { + "type": "object" + }, + "TimePeriod": { + "$ref": "#/definitions/TimePeriod" + }, + "TimeUnit": { + "type": "string" + } + }, + "required": [ + "TimeUnit", + "BudgetType" + ], + "type": "object" + }, + "CostTypes": { + "additionalProperties": false, + "properties": { + "IncludeCredit": { + "type": "boolean" + }, + "IncludeDiscount": { + "type": "boolean" + }, + "IncludeOtherSubscription": { + "type": "boolean" + }, + "IncludeRecurring": { + "type": "boolean" + }, + "IncludeRefund": { + "type": "boolean" + }, + "IncludeSubscription": { + "type": "boolean" + }, + "IncludeSupport": { + "type": "boolean" + }, + "IncludeTax": { + "type": "boolean" + }, + "IncludeUpfront": { + "type": "boolean" + }, + "UseAmortized": { + "type": "boolean" + }, + "UseBlended": { + "type": "boolean" + } + }, + "type": "object" + }, + "HistoricalOptions": { + "additionalProperties": false, + "properties": { + "BudgetAdjustmentPeriod": { + "type": "integer" + } + }, + "required": [ + "BudgetAdjustmentPeriod" + ], + "type": "object" + }, + "Notification": { + "additionalProperties": false, + "properties": { + "ComparisonOperator": { + "type": "string" + }, + "NotificationType": { + "type": "string" + }, + "Threshold": { + "type": "number" + }, + "ThresholdType": { + "type": "string" + } + }, + "required": [ + "ComparisonOperator", + "NotificationType", + "Threshold" + ], + "type": "object" + }, + "NotificationWithSubscribers": { + "additionalProperties": false, + "properties": { + "Notification": { + "$ref": "#/definitions/Notification" + }, + "Subscribers": { + "items": { + "$ref": "#/definitions/Subscriber" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Subscribers", + "Notification" + ], + "type": "object" + }, + "ResourceTag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "Spend": { + "additionalProperties": false, + "properties": { + "Amount": { + "type": "number" + }, + "Unit": { + "type": "string" + } + }, + "required": [ + "Amount", + "Unit" + ], + "type": "object" + }, + "Subscriber": { + "additionalProperties": false, + "properties": { + "Address": { + "type": "string" + }, + "SubscriptionType": { + "type": "string" + } + }, + "required": [ + "SubscriptionType", + "Address" + ], + "type": "object" + }, + "TimePeriod": { + "additionalProperties": false, + "properties": { + "End": { + "type": "string" + }, + "Start": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Budgets::Budget", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Budget": { + "$ref": "#/definitions/BudgetData" + }, + "Id": { + "type": "string" + }, + "NotificationsWithSubscribers": { + "items": { + "$ref": "#/definitions/NotificationWithSubscribers" + }, + "type": "array", + "uniqueItems": false + }, + "ResourceTags": { + "items": { + "$ref": "#/definitions/ResourceTag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Budget" + ], + "typeName": "AWS::Budgets::Budget" +} diff --git a/src/schema/aws-budgets-budgetsaction.json b/src/schema/aws-budgets-budgetsaction.json index bea8fa86..fb2306b1 100644 --- a/src/schema/aws-budgets-budgetsaction.json +++ b/src/schema/aws-budgets-budgetsaction.json @@ -1,280 +1,285 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ActionType", - "/properties/BudgetName" - ], - "definitions": { - "ActionThreshold": { - "additionalProperties": false, - "properties": { - "Type": { - "enum": [ - "PERCENTAGE", - "ABSOLUTE_VALUE" - ], - "type": "string" - }, - "Value": { - "type": "number" - } - }, - "required": [ - "Value", - "Type" - ], - "type": "object" - }, - "Definition": { - "additionalProperties": false, - "properties": { - "IamActionDefinition": { - "$ref": "#/definitions/IamActionDefinition" - }, - "ScpActionDefinition": { - "$ref": "#/definitions/ScpActionDefinition" - }, - "SsmActionDefinition": { - "$ref": "#/definitions/SsmActionDefinition" - } - }, - "type": "object" - }, - "IamActionDefinition": { - "additionalProperties": false, - "properties": { - "Groups": { - "items": { - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "PolicyArn": { - "type": "string" - }, - "Roles": { - "items": { - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "Users": { - "items": { - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "PolicyArn" - ], - "type": "object" - }, - "ResourceTag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "ScpActionDefinition": { - "additionalProperties": false, - "properties": { - "PolicyId": { - "type": "string" - }, - "TargetIds": { - "items": { - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "PolicyId", - "TargetIds" - ], - "type": "object" - }, - "SsmActionDefinition": { - "additionalProperties": false, - "properties": { - "InstanceIds": { - "items": { - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "Region": { - "type": "string" - }, - "Subtype": { - "enum": [ - "STOP_EC2_INSTANCES", - "STOP_RDS_INSTANCES" - ], - "type": "string" - } - }, - "required": [ - "Subtype", - "Region", - "InstanceIds" - ], - "type": "object" - }, - "Subscriber": { - "additionalProperties": false, - "properties": { - "Address": { - "type": "string" - }, - "Type": { - "enum": [ - "SNS", - "EMAIL" - ], - "type": "string" - } - }, - "required": [ - "Type", - "Address" - ], - "type": "object" - } - }, - "description": "An example resource schema demonstrating some basic constructs and validation rules.", - "handlers": { - "create": { - "permissions": [ - "budgets:CreateBudgetAction", - "iam:PassRole", - "budgets:TagResource" - ] - }, - "delete": { - "permissions": [ - "budgets:DeleteBudgetAction" - ] - }, - "list": { - "permissions": [ - "budgets:DescribeBudgetActionsForAccount", - "budgets:DescribeBudgetActionsForBudget" - ] - }, - "read": { - "permissions": [ - "budgets:DescribeBudgetAction", - "budgets:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "budgets:UpdateBudgetAction", - "iam:PassRole", - "budgets:TagResource", - "budgets:UntagResource", - "budgets:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ActionId", - "/properties/BudgetName" - ], - "properties": { - "ActionId": { - "type": "string" - }, - "ActionThreshold": { - "$ref": "#/definitions/ActionThreshold" - }, - "ActionType": { - "enum": [ - "APPLY_IAM_POLICY", - "APPLY_SCP_POLICY", - "RUN_SSM_DOCUMENTS" - ], - "type": "string" - }, - "ApprovalModel": { - "enum": [ - "AUTOMATIC", - "MANUAL" - ], - "type": "string" - }, - "BudgetName": { - "type": "string" - }, - "Definition": { - "$ref": "#/definitions/Definition" - }, - "ExecutionRoleArn": { - "type": "string" - }, - "NotificationType": { - "enum": [ - "ACTUAL", - "FORECASTED" - ], - "type": "string" - }, - "ResourceTags": { - "items": { - "$ref": "#/definitions/ResourceTag" - }, - "type": "array" - }, - "Subscribers": { - "items": { - "$ref": "#/definitions/Subscriber" - }, - "maxItems": 11, - "minItems": 1, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ActionId" - ], - "required": [ - "BudgetName", - "NotificationType", - "ActionType", - "ActionThreshold", - "ExecutionRoleArn", - "Definition", - "Subscribers" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/ResourceTags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Budgets::BudgetsAction" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ActionType", + "/properties/BudgetName" + ], + "definitions": { + "ActionThreshold": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "PERCENTAGE", + "ABSOLUTE_VALUE" + ], + "type": "string" + }, + "Value": { + "type": "number" + } + }, + "required": [ + "Value", + "Type" + ], + "type": "object" + }, + "Definition": { + "additionalProperties": false, + "properties": { + "IamActionDefinition": { + "$ref": "#/definitions/IamActionDefinition" + }, + "ScpActionDefinition": { + "$ref": "#/definitions/ScpActionDefinition" + }, + "SsmActionDefinition": { + "$ref": "#/definitions/SsmActionDefinition" + } + }, + "type": "object" + }, + "IamActionDefinition": { + "additionalProperties": false, + "properties": { + "Groups": { + "items": { + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "PolicyArn": { + "type": "string" + }, + "Roles": { + "items": { + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "Users": { + "items": { + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "PolicyArn" + ], + "type": "object" + }, + "ResourceTag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "ScpActionDefinition": { + "additionalProperties": false, + "properties": { + "PolicyId": { + "type": "string" + }, + "TargetIds": { + "items": { + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "PolicyId", + "TargetIds" + ], + "type": "object" + }, + "SsmActionDefinition": { + "additionalProperties": false, + "properties": { + "InstanceIds": { + "items": { + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "Region": { + "type": "string" + }, + "Subtype": { + "enum": [ + "STOP_EC2_INSTANCES", + "STOP_RDS_INSTANCES" + ], + "type": "string" + } + }, + "required": [ + "Subtype", + "Region", + "InstanceIds" + ], + "type": "object" + }, + "Subscriber": { + "additionalProperties": false, + "properties": { + "Address": { + "type": "string" + }, + "Type": { + "enum": [ + "SNS", + "EMAIL" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Address" + ], + "type": "object" + } + }, + "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "handlers": { + "create": { + "permissions": [ + "budgets:CreateBudgetAction", + "iam:PassRole", + "budgets:TagResource" + ] + }, + "delete": { + "permissions": [ + "budgets:DeleteBudgetAction" + ] + }, + "list": { + "permissions": [ + "budgets:DescribeBudgetActionsForAccount", + "budgets:DescribeBudgetActionsForBudget" + ] + }, + "read": { + "permissions": [ + "budgets:DescribeBudgetAction", + "budgets:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "budgets:UpdateBudgetAction", + "iam:PassRole", + "budgets:TagResource", + "budgets:UntagResource", + "budgets:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ActionId", + "/properties/BudgetName" + ], + "properties": { + "ActionId": { + "type": "string" + }, + "ActionThreshold": { + "$ref": "#/definitions/ActionThreshold" + }, + "ActionType": { + "enum": [ + "APPLY_IAM_POLICY", + "APPLY_SCP_POLICY", + "RUN_SSM_DOCUMENTS" + ], + "type": "string" + }, + "ApprovalModel": { + "enum": [ + "AUTOMATIC", + "MANUAL" + ], + "type": "string" + }, + "BudgetName": { + "type": "string" + }, + "Definition": { + "$ref": "#/definitions/Definition" + }, + "ExecutionRoleArn": { + "type": "string" + }, + "NotificationType": { + "enum": [ + "ACTUAL", + "FORECASTED" + ], + "type": "string" + }, + "ResourceTags": { + "items": { + "$ref": "#/definitions/ResourceTag" + }, + "type": "array" + }, + "Subscribers": { + "items": { + "$ref": "#/definitions/Subscriber" + }, + "maxItems": 11, + "minItems": 1, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ActionId" + ], + "required": [ + "BudgetName", + "NotificationType", + "ActionType", + "ActionThreshold", + "ExecutionRoleArn", + "Definition", + "Subscribers" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "budgets:TagResource", + "budgets:UntagResource", + "budgets:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/ResourceTags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Budgets::BudgetsAction" +} diff --git a/src/schema/aws-cassandra-keyspace.json b/src/schema/aws-cassandra-keyspace.json index 5d195cbd..caac1a6f 100644 --- a/src/schema/aws-cassandra-keyspace.json +++ b/src/schema/aws-cassandra-keyspace.json @@ -1,169 +1,184 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ReplicationSpecification", - "/properties/KeyspaceName" - ], - "definitions": { - "RegionList": { - "insertionOrder": false, - "items": { - "enum": [ - "ap-northeast-1", - "ap-northeast-2", - "ap-south-1", - "ap-southeast-1", - "ap-southeast-2", - "ca-central-1", - "eu-central-1", - "eu-north-1", - "eu-west-1", - "eu-west-2", - "eu-west-3", - "sa-east-1", - "us-east-1", - "us-east-2", - "us-west-1", - "us-west-2" - ], - "type": "string" - }, - "maxItems": 6, - "minItems": 2, - "type": "array", - "uniqueItems": true - }, - "ReplicationSpecification": { - "additionalProperties": false, - "default": { - "properties": { - "ReplicationStrategy": { - "const": "SINGLE_REGION", - "type": "string" - } - } - }, - "dependencies": { - "RegionList": [ - "ReplicationStrategy" - ] - }, - "properties": { - "RegionList": { - "$ref": "#/definitions/RegionList" - }, - "ReplicationStrategy": { - "enum": [ - "SINGLE_REGION", - "MULTI_REGION" - ], - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::Cassandra::Keyspace", - "handlers": { - "create": { - "permissions": [ - "cassandra:Create", - "cassandra:CreateMultiRegionResource", - "cassandra:Select", - "cassandra:SelectMultiRegionResource", - "cassandra:TagResource", - "cassandra:TagMultiRegionResource", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "cassandra:Drop", - "cassandra:DropMultiRegionResource", - "cassandra:Select", - "cassandra:SelectMultiRegionResource" - ] - }, - "list": { - "permissions": [ - "cassandra:Select", - "cassandra:SelectMultiRegionResource" - ] - }, - "read": { - "permissions": [ - "cassandra:Select", - "cassandra:SelectMultiRegionResource" - ] - }, - "update": { - "permissions": [ - "cassandra:Alter", - "cassandra:AlterMultiRegionResource", - "cassandra:Select", - "cassandra:SelectMultiRegionResource", - "cassandra:TagResource", - "cassandra:TagMultiRegionResource", - "cassandra:UntagResource", - "cassandra:UntagMultiRegionResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/KeyspaceName" - ], - "properties": { - "KeyspaceName": { - "description": "Name for Cassandra keyspace", - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_]{1,47}$", - "type": "string" - }, - "ReplicationSpecification": { - "$ref": "#/definitions/ReplicationSpecification" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "required": [], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "cassandra:TagResource", - "cassandra:TagMultiRegionResource", - "cassandra:UntagResource", - "cassandra:UntagMultiRegionResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Cassandra::Keyspace" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KeyspaceName" + ], + "definitions": { + "RegionList": { + "insertionOrder": false, + "items": { + "enum": [ + "af-south-1", + "ap-northeast-1", + "ap-northeast-2", + "ap-south-1", + "ap-southeast-1", + "ap-southeast-2", + "ca-central-1", + "eu-central-1", + "eu-north-1", + "eu-west-1", + "eu-west-2", + "eu-west-3", + "sa-east-1", + "us-east-1", + "us-east-2", + "us-west-1", + "us-west-2" + ], + "type": "string" + }, + "maxItems": 6, + "minItems": 2, + "type": "array", + "uniqueItems": true + }, + "ReplicationSpecification": { + "additionalProperties": false, + "default": { + "properties": { + "ReplicationStrategy": { + "const": "SINGLE_REGION", + "type": "string" + } + } + }, + "dependencies": { + "RegionList": [ + "ReplicationStrategy" + ] + }, + "properties": { + "RegionList": { + "$ref": "#/definitions/RegionList" + }, + "ReplicationStrategy": { + "enum": [ + "SINGLE_REGION", + "MULTI_REGION" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::Cassandra::Keyspace", + "handlers": { + "create": { + "permissions": [ + "cassandra:Create", + "cassandra:CreateMultiRegionResource", + "cassandra:Select", + "cassandra:SelectMultiRegionResource", + "cassandra:TagResource", + "cassandra:TagMultiRegionResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "cassandra:Drop", + "cassandra:DropMultiRegionResource", + "cassandra:Select", + "cassandra:SelectMultiRegionResource" + ] + }, + "list": { + "permissions": [ + "cassandra:Select", + "cassandra:SelectMultiRegionResource" + ] + }, + "read": { + "permissions": [ + "cassandra:Select", + "cassandra:SelectMultiRegionResource" + ] + }, + "update": { + "permissions": [ + "cassandra:Alter", + "cassandra:AlterMultiRegionResource", + "cassandra:Modify", + "cassandra:ModifyMultiRegionResource", + "cassandra:Select", + "cassandra:SelectMultiRegionResource", + "cassandra:TagResource", + "cassandra:TagMultiRegionResource", + "cassandra:UntagResource", + "cassandra:UntagMultiRegionResource", + "application-autoscaling:RegisterScalableTarget", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:DescribeScalableTargets", + "application-autoscaling:DescribeScalingPolicies", + "application-autoscaling:PutScalingPolicy", + "cloudwatch:DeleteAlarms", + "cloudwatch:DescribeAlarms", + "cloudwatch:PutMetricAlarm", + "iam:CreateServiceLinkedRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/KeyspaceName" + ], + "properties": { + "ClientSideTimestampsEnabled": { + "description": "Indicates whether client-side timestamps are enabled (true) or disabled (false) for all tables in the keyspace. To add a Region to a single-Region keyspace with at least one table, the value must be set to true. After you enabled client-side timestamps for a table, you can\u2019t disable it again.", + "type": "boolean" + }, + "KeyspaceName": { + "description": "Name for Cassandra keyspace", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_]{1,47}$", + "type": "string" + }, + "ReplicationSpecification": { + "$ref": "#/definitions/ReplicationSpecification" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "required": [], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "cassandra:TagResource", + "cassandra:TagMultiRegionResource", + "cassandra:UntagResource", + "cassandra:UntagMultiRegionResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Cassandra::Keyspace" +} diff --git a/src/schema/aws-cassandra-table.json b/src/schema/aws-cassandra-table.json index 8b2075bb..45e6cc22 100644 --- a/src/schema/aws-cassandra-table.json +++ b/src/schema/aws-cassandra-table.json @@ -1,438 +1,438 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KeyspaceName", - "/properties/TableName", - "/properties/PartitionKeyColumns", - "/properties/ClusteringKeyColumns", - "/properties/ClientSideTimestampsEnabled" - ], - "definitions": { - "AutoScalingSetting": { - "additionalProperties": false, - "description": "Represents configuration for auto scaling.", - "properties": { - "AutoScalingDisabled": { - "default": false, - "type": "boolean" - }, - "MaximumUnits": { - "minimum": 1, - "type": "integer" - }, - "MinimumUnits": { - "minimum": 1, - "type": "integer" - }, - "ScalingPolicy": { - "$ref": "#/definitions/ScalingPolicy" - } - }, - "type": "object" - }, - "AutoScalingSpecification": { - "additionalProperties": false, - "description": "Represents the read and write settings used for AutoScaling.", - "properties": { - "ReadCapacityAutoScaling": { - "$ref": "#/definitions/AutoScalingSetting" - }, - "WriteCapacityAutoScaling": { - "$ref": "#/definitions/AutoScalingSetting" - } - }, - "type": "object" - }, - "BillingMode": { - "additionalProperties": false, - "properties": { - "Mode": { - "$ref": "#/definitions/Mode" - }, - "ProvisionedThroughput": { - "$ref": "#/definitions/ProvisionedThroughput" - } - }, - "required": [ - "Mode" - ], - "type": "object" - }, - "ClusteringKeyColumn": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/Column" - }, - "OrderBy": { - "default": "ASC", - "enum": [ - "ASC", - "DESC" - ], - "type": "string" - } - }, - "required": [ - "Column" - ], - "type": "object" - }, - "Column": { - "additionalProperties": false, - "properties": { - "ColumnName": { - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_]{1,47}$", - "type": "string" - }, - "ColumnType": { - "type": "string" - } - }, - "required": [ - "ColumnName", - "ColumnType" - ], - "type": "object" - }, - "EncryptionSpecification": { - "additionalProperties": false, - "description": "Represents the settings used to enable server-side encryption", - "properties": { - "EncryptionType": { - "$ref": "#/definitions/EncryptionType" - }, - "KmsKeyIdentifier": { - "$ref": "#/definitions/KmsKeyIdentifier" - } - }, - "required": [ - "EncryptionType" - ], - "type": "object" - }, - "EncryptionType": { - "default": "AWS_OWNED_KMS_KEY", - "description": "Server-side encryption type", - "enum": [ - "AWS_OWNED_KMS_KEY", - "CUSTOMER_MANAGED_KMS_KEY" - ], - "type": "string" - }, - "KmsKeyIdentifier": { - "description": "The AWS KMS customer master key (CMK) that should be used for the AWS KMS encryption. To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. ", - "type": "string" - }, - "Mode": { - "default": "ON_DEMAND", - "description": "Capacity mode for the specified table", - "enum": [ - "PROVISIONED", - "ON_DEMAND" - ], - "type": "string" - }, - "ProvisionedThroughput": { - "additionalProperties": false, - "description": "Throughput for the specified table, which consists of values for ReadCapacityUnits and WriteCapacityUnits", - "properties": { - "ReadCapacityUnits": { - "minimum": 1, - "type": "integer" - }, - "WriteCapacityUnits": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "ReadCapacityUnits", - "WriteCapacityUnits" - ], - "type": "object" - }, - "ReplicaSpecification": { - "additionalProperties": false, - "description": "Represents replica specifications.", - "properties": { - "ReadCapacityAutoScaling": { - "$ref": "#/definitions/AutoScalingSetting" - }, - "ReadCapacityUnits": { - "type": "integer" - }, - "Region": { - "maxLength": 25, - "minLength": 2, - "type": "string" - } - }, - "required": [ - "Region" - ], - "type": "object" - }, - "ScalingPolicy": { - "additionalProperties": false, - "description": "Represents scaling policy.", - "properties": { - "TargetTrackingScalingPolicyConfiguration": { - "$ref": "#/definitions/TargetTrackingScalingPolicyConfiguration" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to apply to the resource", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TargetTrackingScalingPolicyConfiguration": { - "additionalProperties": false, - "description": "Represents configuration for target tracking scaling policy.", - "properties": { - "DisableScaleIn": { - "default": "false", - "type": "boolean" - }, - "ScaleInCooldown": { - "default": 0, - "type": "integer" - }, - "ScaleOutCooldown": { - "default": 0, - "type": "integer" - }, - "TargetValue": { - "type": "integer" - } - }, - "required": [ - "TargetValue" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::Cassandra::Table", - "handlers": { - "create": { - "permissions": [ - "cassandra:Create", - "cassandra:CreateMultiRegionResource", - "cassandra:Select", - "cassandra:SelectMultiRegionResource", - "cassandra:TagResource", - "cassandra:TagMultiRegionResource", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:Encrypt", - "kms:Decrypt", - "application-autoscaling:DescribeScalableTargets", - "application-autoscaling:DescribeScalingPolicies", - "application-autoscaling:DeregisterScalableTarget", - "application-autoscaling:RegisterScalableTarget", - "application-autoscaling:PutScalingPolicy", - "cloudwatch:DeleteAlarms", - "cloudwatch:DescribeAlarms", - "cloudwatch:GetMetricData", - "cloudwatch:PutMetricAlarm" - ] - }, - "delete": { - "permissions": [ - "cassandra:Drop", - "cassandra:DropMultiRegionResource", - "cassandra:Select", - "cassandra:SelectMultiRegionResource", - "application-autoscaling:DescribeScalableTargets", - "application-autoscaling:DescribeScalingPolicies", - "application-autoscaling:DeregisterScalableTarget", - "application-autoscaling:RegisterScalableTarget", - "application-autoscaling:PutScalingPolicy", - "cloudwatch:DeleteAlarms", - "cloudwatch:DescribeAlarms", - "cloudwatch:GetMetricData", - "cloudwatch:PutMetricAlarm" - ] - }, - "list": { - "permissions": [ - "cassandra:Select", - "cassandra:SelectMultiRegionResource", - "application-autoscaling:DescribeScalableTargets", - "application-autoscaling:DescribeScalingPolicies", - "application-autoscaling:DeregisterScalableTarget", - "application-autoscaling:RegisterScalableTarget", - "application-autoscaling:PutScalingPolicy", - "cloudwatch:DeleteAlarms", - "cloudwatch:DescribeAlarms", - "cloudwatch:GetMetricData", - "cloudwatch:PutMetricAlarm" - ] - }, - "read": { - "permissions": [ - "cassandra:Select", - "cassandra:SelectMultiRegionResource", - "application-autoscaling:DescribeScalableTargets", - "application-autoscaling:DescribeScalingPolicies", - "application-autoscaling:DeregisterScalableTarget", - "application-autoscaling:RegisterScalableTarget", - "application-autoscaling:PutScalingPolicy", - "cloudwatch:DeleteAlarms", - "cloudwatch:DescribeAlarms", - "cloudwatch:GetMetricData", - "cloudwatch:PutMetricAlarm" - ] - }, - "update": { - "permissions": [ - "cassandra:Alter", - "cassandra:AlterMultiRegionResource", - "cassandra:Select", - "cassandra:SelectMultiRegionResource", - "cassandra:TagResource", - "cassandra:TagMultiRegionResource", - "cassandra:UntagResource", - "cassandra:UntagMultiRegionResource", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:Encrypt", - "kms:Decrypt", - "application-autoscaling:DescribeScalableTargets", - "application-autoscaling:DescribeScalingPolicies", - "application-autoscaling:DeregisterScalableTarget", - "application-autoscaling:RegisterScalableTarget", - "application-autoscaling:PutScalingPolicy", - "cloudwatch:DeleteAlarms", - "cloudwatch:DescribeAlarms", - "cloudwatch:GetMetricData", - "cloudwatch:PutMetricAlarm" - ] - } - }, - "primaryIdentifier": [ - "/properties/KeyspaceName", - "/properties/TableName" - ], - "properties": { - "AutoScalingSpecifications": { - "$ref": "#/definitions/AutoScalingSpecification" - }, - "BillingMode": { - "$ref": "#/definitions/BillingMode" - }, - "ClientSideTimestampsEnabled": { - "description": "Indicates whether client side timestamps are enabled (true) or disabled (false) on the table. False by default, once it is enabled it cannot be disabled again.", - "type": "boolean" - }, - "ClusteringKeyColumns": { - "description": "Clustering key columns of the table", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ClusteringKeyColumn" - }, - "type": "array", - "uniqueItems": true - }, - "DefaultTimeToLive": { - "description": "Default TTL (Time To Live) in seconds, where zero is disabled. If the value is greater than zero, TTL is enabled for the entire table and an expiration timestamp is added to each column.", - "minimum": 0, - "type": "integer" - }, - "EncryptionSpecification": { - "$ref": "#/definitions/EncryptionSpecification" - }, - "KeyspaceName": { - "description": "Name for Cassandra keyspace", - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_]{1,47}$", - "type": "string" - }, - "PartitionKeyColumns": { - "description": "Partition key columns of the table", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Column" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "PointInTimeRecoveryEnabled": { - "description": "Indicates whether point in time recovery is enabled (true) or disabled (false) on the table", - "type": "boolean" - }, - "RegularColumns": { - "description": "Non-key columns of the table", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Column" - }, - "type": "array", - "uniqueItems": true - }, - "ReplicaSpecifications": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ReplicaSpecification" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "TableName": { - "description": "Name for Cassandra table", - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_]{1,47}$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "KeyspaceName", - "PartitionKeyColumns" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "cassandra:TagResource", - "cassandra:TagMultiRegionResource", - "cassandra:UntagResource", - "cassandra:UntagMultiRegionResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Cassandra::Table", - "writeOnlyProperties": [ - "/properties/AutoScalingSpecifications", - "/properties/ReplicaSpecifications" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KeyspaceName", + "/properties/TableName", + "/properties/PartitionKeyColumns", + "/properties/ClusteringKeyColumns", + "/properties/ClientSideTimestampsEnabled" + ], + "definitions": { + "AutoScalingSetting": { + "additionalProperties": false, + "description": "Represents configuration for auto scaling.", + "properties": { + "AutoScalingDisabled": { + "default": false, + "type": "boolean" + }, + "MaximumUnits": { + "minimum": 1, + "type": "integer" + }, + "MinimumUnits": { + "minimum": 1, + "type": "integer" + }, + "ScalingPolicy": { + "$ref": "#/definitions/ScalingPolicy" + } + }, + "type": "object" + }, + "AutoScalingSpecification": { + "additionalProperties": false, + "description": "Represents the read and write settings used for AutoScaling.", + "properties": { + "ReadCapacityAutoScaling": { + "$ref": "#/definitions/AutoScalingSetting" + }, + "WriteCapacityAutoScaling": { + "$ref": "#/definitions/AutoScalingSetting" + } + }, + "type": "object" + }, + "BillingMode": { + "additionalProperties": false, + "properties": { + "Mode": { + "$ref": "#/definitions/Mode" + }, + "ProvisionedThroughput": { + "$ref": "#/definitions/ProvisionedThroughput" + } + }, + "required": [ + "Mode" + ], + "type": "object" + }, + "ClusteringKeyColumn": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/Column" + }, + "OrderBy": { + "default": "ASC", + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "Column": { + "additionalProperties": false, + "properties": { + "ColumnName": { + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_]{1,47}$", + "type": "string" + }, + "ColumnType": { + "type": "string" + } + }, + "required": [ + "ColumnName", + "ColumnType" + ], + "type": "object" + }, + "EncryptionSpecification": { + "additionalProperties": false, + "description": "Represents the settings used to enable server-side encryption", + "properties": { + "EncryptionType": { + "$ref": "#/definitions/EncryptionType" + }, + "KmsKeyIdentifier": { + "$ref": "#/definitions/KmsKeyIdentifier" + } + }, + "required": [ + "EncryptionType" + ], + "type": "object" + }, + "EncryptionType": { + "default": "AWS_OWNED_KMS_KEY", + "description": "Server-side encryption type", + "enum": [ + "AWS_OWNED_KMS_KEY", + "CUSTOMER_MANAGED_KMS_KEY" + ], + "type": "string" + }, + "KmsKeyIdentifier": { + "description": "The AWS KMS customer master key (CMK) that should be used for the AWS KMS encryption. To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. ", + "type": "string" + }, + "Mode": { + "default": "ON_DEMAND", + "description": "Capacity mode for the specified table", + "enum": [ + "PROVISIONED", + "ON_DEMAND" + ], + "type": "string" + }, + "ProvisionedThroughput": { + "additionalProperties": false, + "description": "Throughput for the specified table, which consists of values for ReadCapacityUnits and WriteCapacityUnits", + "properties": { + "ReadCapacityUnits": { + "minimum": 1, + "type": "integer" + }, + "WriteCapacityUnits": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "ReadCapacityUnits", + "WriteCapacityUnits" + ], + "type": "object" + }, + "ReplicaSpecification": { + "additionalProperties": false, + "description": "Represents replica specifications.", + "properties": { + "ReadCapacityAutoScaling": { + "$ref": "#/definitions/AutoScalingSetting" + }, + "ReadCapacityUnits": { + "type": "integer" + }, + "Region": { + "maxLength": 25, + "minLength": 2, + "type": "string" + } + }, + "required": [ + "Region" + ], + "type": "object" + }, + "ScalingPolicy": { + "additionalProperties": false, + "description": "Represents scaling policy.", + "properties": { + "TargetTrackingScalingPolicyConfiguration": { + "$ref": "#/definitions/TargetTrackingScalingPolicyConfiguration" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to apply to the resource", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TargetTrackingScalingPolicyConfiguration": { + "additionalProperties": false, + "description": "Represents configuration for target tracking scaling policy.", + "properties": { + "DisableScaleIn": { + "default": "false", + "type": "boolean" + }, + "ScaleInCooldown": { + "default": 0, + "type": "integer" + }, + "ScaleOutCooldown": { + "default": 0, + "type": "integer" + }, + "TargetValue": { + "type": "integer" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::Cassandra::Table", + "handlers": { + "create": { + "permissions": [ + "cassandra:Create", + "cassandra:CreateMultiRegionResource", + "cassandra:Select", + "cassandra:SelectMultiRegionResource", + "cassandra:TagResource", + "cassandra:TagMultiRegionResource", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:Encrypt", + "kms:Decrypt", + "application-autoscaling:DescribeScalableTargets", + "application-autoscaling:DescribeScalingPolicies", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:RegisterScalableTarget", + "application-autoscaling:PutScalingPolicy", + "cloudwatch:DeleteAlarms", + "cloudwatch:DescribeAlarms", + "cloudwatch:GetMetricData", + "cloudwatch:PutMetricAlarm" + ] + }, + "delete": { + "permissions": [ + "cassandra:Drop", + "cassandra:DropMultiRegionResource", + "cassandra:Select", + "cassandra:SelectMultiRegionResource", + "application-autoscaling:DescribeScalableTargets", + "application-autoscaling:DescribeScalingPolicies", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:RegisterScalableTarget", + "application-autoscaling:PutScalingPolicy", + "cloudwatch:DeleteAlarms", + "cloudwatch:DescribeAlarms", + "cloudwatch:GetMetricData", + "cloudwatch:PutMetricAlarm" + ] + }, + "list": { + "permissions": [ + "cassandra:Select", + "cassandra:SelectMultiRegionResource", + "application-autoscaling:DescribeScalableTargets", + "application-autoscaling:DescribeScalingPolicies", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:RegisterScalableTarget", + "application-autoscaling:PutScalingPolicy", + "cloudwatch:DeleteAlarms", + "cloudwatch:DescribeAlarms", + "cloudwatch:GetMetricData", + "cloudwatch:PutMetricAlarm" + ] + }, + "read": { + "permissions": [ + "cassandra:Select", + "cassandra:SelectMultiRegionResource", + "application-autoscaling:DescribeScalableTargets", + "application-autoscaling:DescribeScalingPolicies", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:RegisterScalableTarget", + "application-autoscaling:PutScalingPolicy", + "cloudwatch:DeleteAlarms", + "cloudwatch:DescribeAlarms", + "cloudwatch:GetMetricData", + "cloudwatch:PutMetricAlarm" + ] + }, + "update": { + "permissions": [ + "cassandra:Alter", + "cassandra:AlterMultiRegionResource", + "cassandra:Select", + "cassandra:SelectMultiRegionResource", + "cassandra:TagResource", + "cassandra:TagMultiRegionResource", + "cassandra:UntagResource", + "cassandra:UntagMultiRegionResource", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:Encrypt", + "kms:Decrypt", + "application-autoscaling:DescribeScalableTargets", + "application-autoscaling:DescribeScalingPolicies", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:RegisterScalableTarget", + "application-autoscaling:PutScalingPolicy", + "cloudwatch:DeleteAlarms", + "cloudwatch:DescribeAlarms", + "cloudwatch:GetMetricData", + "cloudwatch:PutMetricAlarm" + ] + } + }, + "primaryIdentifier": [ + "/properties/KeyspaceName", + "/properties/TableName" + ], + "properties": { + "AutoScalingSpecifications": { + "$ref": "#/definitions/AutoScalingSpecification" + }, + "BillingMode": { + "$ref": "#/definitions/BillingMode" + }, + "ClientSideTimestampsEnabled": { + "description": "Indicates whether client side timestamps are enabled (true) or disabled (false) on the table. False by default, once it is enabled it cannot be disabled again.", + "type": "boolean" + }, + "ClusteringKeyColumns": { + "description": "Clustering key columns of the table", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ClusteringKeyColumn" + }, + "type": "array", + "uniqueItems": true + }, + "DefaultTimeToLive": { + "description": "Default TTL (Time To Live) in seconds, where zero is disabled. If the value is greater than zero, TTL is enabled for the entire table and an expiration timestamp is added to each column.", + "minimum": 0, + "type": "integer" + }, + "EncryptionSpecification": { + "$ref": "#/definitions/EncryptionSpecification" + }, + "KeyspaceName": { + "description": "Name for Cassandra keyspace", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_]{1,47}$", + "type": "string" + }, + "PartitionKeyColumns": { + "description": "Partition key columns of the table", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Column" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "PointInTimeRecoveryEnabled": { + "description": "Indicates whether point in time recovery is enabled (true) or disabled (false) on the table", + "type": "boolean" + }, + "RegularColumns": { + "description": "Non-key columns of the table", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Column" + }, + "type": "array", + "uniqueItems": true + }, + "ReplicaSpecifications": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ReplicaSpecification" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TableName": { + "description": "Name for Cassandra table", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_]{1,47}$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "KeyspaceName", + "PartitionKeyColumns" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "cassandra:TagResource", + "cassandra:TagMultiRegionResource", + "cassandra:UntagResource", + "cassandra:UntagMultiRegionResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Cassandra::Table", + "writeOnlyProperties": [ + "/properties/AutoScalingSpecifications", + "/properties/ReplicaSpecifications" + ] +} diff --git a/src/schema/aws-cassandra-type.json b/src/schema/aws-cassandra-type.json new file mode 100644 index 00000000..a4b62c93 --- /dev/null +++ b/src/schema/aws-cassandra-type.json @@ -0,0 +1,120 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KeyspaceName", + "/properties/TypeName", + "/properties/Fields" + ], + "definitions": { + "Field": { + "additionalProperties": false, + "properties": { + "FieldName": { + "type": "string" + }, + "FieldType": { + "type": "string" + } + }, + "required": [ + "FieldName", + "FieldType" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::Cassandra::Type", + "handlers": { + "create": { + "permissions": [ + "cassandra:Create", + "cassandra:Select" + ] + }, + "delete": { + "permissions": [ + "cassandra:Drop", + "cassandra:Select" + ] + }, + "list": { + "permissions": [ + "cassandra:Select" + ] + }, + "read": { + "permissions": [ + "cassandra:Select" + ] + } + }, + "primaryIdentifier": [ + "/properties/KeyspaceName", + "/properties/TypeName" + ], + "properties": { + "DirectParentTypes": { + "description": "List of parent User-Defined Types that directly reference the User-Defined Type in their fields.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "DirectReferringTables": { + "description": "List of Tables that directly reference the User-Defined Type in their columns.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Fields": { + "description": "Field definitions of the User-Defined Type", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Field" + }, + "type": "array", + "uniqueItems": true + }, + "KeyspaceArn": { + "description": "ARN of the Keyspace which contains the User-Defined Type.", + "type": "string" + }, + "KeyspaceName": { + "description": "Name of the Keyspace which contains the User-Defined Type.", + "type": "string" + }, + "LastModifiedTimestamp": { + "description": "Timestamp of the last time the User-Defined Type's meta data was modified.", + "type": "number" + }, + "MaxNestingDepth": { + "description": "Maximum nesting depth of the User-Defined Type across the field types.", + "type": "integer" + }, + "TypeName": { + "description": "Name of the User-Defined Type.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DirectReferringTables", + "/properties/DirectParentTypes", + "/properties/MaxNestingDepth", + "/properties/LastModifiedTimestamp", + "/properties/KeyspaceArn" + ], + "required": [ + "KeyspaceName", + "TypeName", + "Fields" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::Cassandra::Type" +} diff --git a/src/schema/aws-ce-anomalymonitor.json b/src/schema/aws-ce-anomalymonitor.json index 126b6601..c6cf0d8b 100644 --- a/src/schema/aws-ce-anomalymonitor.json +++ b/src/schema/aws-ce-anomalymonitor.json @@ -1,153 +1,161 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MonitorType", - "/properties/MonitorDimension", - "/properties/MonitorSpecification", - "/properties/ResourceTags" - ], - "definitions": { - "Arn": { - "description": "Monitor ARN", - "pattern": "^arn:aws[-a-z0-9]*:[a-z0-9]+:[-a-z0-9]*:[0-9]{12}:[-a-zA-Z0-9/:_]+$", - "type": "string" - }, - "ResourceTag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name for the tag.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:).*$", - "type": "string" - }, - "Value": { - "description": "The value for the tag.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "AWS Cost Anomaly Detection leverages advanced Machine Learning technologies to identify anomalous spend and root causes, so you can quickly take action. You can use Cost Anomaly Detection by creating monitor.", - "handlers": { - "create": { - "permissions": [ - "ce:CreateAnomalyMonitor", - "ce:TagResource" - ] - }, - "delete": { - "permissions": [ - "ce:DeleteAnomalyMonitor" - ] - }, - "list": { - "permissions": [ - "ce:GetAnomalyMonitors" - ] - }, - "read": { - "permissions": [ - "ce:GetAnomalyMonitors" - ] - }, - "update": { - "permissions": [ - "ce:UpdateAnomalyMonitor" - ] - } - }, - "primaryIdentifier": [ - "/properties/MonitorArn" - ], - "properties": { - "CreationDate": { - "description": "The date when the monitor was created. ", - "maxLength": 40, - "minLength": 0, - "pattern": "(\\d{4}-\\d{2}-\\d{2})(T\\d{2}:\\d{2}:\\d{2}Z)?", - "type": "string" - }, - "DimensionalValueCount": { - "description": "The value for evaluated dimensions.", - "minimum": 0, - "type": "integer" - }, - "LastEvaluatedDate": { - "description": "The date when the monitor last evaluated for anomalies.", - "maxLength": 40, - "minLength": 0, - "pattern": "(\\d{4}-\\d{2}-\\d{2})(T\\d{2}:\\d{2}:\\d{2}Z)?|(NOT_EVALUATED_YET)", - "type": "string" - }, - "LastUpdatedDate": { - "description": "The date when the monitor was last updated.", - "maxLength": 40, - "minLength": 0, - "pattern": "(\\d{4}-\\d{2}-\\d{2})(T\\d{2}:\\d{2}:\\d{2}Z)?", - "type": "string" - }, - "MonitorArn": { - "$ref": "#/definitions/Arn" - }, - "MonitorDimension": { - "description": "The dimensions to evaluate", - "enum": [ - "SERVICE" - ], - "type": "string" - }, - "MonitorName": { - "description": "The name of the monitor.", - "maxLength": 1024, - "minLength": 0, - "pattern": "[\\S\\s]*", - "type": "string" - }, - "MonitorSpecification": { - "type": "string" - }, - "MonitorType": { - "enum": [ - "DIMENSIONAL", - "CUSTOM" - ], - "type": "string" - }, - "ResourceTags": { - "description": "Tags to assign to monitor.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ResourceTag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/MonitorArn", - "/properties/CreationDate", - "/properties/LastEvaluatedDate", - "/properties/LastUpdatedDate", - "/properties/DimensionalValueCount" - ], - "required": [ - "MonitorName", - "MonitorType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::CE::AnomalyMonitor", - "writeOnlyProperties": [ - "/properties/ResourceTags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MonitorType", + "/properties/MonitorDimension", + "/properties/MonitorSpecification", + "/properties/ResourceTags" + ], + "definitions": { + "Arn": { + "description": "Monitor ARN", + "pattern": "^arn:aws[-a-z0-9]*:[a-z0-9]+:[-a-z0-9]*:[0-9]{12}:[-a-zA-Z0-9/:_]+$", + "type": "string" + }, + "ResourceTag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name for the tag.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:).*$", + "type": "string" + }, + "Value": { + "description": "The value for the tag.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "AWS Cost Anomaly Detection leverages advanced Machine Learning technologies to identify anomalous spend and root causes, so you can quickly take action. You can use Cost Anomaly Detection by creating monitor.", + "handlers": { + "create": { + "permissions": [ + "ce:CreateAnomalyMonitor", + "ce:TagResource" + ] + }, + "delete": { + "permissions": [ + "ce:DeleteAnomalyMonitor" + ] + }, + "list": { + "permissions": [ + "ce:GetAnomalyMonitors" + ] + }, + "read": { + "permissions": [ + "ce:GetAnomalyMonitors", + "ce:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ce:UpdateAnomalyMonitor" + ] + } + }, + "primaryIdentifier": [ + "/properties/MonitorArn" + ], + "properties": { + "CreationDate": { + "description": "The date when the monitor was created. ", + "maxLength": 40, + "minLength": 0, + "pattern": "(\\d{4}-\\d{2}-\\d{2})(T\\d{2}:\\d{2}:\\d{2}Z)?", + "type": "string" + }, + "DimensionalValueCount": { + "description": "The value for evaluated dimensions.", + "minimum": 0, + "type": "integer" + }, + "LastEvaluatedDate": { + "description": "The date when the monitor last evaluated for anomalies.", + "maxLength": 40, + "minLength": 0, + "pattern": "(\\d{4}-\\d{2}-\\d{2})(T\\d{2}:\\d{2}:\\d{2}Z)?|(NOT_EVALUATED_YET)", + "type": "string" + }, + "LastUpdatedDate": { + "description": "The date when the monitor was last updated.", + "maxLength": 40, + "minLength": 0, + "pattern": "(\\d{4}-\\d{2}-\\d{2})(T\\d{2}:\\d{2}:\\d{2}Z)?", + "type": "string" + }, + "MonitorArn": { + "$ref": "#/definitions/Arn" + }, + "MonitorDimension": { + "description": "The dimensions to evaluate", + "enum": [ + "SERVICE" + ], + "type": "string" + }, + "MonitorName": { + "description": "The name of the monitor.", + "maxLength": 1024, + "minLength": 0, + "pattern": "[\\S\\s]*", + "type": "string" + }, + "MonitorSpecification": { + "type": "string" + }, + "MonitorType": { + "enum": [ + "DIMENSIONAL", + "CUSTOM" + ], + "type": "string" + }, + "ResourceTags": { + "description": "Tags to assign to monitor.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourceTag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/MonitorArn", + "/properties/CreationDate", + "/properties/LastEvaluatedDate", + "/properties/LastUpdatedDate", + "/properties/DimensionalValueCount" + ], + "required": [ + "MonitorName", + "MonitorType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ce:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/ResourceTags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::CE::AnomalyMonitor" +} diff --git a/src/schema/aws-ce-anomalysubscription.json b/src/schema/aws-ce-anomalysubscription.json index 87185934..3ee9ba2b 100644 --- a/src/schema/aws-ce-anomalysubscription.json +++ b/src/schema/aws-ce-anomalysubscription.json @@ -1,175 +1,183 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceTags" - ], - "definitions": { - "Arn": { - "description": "Subscription ARN", - "pattern": "^arn:aws[-a-z0-9]*:[a-z0-9]+:[-a-z0-9]*:[0-9]{12}:[-a-zA-Z0-9/:_]+$", - "type": "string" - }, - "ResourceTag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name for the tag.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:).*$", - "type": "string" - }, - "Value": { - "description": "The value for the tag.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Subscriber": { - "additionalProperties": false, - "properties": { - "Address": { - "pattern": "(^[a-zA-Z0-9.!#$%&'*+=?^_\u2018{|}~-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$)|(^arn:(aws[a-zA-Z-]*):sns:[a-zA-Z0-9-]+:[0-9]{12}:[a-zA-Z0-9_-]+(\\.fifo)?$)", - "type": "string" - }, - "Status": { - "enum": [ - "CONFIRMED", - "DECLINED" - ], - "type": "string" - }, - "Type": { - "enum": [ - "EMAIL", - "SNS" - ], - "type": "string" - } - }, - "required": [ - "Address", - "Type" - ], - "type": "object" - } - }, - "description": "AWS Cost Anomaly Detection leverages advanced Machine Learning technologies to identify anomalous spend and root causes, so you can quickly take action. Create subscription to be notified", - "handlers": { - "create": { - "permissions": [ - "ce:CreateAnomalySubscription", - "ce:TagResource" - ] - }, - "delete": { - "permissions": [ - "ce:DeleteAnomalySubscription" - ] - }, - "list": { - "permissions": [ - "ce:GetAnomalySubscriptions" - ] - }, - "read": { - "permissions": [ - "ce:GetAnomalySubscriptions" - ] - }, - "update": { - "permissions": [ - "ce:UpdateAnomalySubscription" - ] - } - }, - "primaryIdentifier": [ - "/properties/SubscriptionArn" - ], - "properties": { - "AccountId": { - "description": "The accountId", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "Frequency": { - "description": "The frequency at which anomaly reports are sent over email. ", - "enum": [ - "DAILY", - "IMMEDIATE", - "WEEKLY" - ], - "type": "string" - }, - "MonitorArnList": { - "description": "A list of cost anomaly monitors.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Arn" - }, - "type": "array" - }, - "ResourceTags": { - "description": "Tags to assign to subscription.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ResourceTag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Subscribers": { - "description": "A list of subscriber", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Subscriber" - }, - "type": "array" - }, - "SubscriptionArn": { - "$ref": "#/definitions/Arn" - }, - "SubscriptionName": { - "description": "The name of the subscription.", - "maxLength": 1024, - "minLength": 0, - "pattern": "[\\S\\s]*", - "type": "string" - }, - "Threshold": { - "description": "The dollar value that triggers a notification if the threshold is exceeded. ", - "minimum": 0, - "type": "number" - }, - "ThresholdExpression": { - "description": "An Expression object in JSON String format used to specify the anomalies that you want to generate alerts for.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/SubscriptionArn", - "/properties/AccountId", - "/properties/Subscribers/*/Status" - ], - "required": [ - "MonitorArnList", - "Subscribers", - "Frequency", - "SubscriptionName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::CE::AnomalySubscription", - "writeOnlyProperties": [ - "/properties/ResourceTags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceTags" + ], + "definitions": { + "Arn": { + "description": "Subscription ARN", + "pattern": "^arn:aws[-a-z0-9]*:[a-z0-9]+:[-a-z0-9]*:[0-9]{12}:[-a-zA-Z0-9/:_]+$", + "type": "string" + }, + "ResourceTag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name for the tag.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:).*$", + "type": "string" + }, + "Value": { + "description": "The value for the tag.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Subscriber": { + "additionalProperties": false, + "properties": { + "Address": { + "pattern": "(^[a-zA-Z0-9.!#$%&'*+=?^_\u2018{|}~-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$)|(^arn:(aws[a-zA-Z-]*):sns:[a-zA-Z0-9-]+:[0-9]{12}:[a-zA-Z0-9_-]+(\\.fifo)?$)", + "type": "string" + }, + "Status": { + "enum": [ + "CONFIRMED", + "DECLINED" + ], + "type": "string" + }, + "Type": { + "enum": [ + "EMAIL", + "SNS" + ], + "type": "string" + } + }, + "required": [ + "Address", + "Type" + ], + "type": "object" + } + }, + "description": "AWS Cost Anomaly Detection leverages advanced Machine Learning technologies to identify anomalous spend and root causes, so you can quickly take action. Create subscription to be notified", + "handlers": { + "create": { + "permissions": [ + "ce:CreateAnomalySubscription", + "ce:TagResource" + ] + }, + "delete": { + "permissions": [ + "ce:DeleteAnomalySubscription" + ] + }, + "list": { + "permissions": [ + "ce:GetAnomalySubscriptions" + ] + }, + "read": { + "permissions": [ + "ce:GetAnomalySubscriptions", + "ce:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ce:UpdateAnomalySubscription" + ] + } + }, + "primaryIdentifier": [ + "/properties/SubscriptionArn" + ], + "properties": { + "AccountId": { + "description": "The accountId", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "Frequency": { + "description": "The frequency at which anomaly reports are sent over email. ", + "enum": [ + "DAILY", + "IMMEDIATE", + "WEEKLY" + ], + "type": "string" + }, + "MonitorArnList": { + "description": "A list of cost anomaly monitors.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Arn" + }, + "type": "array" + }, + "ResourceTags": { + "description": "Tags to assign to subscription.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourceTag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Subscribers": { + "description": "A list of subscriber", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Subscriber" + }, + "type": "array" + }, + "SubscriptionArn": { + "$ref": "#/definitions/Arn" + }, + "SubscriptionName": { + "description": "The name of the subscription.", + "maxLength": 1024, + "minLength": 0, + "pattern": "[\\S\\s]*", + "type": "string" + }, + "Threshold": { + "description": "The dollar value that triggers a notification if the threshold is exceeded. ", + "minimum": 0, + "type": "number" + }, + "ThresholdExpression": { + "description": "An Expression object in JSON String format used to specify the anomalies that you want to generate alerts for.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/SubscriptionArn", + "/properties/AccountId", + "/properties/Subscribers/*/Status" + ], + "required": [ + "MonitorArnList", + "Subscribers", + "Frequency", + "SubscriptionName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ce:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/ResourceTags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::CE::AnomalySubscription" +} diff --git a/src/schema/aws-ce-costcategory.json b/src/schema/aws-ce-costcategory.json index 18cddd65..29987426 100644 --- a/src/schema/aws-ce-costcategory.json +++ b/src/schema/aws-ce-costcategory.json @@ -1,92 +1,142 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "ZonedDateTime": { - "description": "ISO 8601 date time with offset format", - "maxLength": 25, - "minLength": 20, - "pattern": "^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(([+-]\\d\\d:\\d\\d)|Z)$", - "type": "string" - } - }, - "description": "Cost Category enables you to map your cost and usage into meaningful categories. You can use Cost Category to organize your costs using a rule-based engine.", - "handlers": { - "create": { - "permissions": [ - "ce:CreateCostCategoryDefinition" - ] - }, - "delete": { - "permissions": [ - "ce:DeleteCostCategoryDefinition" - ] - }, - "list": { - "permissions": [ - "ce:ListCostCategoryDefinitions" - ] - }, - "read": { - "permissions": [ - "ce:DescribeCostCategoryDefinition" - ] - }, - "update": { - "permissions": [ - "ce:UpdateCostCategoryDefinition" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Cost category ARN", - "pattern": "^arn:aws[-a-z0-9]*:[a-z0-9]+:[-a-z0-9]*:[0-9]{12}:[-a-zA-Z0-9/:_]+$", - "type": "string" - }, - "DefaultValue": { - "description": "The default value for the cost category", - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "EffectiveStart": { - "$ref": "#/definitions/ZonedDateTime" - }, - "Name": { - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "RuleVersion": { - "enum": [ - "CostCategoryExpression.v1" - ], - "type": "string" - }, - "Rules": { - "description": "JSON array format of Expression in Billing and Cost Management API", - "type": "string" - }, - "SplitChargeRules": { - "description": "Json array format of CostCategorySplitChargeRule in Billing and Cost Management API", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/EffectiveStart" - ], - "required": [ - "Name", - "RuleVersion", - "Rules" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cost-explorer.git", - "typeName": "AWS::CE::CostCategory" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "ResourceTag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name for the tag.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:).*$", + "type": "string" + }, + "Value": { + "description": "The value for the tag.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "ZonedDateTime": { + "description": "ISO 8601 date time with offset format", + "maxLength": 25, + "minLength": 20, + "pattern": "^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(([+-]\\d\\d:\\d\\d)|Z)$", + "type": "string" + } + }, + "description": "Resource Type definition for AWS::CE::CostCategory. Cost Category enables you to map your cost and usage into meaningful categories. You can use Cost Category to organize your costs using a rule-based engine.", + "handlers": { + "create": { + "permissions": [ + "ce:CreateCostCategoryDefinition", + "ce:TagResource" + ] + }, + "delete": { + "permissions": [ + "ce:DeleteCostCategoryDefinition" + ] + }, + "list": { + "permissions": [ + "ce:ListCostCategoryDefinitions" + ] + }, + "read": { + "permissions": [ + "ce:DescribeCostCategoryDefinition", + "ce:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ce:UpdateCostCategoryDefinition", + "ce:TagResource", + "ce:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Cost category ARN", + "pattern": "^arn:aws[-a-z0-9]*:[a-z0-9]+:[-a-z0-9]*:[0-9]{12}:[-a-zA-Z0-9/:_]+$", + "type": "string" + }, + "DefaultValue": { + "description": "The default value for the cost category", + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "EffectiveStart": { + "$ref": "#/definitions/ZonedDateTime" + }, + "Name": { + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "RuleVersion": { + "enum": [ + "CostCategoryExpression.v1" + ], + "type": "string" + }, + "Rules": { + "description": "JSON array format of Expression in Billing and Cost Management API", + "type": "string" + }, + "SplitChargeRules": { + "description": "Json array format of CostCategorySplitChargeRule in Billing and Cost Management API", + "type": "string" + }, + "Tags": { + "description": "Tags to assign to the cost category.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourceTag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/EffectiveStart" + ], + "required": [ + "Name", + "RuleVersion", + "Rules" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cost-explorer.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ce:TagResource", + "ce:UntagResource", + "ce:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CE::CostCategory" +} diff --git a/src/schema/aws-certificatemanager-account.json b/src/schema/aws-certificatemanager-account.json index 6dfa9dd2..5668a321 100644 --- a/src/schema/aws-certificatemanager-account.json +++ b/src/schema/aws-certificatemanager-account.json @@ -1,63 +1,63 @@ -{ - "additionalProperties": false, - "definitions": { - "AccountId": { - "type": "string" - }, - "ExpiryEventsConfiguration": { - "additionalProperties": false, - "properties": { - "DaysBeforeExpiry": { - "maximum": 45, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::CertificateManager::Account.", - "handlers": { - "create": { - "permissions": [ - "acm:GetAccountConfiguration", - "acm:PutAccountConfiguration" - ] - }, - "delete": { - "permissions": [ - "acm:GetAccountConfiguration", - "acm:PutAccountConfiguration" - ] - }, - "read": { - "permissions": [ - "acm:GetAccountConfiguration" - ] - }, - "update": { - "permissions": [ - "acm:GetAccountConfiguration", - "acm:PutAccountConfiguration" - ] - } - }, - "primaryIdentifier": [ - "/properties/AccountId" - ], - "properties": { - "AccountId": { - "$ref": "#/definitions/AccountId" - }, - "ExpiryEventsConfiguration": { - "$ref": "#/definitions/ExpiryEventsConfiguration" - } - }, - "readOnlyProperties": [ - "/properties/AccountId" - ], - "required": [ - "ExpiryEventsConfiguration" - ], - "typeName": "AWS::CertificateManager::Account" -} +{ + "additionalProperties": false, + "definitions": { + "AccountId": { + "type": "string" + }, + "ExpiryEventsConfiguration": { + "additionalProperties": false, + "properties": { + "DaysBeforeExpiry": { + "maximum": 45, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::CertificateManager::Account.", + "handlers": { + "create": { + "permissions": [ + "acm:GetAccountConfiguration", + "acm:PutAccountConfiguration" + ] + }, + "delete": { + "permissions": [ + "acm:GetAccountConfiguration", + "acm:PutAccountConfiguration" + ] + }, + "read": { + "permissions": [ + "acm:GetAccountConfiguration" + ] + }, + "update": { + "permissions": [ + "acm:GetAccountConfiguration", + "acm:PutAccountConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccountId" + ], + "properties": { + "AccountId": { + "$ref": "#/definitions/AccountId" + }, + "ExpiryEventsConfiguration": { + "$ref": "#/definitions/ExpiryEventsConfiguration" + } + }, + "readOnlyProperties": [ + "/properties/AccountId" + ], + "required": [ + "ExpiryEventsConfiguration" + ], + "typeName": "AWS::CertificateManager::Account" +} diff --git a/src/schema/aws-certificatemanager-certificate.json b/src/schema/aws-certificatemanager-certificate.json index 4dfb149b..0150d915 100644 --- a/src/schema/aws-certificatemanager-certificate.json +++ b/src/schema/aws-certificatemanager-certificate.json @@ -1,99 +1,99 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SubjectAlternativeNames", - "/properties/DomainValidationOptions", - "/properties/ValidationMethod", - "/properties/KeyAlgorithm", - "/properties/DomainName", - "/properties/CertificateAuthorityArn" - ], - "definitions": { - "DomainValidationOption": { - "additionalProperties": false, - "properties": { - "DomainName": { - "type": "string" - }, - "HostedZoneId": { - "type": "string" - }, - "ValidationDomain": { - "type": "string" - } - }, - "required": [ - "DomainName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CertificateManager::Certificate", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CertificateAuthorityArn": { - "type": "string" - }, - "CertificateTransparencyLoggingPreference": { - "type": "string" - }, - "DomainName": { - "type": "string" - }, - "DomainValidationOptions": { - "items": { - "$ref": "#/definitions/DomainValidationOption" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "type": "string" - }, - "KeyAlgorithm": { - "type": "string" - }, - "SubjectAlternativeNames": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "ValidationMethod": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "DomainName" - ], - "typeName": "AWS::CertificateManager::Certificate" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubjectAlternativeNames", + "/properties/DomainValidationOptions", + "/properties/ValidationMethod", + "/properties/KeyAlgorithm", + "/properties/DomainName", + "/properties/CertificateAuthorityArn" + ], + "definitions": { + "DomainValidationOption": { + "additionalProperties": false, + "properties": { + "DomainName": { + "type": "string" + }, + "HostedZoneId": { + "type": "string" + }, + "ValidationDomain": { + "type": "string" + } + }, + "required": [ + "DomainName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::CertificateManager::Certificate", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CertificateAuthorityArn": { + "type": "string" + }, + "CertificateTransparencyLoggingPreference": { + "type": "string" + }, + "DomainName": { + "type": "string" + }, + "DomainValidationOptions": { + "items": { + "$ref": "#/definitions/DomainValidationOption" + }, + "type": "array", + "uniqueItems": true + }, + "Id": { + "type": "string" + }, + "KeyAlgorithm": { + "type": "string" + }, + "SubjectAlternativeNames": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "ValidationMethod": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "DomainName" + ], + "typeName": "AWS::CertificateManager::Certificate" +} diff --git a/src/schema/aws-chatbot-customaction.json b/src/schema/aws-chatbot-customaction.json new file mode 100644 index 00000000..6b9288f5 --- /dev/null +++ b/src/schema/aws-chatbot-customaction.json @@ -0,0 +1,209 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ActionName" + ], + "definitions": { + "CustomActionAttachment": { + "additionalProperties": false, + "properties": { + "ButtonText": { + "maxLength": 50, + "minLength": 1, + "pattern": "^[\\S\\s]+$", + "type": "string" + }, + "Criteria": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomActionAttachmentCriteria" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "NotificationType": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "Variables": { + "$ref": "#/definitions/CustomActionAttachmentVariables" + } + }, + "type": "object" + }, + "CustomActionAttachmentCriteria": { + "additionalProperties": false, + "properties": { + "Operator": { + "$ref": "#/definitions/CustomActionAttachmentCriteriaOperator" + }, + "Value": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "VariableName": { + "type": "string" + } + }, + "required": [ + "Operator", + "VariableName" + ], + "type": "object" + }, + "CustomActionAttachmentCriteriaOperator": { + "enum": [ + "HAS_VALUE", + "EQUALS" + ], + "type": "string" + }, + "CustomActionAttachmentVariables": { + "additionalProperties": false, + "maxProperties": 5, + "minProperties": 1, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "CustomActionDefinition": { + "additionalProperties": false, + "properties": { + "CommandText": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "CommandText" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Chatbot::CustomAction Resource Type", + "handlers": { + "create": { + "permissions": [ + "chatbot:CreateCustomAction", + "chatbot:GetCustomAction", + "chatbot:TagResource", + "chatbot:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "chatbot:DeleteCustomAction" + ] + }, + "list": { + "permissions": [ + "chatbot:ListCustomActions" + ] + }, + "read": { + "permissions": [ + "chatbot:GetCustomAction", + "chatbot:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "chatbot:UpdateCustomAction", + "chatbot:GetCustomAction", + "chatbot:TagResource", + "chatbot:UntagResource", + "chatbot:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/CustomActionArn" + ], + "properties": { + "ActionName": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]{1,64}$", + "type": "string" + }, + "AliasName": { + "maxLength": 30, + "minLength": 1, + "pattern": "^[A-Za-z0-9-_]+$", + "type": "string" + }, + "Attachments": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomActionAttachment" + }, + "type": "array" + }, + "CustomActionArn": { + "maxLength": 1011, + "minLength": 1, + "pattern": "^arn:(aws[a-zA-Z-]*)?:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$", + "type": "string" + }, + "Definition": { + "$ref": "#/definitions/CustomActionDefinition" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/CustomActionArn" + ], + "required": [ + "ActionName", + "Definition" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "chatbot:TagResource", + "chatbot:ListTagsForResource", + "chatbot:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Chatbot::CustomAction" +} diff --git a/src/schema/aws-chatbot-microsoftteamschannelconfiguration.json b/src/schema/aws-chatbot-microsoftteamschannelconfiguration.json index 824630b9..eeb1de08 100644 --- a/src/schema/aws-chatbot-microsoftteamschannelconfiguration.json +++ b/src/schema/aws-chatbot-microsoftteamschannelconfiguration.json @@ -1,162 +1,192 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TeamId", - "/properties/TeamsTenantId", - "/properties/ConfigurationName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::Chatbot::MicrosoftTeamsChannelConfiguration.", - "handlers": { - "create": { - "permissions": [ - "chatbot:CreateMicrosoftTeamsChannelConfiguration", - "chatbot:TagResource", - "iam:PassRole", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "chatbot:GetMicrosoftTeamsChannelConfiguration", - "chatbot:DeleteMicrosoftTeamsChannelConfiguration" - ] - }, - "list": { - "permissions": [ - "chatbot:ListMicrosoftTeamsChannelConfigurations" - ] - }, - "read": { - "permissions": [ - "chatbot:GetMicrosoftTeamsChannelConfiguration" - ] - }, - "update": { - "permissions": [ - "chatbot:UpdateMicrosoftTeamsChannelConfiguration", - "chatbot:TagResource", - "chatbot:UntagResource", - "chatbot:ListTagsForResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Amazon Resource Name (ARN) of the configuration", - "pattern": "^arn:(aws[a-zA-Z-]*)?:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "ConfigurationName": { - "description": "The name of the configuration", - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9-_]+$", - "type": "string" - }, - "GuardrailPolicies": { - "description": "The list of IAM policy ARNs that are applied as channel guardrails. The AWS managed 'AdministratorAccess' policy is applied as a default if this is not set.", - "insertionOrder": false, - "items": { - "pattern": "^(^$|arn:aws:iam:[A-Za-z0-9_\\/.-]{0,63}:[A-Za-z0-9_\\/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_\\/+=,@.-]{0,1023})$", - "type": "string" - }, - "type": "array" - }, - "IamRoleArn": { - "description": "The ARN of the IAM role that defines the permissions for AWS Chatbot", - "pattern": "^arn:(aws[a-zA-Z-]*)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "LoggingLevel": { - "default": "NONE", - "description": "Specifies the logging level for this configuration:ERROR,INFO or NONE. This property affects the log entries pushed to Amazon CloudWatch logs", - "pattern": "^(ERROR|INFO|NONE)$", - "type": "string" - }, - "SnsTopicArns": { - "description": "ARNs of SNS topics which delivers notifications to AWS Chatbot, for example CloudWatch alarm notifications.", - "insertionOrder": false, - "items": { - "pattern": "^arn:(aws[a-zA-Z-]*)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "type": "array" - }, - "Tags": { - "description": "The tags to add to the configuration", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TeamId": { - "description": "The id of the Microsoft Teams team", - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9A-Fa-f]{8}(?:-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}$", - "type": "string" - }, - "TeamsChannelId": { - "description": "The id of the Microsoft Teams channel", - "maxLength": 256, - "minLength": 1, - "pattern": "^([a-zA-Z0-9-_=+/.,])*%3[aA]([a-zA-Z0-9-_=+/.,])*%40([a-zA-Z0-9-_=+/.,])*$", - "type": "string" - }, - "TeamsTenantId": { - "description": "The id of the Microsoft Teams tenant", - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9A-Fa-f]{8}(?:-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}$", - "type": "string" - }, - "UserRoleRequired": { - "default": false, - "description": "Enables use of a user role requirement in your chat configuration", - "type": "boolean" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "TeamId", - "TeamsChannelId", - "TeamsTenantId", - "ConfigurationName", - "IamRoleArn" - ], - "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-chatbot-microsoftteamschannelconfiguration.html", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Chatbot::MicrosoftTeamsChannelConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TeamId", + "/properties/TeamsTenantId", + "/properties/ConfigurationName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::Chatbot::MicrosoftTeamsChannelConfiguration.", + "handlers": { + "create": { + "permissions": [ + "chatbot:CreateMicrosoftTeamsChannelConfiguration", + "chatbot:TagResource", + "chatbot:AssociateToConfiguration", + "chatbot:ListAssociations", + "iam:PassRole", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "chatbot:GetMicrosoftTeamsChannelConfiguration", + "chatbot:DeleteMicrosoftTeamsChannelConfiguration", + "chatbot:DisassociateFromConfiguration", + "chatbot:ListAssociations" + ] + }, + "list": { + "permissions": [ + "chatbot:ListMicrosoftTeamsChannelConfigurations", + "chatbot:ListAssociations" + ] + }, + "read": { + "permissions": [ + "chatbot:GetMicrosoftTeamsChannelConfiguration", + "chatbot:ListAssociations" + ] + }, + "update": { + "permissions": [ + "chatbot:UpdateMicrosoftTeamsChannelConfiguration", + "chatbot:TagResource", + "chatbot:UntagResource", + "chatbot:ListTagsForResource", + "chatbot:AssociateToConfiguration", + "chatbot:DisassociateFromConfiguration", + "chatbot:ListAssociations", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Amazon Resource Name (ARN) of the configuration", + "pattern": "^arn:(aws[a-zA-Z-]*)?:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", + "type": "string" + }, + "ConfigurationName": { + "description": "The name of the configuration", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9-_]+$", + "type": "string" + }, + "CustomizationResourceArns": { + "description": "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + "insertionOrder": false, + "items": { + "pattern": "^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$", + "type": "string" + }, + "type": "array" + }, + "GuardrailPolicies": { + "description": "The list of IAM policy ARNs that are applied as channel guardrails. The AWS managed 'AdministratorAccess' policy is applied as a default if this is not set.", + "insertionOrder": false, + "items": { + "pattern": "^(^$|arn:aws:iam:[A-Za-z0-9_\\/.-]{0,63}:[A-Za-z0-9_\\/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_\\/+=,@.-]{0,1023})$", + "type": "string" + }, + "type": "array" + }, + "IamRoleArn": { + "description": "The ARN of the IAM role that defines the permissions for AWS Chatbot", + "pattern": "^arn:(aws[a-zA-Z-]*)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", + "type": "string" + }, + "LoggingLevel": { + "default": "NONE", + "description": "Specifies the logging level for this configuration:ERROR,INFO or NONE. This property affects the log entries pushed to Amazon CloudWatch logs", + "pattern": "^(ERROR|INFO|NONE)$", + "type": "string" + }, + "SnsTopicArns": { + "description": "ARNs of SNS topics which delivers notifications to AWS Chatbot, for example CloudWatch alarm notifications.", + "insertionOrder": false, + "items": { + "pattern": "^arn:(aws[a-zA-Z-]*)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", + "type": "string" + }, + "type": "array" + }, + "Tags": { + "description": "The tags to add to the configuration", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TeamId": { + "description": "The id of the Microsoft Teams team", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9A-Fa-f]{8}(?:-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}$", + "type": "string" + }, + "TeamsChannelId": { + "description": "The id of the Microsoft Teams channel", + "maxLength": 256, + "minLength": 1, + "pattern": "^([a-zA-Z0-9-_=+/.,])*%3[aA]([a-zA-Z0-9-_=+/.,])*%40([a-zA-Z0-9-_=+/.,])*$", + "type": "string" + }, + "TeamsChannelName": { + "description": "The name of the Microsoft Teams channel", + "maxLength": 256, + "minLength": 1, + "pattern": "^(.*)$", + "type": "string" + }, + "TeamsTenantId": { + "description": "The id of the Microsoft Teams tenant", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9A-Fa-f]{8}(?:-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}$", + "type": "string" + }, + "UserRoleRequired": { + "default": false, + "description": "Enables use of a user role requirement in your chat configuration", + "type": "boolean" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "TeamId", + "TeamsChannelId", + "TeamsTenantId", + "ConfigurationName", + "IamRoleArn" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-chatbot-microsoftteamschannelconfiguration.html", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "chatbot:TagResource", + "chatbot:ListTagsForResource", + "chatbot:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Chatbot::MicrosoftTeamsChannelConfiguration" +} diff --git a/src/schema/aws-chatbot-slackchannelconfiguration.json b/src/schema/aws-chatbot-slackchannelconfiguration.json index 1aa7f58d..55b6d1fb 100644 --- a/src/schema/aws-chatbot-slackchannelconfiguration.json +++ b/src/schema/aws-chatbot-slackchannelconfiguration.json @@ -1,152 +1,175 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SlackWorkspaceId", - "/properties/ConfigurationName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::Chatbot::SlackChannelConfiguration.", - "handlers": { - "create": { - "permissions": [ - "chatbot:CreateSlackChannelConfiguration", - "chatbot:TagResource", - "iam:PassRole", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "chatbot:DeleteSlackChannelConfiguration" - ] - }, - "list": { - "permissions": [ - "chatbot:DescribeSlackChannelConfigurations" - ] - }, - "read": { - "permissions": [ - "chatbot:DescribeSlackChannelConfigurations" - ] - }, - "update": { - "permissions": [ - "chatbot:UpdateSlackChannelConfiguration", - "chatbot:TagResource", - "chatbot:UntagResource", - "chatbot:ListTagsForResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Amazon Resource Name (ARN) of the configuration", - "pattern": "^arn:(aws[a-zA-Z-]*)?:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "ConfigurationName": { - "description": "The name of the configuration", - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9-_]+$", - "type": "string" - }, - "GuardrailPolicies": { - "description": "The list of IAM policy ARNs that are applied as channel guardrails. The AWS managed 'AdministratorAccess' policy is applied as a default if this is not set.", - "insertionOrder": false, - "items": { - "pattern": "^(^$|arn:aws:iam:[A-Za-z0-9_\\/.-]{0,63}:[A-Za-z0-9_\\/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_\\/+=,@.-]{0,1023})$", - "type": "string" - }, - "type": "array" - }, - "IamRoleArn": { - "description": "The ARN of the IAM role that defines the permissions for AWS Chatbot", - "pattern": "^arn:(aws[a-zA-Z-]*)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "LoggingLevel": { - "default": "NONE", - "description": "Specifies the logging level for this configuration:ERROR,INFO or NONE. This property affects the log entries pushed to Amazon CloudWatch logs", - "pattern": "^(ERROR|INFO|NONE)$", - "type": "string" - }, - "SlackChannelId": { - "description": "The id of the Slack channel", - "maxLength": 256, - "minLength": 1, - "pattern": "^[A-Za-z0-9]+$", - "type": "string" - }, - "SlackWorkspaceId": { - "description": "The id of the Slack workspace", - "maxLength": 256, - "minLength": 1, - "pattern": "^[0-9A-Z]{1,255}$", - "type": "string" - }, - "SnsTopicArns": { - "description": "ARNs of SNS topics which delivers notifications to AWS Chatbot, for example CloudWatch alarm notifications.", - "insertionOrder": false, - "items": { - "pattern": "^arn:(aws[a-zA-Z-]*)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "type": "array" - }, - "Tags": { - "description": "The tags to add to the configuration", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "UserRoleRequired": { - "default": false, - "description": "Enables use of a user role requirement in your chat configuration", - "type": "boolean" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "SlackWorkspaceId", - "SlackChannelId", - "ConfigurationName", - "IamRoleArn" - ], - "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-chatbot-slackchannelconfiguration.html", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Chatbot::SlackChannelConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SlackWorkspaceId", + "/properties/ConfigurationName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::Chatbot::SlackChannelConfiguration.", + "handlers": { + "create": { + "permissions": [ + "chatbot:CreateSlackChannelConfiguration", + "chatbot:TagResource", + "chatbot:AssociateToConfiguration", + "chatbot:ListAssociations", + "iam:PassRole", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "chatbot:DeleteSlackChannelConfiguration", + "chatbot:DisassociateFromConfiguration", + "chatbot:ListAssociations" + ] + }, + "list": { + "permissions": [ + "chatbot:DescribeSlackChannelConfigurations", + "chatbot:ListAssociations" + ] + }, + "read": { + "permissions": [ + "chatbot:DescribeSlackChannelConfigurations", + "chatbot:ListAssociations" + ] + }, + "update": { + "permissions": [ + "chatbot:UpdateSlackChannelConfiguration", + "chatbot:TagResource", + "chatbot:UntagResource", + "chatbot:ListTagsForResource", + "chatbot:AssociateToConfiguration", + "chatbot:DisassociateFromConfiguration", + "chatbot:ListAssociations", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Amazon Resource Name (ARN) of the configuration", + "pattern": "^arn:(aws[a-zA-Z-]*)?:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", + "type": "string" + }, + "ConfigurationName": { + "description": "The name of the configuration", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9-_]+$", + "type": "string" + }, + "CustomizationResourceArns": { + "description": "ARNs of Custom Actions to associate with notifications in the provided chat channel.", + "insertionOrder": false, + "items": { + "pattern": "^arn:aws:chatbot:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:custom-action/[a-zA-Z0-9_-]{1,64}$", + "type": "string" + }, + "type": "array" + }, + "GuardrailPolicies": { + "description": "The list of IAM policy ARNs that are applied as channel guardrails. The AWS managed 'AdministratorAccess' policy is applied as a default if this is not set.", + "insertionOrder": false, + "items": { + "pattern": "^(^$|arn:aws:iam:[A-Za-z0-9_\\/.-]{0,63}:[A-Za-z0-9_\\/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_\\/+=,@.-]{0,1023})$", + "type": "string" + }, + "type": "array" + }, + "IamRoleArn": { + "description": "The ARN of the IAM role that defines the permissions for AWS Chatbot", + "pattern": "^arn:(aws[a-zA-Z-]*)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", + "type": "string" + }, + "LoggingLevel": { + "default": "NONE", + "description": "Specifies the logging level for this configuration:ERROR,INFO or NONE. This property affects the log entries pushed to Amazon CloudWatch logs", + "pattern": "^(ERROR|INFO|NONE)$", + "type": "string" + }, + "SlackChannelId": { + "description": "The id of the Slack channel", + "maxLength": 256, + "minLength": 1, + "pattern": "^[A-Za-z0-9]+$", + "type": "string" + }, + "SlackWorkspaceId": { + "description": "The id of the Slack workspace", + "maxLength": 256, + "minLength": 1, + "pattern": "^[0-9A-Z]{1,255}$", + "type": "string" + }, + "SnsTopicArns": { + "description": "ARNs of SNS topics which delivers notifications to AWS Chatbot, for example CloudWatch alarm notifications.", + "insertionOrder": false, + "items": { + "pattern": "^arn:(aws[a-zA-Z-]*)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", + "type": "string" + }, + "type": "array" + }, + "Tags": { + "description": "The tags to add to the configuration", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "UserRoleRequired": { + "default": false, + "description": "Enables use of a user role requirement in your chat configuration", + "type": "boolean" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "SlackWorkspaceId", + "SlackChannelId", + "ConfigurationName", + "IamRoleArn" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-chatbot-slackchannelconfiguration.html", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "chatbot:TagResource", + "chatbot:ListTagsForResource", + "chatbot:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Chatbot::SlackChannelConfiguration" +} diff --git a/src/schema/aws-cleanrooms-analysistemplate.json b/src/schema/aws-cleanrooms-analysistemplate.json index 64070f78..78e2f476 100644 --- a/src/schema/aws-cleanrooms-analysistemplate.json +++ b/src/schema/aws-cleanrooms-analysistemplate.json @@ -1,285 +1,406 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/MembershipIdentifier", - "/properties/Source", - "/properties/Source/Text", - "/properties/Format", - "/properties/AnalysisParameters", - "/properties/AnalysisParameters/Name", - "/properties/AnalysisParameters/Type", - "/properties/AnalysisParameters/DefaultValue" - ], - "definitions": { - "AnalysisParameter": { - "additionalProperties": false, - "properties": { - "DefaultValue": { - "maxLength": 250, - "minLength": 0, - "type": "string" - }, - "Name": { - "maxLength": 100, - "minLength": 1, - "pattern": "[0-9a-zA-Z_]+", - "type": "string" - }, - "Type": { - "enum": [ - "SMALLINT", - "INTEGER", - "BIGINT", - "DECIMAL", - "REAL", - "DOUBLE_PRECISION", - "BOOLEAN", - "CHAR", - "VARCHAR", - "DATE", - "TIMESTAMP", - "TIMESTAMPTZ", - "TIME", - "TIMETZ", - "VARBYTE", - "BINARY", - "BYTE", - "CHARACTER", - "DOUBLE", - "FLOAT", - "INT", - "LONG", - "NUMERIC", - "SHORT", - "STRING", - "TIMESTAMP_LTZ", - "TIMESTAMP_NTZ", - "TINYINT" - ], - "type": "string" - } - }, - "required": [ - "Name", - "Type" - ], - "type": "object" - }, - "AnalysisSchema": { - "additionalProperties": false, - "properties": { - "ReferencedTables": { - "$ref": "#/definitions/ReferencedTables" - } - }, - "required": [ - "ReferencedTables" - ], - "type": "object" - }, - "AnalysisSource": { - "additionalProperties": false, - "properties": { - "Text": { - "maxLength": 15000, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Text" - ], - "type": "object" - }, - "ReferencedTables": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TableName" - }, - "minItems": 0, - "type": "array" - }, - "TableName": { - "maxLength": 128, - "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Represents a stored analysis within a collaboration", - "handlers": { - "create": { - "permissions": [ - "cleanrooms:CreateAnalysisTemplate", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:GetAnalysisTemplate", - "cleanrooms:ListAnalysisTemplates" - ] - }, - "delete": { - "permissions": [ - "cleanrooms:DeleteAnalysisTemplate", - "cleanrooms:GetAnalysisTemplate", - "cleanrooms:ListAnalysisTemplates", - "cleanrooms:ListTagsForResource", - "cleanrooms:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "MembershipIdentifier": { - "$ref": "resource-schema.json#/properties/MembershipIdentifier" - } - }, - "required": [ - "MembershipIdentifier" - ] - }, - "permissions": [ - "cleanrooms:ListAnalysisTemplates" - ] - }, - "read": { - "permissions": [ - "cleanrooms:GetAnalysisTemplate", - "cleanrooms:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "cleanrooms:UpdateAnalysisTemplate", - "cleanrooms:GetAnalysisTemplate", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AnalysisTemplateIdentifier", - "/properties/MembershipIdentifier" - ], - "properties": { - "AnalysisParameters": { - "description": "The member who can query can provide this placeholder for a literal data value in an analysis template", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AnalysisParameter" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "AnalysisTemplateIdentifier": { - "maxLength": 36, - "minLength": 36, - "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", - "type": "string" - }, - "Arn": { - "maxLength": 200, - "type": "string" - }, - "CollaborationArn": { - "maxLength": 100, - "type": "string" - }, - "CollaborationIdentifier": { - "maxLength": 36, - "minLength": 36, - "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", - "type": "string" - }, - "Description": { - "maxLength": 255, - "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$", - "type": "string" - }, - "Format": { - "enum": [ - "SQL" - ], - "type": "string" - }, - "MembershipArn": { - "maxLength": 100, - "type": "string" - }, - "MembershipIdentifier": { - "maxLength": 36, - "minLength": 36, - "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", - "type": "string" - }, - "Name": { - "maxLength": 128, - "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", - "type": "string" - }, - "Schema": { - "$ref": "#/definitions/AnalysisSchema" - }, - "Source": { - "$ref": "#/definitions/AnalysisSource" - }, - "Tags": { - "description": "An arbitrary set of tags (key-value pairs) for this cleanrooms analysis template.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/CollaborationArn", - "/properties/CollaborationIdentifier", - "/properties/AnalysisTemplateIdentifier", - "/properties/Schema", - "/properties/Arn", - "/properties/MembershipArn" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "Source", - "Format", - "Name", - "MembershipIdentifier" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cleanrooms", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "cleanrooms:ListTagsForResource", - "cleanrooms:UntagResource", - "cleanrooms:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CleanRooms::AnalysisTemplate" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/MembershipIdentifier", + "/properties/Source", + "/properties/Format", + "/properties/AnalysisParameters", + "/properties/Schema" + ], + "definitions": { + "AnalysisParameter": { + "additionalProperties": false, + "properties": { + "DefaultValue": { + "maxLength": 250, + "minLength": 0, + "type": "string" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "[0-9a-zA-Z_]+", + "type": "string" + }, + "Type": { + "enum": [ + "SMALLINT", + "INTEGER", + "BIGINT", + "DECIMAL", + "REAL", + "DOUBLE_PRECISION", + "BOOLEAN", + "CHAR", + "VARCHAR", + "DATE", + "TIMESTAMP", + "TIMESTAMPTZ", + "TIME", + "TIMETZ", + "VARBYTE", + "BINARY", + "BYTE", + "CHARACTER", + "DOUBLE", + "FLOAT", + "INT", + "LONG", + "NUMERIC", + "SHORT", + "STRING", + "TIMESTAMP_LTZ", + "TIMESTAMP_NTZ", + "TINYINT" + ], + "type": "string" + } + }, + "required": [ + "Name", + "Type" + ], + "type": "object" + }, + "AnalysisSchema": { + "additionalProperties": false, + "properties": { + "ReferencedTables": { + "$ref": "#/definitions/ReferencedTables" + } + }, + "required": [ + "ReferencedTables" + ], + "type": "object" + }, + "AnalysisSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Text": { + "maxLength": 90000, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Text" + ], + "title": "Text", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Artifacts": { + "$ref": "#/definitions/AnalysisTemplateArtifacts" + } + }, + "required": [ + "Artifacts" + ], + "title": "Artifacts", + "type": "object" + } + ] + }, + "AnalysisSourceMetadata": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Artifacts": { + "$ref": "#/definitions/AnalysisTemplateArtifactMetadata" + } + }, + "required": [ + "Artifacts" + ], + "title": "Artifacts", + "type": "object" + } + ] + }, + "AnalysisTemplateArtifact": { + "additionalProperties": false, + "properties": { + "Location": { + "$ref": "#/definitions/S3Location" + } + }, + "required": [ + "Location" + ], + "type": "object" + }, + "AnalysisTemplateArtifactMetadata": { + "additionalProperties": false, + "properties": { + "AdditionalArtifactHashes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Hash" + }, + "type": "array" + }, + "EntryPointHash": { + "$ref": "#/definitions/Hash" + } + }, + "required": [ + "EntryPointHash" + ], + "type": "object" + }, + "AnalysisTemplateArtifacts": { + "additionalProperties": false, + "properties": { + "AdditionalArtifacts": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AnalysisTemplateArtifact" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "EntryPoint": { + "$ref": "#/definitions/AnalysisTemplateArtifact" + }, + "RoleArn": { + "maxLength": 512, + "minLength": 32, + "type": "string" + } + }, + "required": [ + "EntryPoint", + "RoleArn" + ], + "type": "object" + }, + "Hash": { + "additionalProperties": false, + "properties": { + "Sha256": { + "type": "string" + } + }, + "type": "object" + }, + "ReferencedTables": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TableName" + }, + "minItems": 0, + "type": "array" + }, + "S3Location": { + "additionalProperties": false, + "properties": { + "Bucket": { + "maxLength": 63, + "minLength": 3, + "type": "string" + }, + "Key": { + "type": "string" + } + }, + "required": [ + "Bucket", + "Key" + ], + "type": "object" + }, + "TableName": { + "maxLength": 128, + "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Represents a stored analysis within a collaboration", + "handlers": { + "create": { + "permissions": [ + "cleanrooms:CreateAnalysisTemplate", + "cleanrooms:ListTagsForResource", + "cleanrooms:TagResource", + "cleanrooms:GetAnalysisTemplate", + "cleanrooms:ListAnalysisTemplates", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "cleanrooms:DeleteAnalysisTemplate", + "cleanrooms:GetAnalysisTemplate", + "cleanrooms:ListAnalysisTemplates", + "cleanrooms:ListTagsForResource", + "cleanrooms:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "MembershipIdentifier": { + "$ref": "resource-schema.json#/properties/MembershipIdentifier" + } + }, + "required": [ + "MembershipIdentifier" + ] + }, + "permissions": [ + "cleanrooms:ListAnalysisTemplates" + ] + }, + "read": { + "permissions": [ + "cleanrooms:GetAnalysisTemplate", + "cleanrooms:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "cleanrooms:UpdateAnalysisTemplate", + "cleanrooms:GetAnalysisTemplate", + "cleanrooms:ListTagsForResource", + "cleanrooms:TagResource", + "cleanrooms:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AnalysisTemplateIdentifier", + "/properties/MembershipIdentifier" + ], + "properties": { + "AnalysisParameters": { + "description": "The member who can query can provide this placeholder for a literal data value in an analysis template", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AnalysisParameter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "AnalysisTemplateIdentifier": { + "maxLength": 36, + "minLength": 36, + "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + "type": "string" + }, + "Arn": { + "maxLength": 200, + "type": "string" + }, + "CollaborationArn": { + "maxLength": 100, + "type": "string" + }, + "CollaborationIdentifier": { + "maxLength": 36, + "minLength": 36, + "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + "type": "string" + }, + "Description": { + "maxLength": 255, + "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$", + "type": "string" + }, + "Format": { + "enum": [ + "SQL", + "PYSPARK_1_0" + ], + "type": "string" + }, + "MembershipArn": { + "maxLength": 100, + "type": "string" + }, + "MembershipIdentifier": { + "maxLength": 36, + "minLength": 36, + "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + "type": "string" + }, + "Name": { + "maxLength": 128, + "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", + "type": "string" + }, + "Schema": { + "$ref": "#/definitions/AnalysisSchema" + }, + "Source": { + "$ref": "#/definitions/AnalysisSource" + }, + "SourceMetadata": { + "$ref": "#/definitions/AnalysisSourceMetadata" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this cleanrooms analysis template.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/CollaborationArn", + "/properties/CollaborationIdentifier", + "/properties/AnalysisTemplateIdentifier", + "/properties/Arn", + "/properties/MembershipArn" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "Source", + "Format", + "Name", + "MembershipIdentifier" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cleanrooms", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "cleanrooms:ListTagsForResource", + "cleanrooms:UntagResource", + "cleanrooms:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CleanRooms::AnalysisTemplate" +} diff --git a/src/schema/aws-cleanrooms-collaboration.json b/src/schema/aws-cleanrooms-collaboration.json index 6c3bdb84..b3deea3d 100644 --- a/src/schema/aws-cleanrooms-collaboration.json +++ b/src/schema/aws-cleanrooms-collaboration.json @@ -1,282 +1,387 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CreatorDisplayName", - "/properties/CreatorMemberAbilities", - "/properties/DataEncryptionMetadata", - "/properties/QueryLogStatus", - "/properties/Members", - "/properties/CreatorPaymentConfiguration", - "/properties/AnalyticsEngine" - ], - "definitions": { - "AnalyticsEngine": { - "enum": [ - "CLEAN_ROOMS_SQL", - "SPARK" - ], - "type": "string" - }, - "CollaborationQueryLogStatus": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "DataEncryptionMetadata": { - "additionalProperties": false, - "properties": { - "AllowCleartext": { - "type": "boolean" - }, - "AllowDuplicates": { - "type": "boolean" - }, - "AllowJoinsOnColumnsWithDifferentNames": { - "type": "boolean" - }, - "PreserveNulls": { - "type": "boolean" - } - }, - "required": [ - "AllowCleartext", - "AllowDuplicates", - "AllowJoinsOnColumnsWithDifferentNames", - "PreserveNulls" - ], - "type": "object" - }, - "MemberAbilities": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MemberAbility" - }, - "type": "array", - "uniqueItems": true - }, - "MemberAbility": { - "enum": [ - "CAN_QUERY", - "CAN_RECEIVE_RESULTS" - ], - "type": "string" - }, - "MemberSpecification": { - "additionalProperties": false, - "properties": { - "AccountId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^\\d+$", - "type": "string" - }, - "DisplayName": { - "$ref": "#/definitions/Name" - }, - "MemberAbilities": { - "$ref": "#/definitions/MemberAbilities" - }, - "PaymentConfiguration": { - "$ref": "#/definitions/PaymentConfiguration" - } - }, - "required": [ - "AccountId", - "DisplayName", - "MemberAbilities" - ], - "type": "object" - }, - "MemberStatus": { - "enum": [ - "INVITED", - "ACTIVE", - "LEFT", - "REMOVED" - ], - "type": "string" - }, - "Name": { - "maxLength": 100, - "minLength": 1, - "pattern": "^(?!\\s*$)[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t]*$", - "type": "string" - }, - "PaymentConfiguration": { - "additionalProperties": false, - "properties": { - "QueryCompute": { - "$ref": "#/definitions/QueryComputePaymentConfig" - } - }, - "required": [ - "QueryCompute" - ], - "type": "object" - }, - "QueryComputePaymentConfig": { - "additionalProperties": false, - "properties": { - "IsResponsible": { - "type": "boolean" - } - }, - "required": [ - "IsResponsible" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Represents a collaboration between AWS accounts that allows for secure data collaboration", - "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cleanrooms-collaboration.html", - "handlers": { - "create": { - "permissions": [ - "cleanrooms:CreateCollaboration", - "cleanrooms:GetCollaboration", - "cleanrooms:ListMembers", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:GetCollaboration", - "cleanrooms:ListCollaborations" - ] - }, - "delete": { - "permissions": [ - "cleanrooms:DeleteCollaboration", - "cleanrooms:GetCollaboration", - "cleanrooms:ListTagsForResource", - "cleanrooms:UntagResource", - "cleanrooms:ListMembers", - "cleanrooms:ListCollaborations" - ] - }, - "list": { - "permissions": [ - "cleanrooms:ListCollaborations" - ] - }, - "read": { - "permissions": [ - "cleanrooms:GetCollaboration", - "cleanrooms:ListMembers", - "cleanrooms:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "cleanrooms:UpdateCollaboration", - "cleanrooms:GetCollaboration", - "cleanrooms:ListMembers", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/CollaborationIdentifier" - ], - "properties": { - "AnalyticsEngine": { - "$ref": "#/definitions/AnalyticsEngine" - }, - "Arn": { - "maxLength": 100, - "type": "string" - }, - "CollaborationIdentifier": { - "maxLength": 36, - "minLength": 36, - "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", - "type": "string" - }, - "CreatorDisplayName": { - "$ref": "#/definitions/Name" - }, - "CreatorMemberAbilities": { - "$ref": "#/definitions/MemberAbilities" - }, - "CreatorPaymentConfiguration": { - "$ref": "#/definitions/PaymentConfiguration" - }, - "DataEncryptionMetadata": { - "$ref": "#/definitions/DataEncryptionMetadata" - }, - "Description": { - "maxLength": 255, - "minLength": 1, - "pattern": "^(?!\\s*$)[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$", - "type": "string" - }, - "Members": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MemberSpecification" - }, - "maxItems": 9, - "minItems": 0, - "type": "array" - }, - "Name": { - "maxLength": 100, - "minLength": 1, - "pattern": "^(?!\\s*$)[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t]*$", - "type": "string" - }, - "QueryLogStatus": { - "$ref": "#/definitions/CollaborationQueryLogStatus" - }, - "Tags": { - "description": "An arbitrary set of tags (key-value pairs) for this cleanrooms collaboration.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CollaborationIdentifier" - ], - "required": [ - "CreatorDisplayName", - "CreatorMemberAbilities", - "Members", - "Name", - "Description", - "QueryLogStatus" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CleanRooms::Collaboration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CreatorDisplayName", + "/properties/CreatorMemberAbilities", + "/properties/CreatorMLMemberAbilities", + "/properties/DataEncryptionMetadata", + "/properties/JobLogStatus", + "/properties/QueryLogStatus", + "/properties/Members", + "/properties/CreatorPaymentConfiguration", + "/properties/AnalyticsEngine" + ], + "definitions": { + "AnalyticsEngine": { + "enum": [ + "CLEAN_ROOMS_SQL", + "SPARK" + ], + "type": "string" + }, + "CollaborationJobLogStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "CollaborationQueryLogStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "CustomMLMemberAbilities": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomMLMemberAbility" + }, + "type": "array", + "uniqueItems": true + }, + "CustomMLMemberAbility": { + "enum": [ + "CAN_RECEIVE_MODEL_OUTPUT", + "CAN_RECEIVE_INFERENCE_OUTPUT" + ], + "type": "string" + }, + "DataEncryptionMetadata": { + "additionalProperties": false, + "properties": { + "AllowCleartext": { + "type": "boolean" + }, + "AllowDuplicates": { + "type": "boolean" + }, + "AllowJoinsOnColumnsWithDifferentNames": { + "type": "boolean" + }, + "PreserveNulls": { + "type": "boolean" + } + }, + "required": [ + "AllowCleartext", + "AllowDuplicates", + "AllowJoinsOnColumnsWithDifferentNames", + "PreserveNulls" + ], + "type": "object" + }, + "JobComputePaymentConfig": { + "additionalProperties": false, + "properties": { + "IsResponsible": { + "type": "boolean" + } + }, + "required": [ + "IsResponsible" + ], + "type": "object" + }, + "MLMemberAbilities": { + "additionalProperties": false, + "properties": { + "CustomMLMemberAbilities": { + "$ref": "#/definitions/CustomMLMemberAbilities" + } + }, + "required": [ + "CustomMLMemberAbilities" + ], + "type": "object" + }, + "MLPaymentConfig": { + "additionalProperties": false, + "properties": { + "ModelInference": { + "$ref": "#/definitions/ModelInferencePaymentConfig" + }, + "ModelTraining": { + "$ref": "#/definitions/ModelTrainingPaymentConfig" + } + }, + "type": "object" + }, + "MemberAbilities": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MemberAbility" + }, + "type": "array", + "uniqueItems": true + }, + "MemberAbility": { + "enum": [ + "CAN_QUERY", + "CAN_RUN_JOB", + "CAN_RECEIVE_RESULTS" + ], + "type": "string" + }, + "MemberSpecification": { + "additionalProperties": false, + "properties": { + "AccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^\\d+$", + "type": "string" + }, + "DisplayName": { + "$ref": "#/definitions/Name" + }, + "MLMemberAbilities": { + "$ref": "#/definitions/MLMemberAbilities" + }, + "MemberAbilities": { + "$ref": "#/definitions/MemberAbilities" + }, + "PaymentConfiguration": { + "$ref": "#/definitions/PaymentConfiguration" + } + }, + "required": [ + "AccountId", + "DisplayName", + "MemberAbilities" + ], + "type": "object" + }, + "MemberStatus": { + "enum": [ + "INVITED", + "ACTIVE", + "LEFT", + "REMOVED" + ], + "type": "string" + }, + "ModelInferencePaymentConfig": { + "additionalProperties": false, + "properties": { + "IsResponsible": { + "type": "boolean" + } + }, + "required": [ + "IsResponsible" + ], + "type": "object" + }, + "ModelTrainingPaymentConfig": { + "additionalProperties": false, + "properties": { + "IsResponsible": { + "type": "boolean" + } + }, + "required": [ + "IsResponsible" + ], + "type": "object" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^(?!\\s*$)[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t]*$", + "type": "string" + }, + "PaymentConfiguration": { + "additionalProperties": false, + "properties": { + "JobCompute": { + "$ref": "#/definitions/JobComputePaymentConfig" + }, + "MachineLearning": { + "$ref": "#/definitions/MLPaymentConfig" + }, + "QueryCompute": { + "$ref": "#/definitions/QueryComputePaymentConfig" + } + }, + "required": [ + "QueryCompute" + ], + "type": "object" + }, + "QueryComputePaymentConfig": { + "additionalProperties": false, + "properties": { + "IsResponsible": { + "type": "boolean" + } + }, + "required": [ + "IsResponsible" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Represents a collaboration between AWS accounts that allows for secure data collaboration", + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cleanrooms-collaboration.html", + "handlers": { + "create": { + "permissions": [ + "cleanrooms:CreateCollaboration", + "cleanrooms:GetCollaboration", + "cleanrooms:ListMembers", + "cleanrooms:ListTagsForResource", + "cleanrooms:TagResource", + "cleanrooms:GetCollaboration", + "cleanrooms:ListCollaborations" + ] + }, + "delete": { + "permissions": [ + "cleanrooms:DeleteCollaboration", + "cleanrooms:GetCollaboration", + "cleanrooms:ListTagsForResource", + "cleanrooms:UntagResource", + "cleanrooms:ListMembers", + "cleanrooms:ListCollaborations" + ] + }, + "list": { + "permissions": [ + "cleanrooms:ListCollaborations" + ] + }, + "read": { + "permissions": [ + "cleanrooms:GetCollaboration", + "cleanrooms:ListMembers", + "cleanrooms:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "cleanrooms:UpdateCollaboration", + "cleanrooms:GetCollaboration", + "cleanrooms:ListMembers", + "cleanrooms:ListTagsForResource", + "cleanrooms:TagResource", + "cleanrooms:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/CollaborationIdentifier" + ], + "properties": { + "AnalyticsEngine": { + "$ref": "#/definitions/AnalyticsEngine" + }, + "Arn": { + "maxLength": 100, + "type": "string" + }, + "CollaborationIdentifier": { + "maxLength": 36, + "minLength": 36, + "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + "type": "string" + }, + "CreatorDisplayName": { + "$ref": "#/definitions/Name" + }, + "CreatorMLMemberAbilities": { + "$ref": "#/definitions/MLMemberAbilities" + }, + "CreatorMemberAbilities": { + "$ref": "#/definitions/MemberAbilities" + }, + "CreatorPaymentConfiguration": { + "$ref": "#/definitions/PaymentConfiguration" + }, + "DataEncryptionMetadata": { + "$ref": "#/definitions/DataEncryptionMetadata" + }, + "Description": { + "maxLength": 255, + "minLength": 1, + "pattern": "^(?!\\s*$)[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$", + "type": "string" + }, + "JobLogStatus": { + "$ref": "#/definitions/CollaborationJobLogStatus" + }, + "Members": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MemberSpecification" + }, + "maxItems": 9, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^(?!\\s*$)[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t]*$", + "type": "string" + }, + "QueryLogStatus": { + "$ref": "#/definitions/CollaborationQueryLogStatus" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this cleanrooms collaboration.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CollaborationIdentifier" + ], + "required": [ + "CreatorDisplayName", + "CreatorMemberAbilities", + "Members", + "Name", + "Description", + "QueryLogStatus" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "cleanrooms:ListTagsForResource", + "cleanrooms:UntagResource", + "cleanrooms:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CleanRooms::Collaboration" +} diff --git a/src/schema/aws-cleanrooms-configuredtable.json b/src/schema/aws-cleanrooms-configuredtable.json index 7c93f411..ef61f01d 100644 --- a/src/schema/aws-cleanrooms-configuredtable.json +++ b/src/schema/aws-cleanrooms-configuredtable.json @@ -1,613 +1,773 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AllowedColumns", - "/properties/AnalysisMethod", - "/properties/TableReference" - ], - "definitions": { - "AdditionalAnalyses": { - "enum": [ - "ALLOWED", - "REQUIRED", - "NOT_ALLOWED" - ], - "type": "string" - }, - "AggregateColumn": { - "additionalProperties": false, - "properties": { - "ColumnNames": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AnalysisRuleColumnName" - }, - "minItems": 1, - "type": "array" - }, - "Function": { - "$ref": "#/definitions/AggregateFunctionName" - } - }, - "required": [ - "ColumnNames", - "Function" - ], - "type": "object" - }, - "AggregateFunctionName": { - "enum": [ - "SUM", - "SUM_DISTINCT", - "COUNT", - "COUNT_DISTINCT", - "AVG" - ], - "type": "string" - }, - "AggregationConstraint": { - "additionalProperties": false, - "properties": { - "ColumnName": { - "$ref": "#/definitions/AnalysisRuleColumnName" - }, - "Minimum": { - "maximum": 100000, - "minimum": 2, - "type": "number" - }, - "Type": { - "$ref": "#/definitions/AggregationType" - } - }, - "required": [ - "ColumnName", - "Minimum", - "Type" - ], - "type": "object" - }, - "AggregationType": { - "enum": [ - "COUNT_DISTINCT" - ], - "type": "string" - }, - "AllowedAnalyses": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AllowedAnalysis" - }, - "minItems": 0, - "type": "array" - }, - "AllowedAnalysis": { - "maxLength": 200, - "minLength": 0, - "pattern": "(ANY_QUERY|arn:[\\w]{3}:cleanrooms:[\\w]{2}-[\\w]{4,9}-[\\d]:[\\d]{12}:membership/[\\d\\w-]+/analysistemplate/[\\d\\w-]+)", - "type": "string" - }, - "AllowedAnalysisProvider": { - "maxLength": 12, - "minLength": 12, - "pattern": "\\d+", - "type": "string" - }, - "AllowedAnalysisProviders": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AllowedAnalysisProvider" - }, - "minItems": 0, - "type": "array" - }, - "AnalysisMethod": { - "enum": [ - "DIRECT_QUERY" - ], - "type": "string" - }, - "AnalysisRule": { - "additionalProperties": false, - "properties": { - "Policy": { - "$ref": "#/definitions/ConfiguredTableAnalysisRulePolicy" - }, - "Type": { - "$ref": "#/definitions/ConfiguredTableAnalysisRuleType" - } - }, - "required": [ - "Type", - "Policy" - ], - "type": "object" - }, - "AnalysisRuleAggregation": { - "additionalProperties": false, - "properties": { - "AdditionalAnalyses": { - "$ref": "#/definitions/AdditionalAnalyses" - }, - "AggregateColumns": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AggregateColumn" - }, - "minItems": 1, - "type": "array" - }, - "AllowedJoinOperators": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/JoinOperator" - }, - "maxItems": 2, - "type": "array" - }, - "DimensionColumns": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AnalysisRuleColumnName" - }, - "type": "array" - }, - "JoinColumns": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AnalysisRuleColumnName" - }, - "type": "array" - }, - "JoinRequired": { - "$ref": "#/definitions/JoinRequiredOption" - }, - "OutputConstraints": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AggregationConstraint" - }, - "minItems": 1, - "type": "array" - }, - "ScalarFunctions": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ScalarFunctions" - }, - "type": "array" - } - }, - "required": [ - "AggregateColumns", - "JoinColumns", - "DimensionColumns", - "ScalarFunctions", - "OutputConstraints" - ], - "type": "object" - }, - "AnalysisRuleColumnName": { - "maxLength": 127, - "minLength": 1, - "pattern": "^[a-z0-9_](([a-z0-9_ ]+-)*([a-z0-9_ ]+))?$", - "type": "string" - }, - "AnalysisRuleCustom": { - "additionalProperties": false, - "properties": { - "AdditionalAnalyses": { - "$ref": "#/definitions/AdditionalAnalyses" - }, - "AllowedAnalyses": { - "$ref": "#/definitions/AllowedAnalyses" - }, - "AllowedAnalysisProviders": { - "$ref": "#/definitions/AllowedAnalysisProviders" - }, - "DifferentialPrivacy": { - "$ref": "#/definitions/DifferentialPrivacy" - }, - "DisallowedOutputColumns": { - "$ref": "#/definitions/DisallowedOutputColumns" - } - }, - "required": [ - "AllowedAnalyses" - ], - "type": "object" - }, - "AnalysisRuleList": { - "additionalProperties": false, - "properties": { - "AdditionalAnalyses": { - "$ref": "#/definitions/AdditionalAnalyses" - }, - "AllowedJoinOperators": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/JoinOperator" - }, - "maxItems": 2, - "type": "array" - }, - "JoinColumns": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AnalysisRuleColumnName" - }, - "minItems": 1, - "type": "array" - }, - "ListColumns": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AnalysisRuleColumnName" - }, - "type": "array" - } - }, - "required": [ - "JoinColumns", - "ListColumns" - ], - "type": "object" - }, - "ConfiguredTableAnalysisRulePolicy": { - "additionalProperties": false, - "properties": { - "V1": { - "$ref": "#/definitions/ConfiguredTableAnalysisRulePolicyV1" - } - }, - "required": [ - "V1" - ], - "title": "V1", - "type": "object" - }, - "ConfiguredTableAnalysisRulePolicyV1": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "List": { - "$ref": "#/definitions/AnalysisRuleList" - } - }, - "required": [ - "List" - ], - "title": "List", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Aggregation": { - "$ref": "#/definitions/AnalysisRuleAggregation" - } - }, - "required": [ - "Aggregation" - ], - "title": "Aggregation", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Custom": { - "$ref": "#/definitions/AnalysisRuleCustom" - } - }, - "required": [ - "Custom" - ], - "title": "Custom", - "type": "object" - } - ] - }, - "ConfiguredTableAnalysisRuleType": { - "enum": [ - "AGGREGATION", - "LIST", - "CUSTOM" - ], - "type": "string" - }, - "DifferentialPrivacy": { - "additionalProperties": false, - "properties": { - "Columns": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DifferentialPrivacyColumn" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Columns" - ], - "type": "object" - }, - "DifferentialPrivacyColumn": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "DisallowedOutputColumns": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AnalysisRuleColumnName" - }, - "minItems": 0, - "type": "array" - }, - "GlueTableReference": { - "additionalProperties": false, - "properties": { - "DatabaseName": { - "maxLength": 128, - "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", - "type": "string" - }, - "TableName": { - "maxLength": 128, - "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", - "type": "string" - } - }, - "required": [ - "DatabaseName", - "TableName" - ], - "type": "object" - }, - "JoinOperator": { - "enum": [ - "OR", - "AND" - ], - "type": "string" - }, - "JoinRequiredOption": { - "enum": [ - "QUERY_RUNNER" - ], - "type": "string" - }, - "ScalarFunctions": { - "enum": [ - "TRUNC", - "ABS", - "CEILING", - "FLOOR", - "LN", - "LOG", - "ROUND", - "SQRT", - "CAST", - "LOWER", - "RTRIM", - "UPPER", - "COALESCE", - "CONVERT", - "CURRENT_DATE", - "DATEADD", - "EXTRACT", - "GETDATE", - "SUBSTRING", - "TO_CHAR", - "TO_DATE", - "TO_NUMBER", - "TO_TIMESTAMP", - "TRIM" - ], - "type": "string" - }, - "TableReference": { - "additionalProperties": false, - "properties": { - "Glue": { - "$ref": "#/definitions/GlueTableReference" - } - }, - "required": [ - "Glue" - ], - "title": "Glue", - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Represents a table that can be associated with collaborations", - "handlers": { - "create": { - "permissions": [ - "cleanrooms:CreateConfiguredTable", - "cleanrooms:DeleteConfiguredTable", - "cleanrooms:DeleteConfiguredTableAnalysisRule", - "cleanrooms:CreateConfiguredTableAnalysisRule", - "cleanrooms:GetConfiguredTable", - "cleanrooms:GetConfiguredTableAnalysisRule", - "glue:GetDatabase", - "glue:GetDatabases", - "glue:GetTable", - "glue:GetTables", - "glue:GetPartition", - "glue:GetPartitions", - "glue:BatchGetPartition", - "glue:GetSchemaVersion", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:ListConfiguredTables" - ] - }, - "delete": { - "permissions": [ - "cleanrooms:DeleteConfiguredTable", - "cleanrooms:GetConfiguredTable", - "cleanrooms:ListConfiguredTables", - "cleanrooms:GetConfiguredTableAnalysisRule", - "cleanrooms:DeleteConfiguredTableAnalysisRule", - "cleanrooms:ListTagsForResource", - "cleanrooms:UntagResource", - "glue:GetDatabase", - "glue:GetDatabases", - "glue:GetTable", - "glue:GetTables", - "glue:GetPartition", - "glue:GetPartitions", - "glue:BatchGetPartition", - "glue:GetSchemaVersion" - ] - }, - "list": { - "permissions": [ - "cleanrooms:ListConfiguredTables" - ] - }, - "read": { - "permissions": [ - "cleanrooms:GetConfiguredTable", - "cleanrooms:GetConfiguredTableAnalysisRule", - "cleanrooms:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "cleanrooms:UpdateConfiguredTable", - "cleanrooms:GetConfiguredTable", - "cleanrooms:CreateConfiguredTableAnalysisRule", - "cleanrooms:UpdateConfiguredTableAnalysisRule", - "cleanrooms:GetConfiguredTableAnalysisRule", - "cleanrooms:DeleteConfiguredTableAnalysisRule", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:UntagResource", - "glue:GetDatabase", - "glue:GetDatabases", - "glue:GetTable", - "glue:GetTables", - "glue:GetPartition", - "glue:GetPartitions", - "glue:BatchGetPartition", - "glue:GetSchemaVersion" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConfiguredTableIdentifier" - ], - "properties": { - "AllowedColumns": { - "insertionOrder": false, - "items": { - "maxLength": 128, - "pattern": "^[a-z0-9_](([a-z0-9_ ]+-)*([a-z0-9_ ]+))?$", - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "AnalysisMethod": { - "$ref": "#/definitions/AnalysisMethod" - }, - "AnalysisRules": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AnalysisRule" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "Arn": { - "maxLength": 100, - "type": "string" - }, - "ConfiguredTableIdentifier": { - "maxLength": 36, - "minLength": 36, - "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", - "type": "string" - }, - "Description": { - "maxLength": 255, - "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$", - "type": "string" - }, - "Name": { - "maxLength": 100, - "minLength": 1, - "pattern": "^(?!\\s*$)[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t]*$", - "type": "string" - }, - "TableReference": { - "$ref": "#/definitions/TableReference" - }, - "Tags": { - "description": "An arbitrary set of tags (key-value pairs) for this cleanrooms collaboration.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/ConfiguredTableIdentifier" - ], - "required": [ - "AllowedColumns", - "AnalysisMethod", - "Name", - "TableReference" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "cleanrooms:ListTagsForResource", - "cleanrooms:UntagResource", - "cleanrooms:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CleanRooms::ConfiguredTable" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AllowedColumns", + "/properties/TableReference" + ], + "definitions": { + "AdditionalAnalyses": { + "enum": [ + "ALLOWED", + "REQUIRED", + "NOT_ALLOWED" + ], + "type": "string" + }, + "AggregateColumn": { + "additionalProperties": false, + "properties": { + "ColumnNames": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AnalysisRuleColumnName" + }, + "minItems": 1, + "type": "array" + }, + "Function": { + "$ref": "#/definitions/AggregateFunctionName" + } + }, + "required": [ + "ColumnNames", + "Function" + ], + "type": "object" + }, + "AggregateFunctionName": { + "enum": [ + "SUM", + "SUM_DISTINCT", + "COUNT", + "COUNT_DISTINCT", + "AVG" + ], + "type": "string" + }, + "AggregationConstraint": { + "additionalProperties": false, + "properties": { + "ColumnName": { + "$ref": "#/definitions/AnalysisRuleColumnName" + }, + "Minimum": { + "maximum": 100000, + "minimum": 2, + "type": "number" + }, + "Type": { + "$ref": "#/definitions/AggregationType" + } + }, + "required": [ + "ColumnName", + "Minimum", + "Type" + ], + "type": "object" + }, + "AggregationType": { + "enum": [ + "COUNT_DISTINCT" + ], + "type": "string" + }, + "AllowedAnalyses": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AllowedAnalysis" + }, + "minItems": 0, + "type": "array" + }, + "AllowedAnalysis": { + "maxLength": 200, + "minLength": 0, + "pattern": "(ANY_QUERY|ANY_JOB|arn:[\\w]{3}:cleanrooms:[\\w]{2}-[\\w]{4,9}-[\\d]:[\\d]{12}:membership/[\\d\\w-]+/analysistemplate/[\\d\\w-]+)", + "type": "string" + }, + "AllowedAnalysisProvider": { + "maxLength": 12, + "minLength": 12, + "pattern": "\\d+", + "type": "string" + }, + "AllowedAnalysisProviders": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AllowedAnalysisProvider" + }, + "minItems": 0, + "type": "array" + }, + "AnalysisMethod": { + "enum": [ + "DIRECT_QUERY", + "DIRECT_JOB", + "MULTIPLE" + ], + "type": "string" + }, + "AnalysisRule": { + "additionalProperties": false, + "properties": { + "Policy": { + "$ref": "#/definitions/ConfiguredTableAnalysisRulePolicy" + }, + "Type": { + "$ref": "#/definitions/ConfiguredTableAnalysisRuleType" + } + }, + "required": [ + "Type", + "Policy" + ], + "type": "object" + }, + "AnalysisRuleAggregation": { + "additionalProperties": false, + "properties": { + "AdditionalAnalyses": { + "$ref": "#/definitions/AdditionalAnalyses" + }, + "AggregateColumns": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AggregateColumn" + }, + "minItems": 1, + "type": "array" + }, + "AllowedJoinOperators": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/JoinOperator" + }, + "maxItems": 2, + "type": "array" + }, + "DimensionColumns": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AnalysisRuleColumnName" + }, + "type": "array" + }, + "JoinColumns": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AnalysisRuleColumnName" + }, + "type": "array" + }, + "JoinRequired": { + "$ref": "#/definitions/JoinRequiredOption" + }, + "OutputConstraints": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AggregationConstraint" + }, + "minItems": 1, + "type": "array" + }, + "ScalarFunctions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ScalarFunctions" + }, + "type": "array" + } + }, + "required": [ + "AggregateColumns", + "JoinColumns", + "DimensionColumns", + "ScalarFunctions", + "OutputConstraints" + ], + "type": "object" + }, + "AnalysisRuleColumnName": { + "maxLength": 127, + "minLength": 1, + "pattern": "^[a-z0-9_](([a-z0-9_ ]+-)*([a-z0-9_ ]+))?$", + "type": "string" + }, + "AnalysisRuleCustom": { + "additionalProperties": false, + "properties": { + "AdditionalAnalyses": { + "$ref": "#/definitions/AdditionalAnalyses" + }, + "AllowedAnalyses": { + "$ref": "#/definitions/AllowedAnalyses" + }, + "AllowedAnalysisProviders": { + "$ref": "#/definitions/AllowedAnalysisProviders" + }, + "DifferentialPrivacy": { + "$ref": "#/definitions/DifferentialPrivacy" + }, + "DisallowedOutputColumns": { + "$ref": "#/definitions/DisallowedOutputColumns" + } + }, + "required": [ + "AllowedAnalyses" + ], + "type": "object" + }, + "AnalysisRuleList": { + "additionalProperties": false, + "properties": { + "AdditionalAnalyses": { + "$ref": "#/definitions/AdditionalAnalyses" + }, + "AllowedJoinOperators": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/JoinOperator" + }, + "maxItems": 2, + "type": "array" + }, + "JoinColumns": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AnalysisRuleColumnName" + }, + "minItems": 1, + "type": "array" + }, + "ListColumns": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AnalysisRuleColumnName" + }, + "type": "array" + } + }, + "required": [ + "JoinColumns", + "ListColumns" + ], + "type": "object" + }, + "AthenaTableReference": { + "additionalProperties": false, + "properties": { + "DatabaseName": { + "maxLength": 128, + "type": "string" + }, + "OutputLocation": { + "maxLength": 1024, + "minLength": 8, + "type": "string" + }, + "TableName": { + "maxLength": 128, + "type": "string" + }, + "WorkGroup": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DatabaseName", + "TableName", + "WorkGroup" + ], + "type": "object" + }, + "ConfiguredTableAnalysisRulePolicy": { + "additionalProperties": false, + "properties": { + "V1": { + "$ref": "#/definitions/ConfiguredTableAnalysisRulePolicyV1" + } + }, + "required": [ + "V1" + ], + "title": "V1", + "type": "object" + }, + "ConfiguredTableAnalysisRulePolicyV1": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "List": { + "$ref": "#/definitions/AnalysisRuleList" + } + }, + "required": [ + "List" + ], + "title": "List", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/AnalysisRuleAggregation" + } + }, + "required": [ + "Aggregation" + ], + "title": "Aggregation", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Custom": { + "$ref": "#/definitions/AnalysisRuleCustom" + } + }, + "required": [ + "Custom" + ], + "title": "Custom", + "type": "object" + } + ] + }, + "ConfiguredTableAnalysisRuleType": { + "enum": [ + "AGGREGATION", + "LIST", + "CUSTOM" + ], + "type": "string" + }, + "DifferentialPrivacy": { + "additionalProperties": false, + "properties": { + "Columns": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DifferentialPrivacyColumn" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Columns" + ], + "type": "object" + }, + "DifferentialPrivacyColumn": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "DisallowedOutputColumns": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AnalysisRuleColumnName" + }, + "minItems": 0, + "type": "array" + }, + "GlueTableReference": { + "additionalProperties": false, + "properties": { + "DatabaseName": { + "maxLength": 128, + "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", + "type": "string" + }, + "TableName": { + "maxLength": 128, + "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", + "type": "string" + } + }, + "required": [ + "DatabaseName", + "TableName" + ], + "type": "object" + }, + "JoinOperator": { + "enum": [ + "OR", + "AND" + ], + "type": "string" + }, + "JoinRequiredOption": { + "enum": [ + "QUERY_RUNNER" + ], + "type": "string" + }, + "ScalarFunctions": { + "enum": [ + "TRUNC", + "ABS", + "CEILING", + "FLOOR", + "LN", + "LOG", + "ROUND", + "SQRT", + "CAST", + "LOWER", + "RTRIM", + "UPPER", + "COALESCE", + "CONVERT", + "CURRENT_DATE", + "DATEADD", + "EXTRACT", + "GETDATE", + "SUBSTRING", + "TO_CHAR", + "TO_DATE", + "TO_NUMBER", + "TO_TIMESTAMP", + "TRIM" + ], + "type": "string" + }, + "SelectedAnalysisMethod": { + "enum": [ + "DIRECT_QUERY", + "DIRECT_JOB" + ], + "type": "string" + }, + "SelectedAnalysisMethods": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SelectedAnalysisMethod" + }, + "type": "array" + }, + "SnowflakeTableReference": { + "additionalProperties": false, + "properties": { + "AccountIdentifier": { + "maxLength": 256, + "minLength": 3, + "type": "string" + }, + "DatabaseName": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "SchemaName": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "SecretArn": { + "maxLength": 256, + "type": "string" + }, + "TableName": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "TableSchema": { + "$ref": "#/definitions/SnowflakeTableSchema" + } + }, + "required": [ + "AccountIdentifier", + "DatabaseName", + "SchemaName", + "SecretArn", + "TableName", + "TableSchema" + ], + "type": "object" + }, + "SnowflakeTableSchema": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "V1": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SnowflakeTableSchemaV1" + }, + "maxItems": 250, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "V1" + ], + "title": "V1", + "type": "object" + } + ] + }, + "SnowflakeTableSchemaV1": { + "additionalProperties": false, + "properties": { + "ColumnName": { + "maxLength": 128, + "type": "string" + }, + "ColumnType": { + "maxLength": 255, + "type": "string" + } + }, + "required": [ + "ColumnName", + "ColumnType" + ], + "type": "object" + }, + "TableReference": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Glue": { + "$ref": "#/definitions/GlueTableReference" + } + }, + "required": [ + "Glue" + ], + "title": "Glue", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Snowflake": { + "$ref": "#/definitions/SnowflakeTableReference" + } + }, + "required": [ + "Snowflake" + ], + "title": "Snowflake", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Athena": { + "$ref": "#/definitions/AthenaTableReference" + } + }, + "required": [ + "Athena" + ], + "title": "Athena", + "type": "object" + } + ] + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Represents a table that can be associated with collaborations", + "handlers": { + "create": { + "permissions": [ + "cleanrooms:CreateConfiguredTable", + "cleanrooms:DeleteConfiguredTable", + "cleanrooms:DeleteConfiguredTableAnalysisRule", + "cleanrooms:CreateConfiguredTableAnalysisRule", + "cleanrooms:GetConfiguredTable", + "cleanrooms:GetConfiguredTableAnalysisRule", + "glue:GetDatabase", + "glue:GetDatabases", + "glue:GetTable", + "glue:GetTables", + "glue:GetPartition", + "glue:GetPartitions", + "glue:BatchGetPartition", + "glue:GetSchemaVersion", + "cleanrooms:ListTagsForResource", + "cleanrooms:TagResource", + "cleanrooms:ListConfiguredTables", + "athena:GetTableMetadata" + ] + }, + "delete": { + "permissions": [ + "cleanrooms:DeleteConfiguredTable", + "cleanrooms:GetConfiguredTable", + "cleanrooms:ListConfiguredTables", + "cleanrooms:GetConfiguredTableAnalysisRule", + "cleanrooms:DeleteConfiguredTableAnalysisRule", + "cleanrooms:ListTagsForResource", + "cleanrooms:UntagResource", + "glue:GetDatabase", + "glue:GetDatabases", + "glue:GetTable", + "glue:GetTables", + "glue:GetPartition", + "glue:GetPartitions", + "glue:BatchGetPartition", + "glue:GetSchemaVersion" + ] + }, + "list": { + "permissions": [ + "cleanrooms:ListConfiguredTables" + ] + }, + "read": { + "permissions": [ + "cleanrooms:GetConfiguredTable", + "cleanrooms:GetConfiguredTableAnalysisRule", + "cleanrooms:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "cleanrooms:UpdateConfiguredTable", + "cleanrooms:GetConfiguredTable", + "cleanrooms:CreateConfiguredTableAnalysisRule", + "cleanrooms:UpdateConfiguredTableAnalysisRule", + "cleanrooms:GetConfiguredTableAnalysisRule", + "cleanrooms:DeleteConfiguredTableAnalysisRule", + "cleanrooms:ListTagsForResource", + "cleanrooms:TagResource", + "cleanrooms:UntagResource", + "glue:GetDatabase", + "glue:GetDatabases", + "glue:GetTable", + "glue:GetTables", + "glue:GetPartition", + "glue:GetPartitions", + "glue:BatchGetPartition", + "glue:GetSchemaVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConfiguredTableIdentifier" + ], + "properties": { + "AllowedColumns": { + "insertionOrder": false, + "items": { + "maxLength": 128, + "pattern": "^[a-z0-9_](([a-z0-9_ ]+-)*([a-z0-9_ ]+))?$", + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "AnalysisMethod": { + "$ref": "#/definitions/AnalysisMethod" + }, + "AnalysisRules": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AnalysisRule" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "Arn": { + "maxLength": 100, + "type": "string" + }, + "ConfiguredTableIdentifier": { + "maxLength": 36, + "minLength": 36, + "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + "type": "string" + }, + "Description": { + "maxLength": 255, + "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$", + "type": "string" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^(?!\\s*$)[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t]*$", + "type": "string" + }, + "SelectedAnalysisMethods": { + "$ref": "#/definitions/SelectedAnalysisMethods" + }, + "TableReference": { + "$ref": "#/definitions/TableReference" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this cleanrooms collaboration.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ConfiguredTableIdentifier" + ], + "required": [ + "AllowedColumns", + "AnalysisMethod", + "Name", + "TableReference" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "cleanrooms:ListTagsForResource", + "cleanrooms:UntagResource", + "cleanrooms:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CleanRooms::ConfiguredTable" +} diff --git a/src/schema/aws-cleanrooms-configuredtableassociation.json b/src/schema/aws-cleanrooms-configuredtableassociation.json index 05133719..979e3b87 100644 --- a/src/schema/aws-cleanrooms-configuredtableassociation.json +++ b/src/schema/aws-cleanrooms-configuredtableassociation.json @@ -1,322 +1,322 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConfiguredTableIdentifier", - "/properties/Name", - "/properties/MembershipIdentifier" - ], - "definitions": { - "AllowedAdditionalAnalyses": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AllowedAdditionalAnalysis" - }, - "maxItems": 25, - "minItems": 0, - "type": "array" - }, - "AllowedAdditionalAnalysis": { - "maxLength": 256, - "type": "string" - }, - "AllowedResultReceiver": { - "maxLength": 12, - "minLength": 12, - "pattern": "\\d+", - "type": "string" - }, - "AllowedResultReceivers": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AllowedResultReceiver" - }, - "minItems": 0, - "type": "array" - }, - "ConfiguredTableAssociationAnalysisRule": { - "additionalProperties": false, - "properties": { - "Policy": { - "$ref": "#/definitions/ConfiguredTableAssociationAnalysisRulePolicy" - }, - "Type": { - "$ref": "#/definitions/ConfiguredTableAssociationAnalysisRuleType" - } - }, - "required": [ - "Type", - "Policy" - ], - "type": "object" - }, - "ConfiguredTableAssociationAnalysisRuleAggregation": { - "additionalProperties": false, - "properties": { - "AllowedAdditionalAnalyses": { - "$ref": "#/definitions/AllowedAdditionalAnalyses" - }, - "AllowedResultReceivers": { - "$ref": "#/definitions/AllowedResultReceivers" - } - }, - "type": "object" - }, - "ConfiguredTableAssociationAnalysisRuleCustom": { - "additionalProperties": false, - "properties": { - "AllowedAdditionalAnalyses": { - "$ref": "#/definitions/AllowedAdditionalAnalyses" - }, - "AllowedResultReceivers": { - "$ref": "#/definitions/AllowedResultReceivers" - } - }, - "type": "object" - }, - "ConfiguredTableAssociationAnalysisRuleList": { - "additionalProperties": false, - "properties": { - "AllowedAdditionalAnalyses": { - "$ref": "#/definitions/AllowedAdditionalAnalyses" - }, - "AllowedResultReceivers": { - "$ref": "#/definitions/AllowedResultReceivers" - } - }, - "type": "object" - }, - "ConfiguredTableAssociationAnalysisRulePolicy": { - "additionalProperties": false, - "properties": { - "V1": { - "$ref": "#/definitions/ConfiguredTableAssociationAnalysisRulePolicyV1" - } - }, - "required": [ - "V1" - ], - "title": "V1", - "type": "object" - }, - "ConfiguredTableAssociationAnalysisRulePolicyV1": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "List": { - "$ref": "#/definitions/ConfiguredTableAssociationAnalysisRuleList" - } - }, - "required": [ - "List" - ], - "title": "List", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Aggregation": { - "$ref": "#/definitions/ConfiguredTableAssociationAnalysisRuleAggregation" - } - }, - "required": [ - "Aggregation" - ], - "title": "Aggregation", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Custom": { - "$ref": "#/definitions/ConfiguredTableAssociationAnalysisRuleCustom" - } - }, - "required": [ - "Custom" - ], - "title": "Custom", - "type": "object" - } - ] - }, - "ConfiguredTableAssociationAnalysisRuleType": { - "enum": [ - "AGGREGATION", - "LIST", - "CUSTOM" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Represents a table that can be queried within a collaboration", - "handlers": { - "create": { - "permissions": [ - "cleanrooms:CreateConfiguredTableAssociation", - "iam:PassRole", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:GetConfiguredTableAssociation", - "cleanrooms:ListConfiguredTableAssociations", - "cleanrooms:DeleteConfiguredTableAssociation", - "cleanrooms:DeleteConfiguredTableAssociationAnalysisRule", - "cleanrooms:CreateConfiguredTableAssociationAnalysisRule", - "cleanrooms:GetConfiguredTableAssociationAnalysisRule" - ] - }, - "delete": { - "permissions": [ - "cleanrooms:DeleteConfiguredTableAssociation", - "cleanrooms:GetConfiguredTableAssociation", - "cleanrooms:ListConfiguredTableAssociations", - "cleanrooms:ListTagsForResource", - "cleanrooms:UntagResource", - "cleanrooms:DeleteConfiguredTableAssociationAnalysisRule", - "cleanrooms:GetConfiguredTableAssociationAnalysisRule" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "MembershipIdentifier": { - "$ref": "resource-schema.json#/properties/MembershipIdentifier" - } - }, - "required": [ - "MembershipIdentifier" - ] - }, - "permissions": [ - "cleanrooms:ListConfiguredTableAssociations" - ] - }, - "read": { - "permissions": [ - "cleanrooms:GetConfiguredTableAssociation", - "cleanrooms:ListTagsForResource", - "cleanrooms:GetConfiguredTableAssociationAnalysisRule" - ] - }, - "update": { - "permissions": [ - "cleanrooms:UpdateConfiguredTableAssociation", - "cleanrooms:GetConfiguredTableAssociation", - "iam:PassRole", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:UntagResource", - "cleanrooms:DeleteConfiguredTableAssociationAnalysisRule", - "cleanrooms:CreateConfiguredTableAssociationAnalysisRule", - "cleanrooms:GetConfiguredTableAssociationAnalysisRule", - "cleanrooms:UpdateConfiguredTableAssociationAnalysisRule" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConfiguredTableAssociationIdentifier", - "/properties/MembershipIdentifier" - ], - "properties": { - "Arn": { - "maxLength": 100, - "type": "string" - }, - "ConfiguredTableAssociationAnalysisRules": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ConfiguredTableAssociationAnalysisRule" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "ConfiguredTableAssociationIdentifier": { - "maxLength": 36, - "minLength": 36, - "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", - "type": "string" - }, - "ConfiguredTableIdentifier": { - "maxLength": 36, - "minLength": 36, - "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", - "type": "string" - }, - "Description": { - "maxLength": 255, - "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$", - "type": "string" - }, - "MembershipIdentifier": { - "maxLength": 36, - "minLength": 36, - "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", - "type": "string" - }, - "Name": { - "maxLength": 128, - "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", - "type": "string" - }, - "RoleArn": { - "maxLength": 512, - "minLength": 32, - "type": "string" - }, - "Tags": { - "description": "An arbitrary set of tags (key-value pairs) for this cleanrooms collaboration.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ConfiguredTableAssociationIdentifier", - "/properties/Arn" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "ConfiguredTableIdentifier", - "Name", - "RoleArn", - "MembershipIdentifier" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cleanrooms", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "cleanrooms:ListTagsForResource", - "cleanrooms:UntagResource", - "cleanrooms:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CleanRooms::ConfiguredTableAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConfiguredTableIdentifier", + "/properties/Name", + "/properties/MembershipIdentifier" + ], + "definitions": { + "AllowedAdditionalAnalyses": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AllowedAdditionalAnalysis" + }, + "maxItems": 25, + "minItems": 0, + "type": "array" + }, + "AllowedAdditionalAnalysis": { + "maxLength": 256, + "type": "string" + }, + "AllowedResultReceiver": { + "maxLength": 12, + "minLength": 12, + "pattern": "\\d+", + "type": "string" + }, + "AllowedResultReceivers": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AllowedResultReceiver" + }, + "minItems": 0, + "type": "array" + }, + "ConfiguredTableAssociationAnalysisRule": { + "additionalProperties": false, + "properties": { + "Policy": { + "$ref": "#/definitions/ConfiguredTableAssociationAnalysisRulePolicy" + }, + "Type": { + "$ref": "#/definitions/ConfiguredTableAssociationAnalysisRuleType" + } + }, + "required": [ + "Type", + "Policy" + ], + "type": "object" + }, + "ConfiguredTableAssociationAnalysisRuleAggregation": { + "additionalProperties": false, + "properties": { + "AllowedAdditionalAnalyses": { + "$ref": "#/definitions/AllowedAdditionalAnalyses" + }, + "AllowedResultReceivers": { + "$ref": "#/definitions/AllowedResultReceivers" + } + }, + "type": "object" + }, + "ConfiguredTableAssociationAnalysisRuleCustom": { + "additionalProperties": false, + "properties": { + "AllowedAdditionalAnalyses": { + "$ref": "#/definitions/AllowedAdditionalAnalyses" + }, + "AllowedResultReceivers": { + "$ref": "#/definitions/AllowedResultReceivers" + } + }, + "type": "object" + }, + "ConfiguredTableAssociationAnalysisRuleList": { + "additionalProperties": false, + "properties": { + "AllowedAdditionalAnalyses": { + "$ref": "#/definitions/AllowedAdditionalAnalyses" + }, + "AllowedResultReceivers": { + "$ref": "#/definitions/AllowedResultReceivers" + } + }, + "type": "object" + }, + "ConfiguredTableAssociationAnalysisRulePolicy": { + "additionalProperties": false, + "properties": { + "V1": { + "$ref": "#/definitions/ConfiguredTableAssociationAnalysisRulePolicyV1" + } + }, + "required": [ + "V1" + ], + "title": "V1", + "type": "object" + }, + "ConfiguredTableAssociationAnalysisRulePolicyV1": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "List": { + "$ref": "#/definitions/ConfiguredTableAssociationAnalysisRuleList" + } + }, + "required": [ + "List" + ], + "title": "List", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/ConfiguredTableAssociationAnalysisRuleAggregation" + } + }, + "required": [ + "Aggregation" + ], + "title": "Aggregation", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Custom": { + "$ref": "#/definitions/ConfiguredTableAssociationAnalysisRuleCustom" + } + }, + "required": [ + "Custom" + ], + "title": "Custom", + "type": "object" + } + ] + }, + "ConfiguredTableAssociationAnalysisRuleType": { + "enum": [ + "AGGREGATION", + "LIST", + "CUSTOM" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Represents a table that can be queried within a collaboration", + "handlers": { + "create": { + "permissions": [ + "cleanrooms:CreateConfiguredTableAssociation", + "iam:PassRole", + "cleanrooms:ListTagsForResource", + "cleanrooms:TagResource", + "cleanrooms:GetConfiguredTableAssociation", + "cleanrooms:ListConfiguredTableAssociations", + "cleanrooms:DeleteConfiguredTableAssociation", + "cleanrooms:DeleteConfiguredTableAssociationAnalysisRule", + "cleanrooms:CreateConfiguredTableAssociationAnalysisRule", + "cleanrooms:GetConfiguredTableAssociationAnalysisRule" + ] + }, + "delete": { + "permissions": [ + "cleanrooms:DeleteConfiguredTableAssociation", + "cleanrooms:GetConfiguredTableAssociation", + "cleanrooms:ListConfiguredTableAssociations", + "cleanrooms:ListTagsForResource", + "cleanrooms:UntagResource", + "cleanrooms:DeleteConfiguredTableAssociationAnalysisRule", + "cleanrooms:GetConfiguredTableAssociationAnalysisRule" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "MembershipIdentifier": { + "$ref": "resource-schema.json#/properties/MembershipIdentifier" + } + }, + "required": [ + "MembershipIdentifier" + ] + }, + "permissions": [ + "cleanrooms:ListConfiguredTableAssociations" + ] + }, + "read": { + "permissions": [ + "cleanrooms:GetConfiguredTableAssociation", + "cleanrooms:ListTagsForResource", + "cleanrooms:GetConfiguredTableAssociationAnalysisRule" + ] + }, + "update": { + "permissions": [ + "cleanrooms:UpdateConfiguredTableAssociation", + "cleanrooms:GetConfiguredTableAssociation", + "iam:PassRole", + "cleanrooms:ListTagsForResource", + "cleanrooms:TagResource", + "cleanrooms:UntagResource", + "cleanrooms:DeleteConfiguredTableAssociationAnalysisRule", + "cleanrooms:CreateConfiguredTableAssociationAnalysisRule", + "cleanrooms:GetConfiguredTableAssociationAnalysisRule", + "cleanrooms:UpdateConfiguredTableAssociationAnalysisRule" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConfiguredTableAssociationIdentifier", + "/properties/MembershipIdentifier" + ], + "properties": { + "Arn": { + "maxLength": 256, + "type": "string" + }, + "ConfiguredTableAssociationAnalysisRules": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ConfiguredTableAssociationAnalysisRule" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "ConfiguredTableAssociationIdentifier": { + "maxLength": 36, + "minLength": 36, + "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + "type": "string" + }, + "ConfiguredTableIdentifier": { + "maxLength": 36, + "minLength": 36, + "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + "type": "string" + }, + "Description": { + "maxLength": 255, + "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$", + "type": "string" + }, + "MembershipIdentifier": { + "maxLength": 36, + "minLength": 36, + "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + "type": "string" + }, + "Name": { + "maxLength": 128, + "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", + "type": "string" + }, + "RoleArn": { + "maxLength": 512, + "minLength": 32, + "type": "string" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this cleanrooms collaboration.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ConfiguredTableAssociationIdentifier", + "/properties/Arn" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "ConfiguredTableIdentifier", + "Name", + "RoleArn", + "MembershipIdentifier" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cleanrooms", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "cleanrooms:ListTagsForResource", + "cleanrooms:UntagResource", + "cleanrooms:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CleanRooms::ConfiguredTableAssociation" +} diff --git a/src/schema/aws-cleanrooms-idmappingtable.json b/src/schema/aws-cleanrooms-idmappingtable.json index 65d54180..23c57e09 100644 --- a/src/schema/aws-cleanrooms-idmappingtable.json +++ b/src/schema/aws-cleanrooms-idmappingtable.json @@ -1,241 +1,241 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MembershipIdentifier", - "/properties/Name", - "/properties/InputReferenceConfig" - ], - "definitions": { - "IdMappingTableInputReferenceConfig": { - "additionalProperties": false, - "properties": { - "InputReferenceArn": { - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "ManageResourcePolicies": { - "type": "boolean" - } - }, - "required": [ - "InputReferenceArn", - "ManageResourcePolicies" - ], - "type": "object" - }, - "IdMappingTableInputReferenceProperties": { - "additionalProperties": false, - "properties": { - "IdMappingTableInputSource": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/IdMappingTableInputSource" - }, - "maxItems": 2, - "minItems": 2, - "type": "array" - } - }, - "required": [ - "IdMappingTableInputSource" - ], - "type": "object" - }, - "IdMappingTableInputSource": { - "additionalProperties": false, - "properties": { - "IdNamespaceAssociationId": { - "type": "string" - }, - "Type": { - "enum": [ - "SOURCE", - "TARGET" - ], - "type": "string" - } - }, - "required": [ - "IdNamespaceAssociationId", - "Type" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UUID": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - } - }, - "description": "Represents an association between an ID mapping workflow and a collaboration", - "handlers": { - "create": { - "permissions": [ - "cleanrooms:CreateIdMappingTable", - "cleanrooms:GetIdMappingTable", - "cleanrooms:ListIdMappingTables", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:GetMembership", - "cleanrooms:GetCollaboration", - "entityresolution:GetIdMappingWorkflow", - "entityresolution:AddPolicyStatement" - ] - }, - "delete": { - "permissions": [ - "cleanrooms:DeleteIdMappingTable", - "cleanrooms:GetIdMappingTable", - "cleanrooms:ListIdMappingTables", - "cleanrooms:GetMembership", - "cleanrooms:ListTagsForResource", - "cleanrooms:UntagResource", - "entityresolution:GetIdMappingWorkflow", - "entityresolution:AddPolicyStatement", - "entityresolution:DeletePolicyStatement" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "MembershipIdentifier": { - "$ref": "resource-schema.json#/properties/MembershipIdentifier" - } - }, - "required": [ - "MembershipIdentifier" - ] - }, - "permissions": [ - "cleanrooms:ListIdMappingTables", - "cleanrooms:GetMembership", - "cleanrooms:GetCollaboration" - ] - }, - "read": { - "permissions": [ - "cleanrooms:GetIdMappingTable", - "cleanrooms:ListTagsForResource", - "cleanrooms:GetMembership", - "cleanrooms:GetCollaboration" - ] - }, - "update": { - "permissions": [ - "cleanrooms:UpdateIdMappingTable", - "cleanrooms:GetIdMappingTable", - "cleanrooms:GetMembership", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:UntagResource", - "entityresolution:GetIdMappingWorkflow", - "entityresolution:AddPolicyStatement" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdMappingTableIdentifier", - "/properties/MembershipIdentifier" - ], - "properties": { - "Arn": { - "maxLength": 200, - "type": "string" - }, - "CollaborationArn": { - "maxLength": 100, - "type": "string" - }, - "CollaborationIdentifier": { - "$ref": "#/definitions/UUID" - }, - "Description": { - "maxLength": 255, - "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$", - "type": "string" - }, - "IdMappingTableIdentifier": { - "$ref": "#/definitions/UUID" - }, - "InputReferenceConfig": { - "$ref": "#/definitions/IdMappingTableInputReferenceConfig" - }, - "InputReferenceProperties": { - "$ref": "#/definitions/IdMappingTableInputReferenceProperties" - }, - "KmsKeyArn": { - "maxLength": 2048, - "minLength": 4, - "type": "string" - }, - "MembershipArn": { - "maxLength": 100, - "type": "string" - }, - "MembershipIdentifier": { - "$ref": "#/definitions/UUID" - }, - "Name": { - "maxLength": 128, - "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/IdMappingTableIdentifier", - "/properties/Arn", - "/properties/MembershipArn", - "/properties/CollaborationIdentifier", - "/properties/CollaborationArn", - "/properties/InputReferenceProperties" - ], - "required": [ - "MembershipIdentifier", - "Name", - "InputReferenceConfig" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cleanrooms", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "cleanrooms:ListTagsForResource", - "cleanrooms:UntagResource", - "cleanrooms:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CleanRooms::IdMappingTable" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MembershipIdentifier", + "/properties/Name", + "/properties/InputReferenceConfig" + ], + "definitions": { + "IdMappingTableInputReferenceConfig": { + "additionalProperties": false, + "properties": { + "InputReferenceArn": { + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "ManageResourcePolicies": { + "type": "boolean" + } + }, + "required": [ + "InputReferenceArn", + "ManageResourcePolicies" + ], + "type": "object" + }, + "IdMappingTableInputReferenceProperties": { + "additionalProperties": false, + "properties": { + "IdMappingTableInputSource": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IdMappingTableInputSource" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + } + }, + "required": [ + "IdMappingTableInputSource" + ], + "type": "object" + }, + "IdMappingTableInputSource": { + "additionalProperties": false, + "properties": { + "IdNamespaceAssociationId": { + "type": "string" + }, + "Type": { + "enum": [ + "SOURCE", + "TARGET" + ], + "type": "string" + } + }, + "required": [ + "IdNamespaceAssociationId", + "Type" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UUID": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + } + }, + "description": "Represents an association between an ID mapping workflow and a collaboration", + "handlers": { + "create": { + "permissions": [ + "cleanrooms:CreateIdMappingTable", + "cleanrooms:GetIdMappingTable", + "cleanrooms:ListIdMappingTables", + "cleanrooms:ListTagsForResource", + "cleanrooms:TagResource", + "cleanrooms:GetMembership", + "cleanrooms:GetCollaboration", + "entityresolution:GetIdMappingWorkflow", + "entityresolution:AddPolicyStatement" + ] + }, + "delete": { + "permissions": [ + "cleanrooms:DeleteIdMappingTable", + "cleanrooms:GetIdMappingTable", + "cleanrooms:ListIdMappingTables", + "cleanrooms:GetMembership", + "cleanrooms:ListTagsForResource", + "cleanrooms:UntagResource", + "entityresolution:GetIdMappingWorkflow", + "entityresolution:AddPolicyStatement", + "entityresolution:DeletePolicyStatement" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "MembershipIdentifier": { + "$ref": "resource-schema.json#/properties/MembershipIdentifier" + } + }, + "required": [ + "MembershipIdentifier" + ] + }, + "permissions": [ + "cleanrooms:ListIdMappingTables", + "cleanrooms:GetMembership", + "cleanrooms:GetCollaboration" + ] + }, + "read": { + "permissions": [ + "cleanrooms:GetIdMappingTable", + "cleanrooms:ListTagsForResource", + "cleanrooms:GetMembership", + "cleanrooms:GetCollaboration" + ] + }, + "update": { + "permissions": [ + "cleanrooms:UpdateIdMappingTable", + "cleanrooms:GetIdMappingTable", + "cleanrooms:GetMembership", + "cleanrooms:ListTagsForResource", + "cleanrooms:TagResource", + "cleanrooms:UntagResource", + "entityresolution:GetIdMappingWorkflow", + "entityresolution:AddPolicyStatement" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdMappingTableIdentifier", + "/properties/MembershipIdentifier" + ], + "properties": { + "Arn": { + "maxLength": 200, + "type": "string" + }, + "CollaborationArn": { + "maxLength": 100, + "type": "string" + }, + "CollaborationIdentifier": { + "$ref": "#/definitions/UUID" + }, + "Description": { + "maxLength": 255, + "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$", + "type": "string" + }, + "IdMappingTableIdentifier": { + "$ref": "#/definitions/UUID" + }, + "InputReferenceConfig": { + "$ref": "#/definitions/IdMappingTableInputReferenceConfig" + }, + "InputReferenceProperties": { + "$ref": "#/definitions/IdMappingTableInputReferenceProperties" + }, + "KmsKeyArn": { + "maxLength": 2048, + "minLength": 4, + "type": "string" + }, + "MembershipArn": { + "maxLength": 100, + "type": "string" + }, + "MembershipIdentifier": { + "$ref": "#/definitions/UUID" + }, + "Name": { + "maxLength": 128, + "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/IdMappingTableIdentifier", + "/properties/Arn", + "/properties/MembershipArn", + "/properties/CollaborationIdentifier", + "/properties/CollaborationArn", + "/properties/InputReferenceProperties" + ], + "required": [ + "MembershipIdentifier", + "Name", + "InputReferenceConfig" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cleanrooms", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "cleanrooms:ListTagsForResource", + "cleanrooms:UntagResource", + "cleanrooms:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CleanRooms::IdMappingTable" +} diff --git a/src/schema/aws-cleanrooms-idnamespaceassociation.json b/src/schema/aws-cleanrooms-idnamespaceassociation.json index 25226d79..4978a11b 100644 --- a/src/schema/aws-cleanrooms-idnamespaceassociation.json +++ b/src/schema/aws-cleanrooms-idnamespaceassociation.json @@ -1,238 +1,238 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MembershipIdentifier", - "/properties/InputReferenceConfig" - ], - "definitions": { - "Document": { - "type": "object" - }, - "IdMappingConfig": { - "additionalProperties": false, - "properties": { - "AllowUseAsDimensionColumn": { - "type": "boolean" - } - }, - "required": [ - "AllowUseAsDimensionColumn" - ], - "type": "object" - }, - "IdNamespaceAssociationInputReferenceConfig": { - "additionalProperties": false, - "properties": { - "InputReferenceArn": { - "maxLength": 256, - "type": "string" - }, - "ManageResourcePolicies": { - "type": "boolean" - } - }, - "required": [ - "InputReferenceArn", - "ManageResourcePolicies" - ], - "type": "object" - }, - "IdNamespaceAssociationInputReferenceProperties": { - "additionalProperties": false, - "properties": { - "IdMappingWorkflowsSupported": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Document" - }, - "type": "array" - }, - "IdNamespaceType": { - "enum": [ - "SOURCE", - "TARGET" - ], - "type": "string" - } - }, - "required": [], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UUID": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - } - }, - "description": "Represents an association between an ID namespace and a collaboration", - "handlers": { - "create": { - "permissions": [ - "cleanrooms:CreateIdNamespaceAssociation", - "cleanrooms:GetIdNamespaceAssociation", - "cleanrooms:ListIdNamespaceAssociations", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:GetMembership", - "cleanrooms:GetCollaboration", - "entityresolution:GetIdNamespace", - "entityresolution:AddPolicyStatement" - ] - }, - "delete": { - "permissions": [ - "cleanrooms:DeleteIdNamespaceAssociation", - "cleanrooms:GetIdNamespaceAssociation", - "cleanrooms:ListIdNamespaceAssociations", - "cleanrooms:GetMembership", - "cleanrooms:GetCollaboration", - "cleanrooms:ListTagsForResource", - "cleanrooms:UntagResource", - "entityresolution:GetIdNamespace", - "entityresolution:DeletePolicyStatement" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "MembershipIdentifier": { - "$ref": "resource-schema.json#/properties/MembershipIdentifier" - } - }, - "required": [ - "MembershipIdentifier" - ] - }, - "permissions": [ - "cleanrooms:ListIdNamespaceAssociations", - "cleanrooms:GetMembership", - "cleanrooms:GetCollaboration" - ] - }, - "read": { - "permissions": [ - "cleanrooms:GetIdNamespaceAssociation", - "cleanrooms:ListTagsForResource", - "cleanrooms:GetMembership", - "cleanrooms:GetCollaboration", - "entityresolution:GetIdNamespace" - ] - }, - "update": { - "permissions": [ - "cleanrooms:UpdateIdNamespaceAssociation", - "cleanrooms:GetIdNamespaceAssociation", - "cleanrooms:GetMembership", - "cleanrooms:GetCollaboration", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:UntagResource", - "entityresolution:GetIdNamespace", - "entityresolution:AddPolicyStatement" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdNamespaceAssociationIdentifier", - "/properties/MembershipIdentifier" - ], - "properties": { - "Arn": { - "maxLength": 256, - "type": "string" - }, - "CollaborationArn": { - "maxLength": 100, - "type": "string" - }, - "CollaborationIdentifier": { - "$ref": "#/definitions/UUID" - }, - "Description": { - "maxLength": 255, - "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$", - "type": "string" - }, - "IdMappingConfig": { - "$ref": "#/definitions/IdMappingConfig" - }, - "IdNamespaceAssociationIdentifier": { - "$ref": "#/definitions/UUID" - }, - "InputReferenceConfig": { - "$ref": "#/definitions/IdNamespaceAssociationInputReferenceConfig" - }, - "InputReferenceProperties": { - "$ref": "#/definitions/IdNamespaceAssociationInputReferenceProperties" - }, - "MembershipArn": { - "maxLength": 100, - "type": "string" - }, - "MembershipIdentifier": { - "$ref": "#/definitions/UUID" - }, - "Name": { - "maxLength": 100, - "minLength": 1, - "pattern": "^(?!\\s*$)[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t]*$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/IdNamespaceAssociationIdentifier", - "/properties/Arn", - "/properties/MembershipArn", - "/properties/CollaborationIdentifier", - "/properties/CollaborationArn", - "/properties/InputReferenceProperties" - ], - "required": [ - "MembershipIdentifier", - "InputReferenceConfig", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cleanrooms", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "cleanrooms:ListTagsForResource", - "cleanrooms:UntagResource", - "cleanrooms:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CleanRooms::IdNamespaceAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MembershipIdentifier", + "/properties/InputReferenceConfig" + ], + "definitions": { + "Document": { + "type": "object" + }, + "IdMappingConfig": { + "additionalProperties": false, + "properties": { + "AllowUseAsDimensionColumn": { + "type": "boolean" + } + }, + "required": [ + "AllowUseAsDimensionColumn" + ], + "type": "object" + }, + "IdNamespaceAssociationInputReferenceConfig": { + "additionalProperties": false, + "properties": { + "InputReferenceArn": { + "maxLength": 256, + "type": "string" + }, + "ManageResourcePolicies": { + "type": "boolean" + } + }, + "required": [ + "InputReferenceArn", + "ManageResourcePolicies" + ], + "type": "object" + }, + "IdNamespaceAssociationInputReferenceProperties": { + "additionalProperties": false, + "properties": { + "IdMappingWorkflowsSupported": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Document" + }, + "type": "array" + }, + "IdNamespaceType": { + "enum": [ + "SOURCE", + "TARGET" + ], + "type": "string" + } + }, + "required": [], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UUID": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + } + }, + "description": "Represents an association between an ID namespace and a collaboration", + "handlers": { + "create": { + "permissions": [ + "cleanrooms:CreateIdNamespaceAssociation", + "cleanrooms:GetIdNamespaceAssociation", + "cleanrooms:ListIdNamespaceAssociations", + "cleanrooms:ListTagsForResource", + "cleanrooms:TagResource", + "cleanrooms:GetMembership", + "cleanrooms:GetCollaboration", + "entityresolution:GetIdNamespace", + "entityresolution:AddPolicyStatement" + ] + }, + "delete": { + "permissions": [ + "cleanrooms:DeleteIdNamespaceAssociation", + "cleanrooms:GetIdNamespaceAssociation", + "cleanrooms:ListIdNamespaceAssociations", + "cleanrooms:GetMembership", + "cleanrooms:GetCollaboration", + "cleanrooms:ListTagsForResource", + "cleanrooms:UntagResource", + "entityresolution:GetIdNamespace", + "entityresolution:DeletePolicyStatement" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "MembershipIdentifier": { + "$ref": "resource-schema.json#/properties/MembershipIdentifier" + } + }, + "required": [ + "MembershipIdentifier" + ] + }, + "permissions": [ + "cleanrooms:ListIdNamespaceAssociations", + "cleanrooms:GetMembership", + "cleanrooms:GetCollaboration" + ] + }, + "read": { + "permissions": [ + "cleanrooms:GetIdNamespaceAssociation", + "cleanrooms:ListTagsForResource", + "cleanrooms:GetMembership", + "cleanrooms:GetCollaboration", + "entityresolution:GetIdNamespace" + ] + }, + "update": { + "permissions": [ + "cleanrooms:UpdateIdNamespaceAssociation", + "cleanrooms:GetIdNamespaceAssociation", + "cleanrooms:GetMembership", + "cleanrooms:GetCollaboration", + "cleanrooms:ListTagsForResource", + "cleanrooms:TagResource", + "cleanrooms:UntagResource", + "entityresolution:GetIdNamespace", + "entityresolution:AddPolicyStatement" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdNamespaceAssociationIdentifier", + "/properties/MembershipIdentifier" + ], + "properties": { + "Arn": { + "maxLength": 256, + "type": "string" + }, + "CollaborationArn": { + "maxLength": 100, + "type": "string" + }, + "CollaborationIdentifier": { + "$ref": "#/definitions/UUID" + }, + "Description": { + "maxLength": 255, + "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$", + "type": "string" + }, + "IdMappingConfig": { + "$ref": "#/definitions/IdMappingConfig" + }, + "IdNamespaceAssociationIdentifier": { + "$ref": "#/definitions/UUID" + }, + "InputReferenceConfig": { + "$ref": "#/definitions/IdNamespaceAssociationInputReferenceConfig" + }, + "InputReferenceProperties": { + "$ref": "#/definitions/IdNamespaceAssociationInputReferenceProperties" + }, + "MembershipArn": { + "maxLength": 100, + "type": "string" + }, + "MembershipIdentifier": { + "$ref": "#/definitions/UUID" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^(?!\\s*$)[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t]*$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/IdNamespaceAssociationIdentifier", + "/properties/Arn", + "/properties/MembershipArn", + "/properties/CollaborationIdentifier", + "/properties/CollaborationArn", + "/properties/InputReferenceProperties" + ], + "required": [ + "MembershipIdentifier", + "InputReferenceConfig", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cleanrooms", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "cleanrooms:ListTagsForResource", + "cleanrooms:UntagResource", + "cleanrooms:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CleanRooms::IdNamespaceAssociation" +} diff --git a/src/schema/aws-cleanrooms-membership.json b/src/schema/aws-cleanrooms-membership.json index d8da449b..a03a855f 100644 --- a/src/schema/aws-cleanrooms-membership.json +++ b/src/schema/aws-cleanrooms-membership.json @@ -1,267 +1,381 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CollaborationIdentifier" - ], - "definitions": { - "MembershipPaymentConfiguration": { - "additionalProperties": false, - "properties": { - "QueryCompute": { - "$ref": "#/definitions/MembershipQueryComputePaymentConfig" - } - }, - "required": [ - "QueryCompute" - ], - "type": "object" - }, - "MembershipProtectedQueryOutputConfiguration": { - "additionalProperties": false, - "properties": { - "S3": { - "$ref": "#/definitions/ProtectedQueryS3OutputConfiguration" - } - }, - "required": [ - "S3" - ], - "type": "object" - }, - "MembershipProtectedQueryResultConfiguration": { - "additionalProperties": false, - "properties": { - "OutputConfiguration": { - "$ref": "#/definitions/MembershipProtectedQueryOutputConfiguration" - }, - "RoleArn": { - "maxLength": 512, - "minLength": 32, - "type": "string" - } - }, - "required": [ - "OutputConfiguration" - ], - "type": "object" - }, - "MembershipQueryComputePaymentConfig": { - "additionalProperties": false, - "properties": { - "IsResponsible": { - "type": "boolean" - } - }, - "required": [ - "IsResponsible" - ], - "type": "object" - }, - "MembershipQueryLogStatus": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "MembershipStatus": { - "enum": [ - "ACTIVE", - "REMOVED", - "COLLABORATION_DELETED" - ], - "type": "string" - }, - "ProtectedQueryS3OutputConfiguration": { - "additionalProperties": false, - "properties": { - "Bucket": { - "maxLength": 63, - "minLength": 3, - "type": "string" - }, - "KeyPrefix": { - "type": "string" - }, - "ResultFormat": { - "$ref": "#/definitions/ResultFormat" - }, - "SingleFileOutput": { - "type": "boolean" - } - }, - "required": [ - "ResultFormat", - "Bucket" - ], - "type": "object" - }, - "ResultFormat": { - "enum": [ - "CSV", - "PARQUET" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Represents an AWS account that is a part of a collaboration", - "handlers": { - "create": { - "permissions": [ - "cleanrooms:CreateMembership", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:UpdateLogDelivery", - "logs:DeleteLogDelivery", - "logs:ListLogDeliveries", - "logs:DescribeLogGroups", - "logs:DescribeResourcePolicies", - "logs:PutResourcePolicy", - "logs:CreateLogGroup", - "cleanrooms:GetMembership", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:ListMemberships", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "cleanrooms:DeleteMembership", - "cleanrooms:GetMembership", - "cleanrooms:ListMemberships", - "cleanrooms:ListTagsForResource", - "logs:ListLogDeliveries", - "logs:DescribeLogGroups", - "logs:DescribeResourcePolicies", - "logs:GetLogDelivery" - ] - }, - "list": { - "permissions": [ - "cleanrooms:ListMemberships" - ] - }, - "read": { - "permissions": [ - "cleanrooms:GetMembership", - "cleanrooms:ListTagsForResource", - "logs:ListLogDeliveries", - "logs:DescribeLogGroups", - "logs:DescribeResourcePolicies", - "logs:GetLogDelivery" - ] - }, - "update": { - "permissions": [ - "cleanrooms:UpdateMembership", - "cleanrooms:GetMembership", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:UpdateLogDelivery", - "logs:DeleteLogDelivery", - "logs:ListLogDeliveries", - "logs:DescribeLogGroups", - "logs:DescribeResourcePolicies", - "logs:PutResourcePolicy", - "logs:CreateLogGroup", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:UntagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/MembershipIdentifier" - ], - "properties": { - "Arn": { - "maxLength": 100, - "type": "string" - }, - "CollaborationArn": { - "maxLength": 100, - "type": "string" - }, - "CollaborationCreatorAccountId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^\\d+$", - "type": "string" - }, - "CollaborationIdentifier": { - "maxLength": 36, - "minLength": 36, - "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", - "type": "string" - }, - "DefaultResultConfiguration": { - "$ref": "#/definitions/MembershipProtectedQueryResultConfiguration" - }, - "MembershipIdentifier": { - "maxLength": 36, - "minLength": 36, - "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", - "type": "string" - }, - "PaymentConfiguration": { - "$ref": "#/definitions/MembershipPaymentConfiguration" - }, - "QueryLogStatus": { - "$ref": "#/definitions/MembershipQueryLogStatus" - }, - "Tags": { - "description": "An arbitrary set of tags (key-value pairs) for this cleanrooms membership.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CollaborationArn", - "/properties/CollaborationCreatorAccountId", - "/properties/MembershipIdentifier" - ], - "required": [ - "CollaborationIdentifier", - "QueryLogStatus" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "cleanrooms:ListTagsForResource", - "cleanrooms:UntagResource", - "cleanrooms:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CleanRooms::Membership" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CollaborationIdentifier" + ], + "definitions": { + "MembershipJobComputePaymentConfig": { + "additionalProperties": false, + "properties": { + "IsResponsible": { + "type": "boolean" + } + }, + "required": [ + "IsResponsible" + ], + "type": "object" + }, + "MembershipJobLogStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "MembershipMLPaymentConfig": { + "additionalProperties": false, + "properties": { + "ModelInference": { + "$ref": "#/definitions/MembershipModelInferencePaymentConfig" + }, + "ModelTraining": { + "$ref": "#/definitions/MembershipModelTrainingPaymentConfig" + } + }, + "type": "object" + }, + "MembershipModelInferencePaymentConfig": { + "additionalProperties": false, + "properties": { + "IsResponsible": { + "type": "boolean" + } + }, + "required": [ + "IsResponsible" + ], + "type": "object" + }, + "MembershipModelTrainingPaymentConfig": { + "additionalProperties": false, + "properties": { + "IsResponsible": { + "type": "boolean" + } + }, + "required": [ + "IsResponsible" + ], + "type": "object" + }, + "MembershipPaymentConfiguration": { + "additionalProperties": false, + "properties": { + "JobCompute": { + "$ref": "#/definitions/MembershipJobComputePaymentConfig" + }, + "MachineLearning": { + "$ref": "#/definitions/MembershipMLPaymentConfig" + }, + "QueryCompute": { + "$ref": "#/definitions/MembershipQueryComputePaymentConfig" + } + }, + "required": [ + "QueryCompute" + ], + "type": "object" + }, + "MembershipProtectedJobOutputConfiguration": { + "additionalProperties": false, + "properties": { + "S3": { + "$ref": "#/definitions/ProtectedJobS3OutputConfigurationInput" + } + }, + "required": [ + "S3" + ], + "type": "object" + }, + "MembershipProtectedJobResultConfiguration": { + "additionalProperties": false, + "properties": { + "OutputConfiguration": { + "$ref": "#/definitions/MembershipProtectedJobOutputConfiguration" + }, + "RoleArn": { + "maxLength": 512, + "minLength": 32, + "type": "string" + } + }, + "required": [ + "OutputConfiguration", + "RoleArn" + ], + "type": "object" + }, + "MembershipProtectedQueryOutputConfiguration": { + "additionalProperties": false, + "properties": { + "S3": { + "$ref": "#/definitions/ProtectedQueryS3OutputConfiguration" + } + }, + "required": [ + "S3" + ], + "type": "object" + }, + "MembershipProtectedQueryResultConfiguration": { + "additionalProperties": false, + "properties": { + "OutputConfiguration": { + "$ref": "#/definitions/MembershipProtectedQueryOutputConfiguration" + }, + "RoleArn": { + "maxLength": 512, + "minLength": 32, + "type": "string" + } + }, + "required": [ + "OutputConfiguration" + ], + "type": "object" + }, + "MembershipQueryComputePaymentConfig": { + "additionalProperties": false, + "properties": { + "IsResponsible": { + "type": "boolean" + } + }, + "required": [ + "IsResponsible" + ], + "type": "object" + }, + "MembershipQueryLogStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "MembershipStatus": { + "enum": [ + "ACTIVE", + "REMOVED", + "COLLABORATION_DELETED" + ], + "type": "string" + }, + "ProtectedJobS3OutputConfigurationInput": { + "additionalProperties": false, + "properties": { + "Bucket": { + "maxLength": 63, + "minLength": 3, + "type": "string" + }, + "KeyPrefix": { + "type": "string" + } + }, + "required": [ + "Bucket" + ], + "type": "object" + }, + "ProtectedQueryS3OutputConfiguration": { + "additionalProperties": false, + "properties": { + "Bucket": { + "maxLength": 63, + "minLength": 3, + "type": "string" + }, + "KeyPrefix": { + "type": "string" + }, + "ResultFormat": { + "$ref": "#/definitions/ResultFormat" + }, + "SingleFileOutput": { + "type": "boolean" + } + }, + "required": [ + "ResultFormat", + "Bucket" + ], + "type": "object" + }, + "ResultFormat": { + "enum": [ + "CSV", + "PARQUET" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Represents an AWS account that is a part of a collaboration", + "handlers": { + "create": { + "permissions": [ + "cleanrooms:CreateMembership", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "logs:DescribeLogGroups", + "logs:DescribeResourcePolicies", + "logs:PutResourcePolicy", + "logs:CreateLogGroup", + "cleanrooms:GetMembership", + "cleanrooms:ListTagsForResource", + "cleanrooms:TagResource", + "cleanrooms:ListMemberships", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "cleanrooms:DeleteMembership", + "cleanrooms:GetMembership", + "cleanrooms:ListMemberships", + "cleanrooms:ListTagsForResource", + "logs:ListLogDeliveries", + "logs:DescribeLogGroups", + "logs:DescribeResourcePolicies", + "logs:GetLogDelivery" + ] + }, + "list": { + "permissions": [ + "cleanrooms:ListMemberships" + ] + }, + "read": { + "permissions": [ + "cleanrooms:GetMembership", + "cleanrooms:ListTagsForResource", + "logs:ListLogDeliveries", + "logs:DescribeLogGroups", + "logs:DescribeResourcePolicies", + "logs:GetLogDelivery" + ] + }, + "update": { + "permissions": [ + "cleanrooms:UpdateMembership", + "cleanrooms:GetMembership", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "logs:DescribeLogGroups", + "logs:DescribeResourcePolicies", + "logs:PutResourcePolicy", + "logs:CreateLogGroup", + "cleanrooms:ListTagsForResource", + "cleanrooms:TagResource", + "cleanrooms:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/MembershipIdentifier" + ], + "properties": { + "Arn": { + "maxLength": 100, + "type": "string" + }, + "CollaborationArn": { + "maxLength": 100, + "type": "string" + }, + "CollaborationCreatorAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^\\d+$", + "type": "string" + }, + "CollaborationIdentifier": { + "maxLength": 36, + "minLength": 36, + "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + "type": "string" + }, + "DefaultJobResultConfiguration": { + "$ref": "#/definitions/MembershipProtectedJobResultConfiguration" + }, + "DefaultResultConfiguration": { + "$ref": "#/definitions/MembershipProtectedQueryResultConfiguration" + }, + "JobLogStatus": { + "$ref": "#/definitions/MembershipJobLogStatus" + }, + "MembershipIdentifier": { + "maxLength": 36, + "minLength": 36, + "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + "type": "string" + }, + "PaymentConfiguration": { + "$ref": "#/definitions/MembershipPaymentConfiguration" + }, + "QueryLogStatus": { + "$ref": "#/definitions/MembershipQueryLogStatus" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this cleanrooms membership.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CollaborationArn", + "/properties/CollaborationCreatorAccountId", + "/properties/MembershipIdentifier" + ], + "required": [ + "CollaborationIdentifier", + "QueryLogStatus" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "cleanrooms:ListTagsForResource", + "cleanrooms:UntagResource", + "cleanrooms:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CleanRooms::Membership" +} diff --git a/src/schema/aws-cleanrooms-privacybudgettemplate.json b/src/schema/aws-cleanrooms-privacybudgettemplate.json index 02ec1e0a..5d92dfea 100644 --- a/src/schema/aws-cleanrooms-privacybudgettemplate.json +++ b/src/schema/aws-cleanrooms-privacybudgettemplate.json @@ -1,186 +1,186 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MembershipIdentifier", - "/properties/PrivacyBudgetType", - "/properties/AutoRefresh" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Represents a privacy budget within a collaboration", - "handlers": { - "create": { - "permissions": [ - "cleanrooms:CreatePrivacyBudgetTemplate", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:GetPrivacyBudgetTemplate", - "cleanrooms:ListPrivacyBudgetTemplates" - ] - }, - "delete": { - "permissions": [ - "cleanrooms:DeletePrivacyBudgetTemplate", - "cleanrooms:GetPrivacyBudgetTemplate", - "cleanrooms:ListPrivacyBudgetTemplates", - "cleanrooms:ListTagsForResource", - "cleanrooms:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "MembershipIdentifier": { - "$ref": "resource-schema.json#/properties/MembershipIdentifier" - } - }, - "required": [ - "MembershipIdentifier" - ] - }, - "permissions": [ - "cleanrooms:ListPrivacyBudgetTemplates" - ] - }, - "read": { - "permissions": [ - "cleanrooms:GetPrivacyBudgetTemplate", - "cleanrooms:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "cleanrooms:UpdatePrivacyBudgetTemplate", - "cleanrooms:GetPrivacyBudgetTemplate", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/PrivacyBudgetTemplateIdentifier", - "/properties/MembershipIdentifier" - ], - "properties": { - "Arn": { - "maxLength": 200, - "type": "string" - }, - "AutoRefresh": { - "enum": [ - "CALENDAR_MONTH", - "NONE" - ], - "type": "string" - }, - "CollaborationArn": { - "maxLength": 100, - "type": "string" - }, - "CollaborationIdentifier": { - "maxLength": 36, - "minLength": 36, - "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", - "type": "string" - }, - "MembershipArn": { - "maxLength": 100, - "type": "string" - }, - "MembershipIdentifier": { - "maxLength": 36, - "minLength": 36, - "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", - "type": "string" - }, - "Parameters": { - "additionalProperties": false, - "properties": { - "Epsilon": { - "maximum": 20, - "minimum": 1, - "type": "integer" - }, - "UsersNoisePerQuery": { - "maximum": 100, - "minimum": 10, - "type": "integer" - } - }, - "required": [ - "Epsilon", - "UsersNoisePerQuery" - ], - "type": "object" - }, - "PrivacyBudgetTemplateIdentifier": { - "maxLength": 36, - "minLength": 36, - "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", - "type": "string" - }, - "PrivacyBudgetType": { - "enum": [ - "DIFFERENTIAL_PRIVACY" - ], - "type": "string" - }, - "Tags": { - "description": "An arbitrary set of tags (key-value pairs) for this cleanrooms privacy budget template.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/CollaborationArn", - "/properties/CollaborationIdentifier", - "/properties/PrivacyBudgetTemplateIdentifier", - "/properties/Arn", - "/properties/MembershipArn" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "AutoRefresh", - "PrivacyBudgetType", - "Parameters", - "MembershipIdentifier" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cleanrooms", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "cleanrooms:ListTagsForResource", - "cleanrooms:UntagResource", - "cleanrooms:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CleanRooms::PrivacyBudgetTemplate" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MembershipIdentifier", + "/properties/PrivacyBudgetType", + "/properties/AutoRefresh" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Represents a privacy budget within a collaboration", + "handlers": { + "create": { + "permissions": [ + "cleanrooms:CreatePrivacyBudgetTemplate", + "cleanrooms:ListTagsForResource", + "cleanrooms:TagResource", + "cleanrooms:GetPrivacyBudgetTemplate", + "cleanrooms:ListPrivacyBudgetTemplates" + ] + }, + "delete": { + "permissions": [ + "cleanrooms:DeletePrivacyBudgetTemplate", + "cleanrooms:GetPrivacyBudgetTemplate", + "cleanrooms:ListPrivacyBudgetTemplates", + "cleanrooms:ListTagsForResource", + "cleanrooms:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "MembershipIdentifier": { + "$ref": "resource-schema.json#/properties/MembershipIdentifier" + } + }, + "required": [ + "MembershipIdentifier" + ] + }, + "permissions": [ + "cleanrooms:ListPrivacyBudgetTemplates" + ] + }, + "read": { + "permissions": [ + "cleanrooms:GetPrivacyBudgetTemplate", + "cleanrooms:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "cleanrooms:UpdatePrivacyBudgetTemplate", + "cleanrooms:GetPrivacyBudgetTemplate", + "cleanrooms:ListTagsForResource", + "cleanrooms:TagResource", + "cleanrooms:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/PrivacyBudgetTemplateIdentifier", + "/properties/MembershipIdentifier" + ], + "properties": { + "Arn": { + "maxLength": 200, + "type": "string" + }, + "AutoRefresh": { + "enum": [ + "CALENDAR_MONTH", + "NONE" + ], + "type": "string" + }, + "CollaborationArn": { + "maxLength": 100, + "type": "string" + }, + "CollaborationIdentifier": { + "maxLength": 36, + "minLength": 36, + "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + "type": "string" + }, + "MembershipArn": { + "maxLength": 100, + "type": "string" + }, + "MembershipIdentifier": { + "maxLength": 36, + "minLength": 36, + "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + "type": "string" + }, + "Parameters": { + "additionalProperties": false, + "properties": { + "Epsilon": { + "maximum": 20, + "minimum": 1, + "type": "integer" + }, + "UsersNoisePerQuery": { + "maximum": 100, + "minimum": 10, + "type": "integer" + } + }, + "required": [ + "Epsilon", + "UsersNoisePerQuery" + ], + "type": "object" + }, + "PrivacyBudgetTemplateIdentifier": { + "maxLength": 36, + "minLength": 36, + "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + "type": "string" + }, + "PrivacyBudgetType": { + "enum": [ + "DIFFERENTIAL_PRIVACY" + ], + "type": "string" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this cleanrooms privacy budget template.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/CollaborationArn", + "/properties/CollaborationIdentifier", + "/properties/PrivacyBudgetTemplateIdentifier", + "/properties/Arn", + "/properties/MembershipArn" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "AutoRefresh", + "PrivacyBudgetType", + "Parameters", + "MembershipIdentifier" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cleanrooms", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "cleanrooms:ListTagsForResource", + "cleanrooms:UntagResource", + "cleanrooms:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CleanRooms::PrivacyBudgetTemplate" +} diff --git a/src/schema/aws-cleanroomsml-trainingdataset.json b/src/schema/aws-cleanroomsml-trainingdataset.json index 781c6161..07beb445 100644 --- a/src/schema/aws-cleanroomsml-trainingdataset.json +++ b/src/schema/aws-cleanroomsml-trainingdataset.json @@ -1,259 +1,259 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Description", - "/properties/Name", - "/properties/RoleArn", - "/properties/TrainingData" - ], - "definitions": { - "ColumnSchema": { - "additionalProperties": false, - "properties": { - "ColumnName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", - "type": "string" - }, - "ColumnTypes": { - "items": { - "$ref": "#/definitions/ColumnType" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "ColumnName", - "ColumnTypes" - ], - "type": "object" - }, - "ColumnType": { - "enum": [ - "USER_ID", - "ITEM_ID", - "TIMESTAMP", - "CATEGORICAL_FEATURE", - "NUMERICAL_FEATURE" - ], - "type": "string" - }, - "DataSource": { - "additionalProperties": false, - "properties": { - "GlueDataSource": { - "$ref": "#/definitions/GlueDataSource" - } - }, - "required": [ - "GlueDataSource" - ], - "type": "object" - }, - "Dataset": { - "additionalProperties": false, - "properties": { - "InputConfig": { - "$ref": "#/definitions/DatasetInputConfig" - }, - "Type": { - "$ref": "#/definitions/DatasetType" - } - }, - "required": [ - "InputConfig", - "Type" - ], - "type": "object" - }, - "DatasetInputConfig": { - "additionalProperties": false, - "properties": { - "DataSource": { - "$ref": "#/definitions/DataSource" - }, - "Schema": { - "items": { - "$ref": "#/definitions/ColumnSchema" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "DataSource", - "Schema" - ], - "type": "object" - }, - "DatasetType": { - "enum": [ - "INTERACTIONS" - ], - "type": "string" - }, - "GlueDataSource": { - "additionalProperties": false, - "properties": { - "CatalogId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "DatabaseName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_]+-)*([a-zA-Z0-9_]+))?$", - "type": "string" - }, - "TableName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", - "type": "string" - } - }, - "required": [ - "DatabaseName", - "TableName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TrainingDatasetStatus": { - "enum": [ - "ACTIVE" - ], - "type": "string" - }, - "Unit": { - "additionalProperties": false, - "type": "object" - } - }, - "description": "Definition of AWS::CleanRoomsML::TrainingDataset Resource Type", - "handlers": { - "create": { - "permissions": [ - "cleanrooms-ml:CreateTrainingDataset", - "cleanrooms-ml:GetTrainingDataset", - "cleanrooms-ml:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "cleanrooms-ml:DeleteTrainingDataset" - ] - }, - "list": { - "permissions": [ - "cleanrooms-ml:ListTrainingDatasets" - ] - }, - "read": { - "permissions": [ - "cleanrooms-ml:GetTrainingDataset" - ] - }, - "update": { - "permissions": [ - "cleanrooms-ml:TagResource", - "cleanrooms-ml:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/TrainingDatasetArn" - ], - "properties": { - "Description": { - "maxLength": 255, - "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$", - "type": "string" - }, - "Name": { - "maxLength": 63, - "minLength": 1, - "pattern": "^(?!\\s*$)[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t]*$", - "type": "string" - }, - "RoleArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[-a-z]*:iam::[0-9]{12}:role/.+$", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/TrainingDatasetStatus" - }, - "Tags": { - "description": "An arbitrary set of tags (key-value pairs) for this cleanrooms-ml training dataset.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "TrainingData": { - "items": { - "$ref": "#/definitions/Dataset" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "TrainingDatasetArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[-a-z]*:cleanrooms-ml:[-a-z0-9]+:[0-9]{12}:training-dataset/[-a-zA-Z0-9_/.]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/TrainingDatasetArn" - ], - "required": [ - "Name", - "RoleArn", - "TrainingData" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "cleanrooms-ml:TagResource", - "cleanrooms-ml:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CleanRoomsML::TrainingDataset" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description", + "/properties/Name", + "/properties/RoleArn", + "/properties/TrainingData" + ], + "definitions": { + "ColumnSchema": { + "additionalProperties": false, + "properties": { + "ColumnName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", + "type": "string" + }, + "ColumnTypes": { + "items": { + "$ref": "#/definitions/ColumnType" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "ColumnName", + "ColumnTypes" + ], + "type": "object" + }, + "ColumnType": { + "enum": [ + "USER_ID", + "ITEM_ID", + "TIMESTAMP", + "CATEGORICAL_FEATURE", + "NUMERICAL_FEATURE" + ], + "type": "string" + }, + "DataSource": { + "additionalProperties": false, + "properties": { + "GlueDataSource": { + "$ref": "#/definitions/GlueDataSource" + } + }, + "required": [ + "GlueDataSource" + ], + "type": "object" + }, + "Dataset": { + "additionalProperties": false, + "properties": { + "InputConfig": { + "$ref": "#/definitions/DatasetInputConfig" + }, + "Type": { + "$ref": "#/definitions/DatasetType" + } + }, + "required": [ + "InputConfig", + "Type" + ], + "type": "object" + }, + "DatasetInputConfig": { + "additionalProperties": false, + "properties": { + "DataSource": { + "$ref": "#/definitions/DataSource" + }, + "Schema": { + "items": { + "$ref": "#/definitions/ColumnSchema" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "DataSource", + "Schema" + ], + "type": "object" + }, + "DatasetType": { + "enum": [ + "INTERACTIONS" + ], + "type": "string" + }, + "GlueDataSource": { + "additionalProperties": false, + "properties": { + "CatalogId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "DatabaseName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_]+-)*([a-zA-Z0-9_]+))?$", + "type": "string" + }, + "TableName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", + "type": "string" + } + }, + "required": [ + "DatabaseName", + "TableName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TrainingDatasetStatus": { + "enum": [ + "ACTIVE" + ], + "type": "string" + }, + "Unit": { + "additionalProperties": false, + "type": "object" + } + }, + "description": "Definition of AWS::CleanRoomsML::TrainingDataset Resource Type", + "handlers": { + "create": { + "permissions": [ + "cleanrooms-ml:CreateTrainingDataset", + "cleanrooms-ml:GetTrainingDataset", + "cleanrooms-ml:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "cleanrooms-ml:DeleteTrainingDataset" + ] + }, + "list": { + "permissions": [ + "cleanrooms-ml:ListTrainingDatasets" + ] + }, + "read": { + "permissions": [ + "cleanrooms-ml:GetTrainingDataset" + ] + }, + "update": { + "permissions": [ + "cleanrooms-ml:TagResource", + "cleanrooms-ml:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/TrainingDatasetArn" + ], + "properties": { + "Description": { + "maxLength": 255, + "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$", + "type": "string" + }, + "Name": { + "maxLength": 63, + "minLength": 1, + "pattern": "^(?!\\s*$)[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t]*$", + "type": "string" + }, + "RoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[-a-z]*:iam::[0-9]{12}:role/.+$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/TrainingDatasetStatus" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this cleanrooms-ml training dataset.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TrainingData": { + "items": { + "$ref": "#/definitions/Dataset" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "TrainingDatasetArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[-a-z]*:cleanrooms-ml:[-a-z0-9]+:[0-9]{12}:training-dataset/[-a-zA-Z0-9_/.]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Status", + "/properties/TrainingDatasetArn" + ], + "required": [ + "Name", + "RoleArn", + "TrainingData" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "cleanrooms-ml:TagResource", + "cleanrooms-ml:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CleanRoomsML::TrainingDataset" +} diff --git a/src/schema/aws-cloud9-environmentec2.json b/src/schema/aws-cloud9-environmentec2.json index 788528ff..477042ae 100644 --- a/src/schema/aws-cloud9-environmentec2.json +++ b/src/schema/aws-cloud9-environmentec2.json @@ -1,105 +1,105 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AutomaticStopTimeMinutes", - "/properties/OwnerArn", - "/properties/ConnectionType", - "/properties/InstanceType", - "/properties/ImageId", - "/properties/SubnetId", - "/properties/Repositories" - ], - "definitions": { - "Repository": { - "additionalProperties": false, - "properties": { - "PathComponent": { - "type": "string" - }, - "RepositoryUrl": { - "type": "string" - } - }, - "required": [ - "PathComponent", - "RepositoryUrl" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Cloud9::EnvironmentEC2", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "AutomaticStopTimeMinutes": { - "type": "integer" - }, - "ConnectionType": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceType": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "OwnerArn": { - "type": "string" - }, - "Repositories": { - "items": { - "$ref": "#/definitions/Repository" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "ImageId", - "InstanceType" - ], - "typeName": "AWS::Cloud9::EnvironmentEC2" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AutomaticStopTimeMinutes", + "/properties/OwnerArn", + "/properties/ConnectionType", + "/properties/InstanceType", + "/properties/ImageId", + "/properties/SubnetId", + "/properties/Repositories" + ], + "definitions": { + "Repository": { + "additionalProperties": false, + "properties": { + "PathComponent": { + "type": "string" + }, + "RepositoryUrl": { + "type": "string" + } + }, + "required": [ + "PathComponent", + "RepositoryUrl" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Cloud9::EnvironmentEC2", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AutomaticStopTimeMinutes": { + "type": "integer" + }, + "ConnectionType": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "ImageId": { + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "OwnerArn": { + "type": "string" + }, + "Repositories": { + "items": { + "$ref": "#/definitions/Repository" + }, + "type": "array", + "uniqueItems": false + }, + "SubnetId": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "ImageId", + "InstanceType" + ], + "typeName": "AWS::Cloud9::EnvironmentEC2" +} diff --git a/src/schema/aws-cloudformation-customresource.json b/src/schema/aws-cloudformation-customresource.json index 00619bb6..89d37014 100644 --- a/src/schema/aws-cloudformation-customresource.json +++ b/src/schema/aws-cloudformation-customresource.json @@ -1,28 +1,28 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServiceToken" - ], - "description": "Resource Type definition for AWS::CloudFormation::CustomResource", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "ServiceTimeout": { - "type": "integer" - }, - "ServiceToken": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ServiceToken" - ], - "typeName": "AWS::CloudFormation::CustomResource" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServiceToken" + ], + "description": "Resource Type definition for AWS::CloudFormation::CustomResource", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "ServiceTimeout": { + "type": "integer" + }, + "ServiceToken": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ServiceToken" + ], + "typeName": "AWS::CloudFormation::CustomResource" +} diff --git a/src/schema/aws-cloudformation-guardhook.json b/src/schema/aws-cloudformation-guardhook.json new file mode 100644 index 00000000..9f350865 --- /dev/null +++ b/src/schema/aws-cloudformation-guardhook.json @@ -0,0 +1,372 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ExecutionRole", + "/properties/Alias" + ], + "definitions": { + "Action": { + "description": "Target actions are the type of operation hooks will be executed at.", + "enum": [ + "CREATE", + "UPDATE", + "DELETE" + ], + "type": "string" + }, + "HookTarget": { + "additionalProperties": false, + "description": "Hook targets are the destination where hooks will be invoked against.", + "properties": { + "Action": { + "$ref": "#/definitions/Action" + }, + "InvocationPoint": { + "$ref": "#/definitions/InvocationPoint" + }, + "TargetName": { + "$ref": "#/definitions/TargetName" + } + }, + "required": [ + "TargetName", + "Action", + "InvocationPoint" + ], + "type": "object" + }, + "InvocationPoint": { + "description": "Invocation points are the point in provisioning workflow where hooks will be executed.", + "enum": [ + "PRE_PROVISION" + ], + "type": "string" + }, + "Role": { + "description": "IAM Role ARN", + "maxLength": 256, + "pattern": "arn:.+:iam::[0-9]{12}:role/.+", + "type": "string" + }, + "S3Location": { + "additionalProperties": false, + "description": "S3 Source Location for the Guard files.", + "properties": { + "Uri": { + "description": "S3 uri of Guard files.", + "type": "string" + }, + "VersionId": { + "description": "S3 object version", + "type": "string" + } + }, + "required": [ + "Uri" + ], + "type": "object" + }, + "StackName": { + "description": "CloudFormation Stack name", + "maxLength": 128, + "pattern": "^[a-zA-Z*?][-a-zA-Z0-9*?]*$", + "type": "string" + }, + "StackRole": { + "anyOf": [ + { + "pattern": "arn:.+:iam::[0-9]{12}:role/.+" + }, + { + "pattern": "^(arn:.+:iam::((?!\\*|\\?)[0-9]{12}|(?=.*\\*)[0-9*?]{1,12}|[0-9?]{12}):role/.+|\\*)$" + } + ], + "description": "IAM Stack Role ARN filter", + "maxLength": 256, + "type": "string" + }, + "TargetName": { + "description": "Type name of hook target. Hook targets are the destination where hooks will be invoked against.", + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!.*\\*\\?).*$", + "type": "string" + }, + "TargetOperation": { + "description": "Which operations should this Hook run against? Resource changes, stacks or change sets.", + "enum": [ + "RESOURCE", + "STACK", + "CHANGE_SET", + "CLOUD_CONTROL" + ], + "type": "string" + } + }, + "description": "This is a CloudFormation resource for activating the first-party AWS::Hooks::GuardHook.", + "handlers": { + "create": { + "permissions": [ + "cloudformation:ActivateType", + "cloudformation:DescribeType", + "cloudformation:ListTypes", + "cloudformation:SetTypeConfiguration", + "cloudformation:BatchDescribeTypeConfigurations", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "cloudformation:BatchDescribeTypeConfigurations", + "cloudformation:DescribeType", + "cloudformation:DeactivateType", + "cloudformation:SetTypeConfiguration" + ] + }, + "list": { + "permissions": [ + "cloudformation:ListTypes", + "cloudformation:DescribeType", + "cloudformation:BatchDescribeTypeConfigurations" + ] + }, + "read": { + "permissions": [ + "cloudformation:DescribeType", + "cloudformation:BatchDescribeTypeConfigurations" + ] + }, + "update": { + "permissions": [ + "cloudformation:BatchDescribeTypeConfigurations", + "cloudformation:DescribeType", + "cloudformation:SetTypeConfiguration", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/HookArn" + ], + "properties": { + "Alias": { + "description": "The typename alias for the hook.", + "pattern": "^(?!(?i)aws)[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", + "type": "string" + }, + "ExecutionRole": { + "$ref": "#/definitions/Role", + "description": "The execution role ARN assumed by hooks to read Guard rules from S3 and write Guard outputs to S3." + }, + "FailureMode": { + "default": "WARN", + "description": "Attribute to specify CloudFormation behavior on hook failure.", + "enum": [ + "FAIL", + "WARN" + ], + "type": "string" + }, + "HookArn": { + "description": "The Amazon Resource Name (ARN) of the activated hook", + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/hook/.+$", + "type": "string" + }, + "HookStatus": { + "default": "DISABLED", + "description": "Attribute to specify which stacks this hook applies to or should get invoked for", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "LogBucket": { + "description": "S3 Bucket where the guard validate report will be uploaded to", + "type": "string" + }, + "Options": { + "additionalProperties": false, + "properties": { + "InputParams": { + "$ref": "#/definitions/S3Location" + } + }, + "required": [] + }, + "RuleLocation": { + "$ref": "#/definitions/S3Location" + }, + "StackFilters": { + "additionalProperties": false, + "description": "Filters to allow hooks to target specific stack attributes", + "properties": { + "FilteringCriteria": { + "default": "ALL", + "description": "Attribute to specify the filtering behavior. ANY will make the Hook pass if one filter matches. ALL will make the Hook pass if all filters match", + "enum": [ + "ALL", + "ANY" + ], + "type": "string" + }, + "StackNames": { + "additionalProperties": false, + "description": "List of stack names as filters", + "minProperties": 1, + "properties": { + "Exclude": { + "description": "List of stack names that the hook is going to be excluded from", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StackName" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Include": { + "description": "List of stack names that the hook is going to target", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StackName" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "StackRoles": { + "additionalProperties": false, + "description": "List of stack roles that are performing the stack operations.", + "minProperties": 1, + "properties": { + "Exclude": { + "description": "List of stack roles that the hook is going to be excluded from", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StackRole" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Include": { + "description": "List of stack roles that the hook is going to target", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StackRole" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + } + }, + "required": [ + "FilteringCriteria" + ], + "type": "object" + }, + "TargetFilters": { + "description": "Attribute to specify which targets should invoke the hook", + "oneOf": [ + { + "additionalProperties": false, + "minProperties": 1, + "properties": { + "Actions": { + "description": "List of actions that the hook is going to target", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Action" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "InvocationPoints": { + "description": "List of invocation points that the hook is going to target", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InvocationPoint" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TargetNames": { + "description": "List of type names that the hook is going to target", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TargetName" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Targets": { + "description": "List of hook targets", + "items": { + "$ref": "#/definitions/HookTarget" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Targets" + ], + "type": "object" + } + ], + "type": "object" + }, + "TargetOperations": { + "description": "Which operations should this Hook run against? Resource changes, stacks or change sets.", + "items": { + "$ref": "#/definitions/TargetOperation" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/HookArn" + ], + "required": [ + "RuleLocation", + "HookStatus", + "TargetOperations", + "FailureMode", + "Alias", + "ExecutionRole" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFormation::GuardHook" +} diff --git a/src/schema/aws-cloudformation-hookdefaultversion.json b/src/schema/aws-cloudformation-hookdefaultversion.json index 8031768f..61d51637 100644 --- a/src/schema/aws-cloudformation-hookdefaultversion.json +++ b/src/schema/aws-cloudformation-hookdefaultversion.json @@ -1,85 +1,85 @@ -{ - "additionalProperties": false, - "description": "Set a version as default version for a hook in CloudFormation Registry.", - "handlers": { - "create": { - "permissions": [ - "cloudformation:SetTypeDefaultVersion" - ] - }, - "delete": { - "permissions": [] - }, - "list": { - "handlerSchema": { - "properties": { - "TypeName": { - "$ref": "resource-schema.json#/properties/TypeName" - } - } - }, - "permissions": [ - "cloudformation:ListTypes" - ] - }, - "read": { - "permissions": [ - "cloudformation:DescribeType" - ] - }, - "update": { - "permissions": [ - "cloudformation:SetTypeDefaultVersion" - ] - } - }, - "oneOf": [ - { - "required": [ - "TypeVersionArn" - ] - }, - { - "required": [ - "TypeName", - "VersionId" - ] - } - ], - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the type. This is used to uniquely identify a HookDefaultVersion", - "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/hook/.+$", - "type": "string" - }, - "TypeName": { - "description": "The name of the type being registered.\n\nWe recommend that type names adhere to the following pattern: company_or_organization::service::type.", - "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", - "type": "string" - }, - "TypeVersionArn": { - "description": "The Amazon Resource Name (ARN) of the type version.", - "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/hook/.+$", - "type": "string" - }, - "VersionId": { - "description": "The ID of an existing version of the hook to set as the default.", - "pattern": "^[A-Za-z0-9-]{1,128}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CloudFormation::HookDefaultVersion" -} +{ + "additionalProperties": false, + "description": "Set a version as default version for a hook in CloudFormation Registry.", + "handlers": { + "create": { + "permissions": [ + "cloudformation:SetTypeDefaultVersion" + ] + }, + "delete": { + "permissions": [] + }, + "list": { + "handlerSchema": { + "properties": { + "TypeName": { + "$ref": "resource-schema.json#/properties/TypeName" + } + } + }, + "permissions": [ + "cloudformation:ListTypes" + ] + }, + "read": { + "permissions": [ + "cloudformation:DescribeType" + ] + }, + "update": { + "permissions": [ + "cloudformation:SetTypeDefaultVersion" + ] + } + }, + "oneOf": [ + { + "required": [ + "TypeVersionArn" + ] + }, + { + "required": [ + "TypeName", + "VersionId" + ] + } + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the type. This is used to uniquely identify a HookDefaultVersion", + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/hook/.+$", + "type": "string" + }, + "TypeName": { + "description": "The name of the type being registered.\n\nWe recommend that type names adhere to the following pattern: company_or_organization::service::type.", + "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", + "type": "string" + }, + "TypeVersionArn": { + "description": "The Amazon Resource Name (ARN) of the type version.", + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/hook/.+$", + "type": "string" + }, + "VersionId": { + "description": "The ID of an existing version of the hook to set as the default.", + "pattern": "^[A-Za-z0-9-]{1,128}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFormation::HookDefaultVersion" +} diff --git a/src/schema/aws-cloudformation-hooktypeconfig.json b/src/schema/aws-cloudformation-hooktypeconfig.json index 8c6dac4a..7ac619da 100644 --- a/src/schema/aws-cloudformation-hooktypeconfig.json +++ b/src/schema/aws-cloudformation-hooktypeconfig.json @@ -1,104 +1,104 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConfigurationAlias" - ], - "description": "Specifies the configuration data for a registered hook in CloudFormation Registry.", - "handlers": { - "create": { - "permissions": [ - "cloudformation:SetTypeConfiguration" - ] - }, - "delete": { - "permissions": [ - "cloudformation:SetTypeConfiguration" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "TypeArn": { - "$ref": "resource-schema.json#/properties/TypeArn" - }, - "TypeName": { - "$ref": "resource-schema.json#/properties/TypeName" - } - } - }, - "permissions": [ - "cloudformation:ListTypes", - "cloudformation:BatchDescribeTypeConfigurations" - ] - }, - "read": { - "permissions": [ - "cloudformation:BatchDescribeTypeConfigurations" - ] - }, - "update": { - "permissions": [ - "cloudformation:SetTypeConfiguration" - ] - } - }, - "oneOf": [ - { - "required": [ - "TypeArn", - "Configuration" - ] - }, - { - "required": [ - "TypeName", - "Configuration" - ] - } - ], - "primaryIdentifier": [ - "/properties/ConfigurationArn" - ], - "properties": { - "Configuration": { - "description": "The configuration data for the extension, in this account and region.", - "pattern": "[\\s\\S]+", - "type": "string" - }, - "ConfigurationAlias": { - "default": "default", - "description": "An alias by which to refer to this extension configuration data.", - "enum": [ - "default" - ], - "pattern": "^[a-zA-Z0-9]{1,256}$", - "type": "string" - }, - "ConfigurationArn": { - "description": "The Amazon Resource Name (ARN) for the configuration data, in this account and region.", - "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type(-configuration)?/hook/.+$", - "type": "string" - }, - "TypeArn": { - "description": "The Amazon Resource Name (ARN) of the type without version number.", - "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/hook/.+$", - "type": "string" - }, - "TypeName": { - "description": "The name of the type being registered.\n\nWe recommend that type names adhere to the following pattern: company_or_organization::service::type.", - "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ConfigurationArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CloudFormation::HookTypeConfig" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConfigurationAlias" + ], + "description": "Specifies the configuration data for a registered hook in CloudFormation Registry.", + "handlers": { + "create": { + "permissions": [ + "cloudformation:SetTypeConfiguration" + ] + }, + "delete": { + "permissions": [ + "cloudformation:SetTypeConfiguration" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TypeArn": { + "$ref": "resource-schema.json#/properties/TypeArn" + }, + "TypeName": { + "$ref": "resource-schema.json#/properties/TypeName" + } + } + }, + "permissions": [ + "cloudformation:ListTypes", + "cloudformation:BatchDescribeTypeConfigurations" + ] + }, + "read": { + "permissions": [ + "cloudformation:BatchDescribeTypeConfigurations" + ] + }, + "update": { + "permissions": [ + "cloudformation:SetTypeConfiguration" + ] + } + }, + "oneOf": [ + { + "required": [ + "TypeArn", + "Configuration" + ] + }, + { + "required": [ + "TypeName", + "Configuration" + ] + } + ], + "primaryIdentifier": [ + "/properties/ConfigurationArn" + ], + "properties": { + "Configuration": { + "description": "The configuration data for the extension, in this account and region.", + "pattern": "[\\s\\S]+", + "type": "string" + }, + "ConfigurationAlias": { + "default": "default", + "description": "An alias by which to refer to this extension configuration data.", + "enum": [ + "default" + ], + "pattern": "^[a-zA-Z0-9]{1,256}$", + "type": "string" + }, + "ConfigurationArn": { + "description": "The Amazon Resource Name (ARN) for the configuration data, in this account and region.", + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type(-configuration)?/hook/.+$", + "type": "string" + }, + "TypeArn": { + "description": "The Amazon Resource Name (ARN) of the type without version number.", + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/hook/.+$", + "type": "string" + }, + "TypeName": { + "description": "The name of the type being registered.\n\nWe recommend that type names adhere to the following pattern: company_or_organization::service::type.", + "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ConfigurationArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFormation::HookTypeConfig" +} diff --git a/src/schema/aws-cloudformation-hookversion.json b/src/schema/aws-cloudformation-hookversion.json index 4abb2d45..e2499908 100644 --- a/src/schema/aws-cloudformation-hookversion.json +++ b/src/schema/aws-cloudformation-hookversion.json @@ -1,145 +1,145 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ExecutionRoleArn", - "/properties/LoggingConfig", - "/properties/SchemaHandlerPackage", - "/properties/TypeName" - ], - "definitions": { - "LoggingConfig": { - "additionalProperties": false, - "properties": { - "LogGroupName": { - "description": "The Amazon CloudWatch log group to which CloudFormation sends error logging information when invoking the type's handlers.", - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\.\\-_/#A-Za-z0-9]+$", - "type": "string" - }, - "LogRoleArn": { - "description": "The ARN of the role that CloudFormation should assume when sending log entries to CloudWatch logs.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Publishes new or first hook version to AWS CloudFormation Registry.", - "handlers": { - "create": { - "permissions": [ - "cloudformation:DescribeType", - "cloudformation:DescribeTypeRegistration", - "cloudformation:RegisterType", - "iam:PassRole", - "s3:GetObject", - "s3:ListBucket", - "kms:Decrypt" - ] - }, - "delete": { - "permissions": [ - "cloudformation:DeregisterType", - "cloudformation:DescribeType" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "TypeArn": { - "$ref": "resource-schema.json#/properties/TypeArn" - }, - "TypeName": { - "$ref": "resource-schema.json#/properties/TypeName" - } - } - }, - "permissions": [ - "cloudformation:ListTypes", - "cloudformation:ListTypeVersions" - ] - }, - "read": { - "permissions": [ - "cloudformation:DescribeType" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the type, here the HookVersion. This is used to uniquely identify a HookVersion resource", - "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/hook/.+$", - "type": "string" - }, - "ExecutionRoleArn": { - "description": "The Amazon Resource Name (ARN) of the IAM execution role to use to register the type. If your resource type calls AWS APIs in any of its handlers, you must create an IAM execution role that includes the necessary permissions to call those AWS APIs, and provision that execution role in your account. CloudFormation then assumes that execution role to provide your resource type with the appropriate credentials.", - "maxLength": 256, - "pattern": "arn:.+:iam::[0-9]{12}:role/.+", - "type": "string" - }, - "IsDefaultVersion": { - "description": "Indicates if this type version is the current default version", - "type": "boolean" - }, - "LoggingConfig": { - "$ref": "#/definitions/LoggingConfig", - "description": "Specifies logging configuration information for a type." - }, - "SchemaHandlerPackage": { - "description": "A url to the S3 bucket containing the schema handler package that contains the schema, event handlers, and associated files for the type you want to register.\n\nFor information on generating a schema handler package for the type you want to register, see submit in the CloudFormation CLI User Guide.", - "maxLength": 4096, - "type": "string" - }, - "TypeArn": { - "description": "The Amazon Resource Name (ARN) of the type without the versionID.", - "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/hook/.+$", - "type": "string" - }, - "TypeName": { - "description": "The name of the type being registered.\n\nWe recommend that type names adhere to the following pattern: company_or_organization::service::type.", - "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", - "type": "string" - }, - "VersionId": { - "description": "The ID of the version of the type represented by this hook instance.", - "pattern": "^[A-Za-z0-9-]{1,128}$", - "type": "string" - }, - "Visibility": { - "description": "The scope at which the type is visible and usable in CloudFormation operations.\n\nValid values include:\n\nPRIVATE: The type is only visible and usable within the account in which it is registered. Currently, AWS CloudFormation marks any types you register as PRIVATE.\n\nPUBLIC: The type is publically visible and usable within any Amazon account.", - "enum": [ - "PUBLIC", - "PRIVATE" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/IsDefaultVersion", - "/properties/Visibility", - "/properties/VersionId", - "/properties/TypeArn" - ], - "required": [ - "SchemaHandlerPackage", - "TypeName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CloudFormation::HookVersion", - "writeOnlyProperties": [ - "/properties/SchemaHandlerPackage" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ExecutionRoleArn", + "/properties/LoggingConfig", + "/properties/SchemaHandlerPackage", + "/properties/TypeName" + ], + "definitions": { + "LoggingConfig": { + "additionalProperties": false, + "properties": { + "LogGroupName": { + "description": "The Amazon CloudWatch log group to which CloudFormation sends error logging information when invoking the type's handlers.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\.\\-_/#A-Za-z0-9]+$", + "type": "string" + }, + "LogRoleArn": { + "description": "The ARN of the role that CloudFormation should assume when sending log entries to CloudWatch logs.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Publishes new or first hook version to AWS CloudFormation Registry.", + "handlers": { + "create": { + "permissions": [ + "cloudformation:DescribeType", + "cloudformation:DescribeTypeRegistration", + "cloudformation:RegisterType", + "iam:PassRole", + "s3:GetObject", + "s3:ListBucket", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "cloudformation:DeregisterType", + "cloudformation:DescribeType" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TypeArn": { + "$ref": "resource-schema.json#/properties/TypeArn" + }, + "TypeName": { + "$ref": "resource-schema.json#/properties/TypeName" + } + } + }, + "permissions": [ + "cloudformation:ListTypes", + "cloudformation:ListTypeVersions" + ] + }, + "read": { + "permissions": [ + "cloudformation:DescribeType" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the type, here the HookVersion. This is used to uniquely identify a HookVersion resource", + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/hook/.+$", + "type": "string" + }, + "ExecutionRoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM execution role to use to register the type. If your resource type calls AWS APIs in any of its handlers, you must create an IAM execution role that includes the necessary permissions to call those AWS APIs, and provision that execution role in your account. CloudFormation then assumes that execution role to provide your resource type with the appropriate credentials.", + "maxLength": 256, + "pattern": "arn:.+:iam::[0-9]{12}:role/.+", + "type": "string" + }, + "IsDefaultVersion": { + "description": "Indicates if this type version is the current default version", + "type": "boolean" + }, + "LoggingConfig": { + "$ref": "#/definitions/LoggingConfig", + "description": "Specifies logging configuration information for a type." + }, + "SchemaHandlerPackage": { + "description": "A url to the S3 bucket containing the schema handler package that contains the schema, event handlers, and associated files for the type you want to register.\n\nFor information on generating a schema handler package for the type you want to register, see submit in the CloudFormation CLI User Guide.", + "maxLength": 4096, + "type": "string" + }, + "TypeArn": { + "description": "The Amazon Resource Name (ARN) of the type without the versionID.", + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/hook/.+$", + "type": "string" + }, + "TypeName": { + "description": "The name of the type being registered.\n\nWe recommend that type names adhere to the following pattern: company_or_organization::service::type.", + "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", + "type": "string" + }, + "VersionId": { + "description": "The ID of the version of the type represented by this hook instance.", + "pattern": "^[A-Za-z0-9-]{1,128}$", + "type": "string" + }, + "Visibility": { + "description": "The scope at which the type is visible and usable in CloudFormation operations.\n\nValid values include:\n\nPRIVATE: The type is only visible and usable within the account in which it is registered. Currently, AWS CloudFormation marks any types you register as PRIVATE.\n\nPUBLIC: The type is publically visible and usable within any Amazon account.", + "enum": [ + "PUBLIC", + "PRIVATE" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/IsDefaultVersion", + "/properties/Visibility", + "/properties/VersionId", + "/properties/TypeArn" + ], + "required": [ + "SchemaHandlerPackage", + "TypeName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFormation::HookVersion", + "writeOnlyProperties": [ + "/properties/SchemaHandlerPackage" + ] +} diff --git a/src/schema/aws-cloudformation-lambdahook.json b/src/schema/aws-cloudformation-lambdahook.json new file mode 100644 index 00000000..cde28dd0 --- /dev/null +++ b/src/schema/aws-cloudformation-lambdahook.json @@ -0,0 +1,343 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Alias" + ], + "definitions": { + "Action": { + "description": "Target actions are the type of operation hooks will be executed at.", + "enum": [ + "CREATE", + "UPDATE", + "DELETE" + ], + "type": "string" + }, + "HookTarget": { + "additionalProperties": false, + "description": "Hook targets are the destination where hooks will be invoked against.", + "properties": { + "Action": { + "$ref": "#/definitions/Action" + }, + "InvocationPoint": { + "$ref": "#/definitions/InvocationPoint" + }, + "TargetName": { + "$ref": "#/definitions/TargetName" + } + }, + "required": [ + "TargetName", + "Action", + "InvocationPoint" + ], + "type": "object" + }, + "InvocationPoint": { + "description": "Invocation points are the point in provisioning workflow where hooks will be executed.", + "enum": [ + "PRE_PROVISION" + ], + "type": "string" + }, + "Role": { + "description": "IAM Role ARN", + "maxLength": 256, + "pattern": "arn:.+:iam::[0-9]{12}:role/.+", + "type": "string" + }, + "StackName": { + "description": "CloudFormation Stack name", + "maxLength": 128, + "pattern": "^[a-zA-Z*?][-a-zA-Z0-9*?]*$", + "type": "string" + }, + "StackRole": { + "anyOf": [ + { + "pattern": "arn:.+:iam::[0-9]{12}:role/.+" + }, + { + "pattern": "^(arn:.+:iam::((?!\\*|\\?)[0-9]{12}|(?=.*\\*)[0-9*?]{1,12}|[0-9?]{12}):role/.+|\\*)$" + } + ], + "description": "IAM Stack Role ARN filter", + "maxLength": 256, + "type": "string" + }, + "TargetName": { + "description": "Type name of hook target. Hook targets are the destination where hooks will be invoked against.", + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!.*\\*\\?).*$", + "type": "string" + }, + "TargetOperation": { + "description": "Which operations should this Hook run against? Resource changes, stacks or change sets.", + "enum": [ + "RESOURCE", + "STACK", + "CHANGE_SET", + "CLOUD_CONTROL" + ], + "type": "string" + } + }, + "description": "This is a CloudFormation resource for the first-party AWS::Hooks::LambdaHook.", + "handlers": { + "create": { + "permissions": [ + "cloudformation:ListTypes", + "cloudformation:ActivateType", + "cloudformation:BatchDescribeTypeConfigurations", + "cloudformation:DescribeType", + "cloudformation:SetTypeConfiguration", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "cloudformation:BatchDescribeTypeConfigurations", + "cloudformation:DeactivateType", + "cloudformation:DescribeType", + "cloudformation:SetTypeConfiguration" + ] + }, + "list": { + "permissions": [ + "cloudformation:ListTypes", + "cloudformation:BatchDescribeTypeConfigurations", + "cloudformation:DescribeType" + ] + }, + "read": { + "permissions": [ + "cloudformation:BatchDescribeTypeConfigurations", + "cloudformation:DescribeType" + ] + }, + "update": { + "permissions": [ + "cloudformation:BatchDescribeTypeConfigurations", + "cloudformation:DescribeType", + "cloudformation:SetTypeConfiguration", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/HookArn" + ], + "properties": { + "Alias": { + "description": "The typename alias for the hook.", + "pattern": "^(?!(?i)aws)[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", + "type": "string" + }, + "ExecutionRole": { + "$ref": "#/definitions/Role", + "description": "The execution role ARN assumed by Hooks to invoke Lambda." + }, + "FailureMode": { + "description": "Attribute to specify CloudFormation behavior on hook failure.", + "enum": [ + "FAIL", + "WARN" + ], + "type": "string" + }, + "HookArn": { + "description": "The Amazon Resource Name (ARN) of the activated hook", + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/hook/.+$", + "type": "string" + }, + "HookStatus": { + "default": "ENABLED", + "description": "Attribute to specify which stacks this hook applies to or should get invoked for", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "LambdaFunction": { + "description": "Amazon Resource Name (ARN), Partial ARN, name, version, or alias of the Lambda function to invoke with this hook.", + "maxLength": 170, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "StackFilters": { + "additionalProperties": false, + "description": "Filters to allow hooks to target specific stack attributes", + "properties": { + "FilteringCriteria": { + "default": "ALL", + "description": "Attribute to specify the filtering behavior. ANY will make the Hook pass if one filter matches. ALL will make the Hook pass if all filters match", + "enum": [ + "ALL", + "ANY" + ], + "type": "string" + }, + "StackNames": { + "additionalProperties": false, + "description": "List of stack names as filters", + "minProperties": 1, + "properties": { + "Exclude": { + "description": "List of stack names that the hook is going to be excluded from", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StackName" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Include": { + "description": "List of stack names that the hook is going to target", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StackName" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "StackRoles": { + "additionalProperties": false, + "description": "List of stack roles that are performing the stack operations.", + "minProperties": 1, + "properties": { + "Exclude": { + "description": "List of stack roles that the hook is going to be excluded from", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StackRole" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Include": { + "description": "List of stack roles that the hook is going to target", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StackRole" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + } + }, + "required": [ + "FilteringCriteria" + ], + "type": "object" + }, + "TargetFilters": { + "description": "Attribute to specify which targets should invoke the hook", + "oneOf": [ + { + "additionalProperties": false, + "minProperties": 1, + "properties": { + "Actions": { + "description": "List of actions that the hook is going to target", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Action" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "InvocationPoints": { + "description": "List of invocation points that the hook is going to target", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InvocationPoint" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TargetNames": { + "description": "List of type names that the hook is going to target", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TargetName" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Targets": { + "description": "List of hook targets", + "items": { + "$ref": "#/definitions/HookTarget" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Targets" + ], + "type": "object" + } + ], + "type": "object" + }, + "TargetOperations": { + "description": "Which operations should this Hook run against? Resource changes, stacks or change sets.", + "items": { + "$ref": "#/definitions/TargetOperation" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/HookArn" + ], + "required": [ + "LambdaFunction", + "FailureMode", + "Alias", + "ExecutionRole", + "TargetOperations", + "HookStatus" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFormation::LambdaHook" +} diff --git a/src/schema/aws-cloudformation-macro.json b/src/schema/aws-cloudformation-macro.json index 085cb427..a1d9ca29 100644 --- a/src/schema/aws-cloudformation-macro.json +++ b/src/schema/aws-cloudformation-macro.json @@ -1,38 +1,38 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "description": "Resource Type definition for AWS::CloudFormation::Macro", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "FunctionName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "LogGroupName": { - "type": "string" - }, - "LogRoleARN": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "FunctionName", - "Name" - ], - "typeName": "AWS::CloudFormation::Macro" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "description": "Resource Type definition for AWS::CloudFormation::Macro", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "type": "string" + }, + "FunctionName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "LogGroupName": { + "type": "string" + }, + "LogRoleARN": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName", + "Name" + ], + "typeName": "AWS::CloudFormation::Macro" +} diff --git a/src/schema/aws-cloudformation-moduledefaultversion.json b/src/schema/aws-cloudformation-moduledefaultversion.json index 14a7706b..05ae93a2 100644 --- a/src/schema/aws-cloudformation-moduledefaultversion.json +++ b/src/schema/aws-cloudformation-moduledefaultversion.json @@ -1,74 +1,74 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ModuleName" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Arn", - "/properties/ModuleName", - "/properties/VersionId" - ], - "description": "A module that has been registered in the CloudFormation registry as the default version", - "handlers": { - "create": { - "permissions": [ - "cloudformation:DescribeType", - "cloudformation:SetTypeDefaultVersion" - ] - }, - "delete": { - "permissions": [] - }, - "list": { - "permissions": [ - "cloudformation:ListTypes" - ] - }, - "read": { - "permissions": [ - "cloudformation:DescribeType" - ] - } - }, - "oneOf": [ - { - "required": [ - "Arn" - ] - }, - { - "required": [ - "ModuleName", - "VersionId" - ] - } - ], - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the module version to set as the default version.", - "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/module/.+/[0-9]{8}$", - "type": "string" - }, - "ModuleName": { - "description": "The name of a module existing in the registry.", - "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::MODULE", - "type": "string" - }, - "VersionId": { - "description": "The ID of an existing version of the named module to set as the default.", - "pattern": "^[0-9]{8}$", - "type": "string" - } - }, - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", - "typeName": "AWS::CloudFormation::ModuleDefaultVersion", - "writeOnlyProperties": [ - "/properties/ModuleName", - "/properties/VersionId" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/ModuleName" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Arn", + "/properties/ModuleName", + "/properties/VersionId" + ], + "description": "A module that has been registered in the CloudFormation registry as the default version", + "handlers": { + "create": { + "permissions": [ + "cloudformation:DescribeType", + "cloudformation:SetTypeDefaultVersion" + ] + }, + "delete": { + "permissions": [] + }, + "list": { + "permissions": [ + "cloudformation:ListTypes" + ] + }, + "read": { + "permissions": [ + "cloudformation:DescribeType" + ] + } + }, + "oneOf": [ + { + "required": [ + "Arn" + ] + }, + { + "required": [ + "ModuleName", + "VersionId" + ] + } + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the module version to set as the default version.", + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/module/.+/[0-9]{8}$", + "type": "string" + }, + "ModuleName": { + "description": "The name of a module existing in the registry.", + "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::MODULE", + "type": "string" + }, + "VersionId": { + "description": "The ID of an existing version of the named module to set as the default.", + "pattern": "^[0-9]{8}$", + "type": "string" + } + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", + "typeName": "AWS::CloudFormation::ModuleDefaultVersion", + "writeOnlyProperties": [ + "/properties/ModuleName", + "/properties/VersionId" + ] +} diff --git a/src/schema/aws-cloudformation-moduleversion.json b/src/schema/aws-cloudformation-moduleversion.json index ae65ff62..92e9c555 100644 --- a/src/schema/aws-cloudformation-moduleversion.json +++ b/src/schema/aws-cloudformation-moduleversion.json @@ -1,106 +1,106 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ModuleName", - "/properties/ModulePackage" - ], - "description": "A module that has been registered in the CloudFormation registry.", - "handlers": { - "create": { - "permissions": [ - "cloudformation:DescribeType", - "cloudformation:DescribeTypeRegistration", - "cloudformation:ListTypeVersions", - "cloudformation:RegisterType", - "s3:GetObject", - "s3:ListBucket" - ] - }, - "delete": { - "permissions": [ - "cloudformation:DeregisterType", - "cloudformation:DescribeType" - ] - }, - "read": { - "permissions": [ - "cloudformation:DescribeType" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the module.", - "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/module/.+$", - "type": "string" - }, - "Description": { - "description": "The description of the registered module.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "DocumentationUrl": { - "description": "The URL of a page providing detailed documentation for this module.", - "maxLength": 4096, - "type": "string" - }, - "IsDefaultVersion": { - "description": "Indicator of whether this module version is the current default version", - "type": "boolean" - }, - "ModuleName": { - "description": "The name of the module being registered.\n\nRecommended module naming pattern: company_or_organization::service::type::MODULE.", - "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::MODULE", - "type": "string" - }, - "ModulePackage": { - "description": "The url to the S3 bucket containing the schema and template fragment for the module you want to register.", - "type": "string" - }, - "Schema": { - "description": "The schema defining input parameters to and resources generated by the module.", - "maxLength": 16777216, - "minLength": 1, - "type": "string" - }, - "TimeCreated": { - "description": "The time that the specified module version was registered.", - "type": "string" - }, - "VersionId": { - "description": "The version ID of the module represented by this module instance.", - "pattern": "^[0-9]{8}$", - "type": "string" - }, - "Visibility": { - "description": "The scope at which the type is visible and usable in CloudFormation operations.\n\nThe only allowed value at present is:\n\nPRIVATE: The type is only visible and usable within the account in which it is registered. Currently, AWS CloudFormation marks any types you register as PRIVATE.", - "enum": [ - "PRIVATE" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Description", - "/properties/DocumentationUrl", - "/properties/IsDefaultVersion", - "/properties/Schema", - "/properties/TimeCreated", - "/properties/VersionId", - "/properties/Visibility" - ], - "required": [ - "ModuleName", - "ModulePackage" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", - "typeName": "AWS::CloudFormation::ModuleVersion", - "writeOnlyProperties": [ - "/properties/ModulePackage" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ModuleName", + "/properties/ModulePackage" + ], + "description": "A module that has been registered in the CloudFormation registry.", + "handlers": { + "create": { + "permissions": [ + "cloudformation:DescribeType", + "cloudformation:DescribeTypeRegistration", + "cloudformation:ListTypeVersions", + "cloudformation:RegisterType", + "s3:GetObject", + "s3:ListBucket" + ] + }, + "delete": { + "permissions": [ + "cloudformation:DeregisterType", + "cloudformation:DescribeType" + ] + }, + "read": { + "permissions": [ + "cloudformation:DescribeType" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the module.", + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/module/.+$", + "type": "string" + }, + "Description": { + "description": "The description of the registered module.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "DocumentationUrl": { + "description": "The URL of a page providing detailed documentation for this module.", + "maxLength": 4096, + "type": "string" + }, + "IsDefaultVersion": { + "description": "Indicator of whether this module version is the current default version", + "type": "boolean" + }, + "ModuleName": { + "description": "The name of the module being registered.\n\nRecommended module naming pattern: company_or_organization::service::type::MODULE.", + "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::MODULE", + "type": "string" + }, + "ModulePackage": { + "description": "The url to the S3 bucket containing the schema and template fragment for the module you want to register.", + "type": "string" + }, + "Schema": { + "description": "The schema defining input parameters to and resources generated by the module.", + "maxLength": 16777216, + "minLength": 1, + "type": "string" + }, + "TimeCreated": { + "description": "The time that the specified module version was registered.", + "type": "string" + }, + "VersionId": { + "description": "The version ID of the module represented by this module instance.", + "pattern": "^[0-9]{8}$", + "type": "string" + }, + "Visibility": { + "description": "The scope at which the type is visible and usable in CloudFormation operations.\n\nThe only allowed value at present is:\n\nPRIVATE: The type is only visible and usable within the account in which it is registered. Currently, AWS CloudFormation marks any types you register as PRIVATE.", + "enum": [ + "PRIVATE" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Description", + "/properties/DocumentationUrl", + "/properties/IsDefaultVersion", + "/properties/Schema", + "/properties/TimeCreated", + "/properties/VersionId", + "/properties/Visibility" + ], + "required": [ + "ModuleName", + "ModulePackage" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", + "typeName": "AWS::CloudFormation::ModuleVersion", + "writeOnlyProperties": [ + "/properties/ModulePackage" + ] +} diff --git a/src/schema/aws-cloudformation-publictypeversion.json b/src/schema/aws-cloudformation-publictypeversion.json index 333db580..f4180162 100644 --- a/src/schema/aws-cloudformation-publictypeversion.json +++ b/src/schema/aws-cloudformation-publictypeversion.json @@ -1,112 +1,113 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LogDeliveryBucket", - "/properties/PublicVersionNumber", - "/properties/TypeName", - "/properties/Type", - "/properties/Arn" - ], - "description": "Test and Publish a resource that has been registered in the CloudFormation Registry.", - "handlers": { - "create": { - "permissions": [ - "cloudformation:TestType", - "cloudformation:DescribeType", - "cloudformation:PublishType", - "cloudformation:DescribePublisher", - "s3:GetObject", - "s3:PutObject" - ] - }, - "delete": { - "permissions": [] - }, - "list": { - "permissions": [ - "cloudformation:ListTypes" - ] - }, - "read": { - "permissions": [ - "cloudformation:DescribeType", - "cloudformation:DescribePublisher" - ] - } - }, - "oneOf": [ - { - "required": [ - "TypeName", - "Type" - ] - }, - { - "required": [ - "Arn" - ] - } - ], - "primaryIdentifier": [ - "/properties/PublicTypeArn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Number (ARN) of the extension.", - "pattern": "arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:[0-9]{12}:type/.+", - "type": "string" - }, - "LogDeliveryBucket": { - "description": "A url to the S3 bucket where logs for the testType run will be available", - "type": "string" - }, - "PublicTypeArn": { - "description": "The Amazon Resource Number (ARN) assigned to the public extension upon publication", - "maxLength": 1024, - "pattern": "arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/.+", - "type": "string" - }, - "PublicVersionNumber": { - "description": "The version number of a public third-party extension", - "maxLength": 64, - "minLength": 5, - "type": "string" - }, - "PublisherId": { - "description": "The publisher id assigned by CloudFormation for publishing in this region.", - "maxLength": 40, - "minLength": 1, - "pattern": "[0-9a-zA-Z]{40}", - "type": "string" - }, - "Type": { - "description": "The kind of extension", - "enum": [ - "RESOURCE", - "MODULE", - "HOOK" - ], - "type": "string" - }, - "TypeName": { - "description": "The name of the type being registered.\n\nWe recommend that type names adhere to the following pattern: company_or_organization::service::type.", - "pattern": "[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}(::MODULE){0,1}", - "type": "string" - }, - "TypeVersionArn": { - "description": "The Amazon Resource Number (ARN) of the extension with the versionId.", - "pattern": "arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:[0-9]{12}:type/.+", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/PublicTypeArn", - "/properties/TypeVersionArn", - "/properties/PublisherId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", - "typeName": "AWS::CloudFormation::PublicTypeVersion", - "writeOnlyProperties": [ - "/properties/Arn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LogDeliveryBucket", + "/properties/PublicVersionNumber", + "/properties/TypeName", + "/properties/Type", + "/properties/Arn" + ], + "description": "Test and Publish a resource that has been registered in the CloudFormation Registry.", + "handlers": { + "create": { + "permissions": [ + "cloudformation:TestType", + "cloudformation:DescribeType", + "cloudformation:PublishType", + "cloudformation:DescribePublisher", + "s3:GetObject", + "s3:PutObject" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [] + }, + "list": { + "permissions": [ + "cloudformation:ListTypes" + ] + }, + "read": { + "permissions": [ + "cloudformation:DescribeType", + "cloudformation:DescribePublisher" + ] + } + }, + "oneOf": [ + { + "required": [ + "TypeName", + "Type" + ] + }, + { + "required": [ + "Arn" + ] + } + ], + "primaryIdentifier": [ + "/properties/PublicTypeArn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Number (ARN) of the extension.", + "pattern": "arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:[0-9]{12}:type/.+", + "type": "string" + }, + "LogDeliveryBucket": { + "description": "A url to the S3 bucket where logs for the testType run will be available", + "type": "string" + }, + "PublicTypeArn": { + "description": "The Amazon Resource Number (ARN) assigned to the public extension upon publication", + "maxLength": 1024, + "pattern": "arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/.+", + "type": "string" + }, + "PublicVersionNumber": { + "description": "The version number of a public third-party extension", + "maxLength": 64, + "minLength": 5, + "type": "string" + }, + "PublisherId": { + "description": "The reserved publisher id for this type, or the publisher id assigned by CloudFormation for publishing in this region.", + "maxLength": 40, + "minLength": 1, + "pattern": "[0-9a-zA-Z-]{1,40}", + "type": "string" + }, + "Type": { + "description": "The kind of extension", + "enum": [ + "RESOURCE", + "MODULE", + "HOOK" + ], + "type": "string" + }, + "TypeName": { + "description": "The name of the type being registered.\n\nWe recommend that type names adhere to the following pattern: company_or_organization::service::type.", + "pattern": "[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}(::MODULE){0,1}", + "type": "string" + }, + "TypeVersionArn": { + "description": "The Amazon Resource Number (ARN) of the extension with the versionId.", + "pattern": "arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:[0-9]{12}:type/.+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/PublicTypeArn", + "/properties/TypeVersionArn", + "/properties/PublisherId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", + "typeName": "AWS::CloudFormation::PublicTypeVersion", + "writeOnlyProperties": [ + "/properties/Arn" + ] +} diff --git a/src/schema/aws-cloudformation-publisher.json b/src/schema/aws-cloudformation-publisher.json index dc432281..6ab7722e 100644 --- a/src/schema/aws-cloudformation-publisher.json +++ b/src/schema/aws-cloudformation-publisher.json @@ -1,89 +1,86 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AcceptTermsAndConditions", - "/properties/ConnectionArn" - ], - "description": "Register as a publisher in the CloudFormation Registry.", - "handlers": { - "create": { - "permissions": [ - "cloudformation:RegisterPublisher", - "cloudformation:DescribePublisher", - "codestar-connections:GetConnection", - "codestar-connections:UseConnection" - ] - }, - "delete": { - "permissions": [] - }, - "list": { - "permissions": [ - "cloudformation:DescribePublisher" - ] - }, - "read": { - "permissions": [ - "cloudformation:DescribePublisher" - ] - } - }, - "primaryIdentifier": [ - "/properties/PublisherId" - ], - "properties": { - "AcceptTermsAndConditions": { - "description": "Whether you accept the terms and conditions for publishing extensions in the CloudFormation registry. You must accept the terms and conditions in order to publish public extensions to the CloudFormation registry. The terms and conditions can be found at https://cloudformation-registry-documents.s3.amazonaws.com/Terms_and_Conditions_for_AWS_CloudFormation_Registry_Publishers.pdf", - "type": "boolean" - }, - "ConnectionArn": { - "description": "If you are using a Bitbucket or GitHub account for identity verification, the Amazon Resource Name (ARN) for your connection to that account.", - "pattern": "arn:aws(-[w]+)*:.+:.+:[0-9]{12}:.+", - "type": "string" - }, - "IdentityProvider": { - "description": "The type of account used as the identity provider when registering this publisher with CloudFormation.", - "enum": [ - "AWS_Marketplace", - "GitHub", - "Bitbucket" - ], - "type": "string" - }, - "PublisherId": { - "description": "The publisher id assigned by CloudFormation for publishing in this region.", - "maxLength": 40, - "minLength": 1, - "pattern": "[0-9a-zA-Z]{40}", - "type": "string" - }, - "PublisherProfile": { - "description": "The URL to the publisher's profile with the identity provider.", - "maxLength": 1024, - "pattern": "(http:|https:)+[^s]+[w]", - "type": "string" - }, - "PublisherStatus": { - "description": "Whether the publisher is verified.", - "enum": [ - "VERIFIED", - "UNVERIFIED" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/PublisherId", - "/properties/PublisherStatus", - "/properties/PublisherProfile", - "/properties/IdentityProvider" - ], - "required": [ - "AcceptTermsAndConditions" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", - "typeName": "AWS::CloudFormation::Publisher", - "writeOnlyProperties": [ - "/properties/ConnectionArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AcceptTermsAndConditions", + "/properties/ConnectionArn" + ], + "description": "Register as a publisher in the CloudFormation Registry.", + "handlers": { + "create": { + "permissions": [ + "cloudformation:RegisterPublisher", + "cloudformation:DescribePublisher", + "codestar-connections:GetConnection", + "codestar-connections:UseConnection" + ] + }, + "delete": { + "permissions": [] + }, + "list": { + "permissions": [ + "cloudformation:DescribePublisher" + ] + }, + "read": { + "permissions": [ + "cloudformation:DescribePublisher" + ] + } + }, + "primaryIdentifier": [ + "/properties/PublisherId" + ], + "properties": { + "AcceptTermsAndConditions": { + "description": "Whether you accept the terms and conditions for publishing extensions in the CloudFormation registry. You must accept the terms and conditions in order to publish public extensions to the CloudFormation registry. The terms and conditions can be found at https://cloudformation-registry-documents.s3.amazonaws.com/Terms_and_Conditions_for_AWS_CloudFormation_Registry_Publishers.pdf", + "type": "boolean" + }, + "ConnectionArn": { + "description": "If you are using a Bitbucket or GitHub account for identity verification, the Amazon Resource Name (ARN) for your connection to that account.", + "pattern": "arn:aws(-[w]+)*:.+:.+:[0-9]{12}:.+", + "type": "string" + }, + "IdentityProvider": { + "description": "The type of account used as the identity provider when registering this publisher with CloudFormation.", + "enum": [ + "AWS_Marketplace", + "GitHub", + "Bitbucket" + ], + "type": "string" + }, + "PublisherId": { + "description": "The reserved publisher id for this type, or the publisher id assigned by CloudFormation for publishing in this region.", + "maxLength": 40, + "minLength": 1, + "pattern": "[0-9a-zA-Z-]{1,40}", + "type": "string" + }, + "PublisherProfile": { + "description": "The URL to the publisher's profile with the identity provider.", + "maxLength": 1024, + "pattern": "(http:|https:)+[^s]+[w]", + "type": "string" + }, + "PublisherStatus": { + "description": "Whether the publisher is verified.", + "enum": [ + "VERIFIED", + "UNVERIFIED" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/PublisherId", + "/properties/PublisherStatus", + "/properties/PublisherProfile", + "/properties/IdentityProvider" + ], + "required": [ + "AcceptTermsAndConditions" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", + "typeName": "AWS::CloudFormation::Publisher" +} diff --git a/src/schema/aws-cloudformation-resourcedefaultversion.json b/src/schema/aws-cloudformation-resourcedefaultversion.json index 99086eec..d66c49d7 100644 --- a/src/schema/aws-cloudformation-resourcedefaultversion.json +++ b/src/schema/aws-cloudformation-resourcedefaultversion.json @@ -1,79 +1,79 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/TypeName" - ] - ], - "additionalProperties": false, - "description": "The default version of a resource that has been registered in the CloudFormation Registry.", - "handlers": { - "create": { - "permissions": [ - "cloudformation:SetTypeDefaultVersion" - ] - }, - "delete": { - "permissions": [ - "" - ] - }, - "list": { - "permissions": [ - "cloudformation:ListTypeVersions" - ] - }, - "read": { - "permissions": [ - "cloudformation:DescribeType" - ] - }, - "update": { - "permissions": [ - "cloudformation:SetTypeDefaultVersion" - ] - } - }, - "oneOf": [ - { - "required": [ - "TypeVersionArn" - ] - }, - { - "required": [ - "TypeName", - "VersionId" - ] - } - ], - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the type. This is used to uniquely identify a ResourceDefaultVersion", - "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/resource/.+$", - "type": "string" - }, - "TypeName": { - "description": "The name of the type being registered.\n\nWe recommend that type names adhere to the following pattern: company_or_organization::service::type.", - "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", - "type": "string" - }, - "TypeVersionArn": { - "description": "The Amazon Resource Name (ARN) of the type version.", - "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/resource/.+$", - "type": "string" - }, - "VersionId": { - "description": "The ID of an existing version of the resource to set as the default.", - "pattern": "^[A-Za-z0-9-]{1,128}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", - "typeName": "AWS::CloudFormation::ResourceDefaultVersion" -} +{ + "additionalIdentifiers": [ + [ + "/properties/TypeName" + ] + ], + "additionalProperties": false, + "description": "The default version of a resource that has been registered in the CloudFormation Registry.", + "handlers": { + "create": { + "permissions": [ + "cloudformation:SetTypeDefaultVersion" + ] + }, + "delete": { + "permissions": [ + "" + ] + }, + "list": { + "permissions": [ + "cloudformation:ListTypeVersions" + ] + }, + "read": { + "permissions": [ + "cloudformation:DescribeType" + ] + }, + "update": { + "permissions": [ + "cloudformation:SetTypeDefaultVersion" + ] + } + }, + "oneOf": [ + { + "required": [ + "TypeVersionArn" + ] + }, + { + "required": [ + "TypeName", + "VersionId" + ] + } + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the type. This is used to uniquely identify a ResourceDefaultVersion", + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/resource/.+$", + "type": "string" + }, + "TypeName": { + "description": "The name of the type being registered.\n\nWe recommend that type names adhere to the following pattern: company_or_organization::service::type.", + "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", + "type": "string" + }, + "TypeVersionArn": { + "description": "The Amazon Resource Name (ARN) of the type version.", + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/resource/.+$", + "type": "string" + }, + "VersionId": { + "description": "The ID of an existing version of the resource to set as the default.", + "pattern": "^[A-Za-z0-9-]{1,128}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", + "typeName": "AWS::CloudFormation::ResourceDefaultVersion" +} diff --git a/src/schema/aws-cloudformation-resourceversion.json b/src/schema/aws-cloudformation-resourceversion.json index fc6edeaa..bc3915e5 100644 --- a/src/schema/aws-cloudformation-resourceversion.json +++ b/src/schema/aws-cloudformation-resourceversion.json @@ -1,138 +1,138 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ExecutionRoleArn", - "/properties/LoggingConfig", - "/properties/SchemaHandlerPackage", - "/properties/TypeName" - ], - "definitions": { - "LoggingConfig": { - "additionalProperties": false, - "properties": { - "LogGroupName": { - "description": "The Amazon CloudWatch log group to which CloudFormation sends error logging information when invoking the type's handlers.", - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\.\\-_/#A-Za-z0-9]+$", - "type": "string" - }, - "LogRoleArn": { - "description": "The ARN of the role that CloudFormation should assume when sending log entries to CloudWatch logs.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "A resource that has been registered in the CloudFormation Registry.", - "handlers": { - "create": { - "permissions": [ - "cloudformation:DescribeTypeRegistration", - "cloudformation:RegisterType", - "iam:PassRole", - "s3:GetObject", - "s3:ListBucket", - "kms:Decrypt", - "cloudformation:ListTypeVersions", - "cloudformation:DeregisterType", - "cloudformation:DescribeType" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "cloudformation:DeregisterType", - "cloudformation:DescribeType" - ] - }, - "list": { - "permissions": [ - "cloudformation:ListTypes" - ] - }, - "read": { - "permissions": [ - "cloudformation:DescribeType" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the type, here the ResourceVersion. This is used to uniquely identify a ResourceVersion resource", - "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/resource/.+$", - "type": "string" - }, - "ExecutionRoleArn": { - "description": "The Amazon Resource Name (ARN) of the IAM execution role to use to register the type. If your resource type calls AWS APIs in any of its handlers, you must create an IAM execution role that includes the necessary permissions to call those AWS APIs, and provision that execution role in your account. CloudFormation then assumes that execution role to provide your resource type with the appropriate credentials.", - "type": "string" - }, - "IsDefaultVersion": { - "description": "Indicates if this type version is the current default version", - "type": "boolean" - }, - "LoggingConfig": { - "$ref": "#/definitions/LoggingConfig", - "description": "Specifies logging configuration information for a type." - }, - "ProvisioningType": { - "description": "The provisioning behavior of the type. AWS CloudFormation determines the provisioning type during registration, based on the types of handlers in the schema handler package submitted.", - "enum": [ - "NON_PROVISIONABLE", - "IMMUTABLE", - "FULLY_MUTABLE" - ], - "type": "string" - }, - "SchemaHandlerPackage": { - "description": "A url to the S3 bucket containing the schema handler package that contains the schema, event handlers, and associated files for the type you want to register.\n\nFor information on generating a schema handler package for the type you want to register, see submit in the CloudFormation CLI User Guide.", - "type": "string" - }, - "TypeArn": { - "description": "The Amazon Resource Name (ARN) of the type without the versionID.", - "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/resource/.+$", - "type": "string" - }, - "TypeName": { - "description": "The name of the type being registered.\n\nWe recommend that type names adhere to the following pattern: company_or_organization::service::type.", - "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", - "type": "string" - }, - "VersionId": { - "description": "The ID of the version of the type represented by this resource instance.", - "pattern": "^[A-Za-z0-9-]{1,128}$", - "type": "string" - }, - "Visibility": { - "description": "The scope at which the type is visible and usable in CloudFormation operations.\n\nValid values include:\n\nPRIVATE: The type is only visible and usable within the account in which it is registered. Currently, AWS CloudFormation marks any types you register as PRIVATE.\n\nPUBLIC: The type is publically visible and usable within any Amazon account.", - "enum": [ - "PUBLIC", - "PRIVATE" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/IsDefaultVersion", - "/properties/ProvisioningType", - "/properties/Visibility", - "/properties/VersionId", - "/properties/TypeArn" - ], - "required": [ - "SchemaHandlerPackage", - "TypeName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", - "typeName": "AWS::CloudFormation::ResourceVersion", - "writeOnlyProperties": [ - "/properties/SchemaHandlerPackage" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ExecutionRoleArn", + "/properties/LoggingConfig", + "/properties/SchemaHandlerPackage", + "/properties/TypeName" + ], + "definitions": { + "LoggingConfig": { + "additionalProperties": false, + "properties": { + "LogGroupName": { + "description": "The Amazon CloudWatch log group to which CloudFormation sends error logging information when invoking the type's handlers.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\.\\-_/#A-Za-z0-9]+$", + "type": "string" + }, + "LogRoleArn": { + "description": "The ARN of the role that CloudFormation should assume when sending log entries to CloudWatch logs.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "A resource that has been registered in the CloudFormation Registry.", + "handlers": { + "create": { + "permissions": [ + "cloudformation:DescribeTypeRegistration", + "cloudformation:RegisterType", + "iam:PassRole", + "s3:GetObject", + "s3:ListBucket", + "kms:Decrypt", + "cloudformation:ListTypeVersions", + "cloudformation:DeregisterType", + "cloudformation:DescribeType" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "cloudformation:DeregisterType", + "cloudformation:DescribeType" + ] + }, + "list": { + "permissions": [ + "cloudformation:ListTypes" + ] + }, + "read": { + "permissions": [ + "cloudformation:DescribeType" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the type, here the ResourceVersion. This is used to uniquely identify a ResourceVersion resource", + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/resource/.+$", + "type": "string" + }, + "ExecutionRoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM execution role to use to register the type. If your resource type calls AWS APIs in any of its handlers, you must create an IAM execution role that includes the necessary permissions to call those AWS APIs, and provision that execution role in your account. CloudFormation then assumes that execution role to provide your resource type with the appropriate credentials.", + "type": "string" + }, + "IsDefaultVersion": { + "description": "Indicates if this type version is the current default version", + "type": "boolean" + }, + "LoggingConfig": { + "$ref": "#/definitions/LoggingConfig", + "description": "Specifies logging configuration information for a type." + }, + "ProvisioningType": { + "description": "The provisioning behavior of the type. AWS CloudFormation determines the provisioning type during registration, based on the types of handlers in the schema handler package submitted.", + "enum": [ + "NON_PROVISIONABLE", + "IMMUTABLE", + "FULLY_MUTABLE" + ], + "type": "string" + }, + "SchemaHandlerPackage": { + "description": "A url to the S3 bucket containing the schema handler package that contains the schema, event handlers, and associated files for the type you want to register.\n\nFor information on generating a schema handler package for the type you want to register, see submit in the CloudFormation CLI User Guide.", + "type": "string" + }, + "TypeArn": { + "description": "The Amazon Resource Name (ARN) of the type without the versionID.", + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/resource/.+$", + "type": "string" + }, + "TypeName": { + "description": "The name of the type being registered.\n\nWe recommend that type names adhere to the following pattern: company_or_organization::service::type.", + "pattern": "^[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}$", + "type": "string" + }, + "VersionId": { + "description": "The ID of the version of the type represented by this resource instance.", + "pattern": "^[A-Za-z0-9-]{1,128}$", + "type": "string" + }, + "Visibility": { + "description": "The scope at which the type is visible and usable in CloudFormation operations.\n\nValid values include:\n\nPRIVATE: The type is only visible and usable within the account in which it is registered. Currently, AWS CloudFormation marks any types you register as PRIVATE.\n\nPUBLIC: The type is publically visible and usable within any Amazon account.", + "enum": [ + "PUBLIC", + "PRIVATE" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/IsDefaultVersion", + "/properties/ProvisioningType", + "/properties/Visibility", + "/properties/VersionId", + "/properties/TypeArn" + ], + "required": [ + "SchemaHandlerPackage", + "TypeName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", + "typeName": "AWS::CloudFormation::ResourceVersion", + "writeOnlyProperties": [ + "/properties/SchemaHandlerPackage" + ] +} diff --git a/src/schema/aws-cloudformation-stack.json b/src/schema/aws-cloudformation-stack.json index 0ac6d086..fdddf339 100644 --- a/src/schema/aws-cloudformation-stack.json +++ b/src/schema/aws-cloudformation-stack.json @@ -1,243 +1,246 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/StackName" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StackName" - ], - "definitions": { - "Output": { - "additionalProperties": false, - "properties": { - "Description": { - "type": "string" - }, - "ExportName": { - "type": "string" - }, - "OutputKey": { - "type": "string" - }, - "OutputValue": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The AWS::CloudFormation::Stack resource nests a stack as a resource in a top-level template.", - "handlers": { - "create": { - "permissions": [ - "cloudformation:DescribeStacks", - "cloudformation:CreateStack", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "cloudformation:DescribeStacks", - "cloudformation:DeleteStack" - ] - }, - "list": { - "permissions": [ - "cloudformation:ListStacks" - ] - }, - "read": { - "permissions": [ - "cloudformation:DescribeStacks", - "cloudformation:GetStackPolicy", - "cloudformation:GetTemplate" - ] - }, - "update": { - "permissions": [ - "cloudformation:DescribeStacks", - "cloudformation:UpdateStack", - "cloudformation:UpdateTerminationProtection", - "cloudformation:SetStackPolicy", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/StackId" - ], - "properties": { - "Capabilities": { - "items": { - "enum": [ - "CAPABILITY_IAM", - "CAPABILITY_NAMED_IAM", - "CAPABILITY_AUTO_EXPAND" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ChangeSetId": { - "type": "string" - }, - "CreationTime": { - "type": "string" - }, - "Description": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "DisableRollback": { - "type": "boolean" - }, - "EnableTerminationProtection": { - "type": "boolean" - }, - "LastUpdateTime": { - "type": "string" - }, - "NotificationARNs": { - "items": { - "type": "string" - }, - "maxItems": 5, - "type": "array", - "uniqueItems": false - }, - "Outputs": { - "items": { - "$ref": "#/definitions/Output" - }, - "type": "array", - "uniqueItems": false - }, - "Parameters": { - "additionalProperties": false, - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "ParentId": { - "type": "string" - }, - "RoleARN": { - "type": "string" - }, - "RootId": { - "type": "string" - }, - "StackId": { - "type": "string" - }, - "StackName": { - "type": "string" - }, - "StackPolicyBody": { - "type": "object" - }, - "StackPolicyURL": { - "type": "string" - }, - "StackStatus": { - "enum": [ - "CREATE_IN_PROGRESS", - "CREATE_FAILED", - "CREATE_COMPLETE", - "ROLLBACK_IN_PROGRESS", - "ROLLBACK_FAILED", - "ROLLBACK_COMPLETE", - "DELETE_IN_PROGRESS", - "DELETE_FAILED", - "DELETE_COMPLETE", - "UPDATE_IN_PROGRESS", - "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS", - "UPDATE_COMPLETE", - "UPDATE_FAILED", - "UPDATE_ROLLBACK_IN_PROGRESS", - "UPDATE_ROLLBACK_FAILED", - "UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS", - "UPDATE_ROLLBACK_COMPLETE", - "REVIEW_IN_PROGRESS", - "IMPORT_IN_PROGRESS", - "IMPORT_COMPLETE", - "IMPORT_ROLLBACK_IN_PROGRESS", - "IMPORT_ROLLBACK_FAILED", - "IMPORT_ROLLBACK_COMPLETE" - ], - "type": "string" - }, - "StackStatusReason": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": false - }, - "TemplateBody": { - "type": "object" - }, - "TemplateURL": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "TimeoutInMinutes": { - "minimum": 1, - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/StackId", - "/properties/StackStatus", - "/properties/CreationTime", - "/properties/RootId", - "/properties/ParentId", - "/properties/ChangeSetId", - "/properties/Outputs", - "/properties/LastUpdateTime" - ], - "required": [ - "StackName" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CloudFormation::Stack", - "writeOnlyProperties": [ - "/properties/TemplateURL", - "/properties/StackPolicyURL" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/StackName" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StackName" + ], + "definitions": { + "Output": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "ExportName": { + "type": "string" + }, + "OutputKey": { + "type": "string" + }, + "OutputValue": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The AWS::CloudFormation::Stack resource nests a stack as a resource in a top-level template.", + "handlers": { + "create": { + "permissions": [ + "cloudformation:DescribeStacks", + "cloudformation:CreateStack", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "cloudformation:DescribeStacks", + "cloudformation:DeleteStack" + ] + }, + "list": { + "permissions": [ + "cloudformation:ListStacks" + ] + }, + "read": { + "permissions": [ + "cloudformation:DescribeStacks", + "cloudformation:GetStackPolicy", + "cloudformation:GetTemplate" + ] + }, + "update": { + "permissions": [ + "cloudformation:DescribeStacks", + "cloudformation:UpdateStack", + "cloudformation:UpdateTerminationProtection", + "cloudformation:SetStackPolicy", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/StackId" + ], + "properties": { + "Capabilities": { + "items": { + "enum": [ + "CAPABILITY_IAM", + "CAPABILITY_NAMED_IAM", + "CAPABILITY_AUTO_EXPAND" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ChangeSetId": { + "type": "string" + }, + "CreationTime": { + "type": "string" + }, + "Description": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "DisableRollback": { + "type": "boolean" + }, + "EnableTerminationProtection": { + "type": "boolean" + }, + "LastUpdateTime": { + "type": "string" + }, + "NotificationARNs": { + "items": { + "type": "string" + }, + "maxItems": 5, + "type": "array", + "uniqueItems": false + }, + "Outputs": { + "items": { + "$ref": "#/definitions/Output" + }, + "type": "array", + "uniqueItems": false + }, + "Parameters": { + "additionalProperties": false, + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "ParentId": { + "type": "string" + }, + "RoleARN": { + "type": "string" + }, + "RootId": { + "type": "string" + }, + "StackId": { + "type": "string" + }, + "StackName": { + "type": "string" + }, + "StackPolicyBody": { + "type": "object" + }, + "StackPolicyURL": { + "type": "string" + }, + "StackStatus": { + "enum": [ + "CREATE_IN_PROGRESS", + "CREATE_FAILED", + "CREATE_COMPLETE", + "ROLLBACK_IN_PROGRESS", + "ROLLBACK_FAILED", + "ROLLBACK_COMPLETE", + "DELETE_IN_PROGRESS", + "DELETE_FAILED", + "DELETE_COMPLETE", + "UPDATE_IN_PROGRESS", + "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS", + "UPDATE_COMPLETE", + "UPDATE_FAILED", + "UPDATE_ROLLBACK_IN_PROGRESS", + "UPDATE_ROLLBACK_FAILED", + "UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS", + "UPDATE_ROLLBACK_COMPLETE", + "REVIEW_IN_PROGRESS", + "IMPORT_IN_PROGRESS", + "IMPORT_COMPLETE", + "IMPORT_ROLLBACK_IN_PROGRESS", + "IMPORT_ROLLBACK_FAILED", + "IMPORT_ROLLBACK_COMPLETE" + ], + "type": "string" + }, + "StackStatusReason": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": false + }, + "TemplateBody": { + "type": [ + "object", + "string" + ] + }, + "TemplateURL": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "TimeoutInMinutes": { + "minimum": 1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/StackId", + "/properties/StackStatus", + "/properties/CreationTime", + "/properties/RootId", + "/properties/ParentId", + "/properties/ChangeSetId", + "/properties/Outputs", + "/properties/LastUpdateTime" + ], + "required": [ + "StackName" + ], + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CloudFormation::Stack", + "writeOnlyProperties": [ + "/properties/TemplateURL", + "/properties/StackPolicyURL" + ] +} diff --git a/src/schema/aws-cloudformation-stackset.json b/src/schema/aws-cloudformation-stackset.json index d01f73ac..4f0bbf3f 100644 --- a/src/schema/aws-cloudformation-stackset.json +++ b/src/schema/aws-cloudformation-stackset.json @@ -1,430 +1,441 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/StackSetName" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PermissionModel", - "/properties/StackSetName" - ], - "definitions": { - "Account": { - "description": "AWS account that you want to create stack instances in the specified Region(s) for.", - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "Active": { - "description": "When true, StackSets performs non-conflicting operations concurrently and queues conflicting operations. After conflicting operations finish, StackSets starts queued operations in request order.", - "type": "boolean" - }, - "AutoDeployment": { - "additionalProperties": false, - "properties": { - "Enabled": { - "description": "If set to true, StackSets automatically deploys additional stack instances to AWS Organizations accounts that are added to a target organization or organizational unit (OU) in the specified Regions. If an account is removed from a target organization or OU, StackSets deletes stack instances from the account in the specified Regions.", - "type": "boolean" - }, - "RetainStacksOnAccountRemoval": { - "description": "If set to true, stack resources are retained when an account is removed from a target organization or OU. If set to false, stack resources are deleted. Specify only if Enabled is set to True.", - "type": "boolean" - } - }, - "type": "object" - }, - "Capability": { - "enum": [ - "CAPABILITY_IAM", - "CAPABILITY_NAMED_IAM", - "CAPABILITY_AUTO_EXPAND" - ], - "type": "string" - }, - "ConcurrencyMode": { - "description": "Specifies how the concurrency level behaves during the operation execution.", - "enum": [ - "STRICT_FAILURE_TOLERANCE", - "SOFT_FAILURE_TOLERANCE" - ], - "type": "string" - }, - "DeploymentTargets": { - "additionalProperties": false, - "description": " The AWS OrganizationalUnitIds or Accounts for which to create stack instances in the specified Regions.", - "properties": { - "AccountFilterType": { - "description": "The filter type you want to apply on organizational units and accounts.", - "enum": [ - "NONE", - "UNION", - "INTERSECTION", - "DIFFERENCE" - ], - "type": "string" - }, - "Accounts": { - "description": "AWS accounts that you want to create stack instances in the specified Region(s) for.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Account" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "AccountsUrl": { - "description": "Returns the value of the AccountsUrl property.", - "maxLength": 5120, - "minLength": 1, - "pattern": "(s3://|http(s?)://).+", - "type": "string" - }, - "OrganizationalUnitIds": { - "description": "The organization root ID or organizational unit (OU) IDs to which StackSets deploys.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/OrganizationalUnitId" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "OperationPreferences": { - "additionalProperties": false, - "description": "The user-specified preferences for how AWS CloudFormation performs a stack set operation.", - "properties": { - "ConcurrencyMode": { - "$ref": "#/definitions/ConcurrencyMode" - }, - "FailureToleranceCount": { - "minimum": 0, - "type": "integer" - }, - "FailureTolerancePercentage": { - "maximum": 100, - "minimum": 0, - "type": "integer" - }, - "MaxConcurrentCount": { - "minimum": 1, - "type": "integer" - }, - "MaxConcurrentPercentage": { - "maximum": 100, - "minimum": 0, - "type": "integer" - }, - "RegionConcurrencyType": { - "$ref": "#/definitions/RegionConcurrencyType" - }, - "RegionOrder": { - "items": { - "$ref": "#/definitions/Region" - }, - "type": "array" - } - }, - "type": "object" - }, - "OrganizationalUnitId": { - "pattern": "^(ou-[a-z0-9]{4,32}-[a-z0-9]{8,32}|r-[a-z0-9]{4,32})$", - "type": "string" - }, - "Parameter": { - "additionalProperties": false, - "properties": { - "ParameterKey": { - "description": "The key associated with the parameter. If you don't specify a key and value for a particular parameter, AWS CloudFormation uses the default value that is specified in your template.", - "type": "string" - }, - "ParameterValue": { - "description": "The input value associated with the parameter.", - "type": "string" - } - }, - "required": [ - "ParameterKey", - "ParameterValue" - ], - "type": "object" - }, - "Region": { - "pattern": "^[a-zA-Z0-9-]{1,128}$", - "type": "string" - }, - "RegionConcurrencyType": { - "description": "The concurrency type of deploying StackSets operations in regions, could be in parallel or one region at a time", - "enum": [ - "SEQUENTIAL", - "PARALLEL" - ], - "type": "string" - }, - "StackInstances": { - "additionalProperties": false, - "description": "Stack instances in some specific accounts and Regions.", - "properties": { - "DeploymentTargets": { - "$ref": "#/definitions/DeploymentTargets" - }, - "ParameterOverrides": { - "description": "A list of stack set parameters whose values you want to override in the selected stack instances.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array", - "uniqueItems": true - }, - "Regions": { - "description": "The names of one or more Regions where you want to create stack instances using the specified AWS account(s).", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Region" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "DeploymentTargets", - "Regions" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Tag type enables you to specify a key-value pair that can be used to store information about an AWS CloudFormation StackSet.", - "properties": { - "Key": { - "description": "A string used to identify this tag. You can specify a maximum of 127 characters for a tag key.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:.*)[a-zA-Z0-9\\s\\:\\_\\.\\/\\=\\+\\-]+$", - "type": "string" - }, - "Value": { - "description": "A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "StackSet as a resource provides one-click experience for provisioning a StackSet and StackInstances", - "handlers": { - "create": { - "permissions": [ - "cloudformation:GetTemplateSummary", - "cloudformation:CreateStackSet", - "cloudformation:CreateStackInstances", - "cloudformation:DescribeStackSetOperation", - "cloudformation:ListStackSetOperationResults", - "cloudformation:TagResource", - "iam:PassRole" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "cloudformation:DeleteStackSet", - "cloudformation:DeleteStackInstances", - "cloudformation:DescribeStackSet", - "cloudformation:DescribeStackSetOperation", - "cloudformation:ListStackSetOperationResults", - "cloudformation:UntagResource" - ], - "timeoutInMinutes": 2160 - }, - "list": { - "permissions": [ - "cloudformation:ListStackSets", - "cloudformation:DescribeStackSet", - "cloudformation:ListStackInstances", - "cloudformation:DescribeStackInstance" - ] - }, - "read": { - "permissions": [ - "cloudformation:DescribeStackSet", - "cloudformation:ListStackInstances", - "cloudformation:DescribeStackInstance" - ] - }, - "update": { - "permissions": [ - "cloudformation:GetTemplateSummary", - "cloudformation:UpdateStackSet", - "cloudformation:CreateStackInstances", - "cloudformation:DeleteStackInstances", - "cloudformation:UpdateStackInstances", - "cloudformation:DescribeStackSet", - "cloudformation:DescribeStackSetOperation", - "cloudformation:ListStackSetOperationResults", - "cloudformation:TagResource", - "cloudformation:UntagResource", - "iam:PassRole" - ], - "timeoutInMinutes": 2160 - } - }, - "oneOf": [ - { - "required": [ - "TemplateURL" - ] - }, - { - "required": [ - "TemplateBody" - ] - } - ], - "primaryIdentifier": [ - "/properties/StackSetId" - ], - "properties": { - "AdministrationRoleARN": { - "description": "The Amazon Resource Number (ARN) of the IAM role to use to create this stack set. Specify an IAM role only if you are using customized administrator roles to control which users or groups can manage specific stack sets within the same administrator account.", - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "AutoDeployment": { - "$ref": "#/definitions/AutoDeployment", - "description": "Describes whether StackSets automatically deploys to AWS Organizations accounts that are added to the target organization or organizational unit (OU). Specify only if PermissionModel is SERVICE_MANAGED." - }, - "CallAs": { - "description": "Specifies the AWS account that you are acting from. By default, SELF is specified. For self-managed permissions, specify SELF; for service-managed permissions, if you are signed in to the organization's management account, specify SELF. If you are signed in to a delegated administrator account, specify DELEGATED_ADMIN.", - "enum": [ - "SELF", - "DELEGATED_ADMIN" - ], - "type": "string" - }, - "Capabilities": { - "description": "In some cases, you must explicitly acknowledge that your stack set template contains certain capabilities in order for AWS CloudFormation to create the stack set and related stack instances.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Capability" - }, - "type": "array", - "uniqueItems": true - }, - "Description": { - "description": "A description of the stack set. You can use the description to identify the stack set's purpose or other important information.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "ExecutionRoleName": { - "description": "The name of the IAM execution role to use to create the stack set. If you do not specify an execution role, AWS CloudFormation uses the AWSCloudFormationStackSetExecutionRole role for the stack set operation.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "ManagedExecution": { - "additionalProperties": false, - "description": "Describes whether StackSets performs non-conflicting operations concurrently and queues conflicting operations.", - "properties": { - "Active": { - "$ref": "#/definitions/Active" - } - }, - "type": "object" - }, - "OperationPreferences": { - "$ref": "#/definitions/OperationPreferences" - }, - "Parameters": { - "description": "The input parameters for the stack set template.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array", - "uniqueItems": true - }, - "PermissionModel": { - "description": "Describes how the IAM roles required for stack set operations are created. By default, SELF-MANAGED is specified.", - "enum": [ - "SERVICE_MANAGED", - "SELF_MANAGED" - ], - "type": "string" - }, - "StackInstancesGroup": { - "description": "A group of stack instances with parameters in some specific accounts and regions.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/StackInstances" - }, - "type": "array", - "uniqueItems": true - }, - "StackSetId": { - "description": "The ID of the stack set that you're creating.", - "type": "string" - }, - "StackSetName": { - "description": "The name to associate with the stack set. The name must be unique in the Region where you create your stack set.", - "maxLength": 128, - "pattern": "^[a-zA-Z][a-zA-Z0-9\\-]{0,127}$", - "type": "string" - }, - "Tags": { - "description": "The key-value pairs to associate with this stack set and the stacks created from it. AWS CloudFormation also propagates these tags to supported resources that are created in the stacks. A maximum number of 50 tags can be specified.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "TemplateBody": { - "description": "The structure that contains the template body, with a minimum length of 1 byte and a maximum length of 51,200 bytes.", - "maxLength": 51200, - "minLength": 1, - "type": "string" - }, - "TemplateURL": { - "description": "Location of file containing the template body. The URL must point to a template (max size: 460,800 bytes) that is located in an Amazon S3 bucket.", - "maxLength": 5120, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/StackSetId" - ], - "required": [ - "StackSetName", - "PermissionModel" - ], - "resourceLink": { - "mappings": { - "StackSetId": "/StackSetId" - }, - "templateUri": "/cloudformation/home?region=${awsRegion}#/stacksets/${StackSetId}" - }, - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation.git", - "typeName": "AWS::CloudFormation::StackSet", - "writeOnlyProperties": [ - "/properties/TemplateURL", - "/properties/OperationPreferences", - "/properties/StackInstancesGroup", - "/properties/CallAs" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/StackSetName" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PermissionModel", + "/properties/StackSetName" + ], + "definitions": { + "Account": { + "description": "AWS account that you want to create stack instances in the specified Region(s) for.", + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "Active": { + "description": "When true, StackSets performs non-conflicting operations concurrently and queues conflicting operations. After conflicting operations finish, StackSets starts queued operations in request order.", + "type": "boolean" + }, + "AutoDeployment": { + "additionalProperties": false, + "properties": { + "Enabled": { + "description": "If set to true, StackSets automatically deploys additional stack instances to AWS Organizations accounts that are added to a target organization or organizational unit (OU) in the specified Regions. If an account is removed from a target organization or OU, StackSets deletes stack instances from the account in the specified Regions.", + "type": "boolean" + }, + "RetainStacksOnAccountRemoval": { + "description": "If set to true, stack resources are retained when an account is removed from a target organization or OU. If set to false, stack resources are deleted. Specify only if Enabled is set to True.", + "type": "boolean" + } + }, + "type": "object" + }, + "Capability": { + "enum": [ + "CAPABILITY_IAM", + "CAPABILITY_NAMED_IAM", + "CAPABILITY_AUTO_EXPAND" + ], + "type": "string" + }, + "ConcurrencyMode": { + "description": "Specifies how the concurrency level behaves during the operation execution.", + "enum": [ + "STRICT_FAILURE_TOLERANCE", + "SOFT_FAILURE_TOLERANCE" + ], + "type": "string" + }, + "DeploymentTargets": { + "additionalProperties": false, + "description": " The AWS OrganizationalUnitIds or Accounts for which to create stack instances in the specified Regions.", + "properties": { + "AccountFilterType": { + "description": "The filter type you want to apply on organizational units and accounts.", + "enum": [ + "NONE", + "UNION", + "INTERSECTION", + "DIFFERENCE" + ], + "type": "string" + }, + "Accounts": { + "description": "AWS accounts that you want to create stack instances in the specified Region(s) for.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Account" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "AccountsUrl": { + "description": "Returns the value of the AccountsUrl property.", + "maxLength": 5120, + "minLength": 1, + "pattern": "(s3://|http(s?)://).+", + "type": "string" + }, + "OrganizationalUnitIds": { + "description": "The organization root ID or organizational unit (OU) IDs to which StackSets deploys.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/OrganizationalUnitId" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "OperationPreferences": { + "additionalProperties": false, + "description": "The user-specified preferences for how AWS CloudFormation performs a stack set operation.", + "properties": { + "ConcurrencyMode": { + "$ref": "#/definitions/ConcurrencyMode" + }, + "FailureToleranceCount": { + "minimum": 0, + "type": "integer" + }, + "FailureTolerancePercentage": { + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "MaxConcurrentCount": { + "minimum": 1, + "type": "integer" + }, + "MaxConcurrentPercentage": { + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "RegionConcurrencyType": { + "$ref": "#/definitions/RegionConcurrencyType" + }, + "RegionOrder": { + "items": { + "$ref": "#/definitions/Region" + }, + "type": "array" + } + }, + "type": "object" + }, + "OrganizationalUnitId": { + "pattern": "^(ou-[a-z0-9]{4,32}-[a-z0-9]{8,32}|r-[a-z0-9]{4,32})$", + "type": "string" + }, + "Parameter": { + "additionalProperties": false, + "properties": { + "ParameterKey": { + "description": "The key associated with the parameter. If you don't specify a key and value for a particular parameter, AWS CloudFormation uses the default value that is specified in your template.", + "type": "string" + }, + "ParameterValue": { + "description": "The input value associated with the parameter.", + "type": "string" + } + }, + "required": [ + "ParameterKey", + "ParameterValue" + ], + "type": "object" + }, + "Region": { + "pattern": "^[a-zA-Z0-9-]{1,128}$", + "type": "string" + }, + "RegionConcurrencyType": { + "description": "The concurrency type of deploying StackSets operations in regions, could be in parallel or one region at a time", + "enum": [ + "SEQUENTIAL", + "PARALLEL" + ], + "type": "string" + }, + "StackInstances": { + "additionalProperties": false, + "description": "Stack instances in some specific accounts and Regions.", + "properties": { + "DeploymentTargets": { + "$ref": "#/definitions/DeploymentTargets" + }, + "ParameterOverrides": { + "description": "A list of stack set parameters whose values you want to override in the selected stack instances.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Parameter" + }, + "type": "array", + "uniqueItems": true + }, + "Regions": { + "description": "The names of one or more Regions where you want to create stack instances using the specified AWS account(s).", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Region" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "DeploymentTargets", + "Regions" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Tag type enables you to specify a key-value pair that can be used to store information about an AWS CloudFormation StackSet.", + "properties": { + "Key": { + "description": "A string used to identify this tag. You can specify a maximum of 127 characters for a tag key.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:.*)[a-zA-Z0-9\\s\\:\\_\\.\\/\\=\\+\\-]+$", + "type": "string" + }, + "Value": { + "description": "A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "StackSet as a resource provides one-click experience for provisioning a StackSet and StackInstances", + "handlers": { + "create": { + "permissions": [ + "cloudformation:GetTemplateSummary", + "cloudformation:CreateStackSet", + "cloudformation:CreateStackInstances", + "cloudformation:DescribeStackSetOperation", + "cloudformation:ListStackSetOperationResults", + "cloudformation:TagResource", + "iam:PassRole" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "cloudformation:DeleteStackSet", + "cloudformation:DeleteStackInstances", + "cloudformation:DescribeStackSet", + "cloudformation:DescribeStackSetOperation", + "cloudformation:ListStackSetOperationResults", + "cloudformation:UntagResource" + ], + "timeoutInMinutes": 2160 + }, + "list": { + "permissions": [ + "cloudformation:ListStackSets", + "cloudformation:DescribeStackSet", + "cloudformation:ListStackInstances", + "cloudformation:DescribeStackInstance" + ] + }, + "read": { + "permissions": [ + "cloudformation:DescribeStackSet", + "cloudformation:ListStackInstances", + "cloudformation:DescribeStackInstance" + ] + }, + "update": { + "permissions": [ + "cloudformation:GetTemplateSummary", + "cloudformation:UpdateStackSet", + "cloudformation:CreateStackInstances", + "cloudformation:DeleteStackInstances", + "cloudformation:UpdateStackInstances", + "cloudformation:DescribeStackSet", + "cloudformation:DescribeStackSetOperation", + "cloudformation:ListStackSetOperationResults", + "cloudformation:TagResource", + "cloudformation:UntagResource", + "iam:PassRole" + ], + "timeoutInMinutes": 2160 + } + }, + "oneOf": [ + { + "required": [ + "TemplateURL" + ] + }, + { + "required": [ + "TemplateBody" + ] + } + ], + "primaryIdentifier": [ + "/properties/StackSetId" + ], + "properties": { + "AdministrationRoleARN": { + "description": "The Amazon Resource Number (ARN) of the IAM role to use to create this stack set. Specify an IAM role only if you are using customized administrator roles to control which users or groups can manage specific stack sets within the same administrator account.", + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "AutoDeployment": { + "$ref": "#/definitions/AutoDeployment", + "description": "Describes whether StackSets automatically deploys to AWS Organizations accounts that are added to the target organization or organizational unit (OU). Specify only if PermissionModel is SERVICE_MANAGED." + }, + "CallAs": { + "description": "Specifies the AWS account that you are acting from. By default, SELF is specified. For self-managed permissions, specify SELF; for service-managed permissions, if you are signed in to the organization's management account, specify SELF. If you are signed in to a delegated administrator account, specify DELEGATED_ADMIN.", + "enum": [ + "SELF", + "DELEGATED_ADMIN" + ], + "type": "string" + }, + "Capabilities": { + "description": "In some cases, you must explicitly acknowledge that your stack set template contains certain capabilities in order for AWS CloudFormation to create the stack set and related stack instances.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Capability" + }, + "type": "array", + "uniqueItems": true + }, + "Description": { + "description": "A description of the stack set. You can use the description to identify the stack set's purpose or other important information.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "ExecutionRoleName": { + "description": "The name of the IAM execution role to use to create the stack set. If you do not specify an execution role, AWS CloudFormation uses the AWSCloudFormationStackSetExecutionRole role for the stack set operation.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "ManagedExecution": { + "additionalProperties": false, + "description": "Describes whether StackSets performs non-conflicting operations concurrently and queues conflicting operations.", + "properties": { + "Active": { + "$ref": "#/definitions/Active" + } + }, + "type": "object" + }, + "OperationPreferences": { + "$ref": "#/definitions/OperationPreferences" + }, + "Parameters": { + "description": "The input parameters for the stack set template.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Parameter" + }, + "type": "array", + "uniqueItems": true + }, + "PermissionModel": { + "description": "Describes how the IAM roles required for stack set operations are created. By default, SELF-MANAGED is specified.", + "enum": [ + "SERVICE_MANAGED", + "SELF_MANAGED" + ], + "type": "string" + }, + "StackInstancesGroup": { + "description": "A group of stack instances with parameters in some specific accounts and regions.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StackInstances" + }, + "type": "array", + "uniqueItems": true + }, + "StackSetId": { + "description": "The ID of the stack set that you're creating.", + "type": "string" + }, + "StackSetName": { + "description": "The name to associate with the stack set. The name must be unique in the Region where you create your stack set.", + "maxLength": 128, + "pattern": "^[a-zA-Z][a-zA-Z0-9\\-]{0,127}$", + "type": "string" + }, + "Tags": { + "description": "The key-value pairs to associate with this stack set and the stacks created from it. AWS CloudFormation also propagates these tags to supported resources that are created in the stacks. A maximum number of 50 tags can be specified.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "TemplateBody": { + "description": "The structure that contains the template body, with a minimum length of 1 byte and a maximum length of 51,200 bytes.", + "maxLength": 51200, + "minLength": 1, + "type": "string" + }, + "TemplateURL": { + "description": "Location of file containing the template body. The URL must point to a template (max size: 460,800 bytes) that is located in an Amazon S3 bucket.", + "maxLength": 5120, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/StackSetId" + ], + "required": [ + "StackSetName", + "PermissionModel" + ], + "resourceLink": { + "mappings": { + "StackSetId": "/StackSetId" + }, + "templateUri": "/cloudformation/home?region=${awsRegion}#/stacksets/${StackSetId}" + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "cloudformation:TagResource", + "cloudformation:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CloudFormation::StackSet", + "writeOnlyProperties": [ + "/properties/TemplateURL", + "/properties/OperationPreferences", + "/properties/StackInstancesGroup", + "/properties/CallAs" + ] +} diff --git a/src/schema/aws-cloudformation-typeactivation.json b/src/schema/aws-cloudformation-typeactivation.json index 916f14a4..1c5b4c70 100644 --- a/src/schema/aws-cloudformation-typeactivation.json +++ b/src/schema/aws-cloudformation-typeactivation.json @@ -1,157 +1,157 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LoggingConfig" - ], - "definitions": { - "LoggingConfig": { - "additionalProperties": false, - "properties": { - "LogGroupName": { - "description": "The Amazon CloudWatch log group to which CloudFormation sends error logging information when invoking the type's handlers.", - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\.\\-_/#A-Za-z0-9]+$", - "type": "string" - }, - "LogRoleArn": { - "description": "The ARN of the role that CloudFormation should assume when sending log entries to CloudWatch logs.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Enable a resource that has been published in the CloudFormation Registry.", - "handlers": { - "create": { - "permissions": [ - "cloudformation:ActivateType", - "cloudformation:DescribeType", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "cloudformation:DeactivateType", - "cloudformation:DescribeType" - ] - }, - "list": { - "permissions": [ - "cloudformation:ListTypes" - ] - }, - "read": { - "permissions": [ - "cloudformation:DescribeType" - ] - }, - "update": { - "permissions": [ - "cloudformation:ActivateType", - "cloudformation:DescribeType", - "iam:PassRole" - ] - } - }, - "oneOf": [ - { - "required": [ - "TypeName", - "PublisherId", - "Type" - ] - }, - { - "required": [ - "PublicTypeArn" - ] - } - ], - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the extension.", - "pattern": "arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/.+", - "type": "string" - }, - "AutoUpdate": { - "description": "Whether to automatically update the extension in this account and region when a new minor version is published by the extension publisher. Major versions released by the publisher must be manually updated.", - "type": "boolean" - }, - "ExecutionRoleArn": { - "description": "The Amazon Resource Name (ARN) of the IAM execution role to use to register the type. If your resource type calls AWS APIs in any of its handlers, you must create an IAM execution role that includes the necessary permissions to call those AWS APIs, and provision that execution role in your account. CloudFormation then assumes that execution role to provide your resource type with the appropriate credentials.", - "type": "string" - }, - "LoggingConfig": { - "$ref": "#/definitions/LoggingConfig", - "description": "Specifies logging configuration information for a type." - }, - "MajorVersion": { - "description": "The Major Version of the type you want to enable", - "maxLength": 100000, - "minLength": 1, - "type": "string" - }, - "PublicTypeArn": { - "description": "The Amazon Resource Number (ARN) assigned to the public extension upon publication", - "maxLength": 1024, - "pattern": "arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/.+", - "type": "string" - }, - "PublisherId": { - "description": "The publisher id assigned by CloudFormation for publishing in this region.", - "maxLength": 40, - "minLength": 1, - "pattern": "[0-9a-zA-Z]{40}", - "type": "string" - }, - "Type": { - "description": "The kind of extension", - "enum": [ - "RESOURCE", - "MODULE", - "HOOK" - ], - "type": "string" - }, - "TypeName": { - "description": "The name of the type being registered.\n\nWe recommend that type names adhere to the following pattern: company_or_organization::service::type.", - "pattern": "[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}(::MODULE){0,1}", - "type": "string" - }, - "TypeNameAlias": { - "description": "An alias to assign to the public extension in this account and region. If you specify an alias for the extension, you must then use the alias to refer to the extension in your templates.", - "maxLength": 204, - "minLength": 10, - "pattern": "[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}(::MODULE){0,1}", - "type": "string" - }, - "VersionBump": { - "description": "Manually updates a previously-enabled type to a new major or minor version, if available. You can also use this parameter to update the value of AutoUpdateEnabled", - "enum": [ - "MAJOR", - "MINOR" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", - "typeName": "AWS::CloudFormation::TypeActivation", - "writeOnlyProperties": [ - "/properties/ExecutionRoleArn", - "/properties/Type", - "/properties/LoggingConfig", - "/properties/VersionBump", - "/properties/AutoUpdate", - "/properties/MajorVersion" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LoggingConfig" + ], + "definitions": { + "LoggingConfig": { + "additionalProperties": false, + "properties": { + "LogGroupName": { + "description": "The Amazon CloudWatch log group to which CloudFormation sends error logging information when invoking the type's handlers.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\.\\-_/#A-Za-z0-9]+$", + "type": "string" + }, + "LogRoleArn": { + "description": "The ARN of the role that CloudFormation should assume when sending log entries to CloudWatch logs.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Enable a resource that has been published in the CloudFormation Registry.", + "handlers": { + "create": { + "permissions": [ + "cloudformation:ActivateType", + "cloudformation:DescribeType", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "cloudformation:DeactivateType", + "cloudformation:DescribeType" + ] + }, + "list": { + "permissions": [ + "cloudformation:ListTypes" + ] + }, + "read": { + "permissions": [ + "cloudformation:DescribeType" + ] + }, + "update": { + "permissions": [ + "cloudformation:ActivateType", + "cloudformation:DescribeType", + "iam:PassRole" + ] + } + }, + "oneOf": [ + { + "required": [ + "TypeName", + "PublisherId", + "Type" + ] + }, + { + "required": [ + "PublicTypeArn" + ] + } + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the extension.", + "pattern": "arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/.+", + "type": "string" + }, + "AutoUpdate": { + "description": "Whether to automatically update the extension in this account and region when a new minor version is published by the extension publisher. Major versions released by the publisher must be manually updated.", + "type": "boolean" + }, + "ExecutionRoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM execution role to use to register the type. If your resource type calls AWS APIs in any of its handlers, you must create an IAM execution role that includes the necessary permissions to call those AWS APIs, and provision that execution role in your account. CloudFormation then assumes that execution role to provide your resource type with the appropriate credentials.", + "type": "string" + }, + "LoggingConfig": { + "$ref": "#/definitions/LoggingConfig", + "description": "Specifies logging configuration information for a type." + }, + "MajorVersion": { + "description": "The Major Version of the type you want to enable", + "maxLength": 100000, + "minLength": 1, + "type": "string" + }, + "PublicTypeArn": { + "description": "The Amazon Resource Number (ARN) assigned to the public extension upon publication", + "maxLength": 1024, + "pattern": "arn:aws[A-Za-z0-9-]{0,64}:cloudformation:[A-Za-z0-9-]{1,64}:([0-9]{12})?:type/.+", + "type": "string" + }, + "PublisherId": { + "description": "The reserved publisher id for this type, or the publisher id assigned by CloudFormation for publishing in this region.", + "maxLength": 40, + "minLength": 1, + "pattern": "[0-9a-zA-Z-]{1,40}", + "type": "string" + }, + "Type": { + "description": "The kind of extension", + "enum": [ + "RESOURCE", + "MODULE", + "HOOK" + ], + "type": "string" + }, + "TypeName": { + "description": "The name of the type being registered.\n\nWe recommend that type names adhere to the following pattern: company_or_organization::service::type.", + "pattern": "[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}(::MODULE){0,1}", + "type": "string" + }, + "TypeNameAlias": { + "description": "An alias to assign to the public extension in this account and region. If you specify an alias for the extension, you must then use the alias to refer to the extension in your templates.", + "maxLength": 204, + "minLength": 10, + "pattern": "[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}(::MODULE){0,1}", + "type": "string" + }, + "VersionBump": { + "description": "Manually updates a previously-enabled type to a new major or minor version, if available. You can also use this parameter to update the value of AutoUpdateEnabled", + "enum": [ + "MAJOR", + "MINOR" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudformation", + "typeName": "AWS::CloudFormation::TypeActivation", + "writeOnlyProperties": [ + "/properties/ExecutionRoleArn", + "/properties/Type", + "/properties/LoggingConfig", + "/properties/VersionBump", + "/properties/AutoUpdate", + "/properties/MajorVersion" + ] +} diff --git a/src/schema/aws-cloudformation-waitcondition.json b/src/schema/aws-cloudformation-waitcondition.json index 5418b3d5..08f31f2d 100644 --- a/src/schema/aws-cloudformation-waitcondition.json +++ b/src/schema/aws-cloudformation-waitcondition.json @@ -1,29 +1,29 @@ -{ - "additionalProperties": false, - "description": "Resource Type definition for AWS::CloudFormation::WaitCondition", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Count": { - "type": "integer" - }, - "Data": { - "type": "object" - }, - "Handle": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Timeout": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Data", - "/properties/Id" - ], - "typeName": "AWS::CloudFormation::WaitCondition" -} +{ + "additionalProperties": false, + "description": "Resource Type definition for AWS::CloudFormation::WaitCondition", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Count": { + "type": "integer" + }, + "Data": { + "type": "object" + }, + "Handle": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Timeout": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Data", + "/properties/Id" + ], + "typeName": "AWS::CloudFormation::WaitCondition" +} diff --git a/src/schema/aws-cloudformation-waitconditionhandle.json b/src/schema/aws-cloudformation-waitconditionhandle.json index 13a87d46..a8dcd314 100644 --- a/src/schema/aws-cloudformation-waitconditionhandle.json +++ b/src/schema/aws-cloudformation-waitconditionhandle.json @@ -1,16 +1,16 @@ -{ - "additionalProperties": false, - "description": "Resource Type definition for AWS::CloudFormation::WaitConditionHandle", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "typeName": "AWS::CloudFormation::WaitConditionHandle" -} +{ + "additionalProperties": false, + "description": "Resource Type definition for AWS::CloudFormation::WaitConditionHandle", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::CloudFormation::WaitConditionHandle" +} diff --git a/src/schema/aws-cloudfront-anycastiplist.json b/src/schema/aws-cloudfront-anycastiplist.json new file mode 100644 index 00000000..79e89598 --- /dev/null +++ b/src/schema/aws-cloudfront-anycastiplist.json @@ -0,0 +1,178 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IpCount", + "/properties/Name", + "/properties/Tags" + ], + "definitions": { + "AnycastIpList": { + "additionalProperties": false, + "description": "An Anycast static IP list. For more information, see [Request Anycast static IPs to use for allowlisting](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/request-static-ips.html) in the *Amazon CloudFront Developer Guide*.", + "properties": { + "AnycastIps": { + "description": "The static IP addresses that are allocated to the Anycast static IP list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the Anycast static IP list.", + "type": "string" + }, + "Id": { + "description": "The ID of the Anycast static IP list.", + "type": "string" + }, + "IpCount": { + "description": "The number of IP addresses in the Anycast static IP list.", + "type": "integer" + }, + "LastModifiedTime": { + "description": "The last time the Anycast static IP list was modified.", + "format": "date-time", + "type": "string" + }, + "Name": { + "description": "The name of the Anycast static IP list.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-_]{1,64}$", + "type": "string" + }, + "Status": { + "description": "The status of the Anycast static IP list. Valid values: ``Deployed``, ``Deploying``, or ``Failed``.", + "type": "string" + } + }, + "required": [ + "AnycastIps", + "Arn", + "Id", + "IpCount", + "LastModifiedTime", + "Name", + "Status" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A complex type that contains ``Tag`` key and ``Tag`` value.", + "properties": { + "Key": { + "description": "A string that contains ``Tag`` key.\n The string length should be between 1 and 128 characters. Valid characters include ``a-z``, ``A-Z``, ``0-9``, space, and the special characters ``_ - . : / = + @``.", + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "description": "A string that contains an optional ``Tag`` value.\n The string length should be between 0 and 256 characters. Valid characters include ``a-z``, ``A-Z``, ``0-9``, space, and the special characters ``_ - . : / = + @``.", + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "description": "A complex type that contains zero or more ``Tag`` elements.", + "properties": { + "Items": { + "description": "A complex type that contains ``Tag`` elements.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "description": "An Anycast static IP list. For more information, see [Request Anycast static IPs to use for allowlisting](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/request-static-ips.html) in the *Amazon CloudFront Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateAnycastIpList", + "cloudfront:TagResource" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteAnycastIpList", + "cloudfront:GetAnycastIpList" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListAnycastIpLists" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetAnycastIpList", + "cloudfront:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AnycastIpList": { + "$ref": "#/definitions/AnycastIpList", + "description": "" + }, + "ETag": { + "description": "", + "type": "string" + }, + "Id": { + "description": "", + "type": "string" + }, + "IpCount": { + "description": "The number of IP addresses in the Anycast static IP list.", + "type": "integer" + }, + "Name": { + "description": "The name of the Anycast static IP list.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-_]{1,64}$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags", + "description": "A complex type that contains zero or more ``Tag`` elements." + } + }, + "readOnlyProperties": [ + "/properties/AnycastIpList", + "/properties/ETag", + "/properties/Id" + ], + "required": [ + "IpCount", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "cloudfront:TagResource", + "cloudfront:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::CloudFront::AnycastIpList" +} diff --git a/src/schema/aws-cloudfront-cachepolicy.json b/src/schema/aws-cloudfront-cachepolicy.json index 1bae84e6..12e6df70 100644 --- a/src/schema/aws-cloudfront-cachepolicy.json +++ b/src/schema/aws-cloudfront-cachepolicy.json @@ -1,187 +1,212 @@ -{ - "additionalProperties": false, - "definitions": { - "CachePolicyConfig": { - "additionalProperties": false, - "properties": { - "Comment": { - "type": "string" - }, - "DefaultTTL": { - "minimum": 0, - "multipleOf": 1.0, - "type": "number" - }, - "MaxTTL": { - "minimum": 0, - "multipleOf": 1.0, - "type": "number" - }, - "MinTTL": { - "minimum": 0, - "multipleOf": 1.0, - "type": "number" - }, - "Name": { - "type": "string" - }, - "ParametersInCacheKeyAndForwardedToOrigin": { - "$ref": "#/definitions/ParametersInCacheKeyAndForwardedToOrigin" - } - }, - "required": [ - "Name", - "MinTTL", - "MaxTTL", - "DefaultTTL", - "ParametersInCacheKeyAndForwardedToOrigin" - ], - "type": "object" - }, - "CookiesConfig": { - "additionalProperties": false, - "properties": { - "CookieBehavior": { - "pattern": "^(none|whitelist|allExcept|all)$", - "type": "string" - }, - "Cookies": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "CookieBehavior" - ], - "type": "object" - }, - "HeadersConfig": { - "additionalProperties": false, - "properties": { - "HeaderBehavior": { - "pattern": "^(none|whitelist)$", - "type": "string" - }, - "Headers": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "HeaderBehavior" - ], - "type": "object" - }, - "ParametersInCacheKeyAndForwardedToOrigin": { - "additionalProperties": false, - "properties": { - "CookiesConfig": { - "$ref": "#/definitions/CookiesConfig" - }, - "EnableAcceptEncodingBrotli": { - "type": "boolean" - }, - "EnableAcceptEncodingGzip": { - "type": "boolean" - }, - "HeadersConfig": { - "$ref": "#/definitions/HeadersConfig" - }, - "QueryStringsConfig": { - "$ref": "#/definitions/QueryStringsConfig" - } - }, - "required": [ - "EnableAcceptEncodingGzip", - "HeadersConfig", - "CookiesConfig", - "QueryStringsConfig" - ], - "type": "object" - }, - "QueryStringsConfig": { - "additionalProperties": false, - "properties": { - "QueryStringBehavior": { - "pattern": "^(none|whitelist|allExcept|all)$", - "type": "string" - }, - "QueryStrings": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "QueryStringBehavior" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CloudFront::CachePolicy", - "handlers": { - "create": { - "permissions": [ - "cloudfront:CreateCachePolicy" - ] - }, - "delete": { - "permissions": [ - "cloudfront:DeleteCachePolicy", - "cloudfront:GetCachePolicy" - ] - }, - "list": { - "permissions": [ - "cloudfront:ListCachePolicies" - ] - }, - "read": { - "permissions": [ - "cloudfront:GetCachePolicy" - ] - }, - "update": { - "permissions": [ - "cloudfront:UpdateCachePolicy", - "cloudfront:GetCachePolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CachePolicyConfig": { - "$ref": "#/definitions/CachePolicyConfig" - }, - "Id": { - "type": "string" - }, - "LastModifiedTime": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/LastModifiedTime" - ], - "required": [ - "CachePolicyConfig" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CloudFront::CachePolicy" -} +{ + "additionalProperties": false, + "definitions": { + "CachePolicyConfig": { + "additionalProperties": false, + "description": "A cache policy configuration.\n This configuration determines the following:\n + The values that CloudFront includes in the cache key. These values can include HTTP headers, cookies, and URL query strings. CloudFront uses the cache key to find an object in its cache that it can return to the viewer.\n + The default, minimum, and maximum time to live (TTL) values that you want objects to stay in the CloudFront cache.\n \n The headers, cookies, and query strings that are included in the cache key are also included in requests that CloudFront sends to the origin. CloudFront sends a request when it can't find a valid object in its cache that matches the request's cache key. If you want to send values to the origin but *not* include them in the cache key, use ``OriginRequestPolicy``.", + "properties": { + "Comment": { + "description": "A comment to describe the cache policy. The comment cannot be longer than 128 characters.", + "type": "string" + }, + "DefaultTTL": { + "description": "The default amount of time, in seconds, that you want objects to stay in the CloudFront cache before CloudFront sends another request to the origin to see if the object has been updated. CloudFront uses this value as the object's time to live (TTL) only when the origin does *not* send ``Cache-Control`` or ``Expires`` headers with the object. For more information, see [Managing How Long Content Stays in an Edge Cache (Expiration)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.\n The default value for this field is 86400 seconds (one day). If the value of ``MinTTL`` is more than 86400 seconds, then the default value for this field is the same as the value of ``MinTTL``.", + "minimum": 0, + "multipleOf": 1.0, + "type": "number" + }, + "MaxTTL": { + "description": "The maximum amount of time, in seconds, that objects stay in the CloudFront cache before CloudFront sends another request to the origin to see if the object has been updated. CloudFront uses this value only when the origin sends ``Cache-Control`` or ``Expires`` headers with the object. For more information, see [Managing How Long Content Stays in an Edge Cache (Expiration)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.\n The default value for this field is 31536000 seconds (one year). If the value of ``MinTTL`` or ``DefaultTTL`` is more than 31536000 seconds, then the default value for this field is the same as the value of ``DefaultTTL``.", + "minimum": 0, + "multipleOf": 1.0, + "type": "number" + }, + "MinTTL": { + "description": "The minimum amount of time, in seconds, that you want objects to stay in the CloudFront cache before CloudFront sends another request to the origin to see if the object has been updated. For more information, see [Managing How Long Content Stays in an Edge Cache (Expiration)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.", + "minimum": 0, + "multipleOf": 1.0, + "type": "number" + }, + "Name": { + "description": "A unique name to identify the cache policy.", + "type": "string" + }, + "ParametersInCacheKeyAndForwardedToOrigin": { + "$ref": "#/definitions/ParametersInCacheKeyAndForwardedToOrigin", + "description": "The HTTP headers, cookies, and URL query strings to include in the cache key. The values included in the cache key are also included in requests that CloudFront sends to the origin." + } + }, + "required": [ + "Name", + "MinTTL", + "MaxTTL", + "DefaultTTL", + "ParametersInCacheKeyAndForwardedToOrigin" + ], + "type": "object" + }, + "CookiesConfig": { + "additionalProperties": false, + "description": "An object that determines whether any cookies in viewer requests (and if so, which cookies) are included in the cache key and in requests that CloudFront sends to the origin.", + "properties": { + "CookieBehavior": { + "description": "Determines whether any cookies in viewer requests are included in the cache key and in requests that CloudFront sends to the origin. Valid values are:\n + ``none`` \u2013 No cookies in viewer requests are included in the cache key or in requests that CloudFront sends to the origin. Even when this field is set to ``none``, any cookies that are listed in an ``OriginRequestPolicy`` *are* included in origin requests.\n + ``whitelist`` \u2013 Only the cookies in viewer requests that are listed in the ``CookieNames`` type are included in the cache key and in requests that CloudFront sends to the origin.\n + ``allExcept`` \u2013 All cookies in viewer requests are included in the cache key and in requests that CloudFront sends to the origin, *except* for those that are listed in the ``CookieNames`` type, which are not included.\n + ``all`` \u2013 All cookies in viewer requests are included in the cache key and in requests that CloudFront sends to the origin.", + "pattern": "^(none|whitelist|allExcept|all)$", + "type": "string" + }, + "Cookies": { + "description": "Contains a list of cookie names.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "CookieBehavior" + ], + "type": "object" + }, + "HeadersConfig": { + "additionalProperties": false, + "description": "An object that determines whether any HTTP headers (and if so, which headers) are included in the cache key and in requests that CloudFront sends to the origin.", + "properties": { + "HeaderBehavior": { + "description": "Determines whether any HTTP headers are included in the cache key and in requests that CloudFront sends to the origin. Valid values are:\n + ``none`` \u2013 No HTTP headers are included in the cache key or in requests that CloudFront sends to the origin. Even when this field is set to ``none``, any headers that are listed in an ``OriginRequestPolicy`` *are* included in origin requests.\n + ``whitelist`` \u2013 Only the HTTP headers that are listed in the ``Headers`` type are included in the cache key and in requests that CloudFront sends to the origin.", + "pattern": "^(none|whitelist)$", + "type": "string" + }, + "Headers": { + "description": "Contains a list of HTTP header names.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "HeaderBehavior" + ], + "type": "object" + }, + "ParametersInCacheKeyAndForwardedToOrigin": { + "additionalProperties": false, + "description": "This object determines the values that CloudFront includes in the cache key. These values can include HTTP headers, cookies, and URL query strings. CloudFront uses the cache key to find an object in its cache that it can return to the viewer.\n The headers, cookies, and query strings that are included in the cache key are also included in requests that CloudFront sends to the origin. CloudFront sends a request when it can't find an object in its cache that matches the request's cache key. If you want to send values to the origin but *not* include them in the cache key, use ``OriginRequestPolicy``.", + "properties": { + "CookiesConfig": { + "$ref": "#/definitions/CookiesConfig", + "description": "An object that determines whether any cookies in viewer requests (and if so, which cookies) are included in the cache key and in requests that CloudFront sends to the origin." + }, + "EnableAcceptEncodingBrotli": { + "description": "A flag that can affect whether the ``Accept-Encoding`` HTTP header is included in the cache key and included in requests that CloudFront sends to the origin.\n This field is related to the ``EnableAcceptEncodingGzip`` field. If one or both of these fields is ``true`` *and* the viewer request includes the ``Accept-Encoding`` header, then CloudFront does the following:\n + Normalizes the value of the viewer's ``Accept-Encoding`` header\n + Includes the normalized header in the cache key\n + Includes the normalized header in the request to the origin, if a request is necessary\n \n For more information, see [Compression support](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-policy-compressed-objects) in the *Amazon CloudFront Developer Guide*.\n If you set this value to ``true``, and this cache behavior also has an origin request policy attached, do not include the ``Accept-Encoding`` header in the origin request policy. CloudFront always includes the ``Accept-Encoding`` header in origin requests when the value of this field is ``true``, so including this header in an origin request policy has no effect.\n If both of these fields are ``false``, then CloudFront treats the ``Accept-Encoding`` header the same as any other HTTP header in the viewer request. By default, it's not included in the cache key and it's not included in origin requests. In this case, you can manually add ``Accept-Encoding`` to the headers whitelist like any other HTTP header.", + "type": "boolean" + }, + "EnableAcceptEncodingGzip": { + "description": "A flag that can affect whether the ``Accept-Encoding`` HTTP header is included in the cache key and included in requests that CloudFront sends to the origin.\n This field is related to the ``EnableAcceptEncodingBrotli`` field. If one or both of these fields is ``true`` *and* the viewer request includes the ``Accept-Encoding`` header, then CloudFront does the following:\n + Normalizes the value of the viewer's ``Accept-Encoding`` header\n + Includes the normalized header in the cache key\n + Includes the normalized header in the request to the origin, if a request is necessary\n \n For more information, see [Compression support](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-policy-compressed-objects) in the *Amazon CloudFront Developer Guide*.\n If you set this value to ``true``, and this cache behavior also has an origin request policy attached, do not include the ``Accept-Encoding`` header in the origin request policy. CloudFront always includes the ``Accept-Encoding`` header in origin requests when the value of this field is ``true``, so including this header in an origin request policy has no effect.\n If both of these fields are ``false``, then CloudFront treats the ``Accept-Encoding`` header the same as any other HTTP header in the viewer request. By default, it's not included in the cache key and it's not included in origin requests. In this case, you can manually add ``Accept-Encoding`` to the headers whitelist like any other HTTP header.", + "type": "boolean" + }, + "HeadersConfig": { + "$ref": "#/definitions/HeadersConfig", + "description": "An object that determines whether any HTTP headers (and if so, which headers) are included in the cache key and in requests that CloudFront sends to the origin." + }, + "QueryStringsConfig": { + "$ref": "#/definitions/QueryStringsConfig", + "description": "An object that determines whether any URL query strings in viewer requests (and if so, which query strings) are included in the cache key and in requests that CloudFront sends to the origin." + } + }, + "required": [ + "EnableAcceptEncodingGzip", + "HeadersConfig", + "CookiesConfig", + "QueryStringsConfig" + ], + "type": "object" + }, + "QueryStringsConfig": { + "additionalProperties": false, + "description": "An object that determines whether any URL query strings in viewer requests (and if so, which query strings) are included in the cache key and in requests that CloudFront sends to the origin.", + "properties": { + "QueryStringBehavior": { + "description": "Determines whether any URL query strings in viewer requests are included in the cache key and in requests that CloudFront sends to the origin. Valid values are:\n + ``none`` \u2013 No query strings in viewer requests are included in the cache key or in requests that CloudFront sends to the origin. Even when this field is set to ``none``, any query strings that are listed in an ``OriginRequestPolicy`` *are* included in origin requests.\n + ``whitelist`` \u2013 Only the query strings in viewer requests that are listed in the ``QueryStringNames`` type are included in the cache key and in requests that CloudFront sends to the origin.\n + ``allExcept`` \u2013 All query strings in viewer requests are included in the cache key and in requests that CloudFront sends to the origin, *except* those that are listed in the ``QueryStringNames`` type, which are not included.\n + ``all`` \u2013 All query strings in viewer requests are included in the cache key and in requests that CloudFront sends to the origin.", + "pattern": "^(none|whitelist|allExcept|all)$", + "type": "string" + }, + "QueryStrings": { + "description": "Contains a list of query string names.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "QueryStringBehavior" + ], + "type": "object" + } + }, + "description": "A cache policy.\n When it's attached to a cache behavior, the cache policy determines the following:\n + The values that CloudFront includes in the cache key. These values can include HTTP headers, cookies, and URL query strings. CloudFront uses the cache key to find an object in its cache that it can return to the viewer.\n + The default, minimum, and maximum time to live (TTL) values that you want objects to stay in the CloudFront cache.\n \n The headers, cookies, and query strings that are included in the cache key are also included in requests that CloudFront sends to the origin. CloudFront sends a request when it can't find a valid object in its cache that matches the request's cache key. If you want to send values to the origin but *not* include them in the cache key, use ``OriginRequestPolicy``.", + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateCachePolicy" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteCachePolicy", + "cloudfront:GetCachePolicy" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListCachePolicies" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetCachePolicy" + ] + }, + "update": { + "permissions": [ + "cloudfront:UpdateCachePolicy", + "cloudfront:GetCachePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CachePolicyConfig": { + "$ref": "#/definitions/CachePolicyConfig", + "description": "The cache policy configuration." + }, + "Id": { + "description": "", + "type": "string" + }, + "LastModifiedTime": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/LastModifiedTime" + ], + "required": [ + "CachePolicyConfig" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFront::CachePolicy" +} diff --git a/src/schema/aws-cloudfront-cloudfrontoriginaccessidentity.json b/src/schema/aws-cloudfront-cloudfrontoriginaccessidentity.json index dd993e7c..72c58ac9 100644 --- a/src/schema/aws-cloudfront-cloudfrontoriginaccessidentity.json +++ b/src/schema/aws-cloudfront-cloudfrontoriginaccessidentity.json @@ -1,75 +1,80 @@ -{ - "additionalProperties": false, - "definitions": { - "CloudFrontOriginAccessIdentityConfig": { - "additionalProperties": false, - "properties": { - "Comment": { - "type": "string" - } - }, - "required": [ - "Comment" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CloudFront::CloudFrontOriginAccessIdentity", - "handlers": { - "create": { - "permissions": [ - "cloudfront:CreateCloudFrontOriginAccessIdentity" - ] - }, - "delete": { - "permissions": [ - "cloudfront:DeleteCloudFrontOriginAccessIdentity", - "cloudfront:GetCloudFrontOriginAccessIdentity" - ] - }, - "list": { - "permissions": [ - "cloudfront:ListCloudFrontOriginAccessIdentities" - ] - }, - "read": { - "permissions": [ - "cloudfront:GetCloudFrontOriginAccessIdentity" - ] - }, - "update": { - "permissions": [ - "cloudfront:UpdateCloudFrontOriginAccessIdentity", - "cloudfront:GetCloudFrontOriginAccessIdentity" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CloudFrontOriginAccessIdentityConfig": { - "$ref": "#/definitions/CloudFrontOriginAccessIdentityConfig" - }, - "Id": { - "type": "string" - }, - "S3CanonicalUserId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/S3CanonicalUserId" - ], - "required": [ - "CloudFrontOriginAccessIdentityConfig" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CloudFront::CloudFrontOriginAccessIdentity" -} +{ + "additionalProperties": false, + "definitions": { + "CloudFrontOriginAccessIdentityConfig": { + "additionalProperties": false, + "description": "Origin access identity configuration. Send a ``GET`` request to the ``/CloudFront API version/CloudFront/identity ID/config`` resource.", + "properties": { + "Comment": { + "description": "A comment to describe the origin access identity. The comment cannot be longer than 128 characters.", + "type": "string" + } + }, + "required": [ + "Comment" + ], + "type": "object" + } + }, + "description": "The request to create a new origin access identity (OAI). An origin access identity is a special CloudFront user that you can associate with Amazon S3 origins, so that you can secure all or just some of your Amazon S3 content. For more information, see [Restricting Access to Amazon S3 Content by Using an Origin Access Identity](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html) in the *Amazon CloudFront Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateCloudFrontOriginAccessIdentity" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteCloudFrontOriginAccessIdentity", + "cloudfront:GetCloudFrontOriginAccessIdentity" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListCloudFrontOriginAccessIdentities" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetCloudFrontOriginAccessIdentity" + ] + }, + "update": { + "permissions": [ + "cloudfront:UpdateCloudFrontOriginAccessIdentity", + "cloudfront:GetCloudFrontOriginAccessIdentity" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CloudFrontOriginAccessIdentityConfig": { + "$ref": "#/definitions/CloudFrontOriginAccessIdentityConfig", + "description": "The current configuration information for the identity." + }, + "Id": { + "description": "", + "type": "string" + }, + "S3CanonicalUserId": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/S3CanonicalUserId" + ], + "required": [ + "CloudFrontOriginAccessIdentityConfig" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFront::CloudFrontOriginAccessIdentity" +} diff --git a/src/schema/aws-cloudfront-connectiongroup.json b/src/schema/aws-cloudfront-connectiongroup.json new file mode 100644 index 00000000..cdccf8c7 --- /dev/null +++ b/src/schema/aws-cloudfront-connectiongroup.json @@ -0,0 +1,138 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::CloudFront::ConnectionGroup", + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateConnectionGroup", + "cloudfront:GetConnectionGroup", + "cloudfront:TagResource" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteConnectionGroup", + "cloudfront:GetConnectionGroup", + "cloudfront:UpdateConnectionGroup" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListConnectionGroups", + "cloudfront:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetConnectionGroup", + "cloudfront:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "cloudfront:GetConnectionGroup", + "cloudfront:UpdateConnectionGroup", + "cloudfront:ListTagsForResource", + "cloudfront:TagResource", + "cloudfront:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AnycastIpListId": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CreatedTime": { + "format": "date-time", + "type": "string" + }, + "ETag": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "Ipv6Enabled": { + "type": "boolean" + }, + "IsDefault": { + "type": "boolean" + }, + "LastModifiedTime": { + "format": "date-time", + "type": "string" + }, + "Name": { + "type": "string" + }, + "RoutingEndpoint": { + "type": "string" + }, + "Status": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastModifiedTime", + "/properties/RoutingEndpoint", + "/properties/Status", + "/properties/IsDefault", + "/properties/ETag" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "cloudfront:TagResource", + "cloudfront:ListTagsForResource", + "cloudfront:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CloudFront::ConnectionGroup" +} diff --git a/src/schema/aws-cloudfront-continuousdeploymentpolicy.json b/src/schema/aws-cloudfront-continuousdeploymentpolicy.json index ee8e5286..87911e8b 100644 --- a/src/schema/aws-cloudfront-continuousdeploymentpolicy.json +++ b/src/schema/aws-cloudfront-continuousdeploymentpolicy.json @@ -1,220 +1,243 @@ -{ - "additionalProperties": false, - "definitions": { - "ContinuousDeploymentPolicyConfig": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "SingleHeaderPolicyConfig": { - "additionalProperties": false, - "properties": { - "Header": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 1783, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Header", - "Value" - ], - "type": "object" - }, - "SingleWeightPolicyConfig": { - "additionalProperties": false, - "properties": { - "SessionStickinessConfig": { - "$ref": "#/definitions/SessionStickinessConfig" - }, - "Weight": { - "maximum": 1, - "minimum": 0, - "multipleOf": 0.01, - "type": "number" - } - }, - "required": [ - "Weight" - ], - "type": "object" - }, - "StagingDistributionDnsNames": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "TrafficConfig": { - "$ref": "#/definitions/TrafficConfig" - }, - "Type": { - "enum": [ - "SingleWeight", - "SingleHeader" - ], - "type": "string" - } - }, - "required": [ - "Enabled", - "StagingDistributionDnsNames" - ], - "type": "object" - }, - "SessionStickinessConfig": { - "additionalProperties": false, - "properties": { - "IdleTTL": { - "maximum": 3600, - "minimum": 300, - "multipleOf": 1, - "type": "integer" - }, - "MaximumTTL": { - "maximum": 3600, - "minimum": 300, - "multipleOf": 1, - "type": "integer" - } - }, - "required": [ - "IdleTTL", - "MaximumTTL" - ], - "type": "object" - }, - "SingleHeaderConfig": { - "additionalProperties": false, - "properties": { - "Header": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 1783, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Header", - "Value" - ], - "type": "object" - }, - "SingleWeightConfig": { - "additionalProperties": false, - "properties": { - "SessionStickinessConfig": { - "$ref": "#/definitions/SessionStickinessConfig" - }, - "Weight": { - "maximum": 1, - "minimum": 0, - "multipleOf": 0.01, - "type": "number" - } - }, - "required": [ - "Weight" - ], - "type": "object" - }, - "TrafficConfig": { - "additionalProperties": false, - "properties": { - "SingleHeaderConfig": { - "$ref": "#/definitions/SingleHeaderConfig" - }, - "SingleWeightConfig": { - "$ref": "#/definitions/SingleWeightConfig" - }, - "Type": { - "enum": [ - "SingleWeight", - "SingleHeader" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - } - }, - "deprecatedProperties": [ - "/definitions/ContinuousDeploymentPolicyConfig/properties/Type", - "/definitions/ContinuousDeploymentPolicyConfig/properties/SingleHeaderPolicyConfig", - "/definitions/ContinuousDeploymentPolicyConfig/properties/SingleWeightPolicyConfig" - ], - "description": "Resource Type definition for AWS::CloudFront::ContinuousDeploymentPolicy", - "handlers": { - "create": { - "permissions": [ - "cloudfront:CreateContinuousDeploymentPolicy" - ] - }, - "delete": { - "permissions": [ - "cloudfront:DeleteContinuousDeploymentPolicy", - "cloudfront:GetContinuousDeploymentPolicy" - ] - }, - "list": { - "permissions": [ - "cloudfront:ListContinuousDeploymentPolicies" - ] - }, - "read": { - "permissions": [ - "cloudfront:GetContinuousDeploymentPolicy" - ] - }, - "update": { - "permissions": [ - "cloudfront:UpdateContinuousDeploymentPolicy", - "cloudfront:GetContinuousDeploymentPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ContinuousDeploymentPolicyConfig": { - "$ref": "#/definitions/ContinuousDeploymentPolicyConfig" - }, - "Id": { - "type": "string" - }, - "LastModifiedTime": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/LastModifiedTime" - ], - "required": [ - "ContinuousDeploymentPolicyConfig" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CloudFront::ContinuousDeploymentPolicy" -} +{ + "additionalProperties": false, + "definitions": { + "ContinuousDeploymentPolicyConfig": { + "additionalProperties": false, + "description": "Contains the configuration for a continuous deployment policy.", + "properties": { + "Enabled": { + "description": "A Boolean that indicates whether this continuous deployment policy is enabled (in effect). When this value is ``true``, this policy is enabled and in effect. When this value is ``false``, this policy is not enabled and has no effect.", + "type": "boolean" + }, + "SingleHeaderPolicyConfig": { + "additionalProperties": false, + "description": "This configuration determines which HTTP requests are sent to the staging distribution. If the HTTP request contains a header and value that matches what you specify here, the request is sent to the staging distribution. Otherwise the request is sent to the primary distribution.", + "properties": { + "Header": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 1783, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Header", + "Value" + ], + "type": "object" + }, + "SingleWeightPolicyConfig": { + "additionalProperties": false, + "description": "This configuration determines the percentage of HTTP requests that are sent to the staging distribution.", + "properties": { + "SessionStickinessConfig": { + "$ref": "#/definitions/SessionStickinessConfig" + }, + "Weight": { + "maximum": 1, + "minimum": 0, + "multipleOf": 0.01, + "type": "number" + } + }, + "required": [ + "Weight" + ], + "type": "object" + }, + "StagingDistributionDnsNames": { + "description": "The CloudFront domain name of the staging distribution. For example: ``d111111abcdef8.cloudfront.net``.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TrafficConfig": { + "$ref": "#/definitions/TrafficConfig", + "description": "Contains the parameters for routing production traffic from your primary to staging distributions." + }, + "Type": { + "description": "The type of traffic configuration.", + "enum": [ + "SingleWeight", + "SingleHeader" + ], + "type": "string" + } + }, + "required": [ + "Enabled", + "StagingDistributionDnsNames" + ], + "type": "object" + }, + "SessionStickinessConfig": { + "additionalProperties": false, + "description": "Session stickiness provides the ability to define multiple requests from a single viewer as a single session. This prevents the potentially inconsistent experience of sending some of a given user's requests to your staging distribution, while others are sent to your primary distribution. Define the session duration using TTL values.", + "properties": { + "IdleTTL": { + "description": "The amount of time after which you want sessions to cease if no requests are received. Allowed values are 300\u20133600 seconds (5\u201360 minutes).", + "maximum": 3600, + "minimum": 300, + "multipleOf": 1, + "type": "integer" + }, + "MaximumTTL": { + "description": "The maximum amount of time to consider requests from the viewer as being part of the same session. Allowed values are 300\u20133600 seconds (5\u201360 minutes).", + "maximum": 3600, + "minimum": 300, + "multipleOf": 1, + "type": "integer" + } + }, + "required": [ + "IdleTTL", + "MaximumTTL" + ], + "type": "object" + }, + "SingleHeaderConfig": { + "additionalProperties": false, + "description": "Determines which HTTP requests are sent to the staging distribution.", + "properties": { + "Header": { + "description": "The request header name that you want CloudFront to send to your staging distribution. The header must contain the prefix ``aws-cf-cd-``.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The request header value.", + "maxLength": 1783, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Header", + "Value" + ], + "type": "object" + }, + "SingleWeightConfig": { + "additionalProperties": false, + "description": "This configuration determines the percentage of HTTP requests that are sent to the staging distribution.", + "properties": { + "SessionStickinessConfig": { + "$ref": "#/definitions/SessionStickinessConfig", + "description": "Session stickiness provides the ability to define multiple requests from a single viewer as a single session. This prevents the potentially inconsistent experience of sending some of a given user's requests to your staging distribution, while others are sent to your primary distribution. Define the session duration using TTL values." + }, + "Weight": { + "description": "The percentage of traffic to send to a staging distribution, expressed as a decimal number between 0 and 0.15. For example, a value of 0.10 means 10% of traffic is sent to the staging distribution.", + "maximum": 1, + "minimum": 0, + "multipleOf": 0.01, + "type": "number" + } + }, + "required": [ + "Weight" + ], + "type": "object" + }, + "TrafficConfig": { + "additionalProperties": false, + "description": "The traffic configuration of your continuous deployment.", + "properties": { + "SingleHeaderConfig": { + "$ref": "#/definitions/SingleHeaderConfig", + "description": "Determines which HTTP requests are sent to the staging distribution." + }, + "SingleWeightConfig": { + "$ref": "#/definitions/SingleWeightConfig", + "description": "Contains the percentage of traffic to send to the staging distribution." + }, + "Type": { + "description": "The type of traffic configuration.", + "enum": [ + "SingleWeight", + "SingleHeader" + ], + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/definitions/ContinuousDeploymentPolicyConfig/properties/Type", + "/definitions/ContinuousDeploymentPolicyConfig/properties/SingleHeaderPolicyConfig", + "/definitions/ContinuousDeploymentPolicyConfig/properties/SingleWeightPolicyConfig" + ], + "description": "Creates a continuous deployment policy that routes a subset of production traffic from a primary distribution to a staging distribution.\n After you create and update a staging distribution, you can use a continuous deployment policy to incrementally move traffic to the staging distribution. This enables you to test changes to a distribution's configuration before moving all of your production traffic to the new configuration.\n For more information, see [Using CloudFront continuous deployment to safely test CDN configuration changes](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/continuous-deployment.html) in the *Amazon CloudFront Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateContinuousDeploymentPolicy" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteContinuousDeploymentPolicy", + "cloudfront:GetContinuousDeploymentPolicy" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListContinuousDeploymentPolicies" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetContinuousDeploymentPolicy" + ] + }, + "update": { + "permissions": [ + "cloudfront:UpdateContinuousDeploymentPolicy", + "cloudfront:GetContinuousDeploymentPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ContinuousDeploymentPolicyConfig": { + "$ref": "#/definitions/ContinuousDeploymentPolicyConfig", + "description": "Contains the configuration for a continuous deployment policy." + }, + "Id": { + "description": "", + "type": "string" + }, + "LastModifiedTime": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/LastModifiedTime" + ], + "required": [ + "ContinuousDeploymentPolicyConfig" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFront::ContinuousDeploymentPolicy" +} diff --git a/src/schema/aws-cloudfront-distribution.json b/src/schema/aws-cloudfront-distribution.json index d10b65cc..fe2dc415 100644 --- a/src/schema/aws-cloudfront-distribution.json +++ b/src/schema/aws-cloudfront-distribution.json @@ -1,1028 +1,1163 @@ -{ - "additionalProperties": false, - "definitions": { - "CacheBehavior": { - "additionalProperties": false, - "description": "A complex type that describes how CloudFront processes requests.\n You must create at least as many cache behaviors (including the default cache behavior) as you have origins if you want CloudFront to serve objects from all of the origins. Each cache behavior specifies the one origin from which you want CloudFront to get objects. If you have two origins and only the default cache behavior, the default cache behavior will cause CloudFront to get objects from one of the origins, but the other origin is never used.\n For the current quota (formerly known as limit) on the number of cache behaviors that you can add to a distribution, see [Quotas](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html) in the *Amazon CloudFront Developer Guide*.\n If you don't want to specify any cache behaviors, include only an empty ``CacheBehaviors`` element. Don't include an empty ``CacheBehavior`` element because this is invalid.\n To delete all cache behaviors in an existing distribution, update the distribution configuration and include only an empty ``CacheBehaviors`` element.\n To add, change, or remove one or more cache behaviors, update the distribution configuration and specify all of the cache behaviors that you want to include in the updated distribution.\n For more information about cache behaviors, see [Cache Behavior Settings](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesCacheBehavior) in the *Amazon CloudFront Developer Guide*.", - "properties": { - "AllowedMethods": { - "default": [ - "GET", - "HEAD" - ], - "description": "A complex type that controls which HTTP methods CloudFront processes and forwards to your Amazon S3 bucket or your custom origin. There are three choices:\n + CloudFront forwards only ``GET`` and ``HEAD`` requests.\n + CloudFront forwards only ``GET``, ``HEAD``, and ``OPTIONS`` requests.\n + CloudFront forwards ``GET, HEAD, OPTIONS, PUT, PATCH, POST``, and ``DELETE`` requests.\n \n If you pick the third choice, you may need to restrict access to your Amazon S3 bucket or to your custom origin so users can't perform operations that you don't want them to. For example, you might not want users to have permissions to delete objects from your origin.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "CachePolicyId": { - "description": "The unique identifier of the cache policy that is attached to this cache behavior. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n A ``CacheBehavior`` must include either a ``CachePolicyId`` or ``ForwardedValues``. We recommend that you use a ``CachePolicyId``.", - "type": "string" - }, - "CachedMethods": { - "default": [ - "GET", - "HEAD" - ], - "description": "A complex type that controls whether CloudFront caches the response to requests using the specified HTTP methods. There are two choices:\n + CloudFront caches responses to ``GET`` and ``HEAD`` requests.\n + CloudFront caches responses to ``GET``, ``HEAD``, and ``OPTIONS`` requests.\n \n If you pick the second choice for your Amazon S3 Origin, you may need to forward Access-Control-Request-Method, Access-Control-Request-Headers, and Origin headers for the responses to be cached correctly.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Compress": { - "default": false, - "description": "Whether you want CloudFront to automatically compress certain files for this cache behavior. If so, specify true; if not, specify false. For more information, see [Serving Compressed Files](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html) in the *Amazon CloudFront Developer Guide*.", - "type": "boolean" - }, - "DefaultTTL": { - "default": 86400, - "description": "This field is deprecated. We recommend that you use the ``DefaultTTL`` field in a cache policy instead of this field. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n The default amount of time that you want objects to stay in CloudFront caches before CloudFront forwards another request to your origin to determine whether the object has been updated. The value that you specify applies only when your origin does not add HTTP headers such as ``Cache-Control max-age``, ``Cache-Control s-maxage``, and ``Expires`` to objects. For more information, see [Managing How Long Content Stays in an Edge Cache (Expiration)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.", - "type": "number" - }, - "FieldLevelEncryptionId": { - "default": "", - "description": "The value of ``ID`` for the field-level encryption configuration that you want CloudFront to use for encrypting specific fields of data for this cache behavior.", - "type": "string" - }, - "ForwardedValues": { - "$ref": "#/definitions/ForwardedValues", - "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field. For more information, see [Working with policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/working-with-policies.html) in the *Amazon CloudFront Developer Guide*.\n If you want to include values in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n If you want to send values to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) or [Using the managed origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-origin-request-policies.html) in the *Amazon CloudFront Developer Guide*.\n A ``CacheBehavior`` must include either a ``CachePolicyId`` or ``ForwardedValues``. We recommend that you use a ``CachePolicyId``.\n A complex type that specifies how CloudFront handles query strings, cookies, and HTTP headers." - }, - "FunctionAssociations": { - "description": "A list of CloudFront functions that are associated with this cache behavior. CloudFront functions must be published to the ``LIVE`` stage to associate them with a cache behavior.", - "items": { - "$ref": "#/definitions/FunctionAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "LambdaFunctionAssociations": { - "description": "A complex type that contains zero or more Lambda@Edge function associations for a cache behavior.", - "items": { - "$ref": "#/definitions/LambdaFunctionAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "MaxTTL": { - "default": 31536000, - "description": "This field is deprecated. We recommend that you use the ``MaxTTL`` field in a cache policy instead of this field. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n The maximum amount of time that you want objects to stay in CloudFront caches before CloudFront forwards another request to your origin to determine whether the object has been updated. The value that you specify applies only when your origin adds HTTP headers such as ``Cache-Control max-age``, ``Cache-Control s-maxage``, and ``Expires`` to objects. For more information, see [Managing How Long Content Stays in an Edge Cache (Expiration)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.", - "type": "number" - }, - "MinTTL": { - "default": 0, - "description": "This field is deprecated. We recommend that you use the ``MinTTL`` field in a cache policy instead of this field. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n The minimum amount of time that you want objects to stay in CloudFront caches before CloudFront forwards another request to your origin to determine whether the object has been updated. For more information, see [Managing How Long Content Stays in an Edge Cache (Expiration)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.\n You must specify ``0`` for ``MinTTL`` if you configure CloudFront to forward all headers to your origin (under ``Headers``, if you specify ``1`` for ``Quantity`` and ``*`` for ``Name``).", - "type": "number" - }, - "OriginRequestPolicyId": { - "description": "The unique identifier of the origin request policy that is attached to this cache behavior. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) or [Using the managed origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-origin-request-policies.html) in the *Amazon CloudFront Developer Guide*.", - "type": "string" - }, - "PathPattern": { - "description": "The pattern (for example, ``images/*.jpg``) that specifies which requests to apply the behavior to. When CloudFront receives a viewer request, the requested path is compared with path patterns in the order in which cache behaviors are listed in the distribution.\n You can optionally include a slash (``/``) at the beginning of the path pattern. For example, ``/images/*.jpg``. CloudFront behavior is the same with or without the leading ``/``.\n The path pattern for the default cache behavior is ``*`` and cannot be changed. If the request for an object does not match the path pattern for any cache behaviors, CloudFront applies the behavior in the default cache behavior.\n For more information, see [Path Pattern](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesPathPattern) in the *Amazon CloudFront Developer Guide*.", - "type": "string" - }, - "RealtimeLogConfigArn": { - "description": "The Amazon Resource Name (ARN) of the real-time log configuration that is attached to this cache behavior. For more information, see [Real-time logs](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/real-time-logs.html) in the *Amazon CloudFront Developer Guide*.", - "type": "string" - }, - "ResponseHeadersPolicyId": { - "description": "The identifier for a response headers policy.", - "type": "string" - }, - "SmoothStreaming": { - "default": false, - "description": "Indicates whether you want to distribute media files in the Microsoft Smooth Streaming format using the origin that is associated with this cache behavior. If so, specify ``true``; if not, specify ``false``. If you specify ``true`` for ``SmoothStreaming``, you can still distribute other content using this cache behavior if the content matches the value of ``PathPattern``.", - "type": "boolean" - }, - "TargetOriginId": { - "description": "The value of ``ID`` for the origin that you want CloudFront to route requests to when they match this cache behavior.", - "type": "string" - }, - "TrustedKeyGroups": { - "description": "A list of key groups that CloudFront can use to validate signed URLs or signed cookies.\n When a cache behavior contains trusted key groups, CloudFront requires signed URLs or signed cookies for all requests that match the cache behavior. The URLs or cookies must be signed with a private key whose corresponding public key is in the key group. The signed URL or cookie contains information about which public key CloudFront should use to verify the signature. For more information, see [Serving private content](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html) in the *Amazon CloudFront Developer Guide*.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "TrustedSigners": { - "description": "We recommend using ``TrustedKeyGroups`` instead of ``TrustedSigners``.\n A list of AWS-account IDs whose public keys CloudFront can use to validate signed URLs or signed cookies.\n When a cache behavior contains trusted signers, CloudFront requires signed URLs or signed cookies for all requests that match the cache behavior. The URLs or cookies must be signed with the private key of a CloudFront key pair in the trusted signer's AWS-account. The signed URL or cookie contains information about which public key CloudFront should use to verify the signature. For more information, see [Serving private content](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html) in the *Amazon CloudFront Developer Guide*.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ViewerProtocolPolicy": { - "description": "The protocol that viewers can use to access the files in the origin specified by ``TargetOriginId`` when a request matches the path pattern in ``PathPattern``. You can specify the following options:\n + ``allow-all``: Viewers can use HTTP or HTTPS.\n + ``redirect-to-https``: If a viewer submits an HTTP request, CloudFront returns an HTTP status code of 301 (Moved Permanently) to the viewer along with the HTTPS URL. The viewer then resubmits the request using the new URL.\n + ``https-only``: If a viewer sends an HTTP request, CloudFront returns an HTTP status code of 403 (Forbidden).\n \n For more information about requiring the HTTPS protocol, see [Requiring HTTPS Between Viewers and CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-viewers-to-cloudfront.html) in the *Amazon CloudFront Developer Guide*.\n The only way to guarantee that viewers retrieve an object that was fetched from the origin using HTTPS is never to use any other protocol to fetch the object. If you have recently changed from HTTP to HTTPS, we recommend that you clear your objects' cache because cached objects are protocol agnostic. That means that an edge location will return an object from the cache regardless of whether the current request protocol matches the protocol used previously. For more information, see [Managing Cache Expiration](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.", - "type": "string" - } - }, - "required": [ - "PathPattern", - "TargetOriginId", - "ViewerProtocolPolicy" - ], - "type": "object" - }, - "Cookies": { - "additionalProperties": false, - "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field.\n If you want to include cookies in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) in the *Amazon CloudFront Developer Guide*.\n If you want to send cookies to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) in the *Amazon CloudFront Developer Guide*.\n A complex type that specifies whether you want CloudFront to forward cookies to the origin and, if so, which ones. For more information about forwarding cookies to the origin, see [How CloudFront Forwards, Caches, and Logs Cookies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Cookies.html) in the *Amazon CloudFront Developer Guide*.", - "properties": { - "Forward": { - "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field.\n If you want to include cookies in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) in the *Amazon CloudFront Developer Guide*.\n If you want to send cookies to the origin but not include them in the cache key, use origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) in the *Amazon CloudFront Developer Guide*.\n Specifies which cookies to forward to the origin for this cache behavior: all, none, or the list of cookies specified in the ``WhitelistedNames`` complex type.\n Amazon S3 doesn't process cookies. When the cache behavior is forwarding requests to an Amazon S3 origin, specify none for the ``Forward`` element.", - "type": "string" - }, - "WhitelistedNames": { - "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field.\n If you want to include cookies in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) in the *Amazon CloudFront Developer Guide*.\n If you want to send cookies to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) in the *Amazon CloudFront Developer Guide*.\n Required if you specify ``whitelist`` for the value of ``Forward``. A complex type that specifies how many different cookies you want CloudFront to forward to the origin for this cache behavior and, if you want to forward selected cookies, the names of those cookies.\n If you specify ``all`` or ``none`` for the value of ``Forward``, omit ``WhitelistedNames``. If you change the value of ``Forward`` from ``whitelist`` to ``all`` or ``none`` and you don't delete the ``WhitelistedNames`` element and its child elements, CloudFront deletes them automatically.\n For the current limit on the number of cookie names that you can whitelist for each cache behavior, see [CloudFront Limits](https://docs.aws.amazon.com/general/latest/gr/xrefaws_service_limits.html#limits_cloudfront) in the *General Reference*.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Forward" - ], - "type": "object" - }, - "CustomErrorResponse": { - "additionalProperties": false, - "description": "A complex type that controls:\n + Whether CloudFront replaces HTTP status codes in the 4xx and 5xx range with custom error messages before returning the response to the viewer.\n + How long CloudFront caches HTTP status codes in the 4xx and 5xx range.\n \n For more information about custom error pages, see [Customizing Error Responses](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html) in the *Amazon CloudFront Developer Guide*.", - "properties": { - "ErrorCachingMinTTL": { - "default": 300, - "description": "The minimum amount of time, in seconds, that you want CloudFront to cache the HTTP status code specified in ``ErrorCode``. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.\n For more information, see [Customizing Error Responses](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html) in the *Amazon CloudFront Developer Guide*.", - "type": "number" - }, - "ErrorCode": { - "description": "The HTTP status code for which you want to specify a custom error page and/or a caching duration.", - "type": "integer" - }, - "ResponseCode": { - "description": "The HTTP status code that you want CloudFront to return to the viewer along with the custom error page. There are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n + Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer. If you substitute ``200``, the response typically won't be intercepted.\n + If you don't care about distinguishing among different client errors or server errors, you can specify ``400`` or ``500`` as the ``ResponseCode`` for all 4xx or 5xx errors.\n + You might want to return a ``200`` status code (OK) and static website so your customers don't know that your website is down.\n \n If you specify a value for ``ResponseCode``, you must also specify a value for ``ResponsePagePath``.", - "type": "integer" - }, - "ResponsePagePath": { - "description": "The path to the custom error page that you want CloudFront to return to a viewer when your origin returns the HTTP status code specified by ``ErrorCode``, for example, ``/4xx-errors/403-forbidden.html``. If you want to store your objects and your custom error pages in different locations, your distribution must include a cache behavior for which the following is true:\n + The value of ``PathPattern`` matches the path to your custom error messages. For example, suppose you saved custom error pages for 4xx errors in an Amazon S3 bucket in a directory named ``/4xx-errors``. Your distribution must include a cache behavior for which the path pattern routes requests for your custom error pages to that location, for example, ``/4xx-errors/*``.\n + The value of ``TargetOriginId`` specifies the value of the ``ID`` element for the origin that contains your custom error pages.\n \n If you specify a value for ``ResponsePagePath``, you must also specify a value for ``ResponseCode``.\n We recommend that you store custom error pages in an Amazon S3 bucket. If you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.", - "type": "string" - } - }, - "required": [ - "ErrorCode" - ], - "type": "object" - }, - "CustomOriginConfig": { - "additionalProperties": false, - "description": "A custom origin. A custom origin is any origin that is *not* an Amazon S3 bucket, with one exception. An Amazon S3 bucket that is [configured with static website hosting](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html) *is* a custom origin.", - "properties": { - "HTTPPort": { - "default": 80, - "description": "The HTTP port that CloudFront uses to connect to the origin. Specify the HTTP port that the origin listens on.", - "type": "integer" - }, - "HTTPSPort": { - "default": 443, - "description": "The HTTPS port that CloudFront uses to connect to the origin. Specify the HTTPS port that the origin listens on.", - "type": "integer" - }, - "OriginKeepaliveTimeout": { - "default": 5, - "description": "Specifies how long, in seconds, CloudFront persists its connection to the origin. The minimum timeout is 1 second, the maximum is 60 seconds, and the default (if you don't specify otherwise) is 5 seconds.\n For more information, see [Origin Keep-alive Timeout](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginKeepaliveTimeout) in the *Amazon CloudFront Developer Guide*.", - "type": "integer" - }, - "OriginProtocolPolicy": { - "description": "Specifies the protocol (HTTP or HTTPS) that CloudFront uses to connect to the origin. Valid values are:\n + ``http-only`` \u2013 CloudFront always uses HTTP to connect to the origin.\n + ``match-viewer`` \u2013 CloudFront connects to the origin using the same protocol that the viewer used to connect to CloudFront.\n + ``https-only`` \u2013 CloudFront always uses HTTPS to connect to the origin.", - "type": "string" - }, - "OriginReadTimeout": { - "default": 30, - "description": "Specifies how long, in seconds, CloudFront waits for a response from the origin. This is also known as the *origin response timeout*. The minimum timeout is 1 second, the maximum is 60 seconds, and the default (if you don't specify otherwise) is 30 seconds.\n For more information, see [Origin Response Timeout](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginResponseTimeout) in the *Amazon CloudFront Developer Guide*.", - "type": "integer" - }, - "OriginSSLProtocols": { - "default": [ - "TLSv1", - "SSLv3" - ], - "description": "Specifies the minimum SSL/TLS protocol that CloudFront uses when connecting to your origin over HTTPS. Valid values include ``SSLv3``, ``TLSv1``, ``TLSv1.1``, and ``TLSv1.2``.\n For more information, see [Minimum Origin SSL Protocol](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginSSLProtocols) in the *Amazon CloudFront Developer Guide*.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "OriginProtocolPolicy" - ], - "type": "object" - }, - "DefaultCacheBehavior": { - "additionalProperties": false, - "description": "A complex type that describes the default cache behavior if you don't specify a ``CacheBehavior`` element or if request URLs don't match any of the values of ``PathPattern`` in ``CacheBehavior`` elements. You must create exactly one default cache behavior.", - "properties": { - "AllowedMethods": { - "default": [ - "GET", - "HEAD" - ], - "description": "A complex type that controls which HTTP methods CloudFront processes and forwards to your Amazon S3 bucket or your custom origin. There are three choices:\n + CloudFront forwards only ``GET`` and ``HEAD`` requests.\n + CloudFront forwards only ``GET``, ``HEAD``, and ``OPTIONS`` requests.\n + CloudFront forwards ``GET, HEAD, OPTIONS, PUT, PATCH, POST``, and ``DELETE`` requests.\n \n If you pick the third choice, you may need to restrict access to your Amazon S3 bucket or to your custom origin so users can't perform operations that you don't want them to. For example, you might not want users to have permissions to delete objects from your origin.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "CachePolicyId": { - "default": "", - "description": "The unique identifier of the cache policy that is attached to the default cache behavior. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n A ``DefaultCacheBehavior`` must include either a ``CachePolicyId`` or ``ForwardedValues``. We recommend that you use a ``CachePolicyId``.", - "type": "string" - }, - "CachedMethods": { - "default": [ - "GET", - "HEAD" - ], - "description": "A complex type that controls whether CloudFront caches the response to requests using the specified HTTP methods. There are two choices:\n + CloudFront caches responses to ``GET`` and ``HEAD`` requests.\n + CloudFront caches responses to ``GET``, ``HEAD``, and ``OPTIONS`` requests.\n \n If you pick the second choice for your Amazon S3 Origin, you may need to forward Access-Control-Request-Method, Access-Control-Request-Headers, and Origin headers for the responses to be cached correctly.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Compress": { - "default": false, - "description": "Whether you want CloudFront to automatically compress certain files for this cache behavior. If so, specify ``true``; if not, specify ``false``. For more information, see [Serving Compressed Files](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html) in the *Amazon CloudFront Developer Guide*.", - "type": "boolean" - }, - "DefaultTTL": { - "default": 86400, - "description": "This field is deprecated. We recommend that you use the ``DefaultTTL`` field in a cache policy instead of this field. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n The default amount of time that you want objects to stay in CloudFront caches before CloudFront forwards another request to your origin to determine whether the object has been updated. The value that you specify applies only when your origin does not add HTTP headers such as ``Cache-Control max-age``, ``Cache-Control s-maxage``, and ``Expires`` to objects. For more information, see [Managing How Long Content Stays in an Edge Cache (Expiration)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.", - "type": "number" - }, - "FieldLevelEncryptionId": { - "default": "", - "description": "The value of ``ID`` for the field-level encryption configuration that you want CloudFront to use for encrypting specific fields of data for the default cache behavior.", - "type": "string" - }, - "ForwardedValues": { - "$ref": "#/definitions/ForwardedValues", - "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field. For more information, see [Working with policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/working-with-policies.html) in the *Amazon CloudFront Developer Guide*.\n If you want to include values in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n If you want to send values to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) or [Using the managed origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-origin-request-policies.html) in the *Amazon CloudFront Developer Guide*.\n A ``DefaultCacheBehavior`` must include either a ``CachePolicyId`` or ``ForwardedValues``. We recommend that you use a ``CachePolicyId``.\n A complex type that specifies how CloudFront handles query strings, cookies, and HTTP headers." - }, - "FunctionAssociations": { - "description": "A list of CloudFront functions that are associated with this cache behavior. CloudFront functions must be published to the ``LIVE`` stage to associate them with a cache behavior.", - "items": { - "$ref": "#/definitions/FunctionAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "LambdaFunctionAssociations": { - "description": "A complex type that contains zero or more Lambda@Edge function associations for a cache behavior.", - "items": { - "$ref": "#/definitions/LambdaFunctionAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "MaxTTL": { - "default": 31536000, - "description": "This field is deprecated. We recommend that you use the ``MaxTTL`` field in a cache policy instead of this field. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n The maximum amount of time that you want objects to stay in CloudFront caches before CloudFront forwards another request to your origin to determine whether the object has been updated. The value that you specify applies only when your origin adds HTTP headers such as ``Cache-Control max-age``, ``Cache-Control s-maxage``, and ``Expires`` to objects. For more information, see [Managing How Long Content Stays in an Edge Cache (Expiration)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.", - "type": "number" - }, - "MinTTL": { - "default": 0, - "description": "This field is deprecated. We recommend that you use the ``MinTTL`` field in a cache policy instead of this field. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n The minimum amount of time that you want objects to stay in CloudFront caches before CloudFront forwards another request to your origin to determine whether the object has been updated. For more information, see [Managing How Long Content Stays in an Edge Cache (Expiration)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.\n You must specify ``0`` for ``MinTTL`` if you configure CloudFront to forward all headers to your origin (under ``Headers``, if you specify ``1`` for ``Quantity`` and ``*`` for ``Name``).", - "type": "number" - }, - "OriginRequestPolicyId": { - "default": "", - "description": "The unique identifier of the origin request policy that is attached to the default cache behavior. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) or [Using the managed origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-origin-request-policies.html) in the *Amazon CloudFront Developer Guide*.", - "type": "string" - }, - "RealtimeLogConfigArn": { - "default": "", - "description": "The Amazon Resource Name (ARN) of the real-time log configuration that is attached to this cache behavior. For more information, see [Real-time logs](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/real-time-logs.html) in the *Amazon CloudFront Developer Guide*.", - "type": "string" - }, - "ResponseHeadersPolicyId": { - "default": "", - "description": "The identifier for a response headers policy.", - "type": "string" - }, - "SmoothStreaming": { - "default": false, - "description": "Indicates whether you want to distribute media files in the Microsoft Smooth Streaming format using the origin that is associated with this cache behavior. If so, specify ``true``; if not, specify ``false``. If you specify ``true`` for ``SmoothStreaming``, you can still distribute other content using this cache behavior if the content matches the value of ``PathPattern``.", - "type": "boolean" - }, - "TargetOriginId": { - "description": "The value of ``ID`` for the origin that you want CloudFront to route requests to when they use the default cache behavior.", - "type": "string" - }, - "TrustedKeyGroups": { - "description": "A list of key groups that CloudFront can use to validate signed URLs or signed cookies.\n When a cache behavior contains trusted key groups, CloudFront requires signed URLs or signed cookies for all requests that match the cache behavior. The URLs or cookies must be signed with a private key whose corresponding public key is in the key group. The signed URL or cookie contains information about which public key CloudFront should use to verify the signature. For more information, see [Serving private content](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html) in the *Amazon CloudFront Developer Guide*.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "TrustedSigners": { - "description": "We recommend using ``TrustedKeyGroups`` instead of ``TrustedSigners``.\n A list of AWS-account IDs whose public keys CloudFront can use to validate signed URLs or signed cookies.\n When a cache behavior contains trusted signers, CloudFront requires signed URLs or signed cookies for all requests that match the cache behavior. The URLs or cookies must be signed with the private key of a CloudFront key pair in a trusted signer's AWS-account. The signed URL or cookie contains information about which public key CloudFront should use to verify the signature. For more information, see [Serving private content](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html) in the *Amazon CloudFront Developer Guide*.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ViewerProtocolPolicy": { - "description": "The protocol that viewers can use to access the files in the origin specified by ``TargetOriginId`` when a request matches the path pattern in ``PathPattern``. You can specify the following options:\n + ``allow-all``: Viewers can use HTTP or HTTPS.\n + ``redirect-to-https``: If a viewer submits an HTTP request, CloudFront returns an HTTP status code of 301 (Moved Permanently) to the viewer along with the HTTPS URL. The viewer then resubmits the request using the new URL.\n + ``https-only``: If a viewer sends an HTTP request, CloudFront returns an HTTP status code of 403 (Forbidden).\n \n For more information about requiring the HTTPS protocol, see [Requiring HTTPS Between Viewers and CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-viewers-to-cloudfront.html) in the *Amazon CloudFront Developer Guide*.\n The only way to guarantee that viewers retrieve an object that was fetched from the origin using HTTPS is never to use any other protocol to fetch the object. If you have recently changed from HTTP to HTTPS, we recommend that you clear your objects' cache because cached objects are protocol agnostic. That means that an edge location will return an object from the cache regardless of whether the current request protocol matches the protocol used previously. For more information, see [Managing Cache Expiration](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.", - "type": "string" - } - }, - "required": [ - "TargetOriginId", - "ViewerProtocolPolicy" - ], - "type": "object" - }, - "DistributionConfig": { - "additionalProperties": false, - "description": "A distribution configuration.", - "properties": { - "Aliases": { - "description": "A complex type that contains information about CNAMEs (alternate domain names), if any, for this distribution.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "CNAMEs": { - "description": "", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "CacheBehaviors": { - "description": "A complex type that contains zero or more ``CacheBehavior`` elements.", - "items": { - "$ref": "#/definitions/CacheBehavior" - }, - "type": "array", - "uniqueItems": false - }, - "Comment": { - "default": "", - "description": "A comment to describe the distribution. The comment cannot be longer than 128 characters.", - "type": "string" - }, - "ContinuousDeploymentPolicyId": { - "description": "The identifier of a continuous deployment policy. For more information, see ``CreateContinuousDeploymentPolicy``.", - "type": "string" - }, - "CustomErrorResponses": { - "description": "A complex type that controls the following:\n + Whether CloudFront replaces HTTP status codes in the 4xx and 5xx range with custom error messages before returning the response to the viewer.\n + How long CloudFront caches HTTP status codes in the 4xx and 5xx range.\n \n For more information about custom error pages, see [Customizing Error Responses](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html) in the *Amazon CloudFront Developer Guide*.", - "items": { - "$ref": "#/definitions/CustomErrorResponse" - }, - "type": "array", - "uniqueItems": false - }, - "CustomOrigin": { - "$ref": "#/definitions/LegacyCustomOrigin", - "description": "" - }, - "DefaultCacheBehavior": { - "$ref": "#/definitions/DefaultCacheBehavior", - "description": "A complex type that describes the default cache behavior if you don't specify a ``CacheBehavior`` element or if files don't match any of the values of ``PathPattern`` in ``CacheBehavior`` elements. You must create exactly one default cache behavior." - }, - "DefaultRootObject": { - "default": "", - "description": "The object that you want CloudFront to request from your origin (for example, ``index.html``) when a viewer requests the root URL for your distribution (``https://www.example.com``) instead of an object in your distribution (``https://www.example.com/product-description.html``). Specifying a default root object avoids exposing the contents of your distribution.\n Specify only the object name, for example, ``index.html``. Don't add a ``/`` before the object name.\n If you don't want to specify a default root object when you create a distribution, include an empty ``DefaultRootObject`` element.\n To delete the default root object from an existing distribution, update the distribution configuration and include an empty ``DefaultRootObject`` element.\n To replace the default root object, update the distribution configuration and specify the new object.\n For more information about the default root object, see [Creating a Default Root Object](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DefaultRootObject.html) in the *Amazon CloudFront Developer Guide*.", - "type": "string" - }, - "Enabled": { - "description": "From this field, you can enable or disable the selected distribution.", - "type": "boolean" - }, - "HttpVersion": { - "default": "http1.1", - "description": "(Optional) Specify the maximum HTTP version(s) that you want viewers to use to communicate with CF. The default value for new distributions is ``http1.1``.\n For viewers and CF to use HTTP/2, viewers must support TLSv1.2 or later, and must support Server Name Indication (SNI).\n For viewers and CF to use HTTP/3, viewers must support TLSv1.3 and Server Name Indication (SNI). CF supports HTTP/3 connection migration to allow the viewer to switch networks without losing connection. For more information about connection migration, see [Connection Migration](https://docs.aws.amazon.com/https://www.rfc-editor.org/rfc/rfc9000.html#name-connection-migration) at RFC 9000. For more information about supported TLSv1.3 ciphers, see [Supported protocols and ciphers between viewers and CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/secure-connections-supported-viewer-protocols-ciphers.html).", - "type": "string" - }, - "IPV6Enabled": { - "description": "If you want CloudFront to respond to IPv6 DNS requests with an IPv6 address for your distribution, specify ``true``. If you specify ``false``, CloudFront responds to IPv6 DNS requests with the DNS response code ``NOERROR`` and with no IP addresses. This allows viewers to submit a second request, for an IPv4 address for your distribution.\n In general, you should enable IPv6 if you have users on IPv6 networks who want to access your content. However, if you're using signed URLs or signed cookies to restrict access to your content, and if you're using a custom policy that includes the ``IpAddress`` parameter to restrict the IP addresses that can access your content, don't enable IPv6. If you want to restrict access to some content by IP address and not restrict access to other content (or restrict access but not by IP address), you can create two distributions. For more information, see [Creating a Signed URL Using a Custom Policy](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-creating-signed-url-custom-policy.html) in the *Amazon CloudFront Developer Guide*.\n If you're using an R53AWSIntlong alias resource record set to route traffic to your CloudFront distribution, you need to create a second alias resource record set when both of the following are true:\n + You enable IPv6 for the distribution\n + You're using alternate domain names in the URLs for your objects\n \n For more information, see [Routing Traffic to an Amazon CloudFront Web Distribution by Using Your Domain Name](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-cloudfront-distribution.html) in the *Developer Guide*.\n If you created a CNAME resource record set, either with R53AWSIntlong or with another DNS service, you don't need to make any changes. A CNAME record will route traffic to your distribution regardless of the IP address format of the viewer request.", - "type": "boolean" - }, - "Logging": { - "$ref": "#/definitions/Logging", - "description": "A complex type that controls whether access logs are written for the distribution.\n For more information about logging, see [Access Logs](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html) in the *Amazon CloudFront Developer Guide*." - }, - "OriginGroups": { - "$ref": "#/definitions/OriginGroups", - "description": "A complex type that contains information about origin groups for this distribution." - }, - "Origins": { - "description": "A complex type that contains information about origins for this distribution.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Origin" - }, - "type": "array", - "uniqueItems": false - }, - "PriceClass": { - "default": "PriceClass_All", - "description": "The price class that corresponds with the maximum price that you want to pay for CloudFront service. If you specify ``PriceClass_All``, CloudFront responds to requests for your objects from all CloudFront edge locations.\n If you specify a price class other than ``PriceClass_All``, CloudFront serves your objects from the CloudFront edge location that has the lowest latency among the edge locations in your price class. Viewers who are in or near regions that are excluded from your specified price class may encounter slower performance.\n For more information about price classes, see [Choosing the Price Class for a CloudFront Distribution](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PriceClass.html) in the *Amazon CloudFront Developer Guide*. For information about CloudFront pricing, including how price classes (such as Price Class 100) map to CloudFront regions, see [Amazon CloudFront Pricing](https://docs.aws.amazon.com/cloudfront/pricing/).", - "type": "string" - }, - "Restrictions": { - "$ref": "#/definitions/Restrictions", - "default": { - "GeoRestriction": { - "RestrictionType": "none" - } - }, - "description": "A complex type that identifies ways in which you want to restrict distribution of your content." - }, - "S3Origin": { - "$ref": "#/definitions/LegacyS3Origin", - "description": "" - }, - "Staging": { - "description": "A Boolean that indicates whether this is a staging distribution. When this value is ``true``, this is a staging distribution. When this value is ``false``, this is not a staging distribution.", - "type": "boolean" - }, - "ViewerCertificate": { - "$ref": "#/definitions/ViewerCertificate", - "default": { - "CloudFrontDefaultCertificate": true - }, - "description": "A complex type that determines the distribution's SSL/TLS configuration for communicating with viewers." - }, - "WebACLId": { - "default": "", - "description": "A unique identifier that specifies the WAF web ACL, if any, to associate with this distribution. To specify a web ACL created using the latest version of WAF, use the ACL ARN, for example ``arn:aws:wafv2:us-east-1:123456789012:global/webacl/ExampleWebACL/473e64fd-f30b-4765-81a0-62ad96dd167a``. To specify a web ACL created using WAF Classic, use the ACL ID, for example ``473e64fd-f30b-4765-81a0-62ad96dd167a``.\n WAF is a web application firewall that lets you monitor the HTTP and HTTPS requests that are forwarded to CloudFront, and lets you control access to your content. Based on conditions that you specify, such as the IP addresses that requests originate from or the values of query strings, CloudFront responds to requests either with the requested content or with an HTTP 403 status code (Forbidden). You can also configure CloudFront to return a custom error page when a request is blocked. For more information about WAF, see the [Developer Guide](https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html).", - "type": "string" - } - }, - "required": [ - "Enabled", - "DefaultCacheBehavior" - ], - "type": "object" - }, - "ForwardedValues": { - "additionalProperties": false, - "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field.\n If you want to include values in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) in the *Amazon CloudFront Developer Guide*.\n If you want to send values to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) in the *Amazon CloudFront Developer Guide*.\n A complex type that specifies how CloudFront handles query strings, cookies, and HTTP headers.", - "properties": { - "Cookies": { - "$ref": "#/definitions/Cookies", - "default": { - "Forward": "none" - }, - "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field.\n If you want to include cookies in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) in the *Amazon CloudFront Developer Guide*.\n If you want to send cookies to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) in the *Amazon CloudFront Developer Guide*.\n A complex type that specifies whether you want CloudFront to forward cookies to the origin and, if so, which ones. For more information about forwarding cookies to the origin, see [How CloudFront Forwards, Caches, and Logs Cookies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Cookies.html) in the *Amazon CloudFront Developer Guide*." - }, - "Headers": { - "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field.\n If you want to include headers in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) in the *Amazon CloudFront Developer Guide*.\n If you want to send headers to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) in the *Amazon CloudFront Developer Guide*.\n A complex type that specifies the ``Headers``, if any, that you want CloudFront to forward to the origin for this cache behavior (whitelisted headers). For the headers that you specify, CloudFront also caches separate versions of a specified object that is based on the header values in viewer requests.\n For more information, see [Caching Content Based on Request Headers](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html) in the *Amazon CloudFront Developer Guide*.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "QueryString": { - "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field.\n If you want to include query strings in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) in the *Amazon CloudFront Developer Guide*.\n If you want to send query strings to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) in the *Amazon CloudFront Developer Guide*.\n Indicates whether you want CloudFront to forward query strings to the origin that is associated with this cache behavior and cache based on the query string parameters. CloudFront behavior depends on the value of ``QueryString`` and on the values that you specify for ``QueryStringCacheKeys``, if any:\n If you specify true for ``QueryString`` and you don't specify any values for ``QueryStringCacheKeys``, CloudFront forwards all query string parameters to the origin and caches based on all query string parameters. Depending on how many query string parameters and values you have, this can adversely affect performance because CloudFront must forward more requests to the origin.\n If you specify true for ``QueryString`` and you specify one or more values for ``QueryStringCacheKeys``, CloudFront forwards all query string parameters to the origin, but it only caches based on the query string parameters that you specify.\n If you specify false for ``QueryString``, CloudFront doesn't forward any query string parameters to the origin, and doesn't cache based on query string parameters.\n For more information, see [Configuring CloudFront to Cache Based on Query String Parameters](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/QueryStringParameters.html) in the *Amazon CloudFront Developer Guide*.", - "type": "boolean" - }, - "QueryStringCacheKeys": { - "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field.\n If you want to include query strings in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) in the *Amazon CloudFront Developer Guide*.\n If you want to send query strings to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) in the *Amazon CloudFront Developer Guide*.\n A complex type that contains information about the query string parameters that you want CloudFront to use for caching for this cache behavior.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "QueryString" - ], - "type": "object" - }, - "FunctionAssociation": { - "additionalProperties": false, - "description": "A CloudFront function that is associated with a cache behavior in a CloudFront distribution.", - "properties": { - "EventType": { - "description": "The event type of the function, either ``viewer-request`` or ``viewer-response``. You cannot use origin-facing event types (``origin-request`` and ``origin-response``) with a CloudFront function.", - "type": "string" - }, - "FunctionARN": { - "description": "The Amazon Resource Name (ARN) of the function.", - "type": "string" - } - }, - "type": "object" - }, - "GeoRestriction": { - "additionalProperties": false, - "description": "A complex type that controls the countries in which your content is distributed. CF determines the location of your users using ``MaxMind`` GeoIP databases. To disable geo restriction, remove the [Restrictions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-restrictions) property from your stack template.", - "properties": { - "Locations": { - "description": "A complex type that contains a ``Location`` element for each country in which you want CloudFront either to distribute your content (``whitelist``) or not distribute your content (``blacklist``).\n The ``Location`` element is a two-letter, uppercase country code for a country that you want to include in your ``blacklist`` or ``whitelist``. Include one ``Location`` element for each country.\n CloudFront and ``MaxMind`` both use ``ISO 3166`` country codes. For the current list of countries and the corresponding codes, see ``ISO 3166-1-alpha-2`` code on the *International Organization for Standardization* website. You can also refer to the country list on the CloudFront console, which includes both country names and codes.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "RestrictionType": { - "description": "The method that you want to use to restrict distribution of your content by country:\n + ``none``: No geo restriction is enabled, meaning access to content is not restricted by client geo location.\n + ``blacklist``: The ``Location`` elements specify the countries in which you don't want CloudFront to distribute your content.\n + ``whitelist``: The ``Location`` elements specify the countries in which you want CloudFront to distribute your content.", - "type": "string" - } - }, - "required": [ - "RestrictionType" - ], - "type": "object" - }, - "LambdaFunctionAssociation": { - "additionalProperties": false, - "description": "A complex type that contains a Lambda@Edge function association.", - "properties": { - "EventType": { - "description": "Specifies the event type that triggers a Lambda@Edge function invocation. You can specify the following values:\n + ``viewer-request``: The function executes when CloudFront receives a request from a viewer and before it checks to see whether the requested object is in the edge cache.\n + ``origin-request``: The function executes only when CloudFront sends a request to your origin. When the requested object is in the edge cache, the function doesn't execute.\n + ``origin-response``: The function executes after CloudFront receives a response from the origin and before it caches the object in the response. When the requested object is in the edge cache, the function doesn't execute.\n + ``viewer-response``: The function executes before CloudFront returns the requested object to the viewer. The function executes regardless of whether the object was already in the edge cache.\n If the origin returns an HTTP status code other than HTTP 200 (OK), the function doesn't execute.", - "type": "string" - }, - "IncludeBody": { - "description": "A flag that allows a Lambda@Edge function to have read access to the body content. For more information, see [Accessing the Request Body by Choosing the Include Body Option](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-include-body-access.html) in the Amazon CloudFront Developer Guide.", - "type": "boolean" - }, - "LambdaFunctionARN": { - "description": "The ARN of the Lambda@Edge function. You must specify the ARN of a function version; you can't specify an alias or $LATEST.", - "type": "string" - } - }, - "type": "object" - }, - "LegacyCustomOrigin": { - "additionalProperties": false, - "description": "", - "properties": { - "DNSName": { - "description": "", - "type": "string" - }, - "HTTPPort": { - "default": 80, - "description": "", - "type": "integer" - }, - "HTTPSPort": { - "default": 443, - "description": "", - "type": "integer" - }, - "OriginProtocolPolicy": { - "description": "", - "type": "string" - }, - "OriginSSLProtocols": { - "description": "", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "DNSName", - "OriginProtocolPolicy", - "OriginSSLProtocols" - ], - "type": "object" - }, - "LegacyS3Origin": { - "additionalProperties": false, - "description": "", - "properties": { - "DNSName": { - "description": "", - "type": "string" - }, - "OriginAccessIdentity": { - "default": "", - "description": "", - "type": "string" - } - }, - "required": [ - "DNSName" - ], - "type": "object" - }, - "Logging": { - "additionalProperties": false, - "description": "A complex type that controls whether access logs are written for the distribution.", - "properties": { - "Bucket": { - "description": "The Amazon S3 bucket to store the access logs in, for example, ``myawslogbucket.s3.amazonaws.com``.", - "type": "string" - }, - "IncludeCookies": { - "default": false, - "description": "Specifies whether you want CloudFront to include cookies in access logs, specify ``true`` for ``IncludeCookies``. If you choose to include cookies in logs, CloudFront logs all cookies regardless of how you configure the cache behaviors for this distribution. If you don't want to include cookies when you create a distribution or if you want to disable include cookies for an existing distribution, specify ``false`` for ``IncludeCookies``.", - "type": "boolean" - }, - "Prefix": { - "default": "", - "description": "An optional string that you want CloudFront to prefix to the access log ``filenames`` for this distribution, for example, ``myprefix/``. If you want to enable logging, but you don't want to specify a prefix, you still must include an empty ``Prefix`` element in the ``Logging`` element.", - "type": "string" - } - }, - "required": [ - "Bucket" - ], - "type": "object" - }, - "Origin": { - "additionalProperties": false, - "description": "An origin.\n An origin is the location where content is stored, and from which CloudFront gets content to serve to viewers. To specify an origin:\n + Use ``S3OriginConfig`` to specify an Amazon S3 bucket that is not configured with static website hosting.\n + Use ``CustomOriginConfig`` to specify all other kinds of origins, including:\n + An Amazon S3 bucket that is configured with static website hosting\n + An Elastic Load Balancing load balancer\n + An EMPlong endpoint\n + An EMSlong container\n + Any other HTTP server, running on an Amazon EC2 instance or any other kind of host\n \n \n For the current maximum number of origins that you can specify per distribution, see [General Quotas on Web Distributions](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html#limits-web-distributions) in the *Amazon CloudFront Developer Guide* (quotas were formerly referred to as limits).", - "properties": { - "ConnectionAttempts": { - "description": "The number of times that CloudFront attempts to connect to the origin. The minimum number is 1, the maximum is 3, and the default (if you don't specify otherwise) is 3.\n For a custom origin (including an Amazon S3 bucket that's configured with static website hosting), this value also specifies the number of times that CloudFront attempts to get a response from the origin, in the case of an [Origin Response Timeout](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginResponseTimeout).\n For more information, see [Origin Connection Attempts](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#origin-connection-attempts) in the *Amazon CloudFront Developer Guide*.", - "type": "integer" - }, - "ConnectionTimeout": { - "description": "The number of seconds that CloudFront waits when trying to establish a connection to the origin. The minimum timeout is 1 second, the maximum is 10 seconds, and the default (if you don't specify otherwise) is 10 seconds.\n For more information, see [Origin Connection Timeout](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#origin-connection-timeout) in the *Amazon CloudFront Developer Guide*.", - "type": "integer" - }, - "CustomOriginConfig": { - "$ref": "#/definitions/CustomOriginConfig", - "description": "Use this type to specify an origin that is not an Amazon S3 bucket, with one exception. If the Amazon S3 bucket is configured with static website hosting, use this type. If the Amazon S3 bucket is not configured with static website hosting, use the ``S3OriginConfig`` type instead." - }, - "DomainName": { - "description": "The domain name for the origin.\n For more information, see [Origin Domain Name](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesDomainName) in the *Amazon CloudFront Developer Guide*.", - "type": "string" - }, - "Id": { - "description": "A unique identifier for the origin. This value must be unique within the distribution.\n Use this value to specify the ``TargetOriginId`` in a ``CacheBehavior`` or ``DefaultCacheBehavior``.", - "type": "string" - }, - "OriginAccessControlId": { - "description": "The unique identifier of an origin access control for this origin.\n For more information, see [Restricting access to an Amazon S3 origin](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html) in the *Amazon CloudFront Developer Guide*.", - "type": "string" - }, - "OriginCustomHeaders": { - "description": "A list of HTTP header names and values that CloudFront adds to the requests that it sends to the origin.\n For more information, see [Adding Custom Headers to Origin Requests](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/add-origin-custom-headers.html) in the *Amazon CloudFront Developer Guide*.", - "items": { - "$ref": "#/definitions/OriginCustomHeader" - }, - "type": "array", - "uniqueItems": false - }, - "OriginPath": { - "default": "", - "description": "An optional path that CloudFront appends to the origin domain name when CloudFront requests content from the origin.\n For more information, see [Origin Path](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginPath) in the *Amazon CloudFront Developer Guide*.", - "type": "string" - }, - "OriginShield": { - "$ref": "#/definitions/OriginShield", - "description": "CloudFront Origin Shield. Using Origin Shield can help reduce the load on your origin.\n For more information, see [Using Origin Shield](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/origin-shield.html) in the *Amazon CloudFront Developer Guide*." - }, - "S3OriginConfig": { - "$ref": "#/definitions/S3OriginConfig", - "description": "Use this type to specify an origin that is an Amazon S3 bucket that is not configured with static website hosting. To specify any other type of origin, including an Amazon S3 bucket that is configured with static website hosting, use the ``CustomOriginConfig`` type instead." - } - }, - "required": [ - "DomainName", - "Id" - ], - "type": "object" - }, - "OriginCustomHeader": { - "additionalProperties": false, - "description": "A complex type that contains ``HeaderName`` and ``HeaderValue`` elements, if any, for this distribution.", - "properties": { - "HeaderName": { - "description": "The name of a header that you want CloudFront to send to your origin. For more information, see [Adding Custom Headers to Origin Requests](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/forward-custom-headers.html) in the *Amazon CloudFront Developer Guide*.", - "type": "string" - }, - "HeaderValue": { - "description": "The value for the header that you specified in the ``HeaderName`` field.", - "type": "string" - } - }, - "required": [ - "HeaderValue", - "HeaderName" - ], - "type": "object" - }, - "OriginGroup": { - "additionalProperties": false, - "description": "An origin group includes two origins (a primary origin and a second origin to failover to) and a failover criteria that you specify. You create an origin group to support origin failover in CloudFront. When you create or update a distribution, you can specify the origin group instead of a single origin, and CloudFront will failover from the primary origin to the second origin under the failover conditions that you've chosen.", - "properties": { - "FailoverCriteria": { - "$ref": "#/definitions/OriginGroupFailoverCriteria", - "description": "A complex type that contains information about the failover criteria for an origin group." - }, - "Id": { - "description": "The origin group's ID.", - "type": "string" - }, - "Members": { - "$ref": "#/definitions/OriginGroupMembers", - "description": "A complex type that contains information about the origins in an origin group." - } - }, - "required": [ - "Id", - "FailoverCriteria", - "Members" - ], - "type": "object" - }, - "OriginGroupFailoverCriteria": { - "additionalProperties": false, - "description": "A complex data type that includes information about the failover criteria for an origin group, including the status codes for which CloudFront will failover from the primary origin to the second origin.", - "properties": { - "StatusCodes": { - "$ref": "#/definitions/StatusCodes", - "description": "The status codes that, when returned from the primary origin, will trigger CloudFront to failover to the second origin." - } - }, - "required": [ - "StatusCodes" - ], - "type": "object" - }, - "OriginGroupMember": { - "additionalProperties": false, - "description": "An origin in an origin group.", - "properties": { - "OriginId": { - "description": "The ID for an origin in an origin group.", - "type": "string" - } - }, - "required": [ - "OriginId" - ], - "type": "object" - }, - "OriginGroupMembers": { - "additionalProperties": false, - "description": "A complex data type for the origins included in an origin group.", - "properties": { - "Items": { - "description": "Items (origins) in an origin group.", - "items": { - "$ref": "#/definitions/OriginGroupMember" - }, - "type": "array", - "uniqueItems": false - }, - "Quantity": { - "description": "The number of origins in an origin group.", - "type": "integer" - } - }, - "required": [ - "Quantity", - "Items" - ], - "type": "object" - }, - "OriginGroups": { - "additionalProperties": false, - "description": "A complex data type for the origin groups specified for a distribution.", - "properties": { - "Items": { - "description": "The items (origin groups) in a distribution.", - "items": { - "$ref": "#/definitions/OriginGroup" - }, - "type": "array", - "uniqueItems": false - }, - "Quantity": { - "description": "The number of origin groups.", - "type": "integer" - } - }, - "required": [ - "Quantity" - ], - "type": "object" - }, - "OriginShield": { - "additionalProperties": false, - "description": "CloudFront Origin Shield.\n Using Origin Shield can help reduce the load on your origin. For more information, see [Using Origin Shield](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/origin-shield.html) in the *Amazon CloudFront Developer Guide*.", - "properties": { - "Enabled": { - "description": "A flag that specifies whether Origin Shield is enabled.\n When it's enabled, CloudFront routes all requests through Origin Shield, which can help protect your origin. When it's disabled, CloudFront might send requests directly to your origin from multiple edge locations or regional edge caches.", - "type": "boolean" - }, - "OriginShieldRegion": { - "description": "The AWS-Region for Origin Shield.\n Specify the AWS-Region that has the lowest latency to your origin. To specify a region, use the region code, not the region name. For example, specify the US East (Ohio) region as ``us-east-2``.\n When you enable CloudFront Origin Shield, you must specify the AWS-Region for Origin Shield. For the list of AWS-Regions that you can specify, and for help choosing the best Region for your origin, see [Choosing the for Origin Shield](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/origin-shield.html#choose-origin-shield-region) in the *Amazon CloudFront Developer Guide*.", - "type": "string" - } - }, - "type": "object" - }, - "Restrictions": { - "additionalProperties": false, - "description": "A complex type that identifies ways in which you want to restrict distribution of your content.", - "properties": { - "GeoRestriction": { - "$ref": "#/definitions/GeoRestriction", - "description": "A complex type that controls the countries in which your content is distributed. CF determines the location of your users using ``MaxMind`` GeoIP databases. To disable geo restriction, remove the [Restrictions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-restrictions) property from your stack template." - } - }, - "required": [ - "GeoRestriction" - ], - "type": "object" - }, - "S3OriginConfig": { - "additionalProperties": false, - "description": "A complex type that contains information about the Amazon S3 origin. If the origin is a custom origin or an S3 bucket that is configured as a website endpoint, use the ``CustomOriginConfig`` element instead.", - "properties": { - "OriginAccessIdentity": { - "default": "", - "description": "The CloudFront origin access identity to associate with the origin. Use an origin access identity to configure the origin so that viewers can *only* access objects in an Amazon S3 bucket through CloudFront. The format of the value is:\n origin-access-identity/cloudfront/*ID-of-origin-access-identity* \n where ``ID-of-origin-access-identity`` is the value that CloudFront returned in the ``ID`` element when you created the origin access identity.\n If you want viewers to be able to access objects using either the CloudFront URL or the Amazon S3 URL, specify an empty ``OriginAccessIdentity`` element.\n To delete the origin access identity from an existing distribution, update the distribution configuration and include an empty ``OriginAccessIdentity`` element.\n To replace the origin access identity, update the distribution configuration and specify the new origin access identity.\n For more information about the origin access identity, see [Serving Private Content through CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html) in the *Amazon CloudFront Developer Guide*.", - "type": "string" - } - }, - "type": "object" - }, - "StatusCodes": { - "additionalProperties": false, - "description": "A complex data type for the status codes that you specify that, when returned by a primary origin, trigger CloudFront to failover to a second origin.", - "properties": { - "Items": { - "description": "The items (status codes) for an origin group.", - "items": { - "type": "integer" - }, - "type": "array", - "uniqueItems": false - }, - "Quantity": { - "description": "The number of status codes.", - "type": "integer" - } - }, - "required": [ - "Quantity", - "Items" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A complex type that contains ``Tag`` key and ``Tag`` value.", - "properties": { - "Key": { - "description": "A string that contains ``Tag`` key.\n The string length should be between 1 and 128 characters. Valid characters include ``a-z``, ``A-Z``, ``0-9``, space, and the special characters ``_ - . : / = + @``.", - "type": "string" - }, - "Value": { - "description": "A string that contains an optional ``Tag`` value.\n The string length should be between 0 and 256 characters. Valid characters include ``a-z``, ``A-Z``, ``0-9``, space, and the special characters ``_ - . : / = + @``.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "ViewerCertificate": { - "additionalProperties": false, - "description": "A complex type that determines the distribution's SSL/TLS configuration for communicating with viewers.\n If the distribution doesn't use ``Aliases`` (also known as alternate domain names or CNAMEs)\u2014that is, if the distribution uses the CloudFront domain name such as ``d111111abcdef8.cloudfront.net``\u2014set ``CloudFrontDefaultCertificate`` to ``true`` and leave all other fields empty.\n If the distribution uses ``Aliases`` (alternate domain names or CNAMEs), use the fields in this type to specify the following settings:\n + Which viewers the distribution accepts HTTPS connections from: only viewers that support [server name indication (SNI)](https://docs.aws.amazon.com/https://en.wikipedia.org/wiki/Server_Name_Indication) (recommended), or all viewers including those that don't support SNI.\n + To accept HTTPS connections from only viewers that support SNI, set ``SSLSupportMethod`` to ``sni-only``. This is recommended. Most browsers and clients support SNI. (In CloudFormation, the field name is ``SslSupportMethod``. Note the different capitalization.)\n + To accept HTTPS connections from all viewers, including those that don't support SNI, set ``SSLSupportMethod`` to ``vip``. This is not recommended, and results in additional monthly charges from CloudFront. (In CloudFormation, the field name is ``SslSupportMethod``. Note the different capitalization.)\n \n + The minimum SSL/TLS protocol version that the distribution can use to communicate with viewers. To specify a minimum version, choose a value for ``MinimumProtocolVersion``. For more information, see [Security Policy](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValues-security-policy) in the *Amazon CloudFront Developer Guide*.\n + The location of the SSL/TLS certificate, [(ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) (recommended) or [(IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html). You specify the location by setting a value in one of the following fields (not both):\n + ``ACMCertificateArn`` (In CloudFormation, this field name is ``AcmCertificateArn``. Note the different capitalization.)\n + ``IAMCertificateId`` (In CloudFormation, this field name is ``IamCertificateId``. Note the different capitalization.)\n \n \n All distributions support HTTPS connections from viewers. To require viewers to use HTTPS only, or to redirect them from HTTP to HTTPS, use ``ViewerProtocolPolicy`` in the ``CacheBehavior`` or ``DefaultCacheBehavior``. To specify how CloudFront should use SSL/TLS to communicate with your custom origin, use ``CustomOriginConfig``.\n For more information, see [Using HTTPS with CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https.html) and [Using Alternate Domain Names and HTTPS](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-alternate-domain-names.html) in the *Amazon CloudFront Developer Guide*.", - "properties": { - "AcmCertificateArn": { - "description": "In CloudFormation, this field name is ``AcmCertificateArn``. Note the different capitalization.\n If the distribution uses ``Aliases`` (alternate domain names or CNAMEs) and the SSL/TLS certificate is stored in [(ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html), provide the Amazon Resource Name (ARN) of the ACM certificate. CloudFront only supports ACM certificates in the US East (N. Virginia) Region (``us-east-1``).\n If you specify an ACM certificate ARN, you must also specify values for ``MinimumProtocolVersion`` and ``SSLSupportMethod``. (In CloudFormation, the field name is ``SslSupportMethod``. Note the different capitalization.)", - "type": "string" - }, - "CloudFrontDefaultCertificate": { - "description": "If the distribution uses the CloudFront domain name such as ``d111111abcdef8.cloudfront.net``, set this field to ``true``.\n If the distribution uses ``Aliases`` (alternate domain names or CNAMEs), omit this field and specify values for the following fields:\n + ``AcmCertificateArn`` or ``IamCertificateId`` (specify a value for one, not both) \n + ``MinimumProtocolVersion`` \n + ``SslSupportMethod``", - "type": "boolean" - }, - "IamCertificateId": { - "description": "In CloudFormation, this field name is ``IamCertificateId``. Note the different capitalization.\n If the distribution uses ``Aliases`` (alternate domain names or CNAMEs) and the SSL/TLS certificate is stored in [(IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html), provide the ID of the IAM certificate.\n If you specify an IAM certificate ID, you must also specify values for ``MinimumProtocolVersion`` and ``SSLSupportMethod``. (In CloudFormation, the field name is ``SslSupportMethod``. Note the different capitalization.)", - "type": "string" - }, - "MinimumProtocolVersion": { - "description": "If the distribution uses ``Aliases`` (alternate domain names or CNAMEs), specify the security policy that you want CloudFront to use for HTTPS connections with viewers. The security policy determines two settings:\n + The minimum SSL/TLS protocol that CloudFront can use to communicate with viewers.\n + The ciphers that CloudFront can use to encrypt the content that it returns to viewers.\n \n For more information, see [Security Policy](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValues-security-policy) and [Supported Protocols and Ciphers Between Viewers and CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/secure-connections-supported-viewer-protocols-ciphers.html#secure-connections-supported-ciphers) in the *Amazon CloudFront Developer Guide*.\n On the CloudFront console, this setting is called *Security Policy*.\n When you're using SNI only (you set ``SSLSupportMethod`` to ``sni-only``), you must specify ``TLSv1`` or higher. (In CloudFormation, the field name is ``SslSupportMethod``. Note the different capitalization.)\n If the distribution uses the CloudFront domain name such as ``d111111abcdef8.cloudfront.net`` (you set ``CloudFrontDefaultCertificate`` to ``true``), CloudFront automatically sets the security policy to ``TLSv1`` regardless of the value that you set here.", - "type": "string" - }, - "SslSupportMethod": { - "description": "In CloudFormation, this field name is ``SslSupportMethod``. Note the different capitalization.\n If the distribution uses ``Aliases`` (alternate domain names or CNAMEs), specify which viewers the distribution accepts HTTPS connections from.\n + ``sni-only`` \u2013 The distribution accepts HTTPS connections from only viewers that support [server name indication (SNI)](https://docs.aws.amazon.com/https://en.wikipedia.org/wiki/Server_Name_Indication). This is recommended. Most browsers and clients support SNI.\n + ``vip`` \u2013 The distribution accepts HTTPS connections from all viewers including those that don't support SNI. This is not recommended, and results in additional monthly charges from CloudFront.\n + ``static-ip`` - Do not specify this value unless your distribution has been enabled for this feature by the CloudFront team. If you have a use case that requires static IP addresses for a distribution, contact CloudFront through the [Center](https://docs.aws.amazon.com/support/home).\n \n If the distribution uses the CloudFront domain name such as ``d111111abcdef8.cloudfront.net``, don't set a value for this field.", - "type": "string" - } - }, - "type": "object" - } - }, - "deprecatedProperties": [ - "/properties/DistributionConfig/properties/CustomOrigin", - "/properties/DistributionConfig/properties/S3Origin" - ], - "description": "A distribution tells CloudFront where you want content to be delivered from, and the details about how to track and manage content delivery.", - "handlers": { - "create": { - "permissions": [ - "cloudfront:CreateDistribution", - "cloudfront:CreateDistributionWithTags", - "cloudfront:GetDistribution", - "cloudfront:GetDistributionConfig", - "cloudfront:TagResource" - ] - }, - "delete": { - "permissions": [ - "cloudfront:DeleteDistribution", - "cloudfront:GetDistribution", - "cloudfront:GetDistributionConfig" - ] - }, - "list": { - "permissions": [ - "cloudfront:ListDistributions" - ] - }, - "read": { - "permissions": [ - "cloudfront:GetDistribution", - "cloudfront:GetDistributionConfig" - ] - }, - "update": { - "permissions": [ - "cloudfront:GetDistribution", - "cloudfront:GetDistributionConfig", - "cloudfront:UpdateDistribution", - "cloudfront:UpdateDistributionWithStagingConfig", - "cloudfront:ListTagsForResource", - "cloudfront:TagResource", - "cloudfront:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DistributionConfig": { - "$ref": "#/definitions/DistributionConfig", - "description": "The distribution's configuration." - }, - "DomainName": { - "description": "", - "type": "string" - }, - "Id": { - "description": "", - "type": "string" - }, - "Tags": { - "description": "A complex type that contains zero or more ``Tag`` elements.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/DomainName" - ], - "required": [ - "DistributionConfig" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CloudFront::Distribution" -} +{ + "additionalProperties": false, + "definitions": { + "CacheBehavior": { + "additionalProperties": false, + "description": "A complex type that describes how CloudFront processes requests.\n You must create at least as many cache behaviors (including the default cache behavior) as you have origins if you want CloudFront to serve objects from all of the origins. Each cache behavior specifies the one origin from which you want CloudFront to get objects. If you have two origins and only the default cache behavior, the default cache behavior will cause CloudFront to get objects from one of the origins, but the other origin is never used.\n For the current quota (formerly known as limit) on the number of cache behaviors that you can add to a distribution, see [Quotas](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html) in the *Amazon CloudFront Developer Guide*.\n If you don't want to specify any cache behaviors, include only an empty ``CacheBehaviors`` element. Don't specify an empty individual ``CacheBehavior`` element, because this is invalid. For more information, see [CacheBehaviors](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CacheBehaviors.html). \n To delete all cache behaviors in an existing distribution, update the distribution configuration and include only an empty ``CacheBehaviors`` element.\n To add, change, or remove one or more cache behaviors, update the distribution configuration and specify all of the cache behaviors that you want to include in the updated distribution.\n For more information about cache behaviors, see [Cache Behavior Settings](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesCacheBehavior) in the *Amazon CloudFront Developer Guide*.", + "properties": { + "AllowedMethods": { + "default": [ + "GET", + "HEAD" + ], + "description": "A complex type that controls which HTTP methods CloudFront processes and forwards to your Amazon S3 bucket or your custom origin. There are three choices:\n + CloudFront forwards only ``GET`` and ``HEAD`` requests.\n + CloudFront forwards only ``GET``, ``HEAD``, and ``OPTIONS`` requests.\n + CloudFront forwards ``GET, HEAD, OPTIONS, PUT, PATCH, POST``, and ``DELETE`` requests.\n \n If you pick the third choice, you may need to restrict access to your Amazon S3 bucket or to your custom origin so users can't perform operations that you don't want them to. For example, you might not want users to have permissions to delete objects from your origin.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "CachePolicyId": { + "description": "The unique identifier of the cache policy that is attached to this cache behavior. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n A ``CacheBehavior`` must include either a ``CachePolicyId`` or ``ForwardedValues``. We recommend that you use a ``CachePolicyId``.", + "type": "string" + }, + "CachedMethods": { + "default": [ + "GET", + "HEAD" + ], + "description": "A complex type that controls whether CloudFront caches the response to requests using the specified HTTP methods. There are two choices:\n + CloudFront caches responses to ``GET`` and ``HEAD`` requests.\n + CloudFront caches responses to ``GET``, ``HEAD``, and ``OPTIONS`` requests.\n \n If you pick the second choice for your Amazon S3 Origin, you may need to forward Access-Control-Request-Method, Access-Control-Request-Headers, and Origin headers for the responses to be cached correctly.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Compress": { + "default": false, + "description": "Whether you want CloudFront to automatically compress certain files for this cache behavior. If so, specify true; if not, specify false. For more information, see [Serving Compressed Files](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html) in the *Amazon CloudFront Developer Guide*.", + "type": "boolean" + }, + "DefaultTTL": { + "default": 86400, + "description": "This field is deprecated. We recommend that you use the ``DefaultTTL`` field in a cache policy instead of this field. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n The default amount of time that you want objects to stay in CloudFront caches before CloudFront forwards another request to your origin to determine whether the object has been updated. The value that you specify applies only when your origin does not add HTTP headers such as ``Cache-Control max-age``, ``Cache-Control s-maxage``, and ``Expires`` to objects. For more information, see [Managing How Long Content Stays in an Edge Cache (Expiration)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.", + "type": "number" + }, + "FieldLevelEncryptionId": { + "default": "", + "description": "The value of ``ID`` for the field-level encryption configuration that you want CloudFront to use for encrypting specific fields of data for this cache behavior.", + "type": "string" + }, + "ForwardedValues": { + "$ref": "#/definitions/ForwardedValues", + "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field. For more information, see [Working with policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/working-with-policies.html) in the *Amazon CloudFront Developer Guide*.\n If you want to include values in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n If you want to send values to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) or [Using the managed origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-origin-request-policies.html) in the *Amazon CloudFront Developer Guide*.\n A ``CacheBehavior`` must include either a ``CachePolicyId`` or ``ForwardedValues``. We recommend that you use a ``CachePolicyId``.\n A complex type that specifies how CloudFront handles query strings, cookies, and HTTP headers." + }, + "FunctionAssociations": { + "description": "A list of CloudFront functions that are associated with this cache behavior. CloudFront functions must be published to the ``LIVE`` stage to associate them with a cache behavior.", + "items": { + "$ref": "#/definitions/FunctionAssociation" + }, + "type": "array", + "uniqueItems": false + }, + "GrpcConfig": { + "$ref": "#/definitions/GrpcConfig", + "description": "The gRPC configuration for your cache behavior." + }, + "LambdaFunctionAssociations": { + "description": "A complex type that contains zero or more Lambda@Edge function associations for a cache behavior.", + "items": { + "$ref": "#/definitions/LambdaFunctionAssociation" + }, + "type": "array", + "uniqueItems": false + }, + "MaxTTL": { + "default": 31536000, + "description": "This field is deprecated. We recommend that you use the ``MaxTTL`` field in a cache policy instead of this field. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n The maximum amount of time that you want objects to stay in CloudFront caches before CloudFront forwards another request to your origin to determine whether the object has been updated. The value that you specify applies only when your origin adds HTTP headers such as ``Cache-Control max-age``, ``Cache-Control s-maxage``, and ``Expires`` to objects. For more information, see [Managing How Long Content Stays in an Edge Cache (Expiration)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.", + "type": "number" + }, + "MinTTL": { + "default": 0, + "description": "This field is deprecated. We recommend that you use the ``MinTTL`` field in a cache policy instead of this field. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n The minimum amount of time that you want objects to stay in CloudFront caches before CloudFront forwards another request to your origin to determine whether the object has been updated. For more information, see [Managing How Long Content Stays in an Edge Cache (Expiration)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.\n You must specify ``0`` for ``MinTTL`` if you configure CloudFront to forward all headers to your origin (under ``Headers``, if you specify ``1`` for ``Quantity`` and ``*`` for ``Name``).", + "type": "number" + }, + "OriginRequestPolicyId": { + "description": "The unique identifier of the origin request policy that is attached to this cache behavior. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) or [Using the managed origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-origin-request-policies.html) in the *Amazon CloudFront Developer Guide*.", + "type": "string" + }, + "PathPattern": { + "description": "The pattern (for example, ``images/*.jpg``) that specifies which requests to apply the behavior to. When CloudFront receives a viewer request, the requested path is compared with path patterns in the order in which cache behaviors are listed in the distribution.\n You can optionally include a slash (``/``) at the beginning of the path pattern. For example, ``/images/*.jpg``. CloudFront behavior is the same with or without the leading ``/``.\n The path pattern for the default cache behavior is ``*`` and cannot be changed. If the request for an object does not match the path pattern for any cache behaviors, CloudFront applies the behavior in the default cache behavior.\n For more information, see [Path Pattern](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesPathPattern) in the *Amazon CloudFront Developer Guide*.", + "type": "string" + }, + "RealtimeLogConfigArn": { + "description": "The Amazon Resource Name (ARN) of the real-time log configuration that is attached to this cache behavior. For more information, see [Real-time logs](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/real-time-logs.html) in the *Amazon CloudFront Developer Guide*.", + "type": "string" + }, + "ResponseHeadersPolicyId": { + "description": "The identifier for a response headers policy.", + "type": "string" + }, + "SmoothStreaming": { + "default": false, + "description": "Indicates whether you want to distribute media files in the Microsoft Smooth Streaming format using the origin that is associated with this cache behavior. If so, specify ``true``; if not, specify ``false``. If you specify ``true`` for ``SmoothStreaming``, you can still distribute other content using this cache behavior if the content matches the value of ``PathPattern``.", + "type": "boolean" + }, + "TargetOriginId": { + "description": "The value of ``ID`` for the origin that you want CloudFront to route requests to when they match this cache behavior.", + "type": "string" + }, + "TrustedKeyGroups": { + "description": "A list of key groups that CloudFront can use to validate signed URLs or signed cookies.\n When a cache behavior contains trusted key groups, CloudFront requires signed URLs or signed cookies for all requests that match the cache behavior. The URLs or cookies must be signed with a private key whose corresponding public key is in the key group. The signed URL or cookie contains information about which public key CloudFront should use to verify the signature. For more information, see [Serving private content](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html) in the *Amazon CloudFront Developer Guide*.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "TrustedSigners": { + "description": "We recommend using ``TrustedKeyGroups`` instead of ``TrustedSigners``.\n A list of AWS-account IDs whose public keys CloudFront can use to validate signed URLs or signed cookies.\n When a cache behavior contains trusted signers, CloudFront requires signed URLs or signed cookies for all requests that match the cache behavior. The URLs or cookies must be signed with the private key of a CloudFront key pair in the trusted signer's AWS-account. The signed URL or cookie contains information about which public key CloudFront should use to verify the signature. For more information, see [Serving private content](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html) in the *Amazon CloudFront Developer Guide*.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ViewerProtocolPolicy": { + "description": "The protocol that viewers can use to access the files in the origin specified by ``TargetOriginId`` when a request matches the path pattern in ``PathPattern``. You can specify the following options:\n + ``allow-all``: Viewers can use HTTP or HTTPS.\n + ``redirect-to-https``: If a viewer submits an HTTP request, CloudFront returns an HTTP status code of 301 (Moved Permanently) to the viewer along with the HTTPS URL. The viewer then resubmits the request using the new URL.\n + ``https-only``: If a viewer sends an HTTP request, CloudFront returns an HTTP status code of 403 (Forbidden).\n \n For more information about requiring the HTTPS protocol, see [Requiring HTTPS Between Viewers and CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-viewers-to-cloudfront.html) in the *Amazon CloudFront Developer Guide*.\n The only way to guarantee that viewers retrieve an object that was fetched from the origin using HTTPS is never to use any other protocol to fetch the object. If you have recently changed from HTTP to HTTPS, we recommend that you clear your objects' cache because cached objects are protocol agnostic. That means that an edge location will return an object from the cache regardless of whether the current request protocol matches the protocol used previously. For more information, see [Managing Cache Expiration](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.", + "type": "string" + } + }, + "required": [ + "PathPattern", + "TargetOriginId", + "ViewerProtocolPolicy" + ], + "type": "object" + }, + "ConnectionMode": { + "enum": [ + "direct", + "tenant-only" + ], + "type": "string" + }, + "Cookies": { + "additionalProperties": false, + "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field.\n If you want to include cookies in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) in the *Amazon CloudFront Developer Guide*.\n If you want to send cookies to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) in the *Amazon CloudFront Developer Guide*.\n A complex type that specifies whether you want CloudFront to forward cookies to the origin and, if so, which ones. For more information about forwarding cookies to the origin, see [How CloudFront Forwards, Caches, and Logs Cookies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Cookies.html) in the *Amazon CloudFront Developer Guide*.", + "properties": { + "Forward": { + "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field.\n If you want to include cookies in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) in the *Amazon CloudFront Developer Guide*.\n If you want to send cookies to the origin but not include them in the cache key, use origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) in the *Amazon CloudFront Developer Guide*.\n Specifies which cookies to forward to the origin for this cache behavior: all, none, or the list of cookies specified in the ``WhitelistedNames`` complex type.\n Amazon S3 doesn't process cookies. When the cache behavior is forwarding requests to an Amazon S3 origin, specify none for the ``Forward`` element.", + "type": "string" + }, + "WhitelistedNames": { + "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field.\n If you want to include cookies in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) in the *Amazon CloudFront Developer Guide*.\n If you want to send cookies to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) in the *Amazon CloudFront Developer Guide*.\n Required if you specify ``whitelist`` for the value of ``Forward``. A complex type that specifies how many different cookies you want CloudFront to forward to the origin for this cache behavior and, if you want to forward selected cookies, the names of those cookies.\n If you specify ``all`` or ``none`` for the value of ``Forward``, omit ``WhitelistedNames``. If you change the value of ``Forward`` from ``whitelist`` to ``all`` or ``none`` and you don't delete the ``WhitelistedNames`` element and its child elements, CloudFront deletes them automatically.\n For the current limit on the number of cookie names that you can whitelist for each cache behavior, see [CloudFront Limits](https://docs.aws.amazon.com/general/latest/gr/xrefaws_service_limits.html#limits_cloudfront) in the *General Reference*.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Forward" + ], + "type": "object" + }, + "CustomErrorResponse": { + "additionalProperties": false, + "description": "A complex type that controls:\n + Whether CloudFront replaces HTTP status codes in the 4xx and 5xx range with custom error messages before returning the response to the viewer.\n + How long CloudFront caches HTTP status codes in the 4xx and 5xx range.\n \n For more information about custom error pages, see [Customizing Error Responses](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html) in the *Amazon CloudFront Developer Guide*.", + "properties": { + "ErrorCachingMinTTL": { + "default": 300, + "description": "The minimum amount of time, in seconds, that you want CloudFront to cache the HTTP status code specified in ``ErrorCode``. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.\n For more information, see [Customizing Error Responses](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html) in the *Amazon CloudFront Developer Guide*.", + "type": "number" + }, + "ErrorCode": { + "description": "The HTTP status code for which you want to specify a custom error page and/or a caching duration.", + "type": "integer" + }, + "ResponseCode": { + "description": "The HTTP status code that you want CloudFront to return to the viewer along with the custom error page. There are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n + Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer. If you substitute ``200``, the response typically won't be intercepted.\n + If you don't care about distinguishing among different client errors or server errors, you can specify ``400`` or ``500`` as the ``ResponseCode`` for all 4xx or 5xx errors.\n + You might want to return a ``200`` status code (OK) and static website so your customers don't know that your website is down.\n \n If you specify a value for ``ResponseCode``, you must also specify a value for ``ResponsePagePath``.", + "type": "integer" + }, + "ResponsePagePath": { + "description": "The path to the custom error page that you want CloudFront to return to a viewer when your origin returns the HTTP status code specified by ``ErrorCode``, for example, ``/4xx-errors/403-forbidden.html``. If you want to store your objects and your custom error pages in different locations, your distribution must include a cache behavior for which the following is true:\n + The value of ``PathPattern`` matches the path to your custom error messages. For example, suppose you saved custom error pages for 4xx errors in an Amazon S3 bucket in a directory named ``/4xx-errors``. Your distribution must include a cache behavior for which the path pattern routes requests for your custom error pages to that location, for example, ``/4xx-errors/*``.\n + The value of ``TargetOriginId`` specifies the value of the ``ID`` element for the origin that contains your custom error pages.\n \n If you specify a value for ``ResponsePagePath``, you must also specify a value for ``ResponseCode``.\n We recommend that you store custom error pages in an Amazon S3 bucket. If you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.", + "type": "string" + } + }, + "required": [ + "ErrorCode" + ], + "type": "object" + }, + "CustomOriginConfig": { + "additionalProperties": false, + "description": "A custom origin. A custom origin is any origin that is *not* an Amazon S3 bucket, with one exception. An Amazon S3 bucket that is [configured with static website hosting](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html) *is* a custom origin.", + "properties": { + "HTTPPort": { + "default": 80, + "description": "The HTTP port that CloudFront uses to connect to the origin. Specify the HTTP port that the origin listens on.", + "type": "integer" + }, + "HTTPSPort": { + "default": 443, + "description": "The HTTPS port that CloudFront uses to connect to the origin. Specify the HTTPS port that the origin listens on.", + "type": "integer" + }, + "OriginKeepaliveTimeout": { + "default": 5, + "description": "Specifies how long, in seconds, CloudFront persists its connection to the origin. The minimum timeout is 1 second, the maximum is 60 seconds, and the default (if you don't specify otherwise) is 5 seconds.\n For more information, see [Keep-alive timeout (custom origins only)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginKeepaliveTimeout) in the *Amazon CloudFront Developer Guide*.", + "type": "integer" + }, + "OriginProtocolPolicy": { + "description": "Specifies the protocol (HTTP or HTTPS) that CloudFront uses to connect to the origin. Valid values are:\n + ``http-only`` \u2013 CloudFront always uses HTTP to connect to the origin.\n + ``match-viewer`` \u2013 CloudFront connects to the origin using the same protocol that the viewer used to connect to CloudFront.\n + ``https-only`` \u2013 CloudFront always uses HTTPS to connect to the origin.", + "type": "string" + }, + "OriginReadTimeout": { + "default": 30, + "description": "Specifies how long, in seconds, CloudFront waits for a response from the origin. This is also known as the *origin response timeout*. The minimum timeout is 1 second, the maximum is 60 seconds, and the default (if you don't specify otherwise) is 30 seconds.\n For more information, see [Response timeout (custom origins only)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginResponseTimeout) in the *Amazon CloudFront Developer Guide*.", + "type": "integer" + }, + "OriginSSLProtocols": { + "default": [ + "TLSv1", + "SSLv3" + ], + "description": "Specifies the minimum SSL/TLS protocol that CloudFront uses when connecting to your origin over HTTPS. Valid values include ``SSLv3``, ``TLSv1``, ``TLSv1.1``, and ``TLSv1.2``.\n For more information, see [Minimum Origin SSL Protocol](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginSSLProtocols) in the *Amazon CloudFront Developer Guide*.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "OriginProtocolPolicy" + ], + "type": "object" + }, + "DefaultCacheBehavior": { + "additionalProperties": false, + "description": "A complex type that describes the default cache behavior if you don't specify a ``CacheBehavior`` element or if request URLs don't match any of the values of ``PathPattern`` in ``CacheBehavior`` elements. You must create exactly one default cache behavior.", + "properties": { + "AllowedMethods": { + "default": [ + "GET", + "HEAD" + ], + "description": "A complex type that controls which HTTP methods CloudFront processes and forwards to your Amazon S3 bucket or your custom origin. There are three choices:\n + CloudFront forwards only ``GET`` and ``HEAD`` requests.\n + CloudFront forwards only ``GET``, ``HEAD``, and ``OPTIONS`` requests.\n + CloudFront forwards ``GET, HEAD, OPTIONS, PUT, PATCH, POST``, and ``DELETE`` requests.\n \n If you pick the third choice, you may need to restrict access to your Amazon S3 bucket or to your custom origin so users can't perform operations that you don't want them to. For example, you might not want users to have permissions to delete objects from your origin.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "CachePolicyId": { + "default": "", + "description": "The unique identifier of the cache policy that is attached to the default cache behavior. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n A ``DefaultCacheBehavior`` must include either a ``CachePolicyId`` or ``ForwardedValues``. We recommend that you use a ``CachePolicyId``.", + "type": "string" + }, + "CachedMethods": { + "default": [ + "GET", + "HEAD" + ], + "description": "A complex type that controls whether CloudFront caches the response to requests using the specified HTTP methods. There are two choices:\n + CloudFront caches responses to ``GET`` and ``HEAD`` requests.\n + CloudFront caches responses to ``GET``, ``HEAD``, and ``OPTIONS`` requests.\n \n If you pick the second choice for your Amazon S3 Origin, you may need to forward Access-Control-Request-Method, Access-Control-Request-Headers, and Origin headers for the responses to be cached correctly.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Compress": { + "default": false, + "description": "Whether you want CloudFront to automatically compress certain files for this cache behavior. If so, specify ``true``; if not, specify ``false``. For more information, see [Serving Compressed Files](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html) in the *Amazon CloudFront Developer Guide*.", + "type": "boolean" + }, + "DefaultTTL": { + "default": 86400, + "description": "This field is deprecated. We recommend that you use the ``DefaultTTL`` field in a cache policy instead of this field. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n The default amount of time that you want objects to stay in CloudFront caches before CloudFront forwards another request to your origin to determine whether the object has been updated. The value that you specify applies only when your origin does not add HTTP headers such as ``Cache-Control max-age``, ``Cache-Control s-maxage``, and ``Expires`` to objects. For more information, see [Managing How Long Content Stays in an Edge Cache (Expiration)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.", + "type": "number" + }, + "FieldLevelEncryptionId": { + "default": "", + "description": "The value of ``ID`` for the field-level encryption configuration that you want CloudFront to use for encrypting specific fields of data for the default cache behavior.", + "type": "string" + }, + "ForwardedValues": { + "$ref": "#/definitions/ForwardedValues", + "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field. For more information, see [Working with policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/working-with-policies.html) in the *Amazon CloudFront Developer Guide*.\n If you want to include values in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n If you want to send values to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) or [Using the managed origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-origin-request-policies.html) in the *Amazon CloudFront Developer Guide*.\n A ``DefaultCacheBehavior`` must include either a ``CachePolicyId`` or ``ForwardedValues``. We recommend that you use a ``CachePolicyId``.\n A complex type that specifies how CloudFront handles query strings, cookies, and HTTP headers." + }, + "FunctionAssociations": { + "description": "A list of CloudFront functions that are associated with this cache behavior. Your functions must be published to the ``LIVE`` stage to associate them with a cache behavior.", + "items": { + "$ref": "#/definitions/FunctionAssociation" + }, + "type": "array", + "uniqueItems": false + }, + "GrpcConfig": { + "$ref": "#/definitions/GrpcConfig", + "description": "The gRPC configuration for your cache behavior." + }, + "LambdaFunctionAssociations": { + "description": "A complex type that contains zero or more Lambda@Edge function associations for a cache behavior.", + "items": { + "$ref": "#/definitions/LambdaFunctionAssociation" + }, + "type": "array", + "uniqueItems": false + }, + "MaxTTL": { + "default": 31536000, + "description": "This field is deprecated. We recommend that you use the ``MaxTTL`` field in a cache policy instead of this field. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n The maximum amount of time that you want objects to stay in CloudFront caches before CloudFront forwards another request to your origin to determine whether the object has been updated. The value that you specify applies only when your origin adds HTTP headers such as ``Cache-Control max-age``, ``Cache-Control s-maxage``, and ``Expires`` to objects. For more information, see [Managing How Long Content Stays in an Edge Cache (Expiration)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.", + "type": "number" + }, + "MinTTL": { + "default": 0, + "description": "This field is deprecated. We recommend that you use the ``MinTTL`` field in a cache policy instead of this field. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) or [Using the managed cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html) in the *Amazon CloudFront Developer Guide*.\n The minimum amount of time that you want objects to stay in CloudFront caches before CloudFront forwards another request to your origin to determine whether the object has been updated. For more information, see [Managing How Long Content Stays in an Edge Cache (Expiration)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.\n You must specify ``0`` for ``MinTTL`` if you configure CloudFront to forward all headers to your origin (under ``Headers``, if you specify ``1`` for ``Quantity`` and ``*`` for ``Name``).", + "type": "number" + }, + "OriginRequestPolicyId": { + "default": "", + "description": "The unique identifier of the origin request policy that is attached to the default cache behavior. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) or [Using the managed origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-origin-request-policies.html) in the *Amazon CloudFront Developer Guide*.", + "type": "string" + }, + "RealtimeLogConfigArn": { + "default": "", + "description": "The Amazon Resource Name (ARN) of the real-time log configuration that is attached to this cache behavior. For more information, see [Real-time logs](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/real-time-logs.html) in the *Amazon CloudFront Developer Guide*.", + "type": "string" + }, + "ResponseHeadersPolicyId": { + "default": "", + "description": "The identifier for a response headers policy.", + "type": "string" + }, + "SmoothStreaming": { + "default": false, + "description": "Indicates whether you want to distribute media files in the Microsoft Smooth Streaming format using the origin that is associated with this cache behavior. If so, specify ``true``; if not, specify ``false``. If you specify ``true`` for ``SmoothStreaming``, you can still distribute other content using this cache behavior if the content matches the value of ``PathPattern``.", + "type": "boolean" + }, + "TargetOriginId": { + "description": "The value of ``ID`` for the origin that you want CloudFront to route requests to when they use the default cache behavior.", + "type": "string" + }, + "TrustedKeyGroups": { + "description": "A list of key groups that CloudFront can use to validate signed URLs or signed cookies.\n When a cache behavior contains trusted key groups, CloudFront requires signed URLs or signed cookies for all requests that match the cache behavior. The URLs or cookies must be signed with a private key whose corresponding public key is in the key group. The signed URL or cookie contains information about which public key CloudFront should use to verify the signature. For more information, see [Serving private content](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html) in the *Amazon CloudFront Developer Guide*.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "TrustedSigners": { + "description": "We recommend using ``TrustedKeyGroups`` instead of ``TrustedSigners``.\n A list of AWS-account IDs whose public keys CloudFront can use to validate signed URLs or signed cookies.\n When a cache behavior contains trusted signers, CloudFront requires signed URLs or signed cookies for all requests that match the cache behavior. The URLs or cookies must be signed with the private key of a CloudFront key pair in a trusted signer's AWS-account. The signed URL or cookie contains information about which public key CloudFront should use to verify the signature. For more information, see [Serving private content](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html) in the *Amazon CloudFront Developer Guide*.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ViewerProtocolPolicy": { + "description": "The protocol that viewers can use to access the files in the origin specified by ``TargetOriginId`` when a request matches the path pattern in ``PathPattern``. You can specify the following options:\n + ``allow-all``: Viewers can use HTTP or HTTPS.\n + ``redirect-to-https``: If a viewer submits an HTTP request, CloudFront returns an HTTP status code of 301 (Moved Permanently) to the viewer along with the HTTPS URL. The viewer then resubmits the request using the new URL.\n + ``https-only``: If a viewer sends an HTTP request, CloudFront returns an HTTP status code of 403 (Forbidden).\n \n For more information about requiring the HTTPS protocol, see [Requiring HTTPS Between Viewers and CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-viewers-to-cloudfront.html) in the *Amazon CloudFront Developer Guide*.\n The only way to guarantee that viewers retrieve an object that was fetched from the origin using HTTPS is never to use any other protocol to fetch the object. If you have recently changed from HTTP to HTTPS, we recommend that you clear your objects' cache because cached objects are protocol agnostic. That means that an edge location will return an object from the cache regardless of whether the current request protocol matches the protocol used previously. For more information, see [Managing Cache Expiration](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html) in the *Amazon CloudFront Developer Guide*.", + "type": "string" + } + }, + "required": [ + "TargetOriginId", + "ViewerProtocolPolicy" + ], + "type": "object" + }, + "DistributionConfig": { + "additionalProperties": false, + "description": "A distribution configuration.", + "properties": { + "Aliases": { + "description": "A complex type that contains information about CNAMEs (alternate domain names), if any, for this distribution.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AnycastIpListId": { + "description": "ID of the Anycast static IP list that is associated with the distribution.", + "type": "string" + }, + "CNAMEs": { + "description": "An alias for the CF distribution's domain name.\n This property is legacy. We recommend that you use [Aliases](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-aliases) instead.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "CacheBehaviors": { + "description": "A complex type that contains zero or more ``CacheBehavior`` elements.", + "items": { + "$ref": "#/definitions/CacheBehavior" + }, + "type": "array", + "uniqueItems": false + }, + "Comment": { + "default": "", + "description": "A comment to describe the distribution. The comment cannot be longer than 128 characters.", + "type": "string" + }, + "ConnectionMode": { + "$ref": "#/definitions/ConnectionMode", + "description": "" + }, + "ContinuousDeploymentPolicyId": { + "description": "The identifier of a continuous deployment policy. For more information, see ``CreateContinuousDeploymentPolicy``.", + "type": "string" + }, + "CustomErrorResponses": { + "description": "A complex type that controls the following:\n + Whether CloudFront replaces HTTP status codes in the 4xx and 5xx range with custom error messages before returning the response to the viewer.\n + How long CloudFront caches HTTP status codes in the 4xx and 5xx range.\n \n For more information about custom error pages, see [Customizing Error Responses](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html) in the *Amazon CloudFront Developer Guide*.", + "items": { + "$ref": "#/definitions/CustomErrorResponse" + }, + "type": "array", + "uniqueItems": false + }, + "CustomOrigin": { + "$ref": "#/definitions/LegacyCustomOrigin", + "description": "The user-defined HTTP server that serves as the origin for content that CF distributes.\n This property is legacy. We recommend that you use [Origin](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origin.html) instead." + }, + "DefaultCacheBehavior": { + "$ref": "#/definitions/DefaultCacheBehavior", + "description": "A complex type that describes the default cache behavior if you don't specify a ``CacheBehavior`` element or if files don't match any of the values of ``PathPattern`` in ``CacheBehavior`` elements. You must create exactly one default cache behavior." + }, + "DefaultRootObject": { + "default": "", + "description": "When a viewer requests the root URL for your distribution, the default root object is the object that you want CloudFront to request from your origin. For example, if your root URL is ``https://www.example.com``, you can specify CloudFront to return the ``index.html`` file as the default root object. You can specify a default root object so that viewers see a specific file or object, instead of another object in your distribution (for example, ``https://www.example.com/product-description.html``). A default root object avoids exposing the contents of your distribution.\n You can specify the object name or a path to the object name (for example, ``index.html`` or ``exampleFolderName/index.html``). Your string can't begin with a forward slash (``/``). Only specify the object name or the path to the object.\n If you don't want to specify a default root object when you create a distribution, include an empty ``DefaultRootObject`` element.\n To delete the default root object from an existing distribution, update the distribution configuration and include an empty ``DefaultRootObject`` element.\n To replace the default root object, update the distribution configuration and specify the new object.\n For more information about the default root object, see [Specify a default root object](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DefaultRootObject.html) in the *Amazon CloudFront Developer Guide*.", + "type": "string" + }, + "Enabled": { + "description": "From this field, you can enable or disable the selected distribution.", + "type": "boolean" + }, + "HttpVersion": { + "default": "http1.1", + "description": "(Optional) Specify the HTTP version(s) that you want viewers to use to communicate with CF. The default value for new distributions is ``http1.1``.\n For viewers and CF to use HTTP/2, viewers must support TLSv1.2 or later, and must support Server Name Indication (SNI).\n For viewers and CF to use HTTP/3, viewers must support TLSv1.3 and Server Name Indication (SNI). CF supports HTTP/3 connection migration to allow the viewer to switch networks without losing connection. For more information about connection migration, see [Connection Migration](https://docs.aws.amazon.com/https://www.rfc-editor.org/rfc/rfc9000.html#name-connection-migration) at RFC 9000. For more information about supported TLSv1.3 ciphers, see [Supported protocols and ciphers between viewers and CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/secure-connections-supported-viewer-protocols-ciphers.html).", + "type": "string" + }, + "IPV6Enabled": { + "description": "If you want CloudFront to respond to IPv6 DNS requests with an IPv6 address for your distribution, specify ``true``. If you specify ``false``, CloudFront responds to IPv6 DNS requests with the DNS response code ``NOERROR`` and with no IP addresses. This allows viewers to submit a second request, for an IPv4 address for your distribution.\n In general, you should enable IPv6 if you have users on IPv6 networks who want to access your content. However, if you're using signed URLs or signed cookies to restrict access to your content, and if you're using a custom policy that includes the ``IpAddress`` parameter to restrict the IP addresses that can access your content, don't enable IPv6. If you want to restrict access to some content by IP address and not restrict access to other content (or restrict access but not by IP address), you can create two distributions. For more information, see [Creating a Signed URL Using a Custom Policy](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-creating-signed-url-custom-policy.html) in the *Amazon CloudFront Developer Guide*.\n If you're using an R53AWSIntlong alias resource record set to route traffic to your CloudFront distribution, you need to create a second alias resource record set when both of the following are true:\n + You enable IPv6 for the distribution\n + You're using alternate domain names in the URLs for your objects\n \n For more information, see [Routing Traffic to an Amazon CloudFront Web Distribution by Using Your Domain Name](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-cloudfront-distribution.html) in the *Developer Guide*.\n If you created a CNAME resource record set, either with R53AWSIntlong or with another DNS service, you don't need to make any changes. A CNAME record will route traffic to your distribution regardless of the IP address format of the viewer request.", + "type": "boolean" + }, + "Logging": { + "$ref": "#/definitions/Logging", + "description": "A complex type that controls whether access logs are written for the distribution.\n For more information about logging, see [Access Logs](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html) in the *Amazon CloudFront Developer Guide*." + }, + "OriginGroups": { + "$ref": "#/definitions/OriginGroups", + "description": "A complex type that contains information about origin groups for this distribution.\n Specify a value for either the ``Origins`` or ``OriginGroups`` property." + }, + "Origins": { + "description": "A complex type that contains information about origins for this distribution.\n Specify a value for either the ``Origins`` or ``OriginGroups`` property.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Origin" + }, + "type": "array", + "uniqueItems": false + }, + "PriceClass": { + "default": "PriceClass_All", + "description": "The price class that corresponds with the maximum price that you want to pay for CloudFront service. If you specify ``PriceClass_All``, CloudFront responds to requests for your objects from all CloudFront edge locations.\n If you specify a price class other than ``PriceClass_All``, CloudFront serves your objects from the CloudFront edge location that has the lowest latency among the edge locations in your price class. Viewers who are in or near regions that are excluded from your specified price class may encounter slower performance.\n For more information about price classes, see [Choosing the Price Class for a CloudFront Distribution](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PriceClass.html) in the *Amazon CloudFront Developer Guide*. For information about CloudFront pricing, including how price classes (such as Price Class 100) map to CloudFront regions, see [Amazon CloudFront Pricing](https://docs.aws.amazon.com/cloudfront/pricing/).", + "type": "string" + }, + "Restrictions": { + "$ref": "#/definitions/Restrictions", + "default": { + "GeoRestriction": { + "RestrictionType": "none" + } + }, + "description": "A complex type that identifies ways in which you want to restrict distribution of your content." + }, + "S3Origin": { + "$ref": "#/definitions/LegacyS3Origin", + "description": "The origin as an S3 bucket.\n This property is legacy. We recommend that you use [Origin](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origin.html) instead." + }, + "Staging": { + "description": "A Boolean that indicates whether this is a staging distribution. When this value is ``true``, this is a staging distribution. When this value is ``false``, this is not a staging distribution.", + "type": "boolean" + }, + "TenantConfig": { + "additionalProperties": false, + "description": "", + "properties": { + "ParameterDefinitions": { + "items": { + "$ref": "#/definitions/ParameterDefinition" + }, + "type": "array" + } + }, + "type": "object" + }, + "ViewerCertificate": { + "$ref": "#/definitions/ViewerCertificate", + "default": { + "CloudFrontDefaultCertificate": true + }, + "description": "A complex type that determines the distribution's SSL/TLS configuration for communicating with viewers." + }, + "WebACLId": { + "default": "", + "description": "A unique identifier that specifies the WAF web ACL, if any, to associate with this distribution. To specify a web ACL created using the latest version of WAF, use the ACL ARN, for example ``arn:aws:wafv2:us-east-1:123456789012:global/webacl/ExampleWebACL/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111``. To specify a web ACL created using WAF Classic, use the ACL ID, for example ``a1b2c3d4-5678-90ab-cdef-EXAMPLE11111``.\n WAF is a web application firewall that lets you monitor the HTTP and HTTPS requests that are forwarded to CloudFront, and lets you control access to your content. Based on conditions that you specify, such as the IP addresses that requests originate from or the values of query strings, CloudFront responds to requests either with the requested content or with an HTTP 403 status code (Forbidden). You can also configure CloudFront to return a custom error page when a request is blocked. For more information about WAF, see the [Developer Guide](https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html).", + "type": "string" + } + }, + "required": [ + "Enabled", + "DefaultCacheBehavior" + ], + "type": "object" + }, + "ForwardedValues": { + "additionalProperties": false, + "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field.\n If you want to include values in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) in the *Amazon CloudFront Developer Guide*.\n If you want to send values to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) in the *Amazon CloudFront Developer Guide*.\n A complex type that specifies how CloudFront handles query strings, cookies, and HTTP headers.", + "properties": { + "Cookies": { + "$ref": "#/definitions/Cookies", + "default": { + "Forward": "none" + }, + "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field.\n If you want to include cookies in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) in the *Amazon CloudFront Developer Guide*.\n If you want to send cookies to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) in the *Amazon CloudFront Developer Guide*.\n A complex type that specifies whether you want CloudFront to forward cookies to the origin and, if so, which ones. For more information about forwarding cookies to the origin, see [How CloudFront Forwards, Caches, and Logs Cookies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Cookies.html) in the *Amazon CloudFront Developer Guide*." + }, + "Headers": { + "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field.\n If you want to include headers in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) in the *Amazon CloudFront Developer Guide*.\n If you want to send headers to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) in the *Amazon CloudFront Developer Guide*.\n A complex type that specifies the ``Headers``, if any, that you want CloudFront to forward to the origin for this cache behavior (whitelisted headers). For the headers that you specify, CloudFront also caches separate versions of a specified object that is based on the header values in viewer requests.\n For more information, see [Caching Content Based on Request Headers](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html) in the *Amazon CloudFront Developer Guide*.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "QueryString": { + "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field.\n If you want to include query strings in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) in the *Amazon CloudFront Developer Guide*.\n If you want to send query strings to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) in the *Amazon CloudFront Developer Guide*.\n Indicates whether you want CloudFront to forward query strings to the origin that is associated with this cache behavior and cache based on the query string parameters. CloudFront behavior depends on the value of ``QueryString`` and on the values that you specify for ``QueryStringCacheKeys``, if any:\n If you specify true for ``QueryString`` and you don't specify any values for ``QueryStringCacheKeys``, CloudFront forwards all query string parameters to the origin and caches based on all query string parameters. Depending on how many query string parameters and values you have, this can adversely affect performance because CloudFront must forward more requests to the origin.\n If you specify true for ``QueryString`` and you specify one or more values for ``QueryStringCacheKeys``, CloudFront forwards all query string parameters to the origin, but it only caches based on the query string parameters that you specify.\n If you specify false for ``QueryString``, CloudFront doesn't forward any query string parameters to the origin, and doesn't cache based on query string parameters.\n For more information, see [Configuring CloudFront to Cache Based on Query String Parameters](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/QueryStringParameters.html) in the *Amazon CloudFront Developer Guide*.", + "type": "boolean" + }, + "QueryStringCacheKeys": { + "description": "This field is deprecated. We recommend that you use a cache policy or an origin request policy instead of this field.\n If you want to include query strings in the cache key, use a cache policy. For more information, see [Creating cache policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html#cache-key-create-cache-policy) in the *Amazon CloudFront Developer Guide*.\n If you want to send query strings to the origin but not include them in the cache key, use an origin request policy. For more information, see [Creating origin request policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.html#origin-request-create-origin-request-policy) in the *Amazon CloudFront Developer Guide*.\n A complex type that contains information about the query string parameters that you want CloudFront to use for caching for this cache behavior.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "QueryString" + ], + "type": "object" + }, + "FunctionAssociation": { + "additionalProperties": false, + "description": "A CloudFront function that is associated with a cache behavior in a CloudFront distribution.", + "properties": { + "EventType": { + "description": "The event type of the function, either ``viewer-request`` or ``viewer-response``. You cannot use origin-facing event types (``origin-request`` and ``origin-response``) with a CloudFront function.", + "type": "string" + }, + "FunctionARN": { + "description": "The Amazon Resource Name (ARN) of the function.", + "type": "string" + } + }, + "type": "object" + }, + "GeoRestriction": { + "additionalProperties": false, + "description": "A complex type that controls the countries in which your content is distributed. CF determines the location of your users using ``MaxMind`` GeoIP databases. To disable geo restriction, remove the [Restrictions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-restrictions) property from your stack template.", + "properties": { + "Locations": { + "description": "A complex type that contains a ``Location`` element for each country in which you want CloudFront either to distribute your content (``whitelist``) or not distribute your content (``blacklist``).\n The ``Location`` element is a two-letter, uppercase country code for a country that you want to include in your ``blacklist`` or ``whitelist``. Include one ``Location`` element for each country.\n CloudFront and ``MaxMind`` both use ``ISO 3166`` country codes. For the current list of countries and the corresponding codes, see ``ISO 3166-1-alpha-2`` code on the *International Organization for Standardization* website. You can also refer to the country list on the CloudFront console, which includes both country names and codes.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "RestrictionType": { + "description": "The method that you want to use to restrict distribution of your content by country:\n + ``none``: No geo restriction is enabled, meaning access to content is not restricted by client geo location.\n + ``blacklist``: The ``Location`` elements specify the countries in which you don't want CloudFront to distribute your content.\n + ``whitelist``: The ``Location`` elements specify the countries in which you want CloudFront to distribute your content.", + "type": "string" + } + }, + "required": [ + "RestrictionType" + ], + "type": "object" + }, + "GrpcConfig": { + "additionalProperties": false, + "description": "Amazon CloudFront supports gRPC, an open-source remote procedure call (RPC) framework built on HTTP/2. gRPC offers bi-directional streaming and binary protocol that buffers payloads, making it suitable for applications that require low latency communications.\n To enable your distribution to handle gRPC requests, you must include HTTP/2 as one of the supported ``HTTP`` versions and allow ``HTTP`` methods, including ``POST``.\n For more information, see [Using gRPC with CloudFront distributions](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-using-grpc.html) in the *Amazon CloudFront Developer Guide*.", + "properties": { + "Enabled": { + "description": "Enables your CloudFront distribution to receive gRPC requests and to proxy them directly to your origins.", + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "LambdaFunctionAssociation": { + "additionalProperties": false, + "description": "A complex type that contains a Lambda@Edge function association.", + "properties": { + "EventType": { + "description": "Specifies the event type that triggers a Lambda@Edge function invocation. You can specify the following values:\n + ``viewer-request``: The function executes when CloudFront receives a request from a viewer and before it checks to see whether the requested object is in the edge cache.\n + ``origin-request``: The function executes only when CloudFront sends a request to your origin. When the requested object is in the edge cache, the function doesn't execute.\n + ``origin-response``: The function executes after CloudFront receives a response from the origin and before it caches the object in the response. When the requested object is in the edge cache, the function doesn't execute.\n + ``viewer-response``: The function executes before CloudFront returns the requested object to the viewer. The function executes regardless of whether the object was already in the edge cache.\n If the origin returns an HTTP status code other than HTTP 200 (OK), the function doesn't execute.", + "type": "string" + }, + "IncludeBody": { + "description": "A flag that allows a Lambda@Edge function to have read access to the body content. For more information, see [Accessing the Request Body by Choosing the Include Body Option](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-include-body-access.html) in the Amazon CloudFront Developer Guide.", + "type": "boolean" + }, + "LambdaFunctionARN": { + "description": "The ARN of the Lambda@Edge function. You must specify the ARN of a function version; you can't specify an alias or $LATEST.", + "type": "string" + } + }, + "type": "object" + }, + "LegacyCustomOrigin": { + "additionalProperties": false, + "description": "A custom origin. A custom origin is any origin that is *not* an S3 bucket, with one exception. An S3 bucket that is [configured with static website hosting](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html) *is* a custom origin.\n This property is legacy. We recommend that you use [Origin](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origin.html) instead.", + "properties": { + "DNSName": { + "description": "The domain name assigned to your CF distribution.", + "type": "string" + }, + "HTTPPort": { + "default": 80, + "description": "The HTTP port that CF uses to connect to the origin. Specify the HTTP port that the origin listens on.", + "type": "integer" + }, + "HTTPSPort": { + "default": 443, + "description": "The HTTPS port that CF uses to connect to the origin. Specify the HTTPS port that the origin listens on.", + "type": "integer" + }, + "OriginProtocolPolicy": { + "description": "Specifies the protocol (HTTP or HTTPS) that CF uses to connect to the origin.", + "type": "string" + }, + "OriginSSLProtocols": { + "description": "The minimum SSL/TLS protocol version that CF uses when communicating with your origin server over HTTPs.\n For more information, see [Minimum Origin SSL Protocol](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginSSLProtocols) in the *Developer Guide*.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "DNSName", + "OriginProtocolPolicy", + "OriginSSLProtocols" + ], + "type": "object" + }, + "LegacyS3Origin": { + "additionalProperties": false, + "description": "The origin as an S3 bucket. \n This property is legacy. We recommend that you use [Origin](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origin.html) instead.", + "properties": { + "DNSName": { + "description": "The domain name assigned to your CF distribution.", + "type": "string" + }, + "OriginAccessIdentity": { + "default": "", + "description": "The CF origin access identity to associate with the distribution. Use an origin access identity to configure the distribution so that end users can only access objects in an S3 through CF.\n This property is legacy. We recommend that you use [OriginAccessControl](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-originaccesscontrol.html) instead.", + "type": "string" + } + }, + "required": [ + "DNSName" + ], + "type": "object" + }, + "Logging": { + "additionalProperties": false, + "description": "A complex type that specifies whether access logs are written for the distribution.\n If you already enabled standard logging (legacy) and you want to enable standard logging (v2) to send your access logs to Amazon S3, we recommend that you specify a *different* Amazon S3 bucket or use a *separate path* in the same bucket (for example, use a log prefix or partitioning). This helps you keep track of which log files are associated with which logging subscription and prevents log files from overwriting each other. For more information, see [Standard logging (access logs)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html) in the *Amazon CloudFront Developer Guide*.", + "properties": { + "Bucket": { + "description": "The Amazon S3 bucket to store the access logs in, for example, ``amzn-s3-demo-bucket.s3.amazonaws.com``.", + "type": "string" + }, + "IncludeCookies": { + "default": false, + "description": "Specifies whether you want CloudFront to include cookies in access logs, specify ``true`` for ``IncludeCookies``. If you choose to include cookies in logs, CloudFront logs all cookies regardless of how you configure the cache behaviors for this distribution. If you don't want to include cookies when you create a distribution or if you want to disable include cookies for an existing distribution, specify ``false`` for ``IncludeCookies``.", + "type": "boolean" + }, + "Prefix": { + "default": "", + "description": "An optional string that you want CloudFront to prefix to the access log ``filenames`` for this distribution, for example, ``myprefix/``. If you want to enable logging, but you don't want to specify a prefix, you still must include an empty ``Prefix`` element in the ``Logging`` element.", + "type": "string" + } + }, + "type": "object" + }, + "Origin": { + "additionalProperties": false, + "description": "An origin.\n An origin is the location where content is stored, and from which CloudFront gets content to serve to viewers. To specify an origin:\n + Use ``S3OriginConfig`` to specify an Amazon S3 bucket that is not configured with static website hosting.\n + Use ``VpcOriginConfig`` to specify a VPC origin.\n + Use ``CustomOriginConfig`` to specify all other kinds of origins, including:\n + An Amazon S3 bucket that is configured with static website hosting\n + An Elastic Load Balancing load balancer\n + An EMPlong endpoint\n + An EMSlong container\n + Any other HTTP server, running on an Amazon EC2 instance or any other kind of host\n \n \n For the current maximum number of origins that you can specify per distribution, see [General Quotas on Web Distributions](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html#limits-web-distributions) in the *Amazon CloudFront Developer Guide* (quotas were formerly referred to as limits).", + "properties": { + "ConnectionAttempts": { + "description": "The number of times that CloudFront attempts to connect to the origin. The minimum number is 1, the maximum is 3, and the default (if you don't specify otherwise) is 3.\n For a custom origin (including an Amazon S3 bucket that's configured with static website hosting), this value also specifies the number of times that CloudFront attempts to get a response from the origin, in the case of an [Origin Response Timeout](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginResponseTimeout).\n For more information, see [Origin Connection Attempts](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#origin-connection-attempts) in the *Amazon CloudFront Developer Guide*.", + "type": "integer" + }, + "ConnectionTimeout": { + "description": "The number of seconds that CloudFront waits when trying to establish a connection to the origin. The minimum timeout is 1 second, the maximum is 10 seconds, and the default (if you don't specify otherwise) is 10 seconds.\n For more information, see [Origin Connection Timeout](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#origin-connection-timeout) in the *Amazon CloudFront Developer Guide*.", + "type": "integer" + }, + "CustomOriginConfig": { + "$ref": "#/definitions/CustomOriginConfig", + "description": "Use this type to specify an origin that is not an Amazon S3 bucket, with one exception. If the Amazon S3 bucket is configured with static website hosting, use this type. If the Amazon S3 bucket is not configured with static website hosting, use the ``S3OriginConfig`` type instead." + }, + "DomainName": { + "description": "The domain name for the origin.\n For more information, see [Origin Domain Name](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesDomainName) in the *Amazon CloudFront Developer Guide*.", + "type": "string" + }, + "Id": { + "description": "A unique identifier for the origin. This value must be unique within the distribution.\n Use this value to specify the ``TargetOriginId`` in a ``CacheBehavior`` or ``DefaultCacheBehavior``.", + "type": "string" + }, + "OriginAccessControlId": { + "description": "The unique identifier of an origin access control for this origin.\n For more information, see [Restricting access to an Amazon S3 origin](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html) in the *Amazon CloudFront Developer Guide*.", + "type": "string" + }, + "OriginCustomHeaders": { + "description": "A list of HTTP header names and values that CloudFront adds to the requests that it sends to the origin.\n For more information, see [Adding Custom Headers to Origin Requests](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/add-origin-custom-headers.html) in the *Amazon CloudFront Developer Guide*.", + "items": { + "$ref": "#/definitions/OriginCustomHeader" + }, + "type": "array", + "uniqueItems": false + }, + "OriginPath": { + "default": "", + "description": "An optional path that CloudFront appends to the origin domain name when CloudFront requests content from the origin.\n For more information, see [Origin Path](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginPath) in the *Amazon CloudFront Developer Guide*.", + "type": "string" + }, + "OriginShield": { + "$ref": "#/definitions/OriginShield", + "description": "CloudFront Origin Shield. Using Origin Shield can help reduce the load on your origin.\n For more information, see [Using Origin Shield](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/origin-shield.html) in the *Amazon CloudFront Developer Guide*." + }, + "S3OriginConfig": { + "$ref": "#/definitions/S3OriginConfig", + "description": "Use this type to specify an origin that is an Amazon S3 bucket that is not configured with static website hosting. To specify any other type of origin, including an Amazon S3 bucket that is configured with static website hosting, use the ``CustomOriginConfig`` type instead." + }, + "VpcOriginConfig": { + "$ref": "#/definitions/VpcOriginConfig", + "description": "The VPC origin configuration." + } + }, + "required": [ + "DomainName", + "Id" + ], + "type": "object" + }, + "OriginCustomHeader": { + "additionalProperties": false, + "description": "A complex type that contains ``HeaderName`` and ``HeaderValue`` elements, if any, for this distribution.", + "properties": { + "HeaderName": { + "description": "The name of a header that you want CloudFront to send to your origin. For more information, see [Adding Custom Headers to Origin Requests](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/forward-custom-headers.html) in the *Amazon CloudFront Developer Guide*.", + "type": "string" + }, + "HeaderValue": { + "description": "The value for the header that you specified in the ``HeaderName`` field.", + "type": "string" + } + }, + "required": [ + "HeaderValue", + "HeaderName" + ], + "type": "object" + }, + "OriginGroup": { + "additionalProperties": false, + "description": "An origin group includes two origins (a primary origin and a secondary origin to failover to) and a failover criteria that you specify. You create an origin group to support origin failover in CloudFront. When you create or update a distribution, you can specify the origin group instead of a single origin, and CloudFront will failover from the primary origin to the secondary origin under the failover conditions that you've chosen.\n Optionally, you can choose selection criteria for your origin group to specify how your origins are selected when your distribution routes viewer requests.", + "properties": { + "FailoverCriteria": { + "$ref": "#/definitions/OriginGroupFailoverCriteria", + "description": "A complex type that contains information about the failover criteria for an origin group." + }, + "Id": { + "description": "The origin group's ID.", + "type": "string" + }, + "Members": { + "$ref": "#/definitions/OriginGroupMembers", + "description": "A complex type that contains information about the origins in an origin group." + }, + "SelectionCriteria": { + "$ref": "#/definitions/OriginGroupSelectionCriteria", + "description": "The selection criteria for the origin group. For more information, see [Create an origin group](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/high_availability_origin_failover.html#concept_origin_groups.creating) in the *Amazon CloudFront Developer Guide*." + } + }, + "required": [ + "Id", + "FailoverCriteria", + "Members" + ], + "type": "object" + }, + "OriginGroupFailoverCriteria": { + "additionalProperties": false, + "description": "A complex data type that includes information about the failover criteria for an origin group, including the status codes for which CloudFront will failover from the primary origin to the second origin.", + "properties": { + "StatusCodes": { + "$ref": "#/definitions/StatusCodes", + "description": "The status codes that, when returned from the primary origin, will trigger CloudFront to failover to the second origin." + } + }, + "required": [ + "StatusCodes" + ], + "type": "object" + }, + "OriginGroupMember": { + "additionalProperties": false, + "description": "An origin in an origin group.", + "properties": { + "OriginId": { + "description": "The ID for an origin in an origin group.", + "type": "string" + } + }, + "required": [ + "OriginId" + ], + "type": "object" + }, + "OriginGroupMembers": { + "additionalProperties": false, + "description": "A complex data type for the origins included in an origin group.", + "properties": { + "Items": { + "description": "Items (origins) in an origin group.", + "items": { + "$ref": "#/definitions/OriginGroupMember" + }, + "type": "array", + "uniqueItems": false + }, + "Quantity": { + "description": "The number of origins in an origin group.", + "type": "integer" + } + }, + "required": [ + "Quantity", + "Items" + ], + "type": "object" + }, + "OriginGroupSelectionCriteria": { + "enum": [ + "default", + "media-quality-based" + ], + "type": "string" + }, + "OriginGroups": { + "additionalProperties": false, + "description": "A complex data type for the origin groups specified for a distribution.", + "properties": { + "Items": { + "description": "The items (origin groups) in a distribution.", + "items": { + "$ref": "#/definitions/OriginGroup" + }, + "type": "array", + "uniqueItems": false + }, + "Quantity": { + "description": "The number of origin groups.", + "type": "integer" + } + }, + "required": [ + "Quantity" + ], + "type": "object" + }, + "OriginShield": { + "additionalProperties": false, + "description": "CloudFront Origin Shield.\n Using Origin Shield can help reduce the load on your origin. For more information, see [Using Origin Shield](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/origin-shield.html) in the *Amazon CloudFront Developer Guide*.", + "properties": { + "Enabled": { + "description": "A flag that specifies whether Origin Shield is enabled.\n When it's enabled, CloudFront routes all requests through Origin Shield, which can help protect your origin. When it's disabled, CloudFront might send requests directly to your origin from multiple edge locations or regional edge caches.", + "type": "boolean" + }, + "OriginShieldRegion": { + "description": "The AWS-Region for Origin Shield.\n Specify the AWS-Region that has the lowest latency to your origin. To specify a region, use the region code, not the region name. For example, specify the US East (Ohio) region as ``us-east-2``.\n When you enable CloudFront Origin Shield, you must specify the AWS-Region for Origin Shield. For the list of AWS-Regions that you can specify, and for help choosing the best Region for your origin, see [Choosing the for Origin Shield](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/origin-shield.html#choose-origin-shield-region) in the *Amazon CloudFront Developer Guide*.", + "type": "string" + } + }, + "type": "object" + }, + "ParameterDefinition": { + "additionalProperties": false, + "description": "", + "properties": { + "Definition": { + "additionalProperties": false, + "properties": { + "StringSchema": { + "additionalProperties": false, + "properties": { + "Comment": { + "type": "string" + }, + "DefaultValue": { + "type": "string" + }, + "Required": { + "type": "boolean" + } + }, + "required": [ + "Required" + ], + "type": "object" + } + }, + "type": "object" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "Name", + "Definition" + ], + "type": "object" + }, + "Restrictions": { + "additionalProperties": false, + "description": "A complex type that identifies ways in which you want to restrict distribution of your content.", + "properties": { + "GeoRestriction": { + "$ref": "#/definitions/GeoRestriction", + "description": "A complex type that controls the countries in which your content is distributed. CF determines the location of your users using ``MaxMind`` GeoIP databases. To disable geo restriction, remove the [Restrictions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-restrictions) property from your stack template." + } + }, + "required": [ + "GeoRestriction" + ], + "type": "object" + }, + "S3OriginConfig": { + "additionalProperties": false, + "description": "A complex type that contains information about the Amazon S3 origin. If the origin is a custom origin or an S3 bucket that is configured as a website endpoint, use the ``CustomOriginConfig`` element instead.", + "properties": { + "OriginAccessIdentity": { + "default": "", + "description": "If you're using origin access control (OAC) instead of origin access identity, specify an empty ``OriginAccessIdentity`` element. For more information, see [Restricting access to an](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-origin.html) in the *Amazon CloudFront Developer Guide*.\n The CloudFront origin access identity to associate with the origin. Use an origin access identity to configure the origin so that viewers can *only* access objects in an Amazon S3 bucket through CloudFront. The format of the value is:\n ``origin-access-identity/cloudfront/ID-of-origin-access-identity`` \n The ``ID-of-origin-access-identity`` is the value that CloudFront returned in the ``ID`` element when you created the origin access identity.\n If you want viewers to be able to access objects using either the CloudFront URL or the Amazon S3 URL, specify an empty ``OriginAccessIdentity`` element.\n To delete the origin access identity from an existing distribution, update the distribution configuration and include an empty ``OriginAccessIdentity`` element.\n To replace the origin access identity, update the distribution configuration and specify the new origin access identity.\n For more information about the origin access identity, see [Serving Private Content through CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html) in the *Amazon CloudFront Developer Guide*.", + "type": "string" + } + }, + "type": "object" + }, + "StatusCodes": { + "additionalProperties": false, + "description": "A complex data type for the status codes that you specify that, when returned by a primary origin, trigger CloudFront to failover to a second origin.", + "properties": { + "Items": { + "description": "The items (status codes) for an origin group.", + "items": { + "type": "integer" + }, + "type": "array", + "uniqueItems": false + }, + "Quantity": { + "description": "The number of status codes.", + "type": "integer" + } + }, + "required": [ + "Quantity", + "Items" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A complex type that contains ``Tag`` key and ``Tag`` value.", + "properties": { + "Key": { + "description": "A string that contains ``Tag`` key.\n The string length should be between 1 and 128 characters. Valid characters include ``a-z``, ``A-Z``, ``0-9``, space, and the special characters ``_ - . : / = + @``.", + "type": "string" + }, + "Value": { + "description": "A string that contains an optional ``Tag`` value.\n The string length should be between 0 and 256 characters. Valid characters include ``a-z``, ``A-Z``, ``0-9``, space, and the special characters ``_ - . : / = + @``.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "ViewerCertificate": { + "additionalProperties": false, + "description": "A complex type that determines the distribution's SSL/TLS configuration for communicating with viewers.\n If the distribution doesn't use ``Aliases`` (also known as alternate domain names or CNAMEs)\u2014that is, if the distribution uses the CloudFront domain name such as ``d111111abcdef8.cloudfront.net``\u2014set ``CloudFrontDefaultCertificate`` to ``true`` and leave all other fields empty.\n If the distribution uses ``Aliases`` (alternate domain names or CNAMEs), use the fields in this type to specify the following settings:\n + Which viewers the distribution accepts HTTPS connections from: only viewers that support [server name indication (SNI)](https://docs.aws.amazon.com/https://en.wikipedia.org/wiki/Server_Name_Indication) (recommended), or all viewers including those that don't support SNI.\n + To accept HTTPS connections from only viewers that support SNI, set ``SSLSupportMethod`` to ``sni-only``. This is recommended. Most browsers and clients support SNI. (In CloudFormation, the field name is ``SslSupportMethod``. Note the different capitalization.)\n + To accept HTTPS connections from all viewers, including those that don't support SNI, set ``SSLSupportMethod`` to ``vip``. This is not recommended, and results in additional monthly charges from CloudFront. (In CloudFormation, the field name is ``SslSupportMethod``. Note the different capitalization.)\n \n + The minimum SSL/TLS protocol version that the distribution can use to communicate with viewers. To specify a minimum version, choose a value for ``MinimumProtocolVersion``. For more information, see [Security Policy](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValues-security-policy) in the *Amazon CloudFront Developer Guide*.\n + The location of the SSL/TLS certificate, [(ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) (recommended) or [(IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html). You specify the location by setting a value in one of the following fields (not both):\n + ``ACMCertificateArn`` (In CloudFormation, this field name is ``AcmCertificateArn``. Note the different capitalization.)\n + ``IAMCertificateId`` (In CloudFormation, this field name is ``IamCertificateId``. Note the different capitalization.)\n \n \n All distributions support HTTPS connections from viewers. To require viewers to use HTTPS only, or to redirect them from HTTP to HTTPS, use ``ViewerProtocolPolicy`` in the ``CacheBehavior`` or ``DefaultCacheBehavior``. To specify how CloudFront should use SSL/TLS to communicate with your custom origin, use ``CustomOriginConfig``.\n For more information, see [Using HTTPS with CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https.html) and [Using Alternate Domain Names and HTTPS](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-alternate-domain-names.html) in the *Amazon CloudFront Developer Guide*.", + "properties": { + "AcmCertificateArn": { + "description": "In CloudFormation, this field name is ``AcmCertificateArn``. Note the different capitalization.\n If the distribution uses ``Aliases`` (alternate domain names or CNAMEs) and the SSL/TLS certificate is stored in [(ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html), provide the Amazon Resource Name (ARN) of the ACM certificate. CloudFront only supports ACM certificates in the US East (N. Virginia) Region (``us-east-1``).\n If you specify an ACM certificate ARN, you must also specify values for ``MinimumProtocolVersion`` and ``SSLSupportMethod``. (In CloudFormation, the field name is ``SslSupportMethod``. Note the different capitalization.)", + "type": "string" + }, + "CloudFrontDefaultCertificate": { + "description": "If the distribution uses the CloudFront domain name such as ``d111111abcdef8.cloudfront.net``, set this field to ``true``.\n If the distribution uses ``Aliases`` (alternate domain names or CNAMEs), omit this field and specify values for the following fields:\n + ``AcmCertificateArn`` or ``IamCertificateId`` (specify a value for one, not both) \n + ``MinimumProtocolVersion`` \n + ``SslSupportMethod``", + "type": "boolean" + }, + "IamCertificateId": { + "description": "In CloudFormation, this field name is ``IamCertificateId``. Note the different capitalization.\n If the distribution uses ``Aliases`` (alternate domain names or CNAMEs) and the SSL/TLS certificate is stored in [(IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html), provide the ID of the IAM certificate.\n If you specify an IAM certificate ID, you must also specify values for ``MinimumProtocolVersion`` and ``SSLSupportMethod``. (In CloudFormation, the field name is ``SslSupportMethod``. Note the different capitalization.)", + "type": "string" + }, + "MinimumProtocolVersion": { + "description": "If the distribution uses ``Aliases`` (alternate domain names or CNAMEs), specify the security policy that you want CloudFront to use for HTTPS connections with viewers. The security policy determines two settings:\n + The minimum SSL/TLS protocol that CloudFront can use to communicate with viewers.\n + The ciphers that CloudFront can use to encrypt the content that it returns to viewers.\n \n For more information, see [Security Policy](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValues-security-policy) and [Supported Protocols and Ciphers Between Viewers and CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/secure-connections-supported-viewer-protocols-ciphers.html#secure-connections-supported-ciphers) in the *Amazon CloudFront Developer Guide*.\n On the CloudFront console, this setting is called *Security Policy*.\n When you're using SNI only (you set ``SSLSupportMethod`` to ``sni-only``), you must specify ``TLSv1`` or higher. (In CloudFormation, the field name is ``SslSupportMethod``. Note the different capitalization.)\n If the distribution uses the CloudFront domain name such as ``d111111abcdef8.cloudfront.net`` (you set ``CloudFrontDefaultCertificate`` to ``true``), CloudFront automatically sets the security policy to ``TLSv1`` regardless of the value that you set here.", + "type": "string" + }, + "SslSupportMethod": { + "description": "In CloudFormation, this field name is ``SslSupportMethod``. Note the different capitalization.\n If the distribution uses ``Aliases`` (alternate domain names or CNAMEs), specify which viewers the distribution accepts HTTPS connections from.\n + ``sni-only`` \u2013 The distribution accepts HTTPS connections from only viewers that support [server name indication (SNI)](https://docs.aws.amazon.com/https://en.wikipedia.org/wiki/Server_Name_Indication). This is recommended. Most browsers and clients support SNI.\n + ``vip`` \u2013 The distribution accepts HTTPS connections from all viewers including those that don't support SNI. This is not recommended, and results in additional monthly charges from CloudFront.\n + ``static-ip`` - Do not specify this value unless your distribution has been enabled for this feature by the CloudFront team. If you have a use case that requires static IP addresses for a distribution, contact CloudFront through the [Center](https://docs.aws.amazon.com/support/home).\n \n If the distribution uses the CloudFront domain name such as ``d111111abcdef8.cloudfront.net``, don't set a value for this field.", + "type": "string" + } + }, + "type": "object" + }, + "VpcOriginConfig": { + "additionalProperties": false, + "description": "An Amazon CloudFront VPC origin configuration.", + "properties": { + "OriginKeepaliveTimeout": { + "default": 5, + "description": "Specifies how long, in seconds, CloudFront persists its connection to the origin. The minimum timeout is 1 second, the maximum is 60 seconds, and the default (if you don't specify otherwise) is 5 seconds.\n For more information, see [Keep-alive timeout (custom origins only)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginKeepaliveTimeout) in the *Amazon CloudFront Developer Guide*.", + "type": "integer" + }, + "OriginReadTimeout": { + "default": 30, + "description": "Specifies how long, in seconds, CloudFront waits for a response from the origin. This is also known as the *origin response timeout*. The minimum timeout is 1 second, the maximum is 60 seconds, and the default (if you don't specify otherwise) is 30 seconds.\n For more information, see [Response timeout (custom origins only)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginResponseTimeout) in the *Amazon CloudFront Developer Guide*.", + "type": "integer" + }, + "VpcOriginId": { + "description": "The VPC origin ID.", + "type": "string" + } + }, + "required": [ + "VpcOriginId" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/DistributionConfig/properties/CustomOrigin", + "/properties/DistributionConfig/properties/S3Origin" + ], + "description": "A distribution tells CloudFront where you want content to be delivered from, and the details about how to track and manage content delivery.", + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateConnectionGroup", + "cloudfront:CreateDistribution", + "cloudfront:CreateDistributionWithTags", + "cloudfront:GetConnectionGroup", + "cloudfront:GetDistribution", + "cloudfront:GetDistributionConfig", + "cloudfront:TagResource" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteDistribution", + "cloudfront:GetDistribution", + "cloudfront:GetDistributionConfig" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListTagsForResource", + "cloudfront:ListDistributions" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetDistribution", + "cloudfront:GetDistributionConfig" + ] + }, + "update": { + "permissions": [ + "cloudfront:CreateConnectionGroup", + "cloudfront:GetConnectionGroup", + "cloudfront:GetDistribution", + "cloudfront:GetDistributionConfig", + "cloudfront:UpdateDistribution", + "cloudfront:UpdateDistributionWithStagingConfig", + "cloudfront:ListTagsForResource", + "cloudfront:TagResource", + "cloudfront:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DistributionConfig": { + "$ref": "#/definitions/DistributionConfig", + "description": "The distribution's configuration." + }, + "DomainName": { + "description": "", + "type": "string" + }, + "Id": { + "description": "", + "type": "string" + }, + "Tags": { + "description": "A complex type that contains zero or more ``Tag`` elements.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/DomainName" + ], + "required": [ + "DistributionConfig" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "cloudfront:TagResource", + "cloudfront:ListTagsForResource", + "cloudfront:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CloudFront::Distribution" +} diff --git a/src/schema/aws-cloudfront-distributiontenant.json b/src/schema/aws-cloudfront-distributiontenant.json new file mode 100644 index 00000000..697431fd --- /dev/null +++ b/src/schema/aws-cloudfront-distributiontenant.json @@ -0,0 +1,296 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/ManagedCertificateRequest" + ], + "definitions": { + "Certificate": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + } + }, + "type": "object" + }, + "Customizations": { + "additionalProperties": false, + "properties": { + "Certificate": { + "$ref": "#/definitions/Certificate" + }, + "GeoRestrictions": { + "$ref": "#/definitions/GeoRestrictionCustomization" + }, + "WebAcl": { + "$ref": "#/definitions/WebAclCustomization" + } + }, + "type": "object" + }, + "DomainResult": { + "additionalProperties": false, + "properties": { + "Domain": { + "type": "string" + }, + "Reason": { + "enum": [ + "pending-validation", + "validation-failed", + "pending-activation", + "customer-activated" + ], + "type": "string" + }, + "Status": { + "enum": [ + "active", + "inactive" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeoRestrictionCustomization": { + "additionalProperties": false, + "properties": { + "Locations": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "RestrictionType": { + "enum": [ + "blacklist", + "whitelist", + "none" + ], + "type": "string" + } + }, + "type": "object" + }, + "ManagedCertificateRequest": { + "additionalProperties": false, + "properties": { + "CertificateTransparencyLoggingPreference": { + "enum": [ + "enabled", + "disabled" + ], + "type": "string" + }, + "PrimaryDomainName": { + "type": "string" + }, + "ValidationTokenHost": { + "enum": [ + "cloudfront", + "self-hosted" + ], + "type": "string" + } + }, + "type": "object" + }, + "Parameter": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "WebAclCustomization": { + "additionalProperties": false, + "properties": { + "Action": { + "enum": [ + "override", + "disable" + ], + "type": "string" + }, + "Arn": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::CloudFront::DistributionTenant", + "handlers": { + "create": { + "permissions": [ + "acm:DeleteCertificate", + "acm:DescribeCertificate", + "acm:RequestCertificate", + "cloudfront:CreateDistributionTenant", + "cloudfront:GetDistributionTenant", + "cloudfront:GetManagedCertificateDetails", + "cloudfront:TagResource", + "cloudfront:VerifyDnsConfiguration" + ] + }, + "delete": { + "permissions": [ + "acm:DeleteCertificate", + "cloudfront:DeleteDistributionTenant", + "cloudfront:UpdateDistributionTenant", + "cloudfront:GetDistributionTenant" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListDistributionTenants", + "cloudfront:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetDistributionTenant", + "cloudfront:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "acm:DeleteCertificate", + "acm:DescribeCertificate", + "acm:RequestCertificate", + "cloudfront:GetDistributionTenant", + "cloudfront:GetManagedCertificateDetails", + "cloudfront:UpdateDistributionTenant", + "cloudfront:ListTagsForResource", + "cloudfront:TagResource", + "cloudfront:UntagResource", + "cloudfront:VerifyDnsConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "ConnectionGroupId": { + "type": "string" + }, + "CreatedTime": { + "format": "date-time", + "type": "string" + }, + "Customizations": { + "$ref": "#/definitions/Customizations" + }, + "DistributionId": { + "type": "string" + }, + "DomainResults": { + "items": { + "$ref": "#/definitions/DomainResult" + }, + "type": "array", + "uniqueItems": false + }, + "Domains": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ETag": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "LastModifiedTime": { + "format": "date-time", + "type": "string" + }, + "ManagedCertificateRequest": { + "$ref": "#/definitions/ManagedCertificateRequest" + }, + "Name": { + "type": "string" + }, + "Parameters": { + "items": { + "$ref": "#/definitions/Parameter" + }, + "type": "array", + "uniqueItems": false + }, + "Status": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/DomainResults", + "/properties/ETag", + "/properties/Status", + "/properties/CreatedTime", + "/properties/LastModifiedTime" + ], + "required": [ + "DistributionId", + "Name", + "Domains" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "cloudfront:TagResource", + "cloudfront:ListTagsForResource", + "cloudfront:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CloudFront::DistributionTenant", + "writeOnlyProperties": [ + "/properties/ManagedCertificateRequest" + ] +} diff --git a/src/schema/aws-cloudfront-function.json b/src/schema/aws-cloudfront-function.json index 04f2fe00..c8d1677e 100644 --- a/src/schema/aws-cloudfront-function.json +++ b/src/schema/aws-cloudfront-function.json @@ -1,129 +1,144 @@ -{ - "additionalProperties": false, - "definitions": { - "FunctionConfig": { - "additionalProperties": false, - "properties": { - "Comment": { - "type": "string" - }, - "KeyValueStoreAssociations": { - "items": { - "$ref": "#/definitions/KeyValueStoreAssociation" - }, - "type": "array", - "uniqueItems": true - }, - "Runtime": { - "type": "string" - } - }, - "required": [ - "Comment", - "Runtime" - ], - "type": "object" - }, - "FunctionMetadata": { - "additionalProperties": false, - "properties": { - "FunctionARN": { - "type": "string" - } - }, - "type": "object" - }, - "KeyValueStoreAssociation": { - "additionalProperties": false, - "properties": { - "KeyValueStoreARN": { - "type": "string" - } - }, - "required": [ - "KeyValueStoreARN" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CloudFront::Function", - "handlers": { - "create": { - "permissions": [ - "cloudfront:CreateFunction", - "cloudfront:PublishFunction", - "cloudfront:DescribeFunction" - ] - }, - "delete": { - "permissions": [ - "cloudfront:DeleteFunction", - "cloudfront:DescribeFunction" - ] - }, - "list": { - "permissions": [ - "cloudfront:ListFunctions" - ] - }, - "read": { - "permissions": [ - "cloudfront:DescribeFunction", - "cloudfront:GetFunction" - ] - }, - "update": { - "permissions": [ - "cloudfront:UpdateFunction", - "cloudfront:PublishFunction", - "cloudfront:DescribeFunction" - ] - } - }, - "primaryIdentifier": [ - "/properties/FunctionARN" - ], - "properties": { - "AutoPublish": { - "type": "boolean" - }, - "FunctionARN": { - "type": "string" - }, - "FunctionCode": { - "type": "string" - }, - "FunctionConfig": { - "$ref": "#/definitions/FunctionConfig" - }, - "FunctionMetadata": { - "$ref": "#/definitions/FunctionMetadata" - }, - "Name": { - "type": "string" - }, - "Stage": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/FunctionARN", - "/properties/FunctionMetadata/FunctionARN", - "/properties/Stage" - ], - "required": [ - "Name", - "FunctionConfig", - "FunctionCode" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CloudFront::Function", - "writeOnlyProperties": [ - "/properties/AutoPublish" - ] -} +{ + "additionalProperties": false, + "definitions": { + "FunctionConfig": { + "additionalProperties": false, + "description": "Contains configuration information about a CloudFront function.", + "properties": { + "Comment": { + "description": "A comment to describe the function.", + "type": "string" + }, + "KeyValueStoreAssociations": { + "description": "The configuration for the key value store associations.", + "items": { + "$ref": "#/definitions/KeyValueStoreAssociation" + }, + "type": "array", + "uniqueItems": true + }, + "Runtime": { + "description": "The function's runtime environment version.", + "type": "string" + } + }, + "required": [ + "Comment", + "Runtime" + ], + "type": "object" + }, + "FunctionMetadata": { + "additionalProperties": false, + "description": "Contains metadata about a CloudFront function.", + "properties": { + "FunctionARN": { + "description": "The Amazon Resource Name (ARN) of the function. The ARN uniquely identifies the function.", + "type": "string" + } + }, + "type": "object" + }, + "KeyValueStoreAssociation": { + "additionalProperties": false, + "description": "The key value store association.", + "properties": { + "KeyValueStoreARN": { + "description": "The Amazon Resource Name (ARN) of the key value store association.", + "type": "string" + } + }, + "required": [ + "KeyValueStoreARN" + ], + "type": "object" + } + }, + "description": "Creates a CF function.\n To create a function, you provide the function code and some configuration information about the function. The response contains an Amazon Resource Name (ARN) that uniquely identifies the function, and the function\u2019s stage.\n By default, when you create a function, it\u2019s in the ``DEVELOPMENT`` stage. In this stage, you can [test the function](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/test-function.html) in the CF console (or with ``TestFunction`` in the CF API).\n When you\u2019re ready to use your function with a CF distribution, publish the function to the ``LIVE`` stage. You can do this in the CF console, with ``PublishFunction`` in the CF API, or by updating the ``AWS::CloudFront::Function`` resource with the ``AutoPublish`` property set to ``true``. When the function is published to the ``LIVE`` stage, you can attach it to a distribution\u2019s cache behavior, using the function\u2019s ARN.\n To automatically publish the function to the ``LIVE`` stage when it\u2019s created, set the ``AutoPublish`` property to ``true``.", + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateFunction", + "cloudfront:PublishFunction", + "cloudfront:DescribeFunction" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteFunction", + "cloudfront:DescribeFunction" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListFunctions" + ] + }, + "read": { + "permissions": [ + "cloudfront:DescribeFunction", + "cloudfront:GetFunction" + ] + }, + "update": { + "permissions": [ + "cloudfront:UpdateFunction", + "cloudfront:PublishFunction", + "cloudfront:DescribeFunction" + ] + } + }, + "primaryIdentifier": [ + "/properties/FunctionARN" + ], + "properties": { + "AutoPublish": { + "description": "A flag that determines whether to automatically publish the function to the ``LIVE`` stage when it\u2019s created. To automatically publish to the ``LIVE`` stage, set this property to ``true``.", + "type": "boolean" + }, + "FunctionARN": { + "description": "", + "type": "string" + }, + "FunctionCode": { + "description": "The function code. For more information about writing a CloudFront function, see [Writing function code for CloudFront Functions](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/writing-function-code.html) in the *Amazon CloudFront Developer Guide*.", + "type": "string" + }, + "FunctionConfig": { + "$ref": "#/definitions/FunctionConfig", + "description": "Contains configuration information about a CloudFront function." + }, + "FunctionMetadata": { + "$ref": "#/definitions/FunctionMetadata", + "description": "Contains metadata about a CloudFront function." + }, + "Name": { + "description": "A name to identify the function.", + "type": "string" + }, + "Stage": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/FunctionARN", + "/properties/FunctionMetadata/FunctionARN", + "/properties/Stage" + ], + "required": [ + "Name", + "FunctionConfig", + "FunctionCode" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFront::Function", + "writeOnlyProperties": [ + "/properties/AutoPublish" + ] +} diff --git a/src/schema/aws-cloudfront-keygroup.json b/src/schema/aws-cloudfront-keygroup.json index 979b512b..e29980ac 100644 --- a/src/schema/aws-cloudfront-keygroup.json +++ b/src/schema/aws-cloudfront-keygroup.json @@ -1,86 +1,93 @@ -{ - "additionalProperties": false, - "definitions": { - "KeyGroupConfig": { - "additionalProperties": false, - "properties": { - "Comment": { - "type": "string" - }, - "Items": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Name": { - "type": "string" - } - }, - "required": [ - "Name", - "Items" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CloudFront::KeyGroup", - "handlers": { - "create": { - "permissions": [ - "cloudfront:CreateKeyGroup" - ] - }, - "delete": { - "permissions": [ - "cloudfront:DeleteKeyGroup", - "cloudfront:GetKeyGroup" - ] - }, - "list": { - "permissions": [ - "cloudfront:ListKeyGroups" - ] - }, - "read": { - "permissions": [ - "cloudfront:GetKeyGroup" - ] - }, - "update": { - "permissions": [ - "cloudfront:UpdateKeyGroup", - "cloudfront:GetKeyGroup" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "KeyGroupConfig": { - "$ref": "#/definitions/KeyGroupConfig" - }, - "LastModifiedTime": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/LastModifiedTime" - ], - "required": [ - "KeyGroupConfig" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CloudFront::KeyGroup" -} +{ + "additionalProperties": false, + "definitions": { + "KeyGroupConfig": { + "additionalProperties": false, + "description": "A key group configuration.\n A key group contains a list of public keys that you can use with [CloudFront signed URLs and signed cookies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html).", + "properties": { + "Comment": { + "description": "A comment to describe the key group. The comment cannot be longer than 128 characters.", + "type": "string" + }, + "Items": { + "description": "A list of the identifiers of the public keys in the key group.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Name": { + "description": "A name to identify the key group.", + "type": "string" + } + }, + "required": [ + "Name", + "Items" + ], + "type": "object" + } + }, + "description": "A key group.\n A key group contains a list of public keys that you can use with [CloudFront signed URLs and signed cookies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html).", + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateKeyGroup" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteKeyGroup", + "cloudfront:GetKeyGroup" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListKeyGroups" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetKeyGroup" + ] + }, + "update": { + "permissions": [ + "cloudfront:UpdateKeyGroup", + "cloudfront:GetKeyGroup" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "", + "type": "string" + }, + "KeyGroupConfig": { + "$ref": "#/definitions/KeyGroupConfig", + "description": "The key group configuration." + }, + "LastModifiedTime": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/LastModifiedTime" + ], + "required": [ + "KeyGroupConfig" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFront::KeyGroup" +} diff --git a/src/schema/aws-cloudfront-keyvaluestore.json b/src/schema/aws-cloudfront-keyvaluestore.json index 0ba38dfb..3ebc83bd 100644 --- a/src/schema/aws-cloudfront-keyvaluestore.json +++ b/src/schema/aws-cloudfront-keyvaluestore.json @@ -1,99 +1,108 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "ImportSource": { - "additionalProperties": false, - "properties": { - "SourceArn": { - "type": "string" - }, - "SourceType": { - "type": "string" - } - }, - "required": [ - "SourceType", - "SourceArn" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CloudFront::KeyValueStore", - "handlers": { - "create": { - "permissions": [ - "cloudfront:CreateKeyValueStore", - "cloudfront:DescribeKeyValueStore", - "s3:GetObject", - "s3:HeadObject", - "s3:GetBucketLocation" - ] - }, - "delete": { - "permissions": [ - "cloudfront:DeleteKeyValueStore", - "cloudfront:DescribeKeyValueStore" - ] - }, - "list": { - "permissions": [ - "cloudfront:ListKeyValueStores" - ] - }, - "read": { - "permissions": [ - "cloudfront:DescribeKeyValueStore" - ] - }, - "update": { - "permissions": [ - "cloudfront:UpdateKeyValueStore", - "cloudfront:DescribeKeyValueStore" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Comment": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImportSource": { - "$ref": "#/definitions/ImportSource" - }, - "Name": { - "type": "string" - }, - "Status": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id", - "/properties/Status" - ], - "required": [ - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CloudFront::KeyValueStore", - "writeOnlyProperties": [ - "/properties/ImportSource" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "ImportSource": { + "additionalProperties": false, + "description": "The import source for the key value store.", + "properties": { + "SourceArn": { + "description": "The Amazon Resource Name (ARN) of the import source for the key value store.", + "type": "string" + }, + "SourceType": { + "description": "The source type of the import source for the key value store.", + "type": "string" + } + }, + "required": [ + "SourceType", + "SourceArn" + ], + "type": "object" + } + }, + "description": "The key value store. Use this to separate data from function code, allowing you to update data without having to publish a new version of a function. The key value store holds keys and their corresponding values.", + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateKeyValueStore", + "cloudfront:DescribeKeyValueStore", + "s3:GetObject", + "s3:HeadObject", + "s3:GetBucketLocation" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteKeyValueStore", + "cloudfront:DescribeKeyValueStore" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListKeyValueStores" + ] + }, + "read": { + "permissions": [ + "cloudfront:DescribeKeyValueStore" + ] + }, + "update": { + "permissions": [ + "cloudfront:UpdateKeyValueStore", + "cloudfront:DescribeKeyValueStore" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "Comment": { + "description": "A comment for the key value store.", + "type": "string" + }, + "Id": { + "description": "", + "type": "string" + }, + "ImportSource": { + "$ref": "#/definitions/ImportSource", + "description": "The import source for the key value store." + }, + "Name": { + "description": "The name of the key value store.", + "type": "string" + }, + "Status": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/Status" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFront::KeyValueStore", + "writeOnlyProperties": [ + "/properties/ImportSource" + ] +} diff --git a/src/schema/aws-cloudfront-monitoringsubscription.json b/src/schema/aws-cloudfront-monitoringsubscription.json index 1d7dffb1..4cece80b 100644 --- a/src/schema/aws-cloudfront-monitoringsubscription.json +++ b/src/schema/aws-cloudfront-monitoringsubscription.json @@ -1,73 +1,79 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DistributionId" - ], - "definitions": { - "MonitoringSubscription": { - "additionalProperties": false, - "properties": { - "RealtimeMetricsSubscriptionConfig": { - "$ref": "#/definitions/RealtimeMetricsSubscriptionConfig" - } - }, - "type": "object" - }, - "RealtimeMetricsSubscriptionConfig": { - "additionalProperties": false, - "properties": { - "RealtimeMetricsSubscriptionStatus": { - "enum": [ - "Enabled", - "Disabled" - ], - "type": "string" - } - }, - "required": [ - "RealtimeMetricsSubscriptionStatus" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CloudFront::MonitoringSubscription", - "handlers": { - "create": { - "permissions": [ - "cloudfront:CreateMonitoringSubscription" - ] - }, - "delete": { - "permissions": [ - "cloudfront:DeleteMonitoringSubscription" - ] - }, - "read": { - "permissions": [ - "cloudfront:GetMonitoringSubscription" - ] - } - }, - "primaryIdentifier": [ - "/properties/DistributionId" - ], - "properties": { - "DistributionId": { - "type": "string" - }, - "MonitoringSubscription": { - "$ref": "#/definitions/MonitoringSubscription" - } - }, - "required": [ - "DistributionId", - "MonitoringSubscription" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CloudFront::MonitoringSubscription" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DistributionId" + ], + "definitions": { + "MonitoringSubscription": { + "additionalProperties": false, + "description": "A monitoring subscription. This structure contains information about whether additional CloudWatch metrics are enabled for a given CloudFront distribution.", + "properties": { + "RealtimeMetricsSubscriptionConfig": { + "$ref": "#/definitions/RealtimeMetricsSubscriptionConfig", + "description": "A subscription configuration for additional CloudWatch metrics." + } + }, + "type": "object" + }, + "RealtimeMetricsSubscriptionConfig": { + "additionalProperties": false, + "description": "A subscription configuration for additional CloudWatch metrics.", + "properties": { + "RealtimeMetricsSubscriptionStatus": { + "description": "A flag that indicates whether additional CloudWatch metrics are enabled for a given CloudFront distribution.", + "enum": [ + "Enabled", + "Disabled" + ], + "type": "string" + } + }, + "required": [ + "RealtimeMetricsSubscriptionStatus" + ], + "type": "object" + } + }, + "description": "A monitoring subscription. This structure contains information about whether additional CloudWatch metrics are enabled for a given CloudFront distribution.", + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateMonitoringSubscription" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteMonitoringSubscription" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetMonitoringSubscription" + ] + } + }, + "primaryIdentifier": [ + "/properties/DistributionId" + ], + "properties": { + "DistributionId": { + "description": "The ID of the distribution that you are enabling metrics for.", + "type": "string" + }, + "MonitoringSubscription": { + "$ref": "#/definitions/MonitoringSubscription", + "description": "A subscription configuration for additional CloudWatch metrics." + } + }, + "required": [ + "DistributionId", + "MonitoringSubscription" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFront::MonitoringSubscription" +} diff --git a/src/schema/aws-cloudfront-originaccesscontrol.json b/src/schema/aws-cloudfront-originaccesscontrol.json index 3cc45a29..e531e1c8 100644 --- a/src/schema/aws-cloudfront-originaccesscontrol.json +++ b/src/schema/aws-cloudfront-originaccesscontrol.json @@ -1,89 +1,97 @@ -{ - "additionalProperties": false, - "definitions": { - "OriginAccessControlConfig": { - "additionalProperties": false, - "properties": { - "Description": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "OriginAccessControlOriginType": { - "pattern": "^(s3|mediastore|lambda|mediapackagev2)$", - "type": "string" - }, - "SigningBehavior": { - "pattern": "^(never|no-override|always)$", - "type": "string" - }, - "SigningProtocol": { - "pattern": "^(sigv4)$", - "type": "string" - } - }, - "required": [ - "Name", - "SigningProtocol", - "SigningBehavior", - "OriginAccessControlOriginType" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CloudFront::OriginAccessControl", - "handlers": { - "create": { - "permissions": [ - "cloudfront:CreateOriginAccessControl" - ] - }, - "delete": { - "permissions": [ - "cloudfront:DeleteOriginAccessControl", - "cloudfront:GetOriginAccessControl" - ] - }, - "list": { - "permissions": [ - "cloudfront:ListOriginAccessControls" - ] - }, - "read": { - "permissions": [ - "cloudfront:GetOriginAccessControl" - ] - }, - "update": { - "permissions": [ - "cloudfront:UpdateOriginAccessControl", - "cloudfront:GetOriginAccessControl" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "OriginAccessControlConfig": { - "$ref": "#/definitions/OriginAccessControlConfig" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "OriginAccessControlConfig" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CloudFront::OriginAccessControl" -} +{ + "additionalProperties": false, + "definitions": { + "OriginAccessControlConfig": { + "additionalProperties": false, + "description": "Creates a new origin access control in CloudFront. After you create an origin access control, you can add it to an origin in a CloudFront distribution so that CloudFront sends authenticated (signed) requests to the origin.\n This makes it possible to block public access to the origin, allowing viewers (users) to access the origin's content only through CloudFront.\n For more information about using a CloudFront origin access control, see [Restricting access to an origin](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-origin.html) in the *Amazon CloudFront Developer Guide*.", + "properties": { + "Description": { + "description": "A description of the origin access control.", + "type": "string" + }, + "Name": { + "description": "A name to identify the origin access control. You can specify up to 64 characters.", + "type": "string" + }, + "OriginAccessControlOriginType": { + "description": "The type of origin that this origin access control is for.", + "pattern": "^(s3|mediastore|lambda|mediapackagev2)$", + "type": "string" + }, + "SigningBehavior": { + "description": "Specifies which requests CloudFront signs (adds authentication information to). Specify ``always`` for the most common use case. For more information, see [origin access control advanced settings](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html#oac-advanced-settings) in the *Amazon CloudFront Developer Guide*.\n This field can have one of the following values:\n + ``always`` \u2013 CloudFront signs all origin requests, overwriting the ``Authorization`` header from the viewer request if one exists.\n + ``never`` \u2013 CloudFront doesn't sign any origin requests. This value turns off origin access control for all origins in all distributions that use this origin access control.\n + ``no-override`` \u2013 If the viewer request doesn't contain the ``Authorization`` header, then CloudFront signs the origin request. If the viewer request contains the ``Authorization`` header, then CloudFront doesn't sign the origin request and instead passes along the ``Authorization`` header from the viewer request. *WARNING: To pass along the Authorization header from the viewer request, you must add the Authorization header to a cache policy for all cache behaviors that use origins associated with this origin access control.*", + "pattern": "^(never|no-override|always)$", + "type": "string" + }, + "SigningProtocol": { + "description": "The signing protocol of the origin access control, which determines how CloudFront signs (authenticates) requests. The only valid value is ``sigv4``.", + "pattern": "^(sigv4)$", + "type": "string" + } + }, + "required": [ + "Name", + "SigningProtocol", + "SigningBehavior", + "OriginAccessControlOriginType" + ], + "type": "object" + } + }, + "description": "Creates a new origin access control in CloudFront. After you create an origin access control, you can add it to an origin in a CloudFront distribution so that CloudFront sends authenticated (signed) requests to the origin.\n This makes it possible to block public access to the origin, allowing viewers (users) to access the origin's content only through CloudFront.\n For more information about using a CloudFront origin access control, see [Restricting access to an origin](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-origin.html) in the *Amazon CloudFront Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateOriginAccessControl" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteOriginAccessControl", + "cloudfront:GetOriginAccessControl" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListOriginAccessControls" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetOriginAccessControl" + ] + }, + "update": { + "permissions": [ + "cloudfront:UpdateOriginAccessControl", + "cloudfront:GetOriginAccessControl" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "", + "type": "string" + }, + "OriginAccessControlConfig": { + "$ref": "#/definitions/OriginAccessControlConfig", + "description": "The origin access control." + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "OriginAccessControlConfig" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFront::OriginAccessControl" +} diff --git a/src/schema/aws-cloudfront-originrequestpolicy.json b/src/schema/aws-cloudfront-originrequestpolicy.json index 7fb9a02d..d01d0f48 100644 --- a/src/schema/aws-cloudfront-originrequestpolicy.json +++ b/src/schema/aws-cloudfront-originrequestpolicy.json @@ -1,150 +1,168 @@ -{ - "additionalProperties": false, - "definitions": { - "CookiesConfig": { - "additionalProperties": false, - "properties": { - "CookieBehavior": { - "pattern": "^(none|whitelist|all|allExcept)$", - "type": "string" - }, - "Cookies": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "CookieBehavior" - ], - "type": "object" - }, - "HeadersConfig": { - "additionalProperties": false, - "properties": { - "HeaderBehavior": { - "pattern": "^(none|whitelist|allViewer|allViewerAndWhitelistCloudFront|allExcept)$", - "type": "string" - }, - "Headers": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "HeaderBehavior" - ], - "type": "object" - }, - "OriginRequestPolicyConfig": { - "additionalProperties": false, - "properties": { - "Comment": { - "type": "string" - }, - "CookiesConfig": { - "$ref": "#/definitions/CookiesConfig" - }, - "HeadersConfig": { - "$ref": "#/definitions/HeadersConfig" - }, - "Name": { - "type": "string" - }, - "QueryStringsConfig": { - "$ref": "#/definitions/QueryStringsConfig" - } - }, - "required": [ - "Name", - "HeadersConfig", - "CookiesConfig", - "QueryStringsConfig" - ], - "type": "object" - }, - "QueryStringsConfig": { - "additionalProperties": false, - "properties": { - "QueryStringBehavior": { - "pattern": "^(none|whitelist|all|allExcept)$", - "type": "string" - }, - "QueryStrings": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "QueryStringBehavior" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CloudFront::OriginRequestPolicy", - "handlers": { - "create": { - "permissions": [ - "cloudfront:CreateOriginRequestPolicy" - ] - }, - "delete": { - "permissions": [ - "cloudfront:DeleteOriginRequestPolicy", - "cloudfront:GetOriginRequestPolicy" - ] - }, - "list": { - "permissions": [ - "cloudfront:ListOriginRequestPolicies" - ] - }, - "read": { - "permissions": [ - "cloudfront:GetOriginRequestPolicy" - ] - }, - "update": { - "permissions": [ - "cloudfront:UpdateOriginRequestPolicy", - "cloudfront:GetOriginRequestPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "LastModifiedTime": { - "type": "string" - }, - "OriginRequestPolicyConfig": { - "$ref": "#/definitions/OriginRequestPolicyConfig" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/LastModifiedTime" - ], - "required": [ - "OriginRequestPolicyConfig" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CloudFront::OriginRequestPolicy" -} +{ + "additionalProperties": false, + "definitions": { + "CookiesConfig": { + "additionalProperties": false, + "description": "An object that determines whether any cookies in viewer requests (and if so, which cookies) are included in requests that CloudFront sends to the origin.", + "properties": { + "CookieBehavior": { + "description": "Determines whether cookies in viewer requests are included in requests that CloudFront sends to the origin. Valid values are:\n + ``none`` \u2013 No cookies in viewer requests are included in requests that CloudFront sends to the origin. Even when this field is set to ``none``, any cookies that are listed in a ``CachePolicy`` *are* included in origin requests.\n + ``whitelist`` \u2013 Only the cookies in viewer requests that are listed in the ``CookieNames`` type are included in requests that CloudFront sends to the origin.\n + ``all`` \u2013 All cookies in viewer requests are included in requests that CloudFront sends to the origin.\n + ``allExcept`` \u2013 All cookies in viewer requests are included in requests that CloudFront sends to the origin, *except* for those listed in the ``CookieNames`` type, which are not included.", + "pattern": "^(none|whitelist|all|allExcept)$", + "type": "string" + }, + "Cookies": { + "description": "Contains a list of cookie names.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "CookieBehavior" + ], + "type": "object" + }, + "HeadersConfig": { + "additionalProperties": false, + "description": "An object that determines whether any HTTP headers (and if so, which headers) are included in requests that CloudFront sends to the origin.", + "properties": { + "HeaderBehavior": { + "description": "Determines whether any HTTP headers are included in requests that CloudFront sends to the origin. Valid values are:\n + ``none`` \u2013 No HTTP headers in viewer requests are included in requests that CloudFront sends to the origin. Even when this field is set to ``none``, any headers that are listed in a ``CachePolicy`` *are* included in origin requests.\n + ``whitelist`` \u2013 Only the HTTP headers that are listed in the ``Headers`` type are included in requests that CloudFront sends to the origin.\n + ``allViewer`` \u2013 All HTTP headers in viewer requests are included in requests that CloudFront sends to the origin.\n + ``allViewerAndWhitelistCloudFront`` \u2013 All HTTP headers in viewer requests and the additional CloudFront headers that are listed in the ``Headers`` type are included in requests that CloudFront sends to the origin. The additional headers are added by CloudFront.\n + ``allExcept`` \u2013 All HTTP headers in viewer requests are included in requests that CloudFront sends to the origin, *except* for those listed in the ``Headers`` type, which are not included.", + "pattern": "^(none|whitelist|allViewer|allViewerAndWhitelistCloudFront|allExcept)$", + "type": "string" + }, + "Headers": { + "description": "Contains a list of HTTP header names.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "HeaderBehavior" + ], + "type": "object" + }, + "OriginRequestPolicyConfig": { + "additionalProperties": false, + "description": "An origin request policy configuration.\n This configuration determines the values that CloudFront includes in requests that it sends to the origin. Each request that CloudFront sends to the origin includes the following:\n + The request body and the URL path (without the domain name) from the viewer request.\n + The headers that CloudFront automatically includes in every origin request, including ``Host``, ``User-Agent``, and ``X-Amz-Cf-Id``.\n + All HTTP headers, cookies, and URL query strings that are specified in the cache policy or the origin request policy. These can include items from the viewer request and, in the case of headers, additional ones that are added by CloudFront.\n \n CloudFront sends a request when it can't find an object in its cache that matches the request. If you want to send values to the origin and also include them in the cache key, use ``CachePolicy``.", + "properties": { + "Comment": { + "description": "A comment to describe the origin request policy. The comment cannot be longer than 128 characters.", + "type": "string" + }, + "CookiesConfig": { + "$ref": "#/definitions/CookiesConfig", + "description": "The cookies from viewer requests to include in origin requests." + }, + "HeadersConfig": { + "$ref": "#/definitions/HeadersConfig", + "description": "The HTTP headers to include in origin requests. These can include headers from viewer requests and additional headers added by CloudFront." + }, + "Name": { + "description": "A unique name to identify the origin request policy.", + "type": "string" + }, + "QueryStringsConfig": { + "$ref": "#/definitions/QueryStringsConfig", + "description": "The URL query strings from viewer requests to include in origin requests." + } + }, + "required": [ + "Name", + "HeadersConfig", + "CookiesConfig", + "QueryStringsConfig" + ], + "type": "object" + }, + "QueryStringsConfig": { + "additionalProperties": false, + "description": "An object that determines whether any URL query strings in viewer requests (and if so, which query strings) are included in requests that CloudFront sends to the origin.", + "properties": { + "QueryStringBehavior": { + "description": "Determines whether any URL query strings in viewer requests are included in requests that CloudFront sends to the origin. Valid values are:\n + ``none`` \u2013 No query strings in viewer requests are included in requests that CloudFront sends to the origin. Even when this field is set to ``none``, any query strings that are listed in a ``CachePolicy`` *are* included in origin requests.\n + ``whitelist`` \u2013 Only the query strings in viewer requests that are listed in the ``QueryStringNames`` type are included in requests that CloudFront sends to the origin.\n + ``all`` \u2013 All query strings in viewer requests are included in requests that CloudFront sends to the origin.\n + ``allExcept`` \u2013 All query strings in viewer requests are included in requests that CloudFront sends to the origin, *except* for those listed in the ``QueryStringNames`` type, which are not included.", + "pattern": "^(none|whitelist|all|allExcept)$", + "type": "string" + }, + "QueryStrings": { + "description": "Contains a list of query string names.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "QueryStringBehavior" + ], + "type": "object" + } + }, + "description": "An origin request policy.\n When it's attached to a cache behavior, the origin request policy determines the values that CloudFront includes in requests that it sends to the origin. Each request that CloudFront sends to the origin includes the following:\n + The request body and the URL path (without the domain name) from the viewer request.\n + The headers that CloudFront automatically includes in every origin request, including ``Host``, ``User-Agent``, and ``X-Amz-Cf-Id``.\n + All HTTP headers, cookies, and URL query strings that are specified in the cache policy or the origin request policy. These can include items from the viewer request and, in the case of headers, additional ones that are added by CloudFront.\n \n CloudFront sends a request when it can't find an object in its cache that matches the request. If you want to send values to the origin and also include them in the cache key, use ``CachePolicy``.", + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateOriginRequestPolicy" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteOriginRequestPolicy", + "cloudfront:GetOriginRequestPolicy" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListOriginRequestPolicies" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetOriginRequestPolicy" + ] + }, + "update": { + "permissions": [ + "cloudfront:UpdateOriginRequestPolicy", + "cloudfront:GetOriginRequestPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "", + "type": "string" + }, + "LastModifiedTime": { + "description": "", + "type": "string" + }, + "OriginRequestPolicyConfig": { + "$ref": "#/definitions/OriginRequestPolicyConfig", + "description": "The origin request policy configuration." + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/LastModifiedTime" + ], + "required": [ + "OriginRequestPolicyConfig" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFront::OriginRequestPolicy" +} diff --git a/src/schema/aws-cloudfront-publickey.json b/src/schema/aws-cloudfront-publickey.json index 675bfbc2..9b99e3e7 100644 --- a/src/schema/aws-cloudfront-publickey.json +++ b/src/schema/aws-cloudfront-publickey.json @@ -1,86 +1,94 @@ -{ - "additionalProperties": false, - "definitions": { - "PublicKeyConfig": { - "additionalProperties": false, - "properties": { - "CallerReference": { - "type": "string" - }, - "Comment": { - "type": "string" - }, - "EncodedKey": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "CallerReference", - "Name", - "EncodedKey" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CloudFront::PublicKey", - "handlers": { - "create": { - "permissions": [ - "cloudfront:CreatePublicKey" - ] - }, - "delete": { - "permissions": [ - "cloudfront:DeletePublicKey", - "cloudfront:GetPublicKey" - ] - }, - "list": { - "permissions": [ - "cloudfront:ListPublicKeys" - ] - }, - "read": { - "permissions": [ - "cloudfront:GetPublicKey" - ] - }, - "update": { - "permissions": [ - "cloudfront:UpdatePublicKey", - "cloudfront:GetPublicKey" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CreatedTime": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "PublicKeyConfig": { - "$ref": "#/definitions/PublicKeyConfig" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/CreatedTime" - ], - "required": [ - "PublicKeyConfig" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CloudFront::PublicKey" -} +{ + "additionalProperties": false, + "definitions": { + "PublicKeyConfig": { + "additionalProperties": false, + "description": "Configuration information about a public key that you can use with [signed URLs and signed cookies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html), or with [field-level encryption](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/field-level-encryption.html).", + "properties": { + "CallerReference": { + "description": "A string included in the request to help make sure that the request can't be replayed.", + "type": "string" + }, + "Comment": { + "description": "A comment to describe the public key. The comment cannot be longer than 128 characters.", + "type": "string" + }, + "EncodedKey": { + "description": "The public key that you can use with [signed URLs and signed cookies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html), or with [field-level encryption](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/field-level-encryption.html).", + "type": "string" + }, + "Name": { + "description": "A name to help identify the public key.", + "type": "string" + } + }, + "required": [ + "CallerReference", + "Name", + "EncodedKey" + ], + "type": "object" + } + }, + "description": "A public key that you can use with [signed URLs and signed cookies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html), or with [field-level encryption](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/field-level-encryption.html).", + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreatePublicKey" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeletePublicKey", + "cloudfront:GetPublicKey" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListPublicKeys" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetPublicKey" + ] + }, + "update": { + "permissions": [ + "cloudfront:UpdatePublicKey", + "cloudfront:GetPublicKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CreatedTime": { + "description": "", + "type": "string" + }, + "Id": { + "description": "", + "type": "string" + }, + "PublicKeyConfig": { + "$ref": "#/definitions/PublicKeyConfig", + "description": "Configuration information about a public key that you can use with [signed URLs and signed cookies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html), or with [field-level encryption](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/field-level-encryption.html)." + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/CreatedTime" + ], + "required": [ + "PublicKeyConfig" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFront::PublicKey" +} diff --git a/src/schema/aws-cloudfront-realtimelogconfig.json b/src/schema/aws-cloudfront-realtimelogconfig.json index 8d8e20c0..8d3de306 100644 --- a/src/schema/aws-cloudfront-realtimelogconfig.json +++ b/src/schema/aws-cloudfront-realtimelogconfig.json @@ -1,121 +1,132 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "EndPoint": { - "additionalProperties": false, - "properties": { - "KinesisStreamConfig": { - "$ref": "#/definitions/KinesisStreamConfig" - }, - "StreamType": { - "type": "string" - } - }, - "required": [ - "KinesisStreamConfig", - "StreamType" - ], - "type": "object" - }, - "KinesisStreamConfig": { - "additionalProperties": false, - "properties": { - "RoleArn": { - "type": "string" - }, - "StreamArn": { - "type": "string" - } - }, - "required": [ - "RoleArn", - "StreamArn" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CloudFront::RealtimeLogConfig", - "handlers": { - "create": { - "permissions": [ - "cloudfront:CreateRealtimeLogConfig", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "cloudfront:DeleteRealtimeLogConfig", - "cloudfront:GetRealtimeLogConfig" - ] - }, - "list": { - "permissions": [ - "cloudfront:ListRealtimeLogConfigs" - ] - }, - "read": { - "permissions": [ - "cloudfront:GetRealtimeLogConfig" - ] - }, - "update": { - "permissions": [ - "cloudfront:UpdateRealtimeLogConfig", - "cloudfront:GetRealtimeLogConfig", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "type": "string" - }, - "EndPoints": { - "items": { - "$ref": "#/definitions/EndPoint" - }, - "minItems": 1, - "type": "array", - "uniqueItems": false - }, - "Fields": { - "items": { - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": false - }, - "Name": { - "type": "string" - }, - "SamplingRate": { - "maximum": 100, - "minimum": 1, - "multipleOf": 1.0, - "type": "number" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name", - "EndPoints", - "Fields", - "SamplingRate" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CloudFront::RealtimeLogConfig" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "EndPoint": { + "additionalProperties": false, + "description": "Contains information about the Amazon Kinesis data stream where you are sending real-time log data in a real-time log configuration.", + "properties": { + "KinesisStreamConfig": { + "$ref": "#/definitions/KinesisStreamConfig", + "description": "Contains information about the Amazon Kinesis data stream where you are sending real-time log data." + }, + "StreamType": { + "description": "The type of data stream where you are sending real-time log data. The only valid value is ``Kinesis``.", + "type": "string" + } + }, + "required": [ + "KinesisStreamConfig", + "StreamType" + ], + "type": "object" + }, + "KinesisStreamConfig": { + "additionalProperties": false, + "description": "Contains information about the Amazon Kinesis data stream where you are sending real-time log data.", + "properties": { + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of an IAMlong (IAM) role that CloudFront can use to send real-time log data to your Kinesis data stream.\n For more information the IAM role, see [Real-time log configuration IAM role](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/real-time-logs.html#understand-real-time-log-config-iam-role) in the *Amazon CloudFront Developer Guide*.", + "type": "string" + }, + "StreamArn": { + "description": "The Amazon Resource Name (ARN) of the Kinesis data stream where you are sending real-time log data.", + "type": "string" + } + }, + "required": [ + "RoleArn", + "StreamArn" + ], + "type": "object" + } + }, + "description": "A real-time log configuration.", + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateRealtimeLogConfig", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteRealtimeLogConfig", + "cloudfront:GetRealtimeLogConfig" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListRealtimeLogConfigs" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetRealtimeLogConfig" + ] + }, + "update": { + "permissions": [ + "cloudfront:UpdateRealtimeLogConfig", + "cloudfront:GetRealtimeLogConfig", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "EndPoints": { + "description": "Contains information about the Amazon Kinesis data stream where you are sending real-time log data for this real-time log configuration.", + "items": { + "$ref": "#/definitions/EndPoint" + }, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "Fields": { + "description": "A list of fields that are included in each real-time log record. In an API response, the fields are provided in the same order in which they are sent to the Amazon Kinesis data stream.\n For more information about fields, see [Real-time log configuration fields](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/real-time-logs.html#understand-real-time-log-config-fields) in the *Amazon CloudFront Developer Guide*.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "Name": { + "description": "The unique name of this real-time log configuration.", + "type": "string" + }, + "SamplingRate": { + "description": "The sampling rate for this real-time log configuration. The sampling rate determines the percentage of viewer requests that are represented in the real-time log data. The sampling rate is an integer between 1 and 100, inclusive.", + "maximum": 100, + "minimum": 1, + "multipleOf": 1.0, + "type": "number" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name", + "EndPoints", + "Fields", + "SamplingRate" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFront::RealtimeLogConfig" +} diff --git a/src/schema/aws-cloudfront-responseheaderspolicy.json b/src/schema/aws-cloudfront-responseheaderspolicy.json index 842949d5..3d60fd37 100644 --- a/src/schema/aws-cloudfront-responseheaderspolicy.json +++ b/src/schema/aws-cloudfront-responseheaderspolicy.json @@ -1,406 +1,474 @@ -{ - "additionalProperties": false, - "definitions": { - "AccessControlAllowHeaders": { - "additionalProperties": false, - "properties": { - "Items": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "Items" - ], - "type": "object" - }, - "AccessControlAllowMethods": { - "additionalProperties": false, - "properties": { - "Items": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "Items" - ], - "type": "object" - }, - "AccessControlAllowOrigins": { - "additionalProperties": false, - "properties": { - "Items": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "Items" - ], - "type": "object" - }, - "AccessControlExposeHeaders": { - "additionalProperties": false, - "properties": { - "Items": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "Items" - ], - "type": "object" - }, - "ContentSecurityPolicy": { - "additionalProperties": false, - "properties": { - "ContentSecurityPolicy": { - "type": "string" - }, - "Override": { - "type": "boolean" - } - }, - "required": [ - "Override", - "ContentSecurityPolicy" - ], - "type": "object" - }, - "ContentTypeOptions": { - "additionalProperties": false, - "properties": { - "Override": { - "type": "boolean" - } - }, - "required": [ - "Override" - ], - "type": "object" - }, - "CorsConfig": { - "additionalProperties": false, - "properties": { - "AccessControlAllowCredentials": { - "type": "boolean" - }, - "AccessControlAllowHeaders": { - "$ref": "#/definitions/AccessControlAllowHeaders" - }, - "AccessControlAllowMethods": { - "$ref": "#/definitions/AccessControlAllowMethods" - }, - "AccessControlAllowOrigins": { - "$ref": "#/definitions/AccessControlAllowOrigins" - }, - "AccessControlExposeHeaders": { - "$ref": "#/definitions/AccessControlExposeHeaders" - }, - "AccessControlMaxAgeSec": { - "type": "integer" - }, - "OriginOverride": { - "type": "boolean" - } - }, - "required": [ - "AccessControlAllowOrigins", - "AccessControlAllowHeaders", - "AccessControlAllowMethods", - "AccessControlAllowCredentials", - "OriginOverride" - ], - "type": "object" - }, - "CustomHeader": { - "additionalProperties": false, - "properties": { - "Header": { - "type": "string" - }, - "Override": { - "type": "boolean" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Header", - "Value", - "Override" - ], - "type": "object" - }, - "CustomHeadersConfig": { - "additionalProperties": false, - "properties": { - "Items": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CustomHeader" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Items" - ], - "type": "object" - }, - "FrameOptions": { - "additionalProperties": false, - "properties": { - "FrameOption": { - "pattern": "^(DENY|SAMEORIGIN)$", - "type": "string" - }, - "Override": { - "type": "boolean" - } - }, - "required": [ - "Override", - "FrameOption" - ], - "type": "object" - }, - "ReferrerPolicy": { - "additionalProperties": false, - "properties": { - "Override": { - "type": "boolean" - }, - "ReferrerPolicy": { - "pattern": "^(no-referrer|no-referrer-when-downgrade|origin|origin-when-cross-origin|same-origin|strict-origin|strict-origin-when-cross-origin|unsafe-url)$", - "type": "string" - } - }, - "required": [ - "Override", - "ReferrerPolicy" - ], - "type": "object" - }, - "RemoveHeader": { - "additionalProperties": false, - "properties": { - "Header": { - "type": "string" - } - }, - "required": [ - "Header" - ], - "type": "object" - }, - "RemoveHeadersConfig": { - "additionalProperties": false, - "properties": { - "Items": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RemoveHeader" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Items" - ], - "type": "object" - }, - "ResponseHeadersPolicyConfig": { - "additionalProperties": false, - "properties": { - "Comment": { - "type": "string" - }, - "CorsConfig": { - "$ref": "#/definitions/CorsConfig" - }, - "CustomHeadersConfig": { - "$ref": "#/definitions/CustomHeadersConfig" - }, - "Name": { - "type": "string" - }, - "RemoveHeadersConfig": { - "$ref": "#/definitions/RemoveHeadersConfig" - }, - "SecurityHeadersConfig": { - "$ref": "#/definitions/SecurityHeadersConfig" - }, - "ServerTimingHeadersConfig": { - "$ref": "#/definitions/ServerTimingHeadersConfig" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "SecurityHeadersConfig": { - "additionalProperties": false, - "properties": { - "ContentSecurityPolicy": { - "$ref": "#/definitions/ContentSecurityPolicy" - }, - "ContentTypeOptions": { - "$ref": "#/definitions/ContentTypeOptions" - }, - "FrameOptions": { - "$ref": "#/definitions/FrameOptions" - }, - "ReferrerPolicy": { - "$ref": "#/definitions/ReferrerPolicy" - }, - "StrictTransportSecurity": { - "$ref": "#/definitions/StrictTransportSecurity" - }, - "XSSProtection": { - "$ref": "#/definitions/XSSProtection" - } - }, - "required": [], - "type": "object" - }, - "ServerTimingHeadersConfig": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "SamplingRate": { - "maximum": 100, - "minimum": 0, - "multipleOf": 0.0001, - "type": "number" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "StrictTransportSecurity": { - "additionalProperties": false, - "properties": { - "AccessControlMaxAgeSec": { - "type": "integer" - }, - "IncludeSubdomains": { - "type": "boolean" - }, - "Override": { - "type": "boolean" - }, - "Preload": { - "type": "boolean" - } - }, - "required": [ - "Override", - "AccessControlMaxAgeSec" - ], - "type": "object" - }, - "XSSProtection": { - "additionalProperties": false, - "properties": { - "ModeBlock": { - "type": "boolean" - }, - "Override": { - "type": "boolean" - }, - "Protection": { - "type": "boolean" - }, - "ReportUri": { - "type": "string" - } - }, - "required": [ - "Override", - "Protection" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CloudFront::ResponseHeadersPolicy", - "handlers": { - "create": { - "permissions": [ - "cloudfront:CreateResponseHeadersPolicy" - ] - }, - "delete": { - "permissions": [ - "cloudfront:DeleteResponseHeadersPolicy", - "cloudfront:GetResponseHeadersPolicy" - ] - }, - "list": { - "permissions": [ - "cloudfront:ListResponseHeadersPolicies" - ] - }, - "read": { - "permissions": [ - "cloudfront:GetResponseHeadersPolicy" - ] - }, - "update": { - "permissions": [ - "cloudfront:UpdateResponseHeadersPolicy", - "cloudfront:GetResponseHeadersPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "LastModifiedTime": { - "type": "string" - }, - "ResponseHeadersPolicyConfig": { - "$ref": "#/definitions/ResponseHeadersPolicyConfig" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/LastModifiedTime" - ], - "required": [ - "ResponseHeadersPolicyConfig" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CloudFront::ResponseHeadersPolicy" -} +{ + "additionalProperties": false, + "definitions": { + "AccessControlAllowHeaders": { + "additionalProperties": false, + "description": "A list of HTTP header names that CloudFront includes as values for the ``Access-Control-Allow-Headers`` HTTP response header.\n For more information about the ``Access-Control-Allow-Headers`` HTTP response header, see [Access-Control-Allow-Headers](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers) in the MDN Web Docs.", + "properties": { + "Items": { + "description": "The list of HTTP header names. You can specify ``*`` to allow all headers.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Items" + ], + "type": "object" + }, + "AccessControlAllowMethods": { + "additionalProperties": false, + "description": "A list of HTTP methods that CloudFront includes as values for the ``Access-Control-Allow-Methods`` HTTP response header.\n For more information about the ``Access-Control-Allow-Methods`` HTTP response header, see [Access-Control-Allow-Methods](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Methods) in the MDN Web Docs.", + "properties": { + "Items": { + "description": "The list of HTTP methods. Valid values are:\n + ``GET`` \n + ``DELETE`` \n + ``HEAD`` \n + ``OPTIONS`` \n + ``PATCH`` \n + ``POST`` \n + ``PUT`` \n + ``ALL`` \n \n ``ALL`` is a special value that includes all of the listed HTTP methods.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Items" + ], + "type": "object" + }, + "AccessControlAllowOrigins": { + "additionalProperties": false, + "description": "A list of origins (domain names) that CloudFront can use as the value for the ``Access-Control-Allow-Origin`` HTTP response header.\n For more information about the ``Access-Control-Allow-Origin`` HTTP response header, see [Access-Control-Allow-Origin](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin) in the MDN Web Docs.", + "properties": { + "Items": { + "description": "The list of origins (domain names). You can specify ``*`` to allow all origins.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Items" + ], + "type": "object" + }, + "AccessControlExposeHeaders": { + "additionalProperties": false, + "description": "A list of HTTP headers that CloudFront includes as values for the ``Access-Control-Expose-Headers`` HTTP response header.\n For more information about the ``Access-Control-Expose-Headers`` HTTP response header, see [Access-Control-Expose-Headers](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers) in the MDN Web Docs.", + "properties": { + "Items": { + "description": "The list of HTTP headers. You can specify ``*`` to expose all headers.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Items" + ], + "type": "object" + }, + "ContentSecurityPolicy": { + "additionalProperties": false, + "description": "The policy directives and their values that CloudFront includes as values for the ``Content-Security-Policy`` HTTP response header.\n For more information about the ``Content-Security-Policy`` HTTP response header, see [Content-Security-Policy](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy) in the MDN Web Docs.", + "properties": { + "ContentSecurityPolicy": { + "description": "The policy directives and their values that CloudFront includes as values for the ``Content-Security-Policy`` HTTP response header.\n For more information about the ``Content-Security-Policy`` HTTP response header, see [Content-Security-Policy](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy) in the MDN Web Docs.", + "type": "string" + }, + "Override": { + "description": "A Boolean that determines whether CloudFront overrides the ``Content-Security-Policy`` HTTP response header received from the origin with the one specified in this response headers policy.", + "type": "boolean" + } + }, + "required": [ + "Override", + "ContentSecurityPolicy" + ], + "type": "object" + }, + "ContentTypeOptions": { + "additionalProperties": false, + "description": "Determines whether CloudFront includes the ``X-Content-Type-Options`` HTTP response header with its value set to ``nosniff``.\n For more information about the ``X-Content-Type-Options`` HTTP response header, see [X-Content-Type-Options](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options) in the MDN Web Docs.", + "properties": { + "Override": { + "description": "A Boolean that determines whether CloudFront overrides the ``X-Content-Type-Options`` HTTP response header received from the origin with the one specified in this response headers policy.", + "type": "boolean" + } + }, + "required": [ + "Override" + ], + "type": "object" + }, + "CorsConfig": { + "additionalProperties": false, + "description": "A configuration for a set of HTTP response headers that are used for cross-origin resource sharing (CORS). CloudFront adds these headers to HTTP responses that it sends for CORS requests that match a cache behavior associated with this response headers policy.\n For more information about CORS, see [Cross-Origin Resource Sharing (CORS)](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) in the MDN Web Docs.", + "properties": { + "AccessControlAllowCredentials": { + "description": "A Boolean that CloudFront uses as the value for the ``Access-Control-Allow-Credentials`` HTTP response header.\n For more information about the ``Access-Control-Allow-Credentials`` HTTP response header, see [Access-Control-Allow-Credentials](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials) in the MDN Web Docs.", + "type": "boolean" + }, + "AccessControlAllowHeaders": { + "$ref": "#/definitions/AccessControlAllowHeaders", + "description": "A list of HTTP header names that CloudFront includes as values for the ``Access-Control-Allow-Headers`` HTTP response header.\n For more information about the ``Access-Control-Allow-Headers`` HTTP response header, see [Access-Control-Allow-Headers](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers) in the MDN Web Docs." + }, + "AccessControlAllowMethods": { + "$ref": "#/definitions/AccessControlAllowMethods", + "description": "A list of HTTP methods that CloudFront includes as values for the ``Access-Control-Allow-Methods`` HTTP response header.\n For more information about the ``Access-Control-Allow-Methods`` HTTP response header, see [Access-Control-Allow-Methods](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Methods) in the MDN Web Docs." + }, + "AccessControlAllowOrigins": { + "$ref": "#/definitions/AccessControlAllowOrigins", + "description": "A list of origins (domain names) that CloudFront can use as the value for the ``Access-Control-Allow-Origin`` HTTP response header.\n For more information about the ``Access-Control-Allow-Origin`` HTTP response header, see [Access-Control-Allow-Origin](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin) in the MDN Web Docs." + }, + "AccessControlExposeHeaders": { + "$ref": "#/definitions/AccessControlExposeHeaders", + "description": "A list of HTTP headers that CloudFront includes as values for the ``Access-Control-Expose-Headers`` HTTP response header.\n For more information about the ``Access-Control-Expose-Headers`` HTTP response header, see [Access-Control-Expose-Headers](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers) in the MDN Web Docs." + }, + "AccessControlMaxAgeSec": { + "description": "A number that CloudFront uses as the value for the ``Access-Control-Max-Age`` HTTP response header.\n For more information about the ``Access-Control-Max-Age`` HTTP response header, see [Access-Control-Max-Age](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Max-Age) in the MDN Web Docs.", + "type": "integer" + }, + "OriginOverride": { + "description": "A Boolean that determines whether CloudFront overrides HTTP response headers received from the origin with the ones specified in this response headers policy.", + "type": "boolean" + } + }, + "required": [ + "AccessControlAllowOrigins", + "AccessControlAllowHeaders", + "AccessControlAllowMethods", + "AccessControlAllowCredentials", + "OriginOverride" + ], + "type": "object" + }, + "CustomHeader": { + "additionalProperties": false, + "description": "An HTTP response header name and its value. CloudFront includes this header in HTTP responses that it sends for requests that match a cache behavior that's associated with this response headers policy.", + "properties": { + "Header": { + "description": "The HTTP response header name.", + "type": "string" + }, + "Override": { + "description": "A Boolean that determines whether CloudFront overrides a response header with the same name received from the origin with the header specified here.", + "type": "boolean" + }, + "Value": { + "description": "The value for the HTTP response header.", + "type": "string" + } + }, + "required": [ + "Header", + "Value", + "Override" + ], + "type": "object" + }, + "CustomHeadersConfig": { + "additionalProperties": false, + "description": "A list of HTTP response header names and their values. CloudFront includes these headers in HTTP responses that it sends for requests that match a cache behavior that's associated with this response headers policy.", + "properties": { + "Items": { + "description": "The list of HTTP response headers and their values.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomHeader" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Items" + ], + "type": "object" + }, + "FrameOptions": { + "additionalProperties": false, + "description": "Determines whether CloudFront includes the ``X-Frame-Options`` HTTP response header and the header's value.\n For more information about the ``X-Frame-Options`` HTTP response header, see [X-Frame-Options](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) in the MDN Web Docs.", + "properties": { + "FrameOption": { + "description": "The value of the ``X-Frame-Options`` HTTP response header. Valid values are ``DENY`` and ``SAMEORIGIN``.\n For more information about these values, see [X-Frame-Options](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) in the MDN Web Docs.", + "pattern": "^(DENY|SAMEORIGIN)$", + "type": "string" + }, + "Override": { + "description": "A Boolean that determines whether CloudFront overrides the ``X-Frame-Options`` HTTP response header received from the origin with the one specified in this response headers policy.", + "type": "boolean" + } + }, + "required": [ + "Override", + "FrameOption" + ], + "type": "object" + }, + "ReferrerPolicy": { + "additionalProperties": false, + "description": "Determines whether CloudFront includes the ``Referrer-Policy`` HTTP response header and the header's value.\n For more information about the ``Referrer-Policy`` HTTP response header, see [Referrer-Policy](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy) in the MDN Web Docs.", + "properties": { + "Override": { + "description": "A Boolean that determines whether CloudFront overrides the ``Referrer-Policy`` HTTP response header received from the origin with the one specified in this response headers policy.", + "type": "boolean" + }, + "ReferrerPolicy": { + "description": "Determines whether CloudFront includes the ``Referrer-Policy`` HTTP response header and the header's value.\n For more information about the ``Referrer-Policy`` HTTP response header, see [Referrer-Policy](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy) in the MDN Web Docs.", + "pattern": "^(no-referrer|no-referrer-when-downgrade|origin|origin-when-cross-origin|same-origin|strict-origin|strict-origin-when-cross-origin|unsafe-url)$", + "type": "string" + } + }, + "required": [ + "Override", + "ReferrerPolicy" + ], + "type": "object" + }, + "RemoveHeader": { + "additionalProperties": false, + "description": "The name of an HTTP header that CloudFront removes from HTTP responses to requests that match the cache behavior that this response headers policy is attached to.", + "properties": { + "Header": { + "description": "The HTTP header name.", + "type": "string" + } + }, + "required": [ + "Header" + ], + "type": "object" + }, + "RemoveHeadersConfig": { + "additionalProperties": false, + "description": "A list of HTTP header names that CloudFront removes from HTTP responses to requests that match the cache behavior that this response headers policy is attached to.", + "properties": { + "Items": { + "description": "The list of HTTP header names.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RemoveHeader" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Items" + ], + "type": "object" + }, + "ResponseHeadersPolicyConfig": { + "additionalProperties": false, + "description": "A response headers policy configuration.\n A response headers policy configuration contains metadata about the response headers policy, and configurations for sets of HTTP response headers.", + "properties": { + "Comment": { + "description": "A comment to describe the response headers policy.\n The comment cannot be longer than 128 characters.", + "type": "string" + }, + "CorsConfig": { + "$ref": "#/definitions/CorsConfig", + "description": "A configuration for a set of HTTP response headers that are used for cross-origin resource sharing (CORS)." + }, + "CustomHeadersConfig": { + "$ref": "#/definitions/CustomHeadersConfig", + "description": "A configuration for a set of custom HTTP response headers." + }, + "Name": { + "description": "A name to identify the response headers policy.\n The name must be unique for response headers policies in this AWS-account.", + "type": "string" + }, + "RemoveHeadersConfig": { + "$ref": "#/definitions/RemoveHeadersConfig", + "description": "A configuration for a set of HTTP headers to remove from the HTTP response." + }, + "SecurityHeadersConfig": { + "$ref": "#/definitions/SecurityHeadersConfig", + "description": "A configuration for a set of security-related HTTP response headers." + }, + "ServerTimingHeadersConfig": { + "$ref": "#/definitions/ServerTimingHeadersConfig", + "description": "A configuration for enabling the ``Server-Timing`` header in HTTP responses sent from CloudFront." + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "SecurityHeadersConfig": { + "additionalProperties": false, + "description": "A configuration for a set of security-related HTTP response headers. CloudFront adds these headers to HTTP responses that it sends for requests that match a cache behavior associated with this response headers policy.", + "properties": { + "ContentSecurityPolicy": { + "$ref": "#/definitions/ContentSecurityPolicy", + "description": "The policy directives and their values that CloudFront includes as values for the ``Content-Security-Policy`` HTTP response header.\n For more information about the ``Content-Security-Policy`` HTTP response header, see [Content-Security-Policy](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy) in the MDN Web Docs." + }, + "ContentTypeOptions": { + "$ref": "#/definitions/ContentTypeOptions", + "description": "Determines whether CloudFront includes the ``X-Content-Type-Options`` HTTP response header with its value set to ``nosniff``.\n For more information about the ``X-Content-Type-Options`` HTTP response header, see [X-Content-Type-Options](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options) in the MDN Web Docs." + }, + "FrameOptions": { + "$ref": "#/definitions/FrameOptions", + "description": "Determines whether CloudFront includes the ``X-Frame-Options`` HTTP response header and the header's value.\n For more information about the ``X-Frame-Options`` HTTP response header, see [X-Frame-Options](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) in the MDN Web Docs." + }, + "ReferrerPolicy": { + "$ref": "#/definitions/ReferrerPolicy", + "description": "Determines whether CloudFront includes the ``Referrer-Policy`` HTTP response header and the header's value.\n For more information about the ``Referrer-Policy`` HTTP response header, see [Referrer-Policy](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy) in the MDN Web Docs." + }, + "StrictTransportSecurity": { + "$ref": "#/definitions/StrictTransportSecurity", + "description": "Determines whether CloudFront includes the ``Strict-Transport-Security`` HTTP response header and the header's value.\n For more information about the ``Strict-Transport-Security`` HTTP response header, see [Security headers](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/understanding-response-headers-policies.html#understanding-response-headers-policies-security) in the *Amazon CloudFront Developer Guide* and [Strict-Transport-Security](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security) in the MDN Web Docs." + }, + "XSSProtection": { + "$ref": "#/definitions/XSSProtection", + "description": "Determines whether CloudFront includes the ``X-XSS-Protection`` HTTP response header and the header's value.\n For more information about the ``X-XSS-Protection`` HTTP response header, see [X-XSS-Protection](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection) in the MDN Web Docs." + } + }, + "required": [], + "type": "object" + }, + "ServerTimingHeadersConfig": { + "additionalProperties": false, + "description": "A configuration for enabling the ``Server-Timing`` header in HTTP responses sent from CloudFront.", + "properties": { + "Enabled": { + "description": "A Boolean that determines whether CloudFront adds the ``Server-Timing`` header to HTTP responses that it sends in response to requests that match a cache behavior that's associated with this response headers policy.", + "type": "boolean" + }, + "SamplingRate": { + "description": "A number 0\u2013100 (inclusive) that specifies the percentage of responses that you want CloudFront to add the ``Server-Timing`` header to. When you set the sampling rate to 100, CloudFront adds the ``Server-Timing`` header to the HTTP response for every request that matches the cache behavior that this response headers policy is attached to. When you set it to 50, CloudFront adds the header to 50% of the responses for requests that match the cache behavior. You can set the sampling rate to any number 0\u2013100 with up to four decimal places.", + "maximum": 100, + "minimum": 0, + "multipleOf": 0.0001, + "type": "number" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "StrictTransportSecurity": { + "additionalProperties": false, + "description": "Determines whether CloudFront includes the ``Strict-Transport-Security`` HTTP response header and the header's value.\n For more information about the ``Strict-Transport-Security`` HTTP response header, see [Strict-Transport-Security](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security) in the MDN Web Docs.", + "properties": { + "AccessControlMaxAgeSec": { + "description": "A number that CloudFront uses as the value for the ``max-age`` directive in the ``Strict-Transport-Security`` HTTP response header.", + "type": "integer" + }, + "IncludeSubdomains": { + "description": "A Boolean that determines whether CloudFront includes the ``includeSubDomains`` directive in the ``Strict-Transport-Security`` HTTP response header.", + "type": "boolean" + }, + "Override": { + "description": "A Boolean that determines whether CloudFront overrides the ``Strict-Transport-Security`` HTTP response header received from the origin with the one specified in this response headers policy.", + "type": "boolean" + }, + "Preload": { + "description": "A Boolean that determines whether CloudFront includes the ``preload`` directive in the ``Strict-Transport-Security`` HTTP response header.", + "type": "boolean" + } + }, + "required": [ + "Override", + "AccessControlMaxAgeSec" + ], + "type": "object" + }, + "XSSProtection": { + "additionalProperties": false, + "description": "Determines whether CloudFront includes the ``X-XSS-Protection`` HTTP response header and the header's value.\n For more information about the ``X-XSS-Protection`` HTTP response header, see [X-XSS-Protection](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection) in the MDN Web Docs.", + "properties": { + "ModeBlock": { + "description": "A Boolean that determines whether CloudFront includes the ``mode=block`` directive in the ``X-XSS-Protection`` header.\n For more information about this directive, see [X-XSS-Protection](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection) in the MDN Web Docs.", + "type": "boolean" + }, + "Override": { + "description": "A Boolean that determines whether CloudFront overrides the ``X-XSS-Protection`` HTTP response header received from the origin with the one specified in this response headers policy.", + "type": "boolean" + }, + "Protection": { + "description": "A Boolean that determines the value of the ``X-XSS-Protection`` HTTP response header. When this setting is ``true``, the value of the ``X-XSS-Protection`` header is ``1``. When this setting is ``false``, the value of the ``X-XSS-Protection`` header is ``0``.\n For more information about these settings, see [X-XSS-Protection](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection) in the MDN Web Docs.", + "type": "boolean" + }, + "ReportUri": { + "description": "A reporting URI, which CloudFront uses as the value of the ``report`` directive in the ``X-XSS-Protection`` header.\n You cannot specify a ``ReportUri`` when ``ModeBlock`` is ``true``.\n For more information about using a reporting URL, see [X-XSS-Protection](https://docs.aws.amazon.com/https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection) in the MDN Web Docs.", + "type": "string" + } + }, + "required": [ + "Override", + "Protection" + ], + "type": "object" + } + }, + "description": "A response headers policy.\n A response headers policy contains information about a set of HTTP response headers.\n After you create a response headers policy, you can use its ID to attach it to one or more cache behaviors in a CloudFront distribution. When it's attached to a cache behavior, the response headers policy affects the HTTP headers that CloudFront includes in HTTP responses to requests that match the cache behavior. CloudFront adds or removes response headers according to the configuration of the response headers policy.\n For more information, see [Adding or removing HTTP headers in CloudFront responses](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/modifying-response-headers.html) in the *Amazon CloudFront Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateResponseHeadersPolicy" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteResponseHeadersPolicy", + "cloudfront:GetResponseHeadersPolicy" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListResponseHeadersPolicies" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetResponseHeadersPolicy" + ] + }, + "update": { + "permissions": [ + "cloudfront:UpdateResponseHeadersPolicy", + "cloudfront:GetResponseHeadersPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "", + "type": "string" + }, + "LastModifiedTime": { + "description": "", + "type": "string" + }, + "ResponseHeadersPolicyConfig": { + "$ref": "#/definitions/ResponseHeadersPolicyConfig", + "description": "A response headers policy configuration." + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/LastModifiedTime" + ], + "required": [ + "ResponseHeadersPolicyConfig" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFront::ResponseHeadersPolicy" +} diff --git a/src/schema/aws-cloudfront-streamingdistribution.json b/src/schema/aws-cloudfront-streamingdistribution.json index 6c487ba9..40a48c26 100644 --- a/src/schema/aws-cloudfront-streamingdistribution.json +++ b/src/schema/aws-cloudfront-streamingdistribution.json @@ -1,144 +1,144 @@ -{ - "additionalProperties": false, - "definitions": { - "Logging": { - "additionalProperties": false, - "properties": { - "Bucket": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - }, - "Prefix": { - "type": "string" - } - }, - "required": [ - "Bucket", - "Enabled", - "Prefix" - ], - "type": "object" - }, - "S3Origin": { - "additionalProperties": false, - "properties": { - "DomainName": { - "type": "string" - }, - "OriginAccessIdentity": { - "type": "string" - } - }, - "required": [ - "DomainName", - "OriginAccessIdentity" - ], - "type": "object" - }, - "StreamingDistributionConfig": { - "additionalProperties": false, - "properties": { - "Aliases": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Comment": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - }, - "Logging": { - "$ref": "#/definitions/Logging" - }, - "PriceClass": { - "type": "string" - }, - "S3Origin": { - "$ref": "#/definitions/S3Origin" - }, - "TrustedSigners": { - "$ref": "#/definitions/TrustedSigners" - } - }, - "required": [ - "Comment", - "Enabled", - "S3Origin", - "TrustedSigners" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TrustedSigners": { - "additionalProperties": false, - "properties": { - "AwsAccountNumbers": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Enabled": { - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CloudFront::StreamingDistribution", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DomainName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "StreamingDistributionConfig": { - "$ref": "#/definitions/StreamingDistributionConfig" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/DomainName", - "/properties/Id" - ], - "required": [ - "StreamingDistributionConfig", - "Tags" - ], - "typeName": "AWS::CloudFront::StreamingDistribution" -} +{ + "additionalProperties": false, + "definitions": { + "Logging": { + "additionalProperties": false, + "properties": { + "Bucket": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Prefix": { + "type": "string" + } + }, + "required": [ + "Bucket", + "Enabled", + "Prefix" + ], + "type": "object" + }, + "S3Origin": { + "additionalProperties": false, + "properties": { + "DomainName": { + "type": "string" + }, + "OriginAccessIdentity": { + "type": "string" + } + }, + "required": [ + "DomainName", + "OriginAccessIdentity" + ], + "type": "object" + }, + "StreamingDistributionConfig": { + "additionalProperties": false, + "properties": { + "Aliases": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Comment": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Logging": { + "$ref": "#/definitions/Logging" + }, + "PriceClass": { + "type": "string" + }, + "S3Origin": { + "$ref": "#/definitions/S3Origin" + }, + "TrustedSigners": { + "$ref": "#/definitions/TrustedSigners" + } + }, + "required": [ + "Comment", + "Enabled", + "S3Origin", + "TrustedSigners" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TrustedSigners": { + "additionalProperties": false, + "properties": { + "AwsAccountNumbers": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::CloudFront::StreamingDistribution", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DomainName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "StreamingDistributionConfig": { + "$ref": "#/definitions/StreamingDistributionConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/DomainName", + "/properties/Id" + ], + "required": [ + "StreamingDistributionConfig", + "Tags" + ], + "typeName": "AWS::CloudFront::StreamingDistribution" +} diff --git a/src/schema/aws-cloudfront-vpcorigin.json b/src/schema/aws-cloudfront-vpcorigin.json new file mode 100644 index 00000000..1bfb7824 --- /dev/null +++ b/src/schema/aws-cloudfront-vpcorigin.json @@ -0,0 +1,181 @@ +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A complex type that contains ``Tag`` key and ``Tag`` value.", + "properties": { + "Key": { + "description": "A string that contains ``Tag`` key.\n The string length should be between 1 and 128 characters. Valid characters include ``a-z``, ``A-Z``, ``0-9``, space, and the special characters ``_ - . : / = + @``.", + "type": "string" + }, + "Value": { + "description": "A string that contains an optional ``Tag`` value.\n The string length should be between 0 and 256 characters. Valid characters include ``a-z``, ``A-Z``, ``0-9``, space, and the special characters ``_ - . : / = + @``.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VpcOriginEndpointConfig": { + "additionalProperties": false, + "description": "An Amazon CloudFront VPC origin endpoint configuration.", + "properties": { + "Arn": { + "description": "The ARN of the CloudFront VPC origin endpoint configuration.", + "type": "string" + }, + "HTTPPort": { + "default": 80, + "description": "The HTTP port for the CloudFront VPC origin endpoint configuration. The default value is ``80``.", + "type": "integer" + }, + "HTTPSPort": { + "default": 443, + "description": "The HTTPS port of the CloudFront VPC origin endpoint configuration. The default value is ``443``.", + "type": "integer" + }, + "Name": { + "description": "The name of the CloudFront VPC origin endpoint configuration.", + "type": "string" + }, + "OriginProtocolPolicy": { + "default": "match-viewer", + "description": "The origin protocol policy for the CloudFront VPC origin endpoint configuration.", + "type": "string" + }, + "OriginSSLProtocols": { + "default": [ + "TLSv1", + "SSLv3" + ], + "description": "", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Name", + "Arn" + ], + "type": "object" + } + }, + "description": "An Amazon CloudFront VPC origin.", + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateVpcOrigin", + "cloudfront:GetVpcOrigin", + "cloudfront:TagResource", + "ec2:DescribeInstances", + "elasticloadbalancing:DescribeLoadBalancers", + "ec2:DescribeInternetGateways", + "iam:CreateServiceLinkedRole", + "sts:AssumeRole" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteVpcOrigin", + "cloudfront:GetVpcOrigin", + "elasticloadbalancing:DescribeLoadBalancers", + "ec2:DescribeInstances", + "ec2:DescribeInternetGateways", + "iam:CreateServiceLinkedRole", + "sts:AssumeRole" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListVpcOrigins" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetVpcOrigin", + "cloudfront:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "cloudfront:UpdateVpcOrigin", + "cloudfront:GetVpcOrigin", + "cloudfront:TagResource", + "ec2:DescribeInstances", + "cloudfront:UntagResource", + "cloudfront:ListTagsForResource", + "elasticloadbalancing:DescribeLoadBalancers", + "ec2:DescribeInternetGateways", + "iam:CreateServiceLinkedRole", + "sts:AssumeRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "CreatedTime": { + "description": "", + "type": "string" + }, + "Id": { + "description": "", + "type": "string" + }, + "LastModifiedTime": { + "description": "", + "type": "string" + }, + "Status": { + "description": "", + "type": "string" + }, + "Tags": { + "description": "A complex type that contains zero or more ``Tag`` elements.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcOriginEndpointConfig": { + "$ref": "#/definitions/VpcOriginEndpointConfig", + "description": "The VPC origin endpoint configuration." + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/Status", + "/properties/CreatedTime", + "/properties/LastModifiedTime" + ], + "required": [ + "VpcOriginEndpointConfig" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "cloudfront:TagResource", + "cloudfront:UntagResource", + "cloudfront:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CloudFront::VpcOrigin" +} diff --git a/src/schema/aws-cloudtrail-channel.json b/src/schema/aws-cloudtrail-channel.json index 1f8d49e6..53dbf50b 100644 --- a/src/schema/aws-cloudtrail-channel.json +++ b/src/schema/aws-cloudtrail-channel.json @@ -1,165 +1,168 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Source" - ], - "definitions": { - "ChannelArn": { - "description": "The Amazon Resource Name (ARN) of a channel.", - "maxLength": 256, - "minLength": 3, - "pattern": "(^[a-zA-Z0-9._/\\-:]+$)", - "type": "string" - }, - "ChannelName": { - "description": "The name of the channel.", - "maxLength": 128, - "minLength": 3, - "pattern": "(^[a-zA-Z0-9._\\-]+$)", - "type": "string" - }, - "Destination": { - "additionalProperties": false, - "description": "The resource that receives events arriving from a channel.", - "properties": { - "Location": { - "description": "The ARN of a resource that receives events from a channel.", - "maxLength": 1024, - "minLength": 3, - "pattern": "(^[a-zA-Z0-9._/\\-:]+$)", - "type": "string" - }, - "Type": { - "description": "The type of destination for events arriving from a channel.", - "enum": [ - "EVENT_DATA_STORE" - ], - "type": "string" - } - }, - "required": [ - "Type", - "Location" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Timestamp": { - "type": "string" - }, - "UUID": { - "maxLength": 36, - "minLength": 36, - "pattern": "(^[a-f0-9\\-]+$)", - "type": "string" - } - }, - "description": "A channel receives events from a specific source (such as an on-premises storage solution or application, or a partner event data source), and delivers the events to one or more event data stores. You use channels to ingest events into CloudTrail from sources outside AWS.", - "handlers": { - "create": { - "permissions": [ - "CloudTrail:CreateChannel", - "CloudTrail:AddTags" - ] - }, - "delete": { - "permissions": [ - "CloudTrail:DeleteChannel" - ] - }, - "list": { - "permissions": [ - "CloudTrail:ListChannels" - ] - }, - "read": { - "permissions": [ - "CloudTrail:GetChannel", - "CloudTrail:ListChannels" - ] - }, - "update": { - "permissions": [ - "CloudTrail:UpdateChannel", - "CloudTrail:GetChannel", - "CloudTrail:AddTags", - "CloudTrail:RemoveTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/ChannelArn" - ], - "properties": { - "ChannelArn": { - "$ref": "#/definitions/ChannelArn" - }, - "Destinations": { - "description": "One or more resources to which events arriving through a channel are logged and stored.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Destination" - }, - "maxItems": 10, - "type": "array", - "uniqueItems": true - }, - "Name": { - "$ref": "#/definitions/ChannelName" - }, - "Source": { - "description": "The ARN of an on-premises storage solution or application, or a partner event source.", - "maxLength": 256, - "minLength": 1, - "pattern": "(.*)", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ChannelArn" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudtrail.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CloudTrail::Channel", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Source" + ], + "definitions": { + "ChannelArn": { + "description": "The Amazon Resource Name (ARN) of a channel.", + "maxLength": 256, + "minLength": 3, + "pattern": "(^[a-zA-Z0-9._/\\-:]+$)", + "type": "string" + }, + "ChannelName": { + "description": "The name of the channel.", + "maxLength": 128, + "minLength": 3, + "pattern": "(^[a-zA-Z0-9._\\-]+$)", + "type": "string" + }, + "Destination": { + "additionalProperties": false, + "description": "The resource that receives events arriving from a channel.", + "properties": { + "Location": { + "description": "The ARN of a resource that receives events from a channel.", + "maxLength": 1024, + "minLength": 3, + "pattern": "(^[a-zA-Z0-9._/\\-:]+$)", + "type": "string" + }, + "Type": { + "description": "The type of destination for events arriving from a channel.", + "enum": [ + "EVENT_DATA_STORE" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Location" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Timestamp": { + "type": "string" + }, + "UUID": { + "maxLength": 36, + "minLength": 36, + "pattern": "(^[a-f0-9\\-]+$)", + "type": "string" + } + }, + "description": "A channel receives events from a specific source (such as an on-premises storage solution or application, or a partner event data source), and delivers the events to one or more event data stores. You use channels to ingest events into CloudTrail from sources outside AWS.", + "handlers": { + "create": { + "permissions": [ + "CloudTrail:CreateChannel", + "CloudTrail:AddTags" + ] + }, + "delete": { + "permissions": [ + "CloudTrail:DeleteChannel" + ] + }, + "list": { + "permissions": [ + "CloudTrail:ListChannels" + ] + }, + "read": { + "permissions": [ + "CloudTrail:GetChannel", + "CloudTrail:ListChannels", + "CloudTrail:ListTags" + ] + }, + "update": { + "permissions": [ + "CloudTrail:UpdateChannel", + "CloudTrail:GetChannel", + "CloudTrail:AddTags", + "CloudTrail:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/ChannelArn" + ], + "properties": { + "ChannelArn": { + "$ref": "#/definitions/ChannelArn" + }, + "Destinations": { + "description": "One or more resources to which events arriving through a channel are logged and stored.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Destination" + }, + "maxItems": 10, + "type": "array", + "uniqueItems": true + }, + "Name": { + "$ref": "#/definitions/ChannelName" + }, + "Source": { + "description": "The ARN of an on-premises storage solution or application, or a partner event source.", + "maxLength": 256, + "minLength": 1, + "pattern": "(.*)", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ChannelArn" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudtrail.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "CloudTrail:AddTags", + "CloudTrail:RemoveTags", + "CloudTrail:ListTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CloudTrail::Channel" +} diff --git a/src/schema/aws-cloudtrail-dashboard.json b/src/schema/aws-cloudtrail-dashboard.json new file mode 100644 index 00000000..c7cb99a3 --- /dev/null +++ b/src/schema/aws-cloudtrail-dashboard.json @@ -0,0 +1,247 @@ +{ + "additionalProperties": false, + "definitions": { + "QueryParameter": { + "description": "The value of the QueryParameter. Possible values: $StartTime$, $EndTime$, $Period$.", + "maxLength": 1024, + "minLength": 1, + "pattern": ".*", + "type": "string" + }, + "RefreshSchedule": { + "additionalProperties": false, + "description": "Configures the automatic refresh schedule for the dashboard. Includes the frequency unit (DAYS or HOURS) and value, as well as the status (ENABLED or DISABLED) of the refresh schedule.", + "properties": { + "Frequency": { + "additionalProperties": false, + "properties": { + "Unit": { + "description": "The frequency unit. Supported values are HOURS and DAYS.", + "enum": [ + "HOURS", + "DAYS" + ], + "type": "string" + }, + "Value": { + "description": "The frequency value.", + "type": "integer" + } + }, + "required": [ + "Unit", + "Value" + ], + "type": "object" + }, + "Status": { + "description": "The status of the schedule. Supported values are ENABLED and DISABLED.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "TimeOfDay": { + "description": "StartTime of the automatic schedule refresh.", + "pattern": "^[0-9]{2}:[0-9]{2}", + "type": "string" + } + }, + "required": [], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "An arbitrary set of tags (key-value pairs) for this dashboard.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "Timestamp": { + "type": "string" + }, + "Widget": { + "additionalProperties": false, + "description": "The dashboard widget", + "properties": { + "QueryParameters": { + "description": "The placeholder keys in the QueryStatement. For example: $StartTime$, $EndTime$, $Period$.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/QueryParameter" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "QueryStatement": { + "description": "The SQL query statement on one or more event data stores.", + "maxLength": 10000, + "minLength": 1, + "pattern": "(?s).*", + "type": "string" + }, + "ViewProperties": { + "additionalProperties": false, + "description": "The view properties of the widget.", + "patternProperties": { + "^[a-zA-Z0-9._-]{3,128}$": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9._\\- ]+$", + "type": "string" + } + }, + "type": "object" + } + }, + "required": [ + "QueryStatement" + ], + "type": "object" + } + }, + "description": "The Amazon CloudTrail dashboard resource allows customers to manage managed dashboards and create custom dashboards. You can manually refresh custom and managed dashboards. For custom dashboards, you can also set up an automatic refresh schedule and modify dashboard widgets.", + "handlers": { + "create": { + "permissions": [ + "CloudTrail:CreateDashboard", + "CloudTrail:AddTags", + "CloudTrail:StartQuery", + "CloudTrail:StartDashboardRefresh" + ] + }, + "delete": { + "permissions": [ + "CloudTrail:DeleteDashboard", + "CloudTrail:UpdateDashboard" + ] + }, + "list": { + "permissions": [ + "CloudTrail:ListDashboards", + "CloudTrail:GetDashboard", + "CloudTrail:ListTags" + ] + }, + "read": { + "permissions": [ + "CloudTrail:GetDashboard", + "CloudTrail:ListDashboards", + "CloudTrail:ListTags" + ] + }, + "update": { + "permissions": [ + "CloudTrail:UpdateDashboard", + "CloudTrail:AddTags", + "CloudTrail:RemoveTags", + "CloudTrail:StartQuery", + "CloudTrail:StartDashboardRefresh" + ] + } + }, + "primaryIdentifier": [ + "/properties/DashboardArn" + ], + "properties": { + "CreatedTimestamp": { + "$ref": "#/definitions/Timestamp", + "description": "The timestamp of the dashboard creation." + }, + "DashboardArn": { + "description": "The ARN of the dashboard.", + "pattern": "^[a-zA-Z0-9._/\\-:]+$", + "type": "string" + }, + "Name": { + "description": "The name of the dashboard.", + "pattern": "^[a-zA-Z0-9_\\-]+$", + "type": "string" + }, + "RefreshSchedule": { + "$ref": "#/definitions/RefreshSchedule", + "description": "Configures the automatic refresh schedule for the dashboard. Includes the frequency unit (DAYS or HOURS) and value, as well as the status (ENABLED or DISABLED) of the refresh schedule." + }, + "Status": { + "description": "The status of the dashboard. Values are CREATING, CREATED, UPDATING, UPDATED and DELETING.", + "enum": [ + "CREATING", + "CREATED", + "UPDATING", + "UPDATED", + "DELETING" + ], + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TerminationProtectionEnabled": { + "description": "Indicates whether the dashboard is protected from termination.", + "type": "boolean" + }, + "Type": { + "description": "The type of the dashboard. Values are CUSTOM and MANAGED.", + "enum": [ + "MANAGED", + "CUSTOM" + ], + "type": "string" + }, + "UpdatedTimestamp": { + "$ref": "#/definitions/Timestamp", + "description": "The timestamp showing when the dashboard was updated, if applicable. UpdatedTimestamp is always either the same or newer than the time shown in CreatedTimestamp." + }, + "Widgets": { + "description": "List of widgets on the dashboard", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Widget" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/DashboardArn", + "/properties/CreatedTimestamp", + "/properties/UpdatedTimestamp", + "/properties/Status", + "/properties/Type" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudtrail.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "CloudTrail:AddTags", + "CloudTrail:RemoveTags", + "CloudTrail:ListTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CloudTrail::Dashboard" +} diff --git a/src/schema/aws-cloudtrail-eventdatastore.json b/src/schema/aws-cloudtrail-eventdatastore.json index ef96f7bf..eee37ab1 100644 --- a/src/schema/aws-cloudtrail-eventdatastore.json +++ b/src/schema/aws-cloudtrail-eventdatastore.json @@ -1,338 +1,350 @@ -{ - "additionalProperties": false, - "definitions": { - "AdvancedEventSelector": { - "additionalProperties": false, - "description": "Advanced event selectors let you create fine-grained selectors for the following AWS CloudTrail event record \ufb01elds. They help you control costs by logging only those events that are important to you.", - "properties": { - "FieldSelectors": { - "description": "Contains all selector statements in an advanced event selector.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AdvancedFieldSelector" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Name": { - "description": "An optional, descriptive name for an advanced event selector, such as \"Log data events for only two S3 buckets\".", - "maxLength": 1000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "FieldSelectors" - ], - "type": "object" - }, - "AdvancedFieldSelector": { - "additionalProperties": false, - "description": "A single selector statement in an advanced event selector.", - "properties": { - "EndsWith": { - "description": "An operator that includes events that match the last few characters of the event record field specified as the value of Field.", - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 1, - "pattern": "(.+)", - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Equals": { - "description": "An operator that includes events that match the exact value of the event record field specified as the value of Field. This is the only valid operator that you can use with the readOnly, eventCategory, and resources.type fields.", - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 1, - "pattern": "(.+)", - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Field": { - "description": "A field in an event record on which to filter events to be logged. Supported fields include readOnly, eventCategory, eventSource (for management events), eventName, resources.type, and resources.ARN.", - "maxLength": 1000, - "minLength": 1, - "pattern": "([\\w|\\d|\\.|_]+)", - "type": "string" - }, - "NotEndsWith": { - "description": "An operator that excludes events that match the last few characters of the event record field specified as the value of Field.", - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 1, - "pattern": "(.+)", - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "NotEquals": { - "description": "An operator that excludes events that match the exact value of the event record field specified as the value of Field.", - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 1, - "pattern": "(.+)", - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "NotStartsWith": { - "description": "An operator that excludes events that match the first few characters of the event record field specified as the value of Field.", - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 1, - "pattern": "(.+)", - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "StartsWith": { - "description": "An operator that includes events that match the first few characters of the event record field specified as the value of Field.", - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 1, - "pattern": "(.+)", - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Field" - ], - "type": "object" - }, - "InsightSelector": { - "additionalProperties": false, - "description": "A string that contains Insights types that are logged on an event data store.", - "properties": { - "InsightType": { - "description": "The type of Insights to log on an event data store.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "An arbitrary set of tags (key-value pairs) for this event data store.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Timestamp": { - "type": "string" - } - }, - "description": "A storage lake of event data against which you can run complex SQL-based queries. An event data store can include events that you have logged on your account from the last 7 to 2557 or 3653 days (about seven or ten years) depending on the selected BillingMode.", - "handlers": { - "create": { - "permissions": [ - "CloudTrail:CreateEventDataStore", - "CloudTrail:AddTags", - "CloudTrail:PutInsightSelectors", - "CloudTrail:EnableFederation", - "CloudTrail:GetEventDataStore", - "iam:PassRole", - "iam:GetRole", - "iam:CreateServiceLinkedRole", - "organizations:DescribeOrganization", - "organizations:ListAWSServiceAccessForOrganization", - "kms:GenerateDataKey", - "kms:Decrypt", - "glue:CreateDatabase", - "glue:CreateTable", - "glue:PassConnection", - "lakeformation:RegisterResource" - ] - }, - "delete": { - "permissions": [ - "CloudTrail:DeleteEventDataStore", - "CloudTrail:GetEventDataStore", - "CloudTrail:DisableFederation", - "glue:DeleteTable", - "lakeformation:DeregisterResource" - ] - }, - "list": { - "permissions": [ - "CloudTrail:ListEventDataStores", - "CloudTrail:GetEventDataStore", - "CloudTrail:GetInsightSelectors", - "CloudTrail:ListTags" - ] - }, - "read": { - "permissions": [ - "CloudTrail:GetEventDataStore", - "CloudTrail:ListEventDataStores", - "CloudTrail:GetInsightSelectors", - "CloudTrail:ListTags" - ] - }, - "update": { - "permissions": [ - "CloudTrail:UpdateEventDataStore", - "CloudTrail:RestoreEventDataStore", - "CloudTrail:AddTags", - "CloudTrail:RemoveTags", - "CloudTrail:StartEventDataStoreIngestion", - "CloudTrail:StopEventDataStoreIngestion", - "CloudTrail:GetEventDataStore", - "CloudTrail:PutInsightSelectors", - "CloudTrail:GetInsightSelectors", - "CloudTrail:EnableFederation", - "CloudTrail:DisableFederation", - "iam:PassRole", - "iam:GetRole", - "iam:CreateServiceLinkedRole", - "organizations:DescribeOrganization", - "organizations:ListAWSServiceAccessForOrganization", - "glue:CreateDatabase", - "glue:CreateTable", - "glue:PassConnection", - "lakeformation:RegisterResource", - "glue:DeleteTable", - "lakeformation:DeregisterResource", - "kms:DescribeKey" - ] - } - }, - "primaryIdentifier": [ - "/properties/EventDataStoreArn" - ], - "properties": { - "AdvancedEventSelectors": { - "description": "The advanced event selectors that were used to select events for the data store.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AdvancedEventSelector" - }, - "type": "array", - "uniqueItems": true - }, - "BillingMode": { - "description": "The mode that the event data store will use to charge for event storage.", - "type": "string" - }, - "CreatedTimestamp": { - "$ref": "#/definitions/Timestamp", - "description": "The timestamp of the event data store's creation." - }, - "EventDataStoreArn": { - "description": "The ARN of the event data store.", - "type": "string" - }, - "FederationEnabled": { - "description": "Indicates whether federation is enabled on an event data store.", - "type": "boolean" - }, - "FederationRoleArn": { - "description": "The ARN of the role used for event data store federation.", - "type": "string" - }, - "IngestionEnabled": { - "description": "Indicates whether the event data store is ingesting events.", - "type": "boolean" - }, - "InsightSelectors": { - "description": "Lets you enable Insights event logging by specifying the Insights selectors that you want to enable on an existing event data store. Both InsightSelectors and InsightsDestination need to have a value in order to enable Insights events on an event data store.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/InsightSelector" - }, - "type": "array", - "uniqueItems": true - }, - "InsightsDestination": { - "description": "Specifies the ARN of the event data store that will collect Insights events. Both InsightSelectors and InsightsDestination need to have a value in order to enable Insights events on an event data store", - "type": "string" - }, - "KmsKeyId": { - "description": "Specifies the KMS key ID to use to encrypt the events delivered by CloudTrail. The value can be an alias name prefixed by 'alias/', a fully specified ARN to an alias, a fully specified ARN to a key, or a globally unique identifier.", - "type": "string" - }, - "MultiRegionEnabled": { - "description": "Indicates whether the event data store includes events from all regions, or only from the region in which it was created.", - "type": "boolean" - }, - "Name": { - "description": "The name of the event data store.", - "type": "string" - }, - "OrganizationEnabled": { - "description": "Indicates that an event data store is collecting logged events for an organization.", - "type": "boolean" - }, - "RetentionPeriod": { - "description": "The retention period, in days.", - "type": "integer" - }, - "Status": { - "description": "The status of an event data store. Values are STARTING_INGESTION, ENABLED, STOPPING_INGESTION, STOPPED_INGESTION and PENDING_DELETION.", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TerminationProtectionEnabled": { - "description": "Indicates whether the event data store is protected from termination.", - "type": "boolean" - }, - "UpdatedTimestamp": { - "$ref": "#/definitions/Timestamp", - "description": "The timestamp showing when an event data store was updated, if applicable. UpdatedTimestamp is always either the same or newer than the time shown in CreatedTimestamp." - } - }, - "propertyTransform": { - "/properties/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KmsKeyId])" - }, - "readOnlyProperties": [ - "/properties/EventDataStoreArn", - "/properties/CreatedTimestamp", - "/properties/UpdatedTimestamp", - "/properties/Status", - "/properties/FederationStatus" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudtrail.git", - "typeName": "AWS::CloudTrail::EventDataStore" -} +{ + "additionalProperties": false, + "definitions": { + "AdvancedEventSelector": { + "additionalProperties": false, + "description": "Advanced event selectors let you create fine-grained selectors for the following AWS CloudTrail event record \ufb01elds. They help you control costs by logging only those events that are important to you.", + "properties": { + "FieldSelectors": { + "description": "Contains all selector statements in an advanced event selector.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AdvancedFieldSelector" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Name": { + "description": "An optional, descriptive name for an advanced event selector, such as \"Log data events for only two S3 buckets\".", + "maxLength": 1000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FieldSelectors" + ], + "type": "object" + }, + "AdvancedFieldSelector": { + "additionalProperties": false, + "description": "A single selector statement in an advanced event selector.", + "properties": { + "EndsWith": { + "description": "An operator that includes events that match the last few characters of the event record field specified as the value of Field.", + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 1, + "pattern": "(.+)", + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Equals": { + "description": "An operator that includes events that match the exact value of the event record field specified as the value of Field. This is the only valid operator that you can use with the readOnly, eventCategory, and resources.type fields.", + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 1, + "pattern": "(.+)", + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Field": { + "description": "A field in an event record on which to filter events to be logged. Supported fields include readOnly, eventCategory, eventSource (for management events), eventName, resources.type, and resources.ARN.", + "maxLength": 1000, + "minLength": 1, + "pattern": "([\\w|\\d|\\.|_]+)", + "type": "string" + }, + "NotEndsWith": { + "description": "An operator that excludes events that match the last few characters of the event record field specified as the value of Field.", + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 1, + "pattern": "(.+)", + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "NotEquals": { + "description": "An operator that excludes events that match the exact value of the event record field specified as the value of Field.", + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 1, + "pattern": "(.+)", + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "NotStartsWith": { + "description": "An operator that excludes events that match the first few characters of the event record field specified as the value of Field.", + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 1, + "pattern": "(.+)", + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartsWith": { + "description": "An operator that includes events that match the first few characters of the event record field specified as the value of Field.", + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 1, + "pattern": "(.+)", + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Field" + ], + "type": "object" + }, + "InsightSelector": { + "additionalProperties": false, + "description": "A string that contains Insights types that are logged on an event data store.", + "properties": { + "InsightType": { + "description": "The type of Insights to log on an event data store.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "An arbitrary set of tags (key-value pairs) for this event data store.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "Timestamp": { + "type": "string" + } + }, + "description": "A storage lake of event data against which you can run complex SQL-based queries. An event data store can include events that you have logged on your account from the last 7 to 2557 or 3653 days (about seven or ten years) depending on the selected BillingMode.", + "handlers": { + "create": { + "permissions": [ + "CloudTrail:CreateEventDataStore", + "CloudTrail:AddTags", + "CloudTrail:PutInsightSelectors", + "CloudTrail:EnableFederation", + "CloudTrail:GetEventDataStore", + "iam:PassRole", + "iam:GetRole", + "iam:CreateServiceLinkedRole", + "organizations:DescribeOrganization", + "organizations:ListAWSServiceAccessForOrganization", + "kms:GenerateDataKey", + "kms:Decrypt", + "glue:CreateDatabase", + "glue:CreateTable", + "glue:PassConnection", + "lakeformation:RegisterResource" + ] + }, + "delete": { + "permissions": [ + "CloudTrail:DeleteEventDataStore", + "CloudTrail:GetEventDataStore", + "CloudTrail:DisableFederation", + "glue:DeleteTable", + "lakeformation:DeregisterResource" + ] + }, + "list": { + "permissions": [ + "CloudTrail:ListEventDataStores", + "CloudTrail:GetEventDataStore", + "CloudTrail:GetInsightSelectors", + "CloudTrail:ListTags" + ] + }, + "read": { + "permissions": [ + "CloudTrail:GetEventDataStore", + "CloudTrail:ListEventDataStores", + "CloudTrail:GetInsightSelectors", + "CloudTrail:ListTags" + ] + }, + "update": { + "permissions": [ + "CloudTrail:UpdateEventDataStore", + "CloudTrail:RestoreEventDataStore", + "CloudTrail:AddTags", + "CloudTrail:RemoveTags", + "CloudTrail:StartEventDataStoreIngestion", + "CloudTrail:StopEventDataStoreIngestion", + "CloudTrail:GetEventDataStore", + "CloudTrail:PutInsightSelectors", + "CloudTrail:GetInsightSelectors", + "CloudTrail:EnableFederation", + "CloudTrail:DisableFederation", + "iam:PassRole", + "iam:GetRole", + "iam:CreateServiceLinkedRole", + "organizations:DescribeOrganization", + "organizations:ListAWSServiceAccessForOrganization", + "glue:CreateDatabase", + "glue:CreateTable", + "glue:PassConnection", + "lakeformation:RegisterResource", + "glue:DeleteTable", + "lakeformation:DeregisterResource", + "kms:DescribeKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/EventDataStoreArn" + ], + "properties": { + "AdvancedEventSelectors": { + "description": "The advanced event selectors that were used to select events for the data store.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AdvancedEventSelector" + }, + "type": "array", + "uniqueItems": true + }, + "BillingMode": { + "description": "The mode that the event data store will use to charge for event storage.", + "type": "string" + }, + "CreatedTimestamp": { + "$ref": "#/definitions/Timestamp", + "description": "The timestamp of the event data store's creation." + }, + "EventDataStoreArn": { + "description": "The ARN of the event data store.", + "type": "string" + }, + "FederationEnabled": { + "description": "Indicates whether federation is enabled on an event data store.", + "type": "boolean" + }, + "FederationRoleArn": { + "description": "The ARN of the role used for event data store federation.", + "type": "string" + }, + "IngestionEnabled": { + "description": "Indicates whether the event data store is ingesting events.", + "type": "boolean" + }, + "InsightSelectors": { + "description": "Lets you enable Insights event logging by specifying the Insights selectors that you want to enable on an existing event data store. Both InsightSelectors and InsightsDestination need to have a value in order to enable Insights events on an event data store.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InsightSelector" + }, + "type": "array", + "uniqueItems": true + }, + "InsightsDestination": { + "description": "Specifies the ARN of the event data store that will collect Insights events. Both InsightSelectors and InsightsDestination need to have a value in order to enable Insights events on an event data store", + "type": "string" + }, + "KmsKeyId": { + "description": "Specifies the KMS key ID to use to encrypt the events delivered by CloudTrail. The value can be an alias name prefixed by 'alias/', a fully specified ARN to an alias, a fully specified ARN to a key, or a globally unique identifier.", + "type": "string" + }, + "MultiRegionEnabled": { + "description": "Indicates whether the event data store includes events from all regions, or only from the region in which it was created.", + "type": "boolean" + }, + "Name": { + "description": "The name of the event data store.", + "type": "string" + }, + "OrganizationEnabled": { + "description": "Indicates that an event data store is collecting logged events for an organization.", + "type": "boolean" + }, + "RetentionPeriod": { + "description": "The retention period, in days.", + "type": "integer" + }, + "Status": { + "description": "The status of an event data store. Values are STARTING_INGESTION, ENABLED, STOPPING_INGESTION, STOPPED_INGESTION and PENDING_DELETION.", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TerminationProtectionEnabled": { + "description": "Indicates whether the event data store is protected from termination.", + "type": "boolean" + }, + "UpdatedTimestamp": { + "$ref": "#/definitions/Timestamp", + "description": "The timestamp showing when an event data store was updated, if applicable. UpdatedTimestamp is always either the same or newer than the time shown in CreatedTimestamp." + } + }, + "propertyTransform": { + "/properties/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KmsKeyId])" + }, + "readOnlyProperties": [ + "/properties/EventDataStoreArn", + "/properties/CreatedTimestamp", + "/properties/UpdatedTimestamp", + "/properties/Status", + "/properties/FederationStatus" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudtrail.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "CloudTrail:AddTags", + "CloudTrail:RemoveTags", + "CloudTrail:ListTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CloudTrail::EventDataStore" +} diff --git a/src/schema/aws-cloudtrail-resourcepolicy.json b/src/schema/aws-cloudtrail-resourcepolicy.json index 69e57575..6f2bee2b 100644 --- a/src/schema/aws-cloudtrail-resourcepolicy.json +++ b/src/schema/aws-cloudtrail-resourcepolicy.json @@ -1,56 +1,56 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceArn" - ], - "description": "Resource Type definition for AWS::CloudTrail::ResourcePolicy", - "handlers": { - "create": { - "permissions": [ - "CloudTrail:PutResourcePolicy", - "CloudTrail:GetResourcePolicy" - ] - }, - "delete": { - "permissions": [ - "CloudTrail:DeleteResourcePolicy" - ] - }, - "read": { - "permissions": [ - "CloudTrail:GetResourcePolicy" - ] - }, - "update": { - "permissions": [ - "CloudTrail:PutResourcePolicy", - "CloudTrail:GetResourcePolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/ResourceArn" - ], - "properties": { - "ResourceArn": { - "description": "The ARN of the AWS CloudTrail resource to which the policy applies.", - "type": "string" - }, - "ResourcePolicy": { - "description": "A policy document containing permissions to add to the specified resource. In IAM, you must provide policy documents in JSON format. However, in CloudFormation you can provide the policy in JSON or YAML format because CloudFormation converts YAML to JSON before submitting it to IAM.", - "type": [ - "object", - "string" - ] - } - }, - "required": [ - "ResourceArn", - "ResourcePolicy" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudtrail.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::CloudTrail::ResourcePolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceArn" + ], + "description": "Resource Type definition for AWS::CloudTrail::ResourcePolicy", + "handlers": { + "create": { + "permissions": [ + "CloudTrail:PutResourcePolicy", + "CloudTrail:GetResourcePolicy" + ] + }, + "delete": { + "permissions": [ + "CloudTrail:DeleteResourcePolicy" + ] + }, + "read": { + "permissions": [ + "CloudTrail:GetResourcePolicy" + ] + }, + "update": { + "permissions": [ + "CloudTrail:PutResourcePolicy", + "CloudTrail:GetResourcePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/ResourceArn" + ], + "properties": { + "ResourceArn": { + "description": "The ARN of the AWS CloudTrail resource to which the policy applies.", + "type": "string" + }, + "ResourcePolicy": { + "description": "A policy document containing permissions to add to the specified resource. In IAM, you must provide policy documents in JSON format. However, in CloudFormation you can provide the policy in JSON or YAML format because CloudFormation converts YAML to JSON before submitting it to IAM.", + "type": [ + "object", + "string" + ] + } + }, + "required": [ + "ResourceArn", + "ResourcePolicy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudtrail.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::CloudTrail::ResourcePolicy" +} diff --git a/src/schema/aws-cloudtrail-trail.json b/src/schema/aws-cloudtrail-trail.json index dcb475cd..aa86eec7 100644 --- a/src/schema/aws-cloudtrail-trail.json +++ b/src/schema/aws-cloudtrail-trail.json @@ -1,398 +1,404 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TrailName" - ], - "definitions": { - "AdvancedEventSelector": { - "additionalProperties": false, - "description": "Advanced event selectors let you create fine-grained selectors for the following AWS CloudTrail event record \ufb01elds. They help you control costs by logging only those events that are important to you.", - "properties": { - "FieldSelectors": { - "description": "Contains all selector statements in an advanced event selector.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AdvancedFieldSelector" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Name": { - "description": "An optional, descriptive name for an advanced event selector, such as \"Log data events for only two S3 buckets\".", - "maxLength": 1000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "FieldSelectors" - ], - "type": "object" - }, - "AdvancedFieldSelector": { - "additionalProperties": false, - "description": "A single selector statement in an advanced event selector.", - "properties": { - "EndsWith": { - "description": "An operator that includes events that match the last few characters of the event record field specified as the value of Field.", - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 1, - "pattern": "(.+)", - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Equals": { - "description": "An operator that includes events that match the exact value of the event record field specified as the value of Field. This is the only valid operator that you can use with the readOnly, eventCategory, and resources.type fields.", - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 1, - "pattern": "(.+)", - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Field": { - "description": "A field in an event record on which to filter events to be logged. Supported fields include readOnly, eventCategory, eventSource (for management events), eventName, resources.type, and resources.ARN.", - "maxLength": 1000, - "minLength": 1, - "pattern": "([\\w|\\d|\\.|_]+)", - "type": "string" - }, - "NotEndsWith": { - "description": "An operator that excludes events that match the last few characters of the event record field specified as the value of Field.", - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 1, - "pattern": "(.+)", - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "NotEquals": { - "description": "An operator that excludes events that match the exact value of the event record field specified as the value of Field.", - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 1, - "pattern": "(.+)", - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "NotStartsWith": { - "description": "An operator that excludes events that match the first few characters of the event record field specified as the value of Field.", - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 1, - "pattern": "(.+)", - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "StartsWith": { - "description": "An operator that includes events that match the first few characters of the event record field specified as the value of Field.", - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 1, - "pattern": "(.+)", - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Field" - ], - "type": "object" - }, - "DataResource": { - "additionalProperties": false, - "description": "CloudTrail supports data event logging for Amazon S3 objects and AWS Lambda functions. You can specify up to 250 resources for an individual event selector, but the total number of data resources cannot exceed 250 across all event selectors in a trail. This limit does not apply if you configure resource logging for all data events.", - "properties": { - "Type": { - "description": "The resource type in which you want to log data events. You can specify AWS::S3::Object or AWS::Lambda::Function resources.", - "type": "string" - }, - "Values": { - "description": "An array of Amazon Resource Name (ARN) strings or partial ARN strings for the specified objects.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EventSelector": { - "additionalProperties": false, - "description": "The type of email sending events to publish to the event destination.", - "properties": { - "DataResources": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DataResource" - }, - "type": "array", - "uniqueItems": true - }, - "ExcludeManagementEventSources": { - "description": "An optional list of service event sources from which you do not want management events to be logged on your trail. In this release, the list can be empty (disables the filter), or it can filter out AWS Key Management Service events by containing \"kms.amazonaws.com\". By default, ExcludeManagementEventSources is empty, and AWS KMS events are included in events that are logged to your trail.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "IncludeManagementEvents": { - "description": "Specify if you want your event selector to include management events for your trail.", - "type": "boolean" - }, - "ReadWriteType": { - "description": "Specify if you want your trail to log read-only events, write-only events, or all. For example, the EC2 GetConsoleOutput is a read-only API operation and RunInstances is a write-only API operation.", - "enum": [ - "All", - "ReadOnly", - "WriteOnly" - ], - "type": "string" - } - }, - "type": "object" - }, - "InsightSelector": { - "additionalProperties": false, - "description": "A string that contains insight types that are logged on a trail.", - "properties": { - "InsightType": { - "description": "The type of insight to log on a trail.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "An arbitrary set of tags (key-value pairs) for this trail.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Creates a trail that specifies the settings for delivery of log data to an Amazon S3 bucket. A maximum of five trails can exist in a region, irrespective of the region in which they were created.", - "handlers": { - "create": { - "permissions": [ - "CloudTrail:CreateTrail", - "CloudTrail:StartLogging", - "CloudTrail:AddTags", - "CloudTrail:PutEventSelectors", - "CloudTrail:PutInsightSelectors", - "iam:GetRole", - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "organizations:DescribeOrganization", - "organizations:ListAWSServiceAccessForOrganization" - ] - }, - "delete": { - "permissions": [ - "CloudTrail:DeleteTrail" - ] - }, - "list": { - "permissions": [ - "CloudTrail:ListTrails", - "CloudTrail:GetTrail", - "CloudTrail:GetTrailStatus", - "CloudTrail:ListTags", - "CloudTrail:GetEventSelectors", - "CloudTrail:GetInsightSelectors", - "CloudTrail:DescribeTrails" - ] - }, - "read": { - "permissions": [ - "CloudTrail:GetTrail", - "CloudTrail:GetTrailStatus", - "CloudTrail:ListTags", - "CloudTrail:GetEventSelectors", - "CloudTrail:GetInsightSelectors", - "CloudTrail:DescribeTrails" - ] - }, - "update": { - "permissions": [ - "CloudTrail:UpdateTrail", - "CloudTrail:StartLogging", - "CloudTrail:StopLogging", - "CloudTrail:AddTags", - "CloudTrail:RemoveTags", - "CloudTrail:PutEventSelectors", - "CloudTrail:PutInsightSelectors", - "iam:GetRole", - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "organizations:DescribeOrganization", - "organizations:ListAWSServiceAccessForOrganization", - "CloudTrail:GetTrail", - "CloudTrail:DescribeTrails" - ] - } - }, - "primaryIdentifier": [ - "/properties/TrailName" - ], - "properties": { - "AdvancedEventSelectors": { - "description": "The advanced event selectors that were used to select events for the data store.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AdvancedEventSelector" - }, - "type": "array", - "uniqueItems": true - }, - "Arn": { - "type": "string" - }, - "CloudWatchLogsLogGroupArn": { - "description": "Specifies a log group name using an Amazon Resource Name (ARN), a unique identifier that represents the log group to which CloudTrail logs will be delivered. Not required unless you specify CloudWatchLogsRoleArn.", - "type": "string" - }, - "CloudWatchLogsRoleArn": { - "description": "Specifies the role for the CloudWatch Logs endpoint to assume to write to a user's log group.", - "type": "string" - }, - "EnableLogFileValidation": { - "description": "Specifies whether log file validation is enabled. The default is false.", - "type": "boolean" - }, - "EventSelectors": { - "description": "Use event selectors to further specify the management and data event settings for your trail. By default, trails created without specific event selectors will be configured to log all read and write management events, and no data events. When an event occurs in your account, CloudTrail evaluates the event selector for all trails. For each trail, if the event matches any event selector, the trail processes and logs the event. If the event doesn't match any event selector, the trail doesn't log the event. You can configure up to five event selectors for a trail.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EventSelector" - }, - "maxItems": 5, - "type": "array", - "uniqueItems": true - }, - "IncludeGlobalServiceEvents": { - "description": "Specifies whether the trail is publishing events from global services such as IAM to the log files.", - "type": "boolean" - }, - "InsightSelectors": { - "description": "Lets you enable Insights event logging by specifying the Insights selectors that you want to enable on an existing trail.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/InsightSelector" - }, - "type": "array", - "uniqueItems": true - }, - "IsLogging": { - "description": "Whether the CloudTrail is currently logging AWS API calls.", - "type": "boolean" - }, - "IsMultiRegionTrail": { - "description": "Specifies whether the trail applies only to the current region or to all regions. The default is false. If the trail exists only in the current region and this value is set to true, shadow trails (replications of the trail) will be created in the other regions. If the trail exists in all regions and this value is set to false, the trail will remain in the region where it was created, and its shadow trails in other regions will be deleted. As a best practice, consider using trails that log events in all regions.", - "type": "boolean" - }, - "IsOrganizationTrail": { - "description": "Specifies whether the trail is created for all accounts in an organization in AWS Organizations, or only for the current AWS account. The default is false, and cannot be true unless the call is made on behalf of an AWS account that is the master account for an organization in AWS Organizations.", - "type": "boolean" - }, - "KMSKeyId": { - "description": "Specifies the KMS key ID to use to encrypt the logs delivered by CloudTrail. The value can be an alias name prefixed by 'alias/', a fully specified ARN to an alias, a fully specified ARN to a key, or a globally unique identifier.", - "type": "string" - }, - "S3BucketName": { - "description": "Specifies the name of the Amazon S3 bucket designated for publishing log files. See Amazon S3 Bucket Naming Requirements.", - "type": "string" - }, - "S3KeyPrefix": { - "description": "Specifies the Amazon S3 key prefix that comes after the name of the bucket you have designated for log file delivery. For more information, see Finding Your CloudTrail Log Files. The maximum length is 200 characters.", - "maxLength": 200, - "type": "string" - }, - "SnsTopicArn": { - "type": "string" - }, - "SnsTopicName": { - "description": "Specifies the name of the Amazon SNS topic defined for notification of log file delivery. The maximum length is 256 characters.", - "maxLength": 256, - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TrailName": { - "maxLength": 128, - "minLength": 3, - "pattern": "(^[a-zA-Z0-9]$)|(^[a-zA-Z0-9]([a-zA-Z0-9\\._-])*[a-zA-Z0-9]$)", - "type": "string" - } - }, - "propertyTransform": { - "/properties/KMSKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KMSKeyId])" - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/SnsTopicArn" - ], - "required": [ - "S3BucketName", - "IsLogging" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudtrail.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CloudTrail::Trail" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TrailName" + ], + "definitions": { + "AdvancedEventSelector": { + "additionalProperties": false, + "description": "Advanced event selectors let you create fine-grained selectors for the following AWS CloudTrail event record \ufb01elds. They help you control costs by logging only those events that are important to you.", + "properties": { + "FieldSelectors": { + "description": "Contains all selector statements in an advanced event selector.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AdvancedFieldSelector" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Name": { + "description": "An optional, descriptive name for an advanced event selector, such as \"Log data events for only two S3 buckets\".", + "maxLength": 1000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FieldSelectors" + ], + "type": "object" + }, + "AdvancedFieldSelector": { + "additionalProperties": false, + "description": "A single selector statement in an advanced event selector.", + "properties": { + "EndsWith": { + "description": "An operator that includes events that match the last few characters of the event record field specified as the value of Field.", + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 1, + "pattern": "(.+)", + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Equals": { + "description": "An operator that includes events that match the exact value of the event record field specified as the value of Field. This is the only valid operator that you can use with the readOnly, eventCategory, and resources.type fields.", + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 1, + "pattern": "(.+)", + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Field": { + "description": "A field in an event record on which to filter events to be logged. Supported fields include readOnly, eventCategory, eventSource (for management events), eventName, resources.type, and resources.ARN.", + "maxLength": 1000, + "minLength": 1, + "pattern": "([\\w|\\d|\\.|_]+)", + "type": "string" + }, + "NotEndsWith": { + "description": "An operator that excludes events that match the last few characters of the event record field specified as the value of Field.", + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 1, + "pattern": "(.+)", + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "NotEquals": { + "description": "An operator that excludes events that match the exact value of the event record field specified as the value of Field.", + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 1, + "pattern": "(.+)", + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "NotStartsWith": { + "description": "An operator that excludes events that match the first few characters of the event record field specified as the value of Field.", + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 1, + "pattern": "(.+)", + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartsWith": { + "description": "An operator that includes events that match the first few characters of the event record field specified as the value of Field.", + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 1, + "pattern": "(.+)", + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Field" + ], + "type": "object" + }, + "DataResource": { + "additionalProperties": false, + "description": "CloudTrail supports data event logging for Amazon S3 objects and AWS Lambda functions. You can specify up to 250 resources for an individual event selector, but the total number of data resources cannot exceed 250 across all event selectors in a trail. This limit does not apply if you configure resource logging for all data events.", + "properties": { + "Type": { + "description": "The resource type in which you want to log data events. You can specify AWS::S3::Object or AWS::Lambda::Function resources.", + "type": "string" + }, + "Values": { + "description": "An array of Amazon Resource Name (ARN) strings or partial ARN strings for the specified objects.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "EventSelector": { + "additionalProperties": false, + "description": "The type of email sending events to publish to the event destination.", + "properties": { + "DataResources": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DataResource" + }, + "type": "array", + "uniqueItems": true + }, + "ExcludeManagementEventSources": { + "description": "An optional list of service event sources from which you do not want management events to be logged on your trail. In this release, the list can be empty (disables the filter), or it can filter out AWS Key Management Service events by containing \"kms.amazonaws.com\". By default, ExcludeManagementEventSources is empty, and AWS KMS events are included in events that are logged to your trail.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "IncludeManagementEvents": { + "description": "Specify if you want your event selector to include management events for your trail.", + "type": "boolean" + }, + "ReadWriteType": { + "description": "Specify if you want your trail to log read-only events, write-only events, or all. For example, the EC2 GetConsoleOutput is a read-only API operation and RunInstances is a write-only API operation.", + "enum": [ + "All", + "ReadOnly", + "WriteOnly" + ], + "type": "string" + } + }, + "type": "object" + }, + "InsightSelector": { + "additionalProperties": false, + "description": "A string that contains insight types that are logged on a trail.", + "properties": { + "InsightType": { + "description": "The type of insight to log on a trail.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "An arbitrary set of tags (key-value pairs) for this trail.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Creates a trail that specifies the settings for delivery of log data to an Amazon S3 bucket. A maximum of five trails can exist in a region, irrespective of the region in which they were created.", + "handlers": { + "create": { + "permissions": [ + "CloudTrail:CreateTrail", + "CloudTrail:StartLogging", + "CloudTrail:AddTags", + "CloudTrail:PutEventSelectors", + "CloudTrail:PutInsightSelectors", + "iam:GetRole", + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "organizations:DescribeOrganization", + "organizations:ListAWSServiceAccessForOrganization" + ] + }, + "delete": { + "permissions": [ + "CloudTrail:DeleteTrail" + ] + }, + "list": { + "permissions": [ + "CloudTrail:ListTrails", + "CloudTrail:GetTrail", + "CloudTrail:GetTrailStatus", + "CloudTrail:ListTags", + "CloudTrail:GetEventSelectors", + "CloudTrail:GetInsightSelectors", + "CloudTrail:DescribeTrails" + ] + }, + "read": { + "permissions": [ + "CloudTrail:GetTrail", + "CloudTrail:GetTrailStatus", + "CloudTrail:ListTags", + "CloudTrail:GetEventSelectors", + "CloudTrail:GetInsightSelectors", + "CloudTrail:DescribeTrails" + ] + }, + "update": { + "permissions": [ + "CloudTrail:UpdateTrail", + "CloudTrail:StartLogging", + "CloudTrail:StopLogging", + "CloudTrail:AddTags", + "CloudTrail:RemoveTags", + "CloudTrail:PutEventSelectors", + "CloudTrail:PutInsightSelectors", + "iam:GetRole", + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "organizations:DescribeOrganization", + "organizations:ListAWSServiceAccessForOrganization", + "CloudTrail:GetTrail", + "CloudTrail:DescribeTrails" + ] + } + }, + "primaryIdentifier": [ + "/properties/TrailName" + ], + "properties": { + "AdvancedEventSelectors": { + "description": "The advanced event selectors that were used to select events for the data store.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AdvancedEventSelector" + }, + "type": "array", + "uniqueItems": true + }, + "Arn": { + "type": "string" + }, + "CloudWatchLogsLogGroupArn": { + "description": "Specifies a log group name using an Amazon Resource Name (ARN), a unique identifier that represents the log group to which CloudTrail logs will be delivered. Not required unless you specify CloudWatchLogsRoleArn.", + "type": "string" + }, + "CloudWatchLogsRoleArn": { + "description": "Specifies the role for the CloudWatch Logs endpoint to assume to write to a user's log group.", + "type": "string" + }, + "EnableLogFileValidation": { + "description": "Specifies whether log file validation is enabled. The default is false.", + "type": "boolean" + }, + "EventSelectors": { + "description": "Use event selectors to further specify the management and data event settings for your trail. By default, trails created without specific event selectors will be configured to log all read and write management events, and no data events. When an event occurs in your account, CloudTrail evaluates the event selector for all trails. For each trail, if the event matches any event selector, the trail processes and logs the event. If the event doesn't match any event selector, the trail doesn't log the event. You can configure up to five event selectors for a trail.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EventSelector" + }, + "maxItems": 5, + "type": "array", + "uniqueItems": true + }, + "IncludeGlobalServiceEvents": { + "description": "Specifies whether the trail is publishing events from global services such as IAM to the log files.", + "type": "boolean" + }, + "InsightSelectors": { + "description": "Lets you enable Insights event logging by specifying the Insights selectors that you want to enable on an existing trail.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InsightSelector" + }, + "type": "array", + "uniqueItems": true + }, + "IsLogging": { + "description": "Whether the CloudTrail is currently logging AWS API calls.", + "type": "boolean" + }, + "IsMultiRegionTrail": { + "description": "Specifies whether the trail applies only to the current region or to all regions. The default is false. If the trail exists only in the current region and this value is set to true, shadow trails (replications of the trail) will be created in the other regions. If the trail exists in all regions and this value is set to false, the trail will remain in the region where it was created, and its shadow trails in other regions will be deleted. As a best practice, consider using trails that log events in all regions.", + "type": "boolean" + }, + "IsOrganizationTrail": { + "description": "Specifies whether the trail is created for all accounts in an organization in AWS Organizations, or only for the current AWS account. The default is false, and cannot be true unless the call is made on behalf of an AWS account that is the master account for an organization in AWS Organizations.", + "type": "boolean" + }, + "KMSKeyId": { + "description": "Specifies the KMS key ID to use to encrypt the logs delivered by CloudTrail. The value can be an alias name prefixed by 'alias/', a fully specified ARN to an alias, a fully specified ARN to a key, or a globally unique identifier.", + "type": "string" + }, + "S3BucketName": { + "description": "Specifies the name of the Amazon S3 bucket designated for publishing log files. See Amazon S3 Bucket Naming Requirements.", + "type": "string" + }, + "S3KeyPrefix": { + "description": "Specifies the Amazon S3 key prefix that comes after the name of the bucket you have designated for log file delivery. For more information, see Finding Your CloudTrail Log Files. The maximum length is 200 characters.", + "maxLength": 200, + "type": "string" + }, + "SnsTopicArn": { + "type": "string" + }, + "SnsTopicName": { + "description": "Specifies the name of the Amazon SNS topic defined for notification of log file delivery. The maximum length is 256 characters.", + "maxLength": 256, + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TrailName": { + "maxLength": 128, + "minLength": 3, + "pattern": "(^[a-zA-Z0-9]$)|(^[a-zA-Z0-9]([a-zA-Z0-9\\._-])*[a-zA-Z0-9]$)", + "type": "string" + } + }, + "propertyTransform": { + "/properties/KMSKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KMSKeyId])" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/SnsTopicArn" + ], + "required": [ + "S3BucketName", + "IsLogging" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudtrail.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "CloudTrail:AddTags", + "CloudTrail:RemoveTags", + "CloudTrail:ListTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CloudTrail::Trail" +} diff --git a/src/schema/aws-cloudwatch-alarm.json b/src/schema/aws-cloudwatch-alarm.json index aa2a695b..69603df0 100644 --- a/src/schema/aws-cloudwatch-alarm.json +++ b/src/schema/aws-cloudwatch-alarm.json @@ -1,315 +1,320 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AlarmName" - ], - "definitions": { - "Dimension": { - "additionalProperties": false, - "description": "Dimension is an embedded property of the ``AWS::CloudWatch::Alarm`` type. Dimensions are name/value pairs that can be associated with a CW metric. You can specify a maximum of 10 dimensions for a given metric.", - "properties": { - "Name": { - "description": "The name of the dimension, from 1\u2013255 characters in length. This dimension name must have been included when the metric was published.", - "type": "string" - }, - "Value": { - "description": "The value for the dimension, from 1\u2013255 characters in length.", - "type": "string" - } - }, - "required": [ - "Value", - "Name" - ], - "type": "object" - }, - "Metric": { - "additionalProperties": false, - "description": "The ``Metric`` property type represents a specific metric. ``Metric`` is a property of the [MetricStat](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudwatch-alarm-metricstat.html) property type.", - "properties": { - "Dimensions": { - "description": "The metric dimensions that you want to be used for the metric that the alarm will watch.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Dimension" - }, - "type": "array", - "uniqueItems": false - }, - "MetricName": { - "description": "The name of the metric that you want the alarm to watch. This is a required field.", - "type": "string" - }, - "Namespace": { - "description": "The namespace of the metric that the alarm will watch.", - "type": "string" - } - }, - "type": "object" - }, - "MetricDataQuery": { - "additionalProperties": false, - "description": "The ``MetricDataQuery`` property type specifies the metric data to return, and whether this call is just retrieving a batch set of data for one metric, or is performing a math expression on metric data. \n Any expression used must return a single time series. For more information, see [Metric Math Syntax and Functions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#metric-math-syntax) in the *User Guide*.", - "properties": { - "AccountId": { - "description": "The ID of the account where the metrics are located, if this is a cross-account alarm.", - "type": "string" - }, - "Expression": { - "description": "The math expression to be performed on the returned data, if this object is performing a math expression. This expression can use the ``Id`` of the other metrics to refer to those metrics, and can also use the ``Id`` of other expressions to use the result of those expressions. For more information about metric math expressions, see [Metric Math Syntax and Functions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#metric-math-syntax) in the *User Guide*.\n Within each MetricDataQuery object, you must specify either ``Expression`` or ``MetricStat`` but not both.", - "type": "string" - }, - "Id": { - "description": "A short name used to tie this object to the results in the response. This name must be unique within a single call to ``GetMetricData``. If you are performing math expressions on this set of data, this name represents that data and can serve as a variable in the mathematical expression. The valid characters are letters, numbers, and underscore. The first character must be a lowercase letter.", - "type": "string" - }, - "Label": { - "description": "A human-readable label for this metric or expression. This is especially useful if this is an expression, so that you know what the value represents. If the metric or expression is shown in a CW dashboard widget, the label is shown. If ``Label`` is omitted, CW generates a default.", - "type": "string" - }, - "MetricStat": { - "$ref": "#/definitions/MetricStat", - "description": "The metric to be returned, along with statistics, period, and units. Use this parameter only if this object is retrieving a metric and not performing a math expression on returned data.\n Within one MetricDataQuery object, you must specify either ``Expression`` or ``MetricStat`` but not both." - }, - "Period": { - "description": "The granularity, in seconds, of the returned data points. For metrics with regular resolution, a period can be as short as one minute (60 seconds) and must be a multiple of 60. For high-resolution metrics that are collected at intervals of less than one minute, the period can be 1, 5, 10, 30, 60, or any multiple of 60. High-resolution metrics are those metrics stored by a ``PutMetricData`` operation that includes a ``StorageResolution of 1 second``.", - "type": "integer" - }, - "ReturnData": { - "description": "This option indicates whether to return the timestamps and raw data values of this metric.\n When you create an alarm based on a metric math expression, specify ``True`` for this value for only the one math expression that the alarm is based on. You must specify ``False`` for ``ReturnData`` for all the other metrics and expressions used in the alarm.\n This field is required.", - "type": "boolean" - } - }, - "required": [ - "Id" - ], - "type": "object" - }, - "MetricStat": { - "additionalProperties": false, - "description": "This structure defines the metric to be returned, along with the statistics, period, and units.\n ``MetricStat`` is a property of the [MetricDataQuery](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudwatch-alarm-metricdataquery.html) property type.", - "properties": { - "Metric": { - "$ref": "#/definitions/Metric", - "description": "The metric to return, including the metric name, namespace, and dimensions." - }, - "Period": { - "description": "The granularity, in seconds, of the returned data points. For metrics with regular resolution, a period can be as short as one minute (60 seconds) and must be a multiple of 60. For high-resolution metrics that are collected at intervals of less than one minute, the period can be 1, 5, 10, 30, 60, or any multiple of 60. High-resolution metrics are those metrics stored by a ``PutMetricData`` call that includes a ``StorageResolution`` of 1 second.\n If the ``StartTime`` parameter specifies a time stamp that is greater than 3 hours ago, you must specify the period as follows or no data points in that time range is returned:\n + Start time between 3 hours and 15 days ago - Use a multiple of 60 seconds (1 minute).\n + Start time between 15 and 63 days ago - Use a multiple of 300 seconds (5 minutes).\n + Start time greater than 63 days ago - Use a multiple of 3600 seconds (1 hour).", - "type": "integer" - }, - "Stat": { - "description": "The statistic to return. It can include any CW statistic or extended statistic. For a list of valid values, see the table in [Statistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Statistic) in the *User Guide*.", - "type": "string" - }, - "Unit": { - "description": "The unit to use for the returned data points. \n Valid values are: Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, or None.", - "type": "string" - } - }, - "required": [ - "Stat", - "Period", - "Metric" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "One of the key-value pairs associated with the alarm. Tags can help you organize and categorize your resources.", - "properties": { - "Key": { - "description": "A string that you can use to assign a value. The combination of tag keys and values can help you organize and categorize your resources.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the specified tag key.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The ``AWS::CloudWatch::Alarm`` type specifies an alarm and associates it with the specified metric or metric math expression.\n When this operation creates an alarm, the alarm state is immediately set to ``INSUFFICIENT_DATA``. The alarm is then evaluated and its state is set appropriately. Any actions associated with the new state are then executed.\n When you update an existing alarm, its state is left unchanged, but the update completely overwrites the previous configuration of the alarm.", - "handlers": { - "create": { - "permissions": [ - "cloudwatch:PutMetricAlarm", - "cloudwatch:DescribeAlarms", - "cloudwatch:TagResource" - ] - }, - "delete": { - "permissions": [ - "cloudwatch:DeleteAlarms", - "cloudwatch:DescribeAlarms" - ] - }, - "list": { - "permissions": [ - "cloudwatch:DescribeAlarms" - ] - }, - "read": { - "permissions": [ - "cloudwatch:DescribeAlarms", - "cloudwatch:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "cloudwatch:PutMetricAlarm", - "cloudwatch:DescribeAlarms", - "cloudwatch:TagResource", - "cloudwatch:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AlarmName" - ], - "properties": { - "ActionsEnabled": { - "default": true, - "description": "Indicates whether actions should be executed during any changes to the alarm state. The default is TRUE.", - "type": "boolean" - }, - "AlarmActions": { - "description": "The list of actions to execute when this alarm transitions into an ALARM state from any other state. Specify each action as an Amazon Resource Name (ARN). For more information about creating alarms and the actions that you can specify, see [PutMetricAlarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricAlarm.html) in the *API Reference*.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AlarmDescription": { - "description": "The description of the alarm.", - "type": "string" - }, - "AlarmName": { - "description": "The name of the alarm. If you don't specify a name, CFN generates a unique physical ID and uses that ID for the alarm name. \n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", - "type": "string" - }, - "Arn": { - "description": "", - "type": "string" - }, - "ComparisonOperator": { - "description": "The arithmetic operation to use when comparing the specified statistic and threshold. The specified statistic value is used as the first operand.", - "type": "string" - }, - "DatapointsToAlarm": { - "description": "The number of datapoints that must be breaching to trigger the alarm. This is used only if you are setting an \"M out of N\" alarm. In that case, this value is the M, and the value that you set for ``EvaluationPeriods`` is the N value. For more information, see [Evaluating an Alarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarm-evaluation) in the *User Guide*.\n If you omit this parameter, CW uses the same value here that you set for ``EvaluationPeriods``, and the alarm goes to alarm state if that many consecutive periods are breaching.", - "type": "integer" - }, - "Dimensions": { - "description": "The dimensions for the metric associated with the alarm. For an alarm based on a math expression, you can't specify ``Dimensions``. Instead, you use ``Metrics``.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Dimension" - }, - "type": "array", - "uniqueItems": false - }, - "EvaluateLowSampleCountPercentile": { - "description": "Used only for alarms based on percentiles. If ``ignore``, the alarm state does not change during periods with too few data points to be statistically significant. If ``evaluate`` or this parameter is not used, the alarm is always evaluated and possibly changes state no matter how many data points are available.", - "type": "string" - }, - "EvaluationPeriods": { - "description": "The number of periods over which data is compared to the specified threshold. If you are setting an alarm that requires that a number of consecutive data points be breaching to trigger the alarm, this value specifies that number. If you are setting an \"M out of N\" alarm, this value is the N, and ``DatapointsToAlarm`` is the M.\n For more information, see [Evaluating an Alarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarm-evaluation) in the *User Guide*.", - "type": "integer" - }, - "ExtendedStatistic": { - "description": "The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100.\n For an alarm based on a metric, you must specify either ``Statistic`` or ``ExtendedStatistic`` but not both.\n For an alarm based on a math expression, you can't specify ``ExtendedStatistic``. Instead, you use ``Metrics``.", - "type": "string" - }, - "InsufficientDataActions": { - "description": "The actions to execute when this alarm transitions to the ``INSUFFICIENT_DATA`` state from any other state. Each action is specified as an Amazon Resource Name (ARN).", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "MetricName": { - "description": "The name of the metric associated with the alarm. This is required for an alarm based on a metric. For an alarm based on a math expression, you use ``Metrics`` instead and you can't specify ``MetricName``.", - "type": "string" - }, - "Metrics": { - "description": "An array that enables you to create an alarm based on the result of a metric math expression. Each item in the array either retrieves a metric or performs a math expression.\n If you specify the ``Metrics`` parameter, you cannot specify ``MetricName``, ``Dimensions``, ``Period``, ``Namespace``, ``Statistic``, ``ExtendedStatistic``, or ``Unit``.", - "items": { - "$ref": "#/definitions/MetricDataQuery" - }, - "type": "array", - "uniqueItems": true - }, - "Namespace": { - "description": "The namespace of the metric associated with the alarm. This is required for an alarm based on a metric. For an alarm based on a math expression, you can't specify ``Namespace`` and you use ``Metrics`` instead.\n For a list of namespaces for metrics from AWS services, see [Services That Publish Metrics.](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html)", - "type": "string" - }, - "OKActions": { - "description": "The actions to execute when this alarm transitions to the ``OK`` state from any other state. Each action is specified as an Amazon Resource Name (ARN).", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Period": { - "description": "The period, in seconds, over which the statistic is applied. This is required for an alarm based on a metric. Valid values are 10, 30, 60, and any multiple of 60.\n For an alarm based on a math expression, you can't specify ``Period``, and instead you use the ``Metrics`` parameter.\n *Minimum:* 10", - "type": "integer" - }, - "Statistic": { - "description": "The statistic for the metric associated with the alarm, other than percentile. For percentile statistics, use ``ExtendedStatistic``.\n For an alarm based on a metric, you must specify either ``Statistic`` or ``ExtendedStatistic`` but not both.\n For an alarm based on a math expression, you can't specify ``Statistic``. Instead, you use ``Metrics``.", - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs to associate with the alarm. You can associate as many as 50 tags with an alarm. To be able to associate tags with the alarm when you create the alarm, you must have the ``cloudwatch:TagResource`` permission.\n Tags can help you organize and categorize your resources. You can also use them to scope user permissions by granting a user permission to access or change only resources with certain tag values.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "Threshold": { - "description": "The value to compare with the specified statistic.", - "type": "number" - }, - "ThresholdMetricId": { - "description": "In an alarm based on an anomaly detection model, this is the ID of the ``ANOMALY_DETECTION_BAND`` function used as the threshold for the alarm.", - "type": "string" - }, - "TreatMissingData": { - "description": "Sets how this alarm is to handle missing data points. Valid values are ``breaching``, ``notBreaching``, ``ignore``, and ``missing``. For more information, see [Configuring How Alarms Treat Missing Data](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data) in the *Amazon User Guide*.\n If you omit this parameter, the default behavior of ``missing`` is used.", - "type": "string" - }, - "Unit": { - "description": "The unit of the metric associated with the alarm. Specify this only if you are creating an alarm based on a single metric. Do not specify this if you are specifying a ``Metrics`` array.\n You can specify the following values: Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, or None.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "ComparisonOperator", - "EvaluationPeriods" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudwatch.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CloudWatch::Alarm" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AlarmName" + ], + "definitions": { + "Dimension": { + "additionalProperties": false, + "description": "Dimension is an embedded property of the ``AWS::CloudWatch::Alarm`` type. Dimensions are name/value pairs that can be associated with a CW metric. You can specify a maximum of 10 dimensions for a given metric.", + "properties": { + "Name": { + "description": "The name of the dimension, from 1\u2013255 characters in length. This dimension name must have been included when the metric was published.", + "type": "string" + }, + "Value": { + "description": "The value for the dimension, from 1\u2013255 characters in length.", + "type": "string" + } + }, + "required": [ + "Value", + "Name" + ], + "type": "object" + }, + "Metric": { + "additionalProperties": false, + "description": "The ``Metric`` property type represents a specific metric. ``Metric`` is a property of the [MetricStat](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudwatch-alarm-metricstat.html) property type.", + "properties": { + "Dimensions": { + "description": "The metric dimensions that you want to be used for the metric that the alarm will watch.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Dimension" + }, + "type": "array", + "uniqueItems": false + }, + "MetricName": { + "description": "The name of the metric that you want the alarm to watch. This is a required field.", + "type": "string" + }, + "Namespace": { + "description": "The namespace of the metric that the alarm will watch.", + "type": "string" + } + }, + "type": "object" + }, + "MetricDataQuery": { + "additionalProperties": false, + "description": "The ``MetricDataQuery`` property type specifies the metric data to return, and whether this call is just retrieving a batch set of data for one metric, or is performing a math expression on metric data. \n Any expression used must return a single time series. For more information, see [Metric Math Syntax and Functions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#metric-math-syntax) in the *User Guide*.", + "properties": { + "AccountId": { + "description": "The ID of the account where the metrics are located, if this is a cross-account alarm.", + "type": "string" + }, + "Expression": { + "description": "The math expression to be performed on the returned data, if this object is performing a math expression. This expression can use the ``Id`` of the other metrics to refer to those metrics, and can also use the ``Id`` of other expressions to use the result of those expressions. For more information about metric math expressions, see [Metric Math Syntax and Functions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#metric-math-syntax) in the *User Guide*.\n Within each MetricDataQuery object, you must specify either ``Expression`` or ``MetricStat`` but not both.", + "type": "string" + }, + "Id": { + "description": "A short name used to tie this object to the results in the response. This name must be unique within a single call to ``GetMetricData``. If you are performing math expressions on this set of data, this name represents that data and can serve as a variable in the mathematical expression. The valid characters are letters, numbers, and underscore. The first character must be a lowercase letter.", + "type": "string" + }, + "Label": { + "description": "A human-readable label for this metric or expression. This is especially useful if this is an expression, so that you know what the value represents. If the metric or expression is shown in a CW dashboard widget, the label is shown. If ``Label`` is omitted, CW generates a default.", + "type": "string" + }, + "MetricStat": { + "$ref": "#/definitions/MetricStat", + "description": "The metric to be returned, along with statistics, period, and units. Use this parameter only if this object is retrieving a metric and not performing a math expression on returned data.\n Within one MetricDataQuery object, you must specify either ``Expression`` or ``MetricStat`` but not both." + }, + "Period": { + "description": "The granularity, in seconds, of the returned data points. For metrics with regular resolution, a period can be as short as one minute (60 seconds) and must be a multiple of 60. For high-resolution metrics that are collected at intervals of less than one minute, the period can be 1, 5, 10, 30, 60, or any multiple of 60. High-resolution metrics are those metrics stored by a ``PutMetricData`` operation that includes a ``StorageResolution of 1 second``.", + "type": "integer" + }, + "ReturnData": { + "description": "This option indicates whether to return the timestamps and raw data values of this metric.\n When you create an alarm based on a metric math expression, specify ``True`` for this value for only the one math expression that the alarm is based on. You must specify ``False`` for ``ReturnData`` for all the other metrics and expressions used in the alarm.\n This field is required.", + "type": "boolean" + } + }, + "required": [ + "Id" + ], + "type": "object" + }, + "MetricStat": { + "additionalProperties": false, + "description": "This structure defines the metric to be returned, along with the statistics, period, and units.\n ``MetricStat`` is a property of the [MetricDataQuery](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudwatch-alarm-metricdataquery.html) property type.", + "properties": { + "Metric": { + "$ref": "#/definitions/Metric", + "description": "The metric to return, including the metric name, namespace, and dimensions." + }, + "Period": { + "description": "The granularity, in seconds, of the returned data points. For metrics with regular resolution, a period can be as short as one minute (60 seconds) and must be a multiple of 60. For high-resolution metrics that are collected at intervals of less than one minute, the period can be 1, 5, 10, 30, 60, or any multiple of 60. High-resolution metrics are those metrics stored by a ``PutMetricData`` call that includes a ``StorageResolution`` of 1 second.\n If the ``StartTime`` parameter specifies a time stamp that is greater than 3 hours ago, you must specify the period as follows or no data points in that time range is returned:\n + Start time between 3 hours and 15 days ago - Use a multiple of 60 seconds (1 minute).\n + Start time between 15 and 63 days ago - Use a multiple of 300 seconds (5 minutes).\n + Start time greater than 63 days ago - Use a multiple of 3600 seconds (1 hour).", + "type": "integer" + }, + "Stat": { + "description": "The statistic to return. It can include any CW statistic or extended statistic. For a list of valid values, see the table in [Statistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Statistic) in the *User Guide*.", + "type": "string" + }, + "Unit": { + "description": "The unit to use for the returned data points. \n Valid values are: Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, or None.", + "type": "string" + } + }, + "required": [ + "Stat", + "Period", + "Metric" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "One of the key-value pairs associated with the alarm. Tags can help you organize and categorize your resources.", + "properties": { + "Key": { + "description": "A string that you can use to assign a value. The combination of tag keys and values can help you organize and categorize your resources.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the specified tag key.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The ``AWS::CloudWatch::Alarm`` type specifies an alarm and associates it with the specified metric or metric math expression.\n When this operation creates an alarm, the alarm state is immediately set to ``INSUFFICIENT_DATA``. The alarm is then evaluated and its state is set appropriately. Any actions associated with the new state are then executed.\n When you update an existing alarm, its state is left unchanged, but the update completely overwrites the previous configuration of the alarm.", + "handlers": { + "create": { + "permissions": [ + "cloudwatch:PutMetricAlarm", + "cloudwatch:DescribeAlarms", + "cloudwatch:TagResource" + ] + }, + "delete": { + "permissions": [ + "cloudwatch:DeleteAlarms", + "cloudwatch:DescribeAlarms" + ] + }, + "list": { + "permissions": [ + "cloudwatch:DescribeAlarms" + ] + }, + "read": { + "permissions": [ + "cloudwatch:DescribeAlarms", + "cloudwatch:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "cloudwatch:PutMetricAlarm", + "cloudwatch:DescribeAlarms", + "cloudwatch:TagResource", + "cloudwatch:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AlarmName" + ], + "properties": { + "ActionsEnabled": { + "default": true, + "description": "Indicates whether actions should be executed during any changes to the alarm state. The default is TRUE.", + "type": "boolean" + }, + "AlarmActions": { + "description": "The list of actions to execute when this alarm transitions into an ALARM state from any other state. Specify each action as an Amazon Resource Name (ARN). For more information about creating alarms and the actions that you can specify, see [PutMetricAlarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricAlarm.html) in the *API Reference*.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AlarmDescription": { + "description": "The description of the alarm.", + "type": "string" + }, + "AlarmName": { + "description": "The name of the alarm. If you don't specify a name, CFN generates a unique physical ID and uses that ID for the alarm name. \n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", + "type": "string" + }, + "Arn": { + "description": "", + "type": "string" + }, + "ComparisonOperator": { + "description": "The arithmetic operation to use when comparing the specified statistic and threshold. The specified statistic value is used as the first operand.", + "type": "string" + }, + "DatapointsToAlarm": { + "description": "The number of datapoints that must be breaching to trigger the alarm. This is used only if you are setting an \"M out of N\" alarm. In that case, this value is the M, and the value that you set for ``EvaluationPeriods`` is the N value. For more information, see [Evaluating an Alarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarm-evaluation) in the *User Guide*.\n If you omit this parameter, CW uses the same value here that you set for ``EvaluationPeriods``, and the alarm goes to alarm state if that many consecutive periods are breaching.", + "type": "integer" + }, + "Dimensions": { + "description": "The dimensions for the metric associated with the alarm. For an alarm based on a math expression, you can't specify ``Dimensions``. Instead, you use ``Metrics``.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Dimension" + }, + "type": "array", + "uniqueItems": false + }, + "EvaluateLowSampleCountPercentile": { + "description": "Used only for alarms based on percentiles. If ``ignore``, the alarm state does not change during periods with too few data points to be statistically significant. If ``evaluate`` or this parameter is not used, the alarm is always evaluated and possibly changes state no matter how many data points are available.", + "type": "string" + }, + "EvaluationPeriods": { + "description": "The number of periods over which data is compared to the specified threshold. If you are setting an alarm that requires that a number of consecutive data points be breaching to trigger the alarm, this value specifies that number. If you are setting an \"M out of N\" alarm, this value is the N, and ``DatapointsToAlarm`` is the M.\n For more information, see [Evaluating an Alarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarm-evaluation) in the *User Guide*.", + "type": "integer" + }, + "ExtendedStatistic": { + "description": "The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100.\n For an alarm based on a metric, you must specify either ``Statistic`` or ``ExtendedStatistic`` but not both.\n For an alarm based on a math expression, you can't specify ``ExtendedStatistic``. Instead, you use ``Metrics``.", + "type": "string" + }, + "InsufficientDataActions": { + "description": "The actions to execute when this alarm transitions to the ``INSUFFICIENT_DATA`` state from any other state. Each action is specified as an Amazon Resource Name (ARN).", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MetricName": { + "description": "The name of the metric associated with the alarm. This is required for an alarm based on a metric. For an alarm based on a math expression, you use ``Metrics`` instead and you can't specify ``MetricName``.", + "type": "string" + }, + "Metrics": { + "description": "An array that enables you to create an alarm based on the result of a metric math expression. Each item in the array either retrieves a metric or performs a math expression.\n If you specify the ``Metrics`` parameter, you cannot specify ``MetricName``, ``Dimensions``, ``Period``, ``Namespace``, ``Statistic``, ``ExtendedStatistic``, or ``Unit``.", + "items": { + "$ref": "#/definitions/MetricDataQuery" + }, + "type": "array", + "uniqueItems": true + }, + "Namespace": { + "description": "The namespace of the metric associated with the alarm. This is required for an alarm based on a metric. For an alarm based on a math expression, you can't specify ``Namespace`` and you use ``Metrics`` instead.\n For a list of namespaces for metrics from AWS services, see [Services That Publish Metrics.](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html)", + "type": "string" + }, + "OKActions": { + "description": "The actions to execute when this alarm transitions to the ``OK`` state from any other state. Each action is specified as an Amazon Resource Name (ARN).", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Period": { + "description": "The period, in seconds, over which the statistic is applied. This is required for an alarm based on a metric. Valid values are 10, 30, 60, and any multiple of 60.\n For an alarm based on a math expression, you can't specify ``Period``, and instead you use the ``Metrics`` parameter.\n *Minimum:* 10", + "type": "integer" + }, + "Statistic": { + "description": "The statistic for the metric associated with the alarm, other than percentile. For percentile statistics, use ``ExtendedStatistic``.\n For an alarm based on a metric, you must specify either ``Statistic`` or ``ExtendedStatistic`` but not both.\n For an alarm based on a math expression, you can't specify ``Statistic``. Instead, you use ``Metrics``.", + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs to associate with the alarm. You can associate as many as 50 tags with an alarm. To be able to associate tags with the alarm when you create the alarm, you must have the ``cloudwatch:TagResource`` permission.\n Tags can help you organize and categorize your resources. You can also use them to scope user permissions by granting a user permission to access or change only resources with certain tag values.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "Threshold": { + "description": "The value to compare with the specified statistic.", + "type": "number" + }, + "ThresholdMetricId": { + "description": "In an alarm based on an anomaly detection model, this is the ID of the ``ANOMALY_DETECTION_BAND`` function used as the threshold for the alarm.", + "type": "string" + }, + "TreatMissingData": { + "description": "Sets how this alarm is to handle missing data points. Valid values are ``breaching``, ``notBreaching``, ``ignore``, and ``missing``. For more information, see [Configuring How Alarms Treat Missing Data](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data) in the *Amazon User Guide*.\n If you omit this parameter, the default behavior of ``missing`` is used.", + "type": "string" + }, + "Unit": { + "description": "The unit of the metric associated with the alarm. Specify this only if you are creating an alarm based on a single metric. Do not specify this if you are specifying a ``Metrics`` array.\n You can specify the following values: Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, or None.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "ComparisonOperator", + "EvaluationPeriods" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudwatch.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "cloudwatch:TagResource", + "cloudwatch:UntagResource", + "cloudwatch:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CloudWatch::Alarm" +} diff --git a/src/schema/aws-cloudwatch-anomalydetector.json b/src/schema/aws-cloudwatch-anomalydetector.json index 3a984541..8bd7f0b9 100644 --- a/src/schema/aws-cloudwatch-anomalydetector.json +++ b/src/schema/aws-cloudwatch-anomalydetector.json @@ -1,226 +1,226 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Dimensions", - "/properties/MetricCharacteristics", - "/properties/MetricName", - "/properties/Namespace", - "/properties/SingleMetricAnomalyDetector", - "/properties/MetricMathAnomalyDetector", - "/properties/Stat" - ], - "definitions": { - "Configuration": { - "additionalProperties": false, - "properties": { - "ExcludedTimeRanges": { - "items": { - "$ref": "#/definitions/Range" - }, - "type": "array", - "uniqueItems": false - }, - "MetricTimeZone": { - "type": "string" - } - }, - "type": "object" - }, - "Dimension": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Name" - ], - "type": "object" - }, - "Metric": { - "additionalProperties": false, - "properties": { - "Dimensions": { - "items": { - "$ref": "#/definitions/Dimension" - }, - "type": "array", - "uniqueItems": false - }, - "MetricName": { - "type": "string" - }, - "Namespace": { - "type": "string" - } - }, - "required": [ - "MetricName", - "Namespace" - ], - "type": "object" - }, - "MetricCharacteristics": { - "additionalProperties": false, - "properties": { - "PeriodicSpikes": { - "type": "boolean" - } - }, - "type": "object" - }, - "MetricDataQuery": { - "additionalProperties": false, - "properties": { - "AccountId": { - "type": "string" - }, - "Expression": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Label": { - "type": "string" - }, - "MetricStat": { - "$ref": "#/definitions/MetricStat" - }, - "Period": { - "type": "integer" - }, - "ReturnData": { - "type": "boolean" - } - }, - "required": [ - "Id" - ], - "type": "object" - }, - "MetricMathAnomalyDetector": { - "additionalProperties": false, - "properties": { - "MetricDataQueries": { - "items": { - "$ref": "#/definitions/MetricDataQuery" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "MetricStat": { - "additionalProperties": false, - "properties": { - "Metric": { - "$ref": "#/definitions/Metric" - }, - "Period": { - "type": "integer" - }, - "Stat": { - "type": "string" - }, - "Unit": { - "type": "string" - } - }, - "required": [ - "Stat", - "Period", - "Metric" - ], - "type": "object" - }, - "Range": { - "additionalProperties": false, - "properties": { - "EndTime": { - "type": "string" - }, - "StartTime": { - "type": "string" - } - }, - "required": [ - "EndTime", - "StartTime" - ], - "type": "object" - }, - "SingleMetricAnomalyDetector": { - "additionalProperties": false, - "properties": { - "AccountId": { - "type": "string" - }, - "Dimensions": { - "items": { - "$ref": "#/definitions/Dimension" - }, - "type": "array", - "uniqueItems": false - }, - "MetricName": { - "type": "string" - }, - "Namespace": { - "type": "string" - }, - "Stat": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CloudWatch::AnomalyDetector", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/Configuration" - }, - "Dimensions": { - "items": { - "$ref": "#/definitions/Dimension" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - }, - "MetricCharacteristics": { - "$ref": "#/definitions/MetricCharacteristics" - }, - "MetricMathAnomalyDetector": { - "$ref": "#/definitions/MetricMathAnomalyDetector" - }, - "MetricName": { - "type": "string" - }, - "Namespace": { - "type": "string" - }, - "SingleMetricAnomalyDetector": { - "$ref": "#/definitions/SingleMetricAnomalyDetector" - }, - "Stat": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "typeName": "AWS::CloudWatch::AnomalyDetector" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Dimensions", + "/properties/MetricCharacteristics", + "/properties/MetricName", + "/properties/Namespace", + "/properties/SingleMetricAnomalyDetector", + "/properties/MetricMathAnomalyDetector", + "/properties/Stat" + ], + "definitions": { + "Configuration": { + "additionalProperties": false, + "properties": { + "ExcludedTimeRanges": { + "items": { + "$ref": "#/definitions/Range" + }, + "type": "array", + "uniqueItems": false + }, + "MetricTimeZone": { + "type": "string" + } + }, + "type": "object" + }, + "Dimension": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Name" + ], + "type": "object" + }, + "Metric": { + "additionalProperties": false, + "properties": { + "Dimensions": { + "items": { + "$ref": "#/definitions/Dimension" + }, + "type": "array", + "uniqueItems": false + }, + "MetricName": { + "type": "string" + }, + "Namespace": { + "type": "string" + } + }, + "required": [ + "MetricName", + "Namespace" + ], + "type": "object" + }, + "MetricCharacteristics": { + "additionalProperties": false, + "properties": { + "PeriodicSpikes": { + "type": "boolean" + } + }, + "type": "object" + }, + "MetricDataQuery": { + "additionalProperties": false, + "properties": { + "AccountId": { + "type": "string" + }, + "Expression": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Label": { + "type": "string" + }, + "MetricStat": { + "$ref": "#/definitions/MetricStat" + }, + "Period": { + "type": "integer" + }, + "ReturnData": { + "type": "boolean" + } + }, + "required": [ + "Id" + ], + "type": "object" + }, + "MetricMathAnomalyDetector": { + "additionalProperties": false, + "properties": { + "MetricDataQueries": { + "items": { + "$ref": "#/definitions/MetricDataQuery" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "MetricStat": { + "additionalProperties": false, + "properties": { + "Metric": { + "$ref": "#/definitions/Metric" + }, + "Period": { + "type": "integer" + }, + "Stat": { + "type": "string" + }, + "Unit": { + "type": "string" + } + }, + "required": [ + "Stat", + "Period", + "Metric" + ], + "type": "object" + }, + "Range": { + "additionalProperties": false, + "properties": { + "EndTime": { + "type": "string" + }, + "StartTime": { + "type": "string" + } + }, + "required": [ + "EndTime", + "StartTime" + ], + "type": "object" + }, + "SingleMetricAnomalyDetector": { + "additionalProperties": false, + "properties": { + "AccountId": { + "type": "string" + }, + "Dimensions": { + "items": { + "$ref": "#/definitions/Dimension" + }, + "type": "array", + "uniqueItems": false + }, + "MetricName": { + "type": "string" + }, + "Namespace": { + "type": "string" + }, + "Stat": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::CloudWatch::AnomalyDetector", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/Configuration" + }, + "Dimensions": { + "items": { + "$ref": "#/definitions/Dimension" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "MetricCharacteristics": { + "$ref": "#/definitions/MetricCharacteristics" + }, + "MetricMathAnomalyDetector": { + "$ref": "#/definitions/MetricMathAnomalyDetector" + }, + "MetricName": { + "type": "string" + }, + "Namespace": { + "type": "string" + }, + "SingleMetricAnomalyDetector": { + "$ref": "#/definitions/SingleMetricAnomalyDetector" + }, + "Stat": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::CloudWatch::AnomalyDetector" +} diff --git a/src/schema/aws-cloudwatch-compositealarm.json b/src/schema/aws-cloudwatch-compositealarm.json index 082c16ed..cd11c946 100644 --- a/src/schema/aws-cloudwatch-compositealarm.json +++ b/src/schema/aws-cloudwatch-compositealarm.json @@ -1,178 +1,183 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AlarmName" - ], - "definitions": { - "AlarmActionARN": { - "description": "Amazon Resource Name (ARN) of the action", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "Metadata that you can assign to a composite alarm, Tags can help you organize and categorize your resources.", - "properties": { - "Key": { - "description": "A unique identifier for the tag. The combination of tag keys and values can help you organize and categorize your resources.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the specified tag key.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::CloudWatch::CompositeAlarm type specifies an alarm which aggregates the states of other Alarms (Metric or Composite Alarms) as defined by the AlarmRule expression", - "handlers": { - "create": { - "permissions": [ - "cloudwatch:DescribeAlarms", - "cloudwatch:PutCompositeAlarm", - "cloudwatch:TagResource" - ] - }, - "delete": { - "permissions": [ - "cloudwatch:DescribeAlarms", - "cloudwatch:DeleteAlarms" - ] - }, - "list": { - "permissions": [ - "cloudwatch:DescribeAlarms" - ] - }, - "read": { - "permissions": [ - "cloudwatch:DescribeAlarms", - "cloudwatch:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "cloudwatch:DescribeAlarms", - "cloudwatch:PutCompositeAlarm", - "cloudwatch:TagResource", - "cloudwatch:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AlarmName" - ], - "properties": { - "ActionsEnabled": { - "description": "Indicates whether actions should be executed during any changes to the alarm state. The default is TRUE.", - "type": "boolean" - }, - "ActionsSuppressor": { - "description": "Actions will be suppressed if the suppressor alarm is in the ALARM state. ActionsSuppressor can be an AlarmName or an Amazon Resource Name (ARN) from an existing alarm. ", - "maxLength": 1600, - "minLength": 1, - "type": "string" - }, - "ActionsSuppressorExtensionPeriod": { - "description": "Actions will be suppressed if WaitPeriod is active. The length of time that actions are suppressed is in seconds.", - "minimum": 0, - "type": "integer" - }, - "ActionsSuppressorWaitPeriod": { - "description": "Actions will be suppressed if ExtensionPeriod is active. The length of time that actions are suppressed is in seconds.", - "minimum": 0, - "type": "integer" - }, - "AlarmActions": { - "description": "The list of actions to execute when this alarm transitions into an ALARM state from any other state. Specify each action as an Amazon Resource Name (ARN).", - "items": { - "description": "Amazon Resource Name (ARN) of the action", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "maxItems": 5, - "type": "array" - }, - "AlarmDescription": { - "description": "The description of the alarm", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "AlarmName": { - "description": "The name of the Composite Alarm", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "AlarmRule": { - "description": "Expression which aggregates the state of other Alarms (Metric or Composite Alarms)", - "maxLength": 10240, - "minLength": 1, - "type": "string" - }, - "Arn": { - "description": "Amazon Resource Name (ARN) of the alarm", - "maxLength": 1600, - "minLength": 1, - "type": "string" - }, - "InsufficientDataActions": { - "description": "The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Name (ARN).", - "items": { - "description": "Amazon Resource Name (ARN) of the action", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "maxItems": 5, - "type": "array" - }, - "OKActions": { - "description": "The actions to execute when this alarm transitions to the OK state from any other state. Each action is specified as an Amazon Resource Name (ARN).", - "items": { - "description": "Amazon Resource Name (ARN) of the action", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "maxItems": 5, - "type": "array" - }, - "Tags": { - "description": "A list of key-value pairs to associate with the composite alarm. You can associate as many as 50 tags with an alarm.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "AlarmRule" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudwatch.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CloudWatch::CompositeAlarm" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AlarmName" + ], + "definitions": { + "AlarmActionARN": { + "description": "Amazon Resource Name (ARN) of the action", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "Metadata that you can assign to a composite alarm, Tags can help you organize and categorize your resources.", + "properties": { + "Key": { + "description": "A unique identifier for the tag. The combination of tag keys and values can help you organize and categorize your resources.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the specified tag key.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::CloudWatch::CompositeAlarm type specifies an alarm which aggregates the states of other Alarms (Metric or Composite Alarms) as defined by the AlarmRule expression", + "handlers": { + "create": { + "permissions": [ + "cloudwatch:DescribeAlarms", + "cloudwatch:PutCompositeAlarm", + "cloudwatch:TagResource" + ] + }, + "delete": { + "permissions": [ + "cloudwatch:DescribeAlarms", + "cloudwatch:DeleteAlarms" + ] + }, + "list": { + "permissions": [ + "cloudwatch:DescribeAlarms" + ] + }, + "read": { + "permissions": [ + "cloudwatch:DescribeAlarms", + "cloudwatch:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "cloudwatch:DescribeAlarms", + "cloudwatch:PutCompositeAlarm", + "cloudwatch:TagResource", + "cloudwatch:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AlarmName" + ], + "properties": { + "ActionsEnabled": { + "description": "Indicates whether actions should be executed during any changes to the alarm state. The default is TRUE.", + "type": "boolean" + }, + "ActionsSuppressor": { + "description": "Actions will be suppressed if the suppressor alarm is in the ALARM state. ActionsSuppressor can be an AlarmName or an Amazon Resource Name (ARN) from an existing alarm. ", + "maxLength": 1600, + "minLength": 1, + "type": "string" + }, + "ActionsSuppressorExtensionPeriod": { + "description": "Actions will be suppressed if WaitPeriod is active. The length of time that actions are suppressed is in seconds.", + "minimum": 0, + "type": "integer" + }, + "ActionsSuppressorWaitPeriod": { + "description": "Actions will be suppressed if ExtensionPeriod is active. The length of time that actions are suppressed is in seconds.", + "minimum": 0, + "type": "integer" + }, + "AlarmActions": { + "description": "The list of actions to execute when this alarm transitions into an ALARM state from any other state. Specify each action as an Amazon Resource Name (ARN).", + "items": { + "description": "Amazon Resource Name (ARN) of the action", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 5, + "type": "array" + }, + "AlarmDescription": { + "description": "The description of the alarm", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "AlarmName": { + "description": "The name of the Composite Alarm", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "AlarmRule": { + "description": "Expression which aggregates the state of other Alarms (Metric or Composite Alarms)", + "maxLength": 10240, + "minLength": 1, + "type": "string" + }, + "Arn": { + "description": "Amazon Resource Name (ARN) of the alarm", + "maxLength": 1600, + "minLength": 1, + "type": "string" + }, + "InsufficientDataActions": { + "description": "The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Name (ARN).", + "items": { + "description": "Amazon Resource Name (ARN) of the action", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 5, + "type": "array" + }, + "OKActions": { + "description": "The actions to execute when this alarm transitions to the OK state from any other state. Each action is specified as an Amazon Resource Name (ARN).", + "items": { + "description": "Amazon Resource Name (ARN) of the action", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 5, + "type": "array" + }, + "Tags": { + "description": "A list of key-value pairs to associate with the composite alarm. You can associate as many as 50 tags with an alarm.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "AlarmRule" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudwatch.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "cloudwatch:TagResource", + "cloudwatch:UntagResource", + "cloudwatch:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CloudWatch::CompositeAlarm" +} diff --git a/src/schema/aws-cloudwatch-dashboard.json b/src/schema/aws-cloudwatch-dashboard.json index 898db09d..f4620796 100644 --- a/src/schema/aws-cloudwatch-dashboard.json +++ b/src/schema/aws-cloudwatch-dashboard.json @@ -1,60 +1,60 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DashboardName" - ], - "description": "Resource Type definition for AWS::CloudWatch::Dashboard", - "handlers": { - "create": { - "permissions": [ - "cloudwatch:PutDashboard", - "cloudwatch:GetDashboard" - ] - }, - "delete": { - "permissions": [ - "cloudwatch:DeleteDashboards", - "cloudwatch:GetDashboard" - ] - }, - "list": { - "permissions": [ - "cloudwatch:ListDashboards" - ] - }, - "read": { - "permissions": [ - "cloudwatch:GetDashboard" - ] - }, - "update": { - "permissions": [ - "cloudwatch:PutDashboard" - ] - } - }, - "primaryIdentifier": [ - "/properties/DashboardName" - ], - "properties": { - "DashboardBody": { - "description": "The detailed information about the dashboard in JSON format, including the widgets to include and their location on the dashboard", - "type": "string" - }, - "DashboardName": { - "description": "The name of the dashboard. The name must be between 1 and 255 characters. If you do not specify a name, one will be generated automatically.", - "type": "string" - } - }, - "required": [ - "DashboardBody" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudwatch", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CloudWatch::Dashboard" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DashboardName" + ], + "description": "Resource Type definition for AWS::CloudWatch::Dashboard", + "handlers": { + "create": { + "permissions": [ + "cloudwatch:PutDashboard", + "cloudwatch:GetDashboard" + ] + }, + "delete": { + "permissions": [ + "cloudwatch:DeleteDashboards", + "cloudwatch:GetDashboard" + ] + }, + "list": { + "permissions": [ + "cloudwatch:ListDashboards" + ] + }, + "read": { + "permissions": [ + "cloudwatch:GetDashboard" + ] + }, + "update": { + "permissions": [ + "cloudwatch:PutDashboard" + ] + } + }, + "primaryIdentifier": [ + "/properties/DashboardName" + ], + "properties": { + "DashboardBody": { + "description": "The detailed information about the dashboard in JSON format, including the widgets to include and their location on the dashboard", + "type": "string" + }, + "DashboardName": { + "description": "The name of the dashboard. The name must be between 1 and 255 characters. If you do not specify a name, one will be generated automatically.", + "type": "string" + } + }, + "required": [ + "DashboardBody" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudwatch", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudWatch::Dashboard" +} diff --git a/src/schema/aws-cloudwatch-insightrule.json b/src/schema/aws-cloudwatch-insightrule.json index 471b74e8..7d3549ca 100644 --- a/src/schema/aws-cloudwatch-insightrule.json +++ b/src/schema/aws-cloudwatch-insightrule.json @@ -1,46 +1,46 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RuleName" - ], - "definitions": { - "Tags": { - "additionalProperties": false, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CloudWatch::InsightRule", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "RuleBody": { - "type": "string" - }, - "RuleName": { - "type": "string" - }, - "RuleState": { - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/Tags" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "RuleState", - "RuleBody", - "RuleName" - ], - "typeName": "AWS::CloudWatch::InsightRule" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RuleName" + ], + "definitions": { + "Tags": { + "additionalProperties": false, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::CloudWatch::InsightRule", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "RuleBody": { + "type": "string" + }, + "RuleName": { + "type": "string" + }, + "RuleState": { + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "RuleState", + "RuleBody", + "RuleName" + ], + "typeName": "AWS::CloudWatch::InsightRule" +} diff --git a/src/schema/aws-cloudwatch-metricstream.json b/src/schema/aws-cloudwatch-metricstream.json index cdee013c..73f0a363 100644 --- a/src/schema/aws-cloudwatch-metricstream.json +++ b/src/schema/aws-cloudwatch-metricstream.json @@ -1,282 +1,291 @@ -{ - "additionalProperties": false, - "allOf": [ - { - "required": [ - "FirehoseArn", - "RoleArn", - "OutputFormat" - ] - }, - { - "oneOf": [ - {}, - { - "required": [ - "IncludeFilters", - "ExcludeFilters" - ] - } - ] - } - ], - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "MetricStreamFilter": { - "additionalProperties": false, - "description": "This structure defines the metrics that will be streamed.", - "properties": { - "MetricNames": { - "description": "Only metrics with MetricNames matching these values will be streamed. Must be set together with Namespace.", - "items": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "maxItems": 999, - "type": "array" - }, - "Namespace": { - "description": "Only metrics with Namespace matching this value will be streamed.", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Namespace" - ], - "type": "object" - }, - "MetricStreamStatisticsConfiguration": { - "additionalProperties": false, - "description": "This structure specifies a list of additional statistics to stream, and the metrics to stream those additional statistics for. All metrics that match the combination of metric name and namespace will be streamed with the extended statistics, no matter their dimensions.", - "properties": { - "AdditionalStatistics": { - "description": "The additional statistics to stream for the metrics listed in IncludeMetrics.", - "items": { - "type": "string" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "IncludeMetrics": { - "description": "An array that defines the metrics that are to have additional statistics streamed.", - "items": { - "$ref": "#/definitions/MetricStreamStatisticsMetric" - }, - "maxItems": 100, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "AdditionalStatistics", - "IncludeMetrics" - ], - "type": "object" - }, - "MetricStreamStatisticsMetric": { - "additionalProperties": false, - "description": "A structure that specifies the metric name and namespace for one metric that is going to have additional statistics included in the stream.", - "properties": { - "MetricName": { - "description": "The name of the metric.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Namespace": { - "description": "The namespace of the metric.", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "MetricName", - "Namespace" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Metadata that you can assign to a Metric Stream, consisting of a key-value pair.", - "properties": { - "Key": { - "description": "A unique identifier for the tag.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "String which you can use to describe or define the tag.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for Metric Stream", - "handlers": { - "create": { - "permissions": [ - "cloudwatch:PutMetricStream", - "cloudwatch:GetMetricStream", - "cloudwatch:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "cloudwatch:DeleteMetricStream", - "cloudwatch:GetMetricStream" - ] - }, - "list": { - "permissions": [ - "cloudwatch:ListMetricStreams" - ] - }, - "read": { - "permissions": [ - "cloudwatch:GetMetricStream" - ] - }, - "update": { - "permissions": [ - "cloudwatch:PutMetricStream", - "cloudwatch:GetMetricStream", - "cloudwatch:TagResource", - "cloudwatch:UntagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "description": "Amazon Resource Name of the metric stream.", - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "CreationDate": { - "anyOf": [ - { - "format": "date-time" - }, - { - "format": "timestamp" - } - ], - "description": "The date of creation of the metric stream.", - "type": "string" - }, - "ExcludeFilters": { - "description": "Define which metrics will be not streamed. Metrics matched by multiple instances of MetricStreamFilter are joined with an OR operation by default. If both IncludeFilters and ExcludeFilters are omitted, all metrics in the account will be streamed. IncludeFilters and ExcludeFilters are mutually exclusive. Default to null.", - "items": { - "$ref": "#/definitions/MetricStreamFilter" - }, - "maxItems": 1000, - "type": "array", - "uniqueItems": true - }, - "FirehoseArn": { - "description": "The ARN of the Kinesis Firehose where to stream the data.", - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "IncludeFilters": { - "description": "Define which metrics will be streamed. Metrics matched by multiple instances of MetricStreamFilter are joined with an OR operation by default. If both IncludeFilters and ExcludeFilters are omitted, all metrics in the account will be streamed. IncludeFilters and ExcludeFilters are mutually exclusive. Default to null.", - "items": { - "$ref": "#/definitions/MetricStreamFilter" - }, - "maxItems": 1000, - "type": "array", - "uniqueItems": true - }, - "IncludeLinkedAccountsMetrics": { - "description": "If you are creating a metric stream in a monitoring account, specify true to include metrics from source accounts that are linked to this monitoring account, in the metric stream. The default is false.", - "type": "boolean" - }, - "LastUpdateDate": { - "anyOf": [ - { - "format": "date-time" - }, - { - "format": "timestamp" - } - ], - "description": "The date of the last update of the metric stream.", - "type": "string" - }, - "Name": { - "description": "Name of the metric stream.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "OutputFormat": { - "description": "The output format of the data streamed to the Kinesis Firehose.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "RoleArn": { - "description": "The ARN of the role that provides access to the Kinesis Firehose.", - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "State": { - "description": "Displays the state of the Metric Stream.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "StatisticsConfigurations": { - "description": "By default, a metric stream always sends the MAX, MIN, SUM, and SAMPLECOUNT statistics for each metric that is streamed. You can use this parameter to have the metric stream also send additional statistics in the stream. This array can have up to 100 members.", - "items": { - "$ref": "#/definitions/MetricStreamStatisticsConfiguration" - }, - "maxItems": 100, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "description": "A set of tags to assign to the delivery stream.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationDate", - "/properties/LastUpdateDate", - "/properties/State" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudwatch.git", - "taggable": true, - "typeName": "AWS::CloudWatch::MetricStream", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "allOf": [ + { + "required": [ + "FirehoseArn", + "RoleArn", + "OutputFormat" + ] + }, + { + "oneOf": [ + {}, + { + "required": [ + "IncludeFilters", + "ExcludeFilters" + ] + } + ] + } + ], + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "MetricStreamFilter": { + "additionalProperties": false, + "description": "This structure defines the metrics that will be streamed.", + "properties": { + "MetricNames": { + "description": "Only metrics with MetricNames matching these values will be streamed. Must be set together with Namespace.", + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "maxItems": 999, + "type": "array" + }, + "Namespace": { + "description": "Only metrics with Namespace matching this value will be streamed.", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Namespace" + ], + "type": "object" + }, + "MetricStreamStatisticsConfiguration": { + "additionalProperties": false, + "description": "This structure specifies a list of additional statistics to stream, and the metrics to stream those additional statistics for. All metrics that match the combination of metric name and namespace will be streamed with the extended statistics, no matter their dimensions.", + "properties": { + "AdditionalStatistics": { + "description": "The additional statistics to stream for the metrics listed in IncludeMetrics.", + "items": { + "type": "string" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "IncludeMetrics": { + "description": "An array that defines the metrics that are to have additional statistics streamed.", + "items": { + "$ref": "#/definitions/MetricStreamStatisticsMetric" + }, + "maxItems": 100, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "AdditionalStatistics", + "IncludeMetrics" + ], + "type": "object" + }, + "MetricStreamStatisticsMetric": { + "additionalProperties": false, + "description": "A structure that specifies the metric name and namespace for one metric that is going to have additional statistics included in the stream.", + "properties": { + "MetricName": { + "description": "The name of the metric.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Namespace": { + "description": "The namespace of the metric.", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "MetricName", + "Namespace" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Metadata that you can assign to a Metric Stream, consisting of a key-value pair.", + "properties": { + "Key": { + "description": "A unique identifier for the tag.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "String which you can use to describe or define the tag.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for Metric Stream", + "handlers": { + "create": { + "permissions": [ + "cloudwatch:PutMetricStream", + "cloudwatch:GetMetricStream", + "cloudwatch:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "cloudwatch:DeleteMetricStream", + "cloudwatch:GetMetricStream" + ] + }, + "list": { + "permissions": [ + "cloudwatch:ListMetricStreams" + ] + }, + "read": { + "permissions": [ + "cloudwatch:GetMetricStream", + "cloudwatch:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "cloudwatch:PutMetricStream", + "cloudwatch:GetMetricStream", + "cloudwatch:TagResource", + "cloudwatch:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "description": "Amazon Resource Name of the metric stream.", + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "CreationDate": { + "anyOf": [ + { + "format": "date-time" + }, + { + "format": "timestamp" + } + ], + "description": "The date of creation of the metric stream.", + "type": "string" + }, + "ExcludeFilters": { + "description": "Define which metrics will be not streamed. Metrics matched by multiple instances of MetricStreamFilter are joined with an OR operation by default. If both IncludeFilters and ExcludeFilters are omitted, all metrics in the account will be streamed. IncludeFilters and ExcludeFilters are mutually exclusive. Default to null.", + "items": { + "$ref": "#/definitions/MetricStreamFilter" + }, + "maxItems": 1000, + "type": "array", + "uniqueItems": true + }, + "FirehoseArn": { + "description": "The ARN of the Kinesis Firehose where to stream the data.", + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "IncludeFilters": { + "description": "Define which metrics will be streamed. Metrics matched by multiple instances of MetricStreamFilter are joined with an OR operation by default. If both IncludeFilters and ExcludeFilters are omitted, all metrics in the account will be streamed. IncludeFilters and ExcludeFilters are mutually exclusive. Default to null.", + "items": { + "$ref": "#/definitions/MetricStreamFilter" + }, + "maxItems": 1000, + "type": "array", + "uniqueItems": true + }, + "IncludeLinkedAccountsMetrics": { + "description": "If you are creating a metric stream in a monitoring account, specify true to include metrics from source accounts that are linked to this monitoring account, in the metric stream. The default is false.", + "type": "boolean" + }, + "LastUpdateDate": { + "anyOf": [ + { + "format": "date-time" + }, + { + "format": "timestamp" + } + ], + "description": "The date of the last update of the metric stream.", + "type": "string" + }, + "Name": { + "description": "Name of the metric stream.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "OutputFormat": { + "description": "The output format of the data streamed to the Kinesis Firehose.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the role that provides access to the Kinesis Firehose.", + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "State": { + "description": "Displays the state of the Metric Stream.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "StatisticsConfigurations": { + "description": "By default, a metric stream always sends the MAX, MIN, SUM, and SAMPLECOUNT statistics for each metric that is streamed. You can use this parameter to have the metric stream also send additional statistics in the stream. This array can have up to 100 members.", + "items": { + "$ref": "#/definitions/MetricStreamStatisticsConfiguration" + }, + "maxItems": 100, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "A set of tags to assign to the delivery stream.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationDate", + "/properties/LastUpdateDate", + "/properties/State" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudwatch.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "cloudwatch:TagResource", + "cloudwatch:UntagResource", + "cloudwatch:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CloudWatch::MetricStream" +} diff --git a/src/schema/aws-codeartifact-domain.json b/src/schema/aws-codeartifact-domain.json index 5e44450d..9c2ed8c0 100644 --- a/src/schema/aws-codeartifact-domain.json +++ b/src/schema/aws-codeartifact-domain.json @@ -1,144 +1,144 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainName", - "/properties/EncryptionKey" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The resource schema to create a CodeArtifact domain.", - "handlers": { - "create": { - "permissions": [ - "codeartifact:CreateDomain", - "codeartifact:DescribeDomain", - "codeartifact:PutDomainPermissionsPolicy", - "codeartifact:GetDomainPermissionsPolicy", - "codeartifact:TagResource", - "codeartifact:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "codeartifact:DeleteDomain", - "codeartifact:DescribeDomain" - ] - }, - "list": { - "permissions": [ - "codeartifact:ListDomains" - ] - }, - "read": { - "permissions": [ - "codeartifact:DescribeDomain", - "codeartifact:GetDomainPermissionsPolicy", - "codeartifact:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "codeartifact:DescribeDomain", - "codeartifact:PutDomainPermissionsPolicy", - "codeartifact:DeleteDomainPermissionsPolicy", - "codeartifact:GetDomainPermissionsPolicy", - "codeartifact:TagResource", - "codeartifact:UntagResource", - "codeartifact:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The ARN of the domain.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "DomainName": { - "description": "The name of the domain.", - "maxLength": 50, - "minLength": 2, - "pattern": "^([a-z][a-z0-9\\-]{0,48}[a-z0-9])$", - "type": "string" - }, - "EncryptionKey": { - "description": "The ARN of an AWS Key Management Service (AWS KMS) key associated with a domain.", - "type": "string" - }, - "Name": { - "description": "The name of the domain. This field is used for GetAtt", - "maxLength": 50, - "minLength": 2, - "pattern": "^([a-z][a-z0-9\\-]{0,48}[a-z0-9])$", - "type": "string" - }, - "Owner": { - "description": "The 12-digit account ID of the AWS account that owns the domain. This field is used for GetAtt", - "pattern": "[0-9]{12}", - "type": "string" - }, - "PermissionsPolicyDocument": { - "description": "The access control resource policy on the provided domain.", - "maxLength": 5120, - "minLength": 2, - "type": "object" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Owner", - "/properties/Name", - "/properties/EncryptionKey", - "/properties/Arn" - ], - "required": [ - "DomainName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codeartifact", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "codeartifact:ListTagsForResource", - "codeartifact:UntagResource", - "codeartifact:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CodeArtifact::Domain" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainName", + "/properties/EncryptionKey" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The resource schema to create a CodeArtifact domain.", + "handlers": { + "create": { + "permissions": [ + "codeartifact:CreateDomain", + "codeartifact:DescribeDomain", + "codeartifact:PutDomainPermissionsPolicy", + "codeartifact:GetDomainPermissionsPolicy", + "codeartifact:TagResource", + "codeartifact:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "codeartifact:DeleteDomain", + "codeartifact:DescribeDomain" + ] + }, + "list": { + "permissions": [ + "codeartifact:ListDomains" + ] + }, + "read": { + "permissions": [ + "codeartifact:DescribeDomain", + "codeartifact:GetDomainPermissionsPolicy", + "codeartifact:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "codeartifact:DescribeDomain", + "codeartifact:PutDomainPermissionsPolicy", + "codeartifact:DeleteDomainPermissionsPolicy", + "codeartifact:GetDomainPermissionsPolicy", + "codeartifact:TagResource", + "codeartifact:UntagResource", + "codeartifact:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The ARN of the domain.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DomainName": { + "description": "The name of the domain.", + "maxLength": 50, + "minLength": 2, + "pattern": "^([a-z][a-z0-9\\-]{0,48}[a-z0-9])$", + "type": "string" + }, + "EncryptionKey": { + "description": "The ARN of an AWS Key Management Service (AWS KMS) key associated with a domain.", + "type": "string" + }, + "Name": { + "description": "The name of the domain. This field is used for GetAtt", + "maxLength": 50, + "minLength": 2, + "pattern": "^([a-z][a-z0-9\\-]{0,48}[a-z0-9])$", + "type": "string" + }, + "Owner": { + "description": "The 12-digit account ID of the AWS account that owns the domain. This field is used for GetAtt", + "pattern": "[0-9]{12}", + "type": "string" + }, + "PermissionsPolicyDocument": { + "description": "The access control resource policy on the provided domain.", + "maxLength": 5120, + "minLength": 2, + "type": "object" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Owner", + "/properties/Name", + "/properties/EncryptionKey", + "/properties/Arn" + ], + "required": [ + "DomainName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codeartifact", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "codeartifact:ListTagsForResource", + "codeartifact:UntagResource", + "codeartifact:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CodeArtifact::Domain" +} diff --git a/src/schema/aws-codeartifact-packagegroup.json b/src/schema/aws-codeartifact-packagegroup.json index 80cfa24d..e85f9b95 100644 --- a/src/schema/aws-codeartifact-packagegroup.json +++ b/src/schema/aws-codeartifact-packagegroup.json @@ -1,216 +1,216 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainName", - "/properties/Pattern" - ], - "definitions": { - "OriginConfiguration": { - "additionalProperties": false, - "properties": { - "Restrictions": { - "$ref": "#/definitions/Restrictions", - "description": "The origin configuration that is applied to the package group.", - "type": "object" - } - }, - "required": [ - "Restrictions" - ], - "type": "object" - }, - "RestrictionType": { - "additionalProperties": false, - "properties": { - "Repositories": { - "items": { - "type": "string" - }, - "type": "array" - }, - "RestrictionMode": { - "enum": [ - "ALLOW", - "BLOCK", - "ALLOW_SPECIFIC_REPOSITORIES", - "INHERIT" - ], - "type": "string" - } - }, - "required": [ - "RestrictionMode" - ], - "type": "object" - }, - "Restrictions": { - "additionalProperties": false, - "properties": { - "ExternalUpstream": { - "$ref": "#/definitions/RestrictionType", - "description": "The external upstream restriction determines if new package versions can be ingested or retained from external connections.", - "type": "object" - }, - "InternalUpstream": { - "$ref": "#/definitions/RestrictionType", - "description": "The internal upstream restriction determines if new package versions can be ingested or retained from upstream repositories.", - "type": "object" - }, - "Publish": { - "$ref": "#/definitions/RestrictionType", - "description": "The publish restriction determines if new package versions can be published.", - "type": "object" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The resource schema to create a CodeArtifact package group.", - "handlers": { - "create": { - "permissions": [ - "codeartifact:CreatePackageGroup", - "codeartifact:DescribePackageGroup", - "codeartifact:UpdatePackageGroup", - "codeartifact:UpdatePackageGroupOriginConfiguration", - "codeartifact:ListAllowedRepositoriesForGroup", - "codeartifact:ListTagsForResource", - "codeartifact:TagResource" - ] - }, - "delete": { - "permissions": [ - "codeartifact:DeletePackageGroup", - "codeartifact:DescribePackageGroup" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DomainName": { - "$ref": "resource-schema.json#/properties/DomainName" - } - }, - "required": [ - "DomainName" - ] - }, - "permissions": [ - "codeartifact:ListPackageGroups" - ] - }, - "read": { - "permissions": [ - "codeartifact:DescribePackageGroup", - "codeartifact:ListAllowedRepositoriesForGroup", - "codeartifact:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "codeartifact:UpdatePackageGroup", - "codeartifact:UpdatePackageGroupOriginConfiguration", - "codeartifact:DescribePackageGroup", - "codeartifact:ListAllowedRepositoriesForGroup", - "codeartifact:ListTagsForResource", - "codeartifact:TagResource", - "codeartifact:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The ARN of the package group.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "ContactInfo": { - "description": "The contact info of the package group.", - "maxLength": 1000, - "type": "string" - }, - "Description": { - "description": "The text description of the package group.", - "maxLength": 1000, - "type": "string" - }, - "DomainName": { - "description": "The name of the domain that contains the package group.", - "maxLength": 50, - "minLength": 2, - "pattern": "^([a-z][a-z0-9\\-]{0,48}[a-z0-9])$", - "type": "string" - }, - "DomainOwner": { - "description": "The 12-digit account ID of the AWS account that owns the domain.", - "pattern": "[0-9]{12}", - "type": "string" - }, - "OriginConfiguration": { - "$ref": "#/definitions/OriginConfiguration", - "description": "The package origin configuration of the package group.", - "type": "object" - }, - "Pattern": { - "description": "The package group pattern that is used to gather packages.", - "maxLength": 520, - "minLength": 2, - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to the package group.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Pattern", - "DomainName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codeartifact", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "codeartifact:ListTagsForResource", - "codeartifact:UntagResource", - "codeartifact:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CodeArtifact::PackageGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainName", + "/properties/Pattern" + ], + "definitions": { + "OriginConfiguration": { + "additionalProperties": false, + "properties": { + "Restrictions": { + "$ref": "#/definitions/Restrictions", + "description": "The origin configuration that is applied to the package group.", + "type": "object" + } + }, + "required": [ + "Restrictions" + ], + "type": "object" + }, + "RestrictionType": { + "additionalProperties": false, + "properties": { + "Repositories": { + "items": { + "type": "string" + }, + "type": "array" + }, + "RestrictionMode": { + "enum": [ + "ALLOW", + "BLOCK", + "ALLOW_SPECIFIC_REPOSITORIES", + "INHERIT" + ], + "type": "string" + } + }, + "required": [ + "RestrictionMode" + ], + "type": "object" + }, + "Restrictions": { + "additionalProperties": false, + "properties": { + "ExternalUpstream": { + "$ref": "#/definitions/RestrictionType", + "description": "The external upstream restriction determines if new package versions can be ingested or retained from external connections.", + "type": "object" + }, + "InternalUpstream": { + "$ref": "#/definitions/RestrictionType", + "description": "The internal upstream restriction determines if new package versions can be ingested or retained from upstream repositories.", + "type": "object" + }, + "Publish": { + "$ref": "#/definitions/RestrictionType", + "description": "The publish restriction determines if new package versions can be published.", + "type": "object" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The resource schema to create a CodeArtifact package group.", + "handlers": { + "create": { + "permissions": [ + "codeartifact:CreatePackageGroup", + "codeartifact:DescribePackageGroup", + "codeartifact:UpdatePackageGroup", + "codeartifact:UpdatePackageGroupOriginConfiguration", + "codeartifact:ListAllowedRepositoriesForGroup", + "codeartifact:ListTagsForResource", + "codeartifact:TagResource" + ] + }, + "delete": { + "permissions": [ + "codeartifact:DeletePackageGroup", + "codeartifact:DescribePackageGroup" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainName": { + "$ref": "resource-schema.json#/properties/DomainName" + } + }, + "required": [ + "DomainName" + ] + }, + "permissions": [ + "codeartifact:ListPackageGroups" + ] + }, + "read": { + "permissions": [ + "codeartifact:DescribePackageGroup", + "codeartifact:ListAllowedRepositoriesForGroup", + "codeartifact:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "codeartifact:UpdatePackageGroup", + "codeartifact:UpdatePackageGroupOriginConfiguration", + "codeartifact:DescribePackageGroup", + "codeartifact:ListAllowedRepositoriesForGroup", + "codeartifact:ListTagsForResource", + "codeartifact:TagResource", + "codeartifact:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The ARN of the package group.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ContactInfo": { + "description": "The contact info of the package group.", + "maxLength": 1000, + "type": "string" + }, + "Description": { + "description": "The text description of the package group.", + "maxLength": 1000, + "type": "string" + }, + "DomainName": { + "description": "The name of the domain that contains the package group.", + "maxLength": 50, + "minLength": 2, + "pattern": "^([a-z][a-z0-9\\-]{0,48}[a-z0-9])$", + "type": "string" + }, + "DomainOwner": { + "description": "The 12-digit account ID of the AWS account that owns the domain.", + "pattern": "[0-9]{12}", + "type": "string" + }, + "OriginConfiguration": { + "$ref": "#/definitions/OriginConfiguration", + "description": "The package origin configuration of the package group.", + "type": "object" + }, + "Pattern": { + "description": "The package group pattern that is used to gather packages.", + "maxLength": 520, + "minLength": 2, + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to the package group.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Pattern", + "DomainName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codeartifact", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "codeartifact:ListTagsForResource", + "codeartifact:UntagResource", + "codeartifact:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CodeArtifact::PackageGroup" +} diff --git a/src/schema/aws-codeartifact-repository.json b/src/schema/aws-codeartifact-repository.json index 6895b2cb..d3c615c5 100644 --- a/src/schema/aws-codeartifact-repository.json +++ b/src/schema/aws-codeartifact-repository.json @@ -1,173 +1,173 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RepositoryName", - "/properties/DomainName", - "/properties/DomainOwner" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The resource schema to create a CodeArtifact repository.", - "handlers": { - "create": { - "permissions": [ - "codeartifact:CreateRepository", - "codeartifact:DescribeRepository", - "codeartifact:PutRepositoryPermissionsPolicy", - "codeartifact:GetRepositoryPermissionsPolicy", - "codeartifact:AssociateExternalConnection", - "codeartifact:AssociateWithDownstreamRepository", - "codeartifact:TagResource", - "codeartifact:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "codeartifact:DeleteRepository", - "codeartifact:DescribeRepository" - ] - }, - "list": { - "permissions": [ - "codeartifact:ListRepositories" - ] - }, - "read": { - "permissions": [ - "codeartifact:DescribeRepository", - "codeartifact:GetRepositoryPermissionsPolicy", - "codeartifact:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "codeartifact:PutRepositoryPermissionsPolicy", - "codeartifact:GetRepositoryPermissionsPolicy", - "codeartifact:DeleteRepositoryPermissionsPolicy", - "codeartifact:AssociateExternalConnection", - "codeartifact:DisassociateExternalConnection", - "codeartifact:UpdateRepository", - "codeartifact:DescribeRepository", - "codeartifact:AssociateWithDownstreamRepository", - "codeartifact:TagResource", - "codeartifact:UntagResource", - "codeartifact:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The ARN of the repository.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Description": { - "description": "A text description of the repository.", - "maxLength": 1000, - "type": "string" - }, - "DomainName": { - "description": "The name of the domain that contains the repository.", - "maxLength": 50, - "minLength": 2, - "pattern": "^([a-z][a-z0-9\\-]{0,48}[a-z0-9])$", - "type": "string" - }, - "DomainOwner": { - "description": "The 12-digit account ID of the AWS account that owns the domain.", - "pattern": "[0-9]{12}", - "type": "string" - }, - "ExternalConnections": { - "description": "A list of external connections associated with the repository.", - "items": { - "type": "string" - }, - "type": "array" - }, - "Name": { - "description": "The name of the repository. This is used for GetAtt", - "maxLength": 100, - "minLength": 2, - "pattern": "^([A-Za-z0-9][A-Za-z0-9._\\-]{1,99})$", - "type": "string" - }, - "PermissionsPolicyDocument": { - "description": "The access control resource policy on the provided repository.", - "maxLength": 5120, - "minLength": 2, - "type": "object" - }, - "RepositoryName": { - "description": "The name of the repository.", - "maxLength": 100, - "minLength": 2, - "pattern": "^([A-Za-z0-9][A-Za-z0-9._\\-]{1,99})$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "Upstreams": { - "description": "A list of upstream repositories associated with the repository.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Name", - "/properties/DomainOwner", - "/properties/Arn" - ], - "required": [ - "RepositoryName", - "DomainName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codeartifact", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "codeartifact:ListTagsForResource", - "codeartifact:UntagResource", - "codeartifact:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CodeArtifact::Repository" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RepositoryName", + "/properties/DomainName", + "/properties/DomainOwner" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The resource schema to create a CodeArtifact repository.", + "handlers": { + "create": { + "permissions": [ + "codeartifact:CreateRepository", + "codeartifact:DescribeRepository", + "codeartifact:PutRepositoryPermissionsPolicy", + "codeartifact:GetRepositoryPermissionsPolicy", + "codeartifact:AssociateExternalConnection", + "codeartifact:AssociateWithDownstreamRepository", + "codeartifact:TagResource", + "codeartifact:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "codeartifact:DeleteRepository", + "codeartifact:DescribeRepository" + ] + }, + "list": { + "permissions": [ + "codeartifact:ListRepositories" + ] + }, + "read": { + "permissions": [ + "codeartifact:DescribeRepository", + "codeartifact:GetRepositoryPermissionsPolicy", + "codeartifact:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "codeartifact:PutRepositoryPermissionsPolicy", + "codeartifact:GetRepositoryPermissionsPolicy", + "codeartifact:DeleteRepositoryPermissionsPolicy", + "codeartifact:AssociateExternalConnection", + "codeartifact:DisassociateExternalConnection", + "codeartifact:UpdateRepository", + "codeartifact:DescribeRepository", + "codeartifact:AssociateWithDownstreamRepository", + "codeartifact:TagResource", + "codeartifact:UntagResource", + "codeartifact:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The ARN of the repository.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Description": { + "description": "A text description of the repository.", + "maxLength": 1000, + "type": "string" + }, + "DomainName": { + "description": "The name of the domain that contains the repository.", + "maxLength": 50, + "minLength": 2, + "pattern": "^([a-z][a-z0-9\\-]{0,48}[a-z0-9])$", + "type": "string" + }, + "DomainOwner": { + "description": "The 12-digit account ID of the AWS account that owns the domain.", + "pattern": "[0-9]{12}", + "type": "string" + }, + "ExternalConnections": { + "description": "A list of external connections associated with the repository.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Name": { + "description": "The name of the repository. This is used for GetAtt", + "maxLength": 100, + "minLength": 2, + "pattern": "^([A-Za-z0-9][A-Za-z0-9._\\-]{1,99})$", + "type": "string" + }, + "PermissionsPolicyDocument": { + "description": "The access control resource policy on the provided repository.", + "maxLength": 5120, + "minLength": 2, + "type": "object" + }, + "RepositoryName": { + "description": "The name of the repository.", + "maxLength": 100, + "minLength": 2, + "pattern": "^([A-Za-z0-9][A-Za-z0-9._\\-]{1,99})$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Upstreams": { + "description": "A list of upstream repositories associated with the repository.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Name", + "/properties/DomainOwner", + "/properties/Arn" + ], + "required": [ + "RepositoryName", + "DomainName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codeartifact", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "codeartifact:ListTagsForResource", + "codeartifact:UntagResource", + "codeartifact:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CodeArtifact::Repository" +} diff --git a/src/schema/aws-codebuild-fleet.json b/src/schema/aws-codebuild-fleet.json index eaf168c6..a3f29f0b 100644 --- a/src/schema/aws-codebuild-fleet.json +++ b/src/schema/aws-codebuild-fleet.json @@ -1,276 +1,279 @@ -{ - "additionalProperties": false, - "definitions": { - "ComputeConfiguration": { - "additionalProperties": false, - "properties": { - "disk": { - "type": "integer" - }, - "machineType": { - "enum": [ - "GENERAL", - "NVME" - ], - "type": "string" - }, - "memory": { - "type": "integer" - }, - "vCpu": { - "type": "integer" - } - }, - "type": "object" - }, - "FleetProxyRule": { - "additionalProperties": false, - "properties": { - "Effect": { - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "Entities": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "Type": { - "enum": [ - "DOMAIN", - "IP" - ], - "type": "string" - } - }, - "type": "object" - }, - "ProxyConfiguration": { - "additionalProperties": false, - "properties": { - "DefaultBehavior": { - "enum": [ - "ALLOW_ALL", - "DENY_ALL" - ], - "type": "string" - }, - "OrderedProxyRules": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/FleetProxyRule" - }, - "type": "array" - } - }, - "type": "object" - }, - "ScalingConfigurationInput": { - "additionalProperties": false, - "properties": { - "MaxCapacity": { - "minimum": 1, - "type": "integer" - }, - "ScalingType": { - "enum": [ - "TARGET_TRACKING_SCALING" - ], - "type": "string" - }, - "TargetTrackingScalingConfigs": { - "items": { - "$ref": "#/definitions/TargetTrackingScalingConfiguration" - }, - "type": "array" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 255 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "pattern": "[a-zA-Z+-=._:/]+$", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TargetTrackingScalingConfiguration": { - "additionalProperties": false, - "properties": { - "MetricType": { - "enum": [ - "FLEET_UTILIZATION_RATE" - ], - "type": "string" - }, - "TargetValue": { - "type": "number" - } - }, - "type": "object" - }, - "VpcConfig": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "Subnets": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "VpcId": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CodeBuild::Fleet", - "handlers": { - "create": { - "permissions": [ - "codebuild:BatchGetFleets", - "codebuild:CreateFleet", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "codebuild:BatchGetFleets", - "codebuild:DeleteFleet" - ] - }, - "list": { - "permissions": [ - "codebuild:ListFleets" - ] - }, - "read": { - "permissions": [ - "codebuild:BatchGetFleets" - ] - }, - "update": { - "permissions": [ - "codebuild:BatchGetFleets", - "codebuild:UpdateFleet", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "minLength": 1, - "type": "string" - }, - "BaseCapacity": { - "minimum": 1, - "type": "integer" - }, - "ComputeConfiguration": { - "$ref": "#/definitions/ComputeConfiguration" - }, - "ComputeType": { - "enum": [ - "BUILD_GENERAL1_SMALL", - "BUILD_GENERAL1_MEDIUM", - "BUILD_GENERAL1_LARGE", - "BUILD_GENERAL1_XLARGE", - "BUILD_GENERAL1_2XLARGE", - "ATTRIBUTE_BASED_COMPUTE" - ], - "type": "string" - }, - "EnvironmentType": { - "enum": [ - "WINDOWS_SERVER_2019_CONTAINER", - "WINDOWS_SERVER_2022_CONTAINER", - "LINUX_CONTAINER", - "LINUX_GPU_CONTAINER", - "ARM_CONTAINER", - "MAC_ARM" - ], - "type": "string" - }, - "FleetProxyConfiguration": { - "$ref": "#/definitions/ProxyConfiguration" - }, - "FleetServiceRole": { - "pattern": "^(?:arn:)[a-zA-Z+-=,._:/@]+$", - "type": "string" - }, - "FleetVpcConfig": { - "$ref": "#/definitions/VpcConfig" - }, - "ImageId": { - "pattern": "^((aws/codebuild/[A-Za-z-]+:[0-9]+(-[0-9._]+)?)|ami-[a-z0-9]{1,1020})$", - "type": "string" - }, - "Name": { - "maxLength": 128, - "minLength": 2, - "type": "string" - }, - "OverflowBehavior": { - "enum": [ - "QUEUE", - "ON_DEMAND" - ], - "type": "string" - }, - "ScalingConfiguration": { - "$ref": "#/definitions/ScalingConfigurationInput" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CodeBuild::Fleet" -} +{ + "additionalProperties": false, + "definitions": { + "ComputeConfiguration": { + "additionalProperties": false, + "properties": { + "disk": { + "type": "integer" + }, + "machineType": { + "enum": [ + "GENERAL", + "NVME" + ], + "type": "string" + }, + "memory": { + "type": "integer" + }, + "vCpu": { + "type": "integer" + } + }, + "type": "object" + }, + "FleetProxyRule": { + "additionalProperties": false, + "properties": { + "Effect": { + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "Entities": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Type": { + "enum": [ + "DOMAIN", + "IP" + ], + "type": "string" + } + }, + "type": "object" + }, + "ProxyConfiguration": { + "additionalProperties": false, + "properties": { + "DefaultBehavior": { + "enum": [ + "ALLOW_ALL", + "DENY_ALL" + ], + "type": "string" + }, + "OrderedProxyRules": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/FleetProxyRule" + }, + "type": "array" + } + }, + "type": "object" + }, + "ScalingConfigurationInput": { + "additionalProperties": false, + "properties": { + "MaxCapacity": { + "minimum": 1, + "type": "integer" + }, + "ScalingType": { + "enum": [ + "TARGET_TRACKING_SCALING" + ], + "type": "string" + }, + "TargetTrackingScalingConfigs": { + "items": { + "$ref": "#/definitions/TargetTrackingScalingConfiguration" + }, + "type": "array" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 255 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "pattern": "[a-zA-Z+-=._:/]+$", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TargetTrackingScalingConfiguration": { + "additionalProperties": false, + "properties": { + "MetricType": { + "enum": [ + "FLEET_UTILIZATION_RATE" + ], + "type": "string" + }, + "TargetValue": { + "type": "number" + } + }, + "type": "object" + }, + "VpcConfig": { + "additionalProperties": false, + "properties": { + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "VpcId": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::CodeBuild::Fleet", + "handlers": { + "create": { + "permissions": [ + "codebuild:BatchGetFleets", + "codebuild:CreateFleet", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "codebuild:BatchGetFleets", + "codebuild:DeleteFleet" + ] + }, + "list": { + "permissions": [ + "codebuild:ListFleets" + ] + }, + "read": { + "permissions": [ + "codebuild:BatchGetFleets" + ] + }, + "update": { + "permissions": [ + "codebuild:BatchGetFleets", + "codebuild:UpdateFleet", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "minLength": 1, + "type": "string" + }, + "BaseCapacity": { + "minimum": 1, + "type": "integer" + }, + "ComputeConfiguration": { + "$ref": "#/definitions/ComputeConfiguration" + }, + "ComputeType": { + "enum": [ + "BUILD_GENERAL1_SMALL", + "BUILD_GENERAL1_MEDIUM", + "BUILD_GENERAL1_LARGE", + "BUILD_GENERAL1_XLARGE", + "BUILD_GENERAL1_2XLARGE", + "ATTRIBUTE_BASED_COMPUTE" + ], + "type": "string" + }, + "EnvironmentType": { + "enum": [ + "WINDOWS_SERVER_2019_CONTAINER", + "WINDOWS_SERVER_2022_CONTAINER", + "LINUX_CONTAINER", + "LINUX_GPU_CONTAINER", + "ARM_CONTAINER", + "MAC_ARM", + "LINUX_EC2", + "ARM_EC2", + "WINDOWS_EC2" + ], + "type": "string" + }, + "FleetProxyConfiguration": { + "$ref": "#/definitions/ProxyConfiguration" + }, + "FleetServiceRole": { + "pattern": "^(?:arn:)[a-zA-Z+-=,._:/@]+$", + "type": "string" + }, + "FleetVpcConfig": { + "$ref": "#/definitions/VpcConfig" + }, + "ImageId": { + "pattern": "^((aws/codebuild/[A-Za-z-]+:[0-9]+(-[0-9._]+)?)|ami-[a-z0-9]{1,1020})$", + "type": "string" + }, + "Name": { + "maxLength": 128, + "minLength": 2, + "type": "string" + }, + "OverflowBehavior": { + "enum": [ + "QUEUE", + "ON_DEMAND" + ], + "type": "string" + }, + "ScalingConfiguration": { + "$ref": "#/definitions/ScalingConfigurationInput" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CodeBuild::Fleet" +} diff --git a/src/schema/aws-codebuild-project.json b/src/schema/aws-codebuild-project.json index 0e1d077a..853e396f 100644 --- a/src/schema/aws-codebuild-project.json +++ b/src/schema/aws-codebuild-project.json @@ -1,549 +1,561 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Artifacts": { - "additionalProperties": false, - "properties": { - "ArtifactIdentifier": { - "type": "string" - }, - "EncryptionDisabled": { - "type": "boolean" - }, - "Location": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "NamespaceType": { - "type": "string" - }, - "OverrideArtifactName": { - "type": "boolean" - }, - "Packaging": { - "type": "string" - }, - "Path": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "BatchRestrictions": { - "additionalProperties": false, - "properties": { - "ComputeTypesAllowed": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "MaximumBuildsAllowed": { - "type": "integer" - } - }, - "type": "object" - }, - "BuildStatusConfig": { - "additionalProperties": false, - "properties": { - "Context": { - "type": "string" - }, - "TargetUrl": { - "type": "string" - } - }, - "type": "object" - }, - "CloudWatchLogsConfig": { - "additionalProperties": false, - "properties": { - "GroupName": { - "type": "string" - }, - "Status": { - "type": "string" - }, - "StreamName": { - "type": "string" - } - }, - "required": [ - "Status" - ], - "type": "object" - }, - "Environment": { - "additionalProperties": false, - "properties": { - "Certificate": { - "type": "string" - }, - "ComputeType": { - "type": "string" - }, - "EnvironmentVariables": { - "items": { - "$ref": "#/definitions/EnvironmentVariable" - }, - "type": "array", - "uniqueItems": false - }, - "Fleet": { - "$ref": "#/definitions/ProjectFleet" - }, - "Image": { - "type": "string" - }, - "ImagePullCredentialsType": { - "type": "string" - }, - "PrivilegedMode": { - "type": "boolean" - }, - "RegistryCredential": { - "$ref": "#/definitions/RegistryCredential" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type", - "Image", - "ComputeType" - ], - "type": "object" - }, - "EnvironmentVariable": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Type": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Name" - ], - "type": "object" - }, - "FilterGroup": { - "additionalProperties": false, - "type": "object" - }, - "GitSubmodulesConfig": { - "additionalProperties": false, - "properties": { - "FetchSubmodules": { - "type": "boolean" - } - }, - "required": [ - "FetchSubmodules" - ], - "type": "object" - }, - "LogsConfig": { - "additionalProperties": false, - "properties": { - "CloudWatchLogs": { - "$ref": "#/definitions/CloudWatchLogsConfig" - }, - "S3Logs": { - "$ref": "#/definitions/S3LogsConfig" - } - }, - "type": "object" - }, - "ProjectBuildBatchConfig": { - "additionalProperties": false, - "properties": { - "BatchReportMode": { - "type": "string" - }, - "CombineArtifacts": { - "type": "boolean" - }, - "Restrictions": { - "$ref": "#/definitions/BatchRestrictions" - }, - "ServiceRole": { - "type": "string" - }, - "TimeoutInMins": { - "type": "integer" - } - }, - "type": "object" - }, - "ProjectCache": { - "additionalProperties": false, - "properties": { - "Location": { - "type": "string" - }, - "Modes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ProjectFileSystemLocation": { - "additionalProperties": false, - "properties": { - "Identifier": { - "type": "string" - }, - "Location": { - "type": "string" - }, - "MountOptions": { - "type": "string" - }, - "MountPoint": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "MountPoint", - "Type", - "Identifier", - "Location" - ], - "type": "object" - }, - "ProjectFleet": { - "additionalProperties": false, - "properties": { - "FleetArn": { - "type": "string" - } - }, - "type": "object" - }, - "ProjectSourceVersion": { - "additionalProperties": false, - "properties": { - "SourceIdentifier": { - "type": "string" - }, - "SourceVersion": { - "type": "string" - } - }, - "required": [ - "SourceIdentifier" - ], - "type": "object" - }, - "ProjectTriggers": { - "additionalProperties": false, - "properties": { - "BuildType": { - "type": "string" - }, - "FilterGroups": { - "items": { - "$ref": "#/definitions/FilterGroup" - }, - "type": "array", - "uniqueItems": false - }, - "ScopeConfiguration": { - "$ref": "#/definitions/ScopeConfiguration" - }, - "Webhook": { - "type": "boolean" - } - }, - "type": "object" - }, - "RegistryCredential": { - "additionalProperties": false, - "properties": { - "Credential": { - "type": "string" - }, - "CredentialProvider": { - "type": "string" - } - }, - "required": [ - "Credential", - "CredentialProvider" - ], - "type": "object" - }, - "S3LogsConfig": { - "additionalProperties": false, - "properties": { - "EncryptionDisabled": { - "type": "boolean" - }, - "Location": { - "type": "string" - }, - "Status": { - "type": "string" - } - }, - "required": [ - "Status" - ], - "type": "object" - }, - "ScopeConfiguration": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "Source": { - "additionalProperties": false, - "properties": { - "Auth": { - "$ref": "#/definitions/SourceAuth" - }, - "BuildSpec": { - "type": "string" - }, - "BuildStatusConfig": { - "$ref": "#/definitions/BuildStatusConfig" - }, - "GitCloneDepth": { - "type": "integer" - }, - "GitSubmodulesConfig": { - "$ref": "#/definitions/GitSubmodulesConfig" - }, - "InsecureSsl": { - "type": "boolean" - }, - "Location": { - "type": "string" - }, - "ReportBuildStatus": { - "type": "boolean" - }, - "SourceIdentifier": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "SourceAuth": { - "additionalProperties": false, - "properties": { - "Resource": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "VpcConfig": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Subnets": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "VpcId": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CodeBuild::Project", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Artifacts": { - "$ref": "#/definitions/Artifacts" - }, - "BadgeEnabled": { - "type": "boolean" - }, - "BuildBatchConfig": { - "$ref": "#/definitions/ProjectBuildBatchConfig" - }, - "Cache": { - "$ref": "#/definitions/ProjectCache" - }, - "ConcurrentBuildLimit": { - "type": "integer" - }, - "Description": { - "type": "string" - }, - "EncryptionKey": { - "type": "string" - }, - "Environment": { - "$ref": "#/definitions/Environment" - }, - "FileSystemLocations": { - "items": { - "$ref": "#/definitions/ProjectFileSystemLocation" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - }, - "LogsConfig": { - "$ref": "#/definitions/LogsConfig" - }, - "Name": { - "type": "string" - }, - "QueuedTimeoutInMinutes": { - "type": "integer" - }, - "ResourceAccessRole": { - "type": "string" - }, - "SecondaryArtifacts": { - "items": { - "$ref": "#/definitions/Artifacts" - }, - "type": "array", - "uniqueItems": false - }, - "SecondarySourceVersions": { - "items": { - "$ref": "#/definitions/ProjectSourceVersion" - }, - "type": "array", - "uniqueItems": false - }, - "SecondarySources": { - "items": { - "$ref": "#/definitions/Source" - }, - "type": "array", - "uniqueItems": false - }, - "ServiceRole": { - "type": "string" - }, - "Source": { - "$ref": "#/definitions/Source" - }, - "SourceVersion": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TimeoutInMinutes": { - "type": "integer" - }, - "Triggers": { - "$ref": "#/definitions/ProjectTriggers" - }, - "Visibility": { - "type": "string" - }, - "VpcConfig": { - "$ref": "#/definitions/VpcConfig" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "Artifacts", - "ServiceRole", - "Environment", - "Source" - ], - "typeName": "AWS::CodeBuild::Project" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Artifacts": { + "additionalProperties": false, + "properties": { + "ArtifactIdentifier": { + "type": "string" + }, + "EncryptionDisabled": { + "type": "boolean" + }, + "Location": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "NamespaceType": { + "type": "string" + }, + "OverrideArtifactName": { + "type": "boolean" + }, + "Packaging": { + "type": "string" + }, + "Path": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "BatchRestrictions": { + "additionalProperties": false, + "properties": { + "ComputeTypesAllowed": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MaximumBuildsAllowed": { + "type": "integer" + } + }, + "type": "object" + }, + "BuildStatusConfig": { + "additionalProperties": false, + "properties": { + "Context": { + "type": "string" + }, + "TargetUrl": { + "type": "string" + } + }, + "type": "object" + }, + "CloudWatchLogsConfig": { + "additionalProperties": false, + "properties": { + "GroupName": { + "type": "string" + }, + "Status": { + "type": "string" + }, + "StreamName": { + "type": "string" + } + }, + "required": [ + "Status" + ], + "type": "object" + }, + "Environment": { + "additionalProperties": false, + "properties": { + "Certificate": { + "type": "string" + }, + "ComputeType": { + "type": "string" + }, + "EnvironmentVariables": { + "items": { + "$ref": "#/definitions/EnvironmentVariable" + }, + "type": "array", + "uniqueItems": false + }, + "Fleet": { + "$ref": "#/definitions/ProjectFleet" + }, + "Image": { + "type": "string" + }, + "ImagePullCredentialsType": { + "type": "string" + }, + "PrivilegedMode": { + "type": "boolean" + }, + "RegistryCredential": { + "$ref": "#/definitions/RegistryCredential" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type", + "Image", + "ComputeType" + ], + "type": "object" + }, + "EnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Type": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Name" + ], + "type": "object" + }, + "FilterGroup": { + "additionalProperties": false, + "type": "object" + }, + "GitSubmodulesConfig": { + "additionalProperties": false, + "properties": { + "FetchSubmodules": { + "type": "boolean" + } + }, + "required": [ + "FetchSubmodules" + ], + "type": "object" + }, + "LogsConfig": { + "additionalProperties": false, + "properties": { + "CloudWatchLogs": { + "$ref": "#/definitions/CloudWatchLogsConfig" + }, + "S3Logs": { + "$ref": "#/definitions/S3LogsConfig" + } + }, + "type": "object" + }, + "ProjectBuildBatchConfig": { + "additionalProperties": false, + "properties": { + "BatchReportMode": { + "type": "string" + }, + "CombineArtifacts": { + "type": "boolean" + }, + "Restrictions": { + "$ref": "#/definitions/BatchRestrictions" + }, + "ServiceRole": { + "type": "string" + }, + "TimeoutInMins": { + "type": "integer" + } + }, + "type": "object" + }, + "ProjectCache": { + "additionalProperties": false, + "properties": { + "CacheNamespace": { + "type": "string" + }, + "Location": { + "type": "string" + }, + "Modes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "ProjectFileSystemLocation": { + "additionalProperties": false, + "properties": { + "Identifier": { + "type": "string" + }, + "Location": { + "type": "string" + }, + "MountOptions": { + "type": "string" + }, + "MountPoint": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "MountPoint", + "Type", + "Identifier", + "Location" + ], + "type": "object" + }, + "ProjectFleet": { + "additionalProperties": false, + "properties": { + "FleetArn": { + "type": "string" + } + }, + "type": "object" + }, + "ProjectSourceVersion": { + "additionalProperties": false, + "properties": { + "SourceIdentifier": { + "type": "string" + }, + "SourceVersion": { + "type": "string" + } + }, + "required": [ + "SourceIdentifier" + ], + "type": "object" + }, + "ProjectTriggers": { + "additionalProperties": false, + "properties": { + "BuildType": { + "type": "string" + }, + "FilterGroups": { + "items": { + "$ref": "#/definitions/FilterGroup" + }, + "type": "array", + "uniqueItems": false + }, + "ScopeConfiguration": { + "$ref": "#/definitions/ScopeConfiguration" + }, + "Webhook": { + "type": "boolean" + } + }, + "type": "object" + }, + "RegistryCredential": { + "additionalProperties": false, + "properties": { + "Credential": { + "type": "string" + }, + "CredentialProvider": { + "type": "string" + } + }, + "required": [ + "Credential", + "CredentialProvider" + ], + "type": "object" + }, + "S3LogsConfig": { + "additionalProperties": false, + "properties": { + "EncryptionDisabled": { + "type": "boolean" + }, + "Location": { + "type": "string" + }, + "Status": { + "type": "string" + } + }, + "required": [ + "Status" + ], + "type": "object" + }, + "ScopeConfiguration": { + "additionalProperties": false, + "properties": { + "Domain": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scope": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Source": { + "additionalProperties": false, + "properties": { + "Auth": { + "$ref": "#/definitions/SourceAuth" + }, + "BuildSpec": { + "type": "string" + }, + "BuildStatusConfig": { + "$ref": "#/definitions/BuildStatusConfig" + }, + "GitCloneDepth": { + "type": "integer" + }, + "GitSubmodulesConfig": { + "$ref": "#/definitions/GitSubmodulesConfig" + }, + "InsecureSsl": { + "type": "boolean" + }, + "Location": { + "type": "string" + }, + "ReportBuildStatus": { + "type": "boolean" + }, + "SourceIdentifier": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "SourceAuth": { + "additionalProperties": false, + "properties": { + "Resource": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VpcConfig": { + "additionalProperties": false, + "properties": { + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Subnets": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::CodeBuild::Project", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Artifacts": { + "$ref": "#/definitions/Artifacts" + }, + "AutoRetryLimit": { + "type": "integer" + }, + "BadgeEnabled": { + "type": "boolean" + }, + "BuildBatchConfig": { + "$ref": "#/definitions/ProjectBuildBatchConfig" + }, + "Cache": { + "$ref": "#/definitions/ProjectCache" + }, + "ConcurrentBuildLimit": { + "type": "integer" + }, + "Description": { + "type": "string" + }, + "EncryptionKey": { + "type": "string" + }, + "Environment": { + "$ref": "#/definitions/Environment" + }, + "FileSystemLocations": { + "items": { + "$ref": "#/definitions/ProjectFileSystemLocation" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "LogsConfig": { + "$ref": "#/definitions/LogsConfig" + }, + "Name": { + "type": "string" + }, + "QueuedTimeoutInMinutes": { + "type": "integer" + }, + "ResourceAccessRole": { + "type": "string" + }, + "SecondaryArtifacts": { + "items": { + "$ref": "#/definitions/Artifacts" + }, + "type": "array", + "uniqueItems": false + }, + "SecondarySourceVersions": { + "items": { + "$ref": "#/definitions/ProjectSourceVersion" + }, + "type": "array", + "uniqueItems": false + }, + "SecondarySources": { + "items": { + "$ref": "#/definitions/Source" + }, + "type": "array", + "uniqueItems": false + }, + "ServiceRole": { + "type": "string" + }, + "Source": { + "$ref": "#/definitions/Source" + }, + "SourceVersion": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TimeoutInMinutes": { + "type": "integer" + }, + "Triggers": { + "$ref": "#/definitions/ProjectTriggers" + }, + "Visibility": { + "type": "string" + }, + "VpcConfig": { + "$ref": "#/definitions/VpcConfig" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Artifacts", + "ServiceRole", + "Environment", + "Source" + ], + "typeName": "AWS::CodeBuild::Project" +} diff --git a/src/schema/aws-codebuild-reportgroup.json b/src/schema/aws-codebuild-reportgroup.json index 794c8d47..6762cbdf 100644 --- a/src/schema/aws-codebuild-reportgroup.json +++ b/src/schema/aws-codebuild-reportgroup.json @@ -1,107 +1,107 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Type" - ], - "definitions": { - "ReportExportConfig": { - "additionalProperties": false, - "properties": { - "ExportConfigType": { - "type": "string" - }, - "S3Destination": { - "$ref": "#/definitions/S3ReportExportConfig" - } - }, - "required": [ - "ExportConfigType" - ], - "type": "object" - }, - "S3ReportExportConfig": { - "additionalProperties": false, - "properties": { - "Bucket": { - "type": "string" - }, - "BucketOwner": { - "type": "string" - }, - "EncryptionDisabled": { - "type": "boolean" - }, - "EncryptionKey": { - "type": "string" - }, - "Packaging": { - "type": "string" - }, - "Path": { - "type": "string" - } - }, - "required": [ - "Bucket" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CodeBuild::ReportGroup", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "DeleteReports": { - "type": "boolean" - }, - "ExportConfig": { - "$ref": "#/definitions/ReportExportConfig" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Type": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "Type", - "ExportConfig" - ], - "typeName": "AWS::CodeBuild::ReportGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type" + ], + "definitions": { + "ReportExportConfig": { + "additionalProperties": false, + "properties": { + "ExportConfigType": { + "type": "string" + }, + "S3Destination": { + "$ref": "#/definitions/S3ReportExportConfig" + } + }, + "required": [ + "ExportConfigType" + ], + "type": "object" + }, + "S3ReportExportConfig": { + "additionalProperties": false, + "properties": { + "Bucket": { + "type": "string" + }, + "BucketOwner": { + "type": "string" + }, + "EncryptionDisabled": { + "type": "boolean" + }, + "EncryptionKey": { + "type": "string" + }, + "Packaging": { + "type": "string" + }, + "Path": { + "type": "string" + } + }, + "required": [ + "Bucket" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::CodeBuild::ReportGroup", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "DeleteReports": { + "type": "boolean" + }, + "ExportConfig": { + "$ref": "#/definitions/ReportExportConfig" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Type", + "ExportConfig" + ], + "typeName": "AWS::CodeBuild::ReportGroup" +} diff --git a/src/schema/aws-codebuild-sourcecredential.json b/src/schema/aws-codebuild-sourcecredential.json index ecd99c48..604f8693 100644 --- a/src/schema/aws-codebuild-sourcecredential.json +++ b/src/schema/aws-codebuild-sourcecredential.json @@ -1,36 +1,36 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServerType" - ], - "description": "Resource Type definition for AWS::CodeBuild::SourceCredential", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AuthType": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ServerType": { - "type": "string" - }, - "Token": { - "type": "string" - }, - "Username": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ServerType", - "Token", - "AuthType" - ], - "typeName": "AWS::CodeBuild::SourceCredential" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServerType" + ], + "description": "Resource Type definition for AWS::CodeBuild::SourceCredential", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AuthType": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "ServerType": { + "type": "string" + }, + "Token": { + "type": "string" + }, + "Username": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ServerType", + "Token", + "AuthType" + ], + "typeName": "AWS::CodeBuild::SourceCredential" +} diff --git a/src/schema/aws-codecommit-repository.json b/src/schema/aws-codecommit-repository.json index c7857d77..2343ccca 100644 --- a/src/schema/aws-codecommit-repository.json +++ b/src/schema/aws-codecommit-repository.json @@ -1,147 +1,147 @@ -{ - "additionalProperties": false, - "definitions": { - "Code": { - "additionalProperties": false, - "properties": { - "BranchName": { - "type": "string" - }, - "S3": { - "$ref": "#/definitions/S3" - } - }, - "required": [ - "S3" - ], - "type": "object" - }, - "RepositoryTrigger": { - "additionalProperties": false, - "properties": { - "Branches": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "CustomData": { - "type": "string" - }, - "DestinationArn": { - "type": "string" - }, - "Events": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Name": { - "type": "string" - } - }, - "required": [ - "Events", - "DestinationArn", - "Name" - ], - "type": "object" - }, - "S3": { - "additionalProperties": false, - "properties": { - "Bucket": { - "type": "string" - }, - "Key": { - "type": "string" - }, - "ObjectVersion": { - "type": "string" - } - }, - "required": [ - "Bucket", - "Key" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CodeCommit::Repository", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "CloneUrlHttp": { - "type": "string" - }, - "CloneUrlSsh": { - "type": "string" - }, - "Code": { - "$ref": "#/definitions/Code" - }, - "Id": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "RepositoryDescription": { - "type": "string" - }, - "RepositoryName": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Triggers": { - "items": { - "$ref": "#/definitions/RepositoryTrigger" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/CloneUrlHttp", - "/properties/Id", - "/properties/Name", - "/properties/CloneUrlSsh", - "/properties/Arn" - ], - "required": [ - "RepositoryName" - ], - "typeName": "AWS::CodeCommit::Repository" -} +{ + "additionalProperties": false, + "definitions": { + "Code": { + "additionalProperties": false, + "properties": { + "BranchName": { + "type": "string" + }, + "S3": { + "$ref": "#/definitions/S3" + } + }, + "required": [ + "S3" + ], + "type": "object" + }, + "RepositoryTrigger": { + "additionalProperties": false, + "properties": { + "Branches": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "CustomData": { + "type": "string" + }, + "DestinationArn": { + "type": "string" + }, + "Events": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Name": { + "type": "string" + } + }, + "required": [ + "Events", + "DestinationArn", + "Name" + ], + "type": "object" + }, + "S3": { + "additionalProperties": false, + "properties": { + "Bucket": { + "type": "string" + }, + "Key": { + "type": "string" + }, + "ObjectVersion": { + "type": "string" + } + }, + "required": [ + "Bucket", + "Key" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::CodeCommit::Repository", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "CloneUrlHttp": { + "type": "string" + }, + "CloneUrlSsh": { + "type": "string" + }, + "Code": { + "$ref": "#/definitions/Code" + }, + "Id": { + "type": "string" + }, + "KmsKeyId": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "RepositoryDescription": { + "type": "string" + }, + "RepositoryName": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Triggers": { + "items": { + "$ref": "#/definitions/RepositoryTrigger" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/CloneUrlHttp", + "/properties/Id", + "/properties/Name", + "/properties/CloneUrlSsh", + "/properties/Arn" + ], + "required": [ + "RepositoryName" + ], + "typeName": "AWS::CodeCommit::Repository" +} diff --git a/src/schema/aws-codeconnections-connection.json b/src/schema/aws-codeconnections-connection.json index 3e7d7bb5..ff12695e 100644 --- a/src/schema/aws-codeconnections-connection.json +++ b/src/schema/aws-codeconnections-connection.json @@ -1,131 +1,136 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConnectionName", - "/properties/ProviderType", - "/properties/HostArn" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Schema for AWS::CodeConnections::Connection resource which can be used to connect external source providers with other AWS services (i.e. AWS CodePipeline)", - "handlers": { - "create": { - "permissions": [ - "codeconnections:CreateConnection", - "codeconnections:TagResource" - ] - }, - "delete": { - "permissions": [ - "codeconnections:DeleteConnection" - ] - }, - "list": { - "permissions": [ - "codeconnections:ListConnections", - "codeconnections:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "codeconnections:GetConnection", - "codeconnections:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "codeconnections:ListTagsForResource", - "codeconnections:TagResource", - "codeconnections:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConnectionArn" - ], - "properties": { - "ConnectionArn": { - "description": "The Amazon Resource Name (ARN) of the connection. The ARN is used as the connection reference when the connection is shared between AWS services.", - "maxLength": 256, - "minLength": 0, - "pattern": "arn:aws(-[\\w]+)*:.+:.+:[0-9]{12}:.+", - "type": "string" - }, - "ConnectionName": { - "description": "The name of the connection. Connection names must be unique in an AWS user account.", - "maxLength": 32, - "minLength": 1, - "type": "string" - }, - "ConnectionStatus": { - "description": "The current status of the connection.", - "type": "string" - }, - "HostArn": { - "description": "The host arn configured to represent the infrastructure where your third-party provider is installed. You must specify either a ProviderType or a HostArn.", - "maxLength": 256, - "minLength": 0, - "pattern": "arn:aws(-[\\w]+)*:.+:.+:[0-9]{12}:.+", - "type": "string" - }, - "OwnerAccountId": { - "description": "The name of the external provider where your third-party code repository is configured. For Bitbucket, this is the account ID of the owner of the Bitbucket repository.", - "maxLength": 12, - "minLength": 12, - "pattern": "[0-9]{12}", - "type": "string" - }, - "ProviderType": { - "description": "The name of the external provider where your third-party code repository is configured. You must specify either a ProviderType or a HostArn.", - "type": "string" - }, - "Tags": { - "description": "Specifies the tags applied to a connection.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ConnectionArn", - "/properties/ConnectionStatus", - "/properties/OwnerAccountId" - ], - "required": [ - "ConnectionName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codeconnections.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CodeConnections::Connection" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConnectionName", + "/properties/ProviderType", + "/properties/HostArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Schema for AWS::CodeConnections::Connection resource which can be used to connect external source providers with other AWS services (i.e. AWS CodePipeline)", + "handlers": { + "create": { + "permissions": [ + "codeconnections:CreateConnection", + "codeconnections:TagResource" + ] + }, + "delete": { + "permissions": [ + "codeconnections:DeleteConnection" + ] + }, + "list": { + "permissions": [ + "codeconnections:ListConnections", + "codeconnections:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "codeconnections:GetConnection", + "codeconnections:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "codeconnections:ListTagsForResource", + "codeconnections:TagResource", + "codeconnections:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConnectionArn" + ], + "properties": { + "ConnectionArn": { + "description": "The Amazon Resource Name (ARN) of the connection. The ARN is used as the connection reference when the connection is shared between AWS services.", + "maxLength": 256, + "minLength": 0, + "pattern": "arn:aws(-[\\w]+)*:.+:.+:[0-9]{12}:.+", + "type": "string" + }, + "ConnectionName": { + "description": "The name of the connection. Connection names must be unique in an AWS user account.", + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + "ConnectionStatus": { + "description": "The current status of the connection.", + "type": "string" + }, + "HostArn": { + "description": "The host arn configured to represent the infrastructure where your third-party provider is installed. You must specify either a ProviderType or a HostArn.", + "maxLength": 256, + "minLength": 0, + "pattern": "arn:aws(-[\\w]+)*:.+:.+:[0-9]{12}:.+", + "type": "string" + }, + "OwnerAccountId": { + "description": "The name of the external provider where your third-party code repository is configured. For Bitbucket, this is the account ID of the owner of the Bitbucket repository.", + "maxLength": 12, + "minLength": 12, + "pattern": "[0-9]{12}", + "type": "string" + }, + "ProviderType": { + "description": "The name of the external provider where your third-party code repository is configured. You must specify either a ProviderType or a HostArn.", + "type": "string" + }, + "Tags": { + "description": "Specifies the tags applied to a connection.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ConnectionArn", + "/properties/ConnectionStatus", + "/properties/OwnerAccountId" + ], + "required": [ + "ConnectionName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codeconnections.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "codeconnections:TagResource", + "codeconnections:ListTagsForResource", + "codeconnections:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CodeConnections::Connection" +} diff --git a/src/schema/aws-codedeploy-application.json b/src/schema/aws-codedeploy-application.json index 792609e4..b9d9a501 100644 --- a/src/schema/aws-codedeploy-application.json +++ b/src/schema/aws-codedeploy-application.json @@ -1,88 +1,92 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationName", - "/properties/ComputePlatform" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The AWS::CodeDeploy::Application resource creates an AWS CodeDeploy application", - "handlers": { - "create": { - "permissions": [ - "codedeploy:CreateApplication", - "codedeploy:TagResource" - ] - }, - "delete": { - "permissions": [ - "codedeploy:GetApplication", - "codedeploy:DeleteApplication" - ] - }, - "list": { - "permissions": [ - "codedeploy:ListApplications" - ] - }, - "read": { - "permissions": [ - "codedeploy:GetApplication", - "codedeploy:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "codedeploy:TagResource", - "codedeploy:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationName" - ], - "properties": { - "ApplicationName": { - "description": "A name for the application. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the application name.", - "type": "string" - }, - "ComputePlatform": { - "description": "The compute platform that CodeDeploy deploys the application to.", - "type": "string" - }, - "Tags": { - "description": "The metadata that you apply to CodeDeploy applications to help you organize and categorize them. Each tag consists of a key and an optional value, both of which you define. ", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CodeDeploy::Application" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationName", + "/properties/ComputePlatform" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The AWS::CodeDeploy::Application resource creates an AWS CodeDeploy application", + "handlers": { + "create": { + "permissions": [ + "codedeploy:CreateApplication", + "codedeploy:TagResource" + ] + }, + "delete": { + "permissions": [ + "codedeploy:GetApplication", + "codedeploy:DeleteApplication" + ] + }, + "list": { + "permissions": [ + "codedeploy:ListApplications" + ] + }, + "read": { + "permissions": [ + "codedeploy:GetApplication", + "codedeploy:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "codedeploy:TagResource", + "codedeploy:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationName" + ], + "properties": { + "ApplicationName": { + "description": "A name for the application. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the application name.", + "type": "string" + }, + "ComputePlatform": { + "description": "The compute platform that CodeDeploy deploys the application to.", + "type": "string" + }, + "Tags": { + "description": "The metadata that you apply to CodeDeploy applications to help you organize and categorize them. Each tag consists of a key and an optional value, both of which you define. ", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "codedeploy:TagResource", + "codedeploy:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CodeDeploy::Application" +} diff --git a/src/schema/aws-codedeploy-deploymentconfig.json b/src/schema/aws-codedeploy-deploymentconfig.json index cc48a8e5..40a7aae9 100644 --- a/src/schema/aws-codedeploy-deploymentconfig.json +++ b/src/schema/aws-codedeploy-deploymentconfig.json @@ -1,169 +1,169 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DeploymentConfigName", - "/properties/MinimumHealthyHosts", - "/properties/ComputePlatform", - "/properties/ZonalConfig", - "/properties/TrafficRoutingConfig" - ], - "definitions": { - "MinimumHealthyHosts": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - }, - "Value": { - "type": "integer" - } - }, - "required": [ - "Type", - "Value" - ], - "type": "object" - }, - "MinimumHealthyHostsPerZone": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - }, - "Value": { - "type": "integer" - } - }, - "required": [ - "Type", - "Value" - ], - "type": "object" - }, - "TimeBasedCanary": { - "additionalProperties": false, - "properties": { - "CanaryInterval": { - "type": "integer" - }, - "CanaryPercentage": { - "type": "integer" - } - }, - "required": [ - "CanaryPercentage", - "CanaryInterval" - ], - "type": "object" - }, - "TimeBasedLinear": { - "additionalProperties": false, - "properties": { - "LinearInterval": { - "type": "integer" - }, - "LinearPercentage": { - "type": "integer" - } - }, - "required": [ - "LinearInterval", - "LinearPercentage" - ], - "type": "object" - }, - "TrafficRoutingConfig": { - "additionalProperties": false, - "properties": { - "TimeBasedCanary": { - "$ref": "#/definitions/TimeBasedCanary" - }, - "TimeBasedLinear": { - "$ref": "#/definitions/TimeBasedLinear" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ZonalConfig": { - "additionalProperties": false, - "properties": { - "FirstZoneMonitorDurationInSeconds": { - "format": "int64", - "type": "integer" - }, - "MinimumHealthyHostsPerZone": { - "$ref": "#/definitions/MinimumHealthyHostsPerZone" - }, - "MonitorDurationInSeconds": { - "format": "int64", - "type": "integer" - } - }, - "required": [], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CodeDeploy::DeploymentConfig", - "handlers": { - "create": { - "permissions": [ - "codedeploy:CreateDeploymentConfig" - ] - }, - "delete": { - "permissions": [ - "codedeploy:GetDeploymentConfig", - "codedeploy:DeleteDeploymentConfig" - ] - }, - "list": { - "permissions": [ - "codedeploy:ListDeploymentConfigs" - ] - }, - "read": { - "permissions": [ - "codedeploy:GetDeploymentConfig" - ] - } - }, - "primaryIdentifier": [ - "/properties/DeploymentConfigName" - ], - "properties": { - "ComputePlatform": { - "description": "The destination platform type for the deployment (Lambda, Server, or ECS).", - "type": "string" - }, - "DeploymentConfigName": { - "description": "A name for the deployment configuration. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the deployment configuration name. For more information, see Name Type.", - "type": "string" - }, - "MinimumHealthyHosts": { - "$ref": "#/definitions/MinimumHealthyHosts", - "description": "The minimum number of healthy instances that should be available at any time during the deployment. There are two parameters expected in the input: type and value." - }, - "TrafficRoutingConfig": { - "$ref": "#/definitions/TrafficRoutingConfig", - "description": "The configuration that specifies how the deployment traffic is routed." - }, - "ZonalConfig": { - "$ref": "#/definitions/ZonalConfig", - "description": "The zonal deployment config that specifies how the zonal deployment behaves" - } - }, - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codedeploy", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::CodeDeploy::DeploymentConfig" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DeploymentConfigName", + "/properties/MinimumHealthyHosts", + "/properties/ComputePlatform", + "/properties/ZonalConfig", + "/properties/TrafficRoutingConfig" + ], + "definitions": { + "MinimumHealthyHosts": { + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + }, + "Value": { + "type": "integer" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, + "MinimumHealthyHostsPerZone": { + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + }, + "Value": { + "type": "integer" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, + "TimeBasedCanary": { + "additionalProperties": false, + "properties": { + "CanaryInterval": { + "type": "integer" + }, + "CanaryPercentage": { + "type": "integer" + } + }, + "required": [ + "CanaryPercentage", + "CanaryInterval" + ], + "type": "object" + }, + "TimeBasedLinear": { + "additionalProperties": false, + "properties": { + "LinearInterval": { + "type": "integer" + }, + "LinearPercentage": { + "type": "integer" + } + }, + "required": [ + "LinearInterval", + "LinearPercentage" + ], + "type": "object" + }, + "TrafficRoutingConfig": { + "additionalProperties": false, + "properties": { + "TimeBasedCanary": { + "$ref": "#/definitions/TimeBasedCanary" + }, + "TimeBasedLinear": { + "$ref": "#/definitions/TimeBasedLinear" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "ZonalConfig": { + "additionalProperties": false, + "properties": { + "FirstZoneMonitorDurationInSeconds": { + "format": "int64", + "type": "integer" + }, + "MinimumHealthyHostsPerZone": { + "$ref": "#/definitions/MinimumHealthyHostsPerZone" + }, + "MonitorDurationInSeconds": { + "format": "int64", + "type": "integer" + } + }, + "required": [], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::CodeDeploy::DeploymentConfig", + "handlers": { + "create": { + "permissions": [ + "codedeploy:CreateDeploymentConfig" + ] + }, + "delete": { + "permissions": [ + "codedeploy:GetDeploymentConfig", + "codedeploy:DeleteDeploymentConfig" + ] + }, + "list": { + "permissions": [ + "codedeploy:ListDeploymentConfigs" + ] + }, + "read": { + "permissions": [ + "codedeploy:GetDeploymentConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/DeploymentConfigName" + ], + "properties": { + "ComputePlatform": { + "description": "The destination platform type for the deployment (Lambda, Server, or ECS).", + "type": "string" + }, + "DeploymentConfigName": { + "description": "A name for the deployment configuration. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the deployment configuration name. For more information, see Name Type.", + "type": "string" + }, + "MinimumHealthyHosts": { + "$ref": "#/definitions/MinimumHealthyHosts", + "description": "The minimum number of healthy instances that should be available at any time during the deployment. There are two parameters expected in the input: type and value." + }, + "TrafficRoutingConfig": { + "$ref": "#/definitions/TrafficRoutingConfig", + "description": "The configuration that specifies how the deployment traffic is routed." + }, + "ZonalConfig": { + "$ref": "#/definitions/ZonalConfig", + "description": "The zonal deployment config that specifies how the zonal deployment behaves" + } + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codedeploy", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CodeDeploy::DeploymentConfig" +} diff --git a/src/schema/aws-codedeploy-deploymentgroup.json b/src/schema/aws-codedeploy-deploymentgroup.json index 53ed415f..199d2268 100644 --- a/src/schema/aws-codedeploy-deploymentgroup.json +++ b/src/schema/aws-codedeploy-deploymentgroup.json @@ -1,498 +1,498 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DeploymentGroupName", - "/properties/ApplicationName" - ], - "definitions": { - "Alarm": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - } - }, - "type": "object" - }, - "AlarmConfiguration": { - "additionalProperties": false, - "properties": { - "Alarms": { - "items": { - "$ref": "#/definitions/Alarm" - }, - "type": "array", - "uniqueItems": true - }, - "Enabled": { - "type": "boolean" - }, - "IgnorePollAlarmFailure": { - "type": "boolean" - } - }, - "type": "object" - }, - "AutoRollbackConfiguration": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "Events": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "BlueGreenDeploymentConfiguration": { - "additionalProperties": false, - "properties": { - "DeploymentReadyOption": { - "$ref": "#/definitions/DeploymentReadyOption" - }, - "GreenFleetProvisioningOption": { - "$ref": "#/definitions/GreenFleetProvisioningOption" - }, - "TerminateBlueInstancesOnDeploymentSuccess": { - "$ref": "#/definitions/BlueInstanceTerminationOption" - } - }, - "type": "object" - }, - "BlueInstanceTerminationOption": { - "additionalProperties": false, - "properties": { - "Action": { - "type": "string" - }, - "TerminationWaitTimeInMinutes": { - "type": "integer" - } - }, - "type": "object" - }, - "Deployment": { - "additionalProperties": false, - "properties": { - "Description": { - "type": "string" - }, - "IgnoreApplicationStopFailures": { - "type": "boolean" - }, - "Revision": { - "$ref": "#/definitions/RevisionLocation" - } - }, - "required": [ - "Revision" - ], - "type": "object" - }, - "DeploymentReadyOption": { - "additionalProperties": false, - "properties": { - "ActionOnTimeout": { - "type": "string" - }, - "WaitTimeInMinutes": { - "type": "integer" - } - }, - "type": "object" - }, - "DeploymentStyle": { - "additionalProperties": false, - "properties": { - "DeploymentOption": { - "type": "string" - }, - "DeploymentType": { - "type": "string" - } - }, - "type": "object" - }, - "EC2TagFilter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Type": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "EC2TagSet": { - "additionalProperties": false, - "properties": { - "Ec2TagSetList": { - "items": { - "$ref": "#/definitions/EC2TagSetListObject" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "EC2TagSetListObject": { - "additionalProperties": false, - "properties": { - "Ec2TagGroup": { - "items": { - "$ref": "#/definitions/EC2TagFilter" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "ECSService": { - "additionalProperties": false, - "properties": { - "ClusterName": { - "type": "string" - }, - "ServiceName": { - "type": "string" - } - }, - "required": [ - "ServiceName", - "ClusterName" - ], - "type": "object" - }, - "ELBInfo": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - } - }, - "type": "object" - }, - "GitHubLocation": { - "additionalProperties": false, - "properties": { - "CommitId": { - "type": "string" - }, - "Repository": { - "type": "string" - } - }, - "required": [ - "Repository", - "CommitId" - ], - "type": "object" - }, - "GreenFleetProvisioningOption": { - "additionalProperties": false, - "properties": { - "Action": { - "type": "string" - } - }, - "type": "object" - }, - "LoadBalancerInfo": { - "additionalProperties": false, - "properties": { - "ElbInfoList": { - "items": { - "$ref": "#/definitions/ELBInfo" - }, - "type": "array", - "uniqueItems": true - }, - "TargetGroupInfoList": { - "items": { - "$ref": "#/definitions/TargetGroupInfo" - }, - "type": "array", - "uniqueItems": true - }, - "TargetGroupPairInfoList": { - "items": { - "$ref": "#/definitions/TargetGroupPairInfo" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "OnPremisesTagSet": { - "additionalProperties": false, - "properties": { - "OnPremisesTagSetList": { - "items": { - "$ref": "#/definitions/OnPremisesTagSetListObject" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "OnPremisesTagSetListObject": { - "additionalProperties": false, - "properties": { - "OnPremisesTagGroup": { - "items": { - "$ref": "#/definitions/TagFilter" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "RevisionLocation": { - "additionalProperties": false, - "properties": { - "GitHubLocation": { - "$ref": "#/definitions/GitHubLocation" - }, - "RevisionType": { - "type": "string" - }, - "S3Location": { - "$ref": "#/definitions/S3Location" - } - }, - "type": "object" - }, - "S3Location": { - "additionalProperties": false, - "properties": { - "Bucket": { - "type": "string" - }, - "BundleType": { - "type": "string" - }, - "ETag": { - "type": "string" - }, - "Key": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Bucket", - "Key" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TagFilter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Type": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "TargetGroupInfo": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - } - }, - "type": "object" - }, - "TargetGroupPairInfo": { - "additionalProperties": false, - "properties": { - "ProdTrafficRoute": { - "$ref": "#/definitions/TrafficRoute" - }, - "TargetGroups": { - "items": { - "$ref": "#/definitions/TargetGroupInfo" - }, - "type": "array", - "uniqueItems": true - }, - "TestTrafficRoute": { - "$ref": "#/definitions/TrafficRoute" - } - }, - "type": "object" - }, - "TrafficRoute": { - "additionalProperties": false, - "properties": { - "ListenerArns": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "TriggerConfig": { - "additionalProperties": false, - "properties": { - "TriggerEvents": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "TriggerName": { - "type": "string" - }, - "TriggerTargetArn": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CodeDeploy::DeploymentGroup", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AlarmConfiguration": { - "$ref": "#/definitions/AlarmConfiguration" - }, - "ApplicationName": { - "type": "string" - }, - "AutoRollbackConfiguration": { - "$ref": "#/definitions/AutoRollbackConfiguration" - }, - "AutoScalingGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "BlueGreenDeploymentConfiguration": { - "$ref": "#/definitions/BlueGreenDeploymentConfiguration" - }, - "Deployment": { - "$ref": "#/definitions/Deployment" - }, - "DeploymentConfigName": { - "type": "string" - }, - "DeploymentGroupName": { - "type": "string" - }, - "DeploymentStyle": { - "$ref": "#/definitions/DeploymentStyle" - }, - "ECSServices": { - "items": { - "$ref": "#/definitions/ECSService" - }, - "type": "array", - "uniqueItems": true - }, - "Ec2TagFilters": { - "items": { - "$ref": "#/definitions/EC2TagFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Ec2TagSet": { - "$ref": "#/definitions/EC2TagSet" - }, - "Id": { - "type": "string" - }, - "LoadBalancerInfo": { - "$ref": "#/definitions/LoadBalancerInfo" - }, - "OnPremisesInstanceTagFilters": { - "items": { - "$ref": "#/definitions/TagFilter" - }, - "type": "array", - "uniqueItems": true - }, - "OnPremisesTagSet": { - "$ref": "#/definitions/OnPremisesTagSet" - }, - "OutdatedInstancesStrategy": { - "type": "string" - }, - "ServiceRoleArn": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TerminationHookEnabled": { - "type": "boolean" - }, - "TriggerConfigurations": { - "items": { - "$ref": "#/definitions/TriggerConfig" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ApplicationName", - "ServiceRoleArn" - ], - "typeName": "AWS::CodeDeploy::DeploymentGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DeploymentGroupName", + "/properties/ApplicationName" + ], + "definitions": { + "Alarm": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "type": "object" + }, + "AlarmConfiguration": { + "additionalProperties": false, + "properties": { + "Alarms": { + "items": { + "$ref": "#/definitions/Alarm" + }, + "type": "array", + "uniqueItems": true + }, + "Enabled": { + "type": "boolean" + }, + "IgnorePollAlarmFailure": { + "type": "boolean" + } + }, + "type": "object" + }, + "AutoRollbackConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "Events": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "BlueGreenDeploymentConfiguration": { + "additionalProperties": false, + "properties": { + "DeploymentReadyOption": { + "$ref": "#/definitions/DeploymentReadyOption" + }, + "GreenFleetProvisioningOption": { + "$ref": "#/definitions/GreenFleetProvisioningOption" + }, + "TerminateBlueInstancesOnDeploymentSuccess": { + "$ref": "#/definitions/BlueInstanceTerminationOption" + } + }, + "type": "object" + }, + "BlueInstanceTerminationOption": { + "additionalProperties": false, + "properties": { + "Action": { + "type": "string" + }, + "TerminationWaitTimeInMinutes": { + "type": "integer" + } + }, + "type": "object" + }, + "Deployment": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "IgnoreApplicationStopFailures": { + "type": "boolean" + }, + "Revision": { + "$ref": "#/definitions/RevisionLocation" + } + }, + "required": [ + "Revision" + ], + "type": "object" + }, + "DeploymentReadyOption": { + "additionalProperties": false, + "properties": { + "ActionOnTimeout": { + "type": "string" + }, + "WaitTimeInMinutes": { + "type": "integer" + } + }, + "type": "object" + }, + "DeploymentStyle": { + "additionalProperties": false, + "properties": { + "DeploymentOption": { + "type": "string" + }, + "DeploymentType": { + "type": "string" + } + }, + "type": "object" + }, + "EC2TagFilter": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Type": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "EC2TagSet": { + "additionalProperties": false, + "properties": { + "Ec2TagSetList": { + "items": { + "$ref": "#/definitions/EC2TagSetListObject" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "EC2TagSetListObject": { + "additionalProperties": false, + "properties": { + "Ec2TagGroup": { + "items": { + "$ref": "#/definitions/EC2TagFilter" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ECSService": { + "additionalProperties": false, + "properties": { + "ClusterName": { + "type": "string" + }, + "ServiceName": { + "type": "string" + } + }, + "required": [ + "ServiceName", + "ClusterName" + ], + "type": "object" + }, + "ELBInfo": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "type": "object" + }, + "GitHubLocation": { + "additionalProperties": false, + "properties": { + "CommitId": { + "type": "string" + }, + "Repository": { + "type": "string" + } + }, + "required": [ + "Repository", + "CommitId" + ], + "type": "object" + }, + "GreenFleetProvisioningOption": { + "additionalProperties": false, + "properties": { + "Action": { + "type": "string" + } + }, + "type": "object" + }, + "LoadBalancerInfo": { + "additionalProperties": false, + "properties": { + "ElbInfoList": { + "items": { + "$ref": "#/definitions/ELBInfo" + }, + "type": "array", + "uniqueItems": true + }, + "TargetGroupInfoList": { + "items": { + "$ref": "#/definitions/TargetGroupInfo" + }, + "type": "array", + "uniqueItems": true + }, + "TargetGroupPairInfoList": { + "items": { + "$ref": "#/definitions/TargetGroupPairInfo" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "OnPremisesTagSet": { + "additionalProperties": false, + "properties": { + "OnPremisesTagSetList": { + "items": { + "$ref": "#/definitions/OnPremisesTagSetListObject" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "OnPremisesTagSetListObject": { + "additionalProperties": false, + "properties": { + "OnPremisesTagGroup": { + "items": { + "$ref": "#/definitions/TagFilter" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "RevisionLocation": { + "additionalProperties": false, + "properties": { + "GitHubLocation": { + "$ref": "#/definitions/GitHubLocation" + }, + "RevisionType": { + "type": "string" + }, + "S3Location": { + "$ref": "#/definitions/S3Location" + } + }, + "type": "object" + }, + "S3Location": { + "additionalProperties": false, + "properties": { + "Bucket": { + "type": "string" + }, + "BundleType": { + "type": "string" + }, + "ETag": { + "type": "string" + }, + "Key": { + "type": "string" + }, + "Version": { + "type": "string" + } + }, + "required": [ + "Bucket", + "Key" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagFilter": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Type": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "TargetGroupInfo": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "type": "object" + }, + "TargetGroupPairInfo": { + "additionalProperties": false, + "properties": { + "ProdTrafficRoute": { + "$ref": "#/definitions/TrafficRoute" + }, + "TargetGroups": { + "items": { + "$ref": "#/definitions/TargetGroupInfo" + }, + "type": "array", + "uniqueItems": true + }, + "TestTrafficRoute": { + "$ref": "#/definitions/TrafficRoute" + } + }, + "type": "object" + }, + "TrafficRoute": { + "additionalProperties": false, + "properties": { + "ListenerArns": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "TriggerConfig": { + "additionalProperties": false, + "properties": { + "TriggerEvents": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "TriggerName": { + "type": "string" + }, + "TriggerTargetArn": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::CodeDeploy::DeploymentGroup", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AlarmConfiguration": { + "$ref": "#/definitions/AlarmConfiguration" + }, + "ApplicationName": { + "type": "string" + }, + "AutoRollbackConfiguration": { + "$ref": "#/definitions/AutoRollbackConfiguration" + }, + "AutoScalingGroups": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "BlueGreenDeploymentConfiguration": { + "$ref": "#/definitions/BlueGreenDeploymentConfiguration" + }, + "Deployment": { + "$ref": "#/definitions/Deployment" + }, + "DeploymentConfigName": { + "type": "string" + }, + "DeploymentGroupName": { + "type": "string" + }, + "DeploymentStyle": { + "$ref": "#/definitions/DeploymentStyle" + }, + "ECSServices": { + "items": { + "$ref": "#/definitions/ECSService" + }, + "type": "array", + "uniqueItems": true + }, + "Ec2TagFilters": { + "items": { + "$ref": "#/definitions/EC2TagFilter" + }, + "type": "array", + "uniqueItems": true + }, + "Ec2TagSet": { + "$ref": "#/definitions/EC2TagSet" + }, + "Id": { + "type": "string" + }, + "LoadBalancerInfo": { + "$ref": "#/definitions/LoadBalancerInfo" + }, + "OnPremisesInstanceTagFilters": { + "items": { + "$ref": "#/definitions/TagFilter" + }, + "type": "array", + "uniqueItems": true + }, + "OnPremisesTagSet": { + "$ref": "#/definitions/OnPremisesTagSet" + }, + "OutdatedInstancesStrategy": { + "type": "string" + }, + "ServiceRoleArn": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TerminationHookEnabled": { + "type": "boolean" + }, + "TriggerConfigurations": { + "items": { + "$ref": "#/definitions/TriggerConfig" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationName", + "ServiceRoleArn" + ], + "typeName": "AWS::CodeDeploy::DeploymentGroup" +} diff --git a/src/schema/aws-codeguruprofiler-profilinggroup.json b/src/schema/aws-codeguruprofiler-profilinggroup.json index f7690708..4e5f2cad 100644 --- a/src/schema/aws-codeguruprofiler-profilinggroup.json +++ b/src/schema/aws-codeguruprofiler-profilinggroup.json @@ -1,193 +1,193 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProfilingGroupName", - "/properties/ComputePlatform" - ], - "definitions": { - "Channel": { - "description": "Notification medium for users to get alerted for events that occur in application profile. We support SNS topic as a notification channel.", - "properties": { - "channelId": { - "$ref": "#/definitions/ChannelId" - }, - "channelUri": { - "$ref": "#/definitions/ChannelUri" - } - }, - "required": [ - "channelUri" - ], - "type": "object" - }, - "ChannelId": { - "description": "Unique identifier for each Channel in the notification configuration of a Profiling Group", - "pattern": "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}", - "type": "string" - }, - "ChannelUri": { - "description": "Unique arn of the resource to be used for notifications. We support a valid SNS topic arn as a channel uri.", - "pattern": "^arn:aws([-\\w]*):[a-z-]+:(([a-z]+-)+[0-9]+)?:([0-9]{12}):[^.]+$", - "type": "string" - }, - "IamArn": { - "pattern": "^arn:aws([-\\w]*):iam::([0-9]{12}):[\\S]+$", - "type": "string" - }, - "ProfilingGroupArn": { - "pattern": "^arn:aws([-\\w]*):codeguru-profiler:(([a-z]+-)+[0-9]+):([0-9]{12}):profilingGroup/[^.]+$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. The allowed characters across services are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. The allowed characters across services are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "This resource schema represents the Profiling Group resource in the Amazon CodeGuru Profiler service.", - "handlers": { - "create": { - "permissions": [ - "sns:Publish", - "codeguru-profiler:AddNotificationChannels", - "codeguru-profiler:CreateProfilingGroup", - "codeguru-profiler:PutPermission", - "codeguru-profiler:TagResource" - ] - }, - "delete": { - "permissions": [ - "codeguru-profiler:DeleteProfilingGroup" - ] - }, - "list": { - "permissions": [ - "codeguru-profiler:ListProfilingGroups", - "codeguru-profiler:ListTagsForResource", - "codeguru-profiler:GetNotificationConfiguration", - "codeguru-profiler:GetPolicy" - ] - }, - "read": { - "permissions": [ - "codeguru-profiler:DescribeProfilingGroup", - "codeguru-profiler:ListTagsForResource", - "codeguru-profiler:GetNotificationConfiguration", - "codeguru-profiler:GetPolicy" - ] - }, - "update": { - "permissions": [ - "sns:Publish", - "codeguru-profiler:DescribeProfilingGroup", - "codeguru-profiler:AddNotificationChannels", - "codeguru-profiler:GetNotificationConfiguration", - "codeguru-profiler:RemoveNotificationChannel", - "codeguru-profiler:PutPermission", - "codeguru-profiler:RemovePermission", - "codeguru-profiler:GetPolicy", - "codeguru-profiler:TagResource", - "codeguru-profiler:UntagResource", - "codeguru-profiler:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ProfilingGroupName" - ], - "properties": { - "AgentPermissions": { - "additionalProperties": false, - "description": "The agent permissions attached to this profiling group.", - "properties": { - "Principals": { - "description": "The principals for the agent permissions.", - "items": { - "$ref": "#/definitions/IamArn" - }, - "type": "array" - } - }, - "required": [ - "Principals" - ], - "type": "object" - }, - "AnomalyDetectionNotificationConfiguration": { - "description": "Configuration for Notification Channels for Anomaly Detection feature in CodeGuru Profiler which enables customers to detect anomalies in the application profile for those methods that represent the highest proportion of CPU time or latency", - "items": { - "$ref": "#/definitions/Channel" - }, - "type": "array" - }, - "Arn": { - "$ref": "#/definitions/ProfilingGroupArn", - "description": "The Amazon Resource Name (ARN) of the specified profiling group.", - "examples": [ - "arn:aws:codeguru-profiler:us-east-1:000000000000:profilingGroup/My-example-profiling-group" - ] - }, - "ComputePlatform": { - "description": "The compute platform of the profiling group.", - "enum": [ - "Default", - "AWSLambda" - ], - "type": "string" - }, - "ProfilingGroupName": { - "description": "The name of the profiling group.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\w-]+$", - "type": "string" - }, - "Tags": { - "description": "The tags associated with a profiling group.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "ProfilingGroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codeguru-profiler", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "codeguru-profiler:TagResource", - "codeguru-profiler:ListTagsForResource", - "codeguru-profiler:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CodeGuruProfiler::ProfilingGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ProfilingGroupName", + "/properties/ComputePlatform" + ], + "definitions": { + "Channel": { + "description": "Notification medium for users to get alerted for events that occur in application profile. We support SNS topic as a notification channel.", + "properties": { + "channelId": { + "$ref": "#/definitions/ChannelId" + }, + "channelUri": { + "$ref": "#/definitions/ChannelUri" + } + }, + "required": [ + "channelUri" + ], + "type": "object" + }, + "ChannelId": { + "description": "Unique identifier for each Channel in the notification configuration of a Profiling Group", + "pattern": "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}", + "type": "string" + }, + "ChannelUri": { + "description": "Unique arn of the resource to be used for notifications. We support a valid SNS topic arn as a channel uri.", + "pattern": "^arn:aws([-\\w]*):[a-z-]+:(([a-z]+-)+[0-9]+)?:([0-9]{12}):[^.]+$", + "type": "string" + }, + "IamArn": { + "pattern": "^arn:aws([-\\w]*):iam::([0-9]{12}):[\\S]+$", + "type": "string" + }, + "ProfilingGroupArn": { + "pattern": "^arn:aws([-\\w]*):codeguru-profiler:(([a-z]+-)+[0-9]+):([0-9]{12}):profilingGroup/[^.]+$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. The allowed characters across services are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. The allowed characters across services are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "This resource schema represents the Profiling Group resource in the Amazon CodeGuru Profiler service.", + "handlers": { + "create": { + "permissions": [ + "sns:Publish", + "codeguru-profiler:AddNotificationChannels", + "codeguru-profiler:CreateProfilingGroup", + "codeguru-profiler:PutPermission", + "codeguru-profiler:TagResource" + ] + }, + "delete": { + "permissions": [ + "codeguru-profiler:DeleteProfilingGroup" + ] + }, + "list": { + "permissions": [ + "codeguru-profiler:ListProfilingGroups", + "codeguru-profiler:ListTagsForResource", + "codeguru-profiler:GetNotificationConfiguration", + "codeguru-profiler:GetPolicy" + ] + }, + "read": { + "permissions": [ + "codeguru-profiler:DescribeProfilingGroup", + "codeguru-profiler:ListTagsForResource", + "codeguru-profiler:GetNotificationConfiguration", + "codeguru-profiler:GetPolicy" + ] + }, + "update": { + "permissions": [ + "sns:Publish", + "codeguru-profiler:DescribeProfilingGroup", + "codeguru-profiler:AddNotificationChannels", + "codeguru-profiler:GetNotificationConfiguration", + "codeguru-profiler:RemoveNotificationChannel", + "codeguru-profiler:PutPermission", + "codeguru-profiler:RemovePermission", + "codeguru-profiler:GetPolicy", + "codeguru-profiler:TagResource", + "codeguru-profiler:UntagResource", + "codeguru-profiler:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ProfilingGroupName" + ], + "properties": { + "AgentPermissions": { + "additionalProperties": false, + "description": "The agent permissions attached to this profiling group.", + "properties": { + "Principals": { + "description": "The principals for the agent permissions.", + "items": { + "$ref": "#/definitions/IamArn" + }, + "type": "array" + } + }, + "required": [ + "Principals" + ], + "type": "object" + }, + "AnomalyDetectionNotificationConfiguration": { + "description": "Configuration for Notification Channels for Anomaly Detection feature in CodeGuru Profiler which enables customers to detect anomalies in the application profile for those methods that represent the highest proportion of CPU time or latency", + "items": { + "$ref": "#/definitions/Channel" + }, + "type": "array" + }, + "Arn": { + "$ref": "#/definitions/ProfilingGroupArn", + "description": "The Amazon Resource Name (ARN) of the specified profiling group.", + "examples": [ + "arn:aws:codeguru-profiler:us-east-1:000000000000:profilingGroup/My-example-profiling-group" + ] + }, + "ComputePlatform": { + "description": "The compute platform of the profiling group.", + "enum": [ + "Default", + "AWSLambda" + ], + "type": "string" + }, + "ProfilingGroupName": { + "description": "The name of the profiling group.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\w-]+$", + "type": "string" + }, + "Tags": { + "description": "The tags associated with a profiling group.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "ProfilingGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codeguru-profiler", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "codeguru-profiler:TagResource", + "codeguru-profiler:ListTagsForResource", + "codeguru-profiler:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CodeGuruProfiler::ProfilingGroup" +} diff --git a/src/schema/aws-codegurureviewer-repositoryassociation.json b/src/schema/aws-codegurureviewer-repositoryassociation.json index 1a65d89a..073f4536 100644 --- a/src/schema/aws-codegurureviewer-repositoryassociation.json +++ b/src/schema/aws-codegurureviewer-repositoryassociation.json @@ -1,149 +1,149 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Type", - "/properties/Tags", - "/properties/BucketName", - "/properties/Owner", - "/properties/ConnectionArn" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. The allowed characters across services are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. The allowed characters across services are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "This resource schema represents the RepositoryAssociation resource in the Amazon CodeGuru Reviewer service.", - "handlers": { - "create": { - "permissions": [ - "codeguru-reviewer:DescribeRepositoryAssociation", - "codeguru-reviewer:AssociateRepository", - "codeguru-reviewer:TagResource", - "iam:CreateServiceLinkedRole", - "codecommit:TagResource", - "codecommit:GitPull", - "codecommit:TagResource", - "events:PutRule", - "events:PutTargets", - "codestar-connections:ListBranches", - "codestar-connections:ListRepositories", - "codestar-connections:ListTagsForResource", - "codestar-connections:PassConnection", - "codestar-connections:TagResource", - "codestar-connections:UseConnection", - "s3:ListBucket" - ] - }, - "delete": { - "permissions": [ - "codeguru-reviewer:DescribeRepositoryAssociation", - "codeguru-reviewer:DisassociateRepository", - "codecommit:UntagResource", - "events:DeleteRule", - "events:RemoveTargets", - "codestar-connections:UntagResource", - "codestar-connections:ListTagsForResource" - ] - }, - "list": { - "permissions": [ - "codeguru-reviewer:ListRepositoryAssociations" - ] - }, - "read": { - "permissions": [ - "codeguru-reviewer:DescribeRepositoryAssociation", - "codeguru-reviewer:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AssociationArn" - ], - "properties": { - "AssociationArn": { - "description": "The Amazon Resource Name (ARN) of the repository association.", - "maxLength": 256, - "minLength": 0, - "pattern": "arn:aws(-[\\w]+)*:.+:.+:[0-9]{12}:.+", - "type": "string" - }, - "BucketName": { - "description": "The name of the S3 bucket associated with an associated S3 repository. It must start with `codeguru-reviewer-`.", - "maxLength": 63, - "minLength": 3, - "pattern": "^\\S(.*\\S)?$", - "type": "string" - }, - "ConnectionArn": { - "description": "The Amazon Resource Name (ARN) of an AWS CodeStar Connections connection.", - "maxLength": 256, - "minLength": 0, - "pattern": "arn:aws(-[\\w]+)*:.+:.+:[0-9]{12}:.+", - "type": "string" - }, - "Name": { - "description": "Name of the repository to be associated.", - "maxLength": 100, - "minLength": 1, - "pattern": "^\\S[\\w.-]*$", - "type": "string" - }, - "Owner": { - "description": "The owner of the repository. For a Bitbucket repository, this is the username for the account that owns the repository.", - "maxLength": 100, - "minLength": 1, - "pattern": "^\\S(.*\\S)?$", - "type": "string" - }, - "Tags": { - "description": "The tags associated with a repository association.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": false - }, - "Type": { - "description": "The type of repository to be associated.", - "enum": [ - "CodeCommit", - "Bitbucket", - "GitHubEnterpriseServer", - "S3Bucket" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AssociationArn" - ], - "required": [ - "Name", - "Type" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codegurureviewer", - "typeName": "AWS::CodeGuruReviewer::RepositoryAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Tags", + "/properties/BucketName", + "/properties/Owner", + "/properties/ConnectionArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. The allowed characters across services are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. The allowed characters across services are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "This resource schema represents the RepositoryAssociation resource in the Amazon CodeGuru Reviewer service.", + "handlers": { + "create": { + "permissions": [ + "codeguru-reviewer:DescribeRepositoryAssociation", + "codeguru-reviewer:AssociateRepository", + "codeguru-reviewer:TagResource", + "iam:CreateServiceLinkedRole", + "codecommit:TagResource", + "codecommit:GitPull", + "codecommit:TagResource", + "events:PutRule", + "events:PutTargets", + "codestar-connections:ListBranches", + "codestar-connections:ListRepositories", + "codestar-connections:ListTagsForResource", + "codestar-connections:PassConnection", + "codestar-connections:TagResource", + "codestar-connections:UseConnection", + "s3:ListBucket" + ] + }, + "delete": { + "permissions": [ + "codeguru-reviewer:DescribeRepositoryAssociation", + "codeguru-reviewer:DisassociateRepository", + "codecommit:UntagResource", + "events:DeleteRule", + "events:RemoveTargets", + "codestar-connections:UntagResource", + "codestar-connections:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "codeguru-reviewer:ListRepositoryAssociations" + ] + }, + "read": { + "permissions": [ + "codeguru-reviewer:DescribeRepositoryAssociation", + "codeguru-reviewer:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AssociationArn" + ], + "properties": { + "AssociationArn": { + "description": "The Amazon Resource Name (ARN) of the repository association.", + "maxLength": 256, + "minLength": 0, + "pattern": "arn:aws(-[\\w]+)*:.+:.+:[0-9]{12}:.+", + "type": "string" + }, + "BucketName": { + "description": "The name of the S3 bucket associated with an associated S3 repository. It must start with `codeguru-reviewer-`.", + "maxLength": 63, + "minLength": 3, + "pattern": "^\\S(.*\\S)?$", + "type": "string" + }, + "ConnectionArn": { + "description": "The Amazon Resource Name (ARN) of an AWS CodeStar Connections connection.", + "maxLength": 256, + "minLength": 0, + "pattern": "arn:aws(-[\\w]+)*:.+:.+:[0-9]{12}:.+", + "type": "string" + }, + "Name": { + "description": "Name of the repository to be associated.", + "maxLength": 100, + "minLength": 1, + "pattern": "^\\S[\\w.-]*$", + "type": "string" + }, + "Owner": { + "description": "The owner of the repository. For a Bitbucket repository, this is the username for the account that owns the repository.", + "maxLength": 100, + "minLength": 1, + "pattern": "^\\S(.*\\S)?$", + "type": "string" + }, + "Tags": { + "description": "The tags associated with a repository association.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": false + }, + "Type": { + "description": "The type of repository to be associated.", + "enum": [ + "CodeCommit", + "Bitbucket", + "GitHubEnterpriseServer", + "S3Bucket" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AssociationArn" + ], + "required": [ + "Name", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codegurureviewer", + "typeName": "AWS::CodeGuruReviewer::RepositoryAssociation" +} diff --git a/src/schema/aws-codepipeline-customactiontype.json b/src/schema/aws-codepipeline-customactiontype.json index 778e7ef0..ce862b7d 100644 --- a/src/schema/aws-codepipeline-customactiontype.json +++ b/src/schema/aws-codepipeline-customactiontype.json @@ -1,221 +1,221 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Category", - "/properties/ConfigurationProperties", - "/properties/InputArtifactDetails", - "/properties/OutputArtifactDetails", - "/properties/Provider", - "/properties/Settings", - "/properties/Version" - ], - "definitions": { - "ArtifactDetails": { - "additionalProperties": false, - "description": "Returns information about the details of an artifact.", - "properties": { - "MaximumCount": { - "description": "The maximum number of artifacts allowed for the action type.", - "type": "integer" - }, - "MinimumCount": { - "description": "The minimum number of artifacts allowed for the action type.", - "type": "integer" - } - }, - "required": [ - "MaximumCount", - "MinimumCount" - ], - "type": "object" - }, - "ConfigurationProperties": { - "additionalProperties": false, - "description": "The configuration properties for the custom action.", - "properties": { - "Description": { - "description": "The description of the action configuration property that is displayed to users. ", - "type": "string" - }, - "Key": { - "description": "Whether the configuration property is a key.", - "type": "boolean" - }, - "Name": { - "description": "The name of the action configuration property.", - "type": "string" - }, - "Queryable": { - "description": "Indicates that the property is used with PollForJobs. When creating a custom action, an action can have up to one queryable property. If it has one, that property must be both required and not secret.If you create a pipeline with a custom action type, and that custom action contains a queryable property, the value for that configuration property is subject to other restrictions. The value must be less than or equal to twenty (20) characters. The value can contain only alphanumeric characters, underscores, and hyphens. ", - "type": "boolean" - }, - "Required": { - "description": "Whether the configuration property is a required value.", - "type": "boolean" - }, - "Secret": { - "description": "Whether the configuration property is secret. Secrets are hidden from all calls except for GetJobDetails, GetThirdPartyJobDetails, PollForJobs, and PollForThirdPartyJobs.", - "type": "boolean" - }, - "Type": { - "description": "The type of the configuration property.", - "type": "string" - } - }, - "required": [ - "Key", - "Name", - "Required", - "Secret" - ], - "type": "object" - }, - "Settings": { - "additionalProperties": false, - "description": "Settings is a property of the AWS::CodePipeline::CustomActionType resource that provides URLs that users can access to view information about the CodePipeline custom action. ", - "properties": { - "EntityUrlTemplate": { - "description": "The URL returned to the AWS CodePipeline console that provides a deep link to the resources of the external system, such as the configuration page for an AWS CodeDeploy deployment group. This link is provided as part of the action display in the pipeline. ", - "type": "string" - }, - "ExecutionUrlTemplate": { - "description": "The URL returned to the AWS CodePipeline console that contains a link to the top-level landing page for the external system, such as the console page for AWS CodeDeploy. This link is shown on the pipeline view page in the AWS CodePipeline console and provides a link to the execution entity of the external action. ", - "type": "string" - }, - "RevisionUrlTemplate": { - "description": "The URL returned to the AWS CodePipeline console that contains a link to the page where customers can update or change the configuration of the external action. ", - "type": "string" - }, - "ThirdPartyConfigurationUrl": { - "description": "The URL of a sign-up page where users can sign up for an external service and perform initial configuration of the action provided by that service.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The AWS::CodePipeline::CustomActionType resource creates a custom action for activities that aren't included in the CodePipeline default actions, such as running an internally developed build process or a test suite. You can use these custom actions in the stage of a pipeline.", - "handlers": { - "create": { - "permissions": [ - "codepipeline:CreateCustomActionType", - "codepipeline:TagResource", - "codepipeline:ListActionTypes" - ] - }, - "delete": { - "permissions": [ - "codepipeline:DeleteCustomActionType", - "codepipeline:ListActionTypes" - ] - }, - "list": { - "permissions": [ - "codepipeline:ListActionTypes" - ] - }, - "read": { - "permissions": [ - "codepipeline:ListActionTypes", - "codepipeline:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "codepipeline:ListActionTypes", - "codepipeline:TagResource", - "codepipeline:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Category", - "/properties/Provider", - "/properties/Version" - ], - "properties": { - "Category": { - "description": "The category of the custom action, such as a build action or a test action.", - "type": "string" - }, - "ConfigurationProperties": { - "description": "The configuration properties for the custom action.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ConfigurationProperties" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "type": "string" - }, - "InputArtifactDetails": { - "$ref": "#/definitions/ArtifactDetails", - "description": "The details of the input artifact for the action, such as its commit ID." - }, - "OutputArtifactDetails": { - "$ref": "#/definitions/ArtifactDetails", - "description": "The details of the output artifact of the action, such as its commit ID." - }, - "Provider": { - "description": "The provider of the service used in the custom action, such as AWS CodeDeploy.", - "type": "string" - }, - "Settings": { - "$ref": "#/definitions/Settings", - "description": "URLs that provide users information about this custom action." - }, - "Tags": { - "description": "Any tags assigned to the custom action.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Version": { - "description": "The version identifier of the custom action.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Category", - "InputArtifactDetails", - "OutputArtifactDetails", - "Provider", - "Version" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codepipeline.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CodePipeline::CustomActionType", - "writeOnlyProperties": [ - "/properties/ConfigurationProperties/*/Type" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Category", + "/properties/ConfigurationProperties", + "/properties/InputArtifactDetails", + "/properties/OutputArtifactDetails", + "/properties/Provider", + "/properties/Settings", + "/properties/Version" + ], + "definitions": { + "ArtifactDetails": { + "additionalProperties": false, + "description": "Returns information about the details of an artifact.", + "properties": { + "MaximumCount": { + "description": "The maximum number of artifacts allowed for the action type.", + "type": "integer" + }, + "MinimumCount": { + "description": "The minimum number of artifacts allowed for the action type.", + "type": "integer" + } + }, + "required": [ + "MaximumCount", + "MinimumCount" + ], + "type": "object" + }, + "ConfigurationProperties": { + "additionalProperties": false, + "description": "The configuration properties for the custom action.", + "properties": { + "Description": { + "description": "The description of the action configuration property that is displayed to users. ", + "type": "string" + }, + "Key": { + "description": "Whether the configuration property is a key.", + "type": "boolean" + }, + "Name": { + "description": "The name of the action configuration property.", + "type": "string" + }, + "Queryable": { + "description": "Indicates that the property is used with PollForJobs. When creating a custom action, an action can have up to one queryable property. If it has one, that property must be both required and not secret.If you create a pipeline with a custom action type, and that custom action contains a queryable property, the value for that configuration property is subject to other restrictions. The value must be less than or equal to twenty (20) characters. The value can contain only alphanumeric characters, underscores, and hyphens. ", + "type": "boolean" + }, + "Required": { + "description": "Whether the configuration property is a required value.", + "type": "boolean" + }, + "Secret": { + "description": "Whether the configuration property is secret. Secrets are hidden from all calls except for GetJobDetails, GetThirdPartyJobDetails, PollForJobs, and PollForThirdPartyJobs.", + "type": "boolean" + }, + "Type": { + "description": "The type of the configuration property.", + "type": "string" + } + }, + "required": [ + "Key", + "Name", + "Required", + "Secret" + ], + "type": "object" + }, + "Settings": { + "additionalProperties": false, + "description": "Settings is a property of the AWS::CodePipeline::CustomActionType resource that provides URLs that users can access to view information about the CodePipeline custom action. ", + "properties": { + "EntityUrlTemplate": { + "description": "The URL returned to the AWS CodePipeline console that provides a deep link to the resources of the external system, such as the configuration page for an AWS CodeDeploy deployment group. This link is provided as part of the action display in the pipeline. ", + "type": "string" + }, + "ExecutionUrlTemplate": { + "description": "The URL returned to the AWS CodePipeline console that contains a link to the top-level landing page for the external system, such as the console page for AWS CodeDeploy. This link is shown on the pipeline view page in the AWS CodePipeline console and provides a link to the execution entity of the external action. ", + "type": "string" + }, + "RevisionUrlTemplate": { + "description": "The URL returned to the AWS CodePipeline console that contains a link to the page where customers can update or change the configuration of the external action. ", + "type": "string" + }, + "ThirdPartyConfigurationUrl": { + "description": "The URL of a sign-up page where users can sign up for an external service and perform initial configuration of the action provided by that service.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The AWS::CodePipeline::CustomActionType resource creates a custom action for activities that aren't included in the CodePipeline default actions, such as running an internally developed build process or a test suite. You can use these custom actions in the stage of a pipeline.", + "handlers": { + "create": { + "permissions": [ + "codepipeline:CreateCustomActionType", + "codepipeline:TagResource", + "codepipeline:ListActionTypes" + ] + }, + "delete": { + "permissions": [ + "codepipeline:DeleteCustomActionType", + "codepipeline:ListActionTypes" + ] + }, + "list": { + "permissions": [ + "codepipeline:ListActionTypes" + ] + }, + "read": { + "permissions": [ + "codepipeline:ListActionTypes", + "codepipeline:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "codepipeline:ListActionTypes", + "codepipeline:TagResource", + "codepipeline:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Category", + "/properties/Provider", + "/properties/Version" + ], + "properties": { + "Category": { + "description": "The category of the custom action, such as a build action or a test action.", + "type": "string" + }, + "ConfigurationProperties": { + "description": "The configuration properties for the custom action.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ConfigurationProperties" + }, + "type": "array", + "uniqueItems": true + }, + "Id": { + "type": "string" + }, + "InputArtifactDetails": { + "$ref": "#/definitions/ArtifactDetails", + "description": "The details of the input artifact for the action, such as its commit ID." + }, + "OutputArtifactDetails": { + "$ref": "#/definitions/ArtifactDetails", + "description": "The details of the output artifact of the action, such as its commit ID." + }, + "Provider": { + "description": "The provider of the service used in the custom action, such as AWS CodeDeploy.", + "type": "string" + }, + "Settings": { + "$ref": "#/definitions/Settings", + "description": "URLs that provide users information about this custom action." + }, + "Tags": { + "description": "Any tags assigned to the custom action.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Version": { + "description": "The version identifier of the custom action.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Category", + "InputArtifactDetails", + "OutputArtifactDetails", + "Provider", + "Version" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codepipeline.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CodePipeline::CustomActionType", + "writeOnlyProperties": [ + "/properties/ConfigurationProperties/*/Type" + ] +} diff --git a/src/schema/aws-codepipeline-pipeline.json b/src/schema/aws-codepipeline-pipeline.json index 9e1bac83..c1e9d744 100644 --- a/src/schema/aws-codepipeline-pipeline.json +++ b/src/schema/aws-codepipeline-pipeline.json @@ -1,802 +1,810 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "ActionDeclaration": { - "additionalProperties": false, - "description": "Represents information about an action declaration.", - "properties": { - "ActionTypeId": { - "$ref": "#/definitions/ActionTypeId" - }, - "Commands": { - "description": "The shell commands to run with your compute action in CodePipeline.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Configuration": { - "description": "The action's configuration. These are key-value pairs that specify input values for an action.", - "type": "object" - }, - "InputArtifacts": { - "items": { - "$ref": "#/definitions/InputArtifact" - }, - "type": "array", - "uniqueItems": true - }, - "Name": { - "description": "The action declaration's name.", - "type": "string" - }, - "Namespace": { - "description": "The variable namespace associated with the action. All variables produced as output by this action fall under this namespace.", - "type": "string" - }, - "OutputArtifacts": { - "items": { - "$ref": "#/definitions/OutputArtifact" - }, - "type": "array", - "uniqueItems": true - }, - "OutputVariables": { - "description": "The list of variables that are to be exported from the compute action.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Region": { - "description": "The action declaration's AWS Region, such as us-east-1.", - "type": "string" - }, - "RoleArn": { - "description": "The ARN of the IAM service role that performs the declared action. This is assumed through the roleArn for the pipeline.", - "pattern": "arn:aws(-[\\w]+)*:iam::[0-9]{12}:role/.*", - "type": "string" - }, - "RunOrder": { - "description": "The order in which actions are run.", - "type": "integer" - }, - "TimeoutInMinutes": { - "description": "A timeout duration in minutes that can be applied against the ActionType\u2019s default timeout value specified in Quotas for AWS CodePipeline. This attribute is available only to the manual approval ActionType.", - "type": "integer" - } - }, - "required": [ - "ActionTypeId", - "Name" - ], - "type": "object" - }, - "ActionTypeId": { - "additionalProperties": false, - "description": "Represents information about an action type.", - "properties": { - "Category": { - "description": "A category defines what kind of action can be taken in the stage, and constrains the provider type for the action. Valid categories are limited to one of the values below.", - "enum": [ - "Source", - "Build", - "Test", - "Deploy", - "Invoke", - "Approval", - "Compute" - ], - "type": "string" - }, - "Owner": { - "description": "The creator of the action being called. There are three valid values for the Owner field in the action category section within your pipeline structure: AWS, ThirdParty, and Custom.", - "type": "string" - }, - "Provider": { - "description": "The provider of the service being called by the action. Valid providers are determined by the action category. For example, an action in the Deploy category type might have a provider of CodeDeploy, which would be specified as CodeDeploy.", - "type": "string" - }, - "Version": { - "description": "A string that describes the action version.", - "type": "string" - } - }, - "required": [ - "Owner", - "Category", - "Version", - "Provider" - ], - "type": "object" - }, - "ArtifactStore": { - "additionalProperties": false, - "description": "The S3 bucket where artifacts for the pipeline are stored.", - "properties": { - "EncryptionKey": { - "$ref": "#/definitions/EncryptionKey" - }, - "Location": { - "description": "The S3 bucket used for storing the artifacts for a pipeline. You can specify the name of an S3 bucket but not a folder in the bucket. A folder to contain the pipeline artifacts is created for you based on the name of the pipeline. You can use any S3 bucket in the same AWS Region as the pipeline to store your pipeline artifacts.", - "type": "string" - }, - "Type": { - "description": "The type of the artifact store, such as S3.", - "enum": [ - "S3" - ], - "type": "string" - } - }, - "required": [ - "Type", - "Location" - ], - "type": "object" - }, - "ArtifactStoreMap": { - "additionalProperties": false, - "description": "A mapping of artifactStore objects and their corresponding AWS Regions. There must be an artifact store for the pipeline Region and for each cross-region action in the pipeline.", - "properties": { - "ArtifactStore": { - "$ref": "#/definitions/ArtifactStore" - }, - "Region": { - "description": "The action declaration's AWS Region, such as us-east-1.", - "type": "string" - } - }, - "required": [ - "ArtifactStore", - "Region" - ], - "type": "object" - }, - "BeforeEntryConditions": { - "additionalProperties": false, - "description": "The configuration that specifies the rules to run before stage starts.", - "properties": { - "Conditions": { - "items": { - "$ref": "#/definitions/Condition" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "BlockerDeclaration": { - "additionalProperties": false, - "description": "Reserved for future use.", - "properties": { - "Name": { - "description": "Reserved for future use.", - "type": "string" - }, - "Type": { - "description": "Reserved for future use.", - "enum": [ - "Schedule" - ], - "type": "string" - } - }, - "required": [ - "Type", - "Name" - ], - "type": "object" - }, - "Condition": { - "additionalProperties": false, - "description": "Represents information about condition.", - "properties": { - "Result": { - "description": "The specified result for when the failure conditions are met, such as rolling back the stage", - "type": "string" - }, - "Rules": { - "items": { - "$ref": "#/definitions/RuleDeclaration" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "EncryptionKey": { - "additionalProperties": false, - "description": "Represents information about the key used to encrypt data in the artifact store, such as an AWS Key Management Service (AWS KMS) key", - "properties": { - "Id": { - "description": "The ID used to identify the key. For an AWS KMS key, you can use the key ID, the key ARN, or the alias ARN.", - "type": "string" - }, - "Type": { - "description": "The type of encryption key, such as an AWS KMS key. When creating or updating a pipeline, the value must be set to 'KMS'.", - "type": "string" - } - }, - "required": [ - "Type", - "Id" - ], - "type": "object" - }, - "FailureConditions": { - "additionalProperties": false, - "description": "The configuration that specifies the result, such as rollback, to occur upon stage failure", - "properties": { - "Conditions": { - "items": { - "$ref": "#/definitions/Condition" - }, - "type": "array", - "uniqueItems": true - }, - "Result": { - "description": "The specified result for when the failure conditions are met, such as rolling back the stage", - "enum": [ - "ROLLBACK", - "RETRY" - ], - "type": "string" - }, - "RetryConfiguration": { - "additionalProperties": false, - "description": "The configuration that specifies the retry configuration for a stage", - "properties": { - "RetryMode": { - "description": "The specified retry mode type for the given stage. FAILED_ACTIONS will retry only the failed actions. ALL_ACTIONS will retry both failed and successful", - "enum": [ - "ALL_ACTIONS", - "FAILED_ACTIONS" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "GitBranchFilterCriteria": { - "additionalProperties": false, - "description": "The Git repository branches specified as filter criteria to start the pipeline.", - "properties": { - "Excludes": { - "description": "The list of patterns of Git branches that, when a commit is pushed, are to be excluded from starting the pipeline.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Includes": { - "description": "The list of patterns of Git branches that, when a commit is pushed, are to be included as criteria that starts the pipeline.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "GitConfiguration": { - "additionalProperties": false, - "description": "A type of trigger configuration for Git-based source actions.", - "properties": { - "PullRequest": { - "description": "The field where the repository event that will start the pipeline is specified as pull requests.", - "items": { - "$ref": "#/definitions/GitPullRequestFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Push": { - "description": "The field where the repository event that will start the pipeline, such as pushing Git tags, is specified with details.", - "items": { - "$ref": "#/definitions/GitPushFilter" - }, - "type": "array", - "uniqueItems": true - }, - "SourceActionName": { - "description": "The name of the pipeline source action where the trigger configuration, such as Git tags, is specified. The trigger configuration will start the pipeline upon the specified change only.", - "type": "string" - } - }, - "required": [ - "SourceActionName" - ], - "type": "object" - }, - "GitFilePathFilterCriteria": { - "additionalProperties": false, - "description": "The Git repository file paths specified as filter criteria to start the pipeline.", - "properties": { - "Excludes": { - "description": "The list of patterns of Git repository file paths that, when a commit is pushed, are to be excluded from starting the pipeline.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Includes": { - "description": "The list of patterns of Git repository file paths that, when a commit is pushed, are to be included as criteria that starts the pipeline.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "GitPullRequestFilter": { - "additionalProperties": false, - "description": "The event criteria for the pull request trigger configuration, such as the lists of branches or file paths to include and exclude.", - "properties": { - "Branches": { - "$ref": "#/definitions/GitBranchFilterCriteria" - }, - "Events": { - "description": "The field that specifies which pull request events to filter on (opened, updated, closed) for the trigger configuration.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "FilePaths": { - "$ref": "#/definitions/GitFilePathFilterCriteria" - } - }, - "type": "object" - }, - "GitPushFilter": { - "additionalProperties": false, - "description": "The event criteria that specify when a specified repository event will start the pipeline for the specified trigger configuration, such as the lists of Git tags to include and exclude.", - "properties": { - "Branches": { - "$ref": "#/definitions/GitBranchFilterCriteria" - }, - "FilePaths": { - "$ref": "#/definitions/GitFilePathFilterCriteria" - }, - "Tags": { - "$ref": "#/definitions/GitTagFilterCriteria" - } - }, - "type": "object" - }, - "GitTagFilterCriteria": { - "additionalProperties": false, - "description": "The Git tags specified as filter criteria for whether a Git tag repository event will start the pipeline.", - "properties": { - "Excludes": { - "description": "The list of patterns of Git tags that, when pushed, are to be excluded from starting the pipeline.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Includes": { - "description": "The list of patterns of Git tags that, when pushed, are to be included as criteria that starts the pipeline.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "InputArtifact": { - "additionalProperties": false, - "description": "Represents information about an artifact to be worked on, such as a test or build artifact.", - "properties": { - "Name": { - "description": "The name of the artifact to be worked on (for example, \"My App\").", - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "OutputArtifact": { - "additionalProperties": false, - "description": "Represents information about the output of an action.", - "properties": { - "Files": { - "description": "The files that you want to associate with the output artifact that will be exported from the compute action.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Name": { - "description": "The name of the output of an artifact, such as \"My App\".", - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "PipelineTriggerDeclaration": { - "additionalProperties": false, - "description": "Represents information about the specified trigger configuration, such as the filter criteria and the source stage for the action that contains the trigger.", - "properties": { - "GitConfiguration": { - "$ref": "#/definitions/GitConfiguration" - }, - "ProviderType": { - "description": "The source provider for the event, such as connections configured for a repository with Git tags, for the specified trigger configuration.", - "enum": [ - "CodeStarSourceConnection" - ], - "type": "string" - } - }, - "required": [ - "ProviderType" - ], - "type": "object" - }, - "RuleDeclaration": { - "additionalProperties": false, - "description": "Represents information about condition.", - "properties": { - "Configuration": { - "description": "The rule's configuration. These are key-value pairs that specify input values for a rule.", - "type": "object" - }, - "InputArtifacts": { - "items": { - "$ref": "#/definitions/InputArtifact" - }, - "type": "array", - "uniqueItems": true - }, - "Name": { - "description": "The rule declaration's name.", - "type": "string" - }, - "Region": { - "description": "The rule declaration's AWS Region, such as us-east-1.", - "type": "string" - }, - "RoleArn": { - "description": "The ARN of the IAM service role that performs the declared rule. This is assumed through the roleArn for the pipeline.", - "pattern": "arn:aws(-[\\w]+)*:iam::[0-9]{12}:role/.*", - "type": "string" - }, - "RuleTypeId": { - "$ref": "#/definitions/RuleTypeId" - } - }, - "type": "object" - }, - "RuleTypeId": { - "additionalProperties": false, - "description": "Represents information about a rule type.", - "properties": { - "Category": { - "description": "A category for the provider type for the rule.", - "type": "string" - }, - "Owner": { - "description": "The creator of the rule being called. Only AWS is supported.", - "type": "string" - }, - "Provider": { - "description": "The provider of the service being called by the rule.", - "type": "string" - }, - "Version": { - "description": "A string that describes the rule version.", - "type": "string" - } - }, - "type": "object" - }, - "StageDeclaration": { - "additionalProperties": false, - "description": "Represents information about a stage and its definition.", - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/ActionDeclaration" - }, - "type": "array", - "uniqueItems": true - }, - "BeforeEntry": { - "$ref": "#/definitions/BeforeEntryConditions", - "description": "The method to use before stage runs.", - "type": "object" - }, - "Blockers": { - "items": { - "$ref": "#/definitions/BlockerDeclaration" - }, - "type": "array", - "uniqueItems": true - }, - "Name": { - "description": "The name of the stage.", - "type": "string" - }, - "OnFailure": { - "$ref": "#/definitions/FailureConditions", - "description": "The method to use when a stage has not completed successfully", - "type": "object" - }, - "OnSuccess": { - "$ref": "#/definitions/SuccessConditions", - "description": "The method to use when a stage has completed successfully", - "type": "object" - } - }, - "required": [ - "Actions", - "Name" - ], - "type": "object" - }, - "StageTransition": { - "additionalProperties": false, - "description": "The name of the pipeline in which you want to disable the flow of artifacts from one stage to another.", - "properties": { - "Reason": { - "description": "The reason given to the user that a stage is disabled, such as waiting for manual approval or manual tests. This message is displayed in the pipeline console UI.", - "type": "string" - }, - "StageName": { - "description": "The name of the stage where you want to disable the inbound or outbound transition of artifacts.", - "type": "string" - } - }, - "required": [ - "StageName", - "Reason" - ], - "type": "object" - }, - "SuccessConditions": { - "additionalProperties": false, - "description": "The configuration that specifies the result, such as rollback, to occur upon stage failure", - "properties": { - "Conditions": { - "items": { - "$ref": "#/definitions/Condition" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A tag is a key-value pair that is used to manage the resource.", - "properties": { - "Key": { - "description": "The tag's key.", - "type": "string" - }, - "Value": { - "description": "The tag's value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "VariableDeclaration": { - "additionalProperties": false, - "description": "A variable declared at the pipeline level.", - "properties": { - "DefaultValue": { - "description": "The value of a pipeline-level variable.", - "type": "string" - }, - "Description": { - "description": "The description of a pipeline-level variable. It's used to add additional context about the variable, and not being used at time when pipeline executes.", - "type": "string" - }, - "Name": { - "description": "The name of a pipeline-level variable.", - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - } - }, - "description": "The AWS::CodePipeline::Pipeline resource creates a CodePipeline pipeline that describes how software changes go through a release process.", - "handlers": { - "create": { - "permissions": [ - "iam:GetRole", - "iam:PassRole", - "codepipeline:GetPipeline", - "codepipeline:CreatePipeline", - "codepipeline:DisableStageTransition", - "codepipeline:GetPipelineState", - "codepipeline:TagResource", - "codestar-connections:PassConnection" - ] - }, - "delete": { - "permissions": [ - "codepipeline:GetPipeline", - "codepipeline:DeletePipeline" - ] - }, - "list": { - "permissions": [ - "codepipeline:ListPipelines" - ] - }, - "read": { - "permissions": [ - "codepipeline:GetPipeline", - "codepipeline:ListTagsForResource", - "codepipeline:GetPipelineState" - ] - }, - "update": { - "permissions": [ - "iam:GetRole", - "iam:PassRole", - "codepipeline:EnableStageTransition", - "codepipeline:StartPipelineExecution", - "codepipeline:GetPipeline", - "codepipeline:UpdatePipeline", - "codepipeline:GetPipelineState", - "codepipeline:DisableStageTransition", - "codepipeline:TagResource", - "codepipeline:UntagResource", - "codestar-connections:PassConnection" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "ArtifactStore": { - "$ref": "#/definitions/ArtifactStore", - "description": "The S3 bucket where artifacts for the pipeline are stored." - }, - "ArtifactStores": { - "description": "A mapping of artifactStore objects and their corresponding AWS Regions. There must be an artifact store for the pipeline Region and for each cross-region action in the pipeline.", - "items": { - "$ref": "#/definitions/ArtifactStoreMap" - }, - "type": "array", - "uniqueItems": true - }, - "DisableInboundStageTransitions": { - "description": "Represents the input of a DisableStageTransition action.", - "items": { - "$ref": "#/definitions/StageTransition" - }, - "type": "array", - "uniqueItems": true - }, - "ExecutionMode": { - "default": "SUPERSEDED", - "description": "The method that the pipeline will use to handle multiple executions. The default mode is SUPERSEDED.", - "enum": [ - "QUEUED", - "SUPERSEDED", - "PARALLEL" - ], - "type": "string" - }, - "Name": { - "description": "The name of the pipeline.", - "type": "string" - }, - "PipelineType": { - "description": "CodePipeline provides the following pipeline types, which differ in characteristics and price, so that you can tailor your pipeline features and cost to the needs of your applications.", - "enum": [ - "V1", - "V2" - ], - "type": "string" - }, - "RestartExecutionOnUpdate": { - "description": "Indicates whether to rerun the CodePipeline pipeline after you update it.", - "type": "boolean" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) for CodePipeline to use to either perform actions with no actionRoleArn, or to use to assume roles for actions with an actionRoleArn", - "pattern": "arn:aws(-[\\w]+)*:iam::[0-9]{12}:role/.*", - "type": "string" - }, - "Stages": { - "description": "Represents information about a stage and its definition.", - "items": { - "$ref": "#/definitions/StageDeclaration" - }, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "description": "Specifies the tags applied to the pipeline.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Triggers": { - "description": "The trigger configuration specifying a type of event, such as Git tags, that starts the pipeline.", - "items": { - "$ref": "#/definitions/PipelineTriggerDeclaration" - }, - "type": "array", - "uniqueItems": true - }, - "Variables": { - "description": "A list that defines the pipeline variables for a pipeline resource. Variable names can have alphanumeric and underscore characters, and the values must match [A-Za-z0-9@\\-_]+.", - "items": { - "$ref": "#/definitions/VariableDeclaration" - }, - "type": "array", - "uniqueItems": true - }, - "Version": { - "description": "The version of the pipeline.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Version" - ], - "required": [ - "Stages", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codepipeline", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "codepipeline:TagResource", - "codepipeline:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CodePipeline::Pipeline", - "writeOnlyProperties": [ - "/properties/RestartExecutionOnUpdate" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "ActionDeclaration": { + "additionalProperties": false, + "description": "Represents information about an action declaration.", + "properties": { + "ActionTypeId": { + "$ref": "#/definitions/ActionTypeId" + }, + "Commands": { + "description": "The shell commands to run with your compute action in CodePipeline.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Configuration": { + "description": "The action's configuration. These are key-value pairs that specify input values for an action.", + "type": "object" + }, + "InputArtifacts": { + "items": { + "$ref": "#/definitions/InputArtifact" + }, + "type": "array", + "uniqueItems": true + }, + "Name": { + "description": "The action declaration's name.", + "type": "string" + }, + "Namespace": { + "description": "The variable namespace associated with the action. All variables produced as output by this action fall under this namespace.", + "type": "string" + }, + "OutputArtifacts": { + "items": { + "$ref": "#/definitions/OutputArtifact" + }, + "type": "array", + "uniqueItems": true + }, + "OutputVariables": { + "description": "The list of variables that are to be exported from the compute action.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Region": { + "description": "The action declaration's AWS Region, such as us-east-1.", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the IAM service role that performs the declared action. This is assumed through the roleArn for the pipeline.", + "pattern": "arn:aws(-[\\w]+)*:iam::[0-9]{12}:role/.*", + "type": "string" + }, + "RunOrder": { + "description": "The order in which actions are run.", + "type": "integer" + }, + "TimeoutInMinutes": { + "description": "A timeout duration in minutes that can be applied against the ActionType\u2019s default timeout value specified in Quotas for AWS CodePipeline. This attribute is available only to the manual approval ActionType.", + "type": "integer" + } + }, + "required": [ + "ActionTypeId", + "Name" + ], + "type": "object" + }, + "ActionTypeId": { + "additionalProperties": false, + "description": "Represents information about an action type.", + "properties": { + "Category": { + "description": "A category defines what kind of action can be taken in the stage, and constrains the provider type for the action. Valid categories are limited to one of the values below.", + "enum": [ + "Source", + "Build", + "Test", + "Deploy", + "Invoke", + "Approval", + "Compute" + ], + "type": "string" + }, + "Owner": { + "description": "The creator of the action being called. There are three valid values for the Owner field in the action category section within your pipeline structure: AWS, ThirdParty, and Custom.", + "type": "string" + }, + "Provider": { + "description": "The provider of the service being called by the action. Valid providers are determined by the action category. For example, an action in the Deploy category type might have a provider of CodeDeploy, which would be specified as CodeDeploy.", + "type": "string" + }, + "Version": { + "description": "A string that describes the action version.", + "type": "string" + } + }, + "required": [ + "Owner", + "Category", + "Version", + "Provider" + ], + "type": "object" + }, + "ArtifactStore": { + "additionalProperties": false, + "description": "The S3 bucket where artifacts for the pipeline are stored.", + "properties": { + "EncryptionKey": { + "$ref": "#/definitions/EncryptionKey" + }, + "Location": { + "description": "The S3 bucket used for storing the artifacts for a pipeline. You can specify the name of an S3 bucket but not a folder in the bucket. A folder to contain the pipeline artifacts is created for you based on the name of the pipeline. You can use any S3 bucket in the same AWS Region as the pipeline to store your pipeline artifacts.", + "type": "string" + }, + "Type": { + "description": "The type of the artifact store, such as S3.", + "enum": [ + "S3" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Location" + ], + "type": "object" + }, + "ArtifactStoreMap": { + "additionalProperties": false, + "description": "A mapping of artifactStore objects and their corresponding AWS Regions. There must be an artifact store for the pipeline Region and for each cross-region action in the pipeline.", + "properties": { + "ArtifactStore": { + "$ref": "#/definitions/ArtifactStore" + }, + "Region": { + "description": "The action declaration's AWS Region, such as us-east-1.", + "type": "string" + } + }, + "required": [ + "ArtifactStore", + "Region" + ], + "type": "object" + }, + "BeforeEntryConditions": { + "additionalProperties": false, + "description": "The configuration that specifies the rules to run before stage starts.", + "properties": { + "Conditions": { + "items": { + "$ref": "#/definitions/Condition" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "BlockerDeclaration": { + "additionalProperties": false, + "description": "Reserved for future use.", + "properties": { + "Name": { + "description": "Reserved for future use.", + "type": "string" + }, + "Type": { + "description": "Reserved for future use.", + "enum": [ + "Schedule" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Name" + ], + "type": "object" + }, + "Condition": { + "additionalProperties": false, + "description": "Represents information about condition.", + "properties": { + "Result": { + "description": "The specified result for when the failure conditions are met, such as rolling back the stage", + "type": "string" + }, + "Rules": { + "items": { + "$ref": "#/definitions/RuleDeclaration" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "EncryptionKey": { + "additionalProperties": false, + "description": "Represents information about the key used to encrypt data in the artifact store, such as an AWS Key Management Service (AWS KMS) key", + "properties": { + "Id": { + "description": "The ID used to identify the key. For an AWS KMS key, you can use the key ID, the key ARN, or the alias ARN.", + "type": "string" + }, + "Type": { + "description": "The type of encryption key, such as an AWS KMS key. When creating or updating a pipeline, the value must be set to 'KMS'.", + "type": "string" + } + }, + "required": [ + "Type", + "Id" + ], + "type": "object" + }, + "FailureConditions": { + "additionalProperties": false, + "description": "The configuration that specifies the result, such as rollback, to occur upon stage failure", + "properties": { + "Conditions": { + "items": { + "$ref": "#/definitions/Condition" + }, + "type": "array", + "uniqueItems": true + }, + "Result": { + "description": "The specified result for when the failure conditions are met, such as rolling back the stage", + "enum": [ + "ROLLBACK", + "RETRY" + ], + "type": "string" + }, + "RetryConfiguration": { + "additionalProperties": false, + "description": "The configuration that specifies the retry configuration for a stage", + "properties": { + "RetryMode": { + "description": "The specified retry mode type for the given stage. FAILED_ACTIONS will retry only the failed actions. ALL_ACTIONS will retry both failed and successful", + "enum": [ + "ALL_ACTIONS", + "FAILED_ACTIONS" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "GitBranchFilterCriteria": { + "additionalProperties": false, + "description": "The Git repository branches specified as filter criteria to start the pipeline.", + "properties": { + "Excludes": { + "description": "The list of patterns of Git branches that, when a commit is pushed, are to be excluded from starting the pipeline.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Includes": { + "description": "The list of patterns of Git branches that, when a commit is pushed, are to be included as criteria that starts the pipeline.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "GitConfiguration": { + "additionalProperties": false, + "description": "A type of trigger configuration for Git-based source actions.", + "properties": { + "PullRequest": { + "description": "The field where the repository event that will start the pipeline is specified as pull requests.", + "items": { + "$ref": "#/definitions/GitPullRequestFilter" + }, + "type": "array", + "uniqueItems": true + }, + "Push": { + "description": "The field where the repository event that will start the pipeline, such as pushing Git tags, is specified with details.", + "items": { + "$ref": "#/definitions/GitPushFilter" + }, + "type": "array", + "uniqueItems": true + }, + "SourceActionName": { + "description": "The name of the pipeline source action where the trigger configuration, such as Git tags, is specified. The trigger configuration will start the pipeline upon the specified change only.", + "type": "string" + } + }, + "required": [ + "SourceActionName" + ], + "type": "object" + }, + "GitFilePathFilterCriteria": { + "additionalProperties": false, + "description": "The Git repository file paths specified as filter criteria to start the pipeline.", + "properties": { + "Excludes": { + "description": "The list of patterns of Git repository file paths that, when a commit is pushed, are to be excluded from starting the pipeline.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Includes": { + "description": "The list of patterns of Git repository file paths that, when a commit is pushed, are to be included as criteria that starts the pipeline.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "GitPullRequestFilter": { + "additionalProperties": false, + "description": "The event criteria for the pull request trigger configuration, such as the lists of branches or file paths to include and exclude.", + "properties": { + "Branches": { + "$ref": "#/definitions/GitBranchFilterCriteria" + }, + "Events": { + "description": "The field that specifies which pull request events to filter on (opened, updated, closed) for the trigger configuration.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "FilePaths": { + "$ref": "#/definitions/GitFilePathFilterCriteria" + } + }, + "type": "object" + }, + "GitPushFilter": { + "additionalProperties": false, + "description": "The event criteria that specify when a specified repository event will start the pipeline for the specified trigger configuration, such as the lists of Git tags to include and exclude.", + "properties": { + "Branches": { + "$ref": "#/definitions/GitBranchFilterCriteria" + }, + "FilePaths": { + "$ref": "#/definitions/GitFilePathFilterCriteria" + }, + "Tags": { + "$ref": "#/definitions/GitTagFilterCriteria" + } + }, + "type": "object" + }, + "GitTagFilterCriteria": { + "additionalProperties": false, + "description": "The Git tags specified as filter criteria for whether a Git tag repository event will start the pipeline.", + "properties": { + "Excludes": { + "description": "The list of patterns of Git tags that, when pushed, are to be excluded from starting the pipeline.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Includes": { + "description": "The list of patterns of Git tags that, when pushed, are to be included as criteria that starts the pipeline.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "InputArtifact": { + "additionalProperties": false, + "description": "Represents information about an artifact to be worked on, such as a test or build artifact.", + "properties": { + "Name": { + "description": "The name of the artifact to be worked on (for example, \"My App\").", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "OutputArtifact": { + "additionalProperties": false, + "description": "Represents information about the output of an action.", + "properties": { + "Files": { + "description": "The files that you want to associate with the output artifact that will be exported from the compute action.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Name": { + "description": "The name of the output of an artifact, such as \"My App\".", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "PipelineTriggerDeclaration": { + "additionalProperties": false, + "description": "Represents information about the specified trigger configuration, such as the filter criteria and the source stage for the action that contains the trigger.", + "properties": { + "GitConfiguration": { + "$ref": "#/definitions/GitConfiguration" + }, + "ProviderType": { + "description": "The source provider for the event, such as connections configured for a repository with Git tags, for the specified trigger configuration.", + "enum": [ + "CodeStarSourceConnection" + ], + "type": "string" + } + }, + "required": [ + "ProviderType" + ], + "type": "object" + }, + "RuleDeclaration": { + "additionalProperties": false, + "description": "Represents information about condition.", + "properties": { + "Commands": { + "description": "The shell commands to run with your compute action in CodePipeline.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Configuration": { + "description": "The rule's configuration. These are key-value pairs that specify input values for a rule.", + "type": "object" + }, + "InputArtifacts": { + "items": { + "$ref": "#/definitions/InputArtifact" + }, + "type": "array", + "uniqueItems": true + }, + "Name": { + "description": "The rule declaration's name.", + "type": "string" + }, + "Region": { + "description": "The rule declaration's AWS Region, such as us-east-1.", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the IAM service role that performs the declared rule. This is assumed through the roleArn for the pipeline.", + "pattern": "arn:aws(-[\\w]+)*:iam::[0-9]{12}:role/.*", + "type": "string" + }, + "RuleTypeId": { + "$ref": "#/definitions/RuleTypeId" + } + }, + "type": "object" + }, + "RuleTypeId": { + "additionalProperties": false, + "description": "Represents information about a rule type.", + "properties": { + "Category": { + "description": "A category for the provider type for the rule.", + "type": "string" + }, + "Owner": { + "description": "The creator of the rule being called. Only AWS is supported.", + "type": "string" + }, + "Provider": { + "description": "The provider of the service being called by the rule.", + "type": "string" + }, + "Version": { + "description": "A string that describes the rule version.", + "type": "string" + } + }, + "type": "object" + }, + "StageDeclaration": { + "additionalProperties": false, + "description": "Represents information about a stage and its definition.", + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/ActionDeclaration" + }, + "type": "array", + "uniqueItems": true + }, + "BeforeEntry": { + "$ref": "#/definitions/BeforeEntryConditions", + "description": "The method to use before stage runs.", + "type": "object" + }, + "Blockers": { + "items": { + "$ref": "#/definitions/BlockerDeclaration" + }, + "type": "array", + "uniqueItems": true + }, + "Name": { + "description": "The name of the stage.", + "type": "string" + }, + "OnFailure": { + "$ref": "#/definitions/FailureConditions", + "description": "The method to use when a stage has not completed successfully", + "type": "object" + }, + "OnSuccess": { + "$ref": "#/definitions/SuccessConditions", + "description": "The method to use when a stage has completed successfully", + "type": "object" + } + }, + "required": [ + "Actions", + "Name" + ], + "type": "object" + }, + "StageTransition": { + "additionalProperties": false, + "description": "The name of the pipeline in which you want to disable the flow of artifacts from one stage to another.", + "properties": { + "Reason": { + "description": "The reason given to the user that a stage is disabled, such as waiting for manual approval or manual tests. This message is displayed in the pipeline console UI.", + "type": "string" + }, + "StageName": { + "description": "The name of the stage where you want to disable the inbound or outbound transition of artifacts.", + "type": "string" + } + }, + "required": [ + "StageName", + "Reason" + ], + "type": "object" + }, + "SuccessConditions": { + "additionalProperties": false, + "description": "The configuration that specifies the result, such as rollback, to occur upon stage failure", + "properties": { + "Conditions": { + "items": { + "$ref": "#/definitions/Condition" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A tag is a key-value pair that is used to manage the resource.", + "properties": { + "Key": { + "description": "The tag's key.", + "type": "string" + }, + "Value": { + "description": "The tag's value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VariableDeclaration": { + "additionalProperties": false, + "description": "A variable declared at the pipeline level.", + "properties": { + "DefaultValue": { + "description": "The value of a pipeline-level variable.", + "type": "string" + }, + "Description": { + "description": "The description of a pipeline-level variable. It's used to add additional context about the variable, and not being used at time when pipeline executes.", + "type": "string" + }, + "Name": { + "description": "The name of a pipeline-level variable.", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + } + }, + "description": "The AWS::CodePipeline::Pipeline resource creates a CodePipeline pipeline that describes how software changes go through a release process.", + "handlers": { + "create": { + "permissions": [ + "iam:GetRole", + "iam:PassRole", + "codepipeline:GetPipeline", + "codepipeline:CreatePipeline", + "codepipeline:DisableStageTransition", + "codepipeline:GetPipelineState", + "codepipeline:TagResource", + "codestar-connections:PassConnection" + ] + }, + "delete": { + "permissions": [ + "codepipeline:GetPipeline", + "codepipeline:DeletePipeline" + ] + }, + "list": { + "permissions": [ + "codepipeline:ListPipelines" + ] + }, + "read": { + "permissions": [ + "codepipeline:GetPipeline", + "codepipeline:ListTagsForResource", + "codepipeline:GetPipelineState" + ] + }, + "update": { + "permissions": [ + "iam:GetRole", + "iam:PassRole", + "codepipeline:EnableStageTransition", + "codepipeline:StartPipelineExecution", + "codepipeline:GetPipeline", + "codepipeline:UpdatePipeline", + "codepipeline:GetPipelineState", + "codepipeline:DisableStageTransition", + "codepipeline:TagResource", + "codepipeline:UntagResource", + "codestar-connections:PassConnection" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "ArtifactStore": { + "$ref": "#/definitions/ArtifactStore", + "description": "The S3 bucket where artifacts for the pipeline are stored." + }, + "ArtifactStores": { + "description": "A mapping of artifactStore objects and their corresponding AWS Regions. There must be an artifact store for the pipeline Region and for each cross-region action in the pipeline.", + "items": { + "$ref": "#/definitions/ArtifactStoreMap" + }, + "type": "array", + "uniqueItems": true + }, + "DisableInboundStageTransitions": { + "description": "Represents the input of a DisableStageTransition action.", + "items": { + "$ref": "#/definitions/StageTransition" + }, + "type": "array", + "uniqueItems": true + }, + "ExecutionMode": { + "default": "SUPERSEDED", + "description": "The method that the pipeline will use to handle multiple executions. The default mode is SUPERSEDED.", + "enum": [ + "QUEUED", + "SUPERSEDED", + "PARALLEL" + ], + "type": "string" + }, + "Name": { + "description": "The name of the pipeline.", + "type": "string" + }, + "PipelineType": { + "description": "CodePipeline provides the following pipeline types, which differ in characteristics and price, so that you can tailor your pipeline features and cost to the needs of your applications.", + "enum": [ + "V1", + "V2" + ], + "type": "string" + }, + "RestartExecutionOnUpdate": { + "description": "Indicates whether to rerun the CodePipeline pipeline after you update it.", + "type": "boolean" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) for CodePipeline to use to either perform actions with no actionRoleArn, or to use to assume roles for actions with an actionRoleArn", + "pattern": "arn:aws(-[\\w]+)*:iam::[0-9]{12}:role/.*", + "type": "string" + }, + "Stages": { + "description": "Represents information about a stage and its definition.", + "items": { + "$ref": "#/definitions/StageDeclaration" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "Specifies the tags applied to the pipeline.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Triggers": { + "description": "The trigger configuration specifying a type of event, such as Git tags, that starts the pipeline.", + "items": { + "$ref": "#/definitions/PipelineTriggerDeclaration" + }, + "type": "array", + "uniqueItems": true + }, + "Variables": { + "description": "A list that defines the pipeline variables for a pipeline resource. Variable names can have alphanumeric and underscore characters, and the values must match [A-Za-z0-9@\\-_]+.", + "items": { + "$ref": "#/definitions/VariableDeclaration" + }, + "type": "array", + "uniqueItems": true + }, + "Version": { + "description": "The version of the pipeline.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Version" + ], + "required": [ + "Stages", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codepipeline", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "codepipeline:TagResource", + "codepipeline:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CodePipeline::Pipeline", + "writeOnlyProperties": [ + "/properties/RestartExecutionOnUpdate" + ] +} diff --git a/src/schema/aws-codepipeline-webhook.json b/src/schema/aws-codepipeline-webhook.json index 41c476bd..bd0af783 100644 --- a/src/schema/aws-codepipeline-webhook.json +++ b/src/schema/aws-codepipeline-webhook.json @@ -1,88 +1,88 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "WebhookAuthConfiguration": { - "additionalProperties": false, - "properties": { - "AllowedIPRange": { - "type": "string" - }, - "SecretToken": { - "type": "string" - } - }, - "type": "object" - }, - "WebhookFilterRule": { - "additionalProperties": false, - "properties": { - "JsonPath": { - "type": "string" - }, - "MatchEquals": { - "type": "string" - } - }, - "required": [ - "JsonPath" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CodePipeline::Webhook", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Authentication": { - "type": "string" - }, - "AuthenticationConfiguration": { - "$ref": "#/definitions/WebhookAuthConfiguration" - }, - "Filters": { - "items": { - "$ref": "#/definitions/WebhookFilterRule" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "RegisterWithThirdParty": { - "type": "boolean" - }, - "TargetAction": { - "type": "string" - }, - "TargetPipeline": { - "type": "string" - }, - "TargetPipelineVersion": { - "type": "integer" - }, - "Url": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Url" - ], - "required": [ - "AuthenticationConfiguration", - "Filters", - "Authentication", - "TargetPipeline", - "TargetAction", - "TargetPipelineVersion" - ], - "typeName": "AWS::CodePipeline::Webhook" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "WebhookAuthConfiguration": { + "additionalProperties": false, + "properties": { + "AllowedIPRange": { + "type": "string" + }, + "SecretToken": { + "type": "string" + } + }, + "type": "object" + }, + "WebhookFilterRule": { + "additionalProperties": false, + "properties": { + "JsonPath": { + "type": "string" + }, + "MatchEquals": { + "type": "string" + } + }, + "required": [ + "JsonPath" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::CodePipeline::Webhook", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Authentication": { + "type": "string" + }, + "AuthenticationConfiguration": { + "$ref": "#/definitions/WebhookAuthConfiguration" + }, + "Filters": { + "items": { + "$ref": "#/definitions/WebhookFilterRule" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "RegisterWithThirdParty": { + "type": "boolean" + }, + "TargetAction": { + "type": "string" + }, + "TargetPipeline": { + "type": "string" + }, + "TargetPipelineVersion": { + "type": "integer" + }, + "Url": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Url" + ], + "required": [ + "AuthenticationConfiguration", + "Filters", + "Authentication", + "TargetPipeline", + "TargetAction", + "TargetPipelineVersion" + ], + "typeName": "AWS::CodePipeline::Webhook" +} diff --git a/src/schema/aws-codestar-githubrepository.json b/src/schema/aws-codestar-githubrepository.json index 50cc3b14..1d33d2bb 100644 --- a/src/schema/aws-codestar-githubrepository.json +++ b/src/schema/aws-codestar-githubrepository.json @@ -1,77 +1,77 @@ -{ - "additionalProperties": false, - "definitions": { - "Code": { - "additionalProperties": false, - "properties": { - "S3": { - "$ref": "#/definitions/S3" - } - }, - "required": [ - "S3" - ], - "type": "object" - }, - "S3": { - "additionalProperties": false, - "properties": { - "Bucket": { - "type": "string" - }, - "Key": { - "type": "string" - }, - "ObjectVersion": { - "type": "string" - } - }, - "required": [ - "Bucket", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CodeStar::GitHubRepository", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Code": { - "$ref": "#/definitions/Code" - }, - "ConnectionArn": { - "type": "string" - }, - "EnableIssues": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "IsPrivate": { - "type": "boolean" - }, - "RepositoryAccessToken": { - "type": "string" - }, - "RepositoryDescription": { - "type": "string" - }, - "RepositoryName": { - "type": "string" - }, - "RepositoryOwner": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "RepositoryName", - "RepositoryOwner" - ], - "typeName": "AWS::CodeStar::GitHubRepository" -} +{ + "additionalProperties": false, + "definitions": { + "Code": { + "additionalProperties": false, + "properties": { + "S3": { + "$ref": "#/definitions/S3" + } + }, + "required": [ + "S3" + ], + "type": "object" + }, + "S3": { + "additionalProperties": false, + "properties": { + "Bucket": { + "type": "string" + }, + "Key": { + "type": "string" + }, + "ObjectVersion": { + "type": "string" + } + }, + "required": [ + "Bucket", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::CodeStar::GitHubRepository", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Code": { + "$ref": "#/definitions/Code" + }, + "ConnectionArn": { + "type": "string" + }, + "EnableIssues": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "IsPrivate": { + "type": "boolean" + }, + "RepositoryAccessToken": { + "type": "string" + }, + "RepositoryDescription": { + "type": "string" + }, + "RepositoryName": { + "type": "string" + }, + "RepositoryOwner": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "RepositoryName", + "RepositoryOwner" + ], + "typeName": "AWS::CodeStar::GitHubRepository" +} diff --git a/src/schema/aws-codestarconnections-connection.json b/src/schema/aws-codestarconnections-connection.json index a60f99d7..144dee2b 100644 --- a/src/schema/aws-codestarconnections-connection.json +++ b/src/schema/aws-codestarconnections-connection.json @@ -1,131 +1,136 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConnectionName", - "/properties/ProviderType", - "/properties/HostArn" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Schema for AWS::CodeStarConnections::Connection resource which can be used to connect external source providers with AWS CodePipeline", - "handlers": { - "create": { - "permissions": [ - "codestar-connections:CreateConnection", - "codestar-connections:TagResource" - ] - }, - "delete": { - "permissions": [ - "codestar-connections:DeleteConnection" - ] - }, - "list": { - "permissions": [ - "codestar-connections:ListConnections", - "codestar-connections:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "codestar-connections:GetConnection", - "codestar-connections:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "codestar-connections:ListTagsForResource", - "codestar-connections:TagResource", - "codestar-connections:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConnectionArn" - ], - "properties": { - "ConnectionArn": { - "description": "The Amazon Resource Name (ARN) of the connection. The ARN is used as the connection reference when the connection is shared between AWS services.", - "maxLength": 256, - "minLength": 0, - "pattern": "arn:aws(-[\\w]+)*:.+:.+:[0-9]{12}:.+", - "type": "string" - }, - "ConnectionName": { - "description": "The name of the connection. Connection names must be unique in an AWS user account.", - "maxLength": 32, - "minLength": 1, - "type": "string" - }, - "ConnectionStatus": { - "description": "The current status of the connection.", - "type": "string" - }, - "HostArn": { - "description": "The host arn configured to represent the infrastructure where your third-party provider is installed. You must specify either a ProviderType or a HostArn.", - "maxLength": 256, - "minLength": 0, - "pattern": "arn:aws(-[\\w]+)*:.+:.+:[0-9]{12}:.+", - "type": "string" - }, - "OwnerAccountId": { - "description": "The name of the external provider where your third-party code repository is configured. For Bitbucket, this is the account ID of the owner of the Bitbucket repository.", - "maxLength": 12, - "minLength": 12, - "pattern": "[0-9]{12}", - "type": "string" - }, - "ProviderType": { - "description": "The name of the external provider where your third-party code repository is configured. You must specify either a ProviderType or a HostArn.", - "type": "string" - }, - "Tags": { - "description": "Specifies the tags applied to a connection.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ConnectionArn", - "/properties/ConnectionStatus", - "/properties/OwnerAccountId" - ], - "required": [ - "ConnectionName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codestarconnections.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CodeStarConnections::Connection" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConnectionName", + "/properties/ProviderType", + "/properties/HostArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Schema for AWS::CodeStarConnections::Connection resource which can be used to connect external source providers with AWS CodePipeline", + "handlers": { + "create": { + "permissions": [ + "codestar-connections:CreateConnection", + "codestar-connections:TagResource" + ] + }, + "delete": { + "permissions": [ + "codestar-connections:DeleteConnection" + ] + }, + "list": { + "permissions": [ + "codestar-connections:ListConnections", + "codestar-connections:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "codestar-connections:GetConnection", + "codestar-connections:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "codestar-connections:ListTagsForResource", + "codestar-connections:TagResource", + "codestar-connections:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConnectionArn" + ], + "properties": { + "ConnectionArn": { + "description": "The Amazon Resource Name (ARN) of the connection. The ARN is used as the connection reference when the connection is shared between AWS services.", + "maxLength": 256, + "minLength": 0, + "pattern": "arn:aws(-[\\w]+)*:.+:.+:[0-9]{12}:.+", + "type": "string" + }, + "ConnectionName": { + "description": "The name of the connection. Connection names must be unique in an AWS user account.", + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + "ConnectionStatus": { + "description": "The current status of the connection.", + "type": "string" + }, + "HostArn": { + "description": "The host arn configured to represent the infrastructure where your third-party provider is installed. You must specify either a ProviderType or a HostArn.", + "maxLength": 256, + "minLength": 0, + "pattern": "arn:aws(-[\\w]+)*:.+:.+:[0-9]{12}:.+", + "type": "string" + }, + "OwnerAccountId": { + "description": "The name of the external provider where your third-party code repository is configured. For Bitbucket, this is the account ID of the owner of the Bitbucket repository.", + "maxLength": 12, + "minLength": 12, + "pattern": "[0-9]{12}", + "type": "string" + }, + "ProviderType": { + "description": "The name of the external provider where your third-party code repository is configured. You must specify either a ProviderType or a HostArn.", + "type": "string" + }, + "Tags": { + "description": "Specifies the tags applied to a connection.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ConnectionArn", + "/properties/ConnectionStatus", + "/properties/OwnerAccountId" + ], + "required": [ + "ConnectionName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codestarconnections.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "codestar-connections:TagResource", + "codestar-connections:ListTagsForResource", + "codestar-connections:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CodeStarConnections::Connection" +} diff --git a/src/schema/aws-codestarconnections-repositorylink.json b/src/schema/aws-codestarconnections-repositorylink.json index 67d1ca08..e460040d 100644 --- a/src/schema/aws-codestarconnections-repositorylink.json +++ b/src/schema/aws-codestarconnections-repositorylink.json @@ -1,159 +1,159 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/RepositoryLinkId" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RepositoryName", - "/properties/OwnerId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, , ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, , ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Schema for AWS::CodeStarConnections::RepositoryLink resource which is used to aggregate repository metadata relevant to synchronizing source provider content to AWS Resources.", - "handlers": { - "create": { - "permissions": [ - "codestar-connections:CreateRepositoryLink", - "codestar-connections:TagResource", - "codestar-connections:UseConnection", - "codestar-connections:PassConnection", - "codestar-connections:GetConnection", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "codestar-connections:GetRepositoryLink", - "codestar-connections:DeleteRepositoryLink", - "codestar-connections:GetConnection" - ] - }, - "list": { - "permissions": [ - "codestar-connections:ListRepositoryLinks", - "codestar-connections:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "codestar-connections:GetRepositoryLink", - "codestar-connections:ListTagsForResource", - "codestar-connections:GetConnection" - ] - }, - "update": { - "permissions": [ - "codestar-connections:GetConnection", - "codestar-connections:ListTagsForResource", - "codestar-connections:PassConnection", - "codestar-connections:UseConnection", - "codestar-connections:TagResource", - "codestar-connections:UntagResource", - "codestar-connections:UpdateRepositoryLink" - ] - } - }, - "primaryIdentifier": [ - "/properties/RepositoryLinkArn" - ], - "properties": { - "ConnectionArn": { - "description": "The Amazon Resource Name (ARN) of the CodeStarConnection. The ARN is used as the connection reference when the connection is shared between AWS services.", - "pattern": "arn:(aws|aws-us-gov|aws-cn):.+:.+:[0-9]{12}:.+", - "type": "string" - }, - "EncryptionKeyArn": { - "description": "The ARN of the KMS key that the customer can optionally specify to use to encrypt RepositoryLink properties. If not specified, a default key will be used.", - "pattern": "arn:(aws|aws-us-gov|aws-cn):.+:.+:[0-9]{12}:.+", - "type": "string" - }, - "OwnerId": { - "description": "the ID of the entity that owns the repository.", - "pattern": "[a-za-z0-9_\\.-]+", - "type": "string" - }, - "ProviderType": { - "description": "The name of the external provider where your third-party code repository is configured.", - "enum": [ - "GitHub", - "Bitbucket", - "GitHubEnterprise", - "GitLab", - "GitLabSelfManaged" - ], - "type": "string" - }, - "RepositoryLinkArn": { - "description": "A unique Amazon Resource Name (ARN) to designate the repository link.", - "pattern": "arn:(aws|aws-us-gov|aws-cn):.+:.+:[0-9]{12}:.+", - "type": "string" - }, - "RepositoryLinkId": { - "description": "A UUID that uniquely identifies the RepositoryLink.", - "pattern": "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", - "type": "string" - }, - "RepositoryName": { - "description": "The repository for which the link is being created.", - "pattern": "[a-za-z0-9_\\.-]+", - "type": "string" - }, - "Tags": { - "description": "Specifies the tags applied to a RepositoryLink.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/RepositoryLinkArn", - "/properties/RepositoryLinkId", - "/properties/ProviderType" - ], - "required": [ - "RepositoryName", - "ConnectionArn", - "OwnerId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codestarconnections.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "codestar-connections:UntagResource", - "codestar-connections:ListTagsForResource", - "codestar-connections:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CodeStarConnections::RepositoryLink" -} +{ + "additionalIdentifiers": [ + [ + "/properties/RepositoryLinkId" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RepositoryName", + "/properties/OwnerId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, , ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, , ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Schema for AWS::CodeStarConnections::RepositoryLink resource which is used to aggregate repository metadata relevant to synchronizing source provider content to AWS Resources.", + "handlers": { + "create": { + "permissions": [ + "codestar-connections:CreateRepositoryLink", + "codestar-connections:TagResource", + "codestar-connections:UseConnection", + "codestar-connections:PassConnection", + "codestar-connections:GetConnection", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "codestar-connections:GetRepositoryLink", + "codestar-connections:DeleteRepositoryLink", + "codestar-connections:GetConnection" + ] + }, + "list": { + "permissions": [ + "codestar-connections:ListRepositoryLinks", + "codestar-connections:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "codestar-connections:GetRepositoryLink", + "codestar-connections:ListTagsForResource", + "codestar-connections:GetConnection" + ] + }, + "update": { + "permissions": [ + "codestar-connections:GetConnection", + "codestar-connections:ListTagsForResource", + "codestar-connections:PassConnection", + "codestar-connections:UseConnection", + "codestar-connections:TagResource", + "codestar-connections:UntagResource", + "codestar-connections:UpdateRepositoryLink" + ] + } + }, + "primaryIdentifier": [ + "/properties/RepositoryLinkArn" + ], + "properties": { + "ConnectionArn": { + "description": "The Amazon Resource Name (ARN) of the CodeStarConnection. The ARN is used as the connection reference when the connection is shared between AWS services.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):.+:.+:[0-9]{12}:.+", + "type": "string" + }, + "EncryptionKeyArn": { + "description": "The ARN of the KMS key that the customer can optionally specify to use to encrypt RepositoryLink properties. If not specified, a default key will be used.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):.+:.+:[0-9]{12}:.+", + "type": "string" + }, + "OwnerId": { + "description": "the ID of the entity that owns the repository.", + "pattern": "[a-za-z0-9_\\.-]+", + "type": "string" + }, + "ProviderType": { + "description": "The name of the external provider where your third-party code repository is configured.", + "enum": [ + "GitHub", + "Bitbucket", + "GitHubEnterprise", + "GitLab", + "GitLabSelfManaged" + ], + "type": "string" + }, + "RepositoryLinkArn": { + "description": "A unique Amazon Resource Name (ARN) to designate the repository link.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):.+:.+:[0-9]{12}:.+", + "type": "string" + }, + "RepositoryLinkId": { + "description": "A UUID that uniquely identifies the RepositoryLink.", + "pattern": "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", + "type": "string" + }, + "RepositoryName": { + "description": "The repository for which the link is being created.", + "pattern": "[a-za-z0-9_\\.-]+", + "type": "string" + }, + "Tags": { + "description": "Specifies the tags applied to a RepositoryLink.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/RepositoryLinkArn", + "/properties/RepositoryLinkId", + "/properties/ProviderType" + ], + "required": [ + "RepositoryName", + "ConnectionArn", + "OwnerId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codestarconnections.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "codestar-connections:UntagResource", + "codestar-connections:ListTagsForResource", + "codestar-connections:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CodeStarConnections::RepositoryLink" +} diff --git a/src/schema/aws-codestarconnections-syncconfiguration.json b/src/schema/aws-codestarconnections-syncconfiguration.json index 3881c8db..aba2b218 100644 --- a/src/schema/aws-codestarconnections-syncconfiguration.json +++ b/src/schema/aws-codestarconnections-syncconfiguration.json @@ -1,129 +1,129 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SyncType", - "/properties/ResourceName" - ], - "definitions": {}, - "description": "Schema for AWS::CodeStarConnections::SyncConfiguration resource which is used to enables an AWS resource to be synchronized from a source-provider.", - "handlers": { - "create": { - "permissions": [ - "codestar-connections:CreateSyncConfiguration", - "codestar-connections:PassRepository", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "codestar-connections:DeleteSyncConfiguration", - "codestar-connections:GetSyncConfiguration" - ] - }, - "list": { - "permissions": [ - "codestar-connections:ListSyncConfigurations", - "codestar-connections:ListRepositoryLinks" - ] - }, - "read": { - "permissions": [ - "codestar-connections:GetSyncConfiguration" - ] - }, - "update": { - "permissions": [ - "codestar-connections:UpdateSyncConfiguration", - "codestar-connections:PassRepository", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/ResourceName", - "/properties/SyncType" - ], - "properties": { - "Branch": { - "description": "The name of the branch of the repository from which resources are to be synchronized,", - "type": "string" - }, - "ConfigFile": { - "description": "The source provider repository path of the sync configuration file of the respective SyncType.", - "type": "string" - }, - "OwnerId": { - "description": "the ID of the entity that owns the repository.", - "pattern": "[a-za-z0-9_\\.-]+", - "type": "string" - }, - "ProviderType": { - "description": "The name of the external provider where your third-party code repository is configured.", - "enum": [ - "GitHub", - "Bitbucket", - "GitHubEnterprise", - "GitLab", - "GitLabSelfManaged" - ], - "type": "string" - }, - "PublishDeploymentStatus": { - "description": "Whether to enable or disable publishing of deployment status to source providers.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "RepositoryLinkId": { - "description": "A UUID that uniquely identifies the RepositoryLink that the SyncConfig is associated with.", - "pattern": "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", - "type": "string" - }, - "RepositoryName": { - "description": "The name of the repository that is being synced to.", - "pattern": "[a-za-z0-9_\\.-]+", - "type": "string" - }, - "ResourceName": { - "description": "The name of the resource that is being synchronized to the repository.", - "pattern": "[a-za-z0-9_\\.-]+", - "type": "string" - }, - "RoleArn": { - "description": "The IAM Role that allows AWS to update CloudFormation stacks based on content in the specified repository.", - "type": "string" - }, - "SyncType": { - "description": "The type of resource synchronization service that is to be configured, for example, CFN_STACK_SYNC.", - "type": "string" - }, - "TriggerResourceUpdateOn": { - "description": "When to trigger Git sync to begin the stack update.", - "enum": [ - "ANY_CHANGE", - "FILE_CHANGE" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ProviderType", - "/properties/OwnerId", - "/properties/RepositoryName" - ], - "required": [ - "Branch", - "ConfigFile", - "RepositoryLinkId", - "ResourceName", - "SyncType", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codestarconnections.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::CodeStarConnections::SyncConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SyncType", + "/properties/ResourceName" + ], + "definitions": {}, + "description": "Schema for AWS::CodeStarConnections::SyncConfiguration resource which is used to enables an AWS resource to be synchronized from a source-provider.", + "handlers": { + "create": { + "permissions": [ + "codestar-connections:CreateSyncConfiguration", + "codestar-connections:PassRepository", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "codestar-connections:DeleteSyncConfiguration", + "codestar-connections:GetSyncConfiguration" + ] + }, + "list": { + "permissions": [ + "codestar-connections:ListSyncConfigurations", + "codestar-connections:ListRepositoryLinks" + ] + }, + "read": { + "permissions": [ + "codestar-connections:GetSyncConfiguration" + ] + }, + "update": { + "permissions": [ + "codestar-connections:UpdateSyncConfiguration", + "codestar-connections:PassRepository", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/ResourceName", + "/properties/SyncType" + ], + "properties": { + "Branch": { + "description": "The name of the branch of the repository from which resources are to be synchronized,", + "type": "string" + }, + "ConfigFile": { + "description": "The source provider repository path of the sync configuration file of the respective SyncType.", + "type": "string" + }, + "OwnerId": { + "description": "the ID of the entity that owns the repository.", + "pattern": "[a-za-z0-9_\\.-]+", + "type": "string" + }, + "ProviderType": { + "description": "The name of the external provider where your third-party code repository is configured.", + "enum": [ + "GitHub", + "Bitbucket", + "GitHubEnterprise", + "GitLab", + "GitLabSelfManaged" + ], + "type": "string" + }, + "PublishDeploymentStatus": { + "description": "Whether to enable or disable publishing of deployment status to source providers.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "RepositoryLinkId": { + "description": "A UUID that uniquely identifies the RepositoryLink that the SyncConfig is associated with.", + "pattern": "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", + "type": "string" + }, + "RepositoryName": { + "description": "The name of the repository that is being synced to.", + "pattern": "[a-za-z0-9_\\.-]+", + "type": "string" + }, + "ResourceName": { + "description": "The name of the resource that is being synchronized to the repository.", + "pattern": "[a-za-z0-9_\\.-]+", + "type": "string" + }, + "RoleArn": { + "description": "The IAM Role that allows AWS to update CloudFormation stacks based on content in the specified repository.", + "type": "string" + }, + "SyncType": { + "description": "The type of resource synchronization service that is to be configured, for example, CFN_STACK_SYNC.", + "type": "string" + }, + "TriggerResourceUpdateOn": { + "description": "When to trigger Git sync to begin the stack update.", + "enum": [ + "ANY_CHANGE", + "FILE_CHANGE" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ProviderType", + "/properties/OwnerId", + "/properties/RepositoryName" + ], + "required": [ + "Branch", + "ConfigFile", + "RepositoryLinkId", + "ResourceName", + "SyncType", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codestarconnections.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::CodeStarConnections::SyncConfiguration" +} diff --git a/src/schema/aws-codestarnotifications-notificationrule.json b/src/schema/aws-codestarnotifications-notificationrule.json index 557ef212..cb9a1f61 100644 --- a/src/schema/aws-codestarnotifications-notificationrule.json +++ b/src/schema/aws-codestarnotifications-notificationrule.json @@ -1,144 +1,144 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Resource" - ], - "definitions": { - "Target": { - "additionalProperties": false, - "properties": { - "TargetAddress": { - "type": "string" - }, - "TargetType": { - "type": "string" - } - }, - "required": [ - "TargetType", - "TargetAddress" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::CodeStarNotifications::NotificationRule", - "handlers": { - "create": { - "permissions": [ - "codestar-notifications:createNotificationRule" - ] - }, - "delete": { - "permissions": [ - "codestar-notifications:deleteNotificationRule", - "codestar-notifications:describeNotificationRule" - ] - }, - "list": { - "permissions": [ - "codestar-notifications:listNotificationRules" - ] - }, - "read": { - "permissions": [ - "codestar-notifications:describeNotificationRule" - ] - }, - "update": { - "permissions": [ - "codestar-notifications:updateNotificationRule", - "codestar-notifications:TagResource", - "codestar-notifications:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "pattern": "^arn:aws[^:\\s]*:codestar-notifications:[^:\\s]+:\\d{12}:notificationrule\\/(.*\\S)?$", - "type": "string" - }, - "CreatedBy": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "DetailType": { - "enum": [ - "BASIC", - "FULL" - ], - "type": "string" - }, - "EventTypeId": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "EventTypeIds": { - "items": { - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Name": { - "maxLength": 64, - "minLength": 1, - "pattern": "[A-Za-z0-9\\-_ ]+$", - "type": "string" - }, - "Resource": { - "pattern": "^arn:aws[^:\\s]*:[^:\\s]*:[^:\\s]*:[0-9]{12}:[^\\s]+$", - "type": "string" - }, - "Status": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "patternProperties": { - ".*": { - "type": "string" - } - }, - "type": "object" - }, - "TargetAddress": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Targets": { - "items": { - "$ref": "#/definitions/Target" - }, - "maxItems": 10, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "EventTypeIds", - "Resource", - "DetailType", - "Targets", - "Name" - ], - "typeName": "AWS::CodeStarNotifications::NotificationRule", - "writeOnlyProperties": [ - "/properties/EventTypeId", - "/properties/TargetAddress" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Resource" + ], + "definitions": { + "Target": { + "additionalProperties": false, + "properties": { + "TargetAddress": { + "type": "string" + }, + "TargetType": { + "type": "string" + } + }, + "required": [ + "TargetType", + "TargetAddress" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::CodeStarNotifications::NotificationRule", + "handlers": { + "create": { + "permissions": [ + "codestar-notifications:createNotificationRule" + ] + }, + "delete": { + "permissions": [ + "codestar-notifications:deleteNotificationRule", + "codestar-notifications:describeNotificationRule" + ] + }, + "list": { + "permissions": [ + "codestar-notifications:listNotificationRules" + ] + }, + "read": { + "permissions": [ + "codestar-notifications:describeNotificationRule" + ] + }, + "update": { + "permissions": [ + "codestar-notifications:updateNotificationRule", + "codestar-notifications:TagResource", + "codestar-notifications:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "^arn:aws[^:\\s]*:codestar-notifications:[^:\\s]+:\\d{12}:notificationrule\\/(.*\\S)?$", + "type": "string" + }, + "CreatedBy": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DetailType": { + "enum": [ + "BASIC", + "FULL" + ], + "type": "string" + }, + "EventTypeId": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "EventTypeIds": { + "items": { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Name": { + "maxLength": 64, + "minLength": 1, + "pattern": "[A-Za-z0-9\\-_ ]+$", + "type": "string" + }, + "Resource": { + "pattern": "^arn:aws[^:\\s]*:[^:\\s]*:[^:\\s]*:[0-9]{12}:[^\\s]+$", + "type": "string" + }, + "Status": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + }, + "TargetAddress": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Targets": { + "items": { + "$ref": "#/definitions/Target" + }, + "maxItems": 10, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "EventTypeIds", + "Resource", + "DetailType", + "Targets", + "Name" + ], + "typeName": "AWS::CodeStarNotifications::NotificationRule", + "writeOnlyProperties": [ + "/properties/EventTypeId", + "/properties/TargetAddress" + ] +} diff --git a/src/schema/aws-cognito-identitypool.json b/src/schema/aws-cognito-identitypool.json index bec92948..8996726e 100644 --- a/src/schema/aws-cognito-identitypool.json +++ b/src/schema/aws-cognito-identitypool.json @@ -1,210 +1,210 @@ -{ - "additionalProperties": false, - "definitions": { - "CognitoIdentityProvider": { - "additionalProperties": false, - "properties": { - "ClientId": { - "type": "string" - }, - "ProviderName": { - "type": "string" - }, - "ServerSideTokenCheck": { - "type": "boolean" - } - }, - "required": [ - "ProviderName", - "ClientId" - ], - "type": "object" - }, - "CognitoStreams": { - "additionalProperties": false, - "properties": { - "RoleArn": { - "type": "string" - }, - "StreamName": { - "type": "string" - }, - "StreamingStatus": { - "type": "string" - } - }, - "type": "object" - }, - "PushSync": { - "additionalProperties": false, - "properties": { - "ApplicationArns": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "RoleArn": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Cognito::IdentityPool", - "handlers": { - "create": { - "permissions": [ - "cognito-identity:CreateIdentityPool", - "cognito-sync:SetIdentityPoolConfiguration", - "cognito-sync:SetCognitoEvents", - "cognito-identity:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "cognito-identity:DeleteIdentityPool" - ] - }, - "list": { - "permissions": [ - "cognito-identity:ListIdentityPools" - ] - }, - "read": { - "permissions": [ - "cognito-identity:DescribeIdentityPool" - ] - }, - "update": { - "permissions": [ - "cognito-identity:UpdateIdentityPool", - "cognito-identity:DescribeIdentityPool", - "cognito-sync:SetIdentityPoolConfiguration", - "cognito-sync:SetCognitoEvents", - "cognito-identity:TagResource", - "cognito-identity:UntagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AllowClassicFlow": { - "type": "boolean" - }, - "AllowUnauthenticatedIdentities": { - "type": "boolean" - }, - "CognitoEvents": { - "type": "object" - }, - "CognitoIdentityProviders": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CognitoIdentityProvider" - }, - "type": "array", - "uniqueItems": false - }, - "CognitoStreams": { - "$ref": "#/definitions/CognitoStreams" - }, - "DeveloperProviderName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "IdentityPoolName": { - "type": "string" - }, - "IdentityPoolTags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Name": { - "type": "string" - }, - "OpenIdConnectProviderARNs": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "PushSync": { - "$ref": "#/definitions/PushSync" - }, - "SamlProviderARNs": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SupportedLoginProviders": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Name" - ], - "required": [ - "AllowUnauthenticatedIdentities" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "cognito-identity:TagResource", - "cognito-identity:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/IdentityPoolTags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Cognito::IdentityPool", - "writeOnlyProperties": [ - "/properties/PushSync", - "/properties/CognitoStreams", - "/properties/CognitoEvents" - ] -} +{ + "additionalProperties": false, + "definitions": { + "CognitoIdentityProvider": { + "additionalProperties": false, + "properties": { + "ClientId": { + "type": "string" + }, + "ProviderName": { + "type": "string" + }, + "ServerSideTokenCheck": { + "type": "boolean" + } + }, + "required": [ + "ProviderName", + "ClientId" + ], + "type": "object" + }, + "CognitoStreams": { + "additionalProperties": false, + "properties": { + "RoleArn": { + "type": "string" + }, + "StreamName": { + "type": "string" + }, + "StreamingStatus": { + "type": "string" + } + }, + "type": "object" + }, + "PushSync": { + "additionalProperties": false, + "properties": { + "ApplicationArns": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "RoleArn": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Cognito::IdentityPool", + "handlers": { + "create": { + "permissions": [ + "cognito-identity:CreateIdentityPool", + "cognito-sync:SetIdentityPoolConfiguration", + "cognito-sync:SetCognitoEvents", + "cognito-identity:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "cognito-identity:DeleteIdentityPool" + ] + }, + "list": { + "permissions": [ + "cognito-identity:ListIdentityPools" + ] + }, + "read": { + "permissions": [ + "cognito-identity:DescribeIdentityPool" + ] + }, + "update": { + "permissions": [ + "cognito-identity:UpdateIdentityPool", + "cognito-identity:DescribeIdentityPool", + "cognito-sync:SetIdentityPoolConfiguration", + "cognito-sync:SetCognitoEvents", + "cognito-identity:TagResource", + "cognito-identity:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AllowClassicFlow": { + "type": "boolean" + }, + "AllowUnauthenticatedIdentities": { + "type": "boolean" + }, + "CognitoEvents": { + "type": "object" + }, + "CognitoIdentityProviders": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CognitoIdentityProvider" + }, + "type": "array", + "uniqueItems": false + }, + "CognitoStreams": { + "$ref": "#/definitions/CognitoStreams" + }, + "DeveloperProviderName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IdentityPoolName": { + "type": "string" + }, + "IdentityPoolTags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Name": { + "type": "string" + }, + "OpenIdConnectProviderARNs": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "PushSync": { + "$ref": "#/definitions/PushSync" + }, + "SamlProviderARNs": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SupportedLoginProviders": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Name" + ], + "required": [ + "AllowUnauthenticatedIdentities" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "cognito-identity:TagResource", + "cognito-identity:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/IdentityPoolTags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Cognito::IdentityPool", + "writeOnlyProperties": [ + "/properties/PushSync", + "/properties/CognitoStreams", + "/properties/CognitoEvents" + ] +} diff --git a/src/schema/aws-cognito-identitypoolprincipaltag.json b/src/schema/aws-cognito-identitypoolprincipaltag.json index 245e566a..8ff60760 100644 --- a/src/schema/aws-cognito-identitypoolprincipaltag.json +++ b/src/schema/aws-cognito-identitypoolprincipaltag.json @@ -1,82 +1,82 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/IdentityPoolId", - "/properties/IdentityProviderName" - ], - "description": "Resource Type definition for AWS::Cognito::IdentityPoolPrincipalTag", - "handlers": { - "create": { - "permissions": [ - "cognito-identity:GetPrincipalTagAttributeMap", - "cognito-identity:SetPrincipalTagAttributeMap" - ] - }, - "delete": { - "permissions": [ - "cognito-identity:GetPrincipalTagAttributeMap", - "cognito-identity:SetPrincipalTagAttributeMap" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "IdentityPoolId": { - "$ref": "resource-schema.json#/properties/IdentityPoolId" - }, - "IdentityProviderName": { - "$ref": "resource-schema.json#/properties/IdentityProviderName" - } - }, - "required": [ - "IdentityPoolId", - "IdentityProviderName" - ] - }, - "permissions": [ - "cognito-identity:GetPrincipalTagAttributeMap" - ] - }, - "read": { - "permissions": [ - "cognito-identity:GetPrincipalTagAttributeMap" - ] - }, - "update": { - "permissions": [ - "cognito-identity:GetPrincipalTagAttributeMap", - "cognito-identity:SetPrincipalTagAttributeMap" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentityPoolId", - "/properties/IdentityProviderName" - ], - "properties": { - "IdentityPoolId": { - "type": "string" - }, - "IdentityProviderName": { - "type": "string" - }, - "PrincipalTags": { - "type": "object" - }, - "UseDefaults": { - "type": "boolean" - } - }, - "required": [ - "IdentityPoolId", - "IdentityProviderName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Cognito::IdentityPoolPrincipalTag" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IdentityPoolId", + "/properties/IdentityProviderName" + ], + "description": "Resource Type definition for AWS::Cognito::IdentityPoolPrincipalTag", + "handlers": { + "create": { + "permissions": [ + "cognito-identity:GetPrincipalTagAttributeMap", + "cognito-identity:SetPrincipalTagAttributeMap" + ] + }, + "delete": { + "permissions": [ + "cognito-identity:GetPrincipalTagAttributeMap", + "cognito-identity:SetPrincipalTagAttributeMap" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "IdentityPoolId": { + "$ref": "resource-schema.json#/properties/IdentityPoolId" + }, + "IdentityProviderName": { + "$ref": "resource-schema.json#/properties/IdentityProviderName" + } + }, + "required": [ + "IdentityPoolId", + "IdentityProviderName" + ] + }, + "permissions": [ + "cognito-identity:GetPrincipalTagAttributeMap" + ] + }, + "read": { + "permissions": [ + "cognito-identity:GetPrincipalTagAttributeMap" + ] + }, + "update": { + "permissions": [ + "cognito-identity:GetPrincipalTagAttributeMap", + "cognito-identity:SetPrincipalTagAttributeMap" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentityPoolId", + "/properties/IdentityProviderName" + ], + "properties": { + "IdentityPoolId": { + "type": "string" + }, + "IdentityProviderName": { + "type": "string" + }, + "PrincipalTags": { + "type": "object" + }, + "UseDefaults": { + "type": "boolean" + } + }, + "required": [ + "IdentityPoolId", + "IdentityProviderName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Cognito::IdentityPoolPrincipalTag" +} diff --git a/src/schema/aws-cognito-identitypoolroleattachment.json b/src/schema/aws-cognito-identitypoolroleattachment.json index cacbc072..fe291f83 100644 --- a/src/schema/aws-cognito-identitypoolroleattachment.json +++ b/src/schema/aws-cognito-identitypoolroleattachment.json @@ -1,159 +1,159 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/IdentityPoolId" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/IdentityPoolId" - ], - "definitions": { - "MappingRule": { - "additionalProperties": false, - "properties": { - "Claim": { - "type": "string" - }, - "MatchType": { - "type": "string" - }, - "RoleARN": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Claim", - "MatchType", - "RoleARN", - "Value" - ], - "type": "object" - }, - "RoleMapping": { - "additionalProperties": false, - "properties": { - "AmbiguousRoleResolution": { - "type": "string" - }, - "IdentityProvider": { - "type": "string" - }, - "RulesConfiguration": { - "$ref": "#/definitions/RulesConfigurationType" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "RulesConfigurationType": { - "additionalProperties": false, - "properties": { - "Rules": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MappingRule" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Rules" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Cognito::IdentityPoolRoleAttachment", - "handlers": { - "create": { - "permissions": [ - "cognito-identity:GetIdentityPoolRoles", - "cognito-identity:SetIdentityPoolRoles", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "cognito-identity:GetIdentityPoolRoles", - "cognito-identity:SetIdentityPoolRoles" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "IdentityPoolId": { - "$ref": "resource-schema.json#/properties/IdentityPoolId" - } - }, - "required": [ - "IdentityPoolId" - ] - }, - "permissions": [ - "cognito-identity:GetIdentityPoolRoles" - ] - }, - "read": { - "permissions": [ - "cognito-identity:GetIdentityPoolRoles" - ] - }, - "update": { - "permissions": [ - "cognito-identity:GetIdentityPoolRoles", - "cognito-identity:SetIdentityPoolRoles", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "IdentityPoolId": { - "type": "string" - }, - "RoleMappings": { - "additionalProperties": false, - "patternProperties": { - "^.+$": { - "$ref": "#/definitions/RoleMapping" - } - } - }, - "Roles": { - "additionalProperties": false, - "patternProperties": { - "^.+$": { - "type": "string" - } - } - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "IdentityPoolId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Cognito::IdentityPoolRoleAttachment" -} +{ + "additionalIdentifiers": [ + [ + "/properties/IdentityPoolId" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IdentityPoolId" + ], + "definitions": { + "MappingRule": { + "additionalProperties": false, + "properties": { + "Claim": { + "type": "string" + }, + "MatchType": { + "type": "string" + }, + "RoleARN": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Claim", + "MatchType", + "RoleARN", + "Value" + ], + "type": "object" + }, + "RoleMapping": { + "additionalProperties": false, + "properties": { + "AmbiguousRoleResolution": { + "type": "string" + }, + "IdentityProvider": { + "type": "string" + }, + "RulesConfiguration": { + "$ref": "#/definitions/RulesConfigurationType" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "RulesConfigurationType": { + "additionalProperties": false, + "properties": { + "Rules": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MappingRule" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Rules" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Cognito::IdentityPoolRoleAttachment", + "handlers": { + "create": { + "permissions": [ + "cognito-identity:GetIdentityPoolRoles", + "cognito-identity:SetIdentityPoolRoles", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "cognito-identity:GetIdentityPoolRoles", + "cognito-identity:SetIdentityPoolRoles" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "IdentityPoolId": { + "$ref": "resource-schema.json#/properties/IdentityPoolId" + } + }, + "required": [ + "IdentityPoolId" + ] + }, + "permissions": [ + "cognito-identity:GetIdentityPoolRoles" + ] + }, + "read": { + "permissions": [ + "cognito-identity:GetIdentityPoolRoles" + ] + }, + "update": { + "permissions": [ + "cognito-identity:GetIdentityPoolRoles", + "cognito-identity:SetIdentityPoolRoles", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "IdentityPoolId": { + "type": "string" + }, + "RoleMappings": { + "additionalProperties": false, + "patternProperties": { + "^.+$": { + "$ref": "#/definitions/RoleMapping" + } + } + }, + "Roles": { + "additionalProperties": false, + "patternProperties": { + "^.+$": { + "type": "string" + } + } + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IdentityPoolId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Cognito::IdentityPoolRoleAttachment" +} diff --git a/src/schema/aws-cognito-logdeliveryconfiguration.json b/src/schema/aws-cognito-logdeliveryconfiguration.json index ee773f16..9de9d50b 100644 --- a/src/schema/aws-cognito-logdeliveryconfiguration.json +++ b/src/schema/aws-cognito-logdeliveryconfiguration.json @@ -1,164 +1,164 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserPoolId" - ], - "definitions": { - "CloudWatchLogsConfiguration": { - "additionalProperties": false, - "properties": { - "LogGroupArn": { - "type": "string" - } - }, - "type": "object" - }, - "FirehoseConfiguration": { - "additionalProperties": false, - "properties": { - "StreamArn": { - "type": "string" - } - }, - "type": "object" - }, - "LogConfiguration": { - "additionalProperties": false, - "properties": { - "CloudWatchLogsConfiguration": { - "$ref": "#/definitions/CloudWatchLogsConfiguration" - }, - "EventSource": { - "type": "string" - }, - "FirehoseConfiguration": { - "$ref": "#/definitions/FirehoseConfiguration" - }, - "LogLevel": { - "type": "string" - }, - "S3Configuration": { - "$ref": "#/definitions/S3Configuration" - } - }, - "type": "object" - }, - "LogConfigurations": { - "items": { - "$ref": "#/definitions/LogConfiguration" - }, - "type": "array" - }, - "S3Configuration": { - "additionalProperties": false, - "properties": { - "BucketArn": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Cognito::LogDeliveryConfiguration", - "handlers": { - "create": { - "permissions": [ - "cognito-idp:GetLogDeliveryConfiguration", - "cognito-idp:SetLogDeliveryConfiguration", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:UpdateLogDelivery", - "logs:DeleteLogDelivery", - "logs:ListLogDeliveries", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy", - "s3:ListBucket", - "s3:PutObject", - "s3:GetBucketAcl", - "firehose:TagDeliveryStream", - "iam:CreateServiceLinkedRole" - ], - "timeoutInMinutes": 2 - }, - "delete": { - "permissions": [ - "cognito-idp:GetLogDeliveryConfiguration", - "cognito-idp:SetLogDeliveryConfiguration", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:UpdateLogDelivery", - "logs:DeleteLogDelivery", - "logs:ListLogDeliveries", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy", - "s3:ListBucket", - "s3:PutObject", - "s3:GetBucketAcl", - "firehose:TagDeliveryStream", - "iam:CreateServiceLinkedRole" - ], - "timeoutInMinutes": 2 - }, - "read": { - "permissions": [ - "cognito-idp:GetLogDeliveryConfiguration" - ] - }, - "update": { - "permissions": [ - "cognito-idp:GetLogDeliveryConfiguration", - "cognito-idp:SetLogDeliveryConfiguration", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:UpdateLogDelivery", - "logs:DeleteLogDelivery", - "logs:ListLogDeliveries", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy", - "s3:ListBucket", - "s3:PutObject", - "s3:GetBucketAcl", - "firehose:TagDeliveryStream", - "iam:CreateServiceLinkedRole" - ], - "timeoutInMinutes": 2 - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "LogConfigurations": { - "$ref": "#/definitions/LogConfigurations" - }, - "UserPoolId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "UserPoolId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Cognito::LogDeliveryConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/UserPoolId" + ], + "definitions": { + "CloudWatchLogsConfiguration": { + "additionalProperties": false, + "properties": { + "LogGroupArn": { + "type": "string" + } + }, + "type": "object" + }, + "FirehoseConfiguration": { + "additionalProperties": false, + "properties": { + "StreamArn": { + "type": "string" + } + }, + "type": "object" + }, + "LogConfiguration": { + "additionalProperties": false, + "properties": { + "CloudWatchLogsConfiguration": { + "$ref": "#/definitions/CloudWatchLogsConfiguration" + }, + "EventSource": { + "type": "string" + }, + "FirehoseConfiguration": { + "$ref": "#/definitions/FirehoseConfiguration" + }, + "LogLevel": { + "type": "string" + }, + "S3Configuration": { + "$ref": "#/definitions/S3Configuration" + } + }, + "type": "object" + }, + "LogConfigurations": { + "items": { + "$ref": "#/definitions/LogConfiguration" + }, + "type": "array" + }, + "S3Configuration": { + "additionalProperties": false, + "properties": { + "BucketArn": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Cognito::LogDeliveryConfiguration", + "handlers": { + "create": { + "permissions": [ + "cognito-idp:GetLogDeliveryConfiguration", + "cognito-idp:SetLogDeliveryConfiguration", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "s3:ListBucket", + "s3:PutObject", + "s3:GetBucketAcl", + "firehose:TagDeliveryStream", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 2 + }, + "delete": { + "permissions": [ + "cognito-idp:GetLogDeliveryConfiguration", + "cognito-idp:SetLogDeliveryConfiguration", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "s3:ListBucket", + "s3:PutObject", + "s3:GetBucketAcl", + "firehose:TagDeliveryStream", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 2 + }, + "read": { + "permissions": [ + "cognito-idp:GetLogDeliveryConfiguration" + ] + }, + "update": { + "permissions": [ + "cognito-idp:GetLogDeliveryConfiguration", + "cognito-idp:SetLogDeliveryConfiguration", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "s3:ListBucket", + "s3:PutObject", + "s3:GetBucketAcl", + "firehose:TagDeliveryStream", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 2 + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "LogConfigurations": { + "$ref": "#/definitions/LogConfigurations" + }, + "UserPoolId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "UserPoolId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Cognito::LogDeliveryConfiguration" +} diff --git a/src/schema/aws-cognito-managedloginbranding.json b/src/schema/aws-cognito-managedloginbranding.json new file mode 100644 index 00000000..4bdb4a2e --- /dev/null +++ b/src/schema/aws-cognito-managedloginbranding.json @@ -0,0 +1,165 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/UserPoolId", + "/properties/ClientId" + ], + "definitions": { + "AssetList": { + "items": { + "$ref": "#/definitions/AssetType" + }, + "type": "array" + }, + "AssetType": { + "additionalProperties": false, + "properties": { + "Bytes": { + "$ref": "#/definitions/BytesType" + }, + "Category": { + "$ref": "#/definitions/CategoryType" + }, + "ColorMode": { + "$ref": "#/definitions/ColorModeType" + }, + "Extension": { + "$ref": "#/definitions/ExtensionType" + }, + "ResourceId": { + "$ref": "#/definitions/ResourceIdType" + } + }, + "required": [ + "Category", + "ColorMode", + "Extension" + ], + "type": "object" + }, + "BytesType": { + "maxLength": 1000000, + "type": "string" + }, + "CategoryType": { + "enum": [ + "FAVICON_ICO", + "FAVICON_SVG", + "EMAIL_GRAPHIC", + "SMS_GRAPHIC", + "AUTH_APP_GRAPHIC", + "PASSWORD_GRAPHIC", + "PASSKEY_GRAPHIC", + "PAGE_HEADER_LOGO", + "PAGE_HEADER_BACKGROUND", + "PAGE_FOOTER_LOGO", + "PAGE_FOOTER_BACKGROUND", + "PAGE_BACKGROUND", + "FORM_BACKGROUND", + "FORM_LOGO", + "IDP_BUTTON_ICON" + ], + "type": "string" + }, + "ColorModeType": { + "enum": [ + "LIGHT", + "DARK", + "DYNAMIC" + ], + "type": "string" + }, + "ExtensionType": { + "enum": [ + "ICO", + "JPEG", + "PNG", + "SVG", + "WEBP" + ], + "type": "string" + }, + "ManagedLoginBrandingIdType": { + "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[4][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$", + "type": "string" + }, + "ResourceIdType": { + "maxLength": 40, + "minLength": 1, + "pattern": "^[\\w\\- ]+$", + "type": "string" + } + }, + "description": "Resource Type definition for AWS::Cognito::ManagedLoginBranding", + "handlers": { + "create": { + "permissions": [ + "cognito-idp:CreateManagedLoginBranding" + ], + "timeoutInMinutes": 2 + }, + "delete": { + "permissions": [ + "cognito-idp:DeleteManagedLoginBranding" + ], + "timeoutInMinutes": 2 + }, + "read": { + "permissions": [ + "cognito-idp:DescribeManagedLoginBranding" + ], + "timeoutInMinutes": 2 + }, + "update": { + "permissions": [ + "cognito-idp:UpdateManagedLoginBranding" + ], + "timeoutInMinutes": 2 + } + }, + "primaryIdentifier": [ + "/properties/UserPoolId", + "/properties/ManagedLoginBrandingId" + ], + "properties": { + "Assets": { + "$ref": "#/definitions/AssetList" + }, + "ClientId": { + "type": "string" + }, + "ManagedLoginBrandingId": { + "$ref": "#/definitions/ManagedLoginBrandingIdType" + }, + "ReturnMergedResources": { + "type": "boolean" + }, + "Settings": { + "type": "object" + }, + "UseCognitoProvidedValues": { + "type": "boolean" + }, + "UserPoolId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ManagedLoginBrandingId" + ], + "required": [ + "UserPoolId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Cognito::ManagedLoginBranding", + "writeOnlyProperties": [ + "/properties/ClientId", + "/properties/ReturnMergedResources" + ] +} diff --git a/src/schema/aws-cognito-userpool.json b/src/schema/aws-cognito-userpool.json index d1eef8cf..aa83c975 100644 --- a/src/schema/aws-cognito-userpool.json +++ b/src/schema/aws-cognito-userpool.json @@ -1,549 +1,582 @@ -{ - "additionalProperties": false, - "definitions": { - "AccountRecoverySetting": { - "additionalProperties": false, - "properties": { - "RecoveryMechanisms": { - "items": { - "$ref": "#/definitions/RecoveryOption" - }, - "type": "array" - } - }, - "type": "object" - }, - "AdminCreateUserConfig": { - "additionalProperties": false, - "properties": { - "AllowAdminCreateUserOnly": { - "type": "boolean" - }, - "InviteMessageTemplate": { - "$ref": "#/definitions/InviteMessageTemplate" - }, - "UnusedAccountValidityDays": { - "type": "integer" - } - }, - "type": "object" - }, - "AdvancedSecurityAdditionalFlows": { - "additionalProperties": false, - "properties": { - "CustomAuthMode": { - "type": "string" - } - }, - "type": "object" - }, - "CustomEmailSender": { - "additionalProperties": false, - "properties": { - "LambdaArn": { - "type": "string" - }, - "LambdaVersion": { - "type": "string" - } - }, - "type": "object" - }, - "CustomSMSSender": { - "additionalProperties": false, - "properties": { - "LambdaArn": { - "type": "string" - }, - "LambdaVersion": { - "type": "string" - } - }, - "type": "object" - }, - "DeviceConfiguration": { - "additionalProperties": false, - "properties": { - "ChallengeRequiredOnNewDevice": { - "type": "boolean" - }, - "DeviceOnlyRememberedOnUserPrompt": { - "type": "boolean" - } - }, - "type": "object" - }, - "EmailConfiguration": { - "additionalProperties": false, - "properties": { - "ConfigurationSet": { - "type": "string" - }, - "EmailSendingAccount": { - "type": "string" - }, - "From": { - "type": "string" - }, - "ReplyToEmailAddress": { - "type": "string" - }, - "SourceArn": { - "type": "string" - } - }, - "type": "object" - }, - "InviteMessageTemplate": { - "additionalProperties": false, - "properties": { - "EmailMessage": { - "type": "string" - }, - "EmailSubject": { - "type": "string" - }, - "SMSMessage": { - "type": "string" - } - }, - "type": "object" - }, - "LambdaConfig": { - "additionalProperties": false, - "properties": { - "CreateAuthChallenge": { - "type": "string" - }, - "CustomEmailSender": { - "$ref": "#/definitions/CustomEmailSender" - }, - "CustomMessage": { - "type": "string" - }, - "CustomSMSSender": { - "$ref": "#/definitions/CustomSMSSender" - }, - "DefineAuthChallenge": { - "type": "string" - }, - "KMSKeyID": { - "type": "string" - }, - "PostAuthentication": { - "type": "string" - }, - "PostConfirmation": { - "type": "string" - }, - "PreAuthentication": { - "type": "string" - }, - "PreSignUp": { - "type": "string" - }, - "PreTokenGeneration": { - "type": "string" - }, - "PreTokenGenerationConfig": { - "$ref": "#/definitions/PreTokenGenerationConfig" - }, - "UserMigration": { - "type": "string" - }, - "VerifyAuthChallengeResponse": { - "type": "string" - } - }, - "type": "object" - }, - "NumberAttributeConstraints": { - "additionalProperties": false, - "properties": { - "MaxValue": { - "type": "string" - }, - "MinValue": { - "type": "string" - } - }, - "type": "object" - }, - "PasswordPolicy": { - "additionalProperties": false, - "properties": { - "MinimumLength": { - "type": "integer" - }, - "PasswordHistorySize": { - "type": "integer" - }, - "RequireLowercase": { - "type": "boolean" - }, - "RequireNumbers": { - "type": "boolean" - }, - "RequireSymbols": { - "type": "boolean" - }, - "RequireUppercase": { - "type": "boolean" - }, - "TemporaryPasswordValidityDays": { - "type": "integer" - } - }, - "type": "object" - }, - "Policies": { - "additionalProperties": false, - "properties": { - "PasswordPolicy": { - "$ref": "#/definitions/PasswordPolicy" - } - }, - "type": "object" - }, - "PreTokenGenerationConfig": { - "additionalProperties": false, - "properties": { - "LambdaArn": { - "type": "string" - }, - "LambdaVersion": { - "type": "string" - } - }, - "type": "object" - }, - "RecoveryOption": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Priority": { - "type": "integer" - } - }, - "type": "object" - }, - "SchemaAttribute": { - "additionalProperties": false, - "properties": { - "AttributeDataType": { - "type": "string" - }, - "DeveloperOnlyAttribute": { - "type": "boolean" - }, - "Mutable": { - "type": "boolean" - }, - "Name": { - "type": "string" - }, - "NumberAttributeConstraints": { - "$ref": "#/definitions/NumberAttributeConstraints" - }, - "Required": { - "type": "boolean" - }, - "StringAttributeConstraints": { - "$ref": "#/definitions/StringAttributeConstraints" - } - }, - "type": "object" - }, - "SmsConfiguration": { - "additionalProperties": false, - "properties": { - "ExternalId": { - "type": "string" - }, - "SnsCallerArn": { - "type": "string" - }, - "SnsRegion": { - "type": "string" - } - }, - "type": "object" - }, - "StringAttributeConstraints": { - "additionalProperties": false, - "properties": { - "MaxLength": { - "type": "string" - }, - "MinLength": { - "type": "string" - } - }, - "type": "object" - }, - "UserAttributeUpdateSettings": { - "additionalProperties": false, - "properties": { - "AttributesRequireVerificationBeforeUpdate": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "AttributesRequireVerificationBeforeUpdate" - ], - "type": "object" - }, - "UserPoolAddOns": { - "additionalProperties": false, - "properties": { - "AdvancedSecurityAdditionalFlows": { - "$ref": "#/definitions/AdvancedSecurityAdditionalFlows" - }, - "AdvancedSecurityMode": { - "type": "string" - } - }, - "type": "object" - }, - "UsernameConfiguration": { - "additionalProperties": false, - "properties": { - "CaseSensitive": { - "type": "boolean" - } - }, - "type": "object" - }, - "VerificationMessageTemplate": { - "additionalProperties": false, - "properties": { - "DefaultEmailOption": { - "type": "string" - }, - "EmailMessage": { - "type": "string" - }, - "EmailMessageByLink": { - "type": "string" - }, - "EmailSubject": { - "type": "string" - }, - "EmailSubjectByLink": { - "type": "string" - }, - "SmsMessage": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::Cognito::UserPool Resource Type", - "handlers": { - "create": { - "permissions": [ - "cognito-idp:CreateUserPool", - "iam:PassRole", - "cognito-idp:SetUserPoolMfaConfig", - "cognito-idp:DescribeUserPool", - "kms:CreateGrant", - "iam:CreateServiceLinkedRole", - "cognito-idp:TagResource" - ], - "timeoutInMinutes": 2 - }, - "delete": { - "permissions": [ - "cognito-idp:DeleteUserPool" - ], - "timeoutInMinutes": 2 - }, - "list": { - "permissions": [ - "cognito-idp:ListUserPools" - ] - }, - "read": { - "permissions": [ - "cognito-idp:DescribeUserPool", - "cognito-idp:GetUserPoolMfaConfig" - ] - }, - "update": { - "permissions": [ - "cognito-idp:UpdateUserPool", - "cognito-idp:ListTagsForResource", - "cognito-idp:UntagResource", - "cognito-idp:TagResource", - "cognito-idp:SetUserPoolMfaConfig", - "cognito-idp:AddCustomAttributes", - "cognito-idp:DescribeUserPool", - "cognito-idp:GetUserPoolMfaConfig", - "iam:PassRole" - ], - "timeoutInMinutes": 2 - } - }, - "primaryIdentifier": [ - "/properties/UserPoolId" - ], - "properties": { - "AccountRecoverySetting": { - "$ref": "#/definitions/AccountRecoverySetting" - }, - "AdminCreateUserConfig": { - "$ref": "#/definitions/AdminCreateUserConfig" - }, - "AliasAttributes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Arn": { - "type": "string" - }, - "AutoVerifiedAttributes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "DeletionProtection": { - "type": "string" - }, - "DeviceConfiguration": { - "$ref": "#/definitions/DeviceConfiguration" - }, - "EmailAuthenticationMessage": { - "maxLength": 20000, - "minLength": 6, - "type": "string" - }, - "EmailAuthenticationSubject": { - "maxLength": 140, - "minLength": 1, - "type": "string" - }, - "EmailConfiguration": { - "$ref": "#/definitions/EmailConfiguration" - }, - "EmailVerificationMessage": { - "maxLength": 20000, - "minLength": 6, - "type": "string" - }, - "EmailVerificationSubject": { - "maxLength": 140, - "minLength": 1, - "type": "string" - }, - "EnabledMfas": { - "items": { - "type": "string" - }, - "type": "array" - }, - "LambdaConfig": { - "$ref": "#/definitions/LambdaConfig" - }, - "MfaConfiguration": { - "type": "string" - }, - "Policies": { - "$ref": "#/definitions/Policies" - }, - "ProviderName": { - "type": "string" - }, - "ProviderURL": { - "type": "string" - }, - "Schema": { - "items": { - "$ref": "#/definitions/SchemaAttribute" - }, - "type": "array" - }, - "SmsAuthenticationMessage": { - "maxLength": 140, - "minLength": 6, - "type": "string" - }, - "SmsConfiguration": { - "$ref": "#/definitions/SmsConfiguration" - }, - "SmsVerificationMessage": { - "maxLength": 140, - "minLength": 6, - "type": "string" - }, - "UserAttributeUpdateSettings": { - "$ref": "#/definitions/UserAttributeUpdateSettings" - }, - "UserPoolAddOns": { - "$ref": "#/definitions/UserPoolAddOns" - }, - "UserPoolId": { - "type": "string" - }, - "UserPoolName": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "UserPoolTags": { - "additionalProperties": false, - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { - "type": "string" - } - }, - "type": "object" - }, - "UsernameAttributes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "UsernameConfiguration": { - "$ref": "#/definitions/UsernameConfiguration" - }, - "VerificationMessageTemplate": { - "$ref": "#/definitions/VerificationMessageTemplate" - } - }, - "propertyTransform": { - "/properties/Schema/*/Name": "'custom:' & '' & Name" - }, - "readOnlyProperties": [ - "/properties/ProviderName", - "/properties/UserPoolId", - "/properties/ProviderURL", - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "cognito-idp:ListTagsForResource", - "cognito-idp:UntagResource", - "cognito-idp:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/UserPoolTags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Cognito::UserPool", - "writeOnlyProperties": [ - "/properties/EnabledMfas" - ] -} +{ + "additionalProperties": false, + "definitions": { + "AccountRecoverySetting": { + "additionalProperties": false, + "properties": { + "RecoveryMechanisms": { + "items": { + "$ref": "#/definitions/RecoveryOption" + }, + "type": "array" + } + }, + "type": "object" + }, + "AdminCreateUserConfig": { + "additionalProperties": false, + "properties": { + "AllowAdminCreateUserOnly": { + "type": "boolean" + }, + "InviteMessageTemplate": { + "$ref": "#/definitions/InviteMessageTemplate" + }, + "UnusedAccountValidityDays": { + "type": "integer" + } + }, + "type": "object" + }, + "AdvancedSecurityAdditionalFlows": { + "additionalProperties": false, + "properties": { + "CustomAuthMode": { + "type": "string" + } + }, + "type": "object" + }, + "CustomEmailSender": { + "additionalProperties": false, + "properties": { + "LambdaArn": { + "type": "string" + }, + "LambdaVersion": { + "type": "string" + } + }, + "type": "object" + }, + "CustomSMSSender": { + "additionalProperties": false, + "properties": { + "LambdaArn": { + "type": "string" + }, + "LambdaVersion": { + "type": "string" + } + }, + "type": "object" + }, + "DeviceConfiguration": { + "additionalProperties": false, + "properties": { + "ChallengeRequiredOnNewDevice": { + "type": "boolean" + }, + "DeviceOnlyRememberedOnUserPrompt": { + "type": "boolean" + } + }, + "type": "object" + }, + "EmailConfiguration": { + "additionalProperties": false, + "properties": { + "ConfigurationSet": { + "type": "string" + }, + "EmailSendingAccount": { + "type": "string" + }, + "From": { + "type": "string" + }, + "ReplyToEmailAddress": { + "type": "string" + }, + "SourceArn": { + "type": "string" + } + }, + "type": "object" + }, + "InviteMessageTemplate": { + "additionalProperties": false, + "properties": { + "EmailMessage": { + "type": "string" + }, + "EmailSubject": { + "type": "string" + }, + "SMSMessage": { + "type": "string" + } + }, + "type": "object" + }, + "LambdaConfig": { + "additionalProperties": false, + "properties": { + "CreateAuthChallenge": { + "type": "string" + }, + "CustomEmailSender": { + "$ref": "#/definitions/CustomEmailSender" + }, + "CustomMessage": { + "type": "string" + }, + "CustomSMSSender": { + "$ref": "#/definitions/CustomSMSSender" + }, + "DefineAuthChallenge": { + "type": "string" + }, + "KMSKeyID": { + "type": "string" + }, + "PostAuthentication": { + "type": "string" + }, + "PostConfirmation": { + "type": "string" + }, + "PreAuthentication": { + "type": "string" + }, + "PreSignUp": { + "type": "string" + }, + "PreTokenGeneration": { + "type": "string" + }, + "PreTokenGenerationConfig": { + "$ref": "#/definitions/PreTokenGenerationConfig" + }, + "UserMigration": { + "type": "string" + }, + "VerifyAuthChallengeResponse": { + "type": "string" + } + }, + "type": "object" + }, + "NumberAttributeConstraints": { + "additionalProperties": false, + "properties": { + "MaxValue": { + "type": "string" + }, + "MinValue": { + "type": "string" + } + }, + "type": "object" + }, + "PasswordPolicy": { + "additionalProperties": false, + "properties": { + "MinimumLength": { + "type": "integer" + }, + "PasswordHistorySize": { + "type": "integer" + }, + "RequireLowercase": { + "type": "boolean" + }, + "RequireNumbers": { + "type": "boolean" + }, + "RequireSymbols": { + "type": "boolean" + }, + "RequireUppercase": { + "type": "boolean" + }, + "TemporaryPasswordValidityDays": { + "type": "integer" + } + }, + "type": "object" + }, + "Policies": { + "additionalProperties": false, + "properties": { + "PasswordPolicy": { + "$ref": "#/definitions/PasswordPolicy" + }, + "SignInPolicy": { + "$ref": "#/definitions/SignInPolicy" + } + }, + "type": "object" + }, + "PreTokenGenerationConfig": { + "additionalProperties": false, + "properties": { + "LambdaArn": { + "type": "string" + }, + "LambdaVersion": { + "type": "string" + } + }, + "type": "object" + }, + "RecoveryOption": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Priority": { + "type": "integer" + } + }, + "type": "object" + }, + "SchemaAttribute": { + "additionalProperties": false, + "properties": { + "AttributeDataType": { + "type": "string" + }, + "DeveloperOnlyAttribute": { + "type": "boolean" + }, + "Mutable": { + "type": "boolean" + }, + "Name": { + "type": "string" + }, + "NumberAttributeConstraints": { + "$ref": "#/definitions/NumberAttributeConstraints" + }, + "Required": { + "type": "boolean" + }, + "StringAttributeConstraints": { + "$ref": "#/definitions/StringAttributeConstraints" + } + }, + "type": "object" + }, + "SignInPolicy": { + "additionalProperties": false, + "properties": { + "AllowedFirstAuthFactors": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "SmsConfiguration": { + "additionalProperties": false, + "properties": { + "ExternalId": { + "type": "string" + }, + "SnsCallerArn": { + "type": "string" + }, + "SnsRegion": { + "type": "string" + } + }, + "type": "object" + }, + "StringAttributeConstraints": { + "additionalProperties": false, + "properties": { + "MaxLength": { + "type": "string" + }, + "MinLength": { + "type": "string" + } + }, + "type": "object" + }, + "UserAttributeUpdateSettings": { + "additionalProperties": false, + "properties": { + "AttributesRequireVerificationBeforeUpdate": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "AttributesRequireVerificationBeforeUpdate" + ], + "type": "object" + }, + "UserPoolAddOns": { + "additionalProperties": false, + "properties": { + "AdvancedSecurityAdditionalFlows": { + "$ref": "#/definitions/AdvancedSecurityAdditionalFlows" + }, + "AdvancedSecurityMode": { + "type": "string" + } + }, + "type": "object" + }, + "UsernameConfiguration": { + "additionalProperties": false, + "properties": { + "CaseSensitive": { + "type": "boolean" + } + }, + "type": "object" + }, + "VerificationMessageTemplate": { + "additionalProperties": false, + "properties": { + "DefaultEmailOption": { + "type": "string" + }, + "EmailMessage": { + "type": "string" + }, + "EmailMessageByLink": { + "type": "string" + }, + "EmailSubject": { + "type": "string" + }, + "EmailSubjectByLink": { + "type": "string" + }, + "SmsMessage": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::Cognito::UserPool Resource Type", + "handlers": { + "create": { + "permissions": [ + "cognito-idp:CreateUserPool", + "iam:PassRole", + "cognito-idp:SetUserPoolMfaConfig", + "cognito-idp:DescribeUserPool", + "kms:CreateGrant", + "iam:CreateServiceLinkedRole", + "cognito-idp:TagResource" + ], + "timeoutInMinutes": 2 + }, + "delete": { + "permissions": [ + "cognito-idp:DeleteUserPool" + ], + "timeoutInMinutes": 2 + }, + "list": { + "permissions": [ + "cognito-idp:ListUserPools" + ] + }, + "read": { + "permissions": [ + "cognito-idp:DescribeUserPool", + "cognito-idp:GetUserPoolMfaConfig" + ] + }, + "update": { + "permissions": [ + "cognito-idp:UpdateUserPool", + "cognito-idp:ListTagsForResource", + "cognito-idp:UntagResource", + "cognito-idp:TagResource", + "cognito-idp:SetUserPoolMfaConfig", + "cognito-idp:AddCustomAttributes", + "cognito-idp:DescribeUserPool", + "cognito-idp:GetUserPoolMfaConfig", + "iam:PassRole" + ], + "timeoutInMinutes": 2 + } + }, + "primaryIdentifier": [ + "/properties/UserPoolId" + ], + "properties": { + "AccountRecoverySetting": { + "$ref": "#/definitions/AccountRecoverySetting" + }, + "AdminCreateUserConfig": { + "$ref": "#/definitions/AdminCreateUserConfig" + }, + "AliasAttributes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Arn": { + "type": "string" + }, + "AutoVerifiedAttributes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "DeletionProtection": { + "type": "string" + }, + "DeviceConfiguration": { + "$ref": "#/definitions/DeviceConfiguration" + }, + "EmailAuthenticationMessage": { + "maxLength": 20000, + "minLength": 6, + "type": "string" + }, + "EmailAuthenticationSubject": { + "maxLength": 140, + "minLength": 1, + "type": "string" + }, + "EmailConfiguration": { + "$ref": "#/definitions/EmailConfiguration" + }, + "EmailVerificationMessage": { + "maxLength": 20000, + "minLength": 6, + "type": "string" + }, + "EmailVerificationSubject": { + "maxLength": 140, + "minLength": 1, + "type": "string" + }, + "EnabledMfas": { + "items": { + "type": "string" + }, + "type": "array" + }, + "LambdaConfig": { + "$ref": "#/definitions/LambdaConfig" + }, + "MfaConfiguration": { + "type": "string" + }, + "Policies": { + "$ref": "#/definitions/Policies" + }, + "ProviderName": { + "type": "string" + }, + "ProviderURL": { + "type": "string" + }, + "Schema": { + "items": { + "$ref": "#/definitions/SchemaAttribute" + }, + "type": "array" + }, + "SmsAuthenticationMessage": { + "maxLength": 140, + "minLength": 6, + "type": "string" + }, + "SmsConfiguration": { + "$ref": "#/definitions/SmsConfiguration" + }, + "SmsVerificationMessage": { + "maxLength": 140, + "minLength": 6, + "type": "string" + }, + "UserAttributeUpdateSettings": { + "$ref": "#/definitions/UserAttributeUpdateSettings" + }, + "UserPoolAddOns": { + "$ref": "#/definitions/UserPoolAddOns" + }, + "UserPoolId": { + "type": "string" + }, + "UserPoolName": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "UserPoolTags": { + "additionalProperties": false, + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { + "type": "string" + } + }, + "type": "object" + }, + "UserPoolTier": { + "enum": [ + "LITE", + "ESSENTIALS", + "PLUS" + ], + "type": "string" + }, + "UsernameAttributes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "UsernameConfiguration": { + "$ref": "#/definitions/UsernameConfiguration" + }, + "VerificationMessageTemplate": { + "$ref": "#/definitions/VerificationMessageTemplate" + }, + "WebAuthnRelyingPartyID": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "WebAuthnUserVerification": { + "maxLength": 9, + "minLength": 1, + "type": "string" + } + }, + "propertyTransform": { + "/properties/Schema/*/Name": "'custom:' & '' & Name" + }, + "readOnlyProperties": [ + "/properties/ProviderName", + "/properties/UserPoolId", + "/properties/ProviderURL", + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "cognito-idp:ListTagsForResource", + "cognito-idp:UntagResource", + "cognito-idp:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/UserPoolTags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Cognito::UserPool", + "writeOnlyProperties": [ + "/properties/EnabledMfas" + ] +} diff --git a/src/schema/aws-cognito-userpoolclient.json b/src/schema/aws-cognito-userpoolclient.json index 17737ca1..5814bc04 100644 --- a/src/schema/aws-cognito-userpoolclient.json +++ b/src/schema/aws-cognito-userpoolclient.json @@ -1,224 +1,224 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GenerateSecret", - "/properties/UserPoolId" - ], - "definitions": { - "AnalyticsConfiguration": { - "additionalProperties": false, - "properties": { - "ApplicationArn": { - "type": "string" - }, - "ApplicationId": { - "type": "string" - }, - "ExternalId": { - "type": "string" - }, - "RoleArn": { - "type": "string" - }, - "UserDataShared": { - "type": "boolean" - } - }, - "type": "object" - }, - "TokenValidityUnits": { - "additionalProperties": false, - "properties": { - "AccessToken": { - "type": "string" - }, - "IdToken": { - "type": "string" - }, - "RefreshToken": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Cognito::UserPoolClient", - "handlers": { - "create": { - "permissions": [ - "cognito-idp:CreateUserPoolClient", - "iam:PassRole", - "iam:PutRolePolicy", - "iam:CreateServiceLinkedRole" - ], - "timeoutInMinutes": 2 - }, - "delete": { - "permissions": [ - "cognito-idp:DeleteUserPoolClient", - "iam:PutRolePolicy", - "iam:DeleteRolePolicy" - ], - "timeoutInMinutes": 2 - }, - "list": { - "handlerSchema": { - "properties": { - "UserPoolId": { - "$ref": "resource-schema.json#/properties/UserPoolId" - } - }, - "required": [ - "UserPoolId" - ] - }, - "permissions": [ - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "cognito-idp:DescribeUserPoolClient" - ] - }, - "update": { - "permissions": [ - "cognito-idp:UpdateUserPoolClient", - "iam:PassRole", - "iam:PutRolePolicy" - ], - "timeoutInMinutes": 2 - } - }, - "primaryIdentifier": [ - "/properties/UserPoolId", - "/properties/ClientId" - ], - "properties": { - "AccessTokenValidity": { - "maximum": 86400, - "minimum": 1, - "type": "integer" - }, - "AllowedOAuthFlows": { - "items": { - "type": "string" - }, - "type": "array" - }, - "AllowedOAuthFlowsUserPoolClient": { - "type": "boolean" - }, - "AllowedOAuthScopes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "AnalyticsConfiguration": { - "$ref": "#/definitions/AnalyticsConfiguration" - }, - "AuthSessionValidity": { - "maximum": 15, - "minimum": 3, - "type": "integer" - }, - "CallbackURLs": { - "items": { - "type": "string" - }, - "type": "array" - }, - "ClientId": { - "type": "string" - }, - "ClientName": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "ClientSecret": { - "type": "string" - }, - "DefaultRedirectURI": { - "type": "string" - }, - "EnablePropagateAdditionalUserContextData": { - "type": "boolean" - }, - "EnableTokenRevocation": { - "type": "boolean" - }, - "ExplicitAuthFlows": { - "items": { - "type": "string" - }, - "type": "array" - }, - "GenerateSecret": { - "type": "boolean" - }, - "IdTokenValidity": { - "maximum": 86400, - "minimum": 1, - "type": "integer" - }, - "LogoutURLs": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Name": { - "type": "string" - }, - "PreventUserExistenceErrors": { - "type": "string" - }, - "ReadAttributes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "RefreshTokenValidity": { - "maximum": 315360000, - "minimum": 1, - "type": "integer" - }, - "SupportedIdentityProviders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "TokenValidityUnits": { - "$ref": "#/definitions/TokenValidityUnits" - }, - "UserPoolId": { - "type": "string" - }, - "WriteAttributes": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ClientSecret", - "/properties/Name", - "/properties/ClientId" - ], - "required": [ - "UserPoolId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Cognito::UserPoolClient" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GenerateSecret", + "/properties/UserPoolId" + ], + "definitions": { + "AnalyticsConfiguration": { + "additionalProperties": false, + "properties": { + "ApplicationArn": { + "type": "string" + }, + "ApplicationId": { + "type": "string" + }, + "ExternalId": { + "type": "string" + }, + "RoleArn": { + "type": "string" + }, + "UserDataShared": { + "type": "boolean" + } + }, + "type": "object" + }, + "TokenValidityUnits": { + "additionalProperties": false, + "properties": { + "AccessToken": { + "type": "string" + }, + "IdToken": { + "type": "string" + }, + "RefreshToken": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Cognito::UserPoolClient", + "handlers": { + "create": { + "permissions": [ + "cognito-idp:CreateUserPoolClient", + "iam:PassRole", + "iam:PutRolePolicy", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 2 + }, + "delete": { + "permissions": [ + "cognito-idp:DeleteUserPoolClient", + "iam:PutRolePolicy", + "iam:DeleteRolePolicy" + ], + "timeoutInMinutes": 2 + }, + "list": { + "handlerSchema": { + "properties": { + "UserPoolId": { + "$ref": "resource-schema.json#/properties/UserPoolId" + } + }, + "required": [ + "UserPoolId" + ] + }, + "permissions": [ + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "cognito-idp:DescribeUserPoolClient" + ] + }, + "update": { + "permissions": [ + "cognito-idp:UpdateUserPoolClient", + "iam:PassRole", + "iam:PutRolePolicy" + ], + "timeoutInMinutes": 2 + } + }, + "primaryIdentifier": [ + "/properties/UserPoolId", + "/properties/ClientId" + ], + "properties": { + "AccessTokenValidity": { + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "AllowedOAuthFlows": { + "items": { + "type": "string" + }, + "type": "array" + }, + "AllowedOAuthFlowsUserPoolClient": { + "type": "boolean" + }, + "AllowedOAuthScopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "AnalyticsConfiguration": { + "$ref": "#/definitions/AnalyticsConfiguration" + }, + "AuthSessionValidity": { + "maximum": 15, + "minimum": 3, + "type": "integer" + }, + "CallbackURLs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ClientId": { + "type": "string" + }, + "ClientName": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ClientSecret": { + "type": "string" + }, + "DefaultRedirectURI": { + "type": "string" + }, + "EnablePropagateAdditionalUserContextData": { + "type": "boolean" + }, + "EnableTokenRevocation": { + "type": "boolean" + }, + "ExplicitAuthFlows": { + "items": { + "type": "string" + }, + "type": "array" + }, + "GenerateSecret": { + "type": "boolean" + }, + "IdTokenValidity": { + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "LogoutURLs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Name": { + "type": "string" + }, + "PreventUserExistenceErrors": { + "type": "string" + }, + "ReadAttributes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "RefreshTokenValidity": { + "maximum": 315360000, + "minimum": 1, + "type": "integer" + }, + "SupportedIdentityProviders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "TokenValidityUnits": { + "$ref": "#/definitions/TokenValidityUnits" + }, + "UserPoolId": { + "type": "string" + }, + "WriteAttributes": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ClientSecret", + "/properties/Name", + "/properties/ClientId" + ], + "required": [ + "UserPoolId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Cognito::UserPoolClient" +} diff --git a/src/schema/aws-cognito-userpooldomain.json b/src/schema/aws-cognito-userpooldomain.json index 3b6387a7..f4c387cf 100644 --- a/src/schema/aws-cognito-userpooldomain.json +++ b/src/schema/aws-cognito-userpooldomain.json @@ -1,48 +1,88 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserPoolId", - "/properties/Domain" - ], - "definitions": { - "CustomDomainConfigType": { - "additionalProperties": false, - "properties": { - "CertificateArn": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Cognito::UserPoolDomain", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CloudFrontDistribution": { - "type": "string" - }, - "CustomDomainConfig": { - "$ref": "#/definitions/CustomDomainConfigType" - }, - "Domain": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "UserPoolId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/CloudFrontDistribution" - ], - "required": [ - "UserPoolId", - "Domain" - ], - "typeName": "AWS::Cognito::UserPoolDomain" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/UserPoolId", + "/properties/Domain" + ], + "definitions": { + "CustomDomainConfigType": { + "additionalProperties": false, + "properties": { + "CertificateArn": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Cognito::UserPoolDomain", + "handlers": { + "create": { + "permissions": [ + "cognito-idp:CreateUserPoolDomain", + "cognito-idp:DescribeUserPoolDomain", + "cloudfront:updateDistribution" + ], + "timeoutInMinutes": 20 + }, + "delete": { + "permissions": [ + "cognito-idp:DeleteUserPoolDomain", + "cognito-idp:DescribeUserPoolDomain" + ], + "timeoutInMinutes": 25 + }, + "read": { + "permissions": [ + "cognito-idp:DescribeUserPoolDomain" + ] + }, + "update": { + "permissions": [ + "cognito-idp:UpdateUserPoolDomain", + "cognito-idp:DescribeUserPoolDomain", + "cloudfront:updateDistribution" + ], + "timeoutInMinutes": 20 + } + }, + "primaryIdentifier": [ + "/properties/UserPoolId", + "/properties/Domain" + ], + "properties": { + "CloudFrontDistribution": { + "type": "string" + }, + "CustomDomainConfig": { + "$ref": "#/definitions/CustomDomainConfigType" + }, + "Domain": { + "type": "string" + }, + "ManagedLoginVersion": { + "type": "integer" + }, + "UserPoolId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CloudFrontDistribution" + ], + "required": [ + "UserPoolId", + "Domain" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Cognito::UserPoolDomain", + "writeOnlyProperties": [ + "/properties/ManagedLoginVersion" + ] +} diff --git a/src/schema/aws-cognito-userpoolgroup.json b/src/schema/aws-cognito-userpoolgroup.json index e7ba2b85..bbeed9fc 100644 --- a/src/schema/aws-cognito-userpoolgroup.json +++ b/src/schema/aws-cognito-userpoolgroup.json @@ -1,89 +1,89 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserPoolId", - "/properties/GroupName" - ], - "description": "Resource Type definition for AWS::Cognito::UserPoolGroup", - "handlers": { - "create": { - "permissions": [ - "cognito-idp:CreateGroup", - "iam:PassRole", - "iam:PutRolePolicy", - "cognito-idp:GetGroup" - ], - "timeoutInMinutes": 5 - }, - "delete": { - "permissions": [ - "cognito-idp:DeleteGroup", - "cognito-idp:GetGroup", - "iam:PutRolePolicy" - ], - "timeoutInMinutes": 5 - }, - "list": { - "handlerSchema": { - "properties": { - "UserPoolId": { - "$ref": "resource-schema.json#/properties/UserPoolId" - } - }, - "required": [ - "UserPoolId" - ] - }, - "permissions": [ - "cognito-idp:ListGroups" - ] - }, - "read": { - "permissions": [ - "cognito-idp:GetGroup" - ] - }, - "update": { - "permissions": [ - "cognito-idp:UpdateGroup", - "iam:PassRole", - "iam:PutRolePolicy" - ], - "timeoutInMinutes": 5 - } - }, - "primaryIdentifier": [ - "/properties/UserPoolId", - "/properties/GroupName" - ], - "properties": { - "Description": { - "maxLength": 2048, - "type": "string" - }, - "GroupName": { - "type": "string" - }, - "Precedence": { - "minimum": 0, - "type": "integer" - }, - "RoleArn": { - "type": "string" - }, - "UserPoolId": { - "type": "string" - } - }, - "required": [ - "UserPoolId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Cognito::UserPoolGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/UserPoolId", + "/properties/GroupName" + ], + "description": "Resource Type definition for AWS::Cognito::UserPoolGroup", + "handlers": { + "create": { + "permissions": [ + "cognito-idp:CreateGroup", + "iam:PassRole", + "iam:PutRolePolicy", + "cognito-idp:GetGroup" + ], + "timeoutInMinutes": 5 + }, + "delete": { + "permissions": [ + "cognito-idp:DeleteGroup", + "cognito-idp:GetGroup", + "iam:PutRolePolicy" + ], + "timeoutInMinutes": 5 + }, + "list": { + "handlerSchema": { + "properties": { + "UserPoolId": { + "$ref": "resource-schema.json#/properties/UserPoolId" + } + }, + "required": [ + "UserPoolId" + ] + }, + "permissions": [ + "cognito-idp:ListGroups" + ] + }, + "read": { + "permissions": [ + "cognito-idp:GetGroup" + ] + }, + "update": { + "permissions": [ + "cognito-idp:UpdateGroup", + "iam:PassRole", + "iam:PutRolePolicy" + ], + "timeoutInMinutes": 5 + } + }, + "primaryIdentifier": [ + "/properties/UserPoolId", + "/properties/GroupName" + ], + "properties": { + "Description": { + "maxLength": 2048, + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Precedence": { + "minimum": 0, + "type": "integer" + }, + "RoleArn": { + "type": "string" + }, + "UserPoolId": { + "type": "string" + } + }, + "required": [ + "UserPoolId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Cognito::UserPoolGroup" +} diff --git a/src/schema/aws-cognito-userpoolidentityprovider.json b/src/schema/aws-cognito-userpoolidentityprovider.json index 6405e108..39f1d24b 100644 --- a/src/schema/aws-cognito-userpoolidentityprovider.json +++ b/src/schema/aws-cognito-userpoolidentityprovider.json @@ -1,105 +1,105 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserPoolId", - "/properties/ProviderName", - "/properties/ProviderType" - ], - "description": "Resource Type definition for AWS::Cognito::UserPoolIdentityProvider", - "handlers": { - "create": { - "permissions": [ - "cognito-idp:CreateIdentityProvider", - "cognito-idp:DescribeIdentityProvider" - ], - "timeoutInMinutes": 2 - }, - "delete": { - "permissions": [ - "cognito-idp:DeleteIdentityProvider", - "cognito-idp:DescribeIdentityProvider" - ], - "timeoutInMinutes": 2 - }, - "list": { - "handlerSchema": { - "properties": { - "UserPoolId": { - "$ref": "resource-schema.json#/properties/UserPoolId" - } - }, - "required": [ - "UserPoolId" - ] - }, - "permissions": [ - "cognito-idp:ListIdentityProviders" - ] - }, - "read": { - "permissions": [ - "cognito-idp:DescribeIdentityProvider" - ] - }, - "update": { - "permissions": [ - "cognito-idp:UpdateIdentityProvider", - "cognito-idp:DescribeIdentityProvider" - ], - "timeoutInMinutes": 2 - } - }, - "primaryIdentifier": [ - "/properties/UserPoolId", - "/properties/ProviderName" - ], - "properties": { - "AttributeMapping": { - "additionalProperties": false, - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { - "type": "string" - } - }, - "type": "object" - }, - "IdpIdentifiers": { - "items": { - "type": "string" - }, - "type": "array" - }, - "ProviderDetails": { - "additionalProperties": false, - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { - "type": "string" - } - }, - "type": "object" - }, - "ProviderName": { - "type": "string" - }, - "ProviderType": { - "type": "string" - }, - "UserPoolId": { - "type": "string" - } - }, - "required": [ - "UserPoolId", - "ProviderName", - "ProviderType", - "ProviderDetails" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Cognito::UserPoolIdentityProvider" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/UserPoolId", + "/properties/ProviderName", + "/properties/ProviderType" + ], + "description": "Resource Type definition for AWS::Cognito::UserPoolIdentityProvider", + "handlers": { + "create": { + "permissions": [ + "cognito-idp:CreateIdentityProvider", + "cognito-idp:DescribeIdentityProvider" + ], + "timeoutInMinutes": 2 + }, + "delete": { + "permissions": [ + "cognito-idp:DeleteIdentityProvider", + "cognito-idp:DescribeIdentityProvider" + ], + "timeoutInMinutes": 2 + }, + "list": { + "handlerSchema": { + "properties": { + "UserPoolId": { + "$ref": "resource-schema.json#/properties/UserPoolId" + } + }, + "required": [ + "UserPoolId" + ] + }, + "permissions": [ + "cognito-idp:ListIdentityProviders" + ] + }, + "read": { + "permissions": [ + "cognito-idp:DescribeIdentityProvider" + ] + }, + "update": { + "permissions": [ + "cognito-idp:UpdateIdentityProvider", + "cognito-idp:DescribeIdentityProvider" + ], + "timeoutInMinutes": 2 + } + }, + "primaryIdentifier": [ + "/properties/UserPoolId", + "/properties/ProviderName" + ], + "properties": { + "AttributeMapping": { + "additionalProperties": false, + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { + "type": "string" + } + }, + "type": "object" + }, + "IdpIdentifiers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ProviderDetails": { + "additionalProperties": false, + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { + "type": "string" + } + }, + "type": "object" + }, + "ProviderName": { + "type": "string" + }, + "ProviderType": { + "type": "string" + }, + "UserPoolId": { + "type": "string" + } + }, + "required": [ + "UserPoolId", + "ProviderName", + "ProviderType", + "ProviderDetails" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Cognito::UserPoolIdentityProvider" +} diff --git a/src/schema/aws-cognito-userpoolresourceserver.json b/src/schema/aws-cognito-userpoolresourceserver.json index 598204dc..ad3f26b6 100644 --- a/src/schema/aws-cognito-userpoolresourceserver.json +++ b/src/schema/aws-cognito-userpoolresourceserver.json @@ -1,100 +1,100 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserPoolId", - "/properties/Identifier" - ], - "definitions": { - "ResourceServerScopeType": { - "additionalProperties": false, - "properties": { - "ScopeDescription": { - "type": "string" - }, - "ScopeName": { - "type": "string" - } - }, - "required": [ - "ScopeDescription", - "ScopeName" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Cognito::UserPoolResourceServer", - "handlers": { - "create": { - "permissions": [ - "cognito-idp:CreateResourceServer" - ], - "timeoutInMinutes": 2 - }, - "delete": { - "permissions": [ - "cognito-idp:DeleteResourceServer" - ], - "timeoutInMinutes": 2 - }, - "list": { - "handlerSchema": { - "properties": { - "UserPoolId": { - "$ref": "resource-schema.json#/properties/UserPoolId" - } - }, - "required": [ - "UserPoolId" - ] - }, - "permissions": [ - "cognito-idp:ListResourceServers" - ] - }, - "read": { - "permissions": [ - "cognito-idp:DescribeResourceServer" - ] - }, - "update": { - "permissions": [ - "cognito-idp:UpdateResourceServer" - ], - "timeoutInMinutes": 2 - } - }, - "primaryIdentifier": [ - "/properties/UserPoolId", - "/properties/Identifier" - ], - "properties": { - "Identifier": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Scopes": { - "items": { - "$ref": "#/definitions/ResourceServerScopeType" - }, - "type": "array" - }, - "UserPoolId": { - "type": "string" - } - }, - "required": [ - "UserPoolId", - "Identifier", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Cognito::UserPoolResourceServer" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/UserPoolId", + "/properties/Identifier" + ], + "definitions": { + "ResourceServerScopeType": { + "additionalProperties": false, + "properties": { + "ScopeDescription": { + "type": "string" + }, + "ScopeName": { + "type": "string" + } + }, + "required": [ + "ScopeDescription", + "ScopeName" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Cognito::UserPoolResourceServer", + "handlers": { + "create": { + "permissions": [ + "cognito-idp:CreateResourceServer" + ], + "timeoutInMinutes": 2 + }, + "delete": { + "permissions": [ + "cognito-idp:DeleteResourceServer" + ], + "timeoutInMinutes": 2 + }, + "list": { + "handlerSchema": { + "properties": { + "UserPoolId": { + "$ref": "resource-schema.json#/properties/UserPoolId" + } + }, + "required": [ + "UserPoolId" + ] + }, + "permissions": [ + "cognito-idp:ListResourceServers" + ] + }, + "read": { + "permissions": [ + "cognito-idp:DescribeResourceServer" + ] + }, + "update": { + "permissions": [ + "cognito-idp:UpdateResourceServer" + ], + "timeoutInMinutes": 2 + } + }, + "primaryIdentifier": [ + "/properties/UserPoolId", + "/properties/Identifier" + ], + "properties": { + "Identifier": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scopes": { + "items": { + "$ref": "#/definitions/ResourceServerScopeType" + }, + "type": "array" + }, + "UserPoolId": { + "type": "string" + } + }, + "required": [ + "UserPoolId", + "Identifier", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Cognito::UserPoolResourceServer" +} diff --git a/src/schema/aws-cognito-userpoolriskconfigurationattachment.json b/src/schema/aws-cognito-userpoolriskconfigurationattachment.json index dea40e3a..38d2ba23 100644 --- a/src/schema/aws-cognito-userpoolriskconfigurationattachment.json +++ b/src/schema/aws-cognito-userpoolriskconfigurationattachment.json @@ -1,215 +1,215 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserPoolId", - "/properties/ClientId" - ], - "definitions": { - "AccountTakeoverActionType": { - "additionalProperties": false, - "properties": { - "EventAction": { - "type": "string" - }, - "Notify": { - "type": "boolean" - } - }, - "required": [ - "EventAction", - "Notify" - ], - "type": "object" - }, - "AccountTakeoverActionsType": { - "additionalProperties": false, - "properties": { - "HighAction": { - "$ref": "#/definitions/AccountTakeoverActionType" - }, - "LowAction": { - "$ref": "#/definitions/AccountTakeoverActionType" - }, - "MediumAction": { - "$ref": "#/definitions/AccountTakeoverActionType" - } - }, - "type": "object" - }, - "AccountTakeoverRiskConfigurationType": { - "additionalProperties": false, - "properties": { - "Actions": { - "$ref": "#/definitions/AccountTakeoverActionsType" - }, - "NotifyConfiguration": { - "$ref": "#/definitions/NotifyConfigurationType" - } - }, - "required": [ - "Actions" - ], - "type": "object" - }, - "CompromisedCredentialsActionsType": { - "additionalProperties": false, - "properties": { - "EventAction": { - "type": "string" - } - }, - "required": [ - "EventAction" - ], - "type": "object" - }, - "CompromisedCredentialsRiskConfigurationType": { - "additionalProperties": false, - "properties": { - "Actions": { - "$ref": "#/definitions/CompromisedCredentialsActionsType" - }, - "EventFilter": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Actions" - ], - "type": "object" - }, - "NotifyConfigurationType": { - "additionalProperties": false, - "properties": { - "BlockEmail": { - "$ref": "#/definitions/NotifyEmailType" - }, - "From": { - "type": "string" - }, - "MfaEmail": { - "$ref": "#/definitions/NotifyEmailType" - }, - "NoActionEmail": { - "$ref": "#/definitions/NotifyEmailType" - }, - "ReplyTo": { - "type": "string" - }, - "SourceArn": { - "type": "string" - } - }, - "required": [ - "SourceArn" - ], - "type": "object" - }, - "NotifyEmailType": { - "additionalProperties": false, - "properties": { - "HtmlBody": { - "type": "string" - }, - "Subject": { - "type": "string" - }, - "TextBody": { - "type": "string" - } - }, - "required": [ - "Subject" - ], - "type": "object" - }, - "RiskExceptionConfigurationType": { - "additionalProperties": false, - "properties": { - "BlockedIPRangeList": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "SkippedIPRangeList": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Cognito::UserPoolRiskConfigurationAttachment", - "handlers": { - "create": { - "permissions": [ - "cognito-idp:SetRiskConfiguration", - "cognito-idp:DescribeRiskConfiguration", - "iam:PassRole" - ], - "timeoutInMinutes": 2 - }, - "delete": { - "permissions": [ - "cognito-idp:SetRiskConfiguration", - "cognito-idp:DescribeRiskConfiguration" - ], - "timeoutInMinutes": 2 - }, - "read": { - "permissions": [ - "cognito-idp:DescribeRiskConfiguration" - ] - }, - "update": { - "permissions": [ - "cognito-idp:SetRiskConfiguration", - "cognito-idp:DescribeRiskConfiguration", - "iam:PassRole" - ], - "timeoutInMinutes": 2 - } - }, - "primaryIdentifier": [ - "/properties/UserPoolId", - "/properties/ClientId" - ], - "properties": { - "AccountTakeoverRiskConfiguration": { - "$ref": "#/definitions/AccountTakeoverRiskConfigurationType" - }, - "ClientId": { - "type": "string" - }, - "CompromisedCredentialsRiskConfiguration": { - "$ref": "#/definitions/CompromisedCredentialsRiskConfigurationType" - }, - "RiskExceptionConfiguration": { - "$ref": "#/definitions/RiskExceptionConfigurationType" - }, - "UserPoolId": { - "type": "string" - } - }, - "required": [ - "UserPoolId", - "ClientId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Cognito::UserPoolRiskConfigurationAttachment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/UserPoolId", + "/properties/ClientId" + ], + "definitions": { + "AccountTakeoverActionType": { + "additionalProperties": false, + "properties": { + "EventAction": { + "type": "string" + }, + "Notify": { + "type": "boolean" + } + }, + "required": [ + "EventAction", + "Notify" + ], + "type": "object" + }, + "AccountTakeoverActionsType": { + "additionalProperties": false, + "properties": { + "HighAction": { + "$ref": "#/definitions/AccountTakeoverActionType" + }, + "LowAction": { + "$ref": "#/definitions/AccountTakeoverActionType" + }, + "MediumAction": { + "$ref": "#/definitions/AccountTakeoverActionType" + } + }, + "type": "object" + }, + "AccountTakeoverRiskConfigurationType": { + "additionalProperties": false, + "properties": { + "Actions": { + "$ref": "#/definitions/AccountTakeoverActionsType" + }, + "NotifyConfiguration": { + "$ref": "#/definitions/NotifyConfigurationType" + } + }, + "required": [ + "Actions" + ], + "type": "object" + }, + "CompromisedCredentialsActionsType": { + "additionalProperties": false, + "properties": { + "EventAction": { + "type": "string" + } + }, + "required": [ + "EventAction" + ], + "type": "object" + }, + "CompromisedCredentialsRiskConfigurationType": { + "additionalProperties": false, + "properties": { + "Actions": { + "$ref": "#/definitions/CompromisedCredentialsActionsType" + }, + "EventFilter": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Actions" + ], + "type": "object" + }, + "NotifyConfigurationType": { + "additionalProperties": false, + "properties": { + "BlockEmail": { + "$ref": "#/definitions/NotifyEmailType" + }, + "From": { + "type": "string" + }, + "MfaEmail": { + "$ref": "#/definitions/NotifyEmailType" + }, + "NoActionEmail": { + "$ref": "#/definitions/NotifyEmailType" + }, + "ReplyTo": { + "type": "string" + }, + "SourceArn": { + "type": "string" + } + }, + "required": [ + "SourceArn" + ], + "type": "object" + }, + "NotifyEmailType": { + "additionalProperties": false, + "properties": { + "HtmlBody": { + "type": "string" + }, + "Subject": { + "type": "string" + }, + "TextBody": { + "type": "string" + } + }, + "required": [ + "Subject" + ], + "type": "object" + }, + "RiskExceptionConfigurationType": { + "additionalProperties": false, + "properties": { + "BlockedIPRangeList": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SkippedIPRangeList": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Cognito::UserPoolRiskConfigurationAttachment", + "handlers": { + "create": { + "permissions": [ + "cognito-idp:SetRiskConfiguration", + "cognito-idp:DescribeRiskConfiguration", + "iam:PassRole" + ], + "timeoutInMinutes": 2 + }, + "delete": { + "permissions": [ + "cognito-idp:SetRiskConfiguration", + "cognito-idp:DescribeRiskConfiguration" + ], + "timeoutInMinutes": 2 + }, + "read": { + "permissions": [ + "cognito-idp:DescribeRiskConfiguration" + ] + }, + "update": { + "permissions": [ + "cognito-idp:SetRiskConfiguration", + "cognito-idp:DescribeRiskConfiguration", + "iam:PassRole" + ], + "timeoutInMinutes": 2 + } + }, + "primaryIdentifier": [ + "/properties/UserPoolId", + "/properties/ClientId" + ], + "properties": { + "AccountTakeoverRiskConfiguration": { + "$ref": "#/definitions/AccountTakeoverRiskConfigurationType" + }, + "ClientId": { + "type": "string" + }, + "CompromisedCredentialsRiskConfiguration": { + "$ref": "#/definitions/CompromisedCredentialsRiskConfigurationType" + }, + "RiskExceptionConfiguration": { + "$ref": "#/definitions/RiskExceptionConfigurationType" + }, + "UserPoolId": { + "type": "string" + } + }, + "required": [ + "UserPoolId", + "ClientId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Cognito::UserPoolRiskConfigurationAttachment" +} diff --git a/src/schema/aws-cognito-userpooluicustomizationattachment.json b/src/schema/aws-cognito-userpooluicustomizationattachment.json index e9b1bca3..7479de76 100644 --- a/src/schema/aws-cognito-userpooluicustomizationattachment.json +++ b/src/schema/aws-cognito-userpooluicustomizationattachment.json @@ -1,62 +1,62 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserPoolId", - "/properties/ClientId" - ], - "description": "Resource Type definition for AWS::Cognito::UserPoolUICustomizationAttachment", - "handlers": { - "create": { - "permissions": [ - "cognito-idp:SetUICustomization", - "cognito-idp:GetUICustomization" - ], - "timeoutInMinutes": 2 - }, - "delete": { - "permissions": [ - "cognito-idp:SetUICustomization", - "cognito-idp:GetUICustomization" - ], - "timeoutInMinutes": 2 - }, - "read": { - "permissions": [ - "cognito-idp:GetUICustomization" - ] - }, - "update": { - "permissions": [ - "cognito-idp:SetUICustomization" - ], - "timeoutInMinutes": 2 - } - }, - "primaryIdentifier": [ - "/properties/UserPoolId", - "/properties/ClientId" - ], - "properties": { - "CSS": { - "type": "string" - }, - "ClientId": { - "type": "string" - }, - "UserPoolId": { - "type": "string" - } - }, - "required": [ - "UserPoolId", - "ClientId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Cognito::UserPoolUICustomizationAttachment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/UserPoolId", + "/properties/ClientId" + ], + "description": "Resource Type definition for AWS::Cognito::UserPoolUICustomizationAttachment", + "handlers": { + "create": { + "permissions": [ + "cognito-idp:SetUICustomization", + "cognito-idp:GetUICustomization" + ], + "timeoutInMinutes": 2 + }, + "delete": { + "permissions": [ + "cognito-idp:SetUICustomization", + "cognito-idp:GetUICustomization" + ], + "timeoutInMinutes": 2 + }, + "read": { + "permissions": [ + "cognito-idp:GetUICustomization" + ] + }, + "update": { + "permissions": [ + "cognito-idp:SetUICustomization" + ], + "timeoutInMinutes": 2 + } + }, + "primaryIdentifier": [ + "/properties/UserPoolId", + "/properties/ClientId" + ], + "properties": { + "CSS": { + "type": "string" + }, + "ClientId": { + "type": "string" + }, + "UserPoolId": { + "type": "string" + } + }, + "required": [ + "UserPoolId", + "ClientId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Cognito::UserPoolUICustomizationAttachment" +} diff --git a/src/schema/aws-cognito-userpooluser.json b/src/schema/aws-cognito-userpooluser.json index 78967acc..c0b74ba1 100644 --- a/src/schema/aws-cognito-userpooluser.json +++ b/src/schema/aws-cognito-userpooluser.json @@ -1,127 +1,127 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DesiredDeliveryMediums", - "/properties/ForceAliasCreation", - "/properties/UserAttributes", - "/properties/Username", - "/properties/UserPoolId", - "/properties/ValidationData", - "/properties/ClientMetadata", - "/properties/MessageAction" - ], - "definitions": { - "AttributeType": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Cognito::UserPoolUser", - "handlers": { - "create": { - "permissions": [ - "cognito-idp:AdminCreateUser", - "cognito-idp:AdminGetUser", - "iam:PassRole" - ], - "timeoutInMinutes": 2 - }, - "delete": { - "permissions": [ - "cognito-idp:AdminDeleteUser" - ], - "timeoutInMinutes": 2 - }, - "list": { - "handlerSchema": { - "properties": { - "UserPoolId": { - "$ref": "resource-schema.json#/properties/UserPoolId" - } - }, - "required": [ - "UserPoolId" - ] - }, - "permissions": [ - "cognito-idp:ListUsers" - ] - }, - "read": { - "permissions": [ - "cognito-idp:AdminGetUser" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserPoolId", - "/properties/Username" - ], - "properties": { - "ClientMetadata": { - "additionalProperties": false, - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { - "type": "string" - } - }, - "type": "object" - }, - "DesiredDeliveryMediums": { - "items": { - "type": "string" - }, - "type": "array" - }, - "ForceAliasCreation": { - "type": "boolean" - }, - "MessageAction": { - "type": "string" - }, - "UserAttributes": { - "items": { - "$ref": "#/definitions/AttributeType" - }, - "type": "array" - }, - "UserPoolId": { - "type": "string" - }, - "Username": { - "type": "string" - }, - "ValidationData": { - "items": { - "$ref": "#/definitions/AttributeType" - }, - "type": "array" - } - }, - "required": [ - "UserPoolId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Cognito::UserPoolUser", - "writeOnlyProperties": [ - "/properties/DesiredDeliveryMediums", - "/properties/ForceAliasCreation", - "/properties/ValidationData", - "/properties/ClientMetadata", - "/properties/MessageAction" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DesiredDeliveryMediums", + "/properties/ForceAliasCreation", + "/properties/UserAttributes", + "/properties/Username", + "/properties/UserPoolId", + "/properties/ValidationData", + "/properties/ClientMetadata", + "/properties/MessageAction" + ], + "definitions": { + "AttributeType": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Cognito::UserPoolUser", + "handlers": { + "create": { + "permissions": [ + "cognito-idp:AdminCreateUser", + "cognito-idp:AdminGetUser", + "iam:PassRole" + ], + "timeoutInMinutes": 2 + }, + "delete": { + "permissions": [ + "cognito-idp:AdminDeleteUser" + ], + "timeoutInMinutes": 2 + }, + "list": { + "handlerSchema": { + "properties": { + "UserPoolId": { + "$ref": "resource-schema.json#/properties/UserPoolId" + } + }, + "required": [ + "UserPoolId" + ] + }, + "permissions": [ + "cognito-idp:ListUsers" + ] + }, + "read": { + "permissions": [ + "cognito-idp:AdminGetUser" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserPoolId", + "/properties/Username" + ], + "properties": { + "ClientMetadata": { + "additionalProperties": false, + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { + "type": "string" + } + }, + "type": "object" + }, + "DesiredDeliveryMediums": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ForceAliasCreation": { + "type": "boolean" + }, + "MessageAction": { + "type": "string" + }, + "UserAttributes": { + "items": { + "$ref": "#/definitions/AttributeType" + }, + "type": "array" + }, + "UserPoolId": { + "type": "string" + }, + "Username": { + "type": "string" + }, + "ValidationData": { + "items": { + "$ref": "#/definitions/AttributeType" + }, + "type": "array" + } + }, + "required": [ + "UserPoolId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Cognito::UserPoolUser", + "writeOnlyProperties": [ + "/properties/DesiredDeliveryMediums", + "/properties/ForceAliasCreation", + "/properties/ValidationData", + "/properties/ClientMetadata", + "/properties/MessageAction" + ] +} diff --git a/src/schema/aws-cognito-userpoolusertogroupattachment.json b/src/schema/aws-cognito-userpoolusertogroupattachment.json index 675dd082..67178cfc 100644 --- a/src/schema/aws-cognito-userpoolusertogroupattachment.json +++ b/src/schema/aws-cognito-userpoolusertogroupattachment.json @@ -1,59 +1,59 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserPoolId", - "/properties/GroupName", - "/properties/Username" - ], - "description": "Resource Type definition for AWS::Cognito::UserPoolUserToGroupAttachment", - "handlers": { - "create": { - "permissions": [ - "cognito-idp:AdminAddUserToGroup", - "cognito-idp:AdminListGroupsForUser" - ], - "timeoutInMinutes": 2 - }, - "delete": { - "permissions": [ - "cognito-idp:AdminRemoveUserFromGroup", - "cognito-idp:AdminListGroupsForUser" - ], - "timeoutInMinutes": 2 - }, - "read": { - "permissions": [ - "cognito-idp:AdminListGroupsForUser" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserPoolId", - "/properties/GroupName", - "/properties/Username" - ], - "properties": { - "GroupName": { - "type": "string" - }, - "UserPoolId": { - "type": "string" - }, - "Username": { - "type": "string" - } - }, - "required": [ - "UserPoolId", - "Username", - "GroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Cognito::UserPoolUserToGroupAttachment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/UserPoolId", + "/properties/GroupName", + "/properties/Username" + ], + "description": "Resource Type definition for AWS::Cognito::UserPoolUserToGroupAttachment", + "handlers": { + "create": { + "permissions": [ + "cognito-idp:AdminAddUserToGroup", + "cognito-idp:AdminListGroupsForUser" + ], + "timeoutInMinutes": 2 + }, + "delete": { + "permissions": [ + "cognito-idp:AdminRemoveUserFromGroup", + "cognito-idp:AdminListGroupsForUser" + ], + "timeoutInMinutes": 2 + }, + "read": { + "permissions": [ + "cognito-idp:AdminListGroupsForUser" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserPoolId", + "/properties/GroupName", + "/properties/Username" + ], + "properties": { + "GroupName": { + "type": "string" + }, + "UserPoolId": { + "type": "string" + }, + "Username": { + "type": "string" + } + }, + "required": [ + "UserPoolId", + "Username", + "GroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Cognito::UserPoolUserToGroupAttachment" +} diff --git a/src/schema/aws-comprehend-documentclassifier.json b/src/schema/aws-comprehend-documentclassifier.json index 593c3c2c..66042698 100644 --- a/src/schema/aws-comprehend-documentclassifier.json +++ b/src/schema/aws-comprehend-documentclassifier.json @@ -1,365 +1,369 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DataAccessRoleArn", - "/properties/InputDataConfig", - "/properties/OutputDataConfig", - "/properties/LanguageCode", - "/properties/ModelKmsKeyId", - "/properties/DocumentClassifierName", - "/properties/VersionName", - "/properties/Mode", - "/properties/VolumeKmsKeyId", - "/properties/VpcConfig" - ], - "definitions": { - "AugmentedManifestsListItem": { - "additionalProperties": false, - "properties": { - "AttributeNames": { - "insertionOrder": false, - "items": { - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*", - "type": "string" - }, - "maxItems": 63, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "S3Uri": { - "$ref": "#/definitions/S3Uri" - }, - "Split": { - "enum": [ - "TRAIN", - "TEST" - ], - "type": "string" - } - }, - "required": [ - "AttributeNames", - "S3Uri" - ], - "type": "object" - }, - "DocumentClassifierDocuments": { - "additionalProperties": false, - "properties": { - "S3Uri": { - "$ref": "#/definitions/S3Uri" - }, - "TestS3Uri": { - "$ref": "#/definitions/S3Uri" - } - }, - "required": [ - "S3Uri" - ], - "type": "object" - }, - "DocumentClassifierInputDataConfig": { - "additionalProperties": false, - "properties": { - "AugmentedManifests": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AugmentedManifestsListItem" - }, - "type": "array", - "uniqueItems": true - }, - "DataFormat": { - "enum": [ - "COMPREHEND_CSV", - "AUGMENTED_MANIFEST" - ], - "type": "string" - }, - "DocumentReaderConfig": { - "$ref": "#/definitions/DocumentReaderConfig" - }, - "DocumentType": { - "enum": [ - "PLAIN_TEXT_DOCUMENT", - "SEMI_STRUCTURED_DOCUMENT" - ], - "type": "string" - }, - "Documents": { - "$ref": "#/definitions/DocumentClassifierDocuments" - }, - "LabelDelimiter": { - "maxLength": 1, - "minLength": 1, - "pattern": "^[ ~!@#$%^*\\-_+=|\\\\:;\\t>?/]$", - "type": "string" - }, - "S3Uri": { - "$ref": "#/definitions/S3Uri" - }, - "TestS3Uri": { - "$ref": "#/definitions/S3Uri" - } - }, - "required": [], - "type": "object" - }, - "DocumentClassifierOutputDataConfig": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "$ref": "#/definitions/KmsKeyId" - }, - "S3Uri": { - "$ref": "#/definitions/S3Uri" - } - }, - "required": [], - "type": "object" - }, - "DocumentReaderConfig": { - "additionalProperties": false, - "properties": { - "DocumentReadAction": { - "enum": [ - "TEXTRACT_DETECT_DOCUMENT_TEXT", - "TEXTRACT_ANALYZE_DOCUMENT" - ], - "type": "string" - }, - "DocumentReadMode": { - "enum": [ - "SERVICE_DEFAULT", - "FORCE_DOCUMENT_READ_ACTION" - ], - "type": "string" - }, - "FeatureTypes": { - "insertionOrder": false, - "items": { - "enum": [ - "TABLES", - "FORMS" - ], - "type": "string" - }, - "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "DocumentReadAction" - ], - "type": "object" - }, - "KmsKeyId": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "S3Uri": { - "maxLength": 1024, - "pattern": "s3://[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9](/.*)?", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "VpcConfig": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "insertionOrder": false, - "items": { - "maxLength": 32, - "minLength": 1, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Subnets": { - "insertionOrder": false, - "items": { - "maxLength": 32, - "minLength": 1, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 16, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "SecurityGroupIds", - "Subnets" - ], - "type": "object" - } - }, - "description": "Document Classifier enables training document classifier models.", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "comprehend:CreateDocumentClassifier", - "comprehend:DescribeDocumentClassifier", - "comprehend:DescribeResourcePolicy", - "comprehend:ListTagsForResource", - "textract:DetectDocumentText" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "comprehend:DescribeDocumentClassifier", - "comprehend:DeleteDocumentClassifier" - ], - "timeoutInMinutes": 120 - }, - "list": { - "permissions": [ - "comprehend:ListDocumentClassifiers" - ] - }, - "read": { - "permissions": [ - "comprehend:DescribeDocumentClassifier", - "comprehend:DescribeResourcePolicy", - "comprehend:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "comprehend:PutResourcePolicy", - "comprehend:DeleteResourcePolicy", - "comprehend:DescribeResourcePolicy", - "comprehend:DescribeDocumentClassifier", - "comprehend:ListTagsForResource", - "comprehend:TagResource", - "comprehend:UntagResource" - ], - "timeoutInMinutes": 10 - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 256, - "minLength": 1, - "pattern": "arn:aws(-[^:]+)?:comprehend:[a-zA-Z0-9-]*:[0-9]{12}:document-classifier/[a-zA-Z0-9](-*[a-zA-Z0-9])*(/version/[a-zA-Z0-9](-*[a-zA-Z0-9])*)?", - "type": "string" - }, - "DataAccessRoleArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:aws(-[^:]+)?:iam::[0-9]{12}:role/.+", - "type": "string" - }, - "DocumentClassifierName": { - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", - "type": "string" - }, - "InputDataConfig": { - "$ref": "#/definitions/DocumentClassifierInputDataConfig" - }, - "LanguageCode": { - "enum": [ - "en", - "es", - "fr", - "it", - "de", - "pt" - ], - "type": "string" - }, - "Mode": { - "enum": [ - "MULTI_CLASS", - "MULTI_LABEL" - ], - "type": "string" - }, - "ModelKmsKeyId": { - "$ref": "#/definitions/KmsKeyId" - }, - "ModelPolicy": { - "maxLength": 20000, - "minLength": 1, - "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+", - "type": "string" - }, - "OutputDataConfig": { - "$ref": "#/definitions/DocumentClassifierOutputDataConfig" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "VersionName": { - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", - "type": "string" - }, - "VolumeKmsKeyId": { - "$ref": "#/definitions/KmsKeyId" - }, - "VpcConfig": { - "$ref": "#/definitions/VpcConfig" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "DocumentClassifierName", - "DataAccessRoleArn", - "InputDataConfig", - "LanguageCode" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Comprehend::DocumentClassifier" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DataAccessRoleArn", + "/properties/InputDataConfig", + "/properties/OutputDataConfig", + "/properties/LanguageCode", + "/properties/ModelKmsKeyId", + "/properties/DocumentClassifierName", + "/properties/VersionName", + "/properties/Mode", + "/properties/VolumeKmsKeyId", + "/properties/VpcConfig" + ], + "definitions": { + "AugmentedManifestsListItem": { + "additionalProperties": false, + "properties": { + "AttributeNames": { + "insertionOrder": false, + "items": { + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*", + "type": "string" + }, + "maxItems": 63, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "S3Uri": { + "$ref": "#/definitions/S3Uri" + }, + "Split": { + "enum": [ + "TRAIN", + "TEST" + ], + "type": "string" + } + }, + "required": [ + "AttributeNames", + "S3Uri" + ], + "type": "object" + }, + "DocumentClassifierDocuments": { + "additionalProperties": false, + "properties": { + "S3Uri": { + "$ref": "#/definitions/S3Uri" + }, + "TestS3Uri": { + "$ref": "#/definitions/S3Uri" + } + }, + "required": [ + "S3Uri" + ], + "type": "object" + }, + "DocumentClassifierInputDataConfig": { + "additionalProperties": false, + "properties": { + "AugmentedManifests": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AugmentedManifestsListItem" + }, + "type": "array", + "uniqueItems": true + }, + "DataFormat": { + "enum": [ + "COMPREHEND_CSV", + "AUGMENTED_MANIFEST" + ], + "type": "string" + }, + "DocumentReaderConfig": { + "$ref": "#/definitions/DocumentReaderConfig" + }, + "DocumentType": { + "enum": [ + "PLAIN_TEXT_DOCUMENT", + "SEMI_STRUCTURED_DOCUMENT" + ], + "type": "string" + }, + "Documents": { + "$ref": "#/definitions/DocumentClassifierDocuments" + }, + "LabelDelimiter": { + "maxLength": 1, + "minLength": 1, + "pattern": "^[ ~!@#$%^*\\-_+=|\\\\:;\\t>?/]$", + "type": "string" + }, + "S3Uri": { + "$ref": "#/definitions/S3Uri" + }, + "TestS3Uri": { + "$ref": "#/definitions/S3Uri" + } + }, + "required": [], + "type": "object" + }, + "DocumentClassifierOutputDataConfig": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "$ref": "#/definitions/KmsKeyId" + }, + "S3Uri": { + "$ref": "#/definitions/S3Uri" + } + }, + "required": [], + "type": "object" + }, + "DocumentReaderConfig": { + "additionalProperties": false, + "properties": { + "DocumentReadAction": { + "enum": [ + "TEXTRACT_DETECT_DOCUMENT_TEXT", + "TEXTRACT_ANALYZE_DOCUMENT" + ], + "type": "string" + }, + "DocumentReadMode": { + "enum": [ + "SERVICE_DEFAULT", + "FORCE_DOCUMENT_READ_ACTION" + ], + "type": "string" + }, + "FeatureTypes": { + "insertionOrder": false, + "items": { + "enum": [ + "TABLES", + "FORMS" + ], + "type": "string" + }, + "maxItems": 2, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "DocumentReadAction" + ], + "type": "object" + }, + "KmsKeyId": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "S3Uri": { + "maxLength": 1024, + "pattern": "s3://[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9](/.*)?", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VpcConfig": { + "additionalProperties": false, + "properties": { + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "minLength": 1, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "minLength": 1, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "SecurityGroupIds", + "Subnets" + ], + "type": "object" + } + }, + "description": "Document Classifier enables training document classifier models.", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "comprehend:CreateDocumentClassifier", + "comprehend:DescribeDocumentClassifier", + "comprehend:DescribeResourcePolicy", + "comprehend:ListTagsForResource", + "textract:DetectDocumentText" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "comprehend:DescribeDocumentClassifier", + "comprehend:DeleteDocumentClassifier" + ], + "timeoutInMinutes": 120 + }, + "list": { + "permissions": [ + "comprehend:ListDocumentClassifiers" + ] + }, + "read": { + "permissions": [ + "comprehend:DescribeDocumentClassifier", + "comprehend:DescribeResourcePolicy", + "comprehend:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "comprehend:PutResourcePolicy", + "comprehend:DeleteResourcePolicy", + "comprehend:DescribeResourcePolicy", + "comprehend:DescribeDocumentClassifier", + "comprehend:ListTagsForResource", + "comprehend:TagResource", + "comprehend:UntagResource" + ], + "timeoutInMinutes": 10 + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws(-[^:]+)?:comprehend:[a-zA-Z0-9-]*:[0-9]{12}:document-classifier/[a-zA-Z0-9](-*[a-zA-Z0-9])*(/version/[a-zA-Z0-9](-*[a-zA-Z0-9])*)?", + "type": "string" + }, + "DataAccessRoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:aws(-[^:]+)?:iam::[0-9]{12}:role/.+", + "type": "string" + }, + "DocumentClassifierName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "type": "string" + }, + "InputDataConfig": { + "$ref": "#/definitions/DocumentClassifierInputDataConfig" + }, + "LanguageCode": { + "enum": [ + "en", + "es", + "fr", + "it", + "de", + "pt" + ], + "type": "string" + }, + "Mode": { + "enum": [ + "MULTI_CLASS", + "MULTI_LABEL" + ], + "type": "string" + }, + "ModelKmsKeyId": { + "$ref": "#/definitions/KmsKeyId" + }, + "ModelPolicy": { + "maxLength": 20000, + "minLength": 1, + "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+", + "type": "string" + }, + "OutputDataConfig": { + "$ref": "#/definitions/DocumentClassifierOutputDataConfig" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VersionName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "type": "string" + }, + "VolumeKmsKeyId": { + "$ref": "#/definitions/KmsKeyId" + }, + "VpcConfig": { + "$ref": "#/definitions/VpcConfig" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "DocumentClassifierName", + "DataAccessRoleArn", + "InputDataConfig", + "LanguageCode" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "comprehend:TagResource", + "comprehend:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Comprehend::DocumentClassifier" +} diff --git a/src/schema/aws-comprehend-flywheel.json b/src/schema/aws-comprehend-flywheel.json index 5287ef47..483da504 100644 --- a/src/schema/aws-comprehend-flywheel.json +++ b/src/schema/aws-comprehend-flywheel.json @@ -1,285 +1,289 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FlywheelName", - "/properties/ModelType", - "/properties/DataLakeS3Uri", - "/properties/TaskConfig" - ], - "definitions": { - "DataSecurityConfig": { - "additionalProperties": false, - "properties": { - "DataLakeKmsKeyId": { - "$ref": "#/definitions/KmsKeyId" - }, - "ModelKmsKeyId": { - "$ref": "#/definitions/KmsKeyId" - }, - "VolumeKmsKeyId": { - "$ref": "#/definitions/KmsKeyId" - }, - "VpcConfig": { - "$ref": "#/definitions/VpcConfig" - } - }, - "required": [], - "type": "object" - }, - "DocumentClassificationConfig": { - "additionalProperties": false, - "properties": { - "Labels": { - "insertionOrder": false, - "items": { - "maxLength": 5000, - "type": "string" - }, - "maxItems": 1000, - "type": "array", - "uniqueItems": true - }, - "Mode": { - "enum": [ - "MULTI_CLASS", - "MULTI_LABEL" - ], - "type": "string" - } - }, - "required": [ - "Mode" - ], - "type": "object" - }, - "EntityRecognitionConfig": { - "additionalProperties": false, - "properties": { - "EntityTypes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EntityTypesListItem" - }, - "maxItems": 25, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "EntityTypesListItem": { - "additionalProperties": false, - "properties": { - "Type": { - "maxLength": 64, - "minLength": 1, - "pattern": "^(?![^\\n\\r\\t,]*\\\\n|\\\\r|\\\\t)[^\\n\\r\\t,]+$", - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "KmsKeyId": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TaskConfig": { - "additionalProperties": false, - "properties": { - "DocumentClassificationConfig": { - "$ref": "#/definitions/DocumentClassificationConfig" - }, - "EntityRecognitionConfig": { - "$ref": "#/definitions/EntityRecognitionConfig" - }, - "LanguageCode": { - "enum": [ - "en", - "es", - "fr", - "it", - "de", - "pt" - ], - "type": "string" - } - }, - "required": [ - "LanguageCode" - ], - "type": "object" - }, - "VpcConfig": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "insertionOrder": false, - "items": { - "maxLength": 32, - "minLength": 1, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Subnets": { - "insertionOrder": false, - "items": { - "maxLength": 32, - "minLength": 1, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 16, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "SecurityGroupIds", - "Subnets" - ], - "type": "object" - } - }, - "description": "The AWS::Comprehend::Flywheel resource creates an Amazon Comprehend Flywheel that enables customer to train their model.", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "comprehend:CreateFlywheel", - "comprehend:DescribeFlywheel", - "comprehend:ListTagsForResource" - ], - "timeoutInMinutes": 240 - }, - "delete": { - "permissions": [ - "comprehend:DeleteFlywheel", - "comprehend:DescribeFlywheel" - ], - "timeoutInMinutes": 120 - }, - "list": { - "permissions": [ - "comprehend:ListFlywheels" - ] - }, - "read": { - "permissions": [ - "comprehend:DescribeFlywheel", - "comprehend:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "comprehend:DescribeFlywheel", - "comprehend:UpdateFlywheel", - "comprehend:ListTagsForResource", - "comprehend:TagResource", - "comprehend:UntagResource" - ], - "timeoutInMinutes": 10 - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "ActiveModelArn": { - "maxLength": 256, - "pattern": "arn:aws(-[^:]+)?:comprehend:[a-zA-Z0-9-]*:[0-9]{12}:(document-classifier|entity-recognizer)/[a-zA-Z0-9](-*[a-zA-Z0-9])*(/version/[a-zA-Z0-9](-*[a-zA-Z0-9])*)?", - "type": "string" - }, - "Arn": { - "maxLength": 256, - "minLength": 1, - "pattern": "arn:aws(-[^:]+)?:comprehend:[a-zA-Z0-9-]*:[0-9]{12}:flywheel/[a-zA-Z0-9](-*[a-zA-Z0-9])*", - "type": "string" - }, - "DataAccessRoleArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:aws(-[^:]+)?:iam::[0-9]{12}:role/.+", - "type": "string" - }, - "DataLakeS3Uri": { - "maxLength": 512, - "pattern": "s3://[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9](/.*)?", - "type": "string" - }, - "DataSecurityConfig": { - "$ref": "#/definitions/DataSecurityConfig" - }, - "FlywheelName": { - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", - "type": "string" - }, - "ModelType": { - "enum": [ - "DOCUMENT_CLASSIFIER", - "ENTITY_RECOGNIZER" - ], - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "TaskConfig": { - "$ref": "#/definitions/TaskConfig" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "FlywheelName", - "DataAccessRoleArn", - "DataLakeS3Uri" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Comprehend::Flywheel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FlywheelName", + "/properties/ModelType", + "/properties/DataLakeS3Uri", + "/properties/TaskConfig" + ], + "definitions": { + "DataSecurityConfig": { + "additionalProperties": false, + "properties": { + "DataLakeKmsKeyId": { + "$ref": "#/definitions/KmsKeyId" + }, + "ModelKmsKeyId": { + "$ref": "#/definitions/KmsKeyId" + }, + "VolumeKmsKeyId": { + "$ref": "#/definitions/KmsKeyId" + }, + "VpcConfig": { + "$ref": "#/definitions/VpcConfig" + } + }, + "required": [], + "type": "object" + }, + "DocumentClassificationConfig": { + "additionalProperties": false, + "properties": { + "Labels": { + "insertionOrder": false, + "items": { + "maxLength": 5000, + "type": "string" + }, + "maxItems": 1000, + "type": "array", + "uniqueItems": true + }, + "Mode": { + "enum": [ + "MULTI_CLASS", + "MULTI_LABEL" + ], + "type": "string" + } + }, + "required": [ + "Mode" + ], + "type": "object" + }, + "EntityRecognitionConfig": { + "additionalProperties": false, + "properties": { + "EntityTypes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EntityTypesListItem" + }, + "maxItems": 25, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "EntityTypesListItem": { + "additionalProperties": false, + "properties": { + "Type": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?![^\\n\\r\\t,]*\\\\n|\\\\r|\\\\t)[^\\n\\r\\t,]+$", + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "KmsKeyId": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TaskConfig": { + "additionalProperties": false, + "properties": { + "DocumentClassificationConfig": { + "$ref": "#/definitions/DocumentClassificationConfig" + }, + "EntityRecognitionConfig": { + "$ref": "#/definitions/EntityRecognitionConfig" + }, + "LanguageCode": { + "enum": [ + "en", + "es", + "fr", + "it", + "de", + "pt" + ], + "type": "string" + } + }, + "required": [ + "LanguageCode" + ], + "type": "object" + }, + "VpcConfig": { + "additionalProperties": false, + "properties": { + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "minLength": 1, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "minLength": 1, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "SecurityGroupIds", + "Subnets" + ], + "type": "object" + } + }, + "description": "The AWS::Comprehend::Flywheel resource creates an Amazon Comprehend Flywheel that enables customer to train their model.", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "comprehend:CreateFlywheel", + "comprehend:DescribeFlywheel", + "comprehend:ListTagsForResource" + ], + "timeoutInMinutes": 240 + }, + "delete": { + "permissions": [ + "comprehend:DeleteFlywheel", + "comprehend:DescribeFlywheel" + ], + "timeoutInMinutes": 120 + }, + "list": { + "permissions": [ + "comprehend:ListFlywheels" + ] + }, + "read": { + "permissions": [ + "comprehend:DescribeFlywheel", + "comprehend:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "comprehend:DescribeFlywheel", + "comprehend:UpdateFlywheel", + "comprehend:ListTagsForResource", + "comprehend:TagResource", + "comprehend:UntagResource" + ], + "timeoutInMinutes": 10 + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "ActiveModelArn": { + "maxLength": 256, + "pattern": "arn:aws(-[^:]+)?:comprehend:[a-zA-Z0-9-]*:[0-9]{12}:(document-classifier|entity-recognizer)/[a-zA-Z0-9](-*[a-zA-Z0-9])*(/version/[a-zA-Z0-9](-*[a-zA-Z0-9])*)?", + "type": "string" + }, + "Arn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws(-[^:]+)?:comprehend:[a-zA-Z0-9-]*:[0-9]{12}:flywheel/[a-zA-Z0-9](-*[a-zA-Z0-9])*", + "type": "string" + }, + "DataAccessRoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:aws(-[^:]+)?:iam::[0-9]{12}:role/.+", + "type": "string" + }, + "DataLakeS3Uri": { + "maxLength": 512, + "pattern": "s3://[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9](/.*)?", + "type": "string" + }, + "DataSecurityConfig": { + "$ref": "#/definitions/DataSecurityConfig" + }, + "FlywheelName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "type": "string" + }, + "ModelType": { + "enum": [ + "DOCUMENT_CLASSIFIER", + "ENTITY_RECOGNIZER" + ], + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TaskConfig": { + "$ref": "#/definitions/TaskConfig" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "FlywheelName", + "DataAccessRoleArn", + "DataLakeS3Uri" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "comprehend:TagResource", + "comprehend:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Comprehend::Flywheel" +} diff --git a/src/schema/aws-config-aggregationauthorization.json b/src/schema/aws-config-aggregationauthorization.json index cf959210..3f472113 100644 --- a/src/schema/aws-config-aggregationauthorization.json +++ b/src/schema/aws-config-aggregationauthorization.json @@ -1,119 +1,119 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AuthorizedAccountId", - "/properties/AuthorizedAwsRegion" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Config::AggregationAuthorization", - "handlers": { - "create": { - "permissions": [ - "config:DescribeAggregationAuthorizations", - "config:PutAggregationAuthorization", - "config:TagResource" - ] - }, - "delete": { - "permissions": [ - "config:DescribeAggregationAuthorizations", - "config:DeleteAggregationAuthorization", - "config:UntagResource" - ] - }, - "list": { - "permissions": [ - "config:DescribeAggregationAuthorizations" - ] - }, - "read": { - "permissions": [ - "config:DescribeAggregationAuthorizations", - "config:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "config:DescribeAggregationAuthorizations", - "config:TagResource", - "config:UntagResource", - "config:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AuthorizedAccountId", - "/properties/AuthorizedAwsRegion" - ], - "properties": { - "AggregationAuthorizationArn": { - "description": "The ARN of the AggregationAuthorization.", - "type": "string" - }, - "AuthorizedAccountId": { - "description": "The 12-digit account ID of the account authorized to aggregate data.", - "pattern": "^\\d{12}$", - "type": "string" - }, - "AuthorizedAwsRegion": { - "description": "The region authorized to collect aggregated data.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "The tags for the AggregationAuthorization.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/AggregationAuthorizationArn" - ], - "required": [ - "AuthorizedAccountId", - "AuthorizedAwsRegion" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "config:TagResource", - "config:UntagResource", - "config:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Config::AggregationAuthorization" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AuthorizedAccountId", + "/properties/AuthorizedAwsRegion" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Config::AggregationAuthorization", + "handlers": { + "create": { + "permissions": [ + "config:DescribeAggregationAuthorizations", + "config:PutAggregationAuthorization", + "config:TagResource" + ] + }, + "delete": { + "permissions": [ + "config:DescribeAggregationAuthorizations", + "config:DeleteAggregationAuthorization", + "config:UntagResource" + ] + }, + "list": { + "permissions": [ + "config:DescribeAggregationAuthorizations" + ] + }, + "read": { + "permissions": [ + "config:DescribeAggregationAuthorizations", + "config:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "config:DescribeAggregationAuthorizations", + "config:TagResource", + "config:UntagResource", + "config:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AuthorizedAccountId", + "/properties/AuthorizedAwsRegion" + ], + "properties": { + "AggregationAuthorizationArn": { + "description": "The ARN of the AggregationAuthorization.", + "type": "string" + }, + "AuthorizedAccountId": { + "description": "The 12-digit account ID of the account authorized to aggregate data.", + "pattern": "^\\d{12}$", + "type": "string" + }, + "AuthorizedAwsRegion": { + "description": "The region authorized to collect aggregated data.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "The tags for the AggregationAuthorization.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/AggregationAuthorizationArn" + ], + "required": [ + "AuthorizedAccountId", + "AuthorizedAwsRegion" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "config:TagResource", + "config:UntagResource", + "config:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Config::AggregationAuthorization" +} diff --git a/src/schema/aws-config-configrule.json b/src/schema/aws-config-configrule.json index 63254195..66c0d01b 100644 --- a/src/schema/aws-config-configrule.json +++ b/src/schema/aws-config-configrule.json @@ -1,230 +1,230 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConfigRuleName" - ], - "definitions": { - "CustomPolicyDetails": { - "additionalProperties": false, - "description": "Provides the CustomPolicyDetails, the rule owner (```` for managed rules, ``CUSTOM_POLICY`` for Custom Policy rules, and ``CUSTOM_LAMBDA`` for Custom Lambda rules), the rule identifier, and the events that cause the evaluation of your AWS resources.", - "properties": { - "EnableDebugLogDelivery": { - "description": "The boolean expression for enabling debug logging for your CC Custom Policy rule. The default value is ``false``.", - "type": "boolean" - }, - "PolicyRuntime": { - "description": "The runtime system for your CC Custom Policy rule. Guard is a policy-as-code language that allows you to write policies that are enforced by CC Custom Policy rules. For more information about Guard, see the [Guard GitHub Repository](https://docs.aws.amazon.com/https://github.com/aws-cloudformation/cloudformation-guard).", - "type": "string" - }, - "PolicyText": { - "description": "The policy definition containing the logic for your CC Custom Policy rule.", - "type": "string" - } - }, - "type": "object" - }, - "EvaluationModeConfiguration": { - "additionalProperties": false, - "description": "The configuration object for CC rule evaluation mode. The supported valid values are Detective or Proactive.", - "properties": { - "Mode": { - "description": "The mode of an evaluation. The valid values are Detective or Proactive.", - "type": "string" - } - }, - "type": "object" - }, - "Scope": { - "additionalProperties": false, - "description": "Defines which resources trigger an evaluation for an CC rule. The scope can include one or more resource types, a combination of a tag key and value, or a combination of one resource type and one resource ID. Specify a scope to constrain which resources trigger an evaluation for a rule. Otherwise, evaluations for the rule are triggered when any resource in your recording group changes in configuration.", - "properties": { - "ComplianceResourceId": { - "description": "The ID of the only AWS resource that you want to trigger an evaluation for the rule. If you specify a resource ID, you must specify one resource type for ``ComplianceResourceTypes``.", - "type": "string" - }, - "ComplianceResourceTypes": { - "description": "The resource types of only those AWS resources that you want to trigger an evaluation for the rule. You can only specify one type if you also specify a resource ID for ``ComplianceResourceId``.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "TagKey": { - "description": "The tag key that is applied to only those AWS resources that you want to trigger an evaluation for the rule.", - "type": "string" - }, - "TagValue": { - "description": "The tag value applied to only those AWS resources that you want to trigger an evaluation for the rule. If you specify a value for ``TagValue``, you must also specify a value for ``TagKey``.", - "type": "string" - } - }, - "type": "object" - }, - "Source": { - "additionalProperties": false, - "description": "Provides the CustomPolicyDetails, the rule owner (```` for managed rules, ``CUSTOM_POLICY`` for Custom Policy rules, and ``CUSTOM_LAMBDA`` for Custom Lambda rules), the rule identifier, and the events that cause the evaluation of your AWS resources.", - "properties": { - "CustomPolicyDetails": { - "$ref": "#/definitions/CustomPolicyDetails", - "description": "Provides the runtime system, policy definition, and whether debug logging is enabled. Required when owner is set to ``CUSTOM_POLICY``." - }, - "Owner": { - "description": "Indicates whether AWS or the customer owns and manages the CC rule.\n CC Managed Rules are predefined rules owned by AWS. For more information, see [Managed Rules](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html) in the *developer guide*.\n CC Custom Rules are rules that you can develop either with Guard (``CUSTOM_POLICY``) or LAMlong (``CUSTOM_LAMBDA``). For more information, see [Custom Rules](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_develop-rules.html) in the *developer guide*.", - "type": "string" - }, - "SourceDetails": { - "description": "Provides the source and the message types that cause CC to evaluate your AWS resources against a rule. It also provides the frequency with which you want CC to run evaluations for the rule if the trigger type is periodic.\n If the owner is set to ``CUSTOM_POLICY``, the only acceptable values for the CC rule trigger message type are ``ConfigurationItemChangeNotification`` and ``OversizedConfigurationItemChangeNotification``.", - "items": { - "$ref": "#/definitions/SourceDetail", - "description": "Source and message type that can trigger the rule" - }, - "type": "array", - "uniqueItems": true - }, - "SourceIdentifier": { - "description": "For CC Managed rules, a predefined identifier from a list. For example, ``IAM_PASSWORD_POLICY`` is a managed rule. To reference a managed rule, see [List of Managed Rules](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html).\n For CC Custom Lambda rules, the identifier is the Amazon Resource Name (ARN) of the rule's LAMlong function, such as ``arn:aws:lambda:us-east-2:123456789012:function:custom_rule_name``.\n For CC Custom Policy rules, this field will be ignored.", - "type": "string" - } - }, - "required": [ - "Owner" - ], - "type": "object" - }, - "SourceDetail": { - "additionalProperties": false, - "description": "Provides the source and the message types that trigger CC to evaluate your AWS resources against a rule. It also provides the frequency with which you want CC to run evaluations for the rule if the trigger type is periodic. You can specify the parameter values for ``SourceDetail`` only for custom rules.", - "properties": { - "EventSource": { - "description": "The source of the event, such as an AWS service, that triggers CC to evaluate your AWS resources.", - "type": "string" - }, - "MaximumExecutionFrequency": { - "description": "The frequency at which you want CC to run evaluations for a custom rule with a periodic trigger. If you specify a value for ``MaximumExecutionFrequency``, then ``MessageType`` must use the ``ScheduledNotification`` value.\n By default, rules with a periodic trigger are evaluated every 24 hours. To change the frequency, specify a valid value for the ``MaximumExecutionFrequency`` parameter.\n Based on the valid value you choose, CC runs evaluations once for each valid value. For example, if you choose ``Three_Hours``, CC runs evaluations once every three hours. In this case, ``Three_Hours`` is the frequency of this rule.", - "type": "string" - }, - "MessageType": { - "description": "The type of notification that triggers CC to run an evaluation for a rule. You can specify the following notification types:\n + ``ConfigurationItemChangeNotification`` - Triggers an evaluation when CC delivers a configuration item as a result of a resource change.\n + ``OversizedConfigurationItemChangeNotification`` - Triggers an evaluation when CC delivers an oversized configuration item. CC may generate this notification type when a resource changes and the notification exceeds the maximum size allowed by Amazon SNS.\n + ``ScheduledNotification`` - Triggers a periodic evaluation at the frequency specified for ``MaximumExecutionFrequency``.\n + ``ConfigurationSnapshotDeliveryCompleted`` - Triggers a periodic evaluation when CC delivers a configuration snapshot.\n \n If you want your custom rule to be triggered by configuration changes, specify two SourceDetail objects, one for ``ConfigurationItemChangeNotification`` and one for ``OversizedConfigurationItemChangeNotification``.", - "type": "string" - } - }, - "required": [ - "EventSource", - "MessageType" - ], - "type": "object" - } - }, - "description": "You must first create and start the CC configuration recorder in order to create CC managed rules with CFNlong. For more information, see [Managing the Configuration Recorder](https://docs.aws.amazon.com/config/latest/developerguide/stop-start-recorder.html).\n Adds or updates an CC rule to evaluate if your AWS resources comply with your desired configurations. For information on how many CC rules you can have per account, see [Service Limits](https://docs.aws.amazon.com/config/latest/developerguide/configlimits.html) in the *Developer Guide*.\n There are two types of rules: *Managed Rules* and *Custom Rules*. You can use the ``ConfigRule`` resource to create both CC Managed Rules and CC Custom Rules.\n CC Managed Rules are predefined, customizable rules created by CC. For a list of managed rules, see [List of Managed Rules](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html). If you are adding an CC managed rule, you must specify the rule's identifier for the ``SourceIdentifier`` key.\n CC Custom Rules are rules that you create from scratch. There are two ways to create CC custom rules: with Lambda functions ([Developer Guide](https://docs.aws.amazon.com/config/latest/developerguide/gettingstarted-concepts.html#gettingstarted-concepts-function)) and with CFNGUARDshort ([Guard GitHub Repository](https://docs.aws.amazon.com/https://github.com/aws-cloudformation/cloudformation-guard)), a policy-as-code language. CC custom rules created with LAMlong are called *Custom Lambda Rules* and CC custom rules created with CFNGUARDshort are called *Custom Policy Rules*.\n If you are adding a new CC Custom LAM rule, you first need to create an LAMlong function that the rule invokes to evaluate your resources. When you use the ``ConfigRule`` resource to add a Custom LAM rule to CC, you must specify the Amazon Resource Name (ARN) that LAMlong assigns to the function. You specify the ARN in the ``SourceIdentifier`` key. This key is part of the ``Source`` object, which is part of the ``ConfigRule`` object. \n For any new CC rule that you add, specify the ``ConfigRuleName`` in the ``ConfigRule`` object. Do not specify the ``ConfigRuleArn`` or the ``ConfigRuleId``. These values are generated by CC for new rules.\n If you are updating a rule that you added previously, you can specify the rule by ``ConfigRuleName``, ``ConfigRuleId``, or ``ConfigRuleArn`` in the ``ConfigRule`` data type that you use in this request.\n For more information about developing and using CC rules, see [Evaluating Resources with Rules](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) in the *Developer Guide*.", - "handlers": { - "create": { - "permissions": [ - "config:PutConfigRule", - "config:DescribeConfigRules" - ] - }, - "delete": { - "permissions": [ - "config:DeleteConfigRule", - "config:DescribeConfigRules" - ] - }, - "list": { - "permissions": [ - "config:DescribeConfigRules" - ] - }, - "read": { - "permissions": [ - "config:DescribeConfigRules", - "config:DescribeComplianceByConfigRule" - ] - }, - "update": { - "permissions": [ - "config:PutConfigRule", - "config:DescribeConfigRules" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConfigRuleName" - ], - "properties": { - "Arn": { - "description": "", - "type": "string" - }, - "Compliance": { - "additionalProperties": false, - "description": "Indicates whether an AWS resource or CC rule is compliant and provides the number of contributors that affect the compliance.", - "properties": { - "Type": { - "description": "Compliance type determined by the Config rule", - "type": "string" - } - }, - "type": "object" - }, - "ConfigRuleId": { - "description": "", - "type": "string" - }, - "ConfigRuleName": { - "description": "A name for the CC rule. If you don't specify a name, CFN generates a unique physical ID and uses that ID for the rule name. For more information, see [Name Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).", - "type": "string" - }, - "Description": { - "description": "The description that you provide for the CC rule.", - "type": "string" - }, - "EvaluationModes": { - "description": "The modes the CC rule can be evaluated in. The valid values are distinct objects. By default, the value is Detective evaluation mode only.", - "items": { - "$ref": "#/definitions/EvaluationModeConfiguration", - "description": "Mode of evaluation of AWS Config rule" - }, - "type": "array", - "uniqueItems": false - }, - "InputParameters": { - "description": "A string, in JSON format, that is passed to the CC rule Lambda function.", - "type": [ - "string", - "object" - ] - }, - "MaximumExecutionFrequency": { - "description": "The maximum frequency with which CC runs evaluations for a rule. You can specify a value for ``MaximumExecutionFrequency`` when:\n + You are using an AWS managed rule that is triggered at a periodic frequency.\n + Your custom rule is triggered when CC delivers the configuration snapshot. For more information, see [ConfigSnapshotDeliveryProperties](https://docs.aws.amazon.com/config/latest/APIReference/API_ConfigSnapshotDeliveryProperties.html).\n \n By default, rules with a periodic trigger are evaluated every 24 hours. To change the frequency, specify a valid value for the ``MaximumExecutionFrequency`` parameter.", - "type": "string" - }, - "Scope": { - "$ref": "#/definitions/Scope", - "description": "Defines which resources can trigger an evaluation for the rule. The scope can include one or more resource types, a combination of one resource type and one resource ID, or a combination of a tag key and value. Specify a scope to constrain the resources that can trigger an evaluation for the rule. If you do not specify a scope, evaluations are triggered when any resource in the recording group changes.\n The scope can be empty." - }, - "Source": { - "$ref": "#/definitions/Source", - "description": "Provides the rule owner (```` for managed rules, ``CUSTOM_POLICY`` for Custom Policy rules, and ``CUSTOM_LAMBDA`` for Custom Lambda rules), the rule identifier, and the notifications that cause the function to evaluate your AWS resources." - } - }, - "propertyTransform": { - "/properties/Source": "Source.Owner=\"CUSTOM_LAMBDA\" ? ($count(Source.SourceDetails[MessageType=\"ConfigurationItemChangeNotification\"]) > 0 and $count(Source.SourceDetails[MessageType=\"OversizedConfigurationItemChangeNotification\"]) = 0) ? $ ~> | $.Source | {\"SourceDetails\" : [SourceDetails, {\"EventSource\": \"aws.config\", \"MessageType\": \"OversizedConfigurationItemChangeNotification\"}]} | : ($count(Source.SourceDetails[MessageType=\"ConfigurationItemChangeNotification\"]) = 0 and $count(Source.SourceDetails[MessageType=\"OversizedConfigurationItemChangeNotification\"]) > 0) ? $ ~> | $.Source | {\"SourceDetails\" : [SourceDetails, {\"EventSource\": \"aws.config\", \"MessageType\": \"ConfigurationItemChangeNotification\" }]} | : $ : $" - }, - "readOnlyProperties": [ - "/properties/ConfigRuleId", - "/properties/Compliance/Type", - "/properties/Arn" - ], - "required": [ - "Source" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Config::ConfigRule", - "writeOnlyProperties": [ - "/properties/Source/CustomPolicyDetails/PolicyText" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConfigRuleName" + ], + "definitions": { + "CustomPolicyDetails": { + "additionalProperties": false, + "description": "Provides the CustomPolicyDetails, the rule owner (```` for managed rules, ``CUSTOM_POLICY`` for Custom Policy rules, and ``CUSTOM_LAMBDA`` for Custom Lambda rules), the rule identifier, and the events that cause the evaluation of your AWS resources.", + "properties": { + "EnableDebugLogDelivery": { + "description": "The boolean expression for enabling debug logging for your CC Custom Policy rule. The default value is ``false``.", + "type": "boolean" + }, + "PolicyRuntime": { + "description": "The runtime system for your CC Custom Policy rule. Guard is a policy-as-code language that allows you to write policies that are enforced by CC Custom Policy rules. For more information about Guard, see the [Guard GitHub Repository](https://docs.aws.amazon.com/https://github.com/aws-cloudformation/cloudformation-guard).", + "type": "string" + }, + "PolicyText": { + "description": "The policy definition containing the logic for your CC Custom Policy rule.", + "type": "string" + } + }, + "type": "object" + }, + "EvaluationModeConfiguration": { + "additionalProperties": false, + "description": "The configuration object for CC rule evaluation mode. The supported valid values are Detective or Proactive.", + "properties": { + "Mode": { + "description": "The mode of an evaluation. The valid values are Detective or Proactive.", + "type": "string" + } + }, + "type": "object" + }, + "Scope": { + "additionalProperties": false, + "description": "Defines which resources trigger an evaluation for an CC rule. The scope can include one or more resource types, a combination of a tag key and value, or a combination of one resource type and one resource ID. Specify a scope to constrain which resources trigger an evaluation for a rule. Otherwise, evaluations for the rule are triggered when any resource in your recording group changes in configuration.", + "properties": { + "ComplianceResourceId": { + "description": "The ID of the only AWS resource that you want to trigger an evaluation for the rule. If you specify a resource ID, you must specify one resource type for ``ComplianceResourceTypes``.", + "type": "string" + }, + "ComplianceResourceTypes": { + "description": "The resource types of only those AWS resources that you want to trigger an evaluation for the rule. You can only specify one type if you also specify a resource ID for ``ComplianceResourceId``.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "TagKey": { + "description": "The tag key that is applied to only those AWS resources that you want to trigger an evaluation for the rule.", + "type": "string" + }, + "TagValue": { + "description": "The tag value applied to only those AWS resources that you want to trigger an evaluation for the rule. If you specify a value for ``TagValue``, you must also specify a value for ``TagKey``.", + "type": "string" + } + }, + "type": "object" + }, + "Source": { + "additionalProperties": false, + "description": "Provides the CustomPolicyDetails, the rule owner (```` for managed rules, ``CUSTOM_POLICY`` for Custom Policy rules, and ``CUSTOM_LAMBDA`` for Custom Lambda rules), the rule identifier, and the events that cause the evaluation of your AWS resources.", + "properties": { + "CustomPolicyDetails": { + "$ref": "#/definitions/CustomPolicyDetails", + "description": "Provides the runtime system, policy definition, and whether debug logging is enabled. Required when owner is set to ``CUSTOM_POLICY``." + }, + "Owner": { + "description": "Indicates whether AWS or the customer owns and manages the CC rule.\n CC Managed Rules are predefined rules owned by AWS. For more information, see [Managed Rules](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html) in the *developer guide*.\n CC Custom Rules are rules that you can develop either with Guard (``CUSTOM_POLICY``) or LAMlong (``CUSTOM_LAMBDA``). For more information, see [Custom Rules](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_develop-rules.html) in the *developer guide*.", + "type": "string" + }, + "SourceDetails": { + "description": "Provides the source and the message types that cause CC to evaluate your AWS resources against a rule. It also provides the frequency with which you want CC to run evaluations for the rule if the trigger type is periodic.\n If the owner is set to ``CUSTOM_POLICY``, the only acceptable values for the CC rule trigger message type are ``ConfigurationItemChangeNotification`` and ``OversizedConfigurationItemChangeNotification``.", + "items": { + "$ref": "#/definitions/SourceDetail", + "description": "Source and message type that can trigger the rule" + }, + "type": "array", + "uniqueItems": true + }, + "SourceIdentifier": { + "description": "For CC Managed rules, a predefined identifier from a list. For example, ``IAM_PASSWORD_POLICY`` is a managed rule. To reference a managed rule, see [List of Managed Rules](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html).\n For CC Custom Lambda rules, the identifier is the Amazon Resource Name (ARN) of the rule's LAMlong function, such as ``arn:aws:lambda:us-east-2:123456789012:function:custom_rule_name``.\n For CC Custom Policy rules, this field will be ignored.", + "type": "string" + } + }, + "required": [ + "Owner" + ], + "type": "object" + }, + "SourceDetail": { + "additionalProperties": false, + "description": "Provides the source and the message types that trigger CC to evaluate your AWS resources against a rule. It also provides the frequency with which you want CC to run evaluations for the rule if the trigger type is periodic. You can specify the parameter values for ``SourceDetail`` only for custom rules.", + "properties": { + "EventSource": { + "description": "The source of the event, such as an AWS service, that triggers CC to evaluate your AWS resources.", + "type": "string" + }, + "MaximumExecutionFrequency": { + "description": "The frequency at which you want CC to run evaluations for a custom rule with a periodic trigger. If you specify a value for ``MaximumExecutionFrequency``, then ``MessageType`` must use the ``ScheduledNotification`` value.\n By default, rules with a periodic trigger are evaluated every 24 hours. To change the frequency, specify a valid value for the ``MaximumExecutionFrequency`` parameter.\n Based on the valid value you choose, CC runs evaluations once for each valid value. For example, if you choose ``Three_Hours``, CC runs evaluations once every three hours. In this case, ``Three_Hours`` is the frequency of this rule.", + "type": "string" + }, + "MessageType": { + "description": "The type of notification that triggers CC to run an evaluation for a rule. You can specify the following notification types:\n + ``ConfigurationItemChangeNotification`` - Triggers an evaluation when CC delivers a configuration item as a result of a resource change.\n + ``OversizedConfigurationItemChangeNotification`` - Triggers an evaluation when CC delivers an oversized configuration item. CC may generate this notification type when a resource changes and the notification exceeds the maximum size allowed by Amazon SNS.\n + ``ScheduledNotification`` - Triggers a periodic evaluation at the frequency specified for ``MaximumExecutionFrequency``.\n + ``ConfigurationSnapshotDeliveryCompleted`` - Triggers a periodic evaluation when CC delivers a configuration snapshot.\n \n If you want your custom rule to be triggered by configuration changes, specify two SourceDetail objects, one for ``ConfigurationItemChangeNotification`` and one for ``OversizedConfigurationItemChangeNotification``.", + "type": "string" + } + }, + "required": [ + "EventSource", + "MessageType" + ], + "type": "object" + } + }, + "description": "You must first create and start the CC configuration recorder in order to create CC managed rules with CFNlong. For more information, see [Managing the Configuration Recorder](https://docs.aws.amazon.com/config/latest/developerguide/stop-start-recorder.html).\n Adds or updates an CC rule to evaluate if your AWS resources comply with your desired configurations. For information on how many CC rules you can have per account, see [Service Limits](https://docs.aws.amazon.com/config/latest/developerguide/configlimits.html) in the *Developer Guide*.\n There are two types of rules: *Managed Rules* and *Custom Rules*. You can use the ``ConfigRule`` resource to create both CC Managed Rules and CC Custom Rules.\n CC Managed Rules are predefined, customizable rules created by CC. For a list of managed rules, see [List of Managed Rules](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html). If you are adding an CC managed rule, you must specify the rule's identifier for the ``SourceIdentifier`` key.\n CC Custom Rules are rules that you create from scratch. There are two ways to create CC custom rules: with Lambda functions ([Developer Guide](https://docs.aws.amazon.com/config/latest/developerguide/gettingstarted-concepts.html#gettingstarted-concepts-function)) and with CFNGUARDshort ([Guard GitHub Repository](https://docs.aws.amazon.com/https://github.com/aws-cloudformation/cloudformation-guard)), a policy-as-code language. CC custom rules created with LAMlong are called *Custom Lambda Rules* and CC custom rules created with CFNGUARDshort are called *Custom Policy Rules*.\n If you are adding a new CC Custom LAM rule, you first need to create an LAMlong function that the rule invokes to evaluate your resources. When you use the ``ConfigRule`` resource to add a Custom LAM rule to CC, you must specify the Amazon Resource Name (ARN) that LAMlong assigns to the function. You specify the ARN in the ``SourceIdentifier`` key. This key is part of the ``Source`` object, which is part of the ``ConfigRule`` object. \n For any new CC rule that you add, specify the ``ConfigRuleName`` in the ``ConfigRule`` object. Do not specify the ``ConfigRuleArn`` or the ``ConfigRuleId``. These values are generated by CC for new rules.\n If you are updating a rule that you added previously, you can specify the rule by ``ConfigRuleName``, ``ConfigRuleId``, or ``ConfigRuleArn`` in the ``ConfigRule`` data type that you use in this request.\n For more information about developing and using CC rules, see [Evaluating Resources with Rules](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) in the *Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "config:PutConfigRule", + "config:DescribeConfigRules" + ] + }, + "delete": { + "permissions": [ + "config:DeleteConfigRule", + "config:DescribeConfigRules" + ] + }, + "list": { + "permissions": [ + "config:DescribeConfigRules" + ] + }, + "read": { + "permissions": [ + "config:DescribeConfigRules", + "config:DescribeComplianceByConfigRule" + ] + }, + "update": { + "permissions": [ + "config:PutConfigRule", + "config:DescribeConfigRules" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConfigRuleName" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "Compliance": { + "additionalProperties": false, + "description": "Indicates whether an AWS resource or CC rule is compliant and provides the number of contributors that affect the compliance.", + "properties": { + "Type": { + "description": "Compliance type determined by the Config rule", + "type": "string" + } + }, + "type": "object" + }, + "ConfigRuleId": { + "description": "", + "type": "string" + }, + "ConfigRuleName": { + "description": "A name for the CC rule. If you don't specify a name, CFN generates a unique physical ID and uses that ID for the rule name. For more information, see [Name Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).", + "type": "string" + }, + "Description": { + "description": "The description that you provide for the CC rule.", + "type": "string" + }, + "EvaluationModes": { + "description": "The modes the CC rule can be evaluated in. The valid values are distinct objects. By default, the value is Detective evaluation mode only.", + "items": { + "$ref": "#/definitions/EvaluationModeConfiguration", + "description": "Mode of evaluation of AWS Config rule" + }, + "type": "array", + "uniqueItems": false + }, + "InputParameters": { + "description": "A string, in JSON format, that is passed to the CC rule Lambda function.", + "type": [ + "string", + "object" + ] + }, + "MaximumExecutionFrequency": { + "description": "The maximum frequency with which CC runs evaluations for a rule. You can specify a value for ``MaximumExecutionFrequency`` when:\n + You are using an AWS managed rule that is triggered at a periodic frequency.\n + Your custom rule is triggered when CC delivers the configuration snapshot. For more information, see [ConfigSnapshotDeliveryProperties](https://docs.aws.amazon.com/config/latest/APIReference/API_ConfigSnapshotDeliveryProperties.html).\n \n By default, rules with a periodic trigger are evaluated every 24 hours. To change the frequency, specify a valid value for the ``MaximumExecutionFrequency`` parameter.", + "type": "string" + }, + "Scope": { + "$ref": "#/definitions/Scope", + "description": "Defines which resources can trigger an evaluation for the rule. The scope can include one or more resource types, a combination of one resource type and one resource ID, or a combination of a tag key and value. Specify a scope to constrain the resources that can trigger an evaluation for the rule. If you do not specify a scope, evaluations are triggered when any resource in the recording group changes.\n The scope can be empty." + }, + "Source": { + "$ref": "#/definitions/Source", + "description": "Provides the rule owner (```` for managed rules, ``CUSTOM_POLICY`` for Custom Policy rules, and ``CUSTOM_LAMBDA`` for Custom Lambda rules), the rule identifier, and the notifications that cause the function to evaluate your AWS resources." + } + }, + "propertyTransform": { + "/properties/Source": "Source.Owner=\"CUSTOM_LAMBDA\" ? ($count(Source.SourceDetails[MessageType=\"ConfigurationItemChangeNotification\"]) > 0 and $count(Source.SourceDetails[MessageType=\"OversizedConfigurationItemChangeNotification\"]) = 0) ? $ ~> | $.Source | {\"SourceDetails\" : [SourceDetails, {\"EventSource\": \"aws.config\", \"MessageType\": \"OversizedConfigurationItemChangeNotification\"}]} | : ($count(Source.SourceDetails[MessageType=\"ConfigurationItemChangeNotification\"]) = 0 and $count(Source.SourceDetails[MessageType=\"OversizedConfigurationItemChangeNotification\"]) > 0) ? $ ~> | $.Source | {\"SourceDetails\" : [SourceDetails, {\"EventSource\": \"aws.config\", \"MessageType\": \"ConfigurationItemChangeNotification\" }]} | : $ : $" + }, + "readOnlyProperties": [ + "/properties/ConfigRuleId", + "/properties/Compliance/Type", + "/properties/Arn" + ], + "required": [ + "Source" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Config::ConfigRule", + "writeOnlyProperties": [ + "/properties/Source/CustomPolicyDetails/PolicyText" + ] +} diff --git a/src/schema/aws-config-configurationaggregator.json b/src/schema/aws-config-configurationaggregator.json index 2ebeeec3..f7318345 100644 --- a/src/schema/aws-config-configurationaggregator.json +++ b/src/schema/aws-config-configurationaggregator.json @@ -1,173 +1,173 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConfigurationAggregatorName" - ], - "definitions": { - "AccountAggregationSource": { - "additionalProperties": false, - "properties": { - "AccountIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AllAwsRegions": { - "type": "boolean" - }, - "AwsRegions": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "AccountIds" - ], - "type": "object" - }, - "OrganizationAggregationSource": { - "additionalProperties": false, - "properties": { - "AllAwsRegions": { - "type": "boolean" - }, - "AwsRegions": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "RoleArn": { - "type": "string" - } - }, - "required": [ - "RoleArn" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Config::ConfigurationAggregator", - "handlers": { - "create": { - "permissions": [ - "config:PutConfigurationAggregator", - "config:DescribeConfigurationAggregators", - "config:TagResource", - "iam:PassRole", - "organizations:EnableAWSServiceAccess", - "organizations:ListDelegatedAdministrators" - ] - }, - "delete": { - "permissions": [ - "config:DeleteConfigurationAggregator", - "config:UntagResource" - ] - }, - "list": { - "permissions": [ - "config:DescribeConfigurationAggregators" - ] - }, - "read": { - "permissions": [ - "config:DescribeConfigurationAggregators", - "config:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "config:PutConfigurationAggregator", - "config:DescribeConfigurationAggregators", - "config:TagResource", - "config:UntagResource", - "config:ListTagsForResource", - "iam:PassRole", - "organizations:EnableAWSServiceAccess", - "organizations:ListDelegatedAdministrators" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConfigurationAggregatorName" - ], - "properties": { - "AccountAggregationSources": { - "items": { - "$ref": "#/definitions/AccountAggregationSource" - }, - "type": "array", - "uniqueItems": false - }, - "ConfigurationAggregatorArn": { - "description": "The Amazon Resource Name (ARN) of the aggregator.", - "type": "string" - }, - "ConfigurationAggregatorName": { - "description": "The name of the aggregator.", - "maxLength": 256, - "minLength": 1, - "pattern": "[\\w\\-]+", - "type": "string" - }, - "OrganizationAggregationSource": { - "$ref": "#/definitions/OrganizationAggregationSource" - }, - "Tags": { - "description": "The tags for the configuration aggregator.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/ConfigurationAggregatorArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "config:TagResource", - "config:UntagResource", - "config:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Config::ConfigurationAggregator" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConfigurationAggregatorName" + ], + "definitions": { + "AccountAggregationSource": { + "additionalProperties": false, + "properties": { + "AccountIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AllAwsRegions": { + "type": "boolean" + }, + "AwsRegions": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "AccountIds" + ], + "type": "object" + }, + "OrganizationAggregationSource": { + "additionalProperties": false, + "properties": { + "AllAwsRegions": { + "type": "boolean" + }, + "AwsRegions": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "RoleArn": { + "type": "string" + } + }, + "required": [ + "RoleArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Config::ConfigurationAggregator", + "handlers": { + "create": { + "permissions": [ + "config:PutConfigurationAggregator", + "config:DescribeConfigurationAggregators", + "config:TagResource", + "iam:PassRole", + "organizations:EnableAWSServiceAccess", + "organizations:ListDelegatedAdministrators" + ] + }, + "delete": { + "permissions": [ + "config:DeleteConfigurationAggregator", + "config:UntagResource" + ] + }, + "list": { + "permissions": [ + "config:DescribeConfigurationAggregators" + ] + }, + "read": { + "permissions": [ + "config:DescribeConfigurationAggregators", + "config:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "config:PutConfigurationAggregator", + "config:DescribeConfigurationAggregators", + "config:TagResource", + "config:UntagResource", + "config:ListTagsForResource", + "iam:PassRole", + "organizations:EnableAWSServiceAccess", + "organizations:ListDelegatedAdministrators" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConfigurationAggregatorName" + ], + "properties": { + "AccountAggregationSources": { + "items": { + "$ref": "#/definitions/AccountAggregationSource" + }, + "type": "array", + "uniqueItems": false + }, + "ConfigurationAggregatorArn": { + "description": "The Amazon Resource Name (ARN) of the aggregator.", + "type": "string" + }, + "ConfigurationAggregatorName": { + "description": "The name of the aggregator.", + "maxLength": 256, + "minLength": 1, + "pattern": "[\\w\\-]+", + "type": "string" + }, + "OrganizationAggregationSource": { + "$ref": "#/definitions/OrganizationAggregationSource" + }, + "Tags": { + "description": "The tags for the configuration aggregator.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/ConfigurationAggregatorArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "config:TagResource", + "config:UntagResource", + "config:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Config::ConfigurationAggregator" +} diff --git a/src/schema/aws-config-configurationrecorder.json b/src/schema/aws-config-configurationrecorder.json index b438f447..b4cc40df 100644 --- a/src/schema/aws-config-configurationrecorder.json +++ b/src/schema/aws-config-configurationrecorder.json @@ -1,131 +1,131 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "ExclusionByResourceTypes": { - "additionalProperties": false, - "properties": { - "ResourceTypes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "ResourceTypes" - ], - "type": "object" - }, - "RecordingGroup": { - "additionalProperties": false, - "properties": { - "AllSupported": { - "type": "boolean" - }, - "ExclusionByResourceTypes": { - "$ref": "#/definitions/ExclusionByResourceTypes" - }, - "IncludeGlobalResourceTypes": { - "type": "boolean" - }, - "RecordingStrategy": { - "$ref": "#/definitions/RecordingStrategy" - }, - "ResourceTypes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "RecordingMode": { - "additionalProperties": false, - "properties": { - "RecordingFrequency": { - "type": "string" - }, - "RecordingModeOverrides": { - "items": { - "$ref": "#/definitions/RecordingModeOverride" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "RecordingFrequency" - ], - "type": "object" - }, - "RecordingModeOverride": { - "additionalProperties": false, - "properties": { - "Description": { - "type": "string" - }, - "RecordingFrequency": { - "type": "string" - }, - "ResourceTypes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "ResourceTypes", - "RecordingFrequency" - ], - "type": "object" - }, - "RecordingStrategy": { - "additionalProperties": false, - "properties": { - "UseOnly": { - "type": "string" - } - }, - "required": [ - "UseOnly" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Config::ConfigurationRecorder", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "RecordingGroup": { - "$ref": "#/definitions/RecordingGroup" - }, - "RecordingMode": { - "$ref": "#/definitions/RecordingMode" - }, - "RoleARN": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "RoleARN" - ], - "typeName": "AWS::Config::ConfigurationRecorder" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "ExclusionByResourceTypes": { + "additionalProperties": false, + "properties": { + "ResourceTypes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "ResourceTypes" + ], + "type": "object" + }, + "RecordingGroup": { + "additionalProperties": false, + "properties": { + "AllSupported": { + "type": "boolean" + }, + "ExclusionByResourceTypes": { + "$ref": "#/definitions/ExclusionByResourceTypes" + }, + "IncludeGlobalResourceTypes": { + "type": "boolean" + }, + "RecordingStrategy": { + "$ref": "#/definitions/RecordingStrategy" + }, + "ResourceTypes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "RecordingMode": { + "additionalProperties": false, + "properties": { + "RecordingFrequency": { + "type": "string" + }, + "RecordingModeOverrides": { + "items": { + "$ref": "#/definitions/RecordingModeOverride" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "RecordingFrequency" + ], + "type": "object" + }, + "RecordingModeOverride": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "RecordingFrequency": { + "type": "string" + }, + "ResourceTypes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "ResourceTypes", + "RecordingFrequency" + ], + "type": "object" + }, + "RecordingStrategy": { + "additionalProperties": false, + "properties": { + "UseOnly": { + "type": "string" + } + }, + "required": [ + "UseOnly" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Config::ConfigurationRecorder", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "RecordingGroup": { + "$ref": "#/definitions/RecordingGroup" + }, + "RecordingMode": { + "$ref": "#/definitions/RecordingMode" + }, + "RoleARN": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "RoleARN" + ], + "typeName": "AWS::Config::ConfigurationRecorder" +} diff --git a/src/schema/aws-config-conformancepack.json b/src/schema/aws-config-conformancepack.json index 819318e3..6c90cf5f 100644 --- a/src/schema/aws-config-conformancepack.json +++ b/src/schema/aws-config-conformancepack.json @@ -1,158 +1,158 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConformancePackName" - ], - "definitions": { - "ConformancePackInputParameter": { - "additionalProperties": false, - "description": "Input parameters in the form of key-value pairs for the conformance pack.", - "properties": { - "ParameterName": { - "$ref": "#/definitions/ParameterName" - }, - "ParameterValue": { - "$ref": "#/definitions/ParameterValue" - } - }, - "required": [ - "ParameterName", - "ParameterValue" - ], - "type": "object" - }, - "ParameterName": { - "description": "Key part of key-value pair with value being parameter value", - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "ParameterValue": { - "description": "Value part of key-value pair with key being parameter Name", - "maxLength": 4096, - "minLength": 0, - "type": "string" - } - }, - "description": "A conformance pack is a collection of AWS Config rules and remediation actions that can be easily deployed as a single entity in an account and a region or across an entire AWS Organization.", - "documentationUrl": "https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html", - "handlers": { - "create": { - "permissions": [ - "config:PutConformancePack", - "config:DescribeConformancePackStatus", - "config:DescribeConformancePacks", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "config:DeleteConformancePack", - "config:DescribeConformancePackStatus" - ] - }, - "list": { - "permissions": [ - "config:DescribeConformancePacks" - ] - }, - "read": { - "permissions": [ - "config:DescribeConformancePacks" - ] - }, - "update": { - "permissions": [ - "config:PutConformancePack", - "config:DescribeConformancePackStatus", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConformancePackName" - ], - "properties": { - "ConformancePackInputParameters": { - "description": "A list of ConformancePackInputParameter objects.", - "items": { - "$ref": "#/definitions/ConformancePackInputParameter" - }, - "maxItems": 60, - "minItems": 0, - "type": "array" - }, - "ConformancePackName": { - "description": "Name of the conformance pack which will be assigned as the unique identifier.", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z][-a-zA-Z0-9]*", - "type": "string" - }, - "DeliveryS3Bucket": { - "description": "AWS Config stores intermediate files while processing conformance pack template.", - "maxLength": 63, - "minLength": 0, - "type": "string" - }, - "DeliveryS3KeyPrefix": { - "description": "The prefix for delivery S3 bucket.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "TemplateBody": { - "description": "A string containing full conformance pack template body. You can only specify one of the template body or template S3Uri fields.", - "maxLength": 51200, - "minLength": 1, - "type": "string" - }, - "TemplateS3Uri": { - "description": "Location of file containing the template body which points to the conformance pack template that is located in an Amazon S3 bucket. You can only specify one of the template body or template S3Uri fields.", - "maxLength": 1024, - "minLength": 1, - "pattern": "s3://.*", - "type": "string" - }, - "TemplateSSMDocumentDetails": { - "additionalProperties": false, - "description": "The TemplateSSMDocumentDetails object contains the name of the SSM document and the version of the SSM document.", - "properties": { - "DocumentName": { - "maxLength": 128, - "minLength": 3, - "type": "string" - }, - "DocumentVersion": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "ConformancePackName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Config::ConformancePack", - "writeOnlyProperties": [ - "/properties/TemplateBody", - "/properties/TemplateS3Uri", - "/properties/TemplateSSMDocumentDetails" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConformancePackName" + ], + "definitions": { + "ConformancePackInputParameter": { + "additionalProperties": false, + "description": "Input parameters in the form of key-value pairs for the conformance pack.", + "properties": { + "ParameterName": { + "$ref": "#/definitions/ParameterName" + }, + "ParameterValue": { + "$ref": "#/definitions/ParameterValue" + } + }, + "required": [ + "ParameterName", + "ParameterValue" + ], + "type": "object" + }, + "ParameterName": { + "description": "Key part of key-value pair with value being parameter value", + "maxLength": 255, + "minLength": 0, + "type": "string" + }, + "ParameterValue": { + "description": "Value part of key-value pair with key being parameter Name", + "maxLength": 4096, + "minLength": 0, + "type": "string" + } + }, + "description": "A conformance pack is a collection of AWS Config rules and remediation actions that can be easily deployed as a single entity in an account and a region or across an entire AWS Organization.", + "documentationUrl": "https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html", + "handlers": { + "create": { + "permissions": [ + "config:PutConformancePack", + "config:DescribeConformancePackStatus", + "config:DescribeConformancePacks", + "s3:GetObject", + "s3:GetBucketAcl", + "iam:CreateServiceLinkedRole", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "config:DeleteConformancePack", + "config:DescribeConformancePackStatus" + ] + }, + "list": { + "permissions": [ + "config:DescribeConformancePacks" + ] + }, + "read": { + "permissions": [ + "config:DescribeConformancePacks" + ] + }, + "update": { + "permissions": [ + "config:PutConformancePack", + "config:DescribeConformancePackStatus", + "s3:GetObject", + "s3:GetBucketAcl", + "iam:CreateServiceLinkedRole", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConformancePackName" + ], + "properties": { + "ConformancePackInputParameters": { + "description": "A list of ConformancePackInputParameter objects.", + "items": { + "$ref": "#/definitions/ConformancePackInputParameter" + }, + "maxItems": 60, + "minItems": 0, + "type": "array" + }, + "ConformancePackName": { + "description": "Name of the conformance pack which will be assigned as the unique identifier.", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z][-a-zA-Z0-9]*", + "type": "string" + }, + "DeliveryS3Bucket": { + "description": "AWS Config stores intermediate files while processing conformance pack template.", + "maxLength": 63, + "minLength": 0, + "type": "string" + }, + "DeliveryS3KeyPrefix": { + "description": "The prefix for delivery S3 bucket.", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "TemplateBody": { + "description": "A string containing full conformance pack template body. You can only specify one of the template body or template S3Uri fields.", + "maxLength": 51200, + "minLength": 1, + "type": "string" + }, + "TemplateS3Uri": { + "description": "Location of file containing the template body which points to the conformance pack template that is located in an Amazon S3 bucket. You can only specify one of the template body or template S3Uri fields.", + "maxLength": 1024, + "minLength": 1, + "pattern": "s3://.*", + "type": "string" + }, + "TemplateSSMDocumentDetails": { + "additionalProperties": false, + "description": "The TemplateSSMDocumentDetails object contains the name of the SSM document and the version of the SSM document.", + "properties": { + "DocumentName": { + "maxLength": 128, + "minLength": 3, + "type": "string" + }, + "DocumentVersion": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "required": [ + "ConformancePackName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Config::ConformancePack", + "writeOnlyProperties": [ + "/properties/TemplateBody", + "/properties/TemplateS3Uri", + "/properties/TemplateSSMDocumentDetails" + ] +} diff --git a/src/schema/aws-config-deliverychannel.json b/src/schema/aws-config-deliverychannel.json index 3d4eebc3..3ab8ec68 100644 --- a/src/schema/aws-config-deliverychannel.json +++ b/src/schema/aws-config-deliverychannel.json @@ -1,51 +1,51 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "ConfigSnapshotDeliveryProperties": { - "additionalProperties": false, - "properties": { - "DeliveryFrequency": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Config::DeliveryChannel", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ConfigSnapshotDeliveryProperties": { - "$ref": "#/definitions/ConfigSnapshotDeliveryProperties" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "S3BucketName": { - "type": "string" - }, - "S3KeyPrefix": { - "type": "string" - }, - "S3KmsKeyArn": { - "type": "string" - }, - "SnsTopicARN": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "S3BucketName" - ], - "typeName": "AWS::Config::DeliveryChannel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "ConfigSnapshotDeliveryProperties": { + "additionalProperties": false, + "properties": { + "DeliveryFrequency": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Config::DeliveryChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ConfigSnapshotDeliveryProperties": { + "$ref": "#/definitions/ConfigSnapshotDeliveryProperties" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "S3BucketName": { + "type": "string" + }, + "S3KeyPrefix": { + "type": "string" + }, + "S3KmsKeyArn": { + "type": "string" + }, + "SnsTopicARN": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "S3BucketName" + ], + "typeName": "AWS::Config::DeliveryChannel" +} diff --git a/src/schema/aws-config-organizationconfigrule.json b/src/schema/aws-config-organizationconfigrule.json index 5a2b9784..95fb063b 100644 --- a/src/schema/aws-config-organizationconfigrule.json +++ b/src/schema/aws-config-organizationconfigrule.json @@ -1,180 +1,180 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/OrganizationConfigRuleName" - ], - "definitions": { - "OrganizationCustomPolicyRuleMetadata": { - "additionalProperties": false, - "properties": { - "DebugLogDeliveryAccounts": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Description": { - "type": "string" - }, - "InputParameters": { - "type": "string" - }, - "MaximumExecutionFrequency": { - "type": "string" - }, - "OrganizationConfigRuleTriggerTypes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "PolicyText": { - "type": "string" - }, - "ResourceIdScope": { - "type": "string" - }, - "ResourceTypesScope": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Runtime": { - "type": "string" - }, - "TagKeyScope": { - "type": "string" - }, - "TagValueScope": { - "type": "string" - } - }, - "required": [ - "Runtime", - "PolicyText" - ], - "type": "object" - }, - "OrganizationCustomRuleMetadata": { - "additionalProperties": false, - "properties": { - "Description": { - "type": "string" - }, - "InputParameters": { - "type": "string" - }, - "LambdaFunctionArn": { - "type": "string" - }, - "MaximumExecutionFrequency": { - "type": "string" - }, - "OrganizationConfigRuleTriggerTypes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ResourceIdScope": { - "type": "string" - }, - "ResourceTypesScope": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "TagKeyScope": { - "type": "string" - }, - "TagValueScope": { - "type": "string" - } - }, - "required": [ - "LambdaFunctionArn", - "OrganizationConfigRuleTriggerTypes" - ], - "type": "object" - }, - "OrganizationManagedRuleMetadata": { - "additionalProperties": false, - "properties": { - "Description": { - "type": "string" - }, - "InputParameters": { - "type": "string" - }, - "MaximumExecutionFrequency": { - "type": "string" - }, - "ResourceIdScope": { - "type": "string" - }, - "ResourceTypesScope": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "RuleIdentifier": { - "type": "string" - }, - "TagKeyScope": { - "type": "string" - }, - "TagValueScope": { - "type": "string" - } - }, - "required": [ - "RuleIdentifier" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Config::OrganizationConfigRule", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ExcludedAccounts": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - }, - "OrganizationConfigRuleName": { - "type": "string" - }, - "OrganizationCustomPolicyRuleMetadata": { - "$ref": "#/definitions/OrganizationCustomPolicyRuleMetadata" - }, - "OrganizationCustomRuleMetadata": { - "$ref": "#/definitions/OrganizationCustomRuleMetadata" - }, - "OrganizationManagedRuleMetadata": { - "$ref": "#/definitions/OrganizationManagedRuleMetadata" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "OrganizationConfigRuleName" - ], - "typeName": "AWS::Config::OrganizationConfigRule" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/OrganizationConfigRuleName" + ], + "definitions": { + "OrganizationCustomPolicyRuleMetadata": { + "additionalProperties": false, + "properties": { + "DebugLogDeliveryAccounts": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Description": { + "type": "string" + }, + "InputParameters": { + "type": "string" + }, + "MaximumExecutionFrequency": { + "type": "string" + }, + "OrganizationConfigRuleTriggerTypes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "PolicyText": { + "type": "string" + }, + "ResourceIdScope": { + "type": "string" + }, + "ResourceTypesScope": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Runtime": { + "type": "string" + }, + "TagKeyScope": { + "type": "string" + }, + "TagValueScope": { + "type": "string" + } + }, + "required": [ + "Runtime", + "PolicyText" + ], + "type": "object" + }, + "OrganizationCustomRuleMetadata": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "InputParameters": { + "type": "string" + }, + "LambdaFunctionArn": { + "type": "string" + }, + "MaximumExecutionFrequency": { + "type": "string" + }, + "OrganizationConfigRuleTriggerTypes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ResourceIdScope": { + "type": "string" + }, + "ResourceTypesScope": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "TagKeyScope": { + "type": "string" + }, + "TagValueScope": { + "type": "string" + } + }, + "required": [ + "LambdaFunctionArn", + "OrganizationConfigRuleTriggerTypes" + ], + "type": "object" + }, + "OrganizationManagedRuleMetadata": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "InputParameters": { + "type": "string" + }, + "MaximumExecutionFrequency": { + "type": "string" + }, + "ResourceIdScope": { + "type": "string" + }, + "ResourceTypesScope": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "RuleIdentifier": { + "type": "string" + }, + "TagKeyScope": { + "type": "string" + }, + "TagValueScope": { + "type": "string" + } + }, + "required": [ + "RuleIdentifier" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Config::OrganizationConfigRule", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ExcludedAccounts": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "OrganizationConfigRuleName": { + "type": "string" + }, + "OrganizationCustomPolicyRuleMetadata": { + "$ref": "#/definitions/OrganizationCustomPolicyRuleMetadata" + }, + "OrganizationCustomRuleMetadata": { + "$ref": "#/definitions/OrganizationCustomRuleMetadata" + }, + "OrganizationManagedRuleMetadata": { + "$ref": "#/definitions/OrganizationManagedRuleMetadata" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "OrganizationConfigRuleName" + ], + "typeName": "AWS::Config::OrganizationConfigRule" +} diff --git a/src/schema/aws-config-organizationconformancepack.json b/src/schema/aws-config-organizationconformancepack.json index f055ddc7..d9ad932d 100644 --- a/src/schema/aws-config-organizationconformancepack.json +++ b/src/schema/aws-config-organizationconformancepack.json @@ -1,160 +1,160 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/OrganizationConformancePackName" - ], - "definitions": { - "AccountId": { - "type": "string" - }, - "ConformancePackInputParameter": { - "description": "Input parameters in the form of key-value pairs for the conformance pack.", - "properties": { - "ParameterName": { - "$ref": "#/definitions/ParameterName" - }, - "ParameterValue": { - "$ref": "#/definitions/ParameterValue" - } - }, - "required": [ - "ParameterName", - "ParameterValue" - ], - "type": "object" - }, - "ParameterName": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "ParameterValue": { - "maxLength": 4096, - "minLength": 0, - "type": "string" - } - }, - "description": "Resource schema for AWS::Config::OrganizationConformancePack.", - "documentationUrl": "https://docs.aws.amazon.com/config/latest/developerguide/conformance-pack-organization-apis.html", - "handlers": { - "create": { - "permissions": [ - "config:PutOrganizationConformancePack", - "config:DescribeOrganizationConformancePackStatuses", - "config:GetOrganizationConformancePackDetailedStatus", - "config:DescribeOrganizationConformancePacks", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "organizations:ListDelegatedAdministrators", - "organizations:EnableAWSServiceAccess" - ], - "timeoutInMinutes": 706 - }, - "delete": { - "permissions": [ - "config:DeleteOrganizationConformancePack", - "config:DescribeOrganizationConformancePackStatuses", - "config:GetOrganizationConformancePackDetailedStatus", - "organizations:ListDelegatedAdministrators" - ], - "timeoutInMinutes": 706 - }, - "list": { - "permissions": [ - "config:DescribeOrganizationConformancePacks" - ] - }, - "read": { - "permissions": [ - "config:DescribeOrganizationConformancePacks" - ] - }, - "update": { - "permissions": [ - "config:PutOrganizationConformancePack", - "config:DescribeOrganizationConformancePackStatuses", - "config:GetOrganizationConformancePackDetailedStatus", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "organizations:ListDelegatedAdministrators", - "organizations:EnableAWSServiceAccess" - ], - "timeoutInMinutes": 706 - } - }, - "primaryIdentifier": [ - "/properties/OrganizationConformancePackName" - ], - "properties": { - "ConformancePackInputParameters": { - "description": "A list of ConformancePackInputParameter objects.", - "items": { - "$ref": "#/definitions/ConformancePackInputParameter" - }, - "maxItems": 60, - "minItems": 0, - "type": "array" - }, - "DeliveryS3Bucket": { - "description": "AWS Config stores intermediate files while processing conformance pack template.", - "maxLength": 63, - "minLength": 0, - "type": "string" - }, - "DeliveryS3KeyPrefix": { - "description": "The prefix for the delivery S3 bucket.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "ExcludedAccounts": { - "description": "A list of AWS accounts to be excluded from an organization conformance pack while deploying a conformance pack.", - "items": { - "$ref": "#/definitions/AccountId" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "OrganizationConformancePackName": { - "description": "The name of the organization conformance pack.", - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z][-a-zA-Z0-9]*", - "type": "string" - }, - "TemplateBody": { - "description": "A string containing full conformance pack template body.", - "maxLength": 51200, - "minLength": 1, - "type": "string" - }, - "TemplateS3Uri": { - "description": "Location of file containing the template body.", - "maxLength": 1024, - "minLength": 1, - "pattern": "s3://.*", - "type": "string" - } - }, - "required": [ - "OrganizationConformancePackName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Config::OrganizationConformancePack", - "writeOnlyProperties": [ - "/properties/TemplateBody", - "/properties/TemplateS3Uri" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/OrganizationConformancePackName" + ], + "definitions": { + "AccountId": { + "type": "string" + }, + "ConformancePackInputParameter": { + "description": "Input parameters in the form of key-value pairs for the conformance pack.", + "properties": { + "ParameterName": { + "$ref": "#/definitions/ParameterName" + }, + "ParameterValue": { + "$ref": "#/definitions/ParameterValue" + } + }, + "required": [ + "ParameterName", + "ParameterValue" + ], + "type": "object" + }, + "ParameterName": { + "maxLength": 255, + "minLength": 0, + "type": "string" + }, + "ParameterValue": { + "maxLength": 4096, + "minLength": 0, + "type": "string" + } + }, + "description": "Resource schema for AWS::Config::OrganizationConformancePack.", + "documentationUrl": "https://docs.aws.amazon.com/config/latest/developerguide/conformance-pack-organization-apis.html", + "handlers": { + "create": { + "permissions": [ + "config:PutOrganizationConformancePack", + "config:DescribeOrganizationConformancePackStatuses", + "config:GetOrganizationConformancePackDetailedStatus", + "config:DescribeOrganizationConformancePacks", + "s3:GetObject", + "s3:GetBucketAcl", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "organizations:ListDelegatedAdministrators", + "organizations:EnableAWSServiceAccess" + ], + "timeoutInMinutes": 706 + }, + "delete": { + "permissions": [ + "config:DeleteOrganizationConformancePack", + "config:DescribeOrganizationConformancePackStatuses", + "config:GetOrganizationConformancePackDetailedStatus", + "organizations:ListDelegatedAdministrators" + ], + "timeoutInMinutes": 706 + }, + "list": { + "permissions": [ + "config:DescribeOrganizationConformancePacks" + ] + }, + "read": { + "permissions": [ + "config:DescribeOrganizationConformancePacks" + ] + }, + "update": { + "permissions": [ + "config:PutOrganizationConformancePack", + "config:DescribeOrganizationConformancePackStatuses", + "config:GetOrganizationConformancePackDetailedStatus", + "s3:GetObject", + "s3:GetBucketAcl", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "organizations:ListDelegatedAdministrators", + "organizations:EnableAWSServiceAccess" + ], + "timeoutInMinutes": 706 + } + }, + "primaryIdentifier": [ + "/properties/OrganizationConformancePackName" + ], + "properties": { + "ConformancePackInputParameters": { + "description": "A list of ConformancePackInputParameter objects.", + "items": { + "$ref": "#/definitions/ConformancePackInputParameter" + }, + "maxItems": 60, + "minItems": 0, + "type": "array" + }, + "DeliveryS3Bucket": { + "description": "AWS Config stores intermediate files while processing conformance pack template.", + "maxLength": 63, + "minLength": 0, + "type": "string" + }, + "DeliveryS3KeyPrefix": { + "description": "The prefix for the delivery S3 bucket.", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "ExcludedAccounts": { + "description": "A list of AWS accounts to be excluded from an organization conformance pack while deploying a conformance pack.", + "items": { + "$ref": "#/definitions/AccountId" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "OrganizationConformancePackName": { + "description": "The name of the organization conformance pack.", + "maxLength": 128, + "minLength": 1, + "pattern": "[a-zA-Z][-a-zA-Z0-9]*", + "type": "string" + }, + "TemplateBody": { + "description": "A string containing full conformance pack template body.", + "maxLength": 51200, + "minLength": 1, + "type": "string" + }, + "TemplateS3Uri": { + "description": "Location of file containing the template body.", + "maxLength": 1024, + "minLength": 1, + "pattern": "s3://.*", + "type": "string" + } + }, + "required": [ + "OrganizationConformancePackName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Config::OrganizationConformancePack", + "writeOnlyProperties": [ + "/properties/TemplateBody", + "/properties/TemplateS3Uri" + ] +} diff --git a/src/schema/aws-config-remediationconfiguration.json b/src/schema/aws-config-remediationconfiguration.json index 754f3fb4..f14a2fbe 100644 --- a/src/schema/aws-config-remediationconfiguration.json +++ b/src/schema/aws-config-remediationconfiguration.json @@ -1,77 +1,77 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConfigRuleName" - ], - "definitions": { - "ExecutionControls": { - "additionalProperties": false, - "properties": { - "SsmControls": { - "$ref": "#/definitions/SsmControls" - } - }, - "type": "object" - }, - "SsmControls": { - "additionalProperties": false, - "properties": { - "ConcurrentExecutionRatePercentage": { - "type": "integer" - }, - "ErrorPercentage": { - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Config::RemediationConfiguration", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Automatic": { - "type": "boolean" - }, - "ConfigRuleName": { - "type": "string" - }, - "ExecutionControls": { - "$ref": "#/definitions/ExecutionControls" - }, - "Id": { - "type": "string" - }, - "MaximumAutomaticAttempts": { - "type": "integer" - }, - "Parameters": { - "type": "object" - }, - "ResourceType": { - "type": "string" - }, - "RetryAttemptSeconds": { - "type": "integer" - }, - "TargetId": { - "type": "string" - }, - "TargetType": { - "type": "string" - }, - "TargetVersion": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "TargetType", - "ConfigRuleName", - "TargetId" - ], - "typeName": "AWS::Config::RemediationConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConfigRuleName" + ], + "definitions": { + "ExecutionControls": { + "additionalProperties": false, + "properties": { + "SsmControls": { + "$ref": "#/definitions/SsmControls" + } + }, + "type": "object" + }, + "SsmControls": { + "additionalProperties": false, + "properties": { + "ConcurrentExecutionRatePercentage": { + "type": "integer" + }, + "ErrorPercentage": { + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Config::RemediationConfiguration", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Automatic": { + "type": "boolean" + }, + "ConfigRuleName": { + "type": "string" + }, + "ExecutionControls": { + "$ref": "#/definitions/ExecutionControls" + }, + "Id": { + "type": "string" + }, + "MaximumAutomaticAttempts": { + "type": "integer" + }, + "Parameters": { + "type": "object" + }, + "ResourceType": { + "type": "string" + }, + "RetryAttemptSeconds": { + "type": "integer" + }, + "TargetId": { + "type": "string" + }, + "TargetType": { + "type": "string" + }, + "TargetVersion": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TargetType", + "ConfigRuleName", + "TargetId" + ], + "typeName": "AWS::Config::RemediationConfiguration" +} diff --git a/src/schema/aws-config-storedquery.json b/src/schema/aws-config-storedquery.json index e45bfcdc..2496d56c 100644 --- a/src/schema/aws-config-storedquery.json +++ b/src/schema/aws-config-storedquery.json @@ -1,127 +1,132 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/QueryName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Config::StoredQuery", - "handlers": { - "create": { - "permissions": [ - "config:PutStoredQuery", - "config:GetStoredQuery", - "config:TagResource" - ] - }, - "delete": { - "permissions": [ - "config:DeleteStoredQuery", - "config:UntagResource" - ] - }, - "list": { - "permissions": [ - "config:ListStoredQueries" - ] - }, - "read": { - "permissions": [ - "config:GetStoredQuery", - "config:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "config:PutStoredQuery", - "config:GetStoredQuery", - "config:TagResource", - "config:UntagResource", - "config:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/QueryName" - ], - "properties": { - "QueryArn": { - "maxLength": 500, - "minLength": 1, - "type": "string" - }, - "QueryDescription": { - "maxLength": 256, - "minLength": 0, - "pattern": "[\\s\\S]*", - "type": "string" - }, - "QueryExpression": { - "maxLength": 4096, - "minLength": 1, - "pattern": "[\\s\\S]*", - "type": "string" - }, - "QueryId": { - "maxLength": 36, - "minLength": 1, - "pattern": "^\\S+$", - "type": "string" - }, - "QueryName": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-_]+$", - "type": "string" - }, - "Tags": { - "description": "The tags for the stored query.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/QueryId", - "/properties/QueryArn" - ], - "required": [ - "QueryName", - "QueryExpression" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Config::StoredQuery" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/QueryName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Config::StoredQuery", + "handlers": { + "create": { + "permissions": [ + "config:PutStoredQuery", + "config:GetStoredQuery", + "config:TagResource" + ] + }, + "delete": { + "permissions": [ + "config:DeleteStoredQuery", + "config:UntagResource" + ] + }, + "list": { + "permissions": [ + "config:ListStoredQueries" + ] + }, + "read": { + "permissions": [ + "config:GetStoredQuery", + "config:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "config:PutStoredQuery", + "config:GetStoredQuery", + "config:TagResource", + "config:UntagResource", + "config:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/QueryName" + ], + "properties": { + "QueryArn": { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "QueryDescription": { + "maxLength": 256, + "minLength": 0, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "QueryExpression": { + "maxLength": 4096, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "QueryId": { + "maxLength": 36, + "minLength": 1, + "pattern": "^\\S+$", + "type": "string" + }, + "QueryName": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-_]+$", + "type": "string" + }, + "Tags": { + "description": "The tags for the stored query.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/QueryId", + "/properties/QueryArn" + ], + "required": [ + "QueryName", + "QueryExpression" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "config:TagResource", + "config:UntagResource", + "config:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Config::StoredQuery" +} diff --git a/src/schema/aws-connect-agentstatus.json b/src/schema/aws-connect-agentstatus.json index 4dc07971..29846c79 100644 --- a/src/schema/aws-connect-agentstatus.json +++ b/src/schema/aws-connect-agentstatus.json @@ -1,160 +1,160 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Connect::AgentStatus", - "handlers": { - "create": { - "permissions": [ - "connect:CreateAgentStatus", - "connect:TagResource", - "connect:ListAgentStatuses" - ] - }, - "delete": { - "permissions": [] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceArn": { - "$ref": "resource-schema.json#/properties/InstanceArn" - } - }, - "required": [ - "InstanceArn" - ] - }, - "permissions": [ - "connect:ListAgentStatuses" - ] - }, - "read": { - "permissions": [ - "connect:DescribeAgentStatus" - ] - }, - "update": { - "permissions": [ - "connect:UpdateAgentStatus", - "connect:UntagResource", - "connect:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AgentStatusArn" - ], - "properties": { - "AgentStatusArn": { - "description": "The Amazon Resource Name (ARN) of the agent status.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-state/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Description": { - "description": "The description of the status.", - "maxLength": 250, - "minLength": 1, - "type": "string" - }, - "DisplayOrder": { - "description": "The display order of the status.", - "maximum": 50, - "minimum": 1, - "type": "integer" - }, - "InstanceArn": { - "description": "The identifier of the Amazon Connect instance.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "LastModifiedRegion": { - "description": "Last modified region.", - "pattern": "[a-z]{2}(-[a-z]+){1,2}(-[0-9])?", - "type": "string" - }, - "LastModifiedTime": { - "description": "Last modified time.", - "type": "number" - }, - "Name": { - "description": "The name of the status.", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "ResetOrderNumber": { - "description": "A number indicating the reset order of the agent status.", - "type": "boolean" - }, - "State": { - "description": "The state of the status.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "Type": { - "description": "The type of agent status.", - "enum": [ - "ROUTABLE", - "CUSTOM", - "OFFLINE" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AgentStatusArn", - "/properties/LastModifiedRegion", - "/properties/LastModifiedTime" - ], - "required": [ - "InstanceArn", - "Name", - "State" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::AgentStatus" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Connect::AgentStatus", + "handlers": { + "create": { + "permissions": [ + "connect:CreateAgentStatus", + "connect:TagResource", + "connect:ListAgentStatuses" + ] + }, + "delete": { + "permissions": [] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "connect:ListAgentStatuses" + ] + }, + "read": { + "permissions": [ + "connect:DescribeAgentStatus" + ] + }, + "update": { + "permissions": [ + "connect:UpdateAgentStatus", + "connect:UntagResource", + "connect:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AgentStatusArn" + ], + "properties": { + "AgentStatusArn": { + "description": "The Amazon Resource Name (ARN) of the agent status.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-state/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Description": { + "description": "The description of the status.", + "maxLength": 250, + "minLength": 1, + "type": "string" + }, + "DisplayOrder": { + "description": "The display order of the status.", + "maximum": 50, + "minimum": 1, + "type": "integer" + }, + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "LastModifiedRegion": { + "description": "Last modified region.", + "pattern": "[a-z]{2}(-[a-z]+){1,2}(-[0-9])?", + "type": "string" + }, + "LastModifiedTime": { + "description": "Last modified time.", + "type": "number" + }, + "Name": { + "description": "The name of the status.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "ResetOrderNumber": { + "description": "A number indicating the reset order of the agent status.", + "type": "boolean" + }, + "State": { + "description": "The state of the status.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "The type of agent status.", + "enum": [ + "ROUTABLE", + "CUSTOM", + "OFFLINE" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AgentStatusArn", + "/properties/LastModifiedRegion", + "/properties/LastModifiedTime" + ], + "required": [ + "InstanceArn", + "Name", + "State" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::AgentStatus" +} diff --git a/src/schema/aws-connect-approvedorigin.json b/src/schema/aws-connect-approvedorigin.json index 5ea53789..36d52f70 100644 --- a/src/schema/aws-connect-approvedorigin.json +++ b/src/schema/aws-connect-approvedorigin.json @@ -1,73 +1,73 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceId", - "/properties/Origin" - ], - "definitions": { - "InstanceId": { - "description": "Amazon Connect instance identifier", - "maxLength": 100, - "minLength": 1, - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Origin": { - "description": "Domain name to be added to the allowlist of instance", - "maxLength": 267, - "type": "string" - } - }, - "description": "Resource Type definition for AWS::Connect::ApprovedOrigin", - "handlers": { - "create": { - "permissions": [ - "connect:AssociateApprovedOrigin", - "connect:ListApprovedOrigins" - ] - }, - "delete": { - "permissions": [ - "connect:DisassociateApprovedOrigin", - "connect:ListApprovedOrigins" - ] - }, - "list": { - "permissions": [ - "connect:ListApprovedOrigins" - ] - }, - "read": { - "permissions": [ - "connect:ListApprovedOrigins" - ] - }, - "update": { - "permissions": [] - } - }, - "primaryIdentifier": [ - "/properties/InstanceId", - "/properties/Origin" - ], - "properties": { - "InstanceId": { - "$ref": "#/definitions/InstanceId" - }, - "Origin": { - "$ref": "#/definitions/Origin" - } - }, - "required": [ - "Origin", - "InstanceId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Connect::ApprovedOrigin" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceId", + "/properties/Origin" + ], + "definitions": { + "InstanceId": { + "description": "Amazon Connect instance identifier", + "maxLength": 100, + "minLength": 1, + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Origin": { + "description": "Domain name to be added to the allowlist of instance", + "maxLength": 267, + "type": "string" + } + }, + "description": "Resource Type definition for AWS::Connect::ApprovedOrigin", + "handlers": { + "create": { + "permissions": [ + "connect:AssociateApprovedOrigin", + "connect:ListApprovedOrigins" + ] + }, + "delete": { + "permissions": [ + "connect:DisassociateApprovedOrigin", + "connect:ListApprovedOrigins" + ] + }, + "list": { + "permissions": [ + "connect:ListApprovedOrigins" + ] + }, + "read": { + "permissions": [ + "connect:ListApprovedOrigins" + ] + }, + "update": { + "permissions": [] + } + }, + "primaryIdentifier": [ + "/properties/InstanceId", + "/properties/Origin" + ], + "properties": { + "InstanceId": { + "$ref": "#/definitions/InstanceId" + }, + "Origin": { + "$ref": "#/definitions/Origin" + } + }, + "required": [ + "Origin", + "InstanceId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Connect::ApprovedOrigin" +} diff --git a/src/schema/aws-connect-contactflow.json b/src/schema/aws-connect-contactflow.json index 54564b91..82e0a127 100644 --- a/src/schema/aws-connect-contactflow.json +++ b/src/schema/aws-connect-contactflow.json @@ -1,167 +1,167 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Type" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. . You can specify a value that is maximum of 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Connect::ContactFlow", - "handlers": { - "create": { - "permissions": [ - "connect:CreateContactFlow", - "connect:TagResource" - ] - }, - "delete": { - "permissions": [ - "connect:DeleteContactFlow", - "connect:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceArn": { - "$ref": "resource-schema.json#/properties/InstanceArn" - } - }, - "required": [ - "InstanceArn" - ] - }, - "permissions": [ - "connect:ListContactFlows" - ] - }, - "read": { - "permissions": [ - "connect:DescribeContactFlow" - ] - }, - "update": { - "permissions": [ - "connect:UpdateContactFlowMetadata", - "connect:UpdateContactFlowContent", - "connect:TagResource", - "connect:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ContactFlowArn" - ], - "properties": { - "ContactFlowArn": { - "description": "The identifier of the contact flow (ARN).", - "maxLength": 500, - "minLength": 1, - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/contact-flow/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Content": { - "description": "The content of the contact flow in JSON format.", - "maxLength": 256000, - "minLength": 1, - "type": "string" - }, - "Description": { - "description": "The description of the contact flow.", - "maxLength": 500, - "type": "string" - }, - "InstanceArn": { - "description": "The identifier of the Amazon Connect instance (ARN).", - "maxLength": 256, - "minLength": 1, - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Name": { - "description": "The name of the contact flow.", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "State": { - "description": "The state of the contact flow.", - "enum": [ - "ACTIVE", - "ARCHIVED" - ], - "type": "string" - }, - "Tags": { - "description": "One or more tags.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "Type": { - "description": "The type of the contact flow.", - "enum": [ - "CONTACT_FLOW", - "CUSTOMER_QUEUE", - "CUSTOMER_HOLD", - "CUSTOMER_WHISPER", - "AGENT_HOLD", - "AGENT_WHISPER", - "OUTBOUND_WHISPER", - "AGENT_TRANSFER", - "QUEUE_TRANSFER", - "CAMPAIGN" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ContactFlowArn" - ], - "required": [ - "InstanceArn", - "Content", - "Name", - "Type" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "connect:ListTagsForResource", - "connect:UntagResource", - "connect:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::ContactFlow" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. . You can specify a value that is maximum of 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Connect::ContactFlow", + "handlers": { + "create": { + "permissions": [ + "connect:CreateContactFlow", + "connect:TagResource" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteContactFlow", + "connect:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "connect:ListContactFlows" + ] + }, + "read": { + "permissions": [ + "connect:DescribeContactFlow" + ] + }, + "update": { + "permissions": [ + "connect:UpdateContactFlowMetadata", + "connect:UpdateContactFlowContent", + "connect:TagResource", + "connect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ContactFlowArn" + ], + "properties": { + "ContactFlowArn": { + "description": "The identifier of the contact flow (ARN).", + "maxLength": 500, + "minLength": 1, + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/contact-flow/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Content": { + "description": "The content of the contact flow in JSON format.", + "maxLength": 256000, + "minLength": 1, + "type": "string" + }, + "Description": { + "description": "The description of the contact flow.", + "maxLength": 500, + "type": "string" + }, + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance (ARN).", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Name": { + "description": "The name of the contact flow.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "State": { + "description": "The state of the contact flow.", + "enum": [ + "ACTIVE", + "ARCHIVED" + ], + "type": "string" + }, + "Tags": { + "description": "One or more tags.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "The type of the contact flow.", + "enum": [ + "CONTACT_FLOW", + "CUSTOMER_QUEUE", + "CUSTOMER_HOLD", + "CUSTOMER_WHISPER", + "AGENT_HOLD", + "AGENT_WHISPER", + "OUTBOUND_WHISPER", + "AGENT_TRANSFER", + "QUEUE_TRANSFER", + "CAMPAIGN" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ContactFlowArn" + ], + "required": [ + "InstanceArn", + "Content", + "Name", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "connect:ListTagsForResource", + "connect:UntagResource", + "connect:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::ContactFlow" +} diff --git a/src/schema/aws-connect-contactflowmodule.json b/src/schema/aws-connect-contactflowmodule.json index 3c0b404f..01968c45 100644 --- a/src/schema/aws-connect-contactflowmodule.json +++ b/src/schema/aws-connect-contactflowmodule.json @@ -1,152 +1,152 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is maximum of 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Connect::ContactFlowModule.", - "handlers": { - "create": { - "permissions": [ - "connect:CreateContactFlowModule", - "connect:TagResource" - ] - }, - "delete": { - "permissions": [ - "connect:DeleteContactFlowModule", - "connect:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceArn": { - "$ref": "resource-schema.json#/properties/InstanceArn" - } - }, - "required": [ - "InstanceArn" - ] - }, - "permissions": [ - "connect:ListContactFlowModules" - ] - }, - "read": { - "permissions": [ - "connect:DescribeContactFlowModule" - ] - }, - "update": { - "permissions": [ - "connect:UpdateContactFlowModuleMetadata", - "connect:UpdateContactFlowModuleContent", - "connect:TagResource", - "connect:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ContactFlowModuleArn" - ], - "properties": { - "ContactFlowModuleArn": { - "description": "The identifier of the contact flow module (ARN).", - "maxLength": 256, - "minLength": 1, - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/flow-module/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Content": { - "description": "The content of the contact flow module in JSON format.", - "maxLength": 256000, - "minLength": 1, - "type": "string" - }, - "Description": { - "description": "The description of the contact flow module.", - "maxLength": 500, - "pattern": ".*\\S.*", - "type": "string" - }, - "InstanceArn": { - "description": "The identifier of the Amazon Connect instance (ARN).", - "maxLength": 256, - "minLength": 1, - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Name": { - "description": "The name of the contact flow module.", - "maxLength": 127, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "State": { - "description": "The state of the contact flow module.", - "maxLength": 500, - "type": "string" - }, - "Status": { - "description": "The status of the contact flow module.", - "maxLength": 500, - "type": "string" - }, - "Tags": { - "description": "One or more tags.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/ContactFlowModuleArn", - "/properties/Status" - ], - "required": [ - "InstanceArn", - "Name", - "Content" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "connect:ListTagsForResource", - "connect:UntagResource", - "connect:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::ContactFlowModule" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is maximum of 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Connect::ContactFlowModule.", + "handlers": { + "create": { + "permissions": [ + "connect:CreateContactFlowModule", + "connect:TagResource" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteContactFlowModule", + "connect:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "connect:ListContactFlowModules" + ] + }, + "read": { + "permissions": [ + "connect:DescribeContactFlowModule" + ] + }, + "update": { + "permissions": [ + "connect:UpdateContactFlowModuleMetadata", + "connect:UpdateContactFlowModuleContent", + "connect:TagResource", + "connect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ContactFlowModuleArn" + ], + "properties": { + "ContactFlowModuleArn": { + "description": "The identifier of the contact flow module (ARN).", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/flow-module/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Content": { + "description": "The content of the contact flow module in JSON format.", + "maxLength": 256000, + "minLength": 1, + "type": "string" + }, + "Description": { + "description": "The description of the contact flow module.", + "maxLength": 500, + "pattern": ".*\\S.*", + "type": "string" + }, + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance (ARN).", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Name": { + "description": "The name of the contact flow module.", + "maxLength": 127, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "State": { + "description": "The state of the contact flow module.", + "maxLength": 500, + "type": "string" + }, + "Status": { + "description": "The status of the contact flow module.", + "maxLength": 500, + "type": "string" + }, + "Tags": { + "description": "One or more tags.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/ContactFlowModuleArn", + "/properties/Status" + ], + "required": [ + "InstanceArn", + "Name", + "Content" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "connect:ListTagsForResource", + "connect:UntagResource", + "connect:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::ContactFlowModule" +} diff --git a/src/schema/aws-connect-contactflowversion.json b/src/schema/aws-connect-contactflowversion.json new file mode 100644 index 00000000..97969597 --- /dev/null +++ b/src/schema/aws-connect-contactflowversion.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ContactFlowId", + "/properties/Description" + ], + "definitions": {}, + "description": "Resource Type Definition for ContactFlowVersion", + "handlers": { + "create": { + "permissions": [ + "connect:CreateContactFlowVersion", + "connect:DescribeContactFlow" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteContactFlowVersion" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ContactFlowId": { + "$ref": "resource-schema.json#/properties/ContactFlowId" + } + }, + "required": [ + "ContactFlowId" + ] + }, + "permissions": [ + "connect:ListContactFlowVersions" + ] + }, + "read": { + "permissions": [ + "connect:DescribeContactFlow" + ] + }, + "update": { + "permissions": [ + "connect:DescribeContactFlow" + ] + } + }, + "primaryIdentifier": [ + "/properties/ContactFlowVersionARN" + ], + "properties": { + "ContactFlowId": { + "description": "The ARN of the contact flow this version is tied to.", + "maxLength": 500, + "minLength": 1, + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]+:[0-9]{12}:instance/[-a-zA-Z0-9]+/contact-flow/[-a-zA-Z0-9]+$", + "type": "string" + }, + "ContactFlowVersionARN": { + "description": "The identifier of the contact flow version (ARN).", + "maxLength": 500, + "minLength": 1, + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]+:[0-9]{12}:instance/[-a-zA-Z0-9]+/contact-flow/[-a-zA-Z0-9]+:[0-9]+$", + "type": "string" + }, + "Description": { + "description": "The description of the version.", + "maxLength": 500, + "type": "string" + }, + "FlowContentSha256": { + "description": "Indicates the checksum value of the latest published flow content", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]{64}$", + "type": "string" + }, + "Version": { + "description": "The version number of this revision", + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/ContactFlowVersionARN", + "/properties/Version", + "/properties/FlowContentSha256" + ], + "required": [ + "ContactFlowId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Connect::ContactFlowVersion" +} diff --git a/src/schema/aws-connect-emailaddress.json b/src/schema/aws-connect-emailaddress.json new file mode 100644 index 00000000..b9fe0082 --- /dev/null +++ b/src/schema/aws-connect-emailaddress.json @@ -0,0 +1,149 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EmailAddress" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Connect::EmailAddress", + "handlers": { + "create": { + "permissions": [ + "connect:CreateEmailAddress", + "connect:TagResource", + "connect:ListIntegrationAssociations", + "ses:GetEmailIdentity", + "ses:DescribeReceiptRule", + "ses:UpdateReceiptRule", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteEmailAddress", + "connect:UntagResource", + "iam:PassRole", + "ses:DescribeReceiptRule", + "ses:UpdateReceiptRule" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "connect:DescribeEmailAddress", + "connect:SearchEmailAddresses" + ] + }, + "read": { + "permissions": [ + "connect:DescribeEmailAddress" + ] + }, + "update": { + "permissions": [ + "connect:UpdateEmailAddressMetadata", + "connect:TagResource", + "connect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/EmailAddressArn" + ], + "properties": { + "Description": { + "description": "A description for the email address.", + "maxLength": 250, + "minLength": 1, + "pattern": "(^[\\S].*[\\S]$)|(^[\\S]$)", + "type": "string" + }, + "DisplayName": { + "description": "The display name for the email address.", + "maxLength": 256, + "minLength": 0, + "pattern": "(^[\\S].*[\\S]$)|(^[\\S]$)", + "type": "string" + }, + "EmailAddress": { + "description": "Email address to be created for this instance", + "maxLength": 255, + "minLength": 1, + "pattern": "([^\\s@]+@[^\\s@]+\\.[^\\s@]+)", + "type": "string" + }, + "EmailAddressArn": { + "description": "The identifier of the email address.", + "pattern": "^arn:(aws|aws-us-gov):connect:[a-z]{2}-[a-z]+-[0-9]{1}:[0-9]{1,20}:instance/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}/email-address/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + }, + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance.", + "maxLength": 250, + "minLength": 1, + "pattern": "^arn:(aws|aws-us-gov):connect:[a-z]{2}-[a-z]+-[0-9]{1}:[0-9]{1,20}:instance/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + }, + "Tags": { + "description": "One or more tags.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/EmailAddressArn" + ], + "required": [ + "InstanceArn", + "EmailAddress" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "connect:TagResource", + "connect:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::EmailAddress" +} diff --git a/src/schema/aws-connect-evaluationform.json b/src/schema/aws-connect-evaluationform.json index 540f7cef..748ebb74 100644 --- a/src/schema/aws-connect-evaluationform.json +++ b/src/schema/aws-connect-evaluationform.json @@ -1,550 +1,550 @@ -{ - "additionalProperties": false, - "definitions": { - "EvaluationFormBaseItem": { - "additionalProperties": false, - "description": "An item at the root level. All items must be sections.", - "properties": { - "Section": { - "$ref": "#/definitions/EvaluationFormSection", - "description": "A subsection or inner section of an item." - } - }, - "required": [ - "Section" - ], - "type": "object" - }, - "EvaluationFormItem": { - "additionalProperties": false, - "description": "Items that are part of the evaluation form. The total number of sections and questions must not exceed 100 each. Questions must be contained in a section.", - "properties": { - "Question": { - "$ref": "#/definitions/EvaluationFormQuestion", - "description": "The information of the question." - }, - "Section": { - "$ref": "#/definitions/EvaluationFormSection", - "description": "The information of the section." - } - }, - "type": "object" - }, - "EvaluationFormNumericQuestionAutomation": { - "additionalProperties": false, - "description": "Information about the automation configuration in numeric questions.", - "properties": { - "PropertyValue": { - "$ref": "#/definitions/NumericQuestionPropertyValueAutomation", - "description": "The property value of the automation." - } - }, - "required": [ - "PropertyValue" - ], - "type": "object" - }, - "EvaluationFormNumericQuestionOption": { - "additionalProperties": false, - "description": "Information about the option range used for scoring in numeric questions.", - "properties": { - "AutomaticFail": { - "description": "The flag to mark the option as automatic fail. If an automatic fail answer is provided, the overall evaluation gets a score of 0.", - "type": "boolean" - }, - "MaxValue": { - "description": "The maximum answer value of the range option.", - "type": "integer" - }, - "MinValue": { - "description": "The minimum answer value of the range option.", - "type": "integer" - }, - "Score": { - "$ref": "#/definitions/Score", - "description": "The score assigned to answer values within the range option.\n *Minimum*: 0\n *Maximum*: 10" - } - }, - "required": [ - "MinValue", - "MaxValue" - ], - "type": "object" - }, - "EvaluationFormNumericQuestionProperties": { - "additionalProperties": false, - "description": "Information about properties for a numeric question in an evaluation form.", - "properties": { - "Automation": { - "$ref": "#/definitions/EvaluationFormNumericQuestionAutomation", - "description": "The automation properties of the numeric question." - }, - "MaxValue": { - "description": "The maximum answer value.", - "type": "integer" - }, - "MinValue": { - "description": "The minimum answer value.", - "type": "integer" - }, - "Options": { - "description": "The scoring options of the numeric question.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/EvaluationFormNumericQuestionOption" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "MinValue", - "MaxValue" - ], - "type": "object" - }, - "EvaluationFormQuestion": { - "additionalProperties": false, - "description": "Information about a question from an evaluation form.", - "properties": { - "Instructions": { - "description": "The instructions of the section.\n *Length Constraints*: Minimum length of 0. Maximum length of 1024.", - "maxLength": 1024, - "type": "string" - }, - "NotApplicableEnabled": { - "description": "The flag to enable not applicable answers to the question.", - "type": "boolean" - }, - "QuestionType": { - "description": "The type of the question.\n *Allowed values*: ``NUMERIC`` | ``SINGLESELECT`` | ``TEXT``", - "enum": [ - "NUMERIC", - "SINGLESELECT", - "TEXT" - ], - "type": "string" - }, - "QuestionTypeProperties": { - "$ref": "#/definitions/EvaluationFormQuestionTypeProperties", - "description": "The properties of the type of question. Text questions do not have to define question type properties." - }, - "RefId": { - "$ref": "#/definitions/RefId", - "description": "The identifier of the question. An identifier must be unique within the evaluation form.\n *Length Constraints*: Minimum length of 1. Maximum length of 40." - }, - "Title": { - "description": "The title of the question.\n *Length Constraints*: Minimum length of 1. Maximum length of 350.", - "maxLength": 350, - "minLength": 1, - "type": "string" - }, - "Weight": { - "$ref": "#/definitions/Weight", - "description": "The scoring weight of the section.\n *Minimum*: 0\n *Maximum*: 100" - } - }, - "required": [ - "RefId", - "Title", - "QuestionType" - ], - "type": "object" - }, - "EvaluationFormQuestionTypeProperties": { - "additionalProperties": false, - "description": "Information about properties for a question in an evaluation form. The question type properties must be either for a numeric question or a single select question.", - "properties": { - "Numeric": { - "$ref": "#/definitions/EvaluationFormNumericQuestionProperties", - "description": "The properties of the numeric question." - }, - "SingleSelect": { - "$ref": "#/definitions/EvaluationFormSingleSelectQuestionProperties", - "description": "The properties of the numeric question." - } - }, - "type": "object" - }, - "EvaluationFormSection": { - "additionalProperties": false, - "description": "Information about a section from an evaluation form. A section can contain sections and/or questions. Evaluation forms can only contain sections and subsections (two level nesting).", - "properties": { - "Instructions": { - "description": "The instructions of the section.", - "maxLength": 1024, - "type": "string" - }, - "Items": { - "description": "The items of the section.\n *Minimum*: 1", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/EvaluationFormItem" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "RefId": { - "$ref": "#/definitions/RefId", - "description": "The identifier of the section. An identifier must be unique within the evaluation form.\n *Length Constraints*: Minimum length of 1. Maximum length of 40." - }, - "Title": { - "description": "The title of the section.\n *Length Constraints*: Minimum length of 1. Maximum length of 128.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Weight": { - "$ref": "#/definitions/Weight", - "description": "The scoring weight of the section.\n *Minimum*: 0 \n *Maximum*: 100" - } - }, - "required": [ - "RefId", - "Title" - ], - "type": "object" - }, - "EvaluationFormSingleSelectQuestionAutomation": { - "additionalProperties": false, - "description": "Information about the automation configuration in single select questions. Automation options are evaluated in order, and the first matched option is applied. If no automation option matches, and there is a default option, then the default option is applied.", - "properties": { - "DefaultOptionRefId": { - "$ref": "#/definitions/RefId", - "description": "The identifier of the default answer option, when none of the automation options match the criteria.\n *Length Constraints*: Minimum length of 1. Maximum length of 40." - }, - "Options": { - "description": "The automation options of the single select question.\n *Minimum*: 1\n *Maximum*: 20", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/EvaluationFormSingleSelectQuestionAutomationOption" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Options" - ], - "type": "object" - }, - "EvaluationFormSingleSelectQuestionAutomationOption": { - "additionalProperties": false, - "description": "The automation options of the single select question.", - "properties": { - "RuleCategory": { - "$ref": "#/definitions/SingleSelectQuestionRuleCategoryAutomation", - "description": "The automation option based on a rule category for the single select question." - } - }, - "required": [ - "RuleCategory" - ], - "type": "object" - }, - "EvaluationFormSingleSelectQuestionOption": { - "additionalProperties": false, - "description": "Information about the automation configuration in single select questions.", - "properties": { - "AutomaticFail": { - "description": "The flag to mark the option as automatic fail. If an automatic fail answer is provided, the overall evaluation gets a score of 0.", - "type": "boolean" - }, - "RefId": { - "$ref": "#/definitions/RefId", - "description": "The identifier of the answer option. An identifier must be unique within the question.\n *Length Constraints*: Minimum length of 1. Maximum length of 40." - }, - "Score": { - "$ref": "#/definitions/Score", - "description": "The score assigned to the answer option.\n *Minimum*: 0\n *Maximum*: 10" - }, - "Text": { - "description": "The title of the answer option.\n *Length Constraints*: Minimum length of 1. Maximum length of 128.", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "RefId", - "Text" - ], - "type": "object" - }, - "EvaluationFormSingleSelectQuestionProperties": { - "additionalProperties": false, - "description": "Information about the options in single select questions.", - "properties": { - "Automation": { - "$ref": "#/definitions/EvaluationFormSingleSelectQuestionAutomation", - "description": "The display mode of the single select question." - }, - "DisplayAs": { - "description": "The display mode of the single select question.\n *Allowed values*: ``DROPDOWN`` | ``RADIO``", - "enum": [ - "DROPDOWN", - "RADIO" - ], - "type": "string" - }, - "Options": { - "description": "The answer options of the single select question.\n *Minimum*: 2\n *Maximum*: 256", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/EvaluationFormSingleSelectQuestionOption" - }, - "maxItems": 256, - "minItems": 2, - "type": "array" - } - }, - "required": [ - "Options" - ], - "type": "object" - }, - "NumericQuestionPropertyValueAutomation": { - "additionalProperties": false, - "description": "Information about the property value used in automation of a numeric questions.", - "properties": { - "Label": { - "description": "The property label of the automation.", - "enum": [ - "OVERALL_CUSTOMER_SENTIMENT_SCORE", - "OVERALL_AGENT_SENTIMENT_SCORE", - "NON_TALK_TIME", - "NON_TALK_TIME_PERCENTAGE", - "NUMBER_OF_INTERRUPTIONS", - "CONTACT_DURATION", - "AGENT_INTERACTION_DURATION", - "CUSTOMER_HOLD_TIME" - ], - "type": "string" - } - }, - "required": [ - "Label" - ], - "type": "object" - }, - "RefId": { - "description": "The identifier to reference the item.", - "pattern": "^[a-zA-Z0-9._-]{1,40}$", - "type": "string" - }, - "Score": { - "description": "The score of an answer option.", - "maximum": 10, - "minimum": 0, - "type": "integer" - }, - "ScoringStrategy": { - "additionalProperties": false, - "description": "A scoring strategy of the evaluation form.", - "properties": { - "Mode": { - "description": "The scoring mode of the evaluation form.\n *Allowed values*: ``QUESTION_ONLY`` | ``SECTION_ONLY``", - "enum": [ - "QUESTION_ONLY", - "SECTION_ONLY" - ], - "type": "string" - }, - "Status": { - "description": "The scoring status of the evaluation form.\n *Allowed values*: ``ENABLED`` | ``DISABLED``", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - } - }, - "required": [ - "Mode", - "Status" - ], - "type": "object" - }, - "SingleSelectQuestionRuleCategoryAutomation": { - "additionalProperties": false, - "description": "Information about the automation option based on a rule category for a single select question.\n *Length Constraints*: Minimum length of 1. Maximum length of 50.", - "properties": { - "Category": { - "description": "The category name, as defined in Rules.\n *Minimum*: 1\n *Maximum*: 50", - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "Condition": { - "description": "The condition to apply for the automation option. If the condition is PRESENT, then the option is applied when the contact data includes the category. Similarly, if the condition is NOT_PRESENT, then the option is applied when the contact data does not include the category.\n *Allowed values*: ``PRESENT`` | ``NOT_PRESENT`` \n *Maximum*: 50", - "enum": [ - "PRESENT", - "NOT_PRESENT" - ], - "type": "string" - }, - "OptionRefId": { - "$ref": "#/definitions/RefId", - "description": "The identifier of the answer option. An identifier must be unique within the question.\n *Length Constraints*: Minimum length of 1. Maximum length of 40." - } - }, - "required": [ - "Category", - "Condition", - "OptionRefId" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Weight": { - "description": "The item weight used for scoring.", - "maximum": 100, - "minimum": 0, - "type": "number" - } - }, - "description": "Creates an evaluation form for the specified CON instance.", - "handlers": { - "create": { - "permissions": [ - "connect:CreateEvaluationForm", - "connect:ActivateEvaluationForm", - "connect:TagResource" - ] - }, - "delete": { - "permissions": [ - "connect:DeleteEvaluationForm", - "connect:UntagResource" - ] - }, - "list": { - "permissions": [ - "connect:ListEvaluationForms" - ] - }, - "read": { - "permissions": [ - "connect:DescribeEvaluationForm", - "connect:ListEvaluationFormVersions" - ] - }, - "update": { - "permissions": [ - "connect:UpdateEvaluationForm", - "connect:ListEvaluationFormVersions", - "connect:ActivateEvaluationForm", - "connect:DeactivateEvaluationForm", - "connect:TagResource", - "connect:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/EvaluationFormArn" - ], - "properties": { - "Description": { - "description": "The description of the evaluation form.\n *Length Constraints*: Minimum length of 0. Maximum length of 1024.", - "maxLength": 1024, - "type": "string" - }, - "EvaluationFormArn": { - "description": "", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/evaluation-form/[-a-zA-Z0-9]*$", - "type": "string" - }, - "InstanceArn": { - "description": "The identifier of the Amazon Connect instance.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Items": { - "description": "Items that are part of the evaluation form. The total number of sections and questions must not exceed 100 each. Questions must be contained in a section.\n *Minimum size*: 1\n *Maximum size*: 100", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/EvaluationFormBaseItem" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "ScoringStrategy": { - "$ref": "#/definitions/ScoringStrategy", - "description": "A scoring strategy of the evaluation form." - }, - "Status": { - "default": "DRAFT", - "description": "The status of the evaluation form.\n *Allowed values*: ``DRAFT`` | ``ACTIVE``", - "enum": [ - "DRAFT", - "ACTIVE" - ], - "type": "string" - }, - "Tags": { - "description": "The tags used to organize, track, or control access for this resource. For example, { \"tags\": {\"key1\":\"value1\", \"key2\":\"value2\"} }.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "Title": { - "description": "A title of the evaluation form.", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/EvaluationFormArn" - ], - "required": [ - "Title", - "InstanceArn", - "Items", - "Status" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "connect:ListTagsForResource", - "connect:UntagResource", - "connect:TagResource" - ], - "tagOnCreate": false, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::EvaluationForm" -} +{ + "additionalProperties": false, + "definitions": { + "EvaluationFormBaseItem": { + "additionalProperties": false, + "description": "An item at the root level. All items must be sections.", + "properties": { + "Section": { + "$ref": "#/definitions/EvaluationFormSection", + "description": "A subsection or inner section of an item." + } + }, + "required": [ + "Section" + ], + "type": "object" + }, + "EvaluationFormItem": { + "additionalProperties": false, + "description": "Items that are part of the evaluation form. The total number of sections and questions must not exceed 100 each. Questions must be contained in a section.", + "properties": { + "Question": { + "$ref": "#/definitions/EvaluationFormQuestion", + "description": "The information of the question." + }, + "Section": { + "$ref": "#/definitions/EvaluationFormSection", + "description": "The information of the section." + } + }, + "type": "object" + }, + "EvaluationFormNumericQuestionAutomation": { + "additionalProperties": false, + "description": "Information about the automation configuration in numeric questions.", + "properties": { + "PropertyValue": { + "$ref": "#/definitions/NumericQuestionPropertyValueAutomation", + "description": "The property value of the automation." + } + }, + "required": [ + "PropertyValue" + ], + "type": "object" + }, + "EvaluationFormNumericQuestionOption": { + "additionalProperties": false, + "description": "Information about the option range used for scoring in numeric questions.", + "properties": { + "AutomaticFail": { + "description": "The flag to mark the option as automatic fail. If an automatic fail answer is provided, the overall evaluation gets a score of 0.", + "type": "boolean" + }, + "MaxValue": { + "description": "The maximum answer value of the range option.", + "type": "integer" + }, + "MinValue": { + "description": "The minimum answer value of the range option.", + "type": "integer" + }, + "Score": { + "$ref": "#/definitions/Score", + "description": "The score assigned to answer values within the range option.\n *Minimum*: 0\n *Maximum*: 10" + } + }, + "required": [ + "MinValue", + "MaxValue" + ], + "type": "object" + }, + "EvaluationFormNumericQuestionProperties": { + "additionalProperties": false, + "description": "Information about properties for a numeric question in an evaluation form.", + "properties": { + "Automation": { + "$ref": "#/definitions/EvaluationFormNumericQuestionAutomation", + "description": "The automation properties of the numeric question." + }, + "MaxValue": { + "description": "The maximum answer value.", + "type": "integer" + }, + "MinValue": { + "description": "The minimum answer value.", + "type": "integer" + }, + "Options": { + "description": "The scoring options of the numeric question.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/EvaluationFormNumericQuestionOption" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "MinValue", + "MaxValue" + ], + "type": "object" + }, + "EvaluationFormQuestion": { + "additionalProperties": false, + "description": "Information about a question from an evaluation form.", + "properties": { + "Instructions": { + "description": "The instructions of the section.\n *Length Constraints*: Minimum length of 0. Maximum length of 1024.", + "maxLength": 1024, + "type": "string" + }, + "NotApplicableEnabled": { + "description": "The flag to enable not applicable answers to the question.", + "type": "boolean" + }, + "QuestionType": { + "description": "The type of the question.\n *Allowed values*: ``NUMERIC`` | ``SINGLESELECT`` | ``TEXT``", + "enum": [ + "NUMERIC", + "SINGLESELECT", + "TEXT" + ], + "type": "string" + }, + "QuestionTypeProperties": { + "$ref": "#/definitions/EvaluationFormQuestionTypeProperties", + "description": "The properties of the type of question. Text questions do not have to define question type properties." + }, + "RefId": { + "$ref": "#/definitions/RefId", + "description": "The identifier of the question. An identifier must be unique within the evaluation form.\n *Length Constraints*: Minimum length of 1. Maximum length of 40." + }, + "Title": { + "description": "The title of the question.\n *Length Constraints*: Minimum length of 1. Maximum length of 350.", + "maxLength": 350, + "minLength": 1, + "type": "string" + }, + "Weight": { + "$ref": "#/definitions/Weight", + "description": "The scoring weight of the section.\n *Minimum*: 0\n *Maximum*: 100" + } + }, + "required": [ + "RefId", + "Title", + "QuestionType" + ], + "type": "object" + }, + "EvaluationFormQuestionTypeProperties": { + "additionalProperties": false, + "description": "Information about properties for a question in an evaluation form. The question type properties must be either for a numeric question or a single select question.", + "properties": { + "Numeric": { + "$ref": "#/definitions/EvaluationFormNumericQuestionProperties", + "description": "The properties of the numeric question." + }, + "SingleSelect": { + "$ref": "#/definitions/EvaluationFormSingleSelectQuestionProperties", + "description": "The properties of the numeric question." + } + }, + "type": "object" + }, + "EvaluationFormSection": { + "additionalProperties": false, + "description": "Information about a section from an evaluation form. A section can contain sections and/or questions. Evaluation forms can only contain sections and subsections (two level nesting).", + "properties": { + "Instructions": { + "description": "The instructions of the section.", + "maxLength": 1024, + "type": "string" + }, + "Items": { + "description": "The items of the section.\n *Minimum*: 1", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/EvaluationFormItem" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "RefId": { + "$ref": "#/definitions/RefId", + "description": "The identifier of the section. An identifier must be unique within the evaluation form.\n *Length Constraints*: Minimum length of 1. Maximum length of 40." + }, + "Title": { + "description": "The title of the section.\n *Length Constraints*: Minimum length of 1. Maximum length of 128.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Weight": { + "$ref": "#/definitions/Weight", + "description": "The scoring weight of the section.\n *Minimum*: 0 \n *Maximum*: 100" + } + }, + "required": [ + "RefId", + "Title" + ], + "type": "object" + }, + "EvaluationFormSingleSelectQuestionAutomation": { + "additionalProperties": false, + "description": "Information about the automation configuration in single select questions. Automation options are evaluated in order, and the first matched option is applied. If no automation option matches, and there is a default option, then the default option is applied.", + "properties": { + "DefaultOptionRefId": { + "$ref": "#/definitions/RefId", + "description": "The identifier of the default answer option, when none of the automation options match the criteria.\n *Length Constraints*: Minimum length of 1. Maximum length of 40." + }, + "Options": { + "description": "The automation options of the single select question.\n *Minimum*: 1\n *Maximum*: 20", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/EvaluationFormSingleSelectQuestionAutomationOption" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Options" + ], + "type": "object" + }, + "EvaluationFormSingleSelectQuestionAutomationOption": { + "additionalProperties": false, + "description": "The automation options of the single select question.", + "properties": { + "RuleCategory": { + "$ref": "#/definitions/SingleSelectQuestionRuleCategoryAutomation", + "description": "The automation option based on a rule category for the single select question." + } + }, + "required": [ + "RuleCategory" + ], + "type": "object" + }, + "EvaluationFormSingleSelectQuestionOption": { + "additionalProperties": false, + "description": "Information about the automation configuration in single select questions.", + "properties": { + "AutomaticFail": { + "description": "The flag to mark the option as automatic fail. If an automatic fail answer is provided, the overall evaluation gets a score of 0.", + "type": "boolean" + }, + "RefId": { + "$ref": "#/definitions/RefId", + "description": "The identifier of the answer option. An identifier must be unique within the question.\n *Length Constraints*: Minimum length of 1. Maximum length of 40." + }, + "Score": { + "$ref": "#/definitions/Score", + "description": "The score assigned to the answer option.\n *Minimum*: 0\n *Maximum*: 10" + }, + "Text": { + "description": "The title of the answer option.\n *Length Constraints*: Minimum length of 1. Maximum length of 128.", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "RefId", + "Text" + ], + "type": "object" + }, + "EvaluationFormSingleSelectQuestionProperties": { + "additionalProperties": false, + "description": "Information about the options in single select questions.", + "properties": { + "Automation": { + "$ref": "#/definitions/EvaluationFormSingleSelectQuestionAutomation", + "description": "The display mode of the single select question." + }, + "DisplayAs": { + "description": "The display mode of the single select question.\n *Allowed values*: ``DROPDOWN`` | ``RADIO``", + "enum": [ + "DROPDOWN", + "RADIO" + ], + "type": "string" + }, + "Options": { + "description": "The answer options of the single select question.\n *Minimum*: 2\n *Maximum*: 256", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/EvaluationFormSingleSelectQuestionOption" + }, + "maxItems": 256, + "minItems": 2, + "type": "array" + } + }, + "required": [ + "Options" + ], + "type": "object" + }, + "NumericQuestionPropertyValueAutomation": { + "additionalProperties": false, + "description": "Information about the property value used in automation of a numeric questions.", + "properties": { + "Label": { + "description": "The property label of the automation.", + "enum": [ + "OVERALL_CUSTOMER_SENTIMENT_SCORE", + "OVERALL_AGENT_SENTIMENT_SCORE", + "NON_TALK_TIME", + "NON_TALK_TIME_PERCENTAGE", + "NUMBER_OF_INTERRUPTIONS", + "CONTACT_DURATION", + "AGENT_INTERACTION_DURATION", + "CUSTOMER_HOLD_TIME" + ], + "type": "string" + } + }, + "required": [ + "Label" + ], + "type": "object" + }, + "RefId": { + "description": "The identifier to reference the item.", + "pattern": "^[a-zA-Z0-9._-]{1,40}$", + "type": "string" + }, + "Score": { + "description": "The score of an answer option.", + "maximum": 10, + "minimum": 0, + "type": "integer" + }, + "ScoringStrategy": { + "additionalProperties": false, + "description": "A scoring strategy of the evaluation form.", + "properties": { + "Mode": { + "description": "The scoring mode of the evaluation form.\n *Allowed values*: ``QUESTION_ONLY`` | ``SECTION_ONLY``", + "enum": [ + "QUESTION_ONLY", + "SECTION_ONLY" + ], + "type": "string" + }, + "Status": { + "description": "The scoring status of the evaluation form.\n *Allowed values*: ``ENABLED`` | ``DISABLED``", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "required": [ + "Mode", + "Status" + ], + "type": "object" + }, + "SingleSelectQuestionRuleCategoryAutomation": { + "additionalProperties": false, + "description": "Information about the automation option based on a rule category for a single select question.\n *Length Constraints*: Minimum length of 1. Maximum length of 50.", + "properties": { + "Category": { + "description": "The category name, as defined in Rules.\n *Minimum*: 1\n *Maximum*: 50", + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "Condition": { + "description": "The condition to apply for the automation option. If the condition is PRESENT, then the option is applied when the contact data includes the category. Similarly, if the condition is NOT_PRESENT, then the option is applied when the contact data does not include the category.\n *Allowed values*: ``PRESENT`` | ``NOT_PRESENT`` \n *Maximum*: 50", + "enum": [ + "PRESENT", + "NOT_PRESENT" + ], + "type": "string" + }, + "OptionRefId": { + "$ref": "#/definitions/RefId", + "description": "The identifier of the answer option. An identifier must be unique within the question.\n *Length Constraints*: Minimum length of 1. Maximum length of 40." + } + }, + "required": [ + "Category", + "Condition", + "OptionRefId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Weight": { + "description": "The item weight used for scoring.", + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "description": "Creates an evaluation form for the specified CON instance.", + "handlers": { + "create": { + "permissions": [ + "connect:CreateEvaluationForm", + "connect:ActivateEvaluationForm", + "connect:TagResource" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteEvaluationForm", + "connect:UntagResource" + ] + }, + "list": { + "permissions": [ + "connect:ListEvaluationForms" + ] + }, + "read": { + "permissions": [ + "connect:DescribeEvaluationForm", + "connect:ListEvaluationFormVersions" + ] + }, + "update": { + "permissions": [ + "connect:UpdateEvaluationForm", + "connect:ListEvaluationFormVersions", + "connect:ActivateEvaluationForm", + "connect:DeactivateEvaluationForm", + "connect:TagResource", + "connect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/EvaluationFormArn" + ], + "properties": { + "Description": { + "description": "The description of the evaluation form.\n *Length Constraints*: Minimum length of 0. Maximum length of 1024.", + "maxLength": 1024, + "type": "string" + }, + "EvaluationFormArn": { + "description": "", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/evaluation-form/[-a-zA-Z0-9]*$", + "type": "string" + }, + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Items": { + "description": "Items that are part of the evaluation form. The total number of sections and questions must not exceed 100 each. Questions must be contained in a section.\n *Minimum size*: 1\n *Maximum size*: 100", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/EvaluationFormBaseItem" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "ScoringStrategy": { + "$ref": "#/definitions/ScoringStrategy", + "description": "A scoring strategy of the evaluation form." + }, + "Status": { + "default": "DRAFT", + "description": "The status of the evaluation form.\n *Allowed values*: ``DRAFT`` | ``ACTIVE``", + "enum": [ + "DRAFT", + "ACTIVE" + ], + "type": "string" + }, + "Tags": { + "description": "The tags used to organize, track, or control access for this resource. For example, { \"tags\": {\"key1\":\"value1\", \"key2\":\"value2\"} }.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "Title": { + "description": "A title of the evaluation form.", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/EvaluationFormArn" + ], + "required": [ + "Title", + "InstanceArn", + "Items", + "Status" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "connect:ListTagsForResource", + "connect:UntagResource", + "connect:TagResource" + ], + "tagOnCreate": false, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::EvaluationForm" +} diff --git a/src/schema/aws-connect-hoursofoperation.json b/src/schema/aws-connect-hoursofoperation.json index 1171221f..96a4e7f6 100644 --- a/src/schema/aws-connect-hoursofoperation.json +++ b/src/schema/aws-connect-hoursofoperation.json @@ -1,205 +1,338 @@ -{ - "additionalProperties": false, - "definitions": { - "HoursOfOperationConfig": { - "additionalProperties": false, - "description": "Contains information about the hours of operation.", - "properties": { - "Day": { - "description": "The day that the hours of operation applies to.", - "enum": [ - "SUNDAY", - "MONDAY", - "TUESDAY", - "WEDNESDAY", - "THURSDAY", - "FRIDAY", - "SATURDAY" - ], - "type": "string" - }, - "EndTime": { - "$ref": "#/definitions/HoursOfOperationTimeSlice", - "description": "The end time that your contact center closes." - }, - "StartTime": { - "$ref": "#/definitions/HoursOfOperationTimeSlice", - "description": "The start time that your contact center opens." - } - }, - "required": [ - "Day", - "StartTime", - "EndTime" - ], - "type": "object" - }, - "HoursOfOperationTimeSlice": { - "additionalProperties": false, - "description": "The start time or end time for an hours of operation.", - "properties": { - "Hours": { - "description": "The hours.", - "maximum": 23, - "minimum": 0, - "type": "integer" - }, - "Minutes": { - "description": "The minutes.", - "maximum": 59, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "Hours", - "Minutes" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is maximum of 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Connect::HoursOfOperation", - "handlers": { - "create": { - "permissions": [ - "connect:CreateHoursOfOperation", - "connect:TagResource", - "connect:CreateHoursOfOperationOverride" - ] - }, - "delete": { - "permissions": [ - "connect:DeleteHoursOfOperation", - "connect:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceArn": { - "$ref": "resource-schema.json#/properties/InstanceArn" - } - }, - "required": [ - "InstanceArn" - ] - }, - "permissions": [ - "connect:ListHoursOfOperations" - ] - }, - "read": { - "permissions": [ - "connect:DescribeHoursOfOperation", - "connect:ListHoursOfOperationOverrides" - ] - }, - "update": { - "permissions": [ - "connect:UpdateHoursOfOperation", - "connect:CreateHoursOfOperationOverride", - "connect:UpdateHoursOfOperationOverride", - "connect:DeleteHoursOfOperationOverride", - "connect:ListHoursOfOperationOverrides", - "connect:TagResource", - "connect:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/HoursOfOperationArn" - ], - "properties": { - "Config": { - "description": "Configuration information for the hours of operation: day, start time, and end time.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/HoursOfOperationConfig" - }, - "maxItems": 100, - "type": "array", - "uniqueItems": true - }, - "Description": { - "description": "The description of the hours of operation.", - "maxLength": 250, - "minLength": 1, - "type": "string" - }, - "HoursOfOperationArn": { - "description": "The Amazon Resource Name (ARN) for the hours of operation.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/operating-hours/[-a-zA-Z0-9]*$", - "type": "string" - }, - "InstanceArn": { - "description": "The identifier of the Amazon Connect instance.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Name": { - "description": "The name of the hours of operation.", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "One or more tags.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "TimeZone": { - "description": "The time zone of the hours of operation.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/HoursOfOperationArn" - ], - "required": [ - "InstanceArn", - "Name", - "TimeZone", - "Config" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "connect:TagResource", - "connect:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::HoursOfOperation" -} +{ + "additionalProperties": false, + "definitions": { + "EffectiveFrom": { + "description": "The date from which the hours of operation override would be effective.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + "EffectiveTill": { + "description": "The date till which the hours of operation override would be effective.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + "HoursOfOperationConfig": { + "additionalProperties": false, + "description": "Contains information about the hours of operation.", + "properties": { + "Day": { + "description": "The day that the hours of operation applies to.", + "enum": [ + "SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY" + ], + "type": "string" + }, + "EndTime": { + "$ref": "#/definitions/HoursOfOperationTimeSlice", + "description": "The end time that your contact center closes." + }, + "StartTime": { + "$ref": "#/definitions/HoursOfOperationTimeSlice", + "description": "The start time that your contact center opens." + } + }, + "required": [ + "Day", + "StartTime", + "EndTime" + ], + "type": "object" + }, + "HoursOfOperationOverride": { + "additionalProperties": false, + "description": "Overrides attached to the hours of operation.", + "properties": { + "EffectiveFrom": { + "$ref": "#/definitions/EffectiveFrom" + }, + "EffectiveTill": { + "$ref": "#/definitions/EffectiveTill" + }, + "HoursOfOperationOverrideId": { + "$ref": "#/definitions/HoursOfOperationOverrideId" + }, + "OverrideConfig": { + "$ref": "#/definitions/OverrideConfig" + }, + "OverrideDescription": { + "$ref": "#/definitions/OverrideDescription" + }, + "OverrideName": { + "$ref": "#/definitions/OverrideName" + } + }, + "required": [ + "OverrideName", + "EffectiveFrom", + "EffectiveTill", + "OverrideConfig" + ], + "type": "object" + }, + "HoursOfOperationOverrideConfig": { + "additionalProperties": false, + "description": "Contains information about the hours of operation override.", + "properties": { + "Day": { + "description": "The day that the hours of operation override applies to.", + "enum": [ + "SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY" + ], + "type": "string" + }, + "EndTime": { + "$ref": "#/definitions/OverrideTimeSlice", + "description": "The new end time that your contact center closes for the overriden days." + }, + "StartTime": { + "$ref": "#/definitions/OverrideTimeSlice", + "description": "The new start time that your contact center opens for the overriden days." + } + }, + "required": [ + "Day", + "StartTime", + "EndTime" + ], + "type": "object" + }, + "HoursOfOperationOverrideId": { + "description": "The Resource Identifier for the hours of operation override.", + "pattern": "^[-a-zA-Z0-9]*$", + "type": "string" + }, + "HoursOfOperationTimeSlice": { + "additionalProperties": false, + "description": "The start time or end time for an hours of operation.", + "properties": { + "Hours": { + "description": "The hours.", + "maximum": 23, + "minimum": 0, + "type": "integer" + }, + "Minutes": { + "description": "The minutes.", + "maximum": 59, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "Hours", + "Minutes" + ], + "type": "object" + }, + "OverrideConfig": { + "description": "Configuration information for the hours of operation override: day, start time, and end time.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/HoursOfOperationOverrideConfig" + }, + "maxItems": 100, + "type": "array", + "uniqueItems": true + }, + "OverrideDescription": { + "description": "The description of the hours of operation override.", + "maxLength": 250, + "minLength": 1, + "type": "string" + }, + "OverrideName": { + "description": "The name of the hours of operation override.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "OverrideTimeSlice": { + "additionalProperties": false, + "description": "The start time or end time for an an hours of operation override.", + "properties": { + "Hours": { + "description": "The hours.", + "maximum": 23, + "minimum": 0, + "type": "integer" + }, + "Minutes": { + "description": "The minutes.", + "maximum": 59, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "Hours", + "Minutes" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is maximum of 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Connect::HoursOfOperation", + "handlers": { + "create": { + "permissions": [ + "connect:CreateHoursOfOperation", + "connect:TagResource", + "connect:CreateHoursOfOperationOverride" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteHoursOfOperation", + "connect:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "connect:ListHoursOfOperations" + ] + }, + "read": { + "permissions": [ + "connect:DescribeHoursOfOperation", + "connect:ListHoursOfOperationOverrides" + ] + }, + "update": { + "permissions": [ + "connect:UpdateHoursOfOperation", + "connect:CreateHoursOfOperationOverride", + "connect:UpdateHoursOfOperationOverride", + "connect:DeleteHoursOfOperationOverride", + "connect:ListHoursOfOperationOverrides", + "connect:TagResource", + "connect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/HoursOfOperationArn" + ], + "properties": { + "Config": { + "description": "Configuration information for the hours of operation: day, start time, and end time.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/HoursOfOperationConfig" + }, + "maxItems": 100, + "type": "array", + "uniqueItems": true + }, + "Description": { + "description": "The description of the hours of operation.", + "maxLength": 250, + "minLength": 1, + "type": "string" + }, + "HoursOfOperationArn": { + "description": "The Amazon Resource Name (ARN) for the hours of operation.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/operating-hours/[-a-zA-Z0-9]*$", + "type": "string" + }, + "HoursOfOperationOverrides": { + "description": "One or more hours of operation overrides assigned to an hour of operation.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/HoursOfOperationOverride" + }, + "maxItems": 50, + "type": "array" + }, + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Name": { + "description": "The name of the hours of operation.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "One or more tags.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "TimeZone": { + "description": "The time zone of the hours of operation.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/HoursOfOperationArn" + ], + "required": [ + "InstanceArn", + "Name", + "TimeZone", + "Config" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "connect:TagResource", + "connect:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::HoursOfOperation" +} diff --git a/src/schema/aws-connect-instance.json b/src/schema/aws-connect-instance.json index 29bf212a..ba79c047 100644 --- a/src/schema/aws-connect-instance.json +++ b/src/schema/aws-connect-instance.json @@ -1,238 +1,243 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DirectoryId", - "/properties/InstanceAlias", - "/properties/IdentityManagementType" - ], - "definitions": { - "Attributes": { - "additionalProperties": false, - "properties": { - "AutoResolveBestVoices": { - "$ref": "#/definitions/AutoResolveBestVoices" - }, - "ContactLens": { - "$ref": "#/definitions/ContactLens" - }, - "ContactflowLogs": { - "$ref": "#/definitions/ContactflowLogs" - }, - "EarlyMedia": { - "$ref": "#/definitions/EarlyMedia" - }, - "InboundCalls": { - "$ref": "#/definitions/InboundCalls" - }, - "OutboundCalls": { - "$ref": "#/definitions/OutboundCalls" - }, - "UseCustomTTSVoices": { - "$ref": "#/definitions/UseCustomTTSVoices" - } - }, - "required": [ - "InboundCalls", - "OutboundCalls" - ], - "type": "object" - }, - "AutoResolveBestVoices": { - "description": "Boolean flag which enables AUTO_RESOLVE_BEST_VOICES on an instance.", - "type": "boolean" - }, - "ContactLens": { - "description": "Boolean flag which enables CONTACT_LENS on an instance.", - "type": "boolean" - }, - "ContactflowLogs": { - "description": "Boolean flag which enables CONTACTFLOW_LOGS on an instance.", - "type": "boolean" - }, - "EarlyMedia": { - "description": "Boolean flag which enables EARLY_MEDIA on an instance.", - "type": "boolean" - }, - "InboundCalls": { - "description": "Mandatory element which enables inbound calls on new instance.", - "type": "boolean" - }, - "OutboundCalls": { - "description": "Mandatory element which enables outbound calls on new instance.", - "type": "boolean" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UseCustomTTSVoices": { - "description": "Boolean flag which enables USE_CUSTOM_TTS_VOICES on an instance.", - "type": "boolean" - } - }, - "description": "Resource Type definition for AWS::Connect::Instance", - "handlers": { - "create": { - "permissions": [ - "connect:CreateInstance", - "connect:DescribeInstance", - "connect:UpdateInstanceAttribute", - "connect:TagResource", - "ds:CheckAlias", - "ds:CreateAlias", - "ds:AuthorizeApplication", - "ds:UnauthorizeApplication", - "ds:CreateIdentityPoolDirectory", - "ds:CreateDirectory", - "ds:DescribeDirectories", - "iam:CreateServiceLinkedRole", - "iam:PutRolePolicy", - "logs:CreateLogGroup" - ] - }, - "delete": { - "permissions": [ - "connect:DeleteInstance", - "connect:DescribeInstance", - "connect:UntagResource", - "ds:DeleteDirectory", - "ds:UnauthorizeApplication", - "ds:DescribeDirectories" - ] - }, - "list": { - "permissions": [ - "connect:ListInstances", - "connect:ListInstanceAttributes", - "ds:DescribeDirectories" - ] - }, - "read": { - "permissions": [ - "connect:DescribeInstance", - "connect:ListInstanceAttributes", - "ds:DescribeDirectories" - ] - }, - "update": { - "permissions": [ - "connect:ListInstanceAttributes", - "connect:UpdateInstanceAttribute", - "iam:CreateServiceLinkedRole", - "iam:PutRolePolicy", - "connect:TagResource", - "connect:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "An instanceArn is automatically generated on creation based on instanceId.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Attributes": { - "$ref": "#/definitions/Attributes", - "description": "The attributes for the instance." - }, - "CreatedTime": { - "description": "Timestamp of instance creation logged as part of instance creation.", - "format": "date-time", - "type": "string" - }, - "DirectoryId": { - "description": "Existing directoryId user wants to map to the new Connect instance.", - "maxLength": 12, - "minLength": 12, - "pattern": "^d-[0-9a-f]{10}$", - "type": "string" - }, - "Id": { - "description": "An instanceId is automatically generated on creation and assigned as the unique identifier.", - "type": "string" - }, - "IdentityManagementType": { - "description": "Specifies the type of directory integration for new instance.", - "enum": [ - "SAML", - "CONNECT_MANAGED", - "EXISTING_DIRECTORY" - ], - "type": "string" - }, - "InstanceAlias": { - "description": "Alias of the new directory created as part of new instance creation.", - "maxLength": 62, - "minLength": 1, - "pattern": "^(?!d-)([\\da-zA-Z]+)([-]*[\\da-zA-Z])*$", - "type": "string" - }, - "InstanceStatus": { - "description": "Specifies the creation status of new instance.", - "enum": [ - "CREATION_IN_PROGRESS", - "CREATION_FAILED", - "ACTIVE" - ], - "type": "string" - }, - "ServiceRole": { - "description": "Service linked role created as part of instance creation.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/ServiceRole", - "/properties/CreatedTime", - "/properties/InstanceStatus" - ], - "required": [ - "IdentityManagementType", - "Attributes" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::Instance", - "writeOnlyProperties": [ - "/properties/DirectoryId" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DirectoryId", + "/properties/InstanceAlias", + "/properties/IdentityManagementType" + ], + "definitions": { + "Attributes": { + "additionalProperties": false, + "properties": { + "AutoResolveBestVoices": { + "$ref": "#/definitions/AutoResolveBestVoices" + }, + "ContactLens": { + "$ref": "#/definitions/ContactLens" + }, + "ContactflowLogs": { + "$ref": "#/definitions/ContactflowLogs" + }, + "EarlyMedia": { + "$ref": "#/definitions/EarlyMedia" + }, + "InboundCalls": { + "$ref": "#/definitions/InboundCalls" + }, + "OutboundCalls": { + "$ref": "#/definitions/OutboundCalls" + }, + "UseCustomTTSVoices": { + "$ref": "#/definitions/UseCustomTTSVoices" + } + }, + "required": [ + "InboundCalls", + "OutboundCalls" + ], + "type": "object" + }, + "AutoResolveBestVoices": { + "description": "Boolean flag which enables AUTO_RESOLVE_BEST_VOICES on an instance.", + "type": "boolean" + }, + "ContactLens": { + "description": "Boolean flag which enables CONTACT_LENS on an instance.", + "type": "boolean" + }, + "ContactflowLogs": { + "description": "Boolean flag which enables CONTACTFLOW_LOGS on an instance.", + "type": "boolean" + }, + "EarlyMedia": { + "description": "Boolean flag which enables EARLY_MEDIA on an instance.", + "type": "boolean" + }, + "InboundCalls": { + "description": "Mandatory element which enables inbound calls on new instance.", + "type": "boolean" + }, + "OutboundCalls": { + "description": "Mandatory element which enables outbound calls on new instance.", + "type": "boolean" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UseCustomTTSVoices": { + "description": "Boolean flag which enables USE_CUSTOM_TTS_VOICES on an instance.", + "type": "boolean" + } + }, + "description": "Resource Type definition for AWS::Connect::Instance", + "handlers": { + "create": { + "permissions": [ + "connect:CreateInstance", + "connect:DescribeInstance", + "connect:UpdateInstanceAttribute", + "connect:TagResource", + "ds:CheckAlias", + "ds:CreateAlias", + "ds:AuthorizeApplication", + "ds:UnauthorizeApplication", + "ds:CreateIdentityPoolDirectory", + "ds:CreateDirectory", + "ds:DescribeDirectories", + "iam:CreateServiceLinkedRole", + "iam:PutRolePolicy", + "logs:CreateLogGroup" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteInstance", + "connect:DescribeInstance", + "connect:UntagResource", + "ds:DeleteDirectory", + "ds:UnauthorizeApplication", + "ds:DescribeDirectories" + ] + }, + "list": { + "permissions": [ + "connect:ListInstances", + "connect:ListInstanceAttributes", + "ds:DescribeDirectories" + ] + }, + "read": { + "permissions": [ + "connect:DescribeInstance", + "connect:ListInstanceAttributes", + "ds:DescribeDirectories" + ] + }, + "update": { + "permissions": [ + "connect:ListInstanceAttributes", + "connect:UpdateInstanceAttribute", + "iam:CreateServiceLinkedRole", + "iam:PutRolePolicy", + "connect:TagResource", + "connect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "An instanceArn is automatically generated on creation based on instanceId.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Attributes": { + "$ref": "#/definitions/Attributes", + "description": "The attributes for the instance." + }, + "CreatedTime": { + "description": "Timestamp of instance creation logged as part of instance creation.", + "format": "date-time", + "type": "string" + }, + "DirectoryId": { + "description": "Existing directoryId user wants to map to the new Connect instance.", + "maxLength": 12, + "minLength": 12, + "pattern": "^d-[0-9a-f]{10}$", + "type": "string" + }, + "Id": { + "description": "An instanceId is automatically generated on creation and assigned as the unique identifier.", + "type": "string" + }, + "IdentityManagementType": { + "description": "Specifies the type of directory integration for new instance.", + "enum": [ + "SAML", + "CONNECT_MANAGED", + "EXISTING_DIRECTORY" + ], + "type": "string" + }, + "InstanceAlias": { + "description": "Alias of the new directory created as part of new instance creation.", + "maxLength": 62, + "minLength": 1, + "pattern": "^(?!d-)([\\da-zA-Z]+)([-]*[\\da-zA-Z])*$", + "type": "string" + }, + "InstanceStatus": { + "description": "Specifies the creation status of new instance.", + "enum": [ + "CREATION_IN_PROGRESS", + "CREATION_FAILED", + "ACTIVE" + ], + "type": "string" + }, + "ServiceRole": { + "description": "Service linked role created as part of instance creation.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/ServiceRole", + "/properties/CreatedTime", + "/properties/InstanceStatus" + ], + "required": [ + "IdentityManagementType", + "Attributes" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "connect:ListTagsForResource", + "connect:UntagResource", + "connect:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::Instance", + "writeOnlyProperties": [ + "/properties/DirectoryId" + ] +} diff --git a/src/schema/aws-connect-instancestorageconfig.json b/src/schema/aws-connect-instancestorageconfig.json index d8dc796e..04bb7344 100644 --- a/src/schema/aws-connect-instancestorageconfig.json +++ b/src/schema/aws-connect-instancestorageconfig.json @@ -1,262 +1,262 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceArn", - "/properties/ResourceType" - ], - "definitions": { - "AssociationId": { - "description": "An associationID is automatically generated when a storage config is associated with an instance", - "maxLength": 100, - "minLength": 1, - "pattern": "^[-a-z0-9]*$", - "type": "string" - }, - "BucketName": { - "description": "A name for the S3 Bucket", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "EncryptionConfig": { - "additionalProperties": false, - "properties": { - "EncryptionType": { - "$ref": "#/definitions/EncryptionType" - }, - "KeyId": { - "$ref": "#/definitions/KeyId" - } - }, - "required": [ - "EncryptionType", - "KeyId" - ], - "type": "object" - }, - "EncryptionType": { - "description": "Specifies default encryption using AWS KMS-Managed Keys", - "enum": [ - "KMS" - ], - "type": "string" - }, - "FirehoseDeliveryStreamArn": { - "description": "An ARN is a unique AWS resource identifier.", - "pattern": "^arn:aws[-a-z0-9]*:firehose:[-a-z0-9]*:[0-9]{12}:deliverystream/[-a-zA-Z0-9_.]*$", - "type": "string" - }, - "Hours": { - "description": "Number of hours", - "type": "number" - }, - "InstanceStorageResourceType": { - "description": "Specifies the type of storage resource available for the instance", - "enum": [ - "CHAT_TRANSCRIPTS", - "CALL_RECORDINGS", - "SCHEDULED_REPORTS", - "MEDIA_STREAMS", - "CONTACT_TRACE_RECORDS", - "AGENT_EVENTS" - ], - "type": "string" - }, - "KeyId": { - "description": "Specifies the encryption key id", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "KinesisFirehoseConfig": { - "additionalProperties": false, - "properties": { - "FirehoseArn": { - "$ref": "#/definitions/FirehoseDeliveryStreamArn" - } - }, - "required": [ - "FirehoseArn" - ], - "type": "object" - }, - "KinesisStreamArn": { - "description": "An ARN is a unique AWS resource identifier.", - "pattern": "^arn:aws[-a-z0-9]*:kinesis:[-a-z0-9]*:[0-9]{12}:stream/[-a-zA-Z0-9_.]*$", - "type": "string" - }, - "KinesisStreamConfig": { - "additionalProperties": false, - "properties": { - "StreamArn": { - "$ref": "#/definitions/KinesisStreamArn" - } - }, - "required": [ - "StreamArn" - ], - "type": "object" - }, - "KinesisVideoStreamConfig": { - "additionalProperties": false, - "properties": { - "EncryptionConfig": { - "$ref": "#/definitions/EncryptionConfig" - }, - "Prefix": { - "$ref": "#/definitions/Prefix" - }, - "RetentionPeriodHours": { - "$ref": "#/definitions/Hours" - } - }, - "required": [ - "Prefix", - "RetentionPeriodHours", - "EncryptionConfig" - ], - "type": "object" - }, - "Prefix": { - "description": "Prefixes are used to infer logical hierarchy", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "S3Config": { - "additionalProperties": false, - "properties": { - "BucketName": { - "$ref": "#/definitions/BucketName" - }, - "BucketPrefix": { - "$ref": "#/definitions/Prefix" - }, - "EncryptionConfig": { - "$ref": "#/definitions/EncryptionConfig" - } - }, - "required": [ - "BucketName", - "BucketPrefix" - ], - "type": "object" - }, - "StorageType": { - "description": "Specifies the storage type to be associated with the instance", - "enum": [ - "S3", - "KINESIS_VIDEO_STREAM", - "KINESIS_STREAM", - "KINESIS_FIREHOSE" - ], - "type": "string" - } - }, - "description": "Resource Type definition for AWS::Connect::InstanceStorageConfig", - "handlers": { - "create": { - "permissions": [ - "connect:AssociateInstanceStorageConfig", - "connect:DescribeInstance", - "ds:DescribeDirectories", - "s3:GetBucketAcl", - "s3:GetBucketLocation", - "iam:PutRolePolicy", - "kinesis:DescribeStream", - "kms:DescribeKey", - "kms:CreateGrant", - "firehose:DescribeDeliveryStream" - ] - }, - "delete": { - "permissions": [ - "connect:DisassociateInstanceStorageConfig", - "connect:DescribeInstance", - "s3:GetBucketAcl", - "s3:GetBucketLocation", - "kms:RetireGrant" - ] - }, - "list": { - "permissions": [ - "connect:DescribeInstance", - "connect:ListInstanceStorageConfigs", - "ds:DescribeDirectories" - ] - }, - "read": { - "permissions": [ - "connect:DescribeInstanceStorageConfig", - "connect:ListInstanceStorageConfigs", - "connect:DescribeInstance", - "ds:DescribeDirectories", - "s3:GetBucketAcl", - "s3:GetBucketLocation" - ] - }, - "update": { - "permissions": [ - "connect:UpdateInstanceStorageConfig", - "ds:DescribeDirectories", - "s3:GetBucketAcl", - "s3:GetBucketLocation", - "kinesis:DescribeStream", - "iam:PutRolePolicy", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:RetireGrant", - "firehose:DescribeDeliveryStream" - ] - } - }, - "primaryIdentifier": [ - "/properties/InstanceArn", - "/properties/AssociationId", - "/properties/ResourceType" - ], - "properties": { - "AssociationId": { - "$ref": "#/definitions/AssociationId" - }, - "InstanceArn": { - "description": "Connect Instance ID with which the storage config will be associated", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "KinesisFirehoseConfig": { - "$ref": "#/definitions/KinesisFirehoseConfig" - }, - "KinesisStreamConfig": { - "$ref": "#/definitions/KinesisStreamConfig" - }, - "KinesisVideoStreamConfig": { - "$ref": "#/definitions/KinesisVideoStreamConfig" - }, - "ResourceType": { - "$ref": "#/definitions/InstanceStorageResourceType" - }, - "S3Config": { - "$ref": "#/definitions/S3Config" - }, - "StorageType": { - "$ref": "#/definitions/StorageType" - } - }, - "readOnlyProperties": [ - "/properties/AssociationId" - ], - "required": [ - "InstanceArn", - "ResourceType", - "StorageType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Connect::InstanceStorageConfig" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceArn", + "/properties/ResourceType" + ], + "definitions": { + "AssociationId": { + "description": "An associationID is automatically generated when a storage config is associated with an instance", + "maxLength": 100, + "minLength": 1, + "pattern": "^[-a-z0-9]*$", + "type": "string" + }, + "BucketName": { + "description": "A name for the S3 Bucket", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "EncryptionConfig": { + "additionalProperties": false, + "properties": { + "EncryptionType": { + "$ref": "#/definitions/EncryptionType" + }, + "KeyId": { + "$ref": "#/definitions/KeyId" + } + }, + "required": [ + "EncryptionType", + "KeyId" + ], + "type": "object" + }, + "EncryptionType": { + "description": "Specifies default encryption using AWS KMS-Managed Keys", + "enum": [ + "KMS" + ], + "type": "string" + }, + "FirehoseDeliveryStreamArn": { + "description": "An ARN is a unique AWS resource identifier.", + "pattern": "^arn:aws[-a-z0-9]*:firehose:[-a-z0-9]*:[0-9]{12}:deliverystream/[-a-zA-Z0-9_.]*$", + "type": "string" + }, + "Hours": { + "description": "Number of hours", + "type": "number" + }, + "InstanceStorageResourceType": { + "description": "Specifies the type of storage resource available for the instance", + "enum": [ + "CHAT_TRANSCRIPTS", + "CALL_RECORDINGS", + "SCHEDULED_REPORTS", + "MEDIA_STREAMS", + "CONTACT_TRACE_RECORDS", + "AGENT_EVENTS" + ], + "type": "string" + }, + "KeyId": { + "description": "Specifies the encryption key id", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "KinesisFirehoseConfig": { + "additionalProperties": false, + "properties": { + "FirehoseArn": { + "$ref": "#/definitions/FirehoseDeliveryStreamArn" + } + }, + "required": [ + "FirehoseArn" + ], + "type": "object" + }, + "KinesisStreamArn": { + "description": "An ARN is a unique AWS resource identifier.", + "pattern": "^arn:aws[-a-z0-9]*:kinesis:[-a-z0-9]*:[0-9]{12}:stream/[-a-zA-Z0-9_.]*$", + "type": "string" + }, + "KinesisStreamConfig": { + "additionalProperties": false, + "properties": { + "StreamArn": { + "$ref": "#/definitions/KinesisStreamArn" + } + }, + "required": [ + "StreamArn" + ], + "type": "object" + }, + "KinesisVideoStreamConfig": { + "additionalProperties": false, + "properties": { + "EncryptionConfig": { + "$ref": "#/definitions/EncryptionConfig" + }, + "Prefix": { + "$ref": "#/definitions/Prefix" + }, + "RetentionPeriodHours": { + "$ref": "#/definitions/Hours" + } + }, + "required": [ + "Prefix", + "RetentionPeriodHours", + "EncryptionConfig" + ], + "type": "object" + }, + "Prefix": { + "description": "Prefixes are used to infer logical hierarchy", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "S3Config": { + "additionalProperties": false, + "properties": { + "BucketName": { + "$ref": "#/definitions/BucketName" + }, + "BucketPrefix": { + "$ref": "#/definitions/Prefix" + }, + "EncryptionConfig": { + "$ref": "#/definitions/EncryptionConfig" + } + }, + "required": [ + "BucketName", + "BucketPrefix" + ], + "type": "object" + }, + "StorageType": { + "description": "Specifies the storage type to be associated with the instance", + "enum": [ + "S3", + "KINESIS_VIDEO_STREAM", + "KINESIS_STREAM", + "KINESIS_FIREHOSE" + ], + "type": "string" + } + }, + "description": "Resource Type definition for AWS::Connect::InstanceStorageConfig", + "handlers": { + "create": { + "permissions": [ + "connect:AssociateInstanceStorageConfig", + "connect:DescribeInstance", + "ds:DescribeDirectories", + "s3:GetBucketAcl", + "s3:GetBucketLocation", + "iam:PutRolePolicy", + "kinesis:DescribeStream", + "kms:DescribeKey", + "kms:CreateGrant", + "firehose:DescribeDeliveryStream" + ] + }, + "delete": { + "permissions": [ + "connect:DisassociateInstanceStorageConfig", + "connect:DescribeInstance", + "s3:GetBucketAcl", + "s3:GetBucketLocation", + "kms:RetireGrant" + ] + }, + "list": { + "permissions": [ + "connect:DescribeInstance", + "connect:ListInstanceStorageConfigs", + "ds:DescribeDirectories" + ] + }, + "read": { + "permissions": [ + "connect:DescribeInstanceStorageConfig", + "connect:ListInstanceStorageConfigs", + "connect:DescribeInstance", + "ds:DescribeDirectories", + "s3:GetBucketAcl", + "s3:GetBucketLocation" + ] + }, + "update": { + "permissions": [ + "connect:UpdateInstanceStorageConfig", + "ds:DescribeDirectories", + "s3:GetBucketAcl", + "s3:GetBucketLocation", + "kinesis:DescribeStream", + "iam:PutRolePolicy", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:RetireGrant", + "firehose:DescribeDeliveryStream" + ] + } + }, + "primaryIdentifier": [ + "/properties/InstanceArn", + "/properties/AssociationId", + "/properties/ResourceType" + ], + "properties": { + "AssociationId": { + "$ref": "#/definitions/AssociationId" + }, + "InstanceArn": { + "description": "Connect Instance ID with which the storage config will be associated", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "KinesisFirehoseConfig": { + "$ref": "#/definitions/KinesisFirehoseConfig" + }, + "KinesisStreamConfig": { + "$ref": "#/definitions/KinesisStreamConfig" + }, + "KinesisVideoStreamConfig": { + "$ref": "#/definitions/KinesisVideoStreamConfig" + }, + "ResourceType": { + "$ref": "#/definitions/InstanceStorageResourceType" + }, + "S3Config": { + "$ref": "#/definitions/S3Config" + }, + "StorageType": { + "$ref": "#/definitions/StorageType" + } + }, + "readOnlyProperties": [ + "/properties/AssociationId" + ], + "required": [ + "InstanceArn", + "ResourceType", + "StorageType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Connect::InstanceStorageConfig" +} diff --git a/src/schema/aws-connect-integrationassociation.json b/src/schema/aws-connect-integrationassociation.json index bfe0dc2c..26a06247 100644 --- a/src/schema/aws-connect-integrationassociation.json +++ b/src/schema/aws-connect-integrationassociation.json @@ -1,159 +1,159 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceId", - "/properties/IntegrationArn", - "/properties/IntegrationType" - ], - "definitions": { - "InstanceId": { - "description": "Amazon Connect instance identifier", - "maxLength": 100, - "minLength": 1, - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "IntegrationArn": { - "description": "ARN of Integration being associated with the instance", - "maxLength": 140, - "minLength": 1, - "type": "string" - }, - "IntegrationAssociationId": { - "description": "Identifier of the association with Connect Instance", - "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9])*$", - "type": "string" - }, - "IntegrationType": { - "description": "Specifies the integration type to be associated with the instance", - "enum": [ - "LEX_BOT", - "LAMBDA_FUNCTION", - "APPLICATION" - ], - "type": "string" - } - }, - "description": "Resource Type definition for AWS::Connect::IntegrationAssociation", - "handlers": { - "create": { - "permissions": [ - "connect:DescribeInstance", - "ds:DescribeDirectories", - "app-integrations:CreateEventIntegrationAssociation", - "mobiletargeting:GetApp", - "cases:GetDomain", - "wisdom:GetAssistant", - "wisdom:GetKnowledgeBase", - "wisdom:TagResource", - "voiceid:DescribeDomain", - "events:PutTargets", - "events:PutRule", - "connect:AssociateBot", - "connect:AssociateLambdaFunction", - "connect:CreateIntegrationAssociation", - "connect:ListBots", - "connect:ListLambdaFunctions", - "connect:ListIntegrationAssociations", - "lambda:addPermission", - "lex:GetBot", - "lex:DescribeBotAlias", - "lex:CreateResourcePolicy", - "lex:UpdateResourcePolicy", - "lex:CreateResourcePolicyStatement", - "lambda:AddPermission", - "app-integrations:GetApplication", - "app-integrations:CreateApplicationAssociation", - "iam:AttachRolePolicy", - "iam:CreateServiceLinkedRole", - "iam:GetRolePolicy", - "iam:PutRolePolicy" - ] - }, - "delete": { - "permissions": [ - "connect:DescribeInstance", - "ds:DescribeDirectories", - "app-integrations:DeleteEventIntegrationAssociation", - "app-integrations:DeleteApplicationAssociation", - "events:ListTargetsByRule", - "events:RemoveTargets", - "events:DeleteRule", - "connect:DisassociateBot", - "connect:DisassociateLambdaFunction", - "connect:DeleteIntegrationAssociation", - "connect:ListBots", - "connect:ListLambdaFunctions", - "connect:ListIntegrationAssociations", - "lex:DeleteResourcePolicy", - "lex:DeleteResourcePolicyStatement", - "lambda:RemovePermission", - "iam:GetRolePolicy", - "iam:DeleteRolePolicy", - "iam:PutRolePolicy" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceId": { - "$ref": "resource-schema.json#/properties/InstanceId" - } - }, - "required": [ - "InstanceId" - ] - }, - "permissions": [ - "connect:ListBots", - "connect:ListLambdaFunctions", - "connect:ListIntegrationAssociations" - ] - }, - "read": { - "permissions": [ - "connect:ListBots", - "connect:ListLambdaFunctions", - "connect:ListIntegrationAssociations" - ] - }, - "update": { - "permissions": [] - } - }, - "primaryIdentifier": [ - "/properties/InstanceId", - "/properties/IntegrationType", - "/properties/IntegrationArn" - ], - "properties": { - "InstanceId": { - "$ref": "#/definitions/InstanceId" - }, - "IntegrationArn": { - "$ref": "#/definitions/IntegrationArn" - }, - "IntegrationAssociationId": { - "$ref": "#/definitions/IntegrationAssociationId" - }, - "IntegrationType": { - "$ref": "#/definitions/IntegrationType" - } - }, - "readOnlyProperties": [ - "/properties/IntegrationAssociationId" - ], - "required": [ - "InstanceId", - "IntegrationType", - "IntegrationArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Connect::IntegrationAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceId", + "/properties/IntegrationArn", + "/properties/IntegrationType" + ], + "definitions": { + "InstanceId": { + "description": "Amazon Connect instance identifier", + "maxLength": 100, + "minLength": 1, + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "IntegrationArn": { + "description": "ARN of Integration being associated with the instance", + "maxLength": 140, + "minLength": 1, + "type": "string" + }, + "IntegrationAssociationId": { + "description": "Identifier of the association with Connect Instance", + "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9])*$", + "type": "string" + }, + "IntegrationType": { + "description": "Specifies the integration type to be associated with the instance", + "enum": [ + "LEX_BOT", + "LAMBDA_FUNCTION", + "APPLICATION" + ], + "type": "string" + } + }, + "description": "Resource Type definition for AWS::Connect::IntegrationAssociation", + "handlers": { + "create": { + "permissions": [ + "connect:DescribeInstance", + "ds:DescribeDirectories", + "app-integrations:CreateEventIntegrationAssociation", + "mobiletargeting:GetApp", + "cases:GetDomain", + "wisdom:GetAssistant", + "wisdom:GetKnowledgeBase", + "wisdom:TagResource", + "voiceid:DescribeDomain", + "events:PutTargets", + "events:PutRule", + "connect:AssociateBot", + "connect:AssociateLambdaFunction", + "connect:CreateIntegrationAssociation", + "connect:ListBots", + "connect:ListLambdaFunctions", + "connect:ListIntegrationAssociations", + "lambda:addPermission", + "lex:GetBot", + "lex:DescribeBotAlias", + "lex:CreateResourcePolicy", + "lex:UpdateResourcePolicy", + "lex:CreateResourcePolicyStatement", + "lambda:AddPermission", + "app-integrations:GetApplication", + "app-integrations:CreateApplicationAssociation", + "iam:AttachRolePolicy", + "iam:CreateServiceLinkedRole", + "iam:GetRolePolicy", + "iam:PutRolePolicy" + ] + }, + "delete": { + "permissions": [ + "connect:DescribeInstance", + "ds:DescribeDirectories", + "app-integrations:DeleteEventIntegrationAssociation", + "app-integrations:DeleteApplicationAssociation", + "events:ListTargetsByRule", + "events:RemoveTargets", + "events:DeleteRule", + "connect:DisassociateBot", + "connect:DisassociateLambdaFunction", + "connect:DeleteIntegrationAssociation", + "connect:ListBots", + "connect:ListLambdaFunctions", + "connect:ListIntegrationAssociations", + "lex:DeleteResourcePolicy", + "lex:DeleteResourcePolicyStatement", + "lambda:RemovePermission", + "iam:GetRolePolicy", + "iam:DeleteRolePolicy", + "iam:PutRolePolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceId": { + "$ref": "resource-schema.json#/properties/InstanceId" + } + }, + "required": [ + "InstanceId" + ] + }, + "permissions": [ + "connect:ListBots", + "connect:ListLambdaFunctions", + "connect:ListIntegrationAssociations" + ] + }, + "read": { + "permissions": [ + "connect:ListBots", + "connect:ListLambdaFunctions", + "connect:ListIntegrationAssociations" + ] + }, + "update": { + "permissions": [] + } + }, + "primaryIdentifier": [ + "/properties/InstanceId", + "/properties/IntegrationType", + "/properties/IntegrationArn" + ], + "properties": { + "InstanceId": { + "$ref": "#/definitions/InstanceId" + }, + "IntegrationArn": { + "$ref": "#/definitions/IntegrationArn" + }, + "IntegrationAssociationId": { + "$ref": "#/definitions/IntegrationAssociationId" + }, + "IntegrationType": { + "$ref": "#/definitions/IntegrationType" + } + }, + "readOnlyProperties": [ + "/properties/IntegrationAssociationId" + ], + "required": [ + "InstanceId", + "IntegrationType", + "IntegrationArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Connect::IntegrationAssociation" +} diff --git a/src/schema/aws-connect-phonenumber.json b/src/schema/aws-connect-phonenumber.json index 776bc1dd..ccd2864d 100644 --- a/src/schema/aws-connect-phonenumber.json +++ b/src/schema/aws-connect-phonenumber.json @@ -1,160 +1,162 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Type", - "/properties/CountryCode", - "/properties/Prefix", - "/properties/SourcePhoneNumberArn" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Connect::PhoneNumber", - "handlers": { - "create": { - "permissions": [ - "connect:ClaimPhoneNumber", - "connect:SearchAvailablePhoneNumbers", - "connect:DescribePhoneNumber", - "connect:TagResource", - "connect:ImportPhoneNumber", - "sms-voice:DescribePhoneNumbers" - ] - }, - "delete": { - "permissions": [ - "connect:ReleasePhoneNumber", - "connect:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "TargetArn": { - "$ref": "resource-schema.json#/properties/TargetArn" - } - }, - "required": [ - "TargetArn" - ] - }, - "permissions": [ - "connect:ListPhoneNumbersV2" - ] - }, - "read": { - "permissions": [ - "connect:DescribePhoneNumber" - ] - }, - "update": { - "permissions": [ - "connect:UpdatePhoneNumber", - "connect:UpdatePhoneNumberMetadata", - "connect:DescribePhoneNumber", - "connect:TagResource", - "connect:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/PhoneNumberArn" - ], - "properties": { - "Address": { - "description": "The phone number e164 address.", - "pattern": "^\\+[0-9]{2,15}", - "type": "string" - }, - "CountryCode": { - "description": "The phone number country code.", - "pattern": "^[A-Z]{2}", - "type": "string" - }, - "Description": { - "description": "The description of the phone number.", - "maxLength": 500, - "minLength": 1, - "type": "string" - }, - "PhoneNumberArn": { - "description": "The phone number ARN", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:phone-number/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Prefix": { - "description": "The phone number prefix.", - "pattern": "^\\+[0-9]{1,15}", - "type": "string" - }, - "SourcePhoneNumberArn": { - "description": "The source phone number arn.", - "type": "string" - }, - "Tags": { - "description": "One or more tags.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "TargetArn": { - "description": "The ARN of the target the phone number is claimed to.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:(instance|traffic-distribution-group)/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Type": { - "description": "The phone number type", - "pattern": "TOLL_FREE|DID|UIFN|SHARED|THIRD_PARTY_DID|THIRD_PARTY_TF|SHORT_CODE", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/PhoneNumberArn", - "/properties/Address" - ], - "required": [ - "TargetArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "connect:UntagResource", - "connect:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::PhoneNumber", - "writeOnlyProperties": [ - "/properties/Prefix" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/CountryCode", + "/properties/Prefix", + "/properties/SourcePhoneNumberArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Connect::PhoneNumber", + "handlers": { + "create": { + "permissions": [ + "connect:ClaimPhoneNumber", + "connect:SearchAvailablePhoneNumbers", + "connect:DescribePhoneNumber", + "connect:TagResource", + "connect:ImportPhoneNumber", + "sms-voice:DescribePhoneNumbers", + "social-messaging:GetLinkedWhatsAppBusinessAccountPhoneNumber", + "social-messaging:TagResource" + ] + }, + "delete": { + "permissions": [ + "connect:ReleasePhoneNumber", + "connect:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TargetArn": { + "$ref": "resource-schema.json#/properties/TargetArn" + } + }, + "required": [ + "TargetArn" + ] + }, + "permissions": [ + "connect:ListPhoneNumbersV2" + ] + }, + "read": { + "permissions": [ + "connect:DescribePhoneNumber" + ] + }, + "update": { + "permissions": [ + "connect:UpdatePhoneNumber", + "connect:UpdatePhoneNumberMetadata", + "connect:DescribePhoneNumber", + "connect:TagResource", + "connect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/PhoneNumberArn" + ], + "properties": { + "Address": { + "description": "The phone number e164 address.", + "pattern": "^\\+[0-9]{2,15}", + "type": "string" + }, + "CountryCode": { + "description": "The phone number country code.", + "pattern": "^[A-Z]{2}", + "type": "string" + }, + "Description": { + "description": "The description of the phone number.", + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "PhoneNumberArn": { + "description": "The phone number ARN", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:phone-number/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Prefix": { + "description": "The phone number prefix.", + "pattern": "^\\+[0-9]{1,15}", + "type": "string" + }, + "SourcePhoneNumberArn": { + "description": "The source phone number arn.", + "type": "string" + }, + "Tags": { + "description": "One or more tags.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "TargetArn": { + "description": "The ARN of the target the phone number is claimed to.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:(instance|traffic-distribution-group)/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Type": { + "description": "The phone number type", + "pattern": "TOLL_FREE|DID|UIFN|SHARED|THIRD_PARTY_DID|THIRD_PARTY_TF|SHORT_CODE", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/PhoneNumberArn", + "/properties/Address" + ], + "required": [ + "TargetArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "connect:UntagResource", + "connect:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::PhoneNumber", + "writeOnlyProperties": [ + "/properties/Prefix" + ] +} diff --git a/src/schema/aws-connect-predefinedattribute.json b/src/schema/aws-connect-predefinedattribute.json index ba6020cc..708e68d2 100644 --- a/src/schema/aws-connect-predefinedattribute.json +++ b/src/schema/aws-connect-predefinedattribute.json @@ -1,113 +1,113 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceArn", - "/properties/Name" - ], - "definitions": { - "StringList": { - "description": "Predefined attribute values of type string list.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Value" - }, - "maxItems": 128, - "minItems": 1, - "type": "array" - }, - "Value": { - "description": "Textual or numeric value that describes an attribute.", - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "description": "Resource Type definition for AWS::Connect::PredefinedAttribute", - "handlers": { - "create": { - "permissions": [ - "connect:CreatePredefinedAttribute" - ] - }, - "delete": { - "permissions": [ - "connect:DeletePredefinedAttribute" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceArn": { - "$ref": "resource-schema.json#/properties/InstanceArn" - } - }, - "required": [ - "InstanceArn" - ] - }, - "permissions": [ - "connect:ListPredefinedAttributes" - ] - }, - "read": { - "permissions": [ - "connect:DescribePredefinedAttribute" - ] - }, - "update": { - "permissions": [ - "connect:UpdatePredefinedAttribute" - ] - } - }, - "primaryIdentifier": [ - "/properties/InstanceArn", - "/properties/Name" - ], - "properties": { - "InstanceArn": { - "description": "The identifier of the Amazon Connect instance.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "LastModifiedRegion": { - "description": "Last modified region.", - "pattern": "[a-z]{2}(-[a-z]+){1,2}(-[0-9])?", - "type": "string" - }, - "LastModifiedTime": { - "description": "Last modified time.", - "type": "number" - }, - "Name": { - "description": "The name of the predefined attribute.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Values": { - "additionalProperties": false, - "description": "The values of a predefined attribute.", - "properties": { - "StringList": { - "$ref": "#/definitions/StringList" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/LastModifiedRegion", - "/properties/LastModifiedTime" - ], - "required": [ - "InstanceArn", - "Name", - "Values" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Connect::PredefinedAttribute" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceArn", + "/properties/Name" + ], + "definitions": { + "StringList": { + "description": "Predefined attribute values of type string list.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Value" + }, + "maxItems": 128, + "minItems": 1, + "type": "array" + }, + "Value": { + "description": "Textual or numeric value that describes an attribute.", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "description": "Resource Type definition for AWS::Connect::PredefinedAttribute", + "handlers": { + "create": { + "permissions": [ + "connect:CreatePredefinedAttribute" + ] + }, + "delete": { + "permissions": [ + "connect:DeletePredefinedAttribute" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "connect:ListPredefinedAttributes" + ] + }, + "read": { + "permissions": [ + "connect:DescribePredefinedAttribute" + ] + }, + "update": { + "permissions": [ + "connect:UpdatePredefinedAttribute" + ] + } + }, + "primaryIdentifier": [ + "/properties/InstanceArn", + "/properties/Name" + ], + "properties": { + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "LastModifiedRegion": { + "description": "Last modified region.", + "pattern": "[a-z]{2}(-[a-z]+){1,2}(-[0-9])?", + "type": "string" + }, + "LastModifiedTime": { + "description": "Last modified time.", + "type": "number" + }, + "Name": { + "description": "The name of the predefined attribute.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Values": { + "additionalProperties": false, + "description": "The values of a predefined attribute.", + "properties": { + "StringList": { + "$ref": "#/definitions/StringList" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/LastModifiedRegion", + "/properties/LastModifiedTime" + ], + "required": [ + "InstanceArn", + "Name", + "Values" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Connect::PredefinedAttribute" +} diff --git a/src/schema/aws-connect-prompt.json b/src/schema/aws-connect-prompt.json index a18cdacf..48f44622 100644 --- a/src/schema/aws-connect-prompt.json +++ b/src/schema/aws-connect-prompt.json @@ -1,134 +1,138 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Connect::Prompt", - "handlers": { - "create": { - "permissions": [ - "connect:CreatePrompt", - "connect:TagResource", - "s3:GetObject", - "kms:Decrypt", - "s3:GetObjectAcl" - ] - }, - "delete": { - "permissions": [ - "connect:DeletePrompt" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceArn": { - "$ref": "resource-schema.json#/properties/InstanceArn" - } - }, - "required": [ - "InstanceArn" - ] - }, - "permissions": [ - "connect:ListPrompts" - ] - }, - "read": { - "permissions": [ - "connect:DescribePrompt" - ] - }, - "update": { - "permissions": [ - "connect:UpdatePrompt", - "connect:TagResource", - "connect:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/PromptArn" - ], - "properties": { - "Description": { - "description": "The description of the prompt.", - "maxLength": 250, - "minLength": 1, - "type": "string" - }, - "InstanceArn": { - "description": "The identifier of the Amazon Connect instance.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Name": { - "description": "The name of the prompt.", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "PromptArn": { - "description": "The Amazon Resource Name (ARN) for the prompt.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/prompt/[-a-zA-Z0-9]*$", - "type": "string" - }, - "S3Uri": { - "description": "S3 URI of the customer's audio file for creating prompts resource..", - "maxLength": 2000, - "minLength": 1, - "pattern": "s3://\\S+/.+|https://\\S+\\.s3(\\.\\S+)?\\.amazonaws\\.com/\\S+", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/PromptArn" - ], - "required": [ - "InstanceArn", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::Prompt", - "writeOnlyProperties": [ - "/properties/S3Uri" - ] -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Connect::Prompt", + "handlers": { + "create": { + "permissions": [ + "connect:CreatePrompt", + "connect:TagResource", + "s3:GetObject", + "kms:Decrypt", + "s3:GetObjectAcl" + ] + }, + "delete": { + "permissions": [ + "connect:DeletePrompt" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "connect:ListPrompts" + ] + }, + "read": { + "permissions": [ + "connect:DescribePrompt" + ] + }, + "update": { + "permissions": [ + "connect:UpdatePrompt", + "connect:TagResource", + "connect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/PromptArn" + ], + "properties": { + "Description": { + "description": "The description of the prompt.", + "maxLength": 250, + "minLength": 1, + "type": "string" + }, + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Name": { + "description": "The name of the prompt.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "PromptArn": { + "description": "The Amazon Resource Name (ARN) for the prompt.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/prompt/[-a-zA-Z0-9]*$", + "type": "string" + }, + "S3Uri": { + "description": "S3 URI of the customer's audio file for creating prompts resource..", + "maxLength": 2000, + "minLength": 1, + "pattern": "s3://\\S+/.+|https://\\S+\\.s3(\\.\\S+)?\\.amazonaws\\.com/\\S+", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/PromptArn" + ], + "required": [ + "InstanceArn", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "connect:TagResource", + "connect:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::Prompt", + "writeOnlyProperties": [ + "/properties/S3Uri" + ] +} diff --git a/src/schema/aws-connect-queue.json b/src/schema/aws-connect-queue.json index 9d442cdc..fdbc0fc8 100644 --- a/src/schema/aws-connect-queue.json +++ b/src/schema/aws-connect-queue.json @@ -1,224 +1,242 @@ -{ - "additionalProperties": false, - "definitions": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "OutboundCallerConfig": { - "additionalProperties": false, - "description": "The outbound caller ID name, number, and outbound whisper flow.", - "properties": { - "OutboundCallerIdName": { - "$ref": "#/definitions/OutboundCallerIdName" - }, - "OutboundCallerIdNumberArn": { - "$ref": "#/definitions/OutboundCallerIdNumberArn" - }, - "OutboundFlowArn": { - "$ref": "#/definitions/OutboundFlowArn" - } - }, - "type": "object" - }, - "OutboundCallerIdName": { - "description": "The caller ID name.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "OutboundCallerIdNumberArn": { - "description": "The caller ID number.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:phone-number/[-a-zA-Z0-9]*$", - "type": "string" - }, - "OutboundFlowArn": { - "description": "The outbound whisper flow to be used during an outbound call.", - "maxLength": 500, - "minLength": 1, - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/contact-flow/[-a-zA-Z0-9]*$", - "type": "string" - }, - "QuickConnectArn": { - "description": "The Amazon Resource Name (ARN) for the quick connect.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/transfer-destination/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "$ref": "#/definitions/Key" - }, - "Value": { - "$ref": "#/definitions/Value" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "description": "Resource Type definition for AWS::Connect::Queue", - "handlers": { - "create": { - "permissions": [ - "connect:CreateQueue", - "connect:TagResource" - ] - }, - "delete": { - "permissions": [ - "connect:DeleteQueue", - "connect:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceArn": { - "$ref": "resource-schema.json#/properties/InstanceArn" - } - }, - "required": [ - "InstanceArn" - ] - }, - "permissions": [ - "connect:ListQueues", - "connect:ListQueueQuickConnects" - ] - }, - "read": { - "permissions": [ - "connect:DescribeQueue", - "connect:ListQueueQuickConnects" - ] - }, - "update": { - "permissions": [ - "connect:UpdateQueueHoursOfOperation", - "connect:UpdateQueueMaxContacts", - "connect:UpdateQueueName", - "connect:UpdateQueueOutboundCallerConfig", - "connect:UpdateQueueOutboundEmailConfig", - "connect:UpdateQueueStatus", - "connect:AssociateQueueQuickConnects", - "connect:DisassociateQueueQuickConnects", - "connect:TagResource", - "connect:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/QueueArn" - ], - "properties": { - "Description": { - "description": "The description of the queue.", - "maxLength": 250, - "minLength": 1, - "type": "string" - }, - "HoursOfOperationArn": { - "description": "The identifier for the hours of operation.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/operating-hours/[-a-zA-Z0-9]*$", - "type": "string" - }, - "InstanceArn": { - "description": "The identifier of the Amazon Connect instance.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "MaxContacts": { - "description": "The maximum number of contacts that can be in the queue before it is considered full.", - "minimum": 0, - "type": "integer" - }, - "Name": { - "description": "The name of the queue.", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "OutboundCallerConfig": { - "$ref": "#/definitions/OutboundCallerConfig", - "description": "The outbound caller ID name, number, and outbound whisper flow." - }, - "QueueArn": { - "description": "The Amazon Resource Name (ARN) for the queue.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/queue/[-a-zA-Z0-9]*$", - "type": "string" - }, - "QuickConnectArns": { - "description": "The quick connects available to agents who are working the queue.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/QuickConnectArn" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - }, - "Status": { - "description": "The status of the queue.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "Type": { - "description": "The type of queue.", - "enum": [ - "STANDARD", - "AGENT" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/QueueArn", - "/properties/Type" - ], - "required": [ - "InstanceArn", - "HoursOfOperationArn", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "connect:TagResource", - "connect:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::Queue" -} +{ + "additionalProperties": false, + "definitions": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "OutboundCallerConfig": { + "additionalProperties": false, + "description": "The outbound caller ID name, number, and outbound whisper flow.", + "properties": { + "OutboundCallerIdName": { + "$ref": "#/definitions/OutboundCallerIdName" + }, + "OutboundCallerIdNumberArn": { + "$ref": "#/definitions/OutboundCallerIdNumberArn" + }, + "OutboundFlowArn": { + "$ref": "#/definitions/OutboundFlowArn" + } + }, + "type": "object" + }, + "OutboundCallerIdName": { + "description": "The caller ID name.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "OutboundCallerIdNumberArn": { + "description": "The caller ID number.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:phone-number/[-a-zA-Z0-9]*$", + "type": "string" + }, + "OutboundEmailAddressId": { + "description": "The email address connect resource ID.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/email-address/[-a-zA-Z0-9]*$", + "type": "string" + }, + "OutboundEmailConfig": { + "additionalProperties": false, + "description": "The outbound email address ID.", + "properties": { + "OutboundEmailAddressId": { + "$ref": "#/definitions/OutboundEmailAddressId" + } + }, + "type": "object" + }, + "OutboundFlowArn": { + "description": "The outbound whisper flow to be used during an outbound call.", + "maxLength": 500, + "minLength": 1, + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/contact-flow/[-a-zA-Z0-9]*$", + "type": "string" + }, + "QuickConnectArn": { + "description": "The Amazon Resource Name (ARN) for the quick connect.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/transfer-destination/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "$ref": "#/definitions/Key" + }, + "Value": { + "$ref": "#/definitions/Value" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "description": "Resource Type definition for AWS::Connect::Queue", + "handlers": { + "create": { + "permissions": [ + "connect:CreateQueue", + "connect:TagResource" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteQueue", + "connect:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "connect:ListQueues", + "connect:ListQueueQuickConnects" + ] + }, + "read": { + "permissions": [ + "connect:DescribeQueue", + "connect:ListQueueQuickConnects" + ] + }, + "update": { + "permissions": [ + "connect:UpdateQueueHoursOfOperation", + "connect:UpdateQueueMaxContacts", + "connect:UpdateQueueName", + "connect:UpdateQueueOutboundCallerConfig", + "connect:UpdateQueueOutboundEmailConfig", + "connect:UpdateQueueStatus", + "connect:AssociateQueueQuickConnects", + "connect:DisassociateQueueQuickConnects", + "connect:TagResource", + "connect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/QueueArn" + ], + "properties": { + "Description": { + "description": "The description of the queue.", + "maxLength": 250, + "minLength": 1, + "type": "string" + }, + "HoursOfOperationArn": { + "description": "The identifier for the hours of operation.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/operating-hours/[-a-zA-Z0-9]*$", + "type": "string" + }, + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "MaxContacts": { + "description": "The maximum number of contacts that can be in the queue before it is considered full.", + "minimum": 0, + "type": "integer" + }, + "Name": { + "description": "The name of the queue.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "OutboundCallerConfig": { + "$ref": "#/definitions/OutboundCallerConfig", + "description": "The outbound caller ID name, number, and outbound whisper flow." + }, + "OutboundEmailConfig": { + "$ref": "#/definitions/OutboundEmailConfig", + "description": "The outbound email address ID." + }, + "QueueArn": { + "description": "The Amazon Resource Name (ARN) for the queue.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/queue/[-a-zA-Z0-9]*$", + "type": "string" + }, + "QuickConnectArns": { + "description": "The quick connects available to agents who are working the queue.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/QuickConnectArn" + }, + "minItems": 1, + "type": "array" + }, + "Status": { + "description": "The status of the queue.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "The type of queue.", + "enum": [ + "STANDARD", + "AGENT" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/QueueArn", + "/properties/Type" + ], + "required": [ + "InstanceArn", + "HoursOfOperationArn", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "connect:TagResource", + "connect:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::Queue" +} diff --git a/src/schema/aws-connect-quickconnect.json b/src/schema/aws-connect-quickconnect.json index 1005166e..d5dc0a0e 100644 --- a/src/schema/aws-connect-quickconnect.json +++ b/src/schema/aws-connect-quickconnect.json @@ -1,237 +1,241 @@ -{ - "additionalProperties": false, - "definitions": { - "ContactFlowArn": { - "description": "The identifier of the contact flow.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/contact-flow/[-a-zA-Z0-9]*$", - "type": "string" - }, - "PhoneNumber": { - "description": "The phone number in E.164 format.", - "pattern": "^\\+[1-9]\\d{1,14}$", - "type": "string" - }, - "PhoneNumberQuickConnectConfig": { - "additionalProperties": false, - "description": "The phone configuration. This is required only if QuickConnectType is PHONE_NUMBER.", - "properties": { - "PhoneNumber": { - "$ref": "#/definitions/PhoneNumber" - } - }, - "required": [ - "PhoneNumber" - ], - "type": "object" - }, - "QueueArn": { - "description": "The identifier for the queue.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/queue/[-a-zA-Z0-9]*$", - "type": "string" - }, - "QueueQuickConnectConfig": { - "additionalProperties": false, - "description": "The queue configuration. This is required only if QuickConnectType is QUEUE.", - "properties": { - "ContactFlowArn": { - "$ref": "#/definitions/ContactFlowArn" - }, - "QueueArn": { - "$ref": "#/definitions/QueueArn" - } - }, - "required": [ - "ContactFlowArn", - "QueueArn" - ], - "type": "object" - }, - "QuickConnectConfig": { - "additionalProperties": false, - "description": "Configuration settings for the quick connect.", - "properties": { - "PhoneConfig": { - "$ref": "#/definitions/PhoneNumberQuickConnectConfig" - }, - "QueueConfig": { - "$ref": "#/definitions/QueueQuickConnectConfig" - }, - "QuickConnectType": { - "$ref": "#/definitions/QuickConnectType" - }, - "UserConfig": { - "$ref": "#/definitions/UserQuickConnectConfig" - } - }, - "required": [ - "QuickConnectType" - ], - "type": "object" - }, - "QuickConnectType": { - "description": "The type of quick connect. In the Amazon Connect console, when you create a quick connect, you are prompted to assign one of the following types: Agent (USER), External (PHONE_NUMBER), or Queue (QUEUE).", - "enum": [ - "PHONE_NUMBER", - "QUEUE", - "USER" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is maximum of 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UserArn": { - "description": "The identifier of the user.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent/[-a-zA-Z0-9]*$", - "type": "string" - }, - "UserQuickConnectConfig": { - "additionalProperties": false, - "description": "The user configuration. This is required only if QuickConnectType is USER.", - "properties": { - "ContactFlowArn": { - "$ref": "#/definitions/ContactFlowArn" - }, - "UserArn": { - "$ref": "#/definitions/UserArn" - } - }, - "required": [ - "ContactFlowArn", - "UserArn" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Connect::QuickConnect", - "handlers": { - "create": { - "permissions": [ - "connect:CreateQuickConnect", - "connect:TagResource" - ] - }, - "delete": { - "permissions": [ - "connect:DeleteQuickConnect", - "connect:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceArn": { - "$ref": "resource-schema.json#/properties/InstanceArn" - } - }, - "required": [ - "InstanceArn" - ] - }, - "permissions": [ - "connect:ListQuickConnects" - ] - }, - "read": { - "permissions": [ - "connect:DescribeQuickConnect" - ] - }, - "update": { - "permissions": [ - "connect:UpdateQuickConnectName", - "connect:UpdateQuickConnectConfig", - "connect:TagResource", - "connect:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/QuickConnectArn" - ], - "properties": { - "Description": { - "description": "The description of the quick connect.", - "maxLength": 250, - "minLength": 1, - "type": "string" - }, - "InstanceArn": { - "description": "The identifier of the Amazon Connect instance.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Name": { - "description": "The name of the quick connect.", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "QuickConnectArn": { - "description": "The Amazon Resource Name (ARN) for the quick connect.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/transfer-destination/[-a-zA-Z0-9]*$", - "type": "string" - }, - "QuickConnectConfig": { - "$ref": "#/definitions/QuickConnectConfig", - "description": "Configuration settings for the quick connect." - }, - "QuickConnectType": { - "description": "The type of quick connect. In the Amazon Connect console, when you create a quick connect, you are prompted to assign one of the following types: Agent (USER), External (PHONE_NUMBER), or Queue (QUEUE).", - "enum": [ - "PHONE_NUMBER", - "QUEUE", - "USER" - ], - "type": "string" - }, - "Tags": { - "description": "One or more tags.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/QuickConnectArn", - "/properties/QuickConnectType" - ], - "required": [ - "Name", - "InstanceArn", - "QuickConnectConfig" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::QuickConnect" -} +{ + "additionalProperties": false, + "definitions": { + "ContactFlowArn": { + "description": "The identifier of the contact flow.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/contact-flow/[-a-zA-Z0-9]*$", + "type": "string" + }, + "PhoneNumber": { + "description": "The phone number in E.164 format.", + "pattern": "^\\+[1-9]\\d{1,14}$", + "type": "string" + }, + "PhoneNumberQuickConnectConfig": { + "additionalProperties": false, + "description": "The phone configuration. This is required only if QuickConnectType is PHONE_NUMBER.", + "properties": { + "PhoneNumber": { + "$ref": "#/definitions/PhoneNumber" + } + }, + "required": [ + "PhoneNumber" + ], + "type": "object" + }, + "QueueArn": { + "description": "The identifier for the queue.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/queue/[-a-zA-Z0-9]*$", + "type": "string" + }, + "QueueQuickConnectConfig": { + "additionalProperties": false, + "description": "The queue configuration. This is required only if QuickConnectType is QUEUE.", + "properties": { + "ContactFlowArn": { + "$ref": "#/definitions/ContactFlowArn" + }, + "QueueArn": { + "$ref": "#/definitions/QueueArn" + } + }, + "required": [ + "ContactFlowArn", + "QueueArn" + ], + "type": "object" + }, + "QuickConnectConfig": { + "additionalProperties": false, + "description": "Configuration settings for the quick connect.", + "properties": { + "PhoneConfig": { + "$ref": "#/definitions/PhoneNumberQuickConnectConfig" + }, + "QueueConfig": { + "$ref": "#/definitions/QueueQuickConnectConfig" + }, + "QuickConnectType": { + "$ref": "#/definitions/QuickConnectType" + }, + "UserConfig": { + "$ref": "#/definitions/UserQuickConnectConfig" + } + }, + "required": [ + "QuickConnectType" + ], + "type": "object" + }, + "QuickConnectType": { + "description": "The type of quick connect. In the Amazon Connect console, when you create a quick connect, you are prompted to assign one of the following types: Agent (USER), External (PHONE_NUMBER), or Queue (QUEUE).", + "enum": [ + "PHONE_NUMBER", + "QUEUE", + "USER" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is maximum of 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserArn": { + "description": "The identifier of the user.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent/[-a-zA-Z0-9]*$", + "type": "string" + }, + "UserQuickConnectConfig": { + "additionalProperties": false, + "description": "The user configuration. This is required only if QuickConnectType is USER.", + "properties": { + "ContactFlowArn": { + "$ref": "#/definitions/ContactFlowArn" + }, + "UserArn": { + "$ref": "#/definitions/UserArn" + } + }, + "required": [ + "ContactFlowArn", + "UserArn" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Connect::QuickConnect", + "handlers": { + "create": { + "permissions": [ + "connect:CreateQuickConnect", + "connect:TagResource" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteQuickConnect", + "connect:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "connect:ListQuickConnects" + ] + }, + "read": { + "permissions": [ + "connect:DescribeQuickConnect" + ] + }, + "update": { + "permissions": [ + "connect:UpdateQuickConnectName", + "connect:UpdateQuickConnectConfig", + "connect:TagResource", + "connect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/QuickConnectArn" + ], + "properties": { + "Description": { + "description": "The description of the quick connect.", + "maxLength": 250, + "minLength": 1, + "type": "string" + }, + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Name": { + "description": "The name of the quick connect.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "QuickConnectArn": { + "description": "The Amazon Resource Name (ARN) for the quick connect.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/transfer-destination/[-a-zA-Z0-9]*$", + "type": "string" + }, + "QuickConnectConfig": { + "$ref": "#/definitions/QuickConnectConfig", + "description": "Configuration settings for the quick connect." + }, + "QuickConnectType": { + "description": "The type of quick connect. In the Amazon Connect console, when you create a quick connect, you are prompted to assign one of the following types: Agent (USER), External (PHONE_NUMBER), or Queue (QUEUE).", + "enum": [ + "PHONE_NUMBER", + "QUEUE", + "USER" + ], + "type": "string" + }, + "Tags": { + "description": "One or more tags.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/QuickConnectArn", + "/properties/QuickConnectType" + ], + "required": [ + "Name", + "InstanceArn", + "QuickConnectConfig" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "connect:TagResource", + "connect:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::QuickConnect" +} diff --git a/src/schema/aws-connect-routingprofile.json b/src/schema/aws-connect-routingprofile.json index 659c1022..22602923 100644 --- a/src/schema/aws-connect-routingprofile.json +++ b/src/schema/aws-connect-routingprofile.json @@ -1,276 +1,277 @@ -{ - "additionalProperties": false, - "definitions": { - "BehaviorType": { - "description": "Specifies the other channels that can be routed to an agent handling their current channel.", - "enum": [ - "ROUTE_CURRENT_CHANNEL_ONLY", - "ROUTE_ANY_CHANNEL" - ], - "type": "string" - }, - "Channel": { - "description": "The channels that agents can handle in the Contact Control Panel (CCP).", - "enum": [ - "VOICE", - "CHAT", - "TASK" - ], - "type": "string" - }, - "Concurrency": { - "description": "The number of contacts an agent can have on a channel simultaneously.", - "maximum": 10, - "minimum": 1, - "type": "integer" - }, - "CrossChannelBehavior": { - "additionalProperties": false, - "description": "Defines the cross-channel routing behavior that allows an agent working on a contact in one channel to be offered a contact from a different channel.", - "properties": { - "BehaviorType": { - "$ref": "#/definitions/BehaviorType" - } - }, - "required": [ - "BehaviorType" - ], - "type": "object" - }, - "Delay": { - "description": "The delay, in seconds, a contact should wait in the queue before they are routed to an available agent.", - "maximum": 9999, - "minimum": 0, - "type": "integer" - }, - "MediaConcurrency": { - "additionalProperties": false, - "description": "Contains information about which channels are supported, and how many contacts an agent can have on a channel simultaneously.", - "properties": { - "Channel": { - "$ref": "#/definitions/Channel" - }, - "Concurrency": { - "$ref": "#/definitions/Concurrency" - }, - "CrossChannelBehavior": { - "$ref": "#/definitions/CrossChannelBehavior" - } - }, - "required": [ - "Channel", - "Concurrency" - ], - "type": "object" - }, - "Priority": { - "description": "The order in which contacts are to be handled for the queue.", - "maximum": 99, - "minimum": 1, - "type": "integer" - }, - "QueueArn": { - "description": "The Amazon Resource Name (ARN) for the queue.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/queue/[-a-zA-Z0-9]*$", - "type": "string" - }, - "RoutingProfileQueueConfig": { - "additionalProperties": false, - "description": "Contains information about the queue and channel for which priority and delay can be set.", - "properties": { - "Delay": { - "$ref": "#/definitions/Delay" - }, - "Priority": { - "$ref": "#/definitions/Priority" - }, - "QueueReference": { - "$ref": "#/definitions/RoutingProfileQueueReference" - } - }, - "required": [ - "Delay", - "Priority", - "QueueReference" - ], - "type": "object" - }, - "RoutingProfileQueueReference": { - "additionalProperties": false, - "description": "Contains the channel and queue identifier for a routing profile.", - "properties": { - "Channel": { - "$ref": "#/definitions/Channel" - }, - "QueueArn": { - "$ref": "#/definitions/QueueArn" - } - }, - "required": [ - "Channel", - "QueueArn" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Connect::RoutingProfile", - "handlers": { - "create": { - "permissions": [ - "connect:CreateRoutingProfile", - "connect:TagResource" - ] - }, - "delete": { - "permissions": [ - "connect:DeleteRoutingProfile", - "connect:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceArn": { - "$ref": "resource-schema.json#/properties/InstanceArn" - } - }, - "required": [ - "InstanceArn" - ] - }, - "permissions": [ - "connect:ListRoutingProfiles", - "connect:ListRoutingProfileQueues" - ] - }, - "read": { - "permissions": [ - "connect:DescribeRoutingProfile", - "connect:ListRoutingProfileQueues" - ] - }, - "update": { - "permissions": [ - "connect:AssociateRoutingProfileQueues", - "connect:DisassociateRoutingProfileQueues", - "connect:UpdateRoutingProfileConcurrency", - "connect:UpdateRoutingProfileName", - "connect:UpdateRoutingProfileDefaultOutboundQueue", - "connect:UpdateRoutingProfileQueues", - "connect:TagResource", - "connect:UntagResource", - "connect:ListRoutingProfileQueues", - "connect:UpdateRoutingProfileAgentAvailabilityTimer" - ] - } - }, - "primaryIdentifier": [ - "/properties/RoutingProfileArn" - ], - "properties": { - "AgentAvailabilityTimer": { - "description": "Whether agents with this routing profile will have their routing order calculated based on longest idle time or time since their last inbound contact.", - "enum": [ - "TIME_SINCE_LAST_ACTIVITY", - "TIME_SINCE_LAST_INBOUND" - ], - "type": "string" - }, - "DefaultOutboundQueueArn": { - "description": "The identifier of the default outbound queue for this routing profile.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/queue/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Description": { - "description": "The description of the routing profile.", - "maxLength": 250, - "minLength": 1, - "type": "string" - }, - "InstanceArn": { - "description": "The identifier of the Amazon Connect instance.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "MediaConcurrencies": { - "description": "The channels agents can handle in the Contact Control Panel (CCP) for this routing profile.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MediaConcurrency" - }, - "type": "array" - }, - "Name": { - "description": "The name of the routing profile.", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "QueueConfigs": { - "description": "The queues to associate with this routing profile.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RoutingProfileQueueConfig" - }, - "minItems": 1, - "type": "array" - }, - "RoutingProfileArn": { - "description": "The Amazon Resource Name (ARN) of the routing profile.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/routing-profile/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/RoutingProfileArn" - ], - "required": [ - "InstanceArn", - "Name", - "Description", - "MediaConcurrencies", - "DefaultOutboundQueueArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::RoutingProfile" -} +{ + "additionalProperties": false, + "definitions": { + "BehaviorType": { + "description": "Specifies the other channels that can be routed to an agent handling their current channel.", + "enum": [ + "ROUTE_CURRENT_CHANNEL_ONLY", + "ROUTE_ANY_CHANNEL" + ], + "type": "string" + }, + "Channel": { + "description": "The channels that agents can handle in the Contact Control Panel (CCP).", + "enum": [ + "VOICE", + "CHAT", + "TASK", + "EMAIL" + ], + "type": "string" + }, + "Concurrency": { + "description": "The number of contacts an agent can have on a channel simultaneously.", + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "CrossChannelBehavior": { + "additionalProperties": false, + "description": "Defines the cross-channel routing behavior that allows an agent working on a contact in one channel to be offered a contact from a different channel.", + "properties": { + "BehaviorType": { + "$ref": "#/definitions/BehaviorType" + } + }, + "required": [ + "BehaviorType" + ], + "type": "object" + }, + "Delay": { + "description": "The delay, in seconds, a contact should wait in the queue before they are routed to an available agent.", + "maximum": 9999, + "minimum": 0, + "type": "integer" + }, + "MediaConcurrency": { + "additionalProperties": false, + "description": "Contains information about which channels are supported, and how many contacts an agent can have on a channel simultaneously.", + "properties": { + "Channel": { + "$ref": "#/definitions/Channel" + }, + "Concurrency": { + "$ref": "#/definitions/Concurrency" + }, + "CrossChannelBehavior": { + "$ref": "#/definitions/CrossChannelBehavior" + } + }, + "required": [ + "Channel", + "Concurrency" + ], + "type": "object" + }, + "Priority": { + "description": "The order in which contacts are to be handled for the queue.", + "maximum": 99, + "minimum": 1, + "type": "integer" + }, + "QueueArn": { + "description": "The Amazon Resource Name (ARN) for the queue.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/queue/[-a-zA-Z0-9]*$", + "type": "string" + }, + "RoutingProfileQueueConfig": { + "additionalProperties": false, + "description": "Contains information about the queue and channel for which priority and delay can be set.", + "properties": { + "Delay": { + "$ref": "#/definitions/Delay" + }, + "Priority": { + "$ref": "#/definitions/Priority" + }, + "QueueReference": { + "$ref": "#/definitions/RoutingProfileQueueReference" + } + }, + "required": [ + "Delay", + "Priority", + "QueueReference" + ], + "type": "object" + }, + "RoutingProfileQueueReference": { + "additionalProperties": false, + "description": "Contains the channel and queue identifier for a routing profile.", + "properties": { + "Channel": { + "$ref": "#/definitions/Channel" + }, + "QueueArn": { + "$ref": "#/definitions/QueueArn" + } + }, + "required": [ + "Channel", + "QueueArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Connect::RoutingProfile", + "handlers": { + "create": { + "permissions": [ + "connect:CreateRoutingProfile", + "connect:TagResource" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteRoutingProfile", + "connect:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "connect:ListRoutingProfiles", + "connect:ListRoutingProfileQueues" + ] + }, + "read": { + "permissions": [ + "connect:DescribeRoutingProfile", + "connect:ListRoutingProfileQueues" + ] + }, + "update": { + "permissions": [ + "connect:AssociateRoutingProfileQueues", + "connect:DisassociateRoutingProfileQueues", + "connect:UpdateRoutingProfileConcurrency", + "connect:UpdateRoutingProfileName", + "connect:UpdateRoutingProfileDefaultOutboundQueue", + "connect:UpdateRoutingProfileQueues", + "connect:TagResource", + "connect:UntagResource", + "connect:ListRoutingProfileQueues", + "connect:UpdateRoutingProfileAgentAvailabilityTimer" + ] + } + }, + "primaryIdentifier": [ + "/properties/RoutingProfileArn" + ], + "properties": { + "AgentAvailabilityTimer": { + "description": "Whether agents with this routing profile will have their routing order calculated based on longest idle time or time since their last inbound contact.", + "enum": [ + "TIME_SINCE_LAST_ACTIVITY", + "TIME_SINCE_LAST_INBOUND" + ], + "type": "string" + }, + "DefaultOutboundQueueArn": { + "description": "The identifier of the default outbound queue for this routing profile.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/queue/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Description": { + "description": "The description of the routing profile.", + "maxLength": 250, + "minLength": 1, + "type": "string" + }, + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "MediaConcurrencies": { + "description": "The channels agents can handle in the Contact Control Panel (CCP) for this routing profile.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MediaConcurrency" + }, + "type": "array" + }, + "Name": { + "description": "The name of the routing profile.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "QueueConfigs": { + "description": "The queues to associate with this routing profile.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RoutingProfileQueueConfig" + }, + "minItems": 1, + "type": "array" + }, + "RoutingProfileArn": { + "description": "The Amazon Resource Name (ARN) of the routing profile.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/routing-profile/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/RoutingProfileArn" + ], + "required": [ + "InstanceArn", + "Name", + "Description", + "MediaConcurrencies", + "DefaultOutboundQueueArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::RoutingProfile" +} diff --git a/src/schema/aws-connect-rule.json b/src/schema/aws-connect-rule.json index dfdcc2dc..bbab13ce 100644 --- a/src/schema/aws-connect-rule.json +++ b/src/schema/aws-connect-rule.json @@ -1,544 +1,562 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TriggerEventSource", - "/properties/InstanceArn" - ], - "definitions": { - "Actions": { - "additionalProperties": false, - "description": "The list of actions that will be executed when a rule is triggered.", - "properties": { - "AssignContactCategoryActions": { - "$ref": "#/definitions/AssignContactCategoryActions" - }, - "CreateCaseActions": { - "$ref": "#/definitions/CreateCaseActions" - }, - "EndAssociatedTasksActions": { - "$ref": "#/definitions/EndAssociatedTasksActions" - }, - "EventBridgeActions": { - "$ref": "#/definitions/EventBridgeActions" - }, - "SendNotificationActions": { - "$ref": "#/definitions/SendNotificationActions" - }, - "SubmitAutoEvaluationActions": { - "$ref": "#/definitions/SubmitAutoEvaluationActions" - }, - "TaskActions": { - "$ref": "#/definitions/TaskActions" - }, - "UpdateCaseActions": { - "$ref": "#/definitions/UpdateCaseActions" - } - }, - "type": "object" - }, - "AssignContactCategoryAction": { - "description": "The definition for assigning contact category action.", - "type": "object" - }, - "AssignContactCategoryActions": { - "description": "This action will assign contact category when a rule is triggered.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AssignContactCategoryAction" - }, - "maxItems": 1, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "CreateCaseAction": { - "additionalProperties": false, - "description": "The definition for create case action.", - "properties": { - "Fields": { - "$ref": "#/definitions/Fields" - }, - "TemplateId": { - "description": "The Id of template.", - "maxLength": 500, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Fields", - "TemplateId" - ], - "type": "object" - }, - "CreateCaseActions": { - "description": "This action will create a case when a rule is triggered.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CreateCaseAction" - }, - "maxItems": 1, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "EndAssociatedTasksAction": { - "description": "The definition for ending associated task action.", - "type": "object" - }, - "EndAssociatedTasksActions": { - "description": "This action will end associated tasks when a rule is triggered.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EndAssociatedTasksAction" - }, - "maxItems": 1, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "EventBridgeAction": { - "additionalProperties": false, - "description": "The definition for event bridge action.", - "properties": { - "Name": { - "description": "The name of the event bridge action.", - "pattern": "^[a-zA-Z0-9._-]{1,100}$", - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "EventBridgeActions": { - "description": "This action will send event bridge notification when a rule is triggered.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EventBridgeAction" - }, - "maxItems": 1, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Field": { - "additionalProperties": false, - "description": "The field of the case.", - "properties": { - "Id": { - "description": "The Id of the field", - "maxLength": 500, - "minLength": 1, - "type": "string" - }, - "Value": { - "$ref": "#/definitions/FieldValue" - } - }, - "required": [ - "Id", - "Value" - ], - "type": "object" - }, - "FieldValue": { - "additionalProperties": false, - "description": "The value of the field.", - "properties": { - "BooleanValue": { - "type": "boolean" - }, - "DoubleValue": { - "type": "number" - }, - "EmptyValue": { - "type": "object" - }, - "StringValue": { - "type": "string" - } - }, - "type": "object" - }, - "Fields": { - "description": "An array of case fields", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Field" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "NotificationRecipientType": { - "additionalProperties": false, - "description": "The type of notification recipient.", - "properties": { - "UserArns": { - "description": "The list of recipients by user arns.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/UserArn" - }, - "maxItems": 5, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "UserTags": { - "additionalProperties": false, - "description": "The collection of recipients who are identified by user tags", - "patternProperties": { - "^(?=.{1,128}$).+$": { - "type": "string" - } - } - } - }, - "type": "object" - }, - "Reference": { - "additionalProperties": false, - "description": "A contact reference.", - "properties": { - "Type": { - "enum": [ - "URL", - "ATTACHMENT", - "NUMBER", - "STRING", - "DATE", - "EMAIL" - ], - "type": "string" - }, - "Value": { - "pattern": "^(/|https:)", - "type": "string" - } - }, - "required": [ - "Value", - "Type" - ], - "type": "object" - }, - "RuleTriggerEventSource": { - "additionalProperties": false, - "description": "The event source that will trigger the rule.", - "properties": { - "EventSourceName": { - "description": "The name of event source.", - "enum": [ - "OnContactEvaluationSubmit", - "OnPostCallAnalysisAvailable", - "OnRealTimeCallAnalysisAvailable", - "OnRealTimeChatAnalysisAvailable", - "OnPostChatAnalysisAvailable", - "OnZendeskTicketCreate", - "OnZendeskTicketStatusUpdate", - "OnSalesforceCaseCreate", - "OnMetricDataUpdate", - "OnCaseCreate", - "OnCaseUpdate" - ], - "type": "string" - }, - "IntegrationAssociationArn": { - "description": "The Amazon Resource Name (ARN) for the AppIntegration association.", - "pattern": "^$|arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/integration-association/[-a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "EventSourceName" - ], - "type": "object" - }, - "SendNotificationAction": { - "additionalProperties": false, - "description": "The definition for sending notification action.", - "properties": { - "Content": { - "description": "The content of notification.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "ContentType": { - "description": "The type of content.", - "enum": [ - "PLAIN_TEXT" - ], - "type": "string" - }, - "DeliveryMethod": { - "description": "The means of delivery.", - "enum": [ - "EMAIL" - ], - "type": "string" - }, - "Recipient": { - "$ref": "#/definitions/NotificationRecipientType" - }, - "Subject": { - "description": "The subject of notification.", - "maxLength": 200, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DeliveryMethod", - "Content", - "Recipient", - "ContentType" - ], - "type": "object" - }, - "SendNotificationActions": { - "description": "The action will send notification when a rule is triggered.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SendNotificationAction" - }, - "maxItems": 1, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "SubmitAutoEvaluationAction": { - "additionalProperties": false, - "description": "The definition of submit auto evaluation action.", - "properties": { - "EvaluationFormArn": { - "description": "The Amazon Resource Name (ARN) of the evaluation form.", - "pattern": "^$|arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/evaluation-form/[-a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "EvaluationFormArn" - ], - "type": "object" - }, - "SubmitAutoEvaluationActions": { - "description": "This action will submit an auto contact evaluation when a rule is triggered.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SubmitAutoEvaluationAction" - }, - "maxItems": 1, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that's 1 to 256 characters in length.", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TaskAction": { - "additionalProperties": false, - "description": "The definition of task action.", - "properties": { - "ContactFlowArn": { - "description": "The Amazon Resource Name (ARN) of the contact flow.", - "pattern": "^$|arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/contact-flow/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Description": { - "description": "The description which appears in the agent's Contact Control Panel (CCP).", - "maxLength": 4096, - "minLength": 0, - "type": "string" - }, - "Name": { - "description": "The name which appears in the agent's Contact Control Panel (CCP).", - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "References": { - "additionalProperties": false, - "description": "A formatted URL that is shown to an agent in the Contact Control Panel (CCP).", - "patternProperties": { - "^(?=.{1,4096}$).+$": { - "$ref": "#/definitions/Reference" - } - } - } - }, - "required": [ - "Name", - "ContactFlowArn" - ], - "type": "object" - }, - "TaskActions": { - "description": "This action will generate a task when a rule is triggered.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TaskAction" - }, - "maxItems": 1, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "UpdateCaseAction": { - "additionalProperties": false, - "description": "The definition for update case action.", - "properties": { - "Fields": { - "$ref": "#/definitions/Fields" - } - }, - "required": [ - "Fields" - ], - "type": "object" - }, - "UpdateCaseActions": { - "description": "This action will update a case when a rule is triggered.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/UpdateCaseAction" - }, - "maxItems": 1, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "UserArn": { - "description": "The Amazon Resource Name (ARN) of the user.", - "pattern": "^$|arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent/[-a-zA-Z0-9]*$", - "type": "string" - } - }, - "description": "Resource Type definition for AWS:Connect::Rule", - "handlers": { - "create": { - "permissions": [ - "connect:CreateRule", - "cases:GetTemplate", - "cases:ListFields", - "cases:ListFieldOptions" - ] - }, - "delete": { - "permissions": [ - "connect:DeleteRule", - "connect:UntagResource" - ] - }, - "read": { - "permissions": [ - "connect:DescribeRule" - ] - }, - "update": { - "permissions": [ - "connect:UpdateRule", - "cases:GetTemplate", - "cases:ListFields", - "cases:ListFieldOptions", - "connect:TagResource", - "connect:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/RuleArn" - ], - "properties": { - "Actions": { - "$ref": "#/definitions/Actions", - "description": "The list of actions that will be executed when a rule is triggered." - }, - "Function": { - "description": "The conditions of a rule.", - "type": "string" - }, - "InstanceArn": { - "description": "The Amazon Resource Name (ARN) of the instance.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Name": { - "description": "The name of the rule.", - "pattern": "^[a-zA-Z0-9._-]{1,200}$", - "type": "string" - }, - "PublishStatus": { - "description": "The publish status of a rule, either draft or published.", - "enum": [ - "DRAFT", - "PUBLISHED" - ], - "type": "string" - }, - "RuleArn": { - "description": "The Amazon Resource Name (ARN) of the rule.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/rule/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Tags": { - "description": "One or more tags.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "TriggerEventSource": { - "$ref": "#/definitions/RuleTriggerEventSource", - "description": "The event source that triggers the rule." - } - }, - "readOnlyProperties": [ - "/properties/RuleArn" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "Name", - "InstanceArn", - "TriggerEventSource", - "Function", - "Actions", - "PublishStatus" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": false, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::Rule" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TriggerEventSource", + "/properties/InstanceArn" + ], + "definitions": { + "Actions": { + "additionalProperties": false, + "description": "A list of actions to be run when the rule is triggered.", + "properties": { + "AssignContactCategoryActions": { + "$ref": "#/definitions/AssignContactCategoryActions", + "description": "Information about the contact category action. The syntax can be empty, for example, ``{}``." + }, + "CreateCaseActions": { + "$ref": "#/definitions/CreateCaseActions", + "description": "" + }, + "EndAssociatedTasksActions": { + "$ref": "#/definitions/EndAssociatedTasksActions", + "description": "" + }, + "EventBridgeActions": { + "$ref": "#/definitions/EventBridgeActions", + "description": "Information about the EV action." + }, + "SendNotificationActions": { + "$ref": "#/definitions/SendNotificationActions", + "description": "Information about the send notification action." + }, + "SubmitAutoEvaluationActions": { + "$ref": "#/definitions/SubmitAutoEvaluationActions", + "description": "" + }, + "TaskActions": { + "$ref": "#/definitions/TaskActions", + "description": "Information about the task action. This field is required if ``TriggerEventSource`` is one of the following values: ``OnZendeskTicketCreate`` | ``OnZendeskTicketStatusUpdate`` | ``OnSalesforceCaseCreate``" + }, + "UpdateCaseActions": { + "$ref": "#/definitions/UpdateCaseActions", + "description": "" + } + }, + "type": "object" + }, + "AssignContactCategoryAction": { + "description": "The definition for assigning contact category action.", + "type": "object" + }, + "AssignContactCategoryActions": { + "description": "This action will assign contact category when a rule is triggered.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AssignContactCategoryAction" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "CreateCaseAction": { + "additionalProperties": false, + "description": "", + "properties": { + "Fields": { + "$ref": "#/definitions/Fields", + "description": "" + }, + "TemplateId": { + "description": "", + "maxLength": 500, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Fields", + "TemplateId" + ], + "type": "object" + }, + "CreateCaseActions": { + "description": "This action will create a case when a rule is triggered.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CreateCaseAction" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "EndAssociatedTasksAction": { + "description": "The definition for ending associated task action.", + "type": "object" + }, + "EndAssociatedTasksActions": { + "description": "This action will end associated tasks when a rule is triggered.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EndAssociatedTasksAction" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "EventBridgeAction": { + "additionalProperties": false, + "description": "The EV action definition.", + "properties": { + "Name": { + "description": "The name.", + "pattern": "^[a-zA-Z0-9._-]{1,100}$", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "EventBridgeActions": { + "description": "This action will send event bridge notification when a rule is triggered.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EventBridgeAction" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Field": { + "additionalProperties": false, + "description": "", + "properties": { + "Id": { + "description": "", + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "Value": { + "$ref": "#/definitions/FieldValue", + "description": "" + } + }, + "required": [ + "Id", + "Value" + ], + "type": "object" + }, + "FieldValue": { + "additionalProperties": false, + "description": "Object for case field values.", + "properties": { + "BooleanValue": { + "description": "", + "type": "boolean" + }, + "DoubleValue": { + "description": "", + "type": "number" + }, + "EmptyValue": { + "description": "", + "type": "object" + }, + "StringValue": { + "description": "", + "type": "string" + } + }, + "type": "object" + }, + "Fields": { + "description": "An array of case fields", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Field" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "NotificationRecipientType": { + "additionalProperties": false, + "description": "The type of notification recipient.", + "properties": { + "UserArns": { + "description": "The Amazon Resource Name (ARN) of the user account.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/UserArn" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "UserTags": { + "additionalProperties": false, + "description": "The tags used to organize, track, or control access for this resource. For example, { \"tags\": {\"key1\":\"value1\", \"key2\":\"value2\"} }. CON users with the specified tags will be notified.", + "patternProperties": { + "^(?=.{1,128}$).+$": { + "type": "string" + } + } + } + }, + "type": "object" + }, + "Reference": { + "additionalProperties": false, + "description": "Information about the reference when the ``referenceType`` is ``URL``. Otherwise, null. (Supports variable injection in the ``Value`` field.)", + "properties": { + "Type": { + "description": "The type of the reference. ``DATE`` must be of type Epoch timestamp. \n *Allowed values*: ``URL`` | ``ATTACHMENT`` | ``NUMBER`` | ``STRING`` | ``DATE`` | ``EMAIL``", + "enum": [ + "URL", + "ATTACHMENT", + "NUMBER", + "STRING", + "DATE", + "EMAIL" + ], + "type": "string" + }, + "Value": { + "description": "A valid value for the reference. For example, for a URL reference, a formatted URL that is displayed to an agent in the Contact Control Panel (CCP).", + "pattern": "^(/|https:)", + "type": "string" + } + }, + "required": [ + "Value", + "Type" + ], + "type": "object" + }, + "RuleTriggerEventSource": { + "additionalProperties": false, + "description": "The name of the event source.", + "properties": { + "EventSourceName": { + "description": "The name of the event source.", + "enum": [ + "OnContactEvaluationSubmit", + "OnPostCallAnalysisAvailable", + "OnRealTimeCallAnalysisAvailable", + "OnRealTimeChatAnalysisAvailable", + "OnPostChatAnalysisAvailable", + "OnZendeskTicketCreate", + "OnZendeskTicketStatusUpdate", + "OnSalesforceCaseCreate", + "OnMetricDataUpdate", + "OnCaseCreate", + "OnCaseUpdate" + ], + "type": "string" + }, + "IntegrationAssociationArn": { + "description": "The Amazon Resource Name (ARN) of the integration association. ``IntegrationAssociationArn`` is required if ``TriggerEventSource`` is one of the following values: ``OnZendeskTicketCreate`` | ``OnZendeskTicketStatusUpdate`` | ``OnSalesforceCaseCreate``", + "pattern": "^$|arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/integration-association/[-a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "EventSourceName" + ], + "type": "object" + }, + "SendNotificationAction": { + "additionalProperties": false, + "description": "Information about the send notification action.", + "properties": { + "Content": { + "description": "Notification content. Supports variable injection. For more information, see [JSONPath reference](https://docs.aws.amazon.com/connect/latest/adminguide/contact-lens-variable-injection.html) in the *Administrators Guide*.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "ContentType": { + "description": "Content type format.\n *Allowed value*: ``PLAIN_TEXT``", + "enum": [ + "PLAIN_TEXT" + ], + "type": "string" + }, + "DeliveryMethod": { + "description": "Notification delivery method.\n *Allowed value*: ``EMAIL``", + "enum": [ + "EMAIL" + ], + "type": "string" + }, + "Recipient": { + "$ref": "#/definitions/NotificationRecipientType", + "description": "Notification recipient." + }, + "Subject": { + "description": "The subject of the email if the delivery method is ``EMAIL``. Supports variable injection. For more information, see [JSONPath reference](https://docs.aws.amazon.com/connect/latest/adminguide/contact-lens-variable-injection.html) in the *Administrators Guide*.", + "maxLength": 200, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DeliveryMethod", + "Content", + "Recipient", + "ContentType" + ], + "type": "object" + }, + "SendNotificationActions": { + "description": "The action will send notification when a rule is triggered.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SendNotificationAction" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "SubmitAutoEvaluationAction": { + "additionalProperties": false, + "description": "", + "properties": { + "EvaluationFormArn": { + "description": "", + "pattern": "^$|arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/evaluation-form/[-a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "EvaluationFormArn" + ], + "type": "object" + }, + "SubmitAutoEvaluationActions": { + "description": "This action will submit an auto contact evaluation when a rule is triggered.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubmitAutoEvaluationAction" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TaskAction": { + "additionalProperties": false, + "description": "Information about the task action. This field is required if ``TriggerEventSource`` is one of the following values: ``OnZendeskTicketCreate`` | ``OnZendeskTicketStatusUpdate`` | ``OnSalesforceCaseCreate``", + "properties": { + "ContactFlowArn": { + "description": "The Amazon Resource Name (ARN) of the flow.", + "pattern": "^$|arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/contact-flow/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Description": { + "description": "The description. Supports variable injection. For more information, see [JSONPath reference](https://docs.aws.amazon.com/connect/latest/adminguide/contact-lens-variable-injection.html) in the *Administrators Guide*.", + "maxLength": 4096, + "minLength": 0, + "type": "string" + }, + "Name": { + "description": "The name. Supports variable injection. For more information, see [JSONPath reference](https://docs.aws.amazon.com/connect/latest/adminguide/contact-lens-variable-injection.html) in the *Administrators Guide*.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "References": { + "additionalProperties": false, + "description": "Information about the reference when the ``referenceType`` is ``URL``. Otherwise, null. ``URL`` is the only accepted type. (Supports variable injection in the ``Value`` field.)", + "patternProperties": { + "^(?=.{1,4096}$).+$": { + "$ref": "#/definitions/Reference" + } + } + } + }, + "required": [ + "Name", + "ContactFlowArn" + ], + "type": "object" + }, + "TaskActions": { + "description": "This action will generate a task when a rule is triggered.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TaskAction" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "UpdateCaseAction": { + "additionalProperties": false, + "description": "", + "properties": { + "Fields": { + "$ref": "#/definitions/Fields", + "description": "" + } + }, + "required": [ + "Fields" + ], + "type": "object" + }, + "UpdateCaseActions": { + "description": "This action will update a case when a rule is triggered.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/UpdateCaseAction" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "UserArn": { + "description": "The Amazon Resource Name (ARN) of the user.", + "pattern": "^$|arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent/[-a-zA-Z0-9]*$", + "type": "string" + } + }, + "description": "Creates a rule for the specified CON instance.", + "handlers": { + "create": { + "permissions": [ + "connect:CreateRule", + "cases:GetTemplate", + "cases:ListFields", + "cases:ListFieldOptions" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteRule", + "connect:UntagResource" + ] + }, + "read": { + "permissions": [ + "connect:DescribeRule" + ] + }, + "update": { + "permissions": [ + "connect:UpdateRule", + "cases:GetTemplate", + "cases:ListFields", + "cases:ListFieldOptions", + "connect:TagResource", + "connect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/RuleArn" + ], + "properties": { + "Actions": { + "$ref": "#/definitions/Actions", + "description": "A list of actions to be run when the rule is triggered." + }, + "Function": { + "description": "The conditions of the rule.", + "type": "string" + }, + "InstanceArn": { + "description": "The Amazon Resource Name (ARN) of the instance.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Name": { + "description": "The name of the rule.", + "pattern": "^[a-zA-Z0-9._-]{1,200}$", + "type": "string" + }, + "PublishStatus": { + "description": "The publish status of the rule.\n *Allowed values*: ``DRAFT`` | ``PUBLISHED``", + "enum": [ + "DRAFT", + "PUBLISHED" + ], + "type": "string" + }, + "RuleArn": { + "description": "", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/rule/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Tags": { + "description": "The tags used to organize, track, or control access for this resource. For example, { \"tags\": {\"key1\":\"value1\", \"key2\":\"value2\"} }.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "TriggerEventSource": { + "$ref": "#/definitions/RuleTriggerEventSource", + "description": "The event source to trigger the rule." + } + }, + "readOnlyProperties": [ + "/properties/RuleArn" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "Name", + "InstanceArn", + "TriggerEventSource", + "Function", + "Actions", + "PublishStatus" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": false, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::Rule" +} diff --git a/src/schema/aws-connect-securitykey.json b/src/schema/aws-connect-securitykey.json index b6d789fc..97c9867f 100644 --- a/src/schema/aws-connect-securitykey.json +++ b/src/schema/aws-connect-securitykey.json @@ -1,85 +1,85 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceId", - "/properties/Key" - ], - "definitions": { - "AssociationId": { - "description": "An associationID is automatically generated when a storage config is associated with an instance", - "maxLength": 100, - "minLength": 1, - "pattern": "^[-a-z0-9]*$", - "type": "string" - }, - "InstanceId": { - "description": "Amazon Connect instance identifier", - "maxLength": 100, - "minLength": 1, - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Key": { - "description": "A valid security key in PEM format.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "description": "Resource Type definition for AWS::Connect::SecurityKey", - "handlers": { - "create": { - "permissions": [ - "connect:AssociateSecurityKey" - ] - }, - "delete": { - "permissions": [ - "connect:DisassociateSecurityKey" - ] - }, - "list": { - "permissions": [ - "connect:ListSecurityKeys" - ] - }, - "read": { - "permissions": [ - "connect:ListSecurityKeys" - ] - }, - "update": { - "permissions": [] - } - }, - "primaryIdentifier": [ - "/properties/InstanceId", - "/properties/AssociationId" - ], - "properties": { - "AssociationId": { - "$ref": "#/definitions/AssociationId" - }, - "InstanceId": { - "$ref": "#/definitions/InstanceId" - }, - "Key": { - "$ref": "#/definitions/Key" - } - }, - "readOnlyProperties": [ - "/properties/AssociationId" - ], - "required": [ - "Key", - "InstanceId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Connect::SecurityKey" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceId", + "/properties/Key" + ], + "definitions": { + "AssociationId": { + "description": "An associationID is automatically generated when a storage config is associated with an instance", + "maxLength": 100, + "minLength": 1, + "pattern": "^[-a-z0-9]*$", + "type": "string" + }, + "InstanceId": { + "description": "Amazon Connect instance identifier", + "maxLength": 100, + "minLength": 1, + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Key": { + "description": "A valid security key in PEM format.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "description": "Resource Type definition for AWS::Connect::SecurityKey", + "handlers": { + "create": { + "permissions": [ + "connect:AssociateSecurityKey" + ] + }, + "delete": { + "permissions": [ + "connect:DisassociateSecurityKey" + ] + }, + "list": { + "permissions": [ + "connect:ListSecurityKeys" + ] + }, + "read": { + "permissions": [ + "connect:ListSecurityKeys" + ] + }, + "update": { + "permissions": [] + } + }, + "primaryIdentifier": [ + "/properties/InstanceId", + "/properties/AssociationId" + ], + "properties": { + "AssociationId": { + "$ref": "#/definitions/AssociationId" + }, + "InstanceId": { + "$ref": "#/definitions/InstanceId" + }, + "Key": { + "$ref": "#/definitions/Key" + } + }, + "readOnlyProperties": [ + "/properties/AssociationId" + ], + "required": [ + "Key", + "InstanceId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Connect::SecurityKey" +} diff --git a/src/schema/aws-connect-securityprofile.json b/src/schema/aws-connect-securityprofile.json index b53d35b6..aa241703 100644 --- a/src/schema/aws-connect-securityprofile.json +++ b/src/schema/aws-connect-securityprofile.json @@ -1,244 +1,248 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SecurityProfileName", - "/properties/InstanceArn" - ], - "definitions": { - "Application": { - "additionalProperties": false, - "description": "A third-party application's metadata.", - "properties": { - "ApplicationPermissions": { - "description": "The permissions that the agent is granted on the application", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ApplicationPermission" - }, - "maxItems": 10, - "type": "array", - "uniqueItems": true - }, - "Namespace": { - "description": "Namespace of the application that you want to give access to.", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ApplicationPermissions", - "Namespace" - ], - "type": "object" - }, - "ApplicationPermission": { - "description": "The permissions that the agent is granted on the application.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Permission": { - "description": "A permission associated with the security profile.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "ResourceName": { - "description": "A resource that a security profile applies tag or hierarchy restrictions to in Amazon Connect.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Connect::SecurityProfile", - "handlers": { - "create": { - "permissions": [ - "connect:CreateSecurityProfile", - "connect:TagResource" - ] - }, - "delete": { - "permissions": [ - "connect:DeleteSecurityProfile", - "connect:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceArn": { - "$ref": "resource-schema.json#/properties/InstanceArn" - } - }, - "required": [ - "InstanceArn" - ] - }, - "permissions": [ - "connect:ListSecurityProfiles" - ] - }, - "read": { - "permissions": [ - "connect:DescribeSecurityProfile", - "connect:ListSecurityProfileApplications", - "connect:ListSecurityProfilePermissions" - ] - }, - "update": { - "permissions": [ - "connect:TagResource", - "connect:UpdateSecurityProfile", - "connect:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/SecurityProfileArn" - ], - "properties": { - "AllowedAccessControlHierarchyGroupId": { - "description": "The identifier of the hierarchy group that a security profile uses to restrict access to resources in Amazon Connect.", - "maxLength": 127, - "minLength": 0, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "AllowedAccessControlTags": { - "description": "The list of tags that a security profile uses to restrict access to resources in Amazon Connect.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 2, - "type": "array", - "uniqueItems": true - }, - "Applications": { - "description": "A list of third-party applications that the security profile will give access to.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Application" - }, - "maxItems": 10, - "type": "array", - "uniqueItems": true - }, - "Description": { - "description": "The description of the security profile.", - "maxLength": 250, - "minLength": 0, - "type": "string" - }, - "HierarchyRestrictedResources": { - "description": "The list of resources that a security profile applies hierarchy restrictions to in Amazon Connect.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ResourceName" - }, - "maxItems": 10, - "type": "array", - "uniqueItems": true - }, - "InstanceArn": { - "description": "The identifier of the Amazon Connect instance.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "LastModifiedRegion": { - "description": "The AWS Region where this resource was last modified.", - "pattern": "[a-z]{2}(-[a-z]+){1,2}(-[0-9])?", - "type": "string" - }, - "LastModifiedTime": { - "description": "The timestamp when this resource was last modified.", - "type": "number" - }, - "Permissions": { - "description": "Permissions assigned to the security profile.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Permission" - }, - "maxItems": 500, - "type": "array", - "uniqueItems": true - }, - "SecurityProfileArn": { - "description": "The Amazon Resource Name (ARN) for the security profile.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/security-profile/[-a-zA-Z0-9]*$", - "type": "string" - }, - "SecurityProfileName": { - "description": "The name of the security profile.", - "maxLength": 127, - "minLength": 1, - "pattern": "^[ a-zA-Z0-9_@-]+$", - "type": "string" - }, - "TagRestrictedResources": { - "description": "The list of resources that a security profile applies tag restrictions to in Amazon Connect.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ResourceName" - }, - "maxItems": 10, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "description": "The tags used to organize, track, or control access for this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/SecurityProfileArn", - "/properties/LastModifiedRegion", - "/properties/LastModifiedTime" - ], - "required": [ - "InstanceArn", - "SecurityProfileName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::SecurityProfile" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SecurityProfileName", + "/properties/InstanceArn" + ], + "definitions": { + "Application": { + "additionalProperties": false, + "description": "A third-party application's metadata.", + "properties": { + "ApplicationPermissions": { + "description": "The permissions that the agent is granted on the application", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ApplicationPermission" + }, + "maxItems": 10, + "type": "array", + "uniqueItems": true + }, + "Namespace": { + "description": "Namespace of the application that you want to give access to.", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ApplicationPermissions", + "Namespace" + ], + "type": "object" + }, + "ApplicationPermission": { + "description": "The permissions that the agent is granted on the application.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Permission": { + "description": "A permission associated with the security profile.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ResourceName": { + "description": "A resource that a security profile applies tag or hierarchy restrictions to in Amazon Connect.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Connect::SecurityProfile", + "handlers": { + "create": { + "permissions": [ + "connect:CreateSecurityProfile", + "connect:TagResource" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteSecurityProfile", + "connect:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "connect:ListSecurityProfiles" + ] + }, + "read": { + "permissions": [ + "connect:DescribeSecurityProfile", + "connect:ListSecurityProfileApplications", + "connect:ListSecurityProfilePermissions" + ] + }, + "update": { + "permissions": [ + "connect:TagResource", + "connect:UpdateSecurityProfile", + "connect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/SecurityProfileArn" + ], + "properties": { + "AllowedAccessControlHierarchyGroupId": { + "description": "The identifier of the hierarchy group that a security profile uses to restrict access to resources in Amazon Connect.", + "maxLength": 127, + "minLength": 0, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "AllowedAccessControlTags": { + "description": "The list of tags that a security profile uses to restrict access to resources in Amazon Connect.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 2, + "type": "array", + "uniqueItems": true + }, + "Applications": { + "description": "A list of third-party applications that the security profile will give access to.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Application" + }, + "maxItems": 10, + "type": "array", + "uniqueItems": true + }, + "Description": { + "description": "The description of the security profile.", + "maxLength": 250, + "minLength": 0, + "type": "string" + }, + "HierarchyRestrictedResources": { + "description": "The list of resources that a security profile applies hierarchy restrictions to in Amazon Connect.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourceName" + }, + "maxItems": 10, + "type": "array", + "uniqueItems": true + }, + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "LastModifiedRegion": { + "description": "The AWS Region where this resource was last modified.", + "pattern": "[a-z]{2}(-[a-z]+){1,2}(-[0-9])?", + "type": "string" + }, + "LastModifiedTime": { + "description": "The timestamp when this resource was last modified.", + "type": "number" + }, + "Permissions": { + "description": "Permissions assigned to the security profile.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Permission" + }, + "maxItems": 500, + "type": "array", + "uniqueItems": true + }, + "SecurityProfileArn": { + "description": "The Amazon Resource Name (ARN) for the security profile.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/security-profile/[-a-zA-Z0-9]*$", + "type": "string" + }, + "SecurityProfileName": { + "description": "The name of the security profile.", + "maxLength": 127, + "minLength": 1, + "pattern": "^[ a-zA-Z0-9_@-]+$", + "type": "string" + }, + "TagRestrictedResources": { + "description": "The list of resources that a security profile applies tag restrictions to in Amazon Connect.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourceName" + }, + "maxItems": 10, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "The tags used to organize, track, or control access for this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/SecurityProfileArn", + "/properties/LastModifiedRegion", + "/properties/LastModifiedTime" + ], + "required": [ + "InstanceArn", + "SecurityProfileName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "connect:TagResource", + "connect:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::SecurityProfile" +} diff --git a/src/schema/aws-connect-tasktemplate.json b/src/schema/aws-connect-tasktemplate.json index a5467932..2e3f23bc 100644 --- a/src/schema/aws-connect-tasktemplate.json +++ b/src/schema/aws-connect-tasktemplate.json @@ -1,337 +1,349 @@ -{ - "additionalProperties": false, - "definitions": { - "ClientToken": { - "description": "the client token string in uuid format", - "pattern": "^$|[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$", - "type": "string" - }, - "DefaultFieldValue": { - "additionalProperties": false, - "description": "the default value for the task template's field", - "properties": { - "DefaultValue": { - "$ref": "#/definitions/FieldValue" - }, - "Id": { - "$ref": "#/definitions/FieldIdentifier" - } - }, - "required": [ - "Id", - "DefaultValue" - ], - "type": "object" - }, - "Field": { - "additionalProperties": false, - "description": "A task template field object.", - "properties": { - "Description": { - "description": "The description of the task template's field", - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "Id": { - "$ref": "#/definitions/FieldIdentifier" - }, - "SingleSelectOptions": { - "description": "list of field options to be used with single select", - "items": { - "$ref": "#/definitions/FieldOption" - }, - "maxItems": 50, - "type": "array" - }, - "Type": { - "$ref": "#/definitions/FieldType" - } - }, - "required": [ - "Id", - "Type" - ], - "type": "object" - }, - "FieldIdentifier": { - "additionalProperties": false, - "description": "the identifier (name) for the task template field", - "properties": { - "Name": { - "description": "The name of the task template field", - "maxLength": 100, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "FieldOption": { - "description": "Single select field identifier", - "maxLength": 100, - "minLength": 1, - "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9_.,\\s-]*[A-Za-z0-9_.,-])?$", - "type": "string" - }, - "FieldType": { - "description": "The type of the task template's field", - "enum": [ - "NAME", - "DESCRIPTION", - "SCHEDULED_TIME", - "QUICK_CONNECT", - "URL", - "NUMBER", - "TEXT", - "TEXT_AREA", - "DATE_TIME", - "BOOLEAN", - "SINGLE_SELECT", - "EMAIL" - ], - "type": "string" - }, - "FieldValue": { - "description": "the default value for the task template's field", - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "InvisibleFieldInfo": { - "additionalProperties": false, - "description": "Invisible field info", - "properties": { - "Id": { - "$ref": "#/definitions/FieldIdentifier" - } - }, - "required": [ - "Id" - ], - "type": "object" - }, - "InvisibleTaskTemplateFields": { - "description": "The list of the task template's invisible fields", - "items": { - "$ref": "#/definitions/InvisibleFieldInfo" - }, - "maxItems": 50, - "type": "array" - }, - "ReadOnlyFieldInfo": { - "additionalProperties": false, - "description": "ReadOnly field info", - "properties": { - "Id": { - "$ref": "#/definitions/FieldIdentifier" - } - }, - "required": [ - "Id" - ], - "type": "object" - }, - "ReadOnlyTaskTemplateFields": { - "description": "The list of the task template's read only fields", - "items": { - "$ref": "#/definitions/ReadOnlyFieldInfo" - }, - "maxItems": 50, - "type": "array" - }, - "RequiredFieldInfo": { - "additionalProperties": false, - "description": "Required field info", - "properties": { - "Id": { - "$ref": "#/definitions/FieldIdentifier" - } - }, - "required": [ - "Id" - ], - "type": "object" - }, - "RequiredTaskTemplateFields": { - "description": "The list of the task template's required fields", - "items": { - "$ref": "#/definitions/RequiredFieldInfo" - }, - "maxItems": 50, - "type": "array" - }, - "Status": { - "description": "The status of the task template", - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. . You can specify a value that is maximum of 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Connect::TaskTemplate.", - "handlers": { - "create": { - "permissions": [ - "connect:CreateTaskTemplate", - "connect:TagResource" - ] - }, - "delete": { - "permissions": [ - "connect:DeleteTaskTemplate", - "connect:UntagResource", - "connect:GetTaskTemplate" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceArn": { - "$ref": "resource-schema.json#/properties/InstanceArn" - } - }, - "required": [ - "InstanceArn" - ] - }, - "permissions": [ - "connect:ListTaskTemplates" - ] - }, - "read": { - "permissions": [ - "connect:GetTaskTemplate" - ] - }, - "update": { - "permissions": [ - "connect:UpdateTaskTemplate", - "connect:TagResource", - "connect:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The identifier (arn) of the task template.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/task-template/[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$", - "type": "string" - }, - "ClientToken": { - "$ref": "#/definitions/ClientToken" - }, - "Constraints": { - "additionalProperties": false, - "description": "The constraints for the task template", - "properties": { - "InvisibleFields": { - "$ref": "#/definitions/InvisibleTaskTemplateFields" - }, - "ReadOnlyFields": { - "$ref": "#/definitions/ReadOnlyTaskTemplateFields" - }, - "RequiredFields": { - "$ref": "#/definitions/RequiredTaskTemplateFields" - } - }, - "type": "object" - }, - "ContactFlowArn": { - "description": "The identifier of the contact flow.", - "pattern": "^$|arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/contact-flow/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Defaults": { - "description": "", - "items": { - "$ref": "#/definitions/DefaultFieldValue" - }, - "maxItems": 50, - "type": "array" - }, - "Description": { - "description": "The description of the task template.", - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "Fields": { - "description": "The list of task template's fields", - "items": { - "$ref": "#/definitions/Field" - }, - "maxItems": 50, - "type": "array" - }, - "InstanceArn": { - "description": "The identifier (arn) of the instance.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Name": { - "description": "The name of the task template.", - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "Status": { - "$ref": "#/definitions/Status" - }, - "Tags": { - "description": "One or more tags.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "InstanceArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": false, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::TaskTemplate" -} +{ + "additionalProperties": false, + "definitions": { + "ClientToken": { + "description": "the client token string in uuid format", + "pattern": "^$|[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$", + "type": "string" + }, + "DefaultFieldValue": { + "additionalProperties": false, + "description": "the default value for the task template's field", + "properties": { + "DefaultValue": { + "$ref": "#/definitions/FieldValue" + }, + "Id": { + "$ref": "#/definitions/FieldIdentifier" + } + }, + "required": [ + "Id", + "DefaultValue" + ], + "type": "object" + }, + "Field": { + "additionalProperties": false, + "description": "A task template field object.", + "properties": { + "Description": { + "description": "The description of the task template's field", + "maxLength": 255, + "minLength": 0, + "type": "string" + }, + "Id": { + "$ref": "#/definitions/FieldIdentifier" + }, + "SingleSelectOptions": { + "description": "list of field options to be used with single select", + "items": { + "$ref": "#/definitions/FieldOption" + }, + "maxItems": 50, + "type": "array" + }, + "Type": { + "$ref": "#/definitions/FieldType" + } + }, + "required": [ + "Id", + "Type" + ], + "type": "object" + }, + "FieldIdentifier": { + "additionalProperties": false, + "description": "the identifier (name) for the task template field", + "properties": { + "Name": { + "description": "The name of the task template field", + "maxLength": 100, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "FieldOption": { + "description": "Single select field identifier", + "maxLength": 100, + "minLength": 1, + "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9_.,\\s-]*[A-Za-z0-9_.,-])?$", + "type": "string" + }, + "FieldType": { + "description": "The type of the task template's field", + "enum": [ + "NAME", + "DESCRIPTION", + "SCHEDULED_TIME", + "QUICK_CONNECT", + "URL", + "NUMBER", + "TEXT", + "TEXT_AREA", + "DATE_TIME", + "BOOLEAN", + "SINGLE_SELECT", + "EMAIL", + "EXPIRY_DURATION", + "SELF_ASSIGN" + ], + "type": "string" + }, + "FieldValue": { + "description": "the default value for the task template's field", + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "InvisibleFieldInfo": { + "additionalProperties": false, + "description": "Invisible field info", + "properties": { + "Id": { + "$ref": "#/definitions/FieldIdentifier" + } + }, + "required": [ + "Id" + ], + "type": "object" + }, + "InvisibleTaskTemplateFields": { + "description": "The list of the task template's invisible fields", + "items": { + "$ref": "#/definitions/InvisibleFieldInfo" + }, + "maxItems": 50, + "type": "array" + }, + "ReadOnlyFieldInfo": { + "additionalProperties": false, + "description": "ReadOnly field info", + "properties": { + "Id": { + "$ref": "#/definitions/FieldIdentifier" + } + }, + "required": [ + "Id" + ], + "type": "object" + }, + "ReadOnlyTaskTemplateFields": { + "description": "The list of the task template's read only fields", + "items": { + "$ref": "#/definitions/ReadOnlyFieldInfo" + }, + "maxItems": 50, + "type": "array" + }, + "RequiredFieldInfo": { + "additionalProperties": false, + "description": "Required field info", + "properties": { + "Id": { + "$ref": "#/definitions/FieldIdentifier" + } + }, + "required": [ + "Id" + ], + "type": "object" + }, + "RequiredTaskTemplateFields": { + "description": "The list of the task template's required fields", + "items": { + "$ref": "#/definitions/RequiredFieldInfo" + }, + "maxItems": 50, + "type": "array" + }, + "Status": { + "description": "The status of the task template", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. . You can specify a value that is maximum of 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Connect::TaskTemplate.", + "handlers": { + "create": { + "permissions": [ + "connect:CreateTaskTemplate", + "connect:TagResource" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteTaskTemplate", + "connect:UntagResource", + "connect:GetTaskTemplate" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "connect:ListTaskTemplates" + ] + }, + "read": { + "permissions": [ + "connect:GetTaskTemplate" + ] + }, + "update": { + "permissions": [ + "connect:UpdateTaskTemplate", + "connect:TagResource", + "connect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The identifier (arn) of the task template.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/task-template/[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$", + "type": "string" + }, + "ClientToken": { + "$ref": "#/definitions/ClientToken" + }, + "Constraints": { + "additionalProperties": false, + "description": "The constraints for the task template", + "properties": { + "InvisibleFields": { + "$ref": "#/definitions/InvisibleTaskTemplateFields" + }, + "ReadOnlyFields": { + "$ref": "#/definitions/ReadOnlyTaskTemplateFields" + }, + "RequiredFields": { + "$ref": "#/definitions/RequiredTaskTemplateFields" + } + }, + "type": "object" + }, + "ContactFlowArn": { + "description": "The identifier of the contact flow.", + "pattern": "^$|arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/contact-flow/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Defaults": { + "description": "", + "items": { + "$ref": "#/definitions/DefaultFieldValue" + }, + "maxItems": 50, + "type": "array" + }, + "Description": { + "description": "The description of the task template.", + "maxLength": 255, + "minLength": 0, + "type": "string" + }, + "Fields": { + "description": "The list of task template's fields", + "items": { + "$ref": "#/definitions/Field" + }, + "maxItems": 50, + "type": "array" + }, + "InstanceArn": { + "description": "The identifier (arn) of the instance.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Name": { + "description": "The name of the task template.", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "SelfAssignContactFlowArn": { + "description": "The identifier of the contact flow.", + "pattern": "^$|arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/contact-flow/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/Status" + }, + "Tags": { + "description": "One or more tags.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "InstanceArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "connect:ListTagsForResource", + "connect:UntagResource", + "connect:TagResource" + ], + "tagOnCreate": false, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::TaskTemplate" +} diff --git a/src/schema/aws-connect-trafficdistributiongroup.json b/src/schema/aws-connect-trafficdistributiongroup.json index f8178bbb..63a8f78f 100644 --- a/src/schema/aws-connect-trafficdistributiongroup.json +++ b/src/schema/aws-connect-trafficdistributiongroup.json @@ -1,140 +1,144 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Description", - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Connect::TrafficDistributionGroup", - "handlers": { - "create": { - "permissions": [ - "connect:CreateTrafficDistributionGroup", - "connect:DescribeTrafficDistributionGroup", - "connect:TagResource" - ] - }, - "delete": { - "permissions": [ - "connect:DeleteTrafficDistributionGroup", - "connect:DescribeTrafficDistributionGroup", - "connect:UntagResource" - ] - }, - "list": { - "permissions": [ - "connect:ListTrafficDistributionGroups" - ] - }, - "read": { - "permissions": [ - "connect:DescribeTrafficDistributionGroup" - ] - }, - "update": { - "permissions": [ - "connect:TagResource", - "connect:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/TrafficDistributionGroupArn" - ], - "properties": { - "Description": { - "description": "A description for the traffic distribution group.", - "maxLength": 250, - "minLength": 1, - "pattern": "(^[\\S].*[\\S]$)|(^[\\S]$)", - "type": "string" - }, - "InstanceArn": { - "description": "The identifier of the Amazon Connect instance that has been replicated.", - "maxLength": 250, - "minLength": 1, - "pattern": "^arn:(aws|aws-us-gov):connect:[a-z]{2}-[a-z]+-[0-9]{1}:[0-9]{1,20}:instance/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", - "type": "string" - }, - "IsDefault": { - "description": "If this is the default traffic distribution group.", - "type": "boolean" - }, - "Name": { - "description": "The name for the traffic distribution group.", - "maxLength": 128, - "minLength": 1, - "pattern": "(^[\\S].*[\\S]$)|(^[\\S]$)", - "type": "string" - }, - "Status": { - "description": "The status of the traffic distribution group.", - "enum": [ - "CREATION_IN_PROGRESS", - "ACTIVE", - "CREATION_FAILED", - "PENDING_DELETION", - "DELETION_FAILED", - "UPDATE_IN_PROGRESS" - ], - "type": "string" - }, - "Tags": { - "description": "One or more tags.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "TrafficDistributionGroupArn": { - "description": "The identifier of the traffic distribution group.", - "pattern": "^arn:(aws|aws-us-gov):connect:[a-z]{2}-[a-z]+-[0-9]{1}:[0-9]{1,20}:traffic-distribution-group/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/TrafficDistributionGroupArn", - "/properties/Status", - "/properties/IsDefault" - ], - "required": [ - "InstanceArn", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::TrafficDistributionGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description", + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Connect::TrafficDistributionGroup", + "handlers": { + "create": { + "permissions": [ + "connect:CreateTrafficDistributionGroup", + "connect:DescribeTrafficDistributionGroup", + "connect:TagResource" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteTrafficDistributionGroup", + "connect:DescribeTrafficDistributionGroup", + "connect:UntagResource" + ] + }, + "list": { + "permissions": [ + "connect:ListTrafficDistributionGroups" + ] + }, + "read": { + "permissions": [ + "connect:DescribeTrafficDistributionGroup" + ] + }, + "update": { + "permissions": [ + "connect:TagResource", + "connect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/TrafficDistributionGroupArn" + ], + "properties": { + "Description": { + "description": "A description for the traffic distribution group.", + "maxLength": 250, + "minLength": 1, + "pattern": "(^[\\S].*[\\S]$)|(^[\\S]$)", + "type": "string" + }, + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance that has been replicated.", + "maxLength": 250, + "minLength": 1, + "pattern": "^arn:(aws|aws-us-gov):connect:[a-z]{2}-[a-z]+-[0-9]{1}:[0-9]{1,20}:instance/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + }, + "IsDefault": { + "description": "If this is the default traffic distribution group.", + "type": "boolean" + }, + "Name": { + "description": "The name for the traffic distribution group.", + "maxLength": 128, + "minLength": 1, + "pattern": "(^[\\S].*[\\S]$)|(^[\\S]$)", + "type": "string" + }, + "Status": { + "description": "The status of the traffic distribution group.", + "enum": [ + "CREATION_IN_PROGRESS", + "ACTIVE", + "CREATION_FAILED", + "PENDING_DELETION", + "DELETION_FAILED", + "UPDATE_IN_PROGRESS" + ], + "type": "string" + }, + "Tags": { + "description": "One or more tags.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "TrafficDistributionGroupArn": { + "description": "The identifier of the traffic distribution group.", + "pattern": "^arn:(aws|aws-us-gov):connect:[a-z]{2}-[a-z]+-[0-9]{1}:[0-9]{1,20}:traffic-distribution-group/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TrafficDistributionGroupArn", + "/properties/Status", + "/properties/IsDefault" + ], + "required": [ + "InstanceArn", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "connect:TagResource", + "connect:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::TrafficDistributionGroup" +} diff --git a/src/schema/aws-connect-user.json b/src/schema/aws-connect-user.json index f372380e..51e95834 100644 --- a/src/schema/aws-connect-user.json +++ b/src/schema/aws-connect-user.json @@ -1,310 +1,314 @@ -{ - "additionalProperties": false, - "definitions": { - "AfterContactWorkTimeLimit": { - "description": "The After Call Work (ACW) timeout setting, in seconds.", - "minimum": 0, - "type": "integer" - }, - "AttributeName": { - "description": "The name of user's proficiency. You must use name of predefined attribute present in the Amazon Connect instance.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "AttributeValue": { - "description": "The value of user's proficiency. You must use value of predefined attribute present in the Amazon Connect instance.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "AutoAccept": { - "description": "The Auto accept setting.", - "type": "boolean" - }, - "DeskPhoneNumber": { - "description": "The phone number for the user's desk phone.", - "type": "string" - }, - "Email": { - "description": "The email address. If you are using SAML for identity management and include this parameter, an error is returned.", - "type": "string" - }, - "FirstName": { - "description": "The first name. This is required if you are using Amazon Connect or SAML for identity management.", - "type": "string" - }, - "LastName": { - "description": "The last name. This is required if you are using Amazon Connect or SAML for identity management.", - "type": "string" - }, - "Level": { - "description": "The level of the proficiency. The valid values are 1, 2, 3, 4 and 5.", - "maximum": 5.0, - "minimum": 1.0, - "type": "number" - }, - "Mobile": { - "description": "The mobile phone number.", - "pattern": "^\\+[1-9]\\d{1,14}$", - "type": "string" - }, - "PhoneType": { - "description": "The phone type.", - "enum": [ - "SOFT_PHONE", - "DESK_PHONE" - ], - "type": "string" - }, - "SecondaryEmail": { - "description": "The secondary email address. If you provide a secondary email, the user receives email notifications -- other than password reset notifications -- to this email address instead of to their primary email address.", - "pattern": "(?=^.{0,265}$)[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,63}", - "type": "string" - }, - "SecurityProfileArn": { - "description": "The identifier of the security profile for the user.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/security-profile/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is maximum of 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UserIdentityInfo": { - "additionalProperties": false, - "description": "Contains information about the identity of a user.", - "properties": { - "Email": { - "$ref": "#/definitions/Email" - }, - "FirstName": { - "$ref": "#/definitions/FirstName" - }, - "LastName": { - "$ref": "#/definitions/LastName" - }, - "Mobile": { - "$ref": "#/definitions/Mobile" - }, - "SecondaryEmail": { - "$ref": "#/definitions/SecondaryEmail" - } - }, - "type": "object" - }, - "UserPhoneConfig": { - "additionalProperties": false, - "description": "Contains information about the phone configuration settings for a user.", - "properties": { - "AfterContactWorkTimeLimit": { - "$ref": "#/definitions/AfterContactWorkTimeLimit" - }, - "AutoAccept": { - "$ref": "#/definitions/AutoAccept" - }, - "DeskPhoneNumber": { - "$ref": "#/definitions/DeskPhoneNumber" - }, - "PhoneType": { - "$ref": "#/definitions/PhoneType" - } - }, - "required": [ - "PhoneType" - ], - "type": "object" - }, - "UserProficiency": { - "additionalProperties": false, - "description": "Proficiency of a user.", - "properties": { - "AttributeName": { - "$ref": "#/definitions/AttributeName" - }, - "AttributeValue": { - "$ref": "#/definitions/AttributeValue" - }, - "Level": { - "$ref": "#/definitions/Level" - } - }, - "required": [ - "AttributeName", - "AttributeValue", - "Level" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Connect::User", - "handlers": { - "create": { - "permissions": [ - "connect:CreateUser", - "connect:TagResource", - "connect:AssociateUserProficiencies" - ] - }, - "delete": { - "permissions": [ - "connect:DeleteUser", - "connect:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceArn": { - "$ref": "resource-schema.json#/properties/InstanceArn" - } - }, - "required": [ - "InstanceArn" - ] - }, - "permissions": [ - "connect:ListUsers" - ] - }, - "read": { - "permissions": [ - "connect:DescribeUser", - "connect:ListUserProficiencies" - ] - }, - "update": { - "permissions": [ - "connect:UpdateUserIdentityInfo", - "connect:UpdateUserPhoneConfig", - "connect:UpdateUserRoutingProfile", - "connect:UpdateUserSecurityProfiles", - "connect:UpdateUserHierarchy", - "connect:TagResource", - "connect:UntagResource", - "connect:AssociateUserProficiencies", - "connect:DisassociateUserProficiencies", - "connect:UpdateUserProficiencies" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserArn" - ], - "properties": { - "DirectoryUserId": { - "description": "The identifier of the user account in the directory used for identity management.", - "type": "string" - }, - "HierarchyGroupArn": { - "description": "The identifier of the hierarchy group for the user.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group/[-a-zA-Z0-9]*$", - "type": "string" - }, - "IdentityInfo": { - "$ref": "#/definitions/UserIdentityInfo", - "description": "The information about the identity of the user." - }, - "InstanceArn": { - "description": "The identifier of the Amazon Connect instance.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Password": { - "description": "The password for the user account. A password is required if you are using Amazon Connect for identity management. Otherwise, it is an error to include a password.", - "pattern": "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d\\S]{8,64}$", - "type": "string" - }, - "PhoneConfig": { - "$ref": "#/definitions/UserPhoneConfig", - "description": "The phone settings for the user." - }, - "RoutingProfileArn": { - "description": "The identifier of the routing profile for the user.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/routing-profile/[-a-zA-Z0-9]*$", - "type": "string" - }, - "SecurityProfileArns": { - "description": "One or more security profile arns for the user", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SecurityProfileArn" - }, - "maxItems": 10, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "description": "One or more tags.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UserArn": { - "description": "The Amazon Resource Name (ARN) for the user.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent/[-a-zA-Z0-9]*$", - "type": "string" - }, - "UserProficiencies": { - "description": "One or more predefined attributes assigned to a user, with a level that indicates how skilled they are.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/UserProficiency" - }, - "type": "array" - }, - "Username": { - "description": "The user name for the account.", - "maxLength": 64, - "minLength": 1, - "pattern": "[a-zA-Z0-9\\_\\-\\.\\@]+", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/UserArn" - ], - "required": [ - "InstanceArn", - "PhoneConfig", - "RoutingProfileArn", - "SecurityProfileArns", - "Username" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::User", - "writeOnlyProperties": [ - "/properties/Password" - ] -} +{ + "additionalProperties": false, + "definitions": { + "AfterContactWorkTimeLimit": { + "description": "The After Call Work (ACW) timeout setting, in seconds.", + "minimum": 0, + "type": "integer" + }, + "AttributeName": { + "description": "The name of user's proficiency. You must use name of predefined attribute present in the Amazon Connect instance.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "AttributeValue": { + "description": "The value of user's proficiency. You must use value of predefined attribute present in the Amazon Connect instance.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "AutoAccept": { + "description": "The Auto accept setting.", + "type": "boolean" + }, + "DeskPhoneNumber": { + "description": "The phone number for the user's desk phone.", + "type": "string" + }, + "Email": { + "description": "The email address. If you are using SAML for identity management and include this parameter, an error is returned.", + "type": "string" + }, + "FirstName": { + "description": "The first name. This is required if you are using Amazon Connect or SAML for identity management.", + "type": "string" + }, + "LastName": { + "description": "The last name. This is required if you are using Amazon Connect or SAML for identity management.", + "type": "string" + }, + "Level": { + "description": "The level of the proficiency. The valid values are 1, 2, 3, 4 and 5.", + "maximum": 5.0, + "minimum": 1.0, + "type": "number" + }, + "Mobile": { + "description": "The mobile phone number.", + "pattern": "^\\+[1-9]\\d{1,14}$", + "type": "string" + }, + "PhoneType": { + "description": "The phone type.", + "enum": [ + "SOFT_PHONE", + "DESK_PHONE" + ], + "type": "string" + }, + "SecondaryEmail": { + "description": "The secondary email address. If you provide a secondary email, the user receives email notifications -- other than password reset notifications -- to this email address instead of to their primary email address.", + "pattern": "(?=^.{0,265}$)[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,63}", + "type": "string" + }, + "SecurityProfileArn": { + "description": "The identifier of the security profile for the user.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/security-profile/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is maximum of 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserIdentityInfo": { + "additionalProperties": false, + "description": "Contains information about the identity of a user.", + "properties": { + "Email": { + "$ref": "#/definitions/Email" + }, + "FirstName": { + "$ref": "#/definitions/FirstName" + }, + "LastName": { + "$ref": "#/definitions/LastName" + }, + "Mobile": { + "$ref": "#/definitions/Mobile" + }, + "SecondaryEmail": { + "$ref": "#/definitions/SecondaryEmail" + } + }, + "type": "object" + }, + "UserPhoneConfig": { + "additionalProperties": false, + "description": "Contains information about the phone configuration settings for a user.", + "properties": { + "AfterContactWorkTimeLimit": { + "$ref": "#/definitions/AfterContactWorkTimeLimit" + }, + "AutoAccept": { + "$ref": "#/definitions/AutoAccept" + }, + "DeskPhoneNumber": { + "$ref": "#/definitions/DeskPhoneNumber" + }, + "PhoneType": { + "$ref": "#/definitions/PhoneType" + } + }, + "required": [ + "PhoneType" + ], + "type": "object" + }, + "UserProficiency": { + "additionalProperties": false, + "description": "Proficiency of a user.", + "properties": { + "AttributeName": { + "$ref": "#/definitions/AttributeName" + }, + "AttributeValue": { + "$ref": "#/definitions/AttributeValue" + }, + "Level": { + "$ref": "#/definitions/Level" + } + }, + "required": [ + "AttributeName", + "AttributeValue", + "Level" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Connect::User", + "handlers": { + "create": { + "permissions": [ + "connect:CreateUser", + "connect:TagResource", + "connect:AssociateUserProficiencies" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteUser", + "connect:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "connect:ListUsers" + ] + }, + "read": { + "permissions": [ + "connect:DescribeUser", + "connect:ListUserProficiencies" + ] + }, + "update": { + "permissions": [ + "connect:UpdateUserIdentityInfo", + "connect:UpdateUserPhoneConfig", + "connect:UpdateUserRoutingProfile", + "connect:UpdateUserSecurityProfiles", + "connect:UpdateUserHierarchy", + "connect:TagResource", + "connect:UntagResource", + "connect:AssociateUserProficiencies", + "connect:DisassociateUserProficiencies", + "connect:UpdateUserProficiencies" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserArn" + ], + "properties": { + "DirectoryUserId": { + "description": "The identifier of the user account in the directory used for identity management.", + "type": "string" + }, + "HierarchyGroupArn": { + "description": "The identifier of the hierarchy group for the user.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group/[-a-zA-Z0-9]*$", + "type": "string" + }, + "IdentityInfo": { + "$ref": "#/definitions/UserIdentityInfo", + "description": "The information about the identity of the user." + }, + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Password": { + "description": "The password for the user account. A password is required if you are using Amazon Connect for identity management. Otherwise, it is an error to include a password.", + "pattern": "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d\\S]{8,64}$", + "type": "string" + }, + "PhoneConfig": { + "$ref": "#/definitions/UserPhoneConfig", + "description": "The phone settings for the user." + }, + "RoutingProfileArn": { + "description": "The identifier of the routing profile for the user.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/routing-profile/[-a-zA-Z0-9]*$", + "type": "string" + }, + "SecurityProfileArns": { + "description": "One or more security profile arns for the user", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SecurityProfileArn" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "One or more tags.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UserArn": { + "description": "The Amazon Resource Name (ARN) for the user.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent/[-a-zA-Z0-9]*$", + "type": "string" + }, + "UserProficiencies": { + "description": "One or more predefined attributes assigned to a user, with a level that indicates how skilled they are.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/UserProficiency" + }, + "type": "array" + }, + "Username": { + "description": "The user name for the account.", + "maxLength": 64, + "minLength": 1, + "pattern": "[a-zA-Z0-9\\_\\-\\.\\@]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/UserArn" + ], + "required": [ + "InstanceArn", + "PhoneConfig", + "RoutingProfileArn", + "SecurityProfileArns", + "Username" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "connect:TagResource", + "connect:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::User", + "writeOnlyProperties": [ + "/properties/Password" + ] +} diff --git a/src/schema/aws-connect-userhierarchygroup.json b/src/schema/aws-connect-userhierarchygroup.json index 8fc27c3b..fe2e16cd 100644 --- a/src/schema/aws-connect-userhierarchygroup.json +++ b/src/schema/aws-connect-userhierarchygroup.json @@ -1,128 +1,132 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ParentGroupArn" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is maximum of 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UserHierarchyGroupArn": { - "description": "The Amazon Resource Name (ARN) for the user hierarchy group.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group/[-a-zA-Z0-9]*$", - "type": "string" - } - }, - "description": "Resource Type definition for AWS::Connect::UserHierarchyGroup", - "handlers": { - "create": { - "permissions": [ - "connect:CreateUserHierarchyGroup", - "connect:TagResource" - ] - }, - "delete": { - "permissions": [ - "connect:DeleteUserHierarchyGroup", - "connect:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceArn": { - "$ref": "resource-schema.json#/properties/InstanceArn" - } - }, - "required": [ - "InstanceArn" - ] - }, - "permissions": [ - "connect:ListUserHierarchyGroups" - ] - }, - "read": { - "permissions": [ - "connect:DescribeUserHierarchyGroup" - ] - }, - "update": { - "permissions": [ - "connect:UpdateUserHierarchyGroupName", - "connect:TagResource", - "connect:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserHierarchyGroupArn" - ], - "properties": { - "InstanceArn": { - "description": "The identifier of the Amazon Connect instance.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Name": { - "description": "The name of the user hierarchy group.", - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "ParentGroupArn": { - "$ref": "#/definitions/UserHierarchyGroupArn", - "description": "The Amazon Resource Name (ARN) for the parent user hierarchy group." - }, - "Tags": { - "description": "One or more tags.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UserHierarchyGroupArn": { - "$ref": "#/definitions/UserHierarchyGroupArn", - "description": "The Amazon Resource Name (ARN) for the user hierarchy group." - } - }, - "readOnlyProperties": [ - "/properties/UserHierarchyGroupArn" - ], - "required": [ - "Name", - "InstanceArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::UserHierarchyGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ParentGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is maximum of 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserHierarchyGroupArn": { + "description": "The Amazon Resource Name (ARN) for the User hierarchy group.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group/[-a-zA-Z0-9]*$", + "type": "string" + } + }, + "description": "Resource Type definition for AWS::Connect::UserHierarchyGroup", + "handlers": { + "create": { + "permissions": [ + "connect:CreateUserHierarchyGroup", + "connect:TagResource" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteUserHierarchyGroup", + "connect:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "connect:ListUserHierarchyGroups" + ] + }, + "read": { + "permissions": [ + "connect:DescribeUserHierarchyGroup" + ] + }, + "update": { + "permissions": [ + "connect:UpdateUserHierarchyGroupName", + "connect:TagResource", + "connect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserHierarchyGroupArn" + ], + "properties": { + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Name": { + "description": "The name of the user hierarchy group.", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "ParentGroupArn": { + "$ref": "#/definitions/UserHierarchyGroupArn", + "description": "The Amazon Resource Name (ARN) for the parent user hierarchy group." + }, + "Tags": { + "description": "One or more tags.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UserHierarchyGroupArn": { + "$ref": "#/definitions/UserHierarchyGroupArn", + "description": "The Amazon Resource Name (ARN) for the user hierarchy group." + } + }, + "readOnlyProperties": [ + "/properties/UserHierarchyGroupArn" + ], + "required": [ + "Name", + "InstanceArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "connect:TagResource", + "connect:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::UserHierarchyGroup" +} diff --git a/src/schema/aws-connect-userhierarchystructure.json b/src/schema/aws-connect-userhierarchystructure.json index bb809f5f..fb29b5cf 100644 --- a/src/schema/aws-connect-userhierarchystructure.json +++ b/src/schema/aws-connect-userhierarchystructure.json @@ -1,190 +1,190 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceArn" - ], - "definitions": { - "HierarchyLevelArn": { - "description": "The Amazon Resource Name (ARN) of the hierarchy level.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$", - "type": "string" - }, - "HierarchyLevelId": { - "description": "The identifier of the hierarchy level.", - "type": "string" - }, - "LevelFive": { - "additionalProperties": false, - "description": "Information about level five.", - "properties": { - "HierarchyLevelArn": { - "$ref": "#/definitions/HierarchyLevelArn" - }, - "HierarchyLevelId": { - "$ref": "#/definitions/HierarchyLevelId" - }, - "Name": { - "$ref": "#/definitions/Name" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "LevelFour": { - "additionalProperties": false, - "description": "Information about level four.", - "properties": { - "HierarchyLevelArn": { - "$ref": "#/definitions/HierarchyLevelArn" - }, - "HierarchyLevelId": { - "$ref": "#/definitions/HierarchyLevelId" - }, - "Name": { - "$ref": "#/definitions/Name" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "LevelOne": { - "additionalProperties": false, - "description": "Information about level one.", - "properties": { - "HierarchyLevelArn": { - "$ref": "#/definitions/HierarchyLevelArn" - }, - "HierarchyLevelId": { - "$ref": "#/definitions/HierarchyLevelId" - }, - "Name": { - "$ref": "#/definitions/Name" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "LevelThree": { - "additionalProperties": false, - "description": "Information about level three.", - "properties": { - "HierarchyLevelArn": { - "$ref": "#/definitions/HierarchyLevelArn" - }, - "HierarchyLevelId": { - "$ref": "#/definitions/HierarchyLevelId" - }, - "Name": { - "$ref": "#/definitions/Name" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "LevelTwo": { - "additionalProperties": false, - "description": "Information about level two.", - "properties": { - "HierarchyLevelArn": { - "$ref": "#/definitions/HierarchyLevelArn" - }, - "HierarchyLevelId": { - "$ref": "#/definitions/HierarchyLevelId" - }, - "Name": { - "$ref": "#/definitions/Name" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "Name": { - "description": "The name of the hierarchy level.", - "type": "string" - } - }, - "description": "Resource Type definition for AWS::Connect::UserHierarchyStructure", - "handlers": { - "create": { - "permissions": [ - "connect:UpdateUserHierarchyStructure" - ] - }, - "delete": { - "permissions": [ - "connect:UpdateUserHierarchyStructure" - ] - }, - "read": { - "permissions": [ - "connect:DescribeUserHierarchyStructure" - ] - }, - "update": { - "permissions": [ - "connect:UpdateUserHierarchyStructure" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserHierarchyStructureArn" - ], - "properties": { - "InstanceArn": { - "description": "The identifier of the Amazon Connect instance.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "UserHierarchyStructure": { - "additionalProperties": false, - "description": "Information about the hierarchy structure.", - "properties": { - "LevelFive": { - "$ref": "#/definitions/LevelFive" - }, - "LevelFour": { - "$ref": "#/definitions/LevelFour" - }, - "LevelOne": { - "$ref": "#/definitions/LevelOne" - }, - "LevelThree": { - "$ref": "#/definitions/LevelThree" - }, - "LevelTwo": { - "$ref": "#/definitions/LevelTwo" - } - }, - "type": "object" - }, - "UserHierarchyStructureArn": { - "description": "The identifier of the User Hierarchy Structure.", - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/user-hierarchy-structure", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/UserHierarchyStructureArn" - ], - "required": [ - "InstanceArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Connect::UserHierarchyStructure" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceArn" + ], + "definitions": { + "HierarchyLevelArn": { + "description": "The Amazon Resource Name (ARN) of the hierarchy level.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/agent-group-level/[-0-9]*$", + "type": "string" + }, + "HierarchyLevelId": { + "description": "The identifier of the hierarchy level.", + "type": "string" + }, + "LevelFive": { + "additionalProperties": false, + "description": "Information about level five.", + "properties": { + "HierarchyLevelArn": { + "$ref": "#/definitions/HierarchyLevelArn" + }, + "HierarchyLevelId": { + "$ref": "#/definitions/HierarchyLevelId" + }, + "Name": { + "$ref": "#/definitions/Name" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "LevelFour": { + "additionalProperties": false, + "description": "Information about level four.", + "properties": { + "HierarchyLevelArn": { + "$ref": "#/definitions/HierarchyLevelArn" + }, + "HierarchyLevelId": { + "$ref": "#/definitions/HierarchyLevelId" + }, + "Name": { + "$ref": "#/definitions/Name" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "LevelOne": { + "additionalProperties": false, + "description": "Information about level one.", + "properties": { + "HierarchyLevelArn": { + "$ref": "#/definitions/HierarchyLevelArn" + }, + "HierarchyLevelId": { + "$ref": "#/definitions/HierarchyLevelId" + }, + "Name": { + "$ref": "#/definitions/Name" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "LevelThree": { + "additionalProperties": false, + "description": "Information about level three.", + "properties": { + "HierarchyLevelArn": { + "$ref": "#/definitions/HierarchyLevelArn" + }, + "HierarchyLevelId": { + "$ref": "#/definitions/HierarchyLevelId" + }, + "Name": { + "$ref": "#/definitions/Name" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "LevelTwo": { + "additionalProperties": false, + "description": "Information about level two.", + "properties": { + "HierarchyLevelArn": { + "$ref": "#/definitions/HierarchyLevelArn" + }, + "HierarchyLevelId": { + "$ref": "#/definitions/HierarchyLevelId" + }, + "Name": { + "$ref": "#/definitions/Name" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Name": { + "description": "The name of the hierarchy level.", + "type": "string" + } + }, + "description": "Resource Type definition for AWS::Connect::UserHierarchyStructure", + "handlers": { + "create": { + "permissions": [ + "connect:UpdateUserHierarchyStructure" + ] + }, + "delete": { + "permissions": [ + "connect:UpdateUserHierarchyStructure" + ] + }, + "read": { + "permissions": [ + "connect:DescribeUserHierarchyStructure" + ] + }, + "update": { + "permissions": [ + "connect:UpdateUserHierarchyStructure" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserHierarchyStructureArn" + ], + "properties": { + "InstanceArn": { + "description": "The identifier of the Amazon Connect instance.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "UserHierarchyStructure": { + "additionalProperties": false, + "description": "Information about the hierarchy structure.", + "properties": { + "LevelFive": { + "$ref": "#/definitions/LevelFive" + }, + "LevelFour": { + "$ref": "#/definitions/LevelFour" + }, + "LevelOne": { + "$ref": "#/definitions/LevelOne" + }, + "LevelThree": { + "$ref": "#/definitions/LevelThree" + }, + "LevelTwo": { + "$ref": "#/definitions/LevelTwo" + } + }, + "type": "object" + }, + "UserHierarchyStructureArn": { + "description": "The identifier of the User Hierarchy Structure.", + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/user-hierarchy-structure", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/UserHierarchyStructureArn" + ], + "required": [ + "InstanceArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Connect::UserHierarchyStructure" +} diff --git a/src/schema/aws-connect-view.json b/src/schema/aws-connect-view.json index 39f6aaee..94ad970c 100644 --- a/src/schema/aws-connect-view.json +++ b/src/schema/aws-connect-view.json @@ -1,162 +1,166 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. . You can specify a value that is maximum of 256 Unicode characters", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Connect::View", - "handlers": { - "create": { - "permissions": [ - "connect:CreateView", - "connect:TagResource" - ] - }, - "delete": { - "permissions": [ - "connect:DeleteView", - "connect:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceArn": { - "$ref": "resource-schema.json#/properties/InstanceArn" - } - }, - "required": [ - "InstanceArn" - ] - }, - "permissions": [ - "connect:ListViews" - ] - }, - "read": { - "permissions": [ - "connect:DescribeView" - ] - }, - "update": { - "permissions": [ - "connect:UpdateViewMetadata", - "connect:UpdateViewContent", - "connect:TagResource", - "connect:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ViewArn" - ], - "properties": { - "Actions": { - "description": "The actions of the view in an array.", - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^([\\p{L}\\p{N}_.:\\/=+\\-@]+[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]*)$", - "type": "string" - }, - "maxItems": 1000, - "type": "array" - }, - "Description": { - "description": "The description of the view.", - "maxLength": 4096, - "minLength": 0, - "pattern": "^([\\p{L}\\p{N}_.:\\/=+\\-@,]+[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@,]*)$", - "type": "string" - }, - "InstanceArn": { - "description": "The Amazon Resource Name (ARN) of the instance.", - "maxLength": 100, - "minLength": 1, - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "Name": { - "description": "The name of the view.", - "maxLength": 512, - "minLength": 1, - "pattern": "^([\\p{L}\\p{N}_.:\\/=+\\-@]+[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]*)$", - "type": "string" - }, - "Tags": { - "description": "One or more tags.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "Template": { - "description": "The template of the view as JSON.", - "type": "object" - }, - "ViewArn": { - "description": "The Amazon Resource Name (ARN) of the view.", - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/view/[-:$a-zA-Z0-9]*$", - "type": "string" - }, - "ViewContentSha256": { - "description": "The view content hash.", - "pattern": "^[a-zA-Z0-9]{64}$", - "type": "string" - }, - "ViewId": { - "description": "The view id of the view.", - "maxLength": 500, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\_\\-:\\/$]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ViewArn", - "/properties/ViewId", - "/properties/ViewContentSha256" - ], - "required": [ - "InstanceArn", - "Template", - "Actions", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Connect::View" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. . You can specify a value that is maximum of 256 Unicode characters", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Connect::View", + "handlers": { + "create": { + "permissions": [ + "connect:CreateView", + "connect:TagResource" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteView", + "connect:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "connect:ListViews" + ] + }, + "read": { + "permissions": [ + "connect:DescribeView" + ] + }, + "update": { + "permissions": [ + "connect:UpdateViewMetadata", + "connect:UpdateViewContent", + "connect:TagResource", + "connect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ViewArn" + ], + "properties": { + "Actions": { + "description": "The actions of the view in an array.", + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^([\\p{L}\\p{N}_.:\\/=+\\-@]+[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]*)$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "Description": { + "description": "The description of the view.", + "maxLength": 4096, + "minLength": 0, + "pattern": "^([\\p{L}\\p{N}_.:\\/=+\\-@,]+[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@,]*)$", + "type": "string" + }, + "InstanceArn": { + "description": "The Amazon Resource Name (ARN) of the instance.", + "maxLength": 100, + "minLength": 1, + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "Name": { + "description": "The name of the view.", + "maxLength": 512, + "minLength": 1, + "pattern": "^([\\p{L}\\p{N}_.:\\/=+\\-@]+[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]*)$", + "type": "string" + }, + "Tags": { + "description": "One or more tags.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "Template": { + "description": "The template of the view as JSON.", + "type": "object" + }, + "ViewArn": { + "description": "The Amazon Resource Name (ARN) of the view.", + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/view/[-:$a-zA-Z0-9]*$", + "type": "string" + }, + "ViewContentSha256": { + "description": "The view content hash.", + "pattern": "^[a-zA-Z0-9]{64}$", + "type": "string" + }, + "ViewId": { + "description": "The view id of the view.", + "maxLength": 500, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\_\\-:\\/$]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ViewArn", + "/properties/ViewId", + "/properties/ViewContentSha256" + ], + "required": [ + "InstanceArn", + "Template", + "Actions", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "connect:TagResource", + "connect:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Connect::View" +} diff --git a/src/schema/aws-connect-viewversion.json b/src/schema/aws-connect-viewversion.json index ac2acfd3..109b0a51 100644 --- a/src/schema/aws-connect-viewversion.json +++ b/src/schema/aws-connect-viewversion.json @@ -1,99 +1,98 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ViewArn", - "/properties/VersionDescription", - "/properties/ViewContentSha256" - ], - "description": "Resource Type definition for AWS::Connect::ViewVersion", - "handlers": { - "create": { - "permissions": [ - "connect:CreateViewVersion" - ] - }, - "delete": { - "permissions": [ - "connect:DeleteViewVersion" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ViewArn": { - "$ref": "resource-schema.json#/properties/ViewArn" - } - }, - "required": [ - "ViewArn" - ] - }, - "permissions": [ - "connect:ListViewVersions" - ] - }, - "read": { - "permissions": [ - "connect:DescribeView" - ] - }, - "update": { - "permissions": [] - } - }, - "primaryIdentifier": [ - "/properties/ViewVersionArn" - ], - "properties": { - "Version": { - "description": "The version of the view.", - "type": "integer" - }, - "VersionDescription": { - "description": "The description for the view version.", - "maxLength": 4096, - "minLength": 1, - "pattern": "^([\\p{L}\\p{N}_.:\\/=+\\-@,]+[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@,]*)$", - "type": "string" - }, - "ViewArn": { - "description": "The Amazon Resource Name (ARN) of the view for which a version is being created.", - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/view/[-:a-zA-Z0-9]*$", - "type": "string" - }, - "ViewContentSha256": { - "description": "The view content hash to be checked.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]{64}$", - "type": "string" - }, - "ViewVersionArn": { - "description": "The Amazon Resource Name (ARN) of the created view version.", - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/view/[-:a-zA-Z0-9]*$", - "type": "string" - } - }, - "propertyTransform": { - "/properties/ViewArn": "$join([\"^\", ViewArn, \":[0-9]*$\"])" - }, - "readOnlyProperties": [ - "/properties/ViewVersionArn", - "/properties/Version" - ], - "required": [ - "ViewArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Connect::ViewVersion" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ViewArn", + "/properties/ViewContentSha256" + ], + "description": "Resource Type definition for AWS::Connect::ViewVersion", + "handlers": { + "create": { + "permissions": [ + "connect:CreateViewVersion" + ] + }, + "delete": { + "permissions": [ + "connect:DeleteViewVersion" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ViewArn": { + "$ref": "resource-schema.json#/properties/ViewArn" + } + }, + "required": [ + "ViewArn" + ] + }, + "permissions": [ + "connect:ListViewVersions" + ] + }, + "read": { + "permissions": [ + "connect:DescribeView" + ] + }, + "update": { + "permissions": [] + } + }, + "primaryIdentifier": [ + "/properties/ViewVersionArn" + ], + "properties": { + "Version": { + "description": "The version of the view.", + "type": "integer" + }, + "VersionDescription": { + "description": "The description for the view version.", + "maxLength": 4096, + "minLength": 1, + "pattern": "^([\\p{L}\\p{N}_.:\\/=+\\-@,]+[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@,]*)$", + "type": "string" + }, + "ViewArn": { + "description": "The Amazon Resource Name (ARN) of the view for which a version is being created.", + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/view/[-:a-zA-Z0-9]*$", + "type": "string" + }, + "ViewContentSha256": { + "description": "The view content hash to be checked.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]{64}$", + "type": "string" + }, + "ViewVersionArn": { + "description": "The Amazon Resource Name (ARN) of the created view version.", + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/view/[-:a-zA-Z0-9]*$", + "type": "string" + } + }, + "propertyTransform": { + "/properties/ViewArn": "$join([\"^\", ViewArn, \":[0-9]*$\"])" + }, + "readOnlyProperties": [ + "/properties/ViewVersionArn", + "/properties/Version" + ], + "required": [ + "ViewArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Connect::ViewVersion" +} diff --git a/src/schema/aws-connectcampaigns-campaign.json b/src/schema/aws-connectcampaigns-campaign.json index a781f1e2..c2f08cb7 100644 --- a/src/schema/aws-connectcampaigns-campaign.json +++ b/src/schema/aws-connectcampaigns-campaign.json @@ -1,271 +1,271 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConnectInstanceArn" - ], - "definitions": { - "AgentlessDialerConfig": { - "additionalProperties": false, - "description": "Agentless Dialer config", - "properties": { - "DialingCapacity": { - "description": "Allocates dialing capacity for this campaign between multiple active campaigns.", - "maximum": 1, - "minimum": 0.01, - "type": "number" - } - }, - "required": [], - "type": "object" - }, - "AnswerMachineDetectionConfig": { - "additionalProperties": false, - "description": "The configuration used for answering machine detection during outbound calls", - "properties": { - "AwaitAnswerMachinePrompt": { - "description": "Enables detection of prompts (e.g., beep after after a voicemail greeting)", - "type": "boolean" - }, - "EnableAnswerMachineDetection": { - "description": "Flag to decided whether outbound calls should have answering machine detection enabled or not", - "type": "boolean" - } - }, - "required": [ - "EnableAnswerMachineDetection" - ], - "type": "object" - }, - "DialerConfig": { - "additionalProperties": false, - "description": "The possible types of dialer config parameters", - "oneOf": [ - { - "required": [ - "ProgressiveDialerConfig" - ] - }, - { - "required": [ - "PredictiveDialerConfig" - ] - }, - { - "required": [ - "AgentlessDialerConfig" - ] - } - ], - "properties": { - "AgentlessDialerConfig": { - "$ref": "#/definitions/AgentlessDialerConfig" - }, - "PredictiveDialerConfig": { - "$ref": "#/definitions/PredictiveDialerConfig" - }, - "ProgressiveDialerConfig": { - "$ref": "#/definitions/ProgressiveDialerConfig" - } - }, - "type": "object" - }, - "OutboundCallConfig": { - "additionalProperties": false, - "description": "The configuration used for outbound calls.", - "properties": { - "AnswerMachineDetectionConfig": { - "$ref": "#/definitions/AnswerMachineDetectionConfig" - }, - "ConnectContactFlowArn": { - "description": "The identifier of the contact flow for the outbound call.", - "maxLength": 500, - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/contact-flow/[-a-zA-Z0-9]*$", - "type": "string" - }, - "ConnectQueueArn": { - "description": "The queue for the call. If you specify a queue, the phone displayed for caller ID is the phone number specified in the queue. If you do not specify a queue, the queue defined in the contact flow is used. If you do not specify a queue, you must specify a source phone number.", - "maxLength": 500, - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/queue/[-a-zA-Z0-9]*$", - "type": "string" - }, - "ConnectSourcePhoneNumber": { - "description": "The phone number associated with the Amazon Connect instance, in E.164 format. If you do not specify a source phone number, you must specify a queue.", - "maxLength": 100, - "type": "string" - } - }, - "required": [ - "ConnectContactFlowArn" - ], - "type": "object" - }, - "PredictiveDialerConfig": { - "additionalProperties": false, - "description": "Predictive Dialer config", - "properties": { - "BandwidthAllocation": { - "description": "The bandwidth allocation of a queue resource.", - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "DialingCapacity": { - "description": "Allocates dialing capacity for this campaign between multiple active campaigns.", - "maximum": 1, - "minimum": 0.01, - "type": "number" - } - }, - "required": [ - "BandwidthAllocation" - ], - "type": "object" - }, - "ProgressiveDialerConfig": { - "additionalProperties": false, - "description": "Progressive Dialer config", - "properties": { - "BandwidthAllocation": { - "description": "The bandwidth allocation of a queue resource.", - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "DialingCapacity": { - "description": "Allocates dialing capacity for this campaign between multiple active campaigns.", - "maximum": 1, - "minimum": 0.01, - "type": "number" - } - }, - "required": [ - "BandwidthAllocation" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that's 1 to 256 characters in length.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::ConnectCampaigns::Campaign Resource Type", - "handlers": { - "create": { - "permissions": [ - "connect-campaigns:CreateCampaign", - "connect-campaigns:DescribeCampaign", - "connect-campaigns:TagResource", - "connect:DescribeContactFlow", - "connect:DescribeInstance", - "connect:DescribeQueue" - ] - }, - "delete": { - "permissions": [ - "connect-campaigns:DeleteCampaign" - ] - }, - "list": { - "permissions": [ - "connect-campaigns:ListCampaigns" - ] - }, - "read": { - "permissions": [ - "connect-campaigns:DescribeCampaign" - ] - }, - "update": { - "permissions": [ - "connect-campaigns:UpdateCampaignDialerConfig", - "connect-campaigns:UpdateCampaignName", - "connect-campaigns:UpdateCampaignOutboundCallConfig", - "connect-campaigns:TagResource", - "connect-campaigns:UntagResource", - "connect-campaigns:DescribeCampaign" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Amazon Connect Campaign Arn", - "maxLength": 256, - "minLength": 0, - "pattern": "^arn:aws[-a-z0-9]*:connect-campaigns:[-a-z0-9]*:[0-9]{12}:campaign/[-a-zA-Z0-9]*$", - "type": "string" - }, - "ConnectInstanceArn": { - "description": "Amazon Connect Instance Arn", - "maxLength": 256, - "minLength": 0, - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "DialerConfig": { - "$ref": "#/definitions/DialerConfig" - }, - "Name": { - "description": "Amazon Connect Campaign Name", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "OutboundCallConfig": { - "$ref": "#/definitions/OutboundCallConfig" - }, - "Tags": { - "description": "One or more tags.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "ConnectInstanceArn", - "DialerConfig", - "Name", - "OutboundCallConfig" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "connect-campaigns:UntagResource", - "connect-campaigns:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ConnectCampaigns::Campaign" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConnectInstanceArn" + ], + "definitions": { + "AgentlessDialerConfig": { + "additionalProperties": false, + "description": "Agentless Dialer config", + "properties": { + "DialingCapacity": { + "description": "Allocates dialing capacity for this campaign between multiple active campaigns.", + "maximum": 1, + "minimum": 0.01, + "type": "number" + } + }, + "required": [], + "type": "object" + }, + "AnswerMachineDetectionConfig": { + "additionalProperties": false, + "description": "The configuration used for answering machine detection during outbound calls", + "properties": { + "AwaitAnswerMachinePrompt": { + "description": "Enables detection of prompts (e.g., beep after after a voicemail greeting)", + "type": "boolean" + }, + "EnableAnswerMachineDetection": { + "description": "Flag to decided whether outbound calls should have answering machine detection enabled or not", + "type": "boolean" + } + }, + "required": [ + "EnableAnswerMachineDetection" + ], + "type": "object" + }, + "DialerConfig": { + "additionalProperties": false, + "description": "The possible types of dialer config parameters", + "oneOf": [ + { + "required": [ + "ProgressiveDialerConfig" + ] + }, + { + "required": [ + "PredictiveDialerConfig" + ] + }, + { + "required": [ + "AgentlessDialerConfig" + ] + } + ], + "properties": { + "AgentlessDialerConfig": { + "$ref": "#/definitions/AgentlessDialerConfig" + }, + "PredictiveDialerConfig": { + "$ref": "#/definitions/PredictiveDialerConfig" + }, + "ProgressiveDialerConfig": { + "$ref": "#/definitions/ProgressiveDialerConfig" + } + }, + "type": "object" + }, + "OutboundCallConfig": { + "additionalProperties": false, + "description": "The configuration used for outbound calls.", + "properties": { + "AnswerMachineDetectionConfig": { + "$ref": "#/definitions/AnswerMachineDetectionConfig" + }, + "ConnectContactFlowArn": { + "description": "The identifier of the contact flow for the outbound call.", + "maxLength": 500, + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/contact-flow/[-a-zA-Z0-9]*$", + "type": "string" + }, + "ConnectQueueArn": { + "description": "The queue for the call. If you specify a queue, the phone displayed for caller ID is the phone number specified in the queue. If you do not specify a queue, the queue defined in the contact flow is used. If you do not specify a queue, you must specify a source phone number.", + "maxLength": 500, + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*/queue/[-a-zA-Z0-9]*$", + "type": "string" + }, + "ConnectSourcePhoneNumber": { + "description": "The phone number associated with the Amazon Connect instance, in E.164 format. If you do not specify a source phone number, you must specify a queue.", + "maxLength": 100, + "type": "string" + } + }, + "required": [ + "ConnectContactFlowArn" + ], + "type": "object" + }, + "PredictiveDialerConfig": { + "additionalProperties": false, + "description": "Predictive Dialer config", + "properties": { + "BandwidthAllocation": { + "description": "The bandwidth allocation of a queue resource.", + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "DialingCapacity": { + "description": "Allocates dialing capacity for this campaign between multiple active campaigns.", + "maximum": 1, + "minimum": 0.01, + "type": "number" + } + }, + "required": [ + "BandwidthAllocation" + ], + "type": "object" + }, + "ProgressiveDialerConfig": { + "additionalProperties": false, + "description": "Progressive Dialer config", + "properties": { + "BandwidthAllocation": { + "description": "The bandwidth allocation of a queue resource.", + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "DialingCapacity": { + "description": "Allocates dialing capacity for this campaign between multiple active campaigns.", + "maximum": 1, + "minimum": 0.01, + "type": "number" + } + }, + "required": [ + "BandwidthAllocation" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that's 1 to 256 characters in length.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::ConnectCampaigns::Campaign Resource Type", + "handlers": { + "create": { + "permissions": [ + "connect-campaigns:CreateCampaign", + "connect-campaigns:DescribeCampaign", + "connect-campaigns:TagResource", + "connect:DescribeContactFlow", + "connect:DescribeInstance", + "connect:DescribeQueue" + ] + }, + "delete": { + "permissions": [ + "connect-campaigns:DeleteCampaign" + ] + }, + "list": { + "permissions": [ + "connect-campaigns:ListCampaigns" + ] + }, + "read": { + "permissions": [ + "connect-campaigns:DescribeCampaign" + ] + }, + "update": { + "permissions": [ + "connect-campaigns:UpdateCampaignDialerConfig", + "connect-campaigns:UpdateCampaignName", + "connect-campaigns:UpdateCampaignOutboundCallConfig", + "connect-campaigns:TagResource", + "connect-campaigns:UntagResource", + "connect-campaigns:DescribeCampaign" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Amazon Connect Campaign Arn", + "maxLength": 256, + "minLength": 0, + "pattern": "^arn:aws[-a-z0-9]*:connect-campaigns:[-a-z0-9]*:[0-9]{12}:campaign/[-a-zA-Z0-9]*$", + "type": "string" + }, + "ConnectInstanceArn": { + "description": "Amazon Connect Instance Arn", + "maxLength": 256, + "minLength": 0, + "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", + "type": "string" + }, + "DialerConfig": { + "$ref": "#/definitions/DialerConfig" + }, + "Name": { + "description": "Amazon Connect Campaign Name", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "OutboundCallConfig": { + "$ref": "#/definitions/OutboundCallConfig" + }, + "Tags": { + "description": "One or more tags.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "ConnectInstanceArn", + "DialerConfig", + "Name", + "OutboundCallConfig" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "connect-campaigns:UntagResource", + "connect-campaigns:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ConnectCampaigns::Campaign" +} diff --git a/src/schema/aws-connectcampaignsv2-campaign.json b/src/schema/aws-connectcampaignsv2-campaign.json new file mode 100644 index 00000000..03290da3 --- /dev/null +++ b/src/schema/aws-connectcampaignsv2-campaign.json @@ -0,0 +1,802 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConnectInstanceId" + ], + "definitions": { + "AgentlessConfig": { + "additionalProperties": false, + "description": "Agentless config", + "required": [], + "type": "object" + }, + "AnswerMachineDetectionConfig": { + "additionalProperties": false, + "description": "The configuration used for answering machine detection during outbound calls", + "properties": { + "AwaitAnswerMachinePrompt": { + "description": "Enables detection of prompts (e.g., beep after after a voicemail greeting)", + "type": "boolean" + }, + "EnableAnswerMachineDetection": { + "description": "Flag to decided whether outbound calls should have answering machine detection enabled or not", + "type": "boolean" + } + }, + "required": [ + "EnableAnswerMachineDetection" + ], + "type": "object" + }, + "Arn": { + "description": "Arn", + "maxLength": 500, + "minLength": 20, + "pattern": "^arn:.*$", + "type": "string" + }, + "BandwidthAllocation": { + "description": "The bandwidth allocation of a queue resource.", + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "CampaignName": { + "description": "Campaign name", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Capacity": { + "description": "Allocates outbound capacity for the specific channel of this campaign between multiple active campaigns", + "maximum": 1, + "minimum": 0.01, + "type": "number" + }, + "ChannelSubtypeConfig": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "Telephony" + ] + }, + { + "required": [ + "Sms" + ] + }, + { + "required": [ + "Email" + ] + } + ], + "description": "The possible types of channel subtype config parameters", + "properties": { + "Email": { + "$ref": "#/definitions/EmailChannelSubtypeConfig" + }, + "Sms": { + "$ref": "#/definitions/SmsChannelSubtypeConfig" + }, + "Telephony": { + "$ref": "#/definitions/TelephonyChannelSubtypeConfig" + } + }, + "type": "object" + }, + "CommunicationLimit": { + "additionalProperties": false, + "description": "Communication Limit", + "properties": { + "Frequency": { + "minimum": 1, + "type": "integer" + }, + "MaxCountPerRecipient": { + "minimum": 1, + "type": "integer" + }, + "Unit": { + "$ref": "#/definitions/CommunicationLimitTimeUnit" + } + }, + "required": [ + "MaxCountPerRecipient", + "Frequency", + "Unit" + ], + "type": "object" + }, + "CommunicationLimitList": { + "description": "List of communication limit", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CommunicationLimit" + }, + "type": "array" + }, + "CommunicationLimitTimeUnit": { + "description": "The communication limit time unit", + "enum": [ + "DAY" + ], + "type": "string" + }, + "CommunicationLimits": { + "additionalProperties": false, + "description": "Communication limits", + "properties": { + "CommunicationLimitList": { + "$ref": "#/definitions/CommunicationLimitList" + } + }, + "type": "object" + }, + "CommunicationLimitsConfig": { + "additionalProperties": false, + "description": "Communication limits config", + "properties": { + "AllChannelsSubtypes": { + "$ref": "#/definitions/CommunicationLimits" + } + }, + "type": "object" + }, + "CommunicationTimeConfig": { + "additionalProperties": false, + "description": "Campaign communication time config", + "properties": { + "Email": { + "$ref": "#/definitions/TimeWindow" + }, + "LocalTimeZoneConfig": { + "$ref": "#/definitions/LocalTimeZoneConfig" + }, + "Sms": { + "$ref": "#/definitions/TimeWindow" + }, + "Telephony": { + "$ref": "#/definitions/TimeWindow" + } + }, + "required": [ + "LocalTimeZoneConfig" + ], + "type": "object" + }, + "ContactFlowId": { + "description": "The identifier of the contact flow for the outbound call", + "maxLength": 500, + "type": "string" + }, + "DailyHour": { + "additionalProperties": false, + "description": "Daily Hour", + "properties": { + "Key": { + "$ref": "#/definitions/DayOfWeek" + }, + "Value": { + "$ref": "#/definitions/TimeRangeList" + } + }, + "type": "object" + }, + "DailyHours": { + "description": "Daily Hours map", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DailyHour" + }, + "type": "array", + "uniqueItems": true + }, + "DayOfWeek": { + "description": "Day of week", + "enum": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY" + ], + "type": "string" + }, + "EmailAddress": { + "description": "Email address used for Email messages", + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\w-\\.\\+]+@([\\w-]+\\.)+[\\w-]{2,4}$", + "type": "string" + }, + "EmailChannelSubtypeConfig": { + "additionalProperties": false, + "description": "Email Channel Subtype config", + "properties": { + "Capacity": { + "$ref": "#/definitions/Capacity" + }, + "DefaultOutboundConfig": { + "$ref": "#/definitions/EmailOutboundConfig" + }, + "OutboundMode": { + "$ref": "#/definitions/EmailOutboundMode" + } + }, + "required": [ + "OutboundMode", + "DefaultOutboundConfig" + ], + "type": "object" + }, + "EmailOutboundConfig": { + "additionalProperties": false, + "description": "Default SMS outbound config", + "properties": { + "ConnectSourceEmailAddress": { + "$ref": "#/definitions/EmailAddress" + }, + "SourceEmailAddressDisplayName": { + "$ref": "#/definitions/SourceEmailAddressDisplayName" + }, + "WisdomTemplateArn": { + "$ref": "#/definitions/Arn" + } + }, + "required": [ + "ConnectSourceEmailAddress", + "WisdomTemplateArn" + ], + "type": "object" + }, + "EmailOutboundMode": { + "additionalProperties": false, + "description": "Email Outbound Mode", + "properties": { + "AgentlessConfig": { + "$ref": "#/definitions/AgentlessConfig" + } + }, + "type": "object" + }, + "EventTrigger": { + "additionalProperties": false, + "description": "The event trigger of the campaign", + "properties": { + "CustomerProfilesDomainArn": { + "$ref": "#/definitions/Arn" + } + }, + "type": "object" + }, + "InstanceId": { + "description": "Amazon Connect Instance Id", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9_\\-.]*$", + "type": "string" + }, + "Iso8601Date": { + "description": "Date in ISO 8601 format, e.g. 2024-01-01", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + "Iso8601Duration": { + "description": "Time duration in ISO 8601 format", + "maxLength": 50, + "minLength": 0, + "pattern": "^[a-zA-Z0-9.]*$", + "type": "string" + }, + "Iso8601Time": { + "description": "Time in ISO 8601 format, e.g. T23:11", + "pattern": "^T\\d{2}:\\d{2}$", + "type": "string" + }, + "LocalTimeZoneConfig": { + "additionalProperties": false, + "description": "Local time zone config", + "properties": { + "DefaultTimeZone": { + "$ref": "#/definitions/TimeZone" + }, + "LocalTimeZoneDetection": { + "$ref": "#/definitions/LocalTimeZoneDetection" + } + }, + "type": "object" + }, + "LocalTimeZoneDetection": { + "description": "Local TimeZone Detection method list", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LocalTimeZoneDetectionType" + }, + "type": "array" + }, + "LocalTimeZoneDetectionType": { + "description": "Local TimeZone Detection method", + "enum": [ + "ZIP_CODE", + "AREA_CODE" + ], + "type": "string" + }, + "OpenHours": { + "additionalProperties": false, + "description": "Open Hours config", + "properties": { + "DailyHours": { + "$ref": "#/definitions/DailyHours" + } + }, + "required": [ + "DailyHours" + ], + "type": "object" + }, + "PredictiveConfig": { + "additionalProperties": false, + "description": "Predictive config", + "properties": { + "BandwidthAllocation": { + "$ref": "#/definitions/BandwidthAllocation" + } + }, + "required": [ + "BandwidthAllocation" + ], + "type": "object" + }, + "ProgressiveConfig": { + "additionalProperties": false, + "description": "Progressive config", + "properties": { + "BandwidthAllocation": { + "$ref": "#/definitions/BandwidthAllocation" + } + }, + "required": [ + "BandwidthAllocation" + ], + "type": "object" + }, + "QueueId": { + "description": "The queue for the call", + "maxLength": 500, + "type": "string" + }, + "RestrictedPeriod": { + "additionalProperties": false, + "description": "Restricted period", + "properties": { + "EndDate": { + "$ref": "#/definitions/Iso8601Date" + }, + "Name": { + "description": "The name of a restricted period", + "maxLength": 127, + "type": "string" + }, + "StartDate": { + "$ref": "#/definitions/Iso8601Date" + } + }, + "required": [ + "StartDate", + "EndDate" + ], + "type": "object" + }, + "RestrictedPeriodList": { + "description": "List of restricted period", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RestrictedPeriod" + }, + "type": "array" + }, + "RestrictedPeriods": { + "additionalProperties": false, + "description": "Restricted period config", + "oneOf": [ + { + "required": [ + "RestrictedPeriodList" + ] + } + ], + "properties": { + "RestrictedPeriodList": { + "$ref": "#/definitions/RestrictedPeriodList" + } + }, + "type": "object" + }, + "Schedule": { + "additionalProperties": false, + "description": "Campaign schedule", + "properties": { + "EndTime": { + "$ref": "#/definitions/TimeStamp" + }, + "RefreshFrequency": { + "$ref": "#/definitions/Iso8601Duration" + }, + "StartTime": { + "$ref": "#/definitions/TimeStamp" + } + }, + "required": [ + "StartTime", + "EndTime" + ], + "type": "object" + }, + "SmsChannelSubtypeConfig": { + "additionalProperties": false, + "description": "SMS Channel Subtype config", + "properties": { + "Capacity": { + "$ref": "#/definitions/Capacity" + }, + "DefaultOutboundConfig": { + "$ref": "#/definitions/SmsOutboundConfig" + }, + "OutboundMode": { + "$ref": "#/definitions/SmsOutboundMode" + } + }, + "required": [ + "OutboundMode", + "DefaultOutboundConfig" + ], + "type": "object" + }, + "SmsOutboundConfig": { + "additionalProperties": false, + "description": "Default SMS outbound config", + "properties": { + "ConnectSourcePhoneNumberArn": { + "$ref": "#/definitions/Arn" + }, + "WisdomTemplateArn": { + "$ref": "#/definitions/Arn" + } + }, + "required": [ + "ConnectSourcePhoneNumberArn", + "WisdomTemplateArn" + ], + "type": "object" + }, + "SmsOutboundMode": { + "additionalProperties": false, + "description": "SMS Outbound Mode", + "properties": { + "AgentlessConfig": { + "$ref": "#/definitions/AgentlessConfig" + } + }, + "type": "object" + }, + "Source": { + "additionalProperties": false, + "description": "The possible source of the campaign", + "oneOf": [ + { + "required": [ + "CustomerProfilesSegmentArn" + ] + }, + { + "required": [ + "EventTrigger" + ] + } + ], + "properties": { + "CustomerProfilesSegmentArn": { + "$ref": "#/definitions/Arn" + }, + "EventTrigger": { + "$ref": "#/definitions/EventTrigger" + } + }, + "type": "object" + }, + "SourceEmailAddressDisplayName": { + "description": "The name of the source email address display name", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "SourcePhoneNumber": { + "description": "The phone number associated with the Amazon Connect instance, in E.164 format. If you do not specify a source phone number, you must specify a queue.", + "maxLength": 100, + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag.", + "type": "string" + }, + "Value": { + "description": "The value for the tag.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TelephonyChannelSubtypeConfig": { + "additionalProperties": false, + "description": "Telephony Channel Subtype config", + "properties": { + "Capacity": { + "$ref": "#/definitions/Capacity" + }, + "ConnectQueueId": { + "$ref": "#/definitions/QueueId" + }, + "DefaultOutboundConfig": { + "$ref": "#/definitions/TelephonyOutboundConfig" + }, + "OutboundMode": { + "$ref": "#/definitions/TelephonyOutboundMode" + } + }, + "required": [ + "OutboundMode", + "DefaultOutboundConfig" + ], + "type": "object" + }, + "TelephonyOutboundConfig": { + "additionalProperties": false, + "description": "Default Telephone Outbound config", + "properties": { + "AnswerMachineDetectionConfig": { + "$ref": "#/definitions/AnswerMachineDetectionConfig" + }, + "ConnectContactFlowId": { + "$ref": "#/definitions/ContactFlowId" + }, + "ConnectSourcePhoneNumber": { + "$ref": "#/definitions/SourcePhoneNumber" + } + }, + "required": [ + "ConnectContactFlowId" + ], + "type": "object" + }, + "TelephonyOutboundMode": { + "additionalProperties": false, + "description": "Telephony Outbound Mode", + "oneOf": [ + { + "required": [ + "ProgressiveConfig" + ] + }, + { + "required": [ + "PredictiveConfig" + ] + }, + { + "required": [ + "AgentlessConfig" + ] + } + ], + "properties": { + "AgentlessConfig": { + "$ref": "#/definitions/AgentlessConfig" + }, + "PredictiveConfig": { + "$ref": "#/definitions/PredictiveConfig" + }, + "ProgressiveConfig": { + "$ref": "#/definitions/ProgressiveConfig" + } + }, + "type": "object" + }, + "TimeRange": { + "additionalProperties": false, + "description": "Time range in 24 hour format", + "properties": { + "EndTime": { + "$ref": "#/definitions/Iso8601Time" + }, + "StartTime": { + "$ref": "#/definitions/Iso8601Time" + } + }, + "required": [ + "StartTime", + "EndTime" + ], + "type": "object" + }, + "TimeRangeList": { + "description": "List of time range", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TimeRange" + }, + "type": "array" + }, + "TimeStamp": { + "description": "Timestamp with no UTC offset or timezone", + "maxLength": 100, + "type": "string" + }, + "TimeWindow": { + "additionalProperties": false, + "description": "Time window config", + "properties": { + "OpenHours": { + "$ref": "#/definitions/OpenHours" + }, + "RestrictedPeriods": { + "$ref": "#/definitions/RestrictedPeriods" + } + }, + "required": [ + "OpenHours" + ], + "type": "object" + }, + "TimeZone": { + "description": "Time Zone Id in the IANA format", + "type": "string" + } + }, + "description": "Definition of AWS::ConnectCampaignsV2::Campaign Resource Type", + "handlers": { + "create": { + "permissions": [ + "connect-campaigns:CreateCampaign", + "connect-campaigns:DescribeCampaign", + "connect-campaigns:TagResource", + "connect:DescribeContactFlow", + "connect:DescribeEmailAddress", + "connect:DescribeInstance", + "connect:DescribePhoneNumber", + "connect:DescribeQueue", + "profile:GetSegmentDefinition", + "wisdom:GetMessageTemplate" + ] + }, + "delete": { + "permissions": [ + "connect-campaigns:DeleteCampaign", + "connect-campaigns:DeleteCampaignChannelSubtypeConfig", + "connect-campaigns:DeleteCampaignCommunicationLimits", + "connect-campaigns:DeleteCampaignCommunicationTime" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ConnectInstanceId": { + "$ref": "resource-schema.json#/properties/ConnectInstanceId" + } + }, + "required": [ + "ConnectInstanceId" + ] + }, + "permissions": [ + "connect-campaigns:ListCampaigns" + ] + }, + "read": { + "permissions": [ + "connect-campaigns:DescribeCampaign" + ] + }, + "update": { + "permissions": [ + "connect-campaigns:DeleteCampaignChannelSubtypeConfig", + "connect-campaigns:DeleteCampaignCommunicationLimits", + "connect-campaigns:DeleteCampaignCommunicationTime", + "connect-campaigns:UpdateCampaignChannelSubtypeConfig", + "connect-campaigns:UpdateCampaignCommunicationLimits", + "connect-campaigns:UpdateCampaignCommunicationTime", + "connect-campaigns:UpdateCampaignName", + "connect-campaigns:UpdateCampaignFlowAssociation", + "connect-campaigns:UpdateCampaignSchedule", + "connect-campaigns:UpdateCampaignSource", + "connect-campaigns:TagResource", + "connect-campaigns:UntagResource", + "connect-campaigns:DescribeCampaign", + "connect:DescribeContactFlow", + "connect:DescribeEmailAddress", + "connect:DescribePhoneNumber", + "connect:DescribeQueue", + "profile:GetSegmentDefinition", + "wisdom:GetMessageTemplate" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Amazon Connect Campaign Arn", + "maxLength": 256, + "minLength": 0, + "pattern": "^arn:aws[-a-z0-9]*:connect-campaigns:[-a-z0-9]*:[0-9]{12}:campaign/[-a-zA-Z0-9]*$", + "type": "string" + }, + "ChannelSubtypeConfig": { + "$ref": "#/definitions/ChannelSubtypeConfig" + }, + "CommunicationLimitsOverride": { + "$ref": "#/definitions/CommunicationLimitsConfig" + }, + "CommunicationTimeConfig": { + "$ref": "#/definitions/CommunicationTimeConfig" + }, + "ConnectCampaignFlowArn": { + "$ref": "#/definitions/Arn" + }, + "ConnectInstanceId": { + "$ref": "#/definitions/InstanceId" + }, + "Name": { + "$ref": "#/definitions/CampaignName" + }, + "Schedule": { + "$ref": "#/definitions/Schedule" + }, + "Source": { + "$ref": "#/definitions/Source" + }, + "Tags": { + "description": "One or more tags.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name", + "ConnectInstanceId", + "ChannelSubtypeConfig" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect-campaigns", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "connect-campaigns:UntagResource", + "connect-campaigns:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ConnectCampaignsV2::Campaign" +} diff --git a/src/schema/aws-controltower-enabledbaseline.json b/src/schema/aws-controltower-enabledbaseline.json index 2985d5b4..598d2ca6 100644 --- a/src/schema/aws-controltower-enabledbaseline.json +++ b/src/schema/aws-controltower-enabledbaseline.json @@ -1,237 +1,243 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TargetIdentifier", - "/properties/BaselineIdentifier" - ], - "definitions": { - "AnyType": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "object" - }, - { - "type": "number" - }, - { - "insertionOrder": false, - "items": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "number" - }, - { - "type": "object" - }, - { - "type": "string" - } - ] - }, - "type": "array" - }, - { - "type": "boolean" - } - ] - }, - "Parameter": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Value": { - "$ref": "#/definitions/AnyType" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::ControlTower::EnabledBaseline Resource Type", - "handlers": { - "create": { - "permissions": [ - "controltower:EnableBaseline", - "controltower:TagResource", - "controltower:GetBaselineOperation", - "controltower:GetEnabledBaseline", - "controltower:ListTagsForResource", - "organizations:CreateOrganizationalUnit", - "organizations:CreateOrganization", - "organizations:UpdatePolicy", - "organizations:CreatePolicy", - "organizations:AttachPolicy", - "organizations:DetachPolicy", - "organizations:DeletePolicy", - "organizations:EnablePolicyType", - "organizations:EnableAWSServiceAccess", - "organizations:ListRoots", - "servicecatalog:AssociatePrincipalWithPortfolio", - "servicecatalog:AssociateProductWithPortfolio", - "servicecatalog:CreatePortfolio", - "servicecatalog:CreateProduct", - "servicecatalog:CreateProvisioningArtifact", - "servicecatalog:ListPortfolios", - "servicecatalog:ListProvisioningArtifacts", - "servicecatalog:SearchProductsAsAdmin", - "servicecatalog:UpdatePortfolio", - "servicecatalog:UpdateProvisioningArtifact", - "servicecatalog:ListPrincipalsForPortfolio", - "servicecatalog:DeleteProvisioningArtifact" - ] - }, - "delete": { - "permissions": [ - "controltower:DisableBaseline", - "controltower:GetBaselineOperation", - "organizations:CreateOrganizationalUnit", - "organizations:CreateOrganization", - "organizations:UpdatePolicy", - "organizations:CreatePolicy", - "organizations:AttachPolicy", - "organizations:DetachPolicy", - "organizations:DeletePolicy", - "organizations:EnablePolicyType", - "organizations:EnableAWSServiceAccess", - "organizations:ListRoots", - "servicecatalog:AssociatePrincipalWithPortfolio", - "servicecatalog:AssociateProductWithPortfolio", - "servicecatalog:CreatePortfolio", - "servicecatalog:CreateProduct", - "servicecatalog:CreateProvisioningArtifact", - "servicecatalog:ListPortfolios", - "servicecatalog:ListProvisioningArtifacts", - "servicecatalog:SearchProductsAsAdmin", - "servicecatalog:UpdatePortfolio", - "servicecatalog:UpdateProvisioningArtifact", - "servicecatalog:ListPrincipalsForPortfolio", - "servicecatalog:DeleteProvisioningArtifact" - ] - }, - "list": { - "permissions": [ - "controltower:ListEnabledBaselines" - ] - }, - "read": { - "permissions": [ - "controltower:GetEnabledBaseline", - "controltower:ListEnabledBaselines", - "controltower:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "controltower:UpdateEnabledBaseline", - "controltower:GetBaselineOperation", - "organizations:CreateOrganizationalUnit", - "organizations:CreateOrganization", - "organizations:UpdatePolicy", - "organizations:CreatePolicy", - "organizations:AttachPolicy", - "organizations:DetachPolicy", - "organizations:DeletePolicy", - "organizations:EnablePolicyType", - "organizations:EnableAWSServiceAccess", - "organizations:ListRoots", - "servicecatalog:AssociatePrincipalWithPortfolio", - "servicecatalog:AssociateProductWithPortfolio", - "servicecatalog:CreatePortfolio", - "servicecatalog:CreateProduct", - "servicecatalog:CreateProvisioningArtifact", - "servicecatalog:ListPortfolios", - "servicecatalog:ListProvisioningArtifacts", - "servicecatalog:SearchProductsAsAdmin", - "servicecatalog:UpdatePortfolio", - "servicecatalog:UpdateProvisioningArtifact", - "servicecatalog:ListPrincipalsForPortfolio", - "servicecatalog:DeleteProvisioningArtifact", - "controltower:TagResource", - "controltower:ListTagsForResource", - "controltower:GetEnabledBaseline" - ] - } - }, - "primaryIdentifier": [ - "/properties/EnabledBaselineIdentifier" - ], - "properties": { - "BaselineIdentifier": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[0-9a-zA-Z_\\-:\\/]+$", - "type": "string" - }, - "BaselineVersion": { - "pattern": "^\\d+(?:\\.\\d+){0,2}$", - "type": "string" - }, - "EnabledBaselineIdentifier": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[0-9a-zA-Z_\\-:\\/]+$", - "type": "string" - }, - "Parameters": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "TargetIdentifier": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[0-9a-zA-Z_\\-:\\/]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/EnabledBaselineIdentifier" - ], - "required": [ - "BaselineIdentifier", - "TargetIdentifier", - "BaselineVersion" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ControlTower::EnabledBaseline" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TargetIdentifier", + "/properties/BaselineIdentifier" + ], + "definitions": { + "AnyType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + }, + { + "type": "number" + }, + { + "insertionOrder": false, + "items": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "number" + }, + { + "type": "object" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + { + "type": "boolean" + } + ] + }, + "Parameter": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Value": { + "$ref": "#/definitions/AnyType" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::ControlTower::EnabledBaseline Resource Type", + "handlers": { + "create": { + "permissions": [ + "controltower:EnableBaseline", + "controltower:TagResource", + "controltower:UntagResource", + "controltower:GetBaselineOperation", + "controltower:GetEnabledBaseline", + "controltower:ListTagsForResource", + "organizations:CreateOrganizationalUnit", + "organizations:CreateOrganization", + "organizations:UpdatePolicy", + "organizations:CreatePolicy", + "organizations:AttachPolicy", + "organizations:DetachPolicy", + "organizations:DeletePolicy", + "organizations:EnablePolicyType", + "organizations:EnableAWSServiceAccess", + "organizations:ListRoots", + "servicecatalog:AssociatePrincipalWithPortfolio", + "servicecatalog:AssociateProductWithPortfolio", + "servicecatalog:CreatePortfolio", + "servicecatalog:CreateProduct", + "servicecatalog:CreateProvisioningArtifact", + "servicecatalog:ListPortfolios", + "servicecatalog:ListProvisioningArtifacts", + "servicecatalog:SearchProductsAsAdmin", + "servicecatalog:UpdatePortfolio", + "servicecatalog:UpdateProvisioningArtifact", + "servicecatalog:ListPrincipalsForPortfolio", + "servicecatalog:DeleteProvisioningArtifact" + ] + }, + "delete": { + "permissions": [ + "controltower:DisableBaseline", + "controltower:GetBaselineOperation", + "organizations:CreateOrganizationalUnit", + "organizations:CreateOrganization", + "organizations:UpdatePolicy", + "organizations:CreatePolicy", + "organizations:AttachPolicy", + "organizations:DetachPolicy", + "organizations:DeletePolicy", + "organizations:EnablePolicyType", + "organizations:EnableAWSServiceAccess", + "organizations:ListRoots", + "servicecatalog:AssociatePrincipalWithPortfolio", + "servicecatalog:AssociateProductWithPortfolio", + "servicecatalog:CreatePortfolio", + "servicecatalog:CreateProduct", + "servicecatalog:CreateProvisioningArtifact", + "servicecatalog:ListPortfolios", + "servicecatalog:ListProvisioningArtifacts", + "servicecatalog:SearchProductsAsAdmin", + "servicecatalog:UpdatePortfolio", + "servicecatalog:UpdateProvisioningArtifact", + "servicecatalog:ListPrincipalsForPortfolio", + "servicecatalog:DeleteProvisioningArtifact" + ] + }, + "list": { + "permissions": [ + "controltower:ListEnabledBaselines" + ] + }, + "read": { + "permissions": [ + "controltower:GetEnabledBaseline", + "controltower:ListEnabledBaselines", + "controltower:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "controltower:UpdateEnabledBaseline", + "controltower:GetBaselineOperation", + "organizations:CreateOrganizationalUnit", + "organizations:CreateOrganization", + "organizations:UpdatePolicy", + "organizations:CreatePolicy", + "organizations:AttachPolicy", + "organizations:DetachPolicy", + "organizations:DeletePolicy", + "organizations:EnablePolicyType", + "organizations:EnableAWSServiceAccess", + "organizations:ListRoots", + "servicecatalog:AssociatePrincipalWithPortfolio", + "servicecatalog:AssociateProductWithPortfolio", + "servicecatalog:CreatePortfolio", + "servicecatalog:CreateProduct", + "servicecatalog:CreateProvisioningArtifact", + "servicecatalog:ListPortfolios", + "servicecatalog:ListProvisioningArtifacts", + "servicecatalog:SearchProductsAsAdmin", + "servicecatalog:UpdatePortfolio", + "servicecatalog:UpdateProvisioningArtifact", + "servicecatalog:ListPrincipalsForPortfolio", + "servicecatalog:DeleteProvisioningArtifact", + "controltower:TagResource", + "controltower:UntagResource", + "controltower:GetEnabledBaseline" + ] + } + }, + "primaryIdentifier": [ + "/properties/EnabledBaselineIdentifier" + ], + "properties": { + "BaselineIdentifier": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[0-9a-zA-Z_\\-:\\/]+$", + "type": "string" + }, + "BaselineVersion": { + "pattern": "^\\d+(?:\\.\\d+){0,2}$", + "type": "string" + }, + "EnabledBaselineIdentifier": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[0-9a-zA-Z_\\-:\\/]+$", + "type": "string" + }, + "Parameters": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Parameter" + }, + "type": "array" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TargetIdentifier": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[0-9a-zA-Z_\\-:\\/]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/EnabledBaselineIdentifier" + ], + "required": [ + "BaselineIdentifier", + "TargetIdentifier", + "BaselineVersion" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "controltower:TagResource", + "controltower:UntagResource", + "controltower:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ControlTower::EnabledBaseline" +} diff --git a/src/schema/aws-controltower-enabledcontrol.json b/src/schema/aws-controltower-enabledcontrol.json index 566be727..7a9e7246 100644 --- a/src/schema/aws-controltower-enabledcontrol.json +++ b/src/schema/aws-controltower-enabledcontrol.json @@ -1,216 +1,219 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TargetIdentifier", - "/properties/ControlIdentifier" - ], - "definitions": { - "EnabledControlParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "anyOf": [ - { - "insertionOrder": false, - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "object" - }, - { - "type": "boolean" - } - ] - }, - "minItems": 1, - "type": "array" - }, - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "object" - }, - { - "type": "boolean" - } - ] - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Enables a control on a specified target.", - "handlers": { - "create": { - "permissions": [ - "controltower:ListEnabledControls", - "controltower:GetEnabledControl", - "controltower:GetControlOperation", - "controltower:EnableControl", - "controltower:TagResource", - "organizations:UpdatePolicy", - "organizations:CreatePolicy", - "organizations:AttachPolicy", - "organizations:DetachPolicy", - "organizations:ListPoliciesForTarget", - "organizations:ListTargetsForPolicy", - "organizations:DescribePolicy" - ], - "timeoutInMinutes": 720 - }, - "delete": { - "permissions": [ - "controltower:ListEnabledControls", - "controltower:GetEnabledControl", - "controltower:GetControlOperation", - "controltower:DisableControl", - "organizations:UpdatePolicy", - "organizations:DeletePolicy", - "organizations:CreatePolicy", - "organizations:AttachPolicy", - "organizations:DetachPolicy", - "organizations:ListPoliciesForTarget", - "organizations:ListTargetsForPolicy", - "organizations:DescribePolicy" - ], - "timeoutInMinutes": 720 - }, - "list": { - "handlerSchema": { - "properties": { - "TargetIdentifier": { - "$ref": "resource-schema.json#/properties/TargetIdentifier" - } - }, - "required": [ - "TargetIdentifier" - ] - }, - "permissions": [ - "controltower:ListEnabledControls" - ] - }, - "read": { - "permissions": [ - "controltower:ListEnabledControls", - "controltower:GetEnabledControl", - "controltower:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "controltower:ListEnabledControls", - "controltower:GetEnabledControl", - "controltower:GetControlOperation", - "controltower:UpdateEnabledControl", - "controltower:UntagResource", - "controltower:TagResource", - "organizations:UpdatePolicy", - "organizations:CreatePolicy", - "organizations:AttachPolicy", - "organizations:DetachPolicy", - "organizations:ListPoliciesForTarget", - "organizations:ListTargetsForPolicy", - "organizations:DescribePolicy" - ], - "timeoutInMinutes": 720 - } - }, - "primaryIdentifier": [ - "/properties/TargetIdentifier", - "/properties/ControlIdentifier" - ], - "properties": { - "ControlIdentifier": { - "description": "Arn of the control.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[0-9a-zA-Z_\\-:\\/]+$", - "type": "string" - }, - "Parameters": { - "description": "Parameters to configure the enabled control behavior.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EnabledControlParameter" - }, - "minItems": 1, - "type": "array" - }, - "Tags": { - "description": "A set of tags to assign to the enabled control.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - }, - "TargetIdentifier": { - "description": "Arn for Organizational unit to which the control needs to be applied", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[0-9a-zA-Z_\\-:\\/]+$", - "type": "string" - } - }, - "required": [ - "TargetIdentifier", - "ControlIdentifier" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-controltower", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "controltower:UntagResource", - "controltower:TagResource", - "controltower:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ControlTower::EnabledControl" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TargetIdentifier", + "/properties/ControlIdentifier" + ], + "definitions": { + "EnabledControlParameter": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "anyOf": [ + { + "insertionOrder": false, + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "object" + }, + { + "type": "boolean" + } + ] + }, + "minItems": 1, + "type": "array" + }, + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "object" + }, + { + "type": "boolean" + } + ] + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Enables a control on a specified target.", + "handlers": { + "create": { + "permissions": [ + "controltower:ListEnabledControls", + "controltower:GetEnabledControl", + "controltower:GetControlOperation", + "controltower:EnableControl", + "controltower:TagResource", + "organizations:UpdatePolicy", + "organizations:CreatePolicy", + "organizations:AttachPolicy", + "organizations:DetachPolicy", + "organizations:ListPoliciesForTarget", + "organizations:ListTargetsForPolicy", + "organizations:DescribePolicy", + "controltower:ListTagsForResource" + ], + "timeoutInMinutes": 720 + }, + "delete": { + "permissions": [ + "controltower:ListEnabledControls", + "controltower:GetEnabledControl", + "controltower:GetControlOperation", + "controltower:DisableControl", + "organizations:UpdatePolicy", + "organizations:DeletePolicy", + "organizations:CreatePolicy", + "organizations:AttachPolicy", + "organizations:DetachPolicy", + "organizations:ListPoliciesForTarget", + "organizations:ListTargetsForPolicy", + "organizations:DescribePolicy", + "controltower:ListTagsForResource" + ], + "timeoutInMinutes": 720 + }, + "list": { + "handlerSchema": { + "properties": { + "TargetIdentifier": { + "$ref": "resource-schema.json#/properties/TargetIdentifier" + } + }, + "required": [ + "TargetIdentifier" + ] + }, + "permissions": [ + "controltower:ListEnabledControls" + ] + }, + "read": { + "permissions": [ + "controltower:ListEnabledControls", + "controltower:GetEnabledControl", + "controltower:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "controltower:ListEnabledControls", + "controltower:GetEnabledControl", + "controltower:GetControlOperation", + "controltower:UpdateEnabledControl", + "controltower:UntagResource", + "controltower:TagResource", + "organizations:UpdatePolicy", + "organizations:CreatePolicy", + "organizations:AttachPolicy", + "organizations:DetachPolicy", + "organizations:ListPoliciesForTarget", + "organizations:ListTargetsForPolicy", + "organizations:DescribePolicy", + "controltower:ListTagsForResource" + ], + "timeoutInMinutes": 720 + } + }, + "primaryIdentifier": [ + "/properties/TargetIdentifier", + "/properties/ControlIdentifier" + ], + "properties": { + "ControlIdentifier": { + "description": "Arn of the control.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[0-9a-zA-Z_\\-:\\/]+$", + "type": "string" + }, + "Parameters": { + "description": "Parameters to configure the enabled control behavior.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EnabledControlParameter" + }, + "minItems": 1, + "type": "array" + }, + "Tags": { + "description": "A set of tags to assign to the enabled control.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + "TargetIdentifier": { + "description": "Arn for Organizational unit to which the control needs to be applied", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[0-9a-zA-Z_\\-:\\/]+$", + "type": "string" + } + }, + "required": [ + "TargetIdentifier", + "ControlIdentifier" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-controltower", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "controltower:UntagResource", + "controltower:TagResource", + "controltower:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ControlTower::EnabledControl" +} diff --git a/src/schema/aws-controltower-landingzone.json b/src/schema/aws-controltower-landingzone.json index 4136d3ce..fc95c77f 100644 --- a/src/schema/aws-controltower-landingzone.json +++ b/src/schema/aws-controltower-landingzone.json @@ -1,210 +1,216 @@ -{ - "additionalProperties": false, - "definitions": { - "LandingZoneDriftStatus": { - "enum": [ - "DRIFTED", - "IN_SYNC" - ], - "type": "string" - }, - "LandingZoneStatus": { - "enum": [ - "ACTIVE", - "PROCESSING", - "FAILED" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::ControlTower::LandingZone Resource Type", - "handlers": { - "create": { - "permissions": [ - "controltower:CreateLandingZone", - "controltower:GetLandingZoneOperation", - "controltower:ListTagsForResource", - "controltower:TagResource", - "controltower:GetLandingZone", - "cloudformation:DescribeOrganizationsAccess", - "servicecatalog:AssociatePrincipalWithPortfolio", - "servicecatalog:AssociateProductWithPortfolio", - "servicecatalog:CreatePortfolio", - "servicecatalog:CreateProduct", - "servicecatalog:CreateProvisioningArtifact", - "servicecatalog:ListPortfolios", - "servicecatalog:ListProvisioningArtifacts", - "servicecatalog:SearchProductsAsAdmin", - "servicecatalog:UpdatePortfolio", - "servicecatalog:UpdateProvisioningArtifact", - "servicecatalog:ListPrincipalsForPortfolio", - "organizations:CreateOrganizationalUnit", - "organizations:CreateOrganization", - "organizations:UpdatePolicy", - "organizations:CreatePolicy", - "organizations:AttachPolicy", - "organizations:DetachPolicy", - "organizations:DeletePolicy", - "organizations:EnablePolicyType", - "organizations:EnableAWSServiceAccess", - "organizations:ListRoots", - "sso:GetPeregrineStatus", - "sso:ListDirectoryAssociations", - "sso:StartPeregrine", - "sso:RegisterRegion" - ] - }, - "delete": { - "permissions": [ - "controltower:DeleteLandingZone", - "controltower:GetLandingZone", - "controltower:GetLandingZoneOperation", - "cloudformation:DescribeOrganizationsAccess", - "servicecatalog:ListPortfolios", - "servicecatalog:ListProvisioningArtifacts", - "servicecatalog:SearchProductsAsAdmin", - "servicecatalog:DeleteProvisioningArtifact", - "servicecatalog:ListPrincipalsForPortfolio", - "servicecatalog:DeleteProduct", - "servicecatalog:DisassociatePrincipalFromPortfolio", - "servicecatalog:DisassociateProductFromPortfolio", - "servicecatalog:DeletePortfolio", - "organizations:AttachPolicy", - "organizations:DetachPolicy", - "organizations:DeletePolicy", - "organizations:ListRoots", - "sso:GetPeregrineStatus", - "sso:ListDirectoryAssociations", - "iam:DeleteRolePolicy", - "iam:DetachRolePolicy", - "iam:DeleteRole" - ] - }, - "list": { - "permissions": [ - "controltower:ListLandingZones" - ] - }, - "read": { - "permissions": [ - "controltower:GetLandingZone", - "controltower:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "controltower:UpdateLandingZone", - "controltower:GetLandingZoneOperation", - "controltower:ListTagsForResource", - "controltower:TagResource", - "controltower:GetLandingZone", - "controltower:UntagResource", - "cloudformation:DescribeOrganizationsAccess", - "servicecatalog:AssociatePrincipalWithPortfolio", - "servicecatalog:AssociateProductWithPortfolio", - "servicecatalog:CreatePortfolio", - "servicecatalog:CreateProduct", - "servicecatalog:CreateProvisioningArtifact", - "servicecatalog:ListPortfolios", - "servicecatalog:ListProvisioningArtifacts", - "servicecatalog:SearchProductsAsAdmin", - "servicecatalog:UpdatePortfolio", - "servicecatalog:UpdateProvisioningArtifact", - "servicecatalog:ListPrincipalsForPortfolio", - "organizations:CreateOrganizationalUnit", - "organizations:CreateOrganization", - "organizations:UpdatePolicy", - "organizations:CreatePolicy", - "organizations:AttachPolicy", - "organizations:DetachPolicy", - "organizations:DeletePolicy", - "organizations:EnablePolicyType", - "organizations:EnableAWSServiceAccess", - "organizations:ListRoots", - "sso:GetPeregrineStatus", - "sso:ListDirectoryAssociations", - "sso:StartPeregrine", - "sso:RegisterRegion" - ] - } - }, - "primaryIdentifier": [ - "/properties/LandingZoneIdentifier" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[0-9a-zA-Z_\\-:\\/]+$", - "type": "string" - }, - "DriftStatus": { - "$ref": "#/definitions/LandingZoneDriftStatus" - }, - "LandingZoneIdentifier": { - "type": "string" - }, - "LatestAvailableVersion": { - "maxLength": 10, - "minLength": 3, - "pattern": "\\d+.\\d+", - "type": "string" - }, - "Manifest": {}, - "Status": { - "$ref": "#/definitions/LandingZoneStatus" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "Version": { - "maxLength": 10, - "minLength": 3, - "pattern": "\\d+.\\d+", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/LandingZoneIdentifier", - "/properties/Arn", - "/properties/Status", - "/properties/LatestAvailableVersion", - "/properties/DriftStatus" - ], - "required": [ - "Manifest", - "Version" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "controltower:UntagResource", - "controltower:TagResource", - "controltower:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ControlTower::LandingZone" -} +{ + "additionalProperties": false, + "definitions": { + "LandingZoneDriftStatus": { + "enum": [ + "DRIFTED", + "IN_SYNC" + ], + "type": "string" + }, + "LandingZoneStatus": { + "enum": [ + "ACTIVE", + "PROCESSING", + "FAILED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::ControlTower::LandingZone Resource Type", + "handlers": { + "create": { + "permissions": [ + "controltower:CreateLandingZone", + "controltower:GetLandingZoneOperation", + "controltower:ListTagsForResource", + "controltower:TagResource", + "controltower:GetLandingZone", + "cloudformation:DescribeOrganizationsAccess", + "servicecatalog:AssociatePrincipalWithPortfolio", + "servicecatalog:AssociateProductWithPortfolio", + "servicecatalog:CreatePortfolio", + "servicecatalog:CreateProduct", + "servicecatalog:CreateProvisioningArtifact", + "servicecatalog:ListPortfolios", + "servicecatalog:ListProvisioningArtifacts", + "servicecatalog:SearchProductsAsAdmin", + "servicecatalog:UpdatePortfolio", + "servicecatalog:UpdateProvisioningArtifact", + "servicecatalog:ListPrincipalsForPortfolio", + "organizations:CreateOrganizationalUnit", + "organizations:CreateOrganization", + "organizations:UpdatePolicy", + "organizations:CreatePolicy", + "organizations:AttachPolicy", + "organizations:DetachPolicy", + "organizations:DeletePolicy", + "organizations:EnablePolicyType", + "organizations:EnableAWSServiceAccess", + "organizations:ListRoots", + "sso:GetPeregrineStatus", + "sso:ListDirectoryAssociations", + "sso:StartPeregrine", + "iam:CreateServiceLinkedRole", + "cloudformation:EnableOrganizationsAccess", + "sso:RegisterRegion" + ] + }, + "delete": { + "permissions": [ + "controltower:DeleteLandingZone", + "controltower:GetLandingZone", + "controltower:GetLandingZoneOperation", + "cloudformation:DescribeOrganizationsAccess", + "servicecatalog:ListPortfolios", + "servicecatalog:ListProvisioningArtifacts", + "servicecatalog:SearchProductsAsAdmin", + "servicecatalog:DeleteProvisioningArtifact", + "servicecatalog:ListPrincipalsForPortfolio", + "servicecatalog:DeleteProduct", + "servicecatalog:DisassociatePrincipalFromPortfolio", + "servicecatalog:DisassociateProductFromPortfolio", + "servicecatalog:DeletePortfolio", + "organizations:AttachPolicy", + "organizations:DetachPolicy", + "organizations:DeletePolicy", + "organizations:ListRoots", + "sso:GetPeregrineStatus", + "sso:ListDirectoryAssociations", + "iam:CreateServiceLinkedRole", + "iam:DeleteRolePolicy", + "iam:DetachRolePolicy", + "cloudformation:EnableOrganizationsAccess", + "iam:DeleteRole" + ] + }, + "list": { + "permissions": [ + "controltower:ListLandingZones" + ] + }, + "read": { + "permissions": [ + "controltower:GetLandingZone", + "controltower:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "controltower:UpdateLandingZone", + "controltower:GetLandingZoneOperation", + "controltower:ListTagsForResource", + "controltower:TagResource", + "controltower:GetLandingZone", + "controltower:UntagResource", + "cloudformation:DescribeOrganizationsAccess", + "servicecatalog:AssociatePrincipalWithPortfolio", + "servicecatalog:AssociateProductWithPortfolio", + "servicecatalog:CreatePortfolio", + "servicecatalog:CreateProduct", + "servicecatalog:CreateProvisioningArtifact", + "servicecatalog:ListPortfolios", + "servicecatalog:ListProvisioningArtifacts", + "servicecatalog:SearchProductsAsAdmin", + "servicecatalog:UpdatePortfolio", + "servicecatalog:UpdateProvisioningArtifact", + "servicecatalog:ListPrincipalsForPortfolio", + "organizations:CreateOrganizationalUnit", + "organizations:CreateOrganization", + "organizations:UpdatePolicy", + "organizations:CreatePolicy", + "organizations:AttachPolicy", + "organizations:DetachPolicy", + "organizations:DeletePolicy", + "organizations:EnablePolicyType", + "organizations:EnableAWSServiceAccess", + "organizations:ListRoots", + "sso:GetPeregrineStatus", + "iam:CreateServiceLinkedRole", + "cloudformation:EnableOrganizationsAccess", + "sso:ListDirectoryAssociations", + "sso:StartPeregrine", + "sso:RegisterRegion" + ] + } + }, + "primaryIdentifier": [ + "/properties/LandingZoneIdentifier" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[0-9a-zA-Z_\\-:\\/]+$", + "type": "string" + }, + "DriftStatus": { + "$ref": "#/definitions/LandingZoneDriftStatus" + }, + "LandingZoneIdentifier": { + "type": "string" + }, + "LatestAvailableVersion": { + "maxLength": 10, + "minLength": 3, + "pattern": "\\d+.\\d+", + "type": "string" + }, + "Manifest": {}, + "Status": { + "$ref": "#/definitions/LandingZoneStatus" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Version": { + "maxLength": 10, + "minLength": 3, + "pattern": "\\d+.\\d+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LandingZoneIdentifier", + "/properties/Arn", + "/properties/Status", + "/properties/LatestAvailableVersion", + "/properties/DriftStatus" + ], + "required": [ + "Manifest", + "Version" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "controltower:UntagResource", + "controltower:TagResource", + "controltower:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ControlTower::LandingZone" +} diff --git a/src/schema/aws-cur-reportdefinition.json b/src/schema/aws-cur-reportdefinition.json index b286c11c..b1ee396f 100644 --- a/src/schema/aws-cur-reportdefinition.json +++ b/src/schema/aws-cur-reportdefinition.json @@ -1,182 +1,182 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ReportName", - "/properties/AdditionalSchemaElements", - "/properties/TimeUnit", - "/properties/ReportVersioning", - "/properties/BillingViewArn" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::CUR::ReportDefinition resource creates a Cost & Usage Report with user-defined settings. You can use this resource to define settings like time granularity (hourly, daily, monthly), file format (Parquet, CSV), and S3 bucket for delivery of these reports.", - "handlers": { - "create": { - "permissions": [ - "cur:PutReportDefinition", - "cur:DescribeReportDefinitions" - ] - }, - "delete": { - "permissions": [ - "cur:DeleteReportDefinition" - ] - }, - "list": { - "permissions": [ - "cur:DescribeReportDefinitions" - ] - }, - "read": { - "permissions": [ - "cur:DescribeReportDefinitions" - ] - }, - "update": { - "permissions": [ - "cur:DescribeReportDefinitions", - "cur:ModifyReportDefinition" - ] - } - }, - "primaryIdentifier": [ - "/properties/ReportName" - ], - "properties": { - "AdditionalArtifacts": { - "default": [], - "description": "A list of manifests that you want Amazon Web Services to create for this report.", - "items": { - "description": "The types of manifest that you want AWS to create for this report.", - "enum": [ - "REDSHIFT", - "QUICKSIGHT", - "ATHENA" - ], - "type": "string" - }, - "type": "array" - }, - "AdditionalSchemaElements": { - "default": [], - "description": "A list of strings that indicate additional content that Amazon Web Services includes in the report, such as individual resource IDs.", - "items": { - "description": "Whether or not AWS includes resource IDs in the report.", - "enum": [ - "RESOURCES", - "SPLIT_COST_ALLOCATION_DATA", - "MANUAL_DISCOUNT_COMPATIBILITY" - ], - "type": "string" - }, - "type": "array" - }, - "BillingViewArn": { - "default": null, - "description": "The Amazon resource name of the billing view. You can get this value by using the billing view service public APIs.", - "maxLength": 128, - "minLength": 1, - "pattern": "(arn:aws(-cn)?:billing::[0-9]{12}:billingview/)?[a-zA-Z0-9_\\+=\\.\\-@].{1,30}", - "type": "string" - }, - "Compression": { - "description": "The compression format that AWS uses for the report.", - "enum": [ - "ZIP", - "GZIP", - "Parquet" - ], - "type": "string" - }, - "Format": { - "description": "The format that AWS saves the report in.", - "enum": [ - "textORcsv", - "Parquet" - ], - "type": "string" - }, - "RefreshClosedReports": { - "description": "Whether you want Amazon Web Services to update your reports after they have been finalized if Amazon Web Services detects charges related to previous months. These charges can include refunds, credits, or support fees.", - "type": "boolean" - }, - "ReportName": { - "description": "The name of the report that you want to create. The name must be unique, is case sensitive, and can't include spaces.", - "maxLength": 256, - "minLength": 1, - "pattern": "[0-9A-Za-z!\\-_.*\\'()]+", - "type": "string" - }, - "ReportVersioning": { - "description": "Whether you want Amazon Web Services to overwrite the previous version of each report or to deliver the report in addition to the previous versions.", - "enum": [ - "CREATE_NEW_REPORT", - "OVERWRITE_REPORT" - ], - "type": "string" - }, - "S3Bucket": { - "description": "The S3 bucket where AWS delivers the report.", - "maxLength": 256, - "minLength": 1, - "pattern": "[A-Za-z0-9_\\.\\-]+", - "type": "string" - }, - "S3Prefix": { - "description": "The prefix that AWS adds to the report name when AWS delivers the report. Your prefix can't include spaces.", - "maxLength": 256, - "minLength": 1, - "pattern": "[0-9A-Za-z!\\-_.*\\'()/]*", - "type": "string" - }, - "S3Region": { - "description": "The region of the S3 bucket that AWS delivers the report into.", - "type": "string" - }, - "TimeUnit": { - "description": "The granularity of the line items in the report.", - "enum": [ - "HOURLY", - "DAILY", - "MONTHLY" - ], - "type": "string" - } - }, - "required": [ - "ReportName", - "TimeUnit", - "Format", - "Compression", - "S3Bucket", - "S3Prefix", - "S3Region", - "RefreshClosedReports", - "ReportVersioning" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cur.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::CUR::ReportDefinition" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ReportName", + "/properties/AdditionalSchemaElements", + "/properties/TimeUnit", + "/properties/ReportVersioning", + "/properties/BillingViewArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::CUR::ReportDefinition resource creates a Cost & Usage Report with user-defined settings. You can use this resource to define settings like time granularity (hourly, daily, monthly), file format (Parquet, CSV), and S3 bucket for delivery of these reports.", + "handlers": { + "create": { + "permissions": [ + "cur:PutReportDefinition", + "cur:DescribeReportDefinitions" + ] + }, + "delete": { + "permissions": [ + "cur:DeleteReportDefinition" + ] + }, + "list": { + "permissions": [ + "cur:DescribeReportDefinitions" + ] + }, + "read": { + "permissions": [ + "cur:DescribeReportDefinitions" + ] + }, + "update": { + "permissions": [ + "cur:DescribeReportDefinitions", + "cur:ModifyReportDefinition" + ] + } + }, + "primaryIdentifier": [ + "/properties/ReportName" + ], + "properties": { + "AdditionalArtifacts": { + "default": [], + "description": "A list of manifests that you want Amazon Web Services to create for this report.", + "items": { + "description": "The types of manifest that you want AWS to create for this report.", + "enum": [ + "REDSHIFT", + "QUICKSIGHT", + "ATHENA" + ], + "type": "string" + }, + "type": "array" + }, + "AdditionalSchemaElements": { + "default": [], + "description": "A list of strings that indicate additional content that Amazon Web Services includes in the report, such as individual resource IDs.", + "items": { + "description": "Whether or not AWS includes resource IDs in the report.", + "enum": [ + "RESOURCES", + "SPLIT_COST_ALLOCATION_DATA", + "MANUAL_DISCOUNT_COMPATIBILITY" + ], + "type": "string" + }, + "type": "array" + }, + "BillingViewArn": { + "default": null, + "description": "The Amazon resource name of the billing view. You can get this value by using the billing view service public APIs.", + "maxLength": 128, + "minLength": 1, + "pattern": "(arn:aws(-cn)?:billing::[0-9]{12}:billingview/)?[a-zA-Z0-9_\\+=\\.\\-@].{1,30}", + "type": "string" + }, + "Compression": { + "description": "The compression format that AWS uses for the report.", + "enum": [ + "ZIP", + "GZIP", + "Parquet" + ], + "type": "string" + }, + "Format": { + "description": "The format that AWS saves the report in.", + "enum": [ + "textORcsv", + "Parquet" + ], + "type": "string" + }, + "RefreshClosedReports": { + "description": "Whether you want Amazon Web Services to update your reports after they have been finalized if Amazon Web Services detects charges related to previous months. These charges can include refunds, credits, or support fees.", + "type": "boolean" + }, + "ReportName": { + "description": "The name of the report that you want to create. The name must be unique, is case sensitive, and can't include spaces.", + "maxLength": 256, + "minLength": 1, + "pattern": "[0-9A-Za-z!\\-_.*\\'()]+", + "type": "string" + }, + "ReportVersioning": { + "description": "Whether you want Amazon Web Services to overwrite the previous version of each report or to deliver the report in addition to the previous versions.", + "enum": [ + "CREATE_NEW_REPORT", + "OVERWRITE_REPORT" + ], + "type": "string" + }, + "S3Bucket": { + "description": "The S3 bucket where AWS delivers the report.", + "maxLength": 256, + "minLength": 1, + "pattern": "[A-Za-z0-9_\\.\\-]+", + "type": "string" + }, + "S3Prefix": { + "description": "The prefix that AWS adds to the report name when AWS delivers the report. Your prefix can't include spaces.", + "maxLength": 256, + "minLength": 1, + "pattern": "[0-9A-Za-z!\\-_.*\\'()/]*", + "type": "string" + }, + "S3Region": { + "description": "The region of the S3 bucket that AWS delivers the report into.", + "type": "string" + }, + "TimeUnit": { + "description": "The granularity of the line items in the report.", + "enum": [ + "HOURLY", + "DAILY", + "MONTHLY" + ], + "type": "string" + } + }, + "required": [ + "ReportName", + "TimeUnit", + "Format", + "Compression", + "S3Bucket", + "S3Prefix", + "S3Region", + "RefreshClosedReports", + "ReportVersioning" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cur.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::CUR::ReportDefinition" +} diff --git a/src/schema/aws-customerprofiles-calculatedattributedefinition.json b/src/schema/aws-customerprofiles-calculatedattributedefinition.json index 2261638b..e8acc5a6 100644 --- a/src/schema/aws-customerprofiles-calculatedattributedefinition.json +++ b/src/schema/aws-customerprofiles-calculatedattributedefinition.json @@ -1,327 +1,327 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainName", - "/properties/CalculatedAttributeName" - ], - "definitions": { - "AttributeDetails": { - "additionalProperties": false, - "description": "Mathematical expression and a list of attribute items specified in that expression.", - "properties": { - "Attributes": { - "$ref": "#/definitions/AttributeList" - }, - "Expression": { - "$ref": "#/definitions/Expression" - } - }, - "required": [ - "Attributes", - "Expression" - ], - "type": "object" - }, - "AttributeItem": { - "additionalProperties": false, - "description": "The details of a single attribute item specified in the mathematical expression.", - "properties": { - "Name": { - "$ref": "#/definitions/AttributeName" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "AttributeList": { - "description": "A list of attribute items specified in the mathematical expression.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AttributeItem" - }, - "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "AttributeName": { - "description": "The name of an attribute defined in a profile object type.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - }, - "CalculatedAttributeName": { - "description": "The unique name of the calculated attribute.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z_][a-zA-Z_0-9-]*$", - "type": "string" - }, - "Conditions": { - "additionalProperties": false, - "description": "The conditions including range, object count, and threshold for the calculated attribute.", - "properties": { - "ObjectCount": { - "$ref": "#/definitions/ObjectCount" - }, - "Range": { - "$ref": "#/definitions/Range" - }, - "Threshold": { - "$ref": "#/definitions/Threshold" - } - }, - "type": "object" - }, - "Description": { - "description": "The description of the calculated attribute.", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "DisplayName": { - "description": "The display name of the calculated attribute.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z_][a-zA-Z_0-9-\\s]*$", - "type": "string" - }, - "DomainName": { - "description": "The unique name of the domain.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "Expression": { - "description": "Mathematical expression that is performed on attribute items provided in the attribute list. Each element in the expression should follow the structure of \"{ObjectTypeName.AttributeName}\".", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "ObjectCount": { - "description": "The number of profile objects used for the calculated attribute.", - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "Range": { - "additionalProperties": false, - "description": "The relative time period over which data is included in the aggregation.", - "properties": { - "Unit": { - "$ref": "#/definitions/RangeUnit" - }, - "Value": { - "$ref": "#/definitions/RangeValue" - } - }, - "required": [ - "Value", - "Unit" - ], - "type": "object" - }, - "RangeUnit": { - "description": "The unit of time.", - "enum": [ - "DAYS" - ], - "type": "string" - }, - "RangeValue": { - "description": "The amount of time of the specified unit.", - "maximum": 366, - "minimum": 1, - "type": "integer" - }, - "Statistic": { - "description": "The aggregation operation to perform for the calculated attribute.", - "enum": [ - "FIRST_OCCURRENCE", - "LAST_OCCURRENCE", - "COUNT", - "SUM", - "MINIMUM", - "MAXIMUM", - "AVERAGE", - "MAX_OCCURRENCE" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "Threshold": { - "additionalProperties": false, - "description": "The threshold for the calculated attribute.", - "properties": { - "Operator": { - "$ref": "#/definitions/ThresholdOperator" - }, - "Value": { - "$ref": "#/definitions/ThresholdValue" - } - }, - "required": [ - "Value", - "Operator" - ], - "type": "object" - }, - "ThresholdOperator": { - "description": "The operator of the threshold.", - "enum": [ - "EQUAL_TO", - "GREATER_THAN", - "LESS_THAN", - "NOT_EQUAL_TO" - ], - "type": "string" - }, - "ThresholdValue": { - "description": "The value of the threshold.", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "description": "A calculated attribute definition for Customer Profiles", - "handlers": { - "create": { - "permissions": [ - "profile:CreateCalculatedAttributeDefinition", - "profile:TagResource" - ] - }, - "delete": { - "permissions": [ - "profile:DeleteCalculatedAttributeDefinition" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DomainName": { - "$ref": "resource-schema.json#/properties/DomainName" - } - }, - "required": [ - "DomainName" - ] - }, - "permissions": [ - "profile:ListCalculatedAttributeDefinitions" - ] - }, - "read": { - "permissions": [ - "profile:GetCalculatedAttributeDefinition" - ] - }, - "update": { - "permissions": [ - "profile:GetCalculatedAttributeDefinition", - "profile:UpdateCalculatedAttributeDefinition", - "profile:UntagResource", - "profile:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainName", - "/properties/CalculatedAttributeName" - ], - "properties": { - "AttributeDetails": { - "$ref": "#/definitions/AttributeDetails" - }, - "CalculatedAttributeName": { - "$ref": "#/definitions/CalculatedAttributeName" - }, - "Conditions": { - "$ref": "#/definitions/Conditions" - }, - "CreatedAt": { - "description": "The timestamp of when the calculated attribute definition was created.", - "type": "string" - }, - "Description": { - "$ref": "#/definitions/Description" - }, - "DisplayName": { - "$ref": "#/definitions/DisplayName" - }, - "DomainName": { - "$ref": "#/definitions/DomainName" - }, - "LastUpdatedAt": { - "description": "The timestamp of when the calculated attribute definition was most recently edited.", - "type": "string" - }, - "Statistic": { - "$ref": "#/definitions/Statistic" - }, - "Tags": { - "$ref": "#/definitions/Tags" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/LastUpdatedAt" - ], - "required": [ - "DomainName", - "CalculatedAttributeName", - "AttributeDetails", - "Statistic" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-customer-profiles", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "profile:TagResource", - "profile:UntagResource", - "profile:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CustomerProfiles::CalculatedAttributeDefinition" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainName", + "/properties/CalculatedAttributeName" + ], + "definitions": { + "AttributeDetails": { + "additionalProperties": false, + "description": "Mathematical expression and a list of attribute items specified in that expression.", + "properties": { + "Attributes": { + "$ref": "#/definitions/AttributeList" + }, + "Expression": { + "$ref": "#/definitions/Expression" + } + }, + "required": [ + "Attributes", + "Expression" + ], + "type": "object" + }, + "AttributeItem": { + "additionalProperties": false, + "description": "The details of a single attribute item specified in the mathematical expression.", + "properties": { + "Name": { + "$ref": "#/definitions/AttributeName" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "AttributeList": { + "description": "A list of attribute items specified in the mathematical expression.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AttributeItem" + }, + "maxItems": 2, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "AttributeName": { + "description": "The name of an attribute defined in a profile object type.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.-]+$", + "type": "string" + }, + "CalculatedAttributeName": { + "description": "The unique name of the calculated attribute.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z_][a-zA-Z_0-9-]*$", + "type": "string" + }, + "Conditions": { + "additionalProperties": false, + "description": "The conditions including range, object count, and threshold for the calculated attribute.", + "properties": { + "ObjectCount": { + "$ref": "#/definitions/ObjectCount" + }, + "Range": { + "$ref": "#/definitions/Range" + }, + "Threshold": { + "$ref": "#/definitions/Threshold" + } + }, + "type": "object" + }, + "Description": { + "description": "The description of the calculated attribute.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "DisplayName": { + "description": "The display name of the calculated attribute.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z_][a-zA-Z_0-9-\\s]*$", + "type": "string" + }, + "DomainName": { + "description": "The unique name of the domain.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "Expression": { + "description": "Mathematical expression that is performed on attribute items provided in the attribute list. Each element in the expression should follow the structure of \"{ObjectTypeName.AttributeName}\".", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "ObjectCount": { + "description": "The number of profile objects used for the calculated attribute.", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "Range": { + "additionalProperties": false, + "description": "The relative time period over which data is included in the aggregation.", + "properties": { + "Unit": { + "$ref": "#/definitions/RangeUnit" + }, + "Value": { + "$ref": "#/definitions/RangeValue" + } + }, + "required": [ + "Value", + "Unit" + ], + "type": "object" + }, + "RangeUnit": { + "description": "The unit of time.", + "enum": [ + "DAYS" + ], + "type": "string" + }, + "RangeValue": { + "description": "The amount of time of the specified unit.", + "maximum": 366, + "minimum": 1, + "type": "integer" + }, + "Statistic": { + "description": "The aggregation operation to perform for the calculated attribute.", + "enum": [ + "FIRST_OCCURRENCE", + "LAST_OCCURRENCE", + "COUNT", + "SUM", + "MINIMUM", + "MAXIMUM", + "AVERAGE", + "MAX_OCCURRENCE" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "Threshold": { + "additionalProperties": false, + "description": "The threshold for the calculated attribute.", + "properties": { + "Operator": { + "$ref": "#/definitions/ThresholdOperator" + }, + "Value": { + "$ref": "#/definitions/ThresholdValue" + } + }, + "required": [ + "Value", + "Operator" + ], + "type": "object" + }, + "ThresholdOperator": { + "description": "The operator of the threshold.", + "enum": [ + "EQUAL_TO", + "GREATER_THAN", + "LESS_THAN", + "NOT_EQUAL_TO" + ], + "type": "string" + }, + "ThresholdValue": { + "description": "The value of the threshold.", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "description": "A calculated attribute definition for Customer Profiles", + "handlers": { + "create": { + "permissions": [ + "profile:CreateCalculatedAttributeDefinition", + "profile:TagResource" + ] + }, + "delete": { + "permissions": [ + "profile:DeleteCalculatedAttributeDefinition" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainName": { + "$ref": "resource-schema.json#/properties/DomainName" + } + }, + "required": [ + "DomainName" + ] + }, + "permissions": [ + "profile:ListCalculatedAttributeDefinitions" + ] + }, + "read": { + "permissions": [ + "profile:GetCalculatedAttributeDefinition" + ] + }, + "update": { + "permissions": [ + "profile:GetCalculatedAttributeDefinition", + "profile:UpdateCalculatedAttributeDefinition", + "profile:UntagResource", + "profile:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainName", + "/properties/CalculatedAttributeName" + ], + "properties": { + "AttributeDetails": { + "$ref": "#/definitions/AttributeDetails" + }, + "CalculatedAttributeName": { + "$ref": "#/definitions/CalculatedAttributeName" + }, + "Conditions": { + "$ref": "#/definitions/Conditions" + }, + "CreatedAt": { + "description": "The timestamp of when the calculated attribute definition was created.", + "type": "string" + }, + "Description": { + "$ref": "#/definitions/Description" + }, + "DisplayName": { + "$ref": "#/definitions/DisplayName" + }, + "DomainName": { + "$ref": "#/definitions/DomainName" + }, + "LastUpdatedAt": { + "description": "The timestamp of when the calculated attribute definition was most recently edited.", + "type": "string" + }, + "Statistic": { + "$ref": "#/definitions/Statistic" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/LastUpdatedAt" + ], + "required": [ + "DomainName", + "CalculatedAttributeName", + "AttributeDetails", + "Statistic" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-customer-profiles", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "profile:TagResource", + "profile:UntagResource", + "profile:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CustomerProfiles::CalculatedAttributeDefinition" +} diff --git a/src/schema/aws-customerprofiles-domain.json b/src/schema/aws-customerprofiles-domain.json index 3831a103..426d4cf1 100644 --- a/src/schema/aws-customerprofiles-domain.json +++ b/src/schema/aws-customerprofiles-domain.json @@ -1,468 +1,458 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainName" - ], - "definitions": { - "AttributeTypesSelector": { - "additionalProperties": false, - "description": "Configures information about the AttributeTypesSelector where the rule-based identity resolution uses to match profiles.", - "properties": { - "Address": { - "description": "The Address type. You can choose from Address, BusinessAddress, MaillingAddress, and ShippingAddress. You only can use the Address type in the MatchingRule. For example, if you want to match profile based on BusinessAddress.City or MaillingAddress.City, you need to choose the BusinessAddress and the MaillingAddress to represent the Address type and specify the Address.City on the matching rule.", - "items": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "maxItems": 4, - "minItems": 1, - "type": "array" - }, - "AttributeMatchingModel": { - "description": "Configures the AttributeMatchingModel, you can either choose ONE_TO_ONE or MANY_TO_MANY.", - "enum": [ - "ONE_TO_ONE", - "MANY_TO_MANY" - ], - "type": "string" - }, - "EmailAddress": { - "description": "The Email type. You can choose from EmailAddress, BusinessEmailAddress and PersonalEmailAddress. You only can use the EmailAddress type in the MatchingRule. For example, if you want to match profile based on PersonalEmailAddress or BusinessEmailAddress, you need to choose the PersonalEmailAddress and the BusinessEmailAddress to represent the EmailAddress type and only specify the EmailAddress on the matching rule.", - "items": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "maxItems": 3, - "minItems": 1, - "type": "array" - }, - "PhoneNumber": { - "description": "The PhoneNumber type. You can choose from PhoneNumber, HomePhoneNumber, and MobilePhoneNumber. You only can use the PhoneNumber type in the MatchingRule. For example, if you want to match a profile based on Phone or HomePhone, you need to choose the Phone and the HomePhone to represent the PhoneNumber type and only specify the PhoneNumber on the matching rule.", - "items": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "maxItems": 4, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "AttributeMatchingModel" - ], - "type": "object" - }, - "AutoMerging": { - "additionalProperties": false, - "description": "Configuration information about the auto-merging process.", - "properties": { - "ConflictResolution": { - "$ref": "#/definitions/ConflictResolution" - }, - "Consolidation": { - "$ref": "#/definitions/Consolidation" - }, - "Enabled": { - "description": "The flag that enables the auto-merging of duplicate profiles.", - "type": "boolean" - }, - "MinAllowedConfidenceScoreForMerging": { - "description": "A number between 0 and 1 that represents the minimum confidence score required for profiles within a matching group to be merged during the auto-merge process. A higher score means higher similarity required to merge profiles.", - "maximum": 1.0, - "minimum": 0.0, - "type": "number" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "ConflictResolution": { - "additionalProperties": false, - "description": "How the auto-merging process should resolve conflicts between different profiles. For example, if Profile A and Profile B have the same FirstName and LastName (and that is the matching criteria), which EmailAddress should be used? ", - "properties": { - "ConflictResolvingModel": { - "description": "How the auto-merging process should resolve conflicts between different profiles.", - "enum": [ - "RECENCY", - "SOURCE" - ], - "type": "string" - }, - "SourceName": { - "description": "The ObjectType name that is used to resolve profile merging conflicts when choosing SOURCE as the ConflictResolvingModel.", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ConflictResolvingModel" - ], - "type": "object" - }, - "Consolidation": { - "additionalProperties": false, - "description": "A list of matching attributes that represent matching criteria. If two profiles meet at least one of the requirements in the matching attributes list, they will be merged.", - "properties": { - "MatchingAttributesList": { - "description": "A list of matching criteria.", - "items": { - "$ref": "#/definitions/MatchingAttributes" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "MatchingAttributesList" - ], - "type": "object" - }, - "DomainStats": { - "additionalProperties": false, - "description": "Usage-specific statistics about the domain.", - "properties": { - "MeteringProfileCount": { - "description": "The number of profiles that you are currently paying for in the domain. If you have more than 100 objects associated with a single profile, that profile counts as two profiles. If you have more than 200 objects, that profile counts as three, and so on.", - "type": "number" - }, - "ObjectCount": { - "description": "The total number of objects in domain.", - "type": "number" - }, - "ProfileCount": { - "description": "The total number of profiles currently in the domain.", - "type": "number" - }, - "TotalSize": { - "description": "The total size, in bytes, of all objects in the domain.", - "type": "number" - } - }, - "type": "object" - }, - "ExportingConfig": { - "additionalProperties": false, - "description": "Configuration information for exporting Identity Resolution results, for example, to an S3 bucket.", - "properties": { - "S3Exporting": { - "$ref": "#/definitions/S3ExportingConfig" - } - }, - "type": "object" - }, - "JobSchedule": { - "additionalProperties": false, - "description": "The day and time when do you want to start the Identity Resolution Job every week.", - "properties": { - "DayOfTheWeek": { - "description": "The day when the Identity Resolution Job should run every week.", - "enum": [ - "SUNDAY", - "MONDAY", - "TUESDAY", - "WEDNESDAY", - "THURSDAY", - "FRIDAY", - "SATURDAY" - ], - "type": "string" - }, - "Time": { - "description": "The time when the Identity Resolution Job should run every week.", - "maxLength": 5, - "minLength": 3, - "pattern": "^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$", - "type": "string" - } - }, - "required": [ - "DayOfTheWeek", - "Time" - ], - "type": "object" - }, - "Matching": { - "additionalProperties": false, - "description": "The process of matching duplicate profiles. If Matching = true, Amazon Connect Customer Profiles starts a weekly batch process called Identity Resolution Job. If you do not specify a date and time for Identity Resolution Job to run, by default it runs every Saturday at 12AM UTC to detect duplicate profiles in your domains. After the Identity Resolution Job completes, use the GetMatches API to return and review the results. Or, if you have configured ExportingConfig in the MatchingRequest, you can download the results from S3.", - "properties": { - "AutoMerging": { - "$ref": "#/definitions/AutoMerging" - }, - "Enabled": { - "description": "The flag that enables the matching process of duplicate profiles.", - "type": "boolean" - }, - "ExportingConfig": { - "$ref": "#/definitions/ExportingConfig" - }, - "JobSchedule": { - "$ref": "#/definitions/JobSchedule" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "MatchingAttributes": { - "items": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - }, - "MatchingRule": { - "additionalProperties": false, - "description": "Specifies how does the rule-based matching process should match profiles.", - "properties": { - "Rule": { - "$ref": "#/definitions/MatchingRuleAttributeList" - } - }, - "required": [ - "Rule" - ], - "type": "object" - }, - "MatchingRuleAttributeList": { - "description": "A single rule level of the MatchRules. Configures how the rule-based matching process should match profiles.", - "items": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "maxItems": 15, - "minItems": 1, - "type": "array" - }, - "RuleBasedMatching": { - "additionalProperties": false, - "description": "The process of matching duplicate profiles using the Rule-Based matching. If RuleBasedMatching = true, Amazon Connect Customer Profiles will start to match and merge your profiles according to your configuration in the RuleBasedMatchingRequest. You can use the ListRuleBasedMatches and GetSimilarProfiles API to return and review the results. Also, if you have configured ExportingConfig in the RuleBasedMatchingRequest, you can download the results from S3.", - "properties": { - "AttributeTypesSelector": { - "$ref": "#/definitions/AttributeTypesSelector" - }, - "ConflictResolution": { - "$ref": "#/definitions/ConflictResolution" - }, - "Enabled": { - "description": "The flag that enables the rule-based matching process of duplicate profiles.", - "type": "boolean" - }, - "ExportingConfig": { - "$ref": "#/definitions/ExportingConfig" - }, - "MatchingRules": { - "description": "Configures how the rule-based matching process should match profiles. You can have up to 15 MatchingRule in the MatchingRules.", - "items": { - "$ref": "#/definitions/MatchingRule" - }, - "maxItems": 15, - "minItems": 1, - "type": "array" - }, - "MaxAllowedRuleLevelForMatching": { - "description": "Indicates the maximum allowed rule level for matching.", - "maximum": 15, - "minimum": 1, - "type": "integer" - }, - "MaxAllowedRuleLevelForMerging": { - "description": "Indicates the maximum allowed rule level for merging.", - "maximum": 15, - "minimum": 1, - "type": "integer" - }, - "Status": { - "enum": [ - "PENDING", - "IN_PROGRESS", - "ACTIVE" - ], - "type": "string" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "S3ExportingConfig": { - "additionalProperties": false, - "description": "The S3 location where Identity Resolution Jobs write result files.", - "properties": { - "S3BucketName": { - "description": "The name of the S3 bucket where Identity Resolution Jobs write result files.", - "maxLength": 63, - "minLength": 3, - "pattern": "^[a-z0-9.-]+$", - "type": "string" - }, - "S3KeyName": { - "description": "The S3 key name of the location where Identity Resolution Jobs write result files.", - "maxLength": 800, - "minLength": 1, - "pattern": ".*", - "type": "string" - } - }, - "required": [ - "S3BucketName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "A domain defined for 3rd party data source in Profile Service", - "handlers": { - "create": { - "permissions": [ - "profile:CreateDomain", - "profile:TagResource" - ] - }, - "delete": { - "permissions": [ - "profile:DeleteDomain" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DomainName": { - "$ref": "resource-schema.json#/properties/DomainName" - } - }, - "required": [ - "DomainName" - ] - }, - "permissions": [ - "profile:ListDomains" - ] - }, - "read": { - "permissions": [ - "profile:GetDomain" - ] - }, - "update": { - "permissions": [ - "profile:GetDomain", - "profile:UpdateDomain", - "profile:UntagResource", - "profile:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainName" - ], - "properties": { - "CreatedAt": { - "description": "The time of this integration got created", - "type": "string" - }, - "DeadLetterQueueUrl": { - "description": "The URL of the SQS dead letter queue", - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "DefaultEncryptionKey": { - "description": "The default encryption key", - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "DefaultExpirationDays": { - "description": "The default number of days until the data within the domain expires.", - "maximum": 1098, - "minimum": 1, - "type": "integer" - }, - "DomainName": { - "description": "The unique name of the domain.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "LastUpdatedAt": { - "description": "The time of this integration got last updated at", - "type": "string" - }, - "Matching": { - "$ref": "#/definitions/Matching" - }, - "RuleBasedMatching": { - "$ref": "#/definitions/RuleBasedMatching" - }, - "Stats": { - "$ref": "#/definitions/DomainStats" - }, - "Tags": { - "description": "The tags (keys and values) associated with the domain", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/LastUpdatedAt", - "/properties/CreatedAt", - "/properties/RuleBasedMatching/Status", - "/properties/Stats" - ], - "required": [ - "DomainName", - "DefaultExpirationDays" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-customer-profiles.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "profile:TagResource", - "profile:UntagResource", - "profile:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CustomerProfiles::Domain" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainName" + ], + "definitions": { + "AttributeTypesSelector": { + "additionalProperties": false, + "description": "Configures information about the AttributeTypesSelector where the rule-based identity resolution uses to match profiles.", + "properties": { + "Address": { + "description": "The Address type. You can choose from Address, BusinessAddress, MaillingAddress, and ShippingAddress. You only can use the Address type in the MatchingRule. For example, if you want to match profile based on BusinessAddress.City or MaillingAddress.City, you need to choose the BusinessAddress and the MaillingAddress to represent the Address type and specify the Address.City on the matching rule.", + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "AttributeMatchingModel": { + "description": "Configures the AttributeMatchingModel, you can either choose ONE_TO_ONE or MANY_TO_MANY.", + "enum": [ + "ONE_TO_ONE", + "MANY_TO_MANY" + ], + "type": "string" + }, + "EmailAddress": { + "description": "The Email type. You can choose from EmailAddress, BusinessEmailAddress and PersonalEmailAddress. You only can use the EmailAddress type in the MatchingRule. For example, if you want to match profile based on PersonalEmailAddress or BusinessEmailAddress, you need to choose the PersonalEmailAddress and the BusinessEmailAddress to represent the EmailAddress type and only specify the EmailAddress on the matching rule.", + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array" + }, + "PhoneNumber": { + "description": "The PhoneNumber type. You can choose from PhoneNumber, HomePhoneNumber, and MobilePhoneNumber. You only can use the PhoneNumber type in the MatchingRule. For example, if you want to match a profile based on Phone or HomePhone, you need to choose the Phone and the HomePhone to represent the PhoneNumber type and only specify the PhoneNumber on the matching rule.", + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "AttributeMatchingModel" + ], + "type": "object" + }, + "AutoMerging": { + "additionalProperties": false, + "description": "Configuration information about the auto-merging process.", + "properties": { + "ConflictResolution": { + "$ref": "#/definitions/ConflictResolution" + }, + "Consolidation": { + "$ref": "#/definitions/Consolidation" + }, + "Enabled": { + "description": "The flag that enables the auto-merging of duplicate profiles.", + "type": "boolean" + }, + "MinAllowedConfidenceScoreForMerging": { + "description": "A number between 0 and 1 that represents the minimum confidence score required for profiles within a matching group to be merged during the auto-merge process. A higher score means higher similarity required to merge profiles.", + "maximum": 1.0, + "minimum": 0.0, + "type": "number" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "ConflictResolution": { + "additionalProperties": false, + "description": "How the auto-merging process should resolve conflicts between different profiles. For example, if Profile A and Profile B have the same FirstName and LastName (and that is the matching criteria), which EmailAddress should be used? ", + "properties": { + "ConflictResolvingModel": { + "description": "How the auto-merging process should resolve conflicts between different profiles.", + "enum": [ + "RECENCY", + "SOURCE" + ], + "type": "string" + }, + "SourceName": { + "description": "The ObjectType name that is used to resolve profile merging conflicts when choosing SOURCE as the ConflictResolvingModel.", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ConflictResolvingModel" + ], + "type": "object" + }, + "Consolidation": { + "additionalProperties": false, + "description": "A list of matching attributes that represent matching criteria. If two profiles meet at least one of the requirements in the matching attributes list, they will be merged.", + "properties": { + "MatchingAttributesList": { + "description": "A list of matching criteria.", + "items": { + "$ref": "#/definitions/MatchingAttributes" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "MatchingAttributesList" + ], + "type": "object" + }, + "DomainStats": { + "additionalProperties": false, + "description": "Usage-specific statistics about the domain.", + "properties": { + "MeteringProfileCount": { + "description": "The number of profiles that you are currently paying for in the domain. If you have more than 100 objects associated with a single profile, that profile counts as two profiles. If you have more than 200 objects, that profile counts as three, and so on.", + "type": "number" + }, + "ObjectCount": { + "description": "The total number of objects in domain.", + "type": "number" + }, + "ProfileCount": { + "description": "The total number of profiles currently in the domain.", + "type": "number" + }, + "TotalSize": { + "description": "The total size, in bytes, of all objects in the domain.", + "type": "number" + } + }, + "type": "object" + }, + "ExportingConfig": { + "additionalProperties": false, + "description": "Configuration information for exporting Identity Resolution results, for example, to an S3 bucket.", + "properties": { + "S3Exporting": { + "$ref": "#/definitions/S3ExportingConfig" + } + }, + "type": "object" + }, + "JobSchedule": { + "additionalProperties": false, + "description": "The day and time when do you want to start the Identity Resolution Job every week.", + "properties": { + "DayOfTheWeek": { + "description": "The day when the Identity Resolution Job should run every week.", + "enum": [ + "SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY" + ], + "type": "string" + }, + "Time": { + "description": "The time when the Identity Resolution Job should run every week.", + "maxLength": 5, + "minLength": 3, + "pattern": "^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$", + "type": "string" + } + }, + "required": [ + "DayOfTheWeek", + "Time" + ], + "type": "object" + }, + "Matching": { + "additionalProperties": false, + "description": "The process of matching duplicate profiles. If Matching = true, Amazon Connect Customer Profiles starts a weekly batch process called Identity Resolution Job. If you do not specify a date and time for Identity Resolution Job to run, by default it runs every Saturday at 12AM UTC to detect duplicate profiles in your domains. After the Identity Resolution Job completes, use the GetMatches API to return and review the results. Or, if you have configured ExportingConfig in the MatchingRequest, you can download the results from S3.", + "properties": { + "AutoMerging": { + "$ref": "#/definitions/AutoMerging" + }, + "Enabled": { + "description": "The flag that enables the matching process of duplicate profiles.", + "type": "boolean" + }, + "ExportingConfig": { + "$ref": "#/definitions/ExportingConfig" + }, + "JobSchedule": { + "$ref": "#/definitions/JobSchedule" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "MatchingAttributes": { + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "MatchingRule": { + "additionalProperties": false, + "description": "Specifies how does the rule-based matching process should match profiles.", + "properties": { + "Rule": { + "$ref": "#/definitions/MatchingRuleAttributeList" + } + }, + "required": [ + "Rule" + ], + "type": "object" + }, + "MatchingRuleAttributeList": { + "description": "A single rule level of the MatchRules. Configures how the rule-based matching process should match profiles.", + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + }, + "RuleBasedMatching": { + "additionalProperties": false, + "description": "The process of matching duplicate profiles using the Rule-Based matching. If RuleBasedMatching = true, Amazon Connect Customer Profiles will start to match and merge your profiles according to your configuration in the RuleBasedMatchingRequest. You can use the ListRuleBasedMatches and GetSimilarProfiles API to return and review the results. Also, if you have configured ExportingConfig in the RuleBasedMatchingRequest, you can download the results from S3.", + "properties": { + "AttributeTypesSelector": { + "$ref": "#/definitions/AttributeTypesSelector" + }, + "ConflictResolution": { + "$ref": "#/definitions/ConflictResolution" + }, + "Enabled": { + "description": "The flag that enables the rule-based matching process of duplicate profiles.", + "type": "boolean" + }, + "ExportingConfig": { + "$ref": "#/definitions/ExportingConfig" + }, + "MatchingRules": { + "description": "Configures how the rule-based matching process should match profiles. You can have up to 15 MatchingRule in the MatchingRules.", + "items": { + "$ref": "#/definitions/MatchingRule" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + }, + "MaxAllowedRuleLevelForMatching": { + "description": "Indicates the maximum allowed rule level for matching.", + "maximum": 15, + "minimum": 1, + "type": "integer" + }, + "MaxAllowedRuleLevelForMerging": { + "description": "Indicates the maximum allowed rule level for merging.", + "maximum": 15, + "minimum": 1, + "type": "integer" + }, + "Status": { + "enum": [ + "PENDING", + "IN_PROGRESS", + "ACTIVE" + ], + "type": "string" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "S3ExportingConfig": { + "additionalProperties": false, + "description": "The S3 location where Identity Resolution Jobs write result files.", + "properties": { + "S3BucketName": { + "description": "The name of the S3 bucket where Identity Resolution Jobs write result files.", + "maxLength": 63, + "minLength": 3, + "pattern": "^[a-z0-9.-]+$", + "type": "string" + }, + "S3KeyName": { + "description": "The S3 key name of the location where Identity Resolution Jobs write result files.", + "maxLength": 800, + "minLength": 1, + "pattern": ".*", + "type": "string" + } + }, + "required": [ + "S3BucketName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "A domain defined for 3rd party data source in Profile Service", + "handlers": { + "create": { + "permissions": [ + "profile:CreateDomain", + "profile:TagResource" + ] + }, + "delete": { + "permissions": [ + "profile:DeleteDomain" + ] + }, + "list": { + "permissions": [ + "profile:ListDomains" + ] + }, + "read": { + "permissions": [ + "profile:GetDomain" + ] + }, + "update": { + "permissions": [ + "profile:GetDomain", + "profile:UpdateDomain", + "profile:UntagResource", + "profile:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainName" + ], + "properties": { + "CreatedAt": { + "description": "The time of this integration got created", + "type": "string" + }, + "DeadLetterQueueUrl": { + "description": "The URL of the SQS dead letter queue", + "maxLength": 255, + "minLength": 0, + "type": "string" + }, + "DefaultEncryptionKey": { + "description": "The default encryption key", + "maxLength": 255, + "minLength": 0, + "type": "string" + }, + "DefaultExpirationDays": { + "description": "The default number of days until the data within the domain expires.", + "maximum": 1098, + "minimum": 1, + "type": "integer" + }, + "DomainName": { + "description": "The unique name of the domain.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "LastUpdatedAt": { + "description": "The time of this integration got last updated at", + "type": "string" + }, + "Matching": { + "$ref": "#/definitions/Matching" + }, + "RuleBasedMatching": { + "$ref": "#/definitions/RuleBasedMatching" + }, + "Stats": { + "$ref": "#/definitions/DomainStats" + }, + "Tags": { + "description": "The tags (keys and values) associated with the domain", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/LastUpdatedAt", + "/properties/CreatedAt", + "/properties/RuleBasedMatching/Status", + "/properties/Stats" + ], + "required": [ + "DomainName", + "DefaultExpirationDays" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-customer-profiles.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "profile:TagResource", + "profile:UntagResource", + "profile:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CustomerProfiles::Domain" +} diff --git a/src/schema/aws-customerprofiles-eventstream.json b/src/schema/aws-customerprofiles-eventstream.json index 9b3203cf..6b2df22f 100644 --- a/src/schema/aws-customerprofiles-eventstream.json +++ b/src/schema/aws-customerprofiles-eventstream.json @@ -1,188 +1,188 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainName", - "/properties/EventStreamName", - "/properties/Uri" - ], - "definitions": { - "Status": { - "description": "The status of enabling the Kinesis stream as a destination for export.", - "enum": [ - "HEALTHY", - "UNHEALTHY" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Uri": { - "description": "The StreamARN of the destination to deliver profile events to. For example, arn:aws:kinesis:region:account-id:stream/stream-name", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "description": "An Event Stream resource of Amazon Connect Customer Profiles", - "handlers": { - "create": { - "permissions": [ - "profile:CreateEventStream", - "iam:PutRolePolicy", - "kinesis:DescribeStreamSummary", - "profile:TagResource" - ] - }, - "delete": { - "permissions": [ - "profile:DeleteEventStream", - "iam:DeleteRolePolicy" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DomainName": { - "$ref": "resource-schema.json#/properties/DomainName" - } - }, - "required": [ - "DomainName" - ] - }, - "permissions": [ - "profile:ListEventStreams" - ] - }, - "read": { - "permissions": [ - "profile:GetEventStream", - "kinesis:DescribeStreamSummary" - ] - }, - "update": { - "permissions": [ - "kinesis:DescribeStreamSummary", - "profile:GetEventStream", - "profile:UntagResource", - "profile:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainName", - "/properties/EventStreamName" - ], - "properties": { - "CreatedAt": { - "description": "The timestamp of when the export was created.", - "type": "string" - }, - "DestinationDetails": { - "additionalProperties": false, - "description": "Details regarding the Kinesis stream.", - "properties": { - "Status": { - "$ref": "#/definitions/Status" - }, - "Uri": { - "$ref": "#/definitions/Uri" - } - }, - "required": [ - "Uri", - "Status" - ], - "type": "object" - }, - "DomainName": { - "description": "The unique name of the domain.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "EventStreamArn": { - "description": "A unique identifier for the event stream.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "EventStreamName": { - "description": "The name of the event stream.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "State": { - "description": "The operational state of destination stream for export.", - "enum": [ - "RUNNING", - "STOPPED" - ], - "type": "string" - }, - "Tags": { - "description": "The tags used to organize, track, or control access for this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "Uri": { - "$ref": "#/definitions/Uri" - } - }, - "readOnlyProperties": [ - "/properties/DestinationDetails", - "/properties/CreatedAt", - "/properties/State", - "/properties/EventStreamArn" - ], - "required": [ - "DomainName", - "EventStreamName", - "Uri" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-customer-profiles", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "profile:TagResource", - "profile:UntagResource", - "profile:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CustomerProfiles::EventStream" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainName", + "/properties/EventStreamName", + "/properties/Uri" + ], + "definitions": { + "Status": { + "description": "The status of enabling the Kinesis stream as a destination for export.", + "enum": [ + "HEALTHY", + "UNHEALTHY" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Uri": { + "description": "The StreamARN of the destination to deliver profile events to. For example, arn:aws:kinesis:region:account-id:stream/stream-name", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "description": "An Event Stream resource of Amazon Connect Customer Profiles", + "handlers": { + "create": { + "permissions": [ + "profile:CreateEventStream", + "iam:PutRolePolicy", + "kinesis:DescribeStreamSummary", + "profile:TagResource" + ] + }, + "delete": { + "permissions": [ + "profile:DeleteEventStream", + "iam:DeleteRolePolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainName": { + "$ref": "resource-schema.json#/properties/DomainName" + } + }, + "required": [ + "DomainName" + ] + }, + "permissions": [ + "profile:ListEventStreams" + ] + }, + "read": { + "permissions": [ + "profile:GetEventStream", + "kinesis:DescribeStreamSummary" + ] + }, + "update": { + "permissions": [ + "kinesis:DescribeStreamSummary", + "profile:GetEventStream", + "profile:UntagResource", + "profile:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainName", + "/properties/EventStreamName" + ], + "properties": { + "CreatedAt": { + "description": "The timestamp of when the export was created.", + "type": "string" + }, + "DestinationDetails": { + "additionalProperties": false, + "description": "Details regarding the Kinesis stream.", + "properties": { + "Status": { + "$ref": "#/definitions/Status" + }, + "Uri": { + "$ref": "#/definitions/Uri" + } + }, + "required": [ + "Uri", + "Status" + ], + "type": "object" + }, + "DomainName": { + "description": "The unique name of the domain.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "EventStreamArn": { + "description": "A unique identifier for the event stream.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "EventStreamName": { + "description": "The name of the event stream.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "State": { + "description": "The operational state of destination stream for export.", + "enum": [ + "RUNNING", + "STOPPED" + ], + "type": "string" + }, + "Tags": { + "description": "The tags used to organize, track, or control access for this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "Uri": { + "$ref": "#/definitions/Uri" + } + }, + "readOnlyProperties": [ + "/properties/DestinationDetails", + "/properties/CreatedAt", + "/properties/State", + "/properties/EventStreamArn" + ], + "required": [ + "DomainName", + "EventStreamName", + "Uri" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-customer-profiles", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "profile:TagResource", + "profile:UntagResource", + "profile:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CustomerProfiles::EventStream" +} diff --git a/src/schema/aws-customerprofiles-eventtrigger.json b/src/schema/aws-customerprofiles-eventtrigger.json new file mode 100644 index 00000000..0d0afa9e --- /dev/null +++ b/src/schema/aws-customerprofiles-eventtrigger.json @@ -0,0 +1,372 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainName", + "/properties/EventTriggerName" + ], + "definitions": { + "Description": { + "description": "The description of the event trigger.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "DomainName": { + "description": "The unique name of the domain.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "EventExpiration": { + "description": "Specifies that an event will only trigger the destination if it is processed within a certain latency period.", + "format": "int64", + "type": "integer" + }, + "EventTriggerCondition": { + "additionalProperties": false, + "description": "Specifies the circumstances under which the event should trigger the destination.", + "properties": { + "EventTriggerDimensions": { + "$ref": "#/definitions/EventTriggerDimensions" + }, + "LogicalOperator": { + "$ref": "#/definitions/EventTriggerLogicalOperator" + } + }, + "required": [ + "EventTriggerDimensions", + "LogicalOperator" + ], + "type": "object" + }, + "EventTriggerConditions": { + "description": "A list of conditions that determine when an event should trigger the destination.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EventTriggerCondition" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "EventTriggerDimension": { + "additionalProperties": false, + "description": "A specific event dimension to be assessed.", + "properties": { + "ObjectAttributes": { + "$ref": "#/definitions/ObjectAttributes" + } + }, + "required": [ + "ObjectAttributes" + ], + "type": "object" + }, + "EventTriggerDimensions": { + "description": "A list of dimensions to be evaluated for the event.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EventTriggerDimension" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "EventTriggerLimits": { + "additionalProperties": false, + "description": "Defines limits controlling whether an event triggers the destination, based on ingestion latency and the number of invocations per profile over specific time periods.", + "properties": { + "EventExpiration": { + "$ref": "#/definitions/EventExpiration" + }, + "Periods": { + "$ref": "#/definitions/Periods" + } + }, + "type": "object" + }, + "EventTriggerLogicalOperator": { + "description": "The operator used to combine multiple dimensions.", + "enum": [ + "ANY", + "ALL", + "NONE" + ], + "type": "string" + }, + "EventTriggerName": { + "description": "The unique name of the event trigger.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ObjectAttribute": { + "additionalProperties": false, + "description": "The criteria that a specific object attribute must meet to trigger the destination.", + "properties": { + "ComparisonOperator": { + "description": "The operator used to compare an attribute against a list of values.", + "enum": [ + "INCLUSIVE", + "EXCLUSIVE", + "CONTAINS", + "BEGINS_WITH", + "ENDS_WITH", + "GREATER_THAN", + "LESS_THAN", + "GREATER_THAN_OR_EQUAL", + "LESS_THAN_OR_EQUAL", + "EQUAL", + "BEFORE", + "AFTER", + "ON", + "BETWEEN", + "NOT_BETWEEN" + ], + "type": "string" + }, + "FieldName": { + "description": "A field defined within an object type.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.-]+$", + "type": "string" + }, + "Source": { + "description": "An attribute contained within a source object.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "Values": { + "description": "A list of attribute values used for comparison.", + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "ComparisonOperator", + "Values" + ], + "type": "object" + }, + "ObjectAttributes": { + "description": "A list of object attributes to be evaluated.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ObjectAttribute" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "ObjectTypeName": { + "description": "The unique name of the object type.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z_][a-zA-Z_0-9-]*$", + "type": "string" + }, + "Period": { + "additionalProperties": false, + "description": "Defines a limit and the time period during which it is enforced.", + "properties": { + "MaxInvocationsPerProfile": { + "description": "The maximum allowed number of destination invocations per profile.", + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "Unit": { + "description": "The unit of time.", + "enum": [ + "HOURS", + "DAYS", + "WEEKS", + "MONTHS" + ], + "type": "string" + }, + "Unlimited": { + "description": "If set to true, there is no limit on the number of destination invocations per profile. The default is false.", + "type": "boolean" + }, + "Value": { + "description": "The amount of time of the specified unit.", + "maximum": 24, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "Unit", + "Value" + ], + "type": "object" + }, + "Periods": { + "description": "A list of time periods during which the limits apply.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Period" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "SegmentFilter": { + "description": "The destination is triggered only for profiles that meet the criteria of a segment definition.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "description": "An event trigger resource of Amazon Connect Customer Profiles", + "handlers": { + "create": { + "permissions": [ + "profile:CreateEventTrigger", + "profile:TagResource" + ] + }, + "delete": { + "permissions": [ + "profile:DeleteEventTrigger" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainName": { + "$ref": "resource-schema.json#/properties/DomainName" + } + }, + "required": [ + "DomainName" + ] + }, + "permissions": [ + "profile:ListEventTriggers" + ] + }, + "read": { + "permissions": [ + "profile:GetEventTrigger" + ] + }, + "update": { + "permissions": [ + "profile:GetEventTrigger", + "profile:UpdateEventTrigger", + "profile:UntagResource", + "profile:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainName", + "/properties/EventTriggerName" + ], + "properties": { + "CreatedAt": { + "description": "The timestamp of when the event trigger was created.", + "type": "string" + }, + "Description": { + "$ref": "#/definitions/Description" + }, + "DomainName": { + "$ref": "#/definitions/DomainName" + }, + "EventTriggerConditions": { + "$ref": "#/definitions/EventTriggerConditions" + }, + "EventTriggerLimits": { + "$ref": "#/definitions/EventTriggerLimits" + }, + "EventTriggerName": { + "$ref": "#/definitions/EventTriggerName" + }, + "LastUpdatedAt": { + "description": "The timestamp of when the event trigger was most recently updated.", + "type": "string" + }, + "ObjectTypeName": { + "$ref": "#/definitions/ObjectTypeName" + }, + "SegmentFilter": { + "$ref": "#/definitions/SegmentFilter" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/LastUpdatedAt" + ], + "required": [ + "DomainName", + "EventTriggerName", + "ObjectTypeName", + "EventTriggerConditions" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-customer-profiles", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "profile:TagResource", + "profile:UntagResource", + "profile:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CustomerProfiles::EventTrigger" +} diff --git a/src/schema/aws-customerprofiles-integration.json b/src/schema/aws-customerprofiles-integration.json index b3a5e228..e7c19ef2 100644 --- a/src/schema/aws-customerprofiles-integration.json +++ b/src/schema/aws-customerprofiles-integration.json @@ -1,707 +1,724 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainName", - "/properties/Uri" - ], - "definitions": { - "ConnectorOperator": { - "additionalProperties": false, - "properties": { - "Marketo": { - "$ref": "#/definitions/MarketoConnectorOperator" - }, - "S3": { - "$ref": "#/definitions/S3ConnectorOperator" - }, - "Salesforce": { - "$ref": "#/definitions/SalesforceConnectorOperator" - }, - "ServiceNow": { - "$ref": "#/definitions/ServiceNowConnectorOperator" - }, - "Zendesk": { - "$ref": "#/definitions/ZendeskConnectorOperator" - } - }, - "type": "object" - }, - "ConnectorType": { - "enum": [ - "Salesforce", - "Marketo", - "ServiceNow", - "Zendesk", - "S3" - ], - "type": "string" - }, - "Date": { - "type": "number" - }, - "DestinationField": { - "maxLength": 256, - "pattern": ".*", - "type": "string" - }, - "FlowDefinition": { - "additionalProperties": false, - "properties": { - "Description": { - "maxLength": 2048, - "pattern": "[\\w!@#\\-.?,\\s]*", - "type": "string" - }, - "FlowName": { - "maxLength": 256, - "pattern": "[a-zA-Z0-9][\\w!@#.-]+", - "type": "string" - }, - "KmsArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:aws:kms:.*:[0-9]+:.*", - "type": "string" - }, - "SourceFlowConfig": { - "$ref": "#/definitions/SourceFlowConfig" - }, - "Tasks": { - "items": { - "$ref": "#/definitions/Task" - }, - "type": "array" - }, - "TriggerConfig": { - "$ref": "#/definitions/TriggerConfig" - } - }, - "required": [ - "FlowName", - "KmsArn", - "Tasks", - "TriggerConfig", - "SourceFlowConfig" - ], - "type": "object" - }, - "IncrementalPullConfig": { - "additionalProperties": false, - "properties": { - "DatetimeTypeFieldName": { - "maxLength": 256, - "type": "string" - } - }, - "type": "object" - }, - "MarketoConnectorOperator": { - "enum": [ - "PROJECTION", - "LESS_THAN", - "GREATER_THAN", - "BETWEEN", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "MarketoSourceProperties": { - "additionalProperties": false, - "properties": { - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "Object": { - "additionalProperties": false, - "maxLength": 512, - "pattern": "\\S+", - "type": "string" - }, - "ObjectTypeMapping": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z_][a-zA-Z_0-9-]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Operator": { - "enum": [ - "PROJECTION", - "LESS_THAN", - "GREATER_THAN", - "CONTAINS", - "BETWEEN", - "LESS_THAN_OR_EQUAL_TO", - "GREATER_THAN_OR_EQUAL_TO", - "EQUAL_TO", - "NOT_EQUAL_TO", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "OperatorPropertiesKeys": { - "enum": [ - "VALUE", - "VALUES", - "DATA_TYPE", - "UPPER_BOUND", - "LOWER_BOUND", - "SOURCE_DATA_TYPE", - "DESTINATION_DATA_TYPE", - "VALIDATION_ACTION", - "MASK_VALUE", - "MASK_LENGTH", - "TRUNCATE_LENGTH", - "MATH_OPERATION_FIELDS_ORDER", - "CONCAT_FORMAT", - "SUBFIELD_CATEGORY_MAP" - ], - "type": "string" - }, - "S3ConnectorOperator": { - "enum": [ - "PROJECTION", - "LESS_THAN", - "GREATER_THAN", - "BETWEEN", - "LESS_THAN_OR_EQUAL_TO", - "GREATER_THAN_OR_EQUAL_TO", - "EQUAL_TO", - "NOT_EQUAL_TO", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "S3SourceProperties": { - "additionalProperties": false, - "properties": { - "BucketName": { - "maxLength": 63, - "minLength": 3, - "pattern": "\\S+", - "type": "string" - }, - "BucketPrefix": { - "maxLength": 512, - "pattern": ".*", - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "SalesforceConnectorOperator": { - "enum": [ - "PROJECTION", - "LESS_THAN", - "GREATER_THAN", - "CONTAINS", - "BETWEEN", - "LESS_THAN_OR_EQUAL_TO", - "GREATER_THAN_OR_EQUAL_TO", - "EQUAL_TO", - "NOT_EQUAL_TO", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "SalesforceSourceProperties": { - "additionalProperties": false, - "properties": { - "EnableDynamicFieldUpdate": { - "type": "boolean" - }, - "IncludeDeletedRecords": { - "type": "boolean" - }, - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "ScheduledTriggerProperties": { - "additionalProperties": false, - "properties": { - "DataPullMode": { - "enum": [ - "Incremental", - "Complete" - ], - "type": "string" - }, - "FirstExecutionFrom": { - "$ref": "#/definitions/Date" - }, - "ScheduleEndTime": { - "$ref": "#/definitions/Date" - }, - "ScheduleExpression": { - "maxLength": 256, - "pattern": ".*", - "type": "string" - }, - "ScheduleOffset": { - "maximum": 36000, - "minimum": 0, - "type": "integer" - }, - "ScheduleStartTime": { - "$ref": "#/definitions/Date" - }, - "Timezone": { - "maxLength": 256, - "pattern": ".*", - "type": "string" - } - }, - "required": [ - "ScheduleExpression" - ], - "type": "object" - }, - "ServiceNowConnectorOperator": { - "enum": [ - "PROJECTION", - "LESS_THAN", - "GREATER_THAN", - "CONTAINS", - "BETWEEN", - "LESS_THAN_OR_EQUAL_TO", - "GREATER_THAN_OR_EQUAL_TO", - "EQUAL_TO", - "NOT_EQUAL_TO", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "ServiceNowSourceProperties": { - "additionalProperties": false, - "properties": { - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - }, - "SourceConnectorProperties": { - "additionalProperties": false, - "properties": { - "Marketo": { - "$ref": "#/definitions/MarketoSourceProperties" - }, - "S3": { - "$ref": "#/definitions/S3SourceProperties" - }, - "Salesforce": { - "$ref": "#/definitions/SalesforceSourceProperties" - }, - "ServiceNow": { - "$ref": "#/definitions/ServiceNowSourceProperties" - }, - "Zendesk": { - "$ref": "#/definitions/ZendeskSourceProperties" - } - }, - "type": "object" - }, - "SourceFlowConfig": { - "additionalProperties": false, - "properties": { - "ConnectorProfileName": { - "maxLength": 256, - "pattern": "[\\w/!@#+=.-]+", - "type": "string" - }, - "ConnectorType": { - "$ref": "#/definitions/ConnectorType" - }, - "IncrementalPullConfig": { - "$ref": "#/definitions/IncrementalPullConfig" - }, - "SourceConnectorProperties": { - "$ref": "#/definitions/SourceConnectorProperties" - } - }, - "required": [ - "ConnectorType", - "SourceConnectorProperties" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Task": { - "additionalProperties": false, - "properties": { - "ConnectorOperator": { - "$ref": "#/definitions/ConnectorOperator" - }, - "DestinationField": { - "$ref": "#/definitions/DestinationField" - }, - "SourceFields": { - "items": { - "maxLength": 2048, - "pattern": ".*", - "type": "string" - }, - "type": "array" - }, - "TaskProperties": { - "items": { - "$ref": "#/definitions/TaskPropertiesMap" - }, - "type": "array" - }, - "TaskType": { - "$ref": "#/definitions/TaskType" - } - }, - "required": [ - "SourceFields", - "TaskType" - ], - "type": "object" - }, - "TaskPropertiesMap": { - "additionalProperties": false, - "properties": { - "OperatorPropertyKey": { - "$ref": "#/definitions/OperatorPropertiesKeys" - }, - "Property": { - "maxLength": 2048, - "pattern": ".+", - "type": "string" - } - }, - "required": [ - "OperatorPropertyKey", - "Property" - ], - "type": "object" - }, - "TaskType": { - "enum": [ - "Arithmetic", - "Filter", - "Map", - "Mask", - "Merge", - "Truncate", - "Validate" - ], - "type": "string" - }, - "TriggerConfig": { - "additionalProperties": false, - "properties": { - "TriggerProperties": { - "$ref": "#/definitions/TriggerProperties" - }, - "TriggerType": { - "$ref": "#/definitions/TriggerType" - } - }, - "required": [ - "TriggerType" - ], - "type": "object" - }, - "TriggerProperties": { - "additionalProperties": false, - "properties": { - "Scheduled": { - "$ref": "#/definitions/ScheduledTriggerProperties" - } - }, - "type": "object" - }, - "TriggerType": { - "enum": [ - "Scheduled", - "Event", - "OnDemand" - ], - "type": "string" - }, - "ZendeskConnectorOperator": { - "enum": [ - "PROJECTION", - "GREATER_THAN", - "ADDITION", - "MULTIPLICATION", - "DIVISION", - "SUBTRACTION", - "MASK_ALL", - "MASK_FIRST_N", - "MASK_LAST_N", - "VALIDATE_NON_NULL", - "VALIDATE_NON_ZERO", - "VALIDATE_NON_NEGATIVE", - "VALIDATE_NUMERIC", - "NO_OP" - ], - "type": "string" - }, - "ZendeskSourceProperties": { - "additionalProperties": false, - "properties": { - "Object": { - "$ref": "#/definitions/Object" - } - }, - "required": [ - "Object" - ], - "type": "object" - } - }, - "description": "The resource schema for creating an Amazon Connect Customer Profiles Integration.", - "handlers": { - "create": { - "permissions": [ - "profile:GetIntegration", - "profile:PutIntegration", - "appflow:CreateFlow", - "app-integrations:CreateEventIntegrationAssociation", - "app-integrations:GetEventIntegration", - "events:ListTargetsByRule", - "events:PutRule", - "events:PutTargets", - "events:PutEvents", - "profile:TagResource" - ] - }, - "delete": { - "permissions": [ - "profile:DeleteIntegration", - "appflow:DeleteFlow", - "app-integrations:ListEventIntegrationAssociations", - "app-integrations:DeleteEventIntegrationAssociation", - "events:RemoveTargets", - "events:ListTargetsByRule", - "events:DeleteRule" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DomainName": { - "$ref": "resource-schema.json#/properties/DomainName" - } - }, - "required": [ - "DomainName" - ] - }, - "permissions": [ - "profile:ListIntegrations" - ] - }, - "read": { - "permissions": [ - "profile:GetIntegration" - ] - }, - "update": { - "permissions": [ - "profile:PutIntegration", - "profile:GetIntegration", - "appflow:CreateFlow", - "app-integrations:GetEventIntegration", - "app-integrations:CreateEventIntegrationAssociation", - "app-integrations:ListEventIntegrationAssociations", - "app-integrations:DeleteEventIntegrationAssociation", - "events:ListTargetsByRule", - "events:RemoveTargets", - "events:DeleteRule", - "events:PutRule", - "events:PutTargets", - "events:PutEvents", - "profile:UntagResource", - "profile:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainName", - "/properties/Uri" - ], - "properties": { - "CreatedAt": { - "description": "The time of this integration got created", - "type": "string" - }, - "DomainName": { - "description": "The unique name of the domain.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "FlowDefinition": { - "$ref": "#/definitions/FlowDefinition" - }, - "LastUpdatedAt": { - "description": "The time of this integration got last updated at", - "type": "string" - }, - "ObjectTypeName": { - "description": "The name of the ObjectType defined for the 3rd party data in Profile Service", - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z_][a-zA-Z_0-9-]*$", - "type": "string" - }, - "ObjectTypeNames": { - "description": "The mapping between 3rd party event types and ObjectType names", - "items": { - "$ref": "#/definitions/ObjectTypeMapping" - }, - "type": "array" - }, - "Tags": { - "description": "The tags (keys and values) associated with the integration", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - }, - "Uri": { - "description": "The URI of the S3 bucket or any other type of data source.", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/LastUpdatedAt", - "/properties/CreatedAt" - ], - "required": [ - "DomainName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-customer-profiles.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "profile:TagResource", - "profile:UntagResource", - "profile:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CustomerProfiles::Integration", - "writeOnlyProperties": [ - "/properties/FlowDefinition" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainName", + "/properties/Uri" + ], + "definitions": { + "ConnectorOperator": { + "additionalProperties": false, + "properties": { + "Marketo": { + "$ref": "#/definitions/MarketoConnectorOperator" + }, + "S3": { + "$ref": "#/definitions/S3ConnectorOperator" + }, + "Salesforce": { + "$ref": "#/definitions/SalesforceConnectorOperator" + }, + "ServiceNow": { + "$ref": "#/definitions/ServiceNowConnectorOperator" + }, + "Zendesk": { + "$ref": "#/definitions/ZendeskConnectorOperator" + } + }, + "type": "object" + }, + "ConnectorType": { + "enum": [ + "Salesforce", + "Marketo", + "ServiceNow", + "Zendesk", + "S3" + ], + "type": "string" + }, + "Date": { + "type": "number" + }, + "DestinationField": { + "maxLength": 256, + "pattern": ".*", + "type": "string" + }, + "FlowDefinition": { + "additionalProperties": false, + "properties": { + "Description": { + "maxLength": 2048, + "pattern": "[\\w!@#\\-.?,\\s]*", + "type": "string" + }, + "FlowName": { + "maxLength": 256, + "pattern": "[a-zA-Z0-9][\\w!@#.-]+", + "type": "string" + }, + "KmsArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:aws:kms:.*:[0-9]+:.*", + "type": "string" + }, + "SourceFlowConfig": { + "$ref": "#/definitions/SourceFlowConfig" + }, + "Tasks": { + "items": { + "$ref": "#/definitions/Task" + }, + "type": "array" + }, + "TriggerConfig": { + "$ref": "#/definitions/TriggerConfig" + } + }, + "required": [ + "FlowName", + "KmsArn", + "Tasks", + "TriggerConfig", + "SourceFlowConfig" + ], + "type": "object" + }, + "IncrementalPullConfig": { + "additionalProperties": false, + "properties": { + "DatetimeTypeFieldName": { + "maxLength": 256, + "type": "string" + } + }, + "type": "object" + }, + "MarketoConnectorOperator": { + "enum": [ + "PROJECTION", + "LESS_THAN", + "GREATER_THAN", + "BETWEEN", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "MarketoSourceProperties": { + "additionalProperties": false, + "properties": { + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "Object": { + "additionalProperties": false, + "maxLength": 512, + "pattern": "\\S+", + "type": "string" + }, + "ObjectTypeMapping": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z_][a-zA-Z_0-9-]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Operator": { + "enum": [ + "PROJECTION", + "LESS_THAN", + "GREATER_THAN", + "CONTAINS", + "BETWEEN", + "LESS_THAN_OR_EQUAL_TO", + "GREATER_THAN_OR_EQUAL_TO", + "EQUAL_TO", + "NOT_EQUAL_TO", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "OperatorPropertiesKeys": { + "enum": [ + "VALUE", + "VALUES", + "DATA_TYPE", + "UPPER_BOUND", + "LOWER_BOUND", + "SOURCE_DATA_TYPE", + "DESTINATION_DATA_TYPE", + "VALIDATION_ACTION", + "MASK_VALUE", + "MASK_LENGTH", + "TRUNCATE_LENGTH", + "MATH_OPERATION_FIELDS_ORDER", + "CONCAT_FORMAT", + "SUBFIELD_CATEGORY_MAP" + ], + "type": "string" + }, + "S3ConnectorOperator": { + "enum": [ + "PROJECTION", + "LESS_THAN", + "GREATER_THAN", + "BETWEEN", + "LESS_THAN_OR_EQUAL_TO", + "GREATER_THAN_OR_EQUAL_TO", + "EQUAL_TO", + "NOT_EQUAL_TO", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "S3SourceProperties": { + "additionalProperties": false, + "properties": { + "BucketName": { + "maxLength": 63, + "minLength": 3, + "pattern": "\\S+", + "type": "string" + }, + "BucketPrefix": { + "maxLength": 512, + "pattern": ".*", + "type": "string" + } + }, + "required": [ + "BucketName" + ], + "type": "object" + }, + "SalesforceConnectorOperator": { + "enum": [ + "PROJECTION", + "LESS_THAN", + "GREATER_THAN", + "CONTAINS", + "BETWEEN", + "LESS_THAN_OR_EQUAL_TO", + "GREATER_THAN_OR_EQUAL_TO", + "EQUAL_TO", + "NOT_EQUAL_TO", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "SalesforceSourceProperties": { + "additionalProperties": false, + "properties": { + "EnableDynamicFieldUpdate": { + "type": "boolean" + }, + "IncludeDeletedRecords": { + "type": "boolean" + }, + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "ScheduledTriggerProperties": { + "additionalProperties": false, + "properties": { + "DataPullMode": { + "enum": [ + "Incremental", + "Complete" + ], + "type": "string" + }, + "FirstExecutionFrom": { + "$ref": "#/definitions/Date" + }, + "ScheduleEndTime": { + "$ref": "#/definitions/Date" + }, + "ScheduleExpression": { + "maxLength": 256, + "pattern": ".*", + "type": "string" + }, + "ScheduleOffset": { + "maximum": 36000, + "minimum": 0, + "type": "integer" + }, + "ScheduleStartTime": { + "$ref": "#/definitions/Date" + }, + "Timezone": { + "maxLength": 256, + "pattern": ".*", + "type": "string" + } + }, + "required": [ + "ScheduleExpression" + ], + "type": "object" + }, + "ServiceNowConnectorOperator": { + "enum": [ + "PROJECTION", + "LESS_THAN", + "GREATER_THAN", + "CONTAINS", + "BETWEEN", + "LESS_THAN_OR_EQUAL_TO", + "GREATER_THAN_OR_EQUAL_TO", + "EQUAL_TO", + "NOT_EQUAL_TO", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "ServiceNowSourceProperties": { + "additionalProperties": false, + "properties": { + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + }, + "SourceConnectorProperties": { + "additionalProperties": false, + "properties": { + "Marketo": { + "$ref": "#/definitions/MarketoSourceProperties" + }, + "S3": { + "$ref": "#/definitions/S3SourceProperties" + }, + "Salesforce": { + "$ref": "#/definitions/SalesforceSourceProperties" + }, + "ServiceNow": { + "$ref": "#/definitions/ServiceNowSourceProperties" + }, + "Zendesk": { + "$ref": "#/definitions/ZendeskSourceProperties" + } + }, + "type": "object" + }, + "SourceFlowConfig": { + "additionalProperties": false, + "properties": { + "ConnectorProfileName": { + "maxLength": 256, + "pattern": "[\\w/!@#+=.-]+", + "type": "string" + }, + "ConnectorType": { + "$ref": "#/definitions/ConnectorType" + }, + "IncrementalPullConfig": { + "$ref": "#/definitions/IncrementalPullConfig" + }, + "SourceConnectorProperties": { + "$ref": "#/definitions/SourceConnectorProperties" + } + }, + "required": [ + "ConnectorType", + "SourceConnectorProperties" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Task": { + "additionalProperties": false, + "properties": { + "ConnectorOperator": { + "$ref": "#/definitions/ConnectorOperator" + }, + "DestinationField": { + "$ref": "#/definitions/DestinationField" + }, + "SourceFields": { + "items": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "type": "array" + }, + "TaskProperties": { + "items": { + "$ref": "#/definitions/TaskPropertiesMap" + }, + "type": "array" + }, + "TaskType": { + "$ref": "#/definitions/TaskType" + } + }, + "required": [ + "SourceFields", + "TaskType" + ], + "type": "object" + }, + "TaskPropertiesMap": { + "additionalProperties": false, + "properties": { + "OperatorPropertyKey": { + "$ref": "#/definitions/OperatorPropertiesKeys" + }, + "Property": { + "maxLength": 2048, + "pattern": ".+", + "type": "string" + } + }, + "required": [ + "OperatorPropertyKey", + "Property" + ], + "type": "object" + }, + "TaskType": { + "enum": [ + "Arithmetic", + "Filter", + "Map", + "Mask", + "Merge", + "Truncate", + "Validate" + ], + "type": "string" + }, + "TriggerConfig": { + "additionalProperties": false, + "properties": { + "TriggerProperties": { + "$ref": "#/definitions/TriggerProperties" + }, + "TriggerType": { + "$ref": "#/definitions/TriggerType" + } + }, + "required": [ + "TriggerType" + ], + "type": "object" + }, + "TriggerProperties": { + "additionalProperties": false, + "properties": { + "Scheduled": { + "$ref": "#/definitions/ScheduledTriggerProperties" + } + }, + "type": "object" + }, + "TriggerType": { + "enum": [ + "Scheduled", + "Event", + "OnDemand" + ], + "type": "string" + }, + "ZendeskConnectorOperator": { + "enum": [ + "PROJECTION", + "GREATER_THAN", + "ADDITION", + "MULTIPLICATION", + "DIVISION", + "SUBTRACTION", + "MASK_ALL", + "MASK_FIRST_N", + "MASK_LAST_N", + "VALIDATE_NON_NULL", + "VALIDATE_NON_ZERO", + "VALIDATE_NON_NEGATIVE", + "VALIDATE_NUMERIC", + "NO_OP" + ], + "type": "string" + }, + "ZendeskSourceProperties": { + "additionalProperties": false, + "properties": { + "Object": { + "$ref": "#/definitions/Object" + } + }, + "required": [ + "Object" + ], + "type": "object" + } + }, + "description": "The resource schema for creating an Amazon Connect Customer Profiles Integration.", + "handlers": { + "create": { + "permissions": [ + "profile:GetIntegration", + "profile:PutIntegration", + "appflow:CreateFlow", + "app-integrations:CreateEventIntegrationAssociation", + "app-integrations:GetEventIntegration", + "connect:DescribeInstance", + "ds:DescribeDirectories", + "events:ListTargetsByRule", + "events:PutRule", + "events:PutTargets", + "events:PutEvents", + "profile:TagResource" + ] + }, + "delete": { + "permissions": [ + "profile:DeleteIntegration", + "appflow:DeleteFlow", + "app-integrations:ListEventIntegrationAssociations", + "app-integrations:DeleteEventIntegrationAssociation", + "events:RemoveTargets", + "events:ListTargetsByRule", + "events:DeleteRule" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainName": { + "$ref": "resource-schema.json#/properties/DomainName" + } + }, + "required": [ + "DomainName" + ] + }, + "permissions": [ + "profile:ListIntegrations" + ] + }, + "read": { + "permissions": [ + "profile:GetIntegration" + ] + }, + "update": { + "permissions": [ + "profile:PutIntegration", + "profile:GetIntegration", + "appflow:CreateFlow", + "app-integrations:GetEventIntegration", + "app-integrations:CreateEventIntegrationAssociation", + "app-integrations:ListEventIntegrationAssociations", + "app-integrations:DeleteEventIntegrationAssociation", + "events:ListTargetsByRule", + "events:RemoveTargets", + "events:DeleteRule", + "events:PutRule", + "events:PutTargets", + "events:PutEvents", + "profile:UntagResource", + "profile:TagResource", + "connect:DescribeInstance", + "ds:DescribeDirectories" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainName", + "/properties/Uri" + ], + "properties": { + "CreatedAt": { + "description": "The time of this integration got created", + "type": "string" + }, + "DomainName": { + "description": "The unique name of the domain.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "EventTriggerNames": { + "description": "A list of unique names for active event triggers associated with the integration.", + "insertionOrder": false, + "items": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "FlowDefinition": { + "$ref": "#/definitions/FlowDefinition" + }, + "LastUpdatedAt": { + "description": "The time of this integration got last updated at", + "type": "string" + }, + "ObjectTypeName": { + "description": "The name of the ObjectType defined for the 3rd party data in Profile Service", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z_][a-zA-Z_0-9-]*$", + "type": "string" + }, + "ObjectTypeNames": { + "description": "The mapping between 3rd party event types and ObjectType names", + "items": { + "$ref": "#/definitions/ObjectTypeMapping" + }, + "type": "array" + }, + "Tags": { + "description": "The tags (keys and values) associated with the integration", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + }, + "Uri": { + "description": "The URI of the S3 bucket or any other type of data source.", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LastUpdatedAt", + "/properties/CreatedAt" + ], + "required": [ + "DomainName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-customer-profiles.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "profile:TagResource", + "profile:UntagResource", + "profile:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CustomerProfiles::Integration", + "writeOnlyProperties": [ + "/properties/FlowDefinition" + ] +} diff --git a/src/schema/aws-customerprofiles-objecttype.json b/src/schema/aws-customerprofiles-objecttype.json index b7f9574d..3288679f 100644 --- a/src/schema/aws-customerprofiles-objecttype.json +++ b/src/schema/aws-customerprofiles-objecttype.json @@ -1,282 +1,290 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainName", - "/properties/ObjectTypeName" - ], - "definitions": { - "FieldMap": { - "additionalProperties": false, - "properties": { - "Name": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "ObjectTypeField": { - "$ref": "#/definitions/ObjectTypeField" - } - }, - "type": "object" - }, - "KeyMap": { - "additionalProperties": false, - "properties": { - "Name": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "ObjectTypeKeyList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ObjectTypeKey" - }, - "type": "array" - } - }, - "type": "object" - }, - "ObjectTypeField": { - "additionalProperties": false, - "description": "Represents a field in a ProfileObjectType.", - "properties": { - "ContentType": { - "description": "The content type of the field. Used for determining equality when searching.", - "enum": [ - "STRING", - "NUMBER", - "PHONE_NUMBER", - "EMAIL_ADDRESS", - "NAME" - ], - "type": "string" - }, - "Source": { - "description": "A field of a ProfileObject. For example: _source.FirstName, where \"_source\" is a ProfileObjectType of a Zendesk user and \"FirstName\" is a field in that ObjectType.", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "Target": { - "description": "The location of the data in the standard ProfileObject model. For example: _profile.Address.PostalCode.", - "maxLength": 1000, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "ObjectTypeKey": { - "additionalProperties": false, - "description": "An object that defines the Key element of a ProfileObject. A Key is a special element that can be used to search for a customer profile.", - "properties": { - "FieldNames": { - "description": "The reference for the key name of the fields map. ", - "items": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "type": "array" - }, - "StandardIdentifiers": { - "description": "The types of keys that a ProfileObject can have. Each ProfileObject can have only 1 UNIQUE key but multiple PROFILE keys. PROFILE means that this key can be used to tie an object to a PROFILE. UNIQUE means that it can be used to uniquely identify an object. If a key a is marked as SECONDARY, it will be used to search for profiles after all other PROFILE keys have been searched. A LOOKUP_ONLY key is only used to match a profile but is not persisted to be used for searching of the profile. A NEW_ONLY key is only used if the profile does not already exist before the object is ingested, otherwise it is only used for matching objects to profiles.", - "items": { - "enum": [ - "PROFILE", - "UNIQUE", - "SECONDARY", - "LOOKUP_ONLY", - "NEW_ONLY", - "ASSET", - "CASE", - "ORDER" - ], - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "An ObjectType resource of Amazon Connect Customer Profiles", - "handlers": { - "create": { - "permissions": [ - "profile:GetProfileObjectType", - "profile:PutProfileObjectType", - "profile:TagResource" - ] - }, - "delete": { - "permissions": [ - "profile:DeleteProfileObjectType" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DomainName": { - "$ref": "resource-schema.json#/properties/DomainName" - } - }, - "required": [ - "DomainName" - ] - }, - "permissions": [ - "profile:ListProfileObjectTypes" - ] - }, - "read": { - "permissions": [ - "profile:GetProfileObjectType" - ] - }, - "update": { - "permissions": [ - "profile:GetProfileObjectType", - "profile:PutProfileObjectType", - "profile:UntagResource", - "profile:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainName", - "/properties/ObjectTypeName" - ], - "properties": { - "AllowProfileCreation": { - "description": "Indicates whether a profile should be created when data is received.", - "type": "boolean" - }, - "CreatedAt": { - "description": "The time of this integration got created.", - "type": "string" - }, - "Description": { - "description": "Description of the profile object type.", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "DomainName": { - "description": "The unique name of the domain.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "EncryptionKey": { - "description": "The default encryption key", - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "ExpirationDays": { - "description": "The default number of days until the data within the domain expires.", - "maximum": 1098, - "minimum": 1, - "type": "integer" - }, - "Fields": { - "description": "A list of the name and ObjectType field.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/FieldMap" - }, - "type": "array" - }, - "Keys": { - "description": "A list of unique keys that can be used to map data to the profile.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/KeyMap" - }, - "type": "array" - }, - "LastUpdatedAt": { - "description": "The time of this integration got last updated at.", - "type": "string" - }, - "ObjectTypeName": { - "description": "The name of the profile object type.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z_][a-zA-Z_0-9-]*$", - "type": "string" - }, - "SourceLastUpdatedTimestampFormat": { - "description": "The format of your sourceLastUpdatedTimestamp that was previously set up.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "The tags (keys and values) associated with the integration.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - }, - "TemplateId": { - "description": "A unique identifier for the object template.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/LastUpdatedAt", - "/properties/CreatedAt" - ], - "required": [ - "DomainName", - "ObjectTypeName", - "Description" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-customer-profiles.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "profile:TagResource", - "profile:UntagResource", - "profile:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CustomerProfiles::ObjectType" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainName", + "/properties/ObjectTypeName" + ], + "definitions": { + "FieldMap": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ObjectTypeField": { + "$ref": "#/definitions/ObjectTypeField" + } + }, + "type": "object" + }, + "KeyMap": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ObjectTypeKeyList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ObjectTypeKey" + }, + "type": "array" + } + }, + "type": "object" + }, + "ObjectTypeField": { + "additionalProperties": false, + "description": "Represents a field in a ProfileObjectType.", + "properties": { + "ContentType": { + "description": "The content type of the field. Used for determining equality when searching.", + "enum": [ + "STRING", + "NUMBER", + "PHONE_NUMBER", + "EMAIL_ADDRESS", + "NAME" + ], + "type": "string" + }, + "Source": { + "description": "A field of a ProfileObject. For example: _source.FirstName, where \"_source\" is a ProfileObjectType of a Zendesk user and \"FirstName\" is a field in that ObjectType.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "Target": { + "description": "The location of the data in the standard ProfileObject model. For example: _profile.Address.PostalCode.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "ObjectTypeKey": { + "additionalProperties": false, + "description": "An object that defines the Key element of a ProfileObject. A Key is a special element that can be used to search for a customer profile.", + "properties": { + "FieldNames": { + "description": "The reference for the key name of the fields map. ", + "items": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "type": "array" + }, + "StandardIdentifiers": { + "description": "The types of keys that a ProfileObject can have. Each ProfileObject can have only 1 UNIQUE key but multiple PROFILE keys. PROFILE means that this key can be used to tie an object to a PROFILE. UNIQUE means that it can be used to uniquely identify an object. If a key a is marked as SECONDARY, it will be used to search for profiles after all other PROFILE keys have been searched. A LOOKUP_ONLY key is only used to match a profile but is not persisted to be used for searching of the profile. A NEW_ONLY key is only used if the profile does not already exist before the object is ingested, otherwise it is only used for matching objects to profiles.", + "items": { + "enum": [ + "PROFILE", + "UNIQUE", + "SECONDARY", + "LOOKUP_ONLY", + "NEW_ONLY", + "ASSET", + "CASE", + "ORDER" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "An ObjectType resource of Amazon Connect Customer Profiles", + "handlers": { + "create": { + "permissions": [ + "profile:GetProfileObjectType", + "profile:PutProfileObjectType", + "profile:TagResource", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "profile:DeleteProfileObjectType" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainName": { + "$ref": "resource-schema.json#/properties/DomainName" + } + }, + "required": [ + "DomainName" + ] + }, + "permissions": [ + "profile:ListProfileObjectTypes", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "read": { + "permissions": [ + "profile:GetProfileObjectType", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "profile:GetProfileObjectType", + "profile:PutProfileObjectType", + "profile:UntagResource", + "profile:TagResource", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainName", + "/properties/ObjectTypeName" + ], + "properties": { + "AllowProfileCreation": { + "description": "Indicates whether a profile should be created when data is received.", + "type": "boolean" + }, + "CreatedAt": { + "description": "The time of this integration got created.", + "type": "string" + }, + "Description": { + "description": "Description of the profile object type.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "DomainName": { + "description": "The unique name of the domain.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "EncryptionKey": { + "description": "The default encryption key", + "maxLength": 255, + "minLength": 0, + "type": "string" + }, + "ExpirationDays": { + "description": "The default number of days until the data within the domain expires.", + "maximum": 1098, + "minimum": 1, + "type": "integer" + }, + "Fields": { + "description": "A list of the name and ObjectType field.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/FieldMap" + }, + "type": "array" + }, + "Keys": { + "description": "A list of unique keys that can be used to map data to the profile.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/KeyMap" + }, + "type": "array" + }, + "LastUpdatedAt": { + "description": "The time of this integration got last updated at.", + "type": "string" + }, + "ObjectTypeName": { + "description": "The name of the profile object type.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z_][a-zA-Z_0-9-]*$", + "type": "string" + }, + "SourceLastUpdatedTimestampFormat": { + "description": "The format of your sourceLastUpdatedTimestamp that was previously set up.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "The tags (keys and values) associated with the integration.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + }, + "TemplateId": { + "description": "A unique identifier for the object template.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LastUpdatedAt", + "/properties/CreatedAt" + ], + "required": [ + "DomainName", + "ObjectTypeName", + "Description" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-customer-profiles.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "profile:TagResource", + "profile:UntagResource", + "profile:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CustomerProfiles::ObjectType" +} diff --git a/src/schema/aws-customerprofiles-segmentdefinition.json b/src/schema/aws-customerprofiles-segmentdefinition.json new file mode 100644 index 00000000..d46936d1 --- /dev/null +++ b/src/schema/aws-customerprofiles-segmentdefinition.json @@ -0,0 +1,572 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainName", + "/properties/SegmentDefinitionName", + "/properties/DisplayName", + "/properties/SegmentGroups" + ], + "definitions": { + "AddressDimension": { + "additionalProperties": false, + "description": "The address based criteria for the segment.", + "properties": { + "City": { + "$ref": "#/definitions/ProfileDimension" + }, + "Country": { + "$ref": "#/definitions/ProfileDimension" + }, + "County": { + "$ref": "#/definitions/ProfileDimension" + }, + "PostalCode": { + "$ref": "#/definitions/ProfileDimension" + }, + "Province": { + "$ref": "#/definitions/ProfileDimension" + }, + "State": { + "$ref": "#/definitions/ProfileDimension" + } + }, + "type": "object" + }, + "AttributeDimension": { + "additionalProperties": false, + "description": "Specifies attribute based criteria for a segment.", + "properties": { + "DimensionType": { + "$ref": "#/definitions/AttributeDimensionType" + }, + "Values": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "DimensionType", + "Values" + ], + "type": "object" + }, + "AttributeDimensionType": { + "description": "The type of segment dimension to use.", + "enum": [ + "INCLUSIVE", + "EXCLUSIVE", + "CONTAINS", + "BEGINS_WITH", + "ENDS_WITH", + "BEFORE", + "AFTER", + "BETWEEN", + "NOT_BETWEEN", + "ON", + "GREATER_THAN", + "LESS_THAN", + "GREATER_THAN_OR_EQUAL", + "LESS_THAN_OR_EQUAL", + "EQUAL" + ], + "type": "string" + }, + "CalculatedAttributeDimension": { + "additionalProperties": false, + "description": "Specifies calculated attribute based criteria for a segment.", + "properties": { + "ConditionOverrides": { + "$ref": "#/definitions/ConditionOverrides" + }, + "DimensionType": { + "$ref": "#/definitions/AttributeDimensionType" + }, + "Values": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "DimensionType", + "Values" + ], + "type": "object" + }, + "CalculatedCustomAttributes": { + "additionalProperties": false, + "description": "One or more calculated attributes to use as criteria for the segment.", + "patternProperties": { + "^[a-zA-Z_][a-zA-Z_0-9-]*$": { + "$ref": "#/definitions/CalculatedAttributeDimension" + } + }, + "type": "object" + }, + "ConditionOverrides": { + "additionalProperties": false, + "description": "Overrides the condition block within the original calculated attribute definition.", + "properties": { + "Range": { + "$ref": "#/definitions/RangeOverride" + } + }, + "type": "object" + }, + "CustomAttributes": { + "additionalProperties": false, + "description": "One or more custom attributes to use as criteria for the segment.", + "patternProperties": { + "^[a-zA-Z_][a-zA-Z_0-9-]*$": { + "$ref": "#/definitions/AttributeDimension" + } + }, + "type": "object" + }, + "DateDimension": { + "additionalProperties": false, + "description": "Specifies date based criteria for a segment.", + "properties": { + "DimensionType": { + "$ref": "#/definitions/DateDimensionType" + }, + "Values": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "DimensionType", + "Values" + ], + "type": "object" + }, + "DateDimensionType": { + "description": "The type of segment dimension to use for a date dimension.", + "enum": [ + "BEFORE", + "AFTER", + "BETWEEN", + "NOT_BETWEEN", + "ON" + ], + "type": "string" + }, + "Dimension": { + "description": "The criteria that define the dimensions for the segment.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "ProfileAttributes": { + "$ref": "#/definitions/ProfileAttributes" + } + }, + "required": [ + "ProfileAttributes" + ], + "title": "ProfileAttributes", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "CalculatedAttributes": { + "$ref": "#/definitions/CalculatedCustomAttributes" + } + }, + "title": "CalculatedAttributes", + "type": "object" + } + ] + }, + "ExtraLengthValueProfileDimension": { + "additionalProperties": false, + "description": "Specifies criteria for a segment using extended-length string values.", + "properties": { + "DimensionType": { + "$ref": "#/definitions/StringDimensionType" + }, + "Values": { + "insertionOrder": false, + "items": { + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "DimensionType", + "Values" + ], + "type": "object" + }, + "Group": { + "additionalProperties": false, + "description": "An array that defines the set of segment criteria to evaluate when handling segment groups for the segment.", + "properties": { + "Dimensions": { + "items": { + "$ref": "#/definitions/Dimension" + }, + "type": "array" + }, + "SourceSegments": { + "items": { + "$ref": "#/definitions/SourceSegment" + }, + "type": "array" + }, + "SourceType": { + "$ref": "#/definitions/IncludeOptions" + }, + "Type": { + "$ref": "#/definitions/IncludeOptions" + } + }, + "type": "object" + }, + "IncludeOptions": { + "description": "Specifies the operator on how to handle multiple groups within the same segment.", + "enum": [ + "ALL", + "ANY", + "NONE" + ], + "type": "string" + }, + "ProfileAttributes": { + "additionalProperties": false, + "description": "Specifies the dimension settings within profile attributes for a segment.", + "properties": { + "AccountNumber": { + "$ref": "#/definitions/ProfileDimension" + }, + "AdditionalInformation": { + "$ref": "#/definitions/ExtraLengthValueProfileDimension" + }, + "Address": { + "$ref": "#/definitions/AddressDimension" + }, + "Attributes": { + "$ref": "#/definitions/CustomAttributes" + }, + "BillingAddress": { + "$ref": "#/definitions/AddressDimension" + }, + "BirthDate": { + "$ref": "#/definitions/DateDimension" + }, + "BusinessEmailAddress": { + "$ref": "#/definitions/ProfileDimension" + }, + "BusinessName": { + "$ref": "#/definitions/ProfileDimension" + }, + "BusinessPhoneNumber": { + "$ref": "#/definitions/ProfileDimension" + }, + "EmailAddress": { + "$ref": "#/definitions/ProfileDimension" + }, + "FirstName": { + "$ref": "#/definitions/ProfileDimension" + }, + "GenderString": { + "$ref": "#/definitions/ProfileDimension" + }, + "HomePhoneNumber": { + "$ref": "#/definitions/ProfileDimension" + }, + "LastName": { + "$ref": "#/definitions/ProfileDimension" + }, + "MailingAddress": { + "$ref": "#/definitions/AddressDimension" + }, + "MiddleName": { + "$ref": "#/definitions/ProfileDimension" + }, + "MobilePhoneNumber": { + "$ref": "#/definitions/ProfileDimension" + }, + "PartyTypeString": { + "$ref": "#/definitions/ProfileDimension" + }, + "PersonalEmailAddress": { + "$ref": "#/definitions/ProfileDimension" + }, + "PhoneNumber": { + "$ref": "#/definitions/ProfileDimension" + }, + "ShippingAddress": { + "$ref": "#/definitions/AddressDimension" + } + }, + "type": "object" + }, + "ProfileDimension": { + "additionalProperties": false, + "description": "Specifies profile based criteria for a segment.", + "properties": { + "DimensionType": { + "$ref": "#/definitions/StringDimensionType" + }, + "Values": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "DimensionType", + "Values" + ], + "type": "object" + }, + "RangeOverride": { + "additionalProperties": false, + "description": "Defines the range to be applied to the calculated attribute definition.", + "properties": { + "End": { + "description": "The ending point for this overridden range.", + "maximum": 366, + "minimum": 0, + "type": "integer" + }, + "Start": { + "description": "The starting point for this overridden range.", + "maximum": 366, + "minimum": 1, + "type": "integer" + }, + "Unit": { + "description": "The unit to be applied to the range.", + "enum": [ + "DAYS" + ], + "type": "string" + } + }, + "required": [ + "Start", + "Unit" + ], + "type": "object" + }, + "SegmentGroup": { + "additionalProperties": false, + "properties": { + "Groups": { + "items": { + "$ref": "#/definitions/Group" + }, + "type": "array" + }, + "Include": { + "$ref": "#/definitions/IncludeOptions" + } + }, + "type": "object" + }, + "SourceSegment": { + "additionalProperties": false, + "description": "The base segment to build the segment on.", + "properties": { + "SegmentDefinitionName": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + } + }, + "type": "object" + }, + "StringDimensionType": { + "description": "The type of segment dimension to use for a string dimension.", + "enum": [ + "INCLUSIVE", + "EXCLUSIVE", + "CONTAINS", + "BEGINS_WITH", + "ENDS_WITH" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "A segment definition resource of Amazon Connect Customer Profiles", + "handlers": { + "create": { + "permissions": [ + "profile:CreateSegmentDefinition", + "profile:TagResource" + ] + }, + "delete": { + "permissions": [ + "profile:DeleteSegmentDefinition" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainName": { + "$ref": "resource-schema.json#/properties/DomainName" + } + }, + "required": [ + "DomainName" + ] + }, + "permissions": [ + "profile:ListSegmentDefinitions" + ] + }, + "read": { + "permissions": [ + "profile:GetSegmentDefinition" + ] + }, + "update": { + "permissions": [ + "profile:GetSegmentDefinition", + "profile:UntagResource", + "profile:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainName", + "/properties/SegmentDefinitionName" + ], + "properties": { + "CreatedAt": { + "description": "The time of this segment definition got created.", + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "The description of the segment definition.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "DisplayName": { + "description": "The display name of the segment definition.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "DomainName": { + "description": "The unique name of the domain.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "SegmentDefinitionArn": { + "description": "The Amazon Resource Name (ARN) of the segment definition.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "SegmentDefinitionName": { + "description": "The unique name of the segment definition.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "SegmentGroups": { + "$ref": "#/definitions/SegmentGroup", + "description": "An array that defines the set of segment criteria to evaluate when handling segment groups for the segment." + }, + "Tags": { + "description": "The tags used to organize, track, or control access for this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/SegmentDefinitionArn" + ], + "required": [ + "DomainName", + "DisplayName", + "SegmentDefinitionName", + "SegmentGroups" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-customer-profiles", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "profile:TagResource", + "profile:UntagResource", + "profile:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CustomerProfiles::SegmentDefinition" +} diff --git a/src/schema/aws-databrew-dataset.json b/src/schema/aws-databrew-dataset.json index f8a700e9..f139290b 100644 --- a/src/schema/aws-databrew-dataset.json +++ b/src/schema/aws-databrew-dataset.json @@ -1,478 +1,497 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Tags" - ], - "definitions": { - "CsvOptions": { - "additionalProperties": false, - "description": "Csv options", - "properties": { - "Delimiter": { - "maxLength": 1, - "minLength": 1, - "type": "string" - }, - "HeaderRow": { - "type": "boolean" - } - }, - "type": "object" - }, - "DataCatalogInputDefinition": { - "additionalProperties": false, - "properties": { - "CatalogId": { - "description": "Catalog id", - "type": "string" - }, - "DatabaseName": { - "description": "Database name", - "type": "string" - }, - "TableName": { - "description": "Table name", - "type": "string" - }, - "TempDirectory": { - "$ref": "#/definitions/S3Location" - } - }, - "type": "object" - }, - "DatabaseInputDefinition": { - "additionalProperties": false, - "properties": { - "DatabaseTableName": { - "description": "Database table name", - "type": "string" - }, - "GlueConnectionName": { - "description": "Glue connection name", - "type": "string" - }, - "QueryString": { - "description": "Custom SQL to run against the provided AWS Glue connection. This SQL will be used as the input for DataBrew projects and jobs.", - "type": "string" - }, - "TempDirectory": { - "$ref": "#/definitions/S3Location" - } - }, - "required": [ - "GlueConnectionName" - ], - "type": "object" - }, - "DatasetParameter": { - "additionalProperties": false, - "properties": { - "CreateColumn": { - "description": "Add the value of this parameter as a column in a dataset.", - "type": "boolean" - }, - "DatetimeOptions": { - "$ref": "#/definitions/DatetimeOptions" - }, - "Filter": { - "$ref": "#/definitions/FilterExpression" - }, - "Name": { - "$ref": "#/definitions/PathParameterName" - }, - "Type": { - "description": "Parameter type", - "enum": [ - "String", - "Number", - "Datetime" - ], - "type": "string" - } - }, - "required": [ - "Name", - "Type" - ], - "type": "object" - }, - "DatetimeOptions": { - "additionalProperties": false, - "properties": { - "Format": { - "description": "Date/time format of a date parameter", - "maxLength": 100, - "minLength": 2, - "type": "string" - }, - "LocaleCode": { - "description": "Locale code for a date parameter", - "maxLength": 100, - "minLength": 2, - "pattern": "^[A-Za-z0-9_\\.#@\\-]+$", - "type": "string" - }, - "TimezoneOffset": { - "description": "Timezone offset", - "maxLength": 6, - "minLength": 1, - "pattern": "^(Z|[-+](\\d|\\d{2}|\\d{2}:?\\d{2}))$", - "type": "string" - } - }, - "required": [ - "Format" - ], - "type": "object" - }, - "ExcelOptions": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "SheetNames" - ] - }, - { - "required": [ - "SheetIndexes" - ] - } - ], - "properties": { - "HeaderRow": { - "type": "boolean" - }, - "SheetIndexes": { - "insertionOrder": true, - "items": { - "type": "integer" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "SheetNames": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "FilesLimit": { - "additionalProperties": false, - "properties": { - "MaxFiles": { - "description": "Maximum number of files", - "type": "integer" - }, - "Order": { - "description": "Order", - "enum": [ - "ASCENDING", - "DESCENDING" - ], - "type": "string" - }, - "OrderedBy": { - "description": "Ordered by", - "enum": [ - "LAST_MODIFIED_DATE" - ], - "type": "string" - } - }, - "required": [ - "MaxFiles" - ], - "type": "object" - }, - "FilterExpression": { - "additionalProperties": false, - "properties": { - "Expression": { - "description": "Filtering expression for a parameter", - "maxLength": 1024, - "minLength": 4, - "pattern": "^[><0-9A-Za-z_.,:)(!= ]+$", - "type": "string" - }, - "ValuesMap": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/FilterValue" - }, - "type": "array" - } - }, - "required": [ - "Expression", - "ValuesMap" - ], - "type": "object" - }, - "FilterValue": { - "additionalProperties": false, - "description": "A key-value pair to associate expression variable names with their values", - "properties": { - "Value": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "ValueReference": { - "description": "Variable name", - "maxLength": 128, - "minLength": 2, - "pattern": "^:[A-Za-z0-9_]+$", - "type": "string" - } - }, - "required": [ - "ValueReference", - "Value" - ], - "type": "object" - }, - "FormatOptions": { - "additionalProperties": false, - "description": "Format options for dataset", - "properties": { - "Csv": { - "$ref": "#/definitions/CsvOptions" - }, - "Excel": { - "$ref": "#/definitions/ExcelOptions" - }, - "Json": { - "$ref": "#/definitions/JsonOptions" - } - }, - "type": "object" - }, - "Input": { - "additionalProperties": false, - "description": "Input", - "properties": { - "DataCatalogInputDefinition": { - "$ref": "#/definitions/DataCatalogInputDefinition" - }, - "DatabaseInputDefinition": { - "$ref": "#/definitions/DatabaseInputDefinition" - }, - "Metadata": { - "$ref": "#/definitions/Metadata" - }, - "S3InputDefinition": { - "$ref": "#/definitions/S3Location" - } - }, - "type": "object" - }, - "JsonOptions": { - "additionalProperties": false, - "description": "Json options", - "properties": { - "MultiLine": { - "type": "boolean" - } - }, - "type": "object" - }, - "Metadata": { - "additionalProperties": false, - "properties": { - "SourceArn": { - "description": "Arn of the source of the dataset. For e.g.: AppFlow Flow ARN.", - "type": "string" - } - }, - "type": "object" - }, - "PathOptions": { - "additionalProperties": false, - "description": "Path options for dataset", - "properties": { - "FilesLimit": { - "$ref": "#/definitions/FilesLimit" - }, - "LastModifiedDateCondition": { - "$ref": "#/definitions/FilterExpression" - }, - "Parameters": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PathParameter" - }, - "type": "array" - } - }, - "type": "object" - }, - "PathParameter": { - "additionalProperties": false, - "description": "A key-value pair to associate dataset parameter name with its definition.", - "properties": { - "DatasetParameter": { - "$ref": "#/definitions/DatasetParameter" - }, - "PathParameterName": { - "$ref": "#/definitions/PathParameterName" - } - }, - "required": [ - "PathParameterName", - "DatasetParameter" - ], - "type": "object" - }, - "PathParameterName": { - "description": "Parameter name", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "S3Location": { - "additionalProperties": false, - "description": "Input location", - "properties": { - "Bucket": { - "type": "string" - }, - "Key": { - "type": "string" - } - }, - "required": [ - "Bucket" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DataBrew::Dataset.", - "handlers": { - "create": { - "permissions": [ - "databrew:CreateDataset", - "databrew:TagResource", - "databrew:UntagResource", - "glue:GetConnection", - "glue:GetTable", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "databrew:DeleteDataset" - ] - }, - "list": { - "permissions": [ - "databrew:ListDatasets", - "databrew:ListTagsForResource", - "iam:ListRoles" - ] - }, - "read": { - "permissions": [ - "databrew:DescribeDataset", - "databrew:ListTagsForResource", - "iam:ListRoles" - ] - }, - "update": { - "permissions": [ - "databrew:UpdateDataset", - "glue:GetConnection", - "glue:GetTable" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Format": { - "description": "Dataset format", - "enum": [ - "CSV", - "JSON", - "PARQUET", - "EXCEL", - "ORC" - ], - "type": "string" - }, - "FormatOptions": { - "$ref": "#/definitions/FormatOptions", - "description": "Format options for dataset" - }, - "Input": { - "$ref": "#/definitions/Input", - "description": "Input" - }, - "Name": { - "description": "Dataset name", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "PathOptions": { - "$ref": "#/definitions/PathOptions", - "description": "PathOptions" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Name", - "Input" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-databrew.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "databrew:TagResource", - "databrew:UntagResource", - "databrew:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::DataBrew::Dataset" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "BucketOwner": { + "description": "Bucket owner", + "maxLength": 12, + "minLength": 12, + "type": "string" + }, + "CsvOptions": { + "additionalProperties": false, + "description": "Csv options", + "properties": { + "Delimiter": { + "maxLength": 1, + "minLength": 1, + "type": "string" + }, + "HeaderRow": { + "type": "boolean" + } + }, + "type": "object" + }, + "DataCatalogInputDefinition": { + "additionalProperties": false, + "properties": { + "CatalogId": { + "description": "Catalog id", + "type": "string" + }, + "DatabaseName": { + "description": "Database name", + "type": "string" + }, + "TableName": { + "description": "Table name", + "type": "string" + }, + "TempDirectory": { + "$ref": "#/definitions/S3Location" + } + }, + "type": "object" + }, + "DatabaseInputDefinition": { + "additionalProperties": false, + "properties": { + "DatabaseTableName": { + "description": "Database table name", + "type": "string" + }, + "GlueConnectionName": { + "description": "Glue connection name", + "type": "string" + }, + "QueryString": { + "description": "Custom SQL to run against the provided AWS Glue connection. This SQL will be used as the input for DataBrew projects and jobs.", + "type": "string" + }, + "TempDirectory": { + "$ref": "#/definitions/S3Location" + } + }, + "required": [ + "GlueConnectionName" + ], + "type": "object" + }, + "DatasetParameter": { + "additionalProperties": false, + "properties": { + "CreateColumn": { + "description": "Add the value of this parameter as a column in a dataset.", + "type": "boolean" + }, + "DatetimeOptions": { + "$ref": "#/definitions/DatetimeOptions" + }, + "Filter": { + "$ref": "#/definitions/FilterExpression" + }, + "Name": { + "$ref": "#/definitions/PathParameterName" + }, + "Type": { + "description": "Parameter type", + "enum": [ + "String", + "Number", + "Datetime" + ], + "type": "string" + } + }, + "required": [ + "Name", + "Type" + ], + "type": "object" + }, + "DatetimeOptions": { + "additionalProperties": false, + "properties": { + "Format": { + "description": "Date/time format of a date parameter", + "maxLength": 100, + "minLength": 2, + "type": "string" + }, + "LocaleCode": { + "description": "Locale code for a date parameter", + "maxLength": 100, + "minLength": 2, + "pattern": "^[A-Za-z0-9_\\.#@\\-]+$", + "type": "string" + }, + "TimezoneOffset": { + "description": "Timezone offset", + "maxLength": 6, + "minLength": 1, + "pattern": "^(Z|[-+](\\d|\\d{2}|\\d{2}:?\\d{2}))$", + "type": "string" + } + }, + "required": [ + "Format" + ], + "type": "object" + }, + "ExcelOptions": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "SheetNames" + ] + }, + { + "required": [ + "SheetIndexes" + ] + } + ], + "properties": { + "HeaderRow": { + "type": "boolean" + }, + "SheetIndexes": { + "insertionOrder": true, + "items": { + "type": "integer" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "SheetNames": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "FilesLimit": { + "additionalProperties": false, + "properties": { + "MaxFiles": { + "description": "Maximum number of files", + "type": "integer" + }, + "Order": { + "description": "Order", + "enum": [ + "ASCENDING", + "DESCENDING" + ], + "type": "string" + }, + "OrderedBy": { + "description": "Ordered by", + "enum": [ + "LAST_MODIFIED_DATE" + ], + "type": "string" + } + }, + "required": [ + "MaxFiles" + ], + "type": "object" + }, + "FilterExpression": { + "additionalProperties": false, + "properties": { + "Expression": { + "description": "Filtering expression for a parameter", + "maxLength": 1024, + "minLength": 4, + "pattern": "^[><0-9A-Za-z_.,:)(!= ]+$", + "type": "string" + }, + "ValuesMap": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/FilterValue" + }, + "type": "array" + } + }, + "required": [ + "Expression", + "ValuesMap" + ], + "type": "object" + }, + "FilterValue": { + "additionalProperties": false, + "description": "A key-value pair to associate expression variable names with their values", + "properties": { + "Value": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "ValueReference": { + "description": "Variable name", + "maxLength": 128, + "minLength": 2, + "pattern": "^:[A-Za-z0-9_]+$", + "type": "string" + } + }, + "required": [ + "ValueReference", + "Value" + ], + "type": "object" + }, + "FormatOptions": { + "additionalProperties": false, + "description": "Format options for dataset", + "properties": { + "Csv": { + "$ref": "#/definitions/CsvOptions" + }, + "Excel": { + "$ref": "#/definitions/ExcelOptions" + }, + "Json": { + "$ref": "#/definitions/JsonOptions" + } + }, + "type": "object" + }, + "Input": { + "additionalProperties": false, + "description": "Input", + "properties": { + "DataCatalogInputDefinition": { + "$ref": "#/definitions/DataCatalogInputDefinition" + }, + "DatabaseInputDefinition": { + "$ref": "#/definitions/DatabaseInputDefinition" + }, + "Metadata": { + "$ref": "#/definitions/Metadata" + }, + "S3InputDefinition": { + "$ref": "#/definitions/S3Location" + } + }, + "type": "object" + }, + "JsonOptions": { + "additionalProperties": false, + "description": "Json options", + "properties": { + "MultiLine": { + "type": "boolean" + } + }, + "type": "object" + }, + "Metadata": { + "additionalProperties": false, + "properties": { + "SourceArn": { + "description": "Arn of the source of the dataset. For e.g.: AppFlow Flow ARN.", + "type": "string" + } + }, + "type": "object" + }, + "PathOptions": { + "additionalProperties": false, + "description": "Path options for dataset", + "properties": { + "FilesLimit": { + "$ref": "#/definitions/FilesLimit" + }, + "LastModifiedDateCondition": { + "$ref": "#/definitions/FilterExpression" + }, + "Parameters": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PathParameter" + }, + "type": "array" + } + }, + "type": "object" + }, + "PathParameter": { + "additionalProperties": false, + "description": "A key-value pair to associate dataset parameter name with its definition.", + "properties": { + "DatasetParameter": { + "$ref": "#/definitions/DatasetParameter" + }, + "PathParameterName": { + "$ref": "#/definitions/PathParameterName" + } + }, + "required": [ + "PathParameterName", + "DatasetParameter" + ], + "type": "object" + }, + "PathParameterName": { + "description": "Parameter name", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "S3Location": { + "additionalProperties": false, + "description": "Input location", + "properties": { + "Bucket": { + "type": "string" + }, + "BucketOwner": { + "$ref": "#/definitions/BucketOwner" + }, + "Key": { + "type": "string" + } + }, + "required": [ + "Bucket" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DataBrew::Dataset.", + "handlers": { + "create": { + "permissions": [ + "databrew:CreateDataset", + "databrew:DescribeDataset", + "databrew:TagResource", + "databrew:UntagResource", + "glue:GetConnection", + "glue:GetTable", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "databrew:DeleteDataset" + ] + }, + "list": { + "permissions": [ + "databrew:ListDatasets", + "databrew:ListTagsForResource", + "iam:ListRoles" + ] + }, + "read": { + "permissions": [ + "databrew:DescribeDataset", + "iam:ListRoles" + ] + }, + "update": { + "permissions": [ + "databrew:UpdateDataset", + "databrew:TagResource", + "databrew:UntagResource", + "glue:GetConnection", + "glue:GetTable" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Format": { + "description": "Dataset format", + "enum": [ + "CSV", + "JSON", + "PARQUET", + "EXCEL", + "ORC" + ], + "type": "string" + }, + "FormatOptions": { + "$ref": "#/definitions/FormatOptions", + "description": "Format options for dataset" + }, + "Input": { + "$ref": "#/definitions/Input", + "description": "Input" + }, + "Name": { + "description": "Dataset name", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "PathOptions": { + "$ref": "#/definitions/PathOptions", + "description": "PathOptions" + }, + "Source": { + "description": "Source type of the dataset", + "enum": [ + "S3", + "DATA-CATALOG", + "DATABASE" + ], + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Name", + "Input" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-databrew.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "databrew:TagResource", + "databrew:UntagResource", + "databrew:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataBrew::Dataset" +} diff --git a/src/schema/aws-databrew-job.json b/src/schema/aws-databrew-job.json index b25d844d..a9863c09 100644 --- a/src/schema/aws-databrew-job.json +++ b/src/schema/aws-databrew-job.json @@ -1,643 +1,644 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Type", - "/properties/Tags" - ], - "definitions": { - "AllowedStatistics": { - "additionalProperties": false, - "properties": { - "Statistics": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Statistic" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Statistics" - ], - "type": "object" - }, - "ColumnSelector": { - "additionalProperties": false, - "properties": { - "Name": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Regex": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "ColumnStatisticsConfiguration": { - "additionalProperties": false, - "properties": { - "Selectors": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ColumnSelector" - }, - "minItems": 1, - "type": "array" - }, - "Statistics": { - "$ref": "#/definitions/StatisticsConfiguration" - } - }, - "required": [ - "Statistics" - ], - "type": "object" - }, - "CsvOutputOptions": { - "additionalProperties": false, - "description": "Output Csv options", - "properties": { - "Delimiter": { - "maxLength": 1, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "DataCatalogOutput": { - "additionalProperties": false, - "properties": { - "CatalogId": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "DatabaseName": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "DatabaseOptions": { - "$ref": "#/definitions/DatabaseTableOutputOptions" - }, - "Overwrite": { - "type": "boolean" - }, - "S3Options": { - "$ref": "#/definitions/S3TableOutputOptions" - }, - "TableName": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DatabaseName", - "TableName" - ], - "type": "object" - }, - "DatabaseOutput": { - "additionalProperties": false, - "properties": { - "DatabaseOptions": { - "$ref": "#/definitions/DatabaseTableOutputOptions" - }, - "DatabaseOutputMode": { - "description": "Database table name", - "enum": [ - "NEW_TABLE" - ], - "type": "string" - }, - "GlueConnectionName": { - "description": "Glue connection name", - "type": "string" - } - }, - "required": [ - "GlueConnectionName", - "DatabaseOptions" - ], - "type": "object" - }, - "DatabaseTableOutputOptions": { - "additionalProperties": false, - "properties": { - "TableName": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "TempDirectory": { - "$ref": "#/definitions/S3Location" - } - }, - "required": [ - "TableName" - ], - "type": "object" - }, - "EntityDetectorConfiguration": { - "additionalProperties": false, - "properties": { - "AllowedStatistics": { - "$ref": "#/definitions/AllowedStatistics" - }, - "EntityTypes": { - "insertionOrder": true, - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Z_][A-Z\\\\d_]*$", - "type": "string" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "EntityTypes" - ], - "type": "object" - }, - "JobSample": { - "additionalProperties": false, - "description": "Job Sample", - "properties": { - "Mode": { - "$ref": "#/definitions/SampleMode" - }, - "Size": { - "$ref": "#/definitions/JobSize" - } - }, - "type": "object" - }, - "JobSize": { - "description": "Sample configuration size for profile jobs.", - "format": "int64", - "type": "integer" - }, - "Output": { - "additionalProperties": false, - "properties": { - "CompressionFormat": { - "enum": [ - "GZIP", - "LZ4", - "SNAPPY", - "BZIP2", - "DEFLATE", - "LZO", - "BROTLI", - "ZSTD", - "ZLIB" - ], - "type": "string" - }, - "Format": { - "enum": [ - "CSV", - "JSON", - "PARQUET", - "GLUEPARQUET", - "AVRO", - "ORC", - "XML", - "TABLEAUHYPER" - ], - "type": "string" - }, - "FormatOptions": { - "$ref": "#/definitions/OutputFormatOptions" - }, - "Location": { - "$ref": "#/definitions/S3Location" - }, - "MaxOutputFiles": { - "maximum": 999, - "minimum": 1, - "type": "integer" - }, - "Overwrite": { - "type": "boolean" - }, - "PartitionColumns": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Location" - ], - "type": "object" - }, - "OutputFormatOptions": { - "additionalProperties": false, - "description": "Format options for job Output", - "properties": { - "Csv": { - "$ref": "#/definitions/CsvOutputOptions" - } - }, - "type": "object" - }, - "OutputLocation": { - "additionalProperties": false, - "description": "Output location", - "properties": { - "Bucket": { - "type": "string" - }, - "BucketOwner": { - "maxLength": 12, - "minLength": 12, - "type": "string" - }, - "Key": { - "type": "string" - } - }, - "required": [ - "Bucket" - ], - "type": "object" - }, - "ParameterMap": { - "additionalProperties": false, - "patternProperties": { - "^[A-Za-z0-9]{1,128}$": { - "type": "string" - } - }, - "type": "object" - }, - "ProfileConfiguration": { - "additionalProperties": false, - "properties": { - "ColumnStatisticsConfigurations": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ColumnStatisticsConfiguration" - }, - "minItems": 1, - "type": "array" - }, - "DatasetStatisticsConfiguration": { - "$ref": "#/definitions/StatisticsConfiguration" - }, - "EntityDetectorConfiguration": { - "$ref": "#/definitions/EntityDetectorConfiguration" - }, - "ProfileColumns": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ColumnSelector" - }, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "Recipe": { - "additionalProperties": false, - "properties": { - "Name": { - "description": "Recipe name", - "type": "string" - }, - "Version": { - "description": "Recipe version", - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "S3Location": { - "additionalProperties": false, - "description": "S3 Output location", - "properties": { - "Bucket": { - "type": "string" - }, - "BucketOwner": { - "maxLength": 12, - "minLength": 12, - "type": "string" - }, - "Key": { - "type": "string" - } - }, - "required": [ - "Bucket" - ], - "type": "object" - }, - "S3TableOutputOptions": { - "additionalProperties": false, - "properties": { - "Location": { - "$ref": "#/definitions/S3Location" - } - }, - "required": [ - "Location" - ], - "type": "object" - }, - "SampleMode": { - "description": "Sample configuration mode for profile jobs.", - "enum": [ - "FULL_DATASET", - "CUSTOM_ROWS" - ], - "type": "string" - }, - "Statistic": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Z\\_]+$", - "type": "string" - }, - "StatisticOverride": { - "additionalProperties": false, - "properties": { - "Parameters": { - "$ref": "#/definitions/ParameterMap" - }, - "Statistic": { - "$ref": "#/definitions/Statistic" - } - }, - "required": [ - "Statistic", - "Parameters" - ], - "type": "object" - }, - "StatisticsConfiguration": { - "additionalProperties": false, - "properties": { - "IncludedStatistics": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Statistic" - }, - "minItems": 1, - "type": "array" - }, - "Overrides": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StatisticOverride" - }, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "ValidationConfiguration": { - "additionalProperties": false, - "description": "Configuration to attach Rulesets to the job", - "properties": { - "RulesetArn": { - "description": "Arn of the Ruleset", - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "ValidationMode": { - "$ref": "#/definitions/ValidationMode" - } - }, - "required": [ - "RulesetArn" - ], - "type": "object" - }, - "ValidationMode": { - "enum": [ - "CHECK_ALL" - ], - "type": "string" - } - }, - "description": "Resource schema for AWS::DataBrew::Job.", - "handlers": { - "create": { - "permissions": [ - "databrew:CreateProfileJob", - "databrew:CreateRecipeJob", - "databrew:TagResource", - "databrew:UntagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "databrew:DeleteJob" - ] - }, - "list": { - "permissions": [ - "databrew:ListJobs", - "databrew:ListTagsForResource", - "iam:ListRoles" - ] - }, - "read": { - "permissions": [ - "databrew:DescribeJob", - "databrew:ListTagsForResource", - "iam:ListRoles" - ] - }, - "update": { - "permissions": [ - "databrew:UpdateProfileJob", - "databrew:UpdateRecipeJob", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "DataCatalogOutputs": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/DataCatalogOutput" - }, - "type": "array" - }, - "DatabaseOutputs": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/DatabaseOutput" - }, - "type": "array" - }, - "DatasetName": { - "description": "Dataset name", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "EncryptionKeyArn": { - "description": "Encryption Key Arn", - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "EncryptionMode": { - "description": "Encryption mode", - "enum": [ - "SSE-KMS", - "SSE-S3" - ], - "type": "string" - }, - "JobSample": { - "$ref": "#/definitions/JobSample", - "description": "Job Sample" - }, - "LogSubscription": { - "description": "Log subscription", - "enum": [ - "ENABLE", - "DISABLE" - ], - "type": "string" - }, - "MaxCapacity": { - "description": "Max capacity", - "type": "integer" - }, - "MaxRetries": { - "description": "Max retries", - "type": "integer" - }, - "Name": { - "description": "Job name", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "OutputLocation": { - "$ref": "#/definitions/OutputLocation", - "description": "Output location" - }, - "Outputs": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Output" - }, - "type": "array" - }, - "ProfileConfiguration": { - "$ref": "#/definitions/ProfileConfiguration", - "description": "Profile Job configuration" - }, - "ProjectName": { - "description": "Project name", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Recipe": { - "$ref": "#/definitions/Recipe" - }, - "RoleArn": { - "description": "Role arn", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Timeout": { - "description": "Timeout", - "type": "integer" - }, - "Type": { - "description": "Job type", - "enum": [ - "PROFILE", - "RECIPE" - ], - "type": "string" - }, - "ValidationConfigurations": { - "description": "Data quality rules configuration", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ValidationConfiguration" - }, - "type": "array" - } - }, - "required": [ - "Name", - "RoleArn", - "Type" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-databrew.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "databrew:TagResource", - "databrew:UntagResource", - "databrew:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::DataBrew::Job" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type" + ], + "definitions": { + "AllowedStatistics": { + "additionalProperties": false, + "properties": { + "Statistics": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Statistic" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Statistics" + ], + "type": "object" + }, + "ColumnSelector": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Regex": { + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "ColumnStatisticsConfiguration": { + "additionalProperties": false, + "properties": { + "Selectors": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ColumnSelector" + }, + "minItems": 1, + "type": "array" + }, + "Statistics": { + "$ref": "#/definitions/StatisticsConfiguration" + } + }, + "required": [ + "Statistics" + ], + "type": "object" + }, + "CsvOutputOptions": { + "additionalProperties": false, + "description": "Output Csv options", + "properties": { + "Delimiter": { + "maxLength": 1, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "DataCatalogOutput": { + "additionalProperties": false, + "properties": { + "CatalogId": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "DatabaseOptions": { + "$ref": "#/definitions/DatabaseTableOutputOptions" + }, + "Overwrite": { + "type": "boolean" + }, + "S3Options": { + "$ref": "#/definitions/S3TableOutputOptions" + }, + "TableName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DatabaseName", + "TableName" + ], + "type": "object" + }, + "DatabaseOutput": { + "additionalProperties": false, + "properties": { + "DatabaseOptions": { + "$ref": "#/definitions/DatabaseTableOutputOptions" + }, + "DatabaseOutputMode": { + "description": "Database table name", + "enum": [ + "NEW_TABLE" + ], + "type": "string" + }, + "GlueConnectionName": { + "description": "Glue connection name", + "type": "string" + } + }, + "required": [ + "GlueConnectionName", + "DatabaseOptions" + ], + "type": "object" + }, + "DatabaseTableOutputOptions": { + "additionalProperties": false, + "properties": { + "TableName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "TempDirectory": { + "$ref": "#/definitions/S3Location" + } + }, + "required": [ + "TableName" + ], + "type": "object" + }, + "EntityDetectorConfiguration": { + "additionalProperties": false, + "properties": { + "AllowedStatistics": { + "$ref": "#/definitions/AllowedStatistics" + }, + "EntityTypes": { + "insertionOrder": true, + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Z_][A-Z\\\\d_]*$", + "type": "string" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "EntityTypes" + ], + "type": "object" + }, + "JobSample": { + "additionalProperties": false, + "description": "Job Sample", + "properties": { + "Mode": { + "$ref": "#/definitions/SampleMode" + }, + "Size": { + "$ref": "#/definitions/JobSize" + } + }, + "type": "object" + }, + "JobSize": { + "description": "Sample configuration size for profile jobs.", + "format": "int64", + "type": "integer" + }, + "Output": { + "additionalProperties": false, + "properties": { + "CompressionFormat": { + "enum": [ + "GZIP", + "LZ4", + "SNAPPY", + "BZIP2", + "DEFLATE", + "LZO", + "BROTLI", + "ZSTD", + "ZLIB" + ], + "type": "string" + }, + "Format": { + "enum": [ + "CSV", + "JSON", + "PARQUET", + "GLUEPARQUET", + "AVRO", + "ORC", + "XML", + "TABLEAUHYPER" + ], + "type": "string" + }, + "FormatOptions": { + "$ref": "#/definitions/OutputFormatOptions" + }, + "Location": { + "$ref": "#/definitions/S3Location" + }, + "MaxOutputFiles": { + "maximum": 999, + "minimum": 1, + "type": "integer" + }, + "Overwrite": { + "type": "boolean" + }, + "PartitionColumns": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Location" + ], + "type": "object" + }, + "OutputFormatOptions": { + "additionalProperties": false, + "description": "Format options for job Output", + "properties": { + "Csv": { + "$ref": "#/definitions/CsvOutputOptions" + } + }, + "type": "object" + }, + "OutputLocation": { + "additionalProperties": false, + "description": "Output location", + "properties": { + "Bucket": { + "type": "string" + }, + "BucketOwner": { + "maxLength": 12, + "minLength": 12, + "type": "string" + }, + "Key": { + "type": "string" + } + }, + "required": [ + "Bucket" + ], + "type": "object" + }, + "ParameterMap": { + "additionalProperties": false, + "patternProperties": { + "^[A-Za-z0-9]{1,128}$": { + "type": "string" + } + }, + "type": "object" + }, + "ProfileConfiguration": { + "additionalProperties": false, + "properties": { + "ColumnStatisticsConfigurations": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ColumnStatisticsConfiguration" + }, + "minItems": 1, + "type": "array" + }, + "DatasetStatisticsConfiguration": { + "$ref": "#/definitions/StatisticsConfiguration" + }, + "EntityDetectorConfiguration": { + "$ref": "#/definitions/EntityDetectorConfiguration" + }, + "ProfileColumns": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ColumnSelector" + }, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "Recipe": { + "additionalProperties": false, + "properties": { + "Name": { + "description": "Recipe name", + "type": "string" + }, + "Version": { + "description": "Recipe version", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "S3Location": { + "additionalProperties": false, + "description": "S3 Output location", + "properties": { + "Bucket": { + "type": "string" + }, + "BucketOwner": { + "maxLength": 12, + "minLength": 12, + "type": "string" + }, + "Key": { + "type": "string" + } + }, + "required": [ + "Bucket" + ], + "type": "object" + }, + "S3TableOutputOptions": { + "additionalProperties": false, + "properties": { + "Location": { + "$ref": "#/definitions/S3Location" + } + }, + "required": [ + "Location" + ], + "type": "object" + }, + "SampleMode": { + "description": "Sample configuration mode for profile jobs.", + "enum": [ + "FULL_DATASET", + "CUSTOM_ROWS" + ], + "type": "string" + }, + "Statistic": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Z\\_]+$", + "type": "string" + }, + "StatisticOverride": { + "additionalProperties": false, + "properties": { + "Parameters": { + "$ref": "#/definitions/ParameterMap" + }, + "Statistic": { + "$ref": "#/definitions/Statistic" + } + }, + "required": [ + "Statistic", + "Parameters" + ], + "type": "object" + }, + "StatisticsConfiguration": { + "additionalProperties": false, + "properties": { + "IncludedStatistics": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Statistic" + }, + "minItems": 1, + "type": "array" + }, + "Overrides": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StatisticOverride" + }, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "ValidationConfiguration": { + "additionalProperties": false, + "description": "Configuration to attach Rulesets to the job", + "properties": { + "RulesetArn": { + "description": "Arn of the Ruleset", + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "ValidationMode": { + "$ref": "#/definitions/ValidationMode" + } + }, + "required": [ + "RulesetArn" + ], + "type": "object" + }, + "ValidationMode": { + "enum": [ + "CHECK_ALL" + ], + "type": "string" + } + }, + "description": "Resource schema for AWS::DataBrew::Job.", + "handlers": { + "create": { + "permissions": [ + "databrew:CreateProfileJob", + "databrew:CreateRecipeJob", + "databrew:DescribeJob", + "databrew:TagResource", + "databrew:UntagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "databrew:DeleteJob" + ] + }, + "list": { + "permissions": [ + "databrew:ListJobs", + "databrew:ListTagsForResource", + "iam:ListRoles" + ] + }, + "read": { + "permissions": [ + "databrew:DescribeJob", + "iam:ListRoles" + ] + }, + "update": { + "permissions": [ + "databrew:UpdateProfileJob", + "databrew:UpdateRecipeJob", + "databrew:TagResource", + "databrew:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "DataCatalogOutputs": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/DataCatalogOutput" + }, + "type": "array" + }, + "DatabaseOutputs": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/DatabaseOutput" + }, + "type": "array" + }, + "DatasetName": { + "description": "Dataset name", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "EncryptionKeyArn": { + "description": "Encryption Key Arn", + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "EncryptionMode": { + "description": "Encryption mode", + "enum": [ + "SSE-KMS", + "SSE-S3" + ], + "type": "string" + }, + "JobSample": { + "$ref": "#/definitions/JobSample", + "description": "Job Sample" + }, + "LogSubscription": { + "description": "Log subscription", + "enum": [ + "ENABLE", + "DISABLE" + ], + "type": "string" + }, + "MaxCapacity": { + "description": "Max capacity", + "type": "integer" + }, + "MaxRetries": { + "description": "Max retries", + "type": "integer" + }, + "Name": { + "description": "Job name", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "OutputLocation": { + "$ref": "#/definitions/OutputLocation", + "description": "Output location" + }, + "Outputs": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Output" + }, + "type": "array" + }, + "ProfileConfiguration": { + "$ref": "#/definitions/ProfileConfiguration", + "description": "Profile Job configuration" + }, + "ProjectName": { + "description": "Project name", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Recipe": { + "$ref": "#/definitions/Recipe" + }, + "RoleArn": { + "description": "Role arn", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Timeout": { + "description": "Timeout", + "type": "integer" + }, + "Type": { + "description": "Job type", + "enum": [ + "PROFILE", + "RECIPE" + ], + "type": "string" + }, + "ValidationConfigurations": { + "description": "Data quality rules configuration", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ValidationConfiguration" + }, + "type": "array" + } + }, + "required": [ + "Name", + "RoleArn", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-databrew.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "databrew:TagResource", + "databrew:UntagResource", + "databrew:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataBrew::Job" +} diff --git a/src/schema/aws-databrew-project.json b/src/schema/aws-databrew-project.json index dd017e1e..548fe77f 100644 --- a/src/schema/aws-databrew-project.json +++ b/src/schema/aws-databrew-project.json @@ -1,148 +1,149 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Tags" - ], - "definitions": { - "Sample": { - "additionalProperties": false, - "properties": { - "Size": { - "description": "Sample size", - "minimum": 1, - "type": "integer" - }, - "Type": { - "description": "Sample type", - "enum": [ - "FIRST_N", - "LAST_N", - "RANDOM" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DataBrew::Project.", - "handlers": { - "create": { - "permissions": [ - "databrew:CreateProject", - "databrew:TagResource", - "databrew:UntagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "databrew:DeleteProject" - ] - }, - "list": { - "permissions": [ - "databrew:ListProjects", - "databrew:ListTagsForResource", - "iam:ListRoles" - ] - }, - "read": { - "permissions": [ - "databrew:DescribeProject", - "databrew:ListTagsForResource", - "iam:ListRoles" - ] - }, - "update": { - "permissions": [ - "databrew:UpdateProject", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "DatasetName": { - "description": "Dataset name", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "Project name", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "RecipeName": { - "description": "Recipe name", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "RoleArn": { - "description": "Role arn", - "type": "string" - }, - "Sample": { - "$ref": "#/definitions/Sample", - "description": "Sample" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "DatasetName", - "Name", - "RecipeName", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-databrew.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "databrew:TagResource", - "databrew:UntagResource", - "databrew:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::DataBrew::Project" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Sample": { + "additionalProperties": false, + "properties": { + "Size": { + "description": "Sample size", + "minimum": 1, + "type": "integer" + }, + "Type": { + "description": "Sample type", + "enum": [ + "FIRST_N", + "LAST_N", + "RANDOM" + ], + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DataBrew::Project.", + "handlers": { + "create": { + "permissions": [ + "databrew:CreateProject", + "databrew:DescribeProject", + "databrew:TagResource", + "databrew:UntagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "databrew:DeleteProject" + ] + }, + "list": { + "permissions": [ + "databrew:ListProjects", + "databrew:ListTagsForResource", + "iam:ListRoles" + ] + }, + "read": { + "permissions": [ + "databrew:DescribeProject", + "iam:ListRoles" + ] + }, + "update": { + "permissions": [ + "databrew:UpdateProject", + "databrew:TagResource", + "databrew:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "DatasetName": { + "description": "Dataset name", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "Project name", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "RecipeName": { + "description": "Recipe name", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "RoleArn": { + "description": "Role arn", + "type": "string" + }, + "Sample": { + "$ref": "#/definitions/Sample", + "description": "Sample" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "DatasetName", + "Name", + "RecipeName", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-databrew.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "databrew:TagResource", + "databrew:UntagResource", + "databrew:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataBrew::Project" +} diff --git a/src/schema/aws-databrew-recipe.json b/src/schema/aws-databrew-recipe.json index ec4adadc..8a75b865 100644 --- a/src/schema/aws-databrew-recipe.json +++ b/src/schema/aws-databrew-recipe.json @@ -1,600 +1,601 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Tags" - ], - "definitions": { - "Action": { - "additionalProperties": false, - "properties": { - "Operation": { - "description": "Step action operation", - "type": "string" - }, - "Parameters": { - "anyOf": [ - { - "$ref": "#/definitions/RecipeParameters" - }, - { - "$ref": "#/definitions/ParameterMap" - } - ] - } - }, - "required": [ - "Operation" - ], - "type": "object" - }, - "ConditionExpression": { - "additionalProperties": false, - "description": "Condition expressions applied to the step action", - "properties": { - "Condition": { - "description": "Input condition to be applied to the target column", - "type": "string" - }, - "TargetColumn": { - "description": "Name of the target column", - "type": "string" - }, - "Value": { - "description": "Value of the condition", - "type": "string" - } - }, - "required": [ - "Condition", - "TargetColumn" - ], - "type": "object" - }, - "DataCatalogInputDefinition": { - "additionalProperties": false, - "properties": { - "CatalogId": { - "description": "Catalog id", - "type": "string" - }, - "DatabaseName": { - "description": "Database name", - "type": "string" - }, - "TableName": { - "description": "Table name", - "type": "string" - }, - "TempDirectory": { - "$ref": "#/definitions/S3Location" - } - }, - "type": "object" - }, - "ParameterMap": { - "additionalProperties": false, - "patternProperties": { - "^[A-Za-z0-9]{1,128}$": { - "type": "string" - } - }, - "type": "object" - }, - "RecipeParameters": { - "additionalProperties": false, - "properties": { - "AggregateFunction": { - "type": "string" - }, - "Base": { - "type": "string" - }, - "CaseStatement": { - "type": "string" - }, - "CategoryMap": { - "type": "string" - }, - "CharsToRemove": { - "type": "string" - }, - "CollapseConsecutiveWhitespace": { - "type": "string" - }, - "ColumnDataType": { - "type": "string" - }, - "ColumnRange": { - "type": "string" - }, - "Count": { - "type": "string" - }, - "CustomCharacters": { - "type": "string" - }, - "CustomStopWords": { - "type": "string" - }, - "CustomValue": { - "type": "string" - }, - "DatasetsColumns": { - "type": "string" - }, - "DateAddValue": { - "type": "string" - }, - "DateTimeFormat": { - "type": "string" - }, - "DateTimeParameters": { - "type": "string" - }, - "DeleteOtherRows": { - "type": "string" - }, - "Delimiter": { - "type": "string" - }, - "EndPattern": { - "type": "string" - }, - "EndPosition": { - "type": "string" - }, - "EndValue": { - "type": "string" - }, - "ExpandContractions": { - "type": "string" - }, - "Exponent": { - "type": "string" - }, - "FalseString": { - "type": "string" - }, - "GroupByAggFunctionOptions": { - "type": "string" - }, - "GroupByColumns": { - "type": "string" - }, - "HiddenColumns": { - "type": "string" - }, - "IgnoreCase": { - "type": "string" - }, - "IncludeInSplit": { - "type": "string" - }, - "Input": { - "additionalProperties": false, - "description": "Input", - "oneOf": [ - { - "required": [ - "S3InputDefinition" - ] - }, - { - "required": [ - "DataCatalogInputDefinition" - ] - } - ], - "properties": { - "DataCatalogInputDefinition": { - "$ref": "#/definitions/DataCatalogInputDefinition" - }, - "S3InputDefinition": { - "$ref": "#/definitions/S3Location" - } - }, - "type": "object" - }, - "Interval": { - "type": "string" - }, - "IsText": { - "type": "string" - }, - "JoinKeys": { - "type": "string" - }, - "JoinType": { - "type": "string" - }, - "LeftColumns": { - "type": "string" - }, - "Limit": { - "type": "string" - }, - "LowerBound": { - "type": "string" - }, - "MapType": { - "type": "string" - }, - "ModeType": { - "type": "string" - }, - "MultiLine": { - "type": "boolean" - }, - "NumRows": { - "type": "string" - }, - "NumRowsAfter": { - "type": "string" - }, - "NumRowsBefore": { - "type": "string" - }, - "OrderByColumn": { - "type": "string" - }, - "OrderByColumns": { - "type": "string" - }, - "Other": { - "type": "string" - }, - "Pattern": { - "type": "string" - }, - "PatternOption1": { - "type": "string" - }, - "PatternOption2": { - "type": "string" - }, - "PatternOptions": { - "type": "string" - }, - "Period": { - "type": "string" - }, - "Position": { - "type": "string" - }, - "RemoveAllPunctuation": { - "type": "string" - }, - "RemoveAllQuotes": { - "type": "string" - }, - "RemoveAllWhitespace": { - "type": "string" - }, - "RemoveCustomCharacters": { - "type": "string" - }, - "RemoveCustomValue": { - "type": "string" - }, - "RemoveLeadingAndTrailingPunctuation": { - "type": "string" - }, - "RemoveLeadingAndTrailingQuotes": { - "type": "string" - }, - "RemoveLeadingAndTrailingWhitespace": { - "type": "string" - }, - "RemoveLetters": { - "type": "string" - }, - "RemoveNumbers": { - "type": "string" - }, - "RemoveSourceColumn": { - "type": "string" - }, - "RemoveSpecialCharacters": { - "type": "string" - }, - "RightColumns": { - "type": "string" - }, - "SampleSize": { - "type": "string" - }, - "SampleType": { - "type": "string" - }, - "SecondInput": { - "type": "string" - }, - "SecondaryInputs": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/SecondaryInput" - }, - "type": "array", - "uniqueItems": false - }, - "SheetIndexes": { - "insertionOrder": true, - "items": { - "type": "integer" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "SheetNames": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "SourceColumn": { - "type": "string" - }, - "SourceColumn1": { - "type": "string" - }, - "SourceColumn2": { - "type": "string" - }, - "SourceColumns": { - "type": "string" - }, - "StartColumnIndex": { - "type": "string" - }, - "StartPattern": { - "type": "string" - }, - "StartPosition": { - "type": "string" - }, - "StartValue": { - "type": "string" - }, - "StemmingMode": { - "type": "string" - }, - "StepCount": { - "type": "string" - }, - "StepIndex": { - "type": "string" - }, - "StopWordsMode": { - "type": "string" - }, - "Strategy": { - "type": "string" - }, - "TargetColumn": { - "type": "string" - }, - "TargetColumnNames": { - "type": "string" - }, - "TargetDateFormat": { - "type": "string" - }, - "TargetIndex": { - "type": "string" - }, - "TimeZone": { - "type": "string" - }, - "TokenizerPattern": { - "type": "string" - }, - "TrueString": { - "type": "string" - }, - "UdfLang": { - "type": "string" - }, - "Units": { - "type": "string" - }, - "UnpivotColumn": { - "type": "string" - }, - "UpperBound": { - "type": "string" - }, - "UseNewDataFrame": { - "type": "string" - }, - "Value": { - "type": "string" - }, - "Value1": { - "type": "string" - }, - "Value2": { - "type": "string" - }, - "ValueColumn": { - "type": "string" - }, - "ViewFrame": { - "type": "string" - } - } - }, - "RecipeStep": { - "additionalProperties": false, - "properties": { - "Action": { - "$ref": "#/definitions/Action" - }, - "ConditionExpressions": { - "description": "Condition expressions applied to the step action", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ConditionExpression" - }, - "type": "array" - } - }, - "required": [ - "Action" - ], - "type": "object" - }, - "S3Location": { - "additionalProperties": false, - "description": "Input location", - "properties": { - "Bucket": { - "type": "string" - }, - "Key": { - "type": "string" - } - }, - "required": [ - "Bucket" - ], - "type": "object" - }, - "SecondaryInput": { - "additionalProperties": false, - "description": "Secondary input", - "oneOf": [ - { - "required": [ - "S3InputDefinition" - ] - }, - { - "required": [ - "DataCatalogInputDefinition" - ] - } - ], - "properties": { - "DataCatalogInputDefinition": { - "$ref": "#/definitions/DataCatalogInputDefinition" - }, - "S3InputDefinition": { - "$ref": "#/definitions/S3Location" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DataBrew::Recipe.", - "handlers": { - "create": { - "permissions": [ - "databrew:CreateRecipe", - "databrew:TagResource", - "databrew:UntagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "databrew:DeleteRecipeVersion" - ] - }, - "list": { - "permissions": [ - "databrew:ListRecipes", - "databrew:ListTagsForResource", - "iam:ListRoles" - ] - }, - "read": { - "permissions": [ - "databrew:DescribeRecipe", - "databrew:ListTagsForResource", - "iam:ListRoles" - ] - }, - "update": { - "permissions": [ - "databrew:UpdateRecipe" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Description": { - "description": "Description of the recipe", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "Name": { - "description": "Recipe name", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Steps": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/RecipeStep", - "type": "object" - }, - "type": "array" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Name", - "Steps" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-databrew.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "databrew:TagResource", - "databrew:UntagResource", - "databrew:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::DataBrew::Recipe" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Action": { + "additionalProperties": false, + "properties": { + "Operation": { + "description": "Step action operation", + "type": "string" + }, + "Parameters": { + "anyOf": [ + { + "$ref": "#/definitions/RecipeParameters" + }, + { + "$ref": "#/definitions/ParameterMap" + } + ] + } + }, + "required": [ + "Operation" + ], + "type": "object" + }, + "ConditionExpression": { + "additionalProperties": false, + "description": "Condition expressions applied to the step action", + "properties": { + "Condition": { + "description": "Input condition to be applied to the target column", + "type": "string" + }, + "TargetColumn": { + "description": "Name of the target column", + "type": "string" + }, + "Value": { + "description": "Value of the condition", + "type": "string" + } + }, + "required": [ + "Condition", + "TargetColumn" + ], + "type": "object" + }, + "DataCatalogInputDefinition": { + "additionalProperties": false, + "properties": { + "CatalogId": { + "description": "Catalog id", + "type": "string" + }, + "DatabaseName": { + "description": "Database name", + "type": "string" + }, + "TableName": { + "description": "Table name", + "type": "string" + }, + "TempDirectory": { + "$ref": "#/definitions/S3Location" + } + }, + "type": "object" + }, + "ParameterMap": { + "additionalProperties": false, + "patternProperties": { + "^[A-Za-z0-9]{1,128}$": { + "type": "string" + } + }, + "type": "object" + }, + "RecipeParameters": { + "additionalProperties": false, + "properties": { + "AggregateFunction": { + "type": "string" + }, + "Base": { + "type": "string" + }, + "CaseStatement": { + "type": "string" + }, + "CategoryMap": { + "type": "string" + }, + "CharsToRemove": { + "type": "string" + }, + "CollapseConsecutiveWhitespace": { + "type": "string" + }, + "ColumnDataType": { + "type": "string" + }, + "ColumnRange": { + "type": "string" + }, + "Count": { + "type": "string" + }, + "CustomCharacters": { + "type": "string" + }, + "CustomStopWords": { + "type": "string" + }, + "CustomValue": { + "type": "string" + }, + "DatasetsColumns": { + "type": "string" + }, + "DateAddValue": { + "type": "string" + }, + "DateTimeFormat": { + "type": "string" + }, + "DateTimeParameters": { + "type": "string" + }, + "DeleteOtherRows": { + "type": "string" + }, + "Delimiter": { + "type": "string" + }, + "EndPattern": { + "type": "string" + }, + "EndPosition": { + "type": "string" + }, + "EndValue": { + "type": "string" + }, + "ExpandContractions": { + "type": "string" + }, + "Exponent": { + "type": "string" + }, + "FalseString": { + "type": "string" + }, + "GroupByAggFunctionOptions": { + "type": "string" + }, + "GroupByColumns": { + "type": "string" + }, + "HiddenColumns": { + "type": "string" + }, + "IgnoreCase": { + "type": "string" + }, + "IncludeInSplit": { + "type": "string" + }, + "Input": { + "additionalProperties": false, + "description": "Input", + "oneOf": [ + { + "required": [ + "S3InputDefinition" + ] + }, + { + "required": [ + "DataCatalogInputDefinition" + ] + } + ], + "properties": { + "DataCatalogInputDefinition": { + "$ref": "#/definitions/DataCatalogInputDefinition" + }, + "S3InputDefinition": { + "$ref": "#/definitions/S3Location" + } + }, + "type": "object" + }, + "Interval": { + "type": "string" + }, + "IsText": { + "type": "string" + }, + "JoinKeys": { + "type": "string" + }, + "JoinType": { + "type": "string" + }, + "LeftColumns": { + "type": "string" + }, + "Limit": { + "type": "string" + }, + "LowerBound": { + "type": "string" + }, + "MapType": { + "type": "string" + }, + "ModeType": { + "type": "string" + }, + "MultiLine": { + "type": "boolean" + }, + "NumRows": { + "type": "string" + }, + "NumRowsAfter": { + "type": "string" + }, + "NumRowsBefore": { + "type": "string" + }, + "OrderByColumn": { + "type": "string" + }, + "OrderByColumns": { + "type": "string" + }, + "Other": { + "type": "string" + }, + "Pattern": { + "type": "string" + }, + "PatternOption1": { + "type": "string" + }, + "PatternOption2": { + "type": "string" + }, + "PatternOptions": { + "type": "string" + }, + "Period": { + "type": "string" + }, + "Position": { + "type": "string" + }, + "RemoveAllPunctuation": { + "type": "string" + }, + "RemoveAllQuotes": { + "type": "string" + }, + "RemoveAllWhitespace": { + "type": "string" + }, + "RemoveCustomCharacters": { + "type": "string" + }, + "RemoveCustomValue": { + "type": "string" + }, + "RemoveLeadingAndTrailingPunctuation": { + "type": "string" + }, + "RemoveLeadingAndTrailingQuotes": { + "type": "string" + }, + "RemoveLeadingAndTrailingWhitespace": { + "type": "string" + }, + "RemoveLetters": { + "type": "string" + }, + "RemoveNumbers": { + "type": "string" + }, + "RemoveSourceColumn": { + "type": "string" + }, + "RemoveSpecialCharacters": { + "type": "string" + }, + "RightColumns": { + "type": "string" + }, + "SampleSize": { + "type": "string" + }, + "SampleType": { + "type": "string" + }, + "SecondInput": { + "type": "string" + }, + "SecondaryInputs": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/SecondaryInput" + }, + "type": "array", + "uniqueItems": false + }, + "SheetIndexes": { + "insertionOrder": true, + "items": { + "type": "integer" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "SheetNames": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "SourceColumn": { + "type": "string" + }, + "SourceColumn1": { + "type": "string" + }, + "SourceColumn2": { + "type": "string" + }, + "SourceColumns": { + "type": "string" + }, + "StartColumnIndex": { + "type": "string" + }, + "StartPattern": { + "type": "string" + }, + "StartPosition": { + "type": "string" + }, + "StartValue": { + "type": "string" + }, + "StemmingMode": { + "type": "string" + }, + "StepCount": { + "type": "string" + }, + "StepIndex": { + "type": "string" + }, + "StopWordsMode": { + "type": "string" + }, + "Strategy": { + "type": "string" + }, + "TargetColumn": { + "type": "string" + }, + "TargetColumnNames": { + "type": "string" + }, + "TargetDateFormat": { + "type": "string" + }, + "TargetIndex": { + "type": "string" + }, + "TimeZone": { + "type": "string" + }, + "TokenizerPattern": { + "type": "string" + }, + "TrueString": { + "type": "string" + }, + "UdfLang": { + "type": "string" + }, + "Units": { + "type": "string" + }, + "UnpivotColumn": { + "type": "string" + }, + "UpperBound": { + "type": "string" + }, + "UseNewDataFrame": { + "type": "string" + }, + "Value": { + "type": "string" + }, + "Value1": { + "type": "string" + }, + "Value2": { + "type": "string" + }, + "ValueColumn": { + "type": "string" + }, + "ViewFrame": { + "type": "string" + } + } + }, + "RecipeStep": { + "additionalProperties": false, + "properties": { + "Action": { + "$ref": "#/definitions/Action" + }, + "ConditionExpressions": { + "description": "Condition expressions applied to the step action", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ConditionExpression" + }, + "type": "array" + } + }, + "required": [ + "Action" + ], + "type": "object" + }, + "S3Location": { + "additionalProperties": false, + "description": "Input location", + "properties": { + "Bucket": { + "type": "string" + }, + "Key": { + "type": "string" + } + }, + "required": [ + "Bucket" + ], + "type": "object" + }, + "SecondaryInput": { + "additionalProperties": false, + "description": "Secondary input", + "oneOf": [ + { + "required": [ + "S3InputDefinition" + ] + }, + { + "required": [ + "DataCatalogInputDefinition" + ] + } + ], + "properties": { + "DataCatalogInputDefinition": { + "$ref": "#/definitions/DataCatalogInputDefinition" + }, + "S3InputDefinition": { + "$ref": "#/definitions/S3Location" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DataBrew::Recipe.", + "handlers": { + "create": { + "permissions": [ + "databrew:CreateRecipe", + "databrew:DescribeRecipe", + "databrew:TagResource", + "databrew:UntagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "databrew:DeleteRecipeVersion" + ] + }, + "list": { + "permissions": [ + "databrew:ListRecipes", + "iam:ListRoles" + ] + }, + "read": { + "permissions": [ + "databrew:DescribeRecipe", + "databrew:ListTagsForResource", + "iam:ListRoles" + ] + }, + "update": { + "permissions": [ + "databrew:UpdateRecipe", + "databrew:TagResource", + "databrew:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Description": { + "description": "Description of the recipe", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "Name": { + "description": "Recipe name", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Steps": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/RecipeStep", + "type": "object" + }, + "type": "array" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Name", + "Steps" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-databrew.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "databrew:TagResource", + "databrew:UntagResource", + "databrew:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataBrew::Recipe" +} diff --git a/src/schema/aws-databrew-ruleset.json b/src/schema/aws-databrew-ruleset.json index 8ba9aa94..41556df5 100644 --- a/src/schema/aws-databrew-ruleset.json +++ b/src/schema/aws-databrew-ruleset.json @@ -1,262 +1,263 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/TargetArn", - "/properties/Tags" - ], - "definitions": { - "ColumnSelector": { - "additionalProperties": false, - "description": "Selector of a column from a dataset for profile job configuration. One selector includes either a column name or a regular expression", - "properties": { - "Name": { - "description": "The name of a column from a dataset", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Regex": { - "description": "A regular expression for selecting a column from a dataset", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "Disabled": { - "description": "Boolean value to disable/enable a rule", - "type": "boolean" - }, - "Expression": { - "description": "Expression with rule conditions", - "maxLength": 1024, - "minLength": 4, - "pattern": "^[><0-9A-Za-z_.,:)(!= ]+$", - "type": "string" - }, - "Rule": { - "additionalProperties": false, - "description": "Data quality rule for a target resource (dataset)", - "properties": { - "CheckExpression": { - "$ref": "#/definitions/Expression" - }, - "ColumnSelectors": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ColumnSelector" - }, - "minItems": 1, - "type": "array" - }, - "Disabled": { - "$ref": "#/definitions/Disabled" - }, - "Name": { - "description": "Name of the rule", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "SubstitutionMap": { - "$ref": "#/definitions/ValuesMap" - }, - "Threshold": { - "$ref": "#/definitions/Threshold" - } - }, - "required": [ - "Name", - "CheckExpression" - ], - "type": "object" - }, - "SubstitutionValue": { - "additionalProperties": false, - "description": "A key-value pair to associate expression's substitution variable names with their values", - "properties": { - "Value": { - "description": "Value or column name", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "ValueReference": { - "description": "Variable name", - "maxLength": 128, - "minLength": 2, - "pattern": "^:[A-Za-z0-9_]+$", - "type": "string" - } - }, - "required": [ - "ValueReference", - "Value" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Threshold": { - "additionalProperties": false, - "properties": { - "Type": { - "$ref": "#/definitions/ThresholdType" - }, - "Unit": { - "$ref": "#/definitions/ThresholdUnit" - }, - "Value": { - "$ref": "#/definitions/ThresholdValue" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "ThresholdType": { - "description": "Threshold type for a rule", - "enum": [ - "GREATER_THAN_OR_EQUAL", - "LESS_THAN_OR_EQUAL", - "GREATER_THAN", - "LESS_THAN" - ], - "type": "string" - }, - "ThresholdUnit": { - "description": "Threshold unit for a rule", - "enum": [ - "COUNT", - "PERCENTAGE" - ], - "type": "string" - }, - "ThresholdValue": { - "description": "Threshold value for a rule", - "type": "number" - }, - "ValuesMap": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/SubstitutionValue" - }, - "type": "array" - } - }, - "description": "Resource schema for AWS::DataBrew::Ruleset.", - "handlers": { - "create": { - "permissions": [ - "databrew:CreateRuleset", - "databrew:TagResource", - "databrew:UntagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "databrew:DeleteRuleset" - ] - }, - "list": { - "permissions": [ - "databrew:ListRulesets", - "databrew:ListTagsForResource", - "iam:ListRoles" - ] - }, - "read": { - "permissions": [ - "databrew:DescribeRuleset", - "databrew:ListTagsForResource", - "iam:ListRoles" - ] - }, - "update": { - "permissions": [ - "databrew:UpdateRuleset" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Description": { - "description": "Description of the Ruleset", - "maxLength": 1024, - "type": "string" - }, - "Name": { - "description": "Name of the Ruleset", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Rules": { - "description": "List of the data quality rules in the ruleset", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Rule" - }, - "minItems": 1, - "type": "array" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TargetArn": { - "description": "Arn of the target resource (dataset) to apply the ruleset to", - "maxLength": 2048, - "minLength": 20, - "type": "string" - } - }, - "required": [ - "Name", - "TargetArn", - "Rules" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-databrew.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "databrew:TagResource", - "databrew:UntagResource", - "databrew:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::DataBrew::Ruleset" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/TargetArn" + ], + "definitions": { + "ColumnSelector": { + "additionalProperties": false, + "description": "Selector of a column from a dataset for profile job configuration. One selector includes either a column name or a regular expression", + "properties": { + "Name": { + "description": "The name of a column from a dataset", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Regex": { + "description": "A regular expression for selecting a column from a dataset", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "Disabled": { + "description": "Boolean value to disable/enable a rule", + "type": "boolean" + }, + "Expression": { + "description": "Expression with rule conditions", + "maxLength": 1024, + "minLength": 4, + "pattern": "^[><0-9A-Za-z_.,:)(!= ]+$", + "type": "string" + }, + "Rule": { + "additionalProperties": false, + "description": "Data quality rule for a target resource (dataset)", + "properties": { + "CheckExpression": { + "$ref": "#/definitions/Expression" + }, + "ColumnSelectors": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ColumnSelector" + }, + "minItems": 1, + "type": "array" + }, + "Disabled": { + "$ref": "#/definitions/Disabled" + }, + "Name": { + "description": "Name of the rule", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SubstitutionMap": { + "$ref": "#/definitions/ValuesMap" + }, + "Threshold": { + "$ref": "#/definitions/Threshold" + } + }, + "required": [ + "Name", + "CheckExpression" + ], + "type": "object" + }, + "SubstitutionValue": { + "additionalProperties": false, + "description": "A key-value pair to associate expression's substitution variable names with their values", + "properties": { + "Value": { + "description": "Value or column name", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "ValueReference": { + "description": "Variable name", + "maxLength": 128, + "minLength": 2, + "pattern": "^:[A-Za-z0-9_]+$", + "type": "string" + } + }, + "required": [ + "ValueReference", + "Value" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "Threshold": { + "additionalProperties": false, + "properties": { + "Type": { + "$ref": "#/definitions/ThresholdType" + }, + "Unit": { + "$ref": "#/definitions/ThresholdUnit" + }, + "Value": { + "$ref": "#/definitions/ThresholdValue" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "ThresholdType": { + "description": "Threshold type for a rule", + "enum": [ + "GREATER_THAN_OR_EQUAL", + "LESS_THAN_OR_EQUAL", + "GREATER_THAN", + "LESS_THAN" + ], + "type": "string" + }, + "ThresholdUnit": { + "description": "Threshold unit for a rule", + "enum": [ + "COUNT", + "PERCENTAGE" + ], + "type": "string" + }, + "ThresholdValue": { + "description": "Threshold value for a rule", + "type": "number" + }, + "ValuesMap": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/SubstitutionValue" + }, + "type": "array" + } + }, + "description": "Resource schema for AWS::DataBrew::Ruleset.", + "handlers": { + "create": { + "permissions": [ + "databrew:CreateRuleset", + "databrew:DescribeRuleset", + "databrew:TagResource", + "databrew:UntagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "databrew:DeleteRuleset" + ] + }, + "list": { + "permissions": [ + "databrew:ListRulesets", + "databrew:ListTagsForResource", + "iam:ListRoles" + ] + }, + "read": { + "permissions": [ + "databrew:DescribeRuleset", + "iam:ListRoles" + ] + }, + "update": { + "permissions": [ + "databrew:UpdateRuleset", + "databrew:TagResource", + "databrew:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Description": { + "description": "Description of the Ruleset", + "maxLength": 1024, + "type": "string" + }, + "Name": { + "description": "Name of the Ruleset", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Rules": { + "description": "List of the data quality rules in the ruleset", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Rule" + }, + "minItems": 1, + "type": "array" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TargetArn": { + "description": "Arn of the target resource (dataset) to apply the ruleset to", + "maxLength": 2048, + "minLength": 20, + "type": "string" + } + }, + "required": [ + "Name", + "TargetArn", + "Rules" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-databrew.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "databrew:TagResource", + "databrew:UntagResource", + "databrew:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataBrew::Ruleset" +} diff --git a/src/schema/aws-databrew-schedule.json b/src/schema/aws-databrew-schedule.json index 9f282db1..e8b464cf 100644 --- a/src/schema/aws-databrew-schedule.json +++ b/src/schema/aws-databrew-schedule.json @@ -1,122 +1,123 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Tags" - ], - "definitions": { - "JobName": { - "description": "Job name", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DataBrew::Schedule.", - "handlers": { - "create": { - "permissions": [ - "databrew:CreateSchedule", - "databrew:TagResource", - "databrew:UntagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "databrew:DeleteSchedule" - ] - }, - "list": { - "permissions": [ - "databrew:ListSchedules", - "databrew:ListTagsForResource", - "iam:ListRoles" - ] - }, - "read": { - "permissions": [ - "databrew:DescribeSchedule", - "databrew:ListTagsForResource", - "iam:ListRoles" - ] - }, - "update": { - "permissions": [ - "databrew:UpdateSchedule" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "CronExpression": { - "description": "Schedule cron", - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "JobNames": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/JobName" - }, - "type": "array", - "uniqueItems": true - }, - "Name": { - "description": "Schedule Name", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Name", - "CronExpression" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-databrew.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "databrew:TagResource", - "databrew:UntagResource", - "databrew:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::DataBrew::Schedule" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "JobName": { + "description": "Job name", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DataBrew::Schedule.", + "handlers": { + "create": { + "permissions": [ + "databrew:CreateSchedule", + "databrew:DescribeSchedule", + "databrew:TagResource", + "databrew:UntagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "databrew:DeleteSchedule" + ] + }, + "list": { + "permissions": [ + "databrew:ListSchedules", + "databrew:ListTagsForResource", + "iam:ListRoles" + ] + }, + "read": { + "permissions": [ + "databrew:DescribeSchedule", + "iam:ListRoles" + ] + }, + "update": { + "permissions": [ + "databrew:UpdateSchedule", + "databrew:TagResource", + "databrew:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "CronExpression": { + "description": "Schedule cron", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "JobNames": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/JobName" + }, + "type": "array", + "uniqueItems": true + }, + "Name": { + "description": "Schedule Name", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Name", + "CronExpression" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-databrew.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "databrew:TagResource", + "databrew:UntagResource", + "databrew:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataBrew::Schedule" +} diff --git a/src/schema/aws-datapipeline-pipeline.json b/src/schema/aws-datapipeline-pipeline.json index 427fed0e..c5a9af94 100644 --- a/src/schema/aws-datapipeline-pipeline.json +++ b/src/schema/aws-datapipeline-pipeline.json @@ -1,255 +1,259 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Description", - "/properties/Name" - ], - "definitions": { - "Field": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "Specifies the name of a field for a particular object. To view valid values for a particular field, see Pipeline Object Reference in the AWS Data Pipeline Developer Guide.", - "type": "string" - }, - "RefValue": { - "description": "A field value that you specify as an identifier of another object in the same pipeline definition.", - "type": "string" - }, - "StringValue": { - "description": "A field value that you specify as a string. To view valid values for a particular field, see Pipeline Object Reference in the AWS Data Pipeline Developer Guide.", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - }, - "ParameterAttribute": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The field identifier.", - "type": "string" - }, - "StringValue": { - "description": "The field value, expressed as a String.", - "type": "string" - } - }, - "required": [ - "Key", - "StringValue" - ], - "type": "object" - }, - "ParameterObject": { - "additionalProperties": false, - "properties": { - "Attributes": { - "description": "The attributes of the parameter object.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ParameterAttribute" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "description": "The ID of the parameter object.", - "type": "string" - } - }, - "required": [ - "Attributes", - "Id" - ], - "type": "object" - }, - "ParameterValue": { - "additionalProperties": false, - "properties": { - "Id": { - "description": "The ID of the parameter value.", - "type": "string" - }, - "StringValue": { - "description": "The field value, expressed as a String.", - "type": "string" - } - }, - "required": [ - "Id", - "StringValue" - ], - "type": "object" - }, - "PipelineObject": { - "additionalProperties": false, - "properties": { - "Fields": { - "description": "Key-value pairs that define the properties of the object.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Field" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "description": "The ID of the object.", - "type": "string" - }, - "Name": { - "description": "The name of the object.", - "type": "string" - } - }, - "required": [ - "Fields", - "Id", - "Name" - ], - "type": "object" - }, - "PipelineTag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key name of a tag.", - "type": "string" - }, - "Value": { - "description": "The value to associate with the key name.", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "An example resource schema demonstrating some basic constructs and validation rules.", - "handlers": { - "create": { - "permissions": [ - "datapipeline:CreatePipeline", - "datapipeline:PutPipelineDefinition", - "datapipeline:GetPipelineDefinition", - "datapipeline:DescribePipelines", - "datapipeline:ValidatePipelineDefinition", - "datapipeline:ActivatePipeline", - "datapipeline:AddTags", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "datapipeline:DeletePipeline", - "datapipeline:DescribePipelines", - "datapipeline:GetPipelineDefinition", - "datapipeline:RemoveTags" - ] - }, - "list": { - "permissions": [ - "datapipeline:ListPipelines" - ] - }, - "read": { - "permissions": [ - "datapipeline:GetPipelineDefinition", - "datapipeline:DescribePipelines" - ] - }, - "update": { - "permissions": [ - "datapipeline:PutPipelineDefinition", - "datapipeline:AddTags", - "datapipeline:RemoveTags", - "datapipeline:DeactivatePipeline", - "datapipeline:GetPipelineDefinition", - "datapipeline:ActivatePipeline", - "datapipeline:ValidatePipelineDefinition", - "datapipeline:DescribePipelines", - "datapipeline:AddTags", - "datapipeline:RemoveTags", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/PipelineId" - ], - "properties": { - "Activate": { - "description": "Indicates whether to validate and start the pipeline or stop an active pipeline. By default, the value is set to true.", - "type": "boolean" - }, - "Description": { - "description": "A description of the pipeline.", - "type": "string" - }, - "Name": { - "description": "The name of the pipeline.", - "type": "string" - }, - "ParameterObjects": { - "description": "The parameter objects used with the pipeline.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ParameterObject" - }, - "type": "array", - "uniqueItems": false - }, - "ParameterValues": { - "description": "The parameter values used with the pipeline.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ParameterValue" - }, - "type": "array", - "uniqueItems": false - }, - "PipelineId": { - "type": "string" - }, - "PipelineObjects": { - "description": "The objects that define the pipeline. These objects overwrite the existing pipeline definition. Not all objects, fields, and values can be updated. For information about restrictions, see Editing Your Pipeline in the AWS Data Pipeline Developer Guide.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PipelineObject" - }, - "type": "array", - "uniqueItems": false - }, - "PipelineTags": { - "description": "A list of arbitrary tags (key-value pairs) to associate with the pipeline, which you can use to control permissions. For more information, see Controlling Access to Pipelines and Resources in the AWS Data Pipeline Developer Guide.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PipelineTag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PipelineId" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datapipeline", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/PipelineTags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DataPipeline::Pipeline" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description", + "/properties/Name" + ], + "definitions": { + "Field": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "Specifies the name of a field for a particular object. To view valid values for a particular field, see Pipeline Object Reference in the AWS Data Pipeline Developer Guide.", + "type": "string" + }, + "RefValue": { + "description": "A field value that you specify as an identifier of another object in the same pipeline definition.", + "type": "string" + }, + "StringValue": { + "description": "A field value that you specify as a string. To view valid values for a particular field, see Pipeline Object Reference in the AWS Data Pipeline Developer Guide.", + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "ParameterAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The field identifier.", + "type": "string" + }, + "StringValue": { + "description": "The field value, expressed as a String.", + "type": "string" + } + }, + "required": [ + "Key", + "StringValue" + ], + "type": "object" + }, + "ParameterObject": { + "additionalProperties": false, + "properties": { + "Attributes": { + "description": "The attributes of the parameter object.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ParameterAttribute" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "description": "The ID of the parameter object.", + "type": "string" + } + }, + "required": [ + "Attributes", + "Id" + ], + "type": "object" + }, + "ParameterValue": { + "additionalProperties": false, + "properties": { + "Id": { + "description": "The ID of the parameter value.", + "type": "string" + }, + "StringValue": { + "description": "The field value, expressed as a String.", + "type": "string" + } + }, + "required": [ + "Id", + "StringValue" + ], + "type": "object" + }, + "PipelineObject": { + "additionalProperties": false, + "properties": { + "Fields": { + "description": "Key-value pairs that define the properties of the object.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Field" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "description": "The ID of the object.", + "type": "string" + }, + "Name": { + "description": "The name of the object.", + "type": "string" + } + }, + "required": [ + "Fields", + "Id", + "Name" + ], + "type": "object" + }, + "PipelineTag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of a tag.", + "type": "string" + }, + "Value": { + "description": "The value to associate with the key name.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "handlers": { + "create": { + "permissions": [ + "datapipeline:CreatePipeline", + "datapipeline:PutPipelineDefinition", + "datapipeline:GetPipelineDefinition", + "datapipeline:DescribePipelines", + "datapipeline:ValidatePipelineDefinition", + "datapipeline:ActivatePipeline", + "datapipeline:AddTags", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "datapipeline:DeletePipeline", + "datapipeline:DescribePipelines", + "datapipeline:GetPipelineDefinition", + "datapipeline:RemoveTags" + ] + }, + "list": { + "permissions": [ + "datapipeline:ListPipelines" + ] + }, + "read": { + "permissions": [ + "datapipeline:GetPipelineDefinition", + "datapipeline:DescribePipelines" + ] + }, + "update": { + "permissions": [ + "datapipeline:PutPipelineDefinition", + "datapipeline:AddTags", + "datapipeline:RemoveTags", + "datapipeline:DeactivatePipeline", + "datapipeline:GetPipelineDefinition", + "datapipeline:ActivatePipeline", + "datapipeline:ValidatePipelineDefinition", + "datapipeline:DescribePipelines", + "datapipeline:AddTags", + "datapipeline:RemoveTags", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/PipelineId" + ], + "properties": { + "Activate": { + "description": "Indicates whether to validate and start the pipeline or stop an active pipeline. By default, the value is set to true.", + "type": "boolean" + }, + "Description": { + "description": "A description of the pipeline.", + "type": "string" + }, + "Name": { + "description": "The name of the pipeline.", + "type": "string" + }, + "ParameterObjects": { + "description": "The parameter objects used with the pipeline.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ParameterObject" + }, + "type": "array", + "uniqueItems": false + }, + "ParameterValues": { + "description": "The parameter values used with the pipeline.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ParameterValue" + }, + "type": "array", + "uniqueItems": false + }, + "PipelineId": { + "type": "string" + }, + "PipelineObjects": { + "description": "The objects that define the pipeline. These objects overwrite the existing pipeline definition. Not all objects, fields, and values can be updated. For information about restrictions, see Editing Your Pipeline in the AWS Data Pipeline Developer Guide.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PipelineObject" + }, + "type": "array", + "uniqueItems": false + }, + "PipelineTags": { + "description": "A list of arbitrary tags (key-value pairs) to associate with the pipeline, which you can use to control permissions. For more information, see Controlling Access to Pipelines and Resources in the AWS Data Pipeline Developer Guide.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PipelineTag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/PipelineId" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datapipeline", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "datapipeline:AddTags", + "datapipeline:RemoveTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/PipelineTags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataPipeline::Pipeline" +} diff --git a/src/schema/aws-datasync-agent.json b/src/schema/aws-datasync-agent.json index e5e0325a..df31a8a2 100644 --- a/src/schema/aws-datasync-agent.json +++ b/src/schema/aws-datasync-agent.json @@ -1,166 +1,166 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ActivationKey", - "/properties/SecurityGroupArns", - "/properties/SubnetArns", - "/properties/VpcEndpointId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", - "type": "string" - }, - "Value": { - "description": "The value for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DataSync::Agent.", - "handlers": { - "create": { - "permissions": [ - "datasync:CreateAgent", - "datasync:TagResource", - "datasync:DescribeAgent", - "datasync:ListTagsForResource", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcEndpoints" - ] - }, - "delete": { - "permissions": [ - "datasync:DeleteAgent" - ] - }, - "list": { - "permissions": [ - "datasync:ListAgents" - ] - }, - "read": { - "permissions": [ - "datasync:DescribeAgent", - "datasync:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "datasync:UpdateAgent", - "datasync:DescribeAgent", - "datasync:ListTagsForResource", - "datasync:TagResource", - "datasync:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AgentArn" - ], - "properties": { - "ActivationKey": { - "description": "Activation key of the Agent.", - "maxLength": 29, - "pattern": "[A-Z0-9]{5}(-[A-Z0-9]{5}){4}", - "type": "string" - }, - "AgentArn": { - "description": "The DataSync Agent ARN.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$", - "type": "string" - }, - "AgentName": { - "description": "The name configured for the agent. Text reference used to identify the agent in the console.", - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", - "type": "string" - }, - "EndpointType": { - "description": "The service endpoints that the agent will connect to.", - "enum": [ - "FIPS", - "PUBLIC", - "PRIVATE_LINK" - ], - "type": "string" - }, - "SecurityGroupArns": { - "description": "The ARNs of the security group used to protect your data transfer task subnets.", - "insertionOrder": false, - "items": { - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):ec2:[a-z\\-0-9]*:[0-9]{12}:security-group/.*$", - "type": "string" - }, - "type": "array" - }, - "SubnetArns": { - "description": "The ARNs of the subnets in which DataSync will create elastic network interfaces for each data transfer task.", - "insertionOrder": false, - "items": { - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):ec2:[a-z\\-0-9]*:[0-9]{12}:subnet/.*$", - "type": "string" - }, - "type": "array" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "VpcEndpointId": { - "description": "The ID of the VPC endpoint that the agent has access to.", - "pattern": "^vpce-[0-9a-f]{17}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AgentArn", - "/properties/EndpointType" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "datasync:TagResource", - "datasync:UntagResource", - "datasync:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DataSync::Agent", - "writeOnlyProperties": [ - "/properties/ActivationKey" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ActivationKey", + "/properties/SecurityGroupArns", + "/properties/SubnetArns", + "/properties/VpcEndpointId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", + "type": "string" + }, + "Value": { + "description": "The value for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DataSync::Agent.", + "handlers": { + "create": { + "permissions": [ + "datasync:CreateAgent", + "datasync:TagResource", + "datasync:DescribeAgent", + "datasync:ListTagsForResource", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcEndpoints" + ] + }, + "delete": { + "permissions": [ + "datasync:DeleteAgent" + ] + }, + "list": { + "permissions": [ + "datasync:ListAgents" + ] + }, + "read": { + "permissions": [ + "datasync:DescribeAgent", + "datasync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "datasync:UpdateAgent", + "datasync:DescribeAgent", + "datasync:ListTagsForResource", + "datasync:TagResource", + "datasync:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AgentArn" + ], + "properties": { + "ActivationKey": { + "description": "Activation key of the Agent.", + "maxLength": 29, + "pattern": "[A-Z0-9]{5}(-[A-Z0-9]{5}){4}", + "type": "string" + }, + "AgentArn": { + "description": "The DataSync Agent ARN.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$", + "type": "string" + }, + "AgentName": { + "description": "The name configured for the agent. Text reference used to identify the agent in the console.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "type": "string" + }, + "EndpointType": { + "description": "The service endpoints that the agent will connect to.", + "enum": [ + "FIPS", + "PUBLIC", + "PRIVATE_LINK" + ], + "type": "string" + }, + "SecurityGroupArns": { + "description": "The ARNs of the security group used to protect your data transfer task subnets.", + "insertionOrder": false, + "items": { + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):ec2:[a-z\\-0-9]*:[0-9]{12}:security-group/.*$", + "type": "string" + }, + "type": "array" + }, + "SubnetArns": { + "description": "The ARNs of the subnets in which DataSync will create elastic network interfaces for each data transfer task.", + "insertionOrder": false, + "items": { + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):ec2:[a-z\\-0-9]*:[0-9]{12}:subnet/.*$", + "type": "string" + }, + "type": "array" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "VpcEndpointId": { + "description": "The ID of the VPC endpoint that the agent has access to.", + "pattern": "^vpce-[0-9a-f]{17}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AgentArn", + "/properties/EndpointType" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "datasync:TagResource", + "datasync:UntagResource", + "datasync:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataSync::Agent", + "writeOnlyProperties": [ + "/properties/ActivationKey" + ] +} diff --git a/src/schema/aws-datasync-locationazureblob.json b/src/schema/aws-datasync-locationazureblob.json index 6f58b8a8..4a3abc07 100644 --- a/src/schema/aws-datasync-locationazureblob.json +++ b/src/schema/aws-datasync-locationazureblob.json @@ -1,193 +1,193 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AzureBlobContainerUrl" - ], - "definitions": { - "AzureBlobSasConfiguration": { - "additionalProperties": false, - "description": "Specifies the shared access signature (SAS) that DataSync uses to access your Azure Blob Storage container.", - "properties": { - "AzureBlobSasToken": { - "description": "Specifies the shared access signature (SAS) token, which indicates the permissions DataSync needs to access your Azure Blob Storage container.", - "maxLength": 255, - "minLength": 1, - "pattern": "(^.+$)", - "type": "string" - } - }, - "required": [ - "AzureBlobSasToken" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", - "type": "string" - }, - "Value": { - "description": "The value for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DataSync::LocationAzureBlob.", - "handlers": { - "create": { - "permissions": [ - "datasync:CreateLocationAzureBlob", - "datasync:DescribeLocationAzureBlob", - "datasync:TagResource", - "datasync:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "datasync:DeleteLocation" - ] - }, - "list": { - "permissions": [ - "datasync:ListLocations" - ] - }, - "read": { - "permissions": [ - "datasync:DescribeLocationAzureBlob", - "datasync:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "datasync:DescribeLocationAzureBlob", - "datasync:ListTagsForResource", - "datasync:TagResource", - "datasync:UntagResource", - "datasync:UpdateLocationAzureBlob" - ] - } - }, - "primaryIdentifier": [ - "/properties/LocationArn" - ], - "properties": { - "AgentArns": { - "description": "The Amazon Resource Names (ARNs) of agents to use for an Azure Blob Location.", - "insertionOrder": false, - "items": { - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$", - "type": "string" - }, - "maxItems": 4, - "minItems": 1, - "type": "array" - }, - "AzureAccessTier": { - "default": "HOT", - "description": "Specifies an access tier for the objects you're transferring into your Azure Blob Storage container.", - "enum": [ - "HOT", - "COOL", - "ARCHIVE" - ], - "type": "string" - }, - "AzureBlobAuthenticationType": { - "default": "SAS", - "description": "The specific authentication type that you want DataSync to use to access your Azure Blob Container.", - "enum": [ - "SAS" - ], - "type": "string" - }, - "AzureBlobContainerUrl": { - "description": "The URL of the Azure Blob container that was described.", - "maxLength": 325, - "pattern": "^https://[A-Za-z0-9]((.|-+)?[A-Za-z0-9]){0,252}/[a-z0-9](-?[a-z0-9]){2,62}$", - "type": "string" - }, - "AzureBlobSasConfiguration": { - "$ref": "#/definitions/AzureBlobSasConfiguration" - }, - "AzureBlobType": { - "default": "BLOCK", - "description": "Specifies a blob type for the objects you're transferring into your Azure Blob Storage container.", - "enum": [ - "BLOCK" - ], - "type": "string" - }, - "LocationArn": { - "description": "The Amazon Resource Name (ARN) of the Azure Blob Location that is created.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", - "type": "string" - }, - "LocationUri": { - "description": "The URL of the Azure Blob Location that was described.", - "maxLength": 4356, - "pattern": "^(azure-blob)://[a-zA-Z0-9./\\-]+$", - "type": "string" - }, - "Subdirectory": { - "description": "The subdirectory in the Azure Blob Container that is used to read data from the Azure Blob Source Location.", - "maxLength": 1024, - "pattern": "^[\\p{L}\\p{M}\\p{Z}\\p{S}\\p{N}\\p{P}\\p{C}]*$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/LocationArn", - "/properties/LocationUri" - ], - "required": [ - "AzureBlobAuthenticationType", - "AgentArns" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "datasync:TagResource", - "datasync:UntagResource", - "datasync:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DataSync::LocationAzureBlob", - "writeOnlyProperties": [ - "/properties/Subdirectory", - "/properties/AzureBlobSasConfiguration", - "/properties/AzureBlobContainerUrl" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AzureBlobContainerUrl" + ], + "definitions": { + "AzureBlobSasConfiguration": { + "additionalProperties": false, + "description": "Specifies the shared access signature (SAS) that DataSync uses to access your Azure Blob Storage container.", + "properties": { + "AzureBlobSasToken": { + "description": "Specifies the shared access signature (SAS) token, which indicates the permissions DataSync needs to access your Azure Blob Storage container.", + "maxLength": 255, + "minLength": 1, + "pattern": "(^.+$)", + "type": "string" + } + }, + "required": [ + "AzureBlobSasToken" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", + "type": "string" + }, + "Value": { + "description": "The value for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DataSync::LocationAzureBlob.", + "handlers": { + "create": { + "permissions": [ + "datasync:CreateLocationAzureBlob", + "datasync:DescribeLocationAzureBlob", + "datasync:TagResource", + "datasync:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "datasync:DeleteLocation" + ] + }, + "list": { + "permissions": [ + "datasync:ListLocations" + ] + }, + "read": { + "permissions": [ + "datasync:DescribeLocationAzureBlob", + "datasync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "datasync:DescribeLocationAzureBlob", + "datasync:ListTagsForResource", + "datasync:TagResource", + "datasync:UntagResource", + "datasync:UpdateLocationAzureBlob" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocationArn" + ], + "properties": { + "AgentArns": { + "description": "The Amazon Resource Names (ARNs) of agents to use for an Azure Blob Location.", + "insertionOrder": false, + "items": { + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$", + "type": "string" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "AzureAccessTier": { + "default": "HOT", + "description": "Specifies an access tier for the objects you're transferring into your Azure Blob Storage container.", + "enum": [ + "HOT", + "COOL", + "ARCHIVE" + ], + "type": "string" + }, + "AzureBlobAuthenticationType": { + "default": "SAS", + "description": "The specific authentication type that you want DataSync to use to access your Azure Blob Container.", + "enum": [ + "SAS" + ], + "type": "string" + }, + "AzureBlobContainerUrl": { + "description": "The URL of the Azure Blob container that was described.", + "maxLength": 325, + "pattern": "^https://[A-Za-z0-9]((.|-+)?[A-Za-z0-9]){0,252}/[a-z0-9](-?[a-z0-9]){2,62}$", + "type": "string" + }, + "AzureBlobSasConfiguration": { + "$ref": "#/definitions/AzureBlobSasConfiguration" + }, + "AzureBlobType": { + "default": "BLOCK", + "description": "Specifies a blob type for the objects you're transferring into your Azure Blob Storage container.", + "enum": [ + "BLOCK" + ], + "type": "string" + }, + "LocationArn": { + "description": "The Amazon Resource Name (ARN) of the Azure Blob Location that is created.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", + "type": "string" + }, + "LocationUri": { + "description": "The URL of the Azure Blob Location that was described.", + "maxLength": 4356, + "pattern": "^(azure-blob)://[a-zA-Z0-9./\\-]+$", + "type": "string" + }, + "Subdirectory": { + "description": "The subdirectory in the Azure Blob Container that is used to read data from the Azure Blob Source Location.", + "maxLength": 1024, + "pattern": "^[\\p{L}\\p{M}\\p{Z}\\p{S}\\p{N}\\p{P}\\p{C}]*$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/LocationArn", + "/properties/LocationUri" + ], + "required": [ + "AzureBlobAuthenticationType", + "AgentArns" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "datasync:TagResource", + "datasync:UntagResource", + "datasync:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataSync::LocationAzureBlob", + "writeOnlyProperties": [ + "/properties/Subdirectory", + "/properties/AzureBlobSasConfiguration", + "/properties/AzureBlobContainerUrl" + ] +} diff --git a/src/schema/aws-datasync-locationefs.json b/src/schema/aws-datasync-locationefs.json index 5e7f77e9..fc596623 100644 --- a/src/schema/aws-datasync-locationefs.json +++ b/src/schema/aws-datasync-locationefs.json @@ -1,195 +1,194 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Ec2Config", - "/properties/EfsFilesystemArn", - "/properties/Subdirectory", - "/properties/FileSystemAccessRoleArn", - "/properties/InTransitEncryption", - "/properties/AccessPointArn" - ], - "definitions": { - "Ec2Config": { - "additionalProperties": false, - "description": "The subnet and security group that DataSync uses to access target EFS file system.", - "properties": { - "SecurityGroupArns": { - "description": "The Amazon Resource Names (ARNs) of the security groups that are configured for the Amazon EC2 resource.", - "insertionOrder": false, - "items": { - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):ec2:[a-z\\-0-9]*:[0-9]{12}:security-group/.*$", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "SubnetArn": { - "description": "The ARN of the subnet that DataSync uses to access the target EFS file system.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):ec2:[a-z\\-0-9]*:[0-9]{12}:subnet/.*$", - "type": "string" - } - }, - "required": [ - "SecurityGroupArns", - "SubnetArn" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", - "type": "string" - }, - "Value": { - "description": "The value for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DataSync::LocationEFS.", - "handlers": { - "create": { - "permissions": [ - "datasync:CreateLocationEfs", - "datasync:DescribeLocationEfs", - "datasync:ListTagsForResource", - "datasync:TagResource", - "elasticfilesystem:DescribeFileSystems", - "elasticfilesystem:DescribeMountTargets", - "elasticfilesystem:DescribeAccessPoints", - "iam:PassRole", - "ec2:DescribeSubnets", - "ec2:DescribeSecurityGroups" - ] - }, - "delete": { - "permissions": [ - "datasync:DeleteLocation" - ] - }, - "list": { - "permissions": [ - "datasync:ListLocations" - ] - }, - "read": { - "permissions": [ - "datasync:DescribeLocationEfs", - "datasync:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "datasync:DescribeLocationEfs", - "datasync:ListTagsForResource", - "datasync:TagResource", - "datasync:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/LocationArn" - ], - "properties": { - "AccessPointArn": { - "description": "The Amazon Resource Name (ARN) for the Amazon EFS Access point that DataSync uses when accessing the EFS file system.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):elasticfilesystem:[a-z\\-0-9]+:[0-9]{12}:access-point/fsap-[0-9a-f]{8,40}$", - "type": "string" - }, - "Ec2Config": { - "$ref": "#/definitions/Ec2Config" - }, - "EfsFilesystemArn": { - "description": "The Amazon Resource Name (ARN) for the Amazon EFS file system.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):elasticfilesystem:[a-z\\-0-9]*:[0-9]{12}:file-system/fs-.*$", - "type": "string" - }, - "FileSystemAccessRoleArn": { - "description": "The Amazon Resource Name (ARN) of the AWS IAM role that the DataSync will assume when mounting the EFS file system.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):iam::[0-9]{12}:role/.*$", - "type": "string" - }, - "InTransitEncryption": { - "description": "Protocol that is used for encrypting the traffic exchanged between the DataSync Agent and the EFS file system.", - "enum": [ - "NONE", - "TLS1_2" - ], - "type": "string" - }, - "LocationArn": { - "description": "The Amazon Resource Name (ARN) of the Amazon EFS file system location that is created.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", - "type": "string" - }, - "LocationUri": { - "description": "The URL of the EFS location that was described.", - "maxLength": 4356, - "pattern": "^(efs|nfs|s3|smb|fsxw)://[a-zA-Z0-9.\\-/]+$", - "type": "string" - }, - "Subdirectory": { - "description": "A subdirectory in the location's path. This subdirectory in the EFS file system is used to read data from the EFS source location or write data to the EFS destination.", - "maxLength": 4096, - "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/LocationArn", - "/properties/LocationUri" - ], - "required": [ - "Ec2Config" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "datasync:TagResource", - "datasync:UntagResource", - "datasync:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DataSync::LocationEFS", - "writeOnlyProperties": [ - "/properties/EfsFilesystemArn", - "/properties/Subdirectory" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Ec2Config", + "/properties/EfsFilesystemArn" + ], + "definitions": { + "Ec2Config": { + "additionalProperties": false, + "description": "The subnet and security group that DataSync uses to access target EFS file system.", + "properties": { + "SecurityGroupArns": { + "description": "The Amazon Resource Names (ARNs) of the security groups that are configured for the Amazon EC2 resource.", + "insertionOrder": false, + "items": { + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):ec2:[a-z\\-0-9]*:[0-9]{12}:security-group/.*$", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "SubnetArn": { + "description": "The ARN of the subnet that DataSync uses to access the target EFS file system.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):ec2:[a-z\\-0-9]*:[0-9]{12}:subnet/.*$", + "type": "string" + } + }, + "required": [ + "SecurityGroupArns", + "SubnetArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", + "type": "string" + }, + "Value": { + "description": "The value for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DataSync::LocationEFS.", + "handlers": { + "create": { + "permissions": [ + "datasync:CreateLocationEfs", + "datasync:DescribeLocationEfs", + "datasync:ListTagsForResource", + "datasync:TagResource", + "elasticfilesystem:DescribeFileSystems", + "elasticfilesystem:DescribeMountTargets", + "elasticfilesystem:DescribeAccessPoints", + "iam:PassRole", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups" + ] + }, + "delete": { + "permissions": [ + "datasync:DeleteLocation" + ] + }, + "list": { + "permissions": [ + "datasync:ListLocations" + ] + }, + "read": { + "permissions": [ + "datasync:DescribeLocationEfs", + "datasync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "datasync:UpdateLocationEfs", + "datasync:DescribeLocationEfs", + "datasync:ListTagsForResource", + "datasync:TagResource", + "datasync:UntagResource", + "elasticfilesystem:DescribeFileSystems", + "elasticfilesystem:DescribeAccessPoints" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocationArn" + ], + "properties": { + "AccessPointArn": { + "description": "The Amazon Resource Name (ARN) for the Amazon EFS Access point that DataSync uses when accessing the EFS file system.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):elasticfilesystem:[a-z\\-0-9]+:[0-9]{12}:access-point/fsap-[0-9a-f]{8,40}$", + "type": "string" + }, + "Ec2Config": { + "$ref": "#/definitions/Ec2Config" + }, + "EfsFilesystemArn": { + "description": "The Amazon Resource Name (ARN) for the Amazon EFS file system.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):elasticfilesystem:[a-z\\-0-9]*:[0-9]{12}:file-system/fs-.*$", + "type": "string" + }, + "FileSystemAccessRoleArn": { + "description": "The Amazon Resource Name (ARN) of the AWS IAM role that the DataSync will assume when mounting the EFS file system.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):iam::[0-9]{12}:role/.*$", + "type": "string" + }, + "InTransitEncryption": { + "description": "Protocol that is used for encrypting the traffic exchanged between the DataSync Agent and the EFS file system.", + "enum": [ + "NONE", + "TLS1_2" + ], + "type": "string" + }, + "LocationArn": { + "description": "The Amazon Resource Name (ARN) of the Amazon EFS file system location that is created.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", + "type": "string" + }, + "LocationUri": { + "description": "The URL of the EFS location that was described.", + "maxLength": 4356, + "pattern": "^(efs|nfs|s3|smb|fsxw)://[a-zA-Z0-9.\\-/]+$", + "type": "string" + }, + "Subdirectory": { + "description": "A subdirectory in the location's path. This subdirectory in the EFS file system is used to read data from the EFS source location or write data to the EFS destination.", + "maxLength": 4096, + "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/LocationArn", + "/properties/LocationUri" + ], + "required": [ + "Ec2Config" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "datasync:TagResource", + "datasync:UntagResource", + "datasync:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataSync::LocationEFS", + "writeOnlyProperties": [ + "/properties/EfsFilesystemArn", + "/properties/Subdirectory" + ] +} diff --git a/src/schema/aws-datasync-locationfsxlustre.json b/src/schema/aws-datasync-locationfsxlustre.json index c967aaa0..3b43c181 100644 --- a/src/schema/aws-datasync-locationfsxlustre.json +++ b/src/schema/aws-datasync-locationfsxlustre.json @@ -1,151 +1,153 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FsxFilesystemArn", - "/properties/SecurityGroupArns", - "/properties/Subdirectory" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", - "type": "string" - }, - "Value": { - "description": "The value for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DataSync::LocationFSxLustre.", - "handlers": { - "create": { - "permissions": [ - "datasync:CreateLocationFsxLustre", - "datasync:DescribeLocationFsxLustre", - "datasync:ListTagsForResource", - "datasync:TagResource", - "fsx:DescribeFileSystems", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeSubnets", - "ec2:DescribeSecurityGroups" - ] - }, - "delete": { - "permissions": [ - "datasync:DeleteLocation" - ] - }, - "list": { - "permissions": [ - "datasync:ListLocations" - ] - }, - "read": { - "permissions": [ - "datasync:DescribeLocationFsxLustre", - "datasync:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "datasync:DescribeLocationFsxLustre", - "datasync:ListTagsForResource", - "datasync:TagResource", - "datasync:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/LocationArn" - ], - "properties": { - "FsxFilesystemArn": { - "description": "The Amazon Resource Name (ARN) for the FSx for Lustre file system.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):fsx:[a-z\\-0-9]+:[0-9]{12}:file-system/fs-[0-9a-f]+$", - "type": "string" - }, - "LocationArn": { - "description": "The Amazon Resource Name (ARN) of the Amazon FSx for Lustre file system location that is created.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", - "type": "string" - }, - "LocationUri": { - "description": "The URL of the FSx for Lustre location that was described.", - "maxLength": 4356, - "pattern": "^(efs|nfs|s3|smb|fsxw|hdfs|fsxl)://[a-zA-Z0-9.:/\\-]+$", - "type": "string" - }, - "SecurityGroupArns": { - "description": "The ARNs of the security groups that are to use to configure the FSx for Lustre file system.", - "insertionOrder": false, - "items": { - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):ec2:[a-z\\-0-9]*:[0-9]{12}:security-group/sg-[a-f0-9]+$", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "Subdirectory": { - "description": "A subdirectory in the location's path.", - "maxLength": 4096, - "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/LocationArn", - "/properties/LocationUri" - ], - "required": [ - "SecurityGroupArns" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "datasync:TagResource", - "datasync:UntagResource", - "datasync:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DataSync::LocationFSxLustre", - "writeOnlyProperties": [ - "/properties/Subdirectory", - "/properties/FsxFilesystemArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FsxFilesystemArn", + "/properties/SecurityGroupArns" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", + "type": "string" + }, + "Value": { + "description": "The value for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DataSync::LocationFSxLustre.", + "handlers": { + "create": { + "permissions": [ + "datasync:CreateLocationFsxLustre", + "datasync:DescribeLocationFsxLustre", + "datasync:ListTagsForResource", + "datasync:TagResource", + "fsx:DescribeFileSystems", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups" + ] + }, + "delete": { + "permissions": [ + "datasync:DeleteLocation" + ] + }, + "list": { + "permissions": [ + "datasync:ListLocations" + ] + }, + "read": { + "permissions": [ + "datasync:DescribeLocationFsxLustre", + "datasync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "datasync:DescribeLocationFsxLustre", + "datasync:ListTagsForResource", + "datasync:UpdateLocationFsxLustre", + "datasync:TagResource", + "datasync:UntagResource", + "fsx:DescribeFileSystems", + "ec2:DescribeNetworkInterfaces" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocationArn" + ], + "properties": { + "FsxFilesystemArn": { + "description": "The Amazon Resource Name (ARN) for the FSx for Lustre file system.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):fsx:[a-z\\-0-9]+:[0-9]{12}:file-system/fs-[0-9a-f]+$", + "type": "string" + }, + "LocationArn": { + "description": "The Amazon Resource Name (ARN) of the Amazon FSx for Lustre file system location that is created.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", + "type": "string" + }, + "LocationUri": { + "description": "The URL of the FSx for Lustre location that was described.", + "maxLength": 4356, + "pattern": "^(efs|nfs|s3|smb|fsxw|hdfs|fsxl)://[a-zA-Z0-9.:/\\-]+$", + "type": "string" + }, + "SecurityGroupArns": { + "description": "The ARNs of the security groups that are to use to configure the FSx for Lustre file system.", + "insertionOrder": false, + "items": { + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):ec2:[a-z\\-0-9]*:[0-9]{12}:security-group/sg-[a-f0-9]+$", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "Subdirectory": { + "description": "A subdirectory in the location's path.", + "maxLength": 4096, + "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/LocationArn", + "/properties/LocationUri" + ], + "required": [ + "SecurityGroupArns" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "datasync:TagResource", + "datasync:UntagResource", + "datasync:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataSync::LocationFSxLustre", + "writeOnlyProperties": [ + "/properties/Subdirectory", + "/properties/FsxFilesystemArn" + ] +} diff --git a/src/schema/aws-datasync-locationfsxontap.json b/src/schema/aws-datasync-locationfsxontap.json index 69aeeb75..d2213af4 100644 --- a/src/schema/aws-datasync-locationfsxontap.json +++ b/src/schema/aws-datasync-locationfsxontap.json @@ -1,256 +1,258 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StorageVirtualMachineArn", - "/properties/SecurityGroupArns", - "/properties/Protocol", - "/properties/Subdirectory" - ], - "definitions": { - "NFS": { - "additionalProperties": false, - "description": "NFS protocol configuration for FSx ONTAP file system.", - "properties": { - "MountOptions": { - "$ref": "#/definitions/NfsMountOptions" - } - }, - "required": [ - "MountOptions" - ], - "type": "object" - }, - "NfsMountOptions": { - "additionalProperties": false, - "description": "The NFS mount options that DataSync can use to mount your NFS share.", - "properties": { - "Version": { - "description": "The specific NFS version that you want DataSync to use to mount your NFS share.", - "enum": [ - "AUTOMATIC", - "NFS3", - "NFS4_0", - "NFS4_1" - ], - "type": "string" - } - }, - "type": "object" - }, - "Protocol": { - "additionalProperties": false, - "description": "Configuration settings for NFS or SMB protocol.", - "properties": { - "NFS": { - "$ref": "#/definitions/NFS" - }, - "SMB": { - "$ref": "#/definitions/SMB" - } - }, - "type": "object" - }, - "SMB": { - "additionalProperties": false, - "description": "SMB protocol configuration for FSx ONTAP file system.", - "properties": { - "Domain": { - "description": "The name of the Windows domain that the SMB server belongs to.", - "maxLength": 253, - "pattern": "^([A-Za-z0-9]+[A-Za-z0-9-.]*)*[A-Za-z0-9-]*[A-Za-z0-9]$", - "type": "string" - }, - "MountOptions": { - "$ref": "#/definitions/SmbMountOptions" - }, - "Password": { - "description": "The password of the user who can mount the share and has the permissions to access files and folders in the SMB share.", - "maxLength": 104, - "pattern": "^.{0,104}$", - "type": "string" - }, - "User": { - "description": "The user who can mount the share, has the permissions to access files and folders in the SMB share.", - "maxLength": 104, - "pattern": "^[^\\x5B\\x5D\\\\/:;|=,+*?]{1,104}$", - "type": "string" - } - }, - "required": [ - "User", - "Password", - "MountOptions" - ], - "type": "object" - }, - "SmbMountOptions": { - "additionalProperties": false, - "description": "The mount options used by DataSync to access the SMB server.", - "properties": { - "Version": { - "description": "The specific SMB version that you want DataSync to use to mount your SMB share.", - "enum": [ - "AUTOMATIC", - "SMB2", - "SMB3" - ], - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", - "type": "string" - }, - "Value": { - "description": "The value for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DataSync::LocationFSxONTAP.", - "handlers": { - "create": { - "permissions": [ - "datasync:CreateLocationFsxOntap", - "datasync:DescribeLocationFsxOntap", - "datasync:ListTagsForResource", - "datasync:TagResource", - "fsx:DescribeStorageVirtualMachines", - "fsx:DescribeFileSystems", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeSubnets", - "ec2:DescribeSecurityGroups" - ] - }, - "delete": { - "permissions": [ - "datasync:DeleteLocation" - ] - }, - "list": { - "permissions": [ - "datasync:ListLocations" - ] - }, - "read": { - "permissions": [ - "datasync:DescribeLocationFsxOntap", - "datasync:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "datasync:DescribeLocationFsxOntap", - "datasync:ListTagsForResource", - "datasync:TagResource", - "datasync:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/LocationArn" - ], - "properties": { - "FsxFilesystemArn": { - "description": "The Amazon Resource Name (ARN) for the FSx ONAP file system.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):fsx:[a-z\\-0-9]+:[0-9]{12}:file-system/fs-[0-9a-f]+$", - "type": "string" - }, - "LocationArn": { - "description": "The Amazon Resource Name (ARN) of the Amazon FSx ONTAP file system location that is created.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", - "type": "string" - }, - "LocationUri": { - "description": "The URL of the FSx ONTAP file system that was described.", - "maxLength": 4360, - "pattern": "^(efs|nfs|s3|smb|hdfs|fsx[a-z0-9-]+)://[a-zA-Z0-9.:/\\-]+$", - "type": "string" - }, - "Protocol": { - "$ref": "#/definitions/Protocol" - }, - "SecurityGroupArns": { - "description": "The ARNs of the security groups that are to use to configure the FSx ONTAP file system.", - "insertionOrder": false, - "items": { - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):ec2:[a-z\\-0-9]*:[0-9]{12}:security-group/sg-[a-f0-9]+$", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "StorageVirtualMachineArn": { - "description": "The Amazon Resource Name (ARN) for the FSx ONTAP SVM.", - "maxLength": 162, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):fsx:[a-z\\-0-9]+:[0-9]{12}:storage-virtual-machine/fs-[0-9a-f]+/svm-[0-9a-f]{17,}$", - "type": "string" - }, - "Subdirectory": { - "description": "A subdirectory in the location's path.", - "maxLength": 4096, - "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/LocationArn", - "/properties/LocationUri", - "/properties/FsxFilesystemArn" - ], - "required": [ - "SecurityGroupArns", - "StorageVirtualMachineArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "datasync:TagResource", - "datasync:UntagResource", - "datasync:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DataSync::LocationFSxONTAP", - "writeOnlyProperties": [ - "/properties/Protocol", - "/properties/Subdirectory" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StorageVirtualMachineArn", + "/properties/SecurityGroupArns" + ], + "definitions": { + "NFS": { + "additionalProperties": false, + "description": "NFS protocol configuration for FSx ONTAP file system.", + "properties": { + "MountOptions": { + "$ref": "#/definitions/NfsMountOptions" + } + }, + "required": [ + "MountOptions" + ], + "type": "object" + }, + "NfsMountOptions": { + "additionalProperties": false, + "description": "The NFS mount options that DataSync can use to mount your NFS share.", + "properties": { + "Version": { + "description": "The specific NFS version that you want DataSync to use to mount your NFS share.", + "enum": [ + "AUTOMATIC", + "NFS3", + "NFS4_0", + "NFS4_1" + ], + "type": "string" + } + }, + "type": "object" + }, + "Protocol": { + "additionalProperties": false, + "description": "Configuration settings for NFS or SMB protocol.", + "properties": { + "NFS": { + "$ref": "#/definitions/NFS" + }, + "SMB": { + "$ref": "#/definitions/SMB" + } + }, + "type": "object" + }, + "SMB": { + "additionalProperties": false, + "description": "SMB protocol configuration for FSx ONTAP file system.", + "properties": { + "Domain": { + "description": "The name of the Windows domain that the SMB server belongs to.", + "maxLength": 253, + "pattern": "^([A-Za-z0-9]+[A-Za-z0-9-.]*)*[A-Za-z0-9-]*[A-Za-z0-9]$", + "type": "string" + }, + "MountOptions": { + "$ref": "#/definitions/SmbMountOptions" + }, + "Password": { + "description": "The password of the user who can mount the share and has the permissions to access files and folders in the SMB share.", + "maxLength": 104, + "pattern": "^.{0,104}$", + "type": "string" + }, + "User": { + "description": "The user who can mount the share, has the permissions to access files and folders in the SMB share.", + "maxLength": 104, + "pattern": "^[^\\x5B\\x5D\\\\/:;|=,+*?]{1,104}$", + "type": "string" + } + }, + "required": [ + "User", + "Password", + "MountOptions" + ], + "type": "object" + }, + "SmbMountOptions": { + "additionalProperties": false, + "description": "The mount options used by DataSync to access the SMB server.", + "properties": { + "Version": { + "description": "The specific SMB version that you want DataSync to use to mount your SMB share.", + "enum": [ + "AUTOMATIC", + "SMB2", + "SMB3" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", + "type": "string" + }, + "Value": { + "description": "The value for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DataSync::LocationFSxONTAP.", + "handlers": { + "create": { + "permissions": [ + "datasync:CreateLocationFsxOntap", + "datasync:DescribeLocationFsxOntap", + "datasync:ListTagsForResource", + "datasync:TagResource", + "fsx:DescribeStorageVirtualMachines", + "fsx:DescribeFileSystems", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups" + ] + }, + "delete": { + "permissions": [ + "datasync:DeleteLocation" + ] + }, + "list": { + "permissions": [ + "datasync:ListLocations" + ] + }, + "read": { + "permissions": [ + "datasync:DescribeLocationFsxOntap", + "datasync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "datasync:UpdateLocationFsxOntap", + "datasync:DescribeLocationFsxOntap", + "datasync:ListTagsForResource", + "datasync:TagResource", + "datasync:UntagResource", + "fsx:DescribeFileSystems", + "fsx:DescribeStorageVirtualMachines", + "ec2:DescribeNetworkInterfaces" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocationArn" + ], + "properties": { + "FsxFilesystemArn": { + "description": "The Amazon Resource Name (ARN) for the FSx ONAP file system.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):fsx:[a-z\\-0-9]+:[0-9]{12}:file-system/fs-[0-9a-f]+$", + "type": "string" + }, + "LocationArn": { + "description": "The Amazon Resource Name (ARN) of the Amazon FSx ONTAP file system location that is created.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", + "type": "string" + }, + "LocationUri": { + "description": "The URL of the FSx ONTAP file system that was described.", + "maxLength": 4360, + "pattern": "^(efs|nfs|s3|smb|hdfs|fsx[a-z0-9-]+)://[a-zA-Z0-9.:/\\-]+$", + "type": "string" + }, + "Protocol": { + "$ref": "#/definitions/Protocol" + }, + "SecurityGroupArns": { + "description": "The ARNs of the security groups that are to use to configure the FSx ONTAP file system.", + "insertionOrder": false, + "items": { + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):ec2:[a-z\\-0-9]*:[0-9]{12}:security-group/sg-[a-f0-9]+$", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "StorageVirtualMachineArn": { + "description": "The Amazon Resource Name (ARN) for the FSx ONTAP SVM.", + "maxLength": 162, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):fsx:[a-z\\-0-9]+:[0-9]{12}:storage-virtual-machine/fs-[0-9a-f]+/svm-[0-9a-f]{17,}$", + "type": "string" + }, + "Subdirectory": { + "description": "A subdirectory in the location's path.", + "maxLength": 4096, + "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/LocationArn", + "/properties/LocationUri", + "/properties/FsxFilesystemArn" + ], + "required": [ + "SecurityGroupArns", + "StorageVirtualMachineArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "datasync:TagResource", + "datasync:UntagResource", + "datasync:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataSync::LocationFSxONTAP", + "writeOnlyProperties": [ + "/properties/Protocol", + "/properties/Subdirectory" + ] +} diff --git a/src/schema/aws-datasync-locationfsxopenzfs.json b/src/schema/aws-datasync-locationfsxopenzfs.json index a3c89550..476f554a 100644 --- a/src/schema/aws-datasync-locationfsxopenzfs.json +++ b/src/schema/aws-datasync-locationfsxopenzfs.json @@ -1,196 +1,197 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FsxFilesystemArn", - "/properties/SecurityGroupArns", - "/properties/Protocol", - "/properties/Subdirectory" - ], - "definitions": { - "MountOptions": { - "additionalProperties": false, - "description": "The NFS mount options that DataSync can use to mount your NFS share.", - "properties": { - "Version": { - "description": "The specific NFS version that you want DataSync to use to mount your NFS share.", - "enum": [ - "AUTOMATIC", - "NFS3", - "NFS4_0", - "NFS4_1" - ], - "type": "string" - } - }, - "type": "object" - }, - "NFS": { - "additionalProperties": false, - "description": "FSx OpenZFS file system NFS protocol information", - "properties": { - "MountOptions": { - "$ref": "#/definitions/MountOptions" - } - }, - "required": [ - "MountOptions" - ], - "type": "object" - }, - "Protocol": { - "additionalProperties": false, - "description": "Configuration settings for an NFS or SMB protocol, currently only support NFS", - "properties": { - "NFS": { - "$ref": "#/definitions/NFS" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", - "type": "string" - }, - "Value": { - "description": "The value for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DataSync::LocationFSxOpenZFS.", - "handlers": { - "create": { - "permissions": [ - "datasync:CreateLocationFsxOpenZfs", - "datasync:DescribeLocationFsxOpenZfs", - "datasync:ListTagsForResource", - "datasync:TagResource", - "fsx:DescribeFileSystems", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeSubnets", - "ec2:DescribeSecurityGroups" - ] - }, - "delete": { - "permissions": [ - "datasync:DeleteLocation" - ] - }, - "list": { - "permissions": [ - "datasync:ListLocations" - ] - }, - "read": { - "permissions": [ - "datasync:DescribeLocationFsxOpenZfs", - "datasync:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "datasync:DescribeLocationFsxOpenZfs", - "datasync:ListTagsForResource", - "datasync:TagResource", - "datasync:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/LocationArn" - ], - "properties": { - "FsxFilesystemArn": { - "description": "The Amazon Resource Name (ARN) for the FSx OpenZFS file system.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):fsx:[a-z\\-0-9]+:[0-9]{12}:file-system/fs-[0-9a-f]+$", - "type": "string" - }, - "LocationArn": { - "description": "The Amazon Resource Name (ARN) of the Amazon FSx OpenZFS file system location that is created.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", - "type": "string" - }, - "LocationUri": { - "description": "The URL of the FSx OpenZFS that was described.", - "maxLength": 4356, - "pattern": "^(efs|nfs|s3|smb|fsxw|hdfs|fsxl|fsxz)://[a-zA-Z0-9.:/\\-]+$", - "type": "string" - }, - "Protocol": { - "$ref": "#/definitions/Protocol" - }, - "SecurityGroupArns": { - "description": "The ARNs of the security groups that are to use to configure the FSx OpenZFS file system.", - "insertionOrder": false, - "items": { - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):ec2:[a-z\\-0-9]*:[0-9]{12}:security-group/sg-[a-f0-9]+$", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "Subdirectory": { - "description": "A subdirectory in the location's path.", - "maxLength": 4096, - "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/LocationArn", - "/properties/LocationUri" - ], - "required": [ - "SecurityGroupArns", - "Protocol" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "datasync:TagResource", - "datasync:UntagResource", - "datasync:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DataSync::LocationFSxOpenZFS", - "writeOnlyProperties": [ - "/properties/Subdirectory", - "/properties/FsxFilesystemArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FsxFilesystemArn", + "/properties/SecurityGroupArns" + ], + "definitions": { + "MountOptions": { + "additionalProperties": false, + "description": "The NFS mount options that DataSync can use to mount your NFS share.", + "properties": { + "Version": { + "description": "The specific NFS version that you want DataSync to use to mount your NFS share.", + "enum": [ + "AUTOMATIC", + "NFS3", + "NFS4_0", + "NFS4_1" + ], + "type": "string" + } + }, + "type": "object" + }, + "NFS": { + "additionalProperties": false, + "description": "FSx OpenZFS file system NFS protocol information", + "properties": { + "MountOptions": { + "$ref": "#/definitions/MountOptions" + } + }, + "required": [ + "MountOptions" + ], + "type": "object" + }, + "Protocol": { + "additionalProperties": false, + "description": "Configuration settings for an NFS or SMB protocol, currently only support NFS", + "properties": { + "NFS": { + "$ref": "#/definitions/NFS" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", + "type": "string" + }, + "Value": { + "description": "The value for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DataSync::LocationFSxOpenZFS.", + "handlers": { + "create": { + "permissions": [ + "datasync:CreateLocationFsxOpenZfs", + "datasync:DescribeLocationFsxOpenZfs", + "datasync:ListTagsForResource", + "datasync:TagResource", + "fsx:DescribeFileSystems", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups" + ] + }, + "delete": { + "permissions": [ + "datasync:DeleteLocation" + ] + }, + "list": { + "permissions": [ + "datasync:ListLocations" + ] + }, + "read": { + "permissions": [ + "datasync:DescribeLocationFsxOpenZfs", + "datasync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "datasync:DescribeLocationFsxOpenZfs", + "datasync:UpdateLocationFsxOpenZfs", + "datasync:ListTagsForResource", + "datasync:TagResource", + "datasync:UntagResource", + "fsx:DescribeFileSystems", + "ec2:DescribeNetworkInterfaces" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocationArn" + ], + "properties": { + "FsxFilesystemArn": { + "description": "The Amazon Resource Name (ARN) for the FSx OpenZFS file system.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):fsx:[a-z\\-0-9]+:[0-9]{12}:file-system/fs-[0-9a-f]+$", + "type": "string" + }, + "LocationArn": { + "description": "The Amazon Resource Name (ARN) of the Amazon FSx OpenZFS file system location that is created.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", + "type": "string" + }, + "LocationUri": { + "description": "The URL of the FSx OpenZFS that was described.", + "maxLength": 4356, + "pattern": "^(efs|nfs|s3|smb|fsxw|hdfs|fsxl|fsxz)://[a-zA-Z0-9.:/\\-]+$", + "type": "string" + }, + "Protocol": { + "$ref": "#/definitions/Protocol" + }, + "SecurityGroupArns": { + "description": "The ARNs of the security groups that are to use to configure the FSx OpenZFS file system.", + "insertionOrder": false, + "items": { + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):ec2:[a-z\\-0-9]*:[0-9]{12}:security-group/sg-[a-f0-9]+$", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "Subdirectory": { + "description": "A subdirectory in the location's path.", + "maxLength": 4096, + "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/LocationArn", + "/properties/LocationUri" + ], + "required": [ + "SecurityGroupArns", + "Protocol" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "datasync:TagResource", + "datasync:UntagResource", + "datasync:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataSync::LocationFSxOpenZFS", + "writeOnlyProperties": [ + "/properties/Subdirectory", + "/properties/FsxFilesystemArn" + ] +} diff --git a/src/schema/aws-datasync-locationfsxwindows.json b/src/schema/aws-datasync-locationfsxwindows.json index 50fc2e39..cf02dde4 100644 --- a/src/schema/aws-datasync-locationfsxwindows.json +++ b/src/schema/aws-datasync-locationfsxwindows.json @@ -1,171 +1,170 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Domain", - "/properties/FsxFilesystemArn", - "/properties/Password", - "/properties/SecurityGroupArns", - "/properties/Subdirectory", - "/properties/User" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", - "type": "string" - }, - "Value": { - "description": "The value for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DataSync::LocationFSxWindows.", - "handlers": { - "create": { - "permissions": [ - "datasync:CreateLocationFsxWindows", - "datasync:DescribeLocationFsxWindows", - "datasync:ListTagsForResource", - "datasync:TagResource", - "fsx:DescribeFileSystems", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeSubnets", - "ec2:DescribeSecurityGroups" - ] - }, - "delete": { - "permissions": [ - "datasync:DeleteLocation" - ] - }, - "list": { - "permissions": [ - "datasync:ListLocations" - ] - }, - "read": { - "permissions": [ - "datasync:DescribeLocationFsxWindows", - "datasync:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "datasync:DescribeLocationFsxWindows", - "datasync:ListTagsForResource", - "datasync:TagResource", - "datasync:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/LocationArn" - ], - "properties": { - "Domain": { - "description": "The name of the Windows domain that the FSx for Windows server belongs to.", - "maxLength": 253, - "pattern": "^([A-Za-z0-9]+[A-Za-z0-9-.]*)*[A-Za-z0-9-]*[A-Za-z0-9]$", - "type": "string" - }, - "FsxFilesystemArn": { - "description": "The Amazon Resource Name (ARN) for the FSx for Windows file system.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):fsx:[a-z\\-0-9]*:[0-9]{12}:file-system/fs-.*$", - "type": "string" - }, - "LocationArn": { - "description": "The Amazon Resource Name (ARN) of the Amazon FSx for Windows file system location that is created.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", - "type": "string" - }, - "LocationUri": { - "description": "The URL of the FSx for Windows location that was described.", - "maxLength": 4356, - "pattern": "^(efs|nfs|s3|smb|fsxw)://[a-zA-Z0-9./\\-]+$", - "type": "string" - }, - "Password": { - "description": "The password of the user who has the permissions to access files and folders in the FSx for Windows file system.", - "maxLength": 104, - "pattern": "^.{0,104}$", - "type": "string" - }, - "SecurityGroupArns": { - "description": "The ARNs of the security groups that are to use to configure the FSx for Windows file system.", - "insertionOrder": false, - "items": { - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):ec2:[a-z\\-0-9]*:[0-9]{12}:security-group/.*$", - "type": "string" - }, - "type": "array" - }, - "Subdirectory": { - "description": "A subdirectory in the location's path.", - "maxLength": 4096, - "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "User": { - "description": "The user who has the permissions to access files and folders in the FSx for Windows file system.", - "maxLength": 104, - "pattern": "^[^\\x5B\\x5D\\\\/:;|=,+*?]{1,104}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/LocationArn", - "/properties/LocationUri" - ], - "required": [ - "User", - "SecurityGroupArns" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "datasync:TagResource", - "datasync:UntagResource", - "datasync:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DataSync::LocationFSxWindows", - "writeOnlyProperties": [ - "/properties/Password", - "/properties/Subdirectory", - "/properties/FsxFilesystemArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FsxFilesystemArn", + "/properties/SecurityGroupArns" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", + "type": "string" + }, + "Value": { + "description": "The value for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DataSync::LocationFSxWindows.", + "handlers": { + "create": { + "permissions": [ + "datasync:CreateLocationFsxWindows", + "datasync:DescribeLocationFsxWindows", + "datasync:ListTagsForResource", + "datasync:TagResource", + "fsx:DescribeFileSystems", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups" + ] + }, + "delete": { + "permissions": [ + "datasync:DeleteLocation" + ] + }, + "list": { + "permissions": [ + "datasync:ListLocations" + ] + }, + "read": { + "permissions": [ + "datasync:DescribeLocationFsxWindows", + "datasync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "datasync:DescribeLocationFsxWindows", + "datasync:UpdateLocationFsxWindows", + "datasync:ListTagsForResource", + "datasync:TagResource", + "datasync:UntagResource", + "fsx:DescribeFileSystems", + "ec2:DescribeNetworkInterfaces" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocationArn" + ], + "properties": { + "Domain": { + "description": "The name of the Windows domain that the FSx for Windows server belongs to.", + "maxLength": 253, + "pattern": "^([A-Za-z0-9]+[A-Za-z0-9-.]*)*[A-Za-z0-9-]*[A-Za-z0-9]$", + "type": "string" + }, + "FsxFilesystemArn": { + "description": "The Amazon Resource Name (ARN) for the FSx for Windows file system.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):fsx:[a-z\\-0-9]*:[0-9]{12}:file-system/fs-.*$", + "type": "string" + }, + "LocationArn": { + "description": "The Amazon Resource Name (ARN) of the Amazon FSx for Windows file system location that is created.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", + "type": "string" + }, + "LocationUri": { + "description": "The URL of the FSx for Windows location that was described.", + "maxLength": 4356, + "pattern": "^(efs|nfs|s3|smb|fsxw)://[a-zA-Z0-9./\\-]+$", + "type": "string" + }, + "Password": { + "description": "The password of the user who has the permissions to access files and folders in the FSx for Windows file system.", + "maxLength": 104, + "pattern": "^.{0,104}$", + "type": "string" + }, + "SecurityGroupArns": { + "description": "The ARNs of the security groups that are to use to configure the FSx for Windows file system.", + "insertionOrder": false, + "items": { + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):ec2:[a-z\\-0-9]*:[0-9]{12}:security-group/.*$", + "type": "string" + }, + "type": "array" + }, + "Subdirectory": { + "description": "A subdirectory in the location's path.", + "maxLength": 4096, + "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "User": { + "description": "The user who has the permissions to access files and folders in the FSx for Windows file system.", + "maxLength": 104, + "pattern": "^[^\\x5B\\x5D\\\\/:;|=,+*?]{1,104}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LocationArn", + "/properties/LocationUri" + ], + "required": [ + "User", + "SecurityGroupArns" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "datasync:TagResource", + "datasync:UntagResource", + "datasync:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataSync::LocationFSxWindows", + "writeOnlyProperties": [ + "/properties/Password", + "/properties/Subdirectory", + "/properties/FsxFilesystemArn" + ] +} diff --git a/src/schema/aws-datasync-locationhdfs.json b/src/schema/aws-datasync-locationhdfs.json index 09fc3d07..e358ef35 100644 --- a/src/schema/aws-datasync-locationhdfs.json +++ b/src/schema/aws-datasync-locationhdfs.json @@ -1,255 +1,255 @@ -{ - "additionalProperties": false, - "definitions": { - "NameNode": { - "additionalProperties": false, - "description": "HDFS Name Node IP and port information.", - "properties": { - "Hostname": { - "description": "The DNS name or IP address of the Name Node in the customer's on premises HDFS cluster.", - "maxLength": 255, - "pattern": "^(([a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9\\-]*[A-Za-z0-9])$", - "type": "string" - }, - "Port": { - "description": "The port on which the Name Node is listening on for client requests.", - "maximum": 65536, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "Hostname", - "Port" - ], - "type": "object" - }, - "QopConfiguration": { - "additionalProperties": false, - "description": "Configuration information for RPC Protection and Data Transfer Protection. These parameters can be set to AUTHENTICATION, INTEGRITY, or PRIVACY. The default value is PRIVACY.", - "properties": { - "DataTransferProtection": { - "default": "PRIVACY", - "description": "Configuration for Data Transfer Protection.", - "enum": [ - "AUTHENTICATION", - "INTEGRITY", - "PRIVACY", - "DISABLED" - ], - "type": "string" - }, - "RpcProtection": { - "default": "PRIVACY", - "description": "Configuration for RPC Protection.", - "enum": [ - "AUTHENTICATION", - "INTEGRITY", - "PRIVACY", - "DISABLED" - ], - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DataSync::LocationHDFS.", - "handlers": { - "create": { - "permissions": [ - "datasync:CreateLocationHdfs", - "datasync:DescribeLocationHdfs", - "datasync:TagResource", - "datasync:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "datasync:DeleteLocation" - ] - }, - "list": { - "permissions": [ - "datasync:ListLocations" - ] - }, - "read": { - "permissions": [ - "datasync:DescribeLocationHdfs", - "datasync:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "datasync:UpdateLocationHdfs", - "datasync:DescribeLocationHdfs", - "datasync:ListTagsForResource", - "datasync:TagResource", - "datasync:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/LocationArn" - ], - "properties": { - "AgentArns": { - "description": "ARN(s) of the agent(s) to use for an HDFS location.", - "insertionOrder": false, - "items": { - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$", - "type": "string" - }, - "maxItems": 4, - "minItems": 1, - "type": "array" - }, - "AuthenticationType": { - "description": "The authentication mode used to determine identity of user.", - "enum": [ - "SIMPLE", - "KERBEROS" - ], - "type": "string" - }, - "BlockSize": { - "description": "Size of chunks (blocks) in bytes that the data is divided into when stored in the HDFS cluster.", - "format": "int64", - "maximum": 1073741824, - "minimum": 1048576, - "type": "integer" - }, - "KerberosKeytab": { - "description": "The Base64 string representation of the Keytab file.", - "maxLength": 87384, - "type": "string" - }, - "KerberosKrb5Conf": { - "description": "The string representation of the Krb5Conf file, or the presigned URL to access the Krb5.conf file within an S3 bucket.", - "maxLength": 174764, - "type": "string" - }, - "KerberosPrincipal": { - "description": "The unique identity, or principal, to which Kerberos can assign tickets.", - "maxLength": 256, - "minLength": 1, - "pattern": "^.+$", - "type": "string" - }, - "KmsKeyProviderUri": { - "description": "The identifier for the Key Management Server where the encryption keys that encrypt data inside HDFS clusters are stored.", - "maxLength": 255, - "minLength": 1, - "pattern": "^kms:\\/\\/http[s]?@(([a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9\\-]*[A-Za-z0-9])(;(([a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9\\-]*[A-Za-z0-9]))*:[0-9]{1,5}\\/kms$", - "type": "string" - }, - "LocationArn": { - "description": "The Amazon Resource Name (ARN) of the HDFS location.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", - "type": "string" - }, - "LocationUri": { - "description": "The URL of the HDFS location that was described.", - "maxLength": 4356, - "pattern": "^(efs|nfs|s3|smb|fsxw|hdfs)://[a-zA-Z0-9.:/\\-]+$", - "type": "string" - }, - "NameNodes": { - "description": "An array of Name Node(s) of the HDFS location.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/NameNode" - }, - "minItems": 1, - "type": "array" - }, - "QopConfiguration": { - "$ref": "#/definitions/QopConfiguration" - }, - "ReplicationFactor": { - "default": 3, - "description": "Number of copies of each block that exists inside the HDFS cluster.", - "format": "int64", - "maximum": 512, - "minimum": 1, - "type": "integer" - }, - "SimpleUser": { - "description": "The user name that has read and write permissions on the specified HDFS cluster.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[_.A-Za-z0-9][-_.A-Za-z0-9]*$", - "type": "string" - }, - "Subdirectory": { - "description": "The subdirectory in HDFS that is used to read data from the HDFS source location or write data to the HDFS destination.", - "maxLength": 4096, - "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/LocationArn", - "/properties/LocationUri" - ], - "required": [ - "NameNodes", - "AuthenticationType", - "AgentArns" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "datasync:TagResource", - "datasync:UntagResource", - "datasync:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DataSync::LocationHDFS", - "writeOnlyProperties": [ - "/properties/Subdirectory", - "/properties/KerberosKeytab", - "/properties/KerberosKrb5Conf" - ] -} +{ + "additionalProperties": false, + "definitions": { + "NameNode": { + "additionalProperties": false, + "description": "HDFS Name Node IP and port information.", + "properties": { + "Hostname": { + "description": "The DNS name or IP address of the Name Node in the customer's on premises HDFS cluster.", + "maxLength": 255, + "pattern": "^(([a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9\\-]*[A-Za-z0-9])$", + "type": "string" + }, + "Port": { + "description": "The port on which the Name Node is listening on for client requests.", + "maximum": 65536, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "Hostname", + "Port" + ], + "type": "object" + }, + "QopConfiguration": { + "additionalProperties": false, + "description": "Configuration information for RPC Protection and Data Transfer Protection. These parameters can be set to AUTHENTICATION, INTEGRITY, or PRIVACY. The default value is PRIVACY.", + "properties": { + "DataTransferProtection": { + "default": "PRIVACY", + "description": "Configuration for Data Transfer Protection.", + "enum": [ + "AUTHENTICATION", + "INTEGRITY", + "PRIVACY", + "DISABLED" + ], + "type": "string" + }, + "RpcProtection": { + "default": "PRIVACY", + "description": "Configuration for RPC Protection.", + "enum": [ + "AUTHENTICATION", + "INTEGRITY", + "PRIVACY", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DataSync::LocationHDFS.", + "handlers": { + "create": { + "permissions": [ + "datasync:CreateLocationHdfs", + "datasync:DescribeLocationHdfs", + "datasync:TagResource", + "datasync:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "datasync:DeleteLocation" + ] + }, + "list": { + "permissions": [ + "datasync:ListLocations" + ] + }, + "read": { + "permissions": [ + "datasync:DescribeLocationHdfs", + "datasync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "datasync:UpdateLocationHdfs", + "datasync:DescribeLocationHdfs", + "datasync:ListTagsForResource", + "datasync:TagResource", + "datasync:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocationArn" + ], + "properties": { + "AgentArns": { + "description": "ARN(s) of the agent(s) to use for an HDFS location.", + "insertionOrder": false, + "items": { + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$", + "type": "string" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "AuthenticationType": { + "description": "The authentication mode used to determine identity of user.", + "enum": [ + "SIMPLE", + "KERBEROS" + ], + "type": "string" + }, + "BlockSize": { + "description": "Size of chunks (blocks) in bytes that the data is divided into when stored in the HDFS cluster.", + "format": "int64", + "maximum": 1073741824, + "minimum": 1048576, + "type": "integer" + }, + "KerberosKeytab": { + "description": "The Base64 string representation of the Keytab file.", + "maxLength": 87384, + "type": "string" + }, + "KerberosKrb5Conf": { + "description": "The string representation of the Krb5Conf file, or the presigned URL to access the Krb5.conf file within an S3 bucket.", + "maxLength": 174764, + "type": "string" + }, + "KerberosPrincipal": { + "description": "The unique identity, or principal, to which Kerberos can assign tickets.", + "maxLength": 256, + "minLength": 1, + "pattern": "^.+$", + "type": "string" + }, + "KmsKeyProviderUri": { + "description": "The identifier for the Key Management Server where the encryption keys that encrypt data inside HDFS clusters are stored.", + "maxLength": 255, + "minLength": 1, + "pattern": "^kms:\\/\\/http[s]?@(([a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9\\-]*[A-Za-z0-9])(;(([a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9\\-]*[A-Za-z0-9]))*:[0-9]{1,5}\\/kms$", + "type": "string" + }, + "LocationArn": { + "description": "The Amazon Resource Name (ARN) of the HDFS location.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", + "type": "string" + }, + "LocationUri": { + "description": "The URL of the HDFS location that was described.", + "maxLength": 4356, + "pattern": "^(efs|nfs|s3|smb|fsxw|hdfs)://[a-zA-Z0-9.:/\\-]+$", + "type": "string" + }, + "NameNodes": { + "description": "An array of Name Node(s) of the HDFS location.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/NameNode" + }, + "minItems": 1, + "type": "array" + }, + "QopConfiguration": { + "$ref": "#/definitions/QopConfiguration" + }, + "ReplicationFactor": { + "default": 3, + "description": "Number of copies of each block that exists inside the HDFS cluster.", + "format": "int64", + "maximum": 512, + "minimum": 1, + "type": "integer" + }, + "SimpleUser": { + "description": "The user name that has read and write permissions on the specified HDFS cluster.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[_.A-Za-z0-9][-_.A-Za-z0-9]*$", + "type": "string" + }, + "Subdirectory": { + "description": "The subdirectory in HDFS that is used to read data from the HDFS source location or write data to the HDFS destination.", + "maxLength": 4096, + "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/LocationArn", + "/properties/LocationUri" + ], + "required": [ + "NameNodes", + "AuthenticationType", + "AgentArns" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "datasync:TagResource", + "datasync:UntagResource", + "datasync:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataSync::LocationHDFS", + "writeOnlyProperties": [ + "/properties/Subdirectory", + "/properties/KerberosKeytab", + "/properties/KerberosKrb5Conf" + ] +} diff --git a/src/schema/aws-datasync-locationnfs.json b/src/schema/aws-datasync-locationnfs.json index 85abb77b..7c05e747 100644 --- a/src/schema/aws-datasync-locationnfs.json +++ b/src/schema/aws-datasync-locationnfs.json @@ -1,181 +1,178 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServerHostname" - ], - "definitions": { - "MountOptions": { - "additionalProperties": false, - "description": "The NFS mount options that DataSync can use to mount your NFS share.", - "properties": { - "Version": { - "description": "The specific NFS version that you want DataSync to use to mount your NFS share.", - "enum": [ - "AUTOMATIC", - "NFS3", - "NFS4_0", - "NFS4_1" - ], - "type": "string" - } - }, - "type": "object" - }, - "OnPremConfig": { - "additionalProperties": false, - "description": "Contains a list of Amazon Resource Names (ARNs) of agents that are used to connect an NFS server.", - "properties": { - "AgentArns": { - "description": "ARN(s) of the agent(s) to use for an NFS location.", - "insertionOrder": false, - "items": { - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$", - "type": "string" - }, - "maxItems": 4, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "AgentArns" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", - "type": "string" - }, - "Value": { - "description": "The value for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DataSync::LocationNFS", - "handlers": { - "create": { - "permissions": [ - "datasync:CreateLocationNfs", - "datasync:DescribeLocationNfs", - "datasync:ListTagsForResource", - "datasync:TagResource" - ] - }, - "delete": { - "permissions": [ - "datasync:DeleteLocation" - ] - }, - "list": { - "permissions": [ - "datasync:ListLocations" - ] - }, - "read": { - "permissions": [ - "datasync:DescribeLocationNfs", - "datasync:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "datasync:DescribeLocationNfs", - "datasync:ListTagsForResource", - "datasync:TagResource", - "datasync:UntagResource", - "datasync:UpdateLocationNfs" - ] - } - }, - "primaryIdentifier": [ - "/properties/LocationArn" - ], - "properties": { - "LocationArn": { - "description": "The Amazon Resource Name (ARN) of the NFS location.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", - "type": "string" - }, - "LocationUri": { - "description": "The URL of the NFS location that was described.", - "maxLength": 4356, - "pattern": "^(efs|nfs|s3|smb|fsxw)://[a-zA-Z0-9./\\-]+$", - "type": "string" - }, - "MountOptions": { - "$ref": "#/definitions/MountOptions", - "default": { - "Version": "AUTOMATIC" - } - }, - "OnPremConfig": { - "$ref": "#/definitions/OnPremConfig" - }, - "ServerHostname": { - "description": "The name of the NFS server. This value is the IP address or DNS name of the NFS server.", - "maxLength": 255, - "pattern": "^(([a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9\\-]*[A-Za-z0-9])$", - "type": "string" - }, - "Subdirectory": { - "description": "The subdirectory in the NFS file system that is used to read data from the NFS source location or write data to the NFS destination.", - "maxLength": 4096, - "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/LocationArn", - "/properties/LocationUri" - ], - "required": [ - "OnPremConfig" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "datasync:TagResource", - "datasync:UntagResource", - "datasync:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DataSync::LocationNFS", - "writeOnlyProperties": [ - "/properties/ServerHostname", - "/properties/Subdirectory" - ] -} +{ + "additionalProperties": false, + "definitions": { + "MountOptions": { + "additionalProperties": false, + "description": "The NFS mount options that DataSync can use to mount your NFS share.", + "properties": { + "Version": { + "description": "The specific NFS version that you want DataSync to use to mount your NFS share.", + "enum": [ + "AUTOMATIC", + "NFS3", + "NFS4_0", + "NFS4_1" + ], + "type": "string" + } + }, + "type": "object" + }, + "OnPremConfig": { + "additionalProperties": false, + "description": "Contains a list of Amazon Resource Names (ARNs) of agents that are used to connect an NFS server.", + "properties": { + "AgentArns": { + "description": "ARN(s) of the agent(s) to use for an NFS location.", + "insertionOrder": false, + "items": { + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$", + "type": "string" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "AgentArns" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", + "type": "string" + }, + "Value": { + "description": "The value for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DataSync::LocationNFS", + "handlers": { + "create": { + "permissions": [ + "datasync:CreateLocationNfs", + "datasync:DescribeLocationNfs", + "datasync:ListTagsForResource", + "datasync:TagResource" + ] + }, + "delete": { + "permissions": [ + "datasync:DeleteLocation" + ] + }, + "list": { + "permissions": [ + "datasync:ListLocations" + ] + }, + "read": { + "permissions": [ + "datasync:DescribeLocationNfs", + "datasync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "datasync:DescribeLocationNfs", + "datasync:ListTagsForResource", + "datasync:TagResource", + "datasync:UntagResource", + "datasync:UpdateLocationNfs" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocationArn" + ], + "properties": { + "LocationArn": { + "description": "The Amazon Resource Name (ARN) of the NFS location.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", + "type": "string" + }, + "LocationUri": { + "description": "The URL of the NFS location that was described.", + "maxLength": 4356, + "pattern": "^(efs|nfs|s3|smb|fsxw)://[a-zA-Z0-9./\\-]+$", + "type": "string" + }, + "MountOptions": { + "$ref": "#/definitions/MountOptions", + "default": { + "Version": "AUTOMATIC" + } + }, + "OnPremConfig": { + "$ref": "#/definitions/OnPremConfig" + }, + "ServerHostname": { + "description": "The name of the NFS server. This value is the IP address or DNS name of the NFS server.", + "maxLength": 255, + "pattern": "^(([a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9\\-]*[A-Za-z0-9])$", + "type": "string" + }, + "Subdirectory": { + "description": "The subdirectory in the NFS file system that is used to read data from the NFS source location or write data to the NFS destination.", + "maxLength": 4096, + "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/LocationArn", + "/properties/LocationUri" + ], + "required": [ + "OnPremConfig" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "datasync:TagResource", + "datasync:UntagResource", + "datasync:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataSync::LocationNFS", + "writeOnlyProperties": [ + "/properties/ServerHostname", + "/properties/Subdirectory" + ] +} diff --git a/src/schema/aws-datasync-locationobjectstorage.json b/src/schema/aws-datasync-locationobjectstorage.json index 7b8c3914..ea5b1e68 100644 --- a/src/schema/aws-datasync-locationobjectstorage.json +++ b/src/schema/aws-datasync-locationobjectstorage.json @@ -1,188 +1,187 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/BucketName", - "/properties/ServerHostname" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", - "type": "string" - }, - "Value": { - "description": "The value for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DataSync::LocationObjectStorage.", - "handlers": { - "create": { - "permissions": [ - "datasync:CreateLocationObjectStorage", - "datasync:DescribeLocationObjectStorage", - "datasync:ListTagsForResource", - "datasync:TagResource" - ] - }, - "delete": { - "permissions": [ - "datasync:DeleteLocation" - ] - }, - "list": { - "permissions": [ - "datasync:ListLocations" - ] - }, - "read": { - "permissions": [ - "datasync:DescribeLocationObjectStorage", - "datasync:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "datasync:DescribeLocationObjectStorage", - "datasync:ListTagsForResource", - "datasync:TagResource", - "datasync:UntagResource", - "datasync:UpdateLocationObjectStorage" - ] - } - }, - "primaryIdentifier": [ - "/properties/LocationArn" - ], - "properties": { - "AccessKey": { - "description": "Optional. The access key is used if credentials are required to access the self-managed object storage server.", - "maxLength": 200, - "minLength": 1, - "pattern": "^.+$", - "type": "string" - }, - "AgentArns": { - "description": "The Amazon Resource Name (ARN) of the agents associated with the self-managed object storage server location.", - "insertionOrder": false, - "items": { - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$", - "type": "string" - }, - "maxItems": 4, - "minItems": 1, - "type": "array" - }, - "BucketName": { - "description": "The name of the bucket on the self-managed object storage server.", - "maxLength": 63, - "minLength": 3, - "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", - "type": "string" - }, - "LocationArn": { - "description": "The Amazon Resource Name (ARN) of the location that is created.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", - "type": "string" - }, - "LocationUri": { - "description": "The URL of the object storage location that was described.", - "maxLength": 4356, - "pattern": "^(efs|nfs|s3|smb|fsxw|object-storage)://[a-zA-Z0-9./\\-]+$", - "type": "string" - }, - "SecretKey": { - "description": "Optional. The secret key is used if credentials are required to access the self-managed object storage server.", - "maxLength": 200, - "minLength": 8, - "pattern": "^.+$", - "type": "string" - }, - "ServerCertificate": { - "description": "X.509 PEM content containing a certificate authority or chain to trust.", - "maxLength": 32768, - "type": "string" - }, - "ServerHostname": { - "description": "The name of the self-managed object storage server. This value is the IP address or Domain Name Service (DNS) name of the object storage server.", - "maxLength": 255, - "pattern": "^(([a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9\\-]*[A-Za-z0-9])$", - "type": "string" - }, - "ServerPort": { - "description": "The port that your self-managed server accepts inbound network traffic on.", - "maximum": 65536, - "minimum": 1, - "type": "integer" - }, - "ServerProtocol": { - "description": "The protocol that the object storage server uses to communicate.", - "enum": [ - "HTTPS", - "HTTP" - ], - "type": "string" - }, - "Subdirectory": { - "description": "The subdirectory in the self-managed object storage server that is used to read data from.", - "maxLength": 4096, - "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\p{Zs}]*$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/LocationArn", - "/properties/LocationUri" - ], - "required": [ - "AgentArns" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "datasync:TagResource", - "datasync:UntagResource", - "datasync:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DataSync::LocationObjectStorage", - "writeOnlyProperties": [ - "/properties/SecretKey", - "/properties/BucketName", - "/properties/ServerHostname", - "/properties/Subdirectory" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BucketName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", + "type": "string" + }, + "Value": { + "description": "The value for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DataSync::LocationObjectStorage.", + "handlers": { + "create": { + "permissions": [ + "datasync:CreateLocationObjectStorage", + "datasync:DescribeLocationObjectStorage", + "datasync:ListTagsForResource", + "datasync:TagResource" + ] + }, + "delete": { + "permissions": [ + "datasync:DeleteLocation" + ] + }, + "list": { + "permissions": [ + "datasync:ListLocations" + ] + }, + "read": { + "permissions": [ + "datasync:DescribeLocationObjectStorage", + "datasync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "datasync:DescribeLocationObjectStorage", + "datasync:ListTagsForResource", + "datasync:TagResource", + "datasync:UntagResource", + "datasync:UpdateLocationObjectStorage" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocationArn" + ], + "properties": { + "AccessKey": { + "description": "Optional. The access key is used if credentials are required to access the self-managed object storage server.", + "maxLength": 200, + "minLength": 1, + "pattern": "^.+$", + "type": "string" + }, + "AgentArns": { + "description": "The Amazon Resource Name (ARN) of the agents associated with the self-managed object storage server location.", + "insertionOrder": false, + "items": { + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$", + "type": "string" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "BucketName": { + "description": "The name of the bucket on the self-managed object storage server.", + "maxLength": 63, + "minLength": 3, + "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", + "type": "string" + }, + "LocationArn": { + "description": "The Amazon Resource Name (ARN) of the location that is created.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", + "type": "string" + }, + "LocationUri": { + "description": "The URL of the object storage location that was described.", + "maxLength": 4356, + "pattern": "^(efs|nfs|s3|smb|fsxw|object-storage)://[a-zA-Z0-9./\\-]+$", + "type": "string" + }, + "SecretKey": { + "description": "Optional. The secret key is used if credentials are required to access the self-managed object storage server.", + "maxLength": 200, + "minLength": 8, + "pattern": "^.+$", + "type": "string" + }, + "ServerCertificate": { + "description": "X.509 PEM content containing a certificate authority or chain to trust.", + "maxLength": 32768, + "type": "string" + }, + "ServerHostname": { + "description": "The name of the self-managed object storage server. This value is the IP address or Domain Name Service (DNS) name of the object storage server.", + "maxLength": 255, + "pattern": "^(([a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9\\-]*[A-Za-z0-9])$", + "type": "string" + }, + "ServerPort": { + "description": "The port that your self-managed server accepts inbound network traffic on.", + "maximum": 65536, + "minimum": 1, + "type": "integer" + }, + "ServerProtocol": { + "description": "The protocol that the object storage server uses to communicate.", + "enum": [ + "HTTPS", + "HTTP" + ], + "type": "string" + }, + "Subdirectory": { + "description": "The subdirectory in the self-managed object storage server that is used to read data from.", + "maxLength": 4096, + "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\p{Zs}]*$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/LocationArn", + "/properties/LocationUri" + ], + "required": [ + "AgentArns" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "datasync:TagResource", + "datasync:UntagResource", + "datasync:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataSync::LocationObjectStorage", + "writeOnlyProperties": [ + "/properties/SecretKey", + "/properties/BucketName", + "/properties/ServerHostname", + "/properties/Subdirectory" + ] +} diff --git a/src/schema/aws-datasync-locations3.json b/src/schema/aws-datasync-locations3.json index 037795ec..3ee3a8aa 100644 --- a/src/schema/aws-datasync-locations3.json +++ b/src/schema/aws-datasync-locations3.json @@ -1,167 +1,170 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/S3Config", - "/properties/S3StorageClass", - "/properties/Subdirectory", - "/properties/S3BucketArn" - ], - "definitions": { - "S3Config": { - "additionalProperties": false, - "description": "The Amazon Resource Name (ARN) of the AWS IAM role that is used to access an Amazon S3 bucket.", - "properties": { - "BucketAccessRoleArn": { - "description": "The ARN of the IAM role of the Amazon S3 bucket.", - "maxLength": 2048, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):iam::[0-9]{12}:role/.*$", - "type": "string" - } - }, - "required": [ - "BucketAccessRoleArn" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", - "type": "string" - }, - "Value": { - "description": "The value for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DataSync::LocationS3", - "handlers": { - "create": { - "permissions": [ - "datasync:CreateLocationS3", - "datasync:DescribeLocationS3", - "datasync:ListTagsForResource", - "datasync:TagResource", - "s3:ListAllMyBuckets", - "s3:ListBucket", - "iam:GetRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "datasync:DeleteLocation" - ] - }, - "list": { - "permissions": [ - "datasync:ListLocations" - ] - }, - "read": { - "permissions": [ - "datasync:DescribeLocationS3", - "datasync:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "datasync:DescribeLocationS3", - "datasync:ListTagsForResource", - "datasync:TagResource", - "datasync:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/LocationArn" - ], - "properties": { - "LocationArn": { - "description": "The Amazon Resource Name (ARN) of the Amazon S3 bucket location.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", - "type": "string" - }, - "LocationUri": { - "description": "The URL of the S3 location that was described.", - "maxLength": 4356, - "pattern": "^(efs|nfs|s3|smb|fsxw)://[a-zA-Z0-9.\\-/]+$", - "type": "string" - }, - "S3BucketArn": { - "description": "The Amazon Resource Name (ARN) of the Amazon S3 bucket.", - "maxLength": 156, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):s3:[a-z\\-0-9]*:[0-9]*:.*$", - "type": "string" - }, - "S3Config": { - "$ref": "#/definitions/S3Config" - }, - "S3StorageClass": { - "default": "STANDARD", - "description": "The Amazon S3 storage class you want to store your files in when this location is used as a task destination.", - "enum": [ - "STANDARD", - "STANDARD_IA", - "ONEZONE_IA", - "INTELLIGENT_TIERING", - "GLACIER", - "GLACIER_INSTANT_RETRIEVAL", - "DEEP_ARCHIVE" - ], - "type": "string" - }, - "Subdirectory": { - "description": "A subdirectory in the Amazon S3 bucket. This subdirectory in Amazon S3 is used to read data from the S3 source location or write data to the S3 destination.", - "maxLength": 1024, - "pattern": "^[\\p{L}\\p{M}\\p{Z}\\p{S}\\p{N}\\p{P}\\p{C}]*$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/LocationArn", - "/properties/LocationUri" - ], - "required": [ - "S3Config" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DataSync::LocationS3", - "writeOnlyProperties": [ - "/properties/Subdirectory", - "/properties/S3BucketArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/S3BucketArn" + ], + "definitions": { + "S3Config": { + "additionalProperties": false, + "description": "The Amazon Resource Name (ARN) of the AWS IAM role that is used to access an Amazon S3 bucket.", + "properties": { + "BucketAccessRoleArn": { + "description": "The ARN of the IAM role of the Amazon S3 bucket.", + "maxLength": 2048, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):iam::[0-9]{12}:role/.*$", + "type": "string" + } + }, + "required": [ + "BucketAccessRoleArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", + "type": "string" + }, + "Value": { + "description": "The value for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DataSync::LocationS3", + "handlers": { + "create": { + "permissions": [ + "datasync:CreateLocationS3", + "datasync:DescribeLocationS3", + "datasync:ListTagsForResource", + "datasync:TagResource", + "s3:ListAllMyBuckets", + "s3:ListBucket", + "iam:GetRole", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "datasync:DeleteLocation" + ] + }, + "list": { + "permissions": [ + "datasync:ListLocations" + ] + }, + "read": { + "permissions": [ + "datasync:DescribeLocationS3", + "datasync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "datasync:DescribeLocationS3", + "datasync:ListTagsForResource", + "datasync:TagResource", + "datasync:UntagResource", + "datasync:UpdateLocationS3" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocationArn" + ], + "properties": { + "LocationArn": { + "description": "The Amazon Resource Name (ARN) of the Amazon S3 bucket location.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", + "type": "string" + }, + "LocationUri": { + "description": "The URL of the S3 location that was described.", + "maxLength": 4356, + "pattern": "^(efs|nfs|s3|smb|fsxw)://[a-zA-Z0-9.\\-/]+$", + "type": "string" + }, + "S3BucketArn": { + "description": "The Amazon Resource Name (ARN) of the Amazon S3 bucket.", + "maxLength": 156, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):s3:[a-z\\-0-9]*:[0-9]*:.*$", + "type": "string" + }, + "S3Config": { + "$ref": "#/definitions/S3Config" + }, + "S3StorageClass": { + "default": "STANDARD", + "description": "The Amazon S3 storage class you want to store your files in when this location is used as a task destination.", + "enum": [ + "STANDARD", + "STANDARD_IA", + "ONEZONE_IA", + "INTELLIGENT_TIERING", + "GLACIER", + "GLACIER_INSTANT_RETRIEVAL", + "DEEP_ARCHIVE" + ], + "type": "string" + }, + "Subdirectory": { + "description": "A subdirectory in the Amazon S3 bucket. This subdirectory in Amazon S3 is used to read data from the S3 source location or write data to the S3 destination.", + "maxLength": 1024, + "pattern": "^[\\p{L}\\p{M}\\p{Z}\\p{S}\\p{N}\\p{P}\\p{C}]*$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/LocationArn", + "/properties/LocationUri" + ], + "required": [ + "S3Config" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "datasync:TagResource", + "datasync:UntagResource", + "datasync:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataSync::LocationS3", + "writeOnlyProperties": [ + "/properties/Subdirectory", + "/properties/S3BucketArn" + ] +} diff --git a/src/schema/aws-datasync-locationsmb.json b/src/schema/aws-datasync-locationsmb.json index 31f743bb..a4c2b5e6 100644 --- a/src/schema/aws-datasync-locationsmb.json +++ b/src/schema/aws-datasync-locationsmb.json @@ -1,189 +1,225 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServerHostname" - ], - "definitions": { - "MountOptions": { - "additionalProperties": false, - "description": "The mount options used by DataSync to access the SMB server.", - "properties": { - "Version": { - "description": "The specific SMB version that you want DataSync to use to mount your SMB share.", - "enum": [ - "AUTOMATIC", - "SMB1", - "SMB2_0", - "SMB2", - "SMB3" - ], - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", - "type": "string" - }, - "Value": { - "description": "The value for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DataSync::LocationSMB.", - "handlers": { - "create": { - "permissions": [ - "datasync:CreateLocationSmb", - "datasync:DescribeLocationSmb", - "datasync:ListTagsForResource", - "datasync:TagResource" - ] - }, - "delete": { - "permissions": [ - "datasync:DeleteLocation" - ] - }, - "list": { - "permissions": [ - "datasync:ListLocations" - ] - }, - "read": { - "permissions": [ - "datasync:DescribeLocationSmb", - "datasync:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "datasync:DescribeLocationSmb", - "datasync:ListTagsForResource", - "datasync:TagResource", - "datasync:UntagResource", - "datasync:UpdateLocationSmb" - ] - } - }, - "primaryIdentifier": [ - "/properties/LocationArn" - ], - "properties": { - "AgentArns": { - "description": "The Amazon Resource Names (ARNs) of agents to use for a Simple Message Block (SMB) location.", - "insertionOrder": false, - "items": { - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$", - "type": "string" - }, - "maxItems": 4, - "minItems": 1, - "type": "array" - }, - "Domain": { - "description": "The name of the Windows domain that the SMB server belongs to.", - "maxLength": 253, - "pattern": "^([A-Za-z0-9]+[A-Za-z0-9-.]*)*[A-Za-z0-9-]*[A-Za-z0-9]$", - "type": "string" - }, - "LocationArn": { - "description": "The Amazon Resource Name (ARN) of the SMB location that is created.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", - "type": "string" - }, - "LocationUri": { - "description": "The URL of the SMB location that was described.", - "maxLength": 4356, - "pattern": "^(efs|nfs|s3|smb|fsxw)://[a-zA-Z0-9./\\-]+$", - "type": "string" - }, - "MountOptions": { - "$ref": "#/definitions/MountOptions", - "default": { - "Version": "AUTOMATIC" - } - }, - "Password": { - "description": "The password of the user who can mount the share and has the permissions to access files and folders in the SMB share.", - "maxLength": 104, - "pattern": "^.{0,104}$", - "type": "string" - }, - "ServerHostname": { - "description": "The name of the SMB server. This value is the IP address or Domain Name Service (DNS) name of the SMB server.", - "maxLength": 255, - "pattern": "^(([a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9\\-]*[A-Za-z0-9])$", - "type": "string" - }, - "Subdirectory": { - "description": "The subdirectory in the SMB file system that is used to read data from the SMB source location or write data to the SMB destination", - "maxLength": 4096, - "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "User": { - "description": "The user who can mount the share, has the permissions to access files and folders in the SMB share.", - "maxLength": 104, - "pattern": "^[^\\x5B\\x5D\\\\/:;|=,+*?]{1,104}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/LocationArn", - "/properties/LocationUri" - ], - "required": [ - "User", - "AgentArns" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "datasync:TagResource", - "datasync:UntagResource", - "datasync:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DataSync::LocationSMB", - "writeOnlyProperties": [ - "/properties/Password", - "/properties/Subdirectory", - "/properties/ServerHostname" - ] -} +{ + "additionalProperties": false, + "definitions": { + "MountOptions": { + "additionalProperties": false, + "description": "The mount options used by DataSync to access the SMB server.", + "properties": { + "Version": { + "description": "The specific SMB version that you want DataSync to use to mount your SMB share.", + "enum": [ + "AUTOMATIC", + "SMB1", + "SMB2_0", + "SMB2", + "SMB3" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", + "type": "string" + }, + "Value": { + "description": "The value for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DataSync::LocationSMB.", + "handlers": { + "create": { + "permissions": [ + "datasync:CreateLocationSmb", + "datasync:DescribeLocationSmb", + "datasync:ListTagsForResource", + "datasync:TagResource" + ] + }, + "delete": { + "permissions": [ + "datasync:DeleteLocation" + ] + }, + "list": { + "permissions": [ + "datasync:ListLocations" + ] + }, + "read": { + "permissions": [ + "datasync:DescribeLocationSmb", + "datasync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "datasync:DescribeLocationSmb", + "datasync:ListTagsForResource", + "datasync:TagResource", + "datasync:UntagResource", + "datasync:UpdateLocationSmb" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocationArn" + ], + "properties": { + "AgentArns": { + "description": "The Amazon Resource Names (ARNs) of agents to use for a Simple Message Block (SMB) location.", + "insertionOrder": false, + "items": { + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$", + "type": "string" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "AuthenticationType": { + "description": "The authentication mode used to determine identity of user.", + "enum": [ + "NTLM", + "KERBEROS" + ], + "type": "string" + }, + "DnsIpAddresses": { + "default": null, + "description": "Specifies the IPv4 addresses for the DNS servers that your SMB file server belongs to. This parameter applies only if AuthenticationType is set to KERBEROS. If you have multiple domains in your environment, configuring this parameter makes sure that DataSync connects to the right SMB file server.", + "insertionOrder": true, + "items": { + "maxLength": 15, + "minLength": 7, + "pattern": "\\A(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z", + "type": "string" + }, + "maxItems": 2, + "type": "array" + }, + "Domain": { + "description": "The name of the Windows domain that the SMB server belongs to.", + "maxLength": 253, + "pattern": "^([A-Za-z0-9]+[A-Za-z0-9-.]*)*[A-Za-z0-9-]*[A-Za-z0-9]$", + "type": "string" + }, + "KerberosKeytab": { + "description": "The Base64 string representation of the Keytab file. Specifies your Kerberos key table (keytab) file, which includes mappings between your service principal name (SPN) and encryption keys. To avoid task execution errors, make sure that the SPN in the keytab file matches exactly what you specify for KerberosPrincipal and in your krb5.conf file.", + "maxLength": 87384, + "type": "string" + }, + "KerberosKrb5Conf": { + "description": "The string representation of the Krb5Conf file, or the presigned URL to access the Krb5.conf file within an S3 bucket. Specifies a Kerberos configuration file (krb5.conf) that defines your Kerberos realm configuration. To avoid task execution errors, make sure that the service principal name (SPN) in the krb5.conf file matches exactly what you specify for KerberosPrincipal and in your keytab file.", + "maxLength": 174764, + "type": "string" + }, + "KerberosPrincipal": { + "description": "Specifies a service principal name (SPN), which is an identity in your Kerberos realm that has permission to access the files, folders, and file metadata in your SMB file server. SPNs are case sensitive and must include a prepended cifs/. For example, an SPN might look like cifs/kerberosuser@EXAMPLE.COM. Your task execution will fail if the SPN that you provide for this parameter doesn't match exactly what's in your keytab or krb5.conf files.", + "maxLength": 256, + "minLength": 1, + "pattern": "^.+$", + "type": "string" + }, + "LocationArn": { + "description": "The Amazon Resource Name (ARN) of the SMB location that is created.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", + "type": "string" + }, + "LocationUri": { + "description": "The URL of the SMB location that was described.", + "maxLength": 4356, + "pattern": "^(efs|nfs|s3|smb|fsxw)://[a-zA-Z0-9./\\-]+$", + "type": "string" + }, + "MountOptions": { + "$ref": "#/definitions/MountOptions", + "default": { + "Version": "AUTOMATIC" + } + }, + "Password": { + "description": "The password of the user who can mount the share and has the permissions to access files and folders in the SMB share.", + "maxLength": 104, + "pattern": "^.{0,104}$", + "type": "string" + }, + "ServerHostname": { + "description": "The name of the SMB server. This value is the IP address or Domain Name Service (DNS) name of the SMB server.", + "maxLength": 255, + "pattern": "^(([a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9\\-]*[A-Za-z0-9])$", + "type": "string" + }, + "Subdirectory": { + "description": "The subdirectory in the SMB file system that is used to read data from the SMB source location or write data to the SMB destination", + "maxLength": 4096, + "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\$\\p{Zs}]+$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "User": { + "description": "The user who can mount the share, has the permissions to access files and folders in the SMB share.", + "maxLength": 104, + "pattern": "^[^\\x5B\\x5D\\\\/:;|=,+*?]{1,104}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LocationArn", + "/properties/LocationUri" + ], + "required": [ + "AgentArns" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "datasync:TagResource", + "datasync:UntagResource", + "datasync:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataSync::LocationSMB", + "writeOnlyProperties": [ + "/properties/Password", + "/properties/Subdirectory", + "/properties/ServerHostname", + "/properties/KerberosKeytab", + "/properties/KerberosKrb5Conf" + ] +} diff --git a/src/schema/aws-datasync-storagesystem.json b/src/schema/aws-datasync-storagesystem.json index 606e608e..d31a2d83 100644 --- a/src/schema/aws-datasync-storagesystem.json +++ b/src/schema/aws-datasync-storagesystem.json @@ -1,219 +1,219 @@ -{ - "additionalProperties": false, - "definitions": { - "ServerConfiguration": { - "additionalProperties": false, - "description": "The server name and network port required to connect with the management interface of the on-premises storage system.", - "properties": { - "ServerHostname": { - "description": "The domain name or IP address of the storage system's management interface.", - "maxLength": 255, - "pattern": "^(([a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9\\-]*[A-Za-z0-9])$", - "type": "string" - }, - "ServerPort": { - "description": "The network port needed to access the system's management interface", - "maximum": 65535, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "ServerHostname" - ], - "type": "object" - }, - "ServerCredentials": { - "additionalProperties": false, - "description": "The username and password for accessing your on-premises storage system's management interface.", - "properties": { - "Password": { - "description": "The password for your storage system's management interface", - "maxLength": 1024, - "type": "string" - }, - "Username": { - "description": "The username for your storage system's management interface.", - "maxLength": 1024, - "type": "string" - } - }, - "required": [ - "Username", - "Password" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", - "type": "string" - }, - "Value": { - "description": "The value for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DataSync::StorageSystem.", - "handlers": { - "create": { - "permissions": [ - "datasync:AddStorageSystem", - "datasync:DescribeStorageSystem", - "datasync:ListTagsForResource", - "datasync:TagResource", - "secretsmanager:CreateSecret", - "secretsmanager:DescribeSecret", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "datasync:DescribeStorageSystem", - "datasync:RemoveStorageSystem", - "secretsmanager:DescribeSecret", - "secretsmanager:DeleteSecret" - ] - }, - "list": { - "permissions": [ - "datasync:ListStorageSystems" - ] - }, - "read": { - "permissions": [ - "datasync:DescribeStorageSystem", - "datasync:ListTagsForResource", - "secretsmanager:DescribeSecret" - ] - }, - "update": { - "permissions": [ - "datasync:UpdateStorageSystem", - "datasync:DescribeStorageSystem", - "datasync:ListTagsForResource", - "datasync:TagResource", - "datasync:UntagResource", - "secretsmanager:DescribeSecret", - "secretsmanager:PutSecretValue" - ] - } - }, - "primaryIdentifier": [ - "/properties/StorageSystemArn" - ], - "properties": { - "AgentArns": { - "description": "The ARN of the DataSync agent that connects to and reads from the on-premises storage system's management interface.", - "insertionOrder": false, - "items": { - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$", - "type": "string" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "CloudWatchLogGroupArn": { - "description": "The ARN of the Amazon CloudWatch log group used to monitor and log discovery job events.", - "maxLength": 562, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):logs:[a-z\\-0-9]+:[0-9]{12}:log-group:([^:\\*]*)(:\\*)?$", - "type": "string" - }, - "ConnectivityStatus": { - "description": "Indicates whether the DataSync agent can access the on-premises storage system.", - "enum": [ - "PASS", - "FAIL", - "UNKNOWN" - ], - "type": "string" - }, - "Name": { - "description": "A familiar name for the on-premises storage system.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", - "type": "string" - }, - "SecretsManagerArn": { - "description": "The ARN of a secret stored by AWS Secrets Manager.", - "maxLength": 2048, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):secretsmanager:[a-z\\-0-9]+:[0-9]{12}:secret:.*", - "type": "string" - }, - "ServerConfiguration": { - "$ref": "#/definitions/ServerConfiguration" - }, - "ServerCredentials": { - "$ref": "#/definitions/ServerCredentials" - }, - "StorageSystemArn": { - "description": "The ARN of the on-premises storage system added to DataSync Discovery.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:system/storage-system-[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", - "type": "string" - }, - "SystemType": { - "description": "The type of on-premises storage system that DataSync Discovery will analyze.", - "enum": [ - "NetAppONTAP" - ], - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/StorageSystemArn", - "/properties/ConnectivityStatus", - "/properties/SecretsManagerArn" - ], - "required": [ - "ServerConfiguration", - "SystemType", - "AgentArns" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "datasync:TagResource", - "datasync:UntagResource", - "datasync:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DataSync::StorageSystem", - "writeOnlyProperties": [ - "/properties/ServerCredentials" - ] -} +{ + "additionalProperties": false, + "definitions": { + "ServerConfiguration": { + "additionalProperties": false, + "description": "The server name and network port required to connect with the management interface of the on-premises storage system.", + "properties": { + "ServerHostname": { + "description": "The domain name or IP address of the storage system's management interface.", + "maxLength": 255, + "pattern": "^(([a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9\\-]*[A-Za-z0-9])$", + "type": "string" + }, + "ServerPort": { + "description": "The network port needed to access the system's management interface", + "maximum": 65535, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "ServerHostname" + ], + "type": "object" + }, + "ServerCredentials": { + "additionalProperties": false, + "description": "The username and password for accessing your on-premises storage system's management interface.", + "properties": { + "Password": { + "description": "The password for your storage system's management interface", + "maxLength": 1024, + "type": "string" + }, + "Username": { + "description": "The username for your storage system's management interface.", + "maxLength": 1024, + "type": "string" + } + }, + "required": [ + "Username", + "Password" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", + "type": "string" + }, + "Value": { + "description": "The value for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DataSync::StorageSystem.", + "handlers": { + "create": { + "permissions": [ + "datasync:AddStorageSystem", + "datasync:DescribeStorageSystem", + "datasync:ListTagsForResource", + "datasync:TagResource", + "secretsmanager:CreateSecret", + "secretsmanager:DescribeSecret", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "datasync:DescribeStorageSystem", + "datasync:RemoveStorageSystem", + "secretsmanager:DescribeSecret", + "secretsmanager:DeleteSecret" + ] + }, + "list": { + "permissions": [ + "datasync:ListStorageSystems" + ] + }, + "read": { + "permissions": [ + "datasync:DescribeStorageSystem", + "datasync:ListTagsForResource", + "secretsmanager:DescribeSecret" + ] + }, + "update": { + "permissions": [ + "datasync:UpdateStorageSystem", + "datasync:DescribeStorageSystem", + "datasync:ListTagsForResource", + "datasync:TagResource", + "datasync:UntagResource", + "secretsmanager:DescribeSecret", + "secretsmanager:PutSecretValue" + ] + } + }, + "primaryIdentifier": [ + "/properties/StorageSystemArn" + ], + "properties": { + "AgentArns": { + "description": "The ARN of the DataSync agent that connects to and reads from the on-premises storage system's management interface.", + "insertionOrder": false, + "items": { + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:agent/agent-[0-9a-z]{17}$", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "CloudWatchLogGroupArn": { + "description": "The ARN of the Amazon CloudWatch log group used to monitor and log discovery job events.", + "maxLength": 562, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):logs:[a-z\\-0-9]+:[0-9]{12}:log-group:([^:\\*]*)(:\\*)?$", + "type": "string" + }, + "ConnectivityStatus": { + "description": "Indicates whether the DataSync agent can access the on-premises storage system.", + "enum": [ + "PASS", + "FAIL", + "UNKNOWN" + ], + "type": "string" + }, + "Name": { + "description": "A familiar name for the on-premises storage system.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "type": "string" + }, + "SecretsManagerArn": { + "description": "The ARN of a secret stored by AWS Secrets Manager.", + "maxLength": 2048, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):secretsmanager:[a-z\\-0-9]+:[0-9]{12}:secret:.*", + "type": "string" + }, + "ServerConfiguration": { + "$ref": "#/definitions/ServerConfiguration" + }, + "ServerCredentials": { + "$ref": "#/definitions/ServerCredentials" + }, + "StorageSystemArn": { + "description": "The ARN of the on-premises storage system added to DataSync Discovery.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:system/storage-system-[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + }, + "SystemType": { + "description": "The type of on-premises storage system that DataSync Discovery will analyze.", + "enum": [ + "NetAppONTAP" + ], + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/StorageSystemArn", + "/properties/ConnectivityStatus", + "/properties/SecretsManagerArn" + ], + "required": [ + "ServerConfiguration", + "SystemType", + "AgentArns" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "datasync:TagResource", + "datasync:UntagResource", + "datasync:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataSync::StorageSystem", + "writeOnlyProperties": [ + "/properties/ServerCredentials" + ] +} diff --git a/src/schema/aws-datasync-task.json b/src/schema/aws-datasync-task.json index 43aa44ad..b9a99f66 100644 --- a/src/schema/aws-datasync-task.json +++ b/src/schema/aws-datasync-task.json @@ -1,620 +1,620 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DestinationLocationArn", - "/properties/SourceLocationArn", - "/properties/TaskMode" - ], - "definitions": { - "DestinationNetworkInterfaceArns": { - "description": "The Amazon Resource Names (ARNs) of the destination ENIs (Elastic Network Interfaces) that were created for your subnet.", - "insertionOrder": false, - "items": { - "pattern": "^arn:aws[\\-a-z]{0,}:ec2:[a-z\\-0-9]*:[0-9]{12}:network-interface/eni-[0-9a-f]+$", - "type": "string" - }, - "maxItems": 128, - "type": "array" - }, - "FilterRule": { - "additionalProperties": false, - "description": "Specifies which files folders and objects to include or exclude when transferring files from source to destination.", - "properties": { - "FilterType": { - "description": "The type of filter rule to apply. AWS DataSync only supports the SIMPLE_PATTERN rule type.", - "enum": [ - "SIMPLE_PATTERN" - ], - "maxLength": 128, - "pattern": "^[A-Z0-9_]+$", - "type": "string" - }, - "Value": { - "description": "A single filter string that consists of the patterns to include or exclude. The patterns are delimited by \"|\".", - "maxLength": 409600, - "pattern": "^[^\\x00]+$", - "type": "string" - } - }, - "type": "object" - }, - "ManifestConfig": { - "additionalProperties": false, - "description": "Configures a manifest, which is a list of files or objects that you want DataSync to transfer.", - "properties": { - "Action": { - "description": "Specifies what DataSync uses the manifest for.", - "enum": [ - "TRANSFER" - ], - "type": "string" - }, - "Format": { - "description": "Specifies the file format of your manifest.", - "enum": [ - "CSV" - ], - "type": "string" - }, - "Source": { - "additionalProperties": false, - "description": "Specifies the manifest that you want DataSync to use and where it's hosted.", - "properties": { - "S3": { - "$ref": "#/definitions/ManifestConfigSourceS3" - } - }, - "type": "object" - } - }, - "required": [ - "Source" - ], - "type": "object" - }, - "ManifestConfigSourceS3": { - "additionalProperties": false, - "description": "Specifies the S3 bucket where you're hosting the manifest that you want AWS DataSync to use.", - "properties": { - "BucketAccessRoleArn": { - "description": "Specifies the AWS Identity and Access Management (IAM) role that allows DataSync to access your manifest.", - "maxLength": 2048, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):iam::[0-9]{12}:role/.*$", - "type": "string" - }, - "ManifestObjectPath": { - "description": "Specifies the Amazon S3 object key of your manifest.", - "maxLength": 1024, - "pattern": "^[\\p{L}\\p{M}\\p{Z}\\p{S}\\p{N}\\p{P}\\p{C}]*$", - "type": "string" - }, - "ManifestObjectVersionId": { - "description": "Specifies the object version ID of the manifest that you want DataSync to use.", - "maxLength": 100, - "pattern": "^.+$", - "type": "string" - }, - "S3BucketArn": { - "description": "Specifies the Amazon Resource Name (ARN) of the S3 bucket where you're hosting your manifest.", - "maxLength": 156, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):(s3|s3-outposts):[a-z\\-0-9]*:[0-9]*:.*$", - "type": "string" - } - }, - "type": "object" - }, - "Options": { - "additionalProperties": false, - "description": "Represents the options that are available to control the behavior of a StartTaskExecution operation.", - "properties": { - "Atime": { - "description": "A file metadata value that shows the last time a file was accessed (that is, when the file was read or written to).", - "enum": [ - "NONE", - "BEST_EFFORT" - ], - "type": "string" - }, - "BytesPerSecond": { - "description": "A value that limits the bandwidth used by AWS DataSync.", - "format": "int64", - "minimum": -1, - "type": "integer" - }, - "Gid": { - "description": "The group ID (GID) of the file's owners.", - "enum": [ - "NONE", - "INT_VALUE", - "NAME", - "BOTH" - ], - "type": "string" - }, - "LogLevel": { - "description": "A value that determines the types of logs that DataSync publishes to a log stream in the Amazon CloudWatch log group that you provide.", - "enum": [ - "OFF", - "BASIC", - "TRANSFER" - ], - "type": "string" - }, - "Mtime": { - "description": "A value that indicates the last time that a file was modified (that is, a file was written to) before the PREPARING phase.", - "enum": [ - "NONE", - "PRESERVE" - ], - "type": "string" - }, - "ObjectTags": { - "description": "A value that determines whether object tags should be read from the source object store and written to the destination object store.", - "enum": [ - "PRESERVE", - "NONE" - ], - "type": "string" - }, - "OverwriteMode": { - "description": "A value that determines whether files at the destination should be overwritten or preserved when copying files.", - "enum": [ - "ALWAYS", - "NEVER" - ], - "type": "string" - }, - "PosixPermissions": { - "description": "A value that determines which users or groups can access a file for a specific purpose such as reading, writing, or execution of the file.", - "enum": [ - "NONE", - "PRESERVE" - ], - "type": "string" - }, - "PreserveDeletedFiles": { - "description": "A value that specifies whether files in the destination that don't exist in the source file system should be preserved.", - "enum": [ - "PRESERVE", - "REMOVE" - ], - "type": "string" - }, - "PreserveDevices": { - "description": "A value that determines whether AWS DataSync should preserve the metadata of block and character devices in the source file system, and recreate the files with that device name and metadata on the destination.", - "enum": [ - "NONE", - "PRESERVE" - ], - "type": "string" - }, - "SecurityDescriptorCopyFlags": { - "description": "A value that determines which components of the SMB security descriptor are copied during transfer.", - "enum": [ - "NONE", - "OWNER_DACL", - "OWNER_DACL_SACL" - ], - "type": "string" - }, - "TaskQueueing": { - "description": "A value that determines whether tasks should be queued before executing the tasks.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "TransferMode": { - "description": "A value that determines whether DataSync transfers only the data and metadata that differ between the source and the destination location, or whether DataSync transfers all the content from the source, without comparing to the destination location.", - "enum": [ - "CHANGED", - "ALL" - ], - "type": "string" - }, - "Uid": { - "description": "The user ID (UID) of the file's owner.", - "enum": [ - "NONE", - "INT_VALUE", - "NAME", - "BOTH" - ], - "type": "string" - }, - "VerifyMode": { - "description": "A value that determines whether a data integrity verification should be performed at the end of a task execution after all data and metadata have been transferred.", - "enum": [ - "POINT_IN_TIME_CONSISTENT", - "ONLY_FILES_TRANSFERRED", - "NONE" - ], - "type": "string" - } - }, - "type": "object" - }, - "SourceNetworkInterfaceArns": { - "description": "The Amazon Resource Names (ARNs) of the source ENIs (Elastic Network Interfaces) that were created for your subnet.", - "insertionOrder": false, - "items": { - "pattern": "^arn:aws[\\-a-z]{0,}:ec2:[a-z\\-0-9]*:[0-9]{12}:network-interface/eni-[0-9a-f]+$", - "type": "string" - }, - "maxItems": 128, - "type": "array" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", - "type": "string" - }, - "Value": { - "description": "The value for an AWS resource tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TaskReportConfig": { - "additionalProperties": false, - "description": "Specifies how you want to configure a task report, which provides detailed information about for your Datasync transfer.", - "properties": { - "Destination": { - "additionalProperties": false, - "description": "Specifies where DataSync uploads your task report.", - "properties": { - "S3": { - "$ref": "#/definitions/TaskReportConfigDestinationS3" - } - }, - "type": "object" - }, - "ObjectVersionIds": { - "description": "Specifies whether your task report includes the new version of each object transferred into an S3 bucket, this only applies if you enable versioning on your bucket.", - "enum": [ - "INCLUDE", - "NONE" - ], - "type": "string" - }, - "OutputType": { - "description": "Specifies the type of task report that you want.", - "enum": [ - "SUMMARY_ONLY", - "STANDARD" - ], - "type": "string" - }, - "Overrides": { - "additionalProperties": false, - "description": "Customizes the reporting level for aspects of your task report. For example, your report might generally only include errors, but you could specify that you want a list of successes and errors just for the files that Datasync attempted to delete in your destination location.", - "properties": { - "Deleted": { - "additionalProperties": false, - "description": "Specifies the level of reporting for the files, objects, and directories that Datasync attempted to delete in your destination location. This only applies if you configure your task to delete data in the destination that isn't in the source.", - "properties": { - "ReportLevel": { - "description": "Specifies whether you want your task report to include only what went wrong with your transfer or a list of what succeeded and didn't.", - "enum": [ - "ERRORS_ONLY", - "SUCCESSES_AND_ERRORS" - ], - "type": "string" - } - }, - "type": "object" - }, - "Skipped": { - "additionalProperties": false, - "description": "Specifies the level of reporting for the files, objects, and directories that Datasync attempted to skip during your transfer.", - "properties": { - "ReportLevel": { - "description": "Specifies whether you want your task report to include only what went wrong with your transfer or a list of what succeeded and didn't.", - "enum": [ - "ERRORS_ONLY", - "SUCCESSES_AND_ERRORS" - ], - "type": "string" - } - }, - "type": "object" - }, - "Transferred": { - "additionalProperties": false, - "description": "Specifies the level of reporting for the files, objects, and directories that Datasync attempted to transfer.", - "properties": { - "ReportLevel": { - "description": "Specifies whether you want your task report to include only what went wrong with your transfer or a list of what succeeded and didn't.", - "enum": [ - "ERRORS_ONLY", - "SUCCESSES_AND_ERRORS" - ], - "type": "string" - } - }, - "type": "object" - }, - "Verified": { - "additionalProperties": false, - "description": "Specifies the level of reporting for the files, objects, and directories that Datasync attempted to verify at the end of your transfer. This only applies if you configure your task to verify data during and after the transfer (which Datasync does by default)", - "properties": { - "ReportLevel": { - "description": "Specifies whether you want your task report to include only what went wrong with your transfer or a list of what succeeded and didn't.", - "enum": [ - "ERRORS_ONLY", - "SUCCESSES_AND_ERRORS" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "ReportLevel": { - "description": "Specifies whether you want your task report to include only what went wrong with your transfer or a list of what succeeded and didn't.", - "enum": [ - "ERRORS_ONLY", - "SUCCESSES_AND_ERRORS" - ], - "type": "string" - } - }, - "required": [ - "Destination", - "OutputType" - ], - "type": "object" - }, - "TaskReportConfigDestinationS3": { - "additionalProperties": false, - "description": "Specifies the Amazon S3 bucket where DataSync uploads your task report.", - "properties": { - "BucketAccessRoleArn": { - "description": "Specifies the Amazon Resource Name (ARN) of the IAM policy that allows Datasync to upload a task report to your S3 bucket.", - "maxLength": 2048, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):iam::[0-9]{12}:role/.*$", - "type": "string" - }, - "S3BucketArn": { - "description": "Specifies the ARN of the S3 bucket where Datasync uploads your report.", - "maxLength": 156, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):(s3|s3-outposts):[a-z\\-0-9]*:[0-9]*:.*$", - "type": "string" - }, - "Subdirectory": { - "description": "Specifies a bucket prefix for your report.", - "maxLength": 4096, - "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\p{Zs}]*$", - "type": "string" - } - }, - "type": "object" - }, - "TaskSchedule": { - "additionalProperties": false, - "description": "Specifies the schedule you want your task to use for repeated executions.", - "properties": { - "ScheduleExpression": { - "description": "A cron expression that specifies when AWS DataSync initiates a scheduled transfer from a source to a destination location", - "maxLength": 256, - "pattern": "^[a-zA-Z0-9\\ \\_\\*\\?\\,\\|\\^\\-\\/\\#\\s\\(\\)\\+]*$", - "type": "string" - }, - "Status": { - "description": "Specifies status of a schedule.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::DataSync::Task.", - "handlers": { - "create": { - "permissions": [ - "datasync:CreateTask", - "datasync:DescribeTask", - "datasync:ListTagsForResource", - "datasync:TagResource", - "s3:ListAllMyBuckets", - "s3:ListBucket", - "s3:GetObject", - "s3:GetObjectVersion", - "ec2:DescribeNetworkInterfaces", - "ec2:CreateNetworkInterface", - "ec2:DeleteNetworkInterface", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:CreateNetworkInterfacePermission", - "fsx:DescribeFileSystems", - "elasticfilesystem:DescribeFileSystems", - "elasticfilesystem:DescribeMountTargets", - "logs:DescribeLogGroups", - "iam:GetRole", - "iam:PassRole", - "iam:AssumeRole" - ] - }, - "delete": { - "permissions": [ - "datasync:DeleteTask", - "ec2:DescribeNetworkInterfaces", - "ec2:DeleteNetworkInterface", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "fsx:DescribeFileSystems", - "elasticfilesystem:DescribeFileSystems", - "elasticfilesystem:DescribeMountTargets", - "iam:GetRole" - ] - }, - "list": { - "permissions": [ - "datasync:ListTasks" - ] - }, - "read": { - "permissions": [ - "datasync:DescribeTask", - "datasync:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "datasync:UpdateTask", - "datasync:DescribeTask", - "datasync:ListTagsForResource", - "datasync:TagResource", - "datasync:UntagResource", - "logs:DescribeLogGroups", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/TaskArn" - ], - "properties": { - "CloudWatchLogGroupArn": { - "description": "The ARN of the Amazon CloudWatch log group that is used to monitor and log events in the task.", - "maxLength": 562, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):logs:[a-z\\-0-9]*:[0-9]{12}:log-group:([^:\\*]*)(:\\*)?$", - "type": "string" - }, - "DestinationLocationArn": { - "description": "The ARN of an AWS storage resource's location.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", - "type": "string" - }, - "DestinationNetworkInterfaceArns": { - "$ref": "#/definitions/DestinationNetworkInterfaceArns" - }, - "Excludes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/FilterRule" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Includes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/FilterRule" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "ManifestConfig": { - "$ref": "#/definitions/ManifestConfig" - }, - "Name": { - "description": "The name of a task. This value is a text reference that is used to identify the task in the console.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", - "type": "string" - }, - "Options": { - "$ref": "#/definitions/Options" - }, - "Schedule": { - "$ref": "#/definitions/TaskSchedule" - }, - "SourceLocationArn": { - "description": "The ARN of the source location for the task.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", - "type": "string" - }, - "SourceNetworkInterfaceArns": { - "$ref": "#/definitions/SourceNetworkInterfaceArns" - }, - "Status": { - "description": "The status of the task that was described.", - "enum": [ - "AVAILABLE", - "CREATING", - "QUEUED", - "RUNNING", - "UNAVAILABLE" - ], - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "TaskArn": { - "description": "The ARN of the task.", - "maxLength": 128, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]*:[0-9]{12}:task/task-[0-9a-f]{17}$", - "type": "string" - }, - "TaskMode": { - "description": "Specifies the task mode for the task.", - "enum": [ - "BASIC", - "ENHANCED" - ], - "type": "string" - }, - "TaskReportConfig": { - "$ref": "#/definitions/TaskReportConfig" - } - }, - "readOnlyProperties": [ - "/properties/TaskArn", - "/properties/Status", - "/properties/SourceNetworkInterfaceArns", - "/properties/DestinationNetworkInterfaceArns" - ], - "required": [ - "DestinationLocationArn", - "SourceLocationArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "datasync:TagResource", - "datasync:UntagResource", - "datasync:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DataSync::Task" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DestinationLocationArn", + "/properties/SourceLocationArn", + "/properties/TaskMode" + ], + "definitions": { + "DestinationNetworkInterfaceArns": { + "description": "The Amazon Resource Names (ARNs) of the destination ENIs (Elastic Network Interfaces) that were created for your subnet.", + "insertionOrder": false, + "items": { + "pattern": "^arn:aws[\\-a-z]{0,}:ec2:[a-z\\-0-9]*:[0-9]{12}:network-interface/eni-[0-9a-f]+$", + "type": "string" + }, + "maxItems": 128, + "type": "array" + }, + "FilterRule": { + "additionalProperties": false, + "description": "Specifies which files folders and objects to include or exclude when transferring files from source to destination.", + "properties": { + "FilterType": { + "description": "The type of filter rule to apply. AWS DataSync only supports the SIMPLE_PATTERN rule type.", + "enum": [ + "SIMPLE_PATTERN" + ], + "maxLength": 128, + "pattern": "^[A-Z0-9_]+$", + "type": "string" + }, + "Value": { + "description": "A single filter string that consists of the patterns to include or exclude. The patterns are delimited by \"|\".", + "maxLength": 409600, + "pattern": "^[^\\x00]+$", + "type": "string" + } + }, + "type": "object" + }, + "ManifestConfig": { + "additionalProperties": false, + "description": "Configures a manifest, which is a list of files or objects that you want DataSync to transfer.", + "properties": { + "Action": { + "description": "Specifies what DataSync uses the manifest for.", + "enum": [ + "TRANSFER" + ], + "type": "string" + }, + "Format": { + "description": "Specifies the file format of your manifest.", + "enum": [ + "CSV" + ], + "type": "string" + }, + "Source": { + "additionalProperties": false, + "description": "Specifies the manifest that you want DataSync to use and where it's hosted.", + "properties": { + "S3": { + "$ref": "#/definitions/ManifestConfigSourceS3" + } + }, + "type": "object" + } + }, + "required": [ + "Source" + ], + "type": "object" + }, + "ManifestConfigSourceS3": { + "additionalProperties": false, + "description": "Specifies the S3 bucket where you're hosting the manifest that you want AWS DataSync to use.", + "properties": { + "BucketAccessRoleArn": { + "description": "Specifies the AWS Identity and Access Management (IAM) role that allows DataSync to access your manifest.", + "maxLength": 2048, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):iam::[0-9]{12}:role/.*$", + "type": "string" + }, + "ManifestObjectPath": { + "description": "Specifies the Amazon S3 object key of your manifest.", + "maxLength": 1024, + "pattern": "^[\\p{L}\\p{M}\\p{Z}\\p{S}\\p{N}\\p{P}\\p{C}]*$", + "type": "string" + }, + "ManifestObjectVersionId": { + "description": "Specifies the object version ID of the manifest that you want DataSync to use.", + "maxLength": 100, + "pattern": "^.+$", + "type": "string" + }, + "S3BucketArn": { + "description": "Specifies the Amazon Resource Name (ARN) of the S3 bucket where you're hosting your manifest.", + "maxLength": 156, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):(s3|s3-outposts):[a-z\\-0-9]*:[0-9]*:.*$", + "type": "string" + } + }, + "type": "object" + }, + "Options": { + "additionalProperties": false, + "description": "Represents the options that are available to control the behavior of a StartTaskExecution operation.", + "properties": { + "Atime": { + "description": "A file metadata value that shows the last time a file was accessed (that is, when the file was read or written to).", + "enum": [ + "NONE", + "BEST_EFFORT" + ], + "type": "string" + }, + "BytesPerSecond": { + "description": "A value that limits the bandwidth used by AWS DataSync.", + "format": "int64", + "minimum": -1, + "type": "integer" + }, + "Gid": { + "description": "The group ID (GID) of the file's owners.", + "enum": [ + "NONE", + "INT_VALUE", + "NAME", + "BOTH" + ], + "type": "string" + }, + "LogLevel": { + "description": "A value that determines the types of logs that DataSync publishes to a log stream in the Amazon CloudWatch log group that you provide.", + "enum": [ + "OFF", + "BASIC", + "TRANSFER" + ], + "type": "string" + }, + "Mtime": { + "description": "A value that indicates the last time that a file was modified (that is, a file was written to) before the PREPARING phase.", + "enum": [ + "NONE", + "PRESERVE" + ], + "type": "string" + }, + "ObjectTags": { + "description": "A value that determines whether object tags should be read from the source object store and written to the destination object store.", + "enum": [ + "PRESERVE", + "NONE" + ], + "type": "string" + }, + "OverwriteMode": { + "description": "A value that determines whether files at the destination should be overwritten or preserved when copying files.", + "enum": [ + "ALWAYS", + "NEVER" + ], + "type": "string" + }, + "PosixPermissions": { + "description": "A value that determines which users or groups can access a file for a specific purpose such as reading, writing, or execution of the file.", + "enum": [ + "NONE", + "PRESERVE" + ], + "type": "string" + }, + "PreserveDeletedFiles": { + "description": "A value that specifies whether files in the destination that don't exist in the source file system should be preserved.", + "enum": [ + "PRESERVE", + "REMOVE" + ], + "type": "string" + }, + "PreserveDevices": { + "description": "A value that determines whether AWS DataSync should preserve the metadata of block and character devices in the source file system, and recreate the files with that device name and metadata on the destination.", + "enum": [ + "NONE", + "PRESERVE" + ], + "type": "string" + }, + "SecurityDescriptorCopyFlags": { + "description": "A value that determines which components of the SMB security descriptor are copied during transfer.", + "enum": [ + "NONE", + "OWNER_DACL", + "OWNER_DACL_SACL" + ], + "type": "string" + }, + "TaskQueueing": { + "description": "A value that determines whether tasks should be queued before executing the tasks.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "TransferMode": { + "description": "A value that determines whether DataSync transfers only the data and metadata that differ between the source and the destination location, or whether DataSync transfers all the content from the source, without comparing to the destination location.", + "enum": [ + "CHANGED", + "ALL" + ], + "type": "string" + }, + "Uid": { + "description": "The user ID (UID) of the file's owner.", + "enum": [ + "NONE", + "INT_VALUE", + "NAME", + "BOTH" + ], + "type": "string" + }, + "VerifyMode": { + "description": "A value that determines whether a data integrity verification should be performed at the end of a task execution after all data and metadata have been transferred.", + "enum": [ + "POINT_IN_TIME_CONSISTENT", + "ONLY_FILES_TRANSFERRED", + "NONE" + ], + "type": "string" + } + }, + "type": "object" + }, + "SourceNetworkInterfaceArns": { + "description": "The Amazon Resource Names (ARNs) of the source ENIs (Elastic Network Interfaces) that were created for your subnet.", + "insertionOrder": false, + "items": { + "pattern": "^arn:aws[\\-a-z]{0,}:ec2:[a-z\\-0-9]*:[0-9]{12}:network-interface/eni-[0-9a-f]+$", + "type": "string" + }, + "maxItems": 128, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:/-]+$", + "type": "string" + }, + "Value": { + "description": "The value for an AWS resource tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TaskReportConfig": { + "additionalProperties": false, + "description": "Specifies how you want to configure a task report, which provides detailed information about for your Datasync transfer.", + "properties": { + "Destination": { + "additionalProperties": false, + "description": "Specifies where DataSync uploads your task report.", + "properties": { + "S3": { + "$ref": "#/definitions/TaskReportConfigDestinationS3" + } + }, + "type": "object" + }, + "ObjectVersionIds": { + "description": "Specifies whether your task report includes the new version of each object transferred into an S3 bucket, this only applies if you enable versioning on your bucket.", + "enum": [ + "INCLUDE", + "NONE" + ], + "type": "string" + }, + "OutputType": { + "description": "Specifies the type of task report that you want.", + "enum": [ + "SUMMARY_ONLY", + "STANDARD" + ], + "type": "string" + }, + "Overrides": { + "additionalProperties": false, + "description": "Customizes the reporting level for aspects of your task report. For example, your report might generally only include errors, but you could specify that you want a list of successes and errors just for the files that Datasync attempted to delete in your destination location.", + "properties": { + "Deleted": { + "additionalProperties": false, + "description": "Specifies the level of reporting for the files, objects, and directories that Datasync attempted to delete in your destination location. This only applies if you configure your task to delete data in the destination that isn't in the source.", + "properties": { + "ReportLevel": { + "description": "Specifies whether you want your task report to include only what went wrong with your transfer or a list of what succeeded and didn't.", + "enum": [ + "ERRORS_ONLY", + "SUCCESSES_AND_ERRORS" + ], + "type": "string" + } + }, + "type": "object" + }, + "Skipped": { + "additionalProperties": false, + "description": "Specifies the level of reporting for the files, objects, and directories that Datasync attempted to skip during your transfer.", + "properties": { + "ReportLevel": { + "description": "Specifies whether you want your task report to include only what went wrong with your transfer or a list of what succeeded and didn't.", + "enum": [ + "ERRORS_ONLY", + "SUCCESSES_AND_ERRORS" + ], + "type": "string" + } + }, + "type": "object" + }, + "Transferred": { + "additionalProperties": false, + "description": "Specifies the level of reporting for the files, objects, and directories that Datasync attempted to transfer.", + "properties": { + "ReportLevel": { + "description": "Specifies whether you want your task report to include only what went wrong with your transfer or a list of what succeeded and didn't.", + "enum": [ + "ERRORS_ONLY", + "SUCCESSES_AND_ERRORS" + ], + "type": "string" + } + }, + "type": "object" + }, + "Verified": { + "additionalProperties": false, + "description": "Specifies the level of reporting for the files, objects, and directories that Datasync attempted to verify at the end of your transfer. This only applies if you configure your task to verify data during and after the transfer (which Datasync does by default)", + "properties": { + "ReportLevel": { + "description": "Specifies whether you want your task report to include only what went wrong with your transfer or a list of what succeeded and didn't.", + "enum": [ + "ERRORS_ONLY", + "SUCCESSES_AND_ERRORS" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "ReportLevel": { + "description": "Specifies whether you want your task report to include only what went wrong with your transfer or a list of what succeeded and didn't.", + "enum": [ + "ERRORS_ONLY", + "SUCCESSES_AND_ERRORS" + ], + "type": "string" + } + }, + "required": [ + "Destination", + "OutputType" + ], + "type": "object" + }, + "TaskReportConfigDestinationS3": { + "additionalProperties": false, + "description": "Specifies the Amazon S3 bucket where DataSync uploads your task report.", + "properties": { + "BucketAccessRoleArn": { + "description": "Specifies the Amazon Resource Name (ARN) of the IAM policy that allows Datasync to upload a task report to your S3 bucket.", + "maxLength": 2048, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):iam::[0-9]{12}:role/.*$", + "type": "string" + }, + "S3BucketArn": { + "description": "Specifies the ARN of the S3 bucket where Datasync uploads your report.", + "maxLength": 156, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):(s3|s3-outposts):[a-z\\-0-9]*:[0-9]*:.*$", + "type": "string" + }, + "Subdirectory": { + "description": "Specifies a bucket prefix for your report.", + "maxLength": 4096, + "pattern": "^[a-zA-Z0-9_\\-\\+\\./\\(\\)\\p{Zs}]*$", + "type": "string" + } + }, + "type": "object" + }, + "TaskSchedule": { + "additionalProperties": false, + "description": "Specifies the schedule you want your task to use for repeated executions.", + "properties": { + "ScheduleExpression": { + "description": "A cron expression that specifies when AWS DataSync initiates a scheduled transfer from a source to a destination location", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\ \\_\\*\\?\\,\\|\\^\\-\\/\\#\\s\\(\\)\\+]*$", + "type": "string" + }, + "Status": { + "description": "Specifies status of a schedule.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::DataSync::Task.", + "handlers": { + "create": { + "permissions": [ + "datasync:CreateTask", + "datasync:DescribeTask", + "datasync:ListTagsForResource", + "datasync:TagResource", + "s3:ListAllMyBuckets", + "s3:ListBucket", + "s3:GetObject", + "s3:GetObjectVersion", + "ec2:DescribeNetworkInterfaces", + "ec2:CreateNetworkInterface", + "ec2:DeleteNetworkInterface", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:CreateNetworkInterfacePermission", + "fsx:DescribeFileSystems", + "elasticfilesystem:DescribeFileSystems", + "elasticfilesystem:DescribeMountTargets", + "logs:DescribeLogGroups", + "iam:GetRole", + "iam:PassRole", + "iam:AssumeRole" + ] + }, + "delete": { + "permissions": [ + "datasync:DeleteTask", + "ec2:DescribeNetworkInterfaces", + "ec2:DeleteNetworkInterface", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "fsx:DescribeFileSystems", + "elasticfilesystem:DescribeFileSystems", + "elasticfilesystem:DescribeMountTargets", + "iam:GetRole" + ] + }, + "list": { + "permissions": [ + "datasync:ListTasks" + ] + }, + "read": { + "permissions": [ + "datasync:DescribeTask", + "datasync:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "datasync:UpdateTask", + "datasync:DescribeTask", + "datasync:ListTagsForResource", + "datasync:TagResource", + "datasync:UntagResource", + "logs:DescribeLogGroups", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/TaskArn" + ], + "properties": { + "CloudWatchLogGroupArn": { + "description": "The ARN of the Amazon CloudWatch log group that is used to monitor and log events in the task.", + "maxLength": 562, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):logs:[a-z\\-0-9]*:[0-9]{12}:log-group:([^:\\*]*)(:\\*)?$", + "type": "string" + }, + "DestinationLocationArn": { + "description": "The ARN of an AWS storage resource's location.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", + "type": "string" + }, + "DestinationNetworkInterfaceArns": { + "$ref": "#/definitions/DestinationNetworkInterfaceArns" + }, + "Excludes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/FilterRule" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Includes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/FilterRule" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "ManifestConfig": { + "$ref": "#/definitions/ManifestConfig" + }, + "Name": { + "description": "The name of a task. This value is a text reference that is used to identify the task in the console.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s+=._:@/-]+$", + "type": "string" + }, + "Options": { + "$ref": "#/definitions/Options" + }, + "Schedule": { + "$ref": "#/definitions/TaskSchedule" + }, + "SourceLocationArn": { + "description": "The ARN of the source location for the task.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]+:[0-9]{12}:location/loc-[0-9a-z]{17}$", + "type": "string" + }, + "SourceNetworkInterfaceArns": { + "$ref": "#/definitions/SourceNetworkInterfaceArns" + }, + "Status": { + "description": "The status of the task that was described.", + "enum": [ + "AVAILABLE", + "CREATING", + "QUEUED", + "RUNNING", + "UNAVAILABLE" + ], + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "TaskArn": { + "description": "The ARN of the task.", + "maxLength": 128, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):datasync:[a-z\\-0-9]*:[0-9]{12}:task/task-[0-9a-f]{17}$", + "type": "string" + }, + "TaskMode": { + "description": "Specifies the task mode for the task.", + "enum": [ + "BASIC", + "ENHANCED" + ], + "type": "string" + }, + "TaskReportConfig": { + "$ref": "#/definitions/TaskReportConfig" + } + }, + "readOnlyProperties": [ + "/properties/TaskArn", + "/properties/Status", + "/properties/SourceNetworkInterfaceArns", + "/properties/DestinationNetworkInterfaceArns" + ], + "required": [ + "DestinationLocationArn", + "SourceLocationArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datasync.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "datasync:TagResource", + "datasync:UntagResource", + "datasync:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataSync::Task" +} diff --git a/src/schema/aws-datazone-connection.json b/src/schema/aws-datazone-connection.json new file mode 100644 index 00000000..3e564141 --- /dev/null +++ b/src/schema/aws-datazone-connection.json @@ -0,0 +1,888 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainIdentifier", + "/properties/EnvironmentIdentifier", + "/properties/Name" + ], + "definitions": { + "AthenaPropertiesInput": { + "additionalProperties": false, + "description": "Athena Properties Input", + "properties": { + "WorkgroupName": { + "maxLength": 128, + "pattern": "^[a-zA-Z0-9._-]+$", + "type": "string" + } + }, + "required": [ + "WorkgroupName" + ], + "type": "object" + }, + "AuthenticationConfigurationInput": { + "additionalProperties": false, + "description": "Authentication Configuration Input", + "properties": { + "AuthenticationType": { + "$ref": "#/definitions/AuthenticationType" + }, + "BasicAuthenticationCredentials": { + "$ref": "#/definitions/BasicAuthenticationCredentials" + }, + "CustomAuthenticationCredentials": { + "$ref": "#/definitions/CredentialMap" + }, + "KmsKeyArn": { + "pattern": "^$|arn:aws[a-z0-9-]*:kms:.*$", + "type": "string" + }, + "OAuth2Properties": { + "$ref": "#/definitions/OAuth2Properties" + }, + "SecretArn": { + "pattern": "^arn:aws(-(cn|us-gov|iso(-[bef])?))?:secretsmanager:.*$", + "type": "string" + } + }, + "type": "object" + }, + "AuthenticationType": { + "description": "Authentication Type", + "enum": [ + "BASIC", + "OAUTH2", + "CUSTOM" + ], + "type": "string" + }, + "AuthorizationCodeProperties": { + "additionalProperties": false, + "description": "Authorization Code Properties", + "properties": { + "AuthorizationCode": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "RedirectUri": { + "maxLength": 512, + "type": "string" + } + }, + "type": "object" + }, + "AwsLocation": { + "additionalProperties": false, + "description": "AWS Location of project", + "properties": { + "AccessRole": { + "maxLength": 2048, + "pattern": "^arn:aws[^:]*:iam::\\d{12}:(role|role/service-role)/[\\w+=,.@-]*$", + "type": "string" + }, + "AwsAccountId": { + "pattern": "^\\d{12}$", + "type": "string" + }, + "AwsRegion": { + "pattern": "^[a-z]{2}-[a-z]{4,10}-\\d$", + "type": "string" + }, + "IamConnectionId": { + "maxLength": 128, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "BasicAuthenticationCredentials": { + "additionalProperties": false, + "description": "Basic Authentication Credentials", + "properties": { + "Password": { + "maxLength": 512, + "pattern": "^.*$", + "type": "string" + }, + "UserName": { + "maxLength": 512, + "pattern": "^\\S+$", + "type": "string" + } + }, + "type": "object" + }, + "ComputeEnvironments": { + "description": "Compute Environments", + "type": "string" + }, + "ConnectionProperties": { + "additionalProperties": false, + "description": "Connection Properties", + "patternProperties": { + ".+": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "ConnectionPropertiesInput": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "AthenaProperties": { + "$ref": "#/definitions/AthenaPropertiesInput" + } + }, + "required": [ + "AthenaProperties" + ], + "title": "AthenaProperties", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "GlueProperties": { + "$ref": "#/definitions/GluePropertiesInput" + } + }, + "required": [ + "GlueProperties" + ], + "title": "GlueProperties", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "HyperPodProperties": { + "$ref": "#/definitions/HyperPodPropertiesInput" + } + }, + "required": [ + "HyperPodProperties" + ], + "title": "HyperPodProperties", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "IamProperties": { + "$ref": "#/definitions/IamPropertiesInput" + } + }, + "required": [ + "IamProperties" + ], + "title": "IamProperties", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "RedshiftProperties": { + "$ref": "#/definitions/RedshiftPropertiesInput" + } + }, + "required": [ + "RedshiftProperties" + ], + "title": "RedshiftProperties", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "SparkEmrProperties": { + "$ref": "#/definitions/SparkEmrPropertiesInput" + } + }, + "required": [ + "SparkEmrProperties" + ], + "title": "SparkEmrProperties", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "SparkGlueProperties": { + "$ref": "#/definitions/SparkGluePropertiesInput" + } + }, + "required": [ + "SparkGlueProperties" + ], + "title": "SparkGlueProperties", + "type": "object" + } + ] + }, + "ConnectionStatus": { + "description": "Connection Status", + "enum": [ + "CREATING", + "CREATE_FAILED", + "DELETING", + "DELETE_FAILED", + "READY", + "UPDATING", + "UPDATE_FAILED", + "DELETED" + ], + "type": "string" + }, + "ConnectionType": { + "description": "Connection Type", + "type": "string" + }, + "CredentialMap": { + "additionalProperties": false, + "description": "Credential Map", + "patternProperties": { + ".+": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "GlueConnectionInput": { + "additionalProperties": false, + "description": "Glue Connection Input", + "properties": { + "AthenaProperties": { + "$ref": "#/definitions/PropertyMap" + }, + "AuthenticationConfiguration": { + "$ref": "#/definitions/AuthenticationConfigurationInput" + }, + "ConnectionProperties": { + "$ref": "#/definitions/ConnectionProperties" + }, + "ConnectionType": { + "$ref": "#/definitions/GlueConnectionType" + }, + "Description": { + "maxLength": 2048, + "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFF\\r\\n\\t]*$", + "type": "string" + }, + "MatchCriteria": { + "maxLength": 10, + "minLength": 0, + "type": "string" + }, + "Name": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFF\\t]*$", + "type": "string" + }, + "PhysicalConnectionRequirements": { + "$ref": "#/definitions/PhysicalConnectionRequirements" + }, + "PythonProperties": { + "$ref": "#/definitions/PropertyMap" + }, + "SparkProperties": { + "$ref": "#/definitions/PropertyMap" + }, + "ValidateCredentials": { + "type": "boolean" + }, + "ValidateForComputeEnvironments": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ComputeEnvironments" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "GlueConnectionType": { + "description": "Glue Connection Type", + "type": "string" + }, + "GlueOAuth2Credentials": { + "additionalProperties": false, + "description": "Glue OAuth2 Credentials", + "properties": { + "AccessToken": { + "maxLength": 4096, + "pattern": "^[\\x20-\\x7E]*$", + "type": "string" + }, + "JwtToken": { + "maxLength": 8000, + "pattern": "^([a-zA-Z0-9_=]+)\\.([a-zA-Z0-9_=]+)\\.([a-zA-Z0-9_\\-\\+\\/=]*)$", + "type": "string" + }, + "RefreshToken": { + "maxLength": 4096, + "pattern": "^[\\x20-\\x7E]*$", + "type": "string" + }, + "UserManagedClientApplicationClientSecret": { + "maxLength": 512, + "pattern": "^[\\x20-\\x7E]*$", + "type": "string" + } + }, + "type": "object" + }, + "GluePropertiesInput": { + "additionalProperties": false, + "description": "Glue Properties Input", + "properties": { + "GlueConnectionInput": { + "$ref": "#/definitions/GlueConnectionInput" + } + }, + "type": "object" + }, + "HyperPodPropertiesInput": { + "additionalProperties": false, + "description": "HyperPod Properties Input", + "properties": { + "ClusterName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "type": "string" + } + }, + "required": [ + "ClusterName" + ], + "type": "object" + }, + "IamPropertiesInput": { + "additionalProperties": false, + "description": "IAM Properties Input", + "properties": { + "GlueLineageSyncEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "LineageSyncSchedule": { + "additionalProperties": false, + "description": "Lineage Sync Schedule", + "properties": { + "Schedule": { + "pattern": "^cron\\((\\b[0-5]?[0-9]\\b) (\\b2[0-3]\\b|\\b[0-1]?[0-9]\\b) ([-?*,/\\dLW]){1,83} ([-*,/\\d]|[a-zA-Z]{3}){1,23} ([-?#*,/\\dL]|[a-zA-Z]{3}){1,13} ([^\\)]+)\\)$", + "type": "string" + } + }, + "type": "object" + }, + "OAuth2ClientApplication": { + "additionalProperties": false, + "description": "OAuth2 Client Application", + "properties": { + "AWSManagedClientApplicationReference": { + "maxLength": 2048, + "pattern": "^\\S+$", + "type": "string" + }, + "UserManagedClientApplicationClientId": { + "maxLength": 2048, + "pattern": "^\\S+$", + "type": "string" + } + }, + "type": "object" + }, + "OAuth2GrantType": { + "description": "OAuth2 Grant Type", + "enum": [ + "AUTHORIZATION_CODE", + "CLIENT_CREDENTIALS", + "JWT_BEARER" + ], + "type": "string" + }, + "OAuth2Properties": { + "additionalProperties": false, + "description": "OAuth2 Properties", + "properties": { + "AuthorizationCodeProperties": { + "$ref": "#/definitions/AuthorizationCodeProperties" + }, + "OAuth2ClientApplication": { + "$ref": "#/definitions/OAuth2ClientApplication" + }, + "OAuth2Credentials": { + "$ref": "#/definitions/GlueOAuth2Credentials" + }, + "OAuth2GrantType": { + "$ref": "#/definitions/OAuth2GrantType" + }, + "TokenUrl": { + "maxLength": 256, + "pattern": "^(https?)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]$", + "type": "string" + }, + "TokenUrlParametersMap": { + "$ref": "#/definitions/TokenUrlParametersMap" + } + }, + "type": "object" + }, + "PhysicalConnectionRequirements": { + "additionalProperties": false, + "description": "Physical Connection Requirements", + "properties": { + "AvailabilityZone": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "SecurityGroupIdList": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + }, + "SubnetId": { + "maxLength": 32, + "pattern": "^subnet-[a-z0-9]+$", + "type": "string" + }, + "SubnetIdList": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "^subnet-[a-z0-9]+$", + "type": "string" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "PropertyMap": { + "additionalProperties": false, + "description": "Property Map", + "patternProperties": { + "^[\\u0020-\\uD7FF\\uE000-\\uFFFF\\t]*$": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFF\\t]*$", + "type": "string" + } + }, + "type": "object" + }, + "RedshiftCredentials": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "SecretArn": { + "maxLength": 2048, + "pattern": "^arn:aws[^:]*:secretsmanager:[a-z]{2}-?(iso|gov)?-{1}[a-z]*-{1}[0-9]:\\d{12}:secret:.*$", + "type": "string" + } + }, + "required": [ + "SecretArn" + ], + "title": "SecretArn", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "UsernamePassword": { + "$ref": "#/definitions/UsernamePassword" + } + }, + "required": [ + "UsernamePassword" + ], + "title": "UsernamePassword", + "type": "object" + } + ] + }, + "RedshiftLineageSyncConfigurationInput": { + "additionalProperties": false, + "description": "Redshift Lineage Sync Configuration Input", + "properties": { + "Enabled": { + "type": "boolean" + }, + "Schedule": { + "$ref": "#/definitions/LineageSyncSchedule" + } + }, + "type": "object" + }, + "RedshiftPropertiesInput": { + "additionalProperties": false, + "description": "Redshift Properties Input", + "properties": { + "Credentials": { + "$ref": "#/definitions/RedshiftCredentials" + }, + "DatabaseName": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-z0-9]+$", + "type": "string" + }, + "Host": { + "maxLength": 256, + "pattern": "^[\\S]*$", + "type": "string" + }, + "LineageSync": { + "$ref": "#/definitions/RedshiftLineageSyncConfigurationInput" + }, + "Port": { + "maximum": 65535, + "minimum": 0, + "type": "number" + }, + "Storage": { + "$ref": "#/definitions/RedshiftStorageProperties" + } + }, + "type": "object" + }, + "RedshiftStorageProperties": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "ClusterName": { + "maxLength": 63, + "minLength": 0, + "pattern": "^[a-z0-9-]+$", + "type": "string" + } + }, + "required": [ + "ClusterName" + ], + "title": "ClusterName", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "WorkgroupName": { + "maxLength": 64, + "minLength": 3, + "pattern": "^[a-z0-9-]+$", + "type": "string" + } + }, + "required": [ + "WorkgroupName" + ], + "title": "WorkgroupName", + "type": "object" + } + ] + }, + "SparkEmrPropertiesInput": { + "additionalProperties": false, + "description": "Spark EMR Properties Input.", + "properties": { + "ComputeArn": { + "maxLength": 2048, + "pattern": "^arn:aws(-(cn|us-gov|iso(-[bef])?))?:(elasticmapreduce|emr-serverless):.*", + "type": "string" + }, + "InstanceProfileArn": { + "maxLength": 2048, + "pattern": "^arn:aws[^:]*:iam::\\d{12}:(role|role/service-role)/[\\w+=,.@-]*$", + "type": "string" + }, + "JavaVirtualEnv": { + "maxLength": 256, + "pattern": "^[\\S]*$", + "type": "string" + }, + "LogUri": { + "maxLength": 2048, + "pattern": "^s3://.+$", + "type": "string" + }, + "PythonVirtualEnv": { + "maxLength": 256, + "pattern": "^[\\S]*$", + "type": "string" + }, + "RuntimeRole": { + "maxLength": 2048, + "pattern": "^arn:aws[^:]*:iam::\\d{12}:(role|role/service-role)/[\\w+=,.@-]*$", + "type": "string" + }, + "TrustedCertificatesS3Uri": { + "maxLength": 2048, + "pattern": "^s3://.+$", + "type": "string" + } + }, + "type": "object" + }, + "SparkGlueArgs": { + "additionalProperties": false, + "description": "Spark Glue Args.", + "properties": { + "Connection": { + "maxLength": 128, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SparkGluePropertiesInput": { + "additionalProperties": false, + "description": "Spark Glue Properties Input.", + "properties": { + "AdditionalArgs": { + "$ref": "#/definitions/SparkGlueArgs" + }, + "GlueConnectionName": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\S]*$", + "type": "string" + }, + "GlueVersion": { + "maxLength": 256, + "pattern": "^\\w+\\.\\w+$", + "type": "string" + }, + "IdleTimeout": { + "maximum": 3000, + "minimum": 1, + "type": "number" + }, + "JavaVirtualEnv": { + "maxLength": 256, + "pattern": "^[\\S]*$", + "type": "string" + }, + "NumberOfWorkers": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "PythonVirtualEnv": { + "maxLength": 256, + "pattern": "^[\\S]*$", + "type": "string" + }, + "WorkerType": { + "maxLength": 256, + "pattern": "^[G|Z].*$", + "type": "string" + } + }, + "type": "object" + }, + "TokenUrlParametersMap": { + "additionalProperties": false, + "description": "The token URL parameters.", + "patternProperties": { + ".+": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "UsernamePassword": { + "additionalProperties": false, + "description": "The username and password to be used for authentication.", + "properties": { + "Password": { + "maxLength": 64, + "pattern": "^[\\S]*$", + "type": "string" + }, + "Username": { + "maxLength": 127, + "minLength": 1, + "pattern": "^[\\S]*$", + "type": "string" + } + }, + "required": [ + "Password", + "Username" + ], + "type": "object" + } + }, + "description": "Connections enables users to connect their DataZone resources (domains, projects, and environments) to external resources/services (data, compute, etc)", + "handlers": { + "create": { + "permissions": [ + "datazone:CreateConnection", + "datazone:GetConnection", + "datazone:DeleteConnection" + ] + }, + "delete": { + "permissions": [ + "datazone:DeleteConnection", + "datazone:GetConnection" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainIdentifier": { + "$ref": "resource-schema.json#/properties/DomainIdentifier" + }, + "ProjectIdentifier": { + "$ref": "resource-schema.json#/properties/ProjectId" + } + }, + "required": [ + "DomainIdentifier" + ] + }, + "permissions": [ + "datazone:ListConnections" + ] + }, + "read": { + "permissions": [ + "datazone:GetConnection" + ] + }, + "update": { + "permissions": [ + "datazone:UpdateConnection", + "datazone:GetConnection", + "datazone:DeleteConnection" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId", + "/properties/ConnectionId" + ], + "properties": { + "AwsLocation": { + "$ref": "#/definitions/AwsLocation" + }, + "ConnectionId": { + "description": "The ID of the connection.", + "maxLength": 128, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Description": { + "description": "The description of the connection.", + "maxLength": 128, + "pattern": "^[\\S\\s]*$", + "type": "string" + }, + "DomainId": { + "description": "The ID of the domain in which the connection is created.", + "pattern": "^dzd[_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "DomainIdentifier": { + "description": "The identifier of the domain in which the connection is created.", + "pattern": "^dzd[_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "DomainUnitId": { + "description": "The ID of the domain unit in which the connection is created.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-z0-9_\\-]+$", + "type": "string" + }, + "EnvironmentId": { + "description": "The ID of the environment in which the connection is created.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "EnvironmentIdentifier": { + "description": "The identifier of the environment in which the connection is created.", + "type": "string" + }, + "EnvironmentUserRole": { + "description": "The role of the user in the environment.", + "type": "string" + }, + "Name": { + "description": "The name of the connection.", + "maxLength": 64, + "pattern": "^[\\w][\\w\\.\\-\\_]*$", + "type": "string" + }, + "ProjectId": { + "description": "The ID of the project in which the connection is created.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "Props": { + "$ref": "#/definitions/ConnectionPropertiesInput" + }, + "Type": { + "$ref": "#/definitions/ConnectionType" + } + }, + "readOnlyProperties": [ + "/properties/ConnectionId", + "/properties/DomainId", + "/properties/DomainUnitId", + "/properties/EnvironmentId", + "/properties/EnvironmentUserRole", + "/properties/ProjectId", + "/properties/Type" + ], + "required": [ + "DomainIdentifier", + "EnvironmentIdentifier", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::DataZone::Connection", + "writeOnlyProperties": [ + "/properties/AwsLocation", + "/properties/DomainIdentifier", + "/properties/EnvironmentIdentifier", + "/properties/Props" + ] +} diff --git a/src/schema/aws-datazone-datasource.json b/src/schema/aws-datazone-datasource.json index 94ac17c5..71b1fa7e 100644 --- a/src/schema/aws-datazone-datasource.json +++ b/src/schema/aws-datazone-datasource.json @@ -1,543 +1,597 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/EnvironmentIdentifier", - "/properties/DomainIdentifier", - "/properties/ProjectIdentifier", - "/properties/Type" - ], - "definitions": { - "AccountId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^\\d{12}$", - "type": "string" - }, - "DataAccessRole": { - "description": "The data access role included in the configuration details of the AWS Glue data source.", - "pattern": "^arn:aws[^:]*:iam::\\d{12}:(role|role/service-role)/[\\w+=,.@-]{1,128}$", - "type": "string" - }, - "DataSourceConfigurationInput": { - "description": "Specifies the configuration of the data source. It can be set to either glueRunConfiguration or redshiftRunConfiguration.", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "GlueRunConfiguration": { - "$ref": "#/definitions/GlueRunConfigurationInput" - } - }, - "title": "GlueRunConfiguration", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "RedshiftRunConfiguration": { - "$ref": "#/definitions/RedshiftRunConfigurationInput" - } - }, - "title": "RedshiftRunConfiguration", - "type": "object" - } - ] - }, - "DataSourceStatus": { - "description": "The status of the data source.", - "enum": [ - "CREATING", - "FAILED_CREATION", - "READY", - "UPDATING", - "FAILED_UPDATE", - "RUNNING", - "DELETING", - "FAILED_DELETION" - ], - "type": "string" - }, - "EnableSetting": { - "description": "Specifies whether the data source is enabled.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "FilterExpression": { - "additionalProperties": false, - "description": "The search filter expression.", - "properties": { - "Expression": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/FilterExpressionType" - } - }, - "required": [ - "Expression", - "Type" - ], - "type": "object" - }, - "FilterExpressionType": { - "description": "The search filter expression type.", - "enum": [ - "INCLUDE", - "EXCLUDE" - ], - "type": "string" - }, - "FormInput": { - "additionalProperties": false, - "description": "The details of a metadata form.", - "properties": { - "Content": { - "description": "The content of the metadata form.", - "maxLength": 75000, - "type": "string" - }, - "FormName": { - "$ref": "#/definitions/FormName", - "description": "The name of the metadata form." - }, - "TypeIdentifier": { - "description": "The ID of the metadata form type.", - "maxLength": 385, - "minLength": 1, - "pattern": "^(?!\\.)[\\w\\.]*\\w$", - "type": "string" - }, - "TypeRevision": { - "$ref": "#/definitions/TypeRevision", - "description": "The revision of the metadata form type." - } - }, - "required": [ - "FormName" - ], - "type": "object" - }, - "FormName": { - "description": "The name of the metadata form.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?![0-9_])\\w+$|^_\\w*[a-zA-Z0-9]\\w*$", - "type": "string" - }, - "GlueRunConfigurationInput": { - "additionalProperties": false, - "properties": { - "AutoImportDataQualityResult": { - "description": "Specifies whether to automatically import data quality metrics as part of the data source run.", - "type": "boolean" - }, - "DataAccessRole": { - "$ref": "#/definitions/DataAccessRole", - "description": "The data access role included in the configuration details of the AWS Glue data source." - }, - "RelationalFilterConfigurations": { - "description": "The relational filter configurations included in the configuration details of the AWS Glue data source.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RelationalFilterConfiguration" - }, - "type": "array" - } - }, - "required": [ - "RelationalFilterConfigurations" - ], - "type": "object" - }, - "RecommendationConfiguration": { - "additionalProperties": false, - "description": "The recommendation to be updated as part of the UpdateDataSource action.", - "properties": { - "EnableBusinessNameGeneration": { - "description": "Specifies whether automatic business name generation is to be enabled or not as part of the recommendation configuration.", - "type": "boolean" - } - }, - "type": "object" - }, - "RedshiftClusterStorage": { - "additionalProperties": false, - "description": "The name of an Amazon Redshift cluster.", - "properties": { - "ClusterName": { - "description": "The name of an Amazon Redshift cluster.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[0-9a-z].[a-z0-9\\-]*$", - "type": "string" - } - }, - "required": [ - "ClusterName" - ], - "type": "object" - }, - "RedshiftCredentialConfiguration": { - "additionalProperties": false, - "description": "The ARN of a secret manager for an Amazon Redshift cluster.", - "properties": { - "SecretManagerArn": { - "description": "The ARN of a secret manager for an Amazon Redshift cluster.", - "maxLength": 256, - "pattern": "^arn:aws[^:]*:secretsmanager:[a-z]{2}-?(iso|gov)?-{1}[a-z]*-{1}[0-9]:\\d{12}:secret:.*$", - "type": "string" - } - }, - "required": [ - "SecretManagerArn" - ], - "type": "object" - }, - "RedshiftRunConfigurationInput": { - "additionalProperties": false, - "description": "The configuration details of the Amazon Redshift data source.", - "properties": { - "DataAccessRole": { - "$ref": "#/definitions/DataAccessRole", - "description": "The data access role included in the configuration details of the Amazon Redshift data source." - }, - "RedshiftCredentialConfiguration": { - "$ref": "#/definitions/RedshiftCredentialConfiguration", - "description": "The details of the credentials required to access an Amazon Redshift cluster." - }, - "RedshiftStorage": { - "$ref": "#/definitions/RedshiftStorage", - "description": "The details of the Amazon Redshift storage as part of the configuration of an Amazon Redshift data source run." - }, - "RelationalFilterConfigurations": { - "$ref": "#/definitions/RelationalFilterConfigurations" - } - }, - "required": [ - "RedshiftCredentialConfiguration", - "RedshiftStorage", - "RelationalFilterConfigurations" - ], - "type": "object" - }, - "RedshiftServerlessStorage": { - "additionalProperties": false, - "description": "The details of the Amazon Redshift Serverless workgroup storage.", - "properties": { - "WorkgroupName": { - "description": "The name of the Amazon Redshift Serverless workgroup.", - "maxLength": 64, - "minLength": 3, - "pattern": "^[a-z0-9-]+$", - "type": "string" - } - }, - "required": [ - "WorkgroupName" - ], - "type": "object" - }, - "RedshiftStorage": { - "description": "The details of the Amazon Redshift storage as part of the configuration of an Amazon Redshift data source run.", - "oneOf": [ - { - "additionalProperties": false, - "description": "The details of the Amazon Redshift cluster source.", - "properties": { - "RedshiftClusterSource": { - "$ref": "#/definitions/RedshiftClusterStorage" - } - }, - "required": [ - "RedshiftClusterSource" - ], - "title": "RedshiftClusterSource", - "type": "object" - }, - { - "additionalProperties": false, - "description": "The details of the Amazon Redshift Serverless workgroup source.", - "properties": { - "RedshiftServerlessSource": { - "$ref": "#/definitions/RedshiftServerlessStorage" - } - }, - "required": [ - "RedshiftServerlessSource" - ], - "title": "RedshiftServerlessSource", - "type": "object" - } - ] - }, - "Region": { - "maxLength": 16, - "minLength": 4, - "pattern": "[a-z]{2}-?(iso|gov)?-{1}[a-z]*-{1}[0-9]", - "type": "string" - }, - "RelationalFilterConfiguration": { - "additionalProperties": false, - "description": "The relational filter configuration for the data source.", - "properties": { - "DatabaseName": { - "description": "The database name specified in the relational filter configuration for the data source.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "FilterExpressions": { - "description": "The filter expressions specified in the relational filter configuration for the data source.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/FilterExpression" - }, - "type": "array" - }, - "SchemaName": { - "description": "The schema name specified in the relational filter configuration for the data source.", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DatabaseName" - ], - "type": "object" - }, - "RelationalFilterConfigurations": { - "description": "The relational filter configurations included in the configuration details of the Amazon Redshift data source.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RelationalFilterConfiguration" - }, - "type": "array" - }, - "ScheduleConfiguration": { - "additionalProperties": false, - "description": "The schedule of the data source runs.", - "properties": { - "Schedule": { - "description": "The schedule of the data source runs.", - "maxLength": 256, - "minLength": 1, - "pattern": "cron\\((\\b[0-5]?[0-9]\\b) (\\b2[0-3]\\b|\\b[0-1]?[0-9]\\b) (.*){1,5} (.*){1,5} (.*){1,5} (.*){1,5}\\)", - "type": "string" - }, - "Timezone": { - "$ref": "#/definitions/Timezone", - "description": "The timezone of the data source run." - } - }, - "type": "object" - }, - "Timezone": { - "type": "string" - }, - "TypeRevision": { - "description": "The revision of the metadata form type.", - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "description": "A data source is used to import technical metadata of assets (data) from the source databases or data warehouses into Amazon DataZone. ", - "handlers": { - "create": { - "permissions": [ - "datazone:CreateDataSource", - "iam:PassRole", - "datazone:GetDataSource", - "datazone:DeleteDataSource" - ] - }, - "delete": { - "permissions": [ - "datazone:DeleteDataSource", - "datazone:GetDataSource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DomainIdentifier": { - "$ref": "resource-schema.json#/properties/DomainIdentifier" - }, - "ProjectIdentifier": { - "$ref": "resource-schema.json#/properties/ProjectIdentifier" - } - }, - "required": [ - "DomainIdentifier" - ] - }, - "permissions": [ - "datazone:ListDataSources" - ] - }, - "read": { - "permissions": [ - "datazone:GetDataSource" - ] - }, - "update": { - "permissions": [ - "datazone:UpdateDataSource", - "datazone:GetDataSource", - "datazone:DeleteDataSource" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainId", - "/properties/Id" - ], - "properties": { - "AssetFormsInput": { - "description": "The metadata forms that are to be attached to the assets that this data source works with.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/FormInput" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "Configuration": { - "$ref": "#/definitions/DataSourceConfigurationInput", - "description": "Configuration of the data source. It can be set to either glueRunConfiguration or redshiftRunConfiguration." - }, - "CreatedAt": { - "description": "The timestamp of when the data source was created.", - "format": "date-time", - "type": "string" - }, - "Description": { - "description": "The description of the data source.", - "maxLength": 2048, - "type": "string" - }, - "DomainId": { - "description": "The ID of the Amazon DataZone domain where the data source is created.", - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "DomainIdentifier": { - "description": "The ID of the Amazon DataZone domain where the data source is created.", - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "EnableSetting": { - "$ref": "#/definitions/EnableSetting", - "description": "Specifies whether the data source is enabled." - }, - "EnvironmentId": { - "description": "The unique identifier of the Amazon DataZone environment to which the data source publishes assets.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "EnvironmentIdentifier": { - "description": "The unique identifier of the Amazon DataZone environment to which the data source publishes assets.", - "type": "string" - }, - "Id": { - "description": "The unique identifier of the data source.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "LastRunAssetCount": { - "description": "The number of assets created by the data source during its last run.", - "type": "number" - }, - "LastRunAt": { - "description": "The timestamp that specifies when the data source was last run.", - "type": "string" - }, - "LastRunStatus": { - "description": "The status of the last run of this data source.", - "type": "string" - }, - "Name": { - "description": "The name of the data source.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "ProjectId": { - "description": "The ID of the Amazon DataZone project to which the data source is added.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "ProjectIdentifier": { - "description": "The identifier of the Amazon DataZone project in which you want to add the data source.", - "type": "string" - }, - "PublishOnImport": { - "description": "Specifies whether the assets that this data source creates in the inventory are to be also automatically published to the catalog.", - "type": "boolean" - }, - "Recommendation": { - "$ref": "#/definitions/RecommendationConfiguration", - "description": "Specifies whether the business name generation is to be enabled for this data source." - }, - "Schedule": { - "$ref": "#/definitions/ScheduleConfiguration", - "description": "The schedule of the data source runs." - }, - "Status": { - "$ref": "#/definitions/DataSourceStatus", - "description": "The status of the data source." - }, - "Type": { - "description": "The type of the data source.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "UpdatedAt": { - "description": "The timestamp of when this data source was updated.", - "format": "date-time", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/DomainId", - "/properties/EnvironmentId", - "/properties/Id", - "/properties/LastRunAssetCount", - "/properties/LastRunAt", - "/properties/LastRunStatus", - "/properties/ProjectId", - "/properties/Status", - "/properties/UpdatedAt" - ], - "required": [ - "Name", - "DomainIdentifier", - "ProjectIdentifier", - "EnvironmentIdentifier", - "Type" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::DataZone::DataSource", - "writeOnlyProperties": [ - "/properties/AssetFormsInput", - "/properties/EnvironmentIdentifier", - "/properties/DomainIdentifier", - "/properties/Configuration", - "/properties/ProjectIdentifier" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConnectionIdentifier", + "/properties/EnvironmentIdentifier", + "/properties/DomainIdentifier", + "/properties/ProjectIdentifier", + "/properties/Type" + ], + "definitions": { + "AccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^\\d{12}$", + "type": "string" + }, + "DataAccessRole": { + "description": "The data access role included in the configuration details of the AWS Glue data source.", + "pattern": "^arn:aws[^:]*:iam::\\d{12}:(role|role/service-role)/[\\w+=,.@-]{1,128}$", + "type": "string" + }, + "DataSourceConfigurationInput": { + "description": "Specifies the configuration of the data source. It can be set to either glueRunConfiguration or redshiftRunConfiguration or sageMakerRunConfiguration.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "GlueRunConfiguration": { + "$ref": "#/definitions/GlueRunConfigurationInput" + } + }, + "title": "GlueRunConfiguration", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "RedshiftRunConfiguration": { + "$ref": "#/definitions/RedshiftRunConfigurationInput" + } + }, + "title": "RedshiftRunConfiguration", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "SageMakerRunConfiguration": { + "$ref": "#/definitions/SageMakerRunConfigurationInput" + } + }, + "title": "SageMakerRunConfiguration", + "type": "object" + } + ] + }, + "DataSourceStatus": { + "description": "The status of the data source.", + "enum": [ + "CREATING", + "FAILED_CREATION", + "READY", + "UPDATING", + "FAILED_UPDATE", + "RUNNING", + "DELETING", + "FAILED_DELETION" + ], + "type": "string" + }, + "EnableSetting": { + "description": "Specifies whether the data source is enabled.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "FilterExpression": { + "additionalProperties": false, + "description": "The search filter expression.", + "properties": { + "Expression": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/FilterExpressionType" + } + }, + "required": [ + "Expression", + "Type" + ], + "type": "object" + }, + "FilterExpressionType": { + "description": "The search filter expression type.", + "enum": [ + "INCLUDE", + "EXCLUDE" + ], + "type": "string" + }, + "FormInput": { + "additionalProperties": false, + "description": "The details of a metadata form.", + "properties": { + "Content": { + "description": "The content of the metadata form.", + "maxLength": 75000, + "type": "string" + }, + "FormName": { + "$ref": "#/definitions/FormName", + "description": "The name of the metadata form." + }, + "TypeIdentifier": { + "description": "The ID of the metadata form type.", + "maxLength": 385, + "minLength": 1, + "pattern": "^(?!\\.)[\\w\\.]*\\w$", + "type": "string" + }, + "TypeRevision": { + "$ref": "#/definitions/TypeRevision", + "description": "The revision of the metadata form type." + } + }, + "required": [ + "FormName" + ], + "type": "object" + }, + "FormName": { + "description": "The name of the metadata form.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?![0-9_])\\w+$|^_\\w*[a-zA-Z0-9]\\w*$", + "type": "string" + }, + "GlueRunConfigurationInput": { + "additionalProperties": false, + "properties": { + "AutoImportDataQualityResult": { + "description": "Specifies whether to automatically import data quality metrics as part of the data source run.", + "type": "boolean" + }, + "CatalogName": { + "description": "The catalog name in the AWS Glue run configuration.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "DataAccessRole": { + "$ref": "#/definitions/DataAccessRole", + "description": "The data access role included in the configuration details of the AWS Glue data source." + }, + "RelationalFilterConfigurations": { + "description": "The relational filter configurations included in the configuration details of the AWS Glue data source.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RelationalFilterConfiguration" + }, + "type": "array" + } + }, + "required": [ + "RelationalFilterConfigurations" + ], + "type": "object" + }, + "RecommendationConfiguration": { + "additionalProperties": false, + "description": "The recommendation to be updated as part of the UpdateDataSource action.", + "properties": { + "EnableBusinessNameGeneration": { + "description": "Specifies whether automatic business name generation is to be enabled or not as part of the recommendation configuration.", + "type": "boolean" + } + }, + "type": "object" + }, + "RedshiftClusterStorage": { + "additionalProperties": false, + "description": "The name of an Amazon Redshift cluster.", + "properties": { + "ClusterName": { + "description": "The name of an Amazon Redshift cluster.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[0-9a-z].[a-z0-9\\-]*$", + "type": "string" + } + }, + "required": [ + "ClusterName" + ], + "type": "object" + }, + "RedshiftCredentialConfiguration": { + "additionalProperties": false, + "description": "The ARN of a secret manager for an Amazon Redshift cluster.", + "properties": { + "SecretManagerArn": { + "description": "The ARN of a secret manager for an Amazon Redshift cluster.", + "maxLength": 256, + "pattern": "^arn:aws[^:]*:secretsmanager:[a-z]{2}-?(iso|gov)?-{1}[a-z]*-{1}[0-9]:\\d{12}:secret:.*$", + "type": "string" + } + }, + "required": [ + "SecretManagerArn" + ], + "type": "object" + }, + "RedshiftRunConfigurationInput": { + "additionalProperties": false, + "description": "The configuration details of the Amazon Redshift data source.", + "properties": { + "DataAccessRole": { + "$ref": "#/definitions/DataAccessRole", + "description": "The data access role included in the configuration details of the Amazon Redshift data source." + }, + "RedshiftCredentialConfiguration": { + "$ref": "#/definitions/RedshiftCredentialConfiguration", + "description": "The details of the credentials required to access an Amazon Redshift cluster." + }, + "RedshiftStorage": { + "$ref": "#/definitions/RedshiftStorage", + "description": "The details of the Amazon Redshift storage as part of the configuration of an Amazon Redshift data source run." + }, + "RelationalFilterConfigurations": { + "$ref": "#/definitions/RelationalFilterConfigurations" + } + }, + "required": [ + "RelationalFilterConfigurations" + ], + "type": "object" + }, + "RedshiftServerlessStorage": { + "additionalProperties": false, + "description": "The details of the Amazon Redshift Serverless workgroup storage.", + "properties": { + "WorkgroupName": { + "description": "The name of the Amazon Redshift Serverless workgroup.", + "maxLength": 64, + "minLength": 3, + "pattern": "^[a-z0-9-]+$", + "type": "string" + } + }, + "required": [ + "WorkgroupName" + ], + "type": "object" + }, + "RedshiftStorage": { + "description": "The details of the Amazon Redshift storage as part of the configuration of an Amazon Redshift data source run.", + "oneOf": [ + { + "additionalProperties": false, + "description": "The details of the Amazon Redshift cluster source.", + "properties": { + "RedshiftClusterSource": { + "$ref": "#/definitions/RedshiftClusterStorage" + } + }, + "required": [ + "RedshiftClusterSource" + ], + "title": "RedshiftClusterSource", + "type": "object" + }, + { + "additionalProperties": false, + "description": "The details of the Amazon Redshift Serverless workgroup source.", + "properties": { + "RedshiftServerlessSource": { + "$ref": "#/definitions/RedshiftServerlessStorage" + } + }, + "required": [ + "RedshiftServerlessSource" + ], + "title": "RedshiftServerlessSource", + "type": "object" + } + ] + }, + "Region": { + "maxLength": 16, + "minLength": 4, + "pattern": "[a-z]{2}-?(iso|gov)?-{1}[a-z]*-{1}[0-9]", + "type": "string" + }, + "RelationalFilterConfiguration": { + "additionalProperties": false, + "description": "The relational filter configuration for the data source.", + "properties": { + "DatabaseName": { + "description": "The database name specified in the relational filter configuration for the data source.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "FilterExpressions": { + "description": "The filter expressions specified in the relational filter configuration for the data source.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/FilterExpression" + }, + "type": "array" + }, + "SchemaName": { + "description": "The schema name specified in the relational filter configuration for the data source.", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DatabaseName" + ], + "type": "object" + }, + "RelationalFilterConfigurations": { + "description": "The relational filter configurations included in the configuration details of the Amazon Redshift data source.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RelationalFilterConfiguration" + }, + "type": "array" + }, + "SageMakerRunConfigurationInput": { + "additionalProperties": false, + "description": "The configuration details of the Amazon SageMaker data source.", + "properties": { + "TrackingAssets": { + "$ref": "#/definitions/TrackingAssets", + "description": "The tracking assets of the Amazon SageMaker run." + } + }, + "required": [ + "TrackingAssets" + ], + "type": "object" + }, + "ScheduleConfiguration": { + "additionalProperties": false, + "description": "The schedule of the data source runs.", + "properties": { + "Schedule": { + "description": "The schedule of the data source runs.", + "maxLength": 256, + "minLength": 1, + "pattern": "cron\\((\\b[0-5]?[0-9]\\b) (\\b2[0-3]\\b|\\b[0-1]?[0-9]\\b) (.*){1,5} (.*){1,5} (.*){1,5} (.*){1,5}\\)", + "type": "string" + }, + "Timezone": { + "$ref": "#/definitions/Timezone", + "description": "The timezone of the data source run." + } + }, + "type": "object" + }, + "Timezone": { + "type": "string" + }, + "TrackingAssets": { + "additionalProperties": false, + "description": "The tracking assets of the Amazon SageMaker run.", + "maxProperties": 1, + "patternProperties": { + "^.{1,64}$": { + "items": { + "pattern": "^arn:aws[^:]*:sagemaker:[a-z]{2}-?(iso|gov)?-{1}[a-z]*-{1}[0-9]:\\d{12}:[\\w+=,.@-]{1,128}/[\\w+=,.@-]{1,256}$", + "type": "string" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TypeRevision": { + "description": "The revision of the metadata form type.", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "description": "A data source is used to import technical metadata of assets (data) from the source databases or data warehouses into Amazon DataZone. ", + "handlers": { + "create": { + "permissions": [ + "datazone:CreateDataSource", + "iam:PassRole", + "datazone:GetDataSource", + "datazone:DeleteDataSource" + ] + }, + "delete": { + "permissions": [ + "datazone:DeleteDataSource", + "datazone:GetDataSource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainIdentifier": { + "$ref": "resource-schema.json#/properties/DomainIdentifier" + }, + "ProjectIdentifier": { + "$ref": "resource-schema.json#/properties/ProjectIdentifier" + } + }, + "required": [ + "DomainIdentifier" + ] + }, + "permissions": [ + "datazone:ListDataSources" + ] + }, + "read": { + "permissions": [ + "datazone:GetDataSource" + ] + }, + "update": { + "permissions": [ + "datazone:UpdateDataSource", + "datazone:GetDataSource", + "datazone:DeleteDataSource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId", + "/properties/Id" + ], + "properties": { + "AssetFormsInput": { + "description": "The metadata forms that are to be attached to the assets that this data source works with.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/FormInput" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Configuration": { + "$ref": "#/definitions/DataSourceConfigurationInput", + "description": "Configuration of the data source. It can be set to either glueRunConfiguration or redshiftRunConfiguration." + }, + "ConnectionId": { + "description": "The unique identifier of a connection used to fetch relevant parameters from connection during Datasource run", + "type": "string" + }, + "ConnectionIdentifier": { + "description": "The unique identifier of a connection used to fetch relevant parameters from connection during Datasource run", + "type": "string" + }, + "CreatedAt": { + "description": "The timestamp of when the data source was created.", + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "The description of the data source.", + "maxLength": 2048, + "type": "string" + }, + "DomainId": { + "description": "The ID of the Amazon DataZone domain where the data source is created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "DomainIdentifier": { + "description": "The ID of the Amazon DataZone domain where the data source is created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "EnableSetting": { + "$ref": "#/definitions/EnableSetting", + "description": "Specifies whether the data source is enabled." + }, + "EnvironmentId": { + "description": "The unique identifier of the Amazon DataZone environment to which the data source publishes assets.", + "type": "string" + }, + "EnvironmentIdentifier": { + "description": "The unique identifier of the Amazon DataZone environment to which the data source publishes assets.", + "type": "string" + }, + "Id": { + "description": "The unique identifier of the data source.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "LastRunAssetCount": { + "description": "The number of assets created by the data source during its last run.", + "type": "number" + }, + "LastRunAt": { + "description": "The timestamp that specifies when the data source was last run.", + "type": "string" + }, + "LastRunStatus": { + "description": "The status of the last run of this data source.", + "type": "string" + }, + "Name": { + "description": "The name of the data source.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "ProjectId": { + "description": "The ID of the Amazon DataZone project to which the data source is added.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "ProjectIdentifier": { + "description": "The identifier of the Amazon DataZone project in which you want to add the data source.", + "type": "string" + }, + "PublishOnImport": { + "description": "Specifies whether the assets that this data source creates in the inventory are to be also automatically published to the catalog.", + "type": "boolean" + }, + "Recommendation": { + "$ref": "#/definitions/RecommendationConfiguration", + "description": "Specifies whether the business name generation is to be enabled for this data source." + }, + "Schedule": { + "$ref": "#/definitions/ScheduleConfiguration", + "description": "The schedule of the data source runs." + }, + "Status": { + "$ref": "#/definitions/DataSourceStatus", + "description": "The status of the data source." + }, + "Type": { + "description": "The type of the data source.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "UpdatedAt": { + "description": "The timestamp of when this data source was updated.", + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ConnectionId", + "/properties/CreatedAt", + "/properties/DomainId", + "/properties/EnvironmentId", + "/properties/Id", + "/properties/LastRunAssetCount", + "/properties/LastRunAt", + "/properties/LastRunStatus", + "/properties/ProjectId", + "/properties/Status", + "/properties/UpdatedAt" + ], + "required": [ + "Name", + "DomainIdentifier", + "ProjectIdentifier", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::DataZone::DataSource", + "writeOnlyProperties": [ + "/properties/AssetFormsInput", + "/properties/ConnectionIdentifier", + "/properties/EnvironmentIdentifier", + "/properties/DomainIdentifier", + "/properties/Configuration", + "/properties/ProjectIdentifier" + ] +} diff --git a/src/schema/aws-datazone-domain.json b/src/schema/aws-datazone-domain.json index 33d50872..2d1649f7 100644 --- a/src/schema/aws-datazone-domain.json +++ b/src/schema/aws-datazone-domain.json @@ -1,215 +1,263 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Name" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKeyIdentifier" - ], - "definitions": { - "AuthType": { - "description": "The type of single sign-on in Amazon DataZone.", - "enum": [ - "IAM_IDC", - "DISABLED" - ], - "type": "string" - }, - "DomainStatus": { - "description": "The status of the Amazon DataZone domain.", - "enum": [ - "CREATING", - "AVAILABLE", - "CREATION_FAILED", - "DELETING", - "DELETED", - "DELETION_FAILED" - ], - "type": "string" - }, - "SingleSignOn": { - "additionalProperties": false, - "description": "The single-sign on configuration of the Amazon DataZone domain.", - "properties": { - "Type": { - "$ref": "#/definitions/AuthType" - }, - "UserAssignment": { - "$ref": "#/definitions/UserAssignment" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with the domain.", - "properties": { - "Key": { - "description": "The key name of the tag.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UserAssignment": { - "description": "The single sign-on user assignment in Amazon DataZone.", - "enum": [ - "AUTOMATIC", - "MANUAL" - ], - "type": "string" - } - }, - "description": "A domain is an organizing entity for connecting together assets, users, and their projects", - "handlers": { - "create": { - "permissions": [ - "datazone:CreateDomain", - "datazone:UpdateDomain", - "datazone:GetDomain", - "datazone:TagResource", - "sso:CreateManagedApplicationInstance", - "sso:DeleteManagedApplicationInstance", - "sso:PutApplicationAssignmentConfiguration" - ] - }, - "delete": { - "permissions": [ - "datazone:DeleteDomain", - "datazone:GetDomain", - "sso:DeleteManagedApplicationInstance", - "sso:PutApplicationAssignmentConfiguration" - ] - }, - "list": { - "permissions": [ - "datazone:ListDomains" - ] - }, - "read": { - "permissions": [ - "datazone:GetDomain" - ] - }, - "update": { - "permissions": [ - "datazone:UpdateDomain", - "datazone:GetDomain", - "datazone:TagResource", - "datazone:UntagResource", - "sso:CreateManagedApplicationInstance", - "sso:DeleteManagedApplicationInstance", - "sso:PutApplicationAssignmentConfiguration" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The ARN of the Amazon DataZone domain.", - "pattern": "^arn:aws(|-cn|-us-gov):datazone:\\w+(?:-\\w+)+:\\d{12}:domain/dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "CreatedAt": { - "description": "The timestamp of when the Amazon DataZone domain was last updated.", - "format": "date-time", - "type": "string" - }, - "Description": { - "description": "The description of the Amazon DataZone domain.", - "type": "string" - }, - "DomainExecutionRole": { - "description": "The domain execution role that is created when an Amazon DataZone domain is created. The domain execution role is created in the AWS account that houses the Amazon DataZone domain.", - "pattern": "^arn:aws[^:]*:iam::\\d{12}:(role|role/service-role)/[\\w+=,.@-]*$", - "type": "string" - }, - "Id": { - "description": "The id of the Amazon DataZone domain.", - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "KmsKeyIdentifier": { - "description": "The identifier of the AWS Key Management Service (KMS) key that is used to encrypt the Amazon DataZone domain, metadata, and reporting data.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", - "type": "string" - }, - "LastUpdatedAt": { - "description": "The timestamp of when the Amazon DataZone domain was last updated.", - "format": "date-time", - "type": "string" - }, - "ManagedAccountId": { - "description": "The identifier of the AWS account that manages the domain.", - "type": "string" - }, - "Name": { - "description": "The name of the Amazon DataZone domain.", - "type": "string" - }, - "PortalUrl": { - "description": "The URL of the data portal for this Amazon DataZone domain.", - "type": "string" - }, - "SingleSignOn": { - "$ref": "#/definitions/SingleSignOn", - "description": "The single-sign on configuration of the Amazon DataZone domain." - }, - "Status": { - "$ref": "#/definitions/DomainStatus", - "description": "The status of the Amazon DataZone domain." - }, - "Tags": { - "description": "The tags specified for the Amazon DataZone domain.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/Id", - "/properties/LastUpdatedAt", - "/properties/ManagedAccountId", - "/properties/PortalUrl", - "/properties/Status" - ], - "required": [ - "DomainExecutionRole", - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "datazone:TagResource", - "datazone:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DataZone::Domain" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KmsKeyIdentifier", + "/properties/DomainVersion" + ], + "definitions": { + "AuthType": { + "description": "The type of single sign-on in Amazon DataZone.", + "enum": [ + "IAM_IDC", + "DISABLED" + ], + "type": "string" + }, + "DomainStatus": { + "description": "The status of the Amazon DataZone domain.", + "enum": [ + "CREATING", + "AVAILABLE", + "CREATION_FAILED", + "DELETING", + "DELETED", + "DELETION_FAILED" + ], + "type": "string" + }, + "IdcInstanceArn": { + "description": "The ARN of the AWS Identity Center instance.", + "maxLength": 1224, + "minLength": 10, + "pattern": "arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}", + "type": "string" + }, + "SingleSignOn": { + "additionalProperties": false, + "description": "The single-sign on configuration of the Amazon DataZone domain.", + "properties": { + "IdcInstanceArn": { + "$ref": "#/definitions/IdcInstanceArn" + }, + "Type": { + "$ref": "#/definitions/AuthType" + }, + "UserAssignment": { + "$ref": "#/definitions/UserAssignment" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with the domain.", + "properties": { + "Key": { + "description": "The key name of the tag.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserAssignment": { + "description": "The single sign-on user assignment in Amazon DataZone.", + "enum": [ + "AUTOMATIC", + "MANUAL" + ], + "type": "string" + } + }, + "description": "A domain is an organizing entity for connecting together assets, users, and their projects", + "handlers": { + "create": { + "permissions": [ + "datazone:CreateDomain", + "datazone:UpdateDomain", + "datazone:GetDomain", + "datazone:TagResource", + "sso:CreateManagedApplicationInstance", + "sso:DeleteManagedApplicationInstance", + "sso:PutApplicationAssignmentConfiguration", + "sso:ListInstances", + "sso:PutApplicationAccessScope", + "sso:PutApplicationGrant", + "sso:PutApplicationAuthenticationMethod", + "sso:PutApplicationAccessScope", + "sso:CreateApplication", + "sso:DeleteApplication", + "sso:CreateApplicationAssignment", + "sso:DeleteApplicationAssignment", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "datazone:DeleteDomain", + "datazone:GetDomain", + "sso:DeleteManagedApplicationInstance", + "sso:PutApplicationAssignmentConfiguration", + "sso:DeleteApplication", + "sso:DeleteApplicationAssignment", + "sso:ListInstances" + ] + }, + "list": { + "permissions": [ + "datazone:ListDomains" + ] + }, + "read": { + "permissions": [ + "datazone:GetDomain" + ] + }, + "update": { + "permissions": [ + "datazone:UpdateDomain", + "datazone:GetDomain", + "datazone:TagResource", + "datazone:UntagResource", + "sso:CreateManagedApplicationInstance", + "sso:DeleteManagedApplicationInstance", + "sso:PutApplicationAssignmentConfiguration", + "sso:ListInstances", + "sso:PutApplicationAccessScope", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The ARN of the Amazon DataZone domain.", + "pattern": "^arn:aws(|-cn|-us-gov):datazone:\\w+(?:-\\w+)+:\\d{12}:domain/dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "CreatedAt": { + "description": "The timestamp of when the Amazon DataZone domain was last updated.", + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "The description of the Amazon DataZone domain.", + "type": "string" + }, + "DomainExecutionRole": { + "description": "The domain execution role that is created when an Amazon DataZone domain is created. The domain execution role is created in the AWS account that houses the Amazon DataZone domain.", + "pattern": "^arn:aws[^:]*:iam::\\d{12}:(role|role/service-role)/[\\w+=,.@-]*$", + "type": "string" + }, + "DomainVersion": { + "description": "The version of the domain.", + "enum": [ + "V1", + "V2" + ], + "type": "string" + }, + "Id": { + "description": "The id of the Amazon DataZone domain.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "KmsKeyIdentifier": { + "description": "The identifier of the AWS Key Management Service (KMS) key that is used to encrypt the Amazon DataZone domain, metadata, and reporting data.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", + "type": "string" + }, + "LastUpdatedAt": { + "description": "The timestamp of when the Amazon DataZone domain was last updated.", + "format": "date-time", + "type": "string" + }, + "ManagedAccountId": { + "description": "The identifier of the AWS account that manages the domain.", + "type": "string" + }, + "Name": { + "description": "The name of the Amazon DataZone domain.", + "type": "string" + }, + "PortalUrl": { + "description": "The URL of the data portal for this Amazon DataZone domain.", + "type": "string" + }, + "RootDomainUnitId": { + "description": "The ID of the root domain in Amazon Datazone.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-z0-9_\\-]+$", + "type": "string" + }, + "ServiceRole": { + "description": "The service role of the domain that is created.", + "pattern": "^arn:aws[^:]*:iam::\\d{12}:(role|role/service-role)/[\\w+=,.@-]*$", + "type": "string" + }, + "SingleSignOn": { + "$ref": "#/definitions/SingleSignOn", + "description": "The single-sign on configuration of the Amazon DataZone domain." + }, + "Status": { + "$ref": "#/definitions/DomainStatus", + "description": "The status of the Amazon DataZone domain." + }, + "Tags": { + "description": "The tags specified for the Amazon DataZone domain.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/RootDomainUnitId", + "/properties/Arn", + "/properties/CreatedAt", + "/properties/Id", + "/properties/LastUpdatedAt", + "/properties/ManagedAccountId", + "/properties/PortalUrl", + "/properties/Status" + ], + "required": [ + "DomainExecutionRole", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "datazone:TagResource", + "datazone:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DataZone::Domain" +} diff --git a/src/schema/aws-datazone-environment.json b/src/schema/aws-datazone-environment.json index 81be7130..e52839ae 100644 --- a/src/schema/aws-datazone-environment.json +++ b/src/schema/aws-datazone-environment.json @@ -1,259 +1,259 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/DomainIdentifier" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainIdentifier", - "/properties/EnvironmentProfileIdentifier", - "/properties/ProjectIdentifier", - "/properties/UserParameters", - "/properties/EnvironmentAccountIdentifier", - "/properties/EnvironmentAccountRegion" - ], - "definitions": { - "EnvironmentParameter": { - "additionalProperties": false, - "description": "The parameter details of an environment.", - "properties": { - "Name": { - "description": "The name of an environment parameter.", - "type": "string" - }, - "Value": { - "description": "The value of an environment parameter.", - "type": "string" - } - }, - "type": "object" - }, - "EnvironmentStatus": { - "description": "The status of the Amazon DataZone environment.", - "enum": [ - "ACTIVE", - "CREATING", - "UPDATING", - "DELETING", - "CREATE_FAILED", - "UPDATE_FAILED", - "DELETE_FAILED", - "VALIDATION_FAILED", - "SUSPENDED", - "DISABLED", - "EXPIRED", - "DELETED", - "INACCESSIBLE" - ], - "type": "string" - } - }, - "description": "Definition of AWS::DataZone::Environment Resource Type", - "handlers": { - "create": { - "permissions": [ - "datazone:CreateEnvironment", - "datazone:GetEnvironment", - "datazone:DeleteEnvironment", - "datazone:AssociateEnvironmentRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "datazone:DeleteEnvironment", - "datazone:GetEnvironment" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DomainIdentifier": { - "$ref": "resource-schema.json#/properties/DomainIdentifier" - }, - "ProjectIdentifier": { - "$ref": "resource-schema.json#/properties/ProjectIdentifier" - } - }, - "required": [ - "DomainIdentifier", - "ProjectIdentifier" - ] - }, - "permissions": [ - "datazone:ListEnvironments" - ] - }, - "read": { - "permissions": [ - "datazone:GetEnvironment" - ] - }, - "update": { - "permissions": [ - "datazone:UpdateEnvironment", - "datazone:GetEnvironment", - "datazone:DeleteEnvironment", - "datazone:AssociateEnvironmentRole", - "datazone:DisassociateEnvironmentRole", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainId", - "/properties/Id" - ], - "properties": { - "AwsAccountId": { - "description": "The AWS account in which the Amazon DataZone environment is created.", - "pattern": "^\\d{12}$", - "type": "string" - }, - "AwsAccountRegion": { - "description": "The AWS region in which the Amazon DataZone environment is created.", - "pattern": "^[a-z]{2}-[a-z]{4,10}-\\d$", - "type": "string" - }, - "CreatedAt": { - "description": "The timestamp of when the environment was created.", - "format": "date-time", - "type": "string" - }, - "CreatedBy": { - "description": "The Amazon DataZone user who created the environment.", - "type": "string" - }, - "Description": { - "description": "The description of the Amazon DataZone environment.", - "maxLength": 2048, - "type": "string" - }, - "DomainId": { - "description": "The identifier of the Amazon DataZone domain in which the environment is created.", - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "DomainIdentifier": { - "description": "The identifier of the Amazon DataZone domain in which the environment would be created.", - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "EnvironmentAccountIdentifier": { - "description": "The AWS account in which the Amazon DataZone environment is created.", - "pattern": "^\\d{12}$", - "type": "string" - }, - "EnvironmentAccountRegion": { - "description": "The AWS region in which the Amazon DataZone environment is created.", - "pattern": "^[a-z]{2}-[a-z]{4,10}-\\d$", - "type": "string" - }, - "EnvironmentBlueprintId": { - "description": "The ID of the blueprint with which the Amazon DataZone environment was created.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "EnvironmentProfileId": { - "description": "The ID of the environment profile with which the Amazon DataZone environment was created.", - "pattern": "^[a-zA-Z0-9_-]{0,36}$", - "type": "string" - }, - "EnvironmentProfileIdentifier": { - "description": "The ID of the environment profile with which the Amazon DataZone environment would be created.", - "pattern": "^[a-zA-Z0-9_-]{0,36}$", - "type": "string" - }, - "EnvironmentRoleArn": { - "description": "Environment role arn for custom aws environment permissions", - "type": "string" - }, - "GlossaryTerms": { - "description": "The glossary terms that can be used in the Amazon DataZone environment.", - "insertionOrder": false, - "items": { - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - }, - "Id": { - "description": "The ID of the Amazon DataZone environment.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "Name": { - "description": "The name of the environment.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[\\w -]+$", - "type": "string" - }, - "ProjectId": { - "description": "The ID of the Amazon DataZone project in which the environment is created.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "ProjectIdentifier": { - "description": "The ID of the Amazon DataZone project in which the environment would be created.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "Provider": { - "description": "The provider of the Amazon DataZone environment.", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/EnvironmentStatus", - "description": "The status of the Amazon DataZone environment." - }, - "UpdatedAt": { - "description": "The timestamp of when the environment was updated.", - "format": "date-time", - "type": "string" - }, - "UserParameters": { - "description": "The user parameters of the Amazon DataZone environment.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EnvironmentParameter" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/AwsAccountId", - "/properties/AwsAccountRegion", - "/properties/CreatedAt", - "/properties/CreatedBy", - "/properties/DomainId", - "/properties/EnvironmentBlueprintId", - "/properties/EnvironmentProfileId", - "/properties/Id", - "/properties/ProjectId", - "/properties/Provider", - "/properties/Status", - "/properties/UpdatedAt" - ], - "required": [ - "Name", - "ProjectIdentifier", - "DomainIdentifier" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", - "tagging": { - "taggable": false - }, - "typeName": "AWS::DataZone::Environment", - "writeOnlyProperties": [ - "/properties/EnvironmentProfileIdentifier", - "/properties/ProjectIdentifier", - "/properties/DomainIdentifier", - "/properties/EnvironmentAccountIdentifier", - "/properties/EnvironmentAccountRegion", - "/properties/EnvironmentRoleArn" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/DomainIdentifier" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainIdentifier", + "/properties/EnvironmentProfileIdentifier", + "/properties/ProjectIdentifier", + "/properties/UserParameters", + "/properties/EnvironmentAccountIdentifier", + "/properties/EnvironmentAccountRegion" + ], + "definitions": { + "EnvironmentParameter": { + "additionalProperties": false, + "description": "The parameter details of an environment.", + "properties": { + "Name": { + "description": "The name of an environment parameter.", + "type": "string" + }, + "Value": { + "description": "The value of an environment parameter.", + "type": "string" + } + }, + "type": "object" + }, + "EnvironmentStatus": { + "description": "The status of the Amazon DataZone environment.", + "enum": [ + "ACTIVE", + "CREATING", + "UPDATING", + "DELETING", + "CREATE_FAILED", + "UPDATE_FAILED", + "DELETE_FAILED", + "VALIDATION_FAILED", + "SUSPENDED", + "DISABLED", + "EXPIRED", + "DELETED", + "INACCESSIBLE" + ], + "type": "string" + } + }, + "description": "Definition of AWS::DataZone::Environment Resource Type", + "handlers": { + "create": { + "permissions": [ + "datazone:CreateEnvironment", + "datazone:GetEnvironment", + "datazone:DeleteEnvironment", + "datazone:AssociateEnvironmentRole", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "datazone:DeleteEnvironment", + "datazone:GetEnvironment" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainIdentifier": { + "$ref": "resource-schema.json#/properties/DomainIdentifier" + }, + "ProjectIdentifier": { + "$ref": "resource-schema.json#/properties/ProjectIdentifier" + } + }, + "required": [ + "DomainIdentifier", + "ProjectIdentifier" + ] + }, + "permissions": [ + "datazone:ListEnvironments" + ] + }, + "read": { + "permissions": [ + "datazone:GetEnvironment" + ] + }, + "update": { + "permissions": [ + "datazone:UpdateEnvironment", + "datazone:GetEnvironment", + "datazone:DeleteEnvironment", + "datazone:AssociateEnvironmentRole", + "datazone:DisassociateEnvironmentRole", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId", + "/properties/Id" + ], + "properties": { + "AwsAccountId": { + "description": "The AWS account in which the Amazon DataZone environment is created.", + "pattern": "^\\d{12}$", + "type": "string" + }, + "AwsAccountRegion": { + "description": "The AWS region in which the Amazon DataZone environment is created.", + "pattern": "^[a-z]{2}-[a-z]{4,10}-\\d$", + "type": "string" + }, + "CreatedAt": { + "description": "The timestamp of when the environment was created.", + "format": "date-time", + "type": "string" + }, + "CreatedBy": { + "description": "The Amazon DataZone user who created the environment.", + "type": "string" + }, + "Description": { + "description": "The description of the Amazon DataZone environment.", + "maxLength": 2048, + "type": "string" + }, + "DomainId": { + "description": "The identifier of the Amazon DataZone domain in which the environment is created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "DomainIdentifier": { + "description": "The identifier of the Amazon DataZone domain in which the environment would be created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "EnvironmentAccountIdentifier": { + "description": "The AWS account in which the Amazon DataZone environment is created.", + "pattern": "^\\d{12}$", + "type": "string" + }, + "EnvironmentAccountRegion": { + "description": "The AWS region in which the Amazon DataZone environment is created.", + "pattern": "^[a-z]{2}-[a-z]{4,10}-\\d$", + "type": "string" + }, + "EnvironmentBlueprintId": { + "description": "The ID of the blueprint with which the Amazon DataZone environment was created.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "EnvironmentProfileId": { + "description": "The ID of the environment profile with which the Amazon DataZone environment was created.", + "pattern": "^[a-zA-Z0-9_-]{0,36}$", + "type": "string" + }, + "EnvironmentProfileIdentifier": { + "description": "The ID of the environment profile with which the Amazon DataZone environment would be created.", + "pattern": "^[a-zA-Z0-9_-]{0,36}$", + "type": "string" + }, + "EnvironmentRoleArn": { + "description": "Environment role arn for custom aws environment permissions", + "type": "string" + }, + "GlossaryTerms": { + "description": "The glossary terms that can be used in the Amazon DataZone environment.", + "insertionOrder": false, + "items": { + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "Id": { + "description": "The ID of the Amazon DataZone environment.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "Name": { + "description": "The name of the environment.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[\\w -]+$", + "type": "string" + }, + "ProjectId": { + "description": "The ID of the Amazon DataZone project in which the environment is created.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "ProjectIdentifier": { + "description": "The ID of the Amazon DataZone project in which the environment would be created.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "Provider": { + "description": "The provider of the Amazon DataZone environment.", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/EnvironmentStatus", + "description": "The status of the Amazon DataZone environment." + }, + "UpdatedAt": { + "description": "The timestamp of when the environment was updated.", + "format": "date-time", + "type": "string" + }, + "UserParameters": { + "description": "The user parameters of the Amazon DataZone environment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EnvironmentParameter" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/AwsAccountRegion", + "/properties/CreatedAt", + "/properties/CreatedBy", + "/properties/DomainId", + "/properties/EnvironmentBlueprintId", + "/properties/EnvironmentProfileId", + "/properties/Id", + "/properties/ProjectId", + "/properties/Provider", + "/properties/Status", + "/properties/UpdatedAt" + ], + "required": [ + "Name", + "ProjectIdentifier", + "DomainIdentifier" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", + "tagging": { + "taggable": false + }, + "typeName": "AWS::DataZone::Environment", + "writeOnlyProperties": [ + "/properties/EnvironmentProfileIdentifier", + "/properties/ProjectIdentifier", + "/properties/DomainIdentifier", + "/properties/EnvironmentAccountIdentifier", + "/properties/EnvironmentAccountRegion", + "/properties/EnvironmentRoleArn" + ] +} diff --git a/src/schema/aws-datazone-environmentactions.json b/src/schema/aws-datazone-environmentactions.json index 18ebab3f..979a076e 100644 --- a/src/schema/aws-datazone-environmentactions.json +++ b/src/schema/aws-datazone-environmentactions.json @@ -1,156 +1,156 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/EnvironmentIdentifier" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainIdentifier", - "/properties/EnvironmentIdentifier" - ], - "definitions": { - "AwsConsoleLinkParameters": { - "additionalProperties": false, - "description": "The parameters of the console link specified as part of the environment action", - "properties": { - "Uri": { - "$ref": "#/definitions/EnvironmentActionURI" - } - }, - "type": "object" - }, - "EnvironmentActionURI": { - "description": "The URI of the console link specified as part of the environment action.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "description": "Definition of AWS::DataZone::EnvironmentActions Resource Type", - "handlers": { - "create": { - "permissions": [ - "datazone:CreateEnvironmentAction", - "datazone:GetEnvironmentAction", - "datazone:DeleteEnvironmentAction" - ] - }, - "delete": { - "permissions": [ - "datazone:DeleteEnvironmentAction", - "datazone:GetEnvironmentAction" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DomainIdentifier": { - "$ref": "resource-schema.json#/properties/DomainIdentifier" - }, - "EnvironmentIdentifier": { - "$ref": "resource-schema.json#/properties/EnvironmentIdentifier" - } - }, - "required": [ - "DomainIdentifier", - "EnvironmentIdentifier" - ] - }, - "permissions": [ - "datazone:ListEnvironmentActions" - ] - }, - "read": { - "permissions": [ - "datazone:GetEnvironmentAction" - ] - }, - "update": { - "permissions": [ - "datazone:UpdateEnvironmentAction", - "datazone:GetEnvironmentAction", - "datazone:DeleteEnvironmentAction" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainId", - "/properties/EnvironmentId", - "/properties/Id" - ], - "properties": { - "Description": { - "description": "The description of the Amazon DataZone environment action.", - "maxLength": 2048, - "type": "string" - }, - "DomainId": { - "description": "The identifier of the Amazon DataZone domain in which the environment is created.", - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "DomainIdentifier": { - "description": "The identifier of the Amazon DataZone domain in which the environment would be created.", - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "EnvironmentId": { - "description": "The identifier of the Amazon DataZone environment in which the action is taking place", - "maxLength": 36, - "minLength": 1, - "pattern": "[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "EnvironmentIdentifier": { - "description": "The identifier of the Amazon DataZone environment in which the action is taking place", - "maxLength": 36, - "minLength": 1, - "pattern": "[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "Id": { - "description": "The ID of the Amazon DataZone environment action.", - "maxLength": 36, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "Identifier": { - "description": "The ID of the Amazon DataZone environment action.", - "maxLength": 36, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "Name": { - "description": "The name of the environment action.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[\\w -]+$", - "type": "string" - }, - "Parameters": { - "$ref": "#/definitions/AwsConsoleLinkParameters", - "description": "The parameters of the environment action." - } - }, - "readOnlyProperties": [ - "/properties/DomainId", - "/properties/EnvironmentId", - "/properties/Id" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", - "tagging": { - "taggable": false - }, - "typeName": "AWS::DataZone::EnvironmentActions", - "writeOnlyProperties": [ - "/properties/EnvironmentIdentifier", - "/properties/DomainIdentifier", - "/properties/Identifier" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/EnvironmentIdentifier" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainIdentifier", + "/properties/EnvironmentIdentifier" + ], + "definitions": { + "AwsConsoleLinkParameters": { + "additionalProperties": false, + "description": "The parameters of the console link specified as part of the environment action", + "properties": { + "Uri": { + "$ref": "#/definitions/EnvironmentActionURI" + } + }, + "type": "object" + }, + "EnvironmentActionURI": { + "description": "The URI of the console link specified as part of the environment action.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "description": "Definition of AWS::DataZone::EnvironmentActions Resource Type", + "handlers": { + "create": { + "permissions": [ + "datazone:CreateEnvironmentAction", + "datazone:GetEnvironmentAction", + "datazone:DeleteEnvironmentAction" + ] + }, + "delete": { + "permissions": [ + "datazone:DeleteEnvironmentAction", + "datazone:GetEnvironmentAction" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainIdentifier": { + "$ref": "resource-schema.json#/properties/DomainIdentifier" + }, + "EnvironmentIdentifier": { + "$ref": "resource-schema.json#/properties/EnvironmentIdentifier" + } + }, + "required": [ + "DomainIdentifier", + "EnvironmentIdentifier" + ] + }, + "permissions": [ + "datazone:ListEnvironmentActions" + ] + }, + "read": { + "permissions": [ + "datazone:GetEnvironmentAction" + ] + }, + "update": { + "permissions": [ + "datazone:UpdateEnvironmentAction", + "datazone:GetEnvironmentAction", + "datazone:DeleteEnvironmentAction" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId", + "/properties/EnvironmentId", + "/properties/Id" + ], + "properties": { + "Description": { + "description": "The description of the Amazon DataZone environment action.", + "maxLength": 2048, + "type": "string" + }, + "DomainId": { + "description": "The identifier of the Amazon DataZone domain in which the environment is created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "DomainIdentifier": { + "description": "The identifier of the Amazon DataZone domain in which the environment would be created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "EnvironmentId": { + "description": "The identifier of the Amazon DataZone environment in which the action is taking place", + "maxLength": 36, + "minLength": 1, + "pattern": "[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "EnvironmentIdentifier": { + "description": "The identifier of the Amazon DataZone environment in which the action is taking place", + "maxLength": 36, + "minLength": 1, + "pattern": "[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "Id": { + "description": "The ID of the Amazon DataZone environment action.", + "maxLength": 36, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "Identifier": { + "description": "The ID of the Amazon DataZone environment action.", + "maxLength": 36, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "Name": { + "description": "The name of the environment action.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[\\w -]+$", + "type": "string" + }, + "Parameters": { + "$ref": "#/definitions/AwsConsoleLinkParameters", + "description": "The parameters of the environment action." + } + }, + "readOnlyProperties": [ + "/properties/DomainId", + "/properties/EnvironmentId", + "/properties/Id" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", + "tagging": { + "taggable": false + }, + "typeName": "AWS::DataZone::EnvironmentActions", + "writeOnlyProperties": [ + "/properties/EnvironmentIdentifier", + "/properties/DomainIdentifier", + "/properties/Identifier" + ] +} diff --git a/src/schema/aws-datazone-environmentblueprintconfiguration.json b/src/schema/aws-datazone-environmentblueprintconfiguration.json index 4916e9e6..43195707 100644 --- a/src/schema/aws-datazone-environmentblueprintconfiguration.json +++ b/src/schema/aws-datazone-environmentblueprintconfiguration.json @@ -1,159 +1,159 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/DomainIdentifier", - "/properties/EnvironmentBlueprintIdentifier" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainIdentifier", - "/properties/EnvironmentBlueprintIdentifier" - ], - "definitions": { - "Parameter": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - }, - "RegionalParameter": { - "additionalProperties": false, - "properties": { - "Parameters": { - "$ref": "#/definitions/Parameter" - }, - "Region": { - "pattern": "^[a-z]{2}-?(iso|gov)?-{1}[a-z]*-{1}[0-9]$", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::DataZone::EnvironmentBlueprintConfiguration Resource Type", - "handlers": { - "create": { - "permissions": [ - "datazone:ListEnvironmentBlueprints", - "iam:PassRole", - "datazone:GetEnvironmentBlueprintConfiguration", - "datazone:PutEnvironmentBlueprintConfiguration" - ] - }, - "delete": { - "permissions": [ - "datazone:GetEnvironmentBlueprintConfiguration", - "datazone:DeleteEnvironmentBlueprintConfiguration" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DomainIdentifier": { - "$ref": "resource-schema.json#/properties/DomainIdentifier" - } - }, - "required": [ - "DomainIdentifier" - ] - }, - "permissions": [ - "datazone:ListEnvironmentBlueprintConfigurations" - ] - }, - "read": { - "permissions": [ - "datazone:GetEnvironmentBlueprintConfiguration" - ] - }, - "update": { - "permissions": [ - "datazone:DeleteEnvironmentBlueprintConfiguration", - "iam:PassRole", - "datazone:GetEnvironmentBlueprintConfiguration", - "datazone:PutEnvironmentBlueprintConfiguration" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainId", - "/properties/EnvironmentBlueprintId" - ], - "properties": { - "CreatedAt": { - "format": "date-time", - "type": "string" - }, - "DomainId": { - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "DomainIdentifier": { - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "EnabledRegions": { - "insertionOrder": false, - "items": { - "maxLength": 16, - "minLength": 4, - "pattern": "^[a-z]{2}-?(iso|gov)?-{1}[a-z]*-{1}[0-9]$", - "type": "string" - }, - "minItems": 0, - "type": "array" - }, - "EnvironmentBlueprintId": { - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "EnvironmentBlueprintIdentifier": { - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "ManageAccessRoleArn": { - "pattern": "^arn:aws[^:]*:iam::\\d{12}:(role|role/service-role)/[\\w+=,.@-]*$", - "type": "string" - }, - "ProvisioningRoleArn": { - "pattern": "^arn:aws[^:]*:iam::\\d{12}:(role|role/service-role)/[\\w+=,.@-]*$", - "type": "string" - }, - "RegionalParameters": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RegionalParameter" - }, - "type": "array", - "uniqueItems": true - }, - "UpdatedAt": { - "format": "date-time", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/DomainId", - "/properties/EnvironmentBlueprintId", - "/properties/UpdatedAt" - ], - "required": [ - "DomainIdentifier", - "EnvironmentBlueprintIdentifier", - "EnabledRegions" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", - "tagging": { - "taggable": false - }, - "typeName": "AWS::DataZone::EnvironmentBlueprintConfiguration", - "writeOnlyProperties": [ - "/properties/DomainIdentifier", - "/properties/EnvironmentBlueprintIdentifier" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/DomainIdentifier", + "/properties/EnvironmentBlueprintIdentifier" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainIdentifier", + "/properties/EnvironmentBlueprintIdentifier" + ], + "definitions": { + "Parameter": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "RegionalParameter": { + "additionalProperties": false, + "properties": { + "Parameters": { + "$ref": "#/definitions/Parameter" + }, + "Region": { + "pattern": "^[a-z]{2}-?(iso|gov)?-{1}[a-z]*-{1}[0-9]$", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::DataZone::EnvironmentBlueprintConfiguration Resource Type", + "handlers": { + "create": { + "permissions": [ + "datazone:ListEnvironmentBlueprints", + "iam:PassRole", + "datazone:GetEnvironmentBlueprintConfiguration", + "datazone:PutEnvironmentBlueprintConfiguration" + ] + }, + "delete": { + "permissions": [ + "datazone:GetEnvironmentBlueprintConfiguration", + "datazone:DeleteEnvironmentBlueprintConfiguration" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainIdentifier": { + "$ref": "resource-schema.json#/properties/DomainIdentifier" + } + }, + "required": [ + "DomainIdentifier" + ] + }, + "permissions": [ + "datazone:ListEnvironmentBlueprintConfigurations" + ] + }, + "read": { + "permissions": [ + "datazone:GetEnvironmentBlueprintConfiguration" + ] + }, + "update": { + "permissions": [ + "datazone:DeleteEnvironmentBlueprintConfiguration", + "iam:PassRole", + "datazone:GetEnvironmentBlueprintConfiguration", + "datazone:PutEnvironmentBlueprintConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId", + "/properties/EnvironmentBlueprintId" + ], + "properties": { + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "DomainId": { + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "DomainIdentifier": { + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "EnabledRegions": { + "insertionOrder": false, + "items": { + "maxLength": 16, + "minLength": 4, + "pattern": "^[a-z]{2}-?(iso|gov)?-{1}[a-z]*-{1}[0-9]$", + "type": "string" + }, + "minItems": 0, + "type": "array" + }, + "EnvironmentBlueprintId": { + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "EnvironmentBlueprintIdentifier": { + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "ManageAccessRoleArn": { + "pattern": "^arn:aws[^:]*:iam::\\d{12}:(role|role/service-role)/[\\w+=,.@-]*$", + "type": "string" + }, + "ProvisioningRoleArn": { + "pattern": "^arn:aws[^:]*:iam::\\d{12}:(role|role/service-role)/[\\w+=,.@-]*$", + "type": "string" + }, + "RegionalParameters": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RegionalParameter" + }, + "type": "array", + "uniqueItems": true + }, + "UpdatedAt": { + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/DomainId", + "/properties/EnvironmentBlueprintId", + "/properties/UpdatedAt" + ], + "required": [ + "DomainIdentifier", + "EnvironmentBlueprintIdentifier", + "EnabledRegions" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", + "tagging": { + "taggable": false + }, + "typeName": "AWS::DataZone::EnvironmentBlueprintConfiguration", + "writeOnlyProperties": [ + "/properties/DomainIdentifier", + "/properties/EnvironmentBlueprintIdentifier" + ] +} diff --git a/src/schema/aws-datazone-environmentprofile.json b/src/schema/aws-datazone-environmentprofile.json index ce7b33c1..1ef63772 100644 --- a/src/schema/aws-datazone-environmentprofile.json +++ b/src/schema/aws-datazone-environmentprofile.json @@ -1,186 +1,186 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/DomainIdentifier" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainIdentifier", - "/properties/EnvironmentBlueprintIdentifier", - "/properties/ProjectIdentifier" - ], - "definitions": { - "EnvironmentParameter": { - "additionalProperties": false, - "description": "The parameter details of an environment profile.", - "properties": { - "Name": { - "description": "The name of an environment profile parameter.", - "type": "string" - }, - "Value": { - "description": "The value of an environment profile parameter.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "AWS Datazone Environment Profile is pre-configured set of resources and blueprints that provide reusable templates for creating environments.", - "handlers": { - "create": { - "permissions": [ - "datazone:CreateEnvironmentProfile", - "datazone:GetEnvironmentProfile" - ] - }, - "delete": { - "permissions": [ - "datazone:DeleteEnvironmentProfile", - "datazone:GetEnvironmentProfile" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DomainIdentifier": { - "$ref": "resource-schema.json#/properties/DomainIdentifier" - } - }, - "required": [ - "DomainIdentifier" - ] - }, - "permissions": [ - "datazone:ListEnvironmentProfiles" - ] - }, - "read": { - "permissions": [ - "datazone:GetEnvironmentProfile" - ] - }, - "update": { - "permissions": [ - "datazone:UpdateEnvironmentProfile", - "datazone:GetEnvironmentProfile" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainId", - "/properties/Id" - ], - "properties": { - "AwsAccountId": { - "description": "The AWS account in which the Amazon DataZone environment is created.", - "pattern": "^\\d{12}$", - "type": "string" - }, - "AwsAccountRegion": { - "description": "The AWS region in which this environment profile is created.", - "pattern": "^[a-z]{2}-[a-z]{4,10}-\\d$", - "type": "string" - }, - "CreatedAt": { - "description": "The timestamp of when this environment profile was created.", - "format": "date-time", - "type": "string" - }, - "CreatedBy": { - "description": "The Amazon DataZone user who created this environment profile.", - "type": "string" - }, - "Description": { - "description": "The description of this Amazon DataZone environment profile.", - "maxLength": 2048, - "type": "string" - }, - "DomainId": { - "description": "The ID of the Amazon DataZone domain in which this environment profile is created.", - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "DomainIdentifier": { - "description": "The ID of the Amazon DataZone domain in which this environment profile is created.", - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "EnvironmentBlueprintId": { - "description": "The ID of the blueprint with which this environment profile is created.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "EnvironmentBlueprintIdentifier": { - "description": "The ID of the blueprint with which this environment profile is created.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "Id": { - "description": "The ID of this Amazon DataZone environment profile.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "Name": { - "description": "The name of this Amazon DataZone environment profile.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[\\w -]+$", - "type": "string" - }, - "ProjectId": { - "description": "The identifier of the project in which to create the environment profile.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "ProjectIdentifier": { - "description": "The identifier of the project in which to create the environment profile.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "UpdatedAt": { - "description": "The timestamp of when this environment profile was updated.", - "format": "date-time", - "type": "string" - }, - "UserParameters": { - "description": "The user parameters of this Amazon DataZone environment profile.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EnvironmentParameter" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/CreatedBy", - "/properties/DomainId", - "/properties/EnvironmentBlueprintId", - "/properties/Id", - "/properties/ProjectId", - "/properties/UpdatedAt" - ], - "required": [ - "EnvironmentBlueprintIdentifier", - "ProjectIdentifier", - "DomainIdentifier", - "AwsAccountId", - "AwsAccountRegion", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::DataZone::EnvironmentProfile", - "writeOnlyProperties": [ - "/properties/EnvironmentBlueprintIdentifier", - "/properties/ProjectIdentifier", - "/properties/DomainIdentifier" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/DomainIdentifier" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainIdentifier", + "/properties/EnvironmentBlueprintIdentifier", + "/properties/ProjectIdentifier" + ], + "definitions": { + "EnvironmentParameter": { + "additionalProperties": false, + "description": "The parameter details of an environment profile.", + "properties": { + "Name": { + "description": "The name of an environment profile parameter.", + "type": "string" + }, + "Value": { + "description": "The value of an environment profile parameter.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "AWS Datazone Environment Profile is pre-configured set of resources and blueprints that provide reusable templates for creating environments.", + "handlers": { + "create": { + "permissions": [ + "datazone:CreateEnvironmentProfile", + "datazone:GetEnvironmentProfile" + ] + }, + "delete": { + "permissions": [ + "datazone:DeleteEnvironmentProfile", + "datazone:GetEnvironmentProfile" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainIdentifier": { + "$ref": "resource-schema.json#/properties/DomainIdentifier" + } + }, + "required": [ + "DomainIdentifier" + ] + }, + "permissions": [ + "datazone:ListEnvironmentProfiles" + ] + }, + "read": { + "permissions": [ + "datazone:GetEnvironmentProfile" + ] + }, + "update": { + "permissions": [ + "datazone:UpdateEnvironmentProfile", + "datazone:GetEnvironmentProfile" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId", + "/properties/Id" + ], + "properties": { + "AwsAccountId": { + "description": "The AWS account in which the Amazon DataZone environment is created.", + "pattern": "^\\d{12}$", + "type": "string" + }, + "AwsAccountRegion": { + "description": "The AWS region in which this environment profile is created.", + "pattern": "^[a-z]{2}-[a-z]{4,10}-\\d$", + "type": "string" + }, + "CreatedAt": { + "description": "The timestamp of when this environment profile was created.", + "format": "date-time", + "type": "string" + }, + "CreatedBy": { + "description": "The Amazon DataZone user who created this environment profile.", + "type": "string" + }, + "Description": { + "description": "The description of this Amazon DataZone environment profile.", + "maxLength": 2048, + "type": "string" + }, + "DomainId": { + "description": "The ID of the Amazon DataZone domain in which this environment profile is created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "DomainIdentifier": { + "description": "The ID of the Amazon DataZone domain in which this environment profile is created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "EnvironmentBlueprintId": { + "description": "The ID of the blueprint with which this environment profile is created.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "EnvironmentBlueprintIdentifier": { + "description": "The ID of the blueprint with which this environment profile is created.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "Id": { + "description": "The ID of this Amazon DataZone environment profile.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "Name": { + "description": "The name of this Amazon DataZone environment profile.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[\\w -]+$", + "type": "string" + }, + "ProjectId": { + "description": "The identifier of the project in which to create the environment profile.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "ProjectIdentifier": { + "description": "The identifier of the project in which to create the environment profile.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "UpdatedAt": { + "description": "The timestamp of when this environment profile was updated.", + "format": "date-time", + "type": "string" + }, + "UserParameters": { + "description": "The user parameters of this Amazon DataZone environment profile.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EnvironmentParameter" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/CreatedBy", + "/properties/DomainId", + "/properties/EnvironmentBlueprintId", + "/properties/Id", + "/properties/ProjectId", + "/properties/UpdatedAt" + ], + "required": [ + "EnvironmentBlueprintIdentifier", + "ProjectIdentifier", + "DomainIdentifier", + "AwsAccountId", + "AwsAccountRegion", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::DataZone::EnvironmentProfile", + "writeOnlyProperties": [ + "/properties/EnvironmentBlueprintIdentifier", + "/properties/ProjectIdentifier", + "/properties/DomainIdentifier" + ] +} diff --git a/src/schema/aws-datazone-groupprofile.json b/src/schema/aws-datazone-groupprofile.json index 881435a0..d9f58060 100644 --- a/src/schema/aws-datazone-groupprofile.json +++ b/src/schema/aws-datazone-groupprofile.json @@ -1,129 +1,129 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainIdentifier", - "/properties/GroupIdentifier" - ], - "definitions": { - "GroupProfileStatus": { - "description": "The status of the group profile.", - "enum": [ - "ASSIGNED", - "NOT_ASSIGNED" - ], - "type": "string" - } - }, - "description": "Group profiles represent groups of Amazon DataZone users. Groups can be manually created, or mapped to Active Directory groups of enterprise customers. In Amazon DataZone, groups serve two purposes. First, a group can map to a team of users in the organizational chart, and thus reduce the administrative work of a Amazon DataZone project owner when there are new employees joining or leaving a team. Second, corporate administrators use Active Directory groups to manage and update user statuses and so Amazon DataZone domain administrators can use these group memberships to implement Amazon DataZone domain policies.", - "handlers": { - "create": { - "permissions": [ - "datazone:CreateGroupProfile", - "datazone:GetGroupProfile", - "datazone:UpdateGroupProfile", - "sso:ListProfiles", - "sso:GetProfile", - "sso:AssociateProfile", - "sso:DisassociateProfile" - ] - }, - "delete": { - "permissions": [ - "datazone:DeleteGroupProfile", - "datazone:GetGroupProfile", - "datazone:UpdateGroupProfile", - "sso:ListProfiles", - "sso:GetProfile", - "sso:AssociateProfile", - "sso:DisassociateProfile" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DomainIdentifier": { - "$ref": "resource-schema.json#/properties/DomainIdentifier" - } - }, - "required": [ - "DomainIdentifier" - ] - }, - "permissions": [ - "datazone:SearchGroupProfiles" - ] - }, - "read": { - "permissions": [ - "datazone:GetGroupProfile" - ] - }, - "update": { - "permissions": [ - "datazone:UpdateGroupProfile", - "datazone:GetGroupProfile", - "sso:ListProfiles", - "sso:GetProfile", - "sso:AssociateProfile", - "sso:DisassociateProfile" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainId", - "/properties/Id" - ], - "properties": { - "DomainId": { - "description": "The identifier of the Amazon DataZone domain in which the group profile is created.", - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "DomainIdentifier": { - "description": "The identifier of the Amazon DataZone domain in which the group profile would be created.", - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "GroupIdentifier": { - "description": "The ID of the group.", - "pattern": "(^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$|[\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\t\\n\\r ]+)", - "type": "string" - }, - "GroupName": { - "description": "The group-name of the Group Profile.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^[a-zA-Z_0-9+=,.@-]+$", - "type": "string" - }, - "Id": { - "description": "The ID of the Amazon DataZone group profile.", - "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/GroupProfileStatus" - } - }, - "readOnlyProperties": [ - "/properties/DomainId", - "/properties/GroupName", - "/properties/Id" - ], - "required": [ - "DomainIdentifier", - "GroupIdentifier" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::DataZone::GroupProfile", - "writeOnlyProperties": [ - "/properties/DomainIdentifier", - "/properties/GroupIdentifier" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainIdentifier", + "/properties/GroupIdentifier" + ], + "definitions": { + "GroupProfileStatus": { + "description": "The status of the group profile.", + "enum": [ + "ASSIGNED", + "NOT_ASSIGNED" + ], + "type": "string" + } + }, + "description": "Group profiles represent groups of Amazon DataZone users. Groups can be manually created, or mapped to Active Directory groups of enterprise customers. In Amazon DataZone, groups serve two purposes. First, a group can map to a team of users in the organizational chart, and thus reduce the administrative work of a Amazon DataZone project owner when there are new employees joining or leaving a team. Second, corporate administrators use Active Directory groups to manage and update user statuses and so Amazon DataZone domain administrators can use these group memberships to implement Amazon DataZone domain policies.", + "handlers": { + "create": { + "permissions": [ + "datazone:CreateGroupProfile", + "datazone:GetGroupProfile", + "datazone:UpdateGroupProfile", + "sso:ListProfiles", + "sso:GetProfile", + "sso:AssociateProfile", + "sso:DisassociateProfile" + ] + }, + "delete": { + "permissions": [ + "datazone:DeleteGroupProfile", + "datazone:GetGroupProfile", + "datazone:UpdateGroupProfile", + "sso:ListProfiles", + "sso:GetProfile", + "sso:AssociateProfile", + "sso:DisassociateProfile" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainIdentifier": { + "$ref": "resource-schema.json#/properties/DomainIdentifier" + } + }, + "required": [ + "DomainIdentifier" + ] + }, + "permissions": [ + "datazone:SearchGroupProfiles" + ] + }, + "read": { + "permissions": [ + "datazone:GetGroupProfile" + ] + }, + "update": { + "permissions": [ + "datazone:UpdateGroupProfile", + "datazone:GetGroupProfile", + "sso:ListProfiles", + "sso:GetProfile", + "sso:AssociateProfile", + "sso:DisassociateProfile" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId", + "/properties/Id" + ], + "properties": { + "DomainId": { + "description": "The identifier of the Amazon DataZone domain in which the group profile is created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "DomainIdentifier": { + "description": "The identifier of the Amazon DataZone domain in which the group profile would be created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "GroupIdentifier": { + "description": "The ID of the group.", + "pattern": "(^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$|[\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\t\\n\\r ]+)", + "type": "string" + }, + "GroupName": { + "description": "The group-name of the Group Profile.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[a-zA-Z_0-9+=,.@-]+$", + "type": "string" + }, + "Id": { + "description": "The ID of the Amazon DataZone group profile.", + "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/GroupProfileStatus" + } + }, + "readOnlyProperties": [ + "/properties/DomainId", + "/properties/GroupName", + "/properties/Id" + ], + "required": [ + "DomainIdentifier", + "GroupIdentifier" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::DataZone::GroupProfile", + "writeOnlyProperties": [ + "/properties/DomainIdentifier", + "/properties/GroupIdentifier" + ] +} diff --git a/src/schema/aws-datazone-project.json b/src/schema/aws-datazone-project.json index f90d3671..8ab28667 100644 --- a/src/schema/aws-datazone-project.json +++ b/src/schema/aws-datazone-project.json @@ -1,133 +1,133 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/DomainIdentifier" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainIdentifier" - ], - "definitions": {}, - "description": "Amazon DataZone projects are business use case\u2013based groupings of people, assets (data), and tools used to simplify access to the AWS analytics.", - "handlers": { - "create": { - "permissions": [ - "datazone:CreateProject", - "datazone:GetProject" - ] - }, - "delete": { - "permissions": [ - "datazone:DeleteProject", - "datazone:GetProject" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DomainIdentifier": { - "$ref": "resource-schema.json#/properties/DomainIdentifier" - } - }, - "required": [ - "DomainIdentifier" - ] - }, - "permissions": [ - "datazone:ListProjects" - ] - }, - "read": { - "permissions": [ - "datazone:GetProject" - ] - }, - "update": { - "permissions": [ - "datazone:UpdateProject", - "datazone:GetProject" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainId", - "/properties/Id" - ], - "properties": { - "CreatedAt": { - "description": "The timestamp of when the project was created.", - "format": "date-time", - "type": "string" - }, - "CreatedBy": { - "description": "The Amazon DataZone user who created the project.", - "type": "string" - }, - "Description": { - "description": "The description of the Amazon DataZone project.", - "maxLength": 2048, - "type": "string" - }, - "DomainId": { - "description": "The identifier of the Amazon DataZone domain in which the project was created.", - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "DomainIdentifier": { - "description": "The ID of the Amazon DataZone domain in which this project is created.", - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "GlossaryTerms": { - "description": "The glossary terms that can be used in this Amazon DataZone project.", - "insertionOrder": false, - "items": { - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - }, - "Id": { - "description": "The ID of the Amazon DataZone project.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "LastUpdatedAt": { - "description": "The timestamp of when the project was last updated.", - "format": "date-time", - "type": "string" - }, - "Name": { - "description": "The name of the Amazon DataZone project.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[\\w -]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/CreatedAt", - "/properties/CreatedBy", - "/properties/DomainId", - "/properties/LastUpdatedAt" - ], - "required": [ - "DomainIdentifier", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::DataZone::Project", - "writeOnlyProperties": [ - "/properties/DomainIdentifier" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/DomainIdentifier" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainIdentifier" + ], + "definitions": {}, + "description": "Amazon DataZone projects are business use case\u2013based groupings of people, assets (data), and tools used to simplify access to the AWS analytics.", + "handlers": { + "create": { + "permissions": [ + "datazone:CreateProject", + "datazone:GetProject" + ] + }, + "delete": { + "permissions": [ + "datazone:DeleteProject", + "datazone:GetProject" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainIdentifier": { + "$ref": "resource-schema.json#/properties/DomainIdentifier" + } + }, + "required": [ + "DomainIdentifier" + ] + }, + "permissions": [ + "datazone:ListProjects" + ] + }, + "read": { + "permissions": [ + "datazone:GetProject" + ] + }, + "update": { + "permissions": [ + "datazone:UpdateProject", + "datazone:GetProject" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId", + "/properties/Id" + ], + "properties": { + "CreatedAt": { + "description": "The timestamp of when the project was created.", + "format": "date-time", + "type": "string" + }, + "CreatedBy": { + "description": "The Amazon DataZone user who created the project.", + "type": "string" + }, + "Description": { + "description": "The description of the Amazon DataZone project.", + "maxLength": 2048, + "type": "string" + }, + "DomainId": { + "description": "The identifier of the Amazon DataZone domain in which the project was created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "DomainIdentifier": { + "description": "The ID of the Amazon DataZone domain in which this project is created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "GlossaryTerms": { + "description": "The glossary terms that can be used in this Amazon DataZone project.", + "insertionOrder": false, + "items": { + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "Id": { + "description": "The ID of the Amazon DataZone project.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "LastUpdatedAt": { + "description": "The timestamp of when the project was last updated.", + "format": "date-time", + "type": "string" + }, + "Name": { + "description": "The name of the Amazon DataZone project.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[\\w -]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/CreatedAt", + "/properties/CreatedBy", + "/properties/DomainId", + "/properties/LastUpdatedAt" + ], + "required": [ + "DomainIdentifier", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::DataZone::Project", + "writeOnlyProperties": [ + "/properties/DomainIdentifier" + ] +} diff --git a/src/schema/aws-datazone-projectmembership.json b/src/schema/aws-datazone-projectmembership.json index aca6e4dd..76dbd34f 100644 --- a/src/schema/aws-datazone-projectmembership.json +++ b/src/schema/aws-datazone-projectmembership.json @@ -1,138 +1,141 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainIdentifier", - "/properties/ProjectIdentifier", - "/properties/Member" - ], - "definitions": { - "Member": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "UserIdentifier": { - "type": "string" - } - }, - "required": [ - "UserIdentifier" - ], - "title": "UserIdentifier", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "GroupIdentifier": { - "type": "string" - } - }, - "required": [ - "GroupIdentifier" - ], - "title": "GroupIdentifier", - "type": "object" - } - ] - }, - "MemberIdentifierType": { - "enum": [ - "USER_IDENTIFIER", - "GROUP_IDENTIFIER" - ], - "type": "string" - }, - "UserDesignation": { - "enum": [ - "PROJECT_OWNER", - "PROJECT_CONTRIBUTOR" - ], - "type": "string" - } - }, - "description": "Definition of AWS::DataZone::ProjectMembership Resource Type", - "handlers": { - "create": { - "permissions": [ - "datazone:CreateProjectMembership", - "datazone:ListProjectMemberships", - "iam:GetRole", - "datazone:GetGroupProfile", - "datazone:GetUserProfile" - ] - }, - "delete": { - "permissions": [ - "datazone:DeleteProjectMembership" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DomainIdentifier": { - "$ref": "resource-schema.json#/properties/DomainIdentifier" - }, - "ProjectIdentifier": { - "$ref": "resource-schema.json#/properties/ProjectIdentifier" - } - }, - "required": [ - "DomainIdentifier", - "ProjectIdentifier" - ] - }, - "permissions": [ - "datazone:ListProjectMemberships" - ] - }, - "read": { - "permissions": [ - "datazone:ListProjectMemberships" - ] - }, - "update": { - "permissions": [ - "datazone:CreateProjectMembership", - "datazone:DeleteProjectMembership" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainIdentifier", - "/properties/MemberIdentifier", - "/properties/MemberIdentifierType", - "/properties/ProjectIdentifier" - ], - "properties": { - "Designation": { - "$ref": "#/definitions/UserDesignation" - }, - "DomainIdentifier": { - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "Member": { - "$ref": "#/definitions/Member" - }, - "ProjectIdentifier": { - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - } - }, - "required": [ - "Designation", - "DomainIdentifier", - "ProjectIdentifier", - "Member" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", - "tagging": { - "taggable": false - }, - "typeName": "AWS::DataZone::ProjectMembership", - "writeOnlyProperties": [ - "/properties/Designation", - "/properties/Member" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainIdentifier", + "/properties/ProjectIdentifier", + "/properties/Member" + ], + "definitions": { + "Member": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "UserIdentifier": { + "type": "string" + } + }, + "required": [ + "UserIdentifier" + ], + "title": "UserIdentifier", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "GroupIdentifier": { + "type": "string" + } + }, + "required": [ + "GroupIdentifier" + ], + "title": "GroupIdentifier", + "type": "object" + } + ] + }, + "MemberIdentifierType": { + "enum": [ + "USER_IDENTIFIER", + "GROUP_IDENTIFIER" + ], + "type": "string" + }, + "UserDesignation": { + "enum": [ + "PROJECT_OWNER", + "PROJECT_CONTRIBUTOR", + "PROJECT_CATALOG_VIEWER", + "PROJECT_CATALOG_CONSUMER", + "PROJECT_CATALOG_STEWARD" + ], + "type": "string" + } + }, + "description": "Definition of AWS::DataZone::ProjectMembership Resource Type", + "handlers": { + "create": { + "permissions": [ + "datazone:CreateProjectMembership", + "datazone:ListProjectMemberships", + "iam:GetRole", + "datazone:GetGroupProfile", + "datazone:GetUserProfile" + ] + }, + "delete": { + "permissions": [ + "datazone:DeleteProjectMembership" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainIdentifier": { + "$ref": "resource-schema.json#/properties/DomainIdentifier" + }, + "ProjectIdentifier": { + "$ref": "resource-schema.json#/properties/ProjectIdentifier" + } + }, + "required": [ + "DomainIdentifier", + "ProjectIdentifier" + ] + }, + "permissions": [ + "datazone:ListProjectMemberships" + ] + }, + "read": { + "permissions": [ + "datazone:ListProjectMemberships" + ] + }, + "update": { + "permissions": [ + "datazone:CreateProjectMembership", + "datazone:DeleteProjectMembership" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainIdentifier", + "/properties/MemberIdentifier", + "/properties/MemberIdentifierType", + "/properties/ProjectIdentifier" + ], + "properties": { + "Designation": { + "$ref": "#/definitions/UserDesignation" + }, + "DomainIdentifier": { + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "Member": { + "$ref": "#/definitions/Member" + }, + "ProjectIdentifier": { + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + } + }, + "required": [ + "Designation", + "DomainIdentifier", + "ProjectIdentifier", + "Member" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", + "tagging": { + "taggable": false + }, + "typeName": "AWS::DataZone::ProjectMembership", + "writeOnlyProperties": [ + "/properties/Designation", + "/properties/Member" + ] +} diff --git a/src/schema/aws-datazone-subscriptiontarget.json b/src/schema/aws-datazone-subscriptiontarget.json index 418a79e6..a23edd58 100644 --- a/src/schema/aws-datazone-subscriptiontarget.json +++ b/src/schema/aws-datazone-subscriptiontarget.json @@ -1,212 +1,211 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Type", - "/properties/DomainIdentifier", - "/properties/EnvironmentIdentifier" - ], - "definitions": { - "SubscriptionTargetForm": { - "additionalProperties": false, - "description": "The details of the subscription target configuration.", - "properties": { - "Content": { - "description": "The content of the subscription target configuration.", - "type": "string" - }, - "FormName": { - "description": "The form name included in the subscription target configuration.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?![0-9_])\\w+$|^_\\w*[a-zA-Z0-9]\\w*$", - "type": "string" - } - }, - "required": [ - "Content", - "FormName" - ], - "type": "object" - } - }, - "description": "Subscription targets enables one to access the data to which you have subscribed in your projects.", - "handlers": { - "create": { - "permissions": [ - "datazone:CreateSubscriptionTarget", - "datazone:GetSubscriptionTarget", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "datazone:DeleteSubscriptionTarget" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DomainIdentifier": { - "$ref": "resource-schema.json#/properties/DomainIdentifier" - }, - "EnvironmentIdentifier": { - "$ref": "resource-schema.json#/properties/EnvironmentIdentifier" - } - }, - "required": [ - "DomainIdentifier" - ] - }, - "permissions": [ - "datazone:ListSubscriptionTargets" - ] - }, - "read": { - "permissions": [ - "datazone:GetSubscriptionTarget" - ] - }, - "update": { - "permissions": [ - "datazone:UpdateSubscriptionTarget", - "datazone:GetSubscriptionTarget", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainId", - "/properties/EnvironmentId", - "/properties/Id" - ], - "properties": { - "ApplicableAssetTypes": { - "description": "The asset types that can be included in the subscription target.", - "insertionOrder": false, - "items": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[^\\.]*", - "type": "string" - }, - "type": "array" - }, - "AuthorizedPrincipals": { - "description": "The authorized principals of the subscription target.", - "insertionOrder": false, - "items": { - "pattern": "^[a-zA-Z0-9:/_-]*$", - "type": "string" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "CreatedAt": { - "description": "The timestamp of when the subscription target was created.", - "format": "date-time", - "type": "string" - }, - "CreatedBy": { - "description": "The Amazon DataZone user who created the subscription target.", - "type": "string" - }, - "DomainId": { - "description": "The ID of the Amazon DataZone domain in which subscription target is created.", - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "DomainIdentifier": { - "description": "The ID of the Amazon DataZone domain in which subscription target would be created.", - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "EnvironmentId": { - "description": "The ID of the environment in which subscription target is created.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "EnvironmentIdentifier": { - "description": "The ID of the environment in which subscription target would be created.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "Id": { - "description": "The ID of the subscription target.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "ManageAccessRole": { - "description": "The manage access role that is used to create the subscription target.", - "type": "string" - }, - "Name": { - "description": "The name of the subscription target.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "ProjectId": { - "description": "The identifier of the project specified in the subscription target.", - "pattern": "^[a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "Provider": { - "description": "The provider of the subscription target.", - "type": "string" - }, - "SubscriptionTargetConfig": { - "description": "The configuration of the subscription target.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SubscriptionTargetForm" - }, - "type": "array" - }, - "Type": { - "description": "The type of the subscription target.", - "type": "string" - }, - "UpdatedAt": { - "description": "The timestamp of when the subscription target was updated.", - "format": "date-time", - "type": "string" - }, - "UpdatedBy": { - "description": "The Amazon DataZone user who updated the subscription target.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/CreatedBy", - "/properties/DomainId", - "/properties/EnvironmentId", - "/properties/Id", - "/properties/ProjectId", - "/properties/UpdatedAt", - "/properties/UpdatedBy" - ], - "required": [ - "ApplicableAssetTypes", - "AuthorizedPrincipals", - "DomainIdentifier", - "EnvironmentIdentifier", - "ManageAccessRole", - "Name", - "SubscriptionTargetConfig", - "Type" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::DataZone::SubscriptionTarget", - "writeOnlyProperties": [ - "/properties/DomainIdentifier", - "/properties/EnvironmentIdentifier" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/DomainIdentifier", + "/properties/EnvironmentIdentifier" + ], + "definitions": { + "SubscriptionTargetForm": { + "additionalProperties": false, + "description": "The details of the subscription target configuration.", + "properties": { + "Content": { + "description": "The content of the subscription target configuration.", + "type": "string" + }, + "FormName": { + "description": "The form name included in the subscription target configuration.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?![0-9_])\\w+$|^_\\w*[a-zA-Z0-9]\\w*$", + "type": "string" + } + }, + "required": [ + "Content", + "FormName" + ], + "type": "object" + } + }, + "description": "Subscription targets enables one to access the data to which you have subscribed in your projects.", + "handlers": { + "create": { + "permissions": [ + "datazone:CreateSubscriptionTarget", + "datazone:GetSubscriptionTarget", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "datazone:DeleteSubscriptionTarget" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainIdentifier": { + "$ref": "resource-schema.json#/properties/DomainIdentifier" + }, + "EnvironmentIdentifier": { + "$ref": "resource-schema.json#/properties/EnvironmentIdentifier" + } + }, + "required": [ + "DomainIdentifier" + ] + }, + "permissions": [ + "datazone:ListSubscriptionTargets" + ] + }, + "read": { + "permissions": [ + "datazone:GetSubscriptionTarget" + ] + }, + "update": { + "permissions": [ + "datazone:UpdateSubscriptionTarget", + "datazone:GetSubscriptionTarget", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId", + "/properties/EnvironmentId", + "/properties/Id" + ], + "properties": { + "ApplicableAssetTypes": { + "description": "The asset types that can be included in the subscription target.", + "insertionOrder": false, + "items": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[^\\.]*", + "type": "string" + }, + "type": "array" + }, + "AuthorizedPrincipals": { + "description": "The authorized principals of the subscription target.", + "insertionOrder": false, + "items": { + "pattern": "^[a-zA-Z0-9:/_-]*$", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "CreatedAt": { + "description": "The timestamp of when the subscription target was created.", + "format": "date-time", + "type": "string" + }, + "CreatedBy": { + "description": "The Amazon DataZone user who created the subscription target.", + "type": "string" + }, + "DomainId": { + "description": "The ID of the Amazon DataZone domain in which subscription target is created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "DomainIdentifier": { + "description": "The ID of the Amazon DataZone domain in which subscription target would be created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "EnvironmentId": { + "description": "The ID of the environment in which subscription target is created.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "EnvironmentIdentifier": { + "description": "The ID of the environment in which subscription target would be created.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "Id": { + "description": "The ID of the subscription target.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "ManageAccessRole": { + "description": "The manage access role that is used to create the subscription target.", + "type": "string" + }, + "Name": { + "description": "The name of the subscription target.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "ProjectId": { + "description": "The identifier of the project specified in the subscription target.", + "pattern": "^[a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "Provider": { + "description": "The provider of the subscription target.", + "type": "string" + }, + "SubscriptionTargetConfig": { + "description": "The configuration of the subscription target.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubscriptionTargetForm" + }, + "type": "array" + }, + "Type": { + "description": "The type of the subscription target.", + "type": "string" + }, + "UpdatedAt": { + "description": "The timestamp of when the subscription target was updated.", + "format": "date-time", + "type": "string" + }, + "UpdatedBy": { + "description": "The Amazon DataZone user who updated the subscription target.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/CreatedBy", + "/properties/DomainId", + "/properties/EnvironmentId", + "/properties/Id", + "/properties/ProjectId", + "/properties/UpdatedAt", + "/properties/UpdatedBy" + ], + "required": [ + "ApplicableAssetTypes", + "AuthorizedPrincipals", + "DomainIdentifier", + "EnvironmentIdentifier", + "Name", + "SubscriptionTargetConfig", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::DataZone::SubscriptionTarget", + "writeOnlyProperties": [ + "/properties/DomainIdentifier", + "/properties/EnvironmentIdentifier" + ] +} diff --git a/src/schema/aws-datazone-userprofile.json b/src/schema/aws-datazone-userprofile.json index d343bf2b..7818c2c3 100644 --- a/src/schema/aws-datazone-userprofile.json +++ b/src/schema/aws-datazone-userprofile.json @@ -1,227 +1,227 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainIdentifier", - "/properties/UserIdentifier", - "/properties/UserType" - ], - "definitions": { - "IamUserProfileDetails": { - "additionalProperties": false, - "description": "The details of the IAM User Profile.", - "properties": { - "Arn": { - "description": "The ARN of the IAM User Profile.", - "type": "string" - } - }, - "type": "object" - }, - "SsoUserProfileDetails": { - "additionalProperties": false, - "description": "The details of the SSO User Profile.", - "properties": { - "FirstName": { - "description": "The First Name of the IAM User Profile.", - "type": "string" - }, - "LastName": { - "description": "The Last Name of the IAM User Profile.", - "type": "string" - }, - "Username": { - "description": "The username of the SSO User Profile.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^[a-zA-Z_0-9+=,.@-]+$", - "type": "string" - } - }, - "type": "object" - }, - "UserProfileDetails": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Iam": { - "$ref": "#/definitions/IamUserProfileDetails" - } - }, - "required": [ - "Iam" - ], - "title": "Iam", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Sso": { - "$ref": "#/definitions/SsoUserProfileDetails" - } - }, - "required": [ - "Sso" - ], - "title": "Sso", - "type": "object" - } - ] - }, - "UserProfileStatus": { - "description": "The status of the user profile.", - "enum": [ - "ASSIGNED", - "NOT_ASSIGNED", - "ACTIVATED", - "DEACTIVATED" - ], - "type": "string" - }, - "UserProfileType": { - "description": "The type of the user profile.", - "enum": [ - "IAM", - "SSO" - ], - "type": "string" - }, - "UserType": { - "description": "The type of the user.", - "enum": [ - "IAM_USER", - "IAM_ROLE", - "SSO_USER" - ], - "type": "string" - } - }, - "description": "A user profile represents Amazon DataZone users. Amazon DataZone supports both IAM roles and SSO identities to interact with the Amazon DataZone Management Console and the data portal for different purposes. Domain administrators use IAM roles to perform the initial administrative domain-related work in the Amazon DataZone Management Console, including creating new Amazon DataZone domains, configuring metadata form types, and implementing policies. Data workers use their SSO corporate identities via Identity Center to log into the Amazon DataZone Data Portal and access projects where they have memberships.", - "handlers": { - "create": { - "permissions": [ - "datazone:CreateUserProfile", - "datazone:GetUserProfile", - "datazone:UpdateUserProfile", - "datazone:GetDomain", - "sso:ListProfiles", - "sso:GetProfile", - "sso:AssociateProfile", - "sso:DisassociateProfile", - "iam:GetRole", - "iam:GetUser" - ] - }, - "delete": { - "permissions": [ - "datazone:DeleteUserProfile", - "datazone:GetUserProfile", - "datazone:UpdateUserProfile", - "sso:ListProfiles", - "sso:GetProfile", - "sso:AssociateProfile", - "sso:DisassociateProfile", - "iam:GetRole", - "iam:GetUser" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DomainIdentifier": { - "$ref": "resource-schema.json#/properties/DomainIdentifier" - }, - "UserType": { - "$ref": "resource-schema.json#/properties/UserType" - } - }, - "required": [ - "DomainIdentifier", - "UserType" - ] - }, - "permissions": [ - "datazone:SearchUserProfiles" - ] - }, - "read": { - "permissions": [ - "datazone:GetUserProfile" - ] - }, - "update": { - "permissions": [ - "datazone:UpdateUserProfile", - "datazone:GetUserProfile", - "datazone:UpdateUserProfile", - "sso:ListProfiles", - "sso:GetProfile", - "sso:AssociateProfile", - "sso:DisassociateProfile", - "iam:GetRole", - "iam:GetUser" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainId", - "/properties/Id" - ], - "properties": { - "Details": { - "$ref": "#/definitions/UserProfileDetails" - }, - "DomainId": { - "description": "The identifier of the Amazon DataZone domain in which the user profile is created.", - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "DomainIdentifier": { - "description": "The identifier of the Amazon DataZone domain in which the user profile would be created.", - "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", - "type": "string" - }, - "Id": { - "description": "The ID of the Amazon DataZone user profile.", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/UserProfileStatus" - }, - "Type": { - "$ref": "#/definitions/UserProfileType" - }, - "UserIdentifier": { - "description": "The ID of the user.", - "pattern": "(^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$|^[a-zA-Z_0-9+=,.@-]+$|^arn:aws:iam::\\d{12}:.+$)", - "type": "string" - }, - "UserType": { - "$ref": "#/definitions/UserType" - } - }, - "readOnlyProperties": [ - "/properties/DomainId", - "/properties/Type", - "/properties/Id", - "/properties/Details" - ], - "required": [ - "DomainIdentifier", - "UserIdentifier" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::DataZone::UserProfile", - "writeOnlyProperties": [ - "/properties/DomainIdentifier", - "/properties/UserIdentifier", - "/properties/UserType" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainIdentifier", + "/properties/UserIdentifier", + "/properties/UserType" + ], + "definitions": { + "IamUserProfileDetails": { + "additionalProperties": false, + "description": "The details of the IAM User Profile.", + "properties": { + "Arn": { + "description": "The ARN of the IAM User Profile.", + "type": "string" + } + }, + "type": "object" + }, + "SsoUserProfileDetails": { + "additionalProperties": false, + "description": "The details of the SSO User Profile.", + "properties": { + "FirstName": { + "description": "The First Name of the IAM User Profile.", + "type": "string" + }, + "LastName": { + "description": "The Last Name of the IAM User Profile.", + "type": "string" + }, + "Username": { + "description": "The username of the SSO User Profile.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[a-zA-Z_0-9+=,.@-]+$", + "type": "string" + } + }, + "type": "object" + }, + "UserProfileDetails": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Iam": { + "$ref": "#/definitions/IamUserProfileDetails" + } + }, + "required": [ + "Iam" + ], + "title": "Iam", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Sso": { + "$ref": "#/definitions/SsoUserProfileDetails" + } + }, + "required": [ + "Sso" + ], + "title": "Sso", + "type": "object" + } + ] + }, + "UserProfileStatus": { + "description": "The status of the user profile.", + "enum": [ + "ASSIGNED", + "NOT_ASSIGNED", + "ACTIVATED", + "DEACTIVATED" + ], + "type": "string" + }, + "UserProfileType": { + "description": "The type of the user profile.", + "enum": [ + "IAM", + "SSO" + ], + "type": "string" + }, + "UserType": { + "description": "The type of the user.", + "enum": [ + "IAM_USER", + "IAM_ROLE", + "SSO_USER" + ], + "type": "string" + } + }, + "description": "A user profile represents Amazon DataZone users. Amazon DataZone supports both IAM roles and SSO identities to interact with the Amazon DataZone Management Console and the data portal for different purposes. Domain administrators use IAM roles to perform the initial administrative domain-related work in the Amazon DataZone Management Console, including creating new Amazon DataZone domains, configuring metadata form types, and implementing policies. Data workers use their SSO corporate identities via Identity Center to log into the Amazon DataZone Data Portal and access projects where they have memberships.", + "handlers": { + "create": { + "permissions": [ + "datazone:CreateUserProfile", + "datazone:GetUserProfile", + "datazone:UpdateUserProfile", + "datazone:GetDomain", + "sso:ListProfiles", + "sso:GetProfile", + "sso:AssociateProfile", + "sso:DisassociateProfile", + "iam:GetRole", + "iam:GetUser" + ] + }, + "delete": { + "permissions": [ + "datazone:DeleteUserProfile", + "datazone:GetUserProfile", + "datazone:UpdateUserProfile", + "sso:ListProfiles", + "sso:GetProfile", + "sso:AssociateProfile", + "sso:DisassociateProfile", + "iam:GetRole", + "iam:GetUser" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DomainIdentifier": { + "$ref": "resource-schema.json#/properties/DomainIdentifier" + }, + "UserType": { + "$ref": "resource-schema.json#/properties/UserType" + } + }, + "required": [ + "DomainIdentifier", + "UserType" + ] + }, + "permissions": [ + "datazone:SearchUserProfiles" + ] + }, + "read": { + "permissions": [ + "datazone:GetUserProfile" + ] + }, + "update": { + "permissions": [ + "datazone:UpdateUserProfile", + "datazone:GetUserProfile", + "datazone:UpdateUserProfile", + "sso:ListProfiles", + "sso:GetProfile", + "sso:AssociateProfile", + "sso:DisassociateProfile", + "iam:GetRole", + "iam:GetUser" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId", + "/properties/Id" + ], + "properties": { + "Details": { + "$ref": "#/definitions/UserProfileDetails" + }, + "DomainId": { + "description": "The identifier of the Amazon DataZone domain in which the user profile is created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "DomainIdentifier": { + "description": "The identifier of the Amazon DataZone domain in which the user profile would be created.", + "pattern": "^dzd[-_][a-zA-Z0-9_-]{1,36}$", + "type": "string" + }, + "Id": { + "description": "The ID of the Amazon DataZone user profile.", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/UserProfileStatus" + }, + "Type": { + "$ref": "#/definitions/UserProfileType" + }, + "UserIdentifier": { + "description": "The ID of the user.", + "pattern": "(^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$|^[a-zA-Z_0-9+=,.@-]+$|^arn:aws:iam::\\d{12}:.+$)", + "type": "string" + }, + "UserType": { + "$ref": "#/definitions/UserType" + } + }, + "readOnlyProperties": [ + "/properties/DomainId", + "/properties/Type", + "/properties/Id", + "/properties/Details" + ], + "required": [ + "DomainIdentifier", + "UserIdentifier" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-datazone", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::DataZone::UserProfile", + "writeOnlyProperties": [ + "/properties/DomainIdentifier", + "/properties/UserIdentifier", + "/properties/UserType" + ] +} diff --git a/src/schema/aws-dax-cluster.json b/src/schema/aws-dax-cluster.json index 8a2b3c39..30dd6310 100644 --- a/src/schema/aws-dax-cluster.json +++ b/src/schema/aws-dax-cluster.json @@ -1,102 +1,102 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/IAMRoleARN", - "/properties/SSESpecification", - "/properties/ClusterEndpointEncryptionType", - "/properties/ClusterName", - "/properties/NodeType", - "/properties/SubnetGroupName" - ], - "definitions": { - "SSESpecification": { - "additionalProperties": false, - "properties": { - "SSEEnabled": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::DAX::Cluster", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "AvailabilityZones": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ClusterDiscoveryEndpoint": { - "type": "string" - }, - "ClusterDiscoveryEndpointURL": { - "type": "string" - }, - "ClusterEndpointEncryptionType": { - "type": "string" - }, - "ClusterName": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "IAMRoleARN": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "NodeType": { - "type": "string" - }, - "NotificationTopicARN": { - "type": "string" - }, - "ParameterGroupName": { - "type": "string" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "ReplicationFactor": { - "type": "integer" - }, - "SSESpecification": { - "$ref": "#/definitions/SSESpecification" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetGroupName": { - "type": "string" - }, - "Tags": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ClusterDiscoveryEndpoint", - "/properties/Arn", - "/properties/ClusterDiscoveryEndpointURL" - ], - "required": [ - "ReplicationFactor", - "IAMRoleARN", - "NodeType" - ], - "typeName": "AWS::DAX::Cluster" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IAMRoleARN", + "/properties/SSESpecification", + "/properties/ClusterEndpointEncryptionType", + "/properties/ClusterName", + "/properties/NodeType", + "/properties/SubnetGroupName" + ], + "definitions": { + "SSESpecification": { + "additionalProperties": false, + "properties": { + "SSEEnabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DAX::Cluster", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AvailabilityZones": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ClusterDiscoveryEndpoint": { + "type": "string" + }, + "ClusterDiscoveryEndpointURL": { + "type": "string" + }, + "ClusterEndpointEncryptionType": { + "type": "string" + }, + "ClusterName": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "IAMRoleARN": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "NodeType": { + "type": "string" + }, + "NotificationTopicARN": { + "type": "string" + }, + "ParameterGroupName": { + "type": "string" + }, + "PreferredMaintenanceWindow": { + "type": "string" + }, + "ReplicationFactor": { + "type": "integer" + }, + "SSESpecification": { + "$ref": "#/definitions/SSESpecification" + }, + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SubnetGroupName": { + "type": "string" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/ClusterDiscoveryEndpoint", + "/properties/Arn", + "/properties/ClusterDiscoveryEndpointURL" + ], + "required": [ + "ReplicationFactor", + "IAMRoleARN", + "NodeType" + ], + "typeName": "AWS::DAX::Cluster" +} diff --git a/src/schema/aws-dax-parametergroup.json b/src/schema/aws-dax-parametergroup.json index b67f2db7..9c306e88 100644 --- a/src/schema/aws-dax-parametergroup.json +++ b/src/schema/aws-dax-parametergroup.json @@ -1,28 +1,28 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ParameterGroupName" - ], - "description": "Resource Type definition for AWS::DAX::ParameterGroup", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ParameterGroupName": { - "type": "string" - }, - "ParameterNameValues": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "typeName": "AWS::DAX::ParameterGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ParameterGroupName" + ], + "description": "Resource Type definition for AWS::DAX::ParameterGroup", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "ParameterGroupName": { + "type": "string" + }, + "ParameterNameValues": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::DAX::ParameterGroup" +} diff --git a/src/schema/aws-dax-subnetgroup.json b/src/schema/aws-dax-subnetgroup.json index 95c760bd..d2acd598 100644 --- a/src/schema/aws-dax-subnetgroup.json +++ b/src/schema/aws-dax-subnetgroup.json @@ -1,35 +1,35 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SubnetGroupName" - ], - "description": "Resource Type definition for AWS::DAX::SubnetGroup", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "SubnetGroupName": { - "type": "string" - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "SubnetIds" - ], - "typeName": "AWS::DAX::SubnetGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubnetGroupName" + ], + "description": "Resource Type definition for AWS::DAX::SubnetGroup", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "SubnetGroupName": { + "type": "string" + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "SubnetIds" + ], + "typeName": "AWS::DAX::SubnetGroup" +} diff --git a/src/schema/aws-deadline-farm.json b/src/schema/aws-deadline-farm.json index 379f411c..27282e51 100644 --- a/src/schema/aws-deadline-farm.json +++ b/src/schema/aws-deadline-farm.json @@ -1,147 +1,147 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKeyArn" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::Deadline::Farm Resource Type", - "handlers": { - "create": { - "permissions": [ - "deadline:CreateFarm", - "deadline:GetFarm", - "deadline:TagResource", - "deadline:ListTagsForResource", - "identitystore:ListGroupMembershipsForMember", - "kms:Encrypt", - "kms:Decrypt", - "kms:CreateGrant", - "kms:GenerateDataKey" - ] - }, - "delete": { - "permissions": [ - "deadline:DeleteFarm", - "deadline:GetFarm", - "identitystore:ListGroupMembershipsForMember", - "kms:Encrypt", - "kms:Decrypt", - "kms:CreateGrant", - "kms:GenerateDataKey" - ] - }, - "list": { - "permissions": [ - "deadline:ListFarms", - "identitystore:ListGroupMembershipsForMember" - ] - }, - "read": { - "permissions": [ - "deadline:GetFarm", - "deadline:ListTagsForResource", - "identitystore:ListGroupMembershipsForMember", - "kms:Encrypt", - "kms:Decrypt", - "kms:CreateGrant", - "kms:GenerateDataKey" - ] - }, - "update": { - "permissions": [ - "deadline:UpdateFarm", - "deadline:GetFarm", - "deadline:TagResource", - "deadline:UntagResource", - "deadline:ListTagsForResource", - "identitystore:ListGroupMembershipsForMember", - "kms:Encrypt", - "kms:Decrypt", - "kms:CreateGrant", - "kms:GenerateDataKey" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "pattern": "^arn:(aws[a-zA-Z-]*):deadline:[a-z0-9-]+:[0-9]+:farm/farm-[0-9a-z]{32}$", - "type": "string" - }, - "Description": { - "default": "", - "maxLength": 100, - "minLength": 0, - "type": "string" - }, - "DisplayName": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "FarmId": { - "pattern": "^farm-[0-9a-f]{32}$", - "type": "string" - }, - "KmsKeyArn": { - "pattern": "^arn:aws[-a-z]*:kms:.*:key/.*", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/FarmId", - "/properties/Arn" - ], - "required": [ - "DisplayName" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "deadline:TagResource", - "deadline:UntagResource", - "deadline:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Deadline::Farm" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KmsKeyArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Deadline::Farm Resource Type", + "handlers": { + "create": { + "permissions": [ + "deadline:CreateFarm", + "deadline:GetFarm", + "deadline:TagResource", + "deadline:ListTagsForResource", + "identitystore:ListGroupMembershipsForMember", + "kms:Encrypt", + "kms:Decrypt", + "kms:CreateGrant", + "kms:GenerateDataKey" + ] + }, + "delete": { + "permissions": [ + "deadline:DeleteFarm", + "deadline:GetFarm", + "identitystore:ListGroupMembershipsForMember", + "kms:Encrypt", + "kms:Decrypt", + "kms:CreateGrant", + "kms:GenerateDataKey" + ] + }, + "list": { + "permissions": [ + "deadline:ListFarms", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "read": { + "permissions": [ + "deadline:GetFarm", + "deadline:ListTagsForResource", + "identitystore:ListGroupMembershipsForMember", + "kms:Encrypt", + "kms:Decrypt", + "kms:CreateGrant", + "kms:GenerateDataKey" + ] + }, + "update": { + "permissions": [ + "deadline:UpdateFarm", + "deadline:GetFarm", + "deadline:TagResource", + "deadline:UntagResource", + "deadline:ListTagsForResource", + "identitystore:ListGroupMembershipsForMember", + "kms:Encrypt", + "kms:Decrypt", + "kms:CreateGrant", + "kms:GenerateDataKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "^arn:(aws[a-zA-Z-]*):deadline:[a-z0-9-]+:[0-9]+:farm/farm-[0-9a-z]{32}$", + "type": "string" + }, + "Description": { + "default": "", + "maxLength": 100, + "minLength": 0, + "type": "string" + }, + "DisplayName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "FarmId": { + "pattern": "^farm-[0-9a-f]{32}$", + "type": "string" + }, + "KmsKeyArn": { + "pattern": "^arn:aws[-a-z]*:kms:.*:key/.*", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/FarmId", + "/properties/Arn" + ], + "required": [ + "DisplayName" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "deadline:TagResource", + "deadline:UntagResource", + "deadline:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Deadline::Farm" +} diff --git a/src/schema/aws-deadline-fleet.json b/src/schema/aws-deadline-fleet.json index 0a404f35..98fe7c9d 100644 --- a/src/schema/aws-deadline-fleet.json +++ b/src/schema/aws-deadline-fleet.json @@ -1,593 +1,638 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FarmId" - ], - "definitions": { - "AcceleratorCountRange": { - "additionalProperties": false, - "properties": { - "Max": { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - "Min": { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "Min" - ], - "type": "object" - }, - "AcceleratorTotalMemoryMiBRange": { - "additionalProperties": false, - "properties": { - "Max": { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - "Min": { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "Min" - ], - "type": "object" - }, - "AcceleratorType": { - "enum": [ - "gpu" - ], - "type": "string" - }, - "AutoScalingMode": { - "enum": [ - "NO_SCALING", - "EVENT_BASED_AUTO_SCALING" - ], - "type": "string" - }, - "CpuArchitectureType": { - "enum": [ - "x86_64", - "arm64" - ], - "type": "string" - }, - "CustomerManagedFleetConfiguration": { - "additionalProperties": false, - "properties": { - "Mode": { - "$ref": "#/definitions/AutoScalingMode" - }, - "StorageProfileId": { - "pattern": "^sp-[0-9a-f]{32}$", - "type": "string" - }, - "WorkerCapabilities": { - "$ref": "#/definitions/CustomerManagedWorkerCapabilities" - } - }, - "required": [ - "Mode", - "WorkerCapabilities" - ], - "type": "object" - }, - "CustomerManagedFleetOperatingSystemFamily": { - "enum": [ - "WINDOWS", - "LINUX", - "MACOS" - ], - "type": "string" - }, - "CustomerManagedWorkerCapabilities": { - "additionalProperties": false, - "properties": { - "AcceleratorCount": { - "$ref": "#/definitions/AcceleratorCountRange" - }, - "AcceleratorTotalMemoryMiB": { - "$ref": "#/definitions/AcceleratorTotalMemoryMiBRange" - }, - "AcceleratorTypes": { - "items": { - "$ref": "#/definitions/AcceleratorType" - }, - "type": "array" - }, - "CpuArchitectureType": { - "$ref": "#/definitions/CpuArchitectureType" - }, - "CustomAmounts": { - "items": { - "$ref": "#/definitions/FleetAmountCapability" - }, - "maxItems": 15, - "minItems": 1, - "type": "array" - }, - "CustomAttributes": { - "items": { - "$ref": "#/definitions/FleetAttributeCapability" - }, - "maxItems": 15, - "minItems": 1, - "type": "array" - }, - "MemoryMiB": { - "$ref": "#/definitions/MemoryMiBRange" - }, - "OsFamily": { - "$ref": "#/definitions/CustomerManagedFleetOperatingSystemFamily" - }, - "VCpuCount": { - "$ref": "#/definitions/VCpuCountRange" - } - }, - "required": [ - "CpuArchitectureType", - "MemoryMiB", - "OsFamily", - "VCpuCount" - ], - "type": "object" - }, - "Ec2EbsVolume": { - "additionalProperties": false, - "properties": { - "Iops": { - "default": 3000, - "maximum": 16000, - "minimum": 3000, - "type": "integer" - }, - "SizeGiB": { - "default": 250, - "type": "integer" - }, - "ThroughputMiB": { - "default": 125, - "maximum": 1000, - "minimum": 125, - "type": "integer" - } - }, - "type": "object" - }, - "Ec2MarketType": { - "enum": [ - "on-demand", - "spot" - ], - "type": "string" - }, - "FleetAmountCapability": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "number" - }, - "Min": { - "type": "number" - }, - "Name": { - "maxLength": 100, - "minLength": 1, - "pattern": "^([a-zA-Z][a-zA-Z0-9]{0,63}:)?amount(\\.[a-zA-Z][a-zA-Z0-9]{0,63})+$", - "type": "string" - } - }, - "required": [ - "Min", - "Name" - ], - "type": "object" - }, - "FleetAttributeCapability": { - "additionalProperties": false, - "properties": { - "Name": { - "maxLength": 100, - "minLength": 1, - "pattern": "^([a-zA-Z][a-zA-Z0-9]{0,63}:)?attr(\\.[a-zA-Z][a-zA-Z0-9]{0,63})+$", - "type": "string" - }, - "Values": { - "items": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z_]([a-zA-Z0-9_\\-]{0,99})$", - "type": "string" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Name", - "Values" - ], - "type": "object" - }, - "FleetCapabilities": { - "additionalProperties": false, - "properties": { - "Amounts": { - "items": { - "$ref": "#/definitions/FleetAmountCapability" - }, - "maxItems": 15, - "minItems": 1, - "type": "array" - }, - "Attributes": { - "items": { - "$ref": "#/definitions/FleetAttributeCapability" - }, - "maxItems": 15, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "FleetConfiguration": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "CustomerManaged": { - "$ref": "#/definitions/CustomerManagedFleetConfiguration" - } - }, - "required": [ - "CustomerManaged" - ], - "title": "CustomerManaged", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "ServiceManagedEc2": { - "$ref": "#/definitions/ServiceManagedEc2FleetConfiguration" - } - }, - "required": [ - "ServiceManagedEc2" - ], - "title": "ServiceManagedEc2", - "type": "object" - } - ] - }, - "FleetStatus": { - "enum": [ - "ACTIVE", - "CREATE_IN_PROGRESS", - "UPDATE_IN_PROGRESS", - "CREATE_FAILED", - "UPDATE_FAILED" - ], - "type": "string" - }, - "MemoryMiBRange": { - "additionalProperties": false, - "properties": { - "Max": { - "maximum": 2147483647, - "minimum": 512, - "type": "integer" - }, - "Min": { - "maximum": 2147483647, - "minimum": 512, - "type": "integer" - } - }, - "required": [ - "Min" - ], - "type": "object" - }, - "ServiceManagedEc2FleetConfiguration": { - "additionalProperties": false, - "properties": { - "InstanceCapabilities": { - "$ref": "#/definitions/ServiceManagedEc2InstanceCapabilities" - }, - "InstanceMarketOptions": { - "$ref": "#/definitions/ServiceManagedEc2InstanceMarketOptions" - } - }, - "required": [ - "InstanceCapabilities", - "InstanceMarketOptions" - ], - "type": "object" - }, - "ServiceManagedEc2InstanceCapabilities": { - "additionalProperties": false, - "properties": { - "AllowedInstanceTypes": { - "items": { - "pattern": "^[a-zA-Z0-9]+\\.[a-zA-Z0-9]+$", - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "CpuArchitectureType": { - "$ref": "#/definitions/CpuArchitectureType" - }, - "CustomAmounts": { - "items": { - "$ref": "#/definitions/FleetAmountCapability" - }, - "maxItems": 15, - "minItems": 1, - "type": "array" - }, - "CustomAttributes": { - "items": { - "$ref": "#/definitions/FleetAttributeCapability" - }, - "maxItems": 15, - "minItems": 1, - "type": "array" - }, - "ExcludedInstanceTypes": { - "items": { - "pattern": "^[a-zA-Z0-9]+\\.[a-zA-Z0-9]+$", - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "MemoryMiB": { - "$ref": "#/definitions/MemoryMiBRange" - }, - "OsFamily": { - "$ref": "#/definitions/ServiceManagedFleetOperatingSystemFamily" - }, - "RootEbsVolume": { - "$ref": "#/definitions/Ec2EbsVolume" - }, - "VCpuCount": { - "$ref": "#/definitions/VCpuCountRange" - } - }, - "required": [ - "CpuArchitectureType", - "MemoryMiB", - "OsFamily", - "VCpuCount" - ], - "type": "object" - }, - "ServiceManagedEc2InstanceMarketOptions": { - "additionalProperties": false, - "properties": { - "Type": { - "$ref": "#/definitions/Ec2MarketType" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ServiceManagedFleetOperatingSystemFamily": { - "enum": [ - "LINUX", - "WINDOWS" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "VCpuCountRange": { - "additionalProperties": false, - "properties": { - "Max": { - "maximum": 10000, - "minimum": 1, - "type": "integer" - }, - "Min": { - "maximum": 10000, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "Min" - ], - "type": "object" - } - }, - "description": "Definition of AWS::Deadline::Fleet Resource Type", - "handlers": { - "create": { - "permissions": [ - "deadline:CreateFleet", - "deadline:GetFleet", - "iam:PassRole", - "identitystore:ListGroupMembershipsForMember", - "logs:CreateLogGroup", - "deadline:TagResource", - "deadline:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "deadline:DeleteFleet", - "deadline:GetFleet", - "identitystore:ListGroupMembershipsForMember" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "FarmId": { - "$ref": "resource-schema.json#/properties/FarmId" - } - }, - "required": [ - "FarmId" - ] - }, - "permissions": [ - "deadline:ListFleets", - "identitystore:DescribeGroup", - "identitystore:DescribeUser", - "identitystore:ListGroupMembershipsForMember" - ] - }, - "read": { - "permissions": [ - "deadline:GetFleet", - "identitystore:ListGroupMembershipsForMember", - "deadline:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "deadline:UpdateFleet", - "deadline:GetFleet", - "iam:PassRole", - "identitystore:ListGroupMembershipsForMember", - "deadline:TagResource", - "deadline:UntagResource", - "deadline:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "pattern": "^arn:(aws[a-zA-Z-]*):deadline:[a-z0-9-]+:[0-9]+:farm/farm-[0-9a-z]{32}/fleet/fleet-[0-9a-z]{32}", - "type": "string" - }, - "Capabilities": { - "$ref": "#/definitions/FleetCapabilities" - }, - "Configuration": { - "$ref": "#/definitions/FleetConfiguration" - }, - "Description": { - "default": "", - "maxLength": 100, - "minLength": 0, - "type": "string" - }, - "DisplayName": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "FarmId": { - "pattern": "^farm-[0-9a-f]{32}$", - "type": "string" - }, - "FleetId": { - "pattern": "^fleet-[0-9a-f]{32}$", - "type": "string" - }, - "MaxWorkerCount": { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - "MinWorkerCount": { - "default": 0, - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - "RoleArn": { - "pattern": "^arn:(aws[a-zA-Z-]*):iam::\\d{12}:role(/[!-.0-~]+)*/[\\w+=,.@-]+$", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/FleetStatus" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "WorkerCount": { - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/Capabilities", - "/properties/FleetId", - "/properties/Status", - "/properties/WorkerCount", - "/properties/Arn" - ], - "required": [ - "Configuration", - "DisplayName", - "FarmId", - "MaxWorkerCount", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "deadline:TagResource", - "deadline:UntagResource", - "deadline:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Deadline::Fleet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FarmId" + ], + "definitions": { + "AcceleratorCapabilities": { + "additionalProperties": false, + "properties": { + "Count": { + "$ref": "#/definitions/AcceleratorCountRange" + }, + "Selections": { + "items": { + "$ref": "#/definitions/AcceleratorSelection" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Selections" + ], + "type": "object" + }, + "AcceleratorCountRange": { + "additionalProperties": false, + "properties": { + "Max": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "Min": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "Min" + ], + "type": "object" + }, + "AcceleratorSelection": { + "additionalProperties": false, + "properties": { + "Name": { + "enum": [ + "t4", + "a10g", + "l4", + "l40s" + ], + "type": "string" + }, + "Runtime": { + "maxLength": 100, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "AcceleratorTotalMemoryMiBRange": { + "additionalProperties": false, + "properties": { + "Max": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "Min": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "Min" + ], + "type": "object" + }, + "AcceleratorType": { + "enum": [ + "gpu" + ], + "type": "string" + }, + "AutoScalingMode": { + "enum": [ + "NO_SCALING", + "EVENT_BASED_AUTO_SCALING" + ], + "type": "string" + }, + "CpuArchitectureType": { + "enum": [ + "x86_64", + "arm64" + ], + "type": "string" + }, + "CustomerManagedFleetConfiguration": { + "additionalProperties": false, + "properties": { + "Mode": { + "$ref": "#/definitions/AutoScalingMode" + }, + "StorageProfileId": { + "pattern": "^sp-[0-9a-f]{32}$", + "type": "string" + }, + "WorkerCapabilities": { + "$ref": "#/definitions/CustomerManagedWorkerCapabilities" + } + }, + "required": [ + "Mode", + "WorkerCapabilities" + ], + "type": "object" + }, + "CustomerManagedFleetOperatingSystemFamily": { + "enum": [ + "WINDOWS", + "LINUX", + "MACOS" + ], + "type": "string" + }, + "CustomerManagedWorkerCapabilities": { + "additionalProperties": false, + "properties": { + "AcceleratorCount": { + "$ref": "#/definitions/AcceleratorCountRange" + }, + "AcceleratorTotalMemoryMiB": { + "$ref": "#/definitions/AcceleratorTotalMemoryMiBRange" + }, + "AcceleratorTypes": { + "items": { + "$ref": "#/definitions/AcceleratorType" + }, + "type": "array" + }, + "CpuArchitectureType": { + "$ref": "#/definitions/CpuArchitectureType" + }, + "CustomAmounts": { + "items": { + "$ref": "#/definitions/FleetAmountCapability" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + }, + "CustomAttributes": { + "items": { + "$ref": "#/definitions/FleetAttributeCapability" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + }, + "MemoryMiB": { + "$ref": "#/definitions/MemoryMiBRange" + }, + "OsFamily": { + "$ref": "#/definitions/CustomerManagedFleetOperatingSystemFamily" + }, + "VCpuCount": { + "$ref": "#/definitions/VCpuCountRange" + } + }, + "required": [ + "CpuArchitectureType", + "MemoryMiB", + "OsFamily", + "VCpuCount" + ], + "type": "object" + }, + "Ec2EbsVolume": { + "additionalProperties": false, + "properties": { + "Iops": { + "default": 3000, + "maximum": 16000, + "minimum": 3000, + "type": "integer" + }, + "SizeGiB": { + "default": 250, + "type": "integer" + }, + "ThroughputMiB": { + "default": 125, + "maximum": 1000, + "minimum": 125, + "type": "integer" + } + }, + "type": "object" + }, + "Ec2MarketType": { + "enum": [ + "on-demand", + "spot" + ], + "type": "string" + }, + "FleetAmountCapability": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "number" + }, + "Min": { + "type": "number" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^([a-zA-Z][a-zA-Z0-9]{0,63}:)?amount(\\.[a-zA-Z][a-zA-Z0-9]{0,63})+$", + "type": "string" + } + }, + "required": [ + "Min", + "Name" + ], + "type": "object" + }, + "FleetAttributeCapability": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^([a-zA-Z][a-zA-Z0-9]{0,63}:)?attr(\\.[a-zA-Z][a-zA-Z0-9]{0,63})+$", + "type": "string" + }, + "Values": { + "items": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z_]([a-zA-Z0-9_\\-]{0,99})$", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "FleetCapabilities": { + "additionalProperties": false, + "properties": { + "Amounts": { + "items": { + "$ref": "#/definitions/FleetAmountCapability" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + }, + "Attributes": { + "items": { + "$ref": "#/definitions/FleetAttributeCapability" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "FleetConfiguration": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "CustomerManaged": { + "$ref": "#/definitions/CustomerManagedFleetConfiguration" + } + }, + "required": [ + "CustomerManaged" + ], + "title": "CustomerManaged", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "ServiceManagedEc2": { + "$ref": "#/definitions/ServiceManagedEc2FleetConfiguration" + } + }, + "required": [ + "ServiceManagedEc2" + ], + "title": "ServiceManagedEc2", + "type": "object" + } + ] + }, + "FleetStatus": { + "enum": [ + "ACTIVE", + "CREATE_IN_PROGRESS", + "UPDATE_IN_PROGRESS", + "CREATE_FAILED", + "UPDATE_FAILED" + ], + "type": "string" + }, + "MemoryMiBRange": { + "additionalProperties": false, + "properties": { + "Max": { + "maximum": 2147483647, + "minimum": 512, + "type": "integer" + }, + "Min": { + "maximum": 2147483647, + "minimum": 512, + "type": "integer" + } + }, + "required": [ + "Min" + ], + "type": "object" + }, + "ServiceManagedEc2FleetConfiguration": { + "additionalProperties": false, + "properties": { + "InstanceCapabilities": { + "$ref": "#/definitions/ServiceManagedEc2InstanceCapabilities" + }, + "InstanceMarketOptions": { + "$ref": "#/definitions/ServiceManagedEc2InstanceMarketOptions" + } + }, + "required": [ + "InstanceCapabilities", + "InstanceMarketOptions" + ], + "type": "object" + }, + "ServiceManagedEc2InstanceCapabilities": { + "additionalProperties": false, + "properties": { + "AcceleratorCapabilities": { + "$ref": "#/definitions/AcceleratorCapabilities" + }, + "AllowedInstanceTypes": { + "items": { + "pattern": "^[a-zA-Z0-9]+\\.[a-zA-Z0-9]+$", + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "CpuArchitectureType": { + "$ref": "#/definitions/CpuArchitectureType" + }, + "CustomAmounts": { + "items": { + "$ref": "#/definitions/FleetAmountCapability" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + }, + "CustomAttributes": { + "items": { + "$ref": "#/definitions/FleetAttributeCapability" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + }, + "ExcludedInstanceTypes": { + "items": { + "pattern": "^[a-zA-Z0-9]+\\.[a-zA-Z0-9]+$", + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "MemoryMiB": { + "$ref": "#/definitions/MemoryMiBRange" + }, + "OsFamily": { + "$ref": "#/definitions/ServiceManagedFleetOperatingSystemFamily" + }, + "RootEbsVolume": { + "$ref": "#/definitions/Ec2EbsVolume" + }, + "VCpuCount": { + "$ref": "#/definitions/VCpuCountRange" + } + }, + "required": [ + "CpuArchitectureType", + "MemoryMiB", + "OsFamily", + "VCpuCount" + ], + "type": "object" + }, + "ServiceManagedEc2InstanceMarketOptions": { + "additionalProperties": false, + "properties": { + "Type": { + "$ref": "#/definitions/Ec2MarketType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "ServiceManagedFleetOperatingSystemFamily": { + "enum": [ + "LINUX", + "WINDOWS" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VCpuCountRange": { + "additionalProperties": false, + "properties": { + "Max": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "Min": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "Min" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Deadline::Fleet Resource Type", + "handlers": { + "create": { + "permissions": [ + "deadline:CreateFleet", + "deadline:GetFleet", + "iam:PassRole", + "identitystore:ListGroupMembershipsForMember", + "logs:CreateLogGroup", + "deadline:TagResource", + "deadline:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "deadline:DeleteFleet", + "deadline:GetFleet", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FarmId": { + "$ref": "resource-schema.json#/properties/FarmId" + } + }, + "required": [ + "FarmId" + ] + }, + "permissions": [ + "deadline:ListFleets", + "identitystore:DescribeGroup", + "identitystore:DescribeUser", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "read": { + "permissions": [ + "deadline:GetFleet", + "identitystore:ListGroupMembershipsForMember", + "deadline:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "deadline:UpdateFleet", + "deadline:GetFleet", + "iam:PassRole", + "identitystore:ListGroupMembershipsForMember", + "deadline:TagResource", + "deadline:UntagResource", + "deadline:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "^arn:(aws[a-zA-Z-]*):deadline:[a-z0-9-]+:[0-9]+:farm/farm-[0-9a-z]{32}/fleet/fleet-[0-9a-z]{32}", + "type": "string" + }, + "Capabilities": { + "$ref": "#/definitions/FleetCapabilities" + }, + "Configuration": { + "$ref": "#/definitions/FleetConfiguration" + }, + "Description": { + "default": "", + "maxLength": 100, + "minLength": 0, + "type": "string" + }, + "DisplayName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "FarmId": { + "pattern": "^farm-[0-9a-f]{32}$", + "type": "string" + }, + "FleetId": { + "pattern": "^fleet-[0-9a-f]{32}$", + "type": "string" + }, + "MaxWorkerCount": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "MinWorkerCount": { + "default": 0, + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "RoleArn": { + "pattern": "^arn:(aws[a-zA-Z-]*):iam::\\d{12}:role(/[!-.0-~]+)*/[\\w+=,.@-]+$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/FleetStatus" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "WorkerCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Capabilities", + "/properties/FleetId", + "/properties/Status", + "/properties/WorkerCount", + "/properties/Arn" + ], + "required": [ + "Configuration", + "DisplayName", + "FarmId", + "MaxWorkerCount", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "deadline:TagResource", + "deadline:UntagResource", + "deadline:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Deadline::Fleet" +} diff --git a/src/schema/aws-deadline-licenseendpoint.json b/src/schema/aws-deadline-licenseendpoint.json index 2830efa7..7bac7a90 100644 --- a/src/schema/aws-deadline-licenseendpoint.json +++ b/src/schema/aws-deadline-licenseendpoint.json @@ -1,165 +1,165 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SecurityGroupIds", - "/properties/SubnetIds", - "/properties/VpcId" - ], - "definitions": { - "LicenseEndpointStatus": { - "enum": [ - "CREATE_IN_PROGRESS", - "DELETE_IN_PROGRESS", - "READY", - "NOT_READY" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::Deadline::LicenseEndpoint Resource Type", - "handlers": { - "create": { - "permissions": [ - "deadline:CreateLicenseEndpoint", - "deadline:GetLicenseEndpoint", - "ec2:CreateTags", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "deadline:TagResource", - "deadline:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "deadline:GetLicenseEndpoint", - "deadline:DeleteLicenseEndpoint", - "ec2:DeleteVpcEndpoints", - "ec2:DescribeVpcEndpoints" - ] - }, - "list": { - "permissions": [ - "deadline:ListLicenseEndpoints" - ] - }, - "read": { - "permissions": [ - "deadline:GetLicenseEndpoint", - "deadline:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "deadline:TagResource", - "deadline:UntagResource", - "deadline:ListTagsForResource", - "deadline:GetLicenseEndpoint" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "pattern": "^arn:(aws[a-zA-Z-]*):deadline:[a-z0-9-]+:[0-9]{12}:license-endpoint/le-[0-9a-z]{32}", - "type": "string" - }, - "DnsName": { - "type": "string" - }, - "LicenseEndpointId": { - "pattern": "^le-[0-9a-f]{32}$", - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "Status": { - "$ref": "#/definitions/LicenseEndpointStatus" - }, - "StatusMessage": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "SubnetIds": { - "items": { - "maxLength": 32, - "minLength": 1, - "type": "string" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "VpcId": { - "maxLength": 32, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/DnsName", - "/properties/LicenseEndpointId", - "/properties/Status", - "/properties/StatusMessage", - "/properties/Arn" - ], - "required": [ - "SecurityGroupIds", - "SubnetIds", - "VpcId" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "deadline:TagResource", - "deadline:UntagResource", - "deadline:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Deadline::LicenseEndpoint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SecurityGroupIds", + "/properties/SubnetIds", + "/properties/VpcId" + ], + "definitions": { + "LicenseEndpointStatus": { + "enum": [ + "CREATE_IN_PROGRESS", + "DELETE_IN_PROGRESS", + "READY", + "NOT_READY" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Deadline::LicenseEndpoint Resource Type", + "handlers": { + "create": { + "permissions": [ + "deadline:CreateLicenseEndpoint", + "deadline:GetLicenseEndpoint", + "ec2:CreateTags", + "ec2:CreateVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "deadline:TagResource", + "deadline:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "deadline:GetLicenseEndpoint", + "deadline:DeleteLicenseEndpoint", + "ec2:DeleteVpcEndpoints", + "ec2:DescribeVpcEndpoints" + ] + }, + "list": { + "permissions": [ + "deadline:ListLicenseEndpoints" + ] + }, + "read": { + "permissions": [ + "deadline:GetLicenseEndpoint", + "deadline:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "deadline:TagResource", + "deadline:UntagResource", + "deadline:ListTagsForResource", + "deadline:GetLicenseEndpoint" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "^arn:(aws[a-zA-Z-]*):deadline:[a-z0-9-]+:[0-9]{12}:license-endpoint/le-[0-9a-z]{32}", + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "LicenseEndpointId": { + "pattern": "^le-[0-9a-f]{32}$", + "type": "string" + }, + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "Status": { + "$ref": "#/definitions/LicenseEndpointStatus" + }, + "StatusMessage": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "SubnetIds": { + "items": { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "VpcId": { + "maxLength": 32, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DnsName", + "/properties/LicenseEndpointId", + "/properties/Status", + "/properties/StatusMessage", + "/properties/Arn" + ], + "required": [ + "SecurityGroupIds", + "SubnetIds", + "VpcId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "deadline:TagResource", + "deadline:UntagResource", + "deadline:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Deadline::LicenseEndpoint" +} diff --git a/src/schema/aws-deadline-limit.json b/src/schema/aws-deadline-limit.json new file mode 100644 index 00000000..2c18d5e6 --- /dev/null +++ b/src/schema/aws-deadline-limit.json @@ -0,0 +1,114 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AmountRequirementName", + "/properties/FarmId" + ], + "description": "Definition of AWS::Deadline::Limit Resource Type", + "handlers": { + "create": { + "permissions": [ + "deadline:CreateLimit", + "deadline:GetLimit", + "kms:Encrypt", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "delete": { + "permissions": [ + "deadline:DeleteLimit", + "deadline:GetLimit", + "kms:Decrypt", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FarmId": { + "$ref": "resource-schema.json#/properties/FarmId" + } + }, + "required": [ + "FarmId" + ] + }, + "permissions": [ + "deadline:ListLimits", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "read": { + "permissions": [ + "deadline:GetLimit", + "kms:Decrypt", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "update": { + "permissions": [ + "deadline:UpdateLimit", + "deadline:GetLimit", + "kms:Encrypt", + "identitystore:ListGroupMembershipsForMember" + ] + } + }, + "primaryIdentifier": [ + "/properties/FarmId", + "/properties/LimitId" + ], + "properties": { + "AmountRequirementName": { + "maxLength": 1024, + "type": "string" + }, + "CurrentCount": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "Description": { + "default": "", + "maxLength": 100, + "minLength": 0, + "type": "string" + }, + "DisplayName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "FarmId": { + "pattern": "^farm-[0-9a-f]{32}$", + "type": "string" + }, + "LimitId": { + "pattern": "^limit-[0-9a-f]{32}$", + "type": "string" + }, + "MaxCount": { + "maximum": 2147483647, + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/CurrentCount", + "/properties/LimitId" + ], + "required": [ + "AmountRequirementName", + "DisplayName", + "MaxCount", + "FarmId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Deadline::Limit" +} diff --git a/src/schema/aws-deadline-meteredproduct.json b/src/schema/aws-deadline-meteredproduct.json index 8ca0fa14..6e5ec860 100644 --- a/src/schema/aws-deadline-meteredproduct.json +++ b/src/schema/aws-deadline-meteredproduct.json @@ -1,89 +1,89 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LicenseEndpointId", - "/properties/ProductId" - ], - "description": "Definition of AWS::Deadline::MeteredProduct Resource Type", - "handlers": { - "create": { - "permissions": [ - "deadline:PutMeteredProduct", - "deadline:ListMeteredProducts" - ] - }, - "delete": { - "permissions": [ - "deadline:DeleteMeteredProduct", - "deadline:ListMeteredProducts" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "LicenseEndpointId": { - "$ref": "resource-schema.json#/properties/LicenseEndpointId" - } - }, - "required": [ - "LicenseEndpointId" - ] - }, - "permissions": [ - "deadline:ListMeteredProducts" - ] - }, - "read": { - "permissions": [ - "deadline:GetMeteredProduct", - "deadline:ListMeteredProducts" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "pattern": "^arn:(aws[a-zA-Z-]*):deadline:[a-z0-9-]+:[0-9]{12}:license-endpoint/le-[0-9a-z]{32}/metered-product/[0-9a-z]{1,32}-[.0-9a-z]{1,32}", - "type": "string" - }, - "Family": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "LicenseEndpointId": { - "pattern": "^le-[0-9a-f]{32}$", - "type": "string" - }, - "Port": { - "maximum": 65535, - "minimum": 1024, - "type": "integer" - }, - "ProductId": { - "pattern": "^[0-9a-z]{1,32}-[.0-9a-z]{1,32}$", - "type": "string" - }, - "Vendor": { - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Port", - "/properties/Family", - "/properties/Vendor" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Deadline::MeteredProduct" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LicenseEndpointId", + "/properties/ProductId" + ], + "description": "Definition of AWS::Deadline::MeteredProduct Resource Type", + "handlers": { + "create": { + "permissions": [ + "deadline:PutMeteredProduct", + "deadline:ListMeteredProducts" + ] + }, + "delete": { + "permissions": [ + "deadline:DeleteMeteredProduct", + "deadline:ListMeteredProducts" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "LicenseEndpointId": { + "$ref": "resource-schema.json#/properties/LicenseEndpointId" + } + }, + "required": [ + "LicenseEndpointId" + ] + }, + "permissions": [ + "deadline:ListMeteredProducts" + ] + }, + "read": { + "permissions": [ + "deadline:GetMeteredProduct", + "deadline:ListMeteredProducts" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "^arn:(aws[a-zA-Z-]*):deadline:[a-z0-9-]+:[0-9]{12}:license-endpoint/le-[0-9a-z]{32}/metered-product/[0-9a-z]{1,32}-[.0-9a-z]{1,32}", + "type": "string" + }, + "Family": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "LicenseEndpointId": { + "pattern": "^le-[0-9a-f]{32}$", + "type": "string" + }, + "Port": { + "maximum": 65535, + "minimum": 1024, + "type": "integer" + }, + "ProductId": { + "pattern": "^[0-9a-z]{1,32}-[.0-9a-z]{1,32}$", + "type": "string" + }, + "Vendor": { + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Port", + "/properties/Family", + "/properties/Vendor" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Deadline::MeteredProduct" +} diff --git a/src/schema/aws-deadline-monitor.json b/src/schema/aws-deadline-monitor.json index 427d029b..3c4bd5dc 100644 --- a/src/schema/aws-deadline-monitor.json +++ b/src/schema/aws-deadline-monitor.json @@ -1,104 +1,104 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/IdentityCenterInstanceArn" - ], - "description": "Definition of AWS::Deadline::Monitor Resource Type", - "handlers": { - "create": { - "permissions": [ - "deadline:CreateMonitor", - "deadline:GetMonitor", - "iam:PassRole", - "kms:CreateGrant", - "sso:CreateApplication", - "sso:DeleteApplication", - "sso:PutApplicationAssignmentConfiguration", - "sso:PutApplicationAuthenticationMethod", - "sso:PutApplicationGrant" - ] - }, - "delete": { - "permissions": [ - "deadline:DeleteMonitor", - "deadline:GetMonitor", - "sso:DeleteApplication" - ] - }, - "list": { - "permissions": [ - "deadline:ListMonitors" - ] - }, - "read": { - "permissions": [ - "deadline:GetMonitor" - ] - }, - "update": { - "permissions": [ - "deadline:GetMonitor", - "deadline:UpdateMonitor", - "iam:PassRole", - "kms:CreateGrant", - "sso:PutApplicationGrant", - "sso:UpdateApplication" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "pattern": "^arn:(aws[a-zA-Z-]*):deadline:[a-z0-9-]+:[0-9]+:monitor/monitor-[0-9a-z]{32}$", - "type": "string" - }, - "DisplayName": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "IdentityCenterApplicationArn": { - "type": "string" - }, - "IdentityCenterInstanceArn": { - "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}$", - "type": "string" - }, - "MonitorId": { - "pattern": "^monitor-[0-9a-f]{32}$", - "type": "string" - }, - "RoleArn": { - "pattern": "^arn:(aws[a-zA-Z-]*):iam::\\d{12}:role(/[!-.0-~]+)*/[\\w+=,.@-]+$", - "type": "string" - }, - "Subdomain": { - "pattern": "^[a-z0-9-]{1,100}$", - "type": "string" - }, - "Url": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/IdentityCenterApplicationArn", - "/properties/MonitorId", - "/properties/Url", - "/properties/Arn" - ], - "required": [ - "DisplayName", - "IdentityCenterInstanceArn", - "RoleArn", - "Subdomain" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Deadline::Monitor" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IdentityCenterInstanceArn" + ], + "description": "Definition of AWS::Deadline::Monitor Resource Type", + "handlers": { + "create": { + "permissions": [ + "deadline:CreateMonitor", + "deadline:GetMonitor", + "iam:PassRole", + "kms:CreateGrant", + "sso:CreateApplication", + "sso:DeleteApplication", + "sso:PutApplicationAssignmentConfiguration", + "sso:PutApplicationAuthenticationMethod", + "sso:PutApplicationGrant" + ] + }, + "delete": { + "permissions": [ + "deadline:DeleteMonitor", + "deadline:GetMonitor", + "sso:DeleteApplication" + ] + }, + "list": { + "permissions": [ + "deadline:ListMonitors" + ] + }, + "read": { + "permissions": [ + "deadline:GetMonitor" + ] + }, + "update": { + "permissions": [ + "deadline:GetMonitor", + "deadline:UpdateMonitor", + "iam:PassRole", + "kms:CreateGrant", + "sso:PutApplicationGrant", + "sso:UpdateApplication" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "^arn:(aws[a-zA-Z-]*):deadline:[a-z0-9-]+:[0-9]+:monitor/monitor-[0-9a-z]{32}$", + "type": "string" + }, + "DisplayName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "IdentityCenterApplicationArn": { + "type": "string" + }, + "IdentityCenterInstanceArn": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}$", + "type": "string" + }, + "MonitorId": { + "pattern": "^monitor-[0-9a-f]{32}$", + "type": "string" + }, + "RoleArn": { + "pattern": "^arn:(aws[a-zA-Z-]*):iam::\\d{12}:role(/[!-.0-~]+)*/[\\w+=,.@-]+$", + "type": "string" + }, + "Subdomain": { + "pattern": "^[a-z0-9-]{1,100}$", + "type": "string" + }, + "Url": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/IdentityCenterApplicationArn", + "/properties/MonitorId", + "/properties/Url", + "/properties/Arn" + ], + "required": [ + "DisplayName", + "IdentityCenterInstanceArn", + "RoleArn", + "Subdomain" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Deadline::Monitor" +} diff --git a/src/schema/aws-deadline-queue.json b/src/schema/aws-deadline-queue.json index 6946818a..12779cca 100644 --- a/src/schema/aws-deadline-queue.json +++ b/src/schema/aws-deadline-queue.json @@ -1,285 +1,285 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FarmId" - ], - "definitions": { - "DefaultQueueBudgetAction": { - "default": "NONE", - "enum": [ - "NONE", - "STOP_SCHEDULING_AND_COMPLETE_TASKS", - "STOP_SCHEDULING_AND_CANCEL_TASKS" - ], - "type": "string" - }, - "JobAttachmentSettings": { - "additionalProperties": false, - "properties": { - "RootPrefix": { - "maxLength": 63, - "minLength": 1, - "type": "string" - }, - "S3BucketName": { - "maxLength": 63, - "minLength": 3, - "pattern": "(?!^(\\d+\\.)+\\d+$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)", - "type": "string" - } - }, - "required": [ - "RootPrefix", - "S3BucketName" - ], - "type": "object" - }, - "JobRunAsUser": { - "additionalProperties": false, - "properties": { - "Posix": { - "$ref": "#/definitions/PosixUser" - }, - "RunAs": { - "$ref": "#/definitions/RunAs" - }, - "Windows": { - "$ref": "#/definitions/WindowsUser" - } - }, - "required": [ - "RunAs" - ], - "type": "object" - }, - "PosixUser": { - "additionalProperties": false, - "properties": { - "Group": { - "maxLength": 31, - "minLength": 0, - "pattern": "^(?:[a-z][a-z0-9-]{0,30})?$", - "type": "string" - }, - "User": { - "maxLength": 31, - "minLength": 0, - "pattern": "^(?:[a-z][a-z0-9-]{0,30})?$", - "type": "string" - } - }, - "required": [ - "Group", - "User" - ], - "type": "object" - }, - "RunAs": { - "enum": [ - "QUEUE_CONFIGURED_USER", - "WORKER_AGENT_USER" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "WindowsUser": { - "additionalProperties": false, - "properties": { - "PasswordArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:(aws[a-zA-Z-]*):secretsmanager:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:secret:[a-zA-Z0-9-/_+=.@]{1,2028}$", - "type": "string" - }, - "User": { - "maxLength": 111, - "minLength": 0, - "pattern": "^[^\"'/\\[\\]:;|=,+*?<>\\s]*$", - "type": "string" - } - }, - "required": [ - "PasswordArn", - "User" - ], - "type": "object" - } - }, - "description": "Definition of AWS::Deadline::Queue Resource Type", - "handlers": { - "create": { - "permissions": [ - "deadline:CreateQueue", - "deadline:GetQueue", - "iam:PassRole", - "identitystore:ListGroupMembershipsForMember", - "logs:CreateLogGroup", - "s3:ListBucket", - "deadline:TagResource", - "deadline:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "deadline:DeleteQueue", - "deadline:GetQueue", - "identitystore:ListGroupMembershipsForMember" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "FarmId": { - "$ref": "resource-schema.json#/properties/FarmId" - } - }, - "required": [ - "FarmId" - ] - }, - "permissions": [ - "deadline:ListQueues", - "identitystore:DescribeGroup", - "identitystore:DescribeUser", - "identitystore:ListGroupMembershipsForMember" - ] - }, - "read": { - "permissions": [ - "deadline:GetQueue", - "identitystore:ListGroupMembershipsForMember", - "deadline:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "deadline:UpdateQueue", - "deadline:GetQueue", - "iam:PassRole", - "identitystore:ListGroupMembershipsForMember", - "logs:CreateLogGroup", - "s3:ListBucket", - "deadline:TagResource", - "deadline:UntagResource", - "deadline:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "AllowedStorageProfileIds": { - "items": { - "pattern": "^sp-[0-9a-f]{32}$", - "type": "string" - }, - "maxItems": 20, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "Arn": { - "pattern": "^arn:*", - "type": "string" - }, - "DefaultBudgetAction": { - "$ref": "#/definitions/DefaultQueueBudgetAction" - }, - "Description": { - "default": "", - "maxLength": 100, - "minLength": 0, - "type": "string" - }, - "DisplayName": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "FarmId": { - "pattern": "^farm-[0-9a-f]{32}$", - "type": "string" - }, - "JobAttachmentSettings": { - "$ref": "#/definitions/JobAttachmentSettings" - }, - "JobRunAsUser": { - "$ref": "#/definitions/JobRunAsUser" - }, - "QueueId": { - "pattern": "^queue-[0-9a-f]{32}$", - "type": "string" - }, - "RequiredFileSystemLocationNames": { - "items": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[0-9A-Za-z ]*$", - "type": "string" - }, - "maxItems": 20, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "RoleArn": { - "pattern": "^arn:(aws[a-zA-Z-]*):iam::\\d{12}:role(/[!-.0-~]+)*/[\\w+=,.@-]+$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/QueueId", - "/properties/Arn" - ], - "required": [ - "DisplayName", - "FarmId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "deadline:TagResource", - "deadline:UntagResource", - "deadline:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Deadline::Queue" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FarmId" + ], + "definitions": { + "DefaultQueueBudgetAction": { + "default": "NONE", + "enum": [ + "NONE", + "STOP_SCHEDULING_AND_COMPLETE_TASKS", + "STOP_SCHEDULING_AND_CANCEL_TASKS" + ], + "type": "string" + }, + "JobAttachmentSettings": { + "additionalProperties": false, + "properties": { + "RootPrefix": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "S3BucketName": { + "maxLength": 63, + "minLength": 3, + "pattern": "(?!^(\\d+\\.)+\\d+$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)", + "type": "string" + } + }, + "required": [ + "RootPrefix", + "S3BucketName" + ], + "type": "object" + }, + "JobRunAsUser": { + "additionalProperties": false, + "properties": { + "Posix": { + "$ref": "#/definitions/PosixUser" + }, + "RunAs": { + "$ref": "#/definitions/RunAs" + }, + "Windows": { + "$ref": "#/definitions/WindowsUser" + } + }, + "required": [ + "RunAs" + ], + "type": "object" + }, + "PosixUser": { + "additionalProperties": false, + "properties": { + "Group": { + "maxLength": 31, + "minLength": 0, + "pattern": "^(?:[a-z][a-z0-9-]{0,30})?$", + "type": "string" + }, + "User": { + "maxLength": 31, + "minLength": 0, + "pattern": "^(?:[a-z][a-z0-9-]{0,30})?$", + "type": "string" + } + }, + "required": [ + "Group", + "User" + ], + "type": "object" + }, + "RunAs": { + "enum": [ + "QUEUE_CONFIGURED_USER", + "WORKER_AGENT_USER" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "WindowsUser": { + "additionalProperties": false, + "properties": { + "PasswordArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:(aws[a-zA-Z-]*):secretsmanager:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:secret:[a-zA-Z0-9-/_+=.@]{1,2028}$", + "type": "string" + }, + "User": { + "maxLength": 111, + "minLength": 0, + "pattern": "^[^\"'/\\[\\]:;|=,+*?<>\\s]*$", + "type": "string" + } + }, + "required": [ + "PasswordArn", + "User" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Deadline::Queue Resource Type", + "handlers": { + "create": { + "permissions": [ + "deadline:CreateQueue", + "deadline:GetQueue", + "iam:PassRole", + "identitystore:ListGroupMembershipsForMember", + "logs:CreateLogGroup", + "s3:ListBucket", + "deadline:TagResource", + "deadline:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "deadline:DeleteQueue", + "deadline:GetQueue", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FarmId": { + "$ref": "resource-schema.json#/properties/FarmId" + } + }, + "required": [ + "FarmId" + ] + }, + "permissions": [ + "deadline:ListQueues", + "identitystore:DescribeGroup", + "identitystore:DescribeUser", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "read": { + "permissions": [ + "deadline:GetQueue", + "identitystore:ListGroupMembershipsForMember", + "deadline:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "deadline:UpdateQueue", + "deadline:GetQueue", + "iam:PassRole", + "identitystore:ListGroupMembershipsForMember", + "logs:CreateLogGroup", + "s3:ListBucket", + "deadline:TagResource", + "deadline:UntagResource", + "deadline:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AllowedStorageProfileIds": { + "items": { + "pattern": "^sp-[0-9a-f]{32}$", + "type": "string" + }, + "maxItems": 20, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "Arn": { + "pattern": "^arn:*", + "type": "string" + }, + "DefaultBudgetAction": { + "$ref": "#/definitions/DefaultQueueBudgetAction" + }, + "Description": { + "default": "", + "maxLength": 100, + "minLength": 0, + "type": "string" + }, + "DisplayName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "FarmId": { + "pattern": "^farm-[0-9a-f]{32}$", + "type": "string" + }, + "JobAttachmentSettings": { + "$ref": "#/definitions/JobAttachmentSettings" + }, + "JobRunAsUser": { + "$ref": "#/definitions/JobRunAsUser" + }, + "QueueId": { + "pattern": "^queue-[0-9a-f]{32}$", + "type": "string" + }, + "RequiredFileSystemLocationNames": { + "items": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9A-Za-z ]*$", + "type": "string" + }, + "maxItems": 20, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "RoleArn": { + "pattern": "^arn:(aws[a-zA-Z-]*):iam::\\d{12}:role(/[!-.0-~]+)*/[\\w+=,.@-]+$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/QueueId", + "/properties/Arn" + ], + "required": [ + "DisplayName", + "FarmId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "deadline:TagResource", + "deadline:UntagResource", + "deadline:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Deadline::Queue" +} diff --git a/src/schema/aws-deadline-queueenvironment.json b/src/schema/aws-deadline-queueenvironment.json index 932758fe..13c8e212 100644 --- a/src/schema/aws-deadline-queueenvironment.json +++ b/src/schema/aws-deadline-queueenvironment.json @@ -1,118 +1,118 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FarmId", - "/properties/QueueId" - ], - "definitions": { - "EnvironmentTemplateType": { - "enum": [ - "JSON", - "YAML" - ], - "type": "string" - } - }, - "description": "Definition of AWS::Deadline::QueueEnvironment Resource Type", - "handlers": { - "create": { - "permissions": [ - "deadline:CreateQueueEnvironment", - "identitystore:ListGroupMembershipsForMember" - ] - }, - "delete": { - "permissions": [ - "deadline:DeleteQueueEnvironment", - "deadline:GetQueueEnvironment", - "identitystore:ListGroupMembershipsForMember" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "FarmId": { - "$ref": "resource-schema.json#/properties/FarmId" - }, - "QueueId": { - "$ref": "resource-schema.json#/properties/QueueId" - } - }, - "required": [ - "FarmId", - "QueueId" - ] - }, - "permissions": [ - "deadline:ListQueueEnvironments", - "identitystore:ListGroupMembershipsForMember" - ] - }, - "read": { - "permissions": [ - "deadline:GetQueueEnvironment", - "identitystore:ListGroupMembershipsForMember" - ] - }, - "update": { - "permissions": [ - "deadline:UpdateQueueEnvironment", - "identitystore:ListGroupMembershipsForMember" - ] - } - }, - "primaryIdentifier": [ - "/properties/FarmId", - "/properties/QueueId", - "/properties/QueueEnvironmentId" - ], - "properties": { - "FarmId": { - "pattern": "^farm-[0-9a-f]{32}$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "Priority": { - "maximum": 10000, - "minimum": 0, - "type": "integer" - }, - "QueueEnvironmentId": { - "pattern": "^queueenv-[0-9a-f]{32}$", - "type": "string" - }, - "QueueId": { - "pattern": "^queue-[0-9a-f]{32}$", - "type": "string" - }, - "Template": { - "maxLength": 15000, - "minLength": 1, - "type": "string" - }, - "TemplateType": { - "$ref": "#/definitions/EnvironmentTemplateType" - } - }, - "readOnlyProperties": [ - "/properties/Name", - "/properties/QueueEnvironmentId" - ], - "required": [ - "FarmId", - "QueueId", - "Priority", - "Template", - "TemplateType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Deadline::QueueEnvironment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FarmId", + "/properties/QueueId" + ], + "definitions": { + "EnvironmentTemplateType": { + "enum": [ + "JSON", + "YAML" + ], + "type": "string" + } + }, + "description": "Definition of AWS::Deadline::QueueEnvironment Resource Type", + "handlers": { + "create": { + "permissions": [ + "deadline:CreateQueueEnvironment", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "delete": { + "permissions": [ + "deadline:DeleteQueueEnvironment", + "deadline:GetQueueEnvironment", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FarmId": { + "$ref": "resource-schema.json#/properties/FarmId" + }, + "QueueId": { + "$ref": "resource-schema.json#/properties/QueueId" + } + }, + "required": [ + "FarmId", + "QueueId" + ] + }, + "permissions": [ + "deadline:ListQueueEnvironments", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "read": { + "permissions": [ + "deadline:GetQueueEnvironment", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "update": { + "permissions": [ + "deadline:UpdateQueueEnvironment", + "identitystore:ListGroupMembershipsForMember" + ] + } + }, + "primaryIdentifier": [ + "/properties/FarmId", + "/properties/QueueId", + "/properties/QueueEnvironmentId" + ], + "properties": { + "FarmId": { + "pattern": "^farm-[0-9a-f]{32}$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Priority": { + "maximum": 10000, + "minimum": 0, + "type": "integer" + }, + "QueueEnvironmentId": { + "pattern": "^queueenv-[0-9a-f]{32}$", + "type": "string" + }, + "QueueId": { + "pattern": "^queue-[0-9a-f]{32}$", + "type": "string" + }, + "Template": { + "maxLength": 15000, + "minLength": 1, + "type": "string" + }, + "TemplateType": { + "$ref": "#/definitions/EnvironmentTemplateType" + } + }, + "readOnlyProperties": [ + "/properties/Name", + "/properties/QueueEnvironmentId" + ], + "required": [ + "FarmId", + "QueueId", + "Priority", + "Template", + "TemplateType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Deadline::QueueEnvironment" +} diff --git a/src/schema/aws-deadline-queuefleetassociation.json b/src/schema/aws-deadline-queuefleetassociation.json index 4a90466e..5be049c1 100644 --- a/src/schema/aws-deadline-queuefleetassociation.json +++ b/src/schema/aws-deadline-queuefleetassociation.json @@ -1,80 +1,80 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FarmId", - "/properties/FleetId", - "/properties/QueueId" - ], - "description": "Definition of AWS::Deadline::QueueFleetAssociation Resource Type", - "handlers": { - "create": { - "permissions": [ - "deadline:CreateQueueFleetAssociation", - "deadline:GetQueueFleetAssociation", - "identitystore:ListGroupMembershipsForMember" - ] - }, - "delete": { - "permissions": [ - "deadline:DeleteQueueFleetAssociation", - "deadline:GetQueueFleetAssociation", - "deadline:UpdateQueueFleetAssociation", - "identitystore:ListGroupMembershipsForMember" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "FarmId": { - "$ref": "resource-schema.json#/properties/FarmId" - } - }, - "required": [ - "FarmId" - ] - }, - "permissions": [ - "deadline:ListQueueFleetAssociations", - "identitystore:ListGroupMembershipsForMember" - ] - }, - "read": { - "permissions": [ - "deadline:GetQueueFleetAssociation", - "identitystore:ListGroupMembershipsForMember" - ] - } - }, - "primaryIdentifier": [ - "/properties/FarmId", - "/properties/FleetId", - "/properties/QueueId" - ], - "properties": { - "FarmId": { - "pattern": "^farm-[0-9a-f]{32}$", - "type": "string" - }, - "FleetId": { - "pattern": "^fleet-[0-9a-f]{32}$", - "type": "string" - }, - "QueueId": { - "pattern": "^queue-[0-9a-f]{32}$", - "type": "string" - } - }, - "required": [ - "FarmId", - "FleetId", - "QueueId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Deadline::QueueFleetAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FarmId", + "/properties/FleetId", + "/properties/QueueId" + ], + "description": "Definition of AWS::Deadline::QueueFleetAssociation Resource Type", + "handlers": { + "create": { + "permissions": [ + "deadline:CreateQueueFleetAssociation", + "deadline:GetQueueFleetAssociation", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "delete": { + "permissions": [ + "deadline:DeleteQueueFleetAssociation", + "deadline:GetQueueFleetAssociation", + "deadline:UpdateQueueFleetAssociation", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FarmId": { + "$ref": "resource-schema.json#/properties/FarmId" + } + }, + "required": [ + "FarmId" + ] + }, + "permissions": [ + "deadline:ListQueueFleetAssociations", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "read": { + "permissions": [ + "deadline:GetQueueFleetAssociation", + "identitystore:ListGroupMembershipsForMember" + ] + } + }, + "primaryIdentifier": [ + "/properties/FarmId", + "/properties/FleetId", + "/properties/QueueId" + ], + "properties": { + "FarmId": { + "pattern": "^farm-[0-9a-f]{32}$", + "type": "string" + }, + "FleetId": { + "pattern": "^fleet-[0-9a-f]{32}$", + "type": "string" + }, + "QueueId": { + "pattern": "^queue-[0-9a-f]{32}$", + "type": "string" + } + }, + "required": [ + "FarmId", + "FleetId", + "QueueId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Deadline::QueueFleetAssociation" +} diff --git a/src/schema/aws-deadline-queuelimitassociation.json b/src/schema/aws-deadline-queuelimitassociation.json new file mode 100644 index 00000000..7edec7fb --- /dev/null +++ b/src/schema/aws-deadline-queuelimitassociation.json @@ -0,0 +1,80 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FarmId", + "/properties/LimitId", + "/properties/QueueId" + ], + "description": "Definition of AWS::Deadline::QueueLimitAssociation Resource Type", + "handlers": { + "create": { + "permissions": [ + "deadline:CreateQueueLimitAssociation", + "deadline:GetQueueLimitAssociation", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "delete": { + "permissions": [ + "deadline:DeleteQueueLimitAssociation", + "deadline:GetQueueLimitAssociation", + "deadline:UpdateQueueLimitAssociation", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FarmId": { + "$ref": "resource-schema.json#/properties/FarmId" + } + }, + "required": [ + "FarmId" + ] + }, + "permissions": [ + "deadline:ListQueueLimitAssociations", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "read": { + "permissions": [ + "deadline:GetQueueLimitAssociation", + "identitystore:ListGroupMembershipsForMember" + ] + } + }, + "primaryIdentifier": [ + "/properties/FarmId", + "/properties/LimitId", + "/properties/QueueId" + ], + "properties": { + "FarmId": { + "pattern": "^farm-[0-9a-f]{32}$", + "type": "string" + }, + "LimitId": { + "pattern": "^limit-[0-9a-f]{32}$", + "type": "string" + }, + "QueueId": { + "pattern": "^queue-[0-9a-f]{32}$", + "type": "string" + } + }, + "required": [ + "FarmId", + "LimitId", + "QueueId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Deadline::QueueLimitAssociation" +} diff --git a/src/schema/aws-deadline-storageprofile.json b/src/schema/aws-deadline-storageprofile.json index 65070e73..98ee4c28 100644 --- a/src/schema/aws-deadline-storageprofile.json +++ b/src/schema/aws-deadline-storageprofile.json @@ -1,140 +1,140 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FarmId" - ], - "definitions": { - "FileSystemLocation": { - "additionalProperties": false, - "properties": { - "Name": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[0-9A-Za-z ]*$", - "type": "string" - }, - "Path": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/FileSystemLocationType" - } - }, - "required": [ - "Name", - "Path", - "Type" - ], - "type": "object" - }, - "FileSystemLocationType": { - "enum": [ - "SHARED", - "LOCAL" - ], - "type": "string" - }, - "StorageProfileOperatingSystemFamily": { - "enum": [ - "WINDOWS", - "LINUX", - "MACOS" - ], - "type": "string" - } - }, - "description": "Definition of AWS::Deadline::StorageProfile Resource Type", - "handlers": { - "create": { - "permissions": [ - "deadline:CreateStorageProfile", - "deadline:GetStorageProfile", - "identitystore:ListGroupMembershipsForMember" - ] - }, - "delete": { - "permissions": [ - "deadline:DeleteStorageProfile", - "deadline:GetStorageProfile", - "identitystore:ListGroupMembershipsForMember" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "FarmId": { - "$ref": "resource-schema.json#/properties/FarmId" - } - }, - "required": [ - "FarmId" - ] - }, - "permissions": [ - "deadline:ListStorageProfiles", - "identitystore:ListGroupMembershipsForMember" - ] - }, - "read": { - "permissions": [ - "deadline:GetStorageProfile", - "identitystore:ListGroupMembershipsForMember" - ] - }, - "update": { - "permissions": [ - "deadline:UpdateStorageProfile", - "deadline:GetStorageProfile", - "identitystore:ListGroupMembershipsForMember" - ] - } - }, - "primaryIdentifier": [ - "/properties/FarmId", - "/properties/StorageProfileId" - ], - "properties": { - "DisplayName": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "FarmId": { - "pattern": "^farm-[0-9a-f]{32}$", - "type": "string" - }, - "FileSystemLocations": { - "items": { - "$ref": "#/definitions/FileSystemLocation" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "OsFamily": { - "$ref": "#/definitions/StorageProfileOperatingSystemFamily" - }, - "StorageProfileId": { - "pattern": "^sp-[0-9a-f]{32}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/StorageProfileId" - ], - "required": [ - "DisplayName", - "FarmId", - "OsFamily" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Deadline::StorageProfile" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FarmId" + ], + "definitions": { + "FileSystemLocation": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9A-Za-z ]*$", + "type": "string" + }, + "Path": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/FileSystemLocationType" + } + }, + "required": [ + "Name", + "Path", + "Type" + ], + "type": "object" + }, + "FileSystemLocationType": { + "enum": [ + "SHARED", + "LOCAL" + ], + "type": "string" + }, + "StorageProfileOperatingSystemFamily": { + "enum": [ + "WINDOWS", + "LINUX", + "MACOS" + ], + "type": "string" + } + }, + "description": "Definition of AWS::Deadline::StorageProfile Resource Type", + "handlers": { + "create": { + "permissions": [ + "deadline:CreateStorageProfile", + "deadline:GetStorageProfile", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "delete": { + "permissions": [ + "deadline:DeleteStorageProfile", + "deadline:GetStorageProfile", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FarmId": { + "$ref": "resource-schema.json#/properties/FarmId" + } + }, + "required": [ + "FarmId" + ] + }, + "permissions": [ + "deadline:ListStorageProfiles", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "read": { + "permissions": [ + "deadline:GetStorageProfile", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "update": { + "permissions": [ + "deadline:UpdateStorageProfile", + "deadline:GetStorageProfile", + "identitystore:ListGroupMembershipsForMember" + ] + } + }, + "primaryIdentifier": [ + "/properties/FarmId", + "/properties/StorageProfileId" + ], + "properties": { + "DisplayName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "FarmId": { + "pattern": "^farm-[0-9a-f]{32}$", + "type": "string" + }, + "FileSystemLocations": { + "items": { + "$ref": "#/definitions/FileSystemLocation" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "OsFamily": { + "$ref": "#/definitions/StorageProfileOperatingSystemFamily" + }, + "StorageProfileId": { + "pattern": "^sp-[0-9a-f]{32}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/StorageProfileId" + ], + "required": [ + "DisplayName", + "FarmId", + "OsFamily" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Deadline::StorageProfile" +} diff --git a/src/schema/aws-detective-graph.json b/src/schema/aws-detective-graph.json index afbc92df..e5ca6022 100644 --- a/src/schema/aws-detective-graph.json +++ b/src/schema/aws-detective-graph.json @@ -1,89 +1,105 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. Valid characters are Unicode letters, digits, white space, and any of the following symbols: _ . : / = + - @ ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. Valid characters are Unicode letters, digits, white space, and any of the following symbols: _ . : / = + - @ ", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::Detective::Graph", - "handlers": { - "create": { - "permissions": [ - "detective:CreateGraph", - "detective:UpdateOrganizationConfiguration", - "organizations:DescribeOrganization" - ] - }, - "delete": { - "permissions": [ - "detective:DeleteGraph" - ] - }, - "list": { - "permissions": [ - "detective:ListGraphs", - "detective:ListTagsForResource", - "detective:DescribeOrganizationConfiguration", - "organizations:DescribeOrganization" - ] - }, - "read": { - "permissions": [ - "detective:ListGraphs", - "detective:ListTagsForResource", - "detective:DescribeOrganizationConfiguration", - "organizations:DescribeOrganization" - ] - }, - "update": { - "permissions": [ - "detective:UntagResource", - "detective:TagResource", - "detective:ListTagsForResource", - "detective:UpdateOrganizationConfiguration", - "organizations:DescribeOrganization" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Detective graph ARN", - "type": "string" - }, - "AutoEnableMembers": { - "default": false, - "description": "Indicates whether to automatically enable new organization accounts as member accounts in the organization behavior graph.", - "type": "boolean" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-detective.git", - "typeName": "AWS::Detective::Graph" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. Valid characters are Unicode letters, digits, white space, and any of the following symbols: _ . : / = + - @ ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. Valid characters are Unicode letters, digits, white space, and any of the following symbols: _ . : / = + - @ ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::Detective::Graph", + "handlers": { + "create": { + "permissions": [ + "detective:CreateGraph", + "detective:ListGraphs", + "detective:TagResource", + "detective:UpdateOrganizationConfiguration", + "organizations:DescribeOrganization" + ] + }, + "delete": { + "permissions": [ + "detective:DeleteGraph", + "detective:ListGraphs" + ] + }, + "list": { + "permissions": [ + "detective:ListGraphs", + "detective:ListTagsForResource", + "detective:DescribeOrganizationConfiguration", + "organizations:DescribeOrganization" + ] + }, + "read": { + "permissions": [ + "detective:ListGraphs", + "detective:ListTagsForResource", + "detective:DescribeOrganizationConfiguration", + "organizations:DescribeOrganization" + ] + }, + "update": { + "permissions": [ + "detective:ListGraphs", + "detective:UntagResource", + "detective:TagResource", + "detective:ListTagsForResource", + "detective:UpdateOrganizationConfiguration", + "organizations:DescribeOrganization" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Detective graph ARN", + "type": "string" + }, + "AutoEnableMembers": { + "default": false, + "description": "Indicates whether to automatically enable new organization accounts as member accounts in the organization behavior graph.", + "type": "boolean" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-detective.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "detective:UntagResource", + "detective:TagResource", + "detective:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Detective::Graph" +} diff --git a/src/schema/aws-detective-memberinvitation.json b/src/schema/aws-detective-memberinvitation.json index a19538e6..00c8d94e 100644 --- a/src/schema/aws-detective-memberinvitation.json +++ b/src/schema/aws-detective-memberinvitation.json @@ -1,78 +1,81 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GraphArn", - "/properties/MemberId" - ], - "description": "Resource schema for AWS::Detective::MemberInvitation", - "handlers": { - "create": { - "permissions": [ - "detective:CreateMembers", - "detective:GetMembers" - ] - }, - "delete": { - "permissions": [ - "detective:DeleteMembers" - ] - }, - "list": { - "permissions": [ - "detective:ListGraphs", - "detective:ListMembers" - ] - }, - "read": { - "permissions": [ - "detective:GetMembers" - ] - }, - "update": { - "permissions": [] - } - }, - "primaryIdentifier": [ - "/properties/GraphArn", - "/properties/MemberId" - ], - "properties": { - "DisableEmailNotification": { - "default": false, - "description": "When set to true, invitation emails are not sent to the member accounts. Member accounts must still accept the invitation before they are added to the behavior graph. Updating this field has no effect.", - "type": "boolean" - }, - "GraphArn": { - "description": "The ARN of the graph to which the member account will be invited", - "pattern": "arn:aws(-[\\w]+)*:detective:(([a-z]+-)+[0-9]+):[0-9]{12}:graph:[0-9a-f]{32}", - "type": "string" - }, - "MemberEmailAddress": { - "description": "The root email address for the account to be invited, for validation. Updating this field has no effect.", - "pattern": ".*@.*", - "type": "string" - }, - "MemberId": { - "description": "The AWS account ID to be invited to join the graph as a member", - "pattern": "[0-9]{12}", - "type": "string" - }, - "Message": { - "description": "A message to be included in the email invitation sent to the invited account. Updating this field has no effect.", - "maxLength": 1000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "GraphArn", - "MemberId", - "MemberEmailAddress" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-detective.git", - "typeName": "AWS::Detective::MemberInvitation", - "writeOnlyProperties": [ - "/properties/Message", - "/properties/DisableEmailNotification" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GraphArn", + "/properties/MemberId" + ], + "description": "Resource schema for AWS::Detective::MemberInvitation", + "handlers": { + "create": { + "permissions": [ + "detective:CreateMembers", + "detective:GetMembers" + ] + }, + "delete": { + "permissions": [ + "detective:DeleteMembers" + ] + }, + "list": { + "permissions": [ + "detective:ListGraphs", + "detective:ListMembers" + ] + }, + "read": { + "permissions": [ + "detective:GetMembers" + ] + }, + "update": { + "permissions": [] + } + }, + "primaryIdentifier": [ + "/properties/GraphArn", + "/properties/MemberId" + ], + "properties": { + "DisableEmailNotification": { + "default": false, + "description": "When set to true, invitation emails are not sent to the member accounts. Member accounts must still accept the invitation before they are added to the behavior graph. Updating this field has no effect.", + "type": "boolean" + }, + "GraphArn": { + "description": "The ARN of the graph to which the member account will be invited", + "pattern": "arn:aws(-[\\w]+)*:detective:(([a-z]+-)+[0-9]+):[0-9]{12}:graph:[0-9a-f]{32}", + "type": "string" + }, + "MemberEmailAddress": { + "description": "The root email address for the account to be invited, for validation. Updating this field has no effect.", + "pattern": ".*@.*", + "type": "string" + }, + "MemberId": { + "description": "The AWS account ID to be invited to join the graph as a member", + "pattern": "[0-9]{12}", + "type": "string" + }, + "Message": { + "description": "A message to be included in the email invitation sent to the invited account. Updating this field has no effect.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "GraphArn", + "MemberId", + "MemberEmailAddress" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-detective.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Detective::MemberInvitation", + "writeOnlyProperties": [ + "/properties/Message", + "/properties/DisableEmailNotification" + ] +} diff --git a/src/schema/aws-detective-organizationadmin.json b/src/schema/aws-detective-organizationadmin.json index add8c1d4..4b7bc2a4 100644 --- a/src/schema/aws-detective-organizationadmin.json +++ b/src/schema/aws-detective-organizationadmin.json @@ -1,70 +1,70 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AccountId" - ], - "description": "Resource schema for AWS::Detective::OrganizationAdmin", - "handlers": { - "create": { - "permissions": [ - "detective:EnableOrganizationAdminAccount", - "detective:ListOrganizationAdminAccount", - "iam:CreateServiceLinkedRole", - "organizations:RegisterDelegatedAdministrator", - "organizations:DescribeOrganization", - "organizations:EnableAWSServiceAccess", - "organizations:ListAccounts" - ] - }, - "delete": { - "permissions": [ - "detective:DisableOrganizationAdminAccount", - "detective:ListOrganizationAdminAccount", - "organizations:DescribeOrganization" - ] - }, - "list": { - "permissions": [ - "detective:ListOrganizationAdminAccount", - "organizations:DescribeOrganization" - ] - }, - "read": { - "permissions": [ - "detective:ListOrganizationAdminAccount", - "organizations:DescribeOrganization" - ] - }, - "update": { - "permissions": [] - } - }, - "primaryIdentifier": [ - "/properties/AccountId" - ], - "properties": { - "AccountId": { - "description": "The account ID of the account that should be registered as your Organization's delegated administrator for Detective", - "pattern": "[0-9]{12}", - "type": "string" - }, - "GraphArn": { - "description": "The Detective graph ARN", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/GraphArn" - ], - "required": [ - "AccountId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-detective.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Detective::OrganizationAdmin" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AccountId" + ], + "description": "Resource schema for AWS::Detective::OrganizationAdmin", + "handlers": { + "create": { + "permissions": [ + "detective:EnableOrganizationAdminAccount", + "detective:ListOrganizationAdminAccount", + "iam:CreateServiceLinkedRole", + "organizations:RegisterDelegatedAdministrator", + "organizations:DescribeOrganization", + "organizations:EnableAWSServiceAccess", + "organizations:ListAccounts" + ] + }, + "delete": { + "permissions": [ + "detective:DisableOrganizationAdminAccount", + "detective:ListOrganizationAdminAccount", + "organizations:DescribeOrganization" + ] + }, + "list": { + "permissions": [ + "detective:ListOrganizationAdminAccount", + "organizations:DescribeOrganization" + ] + }, + "read": { + "permissions": [ + "detective:ListOrganizationAdminAccount", + "organizations:DescribeOrganization" + ] + }, + "update": { + "permissions": [] + } + }, + "primaryIdentifier": [ + "/properties/AccountId" + ], + "properties": { + "AccountId": { + "description": "The account ID of the account that should be registered as your Organization's delegated administrator for Detective", + "pattern": "[0-9]{12}", + "type": "string" + }, + "GraphArn": { + "description": "The Detective graph ARN", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/GraphArn" + ], + "required": [ + "AccountId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-detective.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Detective::OrganizationAdmin" +} diff --git a/src/schema/aws-devopsguru-loganomalydetectionintegration.json b/src/schema/aws-devopsguru-loganomalydetectionintegration.json index b9b37970..6b19b74f 100644 --- a/src/schema/aws-devopsguru-loganomalydetectionintegration.json +++ b/src/schema/aws-devopsguru-loganomalydetectionintegration.json @@ -1,62 +1,62 @@ -{ - "additionalProperties": false, - "definitions": { - "AccountId": { - "description": "User account id, used as the primary identifier for the resource", - "pattern": "^\\d{12}$", - "type": "string" - } - }, - "description": "This resource schema represents the LogAnomalyDetectionIntegration resource in the Amazon DevOps Guru.", - "handlers": { - "create": { - "permissions": [ - "devops-guru:DescribeServiceIntegration", - "devops-guru:UpdateServiceIntegration", - "logs:TagLogGroup", - "logs:UntagLogGroup" - ] - }, - "delete": { - "permissions": [ - "devops-guru:DescribeServiceIntegration", - "devops-guru:UpdateServiceIntegration", - "logs:TagLogGroup", - "logs:UntagLogGroup" - ] - }, - "list": { - "permissions": [ - "devops-guru:DescribeServiceIntegration" - ] - }, - "read": { - "permissions": [ - "devops-guru:DescribeServiceIntegration" - ] - }, - "update": { - "permissions": [ - "devops-guru:UpdateServiceIntegration", - "logs:TagLogGroup", - "logs:UntagLogGroup" - ] - } - }, - "primaryIdentifier": [ - "/properties/AccountId" - ], - "properties": { - "AccountId": { - "$ref": "#/definitions/AccountId" - } - }, - "readOnlyProperties": [ - "/properties/AccountId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::DevOpsGuru::LogAnomalyDetectionIntegration" -} +{ + "additionalProperties": false, + "definitions": { + "AccountId": { + "description": "User account id, used as the primary identifier for the resource", + "pattern": "^\\d{12}$", + "type": "string" + } + }, + "description": "This resource schema represents the LogAnomalyDetectionIntegration resource in the Amazon DevOps Guru.", + "handlers": { + "create": { + "permissions": [ + "devops-guru:DescribeServiceIntegration", + "devops-guru:UpdateServiceIntegration", + "logs:TagLogGroup", + "logs:UntagLogGroup" + ] + }, + "delete": { + "permissions": [ + "devops-guru:DescribeServiceIntegration", + "devops-guru:UpdateServiceIntegration", + "logs:TagLogGroup", + "logs:UntagLogGroup" + ] + }, + "list": { + "permissions": [ + "devops-guru:DescribeServiceIntegration" + ] + }, + "read": { + "permissions": [ + "devops-guru:DescribeServiceIntegration" + ] + }, + "update": { + "permissions": [ + "devops-guru:UpdateServiceIntegration", + "logs:TagLogGroup", + "logs:UntagLogGroup" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccountId" + ], + "properties": { + "AccountId": { + "$ref": "#/definitions/AccountId" + } + }, + "readOnlyProperties": [ + "/properties/AccountId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::DevOpsGuru::LogAnomalyDetectionIntegration" +} diff --git a/src/schema/aws-devopsguru-notificationchannel.json b/src/schema/aws-devopsguru-notificationchannel.json index 5bf3898e..cd2da759 100644 --- a/src/schema/aws-devopsguru-notificationchannel.json +++ b/src/schema/aws-devopsguru-notificationchannel.json @@ -1,141 +1,141 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Config" - ], - "definitions": { - "InsightSeveritiesFilterList": { - "description": "DevOps Guru insight severities to filter for", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/InsightSeverity" - }, - "maxItems": 3, - "minItems": 1, - "type": "array" - }, - "InsightSeverity": { - "description": "DevOps Guru Insight Severity Enum", - "enum": [ - "LOW", - "MEDIUM", - "HIGH" - ], - "type": "string" - }, - "NotificationChannelConfig": { - "additionalProperties": false, - "description": "Information about notification channels you have configured with DevOps Guru.", - "properties": { - "Filters": { - "$ref": "#/definitions/NotificationFilterConfig" - }, - "Sns": { - "$ref": "#/definitions/SnsChannelConfig" - } - }, - "type": "object" - }, - "NotificationFilterConfig": { - "additionalProperties": false, - "description": "Information about filters of a notification channel configured in DevOpsGuru to filter for insights.", - "properties": { - "MessageTypes": { - "$ref": "#/definitions/NotificationMessageTypesFilterList" - }, - "Severities": { - "$ref": "#/definitions/InsightSeveritiesFilterList" - } - }, - "type": "object" - }, - "NotificationMessageType": { - "description": "DevOps Guru NotificationMessageType Enum", - "enum": [ - "NEW_INSIGHT", - "CLOSED_INSIGHT", - "NEW_ASSOCIATION", - "SEVERITY_UPGRADED", - "NEW_RECOMMENDATION" - ], - "type": "string" - }, - "NotificationMessageTypesFilterList": { - "description": "DevOps Guru message types to filter for", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/NotificationMessageType" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "SnsChannelConfig": { - "additionalProperties": false, - "description": "Information about a notification channel configured in DevOps Guru to send notifications when insights are created.", - "properties": { - "TopicArn": { - "maxLength": 1024, - "minLength": 36, - "pattern": "^arn:aws[a-z0-9-]*:sns:[a-z0-9-]+:\\d{12}:[^:]+$", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "This resource schema represents the NotificationChannel resource in the Amazon DevOps Guru.", - "handlers": { - "create": { - "permissions": [ - "devops-guru:AddNotificationChannel", - "devops-guru:ListNotificationChannels", - "sns:Publish", - "sns:GetTopicAttributes", - "sns:SetTopicAttributes" - ] - }, - "delete": { - "permissions": [ - "devops-guru:RemoveNotificationChannel", - "devops-guru:ListNotificationChannels" - ] - }, - "list": { - "permissions": [ - "devops-guru:ListNotificationChannels" - ] - }, - "read": { - "permissions": [ - "devops-guru:ListNotificationChannels" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Config": { - "$ref": "#/definitions/NotificationChannelConfig" - }, - "Id": { - "description": "The ID of a notification channel.", - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Config" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-devops-guru", - "tagging": { - "taggable": false - }, - "typeName": "AWS::DevOpsGuru::NotificationChannel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Config" + ], + "definitions": { + "InsightSeveritiesFilterList": { + "description": "DevOps Guru insight severities to filter for", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InsightSeverity" + }, + "maxItems": 3, + "minItems": 1, + "type": "array" + }, + "InsightSeverity": { + "description": "DevOps Guru Insight Severity Enum", + "enum": [ + "LOW", + "MEDIUM", + "HIGH" + ], + "type": "string" + }, + "NotificationChannelConfig": { + "additionalProperties": false, + "description": "Information about notification channels you have configured with DevOps Guru.", + "properties": { + "Filters": { + "$ref": "#/definitions/NotificationFilterConfig" + }, + "Sns": { + "$ref": "#/definitions/SnsChannelConfig" + } + }, + "type": "object" + }, + "NotificationFilterConfig": { + "additionalProperties": false, + "description": "Information about filters of a notification channel configured in DevOpsGuru to filter for insights.", + "properties": { + "MessageTypes": { + "$ref": "#/definitions/NotificationMessageTypesFilterList" + }, + "Severities": { + "$ref": "#/definitions/InsightSeveritiesFilterList" + } + }, + "type": "object" + }, + "NotificationMessageType": { + "description": "DevOps Guru NotificationMessageType Enum", + "enum": [ + "NEW_INSIGHT", + "CLOSED_INSIGHT", + "NEW_ASSOCIATION", + "SEVERITY_UPGRADED", + "NEW_RECOMMENDATION" + ], + "type": "string" + }, + "NotificationMessageTypesFilterList": { + "description": "DevOps Guru message types to filter for", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/NotificationMessageType" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "SnsChannelConfig": { + "additionalProperties": false, + "description": "Information about a notification channel configured in DevOps Guru to send notifications when insights are created.", + "properties": { + "TopicArn": { + "maxLength": 1024, + "minLength": 36, + "pattern": "^arn:aws[a-z0-9-]*:sns:[a-z0-9-]+:\\d{12}:[^:]+$", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "This resource schema represents the NotificationChannel resource in the Amazon DevOps Guru.", + "handlers": { + "create": { + "permissions": [ + "devops-guru:AddNotificationChannel", + "devops-guru:ListNotificationChannels", + "sns:Publish", + "sns:GetTopicAttributes", + "sns:SetTopicAttributes" + ] + }, + "delete": { + "permissions": [ + "devops-guru:RemoveNotificationChannel", + "devops-guru:ListNotificationChannels" + ] + }, + "list": { + "permissions": [ + "devops-guru:ListNotificationChannels" + ] + }, + "read": { + "permissions": [ + "devops-guru:ListNotificationChannels" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Config": { + "$ref": "#/definitions/NotificationChannelConfig" + }, + "Id": { + "description": "The ID of a notification channel.", + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Config" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-devops-guru", + "tagging": { + "taggable": false + }, + "typeName": "AWS::DevOpsGuru::NotificationChannel" +} diff --git a/src/schema/aws-devopsguru-resourcecollection.json b/src/schema/aws-devopsguru-resourcecollection.json index ea83d1af..87b8d9ae 100644 --- a/src/schema/aws-devopsguru-resourcecollection.json +++ b/src/schema/aws-devopsguru-resourcecollection.json @@ -1,129 +1,129 @@ -{ - "additionalProperties": false, - "definitions": { - "CloudFormationCollectionFilter": { - "additionalProperties": false, - "description": "CloudFormation resource for DevOps Guru to monitor", - "properties": { - "StackNames": { - "description": "An array of CloudFormation stack names.", - "insertionOrder": false, - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z*]+[a-zA-Z0-9-]*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "ResourceCollectionFilter": { - "additionalProperties": false, - "description": "Information about a filter used to specify which AWS resources are analyzed for anomalous behavior by DevOps Guru.", - "properties": { - "CloudFormation": { - "$ref": "#/definitions/CloudFormationCollectionFilter" - }, - "Tags": { - "$ref": "#/definitions/TagCollections" - } - }, - "type": "object" - }, - "TagCollection": { - "additionalProperties": false, - "description": "Tagged resource for DevOps Guru to monitor", - "properties": { - "AppBoundaryKey": { - "description": "A Tag key for DevOps Guru app boundary.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "TagValues": { - "description": "Tag values of DevOps Guru app boundary.", - "insertionOrder": false, - "items": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "maxItems": 1000, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "TagCollections": { - "description": "Tagged resources for DevOps Guru to monitor", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TagCollection" - }, - "type": "array" - } - }, - "description": "This resource schema represents the ResourceCollection resource in the Amazon DevOps Guru.", - "handlers": { - "create": { - "permissions": [ - "devops-guru:UpdateResourceCollection", - "devops-guru:GetResourceCollection" - ] - }, - "delete": { - "permissions": [ - "devops-guru:UpdateResourceCollection", - "devops-guru:GetResourceCollection" - ] - }, - "list": { - "permissions": [ - "devops-guru:GetResourceCollection" - ] - }, - "read": { - "permissions": [ - "devops-guru:GetResourceCollection" - ] - }, - "update": { - "permissions": [ - "devops-guru:UpdateResourceCollection", - "devops-guru:GetResourceCollection" - ] - } - }, - "primaryIdentifier": [ - "/properties/ResourceCollectionType" - ], - "properties": { - "ResourceCollectionFilter": { - "$ref": "#/definitions/ResourceCollectionFilter" - }, - "ResourceCollectionType": { - "description": "The type of ResourceCollection", - "enum": [ - "AWS_CLOUD_FORMATION", - "AWS_TAGS" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ResourceCollectionType" - ], - "required": [ - "ResourceCollectionFilter" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-devops-guru", - "tagging": { - "taggable": false - }, - "typeName": "AWS::DevOpsGuru::ResourceCollection" -} +{ + "additionalProperties": false, + "definitions": { + "CloudFormationCollectionFilter": { + "additionalProperties": false, + "description": "CloudFormation resource for DevOps Guru to monitor", + "properties": { + "StackNames": { + "description": "An array of CloudFormation stack names.", + "insertionOrder": false, + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z*]+[a-zA-Z0-9-]*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "ResourceCollectionFilter": { + "additionalProperties": false, + "description": "Information about a filter used to specify which AWS resources are analyzed for anomalous behavior by DevOps Guru.", + "properties": { + "CloudFormation": { + "$ref": "#/definitions/CloudFormationCollectionFilter" + }, + "Tags": { + "$ref": "#/definitions/TagCollections" + } + }, + "type": "object" + }, + "TagCollection": { + "additionalProperties": false, + "description": "Tagged resource for DevOps Guru to monitor", + "properties": { + "AppBoundaryKey": { + "description": "A Tag key for DevOps Guru app boundary.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "TagValues": { + "description": "Tag values of DevOps Guru app boundary.", + "insertionOrder": false, + "items": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "TagCollections": { + "description": "Tagged resources for DevOps Guru to monitor", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagCollection" + }, + "type": "array" + } + }, + "description": "This resource schema represents the ResourceCollection resource in the Amazon DevOps Guru.", + "handlers": { + "create": { + "permissions": [ + "devops-guru:UpdateResourceCollection", + "devops-guru:GetResourceCollection" + ] + }, + "delete": { + "permissions": [ + "devops-guru:UpdateResourceCollection", + "devops-guru:GetResourceCollection" + ] + }, + "list": { + "permissions": [ + "devops-guru:GetResourceCollection" + ] + }, + "read": { + "permissions": [ + "devops-guru:GetResourceCollection" + ] + }, + "update": { + "permissions": [ + "devops-guru:UpdateResourceCollection", + "devops-guru:GetResourceCollection" + ] + } + }, + "primaryIdentifier": [ + "/properties/ResourceCollectionType" + ], + "properties": { + "ResourceCollectionFilter": { + "$ref": "#/definitions/ResourceCollectionFilter" + }, + "ResourceCollectionType": { + "description": "The type of ResourceCollection", + "enum": [ + "AWS_CLOUD_FORMATION", + "AWS_TAGS" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ResourceCollectionType" + ], + "required": [ + "ResourceCollectionFilter" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-devops-guru", + "tagging": { + "taggable": false + }, + "typeName": "AWS::DevOpsGuru::ResourceCollection" +} diff --git a/src/schema/aws-directoryservice-microsoftad.json b/src/schema/aws-directoryservice-microsoftad.json index 33ddb56a..5c68a0d9 100644 --- a/src/schema/aws-directoryservice-microsoftad.json +++ b/src/schema/aws-directoryservice-microsoftad.json @@ -1,84 +1,84 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/VpcSettings", - "/properties/Edition", - "/properties/Name", - "/properties/Password", - "/properties/ShortName", - "/properties/CreateAlias" - ], - "definitions": { - "VpcSettings": { - "additionalProperties": false, - "properties": { - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "VpcId": { - "type": "string" - } - }, - "required": [ - "VpcId", - "SubnetIds" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::DirectoryService::MicrosoftAD", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Alias": { - "type": "string" - }, - "CreateAlias": { - "type": "boolean" - }, - "DnsIpAddresses": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Edition": { - "type": "string" - }, - "EnableSso": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Password": { - "type": "string" - }, - "ShortName": { - "type": "string" - }, - "VpcSettings": { - "$ref": "#/definitions/VpcSettings" - } - }, - "readOnlyProperties": [ - "/properties/Alias", - "/properties/DnsIpAddresses", - "/properties/Id" - ], - "required": [ - "VpcSettings", - "Name", - "Password" - ], - "typeName": "AWS::DirectoryService::MicrosoftAD" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcSettings", + "/properties/Edition", + "/properties/Name", + "/properties/Password", + "/properties/ShortName", + "/properties/CreateAlias" + ], + "definitions": { + "VpcSettings": { + "additionalProperties": false, + "properties": { + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "VpcId": { + "type": "string" + } + }, + "required": [ + "VpcId", + "SubnetIds" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DirectoryService::MicrosoftAD", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Alias": { + "type": "string" + }, + "CreateAlias": { + "type": "boolean" + }, + "DnsIpAddresses": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Edition": { + "type": "string" + }, + "EnableSso": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Password": { + "type": "string" + }, + "ShortName": { + "type": "string" + }, + "VpcSettings": { + "$ref": "#/definitions/VpcSettings" + } + }, + "readOnlyProperties": [ + "/properties/Alias", + "/properties/DnsIpAddresses", + "/properties/Id" + ], + "required": [ + "VpcSettings", + "Name", + "Password" + ], + "typeName": "AWS::DirectoryService::MicrosoftAD" +} diff --git a/src/schema/aws-directoryservice-simplead.json b/src/schema/aws-directoryservice-simplead.json index 2e2a083e..90eab751 100644 --- a/src/schema/aws-directoryservice-simplead.json +++ b/src/schema/aws-directoryservice-simplead.json @@ -1,165 +1,165 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Size", - "/properties/VpcSettings", - "/properties/Name", - "/properties/Password", - "/properties/ShortName", - "/properties/Description", - "/properties/CreateAlias" - ], - "definitions": { - "VpcSettings": { - "$comment": "Contains VPC information", - "additionalProperties": false, - "properties": { - "SubnetIds": { - "description": "The identifiers of the subnets for the directory servers. The two subnets must be in different Availability Zones. AWS Directory Service specifies a directory server and a DNS server in each of these subnets.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "VpcId": { - "description": "The identifier of the VPC in which to create the directory.", - "type": "string" - } - }, - "required": [ - "VpcId", - "SubnetIds" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::DirectoryService::SimpleAD", - "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html", - "handlers": { - "create": { - "permissions": [ - "ds:CreateDirectory", - "ds:CreateAlias", - "ds:EnableSso", - "ds:DescribeDirectories", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "ec2:CreateSecurityGroup", - "ec2:CreateNetworkInterface", - "ec2:DescribeNetworkInterfaces", - "ec2:AuthorizeSecurityGroupIngress", - "ec2:AuthorizeSecurityGroupEgress", - "ec2:CreateTags", - "ec2:RevokeSecurityGroupIngress", - "ec2:RevokeSecurityGroupEgress" - ], - "timeoutInMinutes": 60 - }, - "delete": { - "permissions": [ - "ds:DeleteDirectory", - "ds:DescribeDirectories", - "ec2:DescribeNetworkInterfaces", - "ec2:DeleteSecurityGroup", - "ec2:DeleteNetworkInterface", - "ec2:RevokeSecurityGroupIngress", - "ec2:RevokeSecurityGroupEgress", - "ec2:DeleteTags" - ], - "timeoutInMinutes": 100 - }, - "list": { - "permissions": [ - "ds:DescribeDirectories" - ] - }, - "read": { - "permissions": [ - "ds:DescribeDirectories" - ] - }, - "update": { - "permissions": [ - "ds:EnableSso", - "ds:DisableSso", - "ds:DescribeDirectories" - ] - } - }, - "primaryIdentifier": [ - "/properties/DirectoryId" - ], - "properties": { - "Alias": { - "description": "The alias for a directory.", - "type": "string" - }, - "CreateAlias": { - "description": "The name of the configuration set.", - "type": "boolean" - }, - "Description": { - "description": "Description for the directory.", - "type": "string" - }, - "DirectoryId": { - "description": "The unique identifier for a directory.", - "type": "string" - }, - "DnsIpAddresses": { - "description": "The IP addresses of the DNS servers for the directory, such as [ \"172.31.3.154\", \"172.31.63.203\" ].", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "EnableSso": { - "description": "Whether to enable single sign-on for a Simple Active Directory in AWS.", - "type": "boolean" - }, - "Name": { - "description": "The fully qualified domain name for the AWS Managed Simple AD directory.", - "type": "string" - }, - "Password": { - "description": "The password for the default administrative user named Admin.", - "type": "string" - }, - "ShortName": { - "description": "The NetBIOS name for your domain.", - "type": "string" - }, - "Size": { - "description": "The size of the directory.", - "type": "string" - }, - "VpcSettings": { - "$ref": "#/definitions/VpcSettings", - "description": "VPC settings of the Simple AD directory server in AWS." - } - }, - "readOnlyProperties": [ - "/properties/Alias", - "/properties/DnsIpAddresses", - "/properties/DirectoryId" - ], - "required": [ - "VpcSettings", - "Size", - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::DirectoryService::SimpleAD", - "writeOnlyProperties": [ - "/properties/Password" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Size", + "/properties/VpcSettings", + "/properties/Name", + "/properties/Password", + "/properties/ShortName", + "/properties/Description", + "/properties/CreateAlias" + ], + "definitions": { + "VpcSettings": { + "$comment": "Contains VPC information", + "additionalProperties": false, + "properties": { + "SubnetIds": { + "description": "The identifiers of the subnets for the directory servers. The two subnets must be in different Availability Zones. AWS Directory Service specifies a directory server and a DNS server in each of these subnets.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "VpcId": { + "description": "The identifier of the VPC in which to create the directory.", + "type": "string" + } + }, + "required": [ + "VpcId", + "SubnetIds" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DirectoryService::SimpleAD", + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html", + "handlers": { + "create": { + "permissions": [ + "ds:CreateDirectory", + "ds:CreateAlias", + "ds:EnableSso", + "ds:DescribeDirectories", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "ec2:CreateSecurityGroup", + "ec2:CreateNetworkInterface", + "ec2:DescribeNetworkInterfaces", + "ec2:AuthorizeSecurityGroupIngress", + "ec2:AuthorizeSecurityGroupEgress", + "ec2:CreateTags", + "ec2:RevokeSecurityGroupIngress", + "ec2:RevokeSecurityGroupEgress" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "ds:DeleteDirectory", + "ds:DescribeDirectories", + "ec2:DescribeNetworkInterfaces", + "ec2:DeleteSecurityGroup", + "ec2:DeleteNetworkInterface", + "ec2:RevokeSecurityGroupIngress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DeleteTags" + ], + "timeoutInMinutes": 100 + }, + "list": { + "permissions": [ + "ds:DescribeDirectories" + ] + }, + "read": { + "permissions": [ + "ds:DescribeDirectories" + ] + }, + "update": { + "permissions": [ + "ds:EnableSso", + "ds:DisableSso", + "ds:DescribeDirectories" + ] + } + }, + "primaryIdentifier": [ + "/properties/DirectoryId" + ], + "properties": { + "Alias": { + "description": "The alias for a directory.", + "type": "string" + }, + "CreateAlias": { + "description": "The name of the configuration set.", + "type": "boolean" + }, + "Description": { + "description": "Description for the directory.", + "type": "string" + }, + "DirectoryId": { + "description": "The unique identifier for a directory.", + "type": "string" + }, + "DnsIpAddresses": { + "description": "The IP addresses of the DNS servers for the directory, such as [ \"172.31.3.154\", \"172.31.63.203\" ].", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "EnableSso": { + "description": "Whether to enable single sign-on for a Simple Active Directory in AWS.", + "type": "boolean" + }, + "Name": { + "description": "The fully qualified domain name for the AWS Managed Simple AD directory.", + "type": "string" + }, + "Password": { + "description": "The password for the default administrative user named Admin.", + "type": "string" + }, + "ShortName": { + "description": "The NetBIOS name for your domain.", + "type": "string" + }, + "Size": { + "description": "The size of the directory.", + "type": "string" + }, + "VpcSettings": { + "$ref": "#/definitions/VpcSettings", + "description": "VPC settings of the Simple AD directory server in AWS." + } + }, + "readOnlyProperties": [ + "/properties/Alias", + "/properties/DnsIpAddresses", + "/properties/DirectoryId" + ], + "required": [ + "VpcSettings", + "Size", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::DirectoryService::SimpleAD", + "writeOnlyProperties": [ + "/properties/Password" + ] +} diff --git a/src/schema/aws-dlm-lifecyclepolicy.json b/src/schema/aws-dlm-lifecyclepolicy.json index 7e643c03..aa31b63c 100644 --- a/src/schema/aws-dlm-lifecyclepolicy.json +++ b/src/schema/aws-dlm-lifecyclepolicy.json @@ -1,577 +1,577 @@ -{ - "additionalProperties": false, - "definitions": { - "Action": { - "additionalProperties": false, - "properties": { - "CrossRegionCopy": { - "items": { - "$ref": "#/definitions/CrossRegionCopyAction" - }, - "type": "array", - "uniqueItems": false - }, - "Name": { - "type": "string" - } - }, - "required": [ - "CrossRegionCopy", - "Name" - ], - "type": "object" - }, - "ArchiveRetainRule": { - "additionalProperties": false, - "properties": { - "RetentionArchiveTier": { - "$ref": "#/definitions/RetentionArchiveTier" - } - }, - "required": [ - "RetentionArchiveTier" - ], - "type": "object" - }, - "ArchiveRule": { - "additionalProperties": false, - "properties": { - "RetainRule": { - "$ref": "#/definitions/ArchiveRetainRule" - } - }, - "required": [ - "RetainRule" - ], - "type": "object" - }, - "CreateRule": { - "additionalProperties": false, - "properties": { - "CronExpression": { - "type": "string" - }, - "Interval": { - "type": "integer" - }, - "IntervalUnit": { - "type": "string" - }, - "Location": { - "type": "string" - }, - "Scripts": { - "items": { - "$ref": "#/definitions/Script" - }, - "type": "array", - "uniqueItems": false - }, - "Times": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "CrossRegionCopyAction": { - "additionalProperties": false, - "properties": { - "EncryptionConfiguration": { - "$ref": "#/definitions/EncryptionConfiguration" - }, - "RetainRule": { - "$ref": "#/definitions/CrossRegionCopyRetainRule" - }, - "Target": { - "type": "string" - } - }, - "required": [ - "Target", - "EncryptionConfiguration" - ], - "type": "object" - }, - "CrossRegionCopyDeprecateRule": { - "additionalProperties": false, - "properties": { - "Interval": { - "type": "integer" - }, - "IntervalUnit": { - "type": "string" - } - }, - "required": [ - "IntervalUnit", - "Interval" - ], - "type": "object" - }, - "CrossRegionCopyRetainRule": { - "additionalProperties": false, - "properties": { - "Interval": { - "type": "integer" - }, - "IntervalUnit": { - "type": "string" - } - }, - "required": [ - "IntervalUnit", - "Interval" - ], - "type": "object" - }, - "CrossRegionCopyRule": { - "additionalProperties": false, - "properties": { - "CmkArn": { - "type": "string" - }, - "CopyTags": { - "type": "boolean" - }, - "DeprecateRule": { - "$ref": "#/definitions/CrossRegionCopyDeprecateRule" - }, - "Encrypted": { - "type": "boolean" - }, - "RetainRule": { - "$ref": "#/definitions/CrossRegionCopyRetainRule" - }, - "Target": { - "type": "string" - }, - "TargetRegion": { - "type": "string" - } - }, - "required": [ - "Encrypted" - ], - "type": "object" - }, - "CrossRegionCopyTargets": { - "additionalProperties": false, - "type": "object" - }, - "DeprecateRule": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Interval": { - "type": "integer" - }, - "IntervalUnit": { - "type": "string" - } - }, - "type": "object" - }, - "EncryptionConfiguration": { - "additionalProperties": false, - "properties": { - "CmkArn": { - "type": "string" - }, - "Encrypted": { - "type": "boolean" - } - }, - "required": [ - "Encrypted" - ], - "type": "object" - }, - "EventParameters": { - "additionalProperties": false, - "properties": { - "DescriptionRegex": { - "type": "string" - }, - "EventType": { - "type": "string" - }, - "SnapshotOwner": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "EventType", - "SnapshotOwner" - ], - "type": "object" - }, - "EventSource": { - "additionalProperties": false, - "properties": { - "Parameters": { - "$ref": "#/definitions/EventParameters" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ExcludeTags": { - "additionalProperties": false, - "type": "object" - }, - "ExcludeVolumeTypesList": { - "additionalProperties": false, - "type": "object" - }, - "Exclusions": { - "additionalProperties": false, - "properties": { - "ExcludeBootVolumes": { - "type": "boolean" - }, - "ExcludeTags": { - "$ref": "#/definitions/ExcludeTags" - }, - "ExcludeVolumeTypes": { - "$ref": "#/definitions/ExcludeVolumeTypesList" - } - }, - "type": "object" - }, - "FastRestoreRule": { - "additionalProperties": false, - "properties": { - "AvailabilityZones": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Count": { - "type": "integer" - }, - "Interval": { - "type": "integer" - }, - "IntervalUnit": { - "type": "string" - } - }, - "type": "object" - }, - "Parameters": { - "additionalProperties": false, - "properties": { - "ExcludeBootVolume": { - "type": "boolean" - }, - "ExcludeDataVolumeTags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "NoReboot": { - "type": "boolean" - } - }, - "type": "object" - }, - "PolicyDetails": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/Action" - }, - "type": "array", - "uniqueItems": false - }, - "CopyTags": { - "type": "boolean" - }, - "CreateInterval": { - "type": "integer" - }, - "CrossRegionCopyTargets": { - "$ref": "#/definitions/CrossRegionCopyTargets" - }, - "EventSource": { - "$ref": "#/definitions/EventSource" - }, - "Exclusions": { - "$ref": "#/definitions/Exclusions" - }, - "ExtendDeletion": { - "type": "boolean" - }, - "Parameters": { - "$ref": "#/definitions/Parameters" - }, - "PolicyLanguage": { - "type": "string" - }, - "PolicyType": { - "type": "string" - }, - "ResourceLocations": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ResourceType": { - "type": "string" - }, - "ResourceTypes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "RetainInterval": { - "type": "integer" - }, - "Schedules": { - "items": { - "$ref": "#/definitions/Schedule" - }, - "type": "array", - "uniqueItems": false - }, - "TargetTags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "RetainRule": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Interval": { - "type": "integer" - }, - "IntervalUnit": { - "type": "string" - } - }, - "type": "object" - }, - "RetentionArchiveTier": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Interval": { - "type": "integer" - }, - "IntervalUnit": { - "type": "string" - } - }, - "type": "object" - }, - "Schedule": { - "additionalProperties": false, - "properties": { - "ArchiveRule": { - "$ref": "#/definitions/ArchiveRule" - }, - "CopyTags": { - "type": "boolean" - }, - "CreateRule": { - "$ref": "#/definitions/CreateRule" - }, - "CrossRegionCopyRules": { - "items": { - "$ref": "#/definitions/CrossRegionCopyRule" - }, - "type": "array", - "uniqueItems": false - }, - "DeprecateRule": { - "$ref": "#/definitions/DeprecateRule" - }, - "FastRestoreRule": { - "$ref": "#/definitions/FastRestoreRule" - }, - "Name": { - "type": "string" - }, - "RetainRule": { - "$ref": "#/definitions/RetainRule" - }, - "ShareRules": { - "items": { - "$ref": "#/definitions/ShareRule" - }, - "type": "array", - "uniqueItems": false - }, - "TagsToAdd": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VariableTags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "Script": { - "additionalProperties": false, - "properties": { - "ExecuteOperationOnScriptFailure": { - "type": "boolean" - }, - "ExecutionHandler": { - "type": "string" - }, - "ExecutionHandlerService": { - "type": "string" - }, - "ExecutionTimeout": { - "type": "integer" - }, - "MaximumRetryCount": { - "type": "integer" - }, - "Stages": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "ShareRule": { - "additionalProperties": false, - "properties": { - "TargetAccounts": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "UnshareInterval": { - "type": "integer" - }, - "UnshareIntervalUnit": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::DLM::LifecyclePolicy", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "CopyTags": { - "type": "boolean" - }, - "CreateInterval": { - "type": "integer" - }, - "CrossRegionCopyTargets": { - "$ref": "#/definitions/CrossRegionCopyTargets" - }, - "DefaultPolicy": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Exclusions": { - "$ref": "#/definitions/Exclusions" - }, - "ExecutionRoleArn": { - "type": "string" - }, - "ExtendDeletion": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "PolicyDetails": { - "$ref": "#/definitions/PolicyDetails" - }, - "RetainInterval": { - "type": "integer" - }, - "State": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "typeName": "AWS::DLM::LifecyclePolicy" -} +{ + "additionalProperties": false, + "definitions": { + "Action": { + "additionalProperties": false, + "properties": { + "CrossRegionCopy": { + "items": { + "$ref": "#/definitions/CrossRegionCopyAction" + }, + "type": "array", + "uniqueItems": false + }, + "Name": { + "type": "string" + } + }, + "required": [ + "CrossRegionCopy", + "Name" + ], + "type": "object" + }, + "ArchiveRetainRule": { + "additionalProperties": false, + "properties": { + "RetentionArchiveTier": { + "$ref": "#/definitions/RetentionArchiveTier" + } + }, + "required": [ + "RetentionArchiveTier" + ], + "type": "object" + }, + "ArchiveRule": { + "additionalProperties": false, + "properties": { + "RetainRule": { + "$ref": "#/definitions/ArchiveRetainRule" + } + }, + "required": [ + "RetainRule" + ], + "type": "object" + }, + "CreateRule": { + "additionalProperties": false, + "properties": { + "CronExpression": { + "type": "string" + }, + "Interval": { + "type": "integer" + }, + "IntervalUnit": { + "type": "string" + }, + "Location": { + "type": "string" + }, + "Scripts": { + "items": { + "$ref": "#/definitions/Script" + }, + "type": "array", + "uniqueItems": false + }, + "Times": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CrossRegionCopyAction": { + "additionalProperties": false, + "properties": { + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration" + }, + "RetainRule": { + "$ref": "#/definitions/CrossRegionCopyRetainRule" + }, + "Target": { + "type": "string" + } + }, + "required": [ + "Target", + "EncryptionConfiguration" + ], + "type": "object" + }, + "CrossRegionCopyDeprecateRule": { + "additionalProperties": false, + "properties": { + "Interval": { + "type": "integer" + }, + "IntervalUnit": { + "type": "string" + } + }, + "required": [ + "IntervalUnit", + "Interval" + ], + "type": "object" + }, + "CrossRegionCopyRetainRule": { + "additionalProperties": false, + "properties": { + "Interval": { + "type": "integer" + }, + "IntervalUnit": { + "type": "string" + } + }, + "required": [ + "IntervalUnit", + "Interval" + ], + "type": "object" + }, + "CrossRegionCopyRule": { + "additionalProperties": false, + "properties": { + "CmkArn": { + "type": "string" + }, + "CopyTags": { + "type": "boolean" + }, + "DeprecateRule": { + "$ref": "#/definitions/CrossRegionCopyDeprecateRule" + }, + "Encrypted": { + "type": "boolean" + }, + "RetainRule": { + "$ref": "#/definitions/CrossRegionCopyRetainRule" + }, + "Target": { + "type": "string" + }, + "TargetRegion": { + "type": "string" + } + }, + "required": [ + "Encrypted" + ], + "type": "object" + }, + "CrossRegionCopyTargets": { + "additionalProperties": false, + "type": "object" + }, + "DeprecateRule": { + "additionalProperties": false, + "properties": { + "Count": { + "type": "integer" + }, + "Interval": { + "type": "integer" + }, + "IntervalUnit": { + "type": "string" + } + }, + "type": "object" + }, + "EncryptionConfiguration": { + "additionalProperties": false, + "properties": { + "CmkArn": { + "type": "string" + }, + "Encrypted": { + "type": "boolean" + } + }, + "required": [ + "Encrypted" + ], + "type": "object" + }, + "EventParameters": { + "additionalProperties": false, + "properties": { + "DescriptionRegex": { + "type": "string" + }, + "EventType": { + "type": "string" + }, + "SnapshotOwner": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "EventType", + "SnapshotOwner" + ], + "type": "object" + }, + "EventSource": { + "additionalProperties": false, + "properties": { + "Parameters": { + "$ref": "#/definitions/EventParameters" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "ExcludeTags": { + "additionalProperties": false, + "type": "object" + }, + "ExcludeVolumeTypesList": { + "additionalProperties": false, + "type": "object" + }, + "Exclusions": { + "additionalProperties": false, + "properties": { + "ExcludeBootVolumes": { + "type": "boolean" + }, + "ExcludeTags": { + "$ref": "#/definitions/ExcludeTags" + }, + "ExcludeVolumeTypes": { + "$ref": "#/definitions/ExcludeVolumeTypesList" + } + }, + "type": "object" + }, + "FastRestoreRule": { + "additionalProperties": false, + "properties": { + "AvailabilityZones": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Count": { + "type": "integer" + }, + "Interval": { + "type": "integer" + }, + "IntervalUnit": { + "type": "string" + } + }, + "type": "object" + }, + "Parameters": { + "additionalProperties": false, + "properties": { + "ExcludeBootVolume": { + "type": "boolean" + }, + "ExcludeDataVolumeTags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "NoReboot": { + "type": "boolean" + } + }, + "type": "object" + }, + "PolicyDetails": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/Action" + }, + "type": "array", + "uniqueItems": false + }, + "CopyTags": { + "type": "boolean" + }, + "CreateInterval": { + "type": "integer" + }, + "CrossRegionCopyTargets": { + "$ref": "#/definitions/CrossRegionCopyTargets" + }, + "EventSource": { + "$ref": "#/definitions/EventSource" + }, + "Exclusions": { + "$ref": "#/definitions/Exclusions" + }, + "ExtendDeletion": { + "type": "boolean" + }, + "Parameters": { + "$ref": "#/definitions/Parameters" + }, + "PolicyLanguage": { + "type": "string" + }, + "PolicyType": { + "type": "string" + }, + "ResourceLocations": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ResourceType": { + "type": "string" + }, + "ResourceTypes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "RetainInterval": { + "type": "integer" + }, + "Schedules": { + "items": { + "$ref": "#/definitions/Schedule" + }, + "type": "array", + "uniqueItems": false + }, + "TargetTags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "RetainRule": { + "additionalProperties": false, + "properties": { + "Count": { + "type": "integer" + }, + "Interval": { + "type": "integer" + }, + "IntervalUnit": { + "type": "string" + } + }, + "type": "object" + }, + "RetentionArchiveTier": { + "additionalProperties": false, + "properties": { + "Count": { + "type": "integer" + }, + "Interval": { + "type": "integer" + }, + "IntervalUnit": { + "type": "string" + } + }, + "type": "object" + }, + "Schedule": { + "additionalProperties": false, + "properties": { + "ArchiveRule": { + "$ref": "#/definitions/ArchiveRule" + }, + "CopyTags": { + "type": "boolean" + }, + "CreateRule": { + "$ref": "#/definitions/CreateRule" + }, + "CrossRegionCopyRules": { + "items": { + "$ref": "#/definitions/CrossRegionCopyRule" + }, + "type": "array", + "uniqueItems": false + }, + "DeprecateRule": { + "$ref": "#/definitions/DeprecateRule" + }, + "FastRestoreRule": { + "$ref": "#/definitions/FastRestoreRule" + }, + "Name": { + "type": "string" + }, + "RetainRule": { + "$ref": "#/definitions/RetainRule" + }, + "ShareRules": { + "items": { + "$ref": "#/definitions/ShareRule" + }, + "type": "array", + "uniqueItems": false + }, + "TagsToAdd": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VariableTags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "Script": { + "additionalProperties": false, + "properties": { + "ExecuteOperationOnScriptFailure": { + "type": "boolean" + }, + "ExecutionHandler": { + "type": "string" + }, + "ExecutionHandlerService": { + "type": "string" + }, + "ExecutionTimeout": { + "type": "integer" + }, + "MaximumRetryCount": { + "type": "integer" + }, + "Stages": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "ShareRule": { + "additionalProperties": false, + "properties": { + "TargetAccounts": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "UnshareInterval": { + "type": "integer" + }, + "UnshareIntervalUnit": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DLM::LifecyclePolicy", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "CopyTags": { + "type": "boolean" + }, + "CreateInterval": { + "type": "integer" + }, + "CrossRegionCopyTargets": { + "$ref": "#/definitions/CrossRegionCopyTargets" + }, + "DefaultPolicy": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Exclusions": { + "$ref": "#/definitions/Exclusions" + }, + "ExecutionRoleArn": { + "type": "string" + }, + "ExtendDeletion": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "PolicyDetails": { + "$ref": "#/definitions/PolicyDetails" + }, + "RetainInterval": { + "type": "integer" + }, + "State": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "typeName": "AWS::DLM::LifecyclePolicy" +} diff --git a/src/schema/aws-dms-certificate.json b/src/schema/aws-dms-certificate.json index ab90b16e..5da120ff 100644 --- a/src/schema/aws-dms-certificate.json +++ b/src/schema/aws-dms-certificate.json @@ -1,30 +1,30 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CertificateIdentifier", - "/properties/CertificatePem", - "/properties/CertificateWallet" - ], - "description": "Resource Type definition for AWS::DMS::Certificate", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CertificateIdentifier": { - "type": "string" - }, - "CertificatePem": { - "type": "string" - }, - "CertificateWallet": { - "type": "string" - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "typeName": "AWS::DMS::Certificate" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CertificateIdentifier", + "/properties/CertificatePem", + "/properties/CertificateWallet" + ], + "description": "Resource Type definition for AWS::DMS::Certificate", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CertificateIdentifier": { + "type": "string" + }, + "CertificatePem": { + "type": "string" + }, + "CertificateWallet": { + "type": "string" + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::DMS::Certificate" +} diff --git a/src/schema/aws-dms-datamigration.json b/src/schema/aws-dms-datamigration.json index 1ae3e787..4c3816e6 100644 --- a/src/schema/aws-dms-datamigration.json +++ b/src/schema/aws-dms-datamigration.json @@ -1,169 +1,216 @@ { - "typeName" : "AWS::DMS::DataMigration", - "description" : "Resource schema for AWS::DMS::DataMigration.", - "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging" : { - "taggable" : true, - "tagOnCreate" : true, - "tagUpdatable" : true, - "cloudFormationSystemTags" : false, - "tagProperty" : "/properties/Tags", - "permissions" : [ "dms:AddTagsToResource", "dms:RemoveTagsFromResource", "dms:ListTagsForResource" ] - }, - "definitions" : { - "Tag" : { - "description" : "A key-value pair to associate with a resource.", - "type" : "object", - "properties" : { - "Key" : { - "type" : "string", - "description" : "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "minLength" : 1, - "maxLength" : 128 + "additionalIdentifiers": [ + [ + "/properties/DataMigrationName" + ] + ], + "additionalProperties": false, + "definitions": { + "DataMigrationSettings": { + "additionalProperties": false, + "properties": { + "CloudwatchLogsEnabled": { + "description": "The property specifies whether to enable the Cloudwatch log.", + "type": "boolean" + }, + "NumberOfJobs": { + "description": "The number of parallel jobs that trigger parallel threads to unload the tables from the source, and then load them to the target.", + "maximum": 50, + "minimum": 1, + "type": "integer" }, - "Value" : { - "type" : "string", - "description" : "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "minLength" : 0, - "maxLength" : 256 + "SelectionRules": { + "description": "The property specifies the rules of selecting objects for data migration.", + "type": "string" } }, - "required" : [ "Key", "Value" ], - "additionalProperties" : false + "type": "object" }, - "DataMigrationSettings" : { - "type" : "object", - "properties" : { - "CloudwatchLogsEnabled" : { - "type" : "boolean", - "description" : "The property specifies whether to enable the Cloudwatch log." + "SourceDataSettings": { + "additionalProperties": false, + "properties": { + "CDCStartPosition": { + "description": "The property is a point in the database engine's log that defines a time where you can begin CDC.", + "maxLength": 40, + "type": "string" }, - "NumberOfJobs" : { - "type" : "integer", - "description" : "The number of parallel jobs that trigger parallel threads to unload the tables from the source, and then load them to the target.", - "minimum" : 1, - "maximum" : 50 + "CDCStartTime": { + "description": "The property indicates the start time for a change data capture (CDC) operation. The value is server time in UTC format.", + "maxLength": 40, + "type": "string" }, - "SelectionRules" : { - "type" : "string", - "description" : "The property specifies the rules of selecting objects for data migration." + "CDCStopTime": { + "description": "The property indicates the stop time for a change data capture (CDC) operation. The value is server time in UTC format.", + "maxLength": 40, + "type": "string" + }, + "SlotName": { + "description": "The property sets the name of a previously created logical replication slot for a change data capture (CDC) load of the source instance.", + "maxLength": 255, + "type": "string" } }, - "additionalProperties" : false + "type": "object" }, - "SourceDataSettings" : { - "type" : "object", - "properties" : { - "CDCStartPosition" : { - "type" : "string", - "description" : "The property is a point in the database engine's log that defines a time where you can begin CDC.", - "maxLength" : 40 - }, - "CDCStartTime" : { - "type" : "string", - "description" : "The property indicates the start time for a change data capture (CDC) operation. The value is server time in UTC format.", - "maxLength" : 40 + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" }, - "CDCStopTime" : { - "type" : "string", - "description" : "The property indicates the stop time for a change data capture (CDC) operation. The value is server time in UTC format.", - "maxLength" : 40 - }, - "SlotName" : { - "type" : "string", - "description" : "The property sets the name of a previously created logical replication slot for a change data capture (CDC) load of the source instance.", - "maxLength" : 255 + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" } }, - "additionalProperties" : false + "required": [ + "Key", + "Value" + ], + "type": "object" } }, - "properties" : { - "DataMigrationName" : { - "description" : "The property describes a name to identify the data migration.", - "type" : "string", - "minLength" : 1, - "maxLength" : 300 + "description": "Resource schema for AWS::DMS::DataMigration.", + "handlers": { + "create": { + "permissions": [ + "dms:CreateDataMigration", + "dms:DescribeDataMigrations", + "dms:AddTagsToResource", + "dms:ListTagsForResource", + "iam:PassRole" + ] }, - "DataMigrationArn" : { - "description" : "The property describes an ARN of the data migration.", - "type" : "string", - "minLength" : 1, - "maxLength" : 300 + "delete": { + "permissions": [ + "dms:DeleteDataMigration", + "dms:RemoveTagsFromResource" + ] }, - "DataMigrationIdentifier" : { - "description" : "The property describes an ARN of the data migration.", - "type" : "string", - "minLength" : 1, - "maxLength" : 300 + "list": { + "permissions": [ + "dms:DescribeDataMigrations", + "dms:ListTagsForResource" + ] }, - "DataMigrationCreateTime" : { - "description" : "The property describes the create time of the data migration.", - "type" : "string", - "minLength" : 1, - "maxLength" : 40 + "read": { + "permissions": [ + "dms:DescribeDataMigrations", + "dms:ListTagsForResource" + ] }, - "ServiceAccessRoleArn" : { - "description" : "The property describes Amazon Resource Name (ARN) of the service access role.", - "type" : "string", - "minLength" : 1, - "maxLength" : 300 + "update": { + "permissions": [ + "dms:ModifyDataMigration", + "dms:AddTagsToResource", + "dms:RemoveTagsFromResource", + "dms:ListTagsForResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DataMigrationArn" + ], + "properties": { + "DataMigrationArn": { + "description": "The property describes an ARN of the data migration.", + "maxLength": 300, + "minLength": 1, + "type": "string" }, - "MigrationProjectIdentifier" : { - "description" : "The property describes an identifier for the migration project. It is used for describing/deleting/modifying can be name/arn", - "type" : "string", - "minLength" : 1, - "maxLength" : 255 + "DataMigrationCreateTime": { + "description": "The property describes the create time of the data migration.", + "maxLength": 40, + "minLength": 1, + "type": "string" }, - "DataMigrationType" : { - "description" : "The property describes the type of migration.", - "type" : "string", - "enum" : [ "full-load", "cdc", "full-load-and-cdc" ] + "DataMigrationIdentifier": { + "description": "The property describes an ARN of the data migration.", + "maxLength": 300, + "minLength": 1, + "type": "string" }, - "DataMigrationSettings" : { - "description" : "The property describes the settings for the data migration.", - "$ref" : "#/definitions/DataMigrationSettings" + "DataMigrationName": { + "description": "The property describes a name to identify the data migration.", + "maxLength": 300, + "minLength": 1, + "type": "string" }, - "SourceDataSettings" : { - "description" : "The property describes the settings for the data migration.", - "type" : "array", - "uniqueItems" : true, - "insertionOrder" : false, - "items" : { - "$ref" : "#/definitions/SourceDataSettings" - } + "DataMigrationSettings": { + "$ref": "#/definitions/DataMigrationSettings", + "description": "The property describes the settings for the data migration." }, - "Tags" : { - "description" : "An array of key-value pairs to apply to this resource.", - "type" : "array", - "uniqueItems" : true, - "insertionOrder" : false, - "items" : { - "$ref" : "#/definitions/Tag" - } - } - }, - "primaryIdentifier" : [ "/properties/DataMigrationArn" ], - "additionalIdentifiers" : [ [ "/properties/DataMigrationName" ] ], - "readOnlyProperties" : [ "/properties/DataMigrationArn", "/properties/DataMigrationCreateTime" ], - "writeOnlyProperties" : [ "/properties/DataMigrationIdentifier" ], - "required" : [ "DataMigrationType", "MigrationProjectIdentifier", "ServiceAccessRoleArn" ], - "additionalProperties" : false, - "handlers" : { - "create" : { - "permissions" : [ "dms:CreateDataMigration", "dms:DescribeDataMigrations", "dms:AddTagsToResource", "dms:ListTagsForResource", "iam:PassRole" ] + "DataMigrationType": { + "description": "The property describes the type of migration.", + "enum": [ + "full-load", + "cdc", + "full-load-and-cdc" + ], + "type": "string" }, - "read" : { - "permissions" : [ "dms:DescribeDataMigrations", "dms:ListTagsForResource" ] + "MigrationProjectIdentifier": { + "description": "The property describes an identifier for the migration project. It is used for describing/deleting/modifying can be name/arn", + "maxLength": 255, + "minLength": 1, + "type": "string" }, - "update" : { - "permissions" : [ "dms:ModifyDataMigration", "dms:AddTagsToResource", "dms:RemoveTagsFromResource", "dms:ListTagsForResource", "iam:PassRole" ] + "ServiceAccessRoleArn": { + "description": "The property describes Amazon Resource Name (ARN) of the service access role.", + "maxLength": 300, + "minLength": 1, + "type": "string" }, - "delete" : { - "permissions" : [ "dms:DeleteDataMigration", "dms:RemoveTagsFromResource" ] + "SourceDataSettings": { + "description": "The property describes the settings for the data migration.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SourceDataSettings" + }, + "type": "array", + "uniqueItems": true }, - "list" : { - "permissions" : [ "dms:DescribeDataMigrations", "dms:ListTagsForResource" ] + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true } - } -} \ No newline at end of file + }, + "readOnlyProperties": [ + "/properties/DataMigrationArn", + "/properties/DataMigrationCreateTime" + ], + "required": [ + "DataMigrationType", + "MigrationProjectIdentifier", + "ServiceAccessRoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "dms:AddTagsToResource", + "dms:RemoveTagsFromResource", + "dms:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DMS::DataMigration", + "writeOnlyProperties": [ + "/properties/DataMigrationIdentifier" + ] +} diff --git a/src/schema/aws-dms-dataprovider.json b/src/schema/aws-dms-dataprovider.json index d8a3d64c..82fa12a3 100644 --- a/src/schema/aws-dms-dataprovider.json +++ b/src/schema/aws-dms-dataprovider.json @@ -1,321 +1,551 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/DataProviderName" - ] - ], - "additionalProperties": false, - "definitions": { - "DmsSslModeValue": { - "enum": [ - "none", - "require", - "verify-ca", - "verify-full" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DMS::DataProvider", - "handlers": { - "create": { - "permissions": [ - "dms:CreateDataProvider", - "dms:ListDataProviders", - "dms:DescribeDataProviders", - "dms:AddTagsToResource", - "dms:ListTagsForResource", - "iam:GetRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "dms:DeleteDataProvider" - ] - }, - "list": { - "permissions": [ - "dms:ListDataProviders", - "dms:DescribeDataProviders", - "dms:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "dms:ListDataProviders", - "dms:DescribeDataProviders", - "dms:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "dms:UpdateDataProvider", - "dms:ModifyDataProvider", - "dms:AddTagsToResource", - "dms:RemoveTagsToResource", - "dms:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/DataProviderArn" - ], - "properties": { - "DataProviderArn": { - "description": "The data provider ARN.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "DataProviderCreationTime": { - "description": "The data provider creation time.", - "maxLength": 40, - "minLength": 1, - "type": "string" - }, - "DataProviderIdentifier": { - "description": "The property describes an identifier for the data provider. It is used for describing/deleting/modifying can be name/arn", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "DataProviderName": { - "description": "The property describes a name to identify the data provider.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Description": { - "description": "The optional description of the data provider.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Engine": { - "description": "The property describes a data engine for the data provider.", - "enum": [ - "postgres", - "mysql", - "oracle", - "sqlserver", - "aurora", - "aurora_postgresql" - ], - "type": "string" - }, - "ExactSettings": { - "default": false, - "description": "The property describes the exact settings which can be modified", - "type": "boolean" - }, - "Settings": { - "additionalProperties": false, - "anyOf": [ - { - "required": [ - "PostgreSqlSettings" - ] - }, - { - "required": [ - "MySqlSettings" - ] - }, - { - "required": [ - "OracleSettings" - ] - }, - { - "required": [ - "MicrosoftSqlServerSettings" - ] - } - ], - "description": "The property identifies the exact type of settings for the data provider.", - "properties": { - "MicrosoftSqlServerSettings": { - "additionalProperties": false, - "description": "MicrosoftSqlServerSettings property identifier.", - "properties": { - "CertificateArn": { - "type": "string" - }, - "DatabaseName": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "ServerName": { - "type": "string" - }, - "SslMode": { - "$ref": "#/definitions/DmsSslModeValue", - "type": "object" - } - }, - "required": [ - "ServerName", - "Port", - "SslMode", - "DatabaseName" - ], - "type": "object" - }, - "MySqlSettings": { - "additionalProperties": false, - "description": "MySqlSettings property identifier.", - "properties": { - "CertificateArn": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "ServerName": { - "type": "string" - }, - "SslMode": { - "$ref": "#/definitions/DmsSslModeValue", - "type": "object" - } - }, - "required": [ - "ServerName", - "Port", - "SslMode" - ], - "type": "object" - }, - "OracleSettings": { - "additionalProperties": false, - "description": "OracleSettings property identifier.", - "properties": { - "AsmServer": { - "type": "string" - }, - "CertificateArn": { - "type": "string" - }, - "DatabaseName": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "SecretsManagerOracleAsmAccessRoleArn": { - "type": "string" - }, - "SecretsManagerOracleAsmSecretId": { - "type": "string" - }, - "SecretsManagerSecurityDbEncryptionAccessRoleArn": { - "type": "string" - }, - "SecretsManagerSecurityDbEncryptionSecretId": { - "type": "string" - }, - "ServerName": { - "type": "string" - }, - "SslMode": { - "$ref": "#/definitions/DmsSslModeValue", - "type": "object" - } - }, - "required": [ - "ServerName", - "Port", - "SslMode", - "DatabaseName" - ], - "type": "object" - }, - "PostgreSqlSettings": { - "additionalProperties": false, - "description": "PostgreSqlSettings property identifier.", - "properties": { - "CertificateArn": { - "type": "string" - }, - "DatabaseName": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "ServerName": { - "type": "string" - }, - "SslMode": { - "$ref": "#/definitions/DmsSslModeValue", - "type": "object" - } - }, - "required": [ - "ServerName", - "Port", - "SslMode", - "DatabaseName" - ], - "type": "object" - } - }, - "type": "object" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/DataProviderArn", - "/properties/DataProviderCreationTime" - ], - "required": [ - "Engine" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-dms.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DMS::DataProvider", - "writeOnlyProperties": [ - "/properties/DataProviderIdentifier", - "/properties/ExactSettings" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/DataProviderName" + ] + ], + "additionalProperties": false, + "definitions": { + "Db2SslModeValue": { + "enum": [ + "none", + "verify-ca" + ], + "type": "string" + }, + "DmsSslModeValue": { + "enum": [ + "none", + "require", + "verify-ca", + "verify-full" + ], + "type": "string" + }, + "MongoDbAuthMechanism": { + "enum": [ + "default", + "mongodb_cr", + "scram_sha_1" + ], + "type": "string" + }, + "MongoDbAuthType": { + "enum": [ + "no", + "password" + ], + "type": "string" + }, + "MongoDbSslModeValue": { + "enum": [ + "none", + "require", + "verify-full" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DMS::DataProvider", + "handlers": { + "create": { + "permissions": [ + "dms:CreateDataProvider", + "dms:ListDataProviders", + "dms:DescribeDataProviders", + "dms:AddTagsToResource", + "dms:ListTagsForResource", + "iam:GetRole", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "dms:DeleteDataProvider" + ] + }, + "list": { + "permissions": [ + "dms:ListDataProviders", + "dms:DescribeDataProviders", + "dms:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "dms:ListDataProviders", + "dms:DescribeDataProviders", + "dms:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "dms:UpdateDataProvider", + "dms:ModifyDataProvider", + "dms:AddTagsToResource", + "dms:RemoveTagsFromResource", + "dms:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DataProviderArn" + ], + "properties": { + "DataProviderArn": { + "description": "The data provider ARN.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "DataProviderCreationTime": { + "description": "The data provider creation time.", + "maxLength": 40, + "minLength": 1, + "type": "string" + }, + "DataProviderIdentifier": { + "description": "The property describes an identifier for the data provider. It is used for describing/deleting/modifying can be name/arn", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "DataProviderName": { + "description": "The property describes a name to identify the data provider.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Description": { + "description": "The optional description of the data provider.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Engine": { + "description": "The property describes a data engine for the data provider.", + "enum": [ + "aurora", + "aurora_postgresql", + "mysql", + "oracle", + "postgres", + "sqlserver", + "redshift", + "mariadb", + "mongodb", + "docdb", + "db2", + "db2_zos" + ], + "type": "string" + }, + "ExactSettings": { + "default": false, + "description": "The property describes the exact settings which can be modified", + "type": "boolean" + }, + "Settings": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "PostgreSqlSettings" + ] + }, + { + "required": [ + "MySqlSettings" + ] + }, + { + "required": [ + "OracleSettings" + ] + }, + { + "required": [ + "MicrosoftSqlServerSettings" + ] + }, + { + "required": [ + "RedshiftSettings" + ] + }, + { + "required": [ + "DocDbSettings" + ] + }, + { + "required": [ + "MariaDbSettings" + ] + }, + { + "required": [ + "MongoDbSettings" + ] + }, + { + "required": [ + "IbmDb2LuwSettings" + ] + }, + { + "required": [ + "IbmDb2zOsSettings" + ] + } + ], + "description": "The property identifies the exact type of settings for the data provider.", + "properties": { + "DocDbSettings": { + "additionalProperties": false, + "description": "DocDbSettings property identifier.", + "properties": { + "CertificateArn": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "ServerName": { + "type": "string" + }, + "SslMode": { + "$ref": "#/definitions/MongoDbSslModeValue" + } + }, + "required": [ + "ServerName", + "Port", + "DatabaseName" + ], + "type": "object" + }, + "IbmDb2LuwSettings": { + "additionalProperties": false, + "description": "IbmDb2LuwSettings property identifier.", + "properties": { + "CertificateArn": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "ServerName": { + "type": "string" + }, + "SslMode": { + "$ref": "#/definitions/Db2SslModeValue" + } + }, + "required": [ + "ServerName", + "Port", + "SslMode", + "DatabaseName" + ], + "type": "object" + }, + "IbmDb2zOsSettings": { + "additionalProperties": false, + "description": "IbmDb2zOsSettings property identifier.", + "properties": { + "CertificateArn": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "ServerName": { + "type": "string" + }, + "SslMode": { + "$ref": "#/definitions/Db2SslModeValue" + } + }, + "required": [ + "ServerName", + "Port", + "SslMode", + "DatabaseName" + ], + "type": "object" + }, + "MariaDbSettings": { + "additionalProperties": false, + "description": "MariaDbSettings property identifier.", + "properties": { + "CertificateArn": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "ServerName": { + "type": "string" + }, + "SslMode": { + "$ref": "#/definitions/DmsSslModeValue" + } + }, + "required": [ + "ServerName", + "Port", + "SslMode" + ], + "type": "object" + }, + "MicrosoftSqlServerSettings": { + "additionalProperties": false, + "description": "MicrosoftSqlServerSettings property identifier.", + "properties": { + "CertificateArn": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "ServerName": { + "type": "string" + }, + "SslMode": { + "$ref": "#/definitions/DmsSslModeValue" + } + }, + "required": [ + "ServerName", + "Port", + "SslMode", + "DatabaseName" + ], + "type": "object" + }, + "MongoDbSettings": { + "additionalProperties": false, + "description": "MongoDbSettings property identifier.", + "properties": { + "AuthMechanism": { + "$ref": "#/definitions/MongoDbAuthMechanism" + }, + "AuthSource": { + "type": "string" + }, + "AuthType": { + "$ref": "#/definitions/MongoDbAuthType" + }, + "CertificateArn": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "ServerName": { + "type": "string" + }, + "SslMode": { + "$ref": "#/definitions/MongoDbSslModeValue" + } + }, + "required": [ + "ServerName", + "Port" + ], + "type": "object" + }, + "MySqlSettings": { + "additionalProperties": false, + "description": "MySqlSettings property identifier.", + "properties": { + "CertificateArn": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "ServerName": { + "type": "string" + }, + "SslMode": { + "$ref": "#/definitions/DmsSslModeValue" + } + }, + "required": [ + "ServerName", + "Port", + "SslMode" + ], + "type": "object" + }, + "OracleSettings": { + "additionalProperties": false, + "description": "OracleSettings property identifier.", + "properties": { + "AsmServer": { + "type": "string" + }, + "CertificateArn": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "SecretsManagerOracleAsmAccessRoleArn": { + "type": "string" + }, + "SecretsManagerOracleAsmSecretId": { + "type": "string" + }, + "SecretsManagerSecurityDbEncryptionAccessRoleArn": { + "type": "string" + }, + "SecretsManagerSecurityDbEncryptionSecretId": { + "type": "string" + }, + "ServerName": { + "type": "string" + }, + "SslMode": { + "$ref": "#/definitions/DmsSslModeValue" + } + }, + "required": [ + "ServerName", + "Port", + "SslMode", + "DatabaseName" + ], + "type": "object" + }, + "PostgreSqlSettings": { + "additionalProperties": false, + "description": "PostgreSqlSettings property identifier.", + "properties": { + "CertificateArn": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "ServerName": { + "type": "string" + }, + "SslMode": { + "$ref": "#/definitions/DmsSslModeValue" + } + }, + "required": [ + "ServerName", + "Port", + "SslMode", + "DatabaseName" + ], + "type": "object" + }, + "RedshiftSettings": { + "additionalProperties": false, + "description": "RedshiftSettings property identifier.", + "properties": { + "DatabaseName": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "ServerName": { + "type": "string" + } + }, + "required": [ + "ServerName", + "Port", + "DatabaseName" + ], + "type": "object" + } + }, + "type": "object" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/DataProviderArn", + "/properties/DataProviderCreationTime" + ], + "required": [ + "Engine" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-dms.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "dms:AddTagsToResource", + "dms:RemoveTagsFromResource", + "dms:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DMS::DataProvider", + "writeOnlyProperties": [ + "/properties/DataProviderIdentifier", + "/properties/ExactSettings" + ] +} diff --git a/src/schema/aws-dms-endpoint.json b/src/schema/aws-dms-endpoint.json index c0fd6348..d60744ad 100644 --- a/src/schema/aws-dms-endpoint.json +++ b/src/schema/aws-dms-endpoint.json @@ -1,948 +1,948 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKeyId", - "/properties/ResourceIdentifier" - ], - "definitions": { - "DocDbSettings": { - "additionalProperties": false, - "properties": { - "DocsToInvestigate": { - "type": "integer" - }, - "ExtractDocId": { - "type": "boolean" - }, - "NestingLevel": { - "type": "string" - }, - "SecretsManagerAccessRoleArn": { - "type": "string" - }, - "SecretsManagerSecretId": { - "type": "string" - } - }, - "type": "object" - }, - "DynamoDbSettings": { - "additionalProperties": false, - "properties": { - "ServiceAccessRoleArn": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticsearchSettings": { - "additionalProperties": false, - "properties": { - "EndpointUri": { - "type": "string" - }, - "ErrorRetryDuration": { - "type": "integer" - }, - "FullLoadErrorPercentage": { - "type": "integer" - }, - "ServiceAccessRoleArn": { - "type": "string" - } - }, - "type": "object" - }, - "GcpMySQLSettings": { - "additionalProperties": false, - "properties": { - "AfterConnectScript": { - "type": "string" - }, - "CleanSourceMetadataOnMismatch": { - "type": "boolean" - }, - "DatabaseName": { - "type": "string" - }, - "EventsPollInterval": { - "type": "integer" - }, - "MaxFileSize": { - "type": "integer" - }, - "ParallelLoadThreads": { - "type": "integer" - }, - "Password": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "SecretsManagerAccessRoleArn": { - "type": "string" - }, - "SecretsManagerSecretId": { - "type": "string" - }, - "ServerName": { - "type": "string" - }, - "ServerTimezone": { - "type": "string" - }, - "Username": { - "type": "string" - } - }, - "type": "object" - }, - "IbmDb2Settings": { - "additionalProperties": false, - "properties": { - "CurrentLsn": { - "type": "string" - }, - "KeepCsvFiles": { - "type": "boolean" - }, - "LoadTimeout": { - "type": "integer" - }, - "MaxFileSize": { - "type": "integer" - }, - "MaxKBytesPerRead": { - "type": "integer" - }, - "SecretsManagerAccessRoleArn": { - "type": "string" - }, - "SecretsManagerSecretId": { - "type": "string" - }, - "SetDataCaptureChanges": { - "type": "boolean" - }, - "WriteBufferSize": { - "type": "integer" - } - }, - "type": "object" - }, - "KafkaSettings": { - "additionalProperties": false, - "properties": { - "Broker": { - "type": "string" - }, - "IncludeControlDetails": { - "type": "boolean" - }, - "IncludeNullAndEmpty": { - "type": "boolean" - }, - "IncludePartitionValue": { - "type": "boolean" - }, - "IncludeTableAlterOperations": { - "type": "boolean" - }, - "IncludeTransactionDetails": { - "type": "boolean" - }, - "MessageFormat": { - "type": "string" - }, - "MessageMaxBytes": { - "type": "integer" - }, - "NoHexPrefix": { - "type": "boolean" - }, - "PartitionIncludeSchemaTable": { - "type": "boolean" - }, - "SaslPassword": { - "type": "string" - }, - "SaslUserName": { - "type": "string" - }, - "SecurityProtocol": { - "type": "string" - }, - "SslCaCertificateArn": { - "type": "string" - }, - "SslClientCertificateArn": { - "type": "string" - }, - "SslClientKeyArn": { - "type": "string" - }, - "SslClientKeyPassword": { - "type": "string" - }, - "Topic": { - "type": "string" - } - }, - "type": "object" - }, - "KinesisSettings": { - "additionalProperties": false, - "properties": { - "IncludeControlDetails": { - "type": "boolean" - }, - "IncludeNullAndEmpty": { - "type": "boolean" - }, - "IncludePartitionValue": { - "type": "boolean" - }, - "IncludeTableAlterOperations": { - "type": "boolean" - }, - "IncludeTransactionDetails": { - "type": "boolean" - }, - "MessageFormat": { - "type": "string" - }, - "NoHexPrefix": { - "type": "boolean" - }, - "PartitionIncludeSchemaTable": { - "type": "boolean" - }, - "ServiceAccessRoleArn": { - "type": "string" - }, - "StreamArn": { - "type": "string" - } - }, - "type": "object" - }, - "MicrosoftSqlServerSettings": { - "additionalProperties": false, - "properties": { - "BcpPacketSize": { - "type": "integer" - }, - "ControlTablesFileGroup": { - "type": "string" - }, - "DatabaseName": { - "type": "string" - }, - "ForceLobLookup": { - "type": "boolean" - }, - "Password": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "QuerySingleAlwaysOnNode": { - "type": "boolean" - }, - "ReadBackupOnly": { - "type": "boolean" - }, - "SafeguardPolicy": { - "type": "string" - }, - "SecretsManagerAccessRoleArn": { - "type": "string" - }, - "SecretsManagerSecretId": { - "type": "string" - }, - "ServerName": { - "type": "string" - }, - "TlogAccessMode": { - "type": "string" - }, - "TrimSpaceInChar": { - "type": "boolean" - }, - "UseBcpFullLoad": { - "type": "boolean" - }, - "UseThirdPartyBackupDevice": { - "type": "boolean" - }, - "Username": { - "type": "string" - } - }, - "type": "object" - }, - "MongoDbSettings": { - "additionalProperties": false, - "properties": { - "AuthMechanism": { - "type": "string" - }, - "AuthSource": { - "type": "string" - }, - "AuthType": { - "type": "string" - }, - "DatabaseName": { - "type": "string" - }, - "DocsToInvestigate": { - "type": "string" - }, - "ExtractDocId": { - "type": "string" - }, - "NestingLevel": { - "type": "string" - }, - "Password": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "SecretsManagerAccessRoleArn": { - "type": "string" - }, - "SecretsManagerSecretId": { - "type": "string" - }, - "ServerName": { - "type": "string" - }, - "Username": { - "type": "string" - } - }, - "type": "object" - }, - "MySqlSettings": { - "additionalProperties": false, - "properties": { - "AfterConnectScript": { - "type": "string" - }, - "CleanSourceMetadataOnMismatch": { - "type": "boolean" - }, - "EventsPollInterval": { - "type": "integer" - }, - "MaxFileSize": { - "type": "integer" - }, - "ParallelLoadThreads": { - "type": "integer" - }, - "SecretsManagerAccessRoleArn": { - "type": "string" - }, - "SecretsManagerSecretId": { - "type": "string" - }, - "ServerTimezone": { - "type": "string" - }, - "TargetDbType": { - "type": "string" - } - }, - "type": "object" - }, - "NeptuneSettings": { - "additionalProperties": false, - "properties": { - "ErrorRetryDuration": { - "type": "integer" - }, - "IamAuthEnabled": { - "type": "boolean" - }, - "MaxFileSize": { - "type": "integer" - }, - "MaxRetryCount": { - "type": "integer" - }, - "S3BucketFolder": { - "type": "string" - }, - "S3BucketName": { - "type": "string" - }, - "ServiceAccessRoleArn": { - "type": "string" - } - }, - "type": "object" - }, - "OracleSettings": { - "additionalProperties": false, - "properties": { - "AccessAlternateDirectly": { - "type": "boolean" - }, - "AddSupplementalLogging": { - "type": "boolean" - }, - "AdditionalArchivedLogDestId": { - "type": "integer" - }, - "AllowSelectNestedTables": { - "type": "boolean" - }, - "ArchivedLogDestId": { - "type": "integer" - }, - "ArchivedLogsOnly": { - "type": "boolean" - }, - "AsmPassword": { - "type": "string" - }, - "AsmServer": { - "type": "string" - }, - "AsmUser": { - "type": "string" - }, - "CharLengthSemantics": { - "type": "string" - }, - "DirectPathNoLog": { - "type": "boolean" - }, - "DirectPathParallelLoad": { - "type": "boolean" - }, - "EnableHomogenousTablespace": { - "type": "boolean" - }, - "ExtraArchivedLogDestIds": { - "items": { - "type": "integer" - }, - "type": "array", - "uniqueItems": false - }, - "FailTasksOnLobTruncation": { - "type": "boolean" - }, - "NumberDatatypeScale": { - "type": "integer" - }, - "OraclePathPrefix": { - "type": "string" - }, - "ParallelAsmReadThreads": { - "type": "integer" - }, - "ReadAheadBlocks": { - "type": "integer" - }, - "ReadTableSpaceName": { - "type": "boolean" - }, - "ReplacePathPrefix": { - "type": "boolean" - }, - "RetryInterval": { - "type": "integer" - }, - "SecretsManagerAccessRoleArn": { - "type": "string" - }, - "SecretsManagerOracleAsmAccessRoleArn": { - "type": "string" - }, - "SecretsManagerOracleAsmSecretId": { - "type": "string" - }, - "SecretsManagerSecretId": { - "type": "string" - }, - "SecurityDbEncryption": { - "type": "string" - }, - "SecurityDbEncryptionName": { - "type": "string" - }, - "SpatialDataOptionToGeoJsonFunctionName": { - "type": "string" - }, - "StandbyDelayTime": { - "type": "integer" - }, - "UseAlternateFolderForOnline": { - "type": "boolean" - }, - "UseBFile": { - "type": "boolean" - }, - "UseDirectPathFullLoad": { - "type": "boolean" - }, - "UseLogminerReader": { - "type": "boolean" - }, - "UsePathPrefix": { - "type": "string" - } - }, - "type": "object" - }, - "PostgreSqlSettings": { - "additionalProperties": false, - "properties": { - "AfterConnectScript": { - "type": "string" - }, - "BabelfishDatabaseName": { - "type": "string" - }, - "CaptureDdls": { - "type": "boolean" - }, - "DatabaseMode": { - "type": "string" - }, - "DdlArtifactsSchema": { - "type": "string" - }, - "ExecuteTimeout": { - "type": "integer" - }, - "FailTasksOnLobTruncation": { - "type": "boolean" - }, - "HeartbeatEnable": { - "type": "boolean" - }, - "HeartbeatFrequency": { - "type": "integer" - }, - "HeartbeatSchema": { - "type": "string" - }, - "MapBooleanAsBoolean": { - "type": "boolean" - }, - "MaxFileSize": { - "type": "integer" - }, - "PluginName": { - "type": "string" - }, - "SecretsManagerAccessRoleArn": { - "type": "string" - }, - "SecretsManagerSecretId": { - "type": "string" - }, - "SlotName": { - "type": "string" - } - }, - "type": "object" - }, - "RedisSettings": { - "additionalProperties": false, - "properties": { - "AuthPassword": { - "type": "string" - }, - "AuthType": { - "type": "string" - }, - "AuthUserName": { - "type": "string" - }, - "Port": { - "type": "number" - }, - "ServerName": { - "type": "string" - }, - "SslCaCertificateArn": { - "type": "string" - }, - "SslSecurityProtocol": { - "type": "string" - } - }, - "type": "object" - }, - "RedshiftSettings": { - "additionalProperties": false, - "properties": { - "AcceptAnyDate": { - "type": "boolean" - }, - "AfterConnectScript": { - "type": "string" - }, - "BucketFolder": { - "type": "string" - }, - "BucketName": { - "type": "string" - }, - "CaseSensitiveNames": { - "type": "boolean" - }, - "CompUpdate": { - "type": "boolean" - }, - "ConnectionTimeout": { - "type": "integer" - }, - "DateFormat": { - "type": "string" - }, - "EmptyAsNull": { - "type": "boolean" - }, - "EncryptionMode": { - "type": "string" - }, - "ExplicitIds": { - "type": "boolean" - }, - "FileTransferUploadStreams": { - "type": "integer" - }, - "LoadTimeout": { - "type": "integer" - }, - "MapBooleanAsBoolean": { - "type": "boolean" - }, - "MaxFileSize": { - "type": "integer" - }, - "RemoveQuotes": { - "type": "boolean" - }, - "ReplaceChars": { - "type": "string" - }, - "ReplaceInvalidChars": { - "type": "string" - }, - "SecretsManagerAccessRoleArn": { - "type": "string" - }, - "SecretsManagerSecretId": { - "type": "string" - }, - "ServerSideEncryptionKmsKeyId": { - "type": "string" - }, - "ServiceAccessRoleArn": { - "type": "string" - }, - "TimeFormat": { - "type": "string" - }, - "TrimBlanks": { - "type": "boolean" - }, - "TruncateColumns": { - "type": "boolean" - }, - "WriteBufferSize": { - "type": "integer" - } - }, - "type": "object" - }, - "S3Settings": { - "additionalProperties": false, - "properties": { - "AddColumnName": { - "type": "boolean" - }, - "AddTrailingPaddingCharacter": { - "type": "boolean" - }, - "BucketFolder": { - "type": "string" - }, - "BucketName": { - "type": "string" - }, - "CannedAclForObjects": { - "type": "string" - }, - "CdcInsertsAndUpdates": { - "type": "boolean" - }, - "CdcInsertsOnly": { - "type": "boolean" - }, - "CdcMaxBatchInterval": { - "type": "integer" - }, - "CdcMinFileSize": { - "type": "integer" - }, - "CdcPath": { - "type": "string" - }, - "CompressionType": { - "type": "string" - }, - "CsvDelimiter": { - "type": "string" - }, - "CsvNoSupValue": { - "type": "string" - }, - "CsvNullValue": { - "type": "string" - }, - "CsvRowDelimiter": { - "type": "string" - }, - "DataFormat": { - "type": "string" - }, - "DataPageSize": { - "type": "integer" - }, - "DatePartitionDelimiter": { - "type": "string" - }, - "DatePartitionEnabled": { - "type": "boolean" - }, - "DatePartitionSequence": { - "type": "string" - }, - "DatePartitionTimezone": { - "type": "string" - }, - "DictPageSizeLimit": { - "type": "integer" - }, - "EnableStatistics": { - "type": "boolean" - }, - "EncodingType": { - "type": "string" - }, - "EncryptionMode": { - "type": "string" - }, - "ExpectedBucketOwner": { - "type": "string" - }, - "ExternalTableDefinition": { - "type": "string" - }, - "GlueCatalogGeneration": { - "type": "boolean" - }, - "IgnoreHeaderRows": { - "type": "integer" - }, - "IncludeOpForFullLoad": { - "type": "boolean" - }, - "MaxFileSize": { - "type": "integer" - }, - "ParquetTimestampInMillisecond": { - "type": "boolean" - }, - "ParquetVersion": { - "type": "string" - }, - "PreserveTransactions": { - "type": "boolean" - }, - "Rfc4180": { - "type": "boolean" - }, - "RowGroupLength": { - "type": "integer" - }, - "ServerSideEncryptionKmsKeyId": { - "type": "string" - }, - "ServiceAccessRoleArn": { - "type": "string" - }, - "TimestampColumnName": { - "type": "string" - }, - "UseCsvNoSupValue": { - "type": "boolean" - }, - "UseTaskStartTimeForFullLoadTimestamp": { - "type": "boolean" - } - }, - "type": "object" - }, - "SybaseSettings": { - "additionalProperties": false, - "properties": { - "SecretsManagerAccessRoleArn": { - "type": "string" - }, - "SecretsManagerSecretId": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::DMS::Endpoint", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CertificateArn": { - "type": "string" - }, - "DatabaseName": { - "type": "string" - }, - "DocDbSettings": { - "$ref": "#/definitions/DocDbSettings" - }, - "DynamoDbSettings": { - "$ref": "#/definitions/DynamoDbSettings" - }, - "ElasticsearchSettings": { - "$ref": "#/definitions/ElasticsearchSettings" - }, - "EndpointIdentifier": { - "type": "string" - }, - "EndpointType": { - "type": "string" - }, - "EngineName": { - "type": "string" - }, - "ExternalId": { - "type": "string" - }, - "ExtraConnectionAttributes": { - "type": "string" - }, - "GcpMySQLSettings": { - "$ref": "#/definitions/GcpMySQLSettings" - }, - "IbmDb2Settings": { - "$ref": "#/definitions/IbmDb2Settings" - }, - "Id": { - "type": "string" - }, - "KafkaSettings": { - "$ref": "#/definitions/KafkaSettings" - }, - "KinesisSettings": { - "$ref": "#/definitions/KinesisSettings" - }, - "KmsKeyId": { - "type": "string" - }, - "MicrosoftSqlServerSettings": { - "$ref": "#/definitions/MicrosoftSqlServerSettings" - }, - "MongoDbSettings": { - "$ref": "#/definitions/MongoDbSettings" - }, - "MySqlSettings": { - "$ref": "#/definitions/MySqlSettings" - }, - "NeptuneSettings": { - "$ref": "#/definitions/NeptuneSettings" - }, - "OracleSettings": { - "$ref": "#/definitions/OracleSettings" - }, - "Password": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "PostgreSqlSettings": { - "$ref": "#/definitions/PostgreSqlSettings" - }, - "RedisSettings": { - "$ref": "#/definitions/RedisSettings" - }, - "RedshiftSettings": { - "$ref": "#/definitions/RedshiftSettings" - }, - "ResourceIdentifier": { - "type": "string" - }, - "S3Settings": { - "$ref": "#/definitions/S3Settings" - }, - "ServerName": { - "type": "string" - }, - "SslMode": { - "type": "string" - }, - "SybaseSettings": { - "$ref": "#/definitions/SybaseSettings" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Username": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ExternalId" - ], - "required": [ - "EndpointType", - "EngineName" - ], - "typeName": "AWS::DMS::Endpoint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KmsKeyId", + "/properties/ResourceIdentifier" + ], + "definitions": { + "DocDbSettings": { + "additionalProperties": false, + "properties": { + "DocsToInvestigate": { + "type": "integer" + }, + "ExtractDocId": { + "type": "boolean" + }, + "NestingLevel": { + "type": "string" + }, + "SecretsManagerAccessRoleArn": { + "type": "string" + }, + "SecretsManagerSecretId": { + "type": "string" + } + }, + "type": "object" + }, + "DynamoDbSettings": { + "additionalProperties": false, + "properties": { + "ServiceAccessRoleArn": { + "type": "string" + } + }, + "type": "object" + }, + "ElasticsearchSettings": { + "additionalProperties": false, + "properties": { + "EndpointUri": { + "type": "string" + }, + "ErrorRetryDuration": { + "type": "integer" + }, + "FullLoadErrorPercentage": { + "type": "integer" + }, + "ServiceAccessRoleArn": { + "type": "string" + } + }, + "type": "object" + }, + "GcpMySQLSettings": { + "additionalProperties": false, + "properties": { + "AfterConnectScript": { + "type": "string" + }, + "CleanSourceMetadataOnMismatch": { + "type": "boolean" + }, + "DatabaseName": { + "type": "string" + }, + "EventsPollInterval": { + "type": "integer" + }, + "MaxFileSize": { + "type": "integer" + }, + "ParallelLoadThreads": { + "type": "integer" + }, + "Password": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "SecretsManagerAccessRoleArn": { + "type": "string" + }, + "SecretsManagerSecretId": { + "type": "string" + }, + "ServerName": { + "type": "string" + }, + "ServerTimezone": { + "type": "string" + }, + "Username": { + "type": "string" + } + }, + "type": "object" + }, + "IbmDb2Settings": { + "additionalProperties": false, + "properties": { + "CurrentLsn": { + "type": "string" + }, + "KeepCsvFiles": { + "type": "boolean" + }, + "LoadTimeout": { + "type": "integer" + }, + "MaxFileSize": { + "type": "integer" + }, + "MaxKBytesPerRead": { + "type": "integer" + }, + "SecretsManagerAccessRoleArn": { + "type": "string" + }, + "SecretsManagerSecretId": { + "type": "string" + }, + "SetDataCaptureChanges": { + "type": "boolean" + }, + "WriteBufferSize": { + "type": "integer" + } + }, + "type": "object" + }, + "KafkaSettings": { + "additionalProperties": false, + "properties": { + "Broker": { + "type": "string" + }, + "IncludeControlDetails": { + "type": "boolean" + }, + "IncludeNullAndEmpty": { + "type": "boolean" + }, + "IncludePartitionValue": { + "type": "boolean" + }, + "IncludeTableAlterOperations": { + "type": "boolean" + }, + "IncludeTransactionDetails": { + "type": "boolean" + }, + "MessageFormat": { + "type": "string" + }, + "MessageMaxBytes": { + "type": "integer" + }, + "NoHexPrefix": { + "type": "boolean" + }, + "PartitionIncludeSchemaTable": { + "type": "boolean" + }, + "SaslPassword": { + "type": "string" + }, + "SaslUserName": { + "type": "string" + }, + "SecurityProtocol": { + "type": "string" + }, + "SslCaCertificateArn": { + "type": "string" + }, + "SslClientCertificateArn": { + "type": "string" + }, + "SslClientKeyArn": { + "type": "string" + }, + "SslClientKeyPassword": { + "type": "string" + }, + "Topic": { + "type": "string" + } + }, + "type": "object" + }, + "KinesisSettings": { + "additionalProperties": false, + "properties": { + "IncludeControlDetails": { + "type": "boolean" + }, + "IncludeNullAndEmpty": { + "type": "boolean" + }, + "IncludePartitionValue": { + "type": "boolean" + }, + "IncludeTableAlterOperations": { + "type": "boolean" + }, + "IncludeTransactionDetails": { + "type": "boolean" + }, + "MessageFormat": { + "type": "string" + }, + "NoHexPrefix": { + "type": "boolean" + }, + "PartitionIncludeSchemaTable": { + "type": "boolean" + }, + "ServiceAccessRoleArn": { + "type": "string" + }, + "StreamArn": { + "type": "string" + } + }, + "type": "object" + }, + "MicrosoftSqlServerSettings": { + "additionalProperties": false, + "properties": { + "BcpPacketSize": { + "type": "integer" + }, + "ControlTablesFileGroup": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "ForceLobLookup": { + "type": "boolean" + }, + "Password": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "QuerySingleAlwaysOnNode": { + "type": "boolean" + }, + "ReadBackupOnly": { + "type": "boolean" + }, + "SafeguardPolicy": { + "type": "string" + }, + "SecretsManagerAccessRoleArn": { + "type": "string" + }, + "SecretsManagerSecretId": { + "type": "string" + }, + "ServerName": { + "type": "string" + }, + "TlogAccessMode": { + "type": "string" + }, + "TrimSpaceInChar": { + "type": "boolean" + }, + "UseBcpFullLoad": { + "type": "boolean" + }, + "UseThirdPartyBackupDevice": { + "type": "boolean" + }, + "Username": { + "type": "string" + } + }, + "type": "object" + }, + "MongoDbSettings": { + "additionalProperties": false, + "properties": { + "AuthMechanism": { + "type": "string" + }, + "AuthSource": { + "type": "string" + }, + "AuthType": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "DocsToInvestigate": { + "type": "string" + }, + "ExtractDocId": { + "type": "string" + }, + "NestingLevel": { + "type": "string" + }, + "Password": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "SecretsManagerAccessRoleArn": { + "type": "string" + }, + "SecretsManagerSecretId": { + "type": "string" + }, + "ServerName": { + "type": "string" + }, + "Username": { + "type": "string" + } + }, + "type": "object" + }, + "MySqlSettings": { + "additionalProperties": false, + "properties": { + "AfterConnectScript": { + "type": "string" + }, + "CleanSourceMetadataOnMismatch": { + "type": "boolean" + }, + "EventsPollInterval": { + "type": "integer" + }, + "MaxFileSize": { + "type": "integer" + }, + "ParallelLoadThreads": { + "type": "integer" + }, + "SecretsManagerAccessRoleArn": { + "type": "string" + }, + "SecretsManagerSecretId": { + "type": "string" + }, + "ServerTimezone": { + "type": "string" + }, + "TargetDbType": { + "type": "string" + } + }, + "type": "object" + }, + "NeptuneSettings": { + "additionalProperties": false, + "properties": { + "ErrorRetryDuration": { + "type": "integer" + }, + "IamAuthEnabled": { + "type": "boolean" + }, + "MaxFileSize": { + "type": "integer" + }, + "MaxRetryCount": { + "type": "integer" + }, + "S3BucketFolder": { + "type": "string" + }, + "S3BucketName": { + "type": "string" + }, + "ServiceAccessRoleArn": { + "type": "string" + } + }, + "type": "object" + }, + "OracleSettings": { + "additionalProperties": false, + "properties": { + "AccessAlternateDirectly": { + "type": "boolean" + }, + "AddSupplementalLogging": { + "type": "boolean" + }, + "AdditionalArchivedLogDestId": { + "type": "integer" + }, + "AllowSelectNestedTables": { + "type": "boolean" + }, + "ArchivedLogDestId": { + "type": "integer" + }, + "ArchivedLogsOnly": { + "type": "boolean" + }, + "AsmPassword": { + "type": "string" + }, + "AsmServer": { + "type": "string" + }, + "AsmUser": { + "type": "string" + }, + "CharLengthSemantics": { + "type": "string" + }, + "DirectPathNoLog": { + "type": "boolean" + }, + "DirectPathParallelLoad": { + "type": "boolean" + }, + "EnableHomogenousTablespace": { + "type": "boolean" + }, + "ExtraArchivedLogDestIds": { + "items": { + "type": "integer" + }, + "type": "array", + "uniqueItems": false + }, + "FailTasksOnLobTruncation": { + "type": "boolean" + }, + "NumberDatatypeScale": { + "type": "integer" + }, + "OraclePathPrefix": { + "type": "string" + }, + "ParallelAsmReadThreads": { + "type": "integer" + }, + "ReadAheadBlocks": { + "type": "integer" + }, + "ReadTableSpaceName": { + "type": "boolean" + }, + "ReplacePathPrefix": { + "type": "boolean" + }, + "RetryInterval": { + "type": "integer" + }, + "SecretsManagerAccessRoleArn": { + "type": "string" + }, + "SecretsManagerOracleAsmAccessRoleArn": { + "type": "string" + }, + "SecretsManagerOracleAsmSecretId": { + "type": "string" + }, + "SecretsManagerSecretId": { + "type": "string" + }, + "SecurityDbEncryption": { + "type": "string" + }, + "SecurityDbEncryptionName": { + "type": "string" + }, + "SpatialDataOptionToGeoJsonFunctionName": { + "type": "string" + }, + "StandbyDelayTime": { + "type": "integer" + }, + "UseAlternateFolderForOnline": { + "type": "boolean" + }, + "UseBFile": { + "type": "boolean" + }, + "UseDirectPathFullLoad": { + "type": "boolean" + }, + "UseLogminerReader": { + "type": "boolean" + }, + "UsePathPrefix": { + "type": "string" + } + }, + "type": "object" + }, + "PostgreSqlSettings": { + "additionalProperties": false, + "properties": { + "AfterConnectScript": { + "type": "string" + }, + "BabelfishDatabaseName": { + "type": "string" + }, + "CaptureDdls": { + "type": "boolean" + }, + "DatabaseMode": { + "type": "string" + }, + "DdlArtifactsSchema": { + "type": "string" + }, + "ExecuteTimeout": { + "type": "integer" + }, + "FailTasksOnLobTruncation": { + "type": "boolean" + }, + "HeartbeatEnable": { + "type": "boolean" + }, + "HeartbeatFrequency": { + "type": "integer" + }, + "HeartbeatSchema": { + "type": "string" + }, + "MapBooleanAsBoolean": { + "type": "boolean" + }, + "MaxFileSize": { + "type": "integer" + }, + "PluginName": { + "type": "string" + }, + "SecretsManagerAccessRoleArn": { + "type": "string" + }, + "SecretsManagerSecretId": { + "type": "string" + }, + "SlotName": { + "type": "string" + } + }, + "type": "object" + }, + "RedisSettings": { + "additionalProperties": false, + "properties": { + "AuthPassword": { + "type": "string" + }, + "AuthType": { + "type": "string" + }, + "AuthUserName": { + "type": "string" + }, + "Port": { + "type": "number" + }, + "ServerName": { + "type": "string" + }, + "SslCaCertificateArn": { + "type": "string" + }, + "SslSecurityProtocol": { + "type": "string" + } + }, + "type": "object" + }, + "RedshiftSettings": { + "additionalProperties": false, + "properties": { + "AcceptAnyDate": { + "type": "boolean" + }, + "AfterConnectScript": { + "type": "string" + }, + "BucketFolder": { + "type": "string" + }, + "BucketName": { + "type": "string" + }, + "CaseSensitiveNames": { + "type": "boolean" + }, + "CompUpdate": { + "type": "boolean" + }, + "ConnectionTimeout": { + "type": "integer" + }, + "DateFormat": { + "type": "string" + }, + "EmptyAsNull": { + "type": "boolean" + }, + "EncryptionMode": { + "type": "string" + }, + "ExplicitIds": { + "type": "boolean" + }, + "FileTransferUploadStreams": { + "type": "integer" + }, + "LoadTimeout": { + "type": "integer" + }, + "MapBooleanAsBoolean": { + "type": "boolean" + }, + "MaxFileSize": { + "type": "integer" + }, + "RemoveQuotes": { + "type": "boolean" + }, + "ReplaceChars": { + "type": "string" + }, + "ReplaceInvalidChars": { + "type": "string" + }, + "SecretsManagerAccessRoleArn": { + "type": "string" + }, + "SecretsManagerSecretId": { + "type": "string" + }, + "ServerSideEncryptionKmsKeyId": { + "type": "string" + }, + "ServiceAccessRoleArn": { + "type": "string" + }, + "TimeFormat": { + "type": "string" + }, + "TrimBlanks": { + "type": "boolean" + }, + "TruncateColumns": { + "type": "boolean" + }, + "WriteBufferSize": { + "type": "integer" + } + }, + "type": "object" + }, + "S3Settings": { + "additionalProperties": false, + "properties": { + "AddColumnName": { + "type": "boolean" + }, + "AddTrailingPaddingCharacter": { + "type": "boolean" + }, + "BucketFolder": { + "type": "string" + }, + "BucketName": { + "type": "string" + }, + "CannedAclForObjects": { + "type": "string" + }, + "CdcInsertsAndUpdates": { + "type": "boolean" + }, + "CdcInsertsOnly": { + "type": "boolean" + }, + "CdcMaxBatchInterval": { + "type": "integer" + }, + "CdcMinFileSize": { + "type": "integer" + }, + "CdcPath": { + "type": "string" + }, + "CompressionType": { + "type": "string" + }, + "CsvDelimiter": { + "type": "string" + }, + "CsvNoSupValue": { + "type": "string" + }, + "CsvNullValue": { + "type": "string" + }, + "CsvRowDelimiter": { + "type": "string" + }, + "DataFormat": { + "type": "string" + }, + "DataPageSize": { + "type": "integer" + }, + "DatePartitionDelimiter": { + "type": "string" + }, + "DatePartitionEnabled": { + "type": "boolean" + }, + "DatePartitionSequence": { + "type": "string" + }, + "DatePartitionTimezone": { + "type": "string" + }, + "DictPageSizeLimit": { + "type": "integer" + }, + "EnableStatistics": { + "type": "boolean" + }, + "EncodingType": { + "type": "string" + }, + "EncryptionMode": { + "type": "string" + }, + "ExpectedBucketOwner": { + "type": "string" + }, + "ExternalTableDefinition": { + "type": "string" + }, + "GlueCatalogGeneration": { + "type": "boolean" + }, + "IgnoreHeaderRows": { + "type": "integer" + }, + "IncludeOpForFullLoad": { + "type": "boolean" + }, + "MaxFileSize": { + "type": "integer" + }, + "ParquetTimestampInMillisecond": { + "type": "boolean" + }, + "ParquetVersion": { + "type": "string" + }, + "PreserveTransactions": { + "type": "boolean" + }, + "Rfc4180": { + "type": "boolean" + }, + "RowGroupLength": { + "type": "integer" + }, + "ServerSideEncryptionKmsKeyId": { + "type": "string" + }, + "ServiceAccessRoleArn": { + "type": "string" + }, + "TimestampColumnName": { + "type": "string" + }, + "UseCsvNoSupValue": { + "type": "boolean" + }, + "UseTaskStartTimeForFullLoadTimestamp": { + "type": "boolean" + } + }, + "type": "object" + }, + "SybaseSettings": { + "additionalProperties": false, + "properties": { + "SecretsManagerAccessRoleArn": { + "type": "string" + }, + "SecretsManagerSecretId": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DMS::Endpoint", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CertificateArn": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "DocDbSettings": { + "$ref": "#/definitions/DocDbSettings" + }, + "DynamoDbSettings": { + "$ref": "#/definitions/DynamoDbSettings" + }, + "ElasticsearchSettings": { + "$ref": "#/definitions/ElasticsearchSettings" + }, + "EndpointIdentifier": { + "type": "string" + }, + "EndpointType": { + "type": "string" + }, + "EngineName": { + "type": "string" + }, + "ExternalId": { + "type": "string" + }, + "ExtraConnectionAttributes": { + "type": "string" + }, + "GcpMySQLSettings": { + "$ref": "#/definitions/GcpMySQLSettings" + }, + "IbmDb2Settings": { + "$ref": "#/definitions/IbmDb2Settings" + }, + "Id": { + "type": "string" + }, + "KafkaSettings": { + "$ref": "#/definitions/KafkaSettings" + }, + "KinesisSettings": { + "$ref": "#/definitions/KinesisSettings" + }, + "KmsKeyId": { + "type": "string" + }, + "MicrosoftSqlServerSettings": { + "$ref": "#/definitions/MicrosoftSqlServerSettings" + }, + "MongoDbSettings": { + "$ref": "#/definitions/MongoDbSettings" + }, + "MySqlSettings": { + "$ref": "#/definitions/MySqlSettings" + }, + "NeptuneSettings": { + "$ref": "#/definitions/NeptuneSettings" + }, + "OracleSettings": { + "$ref": "#/definitions/OracleSettings" + }, + "Password": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "PostgreSqlSettings": { + "$ref": "#/definitions/PostgreSqlSettings" + }, + "RedisSettings": { + "$ref": "#/definitions/RedisSettings" + }, + "RedshiftSettings": { + "$ref": "#/definitions/RedshiftSettings" + }, + "ResourceIdentifier": { + "type": "string" + }, + "S3Settings": { + "$ref": "#/definitions/S3Settings" + }, + "ServerName": { + "type": "string" + }, + "SslMode": { + "type": "string" + }, + "SybaseSettings": { + "$ref": "#/definitions/SybaseSettings" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Username": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/ExternalId" + ], + "required": [ + "EndpointType", + "EngineName" + ], + "typeName": "AWS::DMS::Endpoint" +} diff --git a/src/schema/aws-dms-eventsubscription.json b/src/schema/aws-dms-eventsubscription.json index d4e40d51..bdee90bc 100644 --- a/src/schema/aws-dms-eventsubscription.json +++ b/src/schema/aws-dms-eventsubscription.json @@ -1,74 +1,74 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SubscriptionName", - "/properties/SourceIds" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::DMS::EventSubscription", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Enabled": { - "type": "boolean" - }, - "EventCategories": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - }, - "SnsTopicArn": { - "type": "string" - }, - "SourceIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceType": { - "type": "string" - }, - "SubscriptionName": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "SnsTopicArn" - ], - "typeName": "AWS::DMS::EventSubscription" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubscriptionName", + "/properties/SourceIds" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DMS::EventSubscription", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Enabled": { + "type": "boolean" + }, + "EventCategories": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "SnsTopicArn": { + "type": "string" + }, + "SourceIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SourceType": { + "type": "string" + }, + "SubscriptionName": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "SnsTopicArn" + ], + "typeName": "AWS::DMS::EventSubscription" +} diff --git a/src/schema/aws-dms-instanceprofile.json b/src/schema/aws-dms-instanceprofile.json index e1aeeac9..353675de 100644 --- a/src/schema/aws-dms-instanceprofile.json +++ b/src/schema/aws-dms-instanceprofile.json @@ -1,173 +1,178 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/InstanceProfileName" - ] - ], - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::DMS::InstanceProfile.", - "handlers": { - "create": { - "permissions": [ - "dms:CreateInstanceProfile", - "dms:ListInstanceProfiles", - "dms:DescribeInstanceProfiles", - "dms:AddTagsToResource", - "dms:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "dms:DeleteInstanceProfile" - ] - }, - "list": { - "permissions": [ - "dms:ListInstanceProfiles", - "dms:DescribeInstanceProfiles", - "dms:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "dms:ListInstanceProfiles", - "dms:DescribeInstanceProfiles", - "dms:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "dms:UpdateInstanceProfile", - "dms:ModifyInstanceProfile", - "dms:AddTagsToResource", - "dms:RemoveTagsToResource", - "dms:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/InstanceProfileArn" - ], - "properties": { - "AvailabilityZone": { - "description": "The property describes an availability zone of the instance profile.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Description": { - "description": "The optional description of the instance profile.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "InstanceProfileArn": { - "description": "The property describes an ARN of the instance profile.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "InstanceProfileCreationTime": { - "description": "The property describes a creating time of the instance profile.", - "maxLength": 40, - "minLength": 1, - "type": "string" - }, - "InstanceProfileIdentifier": { - "description": "The property describes an identifier for the instance profile. It is used for describing/deleting/modifying. Can be name/arn", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "InstanceProfileName": { - "description": "The property describes a name for the instance profile.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "KmsKeyArn": { - "description": "The property describes kms key arn for the instance profile.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "NetworkType": { - "description": "The property describes a network type for the instance profile.", - "enum": [ - "IPV4", - "DUAL" - ], - "type": "string" - }, - "PubliclyAccessible": { - "default": false, - "description": "The property describes the publicly accessible of the instance profile", - "type": "boolean" - }, - "SubnetGroupIdentifier": { - "description": "The property describes a subnet group identifier for the instance profile.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "VpcSecurityGroups": { - "description": "The property describes vps security groups for the instance profile.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/InstanceProfileArn", - "/properties/InstanceProfileCreationTime" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-csf.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DMS::InstanceProfile", - "writeOnlyProperties": [ - "/properties/InstanceProfileIdentifier" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/InstanceProfileName" + ] + ], + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::DMS::InstanceProfile.", + "handlers": { + "create": { + "permissions": [ + "dms:CreateInstanceProfile", + "dms:ListInstanceProfiles", + "dms:DescribeInstanceProfiles", + "dms:AddTagsToResource", + "dms:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "dms:DeleteInstanceProfile" + ] + }, + "list": { + "permissions": [ + "dms:ListInstanceProfiles", + "dms:DescribeInstanceProfiles", + "dms:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "dms:ListInstanceProfiles", + "dms:DescribeInstanceProfiles", + "dms:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "dms:UpdateInstanceProfile", + "dms:ModifyInstanceProfile", + "dms:AddTagsToResource", + "dms:RemoveTagsFromResource", + "dms:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/InstanceProfileArn" + ], + "properties": { + "AvailabilityZone": { + "description": "The property describes an availability zone of the instance profile.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Description": { + "description": "The optional description of the instance profile.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "InstanceProfileArn": { + "description": "The property describes an ARN of the instance profile.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "InstanceProfileCreationTime": { + "description": "The property describes a creating time of the instance profile.", + "maxLength": 40, + "minLength": 1, + "type": "string" + }, + "InstanceProfileIdentifier": { + "description": "The property describes an identifier for the instance profile. It is used for describing/deleting/modifying. Can be name/arn", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "InstanceProfileName": { + "description": "The property describes a name for the instance profile.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KmsKeyArn": { + "description": "The property describes kms key arn for the instance profile.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "NetworkType": { + "description": "The property describes a network type for the instance profile.", + "enum": [ + "IPV4", + "DUAL" + ], + "type": "string" + }, + "PubliclyAccessible": { + "default": false, + "description": "The property describes the publicly accessible of the instance profile", + "type": "boolean" + }, + "SubnetGroupIdentifier": { + "description": "The property describes a subnet group identifier for the instance profile.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VpcSecurityGroups": { + "description": "The property describes vps security groups for the instance profile.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/InstanceProfileArn", + "/properties/InstanceProfileCreationTime" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-csf.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "dms:AddTagsToResource", + "dms:RemoveTagsFromResource", + "dms:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DMS::InstanceProfile", + "writeOnlyProperties": [ + "/properties/InstanceProfileIdentifier" + ] +} diff --git a/src/schema/aws-dms-migrationproject.json b/src/schema/aws-dms-migrationproject.json index ea1ae2fd..ee090bbd 100644 --- a/src/schema/aws-dms-migrationproject.json +++ b/src/schema/aws-dms-migrationproject.json @@ -1,215 +1,220 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/MigrationProjectName" - ] - ], - "additionalProperties": false, - "definitions": { - "DataProviderDescriptor": { - "additionalProperties": false, - "description": "It is an object that describes Source and Target DataProviders and credentials for connecting to databases that are used in MigrationProject", - "properties": { - "DataProviderArn": { - "type": "string" - }, - "DataProviderIdentifier": { - "type": "string" - }, - "DataProviderName": { - "type": "string" - }, - "SecretsManagerAccessRoleArn": { - "type": "string" - }, - "SecretsManagerSecretId": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, , and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, , and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "deprecatedProperties": [ - "/properties/MigrationProjectCreationTime" - ], - "description": "Resource schema for AWS::DMS::MigrationProject", - "handlers": { - "create": { - "permissions": [ - "dms:CreateMigrationProject", - "dms:ListMigrationProjects", - "dms:DescribeMigrationProjects", - "dms:AddTagsToResource", - "dms:ListTagsForResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "dms:DeleteMigrationProject" - ] - }, - "list": { - "permissions": [ - "dms:ListMigrationProjects", - "dms:DescribeMigrationProjects", - "dms:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "dms:DescribeMigrationProjects", - "dms:ListMigrationProjects", - "dms:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "dms:UpdateMigrationProject", - "dms:ModifyMigrationProject", - "dms:AddTagsToResource", - "dms:RemoveTagsToResource", - "dms:ListTagsForResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/MigrationProjectArn" - ], - "properties": { - "Description": { - "description": "The optional description of the migration project.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "InstanceProfileArn": { - "description": "The property describes an instance profile arn for the migration project. For read", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "InstanceProfileIdentifier": { - "description": "The property describes an instance profile identifier for the migration project. For create", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "InstanceProfileName": { - "description": "The property describes an instance profile name for the migration project. For read", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "MigrationProjectArn": { - "description": "The property describes an ARN of the migration project.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "MigrationProjectCreationTime": { - "description": "The property describes a creating time of the migration project.", - "maxLength": 40, - "minLength": 1, - "type": "string" - }, - "MigrationProjectIdentifier": { - "description": "The property describes an identifier for the migration project. It is used for describing/deleting/modifying can be name/arn", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "MigrationProjectName": { - "description": "The property describes a name to identify the migration project.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "SchemaConversionApplicationAttributes": { - "additionalProperties": false, - "description": "The property describes schema conversion application attributes for the migration project.", - "properties": { - "S3BucketPath": { - "type": "string" - }, - "S3BucketRoleArn": { - "type": "string" - } - }, - "type": "object" - }, - "SourceDataProviderDescriptors": { - "description": "The property describes source data provider descriptors for the migration project.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DataProviderDescriptor" - }, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "TargetDataProviderDescriptors": { - "description": "The property describes target data provider descriptors for the migration project.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DataProviderDescriptor" - }, - "type": "array", - "uniqueItems": true - }, - "TransformationRules": { - "description": "The property describes transformation rules for the migration project.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/MigrationProjectArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-csf.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DMS::MigrationProject", - "writeOnlyProperties": [ - "/properties/MigrationProjectIdentifier", - "/properties/InstanceProfileIdentifier", - "/properties/SourceDataProviderDescriptors/*/DataProviderIdentifier", - "/properties/TargetDataProviderDescriptors/*/DataProviderIdentifier" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/MigrationProjectName" + ] + ], + "additionalProperties": false, + "definitions": { + "DataProviderDescriptor": { + "additionalProperties": false, + "description": "It is an object that describes Source and Target DataProviders and credentials for connecting to databases that are used in MigrationProject", + "properties": { + "DataProviderArn": { + "type": "string" + }, + "DataProviderIdentifier": { + "type": "string" + }, + "DataProviderName": { + "type": "string" + }, + "SecretsManagerAccessRoleArn": { + "type": "string" + }, + "SecretsManagerSecretId": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, , and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, , and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/MigrationProjectCreationTime" + ], + "description": "Resource schema for AWS::DMS::MigrationProject", + "handlers": { + "create": { + "permissions": [ + "dms:CreateMigrationProject", + "dms:ListMigrationProjects", + "dms:DescribeMigrationProjects", + "dms:AddTagsToResource", + "dms:ListTagsForResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "dms:DeleteMigrationProject" + ] + }, + "list": { + "permissions": [ + "dms:ListMigrationProjects", + "dms:DescribeMigrationProjects", + "dms:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "dms:DescribeMigrationProjects", + "dms:ListMigrationProjects", + "dms:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "dms:UpdateMigrationProject", + "dms:ModifyMigrationProject", + "dms:AddTagsToResource", + "dms:RemoveTagsFromResource", + "dms:ListTagsForResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/MigrationProjectArn" + ], + "properties": { + "Description": { + "description": "The optional description of the migration project.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "InstanceProfileArn": { + "description": "The property describes an instance profile arn for the migration project. For read", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "InstanceProfileIdentifier": { + "description": "The property describes an instance profile identifier for the migration project. For create", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "InstanceProfileName": { + "description": "The property describes an instance profile name for the migration project. For read", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "MigrationProjectArn": { + "description": "The property describes an ARN of the migration project.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "MigrationProjectCreationTime": { + "description": "The property describes a creating time of the migration project.", + "maxLength": 40, + "minLength": 1, + "type": "string" + }, + "MigrationProjectIdentifier": { + "description": "The property describes an identifier for the migration project. It is used for describing/deleting/modifying can be name/arn", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "MigrationProjectName": { + "description": "The property describes a name to identify the migration project.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "SchemaConversionApplicationAttributes": { + "additionalProperties": false, + "description": "The property describes schema conversion application attributes for the migration project.", + "properties": { + "S3BucketPath": { + "type": "string" + }, + "S3BucketRoleArn": { + "type": "string" + } + }, + "type": "object" + }, + "SourceDataProviderDescriptors": { + "description": "The property describes source data provider descriptors for the migration project.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DataProviderDescriptor" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TargetDataProviderDescriptors": { + "description": "The property describes target data provider descriptors for the migration project.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DataProviderDescriptor" + }, + "type": "array", + "uniqueItems": true + }, + "TransformationRules": { + "description": "The property describes transformation rules for the migration project.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/MigrationProjectArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-csf.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "dms:AddTagsToResource", + "dms:RemoveTagsFromResource", + "dms:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DMS::MigrationProject", + "writeOnlyProperties": [ + "/properties/MigrationProjectIdentifier", + "/properties/InstanceProfileIdentifier", + "/properties/SourceDataProviderDescriptors/*/DataProviderIdentifier", + "/properties/TargetDataProviderDescriptors/*/DataProviderIdentifier" + ] +} diff --git a/src/schema/aws-dms-replicationconfig.json b/src/schema/aws-dms-replicationconfig.json index c01c247b..2dc73ecb 100644 --- a/src/schema/aws-dms-replicationconfig.json +++ b/src/schema/aws-dms-replicationconfig.json @@ -1,207 +1,207 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ReplicationConfigIdentifier" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceIdentifier" - ], - "definitions": { - "ComputeConfig": { - "additionalProperties": false, - "description": "Configuration parameters for provisioning a AWS DMS Serverless replication", - "properties": { - "AvailabilityZone": { - "type": "string" - }, - "DnsNameServers": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "MaxCapacityUnits": { - "type": "integer" - }, - "MinCapacityUnits": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "ReplicationSubnetGroupId": { - "type": "string" - }, - "VpcSecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "MaxCapacityUnits" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", - "properties": { - "Key": { - "description": "

Tag key.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "

Tag value.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "A replication configuration that you later provide to configure and start a AWS DMS Serverless replication", - "handlers": { - "create": { - "permissions": [ - "dms:CreateReplicationConfig", - "dms:AddTagsToResource", - "dms:ListTagsForResource", - "iam:CreateServiceLinkedRole", - "iam:AttachRolePolicy", - "iam:PutRolePolicy", - "iam:UpdateRoleDescription" - ] - }, - "delete": { - "permissions": [ - "dms:DescribeReplicationConfigs", - "dms:DeleteReplicationConfig", - "dms:ListTagsForResource", - "iam:DeleteServiceLinkedRole", - "iam:GetServiceLinkedRoleDeletionStatus" - ] - }, - "list": { - "permissions": [ - "dms:DescribeReplicationConfigs", - "dms:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "dms:DescribeReplicationConfigs", - "dms:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "dms:ModifyReplicationConfig", - "dms:AddTagsToResource", - "dms:RemoveTagsFromResource", - "dms:ListTagsForResource", - "iam:CreateServiceLinkedRole", - "iam:AttachRolePolicy", - "iam:PutRolePolicy", - "iam:UpdateRoleDescription" - ] - } - }, - "primaryIdentifier": [ - "/properties/ReplicationConfigArn" - ], - "properties": { - "ComputeConfig": { - "$ref": "#/definitions/ComputeConfig" - }, - "ReplicationConfigArn": { - "description": "The Amazon Resource Name (ARN) of the Replication Config", - "type": "string" - }, - "ReplicationConfigIdentifier": { - "description": "A unique identifier of replication configuration", - "type": "string" - }, - "ReplicationSettings": { - "description": "JSON settings for Servereless replications that are provisioned using this replication configuration", - "type": "object" - }, - "ReplicationType": { - "description": "The type of AWS DMS Serverless replication to provision using this replication configuration", - "enum": [ - "full-load", - "full-load-and-cdc", - "cdc" - ], - "type": "string" - }, - "ResourceIdentifier": { - "description": "A unique value or name that you get set for a given resource that can be used to construct an Amazon Resource Name (ARN) for that resource", - "type": "string" - }, - "SourceEndpointArn": { - "description": "The Amazon Resource Name (ARN) of the source endpoint for this AWS DMS Serverless replication configuration", - "type": "string" - }, - "SupplementalSettings": { - "description": "JSON settings for specifying supplemental data", - "type": "object" - }, - "TableMappings": { - "description": "JSON table mappings for AWS DMS Serverless replications that are provisioned using this replication configuration", - "type": "object" - }, - "Tags": { - "description": "

Contains a map of the key-value pairs for the resource tag or tags assigned to the dataset.

", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "TargetEndpointArn": { - "description": "The Amazon Resource Name (ARN) of the target endpoint for this AWS DMS Serverless replication configuration", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ReplicationConfigArn" - ], - "required": [ - "ReplicationConfigIdentifier", - "SourceEndpointArn", - "TargetEndpointArn", - "ReplicationType", - "ComputeConfig", - "TableMappings" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-dms", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "dms:AddTagsToResource", - "dms:ListTagsForResource", - "dms:RemoveTagsFromResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DMS::ReplicationConfig" -} +{ + "additionalIdentifiers": [ + [ + "/properties/ReplicationConfigIdentifier" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceIdentifier" + ], + "definitions": { + "ComputeConfig": { + "additionalProperties": false, + "description": "Configuration parameters for provisioning a AWS DMS Serverless replication", + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "DnsNameServers": { + "type": "string" + }, + "KmsKeyId": { + "type": "string" + }, + "MaxCapacityUnits": { + "type": "integer" + }, + "MinCapacityUnits": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "PreferredMaintenanceWindow": { + "type": "string" + }, + "ReplicationSubnetGroupId": { + "type": "string" + }, + "VpcSecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "MaxCapacityUnits" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", + "properties": { + "Key": { + "description": "

Tag key.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "

Tag value.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "A replication configuration that you later provide to configure and start a AWS DMS Serverless replication", + "handlers": { + "create": { + "permissions": [ + "dms:CreateReplicationConfig", + "dms:AddTagsToResource", + "dms:ListTagsForResource", + "iam:CreateServiceLinkedRole", + "iam:AttachRolePolicy", + "iam:PutRolePolicy", + "iam:UpdateRoleDescription" + ] + }, + "delete": { + "permissions": [ + "dms:DescribeReplicationConfigs", + "dms:DeleteReplicationConfig", + "dms:ListTagsForResource", + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus" + ] + }, + "list": { + "permissions": [ + "dms:DescribeReplicationConfigs", + "dms:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "dms:DescribeReplicationConfigs", + "dms:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "dms:ModifyReplicationConfig", + "dms:AddTagsToResource", + "dms:RemoveTagsFromResource", + "dms:ListTagsForResource", + "iam:CreateServiceLinkedRole", + "iam:AttachRolePolicy", + "iam:PutRolePolicy", + "iam:UpdateRoleDescription" + ] + } + }, + "primaryIdentifier": [ + "/properties/ReplicationConfigArn" + ], + "properties": { + "ComputeConfig": { + "$ref": "#/definitions/ComputeConfig" + }, + "ReplicationConfigArn": { + "description": "The Amazon Resource Name (ARN) of the Replication Config", + "type": "string" + }, + "ReplicationConfigIdentifier": { + "description": "A unique identifier of replication configuration", + "type": "string" + }, + "ReplicationSettings": { + "description": "JSON settings for Servereless replications that are provisioned using this replication configuration", + "type": "object" + }, + "ReplicationType": { + "description": "The type of AWS DMS Serverless replication to provision using this replication configuration", + "enum": [ + "full-load", + "full-load-and-cdc", + "cdc" + ], + "type": "string" + }, + "ResourceIdentifier": { + "description": "A unique value or name that you get set for a given resource that can be used to construct an Amazon Resource Name (ARN) for that resource", + "type": "string" + }, + "SourceEndpointArn": { + "description": "The Amazon Resource Name (ARN) of the source endpoint for this AWS DMS Serverless replication configuration", + "type": "string" + }, + "SupplementalSettings": { + "description": "JSON settings for specifying supplemental data", + "type": "object" + }, + "TableMappings": { + "description": "JSON table mappings for AWS DMS Serverless replications that are provisioned using this replication configuration", + "type": "object" + }, + "Tags": { + "description": "

Contains a map of the key-value pairs for the resource tag or tags assigned to the dataset.

", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "TargetEndpointArn": { + "description": "The Amazon Resource Name (ARN) of the target endpoint for this AWS DMS Serverless replication configuration", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ReplicationConfigArn" + ], + "required": [ + "ReplicationConfigIdentifier", + "SourceEndpointArn", + "TargetEndpointArn", + "ReplicationType", + "ComputeConfig", + "TableMappings" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-dms", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "dms:AddTagsToResource", + "dms:ListTagsForResource", + "dms:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DMS::ReplicationConfig" +} diff --git a/src/schema/aws-dms-replicationinstance.json b/src/schema/aws-dms-replicationinstance.json index cd797593..8bddcdd3 100644 --- a/src/schema/aws-dms-replicationinstance.json +++ b/src/schema/aws-dms-replicationinstance.json @@ -1,107 +1,111 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKeyId", - "/properties/ResourceIdentifier", - "/properties/ReplicationSubnetGroupIdentifier", - "/properties/PubliclyAccessible" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::DMS::ReplicationInstance", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AllocatedStorage": { - "type": "integer" - }, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "AvailabilityZone": { - "type": "string" - }, - "EngineVersion": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "MultiAZ": { - "type": "boolean" - }, - "NetworkType": { - "type": "string" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "ReplicationInstanceClass": { - "type": "string" - }, - "ReplicationInstanceIdentifier": { - "type": "string" - }, - "ReplicationInstancePrivateIpAddresses": { - "type": "string" - }, - "ReplicationInstancePublicIpAddresses": { - "type": "string" - }, - "ReplicationSubnetGroupIdentifier": { - "type": "string" - }, - "ResourceIdentifier": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcSecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ReplicationInstancePublicIpAddresses", - "/properties/Id", - "/properties/ReplicationInstancePrivateIpAddresses" - ], - "required": [ - "ReplicationInstanceClass" - ], - "typeName": "AWS::DMS::ReplicationInstance" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KmsKeyId", + "/properties/ResourceIdentifier", + "/properties/DnsNameServers", + "/properties/ReplicationSubnetGroupIdentifier", + "/properties/PubliclyAccessible" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DMS::ReplicationInstance", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AllocatedStorage": { + "type": "integer" + }, + "AllowMajorVersionUpgrade": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "AvailabilityZone": { + "type": "string" + }, + "DnsNameServers": { + "type": "string" + }, + "EngineVersion": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "KmsKeyId": { + "type": "string" + }, + "MultiAZ": { + "type": "boolean" + }, + "NetworkType": { + "type": "string" + }, + "PreferredMaintenanceWindow": { + "type": "string" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "ReplicationInstanceClass": { + "type": "string" + }, + "ReplicationInstanceIdentifier": { + "type": "string" + }, + "ReplicationInstancePrivateIpAddresses": { + "type": "string" + }, + "ReplicationInstancePublicIpAddresses": { + "type": "string" + }, + "ReplicationSubnetGroupIdentifier": { + "type": "string" + }, + "ResourceIdentifier": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcSecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ReplicationInstancePublicIpAddresses", + "/properties/Id", + "/properties/ReplicationInstancePrivateIpAddresses" + ], + "required": [ + "ReplicationInstanceClass" + ], + "typeName": "AWS::DMS::ReplicationInstance" +} diff --git a/src/schema/aws-dms-replicationsubnetgroup.json b/src/schema/aws-dms-replicationsubnetgroup.json index e52cc415..e4ac9b4b 100644 --- a/src/schema/aws-dms-replicationsubnetgroup.json +++ b/src/schema/aws-dms-replicationsubnetgroup.json @@ -1,61 +1,61 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ReplicationSubnetGroupIdentifier" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::DMS::ReplicationSubnetGroup", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "ReplicationSubnetGroupDescription": { - "type": "string" - }, - "ReplicationSubnetGroupIdentifier": { - "type": "string" - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ReplicationSubnetGroupDescription", - "SubnetIds" - ], - "typeName": "AWS::DMS::ReplicationSubnetGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ReplicationSubnetGroupIdentifier" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DMS::ReplicationSubnetGroup", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "ReplicationSubnetGroupDescription": { + "type": "string" + }, + "ReplicationSubnetGroupIdentifier": { + "type": "string" + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ReplicationSubnetGroupDescription", + "SubnetIds" + ], + "typeName": "AWS::DMS::ReplicationSubnetGroup" +} diff --git a/src/schema/aws-dms-replicationtask.json b/src/schema/aws-dms-replicationtask.json index fe6384d7..50d21774 100644 --- a/src/schema/aws-dms-replicationtask.json +++ b/src/schema/aws-dms-replicationtask.json @@ -1,90 +1,90 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceIdentifier", - "/properties/TargetEndpointArn", - "/properties/ReplicationInstanceArn", - "/properties/SourceEndpointArn" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::DMS::ReplicationTask", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CdcStartPosition": { - "type": "string" - }, - "CdcStartTime": { - "type": "number" - }, - "CdcStopPosition": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "MigrationType": { - "type": "string" - }, - "ReplicationInstanceArn": { - "type": "string" - }, - "ReplicationTaskIdentifier": { - "type": "string" - }, - "ReplicationTaskSettings": { - "type": "string" - }, - "ResourceIdentifier": { - "type": "string" - }, - "SourceEndpointArn": { - "type": "string" - }, - "TableMappings": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TargetEndpointArn": { - "type": "string" - }, - "TaskData": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "TableMappings", - "SourceEndpointArn", - "MigrationType", - "TargetEndpointArn", - "ReplicationInstanceArn" - ], - "typeName": "AWS::DMS::ReplicationTask" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceIdentifier", + "/properties/TargetEndpointArn", + "/properties/ReplicationInstanceArn", + "/properties/SourceEndpointArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DMS::ReplicationTask", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CdcStartPosition": { + "type": "string" + }, + "CdcStartTime": { + "type": "number" + }, + "CdcStopPosition": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "MigrationType": { + "type": "string" + }, + "ReplicationInstanceArn": { + "type": "string" + }, + "ReplicationTaskIdentifier": { + "type": "string" + }, + "ReplicationTaskSettings": { + "type": "string" + }, + "ResourceIdentifier": { + "type": "string" + }, + "SourceEndpointArn": { + "type": "string" + }, + "TableMappings": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TargetEndpointArn": { + "type": "string" + }, + "TaskData": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TableMappings", + "SourceEndpointArn", + "MigrationType", + "TargetEndpointArn", + "ReplicationInstanceArn" + ], + "typeName": "AWS::DMS::ReplicationTask" +} diff --git a/src/schema/aws-docdb-dbcluster.json b/src/schema/aws-docdb-dbcluster.json index 5ae54719..7edd770e 100644 --- a/src/schema/aws-docdb-dbcluster.json +++ b/src/schema/aws-docdb-dbcluster.json @@ -1,144 +1,172 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKeyId", - "/properties/SnapshotIdentifier", - "/properties/MasterUsername", - "/properties/SourceDBClusterIdentifier", - "/properties/DBClusterIdentifier", - "/properties/AvailabilityZones", - "/properties/DBSubnetGroupName", - "/properties/StorageEncrypted" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::DocDB::DBCluster", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AvailabilityZones": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "ClusterResourceId": { - "type": "string" - }, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "DBClusterIdentifier": { - "type": "string" - }, - "DBClusterParameterGroupName": { - "type": "string" - }, - "DBSubnetGroupName": { - "type": "string" - }, - "DeletionProtection": { - "type": "boolean" - }, - "EnableCloudwatchLogsExports": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Endpoint": { - "type": "string" - }, - "EngineVersion": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "MasterUserPassword": { - "type": "string" - }, - "MasterUsername": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "PreferredBackupWindow": { - "type": "string" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "ReadEndpoint": { - "type": "string" - }, - "RestoreToTime": { - "type": "string" - }, - "RestoreType": { - "type": "string" - }, - "SnapshotIdentifier": { - "type": "string" - }, - "SourceDBClusterIdentifier": { - "type": "string" - }, - "StorageEncrypted": { - "type": "boolean" - }, - "StorageType": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "VpcSecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ReadEndpoint", - "/properties/Id", - "/properties/Endpoint", - "/properties/ClusterResourceId" - ], - "typeName": "AWS::DocDB::DBCluster" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SnapshotIdentifier", + "/properties/KmsKeyId", + "/properties/MasterUsername", + "/properties/SourceDBClusterIdentifier", + "/properties/DBClusterIdentifier", + "/properties/AvailabilityZones", + "/properties/DBSubnetGroupName", + "/properties/StorageEncrypted" + ], + "definitions": { + "ServerlessV2ScalingConfiguration": { + "additionalProperties": false, + "properties": { + "MaxCapacity": { + "type": "number" + }, + "MinCapacity": { + "type": "number" + } + }, + "required": [ + "MinCapacity", + "MaxCapacity" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DocDB::DBCluster", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZones": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "ClusterResourceId": { + "type": "string" + }, + "CopyTagsToSnapshot": { + "type": "boolean" + }, + "DBClusterIdentifier": { + "type": "string" + }, + "DBClusterParameterGroupName": { + "type": "string" + }, + "DBSubnetGroupName": { + "type": "string" + }, + "DeletionProtection": { + "type": "boolean" + }, + "EnableCloudwatchLogsExports": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Endpoint": { + "type": "string" + }, + "EngineVersion": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "KmsKeyId": { + "type": "string" + }, + "ManageMasterUserPassword": { + "type": "boolean" + }, + "MasterUserPassword": { + "type": "string" + }, + "MasterUserSecretKmsKeyId": { + "type": "string" + }, + "MasterUsername": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "PreferredBackupWindow": { + "type": "string" + }, + "PreferredMaintenanceWindow": { + "type": "string" + }, + "ReadEndpoint": { + "type": "string" + }, + "RestoreToTime": { + "type": "string" + }, + "RestoreType": { + "type": "string" + }, + "RotateMasterUserPassword": { + "type": "boolean" + }, + "ServerlessV2ScalingConfiguration": { + "$ref": "#/definitions/ServerlessV2ScalingConfiguration" + }, + "SnapshotIdentifier": { + "type": "string" + }, + "SourceDBClusterIdentifier": { + "type": "string" + }, + "StorageEncrypted": { + "type": "boolean" + }, + "StorageType": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "UseLatestRestorableTime": { + "type": "boolean" + }, + "VpcSecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ReadEndpoint", + "/properties/Id", + "/properties/Endpoint", + "/properties/ClusterResourceId" + ], + "typeName": "AWS::DocDB::DBCluster" +} diff --git a/src/schema/aws-docdb-dbclusterparametergroup.json b/src/schema/aws-docdb-dbclusterparametergroup.json index c78d65cb..68119487 100644 --- a/src/schema/aws-docdb-dbclusterparametergroup.json +++ b/src/schema/aws-docdb-dbclusterparametergroup.json @@ -1,63 +1,63 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Family", - "/properties/Description", - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::DocDB::DBClusterParameterGroup", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Family": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Parameters": { - "type": "object" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Family", - "Description", - "Parameters" - ], - "typeName": "AWS::DocDB::DBClusterParameterGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Family", + "/properties/Description", + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DocDB::DBClusterParameterGroup", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "type": "string" + }, + "Family": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Parameters": { + "type": "object" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Family", + "Description", + "Parameters" + ], + "typeName": "AWS::DocDB::DBClusterParameterGroup" +} diff --git a/src/schema/aws-docdb-dbinstance.json b/src/schema/aws-docdb-dbinstance.json index 648404c3..033c1422 100644 --- a/src/schema/aws-docdb-dbinstance.json +++ b/src/schema/aws-docdb-dbinstance.json @@ -1,85 +1,85 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DBClusterIdentifier", - "/properties/AvailabilityZone", - "/properties/DBInstanceIdentifier" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::DocDB::DBInstance", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "AvailabilityZone": { - "type": "string" - }, - "CACertificateIdentifier": { - "type": "string" - }, - "CertificateRotationRestart": { - "type": "boolean" - }, - "DBClusterIdentifier": { - "type": "string" - }, - "DBInstanceClass": { - "type": "string" - }, - "DBInstanceIdentifier": { - "type": "string" - }, - "EnablePerformanceInsights": { - "type": "boolean" - }, - "Endpoint": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Port": { - "type": "string" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Port", - "/properties/Id", - "/properties/Endpoint" - ], - "required": [ - "DBInstanceClass", - "DBClusterIdentifier" - ], - "typeName": "AWS::DocDB::DBInstance" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DBClusterIdentifier", + "/properties/AvailabilityZone", + "/properties/DBInstanceIdentifier" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DocDB::DBInstance", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "AvailabilityZone": { + "type": "string" + }, + "CACertificateIdentifier": { + "type": "string" + }, + "CertificateRotationRestart": { + "type": "boolean" + }, + "DBClusterIdentifier": { + "type": "string" + }, + "DBInstanceClass": { + "type": "string" + }, + "DBInstanceIdentifier": { + "type": "string" + }, + "EnablePerformanceInsights": { + "type": "boolean" + }, + "Endpoint": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Port": { + "type": "string" + }, + "PreferredMaintenanceWindow": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Port", + "/properties/Id", + "/properties/Endpoint" + ], + "required": [ + "DBInstanceClass", + "DBClusterIdentifier" + ], + "typeName": "AWS::DocDB::DBInstance" +} diff --git a/src/schema/aws-docdb-dbsubnetgroup.json b/src/schema/aws-docdb-dbsubnetgroup.json index ce798e44..14e861d7 100644 --- a/src/schema/aws-docdb-dbsubnetgroup.json +++ b/src/schema/aws-docdb-dbsubnetgroup.json @@ -1,61 +1,61 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DBSubnetGroupName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::DocDB::DBSubnetGroup", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DBSubnetGroupDescription": { - "type": "string" - }, - "DBSubnetGroupName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "DBSubnetGroupDescription", - "SubnetIds" - ], - "typeName": "AWS::DocDB::DBSubnetGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DBSubnetGroupName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::DocDB::DBSubnetGroup", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DBSubnetGroupDescription": { + "type": "string" + }, + "DBSubnetGroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "DBSubnetGroupDescription", + "SubnetIds" + ], + "typeName": "AWS::DocDB::DBSubnetGroup" +} diff --git a/src/schema/aws-docdb-eventsubscription.json b/src/schema/aws-docdb-eventsubscription.json index d4ba0035..3b9db01d 100644 --- a/src/schema/aws-docdb-eventsubscription.json +++ b/src/schema/aws-docdb-eventsubscription.json @@ -1,49 +1,49 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SubscriptionName", - "/properties/SnsTopicArn" - ], - "description": "Resource Type definition for AWS::DocDB::EventSubscription", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Enabled": { - "type": "boolean" - }, - "EventCategories": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - }, - "SnsTopicArn": { - "type": "string" - }, - "SourceIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceType": { - "type": "string" - }, - "SubscriptionName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "SnsTopicArn" - ], - "typeName": "AWS::DocDB::EventSubscription" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubscriptionName", + "/properties/SnsTopicArn" + ], + "description": "Resource Type definition for AWS::DocDB::EventSubscription", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Enabled": { + "type": "boolean" + }, + "EventCategories": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "SnsTopicArn": { + "type": "string" + }, + "SourceIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SourceType": { + "type": "string" + }, + "SubscriptionName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "SnsTopicArn" + ], + "typeName": "AWS::DocDB::EventSubscription" +} diff --git a/src/schema/aws-docdbelastic-cluster.json b/src/schema/aws-docdbelastic-cluster.json index de224a94..8daf22f4 100644 --- a/src/schema/aws-docdbelastic-cluster.json +++ b/src/schema/aws-docdbelastic-cluster.json @@ -1,210 +1,215 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdminUserName", - "/properties/AuthType", - "/properties/ClusterName", - "/properties/KmsKeyId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::DocDBElastic::Cluster Amazon DocumentDB (with MongoDB compatibility) Elastic Scale resource describes a Cluster", - "handlers": { - "create": { - "permissions": [ - "docdb-elastic:CreateCluster", - "docdb-elastic:TagResource", - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones", - "secretsmanager:ListSecrets", - "secretsmanager:ListSecretVersionIds", - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:GetResourcePolicy", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "docdb-elastic:DeleteCluster", - "docdb-elastic:GetCluster", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones" - ] - }, - "list": { - "permissions": [ - "docdb-elastic:ListClusters" - ] - }, - "read": { - "permissions": [ - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "docdb-elastic:UpdateCluster", - "docdb-elastic:TagResource", - "docdb-elastic:UntagResource", - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones", - "secretsmanager:ListSecrets", - "secretsmanager:ListSecretVersionIds", - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:GetResourcePolicy", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/ClusterArn" - ], - "properties": { - "AdminUserName": { - "type": "string" - }, - "AdminUserPassword": { - "type": "string" - }, - "AuthType": { - "type": "string" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "ClusterArn": { - "type": "string" - }, - "ClusterEndpoint": { - "type": "string" - }, - "ClusterName": { - "maxLength": 50, - "minLength": 1, - "pattern": "[a-zA-z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*", - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "PreferredBackupWindow": { - "type": "string" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "ShardCapacity": { - "type": "integer" - }, - "ShardCount": { - "type": "integer" - }, - "ShardInstanceCount": { - "type": "integer" - }, - "SubnetIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "VpcSecurityGroupIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ClusterArn", - "/properties/ClusterEndpoint" - ], - "required": [ - "ClusterName", - "AdminUserName", - "ShardCapacity", - "ShardCount", - "AuthType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-docdbelastic/", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DocDBElastic::Cluster", - "writeOnlyProperties": [ - "/properties/AdminUserPassword" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AdminUserName", + "/properties/AuthType", + "/properties/ClusterName", + "/properties/KmsKeyId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::DocDBElastic::Cluster Amazon DocumentDB (with MongoDB compatibility) Elastic Scale resource describes a Cluster", + "handlers": { + "create": { + "permissions": [ + "docdb-elastic:CreateCluster", + "docdb-elastic:TagResource", + "docdb-elastic:GetCluster", + "docdb-elastic:ListTagsForResource", + "ec2:CreateVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "ec2:DeleteVpcEndpoints", + "ec2:ModifyVpcEndpoint", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcAttribute", + "ec2:DescribeVpcs", + "ec2:DescribeAvailabilityZones", + "secretsmanager:ListSecrets", + "secretsmanager:ListSecretVersionIds", + "secretsmanager:DescribeSecret", + "secretsmanager:GetSecretValue", + "secretsmanager:GetResourcePolicy", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "docdb-elastic:DeleteCluster", + "docdb-elastic:GetCluster", + "ec2:DescribeVpcEndpoints", + "ec2:DeleteVpcEndpoints", + "ec2:ModifyVpcEndpoint", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcAttribute", + "ec2:DescribeVpcs", + "ec2:DescribeAvailabilityZones" + ] + }, + "list": { + "permissions": [ + "docdb-elastic:ListClusters" + ] + }, + "read": { + "permissions": [ + "docdb-elastic:GetCluster", + "docdb-elastic:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "docdb-elastic:UpdateCluster", + "docdb-elastic:TagResource", + "docdb-elastic:UntagResource", + "docdb-elastic:GetCluster", + "docdb-elastic:ListTagsForResource", + "ec2:CreateVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "ec2:DeleteVpcEndpoints", + "ec2:ModifyVpcEndpoint", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcAttribute", + "ec2:DescribeVpcs", + "ec2:DescribeAvailabilityZones", + "secretsmanager:ListSecrets", + "secretsmanager:ListSecretVersionIds", + "secretsmanager:DescribeSecret", + "secretsmanager:GetSecretValue", + "secretsmanager:GetResourcePolicy", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/ClusterArn" + ], + "properties": { + "AdminUserName": { + "type": "string" + }, + "AdminUserPassword": { + "type": "string" + }, + "AuthType": { + "type": "string" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "ClusterArn": { + "type": "string" + }, + "ClusterEndpoint": { + "type": "string" + }, + "ClusterName": { + "maxLength": 50, + "minLength": 1, + "pattern": "[a-zA-z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*", + "type": "string" + }, + "KmsKeyId": { + "type": "string" + }, + "PreferredBackupWindow": { + "type": "string" + }, + "PreferredMaintenanceWindow": { + "type": "string" + }, + "ShardCapacity": { + "type": "integer" + }, + "ShardCount": { + "type": "integer" + }, + "ShardInstanceCount": { + "type": "integer" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "VpcSecurityGroupIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ClusterArn", + "/properties/ClusterEndpoint" + ], + "required": [ + "ClusterName", + "AdminUserName", + "ShardCapacity", + "ShardCount", + "AuthType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-docdbelastic/", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "docdb-elastic:TagResource", + "docdb-elastic:UntagResource", + "docdb-elastic:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DocDBElastic::Cluster", + "writeOnlyProperties": [ + "/properties/AdminUserPassword" + ] +} diff --git a/src/schema/aws-dsql-cluster.json b/src/schema/aws-dsql-cluster.json new file mode 100644 index 00000000..7c3f51be --- /dev/null +++ b/src/schema/aws-dsql-cluster.json @@ -0,0 +1,124 @@ +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A map of key and value pairs to use to tag your cluster.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ] + } + }, + "description": "Resource Type definition for AWS::DSQL::Cluster", + "handlers": { + "create": { + "permissions": [ + "dsql:CreateCluster", + "dsql:GetCluster", + "dsql:TagResource", + "dsql:ListTagsForResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "dsql:DeleteCluster", + "dsql:GetCluster", + "dsql:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "dsql:ListClusters", + "dsql:ListTagsForResource", + "tag:GetTagKeys", + "tag:GetTagValues" + ] + }, + "read": { + "permissions": [ + "dsql:GetCluster", + "dsql:ListTagsForResource", + "tag:GetTagKeys", + "tag:GetTagValues" + ] + }, + "update": { + "permissions": [ + "dsql:UpdateCluster", + "dsql:GetCluster", + "dsql:UntagResource", + "dsql:TagResource", + "dsql:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Identifier" + ], + "properties": { + "CreationTime": { + "description": "The time of when the cluster was created in ISO-8601 format.", + "type": "string" + }, + "DeletionProtectionEnabled": { + "description": "Whether deletion protection is enabled in this cluster.", + "type": "boolean" + }, + "Identifier": { + "description": "The ID of the created cluster.", + "type": "string" + }, + "ResourceArn": { + "description": "The Amazon Resource Name (ARN) for the cluster.", + "type": "string" + }, + "Status": { + "description": "The status of the cluster.", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ResourceArn", + "/properties/Identifier", + "/properties/CreationTime", + "/properties/Status" + ], + "required": [], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "dsql:UntagResource", + "dsql:TagResource", + "dsql:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DSQL::Cluster" +} diff --git a/src/schema/aws-dynamodb-globaltable.json b/src/schema/aws-dynamodb-globaltable.json index fe4fb8c3..4588d16b 100644 --- a/src/schema/aws-dynamodb-globaltable.json +++ b/src/schema/aws-dynamodb-globaltable.json @@ -1,711 +1,721 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Arn" - ], - [ - "/properties/StreamArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LocalSecondaryIndexes", - "/properties/TableName", - "/properties/KeySchema" - ], - "definitions": { - "AttributeDefinition": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "AttributeType": { - "type": "string" - } - }, - "required": [ - "AttributeName", - "AttributeType" - ], - "type": "object" - }, - "CapacityAutoScalingSettings": { - "additionalProperties": false, - "properties": { - "MaxCapacity": { - "minimum": 1, - "type": "integer" - }, - "MinCapacity": { - "minimum": 1, - "type": "integer" - }, - "SeedCapacity": { - "minimum": 1, - "type": "integer" - }, - "TargetTrackingScalingPolicyConfiguration": { - "$ref": "#/definitions/TargetTrackingScalingPolicyConfiguration" - } - }, - "required": [ - "MinCapacity", - "MaxCapacity", - "TargetTrackingScalingPolicyConfiguration" - ], - "type": "object" - }, - "ContributorInsightsSpecification": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "GlobalSecondaryIndex": { - "additionalProperties": false, - "properties": { - "IndexName": { - "maxLength": 255, - "minLength": 3, - "type": "string" - }, - "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Projection": { - "$ref": "#/definitions/Projection" - }, - "WarmThroughput": { - "$ref": "#/definitions/WarmThroughput" - }, - "WriteOnDemandThroughputSettings": { - "$ref": "#/definitions/WriteOnDemandThroughputSettings" - }, - "WriteProvisionedThroughputSettings": { - "$ref": "#/definitions/WriteProvisionedThroughputSettings" - } - }, - "required": [ - "IndexName", - "Projection", - "KeySchema" - ], - "type": "object" - }, - "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "KeyType": { - "type": "string" - } - }, - "required": [ - "KeyType", - "AttributeName" - ], - "type": "object" - }, - "KinesisStreamSpecification": { - "additionalProperties": false, - "properties": { - "ApproximateCreationDateTimePrecision": { - "enum": [ - "MICROSECOND", - "MILLISECOND" - ], - "type": "string" - }, - "StreamArn": { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::Kinesis::Stream" - }, - "type": "string" - } - }, - "required": [ - "StreamArn" - ], - "type": "object" - }, - "LocalSecondaryIndex": { - "additionalProperties": false, - "properties": { - "IndexName": { - "maxLength": 255, - "minLength": 3, - "type": "string" - }, - "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "maxItems": 2, - "type": "array", - "uniqueItems": true - }, - "Projection": { - "$ref": "#/definitions/Projection" - } - }, - "required": [ - "IndexName", - "Projection", - "KeySchema" - ], - "type": "object" - }, - "PointInTimeRecoverySpecification": { - "additionalProperties": false, - "properties": { - "PointInTimeRecoveryEnabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "Projection": { - "additionalProperties": false, - "properties": { - "NonKeyAttributes": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ProjectionType": { - "type": "string" - } - }, - "type": "object" - }, - "ReadOnDemandThroughputSettings": { - "additionalProperties": false, - "properties": { - "MaxReadRequestUnits": { - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "ReadProvisionedThroughputSettings": { - "additionalProperties": false, - "properties": { - "ReadCapacityAutoScalingSettings": { - "$ref": "#/definitions/CapacityAutoScalingSettings" - }, - "ReadCapacityUnits": { - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "ReplicaGlobalSecondaryIndexSpecification": { - "additionalProperties": false, - "properties": { - "ContributorInsightsSpecification": { - "$ref": "#/definitions/ContributorInsightsSpecification" - }, - "IndexName": { - "maxLength": 255, - "minLength": 3, - "type": "string" - }, - "ReadOnDemandThroughputSettings": { - "$ref": "#/definitions/ReadOnDemandThroughputSettings" - }, - "ReadProvisionedThroughputSettings": { - "$ref": "#/definitions/ReadProvisionedThroughputSettings" - } - }, - "required": [ - "IndexName" - ], - "type": "object" - }, - "ReplicaSSESpecification": { - "additionalProperties": false, - "properties": { - "KMSMasterKeyId": { - "anyOf": [ - { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::KMS::Key" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/KeyId", - "typeName": "AWS::KMS::Key" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/AliasName", - "typeName": "AWS::KMS::Alias" - } - } - ], - "type": "string" - } - }, - "required": [ - "KMSMasterKeyId" - ], - "type": "object" - }, - "ReplicaSpecification": { - "additionalProperties": false, - "properties": { - "ContributorInsightsSpecification": { - "$ref": "#/definitions/ContributorInsightsSpecification" - }, - "DeletionProtectionEnabled": { - "type": "boolean" - }, - "GlobalSecondaryIndexes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ReplicaGlobalSecondaryIndexSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "KinesisStreamSpecification": { - "$ref": "#/definitions/KinesisStreamSpecification" - }, - "PointInTimeRecoverySpecification": { - "$ref": "#/definitions/PointInTimeRecoverySpecification" - }, - "ReadOnDemandThroughputSettings": { - "$ref": "#/definitions/ReadOnDemandThroughputSettings" - }, - "ReadProvisionedThroughputSettings": { - "$ref": "#/definitions/ReadProvisionedThroughputSettings" - }, - "Region": { - "type": "string" - }, - "ReplicaStreamSpecification": { - "$ref": "#/definitions/ReplicaStreamSpecification" - }, - "ResourcePolicy": { - "$ref": "#/definitions/ResourcePolicy" - }, - "SSESpecification": { - "$ref": "#/definitions/ReplicaSSESpecification" - }, - "TableClass": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Region" - ], - "type": "object" - }, - "ReplicaStreamSpecification": { - "additionalProperties": false, - "properties": { - "ResourcePolicy": { - "$ref": "#/definitions/ResourcePolicy" - } - }, - "required": [ - "ResourcePolicy" - ], - "type": "object" - }, - "ResourcePolicy": { - "additionalProperties": false, - "properties": { - "PolicyDocument": { - "type": "object" - } - }, - "required": [ - "PolicyDocument" - ], - "type": "object" - }, - "SSESpecification": { - "additionalProperties": false, - "properties": { - "SSEEnabled": { - "type": "boolean" - }, - "SSEType": { - "type": "string" - } - }, - "required": [ - "SSEEnabled" - ], - "type": "object" - }, - "StreamSpecification": { - "additionalProperties": false, - "properties": { - "StreamViewType": { - "type": "string" - } - }, - "required": [ - "StreamViewType" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TargetTrackingScalingPolicyConfiguration": { - "additionalProperties": false, - "properties": { - "DisableScaleIn": { - "type": "boolean" - }, - "ScaleInCooldown": { - "minimum": 0, - "type": "integer" - }, - "ScaleOutCooldown": { - "minimum": 0, - "type": "integer" - }, - "TargetValue": { - "format": "double", - "type": "number" - } - }, - "required": [ - "TargetValue" - ], - "type": "object" - }, - "TimeToLiveSpecification": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "WarmThroughput": { - "additionalProperties": false, - "anyOf": [ - { - "required": [ - "ReadUnitsPerSecond" - ] - }, - { - "required": [ - "WriteUnitsPerSecond" - ] - } - ], - "properties": { - "ReadUnitsPerSecond": { - "minimum": 1, - "type": "integer" - }, - "WriteUnitsPerSecond": { - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "WriteOnDemandThroughputSettings": { - "additionalProperties": false, - "properties": { - "MaxWriteRequestUnits": { - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "WriteProvisionedThroughputSettings": { - "additionalProperties": false, - "properties": { - "WriteCapacityAutoScalingSettings": { - "$ref": "#/definitions/CapacityAutoScalingSettings" - } - }, - "type": "object" - } - }, - "description": "Version: None. Resource Type definition for AWS::DynamoDB::GlobalTable", - "handlers": { - "create": { - "permissions": [ - "dynamodb:CreateTable", - "dynamodb:CreateTableReplica", - "dynamodb:Describe*", - "dynamodb:UpdateTimeToLive", - "dynamodb:UpdateContributorInsights", - "dynamodb:UpdateContinuousBackups", - "dynamodb:ListTagsOfResource", - "dynamodb:Query", - "dynamodb:Scan", - "dynamodb:UpdateItem", - "dynamodb:PutItem", - "dynamodb:GetItem", - "dynamodb:DeleteItem", - "dynamodb:BatchWriteItem", - "dynamodb:TagResource", - "dynamodb:EnableKinesisStreamingDestination", - "dynamodb:DisableKinesisStreamingDestination", - "dynamodb:UpdateTableReplicaAutoScaling", - "dynamodb:TagResource", - "dynamodb:GetResourcePolicy", - "dynamodb:PutResourcePolicy", - "application-autoscaling:DeleteScalingPolicy", - "application-autoscaling:DeleteScheduledAction", - "application-autoscaling:DeregisterScalableTarget", - "application-autoscaling:Describe*", - "application-autoscaling:PutScalingPolicy", - "application-autoscaling:PutScheduledAction", - "application-autoscaling:RegisterScalableTarget", - "kinesis:ListStreams", - "kinesis:DescribeStream", - "kinesis:PutRecords", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:ListAliases", - "kms:Decrypt", - "kms:RevokeGrant", - "cloudwatch:PutMetricData", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "dynamodb:Describe*", - "dynamodb:DeleteTable", - "application-autoscaling:DeleteScalingPolicy", - "application-autoscaling:DeleteScheduledAction", - "application-autoscaling:DeregisterScalableTarget", - "application-autoscaling:Describe*", - "application-autoscaling:PutScalingPolicy", - "application-autoscaling:PutScheduledAction", - "application-autoscaling:RegisterScalableTarget" - ] - }, - "list": { - "permissions": [ - "dynamodb:ListTables", - "cloudwatch:PutMetricData" - ] - }, - "read": { - "permissions": [ - "dynamodb:Describe*", - "dynamodb:GetResourcePolicy", - "application-autoscaling:Describe*", - "cloudwatch:PutMetricData", - "dynamodb:ListTagsOfResource", - "kms:DescribeKey" - ] - }, - "update": { - "permissions": [ - "dynamodb:Describe*", - "dynamodb:CreateTableReplica", - "dynamodb:UpdateTable", - "dynamodb:UpdateTimeToLive", - "dynamodb:UpdateContinuousBackups", - "dynamodb:UpdateContributorInsights", - "dynamodb:ListTagsOfResource", - "dynamodb:Query", - "dynamodb:Scan", - "dynamodb:UpdateItem", - "dynamodb:PutItem", - "dynamodb:GetItem", - "dynamodb:DeleteItem", - "dynamodb:BatchWriteItem", - "dynamodb:DeleteTable", - "dynamodb:DeleteTableReplica", - "dynamodb:UpdateItem", - "dynamodb:TagResource", - "dynamodb:UntagResource", - "dynamodb:EnableKinesisStreamingDestination", - "dynamodb:DisableKinesisStreamingDestination", - "dynamodb:UpdateTableReplicaAutoScaling", - "dynamodb:UpdateKinesisStreamingDestination", - "dynamodb:GetResourcePolicy", - "dynamodb:PutResourcePolicy", - "dynamodb:DeleteResourcePolicy", - "application-autoscaling:DeleteScalingPolicy", - "application-autoscaling:DeleteScheduledAction", - "application-autoscaling:DeregisterScalableTarget", - "application-autoscaling:Describe*", - "application-autoscaling:PutScalingPolicy", - "application-autoscaling:PutScheduledAction", - "application-autoscaling:RegisterScalableTarget", - "kinesis:ListStreams", - "kinesis:DescribeStream", - "kinesis:PutRecords", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:ListAliases", - "kms:RevokeGrant", - "cloudwatch:PutMetricData" - ], - "timeoutInMinutes": 1200 - } - }, - "primaryIdentifier": [ - "/properties/TableName" - ], - "properties": { - "Arn": { - "type": "string" - }, - "AttributeDefinitions": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AttributeDefinition" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "BillingMode": { - "type": "string" - }, - "GlobalSecondaryIndexes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/GlobalSecondaryIndex" - }, - "type": "array", - "uniqueItems": true - }, - "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "LocalSecondaryIndexes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LocalSecondaryIndex" - }, - "type": "array", - "uniqueItems": true - }, - "Replicas": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ReplicaSpecification" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "SSESpecification": { - "$ref": "#/definitions/SSESpecification" - }, - "StreamArn": { - "type": "string" - }, - "StreamSpecification": { - "$ref": "#/definitions/StreamSpecification" - }, - "TableId": { - "type": "string" - }, - "TableName": { - "type": "string" - }, - "TimeToLiveSpecification": { - "$ref": "#/definitions/TimeToLiveSpecification" - }, - "WarmThroughput": { - "$ref": "#/definitions/WarmThroughput" - }, - "WriteOnDemandThroughputSettings": { - "$ref": "#/definitions/WriteOnDemandThroughputSettings" - }, - "WriteProvisionedThroughputSettings": { - "$ref": "#/definitions/WriteProvisionedThroughputSettings" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/StreamArn", - "/properties/TableId" - ], - "required": [ - "KeySchema", - "AttributeDefinitions", - "Replicas" - ], - "typeName": "AWS::DynamoDB::GlobalTable", - "writeOnlyProperties": [ - "/properties/Replicas/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", - "/properties/Replicas/*/GlobalSecondaryIndexes/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", - "/properties/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity", - "/properties/GlobalSecondaryIndexes/*/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/Arn" + ], + [ + "/properties/StreamArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LocalSecondaryIndexes", + "/properties/TableName", + "/properties/KeySchema" + ], + "definitions": { + "AttributeDefinition": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "AttributeType": { + "type": "string" + } + }, + "required": [ + "AttributeName", + "AttributeType" + ], + "type": "object" + }, + "CapacityAutoScalingSettings": { + "additionalProperties": false, + "properties": { + "MaxCapacity": { + "minimum": 1, + "type": "integer" + }, + "MinCapacity": { + "minimum": 1, + "type": "integer" + }, + "SeedCapacity": { + "minimum": 1, + "type": "integer" + }, + "TargetTrackingScalingPolicyConfiguration": { + "$ref": "#/definitions/TargetTrackingScalingPolicyConfiguration" + } + }, + "required": [ + "MinCapacity", + "MaxCapacity", + "TargetTrackingScalingPolicyConfiguration" + ], + "type": "object" + }, + "ContributorInsightsSpecification": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "GlobalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "KeySchema": { + "items": { + "$ref": "#/definitions/KeySchema" + }, + "maxItems": 2, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Projection": { + "$ref": "#/definitions/Projection" + }, + "WarmThroughput": { + "$ref": "#/definitions/WarmThroughput" + }, + "WriteOnDemandThroughputSettings": { + "$ref": "#/definitions/WriteOnDemandThroughputSettings" + }, + "WriteProvisionedThroughputSettings": { + "$ref": "#/definitions/WriteProvisionedThroughputSettings" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "KeySchema": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "type": "string" + } + }, + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "KinesisStreamSpecification": { + "additionalProperties": false, + "properties": { + "ApproximateCreationDateTimePrecision": { + "enum": [ + "MICROSECOND", + "MILLISECOND" + ], + "type": "string" + }, + "StreamArn": { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::Kinesis::Stream" + }, + "type": "string" + } + }, + "required": [ + "StreamArn" + ], + "type": "object" + }, + "LocalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "KeySchema": { + "items": { + "$ref": "#/definitions/KeySchema" + }, + "maxItems": 2, + "type": "array", + "uniqueItems": true + }, + "Projection": { + "$ref": "#/definitions/Projection" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "PointInTimeRecoverySpecification": { + "additionalProperties": false, + "dependencies": { + "RecoveryPeriodInDays": [ + "PointInTimeRecoveryEnabled" + ] + }, + "properties": { + "PointInTimeRecoveryEnabled": { + "type": "boolean" + }, + "RecoveryPeriodInDays": { + "maximum": 35, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "Projection": { + "additionalProperties": false, + "properties": { + "NonKeyAttributes": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ProjectionType": { + "type": "string" + } + }, + "type": "object" + }, + "ReadOnDemandThroughputSettings": { + "additionalProperties": false, + "properties": { + "MaxReadRequestUnits": { + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "ReadProvisionedThroughputSettings": { + "additionalProperties": false, + "properties": { + "ReadCapacityAutoScalingSettings": { + "$ref": "#/definitions/CapacityAutoScalingSettings" + }, + "ReadCapacityUnits": { + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "ReplicaGlobalSecondaryIndexSpecification": { + "additionalProperties": false, + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "ReadOnDemandThroughputSettings": { + "$ref": "#/definitions/ReadOnDemandThroughputSettings" + }, + "ReadProvisionedThroughputSettings": { + "$ref": "#/definitions/ReadProvisionedThroughputSettings" + } + }, + "required": [ + "IndexName" + ], + "type": "object" + }, + "ReplicaSSESpecification": { + "additionalProperties": false, + "properties": { + "KMSMasterKeyId": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::KMS::Key" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/KeyId", + "typeName": "AWS::KMS::Key" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/AliasName", + "typeName": "AWS::KMS::Alias" + } + } + ], + "type": "string" + } + }, + "required": [ + "KMSMasterKeyId" + ], + "type": "object" + }, + "ReplicaSpecification": { + "additionalProperties": false, + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "DeletionProtectionEnabled": { + "type": "boolean" + }, + "GlobalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicaGlobalSecondaryIndexSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "KinesisStreamSpecification": { + "$ref": "#/definitions/KinesisStreamSpecification" + }, + "PointInTimeRecoverySpecification": { + "$ref": "#/definitions/PointInTimeRecoverySpecification" + }, + "ReadOnDemandThroughputSettings": { + "$ref": "#/definitions/ReadOnDemandThroughputSettings" + }, + "ReadProvisionedThroughputSettings": { + "$ref": "#/definitions/ReadProvisionedThroughputSettings" + }, + "Region": { + "type": "string" + }, + "ReplicaStreamSpecification": { + "$ref": "#/definitions/ReplicaStreamSpecification" + }, + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, + "SSESpecification": { + "$ref": "#/definitions/ReplicaSSESpecification" + }, + "TableClass": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Region" + ], + "type": "object" + }, + "ReplicaStreamSpecification": { + "additionalProperties": false, + "properties": { + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + } + }, + "required": [ + "ResourcePolicy" + ], + "type": "object" + }, + "ResourcePolicy": { + "additionalProperties": false, + "properties": { + "PolicyDocument": { + "type": "object" + } + }, + "required": [ + "PolicyDocument" + ], + "type": "object" + }, + "SSESpecification": { + "additionalProperties": false, + "properties": { + "SSEEnabled": { + "type": "boolean" + }, + "SSEType": { + "type": "string" + } + }, + "required": [ + "SSEEnabled" + ], + "type": "object" + }, + "StreamSpecification": { + "additionalProperties": false, + "properties": { + "StreamViewType": { + "type": "string" + } + }, + "required": [ + "StreamViewType" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TargetTrackingScalingPolicyConfiguration": { + "additionalProperties": false, + "properties": { + "DisableScaleIn": { + "type": "boolean" + }, + "ScaleInCooldown": { + "minimum": 0, + "type": "integer" + }, + "ScaleOutCooldown": { + "minimum": 0, + "type": "integer" + }, + "TargetValue": { + "format": "double", + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + }, + "TimeToLiveSpecification": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "WarmThroughput": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "ReadUnitsPerSecond" + ] + }, + { + "required": [ + "WriteUnitsPerSecond" + ] + } + ], + "properties": { + "ReadUnitsPerSecond": { + "minimum": 1, + "type": "integer" + }, + "WriteUnitsPerSecond": { + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "WriteOnDemandThroughputSettings": { + "additionalProperties": false, + "properties": { + "MaxWriteRequestUnits": { + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "WriteProvisionedThroughputSettings": { + "additionalProperties": false, + "properties": { + "WriteCapacityAutoScalingSettings": { + "$ref": "#/definitions/CapacityAutoScalingSettings" + } + }, + "type": "object" + } + }, + "description": "Version: None. Resource Type definition for AWS::DynamoDB::GlobalTable", + "handlers": { + "create": { + "permissions": [ + "dynamodb:CreateTable", + "dynamodb:CreateTableReplica", + "dynamodb:Describe*", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateContinuousBackups", + "dynamodb:ListTagsOfResource", + "dynamodb:Query", + "dynamodb:Scan", + "dynamodb:UpdateItem", + "dynamodb:PutItem", + "dynamodb:GetItem", + "dynamodb:DeleteItem", + "dynamodb:BatchWriteItem", + "dynamodb:TagResource", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:UpdateTableReplicaAutoScaling", + "dynamodb:TagResource", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget", + "kinesis:ListStreams", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:Decrypt", + "kms:RevokeGrant", + "cloudwatch:PutMetricData", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:DeleteTable", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget" + ] + }, + "list": { + "permissions": [ + "dynamodb:ListTables", + "cloudwatch:PutMetricData" + ] + }, + "read": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:GetResourcePolicy", + "application-autoscaling:Describe*", + "cloudwatch:PutMetricData", + "dynamodb:ListTagsOfResource", + "kms:DescribeKey" + ] + }, + "update": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:CreateTableReplica", + "dynamodb:UpdateTable", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContinuousBackups", + "dynamodb:UpdateContributorInsights", + "dynamodb:ListTagsOfResource", + "dynamodb:Query", + "dynamodb:Scan", + "dynamodb:UpdateItem", + "dynamodb:PutItem", + "dynamodb:GetItem", + "dynamodb:DeleteItem", + "dynamodb:BatchWriteItem", + "dynamodb:DeleteTable", + "dynamodb:DeleteTableReplica", + "dynamodb:UpdateItem", + "dynamodb:TagResource", + "dynamodb:UntagResource", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:UpdateTableReplicaAutoScaling", + "dynamodb:UpdateKinesisStreamingDestination", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "dynamodb:DeleteResourcePolicy", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget", + "kinesis:ListStreams", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:RevokeGrant", + "cloudwatch:PutMetricData" + ], + "timeoutInMinutes": 1200 + } + }, + "primaryIdentifier": [ + "/properties/TableName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AttributeDefinitions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AttributeDefinition" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "BillingMode": { + "type": "string" + }, + "GlobalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/GlobalSecondaryIndex" + }, + "type": "array", + "uniqueItems": true + }, + "KeySchema": { + "items": { + "$ref": "#/definitions/KeySchema" + }, + "maxItems": 2, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "LocalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LocalSecondaryIndex" + }, + "type": "array", + "uniqueItems": true + }, + "Replicas": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicaSpecification" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "SSESpecification": { + "$ref": "#/definitions/SSESpecification" + }, + "StreamArn": { + "type": "string" + }, + "StreamSpecification": { + "$ref": "#/definitions/StreamSpecification" + }, + "TableId": { + "type": "string" + }, + "TableName": { + "type": "string" + }, + "TimeToLiveSpecification": { + "$ref": "#/definitions/TimeToLiveSpecification" + }, + "WarmThroughput": { + "$ref": "#/definitions/WarmThroughput" + }, + "WriteOnDemandThroughputSettings": { + "$ref": "#/definitions/WriteOnDemandThroughputSettings" + }, + "WriteProvisionedThroughputSettings": { + "$ref": "#/definitions/WriteProvisionedThroughputSettings" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/StreamArn", + "/properties/TableId" + ], + "required": [ + "KeySchema", + "AttributeDefinitions", + "Replicas" + ], + "typeName": "AWS::DynamoDB::GlobalTable", + "writeOnlyProperties": [ + "/properties/Replicas/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", + "/properties/Replicas/*/GlobalSecondaryIndexes/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", + "/properties/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity", + "/properties/GlobalSecondaryIndexes/*/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity" + ] +} diff --git a/src/schema/aws-dynamodb-table.json b/src/schema/aws-dynamodb-table.json index fe5af167..029cf0d5 100644 --- a/src/schema/aws-dynamodb-table.json +++ b/src/schema/aws-dynamodb-table.json @@ -1,718 +1,734 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TableName", - "/properties/ImportSourceSpecification" - ], - "definitions": { - "AttributeDefinition": { - "additionalProperties": false, - "description": "Represents an attribute for describing the schema for the table and indexes.", - "properties": { - "AttributeName": { - "description": "A name for the attribute.", - "type": "string" - }, - "AttributeType": { - "description": "The data type for the attribute, where:\n + ``S`` - the attribute is of type String\n + ``N`` - the attribute is of type Number\n + ``B`` - the attribute is of type Binary", - "type": "string" - } - }, - "required": [ - "AttributeName", - "AttributeType" - ], - "type": "object" - }, - "ContributorInsightsSpecification": { - "additionalProperties": false, - "description": "The settings used to enable or disable CloudWatch Contributor Insights.", - "properties": { - "Enabled": { - "description": "Indicates whether CloudWatch Contributor Insights are to be enabled (true) or disabled (false).", - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "Csv": { - "additionalProperties": false, - "description": "The options for imported source files in CSV format. The values are Delimiter and HeaderList.", - "properties": { - "Delimiter": { - "description": "The delimiter used for separating items in the CSV file being imported.", - "type": "string" - }, - "HeaderList": { - "description": "List of the headers used to specify a common header for all source CSV files being imported. If this field is specified then the first line of each CSV file is treated as data instead of the header. If this field is not specified the the first line of each CSV file is treated as the header.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "DeprecatedHashKeyElement": { - "additionalProperties": false, - "description": "", - "properties": { - "AttributeName": { - "type": "string" - }, - "AttributeType": { - "type": "string" - } - }, - "required": [ - "AttributeType", - "AttributeName" - ], - "type": "object" - }, - "DeprecatedKeySchema": { - "additionalProperties": false, - "description": "", - "properties": { - "HashKeyElement": { - "$ref": "#/definitions/DeprecatedHashKeyElement" - } - }, - "required": [ - "HashKeyElement" - ], - "type": "object" - }, - "GlobalSecondaryIndex": { - "additionalProperties": false, - "description": "Represents the properties of a global secondary index.", - "properties": { - "ContributorInsightsSpecification": { - "$ref": "#/definitions/ContributorInsightsSpecification", - "description": "The settings used to enable or disable CloudWatch Contributor Insights for the specified global secondary index." - }, - "IndexName": { - "description": "The name of the global secondary index. The name must be unique among all other indexes on this table.", - "type": "string" - }, - "KeySchema": { - "description": "The complete key schema for a global secondary index, which consists of one or more pairs of attribute names and key types:\n + ``HASH`` - partition key\n + ``RANGE`` - sort key\n \n The partition key of an item is also known as its *hash attribute*. The term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values.\n The sort key of an item is also known as its *range attribute*. The term \"range attribute\" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value.", - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true - }, - "OnDemandThroughput": { - "$ref": "#/definitions/OnDemandThroughput", - "description": "The maximum number of read and write units for the specified global secondary index. If you use this parameter, you must specify ``MaxReadRequestUnits``, ``MaxWriteRequestUnits``, or both." - }, - "Projection": { - "$ref": "#/definitions/Projection", - "description": "Represents attributes that are copied (projected) from the table into the global secondary index. These are in addition to the primary key attributes and index key attributes, which are automatically projected." - }, - "ProvisionedThroughput": { - "$ref": "#/definitions/ProvisionedThroughput", - "description": "Represents the provisioned throughput settings for the specified global secondary index.\n For current minimum and maximum provisioned throughput values, see [Service, Account, and Table Quotas](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html) in the *Amazon DynamoDB Developer Guide*." - }, - "WarmThroughput": { - "$ref": "#/definitions/WarmThroughput", - "description": "" - } - }, - "required": [ - "IndexName", - "Projection", - "KeySchema" - ], - "type": "object" - }, - "ImportSourceSpecification": { - "additionalProperties": false, - "description": "Specifies the properties of data being imported from the S3 bucket source to the table.", - "properties": { - "InputCompressionType": { - "description": "Type of compression to be used on the input coming from the imported table.", - "type": "string" - }, - "InputFormat": { - "description": "The format of the source data. Valid values for ``ImportFormat`` are ``CSV``, ``DYNAMODB_JSON`` or ``ION``.", - "type": "string" - }, - "InputFormatOptions": { - "$ref": "#/definitions/InputFormatOptions", - "description": "Additional properties that specify how the input is formatted," - }, - "S3BucketSource": { - "$ref": "#/definitions/S3BucketSource", - "description": "The S3 bucket that provides the source for the import." - } - }, - "required": [ - "S3BucketSource", - "InputFormat" - ], - "type": "object" - }, - "InputFormatOptions": { - "additionalProperties": false, - "description": "The format options for the data that was imported into the target table. There is one value, CsvOption.", - "properties": { - "Csv": { - "$ref": "#/definitions/Csv", - "description": "The options for imported source files in CSV format. The values are Delimiter and HeaderList." - } - }, - "type": "object" - }, - "KeySchema": { - "additionalProperties": false, - "description": "Represents *a single element* of a key schema. A key schema specifies the attributes that make up the primary key of a table, or the key attributes of an index.\n A ``KeySchemaElement`` represents exactly one attribute of the primary key. For example, a simple primary key would be represented by one ``KeySchemaElement`` (for the partition key). A composite primary key would require one ``KeySchemaElement`` for the partition key, and another ``KeySchemaElement`` for the sort key.\n A ``KeySchemaElement`` must be a scalar, top-level attribute (not a nested attribute). The data type must be one of String, Number, or Binary. The attribute cannot be nested within a List or a Map.", - "properties": { - "AttributeName": { - "description": "The name of a key attribute.", - "type": "string" - }, - "KeyType": { - "description": "The role that this key attribute will assume:\n + ``HASH`` - partition key\n + ``RANGE`` - sort key\n \n The partition key of an item is also known as its *hash attribute*. The term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values.\n The sort key of an item is also known as its *range attribute*. The term \"range attribute\" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value.", - "type": "string" - } - }, - "required": [ - "KeyType", - "AttributeName" - ], - "type": "object" - }, - "KinesisStreamSpecification": { - "additionalProperties": false, - "description": "The Kinesis Data Streams configuration for the specified table.", - "properties": { - "ApproximateCreationDateTimePrecision": { - "description": "The precision for the time and date that the stream was created.", - "enum": [ - "MICROSECOND", - "MILLISECOND" - ], - "type": "string" - }, - "StreamArn": { - "description": "The ARN for a specific Kinesis data stream.\n Length Constraints: Minimum length of 37. Maximum length of 1024.", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::Kinesis::Stream" - }, - "type": "string" - } - }, - "required": [ - "StreamArn" - ], - "type": "object" - }, - "LocalSecondaryIndex": { - "additionalProperties": false, - "description": "Represents the properties of a local secondary index. A local secondary index can only be created when its parent table is created.", - "properties": { - "IndexName": { - "description": "The name of the local secondary index. The name must be unique among all other indexes on this table.", - "type": "string" - }, - "KeySchema": { - "description": "The complete key schema for the local secondary index, consisting of one or more pairs of attribute names and key types:\n + ``HASH`` - partition key\n + ``RANGE`` - sort key\n \n The partition key of an item is also known as its *hash attribute*. The term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values.\n The sort key of an item is also known as its *range attribute*. The term \"range attribute\" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value.", - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true - }, - "Projection": { - "$ref": "#/definitions/Projection", - "description": "Represents attributes that are copied (projected) from the table into the local secondary index. These are in addition to the primary key attributes and index key attributes, which are automatically projected." - } - }, - "required": [ - "IndexName", - "Projection", - "KeySchema" - ], - "type": "object" - }, - "OnDemandThroughput": { - "additionalProperties": false, - "description": "Sets the maximum number of read and write units for the specified on-demand table. If you use this property, you must specify ``MaxReadRequestUnits``, ``MaxWriteRequestUnits``, or both.", - "properties": { - "MaxReadRequestUnits": { - "description": "Maximum number of read request units for the specified table.\n To specify a maximum ``OnDemandThroughput`` on your table, set the value of ``MaxReadRequestUnits`` as greater than or equal to 1. To remove the maximum ``OnDemandThroughput`` that is currently set on your table, set the value of ``MaxReadRequestUnits`` to -1.", - "minimum": 1, - "type": "integer" - }, - "MaxWriteRequestUnits": { - "description": "Maximum number of write request units for the specified table.\n To specify a maximum ``OnDemandThroughput`` on your table, set the value of ``MaxWriteRequestUnits`` as greater than or equal to 1. To remove the maximum ``OnDemandThroughput`` that is currently set on your table, set the value of ``MaxWriteRequestUnits`` to -1.", - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "PointInTimeRecoverySpecification": { - "additionalProperties": false, - "description": "The settings used to enable point in time recovery.", - "properties": { - "PointInTimeRecoveryEnabled": { - "description": "Indicates whether point in time recovery is enabled (true) or disabled (false) on the table.", - "type": "boolean" - } - }, - "type": "object" - }, - "Projection": { - "additionalProperties": false, - "description": "Represents attributes that are copied (projected) from the table into an index. These are in addition to the primary key attributes and index key attributes, which are automatically projected.", - "properties": { - "NonKeyAttributes": { - "description": "Represents the non-key attribute names which will be projected into the index.\n For local secondary indexes, the total count of ``NonKeyAttributes`` summed across all of the local secondary indexes, must not exceed 100. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ProjectionType": { - "description": "The set of attributes that are projected into the index:\n + ``KEYS_ONLY`` - Only the index and primary keys are projected into the index.\n + ``INCLUDE`` - In addition to the attributes described in ``KEYS_ONLY``, the secondary index will include other non-key attributes that you specify.\n + ``ALL`` - All of the table attributes are projected into the index.\n \n When using the DynamoDB console, ``ALL`` is selected by default.", - "type": "string" - } - }, - "type": "object" - }, - "ProvisionedThroughput": { - "additionalProperties": false, - "description": "Throughput for the specified table, which consists of values for ``ReadCapacityUnits`` and ``WriteCapacityUnits``. For more information about the contents of a provisioned throughput structure, see [Table ProvisionedThroughput](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html).", - "properties": { - "ReadCapacityUnits": { - "description": "The maximum number of strongly consistent reads consumed per second before DynamoDB returns a ``ThrottlingException``. For more information, see [Specifying Read and Write Requirements](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughput.html) in the *Amazon DynamoDB Developer Guide*.\n If read/write capacity mode is ``PAY_PER_REQUEST`` the value is set to 0.", - "type": "integer" - }, - "WriteCapacityUnits": { - "description": "The maximum number of writes consumed per second before DynamoDB returns a ``ThrottlingException``. For more information, see [Specifying Read and Write Requirements](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughput.html) in the *Amazon DynamoDB Developer Guide*.\n If read/write capacity mode is ``PAY_PER_REQUEST`` the value is set to 0.", - "type": "integer" - } - }, - "required": [ - "WriteCapacityUnits", - "ReadCapacityUnits" - ], - "type": "object" - }, - "ResourcePolicy": { - "additionalProperties": false, - "description": "Creates or updates a resource-based policy document that contains the permissions for DDB resources, such as a table, its indexes, and stream. Resource-based policies let you define access permissions by specifying who has access to each resource, and the actions they are allowed to perform on each resource.\n In a CFNshort template, you can provide the policy in JSON or YAML format because CFNshort converts YAML to JSON before submitting it to DDB. For more information about resource-based policies, see [Using resource-based policies for](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html) and [Resource-based policy examples](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html).\n While defining resource-based policies in your CFNshort templates, the following considerations apply:\n + The maximum size supported for a resource-based policy document in JSON format is 20 KB. DDB counts whitespaces when calculating the size of a policy against this limit. \n + Resource-based policies don't support [drift detection](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html#). If you update a policy outside of the CFNshort stack template, you'll need to update the CFNshort stack with the changes.\n + Resource-based policies don't support out-of-band changes. If you add, update, or delete a policy outside of the CFNshort template, the change won't be overwritten if there are no changes to the policy within the template.\n For example, say that your template contains a resource-based policy, which you later update outside of the template. If you don't make any changes to the policy in the template, the updated policy in DDB won\u2019t be synced with the policy in the template.\n Conversely, say that your template doesn\u2019t contain a resource-based policy, but you add a policy outside of the template. This policy won\u2019t be removed from DDB as long as you don\u2019t add it to the template. When you add a policy to the template and update the stack, the existing policy in DDB will be updated to match the one defined in the template.\n \n For a full list of all considerations, see [Resource-based policy considerations](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-considerations.html).", - "properties": { - "PolicyDocument": { - "description": "A resource-based policy document that contains permissions to add to the specified DDB table, index, or both. In a CFNshort template, you can provide the policy in JSON or YAML format because CFNshort converts YAML to JSON before submitting it to DDB. For more information about resource-based policies, see [Using resource-based policies for](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html) and [Resource-based policy examples](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html).", - "type": "object" - } - }, - "required": [ - "PolicyDocument" - ], - "type": "object" - }, - "S3BucketSource": { - "additionalProperties": false, - "description": "The S3 bucket that is being imported from.", - "properties": { - "S3Bucket": { - "description": "The S3 bucket that is being imported from.", - "relationshipRef": { - "propertyPath": "/properties/BucketName", - "typeName": "AWS::S3::Bucket" - }, - "type": "string" - }, - "S3BucketOwner": { - "description": "The account number of the S3 bucket that is being imported from. If the bucket is owned by the requester this is optional.", - "type": "string" - }, - "S3KeyPrefix": { - "description": "The key prefix shared by all S3 Objects that are being imported.", - "type": "string" - } - }, - "required": [ - "S3Bucket" - ], - "type": "object" - }, - "SSESpecification": { - "additionalProperties": false, - "description": "Represents the settings used to enable server-side encryption.", - "properties": { - "KMSMasterKeyId": { - "anyOf": [ - { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::KMS::Key" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/KeyId", - "typeName": "AWS::KMS::Key" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/AliasName", - "typeName": "AWS::KMS::Alias" - } - } - ], - "description": "The KMS key that should be used for the KMS encryption. To specify a key, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. Note that you should only provide this parameter if the key is different from the default DynamoDB key ``alias/aws/dynamodb``.", - "type": "string" - }, - "SSEEnabled": { - "description": "Indicates whether server-side encryption is done using an AWS managed key or an AWS owned key. If enabled (true), server-side encryption type is set to ``KMS`` and an AWS managed key is used (KMS charges apply). If disabled (false) or not specified, server-side encryption is set to AWS owned key.", - "type": "boolean" - }, - "SSEType": { - "description": "Server-side encryption type. The only supported value is:\n + ``KMS`` - Server-side encryption that uses KMSlong. The key is stored in your account and is managed by KMS (KMS charges apply).", - "type": "string" - } - }, - "required": [ - "SSEEnabled" - ], - "type": "object" - }, - "StreamSpecification": { - "additionalProperties": false, - "description": "Represents the DynamoDB Streams configuration for a table in DynamoDB.", - "properties": { - "ResourcePolicy": { - "$ref": "#/definitions/ResourcePolicy", - "description": "Creates or updates a resource-based policy document that contains the permissions for DDB resources, such as a table's streams. Resource-based policies let you define access permissions by specifying who has access to each resource, and the actions they are allowed to perform on each resource.\n In a CFNshort template, you can provide the policy in JSON or YAML format because CFNshort converts YAML to JSON before submitting it to DDB. For more information about resource-based policies, see [Using resource-based policies for](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html) and [Resource-based policy examples](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html)." - }, - "StreamViewType": { - "description": "When an item in the table is modified, ``StreamViewType`` determines what information is written to the stream for this table. Valid values for ``StreamViewType`` are:\n + ``KEYS_ONLY`` - Only the key attributes of the modified item are written to the stream.\n + ``NEW_IMAGE`` - The entire item, as it appears after it was modified, is written to the stream.\n + ``OLD_IMAGE`` - The entire item, as it appeared before it was modified, is written to the stream.\n + ``NEW_AND_OLD_IMAGES`` - Both the new and the old item images of the item are written to the stream.", - "type": "string" - } - }, - "required": [ - "StreamViewType" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Describes a tag. A tag is a key-value pair. You can add up to 50 tags to a single DynamoDB table. \n AWS-assigned tag names and values are automatically assigned the ``aws:`` prefix, which the user cannot assign. AWS-assigned tag names do not count towards the tag limit of 50. User-assigned tag names have the prefix ``user:`` in the Cost Allocation Report. You cannot backdate the application of a tag.\n For an overview on tagging DynamoDB resources, see [Tagging for DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html) in the *Amazon DynamoDB Developer Guide*.", - "properties": { - "Key": { - "description": "The key of the tag. Tag keys are case sensitive. Each DynamoDB table can only have up to one tag with the same key. If you try to add an existing tag (same key), the existing tag value will be updated to the new value.", - "type": "string" - }, - "Value": { - "description": "The value of the tag. Tag values are case-sensitive and can be null.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TimeToLiveSpecification": { - "additionalProperties": false, - "description": "Represents the settings used to enable or disable Time to Live (TTL) for the specified table.", - "properties": { - "AttributeName": { - "description": "The name of the TTL attribute used to store the expiration time for items in the table.\n + The ``AttributeName`` property is required when enabling the TTL, or when TTL is already enabled.\n + To update this property, you must first disable TTL and then enable TTL with the new attribute name.", - "type": "string" - }, - "Enabled": { - "description": "Indicates whether TTL is to be enabled (true) or disabled (false) on the table.", - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "WarmThroughput": { - "additionalProperties": false, - "anyOf": [ - { - "required": [ - "ReadUnitsPerSecond" - ] - }, - { - "required": [ - "WriteUnitsPerSecond" - ] - } - ], - "description": "", - "properties": { - "ReadUnitsPerSecond": { - "minimum": 1, - "type": "integer" - }, - "WriteUnitsPerSecond": { - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "The ``AWS::DynamoDB::Table`` resource creates a DDB table. For more information, see [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html) in the *API Reference*.\n You should be aware of the following behaviors when working with DDB tables:\n + CFNlong typically creates DDB tables in parallel. However, if your template includes multiple DDB tables with indexes, you must declare dependencies so that the tables are created sequentially. DDBlong limits the number of tables with secondary indexes that are in the creating state. If you create multiple tables with indexes at the same time, DDB returns an error and the stack operation fails. For an example, see [DynamoDB Table with a DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#aws-resource-dynamodb-table--examples--DynamoDB_Table_with_a_DependsOn_Attribute).\n \n Our guidance is to use the latest schema documented for your CFNlong templates. This schema supports the provisioning of all table settings below. When using this schema in your CFNlong templates, please ensure that your Identity and Access Management (IAM) policies are updated with appropriate permissions to allow for the authorization of these setting changes.", - "handlers": { - "create": { - "permissions": [ - "dynamodb:CreateTable", - "dynamodb:DescribeImport", - "dynamodb:DescribeTable", - "dynamodb:DescribeTimeToLive", - "dynamodb:UpdateTimeToLive", - "dynamodb:UpdateContributorInsights", - "dynamodb:UpdateContinuousBackups", - "dynamodb:DescribeContinuousBackups", - "dynamodb:DescribeContributorInsights", - "dynamodb:EnableKinesisStreamingDestination", - "dynamodb:DisableKinesisStreamingDestination", - "dynamodb:DescribeKinesisStreamingDestination", - "dynamodb:ImportTable", - "dynamodb:ListTagsOfResource", - "dynamodb:TagResource", - "dynamodb:UpdateTable", - "dynamodb:GetResourcePolicy", - "dynamodb:PutResourcePolicy", - "kinesis:DescribeStream", - "kinesis:PutRecords", - "iam:CreateServiceLinkedRole", - "kms:CreateGrant", - "kms:Decrypt", - "kms:DescribeKey", - "kms:ListAliases", - "kms:Encrypt", - "kms:RevokeGrant", - "logs:CreateLogGroup", - "logs:CreateLogStream", - "logs:DescribeLogGroups", - "logs:DescribeLogStreams", - "logs:PutLogEvents", - "logs:PutRetentionPolicy", - "s3:GetObject", - "s3:GetObjectMetadata", - "s3:ListBucket" - ], - "timeoutInMinutes": 720 - }, - "delete": { - "permissions": [ - "dynamodb:DeleteTable", - "dynamodb:DescribeTable" - ], - "timeoutInMinutes": 720 - }, - "list": { - "permissions": [ - "dynamodb:ListTables" - ] - }, - "read": { - "permissions": [ - "dynamodb:DescribeTable", - "dynamodb:DescribeContinuousBackups", - "dynamodb:DescribeContributorInsights", - "dynamodb:DescribeKinesisStreamingDestination", - "dynamodb:ListTagsOfResource", - "dynamodb:GetResourcePolicy" - ] - }, - "update": { - "permissions": [ - "dynamodb:UpdateTable", - "dynamodb:DescribeTable", - "dynamodb:DescribeTimeToLive", - "dynamodb:UpdateTimeToLive", - "dynamodb:UpdateContinuousBackups", - "dynamodb:UpdateContributorInsights", - "dynamodb:UpdateKinesisStreamingDestination", - "dynamodb:DescribeContinuousBackups", - "dynamodb:DescribeKinesisStreamingDestination", - "dynamodb:ListTagsOfResource", - "dynamodb:TagResource", - "dynamodb:UntagResource", - "dynamodb:DescribeContributorInsights", - "dynamodb:EnableKinesisStreamingDestination", - "dynamodb:DisableKinesisStreamingDestination", - "dynamodb:GetResourcePolicy", - "dynamodb:PutResourcePolicy", - "dynamodb:DeleteResourcePolicy", - "kinesis:DescribeStream", - "kinesis:PutRecords", - "iam:CreateServiceLinkedRole", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:ListAliases", - "kms:RevokeGrant" - ], - "timeoutInMinutes": 720 - } - }, - "primaryIdentifier": [ - "/properties/TableName" - ], - "properties": { - "Arn": { - "description": "", - "type": "string" - }, - "AttributeDefinitions": { - "description": "A list of attributes that describe the key schema for the table and indexes.\n This property is required to create a DDB table.\n Update requires: [Some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt). Replacement if you edit an existing AttributeDefinition.", - "items": { - "$ref": "#/definitions/AttributeDefinition" - }, - "type": "array", - "uniqueItems": true - }, - "BillingMode": { - "description": "Specify how you are charged for read and write throughput and how you manage capacity.\n Valid values include:\n + ``PROVISIONED`` - We recommend using ``PROVISIONED`` for predictable workloads. ``PROVISIONED`` sets the billing mode to [Provisioned Mode](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.ProvisionedThroughput.Manual).\n + ``PAY_PER_REQUEST`` - We recommend using ``PAY_PER_REQUEST`` for unpredictable workloads. ``PAY_PER_REQUEST`` sets the billing mode to [On-Demand Mode](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand).\n \n If not specified, the default is ``PROVISIONED``.", - "type": "string" - }, - "ContributorInsightsSpecification": { - "$ref": "#/definitions/ContributorInsightsSpecification", - "description": "The settings used to enable or disable CloudWatch Contributor Insights for the specified table." - }, - "DeletionProtectionEnabled": { - "description": "Determines if a table is protected from deletion. When enabled, the table cannot be deleted by any user or process. This setting is disabled by default. For more information, see [Using deletion protection](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.Basics.html#WorkingWithTables.Basics.DeletionProtection) in the *Developer Guide*.", - "type": "boolean" - }, - "GlobalSecondaryIndexes": { - "description": "Global secondary indexes to be created on the table. You can create up to 20 global secondary indexes.\n If you update a table to include a new global secondary index, CFNlong initiates the index creation and then proceeds with the stack update. CFNlong doesn't wait for the index to complete creation because the backfilling phase can take a long time, depending on the size of the table. You can't use the index or update the table until the index's status is ``ACTIVE``. You can track its status by using the DynamoDB [DescribeTable](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/describe-table.html) command.\n If you add or delete an index during an update, we recommend that you don't update any other resources. If your stack fails to update and is rolled back while adding a new index, you must manually delete the index. \n Updates are not supported. The following are exceptions:\n + If you update either the contributor insights specification or the provisioned throughput values of global secondary indexes, you can update the table without interruption.\n + You can delete or add one global secondary index without interruption. If you do both in the same update (for example, by changing the index's logical ID), the update fails.", - "items": { - "$ref": "#/definitions/GlobalSecondaryIndex" - }, - "type": "array", - "uniqueItems": false - }, - "ImportSourceSpecification": { - "$ref": "#/definitions/ImportSourceSpecification", - "description": "Specifies the properties of data being imported from the S3 bucket source to the table.\n If you specify the ``ImportSourceSpecification`` property, and also specify either the ``StreamSpecification``, the ``TableClass`` property, or the ``DeletionProtectionEnabled`` property, the IAM entity creating/updating stack must have ``UpdateTable`` permission." - }, - "KeySchema": { - "description": "Specifies the attributes that make up the primary key for the table. The attributes in the ``KeySchema`` property must also be defined in the ``AttributeDefinitions`` property.", - "oneOf": [ - { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true - }, - { - "type": "object" - } - ] - }, - "KinesisStreamSpecification": { - "$ref": "#/definitions/KinesisStreamSpecification", - "description": "The Kinesis Data Streams configuration for the specified table." - }, - "LocalSecondaryIndexes": { - "description": "Local secondary indexes to be created on the table. You can create up to 5 local secondary indexes. Each index is scoped to a given hash key value. The size of each hash key can be up to 10 gigabytes.", - "items": { - "$ref": "#/definitions/LocalSecondaryIndex" - }, - "type": "array", - "uniqueItems": false - }, - "OnDemandThroughput": { - "$ref": "#/definitions/OnDemandThroughput", - "description": "Sets the maximum number of read and write units for the specified on-demand table. If you use this property, you must specify ``MaxReadRequestUnits``, ``MaxWriteRequestUnits``, or both." - }, - "PointInTimeRecoverySpecification": { - "$ref": "#/definitions/PointInTimeRecoverySpecification", - "description": "The settings used to enable point in time recovery." - }, - "ProvisionedThroughput": { - "$ref": "#/definitions/ProvisionedThroughput", - "description": "Throughput for the specified table, which consists of values for ``ReadCapacityUnits`` and ``WriteCapacityUnits``. For more information about the contents of a provisioned throughput structure, see [Amazon DynamoDB Table ProvisionedThroughput](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html). \n If you set ``BillingMode`` as ``PROVISIONED``, you must specify this property. If you set ``BillingMode`` as ``PAY_PER_REQUEST``, you cannot specify this property." - }, - "ResourcePolicy": { - "$ref": "#/definitions/ResourcePolicy", - "description": "A resource-based policy document that contains permissions to add to the specified table. In a CFNshort template, you can provide the policy in JSON or YAML format because CFNshort converts YAML to JSON before submitting it to DDB. For more information about resource-based policies, see [Using resource-based policies for](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html) and [Resource-based policy examples](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html).\n When you attach a resource-based policy while creating a table, the policy creation is *strongly consistent*. For information about the considerations that you should keep in mind while attaching a resource-based policy, see [Resource-based policy considerations](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-considerations.html)." - }, - "SSESpecification": { - "$ref": "#/definitions/SSESpecification", - "description": "Specifies the settings to enable server-side encryption." - }, - "StreamArn": { - "description": "", - "type": "string" - }, - "StreamSpecification": { - "$ref": "#/definitions/StreamSpecification", - "description": "The settings for the DDB table stream, which capture changes to items stored in the table." - }, - "TableClass": { - "description": "The table class of the new table. Valid values are ``STANDARD`` and ``STANDARD_INFREQUENT_ACCESS``.", - "type": "string" - }, - "TableName": { - "description": "A name for the table. If you don't specify a name, CFNlong generates a unique physical ID and uses that ID for the table name. For more information, see [Name Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.\n For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TimeToLiveSpecification": { - "$ref": "#/definitions/TimeToLiveSpecification", - "description": "Specifies the Time to Live (TTL) settings for the table.\n For detailed information about the limits in DynamoDB, see [Limits in Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html) in the Amazon DynamoDB Developer Guide." - }, - "WarmThroughput": { - "$ref": "#/definitions/WarmThroughput", - "description": "" - } - }, - "propertyTransform": { - "/properties/SSESpecification/KMSMasterKeyId": "$join([\"arn:aws(-[a-z]{1,4}){0,2}:kms:[a-z]{2,4}(-[a-z]{1,4})?-[a-z]{1,10}-[0-9]:[0-9]{12}:key\\/\", SSESpecification.KMSMasterKeyId]) $OR $join([\"arn:aws(-[a-z]{1,4}){0,2}:kms:[a-z]{2,4}(-[a-z]{1,4})?-[a-z]{1,10}-[0-9]:[0-9]{12}:key\\/\", KMSMasterKeyId])" - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/StreamArn" - ], - "required": [ - "KeySchema" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "dynamodb:TagResource", - "dynamodb:UntagResource", - "dynamodb:ListTagsOfResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DynamoDB::Table", - "writeOnlyProperties": [ - "/properties/ImportSourceSpecification" - ] -} +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/KeySchema" + ], + "createOnlyProperties": [ + "/properties/TableName", + "/properties/ImportSourceSpecification" + ], + "definitions": { + "AttributeDefinition": { + "additionalProperties": false, + "description": "Represents an attribute for describing the schema for the table and indexes.", + "properties": { + "AttributeName": { + "description": "A name for the attribute.", + "type": "string" + }, + "AttributeType": { + "description": "The data type for the attribute, where:\n + ``S`` - the attribute is of type String\n + ``N`` - the attribute is of type Number\n + ``B`` - the attribute is of type Binary", + "type": "string" + } + }, + "required": [ + "AttributeName", + "AttributeType" + ], + "type": "object" + }, + "ContributorInsightsSpecification": { + "additionalProperties": false, + "description": "The settings used to enable or disable CloudWatch Contributor Insights.", + "properties": { + "Enabled": { + "description": "Indicates whether CloudWatch Contributor Insights are to be enabled (true) or disabled (false).", + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "Csv": { + "additionalProperties": false, + "description": "The options for imported source files in CSV format. The values are Delimiter and HeaderList.", + "properties": { + "Delimiter": { + "description": "The delimiter used for separating items in the CSV file being imported.", + "type": "string" + }, + "HeaderList": { + "description": "List of the headers used to specify a common header for all source CSV files being imported. If this field is specified then the first line of each CSV file is treated as data instead of the header. If this field is not specified the the first line of each CSV file is treated as the header.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "DeprecatedHashKeyElement": { + "additionalProperties": false, + "description": "", + "properties": { + "AttributeName": { + "type": "string" + }, + "AttributeType": { + "type": "string" + } + }, + "required": [ + "AttributeType", + "AttributeName" + ], + "type": "object" + }, + "DeprecatedKeySchema": { + "additionalProperties": false, + "description": "", + "properties": { + "HashKeyElement": { + "$ref": "#/definitions/DeprecatedHashKeyElement" + } + }, + "required": [ + "HashKeyElement" + ], + "type": "object" + }, + "GlobalSecondaryIndex": { + "additionalProperties": false, + "description": "Represents the properties of a global secondary index.", + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification", + "description": "The settings used to enable or disable CloudWatch Contributor Insights for the specified global secondary index." + }, + "IndexName": { + "description": "The name of the global secondary index. The name must be unique among all other indexes on this table.", + "type": "string" + }, + "KeySchema": { + "description": "The complete key schema for a global secondary index, which consists of one or more pairs of attribute names and key types:\n + ``HASH`` - partition key\n + ``RANGE`` - sort key\n \n The partition key of an item is also known as its *hash attribute*. The term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values.\n The sort key of an item is also known as its *range attribute*. The term \"range attribute\" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value.", + "items": { + "$ref": "#/definitions/KeySchema" + }, + "type": "array", + "uniqueItems": true + }, + "OnDemandThroughput": { + "$ref": "#/definitions/OnDemandThroughput", + "description": "The maximum number of read and write units for the specified global secondary index. If you use this parameter, you must specify ``MaxReadRequestUnits``, ``MaxWriteRequestUnits``, or both." + }, + "Projection": { + "$ref": "#/definitions/Projection", + "description": "Represents attributes that are copied (projected) from the table into the global secondary index. These are in addition to the primary key attributes and index key attributes, which are automatically projected." + }, + "ProvisionedThroughput": { + "$ref": "#/definitions/ProvisionedThroughput", + "description": "Represents the provisioned throughput settings for the specified global secondary index.\n For current minimum and maximum provisioned throughput values, see [Service, Account, and Table Quotas](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html) in the *Amazon DynamoDB Developer Guide*." + }, + "WarmThroughput": { + "$ref": "#/definitions/WarmThroughput", + "description": "Represents the warm throughput value (in read units per second and write units per second) for the specified secondary index. If you use this parameter, you must specify ``ReadUnitsPerSecond``, ``WriteUnitsPerSecond``, or both." + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "ImportSourceSpecification": { + "additionalProperties": false, + "description": "Specifies the properties of data being imported from the S3 bucket source to the table.", + "properties": { + "InputCompressionType": { + "description": "Type of compression to be used on the input coming from the imported table.", + "type": "string" + }, + "InputFormat": { + "description": "The format of the source data. Valid values for ``ImportFormat`` are ``CSV``, ``DYNAMODB_JSON`` or ``ION``.", + "type": "string" + }, + "InputFormatOptions": { + "$ref": "#/definitions/InputFormatOptions", + "description": "Additional properties that specify how the input is formatted," + }, + "S3BucketSource": { + "$ref": "#/definitions/S3BucketSource", + "description": "The S3 bucket that provides the source for the import." + } + }, + "required": [ + "S3BucketSource", + "InputFormat" + ], + "type": "object" + }, + "InputFormatOptions": { + "additionalProperties": false, + "description": "The format options for the data that was imported into the target table. There is one value, CsvOption.", + "properties": { + "Csv": { + "$ref": "#/definitions/Csv", + "description": "The options for imported source files in CSV format. The values are Delimiter and HeaderList." + } + }, + "type": "object" + }, + "KeySchema": { + "additionalProperties": false, + "description": "Represents *a single element* of a key schema. A key schema specifies the attributes that make up the primary key of a table, or the key attributes of an index.\n A ``KeySchemaElement`` represents exactly one attribute of the primary key. For example, a simple primary key would be represented by one ``KeySchemaElement`` (for the partition key). A composite primary key would require one ``KeySchemaElement`` for the partition key, and another ``KeySchemaElement`` for the sort key.\n A ``KeySchemaElement`` must be a scalar, top-level attribute (not a nested attribute). The data type must be one of String, Number, or Binary. The attribute cannot be nested within a List or a Map.", + "properties": { + "AttributeName": { + "description": "The name of a key attribute.", + "type": "string" + }, + "KeyType": { + "description": "The role that this key attribute will assume:\n + ``HASH`` - partition key\n + ``RANGE`` - sort key\n \n The partition key of an item is also known as its *hash attribute*. The term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values.\n The sort key of an item is also known as its *range attribute*. The term \"range attribute\" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value.", + "type": "string" + } + }, + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "KinesisStreamSpecification": { + "additionalProperties": false, + "description": "The Kinesis Data Streams configuration for the specified table.", + "properties": { + "ApproximateCreationDateTimePrecision": { + "description": "The precision for the time and date that the stream was created.", + "enum": [ + "MICROSECOND", + "MILLISECOND" + ], + "type": "string" + }, + "StreamArn": { + "description": "The ARN for a specific Kinesis data stream.\n Length Constraints: Minimum length of 37. Maximum length of 1024.", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::Kinesis::Stream" + }, + "type": "string" + } + }, + "required": [ + "StreamArn" + ], + "type": "object" + }, + "LocalSecondaryIndex": { + "additionalProperties": false, + "description": "Represents the properties of a local secondary index. A local secondary index can only be created when its parent table is created.", + "properties": { + "IndexName": { + "description": "The name of the local secondary index. The name must be unique among all other indexes on this table.", + "type": "string" + }, + "KeySchema": { + "description": "The complete key schema for the local secondary index, consisting of one or more pairs of attribute names and key types:\n + ``HASH`` - partition key\n + ``RANGE`` - sort key\n \n The partition key of an item is also known as its *hash attribute*. The term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values.\n The sort key of an item is also known as its *range attribute*. The term \"range attribute\" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value.", + "items": { + "$ref": "#/definitions/KeySchema" + }, + "type": "array", + "uniqueItems": true + }, + "Projection": { + "$ref": "#/definitions/Projection", + "description": "Represents attributes that are copied (projected) from the table into the local secondary index. These are in addition to the primary key attributes and index key attributes, which are automatically projected." + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "OnDemandThroughput": { + "additionalProperties": false, + "description": "Sets the maximum number of read and write units for the specified on-demand table. If you use this property, you must specify ``MaxReadRequestUnits``, ``MaxWriteRequestUnits``, or both.", + "properties": { + "MaxReadRequestUnits": { + "description": "Maximum number of read request units for the specified table.\n To specify a maximum ``OnDemandThroughput`` on your table, set the value of ``MaxReadRequestUnits`` as greater than or equal to 1. To remove the maximum ``OnDemandThroughput`` that is currently set on your table, set the value of ``MaxReadRequestUnits`` to -1.", + "minimum": 1, + "type": "integer" + }, + "MaxWriteRequestUnits": { + "description": "Maximum number of write request units for the specified table.\n To specify a maximum ``OnDemandThroughput`` on your table, set the value of ``MaxWriteRequestUnits`` as greater than or equal to 1. To remove the maximum ``OnDemandThroughput`` that is currently set on your table, set the value of ``MaxWriteRequestUnits`` to -1.", + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "PointInTimeRecoverySpecification": { + "additionalProperties": false, + "dependencies": { + "RecoveryPeriodInDays": [ + "PointInTimeRecoveryEnabled" + ] + }, + "description": "The settings used to enable point in time recovery.", + "properties": { + "PointInTimeRecoveryEnabled": { + "description": "Indicates whether point in time recovery is enabled (true) or disabled (false) on the table.", + "type": "boolean" + }, + "RecoveryPeriodInDays": { + "description": "The number of preceding days for which continuous backups are taken and maintained. Your table data is only recoverable to any point-in-time from within the configured recovery period. This parameter is optional. If no value is provided, the value will default to 35.", + "maximum": 35, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "Projection": { + "additionalProperties": false, + "description": "Represents attributes that are copied (projected) from the table into an index. These are in addition to the primary key attributes and index key attributes, which are automatically projected.", + "properties": { + "NonKeyAttributes": { + "description": "Represents the non-key attribute names which will be projected into the index.\n For global and local secondary indexes, the total count of ``NonKeyAttributes`` summed across all of the secondary indexes, must not exceed 100. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total. This limit only applies when you specify the ProjectionType of ``INCLUDE``. You still can specify the ProjectionType of ``ALL`` to project all attributes from the source table, even if the table has more than 100 attributes.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ProjectionType": { + "description": "The set of attributes that are projected into the index:\n + ``KEYS_ONLY`` - Only the index and primary keys are projected into the index.\n + ``INCLUDE`` - In addition to the attributes described in ``KEYS_ONLY``, the secondary index will include other non-key attributes that you specify.\n + ``ALL`` - All of the table attributes are projected into the index.\n \n When using the DynamoDB console, ``ALL`` is selected by default.", + "type": "string" + } + }, + "type": "object" + }, + "ProvisionedThroughput": { + "additionalProperties": false, + "description": "Throughput for the specified table, which consists of values for ``ReadCapacityUnits`` and ``WriteCapacityUnits``. For more information about the contents of a provisioned throughput structure, see [Table ProvisionedThroughput](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html).", + "properties": { + "ReadCapacityUnits": { + "description": "The maximum number of strongly consistent reads consumed per second before DynamoDB returns a ``ThrottlingException``. For more information, see [Specifying Read and Write Requirements](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughput.html) in the *Amazon DynamoDB Developer Guide*.\n If read/write capacity mode is ``PAY_PER_REQUEST`` the value is set to 0.", + "type": "integer" + }, + "WriteCapacityUnits": { + "description": "The maximum number of writes consumed per second before DynamoDB returns a ``ThrottlingException``. For more information, see [Specifying Read and Write Requirements](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughput.html) in the *Amazon DynamoDB Developer Guide*.\n If read/write capacity mode is ``PAY_PER_REQUEST`` the value is set to 0.", + "type": "integer" + } + }, + "required": [ + "WriteCapacityUnits", + "ReadCapacityUnits" + ], + "type": "object" + }, + "ResourcePolicy": { + "additionalProperties": false, + "description": "Creates or updates a resource-based policy document that contains the permissions for DDB resources, such as a table, its indexes, and stream. Resource-based policies let you define access permissions by specifying who has access to each resource, and the actions they are allowed to perform on each resource.\n In a CFNshort template, you can provide the policy in JSON or YAML format because CFNshort converts YAML to JSON before submitting it to DDB. For more information about resource-based policies, see [Using resource-based policies for](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html) and [Resource-based policy examples](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html).\n While defining resource-based policies in your CFNshort templates, the following considerations apply:\n + The maximum size supported for a resource-based policy document in JSON format is 20 KB. DDB counts whitespaces when calculating the size of a policy against this limit. \n + Resource-based policies don't support [drift detection](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html#). If you update a policy outside of the CFNshort stack template, you'll need to update the CFNshort stack with the changes.\n + Resource-based policies don't support out-of-band changes. If you add, update, or delete a policy outside of the CFNshort template, the change won't be overwritten if there are no changes to the policy within the template.\n For example, say that your template contains a resource-based policy, which you later update outside of the template. If you don't make any changes to the policy in the template, the updated policy in DDB won\u2019t be synced with the policy in the template.\n Conversely, say that your template doesn\u2019t contain a resource-based policy, but you add a policy outside of the template. This policy won\u2019t be removed from DDB as long as you don\u2019t add it to the template. When you add a policy to the template and update the stack, the existing policy in DDB will be updated to match the one defined in the template.\n \n For a full list of all considerations, see [Resource-based policy considerations](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-considerations.html).", + "properties": { + "PolicyDocument": { + "description": "A resource-based policy document that contains permissions to add to the specified DDB table, index, or both. In a CFNshort template, you can provide the policy in JSON or YAML format because CFNshort converts YAML to JSON before submitting it to DDB. For more information about resource-based policies, see [Using resource-based policies for](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html) and [Resource-based policy examples](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html).", + "type": "object" + } + }, + "required": [ + "PolicyDocument" + ], + "type": "object" + }, + "S3BucketSource": { + "additionalProperties": false, + "description": "The S3 bucket that is being imported from.", + "properties": { + "S3Bucket": { + "description": "The S3 bucket that is being imported from.", + "relationshipRef": { + "propertyPath": "/properties/BucketName", + "typeName": "AWS::S3::Bucket" + }, + "type": "string" + }, + "S3BucketOwner": { + "description": "The account number of the S3 bucket that is being imported from. If the bucket is owned by the requester this is optional.", + "type": "string" + }, + "S3KeyPrefix": { + "description": "The key prefix shared by all S3 Objects that are being imported.", + "type": "string" + } + }, + "required": [ + "S3Bucket" + ], + "type": "object" + }, + "SSESpecification": { + "additionalProperties": false, + "description": "Represents the settings used to enable server-side encryption.", + "properties": { + "KMSMasterKeyId": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::KMS::Key" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/KeyId", + "typeName": "AWS::KMS::Key" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/AliasName", + "typeName": "AWS::KMS::Alias" + } + } + ], + "description": "The KMS key that should be used for the KMS encryption. To specify a key, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. Note that you should only provide this parameter if the key is different from the default DynamoDB key ``alias/aws/dynamodb``.", + "type": "string" + }, + "SSEEnabled": { + "description": "Indicates whether server-side encryption is done using an AWS managed key or an AWS owned key. If enabled (true), server-side encryption type is set to ``KMS`` and an AWS managed key is used (KMS charges apply). If disabled (false) or not specified, server-side encryption is set to AWS owned key.", + "type": "boolean" + }, + "SSEType": { + "description": "Server-side encryption type. The only supported value is:\n + ``KMS`` - Server-side encryption that uses KMSlong. The key is stored in your account and is managed by KMS (KMS charges apply).", + "type": "string" + } + }, + "required": [ + "SSEEnabled" + ], + "type": "object" + }, + "StreamSpecification": { + "additionalProperties": false, + "description": "Represents the DynamoDB Streams configuration for a table in DynamoDB.", + "properties": { + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy", + "description": "Creates or updates a resource-based policy document that contains the permissions for DDB resources, such as a table's streams. Resource-based policies let you define access permissions by specifying who has access to each resource, and the actions they are allowed to perform on each resource.\n In a CFNshort template, you can provide the policy in JSON or YAML format because CFNshort converts YAML to JSON before submitting it to DDB. For more information about resource-based policies, see [Using resource-based policies for](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html) and [Resource-based policy examples](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html)." + }, + "StreamViewType": { + "description": "When an item in the table is modified, ``StreamViewType`` determines what information is written to the stream for this table. Valid values for ``StreamViewType`` are:\n + ``KEYS_ONLY`` - Only the key attributes of the modified item are written to the stream.\n + ``NEW_IMAGE`` - The entire item, as it appears after it was modified, is written to the stream.\n + ``OLD_IMAGE`` - The entire item, as it appeared before it was modified, is written to the stream.\n + ``NEW_AND_OLD_IMAGES`` - Both the new and the old item images of the item are written to the stream.", + "type": "string" + } + }, + "required": [ + "StreamViewType" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Describes a tag. A tag is a key-value pair. You can add up to 50 tags to a single DynamoDB table. \n AWS-assigned tag names and values are automatically assigned the ``aws:`` prefix, which the user cannot assign. AWS-assigned tag names do not count towards the tag limit of 50. User-assigned tag names have the prefix ``user:`` in the Cost Allocation Report. You cannot backdate the application of a tag.\n For an overview on tagging DynamoDB resources, see [Tagging for DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html) in the *Amazon DynamoDB Developer Guide*.", + "properties": { + "Key": { + "description": "The key of the tag. Tag keys are case sensitive. Each DynamoDB table can only have up to one tag with the same key. If you try to add an existing tag (same key), the existing tag value will be updated to the new value.", + "type": "string" + }, + "Value": { + "description": "The value of the tag. Tag values are case-sensitive and can be null.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TimeToLiveSpecification": { + "additionalProperties": false, + "description": "Represents the settings used to enable or disable Time to Live (TTL) for the specified table.", + "properties": { + "AttributeName": { + "description": "The name of the TTL attribute used to store the expiration time for items in the table.\n + The ``AttributeName`` property is required when enabling the TTL, or when TTL is already enabled.\n + To update this property, you must first disable TTL and then enable TTL with the new attribute name.", + "type": "string" + }, + "Enabled": { + "description": "Indicates whether TTL is to be enabled (true) or disabled (false) on the table.", + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "WarmThroughput": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "ReadUnitsPerSecond" + ] + }, + { + "required": [ + "WriteUnitsPerSecond" + ] + } + ], + "description": "Provides visibility into the number of read and write operations your table or secondary index can instantaneously support. The settings can be modified using the ``UpdateTable`` operation to meet the throughput requirements of an upcoming peak event.", + "properties": { + "ReadUnitsPerSecond": { + "description": "Represents the number of read operations your base table can instantaneously support.", + "minimum": 1, + "type": "integer" + }, + "WriteUnitsPerSecond": { + "description": "Represents the number of write operations your base table can instantaneously support.", + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "The ``AWS::DynamoDB::Table`` resource creates a DDB table. For more information, see [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html) in the *API Reference*.\n You should be aware of the following behaviors when working with DDB tables:\n + CFNlong typically creates DDB tables in parallel. However, if your template includes multiple DDB tables with indexes, you must declare dependencies so that the tables are created sequentially. DDBlong limits the number of tables with secondary indexes that are in the creating state. If you create multiple tables with indexes at the same time, DDB returns an error and the stack operation fails. For an example, see [DynamoDB Table with a DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#aws-resource-dynamodb-table--examples--DynamoDB_Table_with_a_DependsOn_Attribute).\n \n Our guidance is to use the latest schema documented for your CFNlong templates. This schema supports the provisioning of all table settings below. When using this schema in your CFNlong templates, please ensure that your Identity and Access Management (IAM) policies are updated with appropriate permissions to allow for the authorization of these setting changes.", + "handlers": { + "create": { + "permissions": [ + "dynamodb:CreateTable", + "dynamodb:DescribeImport", + "dynamodb:DescribeTable", + "dynamodb:DescribeTimeToLive", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateContinuousBackups", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeContributorInsights", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ImportTable", + "dynamodb:ListTagsOfResource", + "dynamodb:TagResource", + "dynamodb:UpdateTable", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "iam:CreateServiceLinkedRole", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:ListAliases", + "kms:Encrypt", + "kms:RevokeGrant", + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:DescribeLogGroups", + "logs:DescribeLogStreams", + "logs:PutLogEvents", + "logs:PutRetentionPolicy", + "s3:GetObject", + "s3:GetObjectMetadata", + "s3:ListBucket" + ], + "timeoutInMinutes": 720 + }, + "delete": { + "permissions": [ + "dynamodb:DeleteTable", + "dynamodb:DescribeTable" + ], + "timeoutInMinutes": 720 + }, + "list": { + "permissions": [ + "dynamodb:ListTables" + ] + }, + "read": { + "permissions": [ + "dynamodb:DescribeTable", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeContributorInsights", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ListTagsOfResource", + "dynamodb:GetResourcePolicy" + ] + }, + "update": { + "permissions": [ + "dynamodb:UpdateTable", + "dynamodb:DescribeTable", + "dynamodb:DescribeTimeToLive", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContinuousBackups", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateKinesisStreamingDestination", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ListTagsOfResource", + "dynamodb:TagResource", + "dynamodb:UntagResource", + "dynamodb:DescribeContributorInsights", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "dynamodb:DeleteResourcePolicy", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "iam:CreateServiceLinkedRole", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:RevokeGrant" + ], + "timeoutInMinutes": 720 + } + }, + "primaryIdentifier": [ + "/properties/TableName" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "AttributeDefinitions": { + "description": "A list of attributes that describe the key schema for the table and indexes.\n This property is required to create a DDB table.\n Update requires: [Some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt). Replacement if you edit an existing AttributeDefinition.", + "items": { + "$ref": "#/definitions/AttributeDefinition" + }, + "type": "array", + "uniqueItems": true + }, + "BillingMode": { + "description": "Specify how you are charged for read and write throughput and how you manage capacity.\n Valid values include:\n + ``PAY_PER_REQUEST`` - We recommend using ``PAY_PER_REQUEST`` for most DynamoDB workloads. ``PAY_PER_REQUEST`` sets the billing mode to [On-demand capacity mode](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/on-demand-capacity-mode.html). \n + ``PROVISIONED`` - We recommend using ``PROVISIONED`` for steady workloads with predictable growth where capacity requirements can be reliably forecasted. ``PROVISIONED`` sets the billing mode to [Provisioned capacity mode](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/provisioned-capacity-mode.html).\n \n If not specified, the default is ``PROVISIONED``.", + "type": "string" + }, + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification", + "description": "The settings used to enable or disable CloudWatch Contributor Insights for the specified table." + }, + "DeletionProtectionEnabled": { + "description": "Determines if a table is protected from deletion. When enabled, the table cannot be deleted by any user or process. This setting is disabled by default. For more information, see [Using deletion protection](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.Basics.html#WorkingWithTables.Basics.DeletionProtection) in the *Developer Guide*.", + "type": "boolean" + }, + "GlobalSecondaryIndexes": { + "description": "Global secondary indexes to be created on the table. You can create up to 20 global secondary indexes.\n If you update a table to include a new global secondary index, CFNlong initiates the index creation and then proceeds with the stack update. CFNlong doesn't wait for the index to complete creation because the backfilling phase can take a long time, depending on the size of the table. You can't use the index or update the table until the index's status is ``ACTIVE``. You can track its status by using the DynamoDB [DescribeTable](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/describe-table.html) command.\n If you add or delete an index during an update, we recommend that you don't update any other resources. If your stack fails to update and is rolled back while adding a new index, you must manually delete the index. \n Updates are not supported. The following are exceptions:\n + If you update either the contributor insights specification or the provisioned throughput values of global secondary indexes, you can update the table without interruption.\n + You can delete or add one global secondary index without interruption. If you do both in the same update (for example, by changing the index's logical ID), the update fails.", + "items": { + "$ref": "#/definitions/GlobalSecondaryIndex" + }, + "type": "array", + "uniqueItems": false + }, + "ImportSourceSpecification": { + "$ref": "#/definitions/ImportSourceSpecification", + "description": "Specifies the properties of data being imported from the S3 bucket source to the\" table.\n If you specify the ``ImportSourceSpecification`` property, and also specify either the ``StreamSpecification``, the ``TableClass`` property, the ``DeletionProtectionEnabled`` property, or the ``WarmThroughput`` property, the IAM entity creating/updating stack must have ``UpdateTable`` permission." + }, + "KeySchema": { + "description": "Specifies the attributes that make up the primary key for the table. The attributes in the ``KeySchema`` property must also be defined in the ``AttributeDefinitions`` property.", + "oneOf": [ + { + "items": { + "$ref": "#/definitions/KeySchema" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "object" + } + ] + }, + "KinesisStreamSpecification": { + "$ref": "#/definitions/KinesisStreamSpecification", + "description": "The Kinesis Data Streams configuration for the specified table." + }, + "LocalSecondaryIndexes": { + "description": "Local secondary indexes to be created on the table. You can create up to 5 local secondary indexes. Each index is scoped to a given hash key value. The size of each hash key can be up to 10 gigabytes.", + "items": { + "$ref": "#/definitions/LocalSecondaryIndex" + }, + "type": "array", + "uniqueItems": false + }, + "OnDemandThroughput": { + "$ref": "#/definitions/OnDemandThroughput", + "description": "Sets the maximum number of read and write units for the specified on-demand table. If you use this property, you must specify ``MaxReadRequestUnits``, ``MaxWriteRequestUnits``, or both." + }, + "PointInTimeRecoverySpecification": { + "$ref": "#/definitions/PointInTimeRecoverySpecification", + "description": "The settings used to enable point in time recovery." + }, + "ProvisionedThroughput": { + "$ref": "#/definitions/ProvisionedThroughput", + "description": "Throughput for the specified table, which consists of values for ``ReadCapacityUnits`` and ``WriteCapacityUnits``. For more information about the contents of a provisioned throughput structure, see [Amazon DynamoDB Table ProvisionedThroughput](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html). \n If you set ``BillingMode`` as ``PROVISIONED``, you must specify this property. If you set ``BillingMode`` as ``PAY_PER_REQUEST``, you cannot specify this property." + }, + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy", + "description": "A resource-based policy document that contains permissions to add to the specified table. In a CFNshort template, you can provide the policy in JSON or YAML format because CFNshort converts YAML to JSON before submitting it to DDB. For more information about resource-based policies, see [Using resource-based policies for](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html) and [Resource-based policy examples](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html).\n When you attach a resource-based policy while creating a table, the policy creation is *strongly consistent*. For information about the considerations that you should keep in mind while attaching a resource-based policy, see [Resource-based policy considerations](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-considerations.html)." + }, + "SSESpecification": { + "$ref": "#/definitions/SSESpecification", + "description": "Specifies the settings to enable server-side encryption." + }, + "StreamArn": { + "description": "", + "type": "string" + }, + "StreamSpecification": { + "$ref": "#/definitions/StreamSpecification", + "description": "The settings for the DDB table stream, which capture changes to items stored in the table." + }, + "TableClass": { + "description": "The table class of the new table. Valid values are ``STANDARD`` and ``STANDARD_INFREQUENT_ACCESS``.", + "type": "string" + }, + "TableName": { + "description": "A name for the table. If you don't specify a name, CFNlong generates a unique physical ID and uses that ID for the table name. For more information, see [Name Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.\n For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TimeToLiveSpecification": { + "$ref": "#/definitions/TimeToLiveSpecification", + "description": "Specifies the Time to Live (TTL) settings for the table.\n For detailed information about the limits in DynamoDB, see [Limits in Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html) in the Amazon DynamoDB Developer Guide." + }, + "WarmThroughput": { + "$ref": "#/definitions/WarmThroughput", + "description": "Represents the warm throughput (in read units per second and write units per second) for creating a table." + } + }, + "propertyTransform": { + "/properties/SSESpecification/KMSMasterKeyId": "$join([\"arn:aws(-[a-z]{1,4}){0,2}:kms:[a-z]{2,4}(-[a-z]{1,4})?-[a-z]{1,10}-[0-9]:[0-9]{12}:key\\/\", SSESpecification.KMSMasterKeyId]) $OR $join([\"arn:aws(-[a-z]{1,4}){0,2}:kms:[a-z]{2,4}(-[a-z]{1,4})?-[a-z]{1,10}-[0-9]:[0-9]{12}:key\\/\", KMSMasterKeyId])" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/StreamArn" + ], + "required": [ + "KeySchema" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "dynamodb:TagResource", + "dynamodb:UntagResource", + "dynamodb:ListTagsOfResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DynamoDB::Table", + "writeOnlyProperties": [ + "/properties/ImportSourceSpecification" + ] +} diff --git a/src/schema/aws-ec2-capacityreservation.json b/src/schema/aws-ec2-capacityreservation.json index f680f7fc..cd05f3c4 100644 --- a/src/schema/aws-ec2-capacityreservation.json +++ b/src/schema/aws-ec2-capacityreservation.json @@ -1,165 +1,245 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Tenancy", - "/properties/InstancePlatform", - "/properties/InstanceType", - "/properties/AvailabilityZone", - "/properties/TagSpecifications", - "/properties/OutPostArn", - "/properties/EphemeralStorage", - "/properties/EbsOptimized", - "/properties/PlacementGroupArn" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TagSpecification": { - "additionalProperties": false, - "properties": { - "ResourceType": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::CapacityReservation", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateCapacityReservation", - "ec2:DescribeCapacityReservations", - "ec2:CancelCapacityReservation", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:CreateCapacityReservation", - "ec2:DescribeCapacityReservations", - "ec2:CancelCapacityReservation", - "ec2:DeleteTags" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeCapacityReservations" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeCapacityReservations" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyCapacityReservation", - "ec2:CreateCapacityReservation", - "ec2:DescribeCapacityReservations", - "ec2:CancelCapacityReservation", - "ec2:AssociateCapacityReservationBillingOwner", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AvailabilityZone": { - "type": "string" - }, - "AvailableInstanceCount": { - "type": "integer" - }, - "EbsOptimized": { - "type": "boolean" - }, - "EndDate": { - "type": "string" - }, - "EndDateType": { - "type": "string" - }, - "EphemeralStorage": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "InstanceCount": { - "type": "integer" - }, - "InstanceMatchCriteria": { - "type": "string" - }, - "InstancePlatform": { - "type": "string" - }, - "InstanceType": { - "type": "string" - }, - "OutPostArn": { - "type": "string" - }, - "PlacementGroupArn": { - "type": "string" - }, - "TagSpecifications": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TagSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "type": "string" - }, - "TotalInstanceCount": { - "type": "integer" - }, - "UnusedReservationBillingOwnerId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/AvailableInstanceCount", - "/properties/TotalInstanceCount" - ], - "required": [ - "InstanceCount", - "AvailabilityZone", - "InstancePlatform", - "InstanceType" - ], - "typeName": "AWS::EC2::CapacityReservation", - "writeOnlyProperties": [ - "/properties/UnusedReservationBillingOwnerId" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn", + "/properties/AvailabilityZoneId" + ], + "definitions": { + "CapacityAllocation": { + "additionalProperties": false, + "properties": { + "AllocationType": { + "type": "string" + }, + "Count": { + "type": "integer" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::CapacityReservation", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:CreateCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeCapacityReservations" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeCapacityReservations" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyCapacityReservation", + "ec2:CreateCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:AssociateCapacityReservationBillingOwner", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailabilityZoneId": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "CapacityAllocationSet": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CapacityAllocation" + }, + "type": "array", + "uniqueItems": false + }, + "CapacityReservationArn": { + "type": "string" + }, + "CapacityReservationFleetId": { + "type": "string" + }, + "CommitmentInfo": { + "additionalProperties": false, + "properties": { + "CommitmentEndDate": { + "type": "string" + }, + "CommittedInstanceCount": { + "type": "integer" + } + }, + "type": "object" + }, + "CreateDate": { + "type": "string" + }, + "DeliveryPreference": { + "type": "string" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "type": "string" + }, + "InstancePlatform": { + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "type": "string" + }, + "OwnerId": { + "type": "string" + }, + "PlacementGroupArn": { + "type": "string" + }, + "ReservationType": { + "type": "string" + }, + "StartDate": { + "type": "string" + }, + "State": { + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + }, + "UnusedReservationBillingOwnerId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount", + "/properties/StartDate", + "/properties/CapacityReservationArn", + "/properties/CreateDate", + "/properties/State", + "/properties/OwnerId", + "/properties/ReservationType", + "/properties/CapacityAllocationSet", + "/properties/CommitmentInfo", + "/properties/DeliveryPreference", + "/properties/CapacityReservationFleetId" + ], + "required": [ + "InstanceCount", + "InstancePlatform", + "InstanceType" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/TagSpecifications", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::CapacityReservation", + "writeOnlyProperties": [ + "/properties/UnusedReservationBillingOwnerId" + ] +} diff --git a/src/schema/aws-ec2-capacityreservationfleet.json b/src/schema/aws-ec2-capacityreservationfleet.json index 3cd3c9a5..16454303 100644 --- a/src/schema/aws-ec2-capacityreservationfleet.json +++ b/src/schema/aws-ec2-capacityreservationfleet.json @@ -1,191 +1,191 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceTypeSpecifications", - "/properties/AllocationStrategy", - "/properties/TagSpecifications", - "/properties/EndDate", - "/properties/Tenancy", - "/properties/InstanceMatchCriteria" - ], - "definitions": { - "InstanceTypeSpecification": { - "additionalProperties": false, - "properties": { - "AvailabilityZone": { - "type": "string" - }, - "AvailabilityZoneId": { - "type": "string" - }, - "EbsOptimized": { - "type": "boolean" - }, - "InstancePlatform": { - "type": "string" - }, - "InstanceType": { - "type": "string" - }, - "Priority": { - "maximum": 999, - "minimum": 0, - "type": "integer" - }, - "Weight": { - "type": "number" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TagSpecification": { - "additionalProperties": false, - "properties": { - "ResourceType": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::CapacityReservationFleet", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateCapacityReservationFleet", - "ec2:ModifyCapacityReservationFleet", - "ec2:DescribeCapacityReservationFleets", - "ec2:CancelCapacityReservationFleets", - "ec2:CreateCapacityReservation", - "ec2:DescribeCapacityReservations", - "ec2:CancelCapacityReservation", - "ec2:DescribeInstances", - "ec2:CreateTags", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "ec2:CreateCapacityReservationFleet", - "ec2:ModifyCapacityReservationFleet", - "ec2:DescribeCapacityReservationFleets", - "ec2:CancelCapacityReservationFleets", - "ec2:CreateCapacityReservation", - "ec2:DescribeCapacityReservations", - "ec2:CancelCapacityReservation", - "ec2:DeleteTags" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeCapacityReservationFleets", - "ec2:DescribeCapacityReservations", - "ec2:DescribeInstances" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeCapacityReservationFleets", - "ec2:DescribeInstances", - "ec2:DescribeCapacityReservations" - ] - }, - "update": { - "permissions": [ - "ec2:CreateCapacityReservationFleet", - "ec2:ModifyCapacityReservationFleet", - "ec2:DescribeCapacityReservationFleets", - "ec2:CancelCapacityReservationFleets", - "ec2:CreateCapacityReservation", - "ec2:ModifyCapacityReservation", - "ec2:DescribeCapacityReservations", - "ec2:CancelCapacityReservation", - "ec2:DescribeInstances", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/CapacityReservationFleetId" - ], - "properties": { - "AllocationStrategy": { - "type": "string" - }, - "CapacityReservationFleetId": { - "type": "string" - }, - "EndDate": { - "type": "string" - }, - "InstanceMatchCriteria": { - "enum": [ - "open" - ], - "type": "string" - }, - "InstanceTypeSpecifications": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/InstanceTypeSpecification" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "NoRemoveEndDate": { - "type": "boolean" - }, - "RemoveEndDate": { - "type": "boolean" - }, - "TagSpecifications": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TagSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default" - ], - "type": "string" - }, - "TotalTargetCapacity": { - "maximum": 25000, - "minimum": 1, - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/CapacityReservationFleetId" - ], - "taggable": true, - "typeName": "AWS::EC2::CapacityReservationFleet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceTypeSpecifications", + "/properties/AllocationStrategy", + "/properties/TagSpecifications", + "/properties/EndDate", + "/properties/Tenancy", + "/properties/InstanceMatchCriteria" + ], + "definitions": { + "InstanceTypeSpecification": { + "additionalProperties": false, + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailabilityZoneId": { + "type": "string" + }, + "EbsOptimized": { + "type": "boolean" + }, + "InstancePlatform": { + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "Priority": { + "maximum": 999, + "minimum": 0, + "type": "integer" + }, + "Weight": { + "type": "number" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::CapacityReservationFleet", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateCapacityReservationFleet", + "ec2:ModifyCapacityReservationFleet", + "ec2:DescribeCapacityReservationFleets", + "ec2:CancelCapacityReservationFleets", + "ec2:CreateCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:DescribeInstances", + "ec2:CreateTags", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "ec2:CreateCapacityReservationFleet", + "ec2:ModifyCapacityReservationFleet", + "ec2:DescribeCapacityReservationFleets", + "ec2:CancelCapacityReservationFleets", + "ec2:CreateCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeCapacityReservationFleets", + "ec2:DescribeCapacityReservations", + "ec2:DescribeInstances" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeCapacityReservationFleets", + "ec2:DescribeInstances", + "ec2:DescribeCapacityReservations" + ] + }, + "update": { + "permissions": [ + "ec2:CreateCapacityReservationFleet", + "ec2:ModifyCapacityReservationFleet", + "ec2:DescribeCapacityReservationFleets", + "ec2:CancelCapacityReservationFleets", + "ec2:CreateCapacityReservation", + "ec2:ModifyCapacityReservation", + "ec2:DescribeCapacityReservations", + "ec2:CancelCapacityReservation", + "ec2:DescribeInstances", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/CapacityReservationFleetId" + ], + "properties": { + "AllocationStrategy": { + "type": "string" + }, + "CapacityReservationFleetId": { + "type": "string" + }, + "EndDate": { + "type": "string" + }, + "InstanceMatchCriteria": { + "enum": [ + "open" + ], + "type": "string" + }, + "InstanceTypeSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InstanceTypeSpecification" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "NoRemoveEndDate": { + "type": "boolean" + }, + "RemoveEndDate": { + "type": "boolean" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "default" + ], + "type": "string" + }, + "TotalTargetCapacity": { + "maximum": 25000, + "minimum": 1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/CapacityReservationFleetId" + ], + "taggable": true, + "typeName": "AWS::EC2::CapacityReservationFleet" +} diff --git a/src/schema/aws-ec2-carriergateway.json b/src/schema/aws-ec2-carriergateway.json index 9bd91ee8..42fae048 100644 --- a/src/schema/aws-ec2-carriergateway.json +++ b/src/schema/aws-ec2-carriergateway.json @@ -1,116 +1,117 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/VpcId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "pattern": "^(?!aws:.*)", - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "pattern": "^(?!aws:.*)", - "type": "string" - } - }, - "type": "object" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "description": "An example resource schema demonstrating some basic constructs and validation rules.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateCarrierGateway", - "ec2:DescribeCarrierGateways", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteCarrierGateway", - "ec2:DescribeCarrierGateways" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeCarrierGateways" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeCarrierGateways", - "ec2:DescribeTags" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeCarrierGateways", - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/CarrierGatewayId" - ], - "properties": { - "CarrierGatewayId": { - "description": "The ID of the carrier gateway.", - "type": "string" - }, - "OwnerId": { - "description": "The ID of the owner.", - "type": "string" - }, - "State": { - "description": "The state of the carrier gateway.", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/Tags", - "description": "The tags for the carrier gateway." - }, - "VpcId": { - "description": "The ID of the VPC.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CarrierGatewayId", - "/properties/OwnerId", - "/properties/State" - ], - "required": [ - "VpcId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::CarrierGateway" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 127, + "minLength": 1, + "pattern": "^(?!aws:.*)", + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 1, + "pattern": "^(?!aws:.*)", + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "description": "Resource Type definition for Carrier Gateway which describes the Carrier Gateway resource", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateCarrierGateway", + "ec2:DescribeCarrierGateways", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteCarrierGateway", + "ec2:DescribeCarrierGateways", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeCarrierGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeCarrierGateways", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeCarrierGateways", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/CarrierGatewayId" + ], + "properties": { + "CarrierGatewayId": { + "description": "The ID of the carrier gateway.", + "type": "string" + }, + "OwnerId": { + "description": "The ID of the owner.", + "type": "string" + }, + "State": { + "description": "The state of the carrier gateway.", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags", + "description": "The tags for the carrier gateway." + }, + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CarrierGatewayId", + "/properties/OwnerId", + "/properties/State" + ], + "required": [ + "VpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::CarrierGateway" +} diff --git a/src/schema/aws-ec2-clientvpnauthorizationrule.json b/src/schema/aws-ec2-clientvpnauthorizationrule.json index 821db5b5..e7cf898d 100644 --- a/src/schema/aws-ec2-clientvpnauthorizationrule.json +++ b/src/schema/aws-ec2-clientvpnauthorizationrule.json @@ -1,42 +1,42 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClientVpnEndpointId", - "/properties/AuthorizeAllGroups", - "/properties/Description", - "/properties/AccessGroupId", - "/properties/TargetNetworkCidr" - ], - "description": "Resource Type definition for AWS::EC2::ClientVpnAuthorizationRule", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AccessGroupId": { - "type": "string" - }, - "AuthorizeAllGroups": { - "type": "boolean" - }, - "ClientVpnEndpointId": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "TargetNetworkCidr": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ClientVpnEndpointId", - "TargetNetworkCidr" - ], - "typeName": "AWS::EC2::ClientVpnAuthorizationRule" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClientVpnEndpointId", + "/properties/AuthorizeAllGroups", + "/properties/Description", + "/properties/AccessGroupId", + "/properties/TargetNetworkCidr" + ], + "description": "Resource Type definition for AWS::EC2::ClientVpnAuthorizationRule", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AccessGroupId": { + "type": "string" + }, + "AuthorizeAllGroups": { + "type": "boolean" + }, + "ClientVpnEndpointId": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "TargetNetworkCidr": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ClientVpnEndpointId", + "TargetNetworkCidr" + ], + "typeName": "AWS::EC2::ClientVpnAuthorizationRule" +} diff --git a/src/schema/aws-ec2-clientvpnendpoint.json b/src/schema/aws-ec2-clientvpnendpoint.json index 5c701507..2a5d11c8 100644 --- a/src/schema/aws-ec2-clientvpnendpoint.json +++ b/src/schema/aws-ec2-clientvpnendpoint.json @@ -1,238 +1,241 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TransportProtocol", - "/properties/ClientCidrBlock", - "/properties/TagSpecifications", - "/properties/AuthenticationOptions" - ], - "definitions": { - "CertificateAuthenticationRequest": { - "additionalProperties": false, - "properties": { - "ClientRootCertificateChainArn": { - "type": "string" - } - }, - "required": [ - "ClientRootCertificateChainArn" - ], - "type": "object" - }, - "ClientAuthenticationRequest": { - "additionalProperties": false, - "properties": { - "ActiveDirectory": { - "$ref": "#/definitions/DirectoryServiceAuthenticationRequest" - }, - "FederatedAuthentication": { - "$ref": "#/definitions/FederatedAuthenticationRequest" - }, - "MutualAuthentication": { - "$ref": "#/definitions/CertificateAuthenticationRequest" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ClientConnectOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "LambdaFunctionArn": { - "type": "string" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "ClientLoginBannerOptions": { - "additionalProperties": false, - "properties": { - "BannerText": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "ConnectionLogOptions": { - "additionalProperties": false, - "properties": { - "CloudwatchLogGroup": { - "type": "string" - }, - "CloudwatchLogStream": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "DirectoryServiceAuthenticationRequest": { - "additionalProperties": false, - "properties": { - "DirectoryId": { - "type": "string" - } - }, - "required": [ - "DirectoryId" - ], - "type": "object" - }, - "FederatedAuthenticationRequest": { - "additionalProperties": false, - "properties": { - "SAMLProviderArn": { - "type": "string" - }, - "SelfServiceSAMLProviderArn": { - "type": "string" - } - }, - "required": [ - "SAMLProviderArn" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TagSpecification": { - "additionalProperties": false, - "properties": { - "ResourceType": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "ResourceType", - "Tags" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::ClientVpnEndpoint", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AuthenticationOptions": { - "items": { - "$ref": "#/definitions/ClientAuthenticationRequest" - }, - "type": "array", - "uniqueItems": false - }, - "ClientCidrBlock": { - "type": "string" - }, - "ClientConnectOptions": { - "$ref": "#/definitions/ClientConnectOptions" - }, - "ClientLoginBannerOptions": { - "$ref": "#/definitions/ClientLoginBannerOptions" - }, - "ConnectionLogOptions": { - "$ref": "#/definitions/ConnectionLogOptions" - }, - "Description": { - "type": "string" - }, - "DnsServers": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SelfServicePortal": { - "type": "string" - }, - "ServerCertificateArn": { - "type": "string" - }, - "SessionTimeoutHours": { - "type": "integer" - }, - "SplitTunnel": { - "type": "boolean" - }, - "TagSpecifications": { - "items": { - "$ref": "#/definitions/TagSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "TransportProtocol": { - "type": "string" - }, - "VpcId": { - "type": "string" - }, - "VpnPort": { - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ClientCidrBlock", - "ConnectionLogOptions", - "AuthenticationOptions", - "ServerCertificateArn" - ], - "typeName": "AWS::EC2::ClientVpnEndpoint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransportProtocol", + "/properties/ClientCidrBlock", + "/properties/TagSpecifications", + "/properties/AuthenticationOptions" + ], + "definitions": { + "CertificateAuthenticationRequest": { + "additionalProperties": false, + "properties": { + "ClientRootCertificateChainArn": { + "type": "string" + } + }, + "required": [ + "ClientRootCertificateChainArn" + ], + "type": "object" + }, + "ClientAuthenticationRequest": { + "additionalProperties": false, + "properties": { + "ActiveDirectory": { + "$ref": "#/definitions/DirectoryServiceAuthenticationRequest" + }, + "FederatedAuthentication": { + "$ref": "#/definitions/FederatedAuthenticationRequest" + }, + "MutualAuthentication": { + "$ref": "#/definitions/CertificateAuthenticationRequest" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "ClientConnectOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "LambdaFunctionArn": { + "type": "string" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "ClientLoginBannerOptions": { + "additionalProperties": false, + "properties": { + "BannerText": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "ConnectionLogOptions": { + "additionalProperties": false, + "properties": { + "CloudwatchLogGroup": { + "type": "string" + }, + "CloudwatchLogStream": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "DirectoryServiceAuthenticationRequest": { + "additionalProperties": false, + "properties": { + "DirectoryId": { + "type": "string" + } + }, + "required": [ + "DirectoryId" + ], + "type": "object" + }, + "FederatedAuthenticationRequest": { + "additionalProperties": false, + "properties": { + "SAMLProviderArn": { + "type": "string" + }, + "SelfServiceSAMLProviderArn": { + "type": "string" + } + }, + "required": [ + "SAMLProviderArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ResourceType", + "Tags" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::ClientVpnEndpoint", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AuthenticationOptions": { + "items": { + "$ref": "#/definitions/ClientAuthenticationRequest" + }, + "type": "array", + "uniqueItems": false + }, + "ClientCidrBlock": { + "type": "string" + }, + "ClientConnectOptions": { + "$ref": "#/definitions/ClientConnectOptions" + }, + "ClientLoginBannerOptions": { + "$ref": "#/definitions/ClientLoginBannerOptions" + }, + "ConnectionLogOptions": { + "$ref": "#/definitions/ConnectionLogOptions" + }, + "Description": { + "type": "string" + }, + "DisconnectOnSessionTimeout": { + "type": "boolean" + }, + "DnsServers": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SelfServicePortal": { + "type": "string" + }, + "ServerCertificateArn": { + "type": "string" + }, + "SessionTimeoutHours": { + "type": "integer" + }, + "SplitTunnel": { + "type": "boolean" + }, + "TagSpecifications": { + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "TransportProtocol": { + "type": "string" + }, + "VpcId": { + "type": "string" + }, + "VpnPort": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ClientCidrBlock", + "ConnectionLogOptions", + "AuthenticationOptions", + "ServerCertificateArn" + ], + "typeName": "AWS::EC2::ClientVpnEndpoint" +} diff --git a/src/schema/aws-ec2-clientvpnroute.json b/src/schema/aws-ec2-clientvpnroute.json index dada7bce..5d563c31 100644 --- a/src/schema/aws-ec2-clientvpnroute.json +++ b/src/schema/aws-ec2-clientvpnroute.json @@ -1,39 +1,39 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClientVpnEndpointId", - "/properties/DestinationCidrBlock", - "/properties/Description", - "/properties/TargetVpcSubnetId" - ], - "description": "Resource Type definition for AWS::EC2::ClientVpnRoute", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ClientVpnEndpointId": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "DestinationCidrBlock": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "TargetVpcSubnetId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ClientVpnEndpointId", - "TargetVpcSubnetId", - "DestinationCidrBlock" - ], - "typeName": "AWS::EC2::ClientVpnRoute" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClientVpnEndpointId", + "/properties/DestinationCidrBlock", + "/properties/Description", + "/properties/TargetVpcSubnetId" + ], + "description": "Resource Type definition for AWS::EC2::ClientVpnRoute", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ClientVpnEndpointId": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationCidrBlock": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "TargetVpcSubnetId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ClientVpnEndpointId", + "TargetVpcSubnetId", + "DestinationCidrBlock" + ], + "typeName": "AWS::EC2::ClientVpnRoute" +} diff --git a/src/schema/aws-ec2-clientvpntargetnetworkassociation.json b/src/schema/aws-ec2-clientvpntargetnetworkassociation.json index b1f10b99..bf5c806a 100644 --- a/src/schema/aws-ec2-clientvpntargetnetworkassociation.json +++ b/src/schema/aws-ec2-clientvpntargetnetworkassociation.json @@ -1,30 +1,30 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClientVpnEndpointId", - "/properties/SubnetId" - ], - "description": "Resource Type definition for AWS::EC2::ClientVpnTargetNetworkAssociation", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ClientVpnEndpointId": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "SubnetId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ClientVpnEndpointId", - "SubnetId" - ], - "typeName": "AWS::EC2::ClientVpnTargetNetworkAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClientVpnEndpointId", + "/properties/SubnetId" + ], + "description": "Resource Type definition for AWS::EC2::ClientVpnTargetNetworkAssociation", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ClientVpnEndpointId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ClientVpnEndpointId", + "SubnetId" + ], + "typeName": "AWS::EC2::ClientVpnTargetNetworkAssociation" +} diff --git a/src/schema/aws-ec2-customergateway.json b/src/schema/aws-ec2-customergateway.json index 2694ee4d..98f3f792 100644 --- a/src/schema/aws-ec2-customergateway.json +++ b/src/schema/aws-ec2-customergateway.json @@ -1,131 +1,131 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CertificateArn", - "/properties/BgpAsn", - "/properties/BgpAsnExtended", - "/properties/Type", - "/properties/IpAddress", - "/properties/DeviceName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "properties": { - "Key": { - "description": "The tag key.", - "type": "string" - }, - "Value": { - "description": "The tag value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Specifies a customer gateway.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateCustomerGateway", - "ec2:DescribeCustomerGateways", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteCustomerGateway", - "ec2:DescribeCustomerGateways" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeCustomerGateways" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeCustomerGateways" - ] - }, - "update": { - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeCustomerGateways" - ] - } - }, - "primaryIdentifier": [ - "/properties/CustomerGatewayId" - ], - "properties": { - "BgpAsn": { - "default": 65000, - "description": "For customer gateway devices that support BGP, specify the device's ASN. You must specify either ``BgpAsn`` or ``BgpAsnExtended`` when creating the customer gateway. If the ASN is larger than ``2,147,483,647``, you must use ``BgpAsnExtended``.\n Default: 65000\n Valid values: ``1`` to ``2,147,483,647``", - "type": "integer" - }, - "BgpAsnExtended": { - "description": "For customer gateway devices that support BGP, specify the device's ASN. You must specify either ``BgpAsn`` or ``BgpAsnExtended`` when creating the customer gateway. If the ASN is larger than ``2,147,483,647``, you must use ``BgpAsnExtended``.\n Valid values: ``2,147,483,648`` to ``4,294,967,295``", - "maximum": 4294967294, - "minimum": 2147483648, - "multipleOf": 1, - "type": "number" - }, - "CertificateArn": { - "description": "The Amazon Resource Name (ARN) for the customer gateway certificate.", - "pattern": "^arn:(aws[a-zA-Z-]*)?:acm:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:certificate\\/[a-zA-Z0-9-_]+$", - "type": "string" - }, - "CustomerGatewayId": { - "description": "", - "type": "string" - }, - "DeviceName": { - "description": "The name of customer gateway device.", - "type": "string" - }, - "IpAddress": { - "description": "IPv4 address for the customer gateway device's outside interface. The address must be static. If ``OutsideIpAddressType`` in your VPN connection options is set to ``PrivateIpv4``, you can use an RFC6598 or RFC1918 private IPv4 address. If ``OutsideIpAddressType`` is set to ``PublicIpv4``, you can use a public IPv4 address.", - "type": "string" - }, - "Tags": { - "description": "One or more tags for the customer gateway.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Type": { - "description": "The type of VPN connection that this customer gateway supports (``ipsec.1``).", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CustomerGatewayId" - ], - "required": [ - "IpAddress", - "Type" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::CustomerGateway" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CertificateArn", + "/properties/BgpAsn", + "/properties/BgpAsnExtended", + "/properties/Type", + "/properties/IpAddress", + "/properties/DeviceName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a customer gateway.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateCustomerGateway", + "ec2:DescribeCustomerGateways", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteCustomerGateway", + "ec2:DescribeCustomerGateways" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeCustomerGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeCustomerGateways" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeCustomerGateways" + ] + } + }, + "primaryIdentifier": [ + "/properties/CustomerGatewayId" + ], + "properties": { + "BgpAsn": { + "default": 65000, + "description": "For customer gateway devices that support BGP, specify the device's ASN. You must specify either ``BgpAsn`` or ``BgpAsnExtended`` when creating the customer gateway. If the ASN is larger than ``2,147,483,647``, you must use ``BgpAsnExtended``.\n Default: 65000\n Valid values: ``1`` to ``2,147,483,647``", + "type": "integer" + }, + "BgpAsnExtended": { + "description": "For customer gateway devices that support BGP, specify the device's ASN. You must specify either ``BgpAsn`` or ``BgpAsnExtended`` when creating the customer gateway. If the ASN is larger than ``2,147,483,647``, you must use ``BgpAsnExtended``.\n Valid values: ``2,147,483,648`` to ``4,294,967,295``", + "maximum": 4294967294, + "minimum": 2147483648, + "multipleOf": 1, + "type": "number" + }, + "CertificateArn": { + "description": "The Amazon Resource Name (ARN) for the customer gateway certificate.", + "pattern": "^arn:(aws[a-zA-Z-]*)?:acm:[a-z]{2}((-gov)|(-iso([a-z]{1})?))?-[a-z]+-\\d{1}:\\d{12}:certificate\\/[a-zA-Z0-9-_]+$", + "type": "string" + }, + "CustomerGatewayId": { + "description": "", + "type": "string" + }, + "DeviceName": { + "description": "The name of customer gateway device.", + "type": "string" + }, + "IpAddress": { + "description": "IPv4 address for the customer gateway device's outside interface. The address must be static. If ``OutsideIpAddressType`` in your VPN connection options is set to ``PrivateIpv4``, you can use an RFC6598 or RFC1918 private IPv4 address. If ``OutsideIpAddressType`` is set to ``PublicIpv4``, you can use a public IPv4 address.", + "type": "string" + }, + "Tags": { + "description": "One or more tags for the customer gateway.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "description": "The type of VPN connection that this customer gateway supports (``ipsec.1``).", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CustomerGatewayId" + ], + "required": [ + "IpAddress", + "Type" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::CustomerGateway" +} diff --git a/src/schema/aws-ec2-dhcpoptions.json b/src/schema/aws-ec2-dhcpoptions.json index 8bd6bf15..098d1877 100644 --- a/src/schema/aws-ec2-dhcpoptions.json +++ b/src/schema/aws-ec2-dhcpoptions.json @@ -1,136 +1,136 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/NetbiosNameServers", - "/properties/NetbiosNodeType", - "/properties/NtpServers", - "/properties/DomainName", - "/properties/DomainNameServers", - "/properties/Ipv6AddressPreferredLeaseTime" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::DHCPOptions", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateDhcpOptions", - "ec2:DescribeDhcpOptions", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteDhcpOptions", - "ec2:DeleteTags", - "ec2:DescribeDhcpOptions" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeDhcpOptions" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeDhcpOptions", - "ec2:DescribeTags" - ] - }, - "update": { - "permissions": [ - "ec2:CreateTags", - "ec2:DescribeDhcpOptions", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/DhcpOptionsId" - ], - "properties": { - "DhcpOptionsId": { - "type": "string" - }, - "DomainName": { - "description": "This value is used to complete unqualified DNS hostnames.", - "type": "string" - }, - "DomainNameServers": { - "description": "The IPv4 addresses of up to four domain name servers, or AmazonProvidedDNS.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Ipv6AddressPreferredLeaseTime": { - "description": "The preferred Lease Time for ipV6 address in seconds.", - "type": "integer" - }, - "NetbiosNameServers": { - "description": "The IPv4 addresses of up to four NetBIOS name servers.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "NetbiosNodeType": { - "description": "The NetBIOS node type (1, 2, 4, or 8).", - "type": "integer" - }, - "NtpServers": { - "description": "The IPv4 addresses of up to four Network Time Protocol (NTP) servers.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "description": "Any tags assigned to the DHCP options set.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/DhcpOptionsId" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::DHCPOptions" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/NetbiosNameServers", + "/properties/NetbiosNodeType", + "/properties/NtpServers", + "/properties/DomainName", + "/properties/DomainNameServers", + "/properties/Ipv6AddressPreferredLeaseTime" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::DHCPOptions", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateDhcpOptions", + "ec2:DescribeDhcpOptions", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteDhcpOptions", + "ec2:DeleteTags", + "ec2:DescribeDhcpOptions" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeDhcpOptions" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeDhcpOptions", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DescribeDhcpOptions", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/DhcpOptionsId" + ], + "properties": { + "DhcpOptionsId": { + "type": "string" + }, + "DomainName": { + "description": "This value is used to complete unqualified DNS hostnames.", + "type": "string" + }, + "DomainNameServers": { + "description": "The IPv4 addresses of up to four domain name servers, or AmazonProvidedDNS.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Ipv6AddressPreferredLeaseTime": { + "description": "The preferred Lease Time for ipV6 address in seconds.", + "type": "integer" + }, + "NetbiosNameServers": { + "description": "The IPv4 addresses of up to four NetBIOS name servers.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "NetbiosNodeType": { + "description": "The NetBIOS node type (1, 2, 4, or 8).", + "type": "integer" + }, + "NtpServers": { + "description": "The IPv4 addresses of up to four Network Time Protocol (NTP) servers.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "description": "Any tags assigned to the DHCP options set.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/DhcpOptionsId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::DHCPOptions" +} diff --git a/src/schema/aws-ec2-ec2fleet.json b/src/schema/aws-ec2-ec2fleet.json index f4a80ac0..3f5641ba 100644 --- a/src/schema/aws-ec2-ec2fleet.json +++ b/src/schema/aws-ec2-ec2fleet.json @@ -1,745 +1,802 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LaunchTemplateConfigs", - "/properties/OnDemandOptions", - "/properties/ReplaceUnhealthyInstances", - "/properties/SpotOptions", - "/properties/TagSpecifications", - "/properties/TerminateInstancesWithExpiration", - "/properties/Type", - "/properties/ValidFrom", - "/properties/ValidUntil" - ], - "definitions": { - "AcceleratorCountRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "integer" - }, - "Min": { - "type": "integer" - } - }, - "type": "object" - }, - "AcceleratorTotalMemoryMiBRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "integer" - }, - "Min": { - "type": "integer" - } - }, - "type": "object" - }, - "BaselineEbsBandwidthMbpsRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "integer" - }, - "Min": { - "type": "integer" - } - }, - "type": "object" - }, - "BaselinePerformanceFactorsRequest": { - "additionalProperties": false, - "properties": { - "Cpu": { - "$ref": "#/definitions/CpuPerformanceFactorRequest" - } - }, - "type": "object" - }, - "CapacityRebalance": { - "additionalProperties": false, - "properties": { - "ReplacementStrategy": { - "enum": [ - "launch", - "launch-before-terminate" - ], - "type": "string" - }, - "TerminationDelay": { - "type": "integer" - } - }, - "type": "object" - }, - "CapacityReservationOptionsRequest": { - "additionalProperties": false, - "properties": { - "UsageStrategy": { - "enum": [ - "use-capacity-reservations-first" - ], - "type": "string" - } - }, - "type": "object" - }, - "CpuPerformanceFactorRequest": { - "additionalProperties": false, - "properties": { - "References": { - "items": { - "$ref": "#/definitions/PerformanceFactorReferenceRequest" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "FleetLaunchTemplateConfigRequest": { - "additionalProperties": false, - "properties": { - "LaunchTemplateSpecification": { - "$ref": "#/definitions/FleetLaunchTemplateSpecificationRequest" - }, - "Overrides": { - "items": { - "$ref": "#/definitions/FleetLaunchTemplateOverridesRequest" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "FleetLaunchTemplateOverridesRequest": { - "additionalProperties": false, - "properties": { - "AvailabilityZone": { - "type": "string" - }, - "InstanceRequirements": { - "$ref": "#/definitions/InstanceRequirementsRequest" - }, - "InstanceType": { - "type": "string" - }, - "MaxPrice": { - "type": "string" - }, - "Placement": { - "$ref": "#/definitions/Placement" - }, - "Priority": { - "type": "number" - }, - "SubnetId": { - "type": "string" - }, - "WeightedCapacity": { - "type": "number" - } - }, - "type": "object" - }, - "FleetLaunchTemplateSpecificationRequest": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "maxLength": 128, - "minLength": 3, - "pattern": "[a-zA-Z0-9\\(\\)\\.\\-/_]+", - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "InstanceRequirementsRequest": { - "additionalProperties": false, - "properties": { - "AcceleratorCount": { - "$ref": "#/definitions/AcceleratorCountRequest" - }, - "AcceleratorManufacturers": { - "items": { - "enum": [ - "amazon-web-services", - "amd", - "habana", - "nvidia", - "xilinx" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AcceleratorNames": { - "items": { - "enum": [ - "a10g", - "a100", - "h100", - "inferentia", - "k520", - "k80", - "m60", - "radeon-pro-v520", - "t4", - "t4g", - "vu9p", - "v100" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AcceleratorTotalMemoryMiB": { - "$ref": "#/definitions/AcceleratorTotalMemoryMiBRequest" - }, - "AcceleratorTypes": { - "items": { - "enum": [ - "gpu", - "fpga", - "inference" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AllowedInstanceTypes": { - "items": { - "maxLength": 30, - "minLength": 1, - "pattern": "[a-zA-Z0-9\\.\\*]+", - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "BareMetal": { - "enum": [ - "included", - "required", - "excluded" - ], - "type": "string" - }, - "BaselineEbsBandwidthMbps": { - "$ref": "#/definitions/BaselineEbsBandwidthMbpsRequest" - }, - "BurstablePerformance": { - "enum": [ - "included", - "required", - "excluded" - ], - "type": "string" - }, - "CpuManufacturers": { - "items": { - "enum": [ - "intel", - "amd", - "amazon-web-services", - "apple" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ExcludedInstanceTypes": { - "items": { - "maxLength": 30, - "minLength": 1, - "pattern": "[a-zA-Z0-9\\.\\*]+", - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "InstanceGenerations": { - "items": { - "enum": [ - "current", - "previous" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "LocalStorage": { - "enum": [ - "included", - "required", - "excluded" - ], - "type": "string" - }, - "LocalStorageTypes": { - "items": { - "enum": [ - "hdd", - "ssd" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": { - "type": "integer" - }, - "MemoryGiBPerVCpu": { - "$ref": "#/definitions/MemoryGiBPerVCpuRequest" - }, - "MemoryMiB": { - "$ref": "#/definitions/MemoryMiBRequest" - }, - "NetworkBandwidthGbps": { - "$ref": "#/definitions/NetworkBandwidthGbpsRequest" - }, - "NetworkInterfaceCount": { - "$ref": "#/definitions/NetworkInterfaceCountRequest" - }, - "OnDemandMaxPricePercentageOverLowestPrice": { - "type": "integer" - }, - "RequireHibernateSupport": { - "type": "boolean" - }, - "SpotMaxPricePercentageOverLowestPrice": { - "type": "integer" - }, - "TotalLocalStorageGB": { - "$ref": "#/definitions/TotalLocalStorageGBRequest" - }, - "VCpuCount": { - "$ref": "#/definitions/VCpuCountRangeRequest" - } - }, - "type": "object" - }, - "MaintenanceStrategies": { - "additionalProperties": false, - "properties": { - "CapacityRebalance": { - "$ref": "#/definitions/CapacityRebalance" - } - }, - "type": "object" - }, - "MemoryGiBPerVCpuRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "number" - }, - "Min": { - "type": "number" - } - }, - "type": "object" - }, - "MemoryMiBRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "integer" - }, - "Min": { - "type": "integer" - } - }, - "type": "object" - }, - "NetworkBandwidthGbpsRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "number" - }, - "Min": { - "type": "number" - } - }, - "type": "object" - }, - "NetworkInterfaceCountRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "integer" - }, - "Min": { - "type": "integer" - } - }, - "type": "object" - }, - "OnDemandOptionsRequest": { - "additionalProperties": false, - "properties": { - "AllocationStrategy": { - "type": "string" - }, - "CapacityReservationOptions": { - "$ref": "#/definitions/CapacityReservationOptionsRequest" - }, - "MaxTotalPrice": { - "type": "string" - }, - "MinTargetCapacity": { - "type": "integer" - }, - "SingleAvailabilityZone": { - "type": "boolean" - }, - "SingleInstanceType": { - "type": "boolean" - } - }, - "type": "object" - }, - "PerformanceFactorReferenceRequest": { - "additionalProperties": false, - "properties": { - "InstanceFamily": { - "type": "string" - } - }, - "type": "object" - }, - "Placement": { - "additionalProperties": false, - "properties": { - "Affinity": { - "type": "string" - }, - "AvailabilityZone": { - "type": "string" - }, - "GroupName": { - "type": "string" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "PartitionNumber": { - "type": "integer" - }, - "SpreadDomain": { - "type": "string" - }, - "Tenancy": { - "type": "string" - } - }, - "type": "object" - }, - "SpotOptionsRequest": { - "additionalProperties": false, - "properties": { - "AllocationStrategy": { - "enum": [ - "lowest-price", - "lowestPrice", - "diversified", - "capacityOptimized", - "capacity-optimized", - "capacityOptimizedPrioritized", - "capacity-optimized-prioritized", - "priceCapacityOptimized", - "price-capacity-optimized" - ], - "type": "string" - }, - "InstanceInterruptionBehavior": { - "enum": [ - "hibernate", - "stop", - "terminate" - ], - "type": "string" - }, - "InstancePoolsToUseCount": { - "type": "integer" - }, - "MaintenanceStrategies": { - "$ref": "#/definitions/MaintenanceStrategies" - }, - "MaxTotalPrice": { - "type": "string" - }, - "MinTargetCapacity": { - "type": "integer" - }, - "SingleAvailabilityZone": { - "type": "boolean" - }, - "SingleInstanceType": { - "type": "boolean" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TagSpecification": { - "additionalProperties": false, - "properties": { - "ResourceType": { - "enum": [ - "client-vpn-endpoint", - "customer-gateway", - "dedicated-host", - "dhcp-options", - "egress-only-internet-gateway", - "elastic-gpu", - "elastic-ip", - "export-image-task", - "export-instance-task", - "fleet", - "fpga-image", - "host-reservation", - "image", - "import-image-task", - "import-snapshot-task", - "instance", - "internet-gateway", - "key-pair", - "launch-template", - "local-gateway-route-table-vpc-association", - "natgateway", - "network-acl", - "network-insights-analysis", - "network-insights-path", - "network-interface", - "placement-group", - "reserved-instances", - "route-table", - "security-group", - "snapshot", - "spot-fleet-request", - "spot-instances-request", - "subnet", - "traffic-mirror-filter", - "traffic-mirror-session", - "traffic-mirror-target", - "transit-gateway", - "transit-gateway-attachment", - "transit-gateway-connect-peer", - "transit-gateway-multicast-domain", - "transit-gateway-route-table", - "volume", - "vpc", - "vpc-flow-log", - "vpc-peering-connection", - "vpn-connection", - "vpn-gateway" - ], - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "TargetCapacitySpecificationRequest": { - "additionalProperties": false, - "properties": { - "DefaultTargetCapacityType": { - "enum": [ - "on-demand", - "spot" - ], - "type": "string" - }, - "OnDemandTargetCapacity": { - "type": "integer" - }, - "SpotTargetCapacity": { - "type": "integer" - }, - "TargetCapacityUnitType": { - "enum": [ - "vcpu", - "memory-mib", - "units" - ], - "type": "string" - }, - "TotalTargetCapacity": { - "type": "integer" - } - }, - "required": [ - "TotalTargetCapacity" - ], - "type": "object" - }, - "TotalLocalStorageGBRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "number" - }, - "Min": { - "type": "number" - } - }, - "type": "object" - }, - "VCpuCountRangeRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "integer" - }, - "Min": { - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::EC2Fleet", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateFleet", - "ec2:DescribeFleets" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeFleets", - "ec2:DeleteFleets" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeFleets" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeFleets" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyFleet", - "ec2:DescribeFleets" - ] - } - }, - "primaryIdentifier": [ - "/properties/FleetId" - ], - "properties": { - "Context": { - "type": "string" - }, - "ExcessCapacityTerminationPolicy": { - "enum": [ - "termination", - "no-termination" - ], - "type": "string" - }, - "FleetId": { - "type": "string" - }, - "LaunchTemplateConfigs": { - "items": { - "$ref": "#/definitions/FleetLaunchTemplateConfigRequest" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": false - }, - "OnDemandOptions": { - "$ref": "#/definitions/OnDemandOptionsRequest" - }, - "ReplaceUnhealthyInstances": { - "type": "boolean" - }, - "SpotOptions": { - "$ref": "#/definitions/SpotOptionsRequest" - }, - "TagSpecifications": { - "items": { - "$ref": "#/definitions/TagSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "TargetCapacitySpecification": { - "$ref": "#/definitions/TargetCapacitySpecificationRequest" - }, - "TerminateInstancesWithExpiration": { - "type": "boolean" - }, - "Type": { - "enum": [ - "maintain", - "request", - "instant" - ], - "type": "string" - }, - "ValidFrom": { - "type": "string" - }, - "ValidUntil": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/FleetId" - ], - "required": [ - "TargetCapacitySpecification", - "LaunchTemplateConfigs" - ], - "typeName": "AWS::EC2::EC2Fleet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LaunchTemplateConfigs", + "/properties/OnDemandOptions", + "/properties/ReplaceUnhealthyInstances", + "/properties/SpotOptions", + "/properties/TagSpecifications", + "/properties/TerminateInstancesWithExpiration", + "/properties/Type", + "/properties/ValidFrom", + "/properties/ValidUntil" + ], + "definitions": { + "AcceleratorCountRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "AcceleratorTotalMemoryMiBRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "BaselineEbsBandwidthMbpsRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "BaselinePerformanceFactorsRequest": { + "additionalProperties": false, + "properties": { + "Cpu": { + "$ref": "#/definitions/CpuPerformanceFactorRequest" + } + }, + "type": "object" + }, + "BlockDeviceMapping": { + "additionalProperties": false, + "properties": { + "DeviceName": { + "type": "string" + }, + "Ebs": { + "$ref": "#/definitions/EbsBlockDevice" + }, + "NoDevice": { + "type": "string" + }, + "VirtualName": { + "type": "string" + } + }, + "type": "object" + }, + "CapacityRebalance": { + "additionalProperties": false, + "properties": { + "ReplacementStrategy": { + "enum": [ + "launch", + "launch-before-terminate" + ], + "type": "string" + }, + "TerminationDelay": { + "type": "integer" + } + }, + "type": "object" + }, + "CapacityReservationOptionsRequest": { + "additionalProperties": false, + "properties": { + "UsageStrategy": { + "enum": [ + "use-capacity-reservations-first" + ], + "type": "string" + } + }, + "type": "object" + }, + "CpuPerformanceFactorRequest": { + "additionalProperties": false, + "properties": { + "References": { + "items": { + "$ref": "#/definitions/PerformanceFactorReferenceRequest" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EbsBlockDevice": { + "additionalProperties": false, + "properties": { + "DeleteOnTermination": { + "type": "boolean" + }, + "Encrypted": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "KmsKeyId": { + "type": "string" + }, + "SnapshotId": { + "type": "string" + }, + "VolumeSize": { + "type": "integer" + }, + "VolumeType": { + "enum": [ + "gp2", + "gp3", + "io1", + "io2", + "sc1", + "st1", + "standard" + ], + "type": "string" + } + }, + "type": "object" + }, + "FleetLaunchTemplateConfigRequest": { + "additionalProperties": false, + "properties": { + "LaunchTemplateSpecification": { + "$ref": "#/definitions/FleetLaunchTemplateSpecificationRequest" + }, + "Overrides": { + "items": { + "$ref": "#/definitions/FleetLaunchTemplateOverridesRequest" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "FleetLaunchTemplateOverridesRequest": { + "additionalProperties": false, + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "InstanceRequirements": { + "$ref": "#/definitions/InstanceRequirementsRequest" + }, + "InstanceType": { + "type": "string" + }, + "MaxPrice": { + "type": "string" + }, + "Placement": { + "$ref": "#/definitions/Placement" + }, + "Priority": { + "type": "number" + }, + "SubnetId": { + "type": "string" + }, + "WeightedCapacity": { + "type": "number" + } + }, + "type": "object" + }, + "FleetLaunchTemplateSpecificationRequest": { + "additionalProperties": false, + "properties": { + "LaunchTemplateId": { + "type": "string" + }, + "LaunchTemplateName": { + "maxLength": 128, + "minLength": 3, + "pattern": "[a-zA-Z0-9\\(\\)\\.\\-/_]+", + "type": "string" + }, + "Version": { + "type": "string" + } + }, + "required": [ + "Version" + ], + "type": "object" + }, + "InstanceRequirementsRequest": { + "additionalProperties": false, + "properties": { + "AcceleratorCount": { + "$ref": "#/definitions/AcceleratorCountRequest" + }, + "AcceleratorManufacturers": { + "items": { + "enum": [ + "amazon-web-services", + "amd", + "habana", + "nvidia", + "xilinx" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AcceleratorNames": { + "items": { + "enum": [ + "a10g", + "a100", + "h100", + "inferentia", + "k520", + "k80", + "m60", + "radeon-pro-v520", + "t4", + "t4g", + "vu9p", + "v100" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AcceleratorTotalMemoryMiB": { + "$ref": "#/definitions/AcceleratorTotalMemoryMiBRequest" + }, + "AcceleratorTypes": { + "items": { + "enum": [ + "gpu", + "fpga", + "inference" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AllowedInstanceTypes": { + "items": { + "maxLength": 30, + "minLength": 1, + "pattern": "[a-zA-Z0-9\\.\\*]+", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "BareMetal": { + "enum": [ + "included", + "required", + "excluded" + ], + "type": "string" + }, + "BaselineEbsBandwidthMbps": { + "$ref": "#/definitions/BaselineEbsBandwidthMbpsRequest" + }, + "BaselinePerformanceFactors": { + "$ref": "#/definitions/BaselinePerformanceFactorsRequest" + }, + "BurstablePerformance": { + "enum": [ + "included", + "required", + "excluded" + ], + "type": "string" + }, + "CpuManufacturers": { + "items": { + "enum": [ + "intel", + "amd", + "amazon-web-services", + "apple" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ExcludedInstanceTypes": { + "items": { + "maxLength": 30, + "minLength": 1, + "pattern": "[a-zA-Z0-9\\.\\*]+", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "InstanceGenerations": { + "items": { + "enum": [ + "current", + "previous" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "LocalStorage": { + "enum": [ + "included", + "required", + "excluded" + ], + "type": "string" + }, + "LocalStorageTypes": { + "items": { + "enum": [ + "hdd", + "ssd" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": { + "type": "integer" + }, + "MemoryGiBPerVCpu": { + "$ref": "#/definitions/MemoryGiBPerVCpuRequest" + }, + "MemoryMiB": { + "$ref": "#/definitions/MemoryMiBRequest" + }, + "NetworkBandwidthGbps": { + "$ref": "#/definitions/NetworkBandwidthGbpsRequest" + }, + "NetworkInterfaceCount": { + "$ref": "#/definitions/NetworkInterfaceCountRequest" + }, + "OnDemandMaxPricePercentageOverLowestPrice": { + "type": "integer" + }, + "RequireHibernateSupport": { + "type": "boolean" + }, + "SpotMaxPricePercentageOverLowestPrice": { + "type": "integer" + }, + "TotalLocalStorageGB": { + "$ref": "#/definitions/TotalLocalStorageGBRequest" + }, + "VCpuCount": { + "$ref": "#/definitions/VCpuCountRangeRequest" + } + }, + "type": "object" + }, + "MaintenanceStrategies": { + "additionalProperties": false, + "properties": { + "CapacityRebalance": { + "$ref": "#/definitions/CapacityRebalance" + } + }, + "type": "object" + }, + "MemoryGiBPerVCpuRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "number" + }, + "Min": { + "type": "number" + } + }, + "type": "object" + }, + "MemoryMiBRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "NetworkBandwidthGbpsRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "number" + }, + "Min": { + "type": "number" + } + }, + "type": "object" + }, + "NetworkInterfaceCountRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "OnDemandOptionsRequest": { + "additionalProperties": false, + "properties": { + "AllocationStrategy": { + "type": "string" + }, + "CapacityReservationOptions": { + "$ref": "#/definitions/CapacityReservationOptionsRequest" + }, + "MaxTotalPrice": { + "type": "string" + }, + "MinTargetCapacity": { + "type": "integer" + }, + "SingleAvailabilityZone": { + "type": "boolean" + }, + "SingleInstanceType": { + "type": "boolean" + } + }, + "type": "object" + }, + "PerformanceFactorReferenceRequest": { + "additionalProperties": false, + "properties": { + "InstanceFamily": { + "type": "string" + } + }, + "type": "object" + }, + "Placement": { + "additionalProperties": false, + "properties": { + "Affinity": { + "type": "string" + }, + "AvailabilityZone": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "HostId": { + "type": "string" + }, + "HostResourceGroupArn": { + "type": "string" + }, + "PartitionNumber": { + "type": "integer" + }, + "SpreadDomain": { + "type": "string" + }, + "Tenancy": { + "type": "string" + } + }, + "type": "object" + }, + "SpotOptionsRequest": { + "additionalProperties": false, + "properties": { + "AllocationStrategy": { + "enum": [ + "lowest-price", + "lowestPrice", + "diversified", + "capacityOptimized", + "capacity-optimized", + "capacityOptimizedPrioritized", + "capacity-optimized-prioritized", + "priceCapacityOptimized", + "price-capacity-optimized" + ], + "type": "string" + }, + "InstanceInterruptionBehavior": { + "enum": [ + "hibernate", + "stop", + "terminate" + ], + "type": "string" + }, + "InstancePoolsToUseCount": { + "type": "integer" + }, + "MaintenanceStrategies": { + "$ref": "#/definitions/MaintenanceStrategies" + }, + "MaxTotalPrice": { + "type": "string" + }, + "MinTargetCapacity": { + "type": "integer" + }, + "SingleAvailabilityZone": { + "type": "boolean" + }, + "SingleInstanceType": { + "type": "boolean" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "enum": [ + "client-vpn-endpoint", + "customer-gateway", + "dedicated-host", + "dhcp-options", + "egress-only-internet-gateway", + "elastic-gpu", + "elastic-ip", + "export-image-task", + "export-instance-task", + "fleet", + "fpga-image", + "host-reservation", + "image", + "import-image-task", + "import-snapshot-task", + "instance", + "internet-gateway", + "key-pair", + "launch-template", + "local-gateway-route-table-vpc-association", + "natgateway", + "network-acl", + "network-insights-analysis", + "network-insights-path", + "network-interface", + "placement-group", + "reserved-instances", + "route-table", + "security-group", + "snapshot", + "spot-fleet-request", + "spot-instances-request", + "subnet", + "traffic-mirror-filter", + "traffic-mirror-session", + "traffic-mirror-target", + "transit-gateway", + "transit-gateway-attachment", + "transit-gateway-connect-peer", + "transit-gateway-multicast-domain", + "transit-gateway-route-table", + "volume", + "vpc", + "vpc-flow-log", + "vpc-peering-connection", + "vpn-connection", + "vpn-gateway" + ], + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "TargetCapacitySpecificationRequest": { + "additionalProperties": false, + "properties": { + "DefaultTargetCapacityType": { + "enum": [ + "on-demand", + "spot" + ], + "type": "string" + }, + "OnDemandTargetCapacity": { + "type": "integer" + }, + "SpotTargetCapacity": { + "type": "integer" + }, + "TargetCapacityUnitType": { + "enum": [ + "vcpu", + "memory-mib", + "units" + ], + "type": "string" + }, + "TotalTargetCapacity": { + "type": "integer" + } + }, + "required": [ + "TotalTargetCapacity" + ], + "type": "object" + }, + "TotalLocalStorageGBRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "number" + }, + "Min": { + "type": "number" + } + }, + "type": "object" + }, + "VCpuCountRangeRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::EC2Fleet", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateFleet", + "ec2:DescribeFleets" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeFleets", + "ec2:DeleteFleets" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeFleets" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeFleets" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyFleet", + "ec2:DescribeFleets" + ] + } + }, + "primaryIdentifier": [ + "/properties/FleetId" + ], + "properties": { + "Context": { + "type": "string" + }, + "ExcessCapacityTerminationPolicy": { + "enum": [ + "termination", + "no-termination" + ], + "type": "string" + }, + "FleetId": { + "type": "string" + }, + "LaunchTemplateConfigs": { + "items": { + "$ref": "#/definitions/FleetLaunchTemplateConfigRequest" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": false + }, + "OnDemandOptions": { + "$ref": "#/definitions/OnDemandOptionsRequest" + }, + "ReplaceUnhealthyInstances": { + "type": "boolean" + }, + "SpotOptions": { + "$ref": "#/definitions/SpotOptionsRequest" + }, + "TagSpecifications": { + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "TargetCapacitySpecification": { + "$ref": "#/definitions/TargetCapacitySpecificationRequest" + }, + "TerminateInstancesWithExpiration": { + "type": "boolean" + }, + "Type": { + "enum": [ + "maintain", + "request", + "instant" + ], + "type": "string" + }, + "ValidFrom": { + "type": "string" + }, + "ValidUntil": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/FleetId" + ], + "required": [ + "TargetCapacitySpecification", + "LaunchTemplateConfigs" + ], + "typeName": "AWS::EC2::EC2Fleet" +} diff --git a/src/schema/aws-ec2-egressonlyinternetgateway.json b/src/schema/aws-ec2-egressonlyinternetgateway.json index 0b94c52e..147b32e8 100644 --- a/src/schema/aws-ec2-egressonlyinternetgateway.json +++ b/src/schema/aws-ec2-egressonlyinternetgateway.json @@ -1,59 +1,59 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/VpcId" - ], - "description": "Resource Type definition for AWS::EC2::EgressOnlyInternetGateway", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateEgressOnlyInternetGateway", - "ec2:DescribeEgressOnlyInternetGateways" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteEgressOnlyInternetGateway", - "ec2:DescribeEgressOnlyInternetGateways", - "ec2:DescribeVpcs" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeEgressOnlyInternetGateways" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeEgressOnlyInternetGateways" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "description": "Service Generated ID of the EgressOnlyInternetGateway", - "type": "string" - }, - "VpcId": { - "description": "The ID of the VPC for which to create the egress-only internet gateway.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "VpcId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::EgressOnlyInternetGateway" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcId" + ], + "description": "Resource Type definition for AWS::EC2::EgressOnlyInternetGateway", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateEgressOnlyInternetGateway", + "ec2:DescribeEgressOnlyInternetGateways" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteEgressOnlyInternetGateway", + "ec2:DescribeEgressOnlyInternetGateways", + "ec2:DescribeVpcs" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeEgressOnlyInternetGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeEgressOnlyInternetGateways" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "Service Generated ID of the EgressOnlyInternetGateway", + "type": "string" + }, + "VpcId": { + "description": "The ID of the VPC for which to create the egress-only internet gateway.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "VpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::EgressOnlyInternetGateway" +} diff --git a/src/schema/aws-ec2-eip.json b/src/schema/aws-ec2-eip.json index 8b39a14f..eda39179 100644 --- a/src/schema/aws-ec2-eip.json +++ b/src/schema/aws-ec2-eip.json @@ -1,142 +1,147 @@ -{ - "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/blob/master/src/main/resources/schema/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Domain", - "/properties/NetworkBorderGroup", - "/properties/TransferAddress", - "/properties/IpamPoolId", - "/properties/Address" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", - "properties": { - "Key": { - "description": "The tag key.", - "type": "string" - }, - "Value": { - "description": "The tag value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Specifies an Elastic IP (EIP) address and can, optionally, associate it with an Amazon EC2 instance.\n You can allocate an Elastic IP address from an address pool owned by AWS or from an address pool created from a public IPv4 address range that you have brought to AWS for use with your AWS resources using bring your own IP addresses (BYOIP). For more information, see [Bring Your Own IP Addresses (BYOIP)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html) in the *Amazon EC2 User Guide*.\n For more information, see [Elastic IP Addresses](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) in the *Amazon EC2 User Guide*.", - "handlers": { - "create": { - "permissions": [ - "ec2:AllocateAddress", - "ec2:AcceptAddressTransfer", - "ec2:DescribeAddresses", - "ec2:AssociateAddress", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:ReleaseAddress", - "ec2:DescribeAddresses", - "ec2:DisassociateAddress" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeAddresses" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeAddresses" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeAddresses", - "ec2:DisassociateAddress", - "ec2:DeleteTags", - "ec2:CreateTags", - "ec2:AssociateAddress" - ] - } - }, - "primaryIdentifier": [ - "/properties/PublicIp", - "/properties/AllocationId" - ], - "properties": { - "Address": { - "description": "", - "type": "string" - }, - "AllocationId": { - "description": "", - "type": "string" - }, - "Domain": { - "description": "The network (``vpc``).\n If you define an Elastic IP address and associate it with a VPC that is defined in the same template, you must declare a dependency on the VPC-gateway attachment by using the [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) on this resource.", - "type": "string" - }, - "InstanceId": { - "description": "The ID of the instance.\n Updates to the ``InstanceId`` property may require *some interruptions*. Updates on an EIP reassociates the address on its associated resource.", - "type": "string" - }, - "IpamPoolId": { - "description": "", - "type": "string" - }, - "NetworkBorderGroup": { - "description": "A unique set of Availability Zones, Local Zones, or Wavelength Zones from which AWS advertises IP addresses. Use this parameter to limit the IP address to this location. IP addresses cannot move between network border groups.\n Use [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) to view the network border groups.", - "type": "string" - }, - "PublicIp": { - "description": "", - "type": "string" - }, - "PublicIpv4Pool": { - "description": "The ID of an address pool that you own. Use this parameter to let Amazon EC2 select an address from the address pool.\n Updates to the ``PublicIpv4Pool`` property may require *some interruptions*. Updates on an EIP reassociates the address on its associated resource.", - "type": "string" - }, - "Tags": { - "description": "Any tags assigned to the Elastic IP address.\n Updates to the ``Tags`` property may require *some interruptions*. Updates on an EIP reassociates the address on its associated resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TransferAddress": { - "description": "The Elastic IP address you are accepting for transfer. You can only accept one transferred address. For more information on Elastic IP address transfers, see [Transfer Elastic IP addresses](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-eips.html#transfer-EIPs-intro) in the *Amazon Virtual Private Cloud User Guide*.", - "type": "string" - } - }, - "propertyTransform": { - "/properties/Domain": "\"vpc\"" - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/AllocationId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::EIP", - "writeOnlyProperties": [ - "/properties/TransferAddress", - "/properties/IpamPoolId", - "/properties/Address" - ] -} +{ + "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/blob/master/src/main/resources/schema/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Domain", + "/properties/NetworkBorderGroup", + "/properties/TransferAddress", + "/properties/IpamPoolId", + "/properties/Address" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies an Elastic IP (EIP) address and can, optionally, associate it with an Amazon EC2 instance.\n You can allocate an Elastic IP address from an address pool owned by AWS or from an address pool created from a public IPv4 address range that you have brought to AWS for use with your AWS resources using bring your own IP addresses (BYOIP). For more information, see [Bring Your Own IP Addresses (BYOIP)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html) in the *Amazon EC2 User Guide*.\n For more information, see [Elastic IP Addresses](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) in the *Amazon EC2 User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:AllocateAddress", + "ec2:AcceptAddressTransfer", + "ec2:DescribeAddresses", + "ec2:AssociateAddress", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:ReleaseAddress", + "ec2:DescribeAddresses", + "ec2:DisassociateAddress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeAddresses" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeAddresses" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeAddresses", + "ec2:DisassociateAddress", + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:AssociateAddress" + ] + } + }, + "primaryIdentifier": [ + "/properties/PublicIp", + "/properties/AllocationId" + ], + "properties": { + "Address": { + "description": "", + "type": "string" + }, + "AllocationId": { + "description": "", + "type": "string" + }, + "Domain": { + "description": "The network (``vpc``).\n If you define an Elastic IP address and associate it with a VPC that is defined in the same template, you must declare a dependency on the VPC-gateway attachment by using the [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) on this resource.", + "type": "string" + }, + "InstanceId": { + "description": "The ID of the instance.\n Updates to the ``InstanceId`` property may require *some interruptions*. Updates on an EIP reassociates the address on its associated resource.", + "type": "string" + }, + "IpamPoolId": { + "description": "", + "type": "string" + }, + "NetworkBorderGroup": { + "description": "A unique set of Availability Zones, Local Zones, or Wavelength Zones from which AWS advertises IP addresses. Use this parameter to limit the IP address to this location. IP addresses cannot move between network border groups.\n Use [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) to view the network border groups.", + "type": "string" + }, + "PublicIp": { + "description": "", + "type": "string" + }, + "PublicIpv4Pool": { + "description": "The ID of an address pool that you own. Use this parameter to let Amazon EC2 select an address from the address pool.\n Updates to the ``PublicIpv4Pool`` property may require *some interruptions*. Updates on an EIP reassociates the address on its associated resource.", + "type": "string" + }, + "Tags": { + "description": "Any tags assigned to the Elastic IP address.\n Updates to the ``Tags`` property may require *some interruptions*. Updates on an EIP reassociates the address on its associated resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TransferAddress": { + "description": "The Elastic IP address you are accepting for transfer. You can only accept one transferred address. For more information on Elastic IP address transfers, see [Transfer Elastic IP addresses](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-eips.html#transfer-EIPs-intro) in the *Amazon Virtual Private Cloud User Guide*.", + "type": "string" + } + }, + "propertyTransform": { + "/properties/Domain": "\"vpc\"" + }, + "readOnlyProperties": [ + "/properties/PublicIp", + "/properties/AllocationId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::EIP", + "writeOnlyProperties": [ + "/properties/TransferAddress", + "/properties/IpamPoolId", + "/properties/Address" + ] +} diff --git a/src/schema/aws-ec2-eipassociation.json b/src/schema/aws-ec2-eipassociation.json index 2c29bb27..fff0fe09 100644 --- a/src/schema/aws-ec2-eipassociation.json +++ b/src/schema/aws-ec2-eipassociation.json @@ -1,76 +1,76 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AllocationId", - "/properties/NetworkInterfaceId", - "/properties/InstanceId", - "/properties/PrivateIpAddress", - "/properties/EIP" - ], - "deprecatedProperties": [ - "/properties/EIP" - ], - "description": "Associates an Elastic IP address with an instance or a network interface. Before you can use an Elastic IP address, you must allocate it to your account. For more information about working with Elastic IP addresses, see [Elastic IP address concepts and rules](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-eips.html#vpc-eip-overview).\n You must specify ``AllocationId`` and either ``InstanceId``, ``NetworkInterfaceId``, or ``PrivateIpAddress``.", - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeAddresses", - "ec2:AssociateAddress" - ] - }, - "delete": { - "permissions": [ - "ec2:DisassociateAddress", - "ec2:DescribeAddresses" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeAddresses" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeAddresses" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AllocationId": { - "description": "The allocation ID. This is required.", - "type": "string" - }, - "EIP": { - "description": "", - "type": "string" - }, - "Id": { - "description": "", - "type": "string" - }, - "InstanceId": { - "description": "The ID of the instance. The instance must have exactly one attached network interface. You can specify either the instance ID or the network interface ID, but not both.", - "type": "string" - }, - "NetworkInterfaceId": { - "description": "The ID of the network interface. If the instance has more than one network interface, you must specify a network interface ID.\n You can specify either the instance ID or the network interface ID, but not both.", - "type": "string" - }, - "PrivateIpAddress": { - "description": "The primary or secondary private IP address to associate with the Elastic IP address. If no private IP address is specified, the Elastic IP address is associated with the primary private IP address.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "replacementStrategy": "delete_then_create", - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2/tree/master/aws-ec2-eipassociation", - "tagging": { - "taggable": false - }, - "typeName": "AWS::EC2::EIPAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AllocationId", + "/properties/NetworkInterfaceId", + "/properties/InstanceId", + "/properties/PrivateIpAddress", + "/properties/EIP" + ], + "deprecatedProperties": [ + "/properties/EIP" + ], + "description": "Associates an Elastic IP address with an instance or a network interface. Before you can use an Elastic IP address, you must allocate it to your account. For more information about working with Elastic IP addresses, see [Elastic IP address concepts and rules](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-eips.html#vpc-eip-overview).\n You must specify ``AllocationId`` and either ``InstanceId``, ``NetworkInterfaceId``, or ``PrivateIpAddress``.", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeAddresses", + "ec2:AssociateAddress" + ] + }, + "delete": { + "permissions": [ + "ec2:DisassociateAddress", + "ec2:DescribeAddresses" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeAddresses" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeAddresses" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AllocationId": { + "description": "The allocation ID. This is required.", + "type": "string" + }, + "EIP": { + "description": "", + "type": "string" + }, + "Id": { + "description": "", + "type": "string" + }, + "InstanceId": { + "description": "The ID of the instance. The instance must have exactly one attached network interface. You can specify either the instance ID or the network interface ID, but not both.", + "type": "string" + }, + "NetworkInterfaceId": { + "description": "The ID of the network interface. If the instance has more than one network interface, you must specify a network interface ID.\n You can specify either the instance ID or the network interface ID, but not both.", + "type": "string" + }, + "PrivateIpAddress": { + "description": "The primary or secondary private IP address to associate with the Elastic IP address. If no private IP address is specified, the Elastic IP address is associated with the primary private IP address.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "replacementStrategy": "delete_then_create", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2/tree/master/aws-ec2-eipassociation", + "tagging": { + "taggable": false + }, + "typeName": "AWS::EC2::EIPAssociation" +} diff --git a/src/schema/aws-ec2-enclavecertificateiamroleassociation.json b/src/schema/aws-ec2-enclavecertificateiamroleassociation.json index 3f7d1fe5..7c40a518 100644 --- a/src/schema/aws-ec2-enclavecertificateiamroleassociation.json +++ b/src/schema/aws-ec2-enclavecertificateiamroleassociation.json @@ -1,73 +1,75 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CertificateArn", - "/properties/RoleArn" - ], - "description": "Associates an AWS Identity and Access Management (IAM) role with an AWS Certificate Manager (ACM) certificate. This association is based on Amazon Resource Names and it enables the certificate to be used by the ACM for Nitro Enclaves application inside an enclave.", - "handlers": { - "create": { - "permissions": [ - "ec2:AssociateEnclaveCertificateIamRole" - ] - }, - "delete": { - "permissions": [ - "ec2:DisassociateEnclaveCertificateIamRole" - ] - }, - "list": { - "permissions": [ - "ec2:GetAssociatedEnclaveCertificateIamRoles" - ] - }, - "read": { - "permissions": [ - "ec2:GetAssociatedEnclaveCertificateIamRoles" - ] - } - }, - "primaryIdentifier": [ - "/properties/CertificateArn", - "/properties/RoleArn" - ], - "properties": { - "CertificateArn": { - "description": "The Amazon Resource Name (ARN) of the ACM certificate with which to associate the IAM role.", - "maxLength": 1283, - "minLength": 1, - "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:acm:[A-Za-z0-9-]{1,64}:([0-9]{12})?:certificate/.+$", - "type": "string" - }, - "CertificateS3BucketName": { - "description": "The name of the Amazon S3 bucket to which the certificate was uploaded.", - "type": "string" - }, - "CertificateS3ObjectKey": { - "description": "The Amazon S3 object key where the certificate, certificate chain, and encrypted private key bundle are stored.", - "type": "string" - }, - "EncryptionKmsKeyId": { - "description": "The ID of the AWS KMS CMK used to encrypt the private key of the certificate.", - "type": "string" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) of the IAM role to associate with the ACM certificate. You can associate up to 16 IAM roles with an ACM certificate.", - "maxLength": 1283, - "minLength": 1, - "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:iam:.*:([0-9]{12})?:role/.+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CertificateS3BucketName", - "/properties/CertificateS3ObjectKey", - "/properties/EncryptionKmsKeyId" - ], - "required": [ - "CertificateArn", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-acmcerts.git", - "typeName": "AWS::EC2::EnclaveCertificateIamRoleAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CertificateArn", + "/properties/RoleArn" + ], + "description": "Associates an AWS Identity and Access Management (IAM) role with an AWS Certificate Manager (ACM) certificate. This association is based on Amazon Resource Names and it enables the certificate to be used by the ACM for Nitro Enclaves application inside an enclave.", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateEnclaveCertificateIamRole", + "ec2:GetAssociatedEnclaveCertificateIamRoles" + ] + }, + "delete": { + "permissions": [ + "ec2:DisassociateEnclaveCertificateIamRole", + "ec2:GetAssociatedEnclaveCertificateIamRoles" + ] + }, + "list": { + "permissions": [ + "ec2:GetAssociatedEnclaveCertificateIamRoles" + ] + }, + "read": { + "permissions": [ + "ec2:GetAssociatedEnclaveCertificateIamRoles" + ] + } + }, + "primaryIdentifier": [ + "/properties/CertificateArn", + "/properties/RoleArn" + ], + "properties": { + "CertificateArn": { + "description": "The Amazon Resource Name (ARN) of the ACM certificate with which to associate the IAM role.", + "maxLength": 1283, + "minLength": 1, + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:acm:[A-Za-z0-9-]{1,64}:([0-9]{12})?:certificate/.+$", + "type": "string" + }, + "CertificateS3BucketName": { + "description": "The name of the Amazon S3 bucket to which the certificate was uploaded.", + "type": "string" + }, + "CertificateS3ObjectKey": { + "description": "The Amazon S3 object key where the certificate, certificate chain, and encrypted private key bundle are stored.", + "type": "string" + }, + "EncryptionKmsKeyId": { + "description": "The ID of the AWS KMS CMK used to encrypt the private key of the certificate.", + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM role to associate with the ACM certificate. You can associate up to 16 IAM roles with an ACM certificate.", + "maxLength": 1283, + "minLength": 1, + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:iam:.*:([0-9]{12})?:role/.+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CertificateS3BucketName", + "/properties/CertificateS3ObjectKey", + "/properties/EncryptionKmsKeyId" + ], + "required": [ + "CertificateArn", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-acmcerts.git", + "typeName": "AWS::EC2::EnclaveCertificateIamRoleAssociation" +} diff --git a/src/schema/aws-ec2-flowlog.json b/src/schema/aws-ec2-flowlog.json index e4947548..d4d10b8c 100644 --- a/src/schema/aws-ec2-flowlog.json +++ b/src/schema/aws-ec2-flowlog.json @@ -1,190 +1,190 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DeliverCrossAccountRole", - "/properties/DeliverLogsPermissionArn", - "/properties/LogGroupName", - "/properties/LogDestination", - "/properties/ResourceId", - "/properties/TrafficType", - "/properties/LogDestinationType", - "/properties/ResourceType", - "/properties/LogFormat", - "/properties/MaxAggregationInterval", - "/properties/DestinationOptions" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Specifies a VPC flow log, which enables you to capture IP traffic for a specific network interface, subnet, or VPC.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateFlowLogs", - "ec2:DescribeFlowLogs", - "ec2:CreateTags", - "iam:PassRole", - "logs:CreateLogDelivery", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteFlowLogs", - "ec2:DescribeFlowLogs", - "logs:DeleteLogDelivery" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeFlowLogs" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeFlowLogs" - ] - }, - "update": { - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeFlowLogs" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DeliverCrossAccountRole": { - "description": "The ARN of the IAM role that allows Amazon EC2 to publish flow logs across accounts.", - "type": "string" - }, - "DeliverLogsPermissionArn": { - "description": "The ARN for the IAM role that permits Amazon EC2 to publish flow logs to a CloudWatch Logs log group in your account. If you specify LogDestinationType as s3 or kinesis-data-firehose, do not specify DeliverLogsPermissionArn or LogGroupName.", - "type": "string" - }, - "DestinationOptions": { - "additionalProperties": false, - "properties": { - "FileFormat": { - "enum": [ - "plain-text", - "parquet" - ], - "type": "string" - }, - "HiveCompatiblePartitions": { - "type": "boolean" - }, - "PerHourPartition": { - "type": "boolean" - } - }, - "required": [ - "FileFormat", - "HiveCompatiblePartitions", - "PerHourPartition" - ], - "type": "object" - }, - "Id": { - "description": "The Flow Log ID", - "type": "string" - }, - "LogDestination": { - "description": "Specifies the destination to which the flow log data is to be published. Flow log data can be published to a CloudWatch Logs log group, an Amazon S3 bucket, or a Kinesis Firehose stream. The value specified for this parameter depends on the value specified for LogDestinationType.", - "type": "string" - }, - "LogDestinationType": { - "description": "Specifies the type of destination to which the flow log data is to be published. Flow log data can be published to CloudWatch Logs or Amazon S3.", - "enum": [ - "cloud-watch-logs", - "s3", - "kinesis-data-firehose" - ], - "type": "string" - }, - "LogFormat": { - "description": "The fields to include in the flow log record, in the order in which they should appear.", - "type": "string" - }, - "LogGroupName": { - "description": "The name of a new or existing CloudWatch Logs log group where Amazon EC2 publishes your flow logs. If you specify LogDestinationType as s3 or kinesis-data-firehose, do not specify DeliverLogsPermissionArn or LogGroupName.", - "type": "string" - }, - "MaxAggregationInterval": { - "description": "The maximum interval of time during which a flow of packets is captured and aggregated into a flow log record. You can specify 60 seconds (1 minute) or 600 seconds (10 minutes).", - "type": "integer" - }, - "ResourceId": { - "description": "The ID of the subnet, network interface, or VPC for which you want to create a flow log.", - "type": "string" - }, - "ResourceType": { - "description": "The type of resource for which to create the flow log. For example, if you specified a VPC ID for the ResourceId property, specify VPC for this property.", - "enum": [ - "NetworkInterface", - "Subnet", - "VPC", - "TransitGateway", - "TransitGatewayAttachment" - ], - "type": "string" - }, - "Tags": { - "description": "The tags to apply to the flow logs.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TrafficType": { - "description": "The type of traffic to log. You can log traffic that the resource accepts or rejects, or all traffic.", - "enum": [ - "ACCEPT", - "ALL", - "REJECT" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ResourceType", - "ResourceId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-flowlog.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::FlowLog" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DeliverCrossAccountRole", + "/properties/DeliverLogsPermissionArn", + "/properties/LogGroupName", + "/properties/LogDestination", + "/properties/ResourceId", + "/properties/TrafficType", + "/properties/LogDestinationType", + "/properties/ResourceType", + "/properties/LogFormat", + "/properties/MaxAggregationInterval", + "/properties/DestinationOptions" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a VPC flow log, which enables you to capture IP traffic for a specific network interface, subnet, or VPC.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateFlowLogs", + "ec2:DescribeFlowLogs", + "ec2:CreateTags", + "iam:PassRole", + "logs:CreateLogDelivery", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteFlowLogs", + "ec2:DescribeFlowLogs", + "logs:DeleteLogDelivery" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeFlowLogs" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeFlowLogs" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeFlowLogs" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DeliverCrossAccountRole": { + "description": "The ARN of the IAM role that allows Amazon EC2 to publish flow logs across accounts.", + "type": "string" + }, + "DeliverLogsPermissionArn": { + "description": "The ARN for the IAM role that permits Amazon EC2 to publish flow logs to a CloudWatch Logs log group in your account. If you specify LogDestinationType as s3 or kinesis-data-firehose, do not specify DeliverLogsPermissionArn or LogGroupName.", + "type": "string" + }, + "DestinationOptions": { + "additionalProperties": false, + "properties": { + "FileFormat": { + "enum": [ + "plain-text", + "parquet" + ], + "type": "string" + }, + "HiveCompatiblePartitions": { + "type": "boolean" + }, + "PerHourPartition": { + "type": "boolean" + } + }, + "required": [ + "FileFormat", + "HiveCompatiblePartitions", + "PerHourPartition" + ], + "type": "object" + }, + "Id": { + "description": "The Flow Log ID", + "type": "string" + }, + "LogDestination": { + "description": "Specifies the destination to which the flow log data is to be published. Flow log data can be published to a CloudWatch Logs log group, an Amazon S3 bucket, or a Kinesis Firehose stream. The value specified for this parameter depends on the value specified for LogDestinationType.", + "type": "string" + }, + "LogDestinationType": { + "description": "Specifies the type of destination to which the flow log data is to be published. Flow log data can be published to CloudWatch Logs or Amazon S3.", + "enum": [ + "cloud-watch-logs", + "s3", + "kinesis-data-firehose" + ], + "type": "string" + }, + "LogFormat": { + "description": "The fields to include in the flow log record, in the order in which they should appear.", + "type": "string" + }, + "LogGroupName": { + "description": "The name of a new or existing CloudWatch Logs log group where Amazon EC2 publishes your flow logs. If you specify LogDestinationType as s3 or kinesis-data-firehose, do not specify DeliverLogsPermissionArn or LogGroupName.", + "type": "string" + }, + "MaxAggregationInterval": { + "description": "The maximum interval of time during which a flow of packets is captured and aggregated into a flow log record. You can specify 60 seconds (1 minute) or 600 seconds (10 minutes).", + "type": "integer" + }, + "ResourceId": { + "description": "The ID of the subnet, network interface, or VPC for which you want to create a flow log.", + "type": "string" + }, + "ResourceType": { + "description": "The type of resource for which to create the flow log. For example, if you specified a VPC ID for the ResourceId property, specify VPC for this property.", + "enum": [ + "NetworkInterface", + "Subnet", + "VPC", + "TransitGateway", + "TransitGatewayAttachment" + ], + "type": "string" + }, + "Tags": { + "description": "The tags to apply to the flow logs.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TrafficType": { + "description": "The type of traffic to log. You can log traffic that the resource accepts or rejects, or all traffic.", + "enum": [ + "ACCEPT", + "ALL", + "REJECT" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ResourceType", + "ResourceId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-flowlog.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::FlowLog" +} diff --git a/src/schema/aws-ec2-gatewayroutetableassociation.json b/src/schema/aws-ec2-gatewayroutetableassociation.json index bcc81031..4cf932a6 100644 --- a/src/schema/aws-ec2-gatewayroutetableassociation.json +++ b/src/schema/aws-ec2-gatewayroutetableassociation.json @@ -1,64 +1,64 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GatewayId" - ], - "description": "Associates a gateway with a route table. The gateway and route table must be in the same VPC. This association causes the incoming traffic to the gateway to be routed according to the routes in the route table.", - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeRouteTables", - "ec2:AssociateRouteTable" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeRouteTables", - "ec2:DisassociateRouteTable" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeRouteTables" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeRouteTables", - "ec2:ReplaceRouteTableAssociation" - ] - } - }, - "primaryIdentifier": [ - "/properties/GatewayId" - ], - "properties": { - "AssociationId": { - "description": "The route table association ID.", - "type": "string" - }, - "GatewayId": { - "description": "The ID of the gateway.", - "type": "string" - }, - "RouteTableId": { - "description": "The ID of the route table.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AssociationId" - ], - "required": [ - "RouteTableId", - "GatewayId" - ], - "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-gatewayroutetableassociation.html", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::GatewayRouteTableAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GatewayId" + ], + "description": "Associates a gateway with a route table. The gateway and route table must be in the same VPC. This association causes the incoming traffic to the gateway to be routed according to the routes in the route table.", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeRouteTables", + "ec2:AssociateRouteTable" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeRouteTables", + "ec2:DisassociateRouteTable" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeRouteTables" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeRouteTables", + "ec2:ReplaceRouteTableAssociation" + ] + } + }, + "primaryIdentifier": [ + "/properties/GatewayId" + ], + "properties": { + "AssociationId": { + "description": "The route table association ID.", + "type": "string" + }, + "GatewayId": { + "description": "The ID of the gateway.", + "type": "string" + }, + "RouteTableId": { + "description": "The ID of the route table.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AssociationId" + ], + "required": [ + "RouteTableId", + "GatewayId" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-gatewayroutetableassociation.html", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::GatewayRouteTableAssociation" +} diff --git a/src/schema/aws-ec2-host.json b/src/schema/aws-ec2-host.json index 02a26f83..2d28b5fa 100644 --- a/src/schema/aws-ec2-host.json +++ b/src/schema/aws-ec2-host.json @@ -1,90 +1,90 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AvailabilityZone", - "/properties/InstanceType", - "/properties/InstanceFamily", - "/properties/OutpostArn", - "/properties/AssetId" - ], - "description": "Resource Type definition for AWS::EC2::Host", - "handlers": { - "create": { - "permissions": [ - "ec2:AllocateHosts", - "ec2:DescribeHosts" - ] - }, - "delete": { - "permissions": [ - "ec2:ReleaseHosts", - "ec2:DescribeHosts" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeHosts" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeHosts" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyHosts", - "ec2:DescribeHosts" - ] - } - }, - "primaryIdentifier": [ - "/properties/HostId" - ], - "properties": { - "AssetId": { - "description": "The ID of the Outpost hardware asset.", - "type": "string" - }, - "AutoPlacement": { - "description": "Indicates whether the host accepts any untargeted instance launches that match its instance type configuration, or if it only accepts Host tenancy instance launches that specify its unique host ID.", - "type": "string" - }, - "AvailabilityZone": { - "description": "The Availability Zone in which to allocate the Dedicated Host.", - "type": "string" - }, - "HostId": { - "description": "ID of the host created.", - "type": "string" - }, - "HostMaintenance": { - "description": "Automatically allocates a new dedicated host and moves your instances on to it if a degradation is detected on your current host.", - "type": "string" - }, - "HostRecovery": { - "description": "Indicates whether to enable or disable host recovery for the Dedicated Host. Host recovery is disabled by default.", - "type": "string" - }, - "InstanceFamily": { - "description": "Specifies the instance family to be supported by the Dedicated Hosts. If you specify an instance family, the Dedicated Hosts support multiple instance types within that instance family.", - "type": "string" - }, - "InstanceType": { - "description": "Specifies the instance type to be supported by the Dedicated Hosts. If you specify an instance type, the Dedicated Hosts support instances of the specified instance type only.", - "type": "string" - }, - "OutpostArn": { - "description": "The Amazon Resource Name (ARN) of the Amazon Web Services Outpost on which to allocate the Dedicated Host.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/HostId" - ], - "required": [ - "AvailabilityZone" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", - "typeName": "AWS::EC2::Host" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AvailabilityZone", + "/properties/InstanceType", + "/properties/InstanceFamily", + "/properties/OutpostArn", + "/properties/AssetId" + ], + "description": "Resource Type definition for AWS::EC2::Host", + "handlers": { + "create": { + "permissions": [ + "ec2:AllocateHosts", + "ec2:DescribeHosts" + ] + }, + "delete": { + "permissions": [ + "ec2:ReleaseHosts", + "ec2:DescribeHosts" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeHosts" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeHosts" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyHosts", + "ec2:DescribeHosts" + ] + } + }, + "primaryIdentifier": [ + "/properties/HostId" + ], + "properties": { + "AssetId": { + "description": "The ID of the Outpost hardware asset.", + "type": "string" + }, + "AutoPlacement": { + "description": "Indicates whether the host accepts any untargeted instance launches that match its instance type configuration, or if it only accepts Host tenancy instance launches that specify its unique host ID.", + "type": "string" + }, + "AvailabilityZone": { + "description": "The Availability Zone in which to allocate the Dedicated Host.", + "type": "string" + }, + "HostId": { + "description": "ID of the host created.", + "type": "string" + }, + "HostMaintenance": { + "description": "Automatically allocates a new dedicated host and moves your instances on to it if a degradation is detected on your current host.", + "type": "string" + }, + "HostRecovery": { + "description": "Indicates whether to enable or disable host recovery for the Dedicated Host. Host recovery is disabled by default.", + "type": "string" + }, + "InstanceFamily": { + "description": "Specifies the instance family to be supported by the Dedicated Hosts. If you specify an instance family, the Dedicated Hosts support multiple instance types within that instance family.", + "type": "string" + }, + "InstanceType": { + "description": "Specifies the instance type to be supported by the Dedicated Hosts. If you specify an instance type, the Dedicated Hosts support instances of the specified instance type only.", + "type": "string" + }, + "OutpostArn": { + "description": "The Amazon Resource Name (ARN) of the Amazon Web Services Outpost on which to allocate the Dedicated Host.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/HostId" + ], + "required": [ + "AvailabilityZone" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "typeName": "AWS::EC2::Host" +} diff --git a/src/schema/aws-ec2-instance.json b/src/schema/aws-ec2-instance.json index 339d46c0..350b0a5a 100644 --- a/src/schema/aws-ec2-instance.json +++ b/src/schema/aws-ec2-instance.json @@ -1,823 +1,851 @@ -{ - "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/AdditionalInfo", - "/properties/Affinity", - "/properties/EbsOptimized", - "/properties/HostId", - "/properties/InstanceType", - "/properties/KernelId", - "/properties/PrivateDnsNameOptions", - "/properties/RamdiskId", - "/properties/SecurityGroupIds", - "/properties/Tenancy", - "/properties/UserData", - "/properties/BlockDeviceMappings" - ], - "createOnlyProperties": [ - "/properties/AvailabilityZone", - "/properties/CpuOptions", - "/properties/ElasticGpuSpecifications", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/Ipv6AddressCount", - "/properties/Ipv6Addresses", - "/properties/KeyName", - "/properties/LaunchTemplate", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/PlacementGroupName", - "/properties/PrivateIpAddress", - "/properties/SecurityGroups", - "/properties/SubnetId" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The name of an input parameter that is in the associated SSM document.", - "type": "string" - }, - "Value": { - "description": "The value of an input parameter.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "description": "The device name (for example, /dev/sdh or xvdh).", - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs", - "description": "Parameters used to automatically set up EBS volumes when the instance is launched." - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "description": "Indicates whether the EBS volume is deleted on instance termination.", - "type": "boolean" - }, - "Encrypted": { - "description": "Indicates whether the volume should be encrypted.", - "type": "boolean" - }, - "Iops": { - "description": "The number of I/O operations per second (IOPS). For gp3, io1, and io2 volumes, this represents the number of IOPS that are provisioned for the volume. For gp2 volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting.", - "type": "integer" - }, - "KmsKeyId": { - "description": "The identifier of the AWS Key Management Service (AWS KMS) customer managed CMK to use for Amazon EBS encryption. If KmsKeyId is specified, the encrypted state must be true. If the encrypted state is true but you do not specify KmsKeyId, your AWS managed CMK for EBS is used.", - "type": "string" - }, - "SnapshotId": { - "description": "The ID of the snapshot.", - "type": "string" - }, - "VolumeSize": { - "description": "The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size. If you specify a snapshot, the default is the snapshot size. You can specify a volume size that is equal to or larger than the snapshot size.", - "type": "integer" - }, - "VolumeType": { - "description": "The volume type.", - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "description": "The type of Elastic Graphics accelerator.", - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "description": "The number of elastic inference accelerators to attach to the instance.", - "minimum": 0, - "type": "integer" - }, - "Type": { - "description": "The type of elastic inference accelerator.", - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "description": "The IPv6 address.", - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "LaunchTemplateName", - "Version" - ] - }, - { - "required": [ - "LaunchTemplateId", - "Version" - ] - } - ], - "properties": { - "LaunchTemplateId": { - "description": "The ID of the launch template. You must specify the LaunchTemplateName or the LaunchTemplateId, but not both.", - "type": "string" - }, - "LaunchTemplateName": { - "description": "The name of the launch template. You must specify the LaunchTemplateName or the LaunchTemplateId, but not both.", - "type": "string" - }, - "Version": { - "description": "The version number of the launch template.", - "type": "string" - } - }, - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "description": "The Amazon Resource Name (ARN) of the license configuration.", - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "description": "Not currently supported by AWS CloudFormation.", - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "description": "Indicates whether to assign a public IPv4 address to an instance you launch in a VPC.", - "type": "boolean" - }, - "DeleteOnTermination": { - "description": "If set to true, the interface is deleted when the instance is terminated.", - "type": "boolean" - }, - "Description": { - "description": "The description of the network interface.", - "type": "string" - }, - "DeviceIndex": { - "description": "The position of the network interface in the attachment order. A primary network interface has a device index of 0.", - "type": "string" - }, - "GroupSet": { - "description": "The IDs of the security groups for the network interface.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "description": "A number of IPv6 addresses to assign to the network interface.", - "type": "integer" - }, - "Ipv6Addresses": { - "description": "The IPv6 addresses associated with the network interface.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "description": "The ID of the network interface.", - "type": "string" - }, - "PrivateIpAddress": { - "description": "The private IPv4 address of the network interface.", - "type": "string" - }, - "PrivateIpAddresses": { - "description": "One or more private IPv4 addresses to assign to the network interface.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "description": "The number of secondary private IPv4 addresses.", - "type": "integer" - }, - "SubnetId": { - "description": "The ID of the subnet.", - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "description": "Indicates whether to respond to DNS queries for instance hostnames with DNS AAAA records. For more information, see Amazon EC2 instance hostname types in the Amazon Elastic Compute Cloud User Guide.", - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "description": "Indicates whether to respond to DNS queries for instance hostnames with DNS A records. For more information, see Amazon EC2 instance hostname types in the Amazon Elastic Compute Cloud User Guide.", - "type": "boolean" - }, - "HostnameType": { - "description": "The type of hostnames to assign to instances in the subnet at launch. For IPv4 only subnets, an instance DNS name must be based on the instance IPv4 address. For IPv6 only subnets, an instance DNS name must be based on the instance ID. For dual-stack subnets, you can specify whether DNS names use the instance IPv4 address or the instance ID. For more information, see Amazon EC2 instance hostname types in the Amazon Elastic Compute Cloud User Guide.", - "enum": [ - "ip-name", - "resource-name" - ], - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "description": "Indicates whether the private IPv4 address is the primary private IPv4 address. Only one IPv4 address can be designated as primary.", - "type": "boolean" - }, - "PrivateIpAddress": { - "description": "The private IPv4 addresses.", - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "description": "The input parameter values to use with the associated SSM document.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "description": "The name of an SSM document to associate with the instance.", - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "State": { - "additionalProperties": false, - "description": "The current state of the instance", - "properties": { - "Code": { - "description": "The state of the instance as a 16-bit unsigned integer.", - "type": "string" - }, - "Name": { - "description": "The current state of the instance.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "description": "The device name (for example, /dev/sdh or xvdh).", - "type": "string" - }, - "VolumeId": { - "description": "The ID of the EBS volume. The volume and instance must be within the same Availability Zone.", - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::Instance", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "ec2:ModifyPrivateDnsNameOptions", - "ec2:DescribeElasticGpus", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeVolumes", - "ec2:RunInstances", - "ec2:AssociateIamInstanceProfile", - "ec2:DescribeIamInstanceProfileAssociations", - "ec2:DescribeInstances", - "ec2:DescribeSubnets", - "ec2:DescribeKeyPairs", - "ec2:DescribeSecurityGroups", - "ec2:DescribeVpcs", - "ec2:DescribeInstanceAttribute", - "ec2:DescribeInstanceCreditSpecifications", - "ec2:DescribeLaunchTemplates", - "ec2:DescribeLaunchTemplateVersions", - "ec2:DetachVolume", - "ec2:DisassociateIamInstanceProfile", - "ec2:ModifyInstanceAttribute", - "ec2:ModifyInstanceCreditSpecification", - "ec2:ModifyInstancePlacement", - "ec2:MonitorInstances", - "ec2:AttachVolume", - "ec2:CreateTags", - "ec2:ReplaceIamInstanceProfileAssociation", - "ec2:StartInstances", - "elastic-inference:DescribeAccelerators", - "ssm:CreateAssociation", - "ssm:DescribeAssociation", - "ssm:ListAssociations" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeInstances", - "ec2:TerminateInstances", - "ec2:DescribeElasticGpus", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeVolumes", - "ec2:DescribeInstances", - "ec2:DescribeInstanceAttribute", - "ec2:DescribeInstanceCreditSpecifications", - "ec2:DescribeLaunchTemplates", - "elastic-inference:DescribeAccelerators", - "ssm:DescribeAssociation", - "ssm:ListAssociations" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeInstances" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeElasticGpus", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeVolumes", - "ec2:DescribeInstances", - "ec2:DescribeInstanceAttribute", - "ec2:DescribeInstanceCreditSpecifications", - "ec2:DescribeLaunchTemplates", - "elastic-inference:DescribeAccelerators", - "ssm:DescribeAssociation", - "ssm:ListAssociations" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeElasticGpus", - "ec2:ModifyPrivateDnsNameOptions", - "ec2:DescribeNetworkInterfaces", - "ec2:AssociateIamInstanceProfile", - "ec2:DescribeIamInstanceProfileAssociations", - "ec2:DescribeInstances", - "ec2:DescribeSubnets", - "ec2:DescribeKeyPairs", - "ec2:DescribeSecurityGroups", - "ec2:DescribeVpcs", - "ec2:DescribeInstanceAttribute", - "ec2:DescribeInstanceCreditSpecifications", - "ec2:DescribeLaunchTemplates", - "ec2:DetachVolume", - "ec2:DisassociateIamInstanceProfile", - "ec2:ModifyInstanceAttribute", - "ec2:ModifyInstanceCreditSpecification", - "ec2:ModifyInstanceMaintenanceOptions", - "ec2:ModifyInstancePlacement", - "ec2:MonitorInstances", - "ec2:AttachVolume", - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:ReplaceIamInstanceProfileAssociation", - "ec2:StartInstances", - "ec2:StopInstances", - "ec2:UnmonitorInstances", - "elastic-inference:DescribeAccelerators", - "ssm:CreateAssociation", - "ssm:DeleteAssociation", - "ssm:DescribeAssociation", - "ssm:ListAssociations" - ] - } - }, - "primaryIdentifier": [ - "/properties/InstanceId" - ], - "properties": { - "AdditionalInfo": { - "description": "This property is reserved for internal use. If you use it, the stack fails with this error: Bad property set: [Testing this property] (Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: 0XXXXXX-49c7-4b40-8bcc-76885dcXXXXX).", - "type": "string" - }, - "Affinity": { - "description": "Indicates whether the instance is associated with a dedicated host. If you want the instance to always restart on the same host on which it was launched, specify host. If you want the instance to restart on any available host, but try to launch onto the last host it ran on (on a best-effort basis), specify default.", - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "description": "The Availability Zone of the instance.", - "type": "string" - }, - "BlockDeviceMappings": { - "description": "The block device mapping entries that defines the block devices to attach to the instance at launch.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "additionalProperties": false, - "description": "The CPU options for the instance.", - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "description": "The credit option for CPU usage of the burstable performance instance. Valid values are standard and unlimited.", - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "DisableApiTermination": { - "description": "If you set this parameter to true, you can't terminate the instance using the Amazon EC2 console, CLI, or API; otherwise, you can.", - "type": "boolean" - }, - "EbsOptimized": { - "description": "Indicates whether the instance is optimized for Amazon EBS I/O.", - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "description": "An elastic GPU to associate with the instance.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "ElasticInferenceAccelerators": { - "description": "An elastic inference accelerator to associate with the instance.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": false - }, - "EnclaveOptions": { - "additionalProperties": false, - "description": "Indicates whether the instance is enabled for AWS Nitro Enclaves.", - "properties": { - "Enabled": { - "description": "If this parameter is set to true, the instance is enabled for AWS Nitro Enclaves; otherwise, it is not enabled for AWS Nitro Enclaves.", - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "description": "Indicates whether an instance is enabled for hibernation.", - "properties": { - "Configured": { - "default": false, - "description": "If you set this parameter to true, your instance is enabled for hibernation.", - "type": "boolean" - } - }, - "type": "object" - }, - "HostId": { - "description": "If you specify host for the Affinity property, the ID of a dedicated host that the instance is associated with. If you don't specify an ID, Amazon EC2 launches the instance onto any available, compatible dedicated host in your account.", - "type": "string" - }, - "HostResourceGroupArn": { - "description": "The ARN of the host resource group in which to launch the instances. If you specify a host resource group ARN, omit the Tenancy parameter or set it to host.", - "type": "string" - }, - "IamInstanceProfile": { - "description": "The IAM instance profile.", - "type": "string" - }, - "ImageId": { - "description": "The ID of the AMI. An AMI ID is required to launch an instance and must be specified here or in a launch template.", - "type": "string" - }, - "InstanceId": { - "description": "The EC2 Instance ID.", - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "description": "Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).", - "type": "string" - }, - "InstanceType": { - "description": "The instance type.", - "type": "string" - }, - "Ipv6AddressCount": { - "description": "[EC2-VPC] The number of IPv6 addresses to associate with the primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet.", - "type": "integer" - }, - "Ipv6Addresses": { - "description": "[EC2-VPC] The IPv6 addresses from the range of the subnet to associate with the primary network interface.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "description": "The ID of the kernel.", - "type": "string" - }, - "KeyName": { - "description": "The name of the key pair.", - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification", - "description": "The launch template to use to launch the instances.", - "type": "object" - }, - "LicenseSpecifications": { - "description": "The license configurations.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "Monitoring": { - "description": "Specifies whether detailed monitoring is enabled for the instance.", - "type": "boolean" - }, - "NetworkInterfaces": { - "description": "The network interfaces to associate with the instance.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "description": "The name of an existing placement group that you want to launch the instance into (cluster | partition | spread).", - "type": "string" - }, - "PrivateDnsName": { - "description": "The private DNS name of the specified instance. For example: ip-10-24-34-0.ec2.internal.", - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions", - "description": "The options for the instance hostname.", - "type": "object" - }, - "PrivateIp": { - "description": "The private IP address of the specified instance. For example: 10.24.34.0.", - "type": "string" - }, - "PrivateIpAddress": { - "description": "[EC2-VPC] The primary IPv4 address. You must specify a value from the IPv4 address range of the subnet.", - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "description": "Indicates whether to assign the tags from the instance to all of the volumes attached to the instance at launch. If you specify true and you assign tags to the instance, those tags are automatically assigned to all of the volumes that you attach to the instance at launch. If you specify false, those tags are not assigned to the attached volumes.", - "type": "boolean" - }, - "PublicDnsName": { - "description": "The public DNS name of the specified instance. For example: ec2-107-20-50-45.compute-1.amazonaws.com.", - "type": "string" - }, - "PublicIp": { - "description": "The public IP address of the specified instance. For example: 192.0.2.0.", - "type": "string" - }, - "RamdiskId": { - "description": "The ID of the RAM disk to select.", - "type": "string" - }, - "SecurityGroupIds": { - "description": "The IDs of the security groups.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "description": "the names of the security groups. For a nondefault VPC, you must use security group IDs instead.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "description": "Specifies whether to enable an instance launched in a VPC to perform NAT.", - "type": "boolean" - }, - "SsmAssociations": { - "description": "The SSM document and parameter values in AWS Systems Manager to associate with this instance.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "State": { - "$ref": "#/definitions/State", - "description": "The current state of the instance.", - "type": "object" - }, - "SubnetId": { - "description": "[EC2-VPC] The ID of the subnet to launch the instance into.\n\n", - "type": "string" - }, - "Tags": { - "description": "The tags to add to the instance.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "description": "The tenancy of the instance (if the instance is running in a VPC). An instance with a tenancy of dedicated runs on single-tenant hardware.", - "type": "string" - }, - "UserData": { - "description": "The user data to make available to the instance.", - "type": "string" - }, - "Volumes": { - "description": "The volumes to attach to the instance.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - }, - "VpcId": { - "description": "The ID of the VPC that the instance is running in.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/InstanceId", - "/properties/PrivateIp", - "/properties/PublicDnsName", - "/properties/PublicIp", - "/properties/PrivateDnsName", - "/properties/VpcId", - "/properties/State" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::Instance", - "writeOnlyProperties": [ - "/properties/BlockDeviceMappings/*/NoDevice", - "/properties/BlockDeviceMappings/*/VirtualName", - "/properties/LicenseSpecification", - "/properties/AdditionalInfo", - "/properties/Ipv6AddressCount", - "/properties/Ipv6Addresses", - "/properties/PropagateTagsToVolumeOnCreation", - "/properties/LaunchTemplate" - ] -} +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/AdditionalInfo", + "/properties/Affinity", + "/properties/EbsOptimized", + "/properties/HostId", + "/properties/InstanceType", + "/properties/KernelId", + "/properties/PrivateDnsNameOptions", + "/properties/RamdiskId", + "/properties/SecurityGroupIds", + "/properties/Tenancy", + "/properties/UserData", + "/properties/BlockDeviceMappings" + ], + "createOnlyProperties": [ + "/properties/AvailabilityZone", + "/properties/CpuOptions", + "/properties/ElasticGpuSpecifications", + "/properties/ElasticInferenceAccelerators", + "/properties/EnclaveOptions", + "/properties/HibernationOptions", + "/properties/HostResourceGroupArn", + "/properties/ImageId", + "/properties/Ipv6AddressCount", + "/properties/Ipv6Addresses", + "/properties/KeyName", + "/properties/LaunchTemplate", + "/properties/LicenseSpecifications", + "/properties/NetworkInterfaces", + "/properties/PlacementGroupName", + "/properties/PrivateIpAddress", + "/properties/SecurityGroups", + "/properties/SubnetId" + ], + "definitions": { + "AssociationParameter": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The name of an input parameter that is in the associated SSM document.", + "type": "string" + }, + "Value": { + "description": "The value of an input parameter.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "BlockDeviceMapping": { + "additionalProperties": false, + "properties": { + "DeviceName": { + "description": "The device name (for example, /dev/sdh or xvdh).", + "type": "string" + }, + "Ebs": { + "$ref": "#/definitions/Ebs", + "description": "Parameters used to automatically set up EBS volumes when the instance is launched." + }, + "NoDevice": { + "additionalProperties": false, + "type": "object" + }, + "VirtualName": { + "type": "string" + } + }, + "required": [ + "DeviceName" + ], + "type": "object" + }, + "Ebs": { + "additionalProperties": false, + "properties": { + "DeleteOnTermination": { + "description": "Indicates whether the EBS volume is deleted on instance termination.", + "type": "boolean" + }, + "Encrypted": { + "description": "Indicates whether the volume should be encrypted.", + "type": "boolean" + }, + "Iops": { + "description": "The number of I/O operations per second (IOPS). For gp3, io1, and io2 volumes, this represents the number of IOPS that are provisioned for the volume. For gp2 volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting.", + "type": "integer" + }, + "KmsKeyId": { + "description": "The identifier of the AWS Key Management Service (AWS KMS) customer managed CMK to use for Amazon EBS encryption. If KmsKeyId is specified, the encrypted state must be true. If the encrypted state is true but you do not specify KmsKeyId, your AWS managed CMK for EBS is used.", + "type": "string" + }, + "SnapshotId": { + "description": "The ID of the snapshot.", + "type": "string" + }, + "VolumeSize": { + "description": "The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size. If you specify a snapshot, the default is the snapshot size. You can specify a volume size that is equal to or larger than the snapshot size.", + "type": "integer" + }, + "VolumeType": { + "description": "The volume type.", + "type": "string" + } + }, + "type": "object" + }, + "ElasticGpuSpecification": { + "additionalProperties": false, + "properties": { + "Type": { + "description": "The type of Elastic Graphics accelerator.", + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "ElasticInferenceAccelerator": { + "additionalProperties": false, + "properties": { + "Count": { + "description": "The number of elastic inference accelerators to attach to the instance.", + "minimum": 0, + "type": "integer" + }, + "Type": { + "description": "The type of elastic inference accelerator.", + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "EnaSrdSpecification": { + "additionalProperties": false, + "description": "Specifies the ENA Express settings for the network interface that's attached to the instance.", + "properties": { + "EnaSrdEnabled": { + "description": "Specifies whether ENA Express is enabled for the network interface when you launch an instance.", + "type": "boolean" + }, + "EnaSrdUdpSpecification": { + "$ref": "#/definitions/EnaSrdUdpSpecification" + } + }, + "type": "object" + }, + "EnaSrdUdpSpecification": { + "additionalProperties": false, + "description": "Contains ENA Express settings for UDP network traffic for the network interface that's attached to the instance.", + "properties": { + "EnaSrdUdpEnabled": { + "description": "Indicates whether UDP traffic uses ENA Express for your instance.", + "type": "boolean" + } + }, + "type": "object" + }, + "InstanceIpv6Address": { + "additionalProperties": false, + "properties": { + "Ipv6Address": { + "description": "The IPv6 address.", + "type": "string" + } + }, + "required": [ + "Ipv6Address" + ], + "type": "object" + }, + "LaunchTemplateSpecification": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "LaunchTemplateName", + "Version" + ] + }, + { + "required": [ + "LaunchTemplateId", + "Version" + ] + } + ], + "properties": { + "LaunchTemplateId": { + "description": "The ID of the launch template. You must specify the LaunchTemplateName or the LaunchTemplateId, but not both.", + "type": "string" + }, + "LaunchTemplateName": { + "description": "The name of the launch template. You must specify the LaunchTemplateName or the LaunchTemplateId, but not both.", + "type": "string" + }, + "Version": { + "description": "The version number of the launch template.", + "type": "string" + } + }, + "type": "object" + }, + "LicenseSpecification": { + "additionalProperties": false, + "properties": { + "LicenseConfigurationArn": { + "description": "The Amazon Resource Name (ARN) of the license configuration.", + "type": "string" + } + }, + "required": [ + "LicenseConfigurationArn" + ], + "type": "object" + }, + "NetworkInterface": { + "additionalProperties": false, + "properties": { + "AssociateCarrierIpAddress": { + "description": "Not currently supported by AWS CloudFormation.", + "type": "boolean" + }, + "AssociatePublicIpAddress": { + "description": "Indicates whether to assign a public IPv4 address to an instance you launch in a VPC.", + "type": "boolean" + }, + "DeleteOnTermination": { + "description": "If set to true, the interface is deleted when the instance is terminated.", + "type": "boolean" + }, + "Description": { + "description": "The description of the network interface.", + "type": "string" + }, + "DeviceIndex": { + "description": "The position of the network interface in the attachment order. A primary network interface has a device index of 0.", + "type": "string" + }, + "EnaSrdSpecification": { + "$ref": "#/definitions/EnaSrdSpecification" + }, + "GroupSet": { + "description": "The IDs of the security groups for the network interface.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Ipv6AddressCount": { + "description": "A number of IPv6 addresses to assign to the network interface.", + "type": "integer" + }, + "Ipv6Addresses": { + "description": "The IPv6 addresses associated with the network interface.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InstanceIpv6Address" + }, + "type": "array", + "uniqueItems": false + }, + "NetworkInterfaceId": { + "description": "The ID of the network interface.", + "type": "string" + }, + "PrivateIpAddress": { + "description": "The private IPv4 address of the network interface.", + "type": "string" + }, + "PrivateIpAddresses": { + "description": "One or more private IPv4 addresses to assign to the network interface.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PrivateIpAddressSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "SecondaryPrivateIpAddressCount": { + "description": "The number of secondary private IPv4 addresses.", + "type": "integer" + }, + "SubnetId": { + "description": "The ID of the subnet.", + "type": "string" + } + }, + "required": [ + "DeviceIndex" + ], + "type": "object" + }, + "PrivateDnsNameOptions": { + "additionalProperties": false, + "properties": { + "EnableResourceNameDnsAAAARecord": { + "description": "Indicates whether to respond to DNS queries for instance hostnames with DNS AAAA records. For more information, see Amazon EC2 instance hostname types in the Amazon Elastic Compute Cloud User Guide.", + "type": "boolean" + }, + "EnableResourceNameDnsARecord": { + "description": "Indicates whether to respond to DNS queries for instance hostnames with DNS A records. For more information, see Amazon EC2 instance hostname types in the Amazon Elastic Compute Cloud User Guide.", + "type": "boolean" + }, + "HostnameType": { + "description": "The type of hostnames to assign to instances in the subnet at launch. For IPv4 only subnets, an instance DNS name must be based on the instance IPv4 address. For IPv6 only subnets, an instance DNS name must be based on the instance ID. For dual-stack subnets, you can specify whether DNS names use the instance IPv4 address or the instance ID. For more information, see Amazon EC2 instance hostname types in the Amazon Elastic Compute Cloud User Guide.", + "enum": [ + "ip-name", + "resource-name" + ], + "type": "string" + } + }, + "type": "object" + }, + "PrivateIpAddressSpecification": { + "additionalProperties": false, + "properties": { + "Primary": { + "description": "Indicates whether the private IPv4 address is the primary private IPv4 address. Only one IPv4 address can be designated as primary.", + "type": "boolean" + }, + "PrivateIpAddress": { + "description": "The private IPv4 addresses.", + "type": "string" + } + }, + "required": [ + "PrivateIpAddress", + "Primary" + ], + "type": "object" + }, + "SsmAssociation": { + "additionalProperties": false, + "properties": { + "AssociationParameters": { + "description": "The input parameter values to use with the associated SSM document.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AssociationParameter" + }, + "type": "array", + "uniqueItems": false + }, + "DocumentName": { + "description": "The name of an SSM document to associate with the instance.", + "type": "string" + } + }, + "required": [ + "DocumentName" + ], + "type": "object" + }, + "State": { + "additionalProperties": false, + "description": "The current state of the instance", + "properties": { + "Code": { + "description": "The state of the instance as a 16-bit unsigned integer.", + "type": "string" + }, + "Name": { + "description": "The current state of the instance.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "Volume": { + "additionalProperties": false, + "properties": { + "Device": { + "description": "The device name (for example, /dev/sdh or xvdh).", + "type": "string" + }, + "VolumeId": { + "description": "The ID of the EBS volume. The volume and instance must be within the same Availability Zone.", + "type": "string" + } + }, + "required": [ + "VolumeId", + "Device" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::Instance", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "ec2:ModifyPrivateDnsNameOptions", + "ec2:DescribeElasticGpus", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeVolumes", + "ec2:RunInstances", + "ec2:AssociateIamInstanceProfile", + "ec2:DescribeIamInstanceProfileAssociations", + "ec2:DescribeInstances", + "ec2:DescribeSubnets", + "ec2:DescribeKeyPairs", + "ec2:DescribeSecurityGroups", + "ec2:DescribeVpcs", + "ec2:DescribeInstanceAttribute", + "ec2:DescribeInstanceCreditSpecifications", + "ec2:DescribeLaunchTemplates", + "ec2:DescribeLaunchTemplateVersions", + "ec2:DetachVolume", + "ec2:DisassociateIamInstanceProfile", + "ec2:ModifyInstanceAttribute", + "ec2:ModifyInstanceCreditSpecification", + "ec2:ModifyInstancePlacement", + "ec2:MonitorInstances", + "ec2:AttachVolume", + "ec2:CreateTags", + "ec2:ReplaceIamInstanceProfileAssociation", + "ec2:StartInstances", + "elastic-inference:DescribeAccelerators", + "ssm:CreateAssociation", + "ssm:DescribeAssociation", + "ssm:ListAssociations" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeInstances", + "ec2:TerminateInstances", + "ec2:DescribeElasticGpus", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeVolumes", + "ec2:DescribeInstances", + "ec2:DescribeInstanceAttribute", + "ec2:DescribeInstanceCreditSpecifications", + "ec2:DescribeLaunchTemplates", + "elastic-inference:DescribeAccelerators", + "ssm:DescribeAssociation", + "ssm:ListAssociations" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeInstances" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeElasticGpus", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeVolumes", + "ec2:DescribeInstances", + "ec2:DescribeInstanceAttribute", + "ec2:DescribeInstanceCreditSpecifications", + "ec2:DescribeLaunchTemplates", + "elastic-inference:DescribeAccelerators", + "ssm:DescribeAssociation", + "ssm:ListAssociations" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeElasticGpus", + "ec2:ModifyPrivateDnsNameOptions", + "ec2:DescribeNetworkInterfaces", + "ec2:AssociateIamInstanceProfile", + "ec2:DescribeIamInstanceProfileAssociations", + "ec2:DescribeInstances", + "ec2:DescribeSubnets", + "ec2:DescribeKeyPairs", + "ec2:DescribeSecurityGroups", + "ec2:DescribeVpcs", + "ec2:DescribeInstanceAttribute", + "ec2:DescribeInstanceCreditSpecifications", + "ec2:DescribeLaunchTemplates", + "ec2:DetachVolume", + "ec2:DisassociateIamInstanceProfile", + "ec2:ModifyInstanceAttribute", + "ec2:ModifyInstanceCreditSpecification", + "ec2:ModifyInstanceMaintenanceOptions", + "ec2:ModifyInstancePlacement", + "ec2:MonitorInstances", + "ec2:AttachVolume", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:ReplaceIamInstanceProfileAssociation", + "ec2:StartInstances", + "ec2:StopInstances", + "ec2:UnmonitorInstances", + "elastic-inference:DescribeAccelerators", + "ssm:CreateAssociation", + "ssm:DeleteAssociation", + "ssm:DescribeAssociation", + "ssm:ListAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/InstanceId" + ], + "properties": { + "AdditionalInfo": { + "description": "This property is reserved for internal use. If you use it, the stack fails with this error: Bad property set: [Testing this property] (Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: 0XXXXXX-49c7-4b40-8bcc-76885dcXXXXX).", + "type": "string" + }, + "Affinity": { + "description": "Indicates whether the instance is associated with a dedicated host. If you want the instance to always restart on the same host on which it was launched, specify host. If you want the instance to restart on any available host, but try to launch onto the last host it ran on (on a best-effort basis), specify default.", + "enum": [ + "default", + "host" + ], + "type": "string" + }, + "AvailabilityZone": { + "description": "The Availability Zone of the instance.", + "type": "string" + }, + "BlockDeviceMappings": { + "description": "The block device mapping entries that defines the block devices to attach to the instance at launch.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/BlockDeviceMapping" + }, + "type": "array", + "uniqueItems": false + }, + "CpuOptions": { + "additionalProperties": false, + "description": "The CPU options for the instance.", + "properties": { + "CoreCount": { + "type": "integer" + }, + "ThreadsPerCore": { + "type": "integer" + } + }, + "type": "object" + }, + "CreditSpecification": { + "additionalProperties": false, + "description": "The credit option for CPU usage of the burstable performance instance. Valid values are standard and unlimited.", + "properties": { + "CPUCredits": { + "type": "string" + } + }, + "type": "object" + }, + "DisableApiTermination": { + "description": "If you set this parameter to true, you can't terminate the instance using the Amazon EC2 console, CLI, or API; otherwise, you can.", + "type": "boolean" + }, + "EbsOptimized": { + "description": "Indicates whether the instance is optimized for Amazon EBS I/O.", + "type": "boolean" + }, + "ElasticGpuSpecifications": { + "description": "An elastic GPU to associate with the instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ElasticGpuSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "ElasticInferenceAccelerators": { + "description": "An elastic inference accelerator to associate with the instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ElasticInferenceAccelerator" + }, + "type": "array", + "uniqueItems": false + }, + "EnclaveOptions": { + "additionalProperties": false, + "description": "Indicates whether the instance is enabled for AWS Nitro Enclaves.", + "properties": { + "Enabled": { + "description": "If this parameter is set to true, the instance is enabled for AWS Nitro Enclaves; otherwise, it is not enabled for AWS Nitro Enclaves.", + "type": "boolean" + } + }, + "type": "object" + }, + "HibernationOptions": { + "additionalProperties": false, + "description": "Indicates whether an instance is enabled for hibernation.", + "properties": { + "Configured": { + "default": false, + "description": "If you set this parameter to true, your instance is enabled for hibernation.", + "type": "boolean" + } + }, + "type": "object" + }, + "HostId": { + "description": "If you specify host for the Affinity property, the ID of a dedicated host that the instance is associated with. If you don't specify an ID, Amazon EC2 launches the instance onto any available, compatible dedicated host in your account.", + "type": "string" + }, + "HostResourceGroupArn": { + "description": "The ARN of the host resource group in which to launch the instances. If you specify a host resource group ARN, omit the Tenancy parameter or set it to host.", + "type": "string" + }, + "IamInstanceProfile": { + "description": "The IAM instance profile.", + "type": "string" + }, + "ImageId": { + "description": "The ID of the AMI. An AMI ID is required to launch an instance and must be specified here or in a launch template.", + "type": "string" + }, + "InstanceId": { + "description": "The EC2 Instance ID.", + "type": "string" + }, + "InstanceInitiatedShutdownBehavior": { + "description": "Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).", + "type": "string" + }, + "InstanceType": { + "description": "The instance type.", + "type": "string" + }, + "Ipv6AddressCount": { + "description": "[EC2-VPC] The number of IPv6 addresses to associate with the primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet.", + "type": "integer" + }, + "Ipv6Addresses": { + "description": "[EC2-VPC] The IPv6 addresses from the range of the subnet to associate with the primary network interface.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InstanceIpv6Address" + }, + "type": "array", + "uniqueItems": false + }, + "KernelId": { + "description": "The ID of the kernel.", + "type": "string" + }, + "KeyName": { + "description": "The name of the key pair.", + "type": "string" + }, + "LaunchTemplate": { + "$ref": "#/definitions/LaunchTemplateSpecification", + "description": "The launch template to use to launch the instances.", + "type": "object" + }, + "LicenseSpecifications": { + "description": "The license configurations.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LicenseSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Monitoring": { + "description": "Specifies whether detailed monitoring is enabled for the instance.", + "type": "boolean" + }, + "NetworkInterfaces": { + "description": "The network interfaces to associate with the instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/NetworkInterface" + }, + "type": "array", + "uniqueItems": false + }, + "PlacementGroupName": { + "description": "The name of an existing placement group that you want to launch the instance into (cluster | partition | spread).", + "type": "string" + }, + "PrivateDnsName": { + "description": "The private DNS name of the specified instance. For example: ip-10-24-34-0.ec2.internal.", + "type": "string" + }, + "PrivateDnsNameOptions": { + "$ref": "#/definitions/PrivateDnsNameOptions", + "description": "The options for the instance hostname.", + "type": "object" + }, + "PrivateIp": { + "description": "The private IP address of the specified instance. For example: 10.24.34.0.", + "type": "string" + }, + "PrivateIpAddress": { + "description": "[EC2-VPC] The primary IPv4 address. You must specify a value from the IPv4 address range of the subnet.", + "type": "string" + }, + "PropagateTagsToVolumeOnCreation": { + "description": "Indicates whether to assign the tags from the instance to all of the volumes attached to the instance at launch. If you specify true and you assign tags to the instance, those tags are automatically assigned to all of the volumes that you attach to the instance at launch. If you specify false, those tags are not assigned to the attached volumes.", + "type": "boolean" + }, + "PublicDnsName": { + "description": "The public DNS name of the specified instance. For example: ec2-107-20-50-45.compute-1.amazonaws.com.", + "type": "string" + }, + "PublicIp": { + "description": "The public IP address of the specified instance. For example: 192.0.2.0.", + "type": "string" + }, + "RamdiskId": { + "description": "The ID of the RAM disk to select.", + "type": "string" + }, + "SecurityGroupIds": { + "description": "The IDs of the security groups.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SecurityGroups": { + "description": "the names of the security groups. For a nondefault VPC, you must use security group IDs instead.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SourceDestCheck": { + "description": "Specifies whether to enable an instance launched in a VPC to perform NAT.", + "type": "boolean" + }, + "SsmAssociations": { + "description": "The SSM document and parameter values in AWS Systems Manager to associate with this instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SsmAssociation" + }, + "type": "array", + "uniqueItems": false + }, + "State": { + "$ref": "#/definitions/State", + "description": "The current state of the instance.", + "type": "object" + }, + "SubnetId": { + "description": "[EC2-VPC] The ID of the subnet to launch the instance into.\n\n", + "type": "string" + }, + "Tags": { + "description": "The tags to add to the instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "description": "The tenancy of the instance (if the instance is running in a VPC). An instance with a tenancy of dedicated runs on single-tenant hardware.", + "type": "string" + }, + "UserData": { + "description": "The user data to make available to the instance.", + "type": "string" + }, + "Volumes": { + "description": "The volumes to attach to the instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Volume" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "The ID of the VPC that the instance is running in.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/InstanceId", + "/properties/PrivateIp", + "/properties/PublicDnsName", + "/properties/PublicIp", + "/properties/PrivateDnsName", + "/properties/VpcId", + "/properties/State" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::Instance", + "writeOnlyProperties": [ + "/properties/BlockDeviceMappings/*/NoDevice", + "/properties/BlockDeviceMappings/*/VirtualName", + "/properties/LicenseSpecification", + "/properties/AdditionalInfo", + "/properties/Ipv6AddressCount", + "/properties/Ipv6Addresses", + "/properties/PropagateTagsToVolumeOnCreation", + "/properties/LaunchTemplate" + ] +} diff --git a/src/schema/aws-ec2-instanceconnectendpoint.json b/src/schema/aws-ec2-instanceconnectendpoint.json index fccfa0fa..7bf4b168 100644 --- a/src/schema/aws-ec2-instanceconnectendpoint.json +++ b/src/schema/aws-ec2-instanceconnectendpoint.json @@ -1,124 +1,128 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SubnetId", - "/properties/ClientToken", - "/properties/PreserveClientIp", - "/properties/SecurityGroupIds" - ], - "definitions": { - "SecurityGroupId": { - "description": "A key-value pair to associate with a resource.", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::InstanceConnectEndpoint", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateInstanceConnectEndpoint", - "ec2:DescribeInstanceConnectEndpoints", - "ec2:CreateTags", - "ec2:CreateNetworkInterface", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteInstanceConnectEndpoint", - "ec2:DescribeInstanceConnectEndpoints" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeInstanceConnectEndpoints" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeInstanceConnectEndpoints" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeInstanceConnectEndpoints", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ClientToken": { - "description": "The client token of the instance connect endpoint.", - "type": "string" - }, - "Id": { - "description": "The id of the instance connect endpoint", - "type": "string" - }, - "PreserveClientIp": { - "description": "If true, the address of the instance connect endpoint client is preserved when connecting to the end resource", - "type": "boolean" - }, - "SecurityGroupIds": { - "description": "The security group IDs of the instance connect endpoint.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SecurityGroupId" - }, - "type": "array", - "uniqueItems": true - }, - "SubnetId": { - "description": "The subnet id of the instance connect endpoint", - "type": "string" - }, - "Tags": { - "description": "The tags of the instance connect endpoint.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "SubnetId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::InstanceConnectEndpoint", - "writeOnlyProperties": [ - "/properties/ClientToken" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubnetId", + "/properties/ClientToken", + "/properties/PreserveClientIp", + "/properties/SecurityGroupIds" + ], + "definitions": { + "SecurityGroupId": { + "description": "A key-value pair to associate with a resource.", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::InstanceConnectEndpoint", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateInstanceConnectEndpoint", + "ec2:DescribeInstanceConnectEndpoints", + "ec2:CreateTags", + "ec2:CreateNetworkInterface", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteInstanceConnectEndpoint", + "ec2:DescribeInstanceConnectEndpoints" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeInstanceConnectEndpoints" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeInstanceConnectEndpoints" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeInstanceConnectEndpoints", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ClientToken": { + "description": "The client token of the instance connect endpoint.", + "type": "string" + }, + "Id": { + "description": "The id of the instance connect endpoint", + "type": "string" + }, + "PreserveClientIp": { + "description": "If true, the address of the instance connect endpoint client is preserved when connecting to the end resource", + "type": "boolean" + }, + "SecurityGroupIds": { + "description": "The security group IDs of the instance connect endpoint.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SecurityGroupId" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetId": { + "description": "The subnet id of the instance connect endpoint", + "type": "string" + }, + "Tags": { + "description": "The tags of the instance connect endpoint.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "SubnetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::InstanceConnectEndpoint", + "writeOnlyProperties": [ + "/properties/ClientToken" + ] +} diff --git a/src/schema/aws-ec2-internetgateway.json b/src/schema/aws-ec2-internetgateway.json index 8660f0c0..dae5d787 100644 --- a/src/schema/aws-ec2-internetgateway.json +++ b/src/schema/aws-ec2-internetgateway.json @@ -1,94 +1,94 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "properties": { - "Key": { - "description": "The tag key.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The tag value.", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Allocates an internet gateway for use with a VPC. After creating the Internet gateway, you then attach it to a VPC.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateInternetGateway", - "ec2:CreateTags", - "ec2:DescribeInternetGateways" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteInternetGateway", - "ec2:DescribeInternetGateways" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeInternetGateways" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeInternetGateways" - ] - }, - "update": { - "permissions": [ - "ec2:DeleteTags", - "ec2:CreateTags", - "ec2:DescribeInternetGateways" - ] - } - }, - "primaryIdentifier": [ - "/properties/InternetGatewayId" - ], - "properties": { - "InternetGatewayId": { - "description": "", - "type": "string" - }, - "Tags": { - "description": "Any tags to assign to the internet gateway.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/InternetGatewayId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::InternetGateway" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The tag value.", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Allocates an internet gateway for use with a VPC. After creating the Internet gateway, you then attach it to a VPC.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateInternetGateway", + "ec2:CreateTags", + "ec2:DescribeInternetGateways" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteInternetGateway", + "ec2:DescribeInternetGateways" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeInternetGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeInternetGateways" + ] + }, + "update": { + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:DescribeInternetGateways" + ] + } + }, + "primaryIdentifier": [ + "/properties/InternetGatewayId" + ], + "properties": { + "InternetGatewayId": { + "description": "", + "type": "string" + }, + "Tags": { + "description": "Any tags to assign to the internet gateway.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/InternetGatewayId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::InternetGateway" +} diff --git a/src/schema/aws-ec2-ipam.json b/src/schema/aws-ec2-ipam.json index 106e226c..a434ec63 100644 --- a/src/schema/aws-ec2-ipam.json +++ b/src/schema/aws-ec2-ipam.json @@ -1,173 +1,202 @@ -{ - "additionalProperties": false, - "definitions": { - "IpamOperatingRegion": { - "additionalProperties": false, - "description": "The regions IPAM is enabled for. Allows pools to be created in these regions, as well as enabling monitoring", - "properties": { - "RegionName": { - "description": "The name of the region.", - "type": "string" - } - }, - "required": [ - "RegionName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Schema of AWS::EC2::IPAM Type", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateIpam", - "iam:CreateServiceLinkedRole", - "ec2:CreateTags", - "ec2:DescribeIpams" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteIpam", - "ec2:DeleteTags", - "ec2:DescribeIpams" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeIpams" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeIpams" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyIpam", - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeIpams" - ] - } - }, - "primaryIdentifier": [ - "/properties/IpamId" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the IPAM.", - "type": "string" - }, - "DefaultResourceDiscoveryAssociationId": { - "description": "The Id of the default association to the default resource discovery, created with this IPAM.", - "type": "string" - }, - "DefaultResourceDiscoveryId": { - "description": "The Id of the default resource discovery, created with this IPAM.", - "type": "string" - }, - "Description": { - "type": "string" - }, - "EnablePrivateGua": { - "description": "Enable provisioning of GUA space in private pools.", - "type": "boolean" - }, - "IpamId": { - "description": "Id of the IPAM.", - "type": "string" - }, - "OperatingRegions": { - "description": "The regions IPAM is enabled for. Allows pools to be created in these regions, as well as enabling monitoring", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/IpamOperatingRegion" - }, - "type": "array", - "uniqueItems": true - }, - "PrivateDefaultScopeId": { - "description": "The Id of the default scope for publicly routable IP space, created with this IPAM.", - "type": "string" - }, - "PublicDefaultScopeId": { - "description": "The Id of the default scope for publicly routable IP space, created with this IPAM.", - "maxLength": 255, - "type": "string" - }, - "ResourceDiscoveryAssociationCount": { - "description": "The count of resource discoveries associated with this IPAM.", - "type": "integer" - }, - "ScopeCount": { - "description": "The number of scopes that currently exist in this IPAM.", - "type": "integer" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Tier": { - "description": "The tier of the IPAM.", - "enum": [ - "free", - "advanced" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/IpamId", - "/properties/Arn", - "/properties/PublicDefaultScopeId", - "/properties/PrivateDefaultScopeId", - "/properties/ScopeCount", - "/properties/ResourceDiscoveryAssociationCount", - "/properties/DefaultResourceDiscoveryId", - "/properties/DefaultResourceDiscoveryAssociationId" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ipam.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:DeleteTags", - "ec2:CreateTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::IPAM" -} +{ + "additionalProperties": false, + "definitions": { + "IpamOperatingRegion": { + "additionalProperties": false, + "description": "The regions IPAM is enabled for. Allows pools to be created in these regions, as well as enabling monitoring", + "properties": { + "RegionName": { + "description": "The name of the region.", + "type": "string" + } + }, + "required": [ + "RegionName" + ], + "type": "object" + }, + "IpamOrganizationalUnitExclusion": { + "additionalProperties": false, + "description": "If your IPAM is integrated with AWS Organizations and you add an organizational unit (OU) exclusion, IPAM will not manage the IP addresses in accounts in that OU exclusion.", + "properties": { + "OrganizationsEntityPath": { + "description": "An AWS Organizations entity path. Build the path for the OU(s) using AWS Organizations IDs separated by a '/'. Include all child OUs by ending the path with '/*'.", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "OrganizationsEntityPath" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Schema of AWS::EC2::IPAM Type", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateIpam", + "iam:CreateServiceLinkedRole", + "ec2:CreateTags", + "ec2:DescribeIpams", + "ec2:DescribeIpamResourceDiscoveries", + "ec2:ModifyIpamResourceDiscovery" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteIpam", + "ec2:DeleteTags", + "ec2:DescribeIpams" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeIpams" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeIpams", + "ec2:DescribeIpamResourceDiscoveries" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyIpam", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeIpams", + "ec2:DescribeIpamResourceDiscoveries", + "ec2:ModifyIpamResourceDiscovery" + ] + } + }, + "primaryIdentifier": [ + "/properties/IpamId" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the IPAM.", + "type": "string" + }, + "DefaultResourceDiscoveryAssociationId": { + "description": "The Id of the default association to the default resource discovery, created with this IPAM.", + "type": "string" + }, + "DefaultResourceDiscoveryId": { + "description": "The Id of the default resource discovery, created with this IPAM.", + "type": "string" + }, + "DefaultResourceDiscoveryOrganizationalUnitExclusions": { + "description": "A set of organizational unit (OU) exclusions for the default resource discovery, created with this IPAM.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpamOrganizationalUnitExclusion" + }, + "type": "array", + "uniqueItems": true + }, + "Description": { + "type": "string" + }, + "EnablePrivateGua": { + "description": "Enable provisioning of GUA space in private pools.", + "type": "boolean" + }, + "IpamId": { + "description": "Id of the IPAM.", + "type": "string" + }, + "OperatingRegions": { + "description": "The regions IPAM is enabled for. Allows pools to be created in these regions, as well as enabling monitoring", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpamOperatingRegion" + }, + "type": "array", + "uniqueItems": true + }, + "PrivateDefaultScopeId": { + "description": "The Id of the default scope for publicly routable IP space, created with this IPAM.", + "type": "string" + }, + "PublicDefaultScopeId": { + "description": "The Id of the default scope for publicly routable IP space, created with this IPAM.", + "maxLength": 255, + "type": "string" + }, + "ResourceDiscoveryAssociationCount": { + "description": "The count of resource discoveries associated with this IPAM.", + "type": "integer" + }, + "ScopeCount": { + "description": "The number of scopes that currently exist in this IPAM.", + "type": "integer" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Tier": { + "description": "The tier of the IPAM.", + "enum": [ + "free", + "advanced" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/IpamId", + "/properties/Arn", + "/properties/PublicDefaultScopeId", + "/properties/PrivateDefaultScopeId", + "/properties/ScopeCount", + "/properties/ResourceDiscoveryAssociationCount", + "/properties/DefaultResourceDiscoveryId", + "/properties/DefaultResourceDiscoveryAssociationId" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ipam.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::IPAM" +} diff --git a/src/schema/aws-ec2-ipamallocation.json b/src/schema/aws-ec2-ipamallocation.json index 96f92228..a00c72ff 100644 --- a/src/schema/aws-ec2-ipamallocation.json +++ b/src/schema/aws-ec2-ipamallocation.json @@ -1,91 +1,91 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/IpamPoolId", - "/properties/Cidr", - "/properties/Description", - "/properties/NetmaskLength" - ], - "definitions": { - "Cidr": { - "description": "Represents an IPAM custom allocation of a single IPv4 or IPv6 CIDR", - "type": "string" - } - }, - "description": "Resource Schema of AWS::EC2::IPAMAllocation Type", - "handlers": { - "create": { - "permissions": [ - "ec2:AllocateIpamPoolCidr", - "ec2:GetIpamPoolAllocations" - ] - }, - "delete": { - "permissions": [ - "ec2:ReleaseIpamPoolAllocation" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "IpamPoolId": { - "$ref": "resource-schema.json#/properties/IpamPoolId" - } - }, - "required": [ - "IpamPoolId" - ] - }, - "permissions": [ - "ec2:GetIpamPoolAllocations" - ] - }, - "read": { - "permissions": [ - "ec2:GetIpamPoolAllocations" - ] - } - }, - "primaryIdentifier": [ - "/properties/IpamPoolId", - "/properties/IpamPoolAllocationId", - "/properties/Cidr" - ], - "properties": { - "Cidr": { - "$ref": "#/definitions/Cidr" - }, - "Description": { - "type": "string" - }, - "IpamPoolAllocationId": { - "description": "Id of the allocation.", - "type": "string" - }, - "IpamPoolId": { - "description": "Id of the IPAM Pool.", - "type": "string" - }, - "NetmaskLength": { - "description": "The desired netmask length of the allocation. If set, IPAM will choose a block of free space with this size and return the CIDR representing it.", - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/IpamPoolAllocationId" - ], - "required": [ - "IpamPoolId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::IPAMAllocation", - "writeOnlyProperties": [ - "/properties/NetmaskLength" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IpamPoolId", + "/properties/Cidr", + "/properties/Description", + "/properties/NetmaskLength" + ], + "definitions": { + "Cidr": { + "description": "Represents an IPAM custom allocation of a single IPv4 or IPv6 CIDR", + "type": "string" + } + }, + "description": "Resource Schema of AWS::EC2::IPAMAllocation Type", + "handlers": { + "create": { + "permissions": [ + "ec2:AllocateIpamPoolCidr", + "ec2:GetIpamPoolAllocations" + ] + }, + "delete": { + "permissions": [ + "ec2:ReleaseIpamPoolAllocation" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "IpamPoolId": { + "$ref": "resource-schema.json#/properties/IpamPoolId" + } + }, + "required": [ + "IpamPoolId" + ] + }, + "permissions": [ + "ec2:GetIpamPoolAllocations" + ] + }, + "read": { + "permissions": [ + "ec2:GetIpamPoolAllocations" + ] + } + }, + "primaryIdentifier": [ + "/properties/IpamPoolId", + "/properties/IpamPoolAllocationId", + "/properties/Cidr" + ], + "properties": { + "Cidr": { + "$ref": "#/definitions/Cidr" + }, + "Description": { + "type": "string" + }, + "IpamPoolAllocationId": { + "description": "Id of the allocation.", + "type": "string" + }, + "IpamPoolId": { + "description": "Id of the IPAM Pool.", + "type": "string" + }, + "NetmaskLength": { + "description": "The desired netmask length of the allocation. If set, IPAM will choose a block of free space with this size and return the CIDR representing it.", + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/IpamPoolAllocationId" + ], + "required": [ + "IpamPoolId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::IPAMAllocation", + "writeOnlyProperties": [ + "/properties/NetmaskLength" + ] +} diff --git a/src/schema/aws-ec2-ipampool.json b/src/schema/aws-ec2-ipampool.json index 713efd6b..1527c4cb 100644 --- a/src/schema/aws-ec2-ipampool.json +++ b/src/schema/aws-ec2-ipampool.json @@ -1,286 +1,286 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/IpamScopeId", - "/properties/SourceIpamPoolId", - "/properties/Locale", - "/properties/AddressFamily", - "/properties/PubliclyAdvertisable", - "/properties/PublicIpSource", - "/properties/AwsService", - "/properties/SourceResource" - ], - "definitions": { - "Cidr": { - "description": "Represents a single IPv4 or IPv6 CIDR", - "type": "string" - }, - "ProvisionedCidr": { - "additionalProperties": false, - "description": "An address space to be inserted into this pool. All allocations must be made from this address space.", - "properties": { - "Cidr": { - "$ref": "#/definitions/Cidr" - } - }, - "required": [ - "Cidr" - ], - "type": "object" - }, - "SourceResource": { - "additionalProperties": false, - "description": "The resource associated with this pool's space. Depending on the ResourceType, setting a SourceResource changes which space can be provisioned in this pool and which types of resources can receive allocations", - "properties": { - "ResourceId": { - "type": "string" - }, - "ResourceOwner": { - "type": "string" - }, - "ResourceRegion": { - "type": "string" - }, - "ResourceType": { - "type": "string" - } - }, - "required": [ - "ResourceId", - "ResourceType", - "ResourceRegion", - "ResourceOwner" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Schema of AWS::EC2::IPAMPool Type", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateIpamPool", - "ec2:DescribeIpamPools", - "ec2:ProvisionIpamPoolCidr", - "ec2:GetIpamPoolCidrs", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteIpamPool", - "ec2:DescribeIpamPools", - "ec2:GetIpamPoolCidrs", - "ec2:DeprovisionIpamPoolCidr", - "ec2:DeleteTags" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeIpamPools" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeIpamPools", - "ec2:GetIpamPoolCidrs" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyIpamPool", - "ec2:DescribeIpamPools", - "ec2:GetIpamPoolCidrs", - "ec2:ProvisionIpamPoolCidr", - "ec2:DeprovisionIpamPoolCidr", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/IpamPoolId" - ], - "properties": { - "AddressFamily": { - "description": "The address family of the address space in this pool. Either IPv4 or IPv6.", - "type": "string" - }, - "AllocationDefaultNetmaskLength": { - "description": "The default netmask length for allocations made from this pool. This value is used when the netmask length of an allocation isn't specified.", - "type": "integer" - }, - "AllocationMaxNetmaskLength": { - "description": "The maximum allowed netmask length for allocations made from this pool.", - "type": "integer" - }, - "AllocationMinNetmaskLength": { - "description": "The minimum allowed netmask length for allocations made from this pool.", - "type": "integer" - }, - "AllocationResourceTags": { - "description": "When specified, an allocation will not be allowed unless a resource has a matching set of tags.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Arn": { - "description": "The Amazon Resource Name (ARN) of the IPAM Pool.", - "type": "string" - }, - "AutoImport": { - "description": "Determines what to do if IPAM discovers resources that haven't been assigned an allocation. If set to true, an allocation will be made automatically.", - "type": "boolean" - }, - "AwsService": { - "description": "Limits which service in Amazon Web Services that the pool can be used in.", - "enum": [ - "ec2" - ], - "type": "string" - }, - "Description": { - "type": "string" - }, - "IpamArn": { - "description": "The Amazon Resource Name (ARN) of the IPAM this pool is a part of.", - "type": "string" - }, - "IpamPoolId": { - "description": "Id of the IPAM Pool.", - "type": "string" - }, - "IpamScopeArn": { - "description": "The Amazon Resource Name (ARN) of the scope this pool is a part of.", - "type": "string" - }, - "IpamScopeId": { - "description": "The Id of the scope this pool is a part of.", - "type": "string" - }, - "IpamScopeType": { - "description": "Determines whether this scope contains publicly routable space or space for a private network", - "enum": [ - "public", - "private" - ], - "type": "string" - }, - "Locale": { - "description": "The region of this pool. If not set, this will default to \"None\" which will disable non-custom allocations. If the locale has been specified for the source pool, this value must match.", - "type": "string" - }, - "PoolDepth": { - "description": "The depth of this pool in the source pool hierarchy.", - "type": "integer" - }, - "ProvisionedCidrs": { - "description": "A list of cidrs representing the address space available for allocation in this pool.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ProvisionedCidr" - }, - "type": "array", - "uniqueItems": true - }, - "PublicIpSource": { - "description": "The IP address source for pools in the public scope. Only used for provisioning IP address CIDRs to pools in the public scope. Default is `byoip`.", - "enum": [ - "byoip", - "amazon" - ], - "type": "string" - }, - "PubliclyAdvertisable": { - "description": "Determines whether or not address space from this pool is publicly advertised. Must be set if and only if the pool is IPv6.", - "type": "boolean" - }, - "SourceIpamPoolId": { - "description": "The Id of this pool's source. If set, all space provisioned in this pool must be free space provisioned in the parent pool.", - "type": "string" - }, - "SourceResource": { - "$ref": "#/definitions/SourceResource" - }, - "State": { - "description": "The state of this pool. This can be one of the following values: \"create-in-progress\", \"create-complete\", \"modify-in-progress\", \"modify-complete\", \"delete-in-progress\", or \"delete-complete\"", - "enum": [ - "create-in-progress", - "create-complete", - "modify-in-progress", - "modify-complete", - "delete-in-progress", - "delete-complete" - ], - "type": "string" - }, - "StateMessage": { - "description": "An explanation of how the pool arrived at it current state.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "propertyTransform": { - "/properties/AddressFamily": "$lowercase(AddressFamily)" - }, - "readOnlyProperties": [ - "/properties/IpamPoolId", - "/properties/Arn", - "/properties/IpamScopeArn", - "/properties/IpamScopeType", - "/properties/IpamArn", - "/properties/PoolDepth", - "/properties/State", - "/properties/StateMessage" - ], - "required": [ - "IpamScopeId", - "AddressFamily" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ipam.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:DeleteTags", - "ec2:CreateTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::IPAMPool" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IpamScopeId", + "/properties/SourceIpamPoolId", + "/properties/Locale", + "/properties/AddressFamily", + "/properties/PubliclyAdvertisable", + "/properties/PublicIpSource", + "/properties/AwsService", + "/properties/SourceResource" + ], + "definitions": { + "Cidr": { + "description": "Represents a single IPv4 or IPv6 CIDR", + "type": "string" + }, + "ProvisionedCidr": { + "additionalProperties": false, + "description": "An address space to be inserted into this pool. All allocations must be made from this address space.", + "properties": { + "Cidr": { + "$ref": "#/definitions/Cidr" + } + }, + "required": [ + "Cidr" + ], + "type": "object" + }, + "SourceResource": { + "additionalProperties": false, + "description": "The resource associated with this pool's space. Depending on the ResourceType, setting a SourceResource changes which space can be provisioned in this pool and which types of resources can receive allocations", + "properties": { + "ResourceId": { + "type": "string" + }, + "ResourceOwner": { + "type": "string" + }, + "ResourceRegion": { + "type": "string" + }, + "ResourceType": { + "type": "string" + } + }, + "required": [ + "ResourceId", + "ResourceType", + "ResourceRegion", + "ResourceOwner" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Schema of AWS::EC2::IPAMPool Type", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateIpamPool", + "ec2:DescribeIpamPools", + "ec2:ProvisionIpamPoolCidr", + "ec2:GetIpamPoolCidrs", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteIpamPool", + "ec2:DescribeIpamPools", + "ec2:GetIpamPoolCidrs", + "ec2:DeprovisionIpamPoolCidr", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeIpamPools" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeIpamPools", + "ec2:GetIpamPoolCidrs" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyIpamPool", + "ec2:DescribeIpamPools", + "ec2:GetIpamPoolCidrs", + "ec2:ProvisionIpamPoolCidr", + "ec2:DeprovisionIpamPoolCidr", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/IpamPoolId" + ], + "properties": { + "AddressFamily": { + "description": "The address family of the address space in this pool. Either IPv4 or IPv6.", + "type": "string" + }, + "AllocationDefaultNetmaskLength": { + "description": "The default netmask length for allocations made from this pool. This value is used when the netmask length of an allocation isn't specified.", + "type": "integer" + }, + "AllocationMaxNetmaskLength": { + "description": "The maximum allowed netmask length for allocations made from this pool.", + "type": "integer" + }, + "AllocationMinNetmaskLength": { + "description": "The minimum allowed netmask length for allocations made from this pool.", + "type": "integer" + }, + "AllocationResourceTags": { + "description": "When specified, an allocation will not be allowed unless a resource has a matching set of tags.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the IPAM Pool.", + "type": "string" + }, + "AutoImport": { + "description": "Determines what to do if IPAM discovers resources that haven't been assigned an allocation. If set to true, an allocation will be made automatically.", + "type": "boolean" + }, + "AwsService": { + "description": "Limits which service in Amazon Web Services that the pool can be used in.", + "enum": [ + "ec2" + ], + "type": "string" + }, + "Description": { + "type": "string" + }, + "IpamArn": { + "description": "The Amazon Resource Name (ARN) of the IPAM this pool is a part of.", + "type": "string" + }, + "IpamPoolId": { + "description": "Id of the IPAM Pool.", + "type": "string" + }, + "IpamScopeArn": { + "description": "The Amazon Resource Name (ARN) of the scope this pool is a part of.", + "type": "string" + }, + "IpamScopeId": { + "description": "The Id of the scope this pool is a part of.", + "type": "string" + }, + "IpamScopeType": { + "description": "Determines whether this scope contains publicly routable space or space for a private network", + "enum": [ + "public", + "private" + ], + "type": "string" + }, + "Locale": { + "description": "The region of this pool. If not set, this will default to \"None\" which will disable non-custom allocations. If the locale has been specified for the source pool, this value must match.", + "type": "string" + }, + "PoolDepth": { + "description": "The depth of this pool in the source pool hierarchy.", + "type": "integer" + }, + "ProvisionedCidrs": { + "description": "A list of cidrs representing the address space available for allocation in this pool.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ProvisionedCidr" + }, + "type": "array", + "uniqueItems": true + }, + "PublicIpSource": { + "description": "The IP address source for pools in the public scope. Only used for provisioning IP address CIDRs to pools in the public scope. Default is `byoip`.", + "enum": [ + "byoip", + "amazon" + ], + "type": "string" + }, + "PubliclyAdvertisable": { + "description": "Determines whether or not address space from this pool is publicly advertised. Must be set if and only if the pool is IPv6.", + "type": "boolean" + }, + "SourceIpamPoolId": { + "description": "The Id of this pool's source. If set, all space provisioned in this pool must be free space provisioned in the parent pool.", + "type": "string" + }, + "SourceResource": { + "$ref": "#/definitions/SourceResource" + }, + "State": { + "description": "The state of this pool. This can be one of the following values: \"create-in-progress\", \"create-complete\", \"modify-in-progress\", \"modify-complete\", \"delete-in-progress\", or \"delete-complete\"", + "enum": [ + "create-in-progress", + "create-complete", + "modify-in-progress", + "modify-complete", + "delete-in-progress", + "delete-complete" + ], + "type": "string" + }, + "StateMessage": { + "description": "An explanation of how the pool arrived at it current state.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": { + "/properties/AddressFamily": "$lowercase(AddressFamily)" + }, + "readOnlyProperties": [ + "/properties/IpamPoolId", + "/properties/Arn", + "/properties/IpamScopeArn", + "/properties/IpamScopeType", + "/properties/IpamArn", + "/properties/PoolDepth", + "/properties/State", + "/properties/StateMessage" + ], + "required": [ + "IpamScopeId", + "AddressFamily" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ipam.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::IPAMPool" +} diff --git a/src/schema/aws-ec2-ipampoolcidr.json b/src/schema/aws-ec2-ipampoolcidr.json index 1a6983a3..27bbb11f 100644 --- a/src/schema/aws-ec2-ipampoolcidr.json +++ b/src/schema/aws-ec2-ipampoolcidr.json @@ -1,84 +1,84 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/IpamPoolId", - "/properties/Cidr", - "/properties/NetmaskLength" - ], - "description": "Resource Schema of AWS::EC2::IPAMPoolCidr Type", - "handlers": { - "create": { - "permissions": [ - "ec2:ProvisionIpamPoolCidr", - "ec2:GetIpamPoolCidrs" - ] - }, - "delete": { - "permissions": [ - "ec2:DeprovisionIpamPoolCidr", - "ec2:GetIpamPoolCidrs" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "IpamPoolId": { - "$ref": "resource-schema.json#/properties/IpamPoolId" - } - }, - "required": [ - "IpamPoolId" - ] - }, - "permissions": [ - "ec2:GetIpamPoolCidrs" - ] - }, - "read": { - "permissions": [ - "ec2:GetIpamPoolCidrs" - ] - } - }, - "primaryIdentifier": [ - "/properties/IpamPoolId", - "/properties/IpamPoolCidrId" - ], - "properties": { - "Cidr": { - "description": "Represents a single IPv4 or IPv6 CIDR", - "type": "string" - }, - "IpamPoolCidrId": { - "description": "Id of the IPAM Pool Cidr.", - "type": "string" - }, - "IpamPoolId": { - "description": "Id of the IPAM Pool.", - "type": "string" - }, - "NetmaskLength": { - "description": "The desired netmask length of the provision. If set, IPAM will choose a block of free space with this size and return the CIDR representing it.", - "type": "integer" - }, - "State": { - "description": "Provisioned state of the cidr.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/IpamPoolCidrId", - "/properties/State" - ], - "required": [ - "IpamPoolId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::IPAMPoolCidr" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IpamPoolId", + "/properties/Cidr", + "/properties/NetmaskLength" + ], + "description": "Resource Schema of AWS::EC2::IPAMPoolCidr Type", + "handlers": { + "create": { + "permissions": [ + "ec2:ProvisionIpamPoolCidr", + "ec2:GetIpamPoolCidrs" + ] + }, + "delete": { + "permissions": [ + "ec2:DeprovisionIpamPoolCidr", + "ec2:GetIpamPoolCidrs" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "IpamPoolId": { + "$ref": "resource-schema.json#/properties/IpamPoolId" + } + }, + "required": [ + "IpamPoolId" + ] + }, + "permissions": [ + "ec2:GetIpamPoolCidrs" + ] + }, + "read": { + "permissions": [ + "ec2:GetIpamPoolCidrs" + ] + } + }, + "primaryIdentifier": [ + "/properties/IpamPoolId", + "/properties/IpamPoolCidrId" + ], + "properties": { + "Cidr": { + "description": "Represents a single IPv4 or IPv6 CIDR", + "type": "string" + }, + "IpamPoolCidrId": { + "description": "Id of the IPAM Pool Cidr.", + "type": "string" + }, + "IpamPoolId": { + "description": "Id of the IPAM Pool.", + "type": "string" + }, + "NetmaskLength": { + "description": "The desired netmask length of the provision. If set, IPAM will choose a block of free space with this size and return the CIDR representing it.", + "type": "integer" + }, + "State": { + "description": "Provisioned state of the cidr.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/IpamPoolCidrId", + "/properties/State" + ], + "required": [ + "IpamPoolId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::IPAMPoolCidr" +} diff --git a/src/schema/aws-ec2-ipamresourcediscovery.json b/src/schema/aws-ec2-ipamresourcediscovery.json index c300c550..4d26e49f 100644 --- a/src/schema/aws-ec2-ipamresourcediscovery.json +++ b/src/schema/aws-ec2-ipamresourcediscovery.json @@ -1,150 +1,176 @@ -{ - "additionalProperties": false, - "definitions": { - "IpamOperatingRegion": { - "additionalProperties": false, - "description": "The regions IPAM Resource Discovery is enabled for. Allows for monitoring.", - "properties": { - "RegionName": { - "description": "The name of the region.", - "type": "string" - } - }, - "required": [ - "RegionName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Schema of AWS::EC2::IPAMResourceDiscovery Type", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateIpamResourceDiscovery", - "ec2:DescribeIpamResourceDiscoveries", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteIpamResourceDiscovery", - "ec2:DescribeIpamResourceDiscoveries", - "ec2:DeleteTags" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeIpamResourceDiscoveries" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeIpamResourceDiscoveries" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyIpamResourceDiscovery", - "ec2:DescribeIpamResourceDiscoveries", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/IpamResourceDiscoveryId" - ], - "properties": { - "Description": { - "type": "string" - }, - "IpamResourceDiscoveryArn": { - "description": "Amazon Resource Name (Arn) for the Resource Discovery.", - "type": "string" - }, - "IpamResourceDiscoveryId": { - "description": "Id of the IPAM Pool.", - "type": "string" - }, - "IpamResourceDiscoveryRegion": { - "description": "The region the resource discovery is setup in. ", - "type": "string" - }, - "IsDefault": { - "description": "Determines whether or not address space from this pool is publicly advertised. Must be set if and only if the pool is IPv6.", - "type": "boolean" - }, - "OperatingRegions": { - "description": "The regions Resource Discovery is enabled for. Allows resource discoveries to be created in these regions, as well as enabling monitoring", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/IpamOperatingRegion" - }, - "type": "array", - "uniqueItems": true - }, - "OwnerId": { - "description": "Owner Account ID of the Resource Discovery", - "type": "string" - }, - "State": { - "description": "The state of this Resource Discovery.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "propertyTransform": {}, - "readOnlyProperties": [ - "/properties/IpamResourceDiscoveryId", - "/properties/IpamResourceDiscoveryArn", - "/properties/OwnerId", - "/properties/IpamResourceDiscoveryRegion", - "/properties/IsDefault", - "/properties/State" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ipam.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:DeleteTags", - "ec2:CreateTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::IPAMResourceDiscovery" -} +{ + "additionalProperties": false, + "definitions": { + "IpamOperatingRegion": { + "additionalProperties": false, + "description": "The regions IPAM Resource Discovery is enabled for. Allows for monitoring.", + "properties": { + "RegionName": { + "description": "The name of the region.", + "type": "string" + } + }, + "required": [ + "RegionName" + ], + "type": "object" + }, + "IpamResourceDiscoveryOrganizationalUnitExclusion": { + "additionalProperties": false, + "description": "If your IPAM is integrated with AWS Organizations and you add an organizational unit (OU) exclusion, IPAM will not manage the IP addresses in accounts in that OU exclusion.", + "properties": { + "OrganizationsEntityPath": { + "description": "An AWS Organizations entity path. Build the path for the OU(s) using AWS Organizations IDs separated by a '/'. Include all child OUs by ending the path with '/*'.", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "OrganizationsEntityPath" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Schema of AWS::EC2::IPAMResourceDiscovery Type", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateIpamResourceDiscovery", + "ec2:DescribeIpamResourceDiscoveries", + "ec2:ModifyIpamResourceDiscovery", + "ec2:CreateTags", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteIpamResourceDiscovery", + "ec2:DescribeIpamResourceDiscoveries", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeIpamResourceDiscoveries" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeIpamResourceDiscoveries" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyIpamResourceDiscovery", + "ec2:DescribeIpamResourceDiscoveries", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/IpamResourceDiscoveryId" + ], + "properties": { + "Description": { + "type": "string" + }, + "IpamResourceDiscoveryArn": { + "description": "Amazon Resource Name (Arn) for the Resource Discovery.", + "type": "string" + }, + "IpamResourceDiscoveryId": { + "description": "Id of the IPAM Pool.", + "type": "string" + }, + "IpamResourceDiscoveryRegion": { + "description": "The region the resource discovery is setup in. ", + "type": "string" + }, + "IsDefault": { + "description": "Determines whether or not address space from this pool is publicly advertised. Must be set if and only if the pool is IPv6.", + "type": "boolean" + }, + "OperatingRegions": { + "description": "The regions Resource Discovery is enabled for. Allows resource discoveries to be created in these regions, as well as enabling monitoring", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpamOperatingRegion" + }, + "type": "array", + "uniqueItems": true + }, + "OrganizationalUnitExclusions": { + "description": "A set of organizational unit (OU) exclusions for this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpamResourceDiscoveryOrganizationalUnitExclusion" + }, + "type": "array", + "uniqueItems": true + }, + "OwnerId": { + "description": "Owner Account ID of the Resource Discovery", + "type": "string" + }, + "State": { + "description": "The state of this Resource Discovery.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": {}, + "readOnlyProperties": [ + "/properties/IpamResourceDiscoveryId", + "/properties/IpamResourceDiscoveryArn", + "/properties/OwnerId", + "/properties/IpamResourceDiscoveryRegion", + "/properties/IsDefault", + "/properties/State" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ipam.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::IPAMResourceDiscovery" +} diff --git a/src/schema/aws-ec2-ipamresourcediscoveryassociation.json b/src/schema/aws-ec2-ipamresourcediscoveryassociation.json index 583e26a6..ffb04ec3 100644 --- a/src/schema/aws-ec2-ipamresourcediscoveryassociation.json +++ b/src/schema/aws-ec2-ipamresourcediscoveryassociation.json @@ -1,147 +1,147 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/IpamId", - "/properties/IpamResourceDiscoveryId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Schema of AWS::EC2::IPAMResourceDiscoveryAssociation Type", - "handlers": { - "create": { - "permissions": [ - "ec2:AssociateIpamResourceDiscovery", - "ec2:DescribeIpamResourceDiscoveryAssociations", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DisassociateIpamResourceDiscovery", - "ec2:DescribeIpamResourceDiscoveryAssociations", - "ec2:DeleteTags" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeIpamResourceDiscoveryAssociations" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeIpamResourceDiscoveryAssociations" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeIpamResourceDiscoveryAssociations", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/IpamResourceDiscoveryAssociationId" - ], - "properties": { - "IpamArn": { - "description": "Arn of the IPAM.", - "type": "string" - }, - "IpamId": { - "description": "The Id of the IPAM this Resource Discovery is associated to.", - "type": "string" - }, - "IpamRegion": { - "description": "The home region of the IPAM.", - "type": "string" - }, - "IpamResourceDiscoveryAssociationArn": { - "description": "The Amazon Resource Name (ARN) of the resource discovery association is a part of.", - "type": "string" - }, - "IpamResourceDiscoveryAssociationId": { - "description": "Id of the IPAM Resource Discovery Association.", - "type": "string" - }, - "IpamResourceDiscoveryId": { - "description": "The Amazon Resource Name (ARN) of the IPAM Resource Discovery Association.", - "type": "string" - }, - "IsDefault": { - "description": "If the Resource Discovery Association exists due as part of CreateIpam.", - "type": "boolean" - }, - "OwnerId": { - "description": "The AWS Account ID for the account where the shared IPAM exists.", - "type": "string" - }, - "ResourceDiscoveryStatus": { - "description": "The status of the resource discovery.", - "type": "string" - }, - "State": { - "description": "The operational state of the Resource Discovery Association. Related to Create/Delete activities.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/IpamArn", - "/properties/IpamRegion", - "/properties/IpamResourceDiscoveryAssociationId", - "/properties/IpamResourceDiscoveryAssociationArn", - "/properties/IsDefault", - "/properties/ResourceDiscoveryStatus", - "/properties/State", - "/properties/OwnerId" - ], - "required": [ - "IpamId", - "IpamResourceDiscoveryId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ipam.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:DeleteTags", - "ec2:CreateTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::IPAMResourceDiscoveryAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IpamId", + "/properties/IpamResourceDiscoveryId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Schema of AWS::EC2::IPAMResourceDiscoveryAssociation Type", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateIpamResourceDiscovery", + "ec2:DescribeIpamResourceDiscoveryAssociations", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DisassociateIpamResourceDiscovery", + "ec2:DescribeIpamResourceDiscoveryAssociations", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeIpamResourceDiscoveryAssociations" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeIpamResourceDiscoveryAssociations" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeIpamResourceDiscoveryAssociations", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/IpamResourceDiscoveryAssociationId" + ], + "properties": { + "IpamArn": { + "description": "Arn of the IPAM.", + "type": "string" + }, + "IpamId": { + "description": "The Id of the IPAM this Resource Discovery is associated to.", + "type": "string" + }, + "IpamRegion": { + "description": "The home region of the IPAM.", + "type": "string" + }, + "IpamResourceDiscoveryAssociationArn": { + "description": "The Amazon Resource Name (ARN) of the resource discovery association is a part of.", + "type": "string" + }, + "IpamResourceDiscoveryAssociationId": { + "description": "Id of the IPAM Resource Discovery Association.", + "type": "string" + }, + "IpamResourceDiscoveryId": { + "description": "The Amazon Resource Name (ARN) of the IPAM Resource Discovery Association.", + "type": "string" + }, + "IsDefault": { + "description": "If the Resource Discovery Association exists due as part of CreateIpam.", + "type": "boolean" + }, + "OwnerId": { + "description": "The AWS Account ID for the account where the shared IPAM exists.", + "type": "string" + }, + "ResourceDiscoveryStatus": { + "description": "The status of the resource discovery.", + "type": "string" + }, + "State": { + "description": "The operational state of the Resource Discovery Association. Related to Create/Delete activities.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/IpamArn", + "/properties/IpamRegion", + "/properties/IpamResourceDiscoveryAssociationId", + "/properties/IpamResourceDiscoveryAssociationArn", + "/properties/IsDefault", + "/properties/ResourceDiscoveryStatus", + "/properties/State", + "/properties/OwnerId" + ], + "required": [ + "IpamId", + "IpamResourceDiscoveryId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ipam.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::IPAMResourceDiscoveryAssociation" +} diff --git a/src/schema/aws-ec2-ipamscope.json b/src/schema/aws-ec2-ipamscope.json index 3b246f98..bd3e363b 100644 --- a/src/schema/aws-ec2-ipamscope.json +++ b/src/schema/aws-ec2-ipamscope.json @@ -1,139 +1,139 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/IpamId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Schema of AWS::EC2::IPAMScope Type", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateIpamScope", - "ec2:DescribeIpamScopes", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteIpamScope", - "ec2:DescribeIpamScopes", - "ec2:DeleteTags" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeIpamScopes" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeIpamScopes" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyIpamScope", - "ec2:DescribeIpamScopes", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/IpamScopeId" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the IPAM scope.", - "type": "string" - }, - "Description": { - "type": "string" - }, - "IpamArn": { - "description": "The Amazon Resource Name (ARN) of the IPAM this scope is a part of.", - "type": "string" - }, - "IpamId": { - "description": "The Id of the IPAM this scope is a part of.", - "type": "string" - }, - "IpamScopeId": { - "description": "Id of the IPAM scope.", - "type": "string" - }, - "IpamScopeType": { - "description": "Determines whether this scope contains publicly routable space or space for a private network", - "enum": [ - "public", - "private" - ], - "type": "string" - }, - "IsDefault": { - "description": "Is this one of the default scopes created with the IPAM.", - "type": "boolean" - }, - "PoolCount": { - "description": "The number of pools that currently exist in this scope.", - "type": "integer" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/IpamScopeId", - "/properties/Arn", - "/properties/IpamArn", - "/properties/IsDefault", - "/properties/PoolCount", - "/properties/IpamScopeType" - ], - "required": [ - "IpamId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ipam.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:DeleteTags", - "ec2:CreateTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::IPAMScope" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IpamId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Schema of AWS::EC2::IPAMScope Type", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateIpamScope", + "ec2:DescribeIpamScopes", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteIpamScope", + "ec2:DescribeIpamScopes", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeIpamScopes" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeIpamScopes" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyIpamScope", + "ec2:DescribeIpamScopes", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/IpamScopeId" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the IPAM scope.", + "type": "string" + }, + "Description": { + "type": "string" + }, + "IpamArn": { + "description": "The Amazon Resource Name (ARN) of the IPAM this scope is a part of.", + "type": "string" + }, + "IpamId": { + "description": "The Id of the IPAM this scope is a part of.", + "type": "string" + }, + "IpamScopeId": { + "description": "Id of the IPAM scope.", + "type": "string" + }, + "IpamScopeType": { + "description": "Determines whether this scope contains publicly routable space or space for a private network", + "enum": [ + "public", + "private" + ], + "type": "string" + }, + "IsDefault": { + "description": "Is this one of the default scopes created with the IPAM.", + "type": "boolean" + }, + "PoolCount": { + "description": "The number of pools that currently exist in this scope.", + "type": "integer" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/IpamScopeId", + "/properties/Arn", + "/properties/IpamArn", + "/properties/IsDefault", + "/properties/PoolCount", + "/properties/IpamScopeType" + ], + "required": [ + "IpamId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ipam.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::IPAMScope" +} diff --git a/src/schema/aws-ec2-keypair.json b/src/schema/aws-ec2-keypair.json index f7286b41..5d11d257 100644 --- a/src/schema/aws-ec2-keypair.json +++ b/src/schema/aws-ec2-keypair.json @@ -1,137 +1,141 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/KeyPairId" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KeyName", - "/properties/KeyType", - "/properties/KeyFormat", - "/properties/PublicKeyMaterial", - "/properties/Tags" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "properties": { - "Key": { - "description": "The tag key.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The tag value.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Specifies a key pair for use with an EC2long instance as follows:\n + To import an existing key pair, include the ``PublicKeyMaterial`` property.\n + To create a new key pair, omit the ``PublicKeyMaterial`` property.\n \n When you import an existing key pair, you specify the public key material for the key. We assume that you have the private key material for the key. CFNlong does not create or return the private key material when you import a key pair.\n When you create a new key pair, the private key is saved to SYSlong Parameter Store, using a parameter with the following name: ``/ec2/keypair/{key_pair_id}``. For more information about retrieving private key, and the required permissions, see [Create a key pair using](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-key-pairs.html#create-key-pair-cloudformation) in the *User Guide*.\n When CFN deletes a key pair that was created or imported by a stack, it also deletes the parameter that was used to store the private key material in Parameter Store.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateKeyPair", - "ec2:ImportKeyPair", - "ec2:CreateTags", - "ssm:PutParameter" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteKeyPair", - "ssm:DeleteParameter", - "ec2:DescribeKeyPairs" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeKeyPairs" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeKeyPairs" - ] - } - }, - "primaryIdentifier": [ - "/properties/KeyName" - ], - "properties": { - "KeyFingerprint": { - "description": "", - "type": "string" - }, - "KeyFormat": { - "default": "pem", - "description": "The format of the key pair.\n Default: ``pem``", - "enum": [ - "pem", - "ppk" - ], - "type": "string" - }, - "KeyName": { - "description": "A unique name for the key pair.\n Constraints: Up to 255 ASCII characters", - "type": "string" - }, - "KeyPairId": { - "description": "", - "type": "string" - }, - "KeyType": { - "default": "rsa", - "description": "The type of key pair. Note that ED25519 keys are not supported for Windows instances.\n If the ``PublicKeyMaterial`` property is specified, the ``KeyType`` property is ignored, and the key type is inferred from the ``PublicKeyMaterial`` value.\n Default: ``rsa``", - "enum": [ - "rsa", - "ed25519" - ], - "type": "string" - }, - "PublicKeyMaterial": { - "description": "The public key material. The ``PublicKeyMaterial`` property is used to import a key pair. If this property is not specified, then a new key pair will be created.", - "type": "string" - }, - "Tags": { - "description": "The tags to apply to the key pair.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/KeyPairId", - "/properties/KeyFingerprint" - ], - "required": [ - "KeyName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:CreateTags" - ], - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::EC2::KeyPair", - "writeOnlyProperties": [ - "/properties/KeyFormat" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/KeyPairId" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KeyName", + "/properties/KeyType", + "/properties/KeyFormat", + "/properties/PublicKeyMaterial", + "/properties/Tags" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The tag value.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Specifies a key pair for use with an EC2long instance as follows:\n + To import an existing key pair, include the ``PublicKeyMaterial`` property.\n + To create a new key pair, omit the ``PublicKeyMaterial`` property.\n \n When you import an existing key pair, you specify the public key material for the key. We assume that you have the private key material for the key. CFNlong does not create or return the private key material when you import a key pair.\n When you create a new key pair, the private key is saved to SYSlong Parameter Store, using a parameter with the following name: ``/ec2/keypair/{key_pair_id}``. For more information about retrieving private key, and the required permissions, see [Create a key pair using](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-key-pairs.html#create-key-pair-cloudformation) in the *User Guide*.\n When CFN deletes a key pair that was created or imported by a stack, it also deletes the parameter that was used to store the private key material in Parameter Store.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateKeyPair", + "ec2:ImportKeyPair", + "ec2:CreateTags", + "ssm:PutParameter" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteKeyPair", + "ssm:DeleteParameter", + "ec2:DescribeKeyPairs" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeKeyPairs" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeKeyPairs" + ] + } + }, + "primaryIdentifier": [ + "/properties/KeyName" + ], + "properties": { + "KeyFingerprint": { + "description": "", + "type": "string" + }, + "KeyFormat": { + "default": "pem", + "description": "The format of the key pair.\n Default: ``pem``", + "enum": [ + "pem", + "ppk" + ], + "type": "string" + }, + "KeyName": { + "description": "A unique name for the key pair.\n Constraints: Up to 255 ASCII characters", + "type": "string" + }, + "KeyPairId": { + "description": "", + "type": "string" + }, + "KeyType": { + "default": "rsa", + "description": "The type of key pair. Note that ED25519 keys are not supported for Windows instances.\n If the ``PublicKeyMaterial`` property is specified, the ``KeyType`` property is ignored, and the key type is inferred from the ``PublicKeyMaterial`` value.\n Default: ``rsa``", + "enum": [ + "rsa", + "ed25519" + ], + "type": "string" + }, + "PublicKeyMaterial": { + "description": "The public key material. The ``PublicKeyMaterial`` property is used to import a key pair. If this property is not specified, then a new key pair will be created.", + "type": "string" + }, + "Tags": { + "description": "The tags to apply to the key pair.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": { + "/properties/PublicKeyMaterial": "$join([PublicKeyMaterial, \"\n\"])" + }, + "readOnlyProperties": [ + "/properties/KeyPairId", + "/properties/KeyFingerprint" + ], + "required": [ + "KeyName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::EC2::KeyPair", + "writeOnlyProperties": [ + "/properties/KeyFormat" + ] +} diff --git a/src/schema/aws-ec2-launchtemplate.json b/src/schema/aws-ec2-launchtemplate.json index 838294ec..c46334da 100644 --- a/src/schema/aws-ec2-launchtemplate.json +++ b/src/schema/aws-ec2-launchtemplate.json @@ -1,1148 +1,1209 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LaunchTemplateName" - ], - "definitions": { - "AcceleratorCount": { - "additionalProperties": false, - "description": "The minimum and maximum number of accelerators (GPUs, FPGAs, or AWS Inferentia chips) on an instance.", - "properties": { - "Max": { - "description": "The maximum number of accelerators. To specify no maximum limit, omit this parameter. To exclude accelerator-enabled instance types, set ``Max`` to ``0``.", - "type": "integer" - }, - "Min": { - "description": "The minimum number of accelerators. To specify no minimum limit, omit this parameter.", - "type": "integer" - } - }, - "type": "object" - }, - "AcceleratorTotalMemoryMiB": { - "additionalProperties": false, - "description": "The minimum and maximum amount of total accelerator memory, in MiB.", - "properties": { - "Max": { - "description": "The maximum amount of accelerator memory, in MiB. To specify no maximum limit, omit this parameter.", - "type": "integer" - }, - "Min": { - "description": "The minimum amount of accelerator memory, in MiB. To specify no minimum limit, omit this parameter.", - "type": "integer" - } - }, - "type": "object" - }, - "BaselineEbsBandwidthMbps": { - "additionalProperties": false, - "description": "The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps. For more information, see [Amazon EBS\u2013optimized instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) in the *Amazon EC2 User Guide*.", - "properties": { - "Max": { - "description": "The maximum baseline bandwidth, in Mbps. To specify no maximum limit, omit this parameter.", - "type": "integer" - }, - "Min": { - "description": "The minimum baseline bandwidth, in Mbps. To specify no minimum limit, omit this parameter.", - "type": "integer" - } - }, - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "description": "Specifies a block device mapping for a launch template. You must specify ``DeviceName`` plus exactly one of the following properties: ``Ebs``, ``NoDevice``, or ``VirtualName``.\n ``BlockDeviceMapping`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", - "properties": { - "DeviceName": { - "description": "The device name (for example, /dev/sdh or xvdh).", - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs", - "description": "Parameters used to automatically set up EBS volumes when the instance is launched." - }, - "NoDevice": { - "description": "To omit the device from the block device mapping, specify an empty string.", - "type": "string" - }, - "VirtualName": { - "description": "The virtual device name (ephemeralN). Instance store volumes are numbered starting from 0. An instance type with 2 available instance store volumes can specify mappings for ephemeral0 and ephemeral1. The number of available instance store volumes depends on the instance type. After you connect to the instance, you must mount the volume.", - "type": "string" - } - }, - "type": "object" - }, - "CapacityReservationSpecification": { - "additionalProperties": false, - "description": "Specifies an instance's Capacity Reservation targeting option. You can specify only one option at a time.\n ``CapacityReservationSpecification`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", - "properties": { - "CapacityReservationPreference": { - "description": "Indicates the instance's Capacity Reservation preferences. Possible preferences include:\n + ``open`` - The instance can run in any ``open`` Capacity Reservation that has matching attributes (instance type, platform, Availability Zone).\n + ``none`` - The instance avoids running in a Capacity Reservation even if one is available. The instance runs in On-Demand capacity.", - "type": "string" - }, - "CapacityReservationTarget": { - "$ref": "#/definitions/CapacityReservationTarget", - "description": "Information about the target Capacity Reservation or Capacity Reservation group." - } - }, - "type": "object" - }, - "CapacityReservationTarget": { - "additionalProperties": false, - "description": "Specifies a target Capacity Reservation.\n ``CapacityReservationTarget`` is a property of the [Amazon EC2 LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) property type.", - "properties": { - "CapacityReservationId": { - "description": "The ID of the Capacity Reservation in which to run the instance.", - "type": "string" - }, - "CapacityReservationResourceGroupArn": { - "description": "The ARN of the Capacity Reservation resource group in which to run the instance.", - "type": "string" - } - }, - "type": "object" - }, - "ConnectionTrackingSpecification": { - "additionalProperties": false, - "description": "A security group connection tracking specification that enables you to set the idle timeout for connection tracking on an Elastic network interface. For more information, see [Connection tracking timeouts](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html#connection-tracking-timeouts) in the *Amazon EC2 User Guide*.", - "properties": { - "TcpEstablishedTimeout": { - "description": "Timeout (in seconds) for idle TCP connections in an established state. Min: 60 seconds. Max: 432000 seconds (5 days). Default: 432000 seconds. Recommended: Less than 432000 seconds.", - "type": "integer" - }, - "UdpStreamTimeout": { - "description": "Timeout (in seconds) for idle UDP flows classified as streams which have seen more than one request-response transaction. Min: 60 seconds. Max: 180 seconds (3 minutes). Default: 180 seconds.", - "type": "integer" - }, - "UdpTimeout": { - "description": "Timeout (in seconds) for idle UDP flows that have seen traffic only in a single direction or a single request-response transaction. Min: 30 seconds. Max: 60 seconds. Default: 30 seconds.", - "type": "integer" - } - }, - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "description": "Specifies the CPU options for an instance. For more information, see [Optimize CPU options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) in the *User Guide*.\n ``CpuOptions`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", - "properties": { - "AmdSevSnp": { - "description": "Indicates whether to enable the instance for AMD SEV-SNP. AMD SEV-SNP is supported with M6a, R6a, and C6a instance types only. For more information, see [AMD SEV-SNP](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sev-snp.html).", - "enum": [ - "enabled", - "disabled" - ], - "type": "string" - }, - "CoreCount": { - "description": "The number of CPU cores for the instance.", - "type": "integer" - }, - "ThreadsPerCore": { - "description": "The number of threads per CPU core. To disable multithreading for the instance, specify a value of ``1``. Otherwise, specify the default value of ``2``.", - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "description": "Specifies the credit option for CPU usage of a T2, T3, or T3a instance.\n ``CreditSpecification`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", - "properties": { - "CpuCredits": { - "description": "The credit option for CPU usage of a T instance.\n Valid values: ``standard`` | ``unlimited``", - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "description": "Parameters for a block device for an EBS volume in an Amazon EC2 launch template.\n ``Ebs`` is a property of [AWS::EC2::LaunchTemplate BlockDeviceMapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html).", - "properties": { - "DeleteOnTermination": { - "description": "Indicates whether the EBS volume is deleted on instance termination.", - "type": "boolean" - }, - "Encrypted": { - "description": "Indicates whether the EBS volume is encrypted. Encrypted volumes can only be attached to instances that support Amazon EBS encryption. If you are creating a volume from a snapshot, you can't specify an encryption value.", - "type": "boolean" - }, - "Iops": { - "description": "The number of I/O operations per second (IOPS). For ``gp3``, ``io1``, and ``io2`` volumes, this represents the number of IOPS that are provisioned for the volume. For ``gp2`` volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting.\n The following are the supported values for each volume type:\n + ``gp3``: 3,000 - 16,000 IOPS\n + ``io1``: 100 - 64,000 IOPS\n + ``io2``: 100 - 256,000 IOPS\n \n For ``io2`` volumes, you can achieve up to 256,000 IOPS on [instances built on the Nitro System](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances). On other instances, you can achieve performance up to 32,000 IOPS.\n This parameter is supported for ``io1``, ``io2``, and ``gp3`` volumes only.", - "type": "integer" - }, - "KmsKeyId": { - "description": "The ARN of the symmetric KMSlong (KMS) CMK used for encryption.", - "type": "string" - }, - "SnapshotId": { - "description": "The ID of the snapshot.", - "type": "string" - }, - "Throughput": { - "description": "The throughput to provision for a ``gp3`` volume, with a maximum of 1,000 MiB/s.\n Valid Range: Minimum value of 125. Maximum value of 1000.", - "type": "integer" - }, - "VolumeSize": { - "description": "The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size. The following are the supported volumes sizes for each volume type:\n + ``gp2`` and ``gp3``: 1 - 16,384 GiB\n + ``io1``: 4 - 16,384 GiB\n + ``io2``: 4 - 65,536 GiB\n + ``st1`` and ``sc1``: 125 - 16,384 GiB\n + ``standard``: 1 - 1024 GiB", - "type": "integer" - }, - "VolumeType": { - "description": "The volume type. For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) in the *Amazon EBS User Guide*.", - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "description": "Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.\n Specifies a specification for an Elastic GPU for an Amazon EC2 launch template.\n ``ElasticGpuSpecification`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", - "properties": { - "Type": { - "description": "The type of Elastic Graphics accelerator.", - "type": "string" - } - }, - "type": "object" - }, - "EnaSrdSpecification": { - "additionalProperties": false, - "description": "ENA Express uses AWS Scalable Reliable Datagram (SRD) technology to increase the maximum bandwidth used per stream and minimize tail latency of network traffic between EC2 instances. With ENA Express, you can communicate between two EC2 instances in the same subnet within the same account, or in different accounts. Both sending and receiving instances must have ENA Express enabled.\n To improve the reliability of network packet delivery, ENA Express reorders network packets on the receiving end by default. However, some UDP-based applications are designed to handle network packets that are out of order to reduce the overhead for packet delivery at the network layer. When ENA Express is enabled, you can specify whether UDP network traffic uses it.", - "properties": { - "EnaSrdEnabled": { - "description": "Indicates whether ENA Express is enabled for the network interface.", - "type": "boolean" - }, - "EnaSrdUdpSpecification": { - "$ref": "#/definitions/EnaSrdUdpSpecification", - "description": "Configures ENA Express for UDP network traffic." - } - }, - "type": "object" - }, - "EnaSrdUdpSpecification": { - "additionalProperties": false, - "description": "ENA Express is compatible with both TCP and UDP transport protocols. When it's enabled, TCP traffic automatically uses it. However, some UDP-based applications are designed to handle network packets that are out of order, without a need for retransmission, such as live video broadcasting or other near-real-time applications. For UDP traffic, you can specify whether to use ENA Express, based on your application environment needs.", - "properties": { - "EnaSrdUdpEnabled": { - "description": "Indicates whether UDP traffic to and from the instance uses ENA Express. To specify this setting, you must first enable ENA Express.", - "type": "boolean" - } - }, - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "description": "Indicates whether the instance is enabled for AWS Nitro Enclaves.", - "properties": { - "Enabled": { - "description": "If this parameter is set to ``true``, the instance is enabled for AWS Nitro Enclaves; otherwise, it is not enabled for AWS Nitro Enclaves.", - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "description": "Specifies whether your instance is configured for hibernation. This parameter is valid only if the instance meets the [hibernation prerequisites](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites). For more information, see [Hibernate Your Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) in the *Amazon EC2 User Guide*.\n ``HibernationOptions`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", - "properties": { - "Configured": { - "description": "If you set this parameter to ``true``, the instance is enabled for hibernation.\n Default: ``false``", - "type": "boolean" - } - }, - "type": "object" - }, - "IamInstanceProfile": { - "additionalProperties": false, - "description": "Specifies an IAM instance profile, which is a container for an IAM role for your instance. You can use an IAM role to distribute your AWS credentials to your instances.\n If you are creating the launch template for use with an ASlong group, you can specify either the name or the ARN of the instance profile, but not both.\n ``IamInstanceProfile`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the instance profile.", - "type": "string" - }, - "Name": { - "description": "The name of the instance profile.", - "type": "string" - } - }, - "type": "object" - }, - "InstanceMarketOptions": { - "additionalProperties": false, - "description": "Specifies the market (purchasing) option for an instance.\n ``InstanceMarketOptions`` is a property of the [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", - "properties": { - "MarketType": { - "description": "The market type.", - "type": "string" - }, - "SpotOptions": { - "$ref": "#/definitions/SpotOptions", - "description": "The options for Spot Instances." - } - }, - "type": "object" - }, - "InstanceRequirements": { - "additionalProperties": false, - "description": "The attributes for the instance types. When you specify instance attributes, Amazon EC2 will identify instance types with these attributes.\n You must specify ``VCpuCount`` and ``MemoryMiB``. All other attributes are optional. Any unspecified optional attribute is set to its default.\n When you specify multiple attributes, you get instance types that satisfy all of the specified attributes. If you specify multiple values for an attribute, you get instance types that satisfy any of the specified values.\n To limit the list of instance types from which Amazon EC2 can identify matching instance types, you can use one of the following parameters, but not both in the same request:\n + ``AllowedInstanceTypes`` - The instance types to include in the list. All other instance types are ignored, even if they match your specified attributes.\n + ``ExcludedInstanceTypes`` - The instance types to exclude from the list, even if they match your specified attributes.\n \n If you specify ``InstanceRequirements``, you can't specify ``InstanceType``.\n Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html), or with the [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) API or [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) AWS CloudFormation resource, you can't specify ``InstanceRequirements``.\n For more information, see [Attribute-based instance type selection for EC2 Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html), [Attribute-based instance type selection for Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-attribute-based-instance-type-selection.html), and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the *Amazon EC2 User Guide*.", - "properties": { - "AcceleratorCount": { - "$ref": "#/definitions/AcceleratorCount", - "description": "The minimum and maximum number of accelerators (GPUs, FPGAs, or AWS Inferentia chips) on an instance.\n To exclude accelerator-enabled instance types, set ``Max`` to ``0``.\n Default: No minimum or maximum limits" - }, - "AcceleratorManufacturers": { - "description": "Indicates whether instance types must have accelerators by specific manufacturers.\n + For instance types with AWS devices, specify ``amazon-web-services``.\n + For instance types with AMD devices, specify ``amd``.\n + For instance types with Habana devices, specify ``habana``.\n + For instance types with NVIDIA devices, specify ``nvidia``.\n + For instance types with Xilinx devices, specify ``xilinx``.\n \n Default: Any manufacturer", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AcceleratorNames": { - "description": "The accelerators that must be on the instance type.\n + For instance types with NVIDIA A10G GPUs, specify ``a10g``.\n + For instance types with NVIDIA A100 GPUs, specify ``a100``.\n + For instance types with NVIDIA H100 GPUs, specify ``h100``.\n + For instance types with AWS Inferentia chips, specify ``inferentia``.\n + For instance types with NVIDIA GRID K520 GPUs, specify ``k520``.\n + For instance types with NVIDIA K80 GPUs, specify ``k80``.\n + For instance types with NVIDIA M60 GPUs, specify ``m60``.\n + For instance types with AMD Radeon Pro V520 GPUs, specify ``radeon-pro-v520``.\n + For instance types with NVIDIA T4 GPUs, specify ``t4``.\n + For instance types with NVIDIA T4G GPUs, specify ``t4g``.\n + For instance types with Xilinx VU9P FPGAs, specify ``vu9p``.\n + For instance types with NVIDIA V100 GPUs, specify ``v100``.\n \n Default: Any accelerator", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AcceleratorTotalMemoryMiB": { - "$ref": "#/definitions/AcceleratorTotalMemoryMiB", - "description": "The minimum and maximum amount of total accelerator memory, in MiB.\n Default: No minimum or maximum limits" - }, - "AcceleratorTypes": { - "description": "The accelerator types that must be on the instance type.\n + For instance types with GPU accelerators, specify ``gpu``.\n + For instance types with FPGA accelerators, specify ``fpga``.\n + For instance types with inference accelerators, specify ``inference``.\n \n Default: Any accelerator type", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AllowedInstanceTypes": { - "description": "The instance types to apply your specified attributes against. All other instance types are ignored, even if they match your specified attributes.\n You can use strings with one or more wild cards, represented by an asterisk (``*``), to allow an instance type, size, or generation. The following are examples: ``m5.8xlarge``, ``c5*.*``, ``m5a.*``, ``r*``, ``*3*``.\n For example, if you specify ``c5*``,Amazon EC2 will allow the entire C5 instance family, which includes all C5a and C5n instance types. If you specify ``m5a.*``, Amazon EC2 will allow all the M5a instance types, but not the M5n instance types.\n If you specify ``AllowedInstanceTypes``, you can't specify ``ExcludedInstanceTypes``.\n Default: All instance types", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "BareMetal": { - "description": "Indicates whether bare metal instance types must be included, excluded, or required.\n + To include bare metal instance types, specify ``included``.\n + To require only bare metal instance types, specify ``required``.\n + To exclude bare metal instance types, specify ``excluded``.\n \n Default: ``excluded``", - "type": "string" - }, - "BaselineEbsBandwidthMbps": { - "$ref": "#/definitions/BaselineEbsBandwidthMbps", - "description": "The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps. For more information, see [Amazon EBS\u2013optimized instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) in the *Amazon EC2 User Guide*.\n Default: No minimum or maximum limits" - }, - "BurstablePerformance": { - "description": "Indicates whether burstable performance T instance types are included, excluded, or required. For more information, see [Burstable performance instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html).\n + To include burstable performance instance types, specify ``included``.\n + To require only burstable performance instance types, specify ``required``.\n + To exclude burstable performance instance types, specify ``excluded``.\n \n Default: ``excluded``", - "type": "string" - }, - "CpuManufacturers": { - "description": "The CPU manufacturers to include.\n + For instance types with Intel CPUs, specify ``intel``.\n + For instance types with AMD CPUs, specify ``amd``.\n + For instance types with AWS CPUs, specify ``amazon-web-services``.\n \n Don't confuse the CPU manufacturer with the CPU architecture. Instances will be launched with a compatible CPU architecture based on the Amazon Machine Image (AMI) that you specify in your launch template.\n Default: Any manufacturer", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ExcludedInstanceTypes": { - "description": "The instance types to exclude.\n You can use strings with one or more wild cards, represented by an asterisk (``*``), to exclude an instance type, size, or generation. The following are examples: ``m5.8xlarge``, ``c5*.*``, ``m5a.*``, ``r*``, ``*3*``.\n For example, if you specify ``c5*``,Amazon EC2 will exclude the entire C5 instance family, which includes all C5a and C5n instance types. If you specify ``m5a.*``, Amazon EC2 will exclude all the M5a instance types, but not the M5n instance types.\n If you specify ``ExcludedInstanceTypes``, you can't specify ``AllowedInstanceTypes``.\n Default: No excluded instance types", - "items": { - "description": "The user data to make available to the instance.", - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "InstanceGenerations": { - "description": "Indicates whether current or previous generation instance types are included. The current generation instance types are recommended for use. Current generation instance types are typically the latest two to three generations in each instance family. For more information, see [Instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide*.\n For current generation instance types, specify ``current``.\n For previous generation instance types, specify ``previous``.\n Default: Current and previous generation instance types", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "LocalStorage": { - "description": "Indicates whether instance types with instance store volumes are included, excluded, or required. For more information, [Amazon EC2 instance store](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html) in the *Amazon EC2 User Guide*.\n + To include instance types with instance store volumes, specify ``included``.\n + To require only instance types with instance store volumes, specify ``required``.\n + To exclude instance types with instance store volumes, specify ``excluded``.\n \n Default: ``included``", - "type": "string" - }, - "LocalStorageTypes": { - "description": "The type of local storage that is required.\n + For instance types with hard disk drive (HDD) storage, specify ``hdd``.\n + For instance types with solid state drive (SSD) storage, specify ``ssd``.\n \n Default: ``hdd`` and ``ssd``", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": { - "description": "[Price protection] The price protection threshold for Spot Instances, as a percentage of an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from the lowest priced current generation instance types, and failing that, from the lowest priced previous generation instance types that match your attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose price exceeds your specified threshold.\n The parameter accepts an integer, which Amazon EC2 interprets as a percentage.\n If you set ``TargetCapacityUnitType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is based on the per vCPU or per memory price instead of the per instance price.\n Only one of ``SpotMaxPricePercentageOverLowestPrice`` or ``MaxSpotPriceAsPercentageOfOptimalOnDemandPrice`` can be specified. If you don't specify either, Amazon EC2 will automatically apply optimal price protection to consistently select from a wide range of instance types. To indicate no price protection threshold for Spot Instances, meaning you want to consider all instance types that match your attributes, include one of these parameters and specify a high value, such as ``999999``.", - "type": "integer" - }, - "MemoryGiBPerVCpu": { - "$ref": "#/definitions/MemoryGiBPerVCpu", - "description": "The minimum and maximum amount of memory per vCPU, in GiB.\n Default: No minimum or maximum limits" - }, - "MemoryMiB": { - "$ref": "#/definitions/MemoryMiB", - "description": "The minimum and maximum amount of memory, in MiB." - }, - "NetworkBandwidthGbps": { - "$ref": "#/definitions/NetworkBandwidthGbps", - "description": "The minimum and maximum amount of network bandwidth, in gigabits per second (Gbps).\n Default: No minimum or maximum limits" - }, - "NetworkInterfaceCount": { - "$ref": "#/definitions/NetworkInterfaceCount", - "description": "The minimum and maximum number of network interfaces.\n Default: No minimum or maximum limits" - }, - "OnDemandMaxPricePercentageOverLowestPrice": { - "description": "[Price protection] The price protection threshold for On-Demand Instances, as a percentage higher than an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose price exceeds your specified threshold.\n The parameter accepts an integer, which Amazon EC2 interprets as a percentage.\n To turn off price protection, specify a high value, such as ``999999``.\n This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html) and [GetInstanceTypesFromInstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceTypesFromInstanceRequirements.html).\n If you set ``TargetCapacityUnitType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price.\n Default: ``20``", - "type": "integer" - }, - "RequireHibernateSupport": { - "description": "Indicates whether instance types must support hibernation for On-Demand Instances.\n This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html).\n Default: ``false``", - "type": "boolean" - }, - "SpotMaxPricePercentageOverLowestPrice": { - "description": "[Price protection] The price protection threshold for Spot Instances, as a percentage higher than an identified Spot price. The identified Spot price is the Spot price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified Spot price is from the lowest priced current generation instance types, and failing that, from the lowest priced previous generation instance types that match your attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose Spot price exceeds your specified threshold.\n The parameter accepts an integer, which Amazon EC2 interprets as a percentage.\n If you set ``TargetCapacityUnitType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price.\n This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html) and [GetInstanceTypesFromInstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceTypesFromInstanceRequirements.html).\n Only one of ``SpotMaxPricePercentageOverLowestPrice`` or ``MaxSpotPriceAsPercentageOfOptimalOnDemandPrice`` can be specified. If you don't specify either, Amazon EC2 will automatically apply optimal price protection to consistently select from a wide range of instance types. To indicate no price protection threshold for Spot Instances, meaning you want to consider all instance types that match your attributes, include one of these parameters and specify a high value, such as ``999999``.\n Default: ``100``", - "type": "integer" - }, - "TotalLocalStorageGB": { - "$ref": "#/definitions/TotalLocalStorageGB", - "description": "The minimum and maximum amount of total local storage, in GB.\n Default: No minimum or maximum limits" - }, - "VCpuCount": { - "$ref": "#/definitions/VCpuCount", - "description": "The minimum and maximum number of vCPUs." - } - }, - "type": "object" - }, - "Ipv4PrefixSpecification": { - "additionalProperties": false, - "description": "Specifies an IPv4 prefix for a network interface.\n ``Ipv4PrefixSpecification`` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html).", - "properties": { - "Ipv4Prefix": { - "description": "The IPv4 prefix. For information, see [Assigning prefixes to network interfaces](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-prefix-eni.html) in the *Amazon EC2 User Guide*.", - "type": "string" - } - }, - "type": "object" - }, - "Ipv6Add": { - "additionalProperties": false, - "description": "Specifies an IPv6 address in an Amazon EC2 launch template.\n ``Ipv6Add`` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html).", - "properties": { - "Ipv6Address": { - "description": "One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet. You can't use this option if you're specifying a number of IPv6 addresses.", - "type": "string" - } - }, - "type": "object" - }, - "Ipv6PrefixSpecification": { - "additionalProperties": false, - "description": "Specifies an IPv6 prefix for a network interface.\n ``Ipv6PrefixSpecification`` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html).", - "properties": { - "Ipv6Prefix": { - "description": "The IPv6 prefix.", - "type": "string" - } - }, - "type": "object" - }, - "LaunchTemplateData": { - "additionalProperties": false, - "description": "The information to include in the launch template.\n You must specify at least one parameter for the launch template data.", - "properties": { - "BlockDeviceMappings": { - "description": "The block device mapping.", - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CapacityReservationSpecification": { - "$ref": "#/definitions/CapacityReservationSpecification", - "description": "The Capacity Reservation targeting option. If you do not specify this parameter, the instance's Capacity Reservation preference defaults to ``open``, which enables it to run in any open Capacity Reservation that has matching attributes (instance type, platform, Availability Zone)." - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions", - "description": "The CPU options for the instance. For more information, see [Optimize CPU options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) in the *Amazon EC2 User Guide*." - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification", - "description": "The credit option for CPU usage of the instance. Valid only for T instances." - }, - "DisableApiStop": { - "description": "Indicates whether to enable the instance for stop protection. For more information, see [Enable stop protection for your instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-stop-protection.html) in the *Amazon EC2 User Guide*.", - "type": "boolean" - }, - "DisableApiTermination": { - "description": "If you set this parameter to ``true``, you can't terminate the instance using the Amazon EC2 console, CLI, or API; otherwise, you can. To change this attribute after launch, use [ModifyInstanceAttribute](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceAttribute.html). Alternatively, if you set ``InstanceInitiatedShutdownBehavior`` to ``terminate``, you can terminate the instance by running the shutdown command from the instance.", - "type": "boolean" - }, - "EbsOptimized": { - "description": "Indicates whether the instance is optimized for Amazon EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal Amazon EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS-optimized instance.", - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "description": "Deprecated.\n Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.", - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "ElasticInferenceAccelerators": { - "description": "An elastic inference accelerator to associate with the instance. Elastic inference accelerators are a resource you can attach to your Amazon EC2 instances to accelerate your Deep Learning (DL) inference workloads.\n You cannot specify accelerators from different generations in the same request.\n Starting April 15, 2023, AWS will not onboard new customers to Amazon Elastic Inference (EI), and will help current customers migrate their workloads to options that offer better price and performance. After April 15, 2023, new customers will not be able to launch instances with Amazon EI accelerators in Amazon SageMaker, Amazon ECS, or Amazon EC2. However, customers who have used Amazon EI at least once during the past 30-day period are considered current customers and will be able to continue using the service.", - "items": { - "$ref": "#/definitions/LaunchTemplateElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": false - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions", - "description": "Indicates whether the instance is enabled for AWS Nitro Enclaves. For more information, see [What is Nitro Enclaves?](https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html) in the *Nitro Enclaves User Guide*.\n You can't enable AWS Nitro Enclaves and hibernation on the same instance." - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions", - "description": "Indicates whether an instance is enabled for hibernation. This parameter is valid only if the instance meets the [hibernation prerequisites](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hibernating-prerequisites.html). For more information, see [Hibernate your Amazon EC2 instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) in the *Amazon EC2 User Guide*." - }, - "IamInstanceProfile": { - "$ref": "#/definitions/IamInstanceProfile", - "description": "The name or Amazon Resource Name (ARN) of an IAM instance profile." - }, - "ImageId": { - "description": "The ID of the AMI. Alternatively, you can specify a Systems Manager parameter, which will resolve to an AMI ID on launch.\n Valid formats:\n + ``ami-0ac394d6a3example`` \n + ``resolve:ssm:parameter-name`` \n + ``resolve:ssm:parameter-name:version-number`` \n + ``resolve:ssm:parameter-name:label`` \n \n For more information, see [Use a Systems Manager parameter to find an AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html#using-systems-manager-parameter-to-find-AMI) in the *Amazon Elastic Compute Cloud User Guide*.", - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "description": "Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).\n Default: ``stop``", - "type": "string" - }, - "InstanceMarketOptions": { - "$ref": "#/definitions/InstanceMarketOptions", - "description": "The market (purchasing) option for the instances." - }, - "InstanceRequirements": { - "$ref": "#/definitions/InstanceRequirements", - "description": "The attributes for the instance types. When you specify instance attributes, Amazon EC2 will identify instance types with these attributes.\n You must specify ``VCpuCount`` and ``MemoryMiB``. All other attributes are optional. Any unspecified optional attribute is set to its default.\n When you specify multiple attributes, you get instance types that satisfy all of the specified attributes. If you specify multiple values for an attribute, you get instance types that satisfy any of the specified values.\n To limit the list of instance types from which Amazon EC2 can identify matching instance types, you can use one of the following parameters, but not both in the same request:\n + ``AllowedInstanceTypes`` - The instance types to include in the list. All other instance types are ignored, even if they match your specified attributes.\n + ``ExcludedInstanceTypes`` - The instance types to exclude from the list, even if they match your specified attributes.\n \n If you specify ``InstanceRequirements``, you can't specify ``InstanceType``.\n Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html), or with the [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) API or [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) AWS CloudFormation resource, you can't specify ``InstanceRequirements``.\n For more information, see [Attribute-based instance type selection for EC2 Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html), [Attribute-based instance type selection for Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-attribute-based-instance-type-selection.html), and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the *Amazon EC2 User Guide*." - }, - "InstanceType": { - "description": "The instance type. For more information, see [Amazon EC2 instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide*.\n If you specify ``InstanceType``, you can't specify ``InstanceRequirements``.", - "type": "string" - }, - "KernelId": { - "description": "The ID of the kernel.\n We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see [User Provided Kernels](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) in the *Amazon EC2 User Guide*.", - "type": "string" - }, - "KeyName": { - "description": "The name of the key pair. You can create a key pair using [CreateKeyPair](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html) or [ImportKeyPair](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html).\n If you do not specify a key pair, you can't connect to the instance unless you choose an AMI that is configured to allow users another way to log in.", - "type": "string" - }, - "LicenseSpecifications": { - "description": "The license configurations.", - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "MaintenanceOptions": { - "$ref": "#/definitions/MaintenanceOptions", - "description": "The maintenance options of your instance." - }, - "MetadataOptions": { - "$ref": "#/definitions/MetadataOptions", - "description": "The metadata options for the instance. For more information, see [Instance metadata and user data](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) in the *Amazon EC2 User Guide*." - }, - "Monitoring": { - "$ref": "#/definitions/Monitoring", - "description": "The monitoring for the instance." - }, - "NetworkInterfaces": { - "description": "The network interfaces for the instance.", - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "Placement": { - "$ref": "#/definitions/Placement", - "description": "The placement for the instance." - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions", - "description": "The hostname type for EC2 instances launched into this subnet and how DNS A and AAAA record queries should be handled. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *User Guide*." - }, - "RamDiskId": { - "description": "The ID of the RAM disk.\n We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see [User provided kernels](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) in the *Amazon EC2 User Guide*.", - "type": "string" - }, - "SecurityGroupIds": { - "description": "The IDs of the security groups. You can specify the IDs of existing security groups and references to resources created by the stack template.\n If you specify a network interface, you must specify any security groups as part of the network interface instead.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "description": "The names of the security groups. For a nondefault VPC, you must use security group IDs instead.\n If you specify a network interface, you must specify any security groups as part of the network interface instead of using this parameter.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "TagSpecifications": { - "description": "The tags to apply to the resources that are created during instance launch.\n To tag a resource after it has been created, see [CreateTags](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html).\n To tag the launch template itself, use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-tagspecifications).", - "items": { - "$ref": "#/definitions/TagSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "UserData": { - "description": "The user data to make available to the instance. You must provide base64-encoded text. User data is limited to 16 KB. For more information, see [Run commands on your Amazon EC2 instance at launch](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) in the *Amazon EC2 User Guide*.\n If you are creating the launch template for use with BATCH, the user data must be provided in the [MIME multi-part archive format](https://docs.aws.amazon.com/https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive). For more information, see [Amazon EC2 user data in launch templates](https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html) in the *User Guide*.", - "type": "string" - } - }, - "type": "object" - }, - "LaunchTemplateElasticInferenceAccelerator": { - "additionalProperties": false, - "description": "Specifies an elastic inference accelerator.\n ``LaunchTemplateElasticInferenceAccelerator`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", - "properties": { - "Count": { - "description": "The number of elastic inference accelerators to attach to the instance. \n Default: 1", - "type": "integer" - }, - "Type": { - "description": "The type of elastic inference accelerator. The possible values are eia1.medium, eia1.large, and eia1.xlarge.", - "type": "string" - } - }, - "type": "object" - }, - "LaunchTemplateTagSpecification": { - "additionalProperties": false, - "description": "Specifies the tags to apply to the launch template during creation.\n ``LaunchTemplateTagSpecification`` is a property of [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html).", - "properties": { - "ResourceType": { - "description": "The type of resource. To tag a launch template, ``ResourceType`` must be ``launch-template``.", - "type": "string" - }, - "Tags": { - "description": "The tags for the resource.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "description": "Specifies a license configuration for an instance.\n ``LicenseSpecification`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", - "properties": { - "LicenseConfigurationArn": { - "description": "The Amazon Resource Name (ARN) of the license configuration.", - "type": "string" - } - }, - "type": "object" - }, - "MaintenanceOptions": { - "additionalProperties": false, - "description": "The maintenance options of your instance.", - "properties": { - "AutoRecovery": { - "description": "Disables the automatic recovery behavior of your instance or sets it to default.", - "type": "string" - } - }, - "type": "object" - }, - "MemoryGiBPerVCpu": { - "additionalProperties": false, - "description": "The minimum and maximum amount of memory per vCPU, in GiB.", - "properties": { - "Max": { - "description": "The maximum amount of memory per vCPU, in GiB. To specify no maximum limit, omit this parameter.", - "type": "number" - }, - "Min": { - "description": "The minimum amount of memory per vCPU, in GiB. To specify no minimum limit, omit this parameter.", - "type": "number" - } - }, - "type": "object" - }, - "MemoryMiB": { - "additionalProperties": false, - "description": "The minimum and maximum amount of memory, in MiB.", - "properties": { - "Max": { - "description": "The maximum amount of memory, in MiB. To specify no maximum limit, omit this parameter.", - "type": "integer" - }, - "Min": { - "description": "The minimum amount of memory, in MiB. To specify no minimum limit, specify ``0``.", - "type": "integer" - } - }, - "type": "object" - }, - "MetadataOptions": { - "additionalProperties": false, - "description": "The metadata options for the instance. For more information, see [Instance metadata and user data](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) in the *Amazon EC2 User Guide*.\n ``MetadataOptions`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", - "properties": { - "HttpEndpoint": { - "description": "Enables or disables the HTTP metadata endpoint on your instances. If the parameter is not specified, the default state is ``enabled``.\n If you specify a value of ``disabled``, you will not be able to access your instance metadata.", - "type": "string" - }, - "HttpProtocolIpv6": { - "description": "Enables or disables the IPv6 endpoint for the instance metadata service.\n Default: ``disabled``", - "type": "string" - }, - "HttpPutResponseHopLimit": { - "description": "The desired HTTP PUT response hop limit for instance metadata requests. The larger the number, the further instance metadata requests can travel.\n Default: ``1`` \n Possible values: Integers from 1 to 64", - "type": "integer" - }, - "HttpTokens": { - "description": "Indicates whether IMDSv2 is required.\n + ``optional`` - IMDSv2 is optional. You can choose whether to send a session token in your instance metadata retrieval requests. If you retrieve IAM role credentials without a session token, you receive the IMDSv1 role credentials. If you retrieve IAM role credentials using a valid session token, you receive the IMDSv2 role credentials.\n + ``required`` - IMDSv2 is required. You must send a session token in your instance metadata retrieval requests. With this option, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available.\n \n Default: If the value of ``ImdsSupport`` for the Amazon Machine Image (AMI) for your instance is ``v2.0``, the default is ``required``.", - "type": "string" - }, - "InstanceMetadataTags": { - "description": "Set to ``enabled`` to allow access to instance tags from the instance metadata. Set to ``disabled`` to turn off access to instance tags from the instance metadata. For more information, see [Work with instance tags using the instance metadata](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#work-with-tags-in-IMDS).\n Default: ``disabled``", - "type": "string" - } - }, - "type": "object" - }, - "Monitoring": { - "additionalProperties": false, - "description": "Specifies whether detailed monitoring is enabled for an instance. For more information about detailed monitoring, see [Enable or turn off detailed monitoring for your instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch-new.html) in the *User Guide*.\n ``Monitoring`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", - "properties": { - "Enabled": { - "description": "Specify ``true`` to enable detailed monitoring. Otherwise, basic monitoring is enabled.", - "type": "boolean" - } - }, - "type": "object" - }, - "NetworkBandwidthGbps": { - "additionalProperties": false, - "description": "The minimum and maximum amount of network bandwidth, in gigabits per second (Gbps).\n Setting the minimum bandwidth does not guarantee that your instance will achieve the minimum bandwidth. Amazon EC2 will identify instance types that support the specified minimum bandwidth, but the actual bandwidth of your instance might go below the specified minimum at times. For more information, see [Available instance bandwidth](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html#available-instance-bandwidth) in the *Amazon EC2 User Guide*.", - "properties": { - "Max": { - "description": "The maximum amount of network bandwidth, in Gbps. To specify no maximum limit, omit this parameter.", - "type": "number" - }, - "Min": { - "description": "The minimum amount of network bandwidth, in Gbps. If this parameter is not specified, there is no minimum limit.", - "type": "number" - } - }, - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "description": "Specifies the parameters for a network interface.\n ``NetworkInterface`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", - "properties": { - "AssociateCarrierIpAddress": { - "description": "Associates a Carrier IP address with eth0 for a new network interface.\n Use this option when you launch an instance in a Wavelength Zone and want to associate a Carrier IP address with the network interface. For more information about Carrier IP addresses, see [Carrier IP addresses](https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#provider-owned-ip) in the *Developer Guide*.", - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "description": "Associates a public IPv4 address with eth0 for a new network interface.\n AWS charges for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the *Public IPv4 Address* tab on the [Amazon VPC pricing page](https://docs.aws.amazon.com/vpc/pricing/).", - "type": "boolean" - }, - "ConnectionTrackingSpecification": { - "$ref": "#/definitions/ConnectionTrackingSpecification", - "description": "A connection tracking specification for the network interface." - }, - "DeleteOnTermination": { - "description": "Indicates whether the network interface is deleted when the instance is terminated.", - "type": "boolean" - }, - "Description": { - "description": "A description for the network interface.", - "type": "string" - }, - "DeviceIndex": { - "description": "The device index for the network interface attachment. Each network interface requires a device index. If you create a launch template that includes secondary network interfaces but not a primary network interface, then you must add a primary network interface as a launch parameter when you launch an instance from the template.", - "type": "integer" - }, - "EnaSrdSpecification": { - "$ref": "#/definitions/EnaSrdSpecification", - "description": "The ENA Express configuration for the network interface." - }, - "Groups": { - "description": "The IDs of one or more security groups.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "InterfaceType": { - "description": "The type of network interface. To create an Elastic Fabric Adapter (EFA), specify ``efa``. For more information, see [Elastic Fabric Adapter](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) in the *Amazon EC2 User Guide*.\n If you are not creating an EFA, specify ``interface`` or omit this parameter.\n Valid values: ``interface`` | ``efa``", - "type": "string" - }, - "Ipv4PrefixCount": { - "description": "The number of IPv4 prefixes to be automatically assigned to the network interface. You cannot use this option if you use the ``Ipv4Prefix`` option.", - "type": "integer" - }, - "Ipv4Prefixes": { - "description": "One or more IPv4 prefixes to be assigned to the network interface. You cannot use this option if you use the ``Ipv4PrefixCount`` option.", - "items": { - "$ref": "#/definitions/Ipv4PrefixSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "description": "The number of IPv6 addresses to assign to a network interface. Amazon EC2 automatically selects the IPv6 addresses from the subnet range. You can't use this option if specifying specific IPv6 addresses.", - "type": "integer" - }, - "Ipv6Addresses": { - "description": "One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet. You can't use this option if you're specifying a number of IPv6 addresses.", - "items": { - "$ref": "#/definitions/Ipv6Add" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6PrefixCount": { - "description": "The number of IPv6 prefixes to be automatically assigned to the network interface. You cannot use this option if you use the ``Ipv6Prefix`` option.", - "type": "integer" - }, - "Ipv6Prefixes": { - "description": "One or more IPv6 prefixes to be assigned to the network interface. You cannot use this option if you use the ``Ipv6PrefixCount`` option.", - "items": { - "$ref": "#/definitions/Ipv6PrefixSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkCardIndex": { - "description": "The index of the network card. Some instance types support multiple network cards. The primary network interface must be assigned to network card index 0. The default is network card index 0.", - "type": "integer" - }, - "NetworkInterfaceId": { - "description": "The ID of the network interface.", - "type": "string" - }, - "PrimaryIpv6": { - "description": "The primary IPv6 address of the network interface. When you enable an IPv6 GUA address to be a primary IPv6, the first IPv6 GUA will be made the primary IPv6 address until the instance is terminated or the network interface is detached. For more information about primary IPv6 addresses, see [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html).", - "type": "boolean" - }, - "PrivateIpAddress": { - "description": "The primary private IPv4 address of the network interface.", - "type": "string" - }, - "PrivateIpAddresses": { - "description": "One or more private IPv4 addresses.", - "items": { - "$ref": "#/definitions/PrivateIpAdd" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "description": "The number of secondary private IPv4 addresses to assign to a network interface.", - "type": "integer" - }, - "SubnetId": { - "description": "The ID of the subnet for the network interface.", - "type": "string" - } - }, - "type": "object" - }, - "NetworkInterfaceCount": { - "additionalProperties": false, - "description": "The minimum and maximum number of network interfaces.", - "properties": { - "Max": { - "description": "The maximum number of network interfaces. To specify no maximum limit, omit this parameter.", - "type": "integer" - }, - "Min": { - "description": "The minimum number of network interfaces. To specify no minimum limit, omit this parameter.", - "type": "integer" - } - }, - "type": "object" - }, - "Placement": { - "additionalProperties": false, - "description": "Specifies the placement of an instance.\n ``Placement`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", - "properties": { - "Affinity": { - "description": "The affinity setting for an instance on a Dedicated Host.", - "type": "string" - }, - "AvailabilityZone": { - "description": "The Availability Zone for the instance.", - "type": "string" - }, - "GroupId": { - "description": "The Group Id of a placement group. You must specify the Placement Group *Group Id* to launch an instance in a shared placement group.", - "type": "string" - }, - "GroupName": { - "description": "The name of the placement group for the instance.", - "type": "string" - }, - "HostId": { - "description": "The ID of the Dedicated Host for the instance.", - "type": "string" - }, - "HostResourceGroupArn": { - "description": "The ARN of the host resource group in which to launch the instances. If you specify a host resource group ARN, omit the *Tenancy* parameter or set it to ``host``.", - "type": "string" - }, - "PartitionNumber": { - "description": "The number of the partition the instance should launch in. Valid only if the placement group strategy is set to ``partition``.", - "type": "integer" - }, - "SpreadDomain": { - "description": "Reserved for future use.", - "type": "string" - }, - "Tenancy": { - "description": "The tenancy of the instance. An instance with a tenancy of dedicated runs on single-tenant hardware.", - "type": "string" - } - }, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "description": "The hostname type for EC2 instances launched into this subnet and how DNS A and AAAA record queries should be handled. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *User Guide*.", - "properties": { - "EnableResourceNameDnsAAAARecord": { - "description": "Indicates whether to respond to DNS queries for instance hostnames with DNS AAAA records.", - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "description": "Indicates whether to respond to DNS queries for instance hostnames with DNS A records.", - "type": "boolean" - }, - "HostnameType": { - "description": "The type of hostname for EC2 instances. For IPv4 only subnets, an instance DNS name must be based on the instance IPv4 address. For IPv6 only subnets, an instance DNS name must be based on the instance ID. For dual-stack subnets, you can specify whether DNS names use the instance IPv4 address or the instance ID. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *User Guide*.", - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAdd": { - "additionalProperties": false, - "description": "Specifies a secondary private IPv4 address for a network interface.\n ``PrivateIpAdd`` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html).", - "properties": { - "Primary": { - "description": "Indicates whether the private IPv4 address is the primary private IPv4 address. Only one IPv4 address can be designated as primary.", - "type": "boolean" - }, - "PrivateIpAddress": { - "description": "The private IPv4 address.", - "type": "string" - } - }, - "type": "object" - }, - "SpotOptions": { - "additionalProperties": false, - "description": "Specifies options for Spot Instances.\n ``SpotOptions`` is a property of [AWS::EC2::LaunchTemplate InstanceMarketOptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-instancemarketoptions.html).", - "properties": { - "BlockDurationMinutes": { - "description": "Deprecated.", - "type": "integer" - }, - "InstanceInterruptionBehavior": { - "description": "The behavior when a Spot Instance is interrupted. The default is ``terminate``.", - "type": "string" - }, - "MaxPrice": { - "description": "The maximum hourly price you're willing to pay for the Spot Instances. We do not recommend using this parameter because it can lead to increased interruptions. If you do not specify this parameter, you will pay the current Spot price.\n If you specify a maximum price, your Spot Instances will be interrupted more frequently than if you do not specify this parameter.", - "type": "string" - }, - "SpotInstanceType": { - "description": "The Spot Instance request type.\n If you are using Spot Instances with an Auto Scaling group, use ``one-time`` requests, as the ASlong service handles requesting new Spot Instances whenever the group is below its desired capacity.", - "type": "string" - }, - "ValidUntil": { - "description": "The end date of the request, in UTC format (*YYYY-MM-DD*T*HH:MM:SS*Z). Supported only for persistent requests.\n + For a persistent request, the request remains active until the ``ValidUntil`` date and time is reached. Otherwise, the request remains active until you cancel it.\n + For a one-time request, ``ValidUntil`` is not supported. The request remains active until all instances launch or you cancel the request.\n \n Default: 7 days from the current date", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "properties": { - "Key": { - "description": "The tag key.", - "type": "string" - }, - "Value": { - "description": "The tag value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TagSpecification": { - "additionalProperties": false, - "description": "Specifies the tags to apply to a resource when the resource is created for the launch template.\n ``TagSpecification`` is a property type of [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications). [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications) is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", - "properties": { - "ResourceType": { - "description": "The type of resource to tag. You can specify tags for the following resource types only: ``instance`` | ``volume`` | ``network-interface`` | ``spot-instances-request``. If the instance does not include the resource type that you specify, the instance launch fails. For example, not all instance types include a volume.\n To tag a resource after it has been created, see [CreateTags](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html).", - "type": "string" - }, - "Tags": { - "description": "The tags to apply to the resource.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "TotalLocalStorageGB": { - "additionalProperties": false, - "description": "The minimum and maximum amount of total local storage, in GB.", - "properties": { - "Max": { - "description": "The maximum amount of total local storage, in GB. To specify no maximum limit, omit this parameter.", - "type": "number" - }, - "Min": { - "description": "The minimum amount of total local storage, in GB. To specify no minimum limit, omit this parameter.", - "type": "number" - } - }, - "type": "object" - }, - "VCpuCount": { - "additionalProperties": false, - "description": "The minimum and maximum number of vCPUs.", - "properties": { - "Max": { - "description": "The maximum number of vCPUs. To specify no maximum limit, omit this parameter.", - "type": "integer" - }, - "Min": { - "description": "The minimum number of vCPUs. To specify no minimum limit, specify ``0``.", - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "Specifies the properties for creating a launch template.\n The minimum required properties for specifying a launch template are as follows:\n + You must specify at least one property for the launch template data.\n + You can optionally specify a name for the launch template. If you do not specify a name, CFN creates a name for you.\n \n A launch template can contain some or all of the configuration information to launch an instance. When you launch an instance using a launch template, instance properties that are not specified in the launch template use default values, except the ``ImageId`` property, which has no default value. If you do not specify an AMI ID for the launch template ``ImageId`` property, you must specify an AMI ID for the instance ``ImageId`` property.\n For more information, see [Launch an instance from a launch template](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html) in the *Amazon EC2 User Guide*.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateLaunchTemplate", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteLaunchTemplate", - "ec2:DeleteTags", - "ec2:DescribeLaunchTemplates" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeLaunchTemplates" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeLaunchTemplates" - ] - }, - "update": { - "permissions": [ - "ec2:CreateLaunchTemplateVersion" - ] - } - }, - "primaryIdentifier": [ - "/properties/LaunchTemplateId" - ], - "properties": { - "DefaultVersionNumber": { - "description": "", - "type": "string" - }, - "LatestVersionNumber": { - "description": "", - "type": "string" - }, - "LaunchTemplateData": { - "$ref": "#/definitions/LaunchTemplateData", - "description": "The information for the launch template." - }, - "LaunchTemplateId": { - "description": "", - "type": "string" - }, - "LaunchTemplateName": { - "description": "A name for the launch template.", - "type": "string" - }, - "TagSpecifications": { - "description": "The tags to apply to the launch template on creation. To tag the launch template, the resource type must be ``launch-template``.\n To specify the tags for the resources that are created when an instance is launched, you must use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications).", - "items": { - "$ref": "#/definitions/LaunchTemplateTagSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "VersionDescription": { - "description": "A description for the first version of the launch template.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/DefaultVersionNumber", - "/properties/LaunchTemplateId", - "/properties/LatestVersionNumber" - ], - "required": [ - "LaunchTemplateData" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::LaunchTemplate", - "writeOnlyProperties": [ - "/properties/LaunchTemplateData", - "/properties/VersionDescription", - "/properties/TagSpecifications" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LaunchTemplateName" + ], + "definitions": { + "AcceleratorCount": { + "additionalProperties": false, + "description": "The minimum and maximum number of accelerators (GPUs, FPGAs, or AWS Inferentia chips) on an instance.", + "properties": { + "Max": { + "description": "The maximum number of accelerators. To specify no maximum limit, omit this parameter. To exclude accelerator-enabled instance types, set ``Max`` to ``0``.", + "type": "integer" + }, + "Min": { + "description": "The minimum number of accelerators. To specify no minimum limit, omit this parameter.", + "type": "integer" + } + }, + "type": "object" + }, + "AcceleratorTotalMemoryMiB": { + "additionalProperties": false, + "description": "The minimum and maximum amount of total accelerator memory, in MiB.", + "properties": { + "Max": { + "description": "The maximum amount of accelerator memory, in MiB. To specify no maximum limit, omit this parameter.", + "type": "integer" + }, + "Min": { + "description": "The minimum amount of accelerator memory, in MiB. To specify no minimum limit, omit this parameter.", + "type": "integer" + } + }, + "type": "object" + }, + "BaselineEbsBandwidthMbps": { + "additionalProperties": false, + "description": "The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps. For more information, see [Amazon EBS\u2013optimized instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) in the *Amazon EC2 User Guide*.", + "properties": { + "Max": { + "description": "The maximum baseline bandwidth, in Mbps. To specify no maximum limit, omit this parameter.", + "type": "integer" + }, + "Min": { + "description": "The minimum baseline bandwidth, in Mbps. To specify no minimum limit, omit this parameter.", + "type": "integer" + } + }, + "type": "object" + }, + "BaselinePerformanceFactors": { + "additionalProperties": false, + "description": "The baseline performance to consider, using an instance family as a baseline reference. The instance family establishes the lowest acceptable level of performance. Amazon EC2 uses this baseline to guide instance type selection, but there is no guarantee that the selected instance types will always exceed the baseline for every application.\n Currently, this parameter only supports CPU performance as a baseline performance factor. For example, specifying ``c6i`` would use the CPU performance of the ``c6i`` family as the baseline reference.", + "properties": { + "Cpu": { + "$ref": "#/definitions/Cpu", + "description": "The CPU performance to consider, using an instance family as the baseline reference." + } + }, + "type": "object" + }, + "BlockDeviceMapping": { + "additionalProperties": false, + "description": "Specifies a block device mapping for a launch template. You must specify ``DeviceName`` plus exactly one of the following properties: ``Ebs``, ``NoDevice``, or ``VirtualName``.\n ``BlockDeviceMapping`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "DeviceName": { + "description": "The device name (for example, /dev/sdh or xvdh).", + "type": "string" + }, + "Ebs": { + "$ref": "#/definitions/Ebs", + "description": "Parameters used to automatically set up EBS volumes when the instance is launched." + }, + "NoDevice": { + "description": "To omit the device from the block device mapping, specify an empty string.", + "type": "string" + }, + "VirtualName": { + "description": "The virtual device name (ephemeralN). Instance store volumes are numbered starting from 0. An instance type with 2 available instance store volumes can specify mappings for ephemeral0 and ephemeral1. The number of available instance store volumes depends on the instance type. After you connect to the instance, you must mount the volume.", + "type": "string" + } + }, + "type": "object" + }, + "CapacityReservationSpecification": { + "additionalProperties": false, + "description": "Specifies an instance's Capacity Reservation targeting option. You can specify only one option at a time.\n ``CapacityReservationSpecification`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "CapacityReservationPreference": { + "description": "Indicates the instance's Capacity Reservation preferences. Possible preferences include:\n + ``capacity-reservations-only`` - The instance will only run in a Capacity Reservation or Capacity Reservation group. If capacity isn't available, the instance will fail to launch.\n + ``open`` - The instance can run in any ``open`` Capacity Reservation that has matching attributes (instance type, platform, Availability Zone, tenancy).\n + ``none`` - The instance avoids running in a Capacity Reservation even if one is available. The instance runs in On-Demand capacity.", + "type": "string" + }, + "CapacityReservationTarget": { + "$ref": "#/definitions/CapacityReservationTarget", + "description": "Information about the target Capacity Reservation or Capacity Reservation group." + } + }, + "type": "object" + }, + "CapacityReservationTarget": { + "additionalProperties": false, + "description": "Specifies a target Capacity Reservation.\n ``CapacityReservationTarget`` is a property of the [Amazon EC2 LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) property type.", + "properties": { + "CapacityReservationId": { + "description": "The ID of the Capacity Reservation in which to run the instance.", + "type": "string" + }, + "CapacityReservationResourceGroupArn": { + "description": "The ARN of the Capacity Reservation resource group in which to run the instance.", + "type": "string" + } + }, + "type": "object" + }, + "ConnectionTrackingSpecification": { + "additionalProperties": false, + "description": "A security group connection tracking specification that enables you to set the idle timeout for connection tracking on an Elastic network interface. For more information, see [Connection tracking timeouts](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html#connection-tracking-timeouts) in the *Amazon EC2 User Guide*.", + "properties": { + "TcpEstablishedTimeout": { + "description": "Timeout (in seconds) for idle TCP connections in an established state. Min: 60 seconds. Max: 432000 seconds (5 days). Default: 432000 seconds. Recommended: Less than 432000 seconds.", + "type": "integer" + }, + "UdpStreamTimeout": { + "description": "Timeout (in seconds) for idle UDP flows classified as streams which have seen more than one request-response transaction. Min: 60 seconds. Max: 180 seconds (3 minutes). Default: 180 seconds.", + "type": "integer" + }, + "UdpTimeout": { + "description": "Timeout (in seconds) for idle UDP flows that have seen traffic only in a single direction or a single request-response transaction. Min: 30 seconds. Max: 60 seconds. Default: 30 seconds.", + "type": "integer" + } + }, + "type": "object" + }, + "Cpu": { + "additionalProperties": false, + "description": "Specifies the CPU performance to consider when using an instance family as the baseline reference.", + "properties": { + "References": { + "$ref": "#/definitions/References", + "description": "The instance family to use as the baseline reference for CPU performance. All instance types that match your specified attributes are compared against the CPU performance of the referenced instance family, regardless of CPU manufacturer or architecture differences." + } + }, + "type": "object" + }, + "CpuOptions": { + "additionalProperties": false, + "description": "Specifies the CPU options for an instance. For more information, see [Optimize CPU options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) in the *User Guide*.\n ``CpuOptions`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "AmdSevSnp": { + "description": "Indicates whether to enable the instance for AMD SEV-SNP. AMD SEV-SNP is supported with M6a, R6a, and C6a instance types only. For more information, see [AMD SEV-SNP for Amazon EC2 instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sev-snp.html).", + "enum": [ + "enabled", + "disabled" + ], + "type": "string" + }, + "CoreCount": { + "description": "The number of CPU cores for the instance.", + "type": "integer" + }, + "ThreadsPerCore": { + "description": "The number of threads per CPU core. To disable multithreading for the instance, specify a value of ``1``. Otherwise, specify the default value of ``2``.", + "type": "integer" + } + }, + "type": "object" + }, + "CreditSpecification": { + "additionalProperties": false, + "description": "Specifies the credit option for CPU usage of a T2, T3, or T3a instance.\n ``CreditSpecification`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "CpuCredits": { + "description": "The credit option for CPU usage of a T instance.\n Valid values: ``standard`` | ``unlimited``", + "type": "string" + } + }, + "type": "object" + }, + "Ebs": { + "additionalProperties": false, + "description": "Parameters for a block device for an EBS volume in an Amazon EC2 launch template.\n ``Ebs`` is a property of [AWS::EC2::LaunchTemplate BlockDeviceMapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html).", + "properties": { + "DeleteOnTermination": { + "description": "Indicates whether the EBS volume is deleted on instance termination.", + "type": "boolean" + }, + "Encrypted": { + "description": "Indicates whether the EBS volume is encrypted. Encrypted volumes can only be attached to instances that support Amazon EBS encryption. If you are creating a volume from a snapshot, you can't specify an encryption value.", + "type": "boolean" + }, + "Iops": { + "description": "The number of I/O operations per second (IOPS). For ``gp3``, ``io1``, and ``io2`` volumes, this represents the number of IOPS that are provisioned for the volume. For ``gp2`` volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting.\n The following are the supported values for each volume type:\n + ``gp3``: 3,000 - 16,000 IOPS\n + ``io1``: 100 - 64,000 IOPS\n + ``io2``: 100 - 256,000 IOPS\n \n For ``io2`` volumes, you can achieve up to 256,000 IOPS on [instances built on the Nitro System](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html). On other instances, you can achieve performance up to 32,000 IOPS.\n This parameter is supported for ``io1``, ``io2``, and ``gp3`` volumes only.", + "type": "integer" + }, + "KmsKeyId": { + "description": "Identifier (key ID, key alias, key ARN, or alias ARN) of the customer managed KMS key to use for EBS encryption.", + "type": "string" + }, + "SnapshotId": { + "description": "The ID of the snapshot.", + "type": "string" + }, + "Throughput": { + "description": "The throughput to provision for a ``gp3`` volume, with a maximum of 1,000 MiB/s.\n Valid Range: Minimum value of 125. Maximum value of 1000.", + "type": "integer" + }, + "VolumeSize": { + "description": "The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size. The following are the supported volumes sizes for each volume type:\n + ``gp2`` and ``gp3``: 1 - 16,384 GiB\n + ``io1``: 4 - 16,384 GiB\n + ``io2``: 4 - 65,536 GiB\n + ``st1`` and ``sc1``: 125 - 16,384 GiB\n + ``standard``: 1 - 1024 GiB", + "type": "integer" + }, + "VolumeType": { + "description": "The volume type. For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) in the *Amazon EBS User Guide*.", + "type": "string" + } + }, + "type": "object" + }, + "ElasticGpuSpecification": { + "additionalProperties": false, + "description": "Amazon Elastic Graphics reached end of life on January 8, 2024.\n Specifies a specification for an Elastic GPU for an Amazon EC2 launch template.\n ``ElasticGpuSpecification`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "Type": { + "description": "The type of Elastic Graphics accelerator.", + "type": "string" + } + }, + "type": "object" + }, + "EnaSrdSpecification": { + "additionalProperties": false, + "description": "ENA Express uses AWS Scalable Reliable Datagram (SRD) technology to increase the maximum bandwidth used per stream and minimize tail latency of network traffic between EC2 instances. With ENA Express, you can communicate between two EC2 instances in the same subnet within the same account, or in different accounts. Both sending and receiving instances must have ENA Express enabled.\n To improve the reliability of network packet delivery, ENA Express reorders network packets on the receiving end by default. However, some UDP-based applications are designed to handle network packets that are out of order to reduce the overhead for packet delivery at the network layer. When ENA Express is enabled, you can specify whether UDP network traffic uses it.", + "properties": { + "EnaSrdEnabled": { + "description": "Indicates whether ENA Express is enabled for the network interface.", + "type": "boolean" + }, + "EnaSrdUdpSpecification": { + "$ref": "#/definitions/EnaSrdUdpSpecification", + "description": "Configures ENA Express for UDP network traffic." + } + }, + "type": "object" + }, + "EnaSrdUdpSpecification": { + "additionalProperties": false, + "description": "ENA Express is compatible with both TCP and UDP transport protocols. When it's enabled, TCP traffic automatically uses it. However, some UDP-based applications are designed to handle network packets that are out of order, without a need for retransmission, such as live video broadcasting or other near-real-time applications. For UDP traffic, you can specify whether to use ENA Express, based on your application environment needs.", + "properties": { + "EnaSrdUdpEnabled": { + "description": "Indicates whether UDP traffic to and from the instance uses ENA Express. To specify this setting, you must first enable ENA Express.", + "type": "boolean" + } + }, + "type": "object" + }, + "EnclaveOptions": { + "additionalProperties": false, + "description": "Indicates whether the instance is enabled for AWS Nitro Enclaves.", + "properties": { + "Enabled": { + "description": "If this parameter is set to ``true``, the instance is enabled for AWS Nitro Enclaves; otherwise, it is not enabled for AWS Nitro Enclaves.", + "type": "boolean" + } + }, + "type": "object" + }, + "HibernationOptions": { + "additionalProperties": false, + "description": "Specifies whether your instance is configured for hibernation. This parameter is valid only if the instance meets the [hibernation prerequisites](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites). For more information, see [Hibernate Your Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) in the *Amazon EC2 User Guide*.\n ``HibernationOptions`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "Configured": { + "description": "If you set this parameter to ``true``, the instance is enabled for hibernation.\n Default: ``false``", + "type": "boolean" + } + }, + "type": "object" + }, + "IamInstanceProfile": { + "additionalProperties": false, + "description": "Specifies an IAM instance profile, which is a container for an IAM role for your instance. You can use an IAM role to distribute your AWS credentials to your instances.\n If you are creating the launch template for use with an ASlong group, you can specify either the name or the ARN of the instance profile, but not both.\n ``IamInstanceProfile`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the instance profile.", + "type": "string" + }, + "Name": { + "description": "The name of the instance profile.", + "type": "string" + } + }, + "type": "object" + }, + "InstanceMarketOptions": { + "additionalProperties": false, + "description": "Specifies the market (purchasing) option for an instance.\n ``InstanceMarketOptions`` is a property of the [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "MarketType": { + "description": "The market type.", + "type": "string" + }, + "SpotOptions": { + "$ref": "#/definitions/SpotOptions", + "description": "The options for Spot Instances." + } + }, + "type": "object" + }, + "InstanceRequirements": { + "additionalProperties": false, + "description": "The attributes for the instance types. When you specify instance attributes, Amazon EC2 will identify instance types with these attributes.\n You must specify ``VCpuCount`` and ``MemoryMiB``. All other attributes are optional. Any unspecified optional attribute is set to its default.\n When you specify multiple attributes, you get instance types that satisfy all of the specified attributes. If you specify multiple values for an attribute, you get instance types that satisfy any of the specified values.\n To limit the list of instance types from which Amazon EC2 can identify matching instance types, you can use one of the following parameters, but not both in the same request:\n + ``AllowedInstanceTypes`` - The instance types to include in the list. All other instance types are ignored, even if they match your specified attributes.\n + ``ExcludedInstanceTypes`` - The instance types to exclude from the list, even if they match your specified attributes.\n \n If you specify ``InstanceRequirements``, you can't specify ``InstanceType``.\n Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html), or with the [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) API or [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) AWS CloudFormation resource, you can't specify ``InstanceRequirements``.\n For more information, see [Specify attributes for instance type selection for EC2 Fleet or Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html) and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the *Amazon EC2 User Guide*.", + "properties": { + "AcceleratorCount": { + "$ref": "#/definitions/AcceleratorCount", + "description": "The minimum and maximum number of accelerators (GPUs, FPGAs, or AWS Inferentia chips) on an instance.\n To exclude accelerator-enabled instance types, set ``Max`` to ``0``.\n Default: No minimum or maximum limits" + }, + "AcceleratorManufacturers": { + "description": "Indicates whether instance types must have accelerators by specific manufacturers.\n + For instance types with AWS devices, specify ``amazon-web-services``.\n + For instance types with AMD devices, specify ``amd``.\n + For instance types with Habana devices, specify ``habana``.\n + For instance types with NVIDIA devices, specify ``nvidia``.\n + For instance types with Xilinx devices, specify ``xilinx``.\n \n Default: Any manufacturer", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AcceleratorNames": { + "description": "The accelerators that must be on the instance type.\n + For instance types with NVIDIA A10G GPUs, specify ``a10g``.\n + For instance types with NVIDIA A100 GPUs, specify ``a100``.\n + For instance types with NVIDIA H100 GPUs, specify ``h100``.\n + For instance types with AWS Inferentia chips, specify ``inferentia``.\n + For instance types with NVIDIA GRID K520 GPUs, specify ``k520``.\n + For instance types with NVIDIA K80 GPUs, specify ``k80``.\n + For instance types with NVIDIA M60 GPUs, specify ``m60``.\n + For instance types with AMD Radeon Pro V520 GPUs, specify ``radeon-pro-v520``.\n + For instance types with NVIDIA T4 GPUs, specify ``t4``.\n + For instance types with NVIDIA T4G GPUs, specify ``t4g``.\n + For instance types with Xilinx VU9P FPGAs, specify ``vu9p``.\n + For instance types with NVIDIA V100 GPUs, specify ``v100``.\n \n Default: Any accelerator", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AcceleratorTotalMemoryMiB": { + "$ref": "#/definitions/AcceleratorTotalMemoryMiB", + "description": "The minimum and maximum amount of total accelerator memory, in MiB.\n Default: No minimum or maximum limits" + }, + "AcceleratorTypes": { + "description": "The accelerator types that must be on the instance type.\n + For instance types with FPGA accelerators, specify ``fpga``.\n + For instance types with GPU accelerators, specify ``gpu``.\n \n Default: Any accelerator type", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AllowedInstanceTypes": { + "description": "The instance types to apply your specified attributes against. All other instance types are ignored, even if they match your specified attributes.\n You can use strings with one or more wild cards, represented by an asterisk (``*``), to allow an instance type, size, or generation. The following are examples: ``m5.8xlarge``, ``c5*.*``, ``m5a.*``, ``r*``, ``*3*``.\n For example, if you specify ``c5*``,Amazon EC2 will allow the entire C5 instance family, which includes all C5a and C5n instance types. If you specify ``m5a.*``, Amazon EC2 will allow all the M5a instance types, but not the M5n instance types.\n If you specify ``AllowedInstanceTypes``, you can't specify ``ExcludedInstanceTypes``.\n Default: All instance types", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "BareMetal": { + "description": "Indicates whether bare metal instance types must be included, excluded, or required.\n + To include bare metal instance types, specify ``included``.\n + To require only bare metal instance types, specify ``required``.\n + To exclude bare metal instance types, specify ``excluded``.\n \n Default: ``excluded``", + "type": "string" + }, + "BaselineEbsBandwidthMbps": { + "$ref": "#/definitions/BaselineEbsBandwidthMbps", + "description": "The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps. For more information, see [Amazon EBS\u2013optimized instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) in the *Amazon EC2 User Guide*.\n Default: No minimum or maximum limits" + }, + "BaselinePerformanceFactors": { + "$ref": "#/definitions/BaselinePerformanceFactors", + "description": "The baseline performance to consider, using an instance family as a baseline reference. The instance family establishes the lowest acceptable level of performance. Amazon EC2 uses this baseline to guide instance type selection, but there is no guarantee that the selected instance types will always exceed the baseline for every application. Currently, this parameter only supports CPU performance as a baseline performance factor. For more information, see [Performance protection](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html#ec2fleet-abis-performance-protection) in the *Amazon EC2 User Guide*." + }, + "BurstablePerformance": { + "description": "Indicates whether burstable performance T instance types are included, excluded, or required. For more information, see [Burstable performance instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html).\n + To include burstable performance instance types, specify ``included``.\n + To require only burstable performance instance types, specify ``required``.\n + To exclude burstable performance instance types, specify ``excluded``.\n \n Default: ``excluded``", + "type": "string" + }, + "CpuManufacturers": { + "description": "The CPU manufacturers to include.\n + For instance types with Intel CPUs, specify ``intel``.\n + For instance types with AMD CPUs, specify ``amd``.\n + For instance types with AWS CPUs, specify ``amazon-web-services``.\n + For instance types with Apple CPUs, specify ``apple``.\n \n Don't confuse the CPU manufacturer with the CPU architecture. Instances will be launched with a compatible CPU architecture based on the Amazon Machine Image (AMI) that you specify in your launch template.\n Default: Any manufacturer", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ExcludedInstanceTypes": { + "description": "The instance types to exclude.\n You can use strings with one or more wild cards, represented by an asterisk (``*``), to exclude an instance type, size, or generation. The following are examples: ``m5.8xlarge``, ``c5*.*``, ``m5a.*``, ``r*``, ``*3*``.\n For example, if you specify ``c5*``,Amazon EC2 will exclude the entire C5 instance family, which includes all C5a and C5n instance types. If you specify ``m5a.*``, Amazon EC2 will exclude all the M5a instance types, but not the M5n instance types.\n If you specify ``ExcludedInstanceTypes``, you can't specify ``AllowedInstanceTypes``.\n Default: No excluded instance types", + "items": { + "description": "The user data to make available to the instance.", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "InstanceGenerations": { + "description": "Indicates whether current or previous generation instance types are included. The current generation instance types are recommended for use. Current generation instance types are typically the latest two to three generations in each instance family. For more information, see [Instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide*.\n For current generation instance types, specify ``current``.\n For previous generation instance types, specify ``previous``.\n Default: Current and previous generation instance types", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "LocalStorage": { + "description": "Indicates whether instance types with instance store volumes are included, excluded, or required. For more information, [Amazon EC2 instance store](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html) in the *Amazon EC2 User Guide*.\n + To include instance types with instance store volumes, specify ``included``.\n + To require only instance types with instance store volumes, specify ``required``.\n + To exclude instance types with instance store volumes, specify ``excluded``.\n \n Default: ``included``", + "type": "string" + }, + "LocalStorageTypes": { + "description": "The type of local storage that is required.\n + For instance types with hard disk drive (HDD) storage, specify ``hdd``.\n + For instance types with solid state drive (SSD) storage, specify ``ssd``.\n \n Default: ``hdd`` and ``ssd``", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": { + "description": "[Price protection] The price protection threshold for Spot Instances, as a percentage of an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from the lowest priced current generation instance types, and failing that, from the lowest priced previous generation instance types that match your attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose price exceeds your specified threshold.\n The parameter accepts an integer, which Amazon EC2 interprets as a percentage.\n If you set ``TargetCapacityUnitType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is based on the per vCPU or per memory price instead of the per instance price.\n Only one of ``SpotMaxPricePercentageOverLowestPrice`` or ``MaxSpotPriceAsPercentageOfOptimalOnDemandPrice`` can be specified. If you don't specify either, Amazon EC2 will automatically apply optimal price protection to consistently select from a wide range of instance types. To indicate no price protection threshold for Spot Instances, meaning you want to consider all instance types that match your attributes, include one of these parameters and specify a high value, such as ``999999``.", + "type": "integer" + }, + "MemoryGiBPerVCpu": { + "$ref": "#/definitions/MemoryGiBPerVCpu", + "description": "The minimum and maximum amount of memory per vCPU, in GiB.\n Default: No minimum or maximum limits" + }, + "MemoryMiB": { + "$ref": "#/definitions/MemoryMiB", + "description": "The minimum and maximum amount of memory, in MiB." + }, + "NetworkBandwidthGbps": { + "$ref": "#/definitions/NetworkBandwidthGbps", + "description": "The minimum and maximum amount of network bandwidth, in gigabits per second (Gbps).\n Default: No minimum or maximum limits" + }, + "NetworkInterfaceCount": { + "$ref": "#/definitions/NetworkInterfaceCount", + "description": "The minimum and maximum number of network interfaces.\n Default: No minimum or maximum limits" + }, + "OnDemandMaxPricePercentageOverLowestPrice": { + "description": "[Price protection] The price protection threshold for On-Demand Instances, as a percentage higher than an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose price exceeds your specified threshold.\n The parameter accepts an integer, which Amazon EC2 interprets as a percentage.\n To turn off price protection, specify a high value, such as ``999999``.\n This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html) and [GetInstanceTypesFromInstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceTypesFromInstanceRequirements.html).\n If you set ``TargetCapacityUnitType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price.\n Default: ``20``", + "type": "integer" + }, + "RequireHibernateSupport": { + "description": "Indicates whether instance types must support hibernation for On-Demand Instances.\n This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html).\n Default: ``false``", + "type": "boolean" + }, + "SpotMaxPricePercentageOverLowestPrice": { + "description": "[Price protection] The price protection threshold for Spot Instances, as a percentage higher than an identified Spot price. The identified Spot price is the Spot price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified Spot price is from the lowest priced current generation instance types, and failing that, from the lowest priced previous generation instance types that match your attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose Spot price exceeds your specified threshold.\n The parameter accepts an integer, which Amazon EC2 interprets as a percentage.\n If you set ``TargetCapacityUnitType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price.\n This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html) and [GetInstanceTypesFromInstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceTypesFromInstanceRequirements.html).\n Only one of ``SpotMaxPricePercentageOverLowestPrice`` or ``MaxSpotPriceAsPercentageOfOptimalOnDemandPrice`` can be specified. If you don't specify either, Amazon EC2 will automatically apply optimal price protection to consistently select from a wide range of instance types. To indicate no price protection threshold for Spot Instances, meaning you want to consider all instance types that match your attributes, include one of these parameters and specify a high value, such as ``999999``.\n Default: ``100``", + "type": "integer" + }, + "TotalLocalStorageGB": { + "$ref": "#/definitions/TotalLocalStorageGB", + "description": "The minimum and maximum amount of total local storage, in GB.\n Default: No minimum or maximum limits" + }, + "VCpuCount": { + "$ref": "#/definitions/VCpuCount", + "description": "The minimum and maximum number of vCPUs." + } + }, + "type": "object" + }, + "Ipv4PrefixSpecification": { + "additionalProperties": false, + "description": "Specifies an IPv4 prefix for a network interface.\n ``Ipv4PrefixSpecification`` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html).", + "properties": { + "Ipv4Prefix": { + "description": "The IPv4 prefix. For information, see [Assigning prefixes to network interfaces](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-prefix-eni.html) in the *Amazon EC2 User Guide*.", + "type": "string" + } + }, + "type": "object" + }, + "Ipv6Add": { + "additionalProperties": false, + "description": "Specifies an IPv6 address in an Amazon EC2 launch template.\n ``Ipv6Add`` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html).", + "properties": { + "Ipv6Address": { + "description": "One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet. You can't use this option if you're specifying a number of IPv6 addresses.", + "type": "string" + } + }, + "type": "object" + }, + "Ipv6PrefixSpecification": { + "additionalProperties": false, + "description": "Specifies an IPv6 prefix for a network interface.\n ``Ipv6PrefixSpecification`` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html).", + "properties": { + "Ipv6Prefix": { + "description": "The IPv6 prefix.", + "type": "string" + } + }, + "type": "object" + }, + "LaunchTemplateData": { + "additionalProperties": false, + "description": "The information to include in the launch template.\n You must specify at least one parameter for the launch template data.", + "properties": { + "BlockDeviceMappings": { + "description": "The block device mapping.", + "items": { + "$ref": "#/definitions/BlockDeviceMapping" + }, + "type": "array", + "uniqueItems": false + }, + "CapacityReservationSpecification": { + "$ref": "#/definitions/CapacityReservationSpecification", + "description": "The Capacity Reservation targeting option. If you do not specify this parameter, the instance's Capacity Reservation preference defaults to ``open``, which enables it to run in any open Capacity Reservation that has matching attributes (instance type, platform, Availability Zone)." + }, + "CpuOptions": { + "$ref": "#/definitions/CpuOptions", + "description": "The CPU options for the instance. For more information, see [CPU options for Amazon EC2 instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) in the *Amazon EC2 User Guide*." + }, + "CreditSpecification": { + "$ref": "#/definitions/CreditSpecification", + "description": "The credit option for CPU usage of the instance. Valid only for T instances." + }, + "DisableApiStop": { + "description": "Indicates whether to enable the instance for stop protection. For more information, see [Enable stop protection for your EC2 instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-stop-protection.html) in the *Amazon EC2 User Guide*.", + "type": "boolean" + }, + "DisableApiTermination": { + "description": "Indicates whether termination protection is enabled for the instance. The default is ``false``, which means that you can terminate the instance using the Amazon EC2 console, command line tools, or API. You can enable termination protection when you launch an instance, while the instance is running, or while the instance is stopped.", + "type": "boolean" + }, + "EbsOptimized": { + "description": "Indicates whether the instance is optimized for Amazon EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal Amazon EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS-optimized instance.", + "type": "boolean" + }, + "ElasticGpuSpecifications": { + "description": "Deprecated.\n Amazon Elastic Graphics reached end of life on January 8, 2024.", + "items": { + "$ref": "#/definitions/ElasticGpuSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "ElasticInferenceAccelerators": { + "description": "Amazon Elastic Inference is no longer available.\n An elastic inference accelerator to associate with the instance. Elastic inference accelerators are a resource you can attach to your Amazon EC2 instances to accelerate your Deep Learning (DL) inference workloads.\n You cannot specify accelerators from different generations in the same request.", + "items": { + "$ref": "#/definitions/LaunchTemplateElasticInferenceAccelerator" + }, + "type": "array", + "uniqueItems": false + }, + "EnclaveOptions": { + "$ref": "#/definitions/EnclaveOptions", + "description": "Indicates whether the instance is enabled for AWS Nitro Enclaves. For more information, see [What is Nitro Enclaves?](https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html) in the *Nitro Enclaves User Guide*.\n You can't enable AWS Nitro Enclaves and hibernation on the same instance." + }, + "HibernationOptions": { + "$ref": "#/definitions/HibernationOptions", + "description": "Indicates whether an instance is enabled for hibernation. This parameter is valid only if the instance meets the [hibernation prerequisites](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hibernating-prerequisites.html). For more information, see [Hibernate your Amazon EC2 instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) in the *Amazon EC2 User Guide*." + }, + "IamInstanceProfile": { + "$ref": "#/definitions/IamInstanceProfile", + "description": "The name or Amazon Resource Name (ARN) of an IAM instance profile." + }, + "ImageId": { + "description": "The ID of the AMI. Alternatively, you can specify a Systems Manager parameter, which will resolve to an AMI ID on launch.\n Valid formats:\n + ``ami-0ac394d6a3example`` \n + ``resolve:ssm:parameter-name`` \n + ``resolve:ssm:parameter-name:version-number`` \n + ``resolve:ssm:parameter-name:label`` \n \n For more information, see [Use a Systems Manager parameter to find an AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html#using-systems-manager-parameter-to-find-AMI) in the *Amazon Elastic Compute Cloud User Guide*.", + "type": "string" + }, + "InstanceInitiatedShutdownBehavior": { + "description": "Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).\n Default: ``stop``", + "type": "string" + }, + "InstanceMarketOptions": { + "$ref": "#/definitions/InstanceMarketOptions", + "description": "The market (purchasing) option for the instances." + }, + "InstanceRequirements": { + "$ref": "#/definitions/InstanceRequirements", + "description": "The attributes for the instance types. When you specify instance attributes, Amazon EC2 will identify instance types with these attributes.\n You must specify ``VCpuCount`` and ``MemoryMiB``. All other attributes are optional. Any unspecified optional attribute is set to its default.\n When you specify multiple attributes, you get instance types that satisfy all of the specified attributes. If you specify multiple values for an attribute, you get instance types that satisfy any of the specified values.\n To limit the list of instance types from which Amazon EC2 can identify matching instance types, you can use one of the following parameters, but not both in the same request:\n + ``AllowedInstanceTypes`` - The instance types to include in the list. All other instance types are ignored, even if they match your specified attributes.\n + ``ExcludedInstanceTypes`` - The instance types to exclude from the list, even if they match your specified attributes.\n \n If you specify ``InstanceRequirements``, you can't specify ``InstanceType``.\n Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html), or with the [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) API or [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) AWS CloudFormation resource, you can't specify ``InstanceRequirements``.\n For more information, see [Specify attributes for instance type selection for EC2 Fleet or Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html) and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the *Amazon EC2 User Guide*." + }, + "InstanceType": { + "description": "The instance type. For more information, see [Amazon EC2 instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide*.\n If you specify ``InstanceType``, you can't specify ``InstanceRequirements``.", + "type": "string" + }, + "KernelId": { + "description": "The ID of the kernel.\n We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see [User Provided Kernels](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) in the *Amazon EC2 User Guide*.", + "type": "string" + }, + "KeyName": { + "description": "The name of the key pair. You can create a key pair using [CreateKeyPair](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html) or [ImportKeyPair](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html).\n If you do not specify a key pair, you can't connect to the instance unless you choose an AMI that is configured to allow users another way to log in.", + "type": "string" + }, + "LicenseSpecifications": { + "description": "The license configurations.", + "items": { + "$ref": "#/definitions/LicenseSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "MaintenanceOptions": { + "$ref": "#/definitions/MaintenanceOptions", + "description": "The maintenance options of your instance." + }, + "MetadataOptions": { + "$ref": "#/definitions/MetadataOptions", + "description": "The metadata options for the instance. For more information, see [Configure the Instance Metadata Service options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html) in the *Amazon EC2 User Guide*." + }, + "Monitoring": { + "$ref": "#/definitions/Monitoring", + "description": "The monitoring for the instance." + }, + "NetworkInterfaces": { + "description": "The network interfaces for the instance.", + "items": { + "$ref": "#/definitions/NetworkInterface" + }, + "type": "array", + "uniqueItems": false + }, + "NetworkPerformanceOptions": { + "$ref": "#/definitions/NetworkPerformanceOptions", + "description": "The settings for the network performance options for the instance. For more information, see [EC2 instance bandwidth weighting configuration](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configure-bandwidth-weighting.html)." + }, + "Placement": { + "$ref": "#/definitions/Placement", + "description": "The placement for the instance." + }, + "PrivateDnsNameOptions": { + "$ref": "#/definitions/PrivateDnsNameOptions", + "description": "The hostname type for EC2 instances launched into this subnet and how DNS A and AAAA record queries should be handled. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *User Guide*." + }, + "RamDiskId": { + "description": "The ID of the RAM disk.\n We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see [User provided kernels](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) in the *Amazon EC2 User Guide*.", + "type": "string" + }, + "SecurityGroupIds": { + "description": "The IDs of the security groups. You can specify the IDs of existing security groups and references to resources created by the stack template.\n If you specify a network interface, you must specify any security groups as part of the network interface instead.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SecurityGroups": { + "description": "The names of the security groups. For a nondefault VPC, you must use security group IDs instead.\n If you specify a network interface, you must specify any security groups as part of the network interface instead of using this parameter.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "TagSpecifications": { + "description": "The tags to apply to resources that are created during instance launch.\n To tag the launch template itself, use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-tagspecifications).", + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "UserData": { + "description": "The user data to make available to the instance. You must provide base64-encoded text. User data is limited to 16 KB. For more information, see [Run commands when you launch an EC2 instance with user data input](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) in the *Amazon EC2 User Guide*.\n If you are creating the launch template for use with BATCH, the user data must be provided in the [MIME multi-part archive format](https://docs.aws.amazon.com/https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive). For more information, see [Amazon EC2 user data in launch templates](https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html#lt-user-data) in the *User Guide*.", + "type": "string" + } + }, + "type": "object" + }, + "LaunchTemplateElasticInferenceAccelerator": { + "additionalProperties": false, + "description": "Amazon Elastic Inference is no longer available.\n Specifies an elastic inference accelerator.\n ``LaunchTemplateElasticInferenceAccelerator`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "Count": { + "description": "The number of elastic inference accelerators to attach to the instance. \n Default: 1", + "type": "integer" + }, + "Type": { + "description": "The type of elastic inference accelerator. The possible values are eia1.medium, eia1.large, and eia1.xlarge.", + "type": "string" + } + }, + "type": "object" + }, + "LaunchTemplateTagSpecification": { + "additionalProperties": false, + "description": "Specifies the tags to apply to the launch template during creation.\n To specify the tags for the resources that are created during instance launch, use [AWS::EC2::LaunchTemplate TagSpecification](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-tagspecification.html).\n ``LaunchTemplateTagSpecification`` is a property of [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html).", + "properties": { + "ResourceType": { + "description": "The type of resource. To tag a launch template, ``ResourceType`` must be ``launch-template``.", + "type": "string" + }, + "Tags": { + "description": "The tags for the resource.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "LicenseSpecification": { + "additionalProperties": false, + "description": "Specifies a license configuration for an instance.\n ``LicenseSpecification`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "LicenseConfigurationArn": { + "description": "The Amazon Resource Name (ARN) of the license configuration.", + "type": "string" + } + }, + "type": "object" + }, + "MaintenanceOptions": { + "additionalProperties": false, + "description": "The maintenance options of your instance.", + "properties": { + "AutoRecovery": { + "description": "Disables the automatic recovery behavior of your instance or sets it to default.", + "type": "string" + } + }, + "type": "object" + }, + "MemoryGiBPerVCpu": { + "additionalProperties": false, + "description": "The minimum and maximum amount of memory per vCPU, in GiB.", + "properties": { + "Max": { + "description": "The maximum amount of memory per vCPU, in GiB. To specify no maximum limit, omit this parameter.", + "type": "number" + }, + "Min": { + "description": "The minimum amount of memory per vCPU, in GiB. To specify no minimum limit, omit this parameter.", + "type": "number" + } + }, + "type": "object" + }, + "MemoryMiB": { + "additionalProperties": false, + "description": "The minimum and maximum amount of memory, in MiB.", + "properties": { + "Max": { + "description": "The maximum amount of memory, in MiB. To specify no maximum limit, omit this parameter.", + "type": "integer" + }, + "Min": { + "description": "The minimum amount of memory, in MiB. To specify no minimum limit, specify ``0``.", + "type": "integer" + } + }, + "type": "object" + }, + "MetadataOptions": { + "additionalProperties": false, + "description": "The metadata options for the instance. For more information, see [Instance metadata and user data](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) in the *Amazon EC2 User Guide*.\n ``MetadataOptions`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "HttpEndpoint": { + "description": "Enables or disables the HTTP metadata endpoint on your instances. If the parameter is not specified, the default state is ``enabled``.\n If you specify a value of ``disabled``, you will not be able to access your instance metadata.", + "type": "string" + }, + "HttpProtocolIpv6": { + "description": "Enables or disables the IPv6 endpoint for the instance metadata service.\n Default: ``disabled``", + "type": "string" + }, + "HttpPutResponseHopLimit": { + "description": "The desired HTTP PUT response hop limit for instance metadata requests. The larger the number, the further instance metadata requests can travel.\n Default: ``1`` \n Possible values: Integers from 1 to 64", + "type": "integer" + }, + "HttpTokens": { + "description": "Indicates whether IMDSv2 is required.\n + ``optional`` - IMDSv2 is optional. You can choose whether to send a session token in your instance metadata retrieval requests. If you retrieve IAM role credentials without a session token, you receive the IMDSv1 role credentials. If you retrieve IAM role credentials using a valid session token, you receive the IMDSv2 role credentials.\n + ``required`` - IMDSv2 is required. You must send a session token in your instance metadata retrieval requests. With this option, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available.\n \n Default: If the value of ``ImdsSupport`` for the Amazon Machine Image (AMI) for your instance is ``v2.0``, the default is ``required``.", + "type": "string" + }, + "InstanceMetadataTags": { + "description": "Set to ``enabled`` to allow access to instance tags from the instance metadata. Set to ``disabled`` to turn off access to instance tags from the instance metadata. For more information, see [View tags for your EC2 instances using instance metadata](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/work-with-tags-in-IMDS.html).\n Default: ``disabled``", + "type": "string" + } + }, + "type": "object" + }, + "Monitoring": { + "additionalProperties": false, + "description": "Specifies whether detailed monitoring is enabled for an instance. For more information about detailed monitoring, see [Enable or turn off detailed monitoring for your instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch-new.html) in the *User Guide*.\n ``Monitoring`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "Enabled": { + "description": "Specify ``true`` to enable detailed monitoring. Otherwise, basic monitoring is enabled.", + "type": "boolean" + } + }, + "type": "object" + }, + "NetworkBandwidthGbps": { + "additionalProperties": false, + "description": "The minimum and maximum amount of network bandwidth, in gigabits per second (Gbps).\n Setting the minimum bandwidth does not guarantee that your instance will achieve the minimum bandwidth. Amazon EC2 will identify instance types that support the specified minimum bandwidth, but the actual bandwidth of your instance might go below the specified minimum at times. For more information, see [Available instance bandwidth](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html#available-instance-bandwidth) in the *Amazon EC2 User Guide*.", + "properties": { + "Max": { + "description": "The maximum amount of network bandwidth, in Gbps. To specify no maximum limit, omit this parameter.", + "type": "number" + }, + "Min": { + "description": "The minimum amount of network bandwidth, in Gbps. If this parameter is not specified, there is no minimum limit.", + "type": "number" + } + }, + "type": "object" + }, + "NetworkInterface": { + "additionalProperties": false, + "description": "Specifies the parameters for a network interface.\n ``NetworkInterface`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "AssociateCarrierIpAddress": { + "description": "Associates a Carrier IP address with eth0 for a new network interface.\n Use this option when you launch an instance in a Wavelength Zone and want to associate a Carrier IP address with the network interface. For more information about Carrier IP addresses, see [Carrier IP addresses](https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#provider-owned-ip) in the *Developer Guide*.", + "type": "boolean" + }, + "AssociatePublicIpAddress": { + "description": "Associates a public IPv4 address with eth0 for a new network interface.\n AWS charges for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the *Public IPv4 Address* tab on the [Amazon VPC pricing page](https://docs.aws.amazon.com/vpc/pricing/).", + "type": "boolean" + }, + "ConnectionTrackingSpecification": { + "$ref": "#/definitions/ConnectionTrackingSpecification", + "description": "A connection tracking specification for the network interface." + }, + "DeleteOnTermination": { + "description": "Indicates whether the network interface is deleted when the instance is terminated.", + "type": "boolean" + }, + "Description": { + "description": "A description for the network interface.", + "type": "string" + }, + "DeviceIndex": { + "description": "The device index for the network interface attachment. The primary network interface has a device index of 0. If the network interface is of type ``interface``, you must specify a device index.\n If you create a launch template that includes secondary network interfaces but no primary network interface, and you specify it using the ``LaunchTemplate`` property of ``AWS::EC2::Instance``, then you must include a primary network interface using the ``NetworkInterfaces`` property of ``AWS::EC2::Instance``.", + "type": "integer" + }, + "EnaSrdSpecification": { + "$ref": "#/definitions/EnaSrdSpecification", + "description": "The ENA Express configuration for the network interface." + }, + "Groups": { + "description": "The IDs of one or more security groups.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "InterfaceType": { + "description": "The type of network interface. To create an Elastic Fabric Adapter (EFA), specify ``efa`` or ``efa``. For more information, see [Elastic Fabric Adapter for AI/ML and HPC workloads on Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) in the *Amazon EC2 User Guide*.\n If you are not creating an EFA, specify ``interface`` or omit this parameter.\n If you specify ``efa-only``, do not assign any IP addresses to the network interface. EFA-only network interfaces do not support IP addresses.\n Valid values: ``interface`` | ``efa`` | ``efa-only``", + "type": "string" + }, + "Ipv4PrefixCount": { + "description": "The number of IPv4 prefixes to be automatically assigned to the network interface. You cannot use this option if you use the ``Ipv4Prefix`` option.", + "type": "integer" + }, + "Ipv4Prefixes": { + "description": "One or more IPv4 prefixes to be assigned to the network interface. You cannot use this option if you use the ``Ipv4PrefixCount`` option.", + "items": { + "$ref": "#/definitions/Ipv4PrefixSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Ipv6AddressCount": { + "description": "The number of IPv6 addresses to assign to a network interface. Amazon EC2 automatically selects the IPv6 addresses from the subnet range. You can't use this option if specifying specific IPv6 addresses.", + "type": "integer" + }, + "Ipv6Addresses": { + "description": "One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet. You can't use this option if you're specifying a number of IPv6 addresses.", + "items": { + "$ref": "#/definitions/Ipv6Add" + }, + "type": "array", + "uniqueItems": false + }, + "Ipv6PrefixCount": { + "description": "The number of IPv6 prefixes to be automatically assigned to the network interface. You cannot use this option if you use the ``Ipv6Prefix`` option.", + "type": "integer" + }, + "Ipv6Prefixes": { + "description": "One or more IPv6 prefixes to be assigned to the network interface. You cannot use this option if you use the ``Ipv6PrefixCount`` option.", + "items": { + "$ref": "#/definitions/Ipv6PrefixSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "NetworkCardIndex": { + "description": "The index of the network card. Some instance types support multiple network cards. The primary network interface must be assigned to network card index 0. The default is network card index 0.", + "type": "integer" + }, + "NetworkInterfaceId": { + "description": "The ID of the network interface.", + "type": "string" + }, + "PrimaryIpv6": { + "description": "The primary IPv6 address of the network interface. When you enable an IPv6 GUA address to be a primary IPv6, the first IPv6 GUA will be made the primary IPv6 address until the instance is terminated or the network interface is detached. For more information about primary IPv6 addresses, see [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html).", + "type": "boolean" + }, + "PrivateIpAddress": { + "description": "The primary private IPv4 address of the network interface.", + "type": "string" + }, + "PrivateIpAddresses": { + "description": "One or more private IPv4 addresses.", + "items": { + "$ref": "#/definitions/PrivateIpAdd" + }, + "type": "array", + "uniqueItems": false + }, + "SecondaryPrivateIpAddressCount": { + "description": "The number of secondary private IPv4 addresses to assign to a network interface.", + "type": "integer" + }, + "SubnetId": { + "description": "The ID of the subnet for the network interface.", + "type": "string" + } + }, + "type": "object" + }, + "NetworkInterfaceCount": { + "additionalProperties": false, + "description": "The minimum and maximum number of network interfaces.", + "properties": { + "Max": { + "description": "The maximum number of network interfaces. To specify no maximum limit, omit this parameter.", + "type": "integer" + }, + "Min": { + "description": "The minimum number of network interfaces. To specify no minimum limit, omit this parameter.", + "type": "integer" + } + }, + "type": "object" + }, + "NetworkPerformanceOptions": { + "additionalProperties": false, + "description": "Contains settings for the network performance options for the instance.", + "properties": { + "BandwidthWeighting": { + "description": "Specify the bandwidth weighting option to boost the associated type of baseline bandwidth, as follows:\n + default This option uses the standard bandwidth configuration for your instance type. + vpc-1 This option boosts your networking baseline bandwidth and reduces your EBS baseline bandwidth. + ebs-1 This option boosts your EBS baseline bandwidth and reduces your networking baseline bandwidth.", + "type": "string" + } + }, + "type": "object" + }, + "Placement": { + "additionalProperties": false, + "description": "Specifies the placement of an instance.\n ``Placement`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "Affinity": { + "description": "The affinity setting for an instance on a Dedicated Host.", + "type": "string" + }, + "AvailabilityZone": { + "description": "The Availability Zone for the instance.", + "type": "string" + }, + "GroupId": { + "description": "The Group Id of a placement group. You must specify the Placement Group *Group Id* to launch an instance in a shared placement group.", + "type": "string" + }, + "GroupName": { + "description": "The name of the placement group for the instance.", + "type": "string" + }, + "HostId": { + "description": "The ID of the Dedicated Host for the instance.", + "type": "string" + }, + "HostResourceGroupArn": { + "description": "The ARN of the host resource group in which to launch the instances. If you specify a host resource group ARN, omit the *Tenancy* parameter or set it to ``host``.", + "type": "string" + }, + "PartitionNumber": { + "description": "The number of the partition the instance should launch in. Valid only if the placement group strategy is set to ``partition``.", + "type": "integer" + }, + "SpreadDomain": { + "description": "Reserved for future use.", + "type": "string" + }, + "Tenancy": { + "description": "The tenancy of the instance. An instance with a tenancy of dedicated runs on single-tenant hardware.", + "type": "string" + } + }, + "type": "object" + }, + "PrivateDnsNameOptions": { + "additionalProperties": false, + "description": "The hostname type for EC2 instances launched into this subnet and how DNS A and AAAA record queries should be handled. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *User Guide*.", + "properties": { + "EnableResourceNameDnsAAAARecord": { + "description": "Indicates whether to respond to DNS queries for instance hostnames with DNS AAAA records.", + "type": "boolean" + }, + "EnableResourceNameDnsARecord": { + "description": "Indicates whether to respond to DNS queries for instance hostnames with DNS A records.", + "type": "boolean" + }, + "HostnameType": { + "description": "The type of hostname for EC2 instances. For IPv4 only subnets, an instance DNS name must be based on the instance IPv4 address. For IPv6 only subnets, an instance DNS name must be based on the instance ID. For dual-stack subnets, you can specify whether DNS names use the instance IPv4 address or the instance ID. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *User Guide*.", + "type": "string" + } + }, + "type": "object" + }, + "PrivateIpAdd": { + "additionalProperties": false, + "description": "Specifies a secondary private IPv4 address for a network interface.\n ``PrivateIpAdd`` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html).", + "properties": { + "Primary": { + "description": "Indicates whether the private IPv4 address is the primary private IPv4 address. Only one IPv4 address can be designated as primary.", + "type": "boolean" + }, + "PrivateIpAddress": { + "description": "The private IPv4 address.", + "type": "string" + } + }, + "type": "object" + }, + "Reference": { + "additionalProperties": false, + "description": "Specifies an instance family to use as the baseline reference for CPU performance.", + "properties": { + "InstanceFamily": { + "description": "The instance family to use as a baseline reference.\n Ensure that you specify the correct value for the instance family. The instance family is everything before the period (``.``) in the instance type name. For example, in the instance type ``c6i.large``, the instance family is ``c6i``, not ``c6``. For more information, see [Amazon EC2 instance type naming conventions](https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-type-names.html) in *Amazon EC2 Instance Types*.\n The following instance families are *not supported* for performance protection:\n + ``c1`` \n + ``g3`` | ``g3s`` \n + ``hpc7g`` \n + ``m1`` | ``m2`` \n + ``mac1`` | ``mac2`` | ``mac2-m1ultra`` | ``mac2-m2`` | ``mac2-m2pro`` \n + ``p3dn`` | ``p4d`` | ``p5`` \n + ``t1`` \n + ``u-12tb1`` | ``u-18tb1`` | ``u-24tb1`` | ``u-3tb1`` | ``u-6tb1`` | ``u-9tb1`` | ``u7i-12tb`` | ``u7in-16tb`` | ``u7in-24tb`` | ``u7in-32tb`` \n \n If you enable performance protection by specifying a supported instance family, the returned instance types will exclude the above unsupported instance families.", + "type": "string" + } + }, + "type": "object" + }, + "References": { + "description": "A list of references to be used as baseline for the CPU performance. Currently, you can only specify a single reference across different instance type variations such as CPU manufacturers, architectures etc.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Reference" + }, + "type": "array", + "uniqueItems": true + }, + "SpotOptions": { + "additionalProperties": false, + "description": "Specifies options for Spot Instances.\n ``SpotOptions`` is a property of [AWS::EC2::LaunchTemplate InstanceMarketOptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-instancemarketoptions.html).", + "properties": { + "BlockDurationMinutes": { + "description": "Deprecated.", + "type": "integer" + }, + "InstanceInterruptionBehavior": { + "description": "The behavior when a Spot Instance is interrupted. The default is ``terminate``.", + "type": "string" + }, + "MaxPrice": { + "description": "The maximum hourly price you're willing to pay for a Spot Instance. We do not recommend using this parameter because it can lead to increased interruptions. If you do not specify this parameter, you will pay the current Spot price. If you do specify this parameter, it must be more than USD $0.001. Specifying a value below USD $0.001 will result in an ``InvalidParameterValue`` error message when the launch template is used to launch an instance.\n If you specify a maximum price, your Spot Instances will be interrupted more frequently than if you do not specify this parameter.", + "type": "string" + }, + "SpotInstanceType": { + "description": "The Spot Instance request type.\n If you are using Spot Instances with an Auto Scaling group, use ``one-time`` requests, as the ASlong service handles requesting new Spot Instances whenever the group is below its desired capacity.", + "type": "string" + }, + "ValidUntil": { + "description": "The end date of the request, in UTC format (*YYYY-MM-DD*T*HH:MM:SS*Z). Supported only for persistent requests.\n + For a persistent request, the request remains active until the ``ValidUntil`` date and time is reached. Otherwise, the request remains active until you cancel it.\n + For a one-time request, ``ValidUntil`` is not supported. The request remains active until all instances launch or you cancel the request.\n \n Default: 7 days from the current date", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "description": "Specifies the tags to apply to resources that are created during instance launch.\n ``TagSpecification`` is a property type of [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications). [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications) is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).", + "properties": { + "ResourceType": { + "description": "The type of resource to tag. You can specify tags for the following resource types only: ``instance`` | ``volume`` | ``network-interface`` | ``spot-instances-request``. If the instance does not include the resource type that you specify, the instance launch fails. For example, not all instance types include a volume.\n To tag a resource after it has been created, see [CreateTags](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html).", + "type": "string" + }, + "Tags": { + "description": "The tags to apply to the resource.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "TotalLocalStorageGB": { + "additionalProperties": false, + "description": "The minimum and maximum amount of total local storage, in GB.", + "properties": { + "Max": { + "description": "The maximum amount of total local storage, in GB. To specify no maximum limit, omit this parameter.", + "type": "number" + }, + "Min": { + "description": "The minimum amount of total local storage, in GB. To specify no minimum limit, omit this parameter.", + "type": "number" + } + }, + "type": "object" + }, + "VCpuCount": { + "additionalProperties": false, + "description": "The minimum and maximum number of vCPUs.", + "properties": { + "Max": { + "description": "The maximum number of vCPUs. To specify no maximum limit, omit this parameter.", + "type": "integer" + }, + "Min": { + "description": "The minimum number of vCPUs. To specify no minimum limit, specify ``0``.", + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Specifies the properties for creating a launch template.\n The minimum required properties for specifying a launch template are as follows:\n + You must specify at least one property for the launch template data.\n + You can optionally specify a name for the launch template. If you do not specify a name, CFN creates a name for you.\n \n A launch template can contain some or all of the configuration information to launch an instance. When you launch an instance using a launch template, instance properties that are not specified in the launch template use default values, except the ``ImageId`` property, which has no default value. If you do not specify an AMI ID for the launch template ``ImageId`` property, you must specify an AMI ID for the instance ``ImageId`` property.\n For more information, see [Launch an instance from a launch template](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html) in the *Amazon EC2 User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateLaunchTemplate", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteLaunchTemplate", + "ec2:DeleteTags", + "ec2:DescribeLaunchTemplates" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeLaunchTemplates" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeLaunchTemplates" + ] + }, + "update": { + "permissions": [ + "ec2:CreateLaunchTemplateVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/LaunchTemplateId" + ], + "properties": { + "DefaultVersionNumber": { + "description": "", + "type": "string" + }, + "LatestVersionNumber": { + "description": "", + "type": "string" + }, + "LaunchTemplateData": { + "$ref": "#/definitions/LaunchTemplateData", + "description": "The information for the launch template." + }, + "LaunchTemplateId": { + "description": "", + "type": "string" + }, + "LaunchTemplateName": { + "description": "A name for the launch template.", + "type": "string" + }, + "TagSpecifications": { + "description": "The tags to apply to the launch template on creation. To tag the launch template, the resource type must be ``launch-template``.\n To specify the tags for resources that are created during instance launch, use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications).", + "items": { + "$ref": "#/definitions/LaunchTemplateTagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "VersionDescription": { + "description": "A description for the first version of the launch template.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DefaultVersionNumber", + "/properties/LaunchTemplateId", + "/properties/LatestVersionNumber" + ], + "required": [ + "LaunchTemplateData" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::LaunchTemplate", + "writeOnlyProperties": [ + "/properties/LaunchTemplateData", + "/properties/VersionDescription", + "/properties/TagSpecifications" + ] +} diff --git a/src/schema/aws-ec2-localgatewayroute.json b/src/schema/aws-ec2-localgatewayroute.json index 280b5fb7..b7b0b494 100644 --- a/src/schema/aws-ec2-localgatewayroute.json +++ b/src/schema/aws-ec2-localgatewayroute.json @@ -1,97 +1,97 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DestinationCidrBlock", - "/properties/LocalGatewayRouteTableId" - ], - "description": "Describes a route for a local gateway route table.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateLocalGatewayRoute", - "ec2:SearchLocalGatewayRoutes" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteLocalGatewayRoute", - "ec2:SearchLocalGatewayRoutes" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeLocalGatewayRouteTables", - "ec2:SearchLocalGatewayRoutes" - ] - }, - "read": { - "permissions": [ - "ec2:SearchLocalGatewayRoutes" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyLocalGatewayRoute", - "ec2:SearchLocalGatewayRoutes" - ] - } - }, - "oneOf": [ - { - "required": [ - "DestinationCidrBlock", - "LocalGatewayRouteTableId", - "LocalGatewayVirtualInterfaceGroupId" - ] - }, - { - "required": [ - "DestinationCidrBlock", - "LocalGatewayRouteTableId", - "NetworkInterfaceId" - ] - } - ], - "primaryIdentifier": [ - "/properties/DestinationCidrBlock", - "/properties/LocalGatewayRouteTableId" - ], - "properties": { - "DestinationCidrBlock": { - "description": "The CIDR block used for destination matches.", - "type": "string" - }, - "LocalGatewayRouteTableId": { - "description": "The ID of the local gateway route table.", - "type": "string" - }, - "LocalGatewayVirtualInterfaceGroupId": { - "description": "The ID of the virtual interface group.", - "type": "string" - }, - "NetworkInterfaceId": { - "description": "The ID of the network interface.", - "type": "string" - }, - "State": { - "description": "The state of the route.", - "type": "string" - }, - "Type": { - "description": "The route type.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/State", - "/properties/Type" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-lgw.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::LocalGatewayRoute" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DestinationCidrBlock", + "/properties/LocalGatewayRouteTableId" + ], + "description": "Resource Type definition for Local Gateway Route which describes a route for a local gateway route table.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateLocalGatewayRoute", + "ec2:SearchLocalGatewayRoutes" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteLocalGatewayRoute", + "ec2:SearchLocalGatewayRoutes" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTables", + "ec2:SearchLocalGatewayRoutes" + ] + }, + "read": { + "permissions": [ + "ec2:SearchLocalGatewayRoutes" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyLocalGatewayRoute", + "ec2:SearchLocalGatewayRoutes" + ] + } + }, + "oneOf": [ + { + "required": [ + "DestinationCidrBlock", + "LocalGatewayRouteTableId", + "LocalGatewayVirtualInterfaceGroupId" + ] + }, + { + "required": [ + "DestinationCidrBlock", + "LocalGatewayRouteTableId", + "NetworkInterfaceId" + ] + } + ], + "primaryIdentifier": [ + "/properties/DestinationCidrBlock", + "/properties/LocalGatewayRouteTableId" + ], + "properties": { + "DestinationCidrBlock": { + "description": "The CIDR block used for destination matches.", + "type": "string" + }, + "LocalGatewayRouteTableId": { + "description": "The ID of the local gateway route table.", + "type": "string" + }, + "LocalGatewayVirtualInterfaceGroupId": { + "description": "The ID of the virtual interface group.", + "type": "string" + }, + "NetworkInterfaceId": { + "description": "The ID of the network interface.", + "type": "string" + }, + "State": { + "description": "The state of the route.", + "type": "string" + }, + "Type": { + "description": "The route type.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/State", + "/properties/Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-lgw.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::LocalGatewayRoute" +} diff --git a/src/schema/aws-ec2-localgatewayroutetable.json b/src/schema/aws-ec2-localgatewayroutetable.json index d3101f28..97b63972 100644 --- a/src/schema/aws-ec2-localgatewayroutetable.json +++ b/src/schema/aws-ec2-localgatewayroutetable.json @@ -1,130 +1,133 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LocalGatewayId", - "/properties/Mode" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "pattern": "^(?!aws:.*)", - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "pattern": "^(?!aws:.*)", - "type": "string" - } - }, - "type": "object" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "description": "Describes a route table for a local gateway.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateLocalGatewayRouteTable", - "ec2:DescribeLocalGatewayRouteTables", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteLocalGatewayRouteTable", - "ec2:DescribeLocalGatewayRouteTables", - "ec2:DeleteTags" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeLocalGatewayRouteTables" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeLocalGatewayRouteTables" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeLocalGatewayRouteTables", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/LocalGatewayRouteTableId" - ], - "properties": { - "LocalGatewayId": { - "description": "The ID of the local gateway.", - "type": "string" - }, - "LocalGatewayRouteTableArn": { - "description": "The ARN of the local gateway route table.", - "type": "string" - }, - "LocalGatewayRouteTableId": { - "description": "The ID of the local gateway route table.", - "type": "string" - }, - "Mode": { - "description": "The mode of the local gateway route table.", - "type": "string" - }, - "OutpostArn": { - "description": "The ARN of the outpost.", - "type": "string" - }, - "OwnerId": { - "description": "The owner of the local gateway route table.", - "type": "string" - }, - "State": { - "description": "The state of the local gateway route table.", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/Tags", - "description": "The tags for the local gateway route table." - } - }, - "readOnlyProperties": [ - "/properties/LocalGatewayRouteTableId", - "/properties/LocalGatewayRouteTableArn", - "/properties/OutpostArn", - "/properties/OwnerId", - "/properties/State" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "LocalGatewayId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-lgw.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:DeleteTags", - "ec2:CreateTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::LocalGatewayRouteTable" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LocalGatewayId", + "/properties/Mode" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 127, + "minLength": 1, + "pattern": "^(?!aws:.*)", + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 1, + "pattern": "^(?!aws:.*)", + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "description": "Resource Type definition for Local Gateway Route Table which describes a route table for a local gateway.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateLocalGatewayRouteTable", + "ec2:DescribeLocalGatewayRouteTables", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteLocalGatewayRouteTable", + "ec2:DescribeLocalGatewayRouteTables", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTables" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTables", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTables", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocalGatewayRouteTableId" + ], + "properties": { + "LocalGatewayId": { + "description": "The ID of the local gateway.", + "type": "string" + }, + "LocalGatewayRouteTableArn": { + "description": "The ARN of the local gateway route table.", + "type": "string" + }, + "LocalGatewayRouteTableId": { + "description": "The ID of the local gateway route table.", + "type": "string" + }, + "Mode": { + "description": "The mode of the local gateway route table.", + "type": "string" + }, + "OutpostArn": { + "description": "The ARN of the outpost.", + "type": "string" + }, + "OwnerId": { + "description": "The owner of the local gateway route table.", + "type": "string" + }, + "State": { + "description": "The state of the local gateway route table.", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags", + "description": "The tags for the local gateway route table." + } + }, + "readOnlyProperties": [ + "/properties/LocalGatewayRouteTableId", + "/properties/LocalGatewayRouteTableArn", + "/properties/OutpostArn", + "/properties/OwnerId", + "/properties/State" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "LocalGatewayId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-lgw.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:DescribeTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::LocalGatewayRouteTable" +} diff --git a/src/schema/aws-ec2-localgatewayroutetablevirtualinterfacegroupassociation.json b/src/schema/aws-ec2-localgatewayroutetablevirtualinterfacegroupassociation.json index 6b124805..4691b9a7 100644 --- a/src/schema/aws-ec2-localgatewayroutetablevirtualinterfacegroupassociation.json +++ b/src/schema/aws-ec2-localgatewayroutetablevirtualinterfacegroupassociation.json @@ -1,126 +1,134 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LocalGatewayRouteTableId", - "/properties/LocalGatewayVirtualInterfaceGroupId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "pattern": "^(?!aws:.*)", - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "pattern": "^(?!aws:.*)", - "type": "string" - } - }, - "type": "object" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "description": "Describes a local gateway route table virtual interface group association for a local gateway.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateLocalGatewayRouteTableVirtualInterfaceGroupAssociation", - "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteLocalGatewayRouteTableVirtualInterfaceGroupAssociation", - "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", - "ec2:DeleteTags" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/LocalGatewayRouteTableVirtualInterfaceGroupAssociationId" - ], - "properties": { - "LocalGatewayId": { - "description": "The ID of the local gateway.", - "type": "string" - }, - "LocalGatewayRouteTableArn": { - "description": "The ARN of the local gateway route table.", - "type": "string" - }, - "LocalGatewayRouteTableId": { - "description": "The ID of the local gateway route table.", - "type": "string" - }, - "LocalGatewayRouteTableVirtualInterfaceGroupAssociationId": { - "description": "The ID of the local gateway route table virtual interface group association.", - "type": "string" - }, - "LocalGatewayVirtualInterfaceGroupId": { - "description": "The ID of the local gateway route table virtual interface group.", - "type": "string" - }, - "OwnerId": { - "description": "The owner of the local gateway route table virtual interface group association.", - "type": "string" - }, - "State": { - "description": "The state of the local gateway route table virtual interface group association.", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/Tags", - "description": "The tags for the local gateway route table virtual interface group association." - } - }, - "readOnlyProperties": [ - "/properties/LocalGatewayRouteTableVirtualInterfaceGroupAssociationId", - "/properties/LocalGatewayId", - "/properties/LocalGatewayRouteTableArn", - "/properties/OwnerId", - "/properties/State" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "LocalGatewayRouteTableId", - "LocalGatewayVirtualInterfaceGroupId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-lgw.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LocalGatewayRouteTableId", + "/properties/LocalGatewayVirtualInterfaceGroupId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 127, + "minLength": 1, + "pattern": "^(?!aws:.*)", + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 1, + "pattern": "^(?!aws:.*)", + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "description": "Resource Type definition for Local Gateway Route Table Virtual Interface Group Association which describes a local gateway route table virtual interface group association for a local gateway.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateLocalGatewayRouteTableVirtualInterfaceGroupAssociation", + "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteLocalGatewayRouteTableVirtualInterfaceGroupAssociation", + "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocalGatewayRouteTableVirtualInterfaceGroupAssociationId" + ], + "properties": { + "LocalGatewayId": { + "description": "The ID of the local gateway.", + "type": "string" + }, + "LocalGatewayRouteTableArn": { + "description": "The ARN of the local gateway route table.", + "type": "string" + }, + "LocalGatewayRouteTableId": { + "description": "The ID of the local gateway route table.", + "type": "string" + }, + "LocalGatewayRouteTableVirtualInterfaceGroupAssociationId": { + "description": "The ID of the local gateway route table virtual interface group association.", + "type": "string" + }, + "LocalGatewayVirtualInterfaceGroupId": { + "description": "The ID of the local gateway route table virtual interface group.", + "type": "string" + }, + "OwnerId": { + "description": "The owner of the local gateway route table virtual interface group association.", + "type": "string" + }, + "State": { + "description": "The state of the local gateway route table virtual interface group association.", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags", + "description": "The tags for the local gateway route table virtual interface group association." + } + }, + "readOnlyProperties": [ + "/properties/LocalGatewayRouteTableVirtualInterfaceGroupAssociationId", + "/properties/LocalGatewayId", + "/properties/LocalGatewayRouteTableArn", + "/properties/OwnerId", + "/properties/State" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "LocalGatewayRouteTableId", + "LocalGatewayVirtualInterfaceGroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-lgw.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:DescribeTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation" +} diff --git a/src/schema/aws-ec2-localgatewayroutetablevpcassociation.json b/src/schema/aws-ec2-localgatewayroutetablevpcassociation.json index 44557d4d..48df7ee0 100644 --- a/src/schema/aws-ec2-localgatewayroutetablevpcassociation.json +++ b/src/schema/aws-ec2-localgatewayroutetablevpcassociation.json @@ -1,120 +1,123 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LocalGatewayRouteTableId", - "/properties/VpcId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "pattern": "^(?!aws:.*)", - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "pattern": "^(?!aws:.*)", - "type": "string" - } - }, - "type": "object" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "description": "Describes an association between a local gateway route table and a VPC.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateLocalGatewayRouteTableVpcAssociation", - "ec2:DescribeLocalGatewayRouteTableVpcAssociations", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteLocalGatewayRouteTableVpcAssociation", - "ec2:DescribeLocalGatewayRouteTableVpcAssociations", - "ec2:DeleteTags" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeLocalGatewayRouteTableVpcAssociations" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeLocalGatewayRouteTableVpcAssociations" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeLocalGatewayRouteTableVpcAssociations", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/LocalGatewayRouteTableVpcAssociationId" - ], - "properties": { - "LocalGatewayId": { - "description": "The ID of the local gateway.", - "type": "string" - }, - "LocalGatewayRouteTableId": { - "description": "The ID of the local gateway route table.", - "type": "string" - }, - "LocalGatewayRouteTableVpcAssociationId": { - "description": "The ID of the association.", - "type": "string" - }, - "State": { - "description": "The state of the association.", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/Tags", - "description": "The tags for the association." - }, - "VpcId": { - "description": "The ID of the VPC.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/LocalGatewayId", - "/properties/LocalGatewayRouteTableVpcAssociationId", - "/properties/State" - ], - "required": [ - "LocalGatewayRouteTableId", - "VpcId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-lgw.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:DeleteTags", - "ec2:CreateTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::LocalGatewayRouteTableVPCAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LocalGatewayRouteTableId", + "/properties/VpcId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 127, + "minLength": 1, + "pattern": "^(?!aws:.*)", + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 1, + "pattern": "^(?!aws:.*)", + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "description": "Resource Type definition for Local Gateway Route Table VPC Association which describes an association between a local gateway route table and a VPC.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateLocalGatewayRouteTableVpcAssociation", + "ec2:DescribeLocalGatewayRouteTableVpcAssociations", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteLocalGatewayRouteTableVpcAssociation", + "ec2:DescribeLocalGatewayRouteTableVpcAssociations", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTableVpcAssociations" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTableVpcAssociations", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeLocalGatewayRouteTableVpcAssociations", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocalGatewayRouteTableVpcAssociationId" + ], + "properties": { + "LocalGatewayId": { + "description": "The ID of the local gateway.", + "type": "string" + }, + "LocalGatewayRouteTableId": { + "description": "The ID of the local gateway route table.", + "type": "string" + }, + "LocalGatewayRouteTableVpcAssociationId": { + "description": "The ID of the association.", + "type": "string" + }, + "State": { + "description": "The state of the association.", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags", + "description": "The tags for the association." + }, + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LocalGatewayId", + "/properties/LocalGatewayRouteTableVpcAssociationId", + "/properties/State" + ], + "required": [ + "LocalGatewayRouteTableId", + "VpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-lgw.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:DescribeTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::LocalGatewayRouteTableVPCAssociation" +} diff --git a/src/schema/aws-ec2-natgateway.json b/src/schema/aws-ec2-natgateway.json index 49c3ed1e..8c219d7c 100644 --- a/src/schema/aws-ec2-natgateway.json +++ b/src/schema/aws-ec2-natgateway.json @@ -1,149 +1,149 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SubnetId", - "/properties/ConnectivityType", - "/properties/AllocationId", - "/properties/PrivateIpAddress" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "properties": { - "Key": { - "description": "The tag key.", - "type": "string" - }, - "Value": { - "description": "The tag value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Specifies a network address translation (NAT) gateway in the specified subnet. You can create either a public NAT gateway or a private NAT gateway. The default is a public NAT gateway. If you create a public NAT gateway, you must specify an elastic IP address.\n With a NAT gateway, instances in a private subnet can connect to the internet, other AWS services, or an on-premises network using the IP address of the NAT gateway. For more information, see [NAT gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) in the *Amazon VPC User Guide*.\n If you add a default route (``AWS::EC2::Route`` resource) that points to a NAT gateway, specify the NAT gateway ID for the route's ``NatGatewayId`` property.\n When you associate an Elastic IP address or secondary Elastic IP address with a public NAT gateway, the network border group of the Elastic IP address must match the network border group of the Availability Zone (AZ) that the public NAT gateway is in. Otherwise, the NAT gateway fails to launch. You can see the network border group for the AZ by viewing the details of the subnet. Similarly, you can view the network border group for the Elastic IP address by viewing its details. For more information, see [Allocate an Elastic IP address](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-eips.html#allocate-eip) in the *Amazon VPC User Guide*.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateNatGateway", - "ec2:DescribeNatGateways", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteNatGateway", - "ec2:DescribeNatGateways" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeNatGateways" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeNatGateways" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeNatGateways", - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:AssociateNatGatewayAddress", - "ec2:DisassociateNatGatewayAddress", - "ec2:AssignPrivateNatGatewayAddress", - "ec2:UnassignPrivateNatGatewayAddress" - ] - } - }, - "primaryIdentifier": [ - "/properties/NatGatewayId" - ], - "properties": { - "AllocationId": { - "description": "[Public NAT gateway only] The allocation ID of the Elastic IP address that's associated with the NAT gateway. This property is required for a public NAT gateway and cannot be specified with a private NAT gateway.", - "type": "string" - }, - "ConnectivityType": { - "description": "Indicates whether the NAT gateway supports public or private connectivity. The default is public connectivity.", - "type": "string" - }, - "MaxDrainDurationSeconds": { - "description": "The maximum amount of time to wait (in seconds) before forcibly releasing the IP addresses if connections are still in progress. Default value is 350 seconds.", - "type": "integer" - }, - "NatGatewayId": { - "description": "", - "type": "string" - }, - "PrivateIpAddress": { - "description": "The private IPv4 address to assign to the NAT gateway. If you don't provide an address, a private IPv4 address will be automatically assigned.", - "type": "string" - }, - "SecondaryAllocationIds": { - "description": "Secondary EIP allocation IDs. For more information, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-working-with.html) in the *Amazon VPC User Guide*.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "SecondaryPrivateIpAddressCount": { - "description": "[Private NAT gateway only] The number of secondary private IPv4 addresses you want to assign to the NAT gateway. For more information about secondary addresses, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-creating) in the *Amazon Virtual Private Cloud User Guide*.\n ``SecondaryPrivateIpAddressCount`` and ``SecondaryPrivateIpAddresses`` cannot be set at the same time.", - "minimum": 1, - "type": "integer" - }, - "SecondaryPrivateIpAddresses": { - "description": "Secondary private IPv4 addresses. For more information about secondary addresses, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-creating) in the *Amazon Virtual Private Cloud User Guide*.\n ``SecondaryPrivateIpAddressCount`` and ``SecondaryPrivateIpAddresses`` cannot be set at the same time.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "SubnetId": { - "description": "The ID of the subnet in which the NAT gateway is located.", - "type": "string" - }, - "Tags": { - "description": "The tags for the NAT gateway.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/NatGatewayId" - ], - "required": [ - "SubnetId" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ec2:DeleteTags", - "ec2:CreateTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::NatGateway", - "writeOnlyProperties": [ - "/properties/MaxDrainDurationSeconds" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubnetId", + "/properties/ConnectivityType", + "/properties/AllocationId", + "/properties/PrivateIpAddress" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a network address translation (NAT) gateway in the specified subnet. You can create either a public NAT gateway or a private NAT gateway. The default is a public NAT gateway. If you create a public NAT gateway, you must specify an elastic IP address.\n With a NAT gateway, instances in a private subnet can connect to the internet, other AWS services, or an on-premises network using the IP address of the NAT gateway. For more information, see [NAT gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) in the *Amazon VPC User Guide*.\n If you add a default route (``AWS::EC2::Route`` resource) that points to a NAT gateway, specify the NAT gateway ID for the route's ``NatGatewayId`` property.\n When you associate an Elastic IP address or secondary Elastic IP address with a public NAT gateway, the network border group of the Elastic IP address must match the network border group of the Availability Zone (AZ) that the public NAT gateway is in. Otherwise, the NAT gateway fails to launch. You can see the network border group for the AZ by viewing the details of the subnet. Similarly, you can view the network border group for the Elastic IP address by viewing its details. For more information, see [Allocate an Elastic IP address](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-eips.html#allocate-eip) in the *Amazon VPC User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNatGateway", + "ec2:DescribeNatGateways", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteNatGateway", + "ec2:DescribeNatGateways" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeNatGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeNatGateways" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeNatGateways", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:AssociateNatGatewayAddress", + "ec2:DisassociateNatGatewayAddress", + "ec2:AssignPrivateNatGatewayAddress", + "ec2:UnassignPrivateNatGatewayAddress" + ] + } + }, + "primaryIdentifier": [ + "/properties/NatGatewayId" + ], + "properties": { + "AllocationId": { + "description": "[Public NAT gateway only] The allocation ID of the Elastic IP address that's associated with the NAT gateway. This property is required for a public NAT gateway and cannot be specified with a private NAT gateway.", + "type": "string" + }, + "ConnectivityType": { + "description": "Indicates whether the NAT gateway supports public or private connectivity. The default is public connectivity.", + "type": "string" + }, + "MaxDrainDurationSeconds": { + "description": "The maximum amount of time to wait (in seconds) before forcibly releasing the IP addresses if connections are still in progress. Default value is 350 seconds.", + "type": "integer" + }, + "NatGatewayId": { + "description": "", + "type": "string" + }, + "PrivateIpAddress": { + "description": "The private IPv4 address to assign to the NAT gateway. If you don't provide an address, a private IPv4 address will be automatically assigned.", + "type": "string" + }, + "SecondaryAllocationIds": { + "description": "Secondary EIP allocation IDs. For more information, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-working-with.html) in the *Amazon VPC User Guide*.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SecondaryPrivateIpAddressCount": { + "description": "[Private NAT gateway only] The number of secondary private IPv4 addresses you want to assign to the NAT gateway. For more information about secondary addresses, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-creating) in the *Amazon Virtual Private Cloud User Guide*.\n ``SecondaryPrivateIpAddressCount`` and ``SecondaryPrivateIpAddresses`` cannot be set at the same time.", + "minimum": 1, + "type": "integer" + }, + "SecondaryPrivateIpAddresses": { + "description": "Secondary private IPv4 addresses. For more information about secondary addresses, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-creating) in the *Amazon Virtual Private Cloud User Guide*.\n ``SecondaryPrivateIpAddressCount`` and ``SecondaryPrivateIpAddresses`` cannot be set at the same time.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetId": { + "description": "The ID of the subnet in which the NAT gateway is located.", + "type": "string" + }, + "Tags": { + "description": "The tags for the NAT gateway.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/NatGatewayId" + ], + "required": [ + "SubnetId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::NatGateway", + "writeOnlyProperties": [ + "/properties/MaxDrainDurationSeconds" + ] +} diff --git a/src/schema/aws-ec2-networkacl.json b/src/schema/aws-ec2-networkacl.json index 2cd5f5d1..4bd86908 100644 --- a/src/schema/aws-ec2-networkacl.json +++ b/src/schema/aws-ec2-networkacl.json @@ -1,99 +1,103 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/VpcId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "properties": { - "Key": { - "description": "The tag key.", - "type": "string" - }, - "Value": { - "description": "The tag value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Specifies a network ACL for your VPC.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateNetworkAcl", - "ec2:DescribeNetworkAcls", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteTags", - "ec2:DeleteNetworkAcl", - "ec2:DescribeNetworkAcls" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeNetworkAcls" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeNetworkAcls", - "ec2:DescribeTags" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeNetworkAcls", - "ec2:DeleteTags", - "ec2:CreateTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "description": "", - "type": "string" - }, - "Tags": { - "description": "The tags for the network ACL.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcId": { - "description": "The ID of the VPC for the network ACL.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "VpcId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::NetworkAcl" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a network ACL for your VPC.\n To add a network ACL entry, see [AWS::EC2::NetworkAclEntry](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkaclentry.html).", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkAcl", + "ec2:DescribeNetworkAcls", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteTags", + "ec2:DeleteNetworkAcl", + "ec2:DescribeNetworkAcls" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeNetworkAcls" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeNetworkAcls", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeNetworkAcls", + "ec2:DeleteTags", + "ec2:CreateTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "", + "type": "string" + }, + "Tags": { + "description": "The tags for the network ACL.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "The ID of the VPC for the network ACL.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "VpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::NetworkAcl" +} diff --git a/src/schema/aws-ec2-networkaclentry.json b/src/schema/aws-ec2-networkaclentry.json index beaa0ce4..1a86aa55 100644 --- a/src/schema/aws-ec2-networkaclentry.json +++ b/src/schema/aws-ec2-networkaclentry.json @@ -1,116 +1,116 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Egress", - "/properties/RuleNumber", - "/properties/NetworkAclId" - ], - "definitions": { - "Icmp": { - "additionalProperties": false, - "properties": { - "Code": { - "type": "integer" - }, - "Type": { - "type": "integer" - } - }, - "type": "object" - }, - "PortRange": { - "additionalProperties": false, - "properties": { - "From": { - "type": "integer" - }, - "To": { - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::NetworkAclEntry", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateNetworkAclEntry", - "ec2:DescribeNetworkAcls" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteNetworkAclEntry", - "ec2:DescribeNetworkAcls" - ] - }, - "update": { - "permissions": [ - "ec2:ReplaceNetworkAclEntry", - "ec2:DescribeNetworkAcls" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CidrBlock": { - "description": "The IPv4 CIDR range to allow or deny, in CIDR notation (for example, 172.16.0.0/24). Requirement is conditional: You must specify the CidrBlock or Ipv6CidrBlock property", - "type": "string" - }, - "Egress": { - "description": "Indicates whether this is an egress rule (rule is applied to traffic leaving the subnet)", - "type": "boolean" - }, - "Icmp": { - "$ref": "#/definitions/Icmp", - "description": "The Internet Control Message Protocol (ICMP) code and type. Requirement is conditional: Required if specifying 1 (ICMP) for the protocol parameter" - }, - "Id": { - "type": "string" - }, - "Ipv6CidrBlock": { - "description": "The IPv6 network range to allow or deny, in CIDR notation (for example 2001:db8:1234:1a00::/64)", - "type": "string" - }, - "NetworkAclId": { - "description": "The ID of the network ACL", - "type": "string" - }, - "PortRange": { - "$ref": "#/definitions/PortRange", - "description": "The IPv4 network range to allow or deny, in CIDR notation (for example 172.16.0.0/24). We modify the specified CIDR block to its canonical form; for example, if you specify 100.68.0.18/18, we modify it to 100.68.0.0/18" - }, - "Protocol": { - "description": "The protocol number. A value of \"-1\" means all protocols. If you specify \"-1\" or a protocol number other than \"6\" (TCP), \"17\" (UDP), or \"1\" (ICMP), traffic on all ports is allowed, regardless of any ports or ICMP types or codes that you specify. If you specify protocol \"58\" (ICMPv6) and specify an IPv4 CIDR block, traffic for all ICMP types and codes allowed, regardless of any that you specify. If you specify protocol \"58\" (ICMPv6) and specify an IPv6 CIDR block, you must specify an ICMP type and code", - "type": "integer" - }, - "RuleAction": { - "description": "Indicates whether to allow or deny the traffic that matches the rule", - "type": "string" - }, - "RuleNumber": { - "description": "Rule number to assign to the entry, such as 100. ACL entries are processed in ascending order by rule number. Entries can't use the same rule number unless one is an egress rule and the other is an ingress rule", - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "NetworkAclId", - "RuleAction", - "RuleNumber", - "Protocol" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::NetworkAclEntry" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Egress", + "/properties/RuleNumber", + "/properties/NetworkAclId" + ], + "definitions": { + "Icmp": { + "additionalProperties": false, + "properties": { + "Code": { + "type": "integer" + }, + "Type": { + "type": "integer" + } + }, + "type": "object" + }, + "PortRange": { + "additionalProperties": false, + "properties": { + "From": { + "type": "integer" + }, + "To": { + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::NetworkAclEntry", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkAclEntry", + "ec2:DescribeNetworkAcls" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteNetworkAclEntry", + "ec2:DescribeNetworkAcls" + ] + }, + "update": { + "permissions": [ + "ec2:ReplaceNetworkAclEntry", + "ec2:DescribeNetworkAcls" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrBlock": { + "description": "The IPv4 CIDR range to allow or deny, in CIDR notation (for example, 172.16.0.0/24). Requirement is conditional: You must specify the CidrBlock or Ipv6CidrBlock property", + "type": "string" + }, + "Egress": { + "description": "Indicates whether this is an egress rule (rule is applied to traffic leaving the subnet)", + "type": "boolean" + }, + "Icmp": { + "$ref": "#/definitions/Icmp", + "description": "The Internet Control Message Protocol (ICMP) code and type. Requirement is conditional: Required if specifying 1 (ICMP) for the protocol parameter" + }, + "Id": { + "type": "string" + }, + "Ipv6CidrBlock": { + "description": "The IPv6 network range to allow or deny, in CIDR notation (for example 2001:db8:1234:1a00::/64)", + "type": "string" + }, + "NetworkAclId": { + "description": "The ID of the network ACL", + "type": "string" + }, + "PortRange": { + "$ref": "#/definitions/PortRange", + "description": "The IPv4 network range to allow or deny, in CIDR notation (for example 172.16.0.0/24). We modify the specified CIDR block to its canonical form; for example, if you specify 100.68.0.18/18, we modify it to 100.68.0.0/18" + }, + "Protocol": { + "description": "The protocol number. A value of \"-1\" means all protocols. If you specify \"-1\" or a protocol number other than \"6\" (TCP), \"17\" (UDP), or \"1\" (ICMP), traffic on all ports is allowed, regardless of any ports or ICMP types or codes that you specify. If you specify protocol \"58\" (ICMPv6) and specify an IPv4 CIDR block, traffic for all ICMP types and codes allowed, regardless of any that you specify. If you specify protocol \"58\" (ICMPv6) and specify an IPv6 CIDR block, you must specify an ICMP type and code", + "type": "integer" + }, + "RuleAction": { + "description": "Indicates whether to allow or deny the traffic that matches the rule", + "type": "string" + }, + "RuleNumber": { + "description": "Rule number to assign to the entry, such as 100. ACL entries are processed in ascending order by rule number. Entries can't use the same rule number unless one is an egress rule and the other is an ingress rule", + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "NetworkAclId", + "RuleAction", + "RuleNumber", + "Protocol" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::NetworkAclEntry" +} diff --git a/src/schema/aws-ec2-networkinsightsaccessscope.json b/src/schema/aws-ec2-networkinsightsaccessscope.json index 7288fb01..0f6fdbe1 100644 --- a/src/schema/aws-ec2-networkinsightsaccessscope.json +++ b/src/schema/aws-ec2-networkinsightsaccessscope.json @@ -1,247 +1,247 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/NetworkInsightsAccessScopeArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MatchPaths", - "/properties/ExcludePaths" - ], - "definitions": { - "AccessScopePathRequest": { - "additionalProperties": false, - "properties": { - "Destination": { - "$ref": "#/definitions/PathStatementRequest" - }, - "Source": { - "$ref": "#/definitions/PathStatementRequest" - }, - "ThroughResources": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ThroughResourcesStatementRequest" - }, - "type": "array" - } - }, - "type": "object" - }, - "PacketHeaderStatementRequest": { - "additionalProperties": false, - "properties": { - "DestinationAddresses": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "DestinationPorts": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "DestinationPrefixLists": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "Protocols": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Protocol" - }, - "type": "array" - }, - "SourceAddresses": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "SourcePorts": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "SourcePrefixLists": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "PathStatementRequest": { - "additionalProperties": false, - "properties": { - "PacketHeaderStatement": { - "$ref": "#/definitions/PacketHeaderStatementRequest" - }, - "ResourceStatement": { - "$ref": "#/definitions/ResourceStatementRequest" - } - }, - "type": "object" - }, - "Protocol": { - "enum": [ - "tcp", - "udp" - ], - "type": "string" - }, - "ResourceStatementRequest": { - "additionalProperties": false, - "properties": { - "ResourceTypes": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "Resources": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - }, - "ThroughResourcesStatementRequest": { - "additionalProperties": false, - "properties": { - "ResourceStatement": { - "$ref": "#/definitions/ResourceStatementRequest" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::EC2::NetworkInsightsAccessScope", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateNetworkInsightsAccessScope", - "ec2:CreateTags", - "tiros:CreateQuery" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteNetworkInsightsAccessScope", - "ec2:DeleteTags" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeNetworkInsightsAccessScopes" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeNetworkInsightsAccessScopes", - "ec2:GetNetworkInsightsAccessScopeContent" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeNetworkInsightsAccessScopes", - "ec2:GetNetworkInsightsAccessScopeContent", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/NetworkInsightsAccessScopeId" - ], - "properties": { - "CreatedDate": { - "type": "string" - }, - "ExcludePaths": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/AccessScopePathRequest" - }, - "type": "array" - }, - "MatchPaths": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/AccessScopePathRequest" - }, - "type": "array" - }, - "NetworkInsightsAccessScopeArn": { - "type": "string" - }, - "NetworkInsightsAccessScopeId": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "UpdatedDate": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/NetworkInsightsAccessScopeId", - "/properties/NetworkInsightsAccessScopeArn", - "/properties/CreatedDate", - "/properties/UpdatedDate" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-ni.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::NetworkInsightsAccessScope", - "writeOnlyProperties": [ - "/properties/MatchPaths", - "/properties/ExcludePaths" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/NetworkInsightsAccessScopeArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MatchPaths", + "/properties/ExcludePaths" + ], + "definitions": { + "AccessScopePathRequest": { + "additionalProperties": false, + "properties": { + "Destination": { + "$ref": "#/definitions/PathStatementRequest" + }, + "Source": { + "$ref": "#/definitions/PathStatementRequest" + }, + "ThroughResources": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ThroughResourcesStatementRequest" + }, + "type": "array" + } + }, + "type": "object" + }, + "PacketHeaderStatementRequest": { + "additionalProperties": false, + "properties": { + "DestinationAddresses": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "DestinationPorts": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "DestinationPrefixLists": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "Protocols": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Protocol" + }, + "type": "array" + }, + "SourceAddresses": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "SourcePorts": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "SourcePrefixLists": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "PathStatementRequest": { + "additionalProperties": false, + "properties": { + "PacketHeaderStatement": { + "$ref": "#/definitions/PacketHeaderStatementRequest" + }, + "ResourceStatement": { + "$ref": "#/definitions/ResourceStatementRequest" + } + }, + "type": "object" + }, + "Protocol": { + "enum": [ + "tcp", + "udp" + ], + "type": "string" + }, + "ResourceStatementRequest": { + "additionalProperties": false, + "properties": { + "ResourceTypes": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "Resources": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "ThroughResourcesStatementRequest": { + "additionalProperties": false, + "properties": { + "ResourceStatement": { + "$ref": "#/definitions/ResourceStatementRequest" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::EC2::NetworkInsightsAccessScope", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkInsightsAccessScope", + "ec2:CreateTags", + "tiros:CreateQuery" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteNetworkInsightsAccessScope", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeNetworkInsightsAccessScopes" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeNetworkInsightsAccessScopes", + "ec2:GetNetworkInsightsAccessScopeContent" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeNetworkInsightsAccessScopes", + "ec2:GetNetworkInsightsAccessScopeContent", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/NetworkInsightsAccessScopeId" + ], + "properties": { + "CreatedDate": { + "type": "string" + }, + "ExcludePaths": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AccessScopePathRequest" + }, + "type": "array" + }, + "MatchPaths": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AccessScopePathRequest" + }, + "type": "array" + }, + "NetworkInsightsAccessScopeArn": { + "type": "string" + }, + "NetworkInsightsAccessScopeId": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "UpdatedDate": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/NetworkInsightsAccessScopeId", + "/properties/NetworkInsightsAccessScopeArn", + "/properties/CreatedDate", + "/properties/UpdatedDate" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-ni.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::NetworkInsightsAccessScope", + "writeOnlyProperties": [ + "/properties/MatchPaths", + "/properties/ExcludePaths" + ] +} diff --git a/src/schema/aws-ec2-networkinsightsaccessscopeanalysis.json b/src/schema/aws-ec2-networkinsightsaccessscopeanalysis.json index c4a159f4..ec8dc1d8 100644 --- a/src/schema/aws-ec2-networkinsightsaccessscopeanalysis.json +++ b/src/schema/aws-ec2-networkinsightsaccessscopeanalysis.json @@ -1,131 +1,142 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/NetworkInsightsAccessScopeAnalysisArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/NetworkInsightsAccessScopeId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::EC2::NetworkInsightsAccessScopeAnalysis", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateTags", - "ec2:StartNetworkInsightsAccessScopeAnalysis", - "ec2:GetTransitGatewayRouteTablePropagations", - "ec2:Describe*", - "elasticloadbalancing:Describe*", - "directconnect:Describe*", - "tiros:CreateQuery", - "tiros:GetQueryAnswer", - "tiros:GetQueryExplanation" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteNetworkInsightsAccessScopeAnalysis", - "ec2:DeleteTags" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeNetworkInsightsAccessScopeAnalyses" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeNetworkInsightsAccessScopeAnalyses" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeNetworkInsightsAccessScopeAnalyses", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/NetworkInsightsAccessScopeAnalysisId" - ], - "properties": { - "AnalyzedEniCount": { - "type": "integer" - }, - "EndDate": { - "type": "string" - }, - "FindingsFound": { - "enum": [ - "true", - "false", - "unknown" - ], - "type": "string" - }, - "NetworkInsightsAccessScopeAnalysisArn": { - "type": "string" - }, - "NetworkInsightsAccessScopeAnalysisId": { - "type": "string" - }, - "NetworkInsightsAccessScopeId": { - "type": "string" - }, - "StartDate": { - "type": "string" - }, - "Status": { - "enum": [ - "running", - "failed", - "succeeded" - ], - "type": "string" - }, - "StatusMessage": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/NetworkInsightsAccessScopeAnalysisId", - "/properties/NetworkInsightsAccessScopeAnalysisArn", - "/properties/Status", - "/properties/StatusMessage", - "/properties/StartDate", - "/properties/EndDate", - "/properties/FindingsFound", - "/properties/AnalyzedEniCount" - ], - "required": [ - "NetworkInsightsAccessScopeId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-ni.git", - "typeName": "AWS::EC2::NetworkInsightsAccessScopeAnalysis" -} +{ + "additionalIdentifiers": [ + [ + "/properties/NetworkInsightsAccessScopeAnalysisArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/NetworkInsightsAccessScopeId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::EC2::NetworkInsightsAccessScopeAnalysis", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateTags", + "ec2:StartNetworkInsightsAccessScopeAnalysis", + "ec2:GetTransitGatewayRouteTablePropagations", + "ec2:Describe*", + "elasticloadbalancing:Describe*", + "directconnect:Describe*", + "tiros:CreateQuery", + "tiros:GetQueryAnswer", + "tiros:GetQueryExplanation" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteNetworkInsightsAccessScopeAnalysis", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeNetworkInsightsAccessScopeAnalyses" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeNetworkInsightsAccessScopeAnalyses" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeNetworkInsightsAccessScopeAnalyses", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/NetworkInsightsAccessScopeAnalysisId" + ], + "properties": { + "AnalyzedEniCount": { + "type": "integer" + }, + "EndDate": { + "type": "string" + }, + "FindingsFound": { + "enum": [ + "true", + "false", + "unknown" + ], + "type": "string" + }, + "NetworkInsightsAccessScopeAnalysisArn": { + "type": "string" + }, + "NetworkInsightsAccessScopeAnalysisId": { + "type": "string" + }, + "NetworkInsightsAccessScopeId": { + "type": "string" + }, + "StartDate": { + "type": "string" + }, + "Status": { + "enum": [ + "running", + "failed", + "succeeded" + ], + "type": "string" + }, + "StatusMessage": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/NetworkInsightsAccessScopeAnalysisId", + "/properties/NetworkInsightsAccessScopeAnalysisArn", + "/properties/Status", + "/properties/StatusMessage", + "/properties/StartDate", + "/properties/EndDate", + "/properties/FindingsFound", + "/properties/AnalyzedEniCount" + ], + "required": [ + "NetworkInsightsAccessScopeId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-ni.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::NetworkInsightsAccessScopeAnalysis" +} diff --git a/src/schema/aws-ec2-networkinsightsanalysis.json b/src/schema/aws-ec2-networkinsightsanalysis.json index 9bdce992..9d50d7e9 100644 --- a/src/schema/aws-ec2-networkinsightsanalysis.json +++ b/src/schema/aws-ec2-networkinsightsanalysis.json @@ -1,706 +1,717 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/NetworkInsightsAnalysisArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/NetworkInsightsPathId", - "/properties/FilterInArns" - ], - "definitions": { - "AdditionalDetail": { - "additionalProperties": false, - "properties": { - "AdditionalDetailType": { - "type": "string" - }, - "Component": { - "$ref": "#/definitions/AnalysisComponent" - }, - "LoadBalancers": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/AnalysisComponent" - }, - "type": "array", - "uniqueItems": false - }, - "ServiceName": { - "type": "string" - } - }, - "type": "object" - }, - "AlternatePathHint": { - "additionalProperties": false, - "properties": { - "ComponentArn": { - "type": "string" - }, - "ComponentId": { - "type": "string" - } - }, - "type": "object" - }, - "AnalysisAclRule": { - "additionalProperties": false, - "properties": { - "Cidr": { - "type": "string" - }, - "Egress": { - "type": "boolean" - }, - "PortRange": { - "$ref": "#/definitions/PortRange" - }, - "Protocol": { - "$ref": "#/definitions/Protocol" - }, - "RuleAction": { - "type": "string" - }, - "RuleNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "AnalysisComponent": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - } - }, - "type": "object" - }, - "AnalysisLoadBalancerListener": { - "additionalProperties": false, - "properties": { - "InstancePort": { - "$ref": "#/definitions/Port" - }, - "LoadBalancerPort": { - "$ref": "#/definitions/Port" - } - }, - "type": "object" - }, - "AnalysisLoadBalancerTarget": { - "additionalProperties": false, - "properties": { - "Address": { - "$ref": "#/definitions/IpAddress" - }, - "AvailabilityZone": { - "type": "string" - }, - "Instance": { - "$ref": "#/definitions/AnalysisComponent" - }, - "Port": { - "$ref": "#/definitions/Port" - } - }, - "type": "object" - }, - "AnalysisPacketHeader": { - "additionalProperties": false, - "properties": { - "DestinationAddresses": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/IpAddress" - }, - "type": "array", - "uniqueItems": false - }, - "DestinationPortRanges": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PortRange" - }, - "type": "array", - "uniqueItems": false - }, - "Protocol": { - "$ref": "#/definitions/Protocol" - }, - "SourceAddresses": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/IpAddress" - }, - "type": "array", - "uniqueItems": false - }, - "SourcePortRanges": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PortRange" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "AnalysisRouteTableRoute": { - "additionalProperties": false, - "properties": { - "NatGatewayId": { - "type": "string" - }, - "NetworkInterfaceId": { - "type": "string" - }, - "Origin": { - "type": "string" - }, - "State": { - "type": "string" - }, - "TransitGatewayId": { - "type": "string" - }, - "VpcPeeringConnectionId": { - "type": "string" - }, - "destinationCidr": { - "type": "string" - }, - "destinationPrefixListId": { - "type": "string" - }, - "egressOnlyInternetGatewayId": { - "type": "string" - }, - "gatewayId": { - "type": "string" - }, - "instanceId": { - "type": "string" - } - }, - "type": "object" - }, - "AnalysisSecurityGroupRule": { - "additionalProperties": false, - "properties": { - "Cidr": { - "type": "string" - }, - "Direction": { - "type": "string" - }, - "PortRange": { - "$ref": "#/definitions/PortRange" - }, - "PrefixListId": { - "type": "string" - }, - "Protocol": { - "$ref": "#/definitions/Protocol" - }, - "SecurityGroupId": { - "type": "string" - } - }, - "type": "object" - }, - "Explanation": { - "additionalProperties": false, - "properties": { - "Acl": { - "$ref": "#/definitions/AnalysisComponent" - }, - "AclRule": { - "$ref": "#/definitions/AnalysisAclRule" - }, - "Address": { - "$ref": "#/definitions/IpAddress" - }, - "Addresses": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/IpAddress" - }, - "type": "array", - "uniqueItems": false - }, - "AttachedTo": { - "$ref": "#/definitions/AnalysisComponent" - }, - "AvailabilityZones": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Cidrs": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ClassicLoadBalancerListener": { - "$ref": "#/definitions/AnalysisLoadBalancerListener" - }, - "Component": { - "$ref": "#/definitions/AnalysisComponent" - }, - "ComponentAccount": { - "type": "string" - }, - "ComponentRegion": { - "type": "string" - }, - "CustomerGateway": { - "$ref": "#/definitions/AnalysisComponent" - }, - "Destination": { - "$ref": "#/definitions/AnalysisComponent" - }, - "DestinationVpc": { - "$ref": "#/definitions/AnalysisComponent" - }, - "Direction": { - "type": "string" - }, - "ElasticLoadBalancerListener": { - "$ref": "#/definitions/AnalysisComponent" - }, - "ExplanationCode": { - "type": "string" - }, - "IngressRouteTable": { - "$ref": "#/definitions/AnalysisComponent" - }, - "InternetGateway": { - "$ref": "#/definitions/AnalysisComponent" - }, - "LoadBalancerArn": { - "$ref": "#/definitions/ResourceArn" - }, - "LoadBalancerListenerPort": { - "$ref": "#/definitions/Port" - }, - "LoadBalancerTarget": { - "$ref": "#/definitions/AnalysisLoadBalancerTarget" - }, - "LoadBalancerTargetGroup": { - "$ref": "#/definitions/AnalysisComponent" - }, - "LoadBalancerTargetGroups": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/AnalysisComponent" - }, - "type": "array", - "uniqueItems": false - }, - "LoadBalancerTargetPort": { - "$ref": "#/definitions/Port" - }, - "MissingComponent": { - "type": "string" - }, - "NatGateway": { - "$ref": "#/definitions/AnalysisComponent" - }, - "NetworkInterface": { - "$ref": "#/definitions/AnalysisComponent" - }, - "PacketField": { - "type": "string" - }, - "Port": { - "$ref": "#/definitions/Port" - }, - "PortRanges": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PortRange" - }, - "type": "array", - "uniqueItems": false - }, - "PrefixList": { - "$ref": "#/definitions/AnalysisComponent" - }, - "Protocols": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Protocol" - }, - "type": "array", - "uniqueItems": false - }, - "RouteTable": { - "$ref": "#/definitions/AnalysisComponent" - }, - "RouteTableRoute": { - "$ref": "#/definitions/AnalysisRouteTableRoute" - }, - "SecurityGroup": { - "$ref": "#/definitions/AnalysisComponent" - }, - "SecurityGroupRule": { - "$ref": "#/definitions/AnalysisSecurityGroupRule" - }, - "SecurityGroups": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/AnalysisComponent" - }, - "type": "array", - "uniqueItems": false - }, - "SourceVpc": { - "$ref": "#/definitions/AnalysisComponent" - }, - "State": { - "type": "string" - }, - "Subnet": { - "$ref": "#/definitions/AnalysisComponent" - }, - "SubnetRouteTable": { - "$ref": "#/definitions/AnalysisComponent" - }, - "TransitGateway": { - "$ref": "#/definitions/AnalysisComponent" - }, - "TransitGatewayAttachment": { - "$ref": "#/definitions/AnalysisComponent" - }, - "TransitGatewayRouteTable": { - "$ref": "#/definitions/AnalysisComponent" - }, - "TransitGatewayRouteTableRoute": { - "$ref": "#/definitions/TransitGatewayRouteTableRoute" - }, - "Vpc": { - "$ref": "#/definitions/AnalysisComponent" - }, - "VpcPeeringConnection": { - "$ref": "#/definitions/AnalysisComponent" - }, - "VpnConnection": { - "$ref": "#/definitions/AnalysisComponent" - }, - "VpnGateway": { - "$ref": "#/definitions/AnalysisComponent" - }, - "vpcEndpoint": { - "$ref": "#/definitions/AnalysisComponent" - } - }, - "type": "object" - }, - "IpAddress": { - "type": "string" - }, - "PathComponent": { - "additionalProperties": false, - "properties": { - "AclRule": { - "$ref": "#/definitions/AnalysisAclRule" - }, - "AdditionalDetails": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/AdditionalDetail" - }, - "type": "array", - "uniqueItems": false - }, - "Component": { - "$ref": "#/definitions/AnalysisComponent" - }, - "DestinationVpc": { - "$ref": "#/definitions/AnalysisComponent" - }, - "ElasticLoadBalancerListener": { - "$ref": "#/definitions/AnalysisComponent" - }, - "Explanations": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Explanation" - }, - "type": "array", - "uniqueItems": false - }, - "InboundHeader": { - "$ref": "#/definitions/AnalysisPacketHeader" - }, - "OutboundHeader": { - "$ref": "#/definitions/AnalysisPacketHeader" - }, - "RouteTableRoute": { - "$ref": "#/definitions/AnalysisRouteTableRoute" - }, - "SecurityGroupRule": { - "$ref": "#/definitions/AnalysisSecurityGroupRule" - }, - "SequenceNumber": { - "type": "integer" - }, - "ServiceName": { - "type": "string" - }, - "SourceVpc": { - "$ref": "#/definitions/AnalysisComponent" - }, - "Subnet": { - "$ref": "#/definitions/AnalysisComponent" - }, - "TransitGateway": { - "$ref": "#/definitions/AnalysisComponent" - }, - "TransitGatewayRouteTableRoute": { - "$ref": "#/definitions/TransitGatewayRouteTableRoute" - }, - "Vpc": { - "$ref": "#/definitions/AnalysisComponent" - } - }, - "type": "object" - }, - "Port": { - "type": "integer" - }, - "PortRange": { - "additionalProperties": false, - "properties": { - "From": { - "type": "integer" - }, - "To": { - "type": "integer" - } - }, - "type": "object" - }, - "Protocol": { - "type": "string" - }, - "ResourceArn": { - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "TransitGatewayRouteTableRoute": { - "additionalProperties": false, - "properties": { - "AttachmentId": { - "type": "string" - }, - "DestinationCidr": { - "type": "string" - }, - "PrefixListId": { - "type": "string" - }, - "ResourceId": { - "type": "string" - }, - "ResourceType": { - "type": "string" - }, - "RouteOrigin": { - "type": "string" - }, - "State": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::EC2::NetworkInsightsAnalysis", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateTags", - "ec2:StartNetworkInsightsAnalysis", - "ec2:GetTransitGatewayRouteTablePropagations", - "ec2:SearchTransitGatewayRoutes", - "ec2:Describe*", - "ec2:GetManagedPrefixListEntries", - "elasticloadbalancing:Describe*", - "directconnect:Describe*", - "tiros:CreateQuery", - "tiros:GetQueryAnswer", - "tiros:GetQueryExplanation" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteNetworkInsightsAnalysis", - "ec2:DeleteTags" - ] - }, - "list": { - "permissions": [ - "ec2:Describe*" - ] - }, - "read": { - "permissions": [ - "ec2:Describe*" - ] - }, - "update": { - "permissions": [ - "ec2:CreateTags", - "ec2:Describe*", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/NetworkInsightsAnalysisId" - ], - "properties": { - "AdditionalAccounts": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "AlternatePathHints": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/AlternatePathHint" - }, - "type": "array", - "uniqueItems": false - }, - "Explanations": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Explanation" - }, - "type": "array", - "uniqueItems": false - }, - "FilterInArns": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ResourceArn" - }, - "type": "array", - "uniqueItems": false - }, - "ForwardPathComponents": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PathComponent" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInsightsAnalysisArn": { - "type": "string" - }, - "NetworkInsightsAnalysisId": { - "type": "string" - }, - "NetworkInsightsPathId": { - "type": "string" - }, - "NetworkPathFound": { - "type": "boolean" - }, - "ReturnPathComponents": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PathComponent" - }, - "type": "array", - "uniqueItems": false - }, - "StartDate": { - "type": "string" - }, - "Status": { - "enum": [ - "running", - "failed", - "succeeded" - ], - "type": "string" - }, - "StatusMessage": { - "type": "string" - }, - "SuggestedAccounts": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/NetworkInsightsAnalysisId", - "/properties/NetworkInsightsAnalysisArn", - "/properties/StartDate", - "/properties/Status", - "/properties/StatusMessage", - "/properties/NetworkPathFound", - "/properties/ForwardPathComponents", - "/properties/ReturnPathComponents", - "/properties/Explanations", - "/properties/AlternatePathHints", - "/properties/SuggestedAccounts" - ], - "required": [ - "NetworkInsightsPathId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-ni.git", - "typeName": "AWS::EC2::NetworkInsightsAnalysis" -} +{ + "additionalIdentifiers": [ + [ + "/properties/NetworkInsightsAnalysisArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/NetworkInsightsPathId", + "/properties/FilterInArns" + ], + "definitions": { + "AdditionalDetail": { + "additionalProperties": false, + "properties": { + "AdditionalDetailType": { + "type": "string" + }, + "Component": { + "$ref": "#/definitions/AnalysisComponent" + }, + "LoadBalancers": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AnalysisComponent" + }, + "type": "array", + "uniqueItems": false + }, + "ServiceName": { + "type": "string" + } + }, + "type": "object" + }, + "AlternatePathHint": { + "additionalProperties": false, + "properties": { + "ComponentArn": { + "type": "string" + }, + "ComponentId": { + "type": "string" + } + }, + "type": "object" + }, + "AnalysisAclRule": { + "additionalProperties": false, + "properties": { + "Cidr": { + "type": "string" + }, + "Egress": { + "type": "boolean" + }, + "PortRange": { + "$ref": "#/definitions/PortRange" + }, + "Protocol": { + "$ref": "#/definitions/Protocol" + }, + "RuleAction": { + "type": "string" + }, + "RuleNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "AnalysisComponent": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + } + }, + "type": "object" + }, + "AnalysisLoadBalancerListener": { + "additionalProperties": false, + "properties": { + "InstancePort": { + "$ref": "#/definitions/Port" + }, + "LoadBalancerPort": { + "$ref": "#/definitions/Port" + } + }, + "type": "object" + }, + "AnalysisLoadBalancerTarget": { + "additionalProperties": false, + "properties": { + "Address": { + "$ref": "#/definitions/IpAddress" + }, + "AvailabilityZone": { + "type": "string" + }, + "Instance": { + "$ref": "#/definitions/AnalysisComponent" + }, + "Port": { + "$ref": "#/definitions/Port" + } + }, + "type": "object" + }, + "AnalysisPacketHeader": { + "additionalProperties": false, + "properties": { + "DestinationAddresses": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IpAddress" + }, + "type": "array", + "uniqueItems": false + }, + "DestinationPortRanges": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": false + }, + "Protocol": { + "$ref": "#/definitions/Protocol" + }, + "SourceAddresses": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IpAddress" + }, + "type": "array", + "uniqueItems": false + }, + "SourcePortRanges": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "AnalysisRouteTableRoute": { + "additionalProperties": false, + "properties": { + "NatGatewayId": { + "type": "string" + }, + "NetworkInterfaceId": { + "type": "string" + }, + "Origin": { + "type": "string" + }, + "State": { + "type": "string" + }, + "TransitGatewayId": { + "type": "string" + }, + "VpcPeeringConnectionId": { + "type": "string" + }, + "destinationCidr": { + "type": "string" + }, + "destinationPrefixListId": { + "type": "string" + }, + "egressOnlyInternetGatewayId": { + "type": "string" + }, + "gatewayId": { + "type": "string" + }, + "instanceId": { + "type": "string" + } + }, + "type": "object" + }, + "AnalysisSecurityGroupRule": { + "additionalProperties": false, + "properties": { + "Cidr": { + "type": "string" + }, + "Direction": { + "type": "string" + }, + "PortRange": { + "$ref": "#/definitions/PortRange" + }, + "PrefixListId": { + "type": "string" + }, + "Protocol": { + "$ref": "#/definitions/Protocol" + }, + "SecurityGroupId": { + "type": "string" + } + }, + "type": "object" + }, + "Explanation": { + "additionalProperties": false, + "properties": { + "Acl": { + "$ref": "#/definitions/AnalysisComponent" + }, + "AclRule": { + "$ref": "#/definitions/AnalysisAclRule" + }, + "Address": { + "$ref": "#/definitions/IpAddress" + }, + "Addresses": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IpAddress" + }, + "type": "array", + "uniqueItems": false + }, + "AttachedTo": { + "$ref": "#/definitions/AnalysisComponent" + }, + "AvailabilityZones": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Cidrs": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ClassicLoadBalancerListener": { + "$ref": "#/definitions/AnalysisLoadBalancerListener" + }, + "Component": { + "$ref": "#/definitions/AnalysisComponent" + }, + "ComponentAccount": { + "type": "string" + }, + "ComponentRegion": { + "type": "string" + }, + "CustomerGateway": { + "$ref": "#/definitions/AnalysisComponent" + }, + "Destination": { + "$ref": "#/definitions/AnalysisComponent" + }, + "DestinationVpc": { + "$ref": "#/definitions/AnalysisComponent" + }, + "Direction": { + "type": "string" + }, + "ElasticLoadBalancerListener": { + "$ref": "#/definitions/AnalysisComponent" + }, + "ExplanationCode": { + "type": "string" + }, + "IngressRouteTable": { + "$ref": "#/definitions/AnalysisComponent" + }, + "InternetGateway": { + "$ref": "#/definitions/AnalysisComponent" + }, + "LoadBalancerArn": { + "$ref": "#/definitions/ResourceArn" + }, + "LoadBalancerListenerPort": { + "$ref": "#/definitions/Port" + }, + "LoadBalancerTarget": { + "$ref": "#/definitions/AnalysisLoadBalancerTarget" + }, + "LoadBalancerTargetGroup": { + "$ref": "#/definitions/AnalysisComponent" + }, + "LoadBalancerTargetGroups": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AnalysisComponent" + }, + "type": "array", + "uniqueItems": false + }, + "LoadBalancerTargetPort": { + "$ref": "#/definitions/Port" + }, + "MissingComponent": { + "type": "string" + }, + "NatGateway": { + "$ref": "#/definitions/AnalysisComponent" + }, + "NetworkInterface": { + "$ref": "#/definitions/AnalysisComponent" + }, + "PacketField": { + "type": "string" + }, + "Port": { + "$ref": "#/definitions/Port" + }, + "PortRanges": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": false + }, + "PrefixList": { + "$ref": "#/definitions/AnalysisComponent" + }, + "Protocols": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Protocol" + }, + "type": "array", + "uniqueItems": false + }, + "RouteTable": { + "$ref": "#/definitions/AnalysisComponent" + }, + "RouteTableRoute": { + "$ref": "#/definitions/AnalysisRouteTableRoute" + }, + "SecurityGroup": { + "$ref": "#/definitions/AnalysisComponent" + }, + "SecurityGroupRule": { + "$ref": "#/definitions/AnalysisSecurityGroupRule" + }, + "SecurityGroups": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AnalysisComponent" + }, + "type": "array", + "uniqueItems": false + }, + "SourceVpc": { + "$ref": "#/definitions/AnalysisComponent" + }, + "State": { + "type": "string" + }, + "Subnet": { + "$ref": "#/definitions/AnalysisComponent" + }, + "SubnetRouteTable": { + "$ref": "#/definitions/AnalysisComponent" + }, + "TransitGateway": { + "$ref": "#/definitions/AnalysisComponent" + }, + "TransitGatewayAttachment": { + "$ref": "#/definitions/AnalysisComponent" + }, + "TransitGatewayRouteTable": { + "$ref": "#/definitions/AnalysisComponent" + }, + "TransitGatewayRouteTableRoute": { + "$ref": "#/definitions/TransitGatewayRouteTableRoute" + }, + "Vpc": { + "$ref": "#/definitions/AnalysisComponent" + }, + "VpcPeeringConnection": { + "$ref": "#/definitions/AnalysisComponent" + }, + "VpnConnection": { + "$ref": "#/definitions/AnalysisComponent" + }, + "VpnGateway": { + "$ref": "#/definitions/AnalysisComponent" + }, + "vpcEndpoint": { + "$ref": "#/definitions/AnalysisComponent" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "PathComponent": { + "additionalProperties": false, + "properties": { + "AclRule": { + "$ref": "#/definitions/AnalysisAclRule" + }, + "AdditionalDetails": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AdditionalDetail" + }, + "type": "array", + "uniqueItems": false + }, + "Component": { + "$ref": "#/definitions/AnalysisComponent" + }, + "DestinationVpc": { + "$ref": "#/definitions/AnalysisComponent" + }, + "ElasticLoadBalancerListener": { + "$ref": "#/definitions/AnalysisComponent" + }, + "Explanations": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Explanation" + }, + "type": "array", + "uniqueItems": false + }, + "InboundHeader": { + "$ref": "#/definitions/AnalysisPacketHeader" + }, + "OutboundHeader": { + "$ref": "#/definitions/AnalysisPacketHeader" + }, + "RouteTableRoute": { + "$ref": "#/definitions/AnalysisRouteTableRoute" + }, + "SecurityGroupRule": { + "$ref": "#/definitions/AnalysisSecurityGroupRule" + }, + "SequenceNumber": { + "type": "integer" + }, + "ServiceName": { + "type": "string" + }, + "SourceVpc": { + "$ref": "#/definitions/AnalysisComponent" + }, + "Subnet": { + "$ref": "#/definitions/AnalysisComponent" + }, + "TransitGateway": { + "$ref": "#/definitions/AnalysisComponent" + }, + "TransitGatewayRouteTableRoute": { + "$ref": "#/definitions/TransitGatewayRouteTableRoute" + }, + "Vpc": { + "$ref": "#/definitions/AnalysisComponent" + } + }, + "type": "object" + }, + "Port": { + "type": "integer" + }, + "PortRange": { + "additionalProperties": false, + "properties": { + "From": { + "type": "integer" + }, + "To": { + "type": "integer" + } + }, + "type": "object" + }, + "Protocol": { + "type": "string" + }, + "ResourceArn": { + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TransitGatewayRouteTableRoute": { + "additionalProperties": false, + "properties": { + "AttachmentId": { + "type": "string" + }, + "DestinationCidr": { + "type": "string" + }, + "PrefixListId": { + "type": "string" + }, + "ResourceId": { + "type": "string" + }, + "ResourceType": { + "type": "string" + }, + "RouteOrigin": { + "type": "string" + }, + "State": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::EC2::NetworkInsightsAnalysis", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateTags", + "ec2:StartNetworkInsightsAnalysis", + "ec2:GetTransitGatewayRouteTablePropagations", + "ec2:SearchTransitGatewayRoutes", + "ec2:Describe*", + "ec2:GetManagedPrefixListEntries", + "elasticloadbalancing:Describe*", + "directconnect:Describe*", + "tiros:CreateQuery", + "tiros:GetQueryAnswer", + "tiros:GetQueryExplanation" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteNetworkInsightsAnalysis", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:Describe*" + ] + }, + "read": { + "permissions": [ + "ec2:Describe*" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:Describe*", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/NetworkInsightsAnalysisId" + ], + "properties": { + "AdditionalAccounts": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "AlternatePathHints": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AlternatePathHint" + }, + "type": "array", + "uniqueItems": false + }, + "Explanations": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Explanation" + }, + "type": "array", + "uniqueItems": false + }, + "FilterInArns": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ResourceArn" + }, + "type": "array", + "uniqueItems": false + }, + "ForwardPathComponents": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PathComponent" + }, + "type": "array", + "uniqueItems": false + }, + "NetworkInsightsAnalysisArn": { + "type": "string" + }, + "NetworkInsightsAnalysisId": { + "type": "string" + }, + "NetworkInsightsPathId": { + "type": "string" + }, + "NetworkPathFound": { + "type": "boolean" + }, + "ReturnPathComponents": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PathComponent" + }, + "type": "array", + "uniqueItems": false + }, + "StartDate": { + "type": "string" + }, + "Status": { + "enum": [ + "running", + "failed", + "succeeded" + ], + "type": "string" + }, + "StatusMessage": { + "type": "string" + }, + "SuggestedAccounts": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/NetworkInsightsAnalysisId", + "/properties/NetworkInsightsAnalysisArn", + "/properties/StartDate", + "/properties/Status", + "/properties/StatusMessage", + "/properties/NetworkPathFound", + "/properties/ForwardPathComponents", + "/properties/ReturnPathComponents", + "/properties/Explanations", + "/properties/AlternatePathHints", + "/properties/SuggestedAccounts" + ], + "required": [ + "NetworkInsightsPathId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-ni.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::NetworkInsightsAnalysis" +} diff --git a/src/schema/aws-ec2-networkinsightspath.json b/src/schema/aws-ec2-networkinsightspath.json index 08d121da..2d53d6b7 100644 --- a/src/schema/aws-ec2-networkinsightspath.json +++ b/src/schema/aws-ec2-networkinsightspath.json @@ -1,192 +1,192 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/NetworkInsightsPathArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SourceIp", - "/properties/DestinationIp", - "/properties/Source", - "/properties/Destination", - "/properties/Protocol", - "/properties/DestinationPort", - "/properties/FilterAtSource", - "/properties/FilterAtDestination" - ], - "definitions": { - "FilterPortRange": { - "additionalProperties": false, - "properties": { - "FromPort": { - "type": "integer" - }, - "ToPort": { - "type": "integer" - } - }, - "type": "object" - }, - "IpAddress": { - "type": "string" - }, - "PathFilter": { - "additionalProperties": false, - "properties": { - "DestinationAddress": { - "$ref": "#/definitions/IpAddress" - }, - "DestinationPortRange": { - "$ref": "#/definitions/FilterPortRange" - }, - "SourceAddress": { - "$ref": "#/definitions/IpAddress" - }, - "SourcePortRange": { - "$ref": "#/definitions/FilterPortRange" - } - }, - "type": "object" - }, - "Port": { - "type": "integer" - }, - "Protocol": { - "enum": [ - "tcp", - "udp" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "description": "Resource schema for AWS::EC2::NetworkInsightsPath", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateNetworkInsightsPath", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteNetworkInsightsPath", - "ec2:DeleteTags" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeNetworkInsightsPaths" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeNetworkInsightsPaths" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeNetworkInsightsPaths", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/NetworkInsightsPathId" - ], - "properties": { - "CreatedDate": { - "type": "string" - }, - "Destination": { - "type": "string" - }, - "DestinationArn": { - "type": "string" - }, - "DestinationIp": { - "$ref": "#/definitions/IpAddress" - }, - "DestinationPort": { - "$ref": "#/definitions/Port" - }, - "FilterAtDestination": { - "$ref": "#/definitions/PathFilter" - }, - "FilterAtSource": { - "$ref": "#/definitions/PathFilter" - }, - "NetworkInsightsPathArn": { - "type": "string" - }, - "NetworkInsightsPathId": { - "type": "string" - }, - "Protocol": { - "$ref": "#/definitions/Protocol" - }, - "Source": { - "type": "string" - }, - "SourceArn": { - "type": "string" - }, - "SourceIp": { - "$ref": "#/definitions/IpAddress" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/NetworkInsightsPathId", - "/properties/NetworkInsightsPathArn", - "/properties/CreatedDate", - "/properties/SourceArn", - "/properties/DestinationArn" - ], - "required": [ - "Protocol", - "Source" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-ni.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::NetworkInsightsPath" -} +{ + "additionalIdentifiers": [ + [ + "/properties/NetworkInsightsPathArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SourceIp", + "/properties/DestinationIp", + "/properties/Source", + "/properties/Destination", + "/properties/Protocol", + "/properties/DestinationPort", + "/properties/FilterAtSource", + "/properties/FilterAtDestination" + ], + "definitions": { + "FilterPortRange": { + "additionalProperties": false, + "properties": { + "FromPort": { + "type": "integer" + }, + "ToPort": { + "type": "integer" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "PathFilter": { + "additionalProperties": false, + "properties": { + "DestinationAddress": { + "$ref": "#/definitions/IpAddress" + }, + "DestinationPortRange": { + "$ref": "#/definitions/FilterPortRange" + }, + "SourceAddress": { + "$ref": "#/definitions/IpAddress" + }, + "SourcePortRange": { + "$ref": "#/definitions/FilterPortRange" + } + }, + "type": "object" + }, + "Port": { + "type": "integer" + }, + "Protocol": { + "enum": [ + "tcp", + "udp" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "description": "Resource schema for AWS::EC2::NetworkInsightsPath", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkInsightsPath", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteNetworkInsightsPath", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeNetworkInsightsPaths" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeNetworkInsightsPaths" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeNetworkInsightsPaths", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/NetworkInsightsPathId" + ], + "properties": { + "CreatedDate": { + "type": "string" + }, + "Destination": { + "type": "string" + }, + "DestinationArn": { + "type": "string" + }, + "DestinationIp": { + "$ref": "#/definitions/IpAddress" + }, + "DestinationPort": { + "$ref": "#/definitions/Port" + }, + "FilterAtDestination": { + "$ref": "#/definitions/PathFilter" + }, + "FilterAtSource": { + "$ref": "#/definitions/PathFilter" + }, + "NetworkInsightsPathArn": { + "type": "string" + }, + "NetworkInsightsPathId": { + "type": "string" + }, + "Protocol": { + "$ref": "#/definitions/Protocol" + }, + "Source": { + "type": "string" + }, + "SourceArn": { + "type": "string" + }, + "SourceIp": { + "$ref": "#/definitions/IpAddress" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/NetworkInsightsPathId", + "/properties/NetworkInsightsPathArn", + "/properties/CreatedDate", + "/properties/SourceArn", + "/properties/DestinationArn" + ], + "required": [ + "Protocol", + "Source" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-ni.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::NetworkInsightsPath" +} diff --git a/src/schema/aws-ec2-networkinterface.json b/src/schema/aws-ec2-networkinterface.json index 8b42cb6e..1880efff 100644 --- a/src/schema/aws-ec2-networkinterface.json +++ b/src/schema/aws-ec2-networkinterface.json @@ -1,288 +1,290 @@ -{ - "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/master/src/main/resources/schema/provider.definition.schema.v1.json", - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/PrivateIpAddresses", - "/properties/EnablePrimaryIpv6", - "/properties/ConnectionTrackingSpecification" - ], - "createOnlyProperties": [ - "/properties/PrivateIpAddress", - "/properties/InterfaceType", - "/properties/SubnetId" - ], - "definitions": { - "ConnectionTrackingSpecification": { - "additionalProperties": false, - "properties": { - "TcpEstablishedTimeout": { - "type": "integer" - }, - "UdpStreamTimeout": { - "type": "integer" - }, - "UdpTimeout": { - "type": "integer" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "Ipv4PrefixSpecification": { - "additionalProperties": false, - "properties": { - "Ipv4Prefix": { - "type": "string" - } - }, - "required": [ - "Ipv4Prefix" - ], - "type": "object" - }, - "Ipv6PrefixSpecification": { - "additionalProperties": false, - "properties": { - "Ipv6Prefix": { - "type": "string" - } - }, - "required": [ - "Ipv6Prefix" - ], - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The AWS::EC2::NetworkInterface resource creates network interface", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateNetworkInterface", - "ec2:DescribeNetworkInterfaces", - "ec2:CreateTags", - "ec2:ModifyNetworkInterfaceAttribute" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeNetworkInterfaces", - "ec2:DeleteNetworkInterface" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeNetworkInterfaces" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeNetworkInterfaces" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeNetworkInterfaces", - "ec2:ModifyNetworkInterfaceAttribute", - "ec2:UnassignIpv6Addresses", - "ec2:AssignIpv6Addresses", - "ec2:DeleteTags", - "ec2:CreateTags", - "ec2:UnassignPrivateIpAddresses", - "ec2:AssignPrivateIpAddresses" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ConnectionTrackingSpecification": { - "$ref": "#/definitions/ConnectionTrackingSpecification" - }, - "Description": { - "description": "A description for the network interface.", - "type": "string" - }, - "EnablePrimaryIpv6": { - "description": "If you have instances or ENIs that rely on the IPv6 address not changing, to avoid disrupting traffic to instances or ENIs, you can enable a primary IPv6 address. Enable this option to automatically assign an IPv6 associated with the ENI attached to your instance to be the primary IPv6 address. When you enable an IPv6 address to be a primary IPv6, you cannot disable it. Traffic will be routed to the primary IPv6 address until the instance is terminated or the ENI is detached. If you have multiple IPv6 addresses associated with an ENI and you enable a primary IPv6 address, the first IPv6 address associated with the ENI becomes the primary IPv6 address.", - "type": "boolean" - }, - "GroupSet": { - "description": "A list of security group IDs associated with this network interface.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "description": "Network interface id.", - "type": "string" - }, - "InterfaceType": { - "description": "Indicates the type of network interface.", - "type": "string" - }, - "Ipv4PrefixCount": { - "description": "The number of IPv4 prefixes to assign to a network interface. When you specify a number of IPv4 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /28 prefixes. You can't specify a count of IPv4 prefixes if you've specified one of the following: specific IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses.", - "type": "integer" - }, - "Ipv4Prefixes": { - "description": "Assigns a list of IPv4 prefixes to the network interface. If you want EC2 to automatically assign IPv4 prefixes, use the Ipv4PrefixCount property and do not specify this property. Presently, only /28 prefixes are supported. You can't specify IPv4 prefixes if you've specified one of the following: a count of IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Ipv4PrefixSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "description": "The number of IPv6 addresses to assign to a network interface. Amazon EC2 automatically selects the IPv6 addresses from the subnet range. To specify specific IPv6 addresses, use the Ipv6Addresses property and don't specify this property.", - "type": "integer" - }, - "Ipv6Addresses": { - "description": "One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet to associate with the network interface. If you're specifying a number of IPv6 addresses, use the Ipv6AddressCount property and don't specify this property.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": true - }, - "Ipv6PrefixCount": { - "description": "The number of IPv6 prefixes to assign to a network interface. When you specify a number of IPv6 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /80 prefixes. You can't specify a count of IPv6 prefixes if you've specified one of the following: specific IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses.", - "type": "integer" - }, - "Ipv6Prefixes": { - "description": "Assigns a list of IPv6 prefixes to the network interface. If you want EC2 to automatically assign IPv6 prefixes, use the Ipv6PrefixCount property and do not specify this property. Presently, only /80 prefixes are supported. You can't specify IPv6 prefixes if you've specified one of the following: a count of IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Ipv6PrefixSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "PrimaryIpv6Address": { - "description": "The primary IPv6 address", - "type": "string" - }, - "PrimaryPrivateIpAddress": { - "description": "Returns the primary private IP address of the network interface.", - "type": "string" - }, - "PrivateIpAddress": { - "description": "Assigns a single private IP address to the network interface, which is used as the primary private IP address. If you want to specify multiple private IP address, use the PrivateIpAddresses property. ", - "type": "string" - }, - "PrivateIpAddresses": { - "description": "Assigns a list of private IP addresses to the network interface. You can specify a primary private IP address by setting the value of the Primary property to true in the PrivateIpAddressSpecification property. If you want EC2 to automatically assign private IP addresses, use the SecondaryPrivateIpAddressCount property and do not specify this property.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "description": "The number of secondary private IPv4 addresses to assign to a network interface. When you specify a number of secondary IPv4 addresses, Amazon EC2 selects these IP addresses within the subnet's IPv4 CIDR range. You can't specify this option and specify more than one private IP address using privateIpAddresses", - "type": "integer" - }, - "SecondaryPrivateIpAddresses": { - "description": "Returns the secondary private IP addresses of the network interface.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "description": "Indicates whether traffic to or from the instance is validated.", - "type": "boolean" - }, - "SubnetId": { - "description": "The ID of the subnet to associate with the network interface.", - "type": "string" - }, - "Tags": { - "description": "An arbitrary set of tags (key-value pairs) for this network interface.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcId": { - "description": "The ID of the VPC", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/SecondaryPrivateIpAddresses", - "/properties/PrimaryPrivateIpAddress", - "/properties/PrimaryIpv6Address", - "/properties/VpcId" - ], - "required": [ - "SubnetId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2/networkinterface", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::NetworkInterface" -} +{ + "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/master/src/main/resources/schema/provider.definition.schema.v1.json", + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/PrivateIpAddresses", + "/properties/EnablePrimaryIpv6", + "/properties/ConnectionTrackingSpecification" + ], + "createOnlyProperties": [ + "/properties/PrivateIpAddress", + "/properties/InterfaceType", + "/properties/SubnetId" + ], + "definitions": { + "ConnectionTrackingSpecification": { + "additionalProperties": false, + "properties": { + "TcpEstablishedTimeout": { + "type": "integer" + }, + "UdpStreamTimeout": { + "type": "integer" + }, + "UdpTimeout": { + "type": "integer" + } + }, + "type": "object" + }, + "InstanceIpv6Address": { + "additionalProperties": false, + "properties": { + "Ipv6Address": { + "type": "string" + } + }, + "required": [ + "Ipv6Address" + ], + "type": "object" + }, + "Ipv4PrefixSpecification": { + "additionalProperties": false, + "properties": { + "Ipv4Prefix": { + "type": "string" + } + }, + "required": [ + "Ipv4Prefix" + ], + "type": "object" + }, + "Ipv6PrefixSpecification": { + "additionalProperties": false, + "properties": { + "Ipv6Prefix": { + "type": "string" + } + }, + "required": [ + "Ipv6Prefix" + ], + "type": "object" + }, + "PrivateIpAddressSpecification": { + "additionalProperties": false, + "properties": { + "Primary": { + "type": "boolean" + }, + "PrivateIpAddress": { + "type": "string" + } + }, + "required": [ + "PrivateIpAddress", + "Primary" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The AWS::EC2::NetworkInterface resource creates network interface", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkInterface", + "ec2:DescribeNetworkInterfaces", + "ec2:CreateTags", + "ec2:ModifyNetworkInterfaceAttribute", + "ec2:ModifyPublicIpDnsNameOptions" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeNetworkInterfaces", + "ec2:DeleteNetworkInterface" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeNetworkInterfaces" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeNetworkInterfaces" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeNetworkInterfaces", + "ec2:ModifyNetworkInterfaceAttribute", + "ec2:UnassignIpv6Addresses", + "ec2:AssignIpv6Addresses", + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:UnassignPrivateIpAddresses", + "ec2:AssignPrivateIpAddresses", + "ec2:ModifyPublicIpDnsNameOptions" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ConnectionTrackingSpecification": { + "$ref": "#/definitions/ConnectionTrackingSpecification" + }, + "Description": { + "description": "A description for the network interface.", + "type": "string" + }, + "EnablePrimaryIpv6": { + "description": "If you have instances or ENIs that rely on the IPv6 address not changing, to avoid disrupting traffic to instances or ENIs, you can enable a primary IPv6 address. Enable this option to automatically assign an IPv6 associated with the ENI attached to your instance to be the primary IPv6 address. When you enable an IPv6 address to be a primary IPv6, you cannot disable it. Traffic will be routed to the primary IPv6 address until the instance is terminated or the ENI is detached. If you have multiple IPv6 addresses associated with an ENI and you enable a primary IPv6 address, the first IPv6 address associated with the ENI becomes the primary IPv6 address.", + "type": "boolean" + }, + "GroupSet": { + "description": "A list of security group IDs associated with this network interface.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "description": "Network interface id.", + "type": "string" + }, + "InterfaceType": { + "description": "Indicates the type of network interface.", + "type": "string" + }, + "Ipv4PrefixCount": { + "description": "The number of IPv4 prefixes to assign to a network interface. When you specify a number of IPv4 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /28 prefixes. You can't specify a count of IPv4 prefixes if you've specified one of the following: specific IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses.", + "type": "integer" + }, + "Ipv4Prefixes": { + "description": "Assigns a list of IPv4 prefixes to the network interface. If you want EC2 to automatically assign IPv4 prefixes, use the Ipv4PrefixCount property and do not specify this property. Presently, only /28 prefixes are supported. You can't specify IPv4 prefixes if you've specified one of the following: a count of IPv4 prefixes, specific private IPv4 addresses, or a count of private IPv4 addresses.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Ipv4PrefixSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Ipv6AddressCount": { + "description": "The number of IPv6 addresses to assign to a network interface. Amazon EC2 automatically selects the IPv6 addresses from the subnet range. To specify specific IPv6 addresses, use the Ipv6Addresses property and don't specify this property.", + "type": "integer" + }, + "Ipv6Addresses": { + "description": "One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet to associate with the network interface. If you're specifying a number of IPv6 addresses, use the Ipv6AddressCount property and don't specify this property.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InstanceIpv6Address" + }, + "type": "array", + "uniqueItems": true + }, + "Ipv6PrefixCount": { + "description": "The number of IPv6 prefixes to assign to a network interface. When you specify a number of IPv6 prefixes, Amazon EC2 selects these prefixes from your existing subnet CIDR reservations, if available, or from free spaces in the subnet. By default, these will be /80 prefixes. You can't specify a count of IPv6 prefixes if you've specified one of the following: specific IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses.", + "type": "integer" + }, + "Ipv6Prefixes": { + "description": "Assigns a list of IPv6 prefixes to the network interface. If you want EC2 to automatically assign IPv6 prefixes, use the Ipv6PrefixCount property and do not specify this property. Presently, only /80 prefixes are supported. You can't specify IPv6 prefixes if you've specified one of the following: a count of IPv6 prefixes, specific IPv6 addresses, or a count of IPv6 addresses.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Ipv6PrefixSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "PrimaryIpv6Address": { + "description": "The primary IPv6 address", + "type": "string" + }, + "PrimaryPrivateIpAddress": { + "description": "Returns the primary private IP address of the network interface.", + "type": "string" + }, + "PrivateIpAddress": { + "description": "Assigns a single private IP address to the network interface, which is used as the primary private IP address. If you want to specify multiple private IP address, use the PrivateIpAddresses property. ", + "type": "string" + }, + "PrivateIpAddresses": { + "description": "Assigns a list of private IP addresses to the network interface. You can specify a primary private IP address by setting the value of the Primary property to true in the PrivateIpAddressSpecification property. If you want EC2 to automatically assign private IP addresses, use the SecondaryPrivateIpAddressCount property and do not specify this property.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PrivateIpAddressSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "SecondaryPrivateIpAddressCount": { + "description": "The number of secondary private IPv4 addresses to assign to a network interface. When you specify a number of secondary IPv4 addresses, Amazon EC2 selects these IP addresses within the subnet's IPv4 CIDR range. You can't specify this option and specify more than one private IP address using privateIpAddresses", + "type": "integer" + }, + "SecondaryPrivateIpAddresses": { + "description": "Returns the secondary private IP addresses of the network interface.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SourceDestCheck": { + "description": "Indicates whether traffic to or from the instance is validated.", + "type": "boolean" + }, + "SubnetId": { + "description": "The ID of the subnet to associate with the network interface.", + "type": "string" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this network interface.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "The ID of the VPC", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/SecondaryPrivateIpAddresses", + "/properties/PrimaryPrivateIpAddress", + "/properties/PrimaryIpv6Address", + "/properties/VpcId" + ], + "required": [ + "SubnetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2/networkinterface", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::NetworkInterface" +} diff --git a/src/schema/aws-ec2-networkinterfaceattachment.json b/src/schema/aws-ec2-networkinterfaceattachment.json index 6e534b67..78740cf5 100644 --- a/src/schema/aws-ec2-networkinterfaceattachment.json +++ b/src/schema/aws-ec2-networkinterfaceattachment.json @@ -1,117 +1,117 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/NetworkInterfaceId" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DeviceIndex", - "/properties/InstanceId", - "/properties/NetworkInterfaceId" - ], - "definitions": { - "EnaSrdSpecification": { - "additionalProperties": false, - "description": "ENA Express uses AWS Scalable Reliable Datagram (SRD) technology to increase the maximum bandwidth used per stream and minimize tail latency of network traffic between EC2 instances. With ENA Express, you can communicate between two EC2 instances in the same subnet within the same account, or in different accounts. Both sending and receiving instances must have ENA Express enabled.\n To improve the reliability of network packet delivery, ENA Express reorders network packets on the receiving end by default. However, some UDP-based applications are designed to handle network packets that are out of order to reduce the overhead for packet delivery at the network layer. When ENA Express is enabled, you can specify whether UDP network traffic uses it.", - "properties": { - "EnaSrdEnabled": { - "description": "Indicates whether ENA Express is enabled for the network interface.", - "type": "boolean" - }, - "EnaSrdUdpSpecification": { - "additionalProperties": false, - "description": "Configures ENA Express for UDP network traffic.", - "properties": { - "EnaSrdUdpEnabled": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "description": "Attaches an elastic network interface (ENI) to an Amazon EC2 instance. You can use this resource type to attach additional network interfaces to an instance without interruption.", - "handlers": { - "create": { - "permissions": [ - "ec2:AttachNetworkInterface", - "ec2:DescribeNetworkInterfaces", - "ec2:ModifyNetworkInterfaceAttribute" - ] - }, - "delete": { - "permissions": [ - "ec2:DetachNetworkInterface", - "ec2:DescribeNetworkInterfaces" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeNetworkInterfaces" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeNetworkInterfaces" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyNetworkInterfaceAttribute", - "ec2:DescribeNetworkInterfaces", - "ec2:AttachNetworkInterface", - "ec2:DetachNetworkInterface" - ] - } - }, - "primaryIdentifier": [ - "/properties/AttachmentId" - ], - "properties": { - "AttachmentId": { - "description": "", - "type": "string" - }, - "DeleteOnTermination": { - "default": true, - "description": "Whether to delete the network interface when the instance terminates. By default, this value is set to ``true``.", - "type": "boolean" - }, - "DeviceIndex": { - "description": "The network interface's position in the attachment order. For example, the first attached network interface has a ``DeviceIndex`` of 0.", - "type": "string" - }, - "EnaSrdSpecification": { - "$ref": "#/definitions/EnaSrdSpecification", - "description": "Configures ENA Express for the network interface that this action attaches to the instance." - }, - "InstanceId": { - "description": "The ID of the instance to which you will attach the ENI.", - "type": "string" - }, - "NetworkInterfaceId": { - "description": "The ID of the ENI that you want to attach.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AttachmentId" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "DeviceIndex", - "InstanceId", - "NetworkInterfaceId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::NetworkInterfaceAttachment" -} +{ + "additionalIdentifiers": [ + [ + "/properties/NetworkInterfaceId" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DeviceIndex", + "/properties/InstanceId", + "/properties/NetworkInterfaceId" + ], + "definitions": { + "EnaSrdSpecification": { + "additionalProperties": false, + "description": "ENA Express uses AWS Scalable Reliable Datagram (SRD) technology to increase the maximum bandwidth used per stream and minimize tail latency of network traffic between EC2 instances. With ENA Express, you can communicate between two EC2 instances in the same subnet within the same account, or in different accounts. Both sending and receiving instances must have ENA Express enabled.\n To improve the reliability of network packet delivery, ENA Express reorders network packets on the receiving end by default. However, some UDP-based applications are designed to handle network packets that are out of order to reduce the overhead for packet delivery at the network layer. When ENA Express is enabled, you can specify whether UDP network traffic uses it.", + "properties": { + "EnaSrdEnabled": { + "description": "Indicates whether ENA Express is enabled for the network interface.", + "type": "boolean" + }, + "EnaSrdUdpSpecification": { + "additionalProperties": false, + "description": "Configures ENA Express for UDP network traffic.", + "properties": { + "EnaSrdUdpEnabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "description": "Attaches an elastic network interface (ENI) to an Amazon EC2 instance. You can use this resource type to attach additional network interfaces to an instance without interruption.", + "handlers": { + "create": { + "permissions": [ + "ec2:AttachNetworkInterface", + "ec2:DescribeNetworkInterfaces", + "ec2:ModifyNetworkInterfaceAttribute" + ] + }, + "delete": { + "permissions": [ + "ec2:DetachNetworkInterface", + "ec2:DescribeNetworkInterfaces" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeNetworkInterfaces" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeNetworkInterfaces" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyNetworkInterfaceAttribute", + "ec2:DescribeNetworkInterfaces", + "ec2:AttachNetworkInterface", + "ec2:DetachNetworkInterface" + ] + } + }, + "primaryIdentifier": [ + "/properties/AttachmentId" + ], + "properties": { + "AttachmentId": { + "description": "", + "type": "string" + }, + "DeleteOnTermination": { + "default": true, + "description": "Whether to delete the network interface when the instance terminates. By default, this value is set to ``true``.", + "type": "boolean" + }, + "DeviceIndex": { + "description": "The network interface's position in the attachment order. For example, the first attached network interface has a ``DeviceIndex`` of 0.", + "type": "string" + }, + "EnaSrdSpecification": { + "$ref": "#/definitions/EnaSrdSpecification", + "description": "Configures ENA Express for the network interface that this action attaches to the instance." + }, + "InstanceId": { + "description": "The ID of the instance to which you will attach the ENI.", + "type": "string" + }, + "NetworkInterfaceId": { + "description": "The ID of the ENI that you want to attach.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AttachmentId" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "DeviceIndex", + "InstanceId", + "NetworkInterfaceId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::NetworkInterfaceAttachment" +} diff --git a/src/schema/aws-ec2-networkinterfacepermission.json b/src/schema/aws-ec2-networkinterfacepermission.json index 9dbe2d70..0f335ac6 100644 --- a/src/schema/aws-ec2-networkinterfacepermission.json +++ b/src/schema/aws-ec2-networkinterfacepermission.json @@ -1,35 +1,35 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AwsAccountId", - "/properties/Permission", - "/properties/NetworkInterfaceId" - ], - "description": "Resource Type definition for AWS::EC2::NetworkInterfacePermission", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AwsAccountId": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "NetworkInterfaceId": { - "type": "string" - }, - "Permission": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "AwsAccountId", - "NetworkInterfaceId", - "Permission" - ], - "typeName": "AWS::EC2::NetworkInterfacePermission" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/Permission", + "/properties/NetworkInterfaceId" + ], + "description": "Resource Type definition for AWS::EC2::NetworkInterfacePermission", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AwsAccountId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "NetworkInterfaceId": { + "type": "string" + }, + "Permission": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "AwsAccountId", + "NetworkInterfaceId", + "Permission" + ], + "typeName": "AWS::EC2::NetworkInterfacePermission" +} diff --git a/src/schema/aws-ec2-networkperformancemetricsubscription.json b/src/schema/aws-ec2-networkperformancemetricsubscription.json index 474fc59f..b2c25de1 100644 --- a/src/schema/aws-ec2-networkperformancemetricsubscription.json +++ b/src/schema/aws-ec2-networkperformancemetricsubscription.json @@ -1,70 +1,70 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Source", - "/properties/Destination", - "/properties/Metric", - "/properties/Statistic" - ], - "definitions": {}, - "description": "Resource Type definition for AWS::EC2::NetworkPerformanceMetricSubscription", - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeAwsNetworkPerformanceMetricSubscriptions", - "ec2:EnableAwsNetworkPerformanceMetricSubscription" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeAwsNetworkPerformanceMetricSubscriptions", - "ec2:DisableAwsNetworkPerformanceMetricSubscription" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeAwsNetworkPerformanceMetricSubscriptions" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeAwsNetworkPerformanceMetricSubscriptions" - ] - } - }, - "primaryIdentifier": [ - "/properties/Source", - "/properties/Destination", - "/properties/Metric", - "/properties/Statistic" - ], - "properties": { - "Destination": { - "description": "The target Region or Availability Zone for the metric to subscribe to.", - "type": "string" - }, - "Metric": { - "description": "The metric type to subscribe to.", - "type": "string" - }, - "Source": { - "description": "The starting Region or Availability Zone for metric to subscribe to.", - "type": "string" - }, - "Statistic": { - "description": "The statistic to subscribe to.", - "type": "string" - } - }, - "required": [ - "Source", - "Destination", - "Metric", - "Statistic" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::EC2::NetworkPerformanceMetricSubscription" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Source", + "/properties/Destination", + "/properties/Metric", + "/properties/Statistic" + ], + "definitions": {}, + "description": "Resource Type definition for AWS::EC2::NetworkPerformanceMetricSubscription", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeAwsNetworkPerformanceMetricSubscriptions", + "ec2:EnableAwsNetworkPerformanceMetricSubscription" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeAwsNetworkPerformanceMetricSubscriptions", + "ec2:DisableAwsNetworkPerformanceMetricSubscription" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeAwsNetworkPerformanceMetricSubscriptions" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeAwsNetworkPerformanceMetricSubscriptions" + ] + } + }, + "primaryIdentifier": [ + "/properties/Source", + "/properties/Destination", + "/properties/Metric", + "/properties/Statistic" + ], + "properties": { + "Destination": { + "description": "The target Region or Availability Zone for the metric to subscribe to.", + "type": "string" + }, + "Metric": { + "description": "The metric type to subscribe to.", + "type": "string" + }, + "Source": { + "description": "The starting Region or Availability Zone for metric to subscribe to.", + "type": "string" + }, + "Statistic": { + "description": "The statistic to subscribe to.", + "type": "string" + } + }, + "required": [ + "Source", + "Destination", + "Metric", + "Statistic" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::EC2::NetworkPerformanceMetricSubscription" +} diff --git a/src/schema/aws-ec2-placementgroup.json b/src/schema/aws-ec2-placementgroup.json index b7d1ff9f..be9698b3 100644 --- a/src/schema/aws-ec2-placementgroup.json +++ b/src/schema/aws-ec2-placementgroup.json @@ -1,104 +1,105 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Tags", - "/properties/Strategy", - "/properties/SpreadLevel", - "/properties/PartitionCount" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::PlacementGroup", - "handlers": { - "create": { - "permissions": [ - "ec2:CreatePlacementGroup", - "ec2:DescribePlacementGroups", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeletePlacementGroup", - "ec2:DescribePlacementGroups" - ] - }, - "list": { - "permissions": [ - "ec2:DescribePlacementGroups" - ] - }, - "read": { - "permissions": [ - "ec2:DescribePlacementGroups" - ] - } - }, - "primaryIdentifier": [ - "/properties/GroupName" - ], - "properties": { - "GroupName": { - "description": "The Group Name of Placement Group.", - "type": "string" - }, - "PartitionCount": { - "description": "The number of partitions. Valid only when **Strategy** is set to `partition`", - "type": "integer" - }, - "SpreadLevel": { - "description": "The Spread Level of Placement Group is an enum where it accepts either host or rack when strategy is spread", - "type": "string" - }, - "Strategy": { - "description": "The placement strategy.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/GroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:CreateTags" - ], - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::EC2::PlacementGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tags", + "/properties/Strategy", + "/properties/SpreadLevel", + "/properties/PartitionCount" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::PlacementGroup", + "handlers": { + "create": { + "permissions": [ + "ec2:CreatePlacementGroup", + "ec2:DescribePlacementGroups", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeletePlacementGroup", + "ec2:DescribePlacementGroups" + ] + }, + "list": { + "permissions": [ + "ec2:DescribePlacementGroups" + ] + }, + "read": { + "permissions": [ + "ec2:DescribePlacementGroups" + ] + } + }, + "primaryIdentifier": [ + "/properties/GroupName" + ], + "properties": { + "GroupName": { + "description": "The Group Name of Placement Group.", + "type": "string" + }, + "PartitionCount": { + "description": "The number of partitions. Valid only when **Strategy** is set to `partition`", + "type": "integer" + }, + "SpreadLevel": { + "description": "The Spread Level of Placement Group is an enum where it accepts either host or rack when strategy is spread", + "type": "string" + }, + "Strategy": { + "description": "The placement strategy.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/GroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::EC2::PlacementGroup" +} diff --git a/src/schema/aws-ec2-prefixlist.json b/src/schema/aws-ec2-prefixlist.json index a494e858..d2151f9c 100644 --- a/src/schema/aws-ec2-prefixlist.json +++ b/src/schema/aws-ec2-prefixlist.json @@ -1,156 +1,156 @@ -{ - "additionalProperties": false, - "definitions": { - "Entry": { - "additionalProperties": false, - "properties": { - "Cidr": { - "maxLength": 46, - "minLength": 1, - "type": "string" - }, - "Description": { - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Cidr" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "Resource schema of AWS::EC2::PrefixList Type", - "handlers": { - "create": { - "permissions": [ - "EC2:CreateManagedPrefixList", - "EC2:DescribeManagedPrefixLists", - "EC2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "EC2:DeleteManagedPrefixList", - "EC2:DescribeManagedPrefixLists" - ] - }, - "list": { - "permissions": [ - "EC2:DescribeManagedPrefixLists", - "EC2:GetManagedPrefixListEntries" - ] - }, - "read": { - "permissions": [ - "EC2:GetManagedPrefixListEntries", - "EC2:DescribeManagedPrefixLists" - ] - }, - "update": { - "permissions": [ - "EC2:DescribeManagedPrefixLists", - "EC2:GetManagedPrefixListEntries", - "EC2:ModifyManagedPrefixList", - "EC2:CreateTags", - "EC2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/PrefixListId" - ], - "properties": { - "AddressFamily": { - "description": "Ip Version of Prefix List.", - "enum": [ - "IPv4", - "IPv6" - ], - "type": "string" - }, - "Arn": { - "description": "The Amazon Resource Name (ARN) of the Prefix List.", - "type": "string" - }, - "Entries": { - "description": "Entries of Prefix List.", - "items": { - "$ref": "#/definitions/Entry" - }, - "type": "array" - }, - "MaxEntries": { - "description": "Max Entries of Prefix List.", - "minimum": 1, - "type": "integer" - }, - "OwnerId": { - "description": "Owner Id of Prefix List.", - "type": "string" - }, - "PrefixListId": { - "description": "Id of Prefix List.", - "type": "string" - }, - "PrefixListName": { - "description": "Name of Prefix List.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "Tags for Prefix List", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "Version": { - "description": "Version of Prefix List.", - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/PrefixListId", - "/properties/OwnerId", - "/properties/Version", - "/properties/Arn" - ], - "required": [ - "PrefixListName", - "AddressFamily" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "EC2:DeleteTags", - "EC2:CreateTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::PrefixList" -} +{ + "additionalProperties": false, + "definitions": { + "Entry": { + "additionalProperties": false, + "properties": { + "Cidr": { + "maxLength": 46, + "minLength": 1, + "type": "string" + }, + "Description": { + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Cidr" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema of AWS::EC2::PrefixList Type", + "handlers": { + "create": { + "permissions": [ + "EC2:CreateManagedPrefixList", + "EC2:DescribeManagedPrefixLists", + "EC2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "EC2:DeleteManagedPrefixList", + "EC2:DescribeManagedPrefixLists" + ] + }, + "list": { + "permissions": [ + "EC2:DescribeManagedPrefixLists", + "EC2:GetManagedPrefixListEntries" + ] + }, + "read": { + "permissions": [ + "EC2:GetManagedPrefixListEntries", + "EC2:DescribeManagedPrefixLists" + ] + }, + "update": { + "permissions": [ + "EC2:DescribeManagedPrefixLists", + "EC2:GetManagedPrefixListEntries", + "EC2:ModifyManagedPrefixList", + "EC2:CreateTags", + "EC2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/PrefixListId" + ], + "properties": { + "AddressFamily": { + "description": "Ip Version of Prefix List.", + "enum": [ + "IPv4", + "IPv6" + ], + "type": "string" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the Prefix List.", + "type": "string" + }, + "Entries": { + "description": "Entries of Prefix List.", + "items": { + "$ref": "#/definitions/Entry" + }, + "type": "array" + }, + "MaxEntries": { + "description": "Max Entries of Prefix List.", + "minimum": 1, + "type": "integer" + }, + "OwnerId": { + "description": "Owner Id of Prefix List.", + "type": "string" + }, + "PrefixListId": { + "description": "Id of Prefix List.", + "type": "string" + }, + "PrefixListName": { + "description": "Name of Prefix List.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "Tags for Prefix List", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Version": { + "description": "Version of Prefix List.", + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/PrefixListId", + "/properties/OwnerId", + "/properties/Version", + "/properties/Arn" + ], + "required": [ + "PrefixListName", + "AddressFamily" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "EC2:DeleteTags", + "EC2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::PrefixList" +} diff --git a/src/schema/aws-ec2-route.json b/src/schema/aws-ec2-route.json index f1340338..beb98a9c 100644 --- a/src/schema/aws-ec2-route.json +++ b/src/schema/aws-ec2-route.json @@ -1,133 +1,133 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RouteTableId", - "/properties/DestinationCidrBlock", - "/properties/DestinationIpv6CidrBlock", - "/properties/DestinationPrefixListId" - ], - "description": "Specifies a route in a route table. For more information, see [Routes](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html#route-table-routes) in the *Amazon VPC User Guide*.\n You must specify either a destination CIDR block or prefix list ID. You must also specify exactly one of the resources as the target.\n If you create a route that references a transit gateway in the same template where you create the transit gateway, you must declare a dependency on the transit gateway attachment. The route table cannot use the transit gateway until it has successfully attached to the VPC. Add a [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) in the ``AWS::EC2::Route`` resource to explicitly declare a dependency on the ``AWS::EC2::TransitGatewayAttachment`` resource.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateRoute", - "ec2:DescribeRouteTables", - "ec2:DescribeNetworkInterfaces" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteRoute", - "ec2:DescribeRouteTables" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "RouteTableId": { - "$ref": "resource-schema.json#/properties/RouteTableId" - } - }, - "required": [ - "RouteTableId" - ] - }, - "permissions": [ - "ec2:DescribeRouteTables" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeRouteTables" - ] - }, - "update": { - "permissions": [ - "ec2:ReplaceRoute", - "ec2:DescribeRouteTables", - "ec2:DescribeNetworkInterfaces" - ] - } - }, - "primaryIdentifier": [ - "/properties/RouteTableId", - "/properties/CidrBlock" - ], - "properties": { - "CarrierGatewayId": { - "description": "The ID of the carrier gateway.\n You can only use this option when the VPC contains a subnet which is associated with a Wavelength Zone.", - "type": "string" - }, - "CidrBlock": { - "description": "", - "type": "string" - }, - "CoreNetworkArn": { - "description": "The Amazon Resource Name (ARN) of the core network.", - "type": "string" - }, - "DestinationCidrBlock": { - "description": "The IPv4 CIDR address block used for the destination match. Routing decisions are based on the most specific match. We modify the specified CIDR block to its canonical form; for example, if you specify ``100.68.0.18/18``, we modify it to ``100.68.0.0/18``.", - "type": "string" - }, - "DestinationIpv6CidrBlock": { - "description": "The IPv6 CIDR block used for the destination match. Routing decisions are based on the most specific match.", - "type": "string" - }, - "DestinationPrefixListId": { - "description": "The ID of a prefix list used for the destination match.", - "type": "string" - }, - "EgressOnlyInternetGatewayId": { - "description": "[IPv6 traffic only] The ID of an egress-only internet gateway.", - "type": "string" - }, - "GatewayId": { - "description": "The ID of an internet gateway or virtual private gateway attached to your VPC.", - "type": "string" - }, - "InstanceId": { - "description": "The ID of a NAT instance in your VPC. The operation fails if you specify an instance ID unless exactly one network interface is attached.", - "type": "string" - }, - "LocalGatewayId": { - "description": "The ID of the local gateway.", - "type": "string" - }, - "NatGatewayId": { - "description": "[IPv4 traffic only] The ID of a NAT gateway.", - "type": "string" - }, - "NetworkInterfaceId": { - "description": "The ID of a network interface.", - "type": "string" - }, - "RouteTableId": { - "description": "The ID of the route table for the route.", - "type": "string" - }, - "TransitGatewayId": { - "description": "The ID of a transit gateway.", - "type": "string" - }, - "VpcEndpointId": { - "description": "The ID of a VPC endpoint. Supported for Gateway Load Balancer endpoints only.", - "type": "string" - }, - "VpcPeeringConnectionId": { - "description": "The ID of a VPC peering connection.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CidrBlock" - ], - "required": [ - "RouteTableId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2", - "tagging": { - "taggable": false - }, - "typeName": "AWS::EC2::Route" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RouteTableId", + "/properties/DestinationCidrBlock", + "/properties/DestinationIpv6CidrBlock", + "/properties/DestinationPrefixListId" + ], + "description": "Specifies a route in a route table. For more information, see [Routes](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html#route-table-routes) in the *Amazon VPC User Guide*.\n You must specify either a destination CIDR block or prefix list ID. You must also specify exactly one of the resources as the target.\n If you create a route that references a transit gateway in the same template where you create the transit gateway, you must declare a dependency on the transit gateway attachment. The route table cannot use the transit gateway until it has successfully attached to the VPC. Add a [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) in the ``AWS::EC2::Route`` resource to explicitly declare a dependency on the ``AWS::EC2::TransitGatewayAttachment`` resource.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateRoute", + "ec2:DescribeRouteTables", + "ec2:DescribeNetworkInterfaces" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteRoute", + "ec2:DescribeRouteTables" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "RouteTableId": { + "$ref": "resource-schema.json#/properties/RouteTableId" + } + }, + "required": [ + "RouteTableId" + ] + }, + "permissions": [ + "ec2:DescribeRouteTables" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeRouteTables" + ] + }, + "update": { + "permissions": [ + "ec2:ReplaceRoute", + "ec2:DescribeRouteTables", + "ec2:DescribeNetworkInterfaces" + ] + } + }, + "primaryIdentifier": [ + "/properties/RouteTableId", + "/properties/CidrBlock" + ], + "properties": { + "CarrierGatewayId": { + "description": "The ID of the carrier gateway.\n You can only use this option when the VPC contains a subnet which is associated with a Wavelength Zone.", + "type": "string" + }, + "CidrBlock": { + "description": "", + "type": "string" + }, + "CoreNetworkArn": { + "description": "The Amazon Resource Name (ARN) of the core network.", + "type": "string" + }, + "DestinationCidrBlock": { + "description": "The IPv4 CIDR address block used for the destination match. Routing decisions are based on the most specific match. We modify the specified CIDR block to its canonical form; for example, if you specify ``100.68.0.18/18``, we modify it to ``100.68.0.0/18``.", + "type": "string" + }, + "DestinationIpv6CidrBlock": { + "description": "The IPv6 CIDR block used for the destination match. Routing decisions are based on the most specific match.", + "type": "string" + }, + "DestinationPrefixListId": { + "description": "The ID of a prefix list used for the destination match.", + "type": "string" + }, + "EgressOnlyInternetGatewayId": { + "description": "[IPv6 traffic only] The ID of an egress-only internet gateway.", + "type": "string" + }, + "GatewayId": { + "description": "The ID of an internet gateway or virtual private gateway attached to your VPC.", + "type": "string" + }, + "InstanceId": { + "description": "The ID of a NAT instance in your VPC. The operation fails if you specify an instance ID unless exactly one network interface is attached.", + "type": "string" + }, + "LocalGatewayId": { + "description": "The ID of the local gateway.", + "type": "string" + }, + "NatGatewayId": { + "description": "[IPv4 traffic only] The ID of a NAT gateway.", + "type": "string" + }, + "NetworkInterfaceId": { + "description": "The ID of a network interface.", + "type": "string" + }, + "RouteTableId": { + "description": "The ID of the route table for the route.", + "type": "string" + }, + "TransitGatewayId": { + "description": "The ID of a transit gateway.", + "type": "string" + }, + "VpcEndpointId": { + "description": "The ID of a VPC endpoint. Supported for Gateway Load Balancer endpoints only.", + "type": "string" + }, + "VpcPeeringConnectionId": { + "description": "The ID of a VPC peering connection.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CidrBlock" + ], + "required": [ + "RouteTableId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2", + "tagging": { + "taggable": false + }, + "typeName": "AWS::EC2::Route" +} diff --git a/src/schema/aws-ec2-routeserver.json b/src/schema/aws-ec2-routeserver.json new file mode 100644 index 00000000..83cd7bbb --- /dev/null +++ b/src/schema/aws-ec2-routeserver.json @@ -0,0 +1,144 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AmazonSideAsn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "VPC Route Server", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateRouteServer", + "ec2:CreateTags", + "ec2:DescribeRouteServers", + "sns:CreateTopic" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeTags", + "ec2:DescribeRouteServers", + "ec2:DeleteRouteServer", + "ec2:DeleteTags", + "sns:DeleteTopic" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTags", + "ec2:DescribeRouteServers" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeRouteServers", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeRouteServers", + "ec2:DescribeTags", + "ec2:ModifyRouteServer" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonSideAsn": { + "description": "The Amazon-side ASN of the Route Server.", + "format": "int64", + "maximum": 4294967294, + "minimum": 1, + "type": "integer" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the Route Server.", + "type": "string" + }, + "Id": { + "description": "The ID of the Route Server.", + "type": "string" + }, + "PersistRoutes": { + "description": "Whether to enable persistent routes", + "enum": [ + "enable", + "disable" + ], + "type": "string" + }, + "PersistRoutesDuration": { + "description": "The duration of persistent routes in minutes", + "format": "int64", + "maximum": 5, + "minimum": 0, + "type": "integer" + }, + "SnsNotificationsEnabled": { + "description": "Whether to enable SNS notifications", + "type": "boolean" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id" + ], + "required": [ + "AmazonSideAsn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DescribeTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::RouteServer", + "writeOnlyProperties": [ + "/properties/PersistRoutesDuration" + ] +} diff --git a/src/schema/aws-ec2-routeserverassociation.json b/src/schema/aws-ec2-routeserverassociation.json new file mode 100644 index 00000000..b14bf6c6 --- /dev/null +++ b/src/schema/aws-ec2-routeserverassociation.json @@ -0,0 +1,60 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RouteServerId", + "/properties/VpcId" + ], + "definitions": {}, + "description": "VPC Route Server Association", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateRouteServer", + "ec2:GetRouteServerAssociations" + ] + }, + "delete": { + "permissions": [ + "ec2:GetRouteServerAssociations", + "ec2:DisassociateRouteServer" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeRouteServers", + "ec2:GetRouteServerAssociations" + ] + }, + "read": { + "permissions": [ + "ec2:GetRouteServerAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/RouteServerId", + "/properties/VpcId" + ], + "properties": { + "RouteServerId": { + "description": "Route Server ID", + "type": "string" + }, + "VpcId": { + "description": "VPC ID", + "type": "string" + } + }, + "required": [ + "RouteServerId", + "VpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::RouteServerAssociation" +} diff --git a/src/schema/aws-ec2-routeserverendpoint.json b/src/schema/aws-ec2-routeserverendpoint.json new file mode 100644 index 00000000..edad254c --- /dev/null +++ b/src/schema/aws-ec2-routeserverendpoint.json @@ -0,0 +1,147 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RouteServerId", + "/properties/SubnetId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "VPC Route Server Endpoint", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateRouteServerEndpoint", + "ec2:CreateTags", + "ec2:DescribeRouteServerEndpoints", + "ec2:CreateNetworkInterface", + "ec2:CreateNetworkInterfacePermission", + "ec2:CreateSecurityGroup", + "ec2:DescribeSecurityGroups", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeTags", + "ec2:DescribeRouteServerEndpoints", + "ec2:DeleteRouteServerEndpoint", + "ec2:DeleteTags", + "ec2:DeleteNetworkInterface", + "ec2:DeleteSecurityGroup", + "ec2:DescribeSecurityGroups", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTags", + "ec2:DescribeRouteServerEndpoints" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeRouteServerEndpoints", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeRouteServerEndpoints", + "ec2:DescribeTags", + "ec2:ModifyRouteServerEndpoint" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the Route Server Endpoint.", + "type": "string" + }, + "EniAddress": { + "description": "Elastic Network Interface IP address owned by the Route Server Endpoint", + "type": "string" + }, + "EniId": { + "description": "Elastic Network Interface ID owned by the Route Server Endpoint", + "type": "string" + }, + "Id": { + "description": "The ID of the Route Server Endpoint.", + "type": "string" + }, + "RouteServerId": { + "description": "Route Server ID", + "type": "string" + }, + "SubnetId": { + "description": "Subnet ID", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "VPC ID", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/EniId", + "/properties/EniAddress", + "/properties/VpcId" + ], + "required": [ + "RouteServerId", + "SubnetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DescribeTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::RouteServerEndpoint" +} diff --git a/src/schema/aws-ec2-routeserverpeer.json b/src/schema/aws-ec2-routeserverpeer.json new file mode 100644 index 00000000..59b22868 --- /dev/null +++ b/src/schema/aws-ec2-routeserverpeer.json @@ -0,0 +1,177 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RouteServerEndpointId", + "/properties/PeerAddress", + "/properties/BgpOptions" + ], + "definitions": { + "BgpOptions": { + "additionalProperties": false, + "description": "BGP Options", + "properties": { + "PeerAsn": { + "description": "BGP ASN of the Route Server Peer", + "format": "int64", + "maximum": 4294967294, + "minimum": 1, + "type": "integer" + }, + "PeerLivenessDetection": { + "description": "BGP Liveness Detection", + "enum": [ + "bfd", + "bgp-keepalive" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "VPC Route Server Peer", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateRouteServerPeer", + "ec2:CreateTags", + "ec2:DescribeRouteServerPeers", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeTags", + "ec2:DescribeRouteServerPeers", + "ec2:DeleteRouteServerPeer", + "ec2:DeleteTags", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTags", + "ec2:DescribeRouteServerPeers" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeRouteServerPeers", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeRouteServerPeers", + "ec2:DescribeTags", + "ec2:ModifyRouteServerPeer" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the Route Server Peer.", + "type": "string" + }, + "BgpOptions": { + "$ref": "#/definitions/BgpOptions" + }, + "EndpointEniAddress": { + "description": "Elastic Network Interface IP address owned by the Route Server Endpoint", + "type": "string" + }, + "EndpointEniId": { + "description": "Elastic Network Interface ID owned by the Route Server Endpoint", + "type": "string" + }, + "Id": { + "description": "The ID of the Route Server Peer.", + "type": "string" + }, + "PeerAddress": { + "description": "IP address of the Route Server Peer", + "type": "string" + }, + "RouteServerEndpointId": { + "description": "Route Server Endpoint ID", + "type": "string" + }, + "RouteServerId": { + "description": "Route Server ID", + "type": "string" + }, + "SubnetId": { + "description": "Subnet ID", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "VPC ID", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/RouteServerId", + "/properties/EndpointEniId", + "/properties/EndpointEniAddress", + "/properties/SubnetId", + "/properties/VpcId" + ], + "required": [ + "RouteServerEndpointId", + "PeerAddress", + "BgpOptions" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DescribeTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::RouteServerPeer" +} diff --git a/src/schema/aws-ec2-routeserverpropagation.json b/src/schema/aws-ec2-routeserverpropagation.json new file mode 100644 index 00000000..4224e02f --- /dev/null +++ b/src/schema/aws-ec2-routeserverpropagation.json @@ -0,0 +1,60 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RouteServerId", + "/properties/RouteTableId" + ], + "definitions": {}, + "description": "VPC Route Server Propagation", + "handlers": { + "create": { + "permissions": [ + "ec2:EnableRouteServerPropagation", + "ec2:GetRouteServerPropagations" + ] + }, + "delete": { + "permissions": [ + "ec2:GetRouteServerPropagations", + "ec2:DisableRouteServerPropagation" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeRouteServers", + "ec2:GetRouteServerPropagations" + ] + }, + "read": { + "permissions": [ + "ec2:GetRouteServerPropagations" + ] + } + }, + "primaryIdentifier": [ + "/properties/RouteServerId", + "/properties/RouteTableId" + ], + "properties": { + "RouteServerId": { + "description": "Route Server ID", + "type": "string" + }, + "RouteTableId": { + "description": "Route Table ID", + "type": "string" + } + }, + "required": [ + "RouteServerId", + "RouteTableId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::RouteServerPropagation" +} diff --git a/src/schema/aws-ec2-routetable.json b/src/schema/aws-ec2-routetable.json index 49adb650..4e49e7c1 100644 --- a/src/schema/aws-ec2-routetable.json +++ b/src/schema/aws-ec2-routetable.json @@ -1,97 +1,101 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/VpcId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "properties": { - "Key": { - "description": "The tag key.", - "type": "string" - }, - "Value": { - "description": "The tag value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Specifies a route table for the specified VPC. After you create a route table, you can add routes and associate the table with a subnet.\n For more information, see [Route tables](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) in the *Amazon VPC User Guide*.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateRouteTable", - "ec2:CreateTags", - "ec2:DescribeRouteTables" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeRouteTables", - "ec2:DeleteRouteTable" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeRouteTables" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeRouteTables" - ] - }, - "update": { - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeRouteTables" - ] - } - }, - "primaryIdentifier": [ - "/properties/RouteTableId" - ], - "properties": { - "RouteTableId": { - "description": "", - "type": "string" - }, - "Tags": { - "description": "Any tags assigned to the route table.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcId": { - "description": "The ID of the VPC.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/RouteTableId" - ], - "required": [ - "VpcId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::RouteTable" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a route table for the specified VPC. After you create a route table, you can add routes and associate the table with a subnet.\n For more information, see [Route tables](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) in the *Amazon VPC User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateRouteTable", + "ec2:CreateTags", + "ec2:DescribeRouteTables" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeRouteTables", + "ec2:DeleteRouteTable" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeRouteTables" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeRouteTables" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeRouteTables" + ] + } + }, + "primaryIdentifier": [ + "/properties/RouteTableId" + ], + "properties": { + "RouteTableId": { + "description": "", + "type": "string" + }, + "Tags": { + "description": "Any tags assigned to the route table.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/RouteTableId" + ], + "required": [ + "VpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::RouteTable" +} diff --git a/src/schema/aws-ec2-securitygroup.json b/src/schema/aws-ec2-securitygroup.json index 64c95934..a4f39c2b 100644 --- a/src/schema/aws-ec2-securitygroup.json +++ b/src/schema/aws-ec2-securitygroup.json @@ -1,225 +1,225 @@ -{ - "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/master/src/main/resources/schema/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GroupDescription", - "/properties/GroupName", - "/properties/VpcId" - ], - "definitions": { - "Egress": { - "additionalProperties": false, - "properties": { - "CidrIp": { - "type": "string" - }, - "CidrIpv6": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "DestinationPrefixListId": { - "type": "string" - }, - "DestinationSecurityGroupId": { - "type": "string" - }, - "FromPort": { - "type": "integer" - }, - "IpProtocol": { - "type": "string" - }, - "ToPort": { - "type": "integer" - } - }, - "required": [ - "IpProtocol" - ], - "type": "object" - }, - "Ingress": { - "additionalProperties": false, - "properties": { - "CidrIp": { - "type": "string" - }, - "CidrIpv6": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "FromPort": { - "type": "integer" - }, - "IpProtocol": { - "type": "string" - }, - "SourcePrefixListId": { - "type": "string" - }, - "SourceSecurityGroupId": { - "type": "string" - }, - "SourceSecurityGroupName": { - "type": "string" - }, - "SourceSecurityGroupOwnerId": { - "type": "string" - }, - "ToPort": { - "type": "integer" - } - }, - "required": [ - "IpProtocol" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "deprecatedProperties": [ - "/properties/SecurityGroupEgress/*/SourceSecurityGroupId" - ], - "description": "Resource Type definition for AWS::EC2::SecurityGroup", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateSecurityGroup", - "ec2:DescribeSecurityGroups", - "ec2:RevokeSecurityGroupEgress", - "ec2:AuthorizeSecurityGroupEgress", - "ec2:AuthorizeSecurityGroupIngress", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeSecurityGroups", - "ec2:DeleteSecurityGroup", - "ec2:DescribeInstances" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeSecurityGroups" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeSecurityGroups" - ] - }, - "update": { - "permissions": [ - "ec2:RevokeSecurityGroupEgress", - "ec2:RevokeSecurityGroupIngress", - "ec2:DescribeSecurityGroups", - "ec2:AuthorizeSecurityGroupEgress", - "ec2:AuthorizeSecurityGroupIngress", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "GroupDescription": { - "description": "A description for the security group.", - "type": "string" - }, - "GroupId": { - "description": "The group ID of the specified security group.", - "type": "string" - }, - "GroupName": { - "description": "The name of the security group.", - "type": "string" - }, - "Id": { - "description": "The group name or group ID depending on whether the SG is created in default or specific VPC", - "type": "string" - }, - "SecurityGroupEgress": { - "description": "[VPC only] The outbound rules associated with the security group. There is a short interruption during which you cannot connect to the security group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Egress" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroupIngress": { - "description": "The inbound rules associated with the security group. There is a short interruption during which you cannot connect to the security group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Ingress" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "description": "Any tags assigned to the security group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcId": { - "description": "The ID of the VPC for the security group.", - "type": "string" - } - }, - "propertyTransform": { - "/properties/SecurityGroupEgress/*/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", - "/properties/SecurityGroupEgress/*/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", - "/properties/SecurityGroupEgress/*/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)", - "/properties/SecurityGroupIngress/*/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", - "/properties/SecurityGroupIngress/*/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", - "/properties/SecurityGroupIngress/*/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/GroupId" - ], - "required": [ - "GroupDescription" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::SecurityGroup", - "writeOnlyProperties": [ - "/properties/SecurityGroupIngress/*/SourceSecurityGroupName" - ] -} +{ + "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/master/src/main/resources/schema/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GroupDescription", + "/properties/GroupName", + "/properties/VpcId" + ], + "definitions": { + "Egress": { + "additionalProperties": false, + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "type": "integer" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "type": "integer" + } + }, + "required": [ + "IpProtocol" + ], + "type": "object" + }, + "Ingress": { + "additionalProperties": false, + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "type": "integer" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "type": "integer" + } + }, + "required": [ + "IpProtocol" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/SecurityGroupEgress/*/SourceSecurityGroupId" + ], + "description": "Resource Type definition for AWS::EC2::SecurityGroup", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateSecurityGroup", + "ec2:DescribeSecurityGroups", + "ec2:RevokeSecurityGroupEgress", + "ec2:AuthorizeSecurityGroupEgress", + "ec2:AuthorizeSecurityGroupIngress", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DeleteSecurityGroup", + "ec2:DescribeInstances" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroups" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups" + ] + }, + "update": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:RevokeSecurityGroupIngress", + "ec2:DescribeSecurityGroups", + "ec2:AuthorizeSecurityGroupEgress", + "ec2:AuthorizeSecurityGroupIngress", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "GroupDescription": { + "description": "A description for the security group.", + "type": "string" + }, + "GroupId": { + "description": "The group ID of the specified security group.", + "type": "string" + }, + "GroupName": { + "description": "The name of the security group.", + "type": "string" + }, + "Id": { + "description": "The group name or group ID depending on whether the SG is created in default or specific VPC", + "type": "string" + }, + "SecurityGroupEgress": { + "description": "[VPC only] The outbound rules associated with the security group. There is a short interruption during which you cannot connect to the security group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Egress" + }, + "type": "array", + "uniqueItems": false + }, + "SecurityGroupIngress": { + "description": "The inbound rules associated with the security group. There is a short interruption during which you cannot connect to the security group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Ingress" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "description": "Any tags assigned to the security group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "The ID of the VPC for the security group.", + "type": "string" + } + }, + "propertyTransform": { + "/properties/SecurityGroupEgress/*/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", + "/properties/SecurityGroupEgress/*/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", + "/properties/SecurityGroupEgress/*/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)", + "/properties/SecurityGroupIngress/*/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", + "/properties/SecurityGroupIngress/*/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", + "/properties/SecurityGroupIngress/*/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/GroupId" + ], + "required": [ + "GroupDescription" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::SecurityGroup", + "writeOnlyProperties": [ + "/properties/SecurityGroupIngress/*/SourceSecurityGroupName" + ] +} diff --git a/src/schema/aws-ec2-securitygroupegress.json b/src/schema/aws-ec2-securitygroupegress.json index 4d90ed32..4a164bd0 100644 --- a/src/schema/aws-ec2-securitygroupegress.json +++ b/src/schema/aws-ec2-securitygroupegress.json @@ -1,109 +1,109 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/IpProtocol", - "/properties/DestinationSecurityGroupId", - "/properties/ToPort", - "/properties/CidrIp", - "/properties/FromPort", - "/properties/GroupId", - "/properties/CidrIpv6", - "/properties/DestinationPrefixListId" - ], - "description": "Adds the specified outbound (egress) rule to a security group.\n An outbound rule permits instances to send traffic to the specified IPv4 or IPv6 address range, the IP addresses that are specified by a prefix list, or the instances that are associated with a destination security group. For more information, see [Security group rules](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html).\n You must specify exactly one of the following destinations: an IPv4 address range, an IPv6 address range, a prefix list, or a security group.\n You must specify a protocol for each rule (for example, TCP). If the protocol is TCP or UDP, you must also specify a port or port range. If the protocol is ICMP or ICMPv6, you must also specify the ICMP/ICMPv6 type and code. To specify all types or all codes, use -1.\n Rule changes are propagated to instances associated with the security group as quickly as possible. However, a small delay might occur.", - "handlers": { - "create": { - "permissions": [ - "ec2:AuthorizeSecurityGroupEgress", - "ec2:RevokeSecurityGroupEgress", - "ec2:DescribeSecurityGroupRules" - ] - }, - "delete": { - "permissions": [ - "ec2:RevokeSecurityGroupEgress", - "ec2:DescribeSecurityGroupRules" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeSecurityGroupRules" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeSecurityGroupRules" - ] - }, - "update": { - "permissions": [ - "ec2:UpdateSecurityGroupRuleDescriptionsEgress" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CidrIp": { - "description": "The IPv4 address range, in CIDR format.\n You must specify exactly one of the following: ``CidrIp``, ``CidrIpv6``, ``DestinationPrefixListId``, or ``DestinationSecurityGroupId``.\n For examples of rules that you can add to security groups for specific access scenarios, see [Security group rules for different use cases](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules-reference.html) in the *User Guide*.", - "type": "string" - }, - "CidrIpv6": { - "description": "The IPv6 address range, in CIDR format.\n You must specify exactly one of the following: ``CidrIp``, ``CidrIpv6``, ``DestinationPrefixListId``, or ``DestinationSecurityGroupId``.\n For examples of rules that you can add to security groups for specific access scenarios, see [Security group rules for different use cases](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules-reference.html) in the *User Guide*.", - "type": "string" - }, - "Description": { - "description": "The description of an egress (outbound) security group rule.\n Constraints: Up to 255 characters in length. Allowed characters are a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=;{}!$*", - "type": "string" - }, - "DestinationPrefixListId": { - "description": "The prefix list IDs for an AWS service. This is the AWS service to access through a VPC endpoint from instances associated with the security group.\n You must specify exactly one of the following: ``CidrIp``, ``CidrIpv6``, ``DestinationPrefixListId``, or ``DestinationSecurityGroupId``.", - "type": "string" - }, - "DestinationSecurityGroupId": { - "description": "The ID of the security group.\n You must specify exactly one of the following: ``CidrIp``, ``CidrIpv6``, ``DestinationPrefixListId``, or ``DestinationSecurityGroupId``.", - "type": "string" - }, - "FromPort": { - "description": "If the protocol is TCP or UDP, this is the start of the port range. If the protocol is ICMP or ICMPv6, this is the ICMP type or -1 (all ICMP types).", - "type": "integer" - }, - "GroupId": { - "description": "The ID of the security group. You must specify either the security group ID or the security group name in the request. For security groups in a nondefault VPC, you must specify the security group ID.", - "type": "string" - }, - "Id": { - "description": "", - "type": "string" - }, - "IpProtocol": { - "description": "The IP protocol name (``tcp``, ``udp``, ``icmp``, ``icmpv6``) or number (see [Protocol Numbers](https://docs.aws.amazon.com/http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)).\n Use ``-1`` to specify all protocols. When authorizing security group rules, specifying ``-1`` or a protocol number other than ``tcp``, ``udp``, ``icmp``, or ``icmpv6`` allows traffic on all ports, regardless of any port range you specify. For ``tcp``, ``udp``, and ``icmp``, you must specify a port range. For ``icmpv6``, the port range is optional; if you omit the port range, traffic for all types and codes is allowed.", - "type": "string" - }, - "ToPort": { - "description": "If the protocol is TCP or UDP, this is the end of the port range. If the protocol is ICMP or ICMPv6, this is the ICMP code or -1 (all ICMP codes). If the start port is -1 (all ICMP types), then the end port must be -1 (all ICMP codes).", - "type": "integer" - } - }, - "propertyTransform": { - "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", - "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", - "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "IpProtocol", - "GroupId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::SecurityGroupEgress" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "description": "Adds the specified outbound (egress) rule to a security group.\n An outbound rule permits instances to send traffic to the specified IPv4 or IPv6 address range, the IP addresses that are specified by a prefix list, or the instances that are associated with a destination security group. For more information, see [Security group rules](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html).\n You must specify exactly one of the following destinations: an IPv4 address range, an IPv6 address range, a prefix list, or a security group.\n You must specify a protocol for each rule (for example, TCP). If the protocol is TCP or UDP, you must also specify a port or port range. If the protocol is ICMP or ICMPv6, you must also specify the ICMP/ICMPv6 type and code. To specify all types or all codes, use -1.\n Rule changes are propagated to instances associated with the security group as quickly as possible. However, a small delay might occur.", + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "description": "The IPv4 address range, in CIDR format.\n You must specify exactly one of the following: ``CidrIp``, ``CidrIpv6``, ``DestinationPrefixListId``, or ``DestinationSecurityGroupId``.\n For examples of rules that you can add to security groups for specific access scenarios, see [Security group rules for different use cases](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules-reference.html) in the *User Guide*.", + "type": "string" + }, + "CidrIpv6": { + "description": "The IPv6 address range, in CIDR format.\n You must specify exactly one of the following: ``CidrIp``, ``CidrIpv6``, ``DestinationPrefixListId``, or ``DestinationSecurityGroupId``.\n For examples of rules that you can add to security groups for specific access scenarios, see [Security group rules for different use cases](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules-reference.html) in the *User Guide*.", + "type": "string" + }, + "Description": { + "description": "The description of an egress (outbound) security group rule.\n Constraints: Up to 255 characters in length. Allowed characters are a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=;{}!$*", + "type": "string" + }, + "DestinationPrefixListId": { + "description": "The prefix list IDs for an AWS service. This is the AWS service to access through a VPC endpoint from instances associated with the security group.\n You must specify exactly one of the following: ``CidrIp``, ``CidrIpv6``, ``DestinationPrefixListId``, or ``DestinationSecurityGroupId``.", + "type": "string" + }, + "DestinationSecurityGroupId": { + "description": "The ID of the security group.\n You must specify exactly one of the following: ``CidrIp``, ``CidrIpv6``, ``DestinationPrefixListId``, or ``DestinationSecurityGroupId``.", + "type": "string" + }, + "FromPort": { + "description": "If the protocol is TCP or UDP, this is the start of the port range. If the protocol is ICMP or ICMPv6, this is the ICMP type or -1 (all ICMP types).", + "type": "integer" + }, + "GroupId": { + "description": "The ID of the security group. You must specify either the security group ID or the security group name in the request. For security groups in a nondefault VPC, you must specify the security group ID.", + "type": "string" + }, + "Id": { + "description": "", + "type": "string" + }, + "IpProtocol": { + "description": "The IP protocol name (``tcp``, ``udp``, ``icmp``, ``icmpv6``) or number (see [Protocol Numbers](https://docs.aws.amazon.com/http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)).\n Use ``-1`` to specify all protocols. When authorizing security group rules, specifying ``-1`` or a protocol number other than ``tcp``, ``udp``, ``icmp``, or ``icmpv6`` allows traffic on all ports, regardless of any port range you specify. For ``tcp``, ``udp``, and ``icmp``, you must specify a port range. For ``icmpv6``, the port range is optional; if you omit the port range, traffic for all types and codes is allowed.", + "type": "string" + }, + "ToPort": { + "description": "If the protocol is TCP or UDP, this is the end of the port range. If the protocol is ICMP or ICMPv6, this is the ICMP code or -1 (all ICMP codes). If the start port is -1 (all ICMP types), then the end port must be -1 (all ICMP codes).", + "type": "integer" + } + }, + "propertyTransform": { + "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", + "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", + "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/schema/aws-ec2-securitygroupingress.json b/src/schema/aws-ec2-securitygroupingress.json index d6c56a82..685592bf 100644 --- a/src/schema/aws-ec2-securitygroupingress.json +++ b/src/schema/aws-ec2-securitygroupingress.json @@ -1,123 +1,123 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GroupName", - "/properties/IpProtocol", - "/properties/SourceSecurityGroupId", - "/properties/SourcePrefixListId", - "/properties/ToPort", - "/properties/CidrIp", - "/properties/SourceSecurityGroupName", - "/properties/SourceSecurityGroupOwnerId", - "/properties/FromPort", - "/properties/GroupId", - "/properties/CidrIpv6" - ], - "description": "Resource Type definition for AWS::EC2::SecurityGroupIngress", - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeSecurityGroupRules", - "ec2:AuthorizeSecurityGroupIngress" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeSecurityGroupRules", - "ec2:RevokeSecurityGroupIngress" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeSecurityGroupRules" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeSecurityGroups", - "ec2:DescribeSecurityGroupRules" - ] - }, - "update": { - "permissions": [ - "ec2:UpdateSecurityGroupRuleDescriptionsIngress" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CidrIp": { - "description": "The IPv4 ranges", - "type": "string" - }, - "CidrIpv6": { - "description": "[VPC only] The IPv6 ranges", - "type": "string" - }, - "Description": { - "description": "Updates the description of an ingress (inbound) security group rule. You can replace an existing description, or add a description to a rule that did not have one previously", - "type": "string" - }, - "FromPort": { - "description": "The start of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 type number. A value of -1 indicates all ICMP/ICMPv6 types. If you specify all ICMP/ICMPv6 types, you must specify all codes.\n\nUse this for ICMP and any protocol that uses ports.", - "type": "integer" - }, - "GroupId": { - "description": "The ID of the security group. You must specify either the security group ID or the security group name in the request. For security groups in a nondefault VPC, you must specify the security group ID.\n\nYou must specify the GroupName property or the GroupId property. For security groups that are in a VPC, you must use the GroupId property.", - "type": "string" - }, - "GroupName": { - "description": "The name of the security group.", - "type": "string" - }, - "Id": { - "description": "The Security Group Rule Id", - "type": "string" - }, - "IpProtocol": { - "description": "The IP protocol name (tcp, udp, icmp, icmpv6) or number (see Protocol Numbers).\n\n[VPC only] Use -1 to specify all protocols. When authorizing security group rules, specifying -1 or a protocol number other than tcp, udp, icmp, or icmpv6 allows traffic on all ports, regardless of any port range you specify. For tcp, udp, and icmp, you must specify a port range. For icmpv6, the port range is optional; if you omit the port range, traffic for all types and codes is allowed.", - "type": "string" - }, - "SourcePrefixListId": { - "description": "[EC2-VPC only] The ID of a prefix list.\n\n", - "type": "string" - }, - "SourceSecurityGroupId": { - "description": "The ID of the security group. You must specify either the security group ID or the security group name. For security groups in a nondefault VPC, you must specify the security group ID.", - "type": "string" - }, - "SourceSecurityGroupName": { - "description": "[EC2-Classic, default VPC] The name of the source security group.\n\nYou must specify the GroupName property or the GroupId property. For security groups that are in a VPC, you must use the GroupId property.", - "type": "string" - }, - "SourceSecurityGroupOwnerId": { - "description": "[nondefault VPC] The AWS account ID that owns the source security group. You can't specify this property with an IP address range.\n\nIf you specify SourceSecurityGroupName or SourceSecurityGroupId and that security group is owned by a different account than the account creating the stack, you must specify the SourceSecurityGroupOwnerId; otherwise, this property is optional.", - "type": "string" - }, - "ToPort": { - "description": "The end of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 code. A value of -1 indicates all ICMP/ICMPv6 codes for the specified ICMP type. If you specify all ICMP/ICMPv6 types, you must specify all codes.\n\nUse this for ICMP and any protocol that uses ports.", - "type": "integer" - } - }, - "propertyTransform": { - "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", - "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", - "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "IpProtocol" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::SecurityGroupIngress" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "description": "Resource Type definition for AWS::EC2::SecurityGroupIngress", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "description": "The IPv4 ranges", + "type": "string" + }, + "CidrIpv6": { + "description": "[VPC only] The IPv6 ranges", + "type": "string" + }, + "Description": { + "description": "Updates the description of an ingress (inbound) security group rule. You can replace an existing description, or add a description to a rule that did not have one previously", + "type": "string" + }, + "FromPort": { + "description": "The start of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 type number. A value of -1 indicates all ICMP/ICMPv6 types. If you specify all ICMP/ICMPv6 types, you must specify all codes.\n\nUse this for ICMP and any protocol that uses ports.", + "type": "integer" + }, + "GroupId": { + "description": "The ID of the security group. You must specify either the security group ID or the security group name in the request. For security groups in a nondefault VPC, you must specify the security group ID.\n\nYou must specify the GroupName property or the GroupId property. For security groups that are in a VPC, you must use the GroupId property.", + "type": "string" + }, + "GroupName": { + "description": "The name of the security group.", + "type": "string" + }, + "Id": { + "description": "The Security Group Rule Id", + "type": "string" + }, + "IpProtocol": { + "description": "The IP protocol name (tcp, udp, icmp, icmpv6) or number (see Protocol Numbers).\n\n[VPC only] Use -1 to specify all protocols. When authorizing security group rules, specifying -1 or a protocol number other than tcp, udp, icmp, or icmpv6 allows traffic on all ports, regardless of any port range you specify. For tcp, udp, and icmp, you must specify a port range. For icmpv6, the port range is optional; if you omit the port range, traffic for all types and codes is allowed.", + "type": "string" + }, + "SourcePrefixListId": { + "description": "[EC2-VPC only] The ID of a prefix list.\n\n", + "type": "string" + }, + "SourceSecurityGroupId": { + "description": "The ID of the security group. You must specify either the security group ID or the security group name. For security groups in a nondefault VPC, you must specify the security group ID.", + "type": "string" + }, + "SourceSecurityGroupName": { + "description": "[EC2-Classic, default VPC] The name of the source security group.\n\nYou must specify the GroupName property or the GroupId property. For security groups that are in a VPC, you must use the GroupId property.", + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "description": "[nondefault VPC] The AWS account ID that owns the source security group. You can't specify this property with an IP address range.\n\nIf you specify SourceSecurityGroupName or SourceSecurityGroupId and that security group is owned by a different account than the account creating the stack, you must specify the SourceSecurityGroupOwnerId; otherwise, this property is optional.", + "type": "string" + }, + "ToPort": { + "description": "The end of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 code. A value of -1 indicates all ICMP/ICMPv6 codes for the specified ICMP type. If you specify all ICMP/ICMPv6 types, you must specify all codes.\n\nUse this for ICMP and any protocol that uses ports.", + "type": "integer" + } + }, + "propertyTransform": { + "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", + "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", + "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/schema/aws-ec2-securitygroupvpcassociation.json b/src/schema/aws-ec2-securitygroupvpcassociation.json index 248d4cee..e3c2829a 100644 --- a/src/schema/aws-ec2-securitygroupvpcassociation.json +++ b/src/schema/aws-ec2-securitygroupvpcassociation.json @@ -1,55 +1,85 @@ { - "typeName" : "AWS::EC2::SecurityGroupVpcAssociation", - "description" : "Resource type definition for the AWS::EC2::SecurityGroupVpcAssociation resource", - "definitions" : { - "SecurityGroupVpcAssociationState" : { - "type" : "string", - "additionalProperties" : false, - "enum" : [ "associating", "associated", "association-failed", "disassociating", "disassociated", "disassociation-failed" ] + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GroupId", + "/properties/VpcId" + ], + "definitions": { + "SecurityGroupVpcAssociationState": { + "additionalProperties": false, + "enum": [ + "associating", + "associated", + "association-failed", + "disassociating", + "disassociated", + "disassociation-failed" + ], + "type": "string" } }, - "properties" : { - "GroupId" : { - "description" : "The group ID of the specified security group.", - "type" : "string" + "description": "Resource type definition for the AWS::EC2::SecurityGroupVpcAssociation resource", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateSecurityGroupVpc", + "ec2:DescribeSecurityGroupVpcAssociations" + ] }, - "VpcId" : { - "description" : "The ID of the VPC in the security group vpc association.", - "type" : "string" + "delete": { + "permissions": [ + "ec2:DisassociateSecurityGroupVpc", + "ec2:DescribeSecurityGroupVpcAssociations" + ] }, - "VpcOwnerId" : { - "description" : "The owner of the VPC in the security group vpc association.", - "type" : "string" + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupVpcAssociations" + ] }, - "State" : { - "description" : "The state of the security group vpc association.", - "$ref" : "#/definitions/SecurityGroupVpcAssociationState" - }, - "StateReason" : { - "description" : "The reason for the state of the security group vpc association.", - "type" : "string" + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupVpcAssociations" + ] } }, - "additionalProperties" : false, - "tagging" : { - "taggable" : false - }, - "required" : [ "GroupId", "VpcId" ], - "createOnlyProperties" : [ "/properties/GroupId", "/properties/VpcId" ], - "readOnlyProperties" : [ "/properties/VpcOwnerId", "/properties/State", "/properties/StateReason" ], - "primaryIdentifier" : [ "/properties/GroupId", "/properties/VpcId" ], - "handlers" : { - "create" : { - "permissions" : [ "ec2:AssociateSecurityGroupVpc", "ec2:DescribeSecurityGroupVpcAssociations" ] + "primaryIdentifier": [ + "/properties/GroupId", + "/properties/VpcId" + ], + "properties": { + "GroupId": { + "description": "The group ID of the specified security group.", + "type": "string" + }, + "State": { + "$ref": "#/definitions/SecurityGroupVpcAssociationState", + "description": "The state of the security group vpc association." }, - "read" : { - "permissions" : [ "ec2:DescribeSecurityGroupVpcAssociations" ] + "StateReason": { + "description": "The reason for the state of the security group vpc association.", + "type": "string" }, - "delete" : { - "permissions" : [ "ec2:DisassociateSecurityGroupVpc", "ec2:DescribeSecurityGroupVpcAssociations" ] + "VpcId": { + "description": "The ID of the VPC in the security group vpc association.", + "type": "string" }, - "list" : { - "permissions" : [ "ec2:DescribeSecurityGroupVpcAssociations" ] + "VpcOwnerId": { + "description": "The owner of the VPC in the security group vpc association.", + "type": "string" } - } -} \ No newline at end of file + }, + "readOnlyProperties": [ + "/properties/VpcOwnerId", + "/properties/State", + "/properties/StateReason" + ], + "required": [ + "GroupId", + "VpcId" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupVpcAssociation" +} diff --git a/src/schema/aws-ec2-snapshotblockpublicaccess.json b/src/schema/aws-ec2-snapshotblockpublicaccess.json index 8ad625c1..f45e595f 100644 --- a/src/schema/aws-ec2-snapshotblockpublicaccess.json +++ b/src/schema/aws-ec2-snapshotblockpublicaccess.json @@ -1,62 +1,62 @@ -{ - "additionalProperties": false, - "description": "Resource Type definition for AWS::EC2::SnapshotBlockPublicAccess", - "handlers": { - "create": { - "permissions": [ - "ec2:EnableSnapshotBlockPublicAccess", - "ec2:GetSnapshotBlockPublicAccessState" - ] - }, - "delete": { - "permissions": [ - "ec2:DisableSnapshotBlockPublicAccess", - "ec2:GetSnapshotBlockPublicAccessState" - ] - }, - "list": { - "permissions": [ - "ec2:GetSnapshotBlockPublicAccessState" - ] - }, - "read": { - "permissions": [ - "ec2:GetSnapshotBlockPublicAccessState" - ] - }, - "update": { - "permissions": [ - "ec2:EnableSnapshotBlockPublicAccess", - "ec2:GetSnapshotBlockPublicAccessState" - ] - } - }, - "primaryIdentifier": [ - "/properties/AccountId" - ], - "properties": { - "AccountId": { - "description": "The identifier for the specified AWS account.", - "type": "string" - }, - "State": { - "description": "The state of EBS Snapshot Block Public Access.", - "enum": [ - "block-all-sharing", - "block-new-sharing" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AccountId" - ], - "required": [ - "State" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::EC2::SnapshotBlockPublicAccess" -} +{ + "additionalProperties": false, + "description": "Resource Type definition for AWS::EC2::SnapshotBlockPublicAccess", + "handlers": { + "create": { + "permissions": [ + "ec2:EnableSnapshotBlockPublicAccess", + "ec2:GetSnapshotBlockPublicAccessState" + ] + }, + "delete": { + "permissions": [ + "ec2:DisableSnapshotBlockPublicAccess", + "ec2:GetSnapshotBlockPublicAccessState" + ] + }, + "list": { + "permissions": [ + "ec2:GetSnapshotBlockPublicAccessState" + ] + }, + "read": { + "permissions": [ + "ec2:GetSnapshotBlockPublicAccessState" + ] + }, + "update": { + "permissions": [ + "ec2:EnableSnapshotBlockPublicAccess", + "ec2:GetSnapshotBlockPublicAccessState" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccountId" + ], + "properties": { + "AccountId": { + "description": "The identifier for the specified AWS account.", + "type": "string" + }, + "State": { + "description": "The state of EBS Snapshot Block Public Access.", + "enum": [ + "block-all-sharing", + "block-new-sharing" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AccountId" + ], + "required": [ + "State" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::EC2::SnapshotBlockPublicAccess" +} diff --git a/src/schema/aws-ec2-spotfleet.json b/src/schema/aws-ec2-spotfleet.json index b582d2fb..f4dd478a 100644 --- a/src/schema/aws-ec2-spotfleet.json +++ b/src/schema/aws-ec2-spotfleet.json @@ -1,1011 +1,1014 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SpotFleetRequestConfigData/AllocationStrategy", - "/properties/SpotFleetRequestConfigData/IamFleetRole", - "/properties/SpotFleetRequestConfigData/InstanceInterruptionBehavior", - "/properties/SpotFleetRequestConfigData/InstancePoolsToUseCount", - "/properties/SpotFleetRequestConfigData/LaunchSpecifications", - "/properties/SpotFleetRequestConfigData/LaunchTemplateConfigs", - "/properties/SpotFleetRequestConfigData/LoadBalancersConfig", - "/properties/SpotFleetRequestConfigData/OnDemandAllocationStrategy", - "/properties/SpotFleetRequestConfigData/OnDemandMaxTotalPrice", - "/properties/SpotFleetRequestConfigData/OnDemandTargetCapacity", - "/properties/SpotFleetRequestConfigData/ReplaceUnhealthyInstances", - "/properties/SpotFleetRequestConfigData/SpotMaintenanceStrategies", - "/properties/SpotFleetRequestConfigData/SpotMaxTotalPrice", - "/properties/SpotFleetRequestConfigData/SpotPrice", - "/properties/SpotFleetRequestConfigData/TagSpecifications", - "/properties/SpotFleetRequestConfigData/TerminateInstancesWithExpiration", - "/properties/SpotFleetRequestConfigData/Type", - "/properties/SpotFleetRequestConfigData/ValidFrom", - "/properties/SpotFleetRequestConfigData/ValidUntil" - ], - "definitions": { - "AcceleratorCountRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "integer" - }, - "Min": { - "type": "integer" - } - }, - "type": "object" - }, - "AcceleratorTotalMemoryMiBRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "integer" - }, - "Min": { - "type": "integer" - } - }, - "type": "object" - }, - "BaselineEbsBandwidthMbpsRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "integer" - }, - "Min": { - "type": "integer" - } - }, - "type": "object" - }, - "BaselinePerformanceFactorsRequest": { - "additionalProperties": false, - "properties": { - "Cpu": { - "$ref": "#/definitions/CpuPerformanceFactorRequest" - } - }, - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/EbsBlockDevice" - }, - "NoDevice": { - "type": "string" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "type": "object" - }, - "ClassicLoadBalancer": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "ClassicLoadBalancersConfig": { - "additionalProperties": false, - "properties": { - "ClassicLoadBalancers": { - "items": { - "$ref": "#/definitions/ClassicLoadBalancer" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "ClassicLoadBalancers" - ], - "type": "object" - }, - "CpuPerformanceFactorRequest": { - "additionalProperties": false, - "properties": { - "References": { - "items": { - "$ref": "#/definitions/PerformanceFactorReferenceRequest" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "EbsBlockDevice": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "enum": [ - "gp2", - "gp3", - "io1", - "io2", - "sc1", - "st1", - "standard" - ], - "type": "string" - } - }, - "type": "object" - }, - "FleetLaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "maxLength": 128, - "minLength": 3, - "pattern": "[a-zA-Z0-9\\(\\)\\.\\-/_]+", - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "GroupIdentifier": { - "additionalProperties": false, - "properties": { - "GroupId": { - "type": "string" - } - }, - "required": [ - "GroupId" - ], - "type": "object" - }, - "IamInstanceProfileSpecification": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "InstanceNetworkInterfaceSpecification": { - "additionalProperties": false, - "properties": { - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "integer" - }, - "Groups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "type": "object" - }, - "InstanceRequirementsRequest": { - "additionalProperties": false, - "properties": { - "AcceleratorCount": { - "$ref": "#/definitions/AcceleratorCountRequest" - }, - "AcceleratorManufacturers": { - "items": { - "enum": [ - "amazon-web-services", - "amd", - "habana", - "nvidia", - "xilinx" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AcceleratorNames": { - "items": { - "enum": [ - "a10g", - "a100", - "h100", - "inferentia", - "k520", - "k80", - "m60", - "radeon-pro-v520", - "t4", - "t4g", - "vu9p", - "v100" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AcceleratorTotalMemoryMiB": { - "$ref": "#/definitions/AcceleratorTotalMemoryMiBRequest" - }, - "AcceleratorTypes": { - "items": { - "enum": [ - "gpu", - "fpga", - "inference" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AllowedInstanceTypes": { - "items": { - "maxLength": 30, - "minLength": 1, - "pattern": "[a-zA-Z0-9\\.\\*]+", - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "BareMetal": { - "enum": [ - "included", - "required", - "excluded" - ], - "type": "string" - }, - "BaselineEbsBandwidthMbps": { - "$ref": "#/definitions/BaselineEbsBandwidthMbpsRequest" - }, - "BurstablePerformance": { - "enum": [ - "included", - "required", - "excluded" - ], - "type": "string" - }, - "CpuManufacturers": { - "items": { - "enum": [ - "intel", - "amd", - "amazon-web-services", - "apple" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ExcludedInstanceTypes": { - "items": { - "maxLength": 30, - "minLength": 1, - "pattern": "[a-zA-Z0-9\\.\\*]+", - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "InstanceGenerations": { - "items": { - "enum": [ - "current", - "previous" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "LocalStorage": { - "enum": [ - "included", - "required", - "excluded" - ], - "type": "string" - }, - "LocalStorageTypes": { - "items": { - "enum": [ - "hdd", - "ssd" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": { - "type": "integer" - }, - "MemoryGiBPerVCpu": { - "$ref": "#/definitions/MemoryGiBPerVCpuRequest" - }, - "MemoryMiB": { - "$ref": "#/definitions/MemoryMiBRequest" - }, - "NetworkBandwidthGbps": { - "$ref": "#/definitions/NetworkBandwidthGbpsRequest" - }, - "NetworkInterfaceCount": { - "$ref": "#/definitions/NetworkInterfaceCountRequest" - }, - "OnDemandMaxPricePercentageOverLowestPrice": { - "type": "integer" - }, - "RequireHibernateSupport": { - "type": "boolean" - }, - "SpotMaxPricePercentageOverLowestPrice": { - "type": "integer" - }, - "TotalLocalStorageGB": { - "$ref": "#/definitions/TotalLocalStorageGBRequest" - }, - "VCpuCount": { - "$ref": "#/definitions/VCpuCountRangeRequest" - } - }, - "type": "object" - }, - "LaunchTemplateConfig": { - "additionalProperties": false, - "properties": { - "LaunchTemplateSpecification": { - "$ref": "#/definitions/FleetLaunchTemplateSpecification" - }, - "Overrides": { - "items": { - "$ref": "#/definitions/LaunchTemplateOverrides" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "LaunchTemplateOverrides": { - "additionalProperties": false, - "properties": { - "AvailabilityZone": { - "type": "string" - }, - "InstanceRequirements": { - "$ref": "#/definitions/InstanceRequirementsRequest" - }, - "InstanceType": { - "type": "string" - }, - "Priority": { - "type": "number" - }, - "SpotPrice": { - "type": "string" - }, - "SubnetId": { - "type": "string" - }, - "WeightedCapacity": { - "type": "number" - } - }, - "type": "object" - }, - "LoadBalancersConfig": { - "additionalProperties": false, - "properties": { - "ClassicLoadBalancersConfig": { - "$ref": "#/definitions/ClassicLoadBalancersConfig" - }, - "TargetGroupsConfig": { - "$ref": "#/definitions/TargetGroupsConfig" - } - }, - "type": "object" - }, - "MemoryGiBPerVCpuRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "number" - }, - "Min": { - "type": "number" - } - }, - "type": "object" - }, - "MemoryMiBRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "integer" - }, - "Min": { - "type": "integer" - } - }, - "type": "object" - }, - "NetworkBandwidthGbpsRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "number" - }, - "Min": { - "type": "number" - } - }, - "type": "object" - }, - "NetworkInterfaceCountRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "integer" - }, - "Min": { - "type": "integer" - } - }, - "type": "object" - }, - "PerformanceFactorReferenceRequest": { - "additionalProperties": false, - "properties": { - "InstanceFamily": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress" - ], - "type": "object" - }, - "SpotCapacityRebalance": { - "additionalProperties": false, - "properties": { - "ReplacementStrategy": { - "enum": [ - "launch", - "launch-before-terminate" - ], - "type": "string" - }, - "TerminationDelay": { - "type": "integer" - } - }, - "type": "object" - }, - "SpotFleetLaunchSpecification": { - "additionalProperties": false, - "properties": { - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": true - }, - "EbsOptimized": { - "default": false, - "type": "boolean" - }, - "IamInstanceProfile": { - "$ref": "#/definitions/IamInstanceProfileSpecification" - }, - "ImageId": { - "type": "string" - }, - "InstanceRequirements": { - "$ref": "#/definitions/InstanceRequirementsRequest" - }, - "InstanceType": { - "type": "string" - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "Monitoring": { - "$ref": "#/definitions/SpotFleetMonitoring" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/InstanceNetworkInterfaceSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Placement": { - "$ref": "#/definitions/SpotPlacement" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroups": { - "items": { - "$ref": "#/definitions/GroupIdentifier" - }, - "type": "array", - "uniqueItems": true - }, - "SpotPrice": { - "type": "string" - }, - "SubnetId": { - "type": "string" - }, - "TagSpecifications": { - "items": { - "$ref": "#/definitions/SpotFleetTagSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "UserData": { - "type": "string" - }, - "WeightedCapacity": { - "type": "number" - } - }, - "required": [ - "ImageId" - ], - "type": "object" - }, - "SpotFleetMonitoring": { - "additionalProperties": false, - "properties": { - "Enabled": { - "default": false, - "type": "boolean" - } - }, - "type": "object" - }, - "SpotFleetRequestConfigData": { - "additionalProperties": false, - "properties": { - "AllocationStrategy": { - "enum": [ - "capacityOptimized", - "capacityOptimizedPrioritized", - "diversified", - "lowestPrice", - "priceCapacityOptimized" - ], - "type": "string" - }, - "Context": { - "type": "string" - }, - "ExcessCapacityTerminationPolicy": { - "enum": [ - "Default", - "NoTermination", - "default", - "noTermination" - ], - "type": "string" - }, - "IamFleetRole": { - "type": "string" - }, - "InstanceInterruptionBehavior": { - "enum": [ - "hibernate", - "stop", - "terminate" - ], - "type": "string" - }, - "InstancePoolsToUseCount": { - "type": "integer" - }, - "LaunchSpecifications": { - "items": { - "$ref": "#/definitions/SpotFleetLaunchSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "LaunchTemplateConfigs": { - "items": { - "$ref": "#/definitions/LaunchTemplateConfig" - }, - "type": "array", - "uniqueItems": true - }, - "LoadBalancersConfig": { - "$ref": "#/definitions/LoadBalancersConfig" - }, - "OnDemandAllocationStrategy": { - "type": "string" - }, - "OnDemandMaxTotalPrice": { - "type": "string" - }, - "OnDemandTargetCapacity": { - "type": "integer" - }, - "ReplaceUnhealthyInstances": { - "type": "boolean" - }, - "SpotMaintenanceStrategies": { - "$ref": "#/definitions/SpotMaintenanceStrategies" - }, - "SpotMaxTotalPrice": { - "type": "string" - }, - "SpotPrice": { - "type": "string" - }, - "TagSpecifications": { - "items": { - "$ref": "#/definitions/SpotFleetTagSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "TargetCapacity": { - "type": "integer" - }, - "TargetCapacityUnitType": { - "enum": [ - "vcpu", - "memory-mib", - "units" - ], - "type": "string" - }, - "TerminateInstancesWithExpiration": { - "type": "boolean" - }, - "Type": { - "enum": [ - "maintain", - "request" - ], - "type": "string" - }, - "ValidFrom": { - "type": "string" - }, - "ValidUntil": { - "type": "string" - } - }, - "required": [ - "IamFleetRole", - "TargetCapacity" - ], - "type": "object" - }, - "SpotFleetTagSpecification": { - "additionalProperties": false, - "properties": { - "ResourceType": { - "enum": [ - "client-vpn-endpoint", - "customer-gateway", - "dedicated-host", - "dhcp-options", - "egress-only-internet-gateway", - "elastic-gpu", - "elastic-ip", - "export-image-task", - "export-instance-task", - "fleet", - "fpga-image", - "host-reservation", - "image", - "import-image-task", - "import-snapshot-task", - "instance", - "internet-gateway", - "key-pair", - "launch-template", - "local-gateway-route-table-vpc-association", - "natgateway", - "network-acl", - "network-insights-analysis", - "network-insights-path", - "network-interface", - "placement-group", - "reserved-instances", - "route-table", - "security-group", - "snapshot", - "spot-fleet-request", - "spot-instances-request", - "subnet", - "traffic-mirror-filter", - "traffic-mirror-session", - "traffic-mirror-target", - "transit-gateway", - "transit-gateway-attachment", - "transit-gateway-connect-peer", - "transit-gateway-multicast-domain", - "transit-gateway-route-table", - "volume", - "vpc", - "vpc-flow-log", - "vpc-peering-connection", - "vpn-connection", - "vpn-gateway" - ], - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "SpotMaintenanceStrategies": { - "additionalProperties": false, - "properties": { - "CapacityRebalance": { - "$ref": "#/definitions/SpotCapacityRebalance" - } - }, - "type": "object" - }, - "SpotPlacement": { - "additionalProperties": false, - "properties": { - "AvailabilityZone": { - "type": "string" - }, - "GroupName": { - "type": "string" - }, - "Tenancy": { - "enum": [ - "dedicated", - "default", - "host" - ], - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TargetGroup": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - } - }, - "required": [ - "Arn" - ], - "type": "object" - }, - "TargetGroupsConfig": { - "additionalProperties": false, - "properties": { - "TargetGroups": { - "items": { - "$ref": "#/definitions/TargetGroup" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "TargetGroups" - ], - "type": "object" - }, - "TotalLocalStorageGBRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "number" - }, - "Min": { - "type": "number" - } - }, - "type": "object" - }, - "VCpuCountRangeRequest": { - "additionalProperties": false, - "properties": { - "Max": { - "type": "integer" - }, - "Min": { - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::SpotFleet", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "ec2:CreateTags", - "ec2:RequestSpotFleet", - "ec2:DescribeSpotFleetRequests", - "ec2:RunInstances" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeSpotFleetRequests", - "ec2:CancelSpotFleetRequests" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeSpotFleetRequests" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeSpotFleetRequests" - ] - }, - "update": { - "permissions": [ - "ec2:ModifySpotFleetRequest", - "ec2:DescribeSpotFleetRequests" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "SpotFleetRequestConfigData": { - "$ref": "#/definitions/SpotFleetRequestConfigData" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "SpotFleetRequestConfigData" - ], - "typeName": "AWS::EC2::SpotFleet", - "writeOnlyProperties": [ - "/properties/SpotFleetRequestConfigData/TagSpecifications", - "/properties/SpotFleetRequestConfigData/LaunchSpecifications/*/NetworkInterfaces/*/Groups" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SpotFleetRequestConfigData/AllocationStrategy", + "/properties/SpotFleetRequestConfigData/IamFleetRole", + "/properties/SpotFleetRequestConfigData/InstanceInterruptionBehavior", + "/properties/SpotFleetRequestConfigData/InstancePoolsToUseCount", + "/properties/SpotFleetRequestConfigData/LaunchSpecifications", + "/properties/SpotFleetRequestConfigData/LaunchTemplateConfigs", + "/properties/SpotFleetRequestConfigData/LoadBalancersConfig", + "/properties/SpotFleetRequestConfigData/OnDemandAllocationStrategy", + "/properties/SpotFleetRequestConfigData/OnDemandMaxTotalPrice", + "/properties/SpotFleetRequestConfigData/OnDemandTargetCapacity", + "/properties/SpotFleetRequestConfigData/ReplaceUnhealthyInstances", + "/properties/SpotFleetRequestConfigData/SpotMaintenanceStrategies", + "/properties/SpotFleetRequestConfigData/SpotMaxTotalPrice", + "/properties/SpotFleetRequestConfigData/SpotPrice", + "/properties/SpotFleetRequestConfigData/TagSpecifications", + "/properties/SpotFleetRequestConfigData/TerminateInstancesWithExpiration", + "/properties/SpotFleetRequestConfigData/Type", + "/properties/SpotFleetRequestConfigData/ValidFrom", + "/properties/SpotFleetRequestConfigData/ValidUntil" + ], + "definitions": { + "AcceleratorCountRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "AcceleratorTotalMemoryMiBRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "BaselineEbsBandwidthMbpsRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "BaselinePerformanceFactorsRequest": { + "additionalProperties": false, + "properties": { + "Cpu": { + "$ref": "#/definitions/CpuPerformanceFactorRequest" + } + }, + "type": "object" + }, + "BlockDeviceMapping": { + "additionalProperties": false, + "properties": { + "DeviceName": { + "type": "string" + }, + "Ebs": { + "$ref": "#/definitions/EbsBlockDevice" + }, + "NoDevice": { + "type": "string" + }, + "VirtualName": { + "type": "string" + } + }, + "required": [ + "DeviceName" + ], + "type": "object" + }, + "ClassicLoadBalancer": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "ClassicLoadBalancersConfig": { + "additionalProperties": false, + "properties": { + "ClassicLoadBalancers": { + "items": { + "$ref": "#/definitions/ClassicLoadBalancer" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "ClassicLoadBalancers" + ], + "type": "object" + }, + "CpuPerformanceFactorRequest": { + "additionalProperties": false, + "properties": { + "References": { + "items": { + "$ref": "#/definitions/PerformanceFactorReferenceRequest" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EbsBlockDevice": { + "additionalProperties": false, + "properties": { + "DeleteOnTermination": { + "type": "boolean" + }, + "Encrypted": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "SnapshotId": { + "type": "string" + }, + "VolumeSize": { + "type": "integer" + }, + "VolumeType": { + "enum": [ + "gp2", + "gp3", + "io1", + "io2", + "sc1", + "st1", + "standard" + ], + "type": "string" + } + }, + "type": "object" + }, + "FleetLaunchTemplateSpecification": { + "additionalProperties": false, + "properties": { + "LaunchTemplateId": { + "type": "string" + }, + "LaunchTemplateName": { + "maxLength": 128, + "minLength": 3, + "pattern": "[a-zA-Z0-9\\(\\)\\.\\-/_]+", + "type": "string" + }, + "Version": { + "type": "string" + } + }, + "required": [ + "Version" + ], + "type": "object" + }, + "GroupIdentifier": { + "additionalProperties": false, + "properties": { + "GroupId": { + "type": "string" + } + }, + "required": [ + "GroupId" + ], + "type": "object" + }, + "IamInstanceProfileSpecification": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + } + }, + "type": "object" + }, + "InstanceIpv6Address": { + "additionalProperties": false, + "properties": { + "Ipv6Address": { + "type": "string" + } + }, + "required": [ + "Ipv6Address" + ], + "type": "object" + }, + "InstanceNetworkInterfaceSpecification": { + "additionalProperties": false, + "properties": { + "AssociatePublicIpAddress": { + "type": "boolean" + }, + "DeleteOnTermination": { + "type": "boolean" + }, + "Description": { + "type": "string" + }, + "DeviceIndex": { + "type": "integer" + }, + "Groups": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Ipv6AddressCount": { + "type": "integer" + }, + "Ipv6Addresses": { + "items": { + "$ref": "#/definitions/InstanceIpv6Address" + }, + "type": "array", + "uniqueItems": true + }, + "NetworkInterfaceId": { + "type": "string" + }, + "PrivateIpAddresses": { + "items": { + "$ref": "#/definitions/PrivateIpAddressSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "SecondaryPrivateIpAddressCount": { + "type": "integer" + }, + "SubnetId": { + "type": "string" + } + }, + "type": "object" + }, + "InstanceRequirementsRequest": { + "additionalProperties": false, + "properties": { + "AcceleratorCount": { + "$ref": "#/definitions/AcceleratorCountRequest" + }, + "AcceleratorManufacturers": { + "items": { + "enum": [ + "amazon-web-services", + "amd", + "habana", + "nvidia", + "xilinx" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AcceleratorNames": { + "items": { + "enum": [ + "a10g", + "a100", + "h100", + "inferentia", + "k520", + "k80", + "m60", + "radeon-pro-v520", + "t4", + "t4g", + "vu9p", + "v100" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AcceleratorTotalMemoryMiB": { + "$ref": "#/definitions/AcceleratorTotalMemoryMiBRequest" + }, + "AcceleratorTypes": { + "items": { + "enum": [ + "gpu", + "fpga", + "inference" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AllowedInstanceTypes": { + "items": { + "maxLength": 30, + "minLength": 1, + "pattern": "[a-zA-Z0-9\\.\\*]+", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "BareMetal": { + "enum": [ + "included", + "required", + "excluded" + ], + "type": "string" + }, + "BaselineEbsBandwidthMbps": { + "$ref": "#/definitions/BaselineEbsBandwidthMbpsRequest" + }, + "BaselinePerformanceFactors": { + "$ref": "#/definitions/BaselinePerformanceFactorsRequest" + }, + "BurstablePerformance": { + "enum": [ + "included", + "required", + "excluded" + ], + "type": "string" + }, + "CpuManufacturers": { + "items": { + "enum": [ + "intel", + "amd", + "amazon-web-services", + "apple" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ExcludedInstanceTypes": { + "items": { + "maxLength": 30, + "minLength": 1, + "pattern": "[a-zA-Z0-9\\.\\*]+", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "InstanceGenerations": { + "items": { + "enum": [ + "current", + "previous" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "LocalStorage": { + "enum": [ + "included", + "required", + "excluded" + ], + "type": "string" + }, + "LocalStorageTypes": { + "items": { + "enum": [ + "hdd", + "ssd" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": { + "type": "integer" + }, + "MemoryGiBPerVCpu": { + "$ref": "#/definitions/MemoryGiBPerVCpuRequest" + }, + "MemoryMiB": { + "$ref": "#/definitions/MemoryMiBRequest" + }, + "NetworkBandwidthGbps": { + "$ref": "#/definitions/NetworkBandwidthGbpsRequest" + }, + "NetworkInterfaceCount": { + "$ref": "#/definitions/NetworkInterfaceCountRequest" + }, + "OnDemandMaxPricePercentageOverLowestPrice": { + "type": "integer" + }, + "RequireHibernateSupport": { + "type": "boolean" + }, + "SpotMaxPricePercentageOverLowestPrice": { + "type": "integer" + }, + "TotalLocalStorageGB": { + "$ref": "#/definitions/TotalLocalStorageGBRequest" + }, + "VCpuCount": { + "$ref": "#/definitions/VCpuCountRangeRequest" + } + }, + "type": "object" + }, + "LaunchTemplateConfig": { + "additionalProperties": false, + "properties": { + "LaunchTemplateSpecification": { + "$ref": "#/definitions/FleetLaunchTemplateSpecification" + }, + "Overrides": { + "items": { + "$ref": "#/definitions/LaunchTemplateOverrides" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "LaunchTemplateOverrides": { + "additionalProperties": false, + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "InstanceRequirements": { + "$ref": "#/definitions/InstanceRequirementsRequest" + }, + "InstanceType": { + "type": "string" + }, + "Priority": { + "type": "number" + }, + "SpotPrice": { + "type": "string" + }, + "SubnetId": { + "type": "string" + }, + "WeightedCapacity": { + "type": "number" + } + }, + "type": "object" + }, + "LoadBalancersConfig": { + "additionalProperties": false, + "properties": { + "ClassicLoadBalancersConfig": { + "$ref": "#/definitions/ClassicLoadBalancersConfig" + }, + "TargetGroupsConfig": { + "$ref": "#/definitions/TargetGroupsConfig" + } + }, + "type": "object" + }, + "MemoryGiBPerVCpuRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "number" + }, + "Min": { + "type": "number" + } + }, + "type": "object" + }, + "MemoryMiBRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "NetworkBandwidthGbpsRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "number" + }, + "Min": { + "type": "number" + } + }, + "type": "object" + }, + "NetworkInterfaceCountRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + }, + "PerformanceFactorReferenceRequest": { + "additionalProperties": false, + "properties": { + "InstanceFamily": { + "type": "string" + } + }, + "type": "object" + }, + "PrivateIpAddressSpecification": { + "additionalProperties": false, + "properties": { + "Primary": { + "type": "boolean" + }, + "PrivateIpAddress": { + "type": "string" + } + }, + "required": [ + "PrivateIpAddress" + ], + "type": "object" + }, + "SpotCapacityRebalance": { + "additionalProperties": false, + "properties": { + "ReplacementStrategy": { + "enum": [ + "launch", + "launch-before-terminate" + ], + "type": "string" + }, + "TerminationDelay": { + "type": "integer" + } + }, + "type": "object" + }, + "SpotFleetLaunchSpecification": { + "additionalProperties": false, + "properties": { + "BlockDeviceMappings": { + "items": { + "$ref": "#/definitions/BlockDeviceMapping" + }, + "type": "array", + "uniqueItems": true + }, + "EbsOptimized": { + "default": false, + "type": "boolean" + }, + "IamInstanceProfile": { + "$ref": "#/definitions/IamInstanceProfileSpecification" + }, + "ImageId": { + "type": "string" + }, + "InstanceRequirements": { + "$ref": "#/definitions/InstanceRequirementsRequest" + }, + "InstanceType": { + "type": "string" + }, + "KernelId": { + "type": "string" + }, + "KeyName": { + "type": "string" + }, + "Monitoring": { + "$ref": "#/definitions/SpotFleetMonitoring" + }, + "NetworkInterfaces": { + "items": { + "$ref": "#/definitions/InstanceNetworkInterfaceSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "Placement": { + "$ref": "#/definitions/SpotPlacement" + }, + "RamdiskId": { + "type": "string" + }, + "SecurityGroups": { + "items": { + "$ref": "#/definitions/GroupIdentifier" + }, + "type": "array", + "uniqueItems": true + }, + "SpotPrice": { + "type": "string" + }, + "SubnetId": { + "type": "string" + }, + "TagSpecifications": { + "items": { + "$ref": "#/definitions/SpotFleetTagSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "UserData": { + "type": "string" + }, + "WeightedCapacity": { + "type": "number" + } + }, + "required": [ + "ImageId" + ], + "type": "object" + }, + "SpotFleetMonitoring": { + "additionalProperties": false, + "properties": { + "Enabled": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "SpotFleetRequestConfigData": { + "additionalProperties": false, + "properties": { + "AllocationStrategy": { + "enum": [ + "capacityOptimized", + "capacityOptimizedPrioritized", + "diversified", + "lowestPrice", + "priceCapacityOptimized" + ], + "type": "string" + }, + "Context": { + "type": "string" + }, + "ExcessCapacityTerminationPolicy": { + "enum": [ + "Default", + "NoTermination", + "default", + "noTermination" + ], + "type": "string" + }, + "IamFleetRole": { + "type": "string" + }, + "InstanceInterruptionBehavior": { + "enum": [ + "hibernate", + "stop", + "terminate" + ], + "type": "string" + }, + "InstancePoolsToUseCount": { + "type": "integer" + }, + "LaunchSpecifications": { + "items": { + "$ref": "#/definitions/SpotFleetLaunchSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "LaunchTemplateConfigs": { + "items": { + "$ref": "#/definitions/LaunchTemplateConfig" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancersConfig": { + "$ref": "#/definitions/LoadBalancersConfig" + }, + "OnDemandAllocationStrategy": { + "type": "string" + }, + "OnDemandMaxTotalPrice": { + "type": "string" + }, + "OnDemandTargetCapacity": { + "type": "integer" + }, + "ReplaceUnhealthyInstances": { + "type": "boolean" + }, + "SpotMaintenanceStrategies": { + "$ref": "#/definitions/SpotMaintenanceStrategies" + }, + "SpotMaxTotalPrice": { + "type": "string" + }, + "SpotPrice": { + "type": "string" + }, + "TagSpecifications": { + "items": { + "$ref": "#/definitions/SpotFleetTagSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "TargetCapacity": { + "type": "integer" + }, + "TargetCapacityUnitType": { + "enum": [ + "vcpu", + "memory-mib", + "units" + ], + "type": "string" + }, + "TerminateInstancesWithExpiration": { + "type": "boolean" + }, + "Type": { + "enum": [ + "maintain", + "request" + ], + "type": "string" + }, + "ValidFrom": { + "type": "string" + }, + "ValidUntil": { + "type": "string" + } + }, + "required": [ + "IamFleetRole", + "TargetCapacity" + ], + "type": "object" + }, + "SpotFleetTagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "enum": [ + "client-vpn-endpoint", + "customer-gateway", + "dedicated-host", + "dhcp-options", + "egress-only-internet-gateway", + "elastic-gpu", + "elastic-ip", + "export-image-task", + "export-instance-task", + "fleet", + "fpga-image", + "host-reservation", + "image", + "import-image-task", + "import-snapshot-task", + "instance", + "internet-gateway", + "key-pair", + "launch-template", + "local-gateway-route-table-vpc-association", + "natgateway", + "network-acl", + "network-insights-analysis", + "network-insights-path", + "network-interface", + "placement-group", + "reserved-instances", + "route-table", + "security-group", + "snapshot", + "spot-fleet-request", + "spot-instances-request", + "subnet", + "traffic-mirror-filter", + "traffic-mirror-session", + "traffic-mirror-target", + "transit-gateway", + "transit-gateway-attachment", + "transit-gateway-connect-peer", + "transit-gateway-multicast-domain", + "transit-gateway-route-table", + "volume", + "vpc", + "vpc-flow-log", + "vpc-peering-connection", + "vpn-connection", + "vpn-gateway" + ], + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "SpotMaintenanceStrategies": { + "additionalProperties": false, + "properties": { + "CapacityRebalance": { + "$ref": "#/definitions/SpotCapacityRebalance" + } + }, + "type": "object" + }, + "SpotPlacement": { + "additionalProperties": false, + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Tenancy": { + "enum": [ + "dedicated", + "default", + "host" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TargetGroup": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "TargetGroupsConfig": { + "additionalProperties": false, + "properties": { + "TargetGroups": { + "items": { + "$ref": "#/definitions/TargetGroup" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "TargetGroups" + ], + "type": "object" + }, + "TotalLocalStorageGBRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "number" + }, + "Min": { + "type": "number" + } + }, + "type": "object" + }, + "VCpuCountRangeRequest": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "integer" + }, + "Min": { + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::SpotFleet", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "ec2:CreateTags", + "ec2:RequestSpotFleet", + "ec2:DescribeSpotFleetRequests", + "ec2:RunInstances" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSpotFleetRequests", + "ec2:CancelSpotFleetRequests" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSpotFleetRequests" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSpotFleetRequests" + ] + }, + "update": { + "permissions": [ + "ec2:ModifySpotFleetRequest", + "ec2:DescribeSpotFleetRequests" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "SpotFleetRequestConfigData": { + "$ref": "#/definitions/SpotFleetRequestConfigData" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "SpotFleetRequestConfigData" + ], + "typeName": "AWS::EC2::SpotFleet", + "writeOnlyProperties": [ + "/properties/SpotFleetRequestConfigData/TagSpecifications", + "/properties/SpotFleetRequestConfigData/LaunchSpecifications/*/NetworkInterfaces/*/Groups" + ] +} diff --git a/src/schema/aws-ec2-subnet.json b/src/schema/aws-ec2-subnet.json index a01b7acf..42a2f274 100644 --- a/src/schema/aws-ec2-subnet.json +++ b/src/schema/aws-ec2-subnet.json @@ -1,210 +1,210 @@ -{ - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/Ipv6CidrBlock" - ], - "createOnlyProperties": [ - "/properties/VpcId", - "/properties/AvailabilityZone", - "/properties/AvailabilityZoneId", - "/properties/CidrBlock", - "/properties/OutpostArn", - "/properties/Ipv6Native", - "/properties/Ipv4IpamPoolId", - "/properties/Ipv4NetmaskLength", - "/properties/Ipv6IpamPoolId", - "/properties/Ipv6NetmaskLength" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "properties": { - "Key": { - "description": "The tag key.", - "type": "string" - }, - "Value": { - "description": "The tag value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Specifies a subnet for the specified VPC.\n For an IPv4 only subnet, specify an IPv4 CIDR block. If the VPC has an IPv6 CIDR block, you can create an IPv6 only subnet or a dual stack subnet instead. For an IPv6 only subnet, specify an IPv6 CIDR block. For a dual stack subnet, specify both an IPv4 CIDR block and an IPv6 CIDR block.\n For more information, see [Subnets for your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html) in the *Amazon VPC User Guide*.", - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeSubnets", - "ec2:CreateSubnet", - "ec2:CreateTags", - "ec2:ModifySubnetAttribute" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeSubnets", - "ec2:DeleteSubnet" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeSubnets", - "ec2:DescribeNetworkAcls" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeSubnets", - "ec2:DescribeNetworkAcls" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeSubnets", - "ec2:ModifySubnetAttribute", - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:AssociateSubnetCidrBlock", - "ec2:DisassociateSubnetCidrBlock" - ] - } - }, - "primaryIdentifier": [ - "/properties/SubnetId" - ], - "properties": { - "AssignIpv6AddressOnCreation": { - "description": "Indicates whether a network interface created in this subnet receives an IPv6 address. The default value is ``false``.\n If you specify ``AssignIpv6AddressOnCreation``, you must also specify an IPv6 CIDR block.", - "type": "boolean" - }, - "AvailabilityZone": { - "description": "The Availability Zone of the subnet.\n If you update this property, you must also update the ``CidrBlock`` property.", - "type": "string" - }, - "AvailabilityZoneId": { - "description": "The AZ ID of the subnet.", - "type": "string" - }, - "CidrBlock": { - "description": "The IPv4 CIDR block assigned to the subnet.\n If you update this property, we create a new subnet, and then delete the existing one.", - "type": "string" - }, - "EnableDns64": { - "description": "Indicates whether DNS queries made to the Amazon-provided DNS Resolver in this subnet should return synthetic IPv6 addresses for IPv4-only destinations.\n You must first configure a NAT gateway in a public subnet (separate from the subnet containing the IPv6-only workloads). For example, the subnet containing the NAT gateway should have a ``0.0.0.0/0`` route pointing to the internet gateway. For more information, see [Configure DNS64 and NAT64](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-nat64-dns64.html#nat-gateway-nat64-dns64-walkthrough) in the *User Guide*.", - "type": "boolean" - }, - "EnableLniAtDeviceIndex": { - "description": "Indicates the device position for local network interfaces in this subnet. For example, ``1`` indicates local network interfaces in this subnet are the secondary network interface (eth1).", - "type": "integer" - }, - "Ipv4IpamPoolId": { - "description": "An IPv4 IPAM pool ID for the subnet.", - "type": "string" - }, - "Ipv4NetmaskLength": { - "description": "An IPv4 netmask length for the subnet.", - "type": "integer" - }, - "Ipv6CidrBlock": { - "description": "The IPv6 CIDR block.\n If you specify ``AssignIpv6AddressOnCreation``, you must also specify an IPv6 CIDR block.", - "type": "string" - }, - "Ipv6CidrBlocks": { - "description": "", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6IpamPoolId": { - "description": "An IPv6 IPAM pool ID for the subnet.", - "type": "string" - }, - "Ipv6Native": { - "description": "Indicates whether this is an IPv6 only subnet. For more information, see [Subnet basics](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#subnet-basics) in the *User Guide*.", - "type": "boolean" - }, - "Ipv6NetmaskLength": { - "description": "An IPv6 netmask length for the subnet.", - "type": "integer" - }, - "MapPublicIpOnLaunch": { - "description": "Indicates whether instances launched in this subnet receive a public IPv4 address. The default value is ``false``.\n AWS charges for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the *Public IPv4 Address* tab on the [VPC pricing page](https://docs.aws.amazon.com/vpc/pricing/).", - "type": "boolean" - }, - "NetworkAclAssociationId": { - "description": "", - "type": "string" - }, - "OutpostArn": { - "description": "The Amazon Resource Name (ARN) of the Outpost.", - "type": "string" - }, - "PrivateDnsNameOptionsOnLaunch": { - "additionalProperties": false, - "description": "The hostname type for EC2 instances launched into this subnet and how DNS A and AAAA record queries to the instances should be handled. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *User Guide*.\n Available options:\n + EnableResourceNameDnsAAAARecord (true | false)\n + EnableResourceNameDnsARecord (true | false)\n + HostnameType (ip-name | resource-name)", - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "SubnetId": { - "description": "", - "type": "string" - }, - "Tags": { - "description": "Any tags assigned to the subnet.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcId": { - "description": "The ID of the VPC the subnet is in.\n If you update this property, you must also update the ``CidrBlock`` property.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/NetworkAclAssociationId", - "/properties/SubnetId", - "/properties/Ipv6CidrBlocks" - ], - "required": [ - "VpcId" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::Subnet", - "writeOnlyProperties": [ - "/properties/EnableLniAtDeviceIndex", - "/properties/Ipv4IpamPoolId", - "/properties/Ipv4NetmaskLength", - "/properties/Ipv6IpamPoolId", - "/properties/Ipv6NetmaskLength" - ] -} +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/Ipv6CidrBlock" + ], + "createOnlyProperties": [ + "/properties/VpcId", + "/properties/AvailabilityZone", + "/properties/AvailabilityZoneId", + "/properties/CidrBlock", + "/properties/OutpostArn", + "/properties/Ipv6Native", + "/properties/Ipv4IpamPoolId", + "/properties/Ipv4NetmaskLength", + "/properties/Ipv6IpamPoolId", + "/properties/Ipv6NetmaskLength" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a subnet for the specified VPC.\n For an IPv4 only subnet, specify an IPv4 CIDR block. If the VPC has an IPv6 CIDR block, you can create an IPv6 only subnet or a dual stack subnet instead. For an IPv6 only subnet, specify an IPv6 CIDR block. For a dual stack subnet, specify both an IPv4 CIDR block and an IPv6 CIDR block.\n For more information, see [Subnets for your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html) in the *Amazon VPC User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSubnets", + "ec2:CreateSubnet", + "ec2:CreateTags", + "ec2:ModifySubnetAttribute" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSubnets", + "ec2:DeleteSubnet" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSubnets", + "ec2:DescribeNetworkAcls" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSubnets", + "ec2:DescribeNetworkAcls" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeSubnets", + "ec2:ModifySubnetAttribute", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:AssociateSubnetCidrBlock", + "ec2:DisassociateSubnetCidrBlock" + ] + } + }, + "primaryIdentifier": [ + "/properties/SubnetId" + ], + "properties": { + "AssignIpv6AddressOnCreation": { + "description": "Indicates whether a network interface created in this subnet receives an IPv6 address. The default value is ``false``.\n If you specify ``AssignIpv6AddressOnCreation``, you must also specify an IPv6 CIDR block.", + "type": "boolean" + }, + "AvailabilityZone": { + "description": "The Availability Zone of the subnet.\n If you update this property, you must also update the ``CidrBlock`` property.", + "type": "string" + }, + "AvailabilityZoneId": { + "description": "The AZ ID of the subnet.", + "type": "string" + }, + "CidrBlock": { + "description": "The IPv4 CIDR block assigned to the subnet.\n If you update this property, we create a new subnet, and then delete the existing one.", + "type": "string" + }, + "EnableDns64": { + "description": "Indicates whether DNS queries made to the Amazon-provided DNS Resolver in this subnet should return synthetic IPv6 addresses for IPv4-only destinations.\n You must first configure a NAT gateway in a public subnet (separate from the subnet containing the IPv6-only workloads). For example, the subnet containing the NAT gateway should have a ``0.0.0.0/0`` route pointing to the internet gateway. For more information, see [Configure DNS64 and NAT64](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-nat64-dns64.html#nat-gateway-nat64-dns64-walkthrough) in the *User Guide*.", + "type": "boolean" + }, + "EnableLniAtDeviceIndex": { + "description": "Indicates the device position for local network interfaces in this subnet. For example, ``1`` indicates local network interfaces in this subnet are the secondary network interface (eth1).", + "type": "integer" + }, + "Ipv4IpamPoolId": { + "description": "An IPv4 IPAM pool ID for the subnet.", + "type": "string" + }, + "Ipv4NetmaskLength": { + "description": "An IPv4 netmask length for the subnet.", + "type": "integer" + }, + "Ipv6CidrBlock": { + "description": "The IPv6 CIDR block.\n If you specify ``AssignIpv6AddressOnCreation``, you must also specify an IPv6 CIDR block.", + "type": "string" + }, + "Ipv6CidrBlocks": { + "description": "", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Ipv6IpamPoolId": { + "description": "An IPv6 IPAM pool ID for the subnet.", + "type": "string" + }, + "Ipv6Native": { + "description": "Indicates whether this is an IPv6 only subnet. For more information, see [Subnet basics](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#subnet-basics) in the *User Guide*.", + "type": "boolean" + }, + "Ipv6NetmaskLength": { + "description": "An IPv6 netmask length for the subnet.", + "type": "integer" + }, + "MapPublicIpOnLaunch": { + "description": "Indicates whether instances launched in this subnet receive a public IPv4 address. The default value is ``false``.\n AWS charges for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the *Public IPv4 Address* tab on the [VPC pricing page](https://docs.aws.amazon.com/vpc/pricing/).", + "type": "boolean" + }, + "NetworkAclAssociationId": { + "description": "", + "type": "string" + }, + "OutpostArn": { + "description": "The Amazon Resource Name (ARN) of the Outpost.", + "type": "string" + }, + "PrivateDnsNameOptionsOnLaunch": { + "additionalProperties": false, + "description": "The hostname type for EC2 instances launched into this subnet and how DNS A and AAAA record queries to the instances should be handled. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *User Guide*.\n Available options:\n + EnableResourceNameDnsAAAARecord (true | false)\n + EnableResourceNameDnsARecord (true | false)\n + HostnameType (ip-name | resource-name)", + "properties": { + "EnableResourceNameDnsAAAARecord": { + "type": "boolean" + }, + "EnableResourceNameDnsARecord": { + "type": "boolean" + }, + "HostnameType": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetId": { + "description": "", + "type": "string" + }, + "Tags": { + "description": "Any tags assigned to the subnet.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "The ID of the VPC the subnet is in.\n If you update this property, you must also update the ``CidrBlock`` property.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/NetworkAclAssociationId", + "/properties/SubnetId", + "/properties/Ipv6CidrBlocks" + ], + "required": [ + "VpcId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::Subnet", + "writeOnlyProperties": [ + "/properties/EnableLniAtDeviceIndex", + "/properties/Ipv4IpamPoolId", + "/properties/Ipv4NetmaskLength", + "/properties/Ipv6IpamPoolId", + "/properties/Ipv6NetmaskLength" + ] +} diff --git a/src/schema/aws-ec2-subnetcidrblock.json b/src/schema/aws-ec2-subnetcidrblock.json index 9f10202e..401ac1d5 100644 --- a/src/schema/aws-ec2-subnetcidrblock.json +++ b/src/schema/aws-ec2-subnetcidrblock.json @@ -1,94 +1,94 @@ -{ - "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Ipv6CidrBlock", - "/properties/SubnetId", - "/properties/Ipv6IpamPoolId", - "/properties/Ipv6NetmaskLength" - ], - "description": "The AWS::EC2::SubnetCidrBlock resource creates association between subnet and IPv6 CIDR", - "handlers": { - "create": { - "permissions": [ - "ec2:AssociateSubnetCidrBlock", - "ec2:DescribeSubnets" - ] - }, - "delete": { - "permissions": [ - "ec2:DisassociateSubnetCidrBlock", - "ec2:DescribeSubnets" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeSubnets" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeSubnets" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "description": "Information about the IPv6 association.", - "type": "string" - }, - "IpSource": { - "description": "The IP Source of an IPv6 Subnet CIDR Block.", - "type": "string" - }, - "Ipv6AddressAttribute": { - "description": "The value denoting whether an IPv6 Subnet CIDR Block is public or private.", - "type": "string" - }, - "Ipv6CidrBlock": { - "description": "The IPv6 network range for the subnet, in CIDR notation. The subnet size must use a /64 prefix length", - "maxLength": 42, - "type": "string" - }, - "Ipv6IpamPoolId": { - "description": "The ID of an IPv6 Amazon VPC IP Address Manager (IPAM) pool from which to allocate, to get the subnet's CIDR", - "type": "string" - }, - "Ipv6NetmaskLength": { - "description": "The netmask length of the IPv6 CIDR to allocate to the subnet from an IPAM pool", - "maximum": 128, - "minimum": 0, - "type": "integer" - }, - "SubnetId": { - "description": "The ID of the subnet", - "type": "string" - } - }, - "propertyTransform": { - "/properties/Ipv6CidrBlock": "$join([$match($replace(Ipv6CidrBlock, /(^|:)(0{1,4})([0-9a-fA-F]{1,4})/, \"$1$3\"), /^([0-9a-fA-F]{1,4}:){4}/).match, \":/64\"])" - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Ipv6AddressAttribute", - "/properties/IpSource" - ], - "required": [ - "SubnetId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2/subnetcidrblock", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::SubnetCidrBlock", - "writeOnlyProperties": [ - "/properties/Ipv6IpamPoolId", - "/properties/Ipv6NetmaskLength" - ] -} +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Ipv6CidrBlock", + "/properties/SubnetId", + "/properties/Ipv6IpamPoolId", + "/properties/Ipv6NetmaskLength" + ], + "description": "The AWS::EC2::SubnetCidrBlock resource creates association between subnet and IPv6 CIDR", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateSubnetCidrBlock", + "ec2:DescribeSubnets" + ] + }, + "delete": { + "permissions": [ + "ec2:DisassociateSubnetCidrBlock", + "ec2:DescribeSubnets" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSubnets" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSubnets" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "Information about the IPv6 association.", + "type": "string" + }, + "IpSource": { + "description": "The IP Source of an IPv6 Subnet CIDR Block.", + "type": "string" + }, + "Ipv6AddressAttribute": { + "description": "The value denoting whether an IPv6 Subnet CIDR Block is public or private.", + "type": "string" + }, + "Ipv6CidrBlock": { + "description": "The IPv6 network range for the subnet, in CIDR notation. The subnet size must use a /64 prefix length", + "maxLength": 42, + "type": "string" + }, + "Ipv6IpamPoolId": { + "description": "The ID of an IPv6 Amazon VPC IP Address Manager (IPAM) pool from which to allocate, to get the subnet's CIDR", + "type": "string" + }, + "Ipv6NetmaskLength": { + "description": "The netmask length of the IPv6 CIDR to allocate to the subnet from an IPAM pool", + "maximum": 128, + "minimum": 0, + "type": "integer" + }, + "SubnetId": { + "description": "The ID of the subnet", + "type": "string" + } + }, + "propertyTransform": { + "/properties/Ipv6CidrBlock": "$join([$match($replace(Ipv6CidrBlock, /(^|:)(0{1,4})([0-9a-fA-F]{1,4})/, \"$1$3\"), /^([0-9a-fA-F]{1,4}:){4}/).match, \":/64\"])" + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Ipv6AddressAttribute", + "/properties/IpSource" + ], + "required": [ + "SubnetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2/subnetcidrblock", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SubnetCidrBlock", + "writeOnlyProperties": [ + "/properties/Ipv6IpamPoolId", + "/properties/Ipv6NetmaskLength" + ] +} diff --git a/src/schema/aws-ec2-subnetnetworkaclassociation.json b/src/schema/aws-ec2-subnetnetworkaclassociation.json index 467c6b7a..07e6e9d4 100644 --- a/src/schema/aws-ec2-subnetnetworkaclassociation.json +++ b/src/schema/aws-ec2-subnetnetworkaclassociation.json @@ -1,64 +1,64 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SubnetId", - "/properties/NetworkAclId" - ], - "description": "Resource Type definition for AWS::EC2::SubnetNetworkAclAssociation", - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeNetworkAcls", - "ec2:ReplaceNetworkAclAssociation" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeNetworkAcls", - "ec2:ReplaceNetworkAclAssociation" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeNetworkAcls" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeNetworkAcls" - ] - } - }, - "primaryIdentifier": [ - "/properties/AssociationId" - ], - "properties": { - "AssociationId": { - "type": "string" - }, - "NetworkAclId": { - "description": "The ID of the network ACL", - "type": "string" - }, - "SubnetId": { - "description": "The ID of the subnet", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AssociationId" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "NetworkAclId", - "SubnetId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::SubnetNetworkAclAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubnetId", + "/properties/NetworkAclId" + ], + "description": "Resource Type definition for AWS::EC2::SubnetNetworkAclAssociation", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeNetworkAcls", + "ec2:ReplaceNetworkAclAssociation" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeNetworkAcls", + "ec2:ReplaceNetworkAclAssociation" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeNetworkAcls" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeNetworkAcls" + ] + } + }, + "primaryIdentifier": [ + "/properties/AssociationId" + ], + "properties": { + "AssociationId": { + "type": "string" + }, + "NetworkAclId": { + "description": "The ID of the network ACL", + "type": "string" + }, + "SubnetId": { + "description": "The ID of the subnet", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AssociationId" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "NetworkAclId", + "SubnetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SubnetNetworkAclAssociation" +} diff --git a/src/schema/aws-ec2-subnetroutetableassociation.json b/src/schema/aws-ec2-subnetroutetableassociation.json index aa874c37..0061f56c 100644 --- a/src/schema/aws-ec2-subnetroutetableassociation.json +++ b/src/schema/aws-ec2-subnetroutetableassociation.json @@ -1,68 +1,68 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SubnetId", - "/properties/RouteTableId" - ], - "description": "Associates a subnet with a route table. The subnet and route table must be in the same VPC. This association causes traffic originating from the subnet to be routed according to the routes in the route table. A route table can be associated with multiple subnets. To create a route table, see [AWS::EC2::RouteTable](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-routetable.html).", - "handlers": { - "create": { - "permissions": [ - "ec2:AssociateRouteTable", - "ec2:ReplaceRouteTableAssociation", - "ec2:DescribeSubnets", - "ec2:DescribeRouteTables" - ] - }, - "delete": { - "permissions": [ - "ec2:DisassociateRouteTable", - "ec2:DescribeSubnets", - "ec2:DescribeRouteTables" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeRouteTables" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeRouteTables" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "description": "", - "type": "string" - }, - "RouteTableId": { - "description": "The ID of the route table.\n The physical ID changes when the route table ID is changed.", - "type": "string" - }, - "SubnetId": { - "description": "The ID of the subnet.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "RouteTableId", - "SubnetId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::SubnetRouteTableAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubnetId", + "/properties/RouteTableId" + ], + "description": "Associates a subnet with a route table. The subnet and route table must be in the same VPC. This association causes traffic originating from the subnet to be routed according to the routes in the route table. A route table can be associated with multiple subnets. To create a route table, see [AWS::EC2::RouteTable](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-routetable.html).", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateRouteTable", + "ec2:ReplaceRouteTableAssociation", + "ec2:DescribeSubnets", + "ec2:DescribeRouteTables" + ] + }, + "delete": { + "permissions": [ + "ec2:DisassociateRouteTable", + "ec2:DescribeSubnets", + "ec2:DescribeRouteTables" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeRouteTables" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeRouteTables" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "", + "type": "string" + }, + "RouteTableId": { + "description": "The ID of the route table.\n The physical ID changes when the route table ID is changed.", + "type": "string" + }, + "SubnetId": { + "description": "The ID of the subnet.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "RouteTableId", + "SubnetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SubnetRouteTableAssociation" +} diff --git a/src/schema/aws-ec2-trafficmirrorfilter.json b/src/schema/aws-ec2-trafficmirrorfilter.json index 287bcc6a..42639293 100644 --- a/src/schema/aws-ec2-trafficmirrorfilter.json +++ b/src/schema/aws-ec2-trafficmirrorfilter.json @@ -1,54 +1,54 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Description" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::TrafficMirrorFilter", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "NetworkServices": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "typeName": "AWS::EC2::TrafficMirrorFilter" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::TrafficMirrorFilter", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "NetworkServices": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::EC2::TrafficMirrorFilter" +} diff --git a/src/schema/aws-ec2-trafficmirrorfilterrule.json b/src/schema/aws-ec2-trafficmirrorfilterrule.json index 5cd1b28e..850e64d0 100644 --- a/src/schema/aws-ec2-trafficmirrorfilterrule.json +++ b/src/schema/aws-ec2-trafficmirrorfilterrule.json @@ -1,98 +1,98 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TrafficMirrorFilterId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TrafficMirrorPortRange": { - "additionalProperties": false, - "properties": { - "FromPort": { - "type": "integer" - }, - "ToPort": { - "type": "integer" - } - }, - "required": [ - "FromPort", - "ToPort" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::TrafficMirrorFilterRule", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "DestinationCidrBlock": { - "type": "string" - }, - "DestinationPortRange": { - "$ref": "#/definitions/TrafficMirrorPortRange" - }, - "Id": { - "type": "string" - }, - "Protocol": { - "type": "integer" - }, - "RuleAction": { - "type": "string" - }, - "RuleNumber": { - "type": "integer" - }, - "SourceCidrBlock": { - "type": "string" - }, - "SourcePortRange": { - "$ref": "#/definitions/TrafficMirrorPortRange" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TrafficDirection": { - "type": "string" - }, - "TrafficMirrorFilterId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "RuleAction", - "SourceCidrBlock", - "RuleNumber", - "DestinationCidrBlock", - "TrafficMirrorFilterId", - "TrafficDirection" - ], - "typeName": "AWS::EC2::TrafficMirrorFilterRule" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TrafficMirrorFilterId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TrafficMirrorPortRange": { + "additionalProperties": false, + "properties": { + "FromPort": { + "type": "integer" + }, + "ToPort": { + "type": "integer" + } + }, + "required": [ + "FromPort", + "ToPort" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::TrafficMirrorFilterRule", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "type": "string" + }, + "DestinationCidrBlock": { + "type": "string" + }, + "DestinationPortRange": { + "$ref": "#/definitions/TrafficMirrorPortRange" + }, + "Id": { + "type": "string" + }, + "Protocol": { + "type": "integer" + }, + "RuleAction": { + "type": "string" + }, + "RuleNumber": { + "type": "integer" + }, + "SourceCidrBlock": { + "type": "string" + }, + "SourcePortRange": { + "$ref": "#/definitions/TrafficMirrorPortRange" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TrafficDirection": { + "type": "string" + }, + "TrafficMirrorFilterId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "RuleAction", + "SourceCidrBlock", + "RuleNumber", + "DestinationCidrBlock", + "TrafficMirrorFilterId", + "TrafficDirection" + ], + "typeName": "AWS::EC2::TrafficMirrorFilterRule" +} diff --git a/src/schema/aws-ec2-trafficmirrorsession.json b/src/schema/aws-ec2-trafficmirrorsession.json index 7481d033..8489c11f 100644 --- a/src/schema/aws-ec2-trafficmirrorsession.json +++ b/src/schema/aws-ec2-trafficmirrorsession.json @@ -1,71 +1,71 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/NetworkInterfaceId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::TrafficMirrorSession", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PacketLength": { - "type": "integer" - }, - "SessionNumber": { - "type": "integer" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TrafficMirrorFilterId": { - "type": "string" - }, - "TrafficMirrorTargetId": { - "type": "string" - }, - "VirtualNetworkId": { - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "TrafficMirrorTargetId", - "NetworkInterfaceId", - "TrafficMirrorFilterId", - "SessionNumber" - ], - "typeName": "AWS::EC2::TrafficMirrorSession" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/NetworkInterfaceId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::TrafficMirrorSession", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "NetworkInterfaceId": { + "type": "string" + }, + "PacketLength": { + "type": "integer" + }, + "SessionNumber": { + "type": "integer" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TrafficMirrorFilterId": { + "type": "string" + }, + "TrafficMirrorTargetId": { + "type": "string" + }, + "VirtualNetworkId": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TrafficMirrorTargetId", + "NetworkInterfaceId", + "TrafficMirrorFilterId", + "SessionNumber" + ], + "typeName": "AWS::EC2::TrafficMirrorSession" +} diff --git a/src/schema/aws-ec2-trafficmirrortarget.json b/src/schema/aws-ec2-trafficmirrortarget.json index bec88f91..09e5523e 100644 --- a/src/schema/aws-ec2-trafficmirrortarget.json +++ b/src/schema/aws-ec2-trafficmirrortarget.json @@ -1,59 +1,59 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GatewayLoadBalancerEndpointId", - "/properties/NetworkLoadBalancerArn", - "/properties/NetworkInterfaceId", - "/properties/Description" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::TrafficMirrorTarget", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "GatewayLoadBalancerEndpointId": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "NetworkInterfaceId": { - "type": "string" - }, - "NetworkLoadBalancerArn": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "typeName": "AWS::EC2::TrafficMirrorTarget" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GatewayLoadBalancerEndpointId", + "/properties/NetworkLoadBalancerArn", + "/properties/NetworkInterfaceId", + "/properties/Description" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::TrafficMirrorTarget", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "type": "string" + }, + "GatewayLoadBalancerEndpointId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "NetworkInterfaceId": { + "type": "string" + }, + "NetworkLoadBalancerArn": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::EC2::TrafficMirrorTarget" +} diff --git a/src/schema/aws-ec2-transitgateway.json b/src/schema/aws-ec2-transitgateway.json index 3e0f9cec..841d1763 100644 --- a/src/schema/aws-ec2-transitgateway.json +++ b/src/schema/aws-ec2-transitgateway.json @@ -1,159 +1,143 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AmazonSideAsn", - "/properties/MulticastSupport" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::TransitGateway", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateTransitGateway", - "ec2:CreateTags", - "ec2:DescribeTransitGateways", - "ec2:DescribeTags", - "ec2:DeleteTransitGateway", - "ec2:DeleteTags", - "ec2:ModifyTransitGateway", - "ec2:ModifyTransitGatewayOptions" - ] - }, - "delete": { - "permissions": [ - "ec2:CreateTransitGateway", - "ec2:CreateTags", - "ec2:DescribeTransitGateways", - "ec2:DescribeTags", - "ec2:DeleteTransitGateway", - "ec2:DeleteTags", - "ec2:ModifyTransitGateway", - "ec2:ModifyTransitGatewayOptions" - ] - }, - "list": { - "permissions": [ - "ec2:CreateTransitGateway", - "ec2:CreateTags", - "ec2:DescribeTransitGateways", - "ec2:DescribeTags", - "ec2:DeleteTransitGateway", - "ec2:DeleteTags", - "ec2:ModifyTransitGateway", - "ec2:ModifyTransitGatewayOptions" - ] - }, - "read": { - "permissions": [ - "ec2:CreateTransitGateway", - "ec2:CreateTags", - "ec2:DescribeTransitGateways", - "ec2:DescribeTags", - "ec2:DeleteTransitGateway", - "ec2:DeleteTags", - "ec2:ModifyTransitGateway", - "ec2:ModifyTransitGatewayOptions" - ] - }, - "update": { - "permissions": [ - "ec2:CreateTransitGateway", - "ec2:CreateTags", - "ec2:DescribeTransitGateways", - "ec2:DescribeTags", - "ec2:DeleteTransitGateway", - "ec2:DeleteTags", - "ec2:ModifyTransitGateway", - "ec2:ModifyTransitGatewayOptions" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AmazonSideAsn": { - "format": "int64", - "type": "integer" - }, - "AssociationDefaultRouteTableId": { - "type": "string" - }, - "AutoAcceptSharedAttachments": { - "type": "string" - }, - "DefaultRouteTableAssociation": { - "type": "string" - }, - "DefaultRouteTablePropagation": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "DnsSupport": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "MulticastSupport": { - "type": "string" - }, - "PropagationDefaultRouteTableId": { - "type": "string" - }, - "SecurityGroupReferencingSupport": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TransitGatewayArn": { - "type": "string" - }, - "TransitGatewayCidrBlocks": { - "items": { - "type": "string" - }, - "type": "array" - }, - "VpnEcmpSupport": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/TransitGatewayArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::TransitGateway" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AmazonSideAsn", + "/properties/MulticastSupport" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::TransitGateway", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateTransitGateway", + "ec2:CreateTags", + "ec2:DescribeTransitGateways", + "ec2:DescribeTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeTransitGateways", + "ec2:DescribeTags", + "ec2:DeleteTransitGateway", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTransitGateways", + "ec2:DescribeTags" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeTransitGateways", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTransitGateway", + "ec2:CreateTags", + "ec2:DescribeTransitGateways", + "ec2:DescribeTags", + "ec2:DeleteTransitGateway", + "ec2:DeleteTags", + "ec2:ModifyTransitGateway", + "ec2:ModifyTransitGatewayOptions" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonSideAsn": { + "format": "int64", + "type": "integer" + }, + "AssociationDefaultRouteTableId": { + "type": "string" + }, + "AutoAcceptSharedAttachments": { + "type": "string" + }, + "DefaultRouteTableAssociation": { + "type": "string" + }, + "DefaultRouteTablePropagation": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DnsSupport": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "MulticastSupport": { + "type": "string" + }, + "PropagationDefaultRouteTableId": { + "type": "string" + }, + "SecurityGroupReferencingSupport": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TransitGatewayArn": { + "type": "string" + }, + "TransitGatewayCidrBlocks": { + "items": { + "type": "string" + }, + "type": "array" + }, + "VpnEcmpSupport": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/TransitGatewayArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::TransitGateway" +} diff --git a/src/schema/aws-ec2-transitgatewayattachment.json b/src/schema/aws-ec2-transitgatewayattachment.json index de7a5101..994129bb 100644 --- a/src/schema/aws-ec2-transitgatewayattachment.json +++ b/src/schema/aws-ec2-transitgatewayattachment.json @@ -1,165 +1,145 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TransitGatewayId", - "/properties/VpcId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::TransitGatewayAttachment", - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeTransitGatewayAttachments", - "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:CreateTransitGatewayVpcAttachment", - "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeTags", - "ec2:DescribeTransitGatewayAttachments", - "ec2:ModifyTransitGatewayVpcAttachment" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeTransitGatewayAttachments", - "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:CreateTransitGatewayVpcAttachment", - "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeTags", - "ec2:DescribeTransitGatewayAttachments", - "ec2:ModifyTransitGatewayVpcAttachment" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeTransitGatewayAttachments", - "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:DescribeTags", - "ec2:CreateTransitGatewayVpcAttachment", - "ec2:CreateTags", - "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:DeleteTags", - "ec2:ModifyTransitGatewayVpcAttachment" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeTransitGatewayAttachments", - "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:CreateTransitGatewayVpcAttachment", - "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeTags", - "ec2:DescribeTransitGatewayAttachments", - "ec2:ModifyTransitGatewayVpcAttachment" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeTransitGatewayAttachments", - "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:DescribeTags", - "ec2:CreateTransitGatewayVpcAttachment", - "ec2:CreateTags", - "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:DeleteTags", - "ec2:ModifyTransitGatewayVpcAttachment" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "Options": { - "additionalProperties": false, - "description": "The options for the transit gateway vpc attachment.", - "properties": { - "ApplianceModeSupport": { - "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable", - "type": "string" - }, - "DnsSupport": { - "description": "Indicates whether to enable DNS Support for Vpc Attachment. Valid Values: enable | disable", - "type": "string" - }, - "Ipv6Support": { - "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable", - "type": "string" - }, - "SecurityGroupReferencingSupport": { - "description": "Indicates whether to enable Security Group referencing support for Vpc Attachment. Valid Values: enable | disable", - "type": "string" - } - }, - "type": "object" - }, - "SubnetIds": { - "insertionOrder": false, - "items": { - "relationshipRef": { - "propertyPath": "/properties/SubnetId", - "typeName": "AWS::EC2::Subnet" - }, - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TransitGatewayId": { - "type": "string" - }, - "VpcId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "VpcId", - "SubnetIds", - "TransitGatewayId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::TransitGatewayAttachment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayId", + "/properties/VpcId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::TransitGatewayAttachment", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:CreateTransitGatewayVpcAttachment", + "ec2:CreateTags", + "ec2:DescribeTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DeleteTransitGatewayVpcAttachment", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DescribeTags" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DescribeTags", + "ec2:CreateTransitGatewayVpcAttachment", + "ec2:CreateTags", + "ec2:DeleteTransitGatewayVpcAttachment", + "ec2:DeleteTags", + "ec2:ModifyTransitGatewayVpcAttachment" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "Options": { + "additionalProperties": false, + "description": "The options for the transit gateway vpc attachment.", + "properties": { + "ApplianceModeSupport": { + "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable", + "type": "string" + }, + "DnsSupport": { + "description": "Indicates whether to enable DNS Support for Vpc Attachment. Valid Values: enable | disable", + "type": "string" + }, + "Ipv6Support": { + "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable", + "type": "string" + }, + "SecurityGroupReferencingSupport": { + "description": "Indicates whether to enable Security Group referencing support for Vpc Attachment. Valid Values: enable | disable", + "type": "string" + } + }, + "type": "object" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "relationshipRef": { + "propertyPath": "/properties/SubnetId", + "typeName": "AWS::EC2::Subnet" + }, + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TransitGatewayId": { + "type": "string" + }, + "VpcId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "VpcId", + "SubnetIds", + "TransitGatewayId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::TransitGatewayAttachment" +} diff --git a/src/schema/aws-ec2-transitgatewayconnect.json b/src/schema/aws-ec2-transitgatewayconnect.json index 2402934d..87ea898e 100644 --- a/src/schema/aws-ec2-transitgatewayconnect.json +++ b/src/schema/aws-ec2-transitgatewayconnect.json @@ -1,122 +1,131 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TransportTransitGatewayAttachmentId", - "/properties/Options" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key of the tag. Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with aws:.", - "type": "string" - }, - "Value": { - "description": "The value of the tag. Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode characters.", - "type": "string" - } - }, - "type": "object" - }, - "TransitGatewayConnectOptions": { - "additionalProperties": false, - "properties": { - "Protocol": { - "description": "The tunnel protocol.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The AWS::EC2::TransitGatewayConnect type", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateTransitGatewayConnect", - "ec2:DescribeTransitGatewayConnects", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteTransitGatewayConnect", - "ec2:DescribeTransitGatewayConnects", - "ec2:DeleteTags" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeTransitGatewayConnects" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeTransitGatewayConnects" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeTransitGatewayConnects", - "ec2:DeleteTags", - "ec2:CreateTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/TransitGatewayAttachmentId" - ], - "properties": { - "CreationTime": { - "description": "The creation time.", - "type": "string" - }, - "Options": { - "$ref": "#/definitions/TransitGatewayConnectOptions", - "description": "The Connect attachment options." - }, - "State": { - "description": "The state of the attachment.", - "type": "string" - }, - "Tags": { - "description": "The tags for the attachment.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "TransitGatewayAttachmentId": { - "description": "The ID of the Connect attachment.", - "type": "string" - }, - "TransitGatewayId": { - "description": "The ID of the transit gateway.", - "type": "string" - }, - "TransportTransitGatewayAttachmentId": { - "description": "The ID of the attachment from which the Connect attachment was created.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/TransitGatewayAttachmentId", - "/properties/State", - "/properties/CreationTime", - "/properties/TransitGatewayId" - ], - "required": [ - "TransportTransitGatewayAttachmentId", - "Options" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-myservice", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::TransitGatewayConnect" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransportTransitGatewayAttachmentId", + "/properties/Options" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key of the tag. Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with aws:.", + "type": "string" + }, + "Value": { + "description": "The value of the tag. Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode characters.", + "type": "string" + } + }, + "type": "object" + }, + "TransitGatewayConnectOptions": { + "additionalProperties": false, + "properties": { + "Protocol": { + "description": "The tunnel protocol.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The AWS::EC2::TransitGatewayConnect type", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateTransitGatewayConnect", + "ec2:DescribeTransitGatewayConnects", + "ec2:CreateTags", + "ec2:DescribeTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteTransitGatewayConnect", + "ec2:DescribeTransitGatewayConnects", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTransitGatewayConnects", + "ec2:DescribeTags" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeTransitGatewayConnects", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeTransitGatewayConnects", + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:DescribeTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayAttachmentId" + ], + "properties": { + "CreationTime": { + "description": "The creation time.", + "type": "string" + }, + "Options": { + "$ref": "#/definitions/TransitGatewayConnectOptions", + "description": "The Connect attachment options." + }, + "State": { + "description": "The state of the attachment.", + "type": "string" + }, + "Tags": { + "description": "The tags for the attachment.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TransitGatewayAttachmentId": { + "description": "The ID of the Connect attachment.", + "type": "string" + }, + "TransitGatewayId": { + "description": "The ID of the transit gateway.", + "type": "string" + }, + "TransportTransitGatewayAttachmentId": { + "description": "The ID of the attachment from which the Connect attachment was created.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TransitGatewayAttachmentId", + "/properties/State", + "/properties/CreationTime", + "/properties/TransitGatewayId" + ], + "required": [ + "TransportTransitGatewayAttachmentId", + "Options" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-myservice", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::TransitGatewayConnect" +} diff --git a/src/schema/aws-ec2-transitgatewaymulticastdomain.json b/src/schema/aws-ec2-transitgatewaymulticastdomain.json index 58afbded..e863ce42 100644 --- a/src/schema/aws-ec2-transitgatewaymulticastdomain.json +++ b/src/schema/aws-ec2-transitgatewaymulticastdomain.json @@ -1,126 +1,135 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TransitGatewayId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key of the tag. Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with aws:.", - "type": "string" - }, - "Value": { - "description": "The value of the tag. Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode characters.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The AWS::EC2::TransitGatewayMulticastDomain type", - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeTransitGatewayMulticastDomains", - "ec2:CreateTransitGatewayMulticastDomain", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeTransitGatewayMulticastDomains", - "ec2:DeleteTransitGatewayMulticastDomain", - "ec2:DeleteTags" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeTransitGatewayMulticastDomains" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeTransitGatewayMulticastDomains" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeTransitGatewayMulticastDomains", - "ec2:DeleteTags", - "ec2:CreateTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/TransitGatewayMulticastDomainId" - ], - "properties": { - "CreationTime": { - "description": "The time the transit gateway multicast domain was created.", - "format": "date-time", - "type": "string" - }, - "Options": { - "additionalProperties": false, - "description": "The options for the transit gateway multicast domain.", - "properties": { - "AutoAcceptSharedAssociations": { - "description": "Indicates whether to automatically cross-account subnet associations that are associated with the transit gateway multicast domain. Valid Values: enable | disable", - "type": "string" - }, - "Igmpv2Support": { - "description": "Indicates whether Internet Group Management Protocol (IGMP) version 2 is turned on for the transit gateway multicast domain. Valid Values: enable | disable", - "type": "string" - }, - "StaticSourcesSupport": { - "description": "Indicates whether support for statically configuring transit gateway multicast group sources is turned on. Valid Values: enable | disable", - "type": "string" - } - }, - "type": "object" - }, - "State": { - "description": "The state of the transit gateway multicast domain.", - "type": "string" - }, - "Tags": { - "description": "The tags for the transit gateway multicast domain.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "TransitGatewayId": { - "description": "The ID of the transit gateway.", - "type": "string" - }, - "TransitGatewayMulticastDomainArn": { - "description": "The Amazon Resource Name (ARN) of the transit gateway multicast domain.", - "type": "string" - }, - "TransitGatewayMulticastDomainId": { - "description": "The ID of the transit gateway multicast domain.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/TransitGatewayMulticastDomainId", - "/properties/State", - "/properties/CreationTime", - "/properties/TransitGatewayMulticastDomainArn" - ], - "required": [ - "TransitGatewayId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway/aws-ec2-transitgatewaymulticastdomain", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::TransitGatewayMulticastDomain" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key of the tag. Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with aws:.", + "type": "string" + }, + "Value": { + "description": "The value of the tag. Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode characters.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The AWS::EC2::TransitGatewayMulticastDomain type", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeTransitGatewayMulticastDomains", + "ec2:CreateTransitGatewayMulticastDomain", + "ec2:CreateTags", + "ec2:DescribeTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeTransitGatewayMulticastDomains", + "ec2:DeleteTransitGatewayMulticastDomain", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTransitGatewayMulticastDomains", + "ec2:DescribeTags" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeTransitGatewayMulticastDomains", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeTransitGatewayMulticastDomains", + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:DescribeTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayMulticastDomainId" + ], + "properties": { + "CreationTime": { + "description": "The time the transit gateway multicast domain was created.", + "format": "date-time", + "type": "string" + }, + "Options": { + "additionalProperties": false, + "description": "The options for the transit gateway multicast domain.", + "properties": { + "AutoAcceptSharedAssociations": { + "description": "Indicates whether to automatically cross-account subnet associations that are associated with the transit gateway multicast domain. Valid Values: enable | disable", + "type": "string" + }, + "Igmpv2Support": { + "description": "Indicates whether Internet Group Management Protocol (IGMP) version 2 is turned on for the transit gateway multicast domain. Valid Values: enable | disable", + "type": "string" + }, + "StaticSourcesSupport": { + "description": "Indicates whether support for statically configuring transit gateway multicast group sources is turned on. Valid Values: enable | disable", + "type": "string" + } + }, + "type": "object" + }, + "State": { + "description": "The state of the transit gateway multicast domain.", + "type": "string" + }, + "Tags": { + "description": "The tags for the transit gateway multicast domain.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TransitGatewayId": { + "description": "The ID of the transit gateway.", + "type": "string" + }, + "TransitGatewayMulticastDomainArn": { + "description": "The Amazon Resource Name (ARN) of the transit gateway multicast domain.", + "type": "string" + }, + "TransitGatewayMulticastDomainId": { + "description": "The ID of the transit gateway multicast domain.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TransitGatewayMulticastDomainId", + "/properties/State", + "/properties/CreationTime", + "/properties/TransitGatewayMulticastDomainArn" + ], + "required": [ + "TransitGatewayId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway/aws-ec2-transitgatewaymulticastdomain", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::TransitGatewayMulticastDomain" +} diff --git a/src/schema/aws-ec2-transitgatewaymulticastdomainassociation.json b/src/schema/aws-ec2-transitgatewaymulticastdomainassociation.json index e05c4c8c..cdecddc8 100644 --- a/src/schema/aws-ec2-transitgatewaymulticastdomainassociation.json +++ b/src/schema/aws-ec2-transitgatewaymulticastdomainassociation.json @@ -1,82 +1,82 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TransitGatewayMulticastDomainId", - "/properties/TransitGatewayAttachmentId", - "/properties/SubnetId" - ], - "description": "The AWS::EC2::TransitGatewayMulticastDomainAssociation type", - "handlers": { - "create": { - "permissions": [ - "ec2:AssociateTransitGatewayMulticastDomain", - "ec2:GetTransitGatewayMulticastDomainAssociations" - ] - }, - "delete": { - "permissions": [ - "ec2:DisassociateTransitGatewayMulticastDomain", - "ec2:GetTransitGatewayMulticastDomainAssociations" - ] - }, - "list": { - "permissions": [ - "ec2:GetTransitGatewayMulticastDomainAssociations" - ] - }, - "read": { - "permissions": [ - "ec2:GetTransitGatewayMulticastDomainAssociations" - ] - } - }, - "primaryIdentifier": [ - "/properties/TransitGatewayMulticastDomainId", - "/properties/TransitGatewayAttachmentId", - "/properties/SubnetId" - ], - "properties": { - "ResourceId": { - "description": "The ID of the resource.", - "type": "string" - }, - "ResourceType": { - "description": "The type of resource, for example a VPC attachment.", - "type": "string" - }, - "State": { - "description": "The state of the subnet association.", - "type": "string" - }, - "SubnetId": { - "description": "The IDs of the subnets to associate with the transit gateway multicast domain.", - "type": "string" - }, - "TransitGatewayAttachmentId": { - "description": "The ID of the transit gateway attachment.", - "type": "string" - }, - "TransitGatewayMulticastDomainId": { - "description": "The ID of the transit gateway multicast domain.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ResourceId", - "/properties/ResourceType", - "/properties/State" - ], - "required": [ - "TransitGatewayMulticastDomainId", - "TransitGatewayAttachmentId", - "SubnetId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-myservice", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::TransitGatewayMulticastDomainAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayMulticastDomainId", + "/properties/TransitGatewayAttachmentId", + "/properties/SubnetId" + ], + "description": "The AWS::EC2::TransitGatewayMulticastDomainAssociation type", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateTransitGatewayMulticastDomain", + "ec2:GetTransitGatewayMulticastDomainAssociations" + ] + }, + "delete": { + "permissions": [ + "ec2:DisassociateTransitGatewayMulticastDomain", + "ec2:GetTransitGatewayMulticastDomainAssociations" + ] + }, + "list": { + "permissions": [ + "ec2:GetTransitGatewayMulticastDomainAssociations" + ] + }, + "read": { + "permissions": [ + "ec2:GetTransitGatewayMulticastDomainAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayMulticastDomainId", + "/properties/TransitGatewayAttachmentId", + "/properties/SubnetId" + ], + "properties": { + "ResourceId": { + "description": "The ID of the resource.", + "type": "string" + }, + "ResourceType": { + "description": "The type of resource, for example a VPC attachment.", + "type": "string" + }, + "State": { + "description": "The state of the subnet association.", + "type": "string" + }, + "SubnetId": { + "description": "The IDs of the subnets to associate with the transit gateway multicast domain.", + "type": "string" + }, + "TransitGatewayAttachmentId": { + "description": "The ID of the transit gateway attachment.", + "type": "string" + }, + "TransitGatewayMulticastDomainId": { + "description": "The ID of the transit gateway multicast domain.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ResourceId", + "/properties/ResourceType", + "/properties/State" + ], + "required": [ + "TransitGatewayMulticastDomainId", + "TransitGatewayAttachmentId", + "SubnetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-myservice", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::TransitGatewayMulticastDomainAssociation" +} diff --git a/src/schema/aws-ec2-transitgatewaymulticastgroupmember.json b/src/schema/aws-ec2-transitgatewaymulticastgroupmember.json index 06b02617..3d4c8331 100644 --- a/src/schema/aws-ec2-transitgatewaymulticastgroupmember.json +++ b/src/schema/aws-ec2-transitgatewaymulticastgroupmember.json @@ -1,112 +1,112 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TransitGatewayMulticastDomainId", - "/properties/GroupIpAddress", - "/properties/NetworkInterfaceId" - ], - "description": "The AWS::EC2::TransitGatewayMulticastGroupMember registers and deregisters members and sources (network interfaces) with the transit gateway multicast group", - "handlers": { - "create": { - "permissions": [ - "ec2:RegisterTransitGatewayMulticastGroupMembers", - "ec2:SearchTransitGatewayMulticastGroups" - ] - }, - "delete": { - "permissions": [ - "ec2:DeregisterTransitGatewayMulticastGroupMembers", - "ec2:SearchTransitGatewayMulticastGroups" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "TransitGatewayMulticastDomainId": { - "$ref": "resource-schema.json#/properties/TransitGatewayMulticastDomainId" - } - }, - "required": [ - "TransitGatewayMulticastDomainId" - ] - }, - "permissions": [ - "ec2:SearchTransitGatewayMulticastGroups" - ] - }, - "read": { - "permissions": [ - "ec2:SearchTransitGatewayMulticastGroups" - ] - } - }, - "primaryIdentifier": [ - "/properties/TransitGatewayMulticastDomainId", - "/properties/GroupIpAddress", - "/properties/NetworkInterfaceId" - ], - "properties": { - "GroupIpAddress": { - "description": "The IP address assigned to the transit gateway multicast group.", - "type": "string" - }, - "GroupMember": { - "description": "Indicates that the resource is a transit gateway multicast group member.", - "type": "boolean" - }, - "GroupSource": { - "description": "Indicates that the resource is a transit gateway multicast group member.", - "type": "boolean" - }, - "MemberType": { - "description": "The member type (for example, static).", - "type": "string" - }, - "NetworkInterfaceId": { - "description": "The ID of the transit gateway attachment.", - "type": "string" - }, - "ResourceId": { - "description": "The ID of the resource.", - "type": "string" - }, - "ResourceType": { - "description": "The type of resource, for example a VPC attachment.", - "type": "string" - }, - "SubnetId": { - "description": "The ID of the subnet.", - "type": "string" - }, - "TransitGatewayAttachmentId": { - "description": "The ID of the transit gateway attachment.", - "type": "string" - }, - "TransitGatewayMulticastDomainId": { - "description": "The ID of the transit gateway multicast domain.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/SubnetId", - "/properties/ResourceId", - "/properties/ResourceType", - "/properties/GroupSource", - "/properties/GroupMember", - "/properties/MemberType", - "/properties/TransitGatewayAttachmentId" - ], - "required": [ - "GroupIpAddress", - "NetworkInterfaceId", - "TransitGatewayMulticastDomainId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgatewaymulticastdomain/aws-ec2-transitgatewaymulticastgroupsource", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::TransitGatewayMulticastGroupMember" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayMulticastDomainId", + "/properties/GroupIpAddress", + "/properties/NetworkInterfaceId" + ], + "description": "The AWS::EC2::TransitGatewayMulticastGroupMember registers and deregisters members and sources (network interfaces) with the transit gateway multicast group", + "handlers": { + "create": { + "permissions": [ + "ec2:RegisterTransitGatewayMulticastGroupMembers", + "ec2:SearchTransitGatewayMulticastGroups" + ] + }, + "delete": { + "permissions": [ + "ec2:DeregisterTransitGatewayMulticastGroupMembers", + "ec2:SearchTransitGatewayMulticastGroups" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TransitGatewayMulticastDomainId": { + "$ref": "resource-schema.json#/properties/TransitGatewayMulticastDomainId" + } + }, + "required": [ + "TransitGatewayMulticastDomainId" + ] + }, + "permissions": [ + "ec2:SearchTransitGatewayMulticastGroups" + ] + }, + "read": { + "permissions": [ + "ec2:SearchTransitGatewayMulticastGroups" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayMulticastDomainId", + "/properties/GroupIpAddress", + "/properties/NetworkInterfaceId" + ], + "properties": { + "GroupIpAddress": { + "description": "The IP address assigned to the transit gateway multicast group.", + "type": "string" + }, + "GroupMember": { + "description": "Indicates that the resource is a transit gateway multicast group member.", + "type": "boolean" + }, + "GroupSource": { + "description": "Indicates that the resource is a transit gateway multicast group member.", + "type": "boolean" + }, + "MemberType": { + "description": "The member type (for example, static).", + "type": "string" + }, + "NetworkInterfaceId": { + "description": "The ID of the transit gateway attachment.", + "type": "string" + }, + "ResourceId": { + "description": "The ID of the resource.", + "type": "string" + }, + "ResourceType": { + "description": "The type of resource, for example a VPC attachment.", + "type": "string" + }, + "SubnetId": { + "description": "The ID of the subnet.", + "type": "string" + }, + "TransitGatewayAttachmentId": { + "description": "The ID of the transit gateway attachment.", + "type": "string" + }, + "TransitGatewayMulticastDomainId": { + "description": "The ID of the transit gateway multicast domain.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/SubnetId", + "/properties/ResourceId", + "/properties/ResourceType", + "/properties/GroupSource", + "/properties/GroupMember", + "/properties/MemberType", + "/properties/TransitGatewayAttachmentId" + ], + "required": [ + "GroupIpAddress", + "NetworkInterfaceId", + "TransitGatewayMulticastDomainId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgatewaymulticastdomain/aws-ec2-transitgatewaymulticastgroupsource", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::TransitGatewayMulticastGroupMember" +} diff --git a/src/schema/aws-ec2-transitgatewaymulticastgroupsource.json b/src/schema/aws-ec2-transitgatewaymulticastgroupsource.json index b6c1fd57..a4cbe8af 100644 --- a/src/schema/aws-ec2-transitgatewaymulticastgroupsource.json +++ b/src/schema/aws-ec2-transitgatewaymulticastgroupsource.json @@ -1,112 +1,112 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TransitGatewayMulticastDomainId", - "/properties/GroupIpAddress", - "/properties/NetworkInterfaceId" - ], - "description": "The AWS::EC2::TransitGatewayMulticastGroupSource registers and deregisters members and sources (network interfaces) with the transit gateway multicast group", - "handlers": { - "create": { - "permissions": [ - "ec2:RegisterTransitGatewayMulticastGroupSources", - "ec2:SearchTransitGatewayMulticastGroups" - ] - }, - "delete": { - "permissions": [ - "ec2:DeregisterTransitGatewayMulticastGroupSources", - "ec2:SearchTransitGatewayMulticastGroups" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "TransitGatewayMulticastDomainId": { - "$ref": "resource-schema.json#/properties/TransitGatewayMulticastDomainId" - } - }, - "required": [ - "TransitGatewayMulticastDomainId" - ] - }, - "permissions": [ - "ec2:SearchTransitGatewayMulticastGroups" - ] - }, - "read": { - "permissions": [ - "ec2:SearchTransitGatewayMulticastGroups" - ] - } - }, - "primaryIdentifier": [ - "/properties/TransitGatewayMulticastDomainId", - "/properties/GroupIpAddress", - "/properties/NetworkInterfaceId" - ], - "properties": { - "GroupIpAddress": { - "description": "The IP address assigned to the transit gateway multicast group.", - "type": "string" - }, - "GroupMember": { - "description": "Indicates that the resource is a transit gateway multicast group member.", - "type": "boolean" - }, - "GroupSource": { - "description": "Indicates that the resource is a transit gateway multicast group member.", - "type": "boolean" - }, - "NetworkInterfaceId": { - "description": "The ID of the transit gateway attachment.", - "type": "string" - }, - "ResourceId": { - "description": "The ID of the resource.", - "type": "string" - }, - "ResourceType": { - "description": "The type of resource, for example a VPC attachment.", - "type": "string" - }, - "SourceType": { - "description": "The source type.", - "type": "string" - }, - "SubnetId": { - "description": "The ID of the subnet.", - "type": "string" - }, - "TransitGatewayAttachmentId": { - "description": "The ID of the transit gateway attachment.", - "type": "string" - }, - "TransitGatewayMulticastDomainId": { - "description": "The ID of the transit gateway multicast domain.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/SubnetId", - "/properties/ResourceId", - "/properties/ResourceType", - "/properties/GroupSource", - "/properties/GroupMember", - "/properties/SourceType", - "/properties/TransitGatewayAttachmentId" - ], - "required": [ - "TransitGatewayMulticastDomainId", - "NetworkInterfaceId", - "GroupIpAddress" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgatewaymulticastdomain/aws-ec2-transitgatewaymulticastgroupsource", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::TransitGatewayMulticastGroupSource" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayMulticastDomainId", + "/properties/GroupIpAddress", + "/properties/NetworkInterfaceId" + ], + "description": "The AWS::EC2::TransitGatewayMulticastGroupSource registers and deregisters members and sources (network interfaces) with the transit gateway multicast group", + "handlers": { + "create": { + "permissions": [ + "ec2:RegisterTransitGatewayMulticastGroupSources", + "ec2:SearchTransitGatewayMulticastGroups" + ] + }, + "delete": { + "permissions": [ + "ec2:DeregisterTransitGatewayMulticastGroupSources", + "ec2:SearchTransitGatewayMulticastGroups" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TransitGatewayMulticastDomainId": { + "$ref": "resource-schema.json#/properties/TransitGatewayMulticastDomainId" + } + }, + "required": [ + "TransitGatewayMulticastDomainId" + ] + }, + "permissions": [ + "ec2:SearchTransitGatewayMulticastGroups" + ] + }, + "read": { + "permissions": [ + "ec2:SearchTransitGatewayMulticastGroups" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayMulticastDomainId", + "/properties/GroupIpAddress", + "/properties/NetworkInterfaceId" + ], + "properties": { + "GroupIpAddress": { + "description": "The IP address assigned to the transit gateway multicast group.", + "type": "string" + }, + "GroupMember": { + "description": "Indicates that the resource is a transit gateway multicast group member.", + "type": "boolean" + }, + "GroupSource": { + "description": "Indicates that the resource is a transit gateway multicast group member.", + "type": "boolean" + }, + "NetworkInterfaceId": { + "description": "The ID of the transit gateway attachment.", + "type": "string" + }, + "ResourceId": { + "description": "The ID of the resource.", + "type": "string" + }, + "ResourceType": { + "description": "The type of resource, for example a VPC attachment.", + "type": "string" + }, + "SourceType": { + "description": "The source type.", + "type": "string" + }, + "SubnetId": { + "description": "The ID of the subnet.", + "type": "string" + }, + "TransitGatewayAttachmentId": { + "description": "The ID of the transit gateway attachment.", + "type": "string" + }, + "TransitGatewayMulticastDomainId": { + "description": "The ID of the transit gateway multicast domain.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/SubnetId", + "/properties/ResourceId", + "/properties/ResourceType", + "/properties/GroupSource", + "/properties/GroupMember", + "/properties/SourceType", + "/properties/TransitGatewayAttachmentId" + ], + "required": [ + "TransitGatewayMulticastDomainId", + "NetworkInterfaceId", + "GroupIpAddress" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgatewaymulticastdomain/aws-ec2-transitgatewaymulticastgroupsource", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::TransitGatewayMulticastGroupSource" +} diff --git a/src/schema/aws-ec2-transitgatewaypeeringattachment.json b/src/schema/aws-ec2-transitgatewaypeeringattachment.json index edaddf8f..16a9b06a 100644 --- a/src/schema/aws-ec2-transitgatewaypeeringattachment.json +++ b/src/schema/aws-ec2-transitgatewaypeeringattachment.json @@ -1,139 +1,148 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TransitGatewayId", - "/properties/PeerTransitGatewayId", - "/properties/PeerRegion", - "/properties/PeerAccountId" - ], - "definitions": { - "PeeringAttachmentStatus": { - "additionalProperties": false, - "properties": { - "Code": { - "description": "The status code.", - "type": "string" - }, - "Message": { - "description": "The status message, if applicable.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key of the tag. Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with aws:.", - "type": "string" - }, - "Value": { - "description": "The value of the tag. Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode characters.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The AWS::EC2::TransitGatewayPeeringAttachment type", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateTransitGatewayPeeringAttachment", - "ec2:DescribeTransitGatewayPeeringAttachments", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteTransitGatewayPeeringAttachment", - "ec2:DescribeTransitGatewayPeeringAttachments", - "ec2:DeleteTags" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeTransitGatewayPeeringAttachments" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeTransitGatewayPeeringAttachments" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeTransitGatewayPeeringAttachments", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/TransitGatewayAttachmentId" - ], - "properties": { - "CreationTime": { - "description": "The time the transit gateway peering attachment was created.", - "format": "date-time", - "type": "string" - }, - "PeerAccountId": { - "description": "The ID of the peer account", - "type": "string" - }, - "PeerRegion": { - "description": "Peer Region", - "type": "string" - }, - "PeerTransitGatewayId": { - "description": "The ID of the peer transit gateway.", - "type": "string" - }, - "State": { - "description": "The state of the transit gateway peering attachment. Note that the initiating state has been deprecated.", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/PeeringAttachmentStatus", - "description": "The status of the transit gateway peering attachment." - }, - "Tags": { - "description": "The tags for the transit gateway peering attachment.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "TransitGatewayAttachmentId": { - "description": "The ID of the transit gateway peering attachment.", - "type": "string" - }, - "TransitGatewayId": { - "description": "The ID of the transit gateway.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/TransitGatewayAttachmentId", - "/properties/Status", - "/properties/State", - "/properties/CreationTime" - ], - "required": [ - "TransitGatewayId", - "PeerTransitGatewayId", - "PeerAccountId", - "PeerRegion" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-myservice", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::TransitGatewayPeeringAttachment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayId", + "/properties/PeerTransitGatewayId", + "/properties/PeerRegion", + "/properties/PeerAccountId" + ], + "definitions": { + "PeeringAttachmentStatus": { + "additionalProperties": false, + "properties": { + "Code": { + "description": "The status code.", + "type": "string" + }, + "Message": { + "description": "The status message, if applicable.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key of the tag. Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with aws:.", + "type": "string" + }, + "Value": { + "description": "The value of the tag. Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode characters.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The AWS::EC2::TransitGatewayPeeringAttachment type", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateTransitGatewayPeeringAttachment", + "ec2:DescribeTransitGatewayPeeringAttachments", + "ec2:CreateTags", + "ec2:DescribeTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteTransitGatewayPeeringAttachment", + "ec2:DescribeTransitGatewayPeeringAttachments", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTransitGatewayPeeringAttachments", + "ec2:DescribeTags" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeTransitGatewayPeeringAttachments", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeTransitGatewayPeeringAttachments", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayAttachmentId" + ], + "properties": { + "CreationTime": { + "description": "The time the transit gateway peering attachment was created.", + "format": "date-time", + "type": "string" + }, + "PeerAccountId": { + "description": "The ID of the peer account", + "type": "string" + }, + "PeerRegion": { + "description": "Peer Region", + "type": "string" + }, + "PeerTransitGatewayId": { + "description": "The ID of the peer transit gateway.", + "type": "string" + }, + "State": { + "description": "The state of the transit gateway peering attachment. Note that the initiating state has been deprecated.", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/PeeringAttachmentStatus", + "description": "The status of the transit gateway peering attachment." + }, + "Tags": { + "description": "The tags for the transit gateway peering attachment.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TransitGatewayAttachmentId": { + "description": "The ID of the transit gateway peering attachment.", + "type": "string" + }, + "TransitGatewayId": { + "description": "The ID of the transit gateway.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TransitGatewayAttachmentId", + "/properties/Status", + "/properties/State", + "/properties/CreationTime" + ], + "required": [ + "TransitGatewayId", + "PeerTransitGatewayId", + "PeerAccountId", + "PeerRegion" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-myservice", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::TransitGatewayPeeringAttachment" +} diff --git a/src/schema/aws-ec2-transitgatewayroute.json b/src/schema/aws-ec2-transitgatewayroute.json index e9b6449f..b2393079 100644 --- a/src/schema/aws-ec2-transitgatewayroute.json +++ b/src/schema/aws-ec2-transitgatewayroute.json @@ -1,80 +1,80 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TransitGatewayRouteTableId", - "/properties/TransitGatewayAttachmentId", - "/properties/DestinationCidrBlock", - "/properties/Blackhole" - ], - "definitions": {}, - "description": "Resource Type definition for AWS::EC2::TransitGatewayRoute", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateTransitGatewayRoute", - "ec2:SearchTransitGatewayRoutes" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteTransitGatewayRoute", - "ec2:SearchTransitGatewayRoutes" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "TransitGatewayRouteTableId": { - "$ref": "resource-schema.json#/properties/TransitGatewayRouteTableId" - } - }, - "required": [ - "TransitGatewayRouteTableId" - ] - }, - "permissions": [ - "ec2:SearchTransitGatewayRoutes" - ] - }, - "read": { - "permissions": [ - "ec2:SearchTransitGatewayRoutes" - ] - } - }, - "primaryIdentifier": [ - "/properties/TransitGatewayRouteTableId", - "/properties/DestinationCidrBlock" - ], - "properties": { - "Blackhole": { - "description": "Indicates whether to drop traffic that matches this route.", - "type": "boolean" - }, - "DestinationCidrBlock": { - "description": "The CIDR range used for destination matches. Routing decisions are based on the most specific match.", - "type": "string" - }, - "TransitGatewayAttachmentId": { - "description": "The ID of transit gateway attachment.", - "type": "string" - }, - "TransitGatewayRouteTableId": { - "description": "The ID of transit gateway route table.", - "type": "string" - } - }, - "replacementStrategy": "delete_then_create", - "required": [ - "TransitGatewayRouteTableId", - "DestinationCidrBlock" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::TransitGatewayRoute" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId", + "/properties/DestinationCidrBlock", + "/properties/Blackhole" + ], + "definitions": {}, + "description": "Resource Type definition for AWS::EC2::TransitGatewayRoute", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateTransitGatewayRoute", + "ec2:SearchTransitGatewayRoutes" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteTransitGatewayRoute", + "ec2:SearchTransitGatewayRoutes" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TransitGatewayRouteTableId": { + "$ref": "resource-schema.json#/properties/TransitGatewayRouteTableId" + } + }, + "required": [ + "TransitGatewayRouteTableId" + ] + }, + "permissions": [ + "ec2:SearchTransitGatewayRoutes" + ] + }, + "read": { + "permissions": [ + "ec2:SearchTransitGatewayRoutes" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayRouteTableId", + "/properties/DestinationCidrBlock" + ], + "properties": { + "Blackhole": { + "description": "Indicates whether to drop traffic that matches this route.", + "type": "boolean" + }, + "DestinationCidrBlock": { + "description": "The CIDR range used for destination matches. Routing decisions are based on the most specific match.", + "type": "string" + }, + "TransitGatewayAttachmentId": { + "description": "The ID of transit gateway attachment.", + "type": "string" + }, + "TransitGatewayRouteTableId": { + "description": "The ID of transit gateway route table.", + "type": "string" + } + }, + "replacementStrategy": "delete_then_create", + "required": [ + "TransitGatewayRouteTableId", + "DestinationCidrBlock" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::TransitGatewayRoute" +} diff --git a/src/schema/aws-ec2-transitgatewayroutetable.json b/src/schema/aws-ec2-transitgatewayroutetable.json index 05dfe4b5..e59fad6a 100644 --- a/src/schema/aws-ec2-transitgatewayroutetable.json +++ b/src/schema/aws-ec2-transitgatewayroutetable.json @@ -1,102 +1,102 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TransitGatewayId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key of the associated tag key-value pair", - "type": "string" - }, - "Value": { - "description": "The value of the associated tag key-value pair", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::TransitGatewayRouteTable", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateTransitGatewayRouteTable", - "ec2:CreateTags", - "ec2:DescribeTransitGatewayRouteTables" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteTransitGatewayRouteTable", - "ec2:DescribeTransitGatewayRouteTables", - "ec2:GetTransitGatewayRouteTableAssociations", - "ec2:DisassociateTransitGatewayRouteTable" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeTransitGatewayRouteTables" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeTransitGatewayRouteTables" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeTransitGatewayRouteTables", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/TransitGatewayRouteTableId" - ], - "properties": { - "Tags": { - "description": "Tags are composed of a Key/Value pair. You can use tags to categorize and track each parameter group. The tag value null is permitted.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TransitGatewayId": { - "description": "The ID of the transit gateway.", - "type": "string" - }, - "TransitGatewayRouteTableId": { - "description": "Transit Gateway Route Table primary identifier", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/TransitGatewayRouteTableId" - ], - "required": [ - "TransitGatewayId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::TransitGatewayRouteTable" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key of the associated tag key-value pair", + "type": "string" + }, + "Value": { + "description": "The value of the associated tag key-value pair", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::TransitGatewayRouteTable", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateTransitGatewayRouteTable", + "ec2:CreateTags", + "ec2:DescribeTransitGatewayRouteTables" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteTransitGatewayRouteTable", + "ec2:DescribeTransitGatewayRouteTables", + "ec2:GetTransitGatewayRouteTableAssociations", + "ec2:DisassociateTransitGatewayRouteTable" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTransitGatewayRouteTables" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeTransitGatewayRouteTables" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeTransitGatewayRouteTables", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayRouteTableId" + ], + "properties": { + "Tags": { + "description": "Tags are composed of a Key/Value pair. You can use tags to categorize and track each parameter group. The tag value null is permitted.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TransitGatewayId": { + "description": "The ID of the transit gateway.", + "type": "string" + }, + "TransitGatewayRouteTableId": { + "description": "Transit Gateway Route Table primary identifier", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TransitGatewayRouteTableId" + ], + "required": [ + "TransitGatewayId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::TransitGatewayRouteTable" +} diff --git a/src/schema/aws-ec2-transitgatewayroutetableassociation.json b/src/schema/aws-ec2-transitgatewayroutetableassociation.json index 6dbf32d7..f990601f 100644 --- a/src/schema/aws-ec2-transitgatewayroutetableassociation.json +++ b/src/schema/aws-ec2-transitgatewayroutetableassociation.json @@ -1,70 +1,70 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TransitGatewayRouteTableId", - "/properties/TransitGatewayAttachmentId" - ], - "definitions": {}, - "description": "Resource Type definition for AWS::EC2::TransitGatewayRouteTableAssociation", - "handlers": { - "create": { - "permissions": [ - "ec2:AssociateTransitGatewayRouteTable", - "ec2:GetTransitGatewayRouteTableAssociations" - ] - }, - "delete": { - "permissions": [ - "ec2:GetTransitGatewayRouteTableAssociations", - "ec2:DisassociateTransitGatewayRouteTable" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "TransitGatewayRouteTableId": { - "$ref": "resource-schema.json#/properties/TransitGatewayRouteTableId" - } - }, - "required": [ - "TransitGatewayRouteTableId" - ] - }, - "permissions": [ - "ec2:GetTransitGatewayRouteTableAssociations" - ] - }, - "read": { - "permissions": [ - "ec2:GetTransitGatewayRouteTableAssociations" - ] - } - }, - "primaryIdentifier": [ - "/properties/TransitGatewayRouteTableId", - "/properties/TransitGatewayAttachmentId" - ], - "properties": { - "TransitGatewayAttachmentId": { - "description": "The ID of transit gateway attachment.", - "type": "string" - }, - "TransitGatewayRouteTableId": { - "description": "The ID of transit gateway route table.", - "type": "string" - } - }, - "replacementStrategy": "delete_then_create", - "required": [ - "TransitGatewayRouteTableId", - "TransitGatewayAttachmentId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "definitions": {}, + "description": "Resource Type definition for AWS::EC2::TransitGatewayRouteTableAssociation", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateTransitGatewayRouteTable", + "ec2:GetTransitGatewayRouteTableAssociations" + ] + }, + "delete": { + "permissions": [ + "ec2:GetTransitGatewayRouteTableAssociations", + "ec2:DisassociateTransitGatewayRouteTable" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TransitGatewayRouteTableId": { + "$ref": "resource-schema.json#/properties/TransitGatewayRouteTableId" + } + }, + "required": [ + "TransitGatewayRouteTableId" + ] + }, + "permissions": [ + "ec2:GetTransitGatewayRouteTableAssociations" + ] + }, + "read": { + "permissions": [ + "ec2:GetTransitGatewayRouteTableAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "properties": { + "TransitGatewayAttachmentId": { + "description": "The ID of transit gateway attachment.", + "type": "string" + }, + "TransitGatewayRouteTableId": { + "description": "The ID of transit gateway route table.", + "type": "string" + } + }, + "replacementStrategy": "delete_then_create", + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" +} diff --git a/src/schema/aws-ec2-transitgatewayroutetablepropagation.json b/src/schema/aws-ec2-transitgatewayroutetablepropagation.json index 70f29f41..3591b54e 100644 --- a/src/schema/aws-ec2-transitgatewayroutetablepropagation.json +++ b/src/schema/aws-ec2-transitgatewayroutetablepropagation.json @@ -1,69 +1,69 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TransitGatewayAttachmentId", - "/properties/TransitGatewayRouteTableId" - ], - "definitions": {}, - "description": "AWS::EC2::TransitGatewayRouteTablePropagation Type", - "handlers": { - "create": { - "permissions": [ - "ec2:GetTransitGatewayRouteTablePropagations", - "ec2:EnableTransitGatewayRouteTablePropagation" - ] - }, - "delete": { - "permissions": [ - "ec2:GetTransitGatewayRouteTablePropagations", - "ec2:DisableTransitGatewayRouteTablePropagation" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "TransitGatewayRouteTableId": { - "$ref": "resource-schema.json#/properties/TransitGatewayRouteTableId" - } - }, - "required": [ - "TransitGatewayRouteTableId" - ] - }, - "permissions": [ - "ec2:GetTransitGatewayRouteTablePropagations" - ] - }, - "read": { - "permissions": [ - "ec2:GetTransitGatewayRouteTablePropagations" - ] - } - }, - "primaryIdentifier": [ - "/properties/TransitGatewayRouteTableId", - "/properties/TransitGatewayAttachmentId" - ], - "properties": { - "TransitGatewayAttachmentId": { - "description": "The ID of transit gateway attachment.", - "type": "string" - }, - "TransitGatewayRouteTableId": { - "description": "The ID of transit gateway route table.", - "type": "string" - } - }, - "required": [ - "TransitGatewayRouteTableId", - "TransitGatewayAttachmentId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway/aws-ec2-transitgatewayroutetablepropagation", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::TransitGatewayRouteTablePropagation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayAttachmentId", + "/properties/TransitGatewayRouteTableId" + ], + "definitions": {}, + "description": "AWS::EC2::TransitGatewayRouteTablePropagation Type", + "handlers": { + "create": { + "permissions": [ + "ec2:GetTransitGatewayRouteTablePropagations", + "ec2:EnableTransitGatewayRouteTablePropagation" + ] + }, + "delete": { + "permissions": [ + "ec2:GetTransitGatewayRouteTablePropagations", + "ec2:DisableTransitGatewayRouteTablePropagation" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TransitGatewayRouteTableId": { + "$ref": "resource-schema.json#/properties/TransitGatewayRouteTableId" + } + }, + "required": [ + "TransitGatewayRouteTableId" + ] + }, + "permissions": [ + "ec2:GetTransitGatewayRouteTablePropagations" + ] + }, + "read": { + "permissions": [ + "ec2:GetTransitGatewayRouteTablePropagations" + ] + } + }, + "primaryIdentifier": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "properties": { + "TransitGatewayAttachmentId": { + "description": "The ID of transit gateway attachment.", + "type": "string" + }, + "TransitGatewayRouteTableId": { + "description": "The ID of transit gateway route table.", + "type": "string" + } + }, + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway/aws-ec2-transitgatewayroutetablepropagation", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::TransitGatewayRouteTablePropagation" +} diff --git a/src/schema/aws-ec2-transitgatewayvpcattachment.json b/src/schema/aws-ec2-transitgatewayvpcattachment.json index f3dde5a0..24e1bc3f 100644 --- a/src/schema/aws-ec2-transitgatewayvpcattachment.json +++ b/src/schema/aws-ec2-transitgatewayvpcattachment.json @@ -1,182 +1,162 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TransitGatewayId", - "/properties/SubnetIds", - "/properties/VpcId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::TransitGatewayVpcAttachment", - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeTransitGatewayAttachments", - "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:CreateTransitGatewayVpcAttachment", - "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeTags", - "ec2:DescribeTransitGatewayAttachments", - "ec2:ModifyTransitGatewayVpcAttachment" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeTransitGatewayAttachments", - "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:CreateTransitGatewayVpcAttachment", - "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeTags", - "ec2:DescribeTransitGatewayAttachments", - "ec2:ModifyTransitGatewayVpcAttachment" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeTransitGatewayAttachments", - "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:DescribeTags", - "ec2:CreateTransitGatewayVpcAttachment", - "ec2:CreateTags", - "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:DeleteTags", - "ec2:ModifyTransitGatewayVpcAttachment" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeTransitGatewayAttachments", - "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:CreateTransitGatewayVpcAttachment", - "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeTags", - "ec2:DescribeTransitGatewayAttachments", - "ec2:ModifyTransitGatewayVpcAttachment" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeTransitGatewayAttachments", - "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:DescribeTags", - "ec2:CreateTransitGatewayVpcAttachment", - "ec2:CreateTags", - "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:DeleteTags", - "ec2:ModifyTransitGatewayVpcAttachment" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AddSubnetIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - }, - "Options": { - "additionalProperties": false, - "description": "The options for the transit gateway vpc attachment.", - "properties": { - "ApplianceModeSupport": { - "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable", - "type": "string" - }, - "DnsSupport": { - "description": "Indicates whether to enable DNS Support for Vpc Attachment. Valid Values: enable | disable", - "type": "string" - }, - "Ipv6Support": { - "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable", - "type": "string" - }, - "SecurityGroupReferencingSupport": { - "description": "Indicates whether to enable Security Group referencing support for Vpc Attachment. Valid values: enable | disable", - "type": "string" - } - }, - "type": "object" - }, - "RemoveSubnetIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TransitGatewayId": { - "type": "string" - }, - "VpcId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "SubnetIds", - "VpcId", - "TransitGatewayId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::TransitGatewayVpcAttachment", - "writeOnlyProperties": [ - "/properties/AddSubnetIds", - "/properties/RemoveSubnetIds" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayId", + "/properties/SubnetIds", + "/properties/VpcId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::TransitGatewayVpcAttachment", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:CreateTransitGatewayVpcAttachment", + "ec2:CreateTags", + "ec2:DescribeTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DeleteTransitGatewayVpcAttachment", + "ec2:DeleteTags", + "ec2:DescribeTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DescribeTags" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DescribeTags", + "ec2:CreateTransitGatewayVpcAttachment", + "ec2:CreateTags", + "ec2:DeleteTransitGatewayVpcAttachment", + "ec2:DeleteTags", + "ec2:ModifyTransitGatewayVpcAttachment" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AddSubnetIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "Options": { + "additionalProperties": false, + "description": "The options for the transit gateway vpc attachment.", + "properties": { + "ApplianceModeSupport": { + "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable", + "type": "string" + }, + "DnsSupport": { + "description": "Indicates whether to enable DNS Support for Vpc Attachment. Valid Values: enable | disable", + "type": "string" + }, + "Ipv6Support": { + "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable", + "type": "string" + }, + "SecurityGroupReferencingSupport": { + "description": "Indicates whether to enable Security Group referencing support for Vpc Attachment. Valid values: enable | disable", + "type": "string" + } + }, + "type": "object" + }, + "RemoveSubnetIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TransitGatewayId": { + "type": "string" + }, + "VpcId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "SubnetIds", + "VpcId", + "TransitGatewayId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::TransitGatewayVpcAttachment", + "writeOnlyProperties": [ + "/properties/AddSubnetIds", + "/properties/RemoveSubnetIds" + ] +} diff --git a/src/schema/aws-ec2-verifiedaccessendpoint.json b/src/schema/aws-ec2-verifiedaccessendpoint.json index 3cfea5a9..57435380 100644 --- a/src/schema/aws-ec2-verifiedaccessendpoint.json +++ b/src/schema/aws-ec2-verifiedaccessendpoint.json @@ -1,422 +1,465 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationDomain", - "/properties/AttachmentType", - "/properties/DomainCertificateArn", - "/properties/EndpointDomainPrefix", - "/properties/EndpointType", - "/properties/SecurityGroupIds", - "/properties/NetworkInterfaceOptions/NetworkInterfaceId", - "/properties/LoadBalancerOptions/LoadBalancerArn" - ], - "definitions": { - "LoadBalancerOptions": { - "additionalProperties": false, - "description": "The load balancer details if creating the AWS Verified Access endpoint as load-balancertype.", - "properties": { - "LoadBalancerArn": { - "description": "The ARN of the load balancer.", - "type": "string" - }, - "Port": { - "description": "The IP port number.", - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "Protocol": { - "description": "The IP protocol.", - "type": "string" - }, - "SubnetIds": { - "description": "The IDs of the subnets.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SubnetId" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "NetworkInterfaceOptions": { - "additionalProperties": false, - "description": "The options for network-interface type endpoint.", - "properties": { - "NetworkInterfaceId": { - "description": "The ID of the network interface.", - "type": "string" - }, - "Port": { - "description": "The IP port number.", - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "Protocol": { - "description": "The IP protocol.", - "type": "string" - } - }, - "type": "object" - }, - "SecurityGroupId": { - "description": "The ID of a security group for the endpoint.", - "type": "string" - }, - "SseSpecification": { - "additionalProperties": false, - "description": "The configuration options for customer provided KMS encryption.", - "properties": { - "CustomerManagedKeyEnabled": { - "description": "Whether to encrypt the policy with the provided key or disable encryption", - "type": "boolean" - }, - "KmsKeyArn": { - "description": "KMS Key Arn used to encrypt the group policy", - "type": "string" - } - }, - "type": "object" - }, - "SubnetId": { - "description": "The IDs of the subnet.", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::EC2::VerifiedAccessEndpoint resource creates an AWS EC2 Verified Access Endpoint.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateVerifiedAccessEndpoint", - "ec2:DescribeVerifiedAccessEndpoints", - "iam:CreateServiceLinkedRole", - "iam:ListRoles", - "acm:GetCertificateWithPK", - "acm:DescribeCertificate", - "acm:CreateCertificateRelation", - "sso:GetManagedApplicationInstance", - "sso:GetPeregrineStatus", - "sso:GetSharedSsoConfiguration", - "sso:CreateManagedApplicationInstance", - "ec2:DescribeSubnets", - "ec2:DescribeSecurityGroups", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeAccountAttributes", - "elasticloadbalancing:DescribeLoadBalancers", - "elasticloadbalancing:DescribeListeners", - "elasticloadbalancing:DescribeListenerCertificates", - "ec2:CreateTags", - "ec2:DescribeTags", - "acm:DeleteCertificateRelation", - "ec2:DeleteVerifiedAccessEndpoint", - "ec2:GetVerifiedAccessEndpointPolicy", - "ec2:ModifyVerifiedAccessEndpoint", - "ec2:ModifyVerifiedAccessEndpointPolicy", - "sso:DeleteManagedApplicationInstance", - "kms:DescribeKey", - "kms:RetireGrant", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ], - "timeoutInMinutes": 60 - }, - "delete": { - "permissions": [ - "ec2:DescribeVerifiedAccessEndpoints", - "ec2:DeleteVerifiedAccessEndpoint", - "ec2:DescribeTags", - "ec2:DeleteTags", - "sso:DeleteManagedApplicationInstance", - "acm:DeleteCertificateRelation", - "acm:DescribeCertificate", - "acm:CreateCertificateRelation", - "acm:GetCertificateWithPK", - "ec2:CreateVerifiedAccessEndpoint", - "ec2:DescribeAccountAttributes", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:GetVerifiedAccessEndpointPolicy", - "ec2:ModifyVerifiedAccessEndpoint", - "ec2:ModifyVerifiedAccessEndpointPolicy", - "elasticloadbalancing:DescribeListenerCertificates", - "elasticloadbalancing:DescribeListeners", - "elasticloadbalancing:DescribeLoadBalancers", - "iam:CreateServiceLinkedRole", - "iam:ListRoles", - "sso:CreateManagedApplicationInstance", - "sso:GetManagedApplicationInstance", - "sso:GetPeregrineStatus", - "sso:GetSharedSsoConfiguration", - "kms:DescribeKey", - "kms:RetireGrant", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ], - "timeoutInMinutes": 60 - }, - "list": { - "permissions": [ - "ec2:DescribeVerifiedAccessEndpoints", - "ec2:DescribeTags", - "acm:CreateCertificateRelation", - "acm:DeleteCertificateRelation", - "acm:DescribeCertificate", - "acm:GetCertificateWithPK", - "ec2:CreateVerifiedAccessEndpoint", - "ec2:DeleteVerifiedAccessEndpoint", - "ec2:DescribeAccountAttributes", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:GetVerifiedAccessEndpointPolicy", - "ec2:ModifyVerifiedAccessEndpoint", - "ec2:ModifyVerifiedAccessEndpointPolicy", - "elasticloadbalancing:DescribeListenerCertificates", - "elasticloadbalancing:DescribeListeners", - "elasticloadbalancing:DescribeLoadBalancers", - "iam:CreateServiceLinkedRole", - "iam:ListRoles", - "sso:CreateManagedApplicationInstance", - "sso:DeleteManagedApplicationInstance", - "sso:GetManagedApplicationInstance", - "sso:GetPeregrineStatus", - "sso:GetSharedSsoConfiguration", - "kms:DescribeKey", - "kms:RetireGrant", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVerifiedAccessEndpoints", - "ec2:GetVerifiedAccessEndpointPolicy", - "ec2:DescribeTags", - "acm:CreateCertificateRelation", - "acm:DeleteCertificateRelation", - "acm:DescribeCertificate", - "acm:GetCertificateWithPK", - "ec2:CreateVerifiedAccessEndpoint", - "ec2:DeleteVerifiedAccessEndpoint", - "ec2:DescribeAccountAttributes", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:ModifyVerifiedAccessEndpoint", - "ec2:ModifyVerifiedAccessEndpointPolicy", - "elasticloadbalancing:DescribeListenerCertificates", - "elasticloadbalancing:DescribeListeners", - "elasticloadbalancing:DescribeLoadBalancers", - "iam:CreateServiceLinkedRole", - "iam:ListRoles", - "sso:CreateManagedApplicationInstance", - "sso:DeleteManagedApplicationInstance", - "sso:GetManagedApplicationInstance", - "sso:GetPeregrineStatus", - "sso:GetSharedSsoConfiguration", - "kms:DescribeKey", - "kms:RetireGrant", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyVerifiedAccessEndpoint", - "ec2:ModifyVerifiedAccessEndpointPolicy", - "ec2:DescribeVerifiedAccessEndpoints", - "ec2:GetVerifiedAccessEndpointPolicy", - "acm:GetCertificateWithPK", - "acm:DescribeCertificate", - "acm:CreateCertificateRelation", - "acm:DeleteCertificateRelation", - "sso:GetManagedApplicationInstance", - "sso:GetPeregrineStatus", - "sso:GetSharedSsoConfiguration", - "sso:CreateManagedApplicationInstance", - "sso:DeleteManagedApplicationInstance", - "ec2:DescribeSubnets", - "ec2:DescribeSecurityGroups", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeAccountAttributes", - "elasticloadbalancing:DescribeLoadBalancers", - "elasticloadbalancing:DescribeListeners", - "elasticloadbalancing:DescribeListenerCertificates", - "ec2:DescribeTags", - "ec2:DeleteTags", - "ec2:CreateTags", - "ec2:CreateVerifiedAccessEndpoint", - "ec2:DeleteVerifiedAccessEndpoint", - "iam:CreateServiceLinkedRole", - "iam:ListRoles", - "kms:DescribeKey", - "kms:RetireGrant", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ], - "timeoutInMinutes": 60 - } - }, - "primaryIdentifier": [ - "/properties/VerifiedAccessEndpointId" - ], - "properties": { - "ApplicationDomain": { - "description": "The DNS name for users to reach your application.", - "type": "string" - }, - "AttachmentType": { - "description": "The type of attachment used to provide connectivity between the AWS Verified Access endpoint and the application.", - "type": "string" - }, - "CreationTime": { - "description": "The creation time.", - "type": "string" - }, - "Description": { - "description": "A description for the AWS Verified Access endpoint.", - "type": "string" - }, - "DeviceValidationDomain": { - "description": "Returned if endpoint has a device trust provider attached.", - "type": "string" - }, - "DomainCertificateArn": { - "description": "The ARN of a public TLS/SSL certificate imported into or created with ACM.", - "type": "string" - }, - "EndpointDomain": { - "description": "A DNS name that is generated for the endpoint.", - "type": "string" - }, - "EndpointDomainPrefix": { - "description": "A custom identifier that gets prepended to a DNS name that is generated for the endpoint.", - "type": "string" - }, - "EndpointType": { - "description": "The type of AWS Verified Access endpoint. Incoming application requests will be sent to an IP address, load balancer or a network interface depending on the endpoint type specified.The type of AWS Verified Access endpoint. Incoming application requests will be sent to an IP address, load balancer or a network interface depending on the endpoint type specified.", - "type": "string" - }, - "LastUpdatedTime": { - "description": "The last updated time.", - "type": "string" - }, - "LoadBalancerOptions": { - "$ref": "#/definitions/LoadBalancerOptions", - "description": "The load balancer details if creating the AWS Verified Access endpoint as load-balancer type." - }, - "NetworkInterfaceOptions": { - "$ref": "#/definitions/NetworkInterfaceOptions", - "description": "The options for network-interface type endpoint." - }, - "PolicyDocument": { - "description": "The AWS Verified Access policy document.", - "type": "string" - }, - "PolicyEnabled": { - "description": "The status of the Verified Access policy.", - "type": "boolean" - }, - "SecurityGroupIds": { - "description": "The IDs of the security groups for the endpoint.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SecurityGroupId" - }, - "type": "array", - "uniqueItems": true - }, - "SseSpecification": { - "$ref": "#/definitions/SseSpecification", - "description": "The configuration options for customer provided KMS encryption." - }, - "Status": { - "description": "The endpoint status.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "VerifiedAccessEndpointId": { - "description": "The ID of the AWS Verified Access endpoint.", - "type": "string" - }, - "VerifiedAccessGroupId": { - "description": "The ID of the AWS Verified Access group.", - "type": "string" - }, - "VerifiedAccessInstanceId": { - "description": "The ID of the AWS Verified Access instance.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/VerifiedAccessEndpointId", - "/properties/EndpointDomain", - "/properties/CreationTime", - "/properties/LastUpdatedTime", - "/properties/Status", - "/properties/DeviceValidationDomain", - "/properties/VerifiedAccessInstanceId" - ], - "required": [ - "ApplicationDomain", - "AttachmentType", - "DomainCertificateArn", - "EndpointType", - "VerifiedAccessGroupId", - "EndpointDomainPrefix" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-verified-access.aws-ec2-verifiedaccessendpoint", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:CreateTags", - "ec2:DescribeTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::VerifiedAccessEndpoint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationDomain", + "/properties/AttachmentType", + "/properties/DomainCertificateArn", + "/properties/EndpointDomainPrefix", + "/properties/EndpointType", + "/properties/SecurityGroupIds", + "/properties/NetworkInterfaceOptions/NetworkInterfaceId", + "/properties/LoadBalancerOptions/LoadBalancerArn", + "/properties/RdsOptions/Protocol", + "/properties/RdsOptions/RdsDbInstanceArn", + "/properties/RdsOptions/RdsDbClusterArn", + "/properties/RdsOptions/RdsDbProxyArn", + "/properties/CidrOptions/Cidr", + "/properties/CidrOptions/Protocol", + "/properties/CidrOptions/SubnetIds" + ], + "definitions": { + "CidrOptions": { + "additionalProperties": false, + "description": "The options for cidr type endpoint.", + "properties": { + "Cidr": { + "description": "The IP address range, in CIDR notation.", + "type": "string" + }, + "PortRanges": { + "description": "The list of port range.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": true + }, + "Protocol": { + "description": "The IP protocol.", + "type": "string" + }, + "SubnetIds": { + "description": "The IDs of the subnets.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetId" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "LoadBalancerOptions": { + "additionalProperties": false, + "description": "The load balancer details if creating the AWS Verified Access endpoint as load-balancertype.", + "properties": { + "LoadBalancerArn": { + "description": "The ARN of the load balancer.", + "type": "string" + }, + "Port": { + "description": "The IP port number.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "PortRanges": { + "description": "The list of port range.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": true + }, + "Protocol": { + "description": "The IP protocol.", + "type": "string" + }, + "SubnetIds": { + "description": "The IDs of the subnets.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetId" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "NetworkInterfaceOptions": { + "additionalProperties": false, + "description": "The options for network-interface type endpoint.", + "properties": { + "NetworkInterfaceId": { + "description": "The ID of the network interface.", + "type": "string" + }, + "Port": { + "description": "The IP port number.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "PortRanges": { + "description": "The list of port ranges.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": true + }, + "Protocol": { + "description": "The IP protocol.", + "type": "string" + } + }, + "type": "object" + }, + "PortRange": { + "additionalProperties": false, + "description": "The IP port range.", + "properties": { + "FromPort": { + "description": "The first port in the range.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "ToPort": { + "description": "The last port in the range.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "RdsOptions": { + "additionalProperties": false, + "description": "The options for rds type endpoint.", + "properties": { + "Port": { + "description": "The IP port number.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "Protocol": { + "description": "The IP protocol.", + "type": "string" + }, + "RdsDbClusterArn": { + "description": "The ARN of the RDS DB cluster.", + "type": "string" + }, + "RdsDbInstanceArn": { + "description": "The ARN of the RDS DB instance.", + "type": "string" + }, + "RdsDbProxyArn": { + "description": "The ARN of the RDS DB proxy.", + "type": "string" + }, + "RdsEndpoint": { + "description": "The RDS endpoint.", + "type": "string" + }, + "SubnetIds": { + "description": "The IDs of the subnets.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetId" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "SecurityGroupId": { + "description": "The ID of a security group for the endpoint.", + "type": "string" + }, + "SseSpecification": { + "additionalProperties": false, + "description": "The configuration options for customer provided KMS encryption.", + "properties": { + "CustomerManagedKeyEnabled": { + "description": "Whether to encrypt the policy with the provided key or disable encryption", + "type": "boolean" + }, + "KmsKeyArn": { + "description": "KMS Key Arn used to encrypt the group policy", + "type": "string" + } + }, + "type": "object" + }, + "SubnetId": { + "description": "The IDs of the subnet.", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::EC2::VerifiedAccessEndpoint resource creates an AWS EC2 Verified Access Endpoint.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVerifiedAccessEndpoint", + "ec2:DescribeVerifiedAccessEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeAccountAttributes", + "ec2:CreateTags", + "ec2:DescribeTags", + "ec2:DescribeVpcs", + "ec2:GetVerifiedAccessEndpointPolicy", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeListeners", + "elasticloadbalancing:DescribeListenerCertificates", + "iam:CreateServiceLinkedRole", + "acm:DescribeCertificate", + "sso:PutApplicationAccessScope", + "sso:GetSharedSsoConfiguration", + "sso:CreateManagedApplicationInstance", + "sso:DeleteManagedApplicationInstance", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:Decrypt", + "rds:DescribeDbInstances", + "rds:DescribeDbProxies", + "rds:DescribeDbClusters", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeVpcEndpointServiceConfigurations" + ], + "timeoutInMinutes": 600 + }, + "delete": { + "permissions": [ + "ec2:DescribeVerifiedAccessEndpoints", + "ec2:DeleteVerifiedAccessEndpoint", + "ec2:GetVerifiedAccessEndpointPolicy", + "ec2:DescribeTags", + "ec2:DeleteTags", + "sso:DeleteManagedApplicationInstance", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:Decrypt", + "kms:GenerateDataKey" + ], + "timeoutInMinutes": 60 + }, + "list": { + "permissions": [ + "ec2:DescribeVerifiedAccessEndpoints", + "ec2:GetVerifiedAccessEndpointPolicy", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVerifiedAccessEndpoints", + "ec2:GetVerifiedAccessEndpointPolicy", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyVerifiedAccessEndpoint", + "ec2:ModifyVerifiedAccessEndpointPolicy", + "ec2:DescribeVerifiedAccessEndpoints", + "ec2:GetVerifiedAccessEndpointPolicy", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeVpcs", + "ec2:DescribeTags", + "ec2:DeleteTags", + "ec2:CreateTags", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeListeners", + "elasticloadbalancing:DescribeListenerCertificates", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:Decrypt", + "rds:DescribeDbInstances", + "rds:DescribeDbProxies", + "rds:DescribeDbClusters" + ], + "timeoutInMinutes": 60 + } + }, + "primaryIdentifier": [ + "/properties/VerifiedAccessEndpointId" + ], + "properties": { + "ApplicationDomain": { + "description": "The DNS name for users to reach your application.", + "type": "string" + }, + "AttachmentType": { + "description": "The type of attachment used to provide connectivity between the AWS Verified Access endpoint and the application.", + "type": "string" + }, + "CidrOptions": { + "$ref": "#/definitions/CidrOptions", + "description": "The options for cidr type endpoint." + }, + "CreationTime": { + "description": "The creation time.", + "type": "string" + }, + "Description": { + "description": "A description for the AWS Verified Access endpoint.", + "type": "string" + }, + "DeviceValidationDomain": { + "description": "Returned if endpoint has a device trust provider attached.", + "type": "string" + }, + "DomainCertificateArn": { + "description": "The ARN of a public TLS/SSL certificate imported into or created with ACM.", + "type": "string" + }, + "EndpointDomain": { + "description": "A DNS name that is generated for the endpoint.", + "type": "string" + }, + "EndpointDomainPrefix": { + "description": "A custom identifier that gets prepended to a DNS name that is generated for the endpoint.", + "type": "string" + }, + "EndpointType": { + "description": "The type of AWS Verified Access endpoint. Incoming application requests will be sent to an IP address, load balancer or a network interface depending on the endpoint type specified.The type of AWS Verified Access endpoint. Incoming application requests will be sent to an IP address, load balancer or a network interface depending on the endpoint type specified.", + "type": "string" + }, + "LastUpdatedTime": { + "description": "The last updated time.", + "type": "string" + }, + "LoadBalancerOptions": { + "$ref": "#/definitions/LoadBalancerOptions", + "description": "The load balancer details if creating the AWS Verified Access endpoint as load-balancer type." + }, + "NetworkInterfaceOptions": { + "$ref": "#/definitions/NetworkInterfaceOptions", + "description": "The options for network-interface type endpoint." + }, + "PolicyDocument": { + "description": "The AWS Verified Access policy document.", + "type": "string" + }, + "PolicyEnabled": { + "description": "The status of the Verified Access policy.", + "type": "boolean" + }, + "RdsOptions": { + "$ref": "#/definitions/RdsOptions", + "description": "The options for rds type endpoint." + }, + "SecurityGroupIds": { + "description": "The IDs of the security groups for the endpoint.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SecurityGroupId" + }, + "type": "array", + "uniqueItems": true + }, + "SseSpecification": { + "$ref": "#/definitions/SseSpecification", + "description": "The configuration options for customer provided KMS encryption." + }, + "Status": { + "description": "The endpoint status.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VerifiedAccessEndpointId": { + "description": "The ID of the AWS Verified Access endpoint.", + "type": "string" + }, + "VerifiedAccessGroupId": { + "description": "The ID of the AWS Verified Access group.", + "type": "string" + }, + "VerifiedAccessInstanceId": { + "description": "The ID of the AWS Verified Access instance.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VerifiedAccessEndpointId", + "/properties/EndpointDomain", + "/properties/CreationTime", + "/properties/LastUpdatedTime", + "/properties/Status", + "/properties/DeviceValidationDomain", + "/properties/VerifiedAccessInstanceId" + ], + "required": [ + "AttachmentType", + "EndpointType", + "VerifiedAccessGroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-verified-access.aws-ec2-verifiedaccessendpoint", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DescribeTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VerifiedAccessEndpoint" +} diff --git a/src/schema/aws-ec2-verifiedaccessgroup.json b/src/schema/aws-ec2-verifiedaccessgroup.json index 0d4d579b..69145a2a 100644 --- a/src/schema/aws-ec2-verifiedaccessgroup.json +++ b/src/schema/aws-ec2-verifiedaccessgroup.json @@ -1,190 +1,190 @@ -{ - "additionalProperties": false, - "definitions": { - "SseSpecification": { - "additionalProperties": false, - "description": "The configuration options for customer provided KMS encryption.", - "properties": { - "CustomerManagedKeyEnabled": { - "description": "Whether to encrypt the policy with the provided key or disable encryption", - "type": "boolean" - }, - "KmsKeyArn": { - "description": "KMS Key Arn used to encrypt the group policy", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::EC2::VerifiedAccessGroup resource creates an AWS EC2 Verified Access Group.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateVerifiedAccessGroup", - "ec2:DescribeVerifiedAccessGroups", - "ec2:GetVerifiedAccessGroupPolicy", - "ec2:CreateTags", - "ec2:DescribeTags", - "kms:DescribeKey", - "kms:RetireGrant", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteVerifiedAccessGroup", - "ec2:DeleteTags", - "ec2:DescribeVerifiedAccessGroups", - "ec2:DescribeTags", - "kms:DescribeKey", - "kms:RetireGrant", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeVerifiedAccessGroups", - "ec2:DescribeTags", - "kms:DescribeKey", - "kms:RetireGrant", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVerifiedAccessGroups", - "ec2:GetVerifiedAccessGroupPolicy", - "ec2:DescribeTags", - "kms:DescribeKey", - "kms:RetireGrant", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyVerifiedAccessGroup", - "ec2:ModifyVerifiedAccessGroupPolicy", - "ec2:DescribeVerifiedAccessGroups", - "ec2:GetVerifiedAccessGroupPolicy", - "ec2:DescribeTags", - "ec2:DeleteTags", - "ec2:CreateTags", - "kms:DescribeKey", - "kms:RetireGrant", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/VerifiedAccessGroupId" - ], - "properties": { - "CreationTime": { - "description": "Time this Verified Access Group was created.", - "type": "string" - }, - "Description": { - "description": "A description for the AWS Verified Access group.", - "type": "string" - }, - "LastUpdatedTime": { - "description": "Time this Verified Access Group was last updated.", - "type": "string" - }, - "Owner": { - "description": "The AWS account number that owns the group.", - "type": "string" - }, - "PolicyDocument": { - "description": "The AWS Verified Access policy document.", - "type": "string" - }, - "PolicyEnabled": { - "description": "The status of the Verified Access policy.", - "type": "boolean" - }, - "SseSpecification": { - "$ref": "#/definitions/SseSpecification", - "description": "The configuration options for customer provided KMS encryption." - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "VerifiedAccessGroupArn": { - "description": "The ARN of the Verified Access group.", - "type": "string" - }, - "VerifiedAccessGroupId": { - "description": "The ID of the AWS Verified Access group.", - "type": "string" - }, - "VerifiedAccessInstanceId": { - "description": "The ID of the AWS Verified Access instance.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/VerifiedAccessGroupId", - "/properties/CreationTime", - "/properties/LastUpdatedTime", - "/properties/Owner", - "/properties/VerifiedAccessGroupArn" - ], - "required": [ - "VerifiedAccessInstanceId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-verified-access.aws-ec2-verifiedaccessgroup", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:CreateTags", - "ec2:DescribeTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::VerifiedAccessGroup" -} +{ + "additionalProperties": false, + "definitions": { + "SseSpecification": { + "additionalProperties": false, + "description": "The configuration options for customer provided KMS encryption.", + "properties": { + "CustomerManagedKeyEnabled": { + "description": "Whether to encrypt the policy with the provided key or disable encryption", + "type": "boolean" + }, + "KmsKeyArn": { + "description": "KMS Key Arn used to encrypt the group policy", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::EC2::VerifiedAccessGroup resource creates an AWS EC2 Verified Access Group.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVerifiedAccessGroup", + "ec2:DescribeVerifiedAccessGroups", + "ec2:GetVerifiedAccessGroupPolicy", + "ec2:CreateTags", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVerifiedAccessGroup", + "ec2:DeleteTags", + "ec2:DescribeVerifiedAccessGroups", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVerifiedAccessGroups", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVerifiedAccessGroups", + "ec2:GetVerifiedAccessGroupPolicy", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyVerifiedAccessGroup", + "ec2:ModifyVerifiedAccessGroupPolicy", + "ec2:DescribeVerifiedAccessGroups", + "ec2:GetVerifiedAccessGroupPolicy", + "ec2:DescribeTags", + "ec2:DeleteTags", + "ec2:CreateTags", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/VerifiedAccessGroupId" + ], + "properties": { + "CreationTime": { + "description": "Time this Verified Access Group was created.", + "type": "string" + }, + "Description": { + "description": "A description for the AWS Verified Access group.", + "type": "string" + }, + "LastUpdatedTime": { + "description": "Time this Verified Access Group was last updated.", + "type": "string" + }, + "Owner": { + "description": "The AWS account number that owns the group.", + "type": "string" + }, + "PolicyDocument": { + "description": "The AWS Verified Access policy document.", + "type": "string" + }, + "PolicyEnabled": { + "description": "The status of the Verified Access policy.", + "type": "boolean" + }, + "SseSpecification": { + "$ref": "#/definitions/SseSpecification", + "description": "The configuration options for customer provided KMS encryption." + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VerifiedAccessGroupArn": { + "description": "The ARN of the Verified Access group.", + "type": "string" + }, + "VerifiedAccessGroupId": { + "description": "The ID of the AWS Verified Access group.", + "type": "string" + }, + "VerifiedAccessInstanceId": { + "description": "The ID of the AWS Verified Access instance.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VerifiedAccessGroupId", + "/properties/CreationTime", + "/properties/LastUpdatedTime", + "/properties/Owner", + "/properties/VerifiedAccessGroupArn" + ], + "required": [ + "VerifiedAccessInstanceId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-verified-access.aws-ec2-verifiedaccessgroup", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DescribeTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VerifiedAccessGroup" +} diff --git a/src/schema/aws-ec2-verifiedaccessinstance.json b/src/schema/aws-ec2-verifiedaccessinstance.json index d521874c..764ddef4 100644 --- a/src/schema/aws-ec2-verifiedaccessinstance.json +++ b/src/schema/aws-ec2-verifiedaccessinstance.json @@ -1,298 +1,315 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "VerifiedAccessLogs": { - "additionalProperties": false, - "description": "The configuration options for AWS Verified Access instances.", - "properties": { - "CloudWatchLogs": { - "additionalProperties": false, - "description": "Sends Verified Access logs to CloudWatch Logs.", - "properties": { - "Enabled": { - "description": "Indicates whether logging is enabled.", - "type": "boolean" - }, - "LogGroup": { - "description": "The ID of the CloudWatch Logs log group.", - "type": "string" - } - }, - "type": "object" - }, - "IncludeTrustContext": { - "description": "Include claims from trust providers in Verified Access logs.", - "type": "boolean" - }, - "KinesisDataFirehose": { - "additionalProperties": false, - "description": "Sends Verified Access logs to Kinesis.", - "properties": { - "DeliveryStream": { - "description": "The ID of the delivery stream.", - "type": "string" - }, - "Enabled": { - "description": "Indicates whether logging is enabled.", - "type": "boolean" - } - }, - "type": "object" - }, - "LogVersion": { - "description": "Select log version for Verified Access logs.", - "type": "string" - }, - "S3": { - "additionalProperties": false, - "description": "Sends Verified Access logs to Amazon S3.", - "properties": { - "BucketName": { - "description": "The bucket name.", - "type": "string" - }, - "BucketOwner": { - "description": "The ID of the AWS account that owns the Amazon S3 bucket.", - "type": "string" - }, - "Enabled": { - "description": "Indicates whether logging is enabled.", - "type": "boolean" - }, - "Prefix": { - "description": "The bucket prefix.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "VerifiedAccessTrustProvider": { - "additionalProperties": false, - "description": "A Verified Access Trust Provider.", - "properties": { - "Description": { - "description": "The description of trust provider.", - "type": "string" - }, - "DeviceTrustProviderType": { - "description": "The type of device-based trust provider.", - "type": "string" - }, - "TrustProviderType": { - "description": "The type of trust provider (user- or device-based).", - "type": "string" - }, - "UserTrustProviderType": { - "description": "The type of user-based trust provider.", - "type": "string" - }, - "VerifiedAccessTrustProviderId": { - "description": "The ID of the trust provider.", - "type": "string" - } - }, - "type": "object" - }, - "VerifiedAccessTrustProviderId": { - "description": "The ID of the AWS Verified Access trust provider.", - "type": "string" - } - }, - "description": "The AWS::EC2::VerifiedAccessInstance resource creates an AWS EC2 Verified Access Instance.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateVerifiedAccessInstance", - "ec2:AttachVerifiedAccessTrustProvider", - "ec2:ModifyVerifiedAccessInstanceLoggingConfiguration", - "ec2:DescribeVerifiedAccessInstances", - "ec2:DescribeVerifiedAccessInstanceLoggingConfigurations", - "ec2:DetachVerifiedAccessTrustProvider", - "ec2:DeleteVerifiedAccessInstance", - "ec2:CreateTags", - "ec2:DescribeTags", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:UpdateLogDelivery", - "logs:PutDestination", - "logs:DeleteLogDelivery", - "logs:ListLogDeliveries", - "logs:PutLogEvents", - "logs:DescribeLogStreams", - "s3:listBuckets", - "s3:PutObject", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy", - "logs:DescribeLogGroups", - "logs:PutResourcePolicy", - "firehose:TagDeliveryStream", - "logs:DescribeResourcePolicies", - "iam:CreateServiceLinkedRole", - "verified-access:AllowVerifiedAccess" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteVerifiedAccessInstance", - "ec2:DeleteTags", - "ec2:DescribeVerifiedAccessInstances", - "ec2:DescribeVerifiedAccessInstanceLoggingConfigurations", - "ec2:DetachVerifiedAccessTrustProvider", - "ec2:GetVerifiedAccessGroupPolicy", - "ec2:DescribeTags", - "logs:ListLogDeliveries", - "logs:GetLogDelivery", - "logs:DeleteLogDelivery" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeVerifiedAccessInstances", - "ec2:DescribeTags", - "logs:ListLogDeliveries", - "logs:GetLogDelivery" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVerifiedAccessInstances", - "ec2:DescribeVerifiedAccessInstanceLoggingConfigurations", - "ec2:DescribeTags", - "logs:GetLogDelivery", - "logs:ListLogDeliveries" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyVerifiedAccessInstance", - "ec2:ModifyVerifiedAccessInstanceLoggingConfiguration", - "ec2:DescribeVerifiedAccessInstances", - "ec2:DescribeVerifiedAccessInstanceLoggingConfigurations", - "ec2:DescribeTags", - "ec2:AttachVerifiedAccessTrustProvider", - "ec2:DetachVerifiedAccessTrustProvider", - "ec2:DeleteTags", - "ec2:CreateTags", - "ec2:DescribeTags", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:ListLogDeliveries", - "logs:UpdateLogDelivery", - "logs:DeleteLogDelivery", - "logs:PutDestination", - "logs:PutLogEvents", - "logs:DescribeLogStreams", - "s3:listBuckets", - "s3:PutObject", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy", - "logs:DescribeLogGroups", - "logs:PutResourcePolicy", - "firehose:TagDeliveryStream", - "iam:CreateServiceLinkedRole", - "logs:DescribeResourcePolicies" - ] - } - }, - "primaryIdentifier": [ - "/properties/VerifiedAccessInstanceId" - ], - "properties": { - "CreationTime": { - "description": "Time this Verified Access Instance was created.", - "type": "string" - }, - "Description": { - "description": "A description for the AWS Verified Access instance.", - "type": "string" - }, - "FipsEnabled": { - "description": "Indicates whether FIPS is enabled", - "type": "boolean" - }, - "LastUpdatedTime": { - "description": "Time this Verified Access Instance was last updated.", - "type": "string" - }, - "LoggingConfigurations": { - "$ref": "#/definitions/VerifiedAccessLogs", - "description": "The configuration options for AWS Verified Access instances." - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "VerifiedAccessInstanceId": { - "description": "The ID of the AWS Verified Access instance.", - "type": "string" - }, - "VerifiedAccessTrustProviderIds": { - "description": "The IDs of the AWS Verified Access trust providers.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/VerifiedAccessTrustProviderId" - }, - "type": "array", - "uniqueItems": true - }, - "VerifiedAccessTrustProviders": { - "description": "AWS Verified Access trust providers.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/VerifiedAccessTrustProvider" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/VerifiedAccessInstanceId", - "/properties/CreationTime", - "/properties/LastUpdatedTime" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-verified-access.aws-ec2-verifiedaccessinstance", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:CreateTags", - "ec2:DescribeTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::VerifiedAccessInstance" -} +{ + "additionalProperties": false, + "definitions": { + "Nameserver": { + "description": "The value of the name server", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VerifiedAccessLogs": { + "additionalProperties": false, + "description": "The configuration options for AWS Verified Access instances.", + "properties": { + "CloudWatchLogs": { + "additionalProperties": false, + "description": "Sends Verified Access logs to CloudWatch Logs.", + "properties": { + "Enabled": { + "description": "Indicates whether logging is enabled.", + "type": "boolean" + }, + "LogGroup": { + "description": "The ID of the CloudWatch Logs log group.", + "type": "string" + } + }, + "type": "object" + }, + "IncludeTrustContext": { + "description": "Include claims from trust providers in Verified Access logs.", + "type": "boolean" + }, + "KinesisDataFirehose": { + "additionalProperties": false, + "description": "Sends Verified Access logs to Kinesis.", + "properties": { + "DeliveryStream": { + "description": "The ID of the delivery stream.", + "type": "string" + }, + "Enabled": { + "description": "Indicates whether logging is enabled.", + "type": "boolean" + } + }, + "type": "object" + }, + "LogVersion": { + "description": "Select log version for Verified Access logs.", + "type": "string" + }, + "S3": { + "additionalProperties": false, + "description": "Sends Verified Access logs to Amazon S3.", + "properties": { + "BucketName": { + "description": "The bucket name.", + "type": "string" + }, + "BucketOwner": { + "description": "The ID of the AWS account that owns the Amazon S3 bucket.", + "type": "string" + }, + "Enabled": { + "description": "Indicates whether logging is enabled.", + "type": "boolean" + }, + "Prefix": { + "description": "The bucket prefix.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "VerifiedAccessTrustProvider": { + "additionalProperties": false, + "description": "A Verified Access Trust Provider.", + "properties": { + "Description": { + "description": "The description of trust provider.", + "type": "string" + }, + "DeviceTrustProviderType": { + "description": "The type of device-based trust provider.", + "type": "string" + }, + "TrustProviderType": { + "description": "The type of trust provider (user- or device-based).", + "type": "string" + }, + "UserTrustProviderType": { + "description": "The type of user-based trust provider.", + "type": "string" + }, + "VerifiedAccessTrustProviderId": { + "description": "The ID of the trust provider.", + "type": "string" + } + }, + "type": "object" + }, + "VerifiedAccessTrustProviderId": { + "description": "The ID of the AWS Verified Access trust provider.", + "type": "string" + } + }, + "description": "The AWS::EC2::VerifiedAccessInstance resource creates an AWS EC2 Verified Access Instance.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVerifiedAccessInstance", + "ec2:AttachVerifiedAccessTrustProvider", + "ec2:ModifyVerifiedAccessInstanceLoggingConfiguration", + "ec2:DescribeVerifiedAccessInstances", + "ec2:DescribeVerifiedAccessInstanceLoggingConfigurations", + "ec2:DetachVerifiedAccessTrustProvider", + "ec2:DeleteVerifiedAccessInstance", + "ec2:CreateTags", + "ec2:DescribeTags", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:PutDestination", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "logs:PutLogEvents", + "logs:DescribeLogStreams", + "s3:listBuckets", + "s3:PutObject", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "logs:DescribeLogGroups", + "logs:PutResourcePolicy", + "firehose:TagDeliveryStream", + "logs:DescribeResourcePolicies", + "iam:CreateServiceLinkedRole", + "verified-access:AllowVerifiedAccess" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVerifiedAccessInstance", + "ec2:DeleteTags", + "ec2:DescribeVerifiedAccessInstances", + "ec2:DescribeVerifiedAccessInstanceLoggingConfigurations", + "ec2:DetachVerifiedAccessTrustProvider", + "ec2:GetVerifiedAccessGroupPolicy", + "ec2:DescribeTags", + "logs:ListLogDeliveries", + "logs:GetLogDelivery", + "logs:DeleteLogDelivery" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVerifiedAccessInstances", + "ec2:DescribeTags", + "logs:ListLogDeliveries", + "logs:GetLogDelivery" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVerifiedAccessInstances", + "ec2:DescribeVerifiedAccessInstanceLoggingConfigurations", + "ec2:DescribeTags", + "logs:GetLogDelivery", + "logs:ListLogDeliveries" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyVerifiedAccessInstance", + "ec2:ModifyVerifiedAccessInstanceLoggingConfiguration", + "ec2:DescribeVerifiedAccessInstances", + "ec2:DescribeVerifiedAccessInstanceLoggingConfigurations", + "ec2:DescribeTags", + "ec2:AttachVerifiedAccessTrustProvider", + "ec2:DetachVerifiedAccessTrustProvider", + "ec2:DeleteTags", + "ec2:CreateTags", + "ec2:DescribeTags", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:PutDestination", + "logs:PutLogEvents", + "logs:DescribeLogStreams", + "s3:listBuckets", + "s3:PutObject", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "logs:DescribeLogGroups", + "logs:PutResourcePolicy", + "firehose:TagDeliveryStream", + "iam:CreateServiceLinkedRole", + "logs:DescribeResourcePolicies" + ] + } + }, + "primaryIdentifier": [ + "/properties/VerifiedAccessInstanceId" + ], + "properties": { + "CidrEndpointsCustomSubDomain": { + "description": "Introduce CidrEndpointsCustomSubDomain property to represent the domain (say, ava.my-company.com)", + "type": "string" + }, + "CidrEndpointsCustomSubDomainNameServers": { + "description": "Property to represent the name servers assoicated with the domain that AVA manages (say, ['ns1.amazonaws.com', 'ns2.amazonaws.com', 'ns3.amazonaws.com', 'ns4.amazonaws.com']).", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Nameserver" + }, + "type": "array" + }, + "CreationTime": { + "description": "Time this Verified Access Instance was created.", + "type": "string" + }, + "Description": { + "description": "A description for the AWS Verified Access instance.", + "type": "string" + }, + "FipsEnabled": { + "description": "Indicates whether FIPS is enabled", + "type": "boolean" + }, + "LastUpdatedTime": { + "description": "Time this Verified Access Instance was last updated.", + "type": "string" + }, + "LoggingConfigurations": { + "$ref": "#/definitions/VerifiedAccessLogs", + "description": "The configuration options for AWS Verified Access instances." + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VerifiedAccessInstanceId": { + "description": "The ID of the AWS Verified Access instance.", + "type": "string" + }, + "VerifiedAccessTrustProviderIds": { + "description": "The IDs of the AWS Verified Access trust providers.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VerifiedAccessTrustProviderId" + }, + "type": "array", + "uniqueItems": true + }, + "VerifiedAccessTrustProviders": { + "description": "AWS Verified Access trust providers.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VerifiedAccessTrustProvider" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/VerifiedAccessInstanceId", + "/properties/CreationTime", + "/properties/LastUpdatedTime", + "/properties/CidrEndpointsCustomSubDomainNameServers" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-verified-access.aws-ec2-verifiedaccessinstance", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DescribeTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VerifiedAccessInstance" +} diff --git a/src/schema/aws-ec2-verifiedaccesstrustprovider.json b/src/schema/aws-ec2-verifiedaccesstrustprovider.json index 50f52a95..f20acffc 100644 --- a/src/schema/aws-ec2-verifiedaccesstrustprovider.json +++ b/src/schema/aws-ec2-verifiedaccesstrustprovider.json @@ -1,241 +1,286 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyReferenceName", - "/properties/DeviceOptions", - "/properties/DeviceTrustProviderType", - "/properties/TrustProviderType", - "/properties/UserTrustProviderType" - ], - "definitions": { - "DeviceOptions": { - "additionalProperties": false, - "description": "The options for device identity based trust providers.", - "properties": { - "PublicSigningKeyUrl": { - "description": "URL Verified Access will use to verify authenticity of the device tokens.", - "type": "string" - }, - "TenantId": { - "description": "The ID of the tenant application with the device-identity provider.", - "type": "string" - } - }, - "type": "object" - }, - "OidcOptions": { - "additionalProperties": false, - "description": "The OpenID Connect details for an oidc -type, user-identity based trust provider.", - "properties": { - "AuthorizationEndpoint": { - "description": "The OIDC authorization endpoint.", - "type": "string" - }, - "ClientId": { - "description": "The client identifier.", - "type": "string" - }, - "ClientSecret": { - "description": "The client secret.", - "type": "string" - }, - "Issuer": { - "description": "The OIDC issuer.", - "type": "string" - }, - "Scope": { - "description": "OpenID Connect (OIDC) scopes are used by an application during authentication to authorize access to details of a user. Each scope returns a specific set of user attributes.", - "type": "string" - }, - "TokenEndpoint": { - "description": "The OIDC token endpoint.", - "type": "string" - }, - "UserInfoEndpoint": { - "description": "The OIDC user info endpoint.", - "type": "string" - } - }, - "type": "object" - }, - "SseSpecification": { - "$ref": "#/definitions/SseSpecification", - "description": "The configuration options for customer provided KMS encryption." - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::EC2::VerifiedAccessTrustProvider type describes a verified access trust provider", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateVerifiedAccessTrustProvider", - "ec2:DescribeVerifiedAccessTrustProviders", - "ec2:CreateTags", - "ec2:DescribeTags", - "sso:GetSharedSsoConfiguration", - "kms:DescribeKey", - "kms:RetireGrant", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteVerifiedAccessTrustProvider", - "ec2:DeleteTags", - "ec2:DescribeVerifiedAccessTrustProviders", - "ec2:DescribeTags", - "kms:DescribeKey", - "kms:RetireGrant", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeVerifiedAccessTrustProviders", - "ec2:DescribeTags", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVerifiedAccessTrustProviders", - "ec2:DescribeTags", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyVerifiedAccessTrustProvider", - "ec2:DescribeVerifiedAccessTrustProviders", - "ec2:DescribeTags", - "ec2:DeleteTags", - "ec2:CreateTags", - "kms:DescribeKey", - "kms:RetireGrant", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/VerifiedAccessTrustProviderId" - ], - "properties": { - "CreationTime": { - "description": "The creation time.", - "type": "string" - }, - "Description": { - "description": "A description for the Amazon Web Services Verified Access trust provider.", - "type": "string" - }, - "DeviceOptions": { - "$ref": "#/definitions/DeviceOptions" - }, - "DeviceTrustProviderType": { - "description": "The type of device-based trust provider. Possible values: jamf|crowdstrike", - "type": "string" - }, - "LastUpdatedTime": { - "description": "The last updated time.", - "type": "string" - }, - "OidcOptions": { - "$ref": "#/definitions/OidcOptions" - }, - "PolicyReferenceName": { - "description": "The identifier to be used when working with policy rules.", - "type": "string" - }, - "SseSpecification": { - "additionalProperties": false, - "description": "The configuration options for customer provided KMS encryption.", - "properties": { - "CustomerManagedKeyEnabled": { - "description": "Whether to encrypt the policy with the provided key or disable encryption", - "type": "boolean" - }, - "KmsKeyArn": { - "description": "KMS Key Arn used to encrypt the group policy", - "type": "string" - } - }, - "type": "object" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "TrustProviderType": { - "description": "Type of trust provider. Possible values: user|device", - "type": "string" - }, - "UserTrustProviderType": { - "description": "The type of device-based trust provider. Possible values: oidc|iam-identity-center", - "type": "string" - }, - "VerifiedAccessTrustProviderId": { - "description": "The ID of the Amazon Web Services Verified Access trust provider.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/VerifiedAccessTrustProviderId", - "/properties/CreationTime", - "/properties/LastUpdatedTime" - ], - "required": [ - "TrustProviderType", - "PolicyReferenceName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-verified-access.aws-ec2-verifiedaccesstrustprovider", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:CreateTags", - "ec2:DescribeTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::VerifiedAccessTrustProvider" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyReferenceName", + "/properties/DeviceOptions", + "/properties/DeviceTrustProviderType", + "/properties/TrustProviderType", + "/properties/UserTrustProviderType" + ], + "definitions": { + "DeviceOptions": { + "additionalProperties": false, + "description": "The options for device identity based trust providers.", + "properties": { + "PublicSigningKeyUrl": { + "description": "URL Verified Access will use to verify authenticity of the device tokens.", + "type": "string" + }, + "TenantId": { + "description": "The ID of the tenant application with the device-identity provider.", + "type": "string" + } + }, + "type": "object" + }, + "NativeApplicationOidcOptions": { + "additionalProperties": false, + "description": "The OpenID Connect details for an oidc -type, user-identity based trust provider for L4.", + "properties": { + "AuthorizationEndpoint": { + "description": "The OIDC authorization endpoint.", + "type": "string" + }, + "ClientId": { + "description": "The client identifier.", + "type": "string" + }, + "ClientSecret": { + "description": "The client secret.", + "type": "string" + }, + "Issuer": { + "description": "The OIDC issuer.", + "type": "string" + }, + "PublicSigningKeyEndpoint": { + "description": "The public signing key for endpoint", + "type": "string" + }, + "Scope": { + "description": "OpenID Connect (OIDC) scopes are used by an application during authentication to authorize access to details of a user. Each scope returns a specific set of user attributes.", + "type": "string" + }, + "TokenEndpoint": { + "description": "The OIDC token endpoint.", + "type": "string" + }, + "UserInfoEndpoint": { + "description": "The OIDC user info endpoint.", + "type": "string" + } + }, + "type": "object" + }, + "OidcOptions": { + "additionalProperties": false, + "description": "The OpenID Connect details for an oidc -type, user-identity based trust provider.", + "properties": { + "AuthorizationEndpoint": { + "description": "The OIDC authorization endpoint.", + "type": "string" + }, + "ClientId": { + "description": "The client identifier.", + "type": "string" + }, + "ClientSecret": { + "description": "The client secret.", + "type": "string" + }, + "Issuer": { + "description": "The OIDC issuer.", + "type": "string" + }, + "Scope": { + "description": "OpenID Connect (OIDC) scopes are used by an application during authentication to authorize access to details of a user. Each scope returns a specific set of user attributes.", + "type": "string" + }, + "TokenEndpoint": { + "description": "The OIDC token endpoint.", + "type": "string" + }, + "UserInfoEndpoint": { + "description": "The OIDC user info endpoint.", + "type": "string" + } + }, + "type": "object" + }, + "SseSpecification": { + "$ref": "#/definitions/SseSpecification", + "description": "The configuration options for customer provided KMS encryption." + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::EC2::VerifiedAccessTrustProvider type describes a verified access trust provider", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVerifiedAccessTrustProvider", + "ec2:DescribeVerifiedAccessTrustProviders", + "ec2:CreateTags", + "ec2:DescribeTags", + "sso:GetSharedSsoConfiguration", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVerifiedAccessTrustProvider", + "ec2:DeleteTags", + "ec2:DescribeVerifiedAccessTrustProviders", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVerifiedAccessTrustProviders", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVerifiedAccessTrustProviders", + "ec2:DescribeTags", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyVerifiedAccessTrustProvider", + "ec2:DescribeVerifiedAccessTrustProviders", + "ec2:DescribeTags", + "ec2:DeleteTags", + "ec2:CreateTags", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/VerifiedAccessTrustProviderId" + ], + "properties": { + "CreationTime": { + "description": "The creation time.", + "type": "string" + }, + "Description": { + "description": "A description for the Amazon Web Services Verified Access trust provider.", + "type": "string" + }, + "DeviceOptions": { + "$ref": "#/definitions/DeviceOptions" + }, + "DeviceTrustProviderType": { + "description": "The type of device-based trust provider. Possible values: jamf|crowdstrike", + "type": "string" + }, + "LastUpdatedTime": { + "description": "The last updated time.", + "type": "string" + }, + "NativeApplicationOidcOptions": { + "$ref": "#/definitions/NativeApplicationOidcOptions" + }, + "OidcOptions": { + "$ref": "#/definitions/OidcOptions" + }, + "PolicyReferenceName": { + "description": "The identifier to be used when working with policy rules.", + "type": "string" + }, + "SseSpecification": { + "additionalProperties": false, + "description": "The configuration options for customer provided KMS encryption.", + "properties": { + "CustomerManagedKeyEnabled": { + "description": "Whether to encrypt the policy with the provided key or disable encryption", + "type": "boolean" + }, + "KmsKeyArn": { + "description": "KMS Key Arn used to encrypt the group policy", + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TrustProviderType": { + "description": "Type of trust provider. Possible values: user|device", + "type": "string" + }, + "UserTrustProviderType": { + "description": "The type of device-based trust provider. Possible values: oidc|iam-identity-center", + "type": "string" + }, + "VerifiedAccessTrustProviderId": { + "description": "The ID of the Amazon Web Services Verified Access trust provider.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VerifiedAccessTrustProviderId", + "/properties/CreationTime", + "/properties/LastUpdatedTime" + ], + "required": [ + "TrustProviderType", + "PolicyReferenceName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-verified-access.aws-ec2-verifiedaccesstrustprovider", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DescribeTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VerifiedAccessTrustProvider", + "writeOnlyProperties": [ + "/properties/NativeApplicationOidcOptions/ClientSecret" + ] +} diff --git a/src/schema/aws-ec2-volume.json b/src/schema/aws-ec2-volume.json index b053aa7a..fa50fc5d 100644 --- a/src/schema/aws-ec2-volume.json +++ b/src/schema/aws-ec2-volume.json @@ -1,156 +1,156 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "properties": { - "Key": { - "description": "The tag key.", - "type": "string" - }, - "Value": { - "description": "The tag value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Specifies an Amazon Elastic Block Store (Amazon EBS) volume.\n When you use CFNlong to update an Amazon EBS volume that modifies ``Iops``, ``Size``, or ``VolumeType``, there is a cooldown period before another operation can occur. This can cause your stack to report being in ``UPDATE_IN_PROGRESS`` or ``UPDATE_ROLLBACK_IN_PROGRESS`` for long periods of time.\n Amazon EBS does not support sizing down an Amazon EBS volume. CFNlong does not attempt to modify an Amazon EBS volume to a smaller size on rollback.\n Some common scenarios when you might encounter a cooldown period for Amazon EBS include:\n + You successfully update an Amazon EBS volume and the update succeeds. When you attempt another update within the cooldown window, that update will be subject to a cooldown period.\n + You successfully update an Amazon EBS volume and the update succeeds but another change in your ``update-stack`` call fails. The rollback will be subject to a cooldown period.\n \n For more information, see [Requirements for EBS volume modifications](https://docs.aws.amazon.com/ebs/latest/userguide/modify-volume-requirements.html).\n *DeletionPolicy attribute* \n To control how CFNlong handles the volume when the stack is deleted, set a deletion policy for your volume. You can choose to retain the volume, to delete the volume, or to create a snapshot of the volume. For more information, see [DeletionPolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html).\n If you set a deletion policy that creates a snapshot, all tags on the volume are included in the snapshot.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateVolume", - "ec2:DescribeVolumes", - "ec2:DescribeVolumeAttribute", - "ec2:ModifyVolumeAttribute", - "ec2:CreateTags", - "kms:GenerateDataKeyWithoutPlaintext", - "kms:CreateGrant" - ], - "timeoutInMinutes": 725 - }, - "delete": { - "permissions": [ - "ec2:DeleteVolume", - "ec2:CreateSnapshot", - "ec2:DescribeSnapshots", - "ec2:DeleteTags", - "ec2:DescribeVolumes" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeVolumes", - "ec2:DescribeTags", - "ec2:DescribeVolumeAttribute" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVolumes", - "ec2:DescribeVolumeAttribute", - "ec2:DescribeTags" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyVolume", - "ec2:ModifyVolumeAttribute", - "ec2:DescribeVolumeAttribute", - "ec2:DescribeVolumesModifications", - "ec2:DescribeVolumes", - "ec2:CreateTags", - "ec2:DeleteTags" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/VolumeId" - ], - "properties": { - "AutoEnableIO": { - "description": "Indicates whether the volume is auto-enabled for I/O operations. By default, Amazon EBS disables I/O to the volume from attached EC2 instances when it determines that a volume's data is potentially inconsistent. If the consistency of the volume is not a concern, and you prefer that the volume be made available immediately if it's impaired, you can configure the volume to automatically enable I/O.", - "type": "boolean" - }, - "AvailabilityZone": { - "description": "The ID of the Availability Zone in which to create the volume. For example, ``us-east-1a``.", - "type": "string" - }, - "Encrypted": { - "description": "Indicates whether the volume should be encrypted. The effect of setting the encryption state to ``true`` depends on the volume origin (new or from a snapshot), starting encryption state, ownership, and whether encryption by default is enabled. For more information, see [Encryption by default](https://docs.aws.amazon.com/ebs/latest/userguide/work-with-ebs-encr.html#encryption-by-default) in the *Amazon EBS User Guide*.\n Encrypted Amazon EBS volumes must be attached to instances that support Amazon EBS encryption. For more information, see [Supported instance types](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption-requirements.html#ebs-encryption_supported_instances).", - "type": "boolean" - }, - "Iops": { - "description": "The number of I/O operations per second (IOPS). For ``gp3``, ``io1``, and ``io2`` volumes, this represents the number of IOPS that are provisioned for the volume. For ``gp2`` volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting.\n The following are the supported values for each volume type:\n + ``gp3``: 3,000 - 16,000 IOPS\n + ``io1``: 100 - 64,000 IOPS\n + ``io2``: 100 - 256,000 IOPS\n \n For ``io2`` volumes, you can achieve up to 256,000 IOPS on [instances built on the Nitro System](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html). On other instances, you can achieve performance up to 32,000 IOPS.\n This parameter is required for ``io1`` and ``io2`` volumes. The default for ``gp3`` volumes is 3,000 IOPS. This parameter is not supported for ``gp2``, ``st1``, ``sc1``, or ``standard`` volumes.", - "type": "integer" - }, - "KmsKeyId": { - "description": "The identifier of the kms-key-long to use for Amazon EBS encryption. If ``KmsKeyId`` is specified, the encrypted state must be ``true``.\n If you omit this property and your account is enabled for encryption by default, or *Encrypted* is set to ``true``, then the volume is encrypted using the default key specified for your account. If your account does not have a default key, then the volume is encrypted using the aws-managed-key.\n Alternatively, if you want to specify a different key, you can specify one of the following:\n + Key ID. For example, 1234abcd-12ab-34cd-56ef-1234567890ab.\n + Key alias. Specify the alias for the key, prefixed with ``alias/``. For example, for a key with the alias ``my_cmk``, use ``alias/my_cmk``. Or to specify the aws-managed-key, use ``alias/aws/ebs``.\n + Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab.\n + Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.", - "type": "string" - }, - "MultiAttachEnabled": { - "description": "Indicates whether Amazon EBS Multi-Attach is enabled.\n CFNlong does not currently support updating a single-attach volume to be multi-attach enabled, updating a multi-attach enabled volume to be single-attach, or updating the size or number of I/O operations per second (IOPS) of a multi-attach enabled volume.", - "type": "boolean" - }, - "OutpostArn": { - "description": "The Amazon Resource Name (ARN) of the Outpost.", - "type": "string" - }, - "Size": { - "description": "The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size. If you specify a snapshot, the default is the snapshot size. You can specify a volume size that is equal to or larger than the snapshot size.\n The following are the supported volumes sizes for each volume type:\n + ``gp2`` and ``gp3``: 1 - 16,384 GiB\n + ``io1``: 4 - 16,384 GiB\n + ``io2``: 4 - 65,536 GiB\n + ``st1`` and ``sc1``: 125 - 16,384 GiB\n + ``standard``: 1 - 1024 GiB", - "type": "integer" - }, - "SnapshotId": { - "description": "The snapshot from which to create the volume. You must specify either a snapshot ID or a volume size.", - "type": "string" - }, - "Tags": { - "description": "The tags to apply to the volume during creation.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Throughput": { - "description": "The throughput to provision for a volume, with a maximum of 1,000 MiB/s.\n This parameter is valid only for ``gp3`` volumes. The default value is 125.\n Valid Range: Minimum value of 125. Maximum value of 1000.", - "type": "integer" - }, - "VolumeId": { - "description": "", - "type": "string" - }, - "VolumeType": { - "description": "The volume type. This parameter can be one of the following values:\n + General Purpose SSD: ``gp2`` | ``gp3`` \n + Provisioned IOPS SSD: ``io1`` | ``io2`` \n + Throughput Optimized HDD: ``st1`` \n + Cold HDD: ``sc1`` \n + Magnetic: ``standard`` \n \n For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html).\n Default: ``gp2``", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/VolumeId" - ], - "required": [ - "AvailabilityZone" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::Volume" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies an Amazon Elastic Block Store (Amazon EBS) volume.\n When you use CFNlong to update an Amazon EBS volume that modifies ``Iops``, ``Size``, or ``VolumeType``, there is a cooldown period before another operation can occur. This can cause your stack to report being in ``UPDATE_IN_PROGRESS`` or ``UPDATE_ROLLBACK_IN_PROGRESS`` for long periods of time.\n Amazon EBS does not support sizing down an Amazon EBS volume. CFNlong does not attempt to modify an Amazon EBS volume to a smaller size on rollback.\n Some common scenarios when you might encounter a cooldown period for Amazon EBS include:\n + You successfully update an Amazon EBS volume and the update succeeds. When you attempt another update within the cooldown window, that update will be subject to a cooldown period.\n + You successfully update an Amazon EBS volume and the update succeeds but another change in your ``update-stack`` call fails. The rollback will be subject to a cooldown period.\n \n For more information, see [Requirements for EBS volume modifications](https://docs.aws.amazon.com/ebs/latest/userguide/modify-volume-requirements.html).\n *DeletionPolicy attribute* \n To control how CFNlong handles the volume when the stack is deleted, set a deletion policy for your volume. You can choose to retain the volume, to delete the volume, or to create a snapshot of the volume. For more information, see [DeletionPolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html).\n If you set a deletion policy that creates a snapshot, all tags on the volume are included in the snapshot.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVolume", + "ec2:DescribeVolumes", + "ec2:DescribeVolumeAttribute", + "ec2:ModifyVolumeAttribute", + "ec2:CreateTags", + "kms:GenerateDataKeyWithoutPlaintext", + "kms:CreateGrant" + ], + "timeoutInMinutes": 725 + }, + "delete": { + "permissions": [ + "ec2:DeleteVolume", + "ec2:CreateSnapshot", + "ec2:DescribeSnapshots", + "ec2:DeleteTags", + "ec2:DescribeVolumes" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVolumes", + "ec2:DescribeTags", + "ec2:DescribeVolumeAttribute" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVolumes", + "ec2:DescribeVolumeAttribute", + "ec2:DescribeTags" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyVolume", + "ec2:ModifyVolumeAttribute", + "ec2:DescribeVolumeAttribute", + "ec2:DescribeVolumesModifications", + "ec2:DescribeVolumes", + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/VolumeId" + ], + "properties": { + "AutoEnableIO": { + "description": "Indicates whether the volume is auto-enabled for I/O operations. By default, Amazon EBS disables I/O to the volume from attached EC2 instances when it determines that a volume's data is potentially inconsistent. If the consistency of the volume is not a concern, and you prefer that the volume be made available immediately if it's impaired, you can configure the volume to automatically enable I/O.", + "type": "boolean" + }, + "AvailabilityZone": { + "description": "The ID of the Availability Zone in which to create the volume. For example, ``us-east-1a``.", + "type": "string" + }, + "Encrypted": { + "description": "Indicates whether the volume should be encrypted. The effect of setting the encryption state to ``true`` depends on the volume origin (new or from a snapshot), starting encryption state, ownership, and whether encryption by default is enabled. For more information, see [Encryption by default](https://docs.aws.amazon.com/ebs/latest/userguide/work-with-ebs-encr.html#encryption-by-default) in the *Amazon EBS User Guide*.\n Encrypted Amazon EBS volumes must be attached to instances that support Amazon EBS encryption. For more information, see [Supported instance types](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption-requirements.html#ebs-encryption_supported_instances).", + "type": "boolean" + }, + "Iops": { + "description": "The number of I/O operations per second (IOPS). For ``gp3``, ``io1``, and ``io2`` volumes, this represents the number of IOPS that are provisioned for the volume. For ``gp2`` volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting.\n The following are the supported values for each volume type:\n + ``gp3``: 3,000 - 16,000 IOPS\n + ``io1``: 100 - 64,000 IOPS\n + ``io2``: 100 - 256,000 IOPS\n \n For ``io2`` volumes, you can achieve up to 256,000 IOPS on [instances built on the Nitro System](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html). On other instances, you can achieve performance up to 32,000 IOPS.\n This parameter is required for ``io1`` and ``io2`` volumes. The default for ``gp3`` volumes is 3,000 IOPS. This parameter is not supported for ``gp2``, ``st1``, ``sc1``, or ``standard`` volumes.", + "type": "integer" + }, + "KmsKeyId": { + "description": "The identifier of the kms-key-long to use for Amazon EBS encryption. If ``KmsKeyId`` is specified, the encrypted state must be ``true``.\n If you omit this property and your account is enabled for encryption by default, or *Encrypted* is set to ``true``, then the volume is encrypted using the default key specified for your account. If your account does not have a default key, then the volume is encrypted using the aws-managed-key.\n Alternatively, if you want to specify a different key, you can specify one of the following:\n + Key ID. For example, 1234abcd-12ab-34cd-56ef-1234567890ab.\n + Key alias. Specify the alias for the key, prefixed with ``alias/``. For example, for a key with the alias ``my_cmk``, use ``alias/my_cmk``. Or to specify the aws-managed-key, use ``alias/aws/ebs``.\n + Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab.\n + Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.", + "type": "string" + }, + "MultiAttachEnabled": { + "description": "Indicates whether Amazon EBS Multi-Attach is enabled.\n CFNlong does not currently support updating a single-attach volume to be multi-attach enabled, updating a multi-attach enabled volume to be single-attach, or updating the size or number of I/O operations per second (IOPS) of a multi-attach enabled volume.", + "type": "boolean" + }, + "OutpostArn": { + "description": "The Amazon Resource Name (ARN) of the Outpost.", + "type": "string" + }, + "Size": { + "description": "The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size. If you specify a snapshot, the default is the snapshot size. You can specify a volume size that is equal to or larger than the snapshot size.\n The following are the supported volumes sizes for each volume type:\n + ``gp2`` and ``gp3``: 1 - 16,384 GiB\n + ``io1``: 4 - 16,384 GiB\n + ``io2``: 4 - 65,536 GiB\n + ``st1`` and ``sc1``: 125 - 16,384 GiB\n + ``standard``: 1 - 1024 GiB", + "type": "integer" + }, + "SnapshotId": { + "description": "The snapshot from which to create the volume. You must specify either a snapshot ID or a volume size.", + "type": "string" + }, + "Tags": { + "description": "The tags to apply to the volume during creation.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Throughput": { + "description": "The throughput to provision for a volume, with a maximum of 1,000 MiB/s.\n This parameter is valid only for ``gp3`` volumes. The default value is 125.\n Valid Range: Minimum value of 125. Maximum value of 1000.", + "type": "integer" + }, + "VolumeId": { + "description": "", + "type": "string" + }, + "VolumeType": { + "description": "The volume type. This parameter can be one of the following values:\n + General Purpose SSD: ``gp2`` | ``gp3`` \n + Provisioned IOPS SSD: ``io1`` | ``io2`` \n + Throughput Optimized HDD: ``st1`` \n + Cold HDD: ``sc1`` \n + Magnetic: ``standard`` \n \n For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html).\n Default: ``gp2``", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VolumeId" + ], + "required": [ + "AvailabilityZone" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::Volume" +} diff --git a/src/schema/aws-ec2-volumeattachment.json b/src/schema/aws-ec2-volumeattachment.json index 997a4183..4181873c 100644 --- a/src/schema/aws-ec2-volumeattachment.json +++ b/src/schema/aws-ec2-volumeattachment.json @@ -1,81 +1,81 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Device", - "/properties/InstanceId", - "/properties/VolumeId" - ], - "definitions": { - "Device": { - "description": "The device name", - "type": "string" - }, - "Id": { - "description": "", - "type": "string" - }, - "InstanceId": { - "description": "The ID of the instance to which the volume attaches", - "type": "string" - }, - "VolumeId": { - "description": "The ID of the Amazon EBS volume", - "type": "string" - } - }, - "description": "Attaches an Amazon EBS volume to a running instance and exposes it to the instance with the specified device name.\n Before this resource can be deleted (and therefore the volume detached), you must first unmount the volume in the instance. Failure to do so results in the volume being stuck in the busy state while it is trying to detach, which could possibly damage the file system or the data it contains.\n If an Amazon EBS volume is the root device of an instance, it cannot be detached while the instance is in the \"running\" state. To detach the root volume, stop the instance first.\n If the root volume is detached from an instance with an MKT product code, then the product codes from that volume are no longer associated with the instance.", - "handlers": { - "create": { - "permissions": [ - "ec2:AttachVolume", - "ec2:DescribeVolumes" - ] - }, - "delete": { - "permissions": [ - "ec2:DetachVolume", - "ec2:DescribeVolumes" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeVolumes" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVolumes" - ] - } - }, - "primaryIdentifier": [ - "/properties/VolumeId", - "/properties/InstanceId" - ], - "properties": { - "Device": { - "$ref": "#/definitions/Device", - "description": "The device name (for example, ``/dev/sdh`` or ``xvdh``)." - }, - "InstanceId": { - "$ref": "#/definitions/InstanceId", - "description": "The ID of the instance to which the volume attaches. This value can be a reference to an [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) resource, or it can be the physical ID of an existing EC2 instance." - }, - "VolumeId": { - "$ref": "#/definitions/VolumeId", - "description": "The ID of the Amazon EBS volume. The volume and instance must be within the same Availability Zone. This value can be a reference to an [AWS::EC2::Volume](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html) resource, or it can be the volume ID of an existing Amazon EBS volume." - } - }, - "required": [ - "VolumeId", - "InstanceId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::VolumeAttachment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Device", + "/properties/InstanceId", + "/properties/VolumeId" + ], + "definitions": { + "Device": { + "description": "The device name", + "type": "string" + }, + "Id": { + "description": "", + "type": "string" + }, + "InstanceId": { + "description": "The ID of the instance to which the volume attaches", + "type": "string" + }, + "VolumeId": { + "description": "The ID of the Amazon EBS volume", + "type": "string" + } + }, + "description": "Attaches an Amazon EBS volume to a running instance and exposes it to the instance with the specified device name.\n Before this resource can be deleted (and therefore the volume detached), you must first unmount the volume in the instance. Failure to do so results in the volume being stuck in the busy state while it is trying to detach, which could possibly damage the file system or the data it contains.\n If an Amazon EBS volume is the root device of an instance, it cannot be detached while the instance is in the \"running\" state. To detach the root volume, stop the instance first.\n If the root volume is detached from an instance with an MKT product code, then the product codes from that volume are no longer associated with the instance.", + "handlers": { + "create": { + "permissions": [ + "ec2:AttachVolume", + "ec2:DescribeVolumes" + ] + }, + "delete": { + "permissions": [ + "ec2:DetachVolume", + "ec2:DescribeVolumes" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVolumes" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVolumes" + ] + } + }, + "primaryIdentifier": [ + "/properties/VolumeId", + "/properties/InstanceId" + ], + "properties": { + "Device": { + "$ref": "#/definitions/Device", + "description": "The device name (for example, ``/dev/sdh`` or ``xvdh``)." + }, + "InstanceId": { + "$ref": "#/definitions/InstanceId", + "description": "The ID of the instance to which the volume attaches. This value can be a reference to an [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) resource, or it can be the physical ID of an existing EC2 instance." + }, + "VolumeId": { + "$ref": "#/definitions/VolumeId", + "description": "The ID of the Amazon EBS volume. The volume and instance must be within the same Availability Zone. This value can be a reference to an [AWS::EC2::Volume](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html) resource, or it can be the volume ID of an existing Amazon EBS volume." + } + }, + "required": [ + "VolumeId", + "InstanceId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::VolumeAttachment" +} diff --git a/src/schema/aws-ec2-vpc.json b/src/schema/aws-ec2-vpc.json index 8a65c12b..2a38bc65 100644 --- a/src/schema/aws-ec2-vpc.json +++ b/src/schema/aws-ec2-vpc.json @@ -1,163 +1,163 @@ -{ - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/InstanceTenancy" - ], - "createOnlyProperties": [ - "/properties/CidrBlock", - "/properties/Ipv4IpamPoolId", - "/properties/Ipv4NetmaskLength" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "properties": { - "Key": { - "description": "The tag key.", - "type": "string" - }, - "Value": { - "description": "The tag value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Specifies a virtual private cloud (VPC).\n To add an IPv6 CIDR block to the VPC, see [AWS::EC2::VPCCidrBlock](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpccidrblock.html).\n For more information, see [Virtual private clouds (VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/configure-your-vpc.html) in the *Amazon VPC User Guide*.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateVpc", - "ec2:DescribeVpcs", - "ec2:ModifyVpcAttribute", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteVpc", - "ec2:DescribeVpcs" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeVpcs" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVpcs", - "ec2:DescribeSecurityGroups", - "ec2:DescribeNetworkAcls", - "ec2:DescribeVpcAttribute" - ] - }, - "update": { - "permissions": [ - "ec2:CreateTags", - "ec2:ModifyVpcAttribute", - "ec2:DeleteTags", - "ec2:ModifyVpcTenancy" - ] - } - }, - "primaryIdentifier": [ - "/properties/VpcId" - ], - "properties": { - "CidrBlock": { - "description": "The IPv4 network range for the VPC, in CIDR notation. For example, ``10.0.0.0/16``. We modify the specified CIDR block to its canonical form; for example, if you specify ``100.68.0.18/18``, we modify it to ``100.68.0.0/18``.\n You must specify either``CidrBlock`` or ``Ipv4IpamPoolId``.", - "type": "string" - }, - "CidrBlockAssociations": { - "description": "", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "DefaultNetworkAcl": { - "description": "", - "insertionOrder": false, - "type": "string" - }, - "DefaultSecurityGroup": { - "description": "", - "insertionOrder": false, - "type": "string" - }, - "EnableDnsHostnames": { - "description": "Indicates whether the instances launched in the VPC get DNS hostnames. If enabled, instances in the VPC get DNS hostnames; otherwise, they do not. Disabled by default for nondefault VPCs. For more information, see [DNS attributes in your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support).\n You can only enable DNS hostnames if you've enabled DNS support.", - "type": "boolean" - }, - "EnableDnsSupport": { - "description": "Indicates whether the DNS resolution is supported for the VPC. If enabled, queries to the Amazon provided DNS server at the 169.254.169.253 IP address, or the reserved IP address at the base of the VPC network range \"plus two\" succeed. If disabled, the Amazon provided DNS service in the VPC that resolves public DNS hostnames to IP addresses is not enabled. Enabled by default. For more information, see [DNS attributes in your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support).", - "type": "boolean" - }, - "InstanceTenancy": { - "description": "The allowed tenancy of instances launched into the VPC.\n + ``default``: An instance launched into the VPC runs on shared hardware by default, unless you explicitly specify a different tenancy during instance launch.\n + ``dedicated``: An instance launched into the VPC runs on dedicated hardware by default, unless you explicitly specify a tenancy of ``host`` during instance launch. You cannot specify a tenancy of ``default`` during instance launch.\n \n Updating ``InstanceTenancy`` requires no replacement only if you are updating its value from ``dedicated`` to ``default``. Updating ``InstanceTenancy`` from ``default`` to ``dedicated`` requires replacement.", - "type": "string" - }, - "Ipv4IpamPoolId": { - "description": "The ID of an IPv4 IPAM pool you want to use for allocating this VPC's CIDR. For more information, see [What is IPAM?](https://docs.aws.amazon.com//vpc/latest/ipam/what-is-it-ipam.html) in the *Amazon VPC IPAM User Guide*.\n You must specify either``CidrBlock`` or ``Ipv4IpamPoolId``.", - "type": "string" - }, - "Ipv4NetmaskLength": { - "description": "The netmask length of the IPv4 CIDR you want to allocate to this VPC from an Amazon VPC IP Address Manager (IPAM) pool. For more information about IPAM, see [What is IPAM?](https://docs.aws.amazon.com//vpc/latest/ipam/what-is-it-ipam.html) in the *Amazon VPC IPAM User Guide*.", - "type": "integer" - }, - "Ipv6CidrBlocks": { - "description": "", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "description": "The tags for the VPC.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcId": { - "description": "", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CidrBlockAssociations", - "/properties/DefaultNetworkAcl", - "/properties/DefaultSecurityGroup", - "/properties/Ipv6CidrBlocks", - "/properties/VpcId" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ec2:DeleteTags", - "ec2:CreateTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::VPC", - "writeOnlyProperties": [ - "/properties/Ipv4IpamPoolId", - "/properties/Ipv4NetmaskLength" - ] -} +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/InstanceTenancy" + ], + "createOnlyProperties": [ + "/properties/CidrBlock", + "/properties/Ipv4IpamPoolId", + "/properties/Ipv4NetmaskLength" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a virtual private cloud (VPC).\n To add an IPv6 CIDR block to the VPC, see [AWS::EC2::VPCCidrBlock](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpccidrblock.html).\n For more information, see [Virtual private clouds (VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/configure-your-vpc.html) in the *Amazon VPC User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpc", + "ec2:DescribeVpcs", + "ec2:ModifyVpcAttribute", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpc", + "ec2:DescribeVpcs" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpcs" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcs", + "ec2:DescribeSecurityGroups", + "ec2:DescribeNetworkAcls", + "ec2:DescribeVpcAttribute" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:ModifyVpcAttribute", + "ec2:DeleteTags", + "ec2:ModifyVpcTenancy" + ] + } + }, + "primaryIdentifier": [ + "/properties/VpcId" + ], + "properties": { + "CidrBlock": { + "description": "The IPv4 network range for the VPC, in CIDR notation. For example, ``10.0.0.0/16``. We modify the specified CIDR block to its canonical form; for example, if you specify ``100.68.0.18/18``, we modify it to ``100.68.0.0/18``.\n You must specify either``CidrBlock`` or ``Ipv4IpamPoolId``.", + "type": "string" + }, + "CidrBlockAssociations": { + "description": "", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "DefaultNetworkAcl": { + "description": "", + "insertionOrder": false, + "type": "string" + }, + "DefaultSecurityGroup": { + "description": "", + "insertionOrder": false, + "type": "string" + }, + "EnableDnsHostnames": { + "description": "Indicates whether the instances launched in the VPC get DNS hostnames. If enabled, instances in the VPC get DNS hostnames; otherwise, they do not. Disabled by default for nondefault VPCs. For more information, see [DNS attributes in your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support).\n You can only enable DNS hostnames if you've enabled DNS support.", + "type": "boolean" + }, + "EnableDnsSupport": { + "description": "Indicates whether the DNS resolution is supported for the VPC. If enabled, queries to the Amazon provided DNS server at the 169.254.169.253 IP address, or the reserved IP address at the base of the VPC network range \"plus two\" succeed. If disabled, the Amazon provided DNS service in the VPC that resolves public DNS hostnames to IP addresses is not enabled. Enabled by default. For more information, see [DNS attributes in your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support).", + "type": "boolean" + }, + "InstanceTenancy": { + "description": "The allowed tenancy of instances launched into the VPC.\n + ``default``: An instance launched into the VPC runs on shared hardware by default, unless you explicitly specify a different tenancy during instance launch.\n + ``dedicated``: An instance launched into the VPC runs on dedicated hardware by default, unless you explicitly specify a tenancy of ``host`` during instance launch. You cannot specify a tenancy of ``default`` during instance launch.\n \n Updating ``InstanceTenancy`` requires no replacement only if you are updating its value from ``dedicated`` to ``default``. Updating ``InstanceTenancy`` from ``default`` to ``dedicated`` requires replacement.", + "type": "string" + }, + "Ipv4IpamPoolId": { + "description": "The ID of an IPv4 IPAM pool you want to use for allocating this VPC's CIDR. For more information, see [What is IPAM?](https://docs.aws.amazon.com//vpc/latest/ipam/what-is-it-ipam.html) in the *Amazon VPC IPAM User Guide*.\n You must specify either``CidrBlock`` or ``Ipv4IpamPoolId``.", + "type": "string" + }, + "Ipv4NetmaskLength": { + "description": "The netmask length of the IPv4 CIDR you want to allocate to this VPC from an Amazon VPC IP Address Manager (IPAM) pool. For more information about IPAM, see [What is IPAM?](https://docs.aws.amazon.com//vpc/latest/ipam/what-is-it-ipam.html) in the *Amazon VPC IPAM User Guide*.", + "type": "integer" + }, + "Ipv6CidrBlocks": { + "description": "", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "description": "The tags for the VPC.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CidrBlockAssociations", + "/properties/DefaultNetworkAcl", + "/properties/DefaultSecurityGroup", + "/properties/Ipv6CidrBlocks", + "/properties/VpcId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:DeleteTags", + "ec2:CreateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VPC", + "writeOnlyProperties": [ + "/properties/Ipv4IpamPoolId", + "/properties/Ipv4NetmaskLength" + ] +} diff --git a/src/schema/aws-ec2-vpcblockpublicaccessexclusion.json b/src/schema/aws-ec2-vpcblockpublicaccessexclusion.json new file mode 100644 index 00000000..89750d42 --- /dev/null +++ b/src/schema/aws-ec2-vpcblockpublicaccessexclusion.json @@ -0,0 +1,131 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcId", + "/properties/SubnetId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::VPCBlockPublicAccessExclusion.", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions", + "ec2:CreateVpcBlockPublicAccessExclusion", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions", + "ec2:DeleteVpcBlockPublicAccessExclusion" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessExclusions", + "ec2:ModifyVpcBlockPublicAccessExclusion", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "oneOf": [ + { + "required": [ + "VpcId" + ] + }, + { + "required": [ + "SubnetId" + ] + } + ], + "primaryIdentifier": [ + "/properties/ExclusionId" + ], + "properties": { + "ExclusionId": { + "description": "The ID of the exclusion", + "type": "string" + }, + "InternetGatewayExclusionMode": { + "description": "The desired Block Public Access Exclusion Mode for a specific VPC/Subnet.", + "enum": [ + "allow-bidirectional", + "allow-egress" + ], + "type": "string" + }, + "SubnetId": { + "description": "The ID of the subnet. Required only if you don't specify VpcId", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "The ID of the vpc. Required only if you don't specify SubnetId.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ExclusionId" + ], + "required": [ + "InternetGatewayExclusionMode" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-vpcblockpublicaccessexclusion.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VPCBlockPublicAccessExclusion" +} diff --git a/src/schema/aws-ec2-vpcblockpublicaccessoptions.json b/src/schema/aws-ec2-vpcblockpublicaccessoptions.json new file mode 100644 index 00000000..5a47370f --- /dev/null +++ b/src/schema/aws-ec2-vpcblockpublicaccessoptions.json @@ -0,0 +1,60 @@ +{ + "additionalProperties": false, + "description": "Resource Type definition for AWS::EC2::VPCBlockPublicAccessOptions", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessOptions", + "ec2:ModifyVpcBlockPublicAccessOptions" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessOptions", + "ec2:ModifyVpcBlockPublicAccessOptions" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessOptions" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeVpcBlockPublicAccessOptions", + "ec2:ModifyVpcBlockPublicAccessOptions" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccountId" + ], + "properties": { + "AccountId": { + "description": "The identifier for the specified AWS account.", + "type": "string" + }, + "InternetGatewayBlockMode": { + "description": "The desired Block Public Access mode for Internet Gateways in your account. We do not allow to create in a off mode as this is the default value", + "enum": [ + "block-bidirectional", + "block-ingress" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AccountId" + ], + "required": [ + "InternetGatewayBlockMode" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-vpcblockpublicaccessoptions.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::VPCBlockPublicAccessOptions" +} diff --git a/src/schema/aws-ec2-vpccidrblock.json b/src/schema/aws-ec2-vpccidrblock.json index 389fd408..08e0c50d 100644 --- a/src/schema/aws-ec2-vpccidrblock.json +++ b/src/schema/aws-ec2-vpccidrblock.json @@ -1,123 +1,128 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Ipv6Pool", - "/properties/VpcId", - "/properties/AmazonProvidedIpv6CidrBlock", - "/properties/Ipv6CidrBlock", - "/properties/CidrBlock", - "/properties/Ipv4IpamPoolId", - "/properties/Ipv4NetmaskLength", - "/properties/Ipv6IpamPoolId", - "/properties/Ipv6NetmaskLength" - ], - "description": "Resource Type definition for AWS::EC2::VPCCidrBlock", - "handlers": { - "create": { - "permissions": [ - "ec2:AssociateVpcCidrBlock", - "ec2:DescribeVpcs", - "ec2:AllocateIpamPoolCidr" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeVpcs", - "ec2:DisassociateVpcCidrBlock" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "VpcId": { - "description": "The ID of the VPC.", - "type": "string" - } - }, - "required": [ - "VpcId" - ] - }, - "permissions": [ - "ec2:DescribeVpcs" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVpcs" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id", - "/properties/VpcId" - ], - "properties": { - "AmazonProvidedIpv6CidrBlock": { - "description": "Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block.", - "type": "boolean" - }, - "CidrBlock": { - "description": "An IPv4 CIDR block to associate with the VPC.", - "type": "string" - }, - "Id": { - "description": "The Id of the VPC associated CIDR Block.", - "type": "string" - }, - "IpSource": { - "description": "The IP Source of an IPv6 VPC CIDR Block.", - "type": "string" - }, - "Ipv4IpamPoolId": { - "description": "The ID of the IPv4 IPAM pool to Associate a CIDR from to a VPC.", - "type": "string" - }, - "Ipv4NetmaskLength": { - "description": "The netmask length of the IPv4 CIDR you would like to associate from an Amazon VPC IP Address Manager (IPAM) pool.", - "type": "integer" - }, - "Ipv6AddressAttribute": { - "description": "The value denoting whether an IPv6 VPC CIDR Block is public or private.", - "type": "string" - }, - "Ipv6CidrBlock": { - "description": "An IPv6 CIDR block from the IPv6 address pool.", - "type": "string" - }, - "Ipv6IpamPoolId": { - "description": "The ID of the IPv6 IPAM pool to Associate a CIDR from to a VPC.", - "type": "string" - }, - "Ipv6NetmaskLength": { - "description": "The netmask length of the IPv6 CIDR you would like to associate from an Amazon VPC IP Address Manager (IPAM) pool.", - "type": "integer" - }, - "Ipv6Pool": { - "description": "The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block.", - "type": "string" - }, - "VpcId": { - "description": "The ID of the VPC.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Ipv6AddressAttribute", - "/properties/IpSource" - ], - "required": [ - "VpcId" - ], - "tagging": { - "taggable": false - }, - "typeName": "AWS::EC2::VPCCidrBlock", - "writeOnlyProperties": [ - "/properties/Ipv4IpamPoolId", - "/properties/Ipv4NetmaskLength", - "/properties/Ipv6IpamPoolId", - "/properties/Ipv6NetmaskLength" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Ipv6Pool", + "/properties/VpcId", + "/properties/AmazonProvidedIpv6CidrBlock", + "/properties/Ipv6CidrBlock", + "/properties/CidrBlock", + "/properties/Ipv4IpamPoolId", + "/properties/Ipv4NetmaskLength", + "/properties/Ipv6IpamPoolId", + "/properties/Ipv6NetmaskLength", + "/properties/Ipv6CidrBlockNetworkBorderGroup" + ], + "description": "Resource Type definition for AWS::EC2::VPCCidrBlock", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateVpcCidrBlock", + "ec2:DescribeVpcs", + "ec2:AllocateIpamPoolCidr" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeVpcs", + "ec2:DisassociateVpcCidrBlock" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + } + }, + "required": [ + "VpcId" + ] + }, + "permissions": [ + "ec2:DescribeVpcs" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcs" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id", + "/properties/VpcId" + ], + "properties": { + "AmazonProvidedIpv6CidrBlock": { + "description": "Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IPv6 addresses, or the size of the CIDR block.", + "type": "boolean" + }, + "CidrBlock": { + "description": "An IPv4 CIDR block to associate with the VPC.", + "type": "string" + }, + "Id": { + "description": "The Id of the VPC associated CIDR Block.", + "type": "string" + }, + "IpSource": { + "description": "The IP Source of an IPv6 VPC CIDR Block.", + "type": "string" + }, + "Ipv4IpamPoolId": { + "description": "The ID of the IPv4 IPAM pool to Associate a CIDR from to a VPC.", + "type": "string" + }, + "Ipv4NetmaskLength": { + "description": "The netmask length of the IPv4 CIDR you would like to associate from an Amazon VPC IP Address Manager (IPAM) pool.", + "type": "integer" + }, + "Ipv6AddressAttribute": { + "description": "The value denoting whether an IPv6 VPC CIDR Block is public or private.", + "type": "string" + }, + "Ipv6CidrBlock": { + "description": "An IPv6 CIDR block from the IPv6 address pool.", + "type": "string" + }, + "Ipv6CidrBlockNetworkBorderGroup": { + "description": "The name of the location from which we advertise the IPV6 CIDR block.", + "type": "string" + }, + "Ipv6IpamPoolId": { + "description": "The ID of the IPv6 IPAM pool to Associate a CIDR from to a VPC.", + "type": "string" + }, + "Ipv6NetmaskLength": { + "description": "The netmask length of the IPv6 CIDR you would like to associate from an Amazon VPC IP Address Manager (IPAM) pool.", + "type": "integer" + }, + "Ipv6Pool": { + "description": "The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block.", + "type": "string" + }, + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Ipv6AddressAttribute", + "/properties/IpSource" + ], + "required": [ + "VpcId" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::EC2::VPCCidrBlock", + "writeOnlyProperties": [ + "/properties/Ipv4IpamPoolId", + "/properties/Ipv4NetmaskLength", + "/properties/Ipv6IpamPoolId", + "/properties/Ipv6NetmaskLength" + ] +} diff --git a/src/schema/aws-ec2-vpcdhcpoptionsassociation.json b/src/schema/aws-ec2-vpcdhcpoptionsassociation.json index e3c0f023..c67314f6 100644 --- a/src/schema/aws-ec2-vpcdhcpoptionsassociation.json +++ b/src/schema/aws-ec2-vpcdhcpoptionsassociation.json @@ -1,62 +1,62 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DhcpOptionsId", - "/properties/VpcId" - ], - "description": "Associates a set of DHCP options with a VPC, or associates no DHCP options with the VPC.", - "handlers": { - "create": { - "permissions": [ - "ec2:AssociateDhcpOptions" - ] - }, - "delete": { - "permissions": [ - "ec2:AssociateDhcpOptions" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeVpcs" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVpcs" - ] - }, - "update": { - "permissions": [ - "ec2:AssociateDhcpOptions" - ] - } - }, - "primaryIdentifier": [ - "/properties/DhcpOptionsId", - "/properties/VpcId" - ], - "properties": { - "DhcpOptionsId": { - "description": "The ID of the DHCP options set, or default to associate no DHCP options with the VPC.", - "type": "string" - }, - "VpcId": { - "description": "The ID of the VPC.", - "type": "string" - } - }, - "replacementStrategy": "delete_then_create", - "required": [ - "VpcId", - "DhcpOptionsId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::VPCDHCPOptionsAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DhcpOptionsId", + "/properties/VpcId" + ], + "description": "Associates a set of DHCP options with a VPC, or associates no DHCP options with the VPC.", + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateDhcpOptions" + ] + }, + "delete": { + "permissions": [ + "ec2:AssociateDhcpOptions" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpcs" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcs" + ] + }, + "update": { + "permissions": [ + "ec2:AssociateDhcpOptions" + ] + } + }, + "primaryIdentifier": [ + "/properties/DhcpOptionsId", + "/properties/VpcId" + ], + "properties": { + "DhcpOptionsId": { + "description": "The ID of the DHCP options set, or default to associate no DHCP options with the VPC.", + "type": "string" + }, + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + } + }, + "replacementStrategy": "delete_then_create", + "required": [ + "VpcId", + "DhcpOptionsId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::VPCDHCPOptionsAssociation" +} diff --git a/src/schema/aws-ec2-vpcendpoint.json b/src/schema/aws-ec2-vpcendpoint.json index 3a520359..079570c3 100644 --- a/src/schema/aws-ec2-vpcendpoint.json +++ b/src/schema/aws-ec2-vpcendpoint.json @@ -1,173 +1,292 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServiceName", - "/properties/VpcEndpointType", - "/properties/VpcId" - ], - "description": "Specifies a VPC endpoint. A VPC endpoint provides a private connection between your VPC and an endpoint service. You can use an endpoint service provided by AWS, an MKT Partner, or another AWS accounts in your organization. For more information, see the [User Guide](https://docs.aws.amazon.com/vpc/latest/privatelink/).\n An endpoint of type ``Interface`` establishes connections between the subnets in your VPC and an AWS-service, your own service, or a service hosted by another AWS-account. With an interface VPC endpoint, you specify the subnets in which to create the endpoint and the security groups to associate with the endpoint network interfaces.\n An endpoint of type ``gateway`` serves as a target for a route in your route table for traffic destined for S3 or DDB. You can specify an endpoint policy for the endpoint, which controls access to the service from your VPC. You can also specify the VPC route tables that use the endpoint. For more information about connectivity to S3, see [Why can't I connect to an S3 bucket using a gateway VPC endpoint?](https://docs.aws.amazon.com/premiumsupport/knowledge-center/connect-s3-vpc-endpoint) \n An endpoint of type ``GatewayLoadBalancer`` provides private connectivity between your VPC and virtual appliances from a service provider.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints" - ], - "timeoutInMinutes": 210 - }, - "delete": { - "permissions": [ - "ec2:DeleteVpcEndpoints", - "ec2:DescribeVpcEndpoints" - ], - "timeoutInMinutes": 210 - }, - "list": { - "permissions": [ - "ec2:DescribeVpcEndpoints" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVpcEndpoints" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyVpcEndpoint", - "ec2:DescribeVpcEndpoints" - ], - "timeoutInMinutes": 210 - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CreationTimestamp": { - "description": "", - "type": "string" - }, - "DnsEntries": { - "description": "", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "description": "", - "type": "string" - }, - "NetworkInterfaceIds": { - "description": "", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "PolicyDocument": { - "description": "An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints.\n For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. For example, if you have a JSON policy, you can convert it to YAML before including it in the YAML template, and CFNlong converts the policy to JSON format before calling the API actions for privatelink. Alternatively, you can include the JSON directly in the YAML, as shown in the following ``Properties`` section:\n ``Properties: VpcEndpointType: 'Interface' ServiceName: !Sub 'com.amazonaws.${AWS::Region}.logs' PolicyDocument: '{ \"Version\":\"2012-10-17\", \"Statement\": [{ \"Effect\":\"Allow\", \"Principal\":\"*\", \"Action\":[\"logs:Describe*\",\"logs:Get*\",\"logs:List*\",\"logs:FilterLogEvents\"], \"Resource\":\"*\" }] }'``", - "type": [ - "string", - "object" - ] - }, - "PrivateDnsEnabled": { - "description": "Indicate whether to associate a private hosted zone with the specified VPC. The private hosted zone contains a record set for the default public DNS name for the service for the Region (for example, ``kinesis.us-east-1.amazonaws.com``), which resolves to the private IP addresses of the endpoint network interfaces in the VPC. This enables you to make requests to the default public DNS name for the service instead of the public DNS names that are automatically generated by the VPC endpoint service.\n To use a private hosted zone, you must set the following VPC attributes to ``true``: ``enableDnsHostnames`` and ``enableDnsSupport``.\n This property is supported only for interface endpoints.\n Default: ``false``", - "type": "boolean" - }, - "RouteTableIds": { - "description": "The IDs of the route tables. Routing is supported only for gateway endpoints.", - "insertionOrder": false, - "items": { - "relationshipRef": { - "propertyPath": "/properties/RouteTableId", - "typeName": "AWS::EC2::RouteTable" - }, - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "SecurityGroupIds": { - "description": "The IDs of the security groups to associate with the endpoint network interfaces. If this parameter is not specified, we use the default security group for the VPC. Security groups are supported only for interface endpoints.", - "insertionOrder": false, - "items": { - "anyOf": [ - { - "relationshipRef": { - "propertyPath": "/properties/GroupId", - "typeName": "AWS::EC2::SecurityGroup" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/Id", - "typeName": "AWS::EC2::SecurityGroup" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/DefaultSecurityGroup", - "typeName": "AWS::EC2::VPC" - } - } - ], - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "ServiceName": { - "description": "The name of the endpoint service.", - "type": "string" - }, - "SubnetIds": { - "description": "The IDs of the subnets in which to create endpoint network interfaces. You must specify this property for an interface endpoint or a Gateway Load Balancer endpoint. You can't specify this property for a gateway endpoint. For a Gateway Load Balancer endpoint, you can specify only one subnet.", - "insertionOrder": false, - "items": { - "relationshipRef": { - "propertyPath": "/properties/SubnetId", - "typeName": "AWS::EC2::Subnet" - }, - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "VpcEndpointType": { - "description": "The type of endpoint.\n Default: Gateway", - "enum": [ - "Interface", - "Gateway", - "GatewayLoadBalancer" - ], - "type": "string" - }, - "VpcId": { - "description": "The ID of the VPC.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/NetworkInterfaceIds", - "/properties/CreationTimestamp", - "/properties/DnsEntries", - "/properties/Id" - ], - "required": [ - "VpcId", - "ServiceName" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::VPCEndpoint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServiceName", + "/properties/VpcEndpointType", + "/properties/VpcId", + "/properties/ServiceNetworkArn", + "/properties/ResourceConfigurationArn", + "/properties/ServiceRegion" + ], + "definitions": { + "DnsOptionsSpecification": { + "additionalProperties": false, + "description": "Describes the DNS options for an endpoint.", + "properties": { + "DnsRecordIpType": { + "description": "The DNS records created for the endpoint.", + "enum": [ + "ipv4", + "ipv6", + "dualstack", + "service-defined", + "not-specified" + ], + "type": "string" + }, + "PrivateDnsOnlyForInboundResolverEndpoint": { + "description": "Indicates whether to enable private DNS only for inbound endpoints. This option is available only for services that support both gateway and interface endpoints. It routes traffic that originates from the VPC to the gateway endpoint and traffic that originates from on-premises to the interface endpoint.", + "enum": [ + "OnlyInboundResolver", + "AllResolvers", + "NotSpecified" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Describes a tag.", + "properties": { + "Key": { + "description": "The key of the tag.\n Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with ``aws:``.", + "type": "string" + }, + "Value": { + "description": "The value of the tag.\n Constraints: Tag values are case-sensitive and accept a maximum of 256 Unicode characters.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a VPC endpoint. A VPC endpoint provides a private connection between your VPC and an endpoint service. You can use an endpoint service provided by AWS, an MKT Partner, or another AWS accounts in your organization. For more information, see the [User Guide](https://docs.aws.amazon.com/vpc/latest/privatelink/).\n An endpoint of type ``Interface`` establishes connections between the subnets in your VPC and an AWS-service, your own service, or a service hosted by another AWS-account. With an interface VPC endpoint, you specify the subnets in which to create the endpoint and the security groups to associate with the endpoint network interfaces.\n An endpoint of type ``gateway`` serves as a target for a route in your route table for traffic destined for S3 or DDB. You can specify an endpoint policy for the endpoint, which controls access to the service from your VPC. You can also specify the VPC route tables that use the endpoint. For more information about connectivity to S3, see [Why can't I connect to an S3 bucket using a gateway VPC endpoint?](https://docs.aws.amazon.com/premiumsupport/knowledge-center/connect-s3-vpc-endpoint) \n An endpoint of type ``GatewayLoadBalancer`` provides private connectivity between your VPC and virtual appliances from a service provider.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:CreateServiceNetworkVpcEndpointAssociation", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation", + "ec2:CreateTags", + "ec2:DeleteTags", + "vpce:AllowMultiRegion" + ], + "timeoutInMinutes": 210 + }, + "delete": { + "permissions": [ + "ec2:DeleteVpcEndpoints", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation", + "ec2:CreateTags", + "ec2:DeleteTags", + "vpce:AllowMultiRegion" + ], + "timeoutInMinutes": 210 + }, + "list": { + "permissions": [ + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "vpc-lattice:CreateServiceNetworkVpcEndpointAssociation", + "vpc-lattice:DescribeServiceNetworkVpcEndpointAssociation", + "ec2:CreateTags", + "ec2:DeleteTags", + "vpce:AllowMultiRegion" + ], + "timeoutInMinutes": 210 + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CreationTimestamp": { + "description": "", + "type": "string" + }, + "DnsEntries": { + "description": "", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "DnsOptions": { + "$ref": "#/definitions/DnsOptionsSpecification", + "description": "Describes the DNS options for an endpoint." + }, + "Id": { + "description": "", + "type": "string" + }, + "IpAddressType": { + "description": "The supported IP address types.", + "enum": [ + "ipv4", + "ipv6", + "dualstack", + "not-specified" + ], + "type": "string" + }, + "NetworkInterfaceIds": { + "description": "", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "PolicyDocument": { + "description": "An endpoint policy, which controls access to the service from the VPC. The default endpoint policy allows full access to the service. Endpoint policies are supported only for gateway and interface endpoints.\n For CloudFormation templates in YAML, you can provide the policy in JSON or YAML format. For example, if you have a JSON policy, you can convert it to YAML before including it in the YAML template, and CFNlong converts the policy to JSON format before calling the API actions for privatelink. Alternatively, you can include the JSON directly in the YAML, as shown in the following ``Properties`` section:\n ``Properties: VpcEndpointType: 'Interface' ServiceName: !Sub 'com.amazonaws.${AWS::Region}.logs' PolicyDocument: '{ \"Version\":\"2012-10-17\", \"Statement\": [{ \"Effect\":\"Allow\", \"Principal\":\"*\", \"Action\":[\"logs:Describe*\",\"logs:Get*\",\"logs:List*\",\"logs:FilterLogEvents\"], \"Resource\":\"*\" }] }'``", + "type": [ + "string", + "object" + ] + }, + "PrivateDnsEnabled": { + "description": "Indicate whether to associate a private hosted zone with the specified VPC. The private hosted zone contains a record set for the default public DNS name for the service for the Region (for example, ``kinesis.us-east-1.amazonaws.com``), which resolves to the private IP addresses of the endpoint network interfaces in the VPC. This enables you to make requests to the default public DNS name for the service instead of the public DNS names that are automatically generated by the VPC endpoint service.\n To use a private hosted zone, you must set the following VPC attributes to ``true``: ``enableDnsHostnames`` and ``enableDnsSupport``.\n This property is supported only for interface endpoints.\n Default: ``false``", + "type": "boolean" + }, + "ResourceConfigurationArn": { + "description": "The Amazon Resource Name (ARN) of the resource configuration.", + "type": "string" + }, + "RouteTableIds": { + "description": "The IDs of the route tables. Routing is supported only for gateway endpoints.", + "insertionOrder": false, + "items": { + "relationshipRef": { + "propertyPath": "/properties/RouteTableId", + "typeName": "AWS::EC2::RouteTable" + }, + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SecurityGroupIds": { + "description": "The IDs of the security groups to associate with the endpoint network interfaces. If this parameter is not specified, we use the default security group for the VPC. Security groups are supported only for interface endpoints.", + "insertionOrder": false, + "items": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/GroupId", + "typeName": "AWS::EC2::SecurityGroup" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/Id", + "typeName": "AWS::EC2::SecurityGroup" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/DefaultSecurityGroup", + "typeName": "AWS::EC2::VPC" + } + } + ], + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "ServiceName": { + "description": "The name of the endpoint service.", + "type": "string" + }, + "ServiceNetworkArn": { + "description": "The Amazon Resource Name (ARN) of the service network.", + "type": "string" + }, + "ServiceRegion": { + "description": "", + "type": "string" + }, + "SubnetIds": { + "description": "The IDs of the subnets in which to create endpoint network interfaces. You must specify this property for an interface endpoint or a Gateway Load Balancer endpoint. You can't specify this property for a gateway endpoint. For a Gateway Load Balancer endpoint, you can specify only one subnet.", + "insertionOrder": false, + "items": { + "relationshipRef": { + "propertyPath": "/properties/SubnetId", + "typeName": "AWS::EC2::Subnet" + }, + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "The tags to associate with the endpoint.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcEndpointType": { + "description": "The type of endpoint.\n Default: Gateway", + "enum": [ + "Interface", + "Gateway", + "GatewayLoadBalancer", + "ServiceNetwork", + "Resource" + ], + "type": "string" + }, + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/NetworkInterfaceIds", + "/properties/CreationTimestamp", + "/properties/DnsEntries", + "/properties/Id" + ], + "required": [ + "VpcId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeVpcEndpoints" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VPCEndpoint" +} diff --git a/src/schema/aws-ec2-vpcendpointconnectionnotification.json b/src/schema/aws-ec2-vpcendpointconnectionnotification.json index 8edbac54..9a0aa0ca 100644 --- a/src/schema/aws-ec2-vpcendpointconnectionnotification.json +++ b/src/schema/aws-ec2-vpcendpointconnectionnotification.json @@ -1,81 +1,81 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServiceId", - "/properties/VPCEndpointId" - ], - "description": "Resource Type definition for AWS::EC2::VPCEndpointConnectionNotification", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateVpcEndpointConnectionNotification" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteVpcEndpointConnectionNotifications" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeVpcEndpointConnectionNotifications" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVpcEndpointConnectionNotifications" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyVpcEndpointConnectionNotification", - "ec2:DescribeVpcEndpointConnectionNotifications" - ] - } - }, - "primaryIdentifier": [ - "/properties/VPCEndpointConnectionNotificationId" - ], - "properties": { - "ConnectionEvents": { - "description": "The endpoint events for which to receive notifications.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ConnectionNotificationArn": { - "description": "The ARN of the SNS topic for the notifications.", - "type": "string" - }, - "ServiceId": { - "description": "The ID of the endpoint service.", - "type": "string" - }, - "VPCEndpointConnectionNotificationId": { - "description": "VPC Endpoint Connection ID generated by service", - "type": "string" - }, - "VPCEndpointId": { - "description": "The ID of the endpoint.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/VPCEndpointConnectionNotificationId" - ], - "required": [ - "ConnectionEvents", - "ConnectionNotificationArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-vpc-endpoint", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::VPCEndpointConnectionNotification" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServiceId", + "/properties/VPCEndpointId" + ], + "description": "Resource Type definition for AWS::EC2::VPCEndpointConnectionNotification", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpcEndpointConnectionNotification" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpcEndpointConnectionNotifications" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpcEndpointConnectionNotifications" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcEndpointConnectionNotifications" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyVpcEndpointConnectionNotification", + "ec2:DescribeVpcEndpointConnectionNotifications" + ] + } + }, + "primaryIdentifier": [ + "/properties/VPCEndpointConnectionNotificationId" + ], + "properties": { + "ConnectionEvents": { + "description": "The endpoint events for which to receive notifications.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ConnectionNotificationArn": { + "description": "The ARN of the SNS topic for the notifications.", + "type": "string" + }, + "ServiceId": { + "description": "The ID of the endpoint service.", + "type": "string" + }, + "VPCEndpointConnectionNotificationId": { + "description": "VPC Endpoint Connection ID generated by service", + "type": "string" + }, + "VPCEndpointId": { + "description": "The ID of the endpoint.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VPCEndpointConnectionNotificationId" + ], + "required": [ + "ConnectionEvents", + "ConnectionNotificationArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-vpc-endpoint", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::VPCEndpointConnectionNotification" +} diff --git a/src/schema/aws-ec2-vpcendpointservice.json b/src/schema/aws-ec2-vpcendpointservice.json index 53d81cab..22029501 100644 --- a/src/schema/aws-ec2-vpcendpointservice.json +++ b/src/schema/aws-ec2-vpcendpointservice.json @@ -1,96 +1,158 @@ -{ - "additionalProperties": false, - "description": "Resource Type definition for AWS::EC2::VPCEndpointService", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateVpcEndpointServiceConfiguration", - "ec2:ModifyVpcEndpointServiceConfiguration", - "ec2:ModifyVpcEndpointServicePayerResponsibility", - "cloudwatch:ListManagedInsightRules", - "cloudwatch:DeleteInsightRules", - "cloudwatch:PutManagedInsightRules", - "ec2:DescribeVpcEndpointServiceConfigurations" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteVpcEndpointServiceConfigurations", - "ec2:DescribeVpcEndpointServiceConfigurations", - "cloudwatch:ListManagedInsightRules", - "cloudwatch:DeleteInsightRules" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeVpcEndpointServiceConfigurations", - "cloudwatch:ListManagedInsightRules" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVpcEndpointServiceConfigurations", - "cloudwatch:ListManagedInsightRules" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyVpcEndpointServiceConfiguration", - "ec2:DeleteVpcEndpointServiceConfigurations", - "ec2:DescribeVpcEndpointServiceConfigurations", - "ec2:ModifyVpcEndpointServicePayerResponsibility", - "cloudwatch:ListManagedInsightRules", - "cloudwatch:DeleteInsightRules", - "cloudwatch:PutManagedInsightRules" - ] - } - }, - "primaryIdentifier": [ - "/properties/ServiceId" - ], - "properties": { - "AcceptanceRequired": { - "type": "boolean" - }, - "ContributorInsightsEnabled": { - "type": "boolean" - }, - "GatewayLoadBalancerArns": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkLoadBalancerArns": { - "items": { - "relationshipRef": { - "propertyPath": "/properties/LoadBalancerArn", - "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" - }, - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "PayerResponsibility": { - "type": "string" - }, - "ServiceId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ServiceId" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::VPCEndpointService", - "writeOnlyProperties": [ - "/properties/ContributorInsightsEnabled" - ] -} +{ + "additionalProperties": false, + "definitions": { + "IpAddressType": { + "enum": [ + "ipv4", + "ipv6" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::VPCEndpointService", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpcEndpointServiceConfiguration", + "ec2:ModifyVpcEndpointServicePayerResponsibility", + "cloudwatch:ListManagedInsightRules", + "cloudwatch:DeleteInsightRules", + "cloudwatch:PutManagedInsightRules", + "ec2:DescribeVpcEndpointServiceConfigurations", + "vpce:AllowMultiRegion", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpcEndpointServiceConfigurations", + "ec2:DescribeVpcEndpointServiceConfigurations", + "cloudwatch:ListManagedInsightRules", + "cloudwatch:DeleteInsightRules", + "ec2:DeleteTags", + "vpce:AllowMultiRegion" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpcEndpointServiceConfigurations", + "cloudwatch:ListManagedInsightRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcEndpointServiceConfigurations", + "cloudwatch:ListManagedInsightRules" + ] + }, + "update": { + "permissions": [ + "ec2:ModifyVpcEndpointServiceConfiguration", + "ec2:DescribeVpcEndpointServiceConfigurations", + "ec2:ModifyVpcEndpointServicePayerResponsibility", + "cloudwatch:ListManagedInsightRules", + "cloudwatch:DeleteInsightRules", + "cloudwatch:PutManagedInsightRules", + "ec2:CreateTags", + "ec2:DeleteTags", + "vpce:AllowMultiRegion" + ] + } + }, + "primaryIdentifier": [ + "/properties/ServiceId" + ], + "properties": { + "AcceptanceRequired": { + "type": "boolean" + }, + "ContributorInsightsEnabled": { + "type": "boolean" + }, + "GatewayLoadBalancerArns": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "NetworkLoadBalancerArns": { + "items": { + "relationshipRef": { + "propertyPath": "/properties/LoadBalancerArn", + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" + }, + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "PayerResponsibility": { + "type": "string" + }, + "ServiceId": { + "type": "string" + }, + "SupportedIpAddressTypes": { + "description": "Specify which Ip Address types are supported for VPC endpoint service.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpAddressType" + }, + "type": "array", + "uniqueItems": false + }, + "SupportedRegions": { + "description": "The Regions from which service consumers can access the service.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "The tags to add to the VPC endpoint service.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ServiceId" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VPCEndpointService", + "writeOnlyProperties": [ + "/properties/ContributorInsightsEnabled" + ] +} diff --git a/src/schema/aws-ec2-vpcendpointservicepermissions.json b/src/schema/aws-ec2-vpcendpointservicepermissions.json index d3e3d5dd..a0da250f 100644 --- a/src/schema/aws-ec2-vpcendpointservicepermissions.json +++ b/src/schema/aws-ec2-vpcendpointservicepermissions.json @@ -1,74 +1,74 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServiceId" - ], - "description": "Resource Type definition for AWS::EC2::VPCEndpointServicePermissions", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateVpcEndpointServicePermissions", - "ec2:ModifyVpcEndpointServicePermissions", - "ec2:DeleteVpcEndpointServicePermissions", - "ec2:DescribeVpcEndpointServicePermissions" - ] - }, - "delete": { - "permissions": [ - "ec2:CreateVpcEndpointServicePermissions", - "ec2:ModifyVpcEndpointServicePermissions", - "ec2:DeleteVpcEndpointServicePermissions", - "ec2:DescribeVpcEndpointServicePermissions" - ] - }, - "list": { - "permissions": [ - "ec2:CreateVpcEndpointServicePermissions", - "ec2:ModifyVpcEndpointServicePermissions", - "ec2:DeleteVpcEndpointServicePermissions", - "ec2:DescribeVpcEndpointServicePermissions" - ] - }, - "read": { - "permissions": [ - "ec2:CreateVpcEndpointServicePermissions", - "ec2:ModifyVpcEndpointServicePermissions", - "ec2:DeleteVpcEndpointServicePermissions", - "ec2:DescribeVpcEndpointServicePermissions" - ] - }, - "update": { - "permissions": [ - "ec2:CreateVpcEndpointServicePermissions", - "ec2:ModifyVpcEndpointServicePermissions", - "ec2:DeleteVpcEndpointServicePermissions", - "ec2:DescribeVpcEndpointServicePermissions" - ] - } - }, - "primaryIdentifier": [ - "/properties/ServiceId" - ], - "properties": { - "AllowedPrincipals": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ServiceId": { - "type": "string" - } - }, - "required": [ - "ServiceId" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::VPCEndpointServicePermissions" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServiceId" + ], + "description": "Resource Type definition for AWS::EC2::VPCEndpointServicePermissions", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpcEndpointServicePermissions", + "ec2:ModifyVpcEndpointServicePermissions", + "ec2:DeleteVpcEndpointServicePermissions", + "ec2:DescribeVpcEndpointServicePermissions" + ] + }, + "delete": { + "permissions": [ + "ec2:CreateVpcEndpointServicePermissions", + "ec2:ModifyVpcEndpointServicePermissions", + "ec2:DeleteVpcEndpointServicePermissions", + "ec2:DescribeVpcEndpointServicePermissions" + ] + }, + "list": { + "permissions": [ + "ec2:CreateVpcEndpointServicePermissions", + "ec2:ModifyVpcEndpointServicePermissions", + "ec2:DeleteVpcEndpointServicePermissions", + "ec2:DescribeVpcEndpointServicePermissions" + ] + }, + "read": { + "permissions": [ + "ec2:CreateVpcEndpointServicePermissions", + "ec2:ModifyVpcEndpointServicePermissions", + "ec2:DeleteVpcEndpointServicePermissions", + "ec2:DescribeVpcEndpointServicePermissions" + ] + }, + "update": { + "permissions": [ + "ec2:CreateVpcEndpointServicePermissions", + "ec2:ModifyVpcEndpointServicePermissions", + "ec2:DeleteVpcEndpointServicePermissions", + "ec2:DescribeVpcEndpointServicePermissions" + ] + } + }, + "primaryIdentifier": [ + "/properties/ServiceId" + ], + "properties": { + "AllowedPrincipals": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ServiceId": { + "type": "string" + } + }, + "required": [ + "ServiceId" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::VPCEndpointServicePermissions" +} diff --git a/src/schema/aws-ec2-vpcgatewayattachment.json b/src/schema/aws-ec2-vpcgatewayattachment.json index 45cc06eb..db1dca91 100644 --- a/src/schema/aws-ec2-vpcgatewayattachment.json +++ b/src/schema/aws-ec2-vpcgatewayattachment.json @@ -1,84 +1,84 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/VpcId" - ], - "description": "Resource Type definition for AWS::EC2::VPCGatewayAttachment", - "handlers": { - "create": { - "permissions": [ - "ec2:AttachInternetGateway", - "ec2:AttachVpnGateway", - "ec2:DescribeInternetGateways", - "ec2:DescribeVpnGateways" - ] - }, - "delete": { - "permissions": [ - "ec2:DetachInternetGateway", - "ec2:DetachVpnGateway", - "ec2:DescribeInternetGateways", - "ec2:DescribeVpnGateways" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeInternetGateways", - "ec2:DescribeVpnGateways" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeInternetGateways", - "ec2:DescribeVpnGateways" - ] - }, - "update": { - "permissions": [ - "ec2:AttachInternetGateway", - "ec2:AttachVpnGateway", - "ec2:DetachInternetGateway", - "ec2:DetachVpnGateway", - "ec2:DescribeInternetGateways", - "ec2:DescribeVpnGateways" - ] - } - }, - "primaryIdentifier": [ - "/properties/AttachmentType", - "/properties/VpcId" - ], - "properties": { - "AttachmentType": { - "description": "Used to identify if this resource is an Internet Gateway or Vpn Gateway Attachment ", - "type": "string" - }, - "InternetGatewayId": { - "description": "The ID of the internet gateway. You must specify either InternetGatewayId or VpnGatewayId, but not both.", - "type": "string" - }, - "VpcId": { - "description": "The ID of the VPC.", - "type": "string" - }, - "VpnGatewayId": { - "description": "The ID of the virtual private gateway. You must specify either InternetGatewayId or VpnGatewayId, but not both.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AttachmentType" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "VpcId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-vpc-gateway-attachment.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::VPCGatewayAttachment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcId" + ], + "description": "Resource Type definition for AWS::EC2::VPCGatewayAttachment", + "handlers": { + "create": { + "permissions": [ + "ec2:AttachInternetGateway", + "ec2:AttachVpnGateway", + "ec2:DescribeInternetGateways", + "ec2:DescribeVpnGateways" + ] + }, + "delete": { + "permissions": [ + "ec2:DetachInternetGateway", + "ec2:DetachVpnGateway", + "ec2:DescribeInternetGateways", + "ec2:DescribeVpnGateways" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeInternetGateways", + "ec2:DescribeVpnGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeInternetGateways", + "ec2:DescribeVpnGateways" + ] + }, + "update": { + "permissions": [ + "ec2:AttachInternetGateway", + "ec2:AttachVpnGateway", + "ec2:DetachInternetGateway", + "ec2:DetachVpnGateway", + "ec2:DescribeInternetGateways", + "ec2:DescribeVpnGateways" + ] + } + }, + "primaryIdentifier": [ + "/properties/AttachmentType", + "/properties/VpcId" + ], + "properties": { + "AttachmentType": { + "description": "Used to identify if this resource is an Internet Gateway or Vpn Gateway Attachment ", + "type": "string" + }, + "InternetGatewayId": { + "description": "The ID of the internet gateway. You must specify either InternetGatewayId or VpnGatewayId, but not both.", + "type": "string" + }, + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + }, + "VpnGatewayId": { + "description": "The ID of the virtual private gateway. You must specify either InternetGatewayId or VpnGatewayId, but not both.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AttachmentType" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "VpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2-vpc-gateway-attachment.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::VPCGatewayAttachment" +} diff --git a/src/schema/aws-ec2-vpcpeeringconnection.json b/src/schema/aws-ec2-vpcpeeringconnection.json index 80113ebb..97307a87 100644 --- a/src/schema/aws-ec2-vpcpeeringconnection.json +++ b/src/schema/aws-ec2-vpcpeeringconnection.json @@ -1,125 +1,125 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PeerRegion", - "/properties/PeerOwnerId", - "/properties/PeerVpcId", - "/properties/PeerRoleArn", - "/properties/VpcId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EC2::VPCPeeringConnection", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateVpcPeeringConnection", - "ec2:DescribeVpcPeeringConnections", - "ec2:AcceptVpcPeeringConnection", - "ec2:CreateTags", - "sts:AssumeRole" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteVpcPeeringConnection", - "ec2:DescribeVpcPeeringConnections" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeVpcPeeringConnections" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVpcPeeringConnections" - ] - }, - "update": { - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeVpcPeeringConnections" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "PeerOwnerId": { - "description": "The AWS account ID of the owner of the accepter VPC.", - "type": "string" - }, - "PeerRegion": { - "description": "The Region code for the accepter VPC, if the accepter VPC is located in a Region other than the Region in which you make the request.", - "type": "string" - }, - "PeerRoleArn": { - "description": "The Amazon Resource Name (ARN) of the VPC peer role for the peering connection in another AWS account.", - "type": "string" - }, - "PeerVpcId": { - "description": "The ID of the VPC with which you are creating the VPC peering connection. You must specify this parameter in the request.", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcId": { - "description": "The ID of the VPC.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "VpcId", - "PeerVpcId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-ec2-vpcpeering.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::VPCPeeringConnection", - "writeOnlyProperties": [ - "/properties/PeerRoleArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PeerRegion", + "/properties/PeerOwnerId", + "/properties/PeerVpcId", + "/properties/PeerRoleArn", + "/properties/VpcId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EC2::VPCPeeringConnection", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpcPeeringConnection", + "ec2:DescribeVpcPeeringConnections", + "ec2:AcceptVpcPeeringConnection", + "ec2:CreateTags", + "sts:AssumeRole" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpcPeeringConnection", + "ec2:DescribeVpcPeeringConnections" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpcPeeringConnections" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcPeeringConnections" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeVpcPeeringConnections" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "PeerOwnerId": { + "description": "The AWS account ID of the owner of the accepter VPC.", + "type": "string" + }, + "PeerRegion": { + "description": "The Region code for the accepter VPC, if the accepter VPC is located in a Region other than the Region in which you make the request.", + "type": "string" + }, + "PeerRoleArn": { + "description": "The Amazon Resource Name (ARN) of the VPC peer role for the peering connection in another AWS account.", + "type": "string" + }, + "PeerVpcId": { + "description": "The ID of the VPC with which you are creating the VPC peering connection. You must specify this parameter in the request.", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "description": "The ID of the VPC.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "VpcId", + "PeerVpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-ec2-vpcpeering.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VPCPeeringConnection", + "writeOnlyProperties": [ + "/properties/PeerRoleArn" + ] +} diff --git a/src/schema/aws-ec2-vpnconnection.json b/src/schema/aws-ec2-vpnconnection.json index 519848c3..e29ded2e 100644 --- a/src/schema/aws-ec2-vpnconnection.json +++ b/src/schema/aws-ec2-vpnconnection.json @@ -1,481 +1,482 @@ -{ - "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/blob/master/src/main/resources/schema/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Type", - "/properties/CustomerGatewayId", - "/properties/VpnGatewayId", - "/properties/TransitGatewayId", - "/properties/EnableAcceleration", - "/properties/LocalIpv4NetworkCidr", - "/properties/LocalIpv6NetworkCidr", - "/properties/OutsideIpAddressType", - "/properties/RemoteIpv4NetworkCidr", - "/properties/RemoteIpv6NetworkCidr", - "/properties/StaticRoutesOnly", - "/properties/TransportTransitGatewayAttachmentId", - "/properties/TunnelInsideIpVersion", - "/properties/VpnTunnelOptionsSpecifications" - ], - "definitions": { - "CloudwatchLogOptionsSpecification": { - "additionalProperties": false, - "description": "Options for sending VPN tunnel logs to CloudWatch.", - "properties": { - "LogEnabled": { - "description": "Enable or disable VPN tunnel logging feature. Default value is ``False``.\n Valid values: ``True`` | ``False``", - "type": "boolean" - }, - "LogGroupArn": { - "description": "The Amazon Resource Name (ARN) of the CloudWatch log group to send logs to.", - "type": "string" - }, - "LogOutputFormat": { - "description": "Set log format. Default format is ``json``.\n Valid values: ``json`` | ``text``", - "enum": [ - "json", - "text" - ], - "type": "string" - } - }, - "type": "object" - }, - "IKEVersionsRequestListValue": { - "additionalProperties": false, - "description": "The IKE version that is permitted for the VPN tunnel.", - "properties": { - "Value": { - "description": "The IKE version.", - "enum": [ - "ikev1", - "ikev2" - ], - "type": "string" - } - }, - "type": "object" - }, - "Phase1DHGroupNumbersRequestListValue": { - "additionalProperties": false, - "description": "Specifies a Diffie-Hellman group number for the VPN tunnel for phase 1 IKE negotiations.", - "properties": { - "Value": { - "description": "The Diffie-Hellmann group number.", - "enum": [ - 2, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24 - ], - "type": "integer" - } - }, - "type": "object" - }, - "Phase1EncryptionAlgorithmsRequestListValue": { - "additionalProperties": false, - "description": "Specifies the encryption algorithm for the VPN tunnel for phase 1 IKE negotiations.", - "properties": { - "Value": { - "description": "The value for the encryption algorithm.", - "enum": [ - "AES128", - "AES256", - "AES128-GCM-16", - "AES256-GCM-16" - ], - "type": "string" - } - }, - "type": "object" - }, - "Phase1IntegrityAlgorithmsRequestListValue": { - "additionalProperties": false, - "description": "Specifies the integrity algorithm for the VPN tunnel for phase 1 IKE negotiations.", - "properties": { - "Value": { - "description": "The value for the integrity algorithm.", - "enum": [ - "SHA1", - "SHA2-256", - "SHA2-384", - "SHA2-512" - ], - "type": "string" - } - }, - "type": "object" - }, - "Phase2DHGroupNumbersRequestListValue": { - "additionalProperties": false, - "description": "Specifies a Diffie-Hellman group number for the VPN tunnel for phase 2 IKE negotiations.", - "properties": { - "Value": { - "description": "The Diffie-Hellmann group number.", - "enum": [ - 2, - 5, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24 - ], - "type": "integer" - } - }, - "type": "object" - }, - "Phase2EncryptionAlgorithmsRequestListValue": { - "additionalProperties": false, - "description": "Specifies the encryption algorithm for the VPN tunnel for phase 2 IKE negotiations.", - "properties": { - "Value": { - "description": "The encryption algorithm.", - "enum": [ - "AES128", - "AES256", - "AES128-GCM-16", - "AES256-GCM-16" - ], - "type": "string" - } - }, - "type": "object" - }, - "Phase2IntegrityAlgorithmsRequestListValue": { - "additionalProperties": false, - "description": "Specifies the integrity algorithm for the VPN tunnel for phase 2 IKE negotiations.", - "properties": { - "Value": { - "description": "The integrity algorithm.", - "enum": [ - "SHA1", - "SHA2-256", - "SHA2-384", - "SHA2-512" - ], - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "properties": { - "Key": { - "description": "The tag key.", - "type": "string" - }, - "Value": { - "description": "The tag value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "VpnTunnelLogOptionsSpecification": { - "additionalProperties": false, - "description": "Options for logging VPN tunnel activity.", - "properties": { - "CloudwatchLogOptions": { - "$ref": "#/definitions/CloudwatchLogOptionsSpecification", - "description": "Options for sending VPN tunnel logs to CloudWatch." - } - }, - "type": "object" - }, - "VpnTunnelOptionsSpecification": { - "additionalProperties": false, - "description": "The tunnel options for a single VPN tunnel.", - "properties": { - "DPDTimeoutAction": { - "description": "The action to take after DPD timeout occurs. Specify ``restart`` to restart the IKE initiation. Specify ``clear`` to end the IKE session.\n Valid Values: ``clear`` | ``none`` | ``restart`` \n Default: ``clear``", - "enum": [ - "clear", - "none", - "restart" - ], - "type": "string" - }, - "DPDTimeoutSeconds": { - "description": "The number of seconds after which a DPD timeout occurs.\n Constraints: A value greater than or equal to 30.\n Default: ``30``", - "minimum": 30, - "type": "integer" - }, - "EnableTunnelLifecycleControl": { - "description": "Turn on or off tunnel endpoint lifecycle control feature.", - "type": "boolean" - }, - "IKEVersions": { - "description": "The IKE versions that are permitted for the VPN tunnel.\n Valid values: ``ikev1`` | ``ikev2``", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/IKEVersionsRequestListValue" - }, - "type": "array", - "uniqueItems": false - }, - "LogOptions": { - "$ref": "#/definitions/VpnTunnelLogOptionsSpecification", - "description": "Options for logging VPN tunnel activity." - }, - "Phase1DHGroupNumbers": { - "description": "One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``2`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24``", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Phase1DHGroupNumbersRequestListValue" - }, - "type": "array", - "uniqueItems": false - }, - "Phase1EncryptionAlgorithms": { - "description": "One or more encryption algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16``", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Phase1EncryptionAlgorithmsRequestListValue" - }, - "type": "array", - "uniqueItems": false - }, - "Phase1IntegrityAlgorithms": { - "description": "One or more integrity algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512``", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Phase1IntegrityAlgorithmsRequestListValue" - }, - "type": "array", - "uniqueItems": false - }, - "Phase1LifetimeSeconds": { - "description": "The lifetime for phase 1 of the IKE negotiation, in seconds.\n Constraints: A value between 900 and 28,800.\n Default: ``28800``", - "maximum": 28800, - "minimum": 900, - "type": "integer" - }, - "Phase2DHGroupNumbers": { - "description": "One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``2`` | ``5`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24``", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Phase2DHGroupNumbersRequestListValue" - }, - "type": "array", - "uniqueItems": false - }, - "Phase2EncryptionAlgorithms": { - "description": "One or more encryption algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16``", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Phase2EncryptionAlgorithmsRequestListValue" - }, - "type": "array", - "uniqueItems": false - }, - "Phase2IntegrityAlgorithms": { - "description": "One or more integrity algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512``", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Phase2IntegrityAlgorithmsRequestListValue" - }, - "type": "array", - "uniqueItems": false - }, - "Phase2LifetimeSeconds": { - "description": "The lifetime for phase 2 of the IKE negotiation, in seconds.\n Constraints: A value between 900 and 3,600. The value must be less than the value for ``Phase1LifetimeSeconds``.\n Default: ``3600``", - "maximum": 3600, - "minimum": 900, - "type": "integer" - }, - "PreSharedKey": { - "description": "The pre-shared key (PSK) to establish initial authentication between the virtual private gateway and customer gateway.\n Constraints: Allowed characters are alphanumeric characters, periods (.), and underscores (_). Must be between 8 and 64 characters in length and cannot start with zero (0).", - "type": "string" - }, - "RekeyFuzzPercentage": { - "description": "The percentage of the rekey window (determined by ``RekeyMarginTimeSeconds``) during which the rekey time is randomly selected.\n Constraints: A value between 0 and 100.\n Default: ``100``", - "maximum": 100, - "minimum": 0, - "type": "integer" - }, - "RekeyMarginTimeSeconds": { - "description": "The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for ``RekeyFuzzPercentage``.\n Constraints: A value between 60 and half of ``Phase2LifetimeSeconds``.\n Default: ``270``", - "minimum": 60, - "type": "integer" - }, - "ReplayWindowSize": { - "description": "The number of packets in an IKE replay window.\n Constraints: A value between 64 and 2048.\n Default: ``1024``", - "maximum": 2048, - "minimum": 64, - "type": "integer" - }, - "StartupAction": { - "description": "The action to take when the establishing the tunnel for the VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify ``start`` for AWS to initiate the IKE negotiation.\n Valid Values: ``add`` | ``start`` \n Default: ``add``", - "enum": [ - "add", - "start" - ], - "type": "string" - }, - "TunnelInsideCidr": { - "description": "The range of inside IP addresses for the tunnel. Any specified CIDR blocks must be unique across all VPN connections that use the same virtual private gateway. \n Constraints: A size /30 CIDR block from the ``169.254.0.0/16`` range. The following CIDR blocks are reserved and cannot be used:\n + ``169.254.0.0/30`` \n + ``169.254.1.0/30`` \n + ``169.254.2.0/30`` \n + ``169.254.3.0/30`` \n + ``169.254.4.0/30`` \n + ``169.254.5.0/30`` \n + ``169.254.169.252/30``", - "type": "string" - }, - "TunnelInsideIpv6Cidr": { - "description": "The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks must be unique across all VPN connections that use the same transit gateway.\n Constraints: A size /126 CIDR block from the local ``fd00::/8`` range.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Specifies a VPN connection between a virtual private gateway and a VPN customer gateway or a transit gateway and a VPN customer gateway.\n To specify a VPN connection between a transit gateway and customer gateway, use the ``TransitGatewayId`` and ``CustomerGatewayId`` properties.\n To specify a VPN connection between a virtual private gateway and customer gateway, use the ``VpnGatewayId`` and ``CustomerGatewayId`` properties.\n For more information, see [](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) in the *User Guide*.", - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeVpnConnections", - "ec2:CreateVpnConnection", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeVpnConnections", - "ec2:DeleteVpnConnection" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeVpnConnections" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVpnConnections" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeVpnConnections", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/VpnConnectionId" - ], - "properties": { - "CustomerGatewayId": { - "description": "The ID of the customer gateway at your end of the VPN connection.", - "type": "string" - }, - "EnableAcceleration": { - "description": "Indicate whether to enable acceleration for the VPN connection.\n Default: ``false``", - "type": "boolean" - }, - "LocalIpv4NetworkCidr": { - "description": "The IPv4 CIDR on the customer gateway (on-premises) side of the VPN connection.\n Default: ``0.0.0.0/0``", - "type": "string" - }, - "LocalIpv6NetworkCidr": { - "description": "The IPv6 CIDR on the customer gateway (on-premises) side of the VPN connection.\n Default: ``::/0``", - "type": "string" - }, - "OutsideIpAddressType": { - "description": "The type of IPv4 address assigned to the outside interface of the customer gateway device.\n Valid values: ``PrivateIpv4`` | ``PublicIpv4`` \n Default: ``PublicIpv4``", - "type": "string" - }, - "RemoteIpv4NetworkCidr": { - "description": "The IPv4 CIDR on the AWS side of the VPN connection.\n Default: ``0.0.0.0/0``", - "type": "string" - }, - "RemoteIpv6NetworkCidr": { - "description": "The IPv6 CIDR on the AWS side of the VPN connection.\n Default: ``::/0``", - "type": "string" - }, - "StaticRoutesOnly": { - "description": "Indicates whether the VPN connection uses static routes only. Static routes must be used for devices that don't support BGP.\n If you are creating a VPN connection for a device that does not support Border Gateway Protocol (BGP), you must specify ``true``.", - "type": "boolean" - }, - "Tags": { - "description": "Any tags assigned to the VPN connection.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TransitGatewayId": { - "description": "The ID of the transit gateway associated with the VPN connection.\n You must specify either ``TransitGatewayId`` or ``VpnGatewayId``, but not both.", - "type": "string" - }, - "TransportTransitGatewayAttachmentId": { - "description": "The transit gateway attachment ID to use for the VPN tunnel.\n Required if ``OutsideIpAddressType`` is set to ``PrivateIpv4``.", - "type": "string" - }, - "TunnelInsideIpVersion": { - "description": "Indicate whether the VPN tunnels process IPv4 or IPv6 traffic.\n Default: ``ipv4``", - "type": "string" - }, - "Type": { - "description": "The type of VPN connection.", - "type": "string" - }, - "VpnConnectionId": { - "description": "", - "type": "string" - }, - "VpnGatewayId": { - "description": "The ID of the virtual private gateway at the AWS side of the VPN connection.\n You must specify either ``TransitGatewayId`` or ``VpnGatewayId``, but not both.", - "type": "string" - }, - "VpnTunnelOptionsSpecifications": { - "description": "The tunnel options for the VPN connection.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/VpnTunnelOptionsSpecification" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/VpnConnectionId" - ], - "required": [ - "Type", - "CustomerGatewayId" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::VPNConnection" -} +{ + "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/blob/master/src/main/resources/schema/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/CustomerGatewayId", + "/properties/VpnGatewayId", + "/properties/TransitGatewayId", + "/properties/EnableAcceleration", + "/properties/LocalIpv4NetworkCidr", + "/properties/LocalIpv6NetworkCidr", + "/properties/OutsideIpAddressType", + "/properties/RemoteIpv4NetworkCidr", + "/properties/RemoteIpv6NetworkCidr", + "/properties/StaticRoutesOnly", + "/properties/TransportTransitGatewayAttachmentId", + "/properties/TunnelInsideIpVersion", + "/properties/VpnTunnelOptionsSpecifications" + ], + "definitions": { + "CloudwatchLogOptionsSpecification": { + "additionalProperties": false, + "description": "Options for sending VPN tunnel logs to CloudWatch.", + "properties": { + "LogEnabled": { + "description": "Enable or disable VPN tunnel logging feature. Default value is ``False``.\n Valid values: ``True`` | ``False``", + "type": "boolean" + }, + "LogGroupArn": { + "description": "The Amazon Resource Name (ARN) of the CloudWatch log group to send logs to.", + "type": "string" + }, + "LogOutputFormat": { + "description": "Set log format. Default format is ``json``.\n Valid values: ``json`` | ``text``", + "enum": [ + "json", + "text" + ], + "type": "string" + } + }, + "type": "object" + }, + "IKEVersionsRequestListValue": { + "additionalProperties": false, + "description": "The IKE version that is permitted for the VPN tunnel.", + "properties": { + "Value": { + "description": "The IKE version.", + "enum": [ + "ikev1", + "ikev2" + ], + "type": "string" + } + }, + "type": "object" + }, + "Phase1DHGroupNumbersRequestListValue": { + "additionalProperties": false, + "description": "Specifies a Diffie-Hellman group number for the VPN tunnel for phase 1 IKE negotiations.", + "properties": { + "Value": { + "description": "The Diffie-Hellmann group number.", + "enum": [ + 2, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ], + "type": "integer" + } + }, + "type": "object" + }, + "Phase1EncryptionAlgorithmsRequestListValue": { + "additionalProperties": false, + "description": "Specifies the encryption algorithm for the VPN tunnel for phase 1 IKE negotiations.", + "properties": { + "Value": { + "description": "The value for the encryption algorithm.", + "enum": [ + "AES128", + "AES256", + "AES128-GCM-16", + "AES256-GCM-16" + ], + "type": "string" + } + }, + "type": "object" + }, + "Phase1IntegrityAlgorithmsRequestListValue": { + "additionalProperties": false, + "description": "Specifies the integrity algorithm for the VPN tunnel for phase 1 IKE negotiations.", + "properties": { + "Value": { + "description": "The value for the integrity algorithm.", + "enum": [ + "SHA1", + "SHA2-256", + "SHA2-384", + "SHA2-512" + ], + "type": "string" + } + }, + "type": "object" + }, + "Phase2DHGroupNumbersRequestListValue": { + "additionalProperties": false, + "description": "Specifies a Diffie-Hellman group number for the VPN tunnel for phase 2 IKE negotiations.", + "properties": { + "Value": { + "description": "The Diffie-Hellmann group number.", + "enum": [ + 2, + 5, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ], + "type": "integer" + } + }, + "type": "object" + }, + "Phase2EncryptionAlgorithmsRequestListValue": { + "additionalProperties": false, + "description": "Specifies the encryption algorithm for the VPN tunnel for phase 2 IKE negotiations.", + "properties": { + "Value": { + "description": "The encryption algorithm.", + "enum": [ + "AES128", + "AES256", + "AES128-GCM-16", + "AES256-GCM-16" + ], + "type": "string" + } + }, + "type": "object" + }, + "Phase2IntegrityAlgorithmsRequestListValue": { + "additionalProperties": false, + "description": "Specifies the integrity algorithm for the VPN tunnel for phase 2 IKE negotiations.", + "properties": { + "Value": { + "description": "The integrity algorithm.", + "enum": [ + "SHA1", + "SHA2-256", + "SHA2-384", + "SHA2-512" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VpnTunnelLogOptionsSpecification": { + "additionalProperties": false, + "description": "Options for logging VPN tunnel activity.", + "properties": { + "CloudwatchLogOptions": { + "$ref": "#/definitions/CloudwatchLogOptionsSpecification", + "description": "Options for sending VPN tunnel logs to CloudWatch." + } + }, + "type": "object" + }, + "VpnTunnelOptionsSpecification": { + "additionalProperties": false, + "description": "The tunnel options for a single VPN tunnel.", + "properties": { + "DPDTimeoutAction": { + "description": "The action to take after DPD timeout occurs. Specify ``restart`` to restart the IKE initiation. Specify ``clear`` to end the IKE session.\n Valid Values: ``clear`` | ``none`` | ``restart`` \n Default: ``clear``", + "enum": [ + "clear", + "none", + "restart" + ], + "type": "string" + }, + "DPDTimeoutSeconds": { + "description": "The number of seconds after which a DPD timeout occurs.\n Constraints: A value greater than or equal to 30.\n Default: ``30``", + "minimum": 30, + "type": "integer" + }, + "EnableTunnelLifecycleControl": { + "description": "Turn on or off tunnel endpoint lifecycle control feature.", + "type": "boolean" + }, + "IKEVersions": { + "description": "The IKE versions that are permitted for the VPN tunnel.\n Valid values: ``ikev1`` | ``ikev2``", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IKEVersionsRequestListValue" + }, + "type": "array", + "uniqueItems": false + }, + "LogOptions": { + "$ref": "#/definitions/VpnTunnelLogOptionsSpecification", + "description": "Options for logging VPN tunnel activity." + }, + "Phase1DHGroupNumbers": { + "description": "One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``2`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24``", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Phase1DHGroupNumbersRequestListValue" + }, + "type": "array", + "uniqueItems": false + }, + "Phase1EncryptionAlgorithms": { + "description": "One or more encryption algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16``", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Phase1EncryptionAlgorithmsRequestListValue" + }, + "type": "array", + "uniqueItems": false + }, + "Phase1IntegrityAlgorithms": { + "description": "One or more integrity algorithms that are permitted for the VPN tunnel for phase 1 IKE negotiations.\n Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512``", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Phase1IntegrityAlgorithmsRequestListValue" + }, + "type": "array", + "uniqueItems": false + }, + "Phase1LifetimeSeconds": { + "description": "The lifetime for phase 1 of the IKE negotiation, in seconds.\n Constraints: A value between 900 and 28,800.\n Default: ``28800``", + "maximum": 28800, + "minimum": 900, + "type": "integer" + }, + "Phase2DHGroupNumbers": { + "description": "One or more Diffie-Hellman group numbers that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``2`` | ``5`` | ``14`` | ``15`` | ``16`` | ``17`` | ``18`` | ``19`` | ``20`` | ``21`` | ``22`` | ``23`` | ``24``", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Phase2DHGroupNumbersRequestListValue" + }, + "type": "array", + "uniqueItems": false + }, + "Phase2EncryptionAlgorithms": { + "description": "One or more encryption algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``AES128`` | ``AES256`` | ``AES128-GCM-16`` | ``AES256-GCM-16``", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Phase2EncryptionAlgorithmsRequestListValue" + }, + "type": "array", + "uniqueItems": false + }, + "Phase2IntegrityAlgorithms": { + "description": "One or more integrity algorithms that are permitted for the VPN tunnel for phase 2 IKE negotiations.\n Valid values: ``SHA1`` | ``SHA2-256`` | ``SHA2-384`` | ``SHA2-512``", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Phase2IntegrityAlgorithmsRequestListValue" + }, + "type": "array", + "uniqueItems": false + }, + "Phase2LifetimeSeconds": { + "description": "The lifetime for phase 2 of the IKE negotiation, in seconds.\n Constraints: A value between 900 and 3,600. The value must be less than the value for ``Phase1LifetimeSeconds``.\n Default: ``3600``", + "maximum": 3600, + "minimum": 900, + "type": "integer" + }, + "PreSharedKey": { + "description": "The pre-shared key (PSK) to establish initial authentication between the virtual private gateway and customer gateway.\n Constraints: Allowed characters are alphanumeric characters, periods (.), and underscores (_). Must be between 8 and 64 characters in length and cannot start with zero (0).", + "type": "string" + }, + "RekeyFuzzPercentage": { + "description": "The percentage of the rekey window (determined by ``RekeyMarginTimeSeconds``) during which the rekey time is randomly selected.\n Constraints: A value between 0 and 100.\n Default: ``100``", + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "RekeyMarginTimeSeconds": { + "description": "The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for ``RekeyFuzzPercentage``.\n Constraints: A value between 60 and half of ``Phase2LifetimeSeconds``.\n Default: ``270``", + "minimum": 60, + "type": "integer" + }, + "ReplayWindowSize": { + "description": "The number of packets in an IKE replay window.\n Constraints: A value between 64 and 2048.\n Default: ``1024``", + "maximum": 2048, + "minimum": 64, + "type": "integer" + }, + "StartupAction": { + "description": "The action to take when the establishing the tunnel for the VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify ``start`` for AWS to initiate the IKE negotiation.\n Valid Values: ``add`` | ``start`` \n Default: ``add``", + "enum": [ + "add", + "start" + ], + "type": "string" + }, + "TunnelInsideCidr": { + "description": "The range of inside IP addresses for the tunnel. Any specified CIDR blocks must be unique across all VPN connections that use the same virtual private gateway. \n Constraints: A size /30 CIDR block from the ``169.254.0.0/16`` range. The following CIDR blocks are reserved and cannot be used:\n + ``169.254.0.0/30`` \n + ``169.254.1.0/30`` \n + ``169.254.2.0/30`` \n + ``169.254.3.0/30`` \n + ``169.254.4.0/30`` \n + ``169.254.5.0/30`` \n + ``169.254.169.252/30``", + "type": "string" + }, + "TunnelInsideIpv6Cidr": { + "description": "The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks must be unique across all VPN connections that use the same transit gateway.\n Constraints: A size /126 CIDR block from the local ``fd00::/8`` range.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Specifies a VPN connection between a virtual private gateway and a VPN customer gateway or a transit gateway and a VPN customer gateway.\n To specify a VPN connection between a transit gateway and customer gateway, use the ``TransitGatewayId`` and ``CustomerGatewayId`` properties.\n To specify a VPN connection between a virtual private gateway and customer gateway, use the ``VpnGatewayId`` and ``CustomerGatewayId`` properties.\n For more information, see [](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) in the *User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeVpnConnections", + "ec2:CreateVpnConnection", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeVpnConnections", + "ec2:DeleteVpnConnection" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpnConnections" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpnConnections" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeVpnConnections", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/VpnConnectionId" + ], + "properties": { + "CustomerGatewayId": { + "description": "The ID of the customer gateway at your end of the VPN connection.", + "type": "string" + }, + "EnableAcceleration": { + "description": "Indicate whether to enable acceleration for the VPN connection.\n Default: ``false``", + "type": "boolean" + }, + "LocalIpv4NetworkCidr": { + "description": "The IPv4 CIDR on the customer gateway (on-premises) side of the VPN connection.\n Default: ``0.0.0.0/0``", + "type": "string" + }, + "LocalIpv6NetworkCidr": { + "description": "The IPv6 CIDR on the customer gateway (on-premises) side of the VPN connection.\n Default: ``::/0``", + "type": "string" + }, + "OutsideIpAddressType": { + "description": "The type of IPv4 address assigned to the outside interface of the customer gateway device.\n Valid values: ``PrivateIpv4`` | ``PublicIpv4`` \n Default: ``PublicIpv4``", + "type": "string" + }, + "RemoteIpv4NetworkCidr": { + "description": "The IPv4 CIDR on the AWS side of the VPN connection.\n Default: ``0.0.0.0/0``", + "type": "string" + }, + "RemoteIpv6NetworkCidr": { + "description": "The IPv6 CIDR on the AWS side of the VPN connection.\n Default: ``::/0``", + "type": "string" + }, + "StaticRoutesOnly": { + "description": "Indicates whether the VPN connection uses static routes only. Static routes must be used for devices that don't support BGP.\n If you are creating a VPN connection for a device that does not support Border Gateway Protocol (BGP), you must specify ``true``.", + "type": "boolean" + }, + "Tags": { + "description": "Any tags assigned to the VPN connection.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TransitGatewayId": { + "description": "The ID of the transit gateway associated with the VPN connection.\n You must specify either ``TransitGatewayId`` or ``VpnGatewayId``, but not both.", + "type": "string" + }, + "TransportTransitGatewayAttachmentId": { + "description": "The transit gateway attachment ID to use for the VPN tunnel.\n Required if ``OutsideIpAddressType`` is set to ``PrivateIpv4``.", + "type": "string" + }, + "TunnelInsideIpVersion": { + "description": "Indicate whether the VPN tunnels process IPv4 or IPv6 traffic.\n Default: ``ipv4``", + "type": "string" + }, + "Type": { + "description": "The type of VPN connection.", + "type": "string" + }, + "VpnConnectionId": { + "description": "", + "type": "string" + }, + "VpnGatewayId": { + "description": "The ID of the virtual private gateway at the AWS side of the VPN connection.\n You must specify either ``TransitGatewayId`` or ``VpnGatewayId``, but not both.", + "type": "string" + }, + "VpnTunnelOptionsSpecifications": { + "description": "The tunnel options for the VPN connection.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VpnTunnelOptionsSpecification" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/VpnConnectionId" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "Type", + "CustomerGatewayId" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VPNConnection" +} diff --git a/src/schema/aws-ec2-vpnconnectionroute.json b/src/schema/aws-ec2-vpnconnectionroute.json index ac3cc524..8444ad6f 100644 --- a/src/schema/aws-ec2-vpnconnectionroute.json +++ b/src/schema/aws-ec2-vpnconnectionroute.json @@ -1,55 +1,55 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DestinationCidrBlock", - "/properties/VpnConnectionId" - ], - "description": "Specifies a static route for a VPN connection between an existing virtual private gateway and a VPN customer gateway. The static route allows traffic to be routed from the virtual private gateway to the VPN customer gateway.\n For more information, see [](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) in the *User Guide*.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateVpnConnectionRoute", - "ec2:DescribeVpnConnections" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteVpnConnectionRoute", - "ec2:DescribeVpnConnections" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeVpnConnections" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVpnConnections" - ] - } - }, - "primaryIdentifier": [ - "/properties/DestinationCidrBlock", - "/properties/VpnConnectionId" - ], - "properties": { - "DestinationCidrBlock": { - "description": "The CIDR block associated with the local subnet of the customer network.", - "type": "string" - }, - "VpnConnectionId": { - "description": "The ID of the VPN connection.", - "type": "string" - } - }, - "required": [ - "DestinationCidrBlock", - "VpnConnectionId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::EC2::VPNConnectionRoute" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DestinationCidrBlock", + "/properties/VpnConnectionId" + ], + "description": "Specifies a static route for a VPN connection between an existing virtual private gateway and a VPN customer gateway. The static route allows traffic to be routed from the virtual private gateway to the VPN customer gateway.\n For more information, see [](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) in the *User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpnConnectionRoute", + "ec2:DescribeVpnConnections" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpnConnectionRoute", + "ec2:DescribeVpnConnections" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpnConnections" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpnConnections" + ] + } + }, + "primaryIdentifier": [ + "/properties/DestinationCidrBlock", + "/properties/VpnConnectionId" + ], + "properties": { + "DestinationCidrBlock": { + "description": "The CIDR block associated with the local subnet of the customer network.", + "type": "string" + }, + "VpnConnectionId": { + "description": "The ID of the VPN connection.", + "type": "string" + } + }, + "required": [ + "DestinationCidrBlock", + "VpnConnectionId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::EC2::VPNConnectionRoute" +} diff --git a/src/schema/aws-ec2-vpngateway.json b/src/schema/aws-ec2-vpngateway.json index bbb9e49d..8409e022 100644 --- a/src/schema/aws-ec2-vpngateway.json +++ b/src/schema/aws-ec2-vpngateway.json @@ -1,107 +1,107 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AmazonSideAsn", - "/properties/Type" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "properties": { - "Key": { - "description": "The tag key.", - "type": "string" - }, - "Value": { - "description": "The tag value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Specifies a virtual private gateway. A virtual private gateway is the endpoint on the VPC side of your VPN connection. You can create a virtual private gateway before creating the VPC itself.\n For more information, see [](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) in the *User Guide*.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateVpnGateway", - "ec2:DescribeVpnGateways", - "ec2:CreateTags" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteVpnGateway", - "ec2:DescribeVpnGateways" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeVpnGateways" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVpnGateways" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeVpnGateways", - "ec2:CreateTags", - "ec2:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/VPNGatewayId" - ], - "properties": { - "AmazonSideAsn": { - "description": "The private Autonomous System Number (ASN) for the Amazon side of a BGP session.", - "format": "int64", - "type": "integer" - }, - "Tags": { - "description": "Any tags assigned to the virtual private gateway.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Type": { - "description": "The type of VPN connection the virtual private gateway supports.", - "type": "string" - }, - "VPNGatewayId": { - "description": "", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/VPNGatewayId" - ], - "required": [ - "Type" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ec2:CreateTags", - "ec2:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::VPNGateway" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AmazonSideAsn", + "/properties/Type" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies a virtual private gateway. A virtual private gateway is the endpoint on the VPC side of your VPN connection. You can create a virtual private gateway before creating the VPC itself.\n For more information, see [](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) in the *User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpnGateway", + "ec2:DescribeVpnGateways", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpnGateway", + "ec2:DescribeVpnGateways" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpnGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpnGateways" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeVpnGateways", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/VPNGatewayId" + ], + "properties": { + "AmazonSideAsn": { + "description": "The private Autonomous System Number (ASN) for the Amazon side of a BGP session.", + "format": "int64", + "type": "integer" + }, + "Tags": { + "description": "Any tags assigned to the virtual private gateway.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "description": "The type of VPN connection the virtual private gateway supports.", + "type": "string" + }, + "VPNGatewayId": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VPNGatewayId" + ], + "required": [ + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::VPNGateway" +} diff --git a/src/schema/aws-ec2-vpngatewayroutepropagation.json b/src/schema/aws-ec2-vpngatewayroutepropagation.json index 3ca806b7..8fbd81e1 100644 --- a/src/schema/aws-ec2-vpngatewayroutepropagation.json +++ b/src/schema/aws-ec2-vpngatewayroutepropagation.json @@ -1,60 +1,60 @@ -{ - "additionalProperties": false, - "description": "Resource Type definition for AWS::EC2::VPNGatewayRoutePropagation", - "handlers": { - "create": { - "permissions": [ - "ec2:EnableVgwRoutePropagation", - "ec2:DescribeRouteTables" - ] - }, - "delete": { - "permissions": [ - "ec2:DisableVgwRoutePropagation", - "ec2:DescribeRouteTables" - ] - }, - "update": { - "permissions": [ - "ec2:EnableVgwRoutePropagation", - "ec2:DescribeRouteTables" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "RouteTableIds": { - "description": "The ID of the route table. The routing table must be associated with the same VPC that the virtual private gateway is attached to", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "VpnGatewayId": { - "description": "The ID of the virtual private gateway that is attached to a VPC. The virtual private gateway must be attached to the same VPC that the routing tables are associated with", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "RouteTableIds", - "VpnGatewayId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::VPNGatewayRoutePropagation" -} +{ + "additionalProperties": false, + "description": "Resource Type definition for AWS::EC2::VPNGatewayRoutePropagation", + "handlers": { + "create": { + "permissions": [ + "ec2:EnableVgwRoutePropagation", + "ec2:DescribeRouteTables" + ] + }, + "delete": { + "permissions": [ + "ec2:DisableVgwRoutePropagation", + "ec2:DescribeRouteTables" + ] + }, + "update": { + "permissions": [ + "ec2:EnableVgwRoutePropagation", + "ec2:DescribeRouteTables" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "RouteTableIds": { + "description": "The ID of the route table. The routing table must be associated with the same VPC that the virtual private gateway is attached to", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "VpnGatewayId": { + "description": "The ID of the virtual private gateway that is attached to a VPC. The virtual private gateway must be attached to the same VPC that the routing tables are associated with", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "RouteTableIds", + "VpnGatewayId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::VPNGatewayRoutePropagation" +} diff --git a/src/schema/aws-ecr-publicrepository.json b/src/schema/aws-ecr-publicrepository.json index c3f35190..4783df6c 100644 --- a/src/schema/aws-ecr-publicrepository.json +++ b/src/schema/aws-ecr-publicrepository.json @@ -1,182 +1,196 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RepositoryName" - ], - "definitions": { - "AboutText": { - "description": "Provide a detailed description of the repository. Identify what is included in the repository, any licensing details, or other relevant information.", - "maxLength": 10240, - "type": "string" - }, - "Architecture": { - "description": "The name of the architecture.", - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "ArchitectureList": { - "description": "Select the system architectures that the images in your repository are compatible with.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Architecture" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "OperatingSystem": { - "description": "The name of the operating system.", - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "OperatingSystemList": { - "description": "Select the operating systems that the images in your repository are compatible with.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/OperatingSystem" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "RegistryId": { - "description": "The AWS account ID associated with the registry that contains the repository. If you do not specify a registry, the default registry is assumed. ", - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "RepositoryDescription": { - "description": "The description of the public repository.", - "maxLength": 1024, - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "UsageText": { - "description": "Provide detailed information about how to use the images in the repository. This provides context, support information, and additional usage details for users of the repository.", - "maxLength": 10240, - "type": "string" - } - }, - "description": "The AWS::ECR::PublicRepository resource specifies an Amazon Elastic Container Public Registry (Amazon Public ECR) repository, where users can push and pull Docker images. For more information, see https://docs.aws.amazon.com/AmazonECR", - "handlers": { - "create": { - "permissions": [ - "ecr-public:CreateRepository", - "ecr-public:SetRepositoryPolicy", - "ecr-public:PutRepositoryCatalogData", - "ecr-public:TagResource" - ] - }, - "delete": { - "permissions": [ - "ecr-public:DeleteRepository" - ] - }, - "list": { - "permissions": [ - "ecr-public:DescribeRepositories" - ] - }, - "read": { - "permissions": [ - "ecr-public:DescribeRepositories", - "ecr-public:GetRepositoryPolicy", - "ecr-public:GetRepositoryCatalogData", - "ecr-public:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "ecr-public:SetRepositoryPolicy", - "ecr-public:DeleteRepositoryPolicy", - "ecr-public:PutRepositoryCatalogData", - "ecr-public:TagResource", - "ecr-public:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/RepositoryName" - ], - "properties": { - "Arn": { - "type": "string" - }, - "RepositoryCatalogData": { - "additionalProperties": false, - "description": "The CatalogData property type specifies Catalog data for ECR Public Repository. For information about Catalog Data, see ", - "properties": { - "AboutText": { - "$ref": "#/definitions/AboutText" - }, - "Architectures": { - "$ref": "#/definitions/ArchitectureList" - }, - "OperatingSystems": { - "$ref": "#/definitions/OperatingSystemList" - }, - "RepositoryDescription": { - "$ref": "#/definitions/RepositoryDescription" - }, - "UsageText": { - "$ref": "#/definitions/UsageText" - } - }, - "type": "object" - }, - "RepositoryName": { - "description": "The name to use for the repository. The repository name may be specified on its own (such as nginx-web-app) or it can be prepended with a namespace to group the repository into a category (such as project-a/nginx-web-app). If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the repository name. For more information, see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html.", - "maxLength": 256, - "minLength": 2, - "pattern": "^(?=.{2,256}$)((?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*)$", - "type": "string" - }, - "RepositoryPolicyText": { - "description": "The JSON repository policy text to apply to the repository. For more information, see https://docs.aws.amazon.com/AmazonECR/latest/userguide/RepositoryPolicyExamples.html in the Amazon Elastic Container Registry User Guide. ", - "type": [ - "object", - "string" - ] - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", - "typeName": "AWS::ECR::PublicRepository" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RepositoryName" + ], + "definitions": { + "AboutText": { + "description": "Provide a detailed description of the repository. Identify what is included in the repository, any licensing details, or other relevant information.", + "maxLength": 10240, + "type": "string" + }, + "Architecture": { + "description": "The name of the architecture.", + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "ArchitectureList": { + "description": "Select the system architectures that the images in your repository are compatible with.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Architecture" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "OperatingSystem": { + "description": "The name of the operating system.", + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "OperatingSystemList": { + "description": "Select the operating systems that the images in your repository are compatible with.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/OperatingSystem" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "RegistryId": { + "description": "The AWS account ID associated with the registry that contains the repository. If you do not specify a registry, the default registry is assumed. ", + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "RepositoryDescription": { + "description": "The description of the public repository.", + "maxLength": 1024, + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "The metadata to apply to a resource to help you categorize and organize them. Each tag consists of a key and a value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.", + "properties": { + "Key": { + "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A ``value`` acts as a descriptor within a tag category (key).", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "UsageText": { + "description": "Provide detailed information about how to use the images in the repository. This provides context, support information, and additional usage details for users of the repository.", + "maxLength": 10240, + "type": "string" + } + }, + "description": "The ``AWS::ECR::PublicRepository`` resource specifies an Amazon Elastic Container Registry Public (Amazon ECR Public) repository, where users can push and pull Docker images, Open Container Initiative (OCI) images, and OCI compatible artifacts. For more information, see [Amazon ECR public repositories](https://docs.aws.amazon.com/AmazonECR/latest/public/public-repositories.html) in the *Amazon ECR Public User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ecr-public:CreateRepository", + "ecr-public:SetRepositoryPolicy", + "ecr-public:PutRepositoryCatalogData", + "ecr-public:TagResource" + ] + }, + "delete": { + "permissions": [ + "ecr-public:DeleteRepository" + ] + }, + "list": { + "permissions": [ + "ecr-public:DescribeRepositories" + ] + }, + "read": { + "permissions": [ + "ecr-public:DescribeRepositories", + "ecr-public:GetRepositoryPolicy", + "ecr-public:GetRepositoryCatalogData", + "ecr-public:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ecr-public:DescribeRepositories", + "ecr-public:SetRepositoryPolicy", + "ecr-public:DeleteRepositoryPolicy", + "ecr-public:PutRepositoryCatalogData", + "ecr-public:TagResource", + "ecr-public:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/RepositoryName" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "RepositoryCatalogData": { + "additionalProperties": false, + "description": "The details about the repository that are publicly visible in the Amazon ECR Public Gallery. For more information, see [Amazon ECR Public repository catalog data](https://docs.aws.amazon.com/AmazonECR/latest/public/public-repository-catalog-data.html) in the *Amazon ECR Public User Guide*.", + "properties": { + "AboutText": { + "$ref": "#/definitions/AboutText" + }, + "Architectures": { + "$ref": "#/definitions/ArchitectureList" + }, + "OperatingSystems": { + "$ref": "#/definitions/OperatingSystemList" + }, + "RepositoryDescription": { + "$ref": "#/definitions/RepositoryDescription" + }, + "UsageText": { + "$ref": "#/definitions/UsageText" + } + }, + "type": "object" + }, + "RepositoryName": { + "description": "The name to use for the public repository. The repository name may be specified on its own (such as ``nginx-web-app``) or it can be prepended with a namespace to group the repository into a category (such as ``project-a/nginx-web-app``). If you don't specify a name, CFNlong generates a unique physical ID and uses that ID for the repository name. For more information, see [Name Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", + "maxLength": 256, + "minLength": 2, + "pattern": "^(?=.{2,256}$)((?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*)$", + "type": "string" + }, + "RepositoryPolicyText": { + "description": "The JSON repository policy text to apply to the public repository. For more information, see [Amazon ECR Public repository policies](https://docs.aws.amazon.com/AmazonECR/latest/public/public-repository-policies.html) in the *Amazon ECR Public User Guide*.", + "type": [ + "object", + "string" + ] + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ecr-public:ListTagsForResource", + "ecr-public:TagResource", + "ecr-public:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ECR::PublicRepository" +} diff --git a/src/schema/aws-ecr-pullthroughcacherule.json b/src/schema/aws-ecr-pullthroughcacherule.json index b4a17482..c78c060b 100644 --- a/src/schema/aws-ecr-pullthroughcacherule.json +++ b/src/schema/aws-ecr-pullthroughcacherule.json @@ -1,138 +1,164 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/EcrRepositoryPrefix", - "/properties/UpstreamRegistryUrl", - "/properties/CredentialArn", - "/properties/UpstreamRegistry" - ], - "definitions": { - "CredentialArn": { - "description": "The Amazon Resource Name (ARN) of the AWS Secrets Manager secret that identifies the credentials to authenticate to the upstream registry.", - "maxLength": 612, - "minLength": 50, - "pattern": "^arn:aws:secretsmanager:[a-zA-Z0-9-:]+:secret:ecr\\-pullthroughcache\\/[a-zA-Z0-9\\/_+=.@-]+$", - "type": "string" - }, - "EcrRepositoryPrefix": { - "description": "The ECRRepositoryPrefix is a custom alias for upstream registry url.", - "maxLength": 30, - "minLength": 2, - "pattern": "(?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*", - "type": "string" - }, - "PullThroughCacheRule": { - "additionalProperties": false, - "maxItems": 50, - "minItems": 0, - "properties": { - "CredentialArn": { - "$ref": "#/definitions/CredentialArn" - }, - "EcrRepositoryPrefix": { - "$ref": "#/definitions/EcrRepositoryPrefix" - }, - "RegistryId": { - "$ref": "#/definitions/RegistryId" - }, - "UpstreamRegistry": { - "$ref": "#/definitions/UpstreamRegistry" - }, - "UpstreamRegistryUrl": { - "$ref": "#/definitions/UpstreamRegistryUrl" - } - }, - "required": [ - "EcrRepositoryPrefix", - "UpstreamRegistryUrl" - ], - "type": "object" - }, - "RegistryId": { - "description": "The account ID of the registry pull-through cache repository will be created in.", - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "UpstreamRegistry": { - "description": "The name of the upstream registry.", - "type": "string" - }, - "UpstreamRegistryUrl": { - "description": "The upstreamRegistryUrl is the endpoint of upstream registry url of the public repository to be cached", - "type": "string" - } - }, - "description": "The AWS::ECR::PullThroughCacheRule resource configures the upstream registry configuration details for an Amazon Elastic Container Registry (Amazon Private ECR) pull-through cache.", - "handlers": { - "create": { - "permissions": [ - "ecr:DescribePullThroughCacheRules", - "ecr:CreatePullThroughCacheRule", - "ecr:DeletePullThroughCacheRule", - "iam:CreateServiceLinkedRole", - "secretsmanager:GetSecretValue" - ] - }, - "delete": { - "permissions": [ - "ecr:DescribePullThroughCacheRules", - "ecr:DeletePullThroughCacheRule" - ] - }, - "list": { - "permissions": [ - "ecr:DescribePullThroughCacheRules" - ] - }, - "read": { - "permissions": [ - "ecr:DescribePullThroughCacheRules" - ] - }, - "update": { - "permissions": [ - "ecr:DescribePullThroughCacheRules", - "ecr:CreatePullThroughCacheRule", - "ecr:DeletePullThroughCacheRule", - "iam:CreateServiceLinkedRole", - "secretsmanager:GetSecretValue" - ] - } - }, - "primaryIdentifier": [ - "/properties/EcrRepositoryPrefix" - ], - "properties": { - "CredentialArn": { - "description": "The Amazon Resource Name (ARN) of the AWS Secrets Manager secret that identifies the credentials to authenticate to the upstream registry.", - "maxLength": 612, - "minLength": 50, - "pattern": "^arn:aws:secretsmanager:[a-zA-Z0-9-:]+:secret:ecr\\-pullthroughcache\\/[a-zA-Z0-9\\/_+=.@-]+$", - "type": "string" - }, - "EcrRepositoryPrefix": { - "description": "The ECRRepositoryPrefix is a custom alias for upstream registry url.", - "maxLength": 30, - "minLength": 2, - "pattern": "(?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*", - "type": "string" - }, - "UpstreamRegistry": { - "description": "The name of the upstream registry.", - "type": "string" - }, - "UpstreamRegistryUrl": { - "description": "The upstreamRegistryUrl is the endpoint of upstream registry url of the public repository to be cached", - "type": "string" - } - }, - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ECR::PullThroughCacheRule", - "writeOnlyProperties": [ - "/properties/CredentialArn", - "/properties/UpstreamRegistry" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EcrRepositoryPrefix", + "/properties/UpstreamRegistryUrl", + "/properties/CredentialArn", + "/properties/UpstreamRegistry", + "/properties/CustomRoleArn", + "/properties/UpstreamRepositoryPrefix" + ], + "definitions": { + "CredentialArn": { + "description": "The Amazon Resource Name (ARN) of the AWS Secrets Manager secret that identifies the credentials to authenticate to the upstream registry.", + "maxLength": 612, + "minLength": 50, + "pattern": "^arn:aws:secretsmanager:[a-zA-Z0-9-:]+:secret:ecr\\-pullthroughcache\\/[a-zA-Z0-9\\/_+=.@-]+$", + "type": "string" + }, + "CustomRoleArn": { + "description": "The ARN of the IAM role to be assumed by Amazon ECR to authenticate to ECR upstream registry. This role must be in the same account as the registry that you are configuring.", + "maxLength": 2048, + "type": "string" + }, + "EcrRepositoryPrefix": { + "description": "The ECRRepositoryPrefix is a custom alias for upstream registry url.", + "maxLength": 30, + "minLength": 2, + "pattern": "^((?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*/?|ROOT)$", + "type": "string" + }, + "PullThroughCacheRule": { + "additionalProperties": false, + "description": "", + "maxItems": 50, + "minItems": 0, + "properties": { + "CredentialArn": { + "$ref": "#/definitions/CredentialArn" + }, + "CustomRoleArn": { + "$ref": "#/definitions/CustomRoleArn" + }, + "EcrRepositoryPrefix": { + "$ref": "#/definitions/EcrRepositoryPrefix" + }, + "RegistryId": { + "$ref": "#/definitions/RegistryId" + }, + "UpstreamRegistry": { + "$ref": "#/definitions/UpstreamRegistry" + }, + "UpstreamRegistryUrl": { + "$ref": "#/definitions/UpstreamRegistryUrl" + }, + "UpstreamRepositoryPrefix": { + "$ref": "#/definitions/UpstreamRepositoryPrefix" + } + }, + "required": [ + "EcrRepositoryPrefix", + "UpstreamRegistryUrl" + ], + "type": "object" + }, + "RegistryId": { + "description": "The account ID of the registry pull-through cache repository will be created in.", + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "UpstreamRegistry": { + "description": "The name of the upstream registry.", + "type": "string" + }, + "UpstreamRegistryUrl": { + "description": "The upstreamRegistryUrl is the endpoint of upstream registry url of the public repository to be cached", + "type": "string" + }, + "UpstreamRepositoryPrefix": { + "description": "The repository name prefix of upstream registry to match with the upstream repository name. When this field isn't specified, Amazon ECR will use the `ROOT`.", + "maxLength": 30, + "minLength": 2, + "pattern": "^((?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*/?|ROOT)$", + "type": "string" + } + }, + "description": "The ``AWS::ECR::PullThroughCacheRule`` resource creates or updates a pull through cache rule. A pull through cache rule provides a way to cache images from an upstream registry in your Amazon ECR private registry.", + "handlers": { + "create": { + "permissions": [ + "ecr:DescribePullThroughCacheRules", + "ecr:CreatePullThroughCacheRule", + "ecr:DeletePullThroughCacheRule", + "iam:CreateServiceLinkedRole", + "secretsmanager:GetSecretValue", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "ecr:DescribePullThroughCacheRules", + "ecr:DeletePullThroughCacheRule" + ] + }, + "list": { + "permissions": [ + "ecr:DescribePullThroughCacheRules" + ] + }, + "read": { + "permissions": [ + "ecr:DescribePullThroughCacheRules" + ] + }, + "update": { + "permissions": [ + "ecr:DescribePullThroughCacheRules", + "ecr:CreatePullThroughCacheRule", + "ecr:DeletePullThroughCacheRule", + "iam:CreateServiceLinkedRole", + "secretsmanager:GetSecretValue", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/EcrRepositoryPrefix" + ], + "properties": { + "CredentialArn": { + "$ref": "#/definitions/CredentialArn", + "description": "The ARN of the Secrets Manager secret associated with the pull through cache rule." + }, + "CustomRoleArn": { + "$ref": "#/definitions/CustomRoleArn", + "description": "The ARN of the IAM role associated with the pull through cache rule." + }, + "EcrRepositoryPrefix": { + "$ref": "#/definitions/EcrRepositoryPrefix", + "description": "The Amazon ECR repository prefix associated with the pull through cache rule." + }, + "UpstreamRegistry": { + "$ref": "#/definitions/UpstreamRegistry", + "description": "The name of the upstream source registry associated with the pull through cache rule." + }, + "UpstreamRegistryUrl": { + "$ref": "#/definitions/UpstreamRegistryUrl", + "description": "The upstream registry URL associated with the pull through cache rule." + }, + "UpstreamRepositoryPrefix": { + "$ref": "#/definitions/UpstreamRepositoryPrefix", + "description": "The upstream repository prefix associated with the pull through cache rule." + } + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ECR::PullThroughCacheRule", + "writeOnlyProperties": [ + "/properties/CredentialArn", + "/properties/UpstreamRegistry", + "/properties/CustomRoleArn" + ] +} diff --git a/src/schema/aws-ecr-registrypolicy.json b/src/schema/aws-ecr-registrypolicy.json index dfc7e490..425c052e 100644 --- a/src/schema/aws-ecr-registrypolicy.json +++ b/src/schema/aws-ecr-registrypolicy.json @@ -1,66 +1,66 @@ -{ - "additionalProperties": false, - "definitions": { - "RegistryId": { - "description": "The registry id.", - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - } - }, - "description": "The ``AWS::ECR::RegistryPolicy`` resource creates or updates the permissions policy for a private registry.\n A private registry policy is used to specify permissions for another AWS-account and is used when configuring cross-account replication. For more information, see [Registry permissions](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry-permissions.html) in the *Amazon Elastic Container Registry User Guide*.", - "handlers": { - "create": { - "permissions": [ - "ecr:GetRegistryPolicy", - "ecr:PutRegistryPolicy" - ] - }, - "delete": { - "permissions": [ - "ecr:DeleteRegistryPolicy" - ] - }, - "list": { - "permissions": [ - "ecr:GetRegistryPolicy" - ] - }, - "read": { - "permissions": [ - "ecr:GetRegistryPolicy" - ] - }, - "update": { - "permissions": [ - "ecr:GetRegistryPolicy", - "ecr:PutRegistryPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/RegistryId" - ], - "properties": { - "PolicyText": { - "description": "The JSON policy text for your registry.", - "type": "object" - }, - "RegistryId": { - "$ref": "#/definitions/RegistryId", - "description": "" - } - }, - "readOnlyProperties": [ - "/properties/RegistryId" - ], - "required": [ - "PolicyText" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ECR::RegistryPolicy" -} +{ + "additionalProperties": false, + "definitions": { + "RegistryId": { + "description": "The registry id.", + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + } + }, + "description": "The ``AWS::ECR::RegistryPolicy`` resource creates or updates the permissions policy for a private registry.\n A private registry policy is used to specify permissions for another AWS-account and is used when configuring cross-account replication. For more information, see [Registry permissions](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry-permissions.html) in the *Amazon Elastic Container Registry User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ecr:GetRegistryPolicy", + "ecr:PutRegistryPolicy" + ] + }, + "delete": { + "permissions": [ + "ecr:DeleteRegistryPolicy" + ] + }, + "list": { + "permissions": [ + "ecr:GetRegistryPolicy" + ] + }, + "read": { + "permissions": [ + "ecr:GetRegistryPolicy" + ] + }, + "update": { + "permissions": [ + "ecr:GetRegistryPolicy", + "ecr:PutRegistryPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/RegistryId" + ], + "properties": { + "PolicyText": { + "description": "The JSON policy text for your registry.", + "type": "object" + }, + "RegistryId": { + "$ref": "#/definitions/RegistryId", + "description": "" + } + }, + "readOnlyProperties": [ + "/properties/RegistryId" + ], + "required": [ + "PolicyText" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ECR::RegistryPolicy" +} diff --git a/src/schema/aws-ecr-registryscanningconfiguration.json b/src/schema/aws-ecr-registryscanningconfiguration.json new file mode 100644 index 00000000..36442aa8 --- /dev/null +++ b/src/schema/aws-ecr-registryscanningconfiguration.json @@ -0,0 +1,154 @@ +{ + "additionalProperties": false, + "definitions": { + "Filter": { + "description": "The filter to use when scanning.", + "pattern": "^[a-z0-9*](?:[._\\-/a-z0-9*]?[a-z0-9*]+)*$", + "type": "string" + }, + "FilterType": { + "description": "The type associated with the filter.", + "enum": [ + "WILDCARD" + ], + "type": "string" + }, + "RegistryId": { + "description": "The registry id.", + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "RepositoryFilter": { + "additionalProperties": false, + "description": "The details of a scanning repository filter.", + "properties": { + "Filter": { + "$ref": "#/definitions/Filter" + }, + "FilterType": { + "$ref": "#/definitions/FilterType" + } + }, + "required": [ + "Filter", + "FilterType" + ], + "type": "object" + }, + "ScanFrequency": { + "description": "The frequency that scans are performed.", + "enum": [ + "SCAN_ON_PUSH", + "CONTINUOUS_SCAN" + ], + "type": "string" + }, + "ScanType": { + "description": "The type of scanning configured for the registry.", + "enum": [ + "BASIC", + "ENHANCED" + ], + "type": "string" + }, + "ScanningRule": { + "additionalProperties": false, + "description": "A rule representing the details of a scanning configuration.", + "properties": { + "RepositoryFilters": { + "description": "The repository filters associated with the scanning configuration for a private registry.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RepositoryFilter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ScanFrequency": { + "$ref": "#/definitions/ScanFrequency" + } + }, + "required": [ + "ScanFrequency", + "RepositoryFilters" + ], + "type": "object" + }, + "ScanningRules": { + "description": "The scanning rules associated with the registry. A registry scanning configuration may contain a maximum of 2 rules.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ScanningRule" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + } + }, + "description": "The AWS::ECR::RegistryScanningConfiguration controls the scanning configuration for an Amazon Elastic Container Registry (Amazon Private ECR). For more information, see https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-scanning.html", + "handlers": { + "create": { + "permissions": [ + "ecr:PutRegistryScanningConfiguration", + "ecr:GetRegistryScanningConfiguration", + "inspector2:Enable", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "ecr:PutRegistryScanningConfiguration", + "ecr:GetRegistryScanningConfiguration", + "inspector2:ListAccountPermissions", + "inspector2:Disable" + ] + }, + "list": { + "permissions": [ + "ecr:GetRegistryScanningConfiguration" + ] + }, + "read": { + "permissions": [ + "ecr:GetRegistryScanningConfiguration" + ] + }, + "update": { + "permissions": [ + "ecr:PutRegistryScanningConfiguration", + "ecr:GetRegistryScanningConfiguration", + "inspector2:Enable", + "inspector2:Disable", + "inspector2:ListAccountPermissions", + "iam:CreateServiceLinkedRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/RegistryId" + ], + "properties": { + "RegistryId": { + "$ref": "#/definitions/RegistryId" + }, + "Rules": { + "$ref": "#/definitions/ScanningRules" + }, + "ScanType": { + "$ref": "#/definitions/ScanType" + } + }, + "readOnlyProperties": [ + "/properties/RegistryId" + ], + "required": [ + "Rules", + "ScanType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ECR::RegistryScanningConfiguration" +} diff --git a/src/schema/aws-ecr-replicationconfiguration.json b/src/schema/aws-ecr-replicationconfiguration.json index 773f1ede..db6a2b8c 100644 --- a/src/schema/aws-ecr-replicationconfiguration.json +++ b/src/schema/aws-ecr-replicationconfiguration.json @@ -1,165 +1,170 @@ -{ - "additionalProperties": false, - "definitions": { - "Filter": { - "description": "The repository filter to be applied for replication.", - "pattern": "^(?:[a-z0-9]+(?:[._-][a-z0-9]*)*/)*[a-z0-9]*(?:[._-][a-z0-9]*)*$", - "type": "string" - }, - "FilterType": { - "description": "Type of repository filter", - "enum": [ - "PREFIX_MATCH" - ], - "type": "string" - }, - "Region": { - "description": "A Region to replicate to.", - "pattern": "[0-9a-z-]{2,25}", - "type": "string" - }, - "RegistryId": { - "description": "The account ID of the destination registry to replicate to.", - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "ReplicationConfiguration": { - "additionalProperties": false, - "description": "An object representing the replication configuration for a registry.", - "properties": { - "Rules": { - "description": "An array of objects representing the replication rules for a replication configuration. A replication configuration may contain a maximum of 10 rules.", - "items": { - "$ref": "#/definitions/ReplicationRule" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Rules" - ], - "type": "object" - }, - "ReplicationDestination": { - "additionalProperties": false, - "description": "An array of objects representing the details of a replication destination.", - "properties": { - "Region": { - "$ref": "#/definitions/Region" - }, - "RegistryId": { - "$ref": "#/definitions/RegistryId" - } - }, - "required": [ - "Region", - "RegistryId" - ], - "type": "object" - }, - "ReplicationRule": { - "additionalProperties": false, - "description": "An array of objects representing the details of a replication destination.", - "properties": { - "Destinations": { - "description": "An array of objects representing the details of a replication destination.", - "items": { - "$ref": "#/definitions/ReplicationDestination" - }, - "maxItems": 25, - "minItems": 1, - "type": "array" - }, - "RepositoryFilters": { - "description": "An array of objects representing the details of a repository filter.", - "items": { - "$ref": "#/definitions/RepositoryFilter" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Destinations" - ], - "type": "object" - }, - "RepositoryFilter": { - "additionalProperties": false, - "description": "An array of objects representing the details of a repository filter.", - "properties": { - "Filter": { - "$ref": "#/definitions/Filter" - }, - "FilterType": { - "$ref": "#/definitions/FilterType" - } - }, - "required": [ - "Filter", - "FilterType" - ], - "type": "object" - } - }, - "description": "The AWS::ECR::ReplicationConfiguration resource configures the replication destinations for an Amazon Elastic Container Registry (Amazon Private ECR). For more information, see https://docs.aws.amazon.com/AmazonECR/latest/userguide/replication.html", - "handlers": { - "create": { - "permissions": [ - "ecr:DescribeRegistry", - "ecr:PutReplicationConfiguration", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "ecr:DescribeRegistry", - "ecr:PutReplicationConfiguration", - "iam:CreateServiceLinkedRole" - ] - }, - "list": { - "permissions": [ - "ecr:DescribeRegistry" - ] - }, - "read": { - "permissions": [ - "ecr:DescribeRegistry" - ] - }, - "update": { - "permissions": [ - "ecr:DescribeRegistry", - "ecr:PutReplicationConfiguration", - "iam:CreateServiceLinkedRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/RegistryId" - ], - "properties": { - "RegistryId": { - "description": "The RegistryId associated with the aws account.", - "type": "string" - }, - "ReplicationConfiguration": { - "$ref": "#/definitions/ReplicationConfiguration" - } - }, - "readOnlyProperties": [ - "/properties/RegistryId" - ], - "required": [ - "ReplicationConfiguration" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ECR::ReplicationConfiguration" -} +{ + "additionalProperties": false, + "definitions": { + "Filter": { + "description": "The repository filter to be applied for replication.", + "pattern": "^(?:[a-z0-9]+(?:[._-][a-z0-9]*)*/)*[a-z0-9]*(?:[._-][a-z0-9]*)*$", + "type": "string" + }, + "FilterType": { + "description": "Type of repository filter", + "enum": [ + "PREFIX_MATCH" + ], + "type": "string" + }, + "Region": { + "description": "A Region to replicate to.", + "pattern": "[0-9a-z-]{2,25}", + "type": "string" + }, + "RegistryId": { + "description": "The account ID of the destination registry to replicate to.", + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "ReplicationConfiguration": { + "additionalProperties": false, + "description": "The replication configuration for a registry.", + "properties": { + "Rules": { + "description": "An array of objects representing the replication destinations and repository filters for a replication configuration.", + "items": { + "$ref": "#/definitions/ReplicationRule" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Rules" + ], + "type": "object" + }, + "ReplicationDestination": { + "additionalProperties": false, + "description": "An array of objects representing the destination for a replication rule.", + "properties": { + "Region": { + "$ref": "#/definitions/Region", + "description": "The Region to replicate to." + }, + "RegistryId": { + "$ref": "#/definitions/RegistryId", + "description": "The AWS account ID of the Amazon ECR private registry to replicate to. When configuring cross-Region replication within your own registry, specify your own account ID." + } + }, + "required": [ + "Region", + "RegistryId" + ], + "type": "object" + }, + "ReplicationRule": { + "additionalProperties": false, + "description": "An array of objects representing the replication destinations and repository filters for a replication configuration.", + "properties": { + "Destinations": { + "description": "An array of objects representing the destination for a replication rule.", + "items": { + "$ref": "#/definitions/ReplicationDestination" + }, + "maxItems": 25, + "minItems": 1, + "type": "array" + }, + "RepositoryFilters": { + "description": "An array of objects representing the filters for a replication rule. Specifying a repository filter for a replication rule provides a method for controlling which repositories in a private registry are replicated.", + "items": { + "$ref": "#/definitions/RepositoryFilter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Destinations" + ], + "type": "object" + }, + "RepositoryFilter": { + "additionalProperties": false, + "description": "The filter settings used with image replication. Specifying a repository filter to a replication rule provides a method for controlling which repositories in a private registry are replicated. If no filters are added, the contents of all repositories are replicated.", + "properties": { + "Filter": { + "$ref": "#/definitions/Filter", + "description": "The repository filter details. When the ``PREFIX_MATCH`` filter type is specified, this value is required and should be the repository name prefix to configure replication for." + }, + "FilterType": { + "$ref": "#/definitions/FilterType", + "description": "The repository filter type. The only supported value is ``PREFIX_MATCH``, which is a repository name prefix specified with the ``filter`` parameter." + } + }, + "required": [ + "Filter", + "FilterType" + ], + "type": "object" + } + }, + "description": "The ``AWS::ECR::ReplicationConfiguration`` resource creates or updates the replication configuration for a private registry. The first time a replication configuration is applied to a private registry, a service-linked IAM role is created in your account for the replication process. For more information, see [Using Service-Linked Roles for Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/using-service-linked-roles.html) in the *Amazon Elastic Container Registry User Guide*.\n When configuring cross-account replication, the destination account must grant the source account permission to replicate. This permission is controlled using a private registry permissions policy. For more information, see ``AWS::ECR::RegistryPolicy``.", + "handlers": { + "create": { + "permissions": [ + "ecr:DescribeRegistry", + "ecr:PutReplicationConfiguration", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "ecr:DescribeRegistry", + "ecr:PutReplicationConfiguration", + "iam:CreateServiceLinkedRole" + ] + }, + "list": { + "permissions": [ + "ecr:DescribeRegistry" + ] + }, + "read": { + "permissions": [ + "ecr:DescribeRegistry" + ] + }, + "update": { + "permissions": [ + "ecr:DescribeRegistry", + "ecr:PutReplicationConfiguration", + "iam:CreateServiceLinkedRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/RegistryId" + ], + "properties": { + "RegistryId": { + "description": "", + "type": "string" + }, + "ReplicationConfiguration": { + "$ref": "#/definitions/ReplicationConfiguration", + "description": "The replication configuration for a registry." + } + }, + "readOnlyProperties": [ + "/properties/RegistryId" + ], + "required": [ + "ReplicationConfiguration" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ECR::ReplicationConfiguration" +} diff --git a/src/schema/aws-ecr-repository.json b/src/schema/aws-ecr-repository.json index c1cfe93a..538aec3c 100644 --- a/src/schema/aws-ecr-repository.json +++ b/src/schema/aws-ecr-repository.json @@ -1,245 +1,244 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RepositoryName", - "/properties/EncryptionConfiguration", - "/properties/EncryptionConfiguration/EncryptionType", - "/properties/EncryptionConfiguration/KmsKey" - ], - "definitions": { - "EmptyOnDelete": { - "description": "If true, deleting the repository force deletes the contents of the repository. Without a force delete, you can only delete empty repositories.", - "type": "boolean" - }, - "EncryptionConfiguration": { - "additionalProperties": false, - "description": "The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest.\n By default, when no encryption configuration is set or the ``AES256`` encryption type is used, Amazon ECR uses server-side encryption with Amazon S3-managed encryption keys which encrypts your data at rest using an AES-256 encryption algorithm. This does not require any action on your part.\n For more control over the encryption of the contents of your repository, you can use server-side encryption with KMSlong key stored in KMSlong (KMS) to encrypt your images. For more information, see [Amazon ECR encryption at rest](https://docs.aws.amazon.com/AmazonECR/latest/userguide/encryption-at-rest.html) in the *Amazon Elastic Container Registry User Guide*.", - "properties": { - "EncryptionType": { - "$ref": "#/definitions/EncryptionType", - "description": "The encryption type to use.\n If you use the ``KMS`` encryption type, the contents of the repository will be encrypted using server-side encryption with KMSlong key stored in KMS. When you use KMS to encrypt your data, you can either use the default AWS managed KMS key for Amazon ECR, or specify your own KMS key, which you already created. For more information, see [Protecting data using server-side encryption with an key stored in (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html) in the *Amazon Simple Storage Service Console Developer Guide*.\n If you use the ``AES256`` encryption type, Amazon ECR uses server-side encryption with Amazon S3-managed encryption keys which encrypts the images in the repository using an AES-256 encryption algorithm. For more information, see [Protecting data using server-side encryption with Amazon S3-managed encryption keys (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html) in the *Amazon Simple Storage Service Console Developer Guide*." - }, - "KmsKey": { - "$ref": "#/definitions/KmsKey", - "description": "If you use the ``KMS`` encryption type, specify the KMS key to use for encryption. The alias, key ID, or full ARN of the KMS key can be specified. The key must exist in the same Region as the repository. If no key is specified, the default AWS managed KMS key for Amazon ECR will be used." - } - }, - "required": [ - "EncryptionType" - ], - "type": "object" - }, - "EncryptionType": { - "description": "The encryption type to use.", - "enum": [ - "AES256", - "KMS", - "KMS_DSSE" - ], - "type": "string" - }, - "ImageScanningConfiguration": { - "additionalProperties": false, - "description": "The image scanning configuration for a repository.", - "properties": { - "ScanOnPush": { - "$ref": "#/definitions/ScanOnPush", - "description": "The setting that determines whether images are scanned after being pushed to a repository. If set to ``true``, images will be scanned after being pushed. If this parameter is not specified, it will default to ``false`` and images will not be scanned unless a scan is manually started." - } - }, - "type": "object" - }, - "KmsKey": { - "description": "If you use the KMS or KMS_DSSE encryption type, specify the CMK to use for encryption. The alias, key ID, or full ARN of the CMK can be specified. The key must exist in the same Region as the repository. If no key is specified, the default AWS managed CMK for Amazon ECR will be used.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "LifecyclePolicy": { - "additionalProperties": false, - "description": "The ``LifecyclePolicy`` property type specifies a lifecycle policy. For information about lifecycle policy syntax, see [Lifecycle policy template](https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html) in the *Amazon ECR User Guide*.", - "properties": { - "LifecyclePolicyText": { - "$ref": "#/definitions/LifecyclePolicyText", - "description": "The JSON repository policy text to apply to the repository." - }, - "RegistryId": { - "$ref": "#/definitions/RegistryId", - "description": "The AWS account ID associated with the registry that contains the repository. If you do\u2028 not specify a registry, the default registry is assumed." - } - }, - "type": "object" - }, - "LifecyclePolicyText": { - "description": "The JSON repository policy text to apply to the repository.", - "maxLength": 30720, - "minLength": 100, - "type": "string" - }, - "RegistryId": { - "description": "The AWS account ID associated with the registry that contains the repository. If you do not specify a registry, the default registry is assumed. ", - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "ScanOnPush": { - "description": "The setting that determines whether images are scanned after being pushed to a repository.", - "type": "boolean" - }, - "Tag": { - "additionalProperties": false, - "description": "The metadata to apply to a resource to help you categorize and organize them. Each tag consists of a key and a value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.", - "properties": { - "Key": { - "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "A ``value`` acts as a descriptor within a tag category (key).", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The ``AWS::ECR::Repository`` resource specifies an Amazon Elastic Container Registry (Amazon ECR) repository, where users can push and pull Docker images, Open Container Initiative (OCI) images, and OCI compatible artifacts. For more information, see [Amazon ECR private repositories](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Repositories.html) in the *Amazon ECR User Guide*.", - "handlers": { - "create": { - "permissions": [ - "ecr:CreateRepository", - "ecr:PutLifecyclePolicy", - "ecr:SetRepositoryPolicy", - "ecr:TagResource", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:RetireGrant" - ] - }, - "delete": { - "permissions": [ - "ecr:DeleteRepository", - "kms:RetireGrant" - ] - }, - "list": { - "permissions": [ - "ecr:DescribeRepositories" - ] - }, - "read": { - "permissions": [ - "ecr:DescribeRepositories", - "ecr:GetLifecyclePolicy", - "ecr:GetRepositoryPolicy", - "ecr:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "ecr:DescribeRepositories", - "ecr:PutLifecyclePolicy", - "ecr:SetRepositoryPolicy", - "ecr:ListTagsForResource", - "ecr:TagResource", - "ecr:UntagResource", - "ecr:DeleteLifecyclePolicy", - "ecr:DeleteRepositoryPolicy", - "ecr:PutImageScanningConfiguration", - "ecr:PutImageTagMutability", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:RetireGrant" - ] - } - }, - "primaryIdentifier": [ - "/properties/RepositoryName" - ], - "properties": { - "Arn": { - "description": "", - "type": "string" - }, - "EmptyOnDelete": { - "$ref": "#/definitions/EmptyOnDelete", - "description": "If true, deleting the repository force deletes the contents of the repository. If false, the repository must be empty before attempting to delete it." - }, - "EncryptionConfiguration": { - "$ref": "#/definitions/EncryptionConfiguration", - "description": "The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest." - }, - "ImageScanningConfiguration": { - "$ref": "#/definitions/ImageScanningConfiguration", - "description": "The image scanning configuration for the repository. This determines whether images are scanned for known vulnerabilities after being pushed to the repository." - }, - "ImageTagMutability": { - "description": "The tag mutability setting for the repository. If this parameter is omitted, the default setting of ``MUTABLE`` will be used which will allow image tags to be overwritten. If ``IMMUTABLE`` is specified, all image tags within the repository will be immutable which will prevent them from being overwritten.", - "enum": [ - "MUTABLE", - "IMMUTABLE" - ], - "type": "string" - }, - "LifecyclePolicy": { - "$ref": "#/definitions/LifecyclePolicy", - "description": "Creates or updates a lifecycle policy. For information about lifecycle policy syntax, see [Lifecycle policy template](https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html)." - }, - "RepositoryName": { - "description": "The name to use for the repository. The repository name may be specified on its own (such as ``nginx-web-app``) or it can be prepended with a namespace to group the repository into a category (such as ``project-a/nginx-web-app``). If you don't specify a name, CFNlong generates a unique physical ID and uses that ID for the repository name. For more information, see [Name type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).\n The repository name must start with a letter and can only contain lowercase letters, numbers, hyphens, underscores, and forward slashes.\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", - "maxLength": 256, - "minLength": 2, - "pattern": "^(?=.{2,256}$)((?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*)$", - "type": "string" - }, - "RepositoryPolicyText": { - "description": "The JSON repository policy text to apply to the repository. For more information, see [Amazon ECR repository policies](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html) in the *Amazon Elastic Container Registry User Guide*.", - "type": [ - "object", - "string" - ] - }, - "RepositoryUri": { - "description": "", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/RepositoryUri" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ecr:TagResource", - "ecr:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ECR::Repository", - "writeOnlyProperties": [ - "/properties/EmptyOnDelete" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RepositoryName", + "/properties/EncryptionConfiguration", + "/properties/EncryptionConfiguration/EncryptionType", + "/properties/EncryptionConfiguration/KmsKey" + ], + "definitions": { + "EmptyOnDelete": { + "description": "If true, deleting the repository force deletes the contents of the repository. Without a force delete, you can only delete empty repositories.", + "type": "boolean" + }, + "EncryptionConfiguration": { + "additionalProperties": false, + "description": "The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest.\n By default, when no encryption configuration is set or the ``AES256`` encryption type is used, Amazon ECR uses server-side encryption with Amazon S3-managed encryption keys which encrypts your data at rest using an AES256 encryption algorithm. This does not require any action on your part.\n For more control over the encryption of the contents of your repository, you can use server-side encryption with KMSlong key stored in KMSlong (KMS) to encrypt your images. For more information, see [Amazon ECR encryption at rest](https://docs.aws.amazon.com/AmazonECR/latest/userguide/encryption-at-rest.html) in the *Amazon Elastic Container Registry User Guide*.", + "properties": { + "EncryptionType": { + "$ref": "#/definitions/EncryptionType", + "description": "The encryption type to use.\n If you use the ``KMS`` encryption type, the contents of the repository will be encrypted using server-side encryption with KMSlong key stored in KMS. When you use KMS to encrypt your data, you can either use the default AWS managed KMS key for Amazon ECR, or specify your own KMS key, which you already created.\n If you use the ``KMS_DSSE`` encryption type, the contents of the repository will be encrypted with two layers of encryption using server-side encryption with the KMS Management Service key stored in KMS. Similar to the ``KMS`` encryption type, you can either use the default AWS managed KMS key for Amazon ECR, or specify your own KMS key, which you've already created. \n If you use the ``AES256`` encryption type, Amazon ECR uses server-side encryption with Amazon S3-managed encryption keys which encrypts the images in the repository using an AES256 encryption algorithm.\n For more information, see [Amazon ECR encryption at rest](https://docs.aws.amazon.com/AmazonECR/latest/userguide/encryption-at-rest.html) in the *Amazon Elastic Container Registry User Guide*." + }, + "KmsKey": { + "$ref": "#/definitions/KmsKey", + "description": "If you use the ``KMS`` encryption type, specify the KMS key to use for encryption. The alias, key ID, or full ARN of the KMS key can be specified. The key must exist in the same Region as the repository. If no key is specified, the default AWS managed KMS key for Amazon ECR will be used." + } + }, + "required": [ + "EncryptionType" + ], + "type": "object" + }, + "EncryptionType": { + "description": "The encryption type to use.", + "enum": [ + "AES256", + "KMS", + "KMS_DSSE" + ], + "type": "string" + }, + "ImageScanningConfiguration": { + "additionalProperties": false, + "description": "The image scanning configuration for a repository.", + "properties": { + "ScanOnPush": { + "$ref": "#/definitions/ScanOnPush", + "description": "The setting that determines whether images are scanned after being pushed to a repository. If set to ``true``, images will be scanned after being pushed. If this parameter is not specified, it will default to ``false`` and images will not be scanned unless a scan is manually started." + } + }, + "type": "object" + }, + "KmsKey": { + "description": "If you use the KMS or KMS_DSSE encryption type, specify the CMK to use for encryption. The alias, key ID, or full ARN of the CMK can be specified. The key must exist in the same Region as the repository. If no key is specified, the default AWS managed CMK for Amazon ECR will be used.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "LifecyclePolicy": { + "additionalProperties": false, + "description": "The ``LifecyclePolicy`` property type specifies a lifecycle policy. For information about lifecycle policy syntax, see [Lifecycle policy template](https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html) in the *Amazon ECR User Guide*.", + "properties": { + "LifecyclePolicyText": { + "$ref": "#/definitions/LifecyclePolicyText", + "description": "The JSON repository policy text to apply to the repository." + }, + "RegistryId": { + "$ref": "#/definitions/RegistryId", + "description": "The AWS account ID associated with the registry that contains the repository. If you do\u2028 not specify a registry, the default registry is assumed." + } + }, + "type": "object" + }, + "LifecyclePolicyText": { + "description": "The JSON repository policy text to apply to the repository.", + "maxLength": 30720, + "minLength": 100, + "type": "string" + }, + "RegistryId": { + "description": "The AWS account ID associated with the registry that contains the repository. If you do not specify a registry, the default registry is assumed. ", + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "ScanOnPush": { + "description": "The setting that determines whether images are scanned after being pushed to a repository.", + "type": "boolean" + }, + "Tag": { + "additionalProperties": false, + "description": "The metadata to apply to a resource to help you categorize and organize them. Each tag consists of a key and a value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.", + "properties": { + "Key": { + "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A ``value`` acts as a descriptor within a tag category (key).", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The ``AWS::ECR::Repository`` resource specifies an Amazon Elastic Container Registry (Amazon ECR) repository, where users can push and pull Docker images, Open Container Initiative (OCI) images, and OCI compatible artifacts. For more information, see [Amazon ECR private repositories](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Repositories.html) in the *Amazon ECR User Guide*.", + "handlers": { + "create": { + "permissions": [ + "ecr:CreateRepository", + "ecr:PutLifecyclePolicy", + "ecr:SetRepositoryPolicy", + "ecr:TagResource", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:RetireGrant" + ] + }, + "delete": { + "permissions": [ + "ecr:DeleteRepository", + "kms:RetireGrant" + ] + }, + "list": { + "permissions": [ + "ecr:DescribeRepositories" + ] + }, + "read": { + "permissions": [ + "ecr:DescribeRepositories", + "ecr:GetLifecyclePolicy", + "ecr:GetRepositoryPolicy", + "ecr:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ecr:DescribeRepositories", + "ecr:PutLifecyclePolicy", + "ecr:SetRepositoryPolicy", + "ecr:TagResource", + "ecr:UntagResource", + "ecr:DeleteLifecyclePolicy", + "ecr:DeleteRepositoryPolicy", + "ecr:PutImageScanningConfiguration", + "ecr:PutImageTagMutability", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:RetireGrant" + ] + } + }, + "primaryIdentifier": [ + "/properties/RepositoryName" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "EmptyOnDelete": { + "$ref": "#/definitions/EmptyOnDelete", + "description": "If true, deleting the repository force deletes the contents of the repository. If false, the repository must be empty before attempting to delete it." + }, + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration", + "description": "The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest." + }, + "ImageScanningConfiguration": { + "$ref": "#/definitions/ImageScanningConfiguration", + "description": "The image scanning configuration for the repository. This determines whether images are scanned for known vulnerabilities after being pushed to the repository." + }, + "ImageTagMutability": { + "description": "The tag mutability setting for the repository. If this parameter is omitted, the default setting of ``MUTABLE`` will be used which will allow image tags to be overwritten. If ``IMMUTABLE`` is specified, all image tags within the repository will be immutable which will prevent them from being overwritten.", + "enum": [ + "MUTABLE", + "IMMUTABLE" + ], + "type": "string" + }, + "LifecyclePolicy": { + "$ref": "#/definitions/LifecyclePolicy", + "description": "Creates or updates a lifecycle policy. For information about lifecycle policy syntax, see [Lifecycle policy template](https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html)." + }, + "RepositoryName": { + "description": "The name to use for the repository. The repository name may be specified on its own (such as ``nginx-web-app``) or it can be prepended with a namespace to group the repository into a category (such as ``project-a/nginx-web-app``). If you don't specify a name, CFNlong generates a unique physical ID and uses that ID for the repository name. For more information, see [Name type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).\n The repository name must start with a letter and can only contain lowercase letters, numbers, hyphens, underscores, and forward slashes.\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", + "maxLength": 256, + "minLength": 2, + "pattern": "^(?=.{2,256}$)((?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*)$", + "type": "string" + }, + "RepositoryPolicyText": { + "description": "The JSON repository policy text to apply to the repository. For more information, see [Amazon ECR repository policies](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html) in the *Amazon Elastic Container Registry User Guide*.", + "type": [ + "object", + "string" + ] + }, + "RepositoryUri": { + "description": "", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/RepositoryUri" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ecr:TagResource", + "ecr:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ECR::Repository", + "writeOnlyProperties": [ + "/properties/EmptyOnDelete" + ] +} diff --git a/src/schema/aws-ecr-repositorycreationtemplate.json b/src/schema/aws-ecr-repositorycreationtemplate.json index 97ea9070..d686f7e6 100644 --- a/src/schema/aws-ecr-repositorycreationtemplate.json +++ b/src/schema/aws-ecr-repositorycreationtemplate.json @@ -1,194 +1,197 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Prefix" - ], - "definitions": { - "AppliedForItem": { - "description": "Enumerable Strings representing the repository creation scenarios that the template will apply towards.", - "enum": [ - "REPLICATION", - "PULL_THROUGH_CACHE" - ], - "type": "string" - }, - "EncryptionConfiguration": { - "additionalProperties": false, - "description": "The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest. By default, when no encryption configuration is set or the AES256 encryption type is used, Amazon ECR uses server-side encryption with Amazon S3-managed encryption keys which encrypts your data at rest using an AES-256 encryption algorithm. This does not require any action on your part.\n\nFor more information, see https://docs.aws.amazon.com/AmazonECR/latest/userguide/encryption-at-rest.html", - "properties": { - "EncryptionType": { - "$ref": "#/definitions/EncryptionType" - }, - "KmsKey": { - "$ref": "#/definitions/KmsKey" - } - }, - "required": [ - "EncryptionType" - ], - "type": "object" - }, - "EncryptionType": { - "description": "The encryption type to use.", - "enum": [ - "AES256", - "KMS", - "KMS_DSSE" - ], - "type": "string" - }, - "KmsKey": { - "description": "If you use the KMS or KMS_DSSE encryption type, specify the CMK to use for encryption. The alias, key ID, or full ARN of the CMK can be specified. The key must exist in the same Region as the repository. If no key is specified, the default AWS managed CMK for Amazon ECR will be used.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "An array of key-value pairs to apply to this resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "AWS::ECR::RepositoryCreationTemplate is used to create repository with configuration from a pre-defined template.", - "handlers": { - "create": { - "permissions": [ - "ecr:CreateRepositoryCreationTemplate", - "ecr:PutLifecyclePolicy", - "ecr:SetRepositoryPolicy", - "ecr:CreateRepository", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "ecr:DeleteRepositoryCreationTemplate" - ] - }, - "list": { - "permissions": [ - "ecr:DescribeRepositoryCreationTemplates" - ] - }, - "read": { - "permissions": [ - "ecr:DescribeRepositoryCreationTemplates" - ] - }, - "update": { - "permissions": [ - "ecr:DescribeRepositoryCreationTemplates", - "ecr:UpdateRepositoryCreationTemplate", - "ecr:PutLifecyclePolicy", - "ecr:SetRepositoryPolicy", - "ecr:CreateRepository", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Prefix" - ], - "properties": { - "AppliedFor": { - "description": "A list of enumerable Strings representing the repository creation scenarios that the template will apply towards.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AppliedForItem" - }, - "type": "array", - "uniqueItems": true - }, - "CreatedAt": { - "description": "Create timestamp of the template.", - "type": "string" - }, - "CustomRoleArn": { - "description": "The ARN of the role to be assumed by ECR. This role must be in the same account as the registry that you are configuring.", - "maxLength": 2048, - "pattern": "^arn:aws[-a-z0-9]*:iam::[0-9]{12}:role/[A-Za-z0-9+=,-.@_]*$", - "type": "string" - }, - "Description": { - "description": "The description of the template.", - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "EncryptionConfiguration": { - "$ref": "#/definitions/EncryptionConfiguration" - }, - "ImageTagMutability": { - "description": "The image tag mutability setting for the repository.", - "enum": [ - "MUTABLE", - "IMMUTABLE" - ], - "type": "string" - }, - "LifecyclePolicy": { - "description": "The JSON lifecycle policy text to apply to the repository. For information about lifecycle policy syntax, see https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html", - "maxLength": 30720, - "minLength": 100, - "type": "string" - }, - "Prefix": { - "description": "The prefix use to match the repository name and apply the template.", - "maxLength": 256, - "minLength": 1, - "pattern": "^((?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*/?|ROOT)$", - "type": "string" - }, - "RepositoryPolicy": { - "description": "The JSON repository policy text to apply to the repository. For more information, see https://docs.aws.amazon.com/AmazonECR/latest/userguide/RepositoryPolicyExamples.html", - "type": "string" - }, - "ResourceTags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UpdatedAt": { - "description": "Update timestamp of the template.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/UpdatedAt" - ], - "required": [ - "Prefix", - "AppliedFor" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ECR::RepositoryCreationTemplate" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Prefix" + ], + "definitions": { + "AppliedForItem": { + "description": "Enumerable Strings representing the repository creation scenarios that the template will apply towards.", + "enum": [ + "REPLICATION", + "PULL_THROUGH_CACHE" + ], + "type": "string" + }, + "EncryptionConfiguration": { + "additionalProperties": false, + "description": "The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest.\n By default, when no encryption configuration is set or the ``AES256`` encryption type is used, Amazon ECR uses server-side encryption with Amazon S3-managed encryption keys which encrypts your data at rest using an AES256 encryption algorithm. This does not require any action on your part.\n For more control over the encryption of the contents of your repository, you can use server-side encryption with KMSlong key stored in KMSlong (KMS) to encrypt your images. For more information, see [Amazon ECR encryption at rest](https://docs.aws.amazon.com/AmazonECR/latest/userguide/encryption-at-rest.html) in the *Amazon Elastic Container Registry User Guide*.", + "properties": { + "EncryptionType": { + "$ref": "#/definitions/EncryptionType", + "description": "The encryption type to use.\n If you use the ``KMS`` encryption type, the contents of the repository will be encrypted using server-side encryption with KMSlong key stored in KMS. When you use KMS to encrypt your data, you can either use the default AWS managed KMS key for Amazon ECR, or specify your own KMS key, which you already created.\n If you use the ``KMS_DSSE`` encryption type, the contents of the repository will be encrypted with two layers of encryption using server-side encryption with the KMS Management Service key stored in KMS. Similar to the ``KMS`` encryption type, you can either use the default AWS managed KMS key for Amazon ECR, or specify your own KMS key, which you've already created. \n If you use the ``AES256`` encryption type, Amazon ECR uses server-side encryption with Amazon S3-managed encryption keys which encrypts the images in the repository using an AES256 encryption algorithm.\n For more information, see [Amazon ECR encryption at rest](https://docs.aws.amazon.com/AmazonECR/latest/userguide/encryption-at-rest.html) in the *Amazon Elastic Container Registry User Guide*." + }, + "KmsKey": { + "$ref": "#/definitions/KmsKey", + "description": "If you use the ``KMS`` encryption type, specify the KMS key to use for encryption. The alias, key ID, or full ARN of the KMS key can be specified. The key must exist in the same Region as the repository. If no key is specified, the default AWS managed KMS key for Amazon ECR will be used." + } + }, + "required": [ + "EncryptionType" + ], + "type": "object" + }, + "EncryptionType": { + "description": "The encryption type to use.", + "enum": [ + "AES256", + "KMS", + "KMS_DSSE" + ], + "type": "string" + }, + "KmsKey": { + "description": "If you use the KMS or KMS_DSSE encryption type, specify the CMK to use for encryption. The alias, key ID, or full ARN of the CMK can be specified. The key must exist in the same Region as the repository. If no key is specified, the default AWS managed CMK for Amazon ECR will be used.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "The metadata to apply to a resource to help you categorize and organize them. Each tag consists of a key and a value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.", + "properties": { + "Key": { + "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A ``value`` acts as a descriptor within a tag category (key).", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The details of the repository creation template associated with the request.", + "handlers": { + "create": { + "permissions": [ + "ecr:CreateRepositoryCreationTemplate", + "ecr:PutLifecyclePolicy", + "ecr:SetRepositoryPolicy", + "ecr:CreateRepository", + "iam:CreateServiceLinkedRole", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "ecr:DeleteRepositoryCreationTemplate" + ] + }, + "list": { + "permissions": [ + "ecr:DescribeRepositoryCreationTemplates" + ] + }, + "read": { + "permissions": [ + "ecr:DescribeRepositoryCreationTemplates" + ] + }, + "update": { + "permissions": [ + "ecr:DescribeRepositoryCreationTemplates", + "ecr:UpdateRepositoryCreationTemplate", + "ecr:PutLifecyclePolicy", + "ecr:SetRepositoryPolicy", + "ecr:CreateRepository", + "iam:CreateServiceLinkedRole", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Prefix" + ], + "properties": { + "AppliedFor": { + "description": "A list of enumerable Strings representing the repository creation scenarios that this template will apply towards. The two supported scenarios are PULL_THROUGH_CACHE and REPLICATION", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AppliedForItem" + }, + "type": "array", + "uniqueItems": true + }, + "CreatedAt": { + "description": "", + "type": "string" + }, + "CustomRoleArn": { + "description": "The ARN of the role to be assumed by Amazon ECR. Amazon ECR will assume your supplied role when the customRoleArn is specified. When this field isn't specified, Amazon ECR will use the service-linked role for the repository creation template.", + "maxLength": 2048, + "pattern": "^arn:aws[-a-z0-9]*:iam::[0-9]{12}:role/[A-Za-z0-9+=,-.@_]*$", + "type": "string" + }, + "Description": { + "description": "The description associated with the repository creation template.", + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration", + "description": "The encryption configuration associated with the repository creation template." + }, + "ImageTagMutability": { + "description": "The tag mutability setting for the repository. If this parameter is omitted, the default setting of MUTABLE will be used which will allow image tags to be overwritten. If IMMUTABLE is specified, all image tags within the repository will be immutable which will prevent them from being overwritten.", + "enum": [ + "MUTABLE", + "IMMUTABLE" + ], + "type": "string" + }, + "LifecyclePolicy": { + "description": "The lifecycle policy to use for repositories created using the template.", + "maxLength": 30720, + "minLength": 100, + "type": "string" + }, + "Prefix": { + "description": "The repository namespace prefix associated with the repository creation template.", + "maxLength": 256, + "minLength": 1, + "pattern": "^((?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*/?|ROOT)$", + "type": "string" + }, + "RepositoryPolicy": { + "description": "he repository policy to apply to repositories created using the template. A repository policy is a permissions policy associated with a repository to control access permissions.", + "type": "string" + }, + "ResourceTags": { + "description": "The metadata to apply to the repository to help you categorize and organize. Each tag consists of a key and an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UpdatedAt": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/UpdatedAt" + ], + "required": [ + "Prefix", + "AppliedFor" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ECR::RepositoryCreationTemplate" +} diff --git a/src/schema/aws-ecs-capacityprovider.json b/src/schema/aws-ecs-capacityprovider.json index d526d676..09159892 100644 --- a/src/schema/aws-ecs-capacityprovider.json +++ b/src/schema/aws-ecs-capacityprovider.json @@ -1,147 +1,147 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AutoScalingGroupProvider/AutoScalingGroupArn", - "/properties/Name" - ], - "definitions": { - "AutoScalingGroupProvider": { - "additionalProperties": false, - "properties": { - "AutoScalingGroupArn": { - "type": "string" - }, - "ManagedDraining": { - "enum": [ - "DISABLED", - "ENABLED" - ], - "type": "string" - }, - "ManagedScaling": { - "$ref": "#/definitions/ManagedScaling" - }, - "ManagedTerminationProtection": { - "enum": [ - "DISABLED", - "ENABLED" - ], - "type": "string" - } - }, - "required": [ - "AutoScalingGroupArn" - ], - "type": "object" - }, - "ManagedScaling": { - "additionalProperties": false, - "description": "The managed scaling settings for the Auto Scaling group capacity provider.", - "properties": { - "InstanceWarmupPeriod": { - "type": "integer" - }, - "MaximumScalingStepSize": { - "type": "integer" - }, - "MinimumScalingStepSize": { - "type": "integer" - }, - "Status": { - "enum": [ - "DISABLED", - "ENABLED" - ], - "type": "string" - }, - "TargetCapacity": { - "type": "integer" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "minLength": 1, - "type": "string" - }, - "Value": { - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ECS::CapacityProvider.", - "handlers": { - "create": { - "permissions": [ - "autoscaling:CreateOrUpdateTags", - "ecs:CreateCapacityProvider", - "ecs:DescribeCapacityProviders", - "ecs:TagResource" - ] - }, - "delete": { - "permissions": [ - "ecs:DescribeCapacityProviders", - "ecs:DeleteCapacityProvider" - ] - }, - "list": { - "permissions": [ - "ecs:DescribeCapacityProviders" - ] - }, - "read": { - "permissions": [ - "ecs:DescribeCapacityProviders" - ] - }, - "update": { - "permissions": [ - "ecs:UpdateCapacityProvider", - "ecs:DescribeCapacityProviders", - "ecs:ListTagsForResource", - "ecs:TagResource", - "ecs:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "AutoScalingGroupProvider": { - "$ref": "#/definitions/AutoScalingGroupProvider" - }, - "Name": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "propertyTransform": { - "/properties/AutoScalingGroupProvider/AutoScalingGroupArn": "$split(AutoScalingGroupProvider.AutoScalingGroupArn, \"autoScalingGroupName/\")[-1] $OR $split(AutoScalingGroupArn, \"autoScalingGroupName/\")[-1]" - }, - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ecs:TagResource", - "ecs:UntagResource", - "ecs:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ECS::CapacityProvider" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AutoScalingGroupProvider/AutoScalingGroupArn", + "/properties/Name" + ], + "definitions": { + "AutoScalingGroupProvider": { + "additionalProperties": false, + "properties": { + "AutoScalingGroupArn": { + "type": "string" + }, + "ManagedDraining": { + "enum": [ + "DISABLED", + "ENABLED" + ], + "type": "string" + }, + "ManagedScaling": { + "$ref": "#/definitions/ManagedScaling" + }, + "ManagedTerminationProtection": { + "enum": [ + "DISABLED", + "ENABLED" + ], + "type": "string" + } + }, + "required": [ + "AutoScalingGroupArn" + ], + "type": "object" + }, + "ManagedScaling": { + "additionalProperties": false, + "description": "The managed scaling settings for the Auto Scaling group capacity provider.", + "properties": { + "InstanceWarmupPeriod": { + "type": "integer" + }, + "MaximumScalingStepSize": { + "type": "integer" + }, + "MinimumScalingStepSize": { + "type": "integer" + }, + "Status": { + "enum": [ + "DISABLED", + "ENABLED" + ], + "type": "string" + }, + "TargetCapacity": { + "type": "integer" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "minLength": 1, + "type": "string" + }, + "Value": { + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ECS::CapacityProvider.", + "handlers": { + "create": { + "permissions": [ + "autoscaling:CreateOrUpdateTags", + "ecs:CreateCapacityProvider", + "ecs:DescribeCapacityProviders", + "ecs:TagResource" + ] + }, + "delete": { + "permissions": [ + "ecs:DescribeCapacityProviders", + "ecs:DeleteCapacityProvider" + ] + }, + "list": { + "permissions": [ + "ecs:DescribeCapacityProviders" + ] + }, + "read": { + "permissions": [ + "ecs:DescribeCapacityProviders" + ] + }, + "update": { + "permissions": [ + "ecs:UpdateCapacityProvider", + "ecs:DescribeCapacityProviders", + "ecs:ListTagsForResource", + "ecs:TagResource", + "ecs:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "AutoScalingGroupProvider": { + "$ref": "#/definitions/AutoScalingGroupProvider" + }, + "Name": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "propertyTransform": { + "/properties/AutoScalingGroupProvider/AutoScalingGroupArn": "$split(AutoScalingGroupProvider.AutoScalingGroupArn, \"autoScalingGroupName/\")[-1] $OR $split(AutoScalingGroupArn, \"autoScalingGroupName/\")[-1]" + }, + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ecs:TagResource", + "ecs:UntagResource", + "ecs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ECS::CapacityProvider" +} diff --git a/src/schema/aws-ecs-cluster.json b/src/schema/aws-ecs-cluster.json index 8a1dcc5e..d1babeb7 100644 --- a/src/schema/aws-ecs-cluster.json +++ b/src/schema/aws-ecs-cluster.json @@ -1,272 +1,272 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClusterName" - ], - "definitions": { - "CapacityProviderStrategyItem": { - "additionalProperties": false, - "description": "The ``CapacityProviderStrategyItem`` property specifies the details of the default capacity provider strategy for the cluster. When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used.", - "properties": { - "Base": { - "description": "The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.", - "type": "integer" - }, - "CapacityProvider": { - "description": "The short name of the capacity provider.", - "relationshipRef": { - "propertyPath": "/properties/Name", - "typeName": "AWS::ECS::CapacityProvider" - }, - "type": "string" - }, - "Weight": { - "description": "The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied.\n If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0``, any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail.\n An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1``, then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB*, then for every one task that's run using *capacityProviderA*, four tasks would use *capacityProviderB*.", - "type": "integer" - } - }, - "type": "object" - }, - "ClusterConfiguration": { - "additionalProperties": false, - "description": "The execute command and managed storage configuration for the cluster.", - "properties": { - "ExecuteCommandConfiguration": { - "$ref": "#/definitions/ExecuteCommandConfiguration", - "description": "The details of the execute command configuration." - }, - "ManagedStorageConfiguration": { - "$ref": "#/definitions/ManagedStorageConfiguration", - "description": "The details of the managed storage configuration." - } - }, - "type": "object" - }, - "ClusterSettings": { - "additionalProperties": false, - "description": "The settings to use when creating a cluster. This parameter is used to turn on CloudWatch Container Insights for a cluster.", - "properties": { - "Name": { - "description": "The name of the cluster setting. The value is ``containerInsights`` .", - "type": "string" - }, - "Value": { - "description": "The value to set for the cluster setting. The supported values are ``enabled`` and ``disabled``. \n If you set ``name`` to ``containerInsights`` and ``value`` to ``enabled``, CloudWatch Container Insights will be on for the cluster, otherwise it will be off unless the ``containerInsights`` account setting is turned on. If a cluster value is specified, it will override the ``containerInsights`` value set with [PutAccountSetting](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSetting.html) or [PutAccountSettingDefault](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSettingDefault.html).", - "type": "string" - } - }, - "type": "object" - }, - "ExecuteCommandConfiguration": { - "additionalProperties": false, - "description": "The details of the execute command configuration.", - "properties": { - "KmsKeyId": { - "description": "Specify an KMSlong key ID to encrypt the data between the local client and the container.", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::KMS::Key" - }, - "type": "string" - }, - "LogConfiguration": { - "$ref": "#/definitions/ExecuteCommandLogConfiguration", - "description": "The log configuration for the results of the execute command actions. The logs can be sent to CloudWatch Logs or an Amazon S3 bucket. When ``logging=OVERRIDE`` is specified, a ``logConfiguration`` must be provided." - }, - "Logging": { - "description": "The log setting to use for redirecting logs for your execute command results. The following log settings are available.\n + ``NONE``: The execute command session is not logged.\n + ``DEFAULT``: The ``awslogs`` configuration in the task definition is used. If no logging parameter is specified, it defaults to this value. If no ``awslogs`` log driver is configured in the task definition, the output won't be logged.\n + ``OVERRIDE``: Specify the logging details as a part of ``logConfiguration``. If the ``OVERRIDE`` logging option is specified, the ``logConfiguration`` is required.", - "type": "string" - } - }, - "type": "object" - }, - "ExecuteCommandLogConfiguration": { - "additionalProperties": false, - "description": "The log configuration for the results of the execute command actions. The logs can be sent to CloudWatch Logs or an Amazon S3 bucket.", - "properties": { - "CloudWatchEncryptionEnabled": { - "description": "Determines whether to use encryption on the CloudWatch logs. If not specified, encryption will be off.", - "type": "boolean" - }, - "CloudWatchLogGroupName": { - "description": "The name of the CloudWatch log group to send logs to.\n The CloudWatch log group must already be created.", - "relationshipRef": { - "propertyPath": "/properties/LogGroupName", - "typeName": "AWS::Logs::LogGroup" - }, - "type": "string" - }, - "S3BucketName": { - "description": "The name of the S3 bucket to send logs to.\n The S3 bucket must already be created.", - "type": "string" - }, - "S3EncryptionEnabled": { - "description": "Determines whether to use encryption on the S3 logs. If not specified, encryption is not used.", - "type": "boolean" - }, - "S3KeyPrefix": { - "description": "An optional folder in the S3 bucket to place logs in.", - "type": "string" - } - }, - "type": "object" - }, - "ManagedStorageConfiguration": { - "additionalProperties": false, - "description": "The managed storage configuration for the cluster.", - "properties": { - "FargateEphemeralStorageKmsKeyId": { - "description": "Specify the KMSlong key ID for the Fargate ephemeral storage.", - "type": "string" - }, - "KmsKeyId": { - "description": "Specify a KMSlong key ID to encrypt the managed storage.", - "type": "string" - } - }, - "type": "object" - }, - "ServiceConnectDefaults": { - "additionalProperties": false, - "description": "Use this parameter to set a default Service Connect namespace. After you set a default Service Connect namespace, any new services with Service Connect turned on that are created in the cluster are added as client services in the namespace. This setting only applies to new services that set the ``enabled`` parameter to ``true`` in the ``ServiceConnectConfiguration``. You can set the namespace of each service individually in the ``ServiceConnectConfiguration`` to override this default parameter.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", - "properties": { - "Namespace": { - "description": "The namespace name or full Amazon Resource Name (ARN) of the CMAPlong namespace that's used when you create a service and don't specify a Service Connect configuration. The namespace name can include up to 1024 characters. The name is case-sensitive. The name can't include hyphens (-), tilde (~), greater than (>), less than (<), or slash (/).\n If you enter an existing namespace name or ARN, then that namespace will be used. Any namespace type is supported. The namespace must be in this account and this AWS Region.\n If you enter a new name, a CMAPlong namespace will be created. Amazon ECS creates a CMAP namespace with the \"API calls\" method of instance discovery only. This instance discovery method is the \"HTTP\" namespace type in the CLIlong. Other types of instance discovery aren't used by Service Connect.\n If you update the cluster with an empty string ``\"\"`` for the namespace name, the cluster configuration for Service Connect is removed. Note that the namespace will remain in CMAP and must be deleted separately.\n For more information about CMAPlong, see [Working with Services](https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html) in the *Developer Guide*.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "The metadata that you apply to a resource to help you categorize and organize them. Each tag consists of a key and an optional value. You define them.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", - "properties": { - "Key": { - "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", - "type": "string" - }, - "Value": { - "description": "The optional part of a key-value pair that make up a tag. A ``value`` acts as a descriptor within a tag category (key).", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The ``AWS::ECS::Cluster`` resource creates an Amazon Elastic Container Service (Amazon ECS) cluster.", - "handlers": { - "create": { - "permissions": [ - "ecs:CreateCluster", - "ecs:DescribeClusters", - "iam:CreateServiceLinkedRole", - "ecs:TagResource", - "kms:DescribeKey" - ] - }, - "delete": { - "permissions": [ - "ecs:DeleteCluster", - "ecs:DescribeClusters", - "kms:DescribeKey" - ] - }, - "list": { - "permissions": [ - "ecs:DescribeClusters", - "ecs:ListClusters" - ] - }, - "read": { - "permissions": [ - "ecs:DescribeClusters", - "kms:DescribeKey" - ] - }, - "update": { - "permissions": [ - "ecs:PutAccountSettingDefault", - "ecs:DescribeClusters", - "ecs:TagResource", - "ecs:UntagResource", - "ecs:PutAccountSetting", - "ecs:ListTagsForResource", - "ecs:UpdateCluster", - "ecs:UpdateClusterSettings", - "ecs:PutClusterCapacityProviders", - "kms:DescribeKey" - ] - } - }, - "primaryIdentifier": [ - "/properties/ClusterName" - ], - "properties": { - "Arn": { - "description": "", - "type": "string" - }, - "CapacityProviders": { - "description": "The short name of one or more capacity providers to associate with the cluster. A capacity provider must be associated with a cluster before it can be included as part of the default capacity provider strategy of the cluster or used in a capacity provider strategy when calling the [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html) or [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) actions.\n If specifying a capacity provider that uses an Auto Scaling group, the capacity provider must be created but not associated with another cluster. New Auto Scaling group capacity providers can be created with the [CreateCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProvider.html) API operation.\n To use a FARGATElong capacity provider, specify either the ``FARGATE`` or ``FARGATE_SPOT`` capacity providers. The FARGATElong capacity providers are available to all accounts and only need to be associated with a cluster to be used.\n The [PutCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutCapacityProvider.html) API operation is used to update the list of available capacity providers for a cluster after the cluster is created.", - "items": { - "type": "string" - }, - "type": "array" - }, - "ClusterName": { - "description": "A user-generated string that you use to identify your cluster. If you don't specify a name, CFNlong generates a unique physical ID for the name.", - "type": "string" - }, - "ClusterSettings": { - "description": "The settings to use when creating a cluster. This parameter is used to turn on CloudWatch Container Insights for a cluster.", - "items": { - "$ref": "#/definitions/ClusterSettings" - }, - "type": "array" - }, - "Configuration": { - "$ref": "#/definitions/ClusterConfiguration", - "description": "The execute command and managed storage configuration for the cluster." - }, - "DefaultCapacityProviderStrategy": { - "description": "The default capacity provider strategy for the cluster. When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used.", - "items": { - "$ref": "#/definitions/CapacityProviderStrategyItem" - }, - "type": "array" - }, - "ServiceConnectDefaults": { - "$ref": "#/definitions/ServiceConnectDefaults", - "description": "Use this parameter to set a default Service Connect namespace. After you set a default Service Connect namespace, any new services with Service Connect turned on that are created in the cluster are added as client services in the namespace. This setting only applies to new services that set the ``enabled`` parameter to ``true`` in the ``ServiceConnectConfiguration``. You can set the namespace of each service individually in the ``ServiceConnectConfiguration`` to override this default parameter.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*." - }, - "Tags": { - "description": "The metadata that you apply to the cluster to help you categorize and organize them. Each tag consists of a key and an optional value. You define both.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "propertyTransform": { - "/properties/Configuration/ManagedStorageConfiguration/FargateEphemeralStorageKmsKeyId": "$join([\"arn:aws[-a-z]*:kms:[a-z0-9-]+:[0-9]{12}:key/\", FargateEphemeralStorageKmsKeyId])" - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ecs:TagResource", - "ecs:UntagResource", - "ecs:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ECS::Cluster", - "writeOnlyProperties": [ - "/properties/ServiceConnectDefaults" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterName" + ], + "definitions": { + "CapacityProviderStrategyItem": { + "additionalProperties": false, + "description": "The ``CapacityProviderStrategyItem`` property specifies the details of the default capacity provider strategy for the cluster. When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used.", + "properties": { + "Base": { + "description": "The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.", + "type": "integer" + }, + "CapacityProvider": { + "description": "The short name of the capacity provider.", + "relationshipRef": { + "propertyPath": "/properties/Name", + "typeName": "AWS::ECS::CapacityProvider" + }, + "type": "string" + }, + "Weight": { + "description": "The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied.\n If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0``, any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail.\n An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1``, then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB*, then for every one task that's run using *capacityProviderA*, four tasks would use *capacityProviderB*.", + "type": "integer" + } + }, + "type": "object" + }, + "ClusterConfiguration": { + "additionalProperties": false, + "description": "The execute command and managed storage configuration for the cluster.", + "properties": { + "ExecuteCommandConfiguration": { + "$ref": "#/definitions/ExecuteCommandConfiguration", + "description": "The details of the execute command configuration." + }, + "ManagedStorageConfiguration": { + "$ref": "#/definitions/ManagedStorageConfiguration", + "description": "The details of the managed storage configuration." + } + }, + "type": "object" + }, + "ClusterSettings": { + "additionalProperties": false, + "description": "The settings to use when creating a cluster. This parameter is used to turn on CloudWatch Container Insights with enhanced observability or CloudWatch Container Insights for a cluster.\n Container Insights with enhanced observability provides all the Container Insights metrics, plus additional task and container metrics. This version supports enhanced observability for Amazon ECS clusters using the Amazon EC2 and Fargate launch types. After you configure Container Insights with enhanced observability on Amazon ECS, Container Insights auto-collects detailed infrastructure telemetry from the cluster level down to the container level in your environment and displays these critical performance data in curated dashboards removing the heavy lifting in observability set-up. \n For more information, see [Monitor Amazon ECS containers using Container Insights with enhanced observability](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch-container-insights.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "Name": { + "description": "The name of the cluster setting. The value is ``containerInsights`` .", + "type": "string" + }, + "Value": { + "description": "The value to set for the cluster setting. The supported values are ``enhanced``, ``enabled``, and ``disabled``. \n To use Container Insights with enhanced observability, set the ``containerInsights`` account setting to ``enhanced``.\n To use Container Insights, set the ``containerInsights`` account setting to ``enabled``.\n If a cluster value is specified, it will override the ``containerInsights`` value set with [PutAccountSetting](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSetting.html) or [PutAccountSettingDefault](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSettingDefault.html).", + "type": "string" + } + }, + "type": "object" + }, + "ExecuteCommandConfiguration": { + "additionalProperties": false, + "description": "The details of the execute command configuration.", + "properties": { + "KmsKeyId": { + "description": "Specify an KMSlong key ID to encrypt the data between the local client and the container.", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::KMS::Key" + }, + "type": "string" + }, + "LogConfiguration": { + "$ref": "#/definitions/ExecuteCommandLogConfiguration", + "description": "The log configuration for the results of the execute command actions. The logs can be sent to CloudWatch Logs or an Amazon S3 bucket. When ``logging=OVERRIDE`` is specified, a ``logConfiguration`` must be provided." + }, + "Logging": { + "description": "The log setting to use for redirecting logs for your execute command results. The following log settings are available.\n + ``NONE``: The execute command session is not logged.\n + ``DEFAULT``: The ``awslogs`` configuration in the task definition is used. If no logging parameter is specified, it defaults to this value. If no ``awslogs`` log driver is configured in the task definition, the output won't be logged.\n + ``OVERRIDE``: Specify the logging details as a part of ``logConfiguration``. If the ``OVERRIDE`` logging option is specified, the ``logConfiguration`` is required.", + "type": "string" + } + }, + "type": "object" + }, + "ExecuteCommandLogConfiguration": { + "additionalProperties": false, + "description": "The log configuration for the results of the execute command actions. The logs can be sent to CloudWatch Logs or an Amazon S3 bucket.", + "properties": { + "CloudWatchEncryptionEnabled": { + "description": "Determines whether to use encryption on the CloudWatch logs. If not specified, encryption will be off.", + "type": "boolean" + }, + "CloudWatchLogGroupName": { + "description": "The name of the CloudWatch log group to send logs to.\n The CloudWatch log group must already be created.", + "relationshipRef": { + "propertyPath": "/properties/LogGroupName", + "typeName": "AWS::Logs::LogGroup" + }, + "type": "string" + }, + "S3BucketName": { + "description": "The name of the S3 bucket to send logs to.\n The S3 bucket must already be created.", + "type": "string" + }, + "S3EncryptionEnabled": { + "description": "Determines whether to use encryption on the S3 logs. If not specified, encryption is not used.", + "type": "boolean" + }, + "S3KeyPrefix": { + "description": "An optional folder in the S3 bucket to place logs in.", + "type": "string" + } + }, + "type": "object" + }, + "ManagedStorageConfiguration": { + "additionalProperties": false, + "description": "The managed storage configuration for the cluster.", + "properties": { + "FargateEphemeralStorageKmsKeyId": { + "description": "Specify the KMSlong key ID for the Fargate ephemeral storage.\n The key must be a single Region key.", + "type": "string" + }, + "KmsKeyId": { + "description": "Specify a KMSlong key ID to encrypt the managed storage.\n The key must be a single Region key.", + "type": "string" + } + }, + "type": "object" + }, + "ServiceConnectDefaults": { + "additionalProperties": false, + "description": "Use this parameter to set a default Service Connect namespace. After you set a default Service Connect namespace, any new services with Service Connect turned on that are created in the cluster are added as client services in the namespace. This setting only applies to new services that set the ``enabled`` parameter to ``true`` in the ``ServiceConnectConfiguration``. You can set the namespace of each service individually in the ``ServiceConnectConfiguration`` to override this default parameter.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "Namespace": { + "description": "The namespace name or full Amazon Resource Name (ARN) of the CMAPlong namespace that's used when you create a service and don't specify a Service Connect configuration. The namespace name can include up to 1024 characters. The name is case-sensitive. The name can't include greater than (>), less than (<), double quotation marks (\"), or slash (/).\n If you enter an existing namespace name or ARN, then that namespace will be used. Any namespace type is supported. The namespace must be in this account and this AWS Region.\n If you enter a new name, a CMAPlong namespace will be created. Amazon ECS creates a CMAP namespace with the \"API calls\" method of instance discovery only. This instance discovery method is the \"HTTP\" namespace type in the CLIlong. Other types of instance discovery aren't used by Service Connect.\n If you update the cluster with an empty string ``\"\"`` for the namespace name, the cluster configuration for Service Connect is removed. Note that the namespace will remain in CMAP and must be deleted separately.\n For more information about CMAPlong, see [Working with Services](https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html) in the *Developer Guide*.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "The metadata that you apply to a resource to help you categorize and organize them. Each tag consists of a key and an optional value. You define them.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", + "properties": { + "Key": { + "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", + "type": "string" + }, + "Value": { + "description": "The optional part of a key-value pair that make up a tag. A ``value`` acts as a descriptor within a tag category (key).", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The ``AWS::ECS::Cluster`` resource creates an Amazon Elastic Container Service (Amazon ECS) cluster.", + "handlers": { + "create": { + "permissions": [ + "ecs:CreateCluster", + "ecs:DescribeClusters", + "iam:CreateServiceLinkedRole", + "ecs:TagResource", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "ecs:DeleteCluster", + "ecs:DescribeClusters", + "kms:DescribeKey" + ] + }, + "list": { + "permissions": [ + "ecs:DescribeClusters", + "ecs:ListClusters" + ] + }, + "read": { + "permissions": [ + "ecs:DescribeClusters", + "kms:DescribeKey" + ] + }, + "update": { + "permissions": [ + "ecs:PutAccountSettingDefault", + "ecs:DescribeClusters", + "ecs:TagResource", + "ecs:UntagResource", + "ecs:PutAccountSetting", + "ecs:ListTagsForResource", + "ecs:UpdateCluster", + "ecs:UpdateClusterSettings", + "ecs:PutClusterCapacityProviders", + "kms:DescribeKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/ClusterName" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "CapacityProviders": { + "description": "The short name of one or more capacity providers to associate with the cluster. A capacity provider must be associated with a cluster before it can be included as part of the default capacity provider strategy of the cluster or used in a capacity provider strategy when calling the [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html) or [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) actions.\n If specifying a capacity provider that uses an Auto Scaling group, the capacity provider must be created but not associated with another cluster. New Auto Scaling group capacity providers can be created with the [CreateCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProvider.html) API operation.\n To use a FARGATElong capacity provider, specify either the ``FARGATE`` or ``FARGATE_SPOT`` capacity providers. The FARGATElong capacity providers are available to all accounts and only need to be associated with a cluster to be used.\n The [PutCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutCapacityProvider.html) API operation is used to update the list of available capacity providers for a cluster after the cluster is created.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ClusterName": { + "description": "A user-generated string that you use to identify your cluster. If you don't specify a name, CFNlong generates a unique physical ID for the name.", + "type": "string" + }, + "ClusterSettings": { + "description": "The settings to use when creating a cluster. This parameter is used to turn on CloudWatch Container Insights with enhanced observability or CloudWatch Container Insights for a cluster.\n Container Insights with enhanced observability provides all the Container Insights metrics, plus additional task and container metrics. This version supports enhanced observability for Amazon ECS clusters using the Amazon EC2 and Fargate launch types. After you configure Container Insights with enhanced observability on Amazon ECS, Container Insights auto-collects detailed infrastructure telemetry from the cluster level down to the container level in your environment and displays these critical performance data in curated dashboards removing the heavy lifting in observability set-up. \n For more information, see [Monitor Amazon ECS containers using Container Insights with enhanced observability](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch-container-insights.html) in the *Amazon Elastic Container Service Developer Guide*.", + "items": { + "$ref": "#/definitions/ClusterSettings" + }, + "type": "array" + }, + "Configuration": { + "$ref": "#/definitions/ClusterConfiguration", + "description": "The execute command and managed storage configuration for the cluster." + }, + "DefaultCapacityProviderStrategy": { + "description": "The default capacity provider strategy for the cluster. When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used.", + "items": { + "$ref": "#/definitions/CapacityProviderStrategyItem" + }, + "type": "array" + }, + "ServiceConnectDefaults": { + "$ref": "#/definitions/ServiceConnectDefaults", + "description": "Use this parameter to set a default Service Connect namespace. After you set a default Service Connect namespace, any new services with Service Connect turned on that are created in the cluster are added as client services in the namespace. This setting only applies to new services that set the ``enabled`` parameter to ``true`` in the ``ServiceConnectConfiguration``. You can set the namespace of each service individually in the ``ServiceConnectConfiguration`` to override this default parameter.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*." + }, + "Tags": { + "description": "The metadata that you apply to the cluster to help you categorize and organize them. Each tag consists of a key and an optional value. You define both.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "propertyTransform": { + "/properties/Configuration/ManagedStorageConfiguration/FargateEphemeralStorageKmsKeyId": "$join([\"arn:aws[-a-z]*:kms:[a-z0-9-]+:[0-9]{12}:key/\", FargateEphemeralStorageKmsKeyId])" + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ecs:TagResource", + "ecs:UntagResource", + "ecs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ECS::Cluster", + "writeOnlyProperties": [ + "/properties/ServiceConnectDefaults" + ] +} diff --git a/src/schema/aws-ecs-clustercapacityproviderassociations.json b/src/schema/aws-ecs-clustercapacityproviderassociations.json index ea71d897..9a060b06 100644 --- a/src/schema/aws-ecs-clustercapacityproviderassociations.json +++ b/src/schema/aws-ecs-clustercapacityproviderassociations.json @@ -1,128 +1,129 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Cluster" - ], - "definitions": { - "CapacityProvider": { - "anyOf": [ - { - "enum": [ - "FARGATE", - "FARGATE_SPOT" - ], - "type": "string" - }, - { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - ], - "description": "If using ec2 auto-scaling, the name of the associated capacity provider. Otherwise FARGATE, FARGATE_SPOT.", - "type": "string" - }, - "CapacityProviderStrategy": { - "additionalProperties": false, - "properties": { - "Base": { - "maximum": 100000, - "minimum": 0, - "type": "integer" - }, - "CapacityProvider": { - "$ref": "#/definitions/CapacityProvider" - }, - "Weight": { - "maximum": 1000, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "CapacityProvider" - ], - "type": "object" - }, - "CapacityProviders": { - "description": "List of capacity providers to associate with the cluster", - "items": { - "$ref": "#/definitions/CapacityProvider" - }, - "type": "array", - "uniqueItems": true - }, - "Cluster": { - "description": "The name of the cluster", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "DefaultCapacityProviderStrategy": { - "description": "List of capacity providers to associate with the cluster", - "items": { - "$ref": "#/definitions/CapacityProviderStrategy" - }, - "type": "array" - } - }, - "description": "Associate a set of ECS Capacity Providers with a specified ECS Cluster", - "handlers": { - "create": { - "permissions": [ - "ecs:DescribeClusters", - "ecs:PutClusterCapacityProviders" - ] - }, - "delete": { - "permissions": [ - "ecs:PutClusterCapacityProviders", - "ecs:DescribeClusters" - ] - }, - "list": { - "permissions": [ - "ecs:DescribeClusters", - "ecs:ListClusters" - ] - }, - "read": { - "permissions": [ - "ecs:DescribeClusters" - ] - }, - "update": { - "permissions": [ - "ecs:DescribeClusters", - "ecs:PutClusterCapacityProviders" - ] - } - }, - "primaryIdentifier": [ - "/properties/Cluster" - ], - "properties": { - "CapacityProviders": { - "$ref": "#/definitions/CapacityProviders" - }, - "Cluster": { - "$ref": "#/definitions/Cluster" - }, - "DefaultCapacityProviderStrategy": { - "$ref": "#/definitions/DefaultCapacityProviderStrategy" - } - }, - "required": [ - "CapacityProviders", - "Cluster", - "DefaultCapacityProviderStrategy" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ECS::ClusterCapacityProviderAssociations" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Cluster" + ], + "definitions": { + "CapacityProvider": { + "anyOf": [ + { + "enum": [ + "FARGATE", + "FARGATE_SPOT" + ], + "type": "string" + }, + { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + ], + "description": "If using ec2 auto-scaling, the name of the associated capacity provider. Otherwise FARGATE, FARGATE_SPOT.", + "type": "string" + }, + "CapacityProviderStrategy": { + "additionalProperties": false, + "properties": { + "Base": { + "maximum": 100000, + "minimum": 0, + "type": "integer" + }, + "CapacityProvider": { + "$ref": "#/definitions/CapacityProvider" + }, + "Weight": { + "maximum": 1000, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "CapacityProvider" + ], + "type": "object" + }, + "CapacityProviders": { + "description": "List of capacity providers to associate with the cluster", + "items": { + "$ref": "#/definitions/CapacityProvider" + }, + "type": "array", + "uniqueItems": true + }, + "Cluster": { + "description": "The name of the cluster", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DefaultCapacityProviderStrategy": { + "description": "List of capacity providers to associate with the cluster", + "items": { + "$ref": "#/definitions/CapacityProviderStrategy" + }, + "type": "array" + } + }, + "description": "Associate a set of ECS Capacity Providers with a specified ECS Cluster", + "handlers": { + "create": { + "permissions": [ + "ecs:DescribeClusters", + "ecs:PutClusterCapacityProviders", + "ecs:DescribeCapacityProviders" + ] + }, + "delete": { + "permissions": [ + "ecs:PutClusterCapacityProviders", + "ecs:DescribeClusters" + ] + }, + "list": { + "permissions": [ + "ecs:DescribeClusters", + "ecs:ListClusters" + ] + }, + "read": { + "permissions": [ + "ecs:DescribeClusters" + ] + }, + "update": { + "permissions": [ + "ecs:DescribeClusters", + "ecs:PutClusterCapacityProviders" + ] + } + }, + "primaryIdentifier": [ + "/properties/Cluster" + ], + "properties": { + "CapacityProviders": { + "$ref": "#/definitions/CapacityProviders" + }, + "Cluster": { + "$ref": "#/definitions/Cluster" + }, + "DefaultCapacityProviderStrategy": { + "$ref": "#/definitions/DefaultCapacityProviderStrategy" + } + }, + "required": [ + "CapacityProviders", + "Cluster", + "DefaultCapacityProviderStrategy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ECS::ClusterCapacityProviderAssociations" +} diff --git a/src/schema/aws-ecs-primarytaskset.json b/src/schema/aws-ecs-primarytaskset.json index ead9ca33..c1889ac8 100644 --- a/src/schema/aws-ecs-primarytaskset.json +++ b/src/schema/aws-ecs-primarytaskset.json @@ -1,59 +1,59 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Cluster", - "/properties/Service" - ], - "description": "A pseudo-resource that manages which of your ECS task sets is primary.", - "handlers": { - "create": { - "permissions": [ - "ecs:DescribeTaskSets", - "ecs:UpdateServicePrimaryTaskSet" - ] - }, - "delete": { - "permissions": [] - }, - "read": { - "permissions": [] - }, - "update": { - "permissions": [ - "ecs:DescribeTaskSets", - "ecs:UpdateServicePrimaryTaskSet" - ] - } - }, - "primaryIdentifier": [ - "/properties/Cluster", - "/properties/Service" - ], - "properties": { - "Cluster": { - "description": "The short name or full Amazon Resource Name (ARN) of the cluster that hosts the service to create the task set in.", - "type": "string" - }, - "Service": { - "description": "The short name or full Amazon Resource Name (ARN) of the service to create the task set in.", - "type": "string" - }, - "TaskSetId": { - "description": "The ID or full Amazon Resource Name (ARN) of the task set.", - "type": "string" - } - }, - "required": [ - "Cluster", - "Service", - "TaskSetId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecs.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ECS::PrimaryTaskSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Cluster", + "/properties/Service" + ], + "description": "A pseudo-resource that manages which of your ECS task sets is primary.", + "handlers": { + "create": { + "permissions": [ + "ecs:DescribeTaskSets", + "ecs:UpdateServicePrimaryTaskSet" + ] + }, + "delete": { + "permissions": [] + }, + "read": { + "permissions": [] + }, + "update": { + "permissions": [ + "ecs:DescribeTaskSets", + "ecs:UpdateServicePrimaryTaskSet" + ] + } + }, + "primaryIdentifier": [ + "/properties/Cluster", + "/properties/Service" + ], + "properties": { + "Cluster": { + "description": "The short name or full Amazon Resource Name (ARN) of the cluster that hosts the service to create the task set in.", + "type": "string" + }, + "Service": { + "description": "The short name or full Amazon Resource Name (ARN) of the service to create the task set in.", + "type": "string" + }, + "TaskSetId": { + "description": "The ID or full Amazon Resource Name (ARN) of the task set.", + "type": "string" + } + }, + "required": [ + "Cluster", + "Service", + "TaskSetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecs.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ECS::PrimaryTaskSet" +} diff --git a/src/schema/aws-ecs-service.json b/src/schema/aws-ecs-service.json index 8d5b15af..d1924e4d 100644 --- a/src/schema/aws-ecs-service.json +++ b/src/schema/aws-ecs-service.json @@ -1,786 +1,790 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Cluster", - "/properties/DeploymentController", - "/properties/LaunchType", - "/properties/Role", - "/properties/SchedulingStrategy", - "/properties/ServiceName" - ], - "definitions": { - "AwsVpcConfiguration": { - "additionalProperties": false, - "description": "An object representing the networking details for a task or service. For example ``awsVpcConfiguration={subnets=[\"subnet-12344321\"],securityGroups=[\"sg-12344321\"]}``.", - "properties": { - "AssignPublicIp": { - "description": "Whether the task's elastic network interface receives a public IP address. The default value is ``DISABLED``.", - "enum": [ - "DISABLED", - "ENABLED" - ], - "type": "string" - }, - "SecurityGroups": { - "description": "The IDs of the security groups associated with the task or service. If you don't specify a security group, the default security group for the VPC is used. There's a limit of 5 security groups that can be specified per ``awsvpcConfiguration``.\n All specified security groups must be from the same VPC.", - "items": { - "type": "string" - }, - "type": "array" - }, - "Subnets": { - "description": "The IDs of the subnets associated with the task or service. There's a limit of 16 subnets that can be specified per ``awsvpcConfiguration``.\n All specified subnets must be from the same VPC.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "CapacityProviderStrategyItem": { - "additionalProperties": false, - "description": "The details of a capacity provider strategy. A capacity provider strategy can be set when using the ``RunTask`` or ``CreateService`` APIs or as the default capacity provider strategy for a cluster with the ``CreateCluster`` API.\n Only capacity providers that are already associated with a cluster and have an ``ACTIVE`` or ``UPDATING`` status can be used in a capacity provider strategy. The ``PutClusterCapacityProviders`` API is used to associate a capacity provider with a cluster.\n If specifying a capacity provider that uses an Auto Scaling group, the capacity provider must already be created. New Auto Scaling group capacity providers can be created with the ``CreateCapacityProvider`` API operation.\n To use an FARGATElong capacity provider, specify either the ``FARGATE`` or ``FARGATE_SPOT`` capacity providers. The FARGATElong capacity providers are available to all accounts and only need to be associated with a cluster to be used in a capacity provider strategy.", - "properties": { - "Base": { - "description": "The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.", - "type": "integer" - }, - "CapacityProvider": { - "description": "The short name of the capacity provider.", - "type": "string" - }, - "Weight": { - "description": "The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied.\n If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0``, any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail.\n An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1``, then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB*, then for every one task that's run using *capacityProviderA*, four tasks would use *capacityProviderB*.", - "type": "integer" - } - }, - "type": "object" - }, - "DeploymentAlarms": { - "additionalProperties": false, - "description": "One of the methods which provide a way for you to quickly identify when a deployment has failed, and then to optionally roll back the failure to the last working deployment.\n When the alarms are generated, Amazon ECS sets the service deployment to failed. Set the rollback parameter to have Amazon ECS to roll back your service to the last completed deployment after a failure.\n You can only use the ``DeploymentAlarms`` method to detect failures when the ``DeploymentController`` is set to ``ECS`` (rolling update).\n For more information, see [Rolling update](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html) in the *Amazon Elastic Container Service Developer Guide*.", - "properties": { - "AlarmNames": { - "description": "One or more CloudWatch alarm names. Use a \",\" to separate the alarms.", - "items": { - "type": "string" - }, - "type": "array" - }, - "Enable": { - "description": "Determines whether to use the CloudWatch alarm option in the service deployment process.", - "type": "boolean" - }, - "Rollback": { - "description": "Determines whether to configure Amazon ECS to roll back the service if a service deployment fails. If rollback is used, when a service deployment fails, the service is rolled back to the last deployment that completed successfully.", - "type": "boolean" - } - }, - "required": [ - "AlarmNames", - "Rollback", - "Enable" - ], - "type": "object" - }, - "DeploymentCircuitBreaker": { - "additionalProperties": false, - "description": "The deployment circuit breaker can only be used for services using the rolling update (``ECS``) deployment type.\n The *deployment circuit breaker* determines whether a service deployment will fail if the service can't reach a steady state. If it is turned on, a service deployment will transition to a failed state and stop launching new tasks. You can also configure Amazon ECS to roll back your service to the last completed deployment after a failure. For more information, see [Rolling update](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html) in the *Amazon Elastic Container Service Developer Guide*.\n For more information about API failure reasons, see [API failure reasons](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/api_failures_messages.html) in the *Amazon Elastic Container Service Developer Guide*.", - "properties": { - "Enable": { - "description": "Determines whether to use the deployment circuit breaker logic for the service.", - "type": "boolean" - }, - "Rollback": { - "description": "Determines whether to configure Amazon ECS to roll back the service if a service deployment fails. If rollback is on, when a service deployment fails, the service is rolled back to the last deployment that completed successfully.", - "type": "boolean" - } - }, - "required": [ - "Enable", - "Rollback" - ], - "type": "object" - }, - "DeploymentConfiguration": { - "additionalProperties": false, - "description": "Optional deployment parameters that control how many tasks run during a deployment and the ordering of stopping and starting tasks.", - "properties": { - "Alarms": { - "$ref": "#/definitions/DeploymentAlarms", - "description": "Information about the CloudWatch alarms." - }, - "DeploymentCircuitBreaker": { - "$ref": "#/definitions/DeploymentCircuitBreaker", - "description": "The deployment circuit breaker can only be used for services using the rolling update (``ECS``) deployment type.\n The *deployment circuit breaker* determines whether a service deployment will fail if the service can't reach a steady state. If you use the deployment circuit breaker, a service deployment will transition to a failed state and stop launching new tasks. If you use the rollback option, when a service deployment fails, the service is rolled back to the last deployment that completed successfully. For more information, see [Rolling update](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html) in the *Amazon Elastic Container Service Developer Guide*" - }, - "MaximumPercent": { - "description": "If a service is using the rolling update (``ECS``) deployment type, the ``maximumPercent`` parameter represents an upper limit on the number of your service's tasks that are allowed in the ``RUNNING`` or ``PENDING`` state during a deployment, as a percentage of the ``desiredCount`` (rounded down to the nearest integer). This parameter enables you to define the deployment batch size. For example, if your service is using the ``REPLICA`` service scheduler and has a ``desiredCount`` of four tasks and a ``maximumPercent`` value of 200%, the scheduler may start four new tasks before stopping the four older tasks (provided that the cluster resources required to do this are available). The default ``maximumPercent`` value for a service using the ``REPLICA`` service scheduler is 200%.\n If a service is using either the blue/green (``CODE_DEPLOY``) or ``EXTERNAL`` deployment types, and tasks in the service use the EC2 launch type, the *maximum percent* value is set to the default value. The *maximum percent* value is used to define the upper limit on the number of the tasks in the service that remain in the ``RUNNING`` state while the container instances are in the ``DRAINING`` state.\n You can't specify a custom ``maximumPercent`` value for a service that uses either the blue/green (``CODE_DEPLOY``) or ``EXTERNAL`` deployment types and has tasks that use the EC2 launch type.\n If the tasks in the service use the Fargate launch type, the maximum percent value is not used, although it is returned when describing your service.", - "type": "integer" - }, - "MinimumHealthyPercent": { - "description": "If a service is using the rolling update (``ECS``) deployment type, the ``minimumHealthyPercent`` represents a lower limit on the number of your service's tasks that must remain in the ``RUNNING`` state during a deployment, as a percentage of the ``desiredCount`` (rounded up to the nearest integer). This parameter enables you to deploy without using additional cluster capacity. For example, if your service has a ``desiredCount`` of four tasks and a ``minimumHealthyPercent`` of 50%, the service scheduler may stop two existing tasks to free up cluster capacity before starting two new tasks. \n For services that *do not* use a load balancer, the following should be noted:\n + A service is considered healthy if all essential containers within the tasks in the service pass their health checks.\n + If a task has no essential containers with a health check defined, the service scheduler will wait for 40 seconds after a task reaches a ``RUNNING`` state before the task is counted towards the minimum healthy percent total.\n + If a task has one or more essential containers with a health check defined, the service scheduler will wait for the task to reach a healthy status before counting it towards the minimum healthy percent total. A task is considered healthy when all essential containers within the task have passed their health checks. The amount of time the service scheduler can wait for is determined by the container health check settings. \n \n For services that *do* use a load balancer, the following should be noted:\n + If a task has no essential containers with a health check defined, the service scheduler will wait for the load balancer target group health check to return a healthy status before counting the task towards the minimum healthy percent total.\n + If a task has an essential container with a health check defined, the service scheduler will wait for both the task to reach a healthy status and the load balancer target group health check to return a healthy status before counting the task towards the minimum healthy percent total.\n \n The default value for a replica service for ``minimumHealthyPercent`` is 100%. The default ``minimumHealthyPercent`` value for a service using the ``DAEMON`` service schedule is 0% for the CLI, the AWS SDKs, and the APIs and 50% for the AWS Management Console.\n The minimum number of healthy tasks during a deployment is the ``desiredCount`` multiplied by the ``minimumHealthyPercent``/100, rounded up to the nearest integer value.\n If a service is using either the blue/green (``CODE_DEPLOY``) or ``EXTERNAL`` deployment types and is running tasks that use the EC2 launch type, the *minimum healthy percent* value is set to the default value. The *minimum healthy percent* value is used to define the lower limit on the number of the tasks in the service that remain in the ``RUNNING`` state while the container instances are in the ``DRAINING`` state.\n You can't specify a custom ``minimumHealthyPercent`` value for a service that uses either the blue/green (``CODE_DEPLOY``) or ``EXTERNAL`` deployment types and has tasks that use the EC2 launch type.\n If a service is using either the blue/green (``CODE_DEPLOY``) or ``EXTERNAL`` deployment types and is running tasks that use the Fargate launch type, the minimum healthy percent value is not used, although it is returned when describing your service.", - "type": "integer" - } - }, - "type": "object" - }, - "DeploymentController": { - "additionalProperties": false, - "description": "The deployment controller to use for the service. For more information, see [Amazon ECS deployment types](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html) in the *Amazon Elastic Container Service Developer Guide*.", - "properties": { - "Type": { - "description": "The deployment controller type to use. There are three deployment controller types available:\n + ECS The rolling update (ECS) deployment type involves replacing the current running version of the container with the latest version. The number of containers Amazon ECS adds or removes from the service during a rolling update is controlled by adjusting the minimum and maximum number of healthy tasks allowed during a service deployment, as specified in the DeploymentConfiguration. + CODE_DEPLOY The blue/green (CODE_DEPLOY) deployment type uses the blue/green deployment model powered by , which allows you to verify a new deployment of a service before sending production traffic to it. + EXTERNAL The external (EXTERNAL) deployment type enables you to use any third-party deployment controller for full control over the deployment process for an Amazon ECS service.", - "enum": [ - "CODE_DEPLOY", - "ECS", - "EXTERNAL" - ], - "type": "string" - } - }, - "type": "object" - }, - "EBSTagSpecification": { - "additionalProperties": false, - "description": "The tag specifications of an Amazon EBS volume.", - "properties": { - "PropagateTags": { - "description": "Determines whether to propagate the tags from the task definition to \u2028the Amazon EBS volume. Tags can only propagate to a ``SERVICE`` specified in \u2028``ServiceVolumeConfiguration``. If no value is specified, the tags aren't \u2028propagated.", - "enum": [ - "SERVICE", - "TASK_DEFINITION" - ], - "type": "string" - }, - "ResourceType": { - "description": "The type of volume resource.", - "type": "string" - }, - "Tags": { - "description": "The tags applied to this Amazon EBS volume. ``AmazonECSCreated`` and ``AmazonECSManaged`` are reserved tags that can't be used.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "required": [ - "ResourceType" - ], - "type": "object" - }, - "LoadBalancer": { - "additionalProperties": false, - "description": "The ``LoadBalancer`` property specifies details on a load balancer that is used with a service.\n If the service is using the ``CODE_DEPLOY`` deployment controller, the service is required to use either an Application Load Balancer or Network Load Balancer. When you are creating an ACDlong deployment group, you specify two target groups (referred to as a ``targetGroupPair``). Each target group binds to a separate task set in the deployment. The load balancer can also have up to two listeners, a required listener for production traffic and an optional listener that allows you to test new revisions of the service before routing production traffic to it.\n Services with tasks that use the ``awsvpc`` network mode (for example, those with the Fargate launch type) only support Application Load Balancers and Network Load Balancers. Classic Load Balancers are not supported. Also, when you create any target groups for these services, you must choose ``ip`` as the target type, not ``instance``. Tasks that use the ``awsvpc`` network mode are associated with an elastic network interface, not an Amazon EC2 instance.", - "properties": { - "ContainerName": { - "description": "The name of the container (as it appears in a container definition) to associate with the load balancer.\n You need to specify the container name when configuring the target group for an Amazon ECS load balancer.", - "type": "string" - }, - "ContainerPort": { - "description": "The port on the container to associate with the load balancer. This port must correspond to a ``containerPort`` in the task definition the tasks in the service are using. For tasks that use the EC2 launch type, the container instance they're launched on must allow ingress traffic on the ``hostPort`` of the port mapping.", - "type": "integer" - }, - "LoadBalancerName": { - "description": "The name of the load balancer to associate with the Amazon ECS service or task set.\n If you are using an Application Load Balancer or a Network Load Balancer the load balancer name parameter should be omitted.", - "type": "string" - }, - "TargetGroupArn": { - "description": "The full Amazon Resource Name (ARN) of the Elastic Load Balancing target group or groups associated with a service or task set.\n A target group ARN is only specified when using an Application Load Balancer or Network Load Balancer. \n For services using the ``ECS`` deployment controller, you can specify one or multiple target groups. For more information, see [Registering multiple target groups with a service](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/register-multiple-targetgroups.html) in the *Amazon Elastic Container Service Developer Guide*.\n For services using the ``CODE_DEPLOY`` deployment controller, you're required to define two target groups for the load balancer. For more information, see [Blue/green deployment with CodeDeploy](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-bluegreen.html) in the *Amazon Elastic Container Service Developer Guide*.\n If your service's task definition uses the ``awsvpc`` network mode, you must choose ``ip`` as the target type, not ``instance``. Do this when creating your target groups because tasks that use the ``awsvpc`` network mode are associated with an elastic network interface, not an Amazon EC2 instance. This network mode is required for the Fargate launch type.", - "type": "string" - } - }, - "type": "object" - }, - "LogConfiguration": { - "additionalProperties": false, - "description": "The log configuration for the container. This parameter maps to ``LogConfig`` in the docker container create command and the ``--log-driver`` option to docker run.\n By default, containers use the same logging driver that the Docker daemon uses. However, the container might use a different logging driver than the Docker daemon by specifying a log driver configuration in the container definition.\n Understand the following when specifying a log configuration for your containers.\n + Amazon ECS currently supports a subset of the logging drivers available to the Docker daemon. Additional log drivers may be available in future releases of the Amazon ECS container agent.\n For tasks on FARGATElong, the supported log drivers are ``awslogs``, ``splunk``, and ``awsfirelens``.\n For tasks hosted on Amazon EC2 instances, the supported log drivers are ``awslogs``, ``fluentd``, ``gelf``, ``json-file``, ``journald``,``syslog``, ``splunk``, and ``awsfirelens``.\n + This parameter requires version 1.18 of the Docker Remote API or greater on your container instance.\n + For tasks that are hosted on Amazon EC2 instances, the Amazon ECS container agent must register the available logging drivers with the ``ECS_AVAILABLE_LOGGING_DRIVERS`` environment variable before containers placed on that instance can use these log configuration options. For more information, see [Amazon ECS container agent configuration](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html) in the *Amazon Elastic Container Service Developer Guide*.\n + For tasks that are on FARGATElong, because you don't have access to the underlying infrastructure your tasks are hosted on, any additional software needed must be installed outside of the task. For example, the Fluentd output aggregators or a remote host running Logstash to send Gelf logs to.", - "properties": { - "LogDriver": { - "description": "The log driver to use for the container.\n For tasks on FARGATElong, the supported log drivers are ``awslogs``, ``splunk``, and ``awsfirelens``.\n For tasks hosted on Amazon EC2 instances, the supported log drivers are ``awslogs``, ``fluentd``, ``gelf``, ``json-file``, ``journald``, ``syslog``, ``splunk``, and ``awsfirelens``.\n For more information about using the ``awslogs`` log driver, see [Send Amazon ECS logs to CloudWatch](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html) in the *Amazon Elastic Container Service Developer Guide*.\n For more information about using the ``awsfirelens`` log driver, see [Send Amazon ECS logs to an service or Partner](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html).\n If you have a custom driver that isn't listed, you can fork the Amazon ECS container agent project that's [available on GitHub](https://docs.aws.amazon.com/https://github.com/aws/amazon-ecs-agent) and customize it to work with that driver. We encourage you to submit pull requests for changes that you would like to have included. However, we don't currently provide support for running modified copies of this software.", - "type": "string" - }, - "Options": { - "additionalProperties": false, - "description": "The configuration options to send to the log driver.\n The options you can specify depend on the log driver. Some of the options you can specify when you use the ``awslogs`` log driver to route logs to Amazon CloudWatch include the following:\n + awslogs-create-group Required: No Specify whether you want the log group to be created automatically. If this option isn't specified, it defaults to false. Your IAM policy must include the logs:CreateLogGroup permission before you attempt to use awslogs-create-group. + awslogs-region Required: Yes Specify the Region that the awslogs log driver is to send your Docker logs to. You can choose to send all of your logs from clusters in different Regions to a single region in CloudWatch Logs. This is so that they're all visible in one location. Otherwise, you can separate them by Region for more granularity. Make sure that the specified log group exists in the Region that you specify with this option. + awslogs-group Required: Yes Make sure to specify a log group that the awslogs log driver sends its log streams to. + awslogs-stream-prefix Required: Yes, when using the Fargate launch type.Optional for the EC2 launch type, required for the Fargate launch type. Use the awslogs-stream-prefix option to associate a log stream with the specified prefix, the container name, and the ID of the Amazon ECS task that the container belongs to. If you specify a prefix with this option, then the log stream takes the format prefix-name/container-name/ecs-task-id. If you don't specify a prefix with this option, then the log stream is named after the container ID that's assigned by the Docker daemon on the container instance. Because it's difficult to trace logs back to the container that sent them with just the Docker container ID (which is only available on the container instance), we recommend that you specify a prefix with this option. For Amazon ECS services, you can use the service name as the prefix. Doing so, you can trace log streams to the service that the container belongs to, the name of the container that sent them, and the ID of the task that the container belongs to. You must specify a stream-prefix for your logs to have your logs appear in the Log pane when using the Amazon ECS console. + awslogs-datetime-format Required: No This option defines a multiline start pattern in Python strftime format. A log message consists of a line that matches the pattern and any following lines that don\u2019t match the pattern. The matched line is the delimiter between log messages. One example of a use case for using this format is for parsing output such as a stack dump, which might otherwise be logged in multiple entries. The correct pattern allows it to be captured in a single entry. For more information, see awslogs-datetime-format. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + awslogs-multiline-pattern Required: No This option defines a multiline start pattern that uses a regular expression. A log message consists of a line that matches the pattern and any following lines that don\u2019t match the pattern. The matched line is the delimiter between log messages. For more information, see awslogs-multiline-pattern. This option is ignored if awslogs-datetime-format is also configured. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + mode Required: No Valid values: non-blocking | blocking This option defines the delivery mode of log messages from the container to CloudWatch Logs. The delivery mode you choose affects application availability when the flow of logs from container to CloudWatch is interrupted. If you use the blocking mode and the flow of logs to CloudWatch is interrupted, calls from container code to write to the stdout and stderr streams will block. The logging thread of the application will block as a result. This may cause the application to become unresponsive and lead to container healthcheck failure. If you use the non-blocking mode, the container's logs are instead stored in an in-memory intermediate buffer configured with the max-buffer-size option. This prevents the application from becoming unresponsive when logs cannot be sent to CloudWatch. We recommend using this mode if you want to ensure service availability and are okay with some log loss. For more information, see Preventing log loss with non-blocking mode in the awslogs container log driver. + max-buffer-size Required: No Default value: 1m When non-blocking mode is used, the max-buffer-size log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost. \n To route logs using the ``splunk`` log router, you need to specify a ``splunk-token`` and a ``splunk-url``.\n When you use the ``awsfirelens`` log router to route logs to an AWS Service or AWS Partner Network destination for log storage and analytics, you can set the ``log-driver-buffer-limit`` option to limit the number of events that are buffered in memory, before being sent to the log router container. It can help to resolve potential log loss issue because high throughput might result in memory running out for the buffer inside of Docker.\n Other options you can specify when using ``awsfirelens`` to route logs depend on the destination. When you export logs to Amazon Data Firehose, you can specify the AWS Region with ``region`` and a name for the log stream with ``delivery_stream``.\n When you export logs to Amazon Kinesis Data Streams, you can specify an AWS Region with ``region`` and a data stream name with ``stream``.\n When you export logs to Amazon OpenSearch Service, you can specify options like ``Name``, ``Host`` (OpenSearch Service endpoint without protocol), ``Port``, ``Index``, ``Type``, ``Aws_auth``, ``Aws_region``, ``Suppress_Type_Name``, and ``tls``.\n When you export logs to Amazon S3, you can specify the bucket using the ``bucket`` option. You can also specify ``region``, ``total_file_size``, ``upload_timeout``, and ``use_put_object`` as options.\n This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "SecretOptions": { - "description": "The secrets to pass to the log configuration. For more information, see [Specifying sensitive data](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html) in the *Amazon Elastic Container Service Developer Guide*.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Secret" - }, - "type": "array" - } - }, - "type": "object" - }, - "NetworkConfiguration": { - "additionalProperties": false, - "description": "The network configuration for a task or service.", - "properties": { - "AwsvpcConfiguration": { - "$ref": "#/definitions/AwsVpcConfiguration", - "description": "The VPC subnets and security groups that are associated with a task.\n All specified subnets and security groups must be from the same VPC." - } - }, - "type": "object" - }, - "PlacementConstraint": { - "additionalProperties": false, - "description": "An object representing a constraint on task placement. For more information, see [Task placement constraints](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html) in the *Amazon Elastic Container Service Developer Guide*.\n If you're using the Fargate launch type, task placement constraints aren't supported.", - "properties": { - "Expression": { - "description": "A cluster query language expression to apply to the constraint. The expression can have a maximum length of 2000 characters. You can't specify an expression if the constraint type is ``distinctInstance``. For more information, see [Cluster query language](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html) in the *Amazon Elastic Container Service Developer Guide*.", - "type": "string" - }, - "Type": { - "description": "The type of constraint. Use ``distinctInstance`` to ensure that each task in a particular group is running on a different container instance. Use ``memberOf`` to restrict the selection to a group of valid candidates.", - "enum": [ - "distinctInstance", - "memberOf" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "PlacementStrategy": { - "additionalProperties": false, - "description": "The task placement strategy for a task or service. For more information, see [Task placement strategies](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-strategies.html) in the *Amazon Elastic Container Service Developer Guide*.", - "properties": { - "Field": { - "description": "The field to apply the placement strategy against. For the ``spread`` placement strategy, valid values are ``instanceId`` (or ``host``, which has the same effect), or any platform or custom attribute that's applied to a container instance, such as ``attribute:ecs.availability-zone``. For the ``binpack`` placement strategy, valid values are ``cpu`` and ``memory``. For the ``random`` placement strategy, this field is not used.", - "type": "string" - }, - "Type": { - "description": "The type of placement strategy. The ``random`` placement strategy randomly places tasks on available candidates. The ``spread`` placement strategy spreads placement across available candidates evenly based on the ``field`` parameter. The ``binpack`` strategy places tasks on available candidates that have the least available amount of the resource that's specified with the ``field`` parameter. For example, if you binpack on memory, a task is placed on the instance with the least amount of remaining memory but still enough to run the task.", - "enum": [ - "binpack", - "random", - "spread" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "Secret": { - "additionalProperties": false, - "description": "An object representing the secret to expose to your container. Secrets can be exposed to a container in the following ways:\n + To inject sensitive data into your containers as environment variables, use the ``secrets`` container definition parameter.\n + To reference sensitive information in the log configuration of a container, use the ``secretOptions`` container definition parameter.\n \n For more information, see [Specifying sensitive data](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html) in the *Amazon Elastic Container Service Developer Guide*.", - "properties": { - "Name": { - "description": "The name of the secret.", - "type": "string" - }, - "ValueFrom": { - "description": "The secret to expose to the container. The supported values are either the full ARN of the ASMlong secret or the full ARN of the parameter in the SSM Parameter Store.\n For information about the require IAMlong permissions, see [Required IAM permissions for Amazon ECS secrets](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-secrets.html#secrets-iam) (for Secrets Manager) or [Required IAM permissions for Amazon ECS secrets](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-parameters.html) (for Systems Manager Parameter store) in the *Amazon Elastic Container Service Developer Guide*.\n If the SSM Parameter Store parameter exists in the same Region as the task you're launching, then you can use either the full ARN or name of the parameter. If the parameter exists in a different Region, then the full ARN must be specified.", - "type": "string" - } - }, - "required": [ - "Name", - "ValueFrom" - ], - "type": "object" - }, - "ServiceConnectClientAlias": { - "additionalProperties": false, - "description": "Each alias (\"endpoint\") is a fully-qualified name and port number that other tasks (\"clients\") can use to connect to this service.\n Each name and port mapping must be unique within the namespace.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", - "properties": { - "DnsName": { - "description": "The ``dnsName`` is the name that you use in the applications of client tasks to connect to this service. The name must be a valid DNS name but doesn't need to be fully-qualified. The name can include up to 127 characters. The name can include lowercase letters, numbers, underscores (_), hyphens (-), and periods (.). The name can't start with a hyphen.\n If this parameter isn't specified, the default value of ``discoveryName.namespace`` is used. If the ``discoveryName`` isn't specified, the port mapping name from the task definition is used in ``portName.namespace``.\n To avoid changing your applications in client Amazon ECS services, set this to the same name that the client application uses by default. For example, a few common names are ``database``, ``db``, or the lowercase name of a database, such as ``mysql`` or ``redis``. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", - "type": "string" - }, - "Port": { - "description": "The listening port number for the Service Connect proxy. This port is available inside of all of the tasks within the same namespace.\n To avoid changing your applications in client Amazon ECS services, set this to the same port that the client application uses by default. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", - "type": "integer" - } - }, - "required": [ - "Port" - ], - "type": "object" - }, - "ServiceConnectConfiguration": { - "additionalProperties": false, - "description": "The Service Connect configuration of your Amazon ECS service. The configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", - "properties": { - "Enabled": { - "description": "Specifies whether to use Service Connect with this service.", - "type": "boolean" - }, - "LogConfiguration": { - "$ref": "#/definitions/LogConfiguration", - "description": "The log configuration for the container. This parameter maps to ``LogConfig`` in the docker container create command and the ``--log-driver`` option to docker run.\n By default, containers use the same logging driver that the Docker daemon uses. However, the container might use a different logging driver than the Docker daemon by specifying a log driver configuration in the container definition.\n Understand the following when specifying a log configuration for your containers.\n + Amazon ECS currently supports a subset of the logging drivers available to the Docker daemon. Additional log drivers may be available in future releases of the Amazon ECS container agent.\n For tasks on FARGATElong, the supported log drivers are ``awslogs``, ``splunk``, and ``awsfirelens``.\n For tasks hosted on Amazon EC2 instances, the supported log drivers are ``awslogs``, ``fluentd``, ``gelf``, ``json-file``, ``journald``,``syslog``, ``splunk``, and ``awsfirelens``.\n + This parameter requires version 1.18 of the Docker Remote API or greater on your container instance.\n + For tasks that are hosted on Amazon EC2 instances, the Amazon ECS container agent must register the available logging drivers with the ``ECS_AVAILABLE_LOGGING_DRIVERS`` environment variable before containers placed on that instance can use these log configuration options. For more information, see [Amazon ECS container agent configuration](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html) in the *Amazon Elastic Container Service Developer Guide*.\n + For tasks that are on FARGATElong, because you don't have access to the underlying infrastructure your tasks are hosted on, any additional software needed must be installed outside of the task. For example, the Fluentd output aggregators or a remote host running Logstash to send Gelf logs to." - }, - "Namespace": { - "description": "The namespace name or full Amazon Resource Name (ARN) of the CMAPlong namespace for use with Service Connect. The namespace must be in the same AWS Region as the Amazon ECS service and cluster. The type of namespace doesn't affect Service Connect. For more information about CMAPlong, see [Working with Services](https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html) in the *Developer Guide*.", - "type": "string" - }, - "Services": { - "description": "The list of Service Connect service objects. These are names and aliases (also known as endpoints) that are used by other Amazon ECS services to connect to this service. \n This field is not required for a \"client\" Amazon ECS service that's a member of a namespace only to connect to other services within the namespace. An example of this would be a frontend application that accepts incoming requests from either a load balancer that's attached to the service or by other means.\n An object selects a port from the task definition, assigns a name for the CMAPlong service, and a list of aliases (endpoints) and ports for client applications to refer to this service.", - "items": { - "$ref": "#/definitions/ServiceConnectService" - }, - "type": "array" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "ServiceConnectService": { - "additionalProperties": false, - "description": "The Service Connect service object configuration. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", - "properties": { - "ClientAliases": { - "description": "The list of client aliases for this Service Connect service. You use these to assign names that can be used by client applications. The maximum number of client aliases that you can have in this list is 1.\n Each alias (\"endpoint\") is a fully-qualified name and port number that other Amazon ECS tasks (\"clients\") can use to connect to this service.\n Each name and port mapping must be unique within the namespace.\n For each ``ServiceConnectService``, you must provide at least one ``clientAlias`` with one ``port``.", - "items": { - "$ref": "#/definitions/ServiceConnectClientAlias" - }, - "type": "array" - }, - "DiscoveryName": { - "description": "The ``discoveryName`` is the name of the new CMAP service that Amazon ECS creates for this Amazon ECS service. This must be unique within the CMAP namespace. The name can contain up to 64 characters. The name can include lowercase letters, numbers, underscores (_), and hyphens (-). The name can't start with a hyphen.\n If the ``discoveryName`` isn't specified, the port mapping name from the task definition is used in ``portName.namespace``.", - "type": "string" - }, - "IngressPortOverride": { - "description": "The port number for the Service Connect proxy to listen on.\n Use the value of this field to bypass the proxy for traffic on the port number specified in the named ``portMapping`` in the task definition of this application, and then use it in your VPC security groups to allow traffic into the proxy for this Amazon ECS service.\n In ``awsvpc`` mode and Fargate, the default value is the container port number. The container port number is in the ``portMapping`` in the task definition. In bridge mode, the default value is the ephemeral port of the Service Connect proxy.", - "type": "integer" - }, - "PortName": { - "description": "The ``portName`` must match the name of one of the ``portMappings`` from all the containers in the task definition of this Amazon ECS service.", - "type": "string" - }, - "Timeout": { - "$ref": "#/definitions/TimeoutConfiguration", - "description": "A reference to an object that represents the configured timeouts for Service Connect." - }, - "Tls": { - "$ref": "#/definitions/ServiceConnectTlsConfiguration", - "description": "A reference to an object that represents a Transport Layer Security (TLS) configuration." - } - }, - "required": [ - "PortName" - ], - "type": "object" - }, - "ServiceConnectTlsCertificateAuthority": { - "additionalProperties": false, - "description": "The certificate root authority that secures your service.", - "properties": { - "AwsPcaAuthorityArn": { - "description": "The ARN of the AWS Private Certificate Authority certificate.", - "type": "string" - } - }, - "type": "object" - }, - "ServiceConnectTlsConfiguration": { - "additionalProperties": false, - "description": "The key that encrypts and decrypts your resources for Service Connect TLS.", - "properties": { - "IssuerCertificateAuthority": { - "$ref": "#/definitions/ServiceConnectTlsCertificateAuthority", - "description": "The signer certificate authority." - }, - "KmsKey": { - "description": "The AWS Key Management Service key.", - "type": "string" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) of the IAM role that's associated with the Service Connect TLS.", - "type": "string" - } - }, - "required": [ - "IssuerCertificateAuthority" - ], - "type": "object" - }, - "ServiceManagedEBSVolumeConfiguration": { - "additionalProperties": false, - "description": "The configuration for the Amazon EBS volume that Amazon ECS creates and manages on your behalf. These settings are used to create each Amazon EBS volume, with one volume created for each task in the service. For information about the supported launch types and operating systems, see [Supported operating systems and launch types](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html#ebs-volumes-configuration) in the*Amazon Elastic Container Service Developer Guide*.\n Many of these parameters map 1:1 with the Amazon EBS ``CreateVolume`` API request parameters.", - "properties": { - "Encrypted": { - "description": "Indicates whether the volume should be encrypted. If no value is specified, encryption is turned on by default. This parameter maps 1:1 with the ``Encrypted`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.", - "type": "boolean" - }, - "FilesystemType": { - "description": "The filesystem type for the volume. For volumes created from a snapshot, you must specify the same filesystem type that the volume was using when the snapshot was created. If there is a filesystem type mismatch, the task will fail to start.\n The available Linux filesystem types are\u2028 ``ext3``, ``ext4``, and ``xfs``. If no value is specified, the ``xfs`` filesystem type is used by default.\n The available Windows filesystem types are ``NTFS``.", - "type": "string" - }, - "Iops": { - "description": "The number of I/O operations per second (IOPS). For ``gp3``, ``io1``, and ``io2`` volumes, this represents the number of IOPS that are provisioned for the volume. For ``gp2`` volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting.\n The following are the supported values for each volume type.\n + ``gp3``: 3,000 - 16,000 IOPS\n + ``io1``: 100 - 64,000 IOPS\n + ``io2``: 100 - 256,000 IOPS\n \n This parameter is required for ``io1`` and ``io2`` volume types. The default for ``gp3`` volumes is ``3,000 IOPS``. This parameter is not supported for ``st1``, ``sc1``, or ``standard`` volume types.\n This parameter maps 1:1 with the ``Iops`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.", - "type": "integer" - }, - "KmsKeyId": { - "description": "The Amazon Resource Name (ARN) identifier of the AWS Key Management Service key to use for Amazon EBS encryption. When encryption is turned on and no AWS Key Management Service key is specified, the default AWS managed key for Amazon EBS volumes is used. This parameter maps 1:1 with the ``KmsKeyId`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.\n AWS authenticates the AWS Key Management Service key asynchronously. Therefore, if you specify an ID, alias, or ARN that is invalid, the action can appear to complete, but eventually fails.", - "type": "string" - }, - "RoleArn": { - "description": "The ARN of the IAM role to associate with this volume. This is the Amazon ECS infrastructure IAM role that is used to manage your AWS infrastructure. We recommend using the Amazon ECS-managed ``AmazonECSInfrastructureRolePolicyForVolumes`` IAM policy with this role. For more information, see [Amazon ECS infrastructure IAM role](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/infrastructure_IAM_role.html) in the *Amazon ECS Developer Guide*.", - "type": "string" - }, - "SizeInGiB": { - "description": "The size of the volume in GiB. You must specify either a volume size or a snapshot ID. If you specify a snapshot ID, the snapshot size is used for the volume size by default. You can optionally specify a volume size greater than or equal to the snapshot size. This parameter maps 1:1 with the ``Size`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.\n The following are the supported volume size values for each volume type.\n + ``gp2`` and ``gp3``: 1-16,384\n + ``io1`` and ``io2``: 4-16,384\n + ``st1`` and ``sc1``: 125-16,384\n + ``standard``: 1-1,024", - "type": "integer" - }, - "SnapshotId": { - "description": "The snapshot that Amazon ECS uses to create the volume. You must specify either a snapshot ID or a volume size. This parameter maps 1:1 with the ``SnapshotId`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.", - "type": "string" - }, - "TagSpecifications": { - "description": "The tags to apply to the volume. Amazon ECS applies service-managed tags by default. This parameter maps 1:1 with the ``TagSpecifications.N`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.", - "items": { - "$ref": "#/definitions/EBSTagSpecification" - }, - "type": "array" - }, - "Throughput": { - "description": "The throughput to provision for a volume, in MiB/s, with a maximum of 1,000 MiB/s. This parameter maps 1:1 with the ``Throughput`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.\n This parameter is only supported for the ``gp3`` volume type.", - "type": "integer" - }, - "VolumeType": { - "description": "The volume type. This parameter maps 1:1 with the ``VolumeType`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*. For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html) in the *Amazon EC2 User Guide*.\n The following are the supported volume types.\n + General Purpose SSD: ``gp2``|``gp3`` \n + Provisioned IOPS SSD: ``io1``|``io2`` \n + Throughput Optimized HDD: ``st1`` \n + Cold HDD: ``sc1`` \n + Magnetic: ``standard`` \n The magnetic volume type is not supported on Fargate.", - "type": "string" - } - }, - "required": [ - "RoleArn" - ], - "type": "object" - }, - "ServiceRegistry": { - "additionalProperties": false, - "description": "The details for the service registry.\n Each service may be associated with one service registry. Multiple service registries for each service are not supported.\n When you add, update, or remove the service registries configuration, Amazon ECS starts a new deployment. New tasks are registered and deregistered to the updated service registry configuration.", - "properties": { - "ContainerName": { - "description": "The container name value to be used for your service discovery service. It's already specified in the task definition. If the task definition that your service task specifies uses the ``bridge`` or ``host`` network mode, you must specify a ``containerName`` and ``containerPort`` combination from the task definition. If the task definition that your service task specifies uses the ``awsvpc`` network mode and a type SRV DNS record is used, you must specify either a ``containerName`` and ``containerPort`` combination or a ``port`` value. However, you can't specify both.", - "type": "string" - }, - "ContainerPort": { - "description": "The port value to be used for your service discovery service. It's already specified in the task definition. If the task definition your service task specifies uses the ``bridge`` or ``host`` network mode, you must specify a ``containerName`` and ``containerPort`` combination from the task definition. If the task definition your service task specifies uses the ``awsvpc`` network mode and a type SRV DNS record is used, you must specify either a ``containerName`` and ``containerPort`` combination or a ``port`` value. However, you can't specify both.", - "type": "integer" - }, - "Port": { - "description": "The port value used if your service discovery service specified an SRV record. This field might be used if both the ``awsvpc`` network mode and SRV records are used.", - "type": "integer" - }, - "RegistryArn": { - "description": "The Amazon Resource Name (ARN) of the service registry. The currently supported service registry is CMAP. For more information, see [CreateService](https://docs.aws.amazon.com/cloud-map/latest/api/API_CreateService.html).", - "type": "string" - } - }, - "type": "object" - }, - "ServiceVolumeConfiguration": { - "additionalProperties": false, - "description": "The configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume.", - "properties": { - "ManagedEBSVolume": { - "$ref": "#/definitions/ServiceManagedEBSVolumeConfiguration", - "description": "The configuration for the Amazon EBS volume that Amazon ECS creates and manages on your behalf. These settings are used to create each Amazon EBS volume, with one volume created for each task in the service. The Amazon EBS volumes are visible in your account in the Amazon EC2 console once they are created." - }, - "Name": { - "description": "The name of the volume. This value must match the volume name from the ``Volume`` object in the task definition.", - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "The metadata that you apply to a resource to help you categorize and organize them. Each tag consists of a key and an optional value. You define them.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", - "properties": { - "Key": { - "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", - "type": "string" - }, - "Value": { - "description": "The optional part of a key-value pair that make up a tag. A ``value`` acts as a descriptor within a tag category (key).", - "type": "string" - } - }, - "type": "object" - }, - "TimeoutConfiguration": { - "additionalProperties": false, - "description": "An object that represents the timeout configurations for Service Connect.\n If ``idleTimeout`` is set to a time that is less than ``perRequestTimeout``, the connection will close when the ``idleTimeout`` is reached and not the ``perRequestTimeout``.", - "properties": { - "IdleTimeoutSeconds": { - "description": "The amount of time in seconds a connection will stay active while idle. A value of ``0`` can be set to disable ``idleTimeout``.\n The ``idleTimeout`` default for ``HTTP``/``HTTP2``/``GRPC`` is 5 minutes.\n The ``idleTimeout`` default for ``TCP`` is 1 hour.", - "type": "integer" - }, - "PerRequestTimeoutSeconds": { - "description": "The amount of time waiting for the upstream to respond with a complete response per request. A value of ``0`` can be set to disable ``perRequestTimeout``. ``perRequestTimeout`` can only be set if Service Connect ``appProtocol`` isn't ``TCP``. Only ``idleTimeout`` is allowed for ``TCP`` ``appProtocol``.", - "type": "integer" - } - }, - "type": "object" - }, - "VpcLatticeConfiguration": { - "additionalProperties": false, - "description": "", - "properties": { - "PortName": { - "type": "string" - }, - "RoleArn": { - "type": "string" - }, - "TargetGroupArn": { - "type": "string" - } - }, - "required": [ - "RoleArn", - "TargetGroupArn", - "PortName" - ], - "type": "object" - } - }, - "description": "The ``AWS::ECS::Service`` resource creates an Amazon Elastic Container Service (Amazon ECS) service that runs and maintains the requested number of tasks and associated load balancers.\n The stack update fails if you change any properties that require replacement and at least one ECS Service Connect ``ServiceConnectConfiguration`` property the is configured. This is because AWS CloudFormation creates the replacement service first, but each ``ServiceConnectService`` must have a name that is unique in the namespace.\n Starting April 15, 2023, AWS; will not onboard new customers to Amazon Elastic Inference (EI), and will help current customers migrate their workloads to options that offer better price and performance. After April 15, 2023, new customers will not be able to launch instances with Amazon EI accelerators in Amazon SageMaker, ECS, or EC2. However, customers who have used Amazon EI at least once during the past 30-day period are considered current customers and will be able to continue using the service.", - "handlers": { - "create": { - "permissions": [ - "ecs:CreateService", - "ecs:DescribeServices", - "iam:PassRole", - "ecs:TagResource" - ], - "timeoutInMinutes": 180 - }, - "delete": { - "permissions": [ - "ecs:DeleteService", - "ecs:DescribeServices" - ], - "timeoutInMinutes": 30 - }, - "list": { - "permissions": [ - "ecs:DescribeServices", - "ecs:ListClusters", - "ecs:ListServices" - ] - }, - "read": { - "permissions": [ - "ecs:DescribeServices" - ] - }, - "update": { - "permissions": [ - "ecs:DescribeServices", - "ecs:ListTagsForResource", - "ecs:TagResource", - "ecs:UntagResource", - "ecs:UpdateService" - ], - "timeoutInMinutes": 180 - } - }, - "primaryIdentifier": [ - "/properties/ServiceArn", - "/properties/Cluster" - ], - "properties": { - "AvailabilityZoneRebalancing": { - "default": "DISABLED", - "description": "", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "CapacityProviderStrategy": { - "description": "The capacity provider strategy to use for the service.\n If a ``capacityProviderStrategy`` is specified, the ``launchType`` parameter must be omitted. If no ``capacityProviderStrategy`` or ``launchType`` is specified, the ``defaultCapacityProviderStrategy`` for the cluster is used.\n A capacity provider strategy may contain a maximum of 6 capacity providers.", - "items": { - "$ref": "#/definitions/CapacityProviderStrategyItem" - }, - "type": "array" - }, - "Cluster": { - "description": "The short name or full Amazon Resource Name (ARN) of the cluster that you run your service on. If you do not specify a cluster, the default cluster is assumed.", - "type": "string" - }, - "DeploymentConfiguration": { - "$ref": "#/definitions/DeploymentConfiguration", - "description": "Optional deployment parameters that control how many tasks run during the deployment and the ordering of stopping and starting tasks." - }, - "DeploymentController": { - "$ref": "#/definitions/DeploymentController", - "description": "The deployment controller to use for the service. If no deployment controller is specified, the default value of ``ECS`` is used." - }, - "DesiredCount": { - "description": "The number of instantiations of the specified task definition to place and keep running in your service.\n For new services, if a desired count is not specified, a default value of ``1`` is used. When using the ``DAEMON`` scheduling strategy, the desired count is not required.\n For existing services, if a desired count is not specified, it is omitted from the operation.", - "type": "integer" - }, - "EnableECSManagedTags": { - "description": "Specifies whether to turn on Amazon ECS managed tags for the tasks within the service. For more information, see [Tagging your Amazon ECS resources](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html) in the *Amazon Elastic Container Service Developer Guide*.\n When you use Amazon ECS managed tags, you need to set the ``propagateTags`` request parameter.", - "type": "boolean" - }, - "EnableExecuteCommand": { - "description": "Determines whether the execute command functionality is turned on for the service. If ``true``, the execute command functionality is turned on for all containers in tasks as part of the service.", - "type": "boolean" - }, - "HealthCheckGracePeriodSeconds": { - "description": "The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing target health checks after a task has first started. This is only used when your service is configured to use a load balancer. If your service has a load balancer defined and you don't specify a health check grace period value, the default value of ``0`` is used.\n If you do not use an Elastic Load Balancing, we recommend that you use the ``startPeriod`` in the task definition health check parameters. For more information, see [Health check](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_HealthCheck.html).\n If your service's tasks take a while to start and respond to Elastic Load Balancing health checks, you can specify a health check grace period of up to 2,147,483,647 seconds (about 69 years). During that time, the Amazon ECS service scheduler ignores health check status. This grace period can prevent the service scheduler from marking tasks as unhealthy and stopping them before they have time to come up.", - "type": "integer" - }, - "LaunchType": { - "description": "The launch type on which to run your service. For more information, see [Amazon ECS Launch Types](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) in the *Amazon Elastic Container Service Developer Guide*.", - "enum": [ - "EC2", - "FARGATE", - "EXTERNAL" - ], - "type": "string" - }, - "LoadBalancers": { - "description": "A list of load balancer objects to associate with the service. If you specify the ``Role`` property, ``LoadBalancers`` must be specified as well. For information about the number of load balancers that you can specify per service, see [Service Load Balancing](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html) in the *Amazon Elastic Container Service Developer Guide*.", - "items": { - "$ref": "#/definitions/LoadBalancer" - }, - "type": "array" - }, - "Name": { - "description": "", - "type": "string" - }, - "NetworkConfiguration": { - "$ref": "#/definitions/NetworkConfiguration", - "description": "The network configuration for the service. This parameter is required for task definitions that use the ``awsvpc`` network mode to receive their own elastic network interface, and it is not supported for other network modes. For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) in the *Amazon Elastic Container Service Developer Guide*." - }, - "PlacementConstraints": { - "description": "An array of placement constraint objects to use for tasks in your service. You can specify a maximum of 10 constraints for each task. This limit includes constraints in the task definition and those specified at runtime.", - "items": { - "$ref": "#/definitions/PlacementConstraint" - }, - "type": "array" - }, - "PlacementStrategies": { - "description": "The placement strategy objects to use for tasks in your service. You can specify a maximum of 5 strategy rules for each service.", - "items": { - "$ref": "#/definitions/PlacementStrategy" - }, - "type": "array" - }, - "PlatformVersion": { - "default": "LATEST", - "description": "The platform version that your tasks in the service are running on. A platform version is specified only for tasks using the Fargate launch type. If one isn't specified, the ``LATEST`` platform version is used. For more information, see [platform versions](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html) in the *Amazon Elastic Container Service Developer Guide*.", - "type": "string" - }, - "PropagateTags": { - "description": "Specifies whether to propagate the tags from the task definition to the task. If no value is specified, the tags aren't propagated. Tags can only be propagated to the task during task creation. To add tags to a task after task creation, use the [TagResource](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TagResource.html) API action.\n You must set this to a value other than ``NONE`` when you use Cost Explorer. For more information, see [Amazon ECS usage reports](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/usage-reports.html) in the *Amazon Elastic Container Service Developer Guide*.\n The default is ``NONE``.", - "enum": [ - "SERVICE", - "TASK_DEFINITION" - ], - "type": "string" - }, - "Role": { - "description": "The name or full Amazon Resource Name (ARN) of the IAM role that allows Amazon ECS to make calls to your load balancer on your behalf. This parameter is only permitted if you are using a load balancer with your service and your task definition doesn't use the ``awsvpc`` network mode. If you specify the ``role`` parameter, you must also specify a load balancer object with the ``loadBalancers`` parameter.\n If your account has already created the Amazon ECS service-linked role, that role is used for your service unless you specify a role here. The service-linked role is required if your task definition uses the ``awsvpc`` network mode or if the service is configured to use service discovery, an external deployment controller, multiple target groups, or Elastic Inference accelerators in which case you don't specify a role here. For more information, see [Using service-linked roles for Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using-service-linked-roles.html) in the *Amazon Elastic Container Service Developer Guide*.\n If your specified role has a path other than ``/``, then you must either specify the full role ARN (this is recommended) or prefix the role name with the path. For example, if a role with the name ``bar`` has a path of ``/foo/`` then you would specify ``/foo/bar`` as the role name. For more information, see [Friendly names and paths](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-friendly-names) in the *IAM User Guide*.", - "type": "string" - }, - "SchedulingStrategy": { - "description": "The scheduling strategy to use for the service. For more information, see [Services](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html).\n There are two service scheduler strategies available:\n + ``REPLICA``-The replica scheduling strategy places and maintains the desired number of tasks across your cluster. By default, the service scheduler spreads tasks across Availability Zones. You can use task placement strategies and constraints to customize task placement decisions. This scheduler strategy is required if the service uses the ``CODE_DEPLOY`` or ``EXTERNAL`` deployment controller types.\n + ``DAEMON``-The daemon scheduling strategy deploys exactly one task on each active container instance that meets all of the task placement constraints that you specify in your cluster. The service scheduler also evaluates the task placement constraints for running tasks and will stop tasks that don't meet the placement constraints. When you're using this strategy, you don't need to specify a desired number of tasks, a task placement strategy, or use Service Auto Scaling policies.\n Tasks using the Fargate launch type or the ``CODE_DEPLOY`` or ``EXTERNAL`` deployment controller types don't support the ``DAEMON`` scheduling strategy.", - "enum": [ - "DAEMON", - "REPLICA" - ], - "type": "string" - }, - "ServiceArn": { - "description": "", - "type": "string" - }, - "ServiceConnectConfiguration": { - "$ref": "#/definitions/ServiceConnectConfiguration", - "description": "The configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*." - }, - "ServiceName": { - "description": "The name of your service. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed. Service names must be unique within a cluster, but you can have similarly named services in multiple clusters within a Region or across multiple Regions.\n The stack update fails if you change any properties that require replacement and the ``ServiceName`` is configured. This is because AWS CloudFormation creates the replacement service first, but each ``ServiceName`` must be unique in the cluster.", - "type": "string" - }, - "ServiceRegistries": { - "description": "The details of the service discovery registry to associate with this service. For more information, see [Service discovery](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html).\n Each service may be associated with one service registry. Multiple service registries for each service isn't supported.", - "items": { - "$ref": "#/definitions/ServiceRegistry" - }, - "type": "array" - }, - "Tags": { - "description": "The metadata that you apply to the service to help you categorize and organize them. Each tag consists of a key and an optional value, both of which you define. When a service is deleted, the tags are deleted as well.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "TaskDefinition": { - "description": "The ``family`` and ``revision`` (``family:revision``) or full ARN of the task definition to run in your service. If a ``revision`` isn't specified, the latest ``ACTIVE`` revision is used.\n A task definition must be specified if the service uses either the ``ECS`` or ``CODE_DEPLOY`` deployment controllers.\n For more information about deployment types, see [Amazon ECS deployment types](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html).", - "type": "string" - }, - "VolumeConfigurations": { - "description": "The configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume.", - "items": { - "$ref": "#/definitions/ServiceVolumeConfiguration" - }, - "type": "array" - }, - "VpcLatticeConfigurations": { - "description": "", - "items": { - "$ref": "#/definitions/VpcLatticeConfiguration" - }, - "type": "array" - } - }, - "propertyTransform": { - "/properties/Role": "Role $OR $join([\"arn:(aws)[-]{0,1}[a-z]{0,3}[-]{0,1}[a-z]{0,3}:iam::[0-9]{12}[:]role/{1}\", Role])" - }, - "readOnlyProperties": [ - "/properties/ServiceArn", - "/properties/Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ecs:TagResource", - "ecs:UntagResource", - "ecs:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ECS::Service", - "writeOnlyProperties": [ - "/properties/ServiceConnectConfiguration", - "/properties/VolumeConfigurations" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Cluster", + "/properties/DeploymentController", + "/properties/LaunchType", + "/properties/Role", + "/properties/SchedulingStrategy", + "/properties/ServiceName" + ], + "definitions": { + "AwsVpcConfiguration": { + "additionalProperties": false, + "description": "An object representing the networking details for a task or service. For example ``awsVpcConfiguration={subnets=[\"subnet-12344321\"],securityGroups=[\"sg-12344321\"]}``.", + "properties": { + "AssignPublicIp": { + "description": "Whether the task's elastic network interface receives a public IP address. \n Consider the following when you set this value:\n + When you use ``create-service`` or ``update-service``, the default is ``DISABLED``. \n + When the service ``deploymentController`` is ``ECS``, the value must be ``DISABLED``.", + "enum": [ + "DISABLED", + "ENABLED" + ], + "type": "string" + }, + "SecurityGroups": { + "description": "The IDs of the security groups associated with the task or service. If you don't specify a security group, the default security group for the VPC is used. There's a limit of 5 security groups that can be specified.\n All specified security groups must be from the same VPC.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Subnets": { + "description": "The IDs of the subnets associated with the task or service. There's a limit of 16 subnets that can be specified.\n All specified subnets must be from the same VPC.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "CapacityProviderStrategyItem": { + "additionalProperties": false, + "description": "The details of a capacity provider strategy. A capacity provider strategy can be set when using the ``RunTask`` or ``CreateService`` APIs or as the default capacity provider strategy for a cluster with the ``CreateCluster`` API.\n Only capacity providers that are already associated with a cluster and have an ``ACTIVE`` or ``UPDATING`` status can be used in a capacity provider strategy. The ``PutClusterCapacityProviders`` API is used to associate a capacity provider with a cluster.\n If specifying a capacity provider that uses an Auto Scaling group, the capacity provider must already be created. New Auto Scaling group capacity providers can be created with the ``CreateCapacityProvider`` API operation.\n To use an FARGATElong capacity provider, specify either the ``FARGATE`` or ``FARGATE_SPOT`` capacity providers. The FARGATElong capacity providers are available to all accounts and only need to be associated with a cluster to be used in a capacity provider strategy.", + "properties": { + "Base": { + "description": "The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.", + "type": "integer" + }, + "CapacityProvider": { + "description": "The short name of the capacity provider.", + "type": "string" + }, + "Weight": { + "description": "The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied.\n If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0``, any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail.\n An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1``, then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB*, then for every one task that's run using *capacityProviderA*, four tasks would use *capacityProviderB*.", + "type": "integer" + } + }, + "type": "object" + }, + "DeploymentAlarms": { + "additionalProperties": false, + "description": "One of the methods which provide a way for you to quickly identify when a deployment has failed, and then to optionally roll back the failure to the last working deployment.\n When the alarms are generated, Amazon ECS sets the service deployment to failed. Set the rollback parameter to have Amazon ECS to roll back your service to the last completed deployment after a failure.\n You can only use the ``DeploymentAlarms`` method to detect failures when the ``DeploymentController`` is set to ``ECS`` (rolling update).\n For more information, see [Rolling update](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "AlarmNames": { + "description": "One or more CloudWatch alarm names. Use a \",\" to separate the alarms.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Enable": { + "description": "Determines whether to use the CloudWatch alarm option in the service deployment process.", + "type": "boolean" + }, + "Rollback": { + "description": "Determines whether to configure Amazon ECS to roll back the service if a service deployment fails. If rollback is used, when a service deployment fails, the service is rolled back to the last deployment that completed successfully.", + "type": "boolean" + } + }, + "required": [ + "AlarmNames", + "Rollback", + "Enable" + ], + "type": "object" + }, + "DeploymentCircuitBreaker": { + "additionalProperties": false, + "description": "The deployment circuit breaker can only be used for services using the rolling update (``ECS``) deployment type.\n The *deployment circuit breaker* determines whether a service deployment will fail if the service can't reach a steady state. If it is turned on, a service deployment will transition to a failed state and stop launching new tasks. You can also configure Amazon ECS to roll back your service to the last completed deployment after a failure. For more information, see [Rolling update](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html) in the *Amazon Elastic Container Service Developer Guide*.\n For more information about API failure reasons, see [API failure reasons](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/api_failures_messages.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "Enable": { + "description": "Determines whether to use the deployment circuit breaker logic for the service.", + "type": "boolean" + }, + "Rollback": { + "description": "Determines whether to configure Amazon ECS to roll back the service if a service deployment fails. If rollback is on, when a service deployment fails, the service is rolled back to the last deployment that completed successfully.", + "type": "boolean" + } + }, + "required": [ + "Enable", + "Rollback" + ], + "type": "object" + }, + "DeploymentConfiguration": { + "additionalProperties": false, + "description": "Optional deployment parameters that control how many tasks run during a deployment and the ordering of stopping and starting tasks.", + "properties": { + "Alarms": { + "$ref": "#/definitions/DeploymentAlarms", + "description": "Information about the CloudWatch alarms." + }, + "DeploymentCircuitBreaker": { + "$ref": "#/definitions/DeploymentCircuitBreaker", + "description": "The deployment circuit breaker can only be used for services using the rolling update (``ECS``) deployment type.\n The *deployment circuit breaker* determines whether a service deployment will fail if the service can't reach a steady state. If you use the deployment circuit breaker, a service deployment will transition to a failed state and stop launching new tasks. If you use the rollback option, when a service deployment fails, the service is rolled back to the last deployment that completed successfully. For more information, see [Rolling update](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html) in the *Amazon Elastic Container Service Developer Guide*" + }, + "MaximumPercent": { + "description": "If a service is using the rolling update (``ECS``) deployment type, the ``maximumPercent`` parameter represents an upper limit on the number of your service's tasks that are allowed in the ``RUNNING`` or ``PENDING`` state during a deployment, as a percentage of the ``desiredCount`` (rounded down to the nearest integer). This parameter enables you to define the deployment batch size. For example, if your service is using the ``REPLICA`` service scheduler and has a ``desiredCount`` of four tasks and a ``maximumPercent`` value of 200%, the scheduler may start four new tasks before stopping the four older tasks (provided that the cluster resources required to do this are available). The default ``maximumPercent`` value for a service using the ``REPLICA`` service scheduler is 200%.\n The Amazon ECS scheduler uses this parameter to replace unhealthy tasks by starting replacement tasks first and then stopping the unhealthy tasks, as long as cluster resources for starting replacement tasks are available. For more information about how the scheduler replaces unhealthy tasks, see [Amazon ECS services](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html).\n If a service is using either the blue/green (``CODE_DEPLOY``) or ``EXTERNAL`` deployment types, and tasks in the service use the EC2 launch type, the *maximum percent* value is set to the default value. The *maximum percent* value is used to define the upper limit on the number of the tasks in the service that remain in the ``RUNNING`` state while the container instances are in the ``DRAINING`` state.\n You can't specify a custom ``maximumPercent`` value for a service that uses either the blue/green (``CODE_DEPLOY``) or ``EXTERNAL`` deployment types and has tasks that use the EC2 launch type.\n If the service uses either the blue/green (``CODE_DEPLOY``) or ``EXTERNAL`` deployment types, and the tasks in the service use the Fargate launch type, the maximum percent value is not used. The value is still returned when describing your service.", + "type": "integer" + }, + "MinimumHealthyPercent": { + "description": "If a service is using the rolling update (``ECS``) deployment type, the ``minimumHealthyPercent`` represents a lower limit on the number of your service's tasks that must remain in the ``RUNNING`` state during a deployment, as a percentage of the ``desiredCount`` (rounded up to the nearest integer). This parameter enables you to deploy without using additional cluster capacity. For example, if your service has a ``desiredCount`` of four tasks and a ``minimumHealthyPercent`` of 50%, the service scheduler may stop two existing tasks to free up cluster capacity before starting two new tasks. \n If any tasks are unhealthy and if ``maximumPercent`` doesn't allow the Amazon ECS scheduler to start replacement tasks, the scheduler stops the unhealthy tasks one-by-one \u2014 using the ``minimumHealthyPercent`` as a constraint \u2014 to clear up capacity to launch replacement tasks. For more information about how the scheduler replaces unhealthy tasks, see [Amazon ECS services](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html) . \n For services that *do not* use a load balancer, the following should be noted:\n + A service is considered healthy if all essential containers within the tasks in the service pass their health checks.\n + If a task has no essential containers with a health check defined, the service scheduler will wait for 40 seconds after a task reaches a ``RUNNING`` state before the task is counted towards the minimum healthy percent total.\n + If a task has one or more essential containers with a health check defined, the service scheduler will wait for the task to reach a healthy status before counting it towards the minimum healthy percent total. A task is considered healthy when all essential containers within the task have passed their health checks. The amount of time the service scheduler can wait for is determined by the container health check settings. \n \n For services that *do* use a load balancer, the following should be noted:\n + If a task has no essential containers with a health check defined, the service scheduler will wait for the load balancer target group health check to return a healthy status before counting the task towards the minimum healthy percent total.\n + If a task has an essential container with a health check defined, the service scheduler will wait for both the task to reach a healthy status and the load balancer target group health check to return a healthy status before counting the task towards the minimum healthy percent total.\n \n The default value for a replica service for ``minimumHealthyPercent`` is 100%. The default ``minimumHealthyPercent`` value for a service using the ``DAEMON`` service schedule is 0% for the CLI, the AWS SDKs, and the APIs and 50% for the AWS Management Console.\n The minimum number of healthy tasks during a deployment is the ``desiredCount`` multiplied by the ``minimumHealthyPercent``/100, rounded up to the nearest integer value.\n If a service is using either the blue/green (``CODE_DEPLOY``) or ``EXTERNAL`` deployment types and is running tasks that use the EC2 launch type, the *minimum healthy percent* value is set to the default value. The *minimum healthy percent* value is used to define the lower limit on the number of the tasks in the service that remain in the ``RUNNING`` state while the container instances are in the ``DRAINING`` state.\n You can't specify a custom ``minimumHealthyPercent`` value for a service that uses either the blue/green (``CODE_DEPLOY``) or ``EXTERNAL`` deployment types and has tasks that use the EC2 launch type.\n If a service is using either the blue/green (``CODE_DEPLOY``) or ``EXTERNAL`` deployment types and is running tasks that use the Fargate launch type, the minimum healthy percent value is not used, although it is returned when describing your service.", + "type": "integer" + } + }, + "type": "object" + }, + "DeploymentController": { + "additionalProperties": false, + "description": "The deployment controller to use for the service.", + "properties": { + "Type": { + "description": "The deployment controller type to use. There are three deployment controller types available:\n + ECS The rolling update (ECS) deployment type involves replacing the current running version of the container with the latest version. The number of containers Amazon ECS adds or removes from the service during a rolling update is controlled by adjusting the minimum and maximum number of healthy tasks allowed during a service deployment, as specified in the DeploymentConfiguration. + CODE_DEPLOY The blue/green (CODE_DEPLOY) deployment type uses the blue/green deployment model powered by , which allows you to verify a new deployment of a service before sending production traffic to it. + EXTERNAL The external (EXTERNAL) deployment type enables you to use any third-party deployment controller for full control over the deployment process for an Amazon ECS service.", + "enum": [ + "CODE_DEPLOY", + "ECS", + "EXTERNAL" + ], + "type": "string" + } + }, + "type": "object" + }, + "EBSTagSpecification": { + "additionalProperties": false, + "description": "The tag specifications of an Amazon EBS volume.", + "properties": { + "PropagateTags": { + "description": "Determines whether to propagate the tags from the task definition to \u2028the Amazon EBS volume. Tags can only propagate to a ``SERVICE`` specified in \u2028``ServiceVolumeConfiguration``. If no value is specified, the tags aren't \u2028propagated.", + "enum": [ + "SERVICE", + "TASK_DEFINITION" + ], + "type": "string" + }, + "ResourceType": { + "description": "The type of volume resource.", + "type": "string" + }, + "Tags": { + "description": "The tags applied to this Amazon EBS volume. ``AmazonECSCreated`` and ``AmazonECSManaged`` are reserved tags that can't be used.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "required": [ + "ResourceType" + ], + "type": "object" + }, + "LoadBalancer": { + "additionalProperties": false, + "description": "The ``LoadBalancer`` property specifies details on a load balancer that is used with a service.\n If the service is using the ``CODE_DEPLOY`` deployment controller, the service is required to use either an Application Load Balancer or Network Load Balancer. When you are creating an ACDlong deployment group, you specify two target groups (referred to as a ``targetGroupPair``). Each target group binds to a separate task set in the deployment. The load balancer can also have up to two listeners, a required listener for production traffic and an optional listener that allows you to test new revisions of the service before routing production traffic to it.\n Services with tasks that use the ``awsvpc`` network mode (for example, those with the Fargate launch type) only support Application Load Balancers and Network Load Balancers. Classic Load Balancers are not supported. Also, when you create any target groups for these services, you must choose ``ip`` as the target type, not ``instance``. Tasks that use the ``awsvpc`` network mode are associated with an elastic network interface, not an Amazon EC2 instance.", + "properties": { + "ContainerName": { + "description": "The name of the container (as it appears in a container definition) to associate with the load balancer.\n You need to specify the container name when configuring the target group for an Amazon ECS load balancer.", + "type": "string" + }, + "ContainerPort": { + "description": "The port on the container to associate with the load balancer. This port must correspond to a ``containerPort`` in the task definition the tasks in the service are using. For tasks that use the EC2 launch type, the container instance they're launched on must allow ingress traffic on the ``hostPort`` of the port mapping.", + "type": "integer" + }, + "LoadBalancerName": { + "description": "The name of the load balancer to associate with the Amazon ECS service or task set.\n If you are using an Application Load Balancer or a Network Load Balancer the load balancer name parameter should be omitted.", + "type": "string" + }, + "TargetGroupArn": { + "description": "The full Amazon Resource Name (ARN) of the Elastic Load Balancing target group or groups associated with a service or task set.\n A target group ARN is only specified when using an Application Load Balancer or Network Load Balancer. \n For services using the ``ECS`` deployment controller, you can specify one or multiple target groups. For more information, see [Registering multiple target groups with a service](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/register-multiple-targetgroups.html) in the *Amazon Elastic Container Service Developer Guide*.\n For services using the ``CODE_DEPLOY`` deployment controller, you're required to define two target groups for the load balancer. For more information, see [Blue/green deployment with CodeDeploy](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-bluegreen.html) in the *Amazon Elastic Container Service Developer Guide*.\n If your service's task definition uses the ``awsvpc`` network mode, you must choose ``ip`` as the target type, not ``instance``. Do this when creating your target groups because tasks that use the ``awsvpc`` network mode are associated with an elastic network interface, not an Amazon EC2 instance. This network mode is required for the Fargate launch type.", + "type": "string" + } + }, + "type": "object" + }, + "LogConfiguration": { + "additionalProperties": false, + "description": "The log configuration for the container. This parameter maps to ``LogConfig`` in the docker container create command and the ``--log-driver`` option to docker run.\n By default, containers use the same logging driver that the Docker daemon uses. However, the container might use a different logging driver than the Docker daemon by specifying a log driver configuration in the container definition.\n Understand the following when specifying a log configuration for your containers.\n + Amazon ECS currently supports a subset of the logging drivers available to the Docker daemon. Additional log drivers may be available in future releases of the Amazon ECS container agent.\n For tasks on FARGATElong, the supported log drivers are ``awslogs``, ``splunk``, and ``awsfirelens``.\n For tasks hosted on Amazon EC2 instances, the supported log drivers are ``awslogs``, ``fluentd``, ``gelf``, ``json-file``, ``journald``,``syslog``, ``splunk``, and ``awsfirelens``.\n + This parameter requires version 1.18 of the Docker Remote API or greater on your container instance.\n + For tasks that are hosted on Amazon EC2 instances, the Amazon ECS container agent must register the available logging drivers with the ``ECS_AVAILABLE_LOGGING_DRIVERS`` environment variable before containers placed on that instance can use these log configuration options. For more information, see [Amazon ECS container agent configuration](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html) in the *Amazon Elastic Container Service Developer Guide*.\n + For tasks that are on FARGATElong, because you don't have access to the underlying infrastructure your tasks are hosted on, any additional software needed must be installed outside of the task. For example, the Fluentd output aggregators or a remote host running Logstash to send Gelf logs to.", + "properties": { + "LogDriver": { + "description": "The log driver to use for the container.\n For tasks on FARGATElong, the supported log drivers are ``awslogs``, ``splunk``, and ``awsfirelens``.\n For tasks hosted on Amazon EC2 instances, the supported log drivers are ``awslogs``, ``fluentd``, ``gelf``, ``json-file``, ``journald``, ``syslog``, ``splunk``, and ``awsfirelens``.\n For more information about using the ``awslogs`` log driver, see [Send Amazon ECS logs to CloudWatch](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html) in the *Amazon Elastic Container Service Developer Guide*.\n For more information about using the ``awsfirelens`` log driver, see [Send Amazon ECS logs to an service or Partner](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html).\n If you have a custom driver that isn't listed, you can fork the Amazon ECS container agent project that's [available on GitHub](https://docs.aws.amazon.com/https://github.com/aws/amazon-ecs-agent) and customize it to work with that driver. We encourage you to submit pull requests for changes that you would like to have included. However, we don't currently provide support for running modified copies of this software.", + "type": "string" + }, + "Options": { + "additionalProperties": false, + "description": "The configuration options to send to the log driver.\n The options you can specify depend on the log driver. Some of the options you can specify when you use the ``awslogs`` log driver to route logs to Amazon CloudWatch include the following:\n + awslogs-create-group Required: No Specify whether you want the log group to be created automatically. If this option isn't specified, it defaults to false. Your IAM policy must include the logs:CreateLogGroup permission before you attempt to use awslogs-create-group. + awslogs-region Required: Yes Specify the Region that the awslogs log driver is to send your Docker logs to. You can choose to send all of your logs from clusters in different Regions to a single region in CloudWatch Logs. This is so that they're all visible in one location. Otherwise, you can separate them by Region for more granularity. Make sure that the specified log group exists in the Region that you specify with this option. + awslogs-group Required: Yes Make sure to specify a log group that the awslogs log driver sends its log streams to. + awslogs-stream-prefix Required: Yes, when using the Fargate launch type.Optional for the EC2 launch type, required for the Fargate launch type. Use the awslogs-stream-prefix option to associate a log stream with the specified prefix, the container name, and the ID of the Amazon ECS task that the container belongs to. If you specify a prefix with this option, then the log stream takes the format prefix-name/container-name/ecs-task-id. If you don't specify a prefix with this option, then the log stream is named after the container ID that's assigned by the Docker daemon on the container instance. Because it's difficult to trace logs back to the container that sent them with just the Docker container ID (which is only available on the container instance), we recommend that you specify a prefix with this option. For Amazon ECS services, you can use the service name as the prefix. Doing so, you can trace log streams to the service that the container belongs to, the name of the container that sent them, and the ID of the task that the container belongs to. You must specify a stream-prefix for your logs to have your logs appear in the Log pane when using the Amazon ECS console. + awslogs-datetime-format Required: No This option defines a multiline start pattern in Python strftime format. A log message consists of a line that matches the pattern and any following lines that don\u2019t match the pattern. The matched line is the delimiter between log messages. One example of a use case for using this format is for parsing output such as a stack dump, which might otherwise be logged in multiple entries. The correct pattern allows it to be captured in a single entry. For more information, see awslogs-datetime-format. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + awslogs-multiline-pattern Required: No This option defines a multiline start pattern that uses a regular expression. A log message consists of a line that matches the pattern and any following lines that don\u2019t match the pattern. The matched line is the delimiter between log messages. For more information, see awslogs-multiline-pattern. This option is ignored if awslogs-datetime-format is also configured. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + mode Required: No Valid values: non-blocking | blocking This option defines the delivery mode of log messages from the container to CloudWatch Logs. The delivery mode you choose affects application availability when the flow of logs from container to CloudWatch is interrupted. If you use the blocking mode and the flow of logs to CloudWatch is interrupted, calls from container code to write to the stdout and stderr streams will block. The logging thread of the application will block as a result. This may cause the application to become unresponsive and lead to container healthcheck failure. If you use the non-blocking mode, the container's logs are instead stored in an in-memory intermediate buffer configured with the max-buffer-size option. This prevents the application from becoming unresponsive when logs cannot be sent to CloudWatch. We recommend using this mode if you want to ensure service availability and are okay with some log loss. For more information, see Preventing log loss with non-blocking mode in the awslogs container log driver. + max-buffer-size Required: No Default value: 1m When non-blocking mode is used, the max-buffer-size log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost. \n To route logs using the ``splunk`` log router, you need to specify a ``splunk-token`` and a ``splunk-url``.\n When you use the ``awsfirelens`` log router to route logs to an AWS Service or AWS Partner Network destination for log storage and analytics, you can set the ``log-driver-buffer-limit`` option to limit the number of events that are buffered in memory, before being sent to the log router container. It can help to resolve potential log loss issue because high throughput might result in memory running out for the buffer inside of Docker.\n Other options you can specify when using ``awsfirelens`` to route logs depend on the destination. When you export logs to Amazon Data Firehose, you can specify the AWS Region with ``region`` and a name for the log stream with ``delivery_stream``.\n When you export logs to Amazon Kinesis Data Streams, you can specify an AWS Region with ``region`` and a data stream name with ``stream``.\n When you export logs to Amazon OpenSearch Service, you can specify options like ``Name``, ``Host`` (OpenSearch Service endpoint without protocol), ``Port``, ``Index``, ``Type``, ``Aws_auth``, ``Aws_region``, ``Suppress_Type_Name``, and ``tls``. For more information, see [Under the hood: FireLens for Amazon ECS Tasks](https://docs.aws.amazon.com/containers/under-the-hood-firelens-for-amazon-ecs-tasks/).\n When you export logs to Amazon S3, you can specify the bucket using the ``bucket`` option. You can also specify ``region``, ``total_file_size``, ``upload_timeout``, and ``use_put_object`` as options.\n This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "SecretOptions": { + "description": "The secrets to pass to the log configuration. For more information, see [Specifying sensitive data](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html) in the *Amazon Elastic Container Service Developer Guide*.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Secret" + }, + "type": "array" + } + }, + "type": "object" + }, + "NetworkConfiguration": { + "additionalProperties": false, + "description": "The network configuration for a task or service.", + "properties": { + "AwsvpcConfiguration": { + "$ref": "#/definitions/AwsVpcConfiguration", + "description": "The VPC subnets and security groups that are associated with a task.\n All specified subnets and security groups must be from the same VPC." + } + }, + "type": "object" + }, + "PlacementConstraint": { + "additionalProperties": false, + "description": "An object representing a constraint on task placement. For more information, see [Task placement constraints](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html) in the *Amazon Elastic Container Service Developer Guide*.\n If you're using the Fargate launch type, task placement constraints aren't supported.", + "properties": { + "Expression": { + "description": "A cluster query language expression to apply to the constraint. The expression can have a maximum length of 2000 characters. You can't specify an expression if the constraint type is ``distinctInstance``. For more information, see [Cluster query language](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html) in the *Amazon Elastic Container Service Developer Guide*.", + "type": "string" + }, + "Type": { + "description": "The type of constraint. Use ``distinctInstance`` to ensure that each task in a particular group is running on a different container instance. Use ``memberOf`` to restrict the selection to a group of valid candidates.", + "enum": [ + "distinctInstance", + "memberOf" + ], + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "PlacementStrategy": { + "additionalProperties": false, + "description": "The task placement strategy for a task or service. For more information, see [Task placement strategies](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-strategies.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "Field": { + "description": "The field to apply the placement strategy against. For the ``spread`` placement strategy, valid values are ``instanceId`` (or ``host``, which has the same effect), or any platform or custom attribute that's applied to a container instance, such as ``attribute:ecs.availability-zone``. For the ``binpack`` placement strategy, valid values are ``cpu`` and ``memory``. For the ``random`` placement strategy, this field is not used.", + "type": "string" + }, + "Type": { + "description": "The type of placement strategy. The ``random`` placement strategy randomly places tasks on available candidates. The ``spread`` placement strategy spreads placement across available candidates evenly based on the ``field`` parameter. The ``binpack`` strategy places tasks on available candidates that have the least available amount of the resource that's specified with the ``field`` parameter. For example, if you binpack on memory, a task is placed on the instance with the least amount of remaining memory but still enough to run the task.", + "enum": [ + "binpack", + "random", + "spread" + ], + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "Secret": { + "additionalProperties": false, + "description": "An object representing the secret to expose to your container. Secrets can be exposed to a container in the following ways:\n + To inject sensitive data into your containers as environment variables, use the ``secrets`` container definition parameter.\n + To reference sensitive information in the log configuration of a container, use the ``secretOptions`` container definition parameter.\n \n For more information, see [Specifying sensitive data](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "Name": { + "description": "The name of the secret.", + "type": "string" + }, + "ValueFrom": { + "description": "The secret to expose to the container. The supported values are either the full ARN of the ASMlong secret or the full ARN of the parameter in the SSM Parameter Store.\n For information about the require IAMlong permissions, see [Required IAM permissions for Amazon ECS secrets](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-secrets.html#secrets-iam) (for Secrets Manager) or [Required IAM permissions for Amazon ECS secrets](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-parameters.html) (for Systems Manager Parameter store) in the *Amazon Elastic Container Service Developer Guide*.\n If the SSM Parameter Store parameter exists in the same Region as the task you're launching, then you can use either the full ARN or name of the parameter. If the parameter exists in a different Region, then the full ARN must be specified.", + "type": "string" + } + }, + "required": [ + "Name", + "ValueFrom" + ], + "type": "object" + }, + "ServiceConnectClientAlias": { + "additionalProperties": false, + "description": "Each alias (\"endpoint\") is a fully-qualified name and port number that other tasks (\"clients\") can use to connect to this service.\n Each name and port mapping must be unique within the namespace.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "DnsName": { + "description": "The ``dnsName`` is the name that you use in the applications of client tasks to connect to this service. The name must be a valid DNS name but doesn't need to be fully-qualified. The name can include up to 127 characters. The name can include lowercase letters, numbers, underscores (_), hyphens (-), and periods (.). The name can't start with a hyphen.\n If this parameter isn't specified, the default value of ``discoveryName.namespace`` is used. If the ``discoveryName`` isn't specified, the port mapping name from the task definition is used in ``portName.namespace``.\n To avoid changing your applications in client Amazon ECS services, set this to the same name that the client application uses by default. For example, a few common names are ``database``, ``db``, or the lowercase name of a database, such as ``mysql`` or ``redis``. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", + "type": "string" + }, + "Port": { + "description": "The listening port number for the Service Connect proxy. This port is available inside of all of the tasks within the same namespace.\n To avoid changing your applications in client Amazon ECS services, set this to the same port that the client application uses by default. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", + "type": "integer" + } + }, + "required": [ + "Port" + ], + "type": "object" + }, + "ServiceConnectConfiguration": { + "additionalProperties": false, + "description": "The Service Connect configuration of your Amazon ECS service. The configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "Enabled": { + "description": "Specifies whether to use Service Connect with this service.", + "type": "boolean" + }, + "LogConfiguration": { + "$ref": "#/definitions/LogConfiguration", + "description": "The log configuration for the container. This parameter maps to ``LogConfig`` in the docker container create command and the ``--log-driver`` option to docker run.\n By default, containers use the same logging driver that the Docker daemon uses. However, the container might use a different logging driver than the Docker daemon by specifying a log driver configuration in the container definition.\n Understand the following when specifying a log configuration for your containers.\n + Amazon ECS currently supports a subset of the logging drivers available to the Docker daemon. Additional log drivers may be available in future releases of the Amazon ECS container agent.\n For tasks on FARGATElong, the supported log drivers are ``awslogs``, ``splunk``, and ``awsfirelens``.\n For tasks hosted on Amazon EC2 instances, the supported log drivers are ``awslogs``, ``fluentd``, ``gelf``, ``json-file``, ``journald``,``syslog``, ``splunk``, and ``awsfirelens``.\n + This parameter requires version 1.18 of the Docker Remote API or greater on your container instance.\n + For tasks that are hosted on Amazon EC2 instances, the Amazon ECS container agent must register the available logging drivers with the ``ECS_AVAILABLE_LOGGING_DRIVERS`` environment variable before containers placed on that instance can use these log configuration options. For more information, see [Amazon ECS container agent configuration](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html) in the *Amazon Elastic Container Service Developer Guide*.\n + For tasks that are on FARGATElong, because you don't have access to the underlying infrastructure your tasks are hosted on, any additional software needed must be installed outside of the task. For example, the Fluentd output aggregators or a remote host running Logstash to send Gelf logs to." + }, + "Namespace": { + "description": "The namespace name or full Amazon Resource Name (ARN) of the CMAPlong namespace for use with Service Connect. The namespace must be in the same AWS Region as the Amazon ECS service and cluster. The type of namespace doesn't affect Service Connect. For more information about CMAPlong, see [Working with Services](https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html) in the *Developer Guide*.", + "type": "string" + }, + "Services": { + "description": "The list of Service Connect service objects. These are names and aliases (also known as endpoints) that are used by other Amazon ECS services to connect to this service. \n This field is not required for a \"client\" Amazon ECS service that's a member of a namespace only to connect to other services within the namespace. An example of this would be a frontend application that accepts incoming requests from either a load balancer that's attached to the service or by other means.\n An object selects a port from the task definition, assigns a name for the CMAPlong service, and a list of aliases (endpoints) and ports for client applications to refer to this service.", + "items": { + "$ref": "#/definitions/ServiceConnectService" + }, + "type": "array" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "ServiceConnectService": { + "additionalProperties": false, + "description": "The Service Connect service object configuration. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "ClientAliases": { + "description": "The list of client aliases for this Service Connect service. You use these to assign names that can be used by client applications. The maximum number of client aliases that you can have in this list is 1.\n Each alias (\"endpoint\") is a fully-qualified name and port number that other Amazon ECS tasks (\"clients\") can use to connect to this service.\n Each name and port mapping must be unique within the namespace.\n For each ``ServiceConnectService``, you must provide at least one ``clientAlias`` with one ``port``.", + "items": { + "$ref": "#/definitions/ServiceConnectClientAlias" + }, + "type": "array" + }, + "DiscoveryName": { + "description": "The ``discoveryName`` is the name of the new CMAP service that Amazon ECS creates for this Amazon ECS service. This must be unique within the CMAP namespace. The name can contain up to 64 characters. The name can include lowercase letters, numbers, underscores (_), and hyphens (-). The name can't start with a hyphen.\n If the ``discoveryName`` isn't specified, the port mapping name from the task definition is used in ``portName.namespace``.", + "type": "string" + }, + "IngressPortOverride": { + "description": "The port number for the Service Connect proxy to listen on.\n Use the value of this field to bypass the proxy for traffic on the port number specified in the named ``portMapping`` in the task definition of this application, and then use it in your VPC security groups to allow traffic into the proxy for this Amazon ECS service.\n In ``awsvpc`` mode and Fargate, the default value is the container port number. The container port number is in the ``portMapping`` in the task definition. In bridge mode, the default value is the ephemeral port of the Service Connect proxy.", + "type": "integer" + }, + "PortName": { + "description": "The ``portName`` must match the name of one of the ``portMappings`` from all the containers in the task definition of this Amazon ECS service.", + "type": "string" + }, + "Timeout": { + "$ref": "#/definitions/TimeoutConfiguration", + "description": "A reference to an object that represents the configured timeouts for Service Connect." + }, + "Tls": { + "$ref": "#/definitions/ServiceConnectTlsConfiguration", + "description": "A reference to an object that represents a Transport Layer Security (TLS) configuration." + } + }, + "required": [ + "PortName" + ], + "type": "object" + }, + "ServiceConnectTlsCertificateAuthority": { + "additionalProperties": false, + "description": "The certificate root authority that secures your service.", + "properties": { + "AwsPcaAuthorityArn": { + "description": "The ARN of the AWS Private Certificate Authority certificate.", + "type": "string" + } + }, + "type": "object" + }, + "ServiceConnectTlsConfiguration": { + "additionalProperties": false, + "description": "The key that encrypts and decrypts your resources for Service Connect TLS.", + "properties": { + "IssuerCertificateAuthority": { + "$ref": "#/definitions/ServiceConnectTlsCertificateAuthority", + "description": "The signer certificate authority." + }, + "KmsKey": { + "description": "The AWS Key Management Service key.", + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM role that's associated with the Service Connect TLS.", + "type": "string" + } + }, + "required": [ + "IssuerCertificateAuthority" + ], + "type": "object" + }, + "ServiceManagedEBSVolumeConfiguration": { + "additionalProperties": false, + "description": "The configuration for the Amazon EBS volume that Amazon ECS creates and manages on your behalf. These settings are used to create each Amazon EBS volume, with one volume created for each task in the service. For information about the supported launch types and operating systems, see [Supported operating systems and launch types](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html#ebs-volumes-configuration) in the*Amazon Elastic Container Service Developer Guide*.\n Many of these parameters map 1:1 with the Amazon EBS ``CreateVolume`` API request parameters.", + "properties": { + "Encrypted": { + "description": "Indicates whether the volume should be encrypted. If no value is specified, encryption is turned on by default. This parameter maps 1:1 with the ``Encrypted`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.", + "type": "boolean" + }, + "FilesystemType": { + "description": "The filesystem type for the volume. For volumes created from a snapshot, you must specify the same filesystem type that the volume was using when the snapshot was created. If there is a filesystem type mismatch, the task will fail to start.\n The available Linux filesystem types are\u2028 ``ext3``, ``ext4``, and ``xfs``. If no value is specified, the ``xfs`` filesystem type is used by default.\n The available Windows filesystem types are ``NTFS``.", + "type": "string" + }, + "Iops": { + "description": "The number of I/O operations per second (IOPS). For ``gp3``, ``io1``, and ``io2`` volumes, this represents the number of IOPS that are provisioned for the volume. For ``gp2`` volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting.\n The following are the supported values for each volume type.\n + ``gp3``: 3,000 - 16,000 IOPS\n + ``io1``: 100 - 64,000 IOPS\n + ``io2``: 100 - 256,000 IOPS\n \n This parameter is required for ``io1`` and ``io2`` volume types. The default for ``gp3`` volumes is ``3,000 IOPS``. This parameter is not supported for ``st1``, ``sc1``, or ``standard`` volume types.\n This parameter maps 1:1 with the ``Iops`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.", + "type": "integer" + }, + "KmsKeyId": { + "description": "The Amazon Resource Name (ARN) identifier of the AWS Key Management Service key to use for Amazon EBS encryption. When encryption is turned on and no AWS Key Management Service key is specified, the default AWS managed key for Amazon EBS volumes is used. This parameter maps 1:1 with the ``KmsKeyId`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.\n AWS authenticates the AWS Key Management Service key asynchronously. Therefore, if you specify an ID, alias, or ARN that is invalid, the action can appear to complete, but eventually fails.", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the IAM role to associate with this volume. This is the Amazon ECS infrastructure IAM role that is used to manage your AWS infrastructure. We recommend using the Amazon ECS-managed ``AmazonECSInfrastructureRolePolicyForVolumes`` IAM policy with this role. For more information, see [Amazon ECS infrastructure IAM role](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/infrastructure_IAM_role.html) in the *Amazon ECS Developer Guide*.", + "type": "string" + }, + "SizeInGiB": { + "description": "The size of the volume in GiB. You must specify either a volume size or a snapshot ID. If you specify a snapshot ID, the snapshot size is used for the volume size by default. You can optionally specify a volume size greater than or equal to the snapshot size. This parameter maps 1:1 with the ``Size`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.\n The following are the supported volume size values for each volume type.\n + ``gp2`` and ``gp3``: 1-16,384\n + ``io1`` and ``io2``: 4-16,384\n + ``st1`` and ``sc1``: 125-16,384\n + ``standard``: 1-1,024", + "type": "integer" + }, + "SnapshotId": { + "description": "The snapshot that Amazon ECS uses to create the volume. You must specify either a snapshot ID or a volume size. This parameter maps 1:1 with the ``SnapshotId`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.", + "type": "string" + }, + "TagSpecifications": { + "description": "The tags to apply to the volume. Amazon ECS applies service-managed tags by default. This parameter maps 1:1 with the ``TagSpecifications.N`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.", + "items": { + "$ref": "#/definitions/EBSTagSpecification" + }, + "type": "array" + }, + "Throughput": { + "description": "The throughput to provision for a volume, in MiB/s, with a maximum of 1,000 MiB/s. This parameter maps 1:1 with the ``Throughput`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*.\n This parameter is only supported for the ``gp3`` volume type.", + "type": "integer" + }, + "VolumeType": { + "description": "The volume type. This parameter maps 1:1 with the ``VolumeType`` parameter of the [CreateVolume API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) in the *Amazon EC2 API Reference*. For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html) in the *Amazon EC2 User Guide*.\n The following are the supported volume types.\n + General Purpose SSD: ``gp2``|``gp3`` \n + Provisioned IOPS SSD: ``io1``|``io2`` \n + Throughput Optimized HDD: ``st1`` \n + Cold HDD: ``sc1`` \n + Magnetic: ``standard`` \n The magnetic volume type is not supported on Fargate.", + "type": "string" + } + }, + "required": [ + "RoleArn" + ], + "type": "object" + }, + "ServiceRegistry": { + "additionalProperties": false, + "description": "The details for the service registry.\n Each service may be associated with one service registry. Multiple service registries for each service are not supported.\n When you add, update, or remove the service registries configuration, Amazon ECS starts a new deployment. New tasks are registered and deregistered to the updated service registry configuration.", + "properties": { + "ContainerName": { + "description": "The container name value to be used for your service discovery service. It's already specified in the task definition. If the task definition that your service task specifies uses the ``bridge`` or ``host`` network mode, you must specify a ``containerName`` and ``containerPort`` combination from the task definition. If the task definition that your service task specifies uses the ``awsvpc`` network mode and a type SRV DNS record is used, you must specify either a ``containerName`` and ``containerPort`` combination or a ``port`` value. However, you can't specify both.", + "type": "string" + }, + "ContainerPort": { + "description": "The port value to be used for your service discovery service. It's already specified in the task definition. If the task definition your service task specifies uses the ``bridge`` or ``host`` network mode, you must specify a ``containerName`` and ``containerPort`` combination from the task definition. If the task definition your service task specifies uses the ``awsvpc`` network mode and a type SRV DNS record is used, you must specify either a ``containerName`` and ``containerPort`` combination or a ``port`` value. However, you can't specify both.", + "type": "integer" + }, + "Port": { + "description": "The port value used if your service discovery service specified an SRV record. This field might be used if both the ``awsvpc`` network mode and SRV records are used.", + "type": "integer" + }, + "RegistryArn": { + "description": "The Amazon Resource Name (ARN) of the service registry. The currently supported service registry is CMAP. For more information, see [CreateService](https://docs.aws.amazon.com/cloud-map/latest/api/API_CreateService.html).", + "type": "string" + } + }, + "type": "object" + }, + "ServiceVolumeConfiguration": { + "additionalProperties": false, + "description": "The configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume.", + "properties": { + "ManagedEBSVolume": { + "$ref": "#/definitions/ServiceManagedEBSVolumeConfiguration", + "description": "The configuration for the Amazon EBS volume that Amazon ECS creates and manages on your behalf. These settings are used to create each Amazon EBS volume, with one volume created for each task in the service. The Amazon EBS volumes are visible in your account in the Amazon EC2 console once they are created." + }, + "Name": { + "description": "The name of the volume. This value must match the volume name from the ``Volume`` object in the task definition.", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "The metadata that you apply to a resource to help you categorize and organize them. Each tag consists of a key and an optional value. You define them.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.\n \n In order to tag a service that has the following ARN format, you need to migrate the service to the long ARN. You must use the API, CLI or console to migrate the service ARN. For more information, see [Migrate an short service ARN to a long ARN](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-arn-migration.html) in the *Developer Guide*.\n ``arn:aws:ecs:region:aws_account_id:service/service-name`` \n After the migration is complete, the following are true:\n + The service ARN is: ``arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name`` \n + You can use CFN to tag the service as you would a service with a long ARN format.\n + When the ``PhysicalResourceId`` in the CFN stack represents a service, the value does not change and will be the short service ARN.", + "properties": { + "Key": { + "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", + "type": "string" + }, + "Value": { + "description": "The optional part of a key-value pair that make up a tag. A ``value`` acts as a descriptor within a tag category (key).", + "type": "string" + } + }, + "type": "object" + }, + "TimeoutConfiguration": { + "additionalProperties": false, + "description": "An object that represents the timeout configurations for Service Connect.\n If ``idleTimeout`` is set to a time that is less than ``perRequestTimeout``, the connection will close when the ``idleTimeout`` is reached and not the ``perRequestTimeout``.", + "properties": { + "IdleTimeoutSeconds": { + "description": "The amount of time in seconds a connection will stay active while idle. A value of ``0`` can be set to disable ``idleTimeout``.\n The ``idleTimeout`` default for ``HTTP``/``HTTP2``/``GRPC`` is 5 minutes.\n The ``idleTimeout`` default for ``TCP`` is 1 hour.", + "type": "integer" + }, + "PerRequestTimeoutSeconds": { + "description": "The amount of time waiting for the upstream to respond with a complete response per request. A value of ``0`` can be set to disable ``perRequestTimeout``. ``perRequestTimeout`` can only be set if Service Connect ``appProtocol`` isn't ``TCP``. Only ``idleTimeout`` is allowed for ``TCP`` ``appProtocol``.", + "type": "integer" + } + }, + "type": "object" + }, + "VpcLatticeConfiguration": { + "additionalProperties": false, + "description": "The VPC Lattice configuration for your service that holds the information for the target group(s) Amazon ECS tasks will be registered to.", + "properties": { + "PortName": { + "description": "The name of the port mapping to register in the VPC Lattice target group. This is the name of the ``portMapping`` you defined in your task definition.", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the IAM role to associate with this VPC Lattice configuration. This is the Amazon ECS\u2028 infrastructure IAM role that is used to manage your VPC Lattice infrastructure.", + "type": "string" + }, + "TargetGroupArn": { + "description": "The full Amazon Resource Name (ARN) of the target group or groups associated with the VPC Lattice configuration that the Amazon ECS tasks will be registered to.", + "type": "string" + } + }, + "required": [ + "RoleArn", + "TargetGroupArn", + "PortName" + ], + "type": "object" + } + }, + "description": "The ``AWS::ECS::Service`` resource creates an Amazon Elastic Container Service (Amazon ECS) service that runs and maintains the requested number of tasks and associated load balancers.\n The stack update fails if you change any properties that require replacement and at least one ECS Service Connect ``ServiceConnectConfiguration`` property is configured. This is because AWS CloudFormation creates the replacement service first, but each ``ServiceConnectService`` must have a name that is unique in the namespace.\n Starting April 15, 2023, AWS; will not onboard new customers to Amazon Elastic Inference (EI), and will help current customers migrate their workloads to options that offer better price and performance. After April 15, 2023, new customers will not be able to launch instances with Amazon EI accelerators in Amazon SageMaker, ECS, or EC2. However, customers who have used Amazon EI at least once during the past 30-day period are considered current customers and will be able to continue using the service.", + "handlers": { + "create": { + "permissions": [ + "ecs:CreateService", + "ecs:DescribeServices", + "iam:PassRole", + "ecs:TagResource" + ], + "timeoutInMinutes": 180 + }, + "delete": { + "permissions": [ + "ecs:DeleteService", + "ecs:DescribeServices" + ], + "timeoutInMinutes": 30 + }, + "list": { + "permissions": [ + "ecs:DescribeServices", + "ecs:ListClusters", + "ecs:ListServices" + ] + }, + "read": { + "permissions": [ + "ecs:DescribeServices" + ] + }, + "update": { + "permissions": [ + "ecs:DescribeServices", + "ecs:ListTagsForResource", + "ecs:TagResource", + "ecs:UntagResource", + "ecs:UpdateService" + ], + "timeoutInMinutes": 180 + } + }, + "primaryIdentifier": [ + "/properties/ServiceArn", + "/properties/Cluster" + ], + "properties": { + "AvailabilityZoneRebalancing": { + "default": "DISABLED", + "description": "Indicates whether to use Availability Zone rebalancing for the service.\n For more information, see [Balancing an Amazon ECS service across Availability Zones](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-rebalancing.html) in the *Amazon Elastic Container Service Developer Guide*.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "CapacityProviderStrategy": { + "description": "The capacity provider strategy to use for the service.\n If a ``capacityProviderStrategy`` is specified, the ``launchType`` parameter must be omitted. If no ``capacityProviderStrategy`` or ``launchType`` is specified, the ``defaultCapacityProviderStrategy`` for the cluster is used.\n A capacity provider strategy can contain a maximum of 20 capacity providers.\n To remove this property from your service resource, specify an empty ``CapacityProviderStrategyItem`` array.", + "items": { + "$ref": "#/definitions/CapacityProviderStrategyItem" + }, + "type": "array" + }, + "Cluster": { + "description": "The short name or full Amazon Resource Name (ARN) of the cluster that you run your service on. If you do not specify a cluster, the default cluster is assumed.", + "type": "string" + }, + "DeploymentConfiguration": { + "$ref": "#/definitions/DeploymentConfiguration", + "description": "Optional deployment parameters that control how many tasks run during the deployment and the ordering of stopping and starting tasks." + }, + "DeploymentController": { + "$ref": "#/definitions/DeploymentController", + "description": "The deployment controller to use for the service. If no deployment controller is specified, the default value of ``ECS`` is used." + }, + "DesiredCount": { + "description": "The number of instantiations of the specified task definition to place and keep running in your service.\n For new services, if a desired count is not specified, a default value of ``1`` is used. When using the ``DAEMON`` scheduling strategy, the desired count is not required.\n For existing services, if a desired count is not specified, it is omitted from the operation.", + "type": "integer" + }, + "EnableECSManagedTags": { + "description": "Specifies whether to turn on Amazon ECS managed tags for the tasks within the service. For more information, see [Tagging your Amazon ECS resources](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html) in the *Amazon Elastic Container Service Developer Guide*.\n When you use Amazon ECS managed tags, you need to set the ``propagateTags`` request parameter.", + "type": "boolean" + }, + "EnableExecuteCommand": { + "description": "Determines whether the execute command functionality is turned on for the service. If ``true``, the execute command functionality is turned on for all containers in tasks as part of the service.", + "type": "boolean" + }, + "HealthCheckGracePeriodSeconds": { + "description": "The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing, VPC Lattice, and container health checks after a task has first started. If you don't specify a health check grace period value, the default value of ``0`` is used. If you don't use any of the health checks, then ``healthCheckGracePeriodSeconds`` is unused.\n If your service's tasks take a while to start and respond to health checks, you can specify a health check grace period of up to 2,147,483,647 seconds (about 69 years). During that time, the Amazon ECS service scheduler ignores health check status. This grace period can prevent the service scheduler from marking tasks as unhealthy and stopping them before they have time to come up.", + "type": "integer" + }, + "LaunchType": { + "description": "The launch type on which to run your service. For more information, see [Amazon ECS Launch Types](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) in the *Amazon Elastic Container Service Developer Guide*.", + "enum": [ + "EC2", + "FARGATE", + "EXTERNAL" + ], + "type": "string" + }, + "LoadBalancers": { + "description": "A list of load balancer objects to associate with the service. If you specify the ``Role`` property, ``LoadBalancers`` must be specified as well. For information about the number of load balancers that you can specify per service, see [Service Load Balancing](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html) in the *Amazon Elastic Container Service Developer Guide*.\n To remove this property from your service resource, specify an empty ``LoadBalancer`` array.", + "items": { + "$ref": "#/definitions/LoadBalancer" + }, + "type": "array" + }, + "Name": { + "description": "", + "type": "string" + }, + "NetworkConfiguration": { + "$ref": "#/definitions/NetworkConfiguration", + "description": "The network configuration for the service. This parameter is required for task definitions that use the ``awsvpc`` network mode to receive their own elastic network interface, and it is not supported for other network modes. For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) in the *Amazon Elastic Container Service Developer Guide*." + }, + "PlacementConstraints": { + "description": "An array of placement constraint objects to use for tasks in your service. You can specify a maximum of 10 constraints for each task. This limit includes constraints in the task definition and those specified at runtime.\n To remove this property from your service resource, specify an empty ``PlacementConstraint`` array.", + "items": { + "$ref": "#/definitions/PlacementConstraint" + }, + "type": "array" + }, + "PlacementStrategies": { + "description": "The placement strategy objects to use for tasks in your service. You can specify a maximum of 5 strategy rules for each service.\n To remove this property from your service resource, specify an empty ``PlacementStrategy`` array.", + "items": { + "$ref": "#/definitions/PlacementStrategy" + }, + "type": "array" + }, + "PlatformVersion": { + "default": "LATEST", + "description": "The platform version that your tasks in the service are running on. A platform version is specified only for tasks using the Fargate launch type. If one isn't specified, the ``LATEST`` platform version is used. For more information, see [platform versions](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html) in the *Amazon Elastic Container Service Developer Guide*.", + "type": "string" + }, + "PropagateTags": { + "description": "Specifies whether to propagate the tags from the task definition to the task. If no value is specified, the tags aren't propagated. Tags can only be propagated to the task during task creation. To add tags to a task after task creation, use the [TagResource](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TagResource.html) API action.\n You must set this to a value other than ``NONE`` when you use Cost Explorer. For more information, see [Amazon ECS usage reports](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/usage-reports.html) in the *Amazon Elastic Container Service Developer Guide*.\n The default is ``NONE``.", + "enum": [ + "SERVICE", + "TASK_DEFINITION" + ], + "type": "string" + }, + "Role": { + "description": "The name or full Amazon Resource Name (ARN) of the IAM role that allows Amazon ECS to make calls to your load balancer on your behalf. This parameter is only permitted if you are using a load balancer with your service and your task definition doesn't use the ``awsvpc`` network mode. If you specify the ``role`` parameter, you must also specify a load balancer object with the ``loadBalancers`` parameter.\n If your account has already created the Amazon ECS service-linked role, that role is used for your service unless you specify a role here. The service-linked role is required if your task definition uses the ``awsvpc`` network mode or if the service is configured to use service discovery, an external deployment controller, multiple target groups, or Elastic Inference accelerators in which case you don't specify a role here. For more information, see [Using service-linked roles for Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using-service-linked-roles.html) in the *Amazon Elastic Container Service Developer Guide*.\n If your specified role has a path other than ``/``, then you must either specify the full role ARN (this is recommended) or prefix the role name with the path. For example, if a role with the name ``bar`` has a path of ``/foo/`` then you would specify ``/foo/bar`` as the role name. For more information, see [Friendly names and paths](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-friendly-names) in the *IAM User Guide*.", + "type": "string" + }, + "SchedulingStrategy": { + "description": "The scheduling strategy to use for the service. For more information, see [Services](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html).\n There are two service scheduler strategies available:\n + ``REPLICA``-The replica scheduling strategy places and maintains the desired number of tasks across your cluster. By default, the service scheduler spreads tasks across Availability Zones. You can use task placement strategies and constraints to customize task placement decisions. This scheduler strategy is required if the service uses the ``CODE_DEPLOY`` or ``EXTERNAL`` deployment controller types.\n + ``DAEMON``-The daemon scheduling strategy deploys exactly one task on each active container instance that meets all of the task placement constraints that you specify in your cluster. The service scheduler also evaluates the task placement constraints for running tasks and will stop tasks that don't meet the placement constraints. When you're using this strategy, you don't need to specify a desired number of tasks, a task placement strategy, or use Service Auto Scaling policies.\n Tasks using the Fargate launch type or the ``CODE_DEPLOY`` or ``EXTERNAL`` deployment controller types don't support the ``DAEMON`` scheduling strategy.", + "enum": [ + "DAEMON", + "REPLICA" + ], + "type": "string" + }, + "ServiceArn": { + "description": "", + "type": "string" + }, + "ServiceConnectConfiguration": { + "$ref": "#/definitions/ServiceConnectConfiguration", + "description": "The configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*." + }, + "ServiceName": { + "description": "The name of your service. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed. Service names must be unique within a cluster, but you can have similarly named services in multiple clusters within a Region or across multiple Regions.\n The stack update fails if you change any properties that require replacement and the ``ServiceName`` is configured. This is because AWS CloudFormation creates the replacement service first, but each ``ServiceName`` must be unique in the cluster.", + "type": "string" + }, + "ServiceRegistries": { + "description": "The details of the service discovery registry to associate with this service. For more information, see [Service discovery](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html).\n Each service may be associated with one service registry. Multiple service registries for each service isn't supported.\n To remove this property from your service resource, specify an empty ``ServiceRegistry`` array.", + "items": { + "$ref": "#/definitions/ServiceRegistry" + }, + "type": "array" + }, + "Tags": { + "description": "The metadata that you apply to the service to help you categorize and organize them. Each tag consists of a key and an optional value, both of which you define. When a service is deleted, the tags are deleted as well.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TaskDefinition": { + "description": "The ``family`` and ``revision`` (``family:revision``) or full ARN of the task definition to run in your service. If a ``revision`` isn't specified, the latest ``ACTIVE`` revision is used.\n A task definition must be specified if the service uses either the ``ECS`` or ``CODE_DEPLOY`` deployment controllers.\n For more information about deployment types, see [Amazon ECS deployment types](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html).", + "type": "string" + }, + "VolumeConfigurations": { + "description": "The configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume.\n To remove this property from your service resource, specify an empty ``ServiceVolumeConfiguration`` array.", + "items": { + "$ref": "#/definitions/ServiceVolumeConfiguration" + }, + "type": "array" + }, + "VpcLatticeConfigurations": { + "description": "The VPC Lattice configuration for the service being created.", + "items": { + "$ref": "#/definitions/VpcLatticeConfiguration" + }, + "type": "array" + } + }, + "propertyTransform": { + "/properties/Role": "Role $OR $join([\"arn:(aws)[-]{0,1}[a-z]{0,3}[-]{0,1}[a-z]{0,3}:iam::[0-9]{12}[:]role/{1}\", Role])", + "/properties/TaskDefinition": "TaskDefinition $OR $join([\"arn:(aws)[-]{0,1}[a-z]{0,3}[-]{0,1}[a-z]{0,3}:ecs:[a-z0-9-]+:[0-9]{12}:task-definition/\", $contains(TaskDefinition,\":\")?TaskDefinition:$join([TaskDefinition, \":[0-9]+\"])])" + }, + "readOnlyProperties": [ + "/properties/ServiceArn", + "/properties/Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ecs:TagResource", + "ecs:UntagResource", + "ecs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ECS::Service", + "writeOnlyProperties": [ + "/properties/ServiceConnectConfiguration", + "/properties/VolumeConfigurations" + ] +} diff --git a/src/schema/aws-ecs-taskdefinition.json b/src/schema/aws-ecs-taskdefinition.json index 587f6abb..2db0ee3c 100644 --- a/src/schema/aws-ecs-taskdefinition.json +++ b/src/schema/aws-ecs-taskdefinition.json @@ -1,1175 +1,1180 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Family", - "/properties/ContainerDefinitions", - "/properties/Cpu", - "/properties/ExecutionRoleArn", - "/properties/InferenceAccelerators", - "/properties/Memory", - "/properties/NetworkMode", - "/properties/PlacementConstraints", - "/properties/ProxyConfiguration", - "/properties/RequiresCompatibilities", - "/properties/RuntimePlatform", - "/properties/TaskRoleArn", - "/properties/Volumes", - "/properties/PidMode", - "/properties/IpcMode", - "/properties/EphemeralStorage" - ], - "definitions": { - "AuthorizationConfig": { - "additionalProperties": false, - "description": "The authorization configuration details for the Amazon EFS file system.", - "properties": { - "AccessPointId": { - "description": "The Amazon EFS access point ID to use. If an access point is specified, the root directory value specified in the ``EFSVolumeConfiguration`` must either be omitted or set to ``/`` which will enforce the path set on the EFS access point. If an access point is used, transit encryption must be on in the ``EFSVolumeConfiguration``. For more information, see [Working with Amazon EFS access points](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) in the *Amazon Elastic File System User Guide*.", - "type": "string" - }, - "IAM": { - "description": "Determines whether to use the Amazon ECS task role defined in a task definition when mounting the Amazon EFS file system. If it is turned on, transit encryption must be turned on in the ``EFSVolumeConfiguration``. If this parameter is omitted, the default value of ``DISABLED`` is used. For more information, see [Using Amazon EFS access points](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/efs-volumes.html#efs-volume-accesspoints) in the *Amazon Elastic Container Service Developer Guide*.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - } - }, - "type": "object" - }, - "ContainerDefinition": { - "additionalProperties": false, - "description": "The ``ContainerDefinition`` property specifies a container definition. Container definitions are used in task definitions to describe the different containers that are launched as part of a task.", - "properties": { - "Command": { - "description": "The command that's passed to the container. This parameter maps to ``Cmd`` in the docker container create command and the ``COMMAND`` parameter to docker run. If there are multiple arguments, each argument is a separated string in the array.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "Cpu": { - "description": "The number of ``cpu`` units reserved for the container. This parameter maps to ``CpuShares`` in the docker container create commandand the ``--cpu-shares`` option to docker run.\n This field is optional for tasks using the Fargate launch type, and the only requirement is that the total amount of CPU reserved for all containers within a task be lower than the task-level ``cpu`` value.\n You can determine the number of CPU units that are available per EC2 instance type by multiplying the vCPUs listed for that instance type on the [Amazon EC2 Instances](https://docs.aws.amazon.com/ec2/instance-types/) detail page by 1,024.\n Linux containers share unallocated CPU units with other containers on the container instance with the same ratio as their allocated amount. For example, if you run a single-container task on a single-core instance type with 512 CPU units specified for that container, and that's the only task running on the container instance, that container could use the full 1,024 CPU unit share at any given time. However, if you launched another copy of the same task on that container instance, each task is guaranteed a minimum of 512 CPU units when needed. Moreover, each container could float to higher CPU usage if the other container was not using it. If both tasks were 100% active all of the time, they would be limited to 512 CPU units.\n On Linux container instances, the Docker daemon on the container instance uses the CPU value to calculate the relative CPU share ratios for running containers. The minimum valid CPU share value that the Linux kernel allows is 2, and the maximum valid CPU share value that the Linux kernel allows is 262144. However, the CPU parameter isn't required, and you can use CPU values below 2 or above 262144 in your container definitions. For CPU values below 2 (including null) or above 262144, the behavior varies based on your Amazon ECS container agent version:\n + *Agent versions less than or equal to 1.1.0:* Null and zero CPU values are passed to Docker as 0, which Docker then converts to 1,024 CPU shares. CPU values of 1 are passed to Docker as 1, which the Linux kernel converts to two CPU shares.\n + *Agent versions greater than or equal to 1.2.0:* Null, zero, and CPU values of 1 are passed to Docker as 2.\n + *Agent versions greater than or equal to 1.84.0:* CPU values greater than 256 vCPU are passed to Docker as 256, which is equivalent to 262144 CPU shares.\n \n On Windows container instances, the CPU limit is enforced as an absolute limit, or a quota. Windows containers only have access to the specified amount of CPU that's described in the task definition. A null or zero CPU value is passed to Docker as ``0``, which Windows interprets as 1% of one CPU.", - "type": "integer" - }, - "CredentialSpecs": { - "description": "A list of ARNs in SSM or Amazon S3 to a credential spec (``CredSpec``) file that configures the container for Active Directory authentication. We recommend that you use this parameter instead of the ``dockerSecurityOptions``. The maximum number of ARNs is 1.\n There are two formats for each ARN.\n + credentialspecdomainless:MyARN You use credentialspecdomainless:MyARN to provide a CredSpec with an additional section for a secret in . You provide the login credentials to the domain in the secret. Each task that runs on any container instance can join different domains. You can use this format without joining the container instance to a domain. + credentialspec:MyARN You use credentialspec:MyARN to provide a CredSpec for a single domain. You must join the container instance to the domain before you start any tasks that use this task definition. \n In both formats, replace ``MyARN`` with the ARN in SSM or Amazon S3.\n If you provide a ``credentialspecdomainless:MyARN``, the ``credspec`` must provide a ARN in ASMlong for a secret containing the username, password, and the domain to connect to. For better security, the instance isn't joined to the domain for domainless authentication. Other applications on the instance can't use the domainless credentials. You can use this parameter to run tasks on the same instance, even it the tasks need to join different domains. For more information, see [Using gMSAs for Windows Containers](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows-gmsa.html) and [Using gMSAs for Linux Containers](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/linux-gmsa.html).", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "DependsOn": { - "description": "The dependencies defined for container startup and shutdown. A container can contain multiple dependencies. When a dependency is defined for container startup, for container shutdown it is reversed.\n For tasks using the EC2 launch type, the container instances require at least version 1.26.0 of the container agent to turn on container dependencies. However, we recommend using the latest container agent version. For information about checking your agent version and updating to the latest version, see [Updating the Amazon ECS Container Agent](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) in the *Amazon Elastic Container Service Developer Guide*. If you're using an Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of the ``ecs-init`` package. If your container instances are launched from version ``20190301`` or later, then they contain the required versions of the container agent and ``ecs-init``. For more information, see [Amazon ECS-optimized Linux AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) in the *Amazon Elastic Container Service Developer Guide*.\n For tasks using the Fargate launch type, the task or service requires the following platforms:\n + Linux platform version ``1.3.0`` or later.\n + Windows platform version ``1.0.0`` or later.\n \n If the task definition is used in a blue/green deployment that uses [AWS::CodeDeploy::DeploymentGroup BlueGreenDeploymentConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-bluegreendeploymentconfiguration.html), the ``dependsOn`` parameter is not supported. For more information see [Issue #680](https://docs.aws.amazon.com/https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/680) on the on the GitHub website.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ContainerDependency" - }, - "type": "array" - }, - "DisableNetworking": { - "description": "When this parameter is true, networking is off within the container. This parameter maps to ``NetworkDisabled`` in the docker container create command.\n This parameter is not supported for Windows containers.", - "type": "boolean" - }, - "DnsSearchDomains": { - "description": "A list of DNS search domains that are presented to the container. This parameter maps to ``DnsSearch`` in the docker container create command and the ``--dns-search`` option to docker run.\n This parameter is not supported for Windows containers.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "DnsServers": { - "description": "A list of DNS servers that are presented to the container. This parameter maps to ``Dns`` in the docker container create command and the ``--dns`` option to docker run.\n This parameter is not supported for Windows containers.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "DockerLabels": { - "additionalProperties": false, - "description": "A key/value map of labels to add to the container. This parameter maps to ``Labels`` in the docker container create command and the ``--label`` option to docker run. This parameter requires version 1.18 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "DockerSecurityOptions": { - "description": "A list of strings to provide custom configuration for multiple security systems. This field isn't valid for containers in tasks using the Fargate launch type.\n For Linux tasks on EC2, this parameter can be used to reference custom labels for SELinux and AppArmor multi-level security systems.\n For any tasks on EC2, this parameter can be used to reference a credential spec file that configures a container for Active Directory authentication. For more information, see [Using gMSAs for Windows Containers](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows-gmsa.html) and [Using gMSAs for Linux Containers](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/linux-gmsa.html) in the *Amazon Elastic Container Service Developer Guide*.\n This parameter maps to ``SecurityOpt`` in the docker container create command and the ``--security-opt`` option to docker run.\n The Amazon ECS container agent running on a container instance must register with the ``ECS_SELINUX_CAPABLE=true`` or ``ECS_APPARMOR_CAPABLE=true`` environment variables before containers placed on that instance can use these security options. For more information, see [Amazon ECS Container Agent Configuration](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html) in the *Amazon Elastic Container Service Developer Guide*.\n Valid values: \"no-new-privileges\" | \"apparmor:PROFILE\" | \"label:value\" | \"credentialspec:CredentialSpecFilePath\"", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "EntryPoint": { - "description": "Early versions of the Amazon ECS container agent don't properly handle ``entryPoint`` parameters. If you have problems using ``entryPoint``, update your container agent or enter your commands and arguments as ``command`` array items instead.\n The entry point that's passed to the container. This parameter maps to ``Entrypoint`` in the docker container create command and the ``--entrypoint`` option to docker run.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "Environment": { - "description": "The environment variables to pass to a container. This parameter maps to ``Env`` in the docker container create command and the ``--env`` option to docker run.\n We don't recommend that you use plaintext environment variables for sensitive information, such as credential data.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/KeyValuePair" - }, - "type": "array", - "uniqueItems": true - }, - "EnvironmentFiles": { - "description": "A list of files containing the environment variables to pass to a container. This parameter maps to the ``--env-file`` option to docker run.\n You can specify up to ten environment files. The file must have a ``.env`` file extension. Each line in an environment file contains an environment variable in ``VARIABLE=VALUE`` format. Lines beginning with ``#`` are treated as comments and are ignored.\n If there are environment variables specified using the ``environment`` parameter in a container definition, they take precedence over the variables contained within an environment file. If multiple environment files are specified that contain the same variable, they're processed from the top down. We recommend that you use unique variable names. For more information, see [Specifying Environment Variables](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/taskdef-envfiles.html) in the *Amazon Elastic Container Service Developer Guide*.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/EnvironmentFile" - }, - "type": "array" - }, - "Essential": { - "description": "If the ``essential`` parameter of a container is marked as ``true``, and that container fails or stops for any reason, all other containers that are part of the task are stopped. If the ``essential`` parameter of a container is marked as ``false``, its failure doesn't affect the rest of the containers in a task. If this parameter is omitted, a container is assumed to be essential.\n All tasks must have at least one essential container. If you have an application that's composed of multiple containers, group containers that are used for a common purpose into components, and separate the different components into multiple task definitions. For more information, see [Application Architecture](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/application_architecture.html) in the *Amazon Elastic Container Service Developer Guide*.", - "type": "boolean" - }, - "ExtraHosts": { - "description": "A list of hostnames and IP address mappings to append to the ``/etc/hosts`` file on the container. This parameter maps to ``ExtraHosts`` in the docker container create command and the ``--add-host`` option to docker run.\n This parameter isn't supported for Windows containers or tasks that use the ``awsvpc`` network mode.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/HostEntry" - }, - "type": "array" - }, - "FirelensConfiguration": { - "$ref": "#/definitions/FirelensConfiguration", - "description": "The FireLens configuration for the container. This is used to specify and configure a log router for container logs. For more information, see [Custom Log Routing](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html) in the *Amazon Elastic Container Service Developer Guide*." - }, - "HealthCheck": { - "$ref": "#/definitions/HealthCheck", - "description": "The container health check command and associated configuration parameters for the container. This parameter maps to ``HealthCheck`` in the docker container create command and the ``HEALTHCHECK`` parameter of docker run." - }, - "Hostname": { - "description": "The hostname to use for your container. This parameter maps to ``Hostname`` in the docker container create command and the ``--hostname`` option to docker run.\n The ``hostname`` parameter is not supported if you're using the ``awsvpc`` network mode.", - "type": "string" - }, - "Image": { - "description": "The image used to start a container. This string is passed directly to the Docker daemon. By default, images in the Docker Hub registry are available. Other repositories are specified with either ``repository-url/image:tag`` or ``repository-url/image@digest``. Up to 255 letters (uppercase and lowercase), numbers, hyphens, underscores, colons, periods, forward slashes, and number signs are allowed. This parameter maps to ``Image`` in the docker container create command and the ``IMAGE`` parameter of docker run.\n + When a new task starts, the Amazon ECS container agent pulls the latest version of the specified image and tag for the container to use. However, subsequent updates to a repository image aren't propagated to already running tasks.\n + Images in Amazon ECR repositories can be specified by either using the full ``registry/repository:tag`` or ``registry/repository@digest``. For example, ``012345678910.dkr.ecr..amazonaws.com/:latest`` or ``012345678910.dkr.ecr..amazonaws.com/@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE``. \n + Images in official repositories on Docker Hub use a single name (for example, ``ubuntu`` or ``mongo``).\n + Images in other repositories on Docker Hub are qualified with an organization name (for example, ``amazon/amazon-ecs-agent``).\n + Images in other online repositories are qualified further by a domain name (for example, ``quay.io/assemblyline/ubuntu``).", - "type": "string" - }, - "Interactive": { - "description": "When this parameter is ``true``, you can deploy containerized applications that require ``stdin`` or a ``tty`` to be allocated. This parameter maps to ``OpenStdin`` in the docker container create command and the ``--interactive`` option to docker run.", - "type": "boolean" - }, - "Links": { - "description": "The ``links`` parameter allows containers to communicate with each other without the need for port mappings. This parameter is only supported if the network mode of a task definition is ``bridge``. The ``name:internalName`` construct is analogous to ``name:alias`` in Docker links. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed.. This parameter maps to ``Links`` in the docker container create command and the ``--link`` option to docker run.\n This parameter is not supported for Windows containers.\n Containers that are collocated on a single container instance may be able to communicate with each other without requiring links or host port mappings. Network isolation is achieved on the container instance using security groups and VPC settings.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "LinuxParameters": { - "$ref": "#/definitions/LinuxParameters", - "description": "Linux-specific modifications that are applied to the container, such as Linux kernel capabilities. For more information see [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html).\n This parameter is not supported for Windows containers." - }, - "LogConfiguration": { - "$ref": "#/definitions/LogConfiguration", - "description": "The log configuration specification for the container.\n This parameter maps to ``LogConfig`` in the docker Create a container command and the ``--log-driver`` option to docker run. By default, containers use the same logging driver that the Docker daemon uses. However, the container may use a different logging driver than the Docker daemon by specifying a log driver with this parameter in the container definition. To use a different logging driver for a container, the log system must be configured properly on the container instance (or on a different log server for remote logging options). For more information on the options for different supported log drivers, see [Configure logging drivers](https://docs.aws.amazon.com/https://docs.docker.com/engine/admin/logging/overview/) in the Docker documentation.\n Amazon ECS currently supports a subset of the logging drivers available to the Docker daemon (shown in the [LogConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LogConfiguration.html) data type). Additional log drivers may be available in future releases of the Amazon ECS container agent.\n This parameter requires version 1.18 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'`` \n The Amazon ECS container agent running on a container instance must register the logging drivers available on that instance with the ``ECS_AVAILABLE_LOGGING_DRIVERS`` environment variable before containers placed on that instance can use these log configuration options. For more information, see [Container Agent Configuration](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html) in the *Developer Guide*." - }, - "Memory": { - "description": "The amount (in MiB) of memory to present to the container. If your container attempts to exceed the memory specified here, the container is killed. The total amount of memory reserved for all containers within a task must be lower than the task ``memory`` value, if one is specified. This parameter maps to ``Memory`` in the [Create a container](https://docs.aws.amazon.com/https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section of the [Docker Remote API](https://docs.aws.amazon.com/https://docs.docker.com/engine/api/v1.35/) and the ``--memory`` option to [docker run](https://docs.aws.amazon.com/https://docs.docker.com/engine/reference/run/#security-configuration).\n If using the Fargate launch type, this parameter is optional.\n If using the EC2 launch type, you must specify either a task-level memory value or a container-level memory value. If you specify both a container-level ``memory`` and ``memoryReservation`` value, ``memory`` must be greater than ``memoryReservation``. If you specify ``memoryReservation``, then that value is subtracted from the available memory resources for the container instance where the container is placed. Otherwise, the value of ``memory`` is used.\n The Docker 20.10.0 or later daemon reserves a minimum of 6 MiB of memory for a container, so you should not specify fewer than 6 MiB of memory for your containers.\n The Docker 19.03.13-ce or earlier daemon reserves a minimum of 4 MiB of memory for a container, so you should not specify fewer than 4 MiB of memory for your containers.", - "type": "integer" - }, - "MemoryReservation": { - "description": "The soft limit (in MiB) of memory to reserve for the container. When system memory is under heavy contention, Docker attempts to keep the container memory to this soft limit. However, your container can consume more memory when it needs to, up to either the hard limit specified with the ``memory`` parameter (if applicable), or all of the available memory on the container instance, whichever comes first. This parameter maps to ``MemoryReservation`` in the docker container create command and the ``--memory-reservation`` option to docker run.\n If a task-level memory value is not specified, you must specify a non-zero integer for one or both of ``memory`` or ``memoryReservation`` in a container definition. If you specify both, ``memory`` must be greater than ``memoryReservation``. If you specify ``memoryReservation``, then that value is subtracted from the available memory resources for the container instance where the container is placed. Otherwise, the value of ``memory`` is used.\n For example, if your container normally uses 128 MiB of memory, but occasionally bursts to 256 MiB of memory for short periods of time, you can set a ``memoryReservation`` of 128 MiB, and a ``memory`` hard limit of 300 MiB. This configuration would allow the container to only reserve 128 MiB of memory from the remaining resources on the container instance, but also allow the container to consume more memory resources when needed.\n The Docker 20.10.0 or later daemon reserves a minimum of 6 MiB of memory for a container. So, don't specify less than 6 MiB of memory for your containers. \n The Docker 19.03.13-ce or earlier daemon reserves a minimum of 4 MiB of memory for a container. So, don't specify less than 4 MiB of memory for your containers.", - "type": "integer" - }, - "MountPoints": { - "description": "The mount points for data volumes in your container.\n This parameter maps to ``Volumes`` in the docker container create command and the ``--volume`` option to docker run.\n Windows containers can mount whole directories on the same drive as ``$env:ProgramData``. Windows containers can't mount directories on a different drive, and mount point can't be across drives.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/MountPoint" - }, - "type": "array", - "uniqueItems": true - }, - "Name": { - "description": "The name of a container. If you're linking multiple containers together in a task definition, the ``name`` of one container can be entered in the ``links`` of another container to connect the containers. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed. This parameter maps to ``name`` in the docker container create command and the ``--name`` option to docker run.", - "type": "string" - }, - "PortMappings": { - "description": "The list of port mappings for the container. Port mappings allow containers to access ports on the host container instance to send or receive traffic.\n For task definitions that use the ``awsvpc`` network mode, you should only specify the ``containerPort``. The ``hostPort`` can be left blank or it must be the same value as the ``containerPort``.\n Port mappings on Windows use the ``NetNAT`` gateway address rather than ``localhost``. There is no loopback for port mappings on Windows, so you cannot access a container's mapped port from the host itself. \n This parameter maps to ``PortBindings`` in the [Create a container](https://docs.aws.amazon.com/https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section of the [Docker Remote API](https://docs.aws.amazon.com/https://docs.docker.com/engine/api/v1.35/) and the ``--publish`` option to [docker run](https://docs.aws.amazon.com/https://docs.docker.com/engine/reference/run/). If the network mode of a task definition is set to ``none``, then you can't specify port mappings. If the network mode of a task definition is set to ``host``, then host ports must either be undefined or they must match the container port in the port mapping.\n After a task reaches the ``RUNNING`` status, manual and automatic host and container port assignments are visible in the *Network Bindings* section of a container description for a selected task in the Amazon ECS console. The assignments are also visible in the ``networkBindings`` section [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html) responses.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PortMapping" - }, - "type": "array", - "uniqueItems": true - }, - "Privileged": { - "description": "When this parameter is true, the container is given elevated privileges on the host container instance (similar to the ``root`` user). This parameter maps to ``Privileged`` in the docker container create command and the ``--privileged`` option to docker run\n This parameter is not supported for Windows containers or tasks run on FARGATElong.", - "type": "boolean" - }, - "PseudoTerminal": { - "description": "When this parameter is ``true``, a TTY is allocated. This parameter maps to ``Tty`` in the docker container create command and the ``--tty`` option to docker run.", - "type": "boolean" - }, - "ReadonlyRootFilesystem": { - "description": "When this parameter is true, the container is given read-only access to its root file system. This parameter maps to ``ReadonlyRootfs`` in the docker container create command and the ``--read-only`` option to docker run.\n This parameter is not supported for Windows containers.", - "type": "boolean" - }, - "RepositoryCredentials": { - "$ref": "#/definitions/RepositoryCredentials", - "description": "The private repository authentication credentials to use." - }, - "ResourceRequirements": { - "description": "The type and amount of a resource to assign to a container. The only supported resource is a GPU.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ResourceRequirement" - }, - "type": "array" - }, - "RestartPolicy": { - "$ref": "#/definitions/RestartPolicy", - "description": "The restart policy for a container. When you set up a restart policy, Amazon ECS can restart the container without needing to replace the task. For more information, see [Restart individual containers in Amazon ECS tasks with container restart policies](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-restart-policy.html) in the *Amazon Elastic Container Service Developer Guide*." - }, - "Secrets": { - "description": "The secrets to pass to the container. For more information, see [Specifying Sensitive Data](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html) in the *Amazon Elastic Container Service Developer Guide*.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Secret" - }, - "type": "array" - }, - "StartTimeout": { - "description": "Time duration (in seconds) to wait before giving up on resolving dependencies for a container. For example, you specify two containers in a task definition with containerA having a dependency on containerB reaching a ``COMPLETE``, ``SUCCESS``, or ``HEALTHY`` status. If a ``startTimeout`` value is specified for containerB and it doesn't reach the desired status within that time then containerA gives up and not start. This results in the task transitioning to a ``STOPPED`` state.\n When the ``ECS_CONTAINER_START_TIMEOUT`` container agent configuration variable is used, it's enforced independently from this start timeout value.\n For tasks using the Fargate launch type, the task or service requires the following platforms:\n + Linux platform version ``1.3.0`` or later.\n + Windows platform version ``1.0.0`` or later.\n \n For tasks using the EC2 launch type, your container instances require at least version ``1.26.0`` of the container agent to use a container start timeout value. However, we recommend using the latest container agent version. For information about checking your agent version and updating to the latest version, see [Updating the Amazon ECS Container Agent](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) in the *Amazon Elastic Container Service Developer Guide*. If you're using an Amazon ECS-optimized Linux AMI, your instance needs at least version ``1.26.0-1`` of the ``ecs-init`` package. If your container instances are launched from version ``20190301`` or later, then they contain the required versions of the container agent and ``ecs-init``. For more information, see [Amazon ECS-optimized Linux AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) in the *Amazon Elastic Container Service Developer Guide*.\n The valid values for Fargate are 2-120 seconds.", - "type": "integer" - }, - "StopTimeout": { - "description": "Time duration (in seconds) to wait before the container is forcefully killed if it doesn't exit normally on its own.\n For tasks using the Fargate launch type, the task or service requires the following platforms:\n + Linux platform version ``1.3.0`` or later.\n + Windows platform version ``1.0.0`` or later.\n \n For tasks that use the Fargate launch type, the max stop timeout value is 120 seconds and if the parameter is not specified, the default value of 30 seconds is used.\n For tasks that use the EC2 launch type, if the ``stopTimeout`` parameter isn't specified, the value set for the Amazon ECS container agent configuration variable ``ECS_CONTAINER_STOP_TIMEOUT`` is used. If neither the ``stopTimeout`` parameter or the ``ECS_CONTAINER_STOP_TIMEOUT`` agent configuration variable are set, then the default values of 30 seconds for Linux containers and 30 seconds on Windows containers are used. Your container instances require at least version 1.26.0 of the container agent to use a container stop timeout value. However, we recommend using the latest container agent version. For information about checking your agent version and updating to the latest version, see [Updating the Amazon ECS Container Agent](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) in the *Amazon Elastic Container Service Developer Guide*. If you're using an Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of the ``ecs-init`` package. If your container instances are launched from version ``20190301`` or later, then they contain the required versions of the container agent and ``ecs-init``. For more information, see [Amazon ECS-optimized Linux AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) in the *Amazon Elastic Container Service Developer Guide*.\n The valid values for Fargate are 2-120 seconds.", - "type": "integer" - }, - "SystemControls": { - "description": "A list of namespaced kernel parameters to set in the container. This parameter maps to ``Sysctls`` in the docker container create command and the ``--sysctl`` option to docker run. For example, you can configure ``net.ipv4.tcp_keepalive_time`` setting to maintain longer lived connections.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SystemControl" - }, - "type": "array" - }, - "Ulimits": { - "description": "A list of ``ulimits`` to set in the container. This parameter maps to ``Ulimits`` in the [Create a container](https://docs.aws.amazon.com/https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section of the [Docker Remote API](https://docs.aws.amazon.com/https://docs.docker.com/engine/api/v1.35/) and the ``--ulimit`` option to [docker run](https://docs.aws.amazon.com/https://docs.docker.com/engine/reference/run/). Valid naming values are displayed in the [Ulimit](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Ulimit.html) data type. This parameter requires version 1.18 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'`` \n This parameter is not supported for Windows containers.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Ulimit" - }, - "type": "array" - }, - "User": { - "description": "The user to use inside the container. This parameter maps to ``User`` in the docker container create command and the ``--user`` option to docker run.\n When running tasks using the ``host`` network mode, don't run containers using the root user (UID 0). We recommend using a non-root user for better security.\n You can specify the ``user`` using the following formats. If specifying a UID or GID, you must specify it as a positive integer.\n + ``user`` \n + ``user:group`` \n + ``uid`` \n + ``uid:gid`` \n + ``user:gid`` \n + ``uid:group`` \n \n This parameter is not supported for Windows containers.", - "type": "string" - }, - "VersionConsistency": { - "default": "enabled", - "description": "", - "enum": [ - "enabled", - "disabled" - ], - "type": "string" - }, - "VolumesFrom": { - "description": "Data volumes to mount from another container. This parameter maps to ``VolumesFrom`` in the docker container create command and the ``--volumes-from`` option to docker run.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/VolumeFrom" - }, - "type": "array", - "uniqueItems": true - }, - "WorkingDirectory": { - "description": "The working directory to run commands inside the container in. This parameter maps to ``WorkingDir`` in the docker container create command and the ``--workdir`` option to docker run.", - "type": "string" - } - }, - "required": [ - "Name", - "Image" - ], - "type": "object" - }, - "ContainerDependency": { - "additionalProperties": false, - "description": "The ``ContainerDependency`` property specifies the dependencies defined for container startup and shutdown. A container can contain multiple dependencies. When a dependency is defined for container startup, for container shutdown it is reversed.\n Your Amazon ECS container instances require at least version 1.26.0 of the container agent to enable container dependencies. However, we recommend using the latest container agent version. For information about checking your agent version and updating to the latest version, see [Updating the Amazon ECS Container Agent](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) in the *Amazon Elastic Container Service Developer Guide*. If you are using an Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of the ``ecs-init`` package. If your container instances are launched from version ``20190301`` or later, then they contain the required versions of the container agent and ``ecs-init``. For more information, see [Amazon ECS-optimized Linux AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) in the *Amazon Elastic Container Service Developer Guide*.\n For tasks using the Fargate launch type, this parameter requires that the task or service uses platform version 1.3.0 or later.", - "properties": { - "Condition": { - "description": "The dependency condition of the container. The following are the available conditions and their behavior:\n + ``START`` - This condition emulates the behavior of links and volumes today. It validates that a dependent container is started before permitting other containers to start.\n + ``COMPLETE`` - This condition validates that a dependent container runs to completion (exits) before permitting other containers to start. This can be useful for nonessential containers that run a script and then exit. This condition can't be set on an essential container.\n + ``SUCCESS`` - This condition is the same as ``COMPLETE``, but it also requires that the container exits with a ``zero`` status. This condition can't be set on an essential container.\n + ``HEALTHY`` - This condition validates that the dependent container passes its Docker health check before permitting other containers to start. This requires that the dependent container has health checks configured. This condition is confirmed only at task startup.", - "type": "string" - }, - "ContainerName": { - "description": "The name of a container.", - "type": "string" - } - }, - "type": "object" - }, - "Device": { - "additionalProperties": false, - "description": "The ``Device`` property specifies an object representing a container instance host device.", - "properties": { - "ContainerPath": { - "description": "The path inside the container at which to expose the host device.", - "type": "string" - }, - "HostPath": { - "description": "The path for the device on the host container instance.", - "type": "string" - }, - "Permissions": { - "description": "The explicit permissions to provide to the container for the device. By default, the container has permissions for ``read``, ``write``, and ``mknod`` for the device.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "DockerVolumeConfiguration": { - "additionalProperties": false, - "description": "The ``DockerVolumeConfiguration`` property specifies a Docker volume configuration and is used when you use Docker volumes. Docker volumes are only supported when you are using the EC2 launch type. Windows containers only support the use of the ``local`` driver. To use bind mounts, specify a ``host`` instead.", - "properties": { - "Autoprovision": { - "description": "If this value is ``true``, the Docker volume is created if it doesn't already exist.\n This field is only used if the ``scope`` is ``shared``.", - "type": "boolean" - }, - "Driver": { - "description": "The Docker volume driver to use. The driver value must match the driver name provided by Docker because it is used for task placement. If the driver was installed using the Docker plugin CLI, use ``docker plugin ls`` to retrieve the driver name from your container instance. If the driver was installed using another method, use Docker plugin discovery to retrieve the driver name. This parameter maps to ``Driver`` in the docker container create command and the ``xxdriver`` option to docker volume create.", - "type": "string" - }, - "DriverOpts": { - "additionalProperties": false, - "description": "A map of Docker driver-specific options passed through. This parameter maps to ``DriverOpts`` in the docker create-volume command and the ``xxopt`` option to docker volume create.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "Labels": { - "additionalProperties": false, - "description": "Custom metadata to add to your Docker volume. This parameter maps to ``Labels`` in the docker container create command and the ``xxlabel`` option to docker volume create.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "Scope": { - "description": "The scope for the Docker volume that determines its lifecycle. Docker volumes that are scoped to a ``task`` are automatically provisioned when the task starts and destroyed when the task stops. Docker volumes that are scoped as ``shared`` persist after the task stops.", - "type": "string" - } - }, - "type": "object" - }, - "EFSVolumeConfiguration": { - "additionalProperties": false, - "description": "This parameter is specified when you're using an Amazon Elastic File System file system for task storage. For more information, see [Amazon EFS volumes](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/efs-volumes.html) in the *Amazon Elastic Container Service Developer Guide*.", - "properties": { - "AuthorizationConfig": { - "$ref": "#/definitions/AuthorizationConfig", - "description": "The authorization configuration details for the Amazon EFS file system." - }, - "FilesystemId": { - "description": "The Amazon EFS file system ID to use.", - "type": "string" - }, - "RootDirectory": { - "description": "The directory within the Amazon EFS file system to mount as the root directory inside the host. If this parameter is omitted, the root of the Amazon EFS volume will be used. Specifying ``/`` will have the same effect as omitting this parameter.\n If an EFS access point is specified in the ``authorizationConfig``, the root directory parameter must either be omitted or set to ``/`` which will enforce the path set on the EFS access point.", - "type": "string" - }, - "TransitEncryption": { - "description": "Determines whether to use encryption for Amazon EFS data in transit between the Amazon ECS host and the Amazon EFS server. Transit encryption must be turned on if Amazon EFS IAM authorization is used. If this parameter is omitted, the default value of ``DISABLED`` is used. For more information, see [Encrypting data in transit](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) in the *Amazon Elastic File System User Guide*.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "TransitEncryptionPort": { - "description": "The port to use when sending encrypted data between the Amazon ECS host and the Amazon EFS server. If you do not specify a transit encryption port, it will use the port selection strategy that the Amazon EFS mount helper uses. For more information, see [EFS mount helper](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) in the *Amazon Elastic File System User Guide*.", - "type": "integer" - } - }, - "required": [ - "FilesystemId" - ], - "type": "object" - }, - "EnvironmentFile": { - "additionalProperties": false, - "description": "A list of files containing the environment variables to pass to a container. You can specify up to ten environment files. The file must have a ``.env`` file extension. Each line in an environment file should contain an environment variable in ``VARIABLE=VALUE`` format. Lines beginning with ``#`` are treated as comments and are ignored.\n If there are environment variables specified using the ``environment`` parameter in a container definition, they take precedence over the variables contained within an environment file. If multiple environment files are specified that contain the same variable, they're processed from the top down. We recommend that you use unique variable names. For more information, see [Use a file to pass environment variables to a container](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/use-environment-file.html) in the *Amazon Elastic Container Service Developer Guide*.\n Environment variable files are objects in Amazon S3 and all Amazon S3 security considerations apply. \n You must use the following platforms for the Fargate launch type:\n + Linux platform version ``1.4.0`` or later.\n + Windows platform version ``1.0.0`` or later.\n \n Consider the following when using the Fargate launch type:\n + The file is handled like a native Docker env-file.\n + There is no support for shell escape handling.\n + The container entry point interperts the ``VARIABLE`` values.", - "properties": { - "Type": { - "description": "The file type to use. Environment files are objects in Amazon S3. The only supported value is ``s3``.", - "type": "string" - }, - "Value": { - "description": "The Amazon Resource Name (ARN) of the Amazon S3 object containing the environment variable file.", - "type": "string" - } - }, - "type": "object" - }, - "EphemeralStorage": { - "additionalProperties": false, - "description": "The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on FARGATElong. For more information, see [Using data volumes in tasks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html) in the *Amazon ECS Developer Guide;*.\n For tasks using the Fargate launch type, the task requires the following platforms:\n + Linux platform version ``1.4.0`` or later.\n + Windows platform version ``1.0.0`` or later.", - "properties": { - "SizeInGiB": { - "description": "The total amount, in GiB, of ephemeral storage to set for the task. The minimum supported value is ``20`` GiB and the maximum supported value is ``200`` GiB.", - "type": "integer" - } - }, - "type": "object" - }, - "FSxAuthorizationConfig": { - "additionalProperties": false, - "description": "The authorization configuration details for Amazon FSx for Windows File Server file system. See [FSxWindowsFileServerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FSxWindowsFileServerVolumeConfiguration.html) in the *Amazon ECS API Reference*.\n For more information and the input format, see [Amazon FSx for Windows File Server Volumes](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/wfsx-volumes.html) in the *Amazon Elastic Container Service Developer Guide*.", - "properties": { - "CredentialsParameter": { - "description": "The authorization credential option to use. The authorization credential options can be provided using either the Amazon Resource Name (ARN) of an ASMlong secret or SSM Parameter Store parameter. The ARN refers to the stored credentials.", - "type": "string" - }, - "Domain": { - "description": "A fully qualified domain name hosted by an [](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) Managed Microsoft AD (Active Directory) or self-hosted AD on Amazon EC2.", - "type": "string" - } - }, - "required": [ - "CredentialsParameter", - "Domain" - ], - "type": "object" - }, - "FSxWindowsFileServerVolumeConfiguration": { - "additionalProperties": false, - "description": "This parameter is specified when you're using [Amazon FSx for Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) file system for task storage.\n For more information and the input format, see [Amazon FSx for Windows File Server volumes](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/wfsx-volumes.html) in the *Amazon Elastic Container Service Developer Guide*.", - "properties": { - "AuthorizationConfig": { - "$ref": "#/definitions/FSxAuthorizationConfig", - "description": "The authorization configuration details for the Amazon FSx for Windows File Server file system." - }, - "FileSystemId": { - "description": "The Amazon FSx for Windows File Server file system ID to use.", - "type": "string" - }, - "RootDirectory": { - "description": "The directory within the Amazon FSx for Windows File Server file system to mount as the root directory inside the host.", - "type": "string" - } - }, - "required": [ - "FileSystemId", - "RootDirectory" - ], - "type": "object" - }, - "FirelensConfiguration": { - "additionalProperties": false, - "description": "The FireLens configuration for the container. This is used to specify and configure a log router for container logs. For more information, see [Custom log routing](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html) in the *Amazon Elastic Container Service Developer Guide*.", - "properties": { - "Options": { - "additionalProperties": false, - "description": "The options to use when configuring the log router. This field is optional and can be used to add additional metadata, such as the task, task definition, cluster, and container instance details to the log event.\n If specified, valid option keys are:\n + ``enable-ecs-log-metadata``, which can be ``true`` or ``false`` \n + ``config-file-type``, which can be ``s3`` or ``file`` \n + ``config-file-value``, which is either an S3 ARN or a file path", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "Type": { - "description": "The log router to use. The valid values are ``fluentd`` or ``fluentbit``.", - "type": "string" - } - }, - "type": "object" - }, - "HealthCheck": { - "additionalProperties": false, - "description": "The ``HealthCheck`` property specifies an object representing a container health check. Health check parameters that are specified in a container definition override any Docker health checks that exist in the container image (such as those specified in a parent image or from the image's Dockerfile). This configuration maps to the ``HEALTHCHECK`` parameter of docker run.\n The Amazon ECS container agent only monitors and reports on the health checks specified in the task definition. Amazon ECS does not monitor Docker health checks that are embedded in a container image and not specified in the container definition. Health check parameters that are specified in a container definition override any Docker health checks that exist in the container image.\n If a task is run manually, and not as part of a service, the task will continue its lifecycle regardless of its health status. For tasks that are part of a service, if the task reports as unhealthy then the task will be stopped and the service scheduler will replace it.\n The following are notes about container health check support:\n + Container health checks require version 1.17.0 or greater of the Amazon ECS container agent. For more information, see [Updating the Amazon ECS Container Agent](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html).\n + Container health checks are supported for Fargate tasks if you are using platform version 1.1.0 or greater. For more information, see [Platform Versions](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html).\n + Container health checks are not supported for tasks that are part of a service that is configured to use a Classic Load Balancer.", - "properties": { - "Command": { - "description": "A string array representing the command that the container runs to determine if it is healthy. The string array must start with ``CMD`` to run the command arguments directly, or ``CMD-SHELL`` to run the command with the container's default shell. \n When you use the AWS Management Console JSON panel, the CLIlong, or the APIs, enclose the list of commands in double quotes and brackets.\n ``[ \"CMD-SHELL\", \"curl -f http://localhost/ || exit 1\" ]`` \n You don't include the double quotes and brackets when you use the AWS Management Console.\n ``CMD-SHELL, curl -f http://localhost/ || exit 1`` \n An exit code of 0 indicates success, and non-zero exit code indicates failure. For more information, see ``HealthCheck`` in the docker container create command", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "Interval": { - "description": "The time period in seconds between each health check execution. You may specify between 5 and 300 seconds. The default value is 30 seconds.", - "type": "integer" - }, - "Retries": { - "description": "The number of times to retry a failed health check before the container is considered unhealthy. You may specify between 1 and 10 retries. The default value is 3.", - "type": "integer" - }, - "StartPeriod": { - "description": "The optional grace period to provide containers time to bootstrap before failed health checks count towards the maximum number of retries. You can specify between 0 and 300 seconds. By default, the ``startPeriod`` is off.\n If a health check succeeds within the ``startPeriod``, then the container is considered healthy and any subsequent failures count toward the maximum number of retries.", - "type": "integer" - }, - "Timeout": { - "description": "The time period in seconds to wait for a health check to succeed before it is considered a failure. You may specify between 2 and 60 seconds. The default value is 5.", - "type": "integer" - } - }, - "type": "object" - }, - "HostEntry": { - "additionalProperties": false, - "description": "The ``HostEntry`` property specifies a hostname and an IP address that are added to the ``/etc/hosts`` file of a container through the ``extraHosts`` parameter of its ``ContainerDefinition`` resource.", - "properties": { - "Hostname": { - "description": "The hostname to use in the ``/etc/hosts`` entry.", - "type": "string" - }, - "IpAddress": { - "description": "The IP address to use in the ``/etc/hosts`` entry.", - "type": "string" - } - }, - "type": "object" - }, - "HostVolumeProperties": { - "additionalProperties": false, - "description": "The ``HostVolumeProperties`` property specifies details on a container instance bind mount host volume.", - "properties": { - "SourcePath": { - "description": "When the ``host`` parameter is used, specify a ``sourcePath`` to declare the path on the host container instance that's presented to the container. If this parameter is empty, then the Docker daemon has assigned a host path for you. If the ``host`` parameter contains a ``sourcePath`` file location, then the data volume persists at the specified location on the host container instance until you delete it manually. If the ``sourcePath`` value doesn't exist on the host container instance, the Docker daemon creates it. If the location does exist, the contents of the source path folder are exported.\n If you're using the Fargate launch type, the ``sourcePath`` parameter is not supported.", - "type": "string" - } - }, - "type": "object" - }, - "InferenceAccelerator": { - "additionalProperties": false, - "description": "Details on an Elastic Inference accelerator. For more information, see [Working with Amazon Elastic Inference on Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-inference.html) in the *Amazon Elastic Container Service Developer Guide*.", - "properties": { - "DeviceName": { - "description": "The Elastic Inference accelerator device name. The ``deviceName`` must also be referenced in a container definition as a [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html).", - "type": "string" - }, - "DeviceType": { - "description": "The Elastic Inference accelerator type to use.", - "type": "string" - } - }, - "type": "object" - }, - "KernelCapabilities": { - "additionalProperties": false, - "description": "The Linux capabilities to add or remove from the default Docker configuration for a container defined in the task definition. For more detailed information about these Linux capabilities, see the [capabilities(7)](https://docs.aws.amazon.com/http://man7.org/linux/man-pages/man7/capabilities.7.html) Linux manual page.", - "properties": { - "Add": { - "description": "The Linux capabilities for the container that have been added to the default configuration provided by Docker. This parameter maps to ``CapAdd`` in the docker container create command and the ``--cap-add`` option to docker run.\n Tasks launched on FARGATElong only support adding the ``SYS_PTRACE`` kernel capability.\n Valid values: ``\"ALL\" | \"AUDIT_CONTROL\" | \"AUDIT_WRITE\" | \"BLOCK_SUSPEND\" | \"CHOWN\" | \"DAC_OVERRIDE\" | \"DAC_READ_SEARCH\" | \"FOWNER\" | \"FSETID\" | \"IPC_LOCK\" | \"IPC_OWNER\" | \"KILL\" | \"LEASE\" | \"LINUX_IMMUTABLE\" | \"MAC_ADMIN\" | \"MAC_OVERRIDE\" | \"MKNOD\" | \"NET_ADMIN\" | \"NET_BIND_SERVICE\" | \"NET_BROADCAST\" | \"NET_RAW\" | \"SETFCAP\" | \"SETGID\" | \"SETPCAP\" | \"SETUID\" | \"SYS_ADMIN\" | \"SYS_BOOT\" | \"SYS_CHROOT\" | \"SYS_MODULE\" | \"SYS_NICE\" | \"SYS_PACCT\" | \"SYS_PTRACE\" | \"SYS_RAWIO\" | \"SYS_RESOURCE\" | \"SYS_TIME\" | \"SYS_TTY_CONFIG\" | \"SYSLOG\" | \"WAKE_ALARM\"``", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "Drop": { - "description": "The Linux capabilities for the container that have been removed from the default configuration provided by Docker. This parameter maps to ``CapDrop`` in the docker container create command and the ``--cap-drop`` option to docker run.\n Valid values: ``\"ALL\" | \"AUDIT_CONTROL\" | \"AUDIT_WRITE\" | \"BLOCK_SUSPEND\" | \"CHOWN\" | \"DAC_OVERRIDE\" | \"DAC_READ_SEARCH\" | \"FOWNER\" | \"FSETID\" | \"IPC_LOCK\" | \"IPC_OWNER\" | \"KILL\" | \"LEASE\" | \"LINUX_IMMUTABLE\" | \"MAC_ADMIN\" | \"MAC_OVERRIDE\" | \"MKNOD\" | \"NET_ADMIN\" | \"NET_BIND_SERVICE\" | \"NET_BROADCAST\" | \"NET_RAW\" | \"SETFCAP\" | \"SETGID\" | \"SETPCAP\" | \"SETUID\" | \"SYS_ADMIN\" | \"SYS_BOOT\" | \"SYS_CHROOT\" | \"SYS_MODULE\" | \"SYS_NICE\" | \"SYS_PACCT\" | \"SYS_PTRACE\" | \"SYS_RAWIO\" | \"SYS_RESOURCE\" | \"SYS_TIME\" | \"SYS_TTY_CONFIG\" | \"SYSLOG\" | \"WAKE_ALARM\"``", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "KeyValuePair": { - "additionalProperties": false, - "description": "A key-value pair object.", - "properties": { - "Name": { - "description": "The name of the key-value pair. For environment variables, this is the name of the environment variable.", - "type": "string" - }, - "Value": { - "description": "The value of the key-value pair. For environment variables, this is the value of the environment variable.", - "type": "string" - } - }, - "type": "object" - }, - "LinuxParameters": { - "additionalProperties": false, - "description": "The Linux-specific options that are applied to the container, such as Linux [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html).", - "properties": { - "Capabilities": { - "$ref": "#/definitions/KernelCapabilities", - "description": "The Linux capabilities for the container that are added to or dropped from the default configuration provided by Docker.\n For tasks that use the Fargate launch type, ``capabilities`` is supported for all platform versions but the ``add`` parameter is only supported if using platform version 1.4.0 or later." - }, - "Devices": { - "description": "Any host devices to expose to the container. This parameter maps to ``Devices`` in the docker container create command and the ``--device`` option to docker run.\n If you're using tasks that use the Fargate launch type, the ``devices`` parameter isn't supported.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Device" - }, - "type": "array" - }, - "InitProcessEnabled": { - "description": "Run an ``init`` process inside the container that forwards signals and reaps processes. This parameter maps to the ``--init`` option to docker run. This parameter requires version 1.25 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", - "type": "boolean" - }, - "MaxSwap": { - "description": "The total amount of swap memory (in MiB) a container can use. This parameter will be translated to the ``--memory-swap`` option to docker run where the value would be the sum of the container memory plus the ``maxSwap`` value.\n If a ``maxSwap`` value of ``0`` is specified, the container will not use swap. Accepted values are ``0`` or any positive integer. If the ``maxSwap`` parameter is omitted, the container will use the swap configuration for the container instance it is running on. A ``maxSwap`` value must be set for the ``swappiness`` parameter to be used.\n If you're using tasks that use the Fargate launch type, the ``maxSwap`` parameter isn't supported.\n If you're using tasks on Amazon Linux 2023 the ``swappiness`` parameter isn't supported.", - "type": "integer" - }, - "SharedMemorySize": { - "description": "The value for the size (in MiB) of the ``/dev/shm`` volume. This parameter maps to the ``--shm-size`` option to docker run.\n If you are using tasks that use the Fargate launch type, the ``sharedMemorySize`` parameter is not supported.", - "type": "integer" - }, - "Swappiness": { - "description": "This allows you to tune a container's memory swappiness behavior. A ``swappiness`` value of ``0`` will cause swapping to not happen unless absolutely necessary. A ``swappiness`` value of ``100`` will cause pages to be swapped very aggressively. Accepted values are whole numbers between ``0`` and ``100``. If the ``swappiness`` parameter is not specified, a default value of ``60`` is used. If a value is not specified for ``maxSwap`` then this parameter is ignored. This parameter maps to the ``--memory-swappiness`` option to docker run.\n If you're using tasks that use the Fargate launch type, the ``swappiness`` parameter isn't supported.\n If you're using tasks on Amazon Linux 2023 the ``swappiness`` parameter isn't supported.", - "type": "integer" - }, - "Tmpfs": { - "description": "The container path, mount options, and size (in MiB) of the tmpfs mount. This parameter maps to the ``--tmpfs`` option to docker run.\n If you're using tasks that use the Fargate launch type, the ``tmpfs`` parameter isn't supported.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tmpfs" - }, - "type": "array" - } - }, - "type": "object" - }, - "LogConfiguration": { - "additionalProperties": false, - "description": "The ``LogConfiguration`` property specifies log configuration options to send to a custom log driver for the container.", - "properties": { - "LogDriver": { - "description": "The log driver to use for the container.\n For tasks on FARGATElong, the supported log drivers are ``awslogs``, ``splunk``, and ``awsfirelens``.\n For tasks hosted on Amazon EC2 instances, the supported log drivers are ``awslogs``, ``fluentd``, ``gelf``, ``json-file``, ``journald``, ``syslog``, ``splunk``, and ``awsfirelens``.\n For more information about using the ``awslogs`` log driver, see [Send Amazon ECS logs to CloudWatch](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html) in the *Amazon Elastic Container Service Developer Guide*.\n For more information about using the ``awsfirelens`` log driver, see [Send Amazon ECS logs to an service or Partner](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html).\n If you have a custom driver that isn't listed, you can fork the Amazon ECS container agent project that's [available on GitHub](https://docs.aws.amazon.com/https://github.com/aws/amazon-ecs-agent) and customize it to work with that driver. We encourage you to submit pull requests for changes that you would like to have included. However, we don't currently provide support for running modified copies of this software.", - "type": "string" - }, - "Options": { - "additionalProperties": false, - "description": "The configuration options to send to the log driver.\n The options you can specify depend on the log driver. Some of the options you can specify when you use the ``awslogs`` log driver to route logs to Amazon CloudWatch include the following:\n + awslogs-create-group Required: No Specify whether you want the log group to be created automatically. If this option isn't specified, it defaults to false. Your IAM policy must include the logs:CreateLogGroup permission before you attempt to use awslogs-create-group. + awslogs-region Required: Yes Specify the Region that the awslogs log driver is to send your Docker logs to. You can choose to send all of your logs from clusters in different Regions to a single region in CloudWatch Logs. This is so that they're all visible in one location. Otherwise, you can separate them by Region for more granularity. Make sure that the specified log group exists in the Region that you specify with this option. + awslogs-group Required: Yes Make sure to specify a log group that the awslogs log driver sends its log streams to. + awslogs-stream-prefix Required: Yes, when using the Fargate launch type.Optional for the EC2 launch type, required for the Fargate launch type. Use the awslogs-stream-prefix option to associate a log stream with the specified prefix, the container name, and the ID of the Amazon ECS task that the container belongs to. If you specify a prefix with this option, then the log stream takes the format prefix-name/container-name/ecs-task-id. If you don't specify a prefix with this option, then the log stream is named after the container ID that's assigned by the Docker daemon on the container instance. Because it's difficult to trace logs back to the container that sent them with just the Docker container ID (which is only available on the container instance), we recommend that you specify a prefix with this option. For Amazon ECS services, you can use the service name as the prefix. Doing so, you can trace log streams to the service that the container belongs to, the name of the container that sent them, and the ID of the task that the container belongs to. You must specify a stream-prefix for your logs to have your logs appear in the Log pane when using the Amazon ECS console. + awslogs-datetime-format Required: No This option defines a multiline start pattern in Python strftime format. A log message consists of a line that matches the pattern and any following lines that don\u2019t match the pattern. The matched line is the delimiter between log messages. One example of a use case for using this format is for parsing output such as a stack dump, which might otherwise be logged in multiple entries. The correct pattern allows it to be captured in a single entry. For more information, see awslogs-datetime-format. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + awslogs-multiline-pattern Required: No This option defines a multiline start pattern that uses a regular expression. A log message consists of a line that matches the pattern and any following lines that don\u2019t match the pattern. The matched line is the delimiter between log messages. For more information, see awslogs-multiline-pattern. This option is ignored if awslogs-datetime-format is also configured. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + mode Required: No Valid values: non-blocking | blocking This option defines the delivery mode of log messages from the container to CloudWatch Logs. The delivery mode you choose affects application availability when the flow of logs from container to CloudWatch is interrupted. If you use the blocking mode and the flow of logs to CloudWatch is interrupted, calls from container code to write to the stdout and stderr streams will block. The logging thread of the application will block as a result. This may cause the application to become unresponsive and lead to container healthcheck failure. If you use the non-blocking mode, the container's logs are instead stored in an in-memory intermediate buffer configured with the max-buffer-size option. This prevents the application from becoming unresponsive when logs cannot be sent to CloudWatch. We recommend using this mode if you want to ensure service availability and are okay with some log loss. For more information, see Preventing log loss with non-blocking mode in the awslogs container log driver. + max-buffer-size Required: No Default value: 1m When non-blocking mode is used, the max-buffer-size log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost. \n To route logs using the ``splunk`` log router, you need to specify a ``splunk-token`` and a ``splunk-url``.\n When you use the ``awsfirelens`` log router to route logs to an AWS Service or AWS Partner Network destination for log storage and analytics, you can set the ``log-driver-buffer-limit`` option to limit the number of events that are buffered in memory, before being sent to the log router container. It can help to resolve potential log loss issue because high throughput might result in memory running out for the buffer inside of Docker.\n Other options you can specify when using ``awsfirelens`` to route logs depend on the destination. When you export logs to Amazon Data Firehose, you can specify the AWS Region with ``region`` and a name for the log stream with ``delivery_stream``.\n When you export logs to Amazon Kinesis Data Streams, you can specify an AWS Region with ``region`` and a data stream name with ``stream``.\n When you export logs to Amazon OpenSearch Service, you can specify options like ``Name``, ``Host`` (OpenSearch Service endpoint without protocol), ``Port``, ``Index``, ``Type``, ``Aws_auth``, ``Aws_region``, ``Suppress_Type_Name``, and ``tls``.\n When you export logs to Amazon S3, you can specify the bucket using the ``bucket`` option. You can also specify ``region``, ``total_file_size``, ``upload_timeout``, and ``use_put_object`` as options.\n This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "SecretOptions": { - "description": "The secrets to pass to the log configuration. For more information, see [Specifying sensitive data](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html) in the *Amazon Elastic Container Service Developer Guide*.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Secret" - }, - "type": "array" - } - }, - "required": [ - "LogDriver" - ], - "type": "object" - }, - "MountPoint": { - "additionalProperties": false, - "description": "The details for a volume mount point that's used in a container definition.", - "properties": { - "ContainerPath": { - "description": "The path on the container to mount the host volume at.", - "type": "string" - }, - "ReadOnly": { - "description": "If this value is ``true``, the container has read-only access to the volume. If this value is ``false``, then the container can write to the volume. The default value is ``false``.", - "type": "boolean" - }, - "SourceVolume": { - "description": "The name of the volume to mount. Must be a volume name referenced in the ``name`` parameter of task definition ``volume``.", - "type": "string" - } - }, - "type": "object" - }, - "PortMapping": { - "additionalProperties": false, - "description": "The ``PortMapping`` property specifies a port mapping. Port mappings allow containers to access ports on the host container instance to send or receive traffic. Port mappings are specified as part of the container definition.\n If you are using containers in a task with the ``awsvpc`` or ``host`` network mode, exposed ports should be specified using ``containerPort``. The ``hostPort`` can be left blank or it must be the same value as the ``containerPort``.\n After a task reaches the ``RUNNING`` status, manual and automatic host and container port assignments are visible in the ``networkBindings`` section of [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html) API responses.", - "properties": { - "AppProtocol": { - "description": "The application protocol that's used for the port mapping. This parameter only applies to Service Connect. We recommend that you set this parameter to be consistent with the protocol that your application uses. If you set this parameter, Amazon ECS adds protocol-specific connection handling to the Service Connect proxy. If you set this parameter, Amazon ECS adds protocol-specific telemetry in the Amazon ECS console and CloudWatch.\n If you don't set a value for this parameter, then TCP is used. However, Amazon ECS doesn't add protocol-specific telemetry for TCP.\n ``appProtocol`` is immutable in a Service Connect service. Updating this field requires a service deletion and redeployment.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", - "enum": [ - "http", - "http2", - "grpc" - ], - "type": "string" - }, - "ContainerPort": { - "description": "The port number on the container that's bound to the user-specified or automatically assigned host port.\n If you use containers in a task with the ``awsvpc`` or ``host`` network mode, specify the exposed ports using ``containerPort``.\n If you use containers in a task with the ``bridge`` network mode and you specify a container port and not a host port, your container automatically receives a host port in the ephemeral port range. For more information, see ``hostPort``. Port mappings that are automatically assigned in this way do not count toward the 100 reserved ports limit of a container instance.", - "type": "integer" - }, - "ContainerPortRange": { - "description": "The port number range on the container that's bound to the dynamically mapped host port range. \n The following rules apply when you specify a ``containerPortRange``:\n + You must use either the ``bridge`` network mode or the ``awsvpc`` network mode.\n + This parameter is available for both the EC2 and FARGATElong launch types.\n + This parameter is available for both the Linux and Windows operating systems.\n + The container instance must have at least version 1.67.0 of the container agent and at least version 1.67.0-1 of the ``ecs-init`` package \n + You can specify a maximum of 100 port ranges per container.\n + You do not specify a ``hostPortRange``. The value of the ``hostPortRange`` is set as follows:\n + For containers in a task with the ``awsvpc`` network mode, the ``hostPortRange`` is set to the same value as the ``containerPortRange``. This is a static mapping strategy.\n + For containers in a task with the ``bridge`` network mode, the Amazon ECS agent finds open host ports from the default ephemeral range and passes it to docker to bind them to the container ports.\n \n + The ``containerPortRange`` valid values are between 1 and 65535.\n + A port can only be included in one port mapping per container.\n + You cannot specify overlapping port ranges.\n + The first port in the range must be less than last port in the range.\n + Docker recommends that you turn off the docker-proxy in the Docker daemon config file when you have a large number of ports.\n For more information, see [Issue #11185](https://docs.aws.amazon.com/https://github.com/moby/moby/issues/11185) on the Github website.\n For information about how to turn off the docker-proxy in the Docker daemon config file, see [Docker daemon](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html#bootstrap_docker_daemon) in the *Amazon ECS Developer Guide*.\n \n You can call [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html) to view the ``hostPortRange`` which are the host ports that are bound to the container ports.", - "type": "string" - }, - "HostPort": { - "description": "The port number on the container instance to reserve for your container.\n If you specify a ``containerPortRange``, leave this field empty and the value of the ``hostPort`` is set as follows:\n + For containers in a task with the ``awsvpc`` network mode, the ``hostPort`` is set to the same value as the ``containerPort``. This is a static mapping strategy.\n + For containers in a task with the ``bridge`` network mode, the Amazon ECS agent finds open ports on the host and automatically binds them to the container ports. This is a dynamic mapping strategy.\n \n If you use containers in a task with the ``awsvpc`` or ``host`` network mode, the ``hostPort`` can either be left blank or set to the same value as the ``containerPort``.\n If you use containers in a task with the ``bridge`` network mode, you can specify a non-reserved host port for your container port mapping, or you can omit the ``hostPort`` (or set it to ``0``) while specifying a ``containerPort`` and your container automatically receives a port in the ephemeral port range for your container instance operating system and Docker version.\n The default ephemeral port range for Docker version 1.6.0 and later is listed on the instance under ``/proc/sys/net/ipv4/ip_local_port_range``. If this kernel parameter is unavailable, the default ephemeral port range from 49153 through 65535 (Linux) or 49152 through 65535 (Windows) is used. Do not attempt to specify a host port in the ephemeral port range as these are reserved for automatic assignment. In general, ports below 32768 are outside of the ephemeral port range.\n The default reserved ports are 22 for SSH, the Docker ports 2375 and 2376, and the Amazon ECS container agent ports 51678-51680. Any host port that was previously specified in a running task is also reserved while the task is running. That is, after a task stops, the host port is released. The current reserved ports are displayed in the ``remainingResources`` of [DescribeContainerInstances](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeContainerInstances.html) output. A container instance can have up to 100 reserved ports at a time. This number includes the default reserved ports. Automatically assigned ports aren't included in the 100 reserved ports quota.", - "type": "integer" - }, - "Name": { - "description": "The name that's used for the port mapping. This parameter only applies to Service Connect. This parameter is the name that you use in the ``serviceConnectConfiguration`` of a service. The name can include up to 64 characters. The characters can include lowercase letters, numbers, underscores (_), and hyphens (-). The name can't start with a hyphen.\n For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", - "type": "string" - }, - "Protocol": { - "description": "The protocol used for the port mapping. Valid values are ``tcp`` and ``udp``. The default is ``tcp``. ``protocol`` is immutable in a Service Connect service. Updating this field requires a service deletion and redeployment.", - "type": "string" - } - }, - "type": "object" - }, - "ProxyConfiguration": { - "additionalProperties": false, - "description": "The configuration details for the App Mesh proxy.\n For tasks that use the EC2 launch type, the container instances require at least version 1.26.0 of the container agent and at least version 1.26.0-1 of the ``ecs-init`` package to use a proxy configuration. If your container instances are launched from the Amazon ECS optimized AMI version ``20190301`` or later, then they contain the required versions of the container agent and ``ecs-init``. For more information, see [Amazon ECS-optimized Linux AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html)", - "properties": { - "ContainerName": { - "description": "The name of the container that will serve as the App Mesh proxy.", - "type": "string" - }, - "ProxyConfigurationProperties": { - "description": "The set of network configuration parameters to provide the Container Network Interface (CNI) plugin, specified as key-value pairs.\n + ``IgnoredUID`` - (Required) The user ID (UID) of the proxy container as defined by the ``user`` parameter in a container definition. This is used to ensure the proxy ignores its own traffic. If ``IgnoredGID`` is specified, this field can be empty.\n + ``IgnoredGID`` - (Required) The group ID (GID) of the proxy container as defined by the ``user`` parameter in a container definition. This is used to ensure the proxy ignores its own traffic. If ``IgnoredUID`` is specified, this field can be empty.\n + ``AppPorts`` - (Required) The list of ports that the application uses. Network traffic to these ports is forwarded to the ``ProxyIngressPort`` and ``ProxyEgressPort``.\n + ``ProxyIngressPort`` - (Required) Specifies the port that incoming traffic to the ``AppPorts`` is directed to.\n + ``ProxyEgressPort`` - (Required) Specifies the port that outgoing traffic from the ``AppPorts`` is directed to.\n + ``EgressIgnoredPorts`` - (Required) The egress traffic going to the specified ports is ignored and not redirected to the ``ProxyEgressPort``. It can be an empty list.\n + ``EgressIgnoredIPs`` - (Required) The egress traffic going to the specified IP addresses is ignored and not redirected to the ``ProxyEgressPort``. It can be an empty list.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/KeyValuePair" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "description": "The proxy type. The only supported value is ``APPMESH``.", - "type": "string" - } - }, - "required": [ - "ContainerName" - ], - "type": "object" - }, - "RepositoryCredentials": { - "additionalProperties": false, - "description": "The repository credentials for private registry authentication.", - "properties": { - "CredentialsParameter": { - "description": "The Amazon Resource Name (ARN) of the secret containing the private repository credentials.\n When you use the Amazon ECS API, CLI, or AWS SDK, if the secret exists in the same Region as the task that you're launching then you can use either the full ARN or the name of the secret. When you use the AWS Management Console, you must specify the full ARN of the secret.", - "type": "string" - } - }, - "type": "object" - }, - "ResourceRequirement": { - "additionalProperties": false, - "description": "The type and amount of a resource to assign to a container. The supported resource types are GPUs and Elastic Inference accelerators. For more information, see [Working with GPUs on Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-gpu.html) or [Working with Amazon Elastic Inference on Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-inference.html) in the *Amazon Elastic Container Service Developer Guide*", - "properties": { - "Type": { - "description": "The type of resource to assign to a container.", - "type": "string" - }, - "Value": { - "description": "The value for the specified resource type.\n When the type is ``GPU``, the value is the number of physical ``GPUs`` the Amazon ECS container agent reserves for the container. The number of GPUs that's reserved for all containers in a task can't exceed the number of available GPUs on the container instance that the task is launched on.\n When the type is ``InferenceAccelerator``, the ``value`` matches the ``deviceName`` for an [InferenceAccelerator](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_InferenceAccelerator.html) specified in a task definition.", - "type": "string" - } - }, - "required": [ - "Type", - "Value" - ], - "type": "object" - }, - "RestartPolicy": { - "additionalProperties": false, - "description": "You can enable a restart policy for each container defined in your task definition, to overcome transient failures faster and maintain task availability. When you enable a restart policy for a container, Amazon ECS can restart the container if it exits, without needing to replace the task. For more information, see [Restart individual containers in Amazon ECS tasks with container restart policies](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-restart-policy.html) in the *Amazon Elastic Container Service Developer Guide*.", - "properties": { - "Enabled": { - "description": "Specifies whether a restart policy is enabled for the container.", - "type": "boolean" - }, - "IgnoredExitCodes": { - "description": "A list of exit codes that Amazon ECS will ignore and not attempt a restart on. You can specify a maximum of 50 container exit codes. By default, Amazon ECS does not ignore any exit codes.", - "insertionOrder": false, - "items": { - "type": "integer" - }, - "type": "array" - }, - "RestartAttemptPeriod": { - "description": "A period of time (in seconds) that the container must run for before a restart can be attempted. A container can be restarted only once every ``restartAttemptPeriod`` seconds. If a container isn't able to run for this time period and exits early, it will not be restarted. You can set a minimum ``restartAttemptPeriod`` of 60 seconds and a maximum ``restartAttemptPeriod`` of 1800 seconds. By default, a container must run for 300 seconds before it can be restarted.", - "type": "integer" - } - }, - "type": "object" - }, - "RuntimePlatform": { - "additionalProperties": false, - "description": "Information about the platform for the Amazon ECS service or task.\n For more information about ``RuntimePlatform``, see [RuntimePlatform](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#runtime-platform) in the *Amazon Elastic Container Service Developer Guide*.", - "properties": { - "CpuArchitecture": { - "description": "The CPU architecture.\n You can run your Linux tasks on an ARM-based platform by setting the value to ``ARM64``. This option is available for tasks that run on Linux Amazon EC2 instance or Linux containers on Fargate.", - "type": "string" - }, - "OperatingSystemFamily": { - "description": "The operating system.", - "type": "string" - } - }, - "type": "object" - }, - "Secret": { - "additionalProperties": false, - "description": "An object representing the secret to expose to your container. Secrets can be exposed to a container in the following ways:\n + To inject sensitive data into your containers as environment variables, use the ``secrets`` container definition parameter.\n + To reference sensitive information in the log configuration of a container, use the ``secretOptions`` container definition parameter.\n \n For more information, see [Specifying sensitive data](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html) in the *Amazon Elastic Container Service Developer Guide*.", - "properties": { - "Name": { - "description": "The name of the secret.", - "type": "string" - }, - "ValueFrom": { - "description": "The secret to expose to the container. The supported values are either the full ARN of the ASMlong secret or the full ARN of the parameter in the SSM Parameter Store.\n For information about the require IAMlong permissions, see [Required IAM permissions for Amazon ECS secrets](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-secrets.html#secrets-iam) (for Secrets Manager) or [Required IAM permissions for Amazon ECS secrets](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-parameters.html) (for Systems Manager Parameter store) in the *Amazon Elastic Container Service Developer Guide*.\n If the SSM Parameter Store parameter exists in the same Region as the task you're launching, then you can use either the full ARN or name of the parameter. If the parameter exists in a different Region, then the full ARN must be specified.", - "type": "string" - } - }, - "required": [ - "Name", - "ValueFrom" - ], - "type": "object" - }, - "SystemControl": { - "additionalProperties": false, - "description": "A list of namespaced kernel parameters to set in the container. This parameter maps to ``Sysctls`` in the docker container create command and the ``--sysctl`` option to docker run. For example, you can configure ``net.ipv4.tcp_keepalive_time`` setting to maintain longer lived connections.\n We don't recommend that you specify network-related ``systemControls`` parameters for multiple containers in a single task that also uses either the ``awsvpc`` or ``host`` network mode. Doing this has the following disadvantages:\n + For tasks that use the ``awsvpc`` network mode including Fargate, if you set ``systemControls`` for any container, it applies to all containers in the task. If you set different ``systemControls`` for multiple containers in a single task, the container that's started last determines which ``systemControls`` take effect.\n + For tasks that use the ``host`` network mode, the network namespace ``systemControls`` aren't supported.\n \n If you're setting an IPC resource namespace to use for the containers in the task, the following conditions apply to your system controls. For more information, see [IPC mode](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#task_definition_ipcmode).\n + For tasks that use the ``host`` IPC mode, IPC namespace ``systemControls`` aren't supported.\n + For tasks that use the ``task`` IPC mode, IPC namespace ``systemControls`` values apply to all containers within a task.\n \n This parameter is not supported for Windows containers.\n This parameter is only supported for tasks that are hosted on FARGATElong if the tasks are using platform version ``1.4.0`` or later (Linux). This isn't supported for Windows containers on Fargate.", - "properties": { - "Namespace": { - "description": "The namespaced kernel parameter to set a ``value`` for.", - "type": "string" - }, - "Value": { - "description": "The namespaced kernel parameter to set a ``value`` for.\n Valid IPC namespace values: ``\"kernel.msgmax\" | \"kernel.msgmnb\" | \"kernel.msgmni\" | \"kernel.sem\" | \"kernel.shmall\" | \"kernel.shmmax\" | \"kernel.shmmni\" | \"kernel.shm_rmid_forced\"``, and ``Sysctls`` that start with ``\"fs.mqueue.*\"`` \n Valid network namespace values: ``Sysctls`` that start with ``\"net.*\"`` \n All of these values are supported by Fargate.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "The metadata that you apply to a resource to help you categorize and organize them. Each tag consists of a key and an optional value. You define them.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", - "properties": { - "Key": { - "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", - "type": "string" - }, - "Value": { - "description": "The optional part of a key-value pair that make up a tag. A ``value`` acts as a descriptor within a tag category (key).", - "type": "string" - } - }, - "type": "object" - }, - "TaskDefinitionPlacementConstraint": { - "additionalProperties": false, - "description": "The constraint on task placement in the task definition. For more information, see [Task placement constraints](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html) in the *Amazon Elastic Container Service Developer Guide*.\n Task placement constraints aren't supported for tasks run on FARGATElong.", - "properties": { - "Expression": { - "description": "A cluster query language expression to apply to the constraint. For more information, see [Cluster query language](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html) in the *Amazon Elastic Container Service Developer Guide*.", - "type": "string" - }, - "Type": { - "description": "The type of constraint. The ``MemberOf`` constraint restricts selection to be from a group of valid candidates.", - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "Tmpfs": { - "additionalProperties": false, - "description": "The container path, mount options, and size of the tmpfs mount.", - "properties": { - "ContainerPath": { - "description": "The absolute file path where the tmpfs volume is to be mounted.", - "type": "string" - }, - "MountOptions": { - "description": "The list of tmpfs volume mount options.\n Valid values: ``\"defaults\" | \"ro\" | \"rw\" | \"suid\" | \"nosuid\" | \"dev\" | \"nodev\" | \"exec\" | \"noexec\" | \"sync\" | \"async\" | \"dirsync\" | \"remount\" | \"mand\" | \"nomand\" | \"atime\" | \"noatime\" | \"diratime\" | \"nodiratime\" | \"bind\" | \"rbind\" | \"unbindable\" | \"runbindable\" | \"private\" | \"rprivate\" | \"shared\" | \"rshared\" | \"slave\" | \"rslave\" | \"relatime\" | \"norelatime\" | \"strictatime\" | \"nostrictatime\" | \"mode\" | \"uid\" | \"gid\" | \"nr_inodes\" | \"nr_blocks\" | \"mpol\"``", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "Size": { - "description": "The maximum size (in MiB) of the tmpfs volume.", - "type": "integer" - } - }, - "required": [ - "Size" - ], - "type": "object" - }, - "Ulimit": { - "additionalProperties": false, - "description": "The ``ulimit`` settings to pass to the container.\n Amazon ECS tasks hosted on FARGATElong use the default resource limit values set by the operating system with the exception of the ``nofile`` resource limit parameter which FARGATElong overrides. The ``nofile`` resource limit sets a restriction on the number of open files that a container can use. The default ``nofile`` soft limit is ``65535`` and the default hard limit is ``65535``.\n You can specify the ``ulimit`` settings for a container in a task definition.", - "properties": { - "HardLimit": { - "description": "The hard limit for the ``ulimit`` type. The value can be specified in bytes, seconds, or as a count, depending on the ``type`` of the ``ulimit``.", - "type": "integer" - }, - "Name": { - "description": "The ``type`` of the ``ulimit``.", - "type": "string" - }, - "SoftLimit": { - "description": "The soft limit for the ``ulimit`` type. The value can be specified in bytes, seconds, or as a count, depending on the ``type`` of the ``ulimit``.", - "type": "integer" - } - }, - "required": [ - "HardLimit", - "Name", - "SoftLimit" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "description": "The data volume configuration for tasks launched using this task definition. Specifying a volume configuration in a task definition is optional. The volume configuration may contain multiple volumes but only one volume configured at launch is supported. Each volume defined in the volume configuration may only specify a ``name`` and one of either ``configuredAtLaunch``, ``dockerVolumeConfiguration``, ``efsVolumeConfiguration``, ``fsxWindowsFileServerVolumeConfiguration``, or ``host``. If an empty volume configuration is specified, by default Amazon ECS uses a host volume. For more information, see [Using data volumes in tasks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html).", - "properties": { - "ConfiguredAtLaunch": { - "description": "Indicates whether the volume should be configured at launch time. This is used to create Amazon EBS volumes for standalone tasks or tasks created as part of a service. Each task definition revision may only have one volume configured at launch in the volume configuration.\n To configure a volume at launch time, use this task definition revision and specify a ``volumeConfigurations`` object when calling the ``CreateService``, ``UpdateService``, ``RunTask`` or ``StartTask`` APIs.", - "type": "boolean" - }, - "DockerVolumeConfiguration": { - "$ref": "#/definitions/DockerVolumeConfiguration", - "description": "This parameter is specified when you use Docker volumes.\n Windows containers only support the use of the ``local`` driver. To use bind mounts, specify the ``host`` parameter instead.\n Docker volumes aren't supported by tasks run on FARGATElong." - }, - "EFSVolumeConfiguration": { - "$ref": "#/definitions/EFSVolumeConfiguration", - "description": "This parameter is specified when you use an Amazon Elastic File System file system for task storage." - }, - "FSxWindowsFileServerVolumeConfiguration": { - "$ref": "#/definitions/FSxWindowsFileServerVolumeConfiguration", - "description": "This parameter is specified when you use Amazon FSx for Windows File Server file system for task storage." - }, - "Host": { - "$ref": "#/definitions/HostVolumeProperties", - "description": "This parameter is specified when you use bind mount host volumes. The contents of the ``host`` parameter determine whether your bind mount host volume persists on the host container instance and where it's stored. If the ``host`` parameter is empty, then the Docker daemon assigns a host path for your data volume. However, the data isn't guaranteed to persist after the containers that are associated with it stop running.\n Windows containers can mount whole directories on the same drive as ``$env:ProgramData``. Windows containers can't mount directories on a different drive, and mount point can't be across drives. For example, you can mount ``C:\\my\\path:C:\\my\\path`` and ``D:\\:D:\\``, but not ``D:\\my\\path:C:\\my\\path`` or ``D:\\:C:\\my\\path``." - }, - "Name": { - "description": "The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed.\n When using a volume configured at launch, the ``name`` is required and must also be specified as the volume name in the ``ServiceVolumeConfiguration`` or ``TaskVolumeConfiguration`` parameter when creating your service or standalone task.\n For all other types of volumes, this name is referenced in the ``sourceVolume`` parameter of the ``mountPoints`` object in the container definition.\n When a volume is using the ``efsVolumeConfiguration``, the name is required.", - "type": "string" - } - }, - "type": "object" - }, - "VolumeFrom": { - "additionalProperties": false, - "description": "Details on a data volume from another container in the same task definition.", - "properties": { - "ReadOnly": { - "description": "If this value is ``true``, the container has read-only access to the volume. If this value is ``false``, then the container can write to the volume. The default value is ``false``.", - "type": "boolean" - }, - "SourceContainer": { - "description": "The name of another container within the same task definition to mount volumes from.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Registers a new task definition from the supplied ``family`` and ``containerDefinitions``. Optionally, you can add data volumes to your containers with the ``volumes`` parameter. For more information about task definition parameters and defaults, see [Amazon ECS Task Definitions](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html) in the *Amazon Elastic Container Service Developer Guide*.\n You can specify a role for your task with the ``taskRoleArn`` parameter. When you specify a role for a task, its containers can then use the latest versions of the CLI or SDKs to make API requests to the AWS services that are specified in the policy that's associated with the role. For more information, see [IAM Roles for Tasks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) in the *Amazon Elastic Container Service Developer Guide*.\n You can specify a Docker networking mode for the containers in your task definition with the ``networkMode`` parameter. If you specify the ``awsvpc`` network mode, the task is allocated an elastic network interface, and you must specify a [NetworkConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_NetworkConfiguration.html) when you create a service or run a task with the task definition. For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) in the *Amazon Elastic Container Service Developer Guide*.\n In the following example or examples, the Authorization header contents (``AUTHPARAMS``) must be replaced with an AWS Signature Version 4 signature. For more information, see [Signature Version 4 Signing Process](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) in the *General Reference*.\n You only need to learn how to sign HTTP requests if you intend to create them manually. When you use the [](https://docs.aws.amazon.com/cli/) or one of the [SDKs](https://docs.aws.amazon.com/tools/) to make requests to AWS, these tools automatically sign the requests for you, with the access key that you specify when you configure the tools. When you use these tools, you don't have to sign requests yourself.", - "handlers": { - "create": { - "permissions": [ - "ecs:RegisterTaskDefinition", - "ecs:DescribeTaskDefinition", - "ecs:TagResource", - "iam:GetRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "ecs:DeregisterTaskDefinition", - "ecs:DescribeTaskDefinition", - "iam:GetRole", - "iam:PassRole" - ] - }, - "list": { - "permissions": [ - "ecs:ListTaskDefinitions", - "ecs:DescribeTaskDefinition" - ] - }, - "read": { - "permissions": [ - "ecs:DescribeTaskDefinition" - ] - }, - "update": { - "permissions": [ - "ecs:TagResource", - "ecs:UntagResource", - "ecs:ListTagsForResource", - "ecs:DescribeTaskDefinition", - "iam:GetRole", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/TaskDefinitionArn" - ], - "properties": { - "ContainerDefinitions": { - "description": "A list of container definitions in JSON format that describe the different containers that make up your task. For more information about container definition parameters and defaults, see [Amazon ECS Task Definitions](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html) in the *Amazon Elastic Container Service Developer Guide*.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ContainerDefinition" - }, - "type": "array", - "uniqueItems": true - }, - "Cpu": { - "description": "The number of ``cpu`` units used by the task. If you use the EC2 launch type, this field is optional. Any value can be used. If you use the Fargate launch type, this field is required. You must use one of the following values. The value that you choose determines your range of valid values for the ``memory`` parameter.\n If you use the EC2 launch type, this field is optional. Supported values are between ``128`` CPU units (``0.125`` vCPUs) and ``10240`` CPU units (``10`` vCPUs).\n The CPU units cannot be less than 1 vCPU when you use Windows containers on Fargate.\n + 256 (.25 vCPU) - Available ``memory`` values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB)\n + 512 (.5 vCPU) - Available ``memory`` values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB)\n + 1024 (1 vCPU) - Available ``memory`` values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB)\n + 2048 (2 vCPU) - Available ``memory`` values: 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB)\n + 4096 (4 vCPU) - Available ``memory`` values: 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB)\n + 8192 (8 vCPU) - Available ``memory`` values: 16 GB and 60 GB in 4 GB increments\n This option requires Linux platform ``1.4.0`` or later.\n + 16384 (16vCPU) - Available ``memory`` values: 32GB and 120 GB in 8 GB increments\n This option requires Linux platform ``1.4.0`` or later.", - "type": "string" - }, - "EphemeralStorage": { - "$ref": "#/definitions/EphemeralStorage", - "description": "The ephemeral storage settings to use for tasks run with the task definition." - }, - "ExecutionRoleArn": { - "description": "The Amazon Resource Name (ARN) of the task execution role that grants the Amazon ECS container agent permission to make AWS API calls on your behalf. For informationabout the required IAM roles for Amazon ECS, see [IAM roles for Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-ecs-iam-role-overview.html) in the *Amazon Elastic Container Service Developer Guide*.", - "type": "string" - }, - "Family": { - "description": "The name of a family that this task definition is registered to. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed.\n A family groups multiple versions of a task definition. Amazon ECS gives the first task definition that you registered to a family a revision number of 1. Amazon ECS gives sequential revision numbers to each task definition that you add.\n To use revision numbers when you update a task definition, specify this property. If you don't specify a value, CFNlong generates a new task definition each time that you update it.", - "type": "string" - }, - "InferenceAccelerators": { - "description": "The Elastic Inference accelerators to use for the containers in the task.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/InferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "IpcMode": { - "description": "The IPC resource namespace to use for the containers in the task. The valid values are ``host``, ``task``, or ``none``. If ``host`` is specified, then all containers within the tasks that specified the ``host`` IPC mode on the same container instance share the same IPC resources with the host Amazon EC2 instance. If ``task`` is specified, all containers within the specified task share the same IPC resources. If ``none`` is specified, then IPC resources within the containers of a task are private and not shared with other containers in a task or on the container instance. If no value is specified, then the IPC resource namespace sharing depends on the Docker daemon setting on the container instance.\n If the ``host`` IPC mode is used, be aware that there is a heightened risk of undesired IPC namespace expose.\n If you are setting namespaced kernel parameters using ``systemControls`` for the containers in the task, the following will apply to your IPC resource namespace. For more information, see [System Controls](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html) in the *Amazon Elastic Container Service Developer Guide*.\n + For tasks that use the ``host`` IPC mode, IPC namespace related ``systemControls`` are not supported.\n + For tasks that use the ``task`` IPC mode, IPC namespace related ``systemControls`` will apply to all containers within a task.\n \n This parameter is not supported for Windows containers or tasks run on FARGATElong.", - "type": "string" - }, - "Memory": { - "description": "The amount (in MiB) of memory used by the task.\n If your tasks runs on Amazon EC2 instances, you must specify either a task-level memory value or a container-level memory value. This field is optional and any value can be used. If a task-level memory value is specified, the container-level memory value is optional. For more information regarding container-level memory and memory reservation, see [ContainerDefinition](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html).\n If your tasks runs on FARGATElong, this field is required. You must use one of the following values. The value you choose determines your range of valid values for the ``cpu`` parameter.\n + 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available ``cpu`` values: 256 (.25 vCPU)\n + 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available ``cpu`` values: 512 (.5 vCPU)\n + 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available ``cpu`` values: 1024 (1 vCPU)\n + Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available ``cpu`` values: 2048 (2 vCPU)\n + Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available ``cpu`` values: 4096 (4 vCPU)\n + Between 16 GB and 60 GB in 4 GB increments - Available ``cpu`` values: 8192 (8 vCPU)\n This option requires Linux platform ``1.4.0`` or later.\n + Between 32GB and 120 GB in 8 GB increments - Available ``cpu`` values: 16384 (16 vCPU)\n This option requires Linux platform ``1.4.0`` or later.", - "type": "string" - }, - "NetworkMode": { - "description": "The Docker networking mode to use for the containers in the task. The valid values are ``none``, ``bridge``, ``awsvpc``, and ``host``. If no network mode is specified, the default is ``bridge``.\n For Amazon ECS tasks on Fargate, the ``awsvpc`` network mode is required. For Amazon ECS tasks on Amazon EC2 Linux instances, any network mode can be used. For Amazon ECS tasks on Amazon EC2 Windows instances, ```` or ``awsvpc`` can be used. If the network mode is set to ``none``, you cannot specify port mappings in your container definitions, and the tasks containers do not have external connectivity. The ``host`` and ``awsvpc`` network modes offer the highest networking performance for containers because they use the EC2 network stack instead of the virtualized network stack provided by the ``bridge`` mode.\n With the ``host`` and ``awsvpc`` network modes, exposed container ports are mapped directly to the corresponding host port (for the ``host`` network mode) or the attached elastic network interface port (for the ``awsvpc`` network mode), so you cannot take advantage of dynamic host port mappings. \n When using the ``host`` network mode, you should not run containers using the root user (UID 0). It is considered best practice to use a non-root user.\n If the network mode is ``awsvpc``, the task is allocated an elastic network interface, and you must specify a [NetworkConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_NetworkConfiguration.html) value when you create a service or run a task with the task definition. For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) in the *Amazon Elastic Container Service Developer Guide*.\n If the network mode is ``host``, you cannot run multiple instantiations of the same task on a single container instance when port mappings are used.", - "type": "string" - }, - "PidMode": { - "description": "The process namespace to use for the containers in the task. The valid values are ``host`` or ``task``. On Fargate for Linux containers, the only valid value is ``task``. For example, monitoring sidecars might need ``pidMode`` to access information about other containers running in the same task.\n If ``host`` is specified, all containers within the tasks that specified the ``host`` PID mode on the same container instance share the same process namespace with the host Amazon EC2 instance.\n If ``task`` is specified, all containers within the specified task share the same process namespace.\n If no value is specified, the default is a private namespace for each container.\n If the ``host`` PID mode is used, there's a heightened risk of undesired process namespace exposure.\n This parameter is not supported for Windows containers.\n This parameter is only supported for tasks that are hosted on FARGATElong if the tasks are using platform version ``1.4.0`` or later (Linux). This isn't supported for Windows containers on Fargate.", - "type": "string" - }, - "PlacementConstraints": { - "description": "An array of placement constraint objects to use for tasks.\n This parameter isn't supported for tasks run on FARGATElong.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TaskDefinitionPlacementConstraint" - }, - "type": "array", - "uniqueItems": true - }, - "ProxyConfiguration": { - "$ref": "#/definitions/ProxyConfiguration", - "description": "The configuration details for the App Mesh proxy.\n Your Amazon ECS container instances require at least version 1.26.0 of the container agent and at least version 1.26.0-1 of the ``ecs-init`` package to use a proxy configuration. If your container instances are launched from the Amazon ECS optimized AMI version ``20190301`` or later, they contain the required versions of the container agent and ``ecs-init``. For more information, see [Amazon ECS-optimized Linux AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) in the *Amazon Elastic Container Service Developer Guide*." - }, - "RequiresCompatibilities": { - "description": "The task launch types the task definition was validated against. The valid values are ``EC2``, ``FARGATE``, and ``EXTERNAL``. For more information, see [Amazon ECS launch types](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) in the *Amazon Elastic Container Service Developer Guide*.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "RuntimePlatform": { - "$ref": "#/definitions/RuntimePlatform", - "description": "The operating system that your tasks definitions run on. A platform family is specified only for tasks using the Fargate launch type." - }, - "Tags": { - "description": "The metadata that you apply to the task definition to help you categorize and organize them. Each tag consists of a key and an optional value. You define both of them.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "TaskDefinitionArn": { - "description": "", - "type": "string" - }, - "TaskRoleArn": { - "description": "The short name or full Amazon Resource Name (ARN) of the IAMlong role that grants containers in the task permission to call AWS APIs on your behalf. For more information, see [Amazon ECS Task Role](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) in the *Amazon Elastic Container Service Developer Guide*.\n IAM roles for tasks on Windows require that the ``-EnableTaskIAMRole`` option is set when you launch the Amazon ECS-optimized Windows AMI. Your containers must also run some configuration code to use the feature. For more information, see [Windows IAM roles for tasks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows_task_IAM_roles.html) in the *Amazon Elastic Container Service Developer Guide*.\n String validation is done on the ECS side. If an invalid string value is given for ``TaskRoleArn``, it may cause the Cloudformation job to hang.", - "type": "string" - }, - "Volumes": { - "description": "The list of data volume definitions for the task. For more information, see [Using data volumes in tasks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html) in the *Amazon Elastic Container Service Developer Guide*.\n The ``host`` and ``sourcePath`` parameters aren't supported for tasks run on FARGATElong.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": true - } - }, - "propertyTransform": { - "/properties/TaskRoleArn": "TaskRoleArn $OR $split(TaskRoleArn, \"role/\")[-1]" - }, - "readOnlyProperties": [ - "/properties/TaskDefinitionArn" - ], - "sourceUrl": "https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ecs:TagResource", - "ecs:UntagResource", - "ecs:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ECS::TaskDefinition" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Family", + "/properties/ContainerDefinitions", + "/properties/Cpu", + "/properties/EnableFaultInjection", + "/properties/ExecutionRoleArn", + "/properties/InferenceAccelerators", + "/properties/Memory", + "/properties/NetworkMode", + "/properties/PlacementConstraints", + "/properties/ProxyConfiguration", + "/properties/RequiresCompatibilities", + "/properties/RuntimePlatform", + "/properties/TaskRoleArn", + "/properties/Volumes", + "/properties/PidMode", + "/properties/IpcMode", + "/properties/EphemeralStorage" + ], + "definitions": { + "AuthorizationConfig": { + "additionalProperties": false, + "description": "The authorization configuration details for the Amazon EFS file system.", + "properties": { + "AccessPointId": { + "description": "The Amazon EFS access point ID to use. If an access point is specified, the root directory value specified in the ``EFSVolumeConfiguration`` must either be omitted or set to ``/`` which will enforce the path set on the EFS access point. If an access point is used, transit encryption must be on in the ``EFSVolumeConfiguration``. For more information, see [Working with Amazon EFS access points](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) in the *Amazon Elastic File System User Guide*.", + "type": "string" + }, + "IAM": { + "description": "Determines whether to use the Amazon ECS task role defined in a task definition when mounting the Amazon EFS file system. If it is turned on, transit encryption must be turned on in the ``EFSVolumeConfiguration``. If this parameter is omitted, the default value of ``DISABLED`` is used. For more information, see [Using Amazon EFS access points](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/efs-volumes.html#efs-volume-accesspoints) in the *Amazon Elastic Container Service Developer Guide*.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + }, + "ContainerDefinition": { + "additionalProperties": false, + "description": "The ``ContainerDefinition`` property specifies a container definition. Container definitions are used in task definitions to describe the different containers that are launched as part of a task.", + "properties": { + "Command": { + "description": "The command that's passed to the container. This parameter maps to ``Cmd`` in the docker container create command and the ``COMMAND`` parameter to docker run. If there are multiple arguments, each argument is a separated string in the array.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "Cpu": { + "description": "The number of ``cpu`` units reserved for the container. This parameter maps to ``CpuShares`` in the docker container create commandand the ``--cpu-shares`` option to docker run.\n This field is optional for tasks using the Fargate launch type, and the only requirement is that the total amount of CPU reserved for all containers within a task be lower than the task-level ``cpu`` value.\n You can determine the number of CPU units that are available per EC2 instance type by multiplying the vCPUs listed for that instance type on the [Amazon EC2 Instances](https://docs.aws.amazon.com/ec2/instance-types/) detail page by 1,024.\n Linux containers share unallocated CPU units with other containers on the container instance with the same ratio as their allocated amount. For example, if you run a single-container task on a single-core instance type with 512 CPU units specified for that container, and that's the only task running on the container instance, that container could use the full 1,024 CPU unit share at any given time. However, if you launched another copy of the same task on that container instance, each task is guaranteed a minimum of 512 CPU units when needed. Moreover, each container could float to higher CPU usage if the other container was not using it. If both tasks were 100% active all of the time, they would be limited to 512 CPU units.\n On Linux container instances, the Docker daemon on the container instance uses the CPU value to calculate the relative CPU share ratios for running containers. The minimum valid CPU share value that the Linux kernel allows is 2, and the maximum valid CPU share value that the Linux kernel allows is 262144. However, the CPU parameter isn't required, and you can use CPU values below 2 or above 262144 in your container definitions. For CPU values below 2 (including null) or above 262144, the behavior varies based on your Amazon ECS container agent version:\n + *Agent versions less than or equal to 1.1.0:* Null and zero CPU values are passed to Docker as 0, which Docker then converts to 1,024 CPU shares. CPU values of 1 are passed to Docker as 1, which the Linux kernel converts to two CPU shares.\n + *Agent versions greater than or equal to 1.2.0:* Null, zero, and CPU values of 1 are passed to Docker as 2.\n + *Agent versions greater than or equal to 1.84.0:* CPU values greater than 256 vCPU are passed to Docker as 256, which is equivalent to 262144 CPU shares.\n \n On Windows container instances, the CPU limit is enforced as an absolute limit, or a quota. Windows containers only have access to the specified amount of CPU that's described in the task definition. A null or zero CPU value is passed to Docker as ``0``, which Windows interprets as 1% of one CPU.", + "type": "integer" + }, + "CredentialSpecs": { + "description": "A list of ARNs in SSM or Amazon S3 to a credential spec (``CredSpec``) file that configures the container for Active Directory authentication. We recommend that you use this parameter instead of the ``dockerSecurityOptions``. The maximum number of ARNs is 1.\n There are two formats for each ARN.\n + credentialspecdomainless:MyARN You use credentialspecdomainless:MyARN to provide a CredSpec with an additional section for a secret in . You provide the login credentials to the domain in the secret. Each task that runs on any container instance can join different domains. You can use this format without joining the container instance to a domain. + credentialspec:MyARN You use credentialspec:MyARN to provide a CredSpec for a single domain. You must join the container instance to the domain before you start any tasks that use this task definition. \n In both formats, replace ``MyARN`` with the ARN in SSM or Amazon S3.\n If you provide a ``credentialspecdomainless:MyARN``, the ``credspec`` must provide a ARN in ASMlong for a secret containing the username, password, and the domain to connect to. For better security, the instance isn't joined to the domain for domainless authentication. Other applications on the instance can't use the domainless credentials. You can use this parameter to run tasks on the same instance, even it the tasks need to join different domains. For more information, see [Using gMSAs for Windows Containers](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows-gmsa.html) and [Using gMSAs for Linux Containers](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/linux-gmsa.html).", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "DependsOn": { + "description": "The dependencies defined for container startup and shutdown. A container can contain multiple dependencies. When a dependency is defined for container startup, for container shutdown it is reversed.\n For tasks using the EC2 launch type, the container instances require at least version 1.26.0 of the container agent to turn on container dependencies. However, we recommend using the latest container agent version. For information about checking your agent version and updating to the latest version, see [Updating the Amazon ECS Container Agent](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) in the *Amazon Elastic Container Service Developer Guide*. If you're using an Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of the ``ecs-init`` package. If your container instances are launched from version ``20190301`` or later, then they contain the required versions of the container agent and ``ecs-init``. For more information, see [Amazon ECS-optimized Linux AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) in the *Amazon Elastic Container Service Developer Guide*.\n For tasks using the Fargate launch type, the task or service requires the following platforms:\n + Linux platform version ``1.3.0`` or later.\n + Windows platform version ``1.0.0`` or later.\n \n If the task definition is used in a blue/green deployment that uses [AWS::CodeDeploy::DeploymentGroup BlueGreenDeploymentConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-bluegreendeploymentconfiguration.html), the ``dependsOn`` parameter is not supported. For more information see [Issue #680](https://docs.aws.amazon.com/https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/680) on the on the GitHub website.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ContainerDependency" + }, + "type": "array" + }, + "DisableNetworking": { + "description": "When this parameter is true, networking is off within the container. This parameter maps to ``NetworkDisabled`` in the docker container create command.\n This parameter is not supported for Windows containers.", + "type": "boolean" + }, + "DnsSearchDomains": { + "description": "A list of DNS search domains that are presented to the container. This parameter maps to ``DnsSearch`` in the docker container create command and the ``--dns-search`` option to docker run.\n This parameter is not supported for Windows containers.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "DnsServers": { + "description": "A list of DNS servers that are presented to the container. This parameter maps to ``Dns`` in the docker container create command and the ``--dns`` option to docker run.\n This parameter is not supported for Windows containers.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "DockerLabels": { + "additionalProperties": false, + "description": "A key/value map of labels to add to the container. This parameter maps to ``Labels`` in the docker container create command and the ``--label`` option to docker run. This parameter requires version 1.18 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "DockerSecurityOptions": { + "description": "A list of strings to provide custom configuration for multiple security systems. This field isn't valid for containers in tasks using the Fargate launch type.\n For Linux tasks on EC2, this parameter can be used to reference custom labels for SELinux and AppArmor multi-level security systems.\n For any tasks on EC2, this parameter can be used to reference a credential spec file that configures a container for Active Directory authentication. For more information, see [Using gMSAs for Windows Containers](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows-gmsa.html) and [Using gMSAs for Linux Containers](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/linux-gmsa.html) in the *Amazon Elastic Container Service Developer Guide*.\n This parameter maps to ``SecurityOpt`` in the docker container create command and the ``--security-opt`` option to docker run.\n The Amazon ECS container agent running on a container instance must register with the ``ECS_SELINUX_CAPABLE=true`` or ``ECS_APPARMOR_CAPABLE=true`` environment variables before containers placed on that instance can use these security options. For more information, see [Amazon ECS Container Agent Configuration](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html) in the *Amazon Elastic Container Service Developer Guide*.\n Valid values: \"no-new-privileges\" | \"apparmor:PROFILE\" | \"label:value\" | \"credentialspec:CredentialSpecFilePath\"", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "EntryPoint": { + "description": "Early versions of the Amazon ECS container agent don't properly handle ``entryPoint`` parameters. If you have problems using ``entryPoint``, update your container agent or enter your commands and arguments as ``command`` array items instead.\n The entry point that's passed to the container. This parameter maps to ``Entrypoint`` in the docker container create command and the ``--entrypoint`` option to docker run.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "Environment": { + "description": "The environment variables to pass to a container. This parameter maps to ``Env`` in the docker container create command and the ``--env`` option to docker run.\n We don't recommend that you use plaintext environment variables for sensitive information, such as credential data.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/KeyValuePair" + }, + "type": "array", + "uniqueItems": true + }, + "EnvironmentFiles": { + "description": "A list of files containing the environment variables to pass to a container. This parameter maps to the ``--env-file`` option to docker run.\n You can specify up to ten environment files. The file must have a ``.env`` file extension. Each line in an environment file contains an environment variable in ``VARIABLE=VALUE`` format. Lines beginning with ``#`` are treated as comments and are ignored.\n If there are environment variables specified using the ``environment`` parameter in a container definition, they take precedence over the variables contained within an environment file. If multiple environment files are specified that contain the same variable, they're processed from the top down. We recommend that you use unique variable names. For more information, see [Specifying Environment Variables](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/taskdef-envfiles.html) in the *Amazon Elastic Container Service Developer Guide*.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/EnvironmentFile" + }, + "type": "array" + }, + "Essential": { + "description": "If the ``essential`` parameter of a container is marked as ``true``, and that container fails or stops for any reason, all other containers that are part of the task are stopped. If the ``essential`` parameter of a container is marked as ``false``, its failure doesn't affect the rest of the containers in a task. If this parameter is omitted, a container is assumed to be essential.\n All tasks must have at least one essential container. If you have an application that's composed of multiple containers, group containers that are used for a common purpose into components, and separate the different components into multiple task definitions. For more information, see [Application Architecture](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/application_architecture.html) in the *Amazon Elastic Container Service Developer Guide*.", + "type": "boolean" + }, + "ExtraHosts": { + "description": "A list of hostnames and IP address mappings to append to the ``/etc/hosts`` file on the container. This parameter maps to ``ExtraHosts`` in the docker container create command and the ``--add-host`` option to docker run.\n This parameter isn't supported for Windows containers or tasks that use the ``awsvpc`` network mode.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/HostEntry" + }, + "type": "array" + }, + "FirelensConfiguration": { + "$ref": "#/definitions/FirelensConfiguration", + "description": "The FireLens configuration for the container. This is used to specify and configure a log router for container logs. For more information, see [Custom Log Routing](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html) in the *Amazon Elastic Container Service Developer Guide*." + }, + "HealthCheck": { + "$ref": "#/definitions/HealthCheck", + "description": "The container health check command and associated configuration parameters for the container. This parameter maps to ``HealthCheck`` in the docker container create command and the ``HEALTHCHECK`` parameter of docker run." + }, + "Hostname": { + "description": "The hostname to use for your container. This parameter maps to ``Hostname`` in the docker container create command and the ``--hostname`` option to docker run.\n The ``hostname`` parameter is not supported if you're using the ``awsvpc`` network mode.", + "type": "string" + }, + "Image": { + "description": "The image used to start a container. This string is passed directly to the Docker daemon. By default, images in the Docker Hub registry are available. Other repositories are specified with either ``repository-url/image:tag`` or ``repository-url/image@digest``. Up to 255 letters (uppercase and lowercase), numbers, hyphens, underscores, colons, periods, forward slashes, and number signs are allowed. This parameter maps to ``Image`` in the docker container create command and the ``IMAGE`` parameter of docker run.\n + When a new task starts, the Amazon ECS container agent pulls the latest version of the specified image and tag for the container to use. However, subsequent updates to a repository image aren't propagated to already running tasks.\n + Images in Amazon ECR repositories can be specified by either using the full ``registry/repository:tag`` or ``registry/repository@digest``. For example, ``012345678910.dkr.ecr..amazonaws.com/:latest`` or ``012345678910.dkr.ecr..amazonaws.com/@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE``. \n + Images in official repositories on Docker Hub use a single name (for example, ``ubuntu`` or ``mongo``).\n + Images in other repositories on Docker Hub are qualified with an organization name (for example, ``amazon/amazon-ecs-agent``).\n + Images in other online repositories are qualified further by a domain name (for example, ``quay.io/assemblyline/ubuntu``).", + "type": "string" + }, + "Interactive": { + "description": "When this parameter is ``true``, you can deploy containerized applications that require ``stdin`` or a ``tty`` to be allocated. This parameter maps to ``OpenStdin`` in the docker container create command and the ``--interactive`` option to docker run.", + "type": "boolean" + }, + "Links": { + "description": "The ``links`` parameter allows containers to communicate with each other without the need for port mappings. This parameter is only supported if the network mode of a task definition is ``bridge``. The ``name:internalName`` construct is analogous to ``name:alias`` in Docker links. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed.. This parameter maps to ``Links`` in the docker container create command and the ``--link`` option to docker run.\n This parameter is not supported for Windows containers.\n Containers that are collocated on a single container instance may be able to communicate with each other without requiring links or host port mappings. Network isolation is achieved on the container instance using security groups and VPC settings.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "LinuxParameters": { + "$ref": "#/definitions/LinuxParameters", + "description": "Linux-specific modifications that are applied to the container, such as Linux kernel capabilities. For more information see [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html).\n This parameter is not supported for Windows containers." + }, + "LogConfiguration": { + "$ref": "#/definitions/LogConfiguration", + "description": "The log configuration specification for the container.\n This parameter maps to ``LogConfig`` in the docker Create a container command and the ``--log-driver`` option to docker run. By default, containers use the same logging driver that the Docker daemon uses. However, the container may use a different logging driver than the Docker daemon by specifying a log driver with this parameter in the container definition. To use a different logging driver for a container, the log system must be configured properly on the container instance (or on a different log server for remote logging options). For more information on the options for different supported log drivers, see [Configure logging drivers](https://docs.aws.amazon.com/https://docs.docker.com/engine/admin/logging/overview/) in the Docker documentation.\n Amazon ECS currently supports a subset of the logging drivers available to the Docker daemon (shown in the [LogConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LogConfiguration.html) data type). Additional log drivers may be available in future releases of the Amazon ECS container agent.\n This parameter requires version 1.18 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'`` \n The Amazon ECS container agent running on a container instance must register the logging drivers available on that instance with the ``ECS_AVAILABLE_LOGGING_DRIVERS`` environment variable before containers placed on that instance can use these log configuration options. For more information, see [Container Agent Configuration](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html) in the *Developer Guide*." + }, + "Memory": { + "description": "The amount (in MiB) of memory to present to the container. If your container attempts to exceed the memory specified here, the container is killed. The total amount of memory reserved for all containers within a task must be lower than the task ``memory`` value, if one is specified. This parameter maps to ``Memory`` in the [Create a container](https://docs.aws.amazon.com/https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section of the [Docker Remote API](https://docs.aws.amazon.com/https://docs.docker.com/engine/api/v1.35/) and the ``--memory`` option to [docker run](https://docs.aws.amazon.com/https://docs.docker.com/engine/reference/run/#security-configuration).\n If using the Fargate launch type, this parameter is optional.\n If using the EC2 launch type, you must specify either a task-level memory value or a container-level memory value. If you specify both a container-level ``memory`` and ``memoryReservation`` value, ``memory`` must be greater than ``memoryReservation``. If you specify ``memoryReservation``, then that value is subtracted from the available memory resources for the container instance where the container is placed. Otherwise, the value of ``memory`` is used.\n The Docker 20.10.0 or later daemon reserves a minimum of 6 MiB of memory for a container, so you should not specify fewer than 6 MiB of memory for your containers.\n The Docker 19.03.13-ce or earlier daemon reserves a minimum of 4 MiB of memory for a container, so you should not specify fewer than 4 MiB of memory for your containers.", + "type": "integer" + }, + "MemoryReservation": { + "description": "The soft limit (in MiB) of memory to reserve for the container. When system memory is under heavy contention, Docker attempts to keep the container memory to this soft limit. However, your container can consume more memory when it needs to, up to either the hard limit specified with the ``memory`` parameter (if applicable), or all of the available memory on the container instance, whichever comes first. This parameter maps to ``MemoryReservation`` in the docker container create command and the ``--memory-reservation`` option to docker run.\n If a task-level memory value is not specified, you must specify a non-zero integer for one or both of ``memory`` or ``memoryReservation`` in a container definition. If you specify both, ``memory`` must be greater than ``memoryReservation``. If you specify ``memoryReservation``, then that value is subtracted from the available memory resources for the container instance where the container is placed. Otherwise, the value of ``memory`` is used.\n For example, if your container normally uses 128 MiB of memory, but occasionally bursts to 256 MiB of memory for short periods of time, you can set a ``memoryReservation`` of 128 MiB, and a ``memory`` hard limit of 300 MiB. This configuration would allow the container to only reserve 128 MiB of memory from the remaining resources on the container instance, but also allow the container to consume more memory resources when needed.\n The Docker 20.10.0 or later daemon reserves a minimum of 6 MiB of memory for a container. So, don't specify less than 6 MiB of memory for your containers. \n The Docker 19.03.13-ce or earlier daemon reserves a minimum of 4 MiB of memory for a container. So, don't specify less than 4 MiB of memory for your containers.", + "type": "integer" + }, + "MountPoints": { + "description": "The mount points for data volumes in your container.\n This parameter maps to ``Volumes`` in the docker container create command and the ``--volume`` option to docker run.\n Windows containers can mount whole directories on the same drive as ``$env:ProgramData``. Windows containers can't mount directories on a different drive, and mount point can't be across drives.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/MountPoint" + }, + "type": "array", + "uniqueItems": true + }, + "Name": { + "description": "The name of a container. If you're linking multiple containers together in a task definition, the ``name`` of one container can be entered in the ``links`` of another container to connect the containers. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed. This parameter maps to ``name`` in the docker container create command and the ``--name`` option to docker run.", + "type": "string" + }, + "PortMappings": { + "description": "The list of port mappings for the container. Port mappings allow containers to access ports on the host container instance to send or receive traffic.\n For task definitions that use the ``awsvpc`` network mode, you should only specify the ``containerPort``. The ``hostPort`` can be left blank or it must be the same value as the ``containerPort``.\n Port mappings on Windows use the ``NetNAT`` gateway address rather than ``localhost``. There is no loopback for port mappings on Windows, so you cannot access a container's mapped port from the host itself. \n This parameter maps to ``PortBindings`` in the [Create a container](https://docs.aws.amazon.com/https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section of the [Docker Remote API](https://docs.aws.amazon.com/https://docs.docker.com/engine/api/v1.35/) and the ``--publish`` option to [docker run](https://docs.aws.amazon.com/https://docs.docker.com/engine/reference/run/). If the network mode of a task definition is set to ``none``, then you can't specify port mappings. If the network mode of a task definition is set to ``host``, then host ports must either be undefined or they must match the container port in the port mapping.\n After a task reaches the ``RUNNING`` status, manual and automatic host and container port assignments are visible in the *Network Bindings* section of a container description for a selected task in the Amazon ECS console. The assignments are also visible in the ``networkBindings`` section [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html) responses.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PortMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Privileged": { + "description": "When this parameter is true, the container is given elevated privileges on the host container instance (similar to the ``root`` user). This parameter maps to ``Privileged`` in the docker container create command and the ``--privileged`` option to docker run\n This parameter is not supported for Windows containers or tasks run on FARGATElong.", + "type": "boolean" + }, + "PseudoTerminal": { + "description": "When this parameter is ``true``, a TTY is allocated. This parameter maps to ``Tty`` in the docker container create command and the ``--tty`` option to docker run.", + "type": "boolean" + }, + "ReadonlyRootFilesystem": { + "description": "When this parameter is true, the container is given read-only access to its root file system. This parameter maps to ``ReadonlyRootfs`` in the docker container create command and the ``--read-only`` option to docker run.\n This parameter is not supported for Windows containers.", + "type": "boolean" + }, + "RepositoryCredentials": { + "$ref": "#/definitions/RepositoryCredentials", + "description": "The private repository authentication credentials to use." + }, + "ResourceRequirements": { + "description": "The type and amount of a resource to assign to a container. The only supported resource is a GPU.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourceRequirement" + }, + "type": "array" + }, + "RestartPolicy": { + "$ref": "#/definitions/RestartPolicy", + "description": "The restart policy for a container. When you set up a restart policy, Amazon ECS can restart the container without needing to replace the task. For more information, see [Restart individual containers in Amazon ECS tasks with container restart policies](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-restart-policy.html) in the *Amazon Elastic Container Service Developer Guide*." + }, + "Secrets": { + "description": "The secrets to pass to the container. For more information, see [Specifying Sensitive Data](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html) in the *Amazon Elastic Container Service Developer Guide*.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Secret" + }, + "type": "array" + }, + "StartTimeout": { + "description": "Time duration (in seconds) to wait before giving up on resolving dependencies for a container. For example, you specify two containers in a task definition with containerA having a dependency on containerB reaching a ``COMPLETE``, ``SUCCESS``, or ``HEALTHY`` status. If a ``startTimeout`` value is specified for containerB and it doesn't reach the desired status within that time then containerA gives up and not start. This results in the task transitioning to a ``STOPPED`` state.\n When the ``ECS_CONTAINER_START_TIMEOUT`` container agent configuration variable is used, it's enforced independently from this start timeout value.\n For tasks using the Fargate launch type, the task or service requires the following platforms:\n + Linux platform version ``1.3.0`` or later.\n + Windows platform version ``1.0.0`` or later.\n \n For tasks using the EC2 launch type, your container instances require at least version ``1.26.0`` of the container agent to use a container start timeout value. However, we recommend using the latest container agent version. For information about checking your agent version and updating to the latest version, see [Updating the Amazon ECS Container Agent](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) in the *Amazon Elastic Container Service Developer Guide*. If you're using an Amazon ECS-optimized Linux AMI, your instance needs at least version ``1.26.0-1`` of the ``ecs-init`` package. If your container instances are launched from version ``20190301`` or later, then they contain the required versions of the container agent and ``ecs-init``. For more information, see [Amazon ECS-optimized Linux AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) in the *Amazon Elastic Container Service Developer Guide*.\n The valid values for Fargate are 2-120 seconds.", + "type": "integer" + }, + "StopTimeout": { + "description": "Time duration (in seconds) to wait before the container is forcefully killed if it doesn't exit normally on its own.\n For tasks using the Fargate launch type, the task or service requires the following platforms:\n + Linux platform version ``1.3.0`` or later.\n + Windows platform version ``1.0.0`` or later.\n \n For tasks that use the Fargate launch type, the max stop timeout value is 120 seconds and if the parameter is not specified, the default value of 30 seconds is used.\n For tasks that use the EC2 launch type, if the ``stopTimeout`` parameter isn't specified, the value set for the Amazon ECS container agent configuration variable ``ECS_CONTAINER_STOP_TIMEOUT`` is used. If neither the ``stopTimeout`` parameter or the ``ECS_CONTAINER_STOP_TIMEOUT`` agent configuration variable are set, then the default values of 30 seconds for Linux containers and 30 seconds on Windows containers are used. Your container instances require at least version 1.26.0 of the container agent to use a container stop timeout value. However, we recommend using the latest container agent version. For information about checking your agent version and updating to the latest version, see [Updating the Amazon ECS Container Agent](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) in the *Amazon Elastic Container Service Developer Guide*. If you're using an Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of the ``ecs-init`` package. If your container instances are launched from version ``20190301`` or later, then they contain the required versions of the container agent and ``ecs-init``. For more information, see [Amazon ECS-optimized Linux AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) in the *Amazon Elastic Container Service Developer Guide*.\n The valid values for Fargate are 2-120 seconds.", + "type": "integer" + }, + "SystemControls": { + "description": "A list of namespaced kernel parameters to set in the container. This parameter maps to ``Sysctls`` in the docker container create command and the ``--sysctl`` option to docker run. For example, you can configure ``net.ipv4.tcp_keepalive_time`` setting to maintain longer lived connections.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SystemControl" + }, + "type": "array" + }, + "Ulimits": { + "description": "A list of ``ulimits`` to set in the container. This parameter maps to ``Ulimits`` in the [Create a container](https://docs.aws.amazon.com/https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section of the [Docker Remote API](https://docs.aws.amazon.com/https://docs.docker.com/engine/api/v1.35/) and the ``--ulimit`` option to [docker run](https://docs.aws.amazon.com/https://docs.docker.com/engine/reference/run/). Valid naming values are displayed in the [Ulimit](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Ulimit.html) data type. This parameter requires version 1.18 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'`` \n This parameter is not supported for Windows containers.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Ulimit" + }, + "type": "array" + }, + "User": { + "description": "The user to use inside the container. This parameter maps to ``User`` in the docker container create command and the ``--user`` option to docker run.\n When running tasks using the ``host`` network mode, don't run containers using the root user (UID 0). We recommend using a non-root user for better security.\n You can specify the ``user`` using the following formats. If specifying a UID or GID, you must specify it as a positive integer.\n + ``user`` \n + ``user:group`` \n + ``uid`` \n + ``uid:gid`` \n + ``user:gid`` \n + ``uid:group`` \n \n This parameter is not supported for Windows containers.", + "type": "string" + }, + "VersionConsistency": { + "default": "enabled", + "description": "Specifies whether Amazon ECS will resolve the container image tag provided in the container definition to an image digest. By default, the value is ``enabled``. If you set the value for a container as ``disabled``, Amazon ECS will not resolve the provided container image tag to a digest and will use the original image URI specified in the container definition for deployment. For more information about container image resolution, see [Container image resolution](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html#deployment-container-image-stability) in the *Amazon ECS Developer Guide*.", + "enum": [ + "enabled", + "disabled" + ], + "type": "string" + }, + "VolumesFrom": { + "description": "Data volumes to mount from another container. This parameter maps to ``VolumesFrom`` in the docker container create command and the ``--volumes-from`` option to docker run.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VolumeFrom" + }, + "type": "array", + "uniqueItems": true + }, + "WorkingDirectory": { + "description": "The working directory to run commands inside the container in. This parameter maps to ``WorkingDir`` in the docker container create command and the ``--workdir`` option to docker run.", + "type": "string" + } + }, + "required": [ + "Name", + "Image" + ], + "type": "object" + }, + "ContainerDependency": { + "additionalProperties": false, + "description": "The ``ContainerDependency`` property specifies the dependencies defined for container startup and shutdown. A container can contain multiple dependencies. When a dependency is defined for container startup, for container shutdown it is reversed.\n Your Amazon ECS container instances require at least version 1.26.0 of the container agent to enable container dependencies. However, we recommend using the latest container agent version. For information about checking your agent version and updating to the latest version, see [Updating the Amazon ECS Container Agent](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) in the *Amazon Elastic Container Service Developer Guide*. If you are using an Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of the ``ecs-init`` package. If your container instances are launched from version ``20190301`` or later, then they contain the required versions of the container agent and ``ecs-init``. For more information, see [Amazon ECS-optimized Linux AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) in the *Amazon Elastic Container Service Developer Guide*.\n For tasks using the Fargate launch type, this parameter requires that the task or service uses platform version 1.3.0 or later.", + "properties": { + "Condition": { + "description": "The dependency condition of the container. The following are the available conditions and their behavior:\n + ``START`` - This condition emulates the behavior of links and volumes today. It validates that a dependent container is started before permitting other containers to start.\n + ``COMPLETE`` - This condition validates that a dependent container runs to completion (exits) before permitting other containers to start. This can be useful for nonessential containers that run a script and then exit. This condition can't be set on an essential container.\n + ``SUCCESS`` - This condition is the same as ``COMPLETE``, but it also requires that the container exits with a ``zero`` status. This condition can't be set on an essential container.\n + ``HEALTHY`` - This condition validates that the dependent container passes its Docker health check before permitting other containers to start. This requires that the dependent container has health checks configured. This condition is confirmed only at task startup.", + "type": "string" + }, + "ContainerName": { + "description": "The name of a container.", + "type": "string" + } + }, + "type": "object" + }, + "Device": { + "additionalProperties": false, + "description": "The ``Device`` property specifies an object representing a container instance host device.", + "properties": { + "ContainerPath": { + "description": "The path inside the container at which to expose the host device.", + "type": "string" + }, + "HostPath": { + "description": "The path for the device on the host container instance.", + "type": "string" + }, + "Permissions": { + "description": "The explicit permissions to provide to the container for the device. By default, the container has permissions for ``read``, ``write``, and ``mknod`` for the device.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "DockerVolumeConfiguration": { + "additionalProperties": false, + "description": "The ``DockerVolumeConfiguration`` property specifies a Docker volume configuration and is used when you use Docker volumes. Docker volumes are only supported when you are using the EC2 launch type. Windows containers only support the use of the ``local`` driver. To use bind mounts, specify a ``host`` instead.", + "properties": { + "Autoprovision": { + "description": "If this value is ``true``, the Docker volume is created if it doesn't already exist.\n This field is only used if the ``scope`` is ``shared``.", + "type": "boolean" + }, + "Driver": { + "description": "The Docker volume driver to use. The driver value must match the driver name provided by Docker because it is used for task placement. If the driver was installed using the Docker plugin CLI, use ``docker plugin ls`` to retrieve the driver name from your container instance. If the driver was installed using another method, use Docker plugin discovery to retrieve the driver name. This parameter maps to ``Driver`` in the docker container create command and the ``xxdriver`` option to docker volume create.", + "type": "string" + }, + "DriverOpts": { + "additionalProperties": false, + "description": "A map of Docker driver-specific options passed through. This parameter maps to ``DriverOpts`` in the docker create-volume command and the ``xxopt`` option to docker volume create.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "Labels": { + "additionalProperties": false, + "description": "Custom metadata to add to your Docker volume. This parameter maps to ``Labels`` in the docker container create command and the ``xxlabel`` option to docker volume create.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "Scope": { + "description": "The scope for the Docker volume that determines its lifecycle. Docker volumes that are scoped to a ``task`` are automatically provisioned when the task starts and destroyed when the task stops. Docker volumes that are scoped as ``shared`` persist after the task stops.", + "type": "string" + } + }, + "type": "object" + }, + "EFSVolumeConfiguration": { + "additionalProperties": false, + "description": "This parameter is specified when you're using an Amazon Elastic File System file system for task storage. For more information, see [Amazon EFS volumes](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/efs-volumes.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "AuthorizationConfig": { + "$ref": "#/definitions/AuthorizationConfig", + "description": "The authorization configuration details for the Amazon EFS file system." + }, + "FilesystemId": { + "description": "The Amazon EFS file system ID to use.", + "type": "string" + }, + "RootDirectory": { + "description": "The directory within the Amazon EFS file system to mount as the root directory inside the host. If this parameter is omitted, the root of the Amazon EFS volume will be used. Specifying ``/`` will have the same effect as omitting this parameter.\n If an EFS access point is specified in the ``authorizationConfig``, the root directory parameter must either be omitted or set to ``/`` which will enforce the path set on the EFS access point.", + "type": "string" + }, + "TransitEncryption": { + "description": "Determines whether to use encryption for Amazon EFS data in transit between the Amazon ECS host and the Amazon EFS server. Transit encryption must be turned on if Amazon EFS IAM authorization is used. If this parameter is omitted, the default value of ``DISABLED`` is used. For more information, see [Encrypting data in transit](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) in the *Amazon Elastic File System User Guide*.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "TransitEncryptionPort": { + "description": "The port to use when sending encrypted data between the Amazon ECS host and the Amazon EFS server. If you do not specify a transit encryption port, it will use the port selection strategy that the Amazon EFS mount helper uses. For more information, see [EFS mount helper](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) in the *Amazon Elastic File System User Guide*.", + "type": "integer" + } + }, + "required": [ + "FilesystemId" + ], + "type": "object" + }, + "EnvironmentFile": { + "additionalProperties": false, + "description": "A list of files containing the environment variables to pass to a container. You can specify up to ten environment files. The file must have a ``.env`` file extension. Each line in an environment file should contain an environment variable in ``VARIABLE=VALUE`` format. Lines beginning with ``#`` are treated as comments and are ignored.\n If there are environment variables specified using the ``environment`` parameter in a container definition, they take precedence over the variables contained within an environment file. If multiple environment files are specified that contain the same variable, they're processed from the top down. We recommend that you use unique variable names. For more information, see [Use a file to pass environment variables to a container](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/use-environment-file.html) in the *Amazon Elastic Container Service Developer Guide*.\n Environment variable files are objects in Amazon S3 and all Amazon S3 security considerations apply. \n You must use the following platforms for the Fargate launch type:\n + Linux platform version ``1.4.0`` or later.\n + Windows platform version ``1.0.0`` or later.\n \n Consider the following when using the Fargate launch type:\n + The file is handled like a native Docker env-file.\n + There is no support for shell escape handling.\n + The container entry point interperts the ``VARIABLE`` values.", + "properties": { + "Type": { + "description": "The file type to use. Environment files are objects in Amazon S3. The only supported value is ``s3``.", + "type": "string" + }, + "Value": { + "description": "The Amazon Resource Name (ARN) of the Amazon S3 object containing the environment variable file.", + "type": "string" + } + }, + "type": "object" + }, + "EphemeralStorage": { + "additionalProperties": false, + "description": "The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on FARGATElong. For more information, see [Using data volumes in tasks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html) in the *Amazon ECS Developer Guide;*.\n For tasks using the Fargate launch type, the task requires the following platforms:\n + Linux platform version ``1.4.0`` or later.\n + Windows platform version ``1.0.0`` or later.", + "properties": { + "SizeInGiB": { + "description": "The total amount, in GiB, of ephemeral storage to set for the task. The minimum supported value is ``21`` GiB and the maximum supported value is ``200`` GiB.", + "type": "integer" + } + }, + "type": "object" + }, + "FSxAuthorizationConfig": { + "additionalProperties": false, + "description": "The authorization configuration details for Amazon FSx for Windows File Server file system. See [FSxWindowsFileServerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FSxWindowsFileServerVolumeConfiguration.html) in the *Amazon ECS API Reference*.\n For more information and the input format, see [Amazon FSx for Windows File Server Volumes](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/wfsx-volumes.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "CredentialsParameter": { + "description": "The authorization credential option to use. The authorization credential options can be provided using either the Amazon Resource Name (ARN) of an ASMlong secret or SSM Parameter Store parameter. The ARN refers to the stored credentials.", + "type": "string" + }, + "Domain": { + "description": "A fully qualified domain name hosted by an [](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) Managed Microsoft AD (Active Directory) or self-hosted AD on Amazon EC2.", + "type": "string" + } + }, + "required": [ + "CredentialsParameter", + "Domain" + ], + "type": "object" + }, + "FSxWindowsFileServerVolumeConfiguration": { + "additionalProperties": false, + "description": "This parameter is specified when you're using [Amazon FSx for Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) file system for task storage.\n For more information and the input format, see [Amazon FSx for Windows File Server volumes](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/wfsx-volumes.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "AuthorizationConfig": { + "$ref": "#/definitions/FSxAuthorizationConfig", + "description": "The authorization configuration details for the Amazon FSx for Windows File Server file system." + }, + "FileSystemId": { + "description": "The Amazon FSx for Windows File Server file system ID to use.", + "type": "string" + }, + "RootDirectory": { + "description": "The directory within the Amazon FSx for Windows File Server file system to mount as the root directory inside the host.", + "type": "string" + } + }, + "required": [ + "FileSystemId", + "RootDirectory" + ], + "type": "object" + }, + "FirelensConfiguration": { + "additionalProperties": false, + "description": "The FireLens configuration for the container. This is used to specify and configure a log router for container logs. For more information, see [Custom log routing](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "Options": { + "additionalProperties": false, + "description": "The options to use when configuring the log router. This field is optional and can be used to add additional metadata, such as the task, task definition, cluster, and container instance details to the log event.\n If specified, valid option keys are:\n + ``enable-ecs-log-metadata``, which can be ``true`` or ``false`` \n + ``config-file-type``, which can be ``s3`` or ``file`` \n + ``config-file-value``, which is either an S3 ARN or a file path", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "Type": { + "description": "The log router to use. The valid values are ``fluentd`` or ``fluentbit``.", + "type": "string" + } + }, + "type": "object" + }, + "HealthCheck": { + "additionalProperties": false, + "description": "The ``HealthCheck`` property specifies an object representing a container health check. Health check parameters that are specified in a container definition override any Docker health checks that exist in the container image (such as those specified in a parent image or from the image's Dockerfile). This configuration maps to the ``HEALTHCHECK`` parameter of docker run.\n The Amazon ECS container agent only monitors and reports on the health checks specified in the task definition. Amazon ECS does not monitor Docker health checks that are embedded in a container image and not specified in the container definition. Health check parameters that are specified in a container definition override any Docker health checks that exist in the container image.\n If a task is run manually, and not as part of a service, the task will continue its lifecycle regardless of its health status. For tasks that are part of a service, if the task reports as unhealthy then the task will be stopped and the service scheduler will replace it.\n The following are notes about container health check support:\n + Container health checks require version 1.17.0 or greater of the Amazon ECS container agent. For more information, see [Updating the Amazon ECS Container Agent](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html).\n + Container health checks are supported for Fargate tasks if you are using platform version 1.1.0 or greater. For more information, see [Platform Versions](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html).\n + Container health checks are not supported for tasks that are part of a service that is configured to use a Classic Load Balancer.", + "properties": { + "Command": { + "description": "A string array representing the command that the container runs to determine if it is healthy. The string array must start with ``CMD`` to run the command arguments directly, or ``CMD-SHELL`` to run the command with the container's default shell. \n When you use the AWS Management Console JSON panel, the CLIlong, or the APIs, enclose the list of commands in double quotes and brackets.\n ``[ \"CMD-SHELL\", \"curl -f http://localhost/ || exit 1\" ]`` \n You don't include the double quotes and brackets when you use the AWS Management Console.\n ``CMD-SHELL, curl -f http://localhost/ || exit 1`` \n An exit code of 0 indicates success, and non-zero exit code indicates failure. For more information, see ``HealthCheck`` in the docker container create command.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "Interval": { + "description": "The time period in seconds between each health check execution. You may specify between 5 and 300 seconds. The default value is 30 seconds. This value applies only when you specify a ``command``.", + "type": "integer" + }, + "Retries": { + "description": "The number of times to retry a failed health check before the container is considered unhealthy. You may specify between 1 and 10 retries. The default value is 3. This value applies only when you specify a ``command``.", + "type": "integer" + }, + "StartPeriod": { + "description": "The optional grace period to provide containers time to bootstrap before failed health checks count towards the maximum number of retries. You can specify between 0 and 300 seconds. By default, the ``startPeriod`` is off. This value applies only when you specify a ``command``. \n If a health check succeeds within the ``startPeriod``, then the container is considered healthy and any subsequent failures count toward the maximum number of retries.", + "type": "integer" + }, + "Timeout": { + "description": "The time period in seconds to wait for a health check to succeed before it is considered a failure. You may specify between 2 and 60 seconds. The default value is 5. This value applies only when you specify a ``command``.", + "type": "integer" + } + }, + "type": "object" + }, + "HostEntry": { + "additionalProperties": false, + "description": "The ``HostEntry`` property specifies a hostname and an IP address that are added to the ``/etc/hosts`` file of a container through the ``extraHosts`` parameter of its ``ContainerDefinition`` resource.", + "properties": { + "Hostname": { + "description": "The hostname to use in the ``/etc/hosts`` entry.", + "type": "string" + }, + "IpAddress": { + "description": "The IP address to use in the ``/etc/hosts`` entry.", + "type": "string" + } + }, + "type": "object" + }, + "HostVolumeProperties": { + "additionalProperties": false, + "description": "The ``HostVolumeProperties`` property specifies details on a container instance bind mount host volume.", + "properties": { + "SourcePath": { + "description": "When the ``host`` parameter is used, specify a ``sourcePath`` to declare the path on the host container instance that's presented to the container. If this parameter is empty, then the Docker daemon has assigned a host path for you. If the ``host`` parameter contains a ``sourcePath`` file location, then the data volume persists at the specified location on the host container instance until you delete it manually. If the ``sourcePath`` value doesn't exist on the host container instance, the Docker daemon creates it. If the location does exist, the contents of the source path folder are exported.\n If you're using the Fargate launch type, the ``sourcePath`` parameter is not supported.", + "type": "string" + } + }, + "type": "object" + }, + "InferenceAccelerator": { + "additionalProperties": false, + "description": "Details on an Elastic Inference accelerator. For more information, see [Working with Amazon Elastic Inference on Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-inference.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "DeviceName": { + "description": "The Elastic Inference accelerator device name. The ``deviceName`` must also be referenced in a container definition as a [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html).", + "type": "string" + }, + "DeviceType": { + "description": "The Elastic Inference accelerator type to use.", + "type": "string" + } + }, + "type": "object" + }, + "KernelCapabilities": { + "additionalProperties": false, + "description": "The Linux capabilities to add or remove from the default Docker configuration for a container defined in the task definition. For more detailed information about these Linux capabilities, see the [capabilities(7)](https://docs.aws.amazon.com/http://man7.org/linux/man-pages/man7/capabilities.7.html) Linux manual page.\n The following describes how Docker processes the Linux capabilities specified in the ``add`` and ``drop`` request parameters. For information about the latest behavior, see [Docker Compose: order of cap_drop and cap_add](https://docs.aws.amazon.com/https://forums.docker.com/t/docker-compose-order-of-cap-drop-and-cap-add/97136/1) in the Docker Community Forum.\n + When the container is a privleged container, the container capabilities are all of the default Docker capabilities. The capabilities specified in the ``add`` request parameter, and the ``drop`` request parameter are ignored.\n + When the ``add`` request parameter is set to ALL, the container capabilities are all of the default Docker capabilities, excluding those specified in the ``drop`` request parameter.\n + When the ``drop`` request parameter is set to ALL, the container capabilities are the capabilities specified in the ``add`` request parameter.\n + When the ``add`` request parameter and the ``drop`` request parameter are both empty, the capabilities the container capabilities are all of the default Docker capabilities.\n + The default is to first drop the capabilities specified in the ``drop`` request parameter, and then add the capabilities specified in the ``add`` request parameter.", + "properties": { + "Add": { + "description": "The Linux capabilities for the container that have been added to the default configuration provided by Docker. This parameter maps to ``CapAdd`` in the docker container create command and the ``--cap-add`` option to docker run.\n Tasks launched on FARGATElong only support adding the ``SYS_PTRACE`` kernel capability.\n Valid values: ``\"ALL\" | \"AUDIT_CONTROL\" | \"AUDIT_WRITE\" | \"BLOCK_SUSPEND\" | \"CHOWN\" | \"DAC_OVERRIDE\" | \"DAC_READ_SEARCH\" | \"FOWNER\" | \"FSETID\" | \"IPC_LOCK\" | \"IPC_OWNER\" | \"KILL\" | \"LEASE\" | \"LINUX_IMMUTABLE\" | \"MAC_ADMIN\" | \"MAC_OVERRIDE\" | \"MKNOD\" | \"NET_ADMIN\" | \"NET_BIND_SERVICE\" | \"NET_BROADCAST\" | \"NET_RAW\" | \"SETFCAP\" | \"SETGID\" | \"SETPCAP\" | \"SETUID\" | \"SYS_ADMIN\" | \"SYS_BOOT\" | \"SYS_CHROOT\" | \"SYS_MODULE\" | \"SYS_NICE\" | \"SYS_PACCT\" | \"SYS_PTRACE\" | \"SYS_RAWIO\" | \"SYS_RESOURCE\" | \"SYS_TIME\" | \"SYS_TTY_CONFIG\" | \"SYSLOG\" | \"WAKE_ALARM\"``", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Drop": { + "description": "The Linux capabilities for the container that have been removed from the default configuration provided by Docker. This parameter maps to ``CapDrop`` in the docker container create command and the ``--cap-drop`` option to docker run.\n Valid values: ``\"ALL\" | \"AUDIT_CONTROL\" | \"AUDIT_WRITE\" | \"BLOCK_SUSPEND\" | \"CHOWN\" | \"DAC_OVERRIDE\" | \"DAC_READ_SEARCH\" | \"FOWNER\" | \"FSETID\" | \"IPC_LOCK\" | \"IPC_OWNER\" | \"KILL\" | \"LEASE\" | \"LINUX_IMMUTABLE\" | \"MAC_ADMIN\" | \"MAC_OVERRIDE\" | \"MKNOD\" | \"NET_ADMIN\" | \"NET_BIND_SERVICE\" | \"NET_BROADCAST\" | \"NET_RAW\" | \"SETFCAP\" | \"SETGID\" | \"SETPCAP\" | \"SETUID\" | \"SYS_ADMIN\" | \"SYS_BOOT\" | \"SYS_CHROOT\" | \"SYS_MODULE\" | \"SYS_NICE\" | \"SYS_PACCT\" | \"SYS_PTRACE\" | \"SYS_RAWIO\" | \"SYS_RESOURCE\" | \"SYS_TIME\" | \"SYS_TTY_CONFIG\" | \"SYSLOG\" | \"WAKE_ALARM\"``", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "KeyValuePair": { + "additionalProperties": false, + "description": "A key-value pair object.", + "properties": { + "Name": { + "description": "The name of the key-value pair. For environment variables, this is the name of the environment variable.", + "type": "string" + }, + "Value": { + "description": "The value of the key-value pair. For environment variables, this is the value of the environment variable.", + "type": "string" + } + }, + "type": "object" + }, + "LinuxParameters": { + "additionalProperties": false, + "description": "The Linux-specific options that are applied to the container, such as Linux [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html).", + "properties": { + "Capabilities": { + "$ref": "#/definitions/KernelCapabilities", + "description": "The Linux capabilities for the container that are added to or dropped from the default configuration provided by Docker.\n For tasks that use the Fargate launch type, ``capabilities`` is supported for all platform versions but the ``add`` parameter is only supported if using platform version 1.4.0 or later." + }, + "Devices": { + "description": "Any host devices to expose to the container. This parameter maps to ``Devices`` in the docker container create command and the ``--device`` option to docker run.\n If you're using tasks that use the Fargate launch type, the ``devices`` parameter isn't supported.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Device" + }, + "type": "array" + }, + "InitProcessEnabled": { + "description": "Run an ``init`` process inside the container that forwards signals and reaps processes. This parameter maps to the ``--init`` option to docker run. This parameter requires version 1.25 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", + "type": "boolean" + }, + "MaxSwap": { + "description": "The total amount of swap memory (in MiB) a container can use. This parameter will be translated to the ``--memory-swap`` option to docker run where the value would be the sum of the container memory plus the ``maxSwap`` value.\n If a ``maxSwap`` value of ``0`` is specified, the container will not use swap. Accepted values are ``0`` or any positive integer. If the ``maxSwap`` parameter is omitted, the container will use the swap configuration for the container instance it is running on. A ``maxSwap`` value must be set for the ``swappiness`` parameter to be used.\n If you're using tasks that use the Fargate launch type, the ``maxSwap`` parameter isn't supported.\n If you're using tasks on Amazon Linux 2023 the ``swappiness`` parameter isn't supported.", + "type": "integer" + }, + "SharedMemorySize": { + "description": "The value for the size (in MiB) of the ``/dev/shm`` volume. This parameter maps to the ``--shm-size`` option to docker run.\n If you are using tasks that use the Fargate launch type, the ``sharedMemorySize`` parameter is not supported.", + "type": "integer" + }, + "Swappiness": { + "description": "This allows you to tune a container's memory swappiness behavior. A ``swappiness`` value of ``0`` will cause swapping to not happen unless absolutely necessary. A ``swappiness`` value of ``100`` will cause pages to be swapped very aggressively. Accepted values are whole numbers between ``0`` and ``100``. If the ``swappiness`` parameter is not specified, a default value of ``60`` is used. If a value is not specified for ``maxSwap`` then this parameter is ignored. This parameter maps to the ``--memory-swappiness`` option to docker run.\n If you're using tasks that use the Fargate launch type, the ``swappiness`` parameter isn't supported.\n If you're using tasks on Amazon Linux 2023 the ``swappiness`` parameter isn't supported.", + "type": "integer" + }, + "Tmpfs": { + "description": "The container path, mount options, and size (in MiB) of the tmpfs mount. This parameter maps to the ``--tmpfs`` option to docker run.\n If you're using tasks that use the Fargate launch type, the ``tmpfs`` parameter isn't supported.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tmpfs" + }, + "type": "array" + } + }, + "type": "object" + }, + "LogConfiguration": { + "additionalProperties": false, + "description": "The ``LogConfiguration`` property specifies log configuration options to send to a custom log driver for the container.", + "properties": { + "LogDriver": { + "description": "The log driver to use for the container.\n For tasks on FARGATElong, the supported log drivers are ``awslogs``, ``splunk``, and ``awsfirelens``.\n For tasks hosted on Amazon EC2 instances, the supported log drivers are ``awslogs``, ``fluentd``, ``gelf``, ``json-file``, ``journald``, ``syslog``, ``splunk``, and ``awsfirelens``.\n For more information about using the ``awslogs`` log driver, see [Send Amazon ECS logs to CloudWatch](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html) in the *Amazon Elastic Container Service Developer Guide*.\n For more information about using the ``awsfirelens`` log driver, see [Send Amazon ECS logs to an service or Partner](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html).\n If you have a custom driver that isn't listed, you can fork the Amazon ECS container agent project that's [available on GitHub](https://docs.aws.amazon.com/https://github.com/aws/amazon-ecs-agent) and customize it to work with that driver. We encourage you to submit pull requests for changes that you would like to have included. However, we don't currently provide support for running modified copies of this software.", + "type": "string" + }, + "Options": { + "additionalProperties": false, + "description": "The configuration options to send to the log driver.\n The options you can specify depend on the log driver. Some of the options you can specify when you use the ``awslogs`` log driver to route logs to Amazon CloudWatch include the following:\n + awslogs-create-group Required: No Specify whether you want the log group to be created automatically. If this option isn't specified, it defaults to false. Your IAM policy must include the logs:CreateLogGroup permission before you attempt to use awslogs-create-group. + awslogs-region Required: Yes Specify the Region that the awslogs log driver is to send your Docker logs to. You can choose to send all of your logs from clusters in different Regions to a single region in CloudWatch Logs. This is so that they're all visible in one location. Otherwise, you can separate them by Region for more granularity. Make sure that the specified log group exists in the Region that you specify with this option. + awslogs-group Required: Yes Make sure to specify a log group that the awslogs log driver sends its log streams to. + awslogs-stream-prefix Required: Yes, when using the Fargate launch type.Optional for the EC2 launch type, required for the Fargate launch type. Use the awslogs-stream-prefix option to associate a log stream with the specified prefix, the container name, and the ID of the Amazon ECS task that the container belongs to. If you specify a prefix with this option, then the log stream takes the format prefix-name/container-name/ecs-task-id. If you don't specify a prefix with this option, then the log stream is named after the container ID that's assigned by the Docker daemon on the container instance. Because it's difficult to trace logs back to the container that sent them with just the Docker container ID (which is only available on the container instance), we recommend that you specify a prefix with this option. For Amazon ECS services, you can use the service name as the prefix. Doing so, you can trace log streams to the service that the container belongs to, the name of the container that sent them, and the ID of the task that the container belongs to. You must specify a stream-prefix for your logs to have your logs appear in the Log pane when using the Amazon ECS console. + awslogs-datetime-format Required: No This option defines a multiline start pattern in Python strftime format. A log message consists of a line that matches the pattern and any following lines that don\u2019t match the pattern. The matched line is the delimiter between log messages. One example of a use case for using this format is for parsing output such as a stack dump, which might otherwise be logged in multiple entries. The correct pattern allows it to be captured in a single entry. For more information, see awslogs-datetime-format. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + awslogs-multiline-pattern Required: No This option defines a multiline start pattern that uses a regular expression. A log message consists of a line that matches the pattern and any following lines that don\u2019t match the pattern. The matched line is the delimiter between log messages. For more information, see awslogs-multiline-pattern. This option is ignored if awslogs-datetime-format is also configured. You cannot configure both the awslogs-datetime-format and awslogs-multiline-pattern options. Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. + mode Required: No Valid values: non-blocking | blocking This option defines the delivery mode of log messages from the container to CloudWatch Logs. The delivery mode you choose affects application availability when the flow of logs from container to CloudWatch is interrupted. If you use the blocking mode and the flow of logs to CloudWatch is interrupted, calls from container code to write to the stdout and stderr streams will block. The logging thread of the application will block as a result. This may cause the application to become unresponsive and lead to container healthcheck failure. If you use the non-blocking mode, the container's logs are instead stored in an in-memory intermediate buffer configured with the max-buffer-size option. This prevents the application from becoming unresponsive when logs cannot be sent to CloudWatch. We recommend using this mode if you want to ensure service availability and are okay with some log loss. For more information, see Preventing log loss with non-blocking mode in the awslogs container log driver. + max-buffer-size Required: No Default value: 1m When non-blocking mode is used, the max-buffer-size log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost. \n To route logs using the ``splunk`` log router, you need to specify a ``splunk-token`` and a ``splunk-url``.\n When you use the ``awsfirelens`` log router to route logs to an AWS Service or AWS Partner Network destination for log storage and analytics, you can set the ``log-driver-buffer-limit`` option to limit the number of events that are buffered in memory, before being sent to the log router container. It can help to resolve potential log loss issue because high throughput might result in memory running out for the buffer inside of Docker.\n Other options you can specify when using ``awsfirelens`` to route logs depend on the destination. When you export logs to Amazon Data Firehose, you can specify the AWS Region with ``region`` and a name for the log stream with ``delivery_stream``.\n When you export logs to Amazon Kinesis Data Streams, you can specify an AWS Region with ``region`` and a data stream name with ``stream``.\n When you export logs to Amazon OpenSearch Service, you can specify options like ``Name``, ``Host`` (OpenSearch Service endpoint without protocol), ``Port``, ``Index``, ``Type``, ``Aws_auth``, ``Aws_region``, ``Suppress_Type_Name``, and ``tls``. For more information, see [Under the hood: FireLens for Amazon ECS Tasks](https://docs.aws.amazon.com/containers/under-the-hood-firelens-for-amazon-ecs-tasks/).\n When you export logs to Amazon S3, you can specify the bucket using the ``bucket`` option. You can also specify ``region``, ``total_file_size``, ``upload_timeout``, and ``use_put_object`` as options.\n This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "SecretOptions": { + "description": "The secrets to pass to the log configuration. For more information, see [Specifying sensitive data](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html) in the *Amazon Elastic Container Service Developer Guide*.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Secret" + }, + "type": "array" + } + }, + "required": [ + "LogDriver" + ], + "type": "object" + }, + "MountPoint": { + "additionalProperties": false, + "description": "The details for a volume mount point that's used in a container definition.", + "properties": { + "ContainerPath": { + "description": "The path on the container to mount the host volume at.", + "type": "string" + }, + "ReadOnly": { + "description": "If this value is ``true``, the container has read-only access to the volume. If this value is ``false``, then the container can write to the volume. The default value is ``false``.", + "type": "boolean" + }, + "SourceVolume": { + "description": "The name of the volume to mount. Must be a volume name referenced in the ``name`` parameter of task definition ``volume``.", + "type": "string" + } + }, + "type": "object" + }, + "PortMapping": { + "additionalProperties": false, + "description": "The ``PortMapping`` property specifies a port mapping. Port mappings allow containers to access ports on the host container instance to send or receive traffic. Port mappings are specified as part of the container definition.\n If you are using containers in a task with the ``awsvpc`` or ``host`` network mode, exposed ports should be specified using ``containerPort``. The ``hostPort`` can be left blank or it must be the same value as the ``containerPort``.\n After a task reaches the ``RUNNING`` status, manual and automatic host and container port assignments are visible in the ``networkBindings`` section of [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html) API responses.", + "properties": { + "AppProtocol": { + "description": "The application protocol that's used for the port mapping. This parameter only applies to Service Connect. We recommend that you set this parameter to be consistent with the protocol that your application uses. If you set this parameter, Amazon ECS adds protocol-specific connection handling to the Service Connect proxy. If you set this parameter, Amazon ECS adds protocol-specific telemetry in the Amazon ECS console and CloudWatch.\n If you don't set a value for this parameter, then TCP is used. However, Amazon ECS doesn't add protocol-specific telemetry for TCP.\n ``appProtocol`` is immutable in a Service Connect service. Updating this field requires a service deletion and redeployment.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", + "enum": [ + "http", + "http2", + "grpc" + ], + "type": "string" + }, + "ContainerPort": { + "description": "The port number on the container that's bound to the user-specified or automatically assigned host port.\n If you use containers in a task with the ``awsvpc`` or ``host`` network mode, specify the exposed ports using ``containerPort``.\n If you use containers in a task with the ``bridge`` network mode and you specify a container port and not a host port, your container automatically receives a host port in the ephemeral port range. For more information, see ``hostPort``. Port mappings that are automatically assigned in this way do not count toward the 100 reserved ports limit of a container instance.", + "type": "integer" + }, + "ContainerPortRange": { + "description": "The port number range on the container that's bound to the dynamically mapped host port range. \n The following rules apply when you specify a ``containerPortRange``:\n + You must use either the ``bridge`` network mode or the ``awsvpc`` network mode.\n + This parameter is available for both the EC2 and FARGATElong launch types.\n + This parameter is available for both the Linux and Windows operating systems.\n + The container instance must have at least version 1.67.0 of the container agent and at least version 1.67.0-1 of the ``ecs-init`` package \n + You can specify a maximum of 100 port ranges per container.\n + You do not specify a ``hostPortRange``. The value of the ``hostPortRange`` is set as follows:\n + For containers in a task with the ``awsvpc`` network mode, the ``hostPortRange`` is set to the same value as the ``containerPortRange``. This is a static mapping strategy.\n + For containers in a task with the ``bridge`` network mode, the Amazon ECS agent finds open host ports from the default ephemeral range and passes it to docker to bind them to the container ports.\n \n + The ``containerPortRange`` valid values are between 1 and 65535.\n + A port can only be included in one port mapping per container.\n + You cannot specify overlapping port ranges.\n + The first port in the range must be less than last port in the range.\n + Docker recommends that you turn off the docker-proxy in the Docker daemon config file when you have a large number of ports.\n For more information, see [Issue #11185](https://docs.aws.amazon.com/https://github.com/moby/moby/issues/11185) on the Github website.\n For information about how to turn off the docker-proxy in the Docker daemon config file, see [Docker daemon](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html#bootstrap_docker_daemon) in the *Amazon ECS Developer Guide*.\n \n You can call [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html) to view the ``hostPortRange`` which are the host ports that are bound to the container ports.", + "type": "string" + }, + "HostPort": { + "description": "The port number on the container instance to reserve for your container.\n If you specify a ``containerPortRange``, leave this field empty and the value of the ``hostPort`` is set as follows:\n + For containers in a task with the ``awsvpc`` network mode, the ``hostPort`` is set to the same value as the ``containerPort``. This is a static mapping strategy.\n + For containers in a task with the ``bridge`` network mode, the Amazon ECS agent finds open ports on the host and automatically binds them to the container ports. This is a dynamic mapping strategy.\n \n If you use containers in a task with the ``awsvpc`` or ``host`` network mode, the ``hostPort`` can either be left blank or set to the same value as the ``containerPort``.\n If you use containers in a task with the ``bridge`` network mode, you can specify a non-reserved host port for your container port mapping, or you can omit the ``hostPort`` (or set it to ``0``) while specifying a ``containerPort`` and your container automatically receives a port in the ephemeral port range for your container instance operating system and Docker version.\n The default ephemeral port range for Docker version 1.6.0 and later is listed on the instance under ``/proc/sys/net/ipv4/ip_local_port_range``. If this kernel parameter is unavailable, the default ephemeral port range from 49153 through 65535 (Linux) or 49152 through 65535 (Windows) is used. Do not attempt to specify a host port in the ephemeral port range as these are reserved for automatic assignment. In general, ports below 32768 are outside of the ephemeral port range.\n The default reserved ports are 22 for SSH, the Docker ports 2375 and 2376, and the Amazon ECS container agent ports 51678-51680. Any host port that was previously specified in a running task is also reserved while the task is running. That is, after a task stops, the host port is released. The current reserved ports are displayed in the ``remainingResources`` of [DescribeContainerInstances](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeContainerInstances.html) output. A container instance can have up to 100 reserved ports at a time. This number includes the default reserved ports. Automatically assigned ports aren't included in the 100 reserved ports quota.", + "type": "integer" + }, + "Name": { + "description": "The name that's used for the port mapping. This parameter is the name that you use in the ``serviceConnectConfiguration`` and the ``vpcLatticeConfigurations`` of a service. The name can include up to 64 characters. The characters can include lowercase letters, numbers, underscores (_), and hyphens (-). The name can't start with a hyphen.", + "type": "string" + }, + "Protocol": { + "description": "The protocol used for the port mapping. Valid values are ``tcp`` and ``udp``. The default is ``tcp``. ``protocol`` is immutable in a Service Connect service. Updating this field requires a service deletion and redeployment.", + "type": "string" + } + }, + "type": "object" + }, + "ProxyConfiguration": { + "additionalProperties": false, + "description": "The configuration details for the App Mesh proxy.\n For tasks that use the EC2 launch type, the container instances require at least version 1.26.0 of the container agent and at least version 1.26.0-1 of the ``ecs-init`` package to use a proxy configuration. If your container instances are launched from the Amazon ECS optimized AMI version ``20190301`` or later, then they contain the required versions of the container agent and ``ecs-init``. For more information, see [Amazon ECS-optimized Linux AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html)", + "properties": { + "ContainerName": { + "description": "The name of the container that will serve as the App Mesh proxy.", + "type": "string" + }, + "ProxyConfigurationProperties": { + "description": "The set of network configuration parameters to provide the Container Network Interface (CNI) plugin, specified as key-value pairs.\n + ``IgnoredUID`` - (Required) The user ID (UID) of the proxy container as defined by the ``user`` parameter in a container definition. This is used to ensure the proxy ignores its own traffic. If ``IgnoredGID`` is specified, this field can be empty.\n + ``IgnoredGID`` - (Required) The group ID (GID) of the proxy container as defined by the ``user`` parameter in a container definition. This is used to ensure the proxy ignores its own traffic. If ``IgnoredUID`` is specified, this field can be empty.\n + ``AppPorts`` - (Required) The list of ports that the application uses. Network traffic to these ports is forwarded to the ``ProxyIngressPort`` and ``ProxyEgressPort``.\n + ``ProxyIngressPort`` - (Required) Specifies the port that incoming traffic to the ``AppPorts`` is directed to.\n + ``ProxyEgressPort`` - (Required) Specifies the port that outgoing traffic from the ``AppPorts`` is directed to.\n + ``EgressIgnoredPorts`` - (Required) The egress traffic going to the specified ports is ignored and not redirected to the ``ProxyEgressPort``. It can be an empty list.\n + ``EgressIgnoredIPs`` - (Required) The egress traffic going to the specified IP addresses is ignored and not redirected to the ``ProxyEgressPort``. It can be an empty list.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/KeyValuePair" + }, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "The proxy type. The only supported value is ``APPMESH``.", + "type": "string" + } + }, + "required": [ + "ContainerName" + ], + "type": "object" + }, + "RepositoryCredentials": { + "additionalProperties": false, + "description": "The repository credentials for private registry authentication.", + "properties": { + "CredentialsParameter": { + "description": "The Amazon Resource Name (ARN) of the secret containing the private repository credentials.\n When you use the Amazon ECS API, CLI, or AWS SDK, if the secret exists in the same Region as the task that you're launching then you can use either the full ARN or the name of the secret. When you use the AWS Management Console, you must specify the full ARN of the secret.", + "type": "string" + } + }, + "type": "object" + }, + "ResourceRequirement": { + "additionalProperties": false, + "description": "The type and amount of a resource to assign to a container. The supported resource types are GPUs and Elastic Inference accelerators. For more information, see [Working with GPUs on Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-gpu.html) or [Working with Amazon Elastic Inference on Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-inference.html) in the *Amazon Elastic Container Service Developer Guide*", + "properties": { + "Type": { + "description": "The type of resource to assign to a container.", + "type": "string" + }, + "Value": { + "description": "The value for the specified resource type.\n When the type is ``GPU``, the value is the number of physical ``GPUs`` the Amazon ECS container agent reserves for the container. The number of GPUs that's reserved for all containers in a task can't exceed the number of available GPUs on the container instance that the task is launched on.\n When the type is ``InferenceAccelerator``, the ``value`` matches the ``deviceName`` for an [InferenceAccelerator](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_InferenceAccelerator.html) specified in a task definition.", + "type": "string" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, + "RestartPolicy": { + "additionalProperties": false, + "description": "You can enable a restart policy for each container defined in your task definition, to overcome transient failures faster and maintain task availability. When you enable a restart policy for a container, Amazon ECS can restart the container if it exits, without needing to replace the task. For more information, see [Restart individual containers in Amazon ECS tasks with container restart policies](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-restart-policy.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "Enabled": { + "description": "Specifies whether a restart policy is enabled for the container.", + "type": "boolean" + }, + "IgnoredExitCodes": { + "description": "A list of exit codes that Amazon ECS will ignore and not attempt a restart on. You can specify a maximum of 50 container exit codes. By default, Amazon ECS does not ignore any exit codes.", + "insertionOrder": false, + "items": { + "type": "integer" + }, + "type": "array" + }, + "RestartAttemptPeriod": { + "description": "A period of time (in seconds) that the container must run for before a restart can be attempted. A container can be restarted only once every ``restartAttemptPeriod`` seconds. If a container isn't able to run for this time period and exits early, it will not be restarted. You can set a minimum ``restartAttemptPeriod`` of 60 seconds and a maximum ``restartAttemptPeriod`` of 1800 seconds. By default, a container must run for 300 seconds before it can be restarted.", + "type": "integer" + } + }, + "type": "object" + }, + "RuntimePlatform": { + "additionalProperties": false, + "description": "Information about the platform for the Amazon ECS service or task.\n For more information about ``RuntimePlatform``, see [RuntimePlatform](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#runtime-platform) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "CpuArchitecture": { + "description": "The CPU architecture.\n You can run your Linux tasks on an ARM-based platform by setting the value to ``ARM64``. This option is available for tasks that run on Linux Amazon EC2 instance or Linux containers on Fargate.", + "type": "string" + }, + "OperatingSystemFamily": { + "description": "The operating system.", + "type": "string" + } + }, + "type": "object" + }, + "Secret": { + "additionalProperties": false, + "description": "An object representing the secret to expose to your container. Secrets can be exposed to a container in the following ways:\n + To inject sensitive data into your containers as environment variables, use the ``secrets`` container definition parameter.\n + To reference sensitive information in the log configuration of a container, use the ``secretOptions`` container definition parameter.\n \n For more information, see [Specifying sensitive data](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html) in the *Amazon Elastic Container Service Developer Guide*.", + "properties": { + "Name": { + "description": "The name of the secret.", + "type": "string" + }, + "ValueFrom": { + "description": "The secret to expose to the container. The supported values are either the full ARN of the ASMlong secret or the full ARN of the parameter in the SSM Parameter Store.\n For information about the require IAMlong permissions, see [Required IAM permissions for Amazon ECS secrets](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-secrets.html#secrets-iam) (for Secrets Manager) or [Required IAM permissions for Amazon ECS secrets](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-parameters.html) (for Systems Manager Parameter store) in the *Amazon Elastic Container Service Developer Guide*.\n If the SSM Parameter Store parameter exists in the same Region as the task you're launching, then you can use either the full ARN or name of the parameter. If the parameter exists in a different Region, then the full ARN must be specified.", + "type": "string" + } + }, + "required": [ + "Name", + "ValueFrom" + ], + "type": "object" + }, + "SystemControl": { + "additionalProperties": false, + "description": "A list of namespaced kernel parameters to set in the container. This parameter maps to ``Sysctls`` in the docker container create command and the ``--sysctl`` option to docker run. For example, you can configure ``net.ipv4.tcp_keepalive_time`` setting to maintain longer lived connections.\n We don't recommend that you specify network-related ``systemControls`` parameters for multiple containers in a single task that also uses either the ``awsvpc`` or ``host`` network mode. Doing this has the following disadvantages:\n + For tasks that use the ``awsvpc`` network mode including Fargate, if you set ``systemControls`` for any container, it applies to all containers in the task. If you set different ``systemControls`` for multiple containers in a single task, the container that's started last determines which ``systemControls`` take effect.\n + For tasks that use the ``host`` network mode, the network namespace ``systemControls`` aren't supported.\n \n If you're setting an IPC resource namespace to use for the containers in the task, the following conditions apply to your system controls. For more information, see [IPC mode](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#task_definition_ipcmode).\n + For tasks that use the ``host`` IPC mode, IPC namespace ``systemControls`` aren't supported.\n + For tasks that use the ``task`` IPC mode, IPC namespace ``systemControls`` values apply to all containers within a task.\n \n This parameter is not supported for Windows containers.\n This parameter is only supported for tasks that are hosted on FARGATElong if the tasks are using platform version ``1.4.0`` or later (Linux). This isn't supported for Windows containers on Fargate.", + "properties": { + "Namespace": { + "description": "The namespaced kernel parameter to set a ``value`` for.", + "type": "string" + }, + "Value": { + "description": "The namespaced kernel parameter to set a ``value`` for.\n Valid IPC namespace values: ``\"kernel.msgmax\" | \"kernel.msgmnb\" | \"kernel.msgmni\" | \"kernel.sem\" | \"kernel.shmall\" | \"kernel.shmmax\" | \"kernel.shmmni\" | \"kernel.shm_rmid_forced\"``, and ``Sysctls`` that start with ``\"fs.mqueue.*\"`` \n Valid network namespace values: ``Sysctls`` that start with ``\"net.*\"`` \n All of these values are supported by Fargate.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "The metadata that you apply to a resource to help you categorize and organize them. Each tag consists of a key and an optional value. You define them.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", + "properties": { + "Key": { + "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", + "type": "string" + }, + "Value": { + "description": "The optional part of a key-value pair that make up a tag. A ``value`` acts as a descriptor within a tag category (key).", + "type": "string" + } + }, + "type": "object" + }, + "TaskDefinitionPlacementConstraint": { + "additionalProperties": false, + "description": "The constraint on task placement in the task definition. For more information, see [Task placement constraints](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html) in the *Amazon Elastic Container Service Developer Guide*.\n Task placement constraints aren't supported for tasks run on FARGATElong.", + "properties": { + "Expression": { + "description": "A cluster query language expression to apply to the constraint. For more information, see [Cluster query language](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html) in the *Amazon Elastic Container Service Developer Guide*.", + "type": "string" + }, + "Type": { + "description": "The type of constraint. The ``MemberOf`` constraint restricts selection to be from a group of valid candidates.", + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "Tmpfs": { + "additionalProperties": false, + "description": "The container path, mount options, and size of the tmpfs mount.", + "properties": { + "ContainerPath": { + "description": "The absolute file path where the tmpfs volume is to be mounted.", + "type": "string" + }, + "MountOptions": { + "description": "The list of tmpfs volume mount options.\n Valid values: ``\"defaults\" | \"ro\" | \"rw\" | \"suid\" | \"nosuid\" | \"dev\" | \"nodev\" | \"exec\" | \"noexec\" | \"sync\" | \"async\" | \"dirsync\" | \"remount\" | \"mand\" | \"nomand\" | \"atime\" | \"noatime\" | \"diratime\" | \"nodiratime\" | \"bind\" | \"rbind\" | \"unbindable\" | \"runbindable\" | \"private\" | \"rprivate\" | \"shared\" | \"rshared\" | \"slave\" | \"rslave\" | \"relatime\" | \"norelatime\" | \"strictatime\" | \"nostrictatime\" | \"mode\" | \"uid\" | \"gid\" | \"nr_inodes\" | \"nr_blocks\" | \"mpol\"``", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Size": { + "description": "The maximum size (in MiB) of the tmpfs volume.", + "type": "integer" + } + }, + "required": [ + "Size" + ], + "type": "object" + }, + "Ulimit": { + "additionalProperties": false, + "description": "The ``ulimit`` settings to pass to the container.\n Amazon ECS tasks hosted on FARGATElong use the default resource limit values set by the operating system with the exception of the ``nofile`` resource limit parameter which FARGATElong overrides. The ``nofile`` resource limit sets a restriction on the number of open files that a container can use. The default ``nofile`` soft limit is ``65535`` and the default hard limit is ``65535``.\n You can specify the ``ulimit`` settings for a container in a task definition.", + "properties": { + "HardLimit": { + "description": "The hard limit for the ``ulimit`` type. The value can be specified in bytes, seconds, or as a count, depending on the ``type`` of the ``ulimit``.", + "type": "integer" + }, + "Name": { + "description": "The ``type`` of the ``ulimit``.", + "type": "string" + }, + "SoftLimit": { + "description": "The soft limit for the ``ulimit`` type. The value can be specified in bytes, seconds, or as a count, depending on the ``type`` of the ``ulimit``.", + "type": "integer" + } + }, + "required": [ + "HardLimit", + "Name", + "SoftLimit" + ], + "type": "object" + }, + "Volume": { + "additionalProperties": false, + "description": "The data volume configuration for tasks launched using this task definition. Specifying a volume configuration in a task definition is optional. The volume configuration may contain multiple volumes but only one volume configured at launch is supported. Each volume defined in the volume configuration may only specify a ``name`` and one of either ``configuredAtLaunch``, ``dockerVolumeConfiguration``, ``efsVolumeConfiguration``, ``fsxWindowsFileServerVolumeConfiguration``, or ``host``. If an empty volume configuration is specified, by default Amazon ECS uses a host volume. For more information, see [Using data volumes in tasks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html).", + "properties": { + "ConfiguredAtLaunch": { + "description": "Indicates whether the volume should be configured at launch time. This is used to create Amazon EBS volumes for standalone tasks or tasks created as part of a service. Each task definition revision may only have one volume configured at launch in the volume configuration.\n To configure a volume at launch time, use this task definition revision and specify a ``volumeConfigurations`` object when calling the ``CreateService``, ``UpdateService``, ``RunTask`` or ``StartTask`` APIs.", + "type": "boolean" + }, + "DockerVolumeConfiguration": { + "$ref": "#/definitions/DockerVolumeConfiguration", + "description": "This parameter is specified when you use Docker volumes.\n Windows containers only support the use of the ``local`` driver. To use bind mounts, specify the ``host`` parameter instead.\n Docker volumes aren't supported by tasks run on FARGATElong." + }, + "EFSVolumeConfiguration": { + "$ref": "#/definitions/EFSVolumeConfiguration", + "description": "This parameter is specified when you use an Amazon Elastic File System file system for task storage." + }, + "FSxWindowsFileServerVolumeConfiguration": { + "$ref": "#/definitions/FSxWindowsFileServerVolumeConfiguration", + "description": "This parameter is specified when you use Amazon FSx for Windows File Server file system for task storage." + }, + "Host": { + "$ref": "#/definitions/HostVolumeProperties", + "description": "This parameter is specified when you use bind mount host volumes. The contents of the ``host`` parameter determine whether your bind mount host volume persists on the host container instance and where it's stored. If the ``host`` parameter is empty, then the Docker daemon assigns a host path for your data volume. However, the data isn't guaranteed to persist after the containers that are associated with it stop running.\n Windows containers can mount whole directories on the same drive as ``$env:ProgramData``. Windows containers can't mount directories on a different drive, and mount point can't be across drives. For example, you can mount ``C:\\my\\path:C:\\my\\path`` and ``D:\\:D:\\``, but not ``D:\\my\\path:C:\\my\\path`` or ``D:\\:C:\\my\\path``." + }, + "Name": { + "description": "The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed.\n When using a volume configured at launch, the ``name`` is required and must also be specified as the volume name in the ``ServiceVolumeConfiguration`` or ``TaskVolumeConfiguration`` parameter when creating your service or standalone task.\n For all other types of volumes, this name is referenced in the ``sourceVolume`` parameter of the ``mountPoints`` object in the container definition.\n When a volume is using the ``efsVolumeConfiguration``, the name is required.", + "type": "string" + } + }, + "type": "object" + }, + "VolumeFrom": { + "additionalProperties": false, + "description": "Details on a data volume from another container in the same task definition.", + "properties": { + "ReadOnly": { + "description": "If this value is ``true``, the container has read-only access to the volume. If this value is ``false``, then the container can write to the volume. The default value is ``false``.", + "type": "boolean" + }, + "SourceContainer": { + "description": "The name of another container within the same task definition to mount volumes from.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Registers a new task definition from the supplied ``family`` and ``containerDefinitions``. Optionally, you can add data volumes to your containers with the ``volumes`` parameter. For more information about task definition parameters and defaults, see [Amazon ECS Task Definitions](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html) in the *Amazon Elastic Container Service Developer Guide*.\n You can specify a role for your task with the ``taskRoleArn`` parameter. When you specify a role for a task, its containers can then use the latest versions of the CLI or SDKs to make API requests to the AWS services that are specified in the policy that's associated with the role. For more information, see [IAM Roles for Tasks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) in the *Amazon Elastic Container Service Developer Guide*.\n You can specify a Docker networking mode for the containers in your task definition with the ``networkMode`` parameter. If you specify the ``awsvpc`` network mode, the task is allocated an elastic network interface, and you must specify a [NetworkConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_NetworkConfiguration.html) when you create a service or run a task with the task definition. For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) in the *Amazon Elastic Container Service Developer Guide*.\n In the following example or examples, the Authorization header contents (``AUTHPARAMS``) must be replaced with an AWS Signature Version 4 signature. For more information, see [Signature Version 4 Signing Process](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) in the *General Reference*.\n You only need to learn how to sign HTTP requests if you intend to create them manually. When you use the [](https://docs.aws.amazon.com/cli/) or one of the [SDKs](https://docs.aws.amazon.com/tools/) to make requests to AWS, these tools automatically sign the requests for you, with the access key that you specify when you configure the tools. When you use these tools, you don't have to sign requests yourself.", + "handlers": { + "create": { + "permissions": [ + "ecs:RegisterTaskDefinition", + "ecs:DescribeTaskDefinition", + "ecs:TagResource", + "iam:GetRole", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "ecs:DeregisterTaskDefinition", + "ecs:DescribeTaskDefinition", + "iam:GetRole", + "iam:PassRole" + ] + }, + "list": { + "permissions": [ + "ecs:ListTaskDefinitions", + "ecs:DescribeTaskDefinition" + ] + }, + "read": { + "permissions": [ + "ecs:DescribeTaskDefinition" + ] + }, + "update": { + "permissions": [ + "ecs:TagResource", + "ecs:UntagResource", + "ecs:ListTagsForResource", + "ecs:DescribeTaskDefinition", + "iam:GetRole", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/TaskDefinitionArn" + ], + "properties": { + "ContainerDefinitions": { + "description": "A list of container definitions in JSON format that describe the different containers that make up your task. For more information about container definition parameters and defaults, see [Amazon ECS Task Definitions](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html) in the *Amazon Elastic Container Service Developer Guide*.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ContainerDefinition" + }, + "type": "array", + "uniqueItems": true + }, + "Cpu": { + "description": "The number of ``cpu`` units used by the task. If you use the EC2 launch type, this field is optional. Any value can be used. If you use the Fargate launch type, this field is required. You must use one of the following values. The value that you choose determines your range of valid values for the ``memory`` parameter.\n If you're using the EC2 launch type or the external launch type, this field is optional. Supported values are between ``128`` CPU units (``0.125`` vCPUs) and ``196608`` CPU units (``192`` vCPUs). The CPU units cannot be less than 1 vCPU when you use Windows containers on Fargate.\n + 256 (.25 vCPU) - Available ``memory`` values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB)\n + 512 (.5 vCPU) - Available ``memory`` values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB)\n + 1024 (1 vCPU) - Available ``memory`` values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB)\n + 2048 (2 vCPU) - Available ``memory`` values: 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB)\n + 4096 (4 vCPU) - Available ``memory`` values: 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB)\n + 8192 (8 vCPU) - Available ``memory`` values: 16 GB and 60 GB in 4 GB increments\n This option requires Linux platform ``1.4.0`` or later.\n + 16384 (16vCPU) - Available ``memory`` values: 32GB and 120 GB in 8 GB increments\n This option requires Linux platform ``1.4.0`` or later.", + "type": "string" + }, + "EnableFaultInjection": { + "description": "Enables fault injection and allows for fault injection requests to be accepted from the task's containers. The default value is ``false``.", + "type": "boolean" + }, + "EphemeralStorage": { + "$ref": "#/definitions/EphemeralStorage", + "description": "The ephemeral storage settings to use for tasks run with the task definition." + }, + "ExecutionRoleArn": { + "description": "The Amazon Resource Name (ARN) of the task execution role that grants the Amazon ECS container agent permission to make AWS API calls on your behalf. For informationabout the required IAM roles for Amazon ECS, see [IAM roles for Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-ecs-iam-role-overview.html) in the *Amazon Elastic Container Service Developer Guide*.", + "type": "string" + }, + "Family": { + "description": "The name of a family that this task definition is registered to. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed.\n A family groups multiple versions of a task definition. Amazon ECS gives the first task definition that you registered to a family a revision number of 1. Amazon ECS gives sequential revision numbers to each task definition that you add.\n To use revision numbers when you update a task definition, specify this property. If you don't specify a value, CFNlong generates a new task definition each time that you update it.", + "type": "string" + }, + "InferenceAccelerators": { + "description": "The Elastic Inference accelerators to use for the containers in the task.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InferenceAccelerator" + }, + "type": "array", + "uniqueItems": true + }, + "IpcMode": { + "description": "The IPC resource namespace to use for the containers in the task. The valid values are ``host``, ``task``, or ``none``. If ``host`` is specified, then all containers within the tasks that specified the ``host`` IPC mode on the same container instance share the same IPC resources with the host Amazon EC2 instance. If ``task`` is specified, all containers within the specified task share the same IPC resources. If ``none`` is specified, then IPC resources within the containers of a task are private and not shared with other containers in a task or on the container instance. If no value is specified, then the IPC resource namespace sharing depends on the Docker daemon setting on the container instance.\n If the ``host`` IPC mode is used, be aware that there is a heightened risk of undesired IPC namespace expose.\n If you are setting namespaced kernel parameters using ``systemControls`` for the containers in the task, the following will apply to your IPC resource namespace. For more information, see [System Controls](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html) in the *Amazon Elastic Container Service Developer Guide*.\n + For tasks that use the ``host`` IPC mode, IPC namespace related ``systemControls`` are not supported.\n + For tasks that use the ``task`` IPC mode, IPC namespace related ``systemControls`` will apply to all containers within a task.\n \n This parameter is not supported for Windows containers or tasks run on FARGATElong.", + "type": "string" + }, + "Memory": { + "description": "The amount (in MiB) of memory used by the task.\n If your tasks runs on Amazon EC2 instances, you must specify either a task-level memory value or a container-level memory value. This field is optional and any value can be used. If a task-level memory value is specified, the container-level memory value is optional. For more information regarding container-level memory and memory reservation, see [ContainerDefinition](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html).\n If your tasks runs on FARGATElong, this field is required. You must use one of the following values. The value you choose determines your range of valid values for the ``cpu`` parameter.\n + 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available ``cpu`` values: 256 (.25 vCPU)\n + 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available ``cpu`` values: 512 (.5 vCPU)\n + 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available ``cpu`` values: 1024 (1 vCPU)\n + Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available ``cpu`` values: 2048 (2 vCPU)\n + Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available ``cpu`` values: 4096 (4 vCPU)\n + Between 16 GB and 60 GB in 4 GB increments - Available ``cpu`` values: 8192 (8 vCPU)\n This option requires Linux platform ``1.4.0`` or later.\n + Between 32GB and 120 GB in 8 GB increments - Available ``cpu`` values: 16384 (16 vCPU)\n This option requires Linux platform ``1.4.0`` or later.", + "type": "string" + }, + "NetworkMode": { + "description": "The Docker networking mode to use for the containers in the task. The valid values are ``none``, ``bridge``, ``awsvpc``, and ``host``. If no network mode is specified, the default is ``bridge``.\n For Amazon ECS tasks on Fargate, the ``awsvpc`` network mode is required. For Amazon ECS tasks on Amazon EC2 Linux instances, any network mode can be used. For Amazon ECS tasks on Amazon EC2 Windows instances, ```` or ``awsvpc`` can be used. If the network mode is set to ``none``, you cannot specify port mappings in your container definitions, and the tasks containers do not have external connectivity. The ``host`` and ``awsvpc`` network modes offer the highest networking performance for containers because they use the EC2 network stack instead of the virtualized network stack provided by the ``bridge`` mode.\n With the ``host`` and ``awsvpc`` network modes, exposed container ports are mapped directly to the corresponding host port (for the ``host`` network mode) or the attached elastic network interface port (for the ``awsvpc`` network mode), so you cannot take advantage of dynamic host port mappings. \n When using the ``host`` network mode, you should not run containers using the root user (UID 0). It is considered best practice to use a non-root user.\n If the network mode is ``awsvpc``, the task is allocated an elastic network interface, and you must specify a [NetworkConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_NetworkConfiguration.html) value when you create a service or run a task with the task definition. For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) in the *Amazon Elastic Container Service Developer Guide*.\n If the network mode is ``host``, you cannot run multiple instantiations of the same task on a single container instance when port mappings are used.", + "type": "string" + }, + "PidMode": { + "description": "The process namespace to use for the containers in the task. The valid values are ``host`` or ``task``. On Fargate for Linux containers, the only valid value is ``task``. For example, monitoring sidecars might need ``pidMode`` to access information about other containers running in the same task.\n If ``host`` is specified, all containers within the tasks that specified the ``host`` PID mode on the same container instance share the same process namespace with the host Amazon EC2 instance.\n If ``task`` is specified, all containers within the specified task share the same process namespace.\n If no value is specified, the default is a private namespace for each container.\n If the ``host`` PID mode is used, there's a heightened risk of undesired process namespace exposure.\n This parameter is not supported for Windows containers.\n This parameter is only supported for tasks that are hosted on FARGATElong if the tasks are using platform version ``1.4.0`` or later (Linux). This isn't supported for Windows containers on Fargate.", + "type": "string" + }, + "PlacementConstraints": { + "description": "An array of placement constraint objects to use for tasks.\n This parameter isn't supported for tasks run on FARGATElong.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TaskDefinitionPlacementConstraint" + }, + "type": "array", + "uniqueItems": true + }, + "ProxyConfiguration": { + "$ref": "#/definitions/ProxyConfiguration", + "description": "The configuration details for the App Mesh proxy.\n Your Amazon ECS container instances require at least version 1.26.0 of the container agent and at least version 1.26.0-1 of the ``ecs-init`` package to use a proxy configuration. If your container instances are launched from the Amazon ECS optimized AMI version ``20190301`` or later, they contain the required versions of the container agent and ``ecs-init``. For more information, see [Amazon ECS-optimized Linux AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) in the *Amazon Elastic Container Service Developer Guide*." + }, + "RequiresCompatibilities": { + "description": "The task launch types the task definition was validated against. The valid values are ``EC2``, ``FARGATE``, and ``EXTERNAL``. For more information, see [Amazon ECS launch types](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) in the *Amazon Elastic Container Service Developer Guide*.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "RuntimePlatform": { + "$ref": "#/definitions/RuntimePlatform", + "description": "The operating system that your tasks definitions run on. A platform family is specified only for tasks using the Fargate launch type." + }, + "Tags": { + "description": "The metadata that you apply to the task definition to help you categorize and organize them. Each tag consists of a key and an optional value. You define both of them.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TaskDefinitionArn": { + "description": "", + "type": "string" + }, + "TaskRoleArn": { + "description": "The short name or full Amazon Resource Name (ARN) of the IAMlong role that grants containers in the task permission to call AWS APIs on your behalf. For more information, see [Amazon ECS Task Role](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) in the *Amazon Elastic Container Service Developer Guide*.\n IAM roles for tasks on Windows require that the ``-EnableTaskIAMRole`` option is set when you launch the Amazon ECS-optimized Windows AMI. Your containers must also run some configuration code to use the feature. For more information, see [Windows IAM roles for tasks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows_task_IAM_roles.html) in the *Amazon Elastic Container Service Developer Guide*.\n String validation is done on the ECS side. If an invalid string value is given for ``TaskRoleArn``, it may cause the Cloudformation job to hang.", + "type": "string" + }, + "Volumes": { + "description": "The list of data volume definitions for the task. For more information, see [Using data volumes in tasks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html) in the *Amazon Elastic Container Service Developer Guide*.\n The ``host`` and ``sourcePath`` parameters aren't supported for tasks run on FARGATElong.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Volume" + }, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": { + "/properties/TaskRoleArn": "TaskRoleArn $OR $split(TaskRoleArn, \"role/\")[-1]" + }, + "readOnlyProperties": [ + "/properties/TaskDefinitionArn" + ], + "sourceUrl": "https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ecs:TagResource", + "ecs:UntagResource", + "ecs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ECS::TaskDefinition" +} diff --git a/src/schema/aws-ecs-taskset.json b/src/schema/aws-ecs-taskset.json index 34209b75..154b816a 100644 --- a/src/schema/aws-ecs-taskset.json +++ b/src/schema/aws-ecs-taskset.json @@ -1,270 +1,270 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Cluster", - "/properties/ExternalId", - "/properties/LaunchType", - "/properties/LoadBalancers", - "/properties/NetworkConfiguration", - "/properties/PlatformVersion", - "/properties/Service", - "/properties/ServiceRegistries", - "/properties/TaskDefinition", - "/properties/CapacityProviderStrategy" - ], - "definitions": { - "AwsVpcConfiguration": { - "additionalProperties": false, - "description": "The VPC subnets and security groups associated with a task. All specified subnets and security groups must be from the same VPC.", - "properties": { - "AssignPublicIp": { - "description": "Whether the task's elastic network interface receives a public IP address. The default value is DISABLED.", - "enum": [ - "DISABLED", - "ENABLED" - ], - "type": "string" - }, - "SecurityGroups": { - "description": "The security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. There is a limit of 5 security groups that can be specified per AwsVpcConfiguration.", - "items": { - "type": "string" - }, - "maxItems": 5, - "type": "array" - }, - "Subnets": { - "description": "The subnets associated with the task or service. There is a limit of 16 subnets that can be specified per AwsVpcConfiguration.", - "items": { - "type": "string" - }, - "maxItems": 16, - "type": "array" - } - }, - "required": [ - "Subnets" - ], - "type": "object" - }, - "CapacityProviderStrategyItem": { - "additionalProperties": false, - "properties": { - "Base": { - "type": "integer" - }, - "CapacityProvider": { - "type": "string" - }, - "Weight": { - "type": "integer" - } - }, - "type": "object" - }, - "LoadBalancer": { - "additionalProperties": false, - "description": "A load balancer object representing the load balancer to use with the task set. The supported load balancer types are either an Application Load Balancer or a Network Load Balancer. ", - "properties": { - "ContainerName": { - "description": "The name of the container (as it appears in a container definition) to associate with the load balancer.", - "type": "string" - }, - "ContainerPort": { - "description": "The port on the container to associate with the load balancer. This port must correspond to a containerPort in the task definition the tasks in the service are using. For tasks that use the EC2 launch type, the container instance they are launched on must allow ingress traffic on the hostPort of the port mapping.", - "type": "integer" - }, - "TargetGroupArn": { - "description": "The full Amazon Resource Name (ARN) of the Elastic Load Balancing target group or groups associated with a service or task set. A target group ARN is only specified when using an Application Load Balancer or Network Load Balancer. If you are using a Classic Load Balancer this should be omitted. For services using the ECS deployment controller, you can specify one or multiple target groups. For more information, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/register-multiple-targetgroups.html in the Amazon Elastic Container Service Developer Guide. For services using the CODE_DEPLOY deployment controller, you are required to define two target groups for the load balancer. For more information, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-bluegreen.html in the Amazon Elastic Container Service Developer Guide. If your service's task definition uses the awsvpc network mode (which is required for the Fargate launch type), you must choose ip as the target type, not instance, when creating your target groups because tasks that use the awsvpc network mode are associated with an elastic network interface, not an Amazon EC2 instance.", - "type": "string" - } - }, - "type": "object" - }, - "NetworkConfiguration": { - "additionalProperties": false, - "description": "An object representing the network configuration for a task or service.", - "properties": { - "AwsVpcConfiguration": { - "$ref": "#/definitions/AwsVpcConfiguration" - } - }, - "type": "object" - }, - "Scale": { - "additionalProperties": false, - "properties": { - "Unit": { - "description": "The unit of measure for the scale value.", - "enum": [ - "PERCENT" - ], - "type": "string" - }, - "Value": { - "description": "The value, specified as a percent total of a service's desiredCount, to scale the task set. Accepted values are numbers between 0 and 100.", - "maximum": 100, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "ServiceRegistry": { - "additionalProperties": false, - "properties": { - "ContainerName": { - "description": "The container name value, already specified in the task definition, to be used for your service discovery service. If the task definition that your service task specifies uses the bridge or host network mode, you must specify a containerName and containerPort combination from the task definition. If the task definition that your service task specifies uses the awsvpc network mode and a type SRV DNS record is used, you must specify either a containerName and containerPort combination or a port value, but not both.", - "type": "string" - }, - "ContainerPort": { - "description": "The port value, already specified in the task definition, to be used for your service discovery service. If the task definition your service task specifies uses the bridge or host network mode, you must specify a containerName and containerPort combination from the task definition. If the task definition your service task specifies uses the awsvpc network mode and a type SRV DNS record is used, you must specify either a containerName and containerPort combination or a port value, but not both.", - "type": "integer" - }, - "Port": { - "description": "The port value used if your service discovery service specified an SRV record. This field may be used if both the awsvpc network mode and SRV records are used.", - "type": "integer" - }, - "RegistryArn": { - "description": "The Amazon Resource Name (ARN) of the service registry. The currently supported service registry is AWS Cloud Map. For more information, see https://docs.aws.amazon.com/cloud-map/latest/api/API_CreateService.html", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Create a task set in the specified cluster and service. This is used when a service uses the EXTERNAL deployment controller type. For more information, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.htmlin the Amazon Elastic Container Service Developer Guide.", - "handlers": { - "create": { - "permissions": [ - "ecs:CreateTaskSet", - "ecs:DescribeTaskSets", - "ecs:TagResource" - ] - }, - "delete": { - "permissions": [ - "ecs:DeleteTaskSet", - "ecs:DescribeTaskSets" - ] - }, - "read": { - "permissions": [ - "ecs:DescribeTaskSets" - ] - }, - "update": { - "permissions": [ - "ecs:DescribeTaskSets", - "ecs:TagResource", - "ecs:UntagResource", - "ecs:UpdateTaskSet" - ] - } - }, - "primaryIdentifier": [ - "/properties/Cluster", - "/properties/Service", - "/properties/Id" - ], - "properties": { - "CapacityProviderStrategy": { - "items": { - "$ref": "#/definitions/CapacityProviderStrategyItem" - }, - "type": "array" - }, - "Cluster": { - "description": "The short name or full Amazon Resource Name (ARN) of the cluster that hosts the service to create the task set in.", - "type": "string" - }, - "ExternalId": { - "description": "An optional non-unique tag that identifies this task set in external systems. If the task set is associated with a service discovery registry, the tasks in this task set will have the ECS_TASK_SET_EXTERNAL_ID AWS Cloud Map attribute set to the provided value. ", - "type": "string" - }, - "Id": { - "description": "The ID of the task set.", - "type": "string" - }, - "LaunchType": { - "description": "The launch type that new tasks in the task set will use. For more information, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html in the Amazon Elastic Container Service Developer Guide. ", - "enum": [ - "EC2", - "FARGATE" - ], - "type": "string" - }, - "LoadBalancers": { - "items": { - "$ref": "#/definitions/LoadBalancer" - }, - "type": "array" - }, - "NetworkConfiguration": { - "$ref": "#/definitions/NetworkConfiguration" - }, - "PlatformVersion": { - "description": "The platform version that the tasks in the task set should use. A platform version is specified only for tasks using the Fargate launch type. If one isn't specified, the LATEST platform version is used by default.", - "type": "string" - }, - "Scale": { - "$ref": "#/definitions/Scale", - "description": "A floating-point percentage of the desired number of tasks to place and keep running in the task set." - }, - "Service": { - "description": "The short name or full Amazon Resource Name (ARN) of the service to create the task set in.", - "type": "string" - }, - "ServiceRegistries": { - "description": "The details of the service discovery registries to assign to this task set. For more information, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html.", - "items": { - "$ref": "#/definitions/ServiceRegistry" - }, - "type": "array" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "TaskDefinition": { - "description": "The short name or full Amazon Resource Name (ARN) of the task definition for the tasks in the task set to use.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Cluster", - "Service", - "TaskDefinition" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecs.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ecs:TagResource", - "ecs:UntagResource", - "ecs:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ECS::TaskSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Cluster", + "/properties/ExternalId", + "/properties/LaunchType", + "/properties/LoadBalancers", + "/properties/NetworkConfiguration", + "/properties/PlatformVersion", + "/properties/Service", + "/properties/ServiceRegistries", + "/properties/TaskDefinition", + "/properties/CapacityProviderStrategy" + ], + "definitions": { + "AwsVpcConfiguration": { + "additionalProperties": false, + "description": "The VPC subnets and security groups associated with a task. All specified subnets and security groups must be from the same VPC.", + "properties": { + "AssignPublicIp": { + "description": "Whether the task's elastic network interface receives a public IP address. The default value is DISABLED.", + "enum": [ + "DISABLED", + "ENABLED" + ], + "type": "string" + }, + "SecurityGroups": { + "description": "The security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. There is a limit of 5 security groups that can be specified per AwsVpcConfiguration.", + "items": { + "type": "string" + }, + "maxItems": 5, + "type": "array" + }, + "Subnets": { + "description": "The subnets associated with the task or service. There is a limit of 16 subnets that can be specified per AwsVpcConfiguration.", + "items": { + "type": "string" + }, + "maxItems": 16, + "type": "array" + } + }, + "required": [ + "Subnets" + ], + "type": "object" + }, + "CapacityProviderStrategyItem": { + "additionalProperties": false, + "properties": { + "Base": { + "type": "integer" + }, + "CapacityProvider": { + "type": "string" + }, + "Weight": { + "type": "integer" + } + }, + "type": "object" + }, + "LoadBalancer": { + "additionalProperties": false, + "description": "A load balancer object representing the load balancer to use with the task set. The supported load balancer types are either an Application Load Balancer or a Network Load Balancer. ", + "properties": { + "ContainerName": { + "description": "The name of the container (as it appears in a container definition) to associate with the load balancer.", + "type": "string" + }, + "ContainerPort": { + "description": "The port on the container to associate with the load balancer. This port must correspond to a containerPort in the task definition the tasks in the service are using. For tasks that use the EC2 launch type, the container instance they are launched on must allow ingress traffic on the hostPort of the port mapping.", + "type": "integer" + }, + "TargetGroupArn": { + "description": "The full Amazon Resource Name (ARN) of the Elastic Load Balancing target group or groups associated with a service or task set. A target group ARN is only specified when using an Application Load Balancer or Network Load Balancer. If you are using a Classic Load Balancer this should be omitted. For services using the ECS deployment controller, you can specify one or multiple target groups. For more information, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/register-multiple-targetgroups.html in the Amazon Elastic Container Service Developer Guide. For services using the CODE_DEPLOY deployment controller, you are required to define two target groups for the load balancer. For more information, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-bluegreen.html in the Amazon Elastic Container Service Developer Guide. If your service's task definition uses the awsvpc network mode (which is required for the Fargate launch type), you must choose ip as the target type, not instance, when creating your target groups because tasks that use the awsvpc network mode are associated with an elastic network interface, not an Amazon EC2 instance.", + "type": "string" + } + }, + "type": "object" + }, + "NetworkConfiguration": { + "additionalProperties": false, + "description": "An object representing the network configuration for a task or service.", + "properties": { + "AwsVpcConfiguration": { + "$ref": "#/definitions/AwsVpcConfiguration" + } + }, + "type": "object" + }, + "Scale": { + "additionalProperties": false, + "properties": { + "Unit": { + "description": "The unit of measure for the scale value.", + "enum": [ + "PERCENT" + ], + "type": "string" + }, + "Value": { + "description": "The value, specified as a percent total of a service's desiredCount, to scale the task set. Accepted values are numbers between 0 and 100.", + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "ServiceRegistry": { + "additionalProperties": false, + "properties": { + "ContainerName": { + "description": "The container name value, already specified in the task definition, to be used for your service discovery service. If the task definition that your service task specifies uses the bridge or host network mode, you must specify a containerName and containerPort combination from the task definition. If the task definition that your service task specifies uses the awsvpc network mode and a type SRV DNS record is used, you must specify either a containerName and containerPort combination or a port value, but not both.", + "type": "string" + }, + "ContainerPort": { + "description": "The port value, already specified in the task definition, to be used for your service discovery service. If the task definition your service task specifies uses the bridge or host network mode, you must specify a containerName and containerPort combination from the task definition. If the task definition your service task specifies uses the awsvpc network mode and a type SRV DNS record is used, you must specify either a containerName and containerPort combination or a port value, but not both.", + "type": "integer" + }, + "Port": { + "description": "The port value used if your service discovery service specified an SRV record. This field may be used if both the awsvpc network mode and SRV records are used.", + "type": "integer" + }, + "RegistryArn": { + "description": "The Amazon Resource Name (ARN) of the service registry. The currently supported service registry is AWS Cloud Map. For more information, see https://docs.aws.amazon.com/cloud-map/latest/api/API_CreateService.html", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Create a task set in the specified cluster and service. This is used when a service uses the EXTERNAL deployment controller type. For more information, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.htmlin the Amazon Elastic Container Service Developer Guide.", + "handlers": { + "create": { + "permissions": [ + "ecs:CreateTaskSet", + "ecs:DescribeTaskSets", + "ecs:TagResource" + ] + }, + "delete": { + "permissions": [ + "ecs:DeleteTaskSet", + "ecs:DescribeTaskSets" + ] + }, + "read": { + "permissions": [ + "ecs:DescribeTaskSets" + ] + }, + "update": { + "permissions": [ + "ecs:DescribeTaskSets", + "ecs:TagResource", + "ecs:UntagResource", + "ecs:UpdateTaskSet" + ] + } + }, + "primaryIdentifier": [ + "/properties/Cluster", + "/properties/Service", + "/properties/Id" + ], + "properties": { + "CapacityProviderStrategy": { + "items": { + "$ref": "#/definitions/CapacityProviderStrategyItem" + }, + "type": "array" + }, + "Cluster": { + "description": "The short name or full Amazon Resource Name (ARN) of the cluster that hosts the service to create the task set in.", + "type": "string" + }, + "ExternalId": { + "description": "An optional non-unique tag that identifies this task set in external systems. If the task set is associated with a service discovery registry, the tasks in this task set will have the ECS_TASK_SET_EXTERNAL_ID AWS Cloud Map attribute set to the provided value. ", + "type": "string" + }, + "Id": { + "description": "The ID of the task set.", + "type": "string" + }, + "LaunchType": { + "description": "The launch type that new tasks in the task set will use. For more information, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html in the Amazon Elastic Container Service Developer Guide. ", + "enum": [ + "EC2", + "FARGATE" + ], + "type": "string" + }, + "LoadBalancers": { + "items": { + "$ref": "#/definitions/LoadBalancer" + }, + "type": "array" + }, + "NetworkConfiguration": { + "$ref": "#/definitions/NetworkConfiguration" + }, + "PlatformVersion": { + "description": "The platform version that the tasks in the task set should use. A platform version is specified only for tasks using the Fargate launch type. If one isn't specified, the LATEST platform version is used by default.", + "type": "string" + }, + "Scale": { + "$ref": "#/definitions/Scale", + "description": "A floating-point percentage of the desired number of tasks to place and keep running in the task set." + }, + "Service": { + "description": "The short name or full Amazon Resource Name (ARN) of the service to create the task set in.", + "type": "string" + }, + "ServiceRegistries": { + "description": "The details of the service discovery registries to assign to this task set. For more information, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html.", + "items": { + "$ref": "#/definitions/ServiceRegistry" + }, + "type": "array" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TaskDefinition": { + "description": "The short name or full Amazon Resource Name (ARN) of the task definition for the tasks in the task set to use.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Cluster", + "Service", + "TaskDefinition" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecs.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ecs:TagResource", + "ecs:UntagResource", + "ecs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ECS::TaskSet" +} diff --git a/src/schema/aws-efs-accesspoint.json b/src/schema/aws-efs-accesspoint.json index 6384b537..0ee0cebd 100644 --- a/src/schema/aws-efs-accesspoint.json +++ b/src/schema/aws-efs-accesspoint.json @@ -1,200 +1,200 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FileSystemId", - "/properties/ClientToken", - "/properties/CreationInfo", - "/properties/CreationInfo/OwnerUid", - "/properties/CreationInfo/OwnerGid", - "/properties/CreationInfo/Permissions", - "/properties/PosixUser", - "/properties/PosixUser/Uid", - "/properties/PosixUser/Gid", - "/properties/PosixUser/SecondaryGids", - "/properties/RootDirectory", - "/properties/RootDirectory/Path", - "/properties/RootDirectory/CreationInfo" - ], - "definitions": { - "AccessPointTag": { - "additionalProperties": false, - "description": "A tag is a key-value pair attached to a file system. Allowed characters in the ``Key`` and ``Value`` properties are letters, white space, and numbers that can be represented in UTF-8, and the following characters:``+ - = . _ : /``", - "properties": { - "Key": { - "description": "The tag key (String). The key can't start with ``aws:``.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value of the tag key.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "CreationInfo": { - "additionalProperties": false, - "description": "Required if the ``RootDirectory`` > ``Path`` specified does not exist. Specifies the POSIX IDs and permissions to apply to the access point's ``RootDirectory`` > ``Path``. If the access point root directory does not exist, EFS creates it with these settings when a client connects to the access point. When specifying ``CreationInfo``, you must include values for all properties. \n Amazon EFS creates a root directory only if you have provided the CreationInfo: OwnUid, OwnGID, and permissions for the directory. If you do not provide this information, Amazon EFS does not create the root directory. If the root directory does not exist, attempts to mount using the access point will fail.\n If you do not provide ``CreationInfo`` and the specified ``RootDirectory`` does not exist, attempts to mount the file system using the access point will fail.", - "properties": { - "OwnerGid": { - "description": "Specifies the POSIX group ID to apply to the ``RootDirectory``. Accepts values from 0 to 2^32 (4294967295).", - "type": "string" - }, - "OwnerUid": { - "description": "Specifies the POSIX user ID to apply to the ``RootDirectory``. Accepts values from 0 to 2^32 (4294967295).", - "type": "string" - }, - "Permissions": { - "description": "Specifies the POSIX permissions to apply to the ``RootDirectory``, in the format of an octal number representing the file's mode bits.", - "pattern": "^[0-7]{3,4}$", - "type": "string" - } - }, - "required": [ - "OwnerUid", - "OwnerGid", - "Permissions" - ], - "type": "object" - }, - "PosixUser": { - "additionalProperties": false, - "description": "The full POSIX identity, including the user ID, group ID, and any secondary group IDs, on the access point that is used for all file system operations performed by NFS clients using the access point.", - "properties": { - "Gid": { - "description": "The POSIX group ID used for all file system operations using this access point.", - "type": "string" - }, - "SecondaryGids": { - "description": "Secondary POSIX group IDs used for all file system operations using this access point.", - "items": { - "type": "string" - }, - "type": "array" - }, - "Uid": { - "description": "The POSIX user ID used for all file system operations using this access point.", - "type": "string" - } - }, - "required": [ - "Uid", - "Gid" - ], - "type": "object" - }, - "RootDirectory": { - "additionalProperties": false, - "description": "Specifies the directory on the Amazon EFS file system that the access point provides access to. The access point exposes the specified file system path as the root directory of your file system to applications using the access point. NFS clients using the access point can only access data in the access point's ``RootDirectory`` and its subdirectories.", - "properties": { - "CreationInfo": { - "$ref": "#/definitions/CreationInfo", - "description": "(Optional) Specifies the POSIX IDs and permissions to apply to the access point's ``RootDirectory``. If the ``RootDirectory`` > ``Path`` specified does not exist, EFS creates the root directory using the ``CreationInfo`` settings when a client connects to an access point. When specifying the ``CreationInfo``, you must provide values for all properties. \n If you do not provide ``CreationInfo`` and the specified ``RootDirectory`` > ``Path`` does not exist, attempts to mount the file system using the access point will fail." - }, - "Path": { - "description": "Specifies the path on the EFS file system to expose as the root directory to NFS clients using the access point to access the EFS file system. A path can have up to four subdirectories. If the specified path does not exist, you are required to provide the ``CreationInfo``.", - "maxLength": 100, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The ``AWS::EFS::AccessPoint`` resource creates an EFS access point. An access point is an application-specific view into an EFS file system that applies an operating system user and group, and a file system path, to any file system request made through the access point. The operating system user and group override any identity information provided by the NFS client. The file system path is exposed as the access point's root directory. Applications using the access point can only access data in its own directory and below. To learn more, see [Mounting a file system using EFS access points](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html).\n This operation requires permissions for the ``elasticfilesystem:CreateAccessPoint`` action.", - "handlers": { - "create": { - "permissions": [ - "elasticfilesystem:CreateAccessPoint", - "elasticfilesystem:TagResource", - "elasticfilesystem:DescribeAccessPoints" - ] - }, - "delete": { - "permissions": [ - "elasticfilesystem:DeleteAccessPoint", - "elasticfilesystem:DescribeAccessPoints" - ] - }, - "list": { - "permissions": [ - "elasticfilesystem:DescribeAccessPoints" - ] - }, - "read": { - "permissions": [ - "elasticfilesystem:DescribeAccessPoints" - ] - }, - "update": { - "permissions": [ - "elasticfilesystem:DescribeAccessPoints", - "elasticfilesystem:ListTagsForResource", - "elasticfilesystem:TagResource", - "elasticfilesystem:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AccessPointId" - ], - "properties": { - "AccessPointId": { - "description": "", - "type": "string" - }, - "AccessPointTags": { - "description": "An array of key-value pairs to apply to this resource.\n For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AccessPointTag" - }, - "type": "array", - "uniqueItems": true - }, - "Arn": { - "description": "", - "type": "string" - }, - "ClientToken": { - "description": "The opaque string specified in the request to ensure idempotent creation.", - "type": "string" - }, - "FileSystemId": { - "description": "The ID of the EFS file system that the access point applies to. Accepts only the ID format for input when specifying a file system, for example ``fs-0123456789abcedf2``.", - "type": "string" - }, - "PosixUser": { - "$ref": "#/definitions/PosixUser", - "description": "The full POSIX identity, including the user ID, group ID, and secondary group IDs on the access point that is used for all file operations by NFS clients using the access point." - }, - "RootDirectory": { - "$ref": "#/definitions/RootDirectory", - "description": "The directory on the EFS file system that the access point exposes as the root directory to NFS clients using the access point." - } - }, - "readOnlyProperties": [ - "/properties/AccessPointId", - "/properties/Arn" - ], - "required": [ - "FileSystemId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "elasticfilesystem:TagResource", - "elasticfilesystem:ListTagsForResource", - "elasticfilesystem:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/AccessPointTags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EFS::AccessPoint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FileSystemId", + "/properties/ClientToken", + "/properties/CreationInfo", + "/properties/CreationInfo/OwnerUid", + "/properties/CreationInfo/OwnerGid", + "/properties/CreationInfo/Permissions", + "/properties/PosixUser", + "/properties/PosixUser/Uid", + "/properties/PosixUser/Gid", + "/properties/PosixUser/SecondaryGids", + "/properties/RootDirectory", + "/properties/RootDirectory/Path", + "/properties/RootDirectory/CreationInfo" + ], + "definitions": { + "AccessPointTag": { + "additionalProperties": false, + "description": "A tag is a key-value pair attached to a file system. Allowed characters in the ``Key`` and ``Value`` properties are letters, white space, and numbers that can be represented in UTF-8, and the following characters:``+ - = . _ : /``", + "properties": { + "Key": { + "description": "The tag key (String). The key can't start with ``aws:``.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value of the tag key.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "CreationInfo": { + "additionalProperties": false, + "description": "Required if the ``RootDirectory`` > ``Path`` specified does not exist. Specifies the POSIX IDs and permissions to apply to the access point's ``RootDirectory`` > ``Path``. If the access point root directory does not exist, EFS creates it with these settings when a client connects to the access point. When specifying ``CreationInfo``, you must include values for all properties. \n Amazon EFS creates a root directory only if you have provided the CreationInfo: OwnUid, OwnGID, and permissions for the directory. If you do not provide this information, Amazon EFS does not create the root directory. If the root directory does not exist, attempts to mount using the access point will fail.\n If you do not provide ``CreationInfo`` and the specified ``RootDirectory`` does not exist, attempts to mount the file system using the access point will fail.", + "properties": { + "OwnerGid": { + "description": "Specifies the POSIX group ID to apply to the ``RootDirectory``. Accepts values from 0 to 2^32 (4294967295).", + "type": "string" + }, + "OwnerUid": { + "description": "Specifies the POSIX user ID to apply to the ``RootDirectory``. Accepts values from 0 to 2^32 (4294967295).", + "type": "string" + }, + "Permissions": { + "description": "Specifies the POSIX permissions to apply to the ``RootDirectory``, in the format of an octal number representing the file's mode bits.", + "pattern": "^[0-7]{3,4}$", + "type": "string" + } + }, + "required": [ + "OwnerUid", + "OwnerGid", + "Permissions" + ], + "type": "object" + }, + "PosixUser": { + "additionalProperties": false, + "description": "The full POSIX identity, including the user ID, group ID, and any secondary group IDs, on the access point that is used for all file system operations performed by NFS clients using the access point.", + "properties": { + "Gid": { + "description": "The POSIX group ID used for all file system operations using this access point.", + "type": "string" + }, + "SecondaryGids": { + "description": "Secondary POSIX group IDs used for all file system operations using this access point.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Uid": { + "description": "The POSIX user ID used for all file system operations using this access point.", + "type": "string" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "RootDirectory": { + "additionalProperties": false, + "description": "Specifies the directory on the Amazon EFS file system that the access point provides access to. The access point exposes the specified file system path as the root directory of your file system to applications using the access point. NFS clients using the access point can only access data in the access point's ``RootDirectory`` and its subdirectories.", + "properties": { + "CreationInfo": { + "$ref": "#/definitions/CreationInfo", + "description": "(Optional) Specifies the POSIX IDs and permissions to apply to the access point's ``RootDirectory``. If the ``RootDirectory`` > ``Path`` specified does not exist, EFS creates the root directory using the ``CreationInfo`` settings when a client connects to an access point. When specifying the ``CreationInfo``, you must provide values for all properties. \n If you do not provide ``CreationInfo`` and the specified ``RootDirectory`` > ``Path`` does not exist, attempts to mount the file system using the access point will fail." + }, + "Path": { + "description": "Specifies the path on the EFS file system to expose as the root directory to NFS clients using the access point to access the EFS file system. A path can have up to four subdirectories. If the specified path does not exist, you are required to provide the ``CreationInfo``.", + "maxLength": 100, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The ``AWS::EFS::AccessPoint`` resource creates an EFS access point. An access point is an application-specific view into an EFS file system that applies an operating system user and group, and a file system path, to any file system request made through the access point. The operating system user and group override any identity information provided by the NFS client. The file system path is exposed as the access point's root directory. Applications using the access point can only access data in its own directory and below. To learn more, see [Mounting a file system using EFS access points](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html).\n This operation requires permissions for the ``elasticfilesystem:CreateAccessPoint`` action.", + "handlers": { + "create": { + "permissions": [ + "elasticfilesystem:CreateAccessPoint", + "elasticfilesystem:TagResource", + "elasticfilesystem:DescribeAccessPoints" + ] + }, + "delete": { + "permissions": [ + "elasticfilesystem:DeleteAccessPoint", + "elasticfilesystem:DescribeAccessPoints" + ] + }, + "list": { + "permissions": [ + "elasticfilesystem:DescribeAccessPoints" + ] + }, + "read": { + "permissions": [ + "elasticfilesystem:DescribeAccessPoints" + ] + }, + "update": { + "permissions": [ + "elasticfilesystem:DescribeAccessPoints", + "elasticfilesystem:ListTagsForResource", + "elasticfilesystem:TagResource", + "elasticfilesystem:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccessPointId" + ], + "properties": { + "AccessPointId": { + "description": "", + "type": "string" + }, + "AccessPointTags": { + "description": "An array of key-value pairs to apply to this resource.\n For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AccessPointTag" + }, + "type": "array", + "uniqueItems": true + }, + "Arn": { + "description": "", + "type": "string" + }, + "ClientToken": { + "description": "The opaque string specified in the request to ensure idempotent creation.", + "type": "string" + }, + "FileSystemId": { + "description": "The ID of the EFS file system that the access point applies to. Accepts only the ID format for input when specifying a file system, for example ``fs-0123456789abcedf2``.", + "type": "string" + }, + "PosixUser": { + "$ref": "#/definitions/PosixUser", + "description": "The full POSIX identity, including the user ID, group ID, and secondary group IDs on the access point that is used for all file operations by NFS clients using the access point." + }, + "RootDirectory": { + "$ref": "#/definitions/RootDirectory", + "description": "The directory on the EFS file system that the access point exposes as the root directory to NFS clients using the access point." + } + }, + "readOnlyProperties": [ + "/properties/AccessPointId", + "/properties/Arn" + ], + "required": [ + "FileSystemId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "elasticfilesystem:TagResource", + "elasticfilesystem:ListTagsForResource", + "elasticfilesystem:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/AccessPointTags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EFS::AccessPoint" +} diff --git a/src/schema/aws-efs-filesystem.json b/src/schema/aws-efs-filesystem.json index 08f0275a..bd71e735 100644 --- a/src/schema/aws-efs-filesystem.json +++ b/src/schema/aws-efs-filesystem.json @@ -1,295 +1,315 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AvailabilityZoneName", - "/properties/Encrypted", - "/properties/KmsKeyId", - "/properties/PerformanceMode" - ], - "definitions": { - "Arn": { - "type": "string" - }, - "BackupPolicy": { - "additionalProperties": false, - "description": "The backup policy turns automatic backups for the file system on or off.", - "properties": { - "Status": { - "description": "Set the backup policy status for the file system.\n + *ENABLED* - Turns automatic backups on for the file system. \n + *DISABLED* - Turns automatic backups off for the file system.", - "enum": [ - "DISABLED", - "ENABLED" - ], - "type": "string" - } - }, - "required": [ - "Status" - ], - "type": "object" - }, - "ElasticFileSystemTag": { - "additionalProperties": false, - "description": "A tag is a key-value pair attached to a file system. Allowed characters in the ``Key`` and ``Value`` properties are letters, white space, and numbers that can be represented in UTF-8, and the following characters:``+ - = . _ : /``", - "properties": { - "Key": { - "description": "The tag key (String). The key can't start with ``aws:``.", - "type": "string" - }, - "Value": { - "description": "The value of the tag key.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "FileSystemProtection": { - "additionalProperties": false, - "description": "Describes the protection on the file system.", - "properties": { - "ReplicationOverwriteProtection": { - "description": "The status of the file system's replication overwrite protection.\n + ``ENABLED`` \u2013 The file system cannot be used as the destination file system in a replication configuration. The file system is writeable. Replication overwrite protection is ``ENABLED`` by default. \n + ``DISABLED`` \u2013 The file system can be used as the destination file system in a replication configuration. The file system is read-only and can only be modified by EFS replication.\n + ``REPLICATING`` \u2013 The file system is being used as the destination file system in a replication configuration. The file system is read-only and is only modified only by EFS replication.\n \n If the replication configuration is deleted, the file system's replication overwrite protection is re-enabled, the file system becomes writeable.", - "enum": [ - "DISABLED", - "ENABLED" - ], - "type": "string" - } - }, - "type": "object" - }, - "LifecyclePolicy": { - "additionalProperties": false, - "description": "Describes a policy used by Lifecycle management that specifies when to transition files into and out of the EFS storage classes. For more information, see [Managing file system storage](https://docs.aws.amazon.com/efs/latest/ug/lifecycle-management-efs.html).\n + Each ``LifecyclePolicy`` object can have only a single transition. This means that in a request body, ``LifecyclePolicies`` must be structured as an array of ``LifecyclePolicy`` objects, one object for each transition, ``TransitionToIA``, ``TransitionToArchive``, ``TransitionToPrimaryStorageClass``.\n + See the AWS::EFS::FileSystem examples for the correct ``LifecyclePolicy`` structure. Do not use the syntax shown on this page.", - "properties": { - "TransitionToArchive": { - "description": "The number of days after files were last accessed in primary storage (the Standard storage class) at which to move them to Archive storage. Metadata operations such as listing the contents of a directory don't count as file access events.", - "type": "string" - }, - "TransitionToIA": { - "description": "The number of days after files were last accessed in primary storage (the Standard storage class) at which to move them to Infrequent Access (IA) storage. Metadata operations such as listing the contents of a directory don't count as file access events.", - "type": "string" - }, - "TransitionToPrimaryStorageClass": { - "description": "Whether to move files back to primary (Standard) storage after they are accessed in IA or Archive storage. Metadata operations such as listing the contents of a directory don't count as file access events.", - "type": "string" - } - }, - "type": "object" - }, - "ReplicationConfiguration": { - "additionalProperties": false, - "description": "Describes the replication configuration for a specific file system.", - "properties": { - "Destinations": { - "description": "An array of destination objects. Only one destination object is supported.", - "items": { - "$ref": "#/definitions/ReplicationDestination" - }, - "maxItems": 1, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "ReplicationDestination": { - "additionalProperties": false, - "description": "Describes the destination file system in the replication configuration.", - "properties": { - "AvailabilityZoneName": { - "description": "For One Zone file systems, the replication configuration must specify the Availability Zone in which the destination file system is located. \n Use the format ``us-east-1a`` to specify the Availability Zone. For more information about One Zone file systems, see [EFS file system types](https://docs.aws.amazon.com/efs/latest/ug/storage-classes.html) in the *Amazon EFS User Guide*.\n One Zone file system type is not available in all Availability Zones in AWS-Regions where Amazon EFS is available.", - "type": "string" - }, - "FileSystemId": { - "description": "The ID of the destination Amazon EFS file system.", - "type": "string" - }, - "KmsKeyId": { - "description": "The ID of an kms-key-long used to protect the encrypted file system.", - "type": "string" - }, - "Region": { - "description": "The AWS-Region in which the destination file system is located.\n For One Zone file systems, the replication configuration must specify the AWS-Region in which the destination file system is located.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The ``AWS::EFS::FileSystem`` resource creates a new, empty file system in EFSlong (EFS). You must create a mount target ([AWS::EFS::MountTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html)) to mount your EFS file system on an EC2 or other AWS cloud compute resource.", - "handlers": { - "create": { - "permissions": [ - "elasticfilesystem:CreateFileSystem", - "elasticfilesystem:DescribeReplicationConfigurations", - "elasticfilesystem:TagResource", - "elasticfilesystem:CreateReplicationConfiguration", - "elasticfilesystem:DescribeFileSystems", - "elasticfilesystem:PutBackupPolicy", - "elasticfilesystem:PutFileSystemPolicy", - "elasticfilesystem:PutLifecycleConfiguration", - "elasticfilesystem:UpdateFileSystemProtection", - "kms:DescribeKey", - "kms:GenerateDataKeyWithoutPlaintext", - "kms:CreateGrant" - ] - }, - "delete": { - "permissions": [ - "elasticfilesystem:DescribeFileSystems", - "elasticfilesystem:DeleteFileSystem", - "elasticfilesystem:DeleteReplicationConfiguration", - "elasticfilesystem:DescribeReplicationConfigurations" - ] - }, - "list": { - "permissions": [ - "elasticfilesystem:DescribeBackupPolicy", - "elasticfilesystem:DescribeFileSystemPolicy", - "elasticfilesystem:DescribeFileSystems", - "elasticfilesystem:DescribeLifecycleConfiguration", - "elasticfilesystem:DescribeReplicationConfigurations" - ] - }, - "read": { - "permissions": [ - "elasticfilesystem:DescribeBackupPolicy", - "elasticfilesystem:DescribeFileSystemPolicy", - "elasticfilesystem:DescribeFileSystems", - "elasticfilesystem:DescribeLifecycleConfiguration", - "elasticfilesystem:DescribeReplicationConfigurations" - ] - }, - "update": { - "permissions": [ - "elasticfilesystem:CreateReplicationConfiguration", - "elasticfilesystem:DeleteFileSystemPolicy", - "elasticfilesystem:DescribeBackupPolicy", - "elasticfilesystem:DescribeFileSystemPolicy", - "elasticfilesystem:DescribeFileSystems", - "elasticfilesystem:DescribeLifecycleConfiguration", - "elasticfilesystem:DescribeReplicationConfigurations", - "elasticfilesystem:DeleteTags", - "elasticfilesystem:DeleteReplicationConfiguration", - "elasticfilesystem:ListTagsForResource", - "elasticfilesystem:PutBackupPolicy", - "elasticfilesystem:PutFileSystemPolicy", - "elasticfilesystem:PutLifecycleConfiguration", - "elasticfilesystem:TagResource", - "elasticfilesystem:UntagResource", - "elasticfilesystem:UpdateFileSystem", - "elasticfilesystem:UpdateFileSystemProtection", - "kms:DescribeKey", - "kms:GenerateDataKeyWithoutPlaintext", - "kms:CreateGrant" - ] - } - }, - "primaryIdentifier": [ - "/properties/FileSystemId" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn", - "description": "" - }, - "AvailabilityZoneName": { - "description": "For One Zone file systems, specify the AWS Availability Zone in which to create the file system. Use the format ``us-east-1a`` to specify the Availability Zone. For more information about One Zone file systems, see [EFS file system types](https://docs.aws.amazon.com/efs/latest/ug/availability-durability.html#file-system-type) in the *Amazon EFS User Guide*.\n One Zone file systems are not available in all Availability Zones in AWS-Regions where Amazon EFS is available.", - "type": "string" - }, - "BackupPolicy": { - "$ref": "#/definitions/BackupPolicy", - "description": "Use the ``BackupPolicy`` to turn automatic backups on or off for the file system." - }, - "BypassPolicyLockoutSafetyCheck": { - "description": "(Optional) A boolean that specifies whether or not to bypass the ``FileSystemPolicy`` lockout safety check. The lockout safety check determines whether the policy in the request will lock out, or prevent, the IAM principal that is making the request from making future ``PutFileSystemPolicy`` requests on this file system. Set ``BypassPolicyLockoutSafetyCheck`` to ``True`` only when you intend to prevent the IAM principal that is making the request from making subsequent ``PutFileSystemPolicy`` requests on this file system. The default value is ``False``.", - "type": "boolean" - }, - "Encrypted": { - "description": "A Boolean value that, if true, creates an encrypted file system. When creating an encrypted file system, you have the option of specifying a KmsKeyId for an existing kms-key-long. If you don't specify a kms-key, then the default kms-key for EFS, ``/aws/elasticfilesystem``, is used to protect the encrypted file system.", - "type": "boolean" - }, - "FileSystemId": { - "description": "", - "type": "string" - }, - "FileSystemPolicy": { - "description": "The ``FileSystemPolicy`` for the EFS file system. A file system policy is an IAM resource policy used to control NFS access to an EFS file system. For more information, see [Using to control NFS access to Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/iam-access-control-nfs-efs.html) in the *Amazon EFS User Guide*.", - "type": "object" - }, - "FileSystemProtection": { - "$ref": "#/definitions/FileSystemProtection", - "description": "Describes the protection on the file system." - }, - "FileSystemTags": { - "description": "Use to create one or more tags associated with the file system. Each tag is a user-defined key-value pair. Name your file system on creation by including a ``\"Key\":\"Name\",\"Value\":\"{value}\"`` key-value pair. Each key must be unique. For more information, see [Tagging resources](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) in the *General Reference Guide*.", - "items": { - "$ref": "#/definitions/ElasticFileSystemTag" - }, - "type": "array", - "uniqueItems": true - }, - "KmsKeyId": { - "description": "The ID of the kms-key-long to be used to protect the encrypted file system. This parameter is only required if you want to use a nondefault kms-key. If this parameter is not specified, the default kms-key for EFS is used. This ID can be in one of the following formats:\n + Key ID - A unique identifier of the key, for example ``1234abcd-12ab-34cd-56ef-1234567890ab``.\n + ARN - An Amazon Resource Name (ARN) for the key, for example ``arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab``.\n + Key alias - A previously created display name for a key, for example ``alias/projectKey1``.\n + Key alias ARN - An ARN for a key alias, for example ``arn:aws:kms:us-west-2:444455556666:alias/projectKey1``.\n \n If ``KmsKeyId`` is specified, the ``Encrypted`` parameter must be set to true.", - "type": "string" - }, - "LifecyclePolicies": { - "description": "An array of ``LifecyclePolicy`` objects that define the file system's ``LifecycleConfiguration`` object. A ``LifecycleConfiguration`` object informs Lifecycle management of the following:\n + When to move files in the file system from primary storage to IA storage.\n + When to move files in the file system from primary storage or IA storage to Archive storage.\n + When to move files that are in IA or Archive storage to primary storage.\n \n EFS requires that each ``LifecyclePolicy`` object have only a single transition. This means that in a request body, ``LifecyclePolicies`` needs to be structured as an array of ``LifecyclePolicy`` objects, one object for each transition, ``TransitionToIA``, ``TransitionToArchive`` ``TransitionToPrimaryStorageClass``. See the example requests in the following section for more information.", - "items": { - "$ref": "#/definitions/LifecyclePolicy" - }, - "type": "array", - "uniqueItems": true - }, - "PerformanceMode": { - "description": "The performance mode of the file system. We recommend ``generalPurpose`` performance mode for all file systems. File systems using the ``maxIO`` performance mode can scale to higher levels of aggregate throughput and operations per second with a tradeoff of slightly higher latencies for most file operations. The performance mode can't be changed after the file system has been created. The ``maxIO`` mode is not supported on One Zone file systems.\n Due to the higher per-operation latencies with Max I/O, we recommend using General Purpose performance mode for all file systems.\n Default is ``generalPurpose``.", - "type": "string" - }, - "ProvisionedThroughputInMibps": { - "description": "The throughput, measured in mebibytes per second (MiBps), that you want to provision for a file system that you're creating. Required if ``ThroughputMode`` is set to ``provisioned``. Valid values are 1-3414 MiBps, with the upper limit depending on Region. To increase this limit, contact SUP. For more information, see [Amazon EFS quotas that you can increase](https://docs.aws.amazon.com/efs/latest/ug/limits.html#soft-limits) in the *Amazon EFS User Guide*.", - "type": "number" - }, - "ReplicationConfiguration": { - "$ref": "#/definitions/ReplicationConfiguration", - "description": "Describes the replication configuration for a specific file system." - }, - "ThroughputMode": { - "description": "Specifies the throughput mode for the file system. The mode can be ``bursting``, ``provisioned``, or ``elastic``. If you set ``ThroughputMode`` to ``provisioned``, you must also set a value for ``ProvisionedThroughputInMibps``. After you create the file system, you can decrease your file system's Provisioned throughput or change between the throughput modes, with certain time restrictions. For more information, see [Specifying throughput with provisioned mode](https://docs.aws.amazon.com/efs/latest/ug/performance.html#provisioned-throughput) in the *Amazon EFS User Guide*. \n Default is ``bursting``.", - "type": "string" - } - }, - "propertyTransform": { - "/properties/FileSystemProtection/ReplicationOverwriteProtection": "$uppercase(FileSystemProtection.ReplicationOverwriteProtection)='DISABLED' ? 'REPLICATING' : $uppercase(FileSystemProtection.ReplicationOverwriteProtection)", - "/properties/KmsKeyId": "\"arn:aws[-a-z]*:kms:[a-z0-9-]+:[0-9]{12}:key/[a-zA-Z0-9-]+\"" - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/FileSystemId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "elasticfilesystem:TagResource", - "elasticfilesystem:ListTagsForResource", - "elasticfilesystem:UntagResource", - "elasticfilesystem:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/FileSystemTags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EFS::FileSystem", - "writeOnlyProperties": [ - "/properties/BypassPolicyLockoutSafetyCheck", - "/properties/ReplicationConfiguration/Destinations/0/AvailabilityZoneName", - "/properties/ReplicationConfiguration/Destinations/0/KmsKeyId" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AvailabilityZoneName", + "/properties/Encrypted", + "/properties/KmsKeyId", + "/properties/PerformanceMode" + ], + "definitions": { + "Arn": { + "type": "string" + }, + "BackupPolicy": { + "additionalProperties": false, + "description": "The backup policy turns automatic backups for the file system on or off.", + "properties": { + "Status": { + "description": "Set the backup policy status for the file system.\n + *ENABLED* - Turns automatic backups on for the file system. \n + *DISABLED* - Turns automatic backups off for the file system.", + "enum": [ + "DISABLED", + "ENABLED" + ], + "type": "string" + } + }, + "required": [ + "Status" + ], + "type": "object" + }, + "ElasticFileSystemTag": { + "additionalProperties": false, + "description": "A tag is a key-value pair attached to a file system. Allowed characters in the ``Key`` and ``Value`` properties are letters, white space, and numbers that can be represented in UTF-8, and the following characters:``+ - = . _ : /``", + "properties": { + "Key": { + "description": "The tag key (String). The key can't start with ``aws:``.", + "type": "string" + }, + "Value": { + "description": "The value of the tag key.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "FileSystemProtection": { + "additionalProperties": false, + "description": "Describes the protection on the file system.", + "properties": { + "ReplicationOverwriteProtection": { + "description": "The status of the file system's replication overwrite protection.\n + ``ENABLED`` \u2013 The file system cannot be used as the destination file system in a replication configuration. The file system is writeable. Replication overwrite protection is ``ENABLED`` by default. \n + ``DISABLED`` \u2013 The file system can be used as the destination file system in a replication configuration. The file system is read-only and can only be modified by EFS replication.\n + ``REPLICATING`` \u2013 The file system is being used as the destination file system in a replication configuration. The file system is read-only and is modified only by EFS replication.\n \n If the replication configuration is deleted, the file system's replication overwrite protection is re-enabled, the file system becomes writeable.", + "enum": [ + "DISABLED", + "ENABLED" + ], + "type": "string" + } + }, + "type": "object" + }, + "LifecyclePolicy": { + "additionalProperties": false, + "description": "Describes a policy used by Lifecycle management that specifies when to transition files into and out of the EFS storage classes. For more information, see [Managing file system storage](https://docs.aws.amazon.com/efs/latest/ug/lifecycle-management-efs.html).\n + Each ``LifecyclePolicy`` object can have only a single transition. This means that in a request body, ``LifecyclePolicies`` must be structured as an array of ``LifecyclePolicy`` objects, one object for each transition, ``TransitionToIA``, ``TransitionToArchive``, ``TransitionToPrimaryStorageClass``.\n + See the AWS::EFS::FileSystem examples for the correct ``LifecyclePolicy`` structure. Do not use the syntax shown on this page.", + "properties": { + "TransitionToArchive": { + "description": "The number of days after files were last accessed in primary storage (the Standard storage class) at which to move them to Archive storage. Metadata operations such as listing the contents of a directory don't count as file access events.", + "type": "string" + }, + "TransitionToIA": { + "description": "The number of days after files were last accessed in primary storage (the Standard storage class) at which to move them to Infrequent Access (IA) storage. Metadata operations such as listing the contents of a directory don't count as file access events.", + "type": "string" + }, + "TransitionToPrimaryStorageClass": { + "description": "Whether to move files back to primary (Standard) storage after they are accessed in IA or Archive storage. Metadata operations such as listing the contents of a directory don't count as file access events.", + "type": "string" + } + }, + "type": "object" + }, + "ReplicationConfiguration": { + "additionalProperties": false, + "description": "Describes the replication configuration for a specific file system.", + "properties": { + "Destinations": { + "description": "An array of destination objects. Only one destination object is supported.", + "items": { + "$ref": "#/definitions/ReplicationDestination" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ReplicationDestination": { + "additionalProperties": false, + "description": "Describes the destination file system in the replication configuration.", + "properties": { + "AvailabilityZoneName": { + "description": "For One Zone file systems, the replication configuration must specify the Availability Zone in which the destination file system is located. \n Use the format ``us-east-1a`` to specify the Availability Zone. For more information about One Zone file systems, see [EFS file system types](https://docs.aws.amazon.com/efs/latest/ug/storage-classes.html) in the *Amazon EFS User Guide*.\n One Zone file system type is not available in all Availability Zones in AWS-Regions where Amazon EFS is available.", + "type": "string" + }, + "FileSystemId": { + "description": "The ID of the destination Amazon EFS file system.", + "pattern": "^(arn:aws[-a-z]*:elasticfilesystem:[0-9a-z-:]+:file-system/fs-[0-9a-f]{8,40}|fs-[0-9a-f]{8,40})$", + "type": "string" + }, + "KmsKeyId": { + "description": "The ID of an kms-key-long used to protect the encrypted file system.", + "type": "string" + }, + "Region": { + "description": "The AWS-Region in which the destination file system is located.\n For One Zone file systems, the replication configuration must specify the AWS-Region in which the destination file system is located.", + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of the current source file system in the replication configuration.", + "type": "string" + }, + "Status": { + "description": "Describes the status of the replication configuration. For more information about replication status, see [Viewing replication details](https://docs.aws.amazon.com//efs/latest/ug/awsbackup.html#restoring-backup-efsmonitoring-replication-status.html) in the *Amazon EFS User Guide*.", + "type": "string" + }, + "StatusMessage": { + "description": "Message that provides details about the ``PAUSED`` or ``ERRROR`` state of the replication destination configuration. For more information about replication status messages, see [Viewing replication details](https://docs.aws.amazon.com//efs/latest/ug/awsbackup.html#restoring-backup-efsmonitoring-replication-status.html) in the *Amazon EFS User Guide*.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The ``AWS::EFS::FileSystem`` resource creates a new, empty file system in EFSlong (EFS). You must create a mount target ([AWS::EFS::MountTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html)) to mount your EFS file system on an EC2 or other AWS cloud compute resource.", + "handlers": { + "create": { + "permissions": [ + "elasticfilesystem:CreateFileSystem", + "elasticfilesystem:DescribeReplicationConfigurations", + "elasticfilesystem:TagResource", + "elasticfilesystem:CreateReplicationConfiguration", + "elasticfilesystem:DescribeFileSystems", + "elasticfilesystem:PutBackupPolicy", + "elasticfilesystem:PutFileSystemPolicy", + "elasticfilesystem:PutLifecycleConfiguration", + "elasticfilesystem:UpdateFileSystemProtection", + "kms:DescribeKey", + "kms:GenerateDataKeyWithoutPlaintext", + "kms:CreateGrant", + "iam:PassRole", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "elasticfilesystem:DescribeFileSystems", + "elasticfilesystem:DeleteFileSystem", + "elasticfilesystem:DeleteReplicationConfiguration", + "elasticfilesystem:DescribeReplicationConfigurations" + ] + }, + "list": { + "permissions": [ + "elasticfilesystem:DescribeBackupPolicy", + "elasticfilesystem:DescribeFileSystemPolicy", + "elasticfilesystem:DescribeFileSystems", + "elasticfilesystem:DescribeLifecycleConfiguration", + "elasticfilesystem:DescribeReplicationConfigurations" + ] + }, + "read": { + "permissions": [ + "elasticfilesystem:DescribeBackupPolicy", + "elasticfilesystem:DescribeFileSystemPolicy", + "elasticfilesystem:DescribeFileSystems", + "elasticfilesystem:DescribeLifecycleConfiguration", + "elasticfilesystem:DescribeReplicationConfigurations" + ] + }, + "update": { + "permissions": [ + "elasticfilesystem:CreateReplicationConfiguration", + "elasticfilesystem:DeleteFileSystemPolicy", + "elasticfilesystem:DescribeBackupPolicy", + "elasticfilesystem:DescribeFileSystemPolicy", + "elasticfilesystem:DescribeFileSystems", + "elasticfilesystem:DescribeLifecycleConfiguration", + "elasticfilesystem:DescribeReplicationConfigurations", + "elasticfilesystem:DeleteTags", + "elasticfilesystem:DeleteReplicationConfiguration", + "elasticfilesystem:ListTagsForResource", + "elasticfilesystem:PutBackupPolicy", + "elasticfilesystem:PutFileSystemPolicy", + "elasticfilesystem:PutLifecycleConfiguration", + "elasticfilesystem:TagResource", + "elasticfilesystem:UntagResource", + "elasticfilesystem:UpdateFileSystem", + "elasticfilesystem:UpdateFileSystemProtection", + "kms:DescribeKey", + "kms:GenerateDataKeyWithoutPlaintext", + "kms:CreateGrant", + "iam:PassRole", + "iam:CreateServiceLinkedRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/FileSystemId" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn", + "description": "" + }, + "AvailabilityZoneName": { + "description": "For One Zone file systems, specify the AWS Availability Zone in which to create the file system. Use the format ``us-east-1a`` to specify the Availability Zone. For more information about One Zone file systems, see [EFS file system types](https://docs.aws.amazon.com/efs/latest/ug/availability-durability.html#file-system-type) in the *Amazon EFS User Guide*.\n One Zone file systems are not available in all Availability Zones in AWS-Regions where Amazon EFS is available.", + "type": "string" + }, + "BackupPolicy": { + "$ref": "#/definitions/BackupPolicy", + "description": "Use the ``BackupPolicy`` to turn automatic backups on or off for the file system." + }, + "BypassPolicyLockoutSafetyCheck": { + "description": "(Optional) A boolean that specifies whether or not to bypass the ``FileSystemPolicy`` lockout safety check. The lockout safety check determines whether the policy in the request will lock out, or prevent, the IAM principal that is making the request from making future ``PutFileSystemPolicy`` requests on this file system. Set ``BypassPolicyLockoutSafetyCheck`` to ``True`` only when you intend to prevent the IAM principal that is making the request from making subsequent ``PutFileSystemPolicy`` requests on this file system. The default value is ``False``.", + "type": "boolean" + }, + "Encrypted": { + "description": "A Boolean value that, if true, creates an encrypted file system. When creating an encrypted file system, you have the option of specifying a KmsKeyId for an existing kms-key-long. If you don't specify a kms-key, then the default kms-key for EFS, ``/aws/elasticfilesystem``, is used to protect the encrypted file system.", + "type": "boolean" + }, + "FileSystemId": { + "description": "", + "type": "string" + }, + "FileSystemPolicy": { + "description": "The ``FileSystemPolicy`` for the EFS file system. A file system policy is an IAM resource policy used to control NFS access to an EFS file system. For more information, see [Using to control NFS access to Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/iam-access-control-nfs-efs.html) in the *Amazon EFS User Guide*.", + "type": "object" + }, + "FileSystemProtection": { + "$ref": "#/definitions/FileSystemProtection", + "description": "Describes the protection on the file system." + }, + "FileSystemTags": { + "description": "Use to create one or more tags associated with the file system. Each tag is a user-defined key-value pair. Name your file system on creation by including a ``\"Key\":\"Name\",\"Value\":\"{value}\"`` key-value pair. Each key must be unique. For more information, see [Tagging resources](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) in the *General Reference Guide*.", + "items": { + "$ref": "#/definitions/ElasticFileSystemTag" + }, + "type": "array", + "uniqueItems": true + }, + "KmsKeyId": { + "description": "The ID of the kms-key-long to be used to protect the encrypted file system. This parameter is only required if you want to use a nondefault kms-key. If this parameter is not specified, the default kms-key for EFS is used. This ID can be in one of the following formats:\n + Key ID - A unique identifier of the key, for example ``1234abcd-12ab-34cd-56ef-1234567890ab``.\n + ARN - An Amazon Resource Name (ARN) for the key, for example ``arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab``.\n + Key alias - A previously created display name for a key, for example ``alias/projectKey1``.\n + Key alias ARN - An ARN for a key alias, for example ``arn:aws:kms:us-west-2:444455556666:alias/projectKey1``.\n \n If ``KmsKeyId`` is specified, the ``Encrypted`` parameter must be set to true.", + "type": "string" + }, + "LifecyclePolicies": { + "description": "An array of ``LifecyclePolicy`` objects that define the file system's ``LifecycleConfiguration`` object. A ``LifecycleConfiguration`` object informs Lifecycle management of the following:\n + When to move files in the file system from primary storage to IA storage.\n + When to move files in the file system from primary storage or IA storage to Archive storage.\n + When to move files that are in IA or Archive storage to primary storage.\n \n EFS requires that each ``LifecyclePolicy`` object have only a single transition. This means that in a request body, ``LifecyclePolicies`` needs to be structured as an array of ``LifecyclePolicy`` objects, one object for each transition, ``TransitionToIA``, ``TransitionToArchive`` ``TransitionToPrimaryStorageClass``. See the example requests in the following section for more information.", + "items": { + "$ref": "#/definitions/LifecyclePolicy" + }, + "type": "array", + "uniqueItems": true + }, + "PerformanceMode": { + "description": "The performance mode of the file system. We recommend ``generalPurpose`` performance mode for all file systems. File systems using the ``maxIO`` performance mode can scale to higher levels of aggregate throughput and operations per second with a tradeoff of slightly higher latencies for most file operations. The performance mode can't be changed after the file system has been created. The ``maxIO`` mode is not supported on One Zone file systems.\n Due to the higher per-operation latencies with Max I/O, we recommend using General Purpose performance mode for all file systems.\n Default is ``generalPurpose``.", + "type": "string" + }, + "ProvisionedThroughputInMibps": { + "description": "The throughput, measured in mebibytes per second (MiBps), that you want to provision for a file system that you're creating. Required if ``ThroughputMode`` is set to ``provisioned``. Valid values are 1-3414 MiBps, with the upper limit depending on Region. To increase this limit, contact SUP. For more information, see [Amazon EFS quotas that you can increase](https://docs.aws.amazon.com/efs/latest/ug/limits.html#soft-limits) in the *Amazon EFS User Guide*.", + "type": "number" + }, + "ReplicationConfiguration": { + "$ref": "#/definitions/ReplicationConfiguration", + "description": "Describes the replication configuration for a specific file system." + }, + "ThroughputMode": { + "description": "Specifies the throughput mode for the file system. The mode can be ``bursting``, ``provisioned``, or ``elastic``. If you set ``ThroughputMode`` to ``provisioned``, you must also set a value for ``ProvisionedThroughputInMibps``. After you create the file system, you can decrease your file system's Provisioned throughput or change between the throughput modes, with certain time restrictions. For more information, see [Specifying throughput with provisioned mode](https://docs.aws.amazon.com/efs/latest/ug/performance.html#provisioned-throughput) in the *Amazon EFS User Guide*. \n Default is ``bursting``.", + "type": "string" + } + }, + "propertyTransform": { + "/properties/FileSystemProtection/ReplicationOverwriteProtection": "$uppercase(FileSystemProtection.ReplicationOverwriteProtection)='DISABLED' ? 'REPLICATING' : $uppercase(FileSystemProtection.ReplicationOverwriteProtection)", + "/properties/KmsKeyId": "\"arn:aws[-a-z]*:kms:[a-z0-9-]+:[0-9]{12}:key/[a-zA-Z0-9-]+\"", + "/properties/ReplicationConfiguration/Destinations/*/FileSystemId": "$split(FileSystemId, \"/\")[-1]" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/FileSystemId", + "/properties/ReplicationConfiguration/Destinations/*/Status", + "/properties/ReplicationConfiguration/Destinations/*/StatusMessage" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "elasticfilesystem:TagResource", + "elasticfilesystem:ListTagsForResource", + "elasticfilesystem:UntagResource", + "elasticfilesystem:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/FileSystemTags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EFS::FileSystem", + "writeOnlyProperties": [ + "/properties/BypassPolicyLockoutSafetyCheck", + "/properties/ReplicationConfiguration/Destinations/0/AvailabilityZoneName", + "/properties/ReplicationConfiguration/Destinations/0/KmsKeyId" + ] +} diff --git a/src/schema/aws-efs-mounttarget.json b/src/schema/aws-efs-mounttarget.json index caeb1bf8..da4ba6f2 100644 --- a/src/schema/aws-efs-mounttarget.json +++ b/src/schema/aws-efs-mounttarget.json @@ -1,95 +1,95 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/IpAddress", - "/properties/SubnetId", - "/properties/FileSystemId" - ], - "description": "The ``AWS::EFS::MountTarget`` resource is an Amazon EFS resource that creates a mount target for an EFS file system. You can then mount the file system on Amazon EC2 instances or other resources by using the mount target.", - "handlers": { - "create": { - "permissions": [ - "elasticfilesystem:CreateMountTarget", - "elasticfilesystem:DescribeMountTargets" - ] - }, - "delete": { - "permissions": [ - "elasticfilesystem:DescribeMountTargets", - "elasticfilesystem:DeleteMountTarget" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "FileSystemId": { - "$ref": "resource-schema.json#/properties/FileSystemId" - } - }, - "required": [ - "FileSystemId" - ] - }, - "permissions": [ - "elasticfilesystem:DescribeMountTargets", - "elasticfilesystem:DescribeMountTargetSecurityGroups" - ] - }, - "read": { - "permissions": [ - "elasticfilesystem:DescribeMountTargets", - "elasticfilesystem:DescribeMountTargetSecurityGroups" - ] - }, - "update": { - "permissions": [ - "elasticfilesystem:DescribeMountTargets", - "elasticfilesystem:DescribeMountTargetSecurityGroups", - "elasticfilesystem:ModifyMountTargetSecurityGroups" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "FileSystemId": { - "description": "The ID of the file system for which to create the mount target.", - "type": "string" - }, - "Id": { - "description": "", - "type": "string" - }, - "IpAddress": { - "description": "Valid IPv4 address within the address range of the specified subnet.", - "type": "string" - }, - "SecurityGroups": { - "description": "Up to five VPC security group IDs, of the form ``sg-xxxxxxxx``. These must be for the same VPC as subnet specified.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "SubnetId": { - "description": "The ID of the subnet to add the mount target in. For One Zone file systems, use the subnet that is associated with the file system's Availability Zone.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "FileSystemId", - "SecurityGroups", - "SubnetId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::EFS::MountTarget" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IpAddress", + "/properties/SubnetId", + "/properties/FileSystemId" + ], + "description": "The ``AWS::EFS::MountTarget`` resource is an Amazon EFS resource that creates a mount target for an EFS file system. You can then mount the file system on Amazon EC2 instances or other resources by using the mount target.", + "handlers": { + "create": { + "permissions": [ + "elasticfilesystem:CreateMountTarget", + "elasticfilesystem:DescribeMountTargets" + ] + }, + "delete": { + "permissions": [ + "elasticfilesystem:DescribeMountTargets", + "elasticfilesystem:DeleteMountTarget" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FileSystemId": { + "$ref": "resource-schema.json#/properties/FileSystemId" + } + }, + "required": [ + "FileSystemId" + ] + }, + "permissions": [ + "elasticfilesystem:DescribeMountTargets", + "elasticfilesystem:DescribeMountTargetSecurityGroups" + ] + }, + "read": { + "permissions": [ + "elasticfilesystem:DescribeMountTargets", + "elasticfilesystem:DescribeMountTargetSecurityGroups" + ] + }, + "update": { + "permissions": [ + "elasticfilesystem:DescribeMountTargets", + "elasticfilesystem:DescribeMountTargetSecurityGroups", + "elasticfilesystem:ModifyMountTargetSecurityGroups" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "FileSystemId": { + "description": "The ID of the file system for which to create the mount target.", + "type": "string" + }, + "Id": { + "description": "", + "type": "string" + }, + "IpAddress": { + "description": "Valid IPv4 address within the address range of the specified subnet.", + "type": "string" + }, + "SecurityGroups": { + "description": "VPC security group IDs, of the form ``sg-xxxxxxxx``. These must be for the same VPC as the subnet specified. The maximum number of security groups depends on account quota. For more information, see [Amazon VPC Quotas](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html) in the *Amazon VPC User Guide* (see the *Security Groups* table).", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetId": { + "description": "The ID of the subnet to add the mount target in. For One Zone file systems, use the subnet that is associated with the file system's Availability Zone.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FileSystemId", + "SecurityGroups", + "SubnetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::EFS::MountTarget" +} diff --git a/src/schema/aws-eks-accessentry.json b/src/schema/aws-eks-accessentry.json index 6155cbcf..ffb3ebda 100644 --- a/src/schema/aws-eks-accessentry.json +++ b/src/schema/aws-eks-accessentry.json @@ -1,205 +1,205 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PrincipalArn", - "/properties/ClusterName", - "/properties/Type" - ], - "definitions": { - "AccessPolicy": { - "additionalProperties": false, - "description": "An access policy to associate with the current access entry.", - "properties": { - "AccessScope": { - "$ref": "#/definitions/AccessScope" - }, - "PolicyArn": { - "description": "The ARN of the access policy to add to the access entry.", - "type": "string" - } - }, - "required": [ - "PolicyArn", - "AccessScope" - ], - "type": "object" - }, - "AccessScope": { - "additionalProperties": false, - "description": "The access scope of the access policy.", - "properties": { - "Namespaces": { - "description": "The namespaces to associate with the access scope. Only specify if Type is set to 'namespace'.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "description": "The type of the access scope.", - "enum": [ - "namespace", - "cluster" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "An object representing an Amazon EKS AccessEntry.", - "handlers": { - "create": { - "permissions": [ - "eks:CreateAccessEntry", - "eks:DescribeAccessEntry", - "eks:AssociateAccessPolicy", - "eks:TagResource", - "eks:ListAssociatedAccessPolicies" - ] - }, - "delete": { - "permissions": [ - "eks:DeleteAccessEntry", - "eks:DescribeAccessEntry" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ClusterName": { - "$ref": "resource-schema.json#/properties/ClusterName" - } - }, - "required": [ - "ClusterName" - ] - }, - "permissions": [ - "eks:ListAccessEntries" - ] - }, - "read": { - "permissions": [ - "eks:DescribeAccessEntry", - "eks:ListAssociatedAccessPolicies" - ] - }, - "update": { - "permissions": [ - "eks:DescribeAccessEntry", - "eks:ListAssociatedAccessPolicies", - "eks:UpdateAccessEntry", - "eks:AssociateAccessPolicy", - "eks:DisassociateAccessPolicy", - "eks:TagResource", - "eks:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/PrincipalArn", - "/properties/ClusterName" - ], - "properties": { - "AccessEntryArn": { - "description": "The ARN of the access entry.", - "type": "string" - }, - "AccessPolicies": { - "description": "An array of access policies that are associated with the access entry.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AccessPolicy" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ClusterName": { - "description": "The cluster that the access entry is created for.", - "minLength": 1, - "type": "string" - }, - "KubernetesGroups": { - "description": "The Kubernetes groups that the access entry is associated with.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "PrincipalArn": { - "description": "The principal ARN that the access entry is created for.", - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "description": "The node type to associate with the access entry.", - "type": "string" - }, - "Username": { - "description": "The Kubernetes user that the access entry is associated with.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AccessEntryArn" - ], - "replacementStrategy": "create_then_delete", - "required": [ - "PrincipalArn", - "ClusterName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eks.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "eks:TagResource", - "eks:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EKS::AccessEntry" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PrincipalArn", + "/properties/ClusterName", + "/properties/Type" + ], + "definitions": { + "AccessPolicy": { + "additionalProperties": false, + "description": "An access policy to associate with the current access entry.", + "properties": { + "AccessScope": { + "$ref": "#/definitions/AccessScope" + }, + "PolicyArn": { + "description": "The ARN of the access policy to add to the access entry.", + "type": "string" + } + }, + "required": [ + "PolicyArn", + "AccessScope" + ], + "type": "object" + }, + "AccessScope": { + "additionalProperties": false, + "description": "The access scope of the access policy.", + "properties": { + "Namespaces": { + "description": "The namespaces to associate with the access scope. Only specify if Type is set to 'namespace'.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "The type of the access scope.", + "enum": [ + "namespace", + "cluster" + ], + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "An object representing an Amazon EKS AccessEntry.", + "handlers": { + "create": { + "permissions": [ + "eks:CreateAccessEntry", + "eks:DescribeAccessEntry", + "eks:AssociateAccessPolicy", + "eks:TagResource", + "eks:ListAssociatedAccessPolicies" + ] + }, + "delete": { + "permissions": [ + "eks:DeleteAccessEntry", + "eks:DescribeAccessEntry" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ClusterName": { + "$ref": "resource-schema.json#/properties/ClusterName" + } + }, + "required": [ + "ClusterName" + ] + }, + "permissions": [ + "eks:ListAccessEntries" + ] + }, + "read": { + "permissions": [ + "eks:DescribeAccessEntry", + "eks:ListAssociatedAccessPolicies" + ] + }, + "update": { + "permissions": [ + "eks:DescribeAccessEntry", + "eks:ListAssociatedAccessPolicies", + "eks:UpdateAccessEntry", + "eks:AssociateAccessPolicy", + "eks:DisassociateAccessPolicy", + "eks:TagResource", + "eks:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/PrincipalArn", + "/properties/ClusterName" + ], + "properties": { + "AccessEntryArn": { + "description": "The ARN of the access entry.", + "type": "string" + }, + "AccessPolicies": { + "description": "An array of access policies that are associated with the access entry.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AccessPolicy" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ClusterName": { + "description": "The cluster that the access entry is created for.", + "minLength": 1, + "type": "string" + }, + "KubernetesGroups": { + "description": "The Kubernetes groups that the access entry is associated with.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "PrincipalArn": { + "description": "The principal ARN that the access entry is created for.", + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "The node type to associate with the access entry.", + "type": "string" + }, + "Username": { + "description": "The Kubernetes user that the access entry is associated with.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AccessEntryArn" + ], + "replacementStrategy": "create_then_delete", + "required": [ + "PrincipalArn", + "ClusterName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eks.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "eks:TagResource", + "eks:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EKS::AccessEntry" +} diff --git a/src/schema/aws-eks-addon.json b/src/schema/aws-eks-addon.json index 88867317..983f6c63 100644 --- a/src/schema/aws-eks-addon.json +++ b/src/schema/aws-eks-addon.json @@ -1,198 +1,198 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClusterName", - "/properties/AddonName" - ], - "definitions": { - "PodIdentityAssociation": { - "additionalProperties": false, - "description": "A pod identity to associate with an add-on.", - "properties": { - "RoleArn": { - "description": "The IAM role ARN that the pod identity association is created for.", - "pattern": "^arn:aws(-cn|-us-gov|-iso(-[a-z])?)?:iam::\\d{12}:(role)\\/*", - "type": "string" - }, - "ServiceAccount": { - "description": "The Kubernetes service account that the pod identity association is created for.", - "type": "string" - } - }, - "required": [ - "ServiceAccount", - "RoleArn" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Schema for AWS::EKS::Addon", - "handlers": { - "create": { - "permissions": [ - "eks:CreateAddon", - "eks:DescribeAddon", - "eks:TagResource", - "iam:PassRole", - "iam:GetRole", - "eks:CreatePodIdentityAssociation" - ] - }, - "delete": { - "permissions": [ - "eks:DeleteAddon", - "eks:DescribeAddon", - "eks:DeletePodIdentityAssociation" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ClusterName": { - "$ref": "resource-schema.json#/properties/ClusterName" - } - }, - "required": [ - "ClusterName" - ] - }, - "permissions": [ - "eks:ListAddons" - ] - }, - "read": { - "permissions": [ - "eks:DescribeAddon" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "iam:GetRole", - "eks:UpdateAddon", - "eks:DescribeAddon", - "eks:DescribeUpdate", - "eks:ListTagsForResource", - "eks:TagResource", - "eks:UntagResource", - "eks:CreatePodIdentityAssociation", - "eks:DeletePodIdentityAssociation" - ] - } - }, - "primaryIdentifier": [ - "/properties/ClusterName", - "/properties/AddonName" - ], - "properties": { - "AddonName": { - "description": "Name of Addon", - "minLength": 1, - "type": "string" - }, - "AddonVersion": { - "description": "Version of Addon", - "minLength": 1, - "type": "string" - }, - "Arn": { - "description": "Amazon Resource Name (ARN) of the add-on", - "type": "string" - }, - "ClusterName": { - "description": "Name of Cluster", - "minLength": 1, - "type": "string" - }, - "ConfigurationValues": { - "description": "The configuration values to use with the add-on", - "minLength": 1, - "type": "string" - }, - "PodIdentityAssociations": { - "description": "An array of pod identities to apply to this add-on.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PodIdentityAssociation" - }, - "type": "array", - "uniqueItems": true - }, - "PreserveOnDelete": { - "description": "PreserveOnDelete parameter value", - "type": "boolean" - }, - "ResolveConflicts": { - "description": "Resolve parameter value conflicts", - "enum": [ - "NONE", - "OVERWRITE", - "PRESERVE" - ], - "minLength": 1, - "type": "string" - }, - "ServiceAccountRoleArn": { - "description": "IAM role to bind to the add-on's service account", - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "ClusterName", - "AddonName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eks.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "eks:TagResource", - "eks:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EKS::Addon", - "writeOnlyProperties": [ - "/properties/ResolveConflicts", - "/properties/PreserveOnDelete", - "/properties/PodIdentityAssociations" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterName", + "/properties/AddonName" + ], + "definitions": { + "PodIdentityAssociation": { + "additionalProperties": false, + "description": "A pod identity to associate with an add-on.", + "properties": { + "RoleArn": { + "description": "The IAM role ARN that the pod identity association is created for.", + "pattern": "^arn:aws(-cn|-us-gov|-iso(-[a-z])?)?:iam::\\d{12}:(role)\\/*", + "type": "string" + }, + "ServiceAccount": { + "description": "The Kubernetes service account that the pod identity association is created for.", + "type": "string" + } + }, + "required": [ + "ServiceAccount", + "RoleArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Schema for AWS::EKS::Addon", + "handlers": { + "create": { + "permissions": [ + "eks:CreateAddon", + "eks:DescribeAddon", + "eks:TagResource", + "iam:PassRole", + "iam:GetRole", + "eks:CreatePodIdentityAssociation" + ] + }, + "delete": { + "permissions": [ + "eks:DeleteAddon", + "eks:DescribeAddon", + "eks:DeletePodIdentityAssociation" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ClusterName": { + "$ref": "resource-schema.json#/properties/ClusterName" + } + }, + "required": [ + "ClusterName" + ] + }, + "permissions": [ + "eks:ListAddons" + ] + }, + "read": { + "permissions": [ + "eks:DescribeAddon" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "iam:GetRole", + "eks:UpdateAddon", + "eks:DescribeAddon", + "eks:DescribeUpdate", + "eks:TagResource", + "eks:UntagResource", + "eks:CreatePodIdentityAssociation", + "eks:DeletePodIdentityAssociation", + "eks:UpdatePodIdentityAssociation" + ] + } + }, + "primaryIdentifier": [ + "/properties/ClusterName", + "/properties/AddonName" + ], + "properties": { + "AddonName": { + "description": "Name of Addon", + "minLength": 1, + "type": "string" + }, + "AddonVersion": { + "description": "Version of Addon", + "minLength": 1, + "type": "string" + }, + "Arn": { + "description": "Amazon Resource Name (ARN) of the add-on", + "type": "string" + }, + "ClusterName": { + "description": "Name of Cluster", + "minLength": 1, + "type": "string" + }, + "ConfigurationValues": { + "description": "The configuration values to use with the add-on", + "minLength": 1, + "type": "string" + }, + "PodIdentityAssociations": { + "description": "An array of pod identities to apply to this add-on.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PodIdentityAssociation" + }, + "type": "array", + "uniqueItems": true + }, + "PreserveOnDelete": { + "description": "PreserveOnDelete parameter value", + "type": "boolean" + }, + "ResolveConflicts": { + "description": "Resolve parameter value conflicts", + "enum": [ + "NONE", + "OVERWRITE", + "PRESERVE" + ], + "minLength": 1, + "type": "string" + }, + "ServiceAccountRoleArn": { + "description": "IAM role to bind to the add-on's service account", + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "ClusterName", + "AddonName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eks.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "eks:TagResource", + "eks:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EKS::Addon", + "writeOnlyProperties": [ + "/properties/ResolveConflicts", + "/properties/PreserveOnDelete", + "/properties/PodIdentityAssociations" + ] +} diff --git a/src/schema/aws-eks-cluster.json b/src/schema/aws-eks-cluster.json index f7728fdc..35d27738 100644 --- a/src/schema/aws-eks-cluster.json +++ b/src/schema/aws-eks-cluster.json @@ -1,505 +1,589 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/OutpostConfig", - "/properties/EncryptionConfig", - "/properties/KubernetesNetworkConfig", - "/properties/AccessConfig/BootstrapClusterCreatorAdminPermissions", - "/properties/Name", - "/properties/RoleArn", - "/properties/BootstrapSelfManagedAddons" - ], - "definitions": { - "AccessConfig": { - "additionalProperties": false, - "description": "An object representing the Access Config to use for the cluster.", - "properties": { - "AuthenticationMode": { - "description": "Specify the authentication mode that should be used to create your cluster.", - "enum": [ - "CONFIG_MAP", - "API_AND_CONFIG_MAP", - "API" - ], - "type": "string" - }, - "BootstrapClusterCreatorAdminPermissions": { - "description": "Set this value to false to avoid creating a default cluster admin Access Entry using the IAM principal used to create the cluster.", - "type": "boolean" - } - }, - "type": "object" - }, - "BlockStorage": { - "additionalProperties": false, - "description": "Todo: add description", - "properties": { - "Enabled": { - "description": "Todo: add description", - "type": "boolean" - } - }, - "type": "object" - }, - "ClusterLogging": { - "additionalProperties": false, - "description": "The cluster control plane logging configuration for your cluster. ", - "properties": { - "EnabledTypes": { - "$ref": "#/definitions/EnabledTypes" - } - }, - "type": "object" - }, - "ControlPlanePlacement": { - "additionalProperties": false, - "description": "Specify the placement group of the control plane machines for your cluster.", - "properties": { - "GroupName": { - "description": "Specify the placement group name of the control place machines for your cluster.", - "type": "string" - } - }, - "type": "object" - }, - "EnabledTypes": { - "description": "Enable control plane logs for your cluster, all log types will be disabled if the array is empty", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LoggingTypeConfig" - }, - "type": "array" - }, - "EncryptionConfig": { - "additionalProperties": false, - "description": "The encryption configuration for the cluster", - "properties": { - "Provider": { - "$ref": "#/definitions/Provider", - "description": "The encryption provider for the cluster." - }, - "Resources": { - "description": "Specifies the resources to be encrypted. The only supported value is \"secrets\".", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "KubernetesNetworkConfig": { - "additionalProperties": false, - "description": "The Kubernetes network configuration for the cluster.", - "properties": { - "IpFamily": { - "description": "Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on", - "enum": [ - "ipv4", - "ipv6" - ], - "type": "string" - }, - "ServiceIpv4Cidr": { - "description": "The CIDR block to assign Kubernetes service IP addresses from. If you don't specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. We recommend that you specify a block that does not overlap with resources in other networks that are peered or connected to your VPC. ", - "type": "string" - }, - "ServiceIpv6Cidr": { - "description": "The CIDR block to assign Kubernetes service IP addresses from.", - "type": "string" - } - }, - "type": "object" - }, - "Logging": { - "additionalProperties": false, - "description": "Enable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs based on log types. By default, cluster control plane logs aren't exported to CloudWatch Logs.", - "properties": { - "ClusterLogging": { - "$ref": "#/definitions/ClusterLogging", - "description": "The cluster control plane logging configuration for your cluster. " - } - }, - "type": "object" - }, - "LoggingTypeConfig": { - "additionalProperties": false, - "description": "Enabled Logging Type", - "properties": { - "Type": { - "description": "name of the log type", - "enum": [ - "api", - "audit", - "authenticator", - "controllerManager", - "scheduler" - ], - "type": "string" - } - }, - "type": "object" - }, - "OutpostConfig": { - "additionalProperties": false, - "description": "An object representing the Outpost configuration to use for AWS EKS outpost cluster.", - "properties": { - "ControlPlaneInstanceType": { - "description": "Specify the Instance type of the machines that should be used to create your cluster.", - "type": "string" - }, - "ControlPlanePlacement": { - "$ref": "#/definitions/ControlPlanePlacement", - "description": "Specify the placement group of the control plane machines for your cluster." - }, - "OutpostArns": { - "description": "Specify one or more Arn(s) of Outpost(s) on which you would like to create your cluster.", - "insertionOrder": false, - "items": { - "minItems": 1, - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "OutpostArns", - "ControlPlaneInstanceType" - ], - "type": "object" - }, - "Provider": { - "additionalProperties": false, - "properties": { - "KeyArn": { - "description": "Amazon Resource Name (ARN) or alias of the KMS key. The KMS key must be symmetric, created in the same region as the cluster, and if the KMS key was created in a different account, the user must have access to the KMS key.", - "type": "string" - } - }, - "type": "object" - }, - "RemoteNodeNetwork": { - "additionalProperties": false, - "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", - "properties": { - "Cidrs": { - "description": "Specifies the list of remote node CIDRs.", - "insertionOrder": false, - "items": { - "minItems": 1, - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "Cidrs" - ], - "type": "object" - }, - "RemoteNodeNetworks": { - "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RemoteNodeNetwork" - }, - "type": "array" - }, - "RemotePodNetwork": { - "additionalProperties": false, - "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", - "properties": { - "Cidrs": { - "description": "Specifies the list of remote pod CIDRs.", - "insertionOrder": false, - "items": { - "minItems": 1, - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "Cidrs" - ], - "type": "object" - }, - "RemotePodNetworks": { - "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RemotePodNetwork" - }, - "type": "array" - }, - "ResourcesVpcConfig": { - "additionalProperties": false, - "description": "An object representing the VPC configuration to use for an Amazon EKS cluster.", - "properties": { - "EndpointPrivateAccess": { - "description": "Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false, which disables private access for your Kubernetes API server. If you disable private access and you have nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the nodes or Fargate pods.", - "type": "boolean" - }, - "EndpointPublicAccess": { - "description": "Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true, which enables public access for your Kubernetes API server.", - "type": "boolean" - }, - "PublicAccessCidrs": { - "description": "The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0. If you've disabled private endpoint access and you have nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks.", - "insertionOrder": false, - "items": { - "minItems": 1, - "type": "string" - }, - "type": "array" - }, - "SecurityGroupIds": { - "description": "Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used.", - "insertionOrder": false, - "items": { - "minItems": 1, - "type": "string" - }, - "type": "array" - }, - "SubnetIds": { - "description": "Specify subnets for your Amazon EKS nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your nodes and the Kubernetes control plane.", - "insertionOrder": false, - "items": { - "minItems": 1, - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "SubnetIds" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UpgradePolicy": { - "additionalProperties": false, - "description": "An object representing the Upgrade Policy to use for the cluster.", - "properties": { - "SupportType": { - "description": "Specify the support type for your cluster.", - "enum": [ - "STANDARD", - "EXTENDED" - ], - "type": "string" - } - }, - "type": "object" - }, - "ZonalShiftConfig": { - "additionalProperties": false, - "description": "The current zonal shift configuration to use for the cluster.", - "properties": { - "Enabled": { - "description": "Set this value to true to enable zonal shift for the cluster.", - "type": "boolean" - } - }, - "type": "object" - } - }, - "description": "An object representing an Amazon EKS cluster.", - "handlers": { - "create": { - "permissions": [ - "eks:CreateCluster", - "eks:DescribeCluster", - "eks:TagResource", - "iam:PassRole", - "iam:GetRole", - "iam:ListAttachedRolePolicies", - "iam:CreateServiceLinkedRole", - "iam:CreateInstanceProfile", - "iam:TagInstanceProfile", - "iam:AddRoleToInstanceProfile", - "iam:GetInstanceProfile", - "iam:DeleteInstanceProfile", - "iam:RemoveRoleFromInstanceProfile", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "kms:DescribeKey", - "kms:CreateGrant" - ] - }, - "delete": { - "permissions": [ - "eks:DeleteCluster", - "eks:DescribeCluster" - ] - }, - "list": { - "permissions": [ - "eks:ListClusters" - ] - }, - "read": { - "permissions": [ - "eks:DescribeCluster" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "eks:UpdateClusterConfig", - "eks:UpdateClusterVersion", - "eks:DescribeCluster", - "eks:DescribeUpdate", - "eks:TagResource", - "eks:UntagResource" - ], - "timeoutInMinutes": 180 - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "AccessConfig": { - "$ref": "#/definitions/AccessConfig" - }, - "Arn": { - "description": "The ARN of the cluster, such as arn:aws:eks:us-west-2:666666666666:cluster/prod.", - "type": "string" - }, - "BootstrapSelfManagedAddons": { - "description": "Set this value to false to avoid creating the default networking add-ons when the cluster is created.", - "type": "boolean" - }, - "CertificateAuthorityData": { - "description": "The certificate-authority-data for your cluster.", - "type": "string" - }, - "ClusterSecurityGroupId": { - "description": "The cluster security group that was created by Amazon EKS for the cluster. Managed node groups use this security group for control plane to data plane communication.", - "type": "string" - }, - "EncryptionConfig": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EncryptionConfig", - "maxItems": 1 - }, - "type": "array" - }, - "EncryptionConfigKeyArn": { - "description": "Amazon Resource Name (ARN) or alias of the customer master key (CMK).", - "type": "string" - }, - "Endpoint": { - "description": "The endpoint for your Kubernetes API server, such as https://5E1D0CEXAMPLEA591B746AFC5AB30262.yl4.us-west-2.eks.amazonaws.com.", - "type": "string" - }, - "Id": { - "description": "The unique ID given to your cluster.", - "type": "string" - }, - "KubernetesNetworkConfig": { - "$ref": "#/definitions/KubernetesNetworkConfig" - }, - "Logging": { - "$ref": "#/definitions/Logging" - }, - "Name": { - "description": "The unique name to give to your cluster.", - "maxLength": 100, - "minLength": 1, - "pattern": "^[0-9A-Za-z][A-Za-z0-9\\-_]*", - "type": "string" - }, - "OpenIdConnectIssuerUrl": { - "description": "The issuer URL for the cluster's OIDC identity provider, such as https://oidc.eks.us-west-2.amazonaws.com/id/EXAMPLED539D4633E53DE1B716D3041E. If you need to remove https:// from this output value, you can include the following code in your template.", - "type": "string" - }, - "OutpostConfig": { - "$ref": "#/definitions/OutpostConfig" - }, - "ResourcesVpcConfig": { - "$ref": "#/definitions/ResourcesVpcConfig" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "UpgradePolicy": { - "$ref": "#/definitions/UpgradePolicy" - }, - "Version": { - "description": "The desired Kubernetes version for your cluster. If you don't specify a value here, the latest version available in Amazon EKS is used.", - "pattern": "1\\.\\d\\d", - "type": "string" - }, - "ZonalShiftConfig": { - "$ref": "#/definitions/ZonalShiftConfig" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/Endpoint", - "/properties/CertificateAuthorityData", - "/properties/ClusterSecurityGroupId", - "/properties/EncryptionConfigKeyArn", - "/properties/OpenIdConnectIssuerUrl", - "/properties/KubernetesNetworkConfig/ServiceIpv6Cidr" - ], - "required": [ - "RoleArn", - "ResourcesVpcConfig" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eks.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "eks:TagResource", - "eks:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EKS::Cluster", - "writeOnlyProperties": [ - "/properties/AccessConfig/BootstrapClusterCreatorAdminPermissions", - "/properties/BootstrapSelfManagedAddons" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/OutpostConfig", + "/properties/EncryptionConfig", + "/properties/KubernetesNetworkConfig/IpFamily", + "/properties/KubernetesNetworkConfig/ServiceIpv4Cidr", + "/properties/AccessConfig/BootstrapClusterCreatorAdminPermissions", + "/properties/Name", + "/properties/RoleArn", + "/properties/BootstrapSelfManagedAddons" + ], + "definitions": { + "AccessConfig": { + "additionalProperties": false, + "description": "An object representing the Access Config to use for the cluster.", + "properties": { + "AuthenticationMode": { + "description": "Specify the authentication mode that should be used to create your cluster.", + "enum": [ + "CONFIG_MAP", + "API_AND_CONFIG_MAP", + "API" + ], + "type": "string" + }, + "BootstrapClusterCreatorAdminPermissions": { + "description": "Set this value to false to avoid creating a default cluster admin Access Entry using the IAM principal used to create the cluster.", + "type": "boolean" + } + }, + "type": "object" + }, + "BlockStorage": { + "additionalProperties": false, + "description": "Todo: add description", + "properties": { + "Enabled": { + "description": "Todo: add description", + "type": "boolean" + } + }, + "type": "object" + }, + "ClusterLogging": { + "additionalProperties": false, + "description": "The cluster control plane logging configuration for your cluster. ", + "properties": { + "EnabledTypes": { + "$ref": "#/definitions/EnabledTypes" + } + }, + "type": "object" + }, + "ComputeConfig": { + "additionalProperties": false, + "description": "Todo: add description", + "properties": { + "Enabled": { + "description": "Todo: add description", + "type": "boolean" + }, + "NodePools": { + "description": "Todo: add description", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "NodeRoleArn": { + "description": "Todo: add description", + "type": "string" + } + }, + "type": "object" + }, + "ControlPlanePlacement": { + "additionalProperties": false, + "description": "Specify the placement group of the control plane machines for your cluster.", + "properties": { + "GroupName": { + "description": "Specify the placement group name of the control place machines for your cluster.", + "type": "string" + } + }, + "type": "object" + }, + "ElasticLoadBalancing": { + "additionalProperties": false, + "description": "Todo: add description", + "properties": { + "Enabled": { + "description": "Todo: add description", + "type": "boolean" + } + }, + "type": "object" + }, + "EnabledTypes": { + "description": "Enable control plane logs for your cluster, all log types will be disabled if the array is empty", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoggingTypeConfig" + }, + "type": "array" + }, + "EncryptionConfig": { + "additionalProperties": false, + "description": "The encryption configuration for the cluster", + "properties": { + "Provider": { + "$ref": "#/definitions/Provider", + "description": "The encryption provider for the cluster." + }, + "Resources": { + "description": "Specifies the resources to be encrypted. The only supported value is \"secrets\".", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "KubernetesNetworkConfig": { + "additionalProperties": false, + "description": "The Kubernetes network configuration for the cluster.", + "properties": { + "ElasticLoadBalancing": { + "$ref": "#/definitions/ElasticLoadBalancing", + "description": "Todo: add description" + }, + "IpFamily": { + "description": "Ipv4 or Ipv6. You can only specify ipv6 for 1.21 and later clusters that use version 1.10.1 or later of the Amazon VPC CNI add-on", + "enum": [ + "ipv4", + "ipv6" + ], + "type": "string" + }, + "ServiceIpv4Cidr": { + "description": "The CIDR block to assign Kubernetes service IP addresses from. If you don't specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. We recommend that you specify a block that does not overlap with resources in other networks that are peered or connected to your VPC. ", + "type": "string" + }, + "ServiceIpv6Cidr": { + "description": "The CIDR block to assign Kubernetes service IP addresses from.", + "type": "string" + } + }, + "type": "object" + }, + "Logging": { + "additionalProperties": false, + "description": "Enable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs based on log types. By default, cluster control plane logs aren't exported to CloudWatch Logs.", + "properties": { + "ClusterLogging": { + "$ref": "#/definitions/ClusterLogging", + "description": "The cluster control plane logging configuration for your cluster. " + } + }, + "type": "object" + }, + "LoggingTypeConfig": { + "additionalProperties": false, + "description": "Enabled Logging Type", + "properties": { + "Type": { + "description": "name of the log type", + "enum": [ + "api", + "audit", + "authenticator", + "controllerManager", + "scheduler" + ], + "type": "string" + } + }, + "type": "object" + }, + "OutpostConfig": { + "additionalProperties": false, + "description": "An object representing the Outpost configuration to use for AWS EKS outpost cluster.", + "properties": { + "ControlPlaneInstanceType": { + "description": "Specify the Instance type of the machines that should be used to create your cluster.", + "type": "string" + }, + "ControlPlanePlacement": { + "$ref": "#/definitions/ControlPlanePlacement", + "description": "Specify the placement group of the control plane machines for your cluster." + }, + "OutpostArns": { + "description": "Specify one or more Arn(s) of Outpost(s) on which you would like to create your cluster.", + "insertionOrder": false, + "items": { + "minItems": 1, + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "OutpostArns", + "ControlPlaneInstanceType" + ], + "type": "object" + }, + "Provider": { + "additionalProperties": false, + "properties": { + "KeyArn": { + "description": "Amazon Resource Name (ARN) or alias of the KMS key. The KMS key must be symmetric, created in the same region as the cluster, and if the KMS key was created in a different account, the user must have access to the KMS key.", + "type": "string" + } + }, + "type": "object" + }, + "RemoteNetworkConfig": { + "additionalProperties": false, + "description": "Configuration fields for specifying on-premises node and pod CIDRs that are external to the VPC passed during cluster creation.", + "properties": { + "RemoteNodeNetworks": { + "$ref": "#/definitions/RemoteNodeNetworks", + "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes." + }, + "RemotePodNetworks": { + "$ref": "#/definitions/RemotePodNetworks", + "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes." + } + }, + "required": [ + "RemoteNodeNetworks" + ], + "type": "object" + }, + "RemoteNodeNetwork": { + "additionalProperties": false, + "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + "properties": { + "Cidrs": { + "description": "Specifies the list of remote node CIDRs.", + "insertionOrder": false, + "items": { + "minItems": 1, + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Cidrs" + ], + "type": "object" + }, + "RemoteNodeNetworks": { + "description": "Network configuration of nodes run on-premises with EKS Hybrid Nodes.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RemoteNodeNetwork" + }, + "type": "array" + }, + "RemotePodNetwork": { + "additionalProperties": false, + "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + "properties": { + "Cidrs": { + "description": "Specifies the list of remote pod CIDRs.", + "insertionOrder": false, + "items": { + "minItems": 1, + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Cidrs" + ], + "type": "object" + }, + "RemotePodNetworks": { + "description": "Network configuration of pods run on-premises with EKS Hybrid Nodes.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RemotePodNetwork" + }, + "type": "array" + }, + "ResourcesVpcConfig": { + "additionalProperties": false, + "description": "An object representing the VPC configuration to use for an Amazon EKS cluster.", + "properties": { + "EndpointPrivateAccess": { + "description": "Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false, which disables private access for your Kubernetes API server. If you disable private access and you have nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the nodes or Fargate pods.", + "type": "boolean" + }, + "EndpointPublicAccess": { + "description": "Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true, which enables public access for your Kubernetes API server.", + "type": "boolean" + }, + "PublicAccessCidrs": { + "description": "The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0. If you've disabled private endpoint access and you have nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks.", + "insertionOrder": false, + "items": { + "minItems": 1, + "type": "string" + }, + "type": "array" + }, + "SecurityGroupIds": { + "description": "Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used.", + "insertionOrder": false, + "items": { + "minItems": 1, + "type": "string" + }, + "type": "array" + }, + "SubnetIds": { + "description": "Specify subnets for your Amazon EKS nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your nodes and the Kubernetes control plane.", + "insertionOrder": false, + "items": { + "minItems": 1, + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "SubnetIds" + ], + "type": "object" + }, + "StorageConfig": { + "additionalProperties": false, + "description": "Todo: add description", + "properties": { + "BlockStorage": { + "$ref": "#/definitions/BlockStorage", + "description": "Todo: add description" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UpgradePolicy": { + "additionalProperties": false, + "description": "An object representing the Upgrade Policy to use for the cluster.", + "properties": { + "SupportType": { + "description": "Specify the support type for your cluster.", + "enum": [ + "STANDARD", + "EXTENDED" + ], + "type": "string" + } + }, + "type": "object" + }, + "ZonalShiftConfig": { + "additionalProperties": false, + "description": "The current zonal shift configuration to use for the cluster.", + "properties": { + "Enabled": { + "description": "Set this value to true to enable zonal shift for the cluster.", + "type": "boolean" + } + }, + "type": "object" + } + }, + "description": "An object representing an Amazon EKS cluster.", + "handlers": { + "create": { + "permissions": [ + "eks:CreateCluster", + "eks:DescribeCluster", + "eks:TagResource", + "eks:CreateAccessEntry", + "iam:PassRole", + "iam:GetRole", + "iam:ListAttachedRolePolicies", + "iam:CreateServiceLinkedRole", + "iam:CreateInstanceProfile", + "iam:TagInstanceProfile", + "iam:AddRoleToInstanceProfile", + "iam:GetInstanceProfile", + "iam:DeleteInstanceProfile", + "iam:RemoveRoleFromInstanceProfile", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "kms:DescribeKey", + "kms:CreateGrant" + ] + }, + "delete": { + "permissions": [ + "eks:DeleteCluster", + "eks:DescribeCluster" + ] + }, + "list": { + "permissions": [ + "eks:ListClusters" + ] + }, + "read": { + "permissions": [ + "eks:DescribeCluster" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "eks:UpdateClusterConfig", + "eks:UpdateClusterVersion", + "eks:DescribeCluster", + "eks:DescribeUpdate", + "eks:TagResource", + "eks:UntagResource" + ], + "timeoutInMinutes": 180 + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "AccessConfig": { + "$ref": "#/definitions/AccessConfig" + }, + "Arn": { + "description": "The ARN of the cluster, such as arn:aws:eks:us-west-2:666666666666:cluster/prod.", + "type": "string" + }, + "BootstrapSelfManagedAddons": { + "description": "Set this value to false to avoid creating the default networking add-ons when the cluster is created.", + "type": "boolean" + }, + "CertificateAuthorityData": { + "description": "The certificate-authority-data for your cluster.", + "type": "string" + }, + "ClusterSecurityGroupId": { + "description": "The cluster security group that was created by Amazon EKS for the cluster. Managed node groups use this security group for control plane to data plane communication.", + "type": "string" + }, + "ComputeConfig": { + "$ref": "#/definitions/ComputeConfig" + }, + "EncryptionConfig": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EncryptionConfig", + "maxItems": 1 + }, + "type": "array" + }, + "EncryptionConfigKeyArn": { + "description": "Amazon Resource Name (ARN) or alias of the customer master key (CMK).", + "type": "string" + }, + "Endpoint": { + "description": "The endpoint for your Kubernetes API server, such as https://5E1D0CEXAMPLEA591B746AFC5AB30262.yl4.us-west-2.eks.amazonaws.com.", + "type": "string" + }, + "Force": { + "default": false, + "description": "Force cluster version update", + "type": "boolean" + }, + "Id": { + "description": "The unique ID given to your cluster.", + "type": "string" + }, + "KubernetesNetworkConfig": { + "$ref": "#/definitions/KubernetesNetworkConfig" + }, + "Logging": { + "$ref": "#/definitions/Logging" + }, + "Name": { + "description": "The unique name to give to your cluster.", + "maxLength": 100, + "minLength": 1, + "pattern": "^[0-9A-Za-z][A-Za-z0-9\\-_]*", + "type": "string" + }, + "OpenIdConnectIssuerUrl": { + "description": "The issuer URL for the cluster's OIDC identity provider, such as https://oidc.eks.us-west-2.amazonaws.com/id/EXAMPLED539D4633E53DE1B716D3041E. If you need to remove https:// from this output value, you can include the following code in your template.", + "type": "string" + }, + "OutpostConfig": { + "$ref": "#/definitions/OutpostConfig" + }, + "RemoteNetworkConfig": { + "$ref": "#/definitions/RemoteNetworkConfig" + }, + "ResourcesVpcConfig": { + "$ref": "#/definitions/ResourcesVpcConfig" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf.", + "type": "string" + }, + "StorageConfig": { + "$ref": "#/definitions/StorageConfig" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "UpgradePolicy": { + "$ref": "#/definitions/UpgradePolicy" + }, + "Version": { + "description": "The desired Kubernetes version for your cluster. If you don't specify a value here, the latest version available in Amazon EKS is used.", + "pattern": "1\\.\\d\\d", + "type": "string" + }, + "ZonalShiftConfig": { + "$ref": "#/definitions/ZonalShiftConfig" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/Endpoint", + "/properties/CertificateAuthorityData", + "/properties/ClusterSecurityGroupId", + "/properties/EncryptionConfigKeyArn", + "/properties/OpenIdConnectIssuerUrl", + "/properties/KubernetesNetworkConfig/ServiceIpv6Cidr" + ], + "required": [ + "RoleArn", + "ResourcesVpcConfig" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eks.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "eks:TagResource", + "eks:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EKS::Cluster", + "writeOnlyProperties": [ + "/properties/AccessConfig/BootstrapClusterCreatorAdminPermissions", + "/properties/BootstrapSelfManagedAddons", + "/properties/Force" + ] +} diff --git a/src/schema/aws-eks-fargateprofile.json b/src/schema/aws-eks-fargateprofile.json index 5d5c5fcc..56681694 100644 --- a/src/schema/aws-eks-fargateprofile.json +++ b/src/schema/aws-eks-fargateprofile.json @@ -1,190 +1,189 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClusterName", - "/properties/FargateProfileName", - "/properties/PodExecutionRoleArn", - "/properties/Subnets", - "/properties/Selectors" - ], - "definitions": { - "Label": { - "additionalProperties": false, - "description": "A key-value pair to associate with a pod.", - "properties": { - "Key": { - "description": "The key name of the label.", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the label. ", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Selector": { - "additionalProperties": false, - "properties": { - "Labels": { - "items": { - "$ref": "#/definitions/Label" - }, - "type": "array" - }, - "Namespace": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Namespace" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Schema for AWS::EKS::FargateProfile", - "handlers": { - "create": { - "permissions": [ - "eks:CreateFargateProfile", - "eks:DescribeFargateProfile", - "iam:GetRole", - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "eks:TagResource" - ] - }, - "delete": { - "permissions": [ - "eks:DeleteFargateProfile", - "eks:DescribeFargateProfile" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ClusterName": { - "$ref": "resource-schema.json#/properties/ClusterName" - } - }, - "required": [ - "ClusterName" - ] - }, - "permissions": [ - "eks:ListFargateProfiles" - ] - }, - "read": { - "permissions": [ - "eks:DescribeFargateProfile" - ] - }, - "update": { - "permissions": [ - "eks:DescribeFargateProfile", - "eks:ListTagsForResource", - "eks:TagResource", - "eks:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ClusterName", - "/properties/FargateProfileName" - ], - "properties": { - "Arn": { - "type": "string" - }, - "ClusterName": { - "description": "Name of the Cluster", - "minLength": 1, - "type": "string" - }, - "FargateProfileName": { - "description": "Name of FargateProfile", - "minLength": 1, - "type": "string" - }, - "PodExecutionRoleArn": { - "description": "The IAM policy arn for pods", - "minLength": 1, - "type": "string" - }, - "Selectors": { - "items": { - "$ref": "#/definitions/Selector" - }, - "minItems": 1, - "type": "array" - }, - "Subnets": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "ClusterName", - "PodExecutionRoleArn", - "Selectors" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eks.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "eks:TagResource", - "eks:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EKS::FargateProfile" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterName", + "/properties/FargateProfileName", + "/properties/PodExecutionRoleArn", + "/properties/Subnets", + "/properties/Selectors" + ], + "definitions": { + "Label": { + "additionalProperties": false, + "description": "A key-value pair to associate with a pod.", + "properties": { + "Key": { + "description": "The key name of the label.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the label. ", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Selector": { + "additionalProperties": false, + "properties": { + "Labels": { + "items": { + "$ref": "#/definitions/Label" + }, + "type": "array" + }, + "Namespace": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Namespace" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Schema for AWS::EKS::FargateProfile", + "handlers": { + "create": { + "permissions": [ + "eks:CreateFargateProfile", + "eks:DescribeFargateProfile", + "iam:GetRole", + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "eks:TagResource" + ] + }, + "delete": { + "permissions": [ + "eks:DeleteFargateProfile", + "eks:DescribeFargateProfile" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ClusterName": { + "$ref": "resource-schema.json#/properties/ClusterName" + } + }, + "required": [ + "ClusterName" + ] + }, + "permissions": [ + "eks:ListFargateProfiles" + ] + }, + "read": { + "permissions": [ + "eks:DescribeFargateProfile" + ] + }, + "update": { + "permissions": [ + "eks:DescribeFargateProfile", + "eks:TagResource", + "eks:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ClusterName", + "/properties/FargateProfileName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "ClusterName": { + "description": "Name of the Cluster", + "minLength": 1, + "type": "string" + }, + "FargateProfileName": { + "description": "Name of FargateProfile", + "minLength": 1, + "type": "string" + }, + "PodExecutionRoleArn": { + "description": "The IAM policy arn for pods", + "minLength": 1, + "type": "string" + }, + "Selectors": { + "items": { + "$ref": "#/definitions/Selector" + }, + "minItems": 1, + "type": "array" + }, + "Subnets": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "ClusterName", + "PodExecutionRoleArn", + "Selectors" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eks.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "eks:TagResource", + "eks:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EKS::FargateProfile" +} diff --git a/src/schema/aws-eks-identityproviderconfig.json b/src/schema/aws-eks-identityproviderconfig.json index e341fe52..1b41d880 100644 --- a/src/schema/aws-eks-identityproviderconfig.json +++ b/src/schema/aws-eks-identityproviderconfig.json @@ -1,199 +1,203 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Oidc", - "/properties/Type", - "/properties/IdentityProviderConfigName", - "/properties/ClusterName" - ], - "definitions": { - "OidcIdentityProviderConfig": { - "additionalProperties": false, - "description": "An object representing an OpenID Connect (OIDC) configuration.", - "properties": { - "ClientId": { - "description": "This is also known as audience. The ID for the client application that makes authentication requests to the OpenID identity provider.", - "type": "string" - }, - "GroupsClaim": { - "description": "The JWT claim that the provider uses to return your groups.", - "type": "string" - }, - "GroupsPrefix": { - "description": "The prefix that is prepended to group claims to prevent clashes with existing names (such as system: groups).", - "type": "string" - }, - "IssuerUrl": { - "description": "The URL of the OpenID identity provider that allows the API server to discover public signing keys for verifying tokens.", - "type": "string" - }, - "RequiredClaims": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RequiredClaim" - }, - "type": "array", - "uniqueItems": true - }, - "UsernameClaim": { - "description": "The JSON Web Token (JWT) claim to use as the username. The default is sub, which is expected to be a unique identifier of the end user. You can choose other claims, such as email or name, depending on the OpenID identity provider. Claims other than email are prefixed with the issuer URL to prevent naming clashes with other plug-ins.", - "type": "string" - }, - "UsernamePrefix": { - "description": "The prefix that is prepended to username claims to prevent clashes with existing names. If you do not provide this field, and username is a value other than email, the prefix defaults to issuerurl#. You can use the value - to disable all prefixing.", - "type": "string" - } - }, - "required": [ - "ClientId", - "IssuerUrl" - ], - "type": "object" - }, - "RequiredClaim": { - "additionalProperties": false, - "description": "The key value pairs that describe required claims in the identity token. If set, each claim is verified to be present in the token with a matching value.", - "properties": { - "Key": { - "description": "The key of the requiredClaims.", - "maxLength": 63, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the requiredClaims.", - "maxLength": 253, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "An object representing an Amazon EKS IdentityProviderConfig.", - "handlers": { - "create": { - "permissions": [ - "eks:DescribeUpdate", - "eks:AssociateIdentityProviderConfig", - "eks:DescribeIdentityProviderConfig", - "eks:TagResource" - ] - }, - "delete": { - "permissions": [ - "eks:DisassociateIdentityProviderConfig", - "eks:DescribeIdentityProviderConfig" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ClusterName": { - "$ref": "resource-schema.json#/properties/ClusterName" - } - }, - "required": [ - "ClusterName" - ] - }, - "permissions": [ - "eks:ListIdentityProviderConfigs" - ] - }, - "read": { - "permissions": [ - "eks:DescribeIdentityProviderConfig" - ] - }, - "update": { - "permissions": [ - "eks:DescribeIdentityProviderConfig", - "eks:TagResource", - "eks:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentityProviderConfigName", - "/properties/ClusterName", - "/properties/Type" - ], - "properties": { - "ClusterName": { - "description": "The name of the identity provider configuration.", - "type": "string" - }, - "IdentityProviderConfigArn": { - "description": "The ARN of the configuration.", - "type": "string" - }, - "IdentityProviderConfigName": { - "description": "The name of the OIDC provider configuration.", - "type": "string" - }, - "Oidc": { - "$ref": "#/definitions/OidcIdentityProviderConfig" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "description": "The type of the identity provider configuration.", - "enum": [ - "oidc" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/IdentityProviderConfigArn" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "Type", - "ClusterName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eks.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EKS::IdentityProviderConfig" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Oidc", + "/properties/Type", + "/properties/IdentityProviderConfigName", + "/properties/ClusterName" + ], + "definitions": { + "OidcIdentityProviderConfig": { + "additionalProperties": false, + "description": "An object representing an OpenID Connect (OIDC) configuration.", + "properties": { + "ClientId": { + "description": "This is also known as audience. The ID for the client application that makes authentication requests to the OpenID identity provider.", + "type": "string" + }, + "GroupsClaim": { + "description": "The JWT claim that the provider uses to return your groups.", + "type": "string" + }, + "GroupsPrefix": { + "description": "The prefix that is prepended to group claims to prevent clashes with existing names (such as system: groups).", + "type": "string" + }, + "IssuerUrl": { + "description": "The URL of the OpenID identity provider that allows the API server to discover public signing keys for verifying tokens.", + "type": "string" + }, + "RequiredClaims": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RequiredClaim" + }, + "type": "array", + "uniqueItems": true + }, + "UsernameClaim": { + "description": "The JSON Web Token (JWT) claim to use as the username. The default is sub, which is expected to be a unique identifier of the end user. You can choose other claims, such as email or name, depending on the OpenID identity provider. Claims other than email are prefixed with the issuer URL to prevent naming clashes with other plug-ins.", + "type": "string" + }, + "UsernamePrefix": { + "description": "The prefix that is prepended to username claims to prevent clashes with existing names. If you do not provide this field, and username is a value other than email, the prefix defaults to issuerurl#. You can use the value - to disable all prefixing.", + "type": "string" + } + }, + "required": [ + "ClientId", + "IssuerUrl" + ], + "type": "object" + }, + "RequiredClaim": { + "additionalProperties": false, + "description": "The key value pairs that describe required claims in the identity token. If set, each claim is verified to be present in the token with a matching value.", + "properties": { + "Key": { + "description": "The key of the requiredClaims.", + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the requiredClaims.", + "maxLength": 253, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "An object representing an Amazon EKS IdentityProviderConfig.", + "handlers": { + "create": { + "permissions": [ + "eks:DescribeUpdate", + "eks:AssociateIdentityProviderConfig", + "eks:DescribeIdentityProviderConfig", + "eks:TagResource" + ] + }, + "delete": { + "permissions": [ + "eks:DisassociateIdentityProviderConfig", + "eks:DescribeIdentityProviderConfig" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ClusterName": { + "$ref": "resource-schema.json#/properties/ClusterName" + } + }, + "required": [ + "ClusterName" + ] + }, + "permissions": [ + "eks:ListIdentityProviderConfigs" + ] + }, + "read": { + "permissions": [ + "eks:DescribeIdentityProviderConfig" + ] + }, + "update": { + "permissions": [ + "eks:DescribeIdentityProviderConfig", + "eks:TagResource", + "eks:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentityProviderConfigName", + "/properties/ClusterName", + "/properties/Type" + ], + "properties": { + "ClusterName": { + "description": "The name of the identity provider configuration.", + "type": "string" + }, + "IdentityProviderConfigArn": { + "description": "The ARN of the configuration.", + "type": "string" + }, + "IdentityProviderConfigName": { + "description": "The name of the OIDC provider configuration.", + "type": "string" + }, + "Oidc": { + "$ref": "#/definitions/OidcIdentityProviderConfig" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "The type of the identity provider configuration.", + "enum": [ + "oidc" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/IdentityProviderConfigArn" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "Type", + "ClusterName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eks.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "eks:TagResource", + "eks:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EKS::IdentityProviderConfig" +} diff --git a/src/schema/aws-eks-nodegroup.json b/src/schema/aws-eks-nodegroup.json index c487f4e9..1d42120d 100644 --- a/src/schema/aws-eks-nodegroup.json +++ b/src/schema/aws-eks-nodegroup.json @@ -1,313 +1,332 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CapacityType", - "/properties/NodegroupName", - "/properties/RemoteAccess", - "/properties/NodeRole", - "/properties/ClusterName", - "/properties/InstanceTypes", - "/properties/DiskSize", - "/properties/AmiType", - "/properties/Subnets" - ], - "definitions": { - "LaunchTemplateSpecification": { - "additionalProperties": false, - "description": "An object representing a launch template specification for AWS EKS Nodegroup.", - "properties": { - "Id": { - "minLength": 1, - "type": "string" - }, - "Name": { - "minLength": 1, - "type": "string" - }, - "Version": { - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "RemoteAccess": { - "additionalProperties": false, - "description": "An object representing a remote access configuration specification for AWS EKS Nodegroup.", - "properties": { - "Ec2SshKey": { - "type": "string" - }, - "SourceSecurityGroups": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Ec2SshKey" - ], - "type": "object" - }, - "ScalingConfig": { - "additionalProperties": false, - "description": "An object representing a auto scaling group specification for AWS EKS Nodegroup.", - "properties": { - "DesiredSize": { - "minimum": 0, - "type": "integer" - }, - "MaxSize": { - "minimum": 1, - "type": "integer" - }, - "MinSize": { - "minimum": 0, - "type": "integer" - } - }, - "type": "object" - }, - "Taint": { - "additionalProperties": false, - "description": "An object representing a Taint specification for AWS EKS Nodegroup.", - "properties": { - "Effect": { - "minLength": 1, - "type": "string" - }, - "Key": { - "minLength": 1, - "type": "string" - }, - "Value": { - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "UpdateConfig": { - "additionalProperties": false, - "description": "The node group update configuration.", - "properties": { - "MaxUnavailable": { - "description": "The maximum number of nodes unavailable at once during a version update. Nodes will be updated in parallel. This value or maxUnavailablePercentage is required to have a value.The maximum number is 100. ", - "minimum": 1, - "type": "number" - }, - "MaxUnavailablePercentage": { - "description": "The maximum percentage of nodes unavailable during a version update. This percentage of nodes will be updated in parallel, up to 100 nodes at once. This value or maxUnavailable is required to have a value.", - "maximum": 100, - "minimum": 1, - "type": "number" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::EKS::Nodegroup", - "handlers": { - "create": { - "permissions": [ - "eks:CreateNodegroup", - "eks:DescribeNodegroup", - "eks:TagResource", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "ec2:DescribeSecurityGroups", - "ec2:DescribeKeyPairs", - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:DescribeRouteTables", - "ec2:DescribeLaunchTemplates", - "ec2:DescribeLaunchTemplateVersions", - "ec2:RunInstances", - "iam:CreateServiceLinkedRole", - "iam:GetRole", - "iam:PassRole", - "iam:ListAttachedRolePolicies" - ] - }, - "delete": { - "permissions": [ - "eks:DeleteNodegroup", - "eks:DescribeNodegroup" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ClusterName": { - "$ref": "resource-schema.json#/properties/ClusterName" - } - }, - "required": [ - "ClusterName" - ] - }, - "permissions": [ - "eks:ListNodegroups" - ] - }, - "read": { - "permissions": [ - "eks:DescribeNodegroup" - ] - }, - "update": { - "permissions": [ - "iam:GetRole", - "iam:PassRole", - "eks:DescribeNodegroup", - "eks:DescribeUpdate", - "eks:ListUpdates", - "eks:TagResource", - "eks:UntagResource", - "eks:UpdateNodegroupConfig", - "eks:UpdateNodegroupVersion" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AmiType": { - "description": "The AMI type for your node group.", - "type": "string" - }, - "Arn": { - "type": "string" - }, - "CapacityType": { - "description": "The capacity type of your managed node group.", - "type": "string" - }, - "ClusterName": { - "description": "Name of the cluster to create the node group in.", - "minLength": 1, - "type": "string" - }, - "DiskSize": { - "description": "The root device disk size (in GiB) for your node group instances.", - "type": "integer" - }, - "ForceUpdateEnabled": { - "default": false, - "description": "Force the update if the existing node group's pods are unable to be drained due to a pod disruption budget issue.", - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "InstanceTypes": { - "description": "Specify the instance types for a node group.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Labels": { - "additionalProperties": false, - "description": "The Kubernetes labels to be applied to the nodes in the node group when they are created.", - "patternProperties": { - "^.+$": { - "type": "string" - } - }, - "type": "object" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification", - "description": "An object representing a node group's launch template specification." - }, - "NodeRole": { - "description": "The Amazon Resource Name (ARN) of the IAM role to associate with your node group.", - "type": "string" - }, - "NodegroupName": { - "description": "The unique name to give your node group.", - "minLength": 1, - "type": "string" - }, - "ReleaseVersion": { - "description": "The AMI version of the Amazon EKS-optimized AMI to use with your node group.", - "type": "string" - }, - "RemoteAccess": { - "$ref": "#/definitions/RemoteAccess", - "description": "The remote access (SSH) configuration to use with your node group." - }, - "ScalingConfig": { - "$ref": "#/definitions/ScalingConfig", - "description": "The scaling configuration details for the Auto Scaling group that is created for your node group." - }, - "Subnets": { - "description": "The subnets to use for the Auto Scaling group that is created for your node group.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "additionalProperties": false, - "description": "The metadata, as key-value pairs, to apply to the node group to assist with categorization and organization. Follows same schema as Labels for consistency.", - "patternProperties": { - "^.+$": { - "type": "string" - } - }, - "type": "object" - }, - "Taints": { - "description": "The Kubernetes taints to be applied to the nodes in the node group when they are created.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Taint" - }, - "type": "array" - }, - "UpdateConfig": { - "$ref": "#/definitions/UpdateConfig", - "description": "The node group update configuration." - }, - "Version": { - "description": "The Kubernetes version to use for your managed nodes.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "ClusterName", - "NodeRole", - "Subnets" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "eks:TagResource", - "eks:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EKS::Nodegroup", - "writeOnlyProperties": [ - "/properties/ForceUpdateEnabled" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CapacityType", + "/properties/NodegroupName", + "/properties/RemoteAccess", + "/properties/NodeRole", + "/properties/ClusterName", + "/properties/InstanceTypes", + "/properties/DiskSize", + "/properties/AmiType", + "/properties/Subnets" + ], + "definitions": { + "LaunchTemplateSpecification": { + "additionalProperties": false, + "description": "An object representing a launch template specification for AWS EKS Nodegroup.", + "properties": { + "Id": { + "minLength": 1, + "type": "string" + }, + "Name": { + "minLength": 1, + "type": "string" + }, + "Version": { + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "NodeRepairConfig": { + "additionalProperties": false, + "description": "The node auto repair configuration for node group.", + "properties": { + "Enabled": { + "description": "Set this value to true to enable node auto repair for the node group.", + "type": "boolean" + } + }, + "type": "object" + }, + "RemoteAccess": { + "additionalProperties": false, + "description": "An object representing a remote access configuration specification for AWS EKS Nodegroup.", + "properties": { + "Ec2SshKey": { + "type": "string" + }, + "SourceSecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Ec2SshKey" + ], + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "description": "An object representing a auto scaling group specification for AWS EKS Nodegroup.", + "properties": { + "DesiredSize": { + "minimum": 0, + "type": "integer" + }, + "MaxSize": { + "minimum": 1, + "type": "integer" + }, + "MinSize": { + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "Taint": { + "additionalProperties": false, + "description": "An object representing a Taint specification for AWS EKS Nodegroup.", + "properties": { + "Effect": { + "minLength": 1, + "type": "string" + }, + "Key": { + "minLength": 1, + "type": "string" + }, + "Value": { + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "UpdateConfig": { + "additionalProperties": false, + "description": "The node group update configuration.", + "properties": { + "MaxUnavailable": { + "description": "The maximum number of nodes unavailable at once during a version update. Nodes will be updated in parallel. This value or maxUnavailablePercentage is required to have a value.The maximum number is 100. ", + "minimum": 1, + "type": "number" + }, + "MaxUnavailablePercentage": { + "description": "The maximum percentage of nodes unavailable during a version update. This percentage of nodes will be updated in parallel, up to 100 nodes at once. This value or maxUnavailable is required to have a value.", + "maximum": 100, + "minimum": 1, + "type": "number" + }, + "UpdateStrategy": { + "description": "The configuration for the behavior to follow during an node group version update of this managed node group. You choose between two possible strategies for replacing nodes during an UpdateNodegroupVersion action.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::EKS::Nodegroup", + "handlers": { + "create": { + "permissions": [ + "eks:CreateNodegroup", + "eks:DescribeNodegroup", + "eks:TagResource", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "ec2:DescribeSecurityGroups", + "ec2:DescribeKeyPairs", + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeRouteTables", + "ec2:DescribeLaunchTemplates", + "ec2:DescribeLaunchTemplateVersions", + "ec2:RunInstances", + "iam:CreateServiceLinkedRole", + "iam:GetRole", + "iam:PassRole", + "iam:ListAttachedRolePolicies" + ] + }, + "delete": { + "permissions": [ + "eks:DeleteNodegroup", + "eks:DescribeNodegroup" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ClusterName": { + "$ref": "resource-schema.json#/properties/ClusterName" + } + }, + "required": [ + "ClusterName" + ] + }, + "permissions": [ + "eks:ListNodegroups" + ] + }, + "read": { + "permissions": [ + "eks:DescribeNodegroup" + ] + }, + "update": { + "permissions": [ + "iam:GetRole", + "iam:PassRole", + "eks:DescribeNodegroup", + "eks:DescribeUpdate", + "eks:ListUpdates", + "eks:TagResource", + "eks:UntagResource", + "eks:UpdateNodegroupConfig", + "eks:UpdateNodegroupVersion" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmiType": { + "description": "The AMI type for your node group.", + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CapacityType": { + "description": "The capacity type of your managed node group.", + "type": "string" + }, + "ClusterName": { + "description": "Name of the cluster to create the node group in.", + "minLength": 1, + "type": "string" + }, + "DiskSize": { + "description": "The root device disk size (in GiB) for your node group instances.", + "type": "integer" + }, + "ForceUpdateEnabled": { + "default": false, + "description": "Force the update if the existing node group's pods are unable to be drained due to a pod disruption budget issue.", + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceTypes": { + "description": "Specify the instance types for a node group.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Labels": { + "additionalProperties": false, + "description": "The Kubernetes labels to be applied to the nodes in the node group when they are created.", + "patternProperties": { + "^.+$": { + "type": "string" + } + }, + "type": "object" + }, + "LaunchTemplate": { + "$ref": "#/definitions/LaunchTemplateSpecification", + "description": "An object representing a node group's launch template specification." + }, + "NodeRepairConfig": { + "$ref": "#/definitions/NodeRepairConfig", + "description": "The node auto repair configuration for node group." + }, + "NodeRole": { + "description": "The Amazon Resource Name (ARN) of the IAM role to associate with your node group.", + "type": "string" + }, + "NodegroupName": { + "description": "The unique name to give your node group.", + "minLength": 1, + "type": "string" + }, + "ReleaseVersion": { + "description": "The AMI version of the Amazon EKS-optimized AMI to use with your node group.", + "type": "string" + }, + "RemoteAccess": { + "$ref": "#/definitions/RemoteAccess", + "description": "The remote access (SSH) configuration to use with your node group." + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig", + "description": "The scaling configuration details for the Auto Scaling group that is created for your node group." + }, + "Subnets": { + "description": "The subnets to use for the Auto Scaling group that is created for your node group.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "additionalProperties": false, + "description": "The metadata, as key-value pairs, to apply to the node group to assist with categorization and organization. Follows same schema as Labels for consistency.", + "patternProperties": { + "^.+$": { + "type": "string" + } + }, + "type": "object" + }, + "Taints": { + "description": "The Kubernetes taints to be applied to the nodes in the node group when they are created.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Taint" + }, + "type": "array" + }, + "UpdateConfig": { + "$ref": "#/definitions/UpdateConfig", + "description": "The node group update configuration." + }, + "Version": { + "description": "The Kubernetes version to use for your managed nodes.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "ClusterName", + "NodeRole", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "eks:TagResource", + "eks:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EKS::Nodegroup", + "writeOnlyProperties": [ + "/properties/ForceUpdateEnabled" + ] +} diff --git a/src/schema/aws-eks-podidentityassociation.json b/src/schema/aws-eks-podidentityassociation.json index c517a632..befa8b3b 100644 --- a/src/schema/aws-eks-podidentityassociation.json +++ b/src/schema/aws-eks-podidentityassociation.json @@ -1,145 +1,145 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClusterName", - "/properties/Namespace", - "/properties/ServiceAccount" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "An object representing an Amazon EKS PodIdentityAssociation.", - "handlers": { - "create": { - "permissions": [ - "eks:CreatePodIdentityAssociation", - "eks:DescribePodIdentityAssociation", - "eks:TagResource", - "iam:PassRole", - "iam:GetRole" - ] - }, - "delete": { - "permissions": [ - "eks:DeletePodIdentityAssociation", - "eks:DescribePodIdentityAssociation" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ClusterName": { - "$ref": "resource-schema.json#/properties/ClusterName" - } - }, - "required": [ - "ClusterName" - ] - }, - "permissions": [ - "eks:ListPodIdentityAssociations" - ] - }, - "read": { - "permissions": [ - "eks:DescribePodIdentityAssociation" - ] - }, - "update": { - "permissions": [ - "eks:DescribePodIdentityAssociation", - "eks:UpdatePodIdentityAssociation", - "eks:TagResource", - "eks:UntagResource", - "iam:PassRole", - "iam:GetRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/AssociationArn" - ], - "properties": { - "AssociationArn": { - "description": "The ARN of the pod identity association.", - "type": "string" - }, - "AssociationId": { - "description": "The ID of the pod identity association.", - "minLength": 1, - "type": "string" - }, - "ClusterName": { - "description": "The cluster that the pod identity association is created for.", - "minLength": 1, - "type": "string" - }, - "Namespace": { - "description": "The Kubernetes namespace that the pod identity association is created for.", - "type": "string" - }, - "RoleArn": { - "description": "The IAM role ARN that the pod identity association is created for.", - "type": "string" - }, - "ServiceAccount": { - "description": "The Kubernetes service account that the pod identity association is created for.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/AssociationArn", - "/properties/AssociationId" - ], - "replacementStrategy": "create_then_delete", - "required": [ - "ClusterName", - "RoleArn", - "Namespace", - "ServiceAccount" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eks.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "eks:TagResource", - "eks:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EKS::PodIdentityAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterName", + "/properties/Namespace", + "/properties/ServiceAccount" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "An object representing an Amazon EKS PodIdentityAssociation.", + "handlers": { + "create": { + "permissions": [ + "eks:CreatePodIdentityAssociation", + "eks:DescribePodIdentityAssociation", + "eks:TagResource", + "iam:PassRole", + "iam:GetRole" + ] + }, + "delete": { + "permissions": [ + "eks:DeletePodIdentityAssociation", + "eks:DescribePodIdentityAssociation" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ClusterName": { + "$ref": "resource-schema.json#/properties/ClusterName" + } + }, + "required": [ + "ClusterName" + ] + }, + "permissions": [ + "eks:ListPodIdentityAssociations" + ] + }, + "read": { + "permissions": [ + "eks:DescribePodIdentityAssociation" + ] + }, + "update": { + "permissions": [ + "eks:DescribePodIdentityAssociation", + "eks:UpdatePodIdentityAssociation", + "eks:TagResource", + "eks:UntagResource", + "iam:PassRole", + "iam:GetRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/AssociationArn" + ], + "properties": { + "AssociationArn": { + "description": "The ARN of the pod identity association.", + "type": "string" + }, + "AssociationId": { + "description": "The ID of the pod identity association.", + "minLength": 1, + "type": "string" + }, + "ClusterName": { + "description": "The cluster that the pod identity association is created for.", + "minLength": 1, + "type": "string" + }, + "Namespace": { + "description": "The Kubernetes namespace that the pod identity association is created for.", + "type": "string" + }, + "RoleArn": { + "description": "The IAM role ARN that the pod identity association is created for.", + "type": "string" + }, + "ServiceAccount": { + "description": "The Kubernetes service account that the pod identity association is created for.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/AssociationArn", + "/properties/AssociationId" + ], + "replacementStrategy": "create_then_delete", + "required": [ + "ClusterName", + "RoleArn", + "Namespace", + "ServiceAccount" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eks.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "eks:TagResource", + "eks:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EKS::PodIdentityAssociation" +} diff --git a/src/schema/aws-elasticache-cachecluster.json b/src/schema/aws-elasticache-cachecluster.json index d3d8fec1..d4b25b56 100644 --- a/src/schema/aws-elasticache-cachecluster.json +++ b/src/schema/aws-elasticache-cachecluster.json @@ -1,223 +1,223 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Port", - "/properties/SnapshotArns", - "/properties/SnapshotName", - "/properties/CacheSubnetGroupName", - "/properties/ClusterName", - "/properties/NetworkType", - "/properties/Engine" - ], - "definitions": { - "CloudWatchLogsDestinationDetails": { - "additionalProperties": false, - "properties": { - "LogGroup": { - "type": "string" - } - }, - "required": [ - "LogGroup" - ], - "type": "object" - }, - "DestinationDetails": { - "additionalProperties": false, - "properties": { - "CloudWatchLogsDetails": { - "$ref": "#/definitions/CloudWatchLogsDestinationDetails" - }, - "KinesisFirehoseDetails": { - "$ref": "#/definitions/KinesisFirehoseDestinationDetails" - } - }, - "type": "object" - }, - "KinesisFirehoseDestinationDetails": { - "additionalProperties": false, - "properties": { - "DeliveryStream": { - "type": "string" - } - }, - "required": [ - "DeliveryStream" - ], - "type": "object" - }, - "LogDeliveryConfigurationRequest": { - "additionalProperties": false, - "properties": { - "DestinationDetails": { - "$ref": "#/definitions/DestinationDetails" - }, - "DestinationType": { - "type": "string" - }, - "LogFormat": { - "type": "string" - }, - "LogType": { - "type": "string" - } - }, - "required": [ - "LogFormat", - "LogType", - "DestinationType", - "DestinationDetails" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ElastiCache::CacheCluster", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AZMode": { - "type": "string" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "CacheNodeType": { - "type": "string" - }, - "CacheParameterGroupName": { - "type": "string" - }, - "CacheSecurityGroupNames": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "CacheSubnetGroupName": { - "type": "string" - }, - "ClusterName": { - "type": "string" - }, - "ConfigurationEndpointAddress": { - "type": "string" - }, - "ConfigurationEndpointPort": { - "type": "string" - }, - "Engine": { - "type": "string" - }, - "EngineVersion": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "IpDiscovery": { - "type": "string" - }, - "LogDeliveryConfigurations": { - "items": { - "$ref": "#/definitions/LogDeliveryConfigurationRequest" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkType": { - "type": "string" - }, - "NotificationTopicArn": { - "type": "string" - }, - "NumCacheNodes": { - "type": "integer" - }, - "Port": { - "type": "integer" - }, - "PreferredAvailabilityZone": { - "type": "string" - }, - "PreferredAvailabilityZones": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "RedisEndpointAddress": { - "type": "string" - }, - "RedisEndpointPort": { - "type": "string" - }, - "SnapshotArns": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "SnapshotName": { - "type": "string" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TransitEncryptionEnabled": { - "type": "boolean" - }, - "VpcSecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ConfigurationEndpoint.Address", - "/properties/Id", - "/properties/ConfigurationEndpoint.Port", - "/properties/RedisEndpoint.Port", - "/properties/RedisEndpoint.Address" - ], - "required": [ - "CacheNodeType", - "NumCacheNodes", - "Engine" - ], - "typeName": "AWS::ElastiCache::CacheCluster" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Port", + "/properties/SnapshotArns", + "/properties/SnapshotName", + "/properties/CacheSubnetGroupName", + "/properties/ClusterName", + "/properties/NetworkType", + "/properties/Engine" + ], + "definitions": { + "CloudWatchLogsDestinationDetails": { + "additionalProperties": false, + "properties": { + "LogGroup": { + "type": "string" + } + }, + "required": [ + "LogGroup" + ], + "type": "object" + }, + "DestinationDetails": { + "additionalProperties": false, + "properties": { + "CloudWatchLogsDetails": { + "$ref": "#/definitions/CloudWatchLogsDestinationDetails" + }, + "KinesisFirehoseDetails": { + "$ref": "#/definitions/KinesisFirehoseDestinationDetails" + } + }, + "type": "object" + }, + "KinesisFirehoseDestinationDetails": { + "additionalProperties": false, + "properties": { + "DeliveryStream": { + "type": "string" + } + }, + "required": [ + "DeliveryStream" + ], + "type": "object" + }, + "LogDeliveryConfigurationRequest": { + "additionalProperties": false, + "properties": { + "DestinationDetails": { + "$ref": "#/definitions/DestinationDetails" + }, + "DestinationType": { + "type": "string" + }, + "LogFormat": { + "type": "string" + }, + "LogType": { + "type": "string" + } + }, + "required": [ + "LogFormat", + "LogType", + "DestinationType", + "DestinationDetails" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ElastiCache::CacheCluster", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AZMode": { + "type": "string" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "CacheNodeType": { + "type": "string" + }, + "CacheParameterGroupName": { + "type": "string" + }, + "CacheSecurityGroupNames": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "CacheSubnetGroupName": { + "type": "string" + }, + "ClusterName": { + "type": "string" + }, + "ConfigurationEndpointAddress": { + "type": "string" + }, + "ConfigurationEndpointPort": { + "type": "string" + }, + "Engine": { + "type": "string" + }, + "EngineVersion": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpDiscovery": { + "type": "string" + }, + "LogDeliveryConfigurations": { + "items": { + "$ref": "#/definitions/LogDeliveryConfigurationRequest" + }, + "type": "array", + "uniqueItems": true + }, + "NetworkType": { + "type": "string" + }, + "NotificationTopicArn": { + "type": "string" + }, + "NumCacheNodes": { + "type": "integer" + }, + "Port": { + "type": "integer" + }, + "PreferredAvailabilityZone": { + "type": "string" + }, + "PreferredAvailabilityZones": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "PreferredMaintenanceWindow": { + "type": "string" + }, + "RedisEndpointAddress": { + "type": "string" + }, + "RedisEndpointPort": { + "type": "string" + }, + "SnapshotArns": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SnapshotName": { + "type": "string" + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TransitEncryptionEnabled": { + "type": "boolean" + }, + "VpcSecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ConfigurationEndpoint.Address", + "/properties/Id", + "/properties/ConfigurationEndpoint.Port", + "/properties/RedisEndpoint.Port", + "/properties/RedisEndpoint.Address" + ], + "required": [ + "CacheNodeType", + "NumCacheNodes", + "Engine" + ], + "typeName": "AWS::ElastiCache::CacheCluster" +} diff --git a/src/schema/aws-elasticache-globalreplicationgroup.json b/src/schema/aws-elasticache-globalreplicationgroup.json index 55cd4586..19c51999 100644 --- a/src/schema/aws-elasticache-globalreplicationgroup.json +++ b/src/schema/aws-elasticache-globalreplicationgroup.json @@ -1,183 +1,183 @@ -{ - "additionalProperties": false, - "definitions": { - "GlobalReplicationGroupMember": { - "additionalProperties": false, - "properties": { - "ReplicationGroupId": { - "description": "Regionally unique identifier for the member i.e. ReplicationGroupId.", - "type": "string" - }, - "ReplicationGroupRegion": { - "description": "The AWS region of the Global Datastore member.", - "type": "string" - }, - "Role": { - "description": "Indicates the role of the member, primary or secondary.", - "enum": [ - "PRIMARY", - "SECONDARY" - ], - "type": "string" - } - }, - "type": "object" - }, - "RegionalConfiguration": { - "additionalProperties": false, - "properties": { - "ReplicationGroupId": { - "description": "The replication group id of the Global Datastore member.", - "type": "string" - }, - "ReplicationGroupRegion": { - "description": "The AWS region of the Global Datastore member.", - "type": "string" - }, - "ReshardingConfigurations": { - "description": "A list of PreferredAvailabilityZones objects that specifies the configuration of a node group in the resharded cluster. ", - "items": { - "$ref": "#/definitions/ReshardingConfiguration" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "ReshardingConfiguration": { - "additionalProperties": false, - "properties": { - "NodeGroupId": { - "description": "Unique identifier for the Node Group. This is either auto-generated by ElastiCache (4-digit id) or a user supplied id.", - "type": "string" - }, - "PreferredAvailabilityZones": { - "description": "A list of preferred availability zones for the nodes of new node groups.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - } - }, - "description": "The AWS::ElastiCache::GlobalReplicationGroup resource creates an Amazon ElastiCache Global Replication Group.", - "handlers": { - "create": { - "permissions": [ - "elasticache:CreateGlobalReplicationGroup", - "elasticache:DescribeGlobalReplicationGroups" - ] - }, - "delete": { - "permissions": [ - "elasticache:DeleteGlobalReplicationGroup", - "elasticache:DisassociateGlobalReplicationGroup", - "elasticache:DescribeGlobalReplicationGroups" - ] - }, - "list": { - "permissions": [ - "elasticache:DescribeGlobalReplicationGroups" - ] - }, - "read": { - "permissions": [ - "elasticache:DescribeGlobalReplicationGroups" - ] - }, - "update": { - "permissions": [ - "elasticache:ModifyGlobalReplicationGroup", - "elasticache:FailoverGlobalReplicationGroup", - "elasticache:DescribeGlobalReplicationGroups", - "elasticache:IncreaseNodeGroupsInGlobalReplicationGroup", - "elasticache:DecreaseNodeGroupsInGlobalReplicationGroup", - "elasticache:DisassociateGlobalReplicationGroup", - "elasticache:RebalanceSlotsInGlobalReplicationGroup" - ] - } - }, - "primaryIdentifier": [ - "/properties/GlobalReplicationGroupId" - ], - "properties": { - "AutomaticFailoverEnabled": { - "description": "AutomaticFailoverEnabled", - "type": "boolean" - }, - "CacheNodeType": { - "description": "The cache node type of the Global Datastore", - "type": "string" - }, - "CacheParameterGroupName": { - "description": "Cache parameter group name to use for the new engine version. This parameter cannot be modified independently.", - "type": "string" - }, - "Engine": { - "description": "The engine of the Global Datastore.", - "type": "string" - }, - "EngineVersion": { - "description": "The engine version of the Global Datastore.", - "type": "string" - }, - "GlobalNodeGroupCount": { - "description": "Indicates the number of node groups in the Global Datastore.", - "type": "integer" - }, - "GlobalReplicationGroupDescription": { - "description": "The optional description of the Global Datastore", - "type": "string" - }, - "GlobalReplicationGroupId": { - "description": "The name of the Global Datastore, it is generated by ElastiCache adding a prefix to GlobalReplicationGroupIdSuffix.", - "type": "string" - }, - "GlobalReplicationGroupIdSuffix": { - "description": "The suffix name of a Global Datastore. Amazon ElastiCache automatically applies a prefix to the Global Datastore ID when it is created. Each AWS Region has its own prefix. ", - "type": "string" - }, - "Members": { - "description": "The replication groups that comprise the Global Datastore.", - "items": { - "$ref": "#/definitions/GlobalReplicationGroupMember" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "RegionalConfigurations": { - "description": "Describes the replication group IDs, the AWS regions where they are stored and the shard configuration for each that comprise the Global Datastore ", - "items": { - "$ref": "#/definitions/RegionalConfiguration" - }, - "type": "array", - "uniqueItems": true - }, - "Status": { - "description": "The status of the Global Datastore", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/GlobalReplicationGroupId", - "/properties/Status" - ], - "required": [ - "Members" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", - "typeName": "AWS::ElastiCache::GlobalReplicationGroup", - "writeOnlyProperties": [ - "/properties/GlobalReplicationGroupIdSuffix", - "/properties/AutomaticFailoverEnabled", - "/properties/CacheNodeType", - "/properties/EngineVersion", - "/properties/GlobalNodeGroupCount", - "/properties/RegionalConfigurations" - ] -} +{ + "additionalProperties": false, + "definitions": { + "GlobalReplicationGroupMember": { + "additionalProperties": false, + "properties": { + "ReplicationGroupId": { + "description": "Regionally unique identifier for the member i.e. ReplicationGroupId.", + "type": "string" + }, + "ReplicationGroupRegion": { + "description": "The AWS region of the Global Datastore member.", + "type": "string" + }, + "Role": { + "description": "Indicates the role of the member, primary or secondary.", + "enum": [ + "PRIMARY", + "SECONDARY" + ], + "type": "string" + } + }, + "type": "object" + }, + "RegionalConfiguration": { + "additionalProperties": false, + "properties": { + "ReplicationGroupId": { + "description": "The replication group id of the Global Datastore member.", + "type": "string" + }, + "ReplicationGroupRegion": { + "description": "The AWS region of the Global Datastore member.", + "type": "string" + }, + "ReshardingConfigurations": { + "description": "A list of PreferredAvailabilityZones objects that specifies the configuration of a node group in the resharded cluster. ", + "items": { + "$ref": "#/definitions/ReshardingConfiguration" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ReshardingConfiguration": { + "additionalProperties": false, + "properties": { + "NodeGroupId": { + "description": "Unique identifier for the Node Group. This is either auto-generated by ElastiCache (4-digit id) or a user supplied id.", + "type": "string" + }, + "PreferredAvailabilityZones": { + "description": "A list of preferred availability zones for the nodes of new node groups.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "description": "The AWS::ElastiCache::GlobalReplicationGroup resource creates an Amazon ElastiCache Global Replication Group.", + "handlers": { + "create": { + "permissions": [ + "elasticache:CreateGlobalReplicationGroup", + "elasticache:DescribeGlobalReplicationGroups" + ] + }, + "delete": { + "permissions": [ + "elasticache:DeleteGlobalReplicationGroup", + "elasticache:DisassociateGlobalReplicationGroup", + "elasticache:DescribeGlobalReplicationGroups" + ] + }, + "list": { + "permissions": [ + "elasticache:DescribeGlobalReplicationGroups" + ] + }, + "read": { + "permissions": [ + "elasticache:DescribeGlobalReplicationGroups" + ] + }, + "update": { + "permissions": [ + "elasticache:ModifyGlobalReplicationGroup", + "elasticache:FailoverGlobalReplicationGroup", + "elasticache:DescribeGlobalReplicationGroups", + "elasticache:IncreaseNodeGroupsInGlobalReplicationGroup", + "elasticache:DecreaseNodeGroupsInGlobalReplicationGroup", + "elasticache:DisassociateGlobalReplicationGroup", + "elasticache:RebalanceSlotsInGlobalReplicationGroup" + ] + } + }, + "primaryIdentifier": [ + "/properties/GlobalReplicationGroupId" + ], + "properties": { + "AutomaticFailoverEnabled": { + "description": "AutomaticFailoverEnabled", + "type": "boolean" + }, + "CacheNodeType": { + "description": "The cache node type of the Global Datastore", + "type": "string" + }, + "CacheParameterGroupName": { + "description": "Cache parameter group name to use for the new engine version. This parameter cannot be modified independently.", + "type": "string" + }, + "Engine": { + "description": "The engine of the Global Datastore.", + "type": "string" + }, + "EngineVersion": { + "description": "The engine version of the Global Datastore.", + "type": "string" + }, + "GlobalNodeGroupCount": { + "description": "Indicates the number of node groups in the Global Datastore.", + "type": "integer" + }, + "GlobalReplicationGroupDescription": { + "description": "The optional description of the Global Datastore", + "type": "string" + }, + "GlobalReplicationGroupId": { + "description": "The name of the Global Datastore, it is generated by ElastiCache adding a prefix to GlobalReplicationGroupIdSuffix.", + "type": "string" + }, + "GlobalReplicationGroupIdSuffix": { + "description": "The suffix name of a Global Datastore. Amazon ElastiCache automatically applies a prefix to the Global Datastore ID when it is created. Each AWS Region has its own prefix. ", + "type": "string" + }, + "Members": { + "description": "The replication groups that comprise the Global Datastore.", + "items": { + "$ref": "#/definitions/GlobalReplicationGroupMember" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "RegionalConfigurations": { + "description": "Describes the replication group IDs, the AWS regions where they are stored and the shard configuration for each that comprise the Global Datastore ", + "items": { + "$ref": "#/definitions/RegionalConfiguration" + }, + "type": "array", + "uniqueItems": true + }, + "Status": { + "description": "The status of the Global Datastore", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/GlobalReplicationGroupId", + "/properties/Status" + ], + "required": [ + "Members" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", + "typeName": "AWS::ElastiCache::GlobalReplicationGroup", + "writeOnlyProperties": [ + "/properties/GlobalReplicationGroupIdSuffix", + "/properties/AutomaticFailoverEnabled", + "/properties/CacheNodeType", + "/properties/EngineVersion", + "/properties/GlobalNodeGroupCount", + "/properties/RegionalConfigurations" + ] +} diff --git a/src/schema/aws-elasticache-parametergroup.json b/src/schema/aws-elasticache-parametergroup.json index a47fcc8c..1e1f42c2 100644 --- a/src/schema/aws-elasticache-parametergroup.json +++ b/src/schema/aws-elasticache-parametergroup.json @@ -1,116 +1,116 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CacheParameterGroupFamily" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ElastiCache::ParameterGroup", - "handlers": { - "create": { - "permissions": [ - "ElastiCache:CreateCacheParameterGroup", - "ElastiCache:DescribeCacheParameterGroups", - "ElastiCache:AddTagsToResource", - "ElastiCache:ModifyCacheParameterGroup", - "iam:CreateServiceLinkedRole", - "iam:PutRolePolicy" - ] - }, - "delete": { - "permissions": [ - "ElastiCache:DescribeCacheParameterGroups", - "ElastiCache:DeleteCacheParameterGroup" - ] - }, - "list": { - "permissions": [ - "ElastiCache:DescribeCacheParameterGroups" - ] - }, - "read": { - "permissions": [ - "ElastiCache:DescribeCacheParameterGroups", - "ElastiCache:DescribeCacheParameters", - "ElastiCache:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "ElastiCache:ModifyCacheParameterGroup", - "ElastiCache:DescribeCacheParameterGroups", - "ElastiCache:DescribeCacheParameters", - "ElastiCache:DescribeEngineDefaultParameters", - "ElastiCache:AddTagsToResource", - "ElastiCache:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/CacheParameterGroupName" - ], - "properties": { - "CacheParameterGroupFamily": { - "description": "The name of the cache parameter group family that this cache parameter group is compatible with.", - "type": "string" - }, - "CacheParameterGroupName": { - "description": "The name of the Cache Parameter Group.", - "type": "string" - }, - "Description": { - "description": "The description for this cache parameter group.", - "type": "string" - }, - "Properties": { - "additionalProperties": false, - "description": "A comma-delimited list of parameter name/value pairs. For more information see ModifyCacheParameterGroup in the Amazon ElastiCache API Reference Guide.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "Tags": { - "description": "Tags are composed of a Key/Value pair. You can use tags to categorize and track each parameter group. The tag value null is permitted.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/CacheParameterGroupName" - ], - "required": [ - "Description", - "CacheParameterGroupFamily" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElastiCache::ParameterGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CacheParameterGroupFamily" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ElastiCache::ParameterGroup", + "handlers": { + "create": { + "permissions": [ + "ElastiCache:CreateCacheParameterGroup", + "ElastiCache:DescribeCacheParameterGroups", + "ElastiCache:AddTagsToResource", + "ElastiCache:ModifyCacheParameterGroup", + "iam:CreateServiceLinkedRole", + "iam:PutRolePolicy" + ] + }, + "delete": { + "permissions": [ + "ElastiCache:DescribeCacheParameterGroups", + "ElastiCache:DeleteCacheParameterGroup" + ] + }, + "list": { + "permissions": [ + "ElastiCache:DescribeCacheParameterGroups" + ] + }, + "read": { + "permissions": [ + "ElastiCache:DescribeCacheParameterGroups", + "ElastiCache:DescribeCacheParameters", + "ElastiCache:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ElastiCache:ModifyCacheParameterGroup", + "ElastiCache:DescribeCacheParameterGroups", + "ElastiCache:DescribeCacheParameters", + "ElastiCache:DescribeEngineDefaultParameters", + "ElastiCache:AddTagsToResource", + "ElastiCache:RemoveTagsFromResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/CacheParameterGroupName" + ], + "properties": { + "CacheParameterGroupFamily": { + "description": "The name of the cache parameter group family that this cache parameter group is compatible with.", + "type": "string" + }, + "CacheParameterGroupName": { + "description": "The name of the Cache Parameter Group.", + "type": "string" + }, + "Description": { + "description": "The description for this cache parameter group.", + "type": "string" + }, + "Properties": { + "additionalProperties": false, + "description": "A comma-delimited list of parameter name/value pairs. For more information see ModifyCacheParameterGroup in the Amazon ElastiCache API Reference Guide.", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "description": "Tags are composed of a Key/Value pair. You can use tags to categorize and track each parameter group. The tag value null is permitted.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/CacheParameterGroupName" + ], + "required": [ + "Description", + "CacheParameterGroupFamily" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElastiCache::ParameterGroup" +} diff --git a/src/schema/aws-elasticache-replicationgroup.json b/src/schema/aws-elasticache-replicationgroup.json index 75686ecb..98e97323 100644 --- a/src/schema/aws-elasticache-replicationgroup.json +++ b/src/schema/aws-elasticache-replicationgroup.json @@ -1,330 +1,330 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKeyId", - "/properties/Port", - "/properties/SnapshotArns", - "/properties/SnapshotName", - "/properties/CacheSubnetGroupName", - "/properties/NetworkType", - "/properties/DataTieringEnabled", - "/properties/AtRestEncryptionEnabled", - "/properties/ReplicationGroupId", - "/properties/GlobalReplicationGroupId", - "/properties/ReplicasPerNodeGroup", - "/properties/PreferredCacheClusterAZs" - ], - "definitions": { - "CloudWatchLogsDestinationDetails": { - "additionalProperties": false, - "properties": { - "LogGroup": { - "type": "string" - } - }, - "required": [ - "LogGroup" - ], - "type": "object" - }, - "DestinationDetails": { - "additionalProperties": false, - "properties": { - "CloudWatchLogsDetails": { - "$ref": "#/definitions/CloudWatchLogsDestinationDetails" - }, - "KinesisFirehoseDetails": { - "$ref": "#/definitions/KinesisFirehoseDestinationDetails" - } - }, - "type": "object" - }, - "KinesisFirehoseDestinationDetails": { - "additionalProperties": false, - "properties": { - "DeliveryStream": { - "type": "string" - } - }, - "required": [ - "DeliveryStream" - ], - "type": "object" - }, - "LogDeliveryConfigurationRequest": { - "additionalProperties": false, - "properties": { - "DestinationDetails": { - "$ref": "#/definitions/DestinationDetails" - }, - "DestinationType": { - "type": "string" - }, - "LogFormat": { - "type": "string" - }, - "LogType": { - "type": "string" - } - }, - "required": [ - "LogFormat", - "LogType", - "DestinationType", - "DestinationDetails" - ], - "type": "object" - }, - "NodeGroupConfiguration": { - "additionalProperties": false, - "properties": { - "NodeGroupId": { - "type": "string" - }, - "PrimaryAvailabilityZone": { - "type": "string" - }, - "ReplicaAvailabilityZones": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "ReplicaCount": { - "type": "integer" - }, - "Slots": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ElastiCache::ReplicationGroup", - "primaryIdentifier": [ - "/properties/ReplicationGroupId" - ], - "properties": { - "AtRestEncryptionEnabled": { - "type": "boolean" - }, - "AuthToken": { - "type": "string" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "AutomaticFailoverEnabled": { - "type": "boolean" - }, - "CacheNodeType": { - "type": "string" - }, - "CacheParameterGroupName": { - "type": "string" - }, - "CacheSecurityGroupNames": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "CacheSubnetGroupName": { - "type": "string" - }, - "ClusterMode": { - "type": "string" - }, - "ConfigurationEndPointAddress": { - "type": "string" - }, - "ConfigurationEndPointPort": { - "type": "string" - }, - "DataTieringEnabled": { - "type": "boolean" - }, - "Engine": { - "type": "string" - }, - "EngineVersion": { - "type": "string" - }, - "GlobalReplicationGroupId": { - "type": "string" - }, - "IpDiscovery": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "LogDeliveryConfigurations": { - "items": { - "$ref": "#/definitions/LogDeliveryConfigurationRequest" - }, - "type": "array", - "uniqueItems": true - }, - "MultiAZEnabled": { - "type": "boolean" - }, - "NetworkType": { - "type": "string" - }, - "NodeGroupConfiguration": { - "items": { - "$ref": "#/definitions/NodeGroupConfiguration" - }, - "type": "array", - "uniqueItems": true - }, - "NotificationTopicArn": { - "type": "string" - }, - "NumCacheClusters": { - "type": "integer" - }, - "NumNodeGroups": { - "type": "integer" - }, - "Port": { - "type": "integer" - }, - "PreferredCacheClusterAZs": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "PrimaryClusterId": { - "type": "string" - }, - "PrimaryEndPointAddress": { - "type": "string" - }, - "PrimaryEndPointPort": { - "type": "string" - }, - "ReadEndPointAddresses": { - "type": "string" - }, - "ReadEndPointAddressesList": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ReadEndPointPorts": { - "type": "string" - }, - "ReadEndPointPortsList": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ReaderEndPointAddress": { - "type": "string" - }, - "ReaderEndPointPort": { - "type": "string" - }, - "ReplicasPerNodeGroup": { - "type": "integer" - }, - "ReplicationGroupDescription": { - "type": "string" - }, - "ReplicationGroupId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "SnapshotArns": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "SnapshotName": { - "type": "string" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": { - "type": "string" - }, - "SnapshottingClusterId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TransitEncryptionEnabled": { - "type": "boolean" - }, - "TransitEncryptionMode": { - "type": "string" - }, - "UserGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/ConfigurationEndPoint.Address", - "/properties/PrimaryEndPoint.Address", - "/properties/PrimaryEndPoint.Port", - "/properties/ReaderEndPoint.Address", - "/properties/ConfigurationEndPoint.Port", - "/properties/ReadEndPoint.Addresses.List", - "/properties/ReadEndPoint.Ports.List", - "/properties/ReaderEndPoint.Port", - "/properties/ReadEndPoint.Addresses", - "/properties/ReadEndPoint.Ports", - "/properties/ReplicationGroupId" - ], - "required": [ - "ReplicationGroupDescription" - ], - "typeName": "AWS::ElastiCache::ReplicationGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KmsKeyId", + "/properties/Port", + "/properties/SnapshotArns", + "/properties/SnapshotName", + "/properties/CacheSubnetGroupName", + "/properties/NetworkType", + "/properties/DataTieringEnabled", + "/properties/AtRestEncryptionEnabled", + "/properties/ReplicationGroupId", + "/properties/GlobalReplicationGroupId", + "/properties/ReplicasPerNodeGroup", + "/properties/PreferredCacheClusterAZs" + ], + "definitions": { + "CloudWatchLogsDestinationDetails": { + "additionalProperties": false, + "properties": { + "LogGroup": { + "type": "string" + } + }, + "required": [ + "LogGroup" + ], + "type": "object" + }, + "DestinationDetails": { + "additionalProperties": false, + "properties": { + "CloudWatchLogsDetails": { + "$ref": "#/definitions/CloudWatchLogsDestinationDetails" + }, + "KinesisFirehoseDetails": { + "$ref": "#/definitions/KinesisFirehoseDestinationDetails" + } + }, + "type": "object" + }, + "KinesisFirehoseDestinationDetails": { + "additionalProperties": false, + "properties": { + "DeliveryStream": { + "type": "string" + } + }, + "required": [ + "DeliveryStream" + ], + "type": "object" + }, + "LogDeliveryConfigurationRequest": { + "additionalProperties": false, + "properties": { + "DestinationDetails": { + "$ref": "#/definitions/DestinationDetails" + }, + "DestinationType": { + "type": "string" + }, + "LogFormat": { + "type": "string" + }, + "LogType": { + "type": "string" + } + }, + "required": [ + "LogFormat", + "LogType", + "DestinationType", + "DestinationDetails" + ], + "type": "object" + }, + "NodeGroupConfiguration": { + "additionalProperties": false, + "properties": { + "NodeGroupId": { + "type": "string" + }, + "PrimaryAvailabilityZone": { + "type": "string" + }, + "ReplicaAvailabilityZones": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "ReplicaCount": { + "type": "integer" + }, + "Slots": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ElastiCache::ReplicationGroup", + "primaryIdentifier": [ + "/properties/ReplicationGroupId" + ], + "properties": { + "AtRestEncryptionEnabled": { + "type": "boolean" + }, + "AuthToken": { + "type": "string" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "AutomaticFailoverEnabled": { + "type": "boolean" + }, + "CacheNodeType": { + "type": "string" + }, + "CacheParameterGroupName": { + "type": "string" + }, + "CacheSecurityGroupNames": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "CacheSubnetGroupName": { + "type": "string" + }, + "ClusterMode": { + "type": "string" + }, + "ConfigurationEndPointAddress": { + "type": "string" + }, + "ConfigurationEndPointPort": { + "type": "string" + }, + "DataTieringEnabled": { + "type": "boolean" + }, + "Engine": { + "type": "string" + }, + "EngineVersion": { + "type": "string" + }, + "GlobalReplicationGroupId": { + "type": "string" + }, + "IpDiscovery": { + "type": "string" + }, + "KmsKeyId": { + "type": "string" + }, + "LogDeliveryConfigurations": { + "items": { + "$ref": "#/definitions/LogDeliveryConfigurationRequest" + }, + "type": "array", + "uniqueItems": true + }, + "MultiAZEnabled": { + "type": "boolean" + }, + "NetworkType": { + "type": "string" + }, + "NodeGroupConfiguration": { + "items": { + "$ref": "#/definitions/NodeGroupConfiguration" + }, + "type": "array", + "uniqueItems": true + }, + "NotificationTopicArn": { + "type": "string" + }, + "NumCacheClusters": { + "type": "integer" + }, + "NumNodeGroups": { + "type": "integer" + }, + "Port": { + "type": "integer" + }, + "PreferredCacheClusterAZs": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "PreferredMaintenanceWindow": { + "type": "string" + }, + "PrimaryClusterId": { + "type": "string" + }, + "PrimaryEndPointAddress": { + "type": "string" + }, + "PrimaryEndPointPort": { + "type": "string" + }, + "ReadEndPointAddresses": { + "type": "string" + }, + "ReadEndPointAddressesList": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ReadEndPointPorts": { + "type": "string" + }, + "ReadEndPointPortsList": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ReaderEndPointAddress": { + "type": "string" + }, + "ReaderEndPointPort": { + "type": "string" + }, + "ReplicasPerNodeGroup": { + "type": "integer" + }, + "ReplicationGroupDescription": { + "type": "string" + }, + "ReplicationGroupId": { + "type": "string" + }, + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SnapshotArns": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SnapshotName": { + "type": "string" + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": { + "type": "string" + }, + "SnapshottingClusterId": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TransitEncryptionEnabled": { + "type": "boolean" + }, + "TransitEncryptionMode": { + "type": "string" + }, + "UserGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/ConfigurationEndPoint.Address", + "/properties/PrimaryEndPoint.Address", + "/properties/PrimaryEndPoint.Port", + "/properties/ReaderEndPoint.Address", + "/properties/ConfigurationEndPoint.Port", + "/properties/ReadEndPoint.Addresses.List", + "/properties/ReadEndPoint.Ports.List", + "/properties/ReaderEndPoint.Port", + "/properties/ReadEndPoint.Addresses", + "/properties/ReadEndPoint.Ports", + "/properties/ReplicationGroupId" + ], + "required": [ + "ReplicationGroupDescription" + ], + "typeName": "AWS::ElastiCache::ReplicationGroup" +} diff --git a/src/schema/aws-elasticache-securitygroup.json b/src/schema/aws-elasticache-securitygroup.json index e003cec3..64f44f4a 100644 --- a/src/schema/aws-elasticache-securitygroup.json +++ b/src/schema/aws-elasticache-securitygroup.json @@ -1,47 +1,47 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ElastiCache::SecurityGroup", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Description" - ], - "typeName": "AWS::ElastiCache::SecurityGroup" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ElastiCache::SecurityGroup", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Description" + ], + "typeName": "AWS::ElastiCache::SecurityGroup" +} diff --git a/src/schema/aws-elasticache-securitygroupingress.json b/src/schema/aws-elasticache-securitygroupingress.json index 385b5a74..fb804e7b 100644 --- a/src/schema/aws-elasticache-securitygroupingress.json +++ b/src/schema/aws-elasticache-securitygroupingress.json @@ -1,29 +1,29 @@ -{ - "additionalProperties": false, - "description": "Resource Type definition for AWS::ElastiCache::SecurityGroupIngress", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CacheSecurityGroupName": { - "type": "string" - }, - "EC2SecurityGroupName": { - "type": "string" - }, - "EC2SecurityGroupOwnerId": { - "type": "string" - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "EC2SecurityGroupName", - "CacheSecurityGroupName" - ], - "typeName": "AWS::ElastiCache::SecurityGroupIngress" -} +{ + "additionalProperties": false, + "description": "Resource Type definition for AWS::ElastiCache::SecurityGroupIngress", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CacheSecurityGroupName": { + "type": "string" + }, + "EC2SecurityGroupName": { + "type": "string" + }, + "EC2SecurityGroupOwnerId": { + "type": "string" + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "EC2SecurityGroupName", + "CacheSecurityGroupName" + ], + "typeName": "AWS::ElastiCache::SecurityGroupIngress" +} diff --git a/src/schema/aws-elasticache-serverlesscache.json b/src/schema/aws-elasticache-serverlesscache.json index 3fb24aa9..de8974cc 100644 --- a/src/schema/aws-elasticache-serverlesscache.json +++ b/src/schema/aws-elasticache-serverlesscache.json @@ -1,279 +1,279 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServerlessCacheName", - "/properties/KmsKeyId", - "/properties/SnapshotArnsToRestore", - "/properties/SubnetIds" - ], - "definitions": { - "CacheUsageLimits": { - "additionalProperties": false, - "description": "The cache capacity limit of the Serverless Cache.", - "properties": { - "DataStorage": { - "$ref": "#/definitions/DataStorage" - }, - "ECPUPerSecond": { - "$ref": "#/definitions/ECPUPerSecond" - } - }, - "type": "object" - }, - "DataStorage": { - "additionalProperties": false, - "description": "The cached data capacity of the Serverless Cache.", - "properties": { - "Maximum": { - "description": "The maximum cached data capacity of the Serverless Cache.", - "type": "integer" - }, - "Minimum": { - "description": "The minimum cached data capacity of the Serverless Cache.", - "type": "integer" - }, - "Unit": { - "description": "The unit of cached data capacity of the Serverless Cache.", - "enum": [ - "GB" - ], - "type": "string" - } - }, - "required": [ - "Unit" - ], - "type": "object" - }, - "ECPUPerSecond": { - "additionalProperties": false, - "description": "The ECPU per second of the Serverless Cache.", - "properties": { - "Maximum": { - "description": "The maximum ECPU per second of the Serverless Cache.", - "type": "integer" - }, - "Minimum": { - "description": "The minimum ECPU per second of the Serverless Cache.", - "type": "integer" - } - }, - "type": "object" - }, - "Endpoint": { - "additionalProperties": false, - "description": "The address and the port.", - "properties": { - "Address": { - "description": "Endpoint address.", - "type": "string" - }, - "Port": { - "description": "Endpoint port.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with Serverless Cache.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with 'aws:'. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "The AWS::ElastiCache::ServerlessCache resource creates an Amazon ElastiCache Serverless Cache.", - "handlers": { - "create": { - "permissions": [ - "elasticache:CreateServerlessCache", - "elasticache:DescribeServerlessCaches", - "elasticache:AddTagsToResource", - "elasticache:ListTagsForResource", - "ec2:CreateTags", - "ec2:CreateVpcEndpoint", - "kms:CreateGrant", - "kms:DescribeKey" - ] - }, - "delete": { - "permissions": [ - "elasticache:DeleteServerlessCache", - "elasticache:DescribeServerlessCaches", - "elasticache:ListTagsForResource" - ] - }, - "list": { - "permissions": [ - "elasticache:DescribeServerlessCaches", - "elasticache:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "elasticache:DescribeServerlessCaches", - "elasticache:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "elasticache:ModifyServerlessCache", - "elasticache:DescribeServerlessCaches", - "elasticache:AddTagsToResource", - "elasticache:ListTagsForResource", - "elasticache:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ServerlessCacheName" - ], - "properties": { - "ARN": { - "description": "The ARN of the Serverless Cache.", - "type": "string" - }, - "CacheUsageLimits": { - "$ref": "#/definitions/CacheUsageLimits" - }, - "CreateTime": { - "description": "The creation time of the Serverless Cache.", - "type": "string" - }, - "DailySnapshotTime": { - "description": "The daily time range (in UTC) during which the service takes automatic snapshot of the Serverless Cache.", - "type": "string" - }, - "Description": { - "description": "The description of the Serverless Cache.", - "type": "string" - }, - "Endpoint": { - "$ref": "#/definitions/Endpoint" - }, - "Engine": { - "description": "The engine name of the Serverless Cache.", - "type": "string" - }, - "FinalSnapshotName": { - "description": "The final snapshot name which is taken before Serverless Cache is deleted.", - "type": "string" - }, - "FullEngineVersion": { - "description": "The full engine version of the Serverless Cache.", - "type": "string" - }, - "KmsKeyId": { - "description": "The ID of the KMS key used to encrypt the cluster.", - "type": "string" - }, - "MajorEngineVersion": { - "description": "The major engine version of the Serverless Cache.", - "type": "string" - }, - "ReaderEndpoint": { - "$ref": "#/definitions/Endpoint" - }, - "SecurityGroupIds": { - "description": "One or more Amazon VPC security groups associated with this Serverless Cache.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "ServerlessCacheName": { - "description": "The name of the Serverless Cache. This value must be unique.", - "type": "string" - }, - "SnapshotArnsToRestore": { - "description": "The ARN's of snapshot to restore Serverless Cache.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "SnapshotRetentionLimit": { - "description": "The snapshot retention limit of the Serverless Cache.", - "type": "integer" - }, - "Status": { - "description": "The status of the Serverless Cache.", - "type": "string" - }, - "SubnetIds": { - "description": "The subnet id's of the Serverless Cache.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "description": "An array of key-value pairs to apply to this Serverless Cache.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "UserGroupId": { - "description": "The ID of the user group.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/FullEngineVersion", - "/properties/CreateTime", - "/properties/Status", - "/properties/Endpoint/Address", - "/properties/Endpoint/Port", - "/properties/ReaderEndpoint/Address", - "/properties/ReaderEndpoint/Port", - "/properties/ARN" - ], - "required": [ - "ServerlessCacheName", - "Engine" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "elasticache:AddTagsToResource", - "elasticache:RemoveTagsFromResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElastiCache::ServerlessCache", - "writeOnlyProperties": [ - "/properties/SnapshotArnsToRestore", - "/properties/FinalSnapshotName" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServerlessCacheName", + "/properties/KmsKeyId", + "/properties/SnapshotArnsToRestore", + "/properties/SubnetIds" + ], + "definitions": { + "CacheUsageLimits": { + "additionalProperties": false, + "description": "The cache capacity limit of the Serverless Cache.", + "properties": { + "DataStorage": { + "$ref": "#/definitions/DataStorage" + }, + "ECPUPerSecond": { + "$ref": "#/definitions/ECPUPerSecond" + } + }, + "type": "object" + }, + "DataStorage": { + "additionalProperties": false, + "description": "The cached data capacity of the Serverless Cache.", + "properties": { + "Maximum": { + "description": "The maximum cached data capacity of the Serverless Cache.", + "type": "integer" + }, + "Minimum": { + "description": "The minimum cached data capacity of the Serverless Cache.", + "type": "integer" + }, + "Unit": { + "description": "The unit of cached data capacity of the Serverless Cache.", + "enum": [ + "GB" + ], + "type": "string" + } + }, + "required": [ + "Unit" + ], + "type": "object" + }, + "ECPUPerSecond": { + "additionalProperties": false, + "description": "The ECPU per second of the Serverless Cache.", + "properties": { + "Maximum": { + "description": "The maximum ECPU per second of the Serverless Cache.", + "type": "integer" + }, + "Minimum": { + "description": "The minimum ECPU per second of the Serverless Cache.", + "type": "integer" + } + }, + "type": "object" + }, + "Endpoint": { + "additionalProperties": false, + "description": "The address and the port.", + "properties": { + "Address": { + "description": "Endpoint address.", + "type": "string" + }, + "Port": { + "description": "Endpoint port.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with Serverless Cache.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with 'aws:'. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "The AWS::ElastiCache::ServerlessCache resource creates an Amazon ElastiCache Serverless Cache.", + "handlers": { + "create": { + "permissions": [ + "elasticache:CreateServerlessCache", + "elasticache:DescribeServerlessCaches", + "elasticache:AddTagsToResource", + "elasticache:ListTagsForResource", + "ec2:CreateTags", + "ec2:CreateVpcEndpoint", + "kms:CreateGrant", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "elasticache:DeleteServerlessCache", + "elasticache:DescribeServerlessCaches", + "elasticache:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "elasticache:DescribeServerlessCaches", + "elasticache:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "elasticache:DescribeServerlessCaches", + "elasticache:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "elasticache:ModifyServerlessCache", + "elasticache:DescribeServerlessCaches", + "elasticache:AddTagsToResource", + "elasticache:ListTagsForResource", + "elasticache:RemoveTagsFromResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ServerlessCacheName" + ], + "properties": { + "ARN": { + "description": "The ARN of the Serverless Cache.", + "type": "string" + }, + "CacheUsageLimits": { + "$ref": "#/definitions/CacheUsageLimits" + }, + "CreateTime": { + "description": "The creation time of the Serverless Cache.", + "type": "string" + }, + "DailySnapshotTime": { + "description": "The daily time range (in UTC) during which the service takes automatic snapshot of the Serverless Cache.", + "type": "string" + }, + "Description": { + "description": "The description of the Serverless Cache.", + "type": "string" + }, + "Endpoint": { + "$ref": "#/definitions/Endpoint" + }, + "Engine": { + "description": "The engine name of the Serverless Cache.", + "type": "string" + }, + "FinalSnapshotName": { + "description": "The final snapshot name which is taken before Serverless Cache is deleted.", + "type": "string" + }, + "FullEngineVersion": { + "description": "The full engine version of the Serverless Cache.", + "type": "string" + }, + "KmsKeyId": { + "description": "The ID of the KMS key used to encrypt the cluster.", + "type": "string" + }, + "MajorEngineVersion": { + "description": "The major engine version of the Serverless Cache.", + "type": "string" + }, + "ReaderEndpoint": { + "$ref": "#/definitions/Endpoint" + }, + "SecurityGroupIds": { + "description": "One or more Amazon VPC security groups associated with this Serverless Cache.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "ServerlessCacheName": { + "description": "The name of the Serverless Cache. This value must be unique.", + "type": "string" + }, + "SnapshotArnsToRestore": { + "description": "The ARN's of snapshot to restore Serverless Cache.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SnapshotRetentionLimit": { + "description": "The snapshot retention limit of the Serverless Cache.", + "type": "integer" + }, + "Status": { + "description": "The status of the Serverless Cache.", + "type": "string" + }, + "SubnetIds": { + "description": "The subnet id's of the Serverless Cache.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "An array of key-value pairs to apply to this Serverless Cache.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "UserGroupId": { + "description": "The ID of the user group.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/FullEngineVersion", + "/properties/CreateTime", + "/properties/Status", + "/properties/Endpoint/Address", + "/properties/Endpoint/Port", + "/properties/ReaderEndpoint/Address", + "/properties/ReaderEndpoint/Port", + "/properties/ARN" + ], + "required": [ + "ServerlessCacheName", + "Engine" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "elasticache:AddTagsToResource", + "elasticache:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElastiCache::ServerlessCache", + "writeOnlyProperties": [ + "/properties/SnapshotArnsToRestore", + "/properties/FinalSnapshotName" + ] +} diff --git a/src/schema/aws-elasticache-subnetgroup.json b/src/schema/aws-elasticache-subnetgroup.json index 09dea73f..990f65ff 100644 --- a/src/schema/aws-elasticache-subnetgroup.json +++ b/src/schema/aws-elasticache-subnetgroup.json @@ -1,104 +1,104 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CacheSubnetGroupName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A tag that can be added to an ElastiCache subnet group. Tags are composed of a Key/Value pair. You can use tags to categorize and track all your subnet groups. A tag with a null Value is permitted.", - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ElastiCache::SubnetGroup", - "handlers": { - "create": { - "permissions": [ - "elasticache:CreateCacheSubnetGroup", - "elasticache:AddTagsToResource", - "elasticache:DescribeCacheSubnetGroups", - "elasticache:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "elasticache:DeleteCacheSubnetGroup", - "elasticache:DescribeCacheSubnetGroups", - "elasticache:ListTagsForResource" - ] - }, - "list": { - "permissions": [ - "elasticache:DescribeCacheSubnetGroups" - ] - }, - "read": { - "permissions": [ - "elasticache:DescribeCacheSubnetGroups", - "elasticache:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "elasticache:ModifyCacheSubnetGroup", - "elasticache:DescribeCacheSubnetGroups", - "elasticache:AddTagsToResource", - "elasticache:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/CacheSubnetGroupName" - ], - "properties": { - "CacheSubnetGroupName": { - "description": "The name for the cache subnet group. This value is stored as a lowercase string.", - "type": "string" - }, - "Description": { - "description": "The description for the cache subnet group.", - "type": "string" - }, - "SubnetIds": { - "description": "The EC2 subnet IDs for the cache subnet group.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Description", - "SubnetIds" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElastiCache::SubnetGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CacheSubnetGroupName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A tag that can be added to an ElastiCache subnet group. Tags are composed of a Key/Value pair. You can use tags to categorize and track all your subnet groups. A tag with a null Value is permitted.", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ElastiCache::SubnetGroup", + "handlers": { + "create": { + "permissions": [ + "elasticache:CreateCacheSubnetGroup", + "elasticache:AddTagsToResource", + "elasticache:DescribeCacheSubnetGroups", + "elasticache:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "elasticache:DeleteCacheSubnetGroup", + "elasticache:DescribeCacheSubnetGroups", + "elasticache:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "elasticache:DescribeCacheSubnetGroups" + ] + }, + "read": { + "permissions": [ + "elasticache:DescribeCacheSubnetGroups", + "elasticache:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "elasticache:ModifyCacheSubnetGroup", + "elasticache:DescribeCacheSubnetGroups", + "elasticache:AddTagsToResource", + "elasticache:RemoveTagsFromResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/CacheSubnetGroupName" + ], + "properties": { + "CacheSubnetGroupName": { + "description": "The name for the cache subnet group. This value is stored as a lowercase string.", + "type": "string" + }, + "Description": { + "description": "The description for the cache subnet group.", + "type": "string" + }, + "SubnetIds": { + "description": "The EC2 subnet IDs for the cache subnet group.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Description", + "SubnetIds" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElastiCache::SubnetGroup" +} diff --git a/src/schema/aws-elasticache-user.json b/src/schema/aws-elasticache-user.json index a009412e..2d2d6b0e 100644 --- a/src/schema/aws-elasticache-user.json +++ b/src/schema/aws-elasticache-user.json @@ -1,181 +1,181 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserId", - "/properties/UserName", - "/properties/Engine" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with 'aws:'. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ElastiCache::User", - "handlers": { - "create": { - "permissions": [ - "elasticache:CreateUser", - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" - ] - }, - "delete": { - "permissions": [ - "elasticache:DeleteUser", - "elasticache:DescribeUsers" - ] - }, - "list": { - "permissions": [ - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "elasticache:ModifyUser", - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource", - "elasticache:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserId" - ], - "properties": { - "AccessString": { - "description": "Access permissions string used for this user account.", - "type": "string" - }, - "Arn": { - "description": "The Amazon Resource Name (ARN) of the user account.", - "type": "string" - }, - "AuthenticationMode": { - "additionalProperties": false, - "properties": { - "Passwords": { - "$comment": "List of passwords.", - "description": "Passwords used for this user account. You can create up to two passwords for each user.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "description": "Authentication Type", - "enum": [ - "password", - "no-password-required", - "iam" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "Engine": { - "description": "Must be redis.", - "enum": [ - "redis" - ], - "type": "string" - }, - "NoPasswordRequired": { - "description": "Indicates a password is not required for this user account.", - "type": "boolean" - }, - "Passwords": { - "$comment": "List of passwords.", - "description": "Passwords used for this user account. You can create up to two passwords for each user.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Status": { - "description": "Indicates the user status. Can be \"active\", \"modifying\" or \"deleting\".", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this user.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UserId": { - "description": "The ID of the user.", - "pattern": "[a-z][a-z0-9\\\\-]*", - "type": "string" - }, - "UserName": { - "description": "The username of the user.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/Arn" - ], - "required": [ - "UserId", - "UserName", - "Engine" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElastiCache::User", - "writeOnlyProperties": [ - "/properties/Passwords", - "/properties/NoPasswordRequired", - "/properties/AccessString", - "/properties/AuthenticationMode" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/UserId", + "/properties/UserName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with 'aws:'. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ElastiCache::User", + "handlers": { + "create": { + "permissions": [ + "elasticache:CreateUser", + "elasticache:DescribeUsers", + "elasticache:ListTagsForResource", + "elasticache:AddTagsToResource" + ] + }, + "delete": { + "permissions": [ + "elasticache:DeleteUser", + "elasticache:DescribeUsers" + ] + }, + "list": { + "permissions": [ + "elasticache:DescribeUsers", + "elasticache:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "elasticache:DescribeUsers", + "elasticache:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "elasticache:ModifyUser", + "elasticache:DescribeUsers", + "elasticache:ListTagsForResource", + "elasticache:AddTagsToResource", + "elasticache:RemoveTagsFromResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserId" + ], + "properties": { + "AccessString": { + "description": "Access permissions string used for this user account.", + "type": "string" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the user account.", + "type": "string" + }, + "AuthenticationMode": { + "additionalProperties": false, + "properties": { + "Passwords": { + "$comment": "List of passwords.", + "description": "Passwords used for this user account. You can create up to two passwords for each user.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "Authentication Type", + "enum": [ + "password", + "no-password-required", + "iam" + ], + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "Engine": { + "description": "The target cache engine for the user.", + "enum": [ + "redis", + "valkey" + ], + "type": "string" + }, + "NoPasswordRequired": { + "description": "Indicates a password is not required for this user account.", + "type": "boolean" + }, + "Passwords": { + "$comment": "List of passwords.", + "description": "Passwords used for this user account. You can create up to two passwords for each user.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Status": { + "description": "Indicates the user status. Can be \"active\", \"modifying\" or \"deleting\".", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this user.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UserId": { + "description": "The ID of the user.", + "pattern": "[a-z][a-z0-9\\\\-]*", + "type": "string" + }, + "UserName": { + "description": "The username of the user.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Status", + "/properties/Arn" + ], + "required": [ + "UserId", + "UserName", + "Engine" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElastiCache::User", + "writeOnlyProperties": [ + "/properties/Passwords", + "/properties/NoPasswordRequired", + "/properties/AccessString", + "/properties/AuthenticationMode" + ] +} diff --git a/src/schema/aws-elasticache-usergroup.json b/src/schema/aws-elasticache-usergroup.json index 2b216717..94c8fe8f 100644 --- a/src/schema/aws-elasticache-usergroup.json +++ b/src/schema/aws-elasticache-usergroup.json @@ -1,136 +1,136 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserGroupId", - "/properties/Engine" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with 'aws:'. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ElastiCache::UserGroup", - "handlers": { - "create": { - "permissions": [ - "elasticache:CreateUserGroup", - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" - ] - }, - "delete": { - "permissions": [ - "elasticache:ModifyReplicationGroup", - "elasticache:DeleteUserGroup", - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource" - ] - }, - "list": { - "permissions": [ - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "elasticache:ModifyUserGroup", - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource", - "elasticache:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserGroupId" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the user account.", - "type": "string" - }, - "Engine": { - "description": "Must be redis.", - "enum": [ - "redis" - ], - "type": "string" - }, - "Status": { - "description": "Indicates user group status. Can be \"creating\", \"active\", \"modifying\", \"deleting\".", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this user.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UserGroupId": { - "description": "The ID of the user group.", - "pattern": "[a-z][a-z0-9\\\\-]*", - "type": "string" - }, - "UserIds": { - "$comment": "List of users.", - "description": "List of users associated to this user group.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/Arn" - ], - "required": [ - "UserGroupId", - "Engine", - "UserIds" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElastiCache::UserGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/UserGroupId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with 'aws:'. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ElastiCache::UserGroup", + "handlers": { + "create": { + "permissions": [ + "elasticache:CreateUserGroup", + "elasticache:DescribeUserGroups", + "elasticache:ListTagsForResource", + "elasticache:AddTagsToResource" + ] + }, + "delete": { + "permissions": [ + "elasticache:ModifyReplicationGroup", + "elasticache:DeleteUserGroup", + "elasticache:DescribeUserGroups", + "elasticache:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "elasticache:DescribeUserGroups", + "elasticache:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "elasticache:DescribeUserGroups", + "elasticache:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "elasticache:ModifyUserGroup", + "elasticache:DescribeUserGroups", + "elasticache:ListTagsForResource", + "elasticache:AddTagsToResource", + "elasticache:RemoveTagsFromResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserGroupId" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the user account.", + "type": "string" + }, + "Engine": { + "description": "The target cache engine for the user group.", + "enum": [ + "redis", + "valkey" + ], + "type": "string" + }, + "Status": { + "description": "Indicates user group status. Can be \"creating\", \"active\", \"modifying\", \"deleting\".", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this user.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UserGroupId": { + "description": "The ID of the user group.", + "pattern": "[a-z][a-z0-9\\\\-]*", + "type": "string" + }, + "UserIds": { + "$comment": "List of users.", + "description": "List of users associated to this user group.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Status", + "/properties/Arn" + ], + "required": [ + "UserGroupId", + "Engine", + "UserIds" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElastiCache::UserGroup" +} diff --git a/src/schema/aws-elasticbeanstalk-application.json b/src/schema/aws-elasticbeanstalk-application.json index d2196bff..164a0c95 100644 --- a/src/schema/aws-elasticbeanstalk-application.json +++ b/src/schema/aws-elasticbeanstalk-application.json @@ -1,126 +1,126 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationName" - ], - "definitions": { - "ApplicationResourceLifecycleConfig": { - "additionalProperties": false, - "properties": { - "ServiceRole": { - "description": "The ARN of an IAM service role that Elastic Beanstalk has permission to assume. The ServiceRole property is required the first time that you provide a ResourceLifecycleConfig for the application. After you provide it once, Elastic Beanstalk persists the Service Role with the application, and you don't need to specify it again. You can, however, specify it in subsequent updates to change the Service Role to another value.", - "type": "string" - }, - "VersionLifecycleConfig": { - "$ref": "#/definitions/ApplicationVersionLifecycleConfig", - "description": "Defines lifecycle settings for application versions." - } - }, - "type": "object" - }, - "ApplicationVersionLifecycleConfig": { - "additionalProperties": false, - "properties": { - "MaxAgeRule": { - "$ref": "#/definitions/MaxAgeRule", - "description": "Specify a max age rule to restrict the length of time that application versions are retained for an application." - }, - "MaxCountRule": { - "$ref": "#/definitions/MaxCountRule", - "description": "Specify a max count rule to restrict the number of application versions that are retained for an application." - } - }, - "type": "object" - }, - "MaxAgeRule": { - "additionalProperties": false, - "properties": { - "DeleteSourceFromS3": { - "description": "Set to true to delete a version's source bundle from Amazon S3 when Elastic Beanstalk deletes the application version.", - "type": "boolean" - }, - "Enabled": { - "description": "Specify true to apply the rule, or false to disable it.", - "type": "boolean" - }, - "MaxAgeInDays": { - "description": "Specify the number of days to retain an application versions.", - "type": "integer" - } - }, - "type": "object" - }, - "MaxCountRule": { - "additionalProperties": false, - "properties": { - "DeleteSourceFromS3": { - "description": "Set to true to delete a version's source bundle from Amazon S3 when Elastic Beanstalk deletes the application version.", - "type": "boolean" - }, - "Enabled": { - "description": "Specify true to apply the rule, or false to disable it.", - "type": "boolean" - }, - "MaxCount": { - "description": "Specify the maximum number of application versions to retain.", - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "The AWS::ElasticBeanstalk::Application resource specifies an Elastic Beanstalk application.", - "handlers": { - "create": { - "permissions": [ - "elasticbeanstalk:CreateApplication" - ] - }, - "delete": { - "permissions": [ - "elasticbeanstalk:DeleteApplication" - ] - }, - "list": { - "permissions": [ - "elasticbeanstalk:DescribeApplications" - ] - }, - "read": { - "permissions": [ - "elasticbeanstalk:DescribeApplications" - ] - }, - "update": { - "permissions": [ - "elasticbeanstalk:UpdateApplication", - "elasticbeanstalk:UpdateApplicationResourceLifecycle" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationName" - ], - "properties": { - "ApplicationName": { - "description": "A name for the Elastic Beanstalk application. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the application name.", - "type": "string" - }, - "Description": { - "description": "Your description of the application.", - "type": "string" - }, - "ResourceLifecycleConfig": { - "$ref": "#/definitions/ApplicationResourceLifecycleConfig", - "description": "Specifies an application resource lifecycle configuration to prevent your application from accumulating too many versions." - } - }, - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticbeanstalk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ElasticBeanstalk::Application" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationName" + ], + "definitions": { + "ApplicationResourceLifecycleConfig": { + "additionalProperties": false, + "properties": { + "ServiceRole": { + "description": "The ARN of an IAM service role that Elastic Beanstalk has permission to assume. The ServiceRole property is required the first time that you provide a ResourceLifecycleConfig for the application. After you provide it once, Elastic Beanstalk persists the Service Role with the application, and you don't need to specify it again. You can, however, specify it in subsequent updates to change the Service Role to another value.", + "type": "string" + }, + "VersionLifecycleConfig": { + "$ref": "#/definitions/ApplicationVersionLifecycleConfig", + "description": "Defines lifecycle settings for application versions." + } + }, + "type": "object" + }, + "ApplicationVersionLifecycleConfig": { + "additionalProperties": false, + "properties": { + "MaxAgeRule": { + "$ref": "#/definitions/MaxAgeRule", + "description": "Specify a max age rule to restrict the length of time that application versions are retained for an application." + }, + "MaxCountRule": { + "$ref": "#/definitions/MaxCountRule", + "description": "Specify a max count rule to restrict the number of application versions that are retained for an application." + } + }, + "type": "object" + }, + "MaxAgeRule": { + "additionalProperties": false, + "properties": { + "DeleteSourceFromS3": { + "description": "Set to true to delete a version's source bundle from Amazon S3 when Elastic Beanstalk deletes the application version.", + "type": "boolean" + }, + "Enabled": { + "description": "Specify true to apply the rule, or false to disable it.", + "type": "boolean" + }, + "MaxAgeInDays": { + "description": "Specify the number of days to retain an application versions.", + "type": "integer" + } + }, + "type": "object" + }, + "MaxCountRule": { + "additionalProperties": false, + "properties": { + "DeleteSourceFromS3": { + "description": "Set to true to delete a version's source bundle from Amazon S3 when Elastic Beanstalk deletes the application version.", + "type": "boolean" + }, + "Enabled": { + "description": "Specify true to apply the rule, or false to disable it.", + "type": "boolean" + }, + "MaxCount": { + "description": "Specify the maximum number of application versions to retain.", + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "The AWS::ElasticBeanstalk::Application resource specifies an Elastic Beanstalk application.", + "handlers": { + "create": { + "permissions": [ + "elasticbeanstalk:CreateApplication" + ] + }, + "delete": { + "permissions": [ + "elasticbeanstalk:DeleteApplication" + ] + }, + "list": { + "permissions": [ + "elasticbeanstalk:DescribeApplications" + ] + }, + "read": { + "permissions": [ + "elasticbeanstalk:DescribeApplications" + ] + }, + "update": { + "permissions": [ + "elasticbeanstalk:UpdateApplication", + "elasticbeanstalk:UpdateApplicationResourceLifecycle" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationName" + ], + "properties": { + "ApplicationName": { + "description": "A name for the Elastic Beanstalk application. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the application name.", + "type": "string" + }, + "Description": { + "description": "Your description of the application.", + "type": "string" + }, + "ResourceLifecycleConfig": { + "$ref": "#/definitions/ApplicationResourceLifecycleConfig", + "description": "Specifies an application resource lifecycle configuration to prevent your application from accumulating too many versions." + } + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticbeanstalk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ElasticBeanstalk::Application" +} diff --git a/src/schema/aws-elasticbeanstalk-applicationversion.json b/src/schema/aws-elasticbeanstalk-applicationversion.json index 4d970efb..9d283370 100644 --- a/src/schema/aws-elasticbeanstalk-applicationversion.json +++ b/src/schema/aws-elasticbeanstalk-applicationversion.json @@ -1,94 +1,94 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SourceBundle", - "/properties/ApplicationName" - ], - "definitions": { - "SourceBundle": { - "additionalProperties": false, - "properties": { - "S3Bucket": { - "description": "The Amazon S3 bucket where the data is located.", - "type": "string" - }, - "S3Key": { - "description": "The Amazon S3 key where the data is located.", - "type": "string" - } - }, - "required": [ - "S3Bucket", - "S3Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ElasticBeanstalk::ApplicationVersion", - "handlers": { - "create": { - "permissions": [ - "elasticbeanstalk:CreateApplicationVersion", - "elasticbeanstalk:DescribeApplicationVersions", - "s3:GetObject", - "s3:PutObject" - ] - }, - "delete": { - "permissions": [ - "elasticbeanstalk:DeleteApplicationVersion" - ] - }, - "list": { - "permissions": [ - "elasticbeanstalk:DescribeApplicationVersions" - ] - }, - "read": { - "permissions": [ - "elasticbeanstalk:DescribeApplicationVersions" - ] - }, - "update": { - "permissions": [ - "elasticbeanstalk:UpdateApplicationVersion" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationName", - "/properties/Id" - ], - "properties": { - "ApplicationName": { - "description": "The name of the Elastic Beanstalk application that is associated with this application version. ", - "type": "string" - }, - "Description": { - "description": "A description of this application version.", - "type": "string" - }, - "Id": { - "type": "string" - }, - "SourceBundle": { - "$ref": "#/definitions/SourceBundle", - "description": "The Amazon S3 bucket and key that identify the location of the source bundle for this version. " - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ApplicationName", - "SourceBundle" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticbeanstalk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ElasticBeanstalk::ApplicationVersion" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SourceBundle", + "/properties/ApplicationName" + ], + "definitions": { + "SourceBundle": { + "additionalProperties": false, + "properties": { + "S3Bucket": { + "description": "The Amazon S3 bucket where the data is located.", + "type": "string" + }, + "S3Key": { + "description": "The Amazon S3 key where the data is located.", + "type": "string" + } + }, + "required": [ + "S3Bucket", + "S3Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ElasticBeanstalk::ApplicationVersion", + "handlers": { + "create": { + "permissions": [ + "elasticbeanstalk:CreateApplicationVersion", + "elasticbeanstalk:DescribeApplicationVersions", + "s3:GetObject", + "s3:PutObject" + ] + }, + "delete": { + "permissions": [ + "elasticbeanstalk:DeleteApplicationVersion" + ] + }, + "list": { + "permissions": [ + "elasticbeanstalk:DescribeApplicationVersions" + ] + }, + "read": { + "permissions": [ + "elasticbeanstalk:DescribeApplicationVersions" + ] + }, + "update": { + "permissions": [ + "elasticbeanstalk:UpdateApplicationVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationName", + "/properties/Id" + ], + "properties": { + "ApplicationName": { + "description": "The name of the Elastic Beanstalk application that is associated with this application version. ", + "type": "string" + }, + "Description": { + "description": "A description of this application version.", + "type": "string" + }, + "Id": { + "type": "string" + }, + "SourceBundle": { + "$ref": "#/definitions/SourceBundle", + "description": "The Amazon S3 bucket and key that identify the location of the source bundle for this version. " + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationName", + "SourceBundle" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticbeanstalk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ElasticBeanstalk::ApplicationVersion" +} diff --git a/src/schema/aws-elasticbeanstalk-configurationtemplate.json b/src/schema/aws-elasticbeanstalk-configurationtemplate.json index c6bf04d7..201e00e7 100644 --- a/src/schema/aws-elasticbeanstalk-configurationtemplate.json +++ b/src/schema/aws-elasticbeanstalk-configurationtemplate.json @@ -1,146 +1,146 @@ -{ - "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/master/src/main/resources/schema/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationName", - "/properties/EnvironmentId", - "/properties/PlatformArn", - "/properties/SolutionStackName", - "/properties/SourceConfiguration" - ], - "definitions": { - "ConfigurationOptionSetting": { - "additionalProperties": false, - "properties": { - "Namespace": { - "description": "A unique namespace that identifies the option's associated AWS resource.", - "type": "string" - }, - "OptionName": { - "description": "The name of the configuration option.", - "type": "string" - }, - "ResourceName": { - "description": "A unique resource name for the option setting. Use it for a time\u2013based scaling configuration option. ", - "type": "string" - }, - "Value": { - "description": "The current value for the configuration option.", - "type": "string" - } - }, - "required": [ - "Namespace", - "OptionName" - ], - "type": "object" - }, - "SourceConfiguration": { - "additionalProperties": false, - "properties": { - "ApplicationName": { - "description": "The name of the application associated with the configuration.", - "type": "string" - }, - "TemplateName": { - "description": "The name of the configuration template.", - "type": "string" - } - }, - "required": [ - "TemplateName", - "ApplicationName" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ElasticBeanstalk::ConfigurationTemplate", - "handlers": { - "create": { - "permissions": [ - "elasticbeanstalk:CreateConfigurationTemplate" - ] - }, - "delete": { - "permissions": [ - "elasticbeanstalk:DeleteConfigurationTemplate", - "elasticbeanstalk:DescribeConfigurationSettings" - ] - }, - "list": { - "permissions": [ - "elasticbeanstalk:DescribeApplications" - ] - }, - "read": { - "permissions": [ - "elasticbeanstalk:DescribeConfigurationSettings" - ] - }, - "update": { - "permissions": [ - "elasticbeanstalk:UpdateConfigurationTemplate" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationName", - "/properties/TemplateName" - ], - "properties": { - "ApplicationName": { - "description": "The name of the Elastic Beanstalk application to associate with this configuration template. ", - "type": "string" - }, - "Description": { - "description": "An optional description for this configuration.", - "type": "string" - }, - "EnvironmentId": { - "description": "The ID of an environment whose settings you want to use to create the configuration template. You must specify EnvironmentId if you don't specify PlatformArn, SolutionStackName, or SourceConfiguration. ", - "type": "string" - }, - "OptionSettings": { - "arrayType": "AttributeList", - "description": "Option values for the Elastic Beanstalk configuration, such as the instance type. If specified, these values override the values obtained from the solution stack or the source configuration template. For a complete list of Elastic Beanstalk configuration options, see [Option Values](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options.html) in the AWS Elastic Beanstalk Developer Guide. ", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ConfigurationOptionSetting" - }, - "type": "array", - "uniqueItems": false - }, - "PlatformArn": { - "description": "The Amazon Resource Name (ARN) of the custom platform. For more information, see [Custom Platforms](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom-platforms.html) in the AWS Elastic Beanstalk Developer Guide. ", - "type": "string" - }, - "SolutionStackName": { - "description": "The name of an Elastic Beanstalk solution stack (platform version) that this configuration uses. For example, 64bit Amazon Linux 2013.09 running Tomcat 7 Java 7. A solution stack specifies the operating system, runtime, and application server for a configuration template. It also determines the set of configuration options as well as the possible and default values. For more information, see [Supported Platforms](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.html) in the AWS Elastic Beanstalk Developer Guide.\n\n You must specify SolutionStackName if you don't specify PlatformArn, EnvironmentId, or SourceConfiguration.\n\n Use the ListAvailableSolutionStacks API to obtain a list of available solution stacks. ", - "type": "string" - }, - "SourceConfiguration": { - "$ref": "#/definitions/SourceConfiguration", - "description": "An Elastic Beanstalk configuration template to base this one on. If specified, Elastic Beanstalk uses the configuration values from the specified configuration template to create a new configuration.\n\nValues specified in OptionSettings override any values obtained from the SourceConfiguration.\n\nYou must specify SourceConfiguration if you don't specify PlatformArn, EnvironmentId, or SolutionStackName.\n\nConstraint: If both solution stack name and source configuration are specified, the solution stack of the source configuration template must match the specified solution stack name. " - }, - "TemplateName": { - "description": "The name of the configuration template", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/TemplateName" - ], - "required": [ - "ApplicationName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticbeanstalk.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ElasticBeanstalk::ConfigurationTemplate", - "writeOnlyProperties": [ - "/properties/EnvironmentId", - "/properties/SourceConfiguration/ApplicationName", - "/properties/SourceConfiguration/TemplateName" - ] -} +{ + "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/master/src/main/resources/schema/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationName", + "/properties/EnvironmentId", + "/properties/PlatformArn", + "/properties/SolutionStackName", + "/properties/SourceConfiguration" + ], + "definitions": { + "ConfigurationOptionSetting": { + "additionalProperties": false, + "properties": { + "Namespace": { + "description": "A unique namespace that identifies the option's associated AWS resource.", + "type": "string" + }, + "OptionName": { + "description": "The name of the configuration option.", + "type": "string" + }, + "ResourceName": { + "description": "A unique resource name for the option setting. Use it for a time\u2013based scaling configuration option. ", + "type": "string" + }, + "Value": { + "description": "The current value for the configuration option.", + "type": "string" + } + }, + "required": [ + "Namespace", + "OptionName" + ], + "type": "object" + }, + "SourceConfiguration": { + "additionalProperties": false, + "properties": { + "ApplicationName": { + "description": "The name of the application associated with the configuration.", + "type": "string" + }, + "TemplateName": { + "description": "The name of the configuration template.", + "type": "string" + } + }, + "required": [ + "TemplateName", + "ApplicationName" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ElasticBeanstalk::ConfigurationTemplate", + "handlers": { + "create": { + "permissions": [ + "elasticbeanstalk:CreateConfigurationTemplate" + ] + }, + "delete": { + "permissions": [ + "elasticbeanstalk:DeleteConfigurationTemplate", + "elasticbeanstalk:DescribeConfigurationSettings" + ] + }, + "list": { + "permissions": [ + "elasticbeanstalk:DescribeApplications" + ] + }, + "read": { + "permissions": [ + "elasticbeanstalk:DescribeConfigurationSettings" + ] + }, + "update": { + "permissions": [ + "elasticbeanstalk:UpdateConfigurationTemplate" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationName", + "/properties/TemplateName" + ], + "properties": { + "ApplicationName": { + "description": "The name of the Elastic Beanstalk application to associate with this configuration template. ", + "type": "string" + }, + "Description": { + "description": "An optional description for this configuration.", + "type": "string" + }, + "EnvironmentId": { + "description": "The ID of an environment whose settings you want to use to create the configuration template. You must specify EnvironmentId if you don't specify PlatformArn, SolutionStackName, or SourceConfiguration. ", + "type": "string" + }, + "OptionSettings": { + "arrayType": "AttributeList", + "description": "Option values for the Elastic Beanstalk configuration, such as the instance type. If specified, these values override the values obtained from the solution stack or the source configuration template. For a complete list of Elastic Beanstalk configuration options, see [Option Values](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options.html) in the AWS Elastic Beanstalk Developer Guide. ", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ConfigurationOptionSetting" + }, + "type": "array", + "uniqueItems": false + }, + "PlatformArn": { + "description": "The Amazon Resource Name (ARN) of the custom platform. For more information, see [Custom Platforms](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom-platforms.html) in the AWS Elastic Beanstalk Developer Guide. ", + "type": "string" + }, + "SolutionStackName": { + "description": "The name of an Elastic Beanstalk solution stack (platform version) that this configuration uses. For example, 64bit Amazon Linux 2013.09 running Tomcat 7 Java 7. A solution stack specifies the operating system, runtime, and application server for a configuration template. It also determines the set of configuration options as well as the possible and default values. For more information, see [Supported Platforms](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.html) in the AWS Elastic Beanstalk Developer Guide.\n\n You must specify SolutionStackName if you don't specify PlatformArn, EnvironmentId, or SourceConfiguration.\n\n Use the ListAvailableSolutionStacks API to obtain a list of available solution stacks. ", + "type": "string" + }, + "SourceConfiguration": { + "$ref": "#/definitions/SourceConfiguration", + "description": "An Elastic Beanstalk configuration template to base this one on. If specified, Elastic Beanstalk uses the configuration values from the specified configuration template to create a new configuration.\n\nValues specified in OptionSettings override any values obtained from the SourceConfiguration.\n\nYou must specify SourceConfiguration if you don't specify PlatformArn, EnvironmentId, or SolutionStackName.\n\nConstraint: If both solution stack name and source configuration are specified, the solution stack of the source configuration template must match the specified solution stack name. " + }, + "TemplateName": { + "description": "The name of the configuration template", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TemplateName" + ], + "required": [ + "ApplicationName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticbeanstalk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::ElasticBeanstalk::ConfigurationTemplate", + "writeOnlyProperties": [ + "/properties/EnvironmentId", + "/properties/SourceConfiguration/ApplicationName", + "/properties/SourceConfiguration/TemplateName" + ] +} diff --git a/src/schema/aws-elasticbeanstalk-environment.json b/src/schema/aws-elasticbeanstalk-environment.json index 35b24627..bb259c8a 100644 --- a/src/schema/aws-elasticbeanstalk-environment.json +++ b/src/schema/aws-elasticbeanstalk-environment.json @@ -1,219 +1,219 @@ -{ - "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/master/src/main/resources/schema/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CNAMEPrefix", - "/properties/EnvironmentName", - "/properties/ApplicationName", - "/properties/SolutionStackName", - "/properties/Tier/Name", - "/properties/Tier/Type" - ], - "definitions": { - "OptionSetting": { - "additionalProperties": false, - "properties": { - "Namespace": { - "description": "A unique namespace that identifies the option's associated AWS resource.", - "type": "string" - }, - "OptionName": { - "description": "The name of the configuration option.", - "type": "string" - }, - "ResourceName": { - "description": "A unique resource name for the option setting. Use it for a time\u2013based scaling configuration option.", - "type": "string" - }, - "Value": { - "description": "The current value for the configuration option.", - "type": "string" - } - }, - "required": [ - "Namespace", - "OptionName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key name of the tag.", - "type": "string" - }, - "Value": { - "description": "The value for the tag.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Tier": { - "additionalProperties": false, - "properties": { - "Name": { - "description": "The name of this environment tier.", - "type": "string" - }, - "Type": { - "description": "The type of this environment tier.", - "type": "string" - }, - "Version": { - "description": "The version of this environment tier. When you don't set a value to it, Elastic Beanstalk uses the latest compatible worker tier version.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ElasticBeanstalk::Environment", - "handlers": { - "create": { - "permissions": [ - "elasticbeanstalk:DescribeEnvironments", - "elasticbeanstalk:CreateEnvironment", - "elasticbeanstalk:AddTags", - "elasticbeanstalk:ListTagsForResource", - "iam:PassRole" - ], - "timeoutInMinutes": 120 - }, - "delete": { - "permissions": [ - "elasticbeanstalk:DescribeEnvironments", - "elasticbeanstalk:TerminateEnvironment" - ], - "timeoutInMinutes": 210 - }, - "list": { - "permissions": [ - "elasticbeanstalk:DescribeEnvironments", - "elasticbeanstalk:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "elasticbeanstalk:DescribeEnvironments", - "elasticbeanstalk:DescribeConfigurationSettings", - "elasticbeanstalk:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "elasticbeanstalk:DescribeEnvironments", - "elasticbeanstalk:UpdateEnvironment", - "elasticbeanstalk:AssociateEnvironmentOperationsRole", - "elasticbeanstalk:DisassociateEnvironmentOperationsRole", - "elasticbeanstalk:AddTags", - "elasticbeanstalk:ListTagsForResource", - "elasticbeanstalk:RemoveTags", - "s3:GetBucketLocation", - "s3:GetBucketPolicy", - "s3:ListBucket", - "s3:PutBucketPolicy", - "iam:PassRole" - ], - "timeoutInMinutes": 300 - } - }, - "primaryIdentifier": [ - "/properties/EnvironmentName" - ], - "properties": { - "ApplicationName": { - "description": "The name of the application that is associated with this environment.", - "type": "string" - }, - "CNAMEPrefix": { - "description": "If specified, the environment attempts to use this value as the prefix for the CNAME in your Elastic Beanstalk environment URL. If not specified, the CNAME is generated automatically by appending a random alphanumeric string to the environment name.", - "type": "string" - }, - "Description": { - "description": "Your description for this environment.", - "type": "string" - }, - "EndpointURL": { - "type": "string" - }, - "EnvironmentName": { - "description": "A unique name for the environment.", - "type": "string" - }, - "OperationsRole": { - "description": "The Amazon Resource Name (ARN) of an existing IAM role to be used as the environment's operations role.", - "type": "string" - }, - "OptionSettings": { - "description": "Key-value pairs defining configuration options for this environment, such as the instance type.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/OptionSetting" - }, - "type": "array", - "uniqueItems": false - }, - "PlatformArn": { - "description": "The Amazon Resource Name (ARN) of the custom platform to use with the environment.", - "type": "string" - }, - "SolutionStackName": { - "description": "The name of an Elastic Beanstalk solution stack (platform version) to use with the environment.", - "type": "string" - }, - "Tags": { - "description": "Specifies the tags applied to resources in the environment.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TemplateName": { - "description": "The name of the Elastic Beanstalk configuration template to use with the environment.", - "type": "string" - }, - "Tier": { - "$ref": "#/definitions/Tier", - "description": "Specifies the tier to use in creating this environment. The environment tier that you choose determines whether Elastic Beanstalk provisions resources to support a web application that handles HTTP(S) requests or a web application that handles background-processing tasks." - }, - "VersionLabel": { - "description": "The name of the application version to deploy.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/EndpointURL" - ], - "required": [ - "ApplicationName" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "elasticbeanstalk:AddTags", - "elasticbeanstalk:RemoveTags", - "elasticbeanstalk:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElasticBeanstalk::Environment", - "writeOnlyProperties": [ - "/properties/TemplateName", - "/properties/OptionSettings", - "/properties/OptionSettings/*/OptionName", - "/properties/OptionSettings/*/ResourceName", - "/properties/OptionSettings/*/Namespace", - "/properties/OptionSettings/*/Value" - ] -} +{ + "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/master/src/main/resources/schema/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CNAMEPrefix", + "/properties/EnvironmentName", + "/properties/ApplicationName", + "/properties/SolutionStackName", + "/properties/Tier/Name", + "/properties/Tier/Type" + ], + "definitions": { + "OptionSetting": { + "additionalProperties": false, + "properties": { + "Namespace": { + "description": "A unique namespace that identifies the option's associated AWS resource.", + "type": "string" + }, + "OptionName": { + "description": "The name of the configuration option.", + "type": "string" + }, + "ResourceName": { + "description": "A unique resource name for the option setting. Use it for a time\u2013based scaling configuration option.", + "type": "string" + }, + "Value": { + "description": "The current value for the configuration option.", + "type": "string" + } + }, + "required": [ + "Namespace", + "OptionName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag.", + "type": "string" + }, + "Value": { + "description": "The value for the tag.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "Tier": { + "additionalProperties": false, + "properties": { + "Name": { + "description": "The name of this environment tier.", + "type": "string" + }, + "Type": { + "description": "The type of this environment tier.", + "type": "string" + }, + "Version": { + "description": "The version of this environment tier. When you don't set a value to it, Elastic Beanstalk uses the latest compatible worker tier version.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ElasticBeanstalk::Environment", + "handlers": { + "create": { + "permissions": [ + "elasticbeanstalk:DescribeEnvironments", + "elasticbeanstalk:CreateEnvironment", + "elasticbeanstalk:AddTags", + "elasticbeanstalk:ListTagsForResource", + "iam:PassRole" + ], + "timeoutInMinutes": 120 + }, + "delete": { + "permissions": [ + "elasticbeanstalk:DescribeEnvironments", + "elasticbeanstalk:TerminateEnvironment" + ], + "timeoutInMinutes": 210 + }, + "list": { + "permissions": [ + "elasticbeanstalk:DescribeEnvironments", + "elasticbeanstalk:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "elasticbeanstalk:DescribeEnvironments", + "elasticbeanstalk:DescribeConfigurationSettings", + "elasticbeanstalk:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "elasticbeanstalk:DescribeEnvironments", + "elasticbeanstalk:UpdateEnvironment", + "elasticbeanstalk:AssociateEnvironmentOperationsRole", + "elasticbeanstalk:DisassociateEnvironmentOperationsRole", + "elasticbeanstalk:AddTags", + "elasticbeanstalk:ListTagsForResource", + "elasticbeanstalk:RemoveTags", + "s3:GetBucketLocation", + "s3:GetBucketPolicy", + "s3:ListBucket", + "s3:PutBucketPolicy", + "iam:PassRole" + ], + "timeoutInMinutes": 300 + } + }, + "primaryIdentifier": [ + "/properties/EnvironmentName" + ], + "properties": { + "ApplicationName": { + "description": "The name of the application that is associated with this environment.", + "type": "string" + }, + "CNAMEPrefix": { + "description": "If specified, the environment attempts to use this value as the prefix for the CNAME in your Elastic Beanstalk environment URL. If not specified, the CNAME is generated automatically by appending a random alphanumeric string to the environment name.", + "type": "string" + }, + "Description": { + "description": "Your description for this environment.", + "type": "string" + }, + "EndpointURL": { + "type": "string" + }, + "EnvironmentName": { + "description": "A unique name for the environment.", + "type": "string" + }, + "OperationsRole": { + "description": "The Amazon Resource Name (ARN) of an existing IAM role to be used as the environment's operations role.", + "type": "string" + }, + "OptionSettings": { + "description": "Key-value pairs defining configuration options for this environment, such as the instance type.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/OptionSetting" + }, + "type": "array", + "uniqueItems": false + }, + "PlatformArn": { + "description": "The Amazon Resource Name (ARN) of the custom platform to use with the environment.", + "type": "string" + }, + "SolutionStackName": { + "description": "The name of an Elastic Beanstalk solution stack (platform version) to use with the environment.", + "type": "string" + }, + "Tags": { + "description": "Specifies the tags applied to resources in the environment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TemplateName": { + "description": "The name of the Elastic Beanstalk configuration template to use with the environment.", + "type": "string" + }, + "Tier": { + "$ref": "#/definitions/Tier", + "description": "Specifies the tier to use in creating this environment. The environment tier that you choose determines whether Elastic Beanstalk provisions resources to support a web application that handles HTTP(S) requests or a web application that handles background-processing tasks." + }, + "VersionLabel": { + "description": "The name of the application version to deploy.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/EndpointURL" + ], + "required": [ + "ApplicationName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "elasticbeanstalk:AddTags", + "elasticbeanstalk:RemoveTags", + "elasticbeanstalk:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticBeanstalk::Environment", + "writeOnlyProperties": [ + "/properties/TemplateName", + "/properties/OptionSettings", + "/properties/OptionSettings/*/OptionName", + "/properties/OptionSettings/*/ResourceName", + "/properties/OptionSettings/*/Namespace", + "/properties/OptionSettings/*/Value" + ] +} diff --git a/src/schema/aws-elasticloadbalancing-loadbalancer.json b/src/schema/aws-elasticloadbalancing-loadbalancer.json index d6a1a3da..e1ed1ca5 100644 --- a/src/schema/aws-elasticloadbalancing-loadbalancer.json +++ b/src/schema/aws-elasticloadbalancing-loadbalancer.json @@ -1,321 +1,321 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LoadBalancerName", - "/properties/Scheme" - ], - "definitions": { - "AccessLoggingPolicy": { - "additionalProperties": false, - "properties": { - "EmitInterval": { - "type": "integer" - }, - "Enabled": { - "type": "boolean" - }, - "S3BucketName": { - "type": "string" - }, - "S3BucketPrefix": { - "type": "string" - } - }, - "required": [ - "Enabled", - "S3BucketName" - ], - "type": "object" - }, - "AppCookieStickinessPolicy": { - "additionalProperties": false, - "properties": { - "CookieName": { - "type": "string" - }, - "PolicyName": { - "type": "string" - } - }, - "required": [ - "PolicyName", - "CookieName" - ], - "type": "object" - }, - "ConnectionDrainingPolicy": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "Timeout": { - "type": "integer" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "ConnectionSettings": { - "additionalProperties": false, - "properties": { - "IdleTimeout": { - "type": "integer" - } - }, - "required": [ - "IdleTimeout" - ], - "type": "object" - }, - "HealthCheck": { - "additionalProperties": false, - "properties": { - "HealthyThreshold": { - "type": "string" - }, - "Interval": { - "type": "string" - }, - "Target": { - "type": "string" - }, - "Timeout": { - "type": "string" - }, - "UnhealthyThreshold": { - "type": "string" - } - }, - "required": [ - "Target", - "UnhealthyThreshold", - "Timeout", - "HealthyThreshold", - "Interval" - ], - "type": "object" - }, - "LBCookieStickinessPolicy": { - "additionalProperties": false, - "properties": { - "CookieExpirationPeriod": { - "type": "string" - }, - "PolicyName": { - "type": "string" - } - }, - "type": "object" - }, - "Listeners": { - "additionalProperties": false, - "properties": { - "InstancePort": { - "type": "string" - }, - "InstanceProtocol": { - "type": "string" - }, - "LoadBalancerPort": { - "type": "string" - }, - "PolicyNames": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Protocol": { - "type": "string" - }, - "SSLCertificateId": { - "type": "string" - } - }, - "required": [ - "InstancePort", - "LoadBalancerPort", - "Protocol" - ], - "type": "object" - }, - "Policies": { - "additionalProperties": false, - "properties": { - "Attributes": { - "items": { - "type": "object" - }, - "type": "array", - "uniqueItems": true - }, - "InstancePorts": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "LoadBalancerPorts": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "PolicyName": { - "type": "string" - }, - "PolicyType": { - "type": "string" - } - }, - "required": [ - "PolicyType", - "PolicyName", - "Attributes" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ElasticLoadBalancing::LoadBalancer", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AccessLoggingPolicy": { - "$ref": "#/definitions/AccessLoggingPolicy" - }, - "AppCookieStickinessPolicy": { - "items": { - "$ref": "#/definitions/AppCookieStickinessPolicy" - }, - "type": "array", - "uniqueItems": true - }, - "AvailabilityZones": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "CanonicalHostedZoneName": { - "type": "string" - }, - "CanonicalHostedZoneNameID": { - "type": "string" - }, - "ConnectionDrainingPolicy": { - "$ref": "#/definitions/ConnectionDrainingPolicy" - }, - "ConnectionSettings": { - "$ref": "#/definitions/ConnectionSettings" - }, - "CrossZone": { - "type": "boolean" - }, - "DNSName": { - "type": "string" - }, - "HealthCheck": { - "$ref": "#/definitions/HealthCheck" - }, - "Id": { - "type": "string" - }, - "Instances": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "LBCookieStickinessPolicy": { - "items": { - "$ref": "#/definitions/LBCookieStickinessPolicy" - }, - "type": "array", - "uniqueItems": true - }, - "Listeners": { - "items": { - "$ref": "#/definitions/Listeners" - }, - "type": "array", - "uniqueItems": true - }, - "LoadBalancerName": { - "type": "string" - }, - "Policies": { - "items": { - "$ref": "#/definitions/Policies" - }, - "type": "array", - "uniqueItems": true - }, - "Scheme": { - "type": "string" - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "SourceSecurityGroupGroupName": { - "type": "string" - }, - "SourceSecurityGroupOwnerAlias": { - "type": "string" - }, - "Subnets": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/CanonicalHostedZoneName", - "/properties/CanonicalHostedZoneNameID", - "/properties/SourceSecurityGroup.GroupName", - "/properties/DNSName", - "/properties/SourceSecurityGroup.OwnerAlias" - ], - "required": [ - "Listeners" - ], - "typeName": "AWS::ElasticLoadBalancing::LoadBalancer" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/Scheme" + ], + "definitions": { + "AccessLoggingPolicy": { + "additionalProperties": false, + "properties": { + "EmitInterval": { + "type": "integer" + }, + "Enabled": { + "type": "boolean" + }, + "S3BucketName": { + "type": "string" + }, + "S3BucketPrefix": { + "type": "string" + } + }, + "required": [ + "Enabled", + "S3BucketName" + ], + "type": "object" + }, + "AppCookieStickinessPolicy": { + "additionalProperties": false, + "properties": { + "CookieName": { + "type": "string" + }, + "PolicyName": { + "type": "string" + } + }, + "required": [ + "PolicyName", + "CookieName" + ], + "type": "object" + }, + "ConnectionDrainingPolicy": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "Timeout": { + "type": "integer" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "ConnectionSettings": { + "additionalProperties": false, + "properties": { + "IdleTimeout": { + "type": "integer" + } + }, + "required": [ + "IdleTimeout" + ], + "type": "object" + }, + "HealthCheck": { + "additionalProperties": false, + "properties": { + "HealthyThreshold": { + "type": "string" + }, + "Interval": { + "type": "string" + }, + "Target": { + "type": "string" + }, + "Timeout": { + "type": "string" + }, + "UnhealthyThreshold": { + "type": "string" + } + }, + "required": [ + "Target", + "UnhealthyThreshold", + "Timeout", + "HealthyThreshold", + "Interval" + ], + "type": "object" + }, + "LBCookieStickinessPolicy": { + "additionalProperties": false, + "properties": { + "CookieExpirationPeriod": { + "type": "string" + }, + "PolicyName": { + "type": "string" + } + }, + "type": "object" + }, + "Listeners": { + "additionalProperties": false, + "properties": { + "InstancePort": { + "type": "string" + }, + "InstanceProtocol": { + "type": "string" + }, + "LoadBalancerPort": { + "type": "string" + }, + "PolicyNames": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Protocol": { + "type": "string" + }, + "SSLCertificateId": { + "type": "string" + } + }, + "required": [ + "InstancePort", + "LoadBalancerPort", + "Protocol" + ], + "type": "object" + }, + "Policies": { + "additionalProperties": false, + "properties": { + "Attributes": { + "items": { + "type": "object" + }, + "type": "array", + "uniqueItems": true + }, + "InstancePorts": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerPorts": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "PolicyName": { + "type": "string" + }, + "PolicyType": { + "type": "string" + } + }, + "required": [ + "PolicyType", + "PolicyName", + "Attributes" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ElasticLoadBalancing::LoadBalancer", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AccessLoggingPolicy": { + "$ref": "#/definitions/AccessLoggingPolicy" + }, + "AppCookieStickinessPolicy": { + "items": { + "$ref": "#/definitions/AppCookieStickinessPolicy" + }, + "type": "array", + "uniqueItems": true + }, + "AvailabilityZones": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "CanonicalHostedZoneName": { + "type": "string" + }, + "CanonicalHostedZoneNameID": { + "type": "string" + }, + "ConnectionDrainingPolicy": { + "$ref": "#/definitions/ConnectionDrainingPolicy" + }, + "ConnectionSettings": { + "$ref": "#/definitions/ConnectionSettings" + }, + "CrossZone": { + "type": "boolean" + }, + "DNSName": { + "type": "string" + }, + "HealthCheck": { + "$ref": "#/definitions/HealthCheck" + }, + "Id": { + "type": "string" + }, + "Instances": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "LBCookieStickinessPolicy": { + "items": { + "$ref": "#/definitions/LBCookieStickinessPolicy" + }, + "type": "array", + "uniqueItems": true + }, + "Listeners": { + "items": { + "$ref": "#/definitions/Listeners" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerName": { + "type": "string" + }, + "Policies": { + "items": { + "$ref": "#/definitions/Policies" + }, + "type": "array", + "uniqueItems": true + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SourceSecurityGroupGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerAlias": { + "type": "string" + }, + "Subnets": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/CanonicalHostedZoneName", + "/properties/CanonicalHostedZoneNameID", + "/properties/SourceSecurityGroup.GroupName", + "/properties/DNSName", + "/properties/SourceSecurityGroup.OwnerAlias" + ], + "required": [ + "Listeners" + ], + "typeName": "AWS::ElasticLoadBalancing::LoadBalancer" +} diff --git a/src/schema/aws-elasticloadbalancingv2-listener.json b/src/schema/aws-elasticloadbalancingv2-listener.json index cff36cf5..aed55460 100644 --- a/src/schema/aws-elasticloadbalancingv2-listener.json +++ b/src/schema/aws-elasticloadbalancingv2-listener.json @@ -1,514 +1,518 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LoadBalancerArn" - ], - "definitions": { - "Action": { - "additionalProperties": false, - "description": "Specifies an action for a listener rule.", - "properties": { - "AuthenticateCognitoConfig": { - "$ref": "#/definitions/AuthenticateCognitoConfig", - "description": "[HTTPS listeners] Information for using Amazon Cognito to authenticate users. Specify only when ``Type`` is ``authenticate-cognito``." - }, - "AuthenticateOidcConfig": { - "$ref": "#/definitions/AuthenticateOidcConfig", - "description": "[HTTPS listeners] Information about an identity provider that is compliant with OpenID Connect (OIDC). Specify only when ``Type`` is ``authenticate-oidc``." - }, - "FixedResponseConfig": { - "$ref": "#/definitions/FixedResponseConfig", - "description": "[Application Load Balancer] Information for creating an action that returns a custom HTTP response. Specify only when ``Type`` is ``fixed-response``." - }, - "ForwardConfig": { - "$ref": "#/definitions/ForwardConfig", - "description": "Information for creating an action that distributes requests among one or more target groups. For Network Load Balancers, you can specify a single target group. Specify only when ``Type`` is ``forward``. If you specify both ``ForwardConfig`` and ``TargetGroupArn``, you can specify only one target group using ``ForwardConfig`` and it must be the same target group specified in ``TargetGroupArn``." - }, - "Order": { - "description": "The order for the action. This value is required for rules with multiple actions. The action with the lowest value for order is performed first.", - "type": "integer" - }, - "RedirectConfig": { - "$ref": "#/definitions/RedirectConfig", - "description": "[Application Load Balancer] Information for creating a redirect action. Specify only when ``Type`` is ``redirect``." - }, - "TargetGroupArn": { - "description": "The Amazon Resource Name (ARN) of the target group. Specify only when ``Type`` is ``forward`` and you want to route to a single target group. To route to one or more target groups, use ``ForwardConfig`` instead.", - "relationshipRef": { - "propertyPath": "/properties/TargetGroupArn", - "typeName": "AWS::ElasticLoadBalancingV2::TargetGroup" - }, - "type": "string" - }, - "Type": { - "description": "The type of action.", - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "AuthenticateCognitoConfig": { - "additionalProperties": false, - "description": "Specifies information required when integrating with Amazon Cognito to authenticate users.", - "properties": { - "AuthenticationRequestExtraParams": { - "description": "The query parameters (up to 10) to include in the redirect request to the authorization endpoint.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "OnUnauthenticatedRequest": { - "description": "The behavior if the user is not authenticated. The following are possible values:\n + deny```` - Return an HTTP 401 Unauthorized error.\n + allow```` - Allow the request to be forwarded to the target.\n + authenticate```` - Redirect the request to the IdP authorization endpoint. This is the default value.", - "type": "string" - }, - "Scope": { - "description": "The set of user claims to be requested from the IdP. The default is ``openid``.\n To verify which scope values your IdP supports and how to separate multiple values, see the documentation for your IdP.", - "type": "string" - }, - "SessionCookieName": { - "description": "The name of the cookie used to maintain session information. The default is AWSELBAuthSessionCookie.", - "type": "string" - }, - "SessionTimeout": { - "description": "The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days).", - "type": "string" - }, - "UserPoolArn": { - "description": "The Amazon Resource Name (ARN) of the Amazon Cognito user pool.", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::Cognito::UserPool" - }, - "type": "string" - }, - "UserPoolClientId": { - "anyOf": [ - { - "relationshipRef": { - "propertyPath": "/properties/UserPoolId", - "typeName": "AWS::Cognito::UserPoolClient" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/ClientId", - "typeName": "AWS::Cognito::UserPoolClient" - } - } - ], - "description": "The ID of the Amazon Cognito user pool client.", - "type": "string" - }, - "UserPoolDomain": { - "description": "The domain prefix or fully-qualified domain name of the Amazon Cognito user pool.", - "relationshipRef": { - "propertyPath": "/properties/Id", - "typeName": "AWS::Cognito::UserPoolDomain" - }, - "type": "string" - } - }, - "required": [ - "UserPoolClientId", - "UserPoolDomain", - "UserPoolArn" - ], - "type": "object" - }, - "AuthenticateOidcConfig": { - "additionalProperties": false, - "anyOf": [ - { - "required": [ - "ClientSecret" - ] - }, - { - "required": [ - "UseExistingClientSecret" - ] - } - ], - "description": "Specifies information required using an identity provide (IdP) that is compliant with OpenID Connect (OIDC) to authenticate users.", - "properties": { - "AuthenticationRequestExtraParams": { - "description": "The query parameters (up to 10) to include in the redirect request to the authorization endpoint.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "AuthorizationEndpoint": { - "description": "The authorization endpoint of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.", - "type": "string" - }, - "ClientId": { - "description": "The OAuth 2.0 client identifier.", - "type": "string" - }, - "ClientSecret": { - "description": "The OAuth 2.0 client secret. This parameter is required if you are creating a rule. If you are modifying a rule, you can omit this parameter if you set ``UseExistingClientSecret`` to true.", - "type": "string" - }, - "Issuer": { - "description": "The OIDC issuer identifier of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.", - "type": "string" - }, - "OnUnauthenticatedRequest": { - "description": "The behavior if the user is not authenticated. The following are possible values:\n + deny```` - Return an HTTP 401 Unauthorized error.\n + allow```` - Allow the request to be forwarded to the target.\n + authenticate```` - Redirect the request to the IdP authorization endpoint. This is the default value.", - "type": "string" - }, - "Scope": { - "description": "The set of user claims to be requested from the IdP. The default is ``openid``.\n To verify which scope values your IdP supports and how to separate multiple values, see the documentation for your IdP.", - "type": "string" - }, - "SessionCookieName": { - "description": "The name of the cookie used to maintain session information. The default is AWSELBAuthSessionCookie.", - "type": "string" - }, - "SessionTimeout": { - "description": "The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days).", - "type": "string" - }, - "TokenEndpoint": { - "description": "The token endpoint of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.", - "type": "string" - }, - "UseExistingClientSecret": { - "description": "Indicates whether to use the existing client secret when modifying a rule. If you are creating a rule, you can omit this parameter or set it to false.", - "type": "boolean" - }, - "UserInfoEndpoint": { - "description": "The user info endpoint of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.", - "type": "string" - } - }, - "required": [ - "TokenEndpoint", - "Issuer", - "UserInfoEndpoint", - "ClientId", - "AuthorizationEndpoint" - ], - "type": "object" - }, - "Certificate": { - "additionalProperties": false, - "description": "Specifies an SSL server certificate to use as the default certificate for a secure listener.", - "properties": { - "CertificateArn": { - "anyOf": [ - { - "relationshipRef": { - "propertyPath": "/properties/Id", - "typeName": "AWS::CertificateManager::Certificate" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::ServerCertificate" - } - } - ], - "description": "The Amazon Resource Name (ARN) of the certificate.", - "type": "string" - } - }, - "type": "object" - }, - "FixedResponseConfig": { - "additionalProperties": false, - "description": "Specifies information required when returning a custom HTTP response.", - "properties": { - "ContentType": { - "description": "The content type.\n Valid Values: text/plain | text/css | text/html | application/javascript | application/json", - "type": "string" - }, - "MessageBody": { - "description": "The message.", - "type": "string" - }, - "StatusCode": { - "description": "The HTTP response code (2XX, 4XX, or 5XX).", - "type": "string" - } - }, - "required": [ - "StatusCode" - ], - "type": "object" - }, - "ForwardConfig": { - "additionalProperties": false, - "description": "Information for creating an action that distributes requests among one or more target groups. For Network Load Balancers, you can specify a single target group. Specify only when ``Type`` is ``forward``. If you specify both ``ForwardConfig`` and ``TargetGroupArn``, you can specify only one target group using ``ForwardConfig`` and it must be the same target group specified in ``TargetGroupArn``.", - "properties": { - "TargetGroupStickinessConfig": { - "$ref": "#/definitions/TargetGroupStickinessConfig", - "description": "Information about the target group stickiness for a rule." - }, - "TargetGroups": { - "description": "Information about how traffic will be distributed between multiple target groups in a forward rule.", - "items": { - "$ref": "#/definitions/TargetGroupTuple" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "ListenerAttribute": { - "additionalProperties": false, - "description": "Information about a listener attribute.", - "properties": { - "Key": { - "description": "The name of the attribute.\n The following attribute is supported by Network Load Balancers, and Gateway Load Balancers.\n + ``tcp.idle_timeout.seconds`` - The tcp idle timeout value, in seconds. The valid range is 60-6000 seconds. The default is 350 seconds.", - "type": "string" - }, - "Value": { - "description": "The value of the attribute.", - "type": "string" - } - }, - "type": "object" - }, - "MutualAuthentication": { - "additionalProperties": false, - "description": "Specifies the configuration information for mutual authentication.", - "properties": { - "IgnoreClientCertificateExpiry": { - "description": "Indicates whether expired client certificates are ignored.", - "type": "boolean" - }, - "Mode": { - "description": "The client certificate handling method. Options are ``off``, ``passthrough`` or ``verify``. The default value is ``off``.", - "type": "string" - }, - "TrustStoreArn": { - "description": "The Amazon Resource Name (ARN) of the trust store.", - "type": "string" - } - }, - "type": "object" - }, - "RedirectConfig": { - "additionalProperties": false, - "description": "Information about a redirect action.\n A URI consists of the following components: protocol://hostname:port/path?query. You must modify at least one of the following components to avoid a redirect loop: protocol, hostname, port, or path. Any components that you do not modify retain their original values.\n You can reuse URI components using the following reserved keywords:\n + #{protocol}\n + #{host}\n + #{port}\n + #{path} (the leading \"/\" is removed)\n + #{query}\n \n For example, you can change the path to \"/new/#{path}\", the hostname to \"example.#{host}\", or the query to \"#{query}&value=xyz\".", - "properties": { - "Host": { - "description": "The hostname. This component is not percent-encoded. The hostname can contain #{host}.", - "type": "string" - }, - "Path": { - "description": "The absolute path, starting with the leading \"/\". This component is not percent-encoded. The path can contain #{host}, #{path}, and #{port}.", - "type": "string" - }, - "Port": { - "description": "The port. You can specify a value from 1 to 65535 or #{port}.", - "type": "string" - }, - "Protocol": { - "description": "The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You cannot redirect HTTPS to HTTP.", - "type": "string" - }, - "Query": { - "description": "The query parameters, URL-encoded when necessary, but not percent-encoded. Do not include the leading \"?\", as it is automatically added. You can specify any of the reserved keywords.", - "type": "string" - }, - "StatusCode": { - "description": "The HTTP redirect code. The redirect is either permanent (HTTP 301) or temporary (HTTP 302).", - "type": "string" - } - }, - "required": [ - "StatusCode" - ], - "type": "object" - }, - "TargetGroupStickinessConfig": { - "additionalProperties": false, - "description": "Information about the target group stickiness for a rule.", - "properties": { - "DurationSeconds": { - "description": "The time period, in seconds, during which requests from a client should be routed to the same target group. The range is 1-604800 seconds (7 days).", - "type": "integer" - }, - "Enabled": { - "description": "Indicates whether target group stickiness is enabled.", - "type": "boolean" - } - }, - "type": "object" - }, - "TargetGroupTuple": { - "additionalProperties": false, - "description": "Information about how traffic will be distributed between multiple target groups in a forward rule.", - "properties": { - "TargetGroupArn": { - "description": "The Amazon Resource Name (ARN) of the target group.", - "relationshipRef": { - "propertyPath": "/properties/TargetGroupArn", - "typeName": "AWS::ElasticLoadBalancingV2::TargetGroup" - }, - "type": "string" - }, - "Weight": { - "description": "The weight. The range is 0 to 999.", - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "Specifies a listener for an Application Load Balancer, Network Load Balancer, or Gateway Load Balancer.", - "handlers": { - "create": { - "permissions": [ - "elasticloadbalancing:CreateListener", - "elasticloadbalancing:DescribeListeners", - "cognito-idp:DescribeUserPoolClient", - "elasticloadbalancing:ModifyListenerAttributes" - ] - }, - "delete": { - "permissions": [ - "elasticloadbalancing:DeleteListener", - "elasticloadbalancing:DescribeListeners" - ] - }, - "list": { - "handlerSchema": { - "oneOf": [ - { - "required": [ - "LoadBalancerArn" - ] - }, - { - "required": [ - "ListenerArns" - ] - } - ], - "properties": { - "ListenerArns": { - "items": { - "$ref": "resource-schema.json#/properties/ListenerArn" - }, - "type": "array", - "uniqueItems": false - }, - "LoadBalancerArn": { - "$ref": "resource-schema.json#/properties/LoadBalancerArn" - } - } - }, - "permissions": [ - "elasticloadbalancing:DescribeListeners" - ] - }, - "read": { - "permissions": [ - "elasticloadbalancing:DescribeListeners", - "elasticloadbalancing:DescribeListenerAttributes" - ] - }, - "update": { - "permissions": [ - "elasticloadbalancing:ModifyListener", - "elasticloadbalancing:DescribeListeners", - "cognito-idp:DescribeUserPoolClient", - "elasticloadbalancing:ModifyListenerAttributes" - ] - } - }, - "primaryIdentifier": [ - "/properties/ListenerArn" - ], - "properties": { - "AlpnPolicy": { - "description": "[TLS listener] The name of the Application-Layer Protocol Negotiation (ALPN) policy.", - "items": { - "type": "string" - }, - "type": "array" - }, - "Certificates": { - "description": "The default SSL server certificate for a secure listener. You must provide exactly one certificate if the listener protocol is HTTPS or TLS.\n To create a certificate list for a secure listener, use [AWS::ElasticLoadBalancingV2::ListenerCertificate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenercertificate.html).", - "items": { - "$ref": "#/definitions/Certificate" - }, - "type": "array", - "uniqueItems": true - }, - "DefaultActions": { - "description": "The actions for the default rule. You cannot define a condition for a default rule.\n To create additional rules for an Application Load Balancer, use [AWS::ElasticLoadBalancingV2::ListenerRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html).", - "items": { - "$ref": "#/definitions/Action" - }, - "type": "array", - "uniqueItems": true - }, - "ListenerArn": { - "description": "", - "type": "string" - }, - "ListenerAttributes": { - "arrayType": "AttributeList", - "description": "The listener attributes.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ListenerAttribute" - }, - "type": "array", - "uniqueItems": true - }, - "LoadBalancerArn": { - "description": "The Amazon Resource Name (ARN) of the load balancer.", - "type": "string" - }, - "MutualAuthentication": { - "$ref": "#/definitions/MutualAuthentication", - "description": "The mutual authentication configuration information." - }, - "Port": { - "description": "The port on which the load balancer is listening. You cannot specify a port for a Gateway Load Balancer.", - "type": "integer" - }, - "Protocol": { - "description": "The protocol for connections from clients to the load balancer. For Application Load Balancers, the supported protocols are HTTP and HTTPS. For Network Load Balancers, the supported protocols are TCP, TLS, UDP, and TCP_UDP. You can\u2019t specify the UDP or TCP_UDP protocol if dual-stack mode is enabled. You cannot specify a protocol for a Gateway Load Balancer.", - "type": "string" - }, - "SslPolicy": { - "description": "[HTTPS and TLS listeners] The security policy that defines which protocols and ciphers are supported.\n Updating the security policy can result in interruptions if the load balancer is handling a high volume of traffic.\n For more information, see [Security policies](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies) in the *Application Load Balancers Guide* and [Security policies](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html#describe-ssl-policies) in the *Network Load Balancers Guide*.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ListenerArn" - ], - "required": [ - "LoadBalancerArn", - "DefaultActions" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ElasticLoadBalancingV2::Listener", - "writeOnlyProperties": [ - "/properties/DefaultActions/*/AuthenticateOidcConfig/ClientSecret" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LoadBalancerArn" + ], + "definitions": { + "Action": { + "additionalProperties": false, + "description": "Specifies an action for a listener rule.", + "properties": { + "AuthenticateCognitoConfig": { + "$ref": "#/definitions/AuthenticateCognitoConfig", + "description": "[HTTPS listeners] Information for using Amazon Cognito to authenticate users. Specify only when ``Type`` is ``authenticate-cognito``." + }, + "AuthenticateOidcConfig": { + "$ref": "#/definitions/AuthenticateOidcConfig", + "description": "[HTTPS listeners] Information about an identity provider that is compliant with OpenID Connect (OIDC). Specify only when ``Type`` is ``authenticate-oidc``." + }, + "FixedResponseConfig": { + "$ref": "#/definitions/FixedResponseConfig", + "description": "[Application Load Balancer] Information for creating an action that returns a custom HTTP response. Specify only when ``Type`` is ``fixed-response``." + }, + "ForwardConfig": { + "$ref": "#/definitions/ForwardConfig", + "description": "Information for creating an action that distributes requests among one or more target groups. For Network Load Balancers, you can specify a single target group. Specify only when ``Type`` is ``forward``. If you specify both ``ForwardConfig`` and ``TargetGroupArn``, you can specify only one target group using ``ForwardConfig`` and it must be the same target group specified in ``TargetGroupArn``." + }, + "Order": { + "description": "The order for the action. This value is required for rules with multiple actions. The action with the lowest value for order is performed first.", + "type": "integer" + }, + "RedirectConfig": { + "$ref": "#/definitions/RedirectConfig", + "description": "[Application Load Balancer] Information for creating a redirect action. Specify only when ``Type`` is ``redirect``." + }, + "TargetGroupArn": { + "description": "The Amazon Resource Name (ARN) of the target group. Specify only when ``Type`` is ``forward`` and you want to route to a single target group. To route to one or more target groups, use ``ForwardConfig`` instead.", + "relationshipRef": { + "propertyPath": "/properties/TargetGroupArn", + "typeName": "AWS::ElasticLoadBalancingV2::TargetGroup" + }, + "type": "string" + }, + "Type": { + "description": "The type of action.", + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "AuthenticateCognitoConfig": { + "additionalProperties": false, + "description": "Specifies information required when integrating with Amazon Cognito to authenticate users.", + "properties": { + "AuthenticationRequestExtraParams": { + "description": "The query parameters (up to 10) to include in the redirect request to the authorization endpoint.", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "OnUnauthenticatedRequest": { + "description": "The behavior if the user is not authenticated. The following are possible values:\n + deny```` - Return an HTTP 401 Unauthorized error.\n + allow```` - Allow the request to be forwarded to the target.\n + authenticate```` - Redirect the request to the IdP authorization endpoint. This is the default value.", + "type": "string" + }, + "Scope": { + "description": "The set of user claims to be requested from the IdP. The default is ``openid``.\n To verify which scope values your IdP supports and how to separate multiple values, see the documentation for your IdP.", + "type": "string" + }, + "SessionCookieName": { + "description": "The name of the cookie used to maintain session information. The default is AWSELBAuthSessionCookie.", + "type": "string" + }, + "SessionTimeout": { + "description": "The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days).", + "type": "string" + }, + "UserPoolArn": { + "description": "The Amazon Resource Name (ARN) of the Amazon Cognito user pool.", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::Cognito::UserPool" + }, + "type": "string" + }, + "UserPoolClientId": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/UserPoolId", + "typeName": "AWS::Cognito::UserPoolClient" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/ClientId", + "typeName": "AWS::Cognito::UserPoolClient" + } + } + ], + "description": "The ID of the Amazon Cognito user pool client.", + "type": "string" + }, + "UserPoolDomain": { + "description": "The domain prefix or fully-qualified domain name of the Amazon Cognito user pool.", + "relationshipRef": { + "propertyPath": "/properties/Id", + "typeName": "AWS::Cognito::UserPoolDomain" + }, + "type": "string" + } + }, + "required": [ + "UserPoolClientId", + "UserPoolDomain", + "UserPoolArn" + ], + "type": "object" + }, + "AuthenticateOidcConfig": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "ClientSecret" + ] + }, + { + "required": [ + "UseExistingClientSecret" + ] + } + ], + "description": "Specifies information required using an identity provide (IdP) that is compliant with OpenID Connect (OIDC) to authenticate users.", + "properties": { + "AuthenticationRequestExtraParams": { + "description": "The query parameters (up to 10) to include in the redirect request to the authorization endpoint.", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "AuthorizationEndpoint": { + "description": "The authorization endpoint of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.", + "type": "string" + }, + "ClientId": { + "description": "The OAuth 2.0 client identifier.", + "type": "string" + }, + "ClientSecret": { + "description": "The OAuth 2.0 client secret. This parameter is required if you are creating a rule. If you are modifying a rule, you can omit this parameter if you set ``UseExistingClientSecret`` to true.", + "type": "string" + }, + "Issuer": { + "description": "The OIDC issuer identifier of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.", + "type": "string" + }, + "OnUnauthenticatedRequest": { + "description": "The behavior if the user is not authenticated. The following are possible values:\n + deny```` - Return an HTTP 401 Unauthorized error.\n + allow```` - Allow the request to be forwarded to the target.\n + authenticate```` - Redirect the request to the IdP authorization endpoint. This is the default value.", + "type": "string" + }, + "Scope": { + "description": "The set of user claims to be requested from the IdP. The default is ``openid``.\n To verify which scope values your IdP supports and how to separate multiple values, see the documentation for your IdP.", + "type": "string" + }, + "SessionCookieName": { + "description": "The name of the cookie used to maintain session information. The default is AWSELBAuthSessionCookie.", + "type": "string" + }, + "SessionTimeout": { + "description": "The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days).", + "type": "string" + }, + "TokenEndpoint": { + "description": "The token endpoint of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.", + "type": "string" + }, + "UseExistingClientSecret": { + "description": "Indicates whether to use the existing client secret when modifying a rule. If you are creating a rule, you can omit this parameter or set it to false.", + "type": "boolean" + }, + "UserInfoEndpoint": { + "description": "The user info endpoint of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.", + "type": "string" + } + }, + "required": [ + "TokenEndpoint", + "Issuer", + "UserInfoEndpoint", + "ClientId", + "AuthorizationEndpoint" + ], + "type": "object" + }, + "Certificate": { + "additionalProperties": false, + "description": "Specifies an SSL server certificate to use as the default certificate for a secure listener.", + "properties": { + "CertificateArn": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/Id", + "typeName": "AWS::CertificateManager::Certificate" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::ServerCertificate" + } + } + ], + "description": "The Amazon Resource Name (ARN) of the certificate.", + "type": "string" + } + }, + "type": "object" + }, + "FixedResponseConfig": { + "additionalProperties": false, + "description": "Specifies information required when returning a custom HTTP response.", + "properties": { + "ContentType": { + "description": "The content type.\n Valid Values: text/plain | text/css | text/html | application/javascript | application/json", + "type": "string" + }, + "MessageBody": { + "description": "The message.", + "type": "string" + }, + "StatusCode": { + "description": "The HTTP response code (2XX, 4XX, or 5XX).", + "type": "string" + } + }, + "required": [ + "StatusCode" + ], + "type": "object" + }, + "ForwardConfig": { + "additionalProperties": false, + "description": "Information for creating an action that distributes requests among one or more target groups. For Network Load Balancers, you can specify a single target group. Specify only when ``Type`` is ``forward``. If you specify both ``ForwardConfig`` and ``TargetGroupArn``, you can specify only one target group using ``ForwardConfig`` and it must be the same target group specified in ``TargetGroupArn``.", + "properties": { + "TargetGroupStickinessConfig": { + "$ref": "#/definitions/TargetGroupStickinessConfig", + "description": "Information about the target group stickiness for a rule." + }, + "TargetGroups": { + "description": "Information about how traffic will be distributed between multiple target groups in a forward rule.", + "items": { + "$ref": "#/definitions/TargetGroupTuple" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ListenerAttribute": { + "additionalProperties": false, + "description": "Information about a listener attribute.", + "properties": { + "Key": { + "description": "The name of the attribute.\n The following attribute is supported by Network Load Balancers, and Gateway Load Balancers.\n + ``tcp.idle_timeout.seconds`` - The tcp idle timeout value, in seconds. The valid range is 60-6000 seconds. The default is 350 seconds.\n \n The following attributes are only supported by Application Load Balancers.\n + ``routing.http.request.x_amzn_mtls_clientcert_serial_number.header_name`` - Enables you to modify the header name of the *X-Amzn-Mtls-Clientcert-Serial-Number* HTTP request header.\n + ``routing.http.request.x_amzn_mtls_clientcert_issuer.header_name`` - Enables you to modify the header name of the *X-Amzn-Mtls-Clientcert-Issuer* HTTP request header.\n + ``routing.http.request.x_amzn_mtls_clientcert_subject.header_name`` - Enables you to modify the header name of the *X-Amzn-Mtls-Clientcert-Subject* HTTP request header.\n + ``routing.http.request.x_amzn_mtls_clientcert_validity.header_name`` - Enables you to modify the header name of the *X-Amzn-Mtls-Clientcert-Validity* HTTP request header.\n + ``routing.http.request.x_amzn_mtls_clientcert_leaf.header_name`` - Enables you to modify the header name of the *X-Amzn-Mtls-Clientcert-Leaf* HTTP request header.\n + ``routing.http.request.x_amzn_mtls_clientcert.header_name`` - Enables you to modify the header name of the *X-Amzn-Mtls-Clientcert* HTTP request header.\n + ``routing.http.request.x_amzn_tls_version.header_name`` - Enables you to modify the header name of the *X-Amzn-Tls-Version* HTTP request header.\n + ``routing.http.request.x_amzn_tls_cipher_suite.header_name`` - Enables you to modify the header name of the *X-Amzn-Tls-Cipher-Suite* HTTP request header.\n + ``routing.http.response.server.enabled`` - Enables you to allow or remove the HTTP response server header.\n + ``routing.http.response.strict_transport_security.header_value`` - Informs browsers that the site should only be accessed using HTTPS, and that any future attempts to access it using HTTP should automatically be converted to HTTPS.\n + ``routing.http.response.access_control_allow_origin.header_value`` - Specifies which origins are allowed to access the server.\n + ``routing.http.response.access_control_allow_methods.header_value`` - Returns which HTTP methods are allowed when accessing the server from a different origin.\n + ``routing.http.response.access_control_allow_headers.header_value`` - Specifies which headers can be used during the request.\n + ``routing.http.response.access_control_allow_credentials.header_value`` - Indicates whether the browser should include credentials such as cookies or authentication when making requests.\n + ``routing.http.response.access_control_expose_headers.header_value`` - Returns which headers the browser can expose to the requesting client.\n + ``routing.http.response.access_control_max_age.header_value`` - Specifies how long the results of a preflight request can be cached, in seconds.\n + ``routing.http.response.content_security_policy.header_value`` - Specifies restrictions enforced by the browser to help minimize the risk of certain types of security threats.\n + ``routing.http.response.x_content_type_options.header_value`` - Indicates whether the MIME types advertised in the *Content-Type* headers should be followed and not be changed.\n + ``routing.http.response.x_frame_options.header_value`` - Indicates whether the browser is allowed to render a page in a *frame*, *iframe*, *embed* or *object*.", + "type": "string" + }, + "Value": { + "description": "The value of the attribute.", + "type": "string" + } + }, + "type": "object" + }, + "MutualAuthentication": { + "additionalProperties": false, + "description": "The mutual authentication configuration information.", + "properties": { + "AdvertiseTrustStoreCaNames": { + "description": "Indicates whether trust store CA certificate names are advertised.", + "type": "string" + }, + "IgnoreClientCertificateExpiry": { + "description": "Indicates whether expired client certificates are ignored.", + "type": "boolean" + }, + "Mode": { + "description": "The client certificate handling method. Options are ``off``, ``passthrough`` or ``verify``. The default value is ``off``.", + "type": "string" + }, + "TrustStoreArn": { + "description": "The Amazon Resource Name (ARN) of the trust store.", + "type": "string" + } + }, + "type": "object" + }, + "RedirectConfig": { + "additionalProperties": false, + "description": "Information about a redirect action.\n A URI consists of the following components: protocol://hostname:port/path?query. You must modify at least one of the following components to avoid a redirect loop: protocol, hostname, port, or path. Any components that you do not modify retain their original values.\n You can reuse URI components using the following reserved keywords:\n + #{protocol}\n + #{host}\n + #{port}\n + #{path} (the leading \"/\" is removed)\n + #{query}\n \n For example, you can change the path to \"/new/#{path}\", the hostname to \"example.#{host}\", or the query to \"#{query}&value=xyz\".", + "properties": { + "Host": { + "description": "The hostname. This component is not percent-encoded. The hostname can contain #{host}.", + "type": "string" + }, + "Path": { + "description": "The absolute path, starting with the leading \"/\". This component is not percent-encoded. The path can contain #{host}, #{path}, and #{port}.", + "type": "string" + }, + "Port": { + "description": "The port. You can specify a value from 1 to 65535 or #{port}.", + "type": "string" + }, + "Protocol": { + "description": "The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You can't redirect HTTPS to HTTP.", + "type": "string" + }, + "Query": { + "description": "The query parameters, URL-encoded when necessary, but not percent-encoded. Do not include the leading \"?\", as it is automatically added. You can specify any of the reserved keywords.", + "type": "string" + }, + "StatusCode": { + "description": "The HTTP redirect code. The redirect is either permanent (HTTP 301) or temporary (HTTP 302).", + "type": "string" + } + }, + "required": [ + "StatusCode" + ], + "type": "object" + }, + "TargetGroupStickinessConfig": { + "additionalProperties": false, + "description": "Information about the target group stickiness for a rule.", + "properties": { + "DurationSeconds": { + "description": "The time period, in seconds, during which requests from a client should be routed to the same target group. The range is 1-604800 seconds (7 days).", + "type": "integer" + }, + "Enabled": { + "description": "Indicates whether target group stickiness is enabled.", + "type": "boolean" + } + }, + "type": "object" + }, + "TargetGroupTuple": { + "additionalProperties": false, + "description": "Information about how traffic will be distributed between multiple target groups in a forward rule.", + "properties": { + "TargetGroupArn": { + "description": "The Amazon Resource Name (ARN) of the target group.", + "relationshipRef": { + "propertyPath": "/properties/TargetGroupArn", + "typeName": "AWS::ElasticLoadBalancingV2::TargetGroup" + }, + "type": "string" + }, + "Weight": { + "description": "The weight. The range is 0 to 999.", + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Specifies a listener for an Application Load Balancer, Network Load Balancer, or Gateway Load Balancer.", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateListener", + "elasticloadbalancing:DescribeListeners", + "cognito-idp:DescribeUserPoolClient", + "elasticloadbalancing:ModifyListenerAttributes" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DeleteListener", + "elasticloadbalancing:DescribeListeners" + ] + }, + "list": { + "handlerSchema": { + "oneOf": [ + { + "required": [ + "LoadBalancerArn" + ] + }, + { + "required": [ + "ListenerArns" + ] + } + ], + "properties": { + "ListenerArns": { + "items": { + "$ref": "resource-schema.json#/properties/ListenerArn" + }, + "type": "array", + "uniqueItems": false + }, + "LoadBalancerArn": { + "$ref": "resource-schema.json#/properties/LoadBalancerArn" + } + } + }, + "permissions": [ + "elasticloadbalancing:DescribeListeners" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeListeners", + "elasticloadbalancing:DescribeListenerAttributes" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyListener", + "elasticloadbalancing:DescribeListeners", + "cognito-idp:DescribeUserPoolClient", + "elasticloadbalancing:ModifyListenerAttributes" + ] + } + }, + "primaryIdentifier": [ + "/properties/ListenerArn" + ], + "properties": { + "AlpnPolicy": { + "description": "[TLS listener] The name of the Application-Layer Protocol Negotiation (ALPN) policy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Certificates": { + "description": "The default SSL server certificate for a secure listener. You must provide exactly one certificate if the listener protocol is HTTPS or TLS.\n To create a certificate list for a secure listener, use [AWS::ElasticLoadBalancingV2::ListenerCertificate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenercertificate.html).", + "items": { + "$ref": "#/definitions/Certificate" + }, + "type": "array", + "uniqueItems": true + }, + "DefaultActions": { + "description": "The actions for the default rule. You cannot define a condition for a default rule.\n To create additional rules for an Application Load Balancer, use [AWS::ElasticLoadBalancingV2::ListenerRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html).", + "items": { + "$ref": "#/definitions/Action" + }, + "type": "array", + "uniqueItems": true + }, + "ListenerArn": { + "description": "", + "type": "string" + }, + "ListenerAttributes": { + "arrayType": "AttributeList", + "description": "The listener attributes.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ListenerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerArn": { + "description": "The Amazon Resource Name (ARN) of the load balancer.", + "type": "string" + }, + "MutualAuthentication": { + "$ref": "#/definitions/MutualAuthentication", + "description": "The mutual authentication configuration information." + }, + "Port": { + "description": "The port on which the load balancer is listening. You can't specify a port for a Gateway Load Balancer.", + "type": "integer" + }, + "Protocol": { + "description": "The protocol for connections from clients to the load balancer. For Application Load Balancers, the supported protocols are HTTP and HTTPS. For Network Load Balancers, the supported protocols are TCP, TLS, UDP, and TCP_UDP. You can\u2019t specify the UDP or TCP_UDP protocol if dual-stack mode is enabled. You can't specify a protocol for a Gateway Load Balancer.", + "type": "string" + }, + "SslPolicy": { + "description": "[HTTPS and TLS listeners] The security policy that defines which protocols and ciphers are supported.\n Updating the security policy can result in interruptions if the load balancer is handling a high volume of traffic.\n For more information, see [Security policies](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies) in the *Application Load Balancers Guide* and [Security policies](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html#describe-ssl-policies) in the *Network Load Balancers Guide*.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ListenerArn" + ], + "required": [ + "LoadBalancerArn", + "DefaultActions" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ElasticLoadBalancingV2::Listener", + "writeOnlyProperties": [ + "/properties/DefaultActions/*/AuthenticateOidcConfig/ClientSecret" + ] +} diff --git a/src/schema/aws-elasticloadbalancingv2-listenercertificate.json b/src/schema/aws-elasticloadbalancingv2-listenercertificate.json index 365dca98..da6048ec 100644 --- a/src/schema/aws-elasticloadbalancingv2-listenercertificate.json +++ b/src/schema/aws-elasticloadbalancingv2-listenercertificate.json @@ -1,44 +1,44 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ListenerArn" - ], - "definitions": { - "Certificate": { - "additionalProperties": false, - "properties": { - "CertificateArn": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ElasticLoadBalancingV2::ListenerCertificate", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Certificates": { - "items": { - "$ref": "#/definitions/Certificate" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "type": "string" - }, - "ListenerArn": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ListenerArn", - "Certificates" - ], - "typeName": "AWS::ElasticLoadBalancingV2::ListenerCertificate" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ListenerArn" + ], + "definitions": { + "Certificate": { + "additionalProperties": false, + "properties": { + "CertificateArn": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ElasticLoadBalancingV2::ListenerCertificate", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Certificates": { + "items": { + "$ref": "#/definitions/Certificate" + }, + "type": "array", + "uniqueItems": true + }, + "Id": { + "type": "string" + }, + "ListenerArn": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ListenerArn", + "Certificates" + ], + "typeName": "AWS::ElasticLoadBalancingV2::ListenerCertificate" +} diff --git a/src/schema/aws-elasticloadbalancingv2-listenerrule.json b/src/schema/aws-elasticloadbalancingv2-listenerrule.json index 017b66fb..c0c054af 100644 --- a/src/schema/aws-elasticloadbalancingv2-listenerrule.json +++ b/src/schema/aws-elasticloadbalancingv2-listenerrule.json @@ -1,565 +1,565 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ListenerArn" - ], - "definitions": { - "Action": { - "additionalProperties": false, - "description": "Specifies an action for a listener rule.", - "properties": { - "AuthenticateCognitoConfig": { - "$ref": "#/definitions/AuthenticateCognitoConfig", - "description": "[HTTPS listeners] Information for using Amazon Cognito to authenticate users. Specify only when ``Type`` is ``authenticate-cognito``." - }, - "AuthenticateOidcConfig": { - "$ref": "#/definitions/AuthenticateOidcConfig", - "description": "[HTTPS listeners] Information about an identity provider that is compliant with OpenID Connect (OIDC). Specify only when ``Type`` is ``authenticate-oidc``." - }, - "FixedResponseConfig": { - "$ref": "#/definitions/FixedResponseConfig", - "description": "[Application Load Balancer] Information for creating an action that returns a custom HTTP response. Specify only when ``Type`` is ``fixed-response``." - }, - "ForwardConfig": { - "$ref": "#/definitions/ForwardConfig", - "description": "Information for creating an action that distributes requests among one or more target groups. For Network Load Balancers, you can specify a single target group. Specify only when ``Type`` is ``forward``. If you specify both ``ForwardConfig`` and ``TargetGroupArn``, you can specify only one target group using ``ForwardConfig`` and it must be the same target group specified in ``TargetGroupArn``." - }, - "Order": { - "description": "The order for the action. This value is required for rules with multiple actions. The action with the lowest value for order is performed first.", - "type": "integer" - }, - "RedirectConfig": { - "$ref": "#/definitions/RedirectConfig", - "description": "[Application Load Balancer] Information for creating a redirect action. Specify only when ``Type`` is ``redirect``." - }, - "TargetGroupArn": { - "description": "The Amazon Resource Name (ARN) of the target group. Specify only when ``Type`` is ``forward`` and you want to route to a single target group. To route to one or more target groups, use ``ForwardConfig`` instead.", - "type": "string" - }, - "Type": { - "description": "The type of action.", - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "AuthenticateCognitoConfig": { - "additionalProperties": false, - "description": "Specifies information required when integrating with Amazon Cognito to authenticate users.", - "properties": { - "AuthenticationRequestExtraParams": { - "additionalProperties": false, - "description": "The query parameters (up to 10) to include in the redirect request to the authorization endpoint.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "OnUnauthenticatedRequest": { - "description": "The behavior if the user is not authenticated. The following are possible values:\n + deny```` - Return an HTTP 401 Unauthorized error.\n + allow```` - Allow the request to be forwarded to the target.\n + authenticate```` - Redirect the request to the IdP authorization endpoint. This is the default value.", - "type": "string" - }, - "Scope": { - "description": "The set of user claims to be requested from the IdP. The default is ``openid``.\n To verify which scope values your IdP supports and how to separate multiple values, see the documentation for your IdP.", - "type": "string" - }, - "SessionCookieName": { - "description": "The name of the cookie used to maintain session information. The default is AWSELBAuthSessionCookie.", - "type": "string" - }, - "SessionTimeout": { - "description": "The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days).", - "type": "integer" - }, - "UserPoolArn": { - "description": "The Amazon Resource Name (ARN) of the Amazon Cognito user pool.", - "type": "string" - }, - "UserPoolClientId": { - "description": "The ID of the Amazon Cognito user pool client.", - "type": "string" - }, - "UserPoolDomain": { - "description": "The domain prefix or fully-qualified domain name of the Amazon Cognito user pool.", - "type": "string" - } - }, - "required": [ - "UserPoolClientId", - "UserPoolDomain", - "UserPoolArn" - ], - "type": "object" - }, - "AuthenticateOidcConfig": { - "additionalProperties": false, - "anyOf": [ - { - "required": [ - "ClientSecret" - ] - }, - { - "required": [ - "UseExistingClientSecret" - ] - } - ], - "description": "Specifies information required using an identity provide (IdP) that is compliant with OpenID Connect (OIDC) to authenticate users.", - "properties": { - "AuthenticationRequestExtraParams": { - "additionalProperties": false, - "description": "The query parameters (up to 10) to include in the redirect request to the authorization endpoint.", - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "AuthorizationEndpoint": { - "description": "The authorization endpoint of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.", - "type": "string" - }, - "ClientId": { - "description": "The OAuth 2.0 client identifier.", - "type": "string" - }, - "ClientSecret": { - "description": "The OAuth 2.0 client secret. This parameter is required if you are creating a rule. If you are modifying a rule, you can omit this parameter if you set ``UseExistingClientSecret`` to true.", - "type": "string" - }, - "Issuer": { - "description": "The OIDC issuer identifier of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.", - "type": "string" - }, - "OnUnauthenticatedRequest": { - "description": "The behavior if the user is not authenticated. The following are possible values:\n + deny```` - Return an HTTP 401 Unauthorized error.\n + allow```` - Allow the request to be forwarded to the target.\n + authenticate```` - Redirect the request to the IdP authorization endpoint. This is the default value.", - "type": "string" - }, - "Scope": { - "description": "The set of user claims to be requested from the IdP. The default is ``openid``.\n To verify which scope values your IdP supports and how to separate multiple values, see the documentation for your IdP.", - "type": "string" - }, - "SessionCookieName": { - "description": "The name of the cookie used to maintain session information. The default is AWSELBAuthSessionCookie.", - "type": "string" - }, - "SessionTimeout": { - "description": "The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days).", - "type": "integer" - }, - "TokenEndpoint": { - "description": "The token endpoint of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.", - "type": "string" - }, - "UseExistingClientSecret": { - "description": "Indicates whether to use the existing client secret when modifying a rule. If you are creating a rule, you can omit this parameter or set it to false.", - "type": "boolean" - }, - "UserInfoEndpoint": { - "description": "The user info endpoint of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.", - "type": "string" - } - }, - "required": [ - "TokenEndpoint", - "Issuer", - "UserInfoEndpoint", - "ClientId", - "AuthorizationEndpoint" - ], - "type": "object" - }, - "FixedResponseConfig": { - "additionalProperties": false, - "description": "Specifies information required when returning a custom HTTP response.", - "properties": { - "ContentType": { - "description": "The content type.\n Valid Values: text/plain | text/css | text/html | application/javascript | application/json", - "type": "string" - }, - "MessageBody": { - "description": "The message.", - "type": "string" - }, - "StatusCode": { - "description": "The HTTP response code (2XX, 4XX, or 5XX).", - "type": "string" - } - }, - "required": [ - "StatusCode" - ], - "type": "object" - }, - "ForwardConfig": { - "additionalProperties": false, - "description": "Information for creating an action that distributes requests among one or more target groups. For Network Load Balancers, you can specify a single target group. Specify only when ``Type`` is ``forward``. If you specify both ``ForwardConfig`` and ``TargetGroupArn``, you can specify only one target group using ``ForwardConfig`` and it must be the same target group specified in ``TargetGroupArn``.", - "properties": { - "TargetGroupStickinessConfig": { - "$ref": "#/definitions/TargetGroupStickinessConfig", - "description": "Information about the target group stickiness for a rule." - }, - "TargetGroups": { - "description": "Information about how traffic will be distributed between multiple target groups in a forward rule.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TargetGroupTuple" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "HostHeaderConfig": { - "additionalProperties": false, - "description": "Information about a host header condition.", - "properties": { - "Values": { - "description": "The host names. The maximum size of each name is 128 characters. The comparison is case insensitive. The following wildcard characters are supported: * (matches 0 or more characters) and ? (matches exactly 1 character).\n If you specify multiple strings, the condition is satisfied if one of the strings matches the host name.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "HttpHeaderConfig": { - "additionalProperties": false, - "description": "Information about an HTTP header condition.\n There is a set of standard HTTP header fields. You can also define custom HTTP header fields.", - "properties": { - "HttpHeaderName": { - "description": "The name of the HTTP header field. The maximum size is 40 characters. The header name is case insensitive. The allowed characters are specified by RFC 7230. Wildcards are not supported.", - "type": "string" - }, - "Values": { - "description": "The strings to compare against the value of the HTTP header. The maximum size of each string is 128 characters. The comparison strings are case insensitive. The following wildcard characters are supported: * (matches 0 or more characters) and ? (matches exactly 1 character).\n If the same header appears multiple times in the request, we search them in order until a match is found.\n If you specify multiple strings, the condition is satisfied if one of the strings matches the value of the HTTP header. To require that all of the strings are a match, create one condition per string.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "HttpRequestMethodConfig": { - "additionalProperties": false, - "description": "Information about an HTTP method condition.\n HTTP defines a set of request methods, also referred to as HTTP verbs. For more information, see the [HTTP Method Registry](https://docs.aws.amazon.com/https://www.iana.org/assignments/http-methods/http-methods.xhtml). You can also define custom HTTP methods.", - "properties": { - "Values": { - "description": "The name of the request method. The maximum size is 40 characters. The allowed characters are A-Z, hyphen (-), and underscore (_). The comparison is case sensitive. Wildcards are not supported; therefore, the method name must be an exact match.\n If you specify multiple strings, the condition is satisfied if one of the strings matches the HTTP request method. We recommend that you route GET and HEAD requests in the same way, because the response to a HEAD request may be cached.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "PathPatternConfig": { - "additionalProperties": false, - "description": "Information about a path pattern condition.", - "properties": { - "Values": { - "description": "The path patterns to compare against the request URL. The maximum size of each string is 128 characters. The comparison is case sensitive. The following wildcard characters are supported: * (matches 0 or more characters) and ? (matches exactly 1 character).\n If you specify multiple strings, the condition is satisfied if one of them matches the request URL. The path pattern is compared only to the path of the URL, not to its query string.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "QueryStringConfig": { - "additionalProperties": false, - "description": "Information about a query string condition.\n The query string component of a URI starts after the first '?' character and is terminated by either a '#' character or the end of the URI. A typical query string contains key/value pairs separated by '&' characters. The allowed characters are specified by RFC 3986. Any character can be percentage encoded.", - "properties": { - "Values": { - "description": "The key/value pairs or values to find in the query string. The maximum size of each string is 128 characters. The comparison is case insensitive. The following wildcard characters are supported: * (matches 0 or more characters) and ? (matches exactly 1 character). To search for a literal '*' or '?' character in a query string, you must escape these characters in ``Values`` using a '\\' character.\n If you specify multiple key/value pairs or values, the condition is satisfied if one of them is found in the query string.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/QueryStringKeyValue" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "QueryStringKeyValue": { - "additionalProperties": false, - "description": "Information about a key/value pair.", - "properties": { - "Key": { - "description": "The key. You can omit the key.", - "type": "string" - }, - "Value": { - "description": "The value.", - "type": "string" - } - }, - "type": "object" - }, - "RedirectConfig": { - "additionalProperties": false, - "description": "Information about a redirect action.\n A URI consists of the following components: protocol://hostname:port/path?query. You must modify at least one of the following components to avoid a redirect loop: protocol, hostname, port, or path. Any components that you do not modify retain their original values.\n You can reuse URI components using the following reserved keywords:\n + #{protocol}\n + #{host}\n + #{port}\n + #{path} (the leading \"/\" is removed)\n + #{query}\n \n For example, you can change the path to \"/new/#{path}\", the hostname to \"example.#{host}\", or the query to \"#{query}&value=xyz\".", - "properties": { - "Host": { - "description": "The hostname. This component is not percent-encoded. The hostname can contain #{host}.", - "type": "string" - }, - "Path": { - "description": "The absolute path, starting with the leading \"/\". This component is not percent-encoded. The path can contain #{host}, #{path}, and #{port}.", - "type": "string" - }, - "Port": { - "description": "The port. You can specify a value from 1 to 65535 or #{port}.", - "type": "string" - }, - "Protocol": { - "description": "The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You cannot redirect HTTPS to HTTP.", - "type": "string" - }, - "Query": { - "description": "The query parameters, URL-encoded when necessary, but not percent-encoded. Do not include the leading \"?\", as it is automatically added. You can specify any of the reserved keywords.", - "type": "string" - }, - "StatusCode": { - "description": "The HTTP redirect code. The redirect is either permanent (HTTP 301) or temporary (HTTP 302).", - "type": "string" - } - }, - "required": [ - "StatusCode" - ], - "type": "object" - }, - "RuleCondition": { - "additionalProperties": false, - "description": "Specifies a condition for a listener rule.", - "properties": { - "Field": { - "description": "The field in the HTTP request. The following are the possible values:\n + ``http-header`` \n + ``http-request-method`` \n + ``host-header`` \n + ``path-pattern`` \n + ``query-string`` \n + ``source-ip``", - "type": "string" - }, - "HostHeaderConfig": { - "$ref": "#/definitions/HostHeaderConfig", - "description": "Information for a host header condition. Specify only when ``Field`` is ``host-header``." - }, - "HttpHeaderConfig": { - "$ref": "#/definitions/HttpHeaderConfig", - "description": "Information for an HTTP header condition. Specify only when ``Field`` is ``http-header``." - }, - "HttpRequestMethodConfig": { - "$ref": "#/definitions/HttpRequestMethodConfig", - "description": "Information for an HTTP method condition. Specify only when ``Field`` is ``http-request-method``." - }, - "PathPatternConfig": { - "$ref": "#/definitions/PathPatternConfig", - "description": "Information for a path pattern condition. Specify only when ``Field`` is ``path-pattern``." - }, - "QueryStringConfig": { - "$ref": "#/definitions/QueryStringConfig", - "description": "Information for a query string condition. Specify only when ``Field`` is ``query-string``." - }, - "SourceIpConfig": { - "$ref": "#/definitions/SourceIpConfig", - "description": "Information for a source IP condition. Specify only when ``Field`` is ``source-ip``." - }, - "Values": { - "description": "The condition value. Specify only when ``Field`` is ``host-header`` or ``path-pattern``. Alternatively, to specify multiple host names or multiple path patterns, use ``HostHeaderConfig`` or ``PathPatternConfig``.\n If ``Field`` is ``host-header`` and you're not using ``HostHeaderConfig``, you can specify a single host name (for example, my.example.com). A host name is case insensitive, can be up to 128 characters in length, and can contain any of the following characters.\n + A-Z, a-z, 0-9\n + - .\n + * (matches 0 or more characters)\n + ? (matches exactly 1 character)\n \n If ``Field`` is ``path-pattern`` and you're not using ``PathPatternConfig``, you can specify a single path pattern (for example, /img/*). A path pattern is case-sensitive, can be up to 128 characters in length, and can contain any of the following characters.\n + A-Z, a-z, 0-9\n + _ - . $ / ~ \" ' @ : +\n + & (using &)\n + * (matches 0 or more characters)\n + ? (matches exactly 1 character)", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "SourceIpConfig": { - "additionalProperties": false, - "description": "Information about a source IP condition.\n You can use this condition to route based on the IP address of the source that connects to the load balancer. If a client is behind a proxy, this is the IP address of the proxy not the IP address of the client.", - "properties": { - "Values": { - "description": "The source IP addresses, in CIDR format. You can use both IPv4 and IPv6 addresses. Wildcards are not supported.\n If you specify multiple addresses, the condition is satisfied if the source IP address of the request matches one of the CIDR blocks. This condition is not satisfied by the addresses in the X-Forwarded-For header.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "TargetGroupStickinessConfig": { - "additionalProperties": false, - "description": "Information about the target group stickiness for a rule.", - "properties": { - "DurationSeconds": { - "description": "The time period, in seconds, during which requests from a client should be routed to the same target group. The range is 1-604800 seconds (7 days).", - "type": "integer" - }, - "Enabled": { - "description": "Indicates whether target group stickiness is enabled.", - "type": "boolean" - } - }, - "type": "object" - }, - "TargetGroupTuple": { - "additionalProperties": false, - "description": "Information about how traffic will be distributed between multiple target groups in a forward rule.", - "properties": { - "TargetGroupArn": { - "description": "The Amazon Resource Name (ARN) of the target group.", - "type": "string" - }, - "Weight": { - "description": "The weight. The range is 0 to 999.", - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "Specifies a listener rule. The listener must be associated with an Application Load Balancer. Each rule consists of a priority, one or more actions, and one or more conditions.\n For more information, see [Quotas for your Application Load Balancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html) in the *User Guide for Application Load Balancers*.", - "handlers": { - "create": { - "permissions": [ - "elasticloadbalancing:CreateRule", - "elasticloadbalancing:DescribeRules", - "cognito-idp:DescribeUserPoolClient" - ] - }, - "delete": { - "permissions": [ - "elasticloadbalancing:DeleteRule", - "elasticloadbalancing:DescribeRules" - ] - }, - "list": { - "handlerSchema": { - "oneOf": [ - { - "required": [ - "ListenerArn" - ] - }, - { - "required": [ - "RuleArns" - ] - } - ], - "properties": { - "ListenerArn": { - "$ref": "resource-schema.json#/properties/ListenerArn" - }, - "RuleArns": { - "insertionOrder": false, - "items": { - "$ref": "resource-schema.json#/properties/RuleArn" - }, - "type": "array", - "uniqueItems": false - } - } - }, - "permissions": [ - "elasticloadbalancing:DescribeRules" - ] - }, - "read": { - "permissions": [ - "elasticloadbalancing:DescribeRules" - ] - }, - "update": { - "permissions": [ - "elasticloadbalancing:ModifyRule", - "elasticloadbalancing:SetRulePriorities", - "elasticloadbalancing:DescribeRules" - ] - } - }, - "primaryIdentifier": [ - "/properties/RuleArn" - ], - "properties": { - "Actions": { - "description": "The actions.\n The rule must include exactly one of the following types of actions: ``forward``, ``fixed-response``, or ``redirect``, and it must be the last action to be performed. If the rule is for an HTTPS listener, it can also optionally include an authentication action.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Action" - }, - "type": "array", - "uniqueItems": true - }, - "Conditions": { - "description": "The conditions.\n The rule can optionally include up to one of each of the following conditions: ``http-request-method``, ``host-header``, ``path-pattern``, and ``source-ip``. A rule can also optionally include one or more of each of the following conditions: ``http-header`` and ``query-string``.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RuleCondition" - }, - "type": "array", - "uniqueItems": true - }, - "IsDefault": { - "description": "", - "type": "boolean" - }, - "ListenerArn": { - "description": "The Amazon Resource Name (ARN) of the listener.", - "type": "string" - }, - "Priority": { - "description": "The rule priority. A listener can't have multiple rules with the same priority.\n If you try to reorder rules by updating their priorities, do not specify a new priority if an existing rule already uses this priority, as this can cause an error. If you need to reuse a priority with a different rule, you must remove it as a priority first, and then specify it in a subsequent update.", - "type": "integer" - }, - "RuleArn": { - "description": "", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/RuleArn", - "/properties/IsDefault" - ], - "required": [ - "Actions", - "Priority", - "Conditions" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ElasticLoadBalancingV2::ListenerRule", - "writeOnlyProperties": [ - "/properties/Actions/*/AuthenticateOidcConfig/ClientSecret", - "/properties/ListenerArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ListenerArn" + ], + "definitions": { + "Action": { + "additionalProperties": false, + "description": "Specifies an action for a listener rule.", + "properties": { + "AuthenticateCognitoConfig": { + "$ref": "#/definitions/AuthenticateCognitoConfig", + "description": "[HTTPS listeners] Information for using Amazon Cognito to authenticate users. Specify only when ``Type`` is ``authenticate-cognito``." + }, + "AuthenticateOidcConfig": { + "$ref": "#/definitions/AuthenticateOidcConfig", + "description": "[HTTPS listeners] Information about an identity provider that is compliant with OpenID Connect (OIDC). Specify only when ``Type`` is ``authenticate-oidc``." + }, + "FixedResponseConfig": { + "$ref": "#/definitions/FixedResponseConfig", + "description": "[Application Load Balancer] Information for creating an action that returns a custom HTTP response. Specify only when ``Type`` is ``fixed-response``." + }, + "ForwardConfig": { + "$ref": "#/definitions/ForwardConfig", + "description": "Information for creating an action that distributes requests among one or more target groups. For Network Load Balancers, you can specify a single target group. Specify only when ``Type`` is ``forward``. If you specify both ``ForwardConfig`` and ``TargetGroupArn``, you can specify only one target group using ``ForwardConfig`` and it must be the same target group specified in ``TargetGroupArn``." + }, + "Order": { + "description": "The order for the action. This value is required for rules with multiple actions. The action with the lowest value for order is performed first.", + "type": "integer" + }, + "RedirectConfig": { + "$ref": "#/definitions/RedirectConfig", + "description": "[Application Load Balancer] Information for creating a redirect action. Specify only when ``Type`` is ``redirect``." + }, + "TargetGroupArn": { + "description": "The Amazon Resource Name (ARN) of the target group. Specify only when ``Type`` is ``forward`` and you want to route to a single target group. To route to one or more target groups, use ``ForwardConfig`` instead.", + "type": "string" + }, + "Type": { + "description": "The type of action.", + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "AuthenticateCognitoConfig": { + "additionalProperties": false, + "description": "Specifies information required when integrating with Amazon Cognito to authenticate users.", + "properties": { + "AuthenticationRequestExtraParams": { + "additionalProperties": false, + "description": "The query parameters (up to 10) to include in the redirect request to the authorization endpoint.", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "OnUnauthenticatedRequest": { + "description": "The behavior if the user is not authenticated. The following are possible values:\n + deny```` - Return an HTTP 401 Unauthorized error.\n + allow```` - Allow the request to be forwarded to the target.\n + authenticate```` - Redirect the request to the IdP authorization endpoint. This is the default value.", + "type": "string" + }, + "Scope": { + "description": "The set of user claims to be requested from the IdP. The default is ``openid``.\n To verify which scope values your IdP supports and how to separate multiple values, see the documentation for your IdP.", + "type": "string" + }, + "SessionCookieName": { + "description": "The name of the cookie used to maintain session information. The default is AWSELBAuthSessionCookie.", + "type": "string" + }, + "SessionTimeout": { + "description": "The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days).", + "type": "integer" + }, + "UserPoolArn": { + "description": "The Amazon Resource Name (ARN) of the Amazon Cognito user pool.", + "type": "string" + }, + "UserPoolClientId": { + "description": "The ID of the Amazon Cognito user pool client.", + "type": "string" + }, + "UserPoolDomain": { + "description": "The domain prefix or fully-qualified domain name of the Amazon Cognito user pool.", + "type": "string" + } + }, + "required": [ + "UserPoolClientId", + "UserPoolDomain", + "UserPoolArn" + ], + "type": "object" + }, + "AuthenticateOidcConfig": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "ClientSecret" + ] + }, + { + "required": [ + "UseExistingClientSecret" + ] + } + ], + "description": "Specifies information required using an identity provide (IdP) that is compliant with OpenID Connect (OIDC) to authenticate users.", + "properties": { + "AuthenticationRequestExtraParams": { + "additionalProperties": false, + "description": "The query parameters (up to 10) to include in the redirect request to the authorization endpoint.", + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "AuthorizationEndpoint": { + "description": "The authorization endpoint of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.", + "type": "string" + }, + "ClientId": { + "description": "The OAuth 2.0 client identifier.", + "type": "string" + }, + "ClientSecret": { + "description": "The OAuth 2.0 client secret. This parameter is required if you are creating a rule. If you are modifying a rule, you can omit this parameter if you set ``UseExistingClientSecret`` to true.", + "type": "string" + }, + "Issuer": { + "description": "The OIDC issuer identifier of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.", + "type": "string" + }, + "OnUnauthenticatedRequest": { + "description": "The behavior if the user is not authenticated. The following are possible values:\n + deny```` - Return an HTTP 401 Unauthorized error.\n + allow```` - Allow the request to be forwarded to the target.\n + authenticate```` - Redirect the request to the IdP authorization endpoint. This is the default value.", + "type": "string" + }, + "Scope": { + "description": "The set of user claims to be requested from the IdP. The default is ``openid``.\n To verify which scope values your IdP supports and how to separate multiple values, see the documentation for your IdP.", + "type": "string" + }, + "SessionCookieName": { + "description": "The name of the cookie used to maintain session information. The default is AWSELBAuthSessionCookie.", + "type": "string" + }, + "SessionTimeout": { + "description": "The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days).", + "type": "integer" + }, + "TokenEndpoint": { + "description": "The token endpoint of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.", + "type": "string" + }, + "UseExistingClientSecret": { + "description": "Indicates whether to use the existing client secret when modifying a rule. If you are creating a rule, you can omit this parameter or set it to false.", + "type": "boolean" + }, + "UserInfoEndpoint": { + "description": "The user info endpoint of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.", + "type": "string" + } + }, + "required": [ + "TokenEndpoint", + "Issuer", + "UserInfoEndpoint", + "ClientId", + "AuthorizationEndpoint" + ], + "type": "object" + }, + "FixedResponseConfig": { + "additionalProperties": false, + "description": "Specifies information required when returning a custom HTTP response.", + "properties": { + "ContentType": { + "description": "The content type.\n Valid Values: text/plain | text/css | text/html | application/javascript | application/json", + "type": "string" + }, + "MessageBody": { + "description": "The message.", + "type": "string" + }, + "StatusCode": { + "description": "The HTTP response code (2XX, 4XX, or 5XX).", + "type": "string" + } + }, + "required": [ + "StatusCode" + ], + "type": "object" + }, + "ForwardConfig": { + "additionalProperties": false, + "description": "Information for creating an action that distributes requests among one or more target groups. For Network Load Balancers, you can specify a single target group. Specify only when ``Type`` is ``forward``. If you specify both ``ForwardConfig`` and ``TargetGroupArn``, you can specify only one target group using ``ForwardConfig`` and it must be the same target group specified in ``TargetGroupArn``.", + "properties": { + "TargetGroupStickinessConfig": { + "$ref": "#/definitions/TargetGroupStickinessConfig", + "description": "Information about the target group stickiness for a rule." + }, + "TargetGroups": { + "description": "Information about how traffic will be distributed between multiple target groups in a forward rule.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TargetGroupTuple" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "HostHeaderConfig": { + "additionalProperties": false, + "description": "Information about a host header condition.", + "properties": { + "Values": { + "description": "The host names. The maximum size of each name is 128 characters. The comparison is case insensitive. The following wildcard characters are supported: * (matches 0 or more characters) and ? (matches exactly 1 character).\n If you specify multiple strings, the condition is satisfied if one of the strings matches the host name.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "HttpHeaderConfig": { + "additionalProperties": false, + "description": "Information about an HTTP header condition.\n There is a set of standard HTTP header fields. You can also define custom HTTP header fields.", + "properties": { + "HttpHeaderName": { + "description": "The name of the HTTP header field. The maximum size is 40 characters. The header name is case insensitive. The allowed characters are specified by RFC 7230. Wildcards are not supported.", + "type": "string" + }, + "Values": { + "description": "The strings to compare against the value of the HTTP header. The maximum size of each string is 128 characters. The comparison strings are case insensitive. The following wildcard characters are supported: * (matches 0 or more characters) and ? (matches exactly 1 character).\n If the same header appears multiple times in the request, we search them in order until a match is found.\n If you specify multiple strings, the condition is satisfied if one of the strings matches the value of the HTTP header. To require that all of the strings are a match, create one condition per string.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "HttpRequestMethodConfig": { + "additionalProperties": false, + "description": "Information about an HTTP method condition.\n HTTP defines a set of request methods, also referred to as HTTP verbs. For more information, see the [HTTP Method Registry](https://docs.aws.amazon.com/https://www.iana.org/assignments/http-methods/http-methods.xhtml). You can also define custom HTTP methods.", + "properties": { + "Values": { + "description": "The name of the request method. The maximum size is 40 characters. The allowed characters are A-Z, hyphen (-), and underscore (_). The comparison is case sensitive. Wildcards are not supported; therefore, the method name must be an exact match.\n If you specify multiple strings, the condition is satisfied if one of the strings matches the HTTP request method. We recommend that you route GET and HEAD requests in the same way, because the response to a HEAD request may be cached.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "PathPatternConfig": { + "additionalProperties": false, + "description": "Information about a path pattern condition.", + "properties": { + "Values": { + "description": "The path patterns to compare against the request URL. The maximum size of each string is 128 characters. The comparison is case sensitive. The following wildcard characters are supported: * (matches 0 or more characters) and ? (matches exactly 1 character).\n If you specify multiple strings, the condition is satisfied if one of them matches the request URL. The path pattern is compared only to the path of the URL, not to its query string.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "QueryStringConfig": { + "additionalProperties": false, + "description": "Information about a query string condition.\n The query string component of a URI starts after the first '?' character and is terminated by either a '#' character or the end of the URI. A typical query string contains key/value pairs separated by '&' characters. The allowed characters are specified by RFC 3986. Any character can be percentage encoded.", + "properties": { + "Values": { + "description": "The key/value pairs or values to find in the query string. The maximum size of each string is 128 characters. The comparison is case insensitive. The following wildcard characters are supported: * (matches 0 or more characters) and ? (matches exactly 1 character). To search for a literal '*' or '?' character in a query string, you must escape these characters in ``Values`` using a '\\' character.\n If you specify multiple key/value pairs or values, the condition is satisfied if one of them is found in the query string.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/QueryStringKeyValue" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "QueryStringKeyValue": { + "additionalProperties": false, + "description": "Information about a key/value pair.", + "properties": { + "Key": { + "description": "The key. You can omit the key.", + "type": "string" + }, + "Value": { + "description": "The value.", + "type": "string" + } + }, + "type": "object" + }, + "RedirectConfig": { + "additionalProperties": false, + "description": "Information about a redirect action.\n A URI consists of the following components: protocol://hostname:port/path?query. You must modify at least one of the following components to avoid a redirect loop: protocol, hostname, port, or path. Any components that you do not modify retain their original values.\n You can reuse URI components using the following reserved keywords:\n + #{protocol}\n + #{host}\n + #{port}\n + #{path} (the leading \"/\" is removed)\n + #{query}\n \n For example, you can change the path to \"/new/#{path}\", the hostname to \"example.#{host}\", or the query to \"#{query}&value=xyz\".", + "properties": { + "Host": { + "description": "The hostname. This component is not percent-encoded. The hostname can contain #{host}.", + "type": "string" + }, + "Path": { + "description": "The absolute path, starting with the leading \"/\". This component is not percent-encoded. The path can contain #{host}, #{path}, and #{port}.", + "type": "string" + }, + "Port": { + "description": "The port. You can specify a value from 1 to 65535 or #{port}.", + "type": "string" + }, + "Protocol": { + "description": "The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You can't redirect HTTPS to HTTP.", + "type": "string" + }, + "Query": { + "description": "The query parameters, URL-encoded when necessary, but not percent-encoded. Do not include the leading \"?\", as it is automatically added. You can specify any of the reserved keywords.", + "type": "string" + }, + "StatusCode": { + "description": "The HTTP redirect code. The redirect is either permanent (HTTP 301) or temporary (HTTP 302).", + "type": "string" + } + }, + "required": [ + "StatusCode" + ], + "type": "object" + }, + "RuleCondition": { + "additionalProperties": false, + "description": "Specifies a condition for a listener rule.", + "properties": { + "Field": { + "description": "The field in the HTTP request. The following are the possible values:\n + ``http-header`` \n + ``http-request-method`` \n + ``host-header`` \n + ``path-pattern`` \n + ``query-string`` \n + ``source-ip``", + "type": "string" + }, + "HostHeaderConfig": { + "$ref": "#/definitions/HostHeaderConfig", + "description": "Information for a host header condition. Specify only when ``Field`` is ``host-header``." + }, + "HttpHeaderConfig": { + "$ref": "#/definitions/HttpHeaderConfig", + "description": "Information for an HTTP header condition. Specify only when ``Field`` is ``http-header``." + }, + "HttpRequestMethodConfig": { + "$ref": "#/definitions/HttpRequestMethodConfig", + "description": "Information for an HTTP method condition. Specify only when ``Field`` is ``http-request-method``." + }, + "PathPatternConfig": { + "$ref": "#/definitions/PathPatternConfig", + "description": "Information for a path pattern condition. Specify only when ``Field`` is ``path-pattern``." + }, + "QueryStringConfig": { + "$ref": "#/definitions/QueryStringConfig", + "description": "Information for a query string condition. Specify only when ``Field`` is ``query-string``." + }, + "SourceIpConfig": { + "$ref": "#/definitions/SourceIpConfig", + "description": "Information for a source IP condition. Specify only when ``Field`` is ``source-ip``." + }, + "Values": { + "description": "The condition value. Specify only when ``Field`` is ``host-header`` or ``path-pattern``. Alternatively, to specify multiple host names or multiple path patterns, use ``HostHeaderConfig`` or ``PathPatternConfig``.\n If ``Field`` is ``host-header`` and you're not using ``HostHeaderConfig``, you can specify a single host name (for example, my.example.com). A host name is case insensitive, can be up to 128 characters in length, and can contain any of the following characters.\n + A-Z, a-z, 0-9\n + - .\n + * (matches 0 or more characters)\n + ? (matches exactly 1 character)\n \n If ``Field`` is ``path-pattern`` and you're not using ``PathPatternConfig``, you can specify a single path pattern (for example, /img/*). A path pattern is case-sensitive, can be up to 128 characters in length, and can contain any of the following characters.\n + A-Z, a-z, 0-9\n + _ - . $ / ~ \" ' @ : +\n + & (using &)\n + * (matches 0 or more characters)\n + ? (matches exactly 1 character)", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "SourceIpConfig": { + "additionalProperties": false, + "description": "Information about a source IP condition.\n You can use this condition to route based on the IP address of the source that connects to the load balancer. If a client is behind a proxy, this is the IP address of the proxy not the IP address of the client.", + "properties": { + "Values": { + "description": "The source IP addresses, in CIDR format. You can use both IPv4 and IPv6 addresses. Wildcards are not supported.\n If you specify multiple addresses, the condition is satisfied if the source IP address of the request matches one of the CIDR blocks. This condition is not satisfied by the addresses in the X-Forwarded-For header.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "TargetGroupStickinessConfig": { + "additionalProperties": false, + "description": "Information about the target group stickiness for a rule.", + "properties": { + "DurationSeconds": { + "description": "The time period, in seconds, during which requests from a client should be routed to the same target group. The range is 1-604800 seconds (7 days).", + "type": "integer" + }, + "Enabled": { + "description": "Indicates whether target group stickiness is enabled.", + "type": "boolean" + } + }, + "type": "object" + }, + "TargetGroupTuple": { + "additionalProperties": false, + "description": "Information about how traffic will be distributed between multiple target groups in a forward rule.", + "properties": { + "TargetGroupArn": { + "description": "The Amazon Resource Name (ARN) of the target group.", + "type": "string" + }, + "Weight": { + "description": "The weight. The range is 0 to 999.", + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Specifies a listener rule. The listener must be associated with an Application Load Balancer. Each rule consists of a priority, one or more actions, and one or more conditions.\n For more information, see [Quotas for your Application Load Balancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html) in the *User Guide for Application Load Balancers*.", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateRule", + "elasticloadbalancing:DescribeRules", + "cognito-idp:DescribeUserPoolClient" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DeleteRule", + "elasticloadbalancing:DescribeRules" + ] + }, + "list": { + "handlerSchema": { + "oneOf": [ + { + "required": [ + "ListenerArn" + ] + }, + { + "required": [ + "RuleArns" + ] + } + ], + "properties": { + "ListenerArn": { + "$ref": "resource-schema.json#/properties/ListenerArn" + }, + "RuleArns": { + "insertionOrder": false, + "items": { + "$ref": "resource-schema.json#/properties/RuleArn" + }, + "type": "array", + "uniqueItems": false + } + } + }, + "permissions": [ + "elasticloadbalancing:DescribeRules" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeRules" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyRule", + "elasticloadbalancing:SetRulePriorities", + "elasticloadbalancing:DescribeRules" + ] + } + }, + "primaryIdentifier": [ + "/properties/RuleArn" + ], + "properties": { + "Actions": { + "description": "The actions.\n The rule must include exactly one of the following types of actions: ``forward``, ``fixed-response``, or ``redirect``, and it must be the last action to be performed. If the rule is for an HTTPS listener, it can also optionally include an authentication action.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Action" + }, + "type": "array", + "uniqueItems": true + }, + "Conditions": { + "description": "The conditions.\n The rule can optionally include up to one of each of the following conditions: ``http-request-method``, ``host-header``, ``path-pattern``, and ``source-ip``. A rule can also optionally include one or more of each of the following conditions: ``http-header`` and ``query-string``.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RuleCondition" + }, + "type": "array", + "uniqueItems": true + }, + "IsDefault": { + "description": "", + "type": "boolean" + }, + "ListenerArn": { + "description": "The Amazon Resource Name (ARN) of the listener.", + "type": "string" + }, + "Priority": { + "description": "The rule priority. A listener can't have multiple rules with the same priority.\n If you try to reorder rules by updating their priorities, do not specify a new priority if an existing rule already uses this priority, as this can cause an error. If you need to reuse a priority with a different rule, you must remove it as a priority first, and then specify it in a subsequent update.", + "type": "integer" + }, + "RuleArn": { + "description": "", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/RuleArn", + "/properties/IsDefault" + ], + "required": [ + "Actions", + "Priority", + "Conditions" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ElasticLoadBalancingV2::ListenerRule", + "writeOnlyProperties": [ + "/properties/Actions/*/AuthenticateOidcConfig/ClientSecret", + "/properties/ListenerArn" + ] +} diff --git a/src/schema/aws-elasticloadbalancingv2-loadbalancer.json b/src/schema/aws-elasticloadbalancingv2-loadbalancer.json index 23dbea9c..e2bdf6e8 100644 --- a/src/schema/aws-elasticloadbalancingv2-loadbalancer.json +++ b/src/schema/aws-elasticloadbalancingv2-loadbalancer.json @@ -1,230 +1,257 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Type", - "/properties/Scheme" - ], - "definitions": { - "LoadBalancerAttribute": { - "additionalProperties": false, - "description": "Specifies an attribute for an Application Load Balancer, a Network Load Balancer, or a Gateway Load Balancer.", - "properties": { - "Key": { - "description": "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and cannot be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.", - "type": "string" - }, - "Value": { - "description": "The value of the attribute.", - "type": "string" - } - }, - "type": "object" - }, - "SubnetMapping": { - "additionalProperties": false, - "description": "Specifies a subnet for a load balancer.", - "properties": { - "AllocationId": { - "description": "[Network Load Balancers] The allocation ID of the Elastic IP address for an internet-facing load balancer.", - "type": "string" - }, - "IPv6Address": { - "description": "[Network Load Balancers] The IPv6 address.", - "type": "string" - }, - "PrivateIPv4Address": { - "description": "[Network Load Balancers] The private IPv4 address for an internal load balancer.", - "type": "string" - }, - "SourceNatIpv6Prefix": { - "description": "", - "type": "string" - }, - "SubnetId": { - "description": "The ID of the subnet.", - "type": "string" - } - }, - "required": [ - "SubnetId" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Information about a tag.", - "properties": { - "Key": { - "description": "The key of the tag.", - "type": "string" - }, - "Value": { - "description": "The value of the tag.", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "Specifies an Application Load Balancer, a Network Load Balancer, or a Gateway Load Balancer.", - "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", - "handlers": { - "create": { - "permissions": [ - "elasticloadbalancing:CreateLoadBalancer", - "elasticloadbalancing:DescribeLoadBalancers", - "elasticloadbalancing:ModifyLoadBalancerAttributes", - "elasticloadbalancing:AddTags" - ], - "timeoutInMinutes": 30 - }, - "delete": { - "permissions": [ - "elasticloadbalancing:DescribeLoadBalancers", - "elasticloadbalancing:DeleteLoadBalancer" - ] - }, - "list": { - "permissions": [ - "elasticloadbalancing:DescribeLoadBalancers" - ] - }, - "read": { - "permissions": [ - "elasticloadbalancing:DescribeLoadBalancers", - "elasticloadbalancing:DescribeLoadBalancerAttributes", - "elasticloadbalancing:DescribeTags" - ] - }, - "update": { - "permissions": [ - "elasticloadbalancing:ModifyLoadBalancerAttributes", - "elasticloadbalancing:SetSubnets", - "elasticloadbalancing:SetIpAddressType", - "elasticloadbalancing:SetSecurityGroups", - "elasticloadbalancing:AddTags", - "elasticloadbalancing:RemoveTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/LoadBalancerArn" - ], - "properties": { - "CanonicalHostedZoneID": { - "description": "", - "type": "string" - }, - "DNSName": { - "description": "", - "type": "string" - }, - "EnablePrefixForIpv6SourceNat": { - "description": "", - "type": "string" - }, - "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { - "description": "Indicates whether to evaluate inbound security group rules for traffic sent to a Network Load Balancer through privatelink.", - "type": "string" - }, - "IpAddressType": { - "description": "Note: Internal load balancers must use the ``ipv4`` IP address type.\n [Application Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses), ``dualstack`` (for IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (for IPv6 only public addresses, with private IPv4 and IPv6 addresses).\n Note: Application Load Balancer authentication only supports IPv4 addresses when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer cannot complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses). You can\u2019t specify ``dualstack`` for a load balancer with a UDP or TCP_UDP listener.\n [Gateway Load Balancers] The IP address type. The possible values are ``ipv4`` (for only IPv4 addresses) and ``dualstack`` (for IPv4 and IPv6 addresses).", - "type": "string" - }, - "LoadBalancerArn": { - "description": "", - "type": "string" - }, - "LoadBalancerAttributes": { - "arrayType": "AttributeList", - "description": "The load balancer attributes.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LoadBalancerAttribute" - }, - "type": "array", - "uniqueItems": true - }, - "LoadBalancerFullName": { - "description": "", - "type": "string" - }, - "LoadBalancerName": { - "description": "", - "type": "string" - }, - "Name": { - "description": "The name of the load balancer. This name must be unique per region per account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, must not begin or end with a hyphen, and must not begin with \"internal-\".\n If you don't specify a name, AWS CloudFormation generates a unique physical ID for the load balancer. If you specify a name, you cannot perform updates that require replacement of this resource, but you can perform other updates. To replace the resource, specify a new name.", - "type": "string" - }, - "Scheme": { - "description": "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You cannot specify a scheme for a Gateway Load Balancer.", - "type": "string" - }, - "SecurityGroups": { - "description": "[Application Load Balancers and Network Load Balancers] The IDs of the security groups for the load balancer.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "SubnetMappings": { - "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You cannot specify Elastic IP addresses for your subnets.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SubnetMapping" - }, - "type": "array", - "uniqueItems": true - }, - "Subnets": { - "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "description": "The tags to assign to the load balancer.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Type": { - "description": "The type of load balancer. The default is ``application``.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/LoadBalancerName", - "/properties/LoadBalancerFullName", - "/properties/CanonicalHostedZoneID", - "/properties/LoadBalancerArn", - "/properties/DNSName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "elasticloadbalancing:AddTags", - "elasticloadbalancing:DescribeTags", - "elasticloadbalancing:RemoveTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "description": "Specifies an attribute for an Application Load Balancer, a Network Load Balancer, or a Gateway Load Balancer.", + "properties": { + "Key": { + "description": "The name of the attribute.\n The following attributes are supported by all load balancers:\n + ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false``. The default for Network Load Balancers and Gateway Load Balancers is ``false``. The default for Application Load Balancers is ``true``, and can't be changed.\n \n The following attributes are supported by both Application Load Balancers and Network Load Balancers:\n + ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs.\n + ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway.\n + ``zonal_shift.config.enabled`` - Indicates whether zonal shift is enabled. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Application Load Balancers:\n + ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.\n + ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n + ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false``. The default is ``false``.\n + ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.\n + ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.\n + ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor``, ``defensive``, and ``strictest``. The default is ``defensive``.\n + ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer (``true``) or routed to targets (``false``). The default is ``false``.\n + ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers (``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite``), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false``. The default is ``false``.\n + ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append``, ``preserve``, and ``remove``. The default is ``append``.\n + If the value is ``append``, the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n + If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change.\n + If the value is ``remove``, the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets.\n \n + ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false``. The default is ``true``. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens.\n + ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false``. The default is ``false``.\n \n The following attributes are supported by only Network Load Balancers:\n + ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.", + "type": "string" + }, + "Value": { + "description": "The value of the attribute.", + "type": "string" + } + }, + "type": "object" + }, + "MinimumLoadBalancerCapacity": { + "additionalProperties": false, + "description": "The minimum capacity for a load balancer.", + "properties": { + "CapacityUnits": { + "description": "The number of capacity units.", + "type": "integer" + } + }, + "required": [ + "CapacityUnits" + ], + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "description": "Specifies a subnet for a load balancer.", + "properties": { + "AllocationId": { + "description": "[Network Load Balancers] The allocation ID of the Elastic IP address for an internet-facing load balancer.", + "type": "string" + }, + "IPv6Address": { + "description": "[Network Load Balancers] The IPv6 address.", + "type": "string" + }, + "PrivateIPv4Address": { + "description": "[Network Load Balancers] The private IPv4 address for an internal load balancer.", + "type": "string" + }, + "SourceNatIpv6Prefix": { + "description": "[Network Load Balancers with UDP listeners] The IPv6 prefix to use for source NAT. Specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or ``auto_assigned`` to use an IPv6 prefix selected at random from the subnet CIDR block.", + "type": "string" + }, + "SubnetId": { + "description": "The ID of the subnet.", + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Information about a tag.", + "properties": { + "Key": { + "description": "The key of the tag.", + "type": "string" + }, + "Value": { + "description": "The value of the tag.", + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Specifies an Application Load Balancer, a Network Load Balancer, or a Gateway Load Balancer.", + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags", + "ec2:DescribeIpamPools" + ], + "timeoutInMinutes": 30 + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeCapacityReservation", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:ModifyCapacityReservation", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:ModifyIpPools", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "description": "", + "type": "string" + }, + "DNSName": { + "description": "", + "type": "string" + }, + "EnablePrefixForIpv6SourceNat": { + "description": "[Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be ``dualstack``. The default value is ``off``.", + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "description": "Indicates whether to evaluate inbound security group rules for traffic sent to a Network Load Balancer through privatelink. The default is ``on``.", + "type": "string" + }, + "IpAddressType": { + "description": "The IP address type. Internal load balancers must use ``ipv4``.\n [Application Load Balancers] The possible values are ``ipv4`` (IPv4 addresses), ``dualstack`` (IPv4 and IPv6 addresses), and ``dualstack-without-public-ipv4`` (public IPv6 addresses and private IPv4 and IPv6 addresses).\n Application Load Balancer authentication supports IPv4 addresses only when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer can't complete the authentication process, resulting in HTTP 500 errors.\n [Network Load Balancers and Gateway Load Balancers] The possible values are ``ipv4`` (IPv4 addresses) and ``dualstack`` (IPv4 and IPv6 addresses).", + "type": "string" + }, + "Ipv4IpamPoolId": { + "description": "", + "type": "string" + }, + "LoadBalancerArn": { + "description": "", + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "description": "The load balancer attributes.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "description": "", + "type": "string" + }, + "LoadBalancerName": { + "description": "", + "type": "string" + }, + "MinimumLoadBalancerCapacity": { + "$ref": "#/definitions/MinimumLoadBalancerCapacity", + "description": "The minimum capacity for a load balancer.", + "type": "object" + }, + "Name": { + "description": "The name of the load balancer. This name must be unique per region per account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, must not begin or end with a hyphen, and must not begin with \"internal-\".\n If you don't specify a name, AWS CloudFormation generates a unique physical ID for the load balancer. If you specify a name, you cannot perform updates that require replacement of this resource, but you can perform other updates. To replace the resource, specify a new name.", + "type": "string" + }, + "Scheme": { + "description": "The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet.\n The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer.\n The default is an Internet-facing load balancer.\n You can't specify a scheme for a Gateway Load Balancer.", + "type": "string" + }, + "SecurityGroups": { + "description": "[Application Load Balancers and Network Load Balancers] The IDs of the security groups for the load balancer.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet.\n [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You can't specify Elastic IP addresses for your subnets.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "description": "The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets.\n [Application Load Balancers] You must specify subnets from at least two Availability Zones.\n [Application Load Balancers on Outposts] You must specify one Outpost subnet.\n [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones.\n [Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "The tags to assign to the load balancer.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "description": "The type of load balancer. The default is ``application``.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "elasticloadbalancing:AddTags", + "elasticloadbalancing:DescribeTags", + "elasticloadbalancing:RemoveTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/schema/aws-elasticloadbalancingv2-targetgroup.json b/src/schema/aws-elasticloadbalancingv2-targetgroup.json index 8d0d3223..3c8d80ed 100644 --- a/src/schema/aws-elasticloadbalancingv2-targetgroup.json +++ b/src/schema/aws-elasticloadbalancingv2-targetgroup.json @@ -1,262 +1,262 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TargetType", - "/properties/ProtocolVersion", - "/properties/Port", - "/properties/Name", - "/properties/VpcId", - "/properties/Protocol", - "/properties/IpAddressType" - ], - "definitions": { - "Matcher": { - "additionalProperties": false, - "properties": { - "GrpcCode": { - "description": "You can specify values between 0 and 99. You can specify multiple values, or a range of values. The default value is 12.", - "type": "string" - }, - "HttpCode": { - "description": "For Application Load Balancers, you can specify values between 200 and 499, and the default value is 200. You can specify multiple values or a range of values. ", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The value for the tag. ", - "type": "string" - }, - "Value": { - "description": "The key name of the tag. ", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TargetDescription": { - "additionalProperties": false, - "properties": { - "AvailabilityZone": { - "description": "An Availability Zone or all. This determines whether the target receives traffic from the load balancer nodes in the specified Availability Zone or from all enabled Availability Zones for the load balancer.", - "type": "string" - }, - "Id": { - "description": "The ID of the target. If the target type of the target group is instance, specify an instance ID. If the target type is ip, specify an IP address. If the target type is lambda, specify the ARN of the Lambda function. If the target type is alb, specify the ARN of the Application Load Balancer target. ", - "type": "string" - }, - "Port": { - "description": "The port on which the target is listening. If the target group protocol is GENEVE, the supported port is 6081. If the target type is alb, the targeted Application Load Balancer must have at least one listener whose port matches the target group port. Not used if the target is a Lambda function.", - "type": "integer" - } - }, - "required": [ - "Id" - ], - "type": "object" - }, - "TargetGroupAttribute": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The value of the attribute.", - "type": "string" - }, - "Value": { - "description": "The name of the attribute.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ElasticLoadBalancingV2::TargetGroup", - "handlers": { - "create": { - "permissions": [ - "elasticloadbalancing:CreateTargetGroup", - "elasticloadbalancing:DescribeTargetGroups", - "elasticloadbalancing:RegisterTargets", - "elasticloadbalancing:ModifyTargetGroupAttributes", - "elasticloadbalancing:DescribeTargetHealth", - "elasticloadbalancing:AddTags" - ] - }, - "delete": { - "permissions": [ - "elasticloadbalancing:DeleteTargetGroup", - "elasticloadbalancing:DescribeTargetGroups" - ] - }, - "list": { - "permissions": [ - "elasticloadbalancing:DescribeTargetGroups" - ] - }, - "read": { - "permissions": [ - "elasticloadbalancing:DescribeTargetGroups", - "elasticloadbalancing:DescribeTargetGroupAttributes", - "elasticloadbalancing:DescribeTargetHealth", - "elasticloadbalancing:DescribeTags" - ] - }, - "update": { - "permissions": [ - "elasticloadbalancing:DescribeTargetGroups", - "elasticloadbalancing:ModifyTargetGroup", - "elasticloadbalancing:ModifyTargetGroupAttributes", - "elasticloadbalancing:RegisterTargets", - "elasticloadbalancing:DescribeTargetHealth", - "elasticloadbalancing:DeregisterTargets", - "elasticloadbalancing:AddTags", - "elasticloadbalancing:RemoveTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/TargetGroupArn" - ], - "properties": { - "HealthCheckEnabled": { - "description": "Indicates whether health checks are enabled. If the target type is lambda, health checks are disabled by default but can be enabled. If the target type is instance, ip, or alb, health checks are always enabled and cannot be disabled.", - "type": "boolean" - }, - "HealthCheckIntervalSeconds": { - "description": "The approximate amount of time, in seconds, between health checks of an individual target.", - "type": "integer" - }, - "HealthCheckPath": { - "description": "[HTTP/HTTPS health checks] The destination for health checks on the targets. [HTTP1 or HTTP2 protocol version] The ping path. The default is /. [GRPC protocol version] The path of a custom health check method with the format /package.service/method. The default is /AWS.ALB/healthcheck.", - "type": "string" - }, - "HealthCheckPort": { - "description": "The port the load balancer uses when performing health checks on targets. ", - "type": "string" - }, - "HealthCheckProtocol": { - "description": "The protocol the load balancer uses when performing health checks on targets. ", - "type": "string" - }, - "HealthCheckTimeoutSeconds": { - "description": "The amount of time, in seconds, during which no response from a target means a failed health check.", - "type": "integer" - }, - "HealthyThresholdCount": { - "description": "The number of consecutive health checks successes required before considering an unhealthy target healthy. ", - "type": "integer" - }, - "IpAddressType": { - "description": "The type of IP address used for this target group. The possible values are ipv4 and ipv6. ", - "type": "string" - }, - "LoadBalancerArns": { - "description": "The Amazon Resource Names (ARNs) of the load balancers that route traffic to this target group.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Matcher": { - "$ref": "#/definitions/Matcher", - "description": "[HTTP/HTTPS health checks] The HTTP or gRPC codes to use when checking for a successful response from a target." - }, - "Name": { - "description": "The name of the target group.", - "type": "string" - }, - "Port": { - "description": "The port on which the targets receive traffic. This port is used unless you specify a port override when registering the target. If the target is a Lambda function, this parameter does not apply. If the protocol is GENEVE, the supported port is 6081.", - "type": "integer" - }, - "Protocol": { - "description": "The protocol to use for routing traffic to the targets.", - "type": "string" - }, - "ProtocolVersion": { - "description": "[HTTP/HTTPS protocol] The protocol version. The possible values are GRPC, HTTP1, and HTTP2.", - "type": "string" - }, - "Tags": { - "description": "The tags.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TargetGroupArn": { - "description": "The ARN of the Target Group", - "type": "string" - }, - "TargetGroupAttributes": { - "arrayType": "AttributeList", - "description": "The attributes.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TargetGroupAttribute" - }, - "type": "array", - "uniqueItems": true - }, - "TargetGroupFullName": { - "description": "The full name of the target group.", - "type": "string" - }, - "TargetGroupName": { - "description": "The name of the target group.", - "type": "string" - }, - "TargetType": { - "description": "The type of target that you must specify when registering targets with this target group. You can't specify targets for a target group using more than one target type.", - "type": "string" - }, - "Targets": { - "description": "The targets.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TargetDescription" - }, - "type": "array", - "uniqueItems": true - }, - "UnhealthyThresholdCount": { - "description": "The number of consecutive health check failures required before considering a target unhealthy.", - "type": "integer" - }, - "VpcId": { - "description": "The identifier of the virtual private cloud (VPC). If the target is a Lambda function, this parameter does not apply.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/LoadBalancerArns", - "/properties/TargetGroupArn", - "/properties/TargetGroupName", - "/properties/TargetGroupFullName" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "elasticloadbalancing:AddTags", - "elasticloadbalancing:DescribeTags", - "elasticloadbalancing:RemoveTags" - ], - "tagOnCreate": false, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElasticLoadBalancingV2::TargetGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TargetType", + "/properties/ProtocolVersion", + "/properties/Port", + "/properties/Name", + "/properties/VpcId", + "/properties/Protocol", + "/properties/IpAddressType" + ], + "definitions": { + "Matcher": { + "additionalProperties": false, + "properties": { + "GrpcCode": { + "description": "You can specify values between 0 and 99. You can specify multiple values, or a range of values. The default value is 12.", + "type": "string" + }, + "HttpCode": { + "description": "For Application Load Balancers, you can specify values between 200 and 499, and the default value is 200. You can specify multiple values or a range of values. ", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The value for the tag. ", + "type": "string" + }, + "Value": { + "description": "The key name of the tag. ", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TargetDescription": { + "additionalProperties": false, + "properties": { + "AvailabilityZone": { + "description": "An Availability Zone or all. This determines whether the target receives traffic from the load balancer nodes in the specified Availability Zone or from all enabled Availability Zones for the load balancer.", + "type": "string" + }, + "Id": { + "description": "The ID of the target. If the target type of the target group is instance, specify an instance ID. If the target type is ip, specify an IP address. If the target type is lambda, specify the ARN of the Lambda function. If the target type is alb, specify the ARN of the Application Load Balancer target. ", + "type": "string" + }, + "Port": { + "description": "The port on which the target is listening. If the target group protocol is GENEVE, the supported port is 6081. If the target type is alb, the targeted Application Load Balancer must have at least one listener whose port matches the target group port. Not used if the target is a Lambda function.", + "type": "integer" + } + }, + "required": [ + "Id" + ], + "type": "object" + }, + "TargetGroupAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The value of the attribute.", + "type": "string" + }, + "Value": { + "description": "The name of the attribute.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ElasticLoadBalancingV2::TargetGroup", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateTargetGroup", + "elasticloadbalancing:DescribeTargetGroups", + "elasticloadbalancing:RegisterTargets", + "elasticloadbalancing:ModifyTargetGroupAttributes", + "elasticloadbalancing:DescribeTargetHealth", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DeleteTargetGroup", + "elasticloadbalancing:DescribeTargetGroups" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeTargetGroups" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeTargetGroups", + "elasticloadbalancing:DescribeTargetGroupAttributes", + "elasticloadbalancing:DescribeTargetHealth", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:DescribeTargetGroups", + "elasticloadbalancing:ModifyTargetGroup", + "elasticloadbalancing:ModifyTargetGroupAttributes", + "elasticloadbalancing:RegisterTargets", + "elasticloadbalancing:DescribeTargetHealth", + "elasticloadbalancing:DeregisterTargets", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/TargetGroupArn" + ], + "properties": { + "HealthCheckEnabled": { + "description": "Indicates whether health checks are enabled. If the target type is lambda, health checks are disabled by default but can be enabled. If the target type is instance, ip, or alb, health checks are always enabled and cannot be disabled.", + "type": "boolean" + }, + "HealthCheckIntervalSeconds": { + "description": "The approximate amount of time, in seconds, between health checks of an individual target.", + "type": "integer" + }, + "HealthCheckPath": { + "description": "[HTTP/HTTPS health checks] The destination for health checks on the targets. [HTTP1 or HTTP2 protocol version] The ping path. The default is /. [GRPC protocol version] The path of a custom health check method with the format /package.service/method. The default is /AWS.ALB/healthcheck.", + "type": "string" + }, + "HealthCheckPort": { + "description": "The port the load balancer uses when performing health checks on targets. ", + "type": "string" + }, + "HealthCheckProtocol": { + "description": "The protocol the load balancer uses when performing health checks on targets. ", + "type": "string" + }, + "HealthCheckTimeoutSeconds": { + "description": "The amount of time, in seconds, during which no response from a target means a failed health check.", + "type": "integer" + }, + "HealthyThresholdCount": { + "description": "The number of consecutive health checks successes required before considering an unhealthy target healthy. ", + "type": "integer" + }, + "IpAddressType": { + "description": "The type of IP address used for this target group. The possible values are ipv4 and ipv6. ", + "type": "string" + }, + "LoadBalancerArns": { + "description": "The Amazon Resource Names (ARNs) of the load balancers that route traffic to this target group.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Matcher": { + "$ref": "#/definitions/Matcher", + "description": "[HTTP/HTTPS health checks] The HTTP or gRPC codes to use when checking for a successful response from a target." + }, + "Name": { + "description": "The name of the target group.", + "type": "string" + }, + "Port": { + "description": "The port on which the targets receive traffic. This port is used unless you specify a port override when registering the target. If the target is a Lambda function, this parameter does not apply. If the protocol is GENEVE, the supported port is 6081.", + "type": "integer" + }, + "Protocol": { + "description": "The protocol to use for routing traffic to the targets.", + "type": "string" + }, + "ProtocolVersion": { + "description": "[HTTP/HTTPS protocol] The protocol version. The possible values are GRPC, HTTP1, and HTTP2.", + "type": "string" + }, + "Tags": { + "description": "The tags.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TargetGroupArn": { + "description": "The ARN of the Target Group", + "type": "string" + }, + "TargetGroupAttributes": { + "arrayType": "AttributeList", + "description": "The attributes.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TargetGroupAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "TargetGroupFullName": { + "description": "The full name of the target group.", + "type": "string" + }, + "TargetGroupName": { + "description": "The name of the target group.", + "type": "string" + }, + "TargetType": { + "description": "The type of target that you must specify when registering targets with this target group. You can't specify targets for a target group using more than one target type.", + "type": "string" + }, + "Targets": { + "description": "The targets.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TargetDescription" + }, + "type": "array", + "uniqueItems": true + }, + "UnhealthyThresholdCount": { + "description": "The number of consecutive health check failures required before considering a target unhealthy.", + "type": "integer" + }, + "VpcId": { + "description": "The identifier of the virtual private cloud (VPC). If the target is a Lambda function, this parameter does not apply.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerArns", + "/properties/TargetGroupArn", + "/properties/TargetGroupName", + "/properties/TargetGroupFullName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "elasticloadbalancing:AddTags", + "elasticloadbalancing:DescribeTags", + "elasticloadbalancing:RemoveTags" + ], + "tagOnCreate": false, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::TargetGroup" +} diff --git a/src/schema/aws-elasticloadbalancingv2-truststore.json b/src/schema/aws-elasticloadbalancingv2-truststore.json index 4a02d3b8..b9f5d0b6 100644 --- a/src/schema/aws-elasticloadbalancingv2-truststore.json +++ b/src/schema/aws-elasticloadbalancingv2-truststore.json @@ -1,151 +1,151 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ElasticLoadBalancingV2::TrustStore", - "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-truststore.html", - "handlers": { - "create": { - "permissions": [ - "elasticloadbalancing:CreateTrustStore", - "elasticloadbalancing:DescribeTrustStores", - "elasticloadbalancing:AddTags", - "s3:GetObject", - "s3:GetObjectVersion" - ] - }, - "delete": { - "permissions": [ - "elasticloadbalancing:DescribeTrustStores", - "elasticloadbalancing:DeleteTrustStore" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Names": { - "insertionOrder": false, - "items": { - "$ref": "resource-schema.json#/properties/Name" - }, - "type": "array", - "uniqueItems": false - }, - "TrustStoreArns": { - "insertionOrder": false, - "items": { - "$ref": "resource-schema.json#/properties/TrustStoreArn" - }, - "type": "array", - "uniqueItems": false - } - } - }, - "permissions": [ - "elasticloadbalancing:DescribeTrustStores", - "s3:GetObject", - "s3:GetObjectVersion" - ] - }, - "read": { - "permissions": [ - "elasticloadbalancing:DescribeTrustStores", - "elasticloadbalancing:DescribeTags" - ] - }, - "update": { - "permissions": [ - "elasticloadbalancing:ModifyTrustStore", - "elasticloadbalancing:AddTags", - "elasticloadbalancing:RemoveTags", - "s3:GetObject", - "s3:GetObjectVersion" - ] - } - }, - "primaryIdentifier": [ - "/properties/TrustStoreArn" - ], - "properties": { - "CaCertificatesBundleS3Bucket": { - "description": "The name of the S3 bucket to fetch the CA certificate bundle from.", - "type": "string" - }, - "CaCertificatesBundleS3Key": { - "description": "The name of the S3 object to fetch the CA certificate bundle from.", - "type": "string" - }, - "CaCertificatesBundleS3ObjectVersion": { - "description": "The version of the S3 bucket that contains the CA certificate bundle.", - "type": "string" - }, - "Name": { - "description": "The name of the trust store.", - "type": "string" - }, - "NumberOfCaCertificates": { - "description": "The number of certificates associated with the trust store.", - "type": "integer" - }, - "Status": { - "description": "The status of the trust store, could be either of ACTIVE or CREATING.", - "type": "string" - }, - "Tags": { - "description": "The tags to assign to the trust store.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TrustStoreArn": { - "description": "The Amazon Resource Name (ARN) of the trust store.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/TrustStoreArn", - "/properties/Status", - "/properties/NumberOfCaCertificates" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "elasticloadbalancing:AddTags", - "elasticloadbalancing:DescribeTags", - "elasticloadbalancing:RemoveTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElasticLoadBalancingV2::TrustStore", - "writeOnlyProperties": [ - "/properties/CaCertificatesBundleS3Bucket", - "/properties/CaCertificatesBundleS3Key", - "/properties/CaCertificatesBundleS3ObjectVersion" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ElasticLoadBalancingV2::TrustStore", + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-truststore.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateTrustStore", + "elasticloadbalancing:DescribeTrustStores", + "elasticloadbalancing:AddTags", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeTrustStores", + "elasticloadbalancing:DeleteTrustStore" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Names": { + "insertionOrder": false, + "items": { + "$ref": "resource-schema.json#/properties/Name" + }, + "type": "array", + "uniqueItems": false + }, + "TrustStoreArns": { + "insertionOrder": false, + "items": { + "$ref": "resource-schema.json#/properties/TrustStoreArn" + }, + "type": "array", + "uniqueItems": false + } + } + }, + "permissions": [ + "elasticloadbalancing:DescribeTrustStores", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeTrustStores", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyTrustStore", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags", + "s3:GetObject", + "s3:GetObjectVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/TrustStoreArn" + ], + "properties": { + "CaCertificatesBundleS3Bucket": { + "description": "The name of the S3 bucket to fetch the CA certificate bundle from.", + "type": "string" + }, + "CaCertificatesBundleS3Key": { + "description": "The name of the S3 object to fetch the CA certificate bundle from.", + "type": "string" + }, + "CaCertificatesBundleS3ObjectVersion": { + "description": "The version of the S3 bucket that contains the CA certificate bundle.", + "type": "string" + }, + "Name": { + "description": "The name of the trust store.", + "type": "string" + }, + "NumberOfCaCertificates": { + "description": "The number of certificates associated with the trust store.", + "type": "integer" + }, + "Status": { + "description": "The status of the trust store, could be either of ACTIVE or CREATING.", + "type": "string" + }, + "Tags": { + "description": "The tags to assign to the trust store.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TrustStoreArn": { + "description": "The Amazon Resource Name (ARN) of the trust store.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TrustStoreArn", + "/properties/Status", + "/properties/NumberOfCaCertificates" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "elasticloadbalancing:AddTags", + "elasticloadbalancing:DescribeTags", + "elasticloadbalancing:RemoveTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::TrustStore", + "writeOnlyProperties": [ + "/properties/CaCertificatesBundleS3Bucket", + "/properties/CaCertificatesBundleS3Key", + "/properties/CaCertificatesBundleS3ObjectVersion" + ] +} diff --git a/src/schema/aws-elasticloadbalancingv2-truststorerevocation.json b/src/schema/aws-elasticloadbalancingv2-truststorerevocation.json index 4cd0f4d7..be772e50 100644 --- a/src/schema/aws-elasticloadbalancingv2-truststorerevocation.json +++ b/src/schema/aws-elasticloadbalancingv2-truststorerevocation.json @@ -1,143 +1,143 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TrustStoreArn", - "/properties/RevocationContents" - ], - "definitions": { - "RevocationContent": { - "additionalProperties": false, - "properties": { - "RevocationType": { - "type": "string" - }, - "S3Bucket": { - "type": "string" - }, - "S3Key": { - "type": "string" - }, - "S3ObjectVersion": { - "type": "string" - } - }, - "type": "object" - }, - "RevocationId": { - "type": "string" - }, - "TrustStoreRevocation": { - "additionalProperties": false, - "properties": { - "NumberOfRevokedEntries": { - "format": "int64", - "type": "integer" - }, - "RevocationId": { - "type": "string" - }, - "RevocationType": { - "type": "string" - }, - "TrustStoreArn": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ElasticLoadBalancingV2::TrustStoreRevocation", - "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-truststorerevocation.html", - "handlers": { - "create": { - "permissions": [ - "elasticloadbalancing:AddTrustStoreRevocations", - "elasticloadbalancing:DescribeTrustStoreRevocations", - "s3:GetObject", - "s3:GetObjectVersion" - ] - }, - "delete": { - "permissions": [ - "elasticloadbalancing:DescribeTrustStoreRevocations", - "elasticloadbalancing:RemoveTrustStoreRevocations" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "RevocationIds": { - "insertionOrder": false, - "items": { - "$ref": "resource-schema.json#/properties/RevocationId" - }, - "type": "array", - "uniqueItems": false - }, - "TrustStoreArn": { - "$ref": "resource-schema.json#/properties/TrustStoreArn" - } - }, - "required": [ - "TrustStoreArn" - ] - }, - "permissions": [ - "elasticloadbalancing:DescribeTrustStoreRevocations" - ] - }, - "read": { - "permissions": [ - "elasticloadbalancing:DescribeTrustStoreRevocations" - ] - } - }, - "primaryIdentifier": [ - "/properties/RevocationId", - "/properties/TrustStoreArn" - ], - "properties": { - "RevocationContents": { - "description": "The attributes required to create a trust store revocation.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RevocationContent" - }, - "type": "array", - "uniqueItems": true - }, - "RevocationId": { - "description": "The ID associated with the revocation.", - "format": "int64", - "type": "integer" - }, - "TrustStoreArn": { - "description": "The Amazon Resource Name (ARN) of the trust store.", - "type": "string" - }, - "TrustStoreRevocations": { - "description": "The data associated with a trust store revocation", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TrustStoreRevocation" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/RevocationId", - "/properties/TrustStoreRevocations" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ElasticLoadBalancingV2::TrustStoreRevocation", - "writeOnlyProperties": [ - "/properties/RevocationContents" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TrustStoreArn", + "/properties/RevocationContents" + ], + "definitions": { + "RevocationContent": { + "additionalProperties": false, + "properties": { + "RevocationType": { + "type": "string" + }, + "S3Bucket": { + "type": "string" + }, + "S3Key": { + "type": "string" + }, + "S3ObjectVersion": { + "type": "string" + } + }, + "type": "object" + }, + "RevocationId": { + "type": "string" + }, + "TrustStoreRevocation": { + "additionalProperties": false, + "properties": { + "NumberOfRevokedEntries": { + "format": "int64", + "type": "integer" + }, + "RevocationId": { + "type": "string" + }, + "RevocationType": { + "type": "string" + }, + "TrustStoreArn": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ElasticLoadBalancingV2::TrustStoreRevocation", + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-truststorerevocation.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:AddTrustStoreRevocations", + "elasticloadbalancing:DescribeTrustStoreRevocations", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeTrustStoreRevocations", + "elasticloadbalancing:RemoveTrustStoreRevocations" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "RevocationIds": { + "insertionOrder": false, + "items": { + "$ref": "resource-schema.json#/properties/RevocationId" + }, + "type": "array", + "uniqueItems": false + }, + "TrustStoreArn": { + "$ref": "resource-schema.json#/properties/TrustStoreArn" + } + }, + "required": [ + "TrustStoreArn" + ] + }, + "permissions": [ + "elasticloadbalancing:DescribeTrustStoreRevocations" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeTrustStoreRevocations" + ] + } + }, + "primaryIdentifier": [ + "/properties/RevocationId", + "/properties/TrustStoreArn" + ], + "properties": { + "RevocationContents": { + "description": "The attributes required to create a trust store revocation.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RevocationContent" + }, + "type": "array", + "uniqueItems": true + }, + "RevocationId": { + "description": "The ID associated with the revocation.", + "format": "int64", + "type": "integer" + }, + "TrustStoreArn": { + "description": "The Amazon Resource Name (ARN) of the trust store.", + "type": "string" + }, + "TrustStoreRevocations": { + "description": "The data associated with a trust store revocation", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TrustStoreRevocation" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/RevocationId", + "/properties/TrustStoreRevocations" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ElasticLoadBalancingV2::TrustStoreRevocation", + "writeOnlyProperties": [ + "/properties/RevocationContents" + ] +} diff --git a/src/schema/aws-elasticsearch-domain.json b/src/schema/aws-elasticsearch-domain.json index 0935c8d6..e45edcb2 100644 --- a/src/schema/aws-elasticsearch-domain.json +++ b/src/schema/aws-elasticsearch-domain.json @@ -1,317 +1,317 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainName" - ], - "definitions": { - "AdvancedSecurityOptionsInput": { - "additionalProperties": false, - "properties": { - "AnonymousAuthEnabled": { - "type": "boolean" - }, - "Enabled": { - "type": "boolean" - }, - "InternalUserDatabaseEnabled": { - "type": "boolean" - }, - "MasterUserOptions": { - "$ref": "#/definitions/MasterUserOptions" - } - }, - "type": "object" - }, - "CognitoOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "IdentityPoolId": { - "type": "string" - }, - "RoleArn": { - "type": "string" - }, - "UserPoolId": { - "type": "string" - } - }, - "type": "object" - }, - "ColdStorageOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "DomainEndpointOptions": { - "additionalProperties": false, - "properties": { - "CustomEndpoint": { - "type": "string" - }, - "CustomEndpointCertificateArn": { - "type": "string" - }, - "CustomEndpointEnabled": { - "type": "boolean" - }, - "EnforceHTTPS": { - "type": "boolean" - }, - "TLSSecurityPolicy": { - "type": "string" - } - }, - "type": "object" - }, - "EBSOptions": { - "additionalProperties": false, - "properties": { - "EBSEnabled": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticsearchClusterConfig": { - "additionalProperties": false, - "properties": { - "ColdStorageOptions": { - "$ref": "#/definitions/ColdStorageOptions" - }, - "DedicatedMasterCount": { - "type": "integer" - }, - "DedicatedMasterEnabled": { - "type": "boolean" - }, - "DedicatedMasterType": { - "type": "string" - }, - "InstanceCount": { - "type": "integer" - }, - "InstanceType": { - "type": "string" - }, - "WarmCount": { - "type": "integer" - }, - "WarmEnabled": { - "type": "boolean" - }, - "WarmType": { - "type": "string" - }, - "ZoneAwarenessConfig": { - "$ref": "#/definitions/ZoneAwarenessConfig" - }, - "ZoneAwarenessEnabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "EncryptionAtRestOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "KmsKeyId": { - "type": "string" - } - }, - "type": "object" - }, - "LogPublishingOption": { - "additionalProperties": false, - "properties": { - "CloudWatchLogsLogGroupArn": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "MasterUserOptions": { - "additionalProperties": false, - "properties": { - "MasterUserARN": { - "type": "string" - }, - "MasterUserName": { - "type": "string" - }, - "MasterUserPassword": { - "type": "string" - } - }, - "type": "object" - }, - "NodeToNodeEncryptionOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "SnapshotOptions": { - "additionalProperties": false, - "properties": { - "AutomatedSnapshotStartHour": { - "type": "integer" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "VPCOptions": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "ZoneAwarenessConfig": { - "additionalProperties": false, - "properties": { - "AvailabilityZoneCount": { - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Elasticsearch::Domain", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AccessPolicies": { - "type": "object" - }, - "AdvancedOptions": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "AdvancedSecurityOptions": { - "$ref": "#/definitions/AdvancedSecurityOptionsInput" - }, - "Arn": { - "type": "string" - }, - "CognitoOptions": { - "$ref": "#/definitions/CognitoOptions" - }, - "DomainArn": { - "type": "string" - }, - "DomainEndpoint": { - "type": "string" - }, - "DomainEndpointOptions": { - "$ref": "#/definitions/DomainEndpointOptions" - }, - "DomainName": { - "type": "string" - }, - "EBSOptions": { - "$ref": "#/definitions/EBSOptions" - }, - "ElasticsearchClusterConfig": { - "$ref": "#/definitions/ElasticsearchClusterConfig" - }, - "ElasticsearchVersion": { - "type": "string" - }, - "EncryptionAtRestOptions": { - "$ref": "#/definitions/EncryptionAtRestOptions" - }, - "Id": { - "type": "string" - }, - "LogPublishingOptions": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "$ref": "#/definitions/LogPublishingOption" - } - }, - "type": "object" - }, - "NodeToNodeEncryptionOptions": { - "$ref": "#/definitions/NodeToNodeEncryptionOptions" - }, - "SnapshotOptions": { - "$ref": "#/definitions/SnapshotOptions" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VPCOptions": { - "$ref": "#/definitions/VPCOptions" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/DomainArn", - "/properties/DomainEndpoint", - "/properties/Arn" - ], - "typeName": "AWS::Elasticsearch::Domain" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainName" + ], + "definitions": { + "AdvancedSecurityOptionsInput": { + "additionalProperties": false, + "properties": { + "AnonymousAuthEnabled": { + "type": "boolean" + }, + "Enabled": { + "type": "boolean" + }, + "InternalUserDatabaseEnabled": { + "type": "boolean" + }, + "MasterUserOptions": { + "$ref": "#/definitions/MasterUserOptions" + } + }, + "type": "object" + }, + "CognitoOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "IdentityPoolId": { + "type": "string" + }, + "RoleArn": { + "type": "string" + }, + "UserPoolId": { + "type": "string" + } + }, + "type": "object" + }, + "ColdStorageOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "DomainEndpointOptions": { + "additionalProperties": false, + "properties": { + "CustomEndpoint": { + "type": "string" + }, + "CustomEndpointCertificateArn": { + "type": "string" + }, + "CustomEndpointEnabled": { + "type": "boolean" + }, + "EnforceHTTPS": { + "type": "boolean" + }, + "TLSSecurityPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "EBSOptions": { + "additionalProperties": false, + "properties": { + "EBSEnabled": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "VolumeSize": { + "type": "integer" + }, + "VolumeType": { + "type": "string" + } + }, + "type": "object" + }, + "ElasticsearchClusterConfig": { + "additionalProperties": false, + "properties": { + "ColdStorageOptions": { + "$ref": "#/definitions/ColdStorageOptions" + }, + "DedicatedMasterCount": { + "type": "integer" + }, + "DedicatedMasterEnabled": { + "type": "boolean" + }, + "DedicatedMasterType": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceType": { + "type": "string" + }, + "WarmCount": { + "type": "integer" + }, + "WarmEnabled": { + "type": "boolean" + }, + "WarmType": { + "type": "string" + }, + "ZoneAwarenessConfig": { + "$ref": "#/definitions/ZoneAwarenessConfig" + }, + "ZoneAwarenessEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "EncryptionAtRestOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "KmsKeyId": { + "type": "string" + } + }, + "type": "object" + }, + "LogPublishingOption": { + "additionalProperties": false, + "properties": { + "CloudWatchLogsLogGroupArn": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "MasterUserOptions": { + "additionalProperties": false, + "properties": { + "MasterUserARN": { + "type": "string" + }, + "MasterUserName": { + "type": "string" + }, + "MasterUserPassword": { + "type": "string" + } + }, + "type": "object" + }, + "NodeToNodeEncryptionOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "SnapshotOptions": { + "additionalProperties": false, + "properties": { + "AutomatedSnapshotStartHour": { + "type": "integer" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VPCOptions": { + "additionalProperties": false, + "properties": { + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ZoneAwarenessConfig": { + "additionalProperties": false, + "properties": { + "AvailabilityZoneCount": { + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Elasticsearch::Domain", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AccessPolicies": { + "type": "object" + }, + "AdvancedOptions": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "AdvancedSecurityOptions": { + "$ref": "#/definitions/AdvancedSecurityOptionsInput" + }, + "Arn": { + "type": "string" + }, + "CognitoOptions": { + "$ref": "#/definitions/CognitoOptions" + }, + "DomainArn": { + "type": "string" + }, + "DomainEndpoint": { + "type": "string" + }, + "DomainEndpointOptions": { + "$ref": "#/definitions/DomainEndpointOptions" + }, + "DomainName": { + "type": "string" + }, + "EBSOptions": { + "$ref": "#/definitions/EBSOptions" + }, + "ElasticsearchClusterConfig": { + "$ref": "#/definitions/ElasticsearchClusterConfig" + }, + "ElasticsearchVersion": { + "type": "string" + }, + "EncryptionAtRestOptions": { + "$ref": "#/definitions/EncryptionAtRestOptions" + }, + "Id": { + "type": "string" + }, + "LogPublishingOptions": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "$ref": "#/definitions/LogPublishingOption" + } + }, + "type": "object" + }, + "NodeToNodeEncryptionOptions": { + "$ref": "#/definitions/NodeToNodeEncryptionOptions" + }, + "SnapshotOptions": { + "$ref": "#/definitions/SnapshotOptions" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VPCOptions": { + "$ref": "#/definitions/VPCOptions" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/DomainArn", + "/properties/DomainEndpoint", + "/properties/Arn" + ], + "typeName": "AWS::Elasticsearch::Domain" +} diff --git a/src/schema/aws-emr-cluster.json b/src/schema/aws-emr-cluster.json index e8818113..0a04b0e9 100644 --- a/src/schema/aws-emr-cluster.json +++ b/src/schema/aws-emr-cluster.json @@ -1,922 +1,922 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Steps", - "/properties/EbsRootVolumeSize", - "/properties/SecurityConfiguration", - "/properties/ScaleDownBehavior", - "/properties/Configurations", - "/properties/ReleaseLabel", - "/properties/BootstrapActions", - "/properties/EbsRootVolumeIops", - "/properties/KerberosAttributes", - "/properties/ServiceRole", - "/properties/LogEncryptionKmsKeyId", - "/properties/Name", - "/properties/EbsRootVolumeThroughput", - "/properties/JobFlowRole", - "/properties/AdditionalInfo", - "/properties/LogUri", - "/properties/CustomAmiId", - "/properties/PlacementGroupConfigs", - "/properties/OSReleaseLabel", - "/properties/AutoScalingRole", - "/properties/Applications" - ], - "definitions": { - "Application": { - "additionalProperties": false, - "properties": { - "AdditionalInfo": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "Args": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Name": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "type": "object" - }, - "AutoScalingPolicy": { - "additionalProperties": false, - "properties": { - "Constraints": { - "$ref": "#/definitions/ScalingConstraints" - }, - "Rules": { - "items": { - "$ref": "#/definitions/ScalingRule" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Constraints", - "Rules" - ], - "type": "object" - }, - "AutoTerminationPolicy": { - "additionalProperties": false, - "properties": { - "IdleTimeout": { - "type": "integer" - } - }, - "type": "object" - }, - "BootstrapActionConfig": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "ScriptBootstrapAction": { - "$ref": "#/definitions/ScriptBootstrapActionConfig" - } - }, - "required": [ - "ScriptBootstrapAction", - "Name" - ], - "type": "object" - }, - "CloudWatchAlarmDefinition": { - "additionalProperties": false, - "properties": { - "ComparisonOperator": { - "type": "string" - }, - "Dimensions": { - "items": { - "$ref": "#/definitions/MetricDimension" - }, - "type": "array", - "uniqueItems": true - }, - "EvaluationPeriods": { - "type": "integer" - }, - "MetricName": { - "type": "string" - }, - "Namespace": { - "type": "string" - }, - "Period": { - "type": "integer" - }, - "Statistic": { - "type": "string" - }, - "Threshold": { - "type": "number" - }, - "Unit": { - "type": "string" - } - }, - "required": [ - "MetricName", - "ComparisonOperator", - "Period", - "Threshold" - ], - "type": "object" - }, - "ComputeLimits": { - "additionalProperties": false, - "properties": { - "MaximumCapacityUnits": { - "type": "integer" - }, - "MaximumCoreCapacityUnits": { - "type": "integer" - }, - "MaximumOnDemandCapacityUnits": { - "type": "integer" - }, - "MinimumCapacityUnits": { - "type": "integer" - }, - "UnitType": { - "type": "string" - } - }, - "required": [ - "UnitType", - "MaximumCapacityUnits", - "MinimumCapacityUnits" - ], - "type": "object" - }, - "Configuration": { - "additionalProperties": false, - "properties": { - "Classification": { - "type": "string" - }, - "ConfigurationProperties": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "Configurations": { - "items": { - "$ref": "#/definitions/Configuration" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "EbsBlockDeviceConfig": { - "additionalProperties": false, - "properties": { - "VolumeSpecification": { - "$ref": "#/definitions/VolumeSpecification" - }, - "VolumesPerInstance": { - "type": "integer" - } - }, - "required": [ - "VolumeSpecification" - ], - "type": "object" - }, - "EbsConfiguration": { - "additionalProperties": false, - "properties": { - "EbsBlockDeviceConfigs": { - "items": { - "$ref": "#/definitions/EbsBlockDeviceConfig" - }, - "type": "array", - "uniqueItems": true - }, - "EbsOptimized": { - "type": "boolean" - } - }, - "type": "object" - }, - "HadoopJarStepConfig": { - "additionalProperties": false, - "properties": { - "Args": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Jar": { - "type": "string" - }, - "MainClass": { - "type": "string" - }, - "StepProperties": { - "items": { - "$ref": "#/definitions/KeyValue" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Jar" - ], - "type": "object" - }, - "InstanceFleetConfig": { - "additionalProperties": false, - "properties": { - "InstanceTypeConfigs": { - "items": { - "$ref": "#/definitions/InstanceTypeConfig" - }, - "type": "array", - "uniqueItems": true - }, - "LaunchSpecifications": { - "$ref": "#/definitions/InstanceFleetProvisioningSpecifications" - }, - "Name": { - "type": "string" - }, - "ResizeSpecifications": { - "$ref": "#/definitions/InstanceFleetResizingSpecifications" - }, - "TargetOnDemandCapacity": { - "type": "integer" - }, - "TargetSpotCapacity": { - "type": "integer" - } - }, - "type": "object" - }, - "InstanceFleetProvisioningSpecifications": { - "additionalProperties": false, - "properties": { - "OnDemandSpecification": { - "$ref": "#/definitions/OnDemandProvisioningSpecification" - }, - "SpotSpecification": { - "$ref": "#/definitions/SpotProvisioningSpecification" - } - }, - "type": "object" - }, - "InstanceFleetResizingSpecifications": { - "additionalProperties": false, - "properties": { - "OnDemandResizeSpecification": { - "$ref": "#/definitions/OnDemandResizingSpecification" - }, - "SpotResizeSpecification": { - "$ref": "#/definitions/SpotResizingSpecification" - } - }, - "type": "object" - }, - "InstanceGroupConfig": { - "additionalProperties": false, - "properties": { - "AutoScalingPolicy": { - "$ref": "#/definitions/AutoScalingPolicy" - }, - "BidPrice": { - "type": "string" - }, - "Configurations": { - "items": { - "$ref": "#/definitions/Configuration" - }, - "type": "array", - "uniqueItems": true - }, - "CustomAmiId": { - "type": "string" - }, - "EbsConfiguration": { - "$ref": "#/definitions/EbsConfiguration" - }, - "InstanceCount": { - "type": "integer" - }, - "InstanceType": { - "type": "string" - }, - "Market": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "InstanceCount", - "InstanceType" - ], - "type": "object" - }, - "InstanceTypeConfig": { - "additionalProperties": false, - "properties": { - "BidPrice": { - "type": "string" - }, - "BidPriceAsPercentageOfOnDemandPrice": { - "type": "number" - }, - "Configurations": { - "items": { - "$ref": "#/definitions/Configuration" - }, - "type": "array", - "uniqueItems": true - }, - "CustomAmiId": { - "type": "string" - }, - "EbsConfiguration": { - "$ref": "#/definitions/EbsConfiguration" - }, - "InstanceType": { - "type": "string" - }, - "Priority": { - "type": "number" - }, - "WeightedCapacity": { - "type": "integer" - } - }, - "required": [ - "InstanceType" - ], - "type": "object" - }, - "JobFlowInstancesConfig": { - "additionalProperties": false, - "properties": { - "AdditionalMasterSecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "AdditionalSlaveSecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "CoreInstanceFleet": { - "$ref": "#/definitions/InstanceFleetConfig" - }, - "CoreInstanceGroup": { - "$ref": "#/definitions/InstanceGroupConfig" - }, - "Ec2KeyName": { - "type": "string" - }, - "Ec2SubnetId": { - "type": "string" - }, - "Ec2SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "EmrManagedMasterSecurityGroup": { - "type": "string" - }, - "EmrManagedSlaveSecurityGroup": { - "type": "string" - }, - "HadoopVersion": { - "type": "string" - }, - "KeepJobFlowAliveWhenNoSteps": { - "type": "boolean" - }, - "MasterInstanceFleet": { - "$ref": "#/definitions/InstanceFleetConfig" - }, - "MasterInstanceGroup": { - "$ref": "#/definitions/InstanceGroupConfig" - }, - "Placement": { - "$ref": "#/definitions/PlacementType" - }, - "ServiceAccessSecurityGroup": { - "type": "string" - }, - "TaskInstanceFleets": { - "items": { - "$ref": "#/definitions/InstanceFleetConfig" - }, - "type": "array", - "uniqueItems": true - }, - "TaskInstanceGroups": { - "items": { - "$ref": "#/definitions/InstanceGroupConfig" - }, - "type": "array", - "uniqueItems": true - }, - "TerminationProtected": { - "type": "boolean" - }, - "UnhealthyNodeReplacement": { - "type": "boolean" - } - }, - "type": "object" - }, - "KerberosAttributes": { - "additionalProperties": false, - "properties": { - "ADDomainJoinPassword": { - "type": "string" - }, - "ADDomainJoinUser": { - "type": "string" - }, - "CrossRealmTrustPrincipalPassword": { - "type": "string" - }, - "KdcAdminPassword": { - "type": "string" - }, - "Realm": { - "type": "string" - } - }, - "required": [ - "KdcAdminPassword", - "Realm" - ], - "type": "object" - }, - "KeyValue": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "ManagedScalingPolicy": { - "additionalProperties": false, - "properties": { - "ComputeLimits": { - "$ref": "#/definitions/ComputeLimits" - } - }, - "type": "object" - }, - "MetricDimension": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "OnDemandCapacityReservationOptions": { - "additionalProperties": false, - "properties": { - "CapacityReservationPreference": { - "type": "string" - }, - "CapacityReservationResourceGroupArn": { - "type": "string" - }, - "UsageStrategy": { - "type": "string" - } - }, - "type": "object" - }, - "OnDemandProvisioningSpecification": { - "additionalProperties": false, - "properties": { - "AllocationStrategy": { - "type": "string" - }, - "CapacityReservationOptions": { - "$ref": "#/definitions/OnDemandCapacityReservationOptions" - } - }, - "required": [ - "AllocationStrategy" - ], - "type": "object" - }, - "OnDemandResizingSpecification": { - "additionalProperties": false, - "properties": { - "AllocationStrategy": { - "type": "string" - }, - "CapacityReservationOptions": { - "$ref": "#/definitions/OnDemandCapacityReservationOptions" - }, - "TimeoutDurationMinutes": { - "type": "integer" - } - }, - "type": "object" - }, - "PlacementGroupConfig": { - "additionalProperties": false, - "properties": { - "InstanceRole": { - "type": "string" - }, - "PlacementStrategy": { - "type": "string" - } - }, - "required": [ - "InstanceRole" - ], - "type": "object" - }, - "PlacementType": { - "additionalProperties": false, - "properties": { - "AvailabilityZone": { - "type": "string" - } - }, - "required": [ - "AvailabilityZone" - ], - "type": "object" - }, - "ScalingAction": { - "additionalProperties": false, - "properties": { - "Market": { - "type": "string" - }, - "SimpleScalingPolicyConfiguration": { - "$ref": "#/definitions/SimpleScalingPolicyConfiguration" - } - }, - "required": [ - "SimpleScalingPolicyConfiguration" - ], - "type": "object" - }, - "ScalingConstraints": { - "additionalProperties": false, - "properties": { - "MaxCapacity": { - "type": "integer" - }, - "MinCapacity": { - "type": "integer" - } - }, - "required": [ - "MinCapacity", - "MaxCapacity" - ], - "type": "object" - }, - "ScalingRule": { - "additionalProperties": false, - "properties": { - "Action": { - "$ref": "#/definitions/ScalingAction" - }, - "Description": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Trigger": { - "$ref": "#/definitions/ScalingTrigger" - } - }, - "required": [ - "Action", - "Trigger", - "Name" - ], - "type": "object" - }, - "ScalingTrigger": { - "additionalProperties": false, - "properties": { - "CloudWatchAlarmDefinition": { - "$ref": "#/definitions/CloudWatchAlarmDefinition" - } - }, - "required": [ - "CloudWatchAlarmDefinition" - ], - "type": "object" - }, - "ScriptBootstrapActionConfig": { - "additionalProperties": false, - "properties": { - "Args": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Path": { - "type": "string" - } - }, - "required": [ - "Path" - ], - "type": "object" - }, - "SimpleScalingPolicyConfiguration": { - "additionalProperties": false, - "properties": { - "AdjustmentType": { - "type": "string" - }, - "CoolDown": { - "type": "integer" - }, - "ScalingAdjustment": { - "type": "integer" - } - }, - "required": [ - "ScalingAdjustment" - ], - "type": "object" - }, - "SpotProvisioningSpecification": { - "additionalProperties": false, - "properties": { - "AllocationStrategy": { - "type": "string" - }, - "BlockDurationMinutes": { - "type": "integer" - }, - "TimeoutAction": { - "type": "string" - }, - "TimeoutDurationMinutes": { - "type": "integer" - } - }, - "required": [ - "TimeoutDurationMinutes", - "TimeoutAction" - ], - "type": "object" - }, - "SpotResizingSpecification": { - "additionalProperties": false, - "properties": { - "AllocationStrategy": { - "type": "string" - }, - "TimeoutDurationMinutes": { - "type": "integer" - } - }, - "type": "object" - }, - "StepConfig": { - "additionalProperties": false, - "properties": { - "ActionOnFailure": { - "type": "string" - }, - "HadoopJarStep": { - "$ref": "#/definitions/HadoopJarStepConfig" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "HadoopJarStep", - "Name" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "VolumeSpecification": { - "additionalProperties": false, - "properties": { - "Iops": { - "type": "integer" - }, - "SizeInGB": { - "type": "integer" - }, - "Throughput": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "required": [ - "SizeInGB", - "VolumeType" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EMR::Cluster", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "object" - }, - "Applications": { - "items": { - "$ref": "#/definitions/Application" - }, - "type": "array", - "uniqueItems": true - }, - "AutoScalingRole": { - "type": "string" - }, - "AutoTerminationPolicy": { - "$ref": "#/definitions/AutoTerminationPolicy" - }, - "BootstrapActions": { - "items": { - "$ref": "#/definitions/BootstrapActionConfig" - }, - "type": "array", - "uniqueItems": true - }, - "Configurations": { - "items": { - "$ref": "#/definitions/Configuration" - }, - "type": "array", - "uniqueItems": true - }, - "CustomAmiId": { - "type": "string" - }, - "EbsRootVolumeIops": { - "type": "integer" - }, - "EbsRootVolumeSize": { - "type": "integer" - }, - "EbsRootVolumeThroughput": { - "type": "integer" - }, - "Id": { - "type": "string" - }, - "Instances": { - "$ref": "#/definitions/JobFlowInstancesConfig" - }, - "JobFlowRole": { - "type": "string" - }, - "KerberosAttributes": { - "$ref": "#/definitions/KerberosAttributes" - }, - "LogEncryptionKmsKeyId": { - "type": "string" - }, - "LogUri": { - "type": "string" - }, - "ManagedScalingPolicy": { - "$ref": "#/definitions/ManagedScalingPolicy" - }, - "MasterPublicDNS": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "OSReleaseLabel": { - "type": "string" - }, - "PlacementGroupConfigs": { - "items": { - "$ref": "#/definitions/PlacementGroupConfig" - }, - "type": "array", - "uniqueItems": true - }, - "ReleaseLabel": { - "type": "string" - }, - "ScaleDownBehavior": { - "type": "string" - }, - "SecurityConfiguration": { - "type": "string" - }, - "ServiceRole": { - "type": "string" - }, - "StepConcurrencyLevel": { - "type": "integer" - }, - "Steps": { - "items": { - "$ref": "#/definitions/StepConfig" - }, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VisibleToAllUsers": { - "type": "boolean" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/MasterPublicDNS" - ], - "required": [ - "Instances", - "ServiceRole", - "JobFlowRole", - "Name" - ], - "typeName": "AWS::EMR::Cluster" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Steps", + "/properties/EbsRootVolumeSize", + "/properties/SecurityConfiguration", + "/properties/ScaleDownBehavior", + "/properties/Configurations", + "/properties/ReleaseLabel", + "/properties/BootstrapActions", + "/properties/EbsRootVolumeIops", + "/properties/KerberosAttributes", + "/properties/ServiceRole", + "/properties/LogEncryptionKmsKeyId", + "/properties/Name", + "/properties/EbsRootVolumeThroughput", + "/properties/JobFlowRole", + "/properties/AdditionalInfo", + "/properties/LogUri", + "/properties/CustomAmiId", + "/properties/PlacementGroupConfigs", + "/properties/OSReleaseLabel", + "/properties/AutoScalingRole", + "/properties/Applications" + ], + "definitions": { + "Application": { + "additionalProperties": false, + "properties": { + "AdditionalInfo": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "Args": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Name": { + "type": "string" + }, + "Version": { + "type": "string" + } + }, + "type": "object" + }, + "AutoScalingPolicy": { + "additionalProperties": false, + "properties": { + "Constraints": { + "$ref": "#/definitions/ScalingConstraints" + }, + "Rules": { + "items": { + "$ref": "#/definitions/ScalingRule" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Constraints", + "Rules" + ], + "type": "object" + }, + "AutoTerminationPolicy": { + "additionalProperties": false, + "properties": { + "IdleTimeout": { + "type": "integer" + } + }, + "type": "object" + }, + "BootstrapActionConfig": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "ScriptBootstrapAction": { + "$ref": "#/definitions/ScriptBootstrapActionConfig" + } + }, + "required": [ + "ScriptBootstrapAction", + "Name" + ], + "type": "object" + }, + "CloudWatchAlarmDefinition": { + "additionalProperties": false, + "properties": { + "ComparisonOperator": { + "type": "string" + }, + "Dimensions": { + "items": { + "$ref": "#/definitions/MetricDimension" + }, + "type": "array", + "uniqueItems": true + }, + "EvaluationPeriods": { + "type": "integer" + }, + "MetricName": { + "type": "string" + }, + "Namespace": { + "type": "string" + }, + "Period": { + "type": "integer" + }, + "Statistic": { + "type": "string" + }, + "Threshold": { + "type": "number" + }, + "Unit": { + "type": "string" + } + }, + "required": [ + "MetricName", + "ComparisonOperator", + "Period", + "Threshold" + ], + "type": "object" + }, + "ComputeLimits": { + "additionalProperties": false, + "properties": { + "MaximumCapacityUnits": { + "type": "integer" + }, + "MaximumCoreCapacityUnits": { + "type": "integer" + }, + "MaximumOnDemandCapacityUnits": { + "type": "integer" + }, + "MinimumCapacityUnits": { + "type": "integer" + }, + "UnitType": { + "type": "string" + } + }, + "required": [ + "UnitType", + "MaximumCapacityUnits", + "MinimumCapacityUnits" + ], + "type": "object" + }, + "Configuration": { + "additionalProperties": false, + "properties": { + "Classification": { + "type": "string" + }, + "ConfigurationProperties": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "Configurations": { + "items": { + "$ref": "#/definitions/Configuration" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "EbsBlockDeviceConfig": { + "additionalProperties": false, + "properties": { + "VolumeSpecification": { + "$ref": "#/definitions/VolumeSpecification" + }, + "VolumesPerInstance": { + "type": "integer" + } + }, + "required": [ + "VolumeSpecification" + ], + "type": "object" + }, + "EbsConfiguration": { + "additionalProperties": false, + "properties": { + "EbsBlockDeviceConfigs": { + "items": { + "$ref": "#/definitions/EbsBlockDeviceConfig" + }, + "type": "array", + "uniqueItems": true + }, + "EbsOptimized": { + "type": "boolean" + } + }, + "type": "object" + }, + "HadoopJarStepConfig": { + "additionalProperties": false, + "properties": { + "Args": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Jar": { + "type": "string" + }, + "MainClass": { + "type": "string" + }, + "StepProperties": { + "items": { + "$ref": "#/definitions/KeyValue" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Jar" + ], + "type": "object" + }, + "InstanceFleetConfig": { + "additionalProperties": false, + "properties": { + "InstanceTypeConfigs": { + "items": { + "$ref": "#/definitions/InstanceTypeConfig" + }, + "type": "array", + "uniqueItems": true + }, + "LaunchSpecifications": { + "$ref": "#/definitions/InstanceFleetProvisioningSpecifications" + }, + "Name": { + "type": "string" + }, + "ResizeSpecifications": { + "$ref": "#/definitions/InstanceFleetResizingSpecifications" + }, + "TargetOnDemandCapacity": { + "type": "integer" + }, + "TargetSpotCapacity": { + "type": "integer" + } + }, + "type": "object" + }, + "InstanceFleetProvisioningSpecifications": { + "additionalProperties": false, + "properties": { + "OnDemandSpecification": { + "$ref": "#/definitions/OnDemandProvisioningSpecification" + }, + "SpotSpecification": { + "$ref": "#/definitions/SpotProvisioningSpecification" + } + }, + "type": "object" + }, + "InstanceFleetResizingSpecifications": { + "additionalProperties": false, + "properties": { + "OnDemandResizeSpecification": { + "$ref": "#/definitions/OnDemandResizingSpecification" + }, + "SpotResizeSpecification": { + "$ref": "#/definitions/SpotResizingSpecification" + } + }, + "type": "object" + }, + "InstanceGroupConfig": { + "additionalProperties": false, + "properties": { + "AutoScalingPolicy": { + "$ref": "#/definitions/AutoScalingPolicy" + }, + "BidPrice": { + "type": "string" + }, + "Configurations": { + "items": { + "$ref": "#/definitions/Configuration" + }, + "type": "array", + "uniqueItems": true + }, + "CustomAmiId": { + "type": "string" + }, + "EbsConfiguration": { + "$ref": "#/definitions/EbsConfiguration" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceType": { + "type": "string" + }, + "Market": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "InstanceCount", + "InstanceType" + ], + "type": "object" + }, + "InstanceTypeConfig": { + "additionalProperties": false, + "properties": { + "BidPrice": { + "type": "string" + }, + "BidPriceAsPercentageOfOnDemandPrice": { + "type": "number" + }, + "Configurations": { + "items": { + "$ref": "#/definitions/Configuration" + }, + "type": "array", + "uniqueItems": true + }, + "CustomAmiId": { + "type": "string" + }, + "EbsConfiguration": { + "$ref": "#/definitions/EbsConfiguration" + }, + "InstanceType": { + "type": "string" + }, + "Priority": { + "type": "number" + }, + "WeightedCapacity": { + "type": "integer" + } + }, + "required": [ + "InstanceType" + ], + "type": "object" + }, + "JobFlowInstancesConfig": { + "additionalProperties": false, + "properties": { + "AdditionalMasterSecurityGroups": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "AdditionalSlaveSecurityGroups": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "CoreInstanceFleet": { + "$ref": "#/definitions/InstanceFleetConfig" + }, + "CoreInstanceGroup": { + "$ref": "#/definitions/InstanceGroupConfig" + }, + "Ec2KeyName": { + "type": "string" + }, + "Ec2SubnetId": { + "type": "string" + }, + "Ec2SubnetIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "EmrManagedMasterSecurityGroup": { + "type": "string" + }, + "EmrManagedSlaveSecurityGroup": { + "type": "string" + }, + "HadoopVersion": { + "type": "string" + }, + "KeepJobFlowAliveWhenNoSteps": { + "type": "boolean" + }, + "MasterInstanceFleet": { + "$ref": "#/definitions/InstanceFleetConfig" + }, + "MasterInstanceGroup": { + "$ref": "#/definitions/InstanceGroupConfig" + }, + "Placement": { + "$ref": "#/definitions/PlacementType" + }, + "ServiceAccessSecurityGroup": { + "type": "string" + }, + "TaskInstanceFleets": { + "items": { + "$ref": "#/definitions/InstanceFleetConfig" + }, + "type": "array", + "uniqueItems": true + }, + "TaskInstanceGroups": { + "items": { + "$ref": "#/definitions/InstanceGroupConfig" + }, + "type": "array", + "uniqueItems": true + }, + "TerminationProtected": { + "type": "boolean" + }, + "UnhealthyNodeReplacement": { + "type": "boolean" + } + }, + "type": "object" + }, + "KerberosAttributes": { + "additionalProperties": false, + "properties": { + "ADDomainJoinPassword": { + "type": "string" + }, + "ADDomainJoinUser": { + "type": "string" + }, + "CrossRealmTrustPrincipalPassword": { + "type": "string" + }, + "KdcAdminPassword": { + "type": "string" + }, + "Realm": { + "type": "string" + } + }, + "required": [ + "KdcAdminPassword", + "Realm" + ], + "type": "object" + }, + "KeyValue": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "ManagedScalingPolicy": { + "additionalProperties": false, + "properties": { + "ComputeLimits": { + "$ref": "#/definitions/ComputeLimits" + } + }, + "type": "object" + }, + "MetricDimension": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "OnDemandCapacityReservationOptions": { + "additionalProperties": false, + "properties": { + "CapacityReservationPreference": { + "type": "string" + }, + "CapacityReservationResourceGroupArn": { + "type": "string" + }, + "UsageStrategy": { + "type": "string" + } + }, + "type": "object" + }, + "OnDemandProvisioningSpecification": { + "additionalProperties": false, + "properties": { + "AllocationStrategy": { + "type": "string" + }, + "CapacityReservationOptions": { + "$ref": "#/definitions/OnDemandCapacityReservationOptions" + } + }, + "required": [ + "AllocationStrategy" + ], + "type": "object" + }, + "OnDemandResizingSpecification": { + "additionalProperties": false, + "properties": { + "AllocationStrategy": { + "type": "string" + }, + "CapacityReservationOptions": { + "$ref": "#/definitions/OnDemandCapacityReservationOptions" + }, + "TimeoutDurationMinutes": { + "type": "integer" + } + }, + "type": "object" + }, + "PlacementGroupConfig": { + "additionalProperties": false, + "properties": { + "InstanceRole": { + "type": "string" + }, + "PlacementStrategy": { + "type": "string" + } + }, + "required": [ + "InstanceRole" + ], + "type": "object" + }, + "PlacementType": { + "additionalProperties": false, + "properties": { + "AvailabilityZone": { + "type": "string" + } + }, + "required": [ + "AvailabilityZone" + ], + "type": "object" + }, + "ScalingAction": { + "additionalProperties": false, + "properties": { + "Market": { + "type": "string" + }, + "SimpleScalingPolicyConfiguration": { + "$ref": "#/definitions/SimpleScalingPolicyConfiguration" + } + }, + "required": [ + "SimpleScalingPolicyConfiguration" + ], + "type": "object" + }, + "ScalingConstraints": { + "additionalProperties": false, + "properties": { + "MaxCapacity": { + "type": "integer" + }, + "MinCapacity": { + "type": "integer" + } + }, + "required": [ + "MinCapacity", + "MaxCapacity" + ], + "type": "object" + }, + "ScalingRule": { + "additionalProperties": false, + "properties": { + "Action": { + "$ref": "#/definitions/ScalingAction" + }, + "Description": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Trigger": { + "$ref": "#/definitions/ScalingTrigger" + } + }, + "required": [ + "Action", + "Trigger", + "Name" + ], + "type": "object" + }, + "ScalingTrigger": { + "additionalProperties": false, + "properties": { + "CloudWatchAlarmDefinition": { + "$ref": "#/definitions/CloudWatchAlarmDefinition" + } + }, + "required": [ + "CloudWatchAlarmDefinition" + ], + "type": "object" + }, + "ScriptBootstrapActionConfig": { + "additionalProperties": false, + "properties": { + "Args": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Path": { + "type": "string" + } + }, + "required": [ + "Path" + ], + "type": "object" + }, + "SimpleScalingPolicyConfiguration": { + "additionalProperties": false, + "properties": { + "AdjustmentType": { + "type": "string" + }, + "CoolDown": { + "type": "integer" + }, + "ScalingAdjustment": { + "type": "integer" + } + }, + "required": [ + "ScalingAdjustment" + ], + "type": "object" + }, + "SpotProvisioningSpecification": { + "additionalProperties": false, + "properties": { + "AllocationStrategy": { + "type": "string" + }, + "BlockDurationMinutes": { + "type": "integer" + }, + "TimeoutAction": { + "type": "string" + }, + "TimeoutDurationMinutes": { + "type": "integer" + } + }, + "required": [ + "TimeoutDurationMinutes", + "TimeoutAction" + ], + "type": "object" + }, + "SpotResizingSpecification": { + "additionalProperties": false, + "properties": { + "AllocationStrategy": { + "type": "string" + }, + "TimeoutDurationMinutes": { + "type": "integer" + } + }, + "type": "object" + }, + "StepConfig": { + "additionalProperties": false, + "properties": { + "ActionOnFailure": { + "type": "string" + }, + "HadoopJarStep": { + "$ref": "#/definitions/HadoopJarStepConfig" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "HadoopJarStep", + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VolumeSpecification": { + "additionalProperties": false, + "properties": { + "Iops": { + "type": "integer" + }, + "SizeInGB": { + "type": "integer" + }, + "Throughput": { + "type": "integer" + }, + "VolumeType": { + "type": "string" + } + }, + "required": [ + "SizeInGB", + "VolumeType" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EMR::Cluster", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AdditionalInfo": { + "type": "object" + }, + "Applications": { + "items": { + "$ref": "#/definitions/Application" + }, + "type": "array", + "uniqueItems": true + }, + "AutoScalingRole": { + "type": "string" + }, + "AutoTerminationPolicy": { + "$ref": "#/definitions/AutoTerminationPolicy" + }, + "BootstrapActions": { + "items": { + "$ref": "#/definitions/BootstrapActionConfig" + }, + "type": "array", + "uniqueItems": true + }, + "Configurations": { + "items": { + "$ref": "#/definitions/Configuration" + }, + "type": "array", + "uniqueItems": true + }, + "CustomAmiId": { + "type": "string" + }, + "EbsRootVolumeIops": { + "type": "integer" + }, + "EbsRootVolumeSize": { + "type": "integer" + }, + "EbsRootVolumeThroughput": { + "type": "integer" + }, + "Id": { + "type": "string" + }, + "Instances": { + "$ref": "#/definitions/JobFlowInstancesConfig" + }, + "JobFlowRole": { + "type": "string" + }, + "KerberosAttributes": { + "$ref": "#/definitions/KerberosAttributes" + }, + "LogEncryptionKmsKeyId": { + "type": "string" + }, + "LogUri": { + "type": "string" + }, + "ManagedScalingPolicy": { + "$ref": "#/definitions/ManagedScalingPolicy" + }, + "MasterPublicDNS": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "OSReleaseLabel": { + "type": "string" + }, + "PlacementGroupConfigs": { + "items": { + "$ref": "#/definitions/PlacementGroupConfig" + }, + "type": "array", + "uniqueItems": true + }, + "ReleaseLabel": { + "type": "string" + }, + "ScaleDownBehavior": { + "type": "string" + }, + "SecurityConfiguration": { + "type": "string" + }, + "ServiceRole": { + "type": "string" + }, + "StepConcurrencyLevel": { + "type": "integer" + }, + "Steps": { + "items": { + "$ref": "#/definitions/StepConfig" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VisibleToAllUsers": { + "type": "boolean" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/MasterPublicDNS" + ], + "required": [ + "Instances", + "ServiceRole", + "JobFlowRole", + "Name" + ], + "typeName": "AWS::EMR::Cluster" +} diff --git a/src/schema/aws-emr-instancefleetconfig.json b/src/schema/aws-emr-instancefleetconfig.json index 13e032ff..ae9b74e0 100644 --- a/src/schema/aws-emr-instancefleetconfig.json +++ b/src/schema/aws-emr-instancefleetconfig.json @@ -1,273 +1,273 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/LaunchSpecifications", - "/properties/ClusterId", - "/properties/InstanceFleetType" - ], - "definitions": { - "Configuration": { - "additionalProperties": false, - "properties": { - "Classification": { - "type": "string" - }, - "ConfigurationProperties": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "Configurations": { - "items": { - "$ref": "#/definitions/Configuration" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "EbsBlockDeviceConfig": { - "additionalProperties": false, - "properties": { - "VolumeSpecification": { - "$ref": "#/definitions/VolumeSpecification" - }, - "VolumesPerInstance": { - "type": "integer" - } - }, - "required": [ - "VolumeSpecification" - ], - "type": "object" - }, - "EbsConfiguration": { - "additionalProperties": false, - "properties": { - "EbsBlockDeviceConfigs": { - "items": { - "$ref": "#/definitions/EbsBlockDeviceConfig" - }, - "type": "array", - "uniqueItems": true - }, - "EbsOptimized": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceFleetProvisioningSpecifications": { - "additionalProperties": false, - "properties": { - "OnDemandSpecification": { - "$ref": "#/definitions/OnDemandProvisioningSpecification" - }, - "SpotSpecification": { - "$ref": "#/definitions/SpotProvisioningSpecification" - } - }, - "type": "object" - }, - "InstanceFleetResizingSpecifications": { - "additionalProperties": false, - "properties": { - "OnDemandResizeSpecification": { - "$ref": "#/definitions/OnDemandResizingSpecification" - }, - "SpotResizeSpecification": { - "$ref": "#/definitions/SpotResizingSpecification" - } - }, - "type": "object" - }, - "InstanceTypeConfig": { - "additionalProperties": false, - "properties": { - "BidPrice": { - "type": "string" - }, - "BidPriceAsPercentageOfOnDemandPrice": { - "type": "number" - }, - "Configurations": { - "items": { - "$ref": "#/definitions/Configuration" - }, - "type": "array", - "uniqueItems": true - }, - "CustomAmiId": { - "type": "string" - }, - "EbsConfiguration": { - "$ref": "#/definitions/EbsConfiguration" - }, - "InstanceType": { - "type": "string" - }, - "Priority": { - "type": "number" - }, - "WeightedCapacity": { - "type": "integer" - } - }, - "required": [ - "InstanceType" - ], - "type": "object" - }, - "OnDemandCapacityReservationOptions": { - "additionalProperties": false, - "properties": { - "CapacityReservationPreference": { - "type": "string" - }, - "CapacityReservationResourceGroupArn": { - "type": "string" - }, - "UsageStrategy": { - "type": "string" - } - }, - "type": "object" - }, - "OnDemandProvisioningSpecification": { - "additionalProperties": false, - "properties": { - "AllocationStrategy": { - "type": "string" - }, - "CapacityReservationOptions": { - "$ref": "#/definitions/OnDemandCapacityReservationOptions" - } - }, - "required": [ - "AllocationStrategy" - ], - "type": "object" - }, - "OnDemandResizingSpecification": { - "additionalProperties": false, - "properties": { - "AllocationStrategy": { - "type": "string" - }, - "CapacityReservationOptions": { - "$ref": "#/definitions/OnDemandCapacityReservationOptions" - }, - "TimeoutDurationMinutes": { - "type": "integer" - } - }, - "type": "object" - }, - "SpotProvisioningSpecification": { - "additionalProperties": false, - "properties": { - "AllocationStrategy": { - "type": "string" - }, - "BlockDurationMinutes": { - "type": "integer" - }, - "TimeoutAction": { - "type": "string" - }, - "TimeoutDurationMinutes": { - "type": "integer" - } - }, - "required": [ - "TimeoutDurationMinutes", - "TimeoutAction" - ], - "type": "object" - }, - "SpotResizingSpecification": { - "additionalProperties": false, - "properties": { - "AllocationStrategy": { - "type": "string" - }, - "TimeoutDurationMinutes": { - "type": "integer" - } - }, - "type": "object" - }, - "VolumeSpecification": { - "additionalProperties": false, - "properties": { - "Iops": { - "type": "integer" - }, - "SizeInGB": { - "type": "integer" - }, - "Throughput": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "required": [ - "SizeInGB", - "VolumeType" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EMR::InstanceFleetConfig", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ClusterId": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InstanceFleetType": { - "type": "string" - }, - "InstanceTypeConfigs": { - "items": { - "$ref": "#/definitions/InstanceTypeConfig" - }, - "type": "array", - "uniqueItems": true - }, - "LaunchSpecifications": { - "$ref": "#/definitions/InstanceFleetProvisioningSpecifications" - }, - "Name": { - "type": "string" - }, - "ResizeSpecifications": { - "$ref": "#/definitions/InstanceFleetResizingSpecifications" - }, - "TargetOnDemandCapacity": { - "type": "integer" - }, - "TargetSpotCapacity": { - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "InstanceFleetType", - "ClusterId" - ], - "typeName": "AWS::EMR::InstanceFleetConfig" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/LaunchSpecifications", + "/properties/ClusterId", + "/properties/InstanceFleetType" + ], + "definitions": { + "Configuration": { + "additionalProperties": false, + "properties": { + "Classification": { + "type": "string" + }, + "ConfigurationProperties": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "Configurations": { + "items": { + "$ref": "#/definitions/Configuration" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "EbsBlockDeviceConfig": { + "additionalProperties": false, + "properties": { + "VolumeSpecification": { + "$ref": "#/definitions/VolumeSpecification" + }, + "VolumesPerInstance": { + "type": "integer" + } + }, + "required": [ + "VolumeSpecification" + ], + "type": "object" + }, + "EbsConfiguration": { + "additionalProperties": false, + "properties": { + "EbsBlockDeviceConfigs": { + "items": { + "$ref": "#/definitions/EbsBlockDeviceConfig" + }, + "type": "array", + "uniqueItems": true + }, + "EbsOptimized": { + "type": "boolean" + } + }, + "type": "object" + }, + "InstanceFleetProvisioningSpecifications": { + "additionalProperties": false, + "properties": { + "OnDemandSpecification": { + "$ref": "#/definitions/OnDemandProvisioningSpecification" + }, + "SpotSpecification": { + "$ref": "#/definitions/SpotProvisioningSpecification" + } + }, + "type": "object" + }, + "InstanceFleetResizingSpecifications": { + "additionalProperties": false, + "properties": { + "OnDemandResizeSpecification": { + "$ref": "#/definitions/OnDemandResizingSpecification" + }, + "SpotResizeSpecification": { + "$ref": "#/definitions/SpotResizingSpecification" + } + }, + "type": "object" + }, + "InstanceTypeConfig": { + "additionalProperties": false, + "properties": { + "BidPrice": { + "type": "string" + }, + "BidPriceAsPercentageOfOnDemandPrice": { + "type": "number" + }, + "Configurations": { + "items": { + "$ref": "#/definitions/Configuration" + }, + "type": "array", + "uniqueItems": true + }, + "CustomAmiId": { + "type": "string" + }, + "EbsConfiguration": { + "$ref": "#/definitions/EbsConfiguration" + }, + "InstanceType": { + "type": "string" + }, + "Priority": { + "type": "number" + }, + "WeightedCapacity": { + "type": "integer" + } + }, + "required": [ + "InstanceType" + ], + "type": "object" + }, + "OnDemandCapacityReservationOptions": { + "additionalProperties": false, + "properties": { + "CapacityReservationPreference": { + "type": "string" + }, + "CapacityReservationResourceGroupArn": { + "type": "string" + }, + "UsageStrategy": { + "type": "string" + } + }, + "type": "object" + }, + "OnDemandProvisioningSpecification": { + "additionalProperties": false, + "properties": { + "AllocationStrategy": { + "type": "string" + }, + "CapacityReservationOptions": { + "$ref": "#/definitions/OnDemandCapacityReservationOptions" + } + }, + "required": [ + "AllocationStrategy" + ], + "type": "object" + }, + "OnDemandResizingSpecification": { + "additionalProperties": false, + "properties": { + "AllocationStrategy": { + "type": "string" + }, + "CapacityReservationOptions": { + "$ref": "#/definitions/OnDemandCapacityReservationOptions" + }, + "TimeoutDurationMinutes": { + "type": "integer" + } + }, + "type": "object" + }, + "SpotProvisioningSpecification": { + "additionalProperties": false, + "properties": { + "AllocationStrategy": { + "type": "string" + }, + "BlockDurationMinutes": { + "type": "integer" + }, + "TimeoutAction": { + "type": "string" + }, + "TimeoutDurationMinutes": { + "type": "integer" + } + }, + "required": [ + "TimeoutDurationMinutes", + "TimeoutAction" + ], + "type": "object" + }, + "SpotResizingSpecification": { + "additionalProperties": false, + "properties": { + "AllocationStrategy": { + "type": "string" + }, + "TimeoutDurationMinutes": { + "type": "integer" + } + }, + "type": "object" + }, + "VolumeSpecification": { + "additionalProperties": false, + "properties": { + "Iops": { + "type": "integer" + }, + "SizeInGB": { + "type": "integer" + }, + "Throughput": { + "type": "integer" + }, + "VolumeType": { + "type": "string" + } + }, + "required": [ + "SizeInGB", + "VolumeType" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EMR::InstanceFleetConfig", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ClusterId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "InstanceFleetType": { + "type": "string" + }, + "InstanceTypeConfigs": { + "items": { + "$ref": "#/definitions/InstanceTypeConfig" + }, + "type": "array", + "uniqueItems": true + }, + "LaunchSpecifications": { + "$ref": "#/definitions/InstanceFleetProvisioningSpecifications" + }, + "Name": { + "type": "string" + }, + "ResizeSpecifications": { + "$ref": "#/definitions/InstanceFleetResizingSpecifications" + }, + "TargetOnDemandCapacity": { + "type": "integer" + }, + "TargetSpotCapacity": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "InstanceFleetType", + "ClusterId" + ], + "typeName": "AWS::EMR::InstanceFleetConfig" +} diff --git a/src/schema/aws-emr-instancegroupconfig.json b/src/schema/aws-emr-instancegroupconfig.json index 87e5f2a1..b53a8d10 100644 --- a/src/schema/aws-emr-instancegroupconfig.json +++ b/src/schema/aws-emr-instancegroupconfig.json @@ -1,312 +1,312 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceRole", - "/properties/JobFlowId", - "/properties/Name", - "/properties/InstanceType", - "/properties/CustomAmiId", - "/properties/Configurations", - "/properties/EbsConfiguration", - "/properties/Market", - "/properties/BidPrice" - ], - "definitions": { - "AutoScalingPolicy": { - "additionalProperties": false, - "properties": { - "Constraints": { - "$ref": "#/definitions/ScalingConstraints" - }, - "Rules": { - "items": { - "$ref": "#/definitions/ScalingRule" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Constraints", - "Rules" - ], - "type": "object" - }, - "CloudWatchAlarmDefinition": { - "additionalProperties": false, - "properties": { - "ComparisonOperator": { - "type": "string" - }, - "Dimensions": { - "items": { - "$ref": "#/definitions/MetricDimension" - }, - "type": "array", - "uniqueItems": true - }, - "EvaluationPeriods": { - "type": "integer" - }, - "MetricName": { - "type": "string" - }, - "Namespace": { - "type": "string" - }, - "Period": { - "type": "integer" - }, - "Statistic": { - "type": "string" - }, - "Threshold": { - "type": "number" - }, - "Unit": { - "type": "string" - } - }, - "required": [ - "MetricName", - "ComparisonOperator", - "Period", - "Threshold" - ], - "type": "object" - }, - "Configuration": { - "additionalProperties": false, - "properties": { - "Classification": { - "type": "string" - }, - "ConfigurationProperties": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "Configurations": { - "items": { - "$ref": "#/definitions/Configuration" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "EbsBlockDeviceConfig": { - "additionalProperties": false, - "properties": { - "VolumeSpecification": { - "$ref": "#/definitions/VolumeSpecification" - }, - "VolumesPerInstance": { - "type": "integer" - } - }, - "required": [ - "VolumeSpecification" - ], - "type": "object" - }, - "EbsConfiguration": { - "additionalProperties": false, - "properties": { - "EbsBlockDeviceConfigs": { - "items": { - "$ref": "#/definitions/EbsBlockDeviceConfig" - }, - "type": "array", - "uniqueItems": true - }, - "EbsOptimized": { - "type": "boolean" - } - }, - "type": "object" - }, - "MetricDimension": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "ScalingAction": { - "additionalProperties": false, - "properties": { - "Market": { - "type": "string" - }, - "SimpleScalingPolicyConfiguration": { - "$ref": "#/definitions/SimpleScalingPolicyConfiguration" - } - }, - "required": [ - "SimpleScalingPolicyConfiguration" - ], - "type": "object" - }, - "ScalingConstraints": { - "additionalProperties": false, - "properties": { - "MaxCapacity": { - "type": "integer" - }, - "MinCapacity": { - "type": "integer" - } - }, - "required": [ - "MinCapacity", - "MaxCapacity" - ], - "type": "object" - }, - "ScalingRule": { - "additionalProperties": false, - "properties": { - "Action": { - "$ref": "#/definitions/ScalingAction" - }, - "Description": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Trigger": { - "$ref": "#/definitions/ScalingTrigger" - } - }, - "required": [ - "Action", - "Trigger", - "Name" - ], - "type": "object" - }, - "ScalingTrigger": { - "additionalProperties": false, - "properties": { - "CloudWatchAlarmDefinition": { - "$ref": "#/definitions/CloudWatchAlarmDefinition" - } - }, - "required": [ - "CloudWatchAlarmDefinition" - ], - "type": "object" - }, - "SimpleScalingPolicyConfiguration": { - "additionalProperties": false, - "properties": { - "AdjustmentType": { - "type": "string" - }, - "CoolDown": { - "type": "integer" - }, - "ScalingAdjustment": { - "type": "integer" - } - }, - "required": [ - "ScalingAdjustment" - ], - "type": "object" - }, - "VolumeSpecification": { - "additionalProperties": false, - "properties": { - "Iops": { - "type": "integer" - }, - "SizeInGB": { - "type": "integer" - }, - "Throughput": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "required": [ - "SizeInGB", - "VolumeType" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EMR::InstanceGroupConfig", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AutoScalingPolicy": { - "$ref": "#/definitions/AutoScalingPolicy" - }, - "BidPrice": { - "type": "string" - }, - "Configurations": { - "items": { - "$ref": "#/definitions/Configuration" - }, - "type": "array", - "uniqueItems": true - }, - "CustomAmiId": { - "type": "string" - }, - "EbsConfiguration": { - "$ref": "#/definitions/EbsConfiguration" - }, - "Id": { - "type": "string" - }, - "InstanceCount": { - "type": "integer" - }, - "InstanceRole": { - "type": "string" - }, - "InstanceType": { - "type": "string" - }, - "JobFlowId": { - "type": "string" - }, - "Market": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "JobFlowId", - "InstanceCount", - "InstanceRole", - "InstanceType" - ], - "typeName": "AWS::EMR::InstanceGroupConfig" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceRole", + "/properties/JobFlowId", + "/properties/Name", + "/properties/InstanceType", + "/properties/CustomAmiId", + "/properties/Configurations", + "/properties/EbsConfiguration", + "/properties/Market", + "/properties/BidPrice" + ], + "definitions": { + "AutoScalingPolicy": { + "additionalProperties": false, + "properties": { + "Constraints": { + "$ref": "#/definitions/ScalingConstraints" + }, + "Rules": { + "items": { + "$ref": "#/definitions/ScalingRule" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Constraints", + "Rules" + ], + "type": "object" + }, + "CloudWatchAlarmDefinition": { + "additionalProperties": false, + "properties": { + "ComparisonOperator": { + "type": "string" + }, + "Dimensions": { + "items": { + "$ref": "#/definitions/MetricDimension" + }, + "type": "array", + "uniqueItems": true + }, + "EvaluationPeriods": { + "type": "integer" + }, + "MetricName": { + "type": "string" + }, + "Namespace": { + "type": "string" + }, + "Period": { + "type": "integer" + }, + "Statistic": { + "type": "string" + }, + "Threshold": { + "type": "number" + }, + "Unit": { + "type": "string" + } + }, + "required": [ + "MetricName", + "ComparisonOperator", + "Period", + "Threshold" + ], + "type": "object" + }, + "Configuration": { + "additionalProperties": false, + "properties": { + "Classification": { + "type": "string" + }, + "ConfigurationProperties": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "Configurations": { + "items": { + "$ref": "#/definitions/Configuration" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "EbsBlockDeviceConfig": { + "additionalProperties": false, + "properties": { + "VolumeSpecification": { + "$ref": "#/definitions/VolumeSpecification" + }, + "VolumesPerInstance": { + "type": "integer" + } + }, + "required": [ + "VolumeSpecification" + ], + "type": "object" + }, + "EbsConfiguration": { + "additionalProperties": false, + "properties": { + "EbsBlockDeviceConfigs": { + "items": { + "$ref": "#/definitions/EbsBlockDeviceConfig" + }, + "type": "array", + "uniqueItems": true + }, + "EbsOptimized": { + "type": "boolean" + } + }, + "type": "object" + }, + "MetricDimension": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "ScalingAction": { + "additionalProperties": false, + "properties": { + "Market": { + "type": "string" + }, + "SimpleScalingPolicyConfiguration": { + "$ref": "#/definitions/SimpleScalingPolicyConfiguration" + } + }, + "required": [ + "SimpleScalingPolicyConfiguration" + ], + "type": "object" + }, + "ScalingConstraints": { + "additionalProperties": false, + "properties": { + "MaxCapacity": { + "type": "integer" + }, + "MinCapacity": { + "type": "integer" + } + }, + "required": [ + "MinCapacity", + "MaxCapacity" + ], + "type": "object" + }, + "ScalingRule": { + "additionalProperties": false, + "properties": { + "Action": { + "$ref": "#/definitions/ScalingAction" + }, + "Description": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Trigger": { + "$ref": "#/definitions/ScalingTrigger" + } + }, + "required": [ + "Action", + "Trigger", + "Name" + ], + "type": "object" + }, + "ScalingTrigger": { + "additionalProperties": false, + "properties": { + "CloudWatchAlarmDefinition": { + "$ref": "#/definitions/CloudWatchAlarmDefinition" + } + }, + "required": [ + "CloudWatchAlarmDefinition" + ], + "type": "object" + }, + "SimpleScalingPolicyConfiguration": { + "additionalProperties": false, + "properties": { + "AdjustmentType": { + "type": "string" + }, + "CoolDown": { + "type": "integer" + }, + "ScalingAdjustment": { + "type": "integer" + } + }, + "required": [ + "ScalingAdjustment" + ], + "type": "object" + }, + "VolumeSpecification": { + "additionalProperties": false, + "properties": { + "Iops": { + "type": "integer" + }, + "SizeInGB": { + "type": "integer" + }, + "Throughput": { + "type": "integer" + }, + "VolumeType": { + "type": "string" + } + }, + "required": [ + "SizeInGB", + "VolumeType" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EMR::InstanceGroupConfig", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AutoScalingPolicy": { + "$ref": "#/definitions/AutoScalingPolicy" + }, + "BidPrice": { + "type": "string" + }, + "Configurations": { + "items": { + "$ref": "#/definitions/Configuration" + }, + "type": "array", + "uniqueItems": true + }, + "CustomAmiId": { + "type": "string" + }, + "EbsConfiguration": { + "$ref": "#/definitions/EbsConfiguration" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceRole": { + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "JobFlowId": { + "type": "string" + }, + "Market": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "JobFlowId", + "InstanceCount", + "InstanceRole", + "InstanceType" + ], + "typeName": "AWS::EMR::InstanceGroupConfig" +} diff --git a/src/schema/aws-emr-securityconfiguration.json b/src/schema/aws-emr-securityconfiguration.json index ba17eea4..dc7242c4 100644 --- a/src/schema/aws-emr-securityconfiguration.json +++ b/src/schema/aws-emr-securityconfiguration.json @@ -1,54 +1,54 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/SecurityConfiguration" - ], - "description": "Use a SecurityConfiguration resource to configure data encryption, Kerberos authentication, and Amazon S3 authorization for EMRFS.", - "handlers": { - "create": { - "permissions": [ - "elasticmapreduce:CreateSecurityConfiguration", - "elasticmapreduce:DescribeSecurityConfiguration" - ] - }, - "delete": { - "permissions": [ - "elasticmapreduce:DeleteSecurityConfiguration" - ] - }, - "list": { - "permissions": [ - "elasticmapreduce:ListSecurityConfigurations" - ] - }, - "read": { - "permissions": [ - "elasticmapreduce:DescribeSecurityConfiguration" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Name": { - "description": "The name of the security configuration.", - "type": "string" - }, - "SecurityConfiguration": { - "description": "The security configuration details in JSON format.", - "type": [ - "object", - "string" - ] - } - }, - "required": [ - "SecurityConfiguration" - ], - "tagging": { - "taggable": false - }, - "typeName": "AWS::EMR::SecurityConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/SecurityConfiguration" + ], + "description": "Use a SecurityConfiguration resource to configure data encryption, Kerberos authentication, and Amazon S3 authorization for EMRFS.", + "handlers": { + "create": { + "permissions": [ + "elasticmapreduce:CreateSecurityConfiguration", + "elasticmapreduce:DescribeSecurityConfiguration" + ] + }, + "delete": { + "permissions": [ + "elasticmapreduce:DeleteSecurityConfiguration" + ] + }, + "list": { + "permissions": [ + "elasticmapreduce:ListSecurityConfigurations" + ] + }, + "read": { + "permissions": [ + "elasticmapreduce:DescribeSecurityConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Name": { + "description": "The name of the security configuration.", + "type": "string" + }, + "SecurityConfiguration": { + "description": "The security configuration details in JSON format.", + "type": [ + "object", + "string" + ] + } + }, + "required": [ + "SecurityConfiguration" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::EMR::SecurityConfiguration" +} diff --git a/src/schema/aws-emr-step.json b/src/schema/aws-emr-step.json index a1a01b6c..b5298080 100644 --- a/src/schema/aws-emr-step.json +++ b/src/schema/aws-emr-step.json @@ -1,102 +1,105 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/JobFlowId", - "/properties/HadoopJarStep", - "/properties/Name", - "/properties/ActionOnFailure" - ], - "definitions": { - "HadoopJarStepConfig": { - "additionalProperties": false, - "properties": { - "Args": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Jar": { - "type": "string" - }, - "MainClass": { - "type": "string" - }, - "StepProperties": { - "items": { - "$ref": "#/definitions/KeyValue" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Jar" - ], - "type": "object" - }, - "KeyValue": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Schema for AWS::EMR::Step", - "handlers": { - "create": { - "permissions": [ - "emr:AddJobFlowSteps" - ] - }, - "delete": { - "permissions": [] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ActionOnFailure": { - "description": "This specifies what action to take when the cluster step fails. Possible values are CANCEL_AND_WAIT and CONTINUE.", - "type": "string" - }, - "HadoopJarStep": { - "$ref": "#/definitions/HadoopJarStepConfig", - "description": "The HadoopJarStepConfig property type specifies a job flow step consisting of a JAR file whose main function will be executed. The main function submits a job for the cluster to execute as a step on the master node, and then waits for the job to finish or fail before executing subsequent steps." - }, - "Id": { - "description": "ID generated by service", - "type": "string" - }, - "JobFlowId": { - "description": "A string that uniquely identifies the cluster (job flow).", - "type": "string" - }, - "Name": { - "description": "The name of the cluster step.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "JobFlowId", - "HadoopJarStep", - "ActionOnFailure", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::EMR::Step" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/JobFlowId", + "/properties/HadoopJarStep", + "/properties/Name", + "/properties/ActionOnFailure" + ], + "definitions": { + "HadoopJarStepConfig": { + "additionalProperties": false, + "properties": { + "Args": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Jar": { + "type": "string" + }, + "MainClass": { + "type": "string" + }, + "StepProperties": { + "items": { + "$ref": "#/definitions/KeyValue" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Jar" + ], + "type": "object" + }, + "KeyValue": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Schema for AWS::EMR::Step", + "handlers": { + "create": { + "permissions": [ + "emr:AddJobFlowSteps" + ] + }, + "delete": { + "permissions": [] + }, + "read": { + "permissions": [] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ActionOnFailure": { + "description": "This specifies what action to take when the cluster step fails. Possible values are CANCEL_AND_WAIT and CONTINUE.", + "type": "string" + }, + "HadoopJarStep": { + "$ref": "#/definitions/HadoopJarStepConfig", + "description": "The HadoopJarStepConfig property type specifies a job flow step consisting of a JAR file whose main function will be executed. The main function submits a job for the cluster to execute as a step on the master node, and then waits for the job to finish or fail before executing subsequent steps." + }, + "Id": { + "description": "ID generated by service", + "type": "string" + }, + "JobFlowId": { + "description": "A string that uniquely identifies the cluster (job flow).", + "type": "string" + }, + "Name": { + "description": "The name of the cluster step.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "JobFlowId", + "HadoopJarStep", + "ActionOnFailure", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::EMR::Step" +} diff --git a/src/schema/aws-emr-studio.json b/src/schema/aws-emr-studio.json index af9c689e..5cdffa1b 100644 --- a/src/schema/aws-emr-studio.json +++ b/src/schema/aws-emr-studio.json @@ -1,236 +1,247 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AuthMode", - "/properties/EngineSecurityGroupId", - "/properties/ServiceRole", - "/properties/UserRole", - "/properties/VpcId", - "/properties/WorkspaceSecurityGroupId", - "/properties/TrustedIdentityPropagationEnabled", - "/properties/IdcUserAssignment", - "/properties/IdcInstanceArn", - "/properties/EncryptionKeyArn" - ], - "definitions": { - "Arn": { - "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", - "type": "string" - }, - "SubnetId": { - "description": "Identifier of a subnet", - "pattern": "^(subnet-[a-f0-9]{13})|(subnet-[a-f0-9]{8})\\Z", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "An arbitrary set of tags (key-value pairs) for this EMR Studio.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 255 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "pattern": "[a-zA-Z+-=._:/]+$", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "description": "Resource schema for AWS::EMR::Studio", - "documentationUrl": "https://docs.aws.amazon.com/emr/latest/APIReference/API_CreateStudio.html", - "handlers": { - "create": { - "permissions": [ - "elasticmapreduce:CreateStudio", - "elasticmapreduce:DescribeStudio", - "elasticmapreduce:AddTags", - "sso:CreateManagedApplicationInstance", - "sso:DeleteManagedApplicationInstance", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "elasticmapreduce:DeleteStudio", - "elasticmapreduce:DescribeStudio", - "sso:DeleteManagedApplicationInstance" - ] - }, - "list": { - "permissions": [ - "elasticmapreduce:ListStudios" - ] - }, - "read": { - "permissions": [ - "elasticmapreduce:DescribeStudio", - "sso:GetManagedApplicationInstance" - ] - }, - "update": { - "permissions": [ - "elasticmapreduce:UpdateStudio", - "elasticmapreduce:DescribeStudio", - "elasticmapreduce:AddTags", - "elasticmapreduce:RemoveTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/StudioId" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn", - "description": "The Amazon Resource Name (ARN) of the EMR Studio." - }, - "AuthMode": { - "description": "Specifies whether the Studio authenticates users using single sign-on (SSO) or IAM. Amazon EMR Studio currently only supports SSO authentication.", - "enum": [ - "SSO", - "IAM" - ], - "type": "string" - }, - "DefaultS3Location": { - "description": "The default Amazon S3 location to back up EMR Studio Workspaces and notebook files. A Studio user can select an alternative Amazon S3 location when creating a Workspace.", - "maxLength": 10280, - "minLength": 6, - "pattern": "^s3://.*", - "type": "string" - }, - "Description": { - "description": "A detailed description of the Studio.", - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "EncryptionKeyArn": { - "$ref": "#/definitions/Arn", - "description": "The AWS KMS key identifier (ARN) used to encrypt AWS EMR Studio workspace and notebook files when backed up to AWS S3." - }, - "EngineSecurityGroupId": { - "description": "The ID of the Amazon EMR Studio Engine security group. The Engine security group allows inbound network traffic from the Workspace security group, and it must be in the same VPC specified by VpcId.", - "maxLength": 256, - "minLength": 4, - "pattern": "^sg-[a-zA-Z0-9\\-._]+$", - "type": "string" - }, - "IdcInstanceArn": { - "description": "The ARN of the IAM Identity Center instance to create the Studio application.", - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "IdcUserAssignment": { - "description": "Specifies whether IAM Identity Center user assignment is REQUIRED or OPTIONAL. If the value is set to REQUIRED, users must be explicitly assigned to the Studio application to access the Studio.", - "enum": [ - "REQUIRED", - "OPTIONAL" - ], - "type": "string" - }, - "IdpAuthUrl": { - "description": "Your identity provider's authentication endpoint. Amazon EMR Studio redirects federated users to this endpoint for authentication when logging in to a Studio with the Studio URL.", - "maxLength": 4096, - "pattern": "^https://[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])(:[0-9]*)*([?/#].*)?$", - "type": "string" - }, - "IdpRelayStateParameterName": { - "description": "The name of relay state parameter for external Identity Provider.", - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "Name": { - "description": "A descriptive name for the Amazon EMR Studio.", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z0-9_-]+", - "type": "string" - }, - "ServiceRole": { - "$ref": "#/definitions/Arn", - "description": "The IAM role that will be assumed by the Amazon EMR Studio. The service role provides a way for Amazon EMR Studio to interoperate with other AWS services." - }, - "StudioId": { - "description": "The ID of the EMR Studio.", - "maxLength": 256, - "minLength": 4, - "pattern": "^es-[0-9A-Z]+", - "type": "string" - }, - "SubnetIds": { - "description": "A list of up to 5 subnet IDs to associate with the Studio. The subnets must belong to the VPC specified by VpcId. Studio users can create a Workspace in any of the specified subnets.", - "items": { - "$ref": "#/definitions/SubnetId" - }, - "minItems": 1, - "type": "array" - }, - "Tags": { - "$ref": "#/definitions/Tags", - "description": "A list of tags to associate with the Studio. Tags are user-defined key-value pairs that consist of a required key string with a maximum of 128 characters, and an optional value string with a maximum of 256 characters." - }, - "TrustedIdentityPropagationEnabled": { - "description": "A Boolean indicating whether to enable Trusted identity propagation for the Studio. The default value is false.", - "type": "boolean" - }, - "Url": { - "description": "The unique Studio access URL.", - "maxLength": 4096, - "pattern": "^https://[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])(:[0-9]*)*([?/#].*)?$", - "type": "string" - }, - "UserRole": { - "$ref": "#/definitions/Arn", - "description": "The IAM user role that will be assumed by users and groups logged in to a Studio. The permissions attached to this IAM role can be scoped down for each user or group using session policies." - }, - "VpcId": { - "description": "The ID of the Amazon Virtual Private Cloud (Amazon VPC) to associate with the Studio.", - "pattern": "^(vpc-[0-9a-f]{8}|vpc-[0-9a-f]{17})$", - "type": "string" - }, - "WorkspaceSecurityGroupId": { - "description": "The ID of the Amazon EMR Studio Workspace security group. The Workspace security group allows outbound network traffic to resources in the Engine security group, and it must be in the same VPC specified by VpcId.", - "pattern": "^sg-[a-zA-Z0-9\\-._]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/StudioId", - "/properties/Arn", - "/properties/Url" - ], - "required": [ - "AuthMode", - "EngineSecurityGroupId", - "Name", - "ServiceRole", - "SubnetIds", - "VpcId", - "WorkspaceSecurityGroupId", - "DefaultS3Location" - ], - "typeName": "AWS::EMR::Studio" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AuthMode", + "/properties/EngineSecurityGroupId", + "/properties/ServiceRole", + "/properties/UserRole", + "/properties/VpcId", + "/properties/WorkspaceSecurityGroupId", + "/properties/TrustedIdentityPropagationEnabled", + "/properties/IdcUserAssignment", + "/properties/IdcInstanceArn", + "/properties/EncryptionKeyArn" + ], + "definitions": { + "Arn": { + "pattern": "^arn:aws(-(cn|us-gov|iso-f|iso-e))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "SubnetId": { + "description": "Identifier of a subnet", + "pattern": "^(subnet-[a-f0-9]{13})|(subnet-[a-f0-9]{8})\\Z", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "An arbitrary set of tags (key-value pairs) for this EMR Studio.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 255 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "pattern": "[a-zA-Z+-=._:/]+$", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "description": "Resource schema for AWS::EMR::Studio", + "documentationUrl": "https://docs.aws.amazon.com/emr/latest/APIReference/API_CreateStudio.html", + "handlers": { + "create": { + "permissions": [ + "elasticmapreduce:CreateStudio", + "elasticmapreduce:DescribeStudio", + "elasticmapreduce:AddTags", + "sso:CreateManagedApplicationInstance", + "sso:DeleteManagedApplicationInstance", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "elasticmapreduce:DeleteStudio", + "elasticmapreduce:DescribeStudio", + "sso:DeleteManagedApplicationInstance" + ] + }, + "list": { + "permissions": [ + "elasticmapreduce:ListStudios" + ] + }, + "read": { + "permissions": [ + "elasticmapreduce:DescribeStudio", + "sso:GetManagedApplicationInstance" + ] + }, + "update": { + "permissions": [ + "elasticmapreduce:UpdateStudio", + "elasticmapreduce:DescribeStudio", + "elasticmapreduce:AddTags", + "elasticmapreduce:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/StudioId" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn", + "description": "The Amazon Resource Name (ARN) of the EMR Studio." + }, + "AuthMode": { + "description": "Specifies whether the Studio authenticates users using single sign-on (SSO) or IAM. Amazon EMR Studio currently only supports SSO authentication.", + "enum": [ + "SSO", + "IAM" + ], + "type": "string" + }, + "DefaultS3Location": { + "description": "The default Amazon S3 location to back up EMR Studio Workspaces and notebook files. A Studio user can select an alternative Amazon S3 location when creating a Workspace.", + "maxLength": 10280, + "minLength": 6, + "pattern": "^s3://.*", + "type": "string" + }, + "Description": { + "description": "A detailed description of the Studio.", + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "EncryptionKeyArn": { + "$ref": "#/definitions/Arn", + "description": "The AWS KMS key identifier (ARN) used to encrypt AWS EMR Studio workspace and notebook files when backed up to AWS S3." + }, + "EngineSecurityGroupId": { + "description": "The ID of the Amazon EMR Studio Engine security group. The Engine security group allows inbound network traffic from the Workspace security group, and it must be in the same VPC specified by VpcId.", + "maxLength": 256, + "minLength": 4, + "pattern": "^sg-[a-zA-Z0-9\\-._]+$", + "type": "string" + }, + "IdcInstanceArn": { + "description": "The ARN of the IAM Identity Center instance to create the Studio application.", + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "IdcUserAssignment": { + "description": "Specifies whether IAM Identity Center user assignment is REQUIRED or OPTIONAL. If the value is set to REQUIRED, users must be explicitly assigned to the Studio application to access the Studio.", + "enum": [ + "REQUIRED", + "OPTIONAL" + ], + "type": "string" + }, + "IdpAuthUrl": { + "description": "Your identity provider's authentication endpoint. Amazon EMR Studio redirects federated users to this endpoint for authentication when logging in to a Studio with the Studio URL.", + "maxLength": 4096, + "pattern": "^https://[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])(:[0-9]*)*([?/#].*)?$", + "type": "string" + }, + "IdpRelayStateParameterName": { + "description": "The name of relay state parameter for external Identity Provider.", + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Name": { + "description": "A descriptive name for the Amazon EMR Studio.", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z0-9_-]+", + "type": "string" + }, + "ServiceRole": { + "$ref": "#/definitions/Arn", + "description": "The IAM role that will be assumed by the Amazon EMR Studio. The service role provides a way for Amazon EMR Studio to interoperate with other AWS services." + }, + "StudioId": { + "description": "The ID of the EMR Studio.", + "maxLength": 256, + "minLength": 4, + "pattern": "^es-[0-9A-Z]+", + "type": "string" + }, + "SubnetIds": { + "description": "A list of up to 5 subnet IDs to associate with the Studio. The subnets must belong to the VPC specified by VpcId. Studio users can create a Workspace in any of the specified subnets.", + "items": { + "$ref": "#/definitions/SubnetId" + }, + "minItems": 1, + "type": "array" + }, + "Tags": { + "$ref": "#/definitions/Tags", + "description": "A list of tags to associate with the Studio. Tags are user-defined key-value pairs that consist of a required key string with a maximum of 128 characters, and an optional value string with a maximum of 256 characters." + }, + "TrustedIdentityPropagationEnabled": { + "description": "A Boolean indicating whether to enable Trusted identity propagation for the Studio. The default value is false.", + "type": "boolean" + }, + "Url": { + "description": "The unique Studio access URL.", + "maxLength": 4096, + "pattern": "^https://[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])(:[0-9]*)*([?/#].*)?$", + "type": "string" + }, + "UserRole": { + "$ref": "#/definitions/Arn", + "description": "The IAM user role that will be assumed by users and groups logged in to a Studio. The permissions attached to this IAM role can be scoped down for each user or group using session policies." + }, + "VpcId": { + "description": "The ID of the Amazon Virtual Private Cloud (Amazon VPC) to associate with the Studio.", + "pattern": "^(vpc-[0-9a-f]{8}|vpc-[0-9a-f]{17})$", + "type": "string" + }, + "WorkspaceSecurityGroupId": { + "description": "The ID of the Amazon EMR Studio Workspace security group. The Workspace security group allows outbound network traffic to resources in the Engine security group, and it must be in the same VPC specified by VpcId.", + "pattern": "^sg-[a-zA-Z0-9\\-._]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/StudioId", + "/properties/Arn", + "/properties/Url" + ], + "required": [ + "AuthMode", + "EngineSecurityGroupId", + "Name", + "ServiceRole", + "SubnetIds", + "VpcId", + "WorkspaceSecurityGroupId", + "DefaultS3Location" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "elasticmapreduce:AddTags", + "elasticmapreduce:RemoveTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EMR::Studio" +} diff --git a/src/schema/aws-emr-studiosessionmapping.json b/src/schema/aws-emr-studiosessionmapping.json index a29a1156..01e1c421 100644 --- a/src/schema/aws-emr-studiosessionmapping.json +++ b/src/schema/aws-emr-studiosessionmapping.json @@ -1,114 +1,137 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StudioId", - "/properties/IdentityType", - "/properties/IdentityName" - ], - "definitions": { - "IamPolicyArn": { - "pattern": "^arn:aws(-(cn|us-gov))?:iam::([0-9]{12})?:policy\\/[^.]+$", - "type": "string" - } - }, - "description": "An example resource schema demonstrating some basic constructs and validation rules.", - "documentationUrl": "https://docs.aws.amazon.com/cli/latest/reference/emr/create-studio-session-mapping.html", - "handlers": { - "create": { - "permissions": [ - "elasticmapreduce:CreateStudioSessionMapping", - "sso-directory:SearchUsers", - "sso-directory:SearchGroups", - "sso-directory:DescribeUser", - "sso-directory:DescribeGroup", - "sso:GetManagedApplicationInstance", - "sso:ListDirectoryAssociations", - "sso:GetProfile", - "sso:ListProfiles", - "sso:AssociateProfile" - ] - }, - "delete": { - "permissions": [ - "elasticmapreduce:GetStudioSessionMapping", - "elasticmapreduce:DeleteStudioSessionMapping", - "sso-directory:SearchUsers", - "sso-directory:SearchGroups", - "sso-directory:DescribeUser", - "sso-directory:DescribeGroup", - "sso:GetManagedApplicationInstance", - "sso:DescribeInstance", - "sso:ListDirectoryAssociations", - "sso:GetProfile", - "sso:ListProfiles", - "sso:DisassociateProfile" - ] - }, - "list": { - "permissions": [ - "elasticmapreduce:ListStudioSessionMappings" - ] - }, - "read": { - "permissions": [ - "elasticmapreduce:GetStudioSessionMapping", - "sso-directory:SearchUsers", - "sso-directory:SearchGroups", - "sso-directory:DescribeUser", - "sso-directory:DescribeGroup", - "sso:GetManagedApplicationInstance", - "sso:DescribeInstance" - ] - }, - "update": { - "permissions": [ - "elasticmapreduce:GetStudioSessionMapping", - "elasticmapreduce:UpdateStudioSessionMapping", - "sso-directory:SearchUsers", - "sso-directory:SearchGroups", - "sso-directory:DescribeUser", - "sso-directory:DescribeGroup", - "sso:GetManagedApplicationInstance", - "sso:DescribeInstance" - ] - } - }, - "primaryIdentifier": [ - "/properties/StudioId", - "/properties/IdentityType", - "/properties/IdentityName" - ], - "properties": { - "IdentityName": { - "description": "The name of the user or group. For more information, see UserName and DisplayName in the AWS SSO Identity Store API Reference. Either IdentityName or IdentityId must be specified.", - "type": "string" - }, - "IdentityType": { - "description": "Specifies whether the identity to map to the Studio is a user or a group.", - "enum": [ - "USER", - "GROUP" - ], - "type": "string" - }, - "SessionPolicyArn": { - "$ref": "#/definitions/IamPolicyArn", - "description": "The Amazon Resource Name (ARN) for the session policy that will be applied to the user or group. Session policies refine Studio user permissions without the need to use multiple IAM user roles." - }, - "StudioId": { - "description": "The ID of the Amazon EMR Studio to which the user or group will be mapped.", - "maxLength": 256, - "minLength": 4, - "pattern": "^es-[0-9A-Z]+", - "type": "string" - } - }, - "required": [ - "StudioId", - "IdentityName", - "IdentityType", - "SessionPolicyArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::EMR::StudioSessionMapping" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StudioId", + "/properties/IdentityType", + "/properties/IdentityName" + ], + "definitions": { + "IamPolicyArn": { + "pattern": "^arn:aws(-(cn|us-gov|iso-f|iso-e))?:iam::([0-9]{12})?:policy\\/[^.]+$", + "type": "string" + } + }, + "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "documentationUrl": "https://docs.aws.amazon.com/cli/latest/reference/emr/create-studio-session-mapping.html", + "handlers": { + "create": { + "permissions": [ + "elasticmapreduce:CreateStudioSessionMapping", + "sso-directory:SearchUsers", + "sso-directory:SearchGroups", + "sso-directory:DescribeUser", + "sso-directory:DescribeGroup", + "sso:GetManagedApplicationInstance", + "sso:ListDirectoryAssociations", + "sso:GetProfile", + "sso:ListProfiles", + "sso:AssociateProfile", + "sso:CreateApplication", + "sso:PutApplicationAuthenticationMethod", + "sso:PutApplicationGrant", + "sso:PutApplicationAccessScope", + "sso:PutApplicationAssignmentConfiguration", + "sso:DescribeApplication", + "sso:DeleteApplication", + "sso:DeleteApplicationAuthenticationMethod", + "sso:DeleteApplicationAccessScope", + "sso:DeleteApplicationGrant", + "sso:ListInstances", + "sso-directory:CreateUser", + "sso-directory:CreateGroup", + "sso:CreateApplicationAssignment", + "sso:DescribeInstance", + "sso:DeleteApplicationAssignment", + "sso:ListApplicationAssignments" + ] + }, + "delete": { + "permissions": [ + "elasticmapreduce:GetStudioSessionMapping", + "elasticmapreduce:DeleteStudioSessionMapping", + "sso-directory:SearchUsers", + "sso-directory:SearchGroups", + "sso-directory:DescribeUser", + "sso-directory:DescribeGroup", + "sso:GetManagedApplicationInstance", + "sso:DescribeInstance", + "sso:ListDirectoryAssociations", + "sso:GetProfile", + "sso:ListProfiles", + "sso:DisassociateProfile" + ] + }, + "list": { + "permissions": [ + "elasticmapreduce:ListStudioSessionMappings" + ] + }, + "read": { + "permissions": [ + "elasticmapreduce:GetStudioSessionMapping", + "sso-directory:SearchUsers", + "sso-directory:SearchGroups", + "sso-directory:DescribeUser", + "sso-directory:DescribeGroup", + "sso:GetManagedApplicationInstance", + "sso:DescribeInstance" + ] + }, + "update": { + "permissions": [ + "elasticmapreduce:GetStudioSessionMapping", + "elasticmapreduce:UpdateStudioSessionMapping", + "sso-directory:SearchUsers", + "sso-directory:SearchGroups", + "sso-directory:DescribeUser", + "sso-directory:DescribeGroup", + "sso:GetManagedApplicationInstance", + "sso:DescribeInstance" + ] + } + }, + "primaryIdentifier": [ + "/properties/StudioId", + "/properties/IdentityType", + "/properties/IdentityName" + ], + "properties": { + "IdentityName": { + "description": "The name of the user or group. For more information, see UserName and DisplayName in the AWS SSO Identity Store API Reference. Either IdentityName or IdentityId must be specified.", + "type": "string" + }, + "IdentityType": { + "description": "Specifies whether the identity to map to the Studio is a user or a group.", + "enum": [ + "USER", + "GROUP" + ], + "type": "string" + }, + "SessionPolicyArn": { + "$ref": "#/definitions/IamPolicyArn", + "description": "The Amazon Resource Name (ARN) for the session policy that will be applied to the user or group. Session policies refine Studio user permissions without the need to use multiple IAM user roles." + }, + "StudioId": { + "description": "The ID of the Amazon EMR Studio to which the user or group will be mapped.", + "maxLength": 256, + "minLength": 4, + "pattern": "^es-[0-9A-Z]+", + "type": "string" + } + }, + "required": [ + "StudioId", + "IdentityName", + "IdentityType", + "SessionPolicyArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EMR::StudioSessionMapping" +} diff --git a/src/schema/aws-emr-walworkspace.json b/src/schema/aws-emr-walworkspace.json index ab35cf32..982f2f06 100644 --- a/src/schema/aws-emr-walworkspace.json +++ b/src/schema/aws-emr-walworkspace.json @@ -1,98 +1,98 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/WALWorkspaceName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::EMR::WALWorkspace Type", - "handlers": { - "create": { - "permissions": [ - "emrwal:CreateWorkspace", - "emrwal:TagResource", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "emrwal:DeleteWorkspace" - ] - }, - "list": { - "permissions": [ - "emrwal:ListWorkspaces" - ] - }, - "read": { - "permissions": [ - "emrwal:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "emrwal:TagResource", - "emrwal:UntagResource", - "emrwal:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/WALWorkspaceName" - ], - "properties": { - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "WALWorkspaceName": { - "description": "The name of the emrwal container", - "maxLength": 32, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - } - }, - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-emrwal", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "emrwal:TagResource", - "emrwal:UntagResource", - "emrwal:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EMR::WALWorkspace" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/WALWorkspaceName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::EMR::WALWorkspace Type", + "handlers": { + "create": { + "permissions": [ + "emrwal:CreateWorkspace", + "emrwal:TagResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "emrwal:DeleteWorkspace" + ] + }, + "list": { + "permissions": [ + "emrwal:ListWorkspaces" + ] + }, + "read": { + "permissions": [ + "emrwal:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "emrwal:TagResource", + "emrwal:UntagResource", + "emrwal:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/WALWorkspaceName" + ], + "properties": { + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "WALWorkspaceName": { + "description": "The name of the emrwal container", + "maxLength": 32, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-emrwal", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "emrwal:TagResource", + "emrwal:UntagResource", + "emrwal:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EMR::WALWorkspace" +} diff --git a/src/schema/aws-emrcontainers-virtualcluster.json b/src/schema/aws-emrcontainers-virtualcluster.json index 9b9b0e73..5a4c6b97 100644 --- a/src/schema/aws-emrcontainers-virtualcluster.json +++ b/src/schema/aws-emrcontainers-virtualcluster.json @@ -1,169 +1,176 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ContainerProvider", - "/properties/Name" - ], - "definitions": { - "ContainerInfo": { - "additionalProperties": false, - "properties": { - "EksInfo": { - "$ref": "#/definitions/EksInfo" - } - }, - "required": [ - "EksInfo" - ], - "type": "object" - }, - "ContainerProvider": { - "additionalProperties": false, - "properties": { - "Id": { - "description": "The ID of the container cluster", - "maxLength": 100, - "minLength": 1, - "pattern": "^[0-9A-Za-z][A-Za-z0-9\\-_]*", - "type": "string" - }, - "Info": { - "$ref": "#/definitions/ContainerInfo" - }, - "Type": { - "description": "The type of the container provider", - "type": "string" - } - }, - "required": [ - "Type", - "Id", - "Info" - ], - "type": "object" - }, - "EksInfo": { - "additionalProperties": false, - "properties": { - "Namespace": { - "maxLength": 63, - "minLength": 1, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?", - "type": "string" - } - }, - "required": [ - "Namespace" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "An arbitrary set of tags (key-value pairs) for this virtual cluster.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Schema of AWS::EMRContainers::VirtualCluster Type", - "handlers": { - "create": { - "permissions": [ - "emr-containers:CreateVirtualCluster", - "emr-containers:TagResource", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "emr-containers:DeleteVirtualCluster", - "emr-containers:DescribeVirtualCluster" - ] - }, - "list": { - "permissions": [ - "emr-containers:ListVirtualClusters" - ] - }, - "read": { - "permissions": [ - "emr-containers:DescribeVirtualCluster" - ] - }, - "update": { - "permissions": [ - "emr-containers:DescribeVirtualCluster", - "emr-containers:ListTagsForResource", - "emr-containers:TagResource", - "emr-containers:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "ContainerProvider": { - "$ref": "#/definitions/ContainerProvider", - "description": "Container provider of the virtual cluster." - }, - "Id": { - "description": "Id of the virtual cluster.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "Name of the virtual cluster.", - "maxLength": 64, - "minLength": 1, - "pattern": "[\\.\\-_/#A-Za-z0-9]+", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this virtual cluster.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id" - ], - "required": [ - "Name", - "ContainerProvider" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "emr-containers:TagResource", - "emr-containers:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EMRContainers::VirtualCluster" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ContainerProvider", + "/properties/Name" + ], + "definitions": { + "ContainerInfo": { + "additionalProperties": false, + "properties": { + "EksInfo": { + "$ref": "#/definitions/EksInfo" + } + }, + "required": [ + "EksInfo" + ], + "type": "object" + }, + "ContainerProvider": { + "additionalProperties": false, + "properties": { + "Id": { + "description": "The ID of the container cluster", + "maxLength": 100, + "minLength": 1, + "pattern": "^[0-9A-Za-z][A-Za-z0-9\\-_]*", + "type": "string" + }, + "Info": { + "$ref": "#/definitions/ContainerInfo" + }, + "Type": { + "description": "The type of the container provider", + "type": "string" + } + }, + "required": [ + "Type", + "Id", + "Info" + ], + "type": "object" + }, + "EksInfo": { + "additionalProperties": false, + "properties": { + "Namespace": { + "maxLength": 63, + "minLength": 1, + "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?", + "type": "string" + } + }, + "required": [ + "Namespace" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "An arbitrary set of tags (key-value pairs) for this virtual cluster.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Schema of AWS::EMRContainers::VirtualCluster Type", + "handlers": { + "create": { + "permissions": [ + "emr-containers:CreateVirtualCluster", + "emr-containers:TagResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "emr-containers:DeleteVirtualCluster", + "emr-containers:DescribeVirtualCluster" + ] + }, + "list": { + "permissions": [ + "emr-containers:ListVirtualClusters" + ] + }, + "read": { + "permissions": [ + "emr-containers:DescribeVirtualCluster" + ] + }, + "update": { + "permissions": [ + "emr-containers:DescribeVirtualCluster", + "emr-containers:ListTagsForResource", + "emr-containers:TagResource", + "emr-containers:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "ContainerProvider": { + "$ref": "#/definitions/ContainerProvider", + "description": "Container provider of the virtual cluster." + }, + "Id": { + "description": "Id of the virtual cluster.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "Name of the virtual cluster.", + "maxLength": 64, + "minLength": 1, + "pattern": "[\\.\\-_/#A-Za-z0-9]+", + "type": "string" + }, + "SecurityConfigurationId": { + "description": "The ID of the security configuration.", + "maxLength": 64, + "minLength": 1, + "pattern": "[0-9a-z]+", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this virtual cluster.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id" + ], + "required": [ + "Name", + "ContainerProvider" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "emr-containers:TagResource", + "emr-containers:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EMRContainers::VirtualCluster" +} diff --git a/src/schema/aws-emrserverless-application.json b/src/schema/aws-emrserverless-application.json index ddf34a64..17798338 100644 --- a/src/schema/aws-emrserverless-application.json +++ b/src/schema/aws-emrserverless-application.json @@ -1,687 +1,732 @@ -{ - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/Architecture", - "/properties/ReleaseLabel", - "/properties/WorkerTypeSpecifications", - "/properties/MaximumCapacity", - "/properties/InitialCapacity", - "/properties/AutoStartConfiguration", - "/properties/AutoStopConfiguration", - "/properties/NetworkConfiguration", - "/properties/ImageConfiguration", - "/properties/MonitoringConfiguration", - "/properties/RuntimeConfiguration", - "/properties/InteractiveConfiguration" - ], - "createOnlyProperties": [ - "/properties/Name", - "/properties/Type" - ], - "definitions": { - "Architecture": { - "description": "The cpu architecture of an application.", - "enum": [ - "ARM64", - "X86_64" - ], - "type": "string" - }, - "AutoStartConfiguration": { - "additionalProperties": false, - "description": "Configuration for Auto Start of Application", - "properties": { - "Enabled": { - "default": true, - "description": "If set to true, the Application will automatically start. Defaults to true.", - "type": "boolean" - } - }, - "required": [], - "type": "object" - }, - "AutoStopConfiguration": { - "additionalProperties": false, - "description": "Configuration for Auto Stop of Application", - "properties": { - "Enabled": { - "default": true, - "description": "If set to true, the Application will automatically stop after being idle. Defaults to true.", - "type": "boolean" - }, - "IdleTimeoutMinutes": { - "description": "The amount of time [in minutes] to wait before auto stopping the Application when idle. Defaults to 15 minutes.", - "type": "integer" - } - }, - "required": [], - "type": "object" - }, - "Classification": { - "maxLength": 1024, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "CloudWatchLoggingConfiguration": { - "additionalProperties": false, - "properties": { - "Enabled": { - "default": false, - "description": "If set to false, CloudWatch logging will be turned off. Defaults to false.", - "type": "boolean" - }, - "EncryptionKeyArn": { - "$ref": "#/definitions/EncryptionKeyArn", - "description": "KMS key ARN to encrypt the logs stored in given CloudWatch log-group." - }, - "LogGroupName": { - "$ref": "#/definitions/LogGroupName", - "description": "Log-group name to produce log-streams on CloudWatch. If undefined, logs will be produced in a default log-group /aws/emr-serverless" - }, - "LogStreamNamePrefix": { - "$ref": "#/definitions/LogStreamNamePrefix", - "description": "Log-stream name prefix by which log-stream names will start in the CloudWatch Log-group." - }, - "LogTypeMap": { - "description": "The specific log-streams which need to be uploaded to CloudWatch.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LogTypeMapKeyValuePair" - }, - "type": "array", - "uniqueItems": true - } - } - }, - "ConfigurationList": { - "description": "Runtime configuration for batch and interactive JobRun.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ConfigurationObject" - }, - "type": "array", - "uniqueItems": true - }, - "ConfigurationObject": { - "additionalProperties": false, - "description": "Configuration for a JobRun.", - "properties": { - "Classification": { - "$ref": "#/definitions/Classification", - "description": "String with a maximum length of 1024." - }, - "Configurations": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ConfigurationObject" - }, - "type": "array", - "uniqueItems": true - }, - "Properties": { - "additionalProperties": false, - "patternProperties": { - "^[a-zA-Z]+[-a-zA-Z0-9_.]*$": { - "$ref": "#/definitions/SensitivePropertiesMap" - } - }, - "type": "object" - } - }, - "required": [ - "Classification" - ], - "type": "object" - }, - "CpuSize": { - "description": "Per worker CPU resource. vCPU is the only supported unit and specifying vCPU is optional.", - "maxLength": 15, - "minLength": 1, - "pattern": "^[1-9][0-9]*(\\s)?(vCPU|vcpu|VCPU)?$", - "type": "string" - }, - "DiskSize": { - "description": "Per worker Disk resource. GB is the only supported unit and specifying GB is optional", - "maxLength": 15, - "minLength": 1, - "pattern": "^[1-9][0-9]*(\\s)?(GB|gb|gB|Gb)$", - "type": "string" - }, - "DiskType": { - "description": "Per worker DiskType resource. Shuffle optimized and Standard are only supported types and specifying diskType is optional", - "pattern": "^(SHUFFLE_OPTIMIZED|[Ss]huffle_[Oo]ptimized|STANDARD|[Ss]tandard)$", - "type": "string" - }, - "EncryptionKeyArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:(aws[a-zA-Z0-9-]*):kms:[a-zA-Z0-9\\-]*:(\\d{12})?:key\\/[a-zA-Z0-9-]+$", - "type": "string" - }, - "ImageConfigurationInput": { - "additionalProperties": false, - "description": "The image configuration.", - "properties": { - "ImageUri": { - "description": "The URI of an image in the Amazon ECR registry. This field is required when you create a new application. If you leave this field blank in an update, Amazon EMR will remove the image configuration.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^([a-z0-9]+[a-z0-9-.]*)\\/((?:[a-z0-9]+(?:[._-][a-z0-9]+)*\\/)*[a-z0-9]+(?:[._-][a-z0-9]+)*)(?:\\:([a-zA-Z0-9_][a-zA-Z0-9-._]{0,299})|@(sha256:[0-9a-f]{64}))$", - "type": "string" - } - }, - "type": "object" - }, - "InitialCapacityConfig": { - "additionalProperties": false, - "properties": { - "WorkerConfiguration": { - "$ref": "#/definitions/WorkerConfiguration" - }, - "WorkerCount": { - "description": "Initial count of workers to be initialized when an Application is started. This count will be continued to be maintained until the Application is stopped", - "format": "int64", - "maximum": 1000000, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "WorkerCount", - "WorkerConfiguration" - ], - "type": "object" - }, - "InitialCapacityConfigKeyValuePair": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "Worker type for an analytics framework.", - "maxLength": 50, - "minLength": 1, - "pattern": "^[a-zA-Z]+[-_]*[a-zA-Z]+$", - "type": "string" - }, - "Value": { - "$ref": "#/definitions/InitialCapacityConfig" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "InitialCapacityConfigMap": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/InitialCapacityConfigKeyValuePair" - }, - "type": "array", - "uniqueItems": true - }, - "InteractiveConfiguration": { - "additionalProperties": false, - "properties": { - "LivyEndpointEnabled": { - "default": false, - "description": "Enables an Apache Livy endpoint that you can connect to and run interactive jobs", - "type": "boolean" - }, - "StudioEnabled": { - "default": false, - "description": "Enabled you to connect an Application to Amazon EMR Studio to run interactive workloads in a notebook", - "type": "boolean" - } - }, - "type": "object" - }, - "LogGroupName": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\.\\-_/#A-Za-z0-9]+$", - "type": "string" - }, - "LogStreamNamePrefix": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[^:*]*$", - "type": "string" - }, - "LogTypeList": { - "description": "List of Applicable values: [STDOUT, STDERR, HIVE_LOG, TEZ_AM, SYSTEM_LOGS]", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LogTypeString" - }, - "maxItems": 5, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "LogTypeMapKeyValuePair": { - "additionalProperties": false, - "properties": { - "Key": { - "$ref": "#/definitions/WorkerTypeString" - }, - "Value": { - "$ref": "#/definitions/LogTypeList" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "LogTypeString": { - "maxLength": 50, - "minLength": 1, - "pattern": "^[a-zA-Z]+[-_]*[a-zA-Z]+$", - "type": "string" - }, - "ManagedPersistenceMonitoringConfiguration": { - "additionalProperties": false, - "properties": { - "Enabled": { - "default": true, - "description": "If set to false, managed logging will be turned off. Defaults to true.", - "type": "boolean" - }, - "EncryptionKeyArn": { - "$ref": "#/definitions/EncryptionKeyArn", - "description": "KMS key ARN to encrypt the logs stored in managed persistence" - } - } - }, - "MaximumAllowedResources": { - "additionalProperties": false, - "properties": { - "Cpu": { - "$ref": "#/definitions/CpuSize", - "description": "Per worker CPU resource. vCPU is the only supported unit and specifying vCPU is optional." - }, - "Disk": { - "$ref": "#/definitions/DiskSize", - "description": "Per worker Disk resource. GB is the only supported unit and specifying GB is optional" - }, - "Memory": { - "$ref": "#/definitions/MemorySize", - "description": "Per worker memory resource. GB is the only supported unit and specifying GB is optional." - } - }, - "required": [ - "Cpu", - "Memory" - ], - "type": "object" - }, - "MemorySize": { - "description": "Per worker memory resource. GB is the only supported unit and specifying GB is optional.", - "maxLength": 15, - "minLength": 1, - "pattern": "^[1-9][0-9]*(\\s)?(GB|gb|gB|Gb)?$", - "type": "string" - }, - "MonitoringConfiguration": { - "additionalProperties": false, - "description": "Monitoring configuration for batch and interactive JobRun.", - "properties": { - "CloudWatchLoggingConfiguration": { - "$ref": "#/definitions/CloudWatchLoggingConfiguration", - "description": "CloudWatch logging configurations for a JobRun." - }, - "ManagedPersistenceMonitoringConfiguration": { - "$ref": "#/definitions/ManagedPersistenceMonitoringConfiguration", - "description": "Managed log persistence configurations for a JobRun." - }, - "S3MonitoringConfiguration": { - "$ref": "#/definitions/S3MonitoringConfiguration", - "description": "S3 monitoring configurations for a JobRun." - } - }, - "type": "object" - }, - "NetworkConfiguration": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "description": "The ID of the security groups in the VPC to which you want to connect your job or application.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SecurityGroupId" - }, - "maxItems": 5, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "SubnetIds": { - "description": "The ID of the subnets in the VPC to which you want to connect your job or application.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SubnetId" - }, - "maxItems": 16, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [], - "type": "object" - }, - "S3MonitoringConfiguration": { - "additionalProperties": false, - "properties": { - "EncryptionKeyArn": { - "$ref": "#/definitions/EncryptionKeyArn", - "description": "KMS key ARN to encrypt the logs stored in given s3" - }, - "LogUri": { - "$ref": "#/definitions/UriString" - } - } - }, - "SecurityGroupId": { - "description": "Identifier of a security group", - "maxLength": 32, - "minLength": 1, - "pattern": "^[-0-9a-zA-Z]+", - "type": "string" - }, - "SensitivePropertiesKeyValuePair": { - "maxLength": 1024, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "SensitivePropertiesMap": { - "maxLength": 1024, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "SubnetId": { - "description": "Identifier of a subnet", - "maxLength": 32, - "minLength": 1, - "pattern": "^[-0-9a-zA-Z]+", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The value for the tag. You can specify a value that is 1 to 128 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9 /_.:=+@-]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "pattern": "^[A-Za-z0-9 /_.:=+@-]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UriString": { - "maxLength": 10280, - "minLength": 1, - "pattern": "[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\r\\n\\t]*", - "type": "string" - }, - "WorkerConfiguration": { - "additionalProperties": false, - "properties": { - "Cpu": { - "$ref": "#/definitions/CpuSize", - "description": "Per worker CPU resource. vCPU is the only supported unit and specifying vCPU is optional." - }, - "Disk": { - "$ref": "#/definitions/DiskSize", - "description": "Per worker Disk resource. GB is the only supported unit and specifying GB is optional" - }, - "DiskType": { - "$ref": "#/definitions/DiskType", - "description": "Per worker DiskType resource. Shuffle optimized and Standard are only supported types and specifying diskType is optional" - }, - "Memory": { - "$ref": "#/definitions/MemorySize", - "description": "Per worker memory resource. GB is the only supported unit and specifying GB is optional." - } - }, - "required": [ - "Cpu", - "Memory" - ], - "type": "object" - }, - "WorkerTypeSpecificationInput": { - "additionalProperties": false, - "description": "The specifications for a worker type.", - "properties": { - "ImageConfiguration": { - "$ref": "#/definitions/ImageConfigurationInput" - } - }, - "type": "object" - }, - "WorkerTypeSpecificationInputMap": { - "additionalProperties": false, - "patternProperties": { - "^[a-zA-Z]+[-_]*[a-zA-Z]+$": { - "$ref": "#/definitions/WorkerTypeSpecificationInput" - } - }, - "type": "object" - }, - "WorkerTypeString": { - "maxLength": 50, - "minLength": 1, - "pattern": "^[a-zA-Z]+[-_]*[a-zA-Z]+$", - "type": "string" - } - }, - "description": "Resource schema for AWS::EMRServerless::Application Type", - "handlers": { - "create": { - "permissions": [ - "kms:CreateKey", - "kms:CreateAlias", - "kms:DescribeKey", - "kms:EnableKey", - "kms:ListGrants", - "kms:ListAliases", - "kms:ListKeyPolicies", - "kms:ListKeys", - "kms:PutKeyPolicy", - "kms:UpdateKeyDescription", - "kms:UpdateAlias", - "kms:UpdatePrimaryRegion", - "kms:RevokeGrant", - "kms:DisableKey", - "kms:DisableKeyRotation", - "kms:GetKeyPolicy", - "kms:GetKeyRotationStatus", - "kms:DeleteAlias", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource", - "kms:Decrypt", - "emr-serverless:CreateApplication", - "emr-serverless:TagResource", - "emr-serverless:GetApplication", - "iam:CreateServiceLinkedRole", - "ec2:CreateNetworkInterface", - "ecr:BatchGetImage", - "ecr:DescribeImages", - "ecr:GetDownloadUrlForLayer" - ] - }, - "delete": { - "permissions": [ - "emr-serverless:DeleteApplication", - "emr-serverless:GetApplication" - ] - }, - "list": { - "permissions": [ - "emr-serverless:ListApplications" - ] - }, - "read": { - "permissions": [ - "emr-serverless:GetApplication" - ] - }, - "update": { - "permissions": [ - "emr-serverless:UpdateApplication", - "emr-serverless:TagResource", - "emr-serverless:UntagResource", - "emr-serverless:GetApplication", - "ec2:CreateNetworkInterface", - "ecr:BatchGetImage", - "ecr:DescribeImages", - "ecr:GetDownloadUrlForLayer", - "kms:CreateKey", - "kms:CreateAlias", - "kms:DescribeKey", - "kms:EnableKey", - "kms:ListGrants", - "kms:ListAliases", - "kms:ListKeyPolicies", - "kms:ListKeys", - "kms:PutKeyPolicy", - "kms:UpdateKeyDescription", - "kms:UpdateAlias", - "kms:UpdatePrimaryRegion", - "kms:RevokeGrant", - "kms:DisableKey", - "kms:DisableKeyRotation", - "kms:GetKeyPolicy", - "kms:GetKeyRotationStatus", - "kms:DeleteAlias", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationId" - ], - "properties": { - "ApplicationId": { - "description": "The ID of the EMR Serverless Application.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Architecture": { - "$ref": "#/definitions/Architecture" - }, - "Arn": { - "description": "The Amazon Resource Name (ARN) of the EMR Serverless Application.", - "pattern": "^arn:(aws[a-zA-Z0-9-]*):emr-serverless:.+:(\\d{12}):\\/applications\\/[0-9a-zA-Z]+$", - "type": "string" - }, - "AutoStartConfiguration": { - "$ref": "#/definitions/AutoStartConfiguration", - "description": "Configuration for Auto Start of Application." - }, - "AutoStopConfiguration": { - "$ref": "#/definitions/AutoStopConfiguration", - "description": "Configuration for Auto Stop of Application." - }, - "ImageConfiguration": { - "$ref": "#/definitions/ImageConfigurationInput" - }, - "InitialCapacity": { - "$ref": "#/definitions/InitialCapacityConfigMap", - "description": "Initial capacity initialized when an Application is started." - }, - "InteractiveConfiguration": { - "$ref": "#/definitions/InteractiveConfiguration" - }, - "MaximumCapacity": { - "$ref": "#/definitions/MaximumAllowedResources", - "description": "Maximum allowed cumulative resources for an Application. No new resources will be created once the limit is hit." - }, - "MonitoringConfiguration": { - "$ref": "#/definitions/MonitoringConfiguration" - }, - "Name": { - "description": "User friendly Application name.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[A-Za-z0-9._\\/#-]+$", - "type": "string" - }, - "NetworkConfiguration": { - "$ref": "#/definitions/NetworkConfiguration", - "description": "Network Configuration for customer VPC connectivity." - }, - "ReleaseLabel": { - "description": "EMR release label.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[A-Za-z0-9._/-]+$", - "type": "string" - }, - "RuntimeConfiguration": { - "$ref": "#/definitions/ConfigurationList" - }, - "Tags": { - "description": "Tag map with key and value", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "description": "The type of the application", - "type": "string" - }, - "WorkerTypeSpecifications": { - "$ref": "#/definitions/WorkerTypeSpecificationInputMap", - "description": "The key-value pairs that specify worker type to WorkerTypeSpecificationInput. This parameter must contain all valid worker types for a Spark or Hive application. Valid worker types include Driver and Executor for Spark applications and HiveDriver and TezTask for Hive applications. You can either set image details in this parameter for each worker type, or in imageConfiguration for all worker types." - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/ApplicationId" - ], - "required": [ - "ReleaseLabel", - "Type" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EMRServerless::Application" -} +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/Architecture", + "/properties/ReleaseLabel", + "/properties/WorkerTypeSpecifications", + "/properties/MaximumCapacity", + "/properties/InitialCapacity", + "/properties/AutoStartConfiguration", + "/properties/AutoStopConfiguration", + "/properties/NetworkConfiguration", + "/properties/ImageConfiguration", + "/properties/MonitoringConfiguration", + "/properties/RuntimeConfiguration", + "/properties/InteractiveConfiguration", + "/properties/SchedulerConfiguration" + ], + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type" + ], + "definitions": { + "Architecture": { + "description": "The cpu architecture of an application.", + "enum": [ + "ARM64", + "X86_64" + ], + "type": "string" + }, + "AutoStartConfiguration": { + "additionalProperties": false, + "description": "Configuration for Auto Start of Application", + "properties": { + "Enabled": { + "default": true, + "description": "If set to true, the Application will automatically start. Defaults to true.", + "type": "boolean" + } + }, + "required": [], + "type": "object" + }, + "AutoStopConfiguration": { + "additionalProperties": false, + "description": "Configuration for Auto Stop of Application", + "properties": { + "Enabled": { + "default": true, + "description": "If set to true, the Application will automatically stop after being idle. Defaults to true.", + "type": "boolean" + }, + "IdleTimeoutMinutes": { + "description": "The amount of time [in minutes] to wait before auto stopping the Application when idle. Defaults to 15 minutes.", + "type": "integer" + } + }, + "required": [], + "type": "object" + }, + "Classification": { + "maxLength": 1024, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "CloudWatchLoggingConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "default": false, + "description": "If set to false, CloudWatch logging will be turned off. Defaults to false.", + "type": "boolean" + }, + "EncryptionKeyArn": { + "$ref": "#/definitions/EncryptionKeyArn", + "description": "KMS key ARN to encrypt the logs stored in given CloudWatch log-group." + }, + "LogGroupName": { + "$ref": "#/definitions/LogGroupName", + "description": "Log-group name to produce log-streams on CloudWatch. If undefined, logs will be produced in a default log-group /aws/emr-serverless" + }, + "LogStreamNamePrefix": { + "$ref": "#/definitions/LogStreamNamePrefix", + "description": "Log-stream name prefix by which log-stream names will start in the CloudWatch Log-group." + }, + "LogTypeMap": { + "description": "The specific log-streams which need to be uploaded to CloudWatch.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LogTypeMapKeyValuePair" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "ConfigurationList": { + "description": "Runtime configuration for batch and interactive JobRun.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ConfigurationObject" + }, + "type": "array", + "uniqueItems": true + }, + "ConfigurationObject": { + "additionalProperties": false, + "description": "Configuration for a JobRun.", + "properties": { + "Classification": { + "$ref": "#/definitions/Classification", + "description": "String with a maximum length of 1024." + }, + "Configurations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ConfigurationObject" + }, + "type": "array", + "uniqueItems": true + }, + "Properties": { + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z]+[-a-zA-Z0-9_.]*$": { + "$ref": "#/definitions/SensitivePropertiesMap" + } + }, + "type": "object" + } + }, + "required": [ + "Classification" + ], + "type": "object" + }, + "CpuSize": { + "description": "Per worker CPU resource. vCPU is the only supported unit and specifying vCPU is optional.", + "maxLength": 15, + "minLength": 1, + "pattern": "^[1-9][0-9]*(\\s)?(vCPU|vcpu|VCPU)?$", + "type": "string" + }, + "DiskSize": { + "description": "Per worker Disk resource. GB is the only supported unit and specifying GB is optional", + "maxLength": 15, + "minLength": 1, + "pattern": "^[1-9][0-9]*(\\s)?(GB|gb|gB|Gb)$", + "type": "string" + }, + "DiskType": { + "description": "Per worker DiskType resource. Shuffle optimized and Standard are only supported types and specifying diskType is optional", + "pattern": "^(SHUFFLE_OPTIMIZED|[Ss]huffle_[Oo]ptimized|STANDARD|[Ss]tandard)$", + "type": "string" + }, + "EncryptionKeyArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):kms:[a-zA-Z0-9\\-]*:(\\d{12})?:key\\/[a-zA-Z0-9-]+$", + "type": "string" + }, + "ImageConfigurationInput": { + "additionalProperties": false, + "description": "The image configuration.", + "properties": { + "ImageUri": { + "description": "The URI of an image in the Amazon ECR registry. This field is required when you create a new application. If you leave this field blank in an update, Amazon EMR will remove the image configuration.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^([a-z0-9]+[a-z0-9-.]*)\\/((?:[a-z0-9]+(?:[._-][a-z0-9]+)*\\/)*[a-z0-9]+(?:[._-][a-z0-9]+)*)(?:\\:([a-zA-Z0-9_][a-zA-Z0-9-._]{0,299})|@(sha256:[0-9a-f]{64}))$", + "type": "string" + } + }, + "type": "object" + }, + "InitialCapacityConfig": { + "additionalProperties": false, + "properties": { + "WorkerConfiguration": { + "$ref": "#/definitions/WorkerConfiguration" + }, + "WorkerCount": { + "description": "Initial count of workers to be initialized when an Application is started. This count will be continued to be maintained until the Application is stopped", + "format": "int64", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "WorkerCount", + "WorkerConfiguration" + ], + "type": "object" + }, + "InitialCapacityConfigKeyValuePair": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "Worker type for an analytics framework.", + "maxLength": 50, + "minLength": 1, + "pattern": "^[a-zA-Z]+[-_]*[a-zA-Z]+$", + "type": "string" + }, + "Value": { + "$ref": "#/definitions/InitialCapacityConfig" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "InitialCapacityConfigMap": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InitialCapacityConfigKeyValuePair" + }, + "type": "array", + "uniqueItems": true + }, + "InteractiveConfiguration": { + "additionalProperties": false, + "properties": { + "LivyEndpointEnabled": { + "default": false, + "description": "Enables an Apache Livy endpoint that you can connect to and run interactive jobs", + "type": "boolean" + }, + "StudioEnabled": { + "default": false, + "description": "Enabled you to connect an Application to Amazon EMR Studio to run interactive workloads in a notebook", + "type": "boolean" + } + }, + "type": "object" + }, + "LogGroupName": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\.\\-_/#A-Za-z0-9]+$", + "type": "string" + }, + "LogStreamNamePrefix": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[^:*]*$", + "type": "string" + }, + "LogTypeList": { + "description": "List of Applicable values: [STDOUT, STDERR, HIVE_LOG, TEZ_AM, SYSTEM_LOGS]", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LogTypeString" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "LogTypeMapKeyValuePair": { + "additionalProperties": false, + "properties": { + "Key": { + "$ref": "#/definitions/WorkerTypeString" + }, + "Value": { + "$ref": "#/definitions/LogTypeList" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "LogTypeString": { + "maxLength": 50, + "minLength": 1, + "pattern": "^[a-zA-Z]+[-_]*[a-zA-Z]+$", + "type": "string" + }, + "ManagedPersistenceMonitoringConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "default": true, + "description": "If set to false, managed logging will be turned off. Defaults to true.", + "type": "boolean" + }, + "EncryptionKeyArn": { + "$ref": "#/definitions/EncryptionKeyArn", + "description": "KMS key ARN to encrypt the logs stored in managed persistence" + } + } + }, + "MaximumAllowedResources": { + "additionalProperties": false, + "properties": { + "Cpu": { + "$ref": "#/definitions/CpuSize", + "description": "Per worker CPU resource. vCPU is the only supported unit and specifying vCPU is optional." + }, + "Disk": { + "$ref": "#/definitions/DiskSize", + "description": "Per worker Disk resource. GB is the only supported unit and specifying GB is optional" + }, + "Memory": { + "$ref": "#/definitions/MemorySize", + "description": "Per worker memory resource. GB is the only supported unit and specifying GB is optional." + } + }, + "required": [ + "Cpu", + "Memory" + ], + "type": "object" + }, + "MemorySize": { + "description": "Per worker memory resource. GB is the only supported unit and specifying GB is optional.", + "maxLength": 15, + "minLength": 1, + "pattern": "^[1-9][0-9]*(\\s)?(GB|gb|gB|Gb)?$", + "type": "string" + }, + "MonitoringConfiguration": { + "additionalProperties": false, + "description": "Monitoring configuration for batch and interactive JobRun.", + "properties": { + "CloudWatchLoggingConfiguration": { + "$ref": "#/definitions/CloudWatchLoggingConfiguration", + "description": "CloudWatch logging configurations for a JobRun." + }, + "ManagedPersistenceMonitoringConfiguration": { + "$ref": "#/definitions/ManagedPersistenceMonitoringConfiguration", + "description": "Managed log persistence configurations for a JobRun." + }, + "PrometheusMonitoringConfiguration": { + "$ref": "#/definitions/PrometheusMonitoringConfiguration", + "description": "Prometheus monitoring configurations for a JobRun." + }, + "S3MonitoringConfiguration": { + "$ref": "#/definitions/S3MonitoringConfiguration", + "description": "S3 monitoring configurations for a JobRun." + } + }, + "type": "object" + }, + "NetworkConfiguration": { + "additionalProperties": false, + "properties": { + "SecurityGroupIds": { + "description": "The ID of the security groups in the VPC to which you want to connect your job or application.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SecurityGroupId" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "SubnetIds": { + "description": "The ID of the subnets in the VPC to which you want to connect your job or application.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetId" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [], + "type": "object" + }, + "PrometheusMonitoringConfiguration": { + "additionalProperties": false, + "properties": { + "RemoteWriteUrl": { + "$ref": "#/definitions/RemoteWriteUrl", + "description": "The remote write URL in the Amazon Managed Service for Prometheus workspace to send metrics to." + } + } + }, + "RemoteWriteUrl": { + "maxLength": 10280, + "minLength": 1, + "pattern": "^https://aps-workspaces.([a-z]{2}-[a-z-]{1,20}-[1-9]).amazonaws(.[0-9A-Za-z]{2,4})+/workspaces/[-_.0-9A-Za-z]{1,100}/api/v1/remote_write$", + "type": "string" + }, + "S3MonitoringConfiguration": { + "additionalProperties": false, + "properties": { + "EncryptionKeyArn": { + "$ref": "#/definitions/EncryptionKeyArn", + "description": "KMS key ARN to encrypt the logs stored in given s3" + }, + "LogUri": { + "$ref": "#/definitions/UriString" + } + } + }, + "SchedulerConfiguration": { + "additionalProperties": false, + "description": "The scheduler configuration for batch and streaming jobs running on this application. Supported with release labels emr-7.0.0 and above.", + "properties": { + "MaxConcurrentRuns": { + "description": "The maximum concurrent job runs on this application. If scheduler configuration is enabled on your application, the default value is 15. The valid range is 1 to 1000.", + "type": "integer" + }, + "QueueTimeoutMinutes": { + "description": "The maximum duration in minutes for the job in QUEUED state. If scheduler configuration is enabled on your application, the default value is 360 minutes (6 hours). The valid range is from 15 to 720.", + "type": "integer" + } + }, + "type": "object" + }, + "SecurityGroupId": { + "description": "Identifier of a security group", + "maxLength": 32, + "minLength": 1, + "pattern": "^[-0-9a-zA-Z]+", + "type": "string" + }, + "SensitivePropertiesKeyValuePair": { + "maxLength": 1024, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "SensitivePropertiesMap": { + "maxLength": 1024, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "SubnetId": { + "description": "Identifier of a subnet", + "maxLength": 32, + "minLength": 1, + "pattern": "^[-0-9a-zA-Z]+", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The value for the tag. You can specify a value that is 1 to 128 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9 /_.:=+@-]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "pattern": "^[A-Za-z0-9 /_.:=+@-]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UriString": { + "maxLength": 10280, + "minLength": 1, + "pattern": "[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\r\\n\\t]*", + "type": "string" + }, + "WorkerConfiguration": { + "additionalProperties": false, + "properties": { + "Cpu": { + "$ref": "#/definitions/CpuSize", + "description": "Per worker CPU resource. vCPU is the only supported unit and specifying vCPU is optional." + }, + "Disk": { + "$ref": "#/definitions/DiskSize", + "description": "Per worker Disk resource. GB is the only supported unit and specifying GB is optional" + }, + "DiskType": { + "$ref": "#/definitions/DiskType", + "description": "Per worker DiskType resource. Shuffle optimized and Standard are only supported types and specifying diskType is optional" + }, + "Memory": { + "$ref": "#/definitions/MemorySize", + "description": "Per worker memory resource. GB is the only supported unit and specifying GB is optional." + } + }, + "required": [ + "Cpu", + "Memory" + ], + "type": "object" + }, + "WorkerTypeSpecificationInput": { + "additionalProperties": false, + "description": "The specifications for a worker type.", + "properties": { + "ImageConfiguration": { + "$ref": "#/definitions/ImageConfigurationInput" + } + }, + "type": "object" + }, + "WorkerTypeSpecificationInputMap": { + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z]+[-_]*[a-zA-Z]+$": { + "$ref": "#/definitions/WorkerTypeSpecificationInput" + } + }, + "type": "object" + }, + "WorkerTypeString": { + "maxLength": 50, + "minLength": 1, + "pattern": "^[a-zA-Z]+[-_]*[a-zA-Z]+$", + "type": "string" + } + }, + "description": "Resource schema for AWS::EMRServerless::Application Type", + "handlers": { + "create": { + "permissions": [ + "kms:CreateKey", + "kms:CreateAlias", + "kms:DescribeKey", + "kms:EnableKey", + "kms:ListGrants", + "kms:ListAliases", + "kms:ListKeyPolicies", + "kms:ListKeys", + "kms:PutKeyPolicy", + "kms:UpdateKeyDescription", + "kms:UpdateAlias", + "kms:UpdatePrimaryRegion", + "kms:RevokeGrant", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:DeleteAlias", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:GenerateDataKey", + "kms:TagResource", + "kms:UntagResource", + "kms:Decrypt", + "emr-serverless:CreateApplication", + "emr-serverless:TagResource", + "emr-serverless:GetApplication", + "iam:CreateServiceLinkedRole", + "ec2:CreateNetworkInterface", + "ecr:BatchGetImage", + "ecr:DescribeImages", + "ecr:GetDownloadUrlForLayer" + ] + }, + "delete": { + "permissions": [ + "emr-serverless:DeleteApplication", + "emr-serverless:GetApplication" + ] + }, + "list": { + "permissions": [ + "emr-serverless:ListApplications" + ] + }, + "read": { + "permissions": [ + "emr-serverless:GetApplication" + ] + }, + "update": { + "permissions": [ + "emr-serverless:UpdateApplication", + "emr-serverless:TagResource", + "emr-serverless:UntagResource", + "emr-serverless:GetApplication", + "ec2:CreateNetworkInterface", + "ecr:BatchGetImage", + "ecr:DescribeImages", + "ecr:GetDownloadUrlForLayer", + "kms:CreateKey", + "kms:CreateAlias", + "kms:DescribeKey", + "kms:EnableKey", + "kms:ListGrants", + "kms:ListAliases", + "kms:ListKeyPolicies", + "kms:ListKeys", + "kms:PutKeyPolicy", + "kms:UpdateKeyDescription", + "kms:UpdateAlias", + "kms:UpdatePrimaryRegion", + "kms:RevokeGrant", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:DeleteAlias", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:GenerateDataKey", + "kms:TagResource", + "kms:UntagResource", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId" + ], + "properties": { + "ApplicationId": { + "description": "The ID of the EMR Serverless Application.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Architecture": { + "$ref": "#/definitions/Architecture" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the EMR Serverless Application.", + "pattern": "^arn:(aws[a-zA-Z0-9-]*):emr-serverless:.+:(\\d{12}):\\/applications\\/[0-9a-zA-Z]+$", + "type": "string" + }, + "AutoStartConfiguration": { + "$ref": "#/definitions/AutoStartConfiguration", + "description": "Configuration for Auto Start of Application." + }, + "AutoStopConfiguration": { + "$ref": "#/definitions/AutoStopConfiguration", + "description": "Configuration for Auto Stop of Application." + }, + "ImageConfiguration": { + "$ref": "#/definitions/ImageConfigurationInput" + }, + "InitialCapacity": { + "$ref": "#/definitions/InitialCapacityConfigMap", + "description": "Initial capacity initialized when an Application is started." + }, + "InteractiveConfiguration": { + "$ref": "#/definitions/InteractiveConfiguration" + }, + "MaximumCapacity": { + "$ref": "#/definitions/MaximumAllowedResources", + "description": "Maximum allowed cumulative resources for an Application. No new resources will be created once the limit is hit." + }, + "MonitoringConfiguration": { + "$ref": "#/definitions/MonitoringConfiguration" + }, + "Name": { + "description": "User friendly Application name.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9._\\/#-]+$", + "type": "string" + }, + "NetworkConfiguration": { + "$ref": "#/definitions/NetworkConfiguration", + "description": "Network Configuration for customer VPC connectivity." + }, + "ReleaseLabel": { + "description": "EMR release label.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9._/-]+$", + "type": "string" + }, + "RuntimeConfiguration": { + "$ref": "#/definitions/ConfigurationList" + }, + "SchedulerConfiguration": { + "$ref": "#/definitions/SchedulerConfiguration", + "description": "The scheduler configuration for batch and streaming jobs running on this application. Supported with release labels emr-7.0.0 and above." + }, + "Tags": { + "description": "Tag map with key and value", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "The type of the application", + "type": "string" + }, + "WorkerTypeSpecifications": { + "$ref": "#/definitions/WorkerTypeSpecificationInputMap", + "description": "The key-value pairs that specify worker type to WorkerTypeSpecificationInput. This parameter must contain all valid worker types for a Spark or Hive application. Valid worker types include Driver and Executor for Spark applications and HiveDriver and TezTask for Hive applications. You can either set image details in this parameter for each worker type, or in imageConfiguration for all worker types." + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ApplicationId" + ], + "required": [ + "ReleaseLabel", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "emr-serverless:TagResource", + "emr-serverless:UntagResource", + "kms:TagResource", + "kms:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EMRServerless::Application" +} diff --git a/src/schema/aws-entityresolution-idmappingworkflow.json b/src/schema/aws-entityresolution-idmappingworkflow.json index 13de899f..96115017 100644 --- a/src/schema/aws-entityresolution-idmappingworkflow.json +++ b/src/schema/aws-entityresolution-idmappingworkflow.json @@ -1,359 +1,364 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/WorkflowName" - ], - "definitions": { - "AttributeName": { - "maxLength": 255, - "minLength": 0, - "pattern": "^[a-zA-Z_0-9- \\t]*$", - "type": "string" - }, - "CreatedAt": { - "description": "The time of this IdMappingWorkflow got created", - "type": "string" - }, - "Description": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "EntityName": { - "maxLength": 255, - "minLength": 0, - "pattern": "^[a-zA-Z_0-9-]*$", - "type": "string" - }, - "IdMappingRuleBasedProperties": { - "additionalProperties": false, - "properties": { - "AttributeMatchingModel": { - "enum": [ - "ONE_TO_ONE", - "MANY_TO_MANY" - ], - "type": "string" - }, - "RecordMatchingModel": { - "enum": [ - "ONE_SOURCE_TO_ONE_TARGET", - "MANY_SOURCE_TO_ONE_TARGET" - ], - "type": "string" - }, - "RuleDefinitionType": { - "enum": [ - "SOURCE", - "TARGET" - ], - "type": "string" - }, - "Rules": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Rule" - }, - "maxItems": 25, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "AttributeMatchingModel", - "RecordMatchingModel" - ], - "type": "object" - }, - "IdMappingTechniques": { - "additionalProperties": false, - "properties": { - "IdMappingType": { - "enum": [ - "PROVIDER", - "RULE_BASED" - ], - "type": "string" - }, - "ProviderProperties": { - "$ref": "#/definitions/ProviderProperties" - }, - "RuleBasedProperties": { - "$ref": "#/definitions/IdMappingRuleBasedProperties" - } - }, - "type": "object" - }, - "IdMappingWorkflowArn": { - "description": "The default IdMappingWorkflow arn", - "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:.*:[0-9]+:(idmappingworkflow/.*)$", - "type": "string" - }, - "IdMappingWorkflowInputSource": { - "additionalProperties": false, - "properties": { - "InputSourceARN": { - "description": "An Glue table ARN for the input source table, MatchingWorkflow arn or IdNamespace ARN", - "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:(idnamespace/[a-zA-Z_0-9-]{1,255})$|^arn:(aws|aws-us-gov|aws-cn):entityresolution:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:(matchingworkflow/[a-zA-Z_0-9-]{1,255})$|^arn:(aws|aws-us-gov|aws-cn):glue:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:(table/[a-zA-Z_0-9-]{1,255}/[a-zA-Z_0-9-]{1,255})$", - "type": "string" - }, - "SchemaArn": { - "$ref": "#/definitions/SchemaMappingArn", - "type": "string" - }, - "Type": { - "enum": [ - "SOURCE", - "TARGET" - ], - "type": "string" - } - }, - "required": [ - "InputSourceARN" - ], - "type": "object" - }, - "IdMappingWorkflowOutputSource": { - "additionalProperties": false, - "properties": { - "KMSArn": { - "$ref": "#/definitions/KMSArn" - }, - "OutputS3Path": { - "description": "The S3 path to which Entity Resolution will write the output table", - "pattern": "^s3://([^/]+)/?(.*?([^/]+)/?)$", - "type": "string" - } - }, - "required": [ - "OutputS3Path" - ], - "type": "object" - }, - "IntermediateSourceConfiguration": { - "additionalProperties": false, - "properties": { - "IntermediateS3Path": { - "description": "The s3 path that would be used to stage the intermediate data being generated during workflow execution.", - "type": "string" - } - }, - "required": [ - "IntermediateS3Path" - ], - "type": "object" - }, - "KMSArn": { - "pattern": "^arn:(aws|aws-us-gov|aws-cn):kms:.*:[0-9]+:.*$", - "type": "string" - }, - "ProviderProperties": { - "additionalProperties": false, - "properties": { - "IntermediateSourceConfiguration": { - "$ref": "#/definitions/IntermediateSourceConfiguration" - }, - "ProviderConfiguration": { - "additionalProperties": false, - "description": "Additional Provider configuration that would be required for the provider service. The Configuration must be in JSON string format", - "patternProperties": { - "^.+$": { - "type": "string" - } - }, - "type": "object" - }, - "ProviderServiceArn": { - "description": "Arn of the Provider Service being used.", - "pattern": "^arn:(aws|aws-us-gov|aws-cn):(entityresolution):([a-z]{2}-[a-z]{1,10}-[0-9])::providerservice/([a-zA-Z0-9_-]{1,255})/([a-zA-Z0-9_-]{1,255})$", - "type": "string" - } - }, - "required": [ - "ProviderServiceArn" - ], - "type": "object" - }, - "Rule": { - "additionalProperties": false, - "properties": { - "MatchingKeys": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AttributeName" - }, - "maxItems": 15, - "minItems": 1, - "type": "array" - }, - "RuleName": { - "maxLength": 255, - "minLength": 0, - "pattern": "^[a-zA-Z_0-9- \\t]*$", - "type": "string" - } - }, - "required": [ - "RuleName", - "MatchingKeys" - ], - "type": "object" - }, - "SchemaMappingArn": { - "description": "The SchemaMapping arn associated with the Schema", - "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:.*:[0-9]+:(schemamapping/.*)$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UpdatedAt": { - "description": "The time of this IdMappingWorkflow got last updated at", - "type": "string" - } - }, - "description": "IdMappingWorkflow defined in AWS Entity Resolution service", - "handlers": { - "create": { - "permissions": [ - "entityresolution:CreateIdMappingWorkflow", - "entityresolution:GetIdMappingWorkflow", - "entityresolution:TagResource", - "kms:CreateGrant", - "kms:DescribeKey", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "entityresolution:DeleteIdMappingWorkflow", - "entityresolution:GetIdMappingWorkflow", - "entityresolution:UntagResource" - ] - }, - "list": { - "permissions": [ - "entityresolution:ListIdMappingWorkflows" - ] - }, - "read": { - "permissions": [ - "entityresolution:GetIdMappingWorkflow", - "entityresolution:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "entityresolution:GetIdMappingWorkflow", - "entityresolution:UpdateIdMappingWorkflow", - "entityresolution:ListTagsForResource", - "entityresolution:TagResource", - "entityresolution:UntagResource", - "iam:PassRole", - "kms:CreateGrant", - "kms:DescribeKey" - ] - } - }, - "primaryIdentifier": [ - "/properties/WorkflowName" - ], - "properties": { - "CreatedAt": { - "$ref": "#/definitions/CreatedAt" - }, - "Description": { - "$ref": "#/definitions/Description", - "description": "The description of the IdMappingWorkflow" - }, - "IdMappingTechniques": { - "$ref": "#/definitions/IdMappingTechniques" - }, - "InputSourceConfig": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/IdMappingWorkflowInputSource" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - }, - "OutputSourceConfig": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/IdMappingWorkflowOutputSource" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "RoleArn": { - "pattern": "^arn:(aws|aws-us-gov|aws-cn):iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "UpdatedAt": { - "$ref": "#/definitions/UpdatedAt" - }, - "WorkflowArn": { - "$ref": "#/definitions/IdMappingWorkflowArn" - }, - "WorkflowName": { - "$ref": "#/definitions/EntityName", - "description": "The name of the IdMappingWorkflow" - } - }, - "readOnlyProperties": [ - "/properties/WorkflowArn", - "/properties/UpdatedAt", - "/properties/CreatedAt" - ], - "required": [ - "WorkflowName", - "InputSourceConfig", - "IdMappingTechniques", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-entity-resolution.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EntityResolution::IdMappingWorkflow", - "writeOnlyProperties": [ - "/properties/IdMappingTechniques/NormalizationVersion" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/WorkflowName" + ], + "definitions": { + "AttributeName": { + "maxLength": 255, + "minLength": 0, + "pattern": "^[a-zA-Z_0-9- \\t]*$", + "type": "string" + }, + "CreatedAt": { + "description": "The time of this IdMappingWorkflow got created", + "type": "string" + }, + "Description": { + "maxLength": 255, + "minLength": 0, + "type": "string" + }, + "EntityName": { + "maxLength": 255, + "minLength": 0, + "pattern": "^[a-zA-Z_0-9-]*$", + "type": "string" + }, + "IdMappingRuleBasedProperties": { + "additionalProperties": false, + "properties": { + "AttributeMatchingModel": { + "enum": [ + "ONE_TO_ONE", + "MANY_TO_MANY" + ], + "type": "string" + }, + "RecordMatchingModel": { + "enum": [ + "ONE_SOURCE_TO_ONE_TARGET", + "MANY_SOURCE_TO_ONE_TARGET" + ], + "type": "string" + }, + "RuleDefinitionType": { + "enum": [ + "SOURCE", + "TARGET" + ], + "type": "string" + }, + "Rules": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Rule" + }, + "maxItems": 25, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "AttributeMatchingModel", + "RecordMatchingModel" + ], + "type": "object" + }, + "IdMappingTechniques": { + "additionalProperties": false, + "properties": { + "IdMappingType": { + "enum": [ + "PROVIDER", + "RULE_BASED" + ], + "type": "string" + }, + "ProviderProperties": { + "$ref": "#/definitions/ProviderProperties" + }, + "RuleBasedProperties": { + "$ref": "#/definitions/IdMappingRuleBasedProperties" + } + }, + "type": "object" + }, + "IdMappingWorkflowArn": { + "description": "The default IdMappingWorkflow arn", + "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:.*:[0-9]+:(idmappingworkflow/.*)$", + "type": "string" + }, + "IdMappingWorkflowInputSource": { + "additionalProperties": false, + "properties": { + "InputSourceARN": { + "description": "An Glue table ARN for the input source table, MatchingWorkflow arn or IdNamespace ARN", + "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:(idnamespace/[a-zA-Z_0-9-]{1,255})$|^arn:(aws|aws-us-gov|aws-cn):entityresolution:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:(matchingworkflow/[a-zA-Z_0-9-]{1,255})$|^arn:(aws|aws-us-gov|aws-cn):glue:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:(table/[a-zA-Z_0-9-]{1,255}/[a-zA-Z_0-9-]{1,255})$", + "type": "string" + }, + "SchemaArn": { + "$ref": "#/definitions/SchemaMappingArn", + "type": "string" + }, + "Type": { + "enum": [ + "SOURCE", + "TARGET" + ], + "type": "string" + } + }, + "required": [ + "InputSourceARN" + ], + "type": "object" + }, + "IdMappingWorkflowOutputSource": { + "additionalProperties": false, + "properties": { + "KMSArn": { + "$ref": "#/definitions/KMSArn" + }, + "OutputS3Path": { + "description": "The S3 path to which Entity Resolution will write the output table", + "pattern": "^s3://([^/]+)/?(.*?([^/]+)/?)$", + "type": "string" + } + }, + "required": [ + "OutputS3Path" + ], + "type": "object" + }, + "IntermediateSourceConfiguration": { + "additionalProperties": false, + "properties": { + "IntermediateS3Path": { + "description": "The s3 path that would be used to stage the intermediate data being generated during workflow execution.", + "type": "string" + } + }, + "required": [ + "IntermediateS3Path" + ], + "type": "object" + }, + "KMSArn": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn):kms:.*:[0-9]+:.*$", + "type": "string" + }, + "ProviderProperties": { + "additionalProperties": false, + "properties": { + "IntermediateSourceConfiguration": { + "$ref": "#/definitions/IntermediateSourceConfiguration" + }, + "ProviderConfiguration": { + "additionalProperties": false, + "description": "Additional Provider configuration that would be required for the provider service. The Configuration must be in JSON string format", + "patternProperties": { + "^.+$": { + "type": "string" + } + }, + "type": "object" + }, + "ProviderServiceArn": { + "description": "Arn of the Provider Service being used.", + "pattern": "^arn:(aws|aws-us-gov|aws-cn):(entityresolution):([a-z]{2}-[a-z]{1,10}-[0-9])::providerservice/([a-zA-Z0-9_-]{1,255})/([a-zA-Z0-9_-]{1,255})$", + "type": "string" + } + }, + "required": [ + "ProviderServiceArn" + ], + "type": "object" + }, + "Rule": { + "additionalProperties": false, + "properties": { + "MatchingKeys": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AttributeName" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + }, + "RuleName": { + "maxLength": 255, + "minLength": 0, + "pattern": "^[a-zA-Z_0-9- \\t]*$", + "type": "string" + } + }, + "required": [ + "RuleName", + "MatchingKeys" + ], + "type": "object" + }, + "SchemaMappingArn": { + "description": "The SchemaMapping arn associated with the Schema", + "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:.*:[0-9]+:(schemamapping/.*)$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UpdatedAt": { + "description": "The time of this IdMappingWorkflow got last updated at", + "type": "string" + } + }, + "description": "IdMappingWorkflow defined in AWS Entity Resolution service", + "handlers": { + "create": { + "permissions": [ + "entityresolution:CreateIdMappingWorkflow", + "entityresolution:GetIdMappingWorkflow", + "entityresolution:TagResource", + "kms:CreateGrant", + "kms:DescribeKey", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "entityresolution:DeleteIdMappingWorkflow", + "entityresolution:GetIdMappingWorkflow", + "entityresolution:UntagResource" + ] + }, + "list": { + "permissions": [ + "entityresolution:ListIdMappingWorkflows" + ] + }, + "read": { + "permissions": [ + "entityresolution:GetIdMappingWorkflow", + "entityresolution:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "entityresolution:GetIdMappingWorkflow", + "entityresolution:UpdateIdMappingWorkflow", + "entityresolution:ListTagsForResource", + "entityresolution:TagResource", + "entityresolution:UntagResource", + "iam:PassRole", + "kms:CreateGrant", + "kms:DescribeKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/WorkflowName" + ], + "properties": { + "CreatedAt": { + "$ref": "#/definitions/CreatedAt" + }, + "Description": { + "$ref": "#/definitions/Description", + "description": "The description of the IdMappingWorkflow" + }, + "IdMappingTechniques": { + "$ref": "#/definitions/IdMappingTechniques" + }, + "InputSourceConfig": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IdMappingWorkflowInputSource" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "OutputSourceConfig": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IdMappingWorkflowOutputSource" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "RoleArn": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn):iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "UpdatedAt": { + "$ref": "#/definitions/UpdatedAt" + }, + "WorkflowArn": { + "$ref": "#/definitions/IdMappingWorkflowArn" + }, + "WorkflowName": { + "$ref": "#/definitions/EntityName", + "description": "The name of the IdMappingWorkflow" + } + }, + "readOnlyProperties": [ + "/properties/WorkflowArn", + "/properties/UpdatedAt", + "/properties/CreatedAt" + ], + "required": [ + "WorkflowName", + "InputSourceConfig", + "IdMappingTechniques", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-entity-resolution.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "entityresolution:TagResource", + "entityresolution:UntagResource", + "entityresolution:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EntityResolution::IdMappingWorkflow", + "writeOnlyProperties": [ + "/properties/IdMappingTechniques/NormalizationVersion" + ] +} diff --git a/src/schema/aws-entityresolution-idnamespace.json b/src/schema/aws-entityresolution-idnamespace.json index 02306917..58a0e0a8 100644 --- a/src/schema/aws-entityresolution-idnamespace.json +++ b/src/schema/aws-entityresolution-idnamespace.json @@ -1,306 +1,311 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/IdNamespaceName" - ], - "definitions": { - "AttributeName": { - "maxLength": 255, - "minLength": 0, - "pattern": "^[a-zA-Z_0-9- \\t]*$", - "type": "string" - }, - "EntityName": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z_0-9-]*$", - "type": "string" - }, - "IdNamespaceIdMappingWorkflowProperties": { - "additionalProperties": false, - "properties": { - "IdMappingType": { - "enum": [ - "PROVIDER", - "RULE_BASED" - ], - "type": "string" - }, - "ProviderProperties": { - "$ref": "#/definitions/NamespaceProviderProperties" - }, - "RuleBasedProperties": { - "$ref": "#/definitions/NamespaceRuleBasedProperties" - } - }, - "required": [ - "IdMappingType" - ], - "type": "object" - }, - "IdNamespaceInputSource": { - "additionalProperties": false, - "properties": { - "InputSourceARN": { - "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:(idnamespace/[a-zA-Z_0-9-]{1,255})$|^arn:(aws|aws-us-gov|aws-cn):glue:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:(table/[a-zA-Z_0-9-]{1,255}/[a-zA-Z_0-9-]{1,255})$", - "type": "string" - }, - "SchemaName": { - "$ref": "#/definitions/EntityName" - } - }, - "required": [ - "InputSourceARN" - ], - "type": "object" - }, - "NamespaceProviderProperties": { - "additionalProperties": false, - "properties": { - "ProviderConfiguration": { - "additionalProperties": false, - "description": "Additional Provider configuration that would be required for the provider service. The Configuration must be in JSON string format.", - "patternProperties": { - "^.+$": { - "type": "string" - } - }, - "type": "object" - }, - "ProviderServiceArn": { - "$ref": "#/definitions/ProviderServiceArn" - } - }, - "required": [ - "ProviderServiceArn" - ], - "type": "object" - }, - "NamespaceRuleBasedProperties": { - "additionalProperties": false, - "properties": { - "AttributeMatchingModel": { - "enum": [ - "ONE_TO_ONE", - "MANY_TO_MANY" - ], - "type": "string" - }, - "RecordMatchingModels": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RecordMatchingModel" - }, - "type": "array" - }, - "RuleDefinitionTypes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RuleDefinitionType" - }, - "type": "array" - }, - "Rules": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Rule" - }, - "maxItems": 25, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "ProviderServiceArn": { - "maxLength": 255, - "minLength": 20, - "pattern": "^arn:(aws|aws-us-gov|aws-cn):(entityresolution):([a-z]{2}-[a-z]{1,10}-[0-9])::providerservice/([a-zA-Z0-9_-]{1,255})/([a-zA-Z0-9_-]{1,255})$", - "type": "string" - }, - "RecordMatchingModel": { - "enum": [ - "ONE_SOURCE_TO_ONE_TARGET", - "MANY_SOURCE_TO_ONE_TARGET" - ], - "type": "string" - }, - "Rule": { - "additionalProperties": false, - "properties": { - "MatchingKeys": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AttributeName" - }, - "maxItems": 25, - "minItems": 1, - "type": "array" - }, - "RuleName": { - "maxLength": 255, - "minLength": 0, - "pattern": "^[a-zA-Z_0-9- \\t]*$", - "type": "string" - } - }, - "required": [ - "RuleName", - "MatchingKeys" - ], - "type": "object" - }, - "RuleDefinitionType": { - "enum": [ - "SOURCE", - "TARGET" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "IdNamespace defined in AWS Entity Resolution service", - "handlers": { - "create": { - "permissions": [ - "entityresolution:CreateIdNamespace", - "entityresolution:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "entityresolution:DeleteIdNamespace", - "entityresolution:GetIdNamespace", - "entityresolution:UntagResource" - ] - }, - "list": { - "permissions": [ - "entityresolution:ListIdNamespaces" - ] - }, - "read": { - "permissions": [ - "entityresolution:GetIdNamespace", - "entityresolution:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "entityresolution:UpdateIdNamespace", - "entityresolution:ListTagsForResource", - "entityresolution:TagResource", - "entityresolution:UntagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdNamespaceName" - ], - "properties": { - "CreatedAt": { - "description": "The date and time when the IdNamespace was created", - "type": "string" - }, - "Description": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "IdMappingWorkflowProperties": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/IdNamespaceIdMappingWorkflowProperties" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "IdNamespaceArn": { - "description": "The arn associated with the IdNamespace", - "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:(idnamespace/[a-zA-Z_0-9-]{1,255})$", - "type": "string" - }, - "IdNamespaceName": { - "$ref": "#/definitions/EntityName" - }, - "InputSourceConfig": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/IdNamespaceInputSource" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "RoleArn": { - "maxLength": 512, - "minLength": 32, - "pattern": "^arn:(aws|aws-us-gov|aws-cn):iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "Type": { - "enum": [ - "SOURCE", - "TARGET" - ], - "type": "string" - }, - "UpdatedAt": { - "description": "The date and time when the IdNamespace was updated", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/IdNamespaceArn", - "/properties/CreatedAt", - "/properties/UpdatedAt" - ], - "required": [ - "IdNamespaceName", - "Type" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-entity-resolution.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EntityResolution::IdNamespace" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IdNamespaceName" + ], + "definitions": { + "AttributeName": { + "maxLength": 255, + "minLength": 0, + "pattern": "^[a-zA-Z_0-9- \\t]*$", + "type": "string" + }, + "EntityName": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z_0-9-]*$", + "type": "string" + }, + "IdNamespaceIdMappingWorkflowProperties": { + "additionalProperties": false, + "properties": { + "IdMappingType": { + "enum": [ + "PROVIDER", + "RULE_BASED" + ], + "type": "string" + }, + "ProviderProperties": { + "$ref": "#/definitions/NamespaceProviderProperties" + }, + "RuleBasedProperties": { + "$ref": "#/definitions/NamespaceRuleBasedProperties" + } + }, + "required": [ + "IdMappingType" + ], + "type": "object" + }, + "IdNamespaceInputSource": { + "additionalProperties": false, + "properties": { + "InputSourceARN": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:(idnamespace/[a-zA-Z_0-9-]{1,255})$|^arn:(aws|aws-us-gov|aws-cn):glue:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:(table/[a-zA-Z_0-9-]{1,255}/[a-zA-Z_0-9-]{1,255})$", + "type": "string" + }, + "SchemaName": { + "$ref": "#/definitions/EntityName" + } + }, + "required": [ + "InputSourceARN" + ], + "type": "object" + }, + "NamespaceProviderProperties": { + "additionalProperties": false, + "properties": { + "ProviderConfiguration": { + "additionalProperties": false, + "description": "Additional Provider configuration that would be required for the provider service. The Configuration must be in JSON string format.", + "patternProperties": { + "^.+$": { + "type": "string" + } + }, + "type": "object" + }, + "ProviderServiceArn": { + "$ref": "#/definitions/ProviderServiceArn" + } + }, + "required": [ + "ProviderServiceArn" + ], + "type": "object" + }, + "NamespaceRuleBasedProperties": { + "additionalProperties": false, + "properties": { + "AttributeMatchingModel": { + "enum": [ + "ONE_TO_ONE", + "MANY_TO_MANY" + ], + "type": "string" + }, + "RecordMatchingModels": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RecordMatchingModel" + }, + "type": "array" + }, + "RuleDefinitionTypes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RuleDefinitionType" + }, + "type": "array" + }, + "Rules": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Rule" + }, + "maxItems": 25, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "ProviderServiceArn": { + "maxLength": 255, + "minLength": 20, + "pattern": "^arn:(aws|aws-us-gov|aws-cn):(entityresolution):([a-z]{2}-[a-z]{1,10}-[0-9])::providerservice/([a-zA-Z0-9_-]{1,255})/([a-zA-Z0-9_-]{1,255})$", + "type": "string" + }, + "RecordMatchingModel": { + "enum": [ + "ONE_SOURCE_TO_ONE_TARGET", + "MANY_SOURCE_TO_ONE_TARGET" + ], + "type": "string" + }, + "Rule": { + "additionalProperties": false, + "properties": { + "MatchingKeys": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AttributeName" + }, + "maxItems": 25, + "minItems": 1, + "type": "array" + }, + "RuleName": { + "maxLength": 255, + "minLength": 0, + "pattern": "^[a-zA-Z_0-9- \\t]*$", + "type": "string" + } + }, + "required": [ + "RuleName", + "MatchingKeys" + ], + "type": "object" + }, + "RuleDefinitionType": { + "enum": [ + "SOURCE", + "TARGET" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "IdNamespace defined in AWS Entity Resolution service", + "handlers": { + "create": { + "permissions": [ + "entityresolution:CreateIdNamespace", + "entityresolution:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "entityresolution:DeleteIdNamespace", + "entityresolution:GetIdNamespace", + "entityresolution:UntagResource" + ] + }, + "list": { + "permissions": [ + "entityresolution:ListIdNamespaces" + ] + }, + "read": { + "permissions": [ + "entityresolution:GetIdNamespace", + "entityresolution:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "entityresolution:UpdateIdNamespace", + "entityresolution:ListTagsForResource", + "entityresolution:TagResource", + "entityresolution:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdNamespaceName" + ], + "properties": { + "CreatedAt": { + "description": "The date and time when the IdNamespace was created", + "type": "string" + }, + "Description": { + "maxLength": 255, + "minLength": 0, + "type": "string" + }, + "IdMappingWorkflowProperties": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IdNamespaceIdMappingWorkflowProperties" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "IdNamespaceArn": { + "description": "The arn associated with the IdNamespace", + "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:(idnamespace/[a-zA-Z_0-9-]{1,255})$", + "type": "string" + }, + "IdNamespaceName": { + "$ref": "#/definitions/EntityName" + }, + "InputSourceConfig": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IdNamespaceInputSource" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "RoleArn": { + "maxLength": 512, + "minLength": 32, + "pattern": "^arn:(aws|aws-us-gov|aws-cn):iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "Type": { + "enum": [ + "SOURCE", + "TARGET" + ], + "type": "string" + }, + "UpdatedAt": { + "description": "The date and time when the IdNamespace was updated", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/IdNamespaceArn", + "/properties/CreatedAt", + "/properties/UpdatedAt" + ], + "required": [ + "IdNamespaceName", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-entity-resolution.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "entityresolution:TagResource", + "entityresolution:UntagResource", + "entityresolution:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EntityResolution::IdNamespace" +} diff --git a/src/schema/aws-entityresolution-matchingworkflow.json b/src/schema/aws-entityresolution-matchingworkflow.json index aa95af14..23436cd5 100644 --- a/src/schema/aws-entityresolution-matchingworkflow.json +++ b/src/schema/aws-entityresolution-matchingworkflow.json @@ -1,410 +1,415 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/WorkflowName" - ], - "definitions": { - "AttributeName": { - "maxLength": 255, - "minLength": 0, - "pattern": "^[a-zA-Z_0-9- \\t]*$", - "type": "string" - }, - "CreatedAt": { - "description": "The time of this MatchingWorkflow got created", - "type": "string" - }, - "Description": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "EntityName": { - "maxLength": 255, - "minLength": 0, - "pattern": "^[a-zA-Z_0-9-]*$", - "type": "string" - }, - "IncrementalRunConfig": { - "additionalProperties": false, - "properties": { - "IncrementalRunType": { - "enum": [ - "IMMEDIATE" - ], - "type": "string" - } - }, - "required": [ - "IncrementalRunType" - ], - "type": "object" - }, - "InputSource": { - "additionalProperties": false, - "properties": { - "ApplyNormalization": { - "type": "boolean" - }, - "InputSourceARN": { - "description": "An Glue table ARN for the input source table", - "pattern": "arn:(aws|aws-us-gov|aws-cn):.*:.*:[0-9]+:.*$", - "type": "string" - }, - "SchemaArn": { - "$ref": "#/definitions/SchemaMappingArn", - "type": "string" - } - }, - "required": [ - "InputSourceARN", - "SchemaArn" - ], - "type": "object" - }, - "IntermediateSourceConfiguration": { - "additionalProperties": false, - "properties": { - "IntermediateS3Path": { - "description": "The s3 path that would be used to stage the intermediate data being generated during workflow execution.", - "type": "string" - } - }, - "required": [ - "IntermediateS3Path" - ], - "type": "object" - }, - "KMSArn": { - "pattern": "^arn:(aws|aws-us-gov|aws-cn):kms:.*:[0-9]+:.*$", - "type": "string" - }, - "MatchingWorkflowArn": { - "description": "The default MatchingWorkflow arn", - "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:.*:[0-9]+:(matchingworkflow/.*)$", - "type": "string" - }, - "OutputAttribute": { - "additionalProperties": false, - "properties": { - "Hashed": { - "type": "boolean" - }, - "Name": { - "$ref": "#/definitions/AttributeName" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "OutputSource": { - "additionalProperties": false, - "properties": { - "ApplyNormalization": { - "type": "boolean" - }, - "KMSArn": { - "$ref": "#/definitions/KMSArn" - }, - "Output": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/OutputAttribute" - }, - "maxItems": 750, - "minItems": 0, - "type": "array" - }, - "OutputS3Path": { - "description": "The S3 path to which Entity Resolution will write the output table", - "pattern": "^s3://([^/]+)/?(.*?([^/]+)/?)$", - "type": "string" - } - }, - "required": [ - "Output", - "OutputS3Path" - ], - "type": "object" - }, - "ProviderProperties": { - "additionalProperties": false, - "properties": { - "IntermediateSourceConfiguration": { - "$ref": "#/definitions/IntermediateSourceConfiguration" - }, - "ProviderConfiguration": { - "additionalProperties": false, - "description": "Additional Provider configuration that would be required for the provider service. The Configuration must be in JSON string format", - "patternProperties": { - "^.+$": { - "type": "string" - } - }, - "type": "object" - }, - "ProviderServiceArn": { - "description": "Arn of the Provider service being used.", - "type": "string" - } - }, - "required": [ - "ProviderServiceArn" - ], - "type": "object" - }, - "ResolutionTechniques": { - "additionalProperties": false, - "properties": { - "ProviderProperties": { - "$ref": "#/definitions/ProviderProperties" - }, - "ResolutionType": { - "$ref": "#/definitions/ResolutionType" - }, - "RuleBasedProperties": { - "$ref": "#/definitions/RuleBasedProperties" - } - }, - "type": "object" - }, - "ResolutionType": { - "enum": [ - "RULE_MATCHING", - "ML_MATCHING", - "PROVIDER" - ], - "type": "string" - }, - "Rule": { - "additionalProperties": false, - "properties": { - "MatchingKeys": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AttributeName" - }, - "maxItems": 15, - "minItems": 1, - "type": "array" - }, - "RuleName": { - "maxLength": 255, - "minLength": 0, - "pattern": "^[a-zA-Z_0-9- \\t]*$", - "type": "string" - } - }, - "required": [ - "RuleName", - "MatchingKeys" - ], - "type": "object" - }, - "RuleBasedProperties": { - "additionalProperties": false, - "properties": { - "AttributeMatchingModel": { - "enum": [ - "ONE_TO_ONE", - "MANY_TO_MANY" - ], - "type": "string" - }, - "MatchPurpose": { - "enum": [ - "IDENTIFIER_GENERATION", - "INDEXING" - ], - "type": "string" - }, - "Rules": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Rule" - }, - "maxItems": 15, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "AttributeMatchingModel", - "Rules" - ], - "type": "object" - }, - "SchemaMappingArn": { - "description": "The SchemaMapping arn associated with the Schema", - "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:.*:[0-9]+:(schemamapping/.*)$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UpdatedAt": { - "description": "The time of this MatchingWorkflow got last updated at", - "type": "string" - } - }, - "description": "MatchingWorkflow defined in AWS Entity Resolution service", - "handlers": { - "create": { - "permissions": [ - "entityresolution:CreateMatchingWorkflow", - "entityresolution:GetMatchingWorkflow", - "entityresolution:TagResource", - "kms:CreateGrant", - "kms:DescribeKey", - "iam:PassRole", - "events:PutRule", - "events:DeleteRule", - "events:PutTargets", - "events:ListTargetsByRule" - ] - }, - "delete": { - "permissions": [ - "entityresolution:DeleteMatchingWorkflow", - "entityresolution:GetMatchingWorkflow", - "entityresolution:UntagResource", - "events:PutRule", - "events:DeleteRule", - "events:PutTargets", - "events:RemoveTargets", - "events:ListTargetsByRule" - ] - }, - "list": { - "permissions": [ - "entityresolution:ListMatchingWorkflows" - ] - }, - "read": { - "permissions": [ - "entityresolution:GetMatchingWorkflow", - "entityresolution:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "entityresolution:GetMatchingWorkflow", - "entityresolution:UpdateMatchingWorkflow", - "entityresolution:ListTagsForResource", - "entityresolution:TagResource", - "entityresolution:UntagResource", - "iam:PassRole", - "kms:CreateGrant", - "kms:DescribeKey", - "events:PutRule", - "events:DeleteRule", - "events:PutTargets", - "events:RemoveTargets", - "events:ListTargetsByRule" - ] - } - }, - "primaryIdentifier": [ - "/properties/WorkflowName" - ], - "properties": { - "CreatedAt": { - "$ref": "#/definitions/CreatedAt" - }, - "Description": { - "$ref": "#/definitions/Description", - "description": "The description of the MatchingWorkflow" - }, - "IncrementalRunConfig": { - "$ref": "#/definitions/IncrementalRunConfig" - }, - "InputSourceConfig": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/InputSource" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - }, - "OutputSourceConfig": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/OutputSource" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "ResolutionTechniques": { - "$ref": "#/definitions/ResolutionTechniques" - }, - "RoleArn": { - "pattern": "^arn:(aws|aws-us-gov|aws-cn):iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "UpdatedAt": { - "$ref": "#/definitions/UpdatedAt" - }, - "WorkflowArn": { - "$ref": "#/definitions/MatchingWorkflowArn" - }, - "WorkflowName": { - "$ref": "#/definitions/EntityName", - "description": "The name of the MatchingWorkflow" - } - }, - "readOnlyProperties": [ - "/properties/WorkflowArn", - "/properties/UpdatedAt", - "/properties/CreatedAt" - ], - "required": [ - "WorkflowName", - "InputSourceConfig", - "OutputSourceConfig", - "ResolutionTechniques", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-entity-resolution.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EntityResolution::MatchingWorkflow" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/WorkflowName" + ], + "definitions": { + "AttributeName": { + "maxLength": 255, + "minLength": 0, + "pattern": "^[a-zA-Z_0-9- \\t]*$", + "type": "string" + }, + "CreatedAt": { + "description": "The time of this MatchingWorkflow got created", + "type": "string" + }, + "Description": { + "maxLength": 255, + "minLength": 0, + "type": "string" + }, + "EntityName": { + "maxLength": 255, + "minLength": 0, + "pattern": "^[a-zA-Z_0-9-]*$", + "type": "string" + }, + "IncrementalRunConfig": { + "additionalProperties": false, + "properties": { + "IncrementalRunType": { + "enum": [ + "IMMEDIATE" + ], + "type": "string" + } + }, + "required": [ + "IncrementalRunType" + ], + "type": "object" + }, + "InputSource": { + "additionalProperties": false, + "properties": { + "ApplyNormalization": { + "type": "boolean" + }, + "InputSourceARN": { + "description": "An Glue table ARN for the input source table", + "pattern": "arn:(aws|aws-us-gov|aws-cn):.*:.*:[0-9]+:.*$", + "type": "string" + }, + "SchemaArn": { + "$ref": "#/definitions/SchemaMappingArn", + "type": "string" + } + }, + "required": [ + "InputSourceARN", + "SchemaArn" + ], + "type": "object" + }, + "IntermediateSourceConfiguration": { + "additionalProperties": false, + "properties": { + "IntermediateS3Path": { + "description": "The s3 path that would be used to stage the intermediate data being generated during workflow execution.", + "type": "string" + } + }, + "required": [ + "IntermediateS3Path" + ], + "type": "object" + }, + "KMSArn": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn):kms:.*:[0-9]+:.*$", + "type": "string" + }, + "MatchingWorkflowArn": { + "description": "The default MatchingWorkflow arn", + "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:.*:[0-9]+:(matchingworkflow/.*)$", + "type": "string" + }, + "OutputAttribute": { + "additionalProperties": false, + "properties": { + "Hashed": { + "type": "boolean" + }, + "Name": { + "$ref": "#/definitions/AttributeName" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "OutputSource": { + "additionalProperties": false, + "properties": { + "ApplyNormalization": { + "type": "boolean" + }, + "KMSArn": { + "$ref": "#/definitions/KMSArn" + }, + "Output": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/OutputAttribute" + }, + "maxItems": 750, + "minItems": 0, + "type": "array" + }, + "OutputS3Path": { + "description": "The S3 path to which Entity Resolution will write the output table", + "pattern": "^s3://([^/]+)/?(.*?([^/]+)/?)$", + "type": "string" + } + }, + "required": [ + "Output", + "OutputS3Path" + ], + "type": "object" + }, + "ProviderProperties": { + "additionalProperties": false, + "properties": { + "IntermediateSourceConfiguration": { + "$ref": "#/definitions/IntermediateSourceConfiguration" + }, + "ProviderConfiguration": { + "additionalProperties": false, + "description": "Additional Provider configuration that would be required for the provider service. The Configuration must be in JSON string format", + "patternProperties": { + "^.+$": { + "type": "string" + } + }, + "type": "object" + }, + "ProviderServiceArn": { + "description": "Arn of the Provider service being used.", + "type": "string" + } + }, + "required": [ + "ProviderServiceArn" + ], + "type": "object" + }, + "ResolutionTechniques": { + "additionalProperties": false, + "properties": { + "ProviderProperties": { + "$ref": "#/definitions/ProviderProperties" + }, + "ResolutionType": { + "$ref": "#/definitions/ResolutionType" + }, + "RuleBasedProperties": { + "$ref": "#/definitions/RuleBasedProperties" + } + }, + "type": "object" + }, + "ResolutionType": { + "enum": [ + "RULE_MATCHING", + "ML_MATCHING", + "PROVIDER" + ], + "type": "string" + }, + "Rule": { + "additionalProperties": false, + "properties": { + "MatchingKeys": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AttributeName" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + }, + "RuleName": { + "maxLength": 255, + "minLength": 0, + "pattern": "^[a-zA-Z_0-9- \\t]*$", + "type": "string" + } + }, + "required": [ + "RuleName", + "MatchingKeys" + ], + "type": "object" + }, + "RuleBasedProperties": { + "additionalProperties": false, + "properties": { + "AttributeMatchingModel": { + "enum": [ + "ONE_TO_ONE", + "MANY_TO_MANY" + ], + "type": "string" + }, + "MatchPurpose": { + "enum": [ + "IDENTIFIER_GENERATION", + "INDEXING" + ], + "type": "string" + }, + "Rules": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Rule" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "AttributeMatchingModel", + "Rules" + ], + "type": "object" + }, + "SchemaMappingArn": { + "description": "The SchemaMapping arn associated with the Schema", + "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:.*:[0-9]+:(schemamapping/.*)$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UpdatedAt": { + "description": "The time of this MatchingWorkflow got last updated at", + "type": "string" + } + }, + "description": "MatchingWorkflow defined in AWS Entity Resolution service", + "handlers": { + "create": { + "permissions": [ + "entityresolution:CreateMatchingWorkflow", + "entityresolution:GetMatchingWorkflow", + "entityresolution:TagResource", + "kms:CreateGrant", + "kms:DescribeKey", + "iam:PassRole", + "events:PutRule", + "events:DeleteRule", + "events:PutTargets", + "events:ListTargetsByRule" + ] + }, + "delete": { + "permissions": [ + "entityresolution:DeleteMatchingWorkflow", + "entityresolution:GetMatchingWorkflow", + "entityresolution:UntagResource", + "events:PutRule", + "events:DeleteRule", + "events:PutTargets", + "events:RemoveTargets", + "events:ListTargetsByRule" + ] + }, + "list": { + "permissions": [ + "entityresolution:ListMatchingWorkflows" + ] + }, + "read": { + "permissions": [ + "entityresolution:GetMatchingWorkflow", + "entityresolution:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "entityresolution:GetMatchingWorkflow", + "entityresolution:UpdateMatchingWorkflow", + "entityresolution:ListTagsForResource", + "entityresolution:TagResource", + "entityresolution:UntagResource", + "iam:PassRole", + "kms:CreateGrant", + "kms:DescribeKey", + "events:PutRule", + "events:DeleteRule", + "events:PutTargets", + "events:RemoveTargets", + "events:ListTargetsByRule" + ] + } + }, + "primaryIdentifier": [ + "/properties/WorkflowName" + ], + "properties": { + "CreatedAt": { + "$ref": "#/definitions/CreatedAt" + }, + "Description": { + "$ref": "#/definitions/Description", + "description": "The description of the MatchingWorkflow" + }, + "IncrementalRunConfig": { + "$ref": "#/definitions/IncrementalRunConfig" + }, + "InputSourceConfig": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InputSource" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "OutputSourceConfig": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/OutputSource" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "ResolutionTechniques": { + "$ref": "#/definitions/ResolutionTechniques" + }, + "RoleArn": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn):iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "UpdatedAt": { + "$ref": "#/definitions/UpdatedAt" + }, + "WorkflowArn": { + "$ref": "#/definitions/MatchingWorkflowArn" + }, + "WorkflowName": { + "$ref": "#/definitions/EntityName", + "description": "The name of the MatchingWorkflow" + } + }, + "readOnlyProperties": [ + "/properties/WorkflowArn", + "/properties/UpdatedAt", + "/properties/CreatedAt" + ], + "required": [ + "WorkflowName", + "InputSourceConfig", + "OutputSourceConfig", + "ResolutionTechniques", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-entity-resolution.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "entityresolution:TagResource", + "entityresolution:UntagResource", + "entityresolution:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EntityResolution::MatchingWorkflow" +} diff --git a/src/schema/aws-entityresolution-policystatement.json b/src/schema/aws-entityresolution-policystatement.json index c159b872..2c5aec49 100644 --- a/src/schema/aws-entityresolution-policystatement.json +++ b/src/schema/aws-entityresolution-policystatement.json @@ -1,133 +1,133 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StatementId", - "/properties/Arn" - ], - "definitions": { - "StatementAction": { - "maxLength": 64, - "minLength": 3, - "pattern": "^(entityresolution:[a-zA-Z0-9]+)$", - "type": "string" - }, - "StatementActionList": { - "items": { - "$ref": "#/definitions/StatementAction" - }, - "type": "array" - }, - "StatementCondition": { - "maxLength": 40960, - "minLength": 1, - "type": "string" - }, - "StatementEffect": { - "enum": [ - "Allow", - "Deny" - ], - "type": "string" - }, - "StatementId": { - "description": "The Statement Id of the policy statement that is being attached.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[0-9A-Za-z]+$", - "type": "string" - }, - "StatementPrincipal": { - "maxLength": 64, - "minLength": 12, - "pattern": "^(\\\\d{12})|([a-z0-9\\\\.]+)$", - "type": "string" - }, - "StatementPrincipalList": { - "items": { - "$ref": "#/definitions/StatementPrincipal" - }, - "type": "array" - }, - "VeniceGlobalArn": { - "description": "Arn of the resource to which the policy statement is being attached.", - "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:((schemamapping|matchingworkflow|idmappingworkflow|idnamespace)/[a-zA-Z_0-9-]{1,255})$", - "type": "string" - } - }, - "description": "Policy Statement defined in AWS Entity Resolution Service", - "handlers": { - "create": { - "permissions": [ - "entityresolution:AddPolicyStatement" - ] - }, - "delete": { - "permissions": [ - "entityresolution:DeletePolicyStatement", - "entityresolution:GetPolicy" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Arn": { - "$ref": "resource-schema.json#/properties/Arn" - } - }, - "required": [ - "Arn" - ] - }, - "permissions": [ - "entityresolution:GetPolicy" - ] - }, - "read": { - "permissions": [ - "entityresolution:GetPolicy" - ] - }, - "update": { - "permissions": [ - "entityresolution:AddPolicyStatement", - "entityresolution:DeletePolicyStatement" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn", - "/properties/StatementId" - ], - "properties": { - "Action": { - "$ref": "#/definitions/StatementActionList" - }, - "Arn": { - "$ref": "#/definitions/VeniceGlobalArn" - }, - "Condition": { - "$ref": "#/definitions/StatementCondition" - }, - "Effect": { - "$ref": "#/definitions/StatementEffect" - }, - "Principal": { - "$ref": "#/definitions/StatementPrincipalList" - }, - "StatementId": { - "$ref": "#/definitions/StatementId" - } - }, - "required": [ - "Arn", - "StatementId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-entity-resolution.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EntityResolution::PolicyStatement" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StatementId", + "/properties/Arn" + ], + "definitions": { + "StatementAction": { + "maxLength": 64, + "minLength": 3, + "pattern": "^(entityresolution:[a-zA-Z0-9]+)$", + "type": "string" + }, + "StatementActionList": { + "items": { + "$ref": "#/definitions/StatementAction" + }, + "type": "array" + }, + "StatementCondition": { + "maxLength": 40960, + "minLength": 1, + "type": "string" + }, + "StatementEffect": { + "enum": [ + "Allow", + "Deny" + ], + "type": "string" + }, + "StatementId": { + "description": "The Statement Id of the policy statement that is being attached.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9A-Za-z]+$", + "type": "string" + }, + "StatementPrincipal": { + "maxLength": 64, + "minLength": 12, + "pattern": "^(\\\\d{12})|([a-z0-9\\\\.]+)$", + "type": "string" + }, + "StatementPrincipalList": { + "items": { + "$ref": "#/definitions/StatementPrincipal" + }, + "type": "array" + }, + "VeniceGlobalArn": { + "description": "Arn of the resource to which the policy statement is being attached.", + "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:((schemamapping|matchingworkflow|idmappingworkflow|idnamespace)/[a-zA-Z_0-9-]{1,255})$", + "type": "string" + } + }, + "description": "Policy Statement defined in AWS Entity Resolution Service", + "handlers": { + "create": { + "permissions": [ + "entityresolution:AddPolicyStatement" + ] + }, + "delete": { + "permissions": [ + "entityresolution:DeletePolicyStatement", + "entityresolution:GetPolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Arn": { + "$ref": "resource-schema.json#/properties/Arn" + } + }, + "required": [ + "Arn" + ] + }, + "permissions": [ + "entityresolution:GetPolicy" + ] + }, + "read": { + "permissions": [ + "entityresolution:GetPolicy" + ] + }, + "update": { + "permissions": [ + "entityresolution:AddPolicyStatement", + "entityresolution:DeletePolicyStatement" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn", + "/properties/StatementId" + ], + "properties": { + "Action": { + "$ref": "#/definitions/StatementActionList" + }, + "Arn": { + "$ref": "#/definitions/VeniceGlobalArn" + }, + "Condition": { + "$ref": "#/definitions/StatementCondition" + }, + "Effect": { + "$ref": "#/definitions/StatementEffect" + }, + "Principal": { + "$ref": "#/definitions/StatementPrincipalList" + }, + "StatementId": { + "$ref": "#/definitions/StatementId" + } + }, + "required": [ + "Arn", + "StatementId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-entity-resolution.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EntityResolution::PolicyStatement" +} diff --git a/src/schema/aws-entityresolution-schemamapping.json b/src/schema/aws-entityresolution-schemamapping.json index 2ff3ff25..0f89ef26 100644 --- a/src/schema/aws-entityresolution-schemamapping.json +++ b/src/schema/aws-entityresolution-schemamapping.json @@ -1,225 +1,230 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SchemaName" - ], - "definitions": { - "AttributeName": { - "maxLength": 255, - "minLength": 0, - "pattern": "^[a-zA-Z_0-9- \\t]*$", - "type": "string" - }, - "CreatedAt": { - "description": "The time of this SchemaMapping got created", - "type": "string" - }, - "Description": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "EntityName": { - "maxLength": 255, - "minLength": 0, - "pattern": "^[a-zA-Z_0-9-]*$", - "type": "string" - }, - "HasWorkflows": { - "description": "The boolean value that indicates whether or not a SchemaMapping has MatchingWorkflows that are associated with", - "type": "boolean" - }, - "Hashed": { - "type": "boolean" - }, - "MappedInputFields": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SchemaInputAttribute" - }, - "maxItems": 35, - "minItems": 2, - "type": "array" - }, - "SchemaAttributeType": { - "enum": [ - "NAME", - "NAME_FIRST", - "NAME_MIDDLE", - "NAME_LAST", - "ADDRESS", - "ADDRESS_STREET1", - "ADDRESS_STREET2", - "ADDRESS_STREET3", - "ADDRESS_CITY", - "ADDRESS_STATE", - "ADDRESS_COUNTRY", - "ADDRESS_POSTALCODE", - "PHONE", - "PHONE_NUMBER", - "PHONE_COUNTRYCODE", - "EMAIL_ADDRESS", - "UNIQUE_ID", - "DATE", - "STRING", - "PROVIDER_ID" - ], - "type": "string" - }, - "SchemaInputAttribute": { - "additionalProperties": false, - "properties": { - "FieldName": { - "$ref": "#/definitions/AttributeName" - }, - "GroupName": { - "$ref": "#/definitions/AttributeName" - }, - "Hashed": { - "$ref": "#/definitions/Hashed" - }, - "MatchKey": { - "$ref": "#/definitions/AttributeName" - }, - "SubType": { - "description": "The subtype of the Attribute. Would be required only when type is PROVIDER_ID", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SchemaAttributeType" - } - }, - "required": [ - "FieldName", - "Type" - ], - "type": "object" - }, - "SchemaMappingArn": { - "description": "The SchemaMapping arn associated with the Schema", - "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:.*:[0-9]+:(schemamapping/.*)$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UpdatedAt": { - "description": "The time of this SchemaMapping got last updated at", - "type": "string" - } - }, - "description": "SchemaMapping defined in AWS Entity Resolution service", - "handlers": { - "create": { - "permissions": [ - "entityresolution:CreateSchemaMapping", - "entityresolution:GetSchemaMapping", - "entityresolution:TagResource" - ] - }, - "delete": { - "permissions": [ - "entityresolution:DeleteSchemaMapping", - "entityresolution:GetSchemaMapping" - ] - }, - "list": { - "permissions": [ - "entityresolution:ListSchemaMappings" - ] - }, - "read": { - "permissions": [ - "entityresolution:GetSchemaMapping", - "entityresolution:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "entityresolution:GetSchemaMapping", - "entityresolution:UpdateSchemaMapping", - "entityresolution:ListTagsForResource", - "entityresolution:TagResource", - "entityresolution:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/SchemaName" - ], - "properties": { - "CreatedAt": { - "$ref": "#/definitions/CreatedAt" - }, - "Description": { - "$ref": "#/definitions/Description", - "description": "The description of the SchemaMapping" - }, - "HasWorkflows": { - "$ref": "#/definitions/HasWorkflows" - }, - "MappedInputFields": { - "$ref": "#/definitions/MappedInputFields", - "description": "The SchemaMapping attributes input" - }, - "SchemaArn": { - "$ref": "#/definitions/SchemaMappingArn" - }, - "SchemaName": { - "$ref": "#/definitions/EntityName", - "description": "The name of the SchemaMapping" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "UpdatedAt": { - "$ref": "#/definitions/UpdatedAt" - } - }, - "readOnlyProperties": [ - "/properties/SchemaArn", - "/properties/CreatedAt", - "/properties/UpdatedAt", - "/properties/HasWorkflows" - ], - "required": [ - "SchemaName", - "MappedInputFields" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-entity-resolution.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EntityResolution::SchemaMapping" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SchemaName" + ], + "definitions": { + "AttributeName": { + "maxLength": 255, + "minLength": 0, + "pattern": "^[a-zA-Z_0-9- \\t]*$", + "type": "string" + }, + "CreatedAt": { + "description": "The time of this SchemaMapping got created", + "type": "string" + }, + "Description": { + "maxLength": 255, + "minLength": 0, + "type": "string" + }, + "EntityName": { + "maxLength": 255, + "minLength": 0, + "pattern": "^[a-zA-Z_0-9-]*$", + "type": "string" + }, + "HasWorkflows": { + "description": "The boolean value that indicates whether or not a SchemaMapping has MatchingWorkflows that are associated with", + "type": "boolean" + }, + "Hashed": { + "type": "boolean" + }, + "MappedInputFields": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SchemaInputAttribute" + }, + "maxItems": 35, + "minItems": 2, + "type": "array" + }, + "SchemaAttributeType": { + "enum": [ + "NAME", + "NAME_FIRST", + "NAME_MIDDLE", + "NAME_LAST", + "ADDRESS", + "ADDRESS_STREET1", + "ADDRESS_STREET2", + "ADDRESS_STREET3", + "ADDRESS_CITY", + "ADDRESS_STATE", + "ADDRESS_COUNTRY", + "ADDRESS_POSTALCODE", + "PHONE", + "PHONE_NUMBER", + "PHONE_COUNTRYCODE", + "EMAIL_ADDRESS", + "UNIQUE_ID", + "DATE", + "STRING", + "PROVIDER_ID" + ], + "type": "string" + }, + "SchemaInputAttribute": { + "additionalProperties": false, + "properties": { + "FieldName": { + "$ref": "#/definitions/AttributeName" + }, + "GroupName": { + "$ref": "#/definitions/AttributeName" + }, + "Hashed": { + "$ref": "#/definitions/Hashed" + }, + "MatchKey": { + "$ref": "#/definitions/AttributeName" + }, + "SubType": { + "description": "The subtype of the Attribute. Would be required only when type is PROVIDER_ID", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SchemaAttributeType" + } + }, + "required": [ + "FieldName", + "Type" + ], + "type": "object" + }, + "SchemaMappingArn": { + "description": "The SchemaMapping arn associated with the Schema", + "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:.*:[0-9]+:(schemamapping/.*)$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UpdatedAt": { + "description": "The time of this SchemaMapping got last updated at", + "type": "string" + } + }, + "description": "SchemaMapping defined in AWS Entity Resolution service", + "handlers": { + "create": { + "permissions": [ + "entityresolution:CreateSchemaMapping", + "entityresolution:GetSchemaMapping", + "entityresolution:TagResource" + ] + }, + "delete": { + "permissions": [ + "entityresolution:DeleteSchemaMapping", + "entityresolution:GetSchemaMapping" + ] + }, + "list": { + "permissions": [ + "entityresolution:ListSchemaMappings" + ] + }, + "read": { + "permissions": [ + "entityresolution:GetSchemaMapping", + "entityresolution:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "entityresolution:GetSchemaMapping", + "entityresolution:UpdateSchemaMapping", + "entityresolution:ListTagsForResource", + "entityresolution:TagResource", + "entityresolution:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/SchemaName" + ], + "properties": { + "CreatedAt": { + "$ref": "#/definitions/CreatedAt" + }, + "Description": { + "$ref": "#/definitions/Description", + "description": "The description of the SchemaMapping" + }, + "HasWorkflows": { + "$ref": "#/definitions/HasWorkflows" + }, + "MappedInputFields": { + "$ref": "#/definitions/MappedInputFields", + "description": "The SchemaMapping attributes input" + }, + "SchemaArn": { + "$ref": "#/definitions/SchemaMappingArn" + }, + "SchemaName": { + "$ref": "#/definitions/EntityName", + "description": "The name of the SchemaMapping" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "UpdatedAt": { + "$ref": "#/definitions/UpdatedAt" + } + }, + "readOnlyProperties": [ + "/properties/SchemaArn", + "/properties/CreatedAt", + "/properties/UpdatedAt", + "/properties/HasWorkflows" + ], + "required": [ + "SchemaName", + "MappedInputFields" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-entity-resolution.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "entityresolution:TagResource", + "entityresolution:UntagResource", + "entityresolution:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EntityResolution::SchemaMapping" +} diff --git a/src/schema/aws-events-apidestination.json b/src/schema/aws-events-apidestination.json index 86e23afe..ca9925b1 100644 --- a/src/schema/aws-events-apidestination.json +++ b/src/schema/aws-events-apidestination.json @@ -1,99 +1,105 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "description": "Resource Type definition for AWS::Events::ApiDestination.", - "handlers": { - "create": { - "permissions": [ - "events:CreateApiDestination", - "events:DescribeApiDestination" - ] - }, - "delete": { - "permissions": [ - "events:DeleteApiDestination", - "events:DescribeApiDestination" - ] - }, - "list": { - "permissions": [ - "events:ListApiDestinations" - ] - }, - "read": { - "permissions": [ - "events:DescribeApiDestination" - ] - }, - "update": { - "permissions": [ - "events:UpdateApiDestination", - "events:DescribeApiDestination" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "description": "The arn of the api destination.", - "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:api-destination/[\\.\\-_A-Za-z0-9]+/[\\-A-Za-z0-9]+$", - "type": "string" - }, - "ConnectionArn": { - "description": "The arn of the connection.", - "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection/[\\.\\-_A-Za-z0-9]+/[\\-A-Za-z0-9]+$", - "type": "string" - }, - "Description": { - "maxLength": 512, - "type": "string" - }, - "HttpMethod": { - "enum": [ - "GET", - "HEAD", - "POST", - "OPTIONS", - "PUT", - "DELETE", - "PATCH" - ], - "type": "string" - }, - "InvocationEndpoint": { - "description": "Url endpoint to invoke.", - "pattern": "^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$", - "type": "string" - }, - "InvocationRateLimitPerSecond": { - "minimum": 1, - "type": "integer" - }, - "Name": { - "description": "Name of the apiDestination.", - "maxLength": 64, - "minLength": 1, - "pattern": "[\\.\\-_A-Za-z0-9]+", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "ConnectionArn", - "InvocationEndpoint", - "HttpMethod" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Events::ApiDestination" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "description": "Resource Type definition for AWS::Events::ApiDestination.", + "handlers": { + "create": { + "permissions": [ + "events:CreateApiDestination", + "events:DescribeApiDestination" + ] + }, + "delete": { + "permissions": [ + "events:DeleteApiDestination", + "events:DescribeApiDestination" + ] + }, + "list": { + "permissions": [ + "events:ListApiDestinations" + ] + }, + "read": { + "permissions": [ + "events:DescribeApiDestination" + ] + }, + "update": { + "permissions": [ + "events:UpdateApiDestination", + "events:DescribeApiDestination" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "description": "The arn of the api destination.", + "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:api-destination/[\\.\\-_A-Za-z0-9]+/[\\-A-Za-z0-9]+$", + "type": "string" + }, + "ArnForPolicy": { + "description": "The arn of the api destination to be used in IAM policies.", + "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:api-destination/[\\.\\-_A-Za-z0-9]+$", + "type": "string" + }, + "ConnectionArn": { + "description": "The arn of the connection.", + "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection/[\\.\\-_A-Za-z0-9]+/[\\-A-Za-z0-9]+$", + "type": "string" + }, + "Description": { + "maxLength": 512, + "type": "string" + }, + "HttpMethod": { + "enum": [ + "GET", + "HEAD", + "POST", + "OPTIONS", + "PUT", + "DELETE", + "PATCH" + ], + "type": "string" + }, + "InvocationEndpoint": { + "description": "Url endpoint to invoke.", + "pattern": "^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$", + "type": "string" + }, + "InvocationRateLimitPerSecond": { + "minimum": 1, + "type": "integer" + }, + "Name": { + "description": "Name of the apiDestination.", + "maxLength": 64, + "minLength": 1, + "pattern": "[\\.\\-_A-Za-z0-9]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ArnForPolicy" + ], + "required": [ + "ConnectionArn", + "InvocationEndpoint", + "HttpMethod" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Events::ApiDestination" +} diff --git a/src/schema/aws-events-archive.json b/src/schema/aws-events-archive.json index 2c0dd190..76b65b66 100644 --- a/src/schema/aws-events-archive.json +++ b/src/schema/aws-events-archive.json @@ -1,78 +1,92 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ArchiveName", - "/properties/SourceArn" - ], - "description": "Resource Type definition for AWS::Events::Archive", - "handlers": { - "create": { - "permissions": [ - "events:DescribeArchive", - "events:CreateArchive" - ] - }, - "delete": { - "permissions": [ - "events:DescribeArchive", - "events:DeleteArchive" - ] - }, - "list": { - "permissions": [ - "events:ListArchives" - ] - }, - "read": { - "permissions": [ - "events:DescribeArchive" - ] - }, - "update": { - "permissions": [ - "events:DescribeArchive", - "events:UpdateArchive" - ] - } - }, - "primaryIdentifier": [ - "/properties/ArchiveName" - ], - "properties": { - "ArchiveName": { - "maxLength": 48, - "minLength": 1, - "pattern": "[\\.\\-_A-Za-z0-9]+", - "type": "string" - }, - "Arn": { - "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:.+\\/.+$", - "type": "string" - }, - "Description": { - "type": "string" - }, - "EventPattern": { - "type": "object" - }, - "RetentionDays": { - "type": "integer" - }, - "SourceArn": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "SourceArn" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Events::Archive" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ArchiveName", + "/properties/SourceArn" + ], + "description": "Resource Type definition for AWS::Events::Archive", + "handlers": { + "create": { + "permissions": [ + "events:DescribeArchive", + "events:CreateArchive", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "events:DescribeArchive", + "events:DeleteArchive" + ] + }, + "list": { + "permissions": [ + "events:ListArchives" + ] + }, + "read": { + "permissions": [ + "events:DescribeArchive", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "events:DescribeArchive", + "events:UpdateArchive", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt", + "kms:ReEncryptTo", + "kms:ReEncryptFrom" + ] + } + }, + "primaryIdentifier": [ + "/properties/ArchiveName" + ], + "properties": { + "ArchiveName": { + "maxLength": 48, + "minLength": 1, + "pattern": "[\\.\\-_A-Za-z0-9]+", + "type": "string" + }, + "Arn": { + "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:.+\\/.+$", + "type": "string" + }, + "Description": { + "type": "string" + }, + "EventPattern": { + "type": "object" + }, + "KmsKeyIdentifier": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "RetentionDays": { + "type": "integer" + }, + "SourceArn": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "SourceArn" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Events::Archive" +} diff --git a/src/schema/aws-events-connection.json b/src/schema/aws-events-connection.json index e0818d26..901b188f 100644 --- a/src/schema/aws-events-connection.json +++ b/src/schema/aws-events-connection.json @@ -1,272 +1,339 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "ApiKeyAuthParameters": { - "additionalProperties": false, - "properties": { - "ApiKeyName": { - "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", - "type": "string" - }, - "ApiKeyValue": { - "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", - "type": "string" - } - }, - "required": [ - "ApiKeyName", - "ApiKeyValue" - ], - "type": "object" - }, - "AuthParameters": { - "additionalProperties": false, - "maxProperties": 2, - "minProperties": 1, - "oneOf": [ - { - "required": [ - "BasicAuthParameters" - ] - }, - { - "required": [ - "OAuthParameters" - ] - }, - { - "required": [ - "ApiKeyAuthParameters" - ] - } - ], - "properties": { - "ApiKeyAuthParameters": { - "$ref": "#/definitions/ApiKeyAuthParameters" - }, - "BasicAuthParameters": { - "$ref": "#/definitions/BasicAuthParameters" - }, - "InvocationHttpParameters": { - "$ref": "#/definitions/ConnectionHttpParameters" - }, - "OAuthParameters": { - "$ref": "#/definitions/OAuthParameters" - } - }, - "type": "object" - }, - "BasicAuthParameters": { - "additionalProperties": false, - "properties": { - "Password": { - "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", - "type": "string" - }, - "Username": { - "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", - "type": "string" - } - }, - "required": [ - "Username", - "Password" - ], - "type": "object" - }, - "ClientParameters": { - "additionalProperties": false, - "properties": { - "ClientID": { - "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", - "type": "string" - }, - "ClientSecret": { - "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", - "type": "string" - } - }, - "required": [ - "ClientID", - "ClientSecret" - ], - "type": "object" - }, - "ConnectionHttpParameters": { - "additionalProperties": false, - "properties": { - "BodyParameters": { - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array" - }, - "HeaderParameters": { - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array" - }, - "QueryStringParameters": { - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array" - } - }, - "type": "object" - }, - "OAuthParameters": { - "additionalProperties": false, - "properties": { - "AuthorizationEndpoint": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$", - "type": "string" - }, - "ClientParameters": { - "$ref": "#/definitions/ClientParameters" - }, - "HttpMethod": { - "enum": [ - "GET", - "POST", - "PUT" - ], - "type": "string" - }, - "OAuthHttpParameters": { - "$ref": "#/definitions/ConnectionHttpParameters" - } - }, - "required": [ - "ClientParameters", - "AuthorizationEndpoint", - "HttpMethod" - ], - "type": "object" - }, - "Parameter": { - "additionalProperties": false, - "properties": { - "IsValueSecret": { - "default": true, - "type": "boolean" - }, - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Events::Connection.", - "handlers": { - "create": { - "permissions": [ - "events:CreateConnection", - "events:DescribeConnection", - "secretsmanager:CreateSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:PutSecretValue", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "events:DeleteConnection", - "events:DescribeConnection" - ] - }, - "list": { - "permissions": [ - "events:ListConnections" - ] - }, - "read": { - "permissions": [ - "events:DescribeConnection" - ] - }, - "update": { - "permissions": [ - "events:UpdateConnection", - "events:DescribeConnection", - "secretsmanager:CreateSecret", - "secretsmanager:UpdateSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:PutSecretValue" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "description": "The arn of the connection resource.", - "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection\\/[\\.\\-_A-Za-z0-9]+\\/[\\-A-Za-z0-9]+$", - "type": "string" - }, - "AuthParameters": { - "$ref": "#/definitions/AuthParameters" - }, - "AuthorizationType": { - "enum": [ - "API_KEY", - "BASIC", - "OAUTH_CLIENT_CREDENTIALS" - ], - "type": "string" - }, - "Description": { - "description": "Description of the connection.", - "maxLength": 512, - "type": "string" - }, - "Name": { - "description": "Name of the connection.", - "maxLength": 64, - "minLength": 1, - "pattern": "[\\.\\-_A-Za-z0-9]+", - "type": "string" - }, - "SecretArn": { - "description": "The arn of the secrets manager secret created in the customer account.", - "pattern": "^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]|\\d|\\-)*:([0-9]{12})?:secret:([a-z]|\\d|\\-)*(!)*[\\/_+=\\.@\\-A-Za-z0-9]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/SecretArn", - "/properties/AuthParameters/ConnectivityParameters/ResourceParameters/ResourceAssociationIdentifier" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Events::Connection", - "writeOnlyProperties": [ - "/properties/AuthParameters/BasicAuthParameters/Password", - "/properties/AuthParameters/ApiKeyAuthParameters/ApiKeyValue", - "/properties/AuthParameters/OAuthParameters/ClientParameters/ClientSecret", - "/properties/AuthParameters/OAuthParameters/OAuthHttpParameters/HeaderParameters", - "/properties/AuthParameters/OAuthParameters/OAuthHttpParameters/QueryStringParameters", - "/properties/AuthParameters/OAuthParameters/OAuthHttpParameters/BodyParameters", - "/properties/AuthParameters/InvocationHttpParameters" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "ApiKeyAuthParameters": { + "additionalProperties": false, + "properties": { + "ApiKeyName": { + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", + "type": "string" + }, + "ApiKeyValue": { + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", + "type": "string" + } + }, + "required": [ + "ApiKeyName", + "ApiKeyValue" + ], + "type": "object" + }, + "AuthParameters": { + "additionalProperties": false, + "maxProperties": 2, + "minProperties": 1, + "oneOf": [ + { + "required": [ + "BasicAuthParameters" + ] + }, + { + "required": [ + "OAuthParameters" + ] + }, + { + "required": [ + "ApiKeyAuthParameters" + ] + } + ], + "properties": { + "ApiKeyAuthParameters": { + "$ref": "#/definitions/ApiKeyAuthParameters" + }, + "BasicAuthParameters": { + "$ref": "#/definitions/BasicAuthParameters" + }, + "ConnectivityParameters": { + "$ref": "#/definitions/ConnectivityParameters" + }, + "InvocationHttpParameters": { + "$ref": "#/definitions/ConnectionHttpParameters" + }, + "OAuthParameters": { + "$ref": "#/definitions/OAuthParameters" + } + }, + "type": "object" + }, + "BasicAuthParameters": { + "additionalProperties": false, + "properties": { + "Password": { + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", + "type": "string" + }, + "Username": { + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", + "type": "string" + } + }, + "required": [ + "Username", + "Password" + ], + "type": "object" + }, + "ClientParameters": { + "additionalProperties": false, + "properties": { + "ClientID": { + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", + "type": "string" + }, + "ClientSecret": { + "pattern": "^[ \\t]*[^\\x00-\\x1F\\x7F]+([ \\t]+[^\\x00-\\x1F\\x7F]+)*[ \\t]*$", + "type": "string" + } + }, + "required": [ + "ClientID", + "ClientSecret" + ], + "type": "object" + }, + "ConnectionHttpParameters": { + "additionalProperties": false, + "properties": { + "BodyParameters": { + "items": { + "$ref": "#/definitions/Parameter" + }, + "type": "array" + }, + "HeaderParameters": { + "items": { + "$ref": "#/definitions/Parameter" + }, + "type": "array" + }, + "QueryStringParameters": { + "items": { + "$ref": "#/definitions/Parameter" + }, + "type": "array" + } + }, + "type": "object" + }, + "ConnectivityParameters": { + "additionalProperties": false, + "properties": { + "ResourceParameters": { + "$ref": "#/definitions/ResourceParameters" + } + }, + "required": [ + "ResourceParameters" + ], + "type": "object" + }, + "OAuthParameters": { + "additionalProperties": false, + "properties": { + "AuthorizationEndpoint": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$", + "type": "string" + }, + "ClientParameters": { + "$ref": "#/definitions/ClientParameters" + }, + "HttpMethod": { + "enum": [ + "GET", + "POST", + "PUT" + ], + "type": "string" + }, + "OAuthHttpParameters": { + "$ref": "#/definitions/ConnectionHttpParameters" + } + }, + "required": [ + "ClientParameters", + "AuthorizationEndpoint", + "HttpMethod" + ], + "type": "object" + }, + "Parameter": { + "additionalProperties": false, + "properties": { + "IsValueSecret": { + "default": true, + "type": "boolean" + }, + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "ResourceParameters": { + "additionalProperties": false, + "properties": { + "ResourceAssociationArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkresourceassociation/snra-[0-9a-z]{17}$", + "type": "string" + }, + "ResourceConfigurationArn": { + "maxLength": 2048, + "pattern": "^arn:[a-z0-9f\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:resourceconfiguration/rcfg-[0-9a-z]{17}$", + "type": "string" + } + }, + "required": [ + "ResourceConfigurationArn" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Events::Connection.", + "handlers": { + "create": { + "permissions": [ + "events:CreateConnection", + "events:DescribeConnection", + "secretsmanager:CreateSecret", + "secretsmanager:GetSecretValue", + "secretsmanager:PutSecretValue", + "iam:CreateServiceLinkedRole", + "kms:DescribeKey", + "kms:GenerateDataKey" + ] + }, + "delete": { + "permissions": [ + "events:DeleteConnection", + "events:DescribeConnection" + ] + }, + "list": { + "permissions": [ + "events:ListConnections" + ] + }, + "read": { + "permissions": [ + "events:DescribeConnection", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "events:UpdateConnection", + "events:DescribeConnection", + "secretsmanager:CreateSecret", + "secretsmanager:UpdateSecret", + "secretsmanager:GetSecretValue", + "secretsmanager:PutSecretValue", + "kms:Decrypt", + "kms:DescribeKey", + "kms:Encrypt", + "kms:GenerateDataKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "description": "The arn of the connection resource.", + "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection\\/[\\.\\-_A-Za-z0-9]+\\/[\\-A-Za-z0-9]+$", + "type": "string" + }, + "ArnForPolicy": { + "description": "The arn of the connection resource to be used in IAM policies.", + "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection\\/[\\.\\-_A-Za-z0-9]+$", + "type": "string" + }, + "AuthParameters": { + "$ref": "#/definitions/AuthParameters" + }, + "AuthorizationType": { + "enum": [ + "API_KEY", + "BASIC", + "OAUTH_CLIENT_CREDENTIALS" + ], + "type": "string" + }, + "Description": { + "description": "Description of the connection.", + "maxLength": 512, + "type": "string" + }, + "InvocationConnectivityParameters": { + "additionalProperties": false, + "description": "The private resource the HTTP request will be sent to.", + "properties": { + "ResourceParameters": { + "$ref": "#/definitions/ResourceParameters" + } + }, + "required": [ + "ResourceParameters" + ], + "type": "object" + }, + "KmsKeyIdentifier": { + "maxLength": 2048, + "pattern": "^[a-zA-Z0-9_\\-/:]*$", + "type": "string" + }, + "Name": { + "description": "Name of the connection.", + "maxLength": 64, + "minLength": 1, + "pattern": "[\\.\\-_A-Za-z0-9]+", + "type": "string" + }, + "SecretArn": { + "description": "The arn of the secrets manager secret created in the customer account.", + "pattern": "^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]|\\d|\\-)*:([0-9]{12})?:secret:([a-z]|\\d|\\-)*(!)*[\\/_+=\\.@\\-A-Za-z0-9]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ArnForPolicy", + "/properties/SecretArn", + "/properties/AuthParameters/ConnectivityParameters/ResourceParameters/ResourceAssociationArn", + "/properties/InvocationConnectivityParameters/ResourceParameters/ResourceAssociationArn" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Events::Connection", + "writeOnlyProperties": [ + "/properties/AuthParameters/BasicAuthParameters/Password", + "/properties/AuthParameters/ApiKeyAuthParameters/ApiKeyValue", + "/properties/AuthParameters/OAuthParameters/ClientParameters/ClientSecret", + "/properties/AuthParameters/OAuthParameters/OAuthHttpParameters/HeaderParameters", + "/properties/AuthParameters/OAuthParameters/OAuthHttpParameters/QueryStringParameters", + "/properties/AuthParameters/OAuthParameters/OAuthHttpParameters/BodyParameters", + "/properties/AuthParameters/InvocationHttpParameters" + ] +} diff --git a/src/schema/aws-events-endpoint.json b/src/schema/aws-events-endpoint.json index cae04daf..73671fe4 100644 --- a/src/schema/aws-events-endpoint.json +++ b/src/schema/aws-events-endpoint.json @@ -1,238 +1,238 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "EndpointEventBus": { - "additionalProperties": false, - "properties": { - "EventBusArn": { - "$ref": "#/definitions/EventBusArn" - } - }, - "required": [ - "EventBusArn" - ], - "type": "object" - }, - "EventBusArn": { - "maxLength": 512, - "minLength": 1, - "pattern": "^arn:aws[a-z-]*:events:[a-z]{2}-[a-z-]+-\\d+:\\d{12}:event-bus/[\\w.-]+$", - "type": "string" - }, - "EventBuses": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EndpointEventBus" - }, - "maxItems": 2, - "minItems": 2, - "type": "array" - }, - "FailoverConfig": { - "additionalProperties": false, - "properties": { - "Primary": { - "$ref": "#/definitions/Primary" - }, - "Secondary": { - "$ref": "#/definitions/Secondary" - } - }, - "required": [ - "Primary", - "Secondary" - ], - "type": "object" - }, - "HealthCheck": { - "maxLength": 1600, - "minLength": 1, - "pattern": "^arn:aws([a-z]|\\-)*:route53:::healthcheck/[\\-a-z0-9]+$", - "type": "string" - }, - "Primary": { - "additionalProperties": false, - "properties": { - "HealthCheck": { - "$ref": "#/definitions/HealthCheck" - } - }, - "required": [ - "HealthCheck" - ], - "type": "object" - }, - "ReplicationConfig": { - "additionalProperties": false, - "properties": { - "State": { - "$ref": "#/definitions/ReplicationState" - } - }, - "required": [ - "State" - ], - "type": "object" - }, - "ReplicationState": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "Route": { - "maxLength": 20, - "minLength": 9, - "pattern": "^[\\-a-z0-9]+$", - "type": "string" - }, - "RoutingConfig": { - "additionalProperties": false, - "properties": { - "FailoverConfig": { - "$ref": "#/definitions/FailoverConfig" - } - }, - "required": [ - "FailoverConfig" - ], - "type": "object" - }, - "Secondary": { - "additionalProperties": false, - "properties": { - "Route": { - "$ref": "#/definitions/Route" - } - }, - "required": [ - "Route" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Events::Endpoint.", - "handlers": { - "create": { - "permissions": [ - "events:CreateEndpoint", - "events:DescribeEndpoint", - "route53:GetHealthCheck", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "events:DeleteEndpoint", - "events:DescribeEndpoint" - ] - }, - "list": { - "permissions": [ - "events:ListEndpoints" - ] - }, - "read": { - "permissions": [ - "events:DescribeEndpoint" - ] - }, - "update": { - "permissions": [ - "events:DescribeEndpoint", - "events:UpdateEndpoint", - "route53:GetHealthCheck", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "maxLength": 1600, - "minLength": 1, - "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:endpoint\\/[/\\.\\-_A-Za-z0-9]+$", - "type": "string" - }, - "Description": { - "maxLength": 512, - "pattern": ".*", - "type": "string" - }, - "EndpointId": { - "maxLength": 50, - "minLength": 1, - "pattern": "^[A-Za-z0-9\\-]+[\\.][A-Za-z0-9\\-]+$", - "type": "string" - }, - "EndpointUrl": { - "maxLength": 256, - "minLength": 1, - "pattern": "^(https://)?[\\.\\-a-z0-9]+$", - "type": "string" - }, - "EventBuses": { - "$ref": "#/definitions/EventBuses" - }, - "Name": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[\\.\\-_A-Za-z0-9]+$", - "type": "string" - }, - "ReplicationConfig": { - "$ref": "#/definitions/ReplicationConfig" - }, - "RoleArn": { - "maxLength": 256, - "minLength": 1, - "pattern": "^arn:aws[a-z-]*:iam::\\d{12}:role\\/[\\w+=,.@/-]+$", - "type": "string" - }, - "RoutingConfig": { - "$ref": "#/definitions/RoutingConfig" - }, - "State": { - "enum": [ - "ACTIVE", - "CREATING", - "UPDATING", - "DELETING", - "CREATE_FAILED", - "UPDATE_FAILED" - ], - "type": "string" - }, - "StateReason": { - "maxLength": 512, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/EndpointId", - "/properties/EndpointUrl", - "/properties/State", - "/properties/StateReason" - ], - "required": [ - "RoutingConfig", - "EventBuses" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-events.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Events::Endpoint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "EndpointEventBus": { + "additionalProperties": false, + "properties": { + "EventBusArn": { + "$ref": "#/definitions/EventBusArn" + } + }, + "required": [ + "EventBusArn" + ], + "type": "object" + }, + "EventBusArn": { + "maxLength": 512, + "minLength": 1, + "pattern": "^arn:aws[a-z-]*:events:[a-z]{2}-[a-z-]+-\\d+:\\d{12}:event-bus/[\\w.-]+$", + "type": "string" + }, + "EventBuses": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EndpointEventBus" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + "FailoverConfig": { + "additionalProperties": false, + "properties": { + "Primary": { + "$ref": "#/definitions/Primary" + }, + "Secondary": { + "$ref": "#/definitions/Secondary" + } + }, + "required": [ + "Primary", + "Secondary" + ], + "type": "object" + }, + "HealthCheck": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:aws([a-z]|\\-)*:route53:::healthcheck/[\\-a-z0-9]+$", + "type": "string" + }, + "Primary": { + "additionalProperties": false, + "properties": { + "HealthCheck": { + "$ref": "#/definitions/HealthCheck" + } + }, + "required": [ + "HealthCheck" + ], + "type": "object" + }, + "ReplicationConfig": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/ReplicationState" + } + }, + "required": [ + "State" + ], + "type": "object" + }, + "ReplicationState": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Route": { + "maxLength": 20, + "minLength": 9, + "pattern": "^[\\-a-z0-9]+$", + "type": "string" + }, + "RoutingConfig": { + "additionalProperties": false, + "properties": { + "FailoverConfig": { + "$ref": "#/definitions/FailoverConfig" + } + }, + "required": [ + "FailoverConfig" + ], + "type": "object" + }, + "Secondary": { + "additionalProperties": false, + "properties": { + "Route": { + "$ref": "#/definitions/Route" + } + }, + "required": [ + "Route" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Events::Endpoint.", + "handlers": { + "create": { + "permissions": [ + "events:CreateEndpoint", + "events:DescribeEndpoint", + "route53:GetHealthCheck", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "events:DeleteEndpoint", + "events:DescribeEndpoint" + ] + }, + "list": { + "permissions": [ + "events:ListEndpoints" + ] + }, + "read": { + "permissions": [ + "events:DescribeEndpoint" + ] + }, + "update": { + "permissions": [ + "events:DescribeEndpoint", + "events:UpdateEndpoint", + "route53:GetHealthCheck", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:endpoint\\/[/\\.\\-_A-Za-z0-9]+$", + "type": "string" + }, + "Description": { + "maxLength": 512, + "pattern": ".*", + "type": "string" + }, + "EndpointId": { + "maxLength": 50, + "minLength": 1, + "pattern": "^[A-Za-z0-9\\-]+[\\.][A-Za-z0-9\\-]+$", + "type": "string" + }, + "EndpointUrl": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(https://)?[\\.\\-a-z0-9]+$", + "type": "string" + }, + "EventBuses": { + "$ref": "#/definitions/EventBuses" + }, + "Name": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[\\.\\-_A-Za-z0-9]+$", + "type": "string" + }, + "ReplicationConfig": { + "$ref": "#/definitions/ReplicationConfig" + }, + "RoleArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:aws[a-z-]*:iam::\\d{12}:role\\/[\\w+=,.@/-]+$", + "type": "string" + }, + "RoutingConfig": { + "$ref": "#/definitions/RoutingConfig" + }, + "State": { + "enum": [ + "ACTIVE", + "CREATING", + "UPDATING", + "DELETING", + "CREATE_FAILED", + "UPDATE_FAILED" + ], + "type": "string" + }, + "StateReason": { + "maxLength": 512, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/EndpointId", + "/properties/EndpointUrl", + "/properties/State", + "/properties/StateReason" + ], + "required": [ + "RoutingConfig", + "EventBuses" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-events.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Events::Endpoint" +} diff --git a/src/schema/aws-events-eventbus.json b/src/schema/aws-events-eventbus.json index 3a5dbe65..cc4d9dd5 100644 --- a/src/schema/aws-events-eventbus.json +++ b/src/schema/aws-events-eventbus.json @@ -1,146 +1,146 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource type definition for AWS::Events::EventBus", - "handlers": { - "create": { - "permissions": [ - "events:CreateEventBus", - "events:DescribeEventBus", - "events:PutPermission", - "events:ListTagsForResource", - "events:TagResource", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "delete": { - "permissions": [ - "events:DescribeEventBus", - "events:UpdateEventBus", - "events:ListTagsForResource", - "events:UntagResource", - "events:RemovePermission", - "events:DeleteEventBus" - ] - }, - "list": { - "permissions": [ - "events:ListEventBuses", - "events:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "events:DescribeEventBus", - "events:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "events:TagResource", - "events:UntagResource", - "events:PutPermission", - "events:DescribeEventBus", - "events:UpdateEventBus", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) for the event bus.", - "type": "string" - }, - "DeadLetterConfig": { - "additionalProperties": false, - "description": "Dead Letter Queue for the event bus.", - "properties": { - "Arn": { - "type": "string" - } - }, - "type": "object" - }, - "Description": { - "description": "The description of the event bus.", - "type": "string" - }, - "EventSourceName": { - "description": "If you are creating a partner event bus, this specifies the partner event source that the new event bus will be matched with.", - "type": "string" - }, - "KmsKeyIdentifier": { - "description": "Kms Key Identifier used to encrypt events at rest in the event bus.", - "type": "string" - }, - "Name": { - "description": "The name of the event bus.", - "type": "string" - }, - "Policy": { - "description": "A JSON string that describes the permission policy statement for the event bus.", - "type": [ - "object", - "string" - ] - }, - "Tags": { - "description": "Any tags assigned to the event bus.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-events", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "events:UntagResource", - "events:TagResource", - "events:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Events::EventBus", - "writeOnlyProperties": [ - "/properties/EventSourceName" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource type definition for AWS::Events::EventBus", + "handlers": { + "create": { + "permissions": [ + "events:CreateEventBus", + "events:DescribeEventBus", + "events:PutPermission", + "events:ListTagsForResource", + "events:TagResource", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "events:DescribeEventBus", + "events:UpdateEventBus", + "events:ListTagsForResource", + "events:UntagResource", + "events:RemovePermission", + "events:DeleteEventBus" + ] + }, + "list": { + "permissions": [ + "events:ListEventBuses", + "events:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "events:DescribeEventBus", + "events:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "events:TagResource", + "events:UntagResource", + "events:PutPermission", + "events:DescribeEventBus", + "events:UpdateEventBus", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) for the event bus.", + "type": "string" + }, + "DeadLetterConfig": { + "additionalProperties": false, + "description": "Dead Letter Queue for the event bus.", + "properties": { + "Arn": { + "type": "string" + } + }, + "type": "object" + }, + "Description": { + "description": "The description of the event bus.", + "type": "string" + }, + "EventSourceName": { + "description": "If you are creating a partner event bus, this specifies the partner event source that the new event bus will be matched with.", + "type": "string" + }, + "KmsKeyIdentifier": { + "description": "Kms Key Identifier used to encrypt events at rest in the event bus.", + "type": "string" + }, + "Name": { + "description": "The name of the event bus.", + "type": "string" + }, + "Policy": { + "description": "A JSON string that describes the permission policy statement for the event bus.", + "type": [ + "object", + "string" + ] + }, + "Tags": { + "description": "Any tags assigned to the event bus.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-events", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "events:UntagResource", + "events:TagResource", + "events:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Events::EventBus", + "writeOnlyProperties": [ + "/properties/EventSourceName" + ] +} diff --git a/src/schema/aws-events-eventbuspolicy.json b/src/schema/aws-events-eventbuspolicy.json index e5123dcf..8b3921d4 100644 --- a/src/schema/aws-events-eventbuspolicy.json +++ b/src/schema/aws-events-eventbuspolicy.json @@ -1,58 +1,58 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/EventBusName", - "/properties/StatementId" - ], - "definitions": { - "Condition": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Type": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Events::EventBusPolicy", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Action": { - "type": "string" - }, - "Condition": { - "$ref": "#/definitions/Condition" - }, - "EventBusName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Principal": { - "type": "string" - }, - "Statement": { - "type": "object" - }, - "StatementId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "StatementId" - ], - "typeName": "AWS::Events::EventBusPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EventBusName", + "/properties/StatementId" + ], + "definitions": { + "Condition": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Type": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Events::EventBusPolicy", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Action": { + "type": "string" + }, + "Condition": { + "$ref": "#/definitions/Condition" + }, + "EventBusName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Principal": { + "type": "string" + }, + "Statement": { + "type": "object" + }, + "StatementId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "StatementId" + ], + "typeName": "AWS::Events::EventBusPolicy" +} diff --git a/src/schema/aws-events-rule.json b/src/schema/aws-events-rule.json index 0fb56987..af8f6551 100644 --- a/src/schema/aws-events-rule.json +++ b/src/schema/aws-events-rule.json @@ -1,589 +1,589 @@ -{ - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/EventBusName" - ], - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "AppSyncParameters": { - "additionalProperties": false, - "properties": { - "GraphQLOperation": { - "type": "string" - } - }, - "required": [ - "GraphQLOperation" - ], - "type": "object" - }, - "AwsVpcConfiguration": { - "additionalProperties": false, - "properties": { - "AssignPublicIp": { - "type": "string" - }, - "SecurityGroups": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Subnets": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Subnets" - ], - "type": "object" - }, - "BatchArrayProperties": { - "additionalProperties": false, - "properties": { - "Size": { - "type": "integer" - } - }, - "type": "object" - }, - "BatchParameters": { - "additionalProperties": false, - "properties": { - "ArrayProperties": { - "$ref": "#/definitions/BatchArrayProperties" - }, - "JobDefinition": { - "type": "string" - }, - "JobName": { - "type": "string" - }, - "RetryStrategy": { - "$ref": "#/definitions/BatchRetryStrategy" - } - }, - "required": [ - "JobName", - "JobDefinition" - ], - "type": "object" - }, - "BatchRetryStrategy": { - "additionalProperties": false, - "properties": { - "Attempts": { - "type": "integer" - } - }, - "type": "object" - }, - "CapacityProviderStrategyItem": { - "additionalProperties": false, - "properties": { - "Base": { - "type": "integer" - }, - "CapacityProvider": { - "type": "string" - }, - "Weight": { - "type": "integer" - } - }, - "required": [ - "CapacityProvider" - ], - "type": "object" - }, - "DeadLetterConfig": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - } - }, - "type": "object" - }, - "EcsParameters": { - "additionalProperties": false, - "properties": { - "CapacityProviderStrategy": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/CapacityProviderStrategyItem" - }, - "type": "array", - "uniqueItems": true - }, - "EnableECSManagedTags": { - "type": "boolean" - }, - "EnableExecuteCommand": { - "type": "boolean" - }, - "Group": { - "type": "string" - }, - "LaunchType": { - "type": "string" - }, - "NetworkConfiguration": { - "$ref": "#/definitions/NetworkConfiguration" - }, - "PlacementConstraints": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PlacementConstraint" - }, - "type": "array", - "uniqueItems": true - }, - "PlacementStrategies": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PlacementStrategy" - }, - "type": "array", - "uniqueItems": true - }, - "PlatformVersion": { - "type": "string" - }, - "PropagateTags": { - "type": "string" - }, - "ReferenceId": { - "type": "string" - }, - "TagList": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "TaskCount": { - "type": "integer" - }, - "TaskDefinitionArn": { - "type": "string" - } - }, - "required": [ - "TaskDefinitionArn" - ], - "type": "object" - }, - "HttpParameters": { - "additionalProperties": false, - "properties": { - "HeaderParameters": { - "additionalProperties": false, - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "PathParameterValues": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "QueryStringParameters": { - "additionalProperties": false, - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "InputTransformer": { - "additionalProperties": false, - "properties": { - "InputPathsMap": { - "additionalProperties": false, - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "InputTemplate": { - "type": "string" - } - }, - "required": [ - "InputTemplate" - ], - "type": "object" - }, - "KinesisParameters": { - "additionalProperties": false, - "properties": { - "PartitionKeyPath": { - "type": "string" - } - }, - "required": [ - "PartitionKeyPath" - ], - "type": "object" - }, - "NetworkConfiguration": { - "additionalProperties": false, - "properties": { - "AwsVpcConfiguration": { - "$ref": "#/definitions/AwsVpcConfiguration" - } - }, - "type": "object" - }, - "PlacementConstraint": { - "additionalProperties": false, - "properties": { - "Expression": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "type": "object" - }, - "PlacementStrategy": { - "additionalProperties": false, - "properties": { - "Field": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "type": "object" - }, - "RedshiftDataParameters": { - "additionalProperties": false, - "properties": { - "Database": { - "type": "string" - }, - "DbUser": { - "type": "string" - }, - "SecretManagerArn": { - "type": "string" - }, - "Sql": { - "type": "string" - }, - "Sqls": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "StatementName": { - "type": "string" - }, - "WithEvent": { - "type": "boolean" - } - }, - "required": [ - "Database" - ], - "type": "object" - }, - "RetryPolicy": { - "additionalProperties": false, - "properties": { - "MaximumEventAgeInSeconds": { - "type": "integer" - }, - "MaximumRetryAttempts": { - "type": "integer" - } - }, - "type": "object" - }, - "RunCommandParameters": { - "additionalProperties": false, - "properties": { - "RunCommandTargets": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/RunCommandTarget" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "RunCommandTargets" - ], - "type": "object" - }, - "RunCommandTarget": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Values": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Values", - "Key" - ], - "type": "object" - }, - "SageMakerPipelineParameter": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Name" - ], - "type": "object" - }, - "SageMakerPipelineParameters": { - "additionalProperties": false, - "properties": { - "PipelineParameterList": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/SageMakerPipelineParameter" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "SqsParameters": { - "additionalProperties": false, - "properties": { - "MessageGroupId": { - "type": "string" - } - }, - "required": [ - "MessageGroupId" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "Target": { - "additionalProperties": false, - "properties": { - "AppSyncParameters": { - "$ref": "#/definitions/AppSyncParameters" - }, - "Arn": { - "type": "string" - }, - "BatchParameters": { - "$ref": "#/definitions/BatchParameters" - }, - "DeadLetterConfig": { - "$ref": "#/definitions/DeadLetterConfig" - }, - "EcsParameters": { - "$ref": "#/definitions/EcsParameters" - }, - "HttpParameters": { - "$ref": "#/definitions/HttpParameters" - }, - "Id": { - "type": "string" - }, - "Input": { - "type": "string" - }, - "InputPath": { - "type": "string" - }, - "InputTransformer": { - "$ref": "#/definitions/InputTransformer" - }, - "KinesisParameters": { - "$ref": "#/definitions/KinesisParameters" - }, - "RedshiftDataParameters": { - "$ref": "#/definitions/RedshiftDataParameters" - }, - "RetryPolicy": { - "$ref": "#/definitions/RetryPolicy" - }, - "RoleArn": { - "type": "string" - }, - "RunCommandParameters": { - "$ref": "#/definitions/RunCommandParameters" - }, - "SageMakerPipelineParameters": { - "$ref": "#/definitions/SageMakerPipelineParameters" - }, - "SqsParameters": { - "$ref": "#/definitions/SqsParameters" - } - }, - "required": [ - "Id", - "Arn" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Events::Rule", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "events:DescribeRule", - "events:PutRule", - "events:PutTargets" - ] - }, - "delete": { - "permissions": [ - "iam:PassRole", - "events:DescribeRule", - "events:DeleteRule", - "events:RemoveTargets", - "events:ListTargetsByRule" - ] - }, - "list": { - "permissions": [ - "events:ListRules" - ] - }, - "read": { - "permissions": [ - "iam:PassRole", - "events:DescribeRule", - "events:ListTargetsByRule" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "events:DescribeRule", - "events:PutRule", - "events:RemoveTargets", - "events:PutTargets" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The ARN of the rule, such as arn:aws:events:us-east-2:123456789012:rule/example.", - "type": "string" - }, - "Description": { - "description": "The description of the rule.", - "type": "string" - }, - "EventBusName": { - "description": "The name or ARN of the event bus associated with the rule. If you omit this, the default event bus is used.", - "type": "string" - }, - "EventPattern": { - "description": "The event pattern of the rule. For more information, see Events and Event Patterns in the Amazon EventBridge User Guide.", - "type": [ - "string", - "object" - ] - }, - "Name": { - "description": "The name of the rule.", - "type": "string" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) of the role that is used for target invocation.", - "type": "string" - }, - "ScheduleExpression": { - "description": "The scheduling expression. For example, \"cron(0 20 * * ? *)\", \"rate(5 minutes)\". For more information, see Creating an Amazon EventBridge rule that runs on a schedule.", - "type": "string" - }, - "State": { - "description": "The state of the rule.", - "enum": [ - "DISABLED", - "ENABLED", - "ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS" - ], - "type": "string" - }, - "Targets": { - "description": "Adds the specified targets to the specified rule, or updates the targets if they are already associated with the rule.\nTargets are the resources that are invoked when a rule is triggered.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Target" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "tagging": { - "taggable": false - }, - "typeName": "AWS::Events::Rule" -} +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/EventBusName" + ], + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "AppSyncParameters": { + "additionalProperties": false, + "properties": { + "GraphQLOperation": { + "type": "string" + } + }, + "required": [ + "GraphQLOperation" + ], + "type": "object" + }, + "AwsVpcConfiguration": { + "additionalProperties": false, + "properties": { + "AssignPublicIp": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Subnets" + ], + "type": "object" + }, + "BatchArrayProperties": { + "additionalProperties": false, + "properties": { + "Size": { + "type": "integer" + } + }, + "type": "object" + }, + "BatchParameters": { + "additionalProperties": false, + "properties": { + "ArrayProperties": { + "$ref": "#/definitions/BatchArrayProperties" + }, + "JobDefinition": { + "type": "string" + }, + "JobName": { + "type": "string" + }, + "RetryStrategy": { + "$ref": "#/definitions/BatchRetryStrategy" + } + }, + "required": [ + "JobName", + "JobDefinition" + ], + "type": "object" + }, + "BatchRetryStrategy": { + "additionalProperties": false, + "properties": { + "Attempts": { + "type": "integer" + } + }, + "type": "object" + }, + "CapacityProviderStrategyItem": { + "additionalProperties": false, + "properties": { + "Base": { + "type": "integer" + }, + "CapacityProvider": { + "type": "string" + }, + "Weight": { + "type": "integer" + } + }, + "required": [ + "CapacityProvider" + ], + "type": "object" + }, + "DeadLetterConfig": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + } + }, + "type": "object" + }, + "EcsParameters": { + "additionalProperties": false, + "properties": { + "CapacityProviderStrategy": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/CapacityProviderStrategyItem" + }, + "type": "array", + "uniqueItems": true + }, + "EnableECSManagedTags": { + "type": "boolean" + }, + "EnableExecuteCommand": { + "type": "boolean" + }, + "Group": { + "type": "string" + }, + "LaunchType": { + "type": "string" + }, + "NetworkConfiguration": { + "$ref": "#/definitions/NetworkConfiguration" + }, + "PlacementConstraints": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PlacementConstraint" + }, + "type": "array", + "uniqueItems": true + }, + "PlacementStrategies": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PlacementStrategy" + }, + "type": "array", + "uniqueItems": true + }, + "PlatformVersion": { + "type": "string" + }, + "PropagateTags": { + "type": "string" + }, + "ReferenceId": { + "type": "string" + }, + "TagList": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TaskCount": { + "type": "integer" + }, + "TaskDefinitionArn": { + "type": "string" + } + }, + "required": [ + "TaskDefinitionArn" + ], + "type": "object" + }, + "HttpParameters": { + "additionalProperties": false, + "properties": { + "HeaderParameters": { + "additionalProperties": false, + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "PathParameterValues": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "QueryStringParameters": { + "additionalProperties": false, + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "InputTransformer": { + "additionalProperties": false, + "properties": { + "InputPathsMap": { + "additionalProperties": false, + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "InputTemplate": { + "type": "string" + } + }, + "required": [ + "InputTemplate" + ], + "type": "object" + }, + "KinesisParameters": { + "additionalProperties": false, + "properties": { + "PartitionKeyPath": { + "type": "string" + } + }, + "required": [ + "PartitionKeyPath" + ], + "type": "object" + }, + "NetworkConfiguration": { + "additionalProperties": false, + "properties": { + "AwsVpcConfiguration": { + "$ref": "#/definitions/AwsVpcConfiguration" + } + }, + "type": "object" + }, + "PlacementConstraint": { + "additionalProperties": false, + "properties": { + "Expression": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "type": "object" + }, + "PlacementStrategy": { + "additionalProperties": false, + "properties": { + "Field": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "type": "object" + }, + "RedshiftDataParameters": { + "additionalProperties": false, + "properties": { + "Database": { + "type": "string" + }, + "DbUser": { + "type": "string" + }, + "SecretManagerArn": { + "type": "string" + }, + "Sql": { + "type": "string" + }, + "Sqls": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "StatementName": { + "type": "string" + }, + "WithEvent": { + "type": "boolean" + } + }, + "required": [ + "Database" + ], + "type": "object" + }, + "RetryPolicy": { + "additionalProperties": false, + "properties": { + "MaximumEventAgeInSeconds": { + "type": "integer" + }, + "MaximumRetryAttempts": { + "type": "integer" + } + }, + "type": "object" + }, + "RunCommandParameters": { + "additionalProperties": false, + "properties": { + "RunCommandTargets": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/RunCommandTarget" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "RunCommandTargets" + ], + "type": "object" + }, + "RunCommandTarget": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Values": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Values", + "Key" + ], + "type": "object" + }, + "SageMakerPipelineParameter": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Name" + ], + "type": "object" + }, + "SageMakerPipelineParameters": { + "additionalProperties": false, + "properties": { + "PipelineParameterList": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/SageMakerPipelineParameter" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "SqsParameters": { + "additionalProperties": false, + "properties": { + "MessageGroupId": { + "type": "string" + } + }, + "required": [ + "MessageGroupId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "Target": { + "additionalProperties": false, + "properties": { + "AppSyncParameters": { + "$ref": "#/definitions/AppSyncParameters" + }, + "Arn": { + "type": "string" + }, + "BatchParameters": { + "$ref": "#/definitions/BatchParameters" + }, + "DeadLetterConfig": { + "$ref": "#/definitions/DeadLetterConfig" + }, + "EcsParameters": { + "$ref": "#/definitions/EcsParameters" + }, + "HttpParameters": { + "$ref": "#/definitions/HttpParameters" + }, + "Id": { + "type": "string" + }, + "Input": { + "type": "string" + }, + "InputPath": { + "type": "string" + }, + "InputTransformer": { + "$ref": "#/definitions/InputTransformer" + }, + "KinesisParameters": { + "$ref": "#/definitions/KinesisParameters" + }, + "RedshiftDataParameters": { + "$ref": "#/definitions/RedshiftDataParameters" + }, + "RetryPolicy": { + "$ref": "#/definitions/RetryPolicy" + }, + "RoleArn": { + "type": "string" + }, + "RunCommandParameters": { + "$ref": "#/definitions/RunCommandParameters" + }, + "SageMakerPipelineParameters": { + "$ref": "#/definitions/SageMakerPipelineParameters" + }, + "SqsParameters": { + "$ref": "#/definitions/SqsParameters" + } + }, + "required": [ + "Id", + "Arn" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Events::Rule", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "events:DescribeRule", + "events:PutRule", + "events:PutTargets" + ] + }, + "delete": { + "permissions": [ + "iam:PassRole", + "events:DescribeRule", + "events:DeleteRule", + "events:RemoveTargets", + "events:ListTargetsByRule" + ] + }, + "list": { + "permissions": [ + "events:ListRules" + ] + }, + "read": { + "permissions": [ + "iam:PassRole", + "events:DescribeRule", + "events:ListTargetsByRule" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "events:DescribeRule", + "events:PutRule", + "events:RemoveTargets", + "events:PutTargets" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The ARN of the rule, such as arn:aws:events:us-east-2:123456789012:rule/example.", + "type": "string" + }, + "Description": { + "description": "The description of the rule.", + "type": "string" + }, + "EventBusName": { + "description": "The name or ARN of the event bus associated with the rule. If you omit this, the default event bus is used.", + "type": "string" + }, + "EventPattern": { + "description": "The event pattern of the rule. For more information, see Events and Event Patterns in the Amazon EventBridge User Guide.", + "type": [ + "string", + "object" + ] + }, + "Name": { + "description": "The name of the rule.", + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of the role that is used for target invocation.", + "type": "string" + }, + "ScheduleExpression": { + "description": "The scheduling expression. For example, \"cron(0 20 * * ? *)\", \"rate(5 minutes)\". For more information, see Creating an Amazon EventBridge rule that runs on a schedule.", + "type": "string" + }, + "State": { + "description": "The state of the rule.", + "enum": [ + "DISABLED", + "ENABLED", + "ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS" + ], + "type": "string" + }, + "Targets": { + "description": "Adds the specified targets to the specified rule, or updates the targets if they are already associated with the rule.\nTargets are the resources that are invoked when a rule is triggered.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Target" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::Events::Rule" +} diff --git a/src/schema/aws-eventschemas-discoverer.json b/src/schema/aws-eventschemas-discoverer.json index c06d58aa..5ac8f46c 100644 --- a/src/schema/aws-eventschemas-discoverer.json +++ b/src/schema/aws-eventschemas-discoverer.json @@ -1,123 +1,128 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SourceArn" - ], - "definitions": { - "TagsEntry": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EventSchemas::Discoverer", - "handlers": { - "create": { - "permissions": [ - "schemas:CreateDiscoverer", - "schemas:DescribeDiscoverer", - "schemas:TagResource", - "events:PutRule", - "events:PutTargets", - "events:EnableRule", - "events:ListTargetsByRule", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "schemas:DescribeDiscoverer", - "schemas:DeleteDiscoverer", - "events:DeleteRule", - "events:DisableRule", - "events:RemoveTargets" - ] - }, - "list": { - "permissions": [ - "schemas:ListDiscoverers" - ] - }, - "read": { - "permissions": [ - "schemas:DescribeDiscoverer" - ] - }, - "update": { - "permissions": [ - "schemas:DescribeDiscoverer", - "schemas:UpdateDiscoverer", - "schemas:TagResource", - "schemas:UntagResource", - "schemas:ListTagsForResource", - "events:PutTargets", - "events:PutRule" - ] - } - }, - "primaryIdentifier": [ - "/properties/DiscovererArn" - ], - "properties": { - "CrossAccount": { - "default": true, - "description": "Defines whether event schemas from other accounts are discovered. Default is True.", - "type": "boolean" - }, - "Description": { - "description": "A description for the discoverer.", - "type": "string" - }, - "DiscovererArn": { - "description": "The ARN of the discoverer.", - "type": "string" - }, - "DiscovererId": { - "description": "The Id of the discoverer.", - "type": "string" - }, - "SourceArn": { - "description": "The ARN of the event bus.", - "type": "string" - }, - "State": { - "description": "Defines the current state of the discoverer.", - "type": "string" - }, - "Tags": { - "description": "Tags associated with the resource.", - "items": { - "$ref": "#/definitions/TagsEntry" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/DiscovererArn", - "/properties/DiscovererId", - "/properties/State" - ], - "required": [ - "SourceArn" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EventSchemas::Discoverer" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SourceArn" + ], + "definitions": { + "TagsEntry": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EventSchemas::Discoverer", + "handlers": { + "create": { + "permissions": [ + "schemas:CreateDiscoverer", + "schemas:DescribeDiscoverer", + "schemas:TagResource", + "events:PutRule", + "events:PutTargets", + "events:EnableRule", + "events:ListTargetsByRule", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "schemas:DescribeDiscoverer", + "schemas:DeleteDiscoverer", + "events:DeleteRule", + "events:DisableRule", + "events:RemoveTargets" + ] + }, + "list": { + "permissions": [ + "schemas:ListDiscoverers" + ] + }, + "read": { + "permissions": [ + "schemas:DescribeDiscoverer" + ] + }, + "update": { + "permissions": [ + "schemas:DescribeDiscoverer", + "schemas:UpdateDiscoverer", + "schemas:TagResource", + "schemas:UntagResource", + "schemas:ListTagsForResource", + "events:PutTargets", + "events:PutRule" + ] + } + }, + "primaryIdentifier": [ + "/properties/DiscovererArn" + ], + "properties": { + "CrossAccount": { + "default": true, + "description": "Defines whether event schemas from other accounts are discovered. Default is True.", + "type": "boolean" + }, + "Description": { + "description": "A description for the discoverer.", + "type": "string" + }, + "DiscovererArn": { + "description": "The ARN of the discoverer.", + "type": "string" + }, + "DiscovererId": { + "description": "The Id of the discoverer.", + "type": "string" + }, + "SourceArn": { + "description": "The ARN of the event bus.", + "type": "string" + }, + "State": { + "description": "Defines the current state of the discoverer.", + "type": "string" + }, + "Tags": { + "description": "Tags associated with the resource.", + "items": { + "$ref": "#/definitions/TagsEntry" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/DiscovererArn", + "/properties/DiscovererId", + "/properties/State" + ], + "required": [ + "SourceArn" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "schemas:TagResource", + "schemas:UntagResource", + "schemas:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EventSchemas::Discoverer" +} diff --git a/src/schema/aws-eventschemas-registry.json b/src/schema/aws-eventschemas-registry.json index 5cc5c4e8..2fc5dafe 100644 --- a/src/schema/aws-eventschemas-registry.json +++ b/src/schema/aws-eventschemas-registry.json @@ -1,95 +1,100 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RegistryName" - ], - "definitions": { - "TagsEntry": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EventSchemas::Registry", - "handlers": { - "create": { - "permissions": [ - "schemas:DescribeRegistry", - "schemas:CreateRegistry", - "schemas:TagResource" - ] - }, - "delete": { - "permissions": [ - "schemas:DescribeRegistry", - "schemas:DeleteRegistry" - ] - }, - "list": { - "permissions": [ - "schemas:ListRegistries" - ] - }, - "read": { - "permissions": [ - "schemas:DescribeRegistry" - ] - }, - "update": { - "permissions": [ - "schemas:DescribeRegistry", - "schemas:UpdateRegistry", - "schemas:TagResource", - "schemas:UntagResource", - "schemas:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/RegistryArn" - ], - "properties": { - "Description": { - "description": "A description of the registry to be created.", - "type": "string" - }, - "RegistryArn": { - "description": "The ARN of the registry.", - "type": "string" - }, - "RegistryName": { - "description": "The name of the schema registry.", - "type": "string" - }, - "Tags": { - "description": "Tags associated with the resource.", - "items": { - "$ref": "#/definitions/TagsEntry" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/RegistryArn" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EventSchemas::Registry" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RegistryName" + ], + "definitions": { + "TagsEntry": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EventSchemas::Registry", + "handlers": { + "create": { + "permissions": [ + "schemas:DescribeRegistry", + "schemas:CreateRegistry", + "schemas:TagResource" + ] + }, + "delete": { + "permissions": [ + "schemas:DescribeRegistry", + "schemas:DeleteRegistry" + ] + }, + "list": { + "permissions": [ + "schemas:ListRegistries" + ] + }, + "read": { + "permissions": [ + "schemas:DescribeRegistry" + ] + }, + "update": { + "permissions": [ + "schemas:DescribeRegistry", + "schemas:UpdateRegistry", + "schemas:TagResource", + "schemas:UntagResource", + "schemas:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/RegistryArn" + ], + "properties": { + "Description": { + "description": "A description of the registry to be created.", + "type": "string" + }, + "RegistryArn": { + "description": "The ARN of the registry.", + "type": "string" + }, + "RegistryName": { + "description": "The name of the schema registry.", + "type": "string" + }, + "Tags": { + "description": "Tags associated with the resource.", + "items": { + "$ref": "#/definitions/TagsEntry" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/RegistryArn" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "schemas:TagResource", + "schemas:UntagResource", + "schemas:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EventSchemas::Registry" +} diff --git a/src/schema/aws-eventschemas-registrypolicy.json b/src/schema/aws-eventschemas-registrypolicy.json index f3bbc2c5..a6517c37 100644 --- a/src/schema/aws-eventschemas-registrypolicy.json +++ b/src/schema/aws-eventschemas-registrypolicy.json @@ -1,58 +1,58 @@ -{ - "additionalProperties": false, - "description": "Resource Type definition for AWS::EventSchemas::RegistryPolicy", - "handlers": { - "create": { - "permissions": [ - "schemas:PutResourcePolicy", - "schemas:GetResourcePolicy", - "schemas:DescribeRegistry" - ] - }, - "delete": { - "permissions": [ - "schemas:DeleteResourcePolicy", - "schemas:GetResourcePolicy" - ] - }, - "read": { - "permissions": [ - "schemas:GetResourcePolicy" - ] - }, - "update": { - "permissions": [ - "schemas:PutResourcePolicy", - "schemas:GetResourcePolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "Policy": { - "type": "object" - }, - "RegistryName": { - "type": "string" - }, - "RevisionId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "RegistryName", - "Policy" - ], - "tagging": { - "taggable": false - }, - "typeName": "AWS::EventSchemas::RegistryPolicy" -} +{ + "additionalProperties": false, + "description": "Resource Type definition for AWS::EventSchemas::RegistryPolicy", + "handlers": { + "create": { + "permissions": [ + "schemas:PutResourcePolicy", + "schemas:GetResourcePolicy", + "schemas:DescribeRegistry" + ] + }, + "delete": { + "permissions": [ + "schemas:DeleteResourcePolicy", + "schemas:GetResourcePolicy" + ] + }, + "read": { + "permissions": [ + "schemas:GetResourcePolicy" + ] + }, + "update": { + "permissions": [ + "schemas:PutResourcePolicy", + "schemas:GetResourcePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "Policy": { + "type": "object" + }, + "RegistryName": { + "type": "string" + }, + "RevisionId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "RegistryName", + "Policy" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::EventSchemas::RegistryPolicy" +} diff --git a/src/schema/aws-eventschemas-schema.json b/src/schema/aws-eventschemas-schema.json index 270e4055..7530e2e3 100644 --- a/src/schema/aws-eventschemas-schema.json +++ b/src/schema/aws-eventschemas-schema.json @@ -1,141 +1,146 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SchemaName", - "/properties/RegistryName" - ], - "definitions": { - "TagsEntry": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::EventSchemas::Schema", - "handlers": { - "create": { - "permissions": [ - "schemas:DescribeSchema", - "schemas:CreateSchema", - "schemas:TagResource" - ] - }, - "delete": { - "permissions": [ - "schemas:DescribeSchema", - "schemas:DeleteSchema", - "schemas:DeleteSchemaVersion" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "RegistryName": { - "type": "string" - } - }, - "required": [ - "RegistryName" - ] - }, - "permissions": [ - "schemas:ListSchemas", - "schemas:ListSchemaVersions" - ] - }, - "read": { - "permissions": [ - "schemas:DescribeSchema" - ] - }, - "update": { - "permissions": [ - "schemas:DescribeSchema", - "schemas:UpdateSchema", - "schemas:TagResource", - "schemas:UntagResource", - "schemas:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/SchemaArn" - ], - "properties": { - "Content": { - "description": "The source of the schema definition.", - "type": "string" - }, - "Description": { - "description": "A description of the schema.", - "type": "string" - }, - "LastModified": { - "description": "The last modified time of the schema.", - "type": "string" - }, - "RegistryName": { - "description": "The name of the schema registry.", - "type": "string" - }, - "SchemaArn": { - "description": "The ARN of the schema.", - "type": "string" - }, - "SchemaName": { - "description": "The name of the schema.", - "type": "string" - }, - "SchemaVersion": { - "description": "The version number of the schema.", - "type": "string" - }, - "Tags": { - "description": "Tags associated with the resource.", - "items": { - "$ref": "#/definitions/TagsEntry" - }, - "type": "array", - "uniqueItems": false - }, - "Type": { - "description": "The type of schema. Valid types include OpenApi3 and JSONSchemaDraft4.", - "type": "string" - }, - "VersionCreatedDate": { - "description": "The date the schema version was created.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/SchemaArn", - "/properties/LastModified", - "/properties/VersionCreatedDate", - "/properties/SchemaVersion" - ], - "required": [ - "Type", - "Content", - "RegistryName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eventschemas", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EventSchemas::Schema" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SchemaName", + "/properties/RegistryName" + ], + "definitions": { + "TagsEntry": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::EventSchemas::Schema", + "handlers": { + "create": { + "permissions": [ + "schemas:DescribeSchema", + "schemas:CreateSchema", + "schemas:TagResource" + ] + }, + "delete": { + "permissions": [ + "schemas:DescribeSchema", + "schemas:DeleteSchema", + "schemas:DeleteSchemaVersion" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "RegistryName": { + "type": "string" + } + }, + "required": [ + "RegistryName" + ] + }, + "permissions": [ + "schemas:ListSchemas", + "schemas:ListSchemaVersions" + ] + }, + "read": { + "permissions": [ + "schemas:DescribeSchema" + ] + }, + "update": { + "permissions": [ + "schemas:DescribeSchema", + "schemas:UpdateSchema", + "schemas:TagResource", + "schemas:UntagResource", + "schemas:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/SchemaArn" + ], + "properties": { + "Content": { + "description": "The source of the schema definition.", + "type": "string" + }, + "Description": { + "description": "A description of the schema.", + "type": "string" + }, + "LastModified": { + "description": "The last modified time of the schema.", + "type": "string" + }, + "RegistryName": { + "description": "The name of the schema registry.", + "type": "string" + }, + "SchemaArn": { + "description": "The ARN of the schema.", + "type": "string" + }, + "SchemaName": { + "description": "The name of the schema.", + "type": "string" + }, + "SchemaVersion": { + "description": "The version number of the schema.", + "type": "string" + }, + "Tags": { + "description": "Tags associated with the resource.", + "items": { + "$ref": "#/definitions/TagsEntry" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "description": "The type of schema. Valid types include OpenApi3 and JSONSchemaDraft4.", + "type": "string" + }, + "VersionCreatedDate": { + "description": "The date the schema version was created.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/SchemaArn", + "/properties/LastModified", + "/properties/VersionCreatedDate", + "/properties/SchemaVersion" + ], + "required": [ + "Type", + "Content", + "RegistryName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-eventschemas", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "schemas:TagResource", + "schemas:UntagResource", + "schemas:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EventSchemas::Schema" +} diff --git a/src/schema/aws-evidently-experiment.json b/src/schema/aws-evidently-experiment.json index 4927c650..20040512 100644 --- a/src/schema/aws-evidently-experiment.json +++ b/src/schema/aws-evidently-experiment.json @@ -1,314 +1,314 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Project" - ], - "definitions": { - "MetricGoalObject": { - "additionalProperties": false, - "properties": { - "DesiredChange": { - "enum": [ - "INCREASE", - "DECREASE" - ], - "type": "string" - }, - "EntityIdKey": { - "description": "The JSON path to reference the entity id in the event.", - "type": "string" - }, - "EventPattern": { - "description": "Event patterns have the same structure as the events they match. Rules use event patterns to select events. An event pattern either matches an event or it doesn't.", - "type": "string" - }, - "MetricName": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\S]+$", - "type": "string" - }, - "UnitLabel": { - "maxLength": 256, - "minLength": 1, - "pattern": ".*", - "type": "string" - }, - "ValueKey": { - "description": "The JSON path to reference the numerical metric value in the event.", - "type": "string" - } - }, - "required": [ - "MetricName", - "EntityIdKey", - "ValueKey", - "DesiredChange" - ], - "type": "object" - }, - "OnlineAbConfigObject": { - "additionalProperties": false, - "properties": { - "ControlTreatmentName": { - "maxLength": 127, - "minLength": 1, - "pattern": "[-a-zA-Z0-9._]*", - "type": "string" - }, - "TreatmentWeights": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TreatmentToWeight" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "RunningStatusObject": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "Status", - "AnalysisCompleteTime" - ] - }, - { - "required": [ - "Status", - "Reason", - "DesiredState" - ] - } - ], - "properties": { - "AnalysisCompleteTime": { - "description": "Provide the analysis Completion time for an experiment", - "type": "string" - }, - "DesiredState": { - "description": "Provide CANCELLED or COMPLETED desired state when stopping an experiment", - "pattern": "^(CANCELLED|COMPLETED)", - "type": "string" - }, - "Reason": { - "description": "Reason is a required input for stopping the experiment", - "type": "string" - }, - "Status": { - "description": "Provide START or STOP action to apply on an experiment", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TreatmentObject": { - "additionalProperties": false, - "properties": { - "Description": { - "type": "string" - }, - "Feature": { - "pattern": "([-a-zA-Z0-9._]*)|(arn:[^:]*:[^:]*:[^:]*:[^:]*:.*)", - "type": "string" - }, - "TreatmentName": { - "maxLength": 127, - "minLength": 1, - "pattern": "[-a-zA-Z0-9._]*", - "type": "string" - }, - "Variation": { - "maxLength": 255, - "minLength": 1, - "pattern": "[-a-zA-Z0-9._]*", - "type": "string" - } - }, - "required": [ - "TreatmentName", - "Feature", - "Variation" - ], - "type": "object" - }, - "TreatmentToWeight": { - "additionalProperties": false, - "properties": { - "SplitWeight": { - "maximum": 100000, - "minimum": 0, - "type": "integer" - }, - "Treatment": { - "maxLength": 127, - "minLength": 1, - "pattern": "[-a-zA-Z0-9._]*", - "type": "string" - } - }, - "required": [ - "Treatment", - "SplitWeight" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Evidently::Experiment.", - "handlers": { - "create": { - "permissions": [ - "evidently:CreateExperiment", - "evidently:TagResource", - "evidently:GetExperiment", - "evidently:StartExperiment" - ] - }, - "delete": { - "permissions": [ - "evidently:DeleteExperiment", - "evidently:UntagResource", - "evidently:GetExperiment" - ] - }, - "read": { - "permissions": [ - "evidently:GetExperiment", - "evidently:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "evidently:UpdateExperiment", - "evidently:TagResource", - "evidently:UntagResource", - "evidently:GetExperiment", - "evidently:StartExperiment", - "evidently:StopExperiment" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "pattern": "arn:[^:]*:[^:]*:[^:]*:[^:]*:project/[-a-zA-Z0-9._]*/experiment/[-a-zA-Z0-9._]*", - "type": "string" - }, - "Description": { - "maxLength": 160, - "minLength": 0, - "type": "string" - }, - "MetricGoals": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/MetricGoalObject" - }, - "maxItems": 3, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Name": { - "maxLength": 127, - "minLength": 1, - "pattern": "[-a-zA-Z0-9._]*", - "type": "string" - }, - "OnlineAbConfig": { - "$ref": "#/definitions/OnlineAbConfigObject" - }, - "Project": { - "maxLength": 2048, - "minLength": 0, - "pattern": "([-a-zA-Z0-9._]*)|(arn:[^:]*:[^:]*:[^:]*:[^:]*:project/[-a-zA-Z0-9._]*)", - "type": "string" - }, - "RandomizationSalt": { - "maxLength": 127, - "minLength": 0, - "pattern": ".*", - "type": "string" - }, - "RemoveSegment": { - "type": "boolean" - }, - "RunningStatus": { - "$ref": "#/definitions/RunningStatusObject", - "description": "Start Experiment. Default is False" - }, - "SamplingRate": { - "maximum": 100000, - "minimum": 0, - "type": "integer" - }, - "Segment": { - "maxLength": 2048, - "minLength": 0, - "pattern": "([-a-zA-Z0-9._]*)|(arn:[^:]*:[^:]*:[^:]*:[^:]*:segment/[-a-zA-Z0-9._]*)", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Treatments": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TreatmentObject" - }, - "maxItems": 5, - "minItems": 2, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name", - "Project", - "Treatments", - "MetricGoals", - "OnlineAbConfig" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-evidently", - "taggable": true, - "typeName": "AWS::Evidently::Experiment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Project" + ], + "definitions": { + "MetricGoalObject": { + "additionalProperties": false, + "properties": { + "DesiredChange": { + "enum": [ + "INCREASE", + "DECREASE" + ], + "type": "string" + }, + "EntityIdKey": { + "description": "The JSON path to reference the entity id in the event.", + "type": "string" + }, + "EventPattern": { + "description": "Event patterns have the same structure as the events they match. Rules use event patterns to select events. An event pattern either matches an event or it doesn't.", + "type": "string" + }, + "MetricName": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\S]+$", + "type": "string" + }, + "UnitLabel": { + "maxLength": 256, + "minLength": 1, + "pattern": ".*", + "type": "string" + }, + "ValueKey": { + "description": "The JSON path to reference the numerical metric value in the event.", + "type": "string" + } + }, + "required": [ + "MetricName", + "EntityIdKey", + "ValueKey", + "DesiredChange" + ], + "type": "object" + }, + "OnlineAbConfigObject": { + "additionalProperties": false, + "properties": { + "ControlTreatmentName": { + "maxLength": 127, + "minLength": 1, + "pattern": "[-a-zA-Z0-9._]*", + "type": "string" + }, + "TreatmentWeights": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TreatmentToWeight" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "RunningStatusObject": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "Status", + "AnalysisCompleteTime" + ] + }, + { + "required": [ + "Status", + "Reason", + "DesiredState" + ] + } + ], + "properties": { + "AnalysisCompleteTime": { + "description": "Provide the analysis Completion time for an experiment", + "type": "string" + }, + "DesiredState": { + "description": "Provide CANCELLED or COMPLETED desired state when stopping an experiment", + "pattern": "^(CANCELLED|COMPLETED)", + "type": "string" + }, + "Reason": { + "description": "Reason is a required input for stopping the experiment", + "type": "string" + }, + "Status": { + "description": "Provide START or STOP action to apply on an experiment", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TreatmentObject": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "Feature": { + "pattern": "([-a-zA-Z0-9._]*)|(arn:[^:]*:[^:]*:[^:]*:[^:]*:.*)", + "type": "string" + }, + "TreatmentName": { + "maxLength": 127, + "minLength": 1, + "pattern": "[-a-zA-Z0-9._]*", + "type": "string" + }, + "Variation": { + "maxLength": 255, + "minLength": 1, + "pattern": "[-a-zA-Z0-9._]*", + "type": "string" + } + }, + "required": [ + "TreatmentName", + "Feature", + "Variation" + ], + "type": "object" + }, + "TreatmentToWeight": { + "additionalProperties": false, + "properties": { + "SplitWeight": { + "maximum": 100000, + "minimum": 0, + "type": "integer" + }, + "Treatment": { + "maxLength": 127, + "minLength": 1, + "pattern": "[-a-zA-Z0-9._]*", + "type": "string" + } + }, + "required": [ + "Treatment", + "SplitWeight" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Evidently::Experiment.", + "handlers": { + "create": { + "permissions": [ + "evidently:CreateExperiment", + "evidently:TagResource", + "evidently:GetExperiment", + "evidently:StartExperiment" + ] + }, + "delete": { + "permissions": [ + "evidently:DeleteExperiment", + "evidently:UntagResource", + "evidently:GetExperiment" + ] + }, + "read": { + "permissions": [ + "evidently:GetExperiment", + "evidently:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "evidently:UpdateExperiment", + "evidently:TagResource", + "evidently:UntagResource", + "evidently:GetExperiment", + "evidently:StartExperiment", + "evidently:StopExperiment" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "arn:[^:]*:[^:]*:[^:]*:[^:]*:project/[-a-zA-Z0-9._]*/experiment/[-a-zA-Z0-9._]*", + "type": "string" + }, + "Description": { + "maxLength": 160, + "minLength": 0, + "type": "string" + }, + "MetricGoals": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/MetricGoalObject" + }, + "maxItems": 3, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Name": { + "maxLength": 127, + "minLength": 1, + "pattern": "[-a-zA-Z0-9._]*", + "type": "string" + }, + "OnlineAbConfig": { + "$ref": "#/definitions/OnlineAbConfigObject" + }, + "Project": { + "maxLength": 2048, + "minLength": 0, + "pattern": "([-a-zA-Z0-9._]*)|(arn:[^:]*:[^:]*:[^:]*:[^:]*:project/[-a-zA-Z0-9._]*)", + "type": "string" + }, + "RandomizationSalt": { + "maxLength": 127, + "minLength": 0, + "pattern": ".*", + "type": "string" + }, + "RemoveSegment": { + "type": "boolean" + }, + "RunningStatus": { + "$ref": "#/definitions/RunningStatusObject", + "description": "Start Experiment. Default is False" + }, + "SamplingRate": { + "maximum": 100000, + "minimum": 0, + "type": "integer" + }, + "Segment": { + "maxLength": 2048, + "minLength": 0, + "pattern": "([-a-zA-Z0-9._]*)|(arn:[^:]*:[^:]*:[^:]*:[^:]*:segment/[-a-zA-Z0-9._]*)", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Treatments": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TreatmentObject" + }, + "maxItems": 5, + "minItems": 2, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name", + "Project", + "Treatments", + "MetricGoals", + "OnlineAbConfig" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-evidently", + "taggable": true, + "typeName": "AWS::Evidently::Experiment" +} diff --git a/src/schema/aws-evidently-feature.json b/src/schema/aws-evidently-feature.json index 79f99893..ff69c15d 100644 --- a/src/schema/aws-evidently-feature.json +++ b/src/schema/aws-evidently-feature.json @@ -1,213 +1,213 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Project" - ], - "definitions": { - "EntityOverride": { - "additionalProperties": false, - "properties": { - "EntityId": { - "type": "string" - }, - "Variation": { - "maxLength": 127, - "minLength": 1, - "pattern": "[-a-zA-Z0-9._]*", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "VariationObject": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "VariationName", - "StringValue" - ] - }, - { - "required": [ - "VariationName", - "BooleanValue" - ] - }, - { - "required": [ - "VariationName", - "LongValue" - ] - }, - { - "required": [ - "VariationName", - "DoubleValue" - ] - } - ], - "properties": { - "BooleanValue": { - "type": "boolean" - }, - "DoubleValue": { - "type": "number" - }, - "LongValue": { - "type": "number" - }, - "StringValue": { - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "VariationName": { - "maxLength": 127, - "minLength": 1, - "pattern": "[-a-zA-Z0-9._]*", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Evidently::Feature.", - "handlers": { - "create": { - "permissions": [ - "evidently:CreateFeature", - "evidently:TagResource", - "evidently:GetFeature" - ] - }, - "delete": { - "permissions": [ - "evidently:DeleteFeature", - "evidently:UntagResource", - "evidently:GetFeature" - ] - }, - "read": { - "permissions": [ - "evidently:GetFeature", - "evidently:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "evidently:UpdateFeature", - "evidently:ListTagsForResource", - "evidently:TagResource", - "evidently:UntagResource", - "evidently:GetFeature" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "minLength": 0, - "pattern": "arn:[^:]*:[^:]*:[^:]*:[^:]*:project/[-a-zA-Z0-9._]*/feature/[-a-zA-Z0-9._]*", - "type": "string" - }, - "DefaultVariation": { - "maxLength": 127, - "minLength": 1, - "pattern": "[-a-zA-Z0-9._]*", - "type": "string" - }, - "Description": { - "maxLength": 160, - "minLength": 0, - "type": "string" - }, - "EntityOverrides": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EntityOverride" - }, - "maxItems": 2500, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "EvaluationStrategy": { - "enum": [ - "ALL_RULES", - "DEFAULT_VARIATION" - ], - "type": "string" - }, - "Name": { - "maxLength": 127, - "minLength": 1, - "pattern": "[-a-zA-Z0-9._]*", - "type": "string" - }, - "Project": { - "maxLength": 2048, - "minLength": 0, - "pattern": "([-a-zA-Z0-9._]*)|(arn:[^:]*:[^:]*:[^:]*:[^:]*:project/[-a-zA-Z0-9._]*)", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Variations": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/VariationObject" - }, - "maxItems": 5, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name", - "Project", - "Variations" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-evidently", - "taggable": true, - "typeName": "AWS::Evidently::Feature" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Project" + ], + "definitions": { + "EntityOverride": { + "additionalProperties": false, + "properties": { + "EntityId": { + "type": "string" + }, + "Variation": { + "maxLength": 127, + "minLength": 1, + "pattern": "[-a-zA-Z0-9._]*", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VariationObject": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "VariationName", + "StringValue" + ] + }, + { + "required": [ + "VariationName", + "BooleanValue" + ] + }, + { + "required": [ + "VariationName", + "LongValue" + ] + }, + { + "required": [ + "VariationName", + "DoubleValue" + ] + } + ], + "properties": { + "BooleanValue": { + "type": "boolean" + }, + "DoubleValue": { + "type": "number" + }, + "LongValue": { + "type": "number" + }, + "StringValue": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "VariationName": { + "maxLength": 127, + "minLength": 1, + "pattern": "[-a-zA-Z0-9._]*", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Evidently::Feature.", + "handlers": { + "create": { + "permissions": [ + "evidently:CreateFeature", + "evidently:TagResource", + "evidently:GetFeature" + ] + }, + "delete": { + "permissions": [ + "evidently:DeleteFeature", + "evidently:UntagResource", + "evidently:GetFeature" + ] + }, + "read": { + "permissions": [ + "evidently:GetFeature", + "evidently:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "evidently:UpdateFeature", + "evidently:ListTagsForResource", + "evidently:TagResource", + "evidently:UntagResource", + "evidently:GetFeature" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 0, + "pattern": "arn:[^:]*:[^:]*:[^:]*:[^:]*:project/[-a-zA-Z0-9._]*/feature/[-a-zA-Z0-9._]*", + "type": "string" + }, + "DefaultVariation": { + "maxLength": 127, + "minLength": 1, + "pattern": "[-a-zA-Z0-9._]*", + "type": "string" + }, + "Description": { + "maxLength": 160, + "minLength": 0, + "type": "string" + }, + "EntityOverrides": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EntityOverride" + }, + "maxItems": 2500, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "EvaluationStrategy": { + "enum": [ + "ALL_RULES", + "DEFAULT_VARIATION" + ], + "type": "string" + }, + "Name": { + "maxLength": 127, + "minLength": 1, + "pattern": "[-a-zA-Z0-9._]*", + "type": "string" + }, + "Project": { + "maxLength": 2048, + "minLength": 0, + "pattern": "([-a-zA-Z0-9._]*)|(arn:[^:]*:[^:]*:[^:]*:[^:]*:project/[-a-zA-Z0-9._]*)", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Variations": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/VariationObject" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name", + "Project", + "Variations" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-evidently", + "taggable": true, + "typeName": "AWS::Evidently::Feature" +} diff --git a/src/schema/aws-evidently-launch.json b/src/schema/aws-evidently-launch.json index 52d61abf..c0c5be3e 100644 --- a/src/schema/aws-evidently-launch.json +++ b/src/schema/aws-evidently-launch.json @@ -1,315 +1,315 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Project" - ], - "definitions": { - "ExecutionStatusObject": { - "additionalProperties": false, - "properties": { - "DesiredState": { - "description": "Provide CANCELLED or COMPLETED as the launch desired state. Defaults to Completed if not provided.", - "type": "string" - }, - "Reason": { - "description": "Provide a reason for stopping the launch. Defaults to empty if not provided.", - "type": "string" - }, - "Status": { - "description": "Provide START or STOP action to apply on a launch", - "type": "string" - } - }, - "required": [ - "Status" - ], - "type": "object" - }, - "GroupToWeight": { - "additionalProperties": false, - "properties": { - "GroupName": { - "maxLength": 127, - "minLength": 1, - "pattern": "[-a-zA-Z0-9._]*", - "type": "string" - }, - "SplitWeight": { - "type": "integer" - } - }, - "required": [ - "GroupName", - "SplitWeight" - ], - "type": "object" - }, - "LaunchGroupObject": { - "additionalProperties": false, - "properties": { - "Description": { - "maxLength": 160, - "minLength": 0, - "type": "string" - }, - "Feature": { - "type": "string" - }, - "GroupName": { - "maxLength": 127, - "minLength": 1, - "pattern": "[-a-zA-Z0-9._]*", - "type": "string" - }, - "Variation": { - "type": "string" - } - }, - "required": [ - "GroupName", - "Feature", - "Variation" - ], - "type": "object" - }, - "MetricDefinitionObject": { - "additionalProperties": false, - "properties": { - "EntityIdKey": { - "description": "The JSON path to reference the entity id in the event.", - "type": "string" - }, - "EventPattern": { - "description": "Event patterns have the same structure as the events they match. Rules use event patterns to select events. An event pattern either matches an event or it doesn't.", - "type": "string" - }, - "MetricName": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\S]+$", - "type": "string" - }, - "UnitLabel": { - "maxLength": 256, - "minLength": 1, - "pattern": ".*", - "type": "string" - }, - "ValueKey": { - "description": "The JSON path to reference the numerical metric value in the event.", - "type": "string" - } - }, - "required": [ - "MetricName", - "EntityIdKey", - "ValueKey" - ], - "type": "object" - }, - "SegmentOverride": { - "additionalProperties": false, - "properties": { - "EvaluationOrder": { - "type": "integer" - }, - "Segment": { - "maxLength": 2048, - "minLength": 1, - "pattern": "([-a-zA-Z0-9._]*)|(arn:[^:]*:[^:]*:[^:]*:[^:]*:segment/[-a-zA-Z0-9._]*)", - "type": "string" - }, - "Weights": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/GroupToWeight" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Segment", - "EvaluationOrder", - "Weights" - ], - "type": "object" - }, - "StepConfig": { - "additionalProperties": false, - "properties": { - "GroupWeights": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/GroupToWeight" - }, - "type": "array", - "uniqueItems": true - }, - "SegmentOverrides": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SegmentOverride" - }, - "type": "array", - "uniqueItems": true - }, - "StartTime": { - "type": "string" - } - }, - "required": [ - "StartTime", - "GroupWeights" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Evidently::Launch.", - "handlers": { - "create": { - "permissions": [ - "evidently:CreateLaunch", - "evidently:TagResource", - "evidently:GetLaunch", - "evidently:StartLaunch" - ] - }, - "delete": { - "permissions": [ - "evidently:DeleteLaunch", - "evidently:UntagResource", - "evidently:GetLaunch" - ] - }, - "read": { - "permissions": [ - "evidently:GetLaunch", - "evidently:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "evidently:UpdateLaunch", - "evidently:ListTagsForResource", - "evidently:TagResource", - "evidently:UntagResource", - "evidently:GetLaunch", - "evidently:StartLaunch", - "evidently:StopLaunch" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "pattern": "arn:[^:]*:[^:]*:[^:]*:[^:]*:project/[-a-zA-Z0-9._]*/launch/[-a-zA-Z0-9._]*", - "type": "string" - }, - "Description": { - "maxLength": 160, - "minLength": 0, - "type": "string" - }, - "ExecutionStatus": { - "$ref": "#/definitions/ExecutionStatusObject", - "description": "Start or Stop Launch Launch. Default is not started." - }, - "Groups": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/LaunchGroupObject" - }, - "maxItems": 5, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "MetricMonitors": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/MetricDefinitionObject" - }, - "maxItems": 3, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "Name": { - "maxLength": 127, - "minLength": 1, - "pattern": "[-a-zA-Z0-9._]*", - "type": "string" - }, - "Project": { - "maxLength": 2048, - "minLength": 0, - "pattern": "([-a-zA-Z0-9._]*)|(arn:[^:]*:[^:]*:[^:]*:[^:]*:project/[-a-zA-Z0-9._]*)", - "type": "string" - }, - "RandomizationSalt": { - "maxLength": 127, - "minLength": 0, - "pattern": ".*", - "type": "string" - }, - "ScheduledSplitsConfig": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StepConfig" - }, - "maxItems": 6, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name", - "Project", - "Groups", - "ScheduledSplitsConfig" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-evidently", - "taggable": true, - "typeName": "AWS::Evidently::Launch" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Project" + ], + "definitions": { + "ExecutionStatusObject": { + "additionalProperties": false, + "properties": { + "DesiredState": { + "description": "Provide CANCELLED or COMPLETED as the launch desired state. Defaults to Completed if not provided.", + "type": "string" + }, + "Reason": { + "description": "Provide a reason for stopping the launch. Defaults to empty if not provided.", + "type": "string" + }, + "Status": { + "description": "Provide START or STOP action to apply on a launch", + "type": "string" + } + }, + "required": [ + "Status" + ], + "type": "object" + }, + "GroupToWeight": { + "additionalProperties": false, + "properties": { + "GroupName": { + "maxLength": 127, + "minLength": 1, + "pattern": "[-a-zA-Z0-9._]*", + "type": "string" + }, + "SplitWeight": { + "type": "integer" + } + }, + "required": [ + "GroupName", + "SplitWeight" + ], + "type": "object" + }, + "LaunchGroupObject": { + "additionalProperties": false, + "properties": { + "Description": { + "maxLength": 160, + "minLength": 0, + "type": "string" + }, + "Feature": { + "type": "string" + }, + "GroupName": { + "maxLength": 127, + "minLength": 1, + "pattern": "[-a-zA-Z0-9._]*", + "type": "string" + }, + "Variation": { + "type": "string" + } + }, + "required": [ + "GroupName", + "Feature", + "Variation" + ], + "type": "object" + }, + "MetricDefinitionObject": { + "additionalProperties": false, + "properties": { + "EntityIdKey": { + "description": "The JSON path to reference the entity id in the event.", + "type": "string" + }, + "EventPattern": { + "description": "Event patterns have the same structure as the events they match. Rules use event patterns to select events. An event pattern either matches an event or it doesn't.", + "type": "string" + }, + "MetricName": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\S]+$", + "type": "string" + }, + "UnitLabel": { + "maxLength": 256, + "minLength": 1, + "pattern": ".*", + "type": "string" + }, + "ValueKey": { + "description": "The JSON path to reference the numerical metric value in the event.", + "type": "string" + } + }, + "required": [ + "MetricName", + "EntityIdKey", + "ValueKey" + ], + "type": "object" + }, + "SegmentOverride": { + "additionalProperties": false, + "properties": { + "EvaluationOrder": { + "type": "integer" + }, + "Segment": { + "maxLength": 2048, + "minLength": 1, + "pattern": "([-a-zA-Z0-9._]*)|(arn:[^:]*:[^:]*:[^:]*:[^:]*:segment/[-a-zA-Z0-9._]*)", + "type": "string" + }, + "Weights": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/GroupToWeight" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Segment", + "EvaluationOrder", + "Weights" + ], + "type": "object" + }, + "StepConfig": { + "additionalProperties": false, + "properties": { + "GroupWeights": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/GroupToWeight" + }, + "type": "array", + "uniqueItems": true + }, + "SegmentOverrides": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SegmentOverride" + }, + "type": "array", + "uniqueItems": true + }, + "StartTime": { + "type": "string" + } + }, + "required": [ + "StartTime", + "GroupWeights" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Evidently::Launch.", + "handlers": { + "create": { + "permissions": [ + "evidently:CreateLaunch", + "evidently:TagResource", + "evidently:GetLaunch", + "evidently:StartLaunch" + ] + }, + "delete": { + "permissions": [ + "evidently:DeleteLaunch", + "evidently:UntagResource", + "evidently:GetLaunch" + ] + }, + "read": { + "permissions": [ + "evidently:GetLaunch", + "evidently:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "evidently:UpdateLaunch", + "evidently:ListTagsForResource", + "evidently:TagResource", + "evidently:UntagResource", + "evidently:GetLaunch", + "evidently:StartLaunch", + "evidently:StopLaunch" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "arn:[^:]*:[^:]*:[^:]*:[^:]*:project/[-a-zA-Z0-9._]*/launch/[-a-zA-Z0-9._]*", + "type": "string" + }, + "Description": { + "maxLength": 160, + "minLength": 0, + "type": "string" + }, + "ExecutionStatus": { + "$ref": "#/definitions/ExecutionStatusObject", + "description": "Start or Stop Launch Launch. Default is not started." + }, + "Groups": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/LaunchGroupObject" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "MetricMonitors": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/MetricDefinitionObject" + }, + "maxItems": 3, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "Name": { + "maxLength": 127, + "minLength": 1, + "pattern": "[-a-zA-Z0-9._]*", + "type": "string" + }, + "Project": { + "maxLength": 2048, + "minLength": 0, + "pattern": "([-a-zA-Z0-9._]*)|(arn:[^:]*:[^:]*:[^:]*:[^:]*:project/[-a-zA-Z0-9._]*)", + "type": "string" + }, + "RandomizationSalt": { + "maxLength": 127, + "minLength": 0, + "pattern": ".*", + "type": "string" + }, + "ScheduledSplitsConfig": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StepConfig" + }, + "maxItems": 6, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name", + "Project", + "Groups", + "ScheduledSplitsConfig" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-evidently", + "taggable": true, + "typeName": "AWS::Evidently::Launch" +} diff --git a/src/schema/aws-evidently-project.json b/src/schema/aws-evidently-project.json index 83351b3c..877ebd63 100644 --- a/src/schema/aws-evidently-project.json +++ b/src/schema/aws-evidently-project.json @@ -1,222 +1,222 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "AppConfigResourceObject": { - "additionalProperties": false, - "properties": { - "ApplicationId": { - "pattern": "[a-z0-9]{4,7}", - "type": "string" - }, - "EnvironmentId": { - "pattern": "[a-z0-9]{4,7}", - "type": "string" - } - }, - "required": [ - "ApplicationId", - "EnvironmentId" - ], - "type": "object" - }, - "DataDeliveryObject": { - "additionalProperties": false, - "description": "Destinations for data.", - "oneOf": [ - { - "required": [ - "S3" - ] - }, - { - "required": [ - "LogGroup" - ] - } - ], - "properties": { - "LogGroup": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[-a-zA-Z0-9._/]+$", - "type": "string" - }, - "S3": { - "$ref": "#/definitions/S3Destination" - } - }, - "type": "object" - }, - "S3Destination": { - "additionalProperties": false, - "properties": { - "BucketName": { - "maxLength": 63, - "minLength": 3, - "pattern": "^[a-z0-9][-a-z0-9]*[a-z0-9]$", - "type": "string" - }, - "Prefix": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^[-a-zA-Z0-9!_.*'()/]*$", - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Evidently::Project", - "handlers": { - "create": { - "permissions": [ - "evidently:CreateProject", - "evidently:GetProject", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:ListLogDeliveries", - "s3:PutBucketPolicy", - "s3:GetBucketPolicy", - "evidently:TagResource", - "evidently:ExportProjectAsConfiguration", - "appconfig:GetEnvironment", - "appconfig:CreateConfigurationProfile", - "appconfig:CreateHostedConfigurationVersion", - "appconfig:CreateExtensionAssociation", - "appconfig:TagResource", - "iam:GetRole", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "evidently:DeleteProject", - "evidently:GetProject", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:DeleteLogDelivery", - "logs:ListLogDeliveries", - "s3:GetBucketPolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "evidently:UntagResource", - "appconfig:DeleteHostedConfigurationVersion", - "appconfig:DeleteExtensionAssociation", - "appconfig:DeleteConfigurationProfile" - ] - }, - "read": { - "permissions": [ - "evidently:GetProject", - "logs:GetLogDelivery", - "logs:ListLogDeliveries", - "s3:GetBucketPolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "evidently:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "evidently:UpdateProject", - "evidently:UpdateProjectDataDelivery", - "logs:GetLogDelivery", - "logs:UpdateLogDelivery", - "logs:ListLogDeliveries", - "s3:PutBucketPolicy", - "s3:GetBucketPolicy", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "evidently:TagResource", - "evidently:UntagResource", - "evidently:ListTagsForResource", - "evidently:GetProject", - "evidently:ExportProjectAsConfiguration", - "appconfig:GetEnvironment", - "appconfig:CreateConfigurationProfile", - "appconfig:CreateHostedConfigurationVersion", - "appconfig:CreateExtensionAssociation", - "appconfig:TagResource", - "iam:GetRole", - "iam:CreateServiceLinkedRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "AppConfigResource": { - "$ref": "#/definitions/AppConfigResourceObject" - }, - "Arn": { - "maxLength": 2048, - "minLength": 0, - "pattern": "arn:[^:]*:[^:]*:[^:]*:[^:]*:project/[-a-zA-Z0-9._]*", - "type": "string" - }, - "DataDelivery": { - "$ref": "#/definitions/DataDeliveryObject" - }, - "Description": { - "maxLength": 160, - "minLength": 0, - "type": "string" - }, - "Name": { - "maxLength": 127, - "minLength": 1, - "pattern": "[-a-zA-Z0-9._]*", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-evidently", - "taggable": true, - "typeName": "AWS::Evidently::Project" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "AppConfigResourceObject": { + "additionalProperties": false, + "properties": { + "ApplicationId": { + "pattern": "[a-z0-9]{4,7}", + "type": "string" + }, + "EnvironmentId": { + "pattern": "[a-z0-9]{4,7}", + "type": "string" + } + }, + "required": [ + "ApplicationId", + "EnvironmentId" + ], + "type": "object" + }, + "DataDeliveryObject": { + "additionalProperties": false, + "description": "Destinations for data.", + "oneOf": [ + { + "required": [ + "S3" + ] + }, + { + "required": [ + "LogGroup" + ] + } + ], + "properties": { + "LogGroup": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[-a-zA-Z0-9._/]+$", + "type": "string" + }, + "S3": { + "$ref": "#/definitions/S3Destination" + } + }, + "type": "object" + }, + "S3Destination": { + "additionalProperties": false, + "properties": { + "BucketName": { + "maxLength": 63, + "minLength": 3, + "pattern": "^[a-z0-9][-a-z0-9]*[a-z0-9]$", + "type": "string" + }, + "Prefix": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^[-a-zA-Z0-9!_.*'()/]*$", + "type": "string" + } + }, + "required": [ + "BucketName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Evidently::Project", + "handlers": { + "create": { + "permissions": [ + "evidently:CreateProject", + "evidently:GetProject", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "s3:PutBucketPolicy", + "s3:GetBucketPolicy", + "evidently:TagResource", + "evidently:ExportProjectAsConfiguration", + "appconfig:GetEnvironment", + "appconfig:CreateConfigurationProfile", + "appconfig:CreateHostedConfigurationVersion", + "appconfig:CreateExtensionAssociation", + "appconfig:TagResource", + "iam:GetRole", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "evidently:DeleteProject", + "evidently:GetProject", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "s3:GetBucketPolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "evidently:UntagResource", + "appconfig:DeleteHostedConfigurationVersion", + "appconfig:DeleteExtensionAssociation", + "appconfig:DeleteConfigurationProfile" + ] + }, + "read": { + "permissions": [ + "evidently:GetProject", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "s3:GetBucketPolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "evidently:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "evidently:UpdateProject", + "evidently:UpdateProjectDataDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:ListLogDeliveries", + "s3:PutBucketPolicy", + "s3:GetBucketPolicy", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "evidently:TagResource", + "evidently:UntagResource", + "evidently:ListTagsForResource", + "evidently:GetProject", + "evidently:ExportProjectAsConfiguration", + "appconfig:GetEnvironment", + "appconfig:CreateConfigurationProfile", + "appconfig:CreateHostedConfigurationVersion", + "appconfig:CreateExtensionAssociation", + "appconfig:TagResource", + "iam:GetRole", + "iam:CreateServiceLinkedRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AppConfigResource": { + "$ref": "#/definitions/AppConfigResourceObject" + }, + "Arn": { + "maxLength": 2048, + "minLength": 0, + "pattern": "arn:[^:]*:[^:]*:[^:]*:[^:]*:project/[-a-zA-Z0-9._]*", + "type": "string" + }, + "DataDelivery": { + "$ref": "#/definitions/DataDeliveryObject" + }, + "Description": { + "maxLength": 160, + "minLength": 0, + "type": "string" + }, + "Name": { + "maxLength": 127, + "minLength": 1, + "pattern": "[-a-zA-Z0-9._]*", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-evidently", + "taggable": true, + "typeName": "AWS::Evidently::Project" +} diff --git a/src/schema/aws-evidently-segment.json b/src/schema/aws-evidently-segment.json index f3d2d009..cc3eaeba 100644 --- a/src/schema/aws-evidently-segment.json +++ b/src/schema/aws-evidently-segment.json @@ -1,109 +1,109 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Evidently::Segment", - "handlers": { - "create": { - "permissions": [ - "evidently:CreateSegment", - "evidently:GetSegment", - "evidently:TagResource" - ] - }, - "delete": { - "permissions": [ - "evidently:DeleteSegment", - "evidently:GetSegment", - "evidently:UntagResource" - ] - }, - "list": { - "permissions": [ - "evidently:ListSegment", - "evidently:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "evidently:GetSegment", - "evidently:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "minLength": 0, - "pattern": "arn:[^:]*:[^:]*:[^:]*:[^:]*:segment/[-a-zA-Z0-9._]*", - "type": "string" - }, - "Description": { - "maxLength": 160, - "minLength": 0, - "type": "string" - }, - "Name": { - "maxLength": 127, - "minLength": 1, - "pattern": "[-a-zA-Z0-9._]*", - "type": "string" - }, - "Pattern": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-evidently", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::Evidently::Segment" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Evidently::Segment", + "handlers": { + "create": { + "permissions": [ + "evidently:CreateSegment", + "evidently:GetSegment", + "evidently:TagResource" + ] + }, + "delete": { + "permissions": [ + "evidently:DeleteSegment", + "evidently:GetSegment", + "evidently:UntagResource" + ] + }, + "list": { + "permissions": [ + "evidently:ListSegment", + "evidently:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "evidently:GetSegment", + "evidently:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 0, + "pattern": "arn:[^:]*:[^:]*:[^:]*:[^:]*:segment/[-a-zA-Z0-9._]*", + "type": "string" + }, + "Description": { + "maxLength": 160, + "minLength": 0, + "type": "string" + }, + "Name": { + "maxLength": 127, + "minLength": 1, + "pattern": "[-a-zA-Z0-9._]*", + "type": "string" + }, + "Pattern": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-evidently", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Evidently::Segment" +} diff --git a/src/schema/aws-finspace-environment.json b/src/schema/aws-finspace-environment.json index 5f26caf8..36326ed5 100644 --- a/src/schema/aws-finspace-environment.json +++ b/src/schema/aws-finspace-environment.json @@ -1,284 +1,284 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKeyId", - "/properties/SuperuserParameters", - "/properties/FederationParameters", - "/properties/DataBundles", - "/properties/Tags" - ], - "definitions": { - "DataBundleArn": { - "pattern": "^arn:aws:finspace:[A-Za-z0-9_/.-]{0,63}:\\d*:data-bundle/[0-9A-Za-z_-]{1,128}$", - "type": "string" - }, - "FederationParameters": { - "additionalProperties": false, - "description": "Additional parameters to identify Federation mode", - "properties": { - "ApplicationCallBackURL": { - "description": "SAML metadata URL to link with the Environment", - "pattern": "^https?://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]{1,1000}", - "type": "string" - }, - "AttributeMap": { - "description": "Attribute map for SAML configuration", - "insertionOrder": false, - "items": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "type": "array", - "uniqueItems": false - }, - "FederationProviderName": { - "description": "Federation provider name to link with the Environment", - "maxLength": 32, - "minLength": 1, - "pattern": "[^_\\p{Z}][\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}][^_\\p{Z}]+", - "type": "string" - }, - "FederationURN": { - "description": "SAML metadata URL to link with the Environment", - "type": "string" - }, - "SamlMetadataDocument": { - "description": "SAML metadata document to link the federation provider to the Environment", - "maxLength": 10000000, - "minLength": 1000, - "pattern": ".*", - "type": "string" - }, - "SamlMetadataURL": { - "description": "SAML metadata URL to link with the Environment", - "pattern": "^https?://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]{1,1000}", - "type": "string" - } - }, - "type": "object" - }, - "SuperuserParameters": { - "additionalProperties": false, - "description": "Parameters of the first Superuser for the FinSpace Environment", - "properties": { - "EmailAddress": { - "description": "Email address", - "maxLength": 128, - "minLength": 1, - "pattern": "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+[.]+[A-Za-z]+", - "type": "string" - }, - "FirstName": { - "description": "First name", - "maxLength": 50, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]{1,50}$", - "type": "string" - }, - "LastName": { - "description": "Last name", - "maxLength": 50, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]{1,50}$", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A list of all tags for a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "deprecatedProperties": [ - "/properties/DataBundles" - ], - "description": "An example resource schema demonstrating some basic constructs and validation rules.", - "handlers": { - "create": { - "permissions": [ - "finspace:CreateEnvironment", - "finspace:GetEnvironment", - "finspace:ListEnvironments", - "sts:AssumeRole" - ] - }, - "delete": { - "permissions": [ - "finspace:DeleteEnvironment", - "finspace:GetEnvironment" - ] - }, - "list": { - "permissions": [ - "finspace:ListEnvironments" - ] - }, - "read": { - "permissions": [ - "finspace:GetEnvironment" - ] - }, - "update": { - "permissions": [ - "finspace:UpdateEnvironment" - ] - } - }, - "primaryIdentifier": [ - "/properties/EnvironmentId" - ], - "properties": { - "AwsAccountId": { - "description": "AWS account ID associated with the Environment", - "pattern": "^[a-zA-Z0-9]{1,26}$", - "type": "string" - }, - "DataBundles": { - "description": "ARNs of FinSpace Data Bundles to install", - "items": { - "$ref": "#/definitions/DataBundleArn" - }, - "type": "array", - "uniqueItems": false - }, - "DedicatedServiceAccountId": { - "description": "ID for FinSpace created account used to store Environment artifacts", - "pattern": "^[a-zA-Z0-9]{1,26}$", - "type": "string" - }, - "Description": { - "description": "Description of the Environment", - "pattern": "^[a-zA-Z0-9. ]{1,1000}$", - "type": "string" - }, - "EnvironmentArn": { - "description": "ARN of the Environment", - "pattern": "^arn:aws:finspace:[A-Za-z0-9_/.-]{0,63}:\\d+:environment/[0-9A-Za-z_-]{1,128}$", - "type": "string" - }, - "EnvironmentId": { - "description": "Unique identifier for representing FinSpace Environment", - "pattern": "^[a-zA-Z0-9]{1,26}$", - "type": "string" - }, - "EnvironmentUrl": { - "description": "URL used to login to the Environment", - "pattern": "^[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]{1,1000}", - "type": "string" - }, - "FederationMode": { - "description": "Federation mode used with the Environment", - "enum": [ - "LOCAL", - "FEDERATED" - ], - "type": "string" - }, - "FederationParameters": { - "$ref": "#/definitions/FederationParameters" - }, - "KmsKeyId": { - "description": "KMS key used to encrypt customer data within FinSpace Environment infrastructure", - "pattern": "^[a-zA-Z-0-9-:\\/]*{1,1000}$", - "type": "string" - }, - "Name": { - "description": "Name of the Environment", - "pattern": "^[a-zA-Z0-9]+[a-zA-Z0-9-]*[a-zA-Z0-9]{1,255}$", - "type": "string" - }, - "SageMakerStudioDomainUrl": { - "description": "SageMaker Studio Domain URL associated with the Environment", - "pattern": "^[a-zA-Z-0-9-:\\/.]*{1,1000}$", - "type": "string" - }, - "Status": { - "description": "State of the Environment", - "enum": [ - "CREATE_REQUESTED", - "CREATING", - "CREATED", - "DELETE_REQUESTED", - "DELETING", - "DELETED", - "FAILED_CREATION", - "FAILED_DELETION", - "RETRY_DELETION", - "SUSPENDED" - ], - "type": "string" - }, - "SuperuserParameters": { - "$ref": "#/definitions/SuperuserParameters" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/EnvironmentId", - "/properties/Status", - "/properties/SageMakerStudioDomainUrl", - "/properties/EnvironmentArn", - "/properties/EnvironmentUrl", - "/properties/AwsAccountId", - "/properties/DedicatedServiceAccountId" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::FinSpace::Environment", - "writeOnlyProperties": [ - "/properties/SuperuserParameters", - "/properties/FederationParameters/AttributeMap", - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KmsKeyId", + "/properties/SuperuserParameters", + "/properties/FederationParameters", + "/properties/DataBundles", + "/properties/Tags" + ], + "definitions": { + "DataBundleArn": { + "pattern": "^arn:aws:finspace:[A-Za-z0-9_/.-]{0,63}:\\d*:data-bundle/[0-9A-Za-z_-]{1,128}$", + "type": "string" + }, + "FederationParameters": { + "additionalProperties": false, + "description": "Additional parameters to identify Federation mode", + "properties": { + "ApplicationCallBackURL": { + "description": "SAML metadata URL to link with the Environment", + "pattern": "^https?://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]{1,1000}", + "type": "string" + }, + "AttributeMap": { + "description": "Attribute map for SAML configuration", + "insertionOrder": false, + "items": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "type": "array", + "uniqueItems": false + }, + "FederationProviderName": { + "description": "Federation provider name to link with the Environment", + "maxLength": 32, + "minLength": 1, + "pattern": "[^_\\p{Z}][\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}][^_\\p{Z}]+", + "type": "string" + }, + "FederationURN": { + "description": "SAML metadata URL to link with the Environment", + "type": "string" + }, + "SamlMetadataDocument": { + "description": "SAML metadata document to link the federation provider to the Environment", + "maxLength": 10000000, + "minLength": 1000, + "pattern": ".*", + "type": "string" + }, + "SamlMetadataURL": { + "description": "SAML metadata URL to link with the Environment", + "pattern": "^https?://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]{1,1000}", + "type": "string" + } + }, + "type": "object" + }, + "SuperuserParameters": { + "additionalProperties": false, + "description": "Parameters of the first Superuser for the FinSpace Environment", + "properties": { + "EmailAddress": { + "description": "Email address", + "maxLength": 128, + "minLength": 1, + "pattern": "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+[.]+[A-Za-z]+", + "type": "string" + }, + "FirstName": { + "description": "First name", + "maxLength": 50, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]{1,50}$", + "type": "string" + }, + "LastName": { + "description": "Last name", + "maxLength": 50, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]{1,50}$", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A list of all tags for a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/DataBundles" + ], + "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "handlers": { + "create": { + "permissions": [ + "finspace:CreateEnvironment", + "finspace:GetEnvironment", + "finspace:ListEnvironments", + "sts:AssumeRole" + ] + }, + "delete": { + "permissions": [ + "finspace:DeleteEnvironment", + "finspace:GetEnvironment" + ] + }, + "list": { + "permissions": [ + "finspace:ListEnvironments" + ] + }, + "read": { + "permissions": [ + "finspace:GetEnvironment" + ] + }, + "update": { + "permissions": [ + "finspace:UpdateEnvironment" + ] + } + }, + "primaryIdentifier": [ + "/properties/EnvironmentId" + ], + "properties": { + "AwsAccountId": { + "description": "AWS account ID associated with the Environment", + "pattern": "^[a-zA-Z0-9]{1,26}$", + "type": "string" + }, + "DataBundles": { + "description": "ARNs of FinSpace Data Bundles to install", + "items": { + "$ref": "#/definitions/DataBundleArn" + }, + "type": "array", + "uniqueItems": false + }, + "DedicatedServiceAccountId": { + "description": "ID for FinSpace created account used to store Environment artifacts", + "pattern": "^[a-zA-Z0-9]{1,26}$", + "type": "string" + }, + "Description": { + "description": "Description of the Environment", + "pattern": "^[a-zA-Z0-9. ]{1,1000}$", + "type": "string" + }, + "EnvironmentArn": { + "description": "ARN of the Environment", + "pattern": "^arn:aws:finspace:[A-Za-z0-9_/.-]{0,63}:\\d+:environment/[0-9A-Za-z_-]{1,128}$", + "type": "string" + }, + "EnvironmentId": { + "description": "Unique identifier for representing FinSpace Environment", + "pattern": "^[a-zA-Z0-9]{1,26}$", + "type": "string" + }, + "EnvironmentUrl": { + "description": "URL used to login to the Environment", + "pattern": "^[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]{1,1000}", + "type": "string" + }, + "FederationMode": { + "description": "Federation mode used with the Environment", + "enum": [ + "LOCAL", + "FEDERATED" + ], + "type": "string" + }, + "FederationParameters": { + "$ref": "#/definitions/FederationParameters" + }, + "KmsKeyId": { + "description": "KMS key used to encrypt customer data within FinSpace Environment infrastructure", + "pattern": "^[a-zA-Z-0-9-:\\/]*{1,1000}$", + "type": "string" + }, + "Name": { + "description": "Name of the Environment", + "pattern": "^[a-zA-Z0-9]+[a-zA-Z0-9-]*[a-zA-Z0-9]{1,255}$", + "type": "string" + }, + "SageMakerStudioDomainUrl": { + "description": "SageMaker Studio Domain URL associated with the Environment", + "pattern": "^[a-zA-Z-0-9-:\\/.]*{1,1000}$", + "type": "string" + }, + "Status": { + "description": "State of the Environment", + "enum": [ + "CREATE_REQUESTED", + "CREATING", + "CREATED", + "DELETE_REQUESTED", + "DELETING", + "DELETED", + "FAILED_CREATION", + "FAILED_DELETION", + "RETRY_DELETION", + "SUSPENDED" + ], + "type": "string" + }, + "SuperuserParameters": { + "$ref": "#/definitions/SuperuserParameters" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/EnvironmentId", + "/properties/Status", + "/properties/SageMakerStudioDomainUrl", + "/properties/EnvironmentArn", + "/properties/EnvironmentUrl", + "/properties/AwsAccountId", + "/properties/DedicatedServiceAccountId" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::FinSpace::Environment", + "writeOnlyProperties": [ + "/properties/SuperuserParameters", + "/properties/FederationParameters/AttributeMap", + "/properties/Tags" + ] +} diff --git a/src/schema/aws-fis-experimenttemplate.json b/src/schema/aws-fis-experimenttemplate.json index c0b91b68..3e756178 100644 --- a/src/schema/aws-fis-experimenttemplate.json +++ b/src/schema/aws-fis-experimenttemplate.json @@ -1,484 +1,483 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Tags", - "/properties/ExperimentOptions/AccountTargeting" - ], - "definitions": { - "ActionId": { - "description": "The ID of the action.", - "maxLength": 64, - "type": "string" - }, - "CloudWatchDashboard": { - "additionalProperties": false, - "properties": { - "DashboardIdentifier": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DashboardIdentifier" - ], - "type": "object" - }, - "ExperimentTemplateAction": { - "additionalProperties": false, - "description": "Specifies an action for the experiment template.", - "properties": { - "ActionId": { - "$ref": "#/definitions/ActionId" - }, - "Description": { - "$ref": "#/definitions/ExperimentTemplateActionItemDescription" - }, - "Parameters": { - "additionalProperties": false, - "description": "The parameters for the action, if applicable.", - "patternProperties": { - ".{1,64}": { - "$ref": "#/definitions/ExperimentTemplateActionItemParameter" - } - }, - "type": "object" - }, - "StartAfter": { - "$ref": "#/definitions/ExperimentTemplateActionItemStartAfterList" - }, - "Targets": { - "additionalProperties": false, - "description": "One or more targets for the action.", - "patternProperties": { - ".{1,64}": { - "$ref": "#/definitions/ExperimentTemplateActionItemTarget" - } - }, - "type": "object" - } - }, - "required": [ - "ActionId" - ], - "type": "object" - }, - "ExperimentTemplateActionItemDescription": { - "description": "A description for the action.", - "maxLength": 512, - "type": "string" - }, - "ExperimentTemplateActionItemParameter": { - "maxLength": 1024, - "type": "string" - }, - "ExperimentTemplateActionItemStartAfter": { - "maxLength": 64, - "type": "string" - }, - "ExperimentTemplateActionItemStartAfterList": { - "description": "The names of the actions that must be completed before the current action starts.", - "items": { - "$ref": "#/definitions/ExperimentTemplateActionItemStartAfter" - }, - "type": "array" - }, - "ExperimentTemplateActionItemTarget": { - "maxLength": 64, - "type": "string" - }, - "ExperimentTemplateActionMap": { - "additionalProperties": false, - "description": "The actions for the experiment.", - "patternProperties": { - "[\\S]{1,64}": { - "$ref": "#/definitions/ExperimentTemplateAction" - } - }, - "type": "object" - }, - "ExperimentTemplateDescription": { - "description": "A description for the experiment template.", - "maxLength": 512, - "type": "string" - }, - "ExperimentTemplateExperimentOptions": { - "additionalProperties": false, - "properties": { - "AccountTargeting": { - "description": "The account targeting setting for the experiment template.", - "enum": [ - "multi-account", - "single-account" - ], - "type": "string" - }, - "EmptyTargetResolutionMode": { - "description": "The target resolution failure mode for the experiment template.", - "enum": [ - "fail", - "skip" - ], - "type": "string" - } - }, - "type": "object" - }, - "ExperimentTemplateExperimentReportConfiguration": { - "additionalProperties": false, - "properties": { - "DataSources": { - "additionalProperties": false, - "properties": { - "CloudWatchDashboards": { - "items": { - "$ref": "#/definitions/CloudWatchDashboard" - }, - "type": "array" - } - }, - "type": "object" - }, - "Outputs": { - "additionalProperties": false, - "properties": { - "ExperimentReportS3Configuration": { - "additionalProperties": false, - "properties": { - "BucketName": { - "maxLength": 63, - "minLength": 3, - "type": "string" - }, - "Prefix": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - } - }, - "required": [ - "ExperimentReportS3Configuration" - ], - "type": "object" - }, - "PostExperimentDuration": { - "type": "string" - }, - "PreExperimentDuration": { - "type": "string" - } - }, - "required": [ - "Outputs", - "DataSources" - ], - "type": "object" - }, - "ExperimentTemplateId": { - "type": "string" - }, - "ExperimentTemplateLogConfiguration": { - "additionalProperties": false, - "properties": { - "CloudWatchLogsConfiguration": { - "additionalProperties": false, - "properties": { - "LogGroupArn": { - "maxLength": 2048, - "minLength": 20, - "type": "string" - } - }, - "required": [ - "LogGroupArn" - ], - "type": "object" - }, - "LogSchemaVersion": { - "minimum": 1, - "type": "integer" - }, - "S3Configuration": { - "additionalProperties": false, - "properties": { - "BucketName": { - "maxLength": 63, - "minLength": 3, - "type": "string" - }, - "Prefix": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - } - }, - "required": [ - "LogSchemaVersion" - ], - "type": "object" - }, - "ExperimentTemplateStopCondition": { - "additionalProperties": false, - "properties": { - "Source": { - "$ref": "#/definitions/StopConditionSource" - }, - "Value": { - "$ref": "#/definitions/StopConditionValue" - } - }, - "required": [ - "Source" - ], - "type": "object" - }, - "ExperimentTemplateStopConditionList": { - "description": "One or more stop conditions.", - "items": { - "$ref": "#/definitions/ExperimentTemplateStopCondition" - }, - "type": "array" - }, - "ExperimentTemplateTarget": { - "additionalProperties": false, - "description": "Specifies a target for an experiment.", - "properties": { - "Filters": { - "$ref": "#/definitions/ExperimentTemplateTargetFilterList" - }, - "Parameters": { - "additionalProperties": false, - "patternProperties": { - ".{1,64}": { - "maxLength": 1024, - "type": "string" - } - }, - "type": "object" - }, - "ResourceArns": { - "$ref": "#/definitions/ResourceArnList" - }, - "ResourceTags": { - "additionalProperties": false, - "patternProperties": { - ".{1,128}": { - "maxLength": 256, - "type": "string" - } - }, - "type": "object" - }, - "ResourceType": { - "$ref": "#/definitions/ResourceType" - }, - "SelectionMode": { - "$ref": "#/definitions/ExperimentTemplateTargetSelectionMode" - } - }, - "required": [ - "ResourceType", - "SelectionMode" - ], - "type": "object" - }, - "ExperimentTemplateTargetFilter": { - "additionalProperties": false, - "description": "Describes a filter used for the target resource input in an experiment template.", - "properties": { - "Path": { - "$ref": "#/definitions/ExperimentTemplateTargetFilterPath" - }, - "Values": { - "$ref": "#/definitions/ExperimentTemplateTargetFilterValues" - } - }, - "required": [ - "Path", - "Values" - ], - "type": "object" - }, - "ExperimentTemplateTargetFilterList": { - "items": { - "$ref": "#/definitions/ExperimentTemplateTargetFilter" - }, - "type": "array" - }, - "ExperimentTemplateTargetFilterPath": { - "description": "The attribute path for the filter.", - "maxLength": 256, - "type": "string" - }, - "ExperimentTemplateTargetFilterValue": { - "maxLength": 128, - "type": "string" - }, - "ExperimentTemplateTargetFilterValues": { - "description": "The attribute values for the filter.", - "items": { - "$ref": "#/definitions/ExperimentTemplateTargetFilterValue" - }, - "type": "array" - }, - "ExperimentTemplateTargetMap": { - "additionalProperties": false, - "description": "The targets for the experiment.", - "patternProperties": { - ".{1,64}": { - "$ref": "#/definitions/ExperimentTemplateTarget" - } - }, - "type": "object" - }, - "ExperimentTemplateTargetSelectionMode": { - "description": "Scopes the identified resources to a specific number of the resources at random, or a percentage of the resources.", - "maxLength": 64, - "type": "string" - }, - "ResourceArn": { - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "ResourceArnList": { - "description": "The Amazon Resource Names (ARNs) of the target resources.", - "items": { - "$ref": "#/definitions/ResourceArn" - }, - "type": "array" - }, - "ResourceType": { - "description": "The AWS resource type. The resource type must be supported for the specified action.", - "maxLength": 64, - "type": "string" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) of an IAM role that grants the AWS FIS service permission to perform service actions on your behalf.", - "maxLength": 1224, - "type": "string" - }, - "StopConditionSource": { - "maxLength": 64, - "type": "string" - }, - "StopConditionValue": { - "maxLength": 2048, - "minLength": 20, - "type": "string" - } - }, - "description": "Resource schema for AWS::FIS::ExperimentTemplate", - "handlers": { - "create": { - "permissions": [ - "fis:CreateExperimentTemplate", - "fis:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "fis:DeleteExperimentTemplate" - ] - }, - "list": { - "permissions": [ - "fis:ListExperimentTemplates", - "fis:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "fis:GetExperimentTemplate", - "fis:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "fis:UpdateExperimentTemplate", - "fis:TagResource", - "fis:UntagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Actions": { - "$ref": "#/definitions/ExperimentTemplateActionMap" - }, - "Description": { - "$ref": "#/definitions/ExperimentTemplateDescription" - }, - "ExperimentOptions": { - "$ref": "#/definitions/ExperimentTemplateExperimentOptions" - }, - "ExperimentReportConfiguration": { - "$ref": "#/definitions/ExperimentTemplateExperimentReportConfiguration" - }, - "Id": { - "$ref": "#/definitions/ExperimentTemplateId" - }, - "LogConfiguration": { - "$ref": "#/definitions/ExperimentTemplateLogConfiguration" - }, - "RoleArn": { - "$ref": "#/definitions/RoleArn" - }, - "StopConditions": { - "$ref": "#/definitions/ExperimentTemplateStopConditionList" - }, - "Tags": { - "additionalProperties": false, - "patternProperties": { - ".{1,128}": { - "maxLength": 256, - "type": "string" - } - }, - "type": "object" - }, - "Targets": { - "$ref": "#/definitions/ExperimentTemplateTargetMap" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Description", - "StopConditions", - "Targets", - "RoleArn", - "Tags" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-fis.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "fis:TagResource", - "fis:UntagResource", - "fis:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::FIS::ExperimentTemplate" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tags", + "/properties/ExperimentOptions/AccountTargeting" + ], + "definitions": { + "ActionId": { + "description": "The ID of the action.", + "maxLength": 64, + "type": "string" + }, + "CloudWatchDashboard": { + "additionalProperties": false, + "properties": { + "DashboardIdentifier": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DashboardIdentifier" + ], + "type": "object" + }, + "ExperimentTemplateAction": { + "additionalProperties": false, + "description": "Specifies an action for the experiment template.", + "properties": { + "ActionId": { + "$ref": "#/definitions/ActionId" + }, + "Description": { + "$ref": "#/definitions/ExperimentTemplateActionItemDescription" + }, + "Parameters": { + "additionalProperties": false, + "description": "The parameters for the action, if applicable.", + "patternProperties": { + ".{1,64}": { + "$ref": "#/definitions/ExperimentTemplateActionItemParameter" + } + }, + "type": "object" + }, + "StartAfter": { + "$ref": "#/definitions/ExperimentTemplateActionItemStartAfterList" + }, + "Targets": { + "additionalProperties": false, + "description": "One or more targets for the action.", + "patternProperties": { + ".{1,64}": { + "$ref": "#/definitions/ExperimentTemplateActionItemTarget" + } + }, + "type": "object" + } + }, + "required": [ + "ActionId" + ], + "type": "object" + }, + "ExperimentTemplateActionItemDescription": { + "description": "A description for the action.", + "maxLength": 512, + "type": "string" + }, + "ExperimentTemplateActionItemParameter": { + "maxLength": 1024, + "type": "string" + }, + "ExperimentTemplateActionItemStartAfter": { + "maxLength": 64, + "type": "string" + }, + "ExperimentTemplateActionItemStartAfterList": { + "description": "The names of the actions that must be completed before the current action starts.", + "items": { + "$ref": "#/definitions/ExperimentTemplateActionItemStartAfter" + }, + "type": "array" + }, + "ExperimentTemplateActionItemTarget": { + "maxLength": 64, + "type": "string" + }, + "ExperimentTemplateActionMap": { + "additionalProperties": false, + "description": "The actions for the experiment.", + "patternProperties": { + "[\\S]{1,64}": { + "$ref": "#/definitions/ExperimentTemplateAction" + } + }, + "type": "object" + }, + "ExperimentTemplateDescription": { + "description": "A description for the experiment template.", + "maxLength": 512, + "type": "string" + }, + "ExperimentTemplateExperimentOptions": { + "additionalProperties": false, + "properties": { + "AccountTargeting": { + "description": "The account targeting setting for the experiment template.", + "enum": [ + "multi-account", + "single-account" + ], + "type": "string" + }, + "EmptyTargetResolutionMode": { + "description": "The target resolution failure mode for the experiment template.", + "enum": [ + "fail", + "skip" + ], + "type": "string" + } + }, + "type": "object" + }, + "ExperimentTemplateExperimentReportConfiguration": { + "additionalProperties": false, + "properties": { + "DataSources": { + "additionalProperties": false, + "properties": { + "CloudWatchDashboards": { + "items": { + "$ref": "#/definitions/CloudWatchDashboard" + }, + "type": "array" + } + }, + "type": "object" + }, + "Outputs": { + "additionalProperties": false, + "properties": { + "ExperimentReportS3Configuration": { + "additionalProperties": false, + "properties": { + "BucketName": { + "maxLength": 63, + "minLength": 3, + "type": "string" + }, + "Prefix": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "BucketName" + ], + "type": "object" + } + }, + "required": [ + "ExperimentReportS3Configuration" + ], + "type": "object" + }, + "PostExperimentDuration": { + "type": "string" + }, + "PreExperimentDuration": { + "type": "string" + } + }, + "required": [ + "Outputs" + ], + "type": "object" + }, + "ExperimentTemplateId": { + "type": "string" + }, + "ExperimentTemplateLogConfiguration": { + "additionalProperties": false, + "properties": { + "CloudWatchLogsConfiguration": { + "additionalProperties": false, + "properties": { + "LogGroupArn": { + "maxLength": 2048, + "minLength": 20, + "type": "string" + } + }, + "required": [ + "LogGroupArn" + ], + "type": "object" + }, + "LogSchemaVersion": { + "minimum": 1, + "type": "integer" + }, + "S3Configuration": { + "additionalProperties": false, + "properties": { + "BucketName": { + "maxLength": 63, + "minLength": 3, + "type": "string" + }, + "Prefix": { + "maxLength": 700, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "BucketName" + ], + "type": "object" + } + }, + "required": [ + "LogSchemaVersion" + ], + "type": "object" + }, + "ExperimentTemplateStopCondition": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/StopConditionSource" + }, + "Value": { + "$ref": "#/definitions/StopConditionValue" + } + }, + "required": [ + "Source" + ], + "type": "object" + }, + "ExperimentTemplateStopConditionList": { + "description": "One or more stop conditions.", + "items": { + "$ref": "#/definitions/ExperimentTemplateStopCondition" + }, + "type": "array" + }, + "ExperimentTemplateTarget": { + "additionalProperties": false, + "description": "Specifies a target for an experiment.", + "properties": { + "Filters": { + "$ref": "#/definitions/ExperimentTemplateTargetFilterList" + }, + "Parameters": { + "additionalProperties": false, + "patternProperties": { + ".{1,64}": { + "maxLength": 1024, + "type": "string" + } + }, + "type": "object" + }, + "ResourceArns": { + "$ref": "#/definitions/ResourceArnList" + }, + "ResourceTags": { + "additionalProperties": false, + "patternProperties": { + ".{1,128}": { + "maxLength": 256, + "type": "string" + } + }, + "type": "object" + }, + "ResourceType": { + "$ref": "#/definitions/ResourceType" + }, + "SelectionMode": { + "$ref": "#/definitions/ExperimentTemplateTargetSelectionMode" + } + }, + "required": [ + "ResourceType", + "SelectionMode" + ], + "type": "object" + }, + "ExperimentTemplateTargetFilter": { + "additionalProperties": false, + "description": "Describes a filter used for the target resource input in an experiment template.", + "properties": { + "Path": { + "$ref": "#/definitions/ExperimentTemplateTargetFilterPath" + }, + "Values": { + "$ref": "#/definitions/ExperimentTemplateTargetFilterValues" + } + }, + "required": [ + "Path", + "Values" + ], + "type": "object" + }, + "ExperimentTemplateTargetFilterList": { + "items": { + "$ref": "#/definitions/ExperimentTemplateTargetFilter" + }, + "type": "array" + }, + "ExperimentTemplateTargetFilterPath": { + "description": "The attribute path for the filter.", + "maxLength": 256, + "type": "string" + }, + "ExperimentTemplateTargetFilterValue": { + "maxLength": 128, + "type": "string" + }, + "ExperimentTemplateTargetFilterValues": { + "description": "The attribute values for the filter.", + "items": { + "$ref": "#/definitions/ExperimentTemplateTargetFilterValue" + }, + "type": "array" + }, + "ExperimentTemplateTargetMap": { + "additionalProperties": false, + "description": "The targets for the experiment.", + "patternProperties": { + ".{1,64}": { + "$ref": "#/definitions/ExperimentTemplateTarget" + } + }, + "type": "object" + }, + "ExperimentTemplateTargetSelectionMode": { + "description": "Scopes the identified resources to a specific number of the resources at random, or a percentage of the resources.", + "maxLength": 64, + "type": "string" + }, + "ResourceArn": { + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "ResourceArnList": { + "description": "The Amazon Resource Names (ARNs) of the target resources.", + "items": { + "$ref": "#/definitions/ResourceArn" + }, + "type": "array" + }, + "ResourceType": { + "description": "The AWS resource type. The resource type must be supported for the specified action.", + "maxLength": 64, + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of an IAM role that grants the AWS FIS service permission to perform service actions on your behalf.", + "maxLength": 1224, + "type": "string" + }, + "StopConditionSource": { + "maxLength": 64, + "type": "string" + }, + "StopConditionValue": { + "maxLength": 2048, + "minLength": 20, + "type": "string" + } + }, + "description": "Resource schema for AWS::FIS::ExperimentTemplate", + "handlers": { + "create": { + "permissions": [ + "fis:CreateExperimentTemplate", + "fis:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "fis:DeleteExperimentTemplate" + ] + }, + "list": { + "permissions": [ + "fis:ListExperimentTemplates", + "fis:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "fis:GetExperimentTemplate", + "fis:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "fis:UpdateExperimentTemplate", + "fis:TagResource", + "fis:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Actions": { + "$ref": "#/definitions/ExperimentTemplateActionMap" + }, + "Description": { + "$ref": "#/definitions/ExperimentTemplateDescription" + }, + "ExperimentOptions": { + "$ref": "#/definitions/ExperimentTemplateExperimentOptions" + }, + "ExperimentReportConfiguration": { + "$ref": "#/definitions/ExperimentTemplateExperimentReportConfiguration" + }, + "Id": { + "$ref": "#/definitions/ExperimentTemplateId" + }, + "LogConfiguration": { + "$ref": "#/definitions/ExperimentTemplateLogConfiguration" + }, + "RoleArn": { + "$ref": "#/definitions/RoleArn" + }, + "StopConditions": { + "$ref": "#/definitions/ExperimentTemplateStopConditionList" + }, + "Tags": { + "additionalProperties": false, + "patternProperties": { + ".{1,128}": { + "maxLength": 256, + "type": "string" + } + }, + "type": "object" + }, + "Targets": { + "$ref": "#/definitions/ExperimentTemplateTargetMap" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Description", + "StopConditions", + "Targets", + "RoleArn", + "Tags" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-fis.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "fis:TagResource", + "fis:UntagResource", + "fis:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::FIS::ExperimentTemplate" +} diff --git a/src/schema/aws-fis-targetaccountconfiguration.json b/src/schema/aws-fis-targetaccountconfiguration.json index 2b2ffecb..ff528e45 100644 --- a/src/schema/aws-fis-targetaccountconfiguration.json +++ b/src/schema/aws-fis-targetaccountconfiguration.json @@ -1,97 +1,97 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ExperimentTemplateId", - "/properties/AccountId" - ], - "definitions": { - "TargetAccountConfigurationDescription": { - "description": "The description of the target account.", - "maxLength": 512, - "type": "string" - }, - "TargetAccountId": { - "description": "The AWS account ID of the target account.", - "maxLength": 512, - "type": "string" - }, - "TargetAccountRoleArn": { - "description": "The Amazon Resource Name (ARN) of an IAM role for the target account.", - "maxLength": 1224, - "type": "string" - }, - "TargetExperimentTemplateId": { - "description": "The ID of the experiment template.", - "type": "string" - } - }, - "description": "Resource schema for AWS::FIS::TargetAccountConfiguration", - "handlers": { - "create": { - "permissions": [ - "fis:CreateTargetAccountConfiguration" - ] - }, - "delete": { - "permissions": [ - "fis:DeleteTargetAccountConfiguration" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ExperimentTemplateId": { - "$ref": "resource-schema.json#/properties/ExperimentTemplateId" - } - }, - "required": [ - "ExperimentTemplateId" - ] - }, - "permissions": [ - "fis:ListTargetAccountConfigurations" - ] - }, - "read": { - "permissions": [ - "fis:GetTargetAccountConfiguration" - ] - }, - "update": { - "permissions": [ - "fis:UpdateTargetAccountConfiguration" - ] - } - }, - "primaryIdentifier": [ - "/properties/ExperimentTemplateId", - "/properties/AccountId" - ], - "properties": { - "AccountId": { - "$ref": "#/definitions/TargetAccountId" - }, - "Description": { - "$ref": "#/definitions/TargetAccountConfigurationDescription" - }, - "ExperimentTemplateId": { - "$ref": "#/definitions/TargetExperimentTemplateId" - }, - "RoleArn": { - "$ref": "#/definitions/TargetAccountRoleArn" - } - }, - "required": [ - "ExperimentTemplateId", - "AccountId", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-fis.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::FIS::TargetAccountConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ExperimentTemplateId", + "/properties/AccountId" + ], + "definitions": { + "TargetAccountConfigurationDescription": { + "description": "The description of the target account.", + "maxLength": 512, + "type": "string" + }, + "TargetAccountId": { + "description": "The AWS account ID of the target account.", + "maxLength": 512, + "type": "string" + }, + "TargetAccountRoleArn": { + "description": "The Amazon Resource Name (ARN) of an IAM role for the target account.", + "maxLength": 1224, + "type": "string" + }, + "TargetExperimentTemplateId": { + "description": "The ID of the experiment template.", + "type": "string" + } + }, + "description": "Resource schema for AWS::FIS::TargetAccountConfiguration", + "handlers": { + "create": { + "permissions": [ + "fis:CreateTargetAccountConfiguration" + ] + }, + "delete": { + "permissions": [ + "fis:DeleteTargetAccountConfiguration" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ExperimentTemplateId": { + "$ref": "resource-schema.json#/properties/ExperimentTemplateId" + } + }, + "required": [ + "ExperimentTemplateId" + ] + }, + "permissions": [ + "fis:ListTargetAccountConfigurations" + ] + }, + "read": { + "permissions": [ + "fis:GetTargetAccountConfiguration" + ] + }, + "update": { + "permissions": [ + "fis:UpdateTargetAccountConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/ExperimentTemplateId", + "/properties/AccountId" + ], + "properties": { + "AccountId": { + "$ref": "#/definitions/TargetAccountId" + }, + "Description": { + "$ref": "#/definitions/TargetAccountConfigurationDescription" + }, + "ExperimentTemplateId": { + "$ref": "#/definitions/TargetExperimentTemplateId" + }, + "RoleArn": { + "$ref": "#/definitions/TargetAccountRoleArn" + } + }, + "required": [ + "ExperimentTemplateId", + "AccountId", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-fis.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::FIS::TargetAccountConfiguration" +} diff --git a/src/schema/aws-fms-notificationchannel.json b/src/schema/aws-fms-notificationchannel.json index e4f0930b..c7454564 100644 --- a/src/schema/aws-fms-notificationchannel.json +++ b/src/schema/aws-fms-notificationchannel.json @@ -1,59 +1,59 @@ -{ - "additionalProperties": false, - "definitions": { - "ResourceArn": { - "description": "A resource ARN.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^([^\\s]+)$", - "type": "string" - } - }, - "description": "Designates the IAM role and Amazon Simple Notification Service (SNS) topic that AWS Firewall Manager uses to record SNS logs.", - "handlers": { - "create": { - "permissions": [ - "fms:PutNotificationChannel", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "fms:DeleteNotificationChannel" - ] - }, - "list": { - "permissions": [ - "fms:GetNotificationChannel" - ] - }, - "read": { - "permissions": [ - "fms:GetNotificationChannel" - ] - }, - "update": { - "permissions": [ - "fms:PutNotificationChannel", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/SnsTopicArn" - ], - "properties": { - "SnsRoleName": { - "$ref": "#/definitions/ResourceArn" - }, - "SnsTopicArn": { - "$ref": "#/definitions/ResourceArn" - } - }, - "required": [ - "SnsRoleName", - "SnsTopicArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-fms.git", - "typeName": "AWS::FMS::NotificationChannel" -} +{ + "additionalProperties": false, + "definitions": { + "ResourceArn": { + "description": "A resource ARN.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^([^\\s]+)$", + "type": "string" + } + }, + "description": "Designates the IAM role and Amazon Simple Notification Service (SNS) topic that AWS Firewall Manager uses to record SNS logs.", + "handlers": { + "create": { + "permissions": [ + "fms:PutNotificationChannel", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "fms:DeleteNotificationChannel" + ] + }, + "list": { + "permissions": [ + "fms:GetNotificationChannel" + ] + }, + "read": { + "permissions": [ + "fms:GetNotificationChannel" + ] + }, + "update": { + "permissions": [ + "fms:PutNotificationChannel", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/SnsTopicArn" + ], + "properties": { + "SnsRoleName": { + "$ref": "#/definitions/ResourceArn" + }, + "SnsTopicArn": { + "$ref": "#/definitions/ResourceArn" + } + }, + "required": [ + "SnsRoleName", + "SnsTopicArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-fms.git", + "typeName": "AWS::FMS::NotificationChannel" +} diff --git a/src/schema/aws-fms-policy.json b/src/schema/aws-fms-policy.json index fc80a68f..c0a2c12f 100644 --- a/src/schema/aws-fms-policy.json +++ b/src/schema/aws-fms-policy.json @@ -1,503 +1,521 @@ -{ - "additionalProperties": false, - "definitions": { - "AccountId": { - "description": "An AWS account ID.", - "maxLength": 12, - "minLength": 12, - "pattern": "^([0-9]*)$", - "type": "string" - }, - "Base62Id": { - "description": "A Base62 ID", - "maxLength": 22, - "minLength": 22, - "pattern": "^[a-z0-9A-Z]{22}$", - "type": "string" - }, - "FirewallDeploymentModel": { - "description": "Firewall deployment mode.", - "enum": [ - "DISTRIBUTED", - "CENTRALIZED" - ], - "type": "string" - }, - "IEMap": { - "additionalProperties": false, - "description": "An FMS includeMap or excludeMap.", - "properties": { - "ACCOUNT": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/AccountId" - }, - "type": "array" - }, - "ORGUNIT": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/OrganizationalUnitId" - }, - "type": "array" - } - }, - "type": "object" - }, - "ManagedServiceData": { - "description": "Firewall managed service data.", - "maxLength": 30000, - "minLength": 1, - "type": "string" - }, - "NetworkAclCommonPolicy": { - "additionalProperties": false, - "description": "Network ACL common policy.", - "properties": { - "NetworkAclEntrySet": { - "$ref": "#/definitions/NetworkAclEntrySet" - } - }, - "required": [ - "NetworkAclEntrySet" - ], - "type": "object" - }, - "NetworkAclEntry": { - "additionalProperties": false, - "description": "Network ACL entry.", - "properties": { - "CidrBlock": { - "description": "CIDR block.", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$", - "type": "string" - }, - "Egress": { - "description": "Whether the entry is an egress entry.", - "type": "boolean" - }, - "IcmpTypeCode": { - "additionalProperties": false, - "description": "ICMP type and code.", - "properties": { - "Code": { - "description": "Code.", - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "Type": { - "description": "Type.", - "maximum": 255, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "Code", - "Type" - ], - "type": "object" - }, - "Ipv6CidrBlock": { - "description": "IPv6 CIDR block.", - "pattern": "^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))(/(1[0-2]|[0-9]))?$", - "type": "string" - }, - "PortRange": { - "additionalProperties": false, - "description": "Port range.", - "properties": { - "From": { - "description": "From Port.", - "maximum": 65535, - "minimum": 0, - "type": "integer" - }, - "To": { - "description": "To Port.", - "maximum": 65535, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "From", - "To" - ], - "type": "object" - }, - "Protocol": { - "description": "Protocol.", - "pattern": "^(tcp|udp|icmp|-1|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$", - "type": "string" - }, - "RuleAction": { - "description": "Rule Action.", - "enum": [ - "allow", - "deny" - ], - "type": "string" - } - }, - "required": [ - "Egress", - "Protocol", - "RuleAction" - ], - "type": "object" - }, - "NetworkAclEntryList": { - "description": "NetworkAcl entry list.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/NetworkAclEntry" - }, - "type": "array" - }, - "NetworkAclEntrySet": { - "additionalProperties": false, - "anyOf": [ - { - "required": [ - "FirstEntries" - ] - }, - { - "required": [ - "LastEntries" - ] - } - ], - "description": "Network ACL entry set.", - "properties": { - "FirstEntries": { - "$ref": "#/definitions/NetworkAclEntryList" - }, - "ForceRemediateForFirstEntries": { - "type": "boolean" - }, - "ForceRemediateForLastEntries": { - "type": "boolean" - }, - "LastEntries": { - "$ref": "#/definitions/NetworkAclEntryList" - } - }, - "required": [ - "ForceRemediateForFirstEntries", - "ForceRemediateForLastEntries" - ], - "type": "object" - }, - "NetworkFirewallPolicy": { - "additionalProperties": false, - "description": "Network firewall policy.", - "properties": { - "FirewallDeploymentModel": { - "$ref": "#/definitions/FirewallDeploymentModel" - } - }, - "required": [ - "FirewallDeploymentModel" - ], - "type": "object" - }, - "OrganizationalUnitId": { - "description": "An Organizational Unit ID.", - "maxLength": 68, - "minLength": 16, - "pattern": "^(ou-[0-9a-z]{4,32}-[a-z0-9]{8,32})$", - "type": "string" - }, - "PolicyOption": { - "additionalProperties": false, - "description": "Firewall policy option.", - "oneOf": [ - { - "required": [ - "NetworkFirewallPolicy" - ] - }, - { - "required": [ - "ThirdPartyFirewallPolicy" - ] - }, - { - "required": [ - "NetworkAclCommonPolicy" - ] - } - ], - "properties": { - "NetworkAclCommonPolicy": { - "$ref": "#/definitions/NetworkAclCommonPolicy" - }, - "NetworkFirewallPolicy": { - "$ref": "#/definitions/NetworkFirewallPolicy" - }, - "ThirdPartyFirewallPolicy": { - "$ref": "#/definitions/ThirdPartyFirewallPolicy" - } - }, - "type": "object" - }, - "PolicyTag": { - "additionalProperties": false, - "description": "A policy tag.", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^([^\\s]*)$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "pattern": "^([^\\s]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "PolicyType": { - "description": "Firewall policy type.", - "enum": [ - "WAF", - "WAFV2", - "SHIELD_ADVANCED", - "SECURITY_GROUPS_COMMON", - "SECURITY_GROUPS_CONTENT_AUDIT", - "SECURITY_GROUPS_USAGE_AUDIT", - "NETWORK_FIREWALL", - "THIRD_PARTY_FIREWALL", - "DNS_FIREWALL", - "IMPORT_NETWORK_FIREWALL", - "NETWORK_ACL_COMMON" - ], - "type": "string" - }, - "ResourceArn": { - "description": "A resource ARN.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^([^\\s]*)$", - "type": "string" - }, - "ResourceTag": { - "additionalProperties": false, - "description": "A resource tag.", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - }, - "ResourceType": { - "description": "An AWS resource type", - "maxLength": 128, - "minLength": 1, - "pattern": "^([^\\s]*)$", - "type": "string" - }, - "SecurityServicePolicyData": { - "additionalProperties": false, - "description": "Firewall security service policy data.", - "properties": { - "ManagedServiceData": { - "$ref": "#/definitions/ManagedServiceData" - }, - "PolicyOption": { - "$ref": "#/definitions/PolicyOption" - }, - "Type": { - "$ref": "#/definitions/PolicyType" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ThirdPartyFirewallPolicy": { - "additionalProperties": false, - "description": "Third party firewall policy.", - "properties": { - "FirewallDeploymentModel": { - "$ref": "#/definitions/FirewallDeploymentModel" - } - }, - "required": [ - "FirewallDeploymentModel" - ], - "type": "object" - } - }, - "description": "Creates an AWS Firewall Manager policy.", - "handlers": { - "create": { - "permissions": [ - "fms:PutPolicy", - "fms:TagResource", - "waf-regional:ListRuleGroups", - "wafv2:CheckCapacity", - "wafv2:ListRuleGroups", - "wafv2:ListAvailableManagedRuleGroups", - "wafv2:ListAvailableManagedRuleGroupVersions", - "network-firewall:DescribeRuleGroup", - "network-firewall:DescribeRuleGroupMetadata", - "route53resolver:ListFirewallRuleGroups", - "ec2:DescribeAvailabilityZones", - "s3:PutBucketPolicy", - "s3:GetBucketPolicy" - ] - }, - "delete": { - "permissions": [ - "fms:DeletePolicy" - ] - }, - "list": { - "permissions": [ - "fms:ListPolicies", - "fms:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "fms:GetPolicy", - "fms:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "fms:PutPolicy", - "fms:GetPolicy", - "fms:TagResource", - "fms:UntagResource", - "fms:ListTagsForResource", - "waf-regional:ListRuleGroups", - "wafv2:CheckCapacity", - "wafv2:ListRuleGroups", - "wafv2:ListAvailableManagedRuleGroups", - "wafv2:ListAvailableManagedRuleGroupVersions", - "network-firewall:DescribeRuleGroup", - "network-firewall:DescribeRuleGroupMetadata", - "route53resolver:ListFirewallRuleGroups", - "ec2:DescribeAvailabilityZones", - "s3:PutBucketPolicy", - "s3:GetBucketPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/ResourceArn" - }, - "DeleteAllPolicyResources": { - "type": "boolean" - }, - "ExcludeMap": { - "$ref": "#/definitions/IEMap" - }, - "ExcludeResourceTags": { - "type": "boolean" - }, - "Id": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-z0-9A-Z-]{36}$", - "type": "string" - }, - "IncludeMap": { - "$ref": "#/definitions/IEMap" - }, - "PolicyDescription": { - "maxLength": 256, - "pattern": "^([a-zA-Z0-9_.:/=+\\-@\\s]+)$", - "type": "string" - }, - "PolicyName": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^([a-zA-Z0-9_.:/=+\\-@\\s]+)$", - "type": "string" - }, - "RemediationEnabled": { - "type": "boolean" - }, - "ResourceSetIds": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Base62Id" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceTags": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ResourceTag" - }, - "maxItems": 8, - "type": "array" - }, - "ResourceType": { - "$ref": "#/definitions/ResourceType" - }, - "ResourceTypeList": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ResourceType" - }, - "type": "array" - }, - "ResourcesCleanUp": { - "type": "boolean" - }, - "SecurityServicePolicyData": { - "$ref": "#/definitions/SecurityServicePolicyData" - }, - "Tags": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PolicyTag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id" - ], - "required": [ - "ExcludeResourceTags", - "PolicyName", - "RemediationEnabled", - "SecurityServicePolicyData" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-fms.git", - "typeName": "AWS::FMS::Policy", - "writeOnlyProperties": [ - "/properties/DeleteAllPolicyResources" - ] -} +{ + "additionalProperties": false, + "definitions": { + "AccountId": { + "description": "An AWS account ID.", + "maxLength": 12, + "minLength": 12, + "pattern": "^([0-9]*)$", + "type": "string" + }, + "Base62Id": { + "description": "A Base62 ID", + "maxLength": 22, + "minLength": 22, + "pattern": "^[a-z0-9A-Z]{22}$", + "type": "string" + }, + "FirewallDeploymentModel": { + "description": "Firewall deployment mode.", + "enum": [ + "DISTRIBUTED", + "CENTRALIZED" + ], + "type": "string" + }, + "IEMap": { + "additionalProperties": false, + "description": "An FMS includeMap or excludeMap.", + "properties": { + "ACCOUNT": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AccountId" + }, + "type": "array" + }, + "ORGUNIT": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/OrganizationalUnitId" + }, + "type": "array" + } + }, + "type": "object" + }, + "ManagedServiceData": { + "description": "Firewall managed service data.", + "maxLength": 30000, + "minLength": 1, + "type": "string" + }, + "NetworkAclCommonPolicy": { + "additionalProperties": false, + "description": "Network ACL common policy.", + "properties": { + "NetworkAclEntrySet": { + "$ref": "#/definitions/NetworkAclEntrySet" + } + }, + "required": [ + "NetworkAclEntrySet" + ], + "type": "object" + }, + "NetworkAclEntry": { + "additionalProperties": false, + "description": "Network ACL entry.", + "properties": { + "CidrBlock": { + "description": "CIDR block.", + "pattern": "^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$", + "type": "string" + }, + "Egress": { + "description": "Whether the entry is an egress entry.", + "type": "boolean" + }, + "IcmpTypeCode": { + "additionalProperties": false, + "description": "ICMP type and code.", + "properties": { + "Code": { + "description": "Code.", + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "Type": { + "description": "Type.", + "maximum": 255, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "Code", + "Type" + ], + "type": "object" + }, + "Ipv6CidrBlock": { + "description": "IPv6 CIDR block.", + "pattern": "^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))(/(1[0-2]|[0-9]))?$", + "type": "string" + }, + "PortRange": { + "additionalProperties": false, + "description": "Port range.", + "properties": { + "From": { + "description": "From Port.", + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "To": { + "description": "To Port.", + "maximum": 65535, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "From", + "To" + ], + "type": "object" + }, + "Protocol": { + "description": "Protocol.", + "pattern": "^(tcp|udp|icmp|-1|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$", + "type": "string" + }, + "RuleAction": { + "description": "Rule Action.", + "enum": [ + "allow", + "deny" + ], + "type": "string" + } + }, + "required": [ + "Egress", + "Protocol", + "RuleAction" + ], + "type": "object" + }, + "NetworkAclEntryList": { + "description": "NetworkAcl entry list.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/NetworkAclEntry" + }, + "type": "array" + }, + "NetworkAclEntrySet": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "FirstEntries" + ] + }, + { + "required": [ + "LastEntries" + ] + } + ], + "description": "Network ACL entry set.", + "properties": { + "FirstEntries": { + "$ref": "#/definitions/NetworkAclEntryList" + }, + "ForceRemediateForFirstEntries": { + "type": "boolean" + }, + "ForceRemediateForLastEntries": { + "type": "boolean" + }, + "LastEntries": { + "$ref": "#/definitions/NetworkAclEntryList" + } + }, + "required": [ + "ForceRemediateForFirstEntries", + "ForceRemediateForLastEntries" + ], + "type": "object" + }, + "NetworkFirewallPolicy": { + "additionalProperties": false, + "description": "Network firewall policy.", + "properties": { + "FirewallDeploymentModel": { + "$ref": "#/definitions/FirewallDeploymentModel" + } + }, + "required": [ + "FirewallDeploymentModel" + ], + "type": "object" + }, + "OrganizationalUnitId": { + "description": "An Organizational Unit ID.", + "maxLength": 68, + "minLength": 16, + "pattern": "^(ou-[0-9a-z]{4,32}-[a-z0-9]{8,32})$", + "type": "string" + }, + "PolicyOption": { + "additionalProperties": false, + "description": "Firewall policy option.", + "oneOf": [ + { + "required": [ + "NetworkFirewallPolicy" + ] + }, + { + "required": [ + "ThirdPartyFirewallPolicy" + ] + }, + { + "required": [ + "NetworkAclCommonPolicy" + ] + } + ], + "properties": { + "NetworkAclCommonPolicy": { + "$ref": "#/definitions/NetworkAclCommonPolicy" + }, + "NetworkFirewallPolicy": { + "$ref": "#/definitions/NetworkFirewallPolicy" + }, + "ThirdPartyFirewallPolicy": { + "$ref": "#/definitions/ThirdPartyFirewallPolicy" + } + }, + "type": "object" + }, + "PolicyTag": { + "additionalProperties": false, + "description": "A policy tag.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([^\\s]*)$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "pattern": "^([^\\s]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "PolicyType": { + "description": "Firewall policy type.", + "enum": [ + "WAF", + "WAFV2", + "SHIELD_ADVANCED", + "SECURITY_GROUPS_COMMON", + "SECURITY_GROUPS_CONTENT_AUDIT", + "SECURITY_GROUPS_USAGE_AUDIT", + "NETWORK_FIREWALL", + "THIRD_PARTY_FIREWALL", + "DNS_FIREWALL", + "IMPORT_NETWORK_FIREWALL", + "NETWORK_ACL_COMMON" + ], + "type": "string" + }, + "ResourceArn": { + "description": "A resource ARN.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^([^\\s]*)$", + "type": "string" + }, + "ResourceTag": { + "additionalProperties": false, + "description": "A resource tag.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "ResourceType": { + "description": "An AWS resource type", + "maxLength": 128, + "minLength": 1, + "pattern": "^([^\\s]*)$", + "type": "string" + }, + "SecurityServicePolicyData": { + "additionalProperties": false, + "description": "Firewall security service policy data.", + "properties": { + "ManagedServiceData": { + "$ref": "#/definitions/ManagedServiceData" + }, + "PolicyOption": { + "$ref": "#/definitions/PolicyOption" + }, + "Type": { + "$ref": "#/definitions/PolicyType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "ThirdPartyFirewallPolicy": { + "additionalProperties": false, + "description": "Third party firewall policy.", + "properties": { + "FirewallDeploymentModel": { + "$ref": "#/definitions/FirewallDeploymentModel" + } + }, + "required": [ + "FirewallDeploymentModel" + ], + "type": "object" + } + }, + "description": "Creates an AWS Firewall Manager policy.", + "handlers": { + "create": { + "permissions": [ + "fms:PutPolicy", + "fms:TagResource", + "waf-regional:ListRuleGroups", + "wafv2:CheckCapacity", + "wafv2:ListRuleGroups", + "wafv2:ListAvailableManagedRuleGroups", + "wafv2:ListAvailableManagedRuleGroupVersions", + "network-firewall:DescribeRuleGroup", + "network-firewall:DescribeRuleGroupMetadata", + "route53resolver:ListFirewallRuleGroups", + "ec2:DescribeAvailabilityZones", + "s3:PutBucketPolicy", + "s3:GetBucketPolicy" + ] + }, + "delete": { + "permissions": [ + "fms:DeletePolicy" + ] + }, + "list": { + "permissions": [ + "fms:ListPolicies", + "fms:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "fms:GetPolicy", + "fms:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "fms:PutPolicy", + "fms:GetPolicy", + "fms:TagResource", + "fms:UntagResource", + "fms:ListTagsForResource", + "waf-regional:ListRuleGroups", + "wafv2:CheckCapacity", + "wafv2:ListRuleGroups", + "wafv2:ListAvailableManagedRuleGroups", + "wafv2:ListAvailableManagedRuleGroupVersions", + "network-firewall:DescribeRuleGroup", + "network-firewall:DescribeRuleGroupMetadata", + "route53resolver:ListFirewallRuleGroups", + "ec2:DescribeAvailabilityZones", + "s3:PutBucketPolicy", + "s3:GetBucketPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/ResourceArn" + }, + "DeleteAllPolicyResources": { + "type": "boolean" + }, + "ExcludeMap": { + "$ref": "#/definitions/IEMap" + }, + "ExcludeResourceTags": { + "type": "boolean" + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-z0-9A-Z-]{36}$", + "type": "string" + }, + "IncludeMap": { + "$ref": "#/definitions/IEMap" + }, + "PolicyDescription": { + "maxLength": 256, + "pattern": "^([a-zA-Z0-9_.:/=+\\-@\\s]+)$", + "type": "string" + }, + "PolicyName": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^([a-zA-Z0-9_.:/=+\\-@\\s]+)$", + "type": "string" + }, + "RemediationEnabled": { + "type": "boolean" + }, + "ResourceSetIds": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Base62Id" + }, + "type": "array", + "uniqueItems": true + }, + "ResourceTagLogicalOperator": { + "enum": [ + "AND", + "OR" + ], + "type": "string" + }, + "ResourceTags": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ResourceTag" + }, + "maxItems": 8, + "type": "array" + }, + "ResourceType": { + "$ref": "#/definitions/ResourceType" + }, + "ResourceTypeList": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ResourceType" + }, + "type": "array" + }, + "ResourcesCleanUp": { + "type": "boolean" + }, + "SecurityServicePolicyData": { + "$ref": "#/definitions/SecurityServicePolicyData" + }, + "Tags": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PolicyTag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id" + ], + "required": [ + "ExcludeResourceTags", + "PolicyName", + "RemediationEnabled", + "SecurityServicePolicyData" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-fms.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "fms:TagResource", + "fms:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::FMS::Policy", + "writeOnlyProperties": [ + "/properties/DeleteAllPolicyResources" + ] +} diff --git a/src/schema/aws-fms-resourceset.json b/src/schema/aws-fms-resourceset.json index ff3a5909..56fe2d32 100644 --- a/src/schema/aws-fms-resourceset.json +++ b/src/schema/aws-fms-resourceset.json @@ -1,147 +1,151 @@ -{ - "additionalProperties": false, - "definitions": { - "Base62Id": { - "description": "A Base62 ID", - "maxLength": 22, - "minLength": 22, - "pattern": "^([a-z0-9A-Z]*)$", - "type": "string" - }, - "Resource": { - "description": "A resource ARN or URI.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^([^\\s]*)$", - "type": "string" - }, - "ResourceType": { - "description": "An AWS resource type", - "maxLength": 128, - "minLength": 1, - "pattern": "^([^\\s]*)$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A tag.", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^([^\\s]*)$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "pattern": "^([^\\s]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Creates an AWS Firewall Manager resource set.", - "handlers": { - "create": { - "permissions": [ - "fms:PutResourceSet", - "fms:BatchAssociateResource", - "fms:ListResourceSetResources", - "fms:TagResource" - ] - }, - "delete": { - "permissions": [ - "fms:DeleteResourceSet" - ] - }, - "list": { - "permissions": [ - "fms:ListResourceSets" - ] - }, - "read": { - "permissions": [ - "fms:GetResourceSet", - "fms:ListResourceSetResources", - "fms:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "fms:PutResourceSet", - "fms:BatchAssociateResource", - "fms:BatchDisassociateResource", - "fms:GetResourceSet", - "fms:ListResourceSetResources", - "fms:TagResource", - "fms:UntagResource", - "fms:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "maxLength": 256, - "pattern": "^([a-zA-Z0-9_.:/=+\\-@\\s]*)$", - "type": "string" - }, - "Id": { - "$ref": "#/definitions/Base62Id" - }, - "Name": { - "maxLength": 128, - "minLength": 1, - "pattern": "^([a-zA-Z0-9_.:/=+\\-@\\s]+)$", - "type": "string" - }, - "ResourceTypeList": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ResourceType" - }, - "type": "array", - "uniqueItems": true - }, - "Resources": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Resource" - }, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Name", - "ResourceTypeList" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-fms.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::FMS::ResourceSet" -} +{ + "additionalProperties": false, + "definitions": { + "Base62Id": { + "description": "A Base62 ID", + "maxLength": 22, + "minLength": 22, + "pattern": "^([a-z0-9A-Z]*)$", + "type": "string" + }, + "Resource": { + "description": "A resource ARN or URI.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^([^\\s]*)$", + "type": "string" + }, + "ResourceType": { + "description": "An AWS resource type", + "maxLength": 128, + "minLength": 1, + "pattern": "^([^\\s]*)$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A tag.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([^\\s]*)$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "pattern": "^([^\\s]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Creates an AWS Firewall Manager resource set.", + "handlers": { + "create": { + "permissions": [ + "fms:PutResourceSet", + "fms:BatchAssociateResource", + "fms:ListResourceSetResources", + "fms:TagResource" + ] + }, + "delete": { + "permissions": [ + "fms:DeleteResourceSet" + ] + }, + "list": { + "permissions": [ + "fms:ListResourceSets" + ] + }, + "read": { + "permissions": [ + "fms:GetResourceSet", + "fms:ListResourceSetResources", + "fms:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "fms:PutResourceSet", + "fms:BatchAssociateResource", + "fms:BatchDisassociateResource", + "fms:GetResourceSet", + "fms:ListResourceSetResources", + "fms:TagResource", + "fms:UntagResource", + "fms:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "maxLength": 256, + "pattern": "^([a-zA-Z0-9_.:/=+\\-@\\s]*)$", + "type": "string" + }, + "Id": { + "$ref": "#/definitions/Base62Id" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([a-zA-Z0-9_.:/=+\\-@\\s]+)$", + "type": "string" + }, + "ResourceTypeList": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ResourceType" + }, + "type": "array", + "uniqueItems": true + }, + "Resources": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Resource" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name", + "ResourceTypeList" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-fms.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "fms:TagResource", + "fms:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::FMS::ResourceSet" +} diff --git a/src/schema/aws-forecast-dataset.json b/src/schema/aws-forecast-dataset.json index 09cb7dcd..260b62a5 100644 --- a/src/schema/aws-forecast-dataset.json +++ b/src/schema/aws-forecast-dataset.json @@ -1,183 +1,183 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DatasetName" - ], - "definitions": { - "Attributes": { - "insertionOrder": true, - "items": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "description": "Name of the dataset field", - "pattern": "^[a-zA-Z][a-zA-Z0-9_]*", - "type": "string" - }, - "AttributeType": { - "description": "Data type of the field", - "enum": [ - "string", - "integer", - "float", - "timestamp", - "geolocation" - ], - "type": "string" - } - }, - "type": "object" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "KmsKeyArn": { - "description": "KMS key used to encrypt the Dataset data", - "maxLength": 256, - "pattern": "arn:aws[-a-z]*:kms:.*:key/.*", - "type": "string" - }, - "RoleArn": { - "description": "The ARN of the IAM role that Amazon Forecast can assume to access the AWS KMS key.", - "maxLength": 256, - "pattern": "^[a-zA-Z0-9\\-\\_\\.\\/\\:]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "description": "Resource Type Definition for AWS::Forecast::Dataset", - "handlers": { - "create": { - "permissions": [ - "forecast:CreateDataset" - ] - }, - "delete": { - "permissions": [ - "forecast:DeleteDataset" - ] - }, - "list": { - "permissions": [ - "forecast:ListDatasets" - ] - }, - "read": { - "permissions": [ - "forecast:DescribeDataset" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 256, - "pattern": "^[a-zA-Z0-9\\-\\_\\.\\/\\:]+$", - "type": "string" - }, - "DataFrequency": { - "description": "Frequency of data collection. This parameter is required for RELATED_TIME_SERIES", - "pattern": "^Y|M|W|D|H|30min|15min|10min|5min|1min$", - "type": "string" - }, - "DatasetName": { - "description": "A name for the dataset", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z][a-zA-Z0-9_]*", - "type": "string" - }, - "DatasetType": { - "description": "The dataset type", - "enum": [ - "TARGET_TIME_SERIES", - "RELATED_TIME_SERIES", - "ITEM_METADATA" - ], - "type": "string" - }, - "Domain": { - "description": "The domain associated with the dataset", - "enum": [ - "RETAIL", - "CUSTOM", - "INVENTORY_PLANNING", - "EC2_CAPACITY", - "WORK_FORCE", - "WEB_TRAFFIC", - "METRICS" - ], - "type": "string" - }, - "EncryptionConfig": { - "additionalProperties": false, - "properties": { - "KmsKeyArn": { - "$ref": "#/definitions/KmsKeyArn" - }, - "RoleArn": { - "$ref": "#/definitions/RoleArn" - } - }, - "type": "object" - }, - "Schema": { - "additionalProperties": false, - "properties": { - "Attributes": { - "$ref": "#/definitions/Attributes" - } - }, - "type": "object" - }, - "Tags": { - "insertionOrder": true, - "items": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "$ref": "#/definitions/Key" - }, - "Value": { - "$ref": "#/definitions/Value" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "DatasetName", - "DatasetType", - "Domain", - "Schema" - ], - "sourceUrl": "https://github.com/junlinzw/aws-cloudformation-resource-providers-forecast", - "taggable": false, - "typeName": "AWS::Forecast::Dataset" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DatasetName" + ], + "definitions": { + "Attributes": { + "insertionOrder": true, + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "description": "Name of the dataset field", + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*", + "type": "string" + }, + "AttributeType": { + "description": "Data type of the field", + "enum": [ + "string", + "integer", + "float", + "timestamp", + "geolocation" + ], + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "KmsKeyArn": { + "description": "KMS key used to encrypt the Dataset data", + "maxLength": 256, + "pattern": "arn:aws[-a-z]*:kms:.*:key/.*", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the IAM role that Amazon Forecast can assume to access the AWS KMS key.", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-\\_\\.\\/\\:]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "description": "Resource Type Definition for AWS::Forecast::Dataset", + "handlers": { + "create": { + "permissions": [ + "forecast:CreateDataset" + ] + }, + "delete": { + "permissions": [ + "forecast:DeleteDataset" + ] + }, + "list": { + "permissions": [ + "forecast:ListDatasets" + ] + }, + "read": { + "permissions": [ + "forecast:DescribeDataset" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-\\_\\.\\/\\:]+$", + "type": "string" + }, + "DataFrequency": { + "description": "Frequency of data collection. This parameter is required for RELATED_TIME_SERIES", + "pattern": "^Y|M|W|D|H|30min|15min|10min|5min|1min$", + "type": "string" + }, + "DatasetName": { + "description": "A name for the dataset", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*", + "type": "string" + }, + "DatasetType": { + "description": "The dataset type", + "enum": [ + "TARGET_TIME_SERIES", + "RELATED_TIME_SERIES", + "ITEM_METADATA" + ], + "type": "string" + }, + "Domain": { + "description": "The domain associated with the dataset", + "enum": [ + "RETAIL", + "CUSTOM", + "INVENTORY_PLANNING", + "EC2_CAPACITY", + "WORK_FORCE", + "WEB_TRAFFIC", + "METRICS" + ], + "type": "string" + }, + "EncryptionConfig": { + "additionalProperties": false, + "properties": { + "KmsKeyArn": { + "$ref": "#/definitions/KmsKeyArn" + }, + "RoleArn": { + "$ref": "#/definitions/RoleArn" + } + }, + "type": "object" + }, + "Schema": { + "additionalProperties": false, + "properties": { + "Attributes": { + "$ref": "#/definitions/Attributes" + } + }, + "type": "object" + }, + "Tags": { + "insertionOrder": true, + "items": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "$ref": "#/definitions/Key" + }, + "Value": { + "$ref": "#/definitions/Value" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "DatasetName", + "DatasetType", + "Domain", + "Schema" + ], + "sourceUrl": "https://github.com/junlinzw/aws-cloudformation-resource-providers-forecast", + "taggable": false, + "typeName": "AWS::Forecast::Dataset" +} diff --git a/src/schema/aws-forecast-datasetgroup.json b/src/schema/aws-forecast-datasetgroup.json index 7ba51d58..7b35b188 100644 --- a/src/schema/aws-forecast-datasetgroup.json +++ b/src/schema/aws-forecast-datasetgroup.json @@ -1,135 +1,135 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DatasetGroupName" - ], - "definitions": { - "Arn": { - "maxLength": 256, - "pattern": "^[a-zA-Z0-9\\-\\_\\.\\/\\:]+$", - "type": "string" - }, - "MaxResults": { - "description": "The number of items to return in the response.", - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "NextToken": { - "description": "If the result of the previous request was truncated, the response includes a NextToken. To retrieve the next set of results, use the token in the next request. Tokens expire after 24 hours.", - "maxLength": 3000, - "minLength": 1, - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Represents a dataset group that holds a collection of related datasets", - "handlers": { - "create": { - "permissions": [ - "forecast:CreateDatasetGroup" - ] - }, - "delete": { - "permissions": [ - "forecast:DeleteDatasetGroup" - ] - }, - "list": { - "permissions": [ - "forecast:ListDatasetGroups" - ] - }, - "read": { - "permissions": [ - "forecast:DescribeDatasetGroup" - ] - }, - "update": { - "permissions": [ - "forecast:UpdateDatasetGroup" - ] - } - }, - "primaryIdentifier": [ - "/properties/DatasetGroupArn" - ], - "properties": { - "DatasetArns": { - "description": "An array of Amazon Resource Names (ARNs) of the datasets that you want to include in the dataset group.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Arn" - }, - "type": "array" - }, - "DatasetGroupArn": { - "description": "The Amazon Resource Name (ARN) of the dataset group to delete.", - "maxLength": 256, - "pattern": "^[a-zA-Z0-9\\-\\_\\.\\/\\:]+$", - "type": "string" - }, - "DatasetGroupName": { - "description": "A name for the dataset group.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z][a-zA-Z0-9_]*", - "type": "string" - }, - "Domain": { - "description": "The domain associated with the dataset group. When you add a dataset to a dataset group, this value and the value specified for the Domain parameter of the CreateDataset operation must match.", - "enum": [ - "RETAIL", - "CUSTOM", - "INVENTORY_PLANNING", - "EC2_CAPACITY", - "WORK_FORCE", - "WEB_TRAFFIC", - "METRICS" - ], - "type": "string" - }, - "Tags": { - "description": "The tags of Application Insights application.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/DatasetGroupArn" - ], - "required": [ - "DatasetGroupName", - "Domain" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-forecast", - "taggable": true, - "typeName": "AWS::Forecast::DatasetGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DatasetGroupName" + ], + "definitions": { + "Arn": { + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-\\_\\.\\/\\:]+$", + "type": "string" + }, + "MaxResults": { + "description": "The number of items to return in the response.", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "NextToken": { + "description": "If the result of the previous request was truncated, the response includes a NextToken. To retrieve the next set of results, use the token in the next request. Tokens expire after 24 hours.", + "maxLength": 3000, + "minLength": 1, + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Represents a dataset group that holds a collection of related datasets", + "handlers": { + "create": { + "permissions": [ + "forecast:CreateDatasetGroup" + ] + }, + "delete": { + "permissions": [ + "forecast:DeleteDatasetGroup" + ] + }, + "list": { + "permissions": [ + "forecast:ListDatasetGroups" + ] + }, + "read": { + "permissions": [ + "forecast:DescribeDatasetGroup" + ] + }, + "update": { + "permissions": [ + "forecast:UpdateDatasetGroup" + ] + } + }, + "primaryIdentifier": [ + "/properties/DatasetGroupArn" + ], + "properties": { + "DatasetArns": { + "description": "An array of Amazon Resource Names (ARNs) of the datasets that you want to include in the dataset group.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Arn" + }, + "type": "array" + }, + "DatasetGroupArn": { + "description": "The Amazon Resource Name (ARN) of the dataset group to delete.", + "maxLength": 256, + "pattern": "^[a-zA-Z0-9\\-\\_\\.\\/\\:]+$", + "type": "string" + }, + "DatasetGroupName": { + "description": "A name for the dataset group.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*", + "type": "string" + }, + "Domain": { + "description": "The domain associated with the dataset group. When you add a dataset to a dataset group, this value and the value specified for the Domain parameter of the CreateDataset operation must match.", + "enum": [ + "RETAIL", + "CUSTOM", + "INVENTORY_PLANNING", + "EC2_CAPACITY", + "WORK_FORCE", + "WEB_TRAFFIC", + "METRICS" + ], + "type": "string" + }, + "Tags": { + "description": "The tags of Application Insights application.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/DatasetGroupArn" + ], + "required": [ + "DatasetGroupName", + "Domain" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-forecast", + "taggable": true, + "typeName": "AWS::Forecast::DatasetGroup" +} diff --git a/src/schema/aws-frauddetector-detector.json b/src/schema/aws-frauddetector-detector.json index f4cc7787..0c5cd855 100644 --- a/src/schema/aws-frauddetector-detector.json +++ b/src/schema/aws-frauddetector-detector.json @@ -1,612 +1,612 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DetectorId" - ], - "definitions": { - "EntityType": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - }, - "CreatedTime": { - "description": "The time when the entity type was created.", - "type": "string" - }, - "Description": { - "description": "The description.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Inline": { - "type": "boolean" - }, - "LastUpdatedTime": { - "description": "The time when the entity type was last updated.", - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "description": "Tags associated with this entity type.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "EventType": { - "additionalProperties": false, - "properties": { - "Arn": { - "description": "The ARN of the event type.", - "type": "string" - }, - "CreatedTime": { - "description": "The time when the event type was created.", - "type": "string" - }, - "Description": { - "description": "The description of the event type.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "EntityTypes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EntityType" - }, - "minItems": 1, - "type": "array", - "uniqueItems": false - }, - "EventVariables": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EventVariable" - }, - "minItems": 1, - "type": "array", - "uniqueItems": false - }, - "Inline": { - "type": "boolean" - }, - "Labels": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Label" - }, - "minItems": 2, - "type": "array", - "uniqueItems": false - }, - "LastUpdatedTime": { - "description": "The time when the event type was last updated.", - "type": "string" - }, - "Name": { - "description": "The name for the event type", - "maxLength": 64, - "minLength": 1, - "pattern": "^[0-9a-z_-]+$", - "type": "string" - }, - "Tags": { - "description": "Tags associated with this event type.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "EventVariable": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - }, - "CreatedTime": { - "description": "The time when the event variable was created.", - "type": "string" - }, - "DataSource": { - "enum": [ - "EVENT" - ], - "type": "string" - }, - "DataType": { - "enum": [ - "STRING", - "INTEGER", - "FLOAT", - "BOOLEAN" - ], - "type": "string" - }, - "DefaultValue": { - "type": "string" - }, - "Description": { - "description": "The description.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Inline": { - "type": "boolean" - }, - "LastUpdatedTime": { - "description": "The time when the event variable was last updated.", - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "description": "Tags associated with this event variable.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": false - }, - "VariableType": { - "enum": [ - "AUTH_CODE", - "AVS", - "BILLING_ADDRESS_L1", - "BILLING_ADDRESS_L2", - "BILLING_CITY", - "BILLING_COUNTRY", - "BILLING_NAME", - "BILLING_PHONE", - "BILLING_STATE", - "BILLING_ZIP", - "CARD_BIN", - "CATEGORICAL", - "CURRENCY_CODE", - "EMAIL_ADDRESS", - "FINGERPRINT", - "FRAUD_LABEL", - "FREE_FORM_TEXT", - "IP_ADDRESS", - "NUMERIC", - "ORDER_ID", - "PAYMENT_TYPE", - "PHONE_NUMBER", - "PRICE", - "PRODUCT_CATEGORY", - "SHIPPING_ADDRESS_L1", - "SHIPPING_ADDRESS_L2", - "SHIPPING_CITY", - "SHIPPING_COUNTRY", - "SHIPPING_NAME", - "SHIPPING_PHONE", - "SHIPPING_STATE", - "SHIPPING_ZIP", - "USERAGENT" - ], - "type": "string" - } - }, - "type": "object" - }, - "Label": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - }, - "CreatedTime": { - "description": "The time when the label was created.", - "type": "string" - }, - "Description": { - "description": "The description.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Inline": { - "type": "boolean" - }, - "LastUpdatedTime": { - "description": "The time when the label was last updated.", - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "description": "Tags associated with this label.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "Model": { - "additionalProperties": false, - "description": "A model to associate with a detector.", - "properties": { - "Arn": { - "type": "string" - } - }, - "type": "object" - }, - "Outcome": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - }, - "CreatedTime": { - "description": "The time when the outcome was created.", - "type": "string" - }, - "Description": { - "description": "The description.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Inline": { - "type": "boolean" - }, - "LastUpdatedTime": { - "description": "The time when the outcome was last updated.", - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "description": "Tags associated with this outcome.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "Rule": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - }, - "CreatedTime": { - "description": "The time when the event type was created.", - "type": "string" - }, - "Description": { - "description": "The description.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "DetectorId": { - "type": "string" - }, - "Expression": { - "type": "string" - }, - "Language": { - "enum": [ - "DETECTORPL" - ], - "type": "string" - }, - "LastUpdatedTime": { - "description": "The time when the event type was last updated.", - "type": "string" - }, - "Outcomes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Outcome" - }, - "minItems": 1, - "type": "array", - "uniqueItems": false - }, - "RuleId": { - "type": "string" - }, - "RuleVersion": { - "type": "string" - }, - "Tags": { - "description": "Tags associated with this event type.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "A resource schema for a Detector in Amazon Fraud Detector.", - "handlers": { - "create": { - "permissions": [ - "frauddetector:PutDetector", - "frauddetector:CreateDetectorVersion", - "frauddetector:UpdateDetectorVersionStatus", - "frauddetector:CreateRule", - "frauddetector:CreateVariable", - "frauddetector:PutLabel", - "frauddetector:PutOutcome", - "frauddetector:PutEntityType", - "frauddetector:PutEventType", - "frauddetector:DescribeDetector", - "frauddetector:GetDetectors", - "frauddetector:GetDetectorVersion", - "frauddetector:GetRules", - "frauddetector:GetVariables", - "frauddetector:GetEventTypes", - "frauddetector:GetExternalModels", - "frauddetector:GetModelVersion", - "frauddetector:GetLabels", - "frauddetector:GetOutcomes", - "frauddetector:GetEntityTypes", - "frauddetector:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "frauddetector:GetDetectors", - "frauddetector:GetDetectorVersion", - "frauddetector:DescribeDetector", - "frauddetector:GetRules", - "frauddetector:GetVariables", - "frauddetector:GetEventTypes", - "frauddetector:GetLabels", - "frauddetector:GetOutcomes", - "frauddetector:GetEntityTypes", - "frauddetector:DeleteDetector", - "frauddetector:DeleteDetectorVersion", - "frauddetector:DeleteRule", - "frauddetector:DeleteEventType", - "frauddetector:DeleteVariable", - "frauddetector:DeleteLabel", - "frauddetector:DeleteOutcome", - "frauddetector:DeleteEntityType", - "frauddetector:ListTagsForResource" - ] - }, - "list": { - "permissions": [ - "frauddetector:GetDetectors", - "frauddetector:GetDetectorVersion", - "frauddetector:DescribeDetector", - "frauddetector:GetRules", - "frauddetector:GetVariables", - "frauddetector:GetEventTypes", - "frauddetector:GetExternalModels", - "frauddetector:GetModelVersion", - "frauddetector:GetLabels", - "frauddetector:GetOutcomes", - "frauddetector:GetEntityTypes", - "frauddetector:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "frauddetector:GetDetectors", - "frauddetector:GetDetectorVersion", - "frauddetector:DescribeDetector", - "frauddetector:GetRules", - "frauddetector:GetVariables", - "frauddetector:GetEventTypes", - "frauddetector:GetExternalModels", - "frauddetector:GetModelVersion", - "frauddetector:GetLabels", - "frauddetector:GetOutcomes", - "frauddetector:GetEntityTypes", - "frauddetector:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "frauddetector:GetDetectors", - "frauddetector:GetDetectorVersion", - "frauddetector:PutDetector", - "frauddetector:UpdateDetectorVersion", - "frauddetector:UpdateDetectorVersionStatus", - "frauddetector:UpdateDetectorVersionMetadata", - "frauddetector:UpdateRuleVersion", - "frauddetector:UpdateRuleMetadata", - "frauddetector:CreateRule", - "frauddetector:CreateVariable", - "frauddetector:UpdateVariable", - "frauddetector:GetVariables", - "frauddetector:PutLabel", - "frauddetector:PutOutcome", - "frauddetector:PutEntityType", - "frauddetector:PutEventType", - "frauddetector:GetRules", - "frauddetector:GetEventTypes", - "frauddetector:GetLabels", - "frauddetector:GetOutcomes", - "frauddetector:GetEntityTypes", - "frauddetector:GetExternalModels", - "frauddetector:GetModelVersion", - "frauddetector:DeleteEventType", - "frauddetector:DeleteVariable", - "frauddetector:DeleteLabel", - "frauddetector:DeleteEntityType", - "frauddetector:ListTagsForResource", - "frauddetector:TagResource", - "frauddetector:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The ARN of the detector.", - "type": "string" - }, - "AssociatedModels": { - "description": "The models to associate with this detector.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Model" - }, - "maxItems": 10, - "type": "array", - "uniqueItems": false - }, - "CreatedTime": { - "description": "The time when the detector was created.", - "type": "string" - }, - "Description": { - "description": "The description of the detector.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "DetectorId": { - "description": "The ID of the detector", - "maxLength": 64, - "minLength": 1, - "pattern": "^[0-9a-z_-]+$", - "type": "string" - }, - "DetectorVersionId": { - "description": "The active version ID of the detector", - "type": "string" - }, - "DetectorVersionStatus": { - "description": "The desired detector version status for the detector", - "enum": [ - "DRAFT", - "ACTIVE" - ], - "type": "string" - }, - "EventType": { - "$ref": "#/definitions/EventType", - "description": "The event type to associate this detector with." - }, - "LastUpdatedTime": { - "description": "The time when the detector was last updated.", - "type": "string" - }, - "RuleExecutionMode": { - "enum": [ - "FIRST_MATCHED", - "ALL_MATCHED" - ], - "type": "string" - }, - "Rules": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Rule" - }, - "minItems": 1, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "description": "Tags associated with this detector.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/DetectorVersionId", - "/properties/CreatedTime", - "/properties/LastUpdatedTime", - "/properties/Rules/*/RuleVersion", - "/properties/Rules/*/Arn", - "/properties/Rules/*/CreatedTime", - "/properties/Rules/*/LastUpdatedTime", - "/properties/Rules/*/Outcomes/*/Arn", - "/properties/Rules/*/Outcomes/*/CreatedTime", - "/properties/Rules/*/Outcomes/*/LastUpdatedTime", - "/properties/EventType/Arn", - "/properties/EventType/CreatedTime", - "/properties/EventType/LastUpdatedTime", - "/properties/EventType/EventVariables/*/Arn", - "/properties/EventType/EventVariables/*/CreatedTime", - "/properties/EventType/EventVariables/*/LastUpdatedTime", - "/properties/EventType/Labels/*/Arn", - "/properties/EventType/Labels/*/CreatedTime", - "/properties/EventType/Labels/*/LastUpdatedTime", - "/properties/EventType/EntityTypes/*/Arn", - "/properties/EventType/EntityTypes/*/CreatedTime", - "/properties/EventType/EntityTypes/*/LastUpdatedTime", - "/properties/AssociatedModels/*/Arn" - ], - "required": [ - "DetectorId", - "EventType", - "Rules" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::FraudDetector::Detector" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DetectorId" + ], + "definitions": { + "EntityType": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + }, + "CreatedTime": { + "description": "The time when the entity type was created.", + "type": "string" + }, + "Description": { + "description": "The description.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Inline": { + "type": "boolean" + }, + "LastUpdatedTime": { + "description": "The time when the entity type was last updated.", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "description": "Tags associated with this entity type.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EventType": { + "additionalProperties": false, + "properties": { + "Arn": { + "description": "The ARN of the event type.", + "type": "string" + }, + "CreatedTime": { + "description": "The time when the event type was created.", + "type": "string" + }, + "Description": { + "description": "The description of the event type.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "EntityTypes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EntityType" + }, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "EventVariables": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EventVariable" + }, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "Inline": { + "type": "boolean" + }, + "Labels": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Label" + }, + "minItems": 2, + "type": "array", + "uniqueItems": false + }, + "LastUpdatedTime": { + "description": "The time when the event type was last updated.", + "type": "string" + }, + "Name": { + "description": "The name for the event type", + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9a-z_-]+$", + "type": "string" + }, + "Tags": { + "description": "Tags associated with this event type.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EventVariable": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + }, + "CreatedTime": { + "description": "The time when the event variable was created.", + "type": "string" + }, + "DataSource": { + "enum": [ + "EVENT" + ], + "type": "string" + }, + "DataType": { + "enum": [ + "STRING", + "INTEGER", + "FLOAT", + "BOOLEAN" + ], + "type": "string" + }, + "DefaultValue": { + "type": "string" + }, + "Description": { + "description": "The description.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Inline": { + "type": "boolean" + }, + "LastUpdatedTime": { + "description": "The time when the event variable was last updated.", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "description": "Tags associated with this event variable.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": false + }, + "VariableType": { + "enum": [ + "AUTH_CODE", + "AVS", + "BILLING_ADDRESS_L1", + "BILLING_ADDRESS_L2", + "BILLING_CITY", + "BILLING_COUNTRY", + "BILLING_NAME", + "BILLING_PHONE", + "BILLING_STATE", + "BILLING_ZIP", + "CARD_BIN", + "CATEGORICAL", + "CURRENCY_CODE", + "EMAIL_ADDRESS", + "FINGERPRINT", + "FRAUD_LABEL", + "FREE_FORM_TEXT", + "IP_ADDRESS", + "NUMERIC", + "ORDER_ID", + "PAYMENT_TYPE", + "PHONE_NUMBER", + "PRICE", + "PRODUCT_CATEGORY", + "SHIPPING_ADDRESS_L1", + "SHIPPING_ADDRESS_L2", + "SHIPPING_CITY", + "SHIPPING_COUNTRY", + "SHIPPING_NAME", + "SHIPPING_PHONE", + "SHIPPING_STATE", + "SHIPPING_ZIP", + "USERAGENT" + ], + "type": "string" + } + }, + "type": "object" + }, + "Label": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + }, + "CreatedTime": { + "description": "The time when the label was created.", + "type": "string" + }, + "Description": { + "description": "The description.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Inline": { + "type": "boolean" + }, + "LastUpdatedTime": { + "description": "The time when the label was last updated.", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "description": "Tags associated with this label.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "Model": { + "additionalProperties": false, + "description": "A model to associate with a detector.", + "properties": { + "Arn": { + "type": "string" + } + }, + "type": "object" + }, + "Outcome": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + }, + "CreatedTime": { + "description": "The time when the outcome was created.", + "type": "string" + }, + "Description": { + "description": "The description.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Inline": { + "type": "boolean" + }, + "LastUpdatedTime": { + "description": "The time when the outcome was last updated.", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "description": "Tags associated with this outcome.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "Rule": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + }, + "CreatedTime": { + "description": "The time when the event type was created.", + "type": "string" + }, + "Description": { + "description": "The description.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "DetectorId": { + "type": "string" + }, + "Expression": { + "type": "string" + }, + "Language": { + "enum": [ + "DETECTORPL" + ], + "type": "string" + }, + "LastUpdatedTime": { + "description": "The time when the event type was last updated.", + "type": "string" + }, + "Outcomes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Outcome" + }, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "RuleId": { + "type": "string" + }, + "RuleVersion": { + "type": "string" + }, + "Tags": { + "description": "Tags associated with this event type.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "A resource schema for a Detector in Amazon Fraud Detector.", + "handlers": { + "create": { + "permissions": [ + "frauddetector:PutDetector", + "frauddetector:CreateDetectorVersion", + "frauddetector:UpdateDetectorVersionStatus", + "frauddetector:CreateRule", + "frauddetector:CreateVariable", + "frauddetector:PutLabel", + "frauddetector:PutOutcome", + "frauddetector:PutEntityType", + "frauddetector:PutEventType", + "frauddetector:DescribeDetector", + "frauddetector:GetDetectors", + "frauddetector:GetDetectorVersion", + "frauddetector:GetRules", + "frauddetector:GetVariables", + "frauddetector:GetEventTypes", + "frauddetector:GetExternalModels", + "frauddetector:GetModelVersion", + "frauddetector:GetLabels", + "frauddetector:GetOutcomes", + "frauddetector:GetEntityTypes", + "frauddetector:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "frauddetector:GetDetectors", + "frauddetector:GetDetectorVersion", + "frauddetector:DescribeDetector", + "frauddetector:GetRules", + "frauddetector:GetVariables", + "frauddetector:GetEventTypes", + "frauddetector:GetLabels", + "frauddetector:GetOutcomes", + "frauddetector:GetEntityTypes", + "frauddetector:DeleteDetector", + "frauddetector:DeleteDetectorVersion", + "frauddetector:DeleteRule", + "frauddetector:DeleteEventType", + "frauddetector:DeleteVariable", + "frauddetector:DeleteLabel", + "frauddetector:DeleteOutcome", + "frauddetector:DeleteEntityType", + "frauddetector:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "frauddetector:GetDetectors", + "frauddetector:GetDetectorVersion", + "frauddetector:DescribeDetector", + "frauddetector:GetRules", + "frauddetector:GetVariables", + "frauddetector:GetEventTypes", + "frauddetector:GetExternalModels", + "frauddetector:GetModelVersion", + "frauddetector:GetLabels", + "frauddetector:GetOutcomes", + "frauddetector:GetEntityTypes", + "frauddetector:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "frauddetector:GetDetectors", + "frauddetector:GetDetectorVersion", + "frauddetector:DescribeDetector", + "frauddetector:GetRules", + "frauddetector:GetVariables", + "frauddetector:GetEventTypes", + "frauddetector:GetExternalModels", + "frauddetector:GetModelVersion", + "frauddetector:GetLabels", + "frauddetector:GetOutcomes", + "frauddetector:GetEntityTypes", + "frauddetector:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "frauddetector:GetDetectors", + "frauddetector:GetDetectorVersion", + "frauddetector:PutDetector", + "frauddetector:UpdateDetectorVersion", + "frauddetector:UpdateDetectorVersionStatus", + "frauddetector:UpdateDetectorVersionMetadata", + "frauddetector:UpdateRuleVersion", + "frauddetector:UpdateRuleMetadata", + "frauddetector:CreateRule", + "frauddetector:CreateVariable", + "frauddetector:UpdateVariable", + "frauddetector:GetVariables", + "frauddetector:PutLabel", + "frauddetector:PutOutcome", + "frauddetector:PutEntityType", + "frauddetector:PutEventType", + "frauddetector:GetRules", + "frauddetector:GetEventTypes", + "frauddetector:GetLabels", + "frauddetector:GetOutcomes", + "frauddetector:GetEntityTypes", + "frauddetector:GetExternalModels", + "frauddetector:GetModelVersion", + "frauddetector:DeleteEventType", + "frauddetector:DeleteVariable", + "frauddetector:DeleteLabel", + "frauddetector:DeleteEntityType", + "frauddetector:ListTagsForResource", + "frauddetector:TagResource", + "frauddetector:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The ARN of the detector.", + "type": "string" + }, + "AssociatedModels": { + "description": "The models to associate with this detector.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Model" + }, + "maxItems": 10, + "type": "array", + "uniqueItems": false + }, + "CreatedTime": { + "description": "The time when the detector was created.", + "type": "string" + }, + "Description": { + "description": "The description of the detector.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "DetectorId": { + "description": "The ID of the detector", + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9a-z_-]+$", + "type": "string" + }, + "DetectorVersionId": { + "description": "The active version ID of the detector", + "type": "string" + }, + "DetectorVersionStatus": { + "description": "The desired detector version status for the detector", + "enum": [ + "DRAFT", + "ACTIVE" + ], + "type": "string" + }, + "EventType": { + "$ref": "#/definitions/EventType", + "description": "The event type to associate this detector with." + }, + "LastUpdatedTime": { + "description": "The time when the detector was last updated.", + "type": "string" + }, + "RuleExecutionMode": { + "enum": [ + "FIRST_MATCHED", + "ALL_MATCHED" + ], + "type": "string" + }, + "Rules": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Rule" + }, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "description": "Tags associated with this detector.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/DetectorVersionId", + "/properties/CreatedTime", + "/properties/LastUpdatedTime", + "/properties/Rules/*/RuleVersion", + "/properties/Rules/*/Arn", + "/properties/Rules/*/CreatedTime", + "/properties/Rules/*/LastUpdatedTime", + "/properties/Rules/*/Outcomes/*/Arn", + "/properties/Rules/*/Outcomes/*/CreatedTime", + "/properties/Rules/*/Outcomes/*/LastUpdatedTime", + "/properties/EventType/Arn", + "/properties/EventType/CreatedTime", + "/properties/EventType/LastUpdatedTime", + "/properties/EventType/EventVariables/*/Arn", + "/properties/EventType/EventVariables/*/CreatedTime", + "/properties/EventType/EventVariables/*/LastUpdatedTime", + "/properties/EventType/Labels/*/Arn", + "/properties/EventType/Labels/*/CreatedTime", + "/properties/EventType/Labels/*/LastUpdatedTime", + "/properties/EventType/EntityTypes/*/Arn", + "/properties/EventType/EntityTypes/*/CreatedTime", + "/properties/EventType/EntityTypes/*/LastUpdatedTime", + "/properties/AssociatedModels/*/Arn" + ], + "required": [ + "DetectorId", + "EventType", + "Rules" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "typeName": "AWS::FraudDetector::Detector" +} diff --git a/src/schema/aws-frauddetector-entitytype.json b/src/schema/aws-frauddetector-entitytype.json index 91543cc4..d70774ad 100644 --- a/src/schema/aws-frauddetector-entitytype.json +++ b/src/schema/aws-frauddetector-entitytype.json @@ -1,116 +1,116 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "An entity type for fraud detector.", - "handlers": { - "create": { - "permissions": [ - "frauddetector:GetEntityTypes", - "frauddetector:PutEntityType", - "frauddetector:ListTagsForResource", - "frauddetector:TagResource" - ] - }, - "delete": { - "permissions": [ - "frauddetector:GetEntityTypes", - "frauddetector:DeleteEntityType" - ] - }, - "list": { - "permissions": [ - "frauddetector:GetEntityTypes", - "frauddetector:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "frauddetector:GetEntityTypes", - "frauddetector:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "frauddetector:GetEntityTypes", - "frauddetector:PutEntityType", - "frauddetector:ListTagsForResource", - "frauddetector:TagResource", - "frauddetector:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The entity type ARN.", - "type": "string" - }, - "CreatedTime": { - "description": "The timestamp when the entity type was created.", - "type": "string" - }, - "Description": { - "description": "The entity type description.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "LastUpdatedTime": { - "description": "The timestamp when the entity type was last updated.", - "type": "string" - }, - "Name": { - "description": "The name of the entity type.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[0-9a-z_-]+$", - "type": "string" - }, - "Tags": { - "description": "Tags associated with this entity type.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedTime", - "/properties/LastUpdatedTime" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::FraudDetector::EntityType" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "An entity type for fraud detector.", + "handlers": { + "create": { + "permissions": [ + "frauddetector:GetEntityTypes", + "frauddetector:PutEntityType", + "frauddetector:ListTagsForResource", + "frauddetector:TagResource" + ] + }, + "delete": { + "permissions": [ + "frauddetector:GetEntityTypes", + "frauddetector:DeleteEntityType" + ] + }, + "list": { + "permissions": [ + "frauddetector:GetEntityTypes", + "frauddetector:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "frauddetector:GetEntityTypes", + "frauddetector:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "frauddetector:GetEntityTypes", + "frauddetector:PutEntityType", + "frauddetector:ListTagsForResource", + "frauddetector:TagResource", + "frauddetector:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The entity type ARN.", + "type": "string" + }, + "CreatedTime": { + "description": "The timestamp when the entity type was created.", + "type": "string" + }, + "Description": { + "description": "The entity type description.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "LastUpdatedTime": { + "description": "The timestamp when the entity type was last updated.", + "type": "string" + }, + "Name": { + "description": "The name of the entity type.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9a-z_-]+$", + "type": "string" + }, + "Tags": { + "description": "Tags associated with this entity type.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastUpdatedTime" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "typeName": "AWS::FraudDetector::EntityType" +} diff --git a/src/schema/aws-frauddetector-eventtype.json b/src/schema/aws-frauddetector-eventtype.json index 69c33e2f..b80bf633 100644 --- a/src/schema/aws-frauddetector-eventtype.json +++ b/src/schema/aws-frauddetector-eventtype.json @@ -1,365 +1,365 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "EntityType": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - }, - "CreatedTime": { - "description": "The time when the event type was created.", - "type": "string" - }, - "Description": { - "description": "The description.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Inline": { - "type": "boolean" - }, - "LastUpdatedTime": { - "description": "The time when the event type was last updated.", - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "description": "Tags associated with this event type.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "EventVariable": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - }, - "CreatedTime": { - "description": "The time when the event type was created.", - "type": "string" - }, - "DataSource": { - "enum": [ - "EVENT" - ], - "type": "string" - }, - "DataType": { - "enum": [ - "STRING", - "INTEGER", - "FLOAT", - "BOOLEAN" - ], - "type": "string" - }, - "DefaultValue": { - "type": "string" - }, - "Description": { - "description": "The description.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Inline": { - "type": "boolean" - }, - "LastUpdatedTime": { - "description": "The time when the event type was last updated.", - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "description": "Tags associated with this event type.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": false - }, - "VariableType": { - "enum": [ - "AUTH_CODE", - "AVS", - "BILLING_ADDRESS_L1", - "BILLING_ADDRESS_L2", - "BILLING_CITY", - "BILLING_COUNTRY", - "BILLING_NAME", - "BILLING_PHONE", - "BILLING_STATE", - "BILLING_ZIP", - "CARD_BIN", - "CATEGORICAL", - "CURRENCY_CODE", - "EMAIL_ADDRESS", - "FINGERPRINT", - "FRAUD_LABEL", - "FREE_FORM_TEXT", - "IP_ADDRESS", - "NUMERIC", - "ORDER_ID", - "PAYMENT_TYPE", - "PHONE_NUMBER", - "PRICE", - "PRODUCT_CATEGORY", - "SHIPPING_ADDRESS_L1", - "SHIPPING_ADDRESS_L2", - "SHIPPING_CITY", - "SHIPPING_COUNTRY", - "SHIPPING_NAME", - "SHIPPING_PHONE", - "SHIPPING_STATE", - "SHIPPING_ZIP", - "USERAGENT" - ], - "type": "string" - } - }, - "type": "object" - }, - "Label": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - }, - "CreatedTime": { - "description": "The time when the event type was created.", - "type": "string" - }, - "Description": { - "description": "The description.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Inline": { - "type": "boolean" - }, - "LastUpdatedTime": { - "description": "The time when the event type was last updated.", - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "description": "Tags associated with this event type.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "A resource schema for an EventType in Amazon Fraud Detector.", - "handlers": { - "create": { - "permissions": [ - "frauddetector:BatchCreateVariable", - "frauddetector:BatchGetVariable", - "frauddetector:CreateVariable", - "frauddetector:GetVariables", - "frauddetector:PutLabel", - "frauddetector:PutEntityType", - "frauddetector:PutEventType", - "frauddetector:GetEventTypes", - "frauddetector:GetLabels", - "frauddetector:GetEntityTypes", - "frauddetector:ListTagsForResource", - "frauddetector:TagResource" - ] - }, - "delete": { - "permissions": [ - "frauddetector:BatchGetVariable", - "frauddetector:GetVariables", - "frauddetector:GetEventTypes", - "frauddetector:GetLabels", - "frauddetector:GetEntityTypes", - "frauddetector:DeleteEventType", - "frauddetector:DeleteVariable", - "frauddetector:DeleteLabel", - "frauddetector:DeleteEntityType", - "frauddetector:ListTagsForResource" - ] - }, - "list": { - "permissions": [ - "frauddetector:BatchGetVariable", - "frauddetector:GetVariables", - "frauddetector:GetEventTypes", - "frauddetector:GetLabels", - "frauddetector:GetEntityTypes", - "frauddetector:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "frauddetector:BatchGetVariable", - "frauddetector:GetVariables", - "frauddetector:GetEventTypes", - "frauddetector:GetLabels", - "frauddetector:GetEntityTypes", - "frauddetector:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "frauddetector:BatchCreateVariable", - "frauddetector:BatchGetVariable", - "frauddetector:CreateVariable", - "frauddetector:UpdateVariable", - "frauddetector:GetVariables", - "frauddetector:PutLabel", - "frauddetector:PutEntityType", - "frauddetector:PutEventType", - "frauddetector:GetEventTypes", - "frauddetector:GetLabels", - "frauddetector:GetEntityTypes", - "frauddetector:DeleteEventType", - "frauddetector:DeleteVariable", - "frauddetector:DeleteLabel", - "frauddetector:DeleteEntityType", - "frauddetector:ListTagsForResource", - "frauddetector:TagResource", - "frauddetector:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The ARN of the event type.", - "type": "string" - }, - "CreatedTime": { - "description": "The time when the event type was created.", - "type": "string" - }, - "Description": { - "description": "The description of the event type.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "EntityTypes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EntityType" - }, - "minItems": 1, - "type": "array", - "uniqueItems": false - }, - "EventVariables": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EventVariable" - }, - "minItems": 1, - "type": "array", - "uniqueItems": false - }, - "Labels": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Label" - }, - "minItems": 2, - "type": "array", - "uniqueItems": false - }, - "LastUpdatedTime": { - "description": "The time when the event type was last updated.", - "type": "string" - }, - "Name": { - "description": "The name for the event type", - "maxLength": 64, - "minLength": 1, - "pattern": "^[0-9a-z_-]+$", - "type": "string" - }, - "Tags": { - "description": "Tags associated with this event type.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedTime", - "/properties/LastUpdatedTime", - "/properties/EventVariables/*/Arn", - "/properties/EventVariables/*/CreatedTime", - "/properties/EventVariables/*/LastUpdatedTime", - "/properties/Labels/*/Arn", - "/properties/Labels/*/CreatedTime", - "/properties/Labels/*/LastUpdatedTime", - "/properties/EntityTypes/*/Arn", - "/properties/EntityTypes/*/CreatedTime", - "/properties/EntityTypes/*/LastUpdatedTime" - ], - "required": [ - "EntityTypes", - "EventVariables", - "Labels", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::FraudDetector::EventType" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "EntityType": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + }, + "CreatedTime": { + "description": "The time when the event type was created.", + "type": "string" + }, + "Description": { + "description": "The description.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Inline": { + "type": "boolean" + }, + "LastUpdatedTime": { + "description": "The time when the event type was last updated.", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "description": "Tags associated with this event type.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EventVariable": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + }, + "CreatedTime": { + "description": "The time when the event type was created.", + "type": "string" + }, + "DataSource": { + "enum": [ + "EVENT" + ], + "type": "string" + }, + "DataType": { + "enum": [ + "STRING", + "INTEGER", + "FLOAT", + "BOOLEAN" + ], + "type": "string" + }, + "DefaultValue": { + "type": "string" + }, + "Description": { + "description": "The description.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Inline": { + "type": "boolean" + }, + "LastUpdatedTime": { + "description": "The time when the event type was last updated.", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "description": "Tags associated with this event type.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": false + }, + "VariableType": { + "enum": [ + "AUTH_CODE", + "AVS", + "BILLING_ADDRESS_L1", + "BILLING_ADDRESS_L2", + "BILLING_CITY", + "BILLING_COUNTRY", + "BILLING_NAME", + "BILLING_PHONE", + "BILLING_STATE", + "BILLING_ZIP", + "CARD_BIN", + "CATEGORICAL", + "CURRENCY_CODE", + "EMAIL_ADDRESS", + "FINGERPRINT", + "FRAUD_LABEL", + "FREE_FORM_TEXT", + "IP_ADDRESS", + "NUMERIC", + "ORDER_ID", + "PAYMENT_TYPE", + "PHONE_NUMBER", + "PRICE", + "PRODUCT_CATEGORY", + "SHIPPING_ADDRESS_L1", + "SHIPPING_ADDRESS_L2", + "SHIPPING_CITY", + "SHIPPING_COUNTRY", + "SHIPPING_NAME", + "SHIPPING_PHONE", + "SHIPPING_STATE", + "SHIPPING_ZIP", + "USERAGENT" + ], + "type": "string" + } + }, + "type": "object" + }, + "Label": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + }, + "CreatedTime": { + "description": "The time when the event type was created.", + "type": "string" + }, + "Description": { + "description": "The description.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Inline": { + "type": "boolean" + }, + "LastUpdatedTime": { + "description": "The time when the event type was last updated.", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "description": "Tags associated with this event type.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "A resource schema for an EventType in Amazon Fraud Detector.", + "handlers": { + "create": { + "permissions": [ + "frauddetector:BatchCreateVariable", + "frauddetector:BatchGetVariable", + "frauddetector:CreateVariable", + "frauddetector:GetVariables", + "frauddetector:PutLabel", + "frauddetector:PutEntityType", + "frauddetector:PutEventType", + "frauddetector:GetEventTypes", + "frauddetector:GetLabels", + "frauddetector:GetEntityTypes", + "frauddetector:ListTagsForResource", + "frauddetector:TagResource" + ] + }, + "delete": { + "permissions": [ + "frauddetector:BatchGetVariable", + "frauddetector:GetVariables", + "frauddetector:GetEventTypes", + "frauddetector:GetLabels", + "frauddetector:GetEntityTypes", + "frauddetector:DeleteEventType", + "frauddetector:DeleteVariable", + "frauddetector:DeleteLabel", + "frauddetector:DeleteEntityType", + "frauddetector:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "frauddetector:BatchGetVariable", + "frauddetector:GetVariables", + "frauddetector:GetEventTypes", + "frauddetector:GetLabels", + "frauddetector:GetEntityTypes", + "frauddetector:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "frauddetector:BatchGetVariable", + "frauddetector:GetVariables", + "frauddetector:GetEventTypes", + "frauddetector:GetLabels", + "frauddetector:GetEntityTypes", + "frauddetector:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "frauddetector:BatchCreateVariable", + "frauddetector:BatchGetVariable", + "frauddetector:CreateVariable", + "frauddetector:UpdateVariable", + "frauddetector:GetVariables", + "frauddetector:PutLabel", + "frauddetector:PutEntityType", + "frauddetector:PutEventType", + "frauddetector:GetEventTypes", + "frauddetector:GetLabels", + "frauddetector:GetEntityTypes", + "frauddetector:DeleteEventType", + "frauddetector:DeleteVariable", + "frauddetector:DeleteLabel", + "frauddetector:DeleteEntityType", + "frauddetector:ListTagsForResource", + "frauddetector:TagResource", + "frauddetector:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The ARN of the event type.", + "type": "string" + }, + "CreatedTime": { + "description": "The time when the event type was created.", + "type": "string" + }, + "Description": { + "description": "The description of the event type.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "EntityTypes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EntityType" + }, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "EventVariables": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EventVariable" + }, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "Labels": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Label" + }, + "minItems": 2, + "type": "array", + "uniqueItems": false + }, + "LastUpdatedTime": { + "description": "The time when the event type was last updated.", + "type": "string" + }, + "Name": { + "description": "The name for the event type", + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9a-z_-]+$", + "type": "string" + }, + "Tags": { + "description": "Tags associated with this event type.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastUpdatedTime", + "/properties/EventVariables/*/Arn", + "/properties/EventVariables/*/CreatedTime", + "/properties/EventVariables/*/LastUpdatedTime", + "/properties/Labels/*/Arn", + "/properties/Labels/*/CreatedTime", + "/properties/Labels/*/LastUpdatedTime", + "/properties/EntityTypes/*/Arn", + "/properties/EntityTypes/*/CreatedTime", + "/properties/EntityTypes/*/LastUpdatedTime" + ], + "required": [ + "EntityTypes", + "EventVariables", + "Labels", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "typeName": "AWS::FraudDetector::EventType" +} diff --git a/src/schema/aws-frauddetector-label.json b/src/schema/aws-frauddetector-label.json index afc936c5..73529ac5 100644 --- a/src/schema/aws-frauddetector-label.json +++ b/src/schema/aws-frauddetector-label.json @@ -1,116 +1,116 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "An label for fraud detector.", - "handlers": { - "create": { - "permissions": [ - "frauddetector:GetLabels", - "frauddetector:PutLabel", - "frauddetector:ListTagsForResource", - "frauddetector:TagResource" - ] - }, - "delete": { - "permissions": [ - "frauddetector:GetLabels", - "frauddetector:DeleteLabel" - ] - }, - "list": { - "permissions": [ - "frauddetector:GetLabels", - "frauddetector:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "frauddetector:GetLabels", - "frauddetector:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "frauddetector:GetLabels", - "frauddetector:PutLabel", - "frauddetector:ListTagsForResource", - "frauddetector:TagResource", - "frauddetector:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The label ARN.", - "type": "string" - }, - "CreatedTime": { - "description": "The timestamp when the label was created.", - "type": "string" - }, - "Description": { - "description": "The label description.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "LastUpdatedTime": { - "description": "The timestamp when the label was last updated.", - "type": "string" - }, - "Name": { - "description": "The name of the label.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[0-9a-z_-]+$", - "type": "string" - }, - "Tags": { - "description": "Tags associated with this label.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedTime", - "/properties/LastUpdatedTime" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::FraudDetector::Label" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "An label for fraud detector.", + "handlers": { + "create": { + "permissions": [ + "frauddetector:GetLabels", + "frauddetector:PutLabel", + "frauddetector:ListTagsForResource", + "frauddetector:TagResource" + ] + }, + "delete": { + "permissions": [ + "frauddetector:GetLabels", + "frauddetector:DeleteLabel" + ] + }, + "list": { + "permissions": [ + "frauddetector:GetLabels", + "frauddetector:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "frauddetector:GetLabels", + "frauddetector:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "frauddetector:GetLabels", + "frauddetector:PutLabel", + "frauddetector:ListTagsForResource", + "frauddetector:TagResource", + "frauddetector:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The label ARN.", + "type": "string" + }, + "CreatedTime": { + "description": "The timestamp when the label was created.", + "type": "string" + }, + "Description": { + "description": "The label description.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "LastUpdatedTime": { + "description": "The timestamp when the label was last updated.", + "type": "string" + }, + "Name": { + "description": "The name of the label.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9a-z_-]+$", + "type": "string" + }, + "Tags": { + "description": "Tags associated with this label.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastUpdatedTime" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "typeName": "AWS::FraudDetector::Label" +} diff --git a/src/schema/aws-frauddetector-list.json b/src/schema/aws-frauddetector-list.json index 3e5c4daa..354abfcc 100644 --- a/src/schema/aws-frauddetector-list.json +++ b/src/schema/aws-frauddetector-list.json @@ -1,155 +1,155 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Element": { - "description": "An element in a list.", - "maxLength": 64, - "minLength": 1, - "pattern": "^\\S+( +\\S+)*$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "A resource schema for a List in Amazon Fraud Detector.", - "handlers": { - "create": { - "permissions": [ - "frauddetector:CreateList", - "frauddetector:GetListElements", - "frauddetector:GetListsMetadata", - "frauddetector:ListTagsForResource", - "frauddetector:TagResource", - "frauddetector:UpdateList" - ] - }, - "delete": { - "permissions": [ - "frauddetector:DeleteList", - "frauddetector:GetListsMetadata" - ] - }, - "list": { - "permissions": [ - "frauddetector:GetListElements", - "frauddetector:GetListsMetadata", - "frauddetector:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "frauddetector:GetListElements", - "frauddetector:GetListsMetadata", - "frauddetector:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "frauddetector:GetListElements", - "frauddetector:GetListsMetadata", - "frauddetector:ListTagsForResource", - "frauddetector:UntagResource", - "frauddetector:UpdateList", - "frauddetector:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The list ARN.", - "type": "string" - }, - "CreatedTime": { - "description": "The time when the list was created.", - "type": "string" - }, - "Description": { - "description": "The description of the list.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Elements": { - "description": "The elements in this list.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Element" - }, - "maxItems": 100000, - "minItems": 0, - "type": "array" - }, - "LastUpdatedTime": { - "description": "The time when the list was last updated.", - "type": "string" - }, - "Name": { - "description": "The name of the list.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[0-9a-z_]+$", - "type": "string" - }, - "Tags": { - "description": "Tags associated with this list.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": false - }, - "VariableType": { - "description": "The variable type of the list.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[A-Z_]{1,64}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedTime", - "/properties/LastUpdatedTime" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::FraudDetector::List" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Element": { + "description": "An element in a list.", + "maxLength": 64, + "minLength": 1, + "pattern": "^\\S+( +\\S+)*$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "A resource schema for a List in Amazon Fraud Detector.", + "handlers": { + "create": { + "permissions": [ + "frauddetector:CreateList", + "frauddetector:GetListElements", + "frauddetector:GetListsMetadata", + "frauddetector:ListTagsForResource", + "frauddetector:TagResource", + "frauddetector:UpdateList" + ] + }, + "delete": { + "permissions": [ + "frauddetector:DeleteList", + "frauddetector:GetListsMetadata" + ] + }, + "list": { + "permissions": [ + "frauddetector:GetListElements", + "frauddetector:GetListsMetadata", + "frauddetector:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "frauddetector:GetListElements", + "frauddetector:GetListsMetadata", + "frauddetector:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "frauddetector:GetListElements", + "frauddetector:GetListsMetadata", + "frauddetector:ListTagsForResource", + "frauddetector:UntagResource", + "frauddetector:UpdateList", + "frauddetector:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The list ARN.", + "type": "string" + }, + "CreatedTime": { + "description": "The time when the list was created.", + "type": "string" + }, + "Description": { + "description": "The description of the list.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Elements": { + "description": "The elements in this list.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Element" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "LastUpdatedTime": { + "description": "The time when the list was last updated.", + "type": "string" + }, + "Name": { + "description": "The name of the list.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9a-z_]+$", + "type": "string" + }, + "Tags": { + "description": "Tags associated with this list.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": false + }, + "VariableType": { + "description": "The variable type of the list.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Z_]{1,64}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastUpdatedTime" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::FraudDetector::List" +} diff --git a/src/schema/aws-frauddetector-outcome.json b/src/schema/aws-frauddetector-outcome.json index c80744a3..5bcc1042 100644 --- a/src/schema/aws-frauddetector-outcome.json +++ b/src/schema/aws-frauddetector-outcome.json @@ -1,116 +1,116 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "An outcome for rule evaluation.", - "handlers": { - "create": { - "permissions": [ - "frauddetector:GetOutcomes", - "frauddetector:PutOutcome", - "frauddetector:ListTagsForResource", - "frauddetector:TagResource" - ] - }, - "delete": { - "permissions": [ - "frauddetector:GetOutcomes", - "frauddetector:DeleteOutcome" - ] - }, - "list": { - "permissions": [ - "frauddetector:GetOutcomes", - "frauddetector:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "frauddetector:GetOutcomes", - "frauddetector:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "frauddetector:GetOutcomes", - "frauddetector:PutOutcome", - "frauddetector:ListTagsForResource", - "frauddetector:TagResource", - "frauddetector:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The outcome ARN.", - "type": "string" - }, - "CreatedTime": { - "description": "The timestamp when the outcome was created.", - "type": "string" - }, - "Description": { - "description": "The outcome description.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "LastUpdatedTime": { - "description": "The timestamp when the outcome was last updated.", - "type": "string" - }, - "Name": { - "description": "The name of the outcome.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[0-9a-z_-]+$", - "type": "string" - }, - "Tags": { - "description": "Tags associated with this outcome.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedTime", - "/properties/LastUpdatedTime" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::FraudDetector::Outcome" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "An outcome for rule evaluation.", + "handlers": { + "create": { + "permissions": [ + "frauddetector:GetOutcomes", + "frauddetector:PutOutcome", + "frauddetector:ListTagsForResource", + "frauddetector:TagResource" + ] + }, + "delete": { + "permissions": [ + "frauddetector:GetOutcomes", + "frauddetector:DeleteOutcome" + ] + }, + "list": { + "permissions": [ + "frauddetector:GetOutcomes", + "frauddetector:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "frauddetector:GetOutcomes", + "frauddetector:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "frauddetector:GetOutcomes", + "frauddetector:PutOutcome", + "frauddetector:ListTagsForResource", + "frauddetector:TagResource", + "frauddetector:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The outcome ARN.", + "type": "string" + }, + "CreatedTime": { + "description": "The timestamp when the outcome was created.", + "type": "string" + }, + "Description": { + "description": "The outcome description.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "LastUpdatedTime": { + "description": "The timestamp when the outcome was last updated.", + "type": "string" + }, + "Name": { + "description": "The name of the outcome.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9a-z_-]+$", + "type": "string" + }, + "Tags": { + "description": "Tags associated with this outcome.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastUpdatedTime" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "typeName": "AWS::FraudDetector::Outcome" +} diff --git a/src/schema/aws-frauddetector-variable.json b/src/schema/aws-frauddetector-variable.json index 1b522451..0692699a 100644 --- a/src/schema/aws-frauddetector-variable.json +++ b/src/schema/aws-frauddetector-variable.json @@ -1,178 +1,178 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "A resource schema for a Variable in Amazon Fraud Detector.", - "handlers": { - "create": { - "permissions": [ - "frauddetector:GetVariables", - "frauddetector:CreateVariable", - "frauddetector:ListTagsForResource", - "frauddetector:TagResource" - ] - }, - "delete": { - "permissions": [ - "frauddetector:GetVariables", - "frauddetector:DeleteVariable" - ] - }, - "list": { - "permissions": [ - "frauddetector:GetVariables", - "frauddetector:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "frauddetector:GetVariables", - "frauddetector:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "frauddetector:GetVariables", - "frauddetector:UpdateVariable", - "frauddetector:ListTagsForResource", - "frauddetector:TagResource", - "frauddetector:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The ARN of the variable.", - "type": "string" - }, - "CreatedTime": { - "description": "The time when the variable was created.", - "type": "string" - }, - "DataSource": { - "description": "The source of the data.", - "enum": [ - "EVENT", - "EXTERNAL_MODEL_SCORE" - ], - "type": "string" - }, - "DataType": { - "description": "The data type.", - "enum": [ - "STRING", - "INTEGER", - "FLOAT", - "BOOLEAN" - ], - "type": "string" - }, - "DefaultValue": { - "description": "The default value for the variable when no value is received.", - "type": "string" - }, - "Description": { - "description": "The description.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "LastUpdatedTime": { - "description": "The time when the variable was last updated.", - "type": "string" - }, - "Name": { - "description": "The name of the variable.", - "pattern": "^[a-z_][a-z0-9_]{0,99}?$", - "type": "string" - }, - "Tags": { - "description": "Tags associated with this variable.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": false - }, - "VariableType": { - "description": "The variable type. For more information see https://docs.aws.amazon.com/frauddetector/latest/ug/create-a-variable.html#variable-types", - "enum": [ - "AUTH_CODE", - "AVS", - "BILLING_ADDRESS_L1", - "BILLING_ADDRESS_L2", - "BILLING_CITY", - "BILLING_COUNTRY", - "BILLING_NAME", - "BILLING_PHONE", - "BILLING_STATE", - "BILLING_ZIP", - "CARD_BIN", - "CATEGORICAL", - "CURRENCY_CODE", - "EMAIL_ADDRESS", - "FINGERPRINT", - "FRAUD_LABEL", - "FREE_FORM_TEXT", - "IP_ADDRESS", - "NUMERIC", - "ORDER_ID", - "PAYMENT_TYPE", - "PHONE_NUMBER", - "PRICE", - "PRODUCT_CATEGORY", - "SHIPPING_ADDRESS_L1", - "SHIPPING_ADDRESS_L2", - "SHIPPING_CITY", - "SHIPPING_COUNTRY", - "SHIPPING_NAME", - "SHIPPING_PHONE", - "SHIPPING_STATE", - "SHIPPING_ZIP", - "USERAGENT" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedTime", - "/properties/LastUpdatedTime" - ], - "required": [ - "DataType", - "DataSource", - "DefaultValue", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::FraudDetector::Variable" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "A resource schema for a Variable in Amazon Fraud Detector.", + "handlers": { + "create": { + "permissions": [ + "frauddetector:GetVariables", + "frauddetector:CreateVariable", + "frauddetector:ListTagsForResource", + "frauddetector:TagResource" + ] + }, + "delete": { + "permissions": [ + "frauddetector:GetVariables", + "frauddetector:DeleteVariable" + ] + }, + "list": { + "permissions": [ + "frauddetector:GetVariables", + "frauddetector:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "frauddetector:GetVariables", + "frauddetector:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "frauddetector:GetVariables", + "frauddetector:UpdateVariable", + "frauddetector:ListTagsForResource", + "frauddetector:TagResource", + "frauddetector:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The ARN of the variable.", + "type": "string" + }, + "CreatedTime": { + "description": "The time when the variable was created.", + "type": "string" + }, + "DataSource": { + "description": "The source of the data.", + "enum": [ + "EVENT", + "EXTERNAL_MODEL_SCORE" + ], + "type": "string" + }, + "DataType": { + "description": "The data type.", + "enum": [ + "STRING", + "INTEGER", + "FLOAT", + "BOOLEAN" + ], + "type": "string" + }, + "DefaultValue": { + "description": "The default value for the variable when no value is received.", + "type": "string" + }, + "Description": { + "description": "The description.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "LastUpdatedTime": { + "description": "The time when the variable was last updated.", + "type": "string" + }, + "Name": { + "description": "The name of the variable.", + "pattern": "^[a-z_][a-z0-9_]{0,99}?$", + "type": "string" + }, + "Tags": { + "description": "Tags associated with this variable.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": false + }, + "VariableType": { + "description": "The variable type. For more information see https://docs.aws.amazon.com/frauddetector/latest/ug/create-a-variable.html#variable-types", + "enum": [ + "AUTH_CODE", + "AVS", + "BILLING_ADDRESS_L1", + "BILLING_ADDRESS_L2", + "BILLING_CITY", + "BILLING_COUNTRY", + "BILLING_NAME", + "BILLING_PHONE", + "BILLING_STATE", + "BILLING_ZIP", + "CARD_BIN", + "CATEGORICAL", + "CURRENCY_CODE", + "EMAIL_ADDRESS", + "FINGERPRINT", + "FRAUD_LABEL", + "FREE_FORM_TEXT", + "IP_ADDRESS", + "NUMERIC", + "ORDER_ID", + "PAYMENT_TYPE", + "PHONE_NUMBER", + "PRICE", + "PRODUCT_CATEGORY", + "SHIPPING_ADDRESS_L1", + "SHIPPING_ADDRESS_L2", + "SHIPPING_CITY", + "SHIPPING_COUNTRY", + "SHIPPING_NAME", + "SHIPPING_PHONE", + "SHIPPING_STATE", + "SHIPPING_ZIP", + "USERAGENT" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastUpdatedTime" + ], + "required": [ + "DataType", + "DataSource", + "DefaultValue", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "typeName": "AWS::FraudDetector::Variable" +} diff --git a/src/schema/aws-fsx-datarepositoryassociation.json b/src/schema/aws-fsx-datarepositoryassociation.json index 5046b60a..c0a010dc 100644 --- a/src/schema/aws-fsx-datarepositoryassociation.json +++ b/src/schema/aws-fsx-datarepositoryassociation.json @@ -1,216 +1,216 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FileSystemId", - "/properties/FileSystemPath", - "/properties/DataRepositoryPath", - "/properties/BatchImportMetaDataOnCreate" - ], - "definitions": { - "AutoExportPolicy": { - "additionalProperties": false, - "description": "Describes a data repository association's automatic export policy. The ``AutoExportPolicy`` defines the types of updated objects on the file system that will be automatically exported to the data repository. As you create, modify, or delete files, Amazon FSx for Lustre automatically exports the defined changes asynchronously once your application finishes modifying the file.\n The ``AutoExportPolicy`` is only supported on Amazon FSx for Lustre file systems with a data repository association.", - "properties": { - "Events": { - "$ref": "#/definitions/EventTypes", - "description": "The ``AutoExportPolicy`` can have the following event values:\n + ``NEW`` - New files and directories are automatically exported to the data repository as they are added to the file system.\n + ``CHANGED`` - Changes to files and directories on the file system are automatically exported to the data repository.\n + ``DELETED`` - Files and directories are automatically deleted on the data repository when they are deleted on the file system.\n \n You can define any combination of event types for your ``AutoExportPolicy``." - } - }, - "required": [ - "Events" - ], - "type": "object" - }, - "AutoImportPolicy": { - "additionalProperties": false, - "description": "Describes the data repository association's automatic import policy. The AutoImportPolicy defines how Amazon FSx keeps your file metadata and directory listings up to date by importing changes to your Amazon FSx for Lustre file system as you modify objects in a linked S3 bucket.\n The ``AutoImportPolicy`` is only supported on Amazon FSx for Lustre file systems with a data repository association.", - "properties": { - "Events": { - "$ref": "#/definitions/EventTypes", - "description": "The ``AutoImportPolicy`` can have the following event values:\n + ``NEW`` - Amazon FSx automatically imports metadata of files added to the linked S3 bucket that do not currently exist in the FSx file system.\n + ``CHANGED`` - Amazon FSx automatically updates file metadata and invalidates existing file content on the file system as files change in the data repository.\n + ``DELETED`` - Amazon FSx automatically deletes files on the file system as corresponding files are deleted in the data repository.\n \n You can define any combination of event types for your ``AutoImportPolicy``." - } - }, - "required": [ - "Events" - ], - "type": "object" - }, - "EventType": { - "enum": [ - "NEW", - "CHANGED", - "DELETED" - ], - "type": "string" - }, - "EventTypes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EventType" - }, - "maxItems": 3, - "type": "array", - "uniqueItems": true - }, - "S3": { - "additionalProperties": false, - "description": "The configuration for an Amazon S3 data repository linked to an Amazon FSx Lustre file system with a data repository association. The configuration defines which file events (new, changed, or deleted files or directories) are automatically imported from the linked data repository to the file system or automatically exported from the file system to the data repository.", - "properties": { - "AutoExportPolicy": { - "$ref": "#/definitions/AutoExportPolicy", - "description": "Describes a data repository association's automatic export policy. The ``AutoExportPolicy`` defines the types of updated objects on the file system that will be automatically exported to the data repository. As you create, modify, or delete files, Amazon FSx for Lustre automatically exports the defined changes asynchronously once your application finishes modifying the file.\n The ``AutoExportPolicy`` is only supported on Amazon FSx for Lustre file systems with a data repository association." - }, - "AutoImportPolicy": { - "$ref": "#/definitions/AutoImportPolicy", - "description": "Describes the data repository association's automatic import policy. The AutoImportPolicy defines how Amazon FSx keeps your file metadata and directory listings up to date by importing changes to your Amazon FSx for Lustre file system as you modify objects in a linked S3 bucket.\n The ``AutoImportPolicy`` is only supported on Amazon FSx for Lustre file systems with a data repository association." - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Specifies a key-value pair for a resource tag.", - "properties": { - "Key": { - "description": "A value that specifies the ``TagKey``, the name of the tag. Tag keys must be unique for the resource to which they are attached.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "A value that specifies the ``TagValue``, the value assigned to the corresponding tag key. Tag values can be null and don't have to be unique in a tag set. For example, you can have a key-value pair in a tag set of ``finances : April`` and also of ``payroll : April``.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Creates an Amazon FSx for Lustre data repository association (DRA). A data repository association is a link between a directory on the file system and an Amazon S3 bucket or prefix. You can have a maximum of 8 data repository associations on a file system. Data repository associations are supported on all FSx for Lustre 2.12 and newer file systems, excluding ``scratch_1`` deployment type. \n Each data repository association must have a unique Amazon FSx file system directory and a unique S3 bucket or prefix associated with it. You can configure a data repository association for automatic import only, for automatic export only, or for both. To learn more about linking a data repository to your file system, see [Linking your file system to an S3 bucket](https://docs.aws.amazon.com/fsx/latest/LustreGuide/create-dra-linked-data-repo.html).", - "handlers": { - "create": { - "permissions": [ - "fsx:CreateDataRepositoryAssociation", - "fsx:DescribeDataRepositoryAssociations", - "fsx:TagResource", - "s3:ListBucket", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy", - "iam:CreateServiceLinkedRole", - "iam:PutRolePolicy" - ], - "timeoutInMinutes": 120 - }, - "delete": { - "permissions": [ - "fsx:DescribeDataRepositoryAssociations", - "fsx:DeleteDataRepositoryAssociation" - ], - "timeoutInMinutes": 180 - }, - "list": { - "permissions": [ - "fsx:DescribeDataRepositoryAssociations" - ] - }, - "read": { - "permissions": [ - "fsx:DescribeDataRepositoryAssociations" - ] - }, - "update": { - "permissions": [ - "fsx:DescribeDataRepositoryAssociations", - "fsx:UpdateDataRepositoryAssociation", - "fsx:TagResource", - "fsx:UntagResource", - "s3:ListBucket", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy", - "iam:CreateServiceLinkedRole", - "iam:PutRolePolicy" - ], - "timeoutInMinutes": 180 - } - }, - "primaryIdentifier": [ - "/properties/AssociationId" - ], - "properties": { - "AssociationId": { - "description": "", - "type": "string" - }, - "BatchImportMetaDataOnCreate": { - "description": "A boolean flag indicating whether an import data repository task to import metadata should run after the data repository association is created. The task runs if this flag is set to ``true``.", - "type": "boolean" - }, - "DataRepositoryPath": { - "description": "The path to the Amazon S3 data repository that will be linked to the file system. The path can be an S3 bucket or prefix in the format ``s3://myBucket/myPrefix/``. This path specifies where in the S3 data repository files will be imported from or exported to.", - "type": "string" - }, - "FileSystemId": { - "description": "The ID of the file system on which the data repository association is configured.", - "type": "string" - }, - "FileSystemPath": { - "description": "A path on the Amazon FSx for Lustre file system that points to a high-level directory (such as ``/ns1/``) or subdirectory (such as ``/ns1/subdir/``) that will be mapped 1-1 with ``DataRepositoryPath``. The leading forward slash in the name is required. Two data repository associations cannot have overlapping file system paths. For example, if a data repository is associated with file system path ``/ns1/``, then you cannot link another data repository with file system path ``/ns1/ns2``.\n This path specifies where in your file system files will be exported from or imported to. This file system directory can be linked to only one Amazon S3 bucket, and no other S3 bucket can be linked to the directory.\n If you specify only a forward slash (``/``) as the file system path, you can link only one data repository to the file system. You can only specify \"/\" as the file system path for the first data repository associated with a file system.", - "type": "string" - }, - "ImportedFileChunkSize": { - "description": "For files imported from a data repository, this value determines the stripe count and maximum amount of data per file (in MiB) stored on a single physical disk. The maximum number of disks that a single file can be striped across is limited by the total number of disks that make up the file system or cache.\n The default chunk size is 1,024 MiB (1 GiB) and can go as high as 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.", - "type": "integer" - }, - "ResourceARN": { - "description": "", - "type": "string" - }, - "S3": { - "$ref": "#/definitions/S3", - "description": "The configuration for an Amazon S3 data repository linked to an Amazon FSx Lustre file system with a data repository association. The configuration defines which file events (new, changed, or deleted files or directories) are automatically imported from the linked data repository to the file system or automatically exported from the file system to the data repository." - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.\n For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/AssociationId", - "/properties/ResourceARN" - ], - "required": [ - "FileSystemId", - "FileSystemPath", - "DataRepositoryPath" - ], - "resourceLink": { - "mappings": { - "AssociationId": "/AssociationId", - "FileSystemId": "/FileSystemId" - }, - "templateUri": "/fsx/home?region=${awsRegion}#data-repository-associations-details/${FileSystemId}/${AssociationId}" - }, - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-fsx.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "fsx:TagResource", - "fsx:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::FSx::DataRepositoryAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FileSystemId", + "/properties/FileSystemPath", + "/properties/DataRepositoryPath", + "/properties/BatchImportMetaDataOnCreate" + ], + "definitions": { + "AutoExportPolicy": { + "additionalProperties": false, + "description": "Describes a data repository association's automatic export policy. The ``AutoExportPolicy`` defines the types of updated objects on the file system that will be automatically exported to the data repository. As you create, modify, or delete files, Amazon FSx for Lustre automatically exports the defined changes asynchronously once your application finishes modifying the file.\n The ``AutoExportPolicy`` is only supported on Amazon FSx for Lustre file systems with a data repository association.", + "properties": { + "Events": { + "$ref": "#/definitions/EventTypes", + "description": "The ``AutoExportPolicy`` can have the following event values:\n + ``NEW`` - New files and directories are automatically exported to the data repository as they are added to the file system.\n + ``CHANGED`` - Changes to files and directories on the file system are automatically exported to the data repository.\n + ``DELETED`` - Files and directories are automatically deleted on the data repository when they are deleted on the file system.\n \n You can define any combination of event types for your ``AutoExportPolicy``." + } + }, + "required": [ + "Events" + ], + "type": "object" + }, + "AutoImportPolicy": { + "additionalProperties": false, + "description": "Describes the data repository association's automatic import policy. The AutoImportPolicy defines how Amazon FSx keeps your file metadata and directory listings up to date by importing changes to your Amazon FSx for Lustre file system as you modify objects in a linked S3 bucket.\n The ``AutoImportPolicy`` is only supported on Amazon FSx for Lustre file systems with a data repository association.", + "properties": { + "Events": { + "$ref": "#/definitions/EventTypes", + "description": "The ``AutoImportPolicy`` can have the following event values:\n + ``NEW`` - Amazon FSx automatically imports metadata of files added to the linked S3 bucket that do not currently exist in the FSx file system.\n + ``CHANGED`` - Amazon FSx automatically updates file metadata and invalidates existing file content on the file system as files change in the data repository.\n + ``DELETED`` - Amazon FSx automatically deletes files on the file system as corresponding files are deleted in the data repository.\n \n You can define any combination of event types for your ``AutoImportPolicy``." + } + }, + "required": [ + "Events" + ], + "type": "object" + }, + "EventType": { + "enum": [ + "NEW", + "CHANGED", + "DELETED" + ], + "type": "string" + }, + "EventTypes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EventType" + }, + "maxItems": 3, + "type": "array", + "uniqueItems": true + }, + "S3": { + "additionalProperties": false, + "description": "The configuration for an Amazon S3 data repository linked to an Amazon FSx Lustre file system with a data repository association. The configuration defines which file events (new, changed, or deleted files or directories) are automatically imported from the linked data repository to the file system or automatically exported from the file system to the data repository.", + "properties": { + "AutoExportPolicy": { + "$ref": "#/definitions/AutoExportPolicy", + "description": "Describes a data repository association's automatic export policy. The ``AutoExportPolicy`` defines the types of updated objects on the file system that will be automatically exported to the data repository. As you create, modify, or delete files, Amazon FSx for Lustre automatically exports the defined changes asynchronously once your application finishes modifying the file.\n The ``AutoExportPolicy`` is only supported on Amazon FSx for Lustre file systems with a data repository association." + }, + "AutoImportPolicy": { + "$ref": "#/definitions/AutoImportPolicy", + "description": "Describes the data repository association's automatic import policy. The AutoImportPolicy defines how Amazon FSx keeps your file metadata and directory listings up to date by importing changes to your Amazon FSx for Lustre file system as you modify objects in a linked S3 bucket.\n The ``AutoImportPolicy`` is only supported on Amazon FSx for Lustre file systems with a data repository association." + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Specifies a key-value pair for a resource tag.", + "properties": { + "Key": { + "description": "A value that specifies the ``TagKey``, the name of the tag. Tag keys must be unique for the resource to which they are attached.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A value that specifies the ``TagValue``, the value assigned to the corresponding tag key. Tag values can be null and don't have to be unique in a tag set. For example, you can have a key-value pair in a tag set of ``finances : April`` and also of ``payroll : April``.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Creates an Amazon FSx for Lustre data repository association (DRA). A data repository association is a link between a directory on the file system and an Amazon S3 bucket or prefix. You can have a maximum of 8 data repository associations on a file system. Data repository associations are supported on all FSx for Lustre 2.12 and newer file systems, excluding ``scratch_1`` deployment type. \n Each data repository association must have a unique Amazon FSx file system directory and a unique S3 bucket or prefix associated with it. You can configure a data repository association for automatic import only, for automatic export only, or for both. To learn more about linking a data repository to your file system, see [Linking your file system to an S3 bucket](https://docs.aws.amazon.com/fsx/latest/LustreGuide/create-dra-linked-data-repo.html).", + "handlers": { + "create": { + "permissions": [ + "fsx:CreateDataRepositoryAssociation", + "fsx:DescribeDataRepositoryAssociations", + "fsx:TagResource", + "s3:ListBucket", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "iam:CreateServiceLinkedRole", + "iam:PutRolePolicy" + ], + "timeoutInMinutes": 120 + }, + "delete": { + "permissions": [ + "fsx:DescribeDataRepositoryAssociations", + "fsx:DeleteDataRepositoryAssociation" + ], + "timeoutInMinutes": 180 + }, + "list": { + "permissions": [ + "fsx:DescribeDataRepositoryAssociations" + ] + }, + "read": { + "permissions": [ + "fsx:DescribeDataRepositoryAssociations" + ] + }, + "update": { + "permissions": [ + "fsx:DescribeDataRepositoryAssociations", + "fsx:UpdateDataRepositoryAssociation", + "fsx:TagResource", + "fsx:UntagResource", + "s3:ListBucket", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "iam:CreateServiceLinkedRole", + "iam:PutRolePolicy" + ], + "timeoutInMinutes": 180 + } + }, + "primaryIdentifier": [ + "/properties/AssociationId" + ], + "properties": { + "AssociationId": { + "description": "", + "type": "string" + }, + "BatchImportMetaDataOnCreate": { + "description": "A boolean flag indicating whether an import data repository task to import metadata should run after the data repository association is created. The task runs if this flag is set to ``true``.", + "type": "boolean" + }, + "DataRepositoryPath": { + "description": "The path to the Amazon S3 data repository that will be linked to the file system. The path can be an S3 bucket or prefix in the format ``s3://myBucket/myPrefix/``. This path specifies where in the S3 data repository files will be imported from or exported to.", + "type": "string" + }, + "FileSystemId": { + "description": "The ID of the file system on which the data repository association is configured.", + "type": "string" + }, + "FileSystemPath": { + "description": "A path on the Amazon FSx for Lustre file system that points to a high-level directory (such as ``/ns1/``) or subdirectory (such as ``/ns1/subdir/``) that will be mapped 1-1 with ``DataRepositoryPath``. The leading forward slash in the name is required. Two data repository associations cannot have overlapping file system paths. For example, if a data repository is associated with file system path ``/ns1/``, then you cannot link another data repository with file system path ``/ns1/ns2``.\n This path specifies where in your file system files will be exported from or imported to. This file system directory can be linked to only one Amazon S3 bucket, and no other S3 bucket can be linked to the directory.\n If you specify only a forward slash (``/``) as the file system path, you can link only one data repository to the file system. You can only specify \"/\" as the file system path for the first data repository associated with a file system.", + "type": "string" + }, + "ImportedFileChunkSize": { + "description": "For files imported from a data repository, this value determines the stripe count and maximum amount of data per file (in MiB) stored on a single physical disk. The maximum number of disks that a single file can be striped across is limited by the total number of disks that make up the file system or cache.\n The default chunk size is 1,024 MiB (1 GiB) and can go as high as 512,000 MiB (500 GiB). Amazon S3 objects have a maximum size of 5 TB.", + "type": "integer" + }, + "ResourceARN": { + "description": "", + "type": "string" + }, + "S3": { + "$ref": "#/definitions/S3", + "description": "The configuration for an Amazon S3 data repository linked to an Amazon FSx Lustre file system with a data repository association. The configuration defines which file events (new, changed, or deleted files or directories) are automatically imported from the linked data repository to the file system or automatically exported from the file system to the data repository." + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.\n For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AssociationId", + "/properties/ResourceARN" + ], + "required": [ + "FileSystemId", + "FileSystemPath", + "DataRepositoryPath" + ], + "resourceLink": { + "mappings": { + "AssociationId": "/AssociationId", + "FileSystemId": "/FileSystemId" + }, + "templateUri": "/fsx/home?region=${awsRegion}#data-repository-associations-details/${FileSystemId}/${AssociationId}" + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-fsx.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "fsx:TagResource", + "fsx:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::FSx::DataRepositoryAssociation" +} diff --git a/src/schema/aws-fsx-filesystem.json b/src/schema/aws-fsx-filesystem.json index ae370d61..6f640929 100644 --- a/src/schema/aws-fsx-filesystem.json +++ b/src/schema/aws-fsx-filesystem.json @@ -1,459 +1,476 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKeyId", - "/properties/SecurityGroupIds", - "/properties/FileSystemTypeVersion", - "/properties/FileSystemType", - "/properties/SubnetIds", - "/properties/BackupId" - ], - "definitions": { - "AuditLogConfiguration": { - "additionalProperties": false, - "properties": { - "AuditLogDestination": { - "type": "string" - }, - "FileAccessAuditLogLevel": { - "type": "string" - }, - "FileShareAccessAuditLogLevel": { - "type": "string" - } - }, - "required": [ - "FileAccessAuditLogLevel", - "FileShareAccessAuditLogLevel" - ], - "type": "object" - }, - "ClientConfigurations": { - "additionalProperties": false, - "properties": { - "Clients": { - "type": "string" - }, - "Options": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "DiskIopsConfiguration": { - "additionalProperties": false, - "properties": { - "Iops": { - "type": "integer" - }, - "Mode": { - "type": "string" - } - }, - "type": "object" - }, - "LustreConfiguration": { - "additionalProperties": false, - "properties": { - "AutoImportPolicy": { - "type": "string" - }, - "AutomaticBackupRetentionDays": { - "type": "integer" - }, - "CopyTagsToBackups": { - "type": "boolean" - }, - "DailyAutomaticBackupStartTime": { - "type": "string" - }, - "DataCompressionType": { - "type": "string" - }, - "DeploymentType": { - "type": "string" - }, - "DriveCacheType": { - "type": "string" - }, - "ExportPath": { - "type": "string" - }, - "ImportPath": { - "type": "string" - }, - "ImportedFileChunkSize": { - "type": "integer" - }, - "MetadataConfiguration": { - "$ref": "#/definitions/MetadataConfiguration" - }, - "PerUnitStorageThroughput": { - "type": "integer" - }, - "WeeklyMaintenanceStartTime": { - "type": "string" - } - }, - "type": "object" - }, - "MetadataConfiguration": { - "additionalProperties": false, - "properties": { - "Iops": { - "type": "integer" - }, - "Mode": { - "type": "string" - } - }, - "type": "object" - }, - "NfsExports": { - "additionalProperties": false, - "properties": { - "ClientConfigurations": { - "items": { - "$ref": "#/definitions/ClientConfigurations" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "OntapConfiguration": { - "additionalProperties": false, - "properties": { - "AutomaticBackupRetentionDays": { - "type": "integer" - }, - "DailyAutomaticBackupStartTime": { - "type": "string" - }, - "DeploymentType": { - "type": "string" - }, - "DiskIopsConfiguration": { - "$ref": "#/definitions/DiskIopsConfiguration" - }, - "EndpointIpAddressRange": { - "type": "string" - }, - "FsxAdminPassword": { - "type": "string" - }, - "HAPairs": { - "type": "integer" - }, - "PreferredSubnetId": { - "type": "string" - }, - "RouteTableIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ThroughputCapacity": { - "type": "integer" - }, - "ThroughputCapacityPerHAPair": { - "type": "integer" - }, - "WeeklyMaintenanceStartTime": { - "type": "string" - } - }, - "required": [ - "DeploymentType" - ], - "type": "object" - }, - "OpenZFSConfiguration": { - "additionalProperties": false, - "properties": { - "AutomaticBackupRetentionDays": { - "type": "integer" - }, - "CopyTagsToBackups": { - "type": "boolean" - }, - "CopyTagsToVolumes": { - "type": "boolean" - }, - "DailyAutomaticBackupStartTime": { - "type": "string" - }, - "DeploymentType": { - "type": "string" - }, - "DiskIopsConfiguration": { - "$ref": "#/definitions/DiskIopsConfiguration" - }, - "EndpointIpAddressRange": { - "type": "string" - }, - "Options": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "PreferredSubnetId": { - "type": "string" - }, - "RootVolumeConfiguration": { - "$ref": "#/definitions/RootVolumeConfiguration" - }, - "RouteTableIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ThroughputCapacity": { - "type": "integer" - }, - "WeeklyMaintenanceStartTime": { - "type": "string" - } - }, - "required": [ - "DeploymentType" - ], - "type": "object" - }, - "RootVolumeConfiguration": { - "additionalProperties": false, - "properties": { - "CopyTagsToSnapshots": { - "type": "boolean" - }, - "DataCompressionType": { - "type": "string" - }, - "NfsExports": { - "items": { - "$ref": "#/definitions/NfsExports" - }, - "type": "array", - "uniqueItems": false - }, - "ReadOnly": { - "type": "boolean" - }, - "RecordSizeKiB": { - "type": "integer" - }, - "UserAndGroupQuotas": { - "items": { - "$ref": "#/definitions/UserAndGroupQuotas" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "SelfManagedActiveDirectoryConfiguration": { - "additionalProperties": false, - "properties": { - "DnsIps": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "DomainName": { - "type": "string" - }, - "FileSystemAdministratorsGroup": { - "type": "string" - }, - "OrganizationalUnitDistinguishedName": { - "type": "string" - }, - "Password": { - "type": "string" - }, - "UserName": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "UserAndGroupQuotas": { - "additionalProperties": false, - "properties": { - "Id": { - "type": "integer" - }, - "StorageCapacityQuotaGiB": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "type": "object" - }, - "WindowsConfiguration": { - "additionalProperties": false, - "properties": { - "ActiveDirectoryId": { - "type": "string" - }, - "Aliases": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AuditLogConfiguration": { - "$ref": "#/definitions/AuditLogConfiguration" - }, - "AutomaticBackupRetentionDays": { - "type": "integer" - }, - "CopyTagsToBackups": { - "type": "boolean" - }, - "DailyAutomaticBackupStartTime": { - "type": "string" - }, - "DeploymentType": { - "type": "string" - }, - "DiskIopsConfiguration": { - "$ref": "#/definitions/DiskIopsConfiguration" - }, - "PreferredSubnetId": { - "type": "string" - }, - "SelfManagedActiveDirectoryConfiguration": { - "$ref": "#/definitions/SelfManagedActiveDirectoryConfiguration" - }, - "ThroughputCapacity": { - "type": "integer" - }, - "WeeklyMaintenanceStartTime": { - "type": "string" - } - }, - "required": [ - "ThroughputCapacity" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::FSx::FileSystem", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "BackupId": { - "type": "string" - }, - "DNSName": { - "type": "string" - }, - "FileSystemType": { - "type": "string" - }, - "FileSystemTypeVersion": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "LustreConfiguration": { - "$ref": "#/definitions/LustreConfiguration" - }, - "LustreMountName": { - "type": "string" - }, - "OntapConfiguration": { - "$ref": "#/definitions/OntapConfiguration" - }, - "OpenZFSConfiguration": { - "$ref": "#/definitions/OpenZFSConfiguration" - }, - "ResourceARN": { - "type": "string" - }, - "RootVolumeId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "StorageCapacity": { - "type": "integer" - }, - "StorageType": { - "type": "string" - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "WindowsConfiguration": { - "$ref": "#/definitions/WindowsConfiguration" - } - }, - "readOnlyProperties": [ - "/properties/ResourceARN", - "/properties/Id", - "/properties/LustreMountName", - "/properties/RootVolumeId", - "/properties/DNSName" - ], - "required": [ - "FileSystemType", - "SubnetIds" - ], - "typeName": "AWS::FSx::FileSystem" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KmsKeyId", + "/properties/SecurityGroupIds", + "/properties/FileSystemType", + "/properties/SubnetIds", + "/properties/BackupId" + ], + "definitions": { + "AuditLogConfiguration": { + "additionalProperties": false, + "properties": { + "AuditLogDestination": { + "type": "string" + }, + "FileAccessAuditLogLevel": { + "type": "string" + }, + "FileShareAccessAuditLogLevel": { + "type": "string" + } + }, + "required": [ + "FileAccessAuditLogLevel", + "FileShareAccessAuditLogLevel" + ], + "type": "object" + }, + "ClientConfigurations": { + "additionalProperties": false, + "properties": { + "Clients": { + "type": "string" + }, + "Options": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DiskIopsConfiguration": { + "additionalProperties": false, + "properties": { + "Iops": { + "type": "integer" + }, + "Mode": { + "type": "string" + } + }, + "type": "object" + }, + "LustreConfiguration": { + "additionalProperties": false, + "properties": { + "AutoImportPolicy": { + "type": "string" + }, + "AutomaticBackupRetentionDays": { + "type": "integer" + }, + "CopyTagsToBackups": { + "type": "boolean" + }, + "DailyAutomaticBackupStartTime": { + "type": "string" + }, + "DataCompressionType": { + "type": "string" + }, + "DeploymentType": { + "type": "string" + }, + "DriveCacheType": { + "type": "string" + }, + "EfaEnabled": { + "type": "boolean" + }, + "ExportPath": { + "type": "string" + }, + "ImportPath": { + "type": "string" + }, + "ImportedFileChunkSize": { + "type": "integer" + }, + "MetadataConfiguration": { + "$ref": "#/definitions/MetadataConfiguration" + }, + "PerUnitStorageThroughput": { + "type": "integer" + }, + "WeeklyMaintenanceStartTime": { + "type": "string" + } + }, + "type": "object" + }, + "MetadataConfiguration": { + "additionalProperties": false, + "properties": { + "Iops": { + "type": "integer" + }, + "Mode": { + "type": "string" + } + }, + "type": "object" + }, + "NfsExports": { + "additionalProperties": false, + "properties": { + "ClientConfigurations": { + "items": { + "$ref": "#/definitions/ClientConfigurations" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "OntapConfiguration": { + "additionalProperties": false, + "properties": { + "AutomaticBackupRetentionDays": { + "type": "integer" + }, + "DailyAutomaticBackupStartTime": { + "type": "string" + }, + "DeploymentType": { + "type": "string" + }, + "DiskIopsConfiguration": { + "$ref": "#/definitions/DiskIopsConfiguration" + }, + "EndpointIpAddressRange": { + "type": "string" + }, + "FsxAdminPassword": { + "type": "string" + }, + "HAPairs": { + "type": "integer" + }, + "PreferredSubnetId": { + "type": "string" + }, + "RouteTableIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ThroughputCapacity": { + "type": "integer" + }, + "ThroughputCapacityPerHAPair": { + "type": "integer" + }, + "WeeklyMaintenanceStartTime": { + "type": "string" + } + }, + "required": [ + "DeploymentType" + ], + "type": "object" + }, + "OpenZFSConfiguration": { + "additionalProperties": false, + "properties": { + "AutomaticBackupRetentionDays": { + "type": "integer" + }, + "CopyTagsToBackups": { + "type": "boolean" + }, + "CopyTagsToVolumes": { + "type": "boolean" + }, + "DailyAutomaticBackupStartTime": { + "type": "string" + }, + "DeploymentType": { + "type": "string" + }, + "DiskIopsConfiguration": { + "$ref": "#/definitions/DiskIopsConfiguration" + }, + "EndpointIpAddressRange": { + "type": "string" + }, + "Options": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "PreferredSubnetId": { + "type": "string" + }, + "ReadCacheConfiguration": { + "$ref": "#/definitions/ReadCacheConfiguration" + }, + "RootVolumeConfiguration": { + "$ref": "#/definitions/RootVolumeConfiguration" + }, + "RouteTableIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ThroughputCapacity": { + "type": "integer" + }, + "WeeklyMaintenanceStartTime": { + "type": "string" + } + }, + "required": [ + "DeploymentType" + ], + "type": "object" + }, + "ReadCacheConfiguration": { + "additionalProperties": false, + "properties": { + "SizeGiB": { + "type": "integer" + }, + "SizingMode": { + "type": "string" + } + }, + "type": "object" + }, + "RootVolumeConfiguration": { + "additionalProperties": false, + "properties": { + "CopyTagsToSnapshots": { + "type": "boolean" + }, + "DataCompressionType": { + "type": "string" + }, + "NfsExports": { + "items": { + "$ref": "#/definitions/NfsExports" + }, + "type": "array", + "uniqueItems": false + }, + "ReadOnly": { + "type": "boolean" + }, + "RecordSizeKiB": { + "type": "integer" + }, + "UserAndGroupQuotas": { + "items": { + "$ref": "#/definitions/UserAndGroupQuotas" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "SelfManagedActiveDirectoryConfiguration": { + "additionalProperties": false, + "properties": { + "DnsIps": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "DomainName": { + "type": "string" + }, + "FileSystemAdministratorsGroup": { + "type": "string" + }, + "OrganizationalUnitDistinguishedName": { + "type": "string" + }, + "Password": { + "type": "string" + }, + "UserName": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "UserAndGroupQuotas": { + "additionalProperties": false, + "properties": { + "Id": { + "type": "integer" + }, + "StorageCapacityQuotaGiB": { + "type": "integer" + }, + "Type": { + "type": "string" + } + }, + "type": "object" + }, + "WindowsConfiguration": { + "additionalProperties": false, + "properties": { + "ActiveDirectoryId": { + "type": "string" + }, + "Aliases": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AuditLogConfiguration": { + "$ref": "#/definitions/AuditLogConfiguration" + }, + "AutomaticBackupRetentionDays": { + "type": "integer" + }, + "CopyTagsToBackups": { + "type": "boolean" + }, + "DailyAutomaticBackupStartTime": { + "type": "string" + }, + "DeploymentType": { + "type": "string" + }, + "DiskIopsConfiguration": { + "$ref": "#/definitions/DiskIopsConfiguration" + }, + "PreferredSubnetId": { + "type": "string" + }, + "SelfManagedActiveDirectoryConfiguration": { + "$ref": "#/definitions/SelfManagedActiveDirectoryConfiguration" + }, + "ThroughputCapacity": { + "type": "integer" + }, + "WeeklyMaintenanceStartTime": { + "type": "string" + } + }, + "required": [ + "ThroughputCapacity" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::FSx::FileSystem", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "BackupId": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "FileSystemType": { + "type": "string" + }, + "FileSystemTypeVersion": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "KmsKeyId": { + "type": "string" + }, + "LustreConfiguration": { + "$ref": "#/definitions/LustreConfiguration" + }, + "LustreMountName": { + "type": "string" + }, + "OntapConfiguration": { + "$ref": "#/definitions/OntapConfiguration" + }, + "OpenZFSConfiguration": { + "$ref": "#/definitions/OpenZFSConfiguration" + }, + "ResourceARN": { + "type": "string" + }, + "RootVolumeId": { + "type": "string" + }, + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "StorageCapacity": { + "type": "integer" + }, + "StorageType": { + "type": "string" + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "WindowsConfiguration": { + "$ref": "#/definitions/WindowsConfiguration" + } + }, + "readOnlyProperties": [ + "/properties/ResourceARN", + "/properties/Id", + "/properties/LustreMountName", + "/properties/RootVolumeId", + "/properties/DNSName" + ], + "required": [ + "FileSystemType", + "SubnetIds" + ], + "typeName": "AWS::FSx::FileSystem" +} diff --git a/src/schema/aws-fsx-snapshot.json b/src/schema/aws-fsx-snapshot.json index 9f50cc84..94ef0b28 100644 --- a/src/schema/aws-fsx-snapshot.json +++ b/src/schema/aws-fsx-snapshot.json @@ -1,58 +1,58 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/VolumeId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::FSx::Snapshot", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "ResourceARN": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VolumeId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ResourceARN", - "/properties/Id" - ], - "required": [ - "VolumeId", - "Name" - ], - "typeName": "AWS::FSx::Snapshot" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VolumeId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::FSx::Snapshot", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "ResourceARN": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VolumeId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ResourceARN", + "/properties/Id" + ], + "required": [ + "VolumeId", + "Name" + ], + "typeName": "AWS::FSx::Snapshot" +} diff --git a/src/schema/aws-fsx-storagevirtualmachine.json b/src/schema/aws-fsx-storagevirtualmachine.json index 3fa07bc6..d20991e5 100644 --- a/src/schema/aws-fsx-storagevirtualmachine.json +++ b/src/schema/aws-fsx-storagevirtualmachine.json @@ -1,113 +1,113 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/RootVolumeSecurityStyle", - "/properties/FileSystemId" - ], - "definitions": { - "ActiveDirectoryConfiguration": { - "additionalProperties": false, - "properties": { - "NetBiosName": { - "type": "string" - }, - "SelfManagedActiveDirectoryConfiguration": { - "$ref": "#/definitions/SelfManagedActiveDirectoryConfiguration" - } - }, - "type": "object" - }, - "SelfManagedActiveDirectoryConfiguration": { - "additionalProperties": false, - "properties": { - "DnsIps": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "DomainName": { - "type": "string" - }, - "FileSystemAdministratorsGroup": { - "type": "string" - }, - "OrganizationalUnitDistinguishedName": { - "type": "string" - }, - "Password": { - "type": "string" - }, - "UserName": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::FSx::StorageVirtualMachine", - "primaryIdentifier": [ - "/properties/StorageVirtualMachineId" - ], - "properties": { - "ActiveDirectoryConfiguration": { - "$ref": "#/definitions/ActiveDirectoryConfiguration" - }, - "FileSystemId": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "ResourceARN": { - "type": "string" - }, - "RootVolumeSecurityStyle": { - "type": "string" - }, - "StorageVirtualMachineId": { - "type": "string" - }, - "SvmAdminPassword": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "UUID": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ResourceARN", - "/properties/UUID", - "/properties/StorageVirtualMachineId" - ], - "required": [ - "FileSystemId", - "Name" - ], - "typeName": "AWS::FSx::StorageVirtualMachine" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/RootVolumeSecurityStyle", + "/properties/FileSystemId" + ], + "definitions": { + "ActiveDirectoryConfiguration": { + "additionalProperties": false, + "properties": { + "NetBiosName": { + "type": "string" + }, + "SelfManagedActiveDirectoryConfiguration": { + "$ref": "#/definitions/SelfManagedActiveDirectoryConfiguration" + } + }, + "type": "object" + }, + "SelfManagedActiveDirectoryConfiguration": { + "additionalProperties": false, + "properties": { + "DnsIps": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "DomainName": { + "type": "string" + }, + "FileSystemAdministratorsGroup": { + "type": "string" + }, + "OrganizationalUnitDistinguishedName": { + "type": "string" + }, + "Password": { + "type": "string" + }, + "UserName": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::FSx::StorageVirtualMachine", + "primaryIdentifier": [ + "/properties/StorageVirtualMachineId" + ], + "properties": { + "ActiveDirectoryConfiguration": { + "$ref": "#/definitions/ActiveDirectoryConfiguration" + }, + "FileSystemId": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "ResourceARN": { + "type": "string" + }, + "RootVolumeSecurityStyle": { + "type": "string" + }, + "StorageVirtualMachineId": { + "type": "string" + }, + "SvmAdminPassword": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "UUID": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ResourceARN", + "/properties/UUID", + "/properties/StorageVirtualMachineId" + ], + "required": [ + "FileSystemId", + "Name" + ], + "typeName": "AWS::FSx::StorageVirtualMachine" +} diff --git a/src/schema/aws-fsx-volume.json b/src/schema/aws-fsx-volume.json index 4a5995db..6a72262b 100644 --- a/src/schema/aws-fsx-volume.json +++ b/src/schema/aws-fsx-volume.json @@ -1,350 +1,350 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/BackupId", - "/properties/VolumeType" - ], - "definitions": { - "AggregateConfiguration": { - "additionalProperties": false, - "properties": { - "Aggregates": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ConstituentsPerAggregate": { - "type": "integer" - } - }, - "type": "object" - }, - "AutocommitPeriod": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - }, - "Value": { - "type": "integer" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ClientConfigurations": { - "additionalProperties": false, - "properties": { - "Clients": { - "type": "string" - }, - "Options": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Options", - "Clients" - ], - "type": "object" - }, - "NfsExports": { - "additionalProperties": false, - "properties": { - "ClientConfigurations": { - "items": { - "$ref": "#/definitions/ClientConfigurations" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "ClientConfigurations" - ], - "type": "object" - }, - "OntapConfiguration": { - "additionalProperties": false, - "properties": { - "AggregateConfiguration": { - "$ref": "#/definitions/AggregateConfiguration" - }, - "CopyTagsToBackups": { - "type": "string" - }, - "JunctionPath": { - "type": "string" - }, - "OntapVolumeType": { - "type": "string" - }, - "SecurityStyle": { - "type": "string" - }, - "SizeInBytes": { - "type": "string" - }, - "SizeInMegabytes": { - "type": "string" - }, - "SnaplockConfiguration": { - "$ref": "#/definitions/SnaplockConfiguration" - }, - "SnapshotPolicy": { - "type": "string" - }, - "StorageEfficiencyEnabled": { - "type": "string" - }, - "StorageVirtualMachineId": { - "type": "string" - }, - "TieringPolicy": { - "$ref": "#/definitions/TieringPolicy" - }, - "VolumeStyle": { - "type": "string" - } - }, - "required": [ - "StorageVirtualMachineId" - ], - "type": "object" - }, - "OpenZFSConfiguration": { - "additionalProperties": false, - "properties": { - "CopyTagsToSnapshots": { - "type": "boolean" - }, - "DataCompressionType": { - "type": "string" - }, - "NfsExports": { - "items": { - "$ref": "#/definitions/NfsExports" - }, - "type": "array", - "uniqueItems": false - }, - "Options": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "OriginSnapshot": { - "$ref": "#/definitions/OriginSnapshot" - }, - "ParentVolumeId": { - "type": "string" - }, - "ReadOnly": { - "type": "boolean" - }, - "RecordSizeKiB": { - "type": "integer" - }, - "StorageCapacityQuotaGiB": { - "type": "integer" - }, - "StorageCapacityReservationGiB": { - "type": "integer" - }, - "UserAndGroupQuotas": { - "items": { - "$ref": "#/definitions/UserAndGroupQuotas" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "ParentVolumeId" - ], - "type": "object" - }, - "OriginSnapshot": { - "additionalProperties": false, - "properties": { - "CopyStrategy": { - "type": "string" - }, - "SnapshotARN": { - "type": "string" - } - }, - "required": [ - "CopyStrategy", - "SnapshotARN" - ], - "type": "object" - }, - "RetentionPeriod": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - }, - "Value": { - "type": "integer" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "SnaplockConfiguration": { - "additionalProperties": false, - "properties": { - "AuditLogVolume": { - "type": "string" - }, - "AutocommitPeriod": { - "$ref": "#/definitions/AutocommitPeriod" - }, - "PrivilegedDelete": { - "type": "string" - }, - "RetentionPeriod": { - "$ref": "#/definitions/SnaplockRetentionPeriod" - }, - "SnaplockType": { - "type": "string" - }, - "VolumeAppendModeEnabled": { - "type": "string" - } - }, - "required": [ - "SnaplockType" - ], - "type": "object" - }, - "SnaplockRetentionPeriod": { - "additionalProperties": false, - "properties": { - "DefaultRetention": { - "$ref": "#/definitions/RetentionPeriod" - }, - "MaximumRetention": { - "$ref": "#/definitions/RetentionPeriod" - }, - "MinimumRetention": { - "$ref": "#/definitions/RetentionPeriod" - } - }, - "required": [ - "DefaultRetention", - "MaximumRetention", - "MinimumRetention" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TieringPolicy": { - "additionalProperties": false, - "properties": { - "CoolingPeriod": { - "type": "integer" - }, - "Name": { - "type": "string" - } - }, - "type": "object" - }, - "UserAndGroupQuotas": { - "additionalProperties": false, - "properties": { - "Id": { - "type": "integer" - }, - "StorageCapacityQuotaGiB": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type", - "Id", - "StorageCapacityQuotaGiB" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::FSx::Volume", - "primaryIdentifier": [ - "/properties/VolumeId" - ], - "properties": { - "BackupId": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "OntapConfiguration": { - "$ref": "#/definitions/OntapConfiguration" - }, - "OpenZFSConfiguration": { - "$ref": "#/definitions/OpenZFSConfiguration" - }, - "ResourceARN": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "UUID": { - "type": "string" - }, - "VolumeId": { - "type": "string" - }, - "VolumeType": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ResourceARN", - "/properties/VolumeId", - "/properties/UUID" - ], - "required": [ - "Name" - ], - "typeName": "AWS::FSx::Volume" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BackupId", + "/properties/VolumeType" + ], + "definitions": { + "AggregateConfiguration": { + "additionalProperties": false, + "properties": { + "Aggregates": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ConstituentsPerAggregate": { + "type": "integer" + } + }, + "type": "object" + }, + "AutocommitPeriod": { + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + }, + "Value": { + "type": "integer" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "ClientConfigurations": { + "additionalProperties": false, + "properties": { + "Clients": { + "type": "string" + }, + "Options": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Options", + "Clients" + ], + "type": "object" + }, + "NfsExports": { + "additionalProperties": false, + "properties": { + "ClientConfigurations": { + "items": { + "$ref": "#/definitions/ClientConfigurations" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ClientConfigurations" + ], + "type": "object" + }, + "OntapConfiguration": { + "additionalProperties": false, + "properties": { + "AggregateConfiguration": { + "$ref": "#/definitions/AggregateConfiguration" + }, + "CopyTagsToBackups": { + "type": "string" + }, + "JunctionPath": { + "type": "string" + }, + "OntapVolumeType": { + "type": "string" + }, + "SecurityStyle": { + "type": "string" + }, + "SizeInBytes": { + "type": "string" + }, + "SizeInMegabytes": { + "type": "string" + }, + "SnaplockConfiguration": { + "$ref": "#/definitions/SnaplockConfiguration" + }, + "SnapshotPolicy": { + "type": "string" + }, + "StorageEfficiencyEnabled": { + "type": "string" + }, + "StorageVirtualMachineId": { + "type": "string" + }, + "TieringPolicy": { + "$ref": "#/definitions/TieringPolicy" + }, + "VolumeStyle": { + "type": "string" + } + }, + "required": [ + "StorageVirtualMachineId" + ], + "type": "object" + }, + "OpenZFSConfiguration": { + "additionalProperties": false, + "properties": { + "CopyTagsToSnapshots": { + "type": "boolean" + }, + "DataCompressionType": { + "type": "string" + }, + "NfsExports": { + "items": { + "$ref": "#/definitions/NfsExports" + }, + "type": "array", + "uniqueItems": false + }, + "Options": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "OriginSnapshot": { + "$ref": "#/definitions/OriginSnapshot" + }, + "ParentVolumeId": { + "type": "string" + }, + "ReadOnly": { + "type": "boolean" + }, + "RecordSizeKiB": { + "type": "integer" + }, + "StorageCapacityQuotaGiB": { + "type": "integer" + }, + "StorageCapacityReservationGiB": { + "type": "integer" + }, + "UserAndGroupQuotas": { + "items": { + "$ref": "#/definitions/UserAndGroupQuotas" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ParentVolumeId" + ], + "type": "object" + }, + "OriginSnapshot": { + "additionalProperties": false, + "properties": { + "CopyStrategy": { + "type": "string" + }, + "SnapshotARN": { + "type": "string" + } + }, + "required": [ + "CopyStrategy", + "SnapshotARN" + ], + "type": "object" + }, + "RetentionPeriod": { + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + }, + "Value": { + "type": "integer" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "SnaplockConfiguration": { + "additionalProperties": false, + "properties": { + "AuditLogVolume": { + "type": "string" + }, + "AutocommitPeriod": { + "$ref": "#/definitions/AutocommitPeriod" + }, + "PrivilegedDelete": { + "type": "string" + }, + "RetentionPeriod": { + "$ref": "#/definitions/SnaplockRetentionPeriod" + }, + "SnaplockType": { + "type": "string" + }, + "VolumeAppendModeEnabled": { + "type": "string" + } + }, + "required": [ + "SnaplockType" + ], + "type": "object" + }, + "SnaplockRetentionPeriod": { + "additionalProperties": false, + "properties": { + "DefaultRetention": { + "$ref": "#/definitions/RetentionPeriod" + }, + "MaximumRetention": { + "$ref": "#/definitions/RetentionPeriod" + }, + "MinimumRetention": { + "$ref": "#/definitions/RetentionPeriod" + } + }, + "required": [ + "DefaultRetention", + "MaximumRetention", + "MinimumRetention" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TieringPolicy": { + "additionalProperties": false, + "properties": { + "CoolingPeriod": { + "type": "integer" + }, + "Name": { + "type": "string" + } + }, + "type": "object" + }, + "UserAndGroupQuotas": { + "additionalProperties": false, + "properties": { + "Id": { + "type": "integer" + }, + "StorageCapacityQuotaGiB": { + "type": "integer" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type", + "Id", + "StorageCapacityQuotaGiB" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::FSx::Volume", + "primaryIdentifier": [ + "/properties/VolumeId" + ], + "properties": { + "BackupId": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "OntapConfiguration": { + "$ref": "#/definitions/OntapConfiguration" + }, + "OpenZFSConfiguration": { + "$ref": "#/definitions/OpenZFSConfiguration" + }, + "ResourceARN": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "UUID": { + "type": "string" + }, + "VolumeId": { + "type": "string" + }, + "VolumeType": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ResourceARN", + "/properties/VolumeId", + "/properties/UUID" + ], + "required": [ + "Name" + ], + "typeName": "AWS::FSx::Volume" +} diff --git a/src/schema/aws-gamelift-alias.json b/src/schema/aws-gamelift-alias.json index c4438fa6..9981db95 100644 --- a/src/schema/aws-gamelift-alias.json +++ b/src/schema/aws-gamelift-alias.json @@ -1,107 +1,163 @@ -{ - "additionalProperties": false, - "definitions": { - "RoutingStrategy": { - "additionalProperties": false, - "anyOf": [ - { - "required": [ - "FleetId" - ] - }, - { - "required": [ - "Message" - ] - } - ], - "properties": { - "FleetId": { - "description": "A unique identifier for a fleet that the alias points to. If you specify SIMPLE for the Type property, you must specify this property.", - "pattern": "^[a-z]*fleet-[a-zA-Z0-9\\-]+", - "type": "string" - }, - "Message": { - "description": "The message text to be used with a terminal routing strategy. If you specify TERMINAL for the Type property, you must specify this property.", - "type": "string" - }, - "Type": { - "description": "Simple routing strategy. The alias resolves to one specific fleet. Use this type when routing to active fleets.", - "enum": [ - "SIMPLE", - "TERMINAL" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - } - }, - "description": "The AWS::GameLift::Alias resource creates an alias for an Amazon GameLift (GameLift) fleet destination.", - "handlers": { - "create": { - "permissions": [ - "gamelift:CreateAlias" - ] - }, - "delete": { - "permissions": [ - "gamelift:DeleteAlias" - ] - }, - "list": { - "permissions": [ - "gamelift:ListAliases" - ] - }, - "read": { - "permissions": [ - "gamelift:DescribeAlias" - ] - }, - "update": { - "permissions": [ - "gamelift:UpdateAlias" - ] - } - }, - "primaryIdentifier": [ - "/properties/AliasId" - ], - "properties": { - "AliasId": { - "description": "Unique alias ID", - "type": "string" - }, - "Description": { - "description": "A human-readable description of the alias.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "A descriptive label that is associated with an alias. Alias names do not need to be unique.", - "maxLength": 1024, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "RoutingStrategy": { - "$ref": "#/definitions/RoutingStrategy", - "description": "A routing configuration that specifies where traffic is directed for this alias, such as to a fleet or to a message." - } - }, - "readOnlyProperties": [ - "/properties/AliasId" - ], - "required": [ - "Name", - "RoutingStrategy" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", - "taggable": true, - "typeName": "AWS::GameLift::Alias" -} +{ + "additionalProperties": false, + "definitions": { + "RoutingStrategy": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "FleetId" + ] + }, + { + "required": [ + "Message" + ] + } + ], + "properties": { + "FleetId": { + "description": "A unique identifier for a fleet that the alias points to. If you specify SIMPLE for the Type property, you must specify this property.", + "pattern": "^[a-z]*fleet-[a-zA-Z0-9\\-]+", + "type": "string" + }, + "Message": { + "description": "The message text to be used with a terminal routing strategy. If you specify TERMINAL for the Type property, you must specify this property.", + "type": "string" + }, + "Type": { + "description": "Simple routing strategy. The alias resolves to one specific fleet. Use this type when routing to active fleets.", + "enum": [ + "SIMPLE", + "TERMINAL" + ], + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::GameLift::Alias resource creates an alias for an Amazon GameLift (GameLift) fleet destination.", + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateAlias", + "gamelift:TagResource" + ] + }, + "delete": { + "permissions": [ + "gamelift:DeleteAlias" + ] + }, + "list": { + "permissions": [ + "gamelift:ListAliases" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeAlias", + "gamelift:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "gamelift:UpdateAlias", + "gamelift:DescribeAlias", + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AliasId" + ], + "properties": { + "AliasArn": { + "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift Alias resource and uniquely identifies it. ARNs are unique across all Regions. In a GameLift Alias ARN, the resource ID matches the AliasId value.", + "pattern": "^arn:.*:alias\\/alias-\\S+", + "type": "string" + }, + "AliasId": { + "description": "Unique alias ID", + "type": "string" + }, + "Description": { + "description": "A human-readable description of the alias.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "A descriptive label that is associated with an alias. Alias names do not need to be unique.", + "maxLength": 1024, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "RoutingStrategy": { + "$ref": "#/definitions/RoutingStrategy", + "description": "A routing configuration that specifies where traffic is directed for this alias, such as to a fleet or to a message." + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/AliasId", + "/properties/AliasArn" + ], + "required": [ + "Name", + "RoutingStrategy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GameLift::Alias" +} diff --git a/src/schema/aws-gamelift-build.json b/src/schema/aws-gamelift-build.json index 816403d4..401cb35f 100644 --- a/src/schema/aws-gamelift-build.json +++ b/src/schema/aws-gamelift-build.json @@ -1,120 +1,172 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StorageLocation", - "/properties/OperatingSystem", - "/properties/ServerSdkVersion" - ], - "definitions": { - "StorageLocation": { - "$comment": "Contains object details present in the S3 Bucket", - "additionalProperties": false, - "properties": { - "Bucket": { - "description": "An Amazon S3 bucket identifier. This is the name of the S3 bucket.", - "type": "string" - }, - "Key": { - "description": "The name of the zip file that contains the build files or script files.", - "type": "string" - }, - "ObjectVersion": { - "description": "The version of the file, if object versioning is turned on for the bucket. Amazon GameLift uses this information when retrieving files from your S3 bucket. To retrieve a specific version of the file, provide an object version. To retrieve the latest version of the file, do not set this parameter.", - "type": "string" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) for an IAM role that allows Amazon GameLift to access the S3 bucket.", - "type": "string" - } - }, - "required": [ - "Bucket", - "Key", - "RoleArn" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::GameLift::Build", - "handlers": { - "create": { - "permissions": [ - "gamelift:DescribeBuild", - "gamelift:CreateBuild" - ] - }, - "delete": { - "permissions": [ - "gamelift:DescribeBuild", - "gamelift:DeleteBuild" - ] - }, - "list": { - "permissions": [ - "gamelift:ListBuilds" - ] - }, - "read": { - "permissions": [ - "gamelift:DescribeBuild" - ] - }, - "update": { - "permissions": [ - "gamelift:UpdateBuild" - ] - } - }, - "primaryIdentifier": [ - "/properties/BuildId" - ], - "properties": { - "BuildId": { - "description": "A unique identifier for a build to be deployed on the new fleet. If you are deploying the fleet with a custom game build, you must specify this property. The build must have been successfully uploaded to Amazon GameLift and be in a READY status. This fleet setting cannot be changed once the fleet is created.", - "type": "string" - }, - "Name": { - "description": "A descriptive label that is associated with a build. Build names do not need to be unique.", - "type": "string" - }, - "OperatingSystem": { - "description": "The operating system that the game server binaries are built to run on. This value determines the type of fleet resources that you can use for this build. If your game build contains multiple executables, they all must run on the same operating system. If an operating system is not specified when creating a build, Amazon GameLift uses the default value (WINDOWS_2012). This value cannot be changed later.", - "enum": [ - "AMAZON_LINUX", - "AMAZON_LINUX_2", - "AMAZON_LINUX_2023", - "WINDOWS_2012", - "WINDOWS_2016" - ], - "type": "string" - }, - "ServerSdkVersion": { - "description": "A server SDK version you used when integrating your game server build with Amazon GameLift. By default Amazon GameLift sets this value to 4.0.2.", - "type": "string" - }, - "StorageLocation": { - "$ref": "#/definitions/StorageLocation", - "description": "Information indicating where your game build files are stored. Use this parameter only when creating a build with files stored in an Amazon S3 bucket that you own. The storage location must specify an Amazon S3 bucket name and key. The location must also specify a role ARN that you set up to allow Amazon GameLift to access your Amazon S3 bucket. The S3 bucket and your new build must be in the same Region." - }, - "Version": { - "description": "Version information that is associated with this build. Version strings do not need to be unique.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/BuildId" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::GameLift::Build", - "writeOnlyProperties": [ - "/properties/StorageLocation", - "/properties/ServerSdkVersion" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StorageLocation", + "/properties/OperatingSystem", + "/properties/ServerSdkVersion" + ], + "definitions": { + "StorageLocation": { + "$comment": "Contains object details present in the S3 Bucket", + "additionalProperties": false, + "properties": { + "Bucket": { + "description": "An Amazon S3 bucket identifier. This is the name of the S3 bucket.", + "type": "string" + }, + "Key": { + "description": "The name of the zip file that contains the build files or script files.", + "type": "string" + }, + "ObjectVersion": { + "description": "The version of the file, if object versioning is turned on for the bucket. Amazon GameLift uses this information when retrieving files from your S3 bucket. To retrieve a specific version of the file, provide an object version. To retrieve the latest version of the file, do not set this parameter.", + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) for an IAM role that allows Amazon GameLift to access the S3 bucket.", + "type": "string" + } + }, + "required": [ + "Bucket", + "Key", + "RoleArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::GameLift::Build", + "handlers": { + "create": { + "permissions": [ + "gamelift:DescribeBuild", + "gamelift:CreateBuild", + "gamelift:ListTagsForResource", + "gamelift:TagResource" + ] + }, + "delete": { + "permissions": [ + "gamelift:DescribeBuild", + "gamelift:DeleteBuild" + ] + }, + "list": { + "permissions": [ + "gamelift:ListBuilds" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeBuild", + "gamelift:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "gamelift:UpdateBuild", + "gamelift:DescribeBuild", + "gamelift:TagResource", + "gamelift:UntagResource", + "gamelift:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/BuildId" + ], + "properties": { + "BuildArn": { + "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift build resource and uniquely identifies it. ARNs are unique across all Regions. In a GameLift build ARN, the resource ID matches the BuildId value.", + "pattern": "^arn:.*:build\\/build-\\S+", + "type": "string" + }, + "BuildId": { + "description": "A unique identifier for a build to be deployed on the new fleet. If you are deploying the fleet with a custom game build, you must specify this property. The build must have been successfully uploaded to Amazon GameLift and be in a READY status. This fleet setting cannot be changed once the fleet is created.", + "type": "string" + }, + "Name": { + "description": "A descriptive label that is associated with a build. Build names do not need to be unique.", + "type": "string" + }, + "OperatingSystem": { + "description": "The operating system that the game server binaries are built to run on. This value determines the type of fleet resources that you can use for this build. If your game build contains multiple executables, they all must run on the same operating system. If an operating system is not specified when creating a build, Amazon GameLift uses the default value (WINDOWS_2012). This value cannot be changed later.", + "enum": [ + "AMAZON_LINUX", + "AMAZON_LINUX_2", + "AMAZON_LINUX_2023", + "WINDOWS_2012", + "WINDOWS_2016" + ], + "type": "string" + }, + "ServerSdkVersion": { + "description": "A server SDK version you used when integrating your game server build with Amazon GameLift. By default Amazon GameLift sets this value to 4.0.2.", + "type": "string" + }, + "StorageLocation": { + "$ref": "#/definitions/StorageLocation", + "description": "Information indicating where your game build files are stored. Use this parameter only when creating a build with files stored in an Amazon S3 bucket that you own. The storage location must specify an Amazon S3 bucket name and key. The location must also specify a role ARN that you set up to allow Amazon GameLift to access your Amazon S3 bucket. The S3 bucket and your new build must be in the same Region." + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + }, + "Version": { + "description": "Version information that is associated with this build. Version strings do not need to be unique.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/BuildId", + "/properties/BuildArn" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GameLift::Build", + "writeOnlyProperties": [ + "/properties/StorageLocation", + "/properties/ServerSdkVersion" + ] +} diff --git a/src/schema/aws-gamelift-containerfleet.json b/src/schema/aws-gamelift-containerfleet.json index ee545621..c89339dc 100644 --- a/src/schema/aws-gamelift-containerfleet.json +++ b/src/schema/aws-gamelift-containerfleet.json @@ -1,457 +1,603 @@ { - "$schema" : "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", - "typeName" : "AWS::GameLift::ContainerFleet", - "description" : "The AWS::GameLift::ContainerFleet resource creates an Amazon GameLift (GameLift) container fleet to host game servers.", - "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", - "tagging" : { - "taggable" : true, - "tagOnCreate" : true, - "tagUpdatable" : true, - "cloudFormationSystemTags" : false, - "tagProperty" : "/properties/Tags", - "permissions" : [ "gamelift:ListTagsForResource", "gamelift:TagResource", "gamelift:UntagResource" ] - }, - "definitions" : { - "ConnectionPortRange" : { - "description" : "Defines the range of ports on the instance that allow inbound traffic to connect with containers in a fleet.", - "type" : "object", - "properties" : { - "FromPort" : { - "description" : "A starting value for a range of allowed port numbers.", - "type" : "integer", - "minimum" : 1, - "maximum" : 60000 + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceType", + "/properties/BillingType", + "/properties/Locations" + ], + "definitions": { + "ConnectionPortRange": { + "additionalProperties": false, + "description": "Defines the range of ports on the instance that allow inbound traffic to connect with containers in a fleet.", + "properties": { + "FromPort": { + "description": "A starting value for a range of allowed port numbers.", + "maximum": 60000, + "minimum": 1, + "type": "integer" }, - "ToPort" : { - "description" : "An ending value for a range of allowed port numbers. Port numbers are end-inclusive. This value must be higher than FromPort.", - "type" : "integer", - "minimum" : 1, - "maximum" : 60000 + "ToPort": { + "description": "An ending value for a range of allowed port numbers. Port numbers are end-inclusive. This value must be higher than FromPort.", + "maximum": 60000, + "minimum": 1, + "type": "integer" } }, - "additionalProperties" : false, - "required" : [ "FromPort", "ToPort" ] - }, - "IpPermission" : { - "description" : "A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift hosting resource. New game sessions that are started on the fleet are assigned an IP address/port number combination, which must fall into the fleet's allowed ranges. For fleets created with a custom game server, the ranges reflect the server's game session assignments. For Realtime Servers fleets, Amazon GameLift automatically opens two port ranges, one for TCP messaging and one for UDP, for use by the Realtime servers.", - "type" : "object", - "properties" : { - "FromPort" : { - "description" : "A starting value for a range of allowed port numbers.", - "type" : "integer", - "minimum" : 1, - "maximum" : 60000 - }, - "IpRange" : { - "description" : "A range of allowed IP addresses. This value must be expressed in CIDR notation. Example: \"000.000.000.000/[subnet mask]\" or optionally the shortened version \"0.0.0.0/[subnet mask]\".", - "type" : "string", - "pattern" : "(^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(/([0-9]|[1-2][0-9]|3[0-2]))$)" + "required": [ + "FromPort", + "ToPort" + ], + "type": "object" + }, + "DeploymentConfiguration": { + "additionalProperties": false, + "description": "Provides details about how to drain old tasks and replace them with new updated tasks.", + "properties": { + "ImpairmentStrategy": { + "description": "The strategy to apply in case of impairment; defaults to MAINTAIN.", + "enum": [ + "MAINTAIN", + "ROLLBACK" + ], + "type": "string" }, - "Protocol" : { - "description" : "The network communication protocol used by the fleet.", - "type" : "string", - "enum" : [ "TCP", "UDP" ] + "MinimumHealthyPercentage": { + "description": "The minimum percentage of healthy required; defaults to 75.", + "maximum": 75, + "minimum": 30, + "type": "integer" }, - "ToPort" : { - "description" : "An ending value for a range of allowed port numbers. Port numbers are end-inclusive. This value must be higher than FromPort.", - "type" : "integer", - "minimum" : 1, - "maximum" : 60000 + "ProtectionStrategy": { + "description": "The protection strategy for deployment on the container fleet; defaults to WITH_PROTECTION.", + "enum": [ + "WITH_PROTECTION", + "IGNORE_PROTECTION" + ], + "type": "string" } }, - "additionalProperties" : false, - "required" : [ "FromPort", "IpRange", "Protocol", "ToPort" ] - }, - "GameSessionCreationLimitPolicy" : { - "description" : "A policy that limits the number of game sessions a player can create on the same fleet. This optional policy gives game owners control over how players can consume available game server resources. A resource creation policy makes the following statement: \"An individual player can create a maximum number of new game sessions within a specified time period\".\n\nThe policy is evaluated when a player tries to create a new game session. For example, assume you have a policy of 10 new game sessions and a time period of 60 minutes. On receiving a CreateGameSession request, Amazon GameLift checks that the player (identified by CreatorId) has created fewer than 10 game sessions in the past 60 minutes.", - "type" : "object", - "properties" : { - "NewGameSessionsPerCreator" : { - "description" : "The maximum number of game sessions that an individual can create during the policy period.", - "type" : "integer", - "minimum" : 0 + "required": [], + "type": "object" + }, + "DeploymentDetails": { + "additionalProperties": false, + "description": "Provides information about the last deployment ID and its status.", + "properties": { + "LatestDeploymentId": { + "description": "The ID of the last deployment on the container fleet. This field will be empty if the container fleet does not have a ContainerGroupDefinition attached.", + "maxLength": 1024, + "pattern": "^[a-zA-Z0-9\\-]+$|^$", + "type": "string" + } + }, + "required": [], + "type": "object" + }, + "GameSessionCreationLimitPolicy": { + "additionalProperties": false, + "description": "A policy that limits the number of game sessions a player can create on the same fleet. This optional policy gives game owners control over how players can consume available game server resources. A resource creation policy makes the following statement: \"An individual player can create a maximum number of new game sessions within a specified time period\".\n\nThe policy is evaluated when a player tries to create a new game session. For example, assume you have a policy of 10 new game sessions and a time period of 60 minutes. On receiving a CreateGameSession request, Amazon GameLift checks that the player (identified by CreatorId) has created fewer than 10 game sessions in the past 60 minutes.", + "properties": { + "NewGameSessionsPerCreator": { + "description": "The maximum number of game sessions that an individual can create during the policy period.", + "minimum": 0, + "type": "integer" }, - "PolicyPeriodInMinutes" : { - "description" : "The time span used in evaluating the resource creation limit policy.", - "type" : "integer", - "minimum" : 0 + "PolicyPeriodInMinutes": { + "description": "The time span used in evaluating the resource creation limit policy.", + "minimum": 0, + "type": "integer" } }, - "additionalProperties" : false - }, - "LogDestination" : { - "description" : "Configures the service that provides logs.", - "type" : "string", - "enum" : [ "NONE", "CLOUDWATCH", "S3" ] - }, - "LogConfiguration" : { - "description" : "A policy the location and provider of logs from the fleet.", - "type" : "object", - "properties" : { - "LogDestination" : { - "$ref" : "#/definitions/LogDestination" + "type": "object" + }, + "IpPermission": { + "additionalProperties": false, + "description": "A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift hosting resource. New game sessions that are started on the fleet are assigned an IP address/port number combination, which must fall into the fleet's allowed ranges. For fleets created with a custom game server, the ranges reflect the server's game session assignments. For Realtime Servers fleets, Amazon GameLift automatically opens two port ranges, one for TCP messaging and one for UDP, for use by the Realtime servers.", + "properties": { + "FromPort": { + "description": "A starting value for a range of allowed port numbers.", + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "IpRange": { + "description": "A range of allowed IP addresses. This value must be expressed in CIDR notation. Example: \"000.000.000.000/[subnet mask]\" or optionally the shortened version \"0.0.0.0/[subnet mask]\".", + "pattern": "(^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(/([0-9]|[1-2][0-9]|3[0-2]))$)", + "type": "string" }, - "S3BucketName" : { - "description" : "The name of the S3 bucket to pull logs from if S3 is the LogDestination", - "type" : "string", - "minLength" : 1, - "maxLength" : 1024 + "Protocol": { + "description": "The network communication protocol used by the fleet.", + "enum": [ + "TCP", + "UDP" + ], + "type": "string" + }, + "ToPort": { + "description": "An ending value for a range of allowed port numbers. Port numbers are end-inclusive. This value must be higher than FromPort.", + "maximum": 60000, + "minimum": 1, + "type": "integer" } }, - "additionalProperties" : false - }, - "Location" : { - "type" : "string", - "minLength" : 1, - "maxLength" : 64, - "pattern" : "^[A-Za-z0-9\\-]+" - }, - "LocationCapacity" : { - "description" : "Current resource capacity settings in a specified fleet or location. The location value might refer to a fleet's remote location or its home Region.", - "type" : "object", - "properties" : { - "DesiredEC2Instances" : { - "description" : "The number of EC2 instances you want to maintain in the specified fleet location. This value must fall between the minimum and maximum size limits.", - "type" : "integer", - "minimum" : 0 + "required": [ + "FromPort", + "IpRange", + "Protocol", + "ToPort" + ], + "type": "object" + }, + "Location": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9\\-]+", + "type": "string" + }, + "LocationCapacity": { + "additionalProperties": false, + "description": "Current resource capacity settings in a specified fleet or location. The location value might refer to a fleet's remote location or its home Region.", + "properties": { + "DesiredEC2Instances": { + "description": "The number of EC2 instances you want to maintain in the specified fleet location. This value must fall between the minimum and maximum size limits.", + "minimum": 0, + "type": "integer" }, - "MinSize" : { - "description" : "The minimum value allowed for the fleet's instance count for a location.", - "type" : "integer", - "minimum" : 0 + "MaxSize": { + "description": "The maximum value that is allowed for the fleet's instance count for a location.", + "minimum": 0, + "type": "integer" }, - "MaxSize" : { - "description" : "The maximum value that is allowed for the fleet's instance count for a location.", - "type" : "integer", - "minimum" : 0 + "MinSize": { + "description": "The minimum value allowed for the fleet's instance count for a location.", + "minimum": 0, + "type": "integer" } }, - "additionalProperties" : false, - "required" : [ "DesiredEC2Instances", "MinSize", "MaxSize" ] - }, - "LocationConfiguration" : { - "description" : "A remote location where a multi-location fleet can deploy EC2 instances for game hosting.", - "type" : "object", - "properties" : { - "Location" : { - "$ref" : "#/definitions/Location" + "required": [ + "DesiredEC2Instances", + "MinSize", + "MaxSize" + ], + "type": "object" + }, + "LocationConfiguration": { + "additionalProperties": false, + "description": "A remote location where a multi-location fleet can deploy EC2 instances for game hosting.", + "properties": { + "Location": { + "$ref": "#/definitions/Location" }, - "LocationCapacity" : { - "$ref" : "#/definitions/LocationCapacity" + "LocationCapacity": { + "$ref": "#/definitions/LocationCapacity" }, - "StoppedActions" : { - "$ref" : "#/definitions/StoppedActions" + "StoppedActions": { + "$ref": "#/definitions/StoppedActions" } }, - "additionalProperties" : false, - "required" : [ "Location" ] - }, - "ScalingPolicy" : { - "description" : "Rule that controls how a fleet is scaled. Scaling policies are uniquely identified by the combination of name and fleet ID.", - "type" : "object", - "properties" : { - "ComparisonOperator" : { - "description" : "Comparison operator to use when measuring a metric against the threshold value.", - "type" : "string", - "enum" : [ "GreaterThanOrEqualToThreshold", "GreaterThanThreshold", "LessThanThreshold", "LessThanOrEqualToThreshold" ] + "required": [ + "Location" + ], + "type": "object" + }, + "LogConfiguration": { + "additionalProperties": false, + "description": "A policy the location and provider of logs from the fleet.", + "properties": { + "LogDestination": { + "$ref": "#/definitions/LogDestination" }, - "EvaluationPeriods" : { - "description" : "Length of time (in minutes) the metric must be at or beyond the threshold before a scaling event is triggered.", - "type" : "integer", - "minimum" : 1 + "S3BucketName": { + "description": "The name of the S3 bucket to pull logs from if S3 is the LogDestination", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "LogDestination": { + "description": "Configures the service that provides logs.", + "enum": [ + "NONE", + "CLOUDWATCH", + "S3" + ], + "type": "string" + }, + "ScalingPolicy": { + "additionalProperties": false, + "description": "Rule that controls how a fleet is scaled. Scaling policies are uniquely identified by the combination of name and fleet ID.", + "properties": { + "ComparisonOperator": { + "description": "Comparison operator to use when measuring a metric against the threshold value.", + "enum": [ + "GreaterThanOrEqualToThreshold", + "GreaterThanThreshold", + "LessThanThreshold", + "LessThanOrEqualToThreshold" + ], + "type": "string" }, - "MetricName" : { - "description" : "Name of the Amazon GameLift-defined metric that is used to trigger a scaling adjustment.", - "type" : "string", - "enum" : [ "ActivatingGameSessions", "ActiveGameSessions", "ActiveInstances", "AvailableGameSessions", "AvailablePlayerSessions", "CurrentPlayerSessions", "IdleInstances", "PercentAvailableGameSessions", "PercentIdleInstances", "QueueDepth", "WaitTime", "ConcurrentActivatableGameSessions" ] + "EvaluationPeriods": { + "description": "Length of time (in minutes) the metric must be at or beyond the threshold before a scaling event is triggered.", + "minimum": 1, + "type": "integer" }, - "Name" : { - "description" : "A descriptive label that is associated with a fleet's scaling policy. Policy names do not need to be unique.", - "type" : "string", - "minLength" : 1, - "maxLength" : 1024 + "MetricName": { + "description": "Name of the Amazon GameLift-defined metric that is used to trigger a scaling adjustment.", + "enum": [ + "ActivatingGameSessions", + "ActiveGameSessions", + "ActiveInstances", + "AvailableGameSessions", + "AvailablePlayerSessions", + "CurrentPlayerSessions", + "IdleInstances", + "PercentAvailableGameSessions", + "PercentIdleInstances", + "QueueDepth", + "WaitTime", + "ConcurrentActivatableGameSessions" + ], + "type": "string" }, - "PolicyType" : { - "description" : "The type of scaling policy to create. For a target-based policy, set the parameter MetricName to 'PercentAvailableGameSessions' and specify a TargetConfiguration. For a rule-based policy set the following parameters: MetricName, ComparisonOperator, Threshold, EvaluationPeriods, ScalingAdjustmentType, and ScalingAdjustment.", - "type" : "string", - "enum" : [ "RuleBased", "TargetBased" ] + "Name": { + "description": "A descriptive label that is associated with a fleet's scaling policy. Policy names do not need to be unique.", + "maxLength": 1024, + "minLength": 1, + "type": "string" }, - "ScalingAdjustment" : { - "description" : "Amount of adjustment to make, based on the scaling adjustment type.", - "type" : "integer" + "PolicyType": { + "description": "The type of scaling policy to create. For a target-based policy, set the parameter MetricName to 'PercentAvailableGameSessions' and specify a TargetConfiguration. For a rule-based policy set the following parameters: MetricName, ComparisonOperator, Threshold, EvaluationPeriods, ScalingAdjustmentType, and ScalingAdjustment.", + "enum": [ + "RuleBased", + "TargetBased" + ], + "type": "string" }, - "ScalingAdjustmentType" : { - "description" : "The type of adjustment to make to a fleet's instance count.", - "type" : "string", - "enum" : [ "ChangeInCapacity", "ExactCapacity", "PercentChangeInCapacity" ] + "ScalingAdjustment": { + "description": "Amount of adjustment to make, based on the scaling adjustment type.", + "type": "integer" }, - "TargetConfiguration" : { - "description" : "An object that contains settings for a target-based scaling policy.", - "$ref" : "#/definitions/TargetConfiguration" + "ScalingAdjustmentType": { + "description": "The type of adjustment to make to a fleet's instance count.", + "enum": [ + "ChangeInCapacity", + "ExactCapacity", + "PercentChangeInCapacity" + ], + "type": "string" }, - "Threshold" : { - "description" : "Metric value used to trigger a scaling event.", - "type" : "number" + "TargetConfiguration": { + "$ref": "#/definitions/TargetConfiguration", + "description": "An object that contains settings for a target-based scaling policy." + }, + "Threshold": { + "description": "Metric value used to trigger a scaling event.", + "type": "number" } }, - "additionalProperties" : false, - "required" : [ "MetricName", "Name" ] - }, - "StoppedActions" : { - "description" : "A list of fleet actions that have been suspended in the fleet location.", - "type" : "array", - "maxItems" : 1, - "items" : { - "type" : "string", - "enum" : [ "AUTO_SCALING" ] - }, - "insertionOrder" : false - }, - "TargetConfiguration" : { - "description" : "Settings for a target-based scaling policy. A target-based policy tracks a particular fleet metric specifies a target value for the metric. As player usage changes, the policy triggers Amazon GameLift to adjust capacity so that the metric returns to the target value. The target configuration specifies settings as needed for the target based policy, including the target value.", - "type" : "object", - "properties" : { - "TargetValue" : { - "description" : "Desired value to use with a target-based scaling policy. The value must be relevant for whatever metric the scaling policy is using. For example, in a policy using the metric PercentAvailableGameSessions, the target value should be the preferred size of the fleet's buffer (the percent of capacity that should be idle and ready for new game sessions).", - "type" : "number" - } + "required": [ + "MetricName", + "Name" + ], + "type": "object" + }, + "StoppedActions": { + "description": "A list of fleet actions that have been suspended in the fleet location.", + "insertionOrder": false, + "items": { + "enum": [ + "AUTO_SCALING" + ], + "type": "string" }, - "additionalProperties" : false, - "required" : [ "TargetValue" ] - }, - "Tag" : { - "description" : "A key-value pair to associate with a resource.", - "type" : "object", - "properties" : { - "Key" : { - "type" : "string", - "description" : "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.", - "minLength" : 1, - "maxLength" : 128 + "maxItems": 1, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.", + "maxLength": 128, + "minLength": 1, + "type": "string" }, - "Value" : { - "type" : "string", - "description" : "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length.", - "minLength" : 0, - "maxLength" : 256 - } - }, - "required" : [ "Key", "Value" ], - "additionalProperties" : false - }, - "DeploymentDetails" : { - "description" : "Provides information about the last deployment ID and its status.", - "type" : "object", - "properties" : { - "LatestDeploymentId" : { - "description" : "The ID of the last deployment on the container fleet. This field will be empty if the container fleet does not have a ContainerGroupDefinition attached.", - "type" : "string", - "maxLength" : 1024, - "pattern" : "^[a-zA-Z0-9\\-]+$|^$" + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length.", + "maxLength": 256, + "minLength": 0, + "type": "string" } }, - "required" : [ ], - "additionalProperties" : false - }, - "DeploymentConfiguration" : { - "description" : "Provides details about how to drain old tasks and replace them with new updated tasks.", - "type" : "object", - "properties" : { - "ProtectionStrategy" : { - "description" : "The protection strategy for deployment on the container fleet; defaults to WITH_PROTECTION.", - "type" : "string", - "enum" : [ "WITH_PROTECTION", "IGNORE_PROTECTION" ] - }, - "MinimumHealthyPercentage" : { - "description" : "The minimum percentage of healthy required; defaults to 75.", - "type" : "integer", - "minimum" : 30, - "maximum" : 75 - }, - "ImpairmentStrategy" : { - "description" : "The strategy to apply in case of impairment; defaults to MAINTAIN.", - "type" : "string", - "enum" : [ "MAINTAIN", "ROLLBACK" ] + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TargetConfiguration": { + "additionalProperties": false, + "description": "Settings for a target-based scaling policy. A target-based policy tracks a particular fleet metric specifies a target value for the metric. As player usage changes, the policy triggers Amazon GameLift to adjust capacity so that the metric returns to the target value. The target configuration specifies settings as needed for the target based policy, including the target value.", + "properties": { + "TargetValue": { + "description": "Desired value to use with a target-based scaling policy. The value must be relevant for whatever metric the scaling policy is using. For example, in a policy using the metric PercentAvailableGameSessions, the target value should be the preferred size of the fleet's buffer (the percent of capacity that should be idle and ready for new game sessions).", + "type": "number" } }, - "required" : [ ], - "additionalProperties" : false + "required": [ + "TargetValue" + ], + "type": "object" } }, - "properties" : { - "FleetId" : { - "description" : "Unique fleet ID", - "type" : "string", - "pattern" : "^[a-z]*fleet-[a-zA-Z0-9\\-]+", - "minLength" : 1, - "maxLength" : 128 - }, - "FleetRoleArn" : { - "description" : "A unique identifier for an AWS IAM role that manages access to your AWS services. Create a role or look up a role's ARN from the IAM dashboard in the AWS Management Console.", - "type" : "string", - "pattern" : "^arn:aws(-.*)?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", - "minLength" : 1, - "maxLength" : 256 - }, - "Description" : { - "description" : "A human-readable description of a fleet.", - "type" : "string", - "minLength" : 1, - "maxLength" : 1024 - }, - "GameServerContainerGroupDefinitionName" : { - "description" : "The name of the container group definition that will be created per game server. You must specify GAME_SERVER container group. You have the option to also specify one PER_INSTANCE container group.", - "type" : "string", - "minLength" : 1, - "maxLength" : 512, - "pattern" : "^[a-zA-Z0-9\\-]+$|^arn:.*:containergroupdefinition\\/[a-zA-Z0-9\\-]+(:[0-9]+)?$" - }, - "GameServerContainerGroupDefinitionArn" : { - "description" : "The Amazon Resource Name (ARN) of the game server container group definition. This field will be empty if GameServerContainerGroupDefinitionName is not specified.", - "type" : "string", - "maxLength" : 512, - "pattern" : "^arn:.*:containergroupdefinition\\/[a-zA-Z0-9\\-]+(:[0-9]+)?$|^$" - }, - "PerInstanceContainerGroupDefinitionName" : { - "description" : "The name of the container group definition that will be created per instance. This field is optional if you specify GameServerContainerGroupDefinitionName.", - "type" : "string", - "minLength" : 1, - "maxLength" : 512, - "pattern" : "^[a-zA-Z0-9\\-]+$|^arn:.*:containergroupdefinition\\/[a-zA-Z0-9\\-]+(:[0-9]+)?$" - }, - "PerInstanceContainerGroupDefinitionArn" : { - "description" : "The Amazon Resource Name (ARN) of the per instance container group definition. This field will be empty if PerInstanceContainerGroupDefinitionName is not specified.", - "type" : "string", - "maxLength" : 512, - "pattern" : "^arn:.*:containergroupdefinition\\/[a-zA-Z0-9\\-]+(:[0-9]+)?$|^$" - }, - "InstanceConnectionPortRange" : { - "$ref" : "#/definitions/ConnectionPortRange" - }, - "InstanceInboundPermissions" : { - "description" : "A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift server.", - "type" : "array", - "maxItems" : 50, - "items" : { - "$ref" : "#/definitions/IpPermission" + "description": "The AWS::GameLift::ContainerFleet resource creates an Amazon GameLift (GameLift) container fleet to host game servers.", + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateContainerFleet", + "gamelift:DescribeContainerFleet", + "gamelift:DescribeFleetDeployment", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeScalingPolicies", + "gamelift:ListTagsForResource", + "gamelift:PutScalingPolicy", + "gamelift:StopFleetActions", + "gamelift:TagResource", + "gamelift:UpdateFleetCapacity", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "gamelift:DeleteContainerFleet", + "gamelift:DescribeContainerFleet" + ] + }, + "list": { + "permissions": [ + "gamelift:ListContainerFleets" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeContainerFleet", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeScalingPolicies", + "gamelift:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "gamelift:CreateFleetLocations", + "gamelift:DeleteFleetLocations", + "gamelift:DeleteScalingPolicy", + "gamelift:DescribeContainerFleet", + "gamelift:DescribeFleetDeployment", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeScalingPolicies", + "gamelift:ListTagsForResource", + "gamelift:PutScalingPolicy", + "gamelift:StartFleetActions", + "gamelift:StopFleetActions", + "gamelift:TagResource", + "gamelift:UntagResource", + "gamelift:UpdateContainerFleet", + "gamelift:UpdateFleetCapacity", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/FleetId" + ], + "properties": { + "BillingType": { + "description": "Indicates whether to use On-Demand instances or Spot instances for this fleet. If empty, the default is ON_DEMAND. Both categories of instances use identical hardware and configurations based on the instance type selected for this fleet.", + "enum": [ + "ON_DEMAND", + "SPOT" + ], + "type": "string" + }, + "CreationTime": { + "description": "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").", + "type": "string" + }, + "DeploymentConfiguration": { + "$ref": "#/definitions/DeploymentConfiguration" + }, + "DeploymentDetails": { + "$ref": "#/definitions/DeploymentDetails" + }, + "Description": { + "description": "A human-readable description of a fleet.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "FleetArn": { + "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container fleet resource and uniquely identifies it across all AWS Regions.", + "maxLength": 512, + "minLength": 1, + "pattern": "^arn:.*:[a-z]*fleet\\/[a-z]*fleet-[a-zA-Z0-9\\-]+$", + "type": "string" + }, + "FleetId": { + "description": "Unique fleet ID", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-z]*fleet-[a-zA-Z0-9\\-]+", + "type": "string" + }, + "FleetRoleArn": { + "description": "A unique identifier for an AWS IAM role that manages access to your AWS services. Create a role or look up a role's ARN from the IAM dashboard in the AWS Management Console.", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:aws(-.*)?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "GameServerContainerGroupDefinitionArn": { + "description": "The Amazon Resource Name (ARN) of the game server container group definition. This field will be empty if GameServerContainerGroupDefinitionName is not specified.", + "maxLength": 512, + "pattern": "^arn:.*:containergroupdefinition\\/[a-zA-Z0-9\\-]+(:[0-9]+)?$|^$", + "type": "string" + }, + "GameServerContainerGroupDefinitionName": { + "description": "The name of the container group definition that will be created per game server. You must specify GAME_SERVER container group. You have the option to also specify one PER_INSTANCE container group.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-]+$|^arn:.*:containergroupdefinition\\/[a-zA-Z0-9\\-]+(:[0-9]+)?$", + "type": "string" + }, + "GameServerContainerGroupsPerInstance": { + "description": "The number of desired game server container groups per instance, a number between 1-5000.", + "maximum": 5000, + "minimum": 1, + "type": "integer" + }, + "GameSessionCreationLimitPolicy": { + "$ref": "#/definitions/GameSessionCreationLimitPolicy", + "description": "A policy that limits the number of game sessions an individual player can create over a span of time for this fleet." + }, + "InstanceConnectionPortRange": { + "$ref": "#/definitions/ConnectionPortRange" + }, + "InstanceInboundPermissions": { + "description": "A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift server.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpPermission" + }, + "maxItems": 50, + "type": "array" + }, + "InstanceType": { + "description": "The name of an EC2 instance type that is supported in Amazon GameLift. A fleet instance type determines the computing resources of each instance in the fleet, including CPU, memory, storage, and networking capacity. Amazon GameLift supports the following EC2 instance types. See Amazon EC2 Instance Types for detailed descriptions.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Locations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LocationConfiguration" }, - "insertionOrder" : false - }, - "GameServerContainerGroupsPerInstance" : { - "description" : "The number of desired game server container groups per instance, a number between 1-5000.", - "type" : "integer", - "minimum" : 1, - "maximum" : 5000 - }, - "MaximumGameServerContainerGroupsPerInstance" : { - "description" : "The maximum number of game server container groups per instance, a number between 1-5000.", - "type" : "integer", - "minimum" : 1, - "maximum" : 5000 - }, - "CreationTime" : { - "description" : "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").", - "type" : "string" - }, - "Status" : { - "description" : "The current status of the container fleet.", - "type" : "string", - "enum" : [ "PENDING", "CREATING", "CREATED", "ACTIVATING", "ACTIVE", "UPDATING", "DELETING" ] - }, - "DeploymentDetails" : { - "$ref" : "#/definitions/DeploymentDetails" - }, - "DeploymentConfiguration" : { - "$ref" : "#/definitions/DeploymentConfiguration" - }, - "InstanceType" : { - "description" : "The name of an EC2 instance type that is supported in Amazon GameLift. A fleet instance type determines the computing resources of each instance in the fleet, including CPU, memory, storage, and networking capacity. Amazon GameLift supports the following EC2 instance types. See Amazon EC2 Instance Types for detailed descriptions.", - "type" : "string", - "minLength" : 1, - "maxLength" : 1024 - }, - "BillingType" : { - "description" : "Indicates whether to use On-Demand instances or Spot instances for this fleet. If empty, the default is ON_DEMAND. Both categories of instances use identical hardware and configurations based on the instance type selected for this fleet.", - "type" : "string", - "enum" : [ "ON_DEMAND", "SPOT" ] - }, - "Locations" : { - "type" : "array", - "maxItems" : 100, - "items" : { - "$ref" : "#/definitions/LocationConfiguration" + "maxItems": 100, + "type": "array" + }, + "LogConfiguration": { + "$ref": "#/definitions/LogConfiguration" + }, + "MaximumGameServerContainerGroupsPerInstance": { + "description": "The maximum number of game server container groups per instance, a number between 1-5000.", + "maximum": 5000, + "minimum": 1, + "type": "integer" + }, + "MetricGroups": { + "description": "The name of an Amazon CloudWatch metric group. A metric group aggregates the metrics for all fleets in the group. Specify a string containing the metric group name. You can use an existing name or use a new name to create a new metric group. Currently, this parameter can have only one string.", + "insertionOrder": false, + "items": { + "type": "string" }, - "insertionOrder" : false - }, - "ScalingPolicies" : { - "description" : "A list of rules that control how a fleet is scaled.", - "type" : "array", - "maxItems" : 50, - "items" : { - "$ref" : "#/definitions/ScalingPolicy" + "maxItems": 1, + "type": "array" + }, + "NewGameSessionProtectionPolicy": { + "description": "A game session protection policy to apply to all game sessions hosted on instances in this fleet. When protected, active game sessions cannot be terminated during a scale-down event. If this parameter is not set, instances in this fleet default to no protection. You can change a fleet's protection policy to affect future game sessions on the fleet. You can also set protection for individual game sessions.", + "enum": [ + "FullProtection", + "NoProtection" + ], + "type": "string" + }, + "PerInstanceContainerGroupDefinitionArn": { + "description": "The Amazon Resource Name (ARN) of the per instance container group definition. This field will be empty if PerInstanceContainerGroupDefinitionName is not specified.", + "maxLength": 512, + "pattern": "^arn:.*:containergroupdefinition\\/[a-zA-Z0-9\\-]+(:[0-9]+)?$|^$", + "type": "string" + }, + "PerInstanceContainerGroupDefinitionName": { + "description": "The name of the container group definition that will be created per instance. This field is optional if you specify GameServerContainerGroupDefinitionName.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-]+$|^arn:.*:containergroupdefinition\\/[a-zA-Z0-9\\-]+(:[0-9]+)?$", + "type": "string" + }, + "ScalingPolicies": { + "description": "A list of rules that control how a fleet is scaled.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ScalingPolicy" }, - "insertionOrder" : false - }, - "MetricGroups" : { - "description" : "The name of an Amazon CloudWatch metric group. A metric group aggregates the metrics for all fleets in the group. Specify a string containing the metric group name. You can use an existing name or use a new name to create a new metric group. Currently, this parameter can have only one string.", - "type" : "array", - "maxItems" : 1, - "items" : { - "type" : "string" + "maxItems": 50, + "type": "array" + }, + "Status": { + "description": "The current status of the container fleet.", + "enum": [ + "PENDING", + "CREATING", + "CREATED", + "ACTIVATING", + "ACTIVE", + "UPDATING", + "DELETING" + ], + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" }, - "insertionOrder" : false - }, - "NewGameSessionProtectionPolicy" : { - "description" : "A game session protection policy to apply to all game sessions hosted on instances in this fleet. When protected, active game sessions cannot be terminated during a scale-down event. If this parameter is not set, instances in this fleet default to no protection. You can change a fleet's protection policy to affect future game sessions on the fleet. You can also set protection for individual game sessions.", - "type" : "string", - "enum" : [ "FullProtection", "NoProtection" ] - }, - "GameSessionCreationLimitPolicy" : { - "description" : "A policy that limits the number of game sessions an individual player can create over a span of time for this fleet.", - "$ref" : "#/definitions/GameSessionCreationLimitPolicy" - }, - "LogConfiguration" : { - "$ref" : "#/definitions/LogConfiguration" - }, - "Tags" : { - "description" : "An array of key-value pairs to apply to this resource.", - "type" : "array", - "uniqueItems" : true, - "insertionOrder" : false, - "maxItems" : 200, - "items" : { - "$ref" : "#/definitions/Tag" - } - }, - "FleetArn" : { - "description" : "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container fleet resource and uniquely identifies it across all AWS Regions.", - "type" : "string", - "minLength" : 1, - "maxLength" : 512, - "pattern" : "^arn:.*:[a-z]*fleet\\/[a-z]*fleet-[a-zA-Z0-9\\-]+$" + "maxItems": 200, + "type": "array", + "uniqueItems": true } }, - "additionalProperties" : false, - "required" : [ "FleetRoleArn" ], - "createOnlyProperties" : [ "/properties/InstanceType", "/properties/BillingType", "/properties/Locations" ], - "readOnlyProperties" : [ "/properties/CreationTime", "/properties/Status", "/properties/FleetId", "/properties/FleetArn", "/properties/DeploymentDetails", "/properties/GameServerContainerGroupDefinitionArn", "/properties/PerInstanceContainerGroupDefinitionArn", "/properties/MaximumGameServerContainerGroupsPerInstance" ], - "writeOnlyProperties" : [ "/properties/ScalingPolicies", "/properties/Locations", "/properties/DeploymentConfiguration", "/properties/GameServerContainerGroupsPerInstance", "/properties/GameServerContainerGroupDefinitionName", "/properties/PerInstanceContainerGroupDefinitionName" ], - "primaryIdentifier" : [ "/properties/FleetId" ], - "handlers" : { - "create" : { - "permissions" : [ "gamelift:CreateContainerFleet", "gamelift:DescribeContainerFleet", "gamelift:DescribeFleetDeployment", "gamelift:DescribeFleetLocationAttributes", "gamelift:DescribeFleetLocationCapacity", "gamelift:DescribeScalingPolicies", "gamelift:ListTagsForResource", "gamelift:PutScalingPolicy", "gamelift:StopFleetActions", "gamelift:TagResource", "gamelift:UpdateFleetCapacity", "iam:PassRole" ] - }, - "read" : { - "permissions" : [ "gamelift:DescribeContainerFleet", "gamelift:DescribeFleetLocationAttributes", "gamelift:DescribeFleetLocationCapacity", "gamelift:DescribeScalingPolicies", "gamelift:ListTagsForResource" ] - }, - "delete" : { - "permissions" : [ "gamelift:DeleteContainerFleet", "gamelift:DescribeContainerFleet" ] - }, - "list" : { - "permissions" : [ "gamelift:ListContainerFleets" ] - }, - "update" : { - "permissions" : [ "gamelift:CreateFleetLocations", "gamelift:DeleteFleetLocations", "gamelift:DeleteScalingPolicy", "gamelift:DescribeContainerFleet", "gamelift:DescribeFleetDeployment", "gamelift:DescribeFleetLocationAttributes", "gamelift:DescribeFleetLocationCapacity", "gamelift:DescribeScalingPolicies", "gamelift:ListTagsForResource", "gamelift:PutScalingPolicy", "gamelift:StartFleetActions", "gamelift:StopFleetActions", "gamelift:TagResource", "gamelift:UntagResource", "gamelift:UpdateContainerFleet", "gamelift:UpdateFleetCapacity", "iam:PassRole" ] - } - } -} \ No newline at end of file + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/Status", + "/properties/FleetId", + "/properties/FleetArn", + "/properties/DeploymentDetails", + "/properties/GameServerContainerGroupDefinitionArn", + "/properties/PerInstanceContainerGroupDefinitionArn", + "/properties/MaximumGameServerContainerGroupsPerInstance" + ], + "required": [ + "FleetRoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GameLift::ContainerFleet", + "writeOnlyProperties": [ + "/properties/ScalingPolicies", + "/properties/Locations", + "/properties/DeploymentConfiguration", + "/properties/GameServerContainerGroupsPerInstance", + "/properties/GameServerContainerGroupDefinitionName", + "/properties/PerInstanceContainerGroupDefinitionName" + ] +} diff --git a/src/schema/aws-gamelift-containergroupdefinition.json b/src/schema/aws-gamelift-containergroupdefinition.json index 3da6b5ba..9b85f467 100644 --- a/src/schema/aws-gamelift-containergroupdefinition.json +++ b/src/schema/aws-gamelift-containergroupdefinition.json @@ -1,553 +1,557 @@ -{ - "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/ContainerGroupType" - ], - "definitions": { - "ContainerDependency": { - "additionalProperties": false, - "description": "A dependency that impacts a container's startup and shutdown.", - "properties": { - "Condition": { - "description": "The type of dependency.", - "enum": [ - "START", - "COMPLETE", - "SUCCESS", - "HEALTHY" - ], - "type": "string" - }, - "ContainerName": { - "description": "A descriptive label for the container definition. The container being defined depends on this container's condition.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - } - }, - "required": [ - "ContainerName", - "Condition" - ], - "type": "object" - }, - "ContainerEnvironment": { - "additionalProperties": false, - "description": "An environment variable to set inside a container, in the form of a key-value pair.", - "properties": { - "Name": { - "description": "The environment variable name.", - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "Value": { - "description": "The environment variable value.", - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "required": [ - "Name", - "Value" - ], - "type": "object" - }, - "ContainerHealthCheck": { - "additionalProperties": false, - "description": "Specifies how the process manager checks the health of containers.", - "properties": { - "Command": { - "description": "A string array representing the command that the container runs to determine if it is healthy.", - "insertionOrder": true, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array", - "uniqueItems": false - }, - "Interval": { - "description": "How often (in seconds) the health is checked.", - "maximum": 300, - "minimum": 60, - "type": "integer" - }, - "Retries": { - "description": "How many times the process manager will retry the command after a timeout. (The first run of the command does not count as a retry.)", - "maximum": 10, - "minimum": 5, - "type": "integer" - }, - "StartPeriod": { - "description": "The optional grace period (in seconds) to give a container time to boostrap before teh health check is declared failed.", - "maximum": 300, - "minimum": 0, - "type": "integer" - }, - "Timeout": { - "description": "How many seconds the process manager allows the command to run before canceling it.", - "maximum": 60, - "minimum": 30, - "type": "integer" - } - }, - "required": [ - "Command" - ], - "type": "object" - }, - "ContainerMountPoint": { - "additionalProperties": false, - "description": "Defines the mount point configuration within a container.", - "properties": { - "AccessLevel": { - "description": "The access permissions for the mounted path.", - "enum": [ - "READ_ONLY", - "READ_AND_WRITE" - ], - "type": "string" - }, - "ContainerPath": { - "description": "The path inside the container where the mount is accessible.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^(\\/+[^\\/]+\\/*)+$", - "type": "string" - }, - "InstancePath": { - "description": "The path on the host that will be mounted in the container.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^\\/[\\s\\S]*$", - "type": "string" - } - }, - "required": [ - "InstancePath" - ], - "type": "object" - }, - "ContainerPortRange": { - "additionalProperties": false, - "description": "A set of one or more port numbers that can be opened on the container.", - "properties": { - "FromPort": { - "description": "A starting value for the range of allowed port numbers.", - "maximum": 60000, - "minimum": 1, - "type": "integer" - }, - "Protocol": { - "description": "Defines the protocol of these ports.", - "enum": [ - "TCP", - "UDP" - ], - "type": "string" - }, - "ToPort": { - "description": "An ending value for the range of allowed port numbers. Port numbers are end-inclusive. This value must be equal to or greater than FromPort.", - "maximum": 60000, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "FromPort", - "Protocol", - "ToPort" - ], - "type": "object" - }, - "GameServerContainerDefinition": { - "additionalProperties": false, - "description": "Specifies the information required to run game servers with this container group", - "properties": { - "ContainerName": { - "description": "A descriptive label for the container definition. Container definition names must be unique with a container group definition.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "DependsOn": { - "description": "A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ContainerDependency" - }, - "maxItems": 10, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "EnvironmentOverride": { - "description": "The environment variables to pass to a container.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ContainerEnvironment" - }, - "maxItems": 20, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "ImageUri": { - "description": "Specifies the image URI of this container.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-_\\.@\\/:]+$", - "type": "string" - }, - "MountPoints": { - "description": "A list of mount point configurations to be used in a container.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ContainerMountPoint" - }, - "maxItems": 10, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "PortConfiguration": { - "$ref": "#/definitions/PortConfiguration", - "description": "Defines the ports on the container." - }, - "ResolvedImageDigest": { - "description": "The digest of the container image.", - "pattern": "^sha256:[a-fA-F0-9]{64}$", - "type": "string" - }, - "ServerSdkVersion": { - "description": "The version of the server SDK used in this container group", - "maxLength": 128, - "pattern": "^\\d+\\.\\d+\\.\\d+$", - "type": "string" - } - }, - "required": [ - "ContainerName", - "ImageUri", - "ServerSdkVersion" - ], - "type": "object" - }, - "PortConfiguration": { - "additionalProperties": false, - "description": "Defines the ports on a container.", - "properties": { - "ContainerPortRanges": { - "description": "Specifies one or more ranges of ports on a container.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ContainerPortRange" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "ContainerPortRanges" - ], - "type": "object" - }, - "SupportContainerDefinition": { - "additionalProperties": false, - "description": "Supports the function of the main container group", - "properties": { - "ContainerName": { - "description": "A descriptive label for the container definition.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "DependsOn": { - "description": "A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ContainerDependency" - }, - "maxItems": 10, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "EnvironmentOverride": { - "description": "The environment variables to pass to a container.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ContainerEnvironment" - }, - "maxItems": 20, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Essential": { - "description": "Specifies if the container is essential. If an essential container fails a health check, then all containers in the container group will be restarted. You must specify exactly 1 essential container in a container group.", - "type": "boolean" - }, - "HealthCheck": { - "$ref": "#/definitions/ContainerHealthCheck", - "description": "Specifies how the health of the containers will be checked." - }, - "ImageUri": { - "description": "Specifies the image URI of this container.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-_\\.@\\/:]+$", - "type": "string" - }, - "MemoryHardLimitMebibytes": { - "description": "The total memory limit of container groups following this definition in MiB", - "maximum": 1024000, - "minimum": 4, - "type": "integer" - }, - "MountPoints": { - "description": "A list of mount point configurations to be used in a container.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ContainerMountPoint" - }, - "maxItems": 10, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "PortConfiguration": { - "$ref": "#/definitions/PortConfiguration", - "description": "Defines the ports on the container." - }, - "ResolvedImageDigest": { - "description": "The digest of the container image.", - "pattern": "^sha256:[a-fA-F0-9]{64}$", - "type": "string" - }, - "Vcpu": { - "description": "The number of virtual CPUs to give to the support group", - "maximum": 10, - "minimum": 0.125, - "type": "number" - } - }, - "required": [ - "ContainerName", - "ImageUri" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.", - "maxLength": 128, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length.", - "maxLength": 256, - "minLength": 0, - "pattern": "^.*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::GameLift::ContainerGroupDefinition resource creates an Amazon GameLift container group definition.", - "handlers": { - "create": { - "permissions": [ - "gamelift:CreateContainerGroupDefinition", - "gamelift:DescribeContainerGroupDefinition", - "gamelift:ListTagsForResource", - "gamelift:TagResource", - "ecr:BatchCheckLayerAvailability", - "ecr:BatchGetImage", - "ecr:GetDownloadUrlForLayer", - "ecr:DescribeImages" - ] - }, - "delete": { - "permissions": [ - "gamelift:DescribeContainerGroupDefinition", - "gamelift:DeleteContainerGroupDefinition" - ] - }, - "list": { - "permissions": [ - "gamelift:ListContainerGroupDefinitions" - ] - }, - "read": { - "permissions": [ - "gamelift:DescribeContainerGroupDefinition", - "gamelift:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "gamelift:UpdateContainerGroupDefinition", - "gamelift:ListTagsForResource", - "gamelift:TagResource", - "gamelift:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "ContainerGroupDefinitionArn": { - "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container group resource and uniquely identifies it across all AWS Regions.", - "maxLength": 512, - "minLength": 1, - "pattern": "^arn:.*:containergroupdefinition\\/[a-zA-Z0-9\\-]+(:[0-9]+)?$", - "type": "string" - }, - "ContainerGroupType": { - "description": "The scope of the container group", - "enum": [ - "GAME_SERVER", - "PER_INSTANCE" - ], - "type": "string" - }, - "CreationTime": { - "description": "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").", - "type": "string" - }, - "GameServerContainerDefinition": { - "$ref": "#/definitions/GameServerContainerDefinition" - }, - "Name": { - "description": "A descriptive label for the container group definition.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "OperatingSystem": { - "description": "The operating system of the container group", - "enum": [ - "AMAZON_LINUX_2023" - ], - "type": "string" - }, - "SourceVersionNumber": { - "description": "A specific ContainerGroupDefinition version to be updated", - "minimum": 0, - "type": "integer" - }, - "Status": { - "description": "A string indicating ContainerGroupDefinition status.", - "enum": [ - "READY", - "COPYING", - "FAILED" - ], - "type": "string" - }, - "StatusReason": { - "description": "A string indicating the reason for ContainerGroupDefinition status.", - "type": "string" - }, - "SupportContainerDefinitions": { - "description": "A collection of support container definitions that define the containers in this group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SupportContainerDefinition" - }, - "maxItems": 10, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "TotalMemoryLimitMebibytes": { - "description": "The total memory limit of container groups following this definition in MiB", - "maximum": 1024000, - "minimum": 4, - "type": "integer" - }, - "TotalVcpuLimit": { - "description": "The total amount of virtual CPUs on the container group definition", - "maximum": 10, - "minimum": 0.125, - "type": "number" - }, - "VersionDescription": { - "description": "The description of this version", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "VersionNumber": { - "description": "The version of this ContainerGroupDefinition", - "minimum": 0, - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/ContainerGroupDefinitionArn", - "/properties/CreationTime", - "/properties/VersionNumber", - "/properties/Status", - "/properties/StatusReason" - ], - "required": [ - "Name", - "OperatingSystem", - "TotalMemoryLimitMebibytes", - "TotalVcpuLimit" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "gamelift:ListTagsForResource", - "gamelift:TagResource", - "gamelift:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::GameLift::ContainerGroupDefinition" -} +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/ContainerGroupType" + ], + "definitions": { + "ContainerDependency": { + "additionalProperties": false, + "description": "A dependency that impacts a container's startup and shutdown.", + "properties": { + "Condition": { + "description": "The type of dependency.", + "enum": [ + "START", + "COMPLETE", + "SUCCESS", + "HEALTHY" + ], + "type": "string" + }, + "ContainerName": { + "description": "A descriptive label for the container definition. The container being defined depends on this container's condition.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + } + }, + "required": [ + "ContainerName", + "Condition" + ], + "type": "object" + }, + "ContainerEnvironment": { + "additionalProperties": false, + "description": "An environment variable to set inside a container, in the form of a key-value pair.", + "properties": { + "Name": { + "description": "The environment variable name.", + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "Value": { + "description": "The environment variable value.", + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "Name", + "Value" + ], + "type": "object" + }, + "ContainerHealthCheck": { + "additionalProperties": false, + "description": "Specifies how the process manager checks the health of containers.", + "properties": { + "Command": { + "description": "A string array representing the command that the container runs to determine if it is healthy.", + "insertionOrder": true, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "Interval": { + "description": "How often (in seconds) the health is checked.", + "maximum": 300, + "minimum": 60, + "type": "integer" + }, + "Retries": { + "description": "How many times the process manager will retry the command after a timeout. (The first run of the command does not count as a retry.)", + "maximum": 10, + "minimum": 5, + "type": "integer" + }, + "StartPeriod": { + "description": "The optional grace period (in seconds) to give a container time to boostrap before teh health check is declared failed.", + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "Timeout": { + "description": "How many seconds the process manager allows the command to run before canceling it.", + "maximum": 60, + "minimum": 30, + "type": "integer" + } + }, + "required": [ + "Command" + ], + "type": "object" + }, + "ContainerMountPoint": { + "additionalProperties": false, + "description": "Defines the mount point configuration within a container.", + "properties": { + "AccessLevel": { + "description": "The access permissions for the mounted path.", + "enum": [ + "READ_ONLY", + "READ_AND_WRITE" + ], + "type": "string" + }, + "ContainerPath": { + "description": "The path inside the container where the mount is accessible.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^(\\/+[^\\/]+\\/*)+$", + "type": "string" + }, + "InstancePath": { + "description": "The path on the host that will be mounted in the container.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^\\/[\\s\\S]*$", + "type": "string" + } + }, + "required": [ + "InstancePath" + ], + "type": "object" + }, + "ContainerPortRange": { + "additionalProperties": false, + "description": "A set of one or more port numbers that can be opened on the container.", + "properties": { + "FromPort": { + "description": "A starting value for the range of allowed port numbers.", + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "Protocol": { + "description": "Defines the protocol of these ports.", + "enum": [ + "TCP", + "UDP" + ], + "type": "string" + }, + "ToPort": { + "description": "An ending value for the range of allowed port numbers. Port numbers are end-inclusive. This value must be equal to or greater than FromPort.", + "maximum": 60000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "FromPort", + "Protocol", + "ToPort" + ], + "type": "object" + }, + "GameServerContainerDefinition": { + "additionalProperties": false, + "description": "Specifies the information required to run game servers with this container group", + "properties": { + "ContainerName": { + "description": "A descriptive label for the container definition. Container definition names must be unique with a container group definition.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "DependsOn": { + "description": "A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ContainerDependency" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "EnvironmentOverride": { + "description": "The environment variables to pass to a container.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ContainerEnvironment" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ImageUri": { + "description": "Specifies the image URI of this container.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-_\\.@\\/:]+$", + "type": "string" + }, + "MountPoints": { + "description": "A list of mount point configurations to be used in a container.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ContainerMountPoint" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "PortConfiguration": { + "$ref": "#/definitions/PortConfiguration", + "description": "Defines the ports on the container." + }, + "ResolvedImageDigest": { + "description": "The digest of the container image.", + "pattern": "^sha256:[a-fA-F0-9]{64}$", + "type": "string" + }, + "ServerSdkVersion": { + "description": "The version of the server SDK used in this container group", + "maxLength": 128, + "pattern": "^\\d+\\.\\d+\\.\\d+$", + "type": "string" + } + }, + "required": [ + "ContainerName", + "ImageUri", + "ServerSdkVersion" + ], + "type": "object" + }, + "PortConfiguration": { + "additionalProperties": false, + "description": "Defines the ports on a container.", + "properties": { + "ContainerPortRanges": { + "description": "Specifies one or more ranges of ports on a container.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ContainerPortRange" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "ContainerPortRanges" + ], + "type": "object" + }, + "SupportContainerDefinition": { + "additionalProperties": false, + "description": "Supports the function of the main container group", + "properties": { + "ContainerName": { + "description": "A descriptive label for the container definition.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "DependsOn": { + "description": "A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ContainerDependency" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "EnvironmentOverride": { + "description": "The environment variables to pass to a container.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ContainerEnvironment" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Essential": { + "description": "Specifies if the container is essential. If an essential container fails a health check, then all containers in the container group will be restarted. You must specify exactly 1 essential container in a container group.", + "type": "boolean" + }, + "HealthCheck": { + "$ref": "#/definitions/ContainerHealthCheck", + "description": "Specifies how the health of the containers will be checked." + }, + "ImageUri": { + "description": "Specifies the image URI of this container.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-_\\.@\\/:]+$", + "type": "string" + }, + "MemoryHardLimitMebibytes": { + "description": "The total memory limit of container groups following this definition in MiB", + "maximum": 1024000, + "minimum": 4, + "type": "integer" + }, + "MountPoints": { + "description": "A list of mount point configurations to be used in a container.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ContainerMountPoint" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "PortConfiguration": { + "$ref": "#/definitions/PortConfiguration", + "description": "Defines the ports on the container." + }, + "ResolvedImageDigest": { + "description": "The digest of the container image.", + "pattern": "^sha256:[a-fA-F0-9]{64}$", + "type": "string" + }, + "Vcpu": { + "description": "The number of virtual CPUs to give to the support group", + "maximum": 10, + "minimum": 0.125, + "type": "number" + } + }, + "required": [ + "ContainerName", + "ImageUri" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.", + "maxLength": 128, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length.", + "maxLength": 256, + "minLength": 0, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::GameLift::ContainerGroupDefinition resource creates an Amazon GameLift container group definition.", + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateContainerGroupDefinition", + "gamelift:DescribeContainerGroupDefinition", + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "ecr:BatchCheckLayerAvailability", + "ecr:BatchGetImage", + "ecr:GetDownloadUrlForLayer", + "ecr:DescribeImages", + "ecr:GetAuthorizationToken" + ] + }, + "delete": { + "permissions": [ + "gamelift:DeleteContainerGroupDefinition" + ] + }, + "list": { + "permissions": [ + "gamelift:ListContainerGroupDefinitions" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeContainerGroupDefinition", + "gamelift:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "gamelift:DescribeContainerGroupDefinition", + "gamelift:UpdateContainerGroupDefinition", + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "ContainerGroupDefinitionArn": { + "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container group resource and uniquely identifies it across all AWS Regions.", + "maxLength": 512, + "minLength": 1, + "pattern": "^arn:.*:containergroupdefinition\\/[a-zA-Z0-9\\-]+(:[0-9]+)?$", + "type": "string" + }, + "ContainerGroupType": { + "description": "The scope of the container group", + "enum": [ + "GAME_SERVER", + "PER_INSTANCE" + ], + "type": "string" + }, + "CreationTime": { + "description": "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").", + "type": "string" + }, + "GameServerContainerDefinition": { + "$ref": "#/definitions/GameServerContainerDefinition" + }, + "Name": { + "description": "A descriptive label for the container group definition.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "OperatingSystem": { + "description": "The operating system of the container group", + "enum": [ + "AMAZON_LINUX_2023" + ], + "type": "string" + }, + "SourceVersionNumber": { + "description": "A specific ContainerGroupDefinition version to be updated", + "minimum": 0, + "type": "integer" + }, + "Status": { + "description": "A string indicating ContainerGroupDefinition status.", + "enum": [ + "READY", + "COPYING", + "FAILED" + ], + "type": "string" + }, + "StatusReason": { + "description": "A string indicating the reason for ContainerGroupDefinition status.", + "type": "string" + }, + "SupportContainerDefinitions": { + "description": "A collection of support container definitions that define the containers in this group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SupportContainerDefinition" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "TotalMemoryLimitMebibytes": { + "description": "The total memory limit of container groups following this definition in MiB", + "maximum": 1024000, + "minimum": 4, + "type": "integer" + }, + "TotalVcpuLimit": { + "description": "The total amount of virtual CPUs on the container group definition", + "maximum": 10, + "minimum": 0.125, + "type": "number" + }, + "VersionDescription": { + "description": "The description of this version", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VersionNumber": { + "description": "The version of this ContainerGroupDefinition", + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/ContainerGroupDefinitionArn", + "/properties/CreationTime", + "/properties/VersionNumber", + "/properties/Status", + "/properties/StatusReason" + ], + "required": [ + "Name", + "OperatingSystem", + "TotalMemoryLimitMebibytes", + "TotalVcpuLimit" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GameLift::ContainerGroupDefinition", + "writeOnlyProperties": [ + "/properties/SourceVersionNumber" + ] +} diff --git a/src/schema/aws-gamelift-fleet.json b/src/schema/aws-gamelift-fleet.json index 8af80ab5..226f0907 100644 --- a/src/schema/aws-gamelift-fleet.json +++ b/src/schema/aws-gamelift-fleet.json @@ -1,588 +1,588 @@ -{ - "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplyCapacity", - "/properties/BuildId", - "/properties/CertificateConfiguration", - "/properties/EC2InstanceType", - "/properties/FleetType", - "/properties/InstanceRoleARN", - "/properties/InstanceRoleCredentialsProvider", - "/properties/LogPaths", - "/properties/PeerVpcAwsAccountId", - "/properties/PeerVpcId", - "/properties/ScriptId", - "/properties/ServerLaunchParameters", - "/properties/ServerLaunchPath", - "/properties/ComputeType" - ], - "definitions": { - "AnywhereConfiguration": { - "additionalProperties": false, - "description": "Configuration for Anywhere fleet.", - "properties": { - "Cost": { - "description": "Cost of compute can be specified on Anywhere Fleets to prioritize placement across Queue destinations based on Cost.", - "maxLength": 11, - "minLength": 1, - "pattern": "^\\d{1,5}(?:\\.\\d{1,5})?$", - "type": "string" - } - }, - "required": [ - "Cost" - ] - }, - "CertificateConfiguration": { - "additionalProperties": false, - "description": "Information about the use of a TLS/SSL certificate for a fleet. TLS certificate generation is enabled at the fleet level, with one certificate generated for the fleet. When this feature is enabled, the certificate can be retrieved using the GameLift Server SDK call GetInstanceCertificate. All instances in a fleet share the same certificate.", - "properties": { - "CertificateType": { - "enum": [ - "DISABLED", - "GENERATED" - ], - "type": "string" - } - }, - "required": [ - "CertificateType" - ], - "type": "object" - }, - "IpPermission": { - "additionalProperties": false, - "description": "A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift hosting resource. New game sessions that are started on the fleet are assigned an IP address/port number combination, which must fall into the fleet's allowed ranges. For fleets created with a custom game server, the ranges reflect the server's game session assignments. For Realtime Servers fleets, Amazon GameLift automatically opens two port ranges, one for TCP messaging and one for UDP, for use by the Realtime servers.", - "properties": { - "FromPort": { - "description": "A starting value for a range of allowed port numbers.", - "maximum": 60000, - "minimum": 1, - "type": "integer" - }, - "IpRange": { - "description": "A range of allowed IP addresses. This value must be expressed in CIDR notation. Example: \"000.000.000.000/[subnet mask]\" or optionally the shortened version \"0.0.0.0/[subnet mask]\".", - "pattern": "(^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(/([0-9]|[1-2][0-9]|3[0-2]))$)", - "type": "string" - }, - "Protocol": { - "description": "The network communication protocol used by the fleet.", - "enum": [ - "TCP", - "UDP" - ], - "type": "string" - }, - "ToPort": { - "description": "An ending value for a range of allowed port numbers. Port numbers are end-inclusive. This value must be higher than FromPort.", - "maximum": 60000, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "FromPort", - "IpRange", - "Protocol", - "ToPort" - ], - "type": "object" - }, - "Location": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[A-Za-z0-9\\-]+", - "type": "string" - }, - "LocationCapacity": { - "additionalProperties": false, - "description": "Current resource capacity settings in a specified fleet or location. The location value might refer to a fleet's remote location or its home Region.", - "properties": { - "DesiredEC2Instances": { - "description": "The number of EC2 instances you want to maintain in the specified fleet location. This value must fall between the minimum and maximum size limits.", - "minimum": 0, - "type": "integer" - }, - "MaxSize": { - "description": "The maximum value that is allowed for the fleet's instance count for a location. When creating a new fleet, GameLift automatically sets this value to \"1\". Once the fleet is active, you can change this value.", - "minimum": 0, - "type": "integer" - }, - "MinSize": { - "description": "The minimum value allowed for the fleet's instance count for a location. When creating a new fleet, GameLift automatically sets this value to \"0\". After the fleet is active, you can change this value.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "DesiredEC2Instances", - "MinSize", - "MaxSize" - ], - "type": "object" - }, - "LocationConfiguration": { - "additionalProperties": false, - "description": "A remote location where a multi-location fleet can deploy EC2 instances for game hosting.", - "properties": { - "Location": { - "$ref": "#/definitions/Location" - }, - "LocationCapacity": { - "$ref": "#/definitions/LocationCapacity" - } - }, - "required": [ - "Location" - ], - "type": "object" - }, - "ResourceCreationLimitPolicy": { - "additionalProperties": false, - "description": "A policy that limits the number of game sessions a player can create on the same fleet. This optional policy gives game owners control over how players can consume available game server resources. A resource creation policy makes the following statement: \"An individual player can create a maximum number of new game sessions within a specified time period\".\n\nThe policy is evaluated when a player tries to create a new game session. For example, assume you have a policy of 10 new game sessions and a time period of 60 minutes. On receiving a CreateGameSession request, Amazon GameLift checks that the player (identified by CreatorId) has created fewer than 10 game sessions in the past 60 minutes.", - "properties": { - "NewGameSessionsPerCreator": { - "description": "The maximum number of game sessions that an individual can create during the policy period.", - "minimum": 0, - "type": "integer" - }, - "PolicyPeriodInMinutes": { - "description": "The time span used in evaluating the resource creation limit policy.", - "minimum": 0, - "type": "integer" - } - }, - "type": "object" - }, - "RuntimeConfiguration": { - "additionalProperties": false, - "description": "A collection of server process configurations that describe the processes to run on each instance in a fleet. All fleets must have a runtime configuration. Each instance in the fleet maintains server processes as specified in the runtime configuration, launching new ones as existing processes end. Each instance regularly checks for an updated runtime configuration makes adjustments as called for.\n\nThe runtime configuration enables the instances in a fleet to run multiple processes simultaneously. Potential scenarios are as follows: (1) Run multiple processes of a single game server executable to maximize usage of your hosting resources. (2) Run one or more processes of different executables, such as your game server and a metrics tracking program. (3) Run multiple processes of a single game server but with different launch parameters, for example to run one process on each instance in debug mode.\n\nAn Amazon GameLift instance is limited to 50 processes running simultaneously. A runtime configuration must specify fewer than this limit. To calculate the total number of processes specified in a runtime configuration, add the values of the ConcurrentExecutions parameter for each ServerProcess object in the runtime configuration.", - "properties": { - "GameSessionActivationTimeoutSeconds": { - "description": "The maximum amount of time (in seconds) that a game session can remain in status ACTIVATING. If the game session is not active before the timeout, activation is terminated and the game session status is changed to TERMINATED.", - "maximum": 600, - "minimum": 1, - "type": "integer" - }, - "MaxConcurrentGameSessionActivations": { - "description": "The maximum number of game sessions with status ACTIVATING to allow on an instance simultaneously. This setting limits the amount of instance resources that can be used for new game activations at any one time.", - "maximum": 2147483647, - "minimum": 1, - "type": "integer" - }, - "ServerProcesses": { - "description": "A collection of server process configurations that describe which server processes to run on each instance in a fleet.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ServerProcess" - }, - "maxItems": 50, - "type": "array" - } - }, - "type": "object" - }, - "ScalingPolicy": { - "additionalProperties": false, - "description": "Rule that controls how a fleet is scaled. Scaling policies are uniquely identified by the combination of name and fleet ID.", - "properties": { - "ComparisonOperator": { - "description": "Comparison operator to use when measuring a metric against the threshold value.", - "enum": [ - "GreaterThanOrEqualToThreshold", - "GreaterThanThreshold", - "LessThanThreshold", - "LessThanOrEqualToThreshold" - ], - "type": "string" - }, - "EvaluationPeriods": { - "description": "Length of time (in minutes) the metric must be at or beyond the threshold before a scaling event is triggered.", - "minimum": 1, - "type": "integer" - }, - "Location": { - "$ref": "#/definitions/Location" - }, - "MetricName": { - "description": "Name of the Amazon GameLift-defined metric that is used to trigger a scaling adjustment.", - "enum": [ - "ActivatingGameSessions", - "ActiveGameSessions", - "ActiveInstances", - "AvailableGameSessions", - "AvailablePlayerSessions", - "CurrentPlayerSessions", - "IdleInstances", - "PercentAvailableGameSessions", - "PercentIdleInstances", - "QueueDepth", - "WaitTime", - "ConcurrentActivatableGameSessions" - ], - "type": "string" - }, - "Name": { - "description": "A descriptive label that is associated with a fleet's scaling policy. Policy names do not need to be unique.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "PolicyType": { - "description": "The type of scaling policy to create. For a target-based policy, set the parameter MetricName to 'PercentAvailableGameSessions' and specify a TargetConfiguration. For a rule-based policy set the following parameters: MetricName, ComparisonOperator, Threshold, EvaluationPeriods, ScalingAdjustmentType, and ScalingAdjustment.", - "enum": [ - "RuleBased", - "TargetBased" - ], - "type": "string" - }, - "ScalingAdjustment": { - "description": "Amount of adjustment to make, based on the scaling adjustment type.", - "type": "integer" - }, - "ScalingAdjustmentType": { - "description": "The type of adjustment to make to a fleet's instance count.", - "enum": [ - "ChangeInCapacity", - "ExactCapacity", - "PercentChangeInCapacity" - ], - "type": "string" - }, - "Status": { - "description": "Current status of the scaling policy. The scaling policy can be in force only when in an ACTIVE status. Scaling policies can be suspended for individual fleets. If the policy is suspended for a fleet, the policy status does not change.", - "enum": [ - "ACTIVE", - "UPDATE_REQUESTED", - "UPDATING", - "DELETE_REQUESTED", - "DELETING", - "DELETED", - "ERROR" - ], - "type": "string" - }, - "TargetConfiguration": { - "$ref": "#/definitions/TargetConfiguration", - "description": "An object that contains settings for a target-based scaling policy." - }, - "Threshold": { - "description": "Metric value used to trigger a scaling event.", - "type": "number" - }, - "UpdateStatus": { - "description": "The current status of the fleet's scaling policies in a requested fleet location. The status PENDING_UPDATE indicates that an update was requested for the fleet but has not yet been completed for the location.", - "enum": [ - "PENDING_UPDATE" - ], - "type": "string" - } - }, - "required": [ - "MetricName", - "Name" - ], - "type": "object" - }, - "ServerProcess": { - "additionalProperties": false, - "description": "A set of instructions for launching server processes on each instance in a fleet. Each instruction set identifies the location of the server executable, optional launch parameters, and the number of server processes with this configuration to maintain concurrently on the instance. Server process configurations make up a fleet's RuntimeConfiguration.", - "properties": { - "ConcurrentExecutions": { - "description": "The number of server processes that use this configuration to run concurrently on an instance.", - "minimum": 1, - "type": "integer" - }, - "LaunchPath": { - "description": "The location of the server executable in a custom game build or the name of the Realtime script file that contains the Init() function. Game builds and Realtime scripts are installed on instances at the root:\n\nWindows (for custom game builds only): C:\\game. Example: \"C:\\game\\MyGame\\server.exe\"\n\nLinux: /local/game. Examples: \"/local/game/MyGame/server.exe\" or \"/local/game/MyRealtimeScript.js\"", - "maxLength": 1024, - "minLength": 1, - "pattern": "^([Cc]:\\\\game\\S+|/local/game/\\S+)", - "type": "string" - }, - "Parameters": { - "description": "An optional list of parameters to pass to the server executable or Realtime script on launch.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ConcurrentExecutions", - "LaunchPath" - ], - "type": "object" - }, - "TargetConfiguration": { - "additionalProperties": false, - "description": "Settings for a target-based scaling policy. A target-based policy tracks a particular fleet metric specifies a target value for the metric. As player usage changes, the policy triggers Amazon GameLift to adjust capacity so that the metric returns to the target value. The target configuration specifies settings as needed for the target based policy, including the target value.", - "properties": { - "TargetValue": { - "description": "Desired value to use with a target-based scaling policy. The value must be relevant for whatever metric the scaling policy is using. For example, in a policy using the metric PercentAvailableGameSessions, the target value should be the preferred size of the fleet's buffer (the percent of capacity that should be idle and ready for new game sessions).", - "type": "number" - } - }, - "required": [ - "TargetValue" - ], - "type": "object" - } - }, - "deprecatedProperties": [ - "/properties/LogPaths", - "/properties/ServerLaunchParameters", - "/properties/ServerLaunchPath" - ], - "description": "The AWS::GameLift::Fleet resource creates an Amazon GameLift (GameLift) fleet to host game servers. A fleet is a set of EC2 or Anywhere instances, each of which can host multiple game sessions.", - "handlers": { - "create": { - "permissions": [ - "gamelift:CreateFleet", - "gamelift:DescribeFleetAttributes", - "gamelift:DescribeFleetLocationAttributes", - "gamelift:UpdateFleetCapacity", - "gamelift:DescribeFleetLocationCapacity", - "gamelift:PutScalingPolicy", - "gamelift:DescribeScalingPolicies" - ] - }, - "delete": { - "permissions": [ - "gamelift:DeleteFleet", - "gamelift:DescribeFleetLocationCapacity", - "gamelift:DescribeScalingPolicies", - "gamelift:DeleteScalingPolicy" - ] - }, - "list": { - "permissions": [ - "gamelift:ListFleets" - ] - }, - "read": { - "permissions": [ - "gamelift:DescribeFleetAttributes", - "gamelift:DescribeFleetLocationAttributes", - "gamelift:DescribeFleetCapacity", - "gamelift:DescribeFleetPortSettings", - "gamelift:DescribeFleetUtilization", - "gamelift:DescribeRuntimeConfiguration", - "gamelift:DescribeEC2InstanceLimits", - "gamelift:DescribeFleetEvents", - "gamelift:DescribeScalingPolicies" - ] - }, - "update": { - "permissions": [ - "gamelift:UpdateFleetAttributes", - "gamelift:CreateFleetLocations", - "gamelift:DeleteFleetLocations", - "gamelift:UpdateFleetCapacity", - "gamelift:UpdateFleetPortSettings", - "gamelift:UpdateRuntimeConfiguration", - "gamelift:DescribeFleetLocationCapacity", - "gamelift:DescribeFleetPortSettings", - "gamelift:DescribeFleetLocationAttributes", - "gamelift:PutScalingPolicy", - "gamelift:DescribeScalingPolicies", - "gamelift:DeleteScalingPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/FleetId" - ], - "properties": { - "AnywhereConfiguration": { - "$ref": "#/definitions/AnywhereConfiguration", - "description": "Configuration for Anywhere fleet." - }, - "ApplyCapacity": { - "description": "Determines whether to apply fleet or location capacities on fleet creation.", - "enum": [ - "ON_UPDATE", - "ON_CREATE_AND_UPDATE" - ], - "type": "string" - }, - "BuildId": { - "description": "A unique identifier for a build to be deployed on the new fleet. If you are deploying the fleet with a custom game build, you must specify this property. The build must have been successfully uploaded to Amazon GameLift and be in a READY status. This fleet setting cannot be changed once the fleet is created.", - "pattern": "^build-\\S+|^arn:.*:build/build-\\S+", - "type": "string" - }, - "CertificateConfiguration": { - "$ref": "#/definitions/CertificateConfiguration", - "description": "Indicates whether to generate a TLS/SSL certificate for the new fleet. TLS certificates are used for encrypting traffic between game clients and game servers running on GameLift. If this parameter is not set, certificate generation is disabled. This fleet setting cannot be changed once the fleet is created." - }, - "ComputeType": { - "description": "ComputeType to differentiate EC2 hardware managed by GameLift and Anywhere hardware managed by the customer.", - "enum": [ - "EC2", - "ANYWHERE" - ], - "type": "string" - }, - "Description": { - "description": "A human-readable description of a fleet.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "DesiredEC2Instances": { - "description": "[DEPRECATED] The number of EC2 instances that you want this fleet to host. When creating a new fleet, GameLift automatically sets this value to \"1\" and initiates a single instance. Once the fleet is active, update this value to trigger GameLift to add or remove instances from the fleet.", - "minimum": 0, - "type": "integer" - }, - "EC2InboundPermissions": { - "description": "A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift server.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/IpPermission" - }, - "maxItems": 50, - "type": "array" - }, - "EC2InstanceType": { - "description": "The name of an EC2 instance type that is supported in Amazon GameLift. A fleet instance type determines the computing resources of each instance in the fleet, including CPU, memory, storage, and networking capacity. Amazon GameLift supports the following EC2 instance types. See Amazon EC2 Instance Types for detailed descriptions.", - "pattern": "^.*..*$", - "type": "string" - }, - "FleetId": { - "description": "Unique fleet ID", - "pattern": "^fleet-\\S+", - "type": "string" - }, - "FleetType": { - "description": "Indicates whether to use On-Demand instances or Spot instances for this fleet. If empty, the default is ON_DEMAND. Both categories of instances use identical hardware and configurations based on the instance type selected for this fleet.", - "enum": [ - "ON_DEMAND", - "SPOT" - ], - "type": "string" - }, - "InstanceRoleARN": { - "description": "A unique identifier for an AWS IAM role that manages access to your AWS services. With an instance role ARN set, any application that runs on an instance in this fleet can assume the role, including install scripts, server processes, and daemons (background processes). Create a role or look up a role's ARN from the IAM dashboard in the AWS Management Console.", - "minLength": 1, - "pattern": "^arn:aws(-.*)?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", - "type": "string" - }, - "InstanceRoleCredentialsProvider": { - "description": "Credentials provider implementation that loads credentials from the Amazon EC2 Instance Metadata Service.", - "enum": [ - "SHARED_CREDENTIAL_FILE" - ], - "type": "string" - }, - "Locations": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LocationConfiguration" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "LogPaths": { - "description": "This parameter is no longer used. When hosting a custom game build, specify where Amazon GameLift should store log files using the Amazon GameLift server API call ProcessReady()", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "MaxSize": { - "description": "[DEPRECATED] The maximum value that is allowed for the fleet's instance count. When creating a new fleet, GameLift automatically sets this value to \"1\". Once the fleet is active, you can change this value.", - "minimum": 0, - "type": "integer" - }, - "MetricGroups": { - "description": "The name of an Amazon CloudWatch metric group. A metric group aggregates the metrics for all fleets in the group. Specify a string containing the metric group name. You can use an existing name or use a new name to create a new metric group. Currently, this parameter can have only one string.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 1, - "type": "array" - }, - "MinSize": { - "description": "[DEPRECATED] The minimum value allowed for the fleet's instance count. When creating a new fleet, GameLift automatically sets this value to \"0\". After the fleet is active, you can change this value.", - "minimum": 0, - "type": "integer" - }, - "Name": { - "description": "A descriptive label that is associated with a fleet. Fleet names do not need to be unique.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "NewGameSessionProtectionPolicy": { - "description": "A game session protection policy to apply to all game sessions hosted on instances in this fleet. When protected, active game sessions cannot be terminated during a scale-down event. If this parameter is not set, instances in this fleet default to no protection. You can change a fleet's protection policy to affect future game sessions on the fleet. You can also set protection for individual game sessions.", - "enum": [ - "FullProtection", - "NoProtection" - ], - "type": "string" - }, - "PeerVpcAwsAccountId": { - "description": "A unique identifier for the AWS account with the VPC that you want to peer your Amazon GameLift fleet with. You can find your account ID in the AWS Management Console under account settings.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "PeerVpcId": { - "description": "A unique identifier for a VPC with resources to be accessed by your Amazon GameLift fleet. The VPC must be in the same Region as your fleet. To look up a VPC ID, use the VPC Dashboard in the AWS Management Console.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^vpc-\\S+", - "type": "string" - }, - "ResourceCreationLimitPolicy": { - "$ref": "#/definitions/ResourceCreationLimitPolicy", - "description": "A policy that limits the number of game sessions an individual player can create over a span of time for this fleet." - }, - "RuntimeConfiguration": { - "$ref": "#/definitions/RuntimeConfiguration", - "description": "Instructions for launching server processes on each instance in the fleet. Server processes run either a custom game build executable or a Realtime script. The runtime configuration defines the server executables or launch script file, launch parameters, and the number of processes to run concurrently on each instance. When creating a fleet, the runtime configuration must have at least one server process configuration; otherwise the request fails with an invalid request exception.\n\nThis parameter is required unless the parameters ServerLaunchPath and ServerLaunchParameters are defined. Runtime configuration has replaced these parameters, but fleets that use them will continue to work." - }, - "ScalingPolicies": { - "description": "A list of rules that control how a fleet is scaled.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ScalingPolicy" - }, - "maxItems": 50, - "type": "array" - }, - "ScriptId": { - "description": "A unique identifier for a Realtime script to be deployed on a new Realtime Servers fleet. The script must have been successfully uploaded to Amazon GameLift. This fleet setting cannot be changed once the fleet is created.\n\nNote: It is not currently possible to use the !Ref command to reference a script created with a CloudFormation template for the fleet property ScriptId. Instead, use Fn::GetAtt Script.Arn or Fn::GetAtt Script.Id to retrieve either of these properties as input for ScriptId. Alternatively, enter a ScriptId string manually.", - "pattern": "^script-\\S+|^arn:.*:script/script-\\S+", - "type": "string" - }, - "ServerLaunchParameters": { - "description": "This parameter is no longer used but is retained for backward compatibility. Instead, specify server launch parameters in the RuntimeConfiguration parameter. A request must specify either a runtime configuration or values for both ServerLaunchParameters and ServerLaunchPath.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "ServerLaunchPath": { - "description": "This parameter is no longer used. Instead, specify a server launch path using the RuntimeConfiguration parameter. Requests that specify a server launch path and launch parameters instead of a runtime configuration will continue to work.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/FleetId" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", - "taggable": true, - "typeName": "AWS::GameLift::Fleet", - "writeOnlyProperties": [ - "/properties/ApplyCapacity" - ] -} +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplyCapacity", + "/properties/BuildId", + "/properties/CertificateConfiguration", + "/properties/EC2InstanceType", + "/properties/FleetType", + "/properties/InstanceRoleARN", + "/properties/InstanceRoleCredentialsProvider", + "/properties/LogPaths", + "/properties/PeerVpcAwsAccountId", + "/properties/PeerVpcId", + "/properties/ScriptId", + "/properties/ServerLaunchParameters", + "/properties/ServerLaunchPath", + "/properties/ComputeType" + ], + "definitions": { + "AnywhereConfiguration": { + "additionalProperties": false, + "description": "Configuration for Anywhere fleet.", + "properties": { + "Cost": { + "description": "Cost of compute can be specified on Anywhere Fleets to prioritize placement across Queue destinations based on Cost.", + "maxLength": 11, + "minLength": 1, + "pattern": "^\\d{1,5}(?:\\.\\d{1,5})?$", + "type": "string" + } + }, + "required": [ + "Cost" + ] + }, + "CertificateConfiguration": { + "additionalProperties": false, + "description": "Information about the use of a TLS/SSL certificate for a fleet. TLS certificate generation is enabled at the fleet level, with one certificate generated for the fleet. When this feature is enabled, the certificate can be retrieved using the GameLift Server SDK call GetInstanceCertificate. All instances in a fleet share the same certificate.", + "properties": { + "CertificateType": { + "enum": [ + "DISABLED", + "GENERATED" + ], + "type": "string" + } + }, + "required": [ + "CertificateType" + ], + "type": "object" + }, + "IpPermission": { + "additionalProperties": false, + "description": "A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift hosting resource. New game sessions that are started on the fleet are assigned an IP address/port number combination, which must fall into the fleet's allowed ranges. For fleets created with a custom game server, the ranges reflect the server's game session assignments. For Realtime Servers fleets, Amazon GameLift automatically opens two port ranges, one for TCP messaging and one for UDP, for use by the Realtime servers.", + "properties": { + "FromPort": { + "description": "A starting value for a range of allowed port numbers.", + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "IpRange": { + "description": "A range of allowed IP addresses. This value must be expressed in CIDR notation. Example: \"000.000.000.000/[subnet mask]\" or optionally the shortened version \"0.0.0.0/[subnet mask]\".", + "pattern": "(^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(/([0-9]|[1-2][0-9]|3[0-2]))$)", + "type": "string" + }, + "Protocol": { + "description": "The network communication protocol used by the fleet.", + "enum": [ + "TCP", + "UDP" + ], + "type": "string" + }, + "ToPort": { + "description": "An ending value for a range of allowed port numbers. Port numbers are end-inclusive. This value must be higher than FromPort.", + "maximum": 60000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "FromPort", + "IpRange", + "Protocol", + "ToPort" + ], + "type": "object" + }, + "Location": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9\\-]+", + "type": "string" + }, + "LocationCapacity": { + "additionalProperties": false, + "description": "Current resource capacity settings in a specified fleet or location. The location value might refer to a fleet's remote location or its home Region.", + "properties": { + "DesiredEC2Instances": { + "description": "The number of EC2 instances you want to maintain in the specified fleet location. This value must fall between the minimum and maximum size limits.", + "minimum": 0, + "type": "integer" + }, + "MaxSize": { + "description": "The maximum value that is allowed for the fleet's instance count for a location. When creating a new fleet, GameLift automatically sets this value to \"1\". Once the fleet is active, you can change this value.", + "minimum": 0, + "type": "integer" + }, + "MinSize": { + "description": "The minimum value allowed for the fleet's instance count for a location. When creating a new fleet, GameLift automatically sets this value to \"0\". After the fleet is active, you can change this value.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "DesiredEC2Instances", + "MinSize", + "MaxSize" + ], + "type": "object" + }, + "LocationConfiguration": { + "additionalProperties": false, + "description": "A remote location where a multi-location fleet can deploy EC2 instances for game hosting.", + "properties": { + "Location": { + "$ref": "#/definitions/Location" + }, + "LocationCapacity": { + "$ref": "#/definitions/LocationCapacity" + } + }, + "required": [ + "Location" + ], + "type": "object" + }, + "ResourceCreationLimitPolicy": { + "additionalProperties": false, + "description": "A policy that limits the number of game sessions a player can create on the same fleet. This optional policy gives game owners control over how players can consume available game server resources. A resource creation policy makes the following statement: \"An individual player can create a maximum number of new game sessions within a specified time period\".\n\nThe policy is evaluated when a player tries to create a new game session. For example, assume you have a policy of 10 new game sessions and a time period of 60 minutes. On receiving a CreateGameSession request, Amazon GameLift checks that the player (identified by CreatorId) has created fewer than 10 game sessions in the past 60 minutes.", + "properties": { + "NewGameSessionsPerCreator": { + "description": "The maximum number of game sessions that an individual can create during the policy period.", + "minimum": 0, + "type": "integer" + }, + "PolicyPeriodInMinutes": { + "description": "The time span used in evaluating the resource creation limit policy.", + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "RuntimeConfiguration": { + "additionalProperties": false, + "description": "A collection of server process configurations that describe the processes to run on each instance in a fleet. All fleets must have a runtime configuration. Each instance in the fleet maintains server processes as specified in the runtime configuration, launching new ones as existing processes end. Each instance regularly checks for an updated runtime configuration makes adjustments as called for.\n\nThe runtime configuration enables the instances in a fleet to run multiple processes simultaneously. Potential scenarios are as follows: (1) Run multiple processes of a single game server executable to maximize usage of your hosting resources. (2) Run one or more processes of different executables, such as your game server and a metrics tracking program. (3) Run multiple processes of a single game server but with different launch parameters, for example to run one process on each instance in debug mode.\n\nAn Amazon GameLift instance is limited to 50 processes running simultaneously. A runtime configuration must specify fewer than this limit. To calculate the total number of processes specified in a runtime configuration, add the values of the ConcurrentExecutions parameter for each ServerProcess object in the runtime configuration.", + "properties": { + "GameSessionActivationTimeoutSeconds": { + "description": "The maximum amount of time (in seconds) that a game session can remain in status ACTIVATING. If the game session is not active before the timeout, activation is terminated and the game session status is changed to TERMINATED.", + "maximum": 600, + "minimum": 1, + "type": "integer" + }, + "MaxConcurrentGameSessionActivations": { + "description": "The maximum number of game sessions with status ACTIVATING to allow on an instance simultaneously. This setting limits the amount of instance resources that can be used for new game activations at any one time.", + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "ServerProcesses": { + "description": "A collection of server process configurations that describe which server processes to run on each instance in a fleet.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ServerProcess" + }, + "maxItems": 50, + "type": "array" + } + }, + "type": "object" + }, + "ScalingPolicy": { + "additionalProperties": false, + "description": "Rule that controls how a fleet is scaled. Scaling policies are uniquely identified by the combination of name and fleet ID.", + "properties": { + "ComparisonOperator": { + "description": "Comparison operator to use when measuring a metric against the threshold value.", + "enum": [ + "GreaterThanOrEqualToThreshold", + "GreaterThanThreshold", + "LessThanThreshold", + "LessThanOrEqualToThreshold" + ], + "type": "string" + }, + "EvaluationPeriods": { + "description": "Length of time (in minutes) the metric must be at or beyond the threshold before a scaling event is triggered.", + "minimum": 1, + "type": "integer" + }, + "Location": { + "$ref": "#/definitions/Location" + }, + "MetricName": { + "description": "Name of the Amazon GameLift-defined metric that is used to trigger a scaling adjustment.", + "enum": [ + "ActivatingGameSessions", + "ActiveGameSessions", + "ActiveInstances", + "AvailableGameSessions", + "AvailablePlayerSessions", + "CurrentPlayerSessions", + "IdleInstances", + "PercentAvailableGameSessions", + "PercentIdleInstances", + "QueueDepth", + "WaitTime", + "ConcurrentActivatableGameSessions" + ], + "type": "string" + }, + "Name": { + "description": "A descriptive label that is associated with a fleet's scaling policy. Policy names do not need to be unique.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "PolicyType": { + "description": "The type of scaling policy to create. For a target-based policy, set the parameter MetricName to 'PercentAvailableGameSessions' and specify a TargetConfiguration. For a rule-based policy set the following parameters: MetricName, ComparisonOperator, Threshold, EvaluationPeriods, ScalingAdjustmentType, and ScalingAdjustment.", + "enum": [ + "RuleBased", + "TargetBased" + ], + "type": "string" + }, + "ScalingAdjustment": { + "description": "Amount of adjustment to make, based on the scaling adjustment type.", + "type": "integer" + }, + "ScalingAdjustmentType": { + "description": "The type of adjustment to make to a fleet's instance count.", + "enum": [ + "ChangeInCapacity", + "ExactCapacity", + "PercentChangeInCapacity" + ], + "type": "string" + }, + "Status": { + "description": "Current status of the scaling policy. The scaling policy can be in force only when in an ACTIVE status. Scaling policies can be suspended for individual fleets. If the policy is suspended for a fleet, the policy status does not change.", + "enum": [ + "ACTIVE", + "UPDATE_REQUESTED", + "UPDATING", + "DELETE_REQUESTED", + "DELETING", + "DELETED", + "ERROR" + ], + "type": "string" + }, + "TargetConfiguration": { + "$ref": "#/definitions/TargetConfiguration", + "description": "An object that contains settings for a target-based scaling policy." + }, + "Threshold": { + "description": "Metric value used to trigger a scaling event.", + "type": "number" + }, + "UpdateStatus": { + "description": "The current status of the fleet's scaling policies in a requested fleet location. The status PENDING_UPDATE indicates that an update was requested for the fleet but has not yet been completed for the location.", + "enum": [ + "PENDING_UPDATE" + ], + "type": "string" + } + }, + "required": [ + "MetricName", + "Name" + ], + "type": "object" + }, + "ServerProcess": { + "additionalProperties": false, + "description": "A set of instructions for launching server processes on each instance in a fleet. Each instruction set identifies the location of the server executable, optional launch parameters, and the number of server processes with this configuration to maintain concurrently on the instance. Server process configurations make up a fleet's RuntimeConfiguration.", + "properties": { + "ConcurrentExecutions": { + "description": "The number of server processes that use this configuration to run concurrently on an instance.", + "minimum": 1, + "type": "integer" + }, + "LaunchPath": { + "description": "The location of the server executable in a custom game build or the name of the Realtime script file that contains the Init() function. Game builds and Realtime scripts are installed on instances at the root:\n\nWindows (for custom game builds only): C:\\game. Example: \"C:\\game\\MyGame\\server.exe\"\n\nLinux: /local/game. Examples: \"/local/game/MyGame/server.exe\" or \"/local/game/MyRealtimeScript.js\"", + "maxLength": 1024, + "minLength": 1, + "pattern": "^([Cc]:\\\\game\\S+|/local/game/\\S+)", + "type": "string" + }, + "Parameters": { + "description": "An optional list of parameters to pass to the server executable or Realtime script on launch.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ConcurrentExecutions", + "LaunchPath" + ], + "type": "object" + }, + "TargetConfiguration": { + "additionalProperties": false, + "description": "Settings for a target-based scaling policy. A target-based policy tracks a particular fleet metric specifies a target value for the metric. As player usage changes, the policy triggers Amazon GameLift to adjust capacity so that the metric returns to the target value. The target configuration specifies settings as needed for the target based policy, including the target value.", + "properties": { + "TargetValue": { + "description": "Desired value to use with a target-based scaling policy. The value must be relevant for whatever metric the scaling policy is using. For example, in a policy using the metric PercentAvailableGameSessions, the target value should be the preferred size of the fleet's buffer (the percent of capacity that should be idle and ready for new game sessions).", + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/LogPaths", + "/properties/ServerLaunchParameters", + "/properties/ServerLaunchPath" + ], + "description": "The AWS::GameLift::Fleet resource creates an Amazon GameLift (GameLift) fleet to host game servers. A fleet is a set of EC2 or Anywhere instances, each of which can host multiple game sessions.", + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateFleet", + "gamelift:DescribeFleetAttributes", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:UpdateFleetCapacity", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:PutScalingPolicy", + "gamelift:DescribeScalingPolicies" + ] + }, + "delete": { + "permissions": [ + "gamelift:DeleteFleet", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeScalingPolicies", + "gamelift:DeleteScalingPolicy" + ] + }, + "list": { + "permissions": [ + "gamelift:ListFleets" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeFleetAttributes", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:DescribeFleetCapacity", + "gamelift:DescribeFleetPortSettings", + "gamelift:DescribeFleetUtilization", + "gamelift:DescribeRuntimeConfiguration", + "gamelift:DescribeEC2InstanceLimits", + "gamelift:DescribeFleetEvents", + "gamelift:DescribeScalingPolicies" + ] + }, + "update": { + "permissions": [ + "gamelift:UpdateFleetAttributes", + "gamelift:CreateFleetLocations", + "gamelift:DeleteFleetLocations", + "gamelift:UpdateFleetCapacity", + "gamelift:UpdateFleetPortSettings", + "gamelift:UpdateRuntimeConfiguration", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeFleetPortSettings", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:PutScalingPolicy", + "gamelift:DescribeScalingPolicies", + "gamelift:DeleteScalingPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/FleetId" + ], + "properties": { + "AnywhereConfiguration": { + "$ref": "#/definitions/AnywhereConfiguration", + "description": "Configuration for Anywhere fleet." + }, + "ApplyCapacity": { + "description": "Determines whether to apply fleet or location capacities on fleet creation.", + "enum": [ + "ON_UPDATE", + "ON_CREATE_AND_UPDATE" + ], + "type": "string" + }, + "BuildId": { + "description": "A unique identifier for a build to be deployed on the new fleet. If you are deploying the fleet with a custom game build, you must specify this property. The build must have been successfully uploaded to Amazon GameLift and be in a READY status. This fleet setting cannot be changed once the fleet is created.", + "pattern": "^build-\\S+|^arn:.*:build/build-\\S+", + "type": "string" + }, + "CertificateConfiguration": { + "$ref": "#/definitions/CertificateConfiguration", + "description": "Indicates whether to generate a TLS/SSL certificate for the new fleet. TLS certificates are used for encrypting traffic between game clients and game servers running on GameLift. If this parameter is not set, certificate generation is disabled. This fleet setting cannot be changed once the fleet is created." + }, + "ComputeType": { + "description": "ComputeType to differentiate EC2 hardware managed by GameLift and Anywhere hardware managed by the customer.", + "enum": [ + "EC2", + "ANYWHERE" + ], + "type": "string" + }, + "Description": { + "description": "A human-readable description of a fleet.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "DesiredEC2Instances": { + "description": "[DEPRECATED] The number of EC2 instances that you want this fleet to host. When creating a new fleet, GameLift automatically sets this value to \"1\" and initiates a single instance. Once the fleet is active, update this value to trigger GameLift to add or remove instances from the fleet.", + "minimum": 0, + "type": "integer" + }, + "EC2InboundPermissions": { + "description": "A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift server.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpPermission" + }, + "maxItems": 50, + "type": "array" + }, + "EC2InstanceType": { + "description": "The name of an EC2 instance type that is supported in Amazon GameLift. A fleet instance type determines the computing resources of each instance in the fleet, including CPU, memory, storage, and networking capacity. Amazon GameLift supports the following EC2 instance types. See Amazon EC2 Instance Types for detailed descriptions.", + "pattern": "^.*..*$", + "type": "string" + }, + "FleetId": { + "description": "Unique fleet ID", + "pattern": "^fleet-\\S+", + "type": "string" + }, + "FleetType": { + "description": "Indicates whether to use On-Demand instances or Spot instances for this fleet. If empty, the default is ON_DEMAND. Both categories of instances use identical hardware and configurations based on the instance type selected for this fleet.", + "enum": [ + "ON_DEMAND", + "SPOT" + ], + "type": "string" + }, + "InstanceRoleARN": { + "description": "A unique identifier for an AWS IAM role that manages access to your AWS services. With an instance role ARN set, any application that runs on an instance in this fleet can assume the role, including install scripts, server processes, and daemons (background processes). Create a role or look up a role's ARN from the IAM dashboard in the AWS Management Console.", + "minLength": 1, + "pattern": "^arn:aws(-.*)?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "InstanceRoleCredentialsProvider": { + "description": "Credentials provider implementation that loads credentials from the Amazon EC2 Instance Metadata Service.", + "enum": [ + "SHARED_CREDENTIAL_FILE" + ], + "type": "string" + }, + "Locations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LocationConfiguration" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "LogPaths": { + "description": "This parameter is no longer used. When hosting a custom game build, specify where Amazon GameLift should store log files using the Amazon GameLift server API call ProcessReady()", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "MaxSize": { + "description": "[DEPRECATED] The maximum value that is allowed for the fleet's instance count. When creating a new fleet, GameLift automatically sets this value to \"1\". Once the fleet is active, you can change this value.", + "minimum": 0, + "type": "integer" + }, + "MetricGroups": { + "description": "The name of an Amazon CloudWatch metric group. A metric group aggregates the metrics for all fleets in the group. Specify a string containing the metric group name. You can use an existing name or use a new name to create a new metric group. Currently, this parameter can have only one string.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 1, + "type": "array" + }, + "MinSize": { + "description": "[DEPRECATED] The minimum value allowed for the fleet's instance count. When creating a new fleet, GameLift automatically sets this value to \"0\". After the fleet is active, you can change this value.", + "minimum": 0, + "type": "integer" + }, + "Name": { + "description": "A descriptive label that is associated with a fleet. Fleet names do not need to be unique.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "NewGameSessionProtectionPolicy": { + "description": "A game session protection policy to apply to all game sessions hosted on instances in this fleet. When protected, active game sessions cannot be terminated during a scale-down event. If this parameter is not set, instances in this fleet default to no protection. You can change a fleet's protection policy to affect future game sessions on the fleet. You can also set protection for individual game sessions.", + "enum": [ + "FullProtection", + "NoProtection" + ], + "type": "string" + }, + "PeerVpcAwsAccountId": { + "description": "A unique identifier for the AWS account with the VPC that you want to peer your Amazon GameLift fleet with. You can find your account ID in the AWS Management Console under account settings.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "PeerVpcId": { + "description": "A unique identifier for a VPC with resources to be accessed by your Amazon GameLift fleet. The VPC must be in the same Region as your fleet. To look up a VPC ID, use the VPC Dashboard in the AWS Management Console.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^vpc-\\S+", + "type": "string" + }, + "ResourceCreationLimitPolicy": { + "$ref": "#/definitions/ResourceCreationLimitPolicy", + "description": "A policy that limits the number of game sessions an individual player can create over a span of time for this fleet." + }, + "RuntimeConfiguration": { + "$ref": "#/definitions/RuntimeConfiguration", + "description": "Instructions for launching server processes on each instance in the fleet. Server processes run either a custom game build executable or a Realtime script. The runtime configuration defines the server executables or launch script file, launch parameters, and the number of processes to run concurrently on each instance. When creating a fleet, the runtime configuration must have at least one server process configuration; otherwise the request fails with an invalid request exception.\n\nThis parameter is required unless the parameters ServerLaunchPath and ServerLaunchParameters are defined. Runtime configuration has replaced these parameters, but fleets that use them will continue to work." + }, + "ScalingPolicies": { + "description": "A list of rules that control how a fleet is scaled.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ScalingPolicy" + }, + "maxItems": 50, + "type": "array" + }, + "ScriptId": { + "description": "A unique identifier for a Realtime script to be deployed on a new Realtime Servers fleet. The script must have been successfully uploaded to Amazon GameLift. This fleet setting cannot be changed once the fleet is created.\n\nNote: It is not currently possible to use the !Ref command to reference a script created with a CloudFormation template for the fleet property ScriptId. Instead, use Fn::GetAtt Script.Arn or Fn::GetAtt Script.Id to retrieve either of these properties as input for ScriptId. Alternatively, enter a ScriptId string manually.", + "pattern": "^script-\\S+|^arn:.*:script/script-\\S+", + "type": "string" + }, + "ServerLaunchParameters": { + "description": "This parameter is no longer used but is retained for backward compatibility. Instead, specify server launch parameters in the RuntimeConfiguration parameter. A request must specify either a runtime configuration or values for both ServerLaunchParameters and ServerLaunchPath.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "ServerLaunchPath": { + "description": "This parameter is no longer used. Instead, specify a server launch path using the RuntimeConfiguration parameter. Requests that specify a server launch path and launch parameters instead of a runtime configuration will continue to work.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/FleetId" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "taggable": true, + "typeName": "AWS::GameLift::Fleet", + "writeOnlyProperties": [ + "/properties/ApplyCapacity" + ] +} diff --git a/src/schema/aws-gamelift-gameservergroup.json b/src/schema/aws-gamelift-gameservergroup.json index ffb32560..d778386f 100644 --- a/src/schema/aws-gamelift-gameservergroup.json +++ b/src/schema/aws-gamelift-gameservergroup.json @@ -1,445 +1,456 @@ -{ - "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", - "additionalProperties": false, - "definitions": { - "AutoScalingGroupArn": { - "description": "A generated unique ID for the EC2 Auto Scaling group that is associated with this game server group.", - "maxLength": 256, - "minLength": 0, - "pattern": "[ -\ud7ff\ue000-\ufffd\ud800\udc00-\udbff\udfff\r\n\t]*", - "type": "string" - }, - "AutoScalingPolicy": { - "additionalProperties": false, - "description": "Configuration settings to define a scaling policy for the Auto Scaling group that is optimized for game hosting. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource.", - "properties": { - "EstimatedInstanceWarmup": { - "$ref": "#/definitions/EstimatedInstanceWarmup" - }, - "TargetTrackingConfiguration": { - "$ref": "#/definitions/TargetTrackingConfiguration" - } - }, - "required": [ - "TargetTrackingConfiguration" - ], - "type": "object" - }, - "BalancingStrategy": { - "description": "The fallback balancing method to use for the game server group when Spot Instances in a Region become unavailable or are not viable for game hosting.", - "enum": [ - "SPOT_ONLY", - "SPOT_PREFERRED", - "ON_DEMAND_ONLY" - ], - "type": "string" - }, - "CreationTime": { - "description": "A timestamp that indicates when this data object was created.", - "type": "string" - }, - "DeleteOption": { - "description": "The type of delete to perform.", - "enum": [ - "SAFE_DELETE", - "FORCE_DELETE", - "RETAIN" - ], - "type": "string" - }, - "EstimatedInstanceWarmup": { - "description": "Length of time, in seconds, it takes for a new instance to start new game server processes and register with GameLift FleetIQ.", - "type": "number" - }, - "GameServerGroup": { - "additionalProperties": false, - "description": "Properties that describe a game server group resource. A game server group manages certain properties of a corresponding EC2 Auto Scaling group.", - "properties": { - "AutoScalingGroupArn": { - "$ref": "#/definitions/AutoScalingGroupArn" - }, - "BalancingStrategy": { - "$ref": "#/definitions/BalancingStrategy" - }, - "CreationTime": { - "$ref": "#/definitions/CreationTime" - }, - "GameServerGroupArn": { - "$ref": "#/definitions/GameServerGroupArn" - }, - "GameServerGroupName": { - "$ref": "#/definitions/GameServerGroupName" - }, - "GameServerProtectionPolicy": { - "$ref": "#/definitions/GameServerProtectionPolicy" - }, - "InstanceDefinitions": { - "$ref": "#/definitions/InstanceDefinitions" - }, - "LastUpdatedTime": { - "$ref": "#/definitions/LastUpdatedTime" - }, - "RoleArn": { - "$ref": "#/definitions/RoleArn" - }, - "Status": { - "$ref": "#/definitions/Status" - }, - "StatusReason": { - "$ref": "#/definitions/StatusReason" - }, - "SuspendedActions": { - "$ref": "#/definitions/SuspendedActions" - } - }, - "type": "object" - }, - "GameServerGroupArn": { - "description": "A generated unique ID for the game server group.", - "maxLength": 256, - "minLength": 1, - "pattern": "^arn:.*:gameservergroup\\/[a-zA-Z0-9-\\.]*", - "type": "string" - }, - "GameServerGroupName": { - "description": "An identifier for the new game server group.", - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z0-9-\\.]+", - "type": "string" - }, - "GameServerProtectionPolicy": { - "description": "A flag that indicates whether instances in the game server group are protected from early termination.", - "enum": [ - "NO_PROTECTION", - "FULL_PROTECTION" - ], - "type": "string" - }, - "InstanceDefinition": { - "additionalProperties": false, - "description": "An allowed instance type for your game server group.", - "properties": { - "InstanceType": { - "$ref": "#/definitions/InstanceType" - }, - "WeightedCapacity": { - "$ref": "#/definitions/WeightedCapacity" - } - }, - "required": [ - "InstanceType" - ], - "type": "object" - }, - "InstanceDefinitions": { - "description": "A set of EC2 instance types to use when creating instances in the group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/InstanceDefinition" - }, - "maxItems": 20, - "minItems": 2, - "type": "array" - }, - "InstanceType": { - "description": "An EC2 instance type designation.", - "type": "string" - }, - "LastUpdatedTime": { - "description": "A timestamp that indicates when this game server group was last updated.", - "type": "string" - }, - "LaunchTemplate": { - "additionalProperties": false, - "description": "The EC2 launch template that contains configuration settings and game server code to be deployed to all instances in the game server group. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource.", - "properties": { - "LaunchTemplateId": { - "$ref": "#/definitions/LaunchTemplateId" - }, - "LaunchTemplateName": { - "$ref": "#/definitions/LaunchTemplateName" - }, - "Version": { - "$ref": "#/definitions/Version" - } - }, - "type": "object" - }, - "LaunchTemplateId": { - "description": "A unique identifier for an existing EC2 launch template.", - "type": "string" - }, - "LaunchTemplateName": { - "description": "A readable identifier for an existing EC2 launch template.", - "type": "string" - }, - "MaxSize": { - "description": "The maximum number of instances allowed in the EC2 Auto Scaling group. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource.", - "minimum": 1, - "type": "number" - }, - "MinSize": { - "description": "The minimum number of instances allowed in the EC2 Auto Scaling group. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource.", - "minimum": 0, - "type": "number" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling groups.", - "maxLength": 256, - "minLength": 1, - "pattern": "^arn:.*:role\\/[\\w+=,.@-]+", - "type": "string" - }, - "Status": { - "description": "The current status of the game server group.", - "enum": [ - "NEW", - "ACTIVATING", - "ACTIVE", - "DELETE_SCHEDULED", - "DELETING", - "DELETED", - "ERROR" - ], - "type": "string" - }, - "StatusReason": { - "description": "Additional information about the current game server group status.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "SuspendedActions": { - "items": { - "enum": [ - "REPLACE_INSTANCE_TYPES" - ], - "type": "string" - }, - "type": "array" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key for a developer-defined key:value pair for tagging an AWS resource.", - "type": "string" - }, - "Value": { - "description": "The value for a developer-defined key:value pair for tagging an AWS resource.", - "type": "string" - } - }, - "type": "object" - }, - "Tags": { - "description": "A list of labels to assign to the new game server group resource. Updating game server group tags with CloudFormation will not take effect. Please update this property using AWS GameLift APIs instead.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TargetTrackingConfiguration": { - "additionalProperties": false, - "description": "Settings for a target-based scaling policy applied to Auto Scaling group.", - "properties": { - "TargetValue": { - "$ref": "#/definitions/TargetValue" - } - }, - "required": [ - "TargetValue" - ], - "type": "object" - }, - "TargetValue": { - "description": "Desired value to use with a game server group target-based scaling policy.", - "type": "number" - }, - "Version": { - "description": "The version of the EC2 launch template to use.", - "type": "string" - }, - "VpcSubnets": { - "description": "A list of virtual private cloud (VPC) subnets to use with instances in the game server group. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource.", - "insertionOrder": false, - "items": { - "maxLength": 24, - "minLength": 15, - "pattern": "^subnet-[0-9a-z]+$", - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - }, - "WeightedCapacity": { - "description": "Instance weighting that indicates how much this instance type contributes to the total capacity of a game server group.", - "pattern": "^[\\u0031-\\u0039][\\u0030-\\u0039]{0,2}$", - "type": "string" - } - }, - "description": "The AWS::GameLift::GameServerGroup resource creates an Amazon GameLift (GameLift) GameServerGroup.", - "handlers": { - "create": { - "permissions": [ - "gamelift:CreateGameServerGroup", - "gamelift:TagResource", - "gamelift:DescribeGameServerGroup", - "iam:assumeRole", - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeSubnets", - "ec2:RunInstances", - "ec2:CreateTags", - "ec2:DescribeLaunchTemplateVersions", - "autoscaling:CreateAutoScalingGroup", - "autoscaling:DescribeLifecycleHooks", - "autoscaling:DescribeNotificationConfigurations", - "autoscaling:CreateAutoScalingGroup", - "autoscaling:CreateOrUpdateTags", - "autoscaling:DescribeAutoScalingGroups", - "autoscaling:ExitStandby", - "autoscaling:PutLifecycleHook", - "autoscaling:PutScalingPolicy", - "autoscaling:ResumeProcesses", - "autoscaling:SetInstanceProtection", - "autoscaling:UpdateAutoScalingGroup", - "events:PutRule", - "events:PutTargets" - ] - }, - "delete": { - "permissions": [ - "gamelift:DeleteGameServerGroup", - "gamelift:DescribeGameServerGroup", - "iam:assumeRole", - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeSubnets", - "ec2:DescribeLaunchTemplateVersions", - "autoscaling:CreateAutoScalingGroup", - "autoscaling:DescribeLifecycleHooks", - "autoscaling:DescribeNotificationConfigurations", - "autoscaling:DescribeAutoScalingGroups", - "autoscaling:ExitStandby", - "autoscaling:PutLifecycleHook", - "autoscaling:PutScalingPolicy", - "autoscaling:ResumeProcesses", - "autoscaling:SetInstanceProtection", - "autoscaling:UpdateAutoScalingGroup", - "autoscaling:DeleteAutoScalingGroup", - "events:PutRule", - "events:PutTargets" - ] - }, - "list": { - "permissions": [ - "gamelift:ListGameServerGroups" - ] - }, - "read": { - "permissions": [ - "gamelift:DescribeGameServerGroup" - ] - }, - "update": { - "permissions": [ - "gamelift:UpdateGameServerGroup", - "iam:assumeRole", - "iam:PassRole", - "autoscaling:DescribeAutoScalingGroups", - "autoscaling:UpdateAutoScalingGroup", - "autoscaling:SetInstanceProtection" - ] - } - }, - "primaryIdentifier": [ - "/properties/GameServerGroupArn" - ], - "properties": { - "AutoScalingGroupArn": { - "$ref": "#/definitions/AutoScalingGroupArn", - "description": "A generated unique ID for the EC2 Auto Scaling group that is associated with this game server group." - }, - "AutoScalingPolicy": { - "$ref": "#/definitions/AutoScalingPolicy", - "description": "Configuration settings to define a scaling policy for the Auto Scaling group that is optimized for game hosting. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource." - }, - "BalancingStrategy": { - "$ref": "#/definitions/BalancingStrategy", - "description": "The fallback balancing method to use for the game server group when Spot Instances in a Region become unavailable or are not viable for game hosting." - }, - "DeleteOption": { - "$ref": "#/definitions/DeleteOption", - "description": "The type of delete to perform." - }, - "GameServerGroupArn": { - "$ref": "#/definitions/GameServerGroupArn", - "description": "A generated unique ID for the game server group." - }, - "GameServerGroupName": { - "$ref": "#/definitions/GameServerGroupName", - "description": "An identifier for the new game server group." - }, - "GameServerProtectionPolicy": { - "$ref": "#/definitions/GameServerProtectionPolicy", - "description": "A flag that indicates whether instances in the game server group are protected from early termination." - }, - "InstanceDefinitions": { - "$ref": "#/definitions/InstanceDefinitions", - "description": "A set of EC2 instance types to use when creating instances in the group." - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplate", - "description": "The EC2 launch template that contains configuration settings and game server code to be deployed to all instances in the game server group. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource." - }, - "MaxSize": { - "$ref": "#/definitions/MaxSize", - "description": "The maximum number of instances allowed in the EC2 Auto Scaling group. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource." - }, - "MinSize": { - "$ref": "#/definitions/MinSize", - "description": "The minimum number of instances allowed in the EC2 Auto Scaling group. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource." - }, - "RoleArn": { - "$ref": "#/definitions/RoleArn", - "description": "The Amazon Resource Name (ARN) for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling groups." - }, - "Tags": { - "$ref": "#/definitions/Tags", - "description": "A list of labels to assign to the new game server group resource. Updating game server group tags with CloudFormation will not take effect. Please update this property using AWS GameLift APIs instead." - }, - "VpcSubnets": { - "$ref": "#/definitions/VpcSubnets", - "description": "A list of virtual private cloud (VPC) subnets to use with instances in the game server group. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource." - } - }, - "readOnlyProperties": [ - "/properties/GameServerGroupArn", - "/properties/AutoScalingGroupArn" - ], - "required": [ - "GameServerGroupName", - "InstanceDefinitions", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", - "taggable": true, - "typeName": "AWS::GameLift::GameServerGroup", - "writeOnlyProperties": [ - "/properties/DeleteOption", - "/properties/LaunchTemplate", - "/properties/MinSize", - "/properties/MaxSize", - "/properties/AutoScalingPolicy", - "/properties/VpcSubnets", - "/properties/Tags" - ] -} +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "definitions": { + "AutoScalingGroupArn": { + "description": "A generated unique ID for the EC2 Auto Scaling group that is associated with this game server group.", + "maxLength": 256, + "minLength": 0, + "pattern": "[ -\ud7ff\ue000-\ufffd\ud800\udc00-\udbff\udfff\r\n\t]*", + "type": "string" + }, + "AutoScalingPolicy": { + "additionalProperties": false, + "description": "Configuration settings to define a scaling policy for the Auto Scaling group that is optimized for game hosting. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource.", + "properties": { + "EstimatedInstanceWarmup": { + "$ref": "#/definitions/EstimatedInstanceWarmup" + }, + "TargetTrackingConfiguration": { + "$ref": "#/definitions/TargetTrackingConfiguration" + } + }, + "required": [ + "TargetTrackingConfiguration" + ], + "type": "object" + }, + "BalancingStrategy": { + "description": "The fallback balancing method to use for the game server group when Spot Instances in a Region become unavailable or are not viable for game hosting.", + "enum": [ + "SPOT_ONLY", + "SPOT_PREFERRED", + "ON_DEMAND_ONLY" + ], + "type": "string" + }, + "CreationTime": { + "description": "A timestamp that indicates when this data object was created.", + "type": "string" + }, + "DeleteOption": { + "description": "The type of delete to perform.", + "enum": [ + "SAFE_DELETE", + "FORCE_DELETE", + "RETAIN" + ], + "type": "string" + }, + "EstimatedInstanceWarmup": { + "description": "Length of time, in seconds, it takes for a new instance to start new game server processes and register with GameLift FleetIQ.", + "type": "number" + }, + "GameServerGroup": { + "additionalProperties": false, + "description": "Properties that describe a game server group resource. A game server group manages certain properties of a corresponding EC2 Auto Scaling group.", + "properties": { + "AutoScalingGroupArn": { + "$ref": "#/definitions/AutoScalingGroupArn" + }, + "BalancingStrategy": { + "$ref": "#/definitions/BalancingStrategy" + }, + "CreationTime": { + "$ref": "#/definitions/CreationTime" + }, + "GameServerGroupArn": { + "$ref": "#/definitions/GameServerGroupArn" + }, + "GameServerGroupName": { + "$ref": "#/definitions/GameServerGroupName" + }, + "GameServerProtectionPolicy": { + "$ref": "#/definitions/GameServerProtectionPolicy" + }, + "InstanceDefinitions": { + "$ref": "#/definitions/InstanceDefinitions" + }, + "LastUpdatedTime": { + "$ref": "#/definitions/LastUpdatedTime" + }, + "RoleArn": { + "$ref": "#/definitions/RoleArn" + }, + "Status": { + "$ref": "#/definitions/Status" + }, + "StatusReason": { + "$ref": "#/definitions/StatusReason" + }, + "SuspendedActions": { + "$ref": "#/definitions/SuspendedActions" + } + }, + "type": "object" + }, + "GameServerGroupArn": { + "description": "A generated unique ID for the game server group.", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:.*:gameservergroup\\/[a-zA-Z0-9-\\.]*", + "type": "string" + }, + "GameServerGroupName": { + "description": "An identifier for the new game server group.", + "maxLength": 128, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\.]+", + "type": "string" + }, + "GameServerProtectionPolicy": { + "description": "A flag that indicates whether instances in the game server group are protected from early termination.", + "enum": [ + "NO_PROTECTION", + "FULL_PROTECTION" + ], + "type": "string" + }, + "InstanceDefinition": { + "additionalProperties": false, + "description": "An allowed instance type for your game server group.", + "properties": { + "InstanceType": { + "$ref": "#/definitions/InstanceType" + }, + "WeightedCapacity": { + "$ref": "#/definitions/WeightedCapacity" + } + }, + "required": [ + "InstanceType" + ], + "type": "object" + }, + "InstanceDefinitions": { + "description": "A set of EC2 instance types to use when creating instances in the group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InstanceDefinition" + }, + "maxItems": 20, + "minItems": 2, + "type": "array" + }, + "InstanceType": { + "description": "An EC2 instance type designation.", + "type": "string" + }, + "LastUpdatedTime": { + "description": "A timestamp that indicates when this game server group was last updated.", + "type": "string" + }, + "LaunchTemplate": { + "additionalProperties": false, + "description": "The EC2 launch template that contains configuration settings and game server code to be deployed to all instances in the game server group. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource.", + "properties": { + "LaunchTemplateId": { + "$ref": "#/definitions/LaunchTemplateId" + }, + "LaunchTemplateName": { + "$ref": "#/definitions/LaunchTemplateName" + }, + "Version": { + "$ref": "#/definitions/Version" + } + }, + "type": "object" + }, + "LaunchTemplateId": { + "description": "A unique identifier for an existing EC2 launch template.", + "type": "string" + }, + "LaunchTemplateName": { + "description": "A readable identifier for an existing EC2 launch template.", + "type": "string" + }, + "MaxSize": { + "description": "The maximum number of instances allowed in the EC2 Auto Scaling group. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource.", + "minimum": 1, + "type": "number" + }, + "MinSize": { + "description": "The minimum number of instances allowed in the EC2 Auto Scaling group. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource.", + "minimum": 0, + "type": "number" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling groups.", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:.*:role\\/[\\w+=,.@-]+", + "type": "string" + }, + "Status": { + "description": "The current status of the game server group.", + "enum": [ + "NEW", + "ACTIVATING", + "ACTIVE", + "DELETE_SCHEDULED", + "DELETING", + "DELETED", + "ERROR" + ], + "type": "string" + }, + "StatusReason": { + "description": "Additional information about the current game server group status.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "SuspendedActions": { + "items": { + "enum": [ + "REPLACE_INSTANCE_TYPES" + ], + "type": "string" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key for a developer-defined key:value pair for tagging an AWS resource.", + "type": "string" + }, + "Value": { + "description": "The value for a developer-defined key:value pair for tagging an AWS resource.", + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "description": "A list of labels to assign to the new game server group resource. Updating game server group tags with CloudFormation will not take effect. Please update this property using AWS GameLift APIs instead.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TargetTrackingConfiguration": { + "additionalProperties": false, + "description": "Settings for a target-based scaling policy applied to Auto Scaling group.", + "properties": { + "TargetValue": { + "$ref": "#/definitions/TargetValue" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + }, + "TargetValue": { + "description": "Desired value to use with a game server group target-based scaling policy.", + "type": "number" + }, + "Version": { + "description": "The version of the EC2 launch template to use.", + "type": "string" + }, + "VpcSubnets": { + "description": "A list of virtual private cloud (VPC) subnets to use with instances in the game server group. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource.", + "insertionOrder": false, + "items": { + "maxLength": 24, + "minLength": 15, + "pattern": "^subnet-[0-9a-z]+$", + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "WeightedCapacity": { + "description": "Instance weighting that indicates how much this instance type contributes to the total capacity of a game server group.", + "pattern": "^[\\u0031-\\u0039][\\u0030-\\u0039]{0,2}$", + "type": "string" + } + }, + "description": "The AWS::GameLift::GameServerGroup resource creates an Amazon GameLift (GameLift) GameServerGroup.", + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateGameServerGroup", + "gamelift:TagResource", + "gamelift:DescribeGameServerGroup", + "iam:assumeRole", + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeSubnets", + "ec2:RunInstances", + "ec2:CreateTags", + "ec2:DescribeLaunchTemplateVersions", + "autoscaling:CreateAutoScalingGroup", + "autoscaling:DescribeLifecycleHooks", + "autoscaling:DescribeNotificationConfigurations", + "autoscaling:CreateAutoScalingGroup", + "autoscaling:CreateOrUpdateTags", + "autoscaling:DescribeAutoScalingGroups", + "autoscaling:ExitStandby", + "autoscaling:PutLifecycleHook", + "autoscaling:PutScalingPolicy", + "autoscaling:ResumeProcesses", + "autoscaling:SetInstanceProtection", + "autoscaling:UpdateAutoScalingGroup", + "events:PutRule", + "events:PutTargets" + ] + }, + "delete": { + "permissions": [ + "gamelift:DeleteGameServerGroup", + "gamelift:DescribeGameServerGroup", + "iam:assumeRole", + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeSubnets", + "ec2:DescribeLaunchTemplateVersions", + "autoscaling:CreateAutoScalingGroup", + "autoscaling:DescribeLifecycleHooks", + "autoscaling:DescribeNotificationConfigurations", + "autoscaling:DescribeAutoScalingGroups", + "autoscaling:ExitStandby", + "autoscaling:PutLifecycleHook", + "autoscaling:PutScalingPolicy", + "autoscaling:ResumeProcesses", + "autoscaling:SetInstanceProtection", + "autoscaling:UpdateAutoScalingGroup", + "autoscaling:DeleteAutoScalingGroup", + "events:PutRule", + "events:PutTargets" + ] + }, + "list": { + "permissions": [ + "gamelift:ListGameServerGroups" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeGameServerGroup" + ] + }, + "update": { + "permissions": [ + "gamelift:UpdateGameServerGroup", + "iam:assumeRole", + "iam:PassRole", + "autoscaling:DescribeAutoScalingGroups", + "autoscaling:UpdateAutoScalingGroup", + "autoscaling:SetInstanceProtection" + ] + } + }, + "primaryIdentifier": [ + "/properties/GameServerGroupArn" + ], + "properties": { + "AutoScalingGroupArn": { + "$ref": "#/definitions/AutoScalingGroupArn", + "description": "A generated unique ID for the EC2 Auto Scaling group that is associated with this game server group." + }, + "AutoScalingPolicy": { + "$ref": "#/definitions/AutoScalingPolicy", + "description": "Configuration settings to define a scaling policy for the Auto Scaling group that is optimized for game hosting. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource." + }, + "BalancingStrategy": { + "$ref": "#/definitions/BalancingStrategy", + "description": "The fallback balancing method to use for the game server group when Spot Instances in a Region become unavailable or are not viable for game hosting." + }, + "DeleteOption": { + "$ref": "#/definitions/DeleteOption", + "description": "The type of delete to perform." + }, + "GameServerGroupArn": { + "$ref": "#/definitions/GameServerGroupArn", + "description": "A generated unique ID for the game server group." + }, + "GameServerGroupName": { + "$ref": "#/definitions/GameServerGroupName", + "description": "An identifier for the new game server group." + }, + "GameServerProtectionPolicy": { + "$ref": "#/definitions/GameServerProtectionPolicy", + "description": "A flag that indicates whether instances in the game server group are protected from early termination." + }, + "InstanceDefinitions": { + "$ref": "#/definitions/InstanceDefinitions", + "description": "A set of EC2 instance types to use when creating instances in the group." + }, + "LaunchTemplate": { + "$ref": "#/definitions/LaunchTemplate", + "description": "The EC2 launch template that contains configuration settings and game server code to be deployed to all instances in the game server group. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource." + }, + "MaxSize": { + "$ref": "#/definitions/MaxSize", + "description": "The maximum number of instances allowed in the EC2 Auto Scaling group. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource." + }, + "MinSize": { + "$ref": "#/definitions/MinSize", + "description": "The minimum number of instances allowed in the EC2 Auto Scaling group. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource." + }, + "RoleArn": { + "$ref": "#/definitions/RoleArn", + "description": "The Amazon Resource Name (ARN) for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling groups." + }, + "Tags": { + "$ref": "#/definitions/Tags", + "description": "A list of labels to assign to the new game server group resource. Updating game server group tags with CloudFormation will not take effect. Please update this property using AWS GameLift APIs instead." + }, + "VpcSubnets": { + "$ref": "#/definitions/VpcSubnets", + "description": "A list of virtual private cloud (VPC) subnets to use with instances in the game server group. Updating this game server group property will not take effect for the created EC2 Auto Scaling group, please update the EC2 Auto Scaling group directly after creating the resource." + } + }, + "readOnlyProperties": [ + "/properties/GameServerGroupArn", + "/properties/AutoScalingGroupArn" + ], + "required": [ + "GameServerGroupName", + "InstanceDefinitions", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GameLift::GameServerGroup", + "writeOnlyProperties": [ + "/properties/DeleteOption", + "/properties/LaunchTemplate", + "/properties/MinSize", + "/properties/MaxSize", + "/properties/AutoScalingPolicy", + "/properties/VpcSubnets", + "/properties/Tags" + ] +} diff --git a/src/schema/aws-gamelift-gamesessionqueue.json b/src/schema/aws-gamelift-gamesessionqueue.json index 32bb6506..94f122b1 100644 --- a/src/schema/aws-gamelift-gamesessionqueue.json +++ b/src/schema/aws-gamelift-gamesessionqueue.json @@ -1,247 +1,255 @@ -{ - "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "AllowedLocations": { - "description": "A list of locations to allow game session placement in, in the form of AWS Region codes such as us-west-2.", - "insertionOrder": false, - "items": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-z]+(-([a-z]+|\\d))*", - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "FilterConfiguration": { - "additionalProperties": false, - "properties": { - "AllowedLocations": { - "$ref": "#/definitions/AllowedLocations" - } - }, - "type": "object" - }, - "GameSessionQueueDestination": { - "additionalProperties": false, - "description": "A fleet or alias designated in a game session queue.", - "properties": { - "DestinationArn": { - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z0-9:/-]+", - "type": "string" - } - }, - "type": "object" - }, - "LocationOrder": { - "description": "The prioritization order to use for fleet locations, when the PriorityOrder property includes LOCATION.", - "insertionOrder": true, - "items": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[A-Za-z0-9\\-]+", - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "PlayerLatencyPolicy": { - "additionalProperties": false, - "description": "Sets a latency cap for individual players when placing a game session.", - "properties": { - "MaximumIndividualPlayerLatencyMilliseconds": { - "description": "The maximum latency value that is allowed for any player, in milliseconds. All policies must have a value set for this property.", - "minimum": 0, - "type": "integer" - }, - "PolicyDurationSeconds": { - "description": "The length of time, in seconds, that the policy is enforced while placing a new game session.", - "minimum": 0, - "type": "integer" - } - }, - "type": "object" - }, - "PriorityConfiguration": { - "additionalProperties": false, - "properties": { - "LocationOrder": { - "$ref": "#/definitions/LocationOrder" - }, - "PriorityOrder": { - "$ref": "#/definitions/PriorityOrder" - } - }, - "type": "object" - }, - "PriorityOrder": { - "description": "The recommended sequence to use when prioritizing where to place new game sessions.", - "insertionOrder": true, - "items": { - "enum": [ - "LATENCY", - "COST", - "DESTINATION", - "LOCATION" - ], - "type": "string" - }, - "maxItems": 4, - "minItems": 1, - "type": "array" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::GameLift::GameSessionQueue resource creates an Amazon GameLift (GameLift) game session queue.", - "handlers": { - "create": { - "permissions": [ - "gamelift:CreateGameSessionQueue", - "gamelift:ListTagsForResource", - "gamelift:TagResource" - ] - }, - "delete": { - "permissions": [ - "gamelift:DescribeGameSessionQueues", - "gamelift:DeleteGameSessionQueue" - ] - }, - "list": { - "permissions": [ - "gamelift:DescribeGameSessionQueues" - ] - }, - "read": { - "permissions": [ - "gamelift:DescribeGameSessionQueues", - "gamelift:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "gamelift:UpdateGameSessionQueue", - "gamelift:ListTagsForResource", - "gamelift:TagResource", - "gamelift:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift game session queue resource and uniquely identifies it.", - "maxLength": 256, - "minLength": 1, - "pattern": "^arn:.*:gamesessionqueue\\/[a-zA-Z0-9-]+", - "type": "string" - }, - "CustomEventData": { - "description": "Information that is added to all events that are related to this game session queue.", - "maxLength": 256, - "minLength": 1, - "pattern": "[\\s\\S]*", - "type": "string" - }, - "Destinations": { - "description": "A list of fleets and/or fleet aliases that can be used to fulfill game session placement requests in the queue.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/GameSessionQueueDestination" - }, - "type": "array" - }, - "FilterConfiguration": { - "$ref": "#/definitions/FilterConfiguration", - "description": "A list of locations where a queue is allowed to place new game sessions.", - "type": "object" - }, - "Name": { - "description": "A descriptive label that is associated with game session queue. Queue names must be unique within each Region.", - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z0-9-]+", - "type": "string" - }, - "NotificationTarget": { - "description": "An SNS topic ARN that is set up to receive game session placement notifications.", - "maxLength": 300, - "minLength": 1, - "pattern": "[a-zA-Z0-9:_-]*(\\.fifo)?", - "type": "string" - }, - "PlayerLatencyPolicies": { - "description": "A set of policies that act as a sliding cap on player latency.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PlayerLatencyPolicy" - }, - "type": "array" - }, - "PriorityConfiguration": { - "$ref": "#/definitions/PriorityConfiguration", - "description": "Custom settings to use when prioritizing destinations and locations for game session placements.", - "type": "object" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - }, - "TimeoutInSeconds": { - "description": "The maximum time, in seconds, that a new game session placement request remains in the queue.", - "minimum": 0, - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags", - "taggable": true - }, - "typeName": "AWS::GameLift::GameSessionQueue" -} +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "AllowedLocations": { + "description": "A list of locations to allow game session placement in, in the form of AWS Region codes such as us-west-2.", + "insertionOrder": false, + "items": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-z]+(-([a-z]+|\\d))*", + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "FilterConfiguration": { + "additionalProperties": false, + "properties": { + "AllowedLocations": { + "$ref": "#/definitions/AllowedLocations" + } + }, + "type": "object" + }, + "GameSessionQueueDestination": { + "additionalProperties": false, + "description": "A fleet or alias designated in a game session queue.", + "properties": { + "DestinationArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z0-9:/-]+", + "type": "string" + } + }, + "type": "object" + }, + "LocationOrder": { + "description": "The prioritization order to use for fleet locations, when the PriorityOrder property includes LOCATION.", + "insertionOrder": true, + "items": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9\\-]+", + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "PlayerLatencyPolicy": { + "additionalProperties": false, + "description": "Sets a latency cap for individual players when placing a game session.", + "properties": { + "MaximumIndividualPlayerLatencyMilliseconds": { + "description": "The maximum latency value that is allowed for any player, in milliseconds. All policies must have a value set for this property.", + "minimum": 0, + "type": "integer" + }, + "PolicyDurationSeconds": { + "description": "The length of time, in seconds, that the policy is enforced while placing a new game session.", + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "PriorityConfiguration": { + "additionalProperties": false, + "properties": { + "LocationOrder": { + "$ref": "#/definitions/LocationOrder" + }, + "PriorityOrder": { + "$ref": "#/definitions/PriorityOrder" + } + }, + "type": "object" + }, + "PriorityOrder": { + "description": "The recommended sequence to use when prioritizing where to place new game sessions.", + "insertionOrder": true, + "items": { + "enum": [ + "LATENCY", + "COST", + "DESTINATION", + "LOCATION" + ], + "type": "string" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::GameLift::GameSessionQueue resource creates an Amazon GameLift (GameLift) game session queue.", + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateGameSessionQueue", + "gamelift:ListTagsForResource", + "gamelift:TagResource" + ] + }, + "delete": { + "permissions": [ + "gamelift:DescribeGameSessionQueues", + "gamelift:DeleteGameSessionQueue" + ] + }, + "list": { + "permissions": [ + "gamelift:DescribeGameSessionQueues" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeGameSessionQueues", + "gamelift:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "gamelift:UpdateGameSessionQueue", + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource", + "gamelift:DescribeGameSessionQueues" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift game session queue resource and uniquely identifies it.", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:.*:gamesessionqueue\\/[a-zA-Z0-9-]+", + "type": "string" + }, + "CustomEventData": { + "description": "Information that is added to all events that are related to this game session queue.", + "maxLength": 256, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "Destinations": { + "description": "A list of fleets and/or fleet aliases that can be used to fulfill game session placement requests in the queue.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/GameSessionQueueDestination" + }, + "type": "array" + }, + "FilterConfiguration": { + "$ref": "#/definitions/FilterConfiguration", + "description": "A list of locations where a queue is allowed to place new game sessions.", + "type": "object" + }, + "Name": { + "description": "A descriptive label that is associated with game session queue. Queue names must be unique within each Region.", + "maxLength": 128, + "minLength": 1, + "pattern": "[a-zA-Z0-9-]+", + "type": "string" + }, + "NotificationTarget": { + "description": "An SNS topic ARN that is set up to receive game session placement notifications.", + "maxLength": 300, + "minLength": 1, + "pattern": "[a-zA-Z0-9:_-]*(\\.fifo)?", + "type": "string" + }, + "PlayerLatencyPolicies": { + "description": "A set of policies that act as a sliding cap on player latency.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PlayerLatencyPolicy" + }, + "type": "array" + }, + "PriorityConfiguration": { + "$ref": "#/definitions/PriorityConfiguration", + "description": "Custom settings to use when prioritizing destinations and locations for game session placements.", + "type": "object" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + }, + "TimeoutInSeconds": { + "description": "The maximum time, in seconds, that a new game session placement request remains in the queue.", + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GameLift::GameSessionQueue" +} diff --git a/src/schema/aws-gamelift-location.json b/src/schema/aws-gamelift-location.json index caaa5739..81442ef6 100644 --- a/src/schema/aws-gamelift-location.json +++ b/src/schema/aws-gamelift-location.json @@ -1,105 +1,112 @@ -{ - "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LocationName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::GameLift::Location resource creates an Amazon GameLift (GameLift) custom location.", - "handlers": { - "create": { - "permissions": [ - "gamelift:CreateLocation", - "gamelift:ListLocations", - "gamelift:ListTagsForResource", - "gamelift:TagResource" - ] - }, - "delete": { - "permissions": [ - "gamelift:DeleteLocation" - ] - }, - "list": { - "permissions": [ - "gamelift:ListLocations" - ] - }, - "read": { - "permissions": [ - "gamelift:ListLocations", - "gamelift:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "gamelift:ListLocations", - "gamelift:ListTagsForResource", - "gamelift:TagResource", - "gamelift:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/LocationName" - ], - "properties": { - "LocationArn": { - "pattern": "^arn:.*:location/custom-\\S+", - "type": "string" - }, - "LocationName": { - "maxLength": 64, - "minLength": 8, - "pattern": "^custom-[A-Za-z0-9\\-]+", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/LocationArn" - ], - "required": [ - "LocationName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags", - "taggable": true - }, - "typeName": "AWS::GameLift::Location" -} +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LocationName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::GameLift::Location resource creates an Amazon GameLift (GameLift) custom location.", + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateLocation", + "gamelift:ListLocations", + "gamelift:ListTagsForResource", + "gamelift:TagResource" + ] + }, + "delete": { + "permissions": [ + "gamelift:DeleteLocation" + ] + }, + "list": { + "permissions": [ + "gamelift:ListLocations" + ] + }, + "read": { + "permissions": [ + "gamelift:ListLocations", + "gamelift:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "gamelift:ListLocations", + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/LocationName" + ], + "properties": { + "LocationArn": { + "pattern": "^arn:.*:location/custom-\\S+", + "type": "string" + }, + "LocationName": { + "maxLength": 64, + "minLength": 8, + "pattern": "^custom-[A-Za-z0-9\\-]+", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/LocationArn" + ], + "required": [ + "LocationName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GameLift::Location" +} diff --git a/src/schema/aws-gamelift-matchmakingconfiguration.json b/src/schema/aws-gamelift-matchmakingconfiguration.json index 1ace2209..77167d3e 100644 --- a/src/schema/aws-gamelift-matchmakingconfiguration.json +++ b/src/schema/aws-gamelift-matchmakingconfiguration.json @@ -1,230 +1,237 @@ -{ - "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "GameProperty": { - "additionalProperties": false, - "description": "A key-value pair that contains information about a game session.", - "properties": { - "Key": { - "description": "The game property identifier.", - "maxLength": 32, - "type": "string" - }, - "Value": { - "description": "The game property value.", - "maxLength": 96, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::GameLift::MatchmakingConfiguration resource creates an Amazon GameLift (GameLift) matchmaking configuration.", - "handlers": { - "create": { - "permissions": [ - "gamelift:CreateMatchmakingConfiguration", - "gamelift:ListTagsForResource", - "gamelift:TagResource", - "gamelift:DescribeMatchmakingConfigurations" - ] - }, - "delete": { - "permissions": [ - "gamelift:DescribeMatchmakingConfigurations", - "gamelift:DeleteMatchmakingConfiguration" - ] - }, - "list": { - "permissions": [ - "gamelift:DescribeMatchmakingConfigurations" - ] - }, - "read": { - "permissions": [ - "gamelift:DescribeMatchmakingConfigurations", - "gamelift:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "gamelift:DescribeMatchmakingConfigurations", - "gamelift:UpdateMatchmakingConfiguration", - "gamelift:ListTagsForResource", - "gamelift:TagResource", - "gamelift:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "AcceptanceRequired": { - "description": "A flag that indicates whether a match that was created with this configuration must be accepted by the matched players", - "type": "boolean" - }, - "AcceptanceTimeoutSeconds": { - "description": "The length of time (in seconds) to wait for players to accept a proposed match, if acceptance is required.", - "maximum": 600, - "minimum": 1, - "type": "integer" - }, - "AdditionalPlayerCount": { - "description": "The number of player slots in a match to keep open for future players.", - "minimum": 0, - "type": "integer" - }, - "Arn": { - "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift matchmaking configuration resource and uniquely identifies it.", - "pattern": "^arn:.*:matchmakingconfiguration\\/[a-zA-Z0-9-\\.]*", - "type": "string" - }, - "BackfillMode": { - "description": "The method used to backfill game sessions created with this matchmaking configuration.", - "enum": [ - "AUTOMATIC", - "MANUAL" - ], - "type": "string" - }, - "CreationTime": { - "description": "A time stamp indicating when this data object was created.", - "type": "string" - }, - "CustomEventData": { - "description": "Information to attach to all events related to the matchmaking configuration.", - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "Description": { - "description": "A descriptive label that is associated with matchmaking configuration.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "FlexMatchMode": { - "description": "Indicates whether this matchmaking configuration is being used with Amazon GameLift hosting or as a standalone matchmaking solution.", - "enum": [ - "STANDALONE", - "WITH_QUEUE" - ], - "type": "string" - }, - "GameProperties": { - "description": "A set of custom properties for a game session, formatted as key:value pairs.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/GameProperty" - }, - "maxItems": 16, - "type": "array", - "uniqueItems": true - }, - "GameSessionData": { - "description": "A set of custom game session properties, formatted as a single string value.", - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "GameSessionQueueArns": { - "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift game session queue resource and uniquely identifies it.", - "insertionOrder": false, - "items": { - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z0-9:/-]+", - "type": "string" - }, - "type": "array" - }, - "Name": { - "description": "A unique identifier for the matchmaking configuration.", - "maxLength": 128, - "pattern": "[a-zA-Z0-9-\\.]*", - "type": "string" - }, - "NotificationTarget": { - "description": "An SNS topic ARN that is set up to receive matchmaking notifications.", - "maxLength": 300, - "minLength": 0, - "pattern": "[a-zA-Z0-9:_/-]*(.fifo)?", - "type": "string" - }, - "RequestTimeoutSeconds": { - "description": "The maximum duration, in seconds, that a matchmaking ticket can remain in process before timing out.", - "maximum": 43200, - "minimum": 1, - "type": "integer" - }, - "RuleSetArn": { - "description": "The Amazon Resource Name (ARN) associated with the GameLift matchmaking rule set resource that this configuration uses.", - "pattern": "^arn:.*:matchmakingruleset\\/[a-zA-Z0-9-\\.]*", - "type": "string" - }, - "RuleSetName": { - "description": "A unique identifier for the matchmaking rule set to use with this configuration.", - "maxLength": 128, - "pattern": "[a-zA-Z0-9-\\.]*", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "AcceptanceRequired", - "Name", - "RequestTimeoutSeconds", - "RuleSetName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags", - "taggable": true - }, - "typeName": "AWS::GameLift::MatchmakingConfiguration" -} +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "GameProperty": { + "additionalProperties": false, + "description": "A key-value pair that contains information about a game session.", + "properties": { + "Key": { + "description": "The game property identifier.", + "maxLength": 32, + "type": "string" + }, + "Value": { + "description": "The game property value.", + "maxLength": 96, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::GameLift::MatchmakingConfiguration resource creates an Amazon GameLift (GameLift) matchmaking configuration.", + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateMatchmakingConfiguration", + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:DescribeMatchmakingConfigurations" + ] + }, + "delete": { + "permissions": [ + "gamelift:DescribeMatchmakingConfigurations", + "gamelift:DeleteMatchmakingConfiguration" + ] + }, + "list": { + "permissions": [ + "gamelift:DescribeMatchmakingConfigurations" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeMatchmakingConfigurations", + "gamelift:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "gamelift:DescribeMatchmakingConfigurations", + "gamelift:UpdateMatchmakingConfiguration", + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "AcceptanceRequired": { + "description": "A flag that indicates whether a match that was created with this configuration must be accepted by the matched players", + "type": "boolean" + }, + "AcceptanceTimeoutSeconds": { + "description": "The length of time (in seconds) to wait for players to accept a proposed match, if acceptance is required.", + "maximum": 600, + "minimum": 1, + "type": "integer" + }, + "AdditionalPlayerCount": { + "description": "The number of player slots in a match to keep open for future players.", + "minimum": 0, + "type": "integer" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift matchmaking configuration resource and uniquely identifies it.", + "pattern": "^arn:.*:matchmakingconfiguration\\/[a-zA-Z0-9-\\.]*", + "type": "string" + }, + "BackfillMode": { + "description": "The method used to backfill game sessions created with this matchmaking configuration.", + "enum": [ + "AUTOMATIC", + "MANUAL" + ], + "type": "string" + }, + "CreationTime": { + "description": "A time stamp indicating when this data object was created.", + "type": "string" + }, + "CustomEventData": { + "description": "Information to attach to all events related to the matchmaking configuration.", + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Description": { + "description": "A descriptive label that is associated with matchmaking configuration.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "FlexMatchMode": { + "description": "Indicates whether this matchmaking configuration is being used with Amazon GameLift hosting or as a standalone matchmaking solution.", + "enum": [ + "STANDALONE", + "WITH_QUEUE" + ], + "type": "string" + }, + "GameProperties": { + "description": "A set of custom properties for a game session, formatted as key:value pairs.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/GameProperty" + }, + "maxItems": 16, + "type": "array", + "uniqueItems": true + }, + "GameSessionData": { + "description": "A set of custom game session properties, formatted as a single string value.", + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "GameSessionQueueArns": { + "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift game session queue resource and uniquely identifies it.", + "insertionOrder": false, + "items": { + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z0-9:/-]+", + "type": "string" + }, + "type": "array" + }, + "Name": { + "description": "A unique identifier for the matchmaking configuration.", + "maxLength": 128, + "pattern": "[a-zA-Z0-9-\\.]*", + "type": "string" + }, + "NotificationTarget": { + "description": "An SNS topic ARN that is set up to receive matchmaking notifications.", + "maxLength": 300, + "minLength": 0, + "pattern": "[a-zA-Z0-9:_/-]*(.fifo)?", + "type": "string" + }, + "RequestTimeoutSeconds": { + "description": "The maximum duration, in seconds, that a matchmaking ticket can remain in process before timing out.", + "maximum": 43200, + "minimum": 1, + "type": "integer" + }, + "RuleSetArn": { + "description": "The Amazon Resource Name (ARN) associated with the GameLift matchmaking rule set resource that this configuration uses.", + "pattern": "^arn:.*:matchmakingruleset\\/[a-zA-Z0-9-\\.]*", + "type": "string" + }, + "RuleSetName": { + "description": "A unique identifier for the matchmaking rule set to use with this configuration.", + "maxLength": 128, + "pattern": "[a-zA-Z0-9-\\.]*", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "AcceptanceRequired", + "Name", + "RequestTimeoutSeconds", + "RuleSetName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GameLift::MatchmakingConfiguration" +} diff --git a/src/schema/aws-gamelift-matchmakingruleset.json b/src/schema/aws-gamelift-matchmakingruleset.json index 8f7034c2..7e8ceb20 100644 --- a/src/schema/aws-gamelift-matchmakingruleset.json +++ b/src/schema/aws-gamelift-matchmakingruleset.json @@ -1,122 +1,129 @@ -{ - "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/RuleSetBody" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::GameLift::MatchmakingRuleSet resource creates an Amazon GameLift (GameLift) matchmaking rule set.", - "handlers": { - "create": { - "permissions": [ - "gamelift:CreateMatchmakingRuleSet", - "gamelift:DescribeMatchmakingRuleSets", - "gamelift:ValidateMatchmakingRuleSet", - "gamelift:ListTagsForResource", - "gamelift:TagResource" - ] - }, - "delete": { - "permissions": [ - "gamelift:DeleteMatchmakingRuleSet" - ] - }, - "list": { - "permissions": [ - "gamelift:DescribeMatchmakingRuleSets" - ] - }, - "read": { - "permissions": [ - "gamelift:DescribeMatchmakingRuleSets", - "gamelift:ValidateMatchmakingRuleSet", - "gamelift:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "gamelift:DescribeMatchmakingRuleSets", - "gamelift:ListTagsForResource", - "gamelift:TagResource", - "gamelift:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift matchmaking rule set resource and uniquely identifies it.", - "pattern": "^arn:.*:matchmakingruleset\\/[a-zA-Z0-9-\\.]*", - "type": "string" - }, - "CreationTime": { - "description": "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds.", - "type": "string" - }, - "Name": { - "description": "A unique identifier for the matchmaking rule set.", - "maxLength": 128, - "pattern": "[a-zA-Z0-9-\\.]*", - "type": "string" - }, - "RuleSetBody": { - "description": "A collection of matchmaking rules, formatted as a JSON string.", - "maxLength": 65535, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationTime" - ], - "required": [ - "Name", - "RuleSetBody" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags", - "taggable": true - }, - "typeName": "AWS::GameLift::MatchmakingRuleSet" -} +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/RuleSetBody" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::GameLift::MatchmakingRuleSet resource creates an Amazon GameLift (GameLift) matchmaking rule set.", + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateMatchmakingRuleSet", + "gamelift:DescribeMatchmakingRuleSets", + "gamelift:ValidateMatchmakingRuleSet", + "gamelift:ListTagsForResource", + "gamelift:TagResource" + ] + }, + "delete": { + "permissions": [ + "gamelift:DeleteMatchmakingRuleSet" + ] + }, + "list": { + "permissions": [ + "gamelift:DescribeMatchmakingRuleSets" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeMatchmakingRuleSets", + "gamelift:ValidateMatchmakingRuleSet", + "gamelift:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "gamelift:DescribeMatchmakingRuleSets", + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift matchmaking rule set resource and uniquely identifies it.", + "pattern": "^arn:.*:matchmakingruleset\\/[a-zA-Z0-9-\\.]*", + "type": "string" + }, + "CreationTime": { + "description": "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds.", + "type": "string" + }, + "Name": { + "description": "A unique identifier for the matchmaking rule set.", + "maxLength": 128, + "pattern": "[a-zA-Z0-9-\\.]*", + "type": "string" + }, + "RuleSetBody": { + "description": "A collection of matchmaking rules, formatted as a JSON string.", + "maxLength": 65535, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime" + ], + "required": [ + "Name", + "RuleSetBody" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GameLift::MatchmakingRuleSet" +} diff --git a/src/schema/aws-gamelift-script.json b/src/schema/aws-gamelift-script.json index 125ff420..6dc79c45 100644 --- a/src/schema/aws-gamelift-script.json +++ b/src/schema/aws-gamelift-script.json @@ -1,168 +1,175 @@ -{ - "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", - "additionalProperties": false, - "definitions": { - "S3Location": { - "$comment": "Contains object details present in the S3 Bucket", - "additionalProperties": false, - "properties": { - "Bucket": { - "description": "An Amazon S3 bucket identifier. This is the name of the S3 bucket.", - "minLength": 1, - "type": "string" - }, - "Key": { - "description": "The name of the zip file that contains the script files.", - "minLength": 1, - "type": "string" - }, - "ObjectVersion": { - "description": "The version of the file, if object versioning is turned on for the bucket. Amazon GameLift uses this information when retrieving files from your S3 bucket. To retrieve a specific version of the file, provide an object version. To retrieve the latest version of the file, do not set this parameter.", - "minLength": 1, - "type": "string" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) for an IAM role that allows Amazon GameLift to access the S3 bucket.", - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Bucket", - "Key", - "RoleArn" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::GameLift::Script resource creates a new script record for your Realtime Servers script. Realtime scripts are JavaScript that provide configuration settings and optional custom game logic for your game. The script is deployed when you create a Realtime Servers fleet to host your game sessions. Script logic is executed during an active game session.", - "handlers": { - "create": { - "permissions": [ - "gamelift:CreateScript", - "gamelift:ListTagsForResource", - "gamelift:TagResource", - "gamelift:DescribeScript", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "gamelift:DeleteScript" - ] - }, - "list": { - "permissions": [ - "gamelift:ListScripts", - "gamelift:DescribeScript" - ] - }, - "read": { - "permissions": [ - "gamelift:DescribeScript", - "gamelift:ListScripts", - "gamelift:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "gamelift:DescribeScript", - "gamelift:UpdateScript", - "gamelift:ListTagsForResource", - "gamelift:TagResource", - "gamelift:UntagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift script resource and uniquely identifies it. ARNs are unique across all Regions. In a GameLift script ARN, the resource ID matches the Id value.", - "pattern": "^arn:.*:script\\/script-\\S+", - "type": "string" - }, - "CreationTime": { - "description": "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").", - "type": "string" - }, - "Id": { - "description": "A unique identifier for the Realtime script", - "pattern": "^script-\\S+", - "type": "string" - }, - "Name": { - "description": "A descriptive label that is associated with a script. Script names do not need to be unique.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "SizeOnDisk": { - "description": "The file size of the uploaded Realtime script, expressed in bytes. When files are uploaded from an S3 location, this value remains at \"0\".", - "minimum": 1, - "type": "integer" - }, - "StorageLocation": { - "$ref": "#/definitions/S3Location", - "description": "The location of the Amazon S3 bucket where a zipped file containing your Realtime scripts is stored. The storage location must specify the Amazon S3 bucket name, the zip file name (the \"key\"), and a role ARN that allows Amazon GameLift to access the Amazon S3 storage location. The S3 bucket must be in the same Region where you want to create a new script. By default, Amazon GameLift uploads the latest version of the zip file; if you have S3 object versioning turned on, you can use the ObjectVersion parameter to specify an earlier version.", - "type": "object" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - }, - "Version": { - "description": "The version that is associated with a script. Version strings do not need to be unique.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/CreationTime", - "/properties/Arn", - "/properties/SizeOnDisk" - ], - "required": [ - "StorageLocation" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags", - "taggable": true - }, - "typeName": "AWS::GameLift::Script" -} +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "definitions": { + "S3Location": { + "$comment": "Contains object details present in the S3 Bucket", + "additionalProperties": false, + "properties": { + "Bucket": { + "description": "An Amazon S3 bucket identifier. This is the name of the S3 bucket.", + "minLength": 1, + "type": "string" + }, + "Key": { + "description": "The name of the zip file that contains the script files.", + "minLength": 1, + "type": "string" + }, + "ObjectVersion": { + "description": "The version of the file, if object versioning is turned on for the bucket. Amazon GameLift uses this information when retrieving files from your S3 bucket. To retrieve a specific version of the file, provide an object version. To retrieve the latest version of the file, do not set this parameter.", + "minLength": 1, + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) for an IAM role that allows Amazon GameLift to access the S3 bucket.", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Bucket", + "Key", + "RoleArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::GameLift::Script resource creates a new script record for your Realtime Servers script. Realtime scripts are JavaScript that provide configuration settings and optional custom game logic for your game. The script is deployed when you create a Realtime Servers fleet to host your game sessions. Script logic is executed during an active game session.", + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateScript", + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:DescribeScript", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "gamelift:DeleteScript" + ] + }, + "list": { + "permissions": [ + "gamelift:ListScripts", + "gamelift:DescribeScript" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeScript", + "gamelift:ListScripts", + "gamelift:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "gamelift:DescribeScript", + "gamelift:UpdateScript", + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift script resource and uniquely identifies it. ARNs are unique across all Regions. In a GameLift script ARN, the resource ID matches the Id value.", + "pattern": "^arn:.*:script\\/script-\\S+", + "type": "string" + }, + "CreationTime": { + "description": "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").", + "type": "string" + }, + "Id": { + "description": "A unique identifier for the Realtime script", + "pattern": "^script-\\S+", + "type": "string" + }, + "Name": { + "description": "A descriptive label that is associated with a script. Script names do not need to be unique.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "SizeOnDisk": { + "description": "The file size of the uploaded Realtime script, expressed in bytes. When files are uploaded from an S3 location, this value remains at \"0\".", + "minimum": 1, + "type": "integer" + }, + "StorageLocation": { + "$ref": "#/definitions/S3Location", + "description": "The location of the Amazon S3 bucket where a zipped file containing your Realtime scripts is stored. The storage location must specify the Amazon S3 bucket name, the zip file name (the \"key\"), and a role ARN that allows Amazon GameLift to access the Amazon S3 storage location. The S3 bucket must be in the same Region where you want to create a new script. By default, Amazon GameLift uploads the latest version of the zip file; if you have S3 object versioning turned on, you can use the ObjectVersion parameter to specify an earlier version.", + "type": "object" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + }, + "Version": { + "description": "The version that is associated with a script. Version strings do not need to be unique.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/CreationTime", + "/properties/Arn", + "/properties/SizeOnDisk" + ], + "required": [ + "StorageLocation" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GameLift::Script" +} diff --git a/src/schema/aws-globalaccelerator-accelerator.json b/src/schema/aws-globalaccelerator-accelerator.json index bca03abf..e173cde4 100644 --- a/src/schema/aws-globalaccelerator-accelerator.json +++ b/src/schema/aws-globalaccelerator-accelerator.json @@ -1,158 +1,158 @@ -{ - "additionalProperties": false, - "definitions": { - "IpAddress": { - "description": "An IPV4 address", - "pattern": "^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "Tag is a key-value pair associated with accelerator.", - "properties": { - "Key": { - "description": "Key of the tag. Value can be 1 to 127 characters.", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "Value for the tag. Value can be 1 to 255 characters.", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::GlobalAccelerator::Accelerator", - "handlers": { - "create": { - "permissions": [ - "globalaccelerator:CreateAccelerator", - "globalaccelerator:DescribeAccelerator", - "globalaccelerator:TagResource" - ] - }, - "delete": { - "permissions": [ - "globalaccelerator:UpdateAccelerator", - "globalaccelerator:DeleteAccelerator", - "globalaccelerator:DescribeAccelerator" - ] - }, - "list": { - "permissions": [ - "globalaccelerator:ListAccelerators" - ] - }, - "read": { - "permissions": [ - "globalaccelerator:DescribeAccelerator" - ] - }, - "update": { - "permissions": [ - "globalaccelerator:UpdateAccelerator", - "globalaccelerator:TagResource", - "globalaccelerator:UntagResource", - "globalaccelerator:DescribeAccelerator" - ] - } - }, - "primaryIdentifier": [ - "/properties/AcceleratorArn" - ], - "properties": { - "AcceleratorArn": { - "description": "The Amazon Resource Name (ARN) of the accelerator.", - "type": "string" - }, - "DnsName": { - "description": "The Domain Name System (DNS) name that Global Accelerator creates that points to your accelerator's static IPv4 addresses.", - "type": "string" - }, - "DualStackDnsName": { - "description": "The Domain Name System (DNS) name that Global Accelerator creates that points to your accelerator's static IPv4 and IPv6 addresses.", - "type": "string" - }, - "Enabled": { - "default": true, - "description": "Indicates whether an accelerator is enabled. The value is true or false.", - "type": "boolean" - }, - "IpAddressType": { - "default": "IPV4", - "description": "IP Address type.", - "enum": [ - "IPV4", - "DUAL_STACK" - ], - "type": "string" - }, - "IpAddresses": { - "default": null, - "description": "The IP addresses from BYOIP Prefix pool.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/IpAddress" - }, - "type": "array" - }, - "Ipv4Addresses": { - "description": "The IPv4 addresses assigned to the accelerator.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "Ipv6Addresses": { - "default": null, - "description": "The IPv6 addresses assigned if the accelerator is dualstack", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "Name": { - "description": "Name of accelerator.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]{0,64}$", - "type": "string" - }, - "Tags": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/AcceleratorArn", - "/properties/DnsName", - "/properties/Ipv4Addresses", - "/properties/Ipv6Addresses", - "/properties/DualStackDnsName" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-globalaccelerator", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::GlobalAccelerator::Accelerator" -} +{ + "additionalProperties": false, + "definitions": { + "IpAddress": { + "description": "An IPV4 address", + "pattern": "^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "Tag is a key-value pair associated with accelerator.", + "properties": { + "Key": { + "description": "Key of the tag. Value can be 1 to 127 characters.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Value for the tag. Value can be 1 to 255 characters.", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::GlobalAccelerator::Accelerator", + "handlers": { + "create": { + "permissions": [ + "globalaccelerator:CreateAccelerator", + "globalaccelerator:DescribeAccelerator", + "globalaccelerator:TagResource" + ] + }, + "delete": { + "permissions": [ + "globalaccelerator:UpdateAccelerator", + "globalaccelerator:DeleteAccelerator", + "globalaccelerator:DescribeAccelerator" + ] + }, + "list": { + "permissions": [ + "globalaccelerator:ListAccelerators" + ] + }, + "read": { + "permissions": [ + "globalaccelerator:DescribeAccelerator" + ] + }, + "update": { + "permissions": [ + "globalaccelerator:UpdateAccelerator", + "globalaccelerator:TagResource", + "globalaccelerator:UntagResource", + "globalaccelerator:DescribeAccelerator" + ] + } + }, + "primaryIdentifier": [ + "/properties/AcceleratorArn" + ], + "properties": { + "AcceleratorArn": { + "description": "The Amazon Resource Name (ARN) of the accelerator.", + "type": "string" + }, + "DnsName": { + "description": "The Domain Name System (DNS) name that Global Accelerator creates that points to your accelerator's static IPv4 addresses.", + "type": "string" + }, + "DualStackDnsName": { + "description": "The Domain Name System (DNS) name that Global Accelerator creates that points to your accelerator's static IPv4 and IPv6 addresses.", + "type": "string" + }, + "Enabled": { + "default": true, + "description": "Indicates whether an accelerator is enabled. The value is true or false.", + "type": "boolean" + }, + "IpAddressType": { + "default": "IPV4", + "description": "IP Address type.", + "enum": [ + "IPV4", + "DUAL_STACK" + ], + "type": "string" + }, + "IpAddresses": { + "default": null, + "description": "The IP addresses from BYOIP Prefix pool.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IpAddress" + }, + "type": "array" + }, + "Ipv4Addresses": { + "description": "The IPv4 addresses assigned to the accelerator.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "Ipv6Addresses": { + "default": null, + "description": "The IPv6 addresses assigned if the accelerator is dualstack", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "Name": { + "description": "Name of accelerator.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]{0,64}$", + "type": "string" + }, + "Tags": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/AcceleratorArn", + "/properties/DnsName", + "/properties/Ipv4Addresses", + "/properties/Ipv6Addresses", + "/properties/DualStackDnsName" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-globalaccelerator", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GlobalAccelerator::Accelerator" +} diff --git a/src/schema/aws-globalaccelerator-crossaccountattachment.json b/src/schema/aws-globalaccelerator-crossaccountattachment.json index c7ea5d95..211e0bf5 100644 --- a/src/schema/aws-globalaccelerator-crossaccountattachment.json +++ b/src/schema/aws-globalaccelerator-crossaccountattachment.json @@ -1,132 +1,132 @@ -{ - "additionalProperties": false, - "definitions": { - "Resource": { - "additionalProperties": false, - "description": "ARN of resource to share.", - "properties": { - "Cidr": { - "type": "string" - }, - "EndpointId": { - "type": "string" - }, - "Region": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Tag is a key-value pair associated with Cross Account Attachment.", - "properties": { - "Key": { - "description": "Key of the tag. Value can be 1 to 127 characters.", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "Value for the tag. Value can be 1 to 255 characters.", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::GlobalAccelerator::CrossAccountAttachment", - "handlers": { - "create": { - "permissions": [ - "globalaccelerator:DescribeCrossAccountAttachment", - "globalaccelerator:CreateCrossAccountAttachment", - "globalaccelerator:TagResource" - ] - }, - "delete": { - "permissions": [ - "globalaccelerator:DescribeCrossAccountAttachment", - "globalaccelerator:DeleteCrossAccountAttachment" - ] - }, - "list": { - "permissions": [ - "globalaccelerator:ListCrossAccountAttachments" - ] - }, - "read": { - "permissions": [ - "globalaccelerator:DescribeCrossAccountAttachment" - ] - }, - "update": { - "permissions": [ - "globalaccelerator:UpdateCrossAccountAttachment", - "globalaccelerator:DescribeCrossAccountAttachment", - "globalaccelerator:TagResource", - "globalaccelerator:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AttachmentArn" - ], - "properties": { - "AttachmentArn": { - "description": "The Amazon Resource Name (ARN) of the attachment.", - "type": "string" - }, - "Name": { - "description": "The Friendly identifier of the attachment.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]{0,64}$", - "type": "string" - }, - "Principals": { - "description": "Principals to share the resources with.", - "items": { - "type": "string" - }, - "type": "array" - }, - "Resources": { - "description": "Resources shared using the attachment.", - "items": { - "$ref": "#/definitions/Resource" - }, - "type": "array" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/AttachmentArn" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-globalaccelerator", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::GlobalAccelerator::CrossAccountAttachment", - "writeOnlyProperties": [ - "/properties/Resources/*/Region" - ] -} +{ + "additionalProperties": false, + "definitions": { + "Resource": { + "additionalProperties": false, + "description": "ARN of resource to share.", + "properties": { + "Cidr": { + "type": "string" + }, + "EndpointId": { + "type": "string" + }, + "Region": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Tag is a key-value pair associated with Cross Account Attachment.", + "properties": { + "Key": { + "description": "Key of the tag. Value can be 1 to 127 characters.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Value for the tag. Value can be 1 to 255 characters.", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::GlobalAccelerator::CrossAccountAttachment", + "handlers": { + "create": { + "permissions": [ + "globalaccelerator:DescribeCrossAccountAttachment", + "globalaccelerator:CreateCrossAccountAttachment", + "globalaccelerator:TagResource" + ] + }, + "delete": { + "permissions": [ + "globalaccelerator:DescribeCrossAccountAttachment", + "globalaccelerator:DeleteCrossAccountAttachment" + ] + }, + "list": { + "permissions": [ + "globalaccelerator:ListCrossAccountAttachments" + ] + }, + "read": { + "permissions": [ + "globalaccelerator:DescribeCrossAccountAttachment" + ] + }, + "update": { + "permissions": [ + "globalaccelerator:UpdateCrossAccountAttachment", + "globalaccelerator:DescribeCrossAccountAttachment", + "globalaccelerator:TagResource", + "globalaccelerator:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AttachmentArn" + ], + "properties": { + "AttachmentArn": { + "description": "The Amazon Resource Name (ARN) of the attachment.", + "type": "string" + }, + "Name": { + "description": "The Friendly identifier of the attachment.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]{0,64}$", + "type": "string" + }, + "Principals": { + "description": "Principals to share the resources with.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Resources": { + "description": "Resources shared using the attachment.", + "items": { + "$ref": "#/definitions/Resource" + }, + "type": "array" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/AttachmentArn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-globalaccelerator", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GlobalAccelerator::CrossAccountAttachment", + "writeOnlyProperties": [ + "/properties/Resources/*/Region" + ] +} diff --git a/src/schema/aws-globalaccelerator-endpointgroup.json b/src/schema/aws-globalaccelerator-endpointgroup.json index 80e49484..aa39e540 100644 --- a/src/schema/aws-globalaccelerator-endpointgroup.json +++ b/src/schema/aws-globalaccelerator-endpointgroup.json @@ -1,184 +1,184 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/EndpointGroupRegion", - "/properties/ListenerArn" - ], - "definitions": { - "EndpointConfiguration": { - "additionalProperties": false, - "description": "The configuration for a given endpoint", - "properties": { - "AttachmentArn": { - "description": "Attachment ARN that provides access control to the cross account endpoint. Not required for resources hosted in the same account as the endpoint group.", - "type": "string" - }, - "ClientIPPreservationEnabled": { - "default": true, - "description": "true if client ip should be preserved", - "type": "boolean" - }, - "EndpointId": { - "description": "Id of the endpoint. For Network/Application Load Balancer this value is the ARN. For EIP, this value is the allocation ID. For EC2 instances, this is the EC2 instance ID", - "type": "string" - }, - "Weight": { - "default": 100, - "description": "The weight for the endpoint.", - "maximum": 255, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "EndpointId" - ], - "type": "object" - }, - "Port": { - "description": "A network port number", - "maximum": 65535, - "minimum": 0, - "type": "integer" - }, - "PortOverride": { - "additionalProperties": false, - "description": "listener to endpoint port mapping.", - "properties": { - "EndpointPort": { - "$ref": "#/definitions/Port" - }, - "ListenerPort": { - "$ref": "#/definitions/Port" - } - }, - "required": [ - "ListenerPort", - "EndpointPort" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::GlobalAccelerator::EndpointGroup", - "handlers": { - "create": { - "permissions": [ - "globalaccelerator:CreateEndpointGroup", - "globalaccelerator:DescribeEndpointGroup", - "globalaccelerator:DescribeAccelerator", - "globalaccelerator:DescribeListener", - "globalaccelerator:ListAccelerators", - "globalaccelerator:ListListeners" - ] - }, - "delete": { - "permissions": [ - "globalaccelerator:DeleteEndpointGroup", - "globalaccelerator:DescribeEndpointGroup", - "globalaccelerator:DescribeAccelerator" - ] - }, - "list": { - "permissions": [ - "globalaccelerator:ListEndpointGroups" - ] - }, - "read": { - "permissions": [ - "globalaccelerator:DescribeEndpointGroup" - ] - }, - "update": { - "permissions": [ - "globalaccelerator:UpdateEndpointGroup", - "globalaccelerator:DescribeEndpointGroup", - "globalaccelerator:DescribeListener", - "globalaccelerator:DescribeAccelerator" - ] - } - }, - "primaryIdentifier": [ - "/properties/EndpointGroupArn" - ], - "properties": { - "EndpointConfigurations": { - "description": "The list of endpoint objects.", - "items": { - "$ref": "#/definitions/EndpointConfiguration" - }, - "type": "array" - }, - "EndpointGroupArn": { - "description": "The Amazon Resource Name (ARN) of the endpoint group", - "type": "string" - }, - "EndpointGroupRegion": { - "description": "The name of the AWS Region where the endpoint group is located", - "type": "string" - }, - "HealthCheckIntervalSeconds": { - "default": 30, - "description": "The time in seconds between each health check for an endpoint. Must be a value of 10 or 30", - "type": "integer" - }, - "HealthCheckPath": { - "default": "/", - "description": "", - "type": "string" - }, - "HealthCheckPort": { - "default": -1, - "description": "The port that AWS Global Accelerator uses to check the health of endpoints in this endpoint group.", - "maximum": 65535, - "minimum": -1, - "type": "integer" - }, - "HealthCheckProtocol": { - "default": "TCP", - "description": "The protocol that AWS Global Accelerator uses to check the health of endpoints in this endpoint group.", - "enum": [ - "TCP", - "HTTP", - "HTTPS" - ], - "type": "string" - }, - "ListenerArn": { - "description": "The Amazon Resource Name (ARN) of the listener", - "type": "string" - }, - "PortOverrides": { - "items": { - "$ref": "#/definitions/PortOverride" - }, - "type": "array" - }, - "ThresholdCount": { - "default": 3, - "description": "The number of consecutive health checks required to set the state of the endpoint to unhealthy.", - "type": "integer" - }, - "TrafficDialPercentage": { - "default": 100, - "description": "The percentage of traffic to sent to an AWS Region", - "maximum": 100, - "minimum": 0, - "type": "number" - } - }, - "readOnlyProperties": [ - "/properties/EndpointGroupArn" - ], - "required": [ - "ListenerArn", - "EndpointGroupRegion" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-globalaccelerator", - "tagging": { - "taggable": false - }, - "typeName": "AWS::GlobalAccelerator::EndpointGroup", - "writeOnlyProperties": [ - "/properties/EndpointConfigurations/*/AttachmentArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EndpointGroupRegion", + "/properties/ListenerArn" + ], + "definitions": { + "EndpointConfiguration": { + "additionalProperties": false, + "description": "The configuration for a given endpoint", + "properties": { + "AttachmentArn": { + "description": "Attachment ARN that provides access control to the cross account endpoint. Not required for resources hosted in the same account as the endpoint group.", + "type": "string" + }, + "ClientIPPreservationEnabled": { + "default": true, + "description": "true if client ip should be preserved", + "type": "boolean" + }, + "EndpointId": { + "description": "Id of the endpoint. For Network/Application Load Balancer this value is the ARN. For EIP, this value is the allocation ID. For EC2 instances, this is the EC2 instance ID", + "type": "string" + }, + "Weight": { + "default": 100, + "description": "The weight for the endpoint.", + "maximum": 255, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "EndpointId" + ], + "type": "object" + }, + "Port": { + "description": "A network port number", + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "PortOverride": { + "additionalProperties": false, + "description": "listener to endpoint port mapping.", + "properties": { + "EndpointPort": { + "$ref": "#/definitions/Port" + }, + "ListenerPort": { + "$ref": "#/definitions/Port" + } + }, + "required": [ + "ListenerPort", + "EndpointPort" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::GlobalAccelerator::EndpointGroup", + "handlers": { + "create": { + "permissions": [ + "globalaccelerator:CreateEndpointGroup", + "globalaccelerator:DescribeEndpointGroup", + "globalaccelerator:DescribeAccelerator", + "globalaccelerator:DescribeListener", + "globalaccelerator:ListAccelerators", + "globalaccelerator:ListListeners" + ] + }, + "delete": { + "permissions": [ + "globalaccelerator:DeleteEndpointGroup", + "globalaccelerator:DescribeEndpointGroup", + "globalaccelerator:DescribeAccelerator" + ] + }, + "list": { + "permissions": [ + "globalaccelerator:ListEndpointGroups" + ] + }, + "read": { + "permissions": [ + "globalaccelerator:DescribeEndpointGroup" + ] + }, + "update": { + "permissions": [ + "globalaccelerator:UpdateEndpointGroup", + "globalaccelerator:DescribeEndpointGroup", + "globalaccelerator:DescribeListener", + "globalaccelerator:DescribeAccelerator" + ] + } + }, + "primaryIdentifier": [ + "/properties/EndpointGroupArn" + ], + "properties": { + "EndpointConfigurations": { + "description": "The list of endpoint objects.", + "items": { + "$ref": "#/definitions/EndpointConfiguration" + }, + "type": "array" + }, + "EndpointGroupArn": { + "description": "The Amazon Resource Name (ARN) of the endpoint group", + "type": "string" + }, + "EndpointGroupRegion": { + "description": "The name of the AWS Region where the endpoint group is located", + "type": "string" + }, + "HealthCheckIntervalSeconds": { + "default": 30, + "description": "The time in seconds between each health check for an endpoint. Must be a value of 10 or 30", + "type": "integer" + }, + "HealthCheckPath": { + "default": "/", + "description": "", + "type": "string" + }, + "HealthCheckPort": { + "default": -1, + "description": "The port that AWS Global Accelerator uses to check the health of endpoints in this endpoint group.", + "maximum": 65535, + "minimum": -1, + "type": "integer" + }, + "HealthCheckProtocol": { + "default": "TCP", + "description": "The protocol that AWS Global Accelerator uses to check the health of endpoints in this endpoint group.", + "enum": [ + "TCP", + "HTTP", + "HTTPS" + ], + "type": "string" + }, + "ListenerArn": { + "description": "The Amazon Resource Name (ARN) of the listener", + "type": "string" + }, + "PortOverrides": { + "items": { + "$ref": "#/definitions/PortOverride" + }, + "type": "array" + }, + "ThresholdCount": { + "default": 3, + "description": "The number of consecutive health checks required to set the state of the endpoint to unhealthy.", + "type": "integer" + }, + "TrafficDialPercentage": { + "default": 100, + "description": "The percentage of traffic to sent to an AWS Region", + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "readOnlyProperties": [ + "/properties/EndpointGroupArn" + ], + "required": [ + "ListenerArn", + "EndpointGroupRegion" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-globalaccelerator", + "tagging": { + "taggable": false + }, + "typeName": "AWS::GlobalAccelerator::EndpointGroup", + "writeOnlyProperties": [ + "/properties/EndpointConfigurations/*/AttachmentArn" + ] +} diff --git a/src/schema/aws-globalaccelerator-listener.json b/src/schema/aws-globalaccelerator-listener.json index b9024bbc..224ec634 100644 --- a/src/schema/aws-globalaccelerator-listener.json +++ b/src/schema/aws-globalaccelerator-listener.json @@ -1,115 +1,115 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AcceleratorArn" - ], - "definitions": { - "Port": { - "description": "A network port number", - "maximum": 65535, - "minimum": 0, - "type": "integer" - }, - "PortRange": { - "additionalProperties": false, - "description": "A port range to support for connections from clients to your accelerator.", - "properties": { - "FromPort": { - "$ref": "#/definitions/Port" - }, - "ToPort": { - "$ref": "#/definitions/Port" - } - }, - "required": [ - "FromPort", - "ToPort" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::GlobalAccelerator::Listener", - "handlers": { - "create": { - "permissions": [ - "globalaccelerator:CreateListener", - "globalaccelerator:DescribeListener", - "globalaccelerator:DescribeAccelerator" - ] - }, - "delete": { - "permissions": [ - "globalaccelerator:DescribeListener", - "globalaccelerator:DeleteListener", - "globalaccelerator:DescribeAccelerator" - ] - }, - "list": { - "permissions": [ - "globalaccelerator:ListListeners" - ] - }, - "read": { - "permissions": [ - "globalaccelerator:DescribeListener" - ] - }, - "update": { - "permissions": [ - "globalaccelerator:UpdateListener", - "globalaccelerator:DescribeListener", - "globalaccelerator:DescribeAccelerator" - ] - } - }, - "primaryIdentifier": [ - "/properties/ListenerArn" - ], - "properties": { - "AcceleratorArn": { - "description": "The Amazon Resource Name (ARN) of the accelerator.", - "type": "string" - }, - "ClientAffinity": { - "default": "NONE", - "description": "Client affinity lets you direct all requests from a user to the same endpoint.", - "enum": [ - "NONE", - "SOURCE_IP" - ], - "type": "string" - }, - "ListenerArn": { - "description": "The Amazon Resource Name (ARN) of the listener.", - "type": "string" - }, - "PortRanges": { - "items": { - "$ref": "#/definitions/PortRange" - }, - "type": "array" - }, - "Protocol": { - "default": "TCP", - "description": "The protocol for the listener.", - "enum": [ - "TCP", - "UDP" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ListenerArn" - ], - "required": [ - "AcceleratorArn", - "PortRanges", - "Protocol" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-globalaccelerator", - "tagging": { - "taggable": false - }, - "typeName": "AWS::GlobalAccelerator::Listener" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AcceleratorArn" + ], + "definitions": { + "Port": { + "description": "A network port number", + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "PortRange": { + "additionalProperties": false, + "description": "A port range to support for connections from clients to your accelerator.", + "properties": { + "FromPort": { + "$ref": "#/definitions/Port" + }, + "ToPort": { + "$ref": "#/definitions/Port" + } + }, + "required": [ + "FromPort", + "ToPort" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::GlobalAccelerator::Listener", + "handlers": { + "create": { + "permissions": [ + "globalaccelerator:CreateListener", + "globalaccelerator:DescribeListener", + "globalaccelerator:DescribeAccelerator" + ] + }, + "delete": { + "permissions": [ + "globalaccelerator:DescribeListener", + "globalaccelerator:DeleteListener", + "globalaccelerator:DescribeAccelerator" + ] + }, + "list": { + "permissions": [ + "globalaccelerator:ListListeners" + ] + }, + "read": { + "permissions": [ + "globalaccelerator:DescribeListener" + ] + }, + "update": { + "permissions": [ + "globalaccelerator:UpdateListener", + "globalaccelerator:DescribeListener", + "globalaccelerator:DescribeAccelerator" + ] + } + }, + "primaryIdentifier": [ + "/properties/ListenerArn" + ], + "properties": { + "AcceleratorArn": { + "description": "The Amazon Resource Name (ARN) of the accelerator.", + "type": "string" + }, + "ClientAffinity": { + "default": "NONE", + "description": "Client affinity lets you direct all requests from a user to the same endpoint.", + "enum": [ + "NONE", + "SOURCE_IP" + ], + "type": "string" + }, + "ListenerArn": { + "description": "The Amazon Resource Name (ARN) of the listener.", + "type": "string" + }, + "PortRanges": { + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array" + }, + "Protocol": { + "default": "TCP", + "description": "The protocol for the listener.", + "enum": [ + "TCP", + "UDP" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ListenerArn" + ], + "required": [ + "AcceleratorArn", + "PortRanges", + "Protocol" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-globalaccelerator", + "tagging": { + "taggable": false + }, + "typeName": "AWS::GlobalAccelerator::Listener" +} diff --git a/src/schema/aws-glue-classifier.json b/src/schema/aws-glue-classifier.json index 8b4e23db..ec23075a 100644 --- a/src/schema/aws-glue-classifier.json +++ b/src/schema/aws-glue-classifier.json @@ -1,127 +1,127 @@ -{ - "additionalProperties": false, - "definitions": { - "CsvClassifier": { - "additionalProperties": false, - "properties": { - "AllowSingleColumn": { - "type": "boolean" - }, - "ContainsCustomDatatype": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ContainsHeader": { - "type": "string" - }, - "CustomDatatypeConfigured": { - "type": "boolean" - }, - "Delimiter": { - "type": "string" - }, - "DisableValueTrimming": { - "type": "boolean" - }, - "Header": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Name": { - "type": "string" - }, - "QuoteSymbol": { - "type": "string" - } - }, - "type": "object" - }, - "GrokClassifier": { - "additionalProperties": false, - "properties": { - "Classification": { - "type": "string" - }, - "CustomPatterns": { - "type": "string" - }, - "GrokPattern": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "GrokPattern", - "Classification" - ], - "type": "object" - }, - "JsonClassifier": { - "additionalProperties": false, - "properties": { - "JsonPath": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "JsonPath" - ], - "type": "object" - }, - "XMLClassifier": { - "additionalProperties": false, - "properties": { - "Classification": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "RowTag": { - "type": "string" - } - }, - "required": [ - "RowTag", - "Classification" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Glue::Classifier", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CsvClassifier": { - "$ref": "#/definitions/CsvClassifier" - }, - "GrokClassifier": { - "$ref": "#/definitions/GrokClassifier" - }, - "Id": { - "type": "string" - }, - "JsonClassifier": { - "$ref": "#/definitions/JsonClassifier" - }, - "XMLClassifier": { - "$ref": "#/definitions/XMLClassifier" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "typeName": "AWS::Glue::Classifier" -} +{ + "additionalProperties": false, + "definitions": { + "CsvClassifier": { + "additionalProperties": false, + "properties": { + "AllowSingleColumn": { + "type": "boolean" + }, + "ContainsCustomDatatype": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ContainsHeader": { + "type": "string" + }, + "CustomDatatypeConfigured": { + "type": "boolean" + }, + "Delimiter": { + "type": "string" + }, + "DisableValueTrimming": { + "type": "boolean" + }, + "Header": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Name": { + "type": "string" + }, + "QuoteSymbol": { + "type": "string" + } + }, + "type": "object" + }, + "GrokClassifier": { + "additionalProperties": false, + "properties": { + "Classification": { + "type": "string" + }, + "CustomPatterns": { + "type": "string" + }, + "GrokPattern": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "GrokPattern", + "Classification" + ], + "type": "object" + }, + "JsonClassifier": { + "additionalProperties": false, + "properties": { + "JsonPath": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "JsonPath" + ], + "type": "object" + }, + "XMLClassifier": { + "additionalProperties": false, + "properties": { + "Classification": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "RowTag": { + "type": "string" + } + }, + "required": [ + "RowTag", + "Classification" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Glue::Classifier", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CsvClassifier": { + "$ref": "#/definitions/CsvClassifier" + }, + "GrokClassifier": { + "$ref": "#/definitions/GrokClassifier" + }, + "Id": { + "type": "string" + }, + "JsonClassifier": { + "$ref": "#/definitions/JsonClassifier" + }, + "XMLClassifier": { + "$ref": "#/definitions/XMLClassifier" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::Glue::Classifier" +} diff --git a/src/schema/aws-glue-connection.json b/src/schema/aws-glue-connection.json index ae23f964..2a745bb0 100644 --- a/src/schema/aws-glue-connection.json +++ b/src/schema/aws-glue-connection.json @@ -1,81 +1,208 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CatalogId" - ], - "definitions": { - "ConnectionInput": { - "additionalProperties": false, - "properties": { - "ConnectionProperties": { - "type": "object" - }, - "ConnectionType": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "MatchCriteria": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Name": { - "type": "string" - }, - "PhysicalConnectionRequirements": { - "$ref": "#/definitions/PhysicalConnectionRequirements" - } - }, - "required": [ - "ConnectionType" - ], - "type": "object" - }, - "PhysicalConnectionRequirements": { - "additionalProperties": false, - "properties": { - "AvailabilityZone": { - "type": "string" - }, - "SecurityGroupIdList": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Glue::Connection", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CatalogId": { - "type": "string" - }, - "ConnectionInput": { - "$ref": "#/definitions/ConnectionInput" - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ConnectionInput", - "CatalogId" - ], - "typeName": "AWS::Glue::Connection" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CatalogId" + ], + "definitions": { + "AuthenticationConfigurationInput": { + "additionalProperties": false, + "properties": { + "AuthenticationType": { + "type": "string" + }, + "BasicAuthenticationCredentials": { + "$ref": "#/definitions/BasicAuthenticationCredentials" + }, + "CustomAuthenticationCredentials": { + "type": "object" + }, + "KmsKeyArn": { + "type": "string" + }, + "OAuth2Properties": { + "$ref": "#/definitions/OAuth2PropertiesInput" + }, + "SecretArn": { + "type": "string" + } + }, + "required": [ + "AuthenticationType" + ], + "type": "object" + }, + "AuthorizationCodeProperties": { + "additionalProperties": false, + "properties": { + "AuthorizationCode": { + "type": "string" + }, + "RedirectUri": { + "type": "string" + } + }, + "type": "object" + }, + "BasicAuthenticationCredentials": { + "additionalProperties": false, + "properties": { + "Password": { + "type": "string" + }, + "Username": { + "type": "string" + } + }, + "type": "object" + }, + "ConnectionInput": { + "additionalProperties": false, + "properties": { + "AthenaProperties": { + "type": "object" + }, + "AuthenticationConfiguration": { + "$ref": "#/definitions/AuthenticationConfigurationInput" + }, + "ConnectionProperties": { + "type": "object" + }, + "ConnectionType": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "MatchCriteria": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Name": { + "type": "string" + }, + "PhysicalConnectionRequirements": { + "$ref": "#/definitions/PhysicalConnectionRequirements" + }, + "PythonProperties": { + "type": "object" + }, + "SparkProperties": { + "type": "object" + }, + "ValidateCredentials": { + "type": "boolean" + }, + "ValidateForComputeEnvironments": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ConnectionType" + ], + "type": "object" + }, + "OAuth2ClientApplication": { + "additionalProperties": false, + "properties": { + "AWSManagedClientApplicationReference": { + "type": "string" + }, + "UserManagedClientApplicationClientId": { + "type": "string" + } + }, + "type": "object" + }, + "OAuth2Credentials": { + "additionalProperties": false, + "properties": { + "AccessToken": { + "type": "string" + }, + "JwtToken": { + "type": "string" + }, + "RefreshToken": { + "type": "string" + }, + "UserManagedClientApplicationClientSecret": { + "type": "string" + } + }, + "type": "object" + }, + "OAuth2PropertiesInput": { + "additionalProperties": false, + "properties": { + "AuthorizationCodeProperties": { + "$ref": "#/definitions/AuthorizationCodeProperties" + }, + "OAuth2ClientApplication": { + "$ref": "#/definitions/OAuth2ClientApplication" + }, + "OAuth2Credentials": { + "$ref": "#/definitions/OAuth2Credentials" + }, + "OAuth2GrantType": { + "type": "string" + }, + "TokenUrl": { + "type": "string" + }, + "TokenUrlParametersMap": { + "type": "object" + } + }, + "type": "object" + }, + "PhysicalConnectionRequirements": { + "additionalProperties": false, + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "SecurityGroupIdList": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SubnetId": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Glue::Connection", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CatalogId": { + "type": "string" + }, + "ConnectionInput": { + "$ref": "#/definitions/ConnectionInput" + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ConnectionInput", + "CatalogId" + ], + "typeName": "AWS::Glue::Connection" +} diff --git a/src/schema/aws-glue-crawler.json b/src/schema/aws-glue-crawler.json index 0ea4420c..7dd3410a 100644 --- a/src/schema/aws-glue-crawler.json +++ b/src/schema/aws-glue-crawler.json @@ -1,418 +1,461 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "CatalogTarget": { - "additionalProperties": false, - "description": "Specifies an AWS Glue Data Catalog target.", - "properties": { - "ConnectionName": { - "description": "The name of the connection for an Amazon S3-backed Data Catalog table to be a target of the crawl when using a Catalog connection type paired with a NETWORK Connection type.", - "type": "string" - }, - "DatabaseName": { - "description": "The name of the database to be synchronized.", - "type": "string" - }, - "DlqEventQueueArn": { - "description": "A valid Amazon dead-letter SQS ARN. For example, arn:aws:sqs:region:account:deadLetterQueue.", - "type": "string" - }, - "EventQueueArn": { - "description": "A valid Amazon SQS ARN. For example, arn:aws:sqs:region:account:sqs.", - "type": "string" - }, - "Tables": { - "description": "A list of the tables to be synchronized.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "DeltaTarget": { - "additionalProperties": false, - "description": "Specifies a Delta data store to crawl one or more Delta tables.", - "properties": { - "ConnectionName": { - "description": "The name of the connection to use to connect to the Delta table target.", - "type": "string" - }, - "CreateNativeDeltaTable": { - "description": "Specifies whether the crawler will create native tables, to allow integration with query engines that support querying of the Delta transaction log directly.", - "type": "boolean" - }, - "DeltaTables": { - "description": "", - "items": { - "description": "A list of the Amazon S3 paths to the Delta tables.", - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "WriteManifest": { - "description": "Specifies whether to write the manifest files to the Delta table path.", - "type": "boolean" - } - }, - "type": "object" - }, - "DynamoDBTarget": { - "additionalProperties": false, - "description": "Specifies an Amazon DynamoDB table to crawl.", - "properties": { - "Path": { - "description": "The name of the DynamoDB table to crawl.", - "type": "string" - } - }, - "type": "object" - }, - "IcebergTarget": { - "additionalProperties": false, - "description": "Specifies Apache Iceberg data store targets.", - "properties": { - "ConnectionName": { - "description": "The name of the connection to use to connect to the Iceberg target.", - "type": "string" - }, - "Exclusions": { - "description": "A list of global patterns used to exclude from the crawl.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "MaximumTraversalDepth": { - "description": "The maximum depth of Amazon S3 paths that the crawler can traverse to discover the Iceberg metadata folder in your Amazon S3 path. Used to limit the crawler run time.", - "type": "integer" - }, - "Paths": { - "description": "One or more Amazon S3 paths that contains Iceberg metadata folders as s3://bucket/prefix .", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "JdbcTarget": { - "additionalProperties": false, - "description": "Specifies a JDBC data store to crawl.", - "properties": { - "ConnectionName": { - "description": "The name of the connection to use to connect to the JDBC target.", - "type": "string" - }, - "EnableAdditionalMetadata": { - "description": "Specify a value of RAWTYPES or COMMENTS to enable additional metadata in table responses. RAWTYPES provides the native-level datatype. COMMENTS provides comments associated with a column or table in the database.\n\nIf you do not need additional metadata, keep the field empty.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Exclusions": { - "description": "A list of glob patterns used to exclude from the crawl. For more information, see Catalog Tables with a Crawler.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Path": { - "description": "The path of the JDBC target.", - "type": "string" - } - }, - "type": "object" - }, - "LakeFormationConfiguration": { - "additionalProperties": false, - "description": "Specifies AWS Lake Formation configuration settings for the crawler", - "properties": { - "AccountId": { - "description": "Required for cross account crawls. For same account crawls as the target data, this can be left as null.", - "type": "string" - }, - "UseLakeFormationCredentials": { - "description": "Specifies whether to use AWS Lake Formation credentials for the crawler instead of the IAM role credentials.", - "type": "boolean" - } - }, - "type": "object" - }, - "MongoDBTarget": { - "additionalProperties": false, - "description": "Specifies an Amazon DocumentDB or MongoDB data store to crawl.", - "properties": { - "ConnectionName": { - "description": "The name of the connection to use to connect to the Amazon DocumentDB or MongoDB target.", - "type": "string" - }, - "Path": { - "description": "The path of the Amazon DocumentDB or MongoDB target (database/collection).", - "type": "string" - } - }, - "type": "object" - }, - "RecrawlPolicy": { - "additionalProperties": false, - "description": "When crawling an Amazon S3 data source after the first crawl is complete, specifies whether to crawl the entire dataset again or to crawl only folders that were added since the last crawler run. For more information, see Incremental Crawls in AWS Glue in the developer guide.", - "properties": { - "RecrawlBehavior": { - "description": "Specifies whether to crawl the entire dataset again or to crawl only folders that were added since the last crawler run. A value of CRAWL_EVERYTHING specifies crawling the entire dataset again. A value of CRAWL_NEW_FOLDERS_ONLY specifies crawling only folders that were added since the last crawler run. A value of CRAWL_EVENT_MODE specifies crawling only the changes identified by Amazon S3 events.", - "type": "string" - } - }, - "type": "object" - }, - "S3Target": { - "additionalProperties": false, - "description": "Specifies a data store in Amazon Simple Storage Service (Amazon S3).", - "properties": { - "ConnectionName": { - "description": "The name of a connection which allows a job or crawler to access data in Amazon S3 within an Amazon Virtual Private Cloud environment (Amazon VPC).", - "type": "string" - }, - "DlqEventQueueArn": { - "description": "A valid Amazon dead-letter SQS ARN. For example, arn:aws:sqs:region:account:deadLetterQueue.", - "type": "string" - }, - "EventQueueArn": { - "description": "A valid Amazon SQS ARN. For example, arn:aws:sqs:region:account:sqs.", - "type": "string" - }, - "Exclusions": { - "description": "A list of glob patterns used to exclude from the crawl.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Path": { - "description": "The path to the Amazon S3 target.", - "type": "string" - }, - "SampleSize": { - "description": "Sets the number of files in each leaf folder to be crawled when crawling sample files in a dataset. If not set, all the files are crawled. A valid value is an integer between 1 and 249.", - "type": "integer" - } - }, - "type": "object" - }, - "Schedule": { - "additionalProperties": false, - "description": "A scheduling object using a cron statement to schedule an event.", - "properties": { - "ScheduleExpression": { - "description": "A cron expression used to specify the schedule. For more information, see Time-Based Schedules for Jobs and Crawlers. For example, to run something every day at 12:15 UTC, specify cron(15 12 * * ? *).", - "type": "string" - } - }, - "type": "object" - }, - "SchemaChangePolicy": { - "additionalProperties": false, - "description": "The policy that specifies update and delete behaviors for the crawler. The policy tells the crawler what to do in the event that it detects a change in a table that already exists in the customer's database at the time of the crawl. The SchemaChangePolicy does not affect whether or how new tables and partitions are added. New tables and partitions are always created regardless of the SchemaChangePolicy on a crawler. The SchemaChangePolicy consists of two components, UpdateBehavior and DeleteBehavior.", - "properties": { - "DeleteBehavior": { - "description": "The deletion behavior when the crawler finds a deleted object. A value of LOG specifies that if a table or partition is found to no longer exist, do not delete it, only log that it was found to no longer exist. A value of DELETE_FROM_DATABASE specifies that if a table or partition is found to have been removed, delete it from the database. A value of DEPRECATE_IN_DATABASE specifies that if a table has been found to no longer exist, to add a property to the table that says 'DEPRECATED' and includes a timestamp with the time of deprecation.", - "type": "string" - }, - "UpdateBehavior": { - "description": "The update behavior when the crawler finds a changed schema. A value of LOG specifies that if a table or a partition already exists, and a change is detected, do not update it, only log that a change was detected. Add new tables and new partitions (including on existing tables). A value of UPDATE_IN_DATABASE specifies that if a table or partition already exists, and a change is detected, update it. Add new tables and partitions.", - "type": "string" - } - }, - "type": "object" - }, - "Targets": { - "additionalProperties": false, - "description": "Specifies data stores to crawl.", - "properties": { - "CatalogTargets": { - "description": "Specifies AWS Glue Data Catalog targets.", - "items": { - "$ref": "#/definitions/CatalogTarget" - }, - "type": "array", - "uniqueItems": false - }, - "DeltaTargets": { - "description": "Specifies an array of Delta data store targets.", - "items": { - "$ref": "#/definitions/DeltaTarget" - }, - "type": "array", - "uniqueItems": false - }, - "DynamoDBTargets": { - "description": "Specifies Amazon DynamoDB targets.", - "items": { - "$ref": "#/definitions/DynamoDBTarget" - }, - "type": "array", - "uniqueItems": false - }, - "IcebergTargets": { - "description": "Specifies Apache Iceberg data store targets.", - "items": { - "$ref": "#/definitions/IcebergTarget" - }, - "type": "array", - "uniqueItems": false - }, - "JdbcTargets": { - "description": "Specifies JDBC targets.", - "items": { - "$ref": "#/definitions/JdbcTarget" - }, - "type": "array", - "uniqueItems": false - }, - "MongoDBTargets": { - "description": "A list of Mongo DB targets.", - "items": { - "$ref": "#/definitions/MongoDBTarget" - }, - "type": "array", - "uniqueItems": false - }, - "S3Targets": { - "description": "Specifies Amazon Simple Storage Service (Amazon S3) targets.", - "items": { - "$ref": "#/definitions/S3Target" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Glue::Crawler", - "handlers": { - "create": { - "permissions": [ - "glue:CreateCrawler", - "glue:GetCrawler", - "glue:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "glue:DeleteCrawler", - "glue:GetCrawler", - "glue:StopCrawler", - "iam:PassRole" - ] - }, - "list": { - "permissions": [ - "glue:ListCrawlers", - "iam:PassRole" - ] - }, - "read": { - "permissions": [ - "glue:GetCrawler", - "glue:GetTags", - "iam:PassRole" - ] - }, - "update": { - "permissions": [ - "glue:UpdateCrawler", - "glue:UntagResource", - "glue:TagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Classifiers": { - "description": "A list of UTF-8 strings that specify the names of custom classifiers that are associated with the crawler.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Configuration": { - "description": "Crawler configuration information. This versioned JSON string allows users to specify aspects of a crawler's behavior.", - "type": "string" - }, - "CrawlerSecurityConfiguration": { - "description": "The name of the SecurityConfiguration structure to be used by this crawler.", - "type": "string" - }, - "DatabaseName": { - "description": "The name of the database in which the crawler's output is stored.", - "type": "string" - }, - "Description": { - "description": "A description of the crawler.", - "type": "string" - }, - "LakeFormationConfiguration": { - "$ref": "#/definitions/LakeFormationConfiguration" - }, - "Name": { - "description": "The name of the crawler.", - "type": "string" - }, - "RecrawlPolicy": { - "$ref": "#/definitions/RecrawlPolicy" - }, - "Role": { - "description": "The Amazon Resource Name (ARN) of an IAM role that's used to access customer resources, such as Amazon Simple Storage Service (Amazon S3) data.", - "type": "string" - }, - "Schedule": { - "$ref": "#/definitions/Schedule" - }, - "SchemaChangePolicy": { - "$ref": "#/definitions/SchemaChangePolicy" - }, - "TablePrefix": { - "description": "The prefix added to the names of tables that are created.", - "type": "string" - }, - "Tags": { - "description": "The tags to use with this crawler.", - "type": "object" - }, - "Targets": { - "$ref": "#/definitions/Targets" - } - }, - "required": [ - "Role", - "Targets" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Glue::Crawler" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "CatalogTarget": { + "additionalProperties": false, + "description": "Specifies an AWS Glue Data Catalog target.", + "properties": { + "ConnectionName": { + "description": "The name of the connection for an Amazon S3-backed Data Catalog table to be a target of the crawl when using a Catalog connection type paired with a NETWORK Connection type.", + "type": "string" + }, + "DatabaseName": { + "description": "The name of the database to be synchronized.", + "type": "string" + }, + "DlqEventQueueArn": { + "description": "A valid Amazon dead-letter SQS ARN. For example, arn:aws:sqs:region:account:deadLetterQueue.", + "type": "string" + }, + "EventQueueArn": { + "description": "A valid Amazon SQS ARN. For example, arn:aws:sqs:region:account:sqs.", + "type": "string" + }, + "Tables": { + "description": "A list of the tables to be synchronized.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DeltaTarget": { + "additionalProperties": false, + "description": "Specifies a Delta data store to crawl one or more Delta tables.", + "properties": { + "ConnectionName": { + "description": "The name of the connection to use to connect to the Delta table target.", + "type": "string" + }, + "CreateNativeDeltaTable": { + "description": "Specifies whether the crawler will create native tables, to allow integration with query engines that support querying of the Delta transaction log directly.", + "type": "boolean" + }, + "DeltaTables": { + "description": "", + "items": { + "description": "A list of the Amazon S3 paths to the Delta tables.", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "WriteManifest": { + "description": "Specifies whether to write the manifest files to the Delta table path.", + "type": "boolean" + } + }, + "type": "object" + }, + "DynamoDBTarget": { + "additionalProperties": false, + "description": "Specifies an Amazon DynamoDB table to crawl.", + "properties": { + "Path": { + "description": "The name of the DynamoDB table to crawl.", + "type": "string" + } + }, + "type": "object" + }, + "HudiTarget": { + "additionalProperties": false, + "description": "Specifies Apache Hudi data store targets.", + "properties": { + "ConnectionName": { + "description": "The name of the connection to use to connect to the Hudi target.", + "type": "string" + }, + "Exclusions": { + "description": "A list of global patterns used to exclude from the crawl.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MaximumTraversalDepth": { + "description": "The maximum depth of Amazon S3 paths that the crawler can traverse to discover the Hudi metadata folder in your Amazon S3 path. Used to limit the crawler run time.", + "type": "integer" + }, + "Paths": { + "description": "One or more Amazon S3 paths that contains Hudi metadata folders as s3://bucket/prefix .", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "IcebergTarget": { + "additionalProperties": false, + "description": "Specifies Apache Iceberg data store targets.", + "properties": { + "ConnectionName": { + "description": "The name of the connection to use to connect to the Iceberg target.", + "type": "string" + }, + "Exclusions": { + "description": "A list of global patterns used to exclude from the crawl.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MaximumTraversalDepth": { + "description": "The maximum depth of Amazon S3 paths that the crawler can traverse to discover the Iceberg metadata folder in your Amazon S3 path. Used to limit the crawler run time.", + "type": "integer" + }, + "Paths": { + "description": "One or more Amazon S3 paths that contains Iceberg metadata folders as s3://bucket/prefix .", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JdbcTarget": { + "additionalProperties": false, + "description": "Specifies a JDBC data store to crawl.", + "properties": { + "ConnectionName": { + "description": "The name of the connection to use to connect to the JDBC target.", + "type": "string" + }, + "EnableAdditionalMetadata": { + "description": "Specify a value of RAWTYPES or COMMENTS to enable additional metadata in table responses. RAWTYPES provides the native-level datatype. COMMENTS provides comments associated with a column or table in the database.\n\nIf you do not need additional metadata, keep the field empty.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Exclusions": { + "description": "A list of glob patterns used to exclude from the crawl. For more information, see Catalog Tables with a Crawler.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Path": { + "description": "The path of the JDBC target.", + "type": "string" + } + }, + "type": "object" + }, + "LakeFormationConfiguration": { + "additionalProperties": false, + "description": "Specifies AWS Lake Formation configuration settings for the crawler", + "properties": { + "AccountId": { + "description": "Required for cross account crawls. For same account crawls as the target data, this can be left as null.", + "type": "string" + }, + "UseLakeFormationCredentials": { + "description": "Specifies whether to use AWS Lake Formation credentials for the crawler instead of the IAM role credentials.", + "type": "boolean" + } + }, + "type": "object" + }, + "MongoDBTarget": { + "additionalProperties": false, + "description": "Specifies an Amazon DocumentDB or MongoDB data store to crawl.", + "properties": { + "ConnectionName": { + "description": "The name of the connection to use to connect to the Amazon DocumentDB or MongoDB target.", + "type": "string" + }, + "Path": { + "description": "The path of the Amazon DocumentDB or MongoDB target (database/collection).", + "type": "string" + } + }, + "type": "object" + }, + "RecrawlPolicy": { + "additionalProperties": false, + "description": "When crawling an Amazon S3 data source after the first crawl is complete, specifies whether to crawl the entire dataset again or to crawl only folders that were added since the last crawler run. For more information, see Incremental Crawls in AWS Glue in the developer guide.", + "properties": { + "RecrawlBehavior": { + "description": "Specifies whether to crawl the entire dataset again or to crawl only folders that were added since the last crawler run. A value of CRAWL_EVERYTHING specifies crawling the entire dataset again. A value of CRAWL_NEW_FOLDERS_ONLY specifies crawling only folders that were added since the last crawler run. A value of CRAWL_EVENT_MODE specifies crawling only the changes identified by Amazon S3 events.", + "type": "string" + } + }, + "type": "object" + }, + "S3Target": { + "additionalProperties": false, + "description": "Specifies a data store in Amazon Simple Storage Service (Amazon S3).", + "properties": { + "ConnectionName": { + "description": "The name of a connection which allows a job or crawler to access data in Amazon S3 within an Amazon Virtual Private Cloud environment (Amazon VPC).", + "type": "string" + }, + "DlqEventQueueArn": { + "description": "A valid Amazon dead-letter SQS ARN. For example, arn:aws:sqs:region:account:deadLetterQueue.", + "type": "string" + }, + "EventQueueArn": { + "description": "A valid Amazon SQS ARN. For example, arn:aws:sqs:region:account:sqs.", + "type": "string" + }, + "Exclusions": { + "description": "A list of glob patterns used to exclude from the crawl.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Path": { + "description": "The path to the Amazon S3 target.", + "type": "string" + }, + "SampleSize": { + "description": "Sets the number of files in each leaf folder to be crawled when crawling sample files in a dataset. If not set, all the files are crawled. A valid value is an integer between 1 and 249.", + "type": "integer" + } + }, + "type": "object" + }, + "Schedule": { + "additionalProperties": false, + "description": "A scheduling object using a cron statement to schedule an event.", + "properties": { + "ScheduleExpression": { + "description": "A cron expression used to specify the schedule. For more information, see Time-Based Schedules for Jobs and Crawlers. For example, to run something every day at 12:15 UTC, specify cron(15 12 * * ? *).", + "type": "string" + } + }, + "type": "object" + }, + "SchemaChangePolicy": { + "additionalProperties": false, + "description": "The policy that specifies update and delete behaviors for the crawler. The policy tells the crawler what to do in the event that it detects a change in a table that already exists in the customer's database at the time of the crawl. The SchemaChangePolicy does not affect whether or how new tables and partitions are added. New tables and partitions are always created regardless of the SchemaChangePolicy on a crawler. The SchemaChangePolicy consists of two components, UpdateBehavior and DeleteBehavior.", + "properties": { + "DeleteBehavior": { + "description": "The deletion behavior when the crawler finds a deleted object. A value of LOG specifies that if a table or partition is found to no longer exist, do not delete it, only log that it was found to no longer exist. A value of DELETE_FROM_DATABASE specifies that if a table or partition is found to have been removed, delete it from the database. A value of DEPRECATE_IN_DATABASE specifies that if a table has been found to no longer exist, to add a property to the table that says 'DEPRECATED' and includes a timestamp with the time of deprecation.", + "type": "string" + }, + "UpdateBehavior": { + "description": "The update behavior when the crawler finds a changed schema. A value of LOG specifies that if a table or a partition already exists, and a change is detected, do not update it, only log that a change was detected. Add new tables and new partitions (including on existing tables). A value of UPDATE_IN_DATABASE specifies that if a table or partition already exists, and a change is detected, update it. Add new tables and partitions.", + "type": "string" + } + }, + "type": "object" + }, + "Targets": { + "additionalProperties": false, + "description": "Specifies data stores to crawl.", + "properties": { + "CatalogTargets": { + "description": "Specifies AWS Glue Data Catalog targets.", + "items": { + "$ref": "#/definitions/CatalogTarget" + }, + "type": "array", + "uniqueItems": false + }, + "DeltaTargets": { + "description": "Specifies an array of Delta data store targets.", + "items": { + "$ref": "#/definitions/DeltaTarget" + }, + "type": "array", + "uniqueItems": false + }, + "DynamoDBTargets": { + "description": "Specifies Amazon DynamoDB targets.", + "items": { + "$ref": "#/definitions/DynamoDBTarget" + }, + "type": "array", + "uniqueItems": false + }, + "HudiTargets": { + "description": "Specifies Apache Hudi data store targets.", + "items": { + "$ref": "#/definitions/HudiTarget" + }, + "type": "array", + "uniqueItems": false + }, + "IcebergTargets": { + "description": "Specifies Apache Iceberg data store targets.", + "items": { + "$ref": "#/definitions/IcebergTarget" + }, + "type": "array", + "uniqueItems": false + }, + "JdbcTargets": { + "description": "Specifies JDBC targets.", + "items": { + "$ref": "#/definitions/JdbcTarget" + }, + "type": "array", + "uniqueItems": false + }, + "MongoDBTargets": { + "description": "A list of Mongo DB targets.", + "items": { + "$ref": "#/definitions/MongoDBTarget" + }, + "type": "array", + "uniqueItems": false + }, + "S3Targets": { + "description": "Specifies Amazon Simple Storage Service (Amazon S3) targets.", + "items": { + "$ref": "#/definitions/S3Target" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Glue::Crawler", + "handlers": { + "create": { + "permissions": [ + "glue:CreateCrawler", + "glue:GetCrawler", + "glue:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "glue:DeleteCrawler", + "glue:GetCrawler", + "glue:StopCrawler", + "iam:PassRole" + ] + }, + "list": { + "permissions": [ + "glue:ListCrawlers", + "iam:PassRole" + ] + }, + "read": { + "permissions": [ + "glue:GetCrawler", + "glue:GetTags", + "iam:PassRole" + ] + }, + "update": { + "permissions": [ + "glue:UpdateCrawler", + "glue:UntagResource", + "glue:TagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Classifiers": { + "description": "A list of UTF-8 strings that specify the names of custom classifiers that are associated with the crawler.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Configuration": { + "description": "Crawler configuration information. This versioned JSON string allows users to specify aspects of a crawler's behavior.", + "type": "string" + }, + "CrawlerSecurityConfiguration": { + "description": "The name of the SecurityConfiguration structure to be used by this crawler.", + "type": "string" + }, + "DatabaseName": { + "description": "The name of the database in which the crawler's output is stored.", + "type": "string" + }, + "Description": { + "description": "A description of the crawler.", + "type": "string" + }, + "LakeFormationConfiguration": { + "$ref": "#/definitions/LakeFormationConfiguration" + }, + "Name": { + "description": "The name of the crawler.", + "type": "string" + }, + "RecrawlPolicy": { + "$ref": "#/definitions/RecrawlPolicy" + }, + "Role": { + "description": "The Amazon Resource Name (ARN) of an IAM role that's used to access customer resources, such as Amazon Simple Storage Service (Amazon S3) data.", + "type": "string" + }, + "Schedule": { + "$ref": "#/definitions/Schedule" + }, + "SchemaChangePolicy": { + "$ref": "#/definitions/SchemaChangePolicy" + }, + "TablePrefix": { + "description": "The prefix added to the names of tables that are created.", + "type": "string" + }, + "Tags": { + "description": "The tags to use with this crawler.", + "type": "object" + }, + "Targets": { + "$ref": "#/definitions/Targets" + } + }, + "required": [ + "Role", + "Targets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "glue:TagResource", + "glue:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Glue::Crawler" +} diff --git a/src/schema/aws-glue-customentitytype.json b/src/schema/aws-glue-customentitytype.json index 9b4265e7..3623233d 100644 --- a/src/schema/aws-glue-customentitytype.json +++ b/src/schema/aws-glue-customentitytype.json @@ -1,32 +1,32 @@ -{ - "additionalProperties": false, - "description": "Resource Type definition for AWS::Glue::CustomEntityType", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ContextWords": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "RegexString": { - "type": "string" - }, - "Tags": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "typeName": "AWS::Glue::CustomEntityType" -} +{ + "additionalProperties": false, + "description": "Resource Type definition for AWS::Glue::CustomEntityType", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ContextWords": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "RegexString": { + "type": "string" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::Glue::CustomEntityType" +} diff --git a/src/schema/aws-glue-database.json b/src/schema/aws-glue-database.json index cacb2e72..32091e6e 100644 --- a/src/schema/aws-glue-database.json +++ b/src/schema/aws-glue-database.json @@ -1,194 +1,194 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DatabaseName" - ], - "definitions": { - "DataLakePrincipal": { - "additionalProperties": false, - "description": "The AWS Lake Formation principal.", - "properties": { - "DataLakePrincipalIdentifier": { - "description": "An identifier for the AWS Lake Formation principal.", - "type": "string" - } - }, - "type": "object" - }, - "DatabaseIdentifier": { - "additionalProperties": false, - "description": "A structure that describes a target database for resource linking.", - "properties": { - "CatalogId": { - "description": "The ID of the Data Catalog in which the database resides.", - "type": "string" - }, - "DatabaseName": { - "description": "The name of the catalog database.", - "type": "string" - }, - "Region": { - "description": "Region of the target database.", - "type": "string" - } - }, - "type": "object" - }, - "DatabaseInput": { - "additionalProperties": false, - "description": "The structure used to create or update a database.", - "properties": { - "CreateTableDefaultPermissions": { - "description": "Creates a set of default permissions on the table for principals. Used by AWS Lake Formation. Not used in the normal course of AWS Glue operations.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PrincipalPrivileges", - "description": "The permissions granted to a principal." - }, - "type": "array", - "uniqueItems": false - }, - "Description": { - "description": "A description of the database.", - "type": "string" - }, - "FederatedDatabase": { - "$ref": "#/definitions/FederatedDatabase", - "description": "A FederatedDatabase structure that references an entity outside the AWS Glue Data Catalog." - }, - "LocationUri": { - "description": "The location of the database (for example, an HDFS path).", - "type": "string" - }, - "Name": { - "description": "The name of the database. For hive compatibility, this is folded to lowercase when it is stored.", - "type": "string" - }, - "Parameters": { - "description": "These key-value pairs define parameters and properties of the database.", - "type": "object" - }, - "TargetDatabase": { - "$ref": "#/definitions/DatabaseIdentifier", - "description": "A DatabaseIdentifier structure that describes a target database for resource linking." - } - }, - "type": "object" - }, - "FederatedDatabase": { - "additionalProperties": false, - "description": "A FederatedDatabase structure that references an entity outside the AWS Glue Data Catalog.", - "properties": { - "ConnectionName": { - "description": "The name of the connection to the external metastore.", - "type": "string" - }, - "Identifier": { - "description": "A unique identifier for the federated database.", - "type": "string" - } - }, - "type": "object" - }, - "PrincipalPrivileges": { - "additionalProperties": false, - "description": "The permissions granted to a principal.", - "properties": { - "Permissions": { - "description": "The permissions that are granted to the principal.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Principal": { - "$ref": "#/definitions/DataLakePrincipal", - "description": "The principal who is granted permissions." - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Glue::Database", - "handlers": { - "create": { - "permissions": [ - "glue:CreateDatabase", - "glue:GetDatabase", - "glue:PassConnection", - "glue:CreateConnection", - "lakeformation:ListResources", - "lakeformation:DescribeResource", - "lakeformation:DescribeLakeFormationIdentityCenterConfiguration" - ] - }, - "delete": { - "permissions": [ - "glue:DeleteDatabase", - "glue:GetDatabase", - "glue:DeleteConnection", - "glue:GetConnection", - "lakeformation:ListResources", - "lakeformation:DescribeResource", - "lakeformation:DescribeLakeFormationIdentityCenterConfiguration" - ] - }, - "list": { - "permissions": [ - "glue:GetDatabases", - "lakeformation:ListResources", - "lakeformation:DescribeResource", - "lakeformation:DescribeLakeFormationIdentityCenterConfiguration" - ] - }, - "read": { - "permissions": [ - "glue:GetDatabase", - "glue:GetConnection", - "lakeformation:ListResources", - "lakeformation:DescribeResource", - "lakeformation:DescribeLakeFormationIdentityCenterConfiguration" - ] - }, - "update": { - "permissions": [ - "glue:UpdateDatabase", - "glue:UpdateConnection", - "lakeformation:ListResources", - "lakeformation:DescribeResource", - "lakeformation:DescribeLakeFormationIdentityCenterConfiguration" - ] - } - }, - "primaryIdentifier": [ - "/properties/DatabaseName" - ], - "properties": { - "CatalogId": { - "description": "The AWS account ID for the account in which to create the catalog object.", - "type": "string" - }, - "DatabaseInput": { - "$ref": "#/definitions/DatabaseInput", - "description": "The metadata for the database." - }, - "DatabaseName": { - "description": "The name of the database. For hive compatibility, this is folded to lowercase when it is store.", - "type": "string" - } - }, - "required": [ - "DatabaseInput", - "CatalogId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Glue::Database" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DatabaseName" + ], + "definitions": { + "DataLakePrincipal": { + "additionalProperties": false, + "description": "The AWS Lake Formation principal.", + "properties": { + "DataLakePrincipalIdentifier": { + "description": "An identifier for the AWS Lake Formation principal.", + "type": "string" + } + }, + "type": "object" + }, + "DatabaseIdentifier": { + "additionalProperties": false, + "description": "A structure that describes a target database for resource linking.", + "properties": { + "CatalogId": { + "description": "The ID of the Data Catalog in which the database resides.", + "type": "string" + }, + "DatabaseName": { + "description": "The name of the catalog database.", + "type": "string" + }, + "Region": { + "description": "Region of the target database.", + "type": "string" + } + }, + "type": "object" + }, + "DatabaseInput": { + "additionalProperties": false, + "description": "The structure used to create or update a database.", + "properties": { + "CreateTableDefaultPermissions": { + "description": "Creates a set of default permissions on the table for principals. Used by AWS Lake Formation. Not used in the normal course of AWS Glue operations.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PrincipalPrivileges", + "description": "The permissions granted to a principal." + }, + "type": "array", + "uniqueItems": false + }, + "Description": { + "description": "A description of the database.", + "type": "string" + }, + "FederatedDatabase": { + "$ref": "#/definitions/FederatedDatabase", + "description": "A FederatedDatabase structure that references an entity outside the AWS Glue Data Catalog." + }, + "LocationUri": { + "description": "The location of the database (for example, an HDFS path).", + "type": "string" + }, + "Name": { + "description": "The name of the database. For hive compatibility, this is folded to lowercase when it is stored.", + "type": "string" + }, + "Parameters": { + "description": "These key-value pairs define parameters and properties of the database.", + "type": "object" + }, + "TargetDatabase": { + "$ref": "#/definitions/DatabaseIdentifier", + "description": "A DatabaseIdentifier structure that describes a target database for resource linking." + } + }, + "type": "object" + }, + "FederatedDatabase": { + "additionalProperties": false, + "description": "A FederatedDatabase structure that references an entity outside the AWS Glue Data Catalog.", + "properties": { + "ConnectionName": { + "description": "The name of the connection to the external metastore.", + "type": "string" + }, + "Identifier": { + "description": "A unique identifier for the federated database.", + "type": "string" + } + }, + "type": "object" + }, + "PrincipalPrivileges": { + "additionalProperties": false, + "description": "The permissions granted to a principal.", + "properties": { + "Permissions": { + "description": "The permissions that are granted to the principal.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Principal": { + "$ref": "#/definitions/DataLakePrincipal", + "description": "The principal who is granted permissions." + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Glue::Database", + "handlers": { + "create": { + "permissions": [ + "glue:CreateDatabase", + "glue:GetDatabase", + "glue:PassConnection", + "glue:CreateConnection", + "lakeformation:ListResources", + "lakeformation:DescribeResource", + "lakeformation:DescribeLakeFormationIdentityCenterConfiguration" + ] + }, + "delete": { + "permissions": [ + "glue:DeleteDatabase", + "glue:GetDatabase", + "glue:DeleteConnection", + "glue:GetConnection", + "lakeformation:ListResources", + "lakeformation:DescribeResource", + "lakeformation:DescribeLakeFormationIdentityCenterConfiguration" + ] + }, + "list": { + "permissions": [ + "glue:GetDatabases", + "lakeformation:ListResources", + "lakeformation:DescribeResource", + "lakeformation:DescribeLakeFormationIdentityCenterConfiguration" + ] + }, + "read": { + "permissions": [ + "glue:GetDatabase", + "glue:GetConnection", + "lakeformation:ListResources", + "lakeformation:DescribeResource", + "lakeformation:DescribeLakeFormationIdentityCenterConfiguration" + ] + }, + "update": { + "permissions": [ + "glue:UpdateDatabase", + "glue:UpdateConnection", + "lakeformation:ListResources", + "lakeformation:DescribeResource", + "lakeformation:DescribeLakeFormationIdentityCenterConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/DatabaseName" + ], + "properties": { + "CatalogId": { + "description": "The AWS account ID for the account in which to create the catalog object.", + "type": "string" + }, + "DatabaseInput": { + "$ref": "#/definitions/DatabaseInput", + "description": "The metadata for the database." + }, + "DatabaseName": { + "description": "The name of the database. For hive compatibility, this is folded to lowercase when it is store.", + "type": "string" + } + }, + "required": [ + "DatabaseInput", + "CatalogId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Glue::Database" +} diff --git a/src/schema/aws-glue-datacatalogencryptionsettings.json b/src/schema/aws-glue-datacatalogencryptionsettings.json index 8248b587..546c4930 100644 --- a/src/schema/aws-glue-datacatalogencryptionsettings.json +++ b/src/schema/aws-glue-datacatalogencryptionsettings.json @@ -1,70 +1,70 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CatalogId" - ], - "definitions": { - "ConnectionPasswordEncryption": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "type": "string" - }, - "ReturnConnectionPasswordEncrypted": { - "type": "boolean" - } - }, - "type": "object" - }, - "DataCatalogEncryptionSettings": { - "additionalProperties": false, - "properties": { - "ConnectionPasswordEncryption": { - "$ref": "#/definitions/ConnectionPasswordEncryption" - }, - "EncryptionAtRest": { - "$ref": "#/definitions/EncryptionAtRest" - } - }, - "type": "object" - }, - "EncryptionAtRest": { - "additionalProperties": false, - "properties": { - "CatalogEncryptionMode": { - "type": "string" - }, - "CatalogEncryptionServiceRole": { - "type": "string" - }, - "SseAwsKmsKeyId": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Glue::DataCatalogEncryptionSettings", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CatalogId": { - "type": "string" - }, - "DataCatalogEncryptionSettings": { - "$ref": "#/definitions/DataCatalogEncryptionSettings" - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "DataCatalogEncryptionSettings", - "CatalogId" - ], - "typeName": "AWS::Glue::DataCatalogEncryptionSettings" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CatalogId" + ], + "definitions": { + "ConnectionPasswordEncryption": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "type": "string" + }, + "ReturnConnectionPasswordEncrypted": { + "type": "boolean" + } + }, + "type": "object" + }, + "DataCatalogEncryptionSettings": { + "additionalProperties": false, + "properties": { + "ConnectionPasswordEncryption": { + "$ref": "#/definitions/ConnectionPasswordEncryption" + }, + "EncryptionAtRest": { + "$ref": "#/definitions/EncryptionAtRest" + } + }, + "type": "object" + }, + "EncryptionAtRest": { + "additionalProperties": false, + "properties": { + "CatalogEncryptionMode": { + "type": "string" + }, + "CatalogEncryptionServiceRole": { + "type": "string" + }, + "SseAwsKmsKeyId": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Glue::DataCatalogEncryptionSettings", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CatalogId": { + "type": "string" + }, + "DataCatalogEncryptionSettings": { + "$ref": "#/definitions/DataCatalogEncryptionSettings" + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "DataCatalogEncryptionSettings", + "CatalogId" + ], + "typeName": "AWS::Glue::DataCatalogEncryptionSettings" +} diff --git a/src/schema/aws-glue-dataqualityruleset.json b/src/schema/aws-glue-dataqualityruleset.json index 168932ee..20e0495c 100644 --- a/src/schema/aws-glue-dataqualityruleset.json +++ b/src/schema/aws-glue-dataqualityruleset.json @@ -1,48 +1,48 @@ -{ - "additionalProperties": false, - "definitions": { - "DataQualityTargetTable": { - "additionalProperties": false, - "properties": { - "DatabaseName": { - "type": "string" - }, - "TableName": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Glue::DataQualityRuleset", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ClientToken": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Ruleset": { - "type": "string" - }, - "Tags": { - "type": "object" - }, - "TargetTable": { - "$ref": "#/definitions/DataQualityTargetTable" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "typeName": "AWS::Glue::DataQualityRuleset" -} +{ + "additionalProperties": false, + "definitions": { + "DataQualityTargetTable": { + "additionalProperties": false, + "properties": { + "DatabaseName": { + "type": "string" + }, + "TableName": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Glue::DataQualityRuleset", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ClientToken": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Ruleset": { + "type": "string" + }, + "Tags": { + "type": "object" + }, + "TargetTable": { + "$ref": "#/definitions/DataQualityTargetTable" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::Glue::DataQualityRuleset" +} diff --git a/src/schema/aws-glue-devendpoint.json b/src/schema/aws-glue-devendpoint.json index 0247d378..f6f59932 100644 --- a/src/schema/aws-glue-devendpoint.json +++ b/src/schema/aws-glue-devendpoint.json @@ -1,75 +1,75 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/EndpointName" - ], - "description": "Resource Type definition for AWS::Glue::DevEndpoint", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arguments": { - "type": "object" - }, - "EndpointName": { - "type": "string" - }, - "ExtraJarsS3Path": { - "type": "string" - }, - "ExtraPythonLibsS3Path": { - "type": "string" - }, - "GlueVersion": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "NumberOfNodes": { - "type": "integer" - }, - "NumberOfWorkers": { - "type": "integer" - }, - "PublicKey": { - "type": "string" - }, - "PublicKeys": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "RoleArn": { - "type": "string" - }, - "SecurityConfiguration": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "type": "object" - }, - "WorkerType": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "RoleArn" - ], - "typeName": "AWS::Glue::DevEndpoint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EndpointName" + ], + "description": "Resource Type definition for AWS::Glue::DevEndpoint", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arguments": { + "type": "object" + }, + "EndpointName": { + "type": "string" + }, + "ExtraJarsS3Path": { + "type": "string" + }, + "ExtraPythonLibsS3Path": { + "type": "string" + }, + "GlueVersion": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "NumberOfNodes": { + "type": "integer" + }, + "NumberOfWorkers": { + "type": "integer" + }, + "PublicKey": { + "type": "string" + }, + "PublicKeys": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "RoleArn": { + "type": "string" + }, + "SecurityConfiguration": { + "type": "string" + }, + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SubnetId": { + "type": "string" + }, + "Tags": { + "type": "object" + }, + "WorkerType": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "RoleArn" + ], + "typeName": "AWS::Glue::DevEndpoint" +} diff --git a/src/schema/aws-glue-job.json b/src/schema/aws-glue-job.json index 53137c34..cd3c1a9c 100644 --- a/src/schema/aws-glue-job.json +++ b/src/schema/aws-glue-job.json @@ -1,246 +1,250 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "ConnectionsList": { - "additionalProperties": false, - "properties": { - "Connections": { - "description": "A list of connections used by the job.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "DefaultArguments": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "ExecutionProperty": { - "additionalProperties": false, - "properties": { - "MaxConcurrentRuns": { - "description": "The maximum number of concurrent runs allowed for the job.", - "type": "number" - } - }, - "type": "object" - }, - "JobCommand": { - "additionalProperties": false, - "properties": { - "Name": { - "description": "The name of the job command", - "type": "string" - }, - "PythonVersion": { - "description": "The Python version being used to execute a Python shell job.", - "type": "string" - }, - "Runtime": { - "description": "Runtime is used to specify the versions of Ray, Python and additional libraries available in your environment", - "type": "string" - }, - "ScriptLocation": { - "description": "Specifies the Amazon Simple Storage Service (Amazon S3) path to a script that executes a job", - "type": "string" - } - }, - "type": "object" - }, - "NonOverridableArguments": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "NotificationProperty": { - "additionalProperties": false, - "properties": { - "NotifyDelayAfter": { - "description": "It is the number of minutes to wait before sending a job run delay notification after a job run starts", - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Glue::Job", - "handlers": { - "create": { - "permissions": [ - "iam:GetRole", - "iam:PassRole", - "glue:CreateJob", - "glue:GetJob", - "glue:TagResource" - ] - }, - "delete": { - "permissions": [ - "glue:DeleteJob", - "glue:GetJob", - "glue:UntagResource" - ] - }, - "list": { - "permissions": [ - "glue:ListJobs" - ] - }, - "read": { - "permissions": [ - "glue:GetJob", - "glue:GetTags" - ] - }, - "update": { - "permissions": [ - "iam:GetRole", - "iam:PassRole", - "glue:UpdateJob", - "glue:UntagResource", - "glue:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "AllocatedCapacity": { - "description": "The number of capacity units that are allocated to this job.", - "type": "number" - }, - "Command": { - "$ref": "#/definitions/JobCommand", - "description": "The code that executes a job." - }, - "Connections": { - "$ref": "#/definitions/ConnectionsList", - "description": "Specifies the connections used by a job" - }, - "DefaultArguments": { - "description": "The default arguments for this job, specified as name-value pairs.", - "type": "object" - }, - "Description": { - "description": "A description of the job.", - "type": "string" - }, - "ExecutionClass": { - "description": "Indicates whether the job is run with a standard or flexible execution class.", - "type": "string" - }, - "ExecutionProperty": { - "$ref": "#/definitions/ExecutionProperty", - "description": "The maximum number of concurrent runs that are allowed for this job." - }, - "GlueVersion": { - "description": "Glue version determines the versions of Apache Spark and Python that AWS Glue supports.", - "type": "string" - }, - "JobMode": { - "description": "Property description not available.", - "type": "string" - }, - "JobRunQueuingEnabled": { - "description": "Property description not available.", - "type": "boolean" - }, - "LogUri": { - "description": "This field is reserved for future use.", - "type": "string" - }, - "MaintenanceWindow": { - "description": "Property description not available.", - "type": "string" - }, - "MaxCapacity": { - "description": "The number of AWS Glue data processing units (DPUs) that can be allocated when this job runs.", - "type": "number" - }, - "MaxRetries": { - "description": "The maximum number of times to retry this job after a JobRun fails", - "type": "number" - }, - "Name": { - "description": "The name you assign to the job definition", - "type": "string" - }, - "NonOverridableArguments": { - "description": "Non-overridable arguments for this job, specified as name-value pairs.", - "type": "object" - }, - "NotificationProperty": { - "$ref": "#/definitions/NotificationProperty", - "description": "Specifies configuration properties of a notification." - }, - "NumberOfWorkers": { - "description": "The number of workers of a defined workerType that are allocated when a job runs.", - "type": "integer" - }, - "Role": { - "description": "The name or Amazon Resource Name (ARN) of the IAM role associated with this job.", - "type": "string" - }, - "SecurityConfiguration": { - "description": "The name of the SecurityConfiguration structure to be used with this job.", - "type": "string" - }, - "Tags": { - "description": "The tags to use with this job.", - "type": "object" - }, - "Timeout": { - "description": "The maximum time that a job run can consume resources before it is terminated and enters TIMEOUT status.", - "type": "integer" - }, - "WorkerType": { - "description": "TThe type of predefined worker that is allocated when a job runs.", - "enum": [ - "Standard", - "G.1X", - "G.2X", - "G.025X", - "G.4X", - "G.8X", - "Z.2X" - ], - "type": "string" - } - }, - "required": [ - "Role", - "Command" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Glue::Job" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "ConnectionsList": { + "additionalProperties": false, + "properties": { + "Connections": { + "description": "A list of connections used by the job.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DefaultArguments": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "ExecutionProperty": { + "additionalProperties": false, + "properties": { + "MaxConcurrentRuns": { + "description": "The maximum number of concurrent runs allowed for the job.", + "type": "number" + } + }, + "type": "object" + }, + "JobCommand": { + "additionalProperties": false, + "properties": { + "Name": { + "description": "The name of the job command", + "type": "string" + }, + "PythonVersion": { + "description": "The Python version being used to execute a Python shell job.", + "type": "string" + }, + "Runtime": { + "description": "Runtime is used to specify the versions of Ray, Python and additional libraries available in your environment", + "type": "string" + }, + "ScriptLocation": { + "description": "Specifies the Amazon Simple Storage Service (Amazon S3) path to a script that executes a job", + "type": "string" + } + }, + "type": "object" + }, + "NonOverridableArguments": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "NotificationProperty": { + "additionalProperties": false, + "properties": { + "NotifyDelayAfter": { + "description": "It is the number of minutes to wait before sending a job run delay notification after a job run starts", + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Glue::Job", + "handlers": { + "create": { + "permissions": [ + "iam:GetRole", + "iam:PassRole", + "glue:CreateJob", + "glue:GetJob", + "glue:TagResource" + ] + }, + "delete": { + "permissions": [ + "glue:DeleteJob", + "glue:GetJob", + "glue:UntagResource" + ] + }, + "list": { + "permissions": [ + "glue:ListJobs" + ] + }, + "read": { + "permissions": [ + "glue:GetJob", + "glue:GetTags" + ] + }, + "update": { + "permissions": [ + "iam:GetRole", + "iam:PassRole", + "glue:UpdateJob", + "glue:UntagResource", + "glue:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "AllocatedCapacity": { + "description": "The number of capacity units that are allocated to this job.", + "type": "number" + }, + "Command": { + "$ref": "#/definitions/JobCommand", + "description": "The code that executes a job." + }, + "Connections": { + "$ref": "#/definitions/ConnectionsList", + "description": "Specifies the connections used by a job" + }, + "DefaultArguments": { + "description": "The default arguments for this job, specified as name-value pairs.", + "type": "object" + }, + "Description": { + "description": "A description of the job.", + "type": "string" + }, + "ExecutionClass": { + "description": "Indicates whether the job is run with a standard or flexible execution class.", + "type": "string" + }, + "ExecutionProperty": { + "$ref": "#/definitions/ExecutionProperty", + "description": "The maximum number of concurrent runs that are allowed for this job." + }, + "GlueVersion": { + "description": "Glue version determines the versions of Apache Spark and Python that AWS Glue supports.", + "type": "string" + }, + "JobMode": { + "description": "Property description not available.", + "type": "string" + }, + "JobRunQueuingEnabled": { + "description": "Property description not available.", + "type": "boolean" + }, + "LogUri": { + "description": "This field is reserved for future use.", + "type": "string" + }, + "MaintenanceWindow": { + "description": "Property description not available.", + "type": "string" + }, + "MaxCapacity": { + "description": "The number of AWS Glue data processing units (DPUs) that can be allocated when this job runs.", + "type": "number" + }, + "MaxRetries": { + "description": "The maximum number of times to retry this job after a JobRun fails", + "type": "number" + }, + "Name": { + "description": "The name you assign to the job definition", + "type": "string" + }, + "NonOverridableArguments": { + "description": "Non-overridable arguments for this job, specified as name-value pairs.", + "type": "object" + }, + "NotificationProperty": { + "$ref": "#/definitions/NotificationProperty", + "description": "Specifies configuration properties of a notification." + }, + "NumberOfWorkers": { + "description": "The number of workers of a defined workerType that are allocated when a job runs.", + "type": "integer" + }, + "Role": { + "description": "The name or Amazon Resource Name (ARN) of the IAM role associated with this job.", + "type": "string" + }, + "SecurityConfiguration": { + "description": "The name of the SecurityConfiguration structure to be used with this job.", + "type": "string" + }, + "Tags": { + "description": "The tags to use with this job.", + "type": "object" + }, + "Timeout": { + "description": "The maximum time that a job run can consume resources before it is terminated and enters TIMEOUT status.", + "type": "integer" + }, + "WorkerType": { + "description": "TThe type of predefined worker that is allocated when a job runs.", + "enum": [ + "Standard", + "G.1X", + "G.2X", + "G.025X", + "G.4X", + "G.8X", + "Z.2X" + ], + "type": "string" + } + }, + "required": [ + "Role", + "Command" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "glue:TagResource", + "glue:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Glue::Job" +} diff --git a/src/schema/aws-glue-mltransform.json b/src/schema/aws-glue-mltransform.json index a50926d2..01c9f5c1 100644 --- a/src/schema/aws-glue-mltransform.json +++ b/src/schema/aws-glue-mltransform.json @@ -1,163 +1,163 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InputRecordTables" - ], - "definitions": { - "FindMatchesParameters": { - "additionalProperties": false, - "properties": { - "AccuracyCostTradeoff": { - "type": "number" - }, - "EnforceProvidedLabels": { - "type": "boolean" - }, - "PrecisionRecallTradeoff": { - "type": "number" - }, - "PrimaryKeyColumnName": { - "type": "string" - } - }, - "required": [ - "PrimaryKeyColumnName" - ], - "type": "object" - }, - "GlueTables": { - "additionalProperties": false, - "properties": { - "CatalogId": { - "type": "string" - }, - "ConnectionName": { - "type": "string" - }, - "DatabaseName": { - "type": "string" - }, - "TableName": { - "type": "string" - } - }, - "required": [ - "TableName", - "DatabaseName" - ], - "type": "object" - }, - "InputRecordTables": { - "additionalProperties": false, - "properties": { - "GlueTables": { - "items": { - "$ref": "#/definitions/GlueTables" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "MLUserDataEncryption": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "type": "string" - }, - "MLUserDataEncryptionMode": { - "type": "string" - } - }, - "required": [ - "MLUserDataEncryptionMode" - ], - "type": "object" - }, - "TransformEncryption": { - "additionalProperties": false, - "properties": { - "MLUserDataEncryption": { - "$ref": "#/definitions/MLUserDataEncryption" - }, - "TaskRunSecurityConfigurationName": { - "type": "string" - } - }, - "type": "object" - }, - "TransformParameters": { - "additionalProperties": false, - "properties": { - "FindMatchesParameters": { - "$ref": "#/definitions/FindMatchesParameters" - }, - "TransformType": { - "type": "string" - } - }, - "required": [ - "TransformType" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Glue::MLTransform", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "GlueVersion": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InputRecordTables": { - "$ref": "#/definitions/InputRecordTables" - }, - "MaxCapacity": { - "type": "number" - }, - "MaxRetries": { - "type": "integer" - }, - "Name": { - "type": "string" - }, - "NumberOfWorkers": { - "type": "integer" - }, - "Role": { - "type": "string" - }, - "Tags": { - "type": "object" - }, - "Timeout": { - "type": "integer" - }, - "TransformEncryption": { - "$ref": "#/definitions/TransformEncryption" - }, - "TransformParameters": { - "$ref": "#/definitions/TransformParameters" - }, - "WorkerType": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Role", - "TransformParameters", - "InputRecordTables" - ], - "typeName": "AWS::Glue::MLTransform" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InputRecordTables" + ], + "definitions": { + "FindMatchesParameters": { + "additionalProperties": false, + "properties": { + "AccuracyCostTradeoff": { + "type": "number" + }, + "EnforceProvidedLabels": { + "type": "boolean" + }, + "PrecisionRecallTradeoff": { + "type": "number" + }, + "PrimaryKeyColumnName": { + "type": "string" + } + }, + "required": [ + "PrimaryKeyColumnName" + ], + "type": "object" + }, + "GlueTables": { + "additionalProperties": false, + "properties": { + "CatalogId": { + "type": "string" + }, + "ConnectionName": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "TableName": { + "type": "string" + } + }, + "required": [ + "TableName", + "DatabaseName" + ], + "type": "object" + }, + "InputRecordTables": { + "additionalProperties": false, + "properties": { + "GlueTables": { + "items": { + "$ref": "#/definitions/GlueTables" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "MLUserDataEncryption": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "type": "string" + }, + "MLUserDataEncryptionMode": { + "type": "string" + } + }, + "required": [ + "MLUserDataEncryptionMode" + ], + "type": "object" + }, + "TransformEncryption": { + "additionalProperties": false, + "properties": { + "MLUserDataEncryption": { + "$ref": "#/definitions/MLUserDataEncryption" + }, + "TaskRunSecurityConfigurationName": { + "type": "string" + } + }, + "type": "object" + }, + "TransformParameters": { + "additionalProperties": false, + "properties": { + "FindMatchesParameters": { + "$ref": "#/definitions/FindMatchesParameters" + }, + "TransformType": { + "type": "string" + } + }, + "required": [ + "TransformType" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Glue::MLTransform", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "type": "string" + }, + "GlueVersion": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "InputRecordTables": { + "$ref": "#/definitions/InputRecordTables" + }, + "MaxCapacity": { + "type": "number" + }, + "MaxRetries": { + "type": "integer" + }, + "Name": { + "type": "string" + }, + "NumberOfWorkers": { + "type": "integer" + }, + "Role": { + "type": "string" + }, + "Tags": { + "type": "object" + }, + "Timeout": { + "type": "integer" + }, + "TransformEncryption": { + "$ref": "#/definitions/TransformEncryption" + }, + "TransformParameters": { + "$ref": "#/definitions/TransformParameters" + }, + "WorkerType": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Role", + "TransformParameters", + "InputRecordTables" + ], + "typeName": "AWS::Glue::MLTransform" +} diff --git a/src/schema/aws-glue-partition.json b/src/schema/aws-glue-partition.json index d172e395..98322675 100644 --- a/src/schema/aws-glue-partition.json +++ b/src/schema/aws-glue-partition.json @@ -1,221 +1,221 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TableName", - "/properties/DatabaseName", - "/properties/CatalogId" - ], - "definitions": { - "Column": { - "additionalProperties": false, - "properties": { - "Comment": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "Order": { - "additionalProperties": false, - "properties": { - "Column": { - "type": "string" - }, - "SortOrder": { - "type": "integer" - } - }, - "required": [ - "Column" - ], - "type": "object" - }, - "PartitionInput": { - "additionalProperties": false, - "properties": { - "Parameters": { - "type": "object" - }, - "StorageDescriptor": { - "$ref": "#/definitions/StorageDescriptor" - }, - "Values": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Values" - ], - "type": "object" - }, - "SchemaId": { - "additionalProperties": false, - "properties": { - "RegistryName": { - "type": "string" - }, - "SchemaArn": { - "type": "string" - }, - "SchemaName": { - "type": "string" - } - }, - "type": "object" - }, - "SchemaReference": { - "additionalProperties": false, - "properties": { - "SchemaId": { - "$ref": "#/definitions/SchemaId" - }, - "SchemaVersionId": { - "type": "string" - }, - "SchemaVersionNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "SerdeInfo": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Parameters": { - "type": "object" - }, - "SerializationLibrary": { - "type": "string" - } - }, - "type": "object" - }, - "SkewedInfo": { - "additionalProperties": false, - "properties": { - "SkewedColumnNames": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SkewedColumnValueLocationMaps": { - "type": "object" - }, - "SkewedColumnValues": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "StorageDescriptor": { - "additionalProperties": false, - "properties": { - "BucketColumns": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Columns": { - "items": { - "$ref": "#/definitions/Column" - }, - "type": "array", - "uniqueItems": false - }, - "Compressed": { - "type": "boolean" - }, - "InputFormat": { - "type": "string" - }, - "Location": { - "type": "string" - }, - "NumberOfBuckets": { - "type": "integer" - }, - "OutputFormat": { - "type": "string" - }, - "Parameters": { - "type": "object" - }, - "SchemaReference": { - "$ref": "#/definitions/SchemaReference" - }, - "SerdeInfo": { - "$ref": "#/definitions/SerdeInfo" - }, - "SkewedInfo": { - "$ref": "#/definitions/SkewedInfo" - }, - "SortColumns": { - "items": { - "$ref": "#/definitions/Order" - }, - "type": "array", - "uniqueItems": false - }, - "StoredAsSubDirectories": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Glue::Partition", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CatalogId": { - "type": "string" - }, - "DatabaseName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "PartitionInput": { - "$ref": "#/definitions/PartitionInput" - }, - "TableName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "TableName", - "DatabaseName", - "CatalogId", - "PartitionInput" - ], - "typeName": "AWS::Glue::Partition" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TableName", + "/properties/DatabaseName", + "/properties/CatalogId" + ], + "definitions": { + "Column": { + "additionalProperties": false, + "properties": { + "Comment": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Order": { + "additionalProperties": false, + "properties": { + "Column": { + "type": "string" + }, + "SortOrder": { + "type": "integer" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "PartitionInput": { + "additionalProperties": false, + "properties": { + "Parameters": { + "type": "object" + }, + "StorageDescriptor": { + "$ref": "#/definitions/StorageDescriptor" + }, + "Values": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Values" + ], + "type": "object" + }, + "SchemaId": { + "additionalProperties": false, + "properties": { + "RegistryName": { + "type": "string" + }, + "SchemaArn": { + "type": "string" + }, + "SchemaName": { + "type": "string" + } + }, + "type": "object" + }, + "SchemaReference": { + "additionalProperties": false, + "properties": { + "SchemaId": { + "$ref": "#/definitions/SchemaId" + }, + "SchemaVersionId": { + "type": "string" + }, + "SchemaVersionNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "SerdeInfo": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Parameters": { + "type": "object" + }, + "SerializationLibrary": { + "type": "string" + } + }, + "type": "object" + }, + "SkewedInfo": { + "additionalProperties": false, + "properties": { + "SkewedColumnNames": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SkewedColumnValueLocationMaps": { + "type": "object" + }, + "SkewedColumnValues": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "StorageDescriptor": { + "additionalProperties": false, + "properties": { + "BucketColumns": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Columns": { + "items": { + "$ref": "#/definitions/Column" + }, + "type": "array", + "uniqueItems": false + }, + "Compressed": { + "type": "boolean" + }, + "InputFormat": { + "type": "string" + }, + "Location": { + "type": "string" + }, + "NumberOfBuckets": { + "type": "integer" + }, + "OutputFormat": { + "type": "string" + }, + "Parameters": { + "type": "object" + }, + "SchemaReference": { + "$ref": "#/definitions/SchemaReference" + }, + "SerdeInfo": { + "$ref": "#/definitions/SerdeInfo" + }, + "SkewedInfo": { + "$ref": "#/definitions/SkewedInfo" + }, + "SortColumns": { + "items": { + "$ref": "#/definitions/Order" + }, + "type": "array", + "uniqueItems": false + }, + "StoredAsSubDirectories": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Glue::Partition", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CatalogId": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "PartitionInput": { + "$ref": "#/definitions/PartitionInput" + }, + "TableName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TableName", + "DatabaseName", + "CatalogId", + "PartitionInput" + ], + "typeName": "AWS::Glue::Partition" +} diff --git a/src/schema/aws-glue-registry.json b/src/schema/aws-glue-registry.json index ab37289d..c8ed17a5 100644 --- a/src/schema/aws-glue-registry.json +++ b/src/schema/aws-glue-registry.json @@ -1,118 +1,118 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "A key to identify the tag.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "Corresponding tag value for the key.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "This resource creates a Registry for authoring schemas as part of Glue Schema Registry.", - "handlers": { - "create": { - "permissions": [ - "glue:CreateRegistry", - "glue:GetRegistry", - "glue:GetTags", - "glue:TagResource" - ] - }, - "delete": { - "permissions": [ - "glue:GetRegistry", - "glue:DeleteRegistry" - ] - }, - "list": { - "permissions": [ - "glue:ListRegistries" - ] - }, - "read": { - "permissions": [ - "glue:GetRegistry", - "glue:GetTags" - ] - }, - "update": { - "permissions": [ - "glue:UpdateRegistry", - "glue:GetRegistry", - "glue:TagResource", - "glue:UntagResource", - "glue:GetTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Amazon Resource Name for the created Registry.", - "pattern": "arn:aws(-(cn|us-gov|iso(-[bef])?))?:glue:.*", - "type": "string" - }, - "Description": { - "description": "A description of the registry. If description is not provided, there will not be any default value for this.", - "maxLength": 1000, - "minLength": 0, - "type": "string" - }, - "Name": { - "description": "Name of the registry to be created of max length of 255, and may only contain letters, numbers, hyphen, underscore, dollar sign, or hash mark. No whitespace.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "List of tags to tag the Registry", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "glue:GetTags", - "glue:TagResource", - "glue:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Glue::Registry" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "A key to identify the tag.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Corresponding tag value for the key.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "This resource creates a Registry for authoring schemas as part of Glue Schema Registry.", + "handlers": { + "create": { + "permissions": [ + "glue:CreateRegistry", + "glue:GetRegistry", + "glue:GetTags", + "glue:TagResource" + ] + }, + "delete": { + "permissions": [ + "glue:GetRegistry", + "glue:DeleteRegistry" + ] + }, + "list": { + "permissions": [ + "glue:ListRegistries" + ] + }, + "read": { + "permissions": [ + "glue:GetRegistry", + "glue:GetTags" + ] + }, + "update": { + "permissions": [ + "glue:UpdateRegistry", + "glue:GetRegistry", + "glue:TagResource", + "glue:UntagResource", + "glue:GetTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Amazon Resource Name for the created Registry.", + "pattern": "arn:aws(-(cn|us-gov|iso(-[bef])?))?:glue:.*", + "type": "string" + }, + "Description": { + "description": "A description of the registry. If description is not provided, there will not be any default value for this.", + "maxLength": 1000, + "minLength": 0, + "type": "string" + }, + "Name": { + "description": "Name of the registry to be created of max length of 255, and may only contain letters, numbers, hyphen, underscore, dollar sign, or hash mark. No whitespace.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "List of tags to tag the Registry", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "glue:GetTags", + "glue:TagResource", + "glue:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Glue::Registry" +} diff --git a/src/schema/aws-glue-schema.json b/src/schema/aws-glue-schema.json index ac086cee..f7289c29 100644 --- a/src/schema/aws-glue-schema.json +++ b/src/schema/aws-glue-schema.json @@ -1,202 +1,202 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Registry", - "/properties/Name", - "/properties/DataFormat", - "/properties/SchemaDefinition" - ], - "definitions": { - "Registry": { - "additionalProperties": false, - "description": "Identifier for the registry which the schema is part of.", - "properties": { - "Arn": { - "description": "Amazon Resource Name for the Registry.", - "pattern": "arn:aws(-(cn|us-gov|iso(-[bef])?))?:glue:.*", - "type": "string" - }, - "Name": { - "description": "Name of the registry in which the schema will be created.", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "SchemaVersion": { - "additionalProperties": false, - "description": "Specify checkpoint version for update. This is only required to update the Compatibility.", - "properties": { - "IsLatest": { - "description": "Indicates if the latest version needs to be updated.", - "type": "boolean" - }, - "VersionNumber": { - "description": "Indicates the version number in the schema to update.", - "maximum": 100000, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "A key to identify the tag.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "Corresponding tag value for the key.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "This resource represents a schema of Glue Schema Registry.", - "handlers": { - "create": { - "permissions": [ - "glue:CreateSchema", - "glue:TagResource" - ] - }, - "delete": { - "permissions": [ - "glue:DeleteSchema", - "glue:GetSchema" - ] - }, - "list": { - "permissions": [ - "glue:ListSchemas" - ] - }, - "read": { - "permissions": [ - "glue:GetSchemaVersion", - "glue:GetSchema", - "glue:GetTags" - ] - }, - "update": { - "permissions": [ - "glue:UpdateSchema", - "glue:GetSchemaVersion", - "glue:GetSchema", - "glue:GetTags", - "glue:TagResource", - "glue:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Amazon Resource Name for the Schema.", - "pattern": "arn:aws(-(cn|us-gov|iso(-[bef])?))?:glue:.*", - "type": "string" - }, - "CheckpointVersion": { - "$ref": "#/definitions/SchemaVersion" - }, - "Compatibility": { - "description": "Compatibility setting for the schema.", - "enum": [ - "NONE", - "DISABLED", - "BACKWARD", - "BACKWARD_ALL", - "FORWARD", - "FORWARD_ALL", - "FULL", - "FULL_ALL" - ], - "type": "string" - }, - "DataFormat": { - "description": "Data format name to use for the schema. Accepted values: 'AVRO', 'JSON', 'PROTOBUF'", - "enum": [ - "AVRO", - "JSON", - "PROTOBUF" - ], - "type": "string" - }, - "Description": { - "description": "A description of the schema. If description is not provided, there will not be any default value for this.", - "maxLength": 1000, - "minLength": 0, - "type": "string" - }, - "InitialSchemaVersionId": { - "description": "Represents the version ID associated with the initial schema version.", - "pattern": "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}", - "type": "string" - }, - "Name": { - "description": "Name of the schema.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Registry": { - "$ref": "#/definitions/Registry" - }, - "SchemaDefinition": { - "description": "Definition for the initial schema version in plain-text.", - "maxLength": 170000, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "List of tags to tag the schema", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/InitialSchemaVersionId" - ], - "required": [ - "Name", - "DataFormat", - "Compatibility" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "glue:GetTags", - "glue:TagResource", - "glue:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Glue::Schema", - "writeOnlyProperties": [ - "/properties/SchemaDefinition" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Registry", + "/properties/Name", + "/properties/DataFormat", + "/properties/SchemaDefinition" + ], + "definitions": { + "Registry": { + "additionalProperties": false, + "description": "Identifier for the registry which the schema is part of.", + "properties": { + "Arn": { + "description": "Amazon Resource Name for the Registry.", + "pattern": "arn:aws(-(cn|us-gov|iso(-[bef])?))?:glue:.*", + "type": "string" + }, + "Name": { + "description": "Name of the registry in which the schema will be created.", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SchemaVersion": { + "additionalProperties": false, + "description": "Specify checkpoint version for update. This is only required to update the Compatibility.", + "properties": { + "IsLatest": { + "description": "Indicates if the latest version needs to be updated.", + "type": "boolean" + }, + "VersionNumber": { + "description": "Indicates the version number in the schema to update.", + "maximum": 100000, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "A key to identify the tag.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Corresponding tag value for the key.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "This resource represents a schema of Glue Schema Registry.", + "handlers": { + "create": { + "permissions": [ + "glue:CreateSchema", + "glue:TagResource" + ] + }, + "delete": { + "permissions": [ + "glue:DeleteSchema", + "glue:GetSchema" + ] + }, + "list": { + "permissions": [ + "glue:ListSchemas" + ] + }, + "read": { + "permissions": [ + "glue:GetSchemaVersion", + "glue:GetSchema", + "glue:GetTags" + ] + }, + "update": { + "permissions": [ + "glue:UpdateSchema", + "glue:GetSchemaVersion", + "glue:GetSchema", + "glue:GetTags", + "glue:TagResource", + "glue:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Amazon Resource Name for the Schema.", + "pattern": "arn:aws(-(cn|us-gov|iso(-[bef])?))?:glue:.*", + "type": "string" + }, + "CheckpointVersion": { + "$ref": "#/definitions/SchemaVersion" + }, + "Compatibility": { + "description": "Compatibility setting for the schema.", + "enum": [ + "NONE", + "DISABLED", + "BACKWARD", + "BACKWARD_ALL", + "FORWARD", + "FORWARD_ALL", + "FULL", + "FULL_ALL" + ], + "type": "string" + }, + "DataFormat": { + "description": "Data format name to use for the schema. Accepted values: 'AVRO', 'JSON', 'PROTOBUF'", + "enum": [ + "AVRO", + "JSON", + "PROTOBUF" + ], + "type": "string" + }, + "Description": { + "description": "A description of the schema. If description is not provided, there will not be any default value for this.", + "maxLength": 1000, + "minLength": 0, + "type": "string" + }, + "InitialSchemaVersionId": { + "description": "Represents the version ID associated with the initial schema version.", + "pattern": "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}", + "type": "string" + }, + "Name": { + "description": "Name of the schema.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Registry": { + "$ref": "#/definitions/Registry" + }, + "SchemaDefinition": { + "description": "Definition for the initial schema version in plain-text.", + "maxLength": 170000, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "List of tags to tag the schema", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/InitialSchemaVersionId" + ], + "required": [ + "Name", + "DataFormat", + "Compatibility" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "glue:GetTags", + "glue:TagResource", + "glue:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Glue::Schema", + "writeOnlyProperties": [ + "/properties/SchemaDefinition" + ] +} diff --git a/src/schema/aws-glue-schemaversion.json b/src/schema/aws-glue-schemaversion.json index 6ef70f84..cbf9c3d4 100644 --- a/src/schema/aws-glue-schemaversion.json +++ b/src/schema/aws-glue-schemaversion.json @@ -1,97 +1,97 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Schema", - "/properties/SchemaDefinition" - ], - "definitions": { - "Schema": { - "additionalProperties": false, - "description": "Identifier for the schema where the schema version will be created.", - "properties": { - "RegistryName": { - "description": "Name of the registry to identify where the Schema is located.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "SchemaArn": { - "description": "Amazon Resource Name for the Schema. This attribute can be used to uniquely represent the Schema.", - "pattern": "arn:(aws|aws-us-gov|aws-cn):glue:.*", - "type": "string" - }, - "SchemaName": { - "description": "Name of the schema. This parameter requires RegistryName to be provided.", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "This resource represents an individual schema version of a schema defined in Glue Schema Registry.", - "handlers": { - "create": { - "permissions": [ - "glue:RegisterSchemaVersion", - "glue:GetSchemaVersion", - "glue:GetSchemaByDefinition" - ] - }, - "delete": { - "permissions": [ - "glue:DeleteSchemaVersions", - "glue:GetSchemaVersion" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Schema": { - "$ref": "resource-schema.json#/properties/Schema" - } - }, - "required": [ - "Schema" - ] - }, - "permissions": [ - "glue:ListSchemaVersions" - ] - }, - "read": { - "permissions": [ - "glue:GetSchemaVersion" - ] - } - }, - "primaryIdentifier": [ - "/properties/VersionId" - ], - "properties": { - "Schema": { - "$ref": "#/definitions/Schema" - }, - "SchemaDefinition": { - "description": "Complete definition of the schema in plain-text.", - "maxLength": 170000, - "minLength": 1, - "type": "string" - }, - "VersionId": { - "description": "Represents the version ID associated with the schema version.", - "pattern": "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/VersionId" - ], - "required": [ - "Schema", - "SchemaDefinition" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue.git", - "typeName": "AWS::Glue::SchemaVersion" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Schema", + "/properties/SchemaDefinition" + ], + "definitions": { + "Schema": { + "additionalProperties": false, + "description": "Identifier for the schema where the schema version will be created.", + "properties": { + "RegistryName": { + "description": "Name of the registry to identify where the Schema is located.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "SchemaArn": { + "description": "Amazon Resource Name for the Schema. This attribute can be used to uniquely represent the Schema.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):glue:.*", + "type": "string" + }, + "SchemaName": { + "description": "Name of the schema. This parameter requires RegistryName to be provided.", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "This resource represents an individual schema version of a schema defined in Glue Schema Registry.", + "handlers": { + "create": { + "permissions": [ + "glue:RegisterSchemaVersion", + "glue:GetSchemaVersion", + "glue:GetSchemaByDefinition" + ] + }, + "delete": { + "permissions": [ + "glue:DeleteSchemaVersions", + "glue:GetSchemaVersion" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Schema": { + "$ref": "resource-schema.json#/properties/Schema" + } + }, + "required": [ + "Schema" + ] + }, + "permissions": [ + "glue:ListSchemaVersions" + ] + }, + "read": { + "permissions": [ + "glue:GetSchemaVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/VersionId" + ], + "properties": { + "Schema": { + "$ref": "#/definitions/Schema" + }, + "SchemaDefinition": { + "description": "Complete definition of the schema in plain-text.", + "maxLength": 170000, + "minLength": 1, + "type": "string" + }, + "VersionId": { + "description": "Represents the version ID associated with the schema version.", + "pattern": "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VersionId" + ], + "required": [ + "Schema", + "SchemaDefinition" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue.git", + "typeName": "AWS::Glue::SchemaVersion" +} diff --git a/src/schema/aws-glue-schemaversionmetadata.json b/src/schema/aws-glue-schemaversionmetadata.json index e56fadba..27b94cb3 100644 --- a/src/schema/aws-glue-schemaversionmetadata.json +++ b/src/schema/aws-glue-schemaversionmetadata.json @@ -1,72 +1,72 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SchemaVersionId", - "/properties/Key", - "/properties/Value" - ], - "description": "This resource adds Key-Value metadata to a Schema version of Glue Schema Registry.", - "handlers": { - "create": { - "permissions": [ - "glue:putSchemaVersionMetadata" - ] - }, - "delete": { - "permissions": [ - "glue:removeSchemaVersionMetadata" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "SchemaVersionId": { - "$ref": "resource-schema.json#/properties/SchemaVersionId" - } - }, - "required": [ - "SchemaVersionId" - ] - }, - "permissions": [ - "glue:querySchemaVersionMetadata" - ] - }, - "read": { - "permissions": [ - "glue:querySchemaVersionMetadata" - ] - } - }, - "primaryIdentifier": [ - "/properties/SchemaVersionId", - "/properties/Key", - "/properties/Value" - ], - "properties": { - "Key": { - "description": "Metadata key", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "SchemaVersionId": { - "description": "Represents the version ID associated with the schema version.", - "pattern": "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}", - "type": "string" - }, - "Value": { - "description": "Metadata value", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "SchemaVersionId", - "Key", - "Value" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue.git", - "typeName": "AWS::Glue::SchemaVersionMetadata" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SchemaVersionId", + "/properties/Key", + "/properties/Value" + ], + "description": "This resource adds Key-Value metadata to a Schema version of Glue Schema Registry.", + "handlers": { + "create": { + "permissions": [ + "glue:putSchemaVersionMetadata" + ] + }, + "delete": { + "permissions": [ + "glue:removeSchemaVersionMetadata" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "SchemaVersionId": { + "$ref": "resource-schema.json#/properties/SchemaVersionId" + } + }, + "required": [ + "SchemaVersionId" + ] + }, + "permissions": [ + "glue:querySchemaVersionMetadata" + ] + }, + "read": { + "permissions": [ + "glue:querySchemaVersionMetadata" + ] + } + }, + "primaryIdentifier": [ + "/properties/SchemaVersionId", + "/properties/Key", + "/properties/Value" + ], + "properties": { + "Key": { + "description": "Metadata key", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SchemaVersionId": { + "description": "Represents the version ID associated with the schema version.", + "pattern": "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}", + "type": "string" + }, + "Value": { + "description": "Metadata value", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "SchemaVersionId", + "Key", + "Value" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue.git", + "typeName": "AWS::Glue::SchemaVersionMetadata" +} diff --git a/src/schema/aws-glue-securityconfiguration.json b/src/schema/aws-glue-securityconfiguration.json index 26a71b63..9ae0db12 100644 --- a/src/schema/aws-glue-securityconfiguration.json +++ b/src/schema/aws-glue-securityconfiguration.json @@ -1,74 +1,74 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "CloudWatchEncryption": { - "additionalProperties": false, - "properties": { - "CloudWatchEncryptionMode": { - "type": "string" - }, - "KmsKeyArn": { - "type": "string" - } - }, - "type": "object" - }, - "EncryptionConfiguration": { - "additionalProperties": false, - "properties": { - "CloudWatchEncryption": { - "$ref": "#/definitions/CloudWatchEncryption" - }, - "JobBookmarksEncryption": { - "$ref": "#/definitions/JobBookmarksEncryption" - }, - "S3Encryptions": { - "$ref": "#/definitions/S3Encryptions" - } - }, - "type": "object" - }, - "JobBookmarksEncryption": { - "additionalProperties": false, - "properties": { - "JobBookmarksEncryptionMode": { - "type": "string" - }, - "KmsKeyArn": { - "type": "string" - } - }, - "type": "object" - }, - "S3Encryptions": { - "additionalProperties": false, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Glue::SecurityConfiguration", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "EncryptionConfiguration": { - "$ref": "#/definitions/EncryptionConfiguration" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "EncryptionConfiguration", - "Name" - ], - "typeName": "AWS::Glue::SecurityConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "CloudWatchEncryption": { + "additionalProperties": false, + "properties": { + "CloudWatchEncryptionMode": { + "type": "string" + }, + "KmsKeyArn": { + "type": "string" + } + }, + "type": "object" + }, + "EncryptionConfiguration": { + "additionalProperties": false, + "properties": { + "CloudWatchEncryption": { + "$ref": "#/definitions/CloudWatchEncryption" + }, + "JobBookmarksEncryption": { + "$ref": "#/definitions/JobBookmarksEncryption" + }, + "S3Encryptions": { + "$ref": "#/definitions/S3Encryptions" + } + }, + "type": "object" + }, + "JobBookmarksEncryption": { + "additionalProperties": false, + "properties": { + "JobBookmarksEncryptionMode": { + "type": "string" + }, + "KmsKeyArn": { + "type": "string" + } + }, + "type": "object" + }, + "S3Encryptions": { + "additionalProperties": false, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Glue::SecurityConfiguration", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "EncryptionConfiguration", + "Name" + ], + "typeName": "AWS::Glue::SecurityConfiguration" +} diff --git a/src/schema/aws-glue-table.json b/src/schema/aws-glue-table.json index 2d1d07a6..a9804cb6 100644 --- a/src/schema/aws-glue-table.json +++ b/src/schema/aws-glue-table.json @@ -1,284 +1,284 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DatabaseName", - "/properties/CatalogId" - ], - "definitions": { - "Column": { - "additionalProperties": false, - "properties": { - "Comment": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "IcebergInput": { - "additionalProperties": false, - "properties": { - "MetadataOperation": { - "$ref": "#/definitions/MetadataOperation" - }, - "Version": { - "type": "string" - } - }, - "type": "object" - }, - "MetadataOperation": { - "additionalProperties": false, - "type": "object" - }, - "OpenTableFormatInput": { - "additionalProperties": false, - "properties": { - "IcebergInput": { - "$ref": "#/definitions/IcebergInput" - } - }, - "type": "object" - }, - "Order": { - "additionalProperties": false, - "properties": { - "Column": { - "type": "string" - }, - "SortOrder": { - "type": "integer" - } - }, - "required": [ - "Column", - "SortOrder" - ], - "type": "object" - }, - "SchemaId": { - "additionalProperties": false, - "properties": { - "RegistryName": { - "type": "string" - }, - "SchemaArn": { - "type": "string" - }, - "SchemaName": { - "type": "string" - } - }, - "type": "object" - }, - "SchemaReference": { - "additionalProperties": false, - "properties": { - "SchemaId": { - "$ref": "#/definitions/SchemaId" - }, - "SchemaVersionId": { - "type": "string" - }, - "SchemaVersionNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "SerdeInfo": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Parameters": { - "type": "object" - }, - "SerializationLibrary": { - "type": "string" - } - }, - "type": "object" - }, - "SkewedInfo": { - "additionalProperties": false, - "properties": { - "SkewedColumnNames": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SkewedColumnValueLocationMaps": { - "type": "object" - }, - "SkewedColumnValues": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "StorageDescriptor": { - "additionalProperties": false, - "properties": { - "BucketColumns": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Columns": { - "items": { - "$ref": "#/definitions/Column" - }, - "type": "array", - "uniqueItems": false - }, - "Compressed": { - "type": "boolean" - }, - "InputFormat": { - "type": "string" - }, - "Location": { - "type": "string" - }, - "NumberOfBuckets": { - "type": "integer" - }, - "OutputFormat": { - "type": "string" - }, - "Parameters": { - "type": "object" - }, - "SchemaReference": { - "$ref": "#/definitions/SchemaReference" - }, - "SerdeInfo": { - "$ref": "#/definitions/SerdeInfo" - }, - "SkewedInfo": { - "$ref": "#/definitions/SkewedInfo" - }, - "SortColumns": { - "items": { - "$ref": "#/definitions/Order" - }, - "type": "array", - "uniqueItems": false - }, - "StoredAsSubDirectories": { - "type": "boolean" - } - }, - "type": "object" - }, - "TableIdentifier": { - "additionalProperties": false, - "properties": { - "CatalogId": { - "type": "string" - }, - "DatabaseName": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Region": { - "type": "string" - } - }, - "type": "object" - }, - "TableInput": { - "additionalProperties": false, - "properties": { - "Description": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Owner": { - "type": "string" - }, - "Parameters": { - "type": "object" - }, - "PartitionKeys": { - "items": { - "$ref": "#/definitions/Column" - }, - "type": "array", - "uniqueItems": false - }, - "Retention": { - "type": "integer" - }, - "StorageDescriptor": { - "$ref": "#/definitions/StorageDescriptor" - }, - "TableType": { - "type": "string" - }, - "TargetTable": { - "$ref": "#/definitions/TableIdentifier" - }, - "ViewExpandedText": { - "type": "string" - }, - "ViewOriginalText": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Glue::Table", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CatalogId": { - "type": "string" - }, - "DatabaseName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "OpenTableFormatInput": { - "$ref": "#/definitions/OpenTableFormatInput" - }, - "TableInput": { - "$ref": "#/definitions/TableInput" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "TableInput", - "DatabaseName", - "CatalogId" - ], - "typeName": "AWS::Glue::Table" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DatabaseName", + "/properties/CatalogId" + ], + "definitions": { + "Column": { + "additionalProperties": false, + "properties": { + "Comment": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "IcebergInput": { + "additionalProperties": false, + "properties": { + "MetadataOperation": { + "$ref": "#/definitions/MetadataOperation" + }, + "Version": { + "type": "string" + } + }, + "type": "object" + }, + "MetadataOperation": { + "additionalProperties": false, + "type": "object" + }, + "OpenTableFormatInput": { + "additionalProperties": false, + "properties": { + "IcebergInput": { + "$ref": "#/definitions/IcebergInput" + } + }, + "type": "object" + }, + "Order": { + "additionalProperties": false, + "properties": { + "Column": { + "type": "string" + }, + "SortOrder": { + "type": "integer" + } + }, + "required": [ + "Column", + "SortOrder" + ], + "type": "object" + }, + "SchemaId": { + "additionalProperties": false, + "properties": { + "RegistryName": { + "type": "string" + }, + "SchemaArn": { + "type": "string" + }, + "SchemaName": { + "type": "string" + } + }, + "type": "object" + }, + "SchemaReference": { + "additionalProperties": false, + "properties": { + "SchemaId": { + "$ref": "#/definitions/SchemaId" + }, + "SchemaVersionId": { + "type": "string" + }, + "SchemaVersionNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "SerdeInfo": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Parameters": { + "type": "object" + }, + "SerializationLibrary": { + "type": "string" + } + }, + "type": "object" + }, + "SkewedInfo": { + "additionalProperties": false, + "properties": { + "SkewedColumnNames": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SkewedColumnValueLocationMaps": { + "type": "object" + }, + "SkewedColumnValues": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "StorageDescriptor": { + "additionalProperties": false, + "properties": { + "BucketColumns": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Columns": { + "items": { + "$ref": "#/definitions/Column" + }, + "type": "array", + "uniqueItems": false + }, + "Compressed": { + "type": "boolean" + }, + "InputFormat": { + "type": "string" + }, + "Location": { + "type": "string" + }, + "NumberOfBuckets": { + "type": "integer" + }, + "OutputFormat": { + "type": "string" + }, + "Parameters": { + "type": "object" + }, + "SchemaReference": { + "$ref": "#/definitions/SchemaReference" + }, + "SerdeInfo": { + "$ref": "#/definitions/SerdeInfo" + }, + "SkewedInfo": { + "$ref": "#/definitions/SkewedInfo" + }, + "SortColumns": { + "items": { + "$ref": "#/definitions/Order" + }, + "type": "array", + "uniqueItems": false + }, + "StoredAsSubDirectories": { + "type": "boolean" + } + }, + "type": "object" + }, + "TableIdentifier": { + "additionalProperties": false, + "properties": { + "CatalogId": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Region": { + "type": "string" + } + }, + "type": "object" + }, + "TableInput": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Owner": { + "type": "string" + }, + "Parameters": { + "type": "object" + }, + "PartitionKeys": { + "items": { + "$ref": "#/definitions/Column" + }, + "type": "array", + "uniqueItems": false + }, + "Retention": { + "type": "integer" + }, + "StorageDescriptor": { + "$ref": "#/definitions/StorageDescriptor" + }, + "TableType": { + "type": "string" + }, + "TargetTable": { + "$ref": "#/definitions/TableIdentifier" + }, + "ViewExpandedText": { + "type": "string" + }, + "ViewOriginalText": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Glue::Table", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CatalogId": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "OpenTableFormatInput": { + "$ref": "#/definitions/OpenTableFormatInput" + }, + "TableInput": { + "$ref": "#/definitions/TableInput" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TableInput", + "DatabaseName", + "CatalogId" + ], + "typeName": "AWS::Glue::Table" +} diff --git a/src/schema/aws-glue-tableoptimizer.json b/src/schema/aws-glue-tableoptimizer.json index ea43a678..5e6a9861 100644 --- a/src/schema/aws-glue-tableoptimizer.json +++ b/src/schema/aws-glue-tableoptimizer.json @@ -1,62 +1,110 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TableName", - "/properties/DatabaseName", - "/properties/Type", - "/properties/CatalogId" - ], - "definitions": { - "TableOptimizerConfiguration": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "RoleArn": { - "type": "string" - } - }, - "required": [ - "Enabled", - "RoleArn" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Glue::TableOptimizer", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CatalogId": { - "type": "string" - }, - "DatabaseName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "TableName": { - "type": "string" - }, - "TableOptimizerConfiguration": { - "$ref": "#/definitions/TableOptimizerConfiguration" - }, - "Type": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "TableName", - "Type", - "DatabaseName", - "TableOptimizerConfiguration", - "CatalogId" - ], - "typeName": "AWS::Glue::TableOptimizer" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TableName", + "/properties/DatabaseName", + "/properties/Type", + "/properties/CatalogId" + ], + "definitions": { + "IcebergConfiguration": { + "additionalProperties": false, + "properties": { + "Location": { + "type": "string" + }, + "OrphanFileRetentionPeriodInDays": { + "type": "integer" + } + }, + "type": "object" + }, + "OrphanFileDeletionConfiguration": { + "additionalProperties": false, + "properties": { + "IcebergConfiguration": { + "$ref": "#/definitions/IcebergConfiguration" + } + }, + "type": "object" + }, + "RetentionConfiguration": { + "additionalProperties": false, + "properties": { + "IcebergConfiguration": { + "$ref": "#/definitions/IcebergConfiguration" + } + }, + "type": "object" + }, + "TableOptimizerConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OrphanFileDeletionConfiguration": { + "$ref": "#/definitions/OrphanFileDeletionConfiguration" + }, + "RetentionConfiguration": { + "$ref": "#/definitions/RetentionConfiguration" + }, + "RoleArn": { + "type": "string" + }, + "VpcConfiguration": { + "$ref": "#/definitions/VpcConfiguration" + } + }, + "required": [ + "Enabled", + "RoleArn" + ], + "type": "object" + }, + "VpcConfiguration": { + "additionalProperties": false, + "properties": { + "GlueConnectionName": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Glue::TableOptimizer", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CatalogId": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "TableName": { + "type": "string" + }, + "TableOptimizerConfiguration": { + "$ref": "#/definitions/TableOptimizerConfiguration" + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TableName", + "Type", + "DatabaseName", + "TableOptimizerConfiguration", + "CatalogId" + ], + "typeName": "AWS::Glue::TableOptimizer" +} diff --git a/src/schema/aws-glue-trigger.json b/src/schema/aws-glue-trigger.json index 74249cd8..1c8971e7 100644 --- a/src/schema/aws-glue-trigger.json +++ b/src/schema/aws-glue-trigger.json @@ -1,215 +1,219 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/WorkflowName", - "/properties/Type" - ], - "definitions": { - "Action": { - "additionalProperties": false, - "description": "The actions initiated by this trigger.", - "properties": { - "Arguments": { - "description": "The job arguments used when this trigger fires. For this job run, they replace the default arguments set in the job definition itself.", - "type": "object" - }, - "CrawlerName": { - "description": "The name of the crawler to be used with this action.", - "type": "string" - }, - "JobName": { - "description": "The name of a job to be executed.", - "type": "string" - }, - "NotificationProperty": { - "$ref": "#/definitions/NotificationProperty", - "description": "Specifies configuration properties of a job run notification." - }, - "SecurityConfiguration": { - "description": "The name of the SecurityConfiguration structure to be used with this action.", - "type": "string" - }, - "Timeout": { - "description": "The JobRun timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters TIMEOUT status. The default is 2,880 minutes (48 hours). This overrides the timeout value set in the parent job.", - "type": "integer" - } - }, - "type": "object" - }, - "Condition": { - "additionalProperties": false, - "description": "Defines a condition under which a trigger fires.", - "properties": { - "CrawlState": { - "description": "The state of the crawler to which this condition applies.", - "type": "string" - }, - "CrawlerName": { - "description": "The name of the crawler to which this condition applies.", - "type": "string" - }, - "JobName": { - "description": "The name of the job whose JobRuns this condition applies to, and on which this trigger waits.", - "type": "string" - }, - "LogicalOperator": { - "description": "A logical operator.", - "type": "string" - }, - "State": { - "description": "The condition state. Currently, the values supported are SUCCEEDED, STOPPED, TIMEOUT, and FAILED.", - "type": "string" - } - }, - "type": "object" - }, - "EventBatchingCondition": { - "additionalProperties": false, - "description": "Batch condition that must be met (specified number of events received or batch time window expired) before EventBridge event trigger fires.", - "properties": { - "BatchSize": { - "description": "Number of events that must be received from Amazon EventBridge before EventBridge event trigger fires.", - "type": "integer" - }, - "BatchWindow": { - "description": "Window of time in seconds after which EventBridge event trigger fires. Window starts when first event is received.", - "type": "integer" - } - }, - "required": [ - "BatchSize" - ], - "type": "object" - }, - "NotificationProperty": { - "additionalProperties": false, - "description": "Specifies configuration properties of a job run notification.", - "properties": { - "NotifyDelayAfter": { - "description": "After a job run starts, the number of minutes to wait before sending a job run delay notification", - "type": "integer" - } - }, - "type": "object" - }, - "Predicate": { - "additionalProperties": false, - "description": "The predicate of this trigger, which defines when it will fire.", - "properties": { - "Conditions": { - "description": "A list of the conditions that determine when the trigger will fire.", - "items": { - "$ref": "#/definitions/Condition" - }, - "type": "array", - "uniqueItems": false - }, - "Logical": { - "description": "An optional field if only one condition is listed. If multiple conditions are listed, then this field is required.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Glue::Trigger", - "handlers": { - "create": { - "permissions": [ - "glue:CreateTrigger", - "glue:GetTrigger", - "glue:TagResource" - ] - }, - "delete": { - "permissions": [ - "glue:DeleteTrigger", - "glue:GetTrigger" - ] - }, - "list": { - "permissions": [ - "glue:ListTriggers" - ] - }, - "read": { - "permissions": [ - "glue:GetTrigger", - "glue:GetTags" - ] - }, - "update": { - "permissions": [ - "glue:UpdateTrigger", - "glue:UntagResource", - "glue:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Actions": { - "description": "The actions initiated by this trigger.", - "items": { - "$ref": "#/definitions/Action" - }, - "type": "array", - "uniqueItems": false - }, - "Description": { - "description": "A description of this trigger.", - "type": "string" - }, - "EventBatchingCondition": { - "$ref": "#/definitions/EventBatchingCondition", - "description": "Batch condition that must be met (specified number of events received or batch time window expired) before EventBridge event trigger fires." - }, - "Name": { - "description": "The name of the trigger.", - "type": "string" - }, - "Predicate": { - "$ref": "#/definitions/Predicate", - "description": "The predicate of this trigger, which defines when it will fire." - }, - "Schedule": { - "description": "A cron expression used to specify the schedule.", - "type": "string" - }, - "StartOnCreation": { - "description": "Set to true to start SCHEDULED and CONDITIONAL triggers when created. True is not supported for ON_DEMAND triggers.", - "type": "boolean" - }, - "Tags": { - "description": "The tags to use with this trigger.", - "type": "object" - }, - "Type": { - "description": "The type of trigger that this is.", - "type": "string" - }, - "WorkflowName": { - "description": "The name of the workflow associated with the trigger.", - "type": "string" - } - }, - "required": [ - "Type", - "Actions" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Glue::Trigger", - "writeOnlyProperties": [ - "/properties/StartOnCreation" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/WorkflowName", + "/properties/Type" + ], + "definitions": { + "Action": { + "additionalProperties": false, + "description": "The actions initiated by this trigger.", + "properties": { + "Arguments": { + "description": "The job arguments used when this trigger fires. For this job run, they replace the default arguments set in the job definition itself.", + "type": "object" + }, + "CrawlerName": { + "description": "The name of the crawler to be used with this action.", + "type": "string" + }, + "JobName": { + "description": "The name of a job to be executed.", + "type": "string" + }, + "NotificationProperty": { + "$ref": "#/definitions/NotificationProperty", + "description": "Specifies configuration properties of a job run notification." + }, + "SecurityConfiguration": { + "description": "The name of the SecurityConfiguration structure to be used with this action.", + "type": "string" + }, + "Timeout": { + "description": "The JobRun timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters TIMEOUT status. The default is 2,880 minutes (48 hours). This overrides the timeout value set in the parent job.", + "type": "integer" + } + }, + "type": "object" + }, + "Condition": { + "additionalProperties": false, + "description": "Defines a condition under which a trigger fires.", + "properties": { + "CrawlState": { + "description": "The state of the crawler to which this condition applies.", + "type": "string" + }, + "CrawlerName": { + "description": "The name of the crawler to which this condition applies.", + "type": "string" + }, + "JobName": { + "description": "The name of the job whose JobRuns this condition applies to, and on which this trigger waits.", + "type": "string" + }, + "LogicalOperator": { + "description": "A logical operator.", + "type": "string" + }, + "State": { + "description": "The condition state. Currently, the values supported are SUCCEEDED, STOPPED, TIMEOUT, and FAILED.", + "type": "string" + } + }, + "type": "object" + }, + "EventBatchingCondition": { + "additionalProperties": false, + "description": "Batch condition that must be met (specified number of events received or batch time window expired) before EventBridge event trigger fires.", + "properties": { + "BatchSize": { + "description": "Number of events that must be received from Amazon EventBridge before EventBridge event trigger fires.", + "type": "integer" + }, + "BatchWindow": { + "description": "Window of time in seconds after which EventBridge event trigger fires. Window starts when first event is received.", + "type": "integer" + } + }, + "required": [ + "BatchSize" + ], + "type": "object" + }, + "NotificationProperty": { + "additionalProperties": false, + "description": "Specifies configuration properties of a job run notification.", + "properties": { + "NotifyDelayAfter": { + "description": "After a job run starts, the number of minutes to wait before sending a job run delay notification", + "type": "integer" + } + }, + "type": "object" + }, + "Predicate": { + "additionalProperties": false, + "description": "The predicate of this trigger, which defines when it will fire.", + "properties": { + "Conditions": { + "description": "A list of the conditions that determine when the trigger will fire.", + "items": { + "$ref": "#/definitions/Condition" + }, + "type": "array", + "uniqueItems": false + }, + "Logical": { + "description": "An optional field if only one condition is listed. If multiple conditions are listed, then this field is required.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Glue::Trigger", + "handlers": { + "create": { + "permissions": [ + "glue:CreateTrigger", + "glue:GetTrigger", + "glue:TagResource" + ] + }, + "delete": { + "permissions": [ + "glue:DeleteTrigger", + "glue:GetTrigger" + ] + }, + "list": { + "permissions": [ + "glue:ListTriggers" + ] + }, + "read": { + "permissions": [ + "glue:GetTrigger", + "glue:GetTags" + ] + }, + "update": { + "permissions": [ + "glue:UpdateTrigger", + "glue:UntagResource", + "glue:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Actions": { + "description": "The actions initiated by this trigger.", + "items": { + "$ref": "#/definitions/Action" + }, + "type": "array", + "uniqueItems": false + }, + "Description": { + "description": "A description of this trigger.", + "type": "string" + }, + "EventBatchingCondition": { + "$ref": "#/definitions/EventBatchingCondition", + "description": "Batch condition that must be met (specified number of events received or batch time window expired) before EventBridge event trigger fires." + }, + "Name": { + "description": "The name of the trigger.", + "type": "string" + }, + "Predicate": { + "$ref": "#/definitions/Predicate", + "description": "The predicate of this trigger, which defines when it will fire." + }, + "Schedule": { + "description": "A cron expression used to specify the schedule.", + "type": "string" + }, + "StartOnCreation": { + "description": "Set to true to start SCHEDULED and CONDITIONAL triggers when created. True is not supported for ON_DEMAND triggers.", + "type": "boolean" + }, + "Tags": { + "description": "The tags to use with this trigger.", + "type": "object" + }, + "Type": { + "description": "The type of trigger that this is.", + "type": "string" + }, + "WorkflowName": { + "description": "The name of the workflow associated with the trigger.", + "type": "string" + } + }, + "required": [ + "Type", + "Actions" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "glue:TagResource", + "glue:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Glue::Trigger", + "writeOnlyProperties": [ + "/properties/StartOnCreation" + ] +} diff --git a/src/schema/aws-glue-usageprofile.json b/src/schema/aws-glue-usageprofile.json index edacd970..eaeccb3a 100644 --- a/src/schema/aws-glue-usageprofile.json +++ b/src/schema/aws-glue-usageprofile.json @@ -1,149 +1,203 @@ { - "typeName" : "AWS::Glue::UsageProfile", - "description" : "This creates a Resource of UsageProfile type.", - "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue", - "definitions" : { - "Tag" : { - "type" : "object", - "properties" : { - "Key" : { - "description" : "A key to identify the tag.", - "type" : "string", - "minLength" : 1, - "maxLength" : 128 + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "ConfigurationObject": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "DefaultValue" + ] }, - "Value" : { - "description" : "Corresponding tag value for the key.", - "type" : "string", - "minLength" : 0, - "maxLength" : 256 - } - }, - "required" : [ "Key", "Value" ], - "additionalProperties" : false - }, - "ProfileConfiguration" : { - "properties" : { - "JobConfiguration" : { - "patternProperties" : { - "^.+$" : { - "$ref" : "#/definitions/ConfigurationObject" + { + "oneOf": [ + { + "required": [ + "AllowedValues" + ] + }, + { + "required": [ + "MinValue", + "MaxValue" + ] } + ] + } + ], + "properties": { + "AllowedValues": { + "insertionOrder": false, + "items": { + "type": "string" }, - "additionalProperties" : false + "type": "array" }, - "SessionConfiguration" : { - "patternProperties" : { - "^.+$" : { - "$ref" : "#/definitions/ConfigurationObject" - } - }, - "additionalProperties" : false + "DefaultValue": { + "type": "string" + }, + "MaxValue": { + "type": "string" + }, + "MinValue": { + "type": "string" } - }, - "anyOf" : [ { - "required" : [ "JobConfiguration" ] - }, { - "required" : [ "SessionConfiguration" ] - } ], - "additionalProperties" : false + } }, - "ConfigurationObject" : { - "properties" : { - "DefaultValue" : { - "type" : "string" + "ProfileConfiguration": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "JobConfiguration" + ] }, - "AllowedValues" : { - "type" : "array", - "items" : { - "type" : "string" - }, - "insertionOrder" : false + { + "required": [ + "SessionConfiguration" + ] + } + ], + "properties": { + "JobConfiguration": { + "additionalProperties": false, + "patternProperties": { + "^.+$": { + "$ref": "#/definitions/ConfigurationObject" + } + } }, - "MinValue" : { - "type" : "string" + "SessionConfiguration": { + "additionalProperties": false, + "patternProperties": { + "^.+$": { + "$ref": "#/definitions/ConfigurationObject" + } + } + } + } + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "A key to identify the tag.", + "maxLength": 128, + "minLength": 1, + "type": "string" }, - "MaxValue" : { - "type" : "string" + "Value": { + "description": "Corresponding tag value for the key.", + "maxLength": 256, + "minLength": 0, + "type": "string" } }, - "anyOf" : [ { - "required" : [ "DefaultValue" ] - }, { - "oneOf" : [ { - "required" : [ "AllowedValues" ] - }, { - "required" : [ "MinValue", "MaxValue" ] - } ] - } ], - "additionalProperties" : false + "required": [ + "Key", + "Value" + ], + "type": "object" } }, - "properties" : { - "Name" : { - "description" : "The name of the UsageProfile.", - "type" : "string", - "maxLength" : 128, - "minLength" : 5 + "description": "This creates a Resource of UsageProfile type.", + "handlers": { + "create": { + "permissions": [ + "glue:CreateUsageProfile", + "glue:GetUsageProfile", + "glue:GetTags", + "glue:TagResource" + ] }, - "Description" : { - "description" : "The description of the UsageProfile.", - "type" : "string", - "maxLength" : 512, - "minLength" : 1, - "pattern" : "[a-zA-Z0-9\\-\\:\\_]{1,64}" + "delete": { + "permissions": [ + "glue:DeleteUsageProfile", + "glue:GetUsageProfile" + ] }, - "Configuration" : { - "description" : "UsageProfile configuration for supported service ex: (Jobs, Sessions).", - "$ref" : "#/definitions/ProfileConfiguration", - "minItems" : 1 + "list": { + "permissions": [ + "glue:ListUsageProfiles" + ] }, - "Tags" : { - "description" : "The tags to be applied to this UsageProfiles.", - "type" : "array", - "minItems" : 0, - "maxItems" : 50, - "items" : { - "$ref" : "#/definitions/Tag" - }, - "uniqueItems" : true, - "insertionOrder" : false + "read": { + "permissions": [ + "glue:GetUsageProfile", + "glue:GetTags" + ] }, - "CreatedOn" : { - "description" : "Creation time.", - "type" : "string", - "maxLength" : 128, - "minLength" : 1 + "update": { + "permissions": [ + "glue:UpdateUsageProfile", + "glue:GetUsageProfile", + "glue:TagResource", + "glue:UntagResource", + "glue:GetTags" + ] } }, - "additionalProperties" : false, - "tagging" : { - "taggable" : true, - "tagOnCreate" : true, - "tagUpdatable" : true, - "cloudFormationSystemTags" : true, - "tagProperty" : "/properties/Tags", - "permissions" : [ "glue:TagResource", "glue:UntagResource", "glue:GetTags" ] - }, - "required" : [ "Name" ], - "readOnlyProperties" : [ "/properties/CreatedOn" ], - "createOnlyProperties" : [ "/properties/Name" ], - "primaryIdentifier" : [ "/properties/Name" ], - "handlers" : { - "create" : { - "permissions" : [ "glue:CreateUsageProfile", "glue:GetUsageProfile", "glue:GetTags", "glue:TagResource" ] + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/ProfileConfiguration", + "description": "UsageProfile configuration for supported service ex: (Jobs, Sessions).", + "minItems": 1 }, - "read" : { - "permissions" : [ "glue:GetUsageProfile", "glue:GetTags" ] + "CreatedOn": { + "description": "Creation time.", + "maxLength": 128, + "minLength": 1, + "type": "string" }, - "update" : { - "permissions" : [ "glue:UpdateUsageProfile", "glue:GetUsageProfile", "glue:TagResource", "glue:UntagResource", "glue:GetTags" ] + "Description": { + "description": "The description of the UsageProfile.", + "maxLength": 512, + "minLength": 1, + "pattern": "[a-zA-Z0-9\\-\\:\\_]{1,64}", + "type": "string" }, - "delete" : { - "permissions" : [ "glue:DeleteUsageProfile", "glue:GetUsageProfile" ] + "Name": { + "description": "The name of the UsageProfile.", + "maxLength": 128, + "minLength": 5, + "type": "string" }, - "list" : { - "permissions" : [ "glue:ListUsageProfiles" ] + "Tags": { + "description": "The tags to be applied to this UsageProfiles.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true } - } -} \ No newline at end of file + }, + "readOnlyProperties": [ + "/properties/CreatedOn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-glue", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "glue:TagResource", + "glue:UntagResource", + "glue:GetTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Glue::UsageProfile" +} diff --git a/src/schema/aws-glue-workflow.json b/src/schema/aws-glue-workflow.json index 526edb97..3ea13a1b 100644 --- a/src/schema/aws-glue-workflow.json +++ b/src/schema/aws-glue-workflow.json @@ -1,34 +1,34 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "description": "Resource Type definition for AWS::Glue::Workflow", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DefaultRunProperties": { - "type": "object" - }, - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "MaxConcurrentRuns": { - "type": "integer" - }, - "Name": { - "type": "string" - }, - "Tags": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "typeName": "AWS::Glue::Workflow" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "description": "Resource Type definition for AWS::Glue::Workflow", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DefaultRunProperties": { + "type": "object" + }, + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "MaxConcurrentRuns": { + "type": "integer" + }, + "Name": { + "type": "string" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::Glue::Workflow" +} diff --git a/src/schema/aws-grafana-workspace.json b/src/schema/aws-grafana-workspace.json index 09d7e39b..56f5a179 100644 --- a/src/schema/aws-grafana-workspace.json +++ b/src/schema/aws-grafana-workspace.json @@ -1,495 +1,495 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClientToken" - ], - "definitions": { - "AccountAccessType": { - "description": "These enums represent valid account access types. Specifically these enums determine whether the workspace can access AWS resources in the AWS account only, or whether it can also access resources in other accounts in the same organization. If the value CURRENT_ACCOUNT is used, a workspace role ARN must be provided. If the value is ORGANIZATION, a list of organizational units must be provided.", - "enum": [ - "CURRENT_ACCOUNT", - "ORGANIZATION" - ], - "type": "string" - }, - "AssertionAttributes": { - "additionalProperties": false, - "description": "Maps Grafana friendly names to the IdPs SAML attributes.", - "properties": { - "Email": { - "description": "Name of the attribute within the SAML assert to use as the users email in Grafana.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Groups": { - "description": "Name of the attribute within the SAML assert to use as the users groups in Grafana.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Login": { - "description": "Name of the attribute within the SAML assert to use as the users login handle in Grafana.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "Name of the attribute within the SAML assert to use as the users name in Grafana.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Org": { - "description": "Name of the attribute within the SAML assert to use as the users organizations in Grafana.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Role": { - "description": "Name of the attribute within the SAML assert to use as the users roles in Grafana.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "AuthenticationProviderTypes": { - "description": "Valid workspace authentication providers.", - "enum": [ - "AWS_SSO", - "SAML" - ], - "type": "string" - }, - "DataSourceType": { - "description": "These enums represent valid AWS data sources that can be queried via the Grafana workspace. These data sources are primarily used to help customers visualize which data sources have been added to a service managed workspace IAM role.", - "enum": [ - "AMAZON_OPENSEARCH_SERVICE", - "CLOUDWATCH", - "PROMETHEUS", - "XRAY", - "TIMESTREAM", - "SITEWISE", - "ATHENA", - "REDSHIFT" - ], - "type": "string" - }, - "IdpMetadata": { - "additionalProperties": false, - "description": "IdP Metadata used to configure SAML authentication in Grafana.", - "properties": { - "Url": { - "description": "URL that vends the IdPs metadata.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Xml": { - "description": "XML blob of the IdPs metadata.", - "type": "string" - } - }, - "type": "object" - }, - "NetworkAccessControl": { - "additionalProperties": false, - "description": "The configuration settings for Network Access Control.", - "properties": { - "PrefixListIds": { - "description": "The list of prefix list IDs. A prefix list is a list of CIDR ranges of IP addresses. The IP addresses specified are allowed to access your workspace. If the list is not included in the configuration then no IP addresses will be allowed to access the workspace.", - "insertionOrder": false, - "items": { - "description": "Prefix List Ids", - "minLength": 1, - "type": "string" - }, - "maxItems": 5, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "VpceIds": { - "description": "The list of Amazon VPC endpoint IDs for the workspace. If a NetworkAccessConfiguration is specified then only VPC endpoints specified here will be allowed to access the workspace.", - "insertionOrder": false, - "items": { - "description": "VPCE Ids", - "minLength": 1, - "type": "string" - }, - "maxItems": 5, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "NotificationDestinationType": { - "description": "These enums represent valid AWS notification destinations that the Grafana workspace has permission to use. These notification destinations are primarily used to help customers visualize which destinations have been added to a service managed IAM role.", - "enum": [ - "SNS" - ], - "type": "string" - }, - "PermissionType": { - "description": "These enums represent valid permission types to use when creating or configuring a Grafana workspace. The SERVICE_MANAGED permission type means the Managed Grafana service will create a workspace IAM role on your behalf. The CUSTOMER_MANAGED permission type means that the customer is expected to provide an IAM role that the Grafana workspace can use to query data sources.", - "enum": [ - "CUSTOMER_MANAGED", - "SERVICE_MANAGED" - ], - "type": "string" - }, - "RoleValues": { - "additionalProperties": false, - "description": "Maps SAML roles to the Grafana Editor and Admin roles.", - "properties": { - "Admin": { - "description": "List of SAML roles which will be mapped into the Grafana Admin role.", - "insertionOrder": false, - "items": { - "description": "A single SAML role.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "Editor": { - "description": "List of SAML roles which will be mapped into the Grafana Editor role.", - "insertionOrder": false, - "items": { - "description": "A single SAML role.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "SamlConfiguration": { - "additionalProperties": false, - "description": "SAML configuration data associated with an AMG workspace.", - "properties": { - "AllowedOrganizations": { - "description": "List of SAML organizations allowed to access Grafana.", - "insertionOrder": false, - "items": { - "description": "A single SAML organization.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "AssertionAttributes": { - "$ref": "#/definitions/AssertionAttributes" - }, - "IdpMetadata": { - "$ref": "#/definitions/IdpMetadata" - }, - "LoginValidityDuration": { - "description": "The maximum lifetime an authenticated user can be logged in (in minutes) before being required to re-authenticate.", - "type": "number" - }, - "RoleValues": { - "$ref": "#/definitions/RoleValues" - } - }, - "required": [ - "IdpMetadata" - ], - "type": "object" - }, - "SamlConfigurationStatus": { - "description": "Valid SAML configuration statuses.", - "enum": [ - "CONFIGURED", - "NOT_CONFIGURED" - ], - "type": "string" - }, - "VpcConfiguration": { - "additionalProperties": false, - "description": "The configuration settings for an Amazon VPC that contains data sources for your Grafana workspace to connect to.", - "properties": { - "SecurityGroupIds": { - "description": "The list of Amazon EC2 security group IDs attached to the Amazon VPC for your Grafana workspace to connect.", - "insertionOrder": false, - "items": { - "description": "VPC Security Group Id", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "SubnetIds": { - "description": "The list of Amazon EC2 subnet IDs created in the Amazon VPC for your Grafana workspace to connect.", - "insertionOrder": false, - "items": { - "description": "VPC Subnet Id", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "maxItems": 6, - "minItems": 2, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "SecurityGroupIds", - "SubnetIds" - ], - "type": "object" - }, - "WorkspaceStatus": { - "description": "These enums represent the status of a workspace.", - "enum": [ - "ACTIVE", - "CREATING", - "DELETING", - "FAILED", - "UPDATING", - "UPGRADING", - "VERSION_UPDATING", - "DELETION_FAILED", - "CREATION_FAILED", - "UPDATE_FAILED", - "UPGRADE_FAILED", - "LICENSE_REMOVAL_FAILED", - "VERSION_UPDATE_FAILED" - ], - "type": "string" - } - }, - "description": "Definition of AWS::Grafana::Workspace Resource Type", - "handlers": { - "create": { - "permissions": [ - "grafana:CreateWorkspace", - "grafana:DescribeWorkspace", - "grafana:DescribeWorkspaceAuthentication", - "grafana:DescribeWorkspaceConfiguration", - "grafana:UpdateWorkspaceAuthentication", - "sso:DescribeRegisteredRegions", - "sso:CreateManagedApplicationInstance", - "organizations:DescribeOrganization", - "sso:GetSharedSsoConfiguration", - "iam:PassRole", - "ec2:GetManagedPrefixListEntries", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "iam:CreateServiceLinkedRole", - "sso:ListApplicationInstances", - "sso:GetApplicationInstance" - ] - }, - "delete": { - "permissions": [ - "grafana:DeleteWorkspace", - "grafana:DescribeWorkspace", - "grafana:DescribeWorkspaceAuthentication", - "grafana:DescribeWorkspaceConfiguration", - "sso:DeleteManagedApplicationInstance", - "sso:DescribeRegisteredRegions" - ] - }, - "list": { - "permissions": [ - "grafana:ListWorkspaces", - "grafana:DescribeWorkspaceAuthentication", - "grafana:DescribeWorkspaceConfiguration" - ] - }, - "read": { - "permissions": [ - "grafana:DescribeWorkspace", - "grafana:DescribeWorkspaceAuthentication", - "grafana:DescribeWorkspaceConfiguration" - ] - }, - "update": { - "permissions": [ - "grafana:DescribeWorkspace", - "grafana:DescribeWorkspaceAuthentication", - "grafana:DescribeWorkspaceConfiguration", - "grafana:UpdateWorkspace", - "grafana:UpdateWorkspaceAuthentication", - "grafana:UpdateWorkspaceConfiguration", - "sso:DescribeRegisteredRegions", - "sso:CreateManagedApplicationInstance", - "ec2:GetManagedPrefixListEntries", - "iam:PassRole", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "iam:CreateServiceLinkedRole", - "sso:ListApplicationInstances", - "sso:GetApplicationInstance" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AccountAccessType": { - "$ref": "#/definitions/AccountAccessType" - }, - "AuthenticationProviders": { - "description": "List of authentication providers to enable.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AuthenticationProviderTypes" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "ClientToken": { - "description": "A unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.", - "pattern": "^[!-~]{1,64}$", - "type": "string" - }, - "CreationTimestamp": { - "description": "Timestamp when the workspace was created.", - "format": "date-time", - "type": "string" - }, - "DataSources": { - "description": "List of data sources on the service managed IAM role.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DataSourceType" - }, - "type": "array" - }, - "Description": { - "description": "Description of a workspace.", - "maxLength": 2048, - "minLength": 0, - "type": "string" - }, - "Endpoint": { - "description": "Endpoint for the Grafana workspace.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "GrafanaVersion": { - "description": "The version of Grafana to support in your workspace.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Id": { - "description": "The id that uniquely identifies a Grafana workspace.", - "pattern": "^g-[0-9a-f]{10}$", - "type": "string" - }, - "ModificationTimestamp": { - "description": "Timestamp when the workspace was last modified", - "format": "date-time", - "type": "string" - }, - "Name": { - "description": "The user friendly name of a workspace.", - "pattern": "^[a-zA-Z0-9-._~]{1,255}$", - "type": "string" - }, - "NetworkAccessControl": { - "$ref": "#/definitions/NetworkAccessControl" - }, - "NotificationDestinations": { - "description": "List of notification destinations on the customers service managed IAM role that the Grafana workspace can query.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/NotificationDestinationType" - }, - "type": "array" - }, - "OrganizationRoleName": { - "description": "The name of an IAM role that already exists to use with AWS Organizations to access AWS data sources and notification channels in other accounts in an organization.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "OrganizationalUnits": { - "description": "List of Organizational Units containing AWS accounts the Grafana workspace can pull data from.", - "insertionOrder": false, - "items": { - "description": "Id of an organizational unit.", - "type": "string" - }, - "type": "array" - }, - "PermissionType": { - "$ref": "#/definitions/PermissionType" - }, - "PluginAdminEnabled": { - "description": "Allow workspace admins to install plugins", - "type": "boolean" - }, - "RoleArn": { - "description": "IAM Role that will be used to grant the Grafana workspace access to a customers AWS resources.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "SamlConfiguration": { - "$ref": "#/definitions/SamlConfiguration" - }, - "SamlConfigurationStatus": { - "$ref": "#/definitions/SamlConfigurationStatus" - }, - "SsoClientId": { - "description": "The client ID of the AWS SSO Managed Application.", - "type": "string" - }, - "StackSetName": { - "description": "The name of the AWS CloudFormation stack set to use to generate IAM roles to be used for this workspace.", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/WorkspaceStatus" - }, - "VpcConfiguration": { - "$ref": "#/definitions/VpcConfiguration" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/SsoClientId", - "/properties/SamlConfigurationStatus", - "/properties/Endpoint", - "/properties/Status", - "/properties/CreationTimestamp", - "/properties/ModificationTimestamp" - ], - "required": [ - "AuthenticationProviders", - "PermissionType", - "AccountAccessType" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Grafana::Workspace", - "writeOnlyProperties": [ - "/properties/ClientToken" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClientToken" + ], + "definitions": { + "AccountAccessType": { + "description": "These enums represent valid account access types. Specifically these enums determine whether the workspace can access AWS resources in the AWS account only, or whether it can also access resources in other accounts in the same organization. If the value CURRENT_ACCOUNT is used, a workspace role ARN must be provided. If the value is ORGANIZATION, a list of organizational units must be provided.", + "enum": [ + "CURRENT_ACCOUNT", + "ORGANIZATION" + ], + "type": "string" + }, + "AssertionAttributes": { + "additionalProperties": false, + "description": "Maps Grafana friendly names to the IdPs SAML attributes.", + "properties": { + "Email": { + "description": "Name of the attribute within the SAML assert to use as the users email in Grafana.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Groups": { + "description": "Name of the attribute within the SAML assert to use as the users groups in Grafana.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Login": { + "description": "Name of the attribute within the SAML assert to use as the users login handle in Grafana.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "Name of the attribute within the SAML assert to use as the users name in Grafana.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Org": { + "description": "Name of the attribute within the SAML assert to use as the users organizations in Grafana.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Role": { + "description": "Name of the attribute within the SAML assert to use as the users roles in Grafana.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "AuthenticationProviderTypes": { + "description": "Valid workspace authentication providers.", + "enum": [ + "AWS_SSO", + "SAML" + ], + "type": "string" + }, + "DataSourceType": { + "description": "These enums represent valid AWS data sources that can be queried via the Grafana workspace. These data sources are primarily used to help customers visualize which data sources have been added to a service managed workspace IAM role.", + "enum": [ + "AMAZON_OPENSEARCH_SERVICE", + "CLOUDWATCH", + "PROMETHEUS", + "XRAY", + "TIMESTREAM", + "SITEWISE", + "ATHENA", + "REDSHIFT" + ], + "type": "string" + }, + "IdpMetadata": { + "additionalProperties": false, + "description": "IdP Metadata used to configure SAML authentication in Grafana.", + "properties": { + "Url": { + "description": "URL that vends the IdPs metadata.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Xml": { + "description": "XML blob of the IdPs metadata.", + "type": "string" + } + }, + "type": "object" + }, + "NetworkAccessControl": { + "additionalProperties": false, + "description": "The configuration settings for Network Access Control.", + "properties": { + "PrefixListIds": { + "description": "The list of prefix list IDs. A prefix list is a list of CIDR ranges of IP addresses. The IP addresses specified are allowed to access your workspace. If the list is not included in the configuration then no IP addresses will be allowed to access the workspace.", + "insertionOrder": false, + "items": { + "description": "Prefix List Ids", + "minLength": 1, + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "VpceIds": { + "description": "The list of Amazon VPC endpoint IDs for the workspace. If a NetworkAccessConfiguration is specified then only VPC endpoints specified here will be allowed to access the workspace.", + "insertionOrder": false, + "items": { + "description": "VPCE Ids", + "minLength": 1, + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "NotificationDestinationType": { + "description": "These enums represent valid AWS notification destinations that the Grafana workspace has permission to use. These notification destinations are primarily used to help customers visualize which destinations have been added to a service managed IAM role.", + "enum": [ + "SNS" + ], + "type": "string" + }, + "PermissionType": { + "description": "These enums represent valid permission types to use when creating or configuring a Grafana workspace. The SERVICE_MANAGED permission type means the Managed Grafana service will create a workspace IAM role on your behalf. The CUSTOMER_MANAGED permission type means that the customer is expected to provide an IAM role that the Grafana workspace can use to query data sources.", + "enum": [ + "CUSTOMER_MANAGED", + "SERVICE_MANAGED" + ], + "type": "string" + }, + "RoleValues": { + "additionalProperties": false, + "description": "Maps SAML roles to the Grafana Editor and Admin roles.", + "properties": { + "Admin": { + "description": "List of SAML roles which will be mapped into the Grafana Admin role.", + "insertionOrder": false, + "items": { + "description": "A single SAML role.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "type": "array" + }, + "Editor": { + "description": "List of SAML roles which will be mapped into the Grafana Editor role.", + "insertionOrder": false, + "items": { + "description": "A single SAML role.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "SamlConfiguration": { + "additionalProperties": false, + "description": "SAML configuration data associated with an AMG workspace.", + "properties": { + "AllowedOrganizations": { + "description": "List of SAML organizations allowed to access Grafana.", + "insertionOrder": false, + "items": { + "description": "A single SAML organization.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "type": "array" + }, + "AssertionAttributes": { + "$ref": "#/definitions/AssertionAttributes" + }, + "IdpMetadata": { + "$ref": "#/definitions/IdpMetadata" + }, + "LoginValidityDuration": { + "description": "The maximum lifetime an authenticated user can be logged in (in minutes) before being required to re-authenticate.", + "type": "number" + }, + "RoleValues": { + "$ref": "#/definitions/RoleValues" + } + }, + "required": [ + "IdpMetadata" + ], + "type": "object" + }, + "SamlConfigurationStatus": { + "description": "Valid SAML configuration statuses.", + "enum": [ + "CONFIGURED", + "NOT_CONFIGURED" + ], + "type": "string" + }, + "VpcConfiguration": { + "additionalProperties": false, + "description": "The configuration settings for an Amazon VPC that contains data sources for your Grafana workspace to connect to.", + "properties": { + "SecurityGroupIds": { + "description": "The list of Amazon EC2 security group IDs attached to the Amazon VPC for your Grafana workspace to connect.", + "insertionOrder": false, + "items": { + "description": "VPC Security Group Id", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "SubnetIds": { + "description": "The list of Amazon EC2 subnet IDs created in the Amazon VPC for your Grafana workspace to connect.", + "insertionOrder": false, + "items": { + "description": "VPC Subnet Id", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "maxItems": 6, + "minItems": 2, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "SecurityGroupIds", + "SubnetIds" + ], + "type": "object" + }, + "WorkspaceStatus": { + "description": "These enums represent the status of a workspace.", + "enum": [ + "ACTIVE", + "CREATING", + "DELETING", + "FAILED", + "UPDATING", + "UPGRADING", + "VERSION_UPDATING", + "DELETION_FAILED", + "CREATION_FAILED", + "UPDATE_FAILED", + "UPGRADE_FAILED", + "LICENSE_REMOVAL_FAILED", + "VERSION_UPDATE_FAILED" + ], + "type": "string" + } + }, + "description": "Definition of AWS::Grafana::Workspace Resource Type", + "handlers": { + "create": { + "permissions": [ + "grafana:CreateWorkspace", + "grafana:DescribeWorkspace", + "grafana:DescribeWorkspaceAuthentication", + "grafana:DescribeWorkspaceConfiguration", + "grafana:UpdateWorkspaceAuthentication", + "sso:DescribeRegisteredRegions", + "sso:CreateManagedApplicationInstance", + "organizations:DescribeOrganization", + "sso:GetSharedSsoConfiguration", + "iam:PassRole", + "ec2:GetManagedPrefixListEntries", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "iam:CreateServiceLinkedRole", + "sso:ListApplicationInstances", + "sso:GetApplicationInstance" + ] + }, + "delete": { + "permissions": [ + "grafana:DeleteWorkspace", + "grafana:DescribeWorkspace", + "grafana:DescribeWorkspaceAuthentication", + "grafana:DescribeWorkspaceConfiguration", + "sso:DeleteManagedApplicationInstance", + "sso:DescribeRegisteredRegions" + ] + }, + "list": { + "permissions": [ + "grafana:ListWorkspaces", + "grafana:DescribeWorkspaceAuthentication", + "grafana:DescribeWorkspaceConfiguration" + ] + }, + "read": { + "permissions": [ + "grafana:DescribeWorkspace", + "grafana:DescribeWorkspaceAuthentication", + "grafana:DescribeWorkspaceConfiguration" + ] + }, + "update": { + "permissions": [ + "grafana:DescribeWorkspace", + "grafana:DescribeWorkspaceAuthentication", + "grafana:DescribeWorkspaceConfiguration", + "grafana:UpdateWorkspace", + "grafana:UpdateWorkspaceAuthentication", + "grafana:UpdateWorkspaceConfiguration", + "sso:DescribeRegisteredRegions", + "sso:CreateManagedApplicationInstance", + "ec2:GetManagedPrefixListEntries", + "iam:PassRole", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "iam:CreateServiceLinkedRole", + "sso:ListApplicationInstances", + "sso:GetApplicationInstance" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AccountAccessType": { + "$ref": "#/definitions/AccountAccessType" + }, + "AuthenticationProviders": { + "description": "List of authentication providers to enable.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AuthenticationProviderTypes" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ClientToken": { + "description": "A unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.", + "pattern": "^[!-~]{1,64}$", + "type": "string" + }, + "CreationTimestamp": { + "description": "Timestamp when the workspace was created.", + "format": "date-time", + "type": "string" + }, + "DataSources": { + "description": "List of data sources on the service managed IAM role.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DataSourceType" + }, + "type": "array" + }, + "Description": { + "description": "Description of a workspace.", + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "Endpoint": { + "description": "Endpoint for the Grafana workspace.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "GrafanaVersion": { + "description": "The version of Grafana to support in your workspace.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Id": { + "description": "The id that uniquely identifies a Grafana workspace.", + "pattern": "^g-[0-9a-f]{10}$", + "type": "string" + }, + "ModificationTimestamp": { + "description": "Timestamp when the workspace was last modified", + "format": "date-time", + "type": "string" + }, + "Name": { + "description": "The user friendly name of a workspace.", + "pattern": "^[a-zA-Z0-9-._~]{1,255}$", + "type": "string" + }, + "NetworkAccessControl": { + "$ref": "#/definitions/NetworkAccessControl" + }, + "NotificationDestinations": { + "description": "List of notification destinations on the customers service managed IAM role that the Grafana workspace can query.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/NotificationDestinationType" + }, + "type": "array" + }, + "OrganizationRoleName": { + "description": "The name of an IAM role that already exists to use with AWS Organizations to access AWS data sources and notification channels in other accounts in an organization.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "OrganizationalUnits": { + "description": "List of Organizational Units containing AWS accounts the Grafana workspace can pull data from.", + "insertionOrder": false, + "items": { + "description": "Id of an organizational unit.", + "type": "string" + }, + "type": "array" + }, + "PermissionType": { + "$ref": "#/definitions/PermissionType" + }, + "PluginAdminEnabled": { + "description": "Allow workspace admins to install plugins", + "type": "boolean" + }, + "RoleArn": { + "description": "IAM Role that will be used to grant the Grafana workspace access to a customers AWS resources.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "SamlConfiguration": { + "$ref": "#/definitions/SamlConfiguration" + }, + "SamlConfigurationStatus": { + "$ref": "#/definitions/SamlConfigurationStatus" + }, + "SsoClientId": { + "description": "The client ID of the AWS SSO Managed Application.", + "type": "string" + }, + "StackSetName": { + "description": "The name of the AWS CloudFormation stack set to use to generate IAM roles to be used for this workspace.", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/WorkspaceStatus" + }, + "VpcConfiguration": { + "$ref": "#/definitions/VpcConfiguration" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/SsoClientId", + "/properties/SamlConfigurationStatus", + "/properties/Endpoint", + "/properties/Status", + "/properties/CreationTimestamp", + "/properties/ModificationTimestamp" + ], + "required": [ + "AuthenticationProviders", + "PermissionType", + "AccountAccessType" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Grafana::Workspace", + "writeOnlyProperties": [ + "/properties/ClientToken" + ] +} diff --git a/src/schema/aws-greengrass-connectordefinition.json b/src/schema/aws-greengrass-connectordefinition.json index f226eb61..77c0a8f0 100644 --- a/src/schema/aws-greengrass-connectordefinition.json +++ b/src/schema/aws-greengrass-connectordefinition.json @@ -1,76 +1,76 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InitialVersion" - ], - "definitions": { - "Connector": { - "additionalProperties": false, - "properties": { - "ConnectorArn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Parameters": { - "type": "object" - } - }, - "required": [ - "ConnectorArn", - "Id" - ], - "type": "object" - }, - "ConnectorDefinitionVersion": { - "additionalProperties": false, - "properties": { - "Connectors": { - "items": { - "$ref": "#/definitions/Connector" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Connectors" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Greengrass::ConnectorDefinition", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InitialVersion": { - "$ref": "#/definitions/ConnectorDefinitionVersion" - }, - "LatestVersionArn": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/LatestVersionArn", - "/properties/Arn", - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::Greengrass::ConnectorDefinition" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InitialVersion" + ], + "definitions": { + "Connector": { + "additionalProperties": false, + "properties": { + "ConnectorArn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Parameters": { + "type": "object" + } + }, + "required": [ + "ConnectorArn", + "Id" + ], + "type": "object" + }, + "ConnectorDefinitionVersion": { + "additionalProperties": false, + "properties": { + "Connectors": { + "items": { + "$ref": "#/definitions/Connector" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Connectors" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Greengrass::ConnectorDefinition", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "InitialVersion": { + "$ref": "#/definitions/ConnectorDefinitionVersion" + }, + "LatestVersionArn": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/LatestVersionArn", + "/properties/Arn", + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::Greengrass::ConnectorDefinition" +} diff --git a/src/schema/aws-greengrass-connectordefinitionversion.json b/src/schema/aws-greengrass-connectordefinitionversion.json index 269b6291..3645f4dd 100644 --- a/src/schema/aws-greengrass-connectordefinitionversion.json +++ b/src/schema/aws-greengrass-connectordefinitionversion.json @@ -1,55 +1,55 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConnectorDefinitionId", - "/properties/Connectors" - ], - "definitions": { - "Connector": { - "additionalProperties": false, - "properties": { - "ConnectorArn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Parameters": { - "type": "object" - } - }, - "required": [ - "ConnectorArn", - "Id" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Greengrass::ConnectorDefinitionVersion", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ConnectorDefinitionId": { - "type": "string" - }, - "Connectors": { - "items": { - "$ref": "#/definitions/Connector" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Connectors", - "ConnectorDefinitionId" - ], - "typeName": "AWS::Greengrass::ConnectorDefinitionVersion" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConnectorDefinitionId", + "/properties/Connectors" + ], + "definitions": { + "Connector": { + "additionalProperties": false, + "properties": { + "ConnectorArn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Parameters": { + "type": "object" + } + }, + "required": [ + "ConnectorArn", + "Id" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Greengrass::ConnectorDefinitionVersion", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ConnectorDefinitionId": { + "type": "string" + }, + "Connectors": { + "items": { + "$ref": "#/definitions/Connector" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Connectors", + "ConnectorDefinitionId" + ], + "typeName": "AWS::Greengrass::ConnectorDefinitionVersion" +} diff --git a/src/schema/aws-greengrass-coredefinition.json b/src/schema/aws-greengrass-coredefinition.json index 03fd668b..f05d14db 100644 --- a/src/schema/aws-greengrass-coredefinition.json +++ b/src/schema/aws-greengrass-coredefinition.json @@ -1,80 +1,80 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InitialVersion" - ], - "definitions": { - "Core": { - "additionalProperties": false, - "properties": { - "CertificateArn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "SyncShadow": { - "type": "boolean" - }, - "ThingArn": { - "type": "string" - } - }, - "required": [ - "ThingArn", - "Id", - "CertificateArn" - ], - "type": "object" - }, - "CoreDefinitionVersion": { - "additionalProperties": false, - "properties": { - "Cores": { - "items": { - "$ref": "#/definitions/Core" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Cores" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Greengrass::CoreDefinition", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InitialVersion": { - "$ref": "#/definitions/CoreDefinitionVersion" - }, - "LatestVersionArn": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/LatestVersionArn", - "/properties/Arn", - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::Greengrass::CoreDefinition" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InitialVersion" + ], + "definitions": { + "Core": { + "additionalProperties": false, + "properties": { + "CertificateArn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "SyncShadow": { + "type": "boolean" + }, + "ThingArn": { + "type": "string" + } + }, + "required": [ + "ThingArn", + "Id", + "CertificateArn" + ], + "type": "object" + }, + "CoreDefinitionVersion": { + "additionalProperties": false, + "properties": { + "Cores": { + "items": { + "$ref": "#/definitions/Core" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Cores" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Greengrass::CoreDefinition", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "InitialVersion": { + "$ref": "#/definitions/CoreDefinitionVersion" + }, + "LatestVersionArn": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/LatestVersionArn", + "/properties/Arn", + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::Greengrass::CoreDefinition" +} diff --git a/src/schema/aws-greengrass-coredefinitionversion.json b/src/schema/aws-greengrass-coredefinitionversion.json index 3228bebf..4d94ff09 100644 --- a/src/schema/aws-greengrass-coredefinitionversion.json +++ b/src/schema/aws-greengrass-coredefinitionversion.json @@ -1,59 +1,59 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Cores", - "/properties/CoreDefinitionId" - ], - "definitions": { - "Core": { - "additionalProperties": false, - "properties": { - "CertificateArn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "SyncShadow": { - "type": "boolean" - }, - "ThingArn": { - "type": "string" - } - }, - "required": [ - "ThingArn", - "Id", - "CertificateArn" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Greengrass::CoreDefinitionVersion", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CoreDefinitionId": { - "type": "string" - }, - "Cores": { - "items": { - "$ref": "#/definitions/Core" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Cores", - "CoreDefinitionId" - ], - "typeName": "AWS::Greengrass::CoreDefinitionVersion" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Cores", + "/properties/CoreDefinitionId" + ], + "definitions": { + "Core": { + "additionalProperties": false, + "properties": { + "CertificateArn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "SyncShadow": { + "type": "boolean" + }, + "ThingArn": { + "type": "string" + } + }, + "required": [ + "ThingArn", + "Id", + "CertificateArn" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Greengrass::CoreDefinitionVersion", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CoreDefinitionId": { + "type": "string" + }, + "Cores": { + "items": { + "$ref": "#/definitions/Core" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Cores", + "CoreDefinitionId" + ], + "typeName": "AWS::Greengrass::CoreDefinitionVersion" +} diff --git a/src/schema/aws-greengrass-devicedefinition.json b/src/schema/aws-greengrass-devicedefinition.json index 97cf1725..f2f04c91 100644 --- a/src/schema/aws-greengrass-devicedefinition.json +++ b/src/schema/aws-greengrass-devicedefinition.json @@ -1,80 +1,80 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InitialVersion" - ], - "definitions": { - "Device": { - "additionalProperties": false, - "properties": { - "CertificateArn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "SyncShadow": { - "type": "boolean" - }, - "ThingArn": { - "type": "string" - } - }, - "required": [ - "ThingArn", - "Id", - "CertificateArn" - ], - "type": "object" - }, - "DeviceDefinitionVersion": { - "additionalProperties": false, - "properties": { - "Devices": { - "items": { - "$ref": "#/definitions/Device" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Devices" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Greengrass::DeviceDefinition", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InitialVersion": { - "$ref": "#/definitions/DeviceDefinitionVersion" - }, - "LatestVersionArn": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/LatestVersionArn", - "/properties/Arn", - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::Greengrass::DeviceDefinition" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InitialVersion" + ], + "definitions": { + "Device": { + "additionalProperties": false, + "properties": { + "CertificateArn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "SyncShadow": { + "type": "boolean" + }, + "ThingArn": { + "type": "string" + } + }, + "required": [ + "ThingArn", + "Id", + "CertificateArn" + ], + "type": "object" + }, + "DeviceDefinitionVersion": { + "additionalProperties": false, + "properties": { + "Devices": { + "items": { + "$ref": "#/definitions/Device" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Devices" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Greengrass::DeviceDefinition", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "InitialVersion": { + "$ref": "#/definitions/DeviceDefinitionVersion" + }, + "LatestVersionArn": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/LatestVersionArn", + "/properties/Arn", + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::Greengrass::DeviceDefinition" +} diff --git a/src/schema/aws-greengrass-devicedefinitionversion.json b/src/schema/aws-greengrass-devicedefinitionversion.json index 12b873c3..fe52fe1c 100644 --- a/src/schema/aws-greengrass-devicedefinitionversion.json +++ b/src/schema/aws-greengrass-devicedefinitionversion.json @@ -1,59 +1,59 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DeviceDefinitionId", - "/properties/Devices" - ], - "definitions": { - "Device": { - "additionalProperties": false, - "properties": { - "CertificateArn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "SyncShadow": { - "type": "boolean" - }, - "ThingArn": { - "type": "string" - } - }, - "required": [ - "ThingArn", - "Id", - "CertificateArn" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Greengrass::DeviceDefinitionVersion", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DeviceDefinitionId": { - "type": "string" - }, - "Devices": { - "items": { - "$ref": "#/definitions/Device" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Devices", - "DeviceDefinitionId" - ], - "typeName": "AWS::Greengrass::DeviceDefinitionVersion" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DeviceDefinitionId", + "/properties/Devices" + ], + "definitions": { + "Device": { + "additionalProperties": false, + "properties": { + "CertificateArn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "SyncShadow": { + "type": "boolean" + }, + "ThingArn": { + "type": "string" + } + }, + "required": [ + "ThingArn", + "Id", + "CertificateArn" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Greengrass::DeviceDefinitionVersion", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DeviceDefinitionId": { + "type": "string" + }, + "Devices": { + "items": { + "$ref": "#/definitions/Device" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Devices", + "DeviceDefinitionId" + ], + "typeName": "AWS::Greengrass::DeviceDefinitionVersion" +} diff --git a/src/schema/aws-greengrass-functiondefinition.json b/src/schema/aws-greengrass-functiondefinition.json index 663e95ca..9e904239 100644 --- a/src/schema/aws-greengrass-functiondefinition.json +++ b/src/schema/aws-greengrass-functiondefinition.json @@ -1,180 +1,180 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InitialVersion" - ], - "definitions": { - "DefaultConfig": { - "additionalProperties": false, - "properties": { - "Execution": { - "$ref": "#/definitions/Execution" - } - }, - "required": [ - "Execution" - ], - "type": "object" - }, - "Environment": { - "additionalProperties": false, - "properties": { - "AccessSysfs": { - "type": "boolean" - }, - "Execution": { - "$ref": "#/definitions/Execution" - }, - "ResourceAccessPolicies": { - "items": { - "$ref": "#/definitions/ResourceAccessPolicy" - }, - "type": "array", - "uniqueItems": false - }, - "Variables": { - "type": "object" - } - }, - "type": "object" - }, - "Execution": { - "additionalProperties": false, - "properties": { - "IsolationMode": { - "type": "string" - }, - "RunAs": { - "$ref": "#/definitions/RunAs" - } - }, - "type": "object" - }, - "Function": { - "additionalProperties": false, - "properties": { - "FunctionArn": { - "type": "string" - }, - "FunctionConfiguration": { - "$ref": "#/definitions/FunctionConfiguration" - }, - "Id": { - "type": "string" - } - }, - "required": [ - "FunctionArn", - "FunctionConfiguration", - "Id" - ], - "type": "object" - }, - "FunctionConfiguration": { - "additionalProperties": false, - "properties": { - "EncodingType": { - "type": "string" - }, - "Environment": { - "$ref": "#/definitions/Environment" - }, - "ExecArgs": { - "type": "string" - }, - "Executable": { - "type": "string" - }, - "MemorySize": { - "type": "integer" - }, - "Pinned": { - "type": "boolean" - }, - "Timeout": { - "type": "integer" - } - }, - "type": "object" - }, - "FunctionDefinitionVersion": { - "additionalProperties": false, - "properties": { - "DefaultConfig": { - "$ref": "#/definitions/DefaultConfig" - }, - "Functions": { - "items": { - "$ref": "#/definitions/Function" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Functions" - ], - "type": "object" - }, - "ResourceAccessPolicy": { - "additionalProperties": false, - "properties": { - "Permission": { - "type": "string" - }, - "ResourceId": { - "type": "string" - } - }, - "required": [ - "ResourceId" - ], - "type": "object" - }, - "RunAs": { - "additionalProperties": false, - "properties": { - "Gid": { - "type": "integer" - }, - "Uid": { - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Greengrass::FunctionDefinition", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InitialVersion": { - "$ref": "#/definitions/FunctionDefinitionVersion" - }, - "LatestVersionArn": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/LatestVersionArn", - "/properties/Arn", - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::Greengrass::FunctionDefinition" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InitialVersion" + ], + "definitions": { + "DefaultConfig": { + "additionalProperties": false, + "properties": { + "Execution": { + "$ref": "#/definitions/Execution" + } + }, + "required": [ + "Execution" + ], + "type": "object" + }, + "Environment": { + "additionalProperties": false, + "properties": { + "AccessSysfs": { + "type": "boolean" + }, + "Execution": { + "$ref": "#/definitions/Execution" + }, + "ResourceAccessPolicies": { + "items": { + "$ref": "#/definitions/ResourceAccessPolicy" + }, + "type": "array", + "uniqueItems": false + }, + "Variables": { + "type": "object" + } + }, + "type": "object" + }, + "Execution": { + "additionalProperties": false, + "properties": { + "IsolationMode": { + "type": "string" + }, + "RunAs": { + "$ref": "#/definitions/RunAs" + } + }, + "type": "object" + }, + "Function": { + "additionalProperties": false, + "properties": { + "FunctionArn": { + "type": "string" + }, + "FunctionConfiguration": { + "$ref": "#/definitions/FunctionConfiguration" + }, + "Id": { + "type": "string" + } + }, + "required": [ + "FunctionArn", + "FunctionConfiguration", + "Id" + ], + "type": "object" + }, + "FunctionConfiguration": { + "additionalProperties": false, + "properties": { + "EncodingType": { + "type": "string" + }, + "Environment": { + "$ref": "#/definitions/Environment" + }, + "ExecArgs": { + "type": "string" + }, + "Executable": { + "type": "string" + }, + "MemorySize": { + "type": "integer" + }, + "Pinned": { + "type": "boolean" + }, + "Timeout": { + "type": "integer" + } + }, + "type": "object" + }, + "FunctionDefinitionVersion": { + "additionalProperties": false, + "properties": { + "DefaultConfig": { + "$ref": "#/definitions/DefaultConfig" + }, + "Functions": { + "items": { + "$ref": "#/definitions/Function" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Functions" + ], + "type": "object" + }, + "ResourceAccessPolicy": { + "additionalProperties": false, + "properties": { + "Permission": { + "type": "string" + }, + "ResourceId": { + "type": "string" + } + }, + "required": [ + "ResourceId" + ], + "type": "object" + }, + "RunAs": { + "additionalProperties": false, + "properties": { + "Gid": { + "type": "integer" + }, + "Uid": { + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Greengrass::FunctionDefinition", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "InitialVersion": { + "$ref": "#/definitions/FunctionDefinitionVersion" + }, + "LatestVersionArn": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/LatestVersionArn", + "/properties/Arn", + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::Greengrass::FunctionDefinition" +} diff --git a/src/schema/aws-greengrass-functiondefinitionversion.json b/src/schema/aws-greengrass-functiondefinitionversion.json index 8e22f179..fbfefe89 100644 --- a/src/schema/aws-greengrass-functiondefinitionversion.json +++ b/src/schema/aws-greengrass-functiondefinitionversion.json @@ -1,160 +1,160 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Functions", - "/properties/FunctionDefinitionId", - "/properties/DefaultConfig" - ], - "definitions": { - "DefaultConfig": { - "additionalProperties": false, - "properties": { - "Execution": { - "$ref": "#/definitions/Execution" - } - }, - "required": [ - "Execution" - ], - "type": "object" - }, - "Environment": { - "additionalProperties": false, - "properties": { - "AccessSysfs": { - "type": "boolean" - }, - "Execution": { - "$ref": "#/definitions/Execution" - }, - "ResourceAccessPolicies": { - "items": { - "$ref": "#/definitions/ResourceAccessPolicy" - }, - "type": "array", - "uniqueItems": false - }, - "Variables": { - "type": "object" - } - }, - "type": "object" - }, - "Execution": { - "additionalProperties": false, - "properties": { - "IsolationMode": { - "type": "string" - }, - "RunAs": { - "$ref": "#/definitions/RunAs" - } - }, - "type": "object" - }, - "Function": { - "additionalProperties": false, - "properties": { - "FunctionArn": { - "type": "string" - }, - "FunctionConfiguration": { - "$ref": "#/definitions/FunctionConfiguration" - }, - "Id": { - "type": "string" - } - }, - "required": [ - "FunctionArn", - "FunctionConfiguration", - "Id" - ], - "type": "object" - }, - "FunctionConfiguration": { - "additionalProperties": false, - "properties": { - "EncodingType": { - "type": "string" - }, - "Environment": { - "$ref": "#/definitions/Environment" - }, - "ExecArgs": { - "type": "string" - }, - "Executable": { - "type": "string" - }, - "MemorySize": { - "type": "integer" - }, - "Pinned": { - "type": "boolean" - }, - "Timeout": { - "type": "integer" - } - }, - "type": "object" - }, - "ResourceAccessPolicy": { - "additionalProperties": false, - "properties": { - "Permission": { - "type": "string" - }, - "ResourceId": { - "type": "string" - } - }, - "required": [ - "ResourceId" - ], - "type": "object" - }, - "RunAs": { - "additionalProperties": false, - "properties": { - "Gid": { - "type": "integer" - }, - "Uid": { - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Greengrass::FunctionDefinitionVersion", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DefaultConfig": { - "$ref": "#/definitions/DefaultConfig" - }, - "FunctionDefinitionId": { - "type": "string" - }, - "Functions": { - "items": { - "$ref": "#/definitions/Function" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "FunctionDefinitionId", - "Functions" - ], - "typeName": "AWS::Greengrass::FunctionDefinitionVersion" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Functions", + "/properties/FunctionDefinitionId", + "/properties/DefaultConfig" + ], + "definitions": { + "DefaultConfig": { + "additionalProperties": false, + "properties": { + "Execution": { + "$ref": "#/definitions/Execution" + } + }, + "required": [ + "Execution" + ], + "type": "object" + }, + "Environment": { + "additionalProperties": false, + "properties": { + "AccessSysfs": { + "type": "boolean" + }, + "Execution": { + "$ref": "#/definitions/Execution" + }, + "ResourceAccessPolicies": { + "items": { + "$ref": "#/definitions/ResourceAccessPolicy" + }, + "type": "array", + "uniqueItems": false + }, + "Variables": { + "type": "object" + } + }, + "type": "object" + }, + "Execution": { + "additionalProperties": false, + "properties": { + "IsolationMode": { + "type": "string" + }, + "RunAs": { + "$ref": "#/definitions/RunAs" + } + }, + "type": "object" + }, + "Function": { + "additionalProperties": false, + "properties": { + "FunctionArn": { + "type": "string" + }, + "FunctionConfiguration": { + "$ref": "#/definitions/FunctionConfiguration" + }, + "Id": { + "type": "string" + } + }, + "required": [ + "FunctionArn", + "FunctionConfiguration", + "Id" + ], + "type": "object" + }, + "FunctionConfiguration": { + "additionalProperties": false, + "properties": { + "EncodingType": { + "type": "string" + }, + "Environment": { + "$ref": "#/definitions/Environment" + }, + "ExecArgs": { + "type": "string" + }, + "Executable": { + "type": "string" + }, + "MemorySize": { + "type": "integer" + }, + "Pinned": { + "type": "boolean" + }, + "Timeout": { + "type": "integer" + } + }, + "type": "object" + }, + "ResourceAccessPolicy": { + "additionalProperties": false, + "properties": { + "Permission": { + "type": "string" + }, + "ResourceId": { + "type": "string" + } + }, + "required": [ + "ResourceId" + ], + "type": "object" + }, + "RunAs": { + "additionalProperties": false, + "properties": { + "Gid": { + "type": "integer" + }, + "Uid": { + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Greengrass::FunctionDefinitionVersion", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DefaultConfig": { + "$ref": "#/definitions/DefaultConfig" + }, + "FunctionDefinitionId": { + "type": "string" + }, + "Functions": { + "items": { + "$ref": "#/definitions/Function" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionDefinitionId", + "Functions" + ], + "typeName": "AWS::Greengrass::FunctionDefinitionVersion" +} diff --git a/src/schema/aws-greengrass-group.json b/src/schema/aws-greengrass-group.json index 6468d3d4..b0ce6acb 100644 --- a/src/schema/aws-greengrass-group.json +++ b/src/schema/aws-greengrass-group.json @@ -1,75 +1,75 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InitialVersion" - ], - "definitions": { - "GroupVersion": { - "additionalProperties": false, - "properties": { - "ConnectorDefinitionVersionArn": { - "type": "string" - }, - "CoreDefinitionVersionArn": { - "type": "string" - }, - "DeviceDefinitionVersionArn": { - "type": "string" - }, - "FunctionDefinitionVersionArn": { - "type": "string" - }, - "LoggerDefinitionVersionArn": { - "type": "string" - }, - "ResourceDefinitionVersionArn": { - "type": "string" - }, - "SubscriptionDefinitionVersionArn": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Greengrass::Group", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InitialVersion": { - "$ref": "#/definitions/GroupVersion" - }, - "LatestVersionArn": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "RoleArn": { - "type": "string" - }, - "RoleAttachedAt": { - "type": "string" - }, - "Tags": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/LatestVersionArn", - "/properties/RoleAttachedAt", - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "Name" - ], - "typeName": "AWS::Greengrass::Group" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InitialVersion" + ], + "definitions": { + "GroupVersion": { + "additionalProperties": false, + "properties": { + "ConnectorDefinitionVersionArn": { + "type": "string" + }, + "CoreDefinitionVersionArn": { + "type": "string" + }, + "DeviceDefinitionVersionArn": { + "type": "string" + }, + "FunctionDefinitionVersionArn": { + "type": "string" + }, + "LoggerDefinitionVersionArn": { + "type": "string" + }, + "ResourceDefinitionVersionArn": { + "type": "string" + }, + "SubscriptionDefinitionVersionArn": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Greengrass::Group", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "InitialVersion": { + "$ref": "#/definitions/GroupVersion" + }, + "LatestVersionArn": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "RoleArn": { + "type": "string" + }, + "RoleAttachedAt": { + "type": "string" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/LatestVersionArn", + "/properties/RoleAttachedAt", + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Name" + ], + "typeName": "AWS::Greengrass::Group" +} diff --git a/src/schema/aws-greengrass-groupversion.json b/src/schema/aws-greengrass-groupversion.json index 02cdb194..7d6f55ed 100644 --- a/src/schema/aws-greengrass-groupversion.json +++ b/src/schema/aws-greengrass-groupversion.json @@ -1,53 +1,53 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CoreDefinitionVersionArn", - "/properties/DeviceDefinitionVersionArn", - "/properties/ConnectorDefinitionVersionArn", - "/properties/SubscriptionDefinitionVersionArn", - "/properties/LoggerDefinitionVersionArn", - "/properties/GroupId", - "/properties/ResourceDefinitionVersionArn", - "/properties/FunctionDefinitionVersionArn" - ], - "description": "Resource Type definition for AWS::Greengrass::GroupVersion", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ConnectorDefinitionVersionArn": { - "type": "string" - }, - "CoreDefinitionVersionArn": { - "type": "string" - }, - "DeviceDefinitionVersionArn": { - "type": "string" - }, - "FunctionDefinitionVersionArn": { - "type": "string" - }, - "GroupId": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "LoggerDefinitionVersionArn": { - "type": "string" - }, - "ResourceDefinitionVersionArn": { - "type": "string" - }, - "SubscriptionDefinitionVersionArn": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "GroupId" - ], - "typeName": "AWS::Greengrass::GroupVersion" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CoreDefinitionVersionArn", + "/properties/DeviceDefinitionVersionArn", + "/properties/ConnectorDefinitionVersionArn", + "/properties/SubscriptionDefinitionVersionArn", + "/properties/LoggerDefinitionVersionArn", + "/properties/GroupId", + "/properties/ResourceDefinitionVersionArn", + "/properties/FunctionDefinitionVersionArn" + ], + "description": "Resource Type definition for AWS::Greengrass::GroupVersion", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ConnectorDefinitionVersionArn": { + "type": "string" + }, + "CoreDefinitionVersionArn": { + "type": "string" + }, + "DeviceDefinitionVersionArn": { + "type": "string" + }, + "FunctionDefinitionVersionArn": { + "type": "string" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "LoggerDefinitionVersionArn": { + "type": "string" + }, + "ResourceDefinitionVersionArn": { + "type": "string" + }, + "SubscriptionDefinitionVersionArn": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "GroupId" + ], + "typeName": "AWS::Greengrass::GroupVersion" +} diff --git a/src/schema/aws-greengrass-loggerdefinition.json b/src/schema/aws-greengrass-loggerdefinition.json index 4d64ada9..fd4e9288 100644 --- a/src/schema/aws-greengrass-loggerdefinition.json +++ b/src/schema/aws-greengrass-loggerdefinition.json @@ -1,84 +1,84 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InitialVersion" - ], - "definitions": { - "Logger": { - "additionalProperties": false, - "properties": { - "Component": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Level": { - "type": "string" - }, - "Space": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type", - "Level", - "Id", - "Component" - ], - "type": "object" - }, - "LoggerDefinitionVersion": { - "additionalProperties": false, - "properties": { - "Loggers": { - "items": { - "$ref": "#/definitions/Logger" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Loggers" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Greengrass::LoggerDefinition", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InitialVersion": { - "$ref": "#/definitions/LoggerDefinitionVersion" - }, - "LatestVersionArn": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/LatestVersionArn", - "/properties/Arn", - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::Greengrass::LoggerDefinition" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InitialVersion" + ], + "definitions": { + "Logger": { + "additionalProperties": false, + "properties": { + "Component": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Level": { + "type": "string" + }, + "Space": { + "type": "integer" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type", + "Level", + "Id", + "Component" + ], + "type": "object" + }, + "LoggerDefinitionVersion": { + "additionalProperties": false, + "properties": { + "Loggers": { + "items": { + "$ref": "#/definitions/Logger" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Loggers" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Greengrass::LoggerDefinition", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "InitialVersion": { + "$ref": "#/definitions/LoggerDefinitionVersion" + }, + "LatestVersionArn": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/LatestVersionArn", + "/properties/Arn", + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::Greengrass::LoggerDefinition" +} diff --git a/src/schema/aws-greengrass-loggerdefinitionversion.json b/src/schema/aws-greengrass-loggerdefinitionversion.json index f5fdf72a..f08eb6f8 100644 --- a/src/schema/aws-greengrass-loggerdefinitionversion.json +++ b/src/schema/aws-greengrass-loggerdefinitionversion.json @@ -1,63 +1,63 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LoggerDefinitionId", - "/properties/Loggers" - ], - "definitions": { - "Logger": { - "additionalProperties": false, - "properties": { - "Component": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Level": { - "type": "string" - }, - "Space": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type", - "Level", - "Id", - "Component" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Greengrass::LoggerDefinitionVersion", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "LoggerDefinitionId": { - "type": "string" - }, - "Loggers": { - "items": { - "$ref": "#/definitions/Logger" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Loggers", - "LoggerDefinitionId" - ], - "typeName": "AWS::Greengrass::LoggerDefinitionVersion" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LoggerDefinitionId", + "/properties/Loggers" + ], + "definitions": { + "Logger": { + "additionalProperties": false, + "properties": { + "Component": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Level": { + "type": "string" + }, + "Space": { + "type": "integer" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type", + "Level", + "Id", + "Component" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Greengrass::LoggerDefinitionVersion", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "LoggerDefinitionId": { + "type": "string" + }, + "Loggers": { + "items": { + "$ref": "#/definitions/Logger" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Loggers", + "LoggerDefinitionId" + ], + "typeName": "AWS::Greengrass::LoggerDefinitionVersion" +} diff --git a/src/schema/aws-greengrass-resourcedefinition.json b/src/schema/aws-greengrass-resourcedefinition.json index 8542cbd4..bb5ecbf8 100644 --- a/src/schema/aws-greengrass-resourcedefinition.json +++ b/src/schema/aws-greengrass-resourcedefinition.json @@ -1,220 +1,220 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InitialVersion" - ], - "definitions": { - "GroupOwnerSetting": { - "additionalProperties": false, - "properties": { - "AutoAddGroupOwner": { - "type": "boolean" - }, - "GroupOwner": { - "type": "string" - } - }, - "required": [ - "AutoAddGroupOwner" - ], - "type": "object" - }, - "LocalDeviceResourceData": { - "additionalProperties": false, - "properties": { - "GroupOwnerSetting": { - "$ref": "#/definitions/GroupOwnerSetting" - }, - "SourcePath": { - "type": "string" - } - }, - "required": [ - "SourcePath" - ], - "type": "object" - }, - "LocalVolumeResourceData": { - "additionalProperties": false, - "properties": { - "DestinationPath": { - "type": "string" - }, - "GroupOwnerSetting": { - "$ref": "#/definitions/GroupOwnerSetting" - }, - "SourcePath": { - "type": "string" - } - }, - "required": [ - "SourcePath", - "DestinationPath" - ], - "type": "object" - }, - "ResourceDataContainer": { - "additionalProperties": false, - "properties": { - "LocalDeviceResourceData": { - "$ref": "#/definitions/LocalDeviceResourceData" - }, - "LocalVolumeResourceData": { - "$ref": "#/definitions/LocalVolumeResourceData" - }, - "S3MachineLearningModelResourceData": { - "$ref": "#/definitions/S3MachineLearningModelResourceData" - }, - "SageMakerMachineLearningModelResourceData": { - "$ref": "#/definitions/SageMakerMachineLearningModelResourceData" - }, - "SecretsManagerSecretResourceData": { - "$ref": "#/definitions/SecretsManagerSecretResourceData" - } - }, - "type": "object" - }, - "ResourceDefinitionVersion": { - "additionalProperties": false, - "properties": { - "Resources": { - "items": { - "$ref": "#/definitions/ResourceInstance" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Resources" - ], - "type": "object" - }, - "ResourceDownloadOwnerSetting": { - "additionalProperties": false, - "properties": { - "GroupOwner": { - "type": "string" - }, - "GroupPermission": { - "type": "string" - } - }, - "required": [ - "GroupOwner", - "GroupPermission" - ], - "type": "object" - }, - "ResourceInstance": { - "additionalProperties": false, - "properties": { - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "ResourceDataContainer": { - "$ref": "#/definitions/ResourceDataContainer" - } - }, - "required": [ - "ResourceDataContainer", - "Id", - "Name" - ], - "type": "object" - }, - "S3MachineLearningModelResourceData": { - "additionalProperties": false, - "properties": { - "DestinationPath": { - "type": "string" - }, - "OwnerSetting": { - "$ref": "#/definitions/ResourceDownloadOwnerSetting" - }, - "S3Uri": { - "type": "string" - } - }, - "required": [ - "DestinationPath", - "S3Uri" - ], - "type": "object" - }, - "SageMakerMachineLearningModelResourceData": { - "additionalProperties": false, - "properties": { - "DestinationPath": { - "type": "string" - }, - "OwnerSetting": { - "$ref": "#/definitions/ResourceDownloadOwnerSetting" - }, - "SageMakerJobArn": { - "type": "string" - } - }, - "required": [ - "DestinationPath", - "SageMakerJobArn" - ], - "type": "object" - }, - "SecretsManagerSecretResourceData": { - "additionalProperties": false, - "properties": { - "ARN": { - "type": "string" - }, - "AdditionalStagingLabelsToDownload": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "ARN" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Greengrass::ResourceDefinition", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InitialVersion": { - "$ref": "#/definitions/ResourceDefinitionVersion" - }, - "LatestVersionArn": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/LatestVersionArn", - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "Name" - ], - "typeName": "AWS::Greengrass::ResourceDefinition" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InitialVersion" + ], + "definitions": { + "GroupOwnerSetting": { + "additionalProperties": false, + "properties": { + "AutoAddGroupOwner": { + "type": "boolean" + }, + "GroupOwner": { + "type": "string" + } + }, + "required": [ + "AutoAddGroupOwner" + ], + "type": "object" + }, + "LocalDeviceResourceData": { + "additionalProperties": false, + "properties": { + "GroupOwnerSetting": { + "$ref": "#/definitions/GroupOwnerSetting" + }, + "SourcePath": { + "type": "string" + } + }, + "required": [ + "SourcePath" + ], + "type": "object" + }, + "LocalVolumeResourceData": { + "additionalProperties": false, + "properties": { + "DestinationPath": { + "type": "string" + }, + "GroupOwnerSetting": { + "$ref": "#/definitions/GroupOwnerSetting" + }, + "SourcePath": { + "type": "string" + } + }, + "required": [ + "SourcePath", + "DestinationPath" + ], + "type": "object" + }, + "ResourceDataContainer": { + "additionalProperties": false, + "properties": { + "LocalDeviceResourceData": { + "$ref": "#/definitions/LocalDeviceResourceData" + }, + "LocalVolumeResourceData": { + "$ref": "#/definitions/LocalVolumeResourceData" + }, + "S3MachineLearningModelResourceData": { + "$ref": "#/definitions/S3MachineLearningModelResourceData" + }, + "SageMakerMachineLearningModelResourceData": { + "$ref": "#/definitions/SageMakerMachineLearningModelResourceData" + }, + "SecretsManagerSecretResourceData": { + "$ref": "#/definitions/SecretsManagerSecretResourceData" + } + }, + "type": "object" + }, + "ResourceDefinitionVersion": { + "additionalProperties": false, + "properties": { + "Resources": { + "items": { + "$ref": "#/definitions/ResourceInstance" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Resources" + ], + "type": "object" + }, + "ResourceDownloadOwnerSetting": { + "additionalProperties": false, + "properties": { + "GroupOwner": { + "type": "string" + }, + "GroupPermission": { + "type": "string" + } + }, + "required": [ + "GroupOwner", + "GroupPermission" + ], + "type": "object" + }, + "ResourceInstance": { + "additionalProperties": false, + "properties": { + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "ResourceDataContainer": { + "$ref": "#/definitions/ResourceDataContainer" + } + }, + "required": [ + "ResourceDataContainer", + "Id", + "Name" + ], + "type": "object" + }, + "S3MachineLearningModelResourceData": { + "additionalProperties": false, + "properties": { + "DestinationPath": { + "type": "string" + }, + "OwnerSetting": { + "$ref": "#/definitions/ResourceDownloadOwnerSetting" + }, + "S3Uri": { + "type": "string" + } + }, + "required": [ + "DestinationPath", + "S3Uri" + ], + "type": "object" + }, + "SageMakerMachineLearningModelResourceData": { + "additionalProperties": false, + "properties": { + "DestinationPath": { + "type": "string" + }, + "OwnerSetting": { + "$ref": "#/definitions/ResourceDownloadOwnerSetting" + }, + "SageMakerJobArn": { + "type": "string" + } + }, + "required": [ + "DestinationPath", + "SageMakerJobArn" + ], + "type": "object" + }, + "SecretsManagerSecretResourceData": { + "additionalProperties": false, + "properties": { + "ARN": { + "type": "string" + }, + "AdditionalStagingLabelsToDownload": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ARN" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Greengrass::ResourceDefinition", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "InitialVersion": { + "$ref": "#/definitions/ResourceDefinitionVersion" + }, + "LatestVersionArn": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/LatestVersionArn", + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Name" + ], + "typeName": "AWS::Greengrass::ResourceDefinition" +} diff --git a/src/schema/aws-greengrass-resourcedefinitionversion.json b/src/schema/aws-greengrass-resourcedefinitionversion.json index 10b2c6e1..d4dd3dd6 100644 --- a/src/schema/aws-greengrass-resourcedefinitionversion.json +++ b/src/schema/aws-greengrass-resourcedefinitionversion.json @@ -1,199 +1,199 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Resources", - "/properties/ResourceDefinitionId" - ], - "definitions": { - "GroupOwnerSetting": { - "additionalProperties": false, - "properties": { - "AutoAddGroupOwner": { - "type": "boolean" - }, - "GroupOwner": { - "type": "string" - } - }, - "required": [ - "AutoAddGroupOwner" - ], - "type": "object" - }, - "LocalDeviceResourceData": { - "additionalProperties": false, - "properties": { - "GroupOwnerSetting": { - "$ref": "#/definitions/GroupOwnerSetting" - }, - "SourcePath": { - "type": "string" - } - }, - "required": [ - "SourcePath" - ], - "type": "object" - }, - "LocalVolumeResourceData": { - "additionalProperties": false, - "properties": { - "DestinationPath": { - "type": "string" - }, - "GroupOwnerSetting": { - "$ref": "#/definitions/GroupOwnerSetting" - }, - "SourcePath": { - "type": "string" - } - }, - "required": [ - "SourcePath", - "DestinationPath" - ], - "type": "object" - }, - "ResourceDataContainer": { - "additionalProperties": false, - "properties": { - "LocalDeviceResourceData": { - "$ref": "#/definitions/LocalDeviceResourceData" - }, - "LocalVolumeResourceData": { - "$ref": "#/definitions/LocalVolumeResourceData" - }, - "S3MachineLearningModelResourceData": { - "$ref": "#/definitions/S3MachineLearningModelResourceData" - }, - "SageMakerMachineLearningModelResourceData": { - "$ref": "#/definitions/SageMakerMachineLearningModelResourceData" - }, - "SecretsManagerSecretResourceData": { - "$ref": "#/definitions/SecretsManagerSecretResourceData" - } - }, - "type": "object" - }, - "ResourceDownloadOwnerSetting": { - "additionalProperties": false, - "properties": { - "GroupOwner": { - "type": "string" - }, - "GroupPermission": { - "type": "string" - } - }, - "required": [ - "GroupOwner", - "GroupPermission" - ], - "type": "object" - }, - "ResourceInstance": { - "additionalProperties": false, - "properties": { - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "ResourceDataContainer": { - "$ref": "#/definitions/ResourceDataContainer" - } - }, - "required": [ - "ResourceDataContainer", - "Id", - "Name" - ], - "type": "object" - }, - "S3MachineLearningModelResourceData": { - "additionalProperties": false, - "properties": { - "DestinationPath": { - "type": "string" - }, - "OwnerSetting": { - "$ref": "#/definitions/ResourceDownloadOwnerSetting" - }, - "S3Uri": { - "type": "string" - } - }, - "required": [ - "DestinationPath", - "S3Uri" - ], - "type": "object" - }, - "SageMakerMachineLearningModelResourceData": { - "additionalProperties": false, - "properties": { - "DestinationPath": { - "type": "string" - }, - "OwnerSetting": { - "$ref": "#/definitions/ResourceDownloadOwnerSetting" - }, - "SageMakerJobArn": { - "type": "string" - } - }, - "required": [ - "DestinationPath", - "SageMakerJobArn" - ], - "type": "object" - }, - "SecretsManagerSecretResourceData": { - "additionalProperties": false, - "properties": { - "ARN": { - "type": "string" - }, - "AdditionalStagingLabelsToDownload": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "ARN" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Greengrass::ResourceDefinitionVersion", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "ResourceDefinitionId": { - "type": "string" - }, - "Resources": { - "items": { - "$ref": "#/definitions/ResourceInstance" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Resources", - "ResourceDefinitionId" - ], - "typeName": "AWS::Greengrass::ResourceDefinitionVersion" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Resources", + "/properties/ResourceDefinitionId" + ], + "definitions": { + "GroupOwnerSetting": { + "additionalProperties": false, + "properties": { + "AutoAddGroupOwner": { + "type": "boolean" + }, + "GroupOwner": { + "type": "string" + } + }, + "required": [ + "AutoAddGroupOwner" + ], + "type": "object" + }, + "LocalDeviceResourceData": { + "additionalProperties": false, + "properties": { + "GroupOwnerSetting": { + "$ref": "#/definitions/GroupOwnerSetting" + }, + "SourcePath": { + "type": "string" + } + }, + "required": [ + "SourcePath" + ], + "type": "object" + }, + "LocalVolumeResourceData": { + "additionalProperties": false, + "properties": { + "DestinationPath": { + "type": "string" + }, + "GroupOwnerSetting": { + "$ref": "#/definitions/GroupOwnerSetting" + }, + "SourcePath": { + "type": "string" + } + }, + "required": [ + "SourcePath", + "DestinationPath" + ], + "type": "object" + }, + "ResourceDataContainer": { + "additionalProperties": false, + "properties": { + "LocalDeviceResourceData": { + "$ref": "#/definitions/LocalDeviceResourceData" + }, + "LocalVolumeResourceData": { + "$ref": "#/definitions/LocalVolumeResourceData" + }, + "S3MachineLearningModelResourceData": { + "$ref": "#/definitions/S3MachineLearningModelResourceData" + }, + "SageMakerMachineLearningModelResourceData": { + "$ref": "#/definitions/SageMakerMachineLearningModelResourceData" + }, + "SecretsManagerSecretResourceData": { + "$ref": "#/definitions/SecretsManagerSecretResourceData" + } + }, + "type": "object" + }, + "ResourceDownloadOwnerSetting": { + "additionalProperties": false, + "properties": { + "GroupOwner": { + "type": "string" + }, + "GroupPermission": { + "type": "string" + } + }, + "required": [ + "GroupOwner", + "GroupPermission" + ], + "type": "object" + }, + "ResourceInstance": { + "additionalProperties": false, + "properties": { + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "ResourceDataContainer": { + "$ref": "#/definitions/ResourceDataContainer" + } + }, + "required": [ + "ResourceDataContainer", + "Id", + "Name" + ], + "type": "object" + }, + "S3MachineLearningModelResourceData": { + "additionalProperties": false, + "properties": { + "DestinationPath": { + "type": "string" + }, + "OwnerSetting": { + "$ref": "#/definitions/ResourceDownloadOwnerSetting" + }, + "S3Uri": { + "type": "string" + } + }, + "required": [ + "DestinationPath", + "S3Uri" + ], + "type": "object" + }, + "SageMakerMachineLearningModelResourceData": { + "additionalProperties": false, + "properties": { + "DestinationPath": { + "type": "string" + }, + "OwnerSetting": { + "$ref": "#/definitions/ResourceDownloadOwnerSetting" + }, + "SageMakerJobArn": { + "type": "string" + } + }, + "required": [ + "DestinationPath", + "SageMakerJobArn" + ], + "type": "object" + }, + "SecretsManagerSecretResourceData": { + "additionalProperties": false, + "properties": { + "ARN": { + "type": "string" + }, + "AdditionalStagingLabelsToDownload": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ARN" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Greengrass::ResourceDefinitionVersion", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "ResourceDefinitionId": { + "type": "string" + }, + "Resources": { + "items": { + "$ref": "#/definitions/ResourceInstance" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Resources", + "ResourceDefinitionId" + ], + "typeName": "AWS::Greengrass::ResourceDefinitionVersion" +} diff --git a/src/schema/aws-greengrass-subscriptiondefinition.json b/src/schema/aws-greengrass-subscriptiondefinition.json index 51eadc4b..63ac8bc3 100644 --- a/src/schema/aws-greengrass-subscriptiondefinition.json +++ b/src/schema/aws-greengrass-subscriptiondefinition.json @@ -1,81 +1,81 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InitialVersion" - ], - "definitions": { - "Subscription": { - "additionalProperties": false, - "properties": { - "Id": { - "type": "string" - }, - "Source": { - "type": "string" - }, - "Subject": { - "type": "string" - }, - "Target": { - "type": "string" - } - }, - "required": [ - "Target", - "Id", - "Source", - "Subject" - ], - "type": "object" - }, - "SubscriptionDefinitionVersion": { - "additionalProperties": false, - "properties": { - "Subscriptions": { - "items": { - "$ref": "#/definitions/Subscription" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Subscriptions" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Greengrass::SubscriptionDefinition", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InitialVersion": { - "$ref": "#/definitions/SubscriptionDefinitionVersion" - }, - "LatestVersionArn": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/LatestVersionArn", - "/properties/Arn", - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::Greengrass::SubscriptionDefinition" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InitialVersion" + ], + "definitions": { + "Subscription": { + "additionalProperties": false, + "properties": { + "Id": { + "type": "string" + }, + "Source": { + "type": "string" + }, + "Subject": { + "type": "string" + }, + "Target": { + "type": "string" + } + }, + "required": [ + "Target", + "Id", + "Source", + "Subject" + ], + "type": "object" + }, + "SubscriptionDefinitionVersion": { + "additionalProperties": false, + "properties": { + "Subscriptions": { + "items": { + "$ref": "#/definitions/Subscription" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Subscriptions" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Greengrass::SubscriptionDefinition", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "InitialVersion": { + "$ref": "#/definitions/SubscriptionDefinitionVersion" + }, + "LatestVersionArn": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/LatestVersionArn", + "/properties/Arn", + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::Greengrass::SubscriptionDefinition" +} diff --git a/src/schema/aws-greengrass-subscriptiondefinitionversion.json b/src/schema/aws-greengrass-subscriptiondefinitionversion.json index e66ec3d9..f85a184d 100644 --- a/src/schema/aws-greengrass-subscriptiondefinitionversion.json +++ b/src/schema/aws-greengrass-subscriptiondefinitionversion.json @@ -1,60 +1,60 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Subscriptions", - "/properties/SubscriptionDefinitionId" - ], - "definitions": { - "Subscription": { - "additionalProperties": false, - "properties": { - "Id": { - "type": "string" - }, - "Source": { - "type": "string" - }, - "Subject": { - "type": "string" - }, - "Target": { - "type": "string" - } - }, - "required": [ - "Target", - "Id", - "Source", - "Subject" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Greengrass::SubscriptionDefinitionVersion", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "SubscriptionDefinitionId": { - "type": "string" - }, - "Subscriptions": { - "items": { - "$ref": "#/definitions/Subscription" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "SubscriptionDefinitionId", - "Subscriptions" - ], - "typeName": "AWS::Greengrass::SubscriptionDefinitionVersion" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Subscriptions", + "/properties/SubscriptionDefinitionId" + ], + "definitions": { + "Subscription": { + "additionalProperties": false, + "properties": { + "Id": { + "type": "string" + }, + "Source": { + "type": "string" + }, + "Subject": { + "type": "string" + }, + "Target": { + "type": "string" + } + }, + "required": [ + "Target", + "Id", + "Source", + "Subject" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Greengrass::SubscriptionDefinitionVersion", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "SubscriptionDefinitionId": { + "type": "string" + }, + "Subscriptions": { + "items": { + "$ref": "#/definitions/Subscription" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "SubscriptionDefinitionId", + "Subscriptions" + ], + "typeName": "AWS::Greengrass::SubscriptionDefinitionVersion" +} diff --git a/src/schema/aws-greengrassv2-componentversion.json b/src/schema/aws-greengrassv2-componentversion.json index fa3b8141..80d3a08a 100644 --- a/src/schema/aws-greengrassv2-componentversion.json +++ b/src/schema/aws-greengrassv2-componentversion.json @@ -1,341 +1,341 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ComponentName", - "/properties/ComponentVersion" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LambdaFunction", - "/properties/InlineRecipe" - ], - "definitions": { - "ComponentDependencyRequirement": { - "additionalProperties": false, - "properties": { - "DependencyType": { - "enum": [ - "SOFT", - "HARD" - ], - "type": "string" - }, - "VersionRequirement": { - "type": "string" - } - }, - "type": "object" - }, - "ComponentPlatform": { - "additionalProperties": false, - "properties": { - "Attributes": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - }, - "Name": { - "type": "string" - } - }, - "type": "object" - }, - "FilesystemPath": { - "type": "string" - }, - "LambdaAddGroupOwnerBoolean": { - "type": "boolean" - }, - "LambdaContainerParams": { - "additionalProperties": false, - "properties": { - "Devices": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LambdaDeviceMount" - }, - "type": "array" - }, - "MemorySizeInKB": { - "type": "integer" - }, - "MountROSysfs": { - "type": "boolean" - }, - "Volumes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LambdaVolumeMount" - }, - "type": "array" - } - }, - "type": "object" - }, - "LambdaDeviceMount": { - "additionalProperties": false, - "properties": { - "AddGroupOwner": { - "$ref": "#/definitions/LambdaAddGroupOwnerBoolean" - }, - "Path": { - "$ref": "#/definitions/FilesystemPath" - }, - "Permission": { - "$ref": "#/definitions/LambdaFilesystemPermission" - } - }, - "type": "object" - }, - "LambdaEventSource": { - "additionalProperties": false, - "properties": { - "Topic": { - "type": "string" - }, - "Type": { - "enum": [ - "PUB_SUB", - "IOT_CORE" - ], - "type": "string" - } - }, - "type": "object" - }, - "LambdaExecutionParameters": { - "additionalProperties": false, - "properties": { - "EnvironmentVariables": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - }, - "EventSources": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LambdaEventSource" - }, - "type": "array" - }, - "ExecArgs": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "InputPayloadEncodingType": { - "enum": [ - "json", - "binary" - ], - "type": "string" - }, - "LinuxProcessParams": { - "$ref": "#/definitions/LambdaLinuxProcessParams" - }, - "MaxIdleTimeInSeconds": { - "type": "integer" - }, - "MaxInstancesCount": { - "type": "integer" - }, - "MaxQueueSize": { - "type": "integer" - }, - "Pinned": { - "type": "boolean" - }, - "StatusTimeoutInSeconds": { - "type": "integer" - }, - "TimeoutInSeconds": { - "type": "integer" - } - }, - "type": "object" - }, - "LambdaFilesystemPermission": { - "enum": [ - "ro", - "rw" - ], - "type": "string" - }, - "LambdaFunctionRecipeSource": { - "additionalProperties": false, - "properties": { - "ComponentDependencies": { - "additionalProperties": false, - "patternProperties": { - ".*": { - "$ref": "#/definitions/ComponentDependencyRequirement" - } - }, - "type": "object" - }, - "ComponentLambdaParameters": { - "$ref": "#/definitions/LambdaExecutionParameters" - }, - "ComponentName": { - "type": "string" - }, - "ComponentPlatforms": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ComponentPlatform" - }, - "type": "array" - }, - "ComponentVersion": { - "type": "string" - }, - "LambdaArn": { - "pattern": "^arn:[^:]*:lambda:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", - "type": "string" - } - }, - "type": "object" - }, - "LambdaLinuxProcessParams": { - "additionalProperties": false, - "properties": { - "ContainerParams": { - "$ref": "#/definitions/LambdaContainerParams" - }, - "IsolationMode": { - "enum": [ - "GreengrassContainer", - "NoContainer" - ], - "type": "string" - } - }, - "type": "object" - }, - "LambdaVolumeMount": { - "additionalProperties": false, - "properties": { - "AddGroupOwner": { - "$ref": "#/definitions/LambdaAddGroupOwnerBoolean" - }, - "DestinationPath": { - "$ref": "#/definitions/FilesystemPath" - }, - "Permission": { - "$ref": "#/definitions/LambdaFilesystemPermission" - }, - "SourcePath": { - "$ref": "#/definitions/FilesystemPath" - } - }, - "type": "object" - } - }, - "description": "Resource for Greengrass component version.", - "handlers": { - "create": { - "permissions": [ - "greengrass:CreateComponentVersion", - "greengrass:DescribeComponent", - "greengrass:ListTagsForResource", - "greengrass:TagResource", - "lambda:GetFunction", - "s3:GetObject" - ] - }, - "delete": { - "permissions": [ - "greengrass:DeleteComponent" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Arn": { - "type": "string" - } - }, - "required": [ - "Arn" - ] - }, - "permissions": [ - "greengrass:ListComponentVersions" - ] - }, - "read": { - "permissions": [ - "greengrass:DescribeComponent", - "greengrass:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "greengrass:DescribeComponent", - "greengrass:ListTagsForResource", - "greengrass:TagResource", - "greengrass:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "type": "string" - }, - "ComponentName": { - "type": "string" - }, - "ComponentVersion": { - "type": "string" - }, - "InlineRecipe": { - "type": "string" - }, - "LambdaFunction": { - "$ref": "#/definitions/LambdaFunctionRecipeSource" - }, - "Tags": { - "additionalProperties": false, - "maxProperties": 50, - "patternProperties": { - "^(?!aws:)[a-zA-Z+-=._:/]{1,128}$": { - "maxLength": 256, - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/ComponentName", - "/properties/ComponentVersion" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-greengrassv2", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::GreengrassV2::ComponentVersion", - "writeOnlyProperties": [ - "/properties/LambdaFunction", - "/properties/InlineRecipe" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/ComponentName", + "/properties/ComponentVersion" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LambdaFunction", + "/properties/InlineRecipe" + ], + "definitions": { + "ComponentDependencyRequirement": { + "additionalProperties": false, + "properties": { + "DependencyType": { + "enum": [ + "SOFT", + "HARD" + ], + "type": "string" + }, + "VersionRequirement": { + "type": "string" + } + }, + "type": "object" + }, + "ComponentPlatform": { + "additionalProperties": false, + "properties": { + "Attributes": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "Name": { + "type": "string" + } + }, + "type": "object" + }, + "FilesystemPath": { + "type": "string" + }, + "LambdaAddGroupOwnerBoolean": { + "type": "boolean" + }, + "LambdaContainerParams": { + "additionalProperties": false, + "properties": { + "Devices": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LambdaDeviceMount" + }, + "type": "array" + }, + "MemorySizeInKB": { + "type": "integer" + }, + "MountROSysfs": { + "type": "boolean" + }, + "Volumes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LambdaVolumeMount" + }, + "type": "array" + } + }, + "type": "object" + }, + "LambdaDeviceMount": { + "additionalProperties": false, + "properties": { + "AddGroupOwner": { + "$ref": "#/definitions/LambdaAddGroupOwnerBoolean" + }, + "Path": { + "$ref": "#/definitions/FilesystemPath" + }, + "Permission": { + "$ref": "#/definitions/LambdaFilesystemPermission" + } + }, + "type": "object" + }, + "LambdaEventSource": { + "additionalProperties": false, + "properties": { + "Topic": { + "type": "string" + }, + "Type": { + "enum": [ + "PUB_SUB", + "IOT_CORE" + ], + "type": "string" + } + }, + "type": "object" + }, + "LambdaExecutionParameters": { + "additionalProperties": false, + "properties": { + "EnvironmentVariables": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "EventSources": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LambdaEventSource" + }, + "type": "array" + }, + "ExecArgs": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "InputPayloadEncodingType": { + "enum": [ + "json", + "binary" + ], + "type": "string" + }, + "LinuxProcessParams": { + "$ref": "#/definitions/LambdaLinuxProcessParams" + }, + "MaxIdleTimeInSeconds": { + "type": "integer" + }, + "MaxInstancesCount": { + "type": "integer" + }, + "MaxQueueSize": { + "type": "integer" + }, + "Pinned": { + "type": "boolean" + }, + "StatusTimeoutInSeconds": { + "type": "integer" + }, + "TimeoutInSeconds": { + "type": "integer" + } + }, + "type": "object" + }, + "LambdaFilesystemPermission": { + "enum": [ + "ro", + "rw" + ], + "type": "string" + }, + "LambdaFunctionRecipeSource": { + "additionalProperties": false, + "properties": { + "ComponentDependencies": { + "additionalProperties": false, + "patternProperties": { + ".*": { + "$ref": "#/definitions/ComponentDependencyRequirement" + } + }, + "type": "object" + }, + "ComponentLambdaParameters": { + "$ref": "#/definitions/LambdaExecutionParameters" + }, + "ComponentName": { + "type": "string" + }, + "ComponentPlatforms": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ComponentPlatform" + }, + "type": "array" + }, + "ComponentVersion": { + "type": "string" + }, + "LambdaArn": { + "pattern": "^arn:[^:]*:lambda:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + } + }, + "type": "object" + }, + "LambdaLinuxProcessParams": { + "additionalProperties": false, + "properties": { + "ContainerParams": { + "$ref": "#/definitions/LambdaContainerParams" + }, + "IsolationMode": { + "enum": [ + "GreengrassContainer", + "NoContainer" + ], + "type": "string" + } + }, + "type": "object" + }, + "LambdaVolumeMount": { + "additionalProperties": false, + "properties": { + "AddGroupOwner": { + "$ref": "#/definitions/LambdaAddGroupOwnerBoolean" + }, + "DestinationPath": { + "$ref": "#/definitions/FilesystemPath" + }, + "Permission": { + "$ref": "#/definitions/LambdaFilesystemPermission" + }, + "SourcePath": { + "$ref": "#/definitions/FilesystemPath" + } + }, + "type": "object" + } + }, + "description": "Resource for Greengrass component version.", + "handlers": { + "create": { + "permissions": [ + "greengrass:CreateComponentVersion", + "greengrass:DescribeComponent", + "greengrass:ListTagsForResource", + "greengrass:TagResource", + "lambda:GetFunction", + "s3:GetObject" + ] + }, + "delete": { + "permissions": [ + "greengrass:DeleteComponent" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Arn": { + "type": "string" + } + }, + "required": [ + "Arn" + ] + }, + "permissions": [ + "greengrass:ListComponentVersions" + ] + }, + "read": { + "permissions": [ + "greengrass:DescribeComponent", + "greengrass:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "greengrass:DescribeComponent", + "greengrass:ListTagsForResource", + "greengrass:TagResource", + "greengrass:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "type": "string" + }, + "ComponentName": { + "type": "string" + }, + "ComponentVersion": { + "type": "string" + }, + "InlineRecipe": { + "type": "string" + }, + "LambdaFunction": { + "$ref": "#/definitions/LambdaFunctionRecipeSource" + }, + "Tags": { + "additionalProperties": false, + "maxProperties": 50, + "patternProperties": { + "^(?!aws:)[a-zA-Z+-=._:/]{1,128}$": { + "maxLength": 256, + "type": "string" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ComponentName", + "/properties/ComponentVersion" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-greengrassv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GreengrassV2::ComponentVersion", + "writeOnlyProperties": [ + "/properties/LambdaFunction", + "/properties/InlineRecipe" + ] +} diff --git a/src/schema/aws-greengrassv2-deployment.json b/src/schema/aws-greengrassv2-deployment.json index 094ea77b..ca5f3a97 100644 --- a/src/schema/aws-greengrassv2-deployment.json +++ b/src/schema/aws-greengrassv2-deployment.json @@ -1,393 +1,393 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TargetArn", - "/properties/ParentTargetArn", - "/properties/DeploymentName", - "/properties/Components", - "/properties/IotJobConfiguration", - "/properties/DeploymentPolicies" - ], - "definitions": { - "ComponentConfigurationUpdate": { - "additionalProperties": false, - "properties": { - "Merge": { - "maxLength": 10485760, - "minLength": 1, - "type": "string" - }, - "Reset": { - "insertionOrder": false, - "items": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "ComponentDeploymentSpecification": { - "additionalProperties": false, - "properties": { - "ComponentVersion": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "ConfigurationUpdate": { - "$ref": "#/definitions/ComponentConfigurationUpdate" - }, - "RunWith": { - "$ref": "#/definitions/ComponentRunWith" - } - }, - "type": "object" - }, - "ComponentRunWith": { - "additionalProperties": false, - "properties": { - "PosixUser": { - "minLength": 1, - "type": "string" - }, - "SystemResourceLimits": { - "$ref": "#/definitions/SystemResourceLimits" - }, - "WindowsUser": { - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "DeploymentComponentUpdatePolicy": { - "additionalProperties": false, - "properties": { - "Action": { - "enum": [ - "NOTIFY_COMPONENTS", - "SKIP_NOTIFY_COMPONENTS" - ], - "type": "string" - }, - "TimeoutInSeconds": { - "maximum": 2147483647, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "DeploymentConfigurationValidationPolicy": { - "additionalProperties": false, - "properties": { - "TimeoutInSeconds": { - "maximum": 2147483647, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "DeploymentIoTJobConfiguration": { - "additionalProperties": false, - "properties": { - "AbortConfig": { - "$ref": "#/definitions/IoTJobAbortConfig" - }, - "JobExecutionsRolloutConfig": { - "$ref": "#/definitions/IoTJobExecutionsRolloutConfig" - }, - "TimeoutConfig": { - "$ref": "#/definitions/IoTJobTimeoutConfig" - } - }, - "type": "object" - }, - "DeploymentPolicies": { - "additionalProperties": false, - "properties": { - "ComponentUpdatePolicy": { - "$ref": "#/definitions/DeploymentComponentUpdatePolicy" - }, - "ConfigurationValidationPolicy": { - "$ref": "#/definitions/DeploymentConfigurationValidationPolicy" - }, - "FailureHandlingPolicy": { - "enum": [ - "ROLLBACK", - "DO_NOTHING" - ], - "type": "string" - } - }, - "type": "object" - }, - "IoTJobAbortConfig": { - "additionalProperties": false, - "properties": { - "CriteriaList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/IoTJobAbortCriteria" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "CriteriaList" - ], - "type": "object" - }, - "IoTJobAbortCriteria": { - "additionalProperties": false, - "properties": { - "Action": { - "enum": [ - "CANCEL" - ], - "type": "string" - }, - "FailureType": { - "enum": [ - "FAILED", - "REJECTED", - "TIMED_OUT", - "ALL" - ], - "type": "string" - }, - "MinNumberOfExecutedThings": { - "maximum": 2147483647, - "minimum": 1, - "type": "integer" - }, - "ThresholdPercentage": { - "maximum": 100, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "FailureType", - "Action", - "ThresholdPercentage", - "MinNumberOfExecutedThings" - ], - "type": "object" - }, - "IoTJobExecutionsRolloutConfig": { - "additionalProperties": false, - "properties": { - "ExponentialRate": { - "$ref": "#/definitions/IoTJobExponentialRolloutRate" - }, - "MaximumPerMinute": { - "maximum": 1000, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "IoTJobExponentialRolloutRate": { - "additionalProperties": false, - "properties": { - "BaseRatePerMinute": { - "maximum": 1000, - "minimum": 1, - "type": "integer" - }, - "IncrementFactor": { - "maximum": 5, - "minimum": 1, - "type": "number" - }, - "RateIncreaseCriteria": { - "$ref": "#/definitions/IoTJobRateIncreaseCriteria" - } - }, - "required": [ - "BaseRatePerMinute", - "IncrementFactor", - "RateIncreaseCriteria" - ], - "type": "object" - }, - "IoTJobRateIncreaseCriteria": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "NumberOfNotifiedThings": { - "$ref": "#/definitions/NumberOfThings" - } - }, - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "NumberOfSucceededThings": { - "$ref": "#/definitions/NumberOfThings" - } - }, - "type": "object" - } - ], - "type": "object" - }, - "IoTJobTimeoutConfig": { - "additionalProperties": false, - "properties": { - "InProgressTimeoutInMinutes": { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - } - }, - "type": "object" - }, - "NumberOfThings": { - "maximum": 2147483647, - "minimum": 1, - "type": "integer" - }, - "SystemResourceLimits": { - "additionalProperties": false, - "properties": { - "Cpus": { - "minimum": 0, - "type": "number" - }, - "Memory": { - "format": "int64", - "maximum": 9223372036854771712, - "minimum": 0, - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "Resource for Greengrass V2 deployment.", - "handlers": { - "create": { - "permissions": [ - "greengrass:CreateDeployment", - "greengrass:GetDeployment", - "greengrass:TagResource", - "iot:CancelJob", - "iot:CreateJob", - "iot:DeleteThingShadow", - "iot:DescribeJob", - "iot:DescribeThing", - "iot:DescribeThingGroup", - "iot:GetThingShadow", - "iot:UpdateJob", - "iot:UpdateThingShadow" - ] - }, - "delete": { - "permissions": [ - "greengrass:DeleteDeployment", - "greengrass:CancelDeployment", - "iot:CancelJob", - "iot:DeleteJob", - "iot:DescribeJob" - ] - }, - "list": { - "permissions": [ - "greengrass:ListDeployments", - "iot:DescribeJob", - "iot:DescribeThing", - "iot:DescribeThingGroup", - "iot:GetThingShadow" - ] - }, - "read": { - "permissions": [ - "greengrass:GetDeployment", - "iot:DescribeJob", - "iot:DescribeThing", - "iot:DescribeThingGroup", - "iot:GetThingShadow" - ] - }, - "update": { - "permissions": [ - "greengrass:GetDeployment", - "greengrass:TagResource", - "greengrass:UntagResource", - "iot:DescribeJob" - ] - } - }, - "primaryIdentifier": [ - "/properties/DeploymentId" - ], - "properties": { - "Components": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "$ref": "#/definitions/ComponentDeploymentSpecification" - } - }, - "type": "object" - }, - "DeploymentId": { - "pattern": ".+", - "type": "string" - }, - "DeploymentName": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "DeploymentPolicies": { - "$ref": "#/definitions/DeploymentPolicies" - }, - "IotJobConfiguration": { - "$ref": "#/definitions/DeploymentIoTJobConfiguration" - }, - "ParentTargetArn": { - "pattern": "arn:[^:]*:iot:[^:]*:[0-9]+:thinggroup/.+", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "maxProperties": 200, - "patternProperties": { - ".*": { - "maxLength": 256, - "type": "string" - } - }, - "type": "object" - }, - "TargetArn": { - "pattern": "arn:[^:]*:iot:[^:]*:[0-9]+:(thing|thinggroup)/.+", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/DeploymentId" - ], - "required": [ - "TargetArn" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::GreengrassV2::Deployment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TargetArn", + "/properties/ParentTargetArn", + "/properties/DeploymentName", + "/properties/Components", + "/properties/IotJobConfiguration", + "/properties/DeploymentPolicies" + ], + "definitions": { + "ComponentConfigurationUpdate": { + "additionalProperties": false, + "properties": { + "Merge": { + "maxLength": 10485760, + "minLength": 1, + "type": "string" + }, + "Reset": { + "insertionOrder": false, + "items": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ComponentDeploymentSpecification": { + "additionalProperties": false, + "properties": { + "ComponentVersion": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "ConfigurationUpdate": { + "$ref": "#/definitions/ComponentConfigurationUpdate" + }, + "RunWith": { + "$ref": "#/definitions/ComponentRunWith" + } + }, + "type": "object" + }, + "ComponentRunWith": { + "additionalProperties": false, + "properties": { + "PosixUser": { + "minLength": 1, + "type": "string" + }, + "SystemResourceLimits": { + "$ref": "#/definitions/SystemResourceLimits" + }, + "WindowsUser": { + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "DeploymentComponentUpdatePolicy": { + "additionalProperties": false, + "properties": { + "Action": { + "enum": [ + "NOTIFY_COMPONENTS", + "SKIP_NOTIFY_COMPONENTS" + ], + "type": "string" + }, + "TimeoutInSeconds": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "DeploymentConfigurationValidationPolicy": { + "additionalProperties": false, + "properties": { + "TimeoutInSeconds": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "DeploymentIoTJobConfiguration": { + "additionalProperties": false, + "properties": { + "AbortConfig": { + "$ref": "#/definitions/IoTJobAbortConfig" + }, + "JobExecutionsRolloutConfig": { + "$ref": "#/definitions/IoTJobExecutionsRolloutConfig" + }, + "TimeoutConfig": { + "$ref": "#/definitions/IoTJobTimeoutConfig" + } + }, + "type": "object" + }, + "DeploymentPolicies": { + "additionalProperties": false, + "properties": { + "ComponentUpdatePolicy": { + "$ref": "#/definitions/DeploymentComponentUpdatePolicy" + }, + "ConfigurationValidationPolicy": { + "$ref": "#/definitions/DeploymentConfigurationValidationPolicy" + }, + "FailureHandlingPolicy": { + "enum": [ + "ROLLBACK", + "DO_NOTHING" + ], + "type": "string" + } + }, + "type": "object" + }, + "IoTJobAbortConfig": { + "additionalProperties": false, + "properties": { + "CriteriaList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IoTJobAbortCriteria" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "CriteriaList" + ], + "type": "object" + }, + "IoTJobAbortCriteria": { + "additionalProperties": false, + "properties": { + "Action": { + "enum": [ + "CANCEL" + ], + "type": "string" + }, + "FailureType": { + "enum": [ + "FAILED", + "REJECTED", + "TIMED_OUT", + "ALL" + ], + "type": "string" + }, + "MinNumberOfExecutedThings": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "ThresholdPercentage": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "FailureType", + "Action", + "ThresholdPercentage", + "MinNumberOfExecutedThings" + ], + "type": "object" + }, + "IoTJobExecutionsRolloutConfig": { + "additionalProperties": false, + "properties": { + "ExponentialRate": { + "$ref": "#/definitions/IoTJobExponentialRolloutRate" + }, + "MaximumPerMinute": { + "maximum": 1000, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "IoTJobExponentialRolloutRate": { + "additionalProperties": false, + "properties": { + "BaseRatePerMinute": { + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "IncrementFactor": { + "maximum": 5, + "minimum": 1, + "type": "number" + }, + "RateIncreaseCriteria": { + "$ref": "#/definitions/IoTJobRateIncreaseCriteria" + } + }, + "required": [ + "BaseRatePerMinute", + "IncrementFactor", + "RateIncreaseCriteria" + ], + "type": "object" + }, + "IoTJobRateIncreaseCriteria": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "NumberOfNotifiedThings": { + "$ref": "#/definitions/NumberOfThings" + } + }, + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "NumberOfSucceededThings": { + "$ref": "#/definitions/NumberOfThings" + } + }, + "type": "object" + } + ], + "type": "object" + }, + "IoTJobTimeoutConfig": { + "additionalProperties": false, + "properties": { + "InProgressTimeoutInMinutes": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "NumberOfThings": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "SystemResourceLimits": { + "additionalProperties": false, + "properties": { + "Cpus": { + "minimum": 0, + "type": "number" + }, + "Memory": { + "format": "int64", + "maximum": 9223372036854771712, + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource for Greengrass V2 deployment.", + "handlers": { + "create": { + "permissions": [ + "greengrass:CreateDeployment", + "greengrass:GetDeployment", + "greengrass:TagResource", + "iot:CancelJob", + "iot:CreateJob", + "iot:DeleteThingShadow", + "iot:DescribeJob", + "iot:DescribeThing", + "iot:DescribeThingGroup", + "iot:GetThingShadow", + "iot:UpdateJob", + "iot:UpdateThingShadow" + ] + }, + "delete": { + "permissions": [ + "greengrass:DeleteDeployment", + "greengrass:CancelDeployment", + "iot:CancelJob", + "iot:DeleteJob", + "iot:DescribeJob" + ] + }, + "list": { + "permissions": [ + "greengrass:ListDeployments", + "iot:DescribeJob", + "iot:DescribeThing", + "iot:DescribeThingGroup", + "iot:GetThingShadow" + ] + }, + "read": { + "permissions": [ + "greengrass:GetDeployment", + "iot:DescribeJob", + "iot:DescribeThing", + "iot:DescribeThingGroup", + "iot:GetThingShadow" + ] + }, + "update": { + "permissions": [ + "greengrass:GetDeployment", + "greengrass:TagResource", + "greengrass:UntagResource", + "iot:DescribeJob" + ] + } + }, + "primaryIdentifier": [ + "/properties/DeploymentId" + ], + "properties": { + "Components": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "$ref": "#/definitions/ComponentDeploymentSpecification" + } + }, + "type": "object" + }, + "DeploymentId": { + "pattern": ".+", + "type": "string" + }, + "DeploymentName": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "DeploymentPolicies": { + "$ref": "#/definitions/DeploymentPolicies" + }, + "IotJobConfiguration": { + "$ref": "#/definitions/DeploymentIoTJobConfiguration" + }, + "ParentTargetArn": { + "pattern": "arn:[^:]*:iot:[^:]*:[0-9]+:thinggroup/.+", + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "maxProperties": 200, + "patternProperties": { + ".*": { + "maxLength": 256, + "type": "string" + } + }, + "type": "object" + }, + "TargetArn": { + "pattern": "arn:[^:]*:iot:[^:]*:[0-9]+:(thing|thinggroup)/.+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DeploymentId" + ], + "required": [ + "TargetArn" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GreengrassV2::Deployment" +} diff --git a/src/schema/aws-groundstation-config.json b/src/schema/aws-groundstation-config.json index 43ee2a12..24fd5eec 100644 --- a/src/schema/aws-groundstation-config.json +++ b/src/schema/aws-groundstation-config.json @@ -1,342 +1,354 @@ -{ - "additionalProperties": false, - "definitions": { - "AntennaDownlinkConfig": { - "additionalProperties": false, - "properties": { - "SpectrumConfig": { - "$ref": "#/definitions/SpectrumConfig" - } - }, - "type": "object" - }, - "AntennaDownlinkDemodDecodeConfig": { - "additionalProperties": false, - "properties": { - "DecodeConfig": { - "$ref": "#/definitions/DecodeConfig" - }, - "DemodulationConfig": { - "$ref": "#/definitions/DemodulationConfig" - }, - "SpectrumConfig": { - "$ref": "#/definitions/SpectrumConfig" - } - }, - "type": "object" - }, - "AntennaUplinkConfig": { - "additionalProperties": false, - "properties": { - "SpectrumConfig": { - "$ref": "#/definitions/UplinkSpectrumConfig" - }, - "TargetEirp": { - "$ref": "#/definitions/Eirp" - }, - "TransmitDisabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "BandwidthUnits": { - "enum": [ - "GHz", - "MHz", - "kHz" - ], - "type": "string" - }, - "BucketArn": { - "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:s3:::[A-Za-z0-9-]{1,64}$", - "type": "string" - }, - "ConfigData": { - "additionalProperties": false, - "maxProperties": 1, - "minProperties": 1, - "properties": { - "AntennaDownlinkConfig": { - "$ref": "#/definitions/AntennaDownlinkConfig" - }, - "AntennaDownlinkDemodDecodeConfig": { - "$ref": "#/definitions/AntennaDownlinkDemodDecodeConfig" - }, - "AntennaUplinkConfig": { - "$ref": "#/definitions/AntennaUplinkConfig" - }, - "DataflowEndpointConfig": { - "$ref": "#/definitions/DataflowEndpointConfig" - }, - "S3RecordingConfig": { - "$ref": "#/definitions/S3RecordingConfig" - }, - "TrackingConfig": { - "$ref": "#/definitions/TrackingConfig" - }, - "UplinkEchoConfig": { - "$ref": "#/definitions/UplinkEchoConfig" - } - }, - "type": "object" - }, - "DataflowEndpointConfig": { - "additionalProperties": false, - "properties": { - "DataflowEndpointName": { - "type": "string" - }, - "DataflowEndpointRegion": { - "type": "string" - } - }, - "type": "object" - }, - "DecodeConfig": { - "additionalProperties": false, - "properties": { - "UnvalidatedJSON": { - "$ref": "#/definitions/JsonString" - } - }, - "type": "object" - }, - "DemodulationConfig": { - "additionalProperties": false, - "properties": { - "UnvalidatedJSON": { - "$ref": "#/definitions/JsonString" - } - }, - "type": "object" - }, - "Eirp": { - "additionalProperties": false, - "properties": { - "Units": { - "$ref": "#/definitions/EirpUnits" - }, - "Value": { - "type": "number" - } - }, - "type": "object" - }, - "EirpUnits": { - "enum": [ - "dBW" - ], - "type": "string" - }, - "Frequency": { - "additionalProperties": false, - "properties": { - "Units": { - "$ref": "#/definitions/FrequencyUnits" - }, - "Value": { - "type": "number" - } - }, - "type": "object" - }, - "FrequencyBandwidth": { - "additionalProperties": false, - "properties": { - "Units": { - "$ref": "#/definitions/BandwidthUnits" - }, - "Value": { - "type": "number" - } - }, - "type": "object" - }, - "FrequencyUnits": { - "enum": [ - "GHz", - "MHz", - "kHz" - ], - "type": "string" - }, - "JsonString": { - "pattern": "^[{}\\[\\]:.,\"0-9A-z\\-_\\s]{1,8192}$", - "type": "string" - }, - "Polarization": { - "enum": [ - "LEFT_HAND", - "RIGHT_HAND", - "NONE" - ], - "type": "string" - }, - "RoleArn": { - "pattern": "^arn:[^:\\n]+:iam::[^:\\n]+:role\\/.+$", - "type": "string" - }, - "S3KeyPrefix": { - "pattern": "^([a-zA-Z0-9_\\-=/]|\\{satellite_id\\}|\\{config\\-name}|\\{s3\\-config-id}|\\{year\\}|\\{month\\}|\\{day\\}){1,900}$", - "type": "string" - }, - "S3RecordingConfig": { - "additionalProperties": false, - "properties": { - "BucketArn": { - "$ref": "#/definitions/BucketArn" - }, - "Prefix": { - "$ref": "#/definitions/S3KeyPrefix" - }, - "RoleArn": { - "$ref": "#/definitions/RoleArn" - } - }, - "type": "object" - }, - "SpectrumConfig": { - "additionalProperties": false, - "properties": { - "Bandwidth": { - "$ref": "#/definitions/FrequencyBandwidth" - }, - "CenterFrequency": { - "$ref": "#/definitions/Frequency" - }, - "Polarization": { - "$ref": "#/definitions/Polarization" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "pattern": "^[ a-zA-Z0-9\\+\\-=._:/@]{1,128}$", - "type": "string" - }, - "Value": { - "pattern": "^[ a-zA-Z0-9\\+\\-=._:/@]{1,256}$", - "type": "string" - } - }, - "type": "object" - }, - "TrackingConfig": { - "additionalProperties": false, - "properties": { - "Autotrack": { - "enum": [ - "REQUIRED", - "PREFERRED", - "REMOVED" - ], - "type": "string" - } - }, - "type": "object" - }, - "UplinkEchoConfig": { - "additionalProperties": false, - "properties": { - "AntennaUplinkConfigArn": { - "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", - "type": "string" - }, - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "UplinkSpectrumConfig": { - "additionalProperties": false, - "properties": { - "CenterFrequency": { - "$ref": "#/definitions/Frequency" - }, - "Polarization": { - "$ref": "#/definitions/Polarization" - } - }, - "type": "object" - } - }, - "description": "AWS Ground Station config resource type for CloudFormation.", - "handlers": { - "create": { - "permissions": [ - "groundstation:CreateConfig", - "groundstation:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "groundstation:DeleteConfig" - ] - }, - "list": { - "permissions": [ - "groundstation:ListConfigs" - ] - }, - "read": { - "permissions": [ - "groundstation:GetConfig", - "groundstation:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "groundstation:UpdateConfig", - "groundstation:ListTagsForResource", - "groundstation:TagResource", - "groundstation:UntagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", - "type": "string" - }, - "ConfigData": { - "$ref": "#/definitions/ConfigData" - }, - "Id": { - "type": "string" - }, - "Name": { - "pattern": "^[ a-zA-Z0-9_:-]{1,256}$", - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "Type": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id", - "/properties/Type" - ], - "required": [ - "Name", - "ConfigData" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ground-station.git", - "typeName": "AWS::GroundStation::Config" -} +{ + "additionalProperties": false, + "definitions": { + "AntennaDownlinkConfig": { + "additionalProperties": false, + "properties": { + "SpectrumConfig": { + "$ref": "#/definitions/SpectrumConfig" + } + }, + "type": "object" + }, + "AntennaDownlinkDemodDecodeConfig": { + "additionalProperties": false, + "properties": { + "DecodeConfig": { + "$ref": "#/definitions/DecodeConfig" + }, + "DemodulationConfig": { + "$ref": "#/definitions/DemodulationConfig" + }, + "SpectrumConfig": { + "$ref": "#/definitions/SpectrumConfig" + } + }, + "type": "object" + }, + "AntennaUplinkConfig": { + "additionalProperties": false, + "properties": { + "SpectrumConfig": { + "$ref": "#/definitions/UplinkSpectrumConfig" + }, + "TargetEirp": { + "$ref": "#/definitions/Eirp" + }, + "TransmitDisabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "BandwidthUnits": { + "enum": [ + "GHz", + "MHz", + "kHz" + ], + "type": "string" + }, + "BucketArn": { + "pattern": "^arn:aws[A-Za-z0-9-]{0,64}:s3:::[A-Za-z0-9-]{1,64}$", + "type": "string" + }, + "ConfigData": { + "additionalProperties": false, + "maxProperties": 1, + "minProperties": 1, + "properties": { + "AntennaDownlinkConfig": { + "$ref": "#/definitions/AntennaDownlinkConfig" + }, + "AntennaDownlinkDemodDecodeConfig": { + "$ref": "#/definitions/AntennaDownlinkDemodDecodeConfig" + }, + "AntennaUplinkConfig": { + "$ref": "#/definitions/AntennaUplinkConfig" + }, + "DataflowEndpointConfig": { + "$ref": "#/definitions/DataflowEndpointConfig" + }, + "S3RecordingConfig": { + "$ref": "#/definitions/S3RecordingConfig" + }, + "TrackingConfig": { + "$ref": "#/definitions/TrackingConfig" + }, + "UplinkEchoConfig": { + "$ref": "#/definitions/UplinkEchoConfig" + } + }, + "type": "object" + }, + "DataflowEndpointConfig": { + "additionalProperties": false, + "properties": { + "DataflowEndpointName": { + "type": "string" + }, + "DataflowEndpointRegion": { + "type": "string" + } + }, + "type": "object" + }, + "DecodeConfig": { + "additionalProperties": false, + "properties": { + "UnvalidatedJSON": { + "$ref": "#/definitions/JsonString" + } + }, + "type": "object" + }, + "DemodulationConfig": { + "additionalProperties": false, + "properties": { + "UnvalidatedJSON": { + "$ref": "#/definitions/JsonString" + } + }, + "type": "object" + }, + "Eirp": { + "additionalProperties": false, + "properties": { + "Units": { + "$ref": "#/definitions/EirpUnits" + }, + "Value": { + "type": "number" + } + }, + "type": "object" + }, + "EirpUnits": { + "enum": [ + "dBW" + ], + "type": "string" + }, + "Frequency": { + "additionalProperties": false, + "properties": { + "Units": { + "$ref": "#/definitions/FrequencyUnits" + }, + "Value": { + "type": "number" + } + }, + "type": "object" + }, + "FrequencyBandwidth": { + "additionalProperties": false, + "properties": { + "Units": { + "$ref": "#/definitions/BandwidthUnits" + }, + "Value": { + "type": "number" + } + }, + "type": "object" + }, + "FrequencyUnits": { + "enum": [ + "GHz", + "MHz", + "kHz" + ], + "type": "string" + }, + "JsonString": { + "pattern": "^[{}\\[\\]:.,\"0-9A-z\\-_\\s]{1,8192}$", + "type": "string" + }, + "Polarization": { + "enum": [ + "LEFT_HAND", + "RIGHT_HAND", + "NONE" + ], + "type": "string" + }, + "RoleArn": { + "pattern": "^arn:[^:\\n]+:iam::[^:\\n]+:role\\/.+$", + "type": "string" + }, + "S3KeyPrefix": { + "pattern": "^([a-zA-Z0-9_\\-=/]|\\{satellite_id\\}|\\{config\\-name}|\\{s3\\-config-id}|\\{year\\}|\\{month\\}|\\{day\\}){1,900}$", + "type": "string" + }, + "S3RecordingConfig": { + "additionalProperties": false, + "properties": { + "BucketArn": { + "$ref": "#/definitions/BucketArn" + }, + "Prefix": { + "$ref": "#/definitions/S3KeyPrefix" + }, + "RoleArn": { + "$ref": "#/definitions/RoleArn" + } + }, + "type": "object" + }, + "SpectrumConfig": { + "additionalProperties": false, + "properties": { + "Bandwidth": { + "$ref": "#/definitions/FrequencyBandwidth" + }, + "CenterFrequency": { + "$ref": "#/definitions/Frequency" + }, + "Polarization": { + "$ref": "#/definitions/Polarization" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "pattern": "^[ a-zA-Z0-9\\+\\-=._:/@]{1,128}$", + "type": "string" + }, + "Value": { + "pattern": "^[ a-zA-Z0-9\\+\\-=._:/@]{1,256}$", + "type": "string" + } + }, + "type": "object" + }, + "TrackingConfig": { + "additionalProperties": false, + "properties": { + "Autotrack": { + "enum": [ + "REQUIRED", + "PREFERRED", + "REMOVED" + ], + "type": "string" + } + }, + "type": "object" + }, + "UplinkEchoConfig": { + "additionalProperties": false, + "properties": { + "AntennaUplinkConfigArn": { + "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "UplinkSpectrumConfig": { + "additionalProperties": false, + "properties": { + "CenterFrequency": { + "$ref": "#/definitions/Frequency" + }, + "Polarization": { + "$ref": "#/definitions/Polarization" + } + }, + "type": "object" + } + }, + "description": "AWS Ground Station config resource type for CloudFormation.", + "handlers": { + "create": { + "permissions": [ + "groundstation:CreateConfig", + "groundstation:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "groundstation:DeleteConfig" + ] + }, + "list": { + "permissions": [ + "groundstation:ListConfigs" + ] + }, + "read": { + "permissions": [ + "groundstation:GetConfig", + "groundstation:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "groundstation:UpdateConfig", + "groundstation:ListTagsForResource", + "groundstation:TagResource", + "groundstation:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", + "type": "string" + }, + "ConfigData": { + "$ref": "#/definitions/ConfigData" + }, + "Id": { + "type": "string" + }, + "Name": { + "pattern": "^[ a-zA-Z0-9_:-]{1,256}$", + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/Type" + ], + "required": [ + "Name", + "ConfigData" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ground-station.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "groundstation:TagResource", + "groundstation:UntagResource", + "groundstation:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GroundStation::Config" +} diff --git a/src/schema/aws-groundstation-dataflowendpointgroup.json b/src/schema/aws-groundstation-dataflowendpointgroup.json index 905626fc..30523751 100644 --- a/src/schema/aws-groundstation-dataflowendpointgroup.json +++ b/src/schema/aws-groundstation-dataflowendpointgroup.json @@ -1,273 +1,297 @@ -{ - "additionalProperties": false, - "definitions": { - "AgentStatus": { - "description": "The status of AgentEndpoint.", - "enum": [ - "SUCCESS", - "FAILED", - "ACTIVE", - "INACTIVE" - ], - "type": "string" - }, - "AuditResults": { - "description": "The results of the audit.", - "enum": [ - "HEALTHY", - "UNHEALTHY" - ], - "type": "string" - }, - "AwsGroundStationAgentEndpoint": { - "additionalProperties": false, - "description": "Information about AwsGroundStationAgentEndpoint.", - "properties": { - "AgentStatus": { - "$ref": "#/definitions/AgentStatus" - }, - "AuditResults": { - "$ref": "#/definitions/AuditResults" - }, - "EgressAddress": { - "$ref": "#/definitions/ConnectionDetails" - }, - "IngressAddress": { - "$ref": "#/definitions/RangedConnectionDetails" - }, - "Name": { - "pattern": "^[ a-zA-Z0-9_:-]{1,256}$", - "type": "string" - } - }, - "type": "object" - }, - "ConnectionDetails": { - "additionalProperties": false, - "description": "Egress address of AgentEndpoint with an optional mtu.", - "properties": { - "Mtu": { - "description": "Maximum transmission unit (MTU) size in bytes of a dataflow endpoint.", - "type": "integer" - }, - "SocketAddress": { - "$ref": "#/definitions/SocketAddress" - } - }, - "type": "object" - }, - "DataflowEndpoint": { - "additionalProperties": false, - "properties": { - "Address": { - "$ref": "#/definitions/SocketAddress" - }, - "Mtu": { - "type": "integer" - }, - "Name": { - "pattern": "^[ a-zA-Z0-9_:-]{1,256}$", - "type": "string" - } - }, - "type": "object" - }, - "EndpointDetails": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "Endpoint", - "SecurityDetails" - ] - }, - { - "required": [ - "AwsGroundStationAgentEndpoint" - ] - } - ], - "properties": { - "AwsGroundStationAgentEndpoint": { - "$ref": "#/definitions/AwsGroundStationAgentEndpoint" - }, - "Endpoint": { - "$ref": "#/definitions/DataflowEndpoint" - }, - "SecurityDetails": { - "$ref": "#/definitions/SecurityDetails" - } - }, - "type": "object" - }, - "IntegerRange": { - "additionalProperties": false, - "description": "An integer range that has a minimum and maximum value.", - "properties": { - "Maximum": { - "description": "A maximum value.", - "type": "integer" - }, - "Minimum": { - "description": "A minimum value.", - "type": "integer" - } - }, - "type": "object" - }, - "RangedConnectionDetails": { - "additionalProperties": false, - "description": "Ingress address of AgentEndpoint with a port range and an optional mtu.", - "properties": { - "Mtu": { - "description": "Maximum transmission unit (MTU) size in bytes of a dataflow endpoint.", - "type": "integer" - }, - "SocketAddress": { - "$ref": "#/definitions/RangedSocketAddress" - } - }, - "type": "object" - }, - "RangedSocketAddress": { - "additionalProperties": false, - "description": "A socket address with a port range.", - "properties": { - "Name": { - "description": "IPv4 socket address.", - "type": "string" - }, - "PortRange": { - "$ref": "#/definitions/IntegerRange", - "description": "Port range of a socket address." - } - }, - "type": "object" - }, - "SecurityDetails": { - "additionalProperties": false, - "properties": { - "RoleArn": { - "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array" - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "SocketAddress": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Port": { - "type": "integer" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "pattern": "^[ a-zA-Z0-9\\+\\-=._:/@]{1,128}$", - "type": "string" - }, - "Value": { - "pattern": "^[ a-zA-Z0-9\\+\\-=._:/@]{1,256}$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "AWS Ground Station DataflowEndpointGroup schema for CloudFormation", - "handlers": { - "create": { - "permissions": [ - "groundstation:CreateDataflowEndpointGroup", - "groundstation:GetDataflowEndpointGroup", - "groundstation:TagResource", - "iam:PassRole", - "ec2:describeAddresses", - "ec2:describeNetworkInterfaces", - "iam:createServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "groundstation:DeleteDataflowEndpointGroup", - "groundstation:GetDataflowEndpointGroup" - ] - }, - "list": { - "permissions": [ - "groundstation:ListDataflowEndpointGroups" - ] - }, - "read": { - "permissions": [ - "groundstation:GetDataflowEndpointGroup", - "groundstation:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", - "type": "string" - }, - "ContactPostPassDurationSeconds": { - "description": "Amount of time, in seconds, after a contact ends that the Ground Station Dataflow Endpoint Group will be in a POSTPASS state. A Ground Station Dataflow Endpoint Group State Change event will be emitted when the Dataflow Endpoint Group enters and exits the POSTPASS state.", - "type": "integer" - }, - "ContactPrePassDurationSeconds": { - "description": "Amount of time, in seconds, before a contact starts that the Ground Station Dataflow Endpoint Group will be in a PREPASS state. A Ground Station Dataflow Endpoint Group State Change event will be emitted when the Dataflow Endpoint Group enters and exits the PREPASS state.", - "type": "integer" - }, - "EndpointDetails": { - "items": { - "$ref": "#/definitions/EndpointDetails" - }, - "minItems": 1, - "type": "array" - }, - "Id": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "EndpointDetails" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ground-station.git", - "typeName": "AWS::GroundStation::DataflowEndpointGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EndpointDetails", + "/properties/ContactPrePassDurationSeconds", + "/properties/ContactPostPassDurationSeconds" + ], + "definitions": { + "AgentStatus": { + "description": "The status of AgentEndpoint.", + "enum": [ + "SUCCESS", + "FAILED", + "ACTIVE", + "INACTIVE" + ], + "type": "string" + }, + "AuditResults": { + "description": "The results of the audit.", + "enum": [ + "HEALTHY", + "UNHEALTHY" + ], + "type": "string" + }, + "AwsGroundStationAgentEndpoint": { + "additionalProperties": false, + "description": "Information about AwsGroundStationAgentEndpoint.", + "properties": { + "AgentStatus": { + "$ref": "#/definitions/AgentStatus" + }, + "AuditResults": { + "$ref": "#/definitions/AuditResults" + }, + "EgressAddress": { + "$ref": "#/definitions/ConnectionDetails" + }, + "IngressAddress": { + "$ref": "#/definitions/RangedConnectionDetails" + }, + "Name": { + "pattern": "^[ a-zA-Z0-9_:-]{1,256}$", + "type": "string" + } + }, + "type": "object" + }, + "ConnectionDetails": { + "additionalProperties": false, + "description": "Egress address of AgentEndpoint with an optional mtu.", + "properties": { + "Mtu": { + "description": "Maximum transmission unit (MTU) size in bytes of a dataflow endpoint.", + "type": "integer" + }, + "SocketAddress": { + "$ref": "#/definitions/SocketAddress" + } + }, + "type": "object" + }, + "DataflowEndpoint": { + "additionalProperties": false, + "properties": { + "Address": { + "$ref": "#/definitions/SocketAddress" + }, + "Mtu": { + "type": "integer" + }, + "Name": { + "pattern": "^[ a-zA-Z0-9_:-]{1,256}$", + "type": "string" + } + }, + "type": "object" + }, + "EndpointDetails": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "Endpoint", + "SecurityDetails" + ] + }, + { + "required": [ + "AwsGroundStationAgentEndpoint" + ] + } + ], + "properties": { + "AwsGroundStationAgentEndpoint": { + "$ref": "#/definitions/AwsGroundStationAgentEndpoint" + }, + "Endpoint": { + "$ref": "#/definitions/DataflowEndpoint" + }, + "SecurityDetails": { + "$ref": "#/definitions/SecurityDetails" + } + }, + "type": "object" + }, + "IntegerRange": { + "additionalProperties": false, + "description": "An integer range that has a minimum and maximum value.", + "properties": { + "Maximum": { + "description": "A maximum value.", + "type": "integer" + }, + "Minimum": { + "description": "A minimum value.", + "type": "integer" + } + }, + "type": "object" + }, + "RangedConnectionDetails": { + "additionalProperties": false, + "description": "Ingress address of AgentEndpoint with a port range and an optional mtu.", + "properties": { + "Mtu": { + "description": "Maximum transmission unit (MTU) size in bytes of a dataflow endpoint.", + "type": "integer" + }, + "SocketAddress": { + "$ref": "#/definitions/RangedSocketAddress" + } + }, + "type": "object" + }, + "RangedSocketAddress": { + "additionalProperties": false, + "description": "A socket address with a port range.", + "properties": { + "Name": { + "description": "IPv4 socket address.", + "type": "string" + }, + "PortRange": { + "$ref": "#/definitions/IntegerRange", + "description": "Port range of a socket address." + } + }, + "type": "object" + }, + "SecurityDetails": { + "additionalProperties": false, + "properties": { + "RoleArn": { + "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", + "type": "string" + }, + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "SocketAddress": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Port": { + "type": "integer" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "pattern": "^[ a-zA-Z0-9\\+\\-=._:/@]{1,128}$", + "type": "string" + }, + "Value": { + "pattern": "^[ a-zA-Z0-9\\+\\-=._:/@]{1,256}$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "AWS Ground Station DataflowEndpointGroup schema for CloudFormation", + "handlers": { + "create": { + "permissions": [ + "groundstation:CreateDataflowEndpointGroup", + "groundstation:GetDataflowEndpointGroup", + "groundstation:TagResource", + "iam:PassRole", + "ec2:describeAddresses", + "ec2:describeNetworkInterfaces", + "iam:createServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "groundstation:DeleteDataflowEndpointGroup", + "groundstation:GetDataflowEndpointGroup" + ] + }, + "list": { + "permissions": [ + "groundstation:ListDataflowEndpointGroups" + ] + }, + "read": { + "permissions": [ + "groundstation:GetDataflowEndpointGroup", + "groundstation:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "groundstation:ListTagsForResource", + "groundstation:TagResource", + "groundstation:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", + "type": "string" + }, + "ContactPostPassDurationSeconds": { + "description": "Amount of time, in seconds, after a contact ends that the Ground Station Dataflow Endpoint Group will be in a POSTPASS state. A Ground Station Dataflow Endpoint Group State Change event will be emitted when the Dataflow Endpoint Group enters and exits the POSTPASS state.", + "type": "integer" + }, + "ContactPrePassDurationSeconds": { + "description": "Amount of time, in seconds, before a contact starts that the Ground Station Dataflow Endpoint Group will be in a PREPASS state. A Ground Station Dataflow Endpoint Group State Change event will be emitted when the Dataflow Endpoint Group enters and exits the PREPASS state.", + "type": "integer" + }, + "EndpointDetails": { + "items": { + "$ref": "#/definitions/EndpointDetails" + }, + "minItems": 1, + "type": "array" + }, + "Id": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "EndpointDetails" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ground-station.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "groundstation:TagResource", + "groundstation:UntagResource", + "groundstation:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GroundStation::DataflowEndpointGroup" +} diff --git a/src/schema/aws-groundstation-missionprofile.json b/src/schema/aws-groundstation-missionprofile.json index 02f5036e..fd68a5dd 100644 --- a/src/schema/aws-groundstation-missionprofile.json +++ b/src/schema/aws-groundstation-missionprofile.json @@ -1,177 +1,198 @@ -{ - "additionalProperties": false, - "definitions": { - "DataflowEdge": { - "additionalProperties": false, - "properties": { - "Destination": { - "type": "string" - }, - "Source": { - "type": "string" - } - }, - "type": "object" - }, - "StreamsKmsKey": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "KmsKeyArn" - ] - }, - { - "required": [ - "KmsAliasArn" - ] - } - ], - "properties": { - "KmsAliasArn": { - "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", - "type": "string" - }, - "KmsKeyArn": { - "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "pattern": "^[ a-zA-Z0-9\\+\\-=._:/@]{1,128}$", - "type": "string" - }, - "Value": { - "pattern": "^[ a-zA-Z0-9\\+\\-=._:/@]{1,256}$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "AWS Ground Station Mission Profile resource type for CloudFormation.", - "handlers": { - "create": { - "permissions": [ - "groundstation:CreateMissionProfile", - "groundstation:GetMissionProfile", - "groundstation:TagResource", - "iam:PassRole", - "kms:DescribeKey", - "kms:CreateGrant" - ] - }, - "delete": { - "permissions": [ - "groundstation:DeleteMissionProfile", - "groundstation:GetMissionProfile" - ] - }, - "list": { - "permissions": [ - "groundstation:ListMissionProfiles" - ] - }, - "read": { - "permissions": [ - "groundstation:GetMissionProfile", - "groundstation:ListTagsForResource", - "kms:DescribeKey", - "kms:CreateGrant" - ] - }, - "update": { - "permissions": [ - "groundstation:UpdateMissionProfile", - "groundstation:GetMissionProfile", - "groundstation:ListTagsForResource", - "groundstation:TagResource", - "groundstation:UntagResource", - "iam:PassRole", - "kms:DescribeKey", - "kms:CreateGrant" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id", - "/properties/Arn" - ], - "properties": { - "Arn": { - "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", - "type": "string" - }, - "ContactPostPassDurationSeconds": { - "description": "Post-pass time needed after the contact.", - "type": "integer" - }, - "ContactPrePassDurationSeconds": { - "description": "Pre-pass time needed before the contact.", - "type": "integer" - }, - "DataflowEdges": { - "description": "", - "items": { - "$ref": "#/definitions/DataflowEdge" - }, - "minItems": 1, - "type": "array" - }, - "Id": { - "type": "string" - }, - "MinimumViableContactDurationSeconds": { - "description": "Visibilities with shorter duration than the specified minimum viable contact duration will be ignored when searching for available contacts.", - "type": "integer" - }, - "Name": { - "description": "A name used to identify a mission profile.", - "pattern": "^[ a-zA-Z0-9_:-]{1,256}$", - "type": "string" - }, - "Region": { - "type": "string" - }, - "StreamsKmsKey": { - "$ref": "#/definitions/StreamsKmsKey", - "description": "The ARN of a KMS Key used for encrypting data during transmission from the source to destination locations." - }, - "StreamsKmsRole": { - "description": "The ARN of the KMS Key or Alias Key role used to define permissions on KMS Key usage.", - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "TrackingConfigArn": { - "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/Region" - ], - "required": [ - "Name", - "MinimumViableContactDurationSeconds", - "DataflowEdges", - "TrackingConfigArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ground-station.git", - "typeName": "AWS::GroundStation::MissionProfile" -} +{ + "additionalProperties": false, + "definitions": { + "DataflowEdge": { + "additionalProperties": false, + "properties": { + "Destination": { + "type": "string" + }, + "Source": { + "type": "string" + } + }, + "type": "object" + }, + "StreamsKmsKey": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "KmsKeyArn" + ] + }, + { + "required": [ + "KmsAliasArn" + ] + }, + { + "required": [ + "KmsAliasName" + ] + } + ], + "properties": { + "KmsAliasArn": { + "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", + "type": "string" + }, + "KmsAliasName": { + "pattern": "^alias/[a-zA-Z0-9:/_-]+$", + "type": "string" + }, + "KmsKeyArn": { + "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "pattern": "^[ a-zA-Z0-9\\+\\-=._:/@]{1,128}$", + "type": "string" + }, + "Value": { + "pattern": "^[ a-zA-Z0-9\\+\\-=._:/@]{1,256}$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "AWS Ground Station Mission Profile resource type for CloudFormation.", + "handlers": { + "create": { + "permissions": [ + "groundstation:CreateMissionProfile", + "groundstation:GetMissionProfile", + "groundstation:TagResource", + "iam:PassRole", + "kms:DescribeKey", + "kms:CreateGrant" + ] + }, + "delete": { + "permissions": [ + "groundstation:DeleteMissionProfile", + "groundstation:GetMissionProfile" + ] + }, + "list": { + "permissions": [ + "groundstation:ListMissionProfiles" + ] + }, + "read": { + "permissions": [ + "groundstation:GetMissionProfile", + "groundstation:ListTagsForResource", + "kms:DescribeKey", + "kms:CreateGrant" + ] + }, + "update": { + "permissions": [ + "groundstation:UpdateMissionProfile", + "groundstation:GetMissionProfile", + "groundstation:ListTagsForResource", + "groundstation:TagResource", + "groundstation:UntagResource", + "iam:PassRole", + "kms:DescribeKey", + "kms:CreateGrant" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id", + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", + "type": "string" + }, + "ContactPostPassDurationSeconds": { + "description": "Post-pass time needed after the contact.", + "type": "integer" + }, + "ContactPrePassDurationSeconds": { + "description": "Pre-pass time needed before the contact.", + "type": "integer" + }, + "DataflowEdges": { + "description": "", + "items": { + "$ref": "#/definitions/DataflowEdge" + }, + "minItems": 1, + "type": "array" + }, + "Id": { + "type": "string" + }, + "MinimumViableContactDurationSeconds": { + "description": "Visibilities with shorter duration than the specified minimum viable contact duration will be ignored when searching for available contacts.", + "type": "integer" + }, + "Name": { + "description": "A name used to identify a mission profile.", + "pattern": "^[ a-zA-Z0-9_:-]{1,256}$", + "type": "string" + }, + "Region": { + "type": "string" + }, + "StreamsKmsKey": { + "$ref": "#/definitions/StreamsKmsKey", + "description": "The ARN of a KMS Key used for encrypting data during transmission from the source to destination locations." + }, + "StreamsKmsRole": { + "description": "The ARN of the KMS Key or Alias Key role used to define permissions on KMS Key usage.", + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TrackingConfigArn": { + "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/Region" + ], + "required": [ + "Name", + "MinimumViableContactDurationSeconds", + "DataflowEdges", + "TrackingConfigArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ground-station.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "groundstation:TagResource", + "groundstation:UntagResource", + "groundstation:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GroundStation::MissionProfile" +} diff --git a/src/schema/aws-guardduty-detector.json b/src/schema/aws-guardduty-detector.json index 19119ba6..53600f26 100644 --- a/src/schema/aws-guardduty-detector.json +++ b/src/schema/aws-guardduty-detector.json @@ -1,224 +1,224 @@ -{ - "additionalProperties": false, - "definitions": { - "CFNDataSourceConfigurations": { - "additionalProperties": false, - "properties": { - "Kubernetes": { - "$ref": "#/definitions/CFNKubernetesConfiguration" - }, - "MalwareProtection": { - "$ref": "#/definitions/CFNMalwareProtectionConfiguration" - }, - "S3Logs": { - "$ref": "#/definitions/CFNS3LogsConfiguration" - } - }, - "type": "object" - }, - "CFNFeatureAdditionalConfiguration": { - "additionalProperties": false, - "properties": { - "Name": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Status": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "CFNFeatureConfiguration": { - "additionalProperties": false, - "properties": { - "AdditionalConfiguration": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CFNFeatureAdditionalConfiguration" - }, - "type": "array" - }, - "Name": { - "maxLength": 128, - "type": "string" - }, - "Status": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - } - }, - "required": [ - "Name", - "Status" - ], - "type": "object" - }, - "CFNKubernetesAuditLogsConfiguration": { - "additionalProperties": false, - "properties": { - "Enable": { - "type": "boolean" - } - }, - "required": [ - "Enable" - ], - "type": "object" - }, - "CFNKubernetesConfiguration": { - "additionalProperties": false, - "properties": { - "AuditLogs": { - "$ref": "#/definitions/CFNKubernetesAuditLogsConfiguration" - } - }, - "required": [ - "AuditLogs" - ], - "type": "object" - }, - "CFNMalwareProtectionConfiguration": { - "additionalProperties": false, - "properties": { - "ScanEc2InstanceWithFindings": { - "$ref": "#/definitions/CFNScanEc2InstanceWithFindingsConfiguration" - } - }, - "type": "object" - }, - "CFNS3LogsConfiguration": { - "additionalProperties": false, - "properties": { - "Enable": { - "type": "boolean" - } - }, - "required": [ - "Enable" - ], - "type": "object" - }, - "CFNScanEc2InstanceWithFindingsConfiguration": { - "additionalProperties": false, - "properties": { - "EbsVolumes": { - "type": "boolean" - } - }, - "type": "object" - }, - "TagItem": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::GuardDuty::Detector", - "handlers": { - "create": { - "permissions": [ - "guardduty:CreateDetector", - "guardduty:GetDetector", - "guardduty:TagResource", - "iam:CreateServiceLinkedRole", - "iam:GetRole" - ] - }, - "delete": { - "permissions": [ - "guardduty:ListDetectors", - "guardduty:DeleteDetector", - "guardduty:GetDetector" - ] - }, - "list": { - "permissions": [ - "guardduty:ListDetectors" - ] - }, - "read": { - "permissions": [ - "guardduty:GetDetector", - "guardduty:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "guardduty:UpdateDetector", - "guardduty:GetDetector", - "guardduty:ListDetectors", - "iam:CreateServiceLinkedRole", - "iam:GetRole", - "guardduty:TagResource", - "guardduty:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DataSources": { - "$ref": "#/definitions/CFNDataSourceConfigurations" - }, - "Enable": { - "type": "boolean" - }, - "Features": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CFNFeatureConfiguration" - }, - "type": "array" - }, - "FindingPublishingFrequency": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TagItem" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Enable" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::GuardDuty::Detector" -} +{ + "additionalProperties": false, + "definitions": { + "CFNDataSourceConfigurations": { + "additionalProperties": false, + "properties": { + "Kubernetes": { + "$ref": "#/definitions/CFNKubernetesConfiguration" + }, + "MalwareProtection": { + "$ref": "#/definitions/CFNMalwareProtectionConfiguration" + }, + "S3Logs": { + "$ref": "#/definitions/CFNS3LogsConfiguration" + } + }, + "type": "object" + }, + "CFNFeatureAdditionalConfiguration": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Status": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "CFNFeatureConfiguration": { + "additionalProperties": false, + "properties": { + "AdditionalConfiguration": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CFNFeatureAdditionalConfiguration" + }, + "type": "array" + }, + "Name": { + "maxLength": 128, + "type": "string" + }, + "Status": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "required": [ + "Name", + "Status" + ], + "type": "object" + }, + "CFNKubernetesAuditLogsConfiguration": { + "additionalProperties": false, + "properties": { + "Enable": { + "type": "boolean" + } + }, + "required": [ + "Enable" + ], + "type": "object" + }, + "CFNKubernetesConfiguration": { + "additionalProperties": false, + "properties": { + "AuditLogs": { + "$ref": "#/definitions/CFNKubernetesAuditLogsConfiguration" + } + }, + "required": [ + "AuditLogs" + ], + "type": "object" + }, + "CFNMalwareProtectionConfiguration": { + "additionalProperties": false, + "properties": { + "ScanEc2InstanceWithFindings": { + "$ref": "#/definitions/CFNScanEc2InstanceWithFindingsConfiguration" + } + }, + "type": "object" + }, + "CFNS3LogsConfiguration": { + "additionalProperties": false, + "properties": { + "Enable": { + "type": "boolean" + } + }, + "required": [ + "Enable" + ], + "type": "object" + }, + "CFNScanEc2InstanceWithFindingsConfiguration": { + "additionalProperties": false, + "properties": { + "EbsVolumes": { + "type": "boolean" + } + }, + "type": "object" + }, + "TagItem": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::GuardDuty::Detector", + "handlers": { + "create": { + "permissions": [ + "guardduty:CreateDetector", + "guardduty:GetDetector", + "guardduty:TagResource", + "iam:CreateServiceLinkedRole", + "iam:GetRole" + ] + }, + "delete": { + "permissions": [ + "guardduty:ListDetectors", + "guardduty:DeleteDetector", + "guardduty:GetDetector" + ] + }, + "list": { + "permissions": [ + "guardduty:ListDetectors" + ] + }, + "read": { + "permissions": [ + "guardduty:GetDetector", + "guardduty:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "guardduty:UpdateDetector", + "guardduty:GetDetector", + "guardduty:ListDetectors", + "iam:CreateServiceLinkedRole", + "iam:GetRole", + "guardduty:TagResource", + "guardduty:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DataSources": { + "$ref": "#/definitions/CFNDataSourceConfigurations" + }, + "Enable": { + "type": "boolean" + }, + "Features": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CFNFeatureConfiguration" + }, + "type": "array" + }, + "FindingPublishingFrequency": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagItem" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Enable" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GuardDuty::Detector" +} diff --git a/src/schema/aws-guardduty-filter.json b/src/schema/aws-guardduty-filter.json index 98938cd6..11e05cfb 100644 --- a/src/schema/aws-guardduty-filter.json +++ b/src/schema/aws-guardduty-filter.json @@ -1,206 +1,206 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DetectorId", - "/properties/Name" - ], - "definitions": { - "Condition": { - "additionalProperties": false, - "properties": { - "Eq": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Equals": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "GreaterThan": { - "format": "int64", - "type": "integer" - }, - "GreaterThanOrEqual": { - "format": "int64", - "type": "integer" - }, - "Gt": { - "type": "integer" - }, - "Gte": { - "type": "integer" - }, - "LessThan": { - "format": "int64", - "type": "integer" - }, - "LessThanOrEqual": { - "format": "int64", - "type": "integer" - }, - "Lt": { - "type": "integer" - }, - "Lte": { - "type": "integer" - }, - "Neq": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "NotEquals": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "FindingCriteria": { - "additionalProperties": false, - "properties": { - "Criterion": { - "additionalProperties": false, - "patternProperties": { - "^.+$": { - "$ref": "#/definitions/Condition" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "TagItem": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::GuardDuty::Filter", - "handlers": { - "create": { - "permissions": [ - "guardduty:CreateFilter", - "guardduty:GetFilter", - "guardduty:TagResource" - ] - }, - "delete": { - "permissions": [ - "guardduty:ListDetectors", - "guardduty:ListFilters", - "guardduty:GetFilter", - "guardduty:DeleteFilter" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DetectorId": { - "type": "string" - } - } - }, - "permissions": [ - "guardduty:ListFilters" - ] - }, - "read": { - "permissions": [ - "guardduty:GetFilter", - "guardduty:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "guardduty:UpdateFilter", - "guardduty:GetFilter", - "guardduty:ListFilters", - "guardduty:TagResource", - "guardduty:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/DetectorId", - "/properties/Name" - ], - "properties": { - "Action": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "DetectorId": { - "maxLength": 300, - "minLength": 1, - "type": "string" - }, - "FindingCriteria": { - "$ref": "#/definitions/FindingCriteria" - }, - "Name": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Rank": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TagItem" - }, - "type": "array" - } - }, - "required": [ - "DetectorId", - "Name", - "FindingCriteria" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "guardduty:TagResource", - "guardduty:UntagResource", - "guardduty:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::GuardDuty::Filter" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DetectorId", + "/properties/Name" + ], + "definitions": { + "Condition": { + "additionalProperties": false, + "properties": { + "Eq": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Equals": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "GreaterThan": { + "format": "int64", + "type": "integer" + }, + "GreaterThanOrEqual": { + "format": "int64", + "type": "integer" + }, + "Gt": { + "type": "integer" + }, + "Gte": { + "type": "integer" + }, + "LessThan": { + "format": "int64", + "type": "integer" + }, + "LessThanOrEqual": { + "format": "int64", + "type": "integer" + }, + "Lt": { + "type": "integer" + }, + "Lte": { + "type": "integer" + }, + "Neq": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "NotEquals": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "FindingCriteria": { + "additionalProperties": false, + "properties": { + "Criterion": { + "additionalProperties": false, + "patternProperties": { + "^.+$": { + "$ref": "#/definitions/Condition" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "TagItem": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::GuardDuty::Filter", + "handlers": { + "create": { + "permissions": [ + "guardduty:CreateFilter", + "guardduty:GetFilter", + "guardduty:TagResource" + ] + }, + "delete": { + "permissions": [ + "guardduty:ListDetectors", + "guardduty:ListFilters", + "guardduty:GetFilter", + "guardduty:DeleteFilter" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DetectorId": { + "type": "string" + } + } + }, + "permissions": [ + "guardduty:ListFilters" + ] + }, + "read": { + "permissions": [ + "guardduty:GetFilter", + "guardduty:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "guardduty:UpdateFilter", + "guardduty:GetFilter", + "guardduty:ListFilters", + "guardduty:TagResource", + "guardduty:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DetectorId", + "/properties/Name" + ], + "properties": { + "Action": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DetectorId": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "FindingCriteria": { + "$ref": "#/definitions/FindingCriteria" + }, + "Name": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Rank": { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagItem" + }, + "type": "array" + } + }, + "required": [ + "DetectorId", + "Name", + "FindingCriteria" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "guardduty:TagResource", + "guardduty:UntagResource", + "guardduty:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GuardDuty::Filter" +} diff --git a/src/schema/aws-guardduty-ipset.json b/src/schema/aws-guardduty-ipset.json index 21ebf9a4..643c7998 100644 --- a/src/schema/aws-guardduty-ipset.json +++ b/src/schema/aws-guardduty-ipset.json @@ -1,137 +1,137 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Format", - "/properties/DetectorId" - ], - "definitions": { - "TagItem": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::GuardDuty::IPSet", - "handlers": { - "create": { - "permissions": [ - "guardduty:CreateIPSet", - "guardduty:GetIPSet", - "guardduty:TagResource", - "iam:PutRolePolicy" - ] - }, - "delete": { - "permissions": [ - "guardduty:GetDetector", - "guardduty:ListDetectors", - "guardduty:ListIPSets", - "guardduty:GetIPSet", - "guardduty:DeleteIPSet", - "iam:DeleteRolePolicy" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DetectorId": { - "type": "string" - } - } - }, - "permissions": [ - "guardduty:ListIPSets" - ] - }, - "read": { - "permissions": [ - "guardduty:GetIPSet" - ] - }, - "update": { - "permissions": [ - "guardduty:UpdateIPSet", - "guardduty:GetIPSet", - "guardduty:ListIPSets", - "iam:PutRolePolicy", - "guardduty:TagResource", - "guardduty:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id", - "/properties/DetectorId" - ], - "properties": { - "Activate": { - "type": "boolean" - }, - "DetectorId": { - "maxLength": 300, - "minLength": 1, - "type": "string" - }, - "Format": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Location": { - "maxLength": 300, - "minLength": 1, - "type": "string" - }, - "Name": { - "maxLength": 300, - "minLength": 1, - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TagItem" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Format", - "Location" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "guardduty:TagResource", - "guardduty:UntagResource", - "guardduty:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::GuardDuty::IPSet", - "writeOnlyProperties": [ - "/properties/Activate" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Format", + "/properties/DetectorId" + ], + "definitions": { + "TagItem": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::GuardDuty::IPSet", + "handlers": { + "create": { + "permissions": [ + "guardduty:CreateIPSet", + "guardduty:GetIPSet", + "guardduty:TagResource", + "iam:PutRolePolicy" + ] + }, + "delete": { + "permissions": [ + "guardduty:GetDetector", + "guardduty:ListDetectors", + "guardduty:ListIPSets", + "guardduty:GetIPSet", + "guardduty:DeleteIPSet", + "iam:DeleteRolePolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DetectorId": { + "type": "string" + } + } + }, + "permissions": [ + "guardduty:ListIPSets" + ] + }, + "read": { + "permissions": [ + "guardduty:GetIPSet" + ] + }, + "update": { + "permissions": [ + "guardduty:UpdateIPSet", + "guardduty:GetIPSet", + "guardduty:ListIPSets", + "iam:PutRolePolicy", + "guardduty:TagResource", + "guardduty:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id", + "/properties/DetectorId" + ], + "properties": { + "Activate": { + "type": "boolean" + }, + "DetectorId": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "Format": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Location": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagItem" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Format", + "Location" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "guardduty:TagResource", + "guardduty:UntagResource", + "guardduty:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GuardDuty::IPSet", + "writeOnlyProperties": [ + "/properties/Activate" + ] +} diff --git a/src/schema/aws-guardduty-malwareprotectionplan.json b/src/schema/aws-guardduty-malwareprotectionplan.json index db4f23bd..707bdc4c 100644 --- a/src/schema/aws-guardduty-malwareprotectionplan.json +++ b/src/schema/aws-guardduty-malwareprotectionplan.json @@ -1,189 +1,189 @@ -{ - "additionalProperties": false, - "definitions": { - "CFNActions": { - "additionalProperties": false, - "properties": { - "Tagging": { - "$ref": "#/definitions/CFNTagging", - "description": "Contains information about tagging status of the Malware Protection plan resource." - } - }, - "type": "object" - }, - "CFNProtectedResource": { - "additionalProperties": false, - "properties": { - "S3Bucket": { - "additionalProperties": false, - "description": "Information about the protected S3 bucket resource.", - "properties": { - "BucketName": { - "description": "Name of the S3 bucket.", - "type": "string" - }, - "ObjectPrefixes": { - "description": "Information about the specified object prefixes. The S3 object will be scanned only if it belongs to any of the specified object prefixes.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "required": [ - "S3Bucket" - ], - "type": "object" - }, - "CFNStatusReasons": { - "additionalProperties": false, - "properties": { - "Code": { - "description": "The status code of the Malware Protection plan.", - "type": "string" - }, - "Message": { - "description": "Issue message that specifies the reason.", - "type": "string" - } - }, - "type": "object" - }, - "CFNTagging": { - "additionalProperties": false, - "properties": { - "Status": { - "description": "Indicates whether or not you chose GuardDuty to add a predefined tag to the scanned S3 object.", - "type": "string" - } - }, - "type": "object" - }, - "TagItem": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::GuardDuty::MalwareProtectionPlan", - "handlers": { - "create": { - "permissions": [ - "guardduty:CreateMalwareProtectionPlan", - "guardduty:GetMalwareProtectionPlan", - "guardduty:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "guardduty:DeleteMalwareProtectionPlan", - "guardduty:GetMalwareProtectionPlan" - ] - }, - "list": { - "permissions": [ - "guardduty:ListMalwareProtectionPlans" - ] - }, - "read": { - "permissions": [ - "guardduty:GetMalwareProtectionPlan" - ] - }, - "update": { - "permissions": [ - "guardduty:UpdateMalwareProtectionPlan", - "guardduty:GetMalwareProtectionPlan", - "guardduty:TagResource", - "guardduty:UntagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/MalwareProtectionPlanId" - ], - "properties": { - "Actions": { - "$ref": "#/definitions/CFNActions", - "description": "Specifies the action that is to be applied to the Malware Protection plan resource." - }, - "Arn": { - "description": "Amazon Resource Name (ARN) of the protected resource.", - "type": "string" - }, - "CreatedAt": { - "description": "The timestamp when the Malware Protection plan resource was created.", - "type": "string" - }, - "MalwareProtectionPlanId": { - "description": "A unique identifier associated with Malware Protection plan resource.", - "type": "string" - }, - "ProtectedResource": { - "$ref": "#/definitions/CFNProtectedResource", - "description": "Information about the protected resource. Presently, S3Bucket is the only supported protected resource." - }, - "Role": { - "description": "IAM role that includes the permissions required to scan and (optionally) add tags to the associated protected resource.", - "type": "string" - }, - "Status": { - "description": "Status of the Malware Protection plan resource.", - "type": "string" - }, - "StatusReasons": { - "description": "Status details associated with the Malware Protection plan resource status.", - "items": { - "$ref": "#/definitions/CFNStatusReasons" - }, - "type": "array" - }, - "Tags": { - "description": "The tags to be added to the created Malware Protection plan resource. Each tag consists of a key and an optional value, both of which you need to specify.", - "items": { - "$ref": "#/definitions/TagItem" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/MalwareProtectionPlanId", - "/properties/Arn", - "/properties/CreatedAt", - "/properties/Status", - "/properties/StatusReasons" - ], - "required": [ - "Role", - "ProtectedResource" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "guardduty:TagResource", - "guardduty:UntagResource", - "guardduty:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::GuardDuty::MalwareProtectionPlan" -} +{ + "additionalProperties": false, + "definitions": { + "CFNActions": { + "additionalProperties": false, + "properties": { + "Tagging": { + "$ref": "#/definitions/CFNTagging", + "description": "Contains information about tagging status of the Malware Protection plan resource." + } + }, + "type": "object" + }, + "CFNProtectedResource": { + "additionalProperties": false, + "properties": { + "S3Bucket": { + "additionalProperties": false, + "description": "Information about the protected S3 bucket resource.", + "properties": { + "BucketName": { + "description": "Name of the S3 bucket.", + "type": "string" + }, + "ObjectPrefixes": { + "description": "Information about the specified object prefixes. The S3 object will be scanned only if it belongs to any of the specified object prefixes.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "required": [ + "S3Bucket" + ], + "type": "object" + }, + "CFNStatusReasons": { + "additionalProperties": false, + "properties": { + "Code": { + "description": "The status code of the Malware Protection plan.", + "type": "string" + }, + "Message": { + "description": "Issue message that specifies the reason.", + "type": "string" + } + }, + "type": "object" + }, + "CFNTagging": { + "additionalProperties": false, + "properties": { + "Status": { + "description": "Indicates whether or not you chose GuardDuty to add a predefined tag to the scanned S3 object.", + "type": "string" + } + }, + "type": "object" + }, + "TagItem": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::GuardDuty::MalwareProtectionPlan", + "handlers": { + "create": { + "permissions": [ + "guardduty:CreateMalwareProtectionPlan", + "guardduty:GetMalwareProtectionPlan", + "guardduty:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "guardduty:DeleteMalwareProtectionPlan", + "guardduty:GetMalwareProtectionPlan" + ] + }, + "list": { + "permissions": [ + "guardduty:ListMalwareProtectionPlans" + ] + }, + "read": { + "permissions": [ + "guardduty:GetMalwareProtectionPlan" + ] + }, + "update": { + "permissions": [ + "guardduty:UpdateMalwareProtectionPlan", + "guardduty:GetMalwareProtectionPlan", + "guardduty:TagResource", + "guardduty:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/MalwareProtectionPlanId" + ], + "properties": { + "Actions": { + "$ref": "#/definitions/CFNActions", + "description": "Specifies the action that is to be applied to the Malware Protection plan resource." + }, + "Arn": { + "description": "Amazon Resource Name (ARN) of the protected resource.", + "type": "string" + }, + "CreatedAt": { + "description": "The timestamp when the Malware Protection plan resource was created.", + "type": "string" + }, + "MalwareProtectionPlanId": { + "description": "A unique identifier associated with Malware Protection plan resource.", + "type": "string" + }, + "ProtectedResource": { + "$ref": "#/definitions/CFNProtectedResource", + "description": "Information about the protected resource. Presently, S3Bucket is the only supported protected resource." + }, + "Role": { + "description": "IAM role that includes the permissions required to scan and (optionally) add tags to the associated protected resource.", + "type": "string" + }, + "Status": { + "description": "Status of the Malware Protection plan resource.", + "type": "string" + }, + "StatusReasons": { + "description": "Status details associated with the Malware Protection plan resource status.", + "items": { + "$ref": "#/definitions/CFNStatusReasons" + }, + "type": "array" + }, + "Tags": { + "description": "The tags to be added to the created Malware Protection plan resource. Each tag consists of a key and an optional value, both of which you need to specify.", + "items": { + "$ref": "#/definitions/TagItem" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/MalwareProtectionPlanId", + "/properties/Arn", + "/properties/CreatedAt", + "/properties/Status", + "/properties/StatusReasons" + ], + "required": [ + "Role", + "ProtectedResource" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "guardduty:TagResource", + "guardduty:UntagResource", + "guardduty:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GuardDuty::MalwareProtectionPlan" +} diff --git a/src/schema/aws-guardduty-master.json b/src/schema/aws-guardduty-master.json index 336ab2c4..8c5c7171 100644 --- a/src/schema/aws-guardduty-master.json +++ b/src/schema/aws-guardduty-master.json @@ -1,73 +1,73 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MasterId", - "/properties/InvitationId", - "/properties/DetectorId" - ], - "description": "GuardDuty Master resource schema", - "handlers": { - "create": { - "permissions": [ - "guardduty:ListInvitations", - "guardduty:AcceptInvitation", - "guardduty:GetMasterAccount" - ] - }, - "delete": { - "permissions": [ - "guardduty:DisassociateFromMasterAccount" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DetectorId": { - "type": "string" - }, - "MasterId": { - "type": "string" - } - } - }, - "permissions": [ - "guardduty:GetMasterAccount" - ] - }, - "read": { - "permissions": [ - "guardduty:GetMasterAccount" - ] - } - }, - "primaryIdentifier": [ - "/properties/DetectorId", - "/properties/MasterId" - ], - "properties": { - "DetectorId": { - "description": "Unique ID of the detector of the GuardDuty member account.", - "type": "string" - }, - "InvitationId": { - "description": "Value used to validate the master account to the member account.", - "type": "string" - }, - "MasterId": { - "description": "ID of the account used as the master account.", - "type": "string" - } - }, - "required": [ - "MasterId", - "DetectorId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-guardduty.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::GuardDuty::Master" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MasterId", + "/properties/InvitationId", + "/properties/DetectorId" + ], + "description": "GuardDuty Master resource schema", + "handlers": { + "create": { + "permissions": [ + "guardduty:ListInvitations", + "guardduty:AcceptInvitation", + "guardduty:GetMasterAccount" + ] + }, + "delete": { + "permissions": [ + "guardduty:DisassociateFromMasterAccount" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DetectorId": { + "type": "string" + }, + "MasterId": { + "type": "string" + } + } + }, + "permissions": [ + "guardduty:GetMasterAccount" + ] + }, + "read": { + "permissions": [ + "guardduty:GetMasterAccount" + ] + } + }, + "primaryIdentifier": [ + "/properties/DetectorId", + "/properties/MasterId" + ], + "properties": { + "DetectorId": { + "description": "Unique ID of the detector of the GuardDuty member account.", + "type": "string" + }, + "InvitationId": { + "description": "Value used to validate the master account to the member account.", + "type": "string" + }, + "MasterId": { + "description": "ID of the account used as the master account.", + "type": "string" + } + }, + "required": [ + "MasterId", + "DetectorId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-guardduty.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::GuardDuty::Master" +} diff --git a/src/schema/aws-guardduty-member.json b/src/schema/aws-guardduty-member.json index 66446a30..7edc962e 100644 --- a/src/schema/aws-guardduty-member.json +++ b/src/schema/aws-guardduty-member.json @@ -1,89 +1,89 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DetectorId", - "/properties/MemberId" - ], - "description": "Resource Type definition for AWS::GuardDuty::Member", - "handlers": { - "create": { - "permissions": [ - "guardduty:CreateMembers", - "guardduty:GetMembers" - ] - }, - "delete": { - "permissions": [ - "guardduty:GetMembers", - "guardduty:DisassociateMembers", - "guardduty:DeleteMembers" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DetectorId": { - "type": "string" - } - } - }, - "permissions": [ - "guardduty:ListMembers" - ] - }, - "read": { - "permissions": [ - "guardduty:GetMembers" - ] - }, - "update": { - "permissions": [ - "guardduty:GetMembers", - "guardduty:CreateMembers", - "guardduty:DisassociateMembers", - "guardduty:StartMonitoringMembers", - "guardduty:StopMonitoringMembers", - "guardduty:InviteMembers" - ] - } - }, - "primaryIdentifier": [ - "/properties/DetectorId", - "/properties/MemberId" - ], - "properties": { - "DetectorId": { - "type": "string" - }, - "DisableEmailNotification": { - "type": "boolean" - }, - "Email": { - "type": "string" - }, - "MemberId": { - "type": "string" - }, - "Message": { - "type": "string" - }, - "Status": { - "type": "string" - } - }, - "required": [ - "Email" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-guardduty", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::GuardDuty::Member", - "writeOnlyProperties": [ - "/properties/DisableEmailNotification", - "/properties/Message" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DetectorId", + "/properties/MemberId" + ], + "description": "Resource Type definition for AWS::GuardDuty::Member", + "handlers": { + "create": { + "permissions": [ + "guardduty:CreateMembers", + "guardduty:GetMembers" + ] + }, + "delete": { + "permissions": [ + "guardduty:GetMembers", + "guardduty:DisassociateMembers", + "guardduty:DeleteMembers" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DetectorId": { + "type": "string" + } + } + }, + "permissions": [ + "guardduty:ListMembers" + ] + }, + "read": { + "permissions": [ + "guardduty:GetMembers" + ] + }, + "update": { + "permissions": [ + "guardduty:GetMembers", + "guardduty:CreateMembers", + "guardduty:DisassociateMembers", + "guardduty:StartMonitoringMembers", + "guardduty:StopMonitoringMembers", + "guardduty:InviteMembers" + ] + } + }, + "primaryIdentifier": [ + "/properties/DetectorId", + "/properties/MemberId" + ], + "properties": { + "DetectorId": { + "type": "string" + }, + "DisableEmailNotification": { + "type": "boolean" + }, + "Email": { + "type": "string" + }, + "MemberId": { + "type": "string" + }, + "Message": { + "type": "string" + }, + "Status": { + "type": "string" + } + }, + "required": [ + "Email" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-guardduty", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::GuardDuty::Member", + "writeOnlyProperties": [ + "/properties/DisableEmailNotification", + "/properties/Message" + ] +} diff --git a/src/schema/aws-guardduty-publishingdestination.json b/src/schema/aws-guardduty-publishingdestination.json new file mode 100644 index 00000000..5284f6a2 --- /dev/null +++ b/src/schema/aws-guardduty-publishingdestination.json @@ -0,0 +1,148 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DetectorId" + ], + "definitions": { + "CFNDestinationProperties": { + "additionalProperties": false, + "properties": { + "DestinationArn": { + "description": "The ARN of the resource to publish to.", + "type": "string" + }, + "KmsKeyArn": { + "description": "The ARN of the KMS key to use for encryption.", + "type": "string" + } + }, + "type": "object" + }, + "TagItem": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::GuardDuty::PublishingDestination.", + "handlers": { + "create": { + "permissions": [ + "guardduty:CreatePublishingDestination", + "guardduty:TagResource", + "guardduty:DescribePublishingDestination", + "guardduty:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "guardduty:DeletePublishingDestination", + "guardduty:DescribePublishingDestination" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DetectorId": { + "type": "string" + } + } + }, + "permissions": [ + "guardduty:ListPublishingDestinations" + ] + }, + "read": { + "permissions": [ + "guardduty:DescribePublishingDestination", + "guardduty:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "guardduty:UpdatePublishingDestination", + "guardduty:TagResource", + "guardduty:UntagResource", + "guardduty:ListTagsForResource", + "guardduty:DescribePublishingDestination" + ] + } + }, + "primaryIdentifier": [ + "/properties/DetectorId", + "/properties/Id" + ], + "properties": { + "DestinationProperties": { + "$ref": "#/definitions/CFNDestinationProperties", + "type": "object" + }, + "DestinationType": { + "description": "The type of resource for the publishing destination. Currently only Amazon S3 buckets are supported.", + "type": "string" + }, + "DetectorId": { + "description": "The ID of the GuardDuty detector associated with the publishing destination.", + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "Id": { + "description": "The ID of the publishing destination.", + "type": "string" + }, + "PublishingFailureStartTimestamp": { + "description": "The time, in epoch millisecond format, at which GuardDuty was first unable to publish findings to the destination.", + "type": "string" + }, + "Status": { + "description": "The status of the publishing destination.", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagItem" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Status", + "/properties/PublishingFailureStartTimestamp" + ], + "required": [ + "DetectorId", + "DestinationType", + "DestinationProperties" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "guardduty:TagResource", + "guardduty:UntagResource", + "guardduty:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GuardDuty::PublishingDestination" +} diff --git a/src/schema/aws-guardduty-threatintelset.json b/src/schema/aws-guardduty-threatintelset.json index f89b9ecf..bd2ffe2c 100644 --- a/src/schema/aws-guardduty-threatintelset.json +++ b/src/schema/aws-guardduty-threatintelset.json @@ -1,136 +1,136 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Format", - "/properties/DetectorId" - ], - "definitions": { - "TagItem": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::GuardDuty::ThreatIntelSet", - "handlers": { - "create": { - "permissions": [ - "guardduty:CreateThreatIntelSet", - "guardduty:GetThreatIntelSet", - "guardduty:TagResource", - "iam:PutRolePolicy" - ] - }, - "delete": { - "permissions": [ - "guardduty:ListDetectors", - "guardduty:ListThreatIntelSets", - "guardduty:DeleteThreatIntelSet", - "guardduty:GetThreatIntelSet", - "iam:DeleteRolePolicy" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DetectorId": { - "type": "string" - } - } - }, - "permissions": [ - "guardduty:ListThreatIntelSets" - ] - }, - "read": { - "permissions": [ - "guardduty:GetThreatIntelSet" - ] - }, - "update": { - "permissions": [ - "guardduty:UpdateThreatIntelSet", - "guardduty:GetThreatIntelSet", - "guardduty:ListThreatIntelSets", - "iam:PutRolePolicy", - "guardduty:TagResource", - "guardduty:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id", - "/properties/DetectorId" - ], - "properties": { - "Activate": { - "type": "boolean" - }, - "DetectorId": { - "maxLength": 32, - "minLength": 1, - "type": "string" - }, - "Format": { - "maxLength": 300, - "minLength": 1, - "type": "string" - }, - "Id": { - "type": "string" - }, - "Location": { - "maxLength": 300, - "minLength": 1, - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/TagItem" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Format", - "Location" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-guardduty", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "guardduty:TagResource", - "guardduty:UntagResource", - "guardduty:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::GuardDuty::ThreatIntelSet", - "writeOnlyProperties": [ - "/properties/Activate" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Format", + "/properties/DetectorId" + ], + "definitions": { + "TagItem": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::GuardDuty::ThreatIntelSet", + "handlers": { + "create": { + "permissions": [ + "guardduty:CreateThreatIntelSet", + "guardduty:GetThreatIntelSet", + "guardduty:TagResource", + "iam:PutRolePolicy" + ] + }, + "delete": { + "permissions": [ + "guardduty:ListDetectors", + "guardduty:ListThreatIntelSets", + "guardduty:DeleteThreatIntelSet", + "guardduty:GetThreatIntelSet", + "iam:DeleteRolePolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DetectorId": { + "type": "string" + } + } + }, + "permissions": [ + "guardduty:ListThreatIntelSets" + ] + }, + "read": { + "permissions": [ + "guardduty:GetThreatIntelSet" + ] + }, + "update": { + "permissions": [ + "guardduty:UpdateThreatIntelSet", + "guardduty:GetThreatIntelSet", + "guardduty:ListThreatIntelSets", + "iam:PutRolePolicy", + "guardduty:TagResource", + "guardduty:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id", + "/properties/DetectorId" + ], + "properties": { + "Activate": { + "type": "boolean" + }, + "DetectorId": { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + "Format": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "Id": { + "type": "string" + }, + "Location": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/TagItem" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Format", + "Location" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-guardduty", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "guardduty:TagResource", + "guardduty:UntagResource", + "guardduty:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::GuardDuty::ThreatIntelSet", + "writeOnlyProperties": [ + "/properties/Activate" + ] +} diff --git a/src/schema/aws-healthimaging-datastore.json b/src/schema/aws-healthimaging-datastore.json index 58096c62..b582ce1a 100644 --- a/src/schema/aws-healthimaging-datastore.json +++ b/src/schema/aws-healthimaging-datastore.json @@ -1,155 +1,160 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DatastoreName", - "/properties/Tags", - "/properties/KmsKeyArn" - ], - "definitions": { - "CreatedAt": { - "description": "The timestamp when the data store was created.", - "type": "string" - }, - "DatastoreArn": { - "description": "The Datastore's ARN.", - "maxLength": 127, - "minLength": 1, - "pattern": "^arn:aws((-us-gov)|(-iso)|(-iso-b)|(-cn))?:medical-imaging:[a-z0-9-]+:[0-9]{12}:datastore/[0-9a-z]{32}(/imageset/[0-9a-z]{32})?$", - "type": "string" - }, - "DatastoreId": { - "maxLength": 32, - "minLength": 0, - "pattern": "^[0-9a-z]{32}$", - "type": "string" - }, - "DatastoreName": { - "description": "User friendly name for Datastore.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[A-Za-z0-9._/#-]+$", - "type": "string" - }, - "DatastoreStatus": { - "description": "A string to denote the Datastore's state.", - "enum": [ - "CREATING", - "CREATE_FAILED", - "ACTIVE", - "DELETING", - "DELETED" - ], - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "KmsKeyArn": { - "description": "ARN referencing a KMS key or KMS key alias.", - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "A Map of key value pairs for Tags.", - "patternProperties": { - "^.+$": { - "description": "The string value for the tag.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "UpdatedAt": { - "description": "The timestamp when the data store was created.", - "type": "string" - } - }, - "description": "Definition of AWS::HealthImaging::Datastore Resource Type", - "handlers": { - "create": { - "permissions": [ - "medical-imaging:CreateDatastore", - "medical-imaging:GetDatastore", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:RetireGrant", - "kms:GenerateDataKey", - "kms:Decrypt", - "lambda:InvokeFunction", - "medical-imaging:TagResource", - "medical-imaging:UntagResource", - "medical-imaging:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "medical-imaging:DeleteDatastore", - "medical-imaging:GetDatastore", - "medical-imaging:UntagResource", - "kms:DescribeKey", - "kms:RetireGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "list": { - "permissions": [ - "medical-imaging:ListDatastores" - ] - }, - "read": { - "permissions": [ - "medical-imaging:GetDatastore", - "medical-imaging:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/DatastoreId" - ], - "properties": { - "CreatedAt": { - "$ref": "#/definitions/CreatedAt" - }, - "DatastoreArn": { - "$ref": "#/definitions/DatastoreArn" - }, - "DatastoreId": { - "$ref": "#/definitions/DatastoreId" - }, - "DatastoreName": { - "$ref": "#/definitions/DatastoreName" - }, - "DatastoreStatus": { - "$ref": "#/definitions/DatastoreStatus" - }, - "KmsKeyArn": { - "$ref": "#/definitions/KmsKeyArn" - }, - "Tags": { - "$ref": "#/definitions/Tags" - }, - "UpdatedAt": { - "$ref": "#/definitions/UpdatedAt" - } - }, - "readOnlyProperties": [ - "/properties/DatastoreArn", - "/properties/CreatedAt", - "/properties/UpdatedAt", - "/properties/DatastoreId", - "/properties/DatastoreStatus" - ], - "required": [], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::HealthImaging::Datastore" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DatastoreName", + "/properties/Tags", + "/properties/KmsKeyArn" + ], + "definitions": { + "CreatedAt": { + "description": "The timestamp when the data store was created.", + "type": "string" + }, + "DatastoreArn": { + "description": "The Datastore's ARN.", + "maxLength": 127, + "minLength": 1, + "pattern": "^arn:aws((-us-gov)|(-iso)|(-iso-b)|(-cn))?:medical-imaging:[a-z0-9-]+:[0-9]{12}:datastore/[0-9a-z]{32}(/imageset/[0-9a-z]{32})?$", + "type": "string" + }, + "DatastoreId": { + "maxLength": 32, + "minLength": 0, + "pattern": "^[0-9a-z]{32}$", + "type": "string" + }, + "DatastoreName": { + "description": "User friendly name for Datastore.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[A-Za-z0-9._/#-]+$", + "type": "string" + }, + "DatastoreStatus": { + "description": "A string to denote the Datastore's state.", + "enum": [ + "CREATING", + "CREATE_FAILED", + "ACTIVE", + "DELETING", + "DELETED" + ], + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "KmsKeyArn": { + "description": "ARN referencing a KMS key or KMS key alias.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "A Map of key value pairs for Tags.", + "patternProperties": { + "^.+$": { + "description": "The string value for the tag.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "UpdatedAt": { + "description": "The timestamp when the data store was created.", + "type": "string" + } + }, + "description": "Definition of AWS::HealthImaging::Datastore Resource Type", + "handlers": { + "create": { + "permissions": [ + "medical-imaging:CreateDatastore", + "medical-imaging:GetDatastore", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:RetireGrant", + "kms:GenerateDataKey", + "kms:Decrypt", + "lambda:InvokeFunction", + "medical-imaging:TagResource", + "medical-imaging:UntagResource", + "medical-imaging:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "medical-imaging:DeleteDatastore", + "medical-imaging:GetDatastore", + "medical-imaging:UntagResource", + "kms:DescribeKey", + "kms:RetireGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "list": { + "permissions": [ + "medical-imaging:ListDatastores" + ] + }, + "read": { + "permissions": [ + "medical-imaging:GetDatastore", + "medical-imaging:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DatastoreId" + ], + "properties": { + "CreatedAt": { + "$ref": "#/definitions/CreatedAt" + }, + "DatastoreArn": { + "$ref": "#/definitions/DatastoreArn" + }, + "DatastoreId": { + "$ref": "#/definitions/DatastoreId" + }, + "DatastoreName": { + "$ref": "#/definitions/DatastoreName" + }, + "DatastoreStatus": { + "$ref": "#/definitions/DatastoreStatus" + }, + "KmsKeyArn": { + "$ref": "#/definitions/KmsKeyArn" + }, + "Tags": { + "$ref": "#/definitions/Tags" + }, + "UpdatedAt": { + "$ref": "#/definitions/UpdatedAt" + } + }, + "readOnlyProperties": [ + "/properties/DatastoreArn", + "/properties/CreatedAt", + "/properties/UpdatedAt", + "/properties/DatastoreId", + "/properties/DatastoreStatus" + ], + "required": [], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "medical-imaging:TagResource", + "medical-imaging:UntagResource", + "medical-imaging:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::HealthImaging::Datastore" +} diff --git a/src/schema/aws-healthlake-fhirdatastore.json b/src/schema/aws-healthlake-fhirdatastore.json index f9d09d24..bedc2f76 100644 --- a/src/schema/aws-healthlake-fhirdatastore.json +++ b/src/schema/aws-healthlake-fhirdatastore.json @@ -1,306 +1,316 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DatastoreName", - "/properties/DatastoreTypeVersion", - "/properties/PreloadDataConfig", - "/properties/SseConfiguration", - "/properties/IdentityProviderConfiguration" - ], - "definitions": { - "CreatedAt": { - "additionalProperties": false, - "description": "The time that a Data Store was created.", - "properties": { - "Nanos": { - "description": "Nanoseconds.", - "type": "integer" - }, - "Seconds": { - "description": "Seconds since epoch.", - "type": "string" - } - }, - "required": [ - "Seconds", - "Nanos" - ], - "type": "object" - }, - "DatastoreArn": { - "description": "The Amazon Resource Name used in the creation of the Data Store.", - "pattern": "^arn:aws((-us-gov)|(-iso)|(-iso-b)|(-cn))?:healthlake:[a-zA-Z0-9-]+:[0-9]{12}:datastore/.+?", - "type": "string" - }, - "DatastoreEndpoint": { - "description": "The AWS endpoint for the Data Store. Each Data Store will have it's own endpoint with Data Store ID in the endpoint URL.", - "maxLength": 10000, - "type": "string" - }, - "DatastoreId": { - "description": "The AWS-generated ID number for the Data Store.", - "maxLength": 32, - "minLength": 1, - "type": "string" - }, - "DatastoreName": { - "description": "The user-generated name for the Data Store.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "DatastoreStatus": { - "description": "The status of the Data Store. Possible statuses are 'CREATING', 'ACTIVE', 'DELETING', or 'DELETED'.", - "enum": [ - "CREATING", - "ACTIVE", - "DELETING", - "DELETED" - ], - "type": "string" - }, - "DatastoreTypeVersion": { - "description": "The FHIR version. Only R4 version data is supported.", - "enum": [ - "R4" - ], - "type": "string" - }, - "IdentityProviderConfiguration": { - "additionalProperties": false, - "description": "The identity provider configuration for the datastore", - "properties": { - "AuthorizationStrategy": { - "description": "Type of Authorization Strategy. The two types of supported Authorization strategies are SMART_ON_FHIR_V1 and AWS_AUTH.", - "enum": [ - "SMART_ON_FHIR_V1", - "AWS_AUTH" - ], - "type": "string" - }, - "FineGrainedAuthorizationEnabled": { - "description": "Flag to indicate if fine-grained authorization will be enabled for the datastore", - "type": "boolean" - }, - "IdpLambdaArn": { - "description": "The Amazon Resource Name (ARN) of the Lambda function that will be used to decode the access token created by the authorization server.", - "maxLength": 256, - "minLength": 49, - "pattern": "arn:aws[-a-z]*:lambda:[a-z]{2}-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9\\-_\\.]+(:(\\$LATEST|[a-zA-Z0-9\\-_]+))?", - "type": "string" - }, - "Metadata": { - "description": "The JSON metadata elements for identity provider configuration.", - "type": "string" - } - }, - "required": [ - "AuthorizationStrategy" - ], - "type": "object" - }, - "KmsEncryptionConfig": { - "additionalProperties": false, - "description": "The customer-managed-key (CMK) used when creating a Data Store. If a customer owned key is not specified, an AWS owned key will be used for encryption.", - "properties": { - "CmkType": { - "description": "The type of customer-managed-key (CMK) used for encryption. The two types of supported CMKs are customer owned CMKs and AWS owned CMKs.", - "enum": [ - "CUSTOMER_MANAGED_KMS_KEY", - "AWS_OWNED_KMS_KEY" - ], - "type": "string" - }, - "KmsKeyId": { - "description": "The KMS encryption key id/alias used to encrypt the Data Store contents at rest.", - "maxLength": 400, - "minLength": 1, - "pattern": "(arn:aws((-us-gov)|(-iso)|(-iso-b)|(-cn))?:kms:)?([a-z]{2}-[a-z]+(-[a-z]+)?-\\d:)?(\\d{12}:)?(((key/)?[a-zA-Z0-9-_]+)|(alias/[a-zA-Z0-9:/_-]+))", - "type": "string" - } - }, - "required": [ - "CmkType" - ], - "type": "object" - }, - "PreloadDataConfig": { - "additionalProperties": false, - "description": "The preloaded data configuration for the Data Store. Only data preloaded from Synthea is supported.", - "properties": { - "PreloadDataType": { - "description": "The type of preloaded data. Only Synthea preloaded data is supported.", - "enum": [ - "SYNTHEA" - ], - "type": "string" - } - }, - "required": [ - "PreloadDataType" - ], - "type": "object" - }, - "SseConfiguration": { - "additionalProperties": false, - "description": "The server-side encryption key configuration for a customer provided encryption key.", - "properties": { - "KmsEncryptionConfig": { - "$ref": "#/definitions/KmsEncryptionConfig" - } - }, - "required": [ - "KmsEncryptionConfig" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair. A tag consists of a tag key and a tag value. Tag keys and tag values are both required, but tag values can be empty (null) strings.", - "properties": { - "Key": { - "description": "The key of the tag.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value of the tag.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "HealthLake FHIR Datastore", - "documentationUrl": "https://docs.aws.amazon.com/healthlake/latest/devguide/working-with-FHIR-healthlake.html", - "handlers": { - "create": { - "permissions": [ - "healthlake:CreateFHIRDatastore", - "healthlake:DescribeFHIRDatastore", - "iam:PassRole", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt", - "iam:GetRole", - "iam:CreateServiceLinkedRole", - "ram:GetResourceShareInvitations", - "ram:AcceptResourceShareInvitation", - "glue:CreateDatabase", - "glue:DeleteDatabase", - "lambda:InvokeFunction", - "healthlake:TagResource", - "healthlake:UntagResource", - "healthlake:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "healthlake:DeleteFHIRDatastore", - "healthlake:DescribeFHIRDatastore", - "iam:PassRole", - "iam:GetRole", - "iam:CreateServiceLinkedRole", - "ram:GetResourceShareInvitations", - "ram:AcceptResourceShareInvitation", - "glue:CreateDatabase", - "glue:DeleteDatabase" - ] - }, - "list": { - "permissions": [ - "healthlake:ListFHIRDatastores" - ] - }, - "read": { - "permissions": [ - "healthlake:DescribeFHIRDatastore", - "healthlake:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "healthlake:TagResource", - "healthlake:UntagResource", - "healthlake:ListTagsForResource", - "healthlake:DescribeFHIRDatastore", - "iam:PassRole", - "iam:GetRole", - "iam:CreateServiceLinkedRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/DatastoreId" - ], - "properties": { - "CreatedAt": { - "$ref": "#/definitions/CreatedAt" - }, - "DatastoreArn": { - "$ref": "#/definitions/DatastoreArn" - }, - "DatastoreEndpoint": { - "$ref": "#/definitions/DatastoreEndpoint" - }, - "DatastoreId": { - "$ref": "#/definitions/DatastoreId" - }, - "DatastoreName": { - "$ref": "#/definitions/DatastoreName" - }, - "DatastoreStatus": { - "$ref": "#/definitions/DatastoreStatus" - }, - "DatastoreTypeVersion": { - "$ref": "#/definitions/DatastoreTypeVersion" - }, - "IdentityProviderConfiguration": { - "$ref": "#/definitions/IdentityProviderConfiguration" - }, - "PreloadDataConfig": { - "$ref": "#/definitions/PreloadDataConfig" - }, - "SseConfiguration": { - "$ref": "#/definitions/SseConfiguration" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/DatastoreArn", - "/properties/DatastoreEndpoint", - "/properties/DatastoreId", - "/properties/DatastoreStatus" - ], - "required": [ - "DatastoreTypeVersion" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "healthlake:UntagResource", - "healthlake:TagResource", - "healthlake:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::HealthLake::FHIRDatastore" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DatastoreName", + "/properties/DatastoreTypeVersion", + "/properties/PreloadDataConfig", + "/properties/SseConfiguration", + "/properties/IdentityProviderConfiguration" + ], + "definitions": { + "CreatedAt": { + "additionalProperties": false, + "description": "The time that a Data Store was created.", + "properties": { + "Nanos": { + "description": "Nanoseconds.", + "type": "integer" + }, + "Seconds": { + "description": "Seconds since epoch.", + "type": "string" + } + }, + "required": [ + "Seconds", + "Nanos" + ], + "type": "object" + }, + "DatastoreArn": { + "description": "The Amazon Resource Name used in the creation of the Data Store.", + "pattern": "^arn:aws((-us-gov)|(-iso)|(-iso-b)|(-cn))?:healthlake:[a-zA-Z0-9-]+:[0-9]{12}:datastore/.+?", + "type": "string" + }, + "DatastoreEndpoint": { + "description": "The AWS endpoint for the Data Store. Each Data Store will have it's own endpoint with Data Store ID in the endpoint URL.", + "maxLength": 10000, + "type": "string" + }, + "DatastoreId": { + "description": "The AWS-generated ID number for the Data Store.", + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + "DatastoreName": { + "description": "The user-generated name for the Data Store.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "DatastoreStatus": { + "description": "The status of the Data Store. Possible statuses are 'CREATING', 'ACTIVE', 'DELETING', or 'DELETED'.", + "enum": [ + "CREATING", + "ACTIVE", + "DELETING", + "DELETED" + ], + "type": "string" + }, + "DatastoreTypeVersion": { + "description": "The FHIR version. Only R4 version data is supported.", + "enum": [ + "R4" + ], + "type": "string" + }, + "IdentityProviderConfiguration": { + "additionalProperties": false, + "default": { + "AuthorizationStrategy": "AWS_AUTH", + "FineGrainedAuthorizationEnabled": false + }, + "description": "The identity provider configuration for the datastore", + "properties": { + "AuthorizationStrategy": { + "description": "Type of Authorization Strategy. The two types of supported Authorization strategies are SMART_ON_FHIR_V1 and AWS_AUTH.", + "enum": [ + "SMART_ON_FHIR_V1", + "AWS_AUTH", + "SMART_ON_FHIR" + ], + "type": "string" + }, + "FineGrainedAuthorizationEnabled": { + "description": "Flag to indicate if fine-grained authorization will be enabled for the datastore", + "type": "boolean" + }, + "IdpLambdaArn": { + "description": "The Amazon Resource Name (ARN) of the Lambda function that will be used to decode the access token created by the authorization server.", + "maxLength": 256, + "minLength": 49, + "pattern": "arn:aws[-a-z]*:lambda:[a-z]{2}-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9\\-_\\.]+(:(\\$LATEST|[a-zA-Z0-9\\-_]+))?", + "type": "string" + }, + "Metadata": { + "description": "The JSON metadata elements for identity provider configuration.", + "type": "string" + } + }, + "required": [ + "AuthorizationStrategy" + ], + "type": "object" + }, + "KmsEncryptionConfig": { + "additionalProperties": false, + "description": "The customer-managed-key (CMK) used when creating a Data Store. If a customer owned key is not specified, an AWS owned key will be used for encryption.", + "properties": { + "CmkType": { + "description": "The type of customer-managed-key (CMK) used for encryption. The two types of supported CMKs are customer owned CMKs and AWS owned CMKs.", + "enum": [ + "CUSTOMER_MANAGED_KMS_KEY", + "AWS_OWNED_KMS_KEY" + ], + "type": "string" + }, + "KmsKeyId": { + "description": "The KMS encryption key id/alias used to encrypt the Data Store contents at rest.", + "maxLength": 400, + "minLength": 1, + "pattern": "(arn:aws((-us-gov)|(-iso)|(-iso-b)|(-cn))?:kms:)?([a-z]{2}-[a-z]+(-[a-z]+)?-\\d:)?(\\d{12}:)?(((key/)?[a-zA-Z0-9-_]+)|(alias/[a-zA-Z0-9:/_-]+))", + "type": "string" + } + }, + "required": [ + "CmkType" + ], + "type": "object" + }, + "PreloadDataConfig": { + "additionalProperties": false, + "description": "The preloaded data configuration for the Data Store. Only data preloaded from Synthea is supported.", + "properties": { + "PreloadDataType": { + "description": "The type of preloaded data. Only Synthea preloaded data is supported.", + "enum": [ + "SYNTHEA" + ], + "type": "string" + } + }, + "required": [ + "PreloadDataType" + ], + "type": "object" + }, + "SseConfiguration": { + "additionalProperties": false, + "default": { + "KmsEncryptionConfig": { + "CmkType": "AWS_OWNED_KMS_KEY" + } + }, + "description": "The server-side encryption key configuration for a customer provided encryption key.", + "properties": { + "KmsEncryptionConfig": { + "$ref": "#/definitions/KmsEncryptionConfig" + } + }, + "required": [ + "KmsEncryptionConfig" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair. A tag consists of a tag key and a tag value. Tag keys and tag values are both required, but tag values can be empty (null) strings.", + "properties": { + "Key": { + "description": "The key of the tag.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value of the tag.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "HealthLake FHIR Datastore", + "documentationUrl": "https://docs.aws.amazon.com/healthlake/latest/devguide/working-with-FHIR-healthlake.html", + "handlers": { + "create": { + "permissions": [ + "healthlake:CreateFHIRDatastore", + "healthlake:DescribeFHIRDatastore", + "iam:PassRole", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt", + "iam:GetRole", + "iam:CreateServiceLinkedRole", + "ram:GetResourceShareInvitations", + "ram:AcceptResourceShareInvitation", + "glue:CreateDatabase", + "glue:DeleteDatabase", + "lambda:InvokeFunction", + "healthlake:TagResource", + "healthlake:UntagResource", + "healthlake:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "healthlake:DeleteFHIRDatastore", + "healthlake:DescribeFHIRDatastore", + "iam:PassRole", + "iam:GetRole", + "iam:CreateServiceLinkedRole", + "ram:GetResourceShareInvitations", + "ram:AcceptResourceShareInvitation", + "glue:CreateDatabase", + "glue:DeleteDatabase" + ] + }, + "list": { + "permissions": [ + "healthlake:ListFHIRDatastores" + ] + }, + "read": { + "permissions": [ + "healthlake:DescribeFHIRDatastore", + "healthlake:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "healthlake:TagResource", + "healthlake:UntagResource", + "healthlake:ListTagsForResource", + "healthlake:DescribeFHIRDatastore", + "iam:PassRole", + "iam:GetRole", + "iam:CreateServiceLinkedRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DatastoreId" + ], + "properties": { + "CreatedAt": { + "$ref": "#/definitions/CreatedAt" + }, + "DatastoreArn": { + "$ref": "#/definitions/DatastoreArn" + }, + "DatastoreEndpoint": { + "$ref": "#/definitions/DatastoreEndpoint" + }, + "DatastoreId": { + "$ref": "#/definitions/DatastoreId" + }, + "DatastoreName": { + "$ref": "#/definitions/DatastoreName" + }, + "DatastoreStatus": { + "$ref": "#/definitions/DatastoreStatus" + }, + "DatastoreTypeVersion": { + "$ref": "#/definitions/DatastoreTypeVersion" + }, + "IdentityProviderConfiguration": { + "$ref": "#/definitions/IdentityProviderConfiguration" + }, + "PreloadDataConfig": { + "$ref": "#/definitions/PreloadDataConfig" + }, + "SseConfiguration": { + "$ref": "#/definitions/SseConfiguration" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/DatastoreArn", + "/properties/DatastoreEndpoint", + "/properties/DatastoreId", + "/properties/DatastoreStatus" + ], + "required": [ + "DatastoreTypeVersion" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "healthlake:UntagResource", + "healthlake:TagResource", + "healthlake:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::HealthLake::FHIRDatastore" +} diff --git a/src/schema/aws-iam-accesskey.json b/src/schema/aws-iam-accesskey.json index c074c843..e54b264a 100644 --- a/src/schema/aws-iam-accesskey.json +++ b/src/schema/aws-iam-accesskey.json @@ -1,36 +1,36 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserName", - "/properties/Serial" - ], - "description": "Resource Type definition for AWS::IAM::AccessKey", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "SecretAccessKey": { - "type": "string" - }, - "Serial": { - "type": "integer" - }, - "Status": { - "type": "string" - }, - "UserName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/SecretAccessKey", - "/properties/Id" - ], - "required": [ - "UserName" - ], - "typeName": "AWS::IAM::AccessKey" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/UserName", + "/properties/Serial" + ], + "description": "Resource Type definition for AWS::IAM::AccessKey", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "SecretAccessKey": { + "type": "string" + }, + "Serial": { + "type": "integer" + }, + "Status": { + "type": "string" + }, + "UserName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/SecretAccessKey", + "/properties/Id" + ], + "required": [ + "UserName" + ], + "typeName": "AWS::IAM::AccessKey" +} diff --git a/src/schema/aws-iam-group.json b/src/schema/aws-iam-group.json index 92c3a975..b56fd24b 100644 --- a/src/schema/aws-iam-group.json +++ b/src/schema/aws-iam-group.json @@ -1,123 +1,123 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GroupName" - ], - "definitions": { - "Policy": { - "additionalProperties": false, - "description": "Contains information about an attached policy.\n An attached policy is a managed policy that has been attached to a user, group, or role.\n For more information about managed policies, see [Managed Policies and Inline Policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *User Guide*.", - "properties": { - "PolicyDocument": { - "description": "The policy document.", - "type": [ - "string", - "object" - ] - }, - "PolicyName": { - "description": "The friendly name (not ARN) identifying the policy.", - "type": "string" - } - }, - "required": [ - "PolicyDocument", - "PolicyName" - ], - "type": "object" - } - }, - "description": "Creates a new group.\n For information about the number of groups you can create, see [Limitations on Entities](https://docs.aws.amazon.com/IAM/latest/UserGuide/LimitationsOnEntities.html) in the *User Guide*.", - "handlers": { - "create": { - "permissions": [ - "iam:CreateGroup", - "iam:PutGroupPolicy", - "iam:AttachGroupPolicy", - "iam:GetGroupPolicy", - "iam:GetGroup" - ] - }, - "delete": { - "permissions": [ - "iam:GetGroup", - "iam:DeleteGroup", - "iam:ListAttachedGroupPolicies", - "iam:ListGroupPolicies", - "iam:DetachGroupPolicy", - "iam:DeleteGroupPolicy", - "iam:GetGroupPolicy" - ] - }, - "list": { - "permissions": [ - "iam:ListGroups" - ] - }, - "read": { - "permissions": [ - "iam:GetGroup", - "iam:ListGroupPolicies", - "iam:GetGroupPolicy", - "iam:ListAttachedGroupPolicies" - ] - }, - "update": { - "permissions": [ - "iam:GetGroup", - "iam:UpdateGroup", - "iam:DetachGroupPolicy", - "iam:AttachGroupPolicy", - "iam:DeleteGroupPolicy", - "iam:PutGroupPolicy", - "iam:GetGroupPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/GroupName" - ], - "properties": { - "Arn": { - "description": "", - "type": "string" - }, - "GroupName": { - "description": "The name of the group to create. Do not include the path in this value.\n The group name must be unique within the account. Group names are not distinguished by case. For example, you cannot create groups named both \"ADMINS\" and \"admins\". If you don't specify a name, CFN generates a unique physical ID and uses that ID for the group name.\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.\n If you specify a name, you must specify the ``CAPABILITY_NAMED_IAM`` value to acknowledge your template's capabilities. For more information, see [Acknowledging Resources in Templates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#using-iam-capabilities).\n Naming an IAM resource can cause an unrecoverable error if you reuse the same template in multiple Regions. To prevent this, we recommend using ``Fn::Join`` and ``AWS::Region`` to create a Region-specific name, as in the following example: ``{\"Fn::Join\": [\"\", [{\"Ref\": \"AWS::Region\"}, {\"Ref\": \"MyResourceName\"}]]}``.", - "type": "string" - }, - "ManagedPolicyArns": { - "description": "The Amazon Resource Name (ARN) of the IAM policy you want to attach.\n For more information about ARNs, see [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the *General Reference*.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Path": { - "description": "The path to the group. For more information about paths, see [IAM identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) in the *IAM User Guide*.\n This parameter is optional. If it is not included, it defaults to a slash (/).\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes. In addition, it can contain any ASCII character from the ! (``\\u0021``) through the DEL character (``\\u007F``), including most punctuation characters, digits, and upper and lowercased letters.", - "type": "string" - }, - "Policies": { - "description": "Adds or updates an inline policy document that is embedded in the specified IAM group. To view AWS::IAM::Group snippets, see [Declaring an Group Resource](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-iam.html#scenario-iam-group).\n The name of each inline policy for a role, user, or group must be unique. If you don't choose unique names, updates to the IAM identity will fail. \n For information about limits on the number of inline policies that you can embed in a group, see [Limitations on Entities](https://docs.aws.amazon.com/IAM/latest/UserGuide/LimitationsOnEntities.html) in the *User Guide*.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Policy" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::IAM::Group" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GroupName" + ], + "definitions": { + "Policy": { + "additionalProperties": false, + "description": "Contains information about an attached policy.\n An attached policy is a managed policy that has been attached to a user, group, or role.\n For more information about managed policies, see [Managed Policies and Inline Policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *User Guide*.", + "properties": { + "PolicyDocument": { + "description": "The policy document.", + "type": [ + "string", + "object" + ] + }, + "PolicyName": { + "description": "The friendly name (not ARN) identifying the policy.", + "type": "string" + } + }, + "required": [ + "PolicyDocument", + "PolicyName" + ], + "type": "object" + } + }, + "description": "Creates a new group.\n For information about the number of groups you can create, see [Limitations on Entities](https://docs.aws.amazon.com/IAM/latest/UserGuide/LimitationsOnEntities.html) in the *User Guide*.", + "handlers": { + "create": { + "permissions": [ + "iam:CreateGroup", + "iam:PutGroupPolicy", + "iam:AttachGroupPolicy", + "iam:GetGroupPolicy", + "iam:GetGroup" + ] + }, + "delete": { + "permissions": [ + "iam:GetGroup", + "iam:DeleteGroup", + "iam:ListAttachedGroupPolicies", + "iam:ListGroupPolicies", + "iam:DetachGroupPolicy", + "iam:DeleteGroupPolicy", + "iam:GetGroupPolicy" + ] + }, + "list": { + "permissions": [ + "iam:ListGroups" + ] + }, + "read": { + "permissions": [ + "iam:GetGroup", + "iam:ListGroupPolicies", + "iam:GetGroupPolicy", + "iam:ListAttachedGroupPolicies" + ] + }, + "update": { + "permissions": [ + "iam:GetGroup", + "iam:UpdateGroup", + "iam:DetachGroupPolicy", + "iam:AttachGroupPolicy", + "iam:DeleteGroupPolicy", + "iam:PutGroupPolicy", + "iam:GetGroupPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/GroupName" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "GroupName": { + "description": "The name of the group to create. Do not include the path in this value.\n The group name must be unique within the account. Group names are not distinguished by case. For example, you cannot create groups named both \"ADMINS\" and \"admins\". If you don't specify a name, CFN generates a unique physical ID and uses that ID for the group name.\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.\n If you specify a name, you must specify the ``CAPABILITY_NAMED_IAM`` value to acknowledge your template's capabilities. For more information, see [Acknowledging Resources in Templates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#using-iam-capabilities).\n Naming an IAM resource can cause an unrecoverable error if you reuse the same template in multiple Regions. To prevent this, we recommend using ``Fn::Join`` and ``AWS::Region`` to create a Region-specific name, as in the following example: ``{\"Fn::Join\": [\"\", [{\"Ref\": \"AWS::Region\"}, {\"Ref\": \"MyResourceName\"}]]}``.", + "type": "string" + }, + "ManagedPolicyArns": { + "description": "The Amazon Resource Name (ARN) of the IAM policy you want to attach.\n For more information about ARNs, see [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the *General Reference*.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Path": { + "description": "The path to the group. For more information about paths, see [IAM identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) in the *IAM User Guide*.\n This parameter is optional. If it is not included, it defaults to a slash (/).\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes. In addition, it can contain any ASCII character from the ! (``\\u0021``) through the DEL character (``\\u007F``), including most punctuation characters, digits, and upper and lowercased letters.", + "type": "string" + }, + "Policies": { + "description": "Adds or updates an inline policy document that is embedded in the specified IAM group. To view AWS::IAM::Group snippets, see [Declaring an Group Resource](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-iam.html#scenario-iam-group).\n The name of each inline policy for a role, user, or group must be unique. If you don't choose unique names, updates to the IAM identity will fail. \n For information about limits on the number of inline policies that you can embed in a group, see [Limitations on Entities](https://docs.aws.amazon.com/IAM/latest/UserGuide/LimitationsOnEntities.html) in the *User Guide*.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Policy" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::IAM::Group" +} diff --git a/src/schema/aws-iam-grouppolicy.json b/src/schema/aws-iam-grouppolicy.json index b199186b..59b7d633 100644 --- a/src/schema/aws-iam-grouppolicy.json +++ b/src/schema/aws-iam-grouppolicy.json @@ -1,63 +1,63 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyName", - "/properties/GroupName" - ], - "description": "Adds or updates an inline policy document that is embedded in the specified IAM group.\n A group can also have managed policies attached to it. To attach a managed policy to a group, use [AWS::IAM::Group](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html). To create a new managed policy, use [AWS::IAM::ManagedPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html). For information about policies, see [Managed policies and inline policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *IAM User Guide*.\n For information about the maximum number of inline policies that you can embed in a group, see [IAM and quotas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) in the *IAM User Guide*.", - "handlers": { - "create": { - "permissions": [ - "iam:PutGroupPolicy", - "iam:GetGroupPolicy" - ] - }, - "delete": { - "permissions": [ - "iam:DeleteGroupPolicy", - "iam:GetGroupPolicy" - ] - }, - "read": { - "permissions": [ - "iam:GetGroupPolicy" - ] - }, - "update": { - "permissions": [ - "iam:PutGroupPolicy", - "iam:GetGroupPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/PolicyName", - "/properties/GroupName" - ], - "properties": { - "GroupName": { - "description": "The name of the group to associate the policy with.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-.", - "type": "string" - }, - "PolicyDocument": { - "description": "The policy document.\n You must provide policies in JSON format in IAM. However, for CFN templates formatted in YAML, you can provide the policy in JSON or YAML format. CFN always converts a YAML policy to JSON format before submitting it to IAM.\n The [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex) used to validate this parameter is a string of characters consisting of the following:\n + Any printable ASCII character ranging from the space character (``\\u0020``) through the end of the ASCII character range\n + The printable characters in the Basic Latin and Latin-1 Supplement character set (through ``\\u00FF``)\n + The special characters tab (``\\u0009``), line feed (``\\u000A``), and carriage return (``\\u000D``)", - "type": "object" - }, - "PolicyName": { - "description": "The name of the policy document.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", - "type": "string" - } - }, - "required": [ - "PolicyName", - "GroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::IAM::GroupPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyName", + "/properties/GroupName" + ], + "description": "Adds or updates an inline policy document that is embedded in the specified IAM group.\n A group can also have managed policies attached to it. To attach a managed policy to a group, use [AWS::IAM::Group](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html). To create a new managed policy, use [AWS::IAM::ManagedPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html). For information about policies, see [Managed policies and inline policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *IAM User Guide*.\n For information about the maximum number of inline policies that you can embed in a group, see [IAM and quotas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) in the *IAM User Guide*.", + "handlers": { + "create": { + "permissions": [ + "iam:PutGroupPolicy", + "iam:GetGroupPolicy" + ] + }, + "delete": { + "permissions": [ + "iam:DeleteGroupPolicy", + "iam:GetGroupPolicy" + ] + }, + "read": { + "permissions": [ + "iam:GetGroupPolicy" + ] + }, + "update": { + "permissions": [ + "iam:PutGroupPolicy", + "iam:GetGroupPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/PolicyName", + "/properties/GroupName" + ], + "properties": { + "GroupName": { + "description": "The name of the group to associate the policy with.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-.", + "type": "string" + }, + "PolicyDocument": { + "description": "The policy document.\n You must provide policies in JSON format in IAM. However, for CFN templates formatted in YAML, you can provide the policy in JSON or YAML format. CFN always converts a YAML policy to JSON format before submitting it to IAM.\n The [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex) used to validate this parameter is a string of characters consisting of the following:\n + Any printable ASCII character ranging from the space character (``\\u0020``) through the end of the ASCII character range\n + The printable characters in the Basic Latin and Latin-1 Supplement character set (through ``\\u00FF``)\n + The special characters tab (``\\u0009``), line feed (``\\u000A``), and carriage return (``\\u000D``)", + "type": "object" + }, + "PolicyName": { + "description": "The name of the policy document.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", + "type": "string" + } + }, + "required": [ + "PolicyName", + "GroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::IAM::GroupPolicy" +} diff --git a/src/schema/aws-iam-instanceprofile.json b/src/schema/aws-iam-instanceprofile.json index a921f461..d72a9be5 100644 --- a/src/schema/aws-iam-instanceprofile.json +++ b/src/schema/aws-iam-instanceprofile.json @@ -1,81 +1,81 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceProfileName", - "/properties/Path" - ], - "description": "Creates a new instance profile. For information about instance profiles, see [Using instance profiles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html).\n For information about the number of instance profiles you can create, see [object quotas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) in the *User Guide*.", - "handlers": { - "create": { - "permissions": [ - "iam:CreateInstanceProfile", - "iam:PassRole", - "iam:AddRoleToInstanceProfile", - "iam:GetInstanceProfile" - ] - }, - "delete": { - "permissions": [ - "iam:GetInstanceProfile", - "iam:RemoveRoleFromInstanceProfile", - "iam:DeleteInstanceProfile" - ] - }, - "list": { - "permissions": [ - "iam:ListInstanceProfiles" - ] - }, - "read": { - "permissions": [ - "iam:GetInstanceProfile" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "iam:RemoveRoleFromInstanceProfile", - "iam:AddRoleToInstanceProfile", - "iam:GetInstanceProfile" - ] - } - }, - "primaryIdentifier": [ - "/properties/InstanceProfileName" - ], - "properties": { - "Arn": { - "description": "", - "type": "string" - }, - "InstanceProfileName": { - "description": "The name of the instance profile to create.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", - "type": "string" - }, - "Path": { - "description": "The path to the instance profile. For more information about paths, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) in the *IAM User Guide*.\n This parameter is optional. If it is not included, it defaults to a slash (/).\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes. In addition, it can contain any ASCII character from the ! (``\\u0021``) through the DEL character (``\\u007F``), including most punctuation characters, digits, and upper and lowercased letters.", - "type": "string" - }, - "Roles": { - "description": "The name of the role to associate with the instance profile. Only one role can be assigned to an EC2 instance at a time, and all applications on the instance share the same role and permissions.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Roles" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags", - "taggable": false - }, - "typeName": "AWS::IAM::InstanceProfile" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceProfileName", + "/properties/Path" + ], + "description": "Creates a new instance profile. For information about instance profiles, see [Using instance profiles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html).\n For information about the number of instance profiles you can create, see [object quotas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) in the *User Guide*.", + "handlers": { + "create": { + "permissions": [ + "iam:CreateInstanceProfile", + "iam:PassRole", + "iam:AddRoleToInstanceProfile", + "iam:GetInstanceProfile" + ] + }, + "delete": { + "permissions": [ + "iam:GetInstanceProfile", + "iam:RemoveRoleFromInstanceProfile", + "iam:DeleteInstanceProfile" + ] + }, + "list": { + "permissions": [ + "iam:ListInstanceProfiles" + ] + }, + "read": { + "permissions": [ + "iam:GetInstanceProfile" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "iam:RemoveRoleFromInstanceProfile", + "iam:AddRoleToInstanceProfile", + "iam:GetInstanceProfile" + ] + } + }, + "primaryIdentifier": [ + "/properties/InstanceProfileName" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "InstanceProfileName": { + "description": "The name of the instance profile to create.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", + "type": "string" + }, + "Path": { + "description": "The path to the instance profile. For more information about paths, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) in the *IAM User Guide*.\n This parameter is optional. If it is not included, it defaults to a slash (/).\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes. In addition, it can contain any ASCII character from the ! (``\\u0021``) through the DEL character (``\\u007F``), including most punctuation characters, digits, and upper and lowercased letters.", + "type": "string" + }, + "Roles": { + "description": "The name of the role to associate with the instance profile. Only one role can be assigned to an EC2 instance at a time, and all applications on the instance share the same role and permissions.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Roles" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "taggable": false + }, + "typeName": "AWS::IAM::InstanceProfile" +} diff --git a/src/schema/aws-iam-managedpolicy.json b/src/schema/aws-iam-managedpolicy.json index dc798e2e..a1b1af46 100644 --- a/src/schema/aws-iam-managedpolicy.json +++ b/src/schema/aws-iam-managedpolicy.json @@ -1,163 +1,162 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ManagedPolicyName", - "/properties/Description", - "/properties/Path" - ], - "description": "Creates a new managed policy for your AWS-account.\n This operation creates a policy version with a version identifier of ``v1`` and sets v1 as the policy's default version. For more information about policy versions, see [Versioning for managed policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) in the *IAM User Guide*.\n As a best practice, you can validate your IAM policies. To learn more, see [Validating IAM policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_policy-validator.html) in the *IAM User Guide*.\n For more information about managed policies in general, see [Managed policies and inline policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *IAM User Guide*.", - "handlers": { - "create": { - "permissions": [ - "iam:CreatePolicy", - "iam:AttachGroupPolicy", - "iam:AttachUserPolicy", - "iam:AttachRolePolicy" - ] - }, - "delete": { - "permissions": [ - "iam:DetachRolePolicy", - "iam:GetPolicy", - "iam:ListPolicyVersions", - "iam:DetachGroupPolicy", - "iam:DetachUserPolicy", - "iam:DeletePolicyVersion", - "iam:DeletePolicy", - "iam:ListEntitiesForPolicy" - ] - }, - "list": { - "permissions": [ - "iam:ListPolicies" - ] - }, - "read": { - "permissions": [ - "iam:GetPolicy", - "iam:ListEntitiesForPolicy", - "iam:GetPolicyVersion" - ] - }, - "update": { - "permissions": [ - "iam:DetachRolePolicy", - "iam:GetPolicy", - "iam:ListPolicyVersions", - "iam:DetachGroupPolicy", - "iam:DetachUserPolicy", - "iam:CreatePolicyVersion", - "iam:DeletePolicyVersion", - "iam:AttachGroupPolicy", - "iam:AttachUserPolicy", - "iam:AttachRolePolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/PolicyArn" - ], - "properties": { - "AttachmentCount": { - "description": "", - "type": "integer" - }, - "CreateDate": { - "description": "", - "type": "string" - }, - "DefaultVersionId": { - "description": "", - "type": "string" - }, - "Description": { - "description": "A friendly description of the policy.\n Typically used to store information about the permissions defined in the policy. For example, \"Grants access to production DynamoDB tables.\"\n The policy description is immutable. After a value is assigned, it cannot be changed.", - "type": "string" - }, - "Groups": { - "description": "The name (friendly name, not ARN) of the group to attach the policy to.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "IsAttachable": { - "description": "", - "type": "boolean" - }, - "ManagedPolicyName": { - "description": "The friendly name of the policy.\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.\n If you specify a name, you must specify the ``CAPABILITY_NAMED_IAM`` value to acknowledge your template's capabilities. For more information, see [Acknowledging Resources in Templates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#using-iam-capabilities).\n Naming an IAM resource can cause an unrecoverable error if you reuse the same template in multiple Regions. To prevent this, we recommend using ``Fn::Join`` and ``AWS::Region`` to create a Region-specific name, as in the following example: ``{\"Fn::Join\": [\"\", [{\"Ref\": \"AWS::Region\"}, {\"Ref\": \"MyResourceName\"}]]}``.", - "type": "string" - }, - "Path": { - "default": "/", - "description": "The path for the policy.\n For more information about paths, see [IAM identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) in the *IAM User Guide*.\n This parameter is optional. If it is not included, it defaults to a slash (/).\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes. In addition, it can contain any ASCII character from the ! (``\\u0021``) through the DEL character (``\\u007F``), including most punctuation characters, digits, and upper and lowercased letters.\n You cannot use an asterisk (*) in the path name.", - "type": "string" - }, - "PermissionsBoundaryUsageCount": { - "description": "", - "type": "integer" - }, - "PolicyArn": { - "description": "", - "type": "string" - }, - "PolicyDocument": { - "description": "The JSON policy document that you want to use as the content for the new policy.\n You must provide policies in JSON format in IAM. However, for CFN templates formatted in YAML, you can provide the policy in JSON or YAML format. CFN always converts a YAML policy to JSON format before submitting it to IAM.\n The maximum length of the policy document that you can pass in this operation, including whitespace, is listed below. To view the maximum character counts of a managed policy with no whitespaces, see [IAM and character quotas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-entity-length).\n To learn more about JSON policy grammar, see [Grammar of the IAM JSON policy language](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html) in the *IAM User Guide*. \n The [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex) used to validate this parameter is a string of characters consisting of the following:\n + Any printable ASCII character ranging from the space character (``\\u0020``) through the end of the ASCII character range\n + The printable characters in the Basic Latin and Latin-1 Supplement character set (through ``\\u00FF``)\n + The special characters tab (``\\u0009``), line feed (``\\u000A``), and carriage return (``\\u000D``)", - "type": [ - "object", - "string" - ] - }, - "PolicyId": { - "description": "", - "type": "string" - }, - "Roles": { - "description": "The name (friendly name, not ARN) of the role to attach the policy to.\n This parameter allows (per its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-\n If an external policy (such as ``AWS::IAM::Policy`` or ``AWS::IAM::ManagedPolicy``) has a ``Ref`` to a role and if a resource (such as ``AWS::ECS::Service``) also has a ``Ref`` to the same role, add a ``DependsOn`` attribute to the resource to make the resource depend on the external policy. This dependency ensures that the role's policy is available throughout the resource's lifecycle. For example, when you delete a stack with an ``AWS::ECS::Service`` resource, the ``DependsOn`` attribute ensures that CFN deletes the ``AWS::ECS::Service`` resource before deleting its role's policy.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "UpdateDate": { - "description": "", - "type": "string" - }, - "Users": { - "description": "The name (friendly name, not ARN) of the IAM user to attach the policy to.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/PolicyArn", - "/properties/AttachmentCount", - "/properties/CreateDate", - "/properties/DefaultVersionId", - "/properties/IsAttachable", - "/properties/PermissionsBoundaryUsageCount", - "/properties/PolicyId", - "/properties/UpdateDate" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "PolicyDocument" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::IAM::ManagedPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ManagedPolicyName", + "/properties/Description", + "/properties/Path" + ], + "description": "Creates a new managed policy for your AWS-account.\n This operation creates a policy version with a version identifier of ``v1`` and sets v1 as the policy's default version. For more information about policy versions, see [Versioning for managed policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) in the *IAM User Guide*.\n As a best practice, you can validate your IAM policies. To learn more, see [Validating IAM policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_policy-validator.html) in the *IAM User Guide*.\n For more information about managed policies in general, see [Managed policies and inline policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *IAM User Guide*.", + "handlers": { + "create": { + "permissions": [ + "iam:CreatePolicy", + "iam:AttachGroupPolicy", + "iam:AttachUserPolicy", + "iam:AttachRolePolicy" + ] + }, + "delete": { + "permissions": [ + "iam:DetachRolePolicy", + "iam:GetPolicy", + "iam:ListPolicyVersions", + "iam:DetachGroupPolicy", + "iam:DetachUserPolicy", + "iam:DeletePolicyVersion", + "iam:DeletePolicy", + "iam:ListEntitiesForPolicy" + ] + }, + "list": { + "permissions": [ + "iam:ListPolicies" + ] + }, + "read": { + "permissions": [ + "iam:GetPolicy", + "iam:ListEntitiesForPolicy", + "iam:GetPolicyVersion" + ] + }, + "update": { + "permissions": [ + "iam:DetachRolePolicy", + "iam:GetPolicy", + "iam:ListPolicyVersions", + "iam:DetachGroupPolicy", + "iam:DetachUserPolicy", + "iam:CreatePolicyVersion", + "iam:DeletePolicyVersion", + "iam:AttachGroupPolicy", + "iam:AttachUserPolicy", + "iam:AttachRolePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/PolicyArn" + ], + "properties": { + "AttachmentCount": { + "description": "", + "type": "integer" + }, + "CreateDate": { + "description": "", + "type": "string" + }, + "DefaultVersionId": { + "description": "", + "type": "string" + }, + "Description": { + "description": "A friendly description of the policy.\n Typically used to store information about the permissions defined in the policy. For example, \"Grants access to production DynamoDB tables.\"\n The policy description is immutable. After a value is assigned, it cannot be changed.", + "type": "string" + }, + "Groups": { + "description": "The name (friendly name, not ARN) of the group to attach the policy to.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "IsAttachable": { + "description": "", + "type": "boolean" + }, + "ManagedPolicyName": { + "description": "The friendly name of the policy.\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.\n If you specify a name, you must specify the ``CAPABILITY_NAMED_IAM`` value to acknowledge your template's capabilities. For more information, see [Acknowledging Resources in Templates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#using-iam-capabilities).\n Naming an IAM resource can cause an unrecoverable error if you reuse the same template in multiple Regions. To prevent this, we recommend using ``Fn::Join`` and ``AWS::Region`` to create a Region-specific name, as in the following example: ``{\"Fn::Join\": [\"\", [{\"Ref\": \"AWS::Region\"}, {\"Ref\": \"MyResourceName\"}]]}``.", + "type": "string" + }, + "Path": { + "default": "/", + "description": "The path for the policy.\n For more information about paths, see [IAM identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) in the *IAM User Guide*.\n This parameter is optional. If it is not included, it defaults to a slash (/).\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes. In addition, it can contain any ASCII character from the ! (``\\u0021``) through the DEL character (``\\u007F``), including most punctuation characters, digits, and upper and lowercased letters.\n You cannot use an asterisk (*) in the path name.", + "type": "string" + }, + "PermissionsBoundaryUsageCount": { + "description": "", + "type": "integer" + }, + "PolicyArn": { + "description": "", + "type": "string" + }, + "PolicyDocument": { + "description": "The JSON policy document that you want to use as the content for the new policy.\n You must provide policies in JSON format in IAM. However, for CFN templates formatted in YAML, you can provide the policy in JSON or YAML format. CFN always converts a YAML policy to JSON format before submitting it to IAM.\n The maximum length of the policy document that you can pass in this operation, including whitespace, is listed below. To view the maximum character counts of a managed policy with no whitespaces, see [IAM and character quotas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-entity-length).\n To learn more about JSON policy grammar, see [Grammar of the IAM JSON policy language](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html) in the *IAM User Guide*. \n The [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex) used to validate this parameter is a string of characters consisting of the following:\n + Any printable ASCII character ranging from the space character (``\\u0020``) through the end of the ASCII character range\n + The printable characters in the Basic Latin and Latin-1 Supplement character set (through ``\\u00FF``)\n + The special characters tab (``\\u0009``), line feed (``\\u000A``), and carriage return (``\\u000D``)", + "type": [ + "object", + "string" + ] + }, + "PolicyId": { + "description": "", + "type": "string" + }, + "Roles": { + "description": "The name (friendly name, not ARN) of the role to attach the policy to.\n This parameter allows (per its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-\n If an external policy (such as ``AWS::IAM::Policy`` or ``AWS::IAM::ManagedPolicy``) has a ``Ref`` to a role and if a resource (such as ``AWS::ECS::Service``) also has a ``Ref`` to the same role, add a ``DependsOn`` attribute to the resource to make the resource depend on the external policy. This dependency ensures that the role's policy is available throughout the resource's lifecycle. For example, when you delete a stack with an ``AWS::ECS::Service`` resource, the ``DependsOn`` attribute ensures that CFN deletes the ``AWS::ECS::Service`` resource before deleting its role's policy.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "UpdateDate": { + "description": "", + "type": "string" + }, + "Users": { + "description": "The name (friendly name, not ARN) of the IAM user to attach the policy to.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/PolicyArn", + "/properties/AttachmentCount", + "/properties/CreateDate", + "/properties/DefaultVersionId", + "/properties/IsAttachable", + "/properties/PermissionsBoundaryUsageCount", + "/properties/PolicyId", + "/properties/UpdateDate" + ], + "required": [ + "PolicyDocument" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::IAM::ManagedPolicy" +} diff --git a/src/schema/aws-iam-oidcprovider.json b/src/schema/aws-iam-oidcprovider.json index 961f42f6..b0e736d3 100644 --- a/src/schema/aws-iam-oidcprovider.json +++ b/src/schema/aws-iam-oidcprovider.json @@ -1,128 +1,128 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Url" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::IAM::OIDCProvider", - "handlers": { - "create": { - "permissions": [ - "iam:CreateOpenIDConnectProvider", - "iam:TagOpenIDConnectProvider", - "iam:GetOpenIDConnectProvider" - ] - }, - "delete": { - "permissions": [ - "iam:DeleteOpenIDConnectProvider" - ] - }, - "list": { - "permissions": [ - "iam:ListOpenIDConnectProvider", - "iam:GetOpenIDConnectProvider" - ] - }, - "read": { - "permissions": [ - "iam:GetOpenIDConnectProvider" - ] - }, - "update": { - "permissions": [ - "iam:UpdateOpenIDConnectProviderThumbprint", - "iam:RemoveClientIDFromOpenIDConnectProvider", - "iam:AddClientIDToOpenIDConnectProvider", - "iam:GetOpenIDConnectProvider", - "iam:TagOpenIDConnectProvider", - "iam:UntagOpenIDConnectProvider", - "iam:ListOpenIDConnectProviderTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Amazon Resource Name (ARN) of the OIDC provider", - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "ClientIdList": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "ThumbprintList": { - "insertionOrder": false, - "items": { - "maxLength": 40, - "minLength": 40, - "pattern": "[0-9A-Fa-f]{40}", - "type": "string" - }, - "maxItems": 5, - "type": "array" - }, - "Url": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "iam:TagOpenIDConnectProvider", - "iam:UntagOpenIDConnectProvider", - "iam:ListOpenIDConnectProviderTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IAM::OIDCProvider" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Url" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::IAM::OIDCProvider", + "handlers": { + "create": { + "permissions": [ + "iam:CreateOpenIDConnectProvider", + "iam:TagOpenIDConnectProvider", + "iam:GetOpenIDConnectProvider" + ] + }, + "delete": { + "permissions": [ + "iam:DeleteOpenIDConnectProvider" + ] + }, + "list": { + "permissions": [ + "iam:ListOpenIDConnectProviders", + "iam:GetOpenIDConnectProvider" + ] + }, + "read": { + "permissions": [ + "iam:GetOpenIDConnectProvider" + ] + }, + "update": { + "permissions": [ + "iam:UpdateOpenIDConnectProviderThumbprint", + "iam:RemoveClientIDFromOpenIDConnectProvider", + "iam:AddClientIDToOpenIDConnectProvider", + "iam:GetOpenIDConnectProvider", + "iam:TagOpenIDConnectProvider", + "iam:UntagOpenIDConnectProvider", + "iam:ListOpenIDConnectProviderTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Amazon Resource Name (ARN) of the OIDC provider", + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "ClientIdList": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "type": "array" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "ThumbprintList": { + "insertionOrder": false, + "items": { + "maxLength": 40, + "minLength": 40, + "pattern": "[0-9A-Fa-f]{40}", + "type": "string" + }, + "maxItems": 5, + "type": "array" + }, + "Url": { + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "iam:TagOpenIDConnectProvider", + "iam:UntagOpenIDConnectProvider", + "iam:ListOpenIDConnectProviderTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IAM::OIDCProvider" +} diff --git a/src/schema/aws-iam-policy.json b/src/schema/aws-iam-policy.json index e5c89c17..57299cba 100644 --- a/src/schema/aws-iam-policy.json +++ b/src/schema/aws-iam-policy.json @@ -1,97 +1,97 @@ -{ - "additionalProperties": false, - "description": "Adds or updates an inline policy document that is embedded in the specified IAM group, user or role.\n An IAM user can also have a managed policy attached to it. For information about policies, see [Managed Policies and Inline Policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *User Guide*.\n The Groups, Roles, and Users properties are optional. However, you must specify at least one of these properties.\n For information about policy documents see [Creating policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) in the *User Guide*.\n For information about limits on the number of inline policies that you can embed in an identity, see [Limitations on Entities](https://docs.aws.amazon.com/IAM/latest/UserGuide/LimitationsOnEntities.html) in the *User Guide*.\n This resource does not support [drift detection](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html). The following inline policy resource types support drift detection:\n + [AWS::IAM::GroupPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-grouppolicy.html) \n + [AWS::IAM::RolePolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-rolepolicy.html) \n + [AWS::IAM::UserPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-userpolicy.html)", - "handlers": { - "create": { - "permissions": [ - "iam:GetUserPolicy", - "iam:GetRolePolicy", - "iam:GetGroupPolicy", - "iam:PutUserPolicy", - "iam:PutRolePolicy", - "iam:PutGroupPolicy" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "iam:DeleteRolePolicy", - "iam:DeleteUserPolicy", - "iam:DeleteGroupPolicy" - ], - "timeoutInMinutes": 2160 - }, - "update": { - "permissions": [ - "iam:PutUserPolicy", - "iam:PutRolePolicy", - "iam:PutGroupPolicy", - "iam:DeleteRolePolicy", - "iam:DeleteUserPolicy", - "iam:DeleteGroupPolicy" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Groups": { - "description": "The name of the group to associate the policy with.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "description": "", - "type": "string" - }, - "PolicyDocument": { - "description": "The policy document.\n You must provide policies in JSON format in IAM. However, for CFN templates formatted in YAML, you can provide the policy in JSON or YAML format. CFN always converts a YAML policy to JSON format before submitting it to IAM.\n The [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex) used to validate this parameter is a string of characters consisting of the following:\n + Any printable ASCII character ranging from the space character (``\\u0020``) through the end of the ASCII character range\n + The printable characters in the Basic Latin and Latin-1 Supplement character set (through ``\\u00FF``)\n + The special characters tab (``\\u0009``), line feed (``\\u000A``), and carriage return (``\\u000D``)", - "maxLength": 131072, - "minLength": 1, - "type": [ - "object", - "string" - ] - }, - "PolicyName": { - "description": "The name of the policy document.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Roles": { - "description": "The name of the role to associate the policy with.\n This parameter allows (per its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-\n If an external policy (such as ``AWS::IAM::Policy`` or ``AWS::IAM::ManagedPolicy``) has a ``Ref`` to a role and if a resource (such as ``AWS::ECS::Service``) also has a ``Ref`` to the same role, add a ``DependsOn`` attribute to the resource to make the resource depend on the external policy. This dependency ensures that the role's policy is available throughout the resource's lifecycle. For example, when you delete a stack with an ``AWS::ECS::Service`` resource, the ``DependsOn`` attribute ensures that CFN deletes the ``AWS::ECS::Service`` resource before deleting its role's policy.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Users": { - "description": "The name of the user to associate the policy with.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "PolicyDocument", - "PolicyName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam.git", - "taggable": false, - "typeName": "AWS::IAM::Policy" -} +{ + "additionalProperties": false, + "description": "Adds or updates an inline policy document that is embedded in the specified IAM group, user or role.\n An IAM user can also have a managed policy attached to it. For information about policies, see [Managed Policies and Inline Policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *User Guide*.\n The Groups, Roles, and Users properties are optional. However, you must specify at least one of these properties.\n For information about policy documents see [Creating policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) in the *User Guide*.\n For information about limits on the number of inline policies that you can embed in an identity, see [Limitations on Entities](https://docs.aws.amazon.com/IAM/latest/UserGuide/LimitationsOnEntities.html) in the *User Guide*.\n This resource does not support [drift detection](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html). The following inline policy resource types support drift detection:\n + [AWS::IAM::GroupPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-grouppolicy.html) \n + [AWS::IAM::RolePolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-rolepolicy.html) \n + [AWS::IAM::UserPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-userpolicy.html)", + "handlers": { + "create": { + "permissions": [ + "iam:GetUserPolicy", + "iam:GetRolePolicy", + "iam:GetGroupPolicy", + "iam:PutUserPolicy", + "iam:PutRolePolicy", + "iam:PutGroupPolicy" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "iam:DeleteRolePolicy", + "iam:DeleteUserPolicy", + "iam:DeleteGroupPolicy" + ], + "timeoutInMinutes": 2160 + }, + "update": { + "permissions": [ + "iam:PutUserPolicy", + "iam:PutRolePolicy", + "iam:PutGroupPolicy", + "iam:DeleteRolePolicy", + "iam:DeleteUserPolicy", + "iam:DeleteGroupPolicy" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Groups": { + "description": "The name of the group to associate the policy with.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "description": "", + "type": "string" + }, + "PolicyDocument": { + "description": "The policy document.\n You must provide policies in JSON format in IAM. However, for CFN templates formatted in YAML, you can provide the policy in JSON or YAML format. CFN always converts a YAML policy to JSON format before submitting it to IAM.\n The [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex) used to validate this parameter is a string of characters consisting of the following:\n + Any printable ASCII character ranging from the space character (``\\u0020``) through the end of the ASCII character range\n + The printable characters in the Basic Latin and Latin-1 Supplement character set (through ``\\u00FF``)\n + The special characters tab (``\\u0009``), line feed (``\\u000A``), and carriage return (``\\u000D``)", + "maxLength": 131072, + "minLength": 1, + "type": [ + "object", + "string" + ] + }, + "PolicyName": { + "description": "The name of the policy document.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Roles": { + "description": "The name of the role to associate the policy with.\n This parameter allows (per its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-\n If an external policy (such as ``AWS::IAM::Policy`` or ``AWS::IAM::ManagedPolicy``) has a ``Ref`` to a role and if a resource (such as ``AWS::ECS::Service``) also has a ``Ref`` to the same role, add a ``DependsOn`` attribute to the resource to make the resource depend on the external policy. This dependency ensures that the role's policy is available throughout the resource's lifecycle. For example, when you delete a stack with an ``AWS::ECS::Service`` resource, the ``DependsOn`` attribute ensures that CFN deletes the ``AWS::ECS::Service`` resource before deleting its role's policy.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Users": { + "description": "The name of the user to associate the policy with.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "PolicyDocument", + "PolicyName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam.git", + "taggable": false, + "typeName": "AWS::IAM::Policy" +} diff --git a/src/schema/aws-iam-role.json b/src/schema/aws-iam-role.json index 71040e92..3fe7dc96 100644 --- a/src/schema/aws-iam-role.json +++ b/src/schema/aws-iam-role.json @@ -1,189 +1,194 @@ -{ - "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/master/src/main/resources/schema/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Path", - "/properties/RoleName" - ], - "definitions": { - "Policy": { - "additionalProperties": false, - "description": "Contains information about an attached policy.\n An attached policy is a managed policy that has been attached to a user, group, or role.\n For more information about managed policies, refer to [Managed Policies and Inline Policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *User Guide*.", - "properties": { - "PolicyDocument": { - "description": "The entire contents of the policy that defines permissions. For more information, see [Overview of JSON policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json).", - "type": [ - "string", - "object" - ] - }, - "PolicyName": { - "description": "The friendly name (not ARN) identifying the policy.", - "type": "string" - } - }, - "required": [ - "PolicyName", - "PolicyDocument" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A structure that represents user-provided metadata that can be associated with an IAM resource. For more information about tagging, see [Tagging IAM resources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) in the *IAM User Guide*.", - "properties": { - "Key": { - "description": "The key name that can be used to look up or retrieve the associated value. For example, ``Department`` or ``Cost Center`` are common choices.", - "type": "string" - }, - "Value": { - "description": "The value associated with this tag. For example, tags with a key name of ``Department`` could have values such as ``Human Resources``, ``Accounting``, and ``Support``. Tags with a key name of ``Cost Center`` might have values that consist of the number associated with the different cost centers in your company. Typically, many resources have tags with the same key name but with different values.\n AWS always interprets the tag ``Value`` as a single string. If you need to store an array, you can store comma-separated values in the string. However, you must interpret the value in your code.", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Creates a new role for your AWS-account.\n For more information about roles, see [IAM roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) in the *IAM User Guide*. For information about quotas for role names and the number of roles you can create, see [IAM and quotas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) in the *IAM User Guide*.", - "handlers": { - "create": { - "permissions": [ - "iam:CreateRole", - "iam:PutRolePolicy", - "iam:AttachRolePolicy", - "iam:GetRolePolicy", - "iam:TagRole", - "iam:UntagRole", - "iam:GetRole" - ] - }, - "delete": { - "permissions": [ - "iam:DeleteRole", - "iam:DetachRolePolicy", - "iam:DeleteRolePolicy", - "iam:GetRole", - "iam:ListAttachedRolePolicies", - "iam:ListRolePolicies", - "iam:TagRole", - "iam:UntagRole" - ] - }, - "list": { - "permissions": [ - "iam:ListRoles" - ] - }, - "read": { - "permissions": [ - "iam:GetRole", - "iam:ListAttachedRolePolicies", - "iam:ListRolePolicies", - "iam:GetRolePolicy" - ] - }, - "update": { - "permissions": [ - "iam:UpdateRole", - "iam:UpdateRoleDescription", - "iam:UpdateAssumeRolePolicy", - "iam:DetachRolePolicy", - "iam:AttachRolePolicy", - "iam:DeleteRolePermissionsBoundary", - "iam:PutRolePermissionsBoundary", - "iam:DeleteRolePolicy", - "iam:PutRolePolicy", - "iam:TagRole", - "iam:UntagRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/RoleName" - ], - "properties": { - "Arn": { - "description": "", - "type": "string" - }, - "AssumeRolePolicyDocument": { - "description": "The trust policy that is associated with this role. Trust policies define which entities can assume the role. You can associate only one trust policy with a role. For an example of a policy that can be used to assume a role, see [Template Examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#aws-resource-iam-role--examples). For more information about the elements that you can use in an IAM policy, see [Policy Elements Reference](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) in the *User Guide*.", - "type": [ - "object", - "string" - ] - }, - "Description": { - "description": "A description of the role that you provide.", - "type": "string" - }, - "ManagedPolicyArns": { - "description": "A list of Amazon Resource Names (ARNs) of the IAM managed policies that you want to attach to the role.\n For more information about ARNs, see [Amazon Resource Names (ARNs) and Service Namespaces](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the *General Reference*.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "MaxSessionDuration": { - "description": "The maximum session duration (in seconds) that you want to set for the specified role. If you do not specify a value for this setting, the default value of one hour is applied. This setting can have a value from 1 hour to 12 hours.\n Anyone who assumes the role from the CLI or API can use the ``DurationSeconds`` API parameter or the ``duration-seconds`` CLI parameter to request a longer session. The ``MaxSessionDuration`` setting determines the maximum duration that can be requested using the ``DurationSeconds`` parameter. If users don't specify a value for the ``DurationSeconds`` parameter, their security credentials are valid for one hour by default. This applies when you use the ``AssumeRole*`` API operations or the ``assume-role*`` CLI operations but does not apply when you use those operations to create a console URL. For more information, see [Using IAM roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) in the *IAM User Guide*.", - "type": "integer" - }, - "Path": { - "default": "/", - "description": "The path to the role. For more information about paths, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) in the *IAM User Guide*.\n This parameter is optional. If it is not included, it defaults to a slash (/).\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes. In addition, it can contain any ASCII character from the ! (``\\u0021``) through the DEL character (``\\u007F``), including most punctuation characters, digits, and upper and lowercased letters.", - "type": "string" - }, - "PermissionsBoundary": { - "description": "The ARN of the policy used to set the permissions boundary for the role.\n For more information about permissions boundaries, see [Permissions boundaries for IAM identities](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) in the *IAM User Guide*.", - "type": "string" - }, - "Policies": { - "description": "Adds or updates an inline policy document that is embedded in the specified IAM role.\n When you embed an inline policy in a role, the inline policy is used as part of the role's access (permissions) policy. The role's trust policy is created at the same time as the role. You can update a role's trust policy later. For more information about IAM roles, go to [Using Roles to Delegate Permissions and Federate Identities](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-toplevel.html).\n A role can also have an attached managed policy. For information about policies, see [Managed Policies and Inline Policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *User Guide*.\n For information about limits on the number of inline policies that you can embed with a role, see [Limitations on Entities](https://docs.aws.amazon.com/IAM/latest/UserGuide/LimitationsOnEntities.html) in the *User Guide*.\n If an external policy (such as ``AWS::IAM::Policy`` or ``AWS::IAM::ManagedPolicy``) has a ``Ref`` to a role and if a resource (such as ``AWS::ECS::Service``) also has a ``Ref`` to the same role, add a ``DependsOn`` attribute to the resource to make the resource depend on the external policy. This dependency ensures that the role's policy is available throughout the resource's lifecycle. For example, when you delete a stack with an ``AWS::ECS::Service`` resource, the ``DependsOn`` attribute ensures that CFN deletes the ``AWS::ECS::Service`` resource before deleting its role's policy.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Policy" - }, - "type": "array", - "uniqueItems": false - }, - "RoleId": { - "description": "", - "type": "string" - }, - "RoleName": { - "description": "A name for the IAM role, up to 64 characters in length. For valid values, see the ``RoleName`` parameter for the [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html) action in the *User Guide*.\n This parameter allows (per its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-. The role name must be unique within the account. Role names are not distinguished by case. For example, you cannot create roles named both \"Role1\" and \"role1\".\n If you don't specify a name, CFN generates a unique physical ID and uses that ID for the role name.\n If you specify a name, you must specify the ``CAPABILITY_NAMED_IAM`` value to acknowledge your template's capabilities. For more information, see [Acknowledging Resources in Templates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#using-iam-capabilities).\n Naming an IAM resource can cause an unrecoverable error if you reuse the same template in multiple Regions. To prevent this, we recommend using ``Fn::Join`` and ``AWS::Region`` to create a Region-specific name, as in the following example: ``{\"Fn::Join\": [\"\", [{\"Ref\": \"AWS::Region\"}, {\"Ref\": \"MyResourceName\"}]]}``.", - "type": "string" - }, - "Tags": { - "description": "A list of tags that are attached to the role. For more information about tagging, see [Tagging IAM resources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) in the *IAM User Guide*.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/RoleId" - ], - "required": [ - "AssumeRolePolicyDocument" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IAM::Role" -} +{ + "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/master/src/main/resources/schema/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Path", + "/properties/RoleName" + ], + "definitions": { + "Policy": { + "additionalProperties": false, + "description": "Contains information about an attached policy.\n An attached policy is a managed policy that has been attached to a user, group, or role.\n For more information about managed policies, refer to [Managed Policies and Inline Policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *User Guide*.", + "properties": { + "PolicyDocument": { + "description": "The entire contents of the policy that defines permissions. For more information, see [Overview of JSON policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json).", + "type": [ + "string", + "object" + ] + }, + "PolicyName": { + "description": "The friendly name (not ARN) identifying the policy.", + "type": "string" + } + }, + "required": [ + "PolicyName", + "PolicyDocument" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A structure that represents user-provided metadata that can be associated with an IAM resource. For more information about tagging, see [Tagging IAM resources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) in the *IAM User Guide*.", + "properties": { + "Key": { + "description": "The key name that can be used to look up or retrieve the associated value. For example, ``Department`` or ``Cost Center`` are common choices.", + "type": "string" + }, + "Value": { + "description": "The value associated with this tag. For example, tags with a key name of ``Department`` could have values such as ``Human Resources``, ``Accounting``, and ``Support``. Tags with a key name of ``Cost Center`` might have values that consist of the number associated with the different cost centers in your company. Typically, many resources have tags with the same key name but with different values.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Creates a new role for your AWS-account.\n For more information about roles, see [IAM roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) in the *IAM User Guide*. For information about quotas for role names and the number of roles you can create, see [IAM and quotas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) in the *IAM User Guide*.", + "handlers": { + "create": { + "permissions": [ + "iam:CreateRole", + "iam:PutRolePolicy", + "iam:AttachRolePolicy", + "iam:GetRolePolicy", + "iam:TagRole", + "iam:UntagRole", + "iam:GetRole" + ] + }, + "delete": { + "permissions": [ + "iam:DeleteRole", + "iam:DetachRolePolicy", + "iam:DeleteRolePolicy", + "iam:GetRole", + "iam:ListAttachedRolePolicies", + "iam:ListRolePolicies", + "iam:TagRole", + "iam:UntagRole" + ] + }, + "list": { + "permissions": [ + "iam:ListRoles" + ] + }, + "read": { + "permissions": [ + "iam:GetRole", + "iam:ListAttachedRolePolicies", + "iam:ListRolePolicies", + "iam:GetRolePolicy" + ] + }, + "update": { + "permissions": [ + "iam:UpdateRole", + "iam:UpdateRoleDescription", + "iam:UpdateAssumeRolePolicy", + "iam:DetachRolePolicy", + "iam:AttachRolePolicy", + "iam:DeleteRolePermissionsBoundary", + "iam:PutRolePermissionsBoundary", + "iam:DeleteRolePolicy", + "iam:PutRolePolicy", + "iam:TagRole", + "iam:UntagRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/RoleName" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "AssumeRolePolicyDocument": { + "description": "The trust policy that is associated with this role. Trust policies define which entities can assume the role. You can associate only one trust policy with a role. For an example of a policy that can be used to assume a role, see [Template Examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#aws-resource-iam-role--examples). For more information about the elements that you can use in an IAM policy, see [Policy Elements Reference](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) in the *User Guide*.", + "type": [ + "object", + "string" + ] + }, + "Description": { + "description": "A description of the role that you provide.", + "type": "string" + }, + "ManagedPolicyArns": { + "description": "A list of Amazon Resource Names (ARNs) of the IAM managed policies that you want to attach to the role.\n For more information about ARNs, see [Amazon Resource Names (ARNs) and Service Namespaces](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the *General Reference*.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "MaxSessionDuration": { + "description": "The maximum session duration (in seconds) that you want to set for the specified role. If you do not specify a value for this setting, the default value of one hour is applied. This setting can have a value from 1 hour to 12 hours.\n Anyone who assumes the role from the CLI or API can use the ``DurationSeconds`` API parameter or the ``duration-seconds`` CLI parameter to request a longer session. The ``MaxSessionDuration`` setting determines the maximum duration that can be requested using the ``DurationSeconds`` parameter. If users don't specify a value for the ``DurationSeconds`` parameter, their security credentials are valid for one hour by default. This applies when you use the ``AssumeRole*`` API operations or the ``assume-role*`` CLI operations but does not apply when you use those operations to create a console URL. For more information, see [Using IAM roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) in the *IAM User Guide*.", + "type": "integer" + }, + "Path": { + "default": "/", + "description": "The path to the role. For more information about paths, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) in the *IAM User Guide*.\n This parameter is optional. If it is not included, it defaults to a slash (/).\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes. In addition, it can contain any ASCII character from the ! (``\\u0021``) through the DEL character (``\\u007F``), including most punctuation characters, digits, and upper and lowercased letters.", + "type": "string" + }, + "PermissionsBoundary": { + "description": "The ARN of the policy used to set the permissions boundary for the role.\n For more information about permissions boundaries, see [Permissions boundaries for IAM identities](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) in the *IAM User Guide*.", + "type": "string" + }, + "Policies": { + "description": "Adds or updates an inline policy document that is embedded in the specified IAM role.\n When you embed an inline policy in a role, the inline policy is used as part of the role's access (permissions) policy. The role's trust policy is created at the same time as the role. You can update a role's trust policy later. For more information about IAM roles, go to [Using Roles to Delegate Permissions and Federate Identities](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-toplevel.html).\n A role can also have an attached managed policy. For information about policies, see [Managed Policies and Inline Policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *User Guide*.\n For information about limits on the number of inline policies that you can embed with a role, see [Limitations on Entities](https://docs.aws.amazon.com/IAM/latest/UserGuide/LimitationsOnEntities.html) in the *User Guide*.\n If an external policy (such as ``AWS::IAM::Policy`` or ``AWS::IAM::ManagedPolicy``) has a ``Ref`` to a role and if a resource (such as ``AWS::ECS::Service``) also has a ``Ref`` to the same role, add a ``DependsOn`` attribute to the resource to make the resource depend on the external policy. This dependency ensures that the role's policy is available throughout the resource's lifecycle. For example, when you delete a stack with an ``AWS::ECS::Service`` resource, the ``DependsOn`` attribute ensures that CFN deletes the ``AWS::ECS::Service`` resource before deleting its role's policy.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Policy" + }, + "type": "array", + "uniqueItems": false + }, + "RoleId": { + "description": "", + "type": "string" + }, + "RoleName": { + "description": "A name for the IAM role, up to 64 characters in length. For valid values, see the ``RoleName`` parameter for the [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html) action in the *User Guide*.\n This parameter allows (per its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-. The role name must be unique within the account. Role names are not distinguished by case. For example, you cannot create roles named both \"Role1\" and \"role1\".\n If you don't specify a name, CFN generates a unique physical ID and uses that ID for the role name.\n If you specify a name, you must specify the ``CAPABILITY_NAMED_IAM`` value to acknowledge your template's capabilities. For more information, see [Acknowledging Resources in Templates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#using-iam-capabilities).\n Naming an IAM resource can cause an unrecoverable error if you reuse the same template in multiple Regions. To prevent this, we recommend using ``Fn::Join`` and ``AWS::Region`` to create a Region-specific name, as in the following example: ``{\"Fn::Join\": [\"\", [{\"Ref\": \"AWS::Region\"}, {\"Ref\": \"MyResourceName\"}]]}``.", + "type": "string" + }, + "Tags": { + "description": "A list of tags that are attached to the role. For more information about tagging, see [Tagging IAM resources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) in the *IAM User Guide*.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/RoleId" + ], + "required": [ + "AssumeRolePolicyDocument" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "iam:TagRole", + "iam:UntagRole", + "iam:ListRoleTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IAM::Role" +} diff --git a/src/schema/aws-iam-rolepolicy.json b/src/schema/aws-iam-rolepolicy.json index aa3b32df..9bdc2e14 100644 --- a/src/schema/aws-iam-rolepolicy.json +++ b/src/schema/aws-iam-rolepolicy.json @@ -1,63 +1,63 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyName", - "/properties/RoleName" - ], - "description": "Adds or updates an inline policy document that is embedded in the specified IAM role.\n When you embed an inline policy in a role, the inline policy is used as part of the role's access (permissions) policy. The role's trust policy is created at the same time as the role, using [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html). You can update a role's trust policy using [UpdateAssumeRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAssumeRolePolicy.html). For information about roles, see [roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-toplevel.html) in the *IAM User Guide*.\n A role can also have a managed policy attached to it. To attach a managed policy to a role, use [AWS::IAM::Role](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html). To create a new managed policy, use [AWS::IAM::ManagedPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html). For information about policies, see [Managed policies and inline policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *IAM User Guide*.\n For information about the maximum number of inline policies that you can embed with a role, see [IAM and quotas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) in the *IAM User Guide*.", - "handlers": { - "create": { - "permissions": [ - "iam:PutRolePolicy", - "iam:GetRolePolicy" - ] - }, - "delete": { - "permissions": [ - "iam:DeleteRolePolicy", - "iam:GetRolePolicy" - ] - }, - "read": { - "permissions": [ - "iam:GetRolePolicy" - ] - }, - "update": { - "permissions": [ - "iam:PutRolePolicy", - "iam:GetRolePolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/PolicyName", - "/properties/RoleName" - ], - "properties": { - "PolicyDocument": { - "description": "The policy document.\n You must provide policies in JSON format in IAM. However, for CFN templates formatted in YAML, you can provide the policy in JSON or YAML format. CFN always converts a YAML policy to JSON format before submitting it to IAM.\n The [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex) used to validate this parameter is a string of characters consisting of the following:\n + Any printable ASCII character ranging from the space character (``\\u0020``) through the end of the ASCII character range\n + The printable characters in the Basic Latin and Latin-1 Supplement character set (through ``\\u00FF``)\n + The special characters tab (``\\u0009``), line feed (``\\u000A``), and carriage return (``\\u000D``)", - "type": "object" - }, - "PolicyName": { - "description": "The name of the policy document.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", - "type": "string" - }, - "RoleName": { - "description": "The name of the role to associate the policy with.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", - "type": "string" - } - }, - "required": [ - "PolicyName", - "RoleName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::IAM::RolePolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyName", + "/properties/RoleName" + ], + "description": "Adds or updates an inline policy document that is embedded in the specified IAM role.\n When you embed an inline policy in a role, the inline policy is used as part of the role's access (permissions) policy. The role's trust policy is created at the same time as the role, using [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html). You can update a role's trust policy using [UpdateAssumeRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAssumeRolePolicy.html). For information about roles, see [roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-toplevel.html) in the *IAM User Guide*.\n A role can also have a managed policy attached to it. To attach a managed policy to a role, use [AWS::IAM::Role](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html). To create a new managed policy, use [AWS::IAM::ManagedPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html). For information about policies, see [Managed policies and inline policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *IAM User Guide*.\n For information about the maximum number of inline policies that you can embed with a role, see [IAM and quotas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) in the *IAM User Guide*.", + "handlers": { + "create": { + "permissions": [ + "iam:PutRolePolicy", + "iam:GetRolePolicy" + ] + }, + "delete": { + "permissions": [ + "iam:DeleteRolePolicy", + "iam:GetRolePolicy" + ] + }, + "read": { + "permissions": [ + "iam:GetRolePolicy" + ] + }, + "update": { + "permissions": [ + "iam:PutRolePolicy", + "iam:GetRolePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/PolicyName", + "/properties/RoleName" + ], + "properties": { + "PolicyDocument": { + "description": "The policy document.\n You must provide policies in JSON format in IAM. However, for CFN templates formatted in YAML, you can provide the policy in JSON or YAML format. CFN always converts a YAML policy to JSON format before submitting it to IAM.\n The [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex) used to validate this parameter is a string of characters consisting of the following:\n + Any printable ASCII character ranging from the space character (``\\u0020``) through the end of the ASCII character range\n + The printable characters in the Basic Latin and Latin-1 Supplement character set (through ``\\u00FF``)\n + The special characters tab (``\\u0009``), line feed (``\\u000A``), and carriage return (``\\u000D``)", + "type": "object" + }, + "PolicyName": { + "description": "The name of the policy document.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", + "type": "string" + }, + "RoleName": { + "description": "The name of the role to associate the policy with.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", + "type": "string" + } + }, + "required": [ + "PolicyName", + "RoleName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::IAM::RolePolicy" +} diff --git a/src/schema/aws-iam-samlprovider.json b/src/schema/aws-iam-samlprovider.json index fdd79a8d..1ee28824 100644 --- a/src/schema/aws-iam-samlprovider.json +++ b/src/schema/aws-iam-samlprovider.json @@ -1,115 +1,179 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::IAM::SAMLProvider", - "handlers": { - "create": { - "permissions": [ - "iam:CreateSAMLProvider", - "iam:GetSAMLProvider", - "iam:TagSAMLProvider" - ] - }, - "delete": { - "permissions": [ - "iam:DeleteSAMLProvider" - ] - }, - "list": { - "permissions": [ - "iam:ListSAMLProviders", - "iam:GetSAMLProvider" - ] - }, - "read": { - "permissions": [ - "iam:GetSAMLProvider" - ] - }, - "update": { - "permissions": [ - "iam:UpdateSAMLProvider", - "iam:GetSAMLProvider", - "iam:TagSAMLProvider", - "iam:ListSAMLProviderTags", - "iam:UntagSAMLProvider" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Amazon Resource Name (ARN) of the SAML provider", - "maxLength": 1600, - "minLength": 1, - "type": "string" - }, - "Name": { - "maxLength": 128, - "minLength": 1, - "pattern": "[\\w._-]+", - "type": "string" - }, - "SamlMetadataDocument": { - "maxLength": 10000000, - "minLength": 1000, - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "SamlMetadataDocument" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "iam:TagSAMLProvider", - "iam:ListSAMLProviderTags", - "iam:UntagSAMLProvider" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IAM::SAMLProvider" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/AddPrivateKey", + "/properties/RemovePrivateKey" + ], + "definitions": { + "SAMLPrivateKey": { + "additionalProperties": false, + "description": "The private key metadata for the SAML provider", + "properties": { + "KeyId": { + "description": "The unique identifier for the SAML private key.", + "maxLength": 64, + "minLength": 22, + "pattern": "[A-Z0-9]+", + "type": "string" + }, + "Timestamp": { + "description": "The date and time, in ISO 8601 date-time format, when the private key was uploaded.", + "format": "date-time", + "type": "string" + } + }, + "required": [ + "KeyId", + "Timestamp" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::IAM::SAMLProvider", + "handlers": { + "create": { + "permissions": [ + "iam:CreateSAMLProvider", + "iam:GetSAMLProvider", + "iam:TagSAMLProvider" + ] + }, + "delete": { + "permissions": [ + "iam:DeleteSAMLProvider" + ] + }, + "list": { + "permissions": [ + "iam:ListSAMLProviders", + "iam:GetSAMLProvider" + ] + }, + "read": { + "permissions": [ + "iam:GetSAMLProvider" + ] + }, + "update": { + "permissions": [ + "iam:UpdateSAMLProvider", + "iam:GetSAMLProvider", + "iam:TagSAMLProvider", + "iam:ListSAMLProviderTags", + "iam:UntagSAMLProvider" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AddPrivateKey": { + "description": "The private key from your external identity provider", + "maxLength": 16384, + "minLength": 1, + "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+", + "type": "string" + }, + "Arn": { + "description": "Amazon Resource Name (ARN) of the SAML provider", + "maxLength": 1600, + "minLength": 1, + "type": "string" + }, + "AssertionEncryptionMode": { + "description": "The encryption setting for the SAML provider", + "enum": [ + "Allowed", + "Required" + ], + "type": "string" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "pattern": "[\\w._-]+", + "type": "string" + }, + "PrivateKeyList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SAMLPrivateKey" + }, + "maxItems": 2, + "type": "array" + }, + "RemovePrivateKey": { + "description": "The Key ID of the private key to remove", + "maxLength": 64, + "minLength": 22, + "pattern": "[A-Z0-9]+", + "type": "string" + }, + "SamlMetadataDocument": { + "maxLength": 10000000, + "minLength": 1000, + "type": "string" + }, + "SamlProviderUUID": { + "description": "The unique identifier assigned to the SAML provider", + "maxLength": 64, + "minLength": 22, + "pattern": "[A-Z0-9]+", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/SamlProviderUUID" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "iam:TagSAMLProvider", + "iam:ListSAMLProviderTags", + "iam:UntagSAMLProvider" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IAM::SAMLProvider", + "writeOnlyProperties": [ + "/properties/AddPrivateKey", + "/properties/RemovePrivateKey" + ] +} diff --git a/src/schema/aws-iam-servercertificate.json b/src/schema/aws-iam-servercertificate.json index 82433892..5d15ef03 100644 --- a/src/schema/aws-iam-servercertificate.json +++ b/src/schema/aws-iam-servercertificate.json @@ -1,138 +1,138 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServerCertificateName", - "/properties/PrivateKey", - "/properties/CertificateBody", - "/properties/CertificateChain" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::IAM::ServerCertificate", - "handlers": { - "create": { - "permissions": [ - "iam:UploadServerCertificate", - "iam:TagServerCertificate", - "iam:GetServerCertificate" - ] - }, - "delete": { - "permissions": [ - "iam:DeleteServerCertificate" - ] - }, - "list": { - "permissions": [ - "iam:ListServerCertificates", - "iam:GetServerCertificate" - ] - }, - "read": { - "permissions": [ - "iam:GetServerCertificate" - ] - }, - "update": { - "permissions": [ - "iam:TagServerCertificate", - "iam:UntagServerCertificate", - "iam:ListServerCertificateTags", - "iam:GetServerCertificate" - ] - } - }, - "primaryIdentifier": [ - "/properties/ServerCertificateName" - ], - "properties": { - "Arn": { - "description": "Amazon Resource Name (ARN) of the server certificate", - "maxLength": 1600, - "minLength": 1, - "type": "string" - }, - "CertificateBody": { - "maxLength": 16384, - "minLength": 1, - "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+", - "type": "string" - }, - "CertificateChain": { - "maxLength": 2097152, - "minLength": 1, - "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+", - "type": "string" - }, - "Path": { - "maxLength": 512, - "minLength": 1, - "pattern": "(\\u002F)|(\\u002F[\\u0021-\\u007F]+\\u002F)", - "type": "string" - }, - "PrivateKey": { - "maxLength": 16384, - "minLength": 1, - "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+", - "type": "string" - }, - "ServerCertificateName": { - "maxLength": 128, - "minLength": 1, - "pattern": "[\\w+=,.@-]+", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "iam:TagServerCertificate", - "iam:UntagServerCertificate", - "iam:ListServerCertificateTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IAM::ServerCertificate", - "writeOnlyProperties": [ - "/properties/PrivateKey", - "/properties/CertificateBody", - "/properties/CertificateChain" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServerCertificateName", + "/properties/PrivateKey", + "/properties/CertificateBody", + "/properties/CertificateChain" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::IAM::ServerCertificate", + "handlers": { + "create": { + "permissions": [ + "iam:UploadServerCertificate", + "iam:TagServerCertificate", + "iam:GetServerCertificate" + ] + }, + "delete": { + "permissions": [ + "iam:DeleteServerCertificate" + ] + }, + "list": { + "permissions": [ + "iam:ListServerCertificates", + "iam:GetServerCertificate" + ] + }, + "read": { + "permissions": [ + "iam:GetServerCertificate" + ] + }, + "update": { + "permissions": [ + "iam:TagServerCertificate", + "iam:UntagServerCertificate", + "iam:ListServerCertificateTags", + "iam:GetServerCertificate" + ] + } + }, + "primaryIdentifier": [ + "/properties/ServerCertificateName" + ], + "properties": { + "Arn": { + "description": "Amazon Resource Name (ARN) of the server certificate", + "maxLength": 1600, + "minLength": 1, + "type": "string" + }, + "CertificateBody": { + "maxLength": 16384, + "minLength": 1, + "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+", + "type": "string" + }, + "CertificateChain": { + "maxLength": 2097152, + "minLength": 1, + "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+", + "type": "string" + }, + "Path": { + "maxLength": 512, + "minLength": 1, + "pattern": "(\\u002F)|(\\u002F[\\u0021-\\u007F]+\\u002F)", + "type": "string" + }, + "PrivateKey": { + "maxLength": 16384, + "minLength": 1, + "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+", + "type": "string" + }, + "ServerCertificateName": { + "maxLength": 128, + "minLength": 1, + "pattern": "[\\w+=,.@-]+", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "iam:TagServerCertificate", + "iam:UntagServerCertificate", + "iam:ListServerCertificateTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IAM::ServerCertificate", + "writeOnlyProperties": [ + "/properties/PrivateKey", + "/properties/CertificateBody", + "/properties/CertificateChain" + ] +} diff --git a/src/schema/aws-iam-servicelinkedrole.json b/src/schema/aws-iam-servicelinkedrole.json index 5aa2fc56..8cbc3804 100644 --- a/src/schema/aws-iam-servicelinkedrole.json +++ b/src/schema/aws-iam-servicelinkedrole.json @@ -1,70 +1,70 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CustomSuffix", - "/properties/AWSServiceName" - ], - "description": "Resource Type definition for AWS::IAM::ServiceLinkedRole", - "handlers": { - "create": { - "permissions": [ - "iam:CreateServiceLinkedRole", - "iam:GetRole" - ] - }, - "delete": { - "permissions": [ - "iam:DeleteServiceLinkedRole", - "iam:GetServiceLinkedRoleDeletionStatus", - "iam:GetRole" - ] - }, - "read": { - "permissions": [ - "iam:GetRole" - ] - }, - "update": { - "permissions": [ - "iam:UpdateRole", - "iam:GetRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/RoleName" - ], - "properties": { - "AWSServiceName": { - "description": "The service principal for the AWS service to which this role is attached.", - "type": "string" - }, - "CustomSuffix": { - "description": "A string that you provide, which is combined with the service-provided prefix to form the complete role name.", - "type": "string" - }, - "Description": { - "description": "The description of the role.", - "type": "string" - }, - "RoleName": { - "description": "The name of the role.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/RoleName" - ], - "required": [], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::IAM::ServiceLinkedRole", - "writeOnlyProperties": [ - "/properties/CustomSuffix", - "/properties/AWSServiceName" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CustomSuffix", + "/properties/AWSServiceName" + ], + "description": "Resource Type definition for AWS::IAM::ServiceLinkedRole", + "handlers": { + "create": { + "permissions": [ + "iam:CreateServiceLinkedRole", + "iam:GetRole" + ] + }, + "delete": { + "permissions": [ + "iam:DeleteServiceLinkedRole", + "iam:GetServiceLinkedRoleDeletionStatus", + "iam:GetRole" + ] + }, + "read": { + "permissions": [ + "iam:GetRole" + ] + }, + "update": { + "permissions": [ + "iam:UpdateRole", + "iam:GetRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/RoleName" + ], + "properties": { + "AWSServiceName": { + "description": "The service principal for the AWS service to which this role is attached.", + "type": "string" + }, + "CustomSuffix": { + "description": "A string that you provide, which is combined with the service-provided prefix to form the complete role name.", + "type": "string" + }, + "Description": { + "description": "The description of the role.", + "type": "string" + }, + "RoleName": { + "description": "The name of the role.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/RoleName" + ], + "required": [], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::IAM::ServiceLinkedRole", + "writeOnlyProperties": [ + "/properties/CustomSuffix", + "/properties/AWSServiceName" + ] +} diff --git a/src/schema/aws-iam-user.json b/src/schema/aws-iam-user.json index 63452f42..cbb53849 100644 --- a/src/schema/aws-iam-user.json +++ b/src/schema/aws-iam-user.json @@ -1,210 +1,215 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserName" - ], - "definitions": { - "LoginProfile": { - "additionalProperties": false, - "description": "Creates a password for the specified user, giving the user the ability to access AWS services through the console. For more information about managing passwords, see [Managing Passwords](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingLogins.html) in the *User Guide*.", - "properties": { - "Password": { - "description": "The user's password.", - "type": "string" - }, - "PasswordResetRequired": { - "description": "Specifies whether the user is required to set a new password on next sign-in.", - "type": "boolean" - } - }, - "required": [ - "Password" - ], - "type": "object" - }, - "Policy": { - "additionalProperties": false, - "description": "Contains information about an attached policy.\n An attached policy is a managed policy that has been attached to a user, group, or role.\n For more information about managed policies, refer to [Managed Policies and Inline Policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *User Guide*.", - "properties": { - "PolicyDocument": { - "description": "The entire contents of the policy that defines permissions. For more information, see [Overview of JSON policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json).", - "type": [ - "object", - "string" - ] - }, - "PolicyName": { - "description": "The friendly name (not ARN) identifying the policy.", - "type": "string" - } - }, - "required": [ - "PolicyName", - "PolicyDocument" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A structure that represents user-provided metadata that can be associated with an IAM resource. For more information about tagging, see [Tagging IAM resources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) in the *IAM User Guide*.", - "properties": { - "Key": { - "description": "The key name that can be used to look up or retrieve the associated value. For example, ``Department`` or ``Cost Center`` are common choices.", - "type": "string" - }, - "Value": { - "description": "The value associated with this tag. For example, tags with a key name of ``Department`` could have values such as ``Human Resources``, ``Accounting``, and ``Support``. Tags with a key name of ``Cost Center`` might have values that consist of the number associated with the different cost centers in your company. Typically, many resources have tags with the same key name but with different values.\n AWS always interprets the tag ``Value`` as a single string. If you need to store an array, you can store comma-separated values in the string. However, you must interpret the value in your code.", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Creates a new IAM user for your AWS-account.\n For information about quotas for the number of IAM users you can create, see [IAM and quotas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) in the *IAM User Guide*.", - "handlers": { - "create": { - "permissions": [ - "iam:CreateLoginProfile", - "iam:AddUserToGroup", - "iam:PutUserPolicy", - "iam:AttachUserPolicy", - "iam:CreateUser", - "iam:GetUser", - "iam:TagUser" - ] - }, - "delete": { - "permissions": [ - "iam:DeleteAccessKey", - "iam:RemoveUserFromGroup", - "iam:DeleteUserPolicy", - "iam:DeleteUser", - "iam:DetachUserPolicy", - "iam:DeleteLoginProfile", - "iam:ListAccessKeys", - "iam:GetUserPolicy", - "iam:ListGroupsForUser", - "iam:ListAttachedUserPolicies", - "iam:ListUserPolicies", - "iam:GetUser", - "iam:GetLoginProfile" - ] - }, - "list": { - "permissions": [ - "iam:listUsers" - ] - }, - "read": { - "permissions": [ - "iam:GetUserPolicy", - "iam:ListGroupsForUser", - "iam:ListAttachedUserPolicies", - "iam:ListUserPolicies", - "iam:GetUser", - "iam:GetLoginProfile" - ] - }, - "update": { - "permissions": [ - "iam:UpdateLoginProfile", - "iam:UpdateUser", - "iam:PutUserPermissionsBoundary", - "iam:AttachUserPolicy", - "iam:DeleteUserPolicy", - "iam:DeleteUserPermissionsBoundary", - "iam:TagUser", - "iam:UntagUser", - "iam:CreateLoginProfile", - "iam:RemoveUserFromGroup", - "iam:AddUserToGroup", - "iam:PutUserPolicy", - "iam:DetachUserPolicy", - "iam:GetLoginProfile", - "iam:DeleteLoginProfile", - "iam:GetUser", - "iam:ListUserTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserName" - ], - "properties": { - "Arn": { - "description": "", - "type": "string" - }, - "Groups": { - "description": "A list of group names to which you want to add the user.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "LoginProfile": { - "$ref": "#/definitions/LoginProfile", - "description": "Creates a password for the specified IAM user. A password allows an IAM user to access AWS services through the console.\n You can use the CLI, the AWS API, or the *Users* page in the IAM console to create a password for any IAM user. Use [ChangePassword](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html) to update your own existing password in the *My Security Credentials* page in the console.\n For more information about managing passwords, see [Managing passwords](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingLogins.html) in the *User Guide*." - }, - "ManagedPolicyArns": { - "description": "A list of Amazon Resource Names (ARNs) of the IAM managed policies that you want to attach to the user.\n For more information about ARNs, see [Amazon Resource Names (ARNs) and Service Namespaces](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the *General Reference*.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Path": { - "description": "The path for the user name. For more information about paths, see [IAM identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) in the *IAM User Guide*.\n This parameter is optional. If it is not included, it defaults to a slash (/).\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes. In addition, it can contain any ASCII character from the ! (``\\u0021``) through the DEL character (``\\u007F``), including most punctuation characters, digits, and upper and lowercased letters.", - "type": "string" - }, - "PermissionsBoundary": { - "description": "The ARN of the managed policy that is used to set the permissions boundary for the user.\n A permissions boundary policy defines the maximum permissions that identity-based policies can grant to an entity, but does not grant permissions. Permissions boundaries do not define the maximum permissions that a resource-based policy can grant to an entity. To learn more, see [Permissions boundaries for IAM entities](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) in the *IAM User Guide*.\n For more information about policy types, see [Policy types](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policy-types) in the *IAM User Guide*.", - "type": "string" - }, - "Policies": { - "description": "Adds or updates an inline policy document that is embedded in the specified IAM user. To view AWS::IAM::User snippets, see [Declaring an User Resource](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-iam.html#scenario-iam-user).\n The name of each policy for a role, user, or group must be unique. If you don't choose unique names, updates to the IAM identity will fail. \n For information about limits on the number of inline policies that you can embed in a user, see [Limitations on Entities](https://docs.aws.amazon.com/IAM/latest/UserGuide/LimitationsOnEntities.html) in the *User Guide*.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Policy" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "description": "A list of tags that you want to attach to the new user. Each tag consists of a key name and an associated value. For more information about tagging, see [Tagging IAM resources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) in the *IAM User Guide*.\n If any one of the tags is invalid or if you exceed the allowed maximum number of tags, then the entire request fails and the resource is not created.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "UserName": { - "description": "The name of the user to create. Do not include the path in this value.\n This parameter allows (per its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-. The user name must be unique within the account. User names are not distinguished by case. For example, you cannot create users named both \"John\" and \"john\".\n If you don't specify a name, CFN generates a unique physical ID and uses that ID for the user name.\n If you specify a name, you must specify the ``CAPABILITY_NAMED_IAM`` value to acknowledge your template's capabilities. For more information, see [Acknowledging Resources in Templates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#using-iam-capabilities).\n Naming an IAM resource can cause an unrecoverable error if you reuse the same template in multiple Regions. To prevent this, we recommend using ``Fn::Join`` and ``AWS::Region`` to create a Region-specific name, as in the following example: ``{\"Fn::Join\": [\"\", [{\"Ref\": \"AWS::Region\"}, {\"Ref\": \"MyResourceName\"}]]}``.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IAM::User", - "writeOnlyProperties": [ - "/properties/LoginProfile/Password" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/UserName" + ], + "definitions": { + "LoginProfile": { + "additionalProperties": false, + "description": "Creates a password for the specified user, giving the user the ability to access AWS services through the console. For more information about managing passwords, see [Managing Passwords](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingLogins.html) in the *User Guide*.", + "properties": { + "Password": { + "description": "The user's password.", + "type": "string" + }, + "PasswordResetRequired": { + "description": "Specifies whether the user is required to set a new password on next sign-in.", + "type": "boolean" + } + }, + "required": [ + "Password" + ], + "type": "object" + }, + "Policy": { + "additionalProperties": false, + "description": "Contains information about an attached policy.\n An attached policy is a managed policy that has been attached to a user, group, or role.\n For more information about managed policies, refer to [Managed Policies and Inline Policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *User Guide*.", + "properties": { + "PolicyDocument": { + "description": "The entire contents of the policy that defines permissions. For more information, see [Overview of JSON policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json).", + "type": [ + "object", + "string" + ] + }, + "PolicyName": { + "description": "The friendly name (not ARN) identifying the policy.", + "type": "string" + } + }, + "required": [ + "PolicyName", + "PolicyDocument" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A structure that represents user-provided metadata that can be associated with an IAM resource. For more information about tagging, see [Tagging IAM resources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) in the *IAM User Guide*.", + "properties": { + "Key": { + "description": "The key name that can be used to look up or retrieve the associated value. For example, ``Department`` or ``Cost Center`` are common choices.", + "type": "string" + }, + "Value": { + "description": "The value associated with this tag. For example, tags with a key name of ``Department`` could have values such as ``Human Resources``, ``Accounting``, and ``Support``. Tags with a key name of ``Cost Center`` might have values that consist of the number associated with the different cost centers in your company. Typically, many resources have tags with the same key name but with different values.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Creates a new IAM user for your AWS-account.\n For information about quotas for the number of IAM users you can create, see [IAM and quotas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) in the *IAM User Guide*.", + "handlers": { + "create": { + "permissions": [ + "iam:CreateLoginProfile", + "iam:AddUserToGroup", + "iam:PutUserPolicy", + "iam:AttachUserPolicy", + "iam:CreateUser", + "iam:GetUser", + "iam:TagUser" + ] + }, + "delete": { + "permissions": [ + "iam:DeleteAccessKey", + "iam:RemoveUserFromGroup", + "iam:DeleteUserPolicy", + "iam:DeleteUser", + "iam:DetachUserPolicy", + "iam:DeleteLoginProfile", + "iam:ListAccessKeys", + "iam:GetUserPolicy", + "iam:ListGroupsForUser", + "iam:ListAttachedUserPolicies", + "iam:ListUserPolicies", + "iam:GetUser", + "iam:GetLoginProfile" + ] + }, + "list": { + "permissions": [ + "iam:listUsers" + ] + }, + "read": { + "permissions": [ + "iam:GetUserPolicy", + "iam:ListGroupsForUser", + "iam:ListAttachedUserPolicies", + "iam:ListUserPolicies", + "iam:GetUser", + "iam:GetLoginProfile" + ] + }, + "update": { + "permissions": [ + "iam:UpdateLoginProfile", + "iam:UpdateUser", + "iam:PutUserPermissionsBoundary", + "iam:AttachUserPolicy", + "iam:DeleteUserPolicy", + "iam:DeleteUserPermissionsBoundary", + "iam:TagUser", + "iam:UntagUser", + "iam:CreateLoginProfile", + "iam:RemoveUserFromGroup", + "iam:AddUserToGroup", + "iam:PutUserPolicy", + "iam:DetachUserPolicy", + "iam:GetLoginProfile", + "iam:DeleteLoginProfile", + "iam:GetUser", + "iam:ListUserTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserName" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "Groups": { + "description": "A list of group names to which you want to add the user.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "LoginProfile": { + "$ref": "#/definitions/LoginProfile", + "description": "Creates a password for the specified IAM user. A password allows an IAM user to access AWS services through the console.\n You can use the CLI, the AWS API, or the *Users* page in the IAM console to create a password for any IAM user. Use [ChangePassword](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html) to update your own existing password in the *My Security Credentials* page in the console.\n For more information about managing passwords, see [Managing passwords](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingLogins.html) in the *User Guide*." + }, + "ManagedPolicyArns": { + "description": "A list of Amazon Resource Names (ARNs) of the IAM managed policies that you want to attach to the user.\n For more information about ARNs, see [Amazon Resource Names (ARNs) and Service Namespaces](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the *General Reference*.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Path": { + "description": "The path for the user name. For more information about paths, see [IAM identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) in the *IAM User Guide*.\n This parameter is optional. If it is not included, it defaults to a slash (/).\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes. In addition, it can contain any ASCII character from the ! (``\\u0021``) through the DEL character (``\\u007F``), including most punctuation characters, digits, and upper and lowercased letters.", + "type": "string" + }, + "PermissionsBoundary": { + "description": "The ARN of the managed policy that is used to set the permissions boundary for the user.\n A permissions boundary policy defines the maximum permissions that identity-based policies can grant to an entity, but does not grant permissions. Permissions boundaries do not define the maximum permissions that a resource-based policy can grant to an entity. To learn more, see [Permissions boundaries for IAM entities](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) in the *IAM User Guide*.\n For more information about policy types, see [Policy types](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policy-types) in the *IAM User Guide*.", + "type": "string" + }, + "Policies": { + "description": "Adds or updates an inline policy document that is embedded in the specified IAM user. To view AWS::IAM::User snippets, see [Declaring an User Resource](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-iam.html#scenario-iam-user).\n The name of each policy for a role, user, or group must be unique. If you don't choose unique names, updates to the IAM identity will fail. \n For information about limits on the number of inline policies that you can embed in a user, see [Limitations on Entities](https://docs.aws.amazon.com/IAM/latest/UserGuide/LimitationsOnEntities.html) in the *User Guide*.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Policy" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "description": "A list of tags that you want to attach to the new user. Each tag consists of a key name and an associated value. For more information about tagging, see [Tagging IAM resources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) in the *IAM User Guide*.\n If any one of the tags is invalid or if you exceed the allowed maximum number of tags, then the entire request fails and the resource is not created.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "UserName": { + "description": "The name of the user to create. Do not include the path in this value.\n This parameter allows (per its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-. The user name must be unique within the account. User names are not distinguished by case. For example, you cannot create users named both \"John\" and \"john\".\n If you don't specify a name, CFN generates a unique physical ID and uses that ID for the user name.\n If you specify a name, you must specify the ``CAPABILITY_NAMED_IAM`` value to acknowledge your template's capabilities. For more information, see [Acknowledging Resources in Templates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#using-iam-capabilities).\n Naming an IAM resource can cause an unrecoverable error if you reuse the same template in multiple Regions. To prevent this, we recommend using ``Fn::Join`` and ``AWS::Region`` to create a Region-specific name, as in the following example: ``{\"Fn::Join\": [\"\", [{\"Ref\": \"AWS::Region\"}, {\"Ref\": \"MyResourceName\"}]]}``.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "iam:TagUser", + "iam:UntagUser", + "iam:ListUserTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IAM::User", + "writeOnlyProperties": [ + "/properties/LoginProfile/Password" + ] +} diff --git a/src/schema/aws-iam-userpolicy.json b/src/schema/aws-iam-userpolicy.json index ac35caff..830dd26a 100644 --- a/src/schema/aws-iam-userpolicy.json +++ b/src/schema/aws-iam-userpolicy.json @@ -1,63 +1,63 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyName", - "/properties/UserName" - ], - "description": "Adds or updates an inline policy document that is embedded in the specified IAM user.\n An IAM user can also have a managed policy attached to it. To attach a managed policy to a user, use [AWS::IAM::User](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html). To create a new managed policy, use [AWS::IAM::ManagedPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html). For information about policies, see [Managed policies and inline policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *IAM User Guide*.\n For information about the maximum number of inline policies that you can embed in a user, see [IAM and quotas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) in the *IAM User Guide*.", - "handlers": { - "create": { - "permissions": [ - "iam:PutUserPolicy", - "iam:GetUserPolicy" - ] - }, - "delete": { - "permissions": [ - "iam:DeleteUserPolicy", - "iam:GetUserPolicy" - ] - }, - "read": { - "permissions": [ - "iam:GetUserPolicy" - ] - }, - "update": { - "permissions": [ - "iam:PutUserPolicy", - "iam:GetUserPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/PolicyName", - "/properties/UserName" - ], - "properties": { - "PolicyDocument": { - "description": "The policy document.\n You must provide policies in JSON format in IAM. However, for CFN templates formatted in YAML, you can provide the policy in JSON or YAML format. CFN always converts a YAML policy to JSON format before submitting it to IAM.\n The [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex) used to validate this parameter is a string of characters consisting of the following:\n + Any printable ASCII character ranging from the space character (``\\u0020``) through the end of the ASCII character range\n + The printable characters in the Basic Latin and Latin-1 Supplement character set (through ``\\u00FF``)\n + The special characters tab (``\\u0009``), line feed (``\\u000A``), and carriage return (``\\u000D``)", - "type": "object" - }, - "PolicyName": { - "description": "The name of the policy document.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", - "type": "string" - }, - "UserName": { - "description": "The name of the user to associate the policy with.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", - "type": "string" - } - }, - "required": [ - "PolicyName", - "UserName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::IAM::UserPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyName", + "/properties/UserName" + ], + "description": "Adds or updates an inline policy document that is embedded in the specified IAM user.\n An IAM user can also have a managed policy attached to it. To attach a managed policy to a user, use [AWS::IAM::User](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html). To create a new managed policy, use [AWS::IAM::ManagedPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html). For information about policies, see [Managed policies and inline policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) in the *IAM User Guide*.\n For information about the maximum number of inline policies that you can embed in a user, see [IAM and quotas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) in the *IAM User Guide*.", + "handlers": { + "create": { + "permissions": [ + "iam:PutUserPolicy", + "iam:GetUserPolicy" + ] + }, + "delete": { + "permissions": [ + "iam:DeleteUserPolicy", + "iam:GetUserPolicy" + ] + }, + "read": { + "permissions": [ + "iam:GetUserPolicy" + ] + }, + "update": { + "permissions": [ + "iam:PutUserPolicy", + "iam:GetUserPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/PolicyName", + "/properties/UserName" + ], + "properties": { + "PolicyDocument": { + "description": "The policy document.\n You must provide policies in JSON format in IAM. However, for CFN templates formatted in YAML, you can provide the policy in JSON or YAML format. CFN always converts a YAML policy to JSON format before submitting it to IAM.\n The [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex) used to validate this parameter is a string of characters consisting of the following:\n + Any printable ASCII character ranging from the space character (``\\u0020``) through the end of the ASCII character range\n + The printable characters in the Basic Latin and Latin-1 Supplement character set (through ``\\u00FF``)\n + The special characters tab (``\\u0009``), line feed (``\\u000A``), and carriage return (``\\u000D``)", + "type": "object" + }, + "PolicyName": { + "description": "The name of the policy document.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", + "type": "string" + }, + "UserName": { + "description": "The name of the user to associate the policy with.\n This parameter allows (through its [regex pattern](https://docs.aws.amazon.com/http://wikipedia.org/wiki/regex)) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-", + "type": "string" + } + }, + "required": [ + "PolicyName", + "UserName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::IAM::UserPolicy" +} diff --git a/src/schema/aws-iam-usertogroupaddition.json b/src/schema/aws-iam-usertogroupaddition.json index abe687cf..75e2d668 100644 --- a/src/schema/aws-iam-usertogroupaddition.json +++ b/src/schema/aws-iam-usertogroupaddition.json @@ -1,30 +1,30 @@ -{ - "additionalProperties": false, - "description": "Resource Type definition for AWS::IAM::UserToGroupAddition", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "GroupName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Users": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "GroupName", - "Users" - ], - "typeName": "AWS::IAM::UserToGroupAddition" -} +{ + "additionalProperties": false, + "description": "Resource Type definition for AWS::IAM::UserToGroupAddition", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Users": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "GroupName", + "Users" + ], + "typeName": "AWS::IAM::UserToGroupAddition" +} diff --git a/src/schema/aws-iam-virtualmfadevice.json b/src/schema/aws-iam-virtualmfadevice.json index 5b6f9adb..eb8b2b92 100644 --- a/src/schema/aws-iam-virtualmfadevice.json +++ b/src/schema/aws-iam-virtualmfadevice.json @@ -1,109 +1,109 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/VirtualMfaDeviceName", - "/properties/Base32StringSeed", - "/properties/Path" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::IAM::VirtualMFADevice", - "handlers": { - "create": { - "permissions": [ - "iam:CreateVirtualMFADevice", - "iam:EnableMFADevice", - "iam:ListVirtualMFADevices" - ] - }, - "delete": { - "permissions": [ - "iam:DeleteVirtualMFADevice", - "iam:DeactivateMFADevice" - ] - }, - "list": { - "permissions": [ - "iam:ListVirtualMFADevices" - ] - }, - "read": { - "permissions": [ - "iam:ListVirtualMFADevices" - ] - }, - "update": { - "permissions": [ - "iam:TagMFADevice", - "iam:UntagMFADevice" - ] - } - }, - "primaryIdentifier": [ - "/properties/SerialNumber" - ], - "properties": { - "Path": { - "maxLength": 512, - "minLength": 1, - "pattern": "(\\u002F)|(\\u002F[\\u0021-\\u007F]+\\u002F)", - "type": "string" - }, - "SerialNumber": { - "maxLength": 256, - "minLength": 9, - "pattern": "[\\w+=/:,.@-]+", - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Users": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "VirtualMfaDeviceName": { - "maxLength": 226, - "minLength": 1, - "pattern": "[\\w+=,.@-]+", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/SerialNumber" - ], - "required": [ - "Users" - ], - "typeName": "AWS::IAM::VirtualMFADevice" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VirtualMfaDeviceName", + "/properties/Base32StringSeed", + "/properties/Path" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::IAM::VirtualMFADevice", + "handlers": { + "create": { + "permissions": [ + "iam:CreateVirtualMFADevice", + "iam:EnableMFADevice", + "iam:ListVirtualMFADevices" + ] + }, + "delete": { + "permissions": [ + "iam:DeleteVirtualMFADevice", + "iam:DeactivateMFADevice" + ] + }, + "list": { + "permissions": [ + "iam:ListVirtualMFADevices" + ] + }, + "read": { + "permissions": [ + "iam:ListVirtualMFADevices" + ] + }, + "update": { + "permissions": [ + "iam:TagMFADevice", + "iam:UntagMFADevice" + ] + } + }, + "primaryIdentifier": [ + "/properties/SerialNumber" + ], + "properties": { + "Path": { + "maxLength": 512, + "minLength": 1, + "pattern": "(\\u002F)|(\\u002F[\\u0021-\\u007F]+\\u002F)", + "type": "string" + }, + "SerialNumber": { + "maxLength": 256, + "minLength": 9, + "pattern": "[\\w+=/:,.@-]+", + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Users": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "VirtualMfaDeviceName": { + "maxLength": 226, + "minLength": 1, + "pattern": "[\\w+=,.@-]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/SerialNumber" + ], + "required": [ + "Users" + ], + "typeName": "AWS::IAM::VirtualMFADevice" +} diff --git a/src/schema/aws-identitystore-group.json b/src/schema/aws-identitystore-group.json index ab3be275..09bb3460 100644 --- a/src/schema/aws-identitystore-group.json +++ b/src/schema/aws-identitystore-group.json @@ -1,96 +1,96 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/IdentityStoreId" - ], - "description": "Resource Type definition for AWS::IdentityStore::Group", - "handlers": { - "create": { - "permissions": [ - "identitystore:CreateGroup", - "identitystore:DescribeGroup" - ] - }, - "delete": { - "permissions": [ - "identitystore:DescribeGroup", - "identitystore:DeleteGroup" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "IdentityStoreId": { - "$ref": "resource-schema.json#/properties/IdentityStoreId" - } - }, - "required": [ - "IdentityStoreId" - ] - }, - "permissions": [ - "identitystore:ListGroups" - ] - }, - "read": { - "permissions": [ - "identitystore:DescribeGroup" - ] - }, - "update": { - "permissions": [ - "identitystore:DescribeGroup", - "identitystore:UpdateGroup" - ] - } - }, - "primaryIdentifier": [ - "/properties/GroupId", - "/properties/IdentityStoreId" - ], - "properties": { - "Description": { - "description": "A string containing the description of the group.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^[\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\t\\n\\r \u3000]+$", - "type": "string" - }, - "DisplayName": { - "description": "A string containing the name of the group. This value is commonly displayed when the group is referenced.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^[\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\t\\n\\r ]+$", - "type": "string" - }, - "GroupId": { - "description": "The unique identifier for a group in the identity store.", - "maxLength": 47, - "minLength": 1, - "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", - "type": "string" - }, - "IdentityStoreId": { - "description": "The globally unique identifier for the identity store.", - "maxLength": 36, - "minLength": 1, - "pattern": "^d-[0-9a-f]{10}$|^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/GroupId" - ], - "required": [ - "IdentityStoreId", - "DisplayName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-identitystore", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::IdentityStore::Group" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IdentityStoreId" + ], + "description": "Resource Type definition for AWS::IdentityStore::Group", + "handlers": { + "create": { + "permissions": [ + "identitystore:CreateGroup", + "identitystore:DescribeGroup" + ] + }, + "delete": { + "permissions": [ + "identitystore:DescribeGroup", + "identitystore:DeleteGroup" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "IdentityStoreId": { + "$ref": "resource-schema.json#/properties/IdentityStoreId" + } + }, + "required": [ + "IdentityStoreId" + ] + }, + "permissions": [ + "identitystore:ListGroups" + ] + }, + "read": { + "permissions": [ + "identitystore:DescribeGroup" + ] + }, + "update": { + "permissions": [ + "identitystore:DescribeGroup", + "identitystore:UpdateGroup" + ] + } + }, + "primaryIdentifier": [ + "/properties/GroupId", + "/properties/IdentityStoreId" + ], + "properties": { + "Description": { + "description": "A string containing the description of the group.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\t\\n\\r \u3000]+$", + "type": "string" + }, + "DisplayName": { + "description": "A string containing the name of the group. This value is commonly displayed when the group is referenced.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}\\t\\n\\r ]+$", + "type": "string" + }, + "GroupId": { + "description": "The unique identifier for a group in the identity store.", + "maxLength": 47, + "minLength": 1, + "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", + "type": "string" + }, + "IdentityStoreId": { + "description": "The globally unique identifier for the identity store.", + "maxLength": 36, + "minLength": 1, + "pattern": "^d-[0-9a-f]{10}$|^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/GroupId" + ], + "required": [ + "IdentityStoreId", + "DisplayName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-identitystore", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::IdentityStore::Group" +} diff --git a/src/schema/aws-identitystore-groupmembership.json b/src/schema/aws-identitystore-groupmembership.json index 8ab92364..8f7495c3 100644 --- a/src/schema/aws-identitystore-groupmembership.json +++ b/src/schema/aws-identitystore-groupmembership.json @@ -1,114 +1,114 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/IdentityStoreId", - "/properties/GroupId", - "/properties/MemberId" - ], - "definitions": { - "MemberId": { - "additionalProperties": false, - "description": "An object containing the identifier of a group member.", - "properties": { - "UserId": { - "description": "The identifier for a user in the identity store.", - "maxLength": 47, - "minLength": 1, - "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", - "type": "string" - } - }, - "required": [ - "UserId" - ], - "title": "UserId", - "type": "object" - } - }, - "description": "Resource Type Definition for AWS:IdentityStore::GroupMembership", - "handlers": { - "create": { - "permissions": [ - "identitystore:CreateGroupMembership", - "identitystore:DescribeGroupMembership" - ] - }, - "delete": { - "permissions": [ - "identitystore:DeleteGroupMembership", - "identitystore:DescribeGroupMembership" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "GroupId": { - "$ref": "resource-schema.json#/properties/GroupId" - }, - "IdentityStoreId": { - "$ref": "resource-schema.json#/properties/IdentityStoreId" - } - }, - "required": [ - "IdentityStoreId", - "GroupId" - ] - }, - "permissions": [ - "identitystore:ListGroupMemberships" - ] - }, - "read": { - "permissions": [ - "identitystore:DescribeGroupMembership" - ] - } - }, - "primaryIdentifier": [ - "/properties/MembershipId", - "/properties/IdentityStoreId" - ], - "properties": { - "GroupId": { - "description": "The unique identifier for a group in the identity store.", - "maxLength": 47, - "minLength": 1, - "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", - "type": "string" - }, - "IdentityStoreId": { - "description": "The globally unique identifier for the identity store.", - "maxLength": 36, - "minLength": 1, - "pattern": "^d-[0-9a-f]{10}$|^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - }, - "MemberId": { - "$ref": "#/definitions/MemberId", - "description": "An object containing the identifier of a group member." - }, - "MembershipId": { - "description": "The identifier for a GroupMembership in the identity store.", - "maxLength": 47, - "minLength": 1, - "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/MembershipId" - ], - "required": [ - "IdentityStoreId", - "GroupId", - "MemberId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-identitystore", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::IdentityStore::GroupMembership" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IdentityStoreId", + "/properties/GroupId", + "/properties/MemberId" + ], + "definitions": { + "MemberId": { + "additionalProperties": false, + "description": "An object containing the identifier of a group member.", + "properties": { + "UserId": { + "description": "The identifier for a user in the identity store.", + "maxLength": 47, + "minLength": 1, + "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", + "type": "string" + } + }, + "required": [ + "UserId" + ], + "title": "UserId", + "type": "object" + } + }, + "description": "Resource Type Definition for AWS:IdentityStore::GroupMembership", + "handlers": { + "create": { + "permissions": [ + "identitystore:CreateGroupMembership", + "identitystore:DescribeGroupMembership" + ] + }, + "delete": { + "permissions": [ + "identitystore:DeleteGroupMembership", + "identitystore:DescribeGroupMembership" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "GroupId": { + "$ref": "resource-schema.json#/properties/GroupId" + }, + "IdentityStoreId": { + "$ref": "resource-schema.json#/properties/IdentityStoreId" + } + }, + "required": [ + "IdentityStoreId", + "GroupId" + ] + }, + "permissions": [ + "identitystore:ListGroupMemberships" + ] + }, + "read": { + "permissions": [ + "identitystore:DescribeGroupMembership" + ] + } + }, + "primaryIdentifier": [ + "/properties/MembershipId", + "/properties/IdentityStoreId" + ], + "properties": { + "GroupId": { + "description": "The unique identifier for a group in the identity store.", + "maxLength": 47, + "minLength": 1, + "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", + "type": "string" + }, + "IdentityStoreId": { + "description": "The globally unique identifier for the identity store.", + "maxLength": 36, + "minLength": 1, + "pattern": "^d-[0-9a-f]{10}$|^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + }, + "MemberId": { + "$ref": "#/definitions/MemberId", + "description": "An object containing the identifier of a group member." + }, + "MembershipId": { + "description": "The identifier for a GroupMembership in the identity store.", + "maxLength": 47, + "minLength": 1, + "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/MembershipId" + ], + "required": [ + "IdentityStoreId", + "GroupId", + "MemberId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-identitystore", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::IdentityStore::GroupMembership" +} diff --git a/src/schema/aws-imagebuilder-component.json b/src/schema/aws-imagebuilder-component.json index 617945e8..27bde0d8 100644 --- a/src/schema/aws-imagebuilder-component.json +++ b/src/schema/aws-imagebuilder-component.json @@ -1,173 +1,182 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Version", - "/properties/ChangeDescription", - "/properties/Description", - "/properties/Platform", - "/properties/Data", - "/properties/Uri", - "/properties/KmsKeyId", - "/properties/SupportedOsVersions", - "/properties/Tags" - ], - "description": "Resource schema for AWS::ImageBuilder::Component", - "handlers": { - "create": { - "permissions": [ - "iam:CreateServiceLinkedRole", - "iam:GetRole", - "kms:GenerateDataKey", - "kms:GenerateDataKeyPair", - "kms:GenerateDataKeyPairWithoutPlaintext", - "kms:GenerateDataKeyWithoutPlaintext", - "kms:Encrypt", - "kms:Decrypt", - "s3:GetObject", - "s3:HeadBucket", - "s3:GetBucketLocation", - "imagebuilder:TagResource", - "imagebuilder:GetComponent", - "imagebuilder:CreateComponent" - ] - }, - "delete": { - "permissions": [ - "imagebuilder:GetComponent", - "imagebuilder:UnTagResource", - "imagebuilder:DeleteComponent" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Arn": { - "$ref": "resource-schema.json#/properties/Arn" - } - }, - "required": [ - "Arn" - ] - }, - "permissions": [ - "imagebuilder:ListComponents" - ] - }, - "read": { - "permissions": [ - "imagebuilder:GetComponent" - ] - } - }, - "oneOf": [ - { - "required": [ - "Data" - ] - }, - { - "required": [ - "Uri" - ] - } - ], - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the component.", - "type": "string" - }, - "ChangeDescription": { - "description": "The change description of the component.", - "type": "string" - }, - "Data": { - "description": "The data of the component.", - "maxLength": 16000, - "minLength": 1, - "type": "string" - }, - "Description": { - "description": "The description of the component.", - "type": "string" - }, - "Encrypted": { - "description": "The encryption status of the component.", - "type": "boolean" - }, - "KmsKeyId": { - "description": "The KMS key identifier used to encrypt the component.", - "type": "string" - }, - "Name": { - "description": "The name of the component.", - "type": "string" - }, - "Platform": { - "description": "The platform of the component.", - "enum": [ - "Windows", - "Linux", - "macOS" - ], - "type": "string" - }, - "SupportedOsVersions": { - "description": "The operating system (OS) version supported by the component.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "Tags": { - "additionalProperties": false, - "description": "The tags associated with the component.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "Type": { - "description": "The type of the component denotes whether the component is used to build the image or only to test it. ", - "enum": [ - "BUILD", - "TEST" - ], - "type": "string" - }, - "Uri": { - "description": "The uri of the component.", - "type": "string" - }, - "Version": { - "description": "The version of the component.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Type", - "/properties/Encrypted" - ], - "required": [ - "Name", - "Platform", - "Version" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ImageBuilder::Component", - "writeOnlyProperties": [ - "/properties/Data", - "/properties/Uri", - "/properties/Platform" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Version", + "/properties/ChangeDescription", + "/properties/Description", + "/properties/Platform", + "/properties/Data", + "/properties/Uri", + "/properties/KmsKeyId", + "/properties/SupportedOsVersions", + "/properties/Tags" + ], + "description": "Resource schema for AWS::ImageBuilder::Component", + "handlers": { + "create": { + "permissions": [ + "iam:CreateServiceLinkedRole", + "iam:GetRole", + "kms:GenerateDataKey", + "kms:GenerateDataKeyPair", + "kms:GenerateDataKeyPairWithoutPlaintext", + "kms:GenerateDataKeyWithoutPlaintext", + "kms:Encrypt", + "kms:Decrypt", + "s3:GetObject", + "s3:HeadBucket", + "s3:GetBucketLocation", + "imagebuilder:TagResource", + "imagebuilder:GetComponent", + "imagebuilder:CreateComponent" + ] + }, + "delete": { + "permissions": [ + "imagebuilder:GetComponent", + "imagebuilder:UnTagResource", + "imagebuilder:DeleteComponent" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Arn": { + "$ref": "resource-schema.json#/properties/Arn" + } + }, + "required": [ + "Arn" + ] + }, + "permissions": [ + "imagebuilder:ListComponents", + "imagebuilder:ListComponentBuildVersions" + ] + }, + "read": { + "permissions": [ + "imagebuilder:GetComponent", + "kms:Decrypt" + ] + } + }, + "oneOf": [ + { + "required": [ + "Data" + ] + }, + { + "required": [ + "Uri" + ] + } + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the component.", + "type": "string" + }, + "ChangeDescription": { + "description": "The change description of the component.", + "type": "string" + }, + "Data": { + "description": "The data of the component.", + "maxLength": 16000, + "minLength": 1, + "type": "string" + }, + "Description": { + "description": "The description of the component.", + "type": "string" + }, + "Encrypted": { + "description": "The encryption status of the component.", + "type": "boolean" + }, + "KmsKeyId": { + "description": "The KMS key identifier used to encrypt the component.", + "type": "string" + }, + "Name": { + "description": "The name of the component.", + "type": "string" + }, + "Platform": { + "description": "The platform of the component.", + "enum": [ + "Windows", + "Linux", + "macOS" + ], + "type": "string" + }, + "SupportedOsVersions": { + "description": "The operating system (OS) version supported by the component.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Tags": { + "additionalProperties": false, + "description": "The tags associated with the component.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "Type": { + "description": "The type of the component denotes whether the component is used to build the image or only to test it. ", + "enum": [ + "BUILD", + "TEST" + ], + "type": "string" + }, + "Uri": { + "description": "The uri of the component.", + "type": "string" + }, + "Version": { + "description": "The version of the component.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Type", + "/properties/Encrypted" + ], + "required": [ + "Name", + "Platform", + "Version" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "imagebuilder:TagResource", + "imagebuilder:UnTagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::ImageBuilder::Component", + "writeOnlyProperties": [ + "/properties/Data", + "/properties/Uri" + ] +} diff --git a/src/schema/aws-imagebuilder-containerrecipe.json b/src/schema/aws-imagebuilder-containerrecipe.json index 3f5bcb42..7fa02c33 100644 --- a/src/schema/aws-imagebuilder-containerrecipe.json +++ b/src/schema/aws-imagebuilder-containerrecipe.json @@ -1,343 +1,352 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Version", - "/properties/ContainerType", - "/properties/TargetRepository", - "/properties/InstanceConfiguration", - "/properties/ParentImage", - "/properties/Description", - "/properties/DockerfileTemplateUri", - "/properties/DockerfileTemplateData", - "/properties/ImageOsVersionOverride", - "/properties/KmsKeyId", - "/properties/PlatformOverride", - "/properties/WorkingDirectory", - "/properties/Components", - "/properties/Tags" - ], - "definitions": { - "ComponentConfiguration": { - "additionalProperties": false, - "description": "Configuration details of the component.", - "properties": { - "ComponentArn": { - "description": "The Amazon Resource Name (ARN) of the component.", - "type": "string" - }, - "Parameters": { - "description": "A group of parameter settings that are used to configure the component for a specific recipe.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ComponentParameter" - }, - "type": "array" - } - }, - "type": "object" - }, - "ComponentParameter": { - "additionalProperties": false, - "description": "Contains a key/value pair that sets the named component parameter.", - "properties": { - "Name": { - "description": "The name of the component parameter to set.", - "type": "string" - }, - "Value": { - "description": "Sets the value for the named component parameter.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "Name", - "Value" - ], - "type": "object" - }, - "EbsInstanceBlockDeviceSpecification": { - "additionalProperties": false, - "description": "Amazon EBS-specific block device mapping specifications. ", - "properties": { - "DeleteOnTermination": { - "description": "Use to configure delete on termination of the associated device.", - "type": "boolean" - }, - "Encrypted": { - "description": "Use to configure device encryption.", - "type": "boolean" - }, - "Iops": { - "description": "Use to configure device IOPS.", - "type": "integer" - }, - "KmsKeyId": { - "description": "Use to configure the KMS key to use when encrypting the device.", - "type": "string" - }, - "SnapshotId": { - "description": "The snapshot that defines the device contents.", - "type": "string" - }, - "Throughput": { - "description": "For GP3 volumes only - The throughput in MiB/s that the volume supports.", - "type": "integer" - }, - "VolumeSize": { - "description": "Use to override the device's volume size.", - "type": "integer" - }, - "VolumeType": { - "description": "Use to override the device's volume type.", - "enum": [ - "standard", - "io1", - "io2", - "gp2", - "gp3", - "sc1", - "st1" - ], - "type": "string" - } - }, - "type": "object" - }, - "InstanceBlockDeviceMapping": { - "additionalProperties": false, - "description": "Defines block device mappings for the instance used to configure your image. ", - "properties": { - "DeviceName": { - "description": "The device to which these mappings apply.", - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/EbsInstanceBlockDeviceSpecification", - "description": "Use to manage Amazon EBS-specific configuration for this mapping." - }, - "NoDevice": { - "description": "Use to remove a mapping from the parent image.", - "type": "string" - }, - "VirtualName": { - "description": "Use to manage instance ephemeral devices.", - "type": "string" - } - }, - "type": "object" - }, - "InstanceConfiguration": { - "additionalProperties": false, - "description": "A group of options that can be used to configure an instance for building and testing container images.", - "properties": { - "BlockDeviceMappings": { - "description": "Defines the block devices to attach for building an instance from this Image Builder AMI.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/InstanceBlockDeviceMapping" - }, - "type": "array" - }, - "Image": { - "description": "The AMI ID to use as the base image for a container build and test instance. If not specified, Image Builder will use the appropriate ECS-optimized AMI as a base image.", - "type": "string" - } - }, - "type": "object" - }, - "TargetContainerRepository": { - "additionalProperties": false, - "description": "The container repository where the output container image is stored.", - "properties": { - "RepositoryName": { - "description": "The name of the container repository where the output container image is stored. This name is prefixed by the repository location.", - "type": "string" - }, - "Service": { - "description": "Specifies the service in which this image was registered.", - "enum": [ - "ECR" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::ImageBuilder::ContainerRecipe", - "handlers": { - "create": { - "permissions": [ - "iam:GetRole", - "iam:CreateServiceLinkedRole", - "imagebuilder:GetComponent", - "imagebuilder:TagResource", - "imagebuilder:GetContainerRecipe", - "imagebuilder:CreateContainerRecipe", - "imagebuilder:GetImage", - "kms:Encrypt", - "kms:Decrypt", - "kms:ReEncryptFrom", - "kms:ReEncryptTo", - "kms:GenerateDataKey", - "kms:GenerateDataKeyPair", - "kms:GenerateDataKeyPairWithoutPlaintext", - "kms:GenerateDataKeyWithoutPlaintext", - "s3:GetObject", - "s3:ListBucket", - "ecr:DescribeRepositories", - "ec2:DescribeImages" - ] - }, - "delete": { - "permissions": [ - "imagebuilder:UnTagResource", - "imagebuilder:GetContainerRecipe", - "imagebuilder:DeleteContainerRecipe" - ] - }, - "list": { - "permissions": [ - "imagebuilder:ListContainerRecipes" - ] - }, - "read": { - "permissions": [ - "imagebuilder:GetContainerRecipe" - ] - } - }, - "oneOf": [ - { - "required": [ - "DockerfileTemplateData", - "Name", - "Version", - "Components", - "ParentImage", - "TargetRepository", - "ContainerType" - ] - }, - { - "required": [ - "DockerfileTemplateUri", - "Name", - "Version", - "Components", - "ParentImage", - "TargetRepository", - "ContainerType" - ] - } - ], - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the container recipe.", - "type": "string" - }, - "Components": { - "description": "Components for build and test that are included in the container recipe.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ComponentConfiguration" - }, - "type": "array" - }, - "ContainerType": { - "description": "Specifies the type of container, such as Docker.", - "enum": [ - "DOCKER" - ], - "type": "string" - }, - "Description": { - "description": "The description of the container recipe.", - "type": "string" - }, - "DockerfileTemplateData": { - "description": "Dockerfiles are text documents that are used to build Docker containers, and ensure that they contain all of the elements required by the application running inside. The template data consists of contextual variables where Image Builder places build information or scripts, based on your container image recipe.", - "type": "string" - }, - "DockerfileTemplateUri": { - "description": "The S3 URI for the Dockerfile that will be used to build your container image.", - "type": "string" - }, - "ImageOsVersionOverride": { - "description": "Specifies the operating system version for the source image.", - "type": "string" - }, - "InstanceConfiguration": { - "$ref": "#/definitions/InstanceConfiguration", - "additionalProperties": false, - "description": "A group of options that can be used to configure an instance for building and testing container images." - }, - "KmsKeyId": { - "description": "Identifies which KMS key is used to encrypt the container image.", - "type": "string" - }, - "Name": { - "description": "The name of the container recipe.", - "type": "string" - }, - "ParentImage": { - "description": "The source image for the container recipe.", - "type": "string" - }, - "PlatformOverride": { - "description": "Specifies the operating system platform when you use a custom source image.", - "enum": [ - "Windows", - "Linux" - ], - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "Tags that are attached to the container recipe.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "TargetRepository": { - "$ref": "#/definitions/TargetContainerRepository", - "description": "The destination repository for the container image." - }, - "Version": { - "description": "The semantic version of the container recipe (..).", - "type": "string" - }, - "WorkingDirectory": { - "description": "The working directory to be used during build and test workflows.", - "type": "string" - } - }, - "propertyTransform": { - "/properties/InstanceConfiguration/BlockDeviceMappings/*/Ebs/VolumeType": "$uppercase(VolumeType)" - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ImageBuilder::ContainerRecipe", - "writeOnlyProperties": [ - "/properties/DockerfileTemplateData", - "/properties/DockerfileTemplateUri", - "/properties/ImageOsVersionOverride", - "/properties/PlatformOverride" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Version", + "/properties/ContainerType", + "/properties/TargetRepository", + "/properties/InstanceConfiguration", + "/properties/ParentImage", + "/properties/Description", + "/properties/DockerfileTemplateUri", + "/properties/DockerfileTemplateData", + "/properties/ImageOsVersionOverride", + "/properties/KmsKeyId", + "/properties/PlatformOverride", + "/properties/WorkingDirectory", + "/properties/Components", + "/properties/Tags" + ], + "definitions": { + "ComponentConfiguration": { + "additionalProperties": false, + "description": "Configuration details of the component.", + "properties": { + "ComponentArn": { + "description": "The Amazon Resource Name (ARN) of the component.", + "type": "string" + }, + "Parameters": { + "description": "A group of parameter settings that are used to configure the component for a specific recipe.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ComponentParameter" + }, + "type": "array" + } + }, + "type": "object" + }, + "ComponentParameter": { + "additionalProperties": false, + "description": "Contains a key/value pair that sets the named component parameter.", + "properties": { + "Name": { + "description": "The name of the component parameter to set.", + "type": "string" + }, + "Value": { + "description": "Sets the value for the named component parameter.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Value" + ], + "type": "object" + }, + "EbsInstanceBlockDeviceSpecification": { + "additionalProperties": false, + "description": "Amazon EBS-specific block device mapping specifications. ", + "properties": { + "DeleteOnTermination": { + "description": "Use to configure delete on termination of the associated device.", + "type": "boolean" + }, + "Encrypted": { + "description": "Use to configure device encryption.", + "type": "boolean" + }, + "Iops": { + "description": "Use to configure device IOPS.", + "type": "integer" + }, + "KmsKeyId": { + "description": "Use to configure the KMS key to use when encrypting the device.", + "type": "string" + }, + "SnapshotId": { + "description": "The snapshot that defines the device contents.", + "type": "string" + }, + "Throughput": { + "description": "For GP3 volumes only - The throughput in MiB/s that the volume supports.", + "type": "integer" + }, + "VolumeSize": { + "description": "Use to override the device's volume size.", + "type": "integer" + }, + "VolumeType": { + "description": "Use to override the device's volume type.", + "enum": [ + "standard", + "io1", + "io2", + "gp2", + "gp3", + "sc1", + "st1" + ], + "type": "string" + } + }, + "type": "object" + }, + "InstanceBlockDeviceMapping": { + "additionalProperties": false, + "description": "Defines block device mappings for the instance used to configure your image. ", + "properties": { + "DeviceName": { + "description": "The device to which these mappings apply.", + "type": "string" + }, + "Ebs": { + "$ref": "#/definitions/EbsInstanceBlockDeviceSpecification", + "description": "Use to manage Amazon EBS-specific configuration for this mapping." + }, + "NoDevice": { + "description": "Use to remove a mapping from the parent image.", + "type": "string" + }, + "VirtualName": { + "description": "Use to manage instance ephemeral devices.", + "type": "string" + } + }, + "type": "object" + }, + "InstanceConfiguration": { + "additionalProperties": false, + "description": "A group of options that can be used to configure an instance for building and testing container images.", + "properties": { + "BlockDeviceMappings": { + "description": "Defines the block devices to attach for building an instance from this Image Builder AMI.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InstanceBlockDeviceMapping" + }, + "type": "array" + }, + "Image": { + "description": "The AMI ID to use as the base image for a container build and test instance. If not specified, Image Builder will use the appropriate ECS-optimized AMI as a base image.", + "type": "string" + } + }, + "type": "object" + }, + "TargetContainerRepository": { + "additionalProperties": false, + "description": "The container repository where the output container image is stored.", + "properties": { + "RepositoryName": { + "description": "The name of the container repository where the output container image is stored. This name is prefixed by the repository location.", + "type": "string" + }, + "Service": { + "description": "Specifies the service in which this image was registered.", + "enum": [ + "ECR" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::ImageBuilder::ContainerRecipe", + "handlers": { + "create": { + "permissions": [ + "iam:GetRole", + "iam:CreateServiceLinkedRole", + "imagebuilder:GetComponent", + "imagebuilder:TagResource", + "imagebuilder:GetContainerRecipe", + "imagebuilder:CreateContainerRecipe", + "imagebuilder:GetImage", + "kms:Encrypt", + "kms:Decrypt", + "kms:ReEncryptFrom", + "kms:ReEncryptTo", + "kms:GenerateDataKey", + "kms:GenerateDataKeyPair", + "kms:GenerateDataKeyPairWithoutPlaintext", + "kms:GenerateDataKeyWithoutPlaintext", + "s3:GetObject", + "s3:ListBucket", + "ecr:DescribeRepositories", + "ec2:DescribeImages" + ] + }, + "delete": { + "permissions": [ + "imagebuilder:UnTagResource", + "imagebuilder:GetContainerRecipe", + "imagebuilder:DeleteContainerRecipe" + ] + }, + "list": { + "permissions": [ + "imagebuilder:ListContainerRecipes" + ] + }, + "read": { + "permissions": [ + "imagebuilder:GetContainerRecipe", + "kms:Decrypt" + ] + } + }, + "oneOf": [ + { + "required": [ + "DockerfileTemplateData", + "Name", + "Version", + "Components", + "ParentImage", + "TargetRepository", + "ContainerType" + ] + }, + { + "required": [ + "DockerfileTemplateUri", + "Name", + "Version", + "Components", + "ParentImage", + "TargetRepository", + "ContainerType" + ] + } + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the container recipe.", + "type": "string" + }, + "Components": { + "description": "Components for build and test that are included in the container recipe.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ComponentConfiguration" + }, + "type": "array" + }, + "ContainerType": { + "description": "Specifies the type of container, such as Docker.", + "enum": [ + "DOCKER" + ], + "type": "string" + }, + "Description": { + "description": "The description of the container recipe.", + "type": "string" + }, + "DockerfileTemplateData": { + "description": "Dockerfiles are text documents that are used to build Docker containers, and ensure that they contain all of the elements required by the application running inside. The template data consists of contextual variables where Image Builder places build information or scripts, based on your container image recipe.", + "type": "string" + }, + "DockerfileTemplateUri": { + "description": "The S3 URI for the Dockerfile that will be used to build your container image.", + "type": "string" + }, + "ImageOsVersionOverride": { + "description": "Specifies the operating system version for the source image.", + "type": "string" + }, + "InstanceConfiguration": { + "$ref": "#/definitions/InstanceConfiguration", + "additionalProperties": false, + "description": "A group of options that can be used to configure an instance for building and testing container images." + }, + "KmsKeyId": { + "description": "Identifies which KMS key is used to encrypt the container image.", + "type": "string" + }, + "Name": { + "description": "The name of the container recipe.", + "type": "string" + }, + "ParentImage": { + "description": "The source image for the container recipe.", + "type": "string" + }, + "PlatformOverride": { + "description": "Specifies the operating system platform when you use a custom source image.", + "enum": [ + "Windows", + "Linux" + ], + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "Tags that are attached to the container recipe.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "TargetRepository": { + "$ref": "#/definitions/TargetContainerRepository", + "description": "The destination repository for the container image." + }, + "Version": { + "description": "The semantic version of the container recipe (..).", + "type": "string" + }, + "WorkingDirectory": { + "description": "The working directory to be used during build and test workflows.", + "type": "string" + } + }, + "propertyTransform": { + "/properties/InstanceConfiguration/BlockDeviceMappings/*/Ebs/VolumeType": "$uppercase(VolumeType)" + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "imagebuilder:TagResource", + "imagebuilder:UnTagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::ImageBuilder::ContainerRecipe", + "writeOnlyProperties": [ + "/properties/DockerfileTemplateData", + "/properties/DockerfileTemplateUri", + "/properties/ImageOsVersionOverride", + "/properties/PlatformOverride" + ] +} diff --git a/src/schema/aws-imagebuilder-distributionconfiguration.json b/src/schema/aws-imagebuilder-distributionconfiguration.json index 5ba04d11..b1ddf94d 100644 --- a/src/schema/aws-imagebuilder-distributionconfiguration.json +++ b/src/schema/aws-imagebuilder-distributionconfiguration.json @@ -1,340 +1,344 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "AmiDistributionConfiguration": { - "additionalProperties": false, - "description": "The specific AMI settings (for example, launch permissions, AMI tags).", - "properties": { - "AmiTags": { - "additionalProperties": false, - "description": "The tags to apply to AMIs distributed to this Region.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "Description": { - "description": "The description of the AMI distribution configuration.", - "type": "string" - }, - "KmsKeyId": { - "description": "The KMS key identifier used to encrypt the distributed image.", - "type": "string" - }, - "LaunchPermissionConfiguration": { - "$ref": "#/definitions/LaunchPermissionConfiguration" - }, - "Name": { - "description": "The name of the AMI distribution configuration.", - "type": "string" - }, - "TargetAccountIds": { - "description": "The ID of accounts to which you want to distribute an image.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "ContainerDistributionConfiguration": { - "additionalProperties": false, - "description": "Container distribution settings for encryption, licensing, and sharing in a specific Region.", - "properties": { - "ContainerTags": { - "description": "Tags that are attached to the container distribution configuration.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "Description": { - "description": "The description of the container distribution configuration.", - "type": "string" - }, - "TargetRepository": { - "$ref": "#/definitions/TargetContainerRepository", - "description": "The destination repository for the container distribution configuration." - } - }, - "type": "object" - }, - "Distribution": { - "additionalProperties": false, - "description": "The distributions of the distribution configuration.", - "properties": { - "AmiDistributionConfiguration": { - "$ref": "#/definitions/AmiDistributionConfiguration" - }, - "ContainerDistributionConfiguration": { - "$ref": "#/definitions/ContainerDistributionConfiguration" - }, - "FastLaunchConfigurations": { - "description": "The Windows faster-launching configurations to use for AMI distribution.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/FastLaunchConfiguration" - }, - "type": "array" - }, - "LaunchTemplateConfigurations": { - "description": "A group of launchTemplateConfiguration settings that apply to image distribution.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/LaunchTemplateConfiguration" - }, - "type": "array" - }, - "LicenseConfigurationArns": { - "description": "The License Manager Configuration to associate with the AMI in the specified Region.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/LicenseConfigurationArn" - }, - "type": "array" - }, - "Region": { - "description": "region", - "type": "string" - } - }, - "required": [ - "Region" - ], - "type": "object" - }, - "FastLaunchConfiguration": { - "additionalProperties": false, - "description": "The Windows faster-launching configuration to use for AMI distribution.", - "properties": { - "AccountId": { - "description": "The owner account ID for the fast-launch enabled Windows AMI.", - "type": "string" - }, - "Enabled": { - "description": "A Boolean that represents the current state of faster launching for the Windows AMI. Set to true to start using Windows faster launching, or false to stop using it.", - "type": "boolean" - }, - "LaunchTemplate": { - "$ref": "#/definitions/FastLaunchLaunchTemplateSpecification", - "description": "The launch template that the fast-launch enabled Windows AMI uses when it launches Windows instances to create pre-provisioned snapshots." - }, - "MaxParallelLaunches": { - "description": "The maximum number of parallel instances that are launched for creating resources.", - "type": "integer" - }, - "SnapshotConfiguration": { - "$ref": "#/definitions/FastLaunchSnapshotConfiguration", - "description": "Configuration settings for managing the number of snapshots that are created from pre-provisioned instances for the Windows AMI when faster launching is enabled." - } - }, - "type": "object" - }, - "FastLaunchLaunchTemplateSpecification": { - "additionalProperties": false, - "description": "The launch template that the fast-launch enabled Windows AMI uses when it launches Windows instances to create pre-provisioned snapshots.", - "properties": { - "LaunchTemplateId": { - "description": "The ID of the launch template to use for faster launching for a Windows AMI.", - "type": "string" - }, - "LaunchTemplateName": { - "description": "The name of the launch template to use for faster launching for a Windows AMI.", - "type": "string" - }, - "LaunchTemplateVersion": { - "description": "The version of the launch template to use for faster launching for a Windows AMI.", - "type": "string" - } - }, - "type": "object" - }, - "FastLaunchSnapshotConfiguration": { - "additionalProperties": false, - "description": "Configuration settings for managing the number of snapshots that are created from pre-provisioned instances for the Windows AMI when faster launching is enabled.", - "properties": { - "TargetResourceCount": { - "description": "The number of pre-provisioned snapshots to keep on hand for a fast-launch enabled Windows AMI.", - "type": "integer" - } - }, - "type": "object" - }, - "LaunchPermissionConfiguration": { - "additionalProperties": false, - "description": "Launch permissions can be used to configure which AWS accounts can use the AMI to launch instances.", - "properties": { - "OrganizationArns": { - "description": "The ARN for an Amazon Web Services Organization that you want to share your AMI with.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "OrganizationalUnitArns": { - "description": "The ARN for an Organizations organizational unit (OU) that you want to share your AMI with.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "UserGroups": { - "description": "The name of the group.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "UserIds": { - "description": "The AWS account ID.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "LaunchTemplateConfiguration": { - "additionalProperties": false, - "description": "launchTemplateConfiguration settings that apply to image distribution.", - "properties": { - "AccountId": { - "description": "The account ID that this configuration applies to.", - "type": "string" - }, - "LaunchTemplateId": { - "description": "Identifies the EC2 launch template to use.", - "type": "string" - }, - "SetDefaultVersion": { - "description": "Set the specified EC2 launch template as the default launch template for the specified account.", - "type": "boolean" - } - }, - "type": "object" - }, - "LicenseConfigurationArn": { - "description": "The Amazon Resource Name (ARN) of the License Manager configuration.", - "type": "string" - }, - "TargetContainerRepository": { - "additionalProperties": false, - "description": "The destination repository for the container image.", - "properties": { - "RepositoryName": { - "description": "The repository name of target container repository.", - "type": "string" - }, - "Service": { - "description": "The service of target container repository.", - "enum": [ - "ECR" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::ImageBuilder::DistributionConfiguration", - "handlers": { - "create": { - "permissions": [ - "iam:GetRole", - "iam:CreateServiceLinkedRole", - "ec2:DescribeLaunchTemplates", - "ec2:CreateLaunchTemplateVersion", - "ec2:ModifyLaunchTemplate", - "imagebuilder:TagResource", - "imagebuilder:GetDistributionConfiguration", - "imagebuilder:CreateDistributionConfiguration" - ] - }, - "delete": { - "permissions": [ - "imagebuilder:GetDistributionConfiguration", - "imagebuilder:UnTagResource", - "imagebuilder:DeleteDistributionConfiguration" - ] - }, - "list": { - "permissions": [ - "imagebuilder:ListDistributionConfigurations" - ] - }, - "read": { - "permissions": [ - "imagebuilder:GetDistributionConfiguration" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeLaunchTemplates", - "ec2:CreateLaunchTemplateVersion", - "ec2:ModifyLaunchTemplate", - "imagebuilder:GetDistributionConfiguration", - "imagebuilder:UpdateDistributionConfiguration" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the distribution configuration.", - "type": "string" - }, - "Description": { - "description": "The description of the distribution configuration.", - "type": "string" - }, - "Distributions": { - "description": "The distributions of the distribution configuration.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Distribution" - }, - "type": "array" - }, - "Name": { - "description": "The name of the distribution configuration.", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "The tags associated with the component.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name", - "Distributions" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ImageBuilder::DistributionConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "AmiDistributionConfiguration": { + "additionalProperties": false, + "description": "The specific AMI settings (for example, launch permissions, AMI tags).", + "properties": { + "AmiTags": { + "additionalProperties": false, + "description": "The tags to apply to AMIs distributed to this Region.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "Description": { + "description": "The description of the AMI distribution configuration.", + "type": "string" + }, + "KmsKeyId": { + "description": "The KMS key identifier used to encrypt the distributed image.", + "type": "string" + }, + "LaunchPermissionConfiguration": { + "$ref": "#/definitions/LaunchPermissionConfiguration" + }, + "Name": { + "description": "The name of the AMI distribution configuration.", + "type": "string" + }, + "TargetAccountIds": { + "description": "The ID of accounts to which you want to distribute an image.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ContainerDistributionConfiguration": { + "additionalProperties": false, + "description": "Container distribution settings for encryption, licensing, and sharing in a specific Region.", + "properties": { + "ContainerTags": { + "description": "Tags that are attached to the container distribution configuration.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "Description": { + "description": "The description of the container distribution configuration.", + "type": "string" + }, + "TargetRepository": { + "$ref": "#/definitions/TargetContainerRepository", + "description": "The destination repository for the container distribution configuration." + } + }, + "type": "object" + }, + "Distribution": { + "additionalProperties": false, + "description": "The distributions of the distribution configuration.", + "properties": { + "AmiDistributionConfiguration": { + "$ref": "#/definitions/AmiDistributionConfiguration" + }, + "ContainerDistributionConfiguration": { + "$ref": "#/definitions/ContainerDistributionConfiguration" + }, + "FastLaunchConfigurations": { + "description": "The Windows faster-launching configurations to use for AMI distribution.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/FastLaunchConfiguration" + }, + "type": "array" + }, + "LaunchTemplateConfigurations": { + "description": "A group of launchTemplateConfiguration settings that apply to image distribution.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/LaunchTemplateConfiguration" + }, + "type": "array" + }, + "LicenseConfigurationArns": { + "description": "The License Manager Configuration to associate with the AMI in the specified Region.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/LicenseConfigurationArn" + }, + "type": "array" + }, + "Region": { + "description": "region", + "type": "string" + } + }, + "required": [ + "Region" + ], + "type": "object" + }, + "FastLaunchConfiguration": { + "additionalProperties": false, + "description": "The Windows faster-launching configuration to use for AMI distribution.", + "properties": { + "AccountId": { + "description": "The owner account ID for the fast-launch enabled Windows AMI.", + "type": "string" + }, + "Enabled": { + "description": "A Boolean that represents the current state of faster launching for the Windows AMI. Set to true to start using Windows faster launching, or false to stop using it.", + "type": "boolean" + }, + "LaunchTemplate": { + "$ref": "#/definitions/FastLaunchLaunchTemplateSpecification", + "description": "The launch template that the fast-launch enabled Windows AMI uses when it launches Windows instances to create pre-provisioned snapshots." + }, + "MaxParallelLaunches": { + "description": "The maximum number of parallel instances that are launched for creating resources.", + "type": "integer" + }, + "SnapshotConfiguration": { + "$ref": "#/definitions/FastLaunchSnapshotConfiguration", + "description": "Configuration settings for managing the number of snapshots that are created from pre-provisioned instances for the Windows AMI when faster launching is enabled." + } + }, + "type": "object" + }, + "FastLaunchLaunchTemplateSpecification": { + "additionalProperties": false, + "description": "The launch template that the fast-launch enabled Windows AMI uses when it launches Windows instances to create pre-provisioned snapshots.", + "properties": { + "LaunchTemplateId": { + "description": "The ID of the launch template to use for faster launching for a Windows AMI.", + "type": "string" + }, + "LaunchTemplateName": { + "description": "The name of the launch template to use for faster launching for a Windows AMI.", + "type": "string" + }, + "LaunchTemplateVersion": { + "description": "The version of the launch template to use for faster launching for a Windows AMI.", + "type": "string" + } + }, + "type": "object" + }, + "FastLaunchSnapshotConfiguration": { + "additionalProperties": false, + "description": "Configuration settings for managing the number of snapshots that are created from pre-provisioned instances for the Windows AMI when faster launching is enabled.", + "properties": { + "TargetResourceCount": { + "description": "The number of pre-provisioned snapshots to keep on hand for a fast-launch enabled Windows AMI.", + "type": "integer" + } + }, + "type": "object" + }, + "LaunchPermissionConfiguration": { + "additionalProperties": false, + "description": "Launch permissions can be used to configure which AWS accounts can use the AMI to launch instances.", + "properties": { + "OrganizationArns": { + "description": "The ARN for an Amazon Web Services Organization that you want to share your AMI with.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "OrganizationalUnitArns": { + "description": "The ARN for an Organizations organizational unit (OU) that you want to share your AMI with.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "UserGroups": { + "description": "The name of the group.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "UserIds": { + "description": "The AWS account ID.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "LaunchTemplateConfiguration": { + "additionalProperties": false, + "description": "launchTemplateConfiguration settings that apply to image distribution.", + "properties": { + "AccountId": { + "description": "The account ID that this configuration applies to.", + "type": "string" + }, + "LaunchTemplateId": { + "description": "Identifies the EC2 launch template to use.", + "type": "string" + }, + "SetDefaultVersion": { + "description": "Set the specified EC2 launch template as the default launch template for the specified account.", + "type": "boolean" + } + }, + "type": "object" + }, + "LicenseConfigurationArn": { + "description": "The Amazon Resource Name (ARN) of the License Manager configuration.", + "type": "string" + }, + "TargetContainerRepository": { + "additionalProperties": false, + "description": "The destination repository for the container image.", + "properties": { + "RepositoryName": { + "description": "The repository name of target container repository.", + "type": "string" + }, + "Service": { + "description": "The service of target container repository.", + "enum": [ + "ECR" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::ImageBuilder::DistributionConfiguration", + "handlers": { + "create": { + "permissions": [ + "iam:GetRole", + "iam:CreateServiceLinkedRole", + "ec2:DescribeLaunchTemplates", + "ec2:CreateLaunchTemplateVersion", + "ec2:ModifyLaunchTemplate", + "imagebuilder:TagResource", + "imagebuilder:GetDistributionConfiguration", + "imagebuilder:CreateDistributionConfiguration" + ] + }, + "delete": { + "permissions": [ + "imagebuilder:GetDistributionConfiguration", + "imagebuilder:UnTagResource", + "imagebuilder:DeleteDistributionConfiguration" + ] + }, + "list": { + "permissions": [ + "imagebuilder:ListDistributionConfigurations" + ] + }, + "read": { + "permissions": [ + "imagebuilder:GetDistributionConfiguration" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeLaunchTemplates", + "ec2:CreateLaunchTemplateVersion", + "ec2:ModifyLaunchTemplate", + "imagebuilder:GetDistributionConfiguration", + "imagebuilder:UpdateDistributionConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the distribution configuration.", + "type": "string" + }, + "Description": { + "description": "The description of the distribution configuration.", + "type": "string" + }, + "Distributions": { + "description": "The distributions of the distribution configuration.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Distribution" + }, + "type": "array" + }, + "Name": { + "description": "The name of the distribution configuration.", + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "The tags associated with the component.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name", + "Distributions" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ImageBuilder::DistributionConfiguration" +} diff --git a/src/schema/aws-imagebuilder-image.json b/src/schema/aws-imagebuilder-image.json index fbb958cc..ec478737 100644 --- a/src/schema/aws-imagebuilder-image.json +++ b/src/schema/aws-imagebuilder-image.json @@ -1,263 +1,277 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ImageRecipeArn", - "/properties/ContainerRecipeArn", - "/properties/InfrastructureConfigurationArn", - "/properties/Workflows", - "/properties/DistributionConfigurationArn", - "/properties/ImageTestsConfiguration", - "/properties/ImageScanningConfiguration", - "/properties/EnhancedImageMetadataEnabled", - "/properties/Tags" - ], - "definitions": { - "EcrConfiguration": { - "additionalProperties": false, - "description": "Settings for Image Builder to configure the ECR repository and output container images that are scanned.", - "properties": { - "ContainerTags": { - "description": "Tags for Image Builder to apply the output container image that is scanned. Tags can help you identify and manage your scanned images.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "RepositoryName": { - "description": "The name of the container repository that Amazon Inspector scans to identify findings for your container images. The name includes the path for the repository location. If you don\u2019t provide this information, Image Builder creates a repository in your account named image-builder-image-scanning-repository to use for vulnerability scans for your output container images.", - "type": "string" - } - }, - "type": "object" - }, - "ImageScanningConfiguration": { - "additionalProperties": false, - "description": "Contains settings for Image Builder image resource and container image scans.", - "properties": { - "EcrConfiguration": { - "$ref": "#/definitions/EcrConfiguration", - "description": "Contains ECR settings for vulnerability scans." - }, - "ImageScanningEnabled": { - "description": "This sets whether Image Builder keeps a snapshot of the vulnerability scans that Amazon Inspector runs against the build instance when you create a new image.", - "type": "boolean" - } - }, - "type": "object" - }, - "ImageTestsConfiguration": { - "additionalProperties": false, - "description": "The image tests configuration used when creating this image.", - "properties": { - "ImageTestsEnabled": { - "description": "ImageTestsEnabled", - "type": "boolean" - }, - "TimeoutMinutes": { - "description": "TimeoutMinutes", - "maximum": 1440, - "minimum": 60, - "type": "integer" - } - }, - "type": "object" - }, - "WorkflowConfiguration": { - "additionalProperties": false, - "description": "The workflow configuration of the image", - "properties": { - "OnFailure": { - "description": "Define execution decision in case of workflow failure", - "enum": [ - "CONTINUE", - "ABORT" - ], - "type": "string" - }, - "ParallelGroup": { - "description": "The parallel group name", - "type": "string" - }, - "Parameters": { - "description": "The parameters associated with the workflow", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/WorkflowParameter" - }, - "type": "array" - }, - "WorkflowArn": { - "description": "The Amazon Resource Name (ARN) of the workflow", - "type": "string" - } - }, - "type": "object" - }, - "WorkflowParameter": { - "additionalProperties": false, - "description": "A parameter associated with the workflow", - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/WorkflowParameterValue" - }, - "type": "array" - } - }, - "type": "object" - }, - "WorkflowParameterValue": { - "description": "The value associated with the workflow parameter", - "type": "string" - } - }, - "description": "Resource schema for AWS::ImageBuilder::Image", - "handlers": { - "create": { - "permissions": [ - "ecr:BatchGetRepositoryScanningConfiguration", - "iam:GetRole", - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "imagebuilder:GetImageRecipe", - "imagebuilder:GetInfrastructureConfiguration", - "imagebuilder:GetDistributionConfiguration", - "imagebuilder:GetWorkflow", - "imagebuilder:GetImage", - "imagebuilder:CreateImage", - "imagebuilder:TagResource", - "inspector2:BatchGetAccountStatus" - ], - "timeoutInMinutes": 720 - }, - "delete": { - "permissions": [ - "imagebuilder:GetImage", - "imagebuilder:DeleteImage", - "imagebuilder:UnTagResource", - "imagebuilder:CancelImageCreation" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Arn": { - "$ref": "resource-schema.json#/properties/Arn" - } - }, - "required": [ - "Arn" - ] - }, - "permissions": [ - "imagebuilder:ListImages" - ] - }, - "read": { - "permissions": [ - "imagebuilder:GetImage" - ] - } - }, - "oneOf": [ - { - "required": [ - "ContainerRecipeArn", - "InfrastructureConfigurationArn" - ] - }, - { - "required": [ - "ImageRecipeArn", - "InfrastructureConfigurationArn" - ] - } - ], - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the image.", - "type": "string" - }, - "ContainerRecipeArn": { - "description": "The Amazon Resource Name (ARN) of the container recipe that defines how images are configured and tested.", - "type": "string" - }, - "DistributionConfigurationArn": { - "description": "The Amazon Resource Name (ARN) of the distribution configuration.", - "type": "string" - }, - "EnhancedImageMetadataEnabled": { - "description": "Collects additional information about the image being created, including the operating system (OS) version and package list.", - "type": "boolean" - }, - "ExecutionRole": { - "description": "The execution role name/ARN for the image build, if provided", - "type": "string" - }, - "ImageId": { - "description": "The AMI ID of the EC2 AMI in current region.", - "type": "string" - }, - "ImageRecipeArn": { - "description": "The Amazon Resource Name (ARN) of the image recipe that defines how images are configured, tested, and assessed.", - "type": "string" - }, - "ImageScanningConfiguration": { - "$ref": "#/definitions/ImageScanningConfiguration", - "description": "Contains settings for vulnerability scans." - }, - "ImageTestsConfiguration": { - "$ref": "#/definitions/ImageTestsConfiguration", - "description": "The image tests configuration used when creating this image." - }, - "ImageUri": { - "description": "URI for containers created in current Region with default ECR image tag", - "type": "string" - }, - "InfrastructureConfigurationArn": { - "description": "The Amazon Resource Name (ARN) of the infrastructure configuration.", - "type": "string" - }, - "Name": { - "description": "The name of the image.", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "The tags associated with the image.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "Workflows": { - "description": "Workflows to define the image build process", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/WorkflowConfiguration" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Name", - "/properties/ImageId", - "/properties/ImageUri" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ImageBuilder::Image" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ImageRecipeArn", + "/properties/ContainerRecipeArn", + "/properties/InfrastructureConfigurationArn", + "/properties/Workflows", + "/properties/DistributionConfigurationArn", + "/properties/ImageTestsConfiguration", + "/properties/ImageScanningConfiguration", + "/properties/EnhancedImageMetadataEnabled", + "/properties/Tags" + ], + "definitions": { + "EcrConfiguration": { + "additionalProperties": false, + "description": "Settings for Image Builder to configure the ECR repository and output container images that are scanned.", + "properties": { + "ContainerTags": { + "description": "Tags for Image Builder to apply the output container image that is scanned. Tags can help you identify and manage your scanned images.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "RepositoryName": { + "description": "The name of the container repository that Amazon Inspector scans to identify findings for your container images. The name includes the path for the repository location. If you don\u2019t provide this information, Image Builder creates a repository in your account named image-builder-image-scanning-repository to use for vulnerability scans for your output container images.", + "type": "string" + } + }, + "type": "object" + }, + "ImageScanningConfiguration": { + "additionalProperties": false, + "description": "Contains settings for Image Builder image resource and container image scans.", + "properties": { + "EcrConfiguration": { + "$ref": "#/definitions/EcrConfiguration", + "description": "Contains ECR settings for vulnerability scans." + }, + "ImageScanningEnabled": { + "description": "This sets whether Image Builder keeps a snapshot of the vulnerability scans that Amazon Inspector runs against the build instance when you create a new image.", + "type": "boolean" + } + }, + "type": "object" + }, + "ImageTestsConfiguration": { + "additionalProperties": false, + "description": "The image tests configuration used when creating this image.", + "properties": { + "ImageTestsEnabled": { + "description": "ImageTestsEnabled", + "type": "boolean" + }, + "TimeoutMinutes": { + "description": "TimeoutMinutes", + "maximum": 1440, + "minimum": 60, + "type": "integer" + } + }, + "type": "object" + }, + "WorkflowConfiguration": { + "additionalProperties": false, + "description": "The workflow configuration of the image", + "properties": { + "OnFailure": { + "description": "Define execution decision in case of workflow failure", + "enum": [ + "CONTINUE", + "ABORT" + ], + "type": "string" + }, + "ParallelGroup": { + "description": "The parallel group name", + "type": "string" + }, + "Parameters": { + "description": "The parameters associated with the workflow", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/WorkflowParameter" + }, + "type": "array" + }, + "WorkflowArn": { + "description": "The Amazon Resource Name (ARN) of the workflow", + "type": "string" + } + }, + "type": "object" + }, + "WorkflowParameter": { + "additionalProperties": false, + "description": "A parameter associated with the workflow", + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/WorkflowParameterValue" + }, + "type": "array" + } + }, + "type": "object" + }, + "WorkflowParameterValue": { + "description": "The value associated with the workflow parameter", + "type": "string" + } + }, + "description": "Resource schema for AWS::ImageBuilder::Image", + "handlers": { + "create": { + "permissions": [ + "ecr:BatchGetRepositoryScanningConfiguration", + "iam:GetRole", + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "imagebuilder:GetImageRecipe", + "imagebuilder:GetInfrastructureConfiguration", + "imagebuilder:GetDistributionConfiguration", + "imagebuilder:GetWorkflow", + "imagebuilder:GetImage", + "imagebuilder:CreateImage", + "imagebuilder:TagResource", + "inspector2:BatchGetAccountStatus" + ], + "timeoutInMinutes": 720 + }, + "delete": { + "permissions": [ + "imagebuilder:GetImage", + "imagebuilder:DeleteImage", + "imagebuilder:UnTagResource", + "imagebuilder:CancelImageCreation" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Arn": { + "$ref": "resource-schema.json#/properties/Arn" + } + }, + "required": [ + "Arn" + ] + }, + "permissions": [ + "imagebuilder:ListImages", + "imagebuilder:ListImageBuildVersions" + ] + }, + "read": { + "permissions": [ + "imagebuilder:GetImage" + ] + } + }, + "oneOf": [ + { + "required": [ + "ContainerRecipeArn", + "InfrastructureConfigurationArn" + ] + }, + { + "required": [ + "ImageRecipeArn", + "InfrastructureConfigurationArn" + ] + }, + { + "required": [ + "ImportDiskImageSettings" + ] + } + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the image.", + "type": "string" + }, + "ContainerRecipeArn": { + "description": "The Amazon Resource Name (ARN) of the container recipe that defines how images are configured and tested.", + "type": "string" + }, + "DistributionConfigurationArn": { + "description": "The Amazon Resource Name (ARN) of the distribution configuration.", + "type": "string" + }, + "EnhancedImageMetadataEnabled": { + "description": "Collects additional information about the image being created, including the operating system (OS) version and package list.", + "type": "boolean" + }, + "ExecutionRole": { + "description": "The execution role name/ARN for the image build, if provided", + "type": "string" + }, + "ImageId": { + "description": "The AMI ID of the EC2 AMI in current region.", + "type": "string" + }, + "ImageRecipeArn": { + "description": "The Amazon Resource Name (ARN) of the image recipe that defines how images are configured, tested, and assessed.", + "type": "string" + }, + "ImageScanningConfiguration": { + "$ref": "#/definitions/ImageScanningConfiguration", + "description": "Contains settings for vulnerability scans." + }, + "ImageTestsConfiguration": { + "$ref": "#/definitions/ImageTestsConfiguration", + "description": "The image tests configuration used when creating this image." + }, + "ImageUri": { + "description": "URI for containers created in current Region with default ECR image tag", + "type": "string" + }, + "InfrastructureConfigurationArn": { + "description": "The Amazon Resource Name (ARN) of the infrastructure configuration.", + "type": "string" + }, + "Name": { + "description": "The name of the image.", + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "The tags associated with the image.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "Workflows": { + "description": "Workflows to define the image build process", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/WorkflowConfiguration" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Name", + "/properties/ImageId", + "/properties/ImageUri" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "imagebuilder:TagResource", + "imagebuilder:UnTagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::ImageBuilder::Image" +} diff --git a/src/schema/aws-imagebuilder-imagepipeline.json b/src/schema/aws-imagebuilder-imagepipeline.json index 679d8903..da974817 100644 --- a/src/schema/aws-imagebuilder-imagepipeline.json +++ b/src/schema/aws-imagebuilder-imagepipeline.json @@ -1,277 +1,281 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "EcrConfiguration": { - "additionalProperties": false, - "description": "Settings for Image Builder to configure the ECR repository and output container images that are scanned.", - "properties": { - "ContainerTags": { - "description": "Tags for Image Builder to apply the output container image that is scanned. Tags can help you identify and manage your scanned images.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "RepositoryName": { - "description": "The name of the container repository that Amazon Inspector scans to identify findings for your container images. The name includes the path for the repository location. If you don't provide this information, Image Builder creates a repository in your account named image-builder-image-scanning-repository to use for vulnerability scans for your output container images.", - "type": "string" - } - }, - "type": "object" - }, - "ImageScanningConfiguration": { - "additionalProperties": false, - "description": "Determines if tests should run after building the image. Image Builder defaults to enable tests to run following the image build, before image distribution.", - "properties": { - "EcrConfiguration": { - "$ref": "#/definitions/EcrConfiguration", - "description": "Contains ECR settings for vulnerability scans." - }, - "ImageScanningEnabled": { - "description": "This sets whether Image Builder keeps a snapshot of the vulnerability scans that Amazon Inspector runs against the build instance when you create a new image.", - "type": "boolean" - } - }, - "type": "object" - }, - "ImageTestsConfiguration": { - "additionalProperties": false, - "description": "Image tests configuration.", - "properties": { - "ImageTestsEnabled": { - "description": "Defines if tests should be executed when building this image.", - "type": "boolean" - }, - "TimeoutMinutes": { - "description": "The maximum time in minutes that tests are permitted to run.", - "maximum": 1440, - "minimum": 60, - "type": "integer" - } - }, - "type": "object" - }, - "Schedule": { - "additionalProperties": false, - "description": "The schedule of the image pipeline.", - "properties": { - "PipelineExecutionStartCondition": { - "description": "The condition configures when the pipeline should trigger a new image build.", - "enum": [ - "EXPRESSION_MATCH_ONLY", - "EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE" - ], - "type": "string" - }, - "ScheduleExpression": { - "description": "The expression determines how often EC2 Image Builder evaluates your pipelineExecutionStartCondition.", - "type": "string" - } - }, - "type": "object" - }, - "WorkflowConfiguration": { - "additionalProperties": false, - "description": "The workflow configuration of the image", - "properties": { - "OnFailure": { - "description": "Define execution decision in case of workflow failure", - "enum": [ - "CONTINUE", - "ABORT" - ], - "type": "string" - }, - "ParallelGroup": { - "description": "The parallel group name", - "type": "string" - }, - "Parameters": { - "description": "The parameters associated with the workflow", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/WorkflowParameter" - }, - "type": "array" - }, - "WorkflowArn": { - "description": "The Amazon Resource Name (ARN) of the workflow", - "type": "string" - } - }, - "type": "object" - }, - "WorkflowParameter": { - "additionalProperties": false, - "description": "A parameter associated with the workflow", - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/WorkflowParameterValue" - }, - "type": "array" - } - }, - "type": "object" - }, - "WorkflowParameterValue": { - "description": "The value associated with the workflow parameter", - "type": "string" - } - }, - "description": "Resource schema for AWS::ImageBuilder::ImagePipeline", - "handlers": { - "create": { - "permissions": [ - "ecr:BatchGetRepositoryScanningConfiguration", - "iam:GetRole", - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "imagebuilder:TagResource", - "imagebuilder:GetImagePipeline", - "imagebuilder:GetImageRecipe", - "imagebuilder:GetInfrastructureConfiguration", - "imagebuilder:GetDistributionConfiguration", - "imagebuilder:CreateImagePipeline", - "imagebuilder:GetWorkflow", - "inspector2:BatchGetAccountStatus" - ] - }, - "delete": { - "permissions": [ - "imagebuilder:UnTagResource", - "imagebuilder:GetImagePipeline", - "imagebuilder:DeleteImagePipeline" - ] - }, - "list": { - "permissions": [ - "imagebuilder:ListImagePipelines" - ] - }, - "read": { - "permissions": [ - "imagebuilder:GetImagePipeline" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "imagebuilder:GetImagePipeline", - "imagebuilder:UpdateImagePipeline", - "imagebuilder:GetWorkflow" - ] - } - }, - "oneOf": [ - { - "required": [ - "Name", - "ContainerRecipeArn", - "InfrastructureConfigurationArn" - ] - }, - { - "required": [ - "Name", - "ImageRecipeArn", - "InfrastructureConfigurationArn" - ] - } - ], - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the image pipeline.", - "type": "string" - }, - "ContainerRecipeArn": { - "description": "The Amazon Resource Name (ARN) of the container recipe that defines how images are configured and tested.", - "type": "string" - }, - "Description": { - "description": "The description of the image pipeline.", - "type": "string" - }, - "DistributionConfigurationArn": { - "description": "The Amazon Resource Name (ARN) of the distribution configuration associated with this image pipeline.", - "type": "string" - }, - "EnhancedImageMetadataEnabled": { - "description": "Collects additional information about the image being created, including the operating system (OS) version and package list.", - "type": "boolean" - }, - "ExecutionRole": { - "description": "The execution role name/ARN for the image build, if provided", - "type": "string" - }, - "ImageRecipeArn": { - "description": "The Amazon Resource Name (ARN) of the image recipe that defines how images are configured, tested, and assessed.", - "type": "string" - }, - "ImageScanningConfiguration": { - "$ref": "#/definitions/ImageScanningConfiguration", - "description": "Contains settings for vulnerability scans." - }, - "ImageTestsConfiguration": { - "$ref": "#/definitions/ImageTestsConfiguration", - "description": "The image tests configuration of the image pipeline." - }, - "InfrastructureConfigurationArn": { - "description": "The Amazon Resource Name (ARN) of the infrastructure configuration associated with this image pipeline.", - "type": "string" - }, - "Name": { - "description": "The name of the image pipeline.", - "type": "string" - }, - "Schedule": { - "$ref": "#/definitions/Schedule", - "description": "The schedule of the image pipeline." - }, - "Status": { - "description": "The status of the image pipeline.", - "enum": [ - "DISABLED", - "ENABLED" - ], - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "The tags of this image pipeline.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "Workflows": { - "description": "Workflows to define the image build process", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/WorkflowConfiguration" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ImageBuilder::ImagePipeline" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "EcrConfiguration": { + "additionalProperties": false, + "description": "Settings for Image Builder to configure the ECR repository and output container images that are scanned.", + "properties": { + "ContainerTags": { + "description": "Tags for Image Builder to apply the output container image that is scanned. Tags can help you identify and manage your scanned images.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "RepositoryName": { + "description": "The name of the container repository that Amazon Inspector scans to identify findings for your container images. The name includes the path for the repository location. If you don't provide this information, Image Builder creates a repository in your account named image-builder-image-scanning-repository to use for vulnerability scans for your output container images.", + "type": "string" + } + }, + "type": "object" + }, + "ImageScanningConfiguration": { + "additionalProperties": false, + "description": "Determines if tests should run after building the image. Image Builder defaults to enable tests to run following the image build, before image distribution.", + "properties": { + "EcrConfiguration": { + "$ref": "#/definitions/EcrConfiguration", + "description": "Contains ECR settings for vulnerability scans." + }, + "ImageScanningEnabled": { + "description": "This sets whether Image Builder keeps a snapshot of the vulnerability scans that Amazon Inspector runs against the build instance when you create a new image.", + "type": "boolean" + } + }, + "type": "object" + }, + "ImageTestsConfiguration": { + "additionalProperties": false, + "description": "Image tests configuration.", + "properties": { + "ImageTestsEnabled": { + "description": "Defines if tests should be executed when building this image.", + "type": "boolean" + }, + "TimeoutMinutes": { + "description": "The maximum time in minutes that tests are permitted to run.", + "maximum": 1440, + "minimum": 60, + "type": "integer" + } + }, + "type": "object" + }, + "Schedule": { + "additionalProperties": false, + "description": "The schedule of the image pipeline.", + "properties": { + "PipelineExecutionStartCondition": { + "description": "The condition configures when the pipeline should trigger a new image build.", + "enum": [ + "EXPRESSION_MATCH_ONLY", + "EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE" + ], + "type": "string" + }, + "ScheduleExpression": { + "description": "The expression determines how often EC2 Image Builder evaluates your pipelineExecutionStartCondition.", + "type": "string" + } + }, + "type": "object" + }, + "WorkflowConfiguration": { + "additionalProperties": false, + "description": "The workflow configuration of the image", + "properties": { + "OnFailure": { + "description": "Define execution decision in case of workflow failure", + "enum": [ + "CONTINUE", + "ABORT" + ], + "type": "string" + }, + "ParallelGroup": { + "description": "The parallel group name", + "type": "string" + }, + "Parameters": { + "description": "The parameters associated with the workflow", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/WorkflowParameter" + }, + "type": "array" + }, + "WorkflowArn": { + "description": "The Amazon Resource Name (ARN) of the workflow", + "type": "string" + } + }, + "type": "object" + }, + "WorkflowParameter": { + "additionalProperties": false, + "description": "A parameter associated with the workflow", + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/WorkflowParameterValue" + }, + "type": "array" + } + }, + "type": "object" + }, + "WorkflowParameterValue": { + "description": "The value associated with the workflow parameter", + "type": "string" + } + }, + "description": "Resource schema for AWS::ImageBuilder::ImagePipeline", + "handlers": { + "create": { + "permissions": [ + "ecr:BatchGetRepositoryScanningConfiguration", + "iam:GetRole", + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "imagebuilder:TagResource", + "imagebuilder:GetImagePipeline", + "imagebuilder:GetImageRecipe", + "imagebuilder:GetInfrastructureConfiguration", + "imagebuilder:GetDistributionConfiguration", + "imagebuilder:CreateImagePipeline", + "imagebuilder:GetWorkflow", + "inspector2:BatchGetAccountStatus" + ] + }, + "delete": { + "permissions": [ + "imagebuilder:UnTagResource", + "imagebuilder:GetImagePipeline", + "imagebuilder:DeleteImagePipeline" + ] + }, + "list": { + "permissions": [ + "imagebuilder:ListImagePipelines" + ] + }, + "read": { + "permissions": [ + "imagebuilder:GetImagePipeline" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "imagebuilder:GetImagePipeline", + "imagebuilder:UpdateImagePipeline", + "imagebuilder:GetWorkflow" + ] + } + }, + "oneOf": [ + { + "required": [ + "Name", + "ContainerRecipeArn", + "InfrastructureConfigurationArn" + ] + }, + { + "required": [ + "Name", + "ImageRecipeArn", + "InfrastructureConfigurationArn" + ] + } + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the image pipeline.", + "type": "string" + }, + "ContainerRecipeArn": { + "description": "The Amazon Resource Name (ARN) of the container recipe that defines how images are configured and tested.", + "type": "string" + }, + "Description": { + "description": "The description of the image pipeline.", + "type": "string" + }, + "DistributionConfigurationArn": { + "description": "The Amazon Resource Name (ARN) of the distribution configuration associated with this image pipeline.", + "type": "string" + }, + "EnhancedImageMetadataEnabled": { + "description": "Collects additional information about the image being created, including the operating system (OS) version and package list.", + "type": "boolean" + }, + "ExecutionRole": { + "description": "The execution role name/ARN for the image build, if provided", + "type": "string" + }, + "ImageRecipeArn": { + "description": "The Amazon Resource Name (ARN) of the image recipe that defines how images are configured, tested, and assessed.", + "type": "string" + }, + "ImageScanningConfiguration": { + "$ref": "#/definitions/ImageScanningConfiguration", + "description": "Contains settings for vulnerability scans." + }, + "ImageTestsConfiguration": { + "$ref": "#/definitions/ImageTestsConfiguration", + "description": "The image tests configuration of the image pipeline." + }, + "InfrastructureConfigurationArn": { + "description": "The Amazon Resource Name (ARN) of the infrastructure configuration associated with this image pipeline.", + "type": "string" + }, + "Name": { + "description": "The name of the image pipeline.", + "type": "string" + }, + "Schedule": { + "$ref": "#/definitions/Schedule", + "description": "The schedule of the image pipeline." + }, + "Status": { + "description": "The status of the image pipeline.", + "enum": [ + "DISABLED", + "ENABLED" + ], + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "The tags of this image pipeline.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "Workflows": { + "description": "Workflows to define the image build process", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/WorkflowConfiguration" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ImageBuilder::ImagePipeline" +} diff --git a/src/schema/aws-imagebuilder-imagerecipe.json b/src/schema/aws-imagebuilder-imagerecipe.json index 0f74126e..21ec1b3b 100644 --- a/src/schema/aws-imagebuilder-imagerecipe.json +++ b/src/schema/aws-imagebuilder-imagerecipe.json @@ -1,262 +1,270 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Version", - "/properties/Components", - "/properties/ParentImage", - "/properties/Description", - "/properties/BlockDeviceMappings", - "/properties/WorkingDirectory", - "/properties/Tags" - ], - "definitions": { - "AdditionalInstanceConfiguration": { - "additionalProperties": false, - "description": "Specify additional settings and launch scripts for your build instances.", - "properties": { - "SystemsManagerAgent": { - "$ref": "#/definitions/SystemsManagerAgent", - "description": "Contains settings for the SSM agent on your build instance." - }, - "UserDataOverride": { - "description": "Use this property to provide commands or a command script to run when you launch your build instance.", - "type": "string" - } - }, - "type": "object" - }, - "ComponentConfiguration": { - "additionalProperties": false, - "description": "Configuration details of the component.", - "properties": { - "ComponentArn": { - "description": "The Amazon Resource Name (ARN) of the component.", - "type": "string" - }, - "Parameters": { - "description": "A group of parameter settings that are used to configure the component for a specific recipe.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ComponentParameter" - }, - "type": "array" - } - }, - "type": "object" - }, - "ComponentParameter": { - "additionalProperties": false, - "description": "Contains a key/value pair that sets the named component parameter.", - "properties": { - "Name": { - "description": "The name of the component parameter to set.", - "type": "string" - }, - "Value": { - "description": "Sets the value for the named component parameter.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "Name", - "Value" - ], - "type": "object" - }, - "EbsInstanceBlockDeviceSpecification": { - "additionalProperties": false, - "description": "Amazon EBS-specific block device mapping specifications. ", - "properties": { - "DeleteOnTermination": { - "description": "Use to configure delete on termination of the associated device.", - "type": "boolean" - }, - "Encrypted": { - "description": "Use to configure device encryption.", - "type": "boolean" - }, - "Iops": { - "description": "Use to configure device IOPS.", - "type": "integer" - }, - "KmsKeyId": { - "description": "Use to configure the KMS key to use when encrypting the device.", - "type": "string" - }, - "SnapshotId": { - "description": "The snapshot that defines the device contents.", - "type": "string" - }, - "Throughput": { - "description": "For GP3 volumes only - The throughput in MiB/s that the volume supports.", - "type": "integer" - }, - "VolumeSize": { - "description": "Use to override the device's volume size.", - "type": "integer" - }, - "VolumeType": { - "description": "Use to override the device's volume type.", - "enum": [ - "standard", - "io1", - "io2", - "gp2", - "gp3", - "sc1", - "st1" - ], - "type": "string" - } - }, - "type": "object" - }, - "InstanceBlockDeviceMapping": { - "additionalProperties": false, - "description": "Defines block device mappings for the instance used to configure your image. ", - "properties": { - "DeviceName": { - "description": "The device to which these mappings apply.", - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/EbsInstanceBlockDeviceSpecification", - "description": "Use to manage Amazon EBS-specific configuration for this mapping." - }, - "NoDevice": { - "description": "Use to remove a mapping from the parent image.", - "type": "string" - }, - "VirtualName": { - "description": "Use to manage instance ephemeral devices.", - "type": "string" - } - }, - "type": "object" - }, - "SystemsManagerAgent": { - "additionalProperties": false, - "description": "Contains settings for the SSM agent on your build instance.", - "properties": { - "UninstallAfterBuild": { - "description": "Controls whether the SSM agent is removed from your final build image, prior to creating the new AMI. If this is set to true, then the agent is removed from the final image. If it's set to false, then the agent is left in, so that it is included in the new AMI. The default value is false.", - "type": "boolean" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::ImageBuilder::ImageRecipe", - "handlers": { - "create": { - "permissions": [ - "iam:GetRole", - "iam:CreateServiceLinkedRole", - "imagebuilder:GetComponent", - "imagebuilder:GetImage", - "imagebuilder:TagResource", - "imagebuilder:GetImageRecipe", - "imagebuilder:CreateImageRecipe", - "ec2:DescribeImages" - ] - }, - "delete": { - "permissions": [ - "imagebuilder:UnTagResource", - "imagebuilder:GetImageRecipe", - "imagebuilder:DeleteImageRecipe" - ] - }, - "list": { - "permissions": [ - "imagebuilder:ListImageRecipes" - ] - }, - "read": { - "permissions": [ - "imagebuilder:GetImageRecipe" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "AdditionalInstanceConfiguration": { - "$ref": "#/definitions/AdditionalInstanceConfiguration", - "description": "Specify additional settings and launch scripts for your build instances." - }, - "Arn": { - "description": "The Amazon Resource Name (ARN) of the image recipe.", - "type": "string" - }, - "BlockDeviceMappings": { - "description": "The block device mappings to apply when creating images from this recipe.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/InstanceBlockDeviceMapping" - }, - "type": "array" - }, - "Components": { - "description": "The components of the image recipe.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ComponentConfiguration" - }, - "type": "array" - }, - "Description": { - "description": "The description of the image recipe.", - "type": "string" - }, - "Name": { - "description": "The name of the image recipe.", - "type": "string" - }, - "ParentImage": { - "description": "The parent image of the image recipe.", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "The tags of the image recipe.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "Version": { - "description": "The version of the image recipe.", - "type": "string" - }, - "WorkingDirectory": { - "description": "The working directory to be used during build and test workflows.", - "type": "string" - } - }, - "propertyTransform": { - "/properties/BlockDeviceMappings/*/Ebs/VolumeType": "$uppercase(VolumeType)" - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name", - "Version", - "Components", - "ParentImage" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ImageBuilder::ImageRecipe" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Version", + "/properties/Components", + "/properties/ParentImage", + "/properties/Description", + "/properties/BlockDeviceMappings", + "/properties/WorkingDirectory", + "/properties/Tags" + ], + "definitions": { + "AdditionalInstanceConfiguration": { + "additionalProperties": false, + "description": "Specify additional settings and launch scripts for your build instances.", + "properties": { + "SystemsManagerAgent": { + "$ref": "#/definitions/SystemsManagerAgent", + "description": "Contains settings for the SSM agent on your build instance." + }, + "UserDataOverride": { + "description": "Use this property to provide commands or a command script to run when you launch your build instance.", + "type": "string" + } + }, + "type": "object" + }, + "ComponentConfiguration": { + "additionalProperties": false, + "description": "Configuration details of the component.", + "properties": { + "ComponentArn": { + "description": "The Amazon Resource Name (ARN) of the component.", + "type": "string" + }, + "Parameters": { + "description": "A group of parameter settings that are used to configure the component for a specific recipe.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ComponentParameter" + }, + "type": "array" + } + }, + "type": "object" + }, + "ComponentParameter": { + "additionalProperties": false, + "description": "Contains a key/value pair that sets the named component parameter.", + "properties": { + "Name": { + "description": "The name of the component parameter to set.", + "type": "string" + }, + "Value": { + "description": "Sets the value for the named component parameter.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Value" + ], + "type": "object" + }, + "EbsInstanceBlockDeviceSpecification": { + "additionalProperties": false, + "description": "Amazon EBS-specific block device mapping specifications. ", + "properties": { + "DeleteOnTermination": { + "description": "Use to configure delete on termination of the associated device.", + "type": "boolean" + }, + "Encrypted": { + "description": "Use to configure device encryption.", + "type": "boolean" + }, + "Iops": { + "description": "Use to configure device IOPS.", + "type": "integer" + }, + "KmsKeyId": { + "description": "Use to configure the KMS key to use when encrypting the device.", + "type": "string" + }, + "SnapshotId": { + "description": "The snapshot that defines the device contents.", + "type": "string" + }, + "Throughput": { + "description": "For GP3 volumes only - The throughput in MiB/s that the volume supports.", + "type": "integer" + }, + "VolumeSize": { + "description": "Use to override the device's volume size.", + "type": "integer" + }, + "VolumeType": { + "description": "Use to override the device's volume type.", + "enum": [ + "standard", + "io1", + "io2", + "gp2", + "gp3", + "sc1", + "st1" + ], + "type": "string" + } + }, + "type": "object" + }, + "InstanceBlockDeviceMapping": { + "additionalProperties": false, + "description": "Defines block device mappings for the instance used to configure your image. ", + "properties": { + "DeviceName": { + "description": "The device to which these mappings apply.", + "type": "string" + }, + "Ebs": { + "$ref": "#/definitions/EbsInstanceBlockDeviceSpecification", + "description": "Use to manage Amazon EBS-specific configuration for this mapping." + }, + "NoDevice": { + "description": "Use to remove a mapping from the parent image.", + "type": "string" + }, + "VirtualName": { + "description": "Use to manage instance ephemeral devices.", + "type": "string" + } + }, + "type": "object" + }, + "SystemsManagerAgent": { + "additionalProperties": false, + "description": "Contains settings for the SSM agent on your build instance.", + "properties": { + "UninstallAfterBuild": { + "description": "Controls whether the SSM agent is removed from your final build image, prior to creating the new AMI. If this is set to true, then the agent is removed from the final image. If it's set to false, then the agent is left in, so that it is included in the new AMI. The default value is false.", + "type": "boolean" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::ImageBuilder::ImageRecipe", + "handlers": { + "create": { + "permissions": [ + "iam:GetRole", + "iam:CreateServiceLinkedRole", + "imagebuilder:GetComponent", + "imagebuilder:GetImage", + "imagebuilder:TagResource", + "imagebuilder:GetImageRecipe", + "imagebuilder:CreateImageRecipe", + "ec2:DescribeImages" + ] + }, + "delete": { + "permissions": [ + "imagebuilder:UnTagResource", + "imagebuilder:GetImageRecipe", + "imagebuilder:DeleteImageRecipe" + ] + }, + "list": { + "permissions": [ + "imagebuilder:ListImageRecipes" + ] + }, + "read": { + "permissions": [ + "imagebuilder:GetImageRecipe" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AdditionalInstanceConfiguration": { + "$ref": "#/definitions/AdditionalInstanceConfiguration", + "description": "Specify additional settings and launch scripts for your build instances." + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the image recipe.", + "type": "string" + }, + "BlockDeviceMappings": { + "description": "The block device mappings to apply when creating images from this recipe.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InstanceBlockDeviceMapping" + }, + "type": "array" + }, + "Components": { + "description": "The components of the image recipe.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ComponentConfiguration" + }, + "type": "array" + }, + "Description": { + "description": "The description of the image recipe.", + "type": "string" + }, + "Name": { + "description": "The name of the image recipe.", + "type": "string" + }, + "ParentImage": { + "description": "The parent image of the image recipe.", + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "The tags of the image recipe.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "Version": { + "description": "The version of the image recipe.", + "type": "string" + }, + "WorkingDirectory": { + "description": "The working directory to be used during build and test workflows.", + "type": "string" + } + }, + "propertyTransform": { + "/properties/BlockDeviceMappings/*/Ebs/VolumeType": "$uppercase(VolumeType)" + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name", + "Version", + "Components", + "ParentImage" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "imagebuilder:TagResource", + "imagebuilder:UnTagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::ImageBuilder::ImageRecipe" +} diff --git a/src/schema/aws-imagebuilder-infrastructureconfiguration.json b/src/schema/aws-imagebuilder-infrastructureconfiguration.json index 6d7fa158..36812a68 100644 --- a/src/schema/aws-imagebuilder-infrastructureconfiguration.json +++ b/src/schema/aws-imagebuilder-infrastructureconfiguration.json @@ -1,236 +1,240 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "InstanceMetadataOptions": { - "additionalProperties": false, - "description": "The instance metadata option settings for the infrastructure configuration.", - "properties": { - "HttpPutResponseHopLimit": { - "description": "Limit the number of hops that an instance metadata request can traverse to reach its destination.", - "type": "integer" - }, - "HttpTokens": { - "description": "Indicates whether a signed token header is required for instance metadata retrieval requests. The values affect the response as follows: ", - "enum": [ - "required", - "optional" - ], - "type": "string" - } - }, - "type": "object" - }, - "Logging": { - "additionalProperties": false, - "description": "The logging configuration of the infrastructure configuration.", - "properties": { - "S3Logs": { - "$ref": "#/definitions/S3Logs" - } - }, - "type": "object" - }, - "Placement": { - "additionalProperties": false, - "description": "The placement options", - "properties": { - "AvailabilityZone": { - "description": "AvailabilityZone", - "type": "string" - }, - "HostId": { - "description": "HostId", - "type": "string" - }, - "HostResourceGroupArn": { - "description": "HostResourceGroupArn", - "type": "string" - }, - "Tenancy": { - "description": "Tenancy", - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - } - }, - "type": "object" - }, - "S3Logs": { - "additionalProperties": false, - "description": "The S3 path in which to store the logs.", - "properties": { - "S3BucketName": { - "description": "S3BucketName", - "type": "string" - }, - "S3KeyPrefix": { - "description": "S3KeyPrefix", - "type": "string" - } - }, - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "description": "TagMap", - "properties": { - "TagKey": { - "description": "TagKey", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "TagValue": { - "description": "TagValue", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::ImageBuilder::InfrastructureConfiguration", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "iam:GetRole", - "iam:GetInstanceProfile", - "iam:CreateServiceLinkedRole", - "sns:Publish", - "imagebuilder:TagResource", - "imagebuilder:GetInfrastructureConfiguration", - "imagebuilder:CreateInfrastructureConfiguration" - ] - }, - "delete": { - "permissions": [ - "imagebuilder:UnTagResource", - "imagebuilder:GetInfrastructureConfiguration", - "imagebuilder:DeleteInfrastructureConfiguration" - ] - }, - "list": { - "permissions": [ - "imagebuilder:ListInfrastructureConfigurations" - ] - }, - "read": { - "permissions": [ - "imagebuilder:GetInfrastructureConfiguration" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "sns:Publish", - "imagebuilder:GetInfrastructureConfiguration", - "imagebuilder:UpdateInfrastructureConfiguration" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the infrastructure configuration.", - "type": "string" - }, - "Description": { - "description": "The description of the infrastructure configuration.", - "type": "string" - }, - "InstanceMetadataOptions": { - "$ref": "#/definitions/InstanceMetadataOptions", - "description": "The instance metadata option settings for the infrastructure configuration." - }, - "InstanceProfileName": { - "description": "The instance profile of the infrastructure configuration.", - "type": "string" - }, - "InstanceTypes": { - "description": "The instance types of the infrastructure configuration.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "KeyPair": { - "description": "The EC2 key pair of the infrastructure configuration..", - "type": "string" - }, - "Logging": { - "$ref": "#/definitions/Logging", - "description": "The logging configuration of the infrastructure configuration." - }, - "Name": { - "description": "The name of the infrastructure configuration.", - "type": "string" - }, - "Placement": { - "$ref": "#/definitions/Placement", - "description": "The placement option settings for the infrastructure configuration." - }, - "ResourceTags": { - "additionalProperties": false, - "description": "The tags attached to the resource created by Image Builder.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "SecurityGroupIds": { - "description": "The security group IDs of the infrastructure configuration.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "SnsTopicArn": { - "description": "The SNS Topic Amazon Resource Name (ARN) of the infrastructure configuration.", - "type": "string" - }, - "SubnetId": { - "description": "The subnet ID of the infrastructure configuration.", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "The tags associated with the component.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "TerminateInstanceOnFailure": { - "description": "The terminate instance on failure configuration of the infrastructure configuration.", - "type": "boolean" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name", - "InstanceProfileName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ImageBuilder::InfrastructureConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "InstanceMetadataOptions": { + "additionalProperties": false, + "description": "The instance metadata option settings for the infrastructure configuration.", + "properties": { + "HttpPutResponseHopLimit": { + "description": "Limit the number of hops that an instance metadata request can traverse to reach its destination.", + "type": "integer" + }, + "HttpTokens": { + "description": "Indicates whether a signed token header is required for instance metadata retrieval requests. The values affect the response as follows: ", + "enum": [ + "required", + "optional" + ], + "type": "string" + } + }, + "type": "object" + }, + "Logging": { + "additionalProperties": false, + "description": "The logging configuration of the infrastructure configuration.", + "properties": { + "S3Logs": { + "$ref": "#/definitions/S3Logs" + } + }, + "type": "object" + }, + "Placement": { + "additionalProperties": false, + "description": "The placement options", + "properties": { + "AvailabilityZone": { + "description": "AvailabilityZone", + "type": "string" + }, + "HostId": { + "description": "HostId", + "type": "string" + }, + "HostResourceGroupArn": { + "description": "HostResourceGroupArn", + "type": "string" + }, + "Tenancy": { + "description": "Tenancy", + "enum": [ + "default", + "dedicated", + "host" + ], + "type": "string" + } + }, + "type": "object" + }, + "S3Logs": { + "additionalProperties": false, + "description": "The S3 path in which to store the logs.", + "properties": { + "S3BucketName": { + "description": "S3BucketName", + "type": "string" + }, + "S3KeyPrefix": { + "description": "S3KeyPrefix", + "type": "string" + } + }, + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "description": "TagMap", + "properties": { + "TagKey": { + "description": "TagKey", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "TagValue": { + "description": "TagValue", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::ImageBuilder::InfrastructureConfiguration", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "iam:GetRole", + "iam:GetInstanceProfile", + "iam:CreateServiceLinkedRole", + "sns:Publish", + "imagebuilder:TagResource", + "imagebuilder:GetInfrastructureConfiguration", + "imagebuilder:CreateInfrastructureConfiguration" + ] + }, + "delete": { + "permissions": [ + "imagebuilder:UnTagResource", + "imagebuilder:GetInfrastructureConfiguration", + "imagebuilder:DeleteInfrastructureConfiguration" + ] + }, + "list": { + "permissions": [ + "imagebuilder:ListInfrastructureConfigurations" + ] + }, + "read": { + "permissions": [ + "imagebuilder:GetInfrastructureConfiguration" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "sns:Publish", + "imagebuilder:GetInfrastructureConfiguration", + "imagebuilder:UpdateInfrastructureConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the infrastructure configuration.", + "type": "string" + }, + "Description": { + "description": "The description of the infrastructure configuration.", + "type": "string" + }, + "InstanceMetadataOptions": { + "$ref": "#/definitions/InstanceMetadataOptions", + "description": "The instance metadata option settings for the infrastructure configuration." + }, + "InstanceProfileName": { + "description": "The instance profile of the infrastructure configuration.", + "type": "string" + }, + "InstanceTypes": { + "description": "The instance types of the infrastructure configuration.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "KeyPair": { + "description": "The EC2 key pair of the infrastructure configuration..", + "type": "string" + }, + "Logging": { + "$ref": "#/definitions/Logging", + "description": "The logging configuration of the infrastructure configuration." + }, + "Name": { + "description": "The name of the infrastructure configuration.", + "type": "string" + }, + "Placement": { + "$ref": "#/definitions/Placement", + "description": "The placement option settings for the infrastructure configuration." + }, + "ResourceTags": { + "additionalProperties": false, + "description": "The tags attached to the resource created by Image Builder.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "SecurityGroupIds": { + "description": "The security group IDs of the infrastructure configuration.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "SnsTopicArn": { + "description": "The SNS Topic Amazon Resource Name (ARN) of the infrastructure configuration.", + "type": "string" + }, + "SubnetId": { + "description": "The subnet ID of the infrastructure configuration.", + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "The tags associated with the component.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "TerminateInstanceOnFailure": { + "description": "The terminate instance on failure configuration of the infrastructure configuration.", + "type": "boolean" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name", + "InstanceProfileName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ImageBuilder::InfrastructureConfiguration" +} diff --git a/src/schema/aws-imagebuilder-lifecyclepolicy.json b/src/schema/aws-imagebuilder-lifecyclepolicy.json index c339c6ff..4687dd56 100644 --- a/src/schema/aws-imagebuilder-lifecyclepolicy.json +++ b/src/schema/aws-imagebuilder-lifecyclepolicy.json @@ -1,343 +1,347 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Action": { - "additionalProperties": false, - "description": "The action of the policy detail.", - "properties": { - "IncludeResources": { - "$ref": "#/definitions/IncludeResources" - }, - "Type": { - "description": "The action type of the policy detail.", - "enum": [ - "DELETE", - "DEPRECATE", - "DISABLE" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "AmiExclusionRules": { - "additionalProperties": false, - "description": "The AMI exclusion rules for the policy detail.", - "properties": { - "IsPublic": { - "description": "Use to apply lifecycle policy actions on whether the AMI is public.", - "type": "boolean" - }, - "LastLaunched": { - "$ref": "#/definitions/LastLaunched", - "description": "Use to apply lifecycle policy actions on AMIs launched before a certain time." - }, - "Regions": { - "description": "Use to apply lifecycle policy actions on AMIs distributed to a set of regions.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "SharedAccounts": { - "description": "Use to apply lifecycle policy actions on AMIs shared with a set of regions.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "TagMap": { - "additionalProperties": false, - "description": "The AMIs to select by tag.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "ExclusionRules": { - "additionalProperties": false, - "description": "The exclusion rules to apply of the policy detail.", - "properties": { - "Amis": { - "$ref": "#/definitions/AmiExclusionRules" - }, - "TagMap": { - "additionalProperties": false, - "description": "The Image Builder tags to filter on.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "Filter": { - "additionalProperties": false, - "description": "The filters to apply of the policy detail.", - "properties": { - "RetainAtLeast": { - "description": "The minimum number of Image Builder resources to retain.", - "type": "integer" - }, - "Type": { - "description": "The filter type.", - "enum": [ - "AGE", - "COUNT" - ], - "type": "string" - }, - "Unit": { - "$ref": "#/definitions/TimeUnit", - "description": "The value's time unit." - }, - "Value": { - "description": "The filter value.", - "type": "integer" - } - }, - "required": [ - "Type", - "Value" - ], - "type": "object" - }, - "IncludeResources": { - "additionalProperties": false, - "description": "The included resources of the policy detail.", - "properties": { - "Amis": { - "description": "Use to configure lifecycle actions on AMIs.", - "type": "boolean" - }, - "Containers": { - "description": "Use to configure lifecycle actions on containers.", - "type": "boolean" - }, - "Snapshots": { - "description": "Use to configure lifecycle actions on snapshots.", - "type": "boolean" - } - }, - "type": "object" - }, - "LastLaunched": { - "additionalProperties": false, - "description": "The last launched time of a resource.", - "properties": { - "Unit": { - "$ref": "#/definitions/TimeUnit", - "description": "The value's time unit." - }, - "Value": { - "description": "The last launched value.", - "type": "integer" - } - }, - "required": [ - "Value", - "Unit" - ], - "type": "object" - }, - "PolicyDetail": { - "additionalProperties": false, - "description": "The policy detail of the lifecycle policy.", - "properties": { - "Action": { - "$ref": "#/definitions/Action" - }, - "ExclusionRules": { - "$ref": "#/definitions/ExclusionRules" - }, - "Filter": { - "$ref": "#/definitions/Filter" - } - }, - "required": [ - "Action", - "Filter" - ], - "type": "object" - }, - "RecipeSelection": { - "additionalProperties": false, - "description": "The recipe to apply the lifecycle policy for.", - "properties": { - "Name": { - "description": "The recipe name.", - "type": "string" - }, - "SemanticVersion": { - "description": "The recipe version.", - "type": "string" - } - }, - "required": [ - "Name", - "SemanticVersion" - ], - "type": "object" - }, - "ResourceSelection": { - "additionalProperties": false, - "description": "The resource selection for the lifecycle policy.", - "properties": { - "Recipes": { - "description": "The recipes to select.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RecipeSelection" - }, - "type": "array" - }, - "TagMap": { - "additionalProperties": false, - "description": "The Image Builder resources to select by tag.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "TimeUnit": { - "description": "A time unit.", - "enum": [ - "DAYS", - "WEEKS", - "MONTHS", - "YEARS" - ], - "type": "string" - } - }, - "description": "Resource schema for AWS::ImageBuilder::LifecyclePolicy", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "imagebuilder:CreateLifecyclePolicy", - "imagebuilder:GetLifecyclePolicy", - "imagebuilder:TagResource" - ] - }, - "delete": { - "permissions": [ - "imagebuilder:GetLifecyclePolicy", - "imagebuilder:DeleteLifecyclePolicy", - "imagebuilder:UnTagResource" - ] - }, - "list": { - "permissions": [ - "imagebuilder:ListLifecyclePolicies" - ] - }, - "read": { - "permissions": [ - "imagebuilder:GetLifecyclePolicy" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "imagebuilder:GetLifecyclePolicy", - "imagebuilder:UpdateLifecyclePolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the lifecycle policy.", - "type": "string" - }, - "Description": { - "description": "The description of the lifecycle policy.", - "type": "string" - }, - "ExecutionRole": { - "description": "The execution role of the lifecycle policy.", - "type": "string" - }, - "Name": { - "description": "The name of the lifecycle policy.", - "type": "string" - }, - "PolicyDetails": { - "description": "The policy details of the lifecycle policy.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PolicyDetail" - }, - "type": "array" - }, - "ResourceSelection": { - "$ref": "#/definitions/ResourceSelection", - "description": "The resource selection of the lifecycle policy." - }, - "ResourceType": { - "description": "The resource type of the lifecycle policy.", - "enum": [ - "AMI_IMAGE", - "CONTAINER_IMAGE" - ], - "type": "string" - }, - "Status": { - "description": "The status of the lifecycle policy.", - "enum": [ - "DISABLED", - "ENABLED" - ], - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "The tags associated with the lifecycle policy.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name", - "ExecutionRole", - "ResourceType", - "PolicyDetails", - "ResourceSelection" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ImageBuilder::LifecyclePolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Action": { + "additionalProperties": false, + "description": "The action of the policy detail.", + "properties": { + "IncludeResources": { + "$ref": "#/definitions/IncludeResources" + }, + "Type": { + "description": "The action type of the policy detail.", + "enum": [ + "DELETE", + "DEPRECATE", + "DISABLE" + ], + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "AmiExclusionRules": { + "additionalProperties": false, + "description": "The AMI exclusion rules for the policy detail.", + "properties": { + "IsPublic": { + "description": "Use to apply lifecycle policy actions on whether the AMI is public.", + "type": "boolean" + }, + "LastLaunched": { + "$ref": "#/definitions/LastLaunched", + "description": "Use to apply lifecycle policy actions on AMIs launched before a certain time." + }, + "Regions": { + "description": "Use to apply lifecycle policy actions on AMIs distributed to a set of regions.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "SharedAccounts": { + "description": "Use to apply lifecycle policy actions on AMIs shared with a set of regions.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "TagMap": { + "additionalProperties": false, + "description": "The AMIs to select by tag.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "ExclusionRules": { + "additionalProperties": false, + "description": "The exclusion rules to apply of the policy detail.", + "properties": { + "Amis": { + "$ref": "#/definitions/AmiExclusionRules" + }, + "TagMap": { + "additionalProperties": false, + "description": "The Image Builder tags to filter on.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "description": "The filters to apply of the policy detail.", + "properties": { + "RetainAtLeast": { + "description": "The minimum number of Image Builder resources to retain.", + "type": "integer" + }, + "Type": { + "description": "The filter type.", + "enum": [ + "AGE", + "COUNT" + ], + "type": "string" + }, + "Unit": { + "$ref": "#/definitions/TimeUnit", + "description": "The value's time unit." + }, + "Value": { + "description": "The filter value.", + "type": "integer" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, + "IncludeResources": { + "additionalProperties": false, + "description": "The included resources of the policy detail.", + "properties": { + "Amis": { + "description": "Use to configure lifecycle actions on AMIs.", + "type": "boolean" + }, + "Containers": { + "description": "Use to configure lifecycle actions on containers.", + "type": "boolean" + }, + "Snapshots": { + "description": "Use to configure lifecycle actions on snapshots.", + "type": "boolean" + } + }, + "type": "object" + }, + "LastLaunched": { + "additionalProperties": false, + "description": "The last launched time of a resource.", + "properties": { + "Unit": { + "$ref": "#/definitions/TimeUnit", + "description": "The value's time unit." + }, + "Value": { + "description": "The last launched value.", + "type": "integer" + } + }, + "required": [ + "Value", + "Unit" + ], + "type": "object" + }, + "PolicyDetail": { + "additionalProperties": false, + "description": "The policy detail of the lifecycle policy.", + "properties": { + "Action": { + "$ref": "#/definitions/Action" + }, + "ExclusionRules": { + "$ref": "#/definitions/ExclusionRules" + }, + "Filter": { + "$ref": "#/definitions/Filter" + } + }, + "required": [ + "Action", + "Filter" + ], + "type": "object" + }, + "RecipeSelection": { + "additionalProperties": false, + "description": "The recipe to apply the lifecycle policy for.", + "properties": { + "Name": { + "description": "The recipe name.", + "type": "string" + }, + "SemanticVersion": { + "description": "The recipe version.", + "type": "string" + } + }, + "required": [ + "Name", + "SemanticVersion" + ], + "type": "object" + }, + "ResourceSelection": { + "additionalProperties": false, + "description": "The resource selection for the lifecycle policy.", + "properties": { + "Recipes": { + "description": "The recipes to select.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RecipeSelection" + }, + "type": "array" + }, + "TagMap": { + "additionalProperties": false, + "description": "The Image Builder resources to select by tag.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "TimeUnit": { + "description": "A time unit.", + "enum": [ + "DAYS", + "WEEKS", + "MONTHS", + "YEARS" + ], + "type": "string" + } + }, + "description": "Resource schema for AWS::ImageBuilder::LifecyclePolicy", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "imagebuilder:CreateLifecyclePolicy", + "imagebuilder:GetLifecyclePolicy", + "imagebuilder:TagResource" + ] + }, + "delete": { + "permissions": [ + "imagebuilder:GetLifecyclePolicy", + "imagebuilder:DeleteLifecyclePolicy", + "imagebuilder:UnTagResource" + ] + }, + "list": { + "permissions": [ + "imagebuilder:ListLifecyclePolicies" + ] + }, + "read": { + "permissions": [ + "imagebuilder:GetLifecyclePolicy" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "imagebuilder:GetLifecyclePolicy", + "imagebuilder:UpdateLifecyclePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the lifecycle policy.", + "type": "string" + }, + "Description": { + "description": "The description of the lifecycle policy.", + "type": "string" + }, + "ExecutionRole": { + "description": "The execution role of the lifecycle policy.", + "type": "string" + }, + "Name": { + "description": "The name of the lifecycle policy.", + "type": "string" + }, + "PolicyDetails": { + "description": "The policy details of the lifecycle policy.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PolicyDetail" + }, + "type": "array" + }, + "ResourceSelection": { + "$ref": "#/definitions/ResourceSelection", + "description": "The resource selection of the lifecycle policy." + }, + "ResourceType": { + "description": "The resource type of the lifecycle policy.", + "enum": [ + "AMI_IMAGE", + "CONTAINER_IMAGE" + ], + "type": "string" + }, + "Status": { + "description": "The status of the lifecycle policy.", + "enum": [ + "DISABLED", + "ENABLED" + ], + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "The tags associated with the lifecycle policy.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name", + "ExecutionRole", + "ResourceType", + "PolicyDetails", + "ResourceSelection" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ImageBuilder::LifecyclePolicy" +} diff --git a/src/schema/aws-imagebuilder-workflow.json b/src/schema/aws-imagebuilder-workflow.json index 58758748..91e0d193 100644 --- a/src/schema/aws-imagebuilder-workflow.json +++ b/src/schema/aws-imagebuilder-workflow.json @@ -1,148 +1,158 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Version", - "/properties/ChangeDescription", - "/properties/Description", - "/properties/Data", - "/properties/Uri", - "/properties/Type", - "/properties/KmsKeyId", - "/properties/Tags" - ], - "description": "Resource schema for AWS::ImageBuilder::Workflow", - "handlers": { - "create": { - "permissions": [ - "iam:GetRole", - "kms:GenerateDataKey", - "kms:GenerateDataKeyPair", - "kms:GenerateDataKeyPairWithoutPlaintext", - "kms:GenerateDataKeyWithoutPlaintext", - "kms:Encrypt", - "kms:Decrypt", - "s3:GetObject", - "s3:HeadBucket", - "s3:GetBucketLocation", - "imagebuilder:TagResource", - "imagebuilder:GetWorkflow", - "imagebuilder:CreateWorkflow" - ] - }, - "delete": { - "permissions": [ - "imagebuilder:GetWorkflow", - "imagebuilder:UnTagResource", - "imagebuilder:DeleteWorkflow" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Arn": { - "$ref": "resource-schema.json#/properties/Arn" - } - }, - "required": [ - "Arn" - ] - }, - "permissions": [ - "imagebuilder:ListWorkflows" - ] - }, - "read": { - "permissions": [ - "imagebuilder:GetWorkflow" - ] - } - }, - "oneOf": [ - { - "required": [ - "Data" - ] - }, - { - "required": [ - "Uri" - ] - } - ], - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the workflow.", - "type": "string" - }, - "ChangeDescription": { - "description": "The change description of the workflow.", - "type": "string" - }, - "Data": { - "description": "The data of the workflow.", - "maxLength": 16000, - "minLength": 1, - "type": "string" - }, - "Description": { - "description": "The description of the workflow.", - "type": "string" - }, - "KmsKeyId": { - "description": "The KMS key identifier used to encrypt the workflow.", - "type": "string" - }, - "Name": { - "description": "The name of the workflow.", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "The tags associated with the workflow.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "Type": { - "description": "The type of the workflow denotes whether the workflow is used to build, test, or distribute.", - "enum": [ - "BUILD", - "TEST", - "DISTRIBUTION" - ], - "type": "string" - }, - "Uri": { - "description": "The uri of the workflow.", - "type": "string" - }, - "Version": { - "description": "The version of the workflow.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name", - "Type", - "Version" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ImageBuilder::Workflow", - "writeOnlyProperties": [ - "/properties/Data", - "/properties/Uri" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Version", + "/properties/ChangeDescription", + "/properties/Description", + "/properties/Data", + "/properties/Uri", + "/properties/Type", + "/properties/KmsKeyId", + "/properties/Tags" + ], + "description": "Resource schema for AWS::ImageBuilder::Workflow", + "handlers": { + "create": { + "permissions": [ + "iam:GetRole", + "kms:GenerateDataKey", + "kms:GenerateDataKeyPair", + "kms:GenerateDataKeyPairWithoutPlaintext", + "kms:GenerateDataKeyWithoutPlaintext", + "kms:Encrypt", + "kms:Decrypt", + "s3:GetObject", + "s3:HeadBucket", + "s3:GetBucketLocation", + "imagebuilder:TagResource", + "imagebuilder:GetWorkflow", + "imagebuilder:CreateWorkflow" + ] + }, + "delete": { + "permissions": [ + "imagebuilder:GetWorkflow", + "imagebuilder:UnTagResource", + "imagebuilder:DeleteWorkflow" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Arn": { + "$ref": "resource-schema.json#/properties/Arn" + } + }, + "required": [ + "Arn" + ] + }, + "permissions": [ + "imagebuilder:ListWorkflows", + "imagebuilder:ListWorkflowBuildVersions" + ] + }, + "read": { + "permissions": [ + "imagebuilder:GetWorkflow", + "kms:Decrypt" + ] + } + }, + "oneOf": [ + { + "required": [ + "Data" + ] + }, + { + "required": [ + "Uri" + ] + } + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the workflow.", + "type": "string" + }, + "ChangeDescription": { + "description": "The change description of the workflow.", + "type": "string" + }, + "Data": { + "description": "The data of the workflow.", + "maxLength": 16000, + "minLength": 1, + "type": "string" + }, + "Description": { + "description": "The description of the workflow.", + "type": "string" + }, + "KmsKeyId": { + "description": "The KMS key identifier used to encrypt the workflow.", + "type": "string" + }, + "Name": { + "description": "The name of the workflow.", + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "The tags associated with the workflow.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "Type": { + "description": "The type of the workflow denotes whether the workflow is used to build, test, or distribute.", + "enum": [ + "BUILD", + "TEST", + "DISTRIBUTION" + ], + "type": "string" + }, + "Uri": { + "description": "The uri of the workflow.", + "type": "string" + }, + "Version": { + "description": "The version of the workflow.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name", + "Type", + "Version" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-imagebuilder", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "imagebuilder:TagResource", + "imagebuilder:UnTagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::ImageBuilder::Workflow", + "writeOnlyProperties": [ + "/properties/Data", + "/properties/Uri" + ] +} diff --git a/src/schema/aws-inspector-assessmenttarget.json b/src/schema/aws-inspector-assessmenttarget.json index af7a7204..cd3013e9 100644 --- a/src/schema/aws-inspector-assessmenttarget.json +++ b/src/schema/aws-inspector-assessmenttarget.json @@ -1,56 +1,56 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AssessmentTargetName" - ], - "description": "Resource Type definition for AWS::Inspector::AssessmentTarget", - "handlers": { - "create": { - "permissions": [ - "inspector:CreateAssessmentTarget", - "inspector:ListAssessmentTargets", - "inspector:DescribeAssessmentTargets" - ] - }, - "delete": { - "permissions": [ - "inspector:DeleteAssessmentTarget" - ] - }, - "list": { - "permissions": [ - "inspector:ListAssessmentTargets" - ] - }, - "read": { - "permissions": [ - "inspector:DescribeAssessmentTargets" - ] - }, - "update": { - "permissions": [ - "inspector:DescribeAssessmentTargets", - "inspector:UpdateAssessmentTarget" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "type": "string" - }, - "AssessmentTargetName": { - "type": "string" - }, - "ResourceGroupArn": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "taggable": false, - "typeName": "AWS::Inspector::AssessmentTarget" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AssessmentTargetName" + ], + "description": "Resource Type definition for AWS::Inspector::AssessmentTarget", + "handlers": { + "create": { + "permissions": [ + "inspector:CreateAssessmentTarget", + "inspector:ListAssessmentTargets", + "inspector:DescribeAssessmentTargets" + ] + }, + "delete": { + "permissions": [ + "inspector:DeleteAssessmentTarget" + ] + }, + "list": { + "permissions": [ + "inspector:ListAssessmentTargets" + ] + }, + "read": { + "permissions": [ + "inspector:DescribeAssessmentTargets" + ] + }, + "update": { + "permissions": [ + "inspector:DescribeAssessmentTargets", + "inspector:UpdateAssessmentTarget" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AssessmentTargetName": { + "type": "string" + }, + "ResourceGroupArn": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "taggable": false, + "typeName": "AWS::Inspector::AssessmentTarget" +} diff --git a/src/schema/aws-inspector-assessmenttemplate.json b/src/schema/aws-inspector-assessmenttemplate.json index 1222405b..111f5237 100644 --- a/src/schema/aws-inspector-assessmenttemplate.json +++ b/src/schema/aws-inspector-assessmenttemplate.json @@ -1,94 +1,94 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DurationInSeconds", - "/properties/AssessmentTemplateName", - "/properties/UserAttributesForFindings", - "/properties/AssessmentTargetArn", - "/properties/RulesPackageArns" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Inspector::AssessmentTemplate", - "handlers": { - "create": { - "permissions": [ - "inspector:CreateAssessmentTemplate", - "inspector:ListAssessmentTemplates", - "inspector:DescribeAssessmentTemplates" - ] - }, - "delete": { - "permissions": [ - "inspector:DeleteAssessmentTemplate" - ] - }, - "list": { - "permissions": [ - "inspector:ListAssessmentTemplates" - ] - }, - "read": { - "permissions": [ - "inspector:DescribeAssessmentTemplates" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "type": "string" - }, - "AssessmentTargetArn": { - "type": "string" - }, - "AssessmentTemplateName": { - "type": "string" - }, - "DurationInSeconds": { - "type": "integer" - }, - "RulesPackageArns": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "UserAttributesForFindings": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "AssessmentTargetArn", - "DurationInSeconds", - "RulesPackageArns" - ], - "taggable": false, - "typeName": "AWS::Inspector::AssessmentTemplate" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DurationInSeconds", + "/properties/AssessmentTemplateName", + "/properties/UserAttributesForFindings", + "/properties/AssessmentTargetArn", + "/properties/RulesPackageArns" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Inspector::AssessmentTemplate", + "handlers": { + "create": { + "permissions": [ + "inspector:CreateAssessmentTemplate", + "inspector:ListAssessmentTemplates", + "inspector:DescribeAssessmentTemplates" + ] + }, + "delete": { + "permissions": [ + "inspector:DeleteAssessmentTemplate" + ] + }, + "list": { + "permissions": [ + "inspector:ListAssessmentTemplates" + ] + }, + "read": { + "permissions": [ + "inspector:DescribeAssessmentTemplates" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AssessmentTargetArn": { + "type": "string" + }, + "AssessmentTemplateName": { + "type": "string" + }, + "DurationInSeconds": { + "type": "integer" + }, + "RulesPackageArns": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "UserAttributesForFindings": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "AssessmentTargetArn", + "DurationInSeconds", + "RulesPackageArns" + ], + "taggable": false, + "typeName": "AWS::Inspector::AssessmentTemplate" +} diff --git a/src/schema/aws-inspector-resourcegroup.json b/src/schema/aws-inspector-resourcegroup.json index 37d5ba5a..533628b9 100644 --- a/src/schema/aws-inspector-resourcegroup.json +++ b/src/schema/aws-inspector-resourcegroup.json @@ -1,65 +1,65 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceGroupTags" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Inspector::ResourceGroup", - "handlers": { - "create": { - "permissions": [ - "inspector:CreateResourceGroup" - ] - }, - "delete": { - "permissions": [ - "inspector:CreateResourceGroup" - ] - }, - "read": { - "permissions": [ - "inspector:CreateResourceGroup" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "type": "string" - }, - "ResourceGroupTags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "ResourceGroupTags" - ], - "taggable": false, - "typeName": "AWS::Inspector::ResourceGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceGroupTags" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Inspector::ResourceGroup", + "handlers": { + "create": { + "permissions": [ + "inspector:CreateResourceGroup" + ] + }, + "delete": { + "permissions": [ + "inspector:CreateResourceGroup" + ] + }, + "read": { + "permissions": [ + "inspector:CreateResourceGroup" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "type": "string" + }, + "ResourceGroupTags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "ResourceGroupTags" + ], + "taggable": false, + "typeName": "AWS::Inspector::ResourceGroup" +} diff --git a/src/schema/aws-inspectorv2-cisscanconfiguration.json b/src/schema/aws-inspectorv2-cisscanconfiguration.json index 9b2f9862..3a6ad7a0 100644 --- a/src/schema/aws-inspectorv2-cisscanconfiguration.json +++ b/src/schema/aws-inspectorv2-cisscanconfiguration.json @@ -1,246 +1,246 @@ -{ - "additionalProperties": false, - "definitions": { - "CisSecurityLevel": { - "enum": [ - "LEVEL_1", - "LEVEL_2" - ], - "type": "string" - }, - "CisTagMap": { - "additionalProperties": false, - "patternProperties": { - "^.{2,127}$": { - "pattern": "^.{1,255}$", - "type": "string" - } - }, - "type": "object" - }, - "CisTargets": { - "additionalProperties": false, - "properties": { - "AccountIds": { - "items": { - "pattern": "^\\d{12}|ALL_ACCOUNTS|SELF$", - "type": "string" - }, - "maxItems": 10000, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "TargetResourceTags": { - "$ref": "#/definitions/TargetResourceTags" - } - }, - "required": [ - "AccountIds", - "TargetResourceTags" - ] - }, - "DailySchedule": { - "additionalProperties": false, - "properties": { - "StartTime": { - "$ref": "#/definitions/Time" - } - }, - "required": [ - "StartTime" - ], - "type": "object" - }, - "Day": { - "enum": [ - "MON", - "TUE", - "WED", - "THU", - "FRI", - "SAT", - "SUN" - ], - "type": "string" - }, - "DaysList": { - "items": { - "$ref": "#/definitions/Day" - }, - "maxItems": 7, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "MonthlySchedule": { - "additionalProperties": false, - "properties": { - "Day": { - "$ref": "#/definitions/Day" - }, - "StartTime": { - "$ref": "#/definitions/Time" - } - }, - "required": [ - "StartTime", - "Day" - ], - "type": "object" - }, - "OneTimeSchedule": { - "type": "object" - }, - "Schedule": { - "description": "Choose a Schedule cadence", - "properties": { - "Daily": { - "$ref": "#/definitions/DailySchedule" - }, - "Monthly": { - "$ref": "#/definitions/MonthlySchedule" - }, - "OneTime": { - "$ref": "#/definitions/OneTimeSchedule" - }, - "Weekly": { - "$ref": "#/definitions/WeeklySchedule" - } - } - }, - "TagValueList": { - "items": { - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "TargetResourceTags": { - "additionalProperties": false, - "maxProperties": 5, - "patternProperties": { - "^.+$": { - "$ref": "#/definitions/TagValueList" - } - } - }, - "Time": { - "additionalProperties": false, - "properties": { - "TimeOfDay": { - "pattern": "^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$", - "type": "string" - }, - "TimeZone": { - "type": "string" - } - }, - "required": [ - "TimeOfDay", - "TimeZone" - ], - "type": "object" - }, - "WeeklySchedule": { - "additionalProperties": false, - "properties": { - "Days": { - "$ref": "#/definitions/DaysList" - }, - "StartTime": { - "$ref": "#/definitions/Time" - } - }, - "required": [ - "StartTime", - "Days" - ], - "type": "object" - } - }, - "description": "CIS Scan Configuration resource schema", - "handlers": { - "create": { - "permissions": [ - "inspector2:CreateCisScanConfiguration", - "inspector2:ListCisScanConfigurations", - "inspector2:TagResource" - ] - }, - "delete": { - "permissions": [ - "inspector2:ListCisScanConfigurations", - "inspector2:DeleteCisScanConfiguration", - "inspector2:UntagResource" - ] - }, - "list": { - "permissions": [ - "inspector2:ListCisScanConfigurations", - "inspector2:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "inspector2:ListCisScanConfigurations", - "inspector2:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "inspector2:ListCisScanConfigurations", - "inspector2:UpdateCisScanConfiguration", - "inspector2:TagResource", - "inspector2:UntagResource", - "inspector2:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "CIS Scan configuration unique identifier", - "type": "string" - }, - "ScanName": { - "description": "Name of the scan", - "minLength": 1, - "type": "string" - }, - "Schedule": { - "$ref": "#/definitions/Schedule" - }, - "SecurityLevel": { - "$ref": "#/definitions/CisSecurityLevel" - }, - "Tags": { - "$ref": "#/definitions/CisTagMap" - }, - "Targets": { - "$ref": "#/definitions/CisTargets" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "ScanName", - "SecurityLevel", - "Schedule", - "Targets" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-inspector.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::InspectorV2::CisScanConfiguration" -} +{ + "additionalProperties": false, + "definitions": { + "CisSecurityLevel": { + "enum": [ + "LEVEL_1", + "LEVEL_2" + ], + "type": "string" + }, + "CisTagMap": { + "additionalProperties": false, + "patternProperties": { + "^.{2,127}$": { + "pattern": "^.{1,255}$", + "type": "string" + } + }, + "type": "object" + }, + "CisTargets": { + "additionalProperties": false, + "properties": { + "AccountIds": { + "items": { + "pattern": "^\\d{12}|ALL_ACCOUNTS|SELF$", + "type": "string" + }, + "maxItems": 10000, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TargetResourceTags": { + "$ref": "#/definitions/TargetResourceTags" + } + }, + "required": [ + "AccountIds", + "TargetResourceTags" + ] + }, + "DailySchedule": { + "additionalProperties": false, + "properties": { + "StartTime": { + "$ref": "#/definitions/Time" + } + }, + "required": [ + "StartTime" + ], + "type": "object" + }, + "Day": { + "enum": [ + "MON", + "TUE", + "WED", + "THU", + "FRI", + "SAT", + "SUN" + ], + "type": "string" + }, + "DaysList": { + "items": { + "$ref": "#/definitions/Day" + }, + "maxItems": 7, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "MonthlySchedule": { + "additionalProperties": false, + "properties": { + "Day": { + "$ref": "#/definitions/Day" + }, + "StartTime": { + "$ref": "#/definitions/Time" + } + }, + "required": [ + "StartTime", + "Day" + ], + "type": "object" + }, + "OneTimeSchedule": { + "type": "object" + }, + "Schedule": { + "description": "Choose a Schedule cadence", + "properties": { + "Daily": { + "$ref": "#/definitions/DailySchedule" + }, + "Monthly": { + "$ref": "#/definitions/MonthlySchedule" + }, + "OneTime": { + "$ref": "#/definitions/OneTimeSchedule" + }, + "Weekly": { + "$ref": "#/definitions/WeeklySchedule" + } + } + }, + "TagValueList": { + "items": { + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TargetResourceTags": { + "additionalProperties": false, + "maxProperties": 5, + "patternProperties": { + "^.+$": { + "$ref": "#/definitions/TagValueList" + } + } + }, + "Time": { + "additionalProperties": false, + "properties": { + "TimeOfDay": { + "pattern": "^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$", + "type": "string" + }, + "TimeZone": { + "type": "string" + } + }, + "required": [ + "TimeOfDay", + "TimeZone" + ], + "type": "object" + }, + "WeeklySchedule": { + "additionalProperties": false, + "properties": { + "Days": { + "$ref": "#/definitions/DaysList" + }, + "StartTime": { + "$ref": "#/definitions/Time" + } + }, + "required": [ + "StartTime", + "Days" + ], + "type": "object" + } + }, + "description": "CIS Scan Configuration resource schema", + "handlers": { + "create": { + "permissions": [ + "inspector2:CreateCisScanConfiguration", + "inspector2:ListCisScanConfigurations", + "inspector2:TagResource" + ] + }, + "delete": { + "permissions": [ + "inspector2:ListCisScanConfigurations", + "inspector2:DeleteCisScanConfiguration", + "inspector2:UntagResource" + ] + }, + "list": { + "permissions": [ + "inspector2:ListCisScanConfigurations", + "inspector2:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "inspector2:ListCisScanConfigurations", + "inspector2:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "inspector2:ListCisScanConfigurations", + "inspector2:UpdateCisScanConfiguration", + "inspector2:TagResource", + "inspector2:UntagResource", + "inspector2:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "CIS Scan configuration unique identifier", + "type": "string" + }, + "ScanName": { + "description": "Name of the scan", + "minLength": 1, + "type": "string" + }, + "Schedule": { + "$ref": "#/definitions/Schedule" + }, + "SecurityLevel": { + "$ref": "#/definitions/CisSecurityLevel" + }, + "Tags": { + "$ref": "#/definitions/CisTagMap" + }, + "Targets": { + "$ref": "#/definitions/CisTargets" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "ScanName", + "SecurityLevel", + "Schedule", + "Targets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-inspector.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::InspectorV2::CisScanConfiguration" +} diff --git a/src/schema/aws-inspectorv2-filter.json b/src/schema/aws-inspectorv2-filter.json index f5f3225d..850d66d1 100644 --- a/src/schema/aws-inspectorv2-filter.json +++ b/src/schema/aws-inspectorv2-filter.json @@ -1,372 +1,372 @@ -{ - "additionalProperties": false, - "definitions": { - "DateFilter": { - "additionalProperties": false, - "properties": { - "EndInclusive": { - "$ref": "#/definitions/Timestamp" - }, - "StartInclusive": { - "$ref": "#/definitions/Timestamp" - } - }, - "type": "object" - }, - "DateFilterList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DateFilter" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "FilterAction": { - "enum": [ - "NONE", - "SUPPRESS" - ], - "type": "string" - }, - "FilterCriteria": { - "additionalProperties": false, - "properties": { - "AwsAccountId": { - "$ref": "#/definitions/StringFilterList" - }, - "ComponentId": { - "$ref": "#/definitions/StringFilterList" - }, - "ComponentType": { - "$ref": "#/definitions/StringFilterList" - }, - "Ec2InstanceImageId": { - "$ref": "#/definitions/StringFilterList" - }, - "Ec2InstanceSubnetId": { - "$ref": "#/definitions/StringFilterList" - }, - "Ec2InstanceVpcId": { - "$ref": "#/definitions/StringFilterList" - }, - "EcrImageArchitecture": { - "$ref": "#/definitions/StringFilterList" - }, - "EcrImageHash": { - "$ref": "#/definitions/StringFilterList" - }, - "EcrImagePushedAt": { - "$ref": "#/definitions/DateFilterList" - }, - "EcrImageRegistry": { - "$ref": "#/definitions/StringFilterList" - }, - "EcrImageRepositoryName": { - "$ref": "#/definitions/StringFilterList" - }, - "EcrImageTags": { - "$ref": "#/definitions/StringFilterList" - }, - "FindingArn": { - "$ref": "#/definitions/StringFilterList" - }, - "FindingStatus": { - "$ref": "#/definitions/StringFilterList" - }, - "FindingType": { - "$ref": "#/definitions/StringFilterList" - }, - "FirstObservedAt": { - "$ref": "#/definitions/DateFilterList" - }, - "InspectorScore": { - "$ref": "#/definitions/NumberFilterList" - }, - "LastObservedAt": { - "$ref": "#/definitions/DateFilterList" - }, - "NetworkProtocol": { - "$ref": "#/definitions/StringFilterList" - }, - "PortRange": { - "$ref": "#/definitions/PortRangeFilterList" - }, - "RelatedVulnerabilities": { - "$ref": "#/definitions/StringFilterList" - }, - "ResourceId": { - "$ref": "#/definitions/StringFilterList" - }, - "ResourceTags": { - "$ref": "#/definitions/MapFilterList" - }, - "ResourceType": { - "$ref": "#/definitions/StringFilterList" - }, - "Severity": { - "$ref": "#/definitions/StringFilterList" - }, - "Title": { - "$ref": "#/definitions/StringFilterList" - }, - "UpdatedAt": { - "$ref": "#/definitions/DateFilterList" - }, - "VendorSeverity": { - "$ref": "#/definitions/StringFilterList" - }, - "VulnerabilityId": { - "$ref": "#/definitions/StringFilterList" - }, - "VulnerabilitySource": { - "$ref": "#/definitions/StringFilterList" - }, - "VulnerablePackages": { - "$ref": "#/definitions/PackageFilterList" - } - }, - "type": "object" - }, - "MapComparison": { - "enum": [ - "EQUALS" - ], - "type": "string" - }, - "MapFilter": { - "additionalProperties": false, - "properties": { - "Comparison": { - "$ref": "#/definitions/MapComparison" - }, - "Key": { - "$ref": "#/definitions/MapKey" - }, - "Value": { - "$ref": "#/definitions/MapValue" - } - }, - "required": [ - "Comparison" - ], - "type": "object" - }, - "MapFilterList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MapFilter" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "MapKey": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "MapValue": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "NumberFilter": { - "additionalProperties": false, - "properties": { - "LowerInclusive": { - "type": "number" - }, - "UpperInclusive": { - "type": "number" - } - }, - "type": "object" - }, - "NumberFilterList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "PackageFilter": { - "additionalProperties": false, - "properties": { - "Architecture": { - "$ref": "#/definitions/StringFilter" - }, - "Epoch": { - "$ref": "#/definitions/NumberFilter" - }, - "Name": { - "$ref": "#/definitions/StringFilter" - }, - "Release": { - "$ref": "#/definitions/StringFilter" - }, - "SourceLayerHash": { - "$ref": "#/definitions/StringFilter" - }, - "Version": { - "$ref": "#/definitions/StringFilter" - } - }, - "type": "object" - }, - "PackageFilterList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PackageFilter" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "Port": { - "maximum": 65535, - "minimum": 0, - "type": "integer" - }, - "PortRangeFilter": { - "additionalProperties": false, - "properties": { - "BeginInclusive": { - "$ref": "#/definitions/Port" - }, - "EndInclusive": { - "$ref": "#/definitions/Port" - } - }, - "type": "object" - }, - "PortRangeFilterList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PortRangeFilter" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "StringComparison": { - "enum": [ - "EQUALS", - "PREFIX", - "NOT_EQUALS" - ], - "type": "string" - }, - "StringFilter": { - "additionalProperties": false, - "properties": { - "Comparison": { - "$ref": "#/definitions/StringComparison" - }, - "Value": { - "$ref": "#/definitions/StringInput" - } - }, - "required": [ - "Comparison", - "Value" - ], - "type": "object" - }, - "StringFilterList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "StringInput": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Timestamp": { - "format": "int64", - "type": "integer" - } - }, - "description": "Inspector Filter resource schema", - "handlers": { - "create": { - "permissions": [ - "inspector2:CreateFilter", - "inspector2:ListFilters" - ] - }, - "delete": { - "permissions": [ - "inspector2:DeleteFilter", - "inspector2:ListFilters" - ] - }, - "list": { - "permissions": [ - "inspector2:ListFilters" - ] - }, - "read": { - "permissions": [ - "inspector2:ListFilters" - ] - }, - "update": { - "permissions": [ - "inspector2:ListFilters", - "inspector2:UpdateFilter" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Findings filter ARN.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Description": { - "description": "Findings filter description.", - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FilterAction": { - "$ref": "#/definitions/FilterAction", - "description": "Findings filter action." - }, - "FilterCriteria": { - "$ref": "#/definitions/FilterCriteria", - "description": "Findings filter criteria." - }, - "Name": { - "description": "Findings filter name.", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name", - "FilterCriteria", - "FilterAction" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-inspector.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::InspectorV2::Filter" -} +{ + "additionalProperties": false, + "definitions": { + "DateFilter": { + "additionalProperties": false, + "properties": { + "EndInclusive": { + "$ref": "#/definitions/Timestamp" + }, + "StartInclusive": { + "$ref": "#/definitions/Timestamp" + } + }, + "type": "object" + }, + "DateFilterList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DateFilter" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "FilterAction": { + "enum": [ + "NONE", + "SUPPRESS" + ], + "type": "string" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "AwsAccountId": { + "$ref": "#/definitions/StringFilterList" + }, + "ComponentId": { + "$ref": "#/definitions/StringFilterList" + }, + "ComponentType": { + "$ref": "#/definitions/StringFilterList" + }, + "Ec2InstanceImageId": { + "$ref": "#/definitions/StringFilterList" + }, + "Ec2InstanceSubnetId": { + "$ref": "#/definitions/StringFilterList" + }, + "Ec2InstanceVpcId": { + "$ref": "#/definitions/StringFilterList" + }, + "EcrImageArchitecture": { + "$ref": "#/definitions/StringFilterList" + }, + "EcrImageHash": { + "$ref": "#/definitions/StringFilterList" + }, + "EcrImagePushedAt": { + "$ref": "#/definitions/DateFilterList" + }, + "EcrImageRegistry": { + "$ref": "#/definitions/StringFilterList" + }, + "EcrImageRepositoryName": { + "$ref": "#/definitions/StringFilterList" + }, + "EcrImageTags": { + "$ref": "#/definitions/StringFilterList" + }, + "FindingArn": { + "$ref": "#/definitions/StringFilterList" + }, + "FindingStatus": { + "$ref": "#/definitions/StringFilterList" + }, + "FindingType": { + "$ref": "#/definitions/StringFilterList" + }, + "FirstObservedAt": { + "$ref": "#/definitions/DateFilterList" + }, + "InspectorScore": { + "$ref": "#/definitions/NumberFilterList" + }, + "LastObservedAt": { + "$ref": "#/definitions/DateFilterList" + }, + "NetworkProtocol": { + "$ref": "#/definitions/StringFilterList" + }, + "PortRange": { + "$ref": "#/definitions/PortRangeFilterList" + }, + "RelatedVulnerabilities": { + "$ref": "#/definitions/StringFilterList" + }, + "ResourceId": { + "$ref": "#/definitions/StringFilterList" + }, + "ResourceTags": { + "$ref": "#/definitions/MapFilterList" + }, + "ResourceType": { + "$ref": "#/definitions/StringFilterList" + }, + "Severity": { + "$ref": "#/definitions/StringFilterList" + }, + "Title": { + "$ref": "#/definitions/StringFilterList" + }, + "UpdatedAt": { + "$ref": "#/definitions/DateFilterList" + }, + "VendorSeverity": { + "$ref": "#/definitions/StringFilterList" + }, + "VulnerabilityId": { + "$ref": "#/definitions/StringFilterList" + }, + "VulnerabilitySource": { + "$ref": "#/definitions/StringFilterList" + }, + "VulnerablePackages": { + "$ref": "#/definitions/PackageFilterList" + } + }, + "type": "object" + }, + "MapComparison": { + "enum": [ + "EQUALS" + ], + "type": "string" + }, + "MapFilter": { + "additionalProperties": false, + "properties": { + "Comparison": { + "$ref": "#/definitions/MapComparison" + }, + "Key": { + "$ref": "#/definitions/MapKey" + }, + "Value": { + "$ref": "#/definitions/MapValue" + } + }, + "required": [ + "Comparison" + ], + "type": "object" + }, + "MapFilterList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MapFilter" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "MapKey": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "MapValue": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "NumberFilter": { + "additionalProperties": false, + "properties": { + "LowerInclusive": { + "type": "number" + }, + "UpperInclusive": { + "type": "number" + } + }, + "type": "object" + }, + "NumberFilterList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/NumberFilter" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "PackageFilter": { + "additionalProperties": false, + "properties": { + "Architecture": { + "$ref": "#/definitions/StringFilter" + }, + "Epoch": { + "$ref": "#/definitions/NumberFilter" + }, + "Name": { + "$ref": "#/definitions/StringFilter" + }, + "Release": { + "$ref": "#/definitions/StringFilter" + }, + "SourceLayerHash": { + "$ref": "#/definitions/StringFilter" + }, + "Version": { + "$ref": "#/definitions/StringFilter" + } + }, + "type": "object" + }, + "PackageFilterList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PackageFilter" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "Port": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "PortRangeFilter": { + "additionalProperties": false, + "properties": { + "BeginInclusive": { + "$ref": "#/definitions/Port" + }, + "EndInclusive": { + "$ref": "#/definitions/Port" + } + }, + "type": "object" + }, + "PortRangeFilterList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PortRangeFilter" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "StringComparison": { + "enum": [ + "EQUALS", + "PREFIX", + "NOT_EQUALS" + ], + "type": "string" + }, + "StringFilter": { + "additionalProperties": false, + "properties": { + "Comparison": { + "$ref": "#/definitions/StringComparison" + }, + "Value": { + "$ref": "#/definitions/StringInput" + } + }, + "required": [ + "Comparison", + "Value" + ], + "type": "object" + }, + "StringFilterList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "StringInput": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Timestamp": { + "format": "int64", + "type": "integer" + } + }, + "description": "Inspector Filter resource schema", + "handlers": { + "create": { + "permissions": [ + "inspector2:CreateFilter", + "inspector2:ListFilters" + ] + }, + "delete": { + "permissions": [ + "inspector2:DeleteFilter", + "inspector2:ListFilters" + ] + }, + "list": { + "permissions": [ + "inspector2:ListFilters" + ] + }, + "read": { + "permissions": [ + "inspector2:ListFilters" + ] + }, + "update": { + "permissions": [ + "inspector2:ListFilters", + "inspector2:UpdateFilter" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Findings filter ARN.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Description": { + "description": "Findings filter description.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FilterAction": { + "$ref": "#/definitions/FilterAction", + "description": "Findings filter action." + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria", + "description": "Findings filter criteria." + }, + "Name": { + "description": "Findings filter name.", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name", + "FilterCriteria", + "FilterAction" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-inspector.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::InspectorV2::Filter" +} diff --git a/src/schema/aws-internetmonitor-monitor.json b/src/schema/aws-internetmonitor-monitor.json index f2546457..4e314e6f 100644 --- a/src/schema/aws-internetmonitor-monitor.json +++ b/src/schema/aws-internetmonitor-monitor.json @@ -1,293 +1,299 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MonitorName" - ], - "definitions": { - "HealthEventsConfig": { - "additionalProperties": false, - "properties": { - "AvailabilityLocalHealthEventsConfig": { - "$ref": "#/definitions/LocalHealthEventsConfig" - }, - "AvailabilityScoreThreshold": { - "maximum": 100.0, - "minimum": 0.0, - "type": "number" - }, - "PerformanceLocalHealthEventsConfig": { - "$ref": "#/definitions/LocalHealthEventsConfig" - }, - "PerformanceScoreThreshold": { - "maximum": 100.0, - "minimum": 0.0, - "type": "number" - } - }, - "type": "object" - }, - "InternetMeasurementsLogDelivery": { - "additionalProperties": false, - "properties": { - "S3Config": { - "$ref": "#/definitions/S3Config" - } - }, - "type": "object" - }, - "LocalHealthEventsConfig": { - "additionalProperties": false, - "properties": { - "HealthScoreThreshold": { - "maximum": 100.0, - "minimum": 0.0, - "type": "number" - }, - "MinTrafficImpact": { - "maximum": 100.0, - "minimum": 0.0, - "type": "number" - }, - "Status": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - } - }, - "type": "object" - }, - "MonitorConfigState": { - "enum": [ - "PENDING", - "ACTIVE", - "INACTIVE", - "ERROR" - ], - "type": "string" - }, - "MonitorProcessingStatusCode": { - "enum": [ - "OK", - "INACTIVE", - "COLLECTING_DATA", - "INSUFFICIENT_DATA", - "FAULT_SERVICE", - "FAULT_ACCESS_CLOUDWATCH" - ], - "type": "string" - }, - "S3Config": { - "additionalProperties": false, - "properties": { - "BucketName": { - "minLength": 3, - "type": "string" - }, - "BucketPrefix": { - "type": "string" - }, - "LogDeliveryStatus": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "The metadata that you apply to the cluster to help you categorize and organize them. Each tag consists of a key and an optional value, both of which you define.", - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "iso8601UTC": { - "description": "The date value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ssZ)", - "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", - "type": "string" - } - }, - "description": "Represents a monitor, which defines the monitoring boundaries for measurements that Internet Monitor publishes information about for an application", - "handlers": { - "create": { - "permissions": [ - "internetmonitor:CreateMonitor", - "internetmonitor:GetMonitor", - "internetmonitor:TagResource", - "internetmonitor:UntagResource", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy", - "s3:ListBucket", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "internetmonitor:UpdateMonitor", - "internetmonitor:DeleteMonitor", - "internetmonitor:GetMonitor", - "logs:DeleteLogDelivery" - ] - }, - "list": { - "permissions": [ - "internetmonitor:ListMonitors", - "internetmonitor:GetMonitor", - "logs:GetLogDelivery" - ] - }, - "read": { - "permissions": [ - "internetmonitor:GetMonitor", - "internetmonitor:ListTagsForResource", - "logs:GetLogDelivery" - ] - }, - "update": { - "permissions": [ - "internetmonitor:CreateMonitor", - "internetmonitor:GetMonitor", - "internetmonitor:UpdateMonitor", - "internetmonitor:TagResource", - "internetmonitor:UntagResource", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:UpdateLogDelivery", - "logs:DeleteLogDelivery", - "logs:ListLogDeliveries", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy", - "s3:ListBucket", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/MonitorName" - ], - "properties": { - "CreatedAt": { - "$ref": "#/definitions/iso8601UTC" - }, - "HealthEventsConfig": { - "$ref": "#/definitions/HealthEventsConfig" - }, - "IncludeLinkedAccounts": { - "type": "boolean" - }, - "InternetMeasurementsLogDelivery": { - "$ref": "#/definitions/InternetMeasurementsLogDelivery" - }, - "LinkedAccountId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^(\\d{12})$", - "type": "string" - }, - "MaxCityNetworksToMonitor": { - "maximum": 500000, - "minimum": 1, - "type": "integer" - }, - "ModifiedAt": { - "$ref": "#/definitions/iso8601UTC" - }, - "MonitorArn": { - "maxLength": 512, - "minLength": 20, - "pattern": "^arn:.*", - "type": "string" - }, - "MonitorName": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - }, - "ProcessingStatus": { - "$ref": "#/definitions/MonitorProcessingStatusCode" - }, - "ProcessingStatusInfo": { - "type": "string" - }, - "Resources": { - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:.*", - "type": "string" - }, - "type": "array" - }, - "ResourcesToAdd": { - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "type": "array" - }, - "ResourcesToRemove": { - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "type": "array" - }, - "Status": { - "$ref": "#/definitions/MonitorConfigState" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "TrafficPercentageToMonitor": { - "maximum": 100, - "minimum": 1, - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/ModifiedAt", - "/properties/MonitorArn", - "/properties/ProcessingStatus", - "/properties/ProcessingStatusInfo" - ], - "required": [ - "MonitorName" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": false, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::InternetMonitor::Monitor", - "writeOnlyProperties": [ - "/properties/ResourcesToAdd", - "/properties/ResourcesToRemove", - "/properties/LinkedAccountId", - "/properties/IncludeLinkedAccounts" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MonitorName" + ], + "definitions": { + "HealthEventsConfig": { + "additionalProperties": false, + "properties": { + "AvailabilityLocalHealthEventsConfig": { + "$ref": "#/definitions/LocalHealthEventsConfig" + }, + "AvailabilityScoreThreshold": { + "maximum": 100.0, + "minimum": 0.0, + "type": "number" + }, + "PerformanceLocalHealthEventsConfig": { + "$ref": "#/definitions/LocalHealthEventsConfig" + }, + "PerformanceScoreThreshold": { + "maximum": 100.0, + "minimum": 0.0, + "type": "number" + } + }, + "type": "object" + }, + "InternetMeasurementsLogDelivery": { + "additionalProperties": false, + "properties": { + "S3Config": { + "$ref": "#/definitions/S3Config" + } + }, + "type": "object" + }, + "LocalHealthEventsConfig": { + "additionalProperties": false, + "properties": { + "HealthScoreThreshold": { + "maximum": 100.0, + "minimum": 0.0, + "type": "number" + }, + "MinTrafficImpact": { + "maximum": 100.0, + "minimum": 0.0, + "type": "number" + }, + "Status": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + }, + "MonitorConfigState": { + "enum": [ + "PENDING", + "ACTIVE", + "INACTIVE", + "ERROR" + ], + "type": "string" + }, + "MonitorProcessingStatusCode": { + "enum": [ + "OK", + "INACTIVE", + "COLLECTING_DATA", + "INSUFFICIENT_DATA", + "FAULT_SERVICE", + "FAULT_ACCESS_CLOUDWATCH" + ], + "type": "string" + }, + "S3Config": { + "additionalProperties": false, + "properties": { + "BucketName": { + "minLength": 3, + "type": "string" + }, + "BucketPrefix": { + "type": "string" + }, + "LogDeliveryStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "The metadata that you apply to the cluster to help you categorize and organize them. Each tag consists of a key and an optional value, both of which you define.", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "iso8601UTC": { + "description": "The date value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ssZ)", + "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", + "type": "string" + } + }, + "description": "Represents a monitor, which defines the monitoring boundaries for measurements that Internet Monitor publishes information about for an application", + "handlers": { + "create": { + "permissions": [ + "internetmonitor:CreateMonitor", + "internetmonitor:GetMonitor", + "internetmonitor:TagResource", + "internetmonitor:UntagResource", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "s3:ListBucket", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "internetmonitor:UpdateMonitor", + "internetmonitor:DeleteMonitor", + "internetmonitor:GetMonitor", + "logs:DeleteLogDelivery" + ] + }, + "list": { + "permissions": [ + "internetmonitor:ListMonitors", + "internetmonitor:GetMonitor", + "internetmonitor:ListTagsForResource", + "logs:GetLogDelivery" + ] + }, + "read": { + "permissions": [ + "internetmonitor:GetMonitor", + "internetmonitor:ListTagsForResource", + "logs:GetLogDelivery" + ] + }, + "update": { + "permissions": [ + "internetmonitor:CreateMonitor", + "internetmonitor:GetMonitor", + "internetmonitor:UpdateMonitor", + "internetmonitor:TagResource", + "internetmonitor:UntagResource", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "s3:ListBucket", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/MonitorName" + ], + "properties": { + "CreatedAt": { + "$ref": "#/definitions/iso8601UTC" + }, + "HealthEventsConfig": { + "$ref": "#/definitions/HealthEventsConfig" + }, + "IncludeLinkedAccounts": { + "type": "boolean" + }, + "InternetMeasurementsLogDelivery": { + "$ref": "#/definitions/InternetMeasurementsLogDelivery" + }, + "LinkedAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^(\\d{12})$", + "type": "string" + }, + "MaxCityNetworksToMonitor": { + "maximum": 500000, + "minimum": 1, + "type": "integer" + }, + "ModifiedAt": { + "$ref": "#/definitions/iso8601UTC" + }, + "MonitorArn": { + "maxLength": 512, + "minLength": 20, + "pattern": "^arn:.*", + "type": "string" + }, + "MonitorName": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.-]+$", + "type": "string" + }, + "ProcessingStatus": { + "$ref": "#/definitions/MonitorProcessingStatusCode" + }, + "ProcessingStatusInfo": { + "type": "string" + }, + "Resources": { + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:.*", + "type": "string" + }, + "type": "array" + }, + "ResourcesToAdd": { + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "type": "array" + }, + "ResourcesToRemove": { + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "type": "array" + }, + "Status": { + "$ref": "#/definitions/MonitorConfigState" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TrafficPercentageToMonitor": { + "maximum": 100, + "minimum": 1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/ModifiedAt", + "/properties/MonitorArn", + "/properties/ProcessingStatus", + "/properties/ProcessingStatusInfo" + ], + "required": [ + "MonitorName" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "internetmonitor:TagResource", + "internetmonitor:UntagResource", + "internetmonitor:ListTagsForResource" + ], + "tagOnCreate": false, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::InternetMonitor::Monitor", + "writeOnlyProperties": [ + "/properties/ResourcesToAdd", + "/properties/ResourcesToRemove", + "/properties/LinkedAccountId", + "/properties/IncludeLinkedAccounts" + ] +} diff --git a/src/schema/aws-invoicing-invoiceunit.json b/src/schema/aws-invoicing-invoiceunit.json new file mode 100644 index 00000000..6c63704e --- /dev/null +++ b/src/schema/aws-invoicing-invoiceunit.json @@ -0,0 +1,167 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InvoiceReceiver", + "/properties/Name" + ], + "definitions": { + "Description": { + "maxLength": 500, + "minLength": 0, + "pattern": "^[\\S\\s]*$", + "type": "string" + }, + "InvoiceReceiver": { + "maxLength": 12, + "minLength": 12, + "pattern": "^\\d{12}$", + "type": "string" + }, + "InvoiceUnitArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:aws[-a-z0-9]*:[a-z0-9]+:[-a-z0-9]*:[0-9]{12}:[-a-zA-Z0-9/:_]+$", + "type": "string" + }, + "LastModified": { + "type": "number" + }, + "Name": { + "maxLength": 50, + "minLength": 1, + "pattern": "^(?! )[\\p{L}\\p{N}\\p{Z}-_]*(?_raw``." - }, - "DynamoDBv2": { - "$ref": "#/definitions/DynamoDBv2", - "description": "Defines an action to write to the Amazon DynamoDB table that you created. The default action payload contains all the information about the detector model instance and the event that triggered the action. You can customize the [payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html). A separate column of the DynamoDB table receives one attribute-value pair in the payload that you specify.\n You must use expressions for all parameters in ``DynamoDBv2Action``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``tableName`` parameter can be ``'GreenhouseTemperatureTable'``.\n + For references, you must specify either variables or input values. For example, the value for the ``tableName`` parameter can be ``$variable.ddbtableName``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``contentExpression`` parameter in ``Payload`` uses a substitution template. \n ``'{\\\"sensorID\\\": \\\"${$input.GreenhouseInput.sensor_id}\\\", \\\"temperature\\\": \\\"${$input.GreenhouseInput.temperature * 9 / 5 + 32}\\\"}'`` \n + For a string concatenation, you must use ``+``. A string concatenation can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``tableName`` parameter uses a string concatenation. \n ``'GreenhouseTemperatureTable ' + $input.GreenhouseInput.date`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.\n The value for the ``type`` parameter in ``Payload`` must be ``JSON``." - }, - "Firehose": { - "$ref": "#/definitions/Firehose", - "description": "Sends information about the detector model instance and the event that triggered the action to an Amazon Kinesis Data Firehose delivery stream." - }, - "IotEvents": { - "$ref": "#/definitions/IotEvents", - "description": "Sends an ITE input, passing in information about the detector model instance and the event that triggered the action." - }, - "IotSiteWise": { - "$ref": "#/definitions/IotSiteWise", - "description": "Sends information about the detector model instance and the event that triggered the action to a specified asset property in ITSW.\n You must use expressions for all parameters in ``IotSiteWiseAction``. The expressions accept literals, operators, functions, references, and substitutions templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``propertyAlias`` parameter can be ``'/company/windfarm/3/turbine/7/temperature'``.\n + For references, you must specify either variables or input values. For example, the value for the ``assetId`` parameter can be ``$input.TurbineInput.assetId1``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``propertyAlias`` parameter uses a substitution template. \n ``'company/windfarm/${$input.TemperatureInput.sensorData.windfarmID}/turbine/ ${$input.TemperatureInput.sensorData.turbineID}/temperature'`` \n \n You must specify either ``propertyAlias`` or both ``assetId`` and ``propertyId`` to identify the target asset property in ITSW.\n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*." - }, - "IotTopicPublish": { - "$ref": "#/definitions/IotTopicPublish", - "description": "Information required to publish the MQTT message through the IoT message broker." - }, - "Lambda": { - "$ref": "#/definitions/Lambda", - "description": "Calls a Lambda function, passing in information about the detector model instance and the event that triggered the action." - }, - "Sns": { - "$ref": "#/definitions/Sns", - "description": "Information required to publish the Amazon SNS message." - }, - "Sqs": { - "$ref": "#/definitions/Sqs", - "description": "Sends information about the detector model instance and the event that triggered the action to an Amazon SQS queue." - } - }, - "type": "object" - }, - "AlarmActions": { - "description": "Specifies one or more supported actions to receive notifications when the alarm state changes.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AlarmAction" - }, - "type": "array", - "uniqueItems": false - }, - "AlarmCapabilities": { - "additionalProperties": false, - "description": "Contains the configuration information of alarm state changes.", - "properties": { - "AcknowledgeFlow": { - "$ref": "#/definitions/AcknowledgeFlow", - "description": "Specifies whether to get notified for alarm state changes." - }, - "InitializationConfiguration": { - "$ref": "#/definitions/InitializationConfiguration", - "description": "Specifies the default alarm state. The configuration applies to all alarms that were created based on this alarm model." - } - }, - "type": "object" - }, - "AlarmEventActions": { - "additionalProperties": false, - "description": "Contains information about one or more alarm actions.", - "properties": { - "AlarmActions": { - "$ref": "#/definitions/AlarmActions", - "description": "Specifies one or more supported actions to receive notifications when the alarm state changes." - } - }, - "type": "object" - }, - "AlarmRule": { - "additionalProperties": false, - "description": "Defines when your alarm is invoked.", - "properties": { - "SimpleRule": { - "$ref": "#/definitions/SimpleRule", - "description": "A rule that compares an input property value to a threshold value with a comparison operator." - } - }, - "type": "object" - }, - "AssetPropertyTimestamp": { - "additionalProperties": false, - "description": "A structure that contains timestamp information. For more information, see [TimeInNanos](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_TimeInNanos.html) in the *API Reference*.\n You must use expressions for all parameters in ``AssetPropertyTimestamp``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``timeInSeconds`` parameter can be ``'1586400675'``.\n + For references, you must specify either variables or input values. For example, the value for the ``offsetInNanos`` parameter can be ``$variable.time``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``timeInSeconds`` parameter uses a substitution template.\n ``'${$input.TemperatureInput.sensorData.timestamp / 1000}'`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.", - "properties": { - "OffsetInNanos": { - "description": "The nanosecond offset converted from ``timeInSeconds``. The valid range is between 0-999999999.", - "type": "string" - }, - "TimeInSeconds": { - "description": "The timestamp, in seconds, in the Unix epoch format. The valid range is between 1-31556889864403199.", - "type": "string" - } - }, - "required": [ - "TimeInSeconds" - ], - "type": "object" - }, - "AssetPropertyValue": { - "additionalProperties": false, - "description": "A structure that contains value information. For more information, see [AssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetPropertyValue.html) in the *API Reference*.\n You must use expressions for all parameters in ``AssetPropertyValue``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``quality`` parameter can be ``'GOOD'``.\n + For references, you must specify either variables or input values. For example, the value for the ``quality`` parameter can be ``$input.TemperatureInput.sensorData.quality``.\n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.", - "properties": { - "Quality": { - "description": "The quality of the asset property value. The value must be ``'GOOD'``, ``'BAD'``, or ``'UNCERTAIN'``.", - "type": "string" - }, - "Timestamp": { - "$ref": "#/definitions/AssetPropertyTimestamp", - "description": "The timestamp associated with the asset property value. The default is the current event time." - }, - "Value": { - "$ref": "#/definitions/AssetPropertyVariant", - "description": "The value to send to an asset property." - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "AssetPropertyVariant": { - "additionalProperties": false, - "description": "A structure that contains an asset property value. For more information, see [Variant](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Variant.html) in the *API Reference*.\n You must use expressions for all parameters in ``AssetPropertyVariant``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``integerValue`` parameter can be ``'100'``.\n + For references, you must specify either variables or parameters. For example, the value for the ``booleanValue`` parameter can be ``$variable.offline``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates. \n In the following example, the value for the ``doubleValue`` parameter uses a substitution template. \n ``'${$input.TemperatureInput.sensorData.temperature * 6 / 5 + 32}'`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.\n You must specify one of the following value types, depending on the ``dataType`` of the specified asset property. For more information, see [AssetProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetProperty.html) in the *API Reference*.", - "properties": { - "BooleanValue": { - "description": "The asset property value is a Boolean value that must be ``'TRUE'`` or ``'FALSE'``. You must use an expression, and the evaluated result should be a Boolean value.", - "type": "string" - }, - "DoubleValue": { - "description": "The asset property value is a double. You must use an expression, and the evaluated result should be a double.", - "type": "string" - }, - "IntegerValue": { - "description": "The asset property value is an integer. You must use an expression, and the evaluated result should be an integer.", - "type": "string" - }, - "StringValue": { - "description": "The asset property value is a string. You must use an expression, and the evaluated result should be a string.", - "type": "string" - } - }, - "type": "object" - }, - "DynamoDB": { - "additionalProperties": false, - "description": "Defines an action to write to the Amazon DynamoDB table that you created. The standard action payload contains all the information about the detector model instance and the event that triggered the action. You can customize the [payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html). One column of the DynamoDB table receives all attribute-value pairs in the payload that you specify.\n You must use expressions for all parameters in ``DynamoDBAction``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``hashKeyType`` parameter can be ``'STRING'``.\n + For references, you must specify either variables or input values. For example, the value for the ``hashKeyField`` parameter can be ``$input.GreenhouseInput.name``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``hashKeyValue`` parameter uses a substitution template. \n ``'${$input.GreenhouseInput.temperature * 6 / 5 + 32} in Fahrenheit'`` \n + For a string concatenation, you must use ``+``. A string concatenation can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``tableName`` parameter uses a string concatenation. \n ``'GreenhouseTemperatureTable ' + $input.GreenhouseInput.date`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.\n If the defined payload type is a string, ``DynamoDBAction`` writes non-JSON data to the DynamoDB table as binary data. The DynamoDB console displays the data as Base64-encoded text. The value for the ``payloadField`` parameter is ``_raw``.", - "properties": { - "HashKeyField": { - "description": "The name of the hash key (also called the partition key). The ``hashKeyField`` value must match the partition key of the target DynamoDB table.", - "type": "string" - }, - "HashKeyType": { - "description": "The data type for the hash key (also called the partition key). You can specify the following values:\n + ``'STRING'`` - The hash key is a string.\n + ``'NUMBER'`` - The hash key is a number.\n \n If you don't specify ``hashKeyType``, the default value is ``'STRING'``.", - "type": "string" - }, - "HashKeyValue": { - "description": "The value of the hash key (also called the partition key).", - "type": "string" - }, - "Operation": { - "description": "The type of operation to perform. You can specify the following values: \n + ``'INSERT'`` - Insert data as a new item into the DynamoDB table. This item uses the specified hash key as a partition key. If you specified a range key, the item uses the range key as a sort key.\n + ``'UPDATE'`` - Update an existing item of the DynamoDB table with new data. This item's partition key must match the specified hash key. If you specified a range key, the range key must match the item's sort key.\n + ``'DELETE'`` - Delete an existing item of the DynamoDB table. This item's partition key must match the specified hash key. If you specified a range key, the range key must match the item's sort key.\n \n If you don't specify this parameter, ITE triggers the ``'INSERT'`` operation.", - "type": "string" - }, - "Payload": { - "$ref": "#/definitions/Payload", - "description": "Information needed to configure the payload.\n By default, ITE generates a standard payload in JSON for any action. This action payload contains all attribute-value pairs that have the information about the detector model instance and the event triggered the action. To configure the action payload, you can use ``contentExpression``." - }, - "PayloadField": { - "description": "The name of the DynamoDB column that receives the action payload.\n If you don't specify this parameter, the name of the DynamoDB column is ``payload``.", - "type": "string" - }, - "RangeKeyField": { - "description": "The name of the range key (also called the sort key). The ``rangeKeyField`` value must match the sort key of the target DynamoDB table.", - "type": "string" - }, - "RangeKeyType": { - "description": "The data type for the range key (also called the sort key), You can specify the following values:\n + ``'STRING'`` - The range key is a string.\n + ``'NUMBER'`` - The range key is number.\n \n If you don't specify ``rangeKeyField``, the default value is ``'STRING'``.", - "type": "string" - }, - "RangeKeyValue": { - "description": "The value of the range key (also called the sort key).", - "type": "string" - }, - "TableName": { - "description": "The name of the DynamoDB table. The ``tableName`` value must match the table name of the target DynamoDB table.", - "type": "string" - } - }, - "required": [ - "HashKeyField", - "HashKeyValue", - "TableName" - ], - "type": "object" - }, - "DynamoDBv2": { - "additionalProperties": false, - "description": "Defines an action to write to the Amazon DynamoDB table that you created. The default action payload contains all the information about the detector model instance and the event that triggered the action. You can customize the [payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html). A separate column of the DynamoDB table receives one attribute-value pair in the payload that you specify.\n You must use expressions for all parameters in ``DynamoDBv2Action``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``tableName`` parameter can be ``'GreenhouseTemperatureTable'``.\n + For references, you must specify either variables or input values. For example, the value for the ``tableName`` parameter can be ``$variable.ddbtableName``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``contentExpression`` parameter in ``Payload`` uses a substitution template. \n ``'{\\\"sensorID\\\": \\\"${$input.GreenhouseInput.sensor_id}\\\", \\\"temperature\\\": \\\"${$input.GreenhouseInput.temperature * 9 / 5 + 32}\\\"}'`` \n + For a string concatenation, you must use ``+``. A string concatenation can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``tableName`` parameter uses a string concatenation. \n ``'GreenhouseTemperatureTable ' + $input.GreenhouseInput.date`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.\n The value for the ``type`` parameter in ``Payload`` must be ``JSON``.", - "properties": { - "Payload": { - "$ref": "#/definitions/Payload", - "description": "Information needed to configure the payload.\n By default, ITE generates a standard payload in JSON for any action. This action payload contains all attribute-value pairs that have the information about the detector model instance and the event triggered the action. To configure the action payload, you can use ``contentExpression``." - }, - "TableName": { - "description": "The name of the DynamoDB table.", - "type": "string" - } - }, - "required": [ - "TableName" - ], - "type": "object" - }, - "Firehose": { - "additionalProperties": false, - "description": "Sends information about the detector model instance and the event that triggered the action to an Amazon Kinesis Data Firehose delivery stream.", - "properties": { - "DeliveryStreamName": { - "description": "The name of the Kinesis Data Firehose delivery stream where the data is written.", - "type": "string" - }, - "Payload": { - "$ref": "#/definitions/Payload", - "description": "You can configure the action payload when you send a message to an Amazon Data Firehose delivery stream." - }, - "Separator": { - "description": "A character separator that is used to separate records written to the Kinesis Data Firehose delivery stream. Valid values are: '\\n' (newline), '\\t' (tab), '\\r\\n' (Windows newline), ',' (comma).", - "pattern": "([\\n\\t])|(\\r\\n)|(,)", - "type": "string" - } - }, - "required": [ - "DeliveryStreamName" - ], - "type": "object" - }, - "InitializationConfiguration": { - "additionalProperties": false, - "description": "Specifies the default alarm state. The configuration applies to all alarms that were created based on this alarm model.", - "properties": { - "DisabledOnInitialization": { - "default": "true", - "description": "The value must be ``TRUE`` or ``FALSE``. If ``FALSE``, all alarm instances created based on the alarm model are activated. The default value is ``TRUE``.", - "type": "boolean" - } - }, - "required": [ - "DisabledOnInitialization" - ], - "type": "object" - }, - "IotEvents": { - "additionalProperties": false, - "description": "Sends an ITE input, passing in information about the detector model instance and the event that triggered the action.", - "properties": { - "InputName": { - "description": "The name of the ITE input where the data is sent.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", - "type": "string" - }, - "Payload": { - "$ref": "#/definitions/Payload", - "description": "You can configure the action payload when you send a message to an ITE input." - } - }, - "required": [ - "InputName" - ], - "type": "object" - }, - "IotSiteWise": { - "additionalProperties": false, - "description": "Sends information about the detector model instance and the event that triggered the action to a specified asset property in ITSW.\n You must use expressions for all parameters in ``IotSiteWiseAction``. The expressions accept literals, operators, functions, references, and substitutions templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``propertyAlias`` parameter can be ``'/company/windfarm/3/turbine/7/temperature'``.\n + For references, you must specify either variables or input values. For example, the value for the ``assetId`` parameter can be ``$input.TurbineInput.assetId1``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``propertyAlias`` parameter uses a substitution template. \n ``'company/windfarm/${$input.TemperatureInput.sensorData.windfarmID}/turbine/ ${$input.TemperatureInput.sensorData.turbineID}/temperature'`` \n \n You must specify either ``propertyAlias`` or both ``assetId`` and ``propertyId`` to identify the target asset property in ITSW.\n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.", - "properties": { - "AssetId": { - "description": "The ID of the asset that has the specified property.", - "type": "string" - }, - "EntryId": { - "description": "A unique identifier for this entry. You can use the entry ID to track which data entry causes an error in case of failure. The default is a new unique identifier.", - "type": "string" - }, - "PropertyAlias": { - "description": "The alias of the asset property.", - "type": "string" - }, - "PropertyId": { - "description": "The ID of the asset property.", - "type": "string" - }, - "PropertyValue": { - "$ref": "#/definitions/AssetPropertyValue", - "description": "The value to send to the asset property. This value contains timestamp, quality, and value (TQV) information." - } - }, - "type": "object" - }, - "IotTopicPublish": { - "additionalProperties": false, - "description": "Information required to publish the MQTT message through the IoT message broker.", - "properties": { - "MqttTopic": { - "description": "The MQTT topic of the message. You can use a string expression that includes variables (``$variable.``) and input values (``$input..``) as the topic string.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Payload": { - "$ref": "#/definitions/Payload", - "description": "You can configure the action payload when you publish a message to an IoTCore topic." - } - }, - "required": [ - "MqttTopic" - ], - "type": "object" - }, - "Lambda": { - "additionalProperties": false, - "description": "Calls a Lambda function, passing in information about the detector model instance and the event that triggered the action.", - "properties": { - "FunctionArn": { - "description": "The ARN of the Lambda function that is executed.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Payload": { - "$ref": "#/definitions/Payload", - "description": "You can configure the action payload when you send a message to a Lambda function." - } - }, - "required": [ - "FunctionArn" - ], - "type": "object" - }, - "Payload": { - "additionalProperties": false, - "description": "Information needed to configure the payload.\n By default, ITE generates a standard payload in JSON for any action. This action payload contains all attribute-value pairs that have the information about the detector model instance and the event triggered the action. To configure the action payload, you can use ``contentExpression``.", - "properties": { - "ContentExpression": { - "description": "The content of the payload. You can use a string expression that includes quoted strings (``''``), variables (``$variable.``), input values (``$input..``), string concatenations, and quoted strings that contain ``${}`` as the content. The recommended maximum size of a content expression is 1 KB.", - "minLength": 1, - "type": "string" - }, - "Type": { - "description": "The value of the payload type can be either ``STRING`` or ``JSON``.", - "type": "string" - } - }, - "required": [ - "ContentExpression", - "Type" - ], - "type": "object" - }, - "SimpleRule": { - "additionalProperties": false, - "description": "A rule that compares an input property value to a threshold value with a comparison operator.", - "properties": { - "ComparisonOperator": { - "description": "The comparison operator.", - "enum": [ - "GREATER", - "GREATER_OR_EQUAL", - "LESS", - "LESS_OR_EQUAL", - "EQUAL", - "NOT_EQUAL" - ], - "type": "string" - }, - "InputProperty": { - "description": "The value on the left side of the comparison operator. You can specify an ITE input attribute as an input property.", - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Threshold": { - "description": "The value on the right side of the comparison operator. You can enter a number or specify an ITE input attribute.", - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "InputProperty", - "ComparisonOperator", - "Threshold" - ], - "type": "object" - }, - "Sns": { - "additionalProperties": false, - "description": "Information required to publish the Amazon SNS message.", - "properties": { - "Payload": { - "$ref": "#/definitions/Payload", - "description": "You can configure the action payload when you send a message as an Amazon SNS push notification." - }, - "TargetArn": { - "description": "The ARN of the Amazon SNS target where the message is sent.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "TargetArn" - ], - "type": "object" - }, - "Sqs": { - "additionalProperties": false, - "description": "Sends information about the detector model instance and the event that triggered the action to an Amazon SQS queue.", - "properties": { - "Payload": { - "$ref": "#/definitions/Payload", - "description": "You can configure the action payload when you send a message to an Amazon SQS queue." - }, - "QueueUrl": { - "description": "The URL of the SQS queue where the data is written.", - "type": "string" - }, - "UseBase64": { - "description": "Set this to TRUE if you want the data to be base-64 encoded before it is written to the queue. Otherwise, set this to FALSE.", - "type": "boolean" - } - }, - "required": [ - "QueueUrl" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Metadata that can be used to manage the resource.", - "properties": { - "Key": { - "description": "The tag's key.", - "type": "string" - }, - "Value": { - "description": "The tag's value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Represents an alarm model to monitor an ITE input attribute. You can use the alarm to get notified when the value is outside a specified range. For more information, see [Create an alarm model](https://docs.aws.amazon.com/iotevents/latest/developerguide/create-alarms.html) in the *Developer Guide*.", - "handlers": { - "create": { - "permissions": [ - "iotevents:CreateAlarmModel", - "iotevents:UpdateInputRouting", - "iotevents:DescribeAlarmModel", - "iotevents:ListTagsForResource", - "iotevents:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "iotevents:DeleteAlarmModel", - "iotevents:DescribeAlarmModel" - ] - }, - "list": { - "permissions": [ - "iotevents:ListAlarmModels" - ] - }, - "read": { - "permissions": [ - "iotevents:DescribeAlarmModel", - "iotevents:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotevents:UpdateAlarmModel", - "iotevents:UpdateInputRouting", - "iotevents:DescribeAlarmModel", - "iotevents:ListTagsForResource", - "iotevents:UntagResource", - "iotevents:TagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/AlarmModelName" - ], - "properties": { - "AlarmCapabilities": { - "$ref": "#/definitions/AlarmCapabilities", - "description": "Contains the configuration information of alarm state changes." - }, - "AlarmEventActions": { - "$ref": "#/definitions/AlarmEventActions", - "description": "Contains information about one or more alarm actions." - }, - "AlarmModelDescription": { - "description": "The description of the alarm model.", - "maxLength": 1024, - "type": "string" - }, - "AlarmModelName": { - "description": "The name of the alarm model.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "AlarmRule": { - "$ref": "#/definitions/AlarmRule", - "description": "Defines when your alarm is invoked." - }, - "Key": { - "description": "An input attribute used as a key to create an alarm. ITE routes [inputs](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Input.html) associated with this key to the alarm.", - "maxLength": 128, - "minLength": 1, - "pattern": "^((`[\\w\\- ]+`)|([\\w\\-]+))(\\.((`[\\w\\- ]+`)|([\\w\\-]+)))*$", - "type": "string" - }, - "RoleArn": { - "description": "The ARN of the IAM role that allows the alarm to perform actions and access AWS resources. For more information, see [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the *General Reference*.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Severity": { - "description": "A non-negative integer that reflects the severity level of the alarm.", - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the alarm model. The tags help you manage the alarm model. For more information, see [Tagging your resources](https://docs.aws.amazon.com/iotevents/latest/developerguide/tagging-iotevents.html) in the *Developer Guide*.\n You can create up to 50 tags for one alarm model.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "RoleArn", - "AlarmRule" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "iotevents:UntagResource", - "iotevents:TagResource", - "iotevents:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTEvents::AlarmModel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AlarmModelName", + "/properties/Key" + ], + "definitions": { + "AcknowledgeFlow": { + "additionalProperties": false, + "description": "Specifies whether to get notified for alarm state changes.", + "properties": { + "Enabled": { + "default": "true", + "description": "The value must be ``TRUE`` or ``FALSE``. If ``TRUE``, you receive a notification when the alarm state changes. You must choose to acknowledge the notification before the alarm state can return to ``NORMAL``. If ``FALSE``, you won't receive notifications. The alarm automatically changes to the ``NORMAL`` state when the input property value returns to the specified range.", + "type": "boolean" + } + }, + "type": "object" + }, + "AlarmAction": { + "additionalProperties": false, + "description": "Specifies one of the following actions to receive notifications when the alarm state changes.", + "properties": { + "DynamoDB": { + "$ref": "#/definitions/DynamoDB", + "description": "Defines an action to write to the Amazon DynamoDB table that you created. The standard action payload contains all the information about the detector model instance and the event that triggered the action. You can customize the [payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html). One column of the DynamoDB table receives all attribute-value pairs in the payload that you specify.\n You must use expressions for all parameters in ``DynamoDBAction``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``hashKeyType`` parameter can be ``'STRING'``.\n + For references, you must specify either variables or input values. For example, the value for the ``hashKeyField`` parameter can be ``$input.GreenhouseInput.name``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``hashKeyValue`` parameter uses a substitution template. \n ``'${$input.GreenhouseInput.temperature * 6 / 5 + 32} in Fahrenheit'`` \n + For a string concatenation, you must use ``+``. A string concatenation can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``tableName`` parameter uses a string concatenation. \n ``'GreenhouseTemperatureTable ' + $input.GreenhouseInput.date`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.\n If the defined payload type is a string, ``DynamoDBAction`` writes non-JSON data to the DynamoDB table as binary data. The DynamoDB console displays the data as Base64-encoded text. The value for the ``payloadField`` parameter is ``_raw``." + }, + "DynamoDBv2": { + "$ref": "#/definitions/DynamoDBv2", + "description": "Defines an action to write to the Amazon DynamoDB table that you created. The default action payload contains all the information about the detector model instance and the event that triggered the action. You can customize the [payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html). A separate column of the DynamoDB table receives one attribute-value pair in the payload that you specify.\n You must use expressions for all parameters in ``DynamoDBv2Action``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``tableName`` parameter can be ``'GreenhouseTemperatureTable'``.\n + For references, you must specify either variables or input values. For example, the value for the ``tableName`` parameter can be ``$variable.ddbtableName``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``contentExpression`` parameter in ``Payload`` uses a substitution template. \n ``'{\\\"sensorID\\\": \\\"${$input.GreenhouseInput.sensor_id}\\\", \\\"temperature\\\": \\\"${$input.GreenhouseInput.temperature * 9 / 5 + 32}\\\"}'`` \n + For a string concatenation, you must use ``+``. A string concatenation can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``tableName`` parameter uses a string concatenation. \n ``'GreenhouseTemperatureTable ' + $input.GreenhouseInput.date`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.\n The value for the ``type`` parameter in ``Payload`` must be ``JSON``." + }, + "Firehose": { + "$ref": "#/definitions/Firehose", + "description": "Sends information about the detector model instance and the event that triggered the action to an Amazon Kinesis Data Firehose delivery stream." + }, + "IotEvents": { + "$ref": "#/definitions/IotEvents", + "description": "Sends an ITE input, passing in information about the detector model instance and the event that triggered the action." + }, + "IotSiteWise": { + "$ref": "#/definitions/IotSiteWise", + "description": "Sends information about the detector model instance and the event that triggered the action to a specified asset property in ITSW.\n You must use expressions for all parameters in ``IotSiteWiseAction``. The expressions accept literals, operators, functions, references, and substitutions templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``propertyAlias`` parameter can be ``'/company/windfarm/3/turbine/7/temperature'``.\n + For references, you must specify either variables or input values. For example, the value for the ``assetId`` parameter can be ``$input.TurbineInput.assetId1``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``propertyAlias`` parameter uses a substitution template. \n ``'company/windfarm/${$input.TemperatureInput.sensorData.windfarmID}/turbine/ ${$input.TemperatureInput.sensorData.turbineID}/temperature'`` \n \n You must specify either ``propertyAlias`` or both ``assetId`` and ``propertyId`` to identify the target asset property in ITSW.\n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*." + }, + "IotTopicPublish": { + "$ref": "#/definitions/IotTopicPublish", + "description": "Information required to publish the MQTT message through the IoT message broker." + }, + "Lambda": { + "$ref": "#/definitions/Lambda", + "description": "Calls a Lambda function, passing in information about the detector model instance and the event that triggered the action." + }, + "Sns": { + "$ref": "#/definitions/Sns", + "description": "Information required to publish the Amazon SNS message." + }, + "Sqs": { + "$ref": "#/definitions/Sqs", + "description": "Sends information about the detector model instance and the event that triggered the action to an Amazon SQS queue." + } + }, + "type": "object" + }, + "AlarmActions": { + "description": "Specifies one or more supported actions to receive notifications when the alarm state changes.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AlarmAction" + }, + "type": "array", + "uniqueItems": false + }, + "AlarmCapabilities": { + "additionalProperties": false, + "description": "Contains the configuration information of alarm state changes.", + "properties": { + "AcknowledgeFlow": { + "$ref": "#/definitions/AcknowledgeFlow", + "description": "Specifies whether to get notified for alarm state changes." + }, + "InitializationConfiguration": { + "$ref": "#/definitions/InitializationConfiguration", + "description": "Specifies the default alarm state. The configuration applies to all alarms that were created based on this alarm model." + } + }, + "type": "object" + }, + "AlarmEventActions": { + "additionalProperties": false, + "description": "Contains information about one or more alarm actions.", + "properties": { + "AlarmActions": { + "$ref": "#/definitions/AlarmActions", + "description": "Specifies one or more supported actions to receive notifications when the alarm state changes." + } + }, + "type": "object" + }, + "AlarmRule": { + "additionalProperties": false, + "description": "Defines when your alarm is invoked.", + "properties": { + "SimpleRule": { + "$ref": "#/definitions/SimpleRule", + "description": "A rule that compares an input property value to a threshold value with a comparison operator." + } + }, + "type": "object" + }, + "AssetPropertyTimestamp": { + "additionalProperties": false, + "description": "A structure that contains timestamp information. For more information, see [TimeInNanos](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_TimeInNanos.html) in the *API Reference*.\n You must use expressions for all parameters in ``AssetPropertyTimestamp``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``timeInSeconds`` parameter can be ``'1586400675'``.\n + For references, you must specify either variables or input values. For example, the value for the ``offsetInNanos`` parameter can be ``$variable.time``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``timeInSeconds`` parameter uses a substitution template.\n ``'${$input.TemperatureInput.sensorData.timestamp / 1000}'`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.", + "properties": { + "OffsetInNanos": { + "description": "The nanosecond offset converted from ``timeInSeconds``. The valid range is between 0-999999999.", + "type": "string" + }, + "TimeInSeconds": { + "description": "The timestamp, in seconds, in the Unix epoch format. The valid range is between 1-31556889864403199.", + "type": "string" + } + }, + "required": [ + "TimeInSeconds" + ], + "type": "object" + }, + "AssetPropertyValue": { + "additionalProperties": false, + "description": "A structure that contains value information. For more information, see [AssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetPropertyValue.html) in the *API Reference*.\n You must use expressions for all parameters in ``AssetPropertyValue``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``quality`` parameter can be ``'GOOD'``.\n + For references, you must specify either variables or input values. For example, the value for the ``quality`` parameter can be ``$input.TemperatureInput.sensorData.quality``.\n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.", + "properties": { + "Quality": { + "description": "The quality of the asset property value. The value must be ``'GOOD'``, ``'BAD'``, or ``'UNCERTAIN'``.", + "type": "string" + }, + "Timestamp": { + "$ref": "#/definitions/AssetPropertyTimestamp", + "description": "The timestamp associated with the asset property value. The default is the current event time." + }, + "Value": { + "$ref": "#/definitions/AssetPropertyVariant", + "description": "The value to send to an asset property." + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "AssetPropertyVariant": { + "additionalProperties": false, + "description": "A structure that contains an asset property value. For more information, see [Variant](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Variant.html) in the *API Reference*.\n You must use expressions for all parameters in ``AssetPropertyVariant``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``integerValue`` parameter can be ``'100'``.\n + For references, you must specify either variables or parameters. For example, the value for the ``booleanValue`` parameter can be ``$variable.offline``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates. \n In the following example, the value for the ``doubleValue`` parameter uses a substitution template. \n ``'${$input.TemperatureInput.sensorData.temperature * 6 / 5 + 32}'`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.\n You must specify one of the following value types, depending on the ``dataType`` of the specified asset property. For more information, see [AssetProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetProperty.html) in the *API Reference*.", + "properties": { + "BooleanValue": { + "description": "The asset property value is a Boolean value that must be ``'TRUE'`` or ``'FALSE'``. You must use an expression, and the evaluated result should be a Boolean value.", + "type": "string" + }, + "DoubleValue": { + "description": "The asset property value is a double. You must use an expression, and the evaluated result should be a double.", + "type": "string" + }, + "IntegerValue": { + "description": "The asset property value is an integer. You must use an expression, and the evaluated result should be an integer.", + "type": "string" + }, + "StringValue": { + "description": "The asset property value is a string. You must use an expression, and the evaluated result should be a string.", + "type": "string" + } + }, + "type": "object" + }, + "DynamoDB": { + "additionalProperties": false, + "description": "Defines an action to write to the Amazon DynamoDB table that you created. The standard action payload contains all the information about the detector model instance and the event that triggered the action. You can customize the [payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html). One column of the DynamoDB table receives all attribute-value pairs in the payload that you specify.\n You must use expressions for all parameters in ``DynamoDBAction``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``hashKeyType`` parameter can be ``'STRING'``.\n + For references, you must specify either variables or input values. For example, the value for the ``hashKeyField`` parameter can be ``$input.GreenhouseInput.name``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``hashKeyValue`` parameter uses a substitution template. \n ``'${$input.GreenhouseInput.temperature * 6 / 5 + 32} in Fahrenheit'`` \n + For a string concatenation, you must use ``+``. A string concatenation can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``tableName`` parameter uses a string concatenation. \n ``'GreenhouseTemperatureTable ' + $input.GreenhouseInput.date`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.\n If the defined payload type is a string, ``DynamoDBAction`` writes non-JSON data to the DynamoDB table as binary data. The DynamoDB console displays the data as Base64-encoded text. The value for the ``payloadField`` parameter is ``_raw``.", + "properties": { + "HashKeyField": { + "description": "The name of the hash key (also called the partition key). The ``hashKeyField`` value must match the partition key of the target DynamoDB table.", + "type": "string" + }, + "HashKeyType": { + "description": "The data type for the hash key (also called the partition key). You can specify the following values:\n + ``'STRING'`` - The hash key is a string.\n + ``'NUMBER'`` - The hash key is a number.\n \n If you don't specify ``hashKeyType``, the default value is ``'STRING'``.", + "type": "string" + }, + "HashKeyValue": { + "description": "The value of the hash key (also called the partition key).", + "type": "string" + }, + "Operation": { + "description": "The type of operation to perform. You can specify the following values: \n + ``'INSERT'`` - Insert data as a new item into the DynamoDB table. This item uses the specified hash key as a partition key. If you specified a range key, the item uses the range key as a sort key.\n + ``'UPDATE'`` - Update an existing item of the DynamoDB table with new data. This item's partition key must match the specified hash key. If you specified a range key, the range key must match the item's sort key.\n + ``'DELETE'`` - Delete an existing item of the DynamoDB table. This item's partition key must match the specified hash key. If you specified a range key, the range key must match the item's sort key.\n \n If you don't specify this parameter, ITE triggers the ``'INSERT'`` operation.", + "type": "string" + }, + "Payload": { + "$ref": "#/definitions/Payload", + "description": "Information needed to configure the payload.\n By default, ITE generates a standard payload in JSON for any action. This action payload contains all attribute-value pairs that have the information about the detector model instance and the event triggered the action. To configure the action payload, you can use ``contentExpression``." + }, + "PayloadField": { + "description": "The name of the DynamoDB column that receives the action payload.\n If you don't specify this parameter, the name of the DynamoDB column is ``payload``.", + "type": "string" + }, + "RangeKeyField": { + "description": "The name of the range key (also called the sort key). The ``rangeKeyField`` value must match the sort key of the target DynamoDB table.", + "type": "string" + }, + "RangeKeyType": { + "description": "The data type for the range key (also called the sort key), You can specify the following values:\n + ``'STRING'`` - The range key is a string.\n + ``'NUMBER'`` - The range key is number.\n \n If you don't specify ``rangeKeyField``, the default value is ``'STRING'``.", + "type": "string" + }, + "RangeKeyValue": { + "description": "The value of the range key (also called the sort key).", + "type": "string" + }, + "TableName": { + "description": "The name of the DynamoDB table. The ``tableName`` value must match the table name of the target DynamoDB table.", + "type": "string" + } + }, + "required": [ + "HashKeyField", + "HashKeyValue", + "TableName" + ], + "type": "object" + }, + "DynamoDBv2": { + "additionalProperties": false, + "description": "Defines an action to write to the Amazon DynamoDB table that you created. The default action payload contains all the information about the detector model instance and the event that triggered the action. You can customize the [payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html). A separate column of the DynamoDB table receives one attribute-value pair in the payload that you specify.\n You must use expressions for all parameters in ``DynamoDBv2Action``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``tableName`` parameter can be ``'GreenhouseTemperatureTable'``.\n + For references, you must specify either variables or input values. For example, the value for the ``tableName`` parameter can be ``$variable.ddbtableName``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``contentExpression`` parameter in ``Payload`` uses a substitution template. \n ``'{\\\"sensorID\\\": \\\"${$input.GreenhouseInput.sensor_id}\\\", \\\"temperature\\\": \\\"${$input.GreenhouseInput.temperature * 9 / 5 + 32}\\\"}'`` \n + For a string concatenation, you must use ``+``. A string concatenation can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``tableName`` parameter uses a string concatenation. \n ``'GreenhouseTemperatureTable ' + $input.GreenhouseInput.date`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.\n The value for the ``type`` parameter in ``Payload`` must be ``JSON``.", + "properties": { + "Payload": { + "$ref": "#/definitions/Payload", + "description": "Information needed to configure the payload.\n By default, ITE generates a standard payload in JSON for any action. This action payload contains all attribute-value pairs that have the information about the detector model instance and the event triggered the action. To configure the action payload, you can use ``contentExpression``." + }, + "TableName": { + "description": "The name of the DynamoDB table.", + "type": "string" + } + }, + "required": [ + "TableName" + ], + "type": "object" + }, + "Firehose": { + "additionalProperties": false, + "description": "Sends information about the detector model instance and the event that triggered the action to an Amazon Kinesis Data Firehose delivery stream.", + "properties": { + "DeliveryStreamName": { + "description": "The name of the Kinesis Data Firehose delivery stream where the data is written.", + "type": "string" + }, + "Payload": { + "$ref": "#/definitions/Payload", + "description": "You can configure the action payload when you send a message to an Amazon Data Firehose delivery stream." + }, + "Separator": { + "description": "A character separator that is used to separate records written to the Kinesis Data Firehose delivery stream. Valid values are: '\\n' (newline), '\\t' (tab), '\\r\\n' (Windows newline), ',' (comma).", + "pattern": "([\\n\\t])|(\\r\\n)|(,)", + "type": "string" + } + }, + "required": [ + "DeliveryStreamName" + ], + "type": "object" + }, + "InitializationConfiguration": { + "additionalProperties": false, + "description": "Specifies the default alarm state. The configuration applies to all alarms that were created based on this alarm model.", + "properties": { + "DisabledOnInitialization": { + "default": "true", + "description": "The value must be ``TRUE`` or ``FALSE``. If ``FALSE``, all alarm instances created based on the alarm model are activated. The default value is ``TRUE``.", + "type": "boolean" + } + }, + "required": [ + "DisabledOnInitialization" + ], + "type": "object" + }, + "IotEvents": { + "additionalProperties": false, + "description": "Sends an ITE input, passing in information about the detector model instance and the event that triggered the action.", + "properties": { + "InputName": { + "description": "The name of the ITE input where the data is sent.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + "Payload": { + "$ref": "#/definitions/Payload", + "description": "You can configure the action payload when you send a message to an ITE input." + } + }, + "required": [ + "InputName" + ], + "type": "object" + }, + "IotSiteWise": { + "additionalProperties": false, + "description": "Sends information about the detector model instance and the event that triggered the action to a specified asset property in ITSW.\n You must use expressions for all parameters in ``IotSiteWiseAction``. The expressions accept literals, operators, functions, references, and substitutions templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``propertyAlias`` parameter can be ``'/company/windfarm/3/turbine/7/temperature'``.\n + For references, you must specify either variables or input values. For example, the value for the ``assetId`` parameter can be ``$input.TurbineInput.assetId1``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``propertyAlias`` parameter uses a substitution template. \n ``'company/windfarm/${$input.TemperatureInput.sensorData.windfarmID}/turbine/ ${$input.TemperatureInput.sensorData.turbineID}/temperature'`` \n \n You must specify either ``propertyAlias`` or both ``assetId`` and ``propertyId`` to identify the target asset property in ITSW.\n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.", + "properties": { + "AssetId": { + "description": "The ID of the asset that has the specified property.", + "type": "string" + }, + "EntryId": { + "description": "A unique identifier for this entry. You can use the entry ID to track which data entry causes an error in case of failure. The default is a new unique identifier.", + "type": "string" + }, + "PropertyAlias": { + "description": "The alias of the asset property.", + "type": "string" + }, + "PropertyId": { + "description": "The ID of the asset property.", + "type": "string" + }, + "PropertyValue": { + "$ref": "#/definitions/AssetPropertyValue", + "description": "The value to send to the asset property. This value contains timestamp, quality, and value (TQV) information." + } + }, + "type": "object" + }, + "IotTopicPublish": { + "additionalProperties": false, + "description": "Information required to publish the MQTT message through the IoT message broker.", + "properties": { + "MqttTopic": { + "description": "The MQTT topic of the message. You can use a string expression that includes variables (``$variable.``) and input values (``$input..``) as the topic string.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Payload": { + "$ref": "#/definitions/Payload", + "description": "You can configure the action payload when you publish a message to an IoTCore topic." + } + }, + "required": [ + "MqttTopic" + ], + "type": "object" + }, + "Lambda": { + "additionalProperties": false, + "description": "Calls a Lambda function, passing in information about the detector model instance and the event that triggered the action.", + "properties": { + "FunctionArn": { + "description": "The ARN of the Lambda function that is executed.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Payload": { + "$ref": "#/definitions/Payload", + "description": "You can configure the action payload when you send a message to a Lambda function." + } + }, + "required": [ + "FunctionArn" + ], + "type": "object" + }, + "Payload": { + "additionalProperties": false, + "description": "Information needed to configure the payload.\n By default, ITE generates a standard payload in JSON for any action. This action payload contains all attribute-value pairs that have the information about the detector model instance and the event triggered the action. To configure the action payload, you can use ``contentExpression``.", + "properties": { + "ContentExpression": { + "description": "The content of the payload. You can use a string expression that includes quoted strings (``''``), variables (``$variable.``), input values (``$input..``), string concatenations, and quoted strings that contain ``${}`` as the content. The recommended maximum size of a content expression is 1 KB.", + "minLength": 1, + "type": "string" + }, + "Type": { + "description": "The value of the payload type can be either ``STRING`` or ``JSON``.", + "type": "string" + } + }, + "required": [ + "ContentExpression", + "Type" + ], + "type": "object" + }, + "SimpleRule": { + "additionalProperties": false, + "description": "A rule that compares an input property value to a threshold value with a comparison operator.", + "properties": { + "ComparisonOperator": { + "description": "The comparison operator.", + "enum": [ + "GREATER", + "GREATER_OR_EQUAL", + "LESS", + "LESS_OR_EQUAL", + "EQUAL", + "NOT_EQUAL" + ], + "type": "string" + }, + "InputProperty": { + "description": "The value on the left side of the comparison operator. You can specify an ITE input attribute as an input property.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Threshold": { + "description": "The value on the right side of the comparison operator. You can enter a number or specify an ITE input attribute.", + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "InputProperty", + "ComparisonOperator", + "Threshold" + ], + "type": "object" + }, + "Sns": { + "additionalProperties": false, + "description": "Information required to publish the Amazon SNS message.", + "properties": { + "Payload": { + "$ref": "#/definitions/Payload", + "description": "You can configure the action payload when you send a message as an Amazon SNS push notification." + }, + "TargetArn": { + "description": "The ARN of the Amazon SNS target where the message is sent.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "TargetArn" + ], + "type": "object" + }, + "Sqs": { + "additionalProperties": false, + "description": "Sends information about the detector model instance and the event that triggered the action to an Amazon SQS queue.", + "properties": { + "Payload": { + "$ref": "#/definitions/Payload", + "description": "You can configure the action payload when you send a message to an Amazon SQS queue." + }, + "QueueUrl": { + "description": "The URL of the SQS queue where the data is written.", + "type": "string" + }, + "UseBase64": { + "description": "Set this to TRUE if you want the data to be base-64 encoded before it is written to the queue. Otherwise, set this to FALSE.", + "type": "boolean" + } + }, + "required": [ + "QueueUrl" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Metadata that can be used to manage the resource.", + "properties": { + "Key": { + "description": "The tag's key.", + "type": "string" + }, + "Value": { + "description": "The tag's value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Represents an alarm model to monitor an ITE input attribute. You can use the alarm to get notified when the value is outside a specified range. For more information, see [Create an alarm model](https://docs.aws.amazon.com/iotevents/latest/developerguide/create-alarms.html) in the *Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "iotevents:CreateAlarmModel", + "iotevents:UpdateInputRouting", + "iotevents:DescribeAlarmModel", + "iotevents:ListTagsForResource", + "iotevents:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "iotevents:DeleteAlarmModel", + "iotevents:DescribeAlarmModel" + ] + }, + "list": { + "permissions": [ + "iotevents:ListAlarmModels" + ] + }, + "read": { + "permissions": [ + "iotevents:DescribeAlarmModel", + "iotevents:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotevents:UpdateAlarmModel", + "iotevents:UpdateInputRouting", + "iotevents:DescribeAlarmModel", + "iotevents:ListTagsForResource", + "iotevents:UntagResource", + "iotevents:TagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/AlarmModelName" + ], + "properties": { + "AlarmCapabilities": { + "$ref": "#/definitions/AlarmCapabilities", + "description": "Contains the configuration information of alarm state changes." + }, + "AlarmEventActions": { + "$ref": "#/definitions/AlarmEventActions", + "description": "Contains information about one or more alarm actions." + }, + "AlarmModelDescription": { + "description": "The description of the alarm model.", + "maxLength": 1024, + "type": "string" + }, + "AlarmModelName": { + "description": "The name of the alarm model.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "AlarmRule": { + "$ref": "#/definitions/AlarmRule", + "description": "Defines when your alarm is invoked." + }, + "Key": { + "description": "An input attribute used as a key to create an alarm. ITE routes [inputs](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Input.html) associated with this key to the alarm.", + "maxLength": 128, + "minLength": 1, + "pattern": "^((`[\\w\\- ]+`)|([\\w\\-]+))(\\.((`[\\w\\- ]+`)|([\\w\\-]+)))*$", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the IAM role that allows the alarm to perform actions and access AWS resources. For more information, see [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the *General Reference*.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Severity": { + "description": "A non-negative integer that reflects the severity level of the alarm.", + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the alarm model. The tags help you manage the alarm model. For more information, see [Tagging your resources](https://docs.aws.amazon.com/iotevents/latest/developerguide/tagging-iotevents.html) in the *Developer Guide*.\n You can create up to 50 tags for one alarm model.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "RoleArn", + "AlarmRule" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "iotevents:UntagResource", + "iotevents:TagResource", + "iotevents:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTEvents::AlarmModel" +} diff --git a/src/schema/aws-iotevents-detectormodel.json b/src/schema/aws-iotevents-detectormodel.json index a7529ce6..199cdb33 100644 --- a/src/schema/aws-iotevents-detectormodel.json +++ b/src/schema/aws-iotevents-detectormodel.json @@ -1,769 +1,769 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DetectorModelName", - "/properties/Key" - ], - "definitions": { - "Action": { - "additionalProperties": false, - "description": "An action to be performed when the ``condition`` is TRUE.", - "properties": { - "ClearTimer": { - "$ref": "#/definitions/ClearTimer", - "description": "Information needed to clear the timer." - }, - "DynamoDB": { - "$ref": "#/definitions/DynamoDB", - "description": "Writes to the DynamoDB table that you created. The default action payload contains all attribute-value pairs that have the information about the detector model instance and the event that triggered the action. You can customize the [payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html). One column of the DynamoDB table receives all attribute-value pairs in the payload that you specify. For more information, see [Actions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-event-actions.html) in *Developer Guide*." - }, - "DynamoDBv2": { - "$ref": "#/definitions/DynamoDBv2", - "description": "Writes to the DynamoDB table that you created. The default action payload contains all attribute-value pairs that have the information about the detector model instance and the event that triggered the action. You can customize the [payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html). A separate column of the DynamoDB table receives one attribute-value pair in the payload that you specify. For more information, see [Actions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-event-actions.html) in *Developer Guide*." - }, - "Firehose": { - "$ref": "#/definitions/Firehose", - "description": "Sends information about the detector model instance and the event that triggered the action to an Amazon Kinesis Data Firehose delivery stream." - }, - "IotEvents": { - "$ref": "#/definitions/IotEvents", - "description": "Sends ITE input, which passes information about the detector model instance and the event that triggered the action." - }, - "IotSiteWise": { - "$ref": "#/definitions/IotSiteWise", - "description": "Sends information about the detector model instance and the event that triggered the action to an asset property in ITSW ." - }, - "IotTopicPublish": { - "$ref": "#/definitions/IotTopicPublish", - "description": "Publishes an MQTT message with the given topic to the IoT message broker." - }, - "Lambda": { - "$ref": "#/definitions/Lambda", - "description": "Calls a Lambda function, passing in information about the detector model instance and the event that triggered the action." - }, - "ResetTimer": { - "$ref": "#/definitions/ResetTimer", - "description": "Information needed to reset the timer." - }, - "SetTimer": { - "$ref": "#/definitions/SetTimer", - "description": "Information needed to set the timer." - }, - "SetVariable": { - "$ref": "#/definitions/SetVariable", - "description": "Sets a variable to a specified value." - }, - "Sns": { - "$ref": "#/definitions/Sns", - "description": "Sends an Amazon SNS message." - }, - "Sqs": { - "$ref": "#/definitions/Sqs", - "description": "Sends an Amazon SNS message." - } - }, - "type": "object" - }, - "AssetPropertyTimestamp": { - "additionalProperties": false, - "description": "A structure that contains timestamp information. For more information, see [TimeInNanos](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_TimeInNanos.html) in the *API Reference*.\n You must use expressions for all parameters in ``AssetPropertyTimestamp``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``timeInSeconds`` parameter can be ``'1586400675'``.\n + For references, you must specify either variables or input values. For example, the value for the ``offsetInNanos`` parameter can be ``$variable.time``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``timeInSeconds`` parameter uses a substitution template.\n ``'${$input.TemperatureInput.sensorData.timestamp / 1000}'`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.", - "properties": { - "OffsetInNanos": { - "description": "The nanosecond offset converted from ``timeInSeconds``. The valid range is between 0-999999999.", - "type": "string" - }, - "TimeInSeconds": { - "description": "The timestamp, in seconds, in the Unix epoch format. The valid range is between 1-31556889864403199.", - "type": "string" - } - }, - "required": [ - "TimeInSeconds" - ], - "type": "object" - }, - "AssetPropertyValue": { - "additionalProperties": false, - "description": "A structure that contains value information. For more information, see [AssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetPropertyValue.html) in the *API Reference*.\n You must use expressions for all parameters in ``AssetPropertyValue``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``quality`` parameter can be ``'GOOD'``.\n + For references, you must specify either variables or input values. For example, the value for the ``quality`` parameter can be ``$input.TemperatureInput.sensorData.quality``.\n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.", - "properties": { - "Quality": { - "description": "The quality of the asset property value. The value must be ``'GOOD'``, ``'BAD'``, or ``'UNCERTAIN'``.", - "type": "string" - }, - "Timestamp": { - "$ref": "#/definitions/AssetPropertyTimestamp", - "description": "The timestamp associated with the asset property value. The default is the current event time." - }, - "Value": { - "$ref": "#/definitions/AssetPropertyVariant", - "description": "The value to send to an asset property." - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "AssetPropertyVariant": { - "additionalProperties": false, - "description": "A structure that contains an asset property value. For more information, see [Variant](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Variant.html) in the *API Reference*.\n You must use expressions for all parameters in ``AssetPropertyVariant``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``integerValue`` parameter can be ``'100'``.\n + For references, you must specify either variables or parameters. For example, the value for the ``booleanValue`` parameter can be ``$variable.offline``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates. \n In the following example, the value for the ``doubleValue`` parameter uses a substitution template. \n ``'${$input.TemperatureInput.sensorData.temperature * 6 / 5 + 32}'`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.\n You must specify one of the following value types, depending on the ``dataType`` of the specified asset property. For more information, see [AssetProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetProperty.html) in the *API Reference*.", - "properties": { - "BooleanValue": { - "description": "The asset property value is a Boolean value that must be ``'TRUE'`` or ``'FALSE'``. You must use an expression, and the evaluated result should be a Boolean value.", - "type": "string" - }, - "DoubleValue": { - "description": "The asset property value is a double. You must use an expression, and the evaluated result should be a double.", - "type": "string" - }, - "IntegerValue": { - "description": "The asset property value is an integer. You must use an expression, and the evaluated result should be an integer.", - "type": "string" - }, - "StringValue": { - "description": "The asset property value is a string. You must use an expression, and the evaluated result should be a string.", - "type": "string" - } - }, - "type": "object" - }, - "ClearTimer": { - "additionalProperties": false, - "description": "Information needed to clear the timer.", - "properties": { - "TimerName": { - "description": "The name of the timer to clear.", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "TimerName" - ], - "type": "object" - }, - "DetectorModelDefinition": { - "additionalProperties": false, - "description": "Information that defines how a detector operates.", - "properties": { - "InitialStateName": { - "description": "The state that is entered at the creation of each detector (instance).", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "States": { - "description": "Information about the states of the detector.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/State" - }, - "minItems": 1, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "States", - "InitialStateName" - ], - "type": "object" - }, - "DynamoDB": { - "additionalProperties": false, - "description": "Defines an action to write to the Amazon DynamoDB table that you created. The standard action payload contains all the information about the detector model instance and the event that triggered the action. You can customize the [payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html). One column of the DynamoDB table receives all attribute-value pairs in the payload that you specify.\n You must use expressions for all parameters in ``DynamoDBAction``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``hashKeyType`` parameter can be ``'STRING'``.\n + For references, you must specify either variables or input values. For example, the value for the ``hashKeyField`` parameter can be ``$input.GreenhouseInput.name``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``hashKeyValue`` parameter uses a substitution template. \n ``'${$input.GreenhouseInput.temperature * 6 / 5 + 32} in Fahrenheit'`` \n + For a string concatenation, you must use ``+``. A string concatenation can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``tableName`` parameter uses a string concatenation. \n ``'GreenhouseTemperatureTable ' + $input.GreenhouseInput.date`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.\n If the defined payload type is a string, ``DynamoDBAction`` writes non-JSON data to the DynamoDB table as binary data. The DynamoDB console displays the data as Base64-encoded text. The value for the ``payloadField`` parameter is ``_raw``.", - "properties": { - "HashKeyField": { - "description": "The name of the hash key (also called the partition key). The ``hashKeyField`` value must match the partition key of the target DynamoDB table.", - "type": "string" - }, - "HashKeyType": { - "description": "The data type for the hash key (also called the partition key). You can specify the following values:\n + ``'STRING'`` - The hash key is a string.\n + ``'NUMBER'`` - The hash key is a number.\n \n If you don't specify ``hashKeyType``, the default value is ``'STRING'``.", - "type": "string" - }, - "HashKeyValue": { - "description": "The value of the hash key (also called the partition key).", - "type": "string" - }, - "Operation": { - "description": "The type of operation to perform. You can specify the following values: \n + ``'INSERT'`` - Insert data as a new item into the DynamoDB table. This item uses the specified hash key as a partition key. If you specified a range key, the item uses the range key as a sort key.\n + ``'UPDATE'`` - Update an existing item of the DynamoDB table with new data. This item's partition key must match the specified hash key. If you specified a range key, the range key must match the item's sort key.\n + ``'DELETE'`` - Delete an existing item of the DynamoDB table. This item's partition key must match the specified hash key. If you specified a range key, the range key must match the item's sort key.\n \n If you don't specify this parameter, ITE triggers the ``'INSERT'`` operation.", - "type": "string" - }, - "Payload": { - "$ref": "#/definitions/Payload", - "description": "Information needed to configure the payload.\n By default, ITE generates a standard payload in JSON for any action. This action payload contains all attribute-value pairs that have the information about the detector model instance and the event triggered the action. To configure the action payload, you can use ``contentExpression``." - }, - "PayloadField": { - "description": "The name of the DynamoDB column that receives the action payload.\n If you don't specify this parameter, the name of the DynamoDB column is ``payload``.", - "type": "string" - }, - "RangeKeyField": { - "description": "The name of the range key (also called the sort key). The ``rangeKeyField`` value must match the sort key of the target DynamoDB table.", - "type": "string" - }, - "RangeKeyType": { - "description": "The data type for the range key (also called the sort key), You can specify the following values:\n + ``'STRING'`` - The range key is a string.\n + ``'NUMBER'`` - The range key is number.\n \n If you don't specify ``rangeKeyField``, the default value is ``'STRING'``.", - "type": "string" - }, - "RangeKeyValue": { - "description": "The value of the range key (also called the sort key).", - "type": "string" - }, - "TableName": { - "description": "The name of the DynamoDB table. The ``tableName`` value must match the table name of the target DynamoDB table.", - "type": "string" - } - }, - "required": [ - "HashKeyField", - "HashKeyValue", - "TableName" - ], - "type": "object" - }, - "DynamoDBv2": { - "additionalProperties": false, - "description": "Defines an action to write to the Amazon DynamoDB table that you created. The default action payload contains all the information about the detector model instance and the event that triggered the action. You can customize the [payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html). A separate column of the DynamoDB table receives one attribute-value pair in the payload that you specify.\n You must use expressions for all parameters in ``DynamoDBv2Action``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``tableName`` parameter can be ``'GreenhouseTemperatureTable'``.\n + For references, you must specify either variables or input values. For example, the value for the ``tableName`` parameter can be ``$variable.ddbtableName``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``contentExpression`` parameter in ``Payload`` uses a substitution template. \n ``'{\\\"sensorID\\\": \\\"${$input.GreenhouseInput.sensor_id}\\\", \\\"temperature\\\": \\\"${$input.GreenhouseInput.temperature * 9 / 5 + 32}\\\"}'`` \n + For a string concatenation, you must use ``+``. A string concatenation can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``tableName`` parameter uses a string concatenation. \n ``'GreenhouseTemperatureTable ' + $input.GreenhouseInput.date`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.\n The value for the ``type`` parameter in ``Payload`` must be ``JSON``.", - "properties": { - "Payload": { - "$ref": "#/definitions/Payload", - "description": "Information needed to configure the payload.\n By default, ITE generates a standard payload in JSON for any action. This action payload contains all attribute-value pairs that have the information about the detector model instance and the event triggered the action. To configure the action payload, you can use ``contentExpression``." - }, - "TableName": { - "description": "The name of the DynamoDB table.", - "type": "string" - } - }, - "required": [ - "TableName" - ], - "type": "object" - }, - "Event": { - "additionalProperties": false, - "description": "Specifies the ``actions`` to be performed when the ``condition`` evaluates to TRUE.", - "properties": { - "Actions": { - "description": "The actions to be performed.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Action" - }, - "type": "array", - "uniqueItems": false - }, - "Condition": { - "description": "Optional. The Boolean expression that, when TRUE, causes the ``actions`` to be performed. If not present, the actions are performed (=TRUE). If the expression result is not a Boolean value, the actions are not performed (=FALSE).", - "maxLength": 512, - "type": "string" - }, - "EventName": { - "description": "The name of the event.", - "maxLength": 128, - "type": "string" - } - }, - "required": [ - "EventName" - ], - "type": "object" - }, - "Firehose": { - "additionalProperties": false, - "description": "Sends information about the detector model instance and the event that triggered the action to an Amazon Kinesis Data Firehose delivery stream.", - "properties": { - "DeliveryStreamName": { - "description": "The name of the Kinesis Data Firehose delivery stream where the data is written.", - "type": "string" - }, - "Payload": { - "$ref": "#/definitions/Payload", - "description": "You can configure the action payload when you send a message to an Amazon Data Firehose delivery stream." - }, - "Separator": { - "description": "A character separator that is used to separate records written to the Kinesis Data Firehose delivery stream. Valid values are: '\\n' (newline), '\\t' (tab), '\\r\\n' (Windows newline), ',' (comma).", - "pattern": "([\\n\\t])|(\\r\\n)|(,)", - "type": "string" - } - }, - "required": [ - "DeliveryStreamName" - ], - "type": "object" - }, - "IotEvents": { - "additionalProperties": false, - "description": "Sends an ITE input, passing in information about the detector model instance and the event that triggered the action.", - "properties": { - "InputName": { - "description": "The name of the ITE input where the data is sent.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", - "type": "string" - }, - "Payload": { - "$ref": "#/definitions/Payload", - "description": "You can configure the action payload when you send a message to an ITE input." - } - }, - "required": [ - "InputName" - ], - "type": "object" - }, - "IotSiteWise": { - "additionalProperties": false, - "description": "Sends information about the detector model instance and the event that triggered the action to a specified asset property in ITSW.\n You must use expressions for all parameters in ``IotSiteWiseAction``. The expressions accept literals, operators, functions, references, and substitutions templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``propertyAlias`` parameter can be ``'/company/windfarm/3/turbine/7/temperature'``.\n + For references, you must specify either variables or input values. For example, the value for the ``assetId`` parameter can be ``$input.TurbineInput.assetId1``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``propertyAlias`` parameter uses a substitution template. \n ``'company/windfarm/${$input.TemperatureInput.sensorData.windfarmID}/turbine/ ${$input.TemperatureInput.sensorData.turbineID}/temperature'`` \n \n You must specify either ``propertyAlias`` or both ``assetId`` and ``propertyId`` to identify the target asset property in ITSW.\n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.", - "properties": { - "AssetId": { - "description": "The ID of the asset that has the specified property.", - "type": "string" - }, - "EntryId": { - "description": "A unique identifier for this entry. You can use the entry ID to track which data entry causes an error in case of failure. The default is a new unique identifier.", - "type": "string" - }, - "PropertyAlias": { - "description": "The alias of the asset property.", - "type": "string" - }, - "PropertyId": { - "description": "The ID of the asset property.", - "type": "string" - }, - "PropertyValue": { - "$ref": "#/definitions/AssetPropertyValue", - "description": "The value to send to the asset property. This value contains timestamp, quality, and value (TQV) information." - } - }, - "required": [ - "PropertyValue" - ], - "type": "object" - }, - "IotTopicPublish": { - "additionalProperties": false, - "description": "Information required to publish the MQTT message through the IoT message broker.", - "properties": { - "MqttTopic": { - "description": "The MQTT topic of the message. You can use a string expression that includes variables (``$variable.``) and input values (``$input..``) as the topic string.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Payload": { - "$ref": "#/definitions/Payload", - "description": "You can configure the action payload when you publish a message to an IoTCore topic." - } - }, - "required": [ - "MqttTopic" - ], - "type": "object" - }, - "Lambda": { - "additionalProperties": false, - "description": "Calls a Lambda function, passing in information about the detector model instance and the event that triggered the action.", - "properties": { - "FunctionArn": { - "description": "The ARN of the Lambda function that is executed.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Payload": { - "$ref": "#/definitions/Payload", - "description": "You can configure the action payload when you send a message to a Lambda function." - } - }, - "required": [ - "FunctionArn" - ], - "type": "object" - }, - "OnEnter": { - "additionalProperties": false, - "description": "When entering this state, perform these ``actions`` if the ``condition`` is TRUE.", - "properties": { - "Events": { - "description": "Specifies the actions that are performed when the state is entered and the ``condition`` is ``TRUE``.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Event" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "OnExit": { - "additionalProperties": false, - "description": "When exiting this state, perform these ``actions`` if the specified ``condition`` is ``TRUE``.", - "properties": { - "Events": { - "description": "Specifies the ``actions`` that are performed when the state is exited and the ``condition`` is ``TRUE``.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Event" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "OnInput": { - "additionalProperties": false, - "description": "Specifies the actions performed when the ``condition`` evaluates to TRUE.", - "properties": { - "Events": { - "description": "Specifies the actions performed when the ``condition`` evaluates to TRUE.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Event" - }, - "type": "array", - "uniqueItems": false - }, - "TransitionEvents": { - "description": "Specifies the actions performed, and the next state entered, when a ``condition`` evaluates to TRUE.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TransitionEvent" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "Payload": { - "additionalProperties": false, - "description": "Information needed to configure the payload.\n By default, ITE generates a standard payload in JSON for any action. This action payload contains all attribute-value pairs that have the information about the detector model instance and the event triggered the action. To configure the action payload, you can use ``contentExpression``.", - "properties": { - "ContentExpression": { - "description": "The content of the payload. You can use a string expression that includes quoted strings (``''``), variables (``$variable.``), input values (``$input..``), string concatenations, and quoted strings that contain ``${}`` as the content. The recommended maximum size of a content expression is 1 KB.", - "minLength": 1, - "type": "string" - }, - "Type": { - "description": "The value of the payload type can be either ``STRING`` or ``JSON``.", - "type": "string" - } - }, - "required": [ - "ContentExpression", - "Type" - ], - "type": "object" - }, - "ResetTimer": { - "additionalProperties": false, - "description": "Information required to reset the timer. The timer is reset to the previously evaluated result of the duration. The duration expression isn't reevaluated when you reset the timer.", - "properties": { - "TimerName": { - "description": "The name of the timer to reset.", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "TimerName" - ], - "type": "object" - }, - "SetTimer": { - "additionalProperties": false, - "description": "Information needed to set the timer.", - "properties": { - "DurationExpression": { - "description": "The duration of the timer, in seconds. You can use a string expression that includes numbers, variables (``$variable.``), and input values (``$input..``) as the duration. The range of the duration is 1-31622400 seconds. To ensure accuracy, the minimum duration is 60 seconds. The evaluated result of the duration is rounded down to the nearest whole number.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Seconds": { - "description": "The number of seconds until the timer expires. The minimum value is 60 seconds to ensure accuracy. The maximum value is 31622400 seconds.", - "maximum": 31622400, - "minimum": 60, - "type": "integer" - }, - "TimerName": { - "description": "The name of the timer.", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "TimerName" - ], - "type": "object" - }, - "SetVariable": { - "additionalProperties": false, - "description": "Information about the variable and its new value.", - "properties": { - "Value": { - "description": "The new value of the variable.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "VariableName": { - "description": "The name of the variable.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", - "type": "string" - } - }, - "required": [ - "Value", - "VariableName" - ], - "type": "object" - }, - "Sns": { - "additionalProperties": false, - "description": "Information required to publish the Amazon SNS message.", - "properties": { - "Payload": { - "$ref": "#/definitions/Payload", - "description": "You can configure the action payload when you send a message as an Amazon SNS push notification." - }, - "TargetArn": { - "description": "The ARN of the Amazon SNS target where the message is sent.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "TargetArn" - ], - "type": "object" - }, - "Sqs": { - "additionalProperties": false, - "description": "Sends information about the detector model instance and the event that triggered the action to an Amazon SQS queue.", - "properties": { - "Payload": { - "$ref": "#/definitions/Payload", - "description": "You can configure the action payload when you send a message to an Amazon SQS queue." - }, - "QueueUrl": { - "description": "The URL of the SQS queue where the data is written.", - "type": "string" - }, - "UseBase64": { - "description": "Set this to TRUE if you want the data to be base-64 encoded before it is written to the queue. Otherwise, set this to FALSE.", - "type": "boolean" - } - }, - "required": [ - "QueueUrl" - ], - "type": "object" - }, - "State": { - "additionalProperties": false, - "description": "Information that defines a state of a detector.", - "properties": { - "OnEnter": { - "$ref": "#/definitions/OnEnter", - "description": "When entering this state, perform these ``actions`` if the ``condition`` is TRUE." - }, - "OnExit": { - "$ref": "#/definitions/OnExit", - "description": "When exiting this state, perform these ``actions`` if the specified ``condition`` is ``TRUE``." - }, - "OnInput": { - "$ref": "#/definitions/OnInput", - "description": "When an input is received and the ``condition`` is TRUE, perform the specified ``actions``." - }, - "StateName": { - "description": "The name of the state.", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "StateName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Metadata that can be used to manage the resource.", - "properties": { - "Key": { - "description": "The tag's key.", - "type": "string" - }, - "Value": { - "description": "The tag's value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TransitionEvent": { - "additionalProperties": false, - "description": "Specifies the actions performed and the next state entered when a ``condition`` evaluates to TRUE.", - "properties": { - "Actions": { - "description": "The actions to be performed.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Action" - }, - "type": "array", - "uniqueItems": false - }, - "Condition": { - "description": "Required. A Boolean expression that when TRUE causes the actions to be performed and the ``nextState`` to be entered.", - "maxLength": 512, - "type": "string" - }, - "EventName": { - "description": "The name of the transition event.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "NextState": { - "description": "The next state to enter.", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Condition", - "EventName", - "NextState" - ], - "type": "object" - } - }, - "description": "The AWS::IoTEvents::DetectorModel resource creates a detector model. You create a *detector model* (a model of your equipment or process) using *states*. For each state, you define conditional (Boolean) logic that evaluates the incoming inputs to detect significant events. When an event is detected, it can change the state or trigger custom-built or predefined actions using other AWS services. You can define additional events that trigger actions when entering or exiting a state and, optionally, when a condition is met. For more information, see [How to Use](https://docs.aws.amazon.com/iotevents/latest/developerguide/how-to-use-iotevents.html) in the *Developer Guide*.\n When you successfully update a detector model (using the ITE console, ITE API or CLI commands, or CFN) all detector instances created by the model are reset to their initial states. (The detector's ``state``, and the values of any variables and timers are reset.)\n When you successfully update a detector model (using the ITE console, ITE API or CLI commands, or CFN) the version number of the detector model is incremented. (A detector model with version number 1 before the update has version number 2 after the update succeeds.)\n If you attempt to update a detector model using CFN and the update does not succeed, the system may, in some cases, restore the original detector model. When this occurs, the detector model's version is incremented twice (for example, from version 1 to version 3) and the detector instances are reset.\n Also, be aware that if you attempt to update several detector models at once using CFN, some updates may succeed and others fail. In this case, the effects on each detector model's detector instances and version number depend on whether the update succeeded or failed, with the results as stated.", - "handlers": { - "create": { - "permissions": [ - "iotevents:CreateDetectorModel", - "iotevents:UpdateInputRouting", - "iotevents:DescribeDetectorModel", - "iotevents:ListTagsForResource", - "iotevents:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "iotevents:DeleteDetectorModel", - "iotevents:DescribeDetectorModel" - ] - }, - "list": { - "permissions": [ - "iotevents:ListDetectorModels" - ] - }, - "read": { - "permissions": [ - "iotevents:DescribeDetectorModel", - "iotevents:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotevents:UpdateDetectorModel", - "iotevents:UpdateInputRouting", - "iotevents:DescribeDetectorModel", - "iotevents:ListTagsForResource", - "iotevents:UntagResource", - "iotevents:TagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/DetectorModelName" - ], - "properties": { - "DetectorModelDefinition": { - "$ref": "#/definitions/DetectorModelDefinition", - "description": "Information that defines how a detector operates." - }, - "DetectorModelDescription": { - "description": "A brief description of the detector model.", - "maxLength": 1024, - "type": "string" - }, - "DetectorModelName": { - "description": "The name of the detector model.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "EvaluationMethod": { - "description": "Information about the order in which events are evaluated and how actions are executed.", - "enum": [ - "BATCH", - "SERIAL" - ], - "type": "string" - }, - "Key": { - "description": "The value used to identify a detector instance. When a device or system sends input, a new detector instance with a unique key value is created. ITE can continue to route input to its corresponding detector instance based on this identifying information. \n This parameter uses a JSON-path expression to select the attribute-value pair in the message payload that is used for identification. To route the message to the correct detector instance, the device must send a message payload that contains the same attribute-value.", - "maxLength": 128, - "minLength": 1, - "pattern": "^((`[\\w\\- ]+`)|([\\w\\-]+))(\\.((`[\\w\\- ]+`)|([\\w\\-]+)))*$", - "type": "string" - }, - "RoleArn": { - "description": "The ARN of the role that grants permission to ITE to perform its operations.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.\n For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "DetectorModelDefinition", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "iotevents:UntagResource", - "iotevents:TagResource", - "iotevents:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTEvents::DetectorModel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DetectorModelName", + "/properties/Key" + ], + "definitions": { + "Action": { + "additionalProperties": false, + "description": "An action to be performed when the ``condition`` is TRUE.", + "properties": { + "ClearTimer": { + "$ref": "#/definitions/ClearTimer", + "description": "Information needed to clear the timer." + }, + "DynamoDB": { + "$ref": "#/definitions/DynamoDB", + "description": "Writes to the DynamoDB table that you created. The default action payload contains all attribute-value pairs that have the information about the detector model instance and the event that triggered the action. You can customize the [payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html). One column of the DynamoDB table receives all attribute-value pairs in the payload that you specify. For more information, see [Actions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-event-actions.html) in *Developer Guide*." + }, + "DynamoDBv2": { + "$ref": "#/definitions/DynamoDBv2", + "description": "Writes to the DynamoDB table that you created. The default action payload contains all attribute-value pairs that have the information about the detector model instance and the event that triggered the action. You can customize the [payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html). A separate column of the DynamoDB table receives one attribute-value pair in the payload that you specify. For more information, see [Actions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-event-actions.html) in *Developer Guide*." + }, + "Firehose": { + "$ref": "#/definitions/Firehose", + "description": "Sends information about the detector model instance and the event that triggered the action to an Amazon Kinesis Data Firehose delivery stream." + }, + "IotEvents": { + "$ref": "#/definitions/IotEvents", + "description": "Sends ITE input, which passes information about the detector model instance and the event that triggered the action." + }, + "IotSiteWise": { + "$ref": "#/definitions/IotSiteWise", + "description": "Sends information about the detector model instance and the event that triggered the action to an asset property in ITSW ." + }, + "IotTopicPublish": { + "$ref": "#/definitions/IotTopicPublish", + "description": "Publishes an MQTT message with the given topic to the IoT message broker." + }, + "Lambda": { + "$ref": "#/definitions/Lambda", + "description": "Calls a Lambda function, passing in information about the detector model instance and the event that triggered the action." + }, + "ResetTimer": { + "$ref": "#/definitions/ResetTimer", + "description": "Information needed to reset the timer." + }, + "SetTimer": { + "$ref": "#/definitions/SetTimer", + "description": "Information needed to set the timer." + }, + "SetVariable": { + "$ref": "#/definitions/SetVariable", + "description": "Sets a variable to a specified value." + }, + "Sns": { + "$ref": "#/definitions/Sns", + "description": "Sends an Amazon SNS message." + }, + "Sqs": { + "$ref": "#/definitions/Sqs", + "description": "Sends an Amazon SNS message." + } + }, + "type": "object" + }, + "AssetPropertyTimestamp": { + "additionalProperties": false, + "description": "A structure that contains timestamp information. For more information, see [TimeInNanos](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_TimeInNanos.html) in the *API Reference*.\n You must use expressions for all parameters in ``AssetPropertyTimestamp``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``timeInSeconds`` parameter can be ``'1586400675'``.\n + For references, you must specify either variables or input values. For example, the value for the ``offsetInNanos`` parameter can be ``$variable.time``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``timeInSeconds`` parameter uses a substitution template.\n ``'${$input.TemperatureInput.sensorData.timestamp / 1000}'`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.", + "properties": { + "OffsetInNanos": { + "description": "The nanosecond offset converted from ``timeInSeconds``. The valid range is between 0-999999999.", + "type": "string" + }, + "TimeInSeconds": { + "description": "The timestamp, in seconds, in the Unix epoch format. The valid range is between 1-31556889864403199.", + "type": "string" + } + }, + "required": [ + "TimeInSeconds" + ], + "type": "object" + }, + "AssetPropertyValue": { + "additionalProperties": false, + "description": "A structure that contains value information. For more information, see [AssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetPropertyValue.html) in the *API Reference*.\n You must use expressions for all parameters in ``AssetPropertyValue``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``quality`` parameter can be ``'GOOD'``.\n + For references, you must specify either variables or input values. For example, the value for the ``quality`` parameter can be ``$input.TemperatureInput.sensorData.quality``.\n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.", + "properties": { + "Quality": { + "description": "The quality of the asset property value. The value must be ``'GOOD'``, ``'BAD'``, or ``'UNCERTAIN'``.", + "type": "string" + }, + "Timestamp": { + "$ref": "#/definitions/AssetPropertyTimestamp", + "description": "The timestamp associated with the asset property value. The default is the current event time." + }, + "Value": { + "$ref": "#/definitions/AssetPropertyVariant", + "description": "The value to send to an asset property." + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "AssetPropertyVariant": { + "additionalProperties": false, + "description": "A structure that contains an asset property value. For more information, see [Variant](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Variant.html) in the *API Reference*.\n You must use expressions for all parameters in ``AssetPropertyVariant``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``integerValue`` parameter can be ``'100'``.\n + For references, you must specify either variables or parameters. For example, the value for the ``booleanValue`` parameter can be ``$variable.offline``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates. \n In the following example, the value for the ``doubleValue`` parameter uses a substitution template. \n ``'${$input.TemperatureInput.sensorData.temperature * 6 / 5 + 32}'`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.\n You must specify one of the following value types, depending on the ``dataType`` of the specified asset property. For more information, see [AssetProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetProperty.html) in the *API Reference*.", + "properties": { + "BooleanValue": { + "description": "The asset property value is a Boolean value that must be ``'TRUE'`` or ``'FALSE'``. You must use an expression, and the evaluated result should be a Boolean value.", + "type": "string" + }, + "DoubleValue": { + "description": "The asset property value is a double. You must use an expression, and the evaluated result should be a double.", + "type": "string" + }, + "IntegerValue": { + "description": "The asset property value is an integer. You must use an expression, and the evaluated result should be an integer.", + "type": "string" + }, + "StringValue": { + "description": "The asset property value is a string. You must use an expression, and the evaluated result should be a string.", + "type": "string" + } + }, + "type": "object" + }, + "ClearTimer": { + "additionalProperties": false, + "description": "Information needed to clear the timer.", + "properties": { + "TimerName": { + "description": "The name of the timer to clear.", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "TimerName" + ], + "type": "object" + }, + "DetectorModelDefinition": { + "additionalProperties": false, + "description": "Information that defines how a detector operates.", + "properties": { + "InitialStateName": { + "description": "The state that is entered at the creation of each detector (instance).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "States": { + "description": "Information about the states of the detector.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/State" + }, + "minItems": 1, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "States", + "InitialStateName" + ], + "type": "object" + }, + "DynamoDB": { + "additionalProperties": false, + "description": "Defines an action to write to the Amazon DynamoDB table that you created. The standard action payload contains all the information about the detector model instance and the event that triggered the action. You can customize the [payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html). One column of the DynamoDB table receives all attribute-value pairs in the payload that you specify.\n You must use expressions for all parameters in ``DynamoDBAction``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``hashKeyType`` parameter can be ``'STRING'``.\n + For references, you must specify either variables or input values. For example, the value for the ``hashKeyField`` parameter can be ``$input.GreenhouseInput.name``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``hashKeyValue`` parameter uses a substitution template. \n ``'${$input.GreenhouseInput.temperature * 6 / 5 + 32} in Fahrenheit'`` \n + For a string concatenation, you must use ``+``. A string concatenation can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``tableName`` parameter uses a string concatenation. \n ``'GreenhouseTemperatureTable ' + $input.GreenhouseInput.date`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.\n If the defined payload type is a string, ``DynamoDBAction`` writes non-JSON data to the DynamoDB table as binary data. The DynamoDB console displays the data as Base64-encoded text. The value for the ``payloadField`` parameter is ``_raw``.", + "properties": { + "HashKeyField": { + "description": "The name of the hash key (also called the partition key). The ``hashKeyField`` value must match the partition key of the target DynamoDB table.", + "type": "string" + }, + "HashKeyType": { + "description": "The data type for the hash key (also called the partition key). You can specify the following values:\n + ``'STRING'`` - The hash key is a string.\n + ``'NUMBER'`` - The hash key is a number.\n \n If you don't specify ``hashKeyType``, the default value is ``'STRING'``.", + "type": "string" + }, + "HashKeyValue": { + "description": "The value of the hash key (also called the partition key).", + "type": "string" + }, + "Operation": { + "description": "The type of operation to perform. You can specify the following values: \n + ``'INSERT'`` - Insert data as a new item into the DynamoDB table. This item uses the specified hash key as a partition key. If you specified a range key, the item uses the range key as a sort key.\n + ``'UPDATE'`` - Update an existing item of the DynamoDB table with new data. This item's partition key must match the specified hash key. If you specified a range key, the range key must match the item's sort key.\n + ``'DELETE'`` - Delete an existing item of the DynamoDB table. This item's partition key must match the specified hash key. If you specified a range key, the range key must match the item's sort key.\n \n If you don't specify this parameter, ITE triggers the ``'INSERT'`` operation.", + "type": "string" + }, + "Payload": { + "$ref": "#/definitions/Payload", + "description": "Information needed to configure the payload.\n By default, ITE generates a standard payload in JSON for any action. This action payload contains all attribute-value pairs that have the information about the detector model instance and the event triggered the action. To configure the action payload, you can use ``contentExpression``." + }, + "PayloadField": { + "description": "The name of the DynamoDB column that receives the action payload.\n If you don't specify this parameter, the name of the DynamoDB column is ``payload``.", + "type": "string" + }, + "RangeKeyField": { + "description": "The name of the range key (also called the sort key). The ``rangeKeyField`` value must match the sort key of the target DynamoDB table.", + "type": "string" + }, + "RangeKeyType": { + "description": "The data type for the range key (also called the sort key), You can specify the following values:\n + ``'STRING'`` - The range key is a string.\n + ``'NUMBER'`` - The range key is number.\n \n If you don't specify ``rangeKeyField``, the default value is ``'STRING'``.", + "type": "string" + }, + "RangeKeyValue": { + "description": "The value of the range key (also called the sort key).", + "type": "string" + }, + "TableName": { + "description": "The name of the DynamoDB table. The ``tableName`` value must match the table name of the target DynamoDB table.", + "type": "string" + } + }, + "required": [ + "HashKeyField", + "HashKeyValue", + "TableName" + ], + "type": "object" + }, + "DynamoDBv2": { + "additionalProperties": false, + "description": "Defines an action to write to the Amazon DynamoDB table that you created. The default action payload contains all the information about the detector model instance and the event that triggered the action. You can customize the [payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html). A separate column of the DynamoDB table receives one attribute-value pair in the payload that you specify.\n You must use expressions for all parameters in ``DynamoDBv2Action``. The expressions accept literals, operators, functions, references, and substitution templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``tableName`` parameter can be ``'GreenhouseTemperatureTable'``.\n + For references, you must specify either variables or input values. For example, the value for the ``tableName`` parameter can be ``$variable.ddbtableName``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``contentExpression`` parameter in ``Payload`` uses a substitution template. \n ``'{\\\"sensorID\\\": \\\"${$input.GreenhouseInput.sensor_id}\\\", \\\"temperature\\\": \\\"${$input.GreenhouseInput.temperature * 9 / 5 + 32}\\\"}'`` \n + For a string concatenation, you must use ``+``. A string concatenation can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``tableName`` parameter uses a string concatenation. \n ``'GreenhouseTemperatureTable ' + $input.GreenhouseInput.date`` \n \n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.\n The value for the ``type`` parameter in ``Payload`` must be ``JSON``.", + "properties": { + "Payload": { + "$ref": "#/definitions/Payload", + "description": "Information needed to configure the payload.\n By default, ITE generates a standard payload in JSON for any action. This action payload contains all attribute-value pairs that have the information about the detector model instance and the event triggered the action. To configure the action payload, you can use ``contentExpression``." + }, + "TableName": { + "description": "The name of the DynamoDB table.", + "type": "string" + } + }, + "required": [ + "TableName" + ], + "type": "object" + }, + "Event": { + "additionalProperties": false, + "description": "Specifies the ``actions`` to be performed when the ``condition`` evaluates to TRUE.", + "properties": { + "Actions": { + "description": "The actions to be performed.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Action" + }, + "type": "array", + "uniqueItems": false + }, + "Condition": { + "description": "Optional. The Boolean expression that, when TRUE, causes the ``actions`` to be performed. If not present, the actions are performed (=TRUE). If the expression result is not a Boolean value, the actions are not performed (=FALSE).", + "maxLength": 512, + "type": "string" + }, + "EventName": { + "description": "The name of the event.", + "maxLength": 128, + "type": "string" + } + }, + "required": [ + "EventName" + ], + "type": "object" + }, + "Firehose": { + "additionalProperties": false, + "description": "Sends information about the detector model instance and the event that triggered the action to an Amazon Kinesis Data Firehose delivery stream.", + "properties": { + "DeliveryStreamName": { + "description": "The name of the Kinesis Data Firehose delivery stream where the data is written.", + "type": "string" + }, + "Payload": { + "$ref": "#/definitions/Payload", + "description": "You can configure the action payload when you send a message to an Amazon Data Firehose delivery stream." + }, + "Separator": { + "description": "A character separator that is used to separate records written to the Kinesis Data Firehose delivery stream. Valid values are: '\\n' (newline), '\\t' (tab), '\\r\\n' (Windows newline), ',' (comma).", + "pattern": "([\\n\\t])|(\\r\\n)|(,)", + "type": "string" + } + }, + "required": [ + "DeliveryStreamName" + ], + "type": "object" + }, + "IotEvents": { + "additionalProperties": false, + "description": "Sends an ITE input, passing in information about the detector model instance and the event that triggered the action.", + "properties": { + "InputName": { + "description": "The name of the ITE input where the data is sent.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + "Payload": { + "$ref": "#/definitions/Payload", + "description": "You can configure the action payload when you send a message to an ITE input." + } + }, + "required": [ + "InputName" + ], + "type": "object" + }, + "IotSiteWise": { + "additionalProperties": false, + "description": "Sends information about the detector model instance and the event that triggered the action to a specified asset property in ITSW.\n You must use expressions for all parameters in ``IotSiteWiseAction``. The expressions accept literals, operators, functions, references, and substitutions templates.\n **Examples**\n + For literal values, the expressions must contain single quotes. For example, the value for the ``propertyAlias`` parameter can be ``'/company/windfarm/3/turbine/7/temperature'``.\n + For references, you must specify either variables or input values. For example, the value for the ``assetId`` parameter can be ``$input.TurbineInput.assetId1``.\n + For a substitution template, you must use ``${}``, and the template must be in single quotes. A substitution template can also contain a combination of literals, operators, functions, references, and substitution templates.\n In the following example, the value for the ``propertyAlias`` parameter uses a substitution template. \n ``'company/windfarm/${$input.TemperatureInput.sensorData.windfarmID}/turbine/ ${$input.TemperatureInput.sensorData.turbineID}/temperature'`` \n \n You must specify either ``propertyAlias`` or both ``assetId`` and ``propertyId`` to identify the target asset property in ITSW.\n For more information, see [Expressions](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) in the *Developer Guide*.", + "properties": { + "AssetId": { + "description": "The ID of the asset that has the specified property.", + "type": "string" + }, + "EntryId": { + "description": "A unique identifier for this entry. You can use the entry ID to track which data entry causes an error in case of failure. The default is a new unique identifier.", + "type": "string" + }, + "PropertyAlias": { + "description": "The alias of the asset property.", + "type": "string" + }, + "PropertyId": { + "description": "The ID of the asset property.", + "type": "string" + }, + "PropertyValue": { + "$ref": "#/definitions/AssetPropertyValue", + "description": "The value to send to the asset property. This value contains timestamp, quality, and value (TQV) information." + } + }, + "required": [ + "PropertyValue" + ], + "type": "object" + }, + "IotTopicPublish": { + "additionalProperties": false, + "description": "Information required to publish the MQTT message through the IoT message broker.", + "properties": { + "MqttTopic": { + "description": "The MQTT topic of the message. You can use a string expression that includes variables (``$variable.``) and input values (``$input..``) as the topic string.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Payload": { + "$ref": "#/definitions/Payload", + "description": "You can configure the action payload when you publish a message to an IoTCore topic." + } + }, + "required": [ + "MqttTopic" + ], + "type": "object" + }, + "Lambda": { + "additionalProperties": false, + "description": "Calls a Lambda function, passing in information about the detector model instance and the event that triggered the action.", + "properties": { + "FunctionArn": { + "description": "The ARN of the Lambda function that is executed.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Payload": { + "$ref": "#/definitions/Payload", + "description": "You can configure the action payload when you send a message to a Lambda function." + } + }, + "required": [ + "FunctionArn" + ], + "type": "object" + }, + "OnEnter": { + "additionalProperties": false, + "description": "When entering this state, perform these ``actions`` if the ``condition`` is TRUE.", + "properties": { + "Events": { + "description": "Specifies the actions that are performed when the state is entered and the ``condition`` is ``TRUE``.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Event" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "OnExit": { + "additionalProperties": false, + "description": "When exiting this state, perform these ``actions`` if the specified ``condition`` is ``TRUE``.", + "properties": { + "Events": { + "description": "Specifies the ``actions`` that are performed when the state is exited and the ``condition`` is ``TRUE``.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Event" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "OnInput": { + "additionalProperties": false, + "description": "Specifies the actions performed when the ``condition`` evaluates to TRUE.", + "properties": { + "Events": { + "description": "Specifies the actions performed when the ``condition`` evaluates to TRUE.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Event" + }, + "type": "array", + "uniqueItems": false + }, + "TransitionEvents": { + "description": "Specifies the actions performed, and the next state entered, when a ``condition`` evaluates to TRUE.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TransitionEvent" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "Payload": { + "additionalProperties": false, + "description": "Information needed to configure the payload.\n By default, ITE generates a standard payload in JSON for any action. This action payload contains all attribute-value pairs that have the information about the detector model instance and the event triggered the action. To configure the action payload, you can use ``contentExpression``.", + "properties": { + "ContentExpression": { + "description": "The content of the payload. You can use a string expression that includes quoted strings (``''``), variables (``$variable.``), input values (``$input..``), string concatenations, and quoted strings that contain ``${}`` as the content. The recommended maximum size of a content expression is 1 KB.", + "minLength": 1, + "type": "string" + }, + "Type": { + "description": "The value of the payload type can be either ``STRING`` or ``JSON``.", + "type": "string" + } + }, + "required": [ + "ContentExpression", + "Type" + ], + "type": "object" + }, + "ResetTimer": { + "additionalProperties": false, + "description": "Information required to reset the timer. The timer is reset to the previously evaluated result of the duration. The duration expression isn't reevaluated when you reset the timer.", + "properties": { + "TimerName": { + "description": "The name of the timer to reset.", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "TimerName" + ], + "type": "object" + }, + "SetTimer": { + "additionalProperties": false, + "description": "Information needed to set the timer.", + "properties": { + "DurationExpression": { + "description": "The duration of the timer, in seconds. You can use a string expression that includes numbers, variables (``$variable.``), and input values (``$input..``) as the duration. The range of the duration is 1-31622400 seconds. To ensure accuracy, the minimum duration is 60 seconds. The evaluated result of the duration is rounded down to the nearest whole number.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Seconds": { + "description": "The number of seconds until the timer expires. The minimum value is 60 seconds to ensure accuracy. The maximum value is 31622400 seconds.", + "maximum": 31622400, + "minimum": 60, + "type": "integer" + }, + "TimerName": { + "description": "The name of the timer.", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "TimerName" + ], + "type": "object" + }, + "SetVariable": { + "additionalProperties": false, + "description": "Information about the variable and its new value.", + "properties": { + "Value": { + "description": "The new value of the variable.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VariableName": { + "description": "The name of the variable.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + } + }, + "required": [ + "Value", + "VariableName" + ], + "type": "object" + }, + "Sns": { + "additionalProperties": false, + "description": "Information required to publish the Amazon SNS message.", + "properties": { + "Payload": { + "$ref": "#/definitions/Payload", + "description": "You can configure the action payload when you send a message as an Amazon SNS push notification." + }, + "TargetArn": { + "description": "The ARN of the Amazon SNS target where the message is sent.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "TargetArn" + ], + "type": "object" + }, + "Sqs": { + "additionalProperties": false, + "description": "Sends information about the detector model instance and the event that triggered the action to an Amazon SQS queue.", + "properties": { + "Payload": { + "$ref": "#/definitions/Payload", + "description": "You can configure the action payload when you send a message to an Amazon SQS queue." + }, + "QueueUrl": { + "description": "The URL of the SQS queue where the data is written.", + "type": "string" + }, + "UseBase64": { + "description": "Set this to TRUE if you want the data to be base-64 encoded before it is written to the queue. Otherwise, set this to FALSE.", + "type": "boolean" + } + }, + "required": [ + "QueueUrl" + ], + "type": "object" + }, + "State": { + "additionalProperties": false, + "description": "Information that defines a state of a detector.", + "properties": { + "OnEnter": { + "$ref": "#/definitions/OnEnter", + "description": "When entering this state, perform these ``actions`` if the ``condition`` is TRUE." + }, + "OnExit": { + "$ref": "#/definitions/OnExit", + "description": "When exiting this state, perform these ``actions`` if the specified ``condition`` is ``TRUE``." + }, + "OnInput": { + "$ref": "#/definitions/OnInput", + "description": "When an input is received and the ``condition`` is TRUE, perform the specified ``actions``." + }, + "StateName": { + "description": "The name of the state.", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "StateName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Metadata that can be used to manage the resource.", + "properties": { + "Key": { + "description": "The tag's key.", + "type": "string" + }, + "Value": { + "description": "The tag's value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TransitionEvent": { + "additionalProperties": false, + "description": "Specifies the actions performed and the next state entered when a ``condition`` evaluates to TRUE.", + "properties": { + "Actions": { + "description": "The actions to be performed.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Action" + }, + "type": "array", + "uniqueItems": false + }, + "Condition": { + "description": "Required. A Boolean expression that when TRUE causes the actions to be performed and the ``nextState`` to be entered.", + "maxLength": 512, + "type": "string" + }, + "EventName": { + "description": "The name of the transition event.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "NextState": { + "description": "The next state to enter.", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Condition", + "EventName", + "NextState" + ], + "type": "object" + } + }, + "description": "The AWS::IoTEvents::DetectorModel resource creates a detector model. You create a *detector model* (a model of your equipment or process) using *states*. For each state, you define conditional (Boolean) logic that evaluates the incoming inputs to detect significant events. When an event is detected, it can change the state or trigger custom-built or predefined actions using other AWS services. You can define additional events that trigger actions when entering or exiting a state and, optionally, when a condition is met. For more information, see [How to Use](https://docs.aws.amazon.com/iotevents/latest/developerguide/how-to-use-iotevents.html) in the *Developer Guide*.\n When you successfully update a detector model (using the ITE console, ITE API or CLI commands, or CFN) all detector instances created by the model are reset to their initial states. (The detector's ``state``, and the values of any variables and timers are reset.)\n When you successfully update a detector model (using the ITE console, ITE API or CLI commands, or CFN) the version number of the detector model is incremented. (A detector model with version number 1 before the update has version number 2 after the update succeeds.)\n If you attempt to update a detector model using CFN and the update does not succeed, the system may, in some cases, restore the original detector model. When this occurs, the detector model's version is incremented twice (for example, from version 1 to version 3) and the detector instances are reset.\n Also, be aware that if you attempt to update several detector models at once using CFN, some updates may succeed and others fail. In this case, the effects on each detector model's detector instances and version number depend on whether the update succeeded or failed, with the results as stated.", + "handlers": { + "create": { + "permissions": [ + "iotevents:CreateDetectorModel", + "iotevents:UpdateInputRouting", + "iotevents:DescribeDetectorModel", + "iotevents:ListTagsForResource", + "iotevents:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "iotevents:DeleteDetectorModel", + "iotevents:DescribeDetectorModel" + ] + }, + "list": { + "permissions": [ + "iotevents:ListDetectorModels" + ] + }, + "read": { + "permissions": [ + "iotevents:DescribeDetectorModel", + "iotevents:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotevents:UpdateDetectorModel", + "iotevents:UpdateInputRouting", + "iotevents:DescribeDetectorModel", + "iotevents:ListTagsForResource", + "iotevents:UntagResource", + "iotevents:TagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DetectorModelName" + ], + "properties": { + "DetectorModelDefinition": { + "$ref": "#/definitions/DetectorModelDefinition", + "description": "Information that defines how a detector operates." + }, + "DetectorModelDescription": { + "description": "A brief description of the detector model.", + "maxLength": 1024, + "type": "string" + }, + "DetectorModelName": { + "description": "The name of the detector model.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "EvaluationMethod": { + "description": "Information about the order in which events are evaluated and how actions are executed.", + "enum": [ + "BATCH", + "SERIAL" + ], + "type": "string" + }, + "Key": { + "description": "The value used to identify a detector instance. When a device or system sends input, a new detector instance with a unique key value is created. ITE can continue to route input to its corresponding detector instance based on this identifying information. \n This parameter uses a JSON-path expression to select the attribute-value pair in the message payload that is used for identification. To route the message to the correct detector instance, the device must send a message payload that contains the same attribute-value.", + "maxLength": 128, + "minLength": 1, + "pattern": "^((`[\\w\\- ]+`)|([\\w\\-]+))(\\.((`[\\w\\- ]+`)|([\\w\\-]+)))*$", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the role that grants permission to ITE to perform its operations.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.\n For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "DetectorModelDefinition", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "iotevents:UntagResource", + "iotevents:TagResource", + "iotevents:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTEvents::DetectorModel" +} diff --git a/src/schema/aws-iotevents-input.json b/src/schema/aws-iotevents-input.json index d26a08e3..d2babf68 100644 --- a/src/schema/aws-iotevents-input.json +++ b/src/schema/aws-iotevents-input.json @@ -1,150 +1,150 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InputName" - ], - "definitions": { - "Attribute": { - "additionalProperties": false, - "description": "The attributes from the JSON payload that are made available by the input. Inputs are derived from messages sent to the ITE system using ``BatchPutMessage``. Each such message contains a JSON payload. Those attributes (and their paired values) specified here are available for use in the ``condition`` expressions used by detectors.", - "properties": { - "JsonPath": { - "description": "An expression that specifies an attribute-value pair in a JSON structure. Use this to specify an attribute from the JSON payload that is made available by the input. Inputs are derived from messages sent to ITE (``BatchPutMessage``). Each such message contains a JSON payload. The attribute (and its paired value) specified here are available for use in the ``condition`` expressions used by detectors. \n Syntax: ``....``", - "maxLength": 128, - "minLength": 1, - "pattern": "^((`[a-zA-Z0-9_\\- ]+`)|([a-zA-Z0-9_\\-]+))(\\.((`[a-zA-Z0-9_\\- ]+`)|([a-zA-Z0-9_\\-]+)))*$", - "type": "string" - } - }, - "required": [ - "JsonPath" - ], - "type": "object" - }, - "InputDefinition": { - "additionalProperties": false, - "description": "The definition of the input.", - "properties": { - "Attributes": { - "description": "The attributes from the JSON payload that are made available by the input. Inputs are derived from messages sent to the ITE system using ``BatchPutMessage``. Each such message contains a JSON payload, and those attributes (and their paired values) specified here are available for use in the ``condition`` expressions used by detectors that monitor this input.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Attribute" - }, - "maxItems": 200, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Attributes" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Metadata that can be used to manage the resource.", - "properties": { - "Key": { - "description": "The tag's key.", - "type": "string" - }, - "Value": { - "description": "The tag's value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The AWS::IoTEvents::Input resource creates an input. To monitor your devices and processes, they must have a way to get telemetry data into ITE. This is done by sending messages as *inputs* to ITE. For more information, see [How to Use](https://docs.aws.amazon.com/iotevents/latest/developerguide/how-to-use-iotevents.html) in the *Developer Guide*.", - "handlers": { - "create": { - "permissions": [ - "iotevents:CreateInput", - "iotevents:TagResource", - "iotevents:DescribeInput", - "iotevents:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "iotevents:DeleteInput", - "iotevents:DescribeInput" - ] - }, - "list": { - "permissions": [ - "iotevents:ListInputs" - ] - }, - "read": { - "permissions": [ - "iotevents:DescribeInput", - "iotevents:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotevents:UpdateInput", - "iotevents:DescribeInput", - "iotevents:ListTagsForResource", - "iotevents:UntagResource", - "iotevents:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/InputName" - ], - "properties": { - "InputDefinition": { - "$ref": "#/definitions/InputDefinition", - "description": "The definition of the input." - }, - "InputDescription": { - "description": "A brief description of the input.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "InputName": { - "description": "The name of the input.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.\n For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "InputDefinition" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iotevents.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "iotevents:UntagResource", - "iotevents:TagResource", - "iotevents:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTEvents::Input" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InputName" + ], + "definitions": { + "Attribute": { + "additionalProperties": false, + "description": "The attributes from the JSON payload that are made available by the input. Inputs are derived from messages sent to the ITE system using ``BatchPutMessage``. Each such message contains a JSON payload. Those attributes (and their paired values) specified here are available for use in the ``condition`` expressions used by detectors.", + "properties": { + "JsonPath": { + "description": "An expression that specifies an attribute-value pair in a JSON structure. Use this to specify an attribute from the JSON payload that is made available by the input. Inputs are derived from messages sent to ITE (``BatchPutMessage``). Each such message contains a JSON payload. The attribute (and its paired value) specified here are available for use in the ``condition`` expressions used by detectors. \n Syntax: ``....``", + "maxLength": 128, + "minLength": 1, + "pattern": "^((`[a-zA-Z0-9_\\- ]+`)|([a-zA-Z0-9_\\-]+))(\\.((`[a-zA-Z0-9_\\- ]+`)|([a-zA-Z0-9_\\-]+)))*$", + "type": "string" + } + }, + "required": [ + "JsonPath" + ], + "type": "object" + }, + "InputDefinition": { + "additionalProperties": false, + "description": "The definition of the input.", + "properties": { + "Attributes": { + "description": "The attributes from the JSON payload that are made available by the input. Inputs are derived from messages sent to the ITE system using ``BatchPutMessage``. Each such message contains a JSON payload, and those attributes (and their paired values) specified here are available for use in the ``condition`` expressions used by detectors that monitor this input.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Attribute" + }, + "maxItems": 200, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Attributes" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Metadata that can be used to manage the resource.", + "properties": { + "Key": { + "description": "The tag's key.", + "type": "string" + }, + "Value": { + "description": "The tag's value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The AWS::IoTEvents::Input resource creates an input. To monitor your devices and processes, they must have a way to get telemetry data into ITE. This is done by sending messages as *inputs* to ITE. For more information, see [How to Use](https://docs.aws.amazon.com/iotevents/latest/developerguide/how-to-use-iotevents.html) in the *Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "iotevents:CreateInput", + "iotevents:TagResource", + "iotevents:DescribeInput", + "iotevents:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "iotevents:DeleteInput", + "iotevents:DescribeInput" + ] + }, + "list": { + "permissions": [ + "iotevents:ListInputs" + ] + }, + "read": { + "permissions": [ + "iotevents:DescribeInput", + "iotevents:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotevents:UpdateInput", + "iotevents:DescribeInput", + "iotevents:ListTagsForResource", + "iotevents:UntagResource", + "iotevents:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/InputName" + ], + "properties": { + "InputDefinition": { + "$ref": "#/definitions/InputDefinition", + "description": "The definition of the input." + }, + "InputDescription": { + "description": "A brief description of the input.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "InputName": { + "description": "The name of the input.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.\n For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "InputDefinition" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iotevents.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "iotevents:UntagResource", + "iotevents:TagResource", + "iotevents:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTEvents::Input" +} diff --git a/src/schema/aws-iotfleethub-application.json b/src/schema/aws-iotfleethub-application.json index 786d6ce4..5ab0af15 100644 --- a/src/schema/aws-iotfleethub-application.json +++ b/src/schema/aws-iotfleethub-application.json @@ -1,156 +1,156 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "To add or update tag, provide both key and value. To delete tag, provide only tag key to be deleted.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::IoTFleetHub::Application", - "handlers": { - "create": { - "permissions": [ - "iotfleethub:CreateApplication", - "iotfleethub:TagResource", - "iam:PassRole", - "sso:CreateManagedApplicationInstance", - "sso:DescribeRegisteredRegions" - ] - }, - "delete": { - "permissions": [ - "iotfleethub:DeleteApplication", - "iotfleethub:DescribeApplication", - "sso:DeleteManagedApplicationInstance" - ] - }, - "list": { - "permissions": [ - "iotfleethub:ListApplications" - ] - }, - "read": { - "permissions": [ - "iotfleethub:DescribeApplication" - ] - }, - "update": { - "permissions": [ - "iotfleethub:UpdateApplication", - "iotfleethub:DescribeApplication", - "iotfleethub:TagResource", - "iotfleethub:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationId" - ], - "properties": { - "ApplicationArn": { - "description": "The ARN of the application.", - "maxLength": 1600, - "minLength": 1, - "pattern": "^arn:[!-~]+$", - "type": "string" - }, - "ApplicationCreationDate": { - "description": "When the Application was created", - "type": "integer" - }, - "ApplicationDescription": { - "description": "Application Description, should be between 1 and 2048 characters.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^[ -~]*$", - "type": "string" - }, - "ApplicationId": { - "description": "The ID of the application.", - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - }, - "ApplicationLastUpdateDate": { - "description": "When the Application was last updated", - "type": "integer" - }, - "ApplicationName": { - "description": "Application Name, should be between 1 and 256 characters.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[ -~]*$", - "type": "string" - }, - "ApplicationState": { - "description": "The current state of the application.", - "type": "string" - }, - "ApplicationUrl": { - "description": "The URL of the application.", - "type": "string" - }, - "ErrorMessage": { - "description": "A message indicating why Create or Delete Application failed.", - "type": "string" - }, - "RoleArn": { - "description": "The ARN of the role that the web application assumes when it interacts with AWS IoT Core. For more info on configuring this attribute, see https://docs.aws.amazon.com/iot/latest/apireference/API_iotfleethub_CreateApplication.html#API_iotfleethub_CreateApplication_RequestSyntax", - "maxLength": 1600, - "minLength": 1, - "pattern": "^arn:[!-~]+$", - "type": "string" - }, - "SsoClientId": { - "description": "The AWS SSO application generated client ID (used with AWS SSO APIs).", - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the application.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/ApplicationArn", - "/properties/ApplicationId", - "/properties/ApplicationUrl", - "/properties/ApplicationState", - "/properties/ApplicationCreationDate", - "/properties/ApplicationLastUpdateDate", - "/properties/SsoClientId", - "/properties/ErrorMessage" - ], - "required": [ - "ApplicationName", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iotfleethub.git", - "typeName": "AWS::IoTFleetHub::Application" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "To add or update tag, provide both key and value. To delete tag, provide only tag key to be deleted.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::IoTFleetHub::Application", + "handlers": { + "create": { + "permissions": [ + "iotfleethub:CreateApplication", + "iotfleethub:TagResource", + "iam:PassRole", + "sso:CreateManagedApplicationInstance", + "sso:DescribeRegisteredRegions" + ] + }, + "delete": { + "permissions": [ + "iotfleethub:DeleteApplication", + "iotfleethub:DescribeApplication", + "sso:DeleteManagedApplicationInstance" + ] + }, + "list": { + "permissions": [ + "iotfleethub:ListApplications" + ] + }, + "read": { + "permissions": [ + "iotfleethub:DescribeApplication" + ] + }, + "update": { + "permissions": [ + "iotfleethub:UpdateApplication", + "iotfleethub:DescribeApplication", + "iotfleethub:TagResource", + "iotfleethub:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId" + ], + "properties": { + "ApplicationArn": { + "description": "The ARN of the application.", + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:[!-~]+$", + "type": "string" + }, + "ApplicationCreationDate": { + "description": "When the Application was created", + "type": "integer" + }, + "ApplicationDescription": { + "description": "Application Description, should be between 1 and 2048 characters.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[ -~]*$", + "type": "string" + }, + "ApplicationId": { + "description": "The ID of the application.", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + }, + "ApplicationLastUpdateDate": { + "description": "When the Application was last updated", + "type": "integer" + }, + "ApplicationName": { + "description": "Application Name, should be between 1 and 256 characters.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[ -~]*$", + "type": "string" + }, + "ApplicationState": { + "description": "The current state of the application.", + "type": "string" + }, + "ApplicationUrl": { + "description": "The URL of the application.", + "type": "string" + }, + "ErrorMessage": { + "description": "A message indicating why Create or Delete Application failed.", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the role that the web application assumes when it interacts with AWS IoT Core. For more info on configuring this attribute, see https://docs.aws.amazon.com/iot/latest/apireference/API_iotfleethub_CreateApplication.html#API_iotfleethub_CreateApplication_RequestSyntax", + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:[!-~]+$", + "type": "string" + }, + "SsoClientId": { + "description": "The AWS SSO application generated client ID (used with AWS SSO APIs).", + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the application.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/ApplicationArn", + "/properties/ApplicationId", + "/properties/ApplicationUrl", + "/properties/ApplicationState", + "/properties/ApplicationCreationDate", + "/properties/ApplicationLastUpdateDate", + "/properties/SsoClientId", + "/properties/ErrorMessage" + ], + "required": [ + "ApplicationName", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iotfleethub.git", + "typeName": "AWS::IoTFleetHub::Application" +} diff --git a/src/schema/aws-iotfleetwise-campaign.json b/src/schema/aws-iotfleetwise-campaign.json index d9974fb1..a584f3c4 100644 --- a/src/schema/aws-iotfleetwise-campaign.json +++ b/src/schema/aws-iotfleetwise-campaign.json @@ -1,623 +1,766 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/TargetArn", - "/properties/SignalCatalogArn", - "/properties/PostTriggerCollectionDuration", - "/properties/DiagnosticsMode", - "/properties/SpoolingMode", - "/properties/CollectionScheme", - "/properties/Priority", - "/properties/Compression", - "/properties/StartTime", - "/properties/ExpiryTime" - ], - "definitions": { - "CampaignStatus": { - "enum": [ - "CREATING", - "WAITING_FOR_APPROVAL", - "RUNNING", - "SUSPENDED" - ], - "type": "string" - }, - "CollectionScheme": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "TimeBasedCollectionScheme": { - "$ref": "#/definitions/TimeBasedCollectionScheme" - } - }, - "required": [ - "TimeBasedCollectionScheme" - ], - "title": "TimeBasedCollectionScheme", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "ConditionBasedCollectionScheme": { - "$ref": "#/definitions/ConditionBasedCollectionScheme" - } - }, - "required": [ - "ConditionBasedCollectionScheme" - ], - "title": "ConditionBasedCollectionScheme", - "type": "object" - } - ] - }, - "Compression": { - "default": "OFF", - "enum": [ - "OFF", - "SNAPPY" - ], - "type": "string" - }, - "ConditionBasedCollectionScheme": { - "additionalProperties": false, - "properties": { - "ConditionLanguageVersion": { - "minimum": 1, - "type": "integer" - }, - "Expression": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "MinimumTriggerIntervalMs": { - "maximum": 4294967295, - "minimum": 0, - "type": "number" - }, - "TriggerMode": { - "$ref": "#/definitions/TriggerMode" - } - }, - "required": [ - "Expression" - ], - "type": "object" - }, - "ConditionBasedSignalFetchConfig": { - "additionalProperties": false, - "properties": { - "ConditionExpression": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "TriggerMode": { - "$ref": "#/definitions/TriggerMode" - } - }, - "required": [ - "ConditionExpression", - "TriggerMode" - ], - "type": "object" - }, - "DataDestinationConfig": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "S3Config": { - "$ref": "#/definitions/S3Config" - } - }, - "required": [ - "S3Config" - ], - "title": "S3Config", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "TimestreamConfig": { - "$ref": "#/definitions/TimestreamConfig" - } - }, - "required": [ - "TimestreamConfig" - ], - "title": "TimestreamConfig", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "MqttTopicConfig": { - "$ref": "#/definitions/MqttTopicConfig" - } - }, - "required": [ - "MqttTopicConfig" - ], - "title": "MqttTopicConfig", - "type": "object" - } - ] - }, - "DataFormat": { - "enum": [ - "JSON", - "PARQUET" - ], - "type": "string" - }, - "DiagnosticsMode": { - "default": "OFF", - "enum": [ - "OFF", - "SEND_ACTIVE_DTCS" - ], - "type": "string" - }, - "MqttTopicConfig": { - "additionalProperties": false, - "properties": { - "ExecutionRoleArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:(aws[a-zA-Z0-9-]*):iam::(\\d{12})?:(role((\\u002F)|(\\u002F[\\u0021-\\u007F]+\\u002F))[\\w+=,.@-]+)$", - "type": "string" - }, - "MqttTopicArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:.*", - "type": "string" - } - }, - "required": [ - "ExecutionRoleArn", - "MqttTopicArn" - ], - "type": "object" - }, - "S3Config": { - "additionalProperties": false, - "properties": { - "BucketArn": { - "maxLength": 100, - "minLength": 16, - "pattern": "^arn:(aws[a-zA-Z0-9-]*):s3:::.+$", - "type": "string" - }, - "DataFormat": { - "$ref": "#/definitions/DataFormat" - }, - "Prefix": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-_:./!*'()]+$", - "type": "string" - }, - "StorageCompressionFormat": { - "$ref": "#/definitions/StorageCompressionFormat" - } - }, - "required": [ - "BucketArn" - ], - "type": "object" - }, - "SignalFetchConfig": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "TimeBased": { - "$ref": "#/definitions/TimeBasedSignalFetchConfig" - } - }, - "required": [ - "TimeBased" - ], - "title": "TimeBased", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "ConditionBased": { - "$ref": "#/definitions/ConditionBasedSignalFetchConfig" - } - }, - "required": [ - "ConditionBased" - ], - "title": "ConditionBased", - "type": "object" - } - ] - }, - "SignalFetchInformation": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "ConditionLanguageVersion": { - "maximum": 1, - "minimum": 1, - "type": "number" - }, - "FullyQualifiedName": { - "maxLength": 150, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.]+$", - "type": "string" - }, - "SignalFetchConfig": { - "$ref": "#/definitions/SignalFetchConfig" - } - }, - "required": [ - "Actions", - "FullyQualifiedName", - "SignalFetchConfig" - ], - "type": "object" - }, - "SignalInformation": { - "additionalProperties": false, - "properties": { - "MaxSampleCount": { - "maximum": 4294967295, - "minimum": 1, - "type": "number" - }, - "MinimumSamplingIntervalMs": { - "maximum": 4294967295, - "minimum": 0, - "type": "number" - }, - "Name": { - "maxLength": 150, - "minLength": 1, - "pattern": "^[\\w|*|-]+(\\.[\\w|*|-]+)*$", - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "SpoolingMode": { - "default": "OFF", - "enum": [ - "OFF", - "TO_DISK" - ], - "type": "string" - }, - "StorageCompressionFormat": { - "enum": [ - "NONE", - "GZIP" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TimeBasedCollectionScheme": { - "additionalProperties": false, - "properties": { - "PeriodMs": { - "maximum": 86400000, - "minimum": 10000, - "type": "number" - } - }, - "required": [ - "PeriodMs" - ], - "type": "object" - }, - "TimeBasedSignalFetchConfig": { - "additionalProperties": false, - "properties": { - "ExecutionFrequencyMs": { - "minimum": 1, - "type": "number" - } - }, - "required": [ - "ExecutionFrequencyMs" - ], - "type": "object" - }, - "TimePeriod": { - "additionalProperties": false, - "properties": { - "Unit": { - "$ref": "#/definitions/TimeUnit" - }, - "Value": { - "minimum": 1, - "type": "number" - } - }, - "required": [ - "Unit", - "Value" - ], - "type": "object" - }, - "TimeUnit": { - "enum": [ - "MILLISECOND", - "SECOND", - "MINUTE", - "HOUR" - ], - "type": "string" - }, - "TimestreamConfig": { - "additionalProperties": false, - "properties": { - "ExecutionRoleArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:(aws[a-zA-Z0-9-]*):iam::(\\d{12})?:(role((\\u002F)|(\\u002F[\\u0021-\\u007F]+\\u002F))[\\w+=,.@-]+)$", - "type": "string" - }, - "TimestreamTableArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:(aws[a-zA-Z0-9-]*):timestream:[a-zA-Z0-9-]+:[0-9]{12}:database\\/[a-zA-Z0-9_.-]+\\/table\\/[a-zA-Z0-9_.-]+$", - "type": "string" - } - }, - "required": [ - "TimestreamTableArn", - "ExecutionRoleArn" - ], - "type": "object" - }, - "TriggerMode": { - "enum": [ - "ALWAYS", - "RISING_EDGE" - ], - "type": "string" - }, - "UpdateCampaignAction": { - "enum": [ - "APPROVE", - "SUSPEND", - "RESUME", - "UPDATE" - ], - "type": "string" - } - }, - "description": "Definition of AWS::IoTFleetWise::Campaign Resource Type", - "handlers": { - "create": { - "permissions": [ - "iotfleetwise:CreateCampaign", - "iotfleetwise:GetCampaign", - "iotfleetwise:ListTagsForResource", - "iotfleetwise:TagResource", - "iam:PassRole", - "timestream:DescribeEndpoints", - "timestream:DescribeTable" - ] - }, - "delete": { - "permissions": [ - "iotfleetwise:DeleteCampaign", - "iotfleetwise:GetCampaign" - ] - }, - "list": { - "permissions": [ - "iotfleetwise:ListCampaigns", - "iotfleetwise:GetCampaign" - ] - }, - "read": { - "permissions": [ - "iotfleetwise:GetCampaign", - "iotfleetwise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotfleetwise:GetCampaign", - "iotfleetwise:ListTagsForResource", - "iotfleetwise:UpdateCampaign", - "iotfleetwise:TagResource", - "iotfleetwise:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Action": { - "$ref": "#/definitions/UpdateCampaignAction" - }, - "Arn": { - "type": "string" - }, - "CollectionScheme": { - "$ref": "#/definitions/CollectionScheme" - }, - "Compression": { - "$ref": "#/definitions/Compression" - }, - "CreationTime": { - "format": "date-time", - "type": "string" - }, - "DataDestinationConfigs": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DataDestinationConfig" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "DataExtraDimensions": { - "insertionOrder": false, - "items": { - "maxLength": 150, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.]+$", - "type": "string" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - }, - "Description": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[^\\u0000-\\u001F\\u007F]+$", - "type": "string" - }, - "DiagnosticsMode": { - "$ref": "#/definitions/DiagnosticsMode" - }, - "ExpiryTime": { - "default": "253402214400", - "format": "date-time", - "type": "string" - }, - "LastModificationTime": { - "format": "date-time", - "type": "string" - }, - "Name": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z\\d\\-_:]+$", - "type": "string" - }, - "PostTriggerCollectionDuration": { - "default": 0, - "maximum": 4294967295, - "minimum": 0, - "type": "number" - }, - "Priority": { - "default": 0, - "minimum": 0, - "type": "integer" - }, - "SignalCatalogArn": { - "type": "string" - }, - "SignalsToCollect": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SignalInformation" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "SignalsToFetch": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SignalFetchInformation" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "SpoolingMode": { - "$ref": "#/definitions/SpoolingMode" - }, - "StartTime": { - "default": "0", - "format": "date-time", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/CampaignStatus" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "TargetArn": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Status", - "/properties/CreationTime", - "/properties/LastModificationTime" - ], - "required": [ - "Name", - "CollectionScheme", - "SignalCatalogArn", - "TargetArn" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotfleetwise:UntagResource", - "iotfleetwise:TagResource", - "iotfleetwise:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTFleetWise::Campaign", - "writeOnlyProperties": [ - "/properties/Action" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/TargetArn", + "/properties/SignalCatalogArn", + "/properties/PostTriggerCollectionDuration", + "/properties/DiagnosticsMode", + "/properties/SpoolingMode", + "/properties/CollectionScheme", + "/properties/Priority", + "/properties/Compression", + "/properties/StartTime", + "/properties/ExpiryTime", + "/properties/DataPartitions" + ], + "definitions": { + "CampaignStatus": { + "enum": [ + "CREATING", + "WAITING_FOR_APPROVAL", + "RUNNING", + "SUSPENDED" + ], + "type": "string" + }, + "CollectionScheme": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "TimeBasedCollectionScheme": { + "$ref": "#/definitions/TimeBasedCollectionScheme" + } + }, + "required": [ + "TimeBasedCollectionScheme" + ], + "title": "TimeBasedCollectionScheme", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "ConditionBasedCollectionScheme": { + "$ref": "#/definitions/ConditionBasedCollectionScheme" + } + }, + "required": [ + "ConditionBasedCollectionScheme" + ], + "title": "ConditionBasedCollectionScheme", + "type": "object" + } + ] + }, + "Compression": { + "default": "OFF", + "enum": [ + "OFF", + "SNAPPY" + ], + "type": "string" + }, + "ConditionBasedCollectionScheme": { + "additionalProperties": false, + "properties": { + "ConditionLanguageVersion": { + "$ref": "#/definitions/LanguageVersion" + }, + "Expression": { + "$ref": "#/definitions/EventExpression" + }, + "MinimumTriggerIntervalMs": { + "maximum": 4294967295, + "minimum": 0, + "type": "number" + }, + "TriggerMode": { + "$ref": "#/definitions/TriggerMode" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "ConditionBasedSignalFetchConfig": { + "additionalProperties": false, + "properties": { + "ConditionExpression": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "TriggerMode": { + "$ref": "#/definitions/TriggerMode" + } + }, + "required": [ + "ConditionExpression", + "TriggerMode" + ], + "type": "object" + }, + "DataDestinationConfig": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "S3Config": { + "$ref": "#/definitions/S3Config" + } + }, + "required": [ + "S3Config" + ], + "title": "S3Config", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "TimestreamConfig": { + "$ref": "#/definitions/TimestreamConfig" + } + }, + "required": [ + "TimestreamConfig" + ], + "title": "TimestreamConfig", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "MqttTopicConfig": { + "$ref": "#/definitions/MqttTopicConfig" + } + }, + "required": [ + "MqttTopicConfig" + ], + "title": "MqttTopicConfig", + "type": "object" + } + ] + }, + "DataFormat": { + "enum": [ + "JSON", + "PARQUET" + ], + "type": "string" + }, + "DataPartition": { + "additionalProperties": false, + "properties": { + "Id": { + "$ref": "#/definitions/DataPartitionId" + }, + "StorageOptions": { + "$ref": "#/definitions/DataPartitionStorageOptions" + }, + "UploadOptions": { + "$ref": "#/definitions/DataPartitionUploadOptions" + } + }, + "required": [ + "Id", + "StorageOptions" + ], + "type": "object" + }, + "DataPartitionId": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "DataPartitionStorageOptions": { + "additionalProperties": false, + "properties": { + "MaximumSize": { + "$ref": "#/definitions/StorageMaximumSize" + }, + "MinimumTimeToLive": { + "$ref": "#/definitions/StorageMinimumTimeToLive" + }, + "StorageLocation": { + "$ref": "#/definitions/StorageLocation" + } + }, + "required": [ + "MaximumSize", + "MinimumTimeToLive", + "StorageLocation" + ], + "type": "object" + }, + "DataPartitionUploadOptions": { + "additionalProperties": false, + "properties": { + "ConditionLanguageVersion": { + "$ref": "#/definitions/LanguageVersion" + }, + "Expression": { + "$ref": "#/definitions/EventExpression" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "DiagnosticsMode": { + "default": "OFF", + "enum": [ + "OFF", + "SEND_ACTIVE_DTCS" + ], + "type": "string" + }, + "EventExpression": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "LanguageVersion": { + "minimum": 1, + "type": "integer" + }, + "MqttTopicConfig": { + "additionalProperties": false, + "properties": { + "ExecutionRoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):iam::(\\d{12})?:(role((\\u002F)|(\\u002F[\\u0021-\\u007F]+\\u002F))[\\w+=,.@-]+)$", + "type": "string" + }, + "MqttTopicArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:.*", + "type": "string" + } + }, + "required": [ + "ExecutionRoleArn", + "MqttTopicArn" + ], + "type": "object" + }, + "S3Config": { + "additionalProperties": false, + "properties": { + "BucketArn": { + "maxLength": 100, + "minLength": 16, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):s3:::.+$", + "type": "string" + }, + "DataFormat": { + "$ref": "#/definitions/DataFormat" + }, + "Prefix": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-_:./!*'()]+$", + "type": "string" + }, + "StorageCompressionFormat": { + "$ref": "#/definitions/StorageCompressionFormat" + } + }, + "required": [ + "BucketArn" + ], + "type": "object" + }, + "SignalFetchConfig": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "TimeBased": { + "$ref": "#/definitions/TimeBasedSignalFetchConfig" + } + }, + "required": [ + "TimeBased" + ], + "title": "TimeBased", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "ConditionBased": { + "$ref": "#/definitions/ConditionBasedSignalFetchConfig" + } + }, + "required": [ + "ConditionBased" + ], + "title": "ConditionBased", + "type": "object" + } + ] + }, + "SignalFetchInformation": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "ConditionLanguageVersion": { + "maximum": 1, + "minimum": 1, + "type": "number" + }, + "FullyQualifiedName": { + "maxLength": 150, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.]+$", + "type": "string" + }, + "SignalFetchConfig": { + "$ref": "#/definitions/SignalFetchConfig" + } + }, + "required": [ + "Actions", + "FullyQualifiedName", + "SignalFetchConfig" + ], + "type": "object" + }, + "SignalInformation": { + "additionalProperties": false, + "properties": { + "DataPartitionId": { + "$ref": "#/definitions/DataPartitionId" + }, + "MaxSampleCount": { + "maximum": 4294967295, + "minimum": 1, + "type": "number" + }, + "MinimumSamplingIntervalMs": { + "maximum": 4294967295, + "minimum": 0, + "type": "number" + }, + "Name": { + "maxLength": 150, + "minLength": 1, + "pattern": "^[\\w|*|-]+(\\.[\\w|*|-]+)*$", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "SpoolingMode": { + "default": "OFF", + "enum": [ + "OFF", + "TO_DISK" + ], + "type": "string" + }, + "StorageCompressionFormat": { + "enum": [ + "NONE", + "GZIP" + ], + "type": "string" + }, + "StorageLocation": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "StorageMaximumSize": { + "additionalProperties": false, + "properties": { + "Unit": { + "$ref": "#/definitions/StorageMaximumSizeUnit" + }, + "Value": { + "$ref": "#/definitions/StorageMaximumSizeValue" + } + }, + "required": [ + "Unit", + "Value" + ], + "type": "object" + }, + "StorageMaximumSizeUnit": { + "enum": [ + "MB", + "GB", + "TB" + ], + "type": "string" + }, + "StorageMaximumSizeValue": { + "maximum": 1073741824, + "minimum": 1, + "type": "integer" + }, + "StorageMinimumTimeToLive": { + "additionalProperties": false, + "properties": { + "Unit": { + "$ref": "#/definitions/StorageMinimumTimeToLiveUnit" + }, + "Value": { + "$ref": "#/definitions/StorageMinimumTimeToLiveValue" + } + }, + "required": [ + "Unit", + "Value" + ], + "type": "object" + }, + "StorageMinimumTimeToLiveUnit": { + "enum": [ + "HOURS", + "DAYS", + "WEEKS" + ], + "type": "string" + }, + "StorageMinimumTimeToLiveValue": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TimeBasedCollectionScheme": { + "additionalProperties": false, + "properties": { + "PeriodMs": { + "maximum": 86400000, + "minimum": 10000, + "type": "number" + } + }, + "required": [ + "PeriodMs" + ], + "type": "object" + }, + "TimeBasedSignalFetchConfig": { + "additionalProperties": false, + "properties": { + "ExecutionFrequencyMs": { + "minimum": 1, + "type": "number" + } + }, + "required": [ + "ExecutionFrequencyMs" + ], + "type": "object" + }, + "TimePeriod": { + "additionalProperties": false, + "properties": { + "Unit": { + "$ref": "#/definitions/TimeUnit" + }, + "Value": { + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Unit", + "Value" + ], + "type": "object" + }, + "TimeUnit": { + "enum": [ + "MILLISECOND", + "SECOND", + "MINUTE", + "HOUR" + ], + "type": "string" + }, + "TimestreamConfig": { + "additionalProperties": false, + "properties": { + "ExecutionRoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):iam::(\\d{12})?:(role((\\u002F)|(\\u002F[\\u0021-\\u007F]+\\u002F))[\\w+=,.@-]+)$", + "type": "string" + }, + "TimestreamTableArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):timestream:[a-zA-Z0-9-]+:[0-9]{12}:database\\/[a-zA-Z0-9_.-]+\\/table\\/[a-zA-Z0-9_.-]+$", + "type": "string" + } + }, + "required": [ + "TimestreamTableArn", + "ExecutionRoleArn" + ], + "type": "object" + }, + "TriggerMode": { + "enum": [ + "ALWAYS", + "RISING_EDGE" + ], + "type": "string" + }, + "UpdateCampaignAction": { + "enum": [ + "APPROVE", + "SUSPEND", + "RESUME", + "UPDATE" + ], + "type": "string" + } + }, + "description": "Definition of AWS::IoTFleetWise::Campaign Resource Type", + "handlers": { + "create": { + "permissions": [ + "iotfleetwise:CreateCampaign", + "iotfleetwise:GetCampaign", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:TagResource", + "iam:PassRole", + "timestream:DescribeEndpoints", + "timestream:DescribeTable" + ] + }, + "delete": { + "permissions": [ + "iotfleetwise:DeleteCampaign", + "iotfleetwise:GetCampaign" + ] + }, + "list": { + "permissions": [ + "iotfleetwise:ListCampaigns", + "iotfleetwise:GetCampaign" + ] + }, + "read": { + "permissions": [ + "iotfleetwise:GetCampaign", + "iotfleetwise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotfleetwise:GetCampaign", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:UpdateCampaign", + "iotfleetwise:TagResource", + "iotfleetwise:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Action": { + "$ref": "#/definitions/UpdateCampaignAction" + }, + "Arn": { + "type": "string" + }, + "CollectionScheme": { + "$ref": "#/definitions/CollectionScheme" + }, + "Compression": { + "$ref": "#/definitions/Compression" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "DataDestinationConfigs": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DataDestinationConfig" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "DataExtraDimensions": { + "insertionOrder": false, + "items": { + "maxLength": 150, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.]+$", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "DataPartitions": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/DataPartition" + }, + "maxItems": 20, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "Description": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F]+$", + "type": "string" + }, + "DiagnosticsMode": { + "$ref": "#/definitions/DiagnosticsMode" + }, + "ExpiryTime": { + "default": "253402214400", + "format": "date-time", + "type": "string" + }, + "LastModificationTime": { + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z\\d\\-_:]+$", + "type": "string" + }, + "PostTriggerCollectionDuration": { + "default": 0, + "maximum": 4294967295, + "minimum": 0, + "type": "number" + }, + "Priority": { + "default": 0, + "minimum": 0, + "type": "integer" + }, + "SignalCatalogArn": { + "type": "string" + }, + "SignalsToCollect": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SignalInformation" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "SignalsToFetch": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SignalFetchInformation" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "SpoolingMode": { + "$ref": "#/definitions/SpoolingMode" + }, + "StartTime": { + "default": "0", + "format": "date-time", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/CampaignStatus" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "TargetArn": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Status", + "/properties/CreationTime", + "/properties/LastModificationTime" + ], + "required": [ + "Name", + "CollectionScheme", + "SignalCatalogArn", + "TargetArn" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotfleetwise:UntagResource", + "iotfleetwise:TagResource", + "iotfleetwise:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTFleetWise::Campaign", + "writeOnlyProperties": [ + "/properties/Action" + ] +} diff --git a/src/schema/aws-iotfleetwise-decodermanifest.json b/src/schema/aws-iotfleetwise-decodermanifest.json index a63636c6..c556ce97 100644 --- a/src/schema/aws-iotfleetwise-decodermanifest.json +++ b/src/schema/aws-iotfleetwise-decodermanifest.json @@ -1,496 +1,619 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/ModelManifestArn" - ], - "definitions": { - "CanInterface": { - "additionalProperties": false, - "properties": { - "Name": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "ProtocolName": { - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "ProtocolVersion": { - "maxLength": 50, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "CanNetworkInterface": { - "additionalProperties": false, - "properties": { - "CanInterface": { - "$ref": "#/definitions/CanInterface" - }, - "InterfaceId": { - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "Type": { - "enum": [ - "CAN_INTERFACE" - ], - "type": "string" - } - }, - "required": [ - "InterfaceId", - "Type", - "CanInterface" - ], - "type": "object" - }, - "CanSignal": { - "additionalProperties": false, - "properties": { - "Factor": { - "type": [ - "number", - "string" - ] - }, - "IsBigEndian": { - "type": [ - "boolean", - "string" - ] - }, - "IsSigned": { - "type": [ - "boolean", - "string" - ] - }, - "Length": { - "type": [ - "integer", - "string" - ] - }, - "MessageId": { - "type": [ - "integer", - "string" - ] - }, - "Name": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "Offset": { - "type": [ - "number", - "string" - ] - }, - "StartBit": { - "type": [ - "integer", - "string" - ] - } - }, - "required": [ - "Factor", - "IsBigEndian", - "IsSigned", - "Length", - "MessageId", - "Offset", - "StartBit" - ], - "type": "object" - }, - "CanSignalDecoder": { - "additionalProperties": false, - "properties": { - "CanSignal": { - "$ref": "#/definitions/CanSignal" - }, - "FullyQualifiedName": { - "maxLength": 150, - "minLength": 1, - "type": "string" - }, - "InterfaceId": { - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "Type": { - "enum": [ - "CAN_SIGNAL" - ], - "type": "string" - } - }, - "required": [ - "FullyQualifiedName", - "InterfaceId", - "Type", - "CanSignal" - ], - "type": "object" - }, - "ManifestStatus": { - "default": "DRAFT", - "enum": [ - "ACTIVE", - "DRAFT" - ], - "type": "string" - }, - "ObdInterface": { - "additionalProperties": false, - "properties": { - "DtcRequestIntervalSeconds": { - "type": [ - "integer", - "string" - ] - }, - "HasTransmissionEcu": { - "type": [ - "boolean", - "string" - ] - }, - "Name": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "ObdStandard": { - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "PidRequestIntervalSeconds": { - "type": [ - "integer", - "string" - ] - }, - "RequestMessageId": { - "type": [ - "integer", - "string" - ] - }, - "UseExtendedIds": { - "type": [ - "boolean", - "string" - ] - } - }, - "required": [ - "Name", - "RequestMessageId" - ], - "type": "object" - }, - "ObdNetworkInterface": { - "additionalProperties": false, - "properties": { - "InterfaceId": { - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "ObdInterface": { - "$ref": "#/definitions/ObdInterface" - }, - "Type": { - "enum": [ - "OBD_INTERFACE" - ], - "type": "string" - } - }, - "required": [ - "InterfaceId", - "Type", - "ObdInterface" - ], - "type": "object" - }, - "ObdSignal": { - "additionalProperties": false, - "properties": { - "BitMaskLength": { - "type": [ - "integer", - "string" - ] - }, - "BitRightShift": { - "type": [ - "integer", - "string" - ] - }, - "ByteLength": { - "type": [ - "integer", - "string" - ] - }, - "Offset": { - "type": [ - "number", - "string" - ] - }, - "Pid": { - "type": [ - "integer", - "string" - ] - }, - "PidResponseLength": { - "type": [ - "integer", - "string" - ] - }, - "Scaling": { - "type": [ - "number", - "string" - ] - }, - "ServiceMode": { - "type": [ - "integer", - "string" - ] - }, - "StartByte": { - "type": [ - "integer", - "string" - ] - } - }, - "required": [ - "ByteLength", - "Offset", - "Pid", - "PidResponseLength", - "Scaling", - "ServiceMode", - "StartByte" - ], - "type": "object" - }, - "ObdSignalDecoder": { - "additionalProperties": false, - "properties": { - "FullyQualifiedName": { - "maxLength": 150, - "minLength": 1, - "type": "string" - }, - "InterfaceId": { - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "ObdSignal": { - "$ref": "#/definitions/ObdSignal" - }, - "Type": { - "enum": [ - "OBD_SIGNAL" - ], - "type": "string" - } - }, - "required": [ - "FullyQualifiedName", - "InterfaceId", - "Type", - "ObdSignal" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::IoTFleetWise::DecoderManifest Resource Type", - "handlers": { - "create": { - "permissions": [ - "iotfleetwise:CreateDecoderManifest", - "iotfleetwise:GetDecoderManifest", - "iotfleetwise:UpdateDecoderManifest", - "iotfleetwise:ListDecoderManifestSignals", - "iotfleetwise:ListDecoderManifestNetworkInterfaces", - "iotfleetwise:ListTagsForResource", - "iotfleetwise:TagResource" - ] - }, - "delete": { - "permissions": [ - "iotfleetwise:DeleteDecoderManifest", - "iotfleetwise:GetDecoderManifest" - ] - }, - "list": { - "permissions": [ - "iotfleetwise:ListDecoderManifests" - ] - }, - "read": { - "permissions": [ - "iotfleetwise:GetDecoderManifest", - "iotfleetwise:ListDecoderManifestSignals", - "iotfleetwise:ListDecoderManifestNetworkInterfaces", - "iotfleetwise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotfleetwise:UpdateDecoderManifest", - "iotfleetwise:GetDecoderManifest", - "iotfleetwise:ListDecoderManifestSignals", - "iotfleetwise:ListDecoderManifestNetworkInterfaces", - "iotfleetwise:ListTagsForResource", - "iotfleetwise:TagResource", - "iotfleetwise:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "type": "string" - }, - "CreationTime": { - "format": "date-time", - "type": "string" - }, - "Description": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[^\\u0000-\\u001F\\u007F]+$", - "type": "string" - }, - "LastModificationTime": { - "format": "date-time", - "type": "string" - }, - "ModelManifestArn": { - "type": "string" - }, - "Name": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z\\d\\-_:]+$", - "type": "string" - }, - "NetworkInterfaces": { - "insertionOrder": false, - "items": { - "oneOf": [ - { - "$ref": "#/definitions/CanNetworkInterface" - }, - { - "$ref": "#/definitions/ObdNetworkInterface" - } - ] - }, - "maxItems": 5000, - "minItems": 1, - "type": "array" - }, - "SignalDecoders": { - "insertionOrder": false, - "items": { - "oneOf": [ - { - "$ref": "#/definitions/CanSignalDecoder" - }, - { - "$ref": "#/definitions/ObdSignalDecoder" - } - ] - }, - "maxItems": 5000, - "minItems": 1, - "type": "array" - }, - "Status": { - "$ref": "#/definitions/ManifestStatus" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationTime", - "/properties/LastModificationTime" - ], - "required": [ - "Name", - "ModelManifestArn" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotfleetwise:UntagResource", - "iotfleetwise:TagResource", - "iotfleetwise:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTFleetWise::DecoderManifest" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/ModelManifestArn" + ], + "definitions": { + "CanInterface": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "ProtocolName": { + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "ProtocolVersion": { + "maxLength": 50, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "CanNetworkInterface": { + "additionalProperties": false, + "properties": { + "CanInterface": { + "$ref": "#/definitions/CanInterface" + }, + "InterfaceId": { + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "Type": { + "enum": [ + "CAN_INTERFACE" + ], + "type": "string" + } + }, + "required": [ + "InterfaceId", + "Type", + "CanInterface" + ], + "type": "object" + }, + "CanSignal": { + "additionalProperties": false, + "properties": { + "Factor": { + "type": [ + "number", + "string" + ] + }, + "IsBigEndian": { + "type": [ + "boolean", + "string" + ] + }, + "IsSigned": { + "type": [ + "boolean", + "string" + ] + }, + "Length": { + "type": [ + "integer", + "string" + ] + }, + "MessageId": { + "type": [ + "integer", + "string" + ] + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Offset": { + "type": [ + "number", + "string" + ] + }, + "SignalValueType": { + "$ref": "#/definitions/SignalValueType" + }, + "StartBit": { + "type": [ + "integer", + "string" + ] + } + }, + "required": [ + "Factor", + "IsBigEndian", + "IsSigned", + "Length", + "MessageId", + "Offset", + "StartBit" + ], + "type": "object" + }, + "CanSignalDecoder": { + "additionalProperties": false, + "properties": { + "CanSignal": { + "$ref": "#/definitions/CanSignal" + }, + "FullyQualifiedName": { + "maxLength": 150, + "minLength": 1, + "type": "string" + }, + "InterfaceId": { + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "Type": { + "enum": [ + "CAN_SIGNAL" + ], + "type": "string" + } + }, + "required": [ + "FullyQualifiedName", + "InterfaceId", + "Type", + "CanSignal" + ], + "type": "object" + }, + "CustomDecodingInterface": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z\\d\\-_:]+$", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "CustomDecodingNetworkInterface": { + "additionalProperties": false, + "properties": { + "CustomDecodingInterface": { + "$ref": "#/definitions/CustomDecodingInterface" + }, + "InterfaceId": { + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "Type": { + "enum": [ + "CUSTOM_DECODING_INTERFACE" + ], + "type": "string" + } + }, + "required": [ + "InterfaceId", + "Type", + "CustomDecodingInterface" + ], + "type": "object" + }, + "CustomDecodingSignal": { + "additionalProperties": false, + "properties": { + "Id": { + "maxLength": 150, + "minLength": 1, + "pattern": "^(?!.*\\.\\.)[a-zA-Z0-9_\\-#:.]+$", + "type": "string" + } + }, + "required": [ + "Id" + ], + "type": "object" + }, + "CustomDecodingSignalDecoder": { + "additionalProperties": false, + "properties": { + "CustomDecodingSignal": { + "$ref": "#/definitions/CustomDecodingSignal" + }, + "FullyQualifiedName": { + "maxLength": 150, + "minLength": 1, + "type": "string" + }, + "InterfaceId": { + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "Type": { + "enum": [ + "CUSTOM_DECODING_SIGNAL" + ], + "type": "string" + } + }, + "required": [ + "FullyQualifiedName", + "InterfaceId", + "Type", + "CustomDecodingSignal" + ], + "type": "object" + }, + "DefaultForUnmappedSignalsType": { + "enum": [ + "CUSTOM_DECODING" + ], + "type": "string" + }, + "ManifestStatus": { + "default": "DRAFT", + "enum": [ + "ACTIVE", + "DRAFT" + ], + "type": "string" + }, + "ObdInterface": { + "additionalProperties": false, + "properties": { + "DtcRequestIntervalSeconds": { + "type": [ + "integer", + "string" + ] + }, + "HasTransmissionEcu": { + "type": [ + "boolean", + "string" + ] + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "ObdStandard": { + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "PidRequestIntervalSeconds": { + "type": [ + "integer", + "string" + ] + }, + "RequestMessageId": { + "type": [ + "integer", + "string" + ] + }, + "UseExtendedIds": { + "type": [ + "boolean", + "string" + ] + } + }, + "required": [ + "Name", + "RequestMessageId" + ], + "type": "object" + }, + "ObdNetworkInterface": { + "additionalProperties": false, + "properties": { + "InterfaceId": { + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "ObdInterface": { + "$ref": "#/definitions/ObdInterface" + }, + "Type": { + "enum": [ + "OBD_INTERFACE" + ], + "type": "string" + } + }, + "required": [ + "InterfaceId", + "Type", + "ObdInterface" + ], + "type": "object" + }, + "ObdSignal": { + "additionalProperties": false, + "properties": { + "BitMaskLength": { + "type": [ + "integer", + "string" + ] + }, + "BitRightShift": { + "type": [ + "integer", + "string" + ] + }, + "ByteLength": { + "type": [ + "integer", + "string" + ] + }, + "IsSigned": { + "type": [ + "boolean", + "string" + ] + }, + "Offset": { + "type": [ + "number", + "string" + ] + }, + "Pid": { + "type": [ + "integer", + "string" + ] + }, + "PidResponseLength": { + "type": [ + "integer", + "string" + ] + }, + "Scaling": { + "type": [ + "number", + "string" + ] + }, + "ServiceMode": { + "type": [ + "integer", + "string" + ] + }, + "SignalValueType": { + "$ref": "#/definitions/SignalValueType" + }, + "StartByte": { + "type": [ + "integer", + "string" + ] + } + }, + "required": [ + "ByteLength", + "Offset", + "Pid", + "PidResponseLength", + "Scaling", + "ServiceMode", + "StartByte" + ], + "type": "object" + }, + "ObdSignalDecoder": { + "additionalProperties": false, + "properties": { + "FullyQualifiedName": { + "maxLength": 150, + "minLength": 1, + "type": "string" + }, + "InterfaceId": { + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "ObdSignal": { + "$ref": "#/definitions/ObdSignal" + }, + "Type": { + "enum": [ + "OBD_SIGNAL" + ], + "type": "string" + } + }, + "required": [ + "FullyQualifiedName", + "InterfaceId", + "Type", + "ObdSignal" + ], + "type": "object" + }, + "SignalValueType": { + "enum": [ + "INTEGER", + "FLOATING_POINT" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::IoTFleetWise::DecoderManifest Resource Type", + "handlers": { + "create": { + "permissions": [ + "iotfleetwise:CreateDecoderManifest", + "iotfleetwise:GetDecoderManifest", + "iotfleetwise:UpdateDecoderManifest", + "iotfleetwise:ListDecoderManifestSignals", + "iotfleetwise:ListDecoderManifestNetworkInterfaces", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:TagResource" + ] + }, + "delete": { + "permissions": [ + "iotfleetwise:DeleteDecoderManifest", + "iotfleetwise:GetDecoderManifest" + ] + }, + "list": { + "permissions": [ + "iotfleetwise:ListDecoderManifests" + ] + }, + "read": { + "permissions": [ + "iotfleetwise:GetDecoderManifest", + "iotfleetwise:ListDecoderManifestSignals", + "iotfleetwise:ListDecoderManifestNetworkInterfaces", + "iotfleetwise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotfleetwise:UpdateDecoderManifest", + "iotfleetwise:GetDecoderManifest", + "iotfleetwise:ListDecoderManifestSignals", + "iotfleetwise:ListDecoderManifestNetworkInterfaces", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:TagResource", + "iotfleetwise:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "DefaultForUnmappedSignals": { + "$ref": "#/definitions/DefaultForUnmappedSignalsType" + }, + "Description": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F]+$", + "type": "string" + }, + "LastModificationTime": { + "format": "date-time", + "type": "string" + }, + "ModelManifestArn": { + "type": "string" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z\\d\\-_:]+$", + "type": "string" + }, + "NetworkInterfaces": { + "insertionOrder": false, + "items": { + "oneOf": [ + { + "$ref": "#/definitions/CanNetworkInterface" + }, + { + "$ref": "#/definitions/ObdNetworkInterface" + }, + { + "$ref": "#/definitions/CustomDecodingNetworkInterface" + } + ] + }, + "maxItems": 5000, + "minItems": 1, + "type": "array" + }, + "SignalDecoders": { + "insertionOrder": false, + "items": { + "oneOf": [ + { + "$ref": "#/definitions/CanSignalDecoder" + }, + { + "$ref": "#/definitions/ObdSignalDecoder" + }, + { + "$ref": "#/definitions/CustomDecodingSignalDecoder" + } + ] + }, + "maxItems": 5000, + "minItems": 1, + "type": "array" + }, + "Status": { + "$ref": "#/definitions/ManifestStatus" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/LastModificationTime" + ], + "required": [ + "Name", + "ModelManifestArn" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotfleetwise:UntagResource", + "iotfleetwise:TagResource", + "iotfleetwise:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTFleetWise::DecoderManifest", + "writeOnlyProperties": [ + "/properties/DefaultForUnmappedSignals" + ] +} diff --git a/src/schema/aws-iotfleetwise-fleet.json b/src/schema/aws-iotfleetwise-fleet.json index e8fb934a..93b74412 100644 --- a/src/schema/aws-iotfleetwise-fleet.json +++ b/src/schema/aws-iotfleetwise-fleet.json @@ -1,130 +1,130 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Id", - "/properties/SignalCatalogArn" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::IoTFleetWise::Fleet Resource Type", - "handlers": { - "create": { - "permissions": [ - "iotfleetwise:GetFleet", - "iotfleetwise:CreateFleet", - "iotfleetwise:ListTagsForResource", - "iotfleetwise:ListVehiclesInFleet", - "iotfleetwise:TagResource" - ] - }, - "delete": { - "permissions": [ - "iotfleetwise:GetFleet", - "iotfleetwise:DeleteFleet" - ] - }, - "list": { - "permissions": [ - "iotfleetwise:ListFleets" - ] - }, - "read": { - "permissions": [ - "iotfleetwise:GetFleet", - "iotfleetwise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotfleetwise:GetFleet", - "iotfleetwise:UpdateFleet", - "iotfleetwise:ListTagsForResource", - "iotfleetwise:TagResource", - "iotfleetwise:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "CreationTime": { - "format": "date-time", - "type": "string" - }, - "Description": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[^\\u0000-\\u001F\\u007F]+$", - "type": "string" - }, - "Id": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z0-9:_-]+$", - "type": "string" - }, - "LastModificationTime": { - "format": "date-time", - "type": "string" - }, - "SignalCatalogArn": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationTime", - "/properties/LastModificationTime" - ], - "required": [ - "Id", - "SignalCatalogArn" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotfleetwise:UntagResource", - "iotfleetwise:TagResource", - "iotfleetwise:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTFleetWise::Fleet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Id", + "/properties/SignalCatalogArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::IoTFleetWise::Fleet Resource Type", + "handlers": { + "create": { + "permissions": [ + "iotfleetwise:GetFleet", + "iotfleetwise:CreateFleet", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:ListVehiclesInFleet", + "iotfleetwise:TagResource" + ] + }, + "delete": { + "permissions": [ + "iotfleetwise:GetFleet", + "iotfleetwise:DeleteFleet" + ] + }, + "list": { + "permissions": [ + "iotfleetwise:ListFleets" + ] + }, + "read": { + "permissions": [ + "iotfleetwise:GetFleet", + "iotfleetwise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotfleetwise:GetFleet", + "iotfleetwise:UpdateFleet", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:TagResource", + "iotfleetwise:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "Description": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F]+$", + "type": "string" + }, + "Id": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9:_-]+$", + "type": "string" + }, + "LastModificationTime": { + "format": "date-time", + "type": "string" + }, + "SignalCatalogArn": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/LastModificationTime" + ], + "required": [ + "Id", + "SignalCatalogArn" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotfleetwise:UntagResource", + "iotfleetwise:TagResource", + "iotfleetwise:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTFleetWise::Fleet" +} diff --git a/src/schema/aws-iotfleetwise-modelmanifest.json b/src/schema/aws-iotfleetwise-modelmanifest.json index 8e1c1100..ea23f818 100644 --- a/src/schema/aws-iotfleetwise-modelmanifest.json +++ b/src/schema/aws-iotfleetwise-modelmanifest.json @@ -1,152 +1,152 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "ManifestStatus": { - "default": "DRAFT", - "enum": [ - "ACTIVE", - "DRAFT" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::IoTFleetWise::ModelManifest Resource Type", - "handlers": { - "create": { - "permissions": [ - "iotfleetwise:CreateModelManifest", - "iotfleetwise:GetModelManifest", - "iotfleetwise:UpdateModelManifest", - "iotfleetwise:ListModelManifestNodes", - "iotfleetwise:ListTagsForResource", - "iotfleetwise:TagResource" - ] - }, - "delete": { - "permissions": [ - "iotfleetwise:DeleteModelManifest", - "iotfleetwise:GetModelManifest" - ] - }, - "list": { - "permissions": [ - "iotfleetwise:ListModelManifests" - ] - }, - "read": { - "permissions": [ - "iotfleetwise:GetModelManifest", - "iotfleetwise:ListModelManifestNodes", - "iotfleetwise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotfleetwise:UpdateModelManifest", - "iotfleetwise:GetModelManifest", - "iotfleetwise:ListModelManifestNodes", - "iotfleetwise:ListTagsForResource", - "iotfleetwise:TagResource", - "iotfleetwise:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "type": "string" - }, - "CreationTime": { - "format": "date-time", - "type": "string" - }, - "Description": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[^\\u0000-\\u001F\\u007F]+$", - "type": "string" - }, - "LastModificationTime": { - "format": "date-time", - "type": "string" - }, - "Name": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z\\d\\-_:]+$", - "type": "string" - }, - "Nodes": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "SignalCatalogArn": { - "type": "string" - }, - "Status": { - "$ref": "#/definitions/ManifestStatus" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationTime", - "/properties/LastModificationTime" - ], - "required": [ - "SignalCatalogArn", - "Name" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotfleetwise:UntagResource", - "iotfleetwise:TagResource", - "iotfleetwise:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTFleetWise::ModelManifest" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "ManifestStatus": { + "default": "DRAFT", + "enum": [ + "ACTIVE", + "DRAFT" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::IoTFleetWise::ModelManifest Resource Type", + "handlers": { + "create": { + "permissions": [ + "iotfleetwise:CreateModelManifest", + "iotfleetwise:GetModelManifest", + "iotfleetwise:UpdateModelManifest", + "iotfleetwise:ListModelManifestNodes", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:TagResource" + ] + }, + "delete": { + "permissions": [ + "iotfleetwise:DeleteModelManifest", + "iotfleetwise:GetModelManifest" + ] + }, + "list": { + "permissions": [ + "iotfleetwise:ListModelManifests" + ] + }, + "read": { + "permissions": [ + "iotfleetwise:GetModelManifest", + "iotfleetwise:ListModelManifestNodes", + "iotfleetwise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotfleetwise:UpdateModelManifest", + "iotfleetwise:GetModelManifest", + "iotfleetwise:ListModelManifestNodes", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:TagResource", + "iotfleetwise:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "Description": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F]+$", + "type": "string" + }, + "LastModificationTime": { + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z\\d\\-_:]+$", + "type": "string" + }, + "Nodes": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "SignalCatalogArn": { + "type": "string" + }, + "Status": { + "$ref": "#/definitions/ManifestStatus" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/LastModificationTime" + ], + "required": [ + "SignalCatalogArn", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotfleetwise:UntagResource", + "iotfleetwise:TagResource", + "iotfleetwise:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTFleetWise::ModelManifest" +} diff --git a/src/schema/aws-iotfleetwise-signalcatalog.json b/src/schema/aws-iotfleetwise-signalcatalog.json index 2883bbbe..4dc17fd1 100644 --- a/src/schema/aws-iotfleetwise-signalcatalog.json +++ b/src/schema/aws-iotfleetwise-signalcatalog.json @@ -1,376 +1,376 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Actuator": { - "additionalProperties": false, - "properties": { - "AllowedValues": { - "$ref": "#/definitions/AllowedValues" - }, - "AssignedValue": { - "type": "string" - }, - "DataType": { - "$ref": "#/definitions/NodeDataType" - }, - "Description": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[^\\u0000-\\u001F\\u007F]+$", - "type": "string" - }, - "FullyQualifiedName": { - "type": "string" - }, - "Max": { - "type": "number" - }, - "Min": { - "type": "number" - }, - "Unit": { - "type": "string" - } - }, - "required": [ - "DataType", - "FullyQualifiedName" - ], - "type": "object" - }, - "AllowedValues": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "Attribute": { - "additionalProperties": false, - "properties": { - "AllowedValues": { - "$ref": "#/definitions/AllowedValues" - }, - "AssignedValue": { - "type": "string" - }, - "DataType": { - "$ref": "#/definitions/NodeDataType" - }, - "DefaultValue": { - "type": "string" - }, - "Description": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[^\\u0000-\\u001F\\u007F]+$", - "type": "string" - }, - "FullyQualifiedName": { - "type": "string" - }, - "Max": { - "type": "number" - }, - "Min": { - "type": "number" - }, - "Unit": { - "type": "string" - } - }, - "required": [ - "DataType", - "FullyQualifiedName" - ], - "type": "object" - }, - "Branch": { - "additionalProperties": false, - "properties": { - "Description": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[^\\u0000-\\u001F\\u007F]+$", - "type": "string" - }, - "FullyQualifiedName": { - "type": "string" - } - }, - "required": [ - "FullyQualifiedName" - ], - "type": "object" - }, - "Node": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Branch": { - "$ref": "#/definitions/Branch" - } - }, - "title": "Branch", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Sensor": { - "$ref": "#/definitions/Sensor" - } - }, - "title": "Sensor", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Actuator": { - "$ref": "#/definitions/Actuator" - } - }, - "title": "Actuator", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Attribute": { - "$ref": "#/definitions/Attribute" - } - }, - "title": "Attribute", - "type": "object" - } - ] - }, - "NodeCounts": { - "additionalProperties": false, - "properties": { - "TotalActuators": { - "type": "number" - }, - "TotalAttributes": { - "type": "number" - }, - "TotalBranches": { - "type": "number" - }, - "TotalNodes": { - "type": "number" - }, - "TotalSensors": { - "type": "number" - } - }, - "type": "object" - }, - "NodeDataType": { - "enum": [ - "INT8", - "UINT8", - "INT16", - "UINT16", - "INT32", - "UINT32", - "INT64", - "UINT64", - "BOOLEAN", - "FLOAT", - "DOUBLE", - "STRING", - "UNIX_TIMESTAMP", - "INT8_ARRAY", - "UINT8_ARRAY", - "INT16_ARRAY", - "UINT16_ARRAY", - "INT32_ARRAY", - "UINT32_ARRAY", - "INT64_ARRAY", - "UINT64_ARRAY", - "BOOLEAN_ARRAY", - "FLOAT_ARRAY", - "DOUBLE_ARRAY", - "STRING_ARRAY", - "UNIX_TIMESTAMP_ARRAY", - "UNKNOWN" - ], - "type": "string" - }, - "Sensor": { - "additionalProperties": false, - "properties": { - "AllowedValues": { - "$ref": "#/definitions/AllowedValues" - }, - "DataType": { - "$ref": "#/definitions/NodeDataType" - }, - "Description": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[^\\u0000-\\u001F\\u007F]+$", - "type": "string" - }, - "FullyQualifiedName": { - "type": "string" - }, - "Max": { - "type": "number" - }, - "Min": { - "type": "number" - }, - "Unit": { - "type": "string" - } - }, - "required": [ - "DataType", - "FullyQualifiedName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::IoTFleetWise::SignalCatalog Resource Type", - "handlers": { - "create": { - "permissions": [ - "iotfleetwise:GetSignalCatalog", - "iotfleetwise:CreateSignalCatalog", - "iotfleetwise:ListSignalCatalogNodes", - "iotfleetwise:ListTagsForResource", - "iotfleetwise:TagResource" - ] - }, - "delete": { - "permissions": [ - "iotfleetwise:GetSignalCatalog", - "iotfleetwise:DeleteSignalCatalog" - ] - }, - "list": { - "permissions": [ - "iotfleetwise:ListSignalCatalogs" - ] - }, - "read": { - "permissions": [ - "iotfleetwise:GetSignalCatalog", - "iotfleetwise:ListSignalCatalogNodes", - "iotfleetwise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotfleetwise:GetSignalCatalog", - "iotfleetwise:UpdateSignalCatalog", - "iotfleetwise:ListSignalCatalogNodes", - "iotfleetwise:ListTagsForResource", - "iotfleetwise:TagResource", - "iotfleetwise:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "type": "string" - }, - "CreationTime": { - "format": "date-time", - "type": "string" - }, - "Description": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[^\\u0000-\\u001F\\u007F]+$", - "type": "string" - }, - "LastModificationTime": { - "format": "date-time", - "type": "string" - }, - "Name": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z\\d\\-_:]+$", - "type": "string" - }, - "NodeCounts": { - "$ref": "#/definitions/NodeCounts" - }, - "Nodes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Node" - }, - "maxItems": 5000, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationTime", - "/properties/LastModificationTime", - "/properties/NodeCounts/TotalNodes", - "/properties/NodeCounts/TotalBranches", - "/properties/NodeCounts/TotalSensors", - "/properties/NodeCounts/TotalAttributes", - "/properties/NodeCounts/TotalActuators" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotfleetwise:UntagResource", - "iotfleetwise:TagResource", - "iotfleetwise:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTFleetWise::SignalCatalog" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Actuator": { + "additionalProperties": false, + "properties": { + "AllowedValues": { + "$ref": "#/definitions/AllowedValues" + }, + "AssignedValue": { + "type": "string" + }, + "DataType": { + "$ref": "#/definitions/NodeDataType" + }, + "Description": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F]+$", + "type": "string" + }, + "FullyQualifiedName": { + "type": "string" + }, + "Max": { + "type": "number" + }, + "Min": { + "type": "number" + }, + "Unit": { + "type": "string" + } + }, + "required": [ + "DataType", + "FullyQualifiedName" + ], + "type": "object" + }, + "AllowedValues": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "Attribute": { + "additionalProperties": false, + "properties": { + "AllowedValues": { + "$ref": "#/definitions/AllowedValues" + }, + "AssignedValue": { + "type": "string" + }, + "DataType": { + "$ref": "#/definitions/NodeDataType" + }, + "DefaultValue": { + "type": "string" + }, + "Description": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F]+$", + "type": "string" + }, + "FullyQualifiedName": { + "type": "string" + }, + "Max": { + "type": "number" + }, + "Min": { + "type": "number" + }, + "Unit": { + "type": "string" + } + }, + "required": [ + "DataType", + "FullyQualifiedName" + ], + "type": "object" + }, + "Branch": { + "additionalProperties": false, + "properties": { + "Description": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F]+$", + "type": "string" + }, + "FullyQualifiedName": { + "type": "string" + } + }, + "required": [ + "FullyQualifiedName" + ], + "type": "object" + }, + "Node": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Branch": { + "$ref": "#/definitions/Branch" + } + }, + "title": "Branch", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Sensor": { + "$ref": "#/definitions/Sensor" + } + }, + "title": "Sensor", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Actuator": { + "$ref": "#/definitions/Actuator" + } + }, + "title": "Actuator", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Attribute": { + "$ref": "#/definitions/Attribute" + } + }, + "title": "Attribute", + "type": "object" + } + ] + }, + "NodeCounts": { + "additionalProperties": false, + "properties": { + "TotalActuators": { + "type": "number" + }, + "TotalAttributes": { + "type": "number" + }, + "TotalBranches": { + "type": "number" + }, + "TotalNodes": { + "type": "number" + }, + "TotalSensors": { + "type": "number" + } + }, + "type": "object" + }, + "NodeDataType": { + "enum": [ + "INT8", + "UINT8", + "INT16", + "UINT16", + "INT32", + "UINT32", + "INT64", + "UINT64", + "BOOLEAN", + "FLOAT", + "DOUBLE", + "STRING", + "UNIX_TIMESTAMP", + "INT8_ARRAY", + "UINT8_ARRAY", + "INT16_ARRAY", + "UINT16_ARRAY", + "INT32_ARRAY", + "UINT32_ARRAY", + "INT64_ARRAY", + "UINT64_ARRAY", + "BOOLEAN_ARRAY", + "FLOAT_ARRAY", + "DOUBLE_ARRAY", + "STRING_ARRAY", + "UNIX_TIMESTAMP_ARRAY", + "UNKNOWN" + ], + "type": "string" + }, + "Sensor": { + "additionalProperties": false, + "properties": { + "AllowedValues": { + "$ref": "#/definitions/AllowedValues" + }, + "DataType": { + "$ref": "#/definitions/NodeDataType" + }, + "Description": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F]+$", + "type": "string" + }, + "FullyQualifiedName": { + "type": "string" + }, + "Max": { + "type": "number" + }, + "Min": { + "type": "number" + }, + "Unit": { + "type": "string" + } + }, + "required": [ + "DataType", + "FullyQualifiedName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::IoTFleetWise::SignalCatalog Resource Type", + "handlers": { + "create": { + "permissions": [ + "iotfleetwise:GetSignalCatalog", + "iotfleetwise:CreateSignalCatalog", + "iotfleetwise:ListSignalCatalogNodes", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:TagResource" + ] + }, + "delete": { + "permissions": [ + "iotfleetwise:GetSignalCatalog", + "iotfleetwise:DeleteSignalCatalog" + ] + }, + "list": { + "permissions": [ + "iotfleetwise:ListSignalCatalogs" + ] + }, + "read": { + "permissions": [ + "iotfleetwise:GetSignalCatalog", + "iotfleetwise:ListSignalCatalogNodes", + "iotfleetwise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotfleetwise:GetSignalCatalog", + "iotfleetwise:UpdateSignalCatalog", + "iotfleetwise:ListSignalCatalogNodes", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:TagResource", + "iotfleetwise:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "Description": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F]+$", + "type": "string" + }, + "LastModificationTime": { + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z\\d\\-_:]+$", + "type": "string" + }, + "NodeCounts": { + "$ref": "#/definitions/NodeCounts" + }, + "Nodes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Node" + }, + "maxItems": 5000, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/LastModificationTime", + "/properties/NodeCounts/TotalNodes", + "/properties/NodeCounts/TotalBranches", + "/properties/NodeCounts/TotalSensors", + "/properties/NodeCounts/TotalAttributes", + "/properties/NodeCounts/TotalActuators" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotfleetwise:UntagResource", + "iotfleetwise:TagResource", + "iotfleetwise:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTFleetWise::SignalCatalog" +} diff --git a/src/schema/aws-iotfleetwise-statetemplate.json b/src/schema/aws-iotfleetwise-statetemplate.json new file mode 100644 index 00000000..327548fd --- /dev/null +++ b/src/schema/aws-iotfleetwise-statetemplate.json @@ -0,0 +1,177 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/SignalCatalogArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Unit": { + "additionalProperties": false, + "type": "object" + } + }, + "description": "Definition of AWS::IoTFleetWise::StateTemplate Resource Type", + "handlers": { + "create": { + "permissions": [ + "iotfleetwise:GetStateTemplate", + "iotfleetwise:CreateStateTemplate", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:TagResource" + ] + }, + "delete": { + "permissions": [ + "iotfleetwise:DeleteStateTemplate", + "iotfleetwise:GetStateTemplate" + ] + }, + "list": { + "permissions": [ + "iotfleetwise:ListStateTemplates" + ] + }, + "read": { + "permissions": [ + "iotfleetwise:GetStateTemplate", + "iotfleetwise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotfleetwise:UpdateStateTemplate", + "iotfleetwise:GetStateTemplate", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:TagResource", + "iotfleetwise:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "DataExtraDimensions": { + "insertionOrder": false, + "items": { + "maxLength": 150, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.]+$", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "Description": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F]+$", + "type": "string" + }, + "Id": { + "maxLength": 26, + "minLength": 26, + "pattern": "^[A-Z0-9]+$", + "type": "string" + }, + "LastModificationTime": { + "format": "date-time", + "type": "string" + }, + "MetadataExtraDimensions": { + "insertionOrder": false, + "items": { + "maxLength": 150, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.]+$", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z\\d\\-_:]+$", + "type": "string" + }, + "SignalCatalogArn": { + "type": "string" + }, + "StateTemplateProperties": { + "insertionOrder": false, + "items": { + "maxLength": 150, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.]+$", + "type": "string" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/CreationTime", + "/properties/LastModificationTime" + ], + "required": [ + "Name", + "SignalCatalogArn", + "StateTemplateProperties" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotfleetwise:ListTagsForResource", + "iotfleetwise:TagResource", + "iotfleetwise:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTFleetWise::StateTemplate" +} diff --git a/src/schema/aws-iotfleetwise-vehicle.json b/src/schema/aws-iotfleetwise-vehicle.json index 3b07afd1..3ec85ddc 100644 --- a/src/schema/aws-iotfleetwise-vehicle.json +++ b/src/schema/aws-iotfleetwise-vehicle.json @@ -1,155 +1,254 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "VehicleAssociationBehavior": { - "enum": [ - "CreateIotThing", - "ValidateIotThingExists" - ], - "type": "string" - }, - "attributesMap": { - "additionalProperties": false, - "minProperties": 1, - "patternProperties": { - "^[a-zA-Z0-9_.-]+$": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::IoTFleetWise::Vehicle Resource Type", - "handlers": { - "create": { - "permissions": [ - "iotfleetwise:GetVehicle", - "iotfleetwise:CreateVehicle", - "iot:CreateThing", - "iot:DescribeThing", - "iotfleetwise:ListTagsForResource", - "iotfleetwise:ListVehicles", - "iotfleetwise:TagResource" - ] - }, - "delete": { - "permissions": [ - "iotfleetwise:GetVehicle", - "iotfleetwise:DeleteVehicle" - ] - }, - "list": { - "permissions": [ - "iotfleetwise:ListVehicles" - ] - }, - "read": { - "permissions": [ - "iotfleetwise:GetVehicle", - "iotfleetwise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotfleetwise:GetVehicle", - "iotfleetwise:UpdateVehicle", - "iotfleetwise:ListTagsForResource", - "iotfleetwise:TagResource", - "iotfleetwise:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "type": "string" - }, - "AssociationBehavior": { - "$ref": "#/definitions/VehicleAssociationBehavior" - }, - "Attributes": { - "$ref": "#/definitions/attributesMap" - }, - "CreationTime": { - "format": "date-time", - "type": "string" - }, - "DecoderManifestArn": { - "type": "string" - }, - "LastModificationTime": { - "format": "date-time", - "type": "string" - }, - "ModelManifestArn": { - "type": "string" - }, - "Name": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z\\d\\-_:]+$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationTime", - "/properties/LastModificationTime" - ], - "required": [ - "Name", - "DecoderManifestArn", - "ModelManifestArn" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotfleetwise:UntagResource", - "iotfleetwise:TagResource", - "iotfleetwise:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTFleetWise::Vehicle", - "writeOnlyProperties": [ - "/properties/AssociationBehavior" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "OnChangeStateTemplateUpdateStrategy": { + "additionalProperties": false, + "type": "object" + }, + "PeriodicStateTemplateUpdateStrategy": { + "additionalProperties": false, + "properties": { + "StateTemplateUpdateRate": { + "$ref": "#/definitions/TimePeriod" + } + }, + "required": [ + "StateTemplateUpdateRate" + ], + "type": "object" + }, + "StateTemplateAssociation": { + "additionalProperties": false, + "minProperties": 0, + "properties": { + "Identifier": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "StateTemplateUpdateStrategy": { + "$ref": "#/definitions/StateTemplateUpdateStrategy" + } + }, + "required": [ + "Identifier", + "StateTemplateUpdateStrategy" + ], + "type": "object" + }, + "StateTemplateUpdateStrategy": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Periodic": { + "$ref": "#/definitions/PeriodicStateTemplateUpdateStrategy" + } + }, + "required": [ + "Periodic" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "OnChange": { + "$ref": "#/definitions/OnChangeStateTemplateUpdateStrategy" + } + }, + "required": [ + "OnChange" + ], + "type": "object" + } + ] + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TimePeriod": { + "additionalProperties": false, + "properties": { + "Unit": { + "$ref": "#/definitions/TimeUnit" + }, + "Value": { + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Unit", + "Value" + ], + "type": "object" + }, + "TimeUnit": { + "enum": [ + "MILLISECOND", + "SECOND", + "MINUTE", + "HOUR" + ], + "type": "string" + }, + "VehicleAssociationBehavior": { + "enum": [ + "CreateIotThing", + "ValidateIotThingExists" + ], + "type": "string" + }, + "attributesMap": { + "additionalProperties": false, + "minProperties": 1, + "patternProperties": { + "^[a-zA-Z0-9_.-]+$": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::IoTFleetWise::Vehicle Resource Type", + "handlers": { + "create": { + "permissions": [ + "iotfleetwise:GetVehicle", + "iotfleetwise:CreateVehicle", + "iot:CreateThing", + "iot:DescribeThing", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:ListVehicles", + "iotfleetwise:TagResource" + ] + }, + "delete": { + "permissions": [ + "iotfleetwise:GetVehicle", + "iotfleetwise:DeleteVehicle" + ] + }, + "list": { + "permissions": [ + "iotfleetwise:ListVehicles" + ] + }, + "read": { + "permissions": [ + "iotfleetwise:GetVehicle", + "iotfleetwise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotfleetwise:GetVehicle", + "iotfleetwise:UpdateVehicle", + "iotfleetwise:ListTagsForResource", + "iotfleetwise:TagResource", + "iotfleetwise:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AssociationBehavior": { + "$ref": "#/definitions/VehicleAssociationBehavior" + }, + "Attributes": { + "$ref": "#/definitions/attributesMap" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "DecoderManifestArn": { + "type": "string" + }, + "LastModificationTime": { + "format": "date-time", + "type": "string" + }, + "ModelManifestArn": { + "type": "string" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z\\d\\-_:]+$", + "type": "string" + }, + "StateTemplates": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StateTemplateAssociation" + }, + "maxItems": 20, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/LastModificationTime" + ], + "required": [ + "Name", + "DecoderManifestArn", + "ModelManifestArn" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotfleetwise:UntagResource", + "iotfleetwise:TagResource", + "iotfleetwise:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTFleetWise::Vehicle", + "writeOnlyProperties": [ + "/properties/AssociationBehavior" + ] +} diff --git a/src/schema/aws-iotsitewise-accesspolicy.json b/src/schema/aws-iotsitewise-accesspolicy.json index befee36b..45131d48 100644 --- a/src/schema/aws-iotsitewise-accesspolicy.json +++ b/src/schema/aws-iotsitewise-accesspolicy.json @@ -1,156 +1,160 @@ -{ - "additionalProperties": false, - "definitions": { - "AccessPolicyIdentity": { - "additionalProperties": false, - "description": "The identity for this access policy. Choose either an SSO user or group or an IAM user or role.", - "properties": { - "IamRole": { - "$ref": "#/definitions/IamRole" - }, - "IamUser": { - "$ref": "#/definitions/IamUser" - }, - "User": { - "$ref": "#/definitions/User" - } - }, - "type": "object" - }, - "AccessPolicyResource": { - "additionalProperties": false, - "description": "The AWS IoT SiteWise Monitor resource for this access policy. Choose either portal or project but not both.", - "properties": { - "Portal": { - "$ref": "#/definitions/Portal" - }, - "Project": { - "$ref": "#/definitions/Project" - } - }, - "type": "object" - }, - "IamRole": { - "additionalProperties": false, - "description": "Contains information for an IAM role identity in an access policy.", - "properties": { - "arn": { - "description": "The ARN of the IAM role.", - "type": "string" - } - }, - "type": "object" - }, - "IamUser": { - "additionalProperties": false, - "description": "Contains information for an IAM user identity in an access policy.", - "properties": { - "arn": { - "description": "The ARN of the IAM user.", - "type": "string" - } - }, - "type": "object" - }, - "Portal": { - "additionalProperties": false, - "description": "A portal resource.", - "properties": { - "id": { - "description": "The ID of the portal.", - "type": "string" - } - }, - "type": "object" - }, - "Project": { - "additionalProperties": false, - "description": "A project resource.", - "properties": { - "id": { - "description": "The ID of the project.", - "type": "string" - } - }, - "type": "object" - }, - "User": { - "additionalProperties": false, - "description": "Contains information for a user identity in an access policy.", - "properties": { - "id": { - "description": "The AWS SSO ID of the user.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::IoTSiteWise::AccessPolicy", - "handlers": { - "create": { - "permissions": [ - "iotsitewise:CreateAccessPolicy" - ] - }, - "delete": { - "permissions": [ - "iotsitewise:DescribeAccessPolicy", - "iotsitewise:DeleteAccessPolicy" - ] - }, - "list": { - "permissions": [ - "iotsitewise:ListAccessPolicies" - ] - }, - "read": { - "permissions": [ - "iotsitewise:DescribeAccessPolicy" - ] - }, - "update": { - "permissions": [ - "iotsitewise:DescribeAccessPolicy", - "iotsitewise:UpdateAccessPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/AccessPolicyId" - ], - "properties": { - "AccessPolicyArn": { - "description": "The ARN of the access policy.", - "type": "string" - }, - "AccessPolicyId": { - "description": "The ID of the access policy.", - "type": "string" - }, - "AccessPolicyIdentity": { - "$ref": "#/definitions/AccessPolicyIdentity", - "description": "The identity for this access policy. Choose either a user or a group but not both." - }, - "AccessPolicyPermission": { - "description": "The permission level for this access policy. Valid values are ADMINISTRATOR or VIEWER.", - "type": "string" - }, - "AccessPolicyResource": { - "$ref": "#/definitions/AccessPolicyResource", - "description": "The AWS IoT SiteWise Monitor resource for this access policy. Choose either portal or project but not both." - } - }, - "readOnlyProperties": [ - "/properties/AccessPolicyArn", - "/properties/AccessPolicyId" - ], - "required": [ - "AccessPolicyIdentity", - "AccessPolicyPermission", - "AccessPolicyResource" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", - "taggable": false, - "typeName": "AWS::IoTSiteWise::AccessPolicy" -} +{ + "additionalProperties": false, + "definitions": { + "AccessPolicyIdentity": { + "additionalProperties": false, + "description": "The identity for this access policy. Choose either an SSO user or group or an IAM user or role.", + "properties": { + "IamRole": { + "$ref": "#/definitions/IamRole" + }, + "IamUser": { + "$ref": "#/definitions/IamUser" + }, + "User": { + "$ref": "#/definitions/User" + } + }, + "type": "object" + }, + "AccessPolicyResource": { + "additionalProperties": false, + "description": "The AWS IoT SiteWise Monitor resource for this access policy. Choose either portal or project but not both.", + "properties": { + "Portal": { + "$ref": "#/definitions/Portal" + }, + "Project": { + "$ref": "#/definitions/Project" + } + }, + "type": "object" + }, + "IamRole": { + "additionalProperties": false, + "description": "Contains information for an IAM role identity in an access policy.", + "properties": { + "arn": { + "description": "The ARN of the IAM role.", + "type": "string" + } + }, + "type": "object" + }, + "IamUser": { + "additionalProperties": false, + "description": "Contains information for an IAM user identity in an access policy.", + "properties": { + "arn": { + "description": "The ARN of the IAM user.", + "type": "string" + } + }, + "type": "object" + }, + "Portal": { + "additionalProperties": false, + "description": "A portal resource.", + "properties": { + "id": { + "description": "The ID of the portal.", + "type": "string" + } + }, + "type": "object" + }, + "Project": { + "additionalProperties": false, + "description": "A project resource.", + "properties": { + "id": { + "description": "The ID of the project.", + "type": "string" + } + }, + "type": "object" + }, + "User": { + "additionalProperties": false, + "description": "Contains information for a user identity in an access policy.", + "properties": { + "id": { + "description": "The AWS SSO ID of the user.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::IoTSiteWise::AccessPolicy", + "handlers": { + "create": { + "permissions": [ + "iotsitewise:CreateAccessPolicy" + ] + }, + "delete": { + "permissions": [ + "iotsitewise:DescribeAccessPolicy", + "iotsitewise:DeleteAccessPolicy" + ] + }, + "list": { + "permissions": [ + "iotsitewise:ListAccessPolicies", + "iotsitewise:ListProjects", + "iotsitewise:ListPortals" + ] + }, + "read": { + "permissions": [ + "iotsitewise:DescribeAccessPolicy" + ] + }, + "update": { + "permissions": [ + "iotsitewise:DescribeAccessPolicy", + "iotsitewise:UpdateAccessPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccessPolicyId" + ], + "properties": { + "AccessPolicyArn": { + "description": "The ARN of the access policy.", + "type": "string" + }, + "AccessPolicyId": { + "description": "The ID of the access policy.", + "type": "string" + }, + "AccessPolicyIdentity": { + "$ref": "#/definitions/AccessPolicyIdentity", + "description": "The identity for this access policy. Choose either a user or a group but not both." + }, + "AccessPolicyPermission": { + "description": "The permission level for this access policy. Valid values are ADMINISTRATOR or VIEWER.", + "type": "string" + }, + "AccessPolicyResource": { + "$ref": "#/definitions/AccessPolicyResource", + "description": "The AWS IoT SiteWise Monitor resource for this access policy. Choose either portal or project but not both." + } + }, + "readOnlyProperties": [ + "/properties/AccessPolicyArn", + "/properties/AccessPolicyId" + ], + "required": [ + "AccessPolicyIdentity", + "AccessPolicyPermission", + "AccessPolicyResource" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::IoTSiteWise::AccessPolicy" +} diff --git a/src/schema/aws-iotsitewise-asset.json b/src/schema/aws-iotsitewise-asset.json index 3ca8be24..a76b6c77 100644 --- a/src/schema/aws-iotsitewise-asset.json +++ b/src/schema/aws-iotsitewise-asset.json @@ -1,237 +1,237 @@ -{ - "additionalProperties": false, - "definitions": { - "AssetHierarchy": { - "additionalProperties": false, - "description": "A hierarchy specifies allowed parent/child asset relationships.", - "properties": { - "ChildAssetId": { - "description": "The ID of the child asset to be associated.", - "type": "string" - }, - "ExternalId": { - "description": "String-friendly customer provided external ID", - "maxLength": 128, - "minLength": 2, - "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", - "type": "string" - }, - "Id": { - "description": "Customer provided actual UUID for property", - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - }, - "LogicalId": { - "description": "The LogicalID of a hierarchy in the parent asset's model.", - "maxLength": 256, - "minLength": 1, - "pattern": "[^\\u0000-\\u001F\\u007F]+", - "type": "string" - } - }, - "required": [ - "ChildAssetId" - ], - "type": "object" - }, - "AssetProperty": { - "additionalProperties": false, - "description": "The asset property's definition, alias, unit, and notification state.", - "properties": { - "Alias": { - "description": "The property alias that identifies the property.", - "type": "string" - }, - "ExternalId": { - "description": "String-friendly customer provided external ID", - "maxLength": 128, - "minLength": 2, - "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", - "type": "string" - }, - "Id": { - "description": "Customer provided actual UUID for property", - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - }, - "LogicalId": { - "description": "Customer provided ID for property.", - "maxLength": 256, - "minLength": 1, - "pattern": "[^\\u0000-\\u001F\\u007F]+", - "type": "string" - }, - "NotificationState": { - "description": "The MQTT notification state (ENABLED or DISABLED) for this asset property.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "Unit": { - "description": "The unit of measure (such as Newtons or RPM) of the asset property. If you don't specify a value for this parameter, the service uses the value of the assetModelProperty in the asset model.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::IoTSiteWise::Asset", - "handlers": { - "create": { - "permissions": [ - "iotsitewise:AssociateAssets", - "iotsitewise:CreateAsset", - "iotsitewise:DescribeAsset", - "iotsitewise:DescribeAssetModel", - "iotsitewise:ListAssociatedAssets", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iotsitewise:ListAssetModelProperties", - "iotsitewise:ListAssetProperties", - "iotsitewise:ListAssetModelCompositeModels", - "iotsitewise:UpdateAssetProperty" - ] - }, - "delete": { - "permissions": [ - "iotsitewise:DeleteAsset", - "iotsitewise:DescribeAsset", - "iotsitewise:DescribeAssetModel", - "iotsitewise:DisassociateAssets", - "iotsitewise:ListAssociatedAssets", - "iotsitewise:ListAssetProperties", - "iotsitewise:ListTagsForResource", - "iotsitewise:ListAssetModelCompositeModels", - "iotsitewise:ListAssetModelProperties", - "iotsitewise:ListAssetProperties" - ] - }, - "list": { - "permissions": [ - "iotsitewise:ListAssetModels", - "iotsitewise:ListAssets" - ] - }, - "read": { - "permissions": [ - "iotsitewise:DescribeAsset", - "iotsitewise:DescribeAssetModel", - "iotsitewise:ListAssociatedAssets", - "iotsitewise:ListAssetModelProperties", - "iotsitewise:ListAssetModelCompositeModels", - "iotsitewise:ListAssetProperties", - "iotsitewise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotsitewise:AssociateAssets", - "iotsitewise:DescribeAsset", - "iotsitewise:DescribeAssetModel", - "iotsitewise:DisassociateAssets", - "iotsitewise:ListAssociatedAssets", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iotsitewise:UpdateAsset", - "iotsitewise:UpdateAssetProperty", - "iotsitewise:ListAssetModelProperties", - "iotsitewise:ListAssetProperties", - "iotsitewise:ListAssetModelCompositeModels", - "iotsitewise:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AssetId" - ], - "properties": { - "AssetArn": { - "description": "The ARN of the asset", - "type": "string" - }, - "AssetDescription": { - "description": "A description for the asset", - "type": "string" - }, - "AssetExternalId": { - "description": "The External ID of the asset", - "maxLength": 128, - "minLength": 2, - "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", - "type": "string" - }, - "AssetHierarchies": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AssetHierarchy" - }, - "type": "array" - }, - "AssetId": { - "description": "The ID of the asset", - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - }, - "AssetModelId": { - "description": "The ID of the asset model from which to create the asset.", - "type": "string" - }, - "AssetName": { - "description": "A unique, friendly name for the asset.", - "type": "string" - }, - "AssetProperties": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AssetProperty" - }, - "type": "array" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the asset.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/AssetArn", - "/properties/AssetId", - "/properties/AssetProperties/*/Id", - "/properties/AssetHierarchies/*/Id" - ], - "required": [ - "AssetName", - "AssetModelId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", - "taggable": true, - "typeName": "AWS::IoTSiteWise::Asset" -} +{ + "additionalProperties": false, + "definitions": { + "AssetHierarchy": { + "additionalProperties": false, + "description": "A hierarchy specifies allowed parent/child asset relationships.", + "properties": { + "ChildAssetId": { + "description": "The ID of the child asset to be associated.", + "type": "string" + }, + "ExternalId": { + "description": "String-friendly customer provided external ID", + "maxLength": 128, + "minLength": 2, + "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", + "type": "string" + }, + "Id": { + "description": "Customer provided actual UUID for property", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + }, + "LogicalId": { + "description": "The LogicalID of a hierarchy in the parent asset's model.", + "maxLength": 256, + "minLength": 1, + "pattern": "[^\\u0000-\\u001F\\u007F]+", + "type": "string" + } + }, + "required": [ + "ChildAssetId" + ], + "type": "object" + }, + "AssetProperty": { + "additionalProperties": false, + "description": "The asset property's definition, alias, unit, and notification state.", + "properties": { + "Alias": { + "description": "The property alias that identifies the property.", + "type": "string" + }, + "ExternalId": { + "description": "String-friendly customer provided external ID", + "maxLength": 128, + "minLength": 2, + "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", + "type": "string" + }, + "Id": { + "description": "Customer provided actual UUID for property", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + }, + "LogicalId": { + "description": "Customer provided ID for property.", + "maxLength": 256, + "minLength": 1, + "pattern": "[^\\u0000-\\u001F\\u007F]+", + "type": "string" + }, + "NotificationState": { + "description": "The MQTT notification state (ENABLED or DISABLED) for this asset property.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Unit": { + "description": "The unit of measure (such as Newtons or RPM) of the asset property. If you don't specify a value for this parameter, the service uses the value of the assetModelProperty in the asset model.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::IoTSiteWise::Asset", + "handlers": { + "create": { + "permissions": [ + "iotsitewise:AssociateAssets", + "iotsitewise:CreateAsset", + "iotsitewise:DescribeAsset", + "iotsitewise:DescribeAssetModel", + "iotsitewise:ListAssociatedAssets", + "iotsitewise:ListTagsForResource", + "iotsitewise:TagResource", + "iotsitewise:ListAssetModelProperties", + "iotsitewise:ListAssetProperties", + "iotsitewise:ListAssetModelCompositeModels", + "iotsitewise:UpdateAssetProperty" + ] + }, + "delete": { + "permissions": [ + "iotsitewise:DeleteAsset", + "iotsitewise:DescribeAsset", + "iotsitewise:DescribeAssetModel", + "iotsitewise:DisassociateAssets", + "iotsitewise:ListAssociatedAssets", + "iotsitewise:ListAssetProperties", + "iotsitewise:ListTagsForResource", + "iotsitewise:ListAssetModelCompositeModels", + "iotsitewise:ListAssetModelProperties", + "iotsitewise:ListAssetProperties" + ] + }, + "list": { + "permissions": [ + "iotsitewise:ListAssetModels", + "iotsitewise:ListAssets" + ] + }, + "read": { + "permissions": [ + "iotsitewise:DescribeAsset", + "iotsitewise:DescribeAssetModel", + "iotsitewise:ListAssociatedAssets", + "iotsitewise:ListAssetModelProperties", + "iotsitewise:ListAssetModelCompositeModels", + "iotsitewise:ListAssetProperties", + "iotsitewise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotsitewise:AssociateAssets", + "iotsitewise:DescribeAsset", + "iotsitewise:DescribeAssetModel", + "iotsitewise:DisassociateAssets", + "iotsitewise:ListAssociatedAssets", + "iotsitewise:ListTagsForResource", + "iotsitewise:TagResource", + "iotsitewise:UpdateAsset", + "iotsitewise:UpdateAssetProperty", + "iotsitewise:ListAssetModelProperties", + "iotsitewise:ListAssetProperties", + "iotsitewise:ListAssetModelCompositeModels", + "iotsitewise:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AssetId" + ], + "properties": { + "AssetArn": { + "description": "The ARN of the asset", + "type": "string" + }, + "AssetDescription": { + "description": "A description for the asset", + "type": "string" + }, + "AssetExternalId": { + "description": "The External ID of the asset", + "maxLength": 128, + "minLength": 2, + "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", + "type": "string" + }, + "AssetHierarchies": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AssetHierarchy" + }, + "type": "array" + }, + "AssetId": { + "description": "The ID of the asset", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + }, + "AssetModelId": { + "description": "The ID of the asset model from which to create the asset.", + "type": "string" + }, + "AssetName": { + "description": "A unique, friendly name for the asset.", + "type": "string" + }, + "AssetProperties": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AssetProperty" + }, + "type": "array" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the asset.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AssetArn", + "/properties/AssetId", + "/properties/AssetProperties/*/Id", + "/properties/AssetHierarchies/*/Id" + ], + "required": [ + "AssetName", + "AssetModelId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", + "taggable": true, + "typeName": "AWS::IoTSiteWise::Asset" +} diff --git a/src/schema/aws-iotsitewise-assetmodel.json b/src/schema/aws-iotsitewise-assetmodel.json index f78432dd..e2ff16f9 100644 --- a/src/schema/aws-iotsitewise-assetmodel.json +++ b/src/schema/aws-iotsitewise-assetmodel.json @@ -1,566 +1,566 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AssetModelType" - ], - "definitions": { - "AssetModelCompositeModel": { - "additionalProperties": false, - "description": "Contains a composite model definition in an asset model. This composite model definition is applied to all assets created from the asset model.", - "properties": { - "ComposedAssetModelId": { - "description": "The component model ID for which the composite model is composed of", - "type": "string" - }, - "CompositeModelProperties": { - "description": "The property definitions of the asset model. You can specify up to 200 properties per asset model.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AssetModelProperty" - }, - "type": "array" - }, - "Description": { - "description": "A description for the asset composite model.", - "type": "string" - }, - "ExternalId": { - "description": "The External ID of the composite model", - "maxLength": 128, - "minLength": 2, - "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", - "type": "string" - }, - "Id": { - "description": "The Actual ID of the composite model", - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - }, - "Name": { - "description": "A unique, friendly name for the asset composite model.", - "type": "string" - }, - "ParentAssetModelCompositeModelExternalId": { - "description": "The parent composite model External ID", - "maxLength": 128, - "minLength": 2, - "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", - "type": "string" - }, - "Path": { - "description": "The path of the composite model. This is only for derived composite models", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "Type": { - "description": "The type of the composite model. For alarm composite models, this type is AWS/ALARM", - "type": "string" - } - }, - "required": [ - "Name", - "Type" - ], - "type": "object" - }, - "AssetModelHierarchy": { - "additionalProperties": false, - "description": "Contains information about an asset model hierarchy.", - "properties": { - "ChildAssetModelId": { - "description": "The ID of the asset model. All assets in this hierarchy must be instances of the child AssetModelId asset model.", - "type": "string" - }, - "ExternalId": { - "description": "Customer provided external ID for hierarchy", - "maxLength": 128, - "minLength": 2, - "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", - "type": "string" - }, - "Id": { - "description": "Customer provided actual ID for hierarchy", - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - }, - "LogicalId": { - "description": "Customer provided logical ID for hierarchy.", - "maxLength": 256, - "minLength": 1, - "pattern": "[^\\u0000-\\u001F\\u007F]+", - "type": "string" - }, - "Name": { - "description": "The name of the asset model hierarchy.", - "type": "string" - } - }, - "required": [ - "Name", - "ChildAssetModelId" - ], - "type": "object" - }, - "AssetModelProperty": { - "additionalProperties": false, - "description": "Contains information about an asset model property.", - "properties": { - "DataType": { - "$ref": "#/definitions/DataType", - "description": "The data type of the asset model property." - }, - "DataTypeSpec": { - "$ref": "#/definitions/DataTypeSpec", - "description": "The data type of the structure for this property." - }, - "ExternalId": { - "description": "The External ID of the Asset Model Property", - "maxLength": 128, - "minLength": 2, - "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", - "type": "string" - }, - "Id": { - "description": "The ID of the Asset Model Property", - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - }, - "LogicalId": { - "description": "Customer provided Logical ID for property.", - "maxLength": 256, - "minLength": 1, - "pattern": "[^\\u0000-\\u001F\\u007F]+", - "type": "string" - }, - "Name": { - "description": "The name of the asset model property.", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/PropertyType", - "description": "The property type" - }, - "Unit": { - "description": "The unit of the asset model property, such as Newtons or RPM.", - "type": "string" - } - }, - "required": [ - "Name", - "DataType", - "Type" - ], - "type": "object" - }, - "Attribute": { - "additionalProperties": false, - "properties": { - "DefaultValue": { - "type": "string" - } - }, - "type": "object" - }, - "DataType": { - "enum": [ - "STRING", - "INTEGER", - "DOUBLE", - "BOOLEAN", - "STRUCT" - ], - "type": "string" - }, - "DataTypeSpec": { - "enum": [ - "AWS/ALARM_STATE" - ], - "type": "string" - }, - "ExpressionVariable": { - "additionalProperties": false, - "properties": { - "Name": { - "description": "The friendly name of the variable to be used in the expression.", - "type": "string" - }, - "Value": { - "$ref": "#/definitions/VariableValue", - "description": "The variable that identifies an asset property from which to use values." - } - }, - "required": [ - "Name", - "Value" - ], - "type": "object" - }, - "Interval": { - "description": "The time interval for the tumbling window.", - "type": "string" - }, - "Metric": { - "additionalProperties": false, - "properties": { - "Expression": { - "description": "The mathematical expression that defines the metric aggregation function. You can specify up to 10 functions per expression.", - "type": "string" - }, - "Variables": { - "description": "The list of variables used in the expression.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ExpressionVariable" - }, - "type": "array" - }, - "Window": { - "$ref": "#/definitions/MetricWindow", - "description": "The window (time interval) over which AWS IoT SiteWise computes the metric's aggregation expression" - } - }, - "required": [ - "Expression", - "Variables", - "Window" - ], - "type": "object" - }, - "MetricWindow": { - "additionalProperties": false, - "description": "Contains a time interval window used for data aggregate computations (for example, average, sum, count, and so on).", - "properties": { - "Tumbling": { - "$ref": "#/definitions/TumblingWindow" - } - }, - "type": "object" - }, - "Offset": { - "description": "The shift or reference point on timeline for the contiguous time intervals.", - "type": "string" - }, - "PropertyPathDefinition": { - "additionalProperties": false, - "description": "The definition for property path which is used to reference properties in transforms/metrics", - "properties": { - "Name": { - "description": "The name of the property", - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "PropertyType": { - "additionalProperties": false, - "description": "Contains a property type, which can be one of attribute, measurement, metric, or transform.", - "properties": { - "Attribute": { - "$ref": "#/definitions/Attribute" - }, - "Metric": { - "$ref": "#/definitions/Metric" - }, - "Transform": { - "$ref": "#/definitions/Transform" - }, - "TypeName": { - "$ref": "#/definitions/TypeName" - } - }, - "required": [ - "TypeName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Transform": { - "additionalProperties": false, - "properties": { - "Expression": { - "description": "The mathematical expression that defines the transformation function. You can specify up to 10 functions per expression.", - "type": "string" - }, - "Variables": { - "description": "The list of variables used in the expression.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ExpressionVariable" - }, - "type": "array" - } - }, - "required": [ - "Expression", - "Variables" - ], - "type": "object" - }, - "TumblingWindow": { - "additionalProperties": false, - "description": "Contains a tumbling window, which is a repeating fixed-sized, non-overlapping, and contiguous time interval. This window is used in metric and aggregation computations.", - "properties": { - "Interval": { - "$ref": "#/definitions/Interval" - }, - "Offset": { - "$ref": "#/definitions/Offset" - } - }, - "required": [ - "Interval" - ], - "type": "object" - }, - "TypeName": { - "enum": [ - "Measurement", - "Attribute", - "Transform", - "Metric" - ], - "type": "string" - }, - "VariableValue": { - "additionalProperties": false, - "properties": { - "HierarchyExternalId": { - "description": "The External ID of the hierarchy that is trying to be referenced", - "maxLength": 128, - "minLength": 2, - "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", - "type": "string" - }, - "HierarchyId": { - "description": "The ID of the hierarchy that is trying to be referenced", - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - }, - "HierarchyLogicalId": { - "maxLength": 256, - "minLength": 1, - "pattern": "[^\\u0000-\\u001F\\u007F]+", - "type": "string" - }, - "PropertyExternalId": { - "description": "The External ID of the property that is trying to be referenced", - "maxLength": 128, - "minLength": 2, - "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", - "type": "string" - }, - "PropertyId": { - "description": "The ID of the property that is trying to be referenced", - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - }, - "PropertyLogicalId": { - "maxLength": 256, - "minLength": 1, - "pattern": "[^\\u0000-\\u001F\\u007F]+", - "type": "string" - }, - "PropertyPath": { - "description": "The path of the property that is trying to be referenced", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PropertyPathDefinition" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::IoTSiteWise::AssetModel", - "handlers": { - "create": { - "permissions": [ - "iotsitewise:CreateAssetModel", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iotsitewise:DescribeAssetModel", - "iotsitewise:UpdateAssetModel", - "iotsitewise:ListAssetModelProperties", - "iotsitewise:ListAssetModelCompositeModels", - "iotsitewise:UpdateAssetModelCompositeModel", - "iotsitewise:DescribeAssetModelCompositeModel", - "iotsitewise:CreateAssetModelCompositeModel" - ] - }, - "delete": { - "permissions": [ - "iotsitewise:DescribeAssetModel", - "iotsitewise:DeleteAssetModel", - "iotsitewise:ListAssetModelProperties", - "iotsitewise:ListAssetModelCompositeModels" - ] - }, - "list": { - "permissions": [ - "iotsitewise:DescribeAssetModel", - "iotsitewise:ListAssetModels", - "iotsitewise:ListTagsForResource", - "iotsitewise:ListAssetModelProperties", - "iotsitewise:ListAssetModelCompositeModels" - ] - }, - "read": { - "permissions": [ - "iotsitewise:DescribeAssetModel", - "iotsitewise:ListAssetModelProperties", - "iotsitewise:DescribeAssetModelCompositeModel", - "iotsitewise:ListAssetModelCompositeModels", - "iotsitewise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotsitewise:DescribeAssetModel", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iotsitewise:UntagResource", - "iotsitewise:ListAssetModelProperties", - "iotsitewise:ListAssetModelCompositeModels", - "iotsitewise:CreateAssetModelCompositeModel", - "iotsitewise:UpdateAssetModelCompositeModel", - "iotsitewise:DeleteAssetModelCompositeModel", - "iotsitewise:DescribeAssetModelCompositeModel", - "iotsitewise:UpdateAssetModel" - ] - } - }, - "primaryIdentifier": [ - "/properties/AssetModelId" - ], - "properties": { - "AssetModelArn": { - "description": "The ARN of the asset model, which has the following format.", - "type": "string" - }, - "AssetModelCompositeModels": { - "description": "The composite asset models that are part of this asset model. Composite asset models are asset models that contain specific properties.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AssetModelCompositeModel" - }, - "type": "array" - }, - "AssetModelDescription": { - "description": "A description for the asset model.", - "type": "string" - }, - "AssetModelExternalId": { - "description": "The external ID of the asset model.", - "maxLength": 128, - "minLength": 2, - "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", - "type": "string" - }, - "AssetModelHierarchies": { - "description": "The hierarchy definitions of the asset model. Each hierarchy specifies an asset model whose assets can be children of any other assets created from this asset model. You can specify up to 10 hierarchies per asset model.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AssetModelHierarchy" - }, - "type": "array" - }, - "AssetModelId": { - "description": "The ID of the asset model.", - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - }, - "AssetModelName": { - "description": "A unique, friendly name for the asset model.", - "type": "string" - }, - "AssetModelProperties": { - "description": "The property definitions of the asset model. You can specify up to 200 properties per asset model.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AssetModelProperty" - }, - "type": "array" - }, - "AssetModelType": { - "description": "The type of the asset model (ASSET_MODEL OR COMPONENT_MODEL)", - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the asset model.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/AssetModelArn", - "/properties/AssetModelId", - "/properties/AssetModelProperties/*/Id", - "/properties/AssetModelProperties/*/Type/Transform/Variables/*/Value/PropertyId", - "/properties/AssetModelProperties/*/Type/Metric/Variables/*/Value/PropertyId", - "/properties/AssetModelHierarchies/*/Id", - "/properties/AssetModelCompositeModels/*/Id", - "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Id", - "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/PropertyId", - "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Type/Metric/Variables/*/Value/PropertyId" - ], - "required": [ - "AssetModelName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", - "taggable": true, - "typeName": "AWS::IoTSiteWise::AssetModel", - "writeOnlyProperties": [ - "/properties/AssetModelProperties/*/DataTypeSpec", - "/properties/AssetModelProperties/*/Type/Transform/Variables/*/Value/HierarchyLogicalId", - "/properties/AssetModelProperties/*/Type/Transform/Variables/*/Value/HierarchyId", - "/properties/AssetModelProperties/*/Type/Metric/Variables/*/Value/HierarchyId", - "/properties/AssetModelProperties/*/Type/Transform/Variables/*/Value/HierarchyExternalId", - "/properties/AssetModelProperties/*/Type/Metric/Variables/*/Value/PropertyPath/*/Name", - "/properties/AssetModelProperties/*/Type/Transform/Variables/*/Value/PropertyPath/*/Name", - "/properties/AssetModelProperties/*/Type/Transform/Variables/*/Value/HierarchyExternalId", - "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/HierarchyId", - "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Type/Metric/Variables/*/Value/HierarchyId", - "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/HierarchyLogicalId", - "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/HierarchyExternalId", - "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/PropertyPath/*/Name", - "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Type/Metric/Variables/*/Value/PropertyPath/*/Name", - "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/DataTypeSpec" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AssetModelType" + ], + "definitions": { + "AssetModelCompositeModel": { + "additionalProperties": false, + "description": "Contains a composite model definition in an asset model. This composite model definition is applied to all assets created from the asset model.", + "properties": { + "ComposedAssetModelId": { + "description": "The component model ID for which the composite model is composed of", + "type": "string" + }, + "CompositeModelProperties": { + "description": "The property definitions of the asset model. You can specify up to 200 properties per asset model.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AssetModelProperty" + }, + "type": "array" + }, + "Description": { + "description": "A description for the asset composite model.", + "type": "string" + }, + "ExternalId": { + "description": "The External ID of the composite model", + "maxLength": 128, + "minLength": 2, + "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", + "type": "string" + }, + "Id": { + "description": "The Actual ID of the composite model", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + }, + "Name": { + "description": "A unique, friendly name for the asset composite model.", + "type": "string" + }, + "ParentAssetModelCompositeModelExternalId": { + "description": "The parent composite model External ID", + "maxLength": 128, + "minLength": 2, + "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", + "type": "string" + }, + "Path": { + "description": "The path of the composite model. This is only for derived composite models", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "Type": { + "description": "The type of the composite model. For alarm composite models, this type is AWS/ALARM", + "type": "string" + } + }, + "required": [ + "Name", + "Type" + ], + "type": "object" + }, + "AssetModelHierarchy": { + "additionalProperties": false, + "description": "Contains information about an asset model hierarchy.", + "properties": { + "ChildAssetModelId": { + "description": "The ID of the asset model. All assets in this hierarchy must be instances of the child AssetModelId asset model.", + "type": "string" + }, + "ExternalId": { + "description": "Customer provided external ID for hierarchy", + "maxLength": 128, + "minLength": 2, + "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", + "type": "string" + }, + "Id": { + "description": "Customer provided actual ID for hierarchy", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + }, + "LogicalId": { + "description": "Customer provided logical ID for hierarchy.", + "maxLength": 256, + "minLength": 1, + "pattern": "[^\\u0000-\\u001F\\u007F]+", + "type": "string" + }, + "Name": { + "description": "The name of the asset model hierarchy.", + "type": "string" + } + }, + "required": [ + "Name", + "ChildAssetModelId" + ], + "type": "object" + }, + "AssetModelProperty": { + "additionalProperties": false, + "description": "Contains information about an asset model property.", + "properties": { + "DataType": { + "$ref": "#/definitions/DataType", + "description": "The data type of the asset model property." + }, + "DataTypeSpec": { + "$ref": "#/definitions/DataTypeSpec", + "description": "The data type of the structure for this property." + }, + "ExternalId": { + "description": "The External ID of the Asset Model Property", + "maxLength": 128, + "minLength": 2, + "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", + "type": "string" + }, + "Id": { + "description": "The ID of the Asset Model Property", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + }, + "LogicalId": { + "description": "Customer provided Logical ID for property.", + "maxLength": 256, + "minLength": 1, + "pattern": "[^\\u0000-\\u001F\\u007F]+", + "type": "string" + }, + "Name": { + "description": "The name of the asset model property.", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/PropertyType", + "description": "The property type" + }, + "Unit": { + "description": "The unit of the asset model property, such as Newtons or RPM.", + "type": "string" + } + }, + "required": [ + "Name", + "DataType", + "Type" + ], + "type": "object" + }, + "Attribute": { + "additionalProperties": false, + "properties": { + "DefaultValue": { + "type": "string" + } + }, + "type": "object" + }, + "DataType": { + "enum": [ + "STRING", + "INTEGER", + "DOUBLE", + "BOOLEAN", + "STRUCT" + ], + "type": "string" + }, + "DataTypeSpec": { + "enum": [ + "AWS/ALARM_STATE" + ], + "type": "string" + }, + "ExpressionVariable": { + "additionalProperties": false, + "properties": { + "Name": { + "description": "The friendly name of the variable to be used in the expression.", + "type": "string" + }, + "Value": { + "$ref": "#/definitions/VariableValue", + "description": "The variable that identifies an asset property from which to use values." + } + }, + "required": [ + "Name", + "Value" + ], + "type": "object" + }, + "Interval": { + "description": "The time interval for the tumbling window.", + "type": "string" + }, + "Metric": { + "additionalProperties": false, + "properties": { + "Expression": { + "description": "The mathematical expression that defines the metric aggregation function. You can specify up to 10 functions per expression.", + "type": "string" + }, + "Variables": { + "description": "The list of variables used in the expression.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ExpressionVariable" + }, + "type": "array" + }, + "Window": { + "$ref": "#/definitions/MetricWindow", + "description": "The window (time interval) over which AWS IoT SiteWise computes the metric's aggregation expression" + } + }, + "required": [ + "Expression", + "Variables", + "Window" + ], + "type": "object" + }, + "MetricWindow": { + "additionalProperties": false, + "description": "Contains a time interval window used for data aggregate computations (for example, average, sum, count, and so on).", + "properties": { + "Tumbling": { + "$ref": "#/definitions/TumblingWindow" + } + }, + "type": "object" + }, + "Offset": { + "description": "The shift or reference point on timeline for the contiguous time intervals.", + "type": "string" + }, + "PropertyPathDefinition": { + "additionalProperties": false, + "description": "The definition for property path which is used to reference properties in transforms/metrics", + "properties": { + "Name": { + "description": "The name of the property", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "PropertyType": { + "additionalProperties": false, + "description": "Contains a property type, which can be one of attribute, measurement, metric, or transform.", + "properties": { + "Attribute": { + "$ref": "#/definitions/Attribute" + }, + "Metric": { + "$ref": "#/definitions/Metric" + }, + "Transform": { + "$ref": "#/definitions/Transform" + }, + "TypeName": { + "$ref": "#/definitions/TypeName" + } + }, + "required": [ + "TypeName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "Transform": { + "additionalProperties": false, + "properties": { + "Expression": { + "description": "The mathematical expression that defines the transformation function. You can specify up to 10 functions per expression.", + "type": "string" + }, + "Variables": { + "description": "The list of variables used in the expression.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ExpressionVariable" + }, + "type": "array" + } + }, + "required": [ + "Expression", + "Variables" + ], + "type": "object" + }, + "TumblingWindow": { + "additionalProperties": false, + "description": "Contains a tumbling window, which is a repeating fixed-sized, non-overlapping, and contiguous time interval. This window is used in metric and aggregation computations.", + "properties": { + "Interval": { + "$ref": "#/definitions/Interval" + }, + "Offset": { + "$ref": "#/definitions/Offset" + } + }, + "required": [ + "Interval" + ], + "type": "object" + }, + "TypeName": { + "enum": [ + "Measurement", + "Attribute", + "Transform", + "Metric" + ], + "type": "string" + }, + "VariableValue": { + "additionalProperties": false, + "properties": { + "HierarchyExternalId": { + "description": "The External ID of the hierarchy that is trying to be referenced", + "maxLength": 128, + "minLength": 2, + "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", + "type": "string" + }, + "HierarchyId": { + "description": "The ID of the hierarchy that is trying to be referenced", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + }, + "HierarchyLogicalId": { + "maxLength": 256, + "minLength": 1, + "pattern": "[^\\u0000-\\u001F\\u007F]+", + "type": "string" + }, + "PropertyExternalId": { + "description": "The External ID of the property that is trying to be referenced", + "maxLength": 128, + "minLength": 2, + "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", + "type": "string" + }, + "PropertyId": { + "description": "The ID of the property that is trying to be referenced", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + }, + "PropertyLogicalId": { + "maxLength": 256, + "minLength": 1, + "pattern": "[^\\u0000-\\u001F\\u007F]+", + "type": "string" + }, + "PropertyPath": { + "description": "The path of the property that is trying to be referenced", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PropertyPathDefinition" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::IoTSiteWise::AssetModel", + "handlers": { + "create": { + "permissions": [ + "iotsitewise:CreateAssetModel", + "iotsitewise:ListTagsForResource", + "iotsitewise:TagResource", + "iotsitewise:DescribeAssetModel", + "iotsitewise:UpdateAssetModel", + "iotsitewise:ListAssetModelProperties", + "iotsitewise:ListAssetModelCompositeModels", + "iotsitewise:UpdateAssetModelCompositeModel", + "iotsitewise:DescribeAssetModelCompositeModel", + "iotsitewise:CreateAssetModelCompositeModel" + ] + }, + "delete": { + "permissions": [ + "iotsitewise:DescribeAssetModel", + "iotsitewise:DeleteAssetModel", + "iotsitewise:ListAssetModelProperties", + "iotsitewise:ListAssetModelCompositeModels" + ] + }, + "list": { + "permissions": [ + "iotsitewise:DescribeAssetModel", + "iotsitewise:ListAssetModels", + "iotsitewise:ListTagsForResource", + "iotsitewise:ListAssetModelProperties", + "iotsitewise:ListAssetModelCompositeModels" + ] + }, + "read": { + "permissions": [ + "iotsitewise:DescribeAssetModel", + "iotsitewise:ListAssetModelProperties", + "iotsitewise:DescribeAssetModelCompositeModel", + "iotsitewise:ListAssetModelCompositeModels", + "iotsitewise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotsitewise:DescribeAssetModel", + "iotsitewise:ListTagsForResource", + "iotsitewise:TagResource", + "iotsitewise:UntagResource", + "iotsitewise:ListAssetModelProperties", + "iotsitewise:ListAssetModelCompositeModels", + "iotsitewise:CreateAssetModelCompositeModel", + "iotsitewise:UpdateAssetModelCompositeModel", + "iotsitewise:DeleteAssetModelCompositeModel", + "iotsitewise:DescribeAssetModelCompositeModel", + "iotsitewise:UpdateAssetModel" + ] + } + }, + "primaryIdentifier": [ + "/properties/AssetModelId" + ], + "properties": { + "AssetModelArn": { + "description": "The ARN of the asset model, which has the following format.", + "type": "string" + }, + "AssetModelCompositeModels": { + "description": "The composite asset models that are part of this asset model. Composite asset models are asset models that contain specific properties.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AssetModelCompositeModel" + }, + "type": "array" + }, + "AssetModelDescription": { + "description": "A description for the asset model.", + "type": "string" + }, + "AssetModelExternalId": { + "description": "The external ID of the asset model.", + "maxLength": 128, + "minLength": 2, + "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+", + "type": "string" + }, + "AssetModelHierarchies": { + "description": "The hierarchy definitions of the asset model. Each hierarchy specifies an asset model whose assets can be children of any other assets created from this asset model. You can specify up to 10 hierarchies per asset model.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AssetModelHierarchy" + }, + "type": "array" + }, + "AssetModelId": { + "description": "The ID of the asset model.", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + }, + "AssetModelName": { + "description": "A unique, friendly name for the asset model.", + "type": "string" + }, + "AssetModelProperties": { + "description": "The property definitions of the asset model. You can specify up to 200 properties per asset model.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AssetModelProperty" + }, + "type": "array" + }, + "AssetModelType": { + "description": "The type of the asset model (ASSET_MODEL OR COMPONENT_MODEL)", + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the asset model.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/AssetModelArn", + "/properties/AssetModelId", + "/properties/AssetModelProperties/*/Id", + "/properties/AssetModelProperties/*/Type/Transform/Variables/*/Value/PropertyId", + "/properties/AssetModelProperties/*/Type/Metric/Variables/*/Value/PropertyId", + "/properties/AssetModelHierarchies/*/Id", + "/properties/AssetModelCompositeModels/*/Id", + "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Id", + "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/PropertyId", + "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Type/Metric/Variables/*/Value/PropertyId" + ], + "required": [ + "AssetModelName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", + "taggable": true, + "typeName": "AWS::IoTSiteWise::AssetModel", + "writeOnlyProperties": [ + "/properties/AssetModelProperties/*/DataTypeSpec", + "/properties/AssetModelProperties/*/Type/Transform/Variables/*/Value/HierarchyLogicalId", + "/properties/AssetModelProperties/*/Type/Transform/Variables/*/Value/HierarchyId", + "/properties/AssetModelProperties/*/Type/Metric/Variables/*/Value/HierarchyId", + "/properties/AssetModelProperties/*/Type/Transform/Variables/*/Value/HierarchyExternalId", + "/properties/AssetModelProperties/*/Type/Metric/Variables/*/Value/PropertyPath/*/Name", + "/properties/AssetModelProperties/*/Type/Transform/Variables/*/Value/PropertyPath/*/Name", + "/properties/AssetModelProperties/*/Type/Transform/Variables/*/Value/HierarchyExternalId", + "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/HierarchyId", + "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Type/Metric/Variables/*/Value/HierarchyId", + "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/HierarchyLogicalId", + "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/HierarchyExternalId", + "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/PropertyPath/*/Name", + "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/Type/Metric/Variables/*/Value/PropertyPath/*/Name", + "/properties/AssetModelCompositeModels/*/CompositeModelProperties/*/DataTypeSpec" + ] +} diff --git a/src/schema/aws-iotsitewise-dashboard.json b/src/schema/aws-iotsitewise-dashboard.json index c82b8551..875b90fc 100644 --- a/src/schema/aws-iotsitewise-dashboard.json +++ b/src/schema/aws-iotsitewise-dashboard.json @@ -1,137 +1,139 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/DashboardArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProjectId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "To add or update tag, provide both key and value. To delete tag, provide only tag key to be deleted", - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::IoTSiteWise::Dashboard", - "handlers": { - "create": { - "permissions": [ - "iotsitewise:CreateDashboard", - "iotsitewise:DescribeDashboard", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iotsitewise:DescribeAsset", - "iotsitewise:DescribeAssetModel", - "iotsitewise:ListAssetModelProperties", - "iotsitewise:ListAssetModelCompositeModels" - ] - }, - "delete": { - "permissions": [ - "iotsitewise:DescribeDashboard", - "iotsitewise:DeleteDashboard" - ] - }, - "list": { - "permissions": [ - "iotsitewise:ListDashboards", - "iotsitewise:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "iotsitewise:DescribeDashboard", - "iotsitewise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotsitewise:DescribeDashboard", - "iotsitewise:UpdateDashboard", - "iotsitewise:TagResource", - "iotsitewise:UntagResource", - "iotsitewise:ListTagsForResource", - "iotsitewise:DescribeAsset", - "iotsitewise:DescribeAssetModel", - "iotsitewise:ListAssetModelProperties", - "iotsitewise:ListAssetModelCompositeModels" - ] - } - }, - "primaryIdentifier": [ - "/properties/DashboardId" - ], - "properties": { - "DashboardArn": { - "description": "The ARN of the dashboard.", - "type": "string" - }, - "DashboardDefinition": { - "description": "The dashboard definition specified in a JSON literal.", - "type": "string" - }, - "DashboardDescription": { - "description": "A description for the dashboard.", - "type": "string" - }, - "DashboardId": { - "description": "The ID of the dashboard.", - "type": "string" - }, - "DashboardName": { - "description": "A friendly name for the dashboard.", - "type": "string" - }, - "ProjectId": { - "description": "The ID of the project in which to create the dashboard.", - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the dashboard.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/DashboardArn", - "/properties/DashboardId" - ], - "required": [ - "DashboardDefinition", - "DashboardDescription", - "DashboardName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iotsitewise.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotsitewise:TagResource", - "iotsitewise:UntagResource", - "iotsitewise:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTSiteWise::Dashboard" -} +{ + "additionalIdentifiers": [ + [ + "/properties/DashboardArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ProjectId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "To add or update tag, provide both key and value. To delete tag, provide only tag key to be deleted", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::IoTSiteWise::Dashboard", + "handlers": { + "create": { + "permissions": [ + "iotsitewise:CreateDashboard", + "iotsitewise:DescribeDashboard", + "iotsitewise:ListTagsForResource", + "iotsitewise:TagResource", + "iotsitewise:DescribeAsset", + "iotsitewise:DescribeAssetModel", + "iotsitewise:ListAssetModelProperties", + "iotsitewise:ListAssetModelCompositeModels" + ] + }, + "delete": { + "permissions": [ + "iotsitewise:DescribeDashboard", + "iotsitewise:DeleteDashboard" + ] + }, + "list": { + "permissions": [ + "iotsitewise:ListDashboards", + "iotsitewise:ListPortals", + "iotsitewise:ListProjects", + "iotsitewise:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iotsitewise:DescribeDashboard", + "iotsitewise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotsitewise:DescribeDashboard", + "iotsitewise:UpdateDashboard", + "iotsitewise:TagResource", + "iotsitewise:UntagResource", + "iotsitewise:ListTagsForResource", + "iotsitewise:DescribeAsset", + "iotsitewise:DescribeAssetModel", + "iotsitewise:ListAssetModelProperties", + "iotsitewise:ListAssetModelCompositeModels" + ] + } + }, + "primaryIdentifier": [ + "/properties/DashboardId" + ], + "properties": { + "DashboardArn": { + "description": "The ARN of the dashboard.", + "type": "string" + }, + "DashboardDefinition": { + "description": "The dashboard definition specified in a JSON literal.", + "type": "string" + }, + "DashboardDescription": { + "description": "A description for the dashboard.", + "type": "string" + }, + "DashboardId": { + "description": "The ID of the dashboard.", + "type": "string" + }, + "DashboardName": { + "description": "A friendly name for the dashboard.", + "type": "string" + }, + "ProjectId": { + "description": "The ID of the project in which to create the dashboard.", + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the dashboard.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/DashboardArn", + "/properties/DashboardId" + ], + "required": [ + "DashboardDefinition", + "DashboardDescription", + "DashboardName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iotsitewise.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotsitewise:TagResource", + "iotsitewise:UntagResource", + "iotsitewise:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTSiteWise::Dashboard" +} diff --git a/src/schema/aws-iotsitewise-dataset.json b/src/schema/aws-iotsitewise-dataset.json new file mode 100644 index 00000000..49a69b66 --- /dev/null +++ b/src/schema/aws-iotsitewise-dataset.json @@ -0,0 +1,177 @@ +{ + "additionalProperties": false, + "definitions": { + "DatasetSource": { + "additionalProperties": false, + "properties": { + "SourceDetail": { + "$ref": "#/definitions/SourceDetail", + "description": "The details of the dataset source associated with the dataset." + }, + "SourceFormat": { + "description": "The format of the dataset source associated with the dataset.", + "enum": [ + "KNOWLEDGE_BASE" + ], + "type": "string" + }, + "SourceType": { + "description": "The type of data source for the dataset.", + "enum": [ + "KENDRA" + ], + "type": "string" + } + }, + "required": [ + "SourceFormat", + "SourceType" + ], + "type": "object" + }, + "KendraSourceDetail": { + "additionalProperties": false, + "properties": { + "KnowledgeBaseArn": { + "description": "The knowledgeBaseArn details for the Kendra dataset source.", + "type": "string" + }, + "RoleArn": { + "description": "The roleARN details for the Kendra dataset source.", + "type": "string" + } + }, + "required": [ + "KnowledgeBaseArn", + "RoleArn" + ], + "type": "object" + }, + "SourceDetail": { + "additionalProperties": false, + "properties": { + "Kendra": { + "$ref": "#/definitions/KendraSourceDetail", + "description": "Contains details about the Kendra dataset source." + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::IoTSiteWise::Dataset.", + "handlers": { + "create": { + "permissions": [ + "iotsitewise:CreateDataset", + "iotsitewise:DescribeDataset", + "iam:PassRole", + "iotsitewise:ListTagsForResource", + "iotsitewise:TagResource" + ] + }, + "delete": { + "permissions": [ + "iotsitewise:DeleteDataset", + "iotsitewise:DescribeDataset", + "iotsitewise:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "iotsitewise:ListDatasets", + "iotsitewise:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iotsitewise:DescribeDataset", + "iotsitewise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotsitewise:UpdateDataset", + "iotsitewise:DescribeDataset", + "iam:PassRole", + "iotsitewise:ListTagsForResource", + "iotsitewise:TagResource", + "iotsitewise:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DatasetId" + ], + "properties": { + "DatasetArn": { + "description": "The ARN of the dataset.", + "type": "string" + }, + "DatasetDescription": { + "description": "A description about the dataset, and its functionality.", + "type": "string" + }, + "DatasetId": { + "description": "The ID of the dataset.", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + }, + "DatasetName": { + "description": "The name of the dataset.", + "type": "string" + }, + "DatasetSource": { + "$ref": "#/definitions/DatasetSource", + "description": "The data source for the dataset." + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/DatasetArn", + "/properties/DatasetId" + ], + "required": [ + "DatasetName", + "DatasetSource" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotsitewise:TagResource", + "iotsitewise:UntagResource", + "iotsitewise:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTSiteWise::Dataset" +} diff --git a/src/schema/aws-iotsitewise-gateway.json b/src/schema/aws-iotsitewise-gateway.json index da9e83e7..3143b91d 100644 --- a/src/schema/aws-iotsitewise-gateway.json +++ b/src/schema/aws-iotsitewise-gateway.json @@ -1,219 +1,224 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GatewayPlatform" - ], - "definitions": { - "CapabilityConfiguration": { - "description": "The JSON document that defines the gateway capability's configuration.", - "type": "string" - }, - "CapabilityNamespace": { - "description": "The namespace of the capability configuration.", - "type": "string" - }, - "GatewayCapabilitySummary": { - "additionalProperties": false, - "description": "Contains a summary of a gateway capability configuration.", - "properties": { - "CapabilityConfiguration": { - "$ref": "#/definitions/CapabilityConfiguration" - }, - "CapabilityNamespace": { - "$ref": "#/definitions/CapabilityNamespace" - } - }, - "required": [ - "CapabilityNamespace" - ], - "type": "object" - }, - "GatewayPlatform": { - "additionalProperties": false, - "description": "Contains a gateway's platform information.", - "oneOf": [ - { - "required": [ - "Greengrass" - ] - }, - { - "required": [ - "GreengrassV2" - ] - }, - { - "required": [ - "SiemensIE" - ] - } - ], - "properties": { - "Greengrass": { - "$ref": "#/definitions/Greengrass", - "description": "A gateway that runs on AWS IoT Greengrass V1." - }, - "GreengrassV2": { - "$ref": "#/definitions/GreengrassV2", - "description": "A gateway that runs on AWS IoT Greengrass V2." - }, - "SiemensIE": { - "$ref": "#/definitions/SiemensIE", - "description": "A gateway that runs on Siemens Industrial Edge." - } - }, - "type": "object" - }, - "Greengrass": { - "additionalProperties": false, - "description": "Contains the ARN of AWS IoT Greengrass Group V1 that the gateway runs on.", - "properties": { - "GroupArn": { - "description": "The ARN of the Greengrass group.", - "type": "string" - } - }, - "required": [ - "GroupArn" - ], - "type": "object" - }, - "GreengrassV2": { - "additionalProperties": false, - "description": "Contains the CoreDeviceThingName of AWS IoT Greengrass Group V2 that the gateway runs on.", - "properties": { - "CoreDeviceThingName": { - "description": "The name of the CoreDevice in GreenGrass V2.", - "type": "string" - } - }, - "required": [ - "CoreDeviceThingName" - ], - "type": "object" - }, - "SiemensIE": { - "additionalProperties": false, - "description": "Contains the IotCoreThingName of AWS IoT Thing that the gateway runs on.", - "properties": { - "IotCoreThingName": { - "description": "The name of the IoT Core Thing.", - "type": "string" - } - }, - "required": [ - "IotCoreThingName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "To add or update tag, provide both key and value. To delete tag, provide only tag key to be deleted", - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::IoTSiteWise::Gateway", - "handlers": { - "create": { - "permissions": [ - "iotsitewise:CreateGateway", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iam:PassRole", - "iam:GetRole", - "greengrass:GetCoreDevice", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iot:DescribeThing" - ] - }, - "delete": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:DeleteGateway" - ] - }, - "list": { - "permissions": [ - "iotsitewise:ListGateways" - ] - }, - "read": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotsitewise:UpdateGateway", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iotsitewise:TagResource", - "iotsitewise:UntagResource", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/GatewayId" - ], - "properties": { - "GatewayCapabilitySummaries": { - "description": "A list of gateway capability summaries that each contain a namespace and status.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/GatewayCapabilitySummary" - }, - "type": "array", - "uniqueItems": true - }, - "GatewayId": { - "description": "The ID of the gateway device.", - "type": "string" - }, - "GatewayName": { - "description": "A unique, friendly name for the gateway.", - "type": "string" - }, - "GatewayPlatform": { - "$ref": "#/definitions/GatewayPlatform", - "description": "The gateway's platform. You can only specify one platform in a gateway." - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the gateway.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/GatewayId" - ], - "required": [ - "GatewayName", - "GatewayPlatform" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", - "taggable": true, - "typeName": "AWS::IoTSiteWise::Gateway" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GatewayPlatform", + "/properties/GatewayVersion" + ], + "definitions": { + "CapabilityConfiguration": { + "description": "The JSON document that defines the gateway capability's configuration.", + "type": "string" + }, + "CapabilityNamespace": { + "description": "The namespace of the capability configuration.", + "type": "string" + }, + "GatewayCapabilitySummary": { + "additionalProperties": false, + "description": "Contains a summary of a gateway capability configuration.", + "properties": { + "CapabilityConfiguration": { + "$ref": "#/definitions/CapabilityConfiguration" + }, + "CapabilityNamespace": { + "$ref": "#/definitions/CapabilityNamespace" + } + }, + "required": [ + "CapabilityNamespace" + ], + "type": "object" + }, + "GatewayPlatform": { + "additionalProperties": false, + "description": "Contains a gateway's platform information.", + "oneOf": [ + { + "required": [ + "GreengrassV2" + ] + }, + { + "required": [ + "SiemensIE" + ] + } + ], + "properties": { + "GreengrassV2": { + "$ref": "#/definitions/GreengrassV2", + "description": "A gateway that runs on AWS IoT Greengrass V2." + }, + "SiemensIE": { + "$ref": "#/definitions/SiemensIE", + "description": "A gateway that runs on Siemens Industrial Edge." + } + }, + "type": "object" + }, + "GatewayVersion": { + "description": "The version of the gateway you want to create.", + "type": "string" + }, + "GreengrassV2": { + "additionalProperties": false, + "description": "Contains the CoreDeviceThingName of AWS IoT Greengrass Group V2 that the gateway runs on.", + "properties": { + "CoreDeviceOperatingSystem": { + "description": "The operating system of the core device in AWS IoT Greengrass V2.", + "enum": [ + "LINUX_AARCH64", + "LINUX_AMD64", + "WINDOWS_AMD64" + ], + "type": "string" + }, + "CoreDeviceThingName": { + "description": "The name of the CoreDevice in GreenGrass V2.", + "type": "string" + } + }, + "required": [ + "CoreDeviceThingName" + ], + "type": "object" + }, + "SiemensIE": { + "additionalProperties": false, + "description": "Contains the IotCoreThingName of AWS IoT Thing that the gateway runs on.", + "properties": { + "IotCoreThingName": { + "description": "The name of the IoT Core Thing.", + "type": "string" + } + }, + "required": [ + "IotCoreThingName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "To add or update tag, provide both key and value. To delete tag, provide only tag key to be deleted", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::IoTSiteWise::Gateway", + "handlers": { + "create": { + "permissions": [ + "iotsitewise:CreateGateway", + "iotsitewise:DescribeGateway", + "iotsitewise:DescribeGatewayCapabilityConfiguration", + "iotsitewise:UpdateGatewayCapabilityConfiguration", + "iam:PassRole", + "iam:GetRole", + "iotsitewise:ListTagsForResource", + "iotsitewise:TagResource" + ] + }, + "delete": { + "permissions": [ + "iotsitewise:DescribeGateway", + "iotsitewise:DescribeGatewayCapabilityConfiguration", + "iotsitewise:DeleteGateway" + ] + }, + "list": { + "permissions": [ + "iotsitewise:ListGateways", + "iotsitewise:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iotsitewise:DescribeGateway", + "iotsitewise:DescribeGatewayCapabilityConfiguration", + "iotsitewise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotsitewise:UpdateGateway", + "iotsitewise:UpdateGatewayCapabilityConfiguration", + "iotsitewise:TagResource", + "iotsitewise:UntagResource", + "iotsitewise:DescribeGateway", + "iotsitewise:DescribeGatewayCapabilityConfiguration", + "iotsitewise:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/GatewayId" + ], + "properties": { + "GatewayCapabilitySummaries": { + "description": "A list of gateway capability summaries that each contain a namespace and status.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/GatewayCapabilitySummary" + }, + "type": "array", + "uniqueItems": true + }, + "GatewayId": { + "description": "The ID of the gateway device.", + "type": "string" + }, + "GatewayName": { + "description": "A unique, friendly name for the gateway.", + "type": "string" + }, + "GatewayPlatform": { + "$ref": "#/definitions/GatewayPlatform", + "description": "The gateway's platform. You can only specify one platform in a gateway." + }, + "GatewayVersion": { + "description": "The version of the gateway you want to create.", + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the gateway.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/GatewayId" + ], + "required": [ + "GatewayName", + "GatewayPlatform" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotsitewise:TagResource", + "iotsitewise:UntagResource", + "iotsitewise:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTSiteWise::Gateway" +} diff --git a/src/schema/aws-iotsitewise-portal.json b/src/schema/aws-iotsitewise-portal.json index 5ba6fe00..95cccdf5 100644 --- a/src/schema/aws-iotsitewise-portal.json +++ b/src/schema/aws-iotsitewise-portal.json @@ -1,160 +1,211 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/PortalArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PortalAuthMode" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "To add or update tag, provide both key and value. To delete tag, provide only tag key to be deleted.", - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::IoTSiteWise::Portal", - "handlers": { - "create": { - "permissions": [ - "iotsitewise:CreatePortal", - "iotsitewise:DescribePortal", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iam:PassRole", - "sso:CreateManagedApplicationInstance", - "sso:DescribeRegisteredRegions" - ] - }, - "delete": { - "permissions": [ - "iotsitewise:DescribePortal", - "iotsitewise:DeletePortal", - "sso:DeleteManagedApplicationInstance" - ] - }, - "list": { - "permissions": [ - "iotsitewise:ListPortals" - ] - }, - "read": { - "permissions": [ - "iotsitewise:DescribePortal", - "iotsitewise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotsitewise:DescribePortal", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iotsitewise:UpdatePortal", - "iotsitewise:UntagResource", - "iam:PassRole", - "sso:GetManagedApplicationInstance", - "sso:UpdateApplicationInstanceDisplayData" - ] - } - }, - "primaryIdentifier": [ - "/properties/PortalId" - ], - "properties": { - "Alarms": { - "additionalProperties": false, - "description": "Contains the configuration information of an alarm created in an AWS IoT SiteWise Monitor portal. You can use the alarm to monitor an asset property and get notified when the asset property value is outside a specified range.", - "properties": { - "AlarmRoleArn": { - "description": "The ARN of the IAM role that allows the alarm to perform actions and access AWS resources and services, such as AWS IoT Events.", - "type": "string" - }, - "NotificationLambdaArn": { - "description": "The ARN of the AWS Lambda function that manages alarm notifications. For more information, see Managing alarm notifications in the AWS IoT Events Developer Guide.", - "type": "string" - } - }, - "type": "object" - }, - "NotificationSenderEmail": { - "description": "The email address that sends alarm notifications.", - "type": "string" - }, - "PortalArn": { - "description": "The ARN of the portal, which has the following format.", - "type": "string" - }, - "PortalAuthMode": { - "description": "The service to use to authenticate users to the portal. Choose from SSO or IAM. You can't change this value after you create a portal.", - "type": "string" - }, - "PortalClientId": { - "description": "The AWS SSO application generated client ID (used with AWS SSO APIs).", - "type": "string" - }, - "PortalContactEmail": { - "description": "The AWS administrator's contact email address.", - "type": "string" - }, - "PortalDescription": { - "description": "A description for the portal.", - "type": "string" - }, - "PortalId": { - "description": "The ID of the portal.", - "type": "string" - }, - "PortalName": { - "description": "A friendly name for the portal.", - "type": "string" - }, - "PortalStartUrl": { - "description": "The public root URL for the AWS IoT AWS IoT SiteWise Monitor application portal.", - "type": "string" - }, - "RoleArn": { - "description": "The ARN of a service role that allows the portal's users to access your AWS IoT SiteWise resources on your behalf.", - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the portal.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PortalArn", - "/properties/PortalClientId", - "/properties/PortalId", - "/properties/PortalStartUrl" - ], - "required": [ - "PortalContactEmail", - "PortalName", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iotsitewise.git", - "taggable": true, - "typeName": "AWS::IoTSiteWise::Portal", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/PortalArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PortalAuthMode", + "/properties/PortalType" + ], + "definitions": { + "PortalTools": { + "description": "List of enabled Tools for a certain portal.", + "items": { + "type": "string" + }, + "type": "array" + }, + "PortalTypeConfiguration": { + "additionalProperties": false, + "description": "Map to associate detail of configuration related with a PortalType.", + "patternProperties": { + "^[a-z][a-zA-Z0-9_]*$": { + "$ref": "#/definitions/PortalTypeEntry" + } + }, + "type": "object" + }, + "PortalTypeEntry": { + "additionalProperties": false, + "description": "Container associated a certain PortalType.", + "properties": { + "PortalTools": { + "$ref": "#/definitions/PortalTools" + } + }, + "required": [ + "PortalTools" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "To add or update tag, provide both key and value. To delete tag, provide only tag key to be deleted.", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::IoTSiteWise::Portal", + "handlers": { + "create": { + "permissions": [ + "iotsitewise:CreatePortal", + "iotsitewise:DescribePortal", + "iotsitewise:ListTagsForResource", + "iotsitewise:TagResource", + "iam:PassRole", + "sso:CreateManagedApplicationInstance", + "sso:DescribeRegisteredRegions" + ] + }, + "delete": { + "permissions": [ + "iotsitewise:DescribePortal", + "iotsitewise:DeletePortal", + "sso:DeleteManagedApplicationInstance" + ] + }, + "list": { + "permissions": [ + "iotsitewise:ListPortals", + "iotsitewise:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iotsitewise:DescribePortal", + "iotsitewise:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotsitewise:DescribePortal", + "iotsitewise:ListTagsForResource", + "iotsitewise:TagResource", + "iotsitewise:UpdatePortal", + "iotsitewise:UntagResource", + "iam:PassRole", + "sso:GetManagedApplicationInstance", + "sso:UpdateApplicationInstanceDisplayData" + ] + } + }, + "primaryIdentifier": [ + "/properties/PortalId" + ], + "properties": { + "Alarms": { + "additionalProperties": false, + "description": "Contains the configuration information of an alarm created in an AWS IoT SiteWise Monitor portal. You can use the alarm to monitor an asset property and get notified when the asset property value is outside a specified range.", + "properties": { + "AlarmRoleArn": { + "description": "The ARN of the IAM role that allows the alarm to perform actions and access AWS resources and services, such as AWS IoT Events.", + "type": "string" + }, + "NotificationLambdaArn": { + "description": "The ARN of the AWS Lambda function that manages alarm notifications. For more information, see Managing alarm notifications in the AWS IoT Events Developer Guide.", + "type": "string" + } + }, + "type": "object" + }, + "NotificationSenderEmail": { + "description": "The email address that sends alarm notifications.", + "type": "string" + }, + "PortalArn": { + "description": "The ARN of the portal, which has the following format.", + "type": "string" + }, + "PortalAuthMode": { + "description": "The service to use to authenticate users to the portal. Choose from SSO or IAM. You can't change this value after you create a portal.", + "type": "string" + }, + "PortalClientId": { + "description": "The AWS SSO application generated client ID (used with AWS SSO APIs).", + "type": "string" + }, + "PortalContactEmail": { + "description": "The AWS administrator's contact email address.", + "type": "string" + }, + "PortalDescription": { + "description": "A description for the portal.", + "type": "string" + }, + "PortalId": { + "description": "The ID of the portal.", + "type": "string" + }, + "PortalName": { + "description": "A friendly name for the portal.", + "type": "string" + }, + "PortalStartUrl": { + "description": "The public root URL for the AWS IoT AWS IoT SiteWise Monitor application portal.", + "type": "string" + }, + "PortalType": { + "description": "The type of portal", + "enum": [ + "SITEWISE_PORTAL_V1", + "SITEWISE_PORTAL_V2" + ], + "type": "string" + }, + "PortalTypeConfiguration": { + "$ref": "#/definitions/PortalTypeConfiguration" + }, + "RoleArn": { + "description": "The ARN of a service role that allows the portal's users to access your AWS IoT SiteWise resources on your behalf.", + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the portal.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/PortalArn", + "/properties/PortalClientId", + "/properties/PortalId", + "/properties/PortalStartUrl" + ], + "required": [ + "PortalContactEmail", + "PortalName", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iotsitewise.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotsitewise:TagResource", + "iotsitewise:UntagResource", + "iotsitewise:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTSiteWise::Portal" +} diff --git a/src/schema/aws-iotsitewise-project.json b/src/schema/aws-iotsitewise-project.json index 9c248c97..a27d85dc 100644 --- a/src/schema/aws-iotsitewise-project.json +++ b/src/schema/aws-iotsitewise-project.json @@ -1,137 +1,138 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PortalId" - ], - "definitions": { - "AssetId": { - "description": "The ID of the asset", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "To add or update tag, provide both key and value. To delete tag, provide only tag key to be deleted", - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::IoTSiteWise::Project", - "handlers": { - "create": { - "permissions": [ - "iotsitewise:CreateProject", - "iotsitewise:DescribeProject", - "iotsitewise:ListProjectAssets", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iotsitewise:BatchAssociateProjectAssets" - ] - }, - "delete": { - "permissions": [ - "iotsitewise:DescribeProject", - "iotsitewise:DeleteProject" - ] - }, - "list": { - "permissions": [ - "iotsitewise:ListProjects", - "iotsitewise:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "iotsitewise:DescribeProject", - "iotsitewise:ListTagsForResource", - "iotsitewise:ListProjectAssets" - ] - }, - "update": { - "permissions": [ - "iotsitewise:DescribeProject", - "iotsitewise:UpdateProject", - "iotsitewise:BatchAssociateProjectAssets", - "iotsitewise:BatchDisAssociateProjectAssets", - "iotsitewise:ListProjectAssets", - "iotsitewise:TagResource", - "iotsitewise:UntagResource", - "iotsitewise:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ProjectId" - ], - "properties": { - "AssetIds": { - "description": "The IDs of the assets to be associated to the project.", - "items": { - "$ref": "#/definitions/AssetId" - }, - "type": "array", - "uniqueItems": true - }, - "PortalId": { - "description": "The ID of the portal in which to create the project.", - "type": "string" - }, - "ProjectArn": { - "description": "The ARN of the project.", - "type": "string" - }, - "ProjectDescription": { - "description": "A description for the project.", - "type": "string" - }, - "ProjectId": { - "description": "The ID of the project.", - "type": "string" - }, - "ProjectName": { - "description": "A friendly name for the project.", - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the project.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ProjectId", - "/properties/ProjectArn" - ], - "required": [ - "PortalId", - "ProjectName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotsitewise:TagResource", - "iotsitewise:UntagResource", - "iotsitewise:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTSiteWise::Project" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PortalId" + ], + "definitions": { + "AssetId": { + "description": "The ID of the asset", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "To add or update tag, provide both key and value. To delete tag, provide only tag key to be deleted", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::IoTSiteWise::Project", + "handlers": { + "create": { + "permissions": [ + "iotsitewise:CreateProject", + "iotsitewise:DescribeProject", + "iotsitewise:ListProjectAssets", + "iotsitewise:ListTagsForResource", + "iotsitewise:TagResource", + "iotsitewise:BatchAssociateProjectAssets" + ] + }, + "delete": { + "permissions": [ + "iotsitewise:DescribeProject", + "iotsitewise:DeleteProject" + ] + }, + "list": { + "permissions": [ + "iotsitewise:ListPortals", + "iotsitewise:ListProjects", + "iotsitewise:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iotsitewise:DescribeProject", + "iotsitewise:ListTagsForResource", + "iotsitewise:ListProjectAssets" + ] + }, + "update": { + "permissions": [ + "iotsitewise:DescribeProject", + "iotsitewise:UpdateProject", + "iotsitewise:BatchAssociateProjectAssets", + "iotsitewise:BatchDisAssociateProjectAssets", + "iotsitewise:ListProjectAssets", + "iotsitewise:TagResource", + "iotsitewise:UntagResource", + "iotsitewise:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ProjectId" + ], + "properties": { + "AssetIds": { + "description": "The IDs of the assets to be associated to the project.", + "items": { + "$ref": "#/definitions/AssetId" + }, + "type": "array", + "uniqueItems": true + }, + "PortalId": { + "description": "The ID of the portal in which to create the project.", + "type": "string" + }, + "ProjectArn": { + "description": "The ARN of the project.", + "type": "string" + }, + "ProjectDescription": { + "description": "A description for the project.", + "type": "string" + }, + "ProjectId": { + "description": "The ID of the project.", + "type": "string" + }, + "ProjectName": { + "description": "A friendly name for the project.", + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the project.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ProjectId", + "/properties/ProjectArn" + ], + "required": [ + "PortalId", + "ProjectName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotsitewise:TagResource", + "iotsitewise:UntagResource", + "iotsitewise:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTSiteWise::Project" +} diff --git a/src/schema/aws-iotthingsgraph-flowtemplate.json b/src/schema/aws-iotthingsgraph-flowtemplate.json index bea39ac3..e645059c 100644 --- a/src/schema/aws-iotthingsgraph-flowtemplate.json +++ b/src/schema/aws-iotthingsgraph-flowtemplate.json @@ -1,43 +1,43 @@ -{ - "additionalProperties": false, - "definitions": { - "DefinitionDocument": { - "additionalProperties": false, - "properties": { - "Language": { - "type": "string" - }, - "Text": { - "type": "string" - } - }, - "required": [ - "Language", - "Text" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::IoTThingsGraph::FlowTemplate", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CompatibleNamespaceVersion": { - "type": "number" - }, - "Definition": { - "$ref": "#/definitions/DefinitionDocument" - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Definition" - ], - "typeName": "AWS::IoTThingsGraph::FlowTemplate" -} +{ + "additionalProperties": false, + "definitions": { + "DefinitionDocument": { + "additionalProperties": false, + "properties": { + "Language": { + "type": "string" + }, + "Text": { + "type": "string" + } + }, + "required": [ + "Language", + "Text" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::IoTThingsGraph::FlowTemplate", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CompatibleNamespaceVersion": { + "type": "number" + }, + "Definition": { + "$ref": "#/definitions/DefinitionDocument" + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Definition" + ], + "typeName": "AWS::IoTThingsGraph::FlowTemplate" +} diff --git a/src/schema/aws-iottwinmaker-componenttype.json b/src/schema/aws-iottwinmaker-componenttype.json index 6a9c8607..bbcedea5 100644 --- a/src/schema/aws-iottwinmaker-componenttype.json +++ b/src/schema/aws-iottwinmaker-componenttype.json @@ -1,563 +1,563 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/WorkspaceId", - "/properties/ComponentTypeId" - ], - "definitions": { - "CompositeComponentType": { - "additionalProperties": false, - "description": "An object that sets information about a composite component type.", - "properties": { - "ComponentTypeId": { - "description": "The id of the composite component type.", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z_\\.\\-0-9:]+", - "type": "string" - } - }, - "type": "object" - }, - "DataConnector": { - "additionalProperties": false, - "description": "The data connector.", - "properties": { - "IsNative": { - "description": "A Boolean value that specifies whether the data connector is native to IoT TwinMaker.", - "type": "boolean" - }, - "Lambda": { - "$ref": "#/definitions/LambdaFunction", - "description": "The Lambda function associated with this data connector." - } - }, - "type": "object" - }, - "DataType": { - "additionalProperties": false, - "description": "An object that specifies the data type of a property.", - "properties": { - "AllowedValues": { - "description": "The allowed values for this data type.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DataValue" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "NestedType": { - "$ref": "#/definitions/DataType", - "description": "The nested type in the data type." - }, - "Relationship": { - "$ref": "#/definitions/Relationship", - "description": "A relationship that associates a component with another component." - }, - "Type": { - "description": "The underlying type of the data type.", - "enum": [ - "RELATIONSHIP", - "STRING", - "LONG", - "BOOLEAN", - "INTEGER", - "DOUBLE", - "LIST", - "MAP" - ], - "type": "string" - }, - "UnitOfMeasure": { - "description": "The unit of measure used in this data type.", - "maxLength": 256, - "minLength": 1, - "pattern": ".*", - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "DataValue": { - "additionalProperties": false, - "description": "An object that specifies a value for a property.", - "properties": { - "BooleanValue": { - "description": "A Boolean value.", - "type": "boolean" - }, - "DoubleValue": { - "description": "A double value.", - "type": "number" - }, - "Expression": { - "description": "An expression that produces the value.", - "maxLength": 316, - "minLength": 1, - "pattern": "(^\\$\\{Parameters\\.[a-zA-z]+([a-zA-z_0-9]*)}$)", - "type": "string" - }, - "IntegerValue": { - "description": "An integer value.", - "type": "integer" - }, - "ListValue": { - "description": "A list of multiple values.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DataValue" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "LongValue": { - "description": "A long value.", - "type": "number" - }, - "MapValue": { - "additionalProperties": false, - "description": "An object that maps strings to multiple DataValue objects. \n\n", - "patternProperties": { - "[a-zA-Z_\\-0-9]+": { - "$ref": "#/definitions/DataValue" - } - }, - "type": "object" - }, - "RelationshipValue": { - "additionalProperties": false, - "description": "A value that relates a component to another component.", - "properties": { - "TargetComponentName": { - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z_\\-0-9]+", - "type": "string" - }, - "TargetEntityId": { - "maxLength": 128, - "minLength": 1, - "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|^[a-zA-Z0-9][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9]+", - "type": "string" - } - }, - "type": "object" - }, - "StringValue": { - "description": "A string value.", - "maxLength": 256, - "minLength": 1, - "pattern": ".*", - "type": "string" - } - }, - "type": "object" - }, - "DateTimeFormat": { - "format": "date-time", - "type": "string" - }, - "Function": { - "additionalProperties": false, - "description": "The function of component type.", - "properties": { - "ImplementedBy": { - "$ref": "#/definitions/DataConnector", - "description": "The data connector." - }, - "RequiredProperties": { - "description": "The required properties of the function.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RequiredProperty" - }, - "maxItems": 256, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Scope": { - "description": "The scope of the function.", - "enum": [ - "ENTITY", - "WORKSPACE" - ], - "type": "string" - } - }, - "type": "object" - }, - "LambdaFunction": { - "additionalProperties": false, - "properties": { - "Arn": { - "maxLength": 128, - "minLength": 1, - "pattern": "arn:((aws)|(aws-cn)|(aws-us-gov)):lambda:[a-z0-9-]+:[0-9]{12}:function:[\\/a-zA-Z0-9_-]+", - "type": "string" - } - }, - "required": [ - "Arn" - ], - "type": "object" - }, - "ParentComponentType": { - "pattern": "[a-zA-Z_\\.\\-0-9:]+", - "type": "string" - }, - "PropertyDefinition": { - "additionalProperties": false, - "description": "An object that sets information about a property.", - "properties": { - "Configurations": { - "additionalProperties": false, - "description": "An object that specifies information about a property.", - "patternProperties": { - "[a-zA-Z_\\-0-9]+": { - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z_\\-0-9]+", - "type": "string" - } - }, - "type": "object" - }, - "DataType": { - "$ref": "#/definitions/DataType", - "description": "An object that contains information about the data type." - }, - "DefaultValue": { - "$ref": "#/definitions/DataValue", - "description": "An object that contains the default value." - }, - "IsExternalId": { - "description": "A Boolean value that specifies whether the property ID comes from an external data store.", - "type": "boolean" - }, - "IsRequiredInEntity": { - "description": "A Boolean value that specifies whether the property is required.", - "type": "boolean" - }, - "IsStoredExternally": { - "description": "A Boolean value that specifies whether the property is stored externally.", - "type": "boolean" - }, - "IsTimeSeries": { - "description": "A Boolean value that specifies whether the property consists of time series data.", - "type": "boolean" - } - }, - "type": "object" - }, - "PropertyGroup": { - "additionalProperties": false, - "description": "An object that sets information about a property group.", - "properties": { - "GroupType": { - "description": "The type of property group.", - "enum": [ - "TABULAR" - ], - "type": "string" - }, - "PropertyNames": { - "description": "The list of property names in the property group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PropertyName" - }, - "maxItems": 256, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "PropertyName": { - "pattern": "[a-zA-Z_\\-0-9]+", - "type": "string" - }, - "Relationship": { - "additionalProperties": false, - "description": "The type of the relationship.", - "properties": { - "RelationshipType": { - "description": "The type of the relationship.", - "maxLength": 256, - "minLength": 1, - "pattern": ".*", - "type": "string" - }, - "TargetComponentTypeId": { - "description": "The ID of the target component type associated with this relationship.", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z_\\.\\-0-9:]+", - "type": "string" - } - }, - "type": "object" - }, - "RequiredProperty": { - "pattern": "[a-zA-Z_\\-0-9]+", - "type": "string" - }, - "Status": { - "additionalProperties": false, - "properties": { - "Error": { - "anyOf": [ - { - "additionalProperties": false, - "description": "Empty Error object.", - "type": "object" - }, - { - "additionalProperties": false, - "description": "Error object with Message and Code.", - "properties": { - "Code": { - "enum": [ - "VALIDATION_ERROR", - "INTERNAL_FAILURE" - ], - "type": "string" - }, - "Message": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - ], - "type": "object" - }, - "State": { - "enum": [ - "CREATING", - "UPDATING", - "DELETING", - "ACTIVE", - "ERROR" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::IoTTwinMaker::ComponentType", - "handlers": { - "create": { - "permissions": [ - "iottwinmaker:CreateComponentType", - "iottwinmaker:GetComponentType", - "iottwinmaker:GetWorkspace", - "iottwinmaker:ListTagsForResource", - "iottwinmaker:TagResource" - ] - }, - "delete": { - "permissions": [ - "iottwinmaker:DeleteComponentType", - "iottwinmaker:GetComponentType", - "iottwinmaker:GetWorkspace" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "WorkspaceId": { - "$ref": "resource-schema.json#/properties/WorkspaceId", - "type": "string" - } - }, - "required": [ - "WorkspaceId" - ] - }, - "permissions": [ - "iottwinmaker:GetComponentType", - "iottwinmaker:GetWorkspace", - "iottwinmaker:ListComponentTypes", - "iottwinmaker:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "iottwinmaker:GetComponentType", - "iottwinmaker:GetWorkspace", - "iottwinmaker:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iottwinmaker:GetComponentType", - "iottwinmaker:GetWorkspace", - "iottwinmaker:ListTagsForResource", - "iottwinmaker:TagResource", - "iottwinmaker:UntagResource", - "iottwinmaker:UpdateComponentType" - ] - } - }, - "primaryIdentifier": [ - "/properties/WorkspaceId", - "/properties/ComponentTypeId" - ], - "properties": { - "Arn": { - "description": "The ARN of the component type.", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:((aws)|(aws-cn)|(aws-us-gov)):iottwinmaker:[a-z0-9-]+:[0-9]{12}:[\\/a-zA-Z0-9_\\-\\.:]+", - "type": "string" - }, - "ComponentTypeId": { - "description": "The ID of the component type.", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z_\\.\\-0-9:]+", - "type": "string" - }, - "CompositeComponentTypes": { - "additionalProperties": false, - "description": "An map of the composite component types in the component type. Each composite component type's key must be unique to this map.", - "patternProperties": { - "[a-zA-Z_\\-0-9]+": { - "$ref": "#/definitions/CompositeComponentType" - } - }, - "type": "object" - }, - "CreationDateTime": { - "$ref": "#/definitions/DateTimeFormat", - "description": "The date and time when the component type was created." - }, - "Description": { - "description": "The description of the component type.", - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "ExtendsFrom": { - "description": "Specifies the parent component type to extend.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ParentComponentType" - }, - "maxItems": 256, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Functions": { - "additionalProperties": false, - "description": "a Map of functions in the component type. Each function's key must be unique to this map.", - "patternProperties": { - "[a-zA-Z_\\-0-9]+": { - "$ref": "#/definitions/Function" - } - }, - "type": "object" - }, - "IsAbstract": { - "description": "A Boolean value that specifies whether the component type is abstract.", - "type": "boolean" - }, - "IsSchemaInitialized": { - "description": "A Boolean value that specifies whether the component type has a schema initializer and that the schema initializer has run.", - "type": "boolean" - }, - "IsSingleton": { - "description": "A Boolean value that specifies whether an entity can have more than one component of this type.", - "type": "boolean" - }, - "PropertyDefinitions": { - "additionalProperties": false, - "description": "An map of the property definitions in the component type. Each property definition's key must be unique to this map.", - "patternProperties": { - "[a-zA-Z_\\-0-9]+": { - "$ref": "#/definitions/PropertyDefinition" - } - }, - "type": "object" - }, - "PropertyGroups": { - "additionalProperties": false, - "description": "An map of the property groups in the component type. Each property group's key must be unique to this map.", - "patternProperties": { - "[a-zA-Z_\\-0-9]+": { - "$ref": "#/definitions/PropertyGroup" - } - }, - "type": "object" - }, - "Status": { - "$ref": "#/definitions/Status", - "description": "The current status of the component type." - }, - "Tags": { - "additionalProperties": false, - "description": "A map of key-value pairs to associate with a resource.", - "maxProperties": 50, - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "UpdateDateTime": { - "$ref": "#/definitions/DateTimeFormat", - "description": "The last date and time when the component type was updated." - }, - "WorkspaceId": { - "description": "The ID of the workspace that contains the component type.", - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z_0-9][a-zA-Z_\\-0-9]*[a-zA-Z0-9]+", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationDateTime", - "/properties/UpdateDateTime", - "/properties/Status", - "/properties/IsAbstract", - "/properties/IsSchemaInitialized" - ], - "required": [ - "WorkspaceId", - "ComponentTypeId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iottwinmaker", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iottwinmaker:TagResource", - "iottwinmaker:UntagResource", - "iottwinmaker:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTTwinMaker::ComponentType" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/WorkspaceId", + "/properties/ComponentTypeId" + ], + "definitions": { + "CompositeComponentType": { + "additionalProperties": false, + "description": "An object that sets information about a composite component type.", + "properties": { + "ComponentTypeId": { + "description": "The id of the composite component type.", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z_\\.\\-0-9:]+", + "type": "string" + } + }, + "type": "object" + }, + "DataConnector": { + "additionalProperties": false, + "description": "The data connector.", + "properties": { + "IsNative": { + "description": "A Boolean value that specifies whether the data connector is native to IoT TwinMaker.", + "type": "boolean" + }, + "Lambda": { + "$ref": "#/definitions/LambdaFunction", + "description": "The Lambda function associated with this data connector." + } + }, + "type": "object" + }, + "DataType": { + "additionalProperties": false, + "description": "An object that specifies the data type of a property.", + "properties": { + "AllowedValues": { + "description": "The allowed values for this data type.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DataValue" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "NestedType": { + "$ref": "#/definitions/DataType", + "description": "The nested type in the data type." + }, + "Relationship": { + "$ref": "#/definitions/Relationship", + "description": "A relationship that associates a component with another component." + }, + "Type": { + "description": "The underlying type of the data type.", + "enum": [ + "RELATIONSHIP", + "STRING", + "LONG", + "BOOLEAN", + "INTEGER", + "DOUBLE", + "LIST", + "MAP" + ], + "type": "string" + }, + "UnitOfMeasure": { + "description": "The unit of measure used in this data type.", + "maxLength": 256, + "minLength": 1, + "pattern": ".*", + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "DataValue": { + "additionalProperties": false, + "description": "An object that specifies a value for a property.", + "properties": { + "BooleanValue": { + "description": "A Boolean value.", + "type": "boolean" + }, + "DoubleValue": { + "description": "A double value.", + "type": "number" + }, + "Expression": { + "description": "An expression that produces the value.", + "maxLength": 316, + "minLength": 1, + "pattern": "(^\\$\\{Parameters\\.[a-zA-z]+([a-zA-z_0-9]*)}$)", + "type": "string" + }, + "IntegerValue": { + "description": "An integer value.", + "type": "integer" + }, + "ListValue": { + "description": "A list of multiple values.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DataValue" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "LongValue": { + "description": "A long value.", + "type": "number" + }, + "MapValue": { + "additionalProperties": false, + "description": "An object that maps strings to multiple DataValue objects. \n\n", + "patternProperties": { + "[a-zA-Z_\\-0-9]+": { + "$ref": "#/definitions/DataValue" + } + }, + "type": "object" + }, + "RelationshipValue": { + "additionalProperties": false, + "description": "A value that relates a component to another component.", + "properties": { + "TargetComponentName": { + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z_\\-0-9]+", + "type": "string" + }, + "TargetEntityId": { + "maxLength": 128, + "minLength": 1, + "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|^[a-zA-Z0-9][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9]+", + "type": "string" + } + }, + "type": "object" + }, + "StringValue": { + "description": "A string value.", + "maxLength": 256, + "minLength": 1, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "DateTimeFormat": { + "format": "date-time", + "type": "string" + }, + "Function": { + "additionalProperties": false, + "description": "The function of component type.", + "properties": { + "ImplementedBy": { + "$ref": "#/definitions/DataConnector", + "description": "The data connector." + }, + "RequiredProperties": { + "description": "The required properties of the function.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RequiredProperty" + }, + "maxItems": 256, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Scope": { + "description": "The scope of the function.", + "enum": [ + "ENTITY", + "WORKSPACE" + ], + "type": "string" + } + }, + "type": "object" + }, + "LambdaFunction": { + "additionalProperties": false, + "properties": { + "Arn": { + "maxLength": 128, + "minLength": 1, + "pattern": "arn:((aws)|(aws-cn)|(aws-us-gov)):lambda:[a-z0-9-]+:[0-9]{12}:function:[\\/a-zA-Z0-9_-]+", + "type": "string" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "ParentComponentType": { + "pattern": "[a-zA-Z_\\.\\-0-9:]+", + "type": "string" + }, + "PropertyDefinition": { + "additionalProperties": false, + "description": "An object that sets information about a property.", + "properties": { + "Configurations": { + "additionalProperties": false, + "description": "An object that specifies information about a property.", + "patternProperties": { + "[a-zA-Z_\\-0-9]+": { + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z_\\-0-9]+", + "type": "string" + } + }, + "type": "object" + }, + "DataType": { + "$ref": "#/definitions/DataType", + "description": "An object that contains information about the data type." + }, + "DefaultValue": { + "$ref": "#/definitions/DataValue", + "description": "An object that contains the default value." + }, + "IsExternalId": { + "description": "A Boolean value that specifies whether the property ID comes from an external data store.", + "type": "boolean" + }, + "IsRequiredInEntity": { + "description": "A Boolean value that specifies whether the property is required.", + "type": "boolean" + }, + "IsStoredExternally": { + "description": "A Boolean value that specifies whether the property is stored externally.", + "type": "boolean" + }, + "IsTimeSeries": { + "description": "A Boolean value that specifies whether the property consists of time series data.", + "type": "boolean" + } + }, + "type": "object" + }, + "PropertyGroup": { + "additionalProperties": false, + "description": "An object that sets information about a property group.", + "properties": { + "GroupType": { + "description": "The type of property group.", + "enum": [ + "TABULAR" + ], + "type": "string" + }, + "PropertyNames": { + "description": "The list of property names in the property group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PropertyName" + }, + "maxItems": 256, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "PropertyName": { + "pattern": "[a-zA-Z_\\-0-9]+", + "type": "string" + }, + "Relationship": { + "additionalProperties": false, + "description": "The type of the relationship.", + "properties": { + "RelationshipType": { + "description": "The type of the relationship.", + "maxLength": 256, + "minLength": 1, + "pattern": ".*", + "type": "string" + }, + "TargetComponentTypeId": { + "description": "The ID of the target component type associated with this relationship.", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z_\\.\\-0-9:]+", + "type": "string" + } + }, + "type": "object" + }, + "RequiredProperty": { + "pattern": "[a-zA-Z_\\-0-9]+", + "type": "string" + }, + "Status": { + "additionalProperties": false, + "properties": { + "Error": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Empty Error object.", + "type": "object" + }, + { + "additionalProperties": false, + "description": "Error object with Message and Code.", + "properties": { + "Code": { + "enum": [ + "VALIDATION_ERROR", + "INTERNAL_FAILURE" + ], + "type": "string" + }, + "Message": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + ], + "type": "object" + }, + "State": { + "enum": [ + "CREATING", + "UPDATING", + "DELETING", + "ACTIVE", + "ERROR" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::IoTTwinMaker::ComponentType", + "handlers": { + "create": { + "permissions": [ + "iottwinmaker:CreateComponentType", + "iottwinmaker:GetComponentType", + "iottwinmaker:GetWorkspace", + "iottwinmaker:ListTagsForResource", + "iottwinmaker:TagResource" + ] + }, + "delete": { + "permissions": [ + "iottwinmaker:DeleteComponentType", + "iottwinmaker:GetComponentType", + "iottwinmaker:GetWorkspace" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "WorkspaceId": { + "$ref": "resource-schema.json#/properties/WorkspaceId", + "type": "string" + } + }, + "required": [ + "WorkspaceId" + ] + }, + "permissions": [ + "iottwinmaker:GetComponentType", + "iottwinmaker:GetWorkspace", + "iottwinmaker:ListComponentTypes", + "iottwinmaker:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iottwinmaker:GetComponentType", + "iottwinmaker:GetWorkspace", + "iottwinmaker:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iottwinmaker:GetComponentType", + "iottwinmaker:GetWorkspace", + "iottwinmaker:ListTagsForResource", + "iottwinmaker:TagResource", + "iottwinmaker:UntagResource", + "iottwinmaker:UpdateComponentType" + ] + } + }, + "primaryIdentifier": [ + "/properties/WorkspaceId", + "/properties/ComponentTypeId" + ], + "properties": { + "Arn": { + "description": "The ARN of the component type.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:((aws)|(aws-cn)|(aws-us-gov)):iottwinmaker:[a-z0-9-]+:[0-9]{12}:[\\/a-zA-Z0-9_\\-\\.:]+", + "type": "string" + }, + "ComponentTypeId": { + "description": "The ID of the component type.", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z_\\.\\-0-9:]+", + "type": "string" + }, + "CompositeComponentTypes": { + "additionalProperties": false, + "description": "An map of the composite component types in the component type. Each composite component type's key must be unique to this map.", + "patternProperties": { + "[a-zA-Z_\\-0-9]+": { + "$ref": "#/definitions/CompositeComponentType" + } + }, + "type": "object" + }, + "CreationDateTime": { + "$ref": "#/definitions/DateTimeFormat", + "description": "The date and time when the component type was created." + }, + "Description": { + "description": "The description of the component type.", + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "ExtendsFrom": { + "description": "Specifies the parent component type to extend.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ParentComponentType" + }, + "maxItems": 256, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Functions": { + "additionalProperties": false, + "description": "a Map of functions in the component type. Each function's key must be unique to this map.", + "patternProperties": { + "[a-zA-Z_\\-0-9]+": { + "$ref": "#/definitions/Function" + } + }, + "type": "object" + }, + "IsAbstract": { + "description": "A Boolean value that specifies whether the component type is abstract.", + "type": "boolean" + }, + "IsSchemaInitialized": { + "description": "A Boolean value that specifies whether the component type has a schema initializer and that the schema initializer has run.", + "type": "boolean" + }, + "IsSingleton": { + "description": "A Boolean value that specifies whether an entity can have more than one component of this type.", + "type": "boolean" + }, + "PropertyDefinitions": { + "additionalProperties": false, + "description": "An map of the property definitions in the component type. Each property definition's key must be unique to this map.", + "patternProperties": { + "[a-zA-Z_\\-0-9]+": { + "$ref": "#/definitions/PropertyDefinition" + } + }, + "type": "object" + }, + "PropertyGroups": { + "additionalProperties": false, + "description": "An map of the property groups in the component type. Each property group's key must be unique to this map.", + "patternProperties": { + "[a-zA-Z_\\-0-9]+": { + "$ref": "#/definitions/PropertyGroup" + } + }, + "type": "object" + }, + "Status": { + "$ref": "#/definitions/Status", + "description": "The current status of the component type." + }, + "Tags": { + "additionalProperties": false, + "description": "A map of key-value pairs to associate with a resource.", + "maxProperties": 50, + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "UpdateDateTime": { + "$ref": "#/definitions/DateTimeFormat", + "description": "The last date and time when the component type was updated." + }, + "WorkspaceId": { + "description": "The ID of the workspace that contains the component type.", + "maxLength": 128, + "minLength": 1, + "pattern": "[a-zA-Z_0-9][a-zA-Z_\\-0-9]*[a-zA-Z0-9]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationDateTime", + "/properties/UpdateDateTime", + "/properties/Status", + "/properties/IsAbstract", + "/properties/IsSchemaInitialized" + ], + "required": [ + "WorkspaceId", + "ComponentTypeId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iottwinmaker", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iottwinmaker:TagResource", + "iottwinmaker:UntagResource", + "iottwinmaker:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTTwinMaker::ComponentType" +} diff --git a/src/schema/aws-iottwinmaker-entity.json b/src/schema/aws-iottwinmaker-entity.json index 64301ebb..24f534f9 100644 --- a/src/schema/aws-iottwinmaker-entity.json +++ b/src/schema/aws-iottwinmaker-entity.json @@ -1,605 +1,605 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/WorkspaceId", - "/properties/EntityId" - ], - "definitions": { - "Component": { - "additionalProperties": false, - "properties": { - "ComponentName": { - "description": "The name of the component.", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z_\\-0-9]+", - "type": "string" - }, - "ComponentTypeId": { - "description": "The ID of the component type.", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z_\\-0-9]+", - "type": "string" - }, - "DefinedIn": { - "description": "The name of the property definition set in the component.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Description": { - "description": "The description of the component.", - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "Properties": { - "additionalProperties": false, - "description": "An object that maps strings to the properties to set in the component type. Each string in the mapping must be unique to this object.", - "patternProperties": { - "[a-zA-Z_\\-0-9]+": { - "$ref": "#/definitions/Property" - } - }, - "type": "object" - }, - "PropertyGroups": { - "additionalProperties": false, - "description": "An object that maps strings to the property groups to set in the component type. Each string in the mapping must be unique to this object.", - "patternProperties": { - "[a-zA-Z_\\-0-9]+": { - "$ref": "#/definitions/PropertyGroup" - } - }, - "type": "object" - }, - "Status": { - "$ref": "#/definitions/Status", - "description": "The current status of the entity." - } - }, - "type": "object" - }, - "CompositeComponent": { - "additionalProperties": false, - "properties": { - "ComponentName": { - "description": "The name of the component.", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z_\\-0-9]+", - "type": "string" - }, - "ComponentPath": { - "description": "The path of the component.", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z_\\-0-9/]+", - "type": "string" - }, - "ComponentTypeId": { - "description": "The ID of the component type.", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z_\\-0-9]+", - "type": "string" - }, - "Description": { - "description": "The description of the component.", - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "Properties": { - "additionalProperties": false, - "description": "An object that maps strings to the properties to set in the component type. Each string in the mapping must be unique to this object.", - "patternProperties": { - "[a-zA-Z_\\-0-9]+": { - "$ref": "#/definitions/Property" - } - }, - "type": "object" - }, - "PropertyGroups": { - "additionalProperties": false, - "description": "An object that maps strings to the property groups to set in the component type. Each string in the mapping must be unique to this object.", - "patternProperties": { - "[a-zA-Z_\\-0-9]+": { - "$ref": "#/definitions/PropertyGroup" - } - }, - "type": "object" - }, - "Status": { - "$ref": "#/definitions/Status", - "description": "The current status of the component." - } - }, - "type": "object" - }, - "DataType": { - "additionalProperties": false, - "description": "An object that specifies the data type of a property.", - "properties": { - "AllowedValues": { - "description": "The allowed values for this data type.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DataValue" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "NestedType": { - "$ref": "#/definitions/DataType", - "description": "The nested type in the data type." - }, - "Relationship": { - "$ref": "#/definitions/Relationship", - "description": "A relationship that associates a component with another component." - }, - "Type": { - "description": "The underlying type of the data type.", - "enum": [ - "RELATIONSHIP", - "STRING", - "LONG", - "BOOLEAN", - "INTEGER", - "DOUBLE", - "LIST", - "MAP" - ], - "type": "string" - }, - "UnitOfMeasure": { - "description": "The unit of measure used in this data type.", - "maxLength": 256, - "minLength": 1, - "pattern": ".*", - "type": "string" - } - }, - "type": "object" - }, - "DataValue": { - "additionalProperties": false, - "description": "An object that specifies a value for a property.", - "properties": { - "BooleanValue": { - "description": "A Boolean value.", - "type": "boolean" - }, - "DoubleValue": { - "description": "A double value.", - "type": "number" - }, - "Expression": { - "description": "An expression that produces the value.", - "maxLength": 316, - "minLength": 1, - "pattern": "(^\\$\\{Parameters\\.[a-zA-z]+([a-zA-z_0-9]*)}$)", - "type": "string" - }, - "IntegerValue": { - "description": "An integer value.", - "type": "integer" - }, - "ListValue": { - "description": "A list of multiple values.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DataValue" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "LongValue": { - "description": "A long value.", - "type": "number" - }, - "MapValue": { - "additionalProperties": false, - "description": "An object that maps strings to multiple DataValue objects.", - "patternProperties": { - "[a-zA-Z_\\-0-9]+": { - "$ref": "#/definitions/DataValue" - } - }, - "type": "object" - }, - "RelationshipValue": { - "additionalProperties": false, - "description": "A value that relates a component to another component.", - "properties": { - "TargetComponentName": { - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z_\\-0-9]+", - "type": "string" - }, - "TargetEntityId": { - "maxLength": 128, - "minLength": 1, - "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|^[a-zA-Z0-9][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9]+", - "type": "string" - } - }, - "type": "object" - }, - "StringValue": { - "description": "A string value.", - "maxLength": 256, - "minLength": 1, - "pattern": ".*", - "type": "string" - } - }, - "type": "object" - }, - "DateTimeFormat": { - "format": "date-time", - "type": "string" - }, - "Definition": { - "additionalProperties": false, - "description": "An object that specifies information about a property definition.", - "properties": { - "Configuration": { - "$ref": "#/definitions/PropertyDefinitionConfiguration", - "description": "An object that specifies information about a property configuration." - }, - "DataType": { - "$ref": "#/definitions/DataType", - "description": "An object that contains information about the data type." - }, - "DefaultValue": { - "$ref": "#/definitions/DataValue", - "description": "An object that contains the default value." - }, - "IsExternalId": { - "description": "A Boolean value that specifies whether the property ID comes from an external data store.", - "type": "boolean" - }, - "IsFinal": { - "description": "A Boolean value that specifies whether the property definition can be updated.", - "type": "boolean" - }, - "IsImported": { - "description": "A Boolean value that specifies whether the property definition is imported from an external data store.", - "type": "boolean" - }, - "IsInherited": { - "description": "A Boolean value that specifies whether the property definition is inherited from a parent entity.", - "type": "boolean" - }, - "IsRequiredInEntity": { - "description": "A Boolean value that specifies whether the property is required.", - "type": "boolean" - }, - "IsStoredExternally": { - "description": "A Boolean value that specifies whether the property is stored externally.", - "type": "boolean" - }, - "IsTimeSeries": { - "description": "A Boolean value that specifies whether the property consists of time series data.", - "type": "boolean" - } - }, - "type": "object" - }, - "Property": { - "additionalProperties": false, - "description": "An object that specifies information about a property.", - "properties": { - "Definition": { - "$ref": "#/definitions/Definition", - "description": "The definition of the property." - }, - "Value": { - "$ref": "#/definitions/DataValue", - "description": "The value of the property." - } - }, - "type": "object" - }, - "PropertyDefinitionConfiguration": { - "additionalProperties": false, - "description": "An object that specifies information about a property configuration.", - "patternProperties": { - "[a-zA-Z_\\-0-9]+": { - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z_\\-0-9]+", - "type": "string" - } - }, - "type": "object" - }, - "PropertyGroup": { - "additionalProperties": false, - "description": "An object that specifies information about a property group.", - "properties": { - "GroupType": { - "description": "The type of property group.", - "enum": [ - "TABULAR" - ], - "type": "string" - }, - "PropertyNames": { - "description": "The list of property names in the property group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PropertyName" - }, - "maxItems": 256, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "PropertyName": { - "pattern": "[a-zA-Z_\\-0-9]+", - "type": "string" - }, - "Relationship": { - "additionalProperties": false, - "description": "The type of the relationship.", - "properties": { - "RelationshipType": { - "description": "The type of the relationship.", - "maxLength": 256, - "minLength": 1, - "pattern": ".*", - "type": "string" - }, - "TargetComponentTypeId": { - "description": "The ID of the target component type associated with this relationship.", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z_\\.\\-0-9:]+", - "type": "string" - } - }, - "type": "object" - }, - "Status": { - "additionalProperties": false, - "properties": { - "Error": { - "anyOf": [ - { - "additionalProperties": false, - "description": "Empty Error object.", - "type": "object" - }, - { - "additionalProperties": false, - "description": "Error object with Message and Code.", - "properties": { - "Code": { - "enum": [ - "VALIDATION_ERROR", - "INTERNAL_FAILURE" - ], - "type": "string" - }, - "Message": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - ], - "type": "object" - }, - "State": { - "enum": [ - "CREATING", - "UPDATING", - "DELETING", - "ACTIVE", - "ERROR" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::IoTTwinMaker::Entity", - "handlers": { - "create": { - "permissions": [ - "iottwinmaker:GetWorkspace", - "iottwinmaker:CreateEntity", - "iottwinmaker:GetEntity", - "iottwinmaker:ListComponents", - "iottwinmaker:ListProperties", - "iottwinmaker:ListTagsForResource", - "iottwinmaker:TagResource" - ] - }, - "delete": { - "permissions": [ - "iottwinmaker:GetEntity", - "iottwinmaker:GetWorkspace", - "iottwinmaker:DeleteEntity" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "WorkspaceId": { - "$ref": "resource-schema.json#/properties/WorkspaceId", - "type": "string" - } - }, - "required": [ - "WorkspaceId" - ] - }, - "permissions": [ - "iottwinmaker:GetWorkspace", - "iottwinmaker:ListTagsForResource", - "iottwinmaker:GetEntity", - "iottwinmaker:ListEntities" - ] - }, - "read": { - "permissions": [ - "iottwinmaker:GetComponentType", - "iottwinmaker:GetEntity", - "iottwinmaker:ListComponents", - "iottwinmaker:ListProperties", - "iottwinmaker:GetWorkspace", - "iottwinmaker:ListEntities", - "iottwinmaker:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iottwinmaker:GetComponentType", - "iottwinmaker:GetEntity", - "iottwinmaker:ListComponents", - "iottwinmaker:ListProperties", - "iottwinmaker:GetWorkspace", - "iottwinmaker:ListTagsForResource", - "iottwinmaker:TagResource", - "iottwinmaker:UntagResource", - "iottwinmaker:UpdateEntity", - "iottwinmaker:UpdateComponentType" - ] - } - }, - "primaryIdentifier": [ - "/properties/WorkspaceId", - "/properties/EntityId" - ], - "properties": { - "Arn": { - "description": "The ARN of the entity.", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:((aws)|(aws-cn)|(aws-us-gov)):iottwinmaker:[a-z0-9-]+:[0-9]{12}:[\\/a-zA-Z0-9_\\-\\.:]+", - "type": "string" - }, - "Components": { - "additionalProperties": false, - "description": "A map that sets information about a component type.", - "patternProperties": { - "[a-zA-Z_\\-0-9]+": { - "$ref": "#/definitions/Component" - } - }, - "type": "object" - }, - "CompositeComponents": { - "additionalProperties": false, - "description": "A map that sets information about a composite component.", - "patternProperties": { - "[a-zA-Z_\\-0-9/]+": { - "$ref": "#/definitions/CompositeComponent" - } - }, - "type": "object" - }, - "CreationDateTime": { - "$ref": "#/definitions/DateTimeFormat", - "description": "The date and time when the entity was created." - }, - "Description": { - "description": "The description of the entity.", - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "EntityId": { - "description": "The ID of the entity.", - "maxLength": 128, - "minLength": 1, - "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|^[a-zA-Z0-9][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9]+", - "type": "string" - }, - "EntityName": { - "description": "The name of the entity.", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z_0-9-.][a-zA-Z_0-9-. ]*[a-zA-Z0-9]+", - "type": "string" - }, - "HasChildEntities": { - "description": "A Boolean value that specifies whether the entity has child entities or not.", - "type": "boolean" - }, - "ParentEntityId": { - "description": "The ID of the parent entity.", - "maxLength": 128, - "minLength": 1, - "pattern": "\\$ROOT|^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|^[a-zA-Z0-9][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9]+", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/Status", - "description": "The current status of the entity." - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "UpdateDateTime": { - "$ref": "#/definitions/DateTimeFormat", - "description": "The last date and time when the entity was updated." - }, - "WorkspaceId": { - "description": "The ID of the workspace.", - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z_0-9][a-zA-Z_\\-0-9]*[a-zA-Z0-9]+", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationDateTime", - "/properties/UpdateDateTime", - "/properties/Status", - "/properties/HasChildEntities" - ], - "required": [ - "WorkspaceId", - "EntityName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iottwinmaker", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iottwinmaker:TagResource", - "iottwinmaker:UntagResource", - "iottwinmaker:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTTwinMaker::Entity" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/WorkspaceId", + "/properties/EntityId" + ], + "definitions": { + "Component": { + "additionalProperties": false, + "properties": { + "ComponentName": { + "description": "The name of the component.", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z_\\-0-9]+", + "type": "string" + }, + "ComponentTypeId": { + "description": "The ID of the component type.", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z_\\-0-9]+", + "type": "string" + }, + "DefinedIn": { + "description": "The name of the property definition set in the component.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Description": { + "description": "The description of the component.", + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "Properties": { + "additionalProperties": false, + "description": "An object that maps strings to the properties to set in the component type. Each string in the mapping must be unique to this object.", + "patternProperties": { + "[a-zA-Z_\\-0-9]+": { + "$ref": "#/definitions/Property" + } + }, + "type": "object" + }, + "PropertyGroups": { + "additionalProperties": false, + "description": "An object that maps strings to the property groups to set in the component type. Each string in the mapping must be unique to this object.", + "patternProperties": { + "[a-zA-Z_\\-0-9]+": { + "$ref": "#/definitions/PropertyGroup" + } + }, + "type": "object" + }, + "Status": { + "$ref": "#/definitions/Status", + "description": "The current status of the entity." + } + }, + "type": "object" + }, + "CompositeComponent": { + "additionalProperties": false, + "properties": { + "ComponentName": { + "description": "The name of the component.", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z_\\-0-9]+", + "type": "string" + }, + "ComponentPath": { + "description": "The path of the component.", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z_\\-0-9/]+", + "type": "string" + }, + "ComponentTypeId": { + "description": "The ID of the component type.", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z_\\-0-9]+", + "type": "string" + }, + "Description": { + "description": "The description of the component.", + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "Properties": { + "additionalProperties": false, + "description": "An object that maps strings to the properties to set in the component type. Each string in the mapping must be unique to this object.", + "patternProperties": { + "[a-zA-Z_\\-0-9]+": { + "$ref": "#/definitions/Property" + } + }, + "type": "object" + }, + "PropertyGroups": { + "additionalProperties": false, + "description": "An object that maps strings to the property groups to set in the component type. Each string in the mapping must be unique to this object.", + "patternProperties": { + "[a-zA-Z_\\-0-9]+": { + "$ref": "#/definitions/PropertyGroup" + } + }, + "type": "object" + }, + "Status": { + "$ref": "#/definitions/Status", + "description": "The current status of the component." + } + }, + "type": "object" + }, + "DataType": { + "additionalProperties": false, + "description": "An object that specifies the data type of a property.", + "properties": { + "AllowedValues": { + "description": "The allowed values for this data type.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DataValue" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "NestedType": { + "$ref": "#/definitions/DataType", + "description": "The nested type in the data type." + }, + "Relationship": { + "$ref": "#/definitions/Relationship", + "description": "A relationship that associates a component with another component." + }, + "Type": { + "description": "The underlying type of the data type.", + "enum": [ + "RELATIONSHIP", + "STRING", + "LONG", + "BOOLEAN", + "INTEGER", + "DOUBLE", + "LIST", + "MAP" + ], + "type": "string" + }, + "UnitOfMeasure": { + "description": "The unit of measure used in this data type.", + "maxLength": 256, + "minLength": 1, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "DataValue": { + "additionalProperties": false, + "description": "An object that specifies a value for a property.", + "properties": { + "BooleanValue": { + "description": "A Boolean value.", + "type": "boolean" + }, + "DoubleValue": { + "description": "A double value.", + "type": "number" + }, + "Expression": { + "description": "An expression that produces the value.", + "maxLength": 316, + "minLength": 1, + "pattern": "(^\\$\\{Parameters\\.[a-zA-z]+([a-zA-z_0-9]*)}$)", + "type": "string" + }, + "IntegerValue": { + "description": "An integer value.", + "type": "integer" + }, + "ListValue": { + "description": "A list of multiple values.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DataValue" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "LongValue": { + "description": "A long value.", + "type": "number" + }, + "MapValue": { + "additionalProperties": false, + "description": "An object that maps strings to multiple DataValue objects.", + "patternProperties": { + "[a-zA-Z_\\-0-9]+": { + "$ref": "#/definitions/DataValue" + } + }, + "type": "object" + }, + "RelationshipValue": { + "additionalProperties": false, + "description": "A value that relates a component to another component.", + "properties": { + "TargetComponentName": { + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z_\\-0-9]+", + "type": "string" + }, + "TargetEntityId": { + "maxLength": 128, + "minLength": 1, + "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|^[a-zA-Z0-9][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9]+", + "type": "string" + } + }, + "type": "object" + }, + "StringValue": { + "description": "A string value.", + "maxLength": 256, + "minLength": 1, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "DateTimeFormat": { + "format": "date-time", + "type": "string" + }, + "Definition": { + "additionalProperties": false, + "description": "An object that specifies information about a property definition.", + "properties": { + "Configuration": { + "$ref": "#/definitions/PropertyDefinitionConfiguration", + "description": "An object that specifies information about a property configuration." + }, + "DataType": { + "$ref": "#/definitions/DataType", + "description": "An object that contains information about the data type." + }, + "DefaultValue": { + "$ref": "#/definitions/DataValue", + "description": "An object that contains the default value." + }, + "IsExternalId": { + "description": "A Boolean value that specifies whether the property ID comes from an external data store.", + "type": "boolean" + }, + "IsFinal": { + "description": "A Boolean value that specifies whether the property definition can be updated.", + "type": "boolean" + }, + "IsImported": { + "description": "A Boolean value that specifies whether the property definition is imported from an external data store.", + "type": "boolean" + }, + "IsInherited": { + "description": "A Boolean value that specifies whether the property definition is inherited from a parent entity.", + "type": "boolean" + }, + "IsRequiredInEntity": { + "description": "A Boolean value that specifies whether the property is required.", + "type": "boolean" + }, + "IsStoredExternally": { + "description": "A Boolean value that specifies whether the property is stored externally.", + "type": "boolean" + }, + "IsTimeSeries": { + "description": "A Boolean value that specifies whether the property consists of time series data.", + "type": "boolean" + } + }, + "type": "object" + }, + "Property": { + "additionalProperties": false, + "description": "An object that specifies information about a property.", + "properties": { + "Definition": { + "$ref": "#/definitions/Definition", + "description": "The definition of the property." + }, + "Value": { + "$ref": "#/definitions/DataValue", + "description": "The value of the property." + } + }, + "type": "object" + }, + "PropertyDefinitionConfiguration": { + "additionalProperties": false, + "description": "An object that specifies information about a property configuration.", + "patternProperties": { + "[a-zA-Z_\\-0-9]+": { + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z_\\-0-9]+", + "type": "string" + } + }, + "type": "object" + }, + "PropertyGroup": { + "additionalProperties": false, + "description": "An object that specifies information about a property group.", + "properties": { + "GroupType": { + "description": "The type of property group.", + "enum": [ + "TABULAR" + ], + "type": "string" + }, + "PropertyNames": { + "description": "The list of property names in the property group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PropertyName" + }, + "maxItems": 256, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "PropertyName": { + "pattern": "[a-zA-Z_\\-0-9]+", + "type": "string" + }, + "Relationship": { + "additionalProperties": false, + "description": "The type of the relationship.", + "properties": { + "RelationshipType": { + "description": "The type of the relationship.", + "maxLength": 256, + "minLength": 1, + "pattern": ".*", + "type": "string" + }, + "TargetComponentTypeId": { + "description": "The ID of the target component type associated with this relationship.", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z_\\.\\-0-9:]+", + "type": "string" + } + }, + "type": "object" + }, + "Status": { + "additionalProperties": false, + "properties": { + "Error": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Empty Error object.", + "type": "object" + }, + { + "additionalProperties": false, + "description": "Error object with Message and Code.", + "properties": { + "Code": { + "enum": [ + "VALIDATION_ERROR", + "INTERNAL_FAILURE" + ], + "type": "string" + }, + "Message": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + ], + "type": "object" + }, + "State": { + "enum": [ + "CREATING", + "UPDATING", + "DELETING", + "ACTIVE", + "ERROR" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::IoTTwinMaker::Entity", + "handlers": { + "create": { + "permissions": [ + "iottwinmaker:GetWorkspace", + "iottwinmaker:CreateEntity", + "iottwinmaker:GetEntity", + "iottwinmaker:ListComponents", + "iottwinmaker:ListProperties", + "iottwinmaker:ListTagsForResource", + "iottwinmaker:TagResource" + ] + }, + "delete": { + "permissions": [ + "iottwinmaker:GetEntity", + "iottwinmaker:GetWorkspace", + "iottwinmaker:DeleteEntity" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "WorkspaceId": { + "$ref": "resource-schema.json#/properties/WorkspaceId", + "type": "string" + } + }, + "required": [ + "WorkspaceId" + ] + }, + "permissions": [ + "iottwinmaker:GetWorkspace", + "iottwinmaker:ListTagsForResource", + "iottwinmaker:GetEntity", + "iottwinmaker:ListEntities" + ] + }, + "read": { + "permissions": [ + "iottwinmaker:GetComponentType", + "iottwinmaker:GetEntity", + "iottwinmaker:ListComponents", + "iottwinmaker:ListProperties", + "iottwinmaker:GetWorkspace", + "iottwinmaker:ListEntities", + "iottwinmaker:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iottwinmaker:GetComponentType", + "iottwinmaker:GetEntity", + "iottwinmaker:ListComponents", + "iottwinmaker:ListProperties", + "iottwinmaker:GetWorkspace", + "iottwinmaker:ListTagsForResource", + "iottwinmaker:TagResource", + "iottwinmaker:UntagResource", + "iottwinmaker:UpdateEntity", + "iottwinmaker:UpdateComponentType" + ] + } + }, + "primaryIdentifier": [ + "/properties/WorkspaceId", + "/properties/EntityId" + ], + "properties": { + "Arn": { + "description": "The ARN of the entity.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:((aws)|(aws-cn)|(aws-us-gov)):iottwinmaker:[a-z0-9-]+:[0-9]{12}:[\\/a-zA-Z0-9_\\-\\.:]+", + "type": "string" + }, + "Components": { + "additionalProperties": false, + "description": "A map that sets information about a component type.", + "patternProperties": { + "[a-zA-Z_\\-0-9]+": { + "$ref": "#/definitions/Component" + } + }, + "type": "object" + }, + "CompositeComponents": { + "additionalProperties": false, + "description": "A map that sets information about a composite component.", + "patternProperties": { + "[a-zA-Z_\\-0-9/]+": { + "$ref": "#/definitions/CompositeComponent" + } + }, + "type": "object" + }, + "CreationDateTime": { + "$ref": "#/definitions/DateTimeFormat", + "description": "The date and time when the entity was created." + }, + "Description": { + "description": "The description of the entity.", + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "EntityId": { + "description": "The ID of the entity.", + "maxLength": 128, + "minLength": 1, + "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|^[a-zA-Z0-9][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9]+", + "type": "string" + }, + "EntityName": { + "description": "The name of the entity.", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z_0-9-.][a-zA-Z_0-9-. ]*[a-zA-Z0-9]+", + "type": "string" + }, + "HasChildEntities": { + "description": "A Boolean value that specifies whether the entity has child entities or not.", + "type": "boolean" + }, + "ParentEntityId": { + "description": "The ID of the parent entity.", + "maxLength": 128, + "minLength": 1, + "pattern": "\\$ROOT|^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|^[a-zA-Z0-9][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9]+", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/Status", + "description": "The current status of the entity." + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "UpdateDateTime": { + "$ref": "#/definitions/DateTimeFormat", + "description": "The last date and time when the entity was updated." + }, + "WorkspaceId": { + "description": "The ID of the workspace.", + "maxLength": 128, + "minLength": 1, + "pattern": "[a-zA-Z_0-9][a-zA-Z_\\-0-9]*[a-zA-Z0-9]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationDateTime", + "/properties/UpdateDateTime", + "/properties/Status", + "/properties/HasChildEntities" + ], + "required": [ + "WorkspaceId", + "EntityName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iottwinmaker", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iottwinmaker:TagResource", + "iottwinmaker:UntagResource", + "iottwinmaker:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTTwinMaker::Entity" +} diff --git a/src/schema/aws-iottwinmaker-scene.json b/src/schema/aws-iottwinmaker-scene.json index 70fdd7b9..eeafe452 100644 --- a/src/schema/aws-iottwinmaker-scene.json +++ b/src/schema/aws-iottwinmaker-scene.json @@ -1,194 +1,194 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SceneId", - "/properties/WorkspaceId" - ], - "definitions": { - "DateTimeFormat": { - "format": "date-time", - "type": "string" - } - }, - "description": "Resource schema for AWS::IoTTwinMaker::Scene", - "handlers": { - "create": { - "permissions": [ - "iottwinmaker:CreateScene", - "iottwinmaker:GetScene", - "iottwinmaker:GetWorkspace", - "iottwinmaker:ListTagsForResource", - "iottwinmaker:TagResource" - ] - }, - "delete": { - "permissions": [ - "iottwinmaker:DeleteScene", - "iottwinmaker:GetScene", - "iottwinmaker:GetWorkspace" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "WorkspaceId": { - "$ref": "resource-schema.json#/properties/WorkspaceId", - "type": "string" - } - }, - "required": [ - "WorkspaceId" - ] - }, - "permissions": [ - "iottwinmaker:GetWorkspace", - "iottwinmaker:ListTagsForResource", - "iottwinmaker:ListScenes" - ] - }, - "read": { - "permissions": [ - "iottwinmaker:GetWorkspace", - "iottwinmaker:GetScene", - "iottwinmaker:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iottwinmaker:GetScene", - "iottwinmaker:GetWorkspace", - "iottwinmaker:ListTagsForResource", - "iottwinmaker:TagResource", - "iottwinmaker:UntagResource", - "iottwinmaker:UpdateScene" - ] - } - }, - "primaryIdentifier": [ - "/properties/WorkspaceId", - "/properties/SceneId" - ], - "properties": { - "Arn": { - "description": "The ARN of the scene.", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:((aws)|(aws-cn)|(aws-us-gov)):iottwinmaker:[a-z0-9-]+:[0-9]{12}:[\\/a-zA-Z0-9_\\-\\.:]+", - "type": "string" - }, - "Capabilities": { - "description": "A list of capabilities that the scene uses to render.", - "insertionOrder": false, - "items": { - "maxLength": 256, - "minLength": 0, - "pattern": ".*", - "type": "string" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "ContentLocation": { - "description": "The relative path that specifies the location of the content definition file.", - "maxLength": 256, - "minLength": 0, - "pattern": "[sS]3://[A-Za-z0-9._/-]+", - "type": "string" - }, - "CreationDateTime": { - "$ref": "#/definitions/DateTimeFormat", - "description": "The date and time when the scene was created." - }, - "Description": { - "description": "The description of the scene.", - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "GeneratedSceneMetadata": { - "additionalProperties": false, - "description": "A key-value pair of generated scene metadata for the scene.", - "maxLength": 50, - "minLength": 0, - "patternProperties": { - "[a-zA-Z_\\-0-9]+": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "SceneId": { - "description": "The ID of the scene.", - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z_0-9][a-zA-Z_\\-0-9]*[a-zA-Z0-9]+", - "type": "string" - }, - "SceneMetadata": { - "additionalProperties": false, - "description": "A key-value pair of scene metadata for the scene.", - "maxLength": 50, - "minLength": 0, - "patternProperties": { - "[a-zA-Z_\\-0-9]+": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "UpdateDateTime": { - "$ref": "#/definitions/DateTimeFormat", - "description": "The date and time of the current update." - }, - "WorkspaceId": { - "description": "The ID of the scene.", - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z_0-9][a-zA-Z_\\-0-9]*[a-zA-Z0-9]+", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationDateTime", - "/properties/UpdateDateTime", - "/properties/GeneratedSceneMetadata" - ], - "required": [ - "WorkspaceId", - "SceneId", - "ContentLocation" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iottwinmaker", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iottwinmaker:TagResource", - "iottwinmaker:UntagResource", - "iottwinmaker:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTTwinMaker::Scene" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SceneId", + "/properties/WorkspaceId" + ], + "definitions": { + "DateTimeFormat": { + "format": "date-time", + "type": "string" + } + }, + "description": "Resource schema for AWS::IoTTwinMaker::Scene", + "handlers": { + "create": { + "permissions": [ + "iottwinmaker:CreateScene", + "iottwinmaker:GetScene", + "iottwinmaker:GetWorkspace", + "iottwinmaker:ListTagsForResource", + "iottwinmaker:TagResource" + ] + }, + "delete": { + "permissions": [ + "iottwinmaker:DeleteScene", + "iottwinmaker:GetScene", + "iottwinmaker:GetWorkspace" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "WorkspaceId": { + "$ref": "resource-schema.json#/properties/WorkspaceId", + "type": "string" + } + }, + "required": [ + "WorkspaceId" + ] + }, + "permissions": [ + "iottwinmaker:GetWorkspace", + "iottwinmaker:ListTagsForResource", + "iottwinmaker:ListScenes" + ] + }, + "read": { + "permissions": [ + "iottwinmaker:GetWorkspace", + "iottwinmaker:GetScene", + "iottwinmaker:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iottwinmaker:GetScene", + "iottwinmaker:GetWorkspace", + "iottwinmaker:ListTagsForResource", + "iottwinmaker:TagResource", + "iottwinmaker:UntagResource", + "iottwinmaker:UpdateScene" + ] + } + }, + "primaryIdentifier": [ + "/properties/WorkspaceId", + "/properties/SceneId" + ], + "properties": { + "Arn": { + "description": "The ARN of the scene.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:((aws)|(aws-cn)|(aws-us-gov)):iottwinmaker:[a-z0-9-]+:[0-9]{12}:[\\/a-zA-Z0-9_\\-\\.:]+", + "type": "string" + }, + "Capabilities": { + "description": "A list of capabilities that the scene uses to render.", + "insertionOrder": false, + "items": { + "maxLength": 256, + "minLength": 0, + "pattern": ".*", + "type": "string" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "ContentLocation": { + "description": "The relative path that specifies the location of the content definition file.", + "maxLength": 256, + "minLength": 0, + "pattern": "[sS]3://[A-Za-z0-9._/-]+", + "type": "string" + }, + "CreationDateTime": { + "$ref": "#/definitions/DateTimeFormat", + "description": "The date and time when the scene was created." + }, + "Description": { + "description": "The description of the scene.", + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "GeneratedSceneMetadata": { + "additionalProperties": false, + "description": "A key-value pair of generated scene metadata for the scene.", + "maxLength": 50, + "minLength": 0, + "patternProperties": { + "[a-zA-Z_\\-0-9]+": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "SceneId": { + "description": "The ID of the scene.", + "maxLength": 128, + "minLength": 1, + "pattern": "[a-zA-Z_0-9][a-zA-Z_\\-0-9]*[a-zA-Z0-9]+", + "type": "string" + }, + "SceneMetadata": { + "additionalProperties": false, + "description": "A key-value pair of scene metadata for the scene.", + "maxLength": 50, + "minLength": 0, + "patternProperties": { + "[a-zA-Z_\\-0-9]+": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "UpdateDateTime": { + "$ref": "#/definitions/DateTimeFormat", + "description": "The date and time of the current update." + }, + "WorkspaceId": { + "description": "The ID of the scene.", + "maxLength": 128, + "minLength": 1, + "pattern": "[a-zA-Z_0-9][a-zA-Z_\\-0-9]*[a-zA-Z0-9]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationDateTime", + "/properties/UpdateDateTime", + "/properties/GeneratedSceneMetadata" + ], + "required": [ + "WorkspaceId", + "SceneId", + "ContentLocation" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iottwinmaker", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iottwinmaker:TagResource", + "iottwinmaker:UntagResource", + "iottwinmaker:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTTwinMaker::Scene" +} diff --git a/src/schema/aws-iottwinmaker-syncjob.json b/src/schema/aws-iottwinmaker-syncjob.json index 48f1567f..47b35b5d 100644 --- a/src/schema/aws-iottwinmaker-syncjob.json +++ b/src/schema/aws-iottwinmaker-syncjob.json @@ -1,146 +1,146 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/WorkspaceId", - "/properties/SyncSource", - "/properties/SyncRole", - "/properties/Tags" - ], - "definitions": { - "DateTimeFormat": { - "format": "date-time", - "type": "string" - } - }, - "description": "Resource schema for AWS::IoTTwinMaker::SyncJob", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "iottwinmaker:CreateSyncJob", - "iottwinmaker:GetSyncJob", - "iottwinmaker:GetWorkspace", - "iottwinmaker:ListTagsForResource", - "iottwinmaker:TagResource" - ] - }, - "delete": { - "permissions": [ - "iottwinmaker:DeleteSyncJob", - "iottwinmaker:GetSyncJob", - "iottwinmaker:GetWorkspace" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "WorkspaceId": { - "$ref": "resource-schema.json#/properties/WorkspaceId", - "type": "string" - } - }, - "required": [ - "WorkspaceId" - ] - }, - "permissions": [ - "iottwinmaker:GetWorkspace", - "iottwinmaker:ListSyncJobs", - "iottwinmaker:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "iottwinmaker:GetSyncJob", - "iottwinmaker:GetWorkspace", - "iottwinmaker:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/WorkspaceId", - "/properties/SyncSource" - ], - "properties": { - "Arn": { - "description": "The ARN of the SyncJob.", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:((aws)|(aws-cn)|(aws-us-gov)):iottwinmaker:[a-z0-9-]+:[0-9]{12}:[\\/a-zA-Z0-9_\\-\\.:]+", - "type": "string" - }, - "CreationDateTime": { - "$ref": "#/definitions/DateTimeFormat", - "description": "The date and time when the sync job was created." - }, - "State": { - "description": "The state of SyncJob.", - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z_\\-0-9]+", - "type": "string" - }, - "SyncRole": { - "description": "The IAM Role that execute SyncJob.", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:((aws)|(aws-cn)|(aws-us-gov)):iam::[0-9]{12}:role/.*", - "type": "string" - }, - "SyncSource": { - "description": "The source of the SyncJob.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "UpdateDateTime": { - "$ref": "#/definitions/DateTimeFormat", - "description": "The date and time when the sync job was updated." - }, - "WorkspaceId": { - "description": "The ID of the workspace.", - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z_0-9][a-zA-Z_\\-0-9]*[a-zA-Z0-9]+", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationDateTime", - "/properties/UpdateDateTime", - "/properties/State" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "WorkspaceId", - "SyncSource", - "SyncRole" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iottwinmaker", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iottwinmaker:TagResource", - "iottwinmaker:UntagResource", - "iottwinmaker:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::IoTTwinMaker::SyncJob" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/WorkspaceId", + "/properties/SyncSource", + "/properties/SyncRole", + "/properties/Tags" + ], + "definitions": { + "DateTimeFormat": { + "format": "date-time", + "type": "string" + } + }, + "description": "Resource schema for AWS::IoTTwinMaker::SyncJob", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "iottwinmaker:CreateSyncJob", + "iottwinmaker:GetSyncJob", + "iottwinmaker:GetWorkspace", + "iottwinmaker:ListTagsForResource", + "iottwinmaker:TagResource" + ] + }, + "delete": { + "permissions": [ + "iottwinmaker:DeleteSyncJob", + "iottwinmaker:GetSyncJob", + "iottwinmaker:GetWorkspace" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "WorkspaceId": { + "$ref": "resource-schema.json#/properties/WorkspaceId", + "type": "string" + } + }, + "required": [ + "WorkspaceId" + ] + }, + "permissions": [ + "iottwinmaker:GetWorkspace", + "iottwinmaker:ListSyncJobs", + "iottwinmaker:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iottwinmaker:GetSyncJob", + "iottwinmaker:GetWorkspace", + "iottwinmaker:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/WorkspaceId", + "/properties/SyncSource" + ], + "properties": { + "Arn": { + "description": "The ARN of the SyncJob.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:((aws)|(aws-cn)|(aws-us-gov)):iottwinmaker:[a-z0-9-]+:[0-9]{12}:[\\/a-zA-Z0-9_\\-\\.:]+", + "type": "string" + }, + "CreationDateTime": { + "$ref": "#/definitions/DateTimeFormat", + "description": "The date and time when the sync job was created." + }, + "State": { + "description": "The state of SyncJob.", + "maxLength": 128, + "minLength": 1, + "pattern": "[a-zA-Z_\\-0-9]+", + "type": "string" + }, + "SyncRole": { + "description": "The IAM Role that execute SyncJob.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:((aws)|(aws-cn)|(aws-us-gov)):iam::[0-9]{12}:role/.*", + "type": "string" + }, + "SyncSource": { + "description": "The source of the SyncJob.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "UpdateDateTime": { + "$ref": "#/definitions/DateTimeFormat", + "description": "The date and time when the sync job was updated." + }, + "WorkspaceId": { + "description": "The ID of the workspace.", + "maxLength": 128, + "minLength": 1, + "pattern": "[a-zA-Z_0-9][a-zA-Z_\\-0-9]*[a-zA-Z0-9]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationDateTime", + "/properties/UpdateDateTime", + "/properties/State" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "WorkspaceId", + "SyncSource", + "SyncRole" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iottwinmaker", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iottwinmaker:TagResource", + "iottwinmaker:UntagResource", + "iottwinmaker:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::IoTTwinMaker::SyncJob" +} diff --git a/src/schema/aws-iottwinmaker-workspace.json b/src/schema/aws-iottwinmaker-workspace.json index 1339139e..618be2ef 100644 --- a/src/schema/aws-iottwinmaker-workspace.json +++ b/src/schema/aws-iottwinmaker-workspace.json @@ -1,132 +1,132 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/WorkspaceId" - ], - "definitions": { - "DateTimeFormat": { - "format": "date-time", - "type": "string" - } - }, - "description": "Resource schema for AWS::IoTTwinMaker::Workspace", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "iottwinmaker:CreateWorkspace", - "iottwinmaker:GetWorkspace", - "iottwinmaker:ListTagsForResource", - "iottwinmaker:TagResource" - ] - }, - "delete": { - "permissions": [ - "iottwinmaker:DeleteWorkspace", - "iottwinmaker:GetWorkspace" - ] - }, - "list": { - "permissions": [ - "iottwinmaker:GetWorkspace", - "iottwinmaker:ListTagsForResource", - "iottwinmaker:ListWorkspaces" - ] - }, - "read": { - "permissions": [ - "iottwinmaker:GetWorkspace", - "iottwinmaker:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iottwinmaker:GetWorkspace", - "iottwinmaker:ListTagsForResource", - "iottwinmaker:TagResource", - "iottwinmaker:UntagResource", - "iottwinmaker:UpdateWorkspace" - ] - } - }, - "primaryIdentifier": [ - "/properties/WorkspaceId" - ], - "properties": { - "Arn": { - "description": "The ARN of the workspace.", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:((aws)|(aws-cn)|(aws-us-gov)):iottwinmaker:[a-z0-9-]+:[0-9]{12}:[\\/a-zA-Z0-9_\\-\\.:]+", - "type": "string" - }, - "CreationDateTime": { - "$ref": "#/definitions/DateTimeFormat", - "description": "The date and time when the workspace was created." - }, - "Description": { - "description": "The description of the workspace.", - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "Role": { - "description": "The ARN of the execution role associated with the workspace.", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:((aws)|(aws-cn)|(aws-us-gov)):iam::[0-9]{12}:role/.*", - "type": "string" - }, - "S3Location": { - "description": "The ARN of the S3 bucket where resources associated with the workspace are stored.", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "A map of key-value pairs to associate with a resource.", - "maxProperties": 50, - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "UpdateDateTime": { - "$ref": "#/definitions/DateTimeFormat", - "description": "The date and time of the current update." - }, - "WorkspaceId": { - "description": "The ID of the workspace.", - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z_0-9][a-zA-Z_\\-0-9]*[a-zA-Z0-9]+", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationDateTime", - "/properties/UpdateDateTime" - ], - "required": [ - "WorkspaceId", - "Role", - "S3Location" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iottwinmaker:TagResource", - "iottwinmaker:UntagResource", - "iottwinmaker:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTTwinMaker::Workspace" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/WorkspaceId" + ], + "definitions": { + "DateTimeFormat": { + "format": "date-time", + "type": "string" + } + }, + "description": "Resource schema for AWS::IoTTwinMaker::Workspace", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "iottwinmaker:CreateWorkspace", + "iottwinmaker:GetWorkspace", + "iottwinmaker:ListTagsForResource", + "iottwinmaker:TagResource" + ] + }, + "delete": { + "permissions": [ + "iottwinmaker:DeleteWorkspace", + "iottwinmaker:GetWorkspace" + ] + }, + "list": { + "permissions": [ + "iottwinmaker:GetWorkspace", + "iottwinmaker:ListTagsForResource", + "iottwinmaker:ListWorkspaces" + ] + }, + "read": { + "permissions": [ + "iottwinmaker:GetWorkspace", + "iottwinmaker:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iottwinmaker:GetWorkspace", + "iottwinmaker:ListTagsForResource", + "iottwinmaker:TagResource", + "iottwinmaker:UntagResource", + "iottwinmaker:UpdateWorkspace" + ] + } + }, + "primaryIdentifier": [ + "/properties/WorkspaceId" + ], + "properties": { + "Arn": { + "description": "The ARN of the workspace.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:((aws)|(aws-cn)|(aws-us-gov)):iottwinmaker:[a-z0-9-]+:[0-9]{12}:[\\/a-zA-Z0-9_\\-\\.:]+", + "type": "string" + }, + "CreationDateTime": { + "$ref": "#/definitions/DateTimeFormat", + "description": "The date and time when the workspace was created." + }, + "Description": { + "description": "The description of the workspace.", + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "Role": { + "description": "The ARN of the execution role associated with the workspace.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:((aws)|(aws-cn)|(aws-us-gov)):iam::[0-9]{12}:role/.*", + "type": "string" + }, + "S3Location": { + "description": "The ARN of the S3 bucket where resources associated with the workspace are stored.", + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "A map of key-value pairs to associate with a resource.", + "maxProperties": 50, + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "UpdateDateTime": { + "$ref": "#/definitions/DateTimeFormat", + "description": "The date and time of the current update." + }, + "WorkspaceId": { + "description": "The ID of the workspace.", + "maxLength": 128, + "minLength": 1, + "pattern": "[a-zA-Z_0-9][a-zA-Z_\\-0-9]*[a-zA-Z0-9]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationDateTime", + "/properties/UpdateDateTime" + ], + "required": [ + "WorkspaceId", + "Role", + "S3Location" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iottwinmaker:TagResource", + "iottwinmaker:UntagResource", + "iottwinmaker:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTTwinMaker::Workspace" +} diff --git a/src/schema/aws-iotwireless-destination.json b/src/schema/aws-iotwireless-destination.json index 3a63dc1e..0d7f50e8 100644 --- a/src/schema/aws-iotwireless-destination.json +++ b/src/schema/aws-iotwireless-destination.json @@ -1,131 +1,131 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Destination's resource schema demonstrating some basic constructs and validation rules.", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "iotwireless:CreateDestination", - "iotwireless:TagResource" - ] - }, - "delete": { - "permissions": [ - "iotwireless:DeleteDestination" - ] - }, - "list": { - "permissions": [ - "iotwireless:ListDestinations", - "iotwireless:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "iotwireless:GetDestination", - "iotwireless:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "iotwireless:GetDestination", - "iotwireless:UpdateDestination", - "iotwireless:UntagResource", - "iotwireless:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "description": "Destination arn. Returned after successful create.", - "type": "string" - }, - "Description": { - "description": "Destination description", - "maxLength": 2048, - "type": "string" - }, - "Expression": { - "description": "Destination expression", - "type": "string" - }, - "ExpressionType": { - "description": "Must be RuleName", - "enum": [ - "RuleName", - "MqttTopic", - "SnsTopic" - ], - "type": "string" - }, - "Name": { - "description": "Unique name of destination", - "maxLength": 128, - "pattern": "[a-zA-Z0-9:_-]+", - "type": "string" - }, - "RoleArn": { - "description": "AWS role ARN that grants access", - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the destination.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name", - "Expression", - "ExpressionType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotwireless:TagResource", - "iotwireless:UntagResource", - "iotwireless:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTWireless::Destination" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Destination's resource schema demonstrating some basic constructs and validation rules.", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "iotwireless:CreateDestination", + "iotwireless:TagResource" + ] + }, + "delete": { + "permissions": [ + "iotwireless:DeleteDestination" + ] + }, + "list": { + "permissions": [ + "iotwireless:ListDestinations", + "iotwireless:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iotwireless:GetDestination", + "iotwireless:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "iotwireless:GetDestination", + "iotwireless:UpdateDestination", + "iotwireless:UntagResource", + "iotwireless:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "description": "Destination arn. Returned after successful create.", + "type": "string" + }, + "Description": { + "description": "Destination description", + "maxLength": 2048, + "type": "string" + }, + "Expression": { + "description": "Destination expression", + "type": "string" + }, + "ExpressionType": { + "description": "Must be RuleName", + "enum": [ + "RuleName", + "MqttTopic", + "SnsTopic" + ], + "type": "string" + }, + "Name": { + "description": "Unique name of destination", + "maxLength": 128, + "pattern": "[a-zA-Z0-9:_-]+", + "type": "string" + }, + "RoleArn": { + "description": "AWS role ARN that grants access", + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the destination.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name", + "Expression", + "ExpressionType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotwireless:TagResource", + "iotwireless:UntagResource", + "iotwireless:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTWireless::Destination" +} diff --git a/src/schema/aws-iotwireless-deviceprofile.json b/src/schema/aws-iotwireless-deviceprofile.json index 4050db71..262e912e 100644 --- a/src/schema/aws-iotwireless-deviceprofile.json +++ b/src/schema/aws-iotwireless-deviceprofile.json @@ -1,207 +1,207 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/LoRaWAN" - ], - "definitions": { - "FactoryPresetFreq": { - "maximum": 16700000, - "minimum": 1000000, - "type": "integer" - }, - "LoRaWANDeviceProfile": { - "additionalProperties": false, - "properties": { - "ClassBTimeout": { - "maximum": 1000, - "minimum": 0, - "type": "integer" - }, - "ClassCTimeout": { - "maximum": 1000, - "minimum": 0, - "type": "integer" - }, - "FactoryPresetFreqsList": { - "items": { - "$ref": "#/definitions/FactoryPresetFreq" - }, - "maxItems": 20, - "type": "array" - }, - "MacVersion": { - "maxLength": 64, - "type": "string" - }, - "MaxDutyCycle": { - "maximum": 100, - "minimum": 0, - "type": "integer" - }, - "MaxEirp": { - "maximum": 15, - "minimum": 0, - "type": "integer" - }, - "PingSlotDr": { - "maximum": 15, - "minimum": 0, - "type": "integer" - }, - "PingSlotFreq": { - "maximum": 16700000, - "minimum": 1000000, - "type": "integer" - }, - "PingSlotPeriod": { - "maximum": 4096, - "minimum": 128, - "type": "integer" - }, - "RegParamsRevision": { - "maxLength": 64, - "type": "string" - }, - "RfRegion": { - "maxLength": 64, - "type": "string" - }, - "RxDataRate2": { - "maximum": 15, - "minimum": 0, - "type": "integer" - }, - "RxDelay1": { - "maximum": 15, - "minimum": 0, - "type": "integer" - }, - "RxDrOffset1": { - "maximum": 7, - "minimum": 0, - "type": "integer" - }, - "RxFreq2": { - "maximum": 16700000, - "minimum": 1000000, - "type": "integer" - }, - "Supports32BitFCnt": { - "type": "boolean" - }, - "SupportsClassB": { - "type": "boolean" - }, - "SupportsClassC": { - "type": "boolean" - }, - "SupportsJoin": { - "type": "boolean" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Device Profile's resource schema demonstrating some basic constructs and validation rules.", - "handlers": { - "create": { - "permissions": [ - "iotwireless:CreateDeviceProfile", - "iotwireless:TagResource" - ] - }, - "delete": { - "permissions": [ - "iotwireless:DeleteDeviceProfile" - ] - }, - "list": { - "permissions": [ - "iotwireless:ListDeviceProfiles", - "iotwireless:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "iotwireless:GetDeviceProfile", - "iotwireless:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotwireless:GetDeviceProfile", - "iotwireless:TagResource", - "iotwireless:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "Service profile Arn. Returned after successful create.", - "type": "string" - }, - "Id": { - "description": "Service profile Id. Returned after successful create.", - "maxLength": 256, - "type": "string" - }, - "LoRaWAN": { - "$ref": "#/definitions/LoRaWANDeviceProfile", - "description": "LoRaWANDeviceProfile supports all LoRa specific attributes for service profile for CreateDeviceProfile operation" - }, - "Name": { - "description": "Name of service profile", - "maxLength": 256, - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the device profile.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotwireless:TagResource", - "iotwireless:UntagResource", - "iotwireless:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTWireless::DeviceProfile" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/LoRaWAN" + ], + "definitions": { + "FactoryPresetFreq": { + "maximum": 16700000, + "minimum": 1000000, + "type": "integer" + }, + "LoRaWANDeviceProfile": { + "additionalProperties": false, + "properties": { + "ClassBTimeout": { + "maximum": 1000, + "minimum": 0, + "type": "integer" + }, + "ClassCTimeout": { + "maximum": 1000, + "minimum": 0, + "type": "integer" + }, + "FactoryPresetFreqsList": { + "items": { + "$ref": "#/definitions/FactoryPresetFreq" + }, + "maxItems": 20, + "type": "array" + }, + "MacVersion": { + "maxLength": 64, + "type": "string" + }, + "MaxDutyCycle": { + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "MaxEirp": { + "maximum": 15, + "minimum": 0, + "type": "integer" + }, + "PingSlotDr": { + "maximum": 15, + "minimum": 0, + "type": "integer" + }, + "PingSlotFreq": { + "maximum": 16700000, + "minimum": 1000000, + "type": "integer" + }, + "PingSlotPeriod": { + "maximum": 4096, + "minimum": 128, + "type": "integer" + }, + "RegParamsRevision": { + "maxLength": 64, + "type": "string" + }, + "RfRegion": { + "maxLength": 64, + "type": "string" + }, + "RxDataRate2": { + "maximum": 15, + "minimum": 0, + "type": "integer" + }, + "RxDelay1": { + "maximum": 15, + "minimum": 0, + "type": "integer" + }, + "RxDrOffset1": { + "maximum": 7, + "minimum": 0, + "type": "integer" + }, + "RxFreq2": { + "maximum": 16700000, + "minimum": 1000000, + "type": "integer" + }, + "Supports32BitFCnt": { + "type": "boolean" + }, + "SupportsClassB": { + "type": "boolean" + }, + "SupportsClassC": { + "type": "boolean" + }, + "SupportsJoin": { + "type": "boolean" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Device Profile's resource schema demonstrating some basic constructs and validation rules.", + "handlers": { + "create": { + "permissions": [ + "iotwireless:CreateDeviceProfile", + "iotwireless:TagResource" + ] + }, + "delete": { + "permissions": [ + "iotwireless:DeleteDeviceProfile" + ] + }, + "list": { + "permissions": [ + "iotwireless:ListDeviceProfiles", + "iotwireless:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iotwireless:GetDeviceProfile", + "iotwireless:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotwireless:GetDeviceProfile", + "iotwireless:TagResource", + "iotwireless:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "Service profile Arn. Returned after successful create.", + "type": "string" + }, + "Id": { + "description": "Service profile Id. Returned after successful create.", + "maxLength": 256, + "type": "string" + }, + "LoRaWAN": { + "$ref": "#/definitions/LoRaWANDeviceProfile", + "description": "LoRaWANDeviceProfile supports all LoRa specific attributes for service profile for CreateDeviceProfile operation" + }, + "Name": { + "description": "Name of service profile", + "maxLength": 256, + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the device profile.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotwireless:TagResource", + "iotwireless:UntagResource", + "iotwireless:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTWireless::DeviceProfile" +} diff --git a/src/schema/aws-iotwireless-fuotatask.json b/src/schema/aws-iotwireless-fuotatask.json index f380a3c1..79aa05e7 100644 --- a/src/schema/aws-iotwireless-fuotatask.json +++ b/src/schema/aws-iotwireless-fuotatask.json @@ -1,181 +1,181 @@ -{ - "additionalProperties": false, - "definitions": { - "LoRaWAN": { - "additionalProperties": false, - "properties": { - "RfRegion": { - "description": "FUOTA task LoRaWAN RF region", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "StartTime": { - "description": "FUOTA task LoRaWAN start time", - "maxLength": 64, - "type": "string" - } - }, - "required": [ - "RfRegion" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Create and manage FUOTA tasks.", - "handlers": { - "create": { - "permissions": [ - "iotwireless:CreateFuotaTask", - "iotwireless:TagResource", - "iam:GetRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "iotwireless:DeleteFuotaTask" - ] - }, - "list": { - "permissions": [ - "iotwireless:ListFuotaTasks", - "iotwireless:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "iotwireless:GetFuotaTask", - "iotwireless:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "iotwireless:UpdateFuotaTask", - "iotwireless:GetFuotaTask", - "iotwireless:TagResource", - "iotwireless:UntagResource", - "iotwireless:AssociateMulticastGroupWithFuotaTask", - "iotwireless:DisassociateMulticastGroupFromFuotaTask", - "iotwireless:AssociateWirelessDeviceWithFuotaTask", - "iotwireless:DisassociateWirelessDeviceFromFuotaTask" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "FUOTA task arn. Returned after successful create.", - "type": "string" - }, - "AssociateMulticastGroup": { - "description": "Multicast group to associate. Only for update request.", - "maxLength": 256, - "type": "string" - }, - "AssociateWirelessDevice": { - "description": "Wireless device to associate. Only for update request.", - "maxLength": 256, - "type": "string" - }, - "Description": { - "description": "FUOTA task description", - "maxLength": 2048, - "type": "string" - }, - "DisassociateMulticastGroup": { - "description": "Multicast group to disassociate. Only for update request.", - "maxLength": 256, - "type": "string" - }, - "DisassociateWirelessDevice": { - "description": "Wireless device to disassociate. Only for update request.", - "maxLength": 256, - "type": "string" - }, - "FirmwareUpdateImage": { - "description": "FUOTA task firmware update image binary S3 link", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "FirmwareUpdateRole": { - "description": "FUOTA task firmware IAM role for reading S3", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "FuotaTaskStatus": { - "description": "FUOTA task status. Returned after successful read.", - "type": "string" - }, - "Id": { - "description": "FUOTA task id. Returned after successful create.", - "maxLength": 256, - "type": "string" - }, - "LoRaWAN": { - "$ref": "#/definitions/LoRaWAN", - "description": "FUOTA task LoRaWAN" - }, - "Name": { - "description": "Name of FUOTA task", - "maxLength": 256, - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the FUOTA task.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id", - "/properties/FuotaTaskStatus", - "/properties/LoRaWAN/StartTime" - ], - "required": [ - "LoRaWAN", - "FirmwareUpdateImage", - "FirmwareUpdateRole" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotwireless:TagResource", - "iotwireless:UntagResource", - "iotwireless:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTWireless::FuotaTask" -} +{ + "additionalProperties": false, + "definitions": { + "LoRaWAN": { + "additionalProperties": false, + "properties": { + "RfRegion": { + "description": "FUOTA task LoRaWAN RF region", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "StartTime": { + "description": "FUOTA task LoRaWAN start time", + "maxLength": 64, + "type": "string" + } + }, + "required": [ + "RfRegion" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Create and manage FUOTA tasks.", + "handlers": { + "create": { + "permissions": [ + "iotwireless:CreateFuotaTask", + "iotwireless:TagResource", + "iam:GetRole", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "iotwireless:DeleteFuotaTask" + ] + }, + "list": { + "permissions": [ + "iotwireless:ListFuotaTasks", + "iotwireless:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iotwireless:GetFuotaTask", + "iotwireless:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "iotwireless:UpdateFuotaTask", + "iotwireless:GetFuotaTask", + "iotwireless:TagResource", + "iotwireless:UntagResource", + "iotwireless:AssociateMulticastGroupWithFuotaTask", + "iotwireless:DisassociateMulticastGroupFromFuotaTask", + "iotwireless:AssociateWirelessDeviceWithFuotaTask", + "iotwireless:DisassociateWirelessDeviceFromFuotaTask" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "FUOTA task arn. Returned after successful create.", + "type": "string" + }, + "AssociateMulticastGroup": { + "description": "Multicast group to associate. Only for update request.", + "maxLength": 256, + "type": "string" + }, + "AssociateWirelessDevice": { + "description": "Wireless device to associate. Only for update request.", + "maxLength": 256, + "type": "string" + }, + "Description": { + "description": "FUOTA task description", + "maxLength": 2048, + "type": "string" + }, + "DisassociateMulticastGroup": { + "description": "Multicast group to disassociate. Only for update request.", + "maxLength": 256, + "type": "string" + }, + "DisassociateWirelessDevice": { + "description": "Wireless device to disassociate. Only for update request.", + "maxLength": 256, + "type": "string" + }, + "FirmwareUpdateImage": { + "description": "FUOTA task firmware update image binary S3 link", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "FirmwareUpdateRole": { + "description": "FUOTA task firmware IAM role for reading S3", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "FuotaTaskStatus": { + "description": "FUOTA task status. Returned after successful read.", + "type": "string" + }, + "Id": { + "description": "FUOTA task id. Returned after successful create.", + "maxLength": 256, + "type": "string" + }, + "LoRaWAN": { + "$ref": "#/definitions/LoRaWAN", + "description": "FUOTA task LoRaWAN" + }, + "Name": { + "description": "Name of FUOTA task", + "maxLength": 256, + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the FUOTA task.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/FuotaTaskStatus", + "/properties/LoRaWAN/StartTime" + ], + "required": [ + "LoRaWAN", + "FirmwareUpdateImage", + "FirmwareUpdateRole" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotwireless:TagResource", + "iotwireless:UntagResource", + "iotwireless:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTWireless::FuotaTask" +} diff --git a/src/schema/aws-iotwireless-multicastgroup.json b/src/schema/aws-iotwireless-multicastgroup.json index 75f066de..bcf3706c 100644 --- a/src/schema/aws-iotwireless-multicastgroup.json +++ b/src/schema/aws-iotwireless-multicastgroup.json @@ -1,163 +1,163 @@ -{ - "additionalProperties": false, - "definitions": { - "LoRaWAN": { - "additionalProperties": false, - "properties": { - "DlClass": { - "description": "Multicast group LoRaWAN DL Class", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "NumberOfDevicesInGroup": { - "description": "Multicast group number of devices in group. Returned after successful read.", - "type": "integer" - }, - "NumberOfDevicesRequested": { - "description": "Multicast group number of devices requested. Returned after successful read.", - "type": "integer" - }, - "RfRegion": { - "description": "Multicast group LoRaWAN RF region", - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "RfRegion", - "DlClass" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Create and manage Multicast groups.", - "handlers": { - "create": { - "permissions": [ - "iotwireless:CreateMulticastGroup", - "iotwireless:TagResource" - ] - }, - "delete": { - "permissions": [ - "iotwireless:DeleteMulticastGroup" - ] - }, - "list": { - "permissions": [ - "iotwireless:ListMulticastGroups", - "iotwireless:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "iotwireless:GetMulticastGroup", - "iotwireless:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotwireless:UpdateMulticastGroup", - "iotwireless:GetMulticastGroup", - "iotwireless:TagResource", - "iotwireless:UntagResource", - "iotwireless:AssociateWirelessDeviceWithMulticastGroup", - "iotwireless:DisassociateWirelessDeviceFromMulticastGroup" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "Multicast group arn. Returned after successful create.", - "type": "string" - }, - "AssociateWirelessDevice": { - "description": "Wireless device to associate. Only for update request.", - "maxLength": 256, - "type": "string" - }, - "Description": { - "description": "Multicast group description", - "maxLength": 2048, - "type": "string" - }, - "DisassociateWirelessDevice": { - "description": "Wireless device to disassociate. Only for update request.", - "maxLength": 256, - "type": "string" - }, - "Id": { - "description": "Multicast group id. Returned after successful create.", - "maxLength": 256, - "type": "string" - }, - "LoRaWAN": { - "$ref": "#/definitions/LoRaWAN", - "description": "Multicast group LoRaWAN" - }, - "Name": { - "description": "Name of Multicast group", - "maxLength": 256, - "type": "string" - }, - "Status": { - "description": "Multicast group status. Returned after successful read.", - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the Multicast group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id", - "/properties/Status", - "/properties/LoRaWAN/NumberOfDevicesRequested", - "/properties/LoRaWAN/NumberOfDevicesInGroup" - ], - "required": [ - "LoRaWAN" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotwireless:TagResource", - "iotwireless:UntagResource", - "iotwireless:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTWireless::MulticastGroup" -} +{ + "additionalProperties": false, + "definitions": { + "LoRaWAN": { + "additionalProperties": false, + "properties": { + "DlClass": { + "description": "Multicast group LoRaWAN DL Class", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "NumberOfDevicesInGroup": { + "description": "Multicast group number of devices in group. Returned after successful read.", + "type": "integer" + }, + "NumberOfDevicesRequested": { + "description": "Multicast group number of devices requested. Returned after successful read.", + "type": "integer" + }, + "RfRegion": { + "description": "Multicast group LoRaWAN RF region", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "RfRegion", + "DlClass" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Create and manage Multicast groups.", + "handlers": { + "create": { + "permissions": [ + "iotwireless:CreateMulticastGroup", + "iotwireless:TagResource" + ] + }, + "delete": { + "permissions": [ + "iotwireless:DeleteMulticastGroup" + ] + }, + "list": { + "permissions": [ + "iotwireless:ListMulticastGroups", + "iotwireless:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iotwireless:GetMulticastGroup", + "iotwireless:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotwireless:UpdateMulticastGroup", + "iotwireless:GetMulticastGroup", + "iotwireless:TagResource", + "iotwireless:UntagResource", + "iotwireless:AssociateWirelessDeviceWithMulticastGroup", + "iotwireless:DisassociateWirelessDeviceFromMulticastGroup" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "Multicast group arn. Returned after successful create.", + "type": "string" + }, + "AssociateWirelessDevice": { + "description": "Wireless device to associate. Only for update request.", + "maxLength": 256, + "type": "string" + }, + "Description": { + "description": "Multicast group description", + "maxLength": 2048, + "type": "string" + }, + "DisassociateWirelessDevice": { + "description": "Wireless device to disassociate. Only for update request.", + "maxLength": 256, + "type": "string" + }, + "Id": { + "description": "Multicast group id. Returned after successful create.", + "maxLength": 256, + "type": "string" + }, + "LoRaWAN": { + "$ref": "#/definitions/LoRaWAN", + "description": "Multicast group LoRaWAN" + }, + "Name": { + "description": "Name of Multicast group", + "maxLength": 256, + "type": "string" + }, + "Status": { + "description": "Multicast group status. Returned after successful read.", + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the Multicast group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/Status", + "/properties/LoRaWAN/NumberOfDevicesRequested", + "/properties/LoRaWAN/NumberOfDevicesInGroup" + ], + "required": [ + "LoRaWAN" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotwireless:TagResource", + "iotwireless:UntagResource", + "iotwireless:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTWireless::MulticastGroup" +} diff --git a/src/schema/aws-iotwireless-networkanalyzerconfiguration.json b/src/schema/aws-iotwireless-networkanalyzerconfiguration.json index e480662c..ffd8897e 100644 --- a/src/schema/aws-iotwireless-networkanalyzerconfiguration.json +++ b/src/schema/aws-iotwireless-networkanalyzerconfiguration.json @@ -1,161 +1,161 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "LogLevel": { - "enum": [ - "INFO", - "ERROR", - "DISABLED" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "WirelessDeviceFrameInfo": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - } - }, - "description": "Create and manage NetworkAnalyzerConfiguration resource.", - "handlers": { - "create": { - "permissions": [ - "iotwireless:CreateNetworkAnalyzerConfiguration", - "iotwireless:TagResource" - ] - }, - "delete": { - "permissions": [ - "iotwireless:DeleteNetworkAnalyzerConfiguration" - ] - }, - "list": { - "permissions": [ - "iotwireless:ListNetworkAnalyzerConfigurations", - "iotwireless:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "iotwireless:GetNetworkAnalyzerConfiguration", - "iotwireless:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotwireless:UpdateNetworkAnalyzerConfiguration", - "iotwireless:GetNetworkAnalyzerConfiguration", - "iotwireless:TagResource", - "iotwireless:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "description": "Arn for network analyzer configuration, Returned upon successful create.", - "type": "string" - }, - "Description": { - "description": "The description of the new resource", - "maxLength": 2048, - "type": "string" - }, - "Name": { - "description": "Name of the network analyzer configuration", - "maxLength": 1024, - "pattern": "^[a-zA-Z0-9-_]+$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - }, - "TraceContent": { - "additionalProperties": false, - "description": "Trace content for your wireless gateway and wireless device resources", - "properties": { - "LogLevel": { - "$ref": "#/definitions/LogLevel" - }, - "WirelessDeviceFrameInfo": { - "$ref": "#/definitions/WirelessDeviceFrameInfo" - } - }, - "type": "object" - }, - "WirelessDevices": { - "description": "List of wireless gateway resources that have been added to the network analyzer configuration", - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 250, - "type": "array" - }, - "WirelessGateways": { - "description": "List of wireless gateway resources that have been added to the network analyzer configuration", - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 250, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "iotwireless:TagResource", - "iotwireless:UntagResource", - "iotwireless:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTWireless::NetworkAnalyzerConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "LogLevel": { + "enum": [ + "INFO", + "ERROR", + "DISABLED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "WirelessDeviceFrameInfo": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "description": "Create and manage NetworkAnalyzerConfiguration resource.", + "handlers": { + "create": { + "permissions": [ + "iotwireless:CreateNetworkAnalyzerConfiguration", + "iotwireless:TagResource" + ] + }, + "delete": { + "permissions": [ + "iotwireless:DeleteNetworkAnalyzerConfiguration" + ] + }, + "list": { + "permissions": [ + "iotwireless:ListNetworkAnalyzerConfigurations", + "iotwireless:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iotwireless:GetNetworkAnalyzerConfiguration", + "iotwireless:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotwireless:UpdateNetworkAnalyzerConfiguration", + "iotwireless:GetNetworkAnalyzerConfiguration", + "iotwireless:TagResource", + "iotwireless:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "description": "Arn for network analyzer configuration, Returned upon successful create.", + "type": "string" + }, + "Description": { + "description": "The description of the new resource", + "maxLength": 2048, + "type": "string" + }, + "Name": { + "description": "Name of the network analyzer configuration", + "maxLength": 1024, + "pattern": "^[a-zA-Z0-9-_]+$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + }, + "TraceContent": { + "additionalProperties": false, + "description": "Trace content for your wireless gateway and wireless device resources", + "properties": { + "LogLevel": { + "$ref": "#/definitions/LogLevel" + }, + "WirelessDeviceFrameInfo": { + "$ref": "#/definitions/WirelessDeviceFrameInfo" + } + }, + "type": "object" + }, + "WirelessDevices": { + "description": "List of wireless gateway resources that have been added to the network analyzer configuration", + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 250, + "type": "array" + }, + "WirelessGateways": { + "description": "List of wireless gateway resources that have been added to the network analyzer configuration", + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 250, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "iotwireless:TagResource", + "iotwireless:UntagResource", + "iotwireless:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTWireless::NetworkAnalyzerConfiguration" +} diff --git a/src/schema/aws-iotwireless-partneraccount.json b/src/schema/aws-iotwireless-partneraccount.json index a0639300..e8f8f51d 100644 --- a/src/schema/aws-iotwireless-partneraccount.json +++ b/src/schema/aws-iotwireless-partneraccount.json @@ -1,180 +1,180 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PartnerAccountId" - ], - "definitions": { - "SidewalkAccountInfo": { - "additionalProperties": false, - "properties": { - "AppServerPrivateKey": { - "maxLength": 4096, - "minLength": 1, - "pattern": "[a-fA-F0-9]{64}", - "type": "string" - } - }, - "required": [ - "AppServerPrivateKey" - ], - "type": "object" - }, - "SidewalkAccountInfoWithFingerprint": { - "additionalProperties": false, - "properties": { - "AmazonId": { - "maxLength": 2048, - "type": "string" - }, - "Arn": { - "type": "string" - }, - "Fingerprint": { - "maxLength": 64, - "minLength": 64, - "pattern": "[a-fA-F0-9]{64}", - "type": "string" - } - }, - "type": "object" - }, - "SidewalkUpdateAccount": { - "additionalProperties": false, - "properties": { - "AppServerPrivateKey": { - "maxLength": 4096, - "minLength": 1, - "pattern": "[a-fA-F0-9]{64}", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Create and manage partner account", - "handlers": { - "create": { - "permissions": [ - "iotwireless:AssociateAwsAccountWithPartnerAccount", - "iotwireless:TagResource", - "iotwireless:GetPartnerAccount" - ] - }, - "delete": { - "permissions": [ - "iotwireless:DisassociateAwsAccountFromPartnerAccount" - ] - }, - "list": { - "permissions": [ - "iotwireless:ListPartnerAccounts", - "iotwireless:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "iotwireless:GetPartnerAccount", - "iotwireless:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotwireless:GetPartnerAccount", - "iotwireless:AssociateAwsAccountWithPartnerAccount", - "iotwireless:UpdatePartnerAccount", - "iotwireless:ListTagsForResource", - "iotwireless:TagResource", - "iotwireless:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/PartnerAccountId" - ], - "properties": { - "AccountLinked": { - "description": "Whether the partner account is linked to the AWS account.", - "type": "boolean" - }, - "Arn": { - "description": "PartnerAccount arn. Returned after successful create.", - "type": "string" - }, - "Fingerprint": { - "description": "The fingerprint of the Sidewalk application server private key.", - "type": "string" - }, - "PartnerAccountId": { - "description": "The partner account ID to disassociate from the AWS account", - "maxLength": 256, - "type": "string" - }, - "PartnerType": { - "description": "The partner type", - "enum": [ - "Sidewalk" - ], - "type": "string" - }, - "Sidewalk": { - "$ref": "#/definitions/SidewalkAccountInfo", - "description": "The Sidewalk account credentials." - }, - "SidewalkResponse": { - "$ref": "#/definitions/SidewalkAccountInfoWithFingerprint", - "description": "The Sidewalk account credentials." - }, - "SidewalkUpdate": { - "$ref": "#/definitions/SidewalkUpdateAccount", - "description": "The Sidewalk account credentials." - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the destination.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Fingerprint" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotwireless:TagResource", - "iotwireless:UntagResource", - "iotwireless:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTWireless::PartnerAccount", - "writeOnlyProperties": [ - "/properties/SidewalkUpdate", - "/properties/Sidewalk" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PartnerAccountId" + ], + "definitions": { + "SidewalkAccountInfo": { + "additionalProperties": false, + "properties": { + "AppServerPrivateKey": { + "maxLength": 4096, + "minLength": 1, + "pattern": "[a-fA-F0-9]{64}", + "type": "string" + } + }, + "required": [ + "AppServerPrivateKey" + ], + "type": "object" + }, + "SidewalkAccountInfoWithFingerprint": { + "additionalProperties": false, + "properties": { + "AmazonId": { + "maxLength": 2048, + "type": "string" + }, + "Arn": { + "type": "string" + }, + "Fingerprint": { + "maxLength": 64, + "minLength": 64, + "pattern": "[a-fA-F0-9]{64}", + "type": "string" + } + }, + "type": "object" + }, + "SidewalkUpdateAccount": { + "additionalProperties": false, + "properties": { + "AppServerPrivateKey": { + "maxLength": 4096, + "minLength": 1, + "pattern": "[a-fA-F0-9]{64}", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Create and manage partner account", + "handlers": { + "create": { + "permissions": [ + "iotwireless:AssociateAwsAccountWithPartnerAccount", + "iotwireless:TagResource", + "iotwireless:GetPartnerAccount" + ] + }, + "delete": { + "permissions": [ + "iotwireless:DisassociateAwsAccountFromPartnerAccount" + ] + }, + "list": { + "permissions": [ + "iotwireless:ListPartnerAccounts", + "iotwireless:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iotwireless:GetPartnerAccount", + "iotwireless:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotwireless:GetPartnerAccount", + "iotwireless:AssociateAwsAccountWithPartnerAccount", + "iotwireless:UpdatePartnerAccount", + "iotwireless:ListTagsForResource", + "iotwireless:TagResource", + "iotwireless:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/PartnerAccountId" + ], + "properties": { + "AccountLinked": { + "description": "Whether the partner account is linked to the AWS account.", + "type": "boolean" + }, + "Arn": { + "description": "PartnerAccount arn. Returned after successful create.", + "type": "string" + }, + "Fingerprint": { + "description": "The fingerprint of the Sidewalk application server private key.", + "type": "string" + }, + "PartnerAccountId": { + "description": "The partner account ID to disassociate from the AWS account", + "maxLength": 256, + "type": "string" + }, + "PartnerType": { + "description": "The partner type", + "enum": [ + "Sidewalk" + ], + "type": "string" + }, + "Sidewalk": { + "$ref": "#/definitions/SidewalkAccountInfo", + "description": "The Sidewalk account credentials." + }, + "SidewalkResponse": { + "$ref": "#/definitions/SidewalkAccountInfoWithFingerprint", + "description": "The Sidewalk account credentials." + }, + "SidewalkUpdate": { + "$ref": "#/definitions/SidewalkUpdateAccount", + "description": "The Sidewalk account credentials." + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the destination.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Fingerprint" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotwireless:TagResource", + "iotwireless:UntagResource", + "iotwireless:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTWireless::PartnerAccount", + "writeOnlyProperties": [ + "/properties/SidewalkUpdate", + "/properties/Sidewalk" + ] +} diff --git a/src/schema/aws-iotwireless-serviceprofile.json b/src/schema/aws-iotwireless-serviceprofile.json index 89c54760..08b838ce 100644 --- a/src/schema/aws-iotwireless-serviceprofile.json +++ b/src/schema/aws-iotwireless-serviceprofile.json @@ -1,189 +1,189 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/LoRaWAN" - ], - "definitions": { - "LoRaWANServiceProfile": { - "additionalProperties": false, - "properties": { - "AddGwMetadata": { - "type": "boolean" - }, - "ChannelMask": { - "type": "string" - }, - "DevStatusReqFreq": { - "type": "integer" - }, - "DlBucketSize": { - "type": "integer" - }, - "DlRate": { - "type": "integer" - }, - "DlRatePolicy": { - "type": "string" - }, - "DrMax": { - "type": "integer" - }, - "DrMin": { - "type": "integer" - }, - "HrAllowed": { - "type": "boolean" - }, - "MinGwDiversity": { - "type": "integer" - }, - "NwkGeoLoc": { - "type": "boolean" - }, - "PrAllowed": { - "type": "boolean" - }, - "RaAllowed": { - "type": "boolean" - }, - "ReportDevStatusBattery": { - "type": "boolean" - }, - "ReportDevStatusMargin": { - "type": "boolean" - }, - "TargetPer": { - "type": "integer" - }, - "UlBucketSize": { - "type": "integer" - }, - "UlRate": { - "type": "integer" - }, - "UlRatePolicy": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "An example resource schema demonstrating some basic constructs and validation rules.", - "handlers": { - "create": { - "permissions": [ - "iotwireless:CreateServiceProfile", - "iotwireless:TagResource" - ] - }, - "delete": { - "permissions": [ - "iotwireless:DeleteServiceProfile" - ] - }, - "list": { - "permissions": [ - "iotwireless:ListServiceProfiles", - "iotwireless:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "iotwireless:GetServiceProfile", - "iotwireless:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotwireless:GetServiceProfile", - "iotwireless:TagResource", - "iotwireless:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "Service profile Arn. Returned after successful create.", - "type": "string" - }, - "Id": { - "description": "Service profile Id. Returned after successful create.", - "maxLength": 256, - "type": "string" - }, - "LoRaWAN": { - "$ref": "#/definitions/LoRaWANServiceProfile", - "description": "LoRaWAN supports all LoRa specific attributes for service profile for CreateServiceProfile operation" - }, - "Name": { - "description": "Name of service profile", - "maxLength": 256, - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the service profile.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/LoRaWAN/UlRate", - "/properties/LoRaWAN/UlBucketSize", - "/properties/LoRaWAN/UlRatePolicy", - "/properties/LoRaWAN/DlRate", - "/properties/LoRaWAN/DlBucketSize", - "/properties/LoRaWAN/DlRatePolicy", - "/properties/LoRaWAN/DevStatusReqFreq", - "/properties/LoRaWAN/ReportDevStatusBattery", - "/properties/LoRaWAN/ReportDevStatusMargin", - "/properties/LoRaWAN/DrMin", - "/properties/LoRaWAN/DrMax", - "/properties/LoRaWAN/ChannelMask", - "/properties/LoRaWAN/HrAllowed", - "/properties/LoRaWAN/NwkGeoLoc", - "/properties/LoRaWAN/TargetPer", - "/properties/LoRaWAN/MinGwDiversity" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotwireless:TagResource", - "iotwireless:UntagResource", - "iotwireless:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTWireless::ServiceProfile" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/LoRaWAN" + ], + "definitions": { + "LoRaWANServiceProfile": { + "additionalProperties": false, + "properties": { + "AddGwMetadata": { + "type": "boolean" + }, + "ChannelMask": { + "type": "string" + }, + "DevStatusReqFreq": { + "type": "integer" + }, + "DlBucketSize": { + "type": "integer" + }, + "DlRate": { + "type": "integer" + }, + "DlRatePolicy": { + "type": "string" + }, + "DrMax": { + "type": "integer" + }, + "DrMin": { + "type": "integer" + }, + "HrAllowed": { + "type": "boolean" + }, + "MinGwDiversity": { + "type": "integer" + }, + "NwkGeoLoc": { + "type": "boolean" + }, + "PrAllowed": { + "type": "boolean" + }, + "RaAllowed": { + "type": "boolean" + }, + "ReportDevStatusBattery": { + "type": "boolean" + }, + "ReportDevStatusMargin": { + "type": "boolean" + }, + "TargetPer": { + "type": "integer" + }, + "UlBucketSize": { + "type": "integer" + }, + "UlRate": { + "type": "integer" + }, + "UlRatePolicy": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "handlers": { + "create": { + "permissions": [ + "iotwireless:CreateServiceProfile", + "iotwireless:TagResource" + ] + }, + "delete": { + "permissions": [ + "iotwireless:DeleteServiceProfile" + ] + }, + "list": { + "permissions": [ + "iotwireless:ListServiceProfiles", + "iotwireless:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iotwireless:GetServiceProfile", + "iotwireless:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotwireless:GetServiceProfile", + "iotwireless:TagResource", + "iotwireless:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "Service profile Arn. Returned after successful create.", + "type": "string" + }, + "Id": { + "description": "Service profile Id. Returned after successful create.", + "maxLength": 256, + "type": "string" + }, + "LoRaWAN": { + "$ref": "#/definitions/LoRaWANServiceProfile", + "description": "LoRaWAN supports all LoRa specific attributes for service profile for CreateServiceProfile operation" + }, + "Name": { + "description": "Name of service profile", + "maxLength": 256, + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the service profile.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/LoRaWAN/UlRate", + "/properties/LoRaWAN/UlBucketSize", + "/properties/LoRaWAN/UlRatePolicy", + "/properties/LoRaWAN/DlRate", + "/properties/LoRaWAN/DlBucketSize", + "/properties/LoRaWAN/DlRatePolicy", + "/properties/LoRaWAN/DevStatusReqFreq", + "/properties/LoRaWAN/ReportDevStatusBattery", + "/properties/LoRaWAN/ReportDevStatusMargin", + "/properties/LoRaWAN/DrMin", + "/properties/LoRaWAN/DrMax", + "/properties/LoRaWAN/ChannelMask", + "/properties/LoRaWAN/HrAllowed", + "/properties/LoRaWAN/NwkGeoLoc", + "/properties/LoRaWAN/TargetPer", + "/properties/LoRaWAN/MinGwDiversity" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotwireless:TagResource", + "iotwireless:UntagResource", + "iotwireless:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTWireless::ServiceProfile" +} diff --git a/src/schema/aws-iotwireless-taskdefinition.json b/src/schema/aws-iotwireless-taskdefinition.json index 8c5d523c..ccc7fa22 100644 --- a/src/schema/aws-iotwireless-taskdefinition.json +++ b/src/schema/aws-iotwireless-taskdefinition.json @@ -1,206 +1,206 @@ -{ - "additionalProperties": false, - "definitions": { - "LoRaWANGatewayVersion": { - "additionalProperties": false, - "properties": { - "Model": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "PackageVersion": { - "maxLength": 32, - "minLength": 1, - "type": "string" - }, - "Station": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "LoRaWANUpdateGatewayTaskCreate": { - "additionalProperties": false, - "properties": { - "CurrentVersion": { - "$ref": "#/definitions/LoRaWANGatewayVersion" - }, - "SigKeyCrc": { - "format": "int64", - "type": "integer" - }, - "UpdateSignature": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "UpdateVersion": { - "$ref": "#/definitions/LoRaWANGatewayVersion" - } - }, - "type": "object" - }, - "LoRaWANUpdateGatewayTaskEntry": { - "additionalProperties": false, - "properties": { - "CurrentVersion": { - "$ref": "#/definitions/LoRaWANGatewayVersion" - }, - "UpdateVersion": { - "$ref": "#/definitions/LoRaWANGatewayVersion" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "UpdateWirelessGatewayTaskCreate": { - "additionalProperties": false, - "properties": { - "LoRaWAN": { - "$ref": "#/definitions/LoRaWANUpdateGatewayTaskCreate" - }, - "UpdateDataRole": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "UpdateDataSource": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Creates a gateway task definition.", - "handlers": { - "create": { - "permissions": [ - "iotwireless:CreateWirelessGatewayTaskDefinition", - "iotwireless:TagResource", - "iam:GetRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "iotwireless:DeleteWirelessGatewayTaskDefinition" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "TaskDefinitionType": { - "$ref": "#/properties/TaskDefinitionType" - } - } - }, - "permissions": [ - "iotwireless:ListWirelessGatewayTaskDefinitions", - "iotwireless:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "iotwireless:GetWirelessGatewayTaskDefinition", - "iotwireless:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotwireless:GetWirelessGatewayTaskDefinition", - "iotwireless:TagResource", - "iotwireless:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "TaskDefinition arn. Returned after successful create.", - "type": "string" - }, - "AutoCreateTasks": { - "description": "Whether to automatically create tasks using this task definition for all gateways with the specified current version. If false, the task must me created by calling CreateWirelessGatewayTask.", - "type": "boolean" - }, - "Id": { - "description": "The ID of the new wireless gateway task definition", - "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", - "type": "string" - }, - "LoRaWANUpdateGatewayTaskEntry": { - "$ref": "#/definitions/LoRaWANUpdateGatewayTaskEntry", - "description": "The list of task definitions." - }, - "Name": { - "description": "The name of the new resource.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the destination.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - }, - "TaskDefinitionType": { - "description": "A filter to list only the wireless gateway task definitions that use this task definition type", - "enum": [ - "UPDATE" - ], - "type": "string" - }, - "Update": { - "$ref": "#/definitions/UpdateWirelessGatewayTaskCreate", - "description": "Information about the gateways to update." - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "AutoCreateTasks" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotwireless:TagResource", - "iotwireless:UntagResource", - "iotwireless:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTWireless::TaskDefinition" -} +{ + "additionalProperties": false, + "definitions": { + "LoRaWANGatewayVersion": { + "additionalProperties": false, + "properties": { + "Model": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "PackageVersion": { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + "Station": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "LoRaWANUpdateGatewayTaskCreate": { + "additionalProperties": false, + "properties": { + "CurrentVersion": { + "$ref": "#/definitions/LoRaWANGatewayVersion" + }, + "SigKeyCrc": { + "format": "int64", + "type": "integer" + }, + "UpdateSignature": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "UpdateVersion": { + "$ref": "#/definitions/LoRaWANGatewayVersion" + } + }, + "type": "object" + }, + "LoRaWANUpdateGatewayTaskEntry": { + "additionalProperties": false, + "properties": { + "CurrentVersion": { + "$ref": "#/definitions/LoRaWANGatewayVersion" + }, + "UpdateVersion": { + "$ref": "#/definitions/LoRaWANGatewayVersion" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "UpdateWirelessGatewayTaskCreate": { + "additionalProperties": false, + "properties": { + "LoRaWAN": { + "$ref": "#/definitions/LoRaWANUpdateGatewayTaskCreate" + }, + "UpdateDataRole": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "UpdateDataSource": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Creates a gateway task definition.", + "handlers": { + "create": { + "permissions": [ + "iotwireless:CreateWirelessGatewayTaskDefinition", + "iotwireless:TagResource", + "iam:GetRole", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "iotwireless:DeleteWirelessGatewayTaskDefinition" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TaskDefinitionType": { + "$ref": "#/properties/TaskDefinitionType" + } + } + }, + "permissions": [ + "iotwireless:ListWirelessGatewayTaskDefinitions", + "iotwireless:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iotwireless:GetWirelessGatewayTaskDefinition", + "iotwireless:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotwireless:GetWirelessGatewayTaskDefinition", + "iotwireless:TagResource", + "iotwireless:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "TaskDefinition arn. Returned after successful create.", + "type": "string" + }, + "AutoCreateTasks": { + "description": "Whether to automatically create tasks using this task definition for all gateways with the specified current version. If false, the task must me created by calling CreateWirelessGatewayTask.", + "type": "boolean" + }, + "Id": { + "description": "The ID of the new wireless gateway task definition", + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "LoRaWANUpdateGatewayTaskEntry": { + "$ref": "#/definitions/LoRaWANUpdateGatewayTaskEntry", + "description": "The list of task definitions." + }, + "Name": { + "description": "The name of the new resource.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the destination.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + }, + "TaskDefinitionType": { + "description": "A filter to list only the wireless gateway task definitions that use this task definition type", + "enum": [ + "UPDATE" + ], + "type": "string" + }, + "Update": { + "$ref": "#/definitions/UpdateWirelessGatewayTaskCreate", + "description": "Information about the gateways to update." + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "AutoCreateTasks" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotwireless:TagResource", + "iotwireless:UntagResource", + "iotwireless:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTWireless::TaskDefinition" +} diff --git a/src/schema/aws-iotwireless-wirelessdevice.json b/src/schema/aws-iotwireless-wirelessdevice.json index fd12e592..876ba604 100644 --- a/src/schema/aws-iotwireless-wirelessdevice.json +++ b/src/schema/aws-iotwireless-wirelessdevice.json @@ -1,371 +1,371 @@ -{ - "additionalProperties": false, - "definitions": { - "AbpV10x": { - "additionalProperties": false, - "properties": { - "DevAddr": { - "pattern": "[a-fA-F0-9]{8}", - "type": "string" - }, - "SessionKeys": { - "$ref": "#/definitions/SessionKeysAbpV10x" - } - }, - "required": [ - "DevAddr", - "SessionKeys" - ], - "type": "object" - }, - "AbpV11": { - "additionalProperties": false, - "properties": { - "DevAddr": { - "pattern": "[a-fA-F0-9]{8}", - "type": "string" - }, - "SessionKeys": { - "$ref": "#/definitions/SessionKeysAbpV11" - } - }, - "required": [ - "DevAddr", - "SessionKeys" - ], - "type": "object" - }, - "Application": { - "additionalProperties": false, - "description": "LoRaWAN application configuration, which can be used to perform geolocation.", - "properties": { - "DestinationName": { - "description": "The name of the position data destination that describes the AWS IoT rule that processes the device's position data for use by AWS IoT Core for LoRaWAN.", - "maxLength": 128, - "pattern": "[a-zA-Z0-9-_]+", - "type": "string" - }, - "FPort": { - "description": "The Fport value.", - "maximum": 223, - "minimum": 1, - "type": "integer" - }, - "Type": { - "description": "Application type, which can be specified to obtain real-time position information of your LoRaWAN device.", - "enum": [ - "SemtechGeolocation", - "SemtechGNSS", - "SemtechGNSSNG", - "SemtechWiFi" - ], - "type": "string" - } - }, - "type": "object" - }, - "FPorts": { - "additionalProperties": false, - "properties": { - "Applications": { - "description": "A list of optional LoRaWAN application information, which can be used for geolocation.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Application" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "LoRaWANDevice": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "OtaaV11" - ] - }, - { - "required": [ - "OtaaV10x" - ] - }, - { - "required": [ - "AbpV11" - ] - }, - { - "required": [ - "AbpV10x" - ] - } - ], - "properties": { - "AbpV10x": { - "$ref": "#/definitions/AbpV10x" - }, - "AbpV11": { - "$ref": "#/definitions/AbpV11" - }, - "DevEui": { - "pattern": "[a-f0-9]{16}", - "type": "string" - }, - "DeviceProfileId": { - "maxLength": 256, - "type": "string" - }, - "FPorts": { - "$ref": "#/definitions/FPorts" - }, - "OtaaV10x": { - "$ref": "#/definitions/OtaaV10x" - }, - "OtaaV11": { - "$ref": "#/definitions/OtaaV11" - }, - "ServiceProfileId": { - "maxLength": 256, - "type": "string" - } - }, - "type": "object" - }, - "OtaaV10x": { - "additionalProperties": false, - "properties": { - "AppEui": { - "pattern": "[a-fA-F0-9]{16}", - "type": "string" - }, - "AppKey": { - "pattern": "[a-fA-F0-9]{32}", - "type": "string" - } - }, - "required": [ - "AppKey", - "AppEui" - ], - "type": "object" - }, - "OtaaV11": { - "additionalProperties": false, - "properties": { - "AppKey": { - "pattern": "[a-fA-F0-9]{32}", - "type": "string" - }, - "JoinEui": { - "pattern": "[a-fA-F0-9]{16}", - "type": "string" - }, - "NwkKey": { - "pattern": "[a-fA-F0-9]{32}", - "type": "string" - } - }, - "required": [ - "AppKey", - "NwkKey", - "JoinEui" - ], - "type": "object" - }, - "SessionKeysAbpV10x": { - "additionalProperties": false, - "properties": { - "AppSKey": { - "pattern": "[a-fA-F0-9]{32}", - "type": "string" - }, - "NwkSKey": { - "pattern": "[a-fA-F0-9]{32}", - "type": "string" - } - }, - "required": [ - "NwkSKey", - "AppSKey" - ], - "type": "object" - }, - "SessionKeysAbpV11": { - "additionalProperties": false, - "properties": { - "AppSKey": { - "pattern": "[a-fA-F0-9]{32}", - "type": "string" - }, - "FNwkSIntKey": { - "pattern": "[a-fA-F0-9]{32}", - "type": "string" - }, - "NwkSEncKey": { - "pattern": "[a-fA-F0-9]{32}", - "type": "string" - }, - "SNwkSIntKey": { - "pattern": "[a-fA-F0-9]{32}", - "type": "string" - } - }, - "required": [ - "FNwkSIntKey", - "SNwkSIntKey", - "NwkSEncKey", - "AppSKey" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Create and manage wireless gateways, including LoRa gateways.", - "handlers": { - "create": { - "permissions": [ - "iotwireless:CreateWirelessDevice", - "iotwireless:TagResource" - ] - }, - "delete": { - "permissions": [ - "iotwireless:DeleteWirelessDevice", - "iotwireless:DisassociateWirelessDeviceFromThing" - ] - }, - "list": { - "permissions": [ - "iotwireless:ListWirelessDevices", - "iotwireless:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "iotwireless:GetWirelessDevice", - "iotwireless:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotwireless:UpdateWirelessDevice", - "iotwireless:GetWirelessDevice", - "iotwireless:AssociateWirelessDeviceWithThing", - "iotwireless:TagResource", - "iotwireless:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "Wireless device arn. Returned after successful create.", - "type": "string" - }, - "Description": { - "description": "Wireless device description", - "maxLength": 2048, - "type": "string" - }, - "DestinationName": { - "description": "Wireless device destination name", - "maxLength": 128, - "type": "string" - }, - "Id": { - "description": "Wireless device Id. Returned after successful create.", - "maxLength": 256, - "type": "string" - }, - "LastUplinkReceivedAt": { - "description": "The date and time when the most recent uplink was received.", - "type": "string" - }, - "LoRaWAN": { - "$ref": "#/definitions/LoRaWANDevice", - "description": "The combination of Package, Station and Model which represents the version of the LoRaWAN Wireless Device." - }, - "Name": { - "description": "Wireless device name", - "maxLength": 256, - "type": "string" - }, - "Positioning": { - "description": "FPort values for the GNSS, stream, and ClockSync functions of the positioning information.", - "enum": [ - "Enabled", - "Disabled" - ], - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the device. Currently not supported, will not create if tags are passed.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - }, - "ThingArn": { - "description": "Thing arn. Passed into update to associate Thing with Wireless device.", - "type": "string" - }, - "ThingName": { - "description": "Thing Arn. If there is a Thing created, this can be returned with a Get call.", - "type": "string" - }, - "Type": { - "description": "Wireless device type, currently only Sidewalk and LoRa", - "enum": [ - "Sidewalk", - "LoRaWAN" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ThingName", - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "Type", - "DestinationName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotwireless:TagResource", - "iotwireless:UntagResource", - "iotwireless:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTWireless::WirelessDevice" -} +{ + "additionalProperties": false, + "definitions": { + "AbpV10x": { + "additionalProperties": false, + "properties": { + "DevAddr": { + "pattern": "[a-fA-F0-9]{8}", + "type": "string" + }, + "SessionKeys": { + "$ref": "#/definitions/SessionKeysAbpV10x" + } + }, + "required": [ + "DevAddr", + "SessionKeys" + ], + "type": "object" + }, + "AbpV11": { + "additionalProperties": false, + "properties": { + "DevAddr": { + "pattern": "[a-fA-F0-9]{8}", + "type": "string" + }, + "SessionKeys": { + "$ref": "#/definitions/SessionKeysAbpV11" + } + }, + "required": [ + "DevAddr", + "SessionKeys" + ], + "type": "object" + }, + "Application": { + "additionalProperties": false, + "description": "LoRaWAN application configuration, which can be used to perform geolocation.", + "properties": { + "DestinationName": { + "description": "The name of the position data destination that describes the AWS IoT rule that processes the device's position data for use by AWS IoT Core for LoRaWAN.", + "maxLength": 128, + "pattern": "[a-zA-Z0-9-_]+", + "type": "string" + }, + "FPort": { + "description": "The Fport value.", + "maximum": 223, + "minimum": 1, + "type": "integer" + }, + "Type": { + "description": "Application type, which can be specified to obtain real-time position information of your LoRaWAN device.", + "enum": [ + "SemtechGeolocation", + "SemtechGNSS", + "SemtechGNSSNG", + "SemtechWiFi" + ], + "type": "string" + } + }, + "type": "object" + }, + "FPorts": { + "additionalProperties": false, + "properties": { + "Applications": { + "description": "A list of optional LoRaWAN application information, which can be used for geolocation.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Application" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "LoRaWANDevice": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "OtaaV11" + ] + }, + { + "required": [ + "OtaaV10x" + ] + }, + { + "required": [ + "AbpV11" + ] + }, + { + "required": [ + "AbpV10x" + ] + } + ], + "properties": { + "AbpV10x": { + "$ref": "#/definitions/AbpV10x" + }, + "AbpV11": { + "$ref": "#/definitions/AbpV11" + }, + "DevEui": { + "pattern": "[a-f0-9]{16}", + "type": "string" + }, + "DeviceProfileId": { + "maxLength": 256, + "type": "string" + }, + "FPorts": { + "$ref": "#/definitions/FPorts" + }, + "OtaaV10x": { + "$ref": "#/definitions/OtaaV10x" + }, + "OtaaV11": { + "$ref": "#/definitions/OtaaV11" + }, + "ServiceProfileId": { + "maxLength": 256, + "type": "string" + } + }, + "type": "object" + }, + "OtaaV10x": { + "additionalProperties": false, + "properties": { + "AppEui": { + "pattern": "[a-fA-F0-9]{16}", + "type": "string" + }, + "AppKey": { + "pattern": "[a-fA-F0-9]{32}", + "type": "string" + } + }, + "required": [ + "AppKey", + "AppEui" + ], + "type": "object" + }, + "OtaaV11": { + "additionalProperties": false, + "properties": { + "AppKey": { + "pattern": "[a-fA-F0-9]{32}", + "type": "string" + }, + "JoinEui": { + "pattern": "[a-fA-F0-9]{16}", + "type": "string" + }, + "NwkKey": { + "pattern": "[a-fA-F0-9]{32}", + "type": "string" + } + }, + "required": [ + "AppKey", + "NwkKey", + "JoinEui" + ], + "type": "object" + }, + "SessionKeysAbpV10x": { + "additionalProperties": false, + "properties": { + "AppSKey": { + "pattern": "[a-fA-F0-9]{32}", + "type": "string" + }, + "NwkSKey": { + "pattern": "[a-fA-F0-9]{32}", + "type": "string" + } + }, + "required": [ + "NwkSKey", + "AppSKey" + ], + "type": "object" + }, + "SessionKeysAbpV11": { + "additionalProperties": false, + "properties": { + "AppSKey": { + "pattern": "[a-fA-F0-9]{32}", + "type": "string" + }, + "FNwkSIntKey": { + "pattern": "[a-fA-F0-9]{32}", + "type": "string" + }, + "NwkSEncKey": { + "pattern": "[a-fA-F0-9]{32}", + "type": "string" + }, + "SNwkSIntKey": { + "pattern": "[a-fA-F0-9]{32}", + "type": "string" + } + }, + "required": [ + "FNwkSIntKey", + "SNwkSIntKey", + "NwkSEncKey", + "AppSKey" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Create and manage wireless gateways, including LoRa gateways.", + "handlers": { + "create": { + "permissions": [ + "iotwireless:CreateWirelessDevice", + "iotwireless:TagResource" + ] + }, + "delete": { + "permissions": [ + "iotwireless:DeleteWirelessDevice", + "iotwireless:DisassociateWirelessDeviceFromThing" + ] + }, + "list": { + "permissions": [ + "iotwireless:ListWirelessDevices", + "iotwireless:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iotwireless:GetWirelessDevice", + "iotwireless:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotwireless:UpdateWirelessDevice", + "iotwireless:GetWirelessDevice", + "iotwireless:AssociateWirelessDeviceWithThing", + "iotwireless:TagResource", + "iotwireless:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "Wireless device arn. Returned after successful create.", + "type": "string" + }, + "Description": { + "description": "Wireless device description", + "maxLength": 2048, + "type": "string" + }, + "DestinationName": { + "description": "Wireless device destination name", + "maxLength": 128, + "type": "string" + }, + "Id": { + "description": "Wireless device Id. Returned after successful create.", + "maxLength": 256, + "type": "string" + }, + "LastUplinkReceivedAt": { + "description": "The date and time when the most recent uplink was received.", + "type": "string" + }, + "LoRaWAN": { + "$ref": "#/definitions/LoRaWANDevice", + "description": "The combination of Package, Station and Model which represents the version of the LoRaWAN Wireless Device." + }, + "Name": { + "description": "Wireless device name", + "maxLength": 256, + "type": "string" + }, + "Positioning": { + "description": "FPort values for the GNSS, stream, and ClockSync functions of the positioning information.", + "enum": [ + "Enabled", + "Disabled" + ], + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the device. Currently not supported, will not create if tags are passed.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + }, + "ThingArn": { + "description": "Thing arn. Passed into update to associate Thing with Wireless device.", + "type": "string" + }, + "ThingName": { + "description": "Thing Arn. If there is a Thing created, this can be returned with a Get call.", + "type": "string" + }, + "Type": { + "description": "Wireless device type, currently only Sidewalk and LoRa", + "enum": [ + "Sidewalk", + "LoRaWAN" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ThingName", + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Type", + "DestinationName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotwireless:TagResource", + "iotwireless:UntagResource", + "iotwireless:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTWireless::WirelessDevice" +} diff --git a/src/schema/aws-iotwireless-wirelessdeviceimporttask.json b/src/schema/aws-iotwireless-wirelessdeviceimporttask.json index d83e7988..0d97a632 100644 --- a/src/schema/aws-iotwireless-wirelessdeviceimporttask.json +++ b/src/schema/aws-iotwireless-wirelessdeviceimporttask.json @@ -1,199 +1,199 @@ -{ - "additionalProperties": false, - "definitions": { - "DeviceCreationFileList": { - "description": "sidewalk create device's file path", - "items": { - "maxLength": 1024, - "type": "string" - }, - "type": "array" - }, - "Role": { - "description": "sidewalk role", - "maxLength": 2048, - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Wireless Device Import Tasks", - "handlers": { - "create": { - "permissions": [ - "iotwireless:StartWirelessDeviceImportTask", - "iotwireless:StartSingleWirelessDeviceImportTask", - "iotwireless:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "iotwireless:DeleteWirelessDeviceImportTask" - ] - }, - "list": { - "permissions": [ - "iotwireless:ListWirelessDeviceImportTasks", - "iotwireless:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "iotwireless:GetWirelessDeviceImportTask", - "iotwireless:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotwireless:GetWirelessDeviceImportTask", - "iotwireless:UpdateWirelessDeviceImportTask", - "iotwireless:TagResource", - "iotwireless:UntagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "Arn for Wireless Device Import Task, Returned upon successful start.", - "maxLength": 128, - "type": "string" - }, - "CreationDate": { - "description": "CreationDate for import task", - "type": "string" - }, - "DestinationName": { - "description": "Destination Name for import task", - "maxLength": 128, - "pattern": "[a-zA-Z0-9-_]+", - "type": "string" - }, - "FailedImportedDevicesCount": { - "description": "Failed Imported Devices Count", - "type": "integer" - }, - "Id": { - "description": "Id for Wireless Device Import Task, Returned upon successful start.", - "maxLength": 256, - "type": "string" - }, - "InitializedImportedDevicesCount": { - "description": "Initialized Imported Devices Count", - "type": "integer" - }, - "OnboardedImportedDevicesCount": { - "description": "Onboarded Imported Devices Count", - "type": "integer" - }, - "PendingImportedDevicesCount": { - "description": "Pending Imported Devices Count", - "type": "integer" - }, - "Sidewalk": { - "additionalProperties": false, - "description": "sidewalk contain file for created device and role", - "properties": { - "DeviceCreationFile": { - "maxLength": 1024, - "type": "string" - }, - "DeviceCreationFileList": { - "$ref": "#/definitions/DeviceCreationFileList" - }, - "Role": { - "$ref": "#/definitions/Role" - }, - "SidewalkManufacturingSn": { - "maxLength": 64, - "type": "string" - } - }, - "type": "object" - }, - "Status": { - "description": "Status for import task", - "enum": [ - "INITIALIZING", - "INITIALIZED", - "PENDING", - "COMPLETE", - "FAILED", - "DELETING" - ], - "type": "string" - }, - "StatusReason": { - "description": "StatusReason for import task", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/CreationDate", - "/properties/Status", - "/properties/StatusReason", - "/properties/InitializedImportedDevicesCount", - "/properties/PendingImportedDevicesCount", - "/properties/OnboardedImportedDevicesCount", - "/properties/FailedImportedDevicesCount", - "/properties/Sidewalk/DeviceCreationFileList" - ], - "required": [ - "DestinationName", - "Sidewalk" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotwireless:TagResource", - "iotwireless:UntagResource", - "iotwireless:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTWireless::WirelessDeviceImportTask", - "writeOnlyProperties": [ - "/properties/Sidewalk/DeviceCreationFile", - "/properties/Sidewalk/SidewalkManufacturingSn" - ] -} +{ + "additionalProperties": false, + "definitions": { + "DeviceCreationFileList": { + "description": "sidewalk create device's file path", + "items": { + "maxLength": 1024, + "type": "string" + }, + "type": "array" + }, + "Role": { + "description": "sidewalk role", + "maxLength": 2048, + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Wireless Device Import Tasks", + "handlers": { + "create": { + "permissions": [ + "iotwireless:StartWirelessDeviceImportTask", + "iotwireless:StartSingleWirelessDeviceImportTask", + "iotwireless:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "iotwireless:DeleteWirelessDeviceImportTask" + ] + }, + "list": { + "permissions": [ + "iotwireless:ListWirelessDeviceImportTasks", + "iotwireless:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iotwireless:GetWirelessDeviceImportTask", + "iotwireless:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotwireless:GetWirelessDeviceImportTask", + "iotwireless:UpdateWirelessDeviceImportTask", + "iotwireless:TagResource", + "iotwireless:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "Arn for Wireless Device Import Task, Returned upon successful start.", + "maxLength": 128, + "type": "string" + }, + "CreationDate": { + "description": "CreationDate for import task", + "type": "string" + }, + "DestinationName": { + "description": "Destination Name for import task", + "maxLength": 128, + "pattern": "[a-zA-Z0-9-_]+", + "type": "string" + }, + "FailedImportedDevicesCount": { + "description": "Failed Imported Devices Count", + "type": "integer" + }, + "Id": { + "description": "Id for Wireless Device Import Task, Returned upon successful start.", + "maxLength": 256, + "type": "string" + }, + "InitializedImportedDevicesCount": { + "description": "Initialized Imported Devices Count", + "type": "integer" + }, + "OnboardedImportedDevicesCount": { + "description": "Onboarded Imported Devices Count", + "type": "integer" + }, + "PendingImportedDevicesCount": { + "description": "Pending Imported Devices Count", + "type": "integer" + }, + "Sidewalk": { + "additionalProperties": false, + "description": "sidewalk contain file for created device and role", + "properties": { + "DeviceCreationFile": { + "maxLength": 1024, + "type": "string" + }, + "DeviceCreationFileList": { + "$ref": "#/definitions/DeviceCreationFileList" + }, + "Role": { + "$ref": "#/definitions/Role" + }, + "SidewalkManufacturingSn": { + "maxLength": 64, + "type": "string" + } + }, + "type": "object" + }, + "Status": { + "description": "Status for import task", + "enum": [ + "INITIALIZING", + "INITIALIZED", + "PENDING", + "COMPLETE", + "FAILED", + "DELETING" + ], + "type": "string" + }, + "StatusReason": { + "description": "StatusReason for import task", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/CreationDate", + "/properties/Status", + "/properties/StatusReason", + "/properties/InitializedImportedDevicesCount", + "/properties/PendingImportedDevicesCount", + "/properties/OnboardedImportedDevicesCount", + "/properties/FailedImportedDevicesCount", + "/properties/Sidewalk/DeviceCreationFileList" + ], + "required": [ + "DestinationName", + "Sidewalk" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotwireless:TagResource", + "iotwireless:UntagResource", + "iotwireless:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTWireless::WirelessDeviceImportTask", + "writeOnlyProperties": [ + "/properties/Sidewalk/DeviceCreationFile", + "/properties/Sidewalk/SidewalkManufacturingSn" + ] +} diff --git a/src/schema/aws-iotwireless-wirelessgateway.json b/src/schema/aws-iotwireless-wirelessgateway.json index ca8c648d..9f4f82d1 100644 --- a/src/schema/aws-iotwireless-wirelessgateway.json +++ b/src/schema/aws-iotwireless-wirelessgateway.json @@ -1,146 +1,146 @@ -{ - "additionalProperties": false, - "definitions": { - "LoRaWANGateway": { - "additionalProperties": false, - "properties": { - "GatewayEui": { - "pattern": "^(([0-9A-Fa-f]{2}-){7}|([0-9A-Fa-f]{2}:){7}|([0-9A-Fa-f]{2}\\s){7}|([0-9A-Fa-f]{2}){7})([0-9A-Fa-f]{2})$", - "type": "string" - }, - "RfRegion": { - "maxLength": 64, - "type": "string" - } - }, - "required": [ - "GatewayEui", - "RfRegion" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Create and manage wireless gateways, including LoRa gateways.", - "handlers": { - "create": { - "permissions": [ - "iotwireless:CreateWirelessGateway", - "iotwireless:TagResource" - ] - }, - "delete": { - "permissions": [ - "iotwireless:DeleteWirelessGateway", - "iotwireless:DisassociateWirelessGatewayFromThing" - ] - }, - "list": { - "permissions": [ - "iotwireless:ListWirelessGateways", - "iotwireless:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "iotwireless:GetWirelessGateway", - "iotwireless:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotwireless:GetWirelessGateway", - "iotwireless:UpdateWirelessGateway", - "iotwireless:AssociateWirelessGatewayWithThing", - "iotwireless:TagResource", - "iotwireless:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "Arn for Wireless Gateway. Returned upon successful create.", - "type": "string" - }, - "Description": { - "description": "Description of Wireless Gateway.", - "maxLength": 2048, - "type": "string" - }, - "Id": { - "description": "Id for Wireless Gateway. Returned upon successful create.", - "maxLength": 256, - "type": "string" - }, - "LastUplinkReceivedAt": { - "description": "The date and time when the most recent uplink was received.", - "type": "string" - }, - "LoRaWAN": { - "$ref": "#/definitions/LoRaWANGateway", - "description": "The combination of Package, Station and Model which represents the version of the LoRaWAN Wireless Gateway." - }, - "Name": { - "description": "Name of Wireless Gateway.", - "maxLength": 256, - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the gateway.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - }, - "ThingArn": { - "description": "Thing Arn. Passed into Update to associate a Thing with the Wireless Gateway.", - "type": "string" - }, - "ThingName": { - "description": "Thing Name. If there is a Thing created, this can be returned with a Get call.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "LoRaWAN" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "iotwireless:TagResource", - "iotwireless:UntagResource", - "iotwireless:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoTWireless::WirelessGateway" -} +{ + "additionalProperties": false, + "definitions": { + "LoRaWANGateway": { + "additionalProperties": false, + "properties": { + "GatewayEui": { + "pattern": "^(([0-9A-Fa-f]{2}-){7}|([0-9A-Fa-f]{2}:){7}|([0-9A-Fa-f]{2}\\s){7}|([0-9A-Fa-f]{2}){7})([0-9A-Fa-f]{2})$", + "type": "string" + }, + "RfRegion": { + "maxLength": 64, + "type": "string" + } + }, + "required": [ + "GatewayEui", + "RfRegion" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Create and manage wireless gateways, including LoRa gateways.", + "handlers": { + "create": { + "permissions": [ + "iotwireless:CreateWirelessGateway", + "iotwireless:TagResource" + ] + }, + "delete": { + "permissions": [ + "iotwireless:DeleteWirelessGateway", + "iotwireless:DisassociateWirelessGatewayFromThing" + ] + }, + "list": { + "permissions": [ + "iotwireless:ListWirelessGateways", + "iotwireless:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iotwireless:GetWirelessGateway", + "iotwireless:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iotwireless:GetWirelessGateway", + "iotwireless:UpdateWirelessGateway", + "iotwireless:AssociateWirelessGatewayWithThing", + "iotwireless:TagResource", + "iotwireless:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "Arn for Wireless Gateway. Returned upon successful create.", + "type": "string" + }, + "Description": { + "description": "Description of Wireless Gateway.", + "maxLength": 2048, + "type": "string" + }, + "Id": { + "description": "Id for Wireless Gateway. Returned upon successful create.", + "maxLength": 256, + "type": "string" + }, + "LastUplinkReceivedAt": { + "description": "The date and time when the most recent uplink was received.", + "type": "string" + }, + "LoRaWAN": { + "$ref": "#/definitions/LoRaWANGateway", + "description": "The combination of Package, Station and Model which represents the version of the LoRaWAN Wireless Gateway." + }, + "Name": { + "description": "Name of Wireless Gateway.", + "maxLength": 256, + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the gateway.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + }, + "ThingArn": { + "description": "Thing Arn. Passed into Update to associate a Thing with the Wireless Gateway.", + "type": "string" + }, + "ThingName": { + "description": "Thing Name. If there is a Thing created, this can be returned with a Get call.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "LoRaWAN" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "iotwireless:TagResource", + "iotwireless:UntagResource", + "iotwireless:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IoTWireless::WirelessGateway" +} diff --git a/src/schema/aws-ivs-channel.json b/src/schema/aws-ivs-channel.json index 42c17950..61b8a357 100644 --- a/src/schema/aws-ivs-channel.json +++ b/src/schema/aws-ivs-channel.json @@ -1,166 +1,208 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::IVS::Channel", - "handlers": { - "create": { - "permissions": [ - "ivs:CreateChannel", - "ivs:TagResource" - ] - }, - "delete": { - "permissions": [ - "ivs:DeleteChannel", - "ivs:UntagResource" - ] - }, - "list": { - "permissions": [ - "ivs:ListChannels", - "ivs:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "ivs:GetChannel", - "ivs:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "ivs:GetChannel", - "ivs:UpdateChannel", - "ivs:TagResource", - "ivs:UntagResource", - "ivs:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Channel ARN is automatically generated on creation and assigned as the unique identifier.", - "maxLength": 128, - "minLength": 1, - "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:channel/[a-zA-Z0-9-]+$", - "type": "string" - }, - "Authorized": { - "default": false, - "description": "Whether the channel is authorized.", - "type": "boolean" - }, - "IngestEndpoint": { - "description": "Channel ingest endpoint, part of the definition of an ingest server, used when you set up streaming software.", - "type": "string" - }, - "InsecureIngest": { - "default": false, - "description": "Whether the channel allows insecure ingest.", - "type": "boolean" - }, - "LatencyMode": { - "default": "LOW", - "description": "Channel latency mode.", - "enum": [ - "NORMAL", - "LOW" - ], - "type": "string" - }, - "Name": { - "default": "-", - "description": "Channel", - "maxLength": 128, - "minLength": 0, - "pattern": "^[a-zA-Z0-9-_]*$", - "type": "string" - }, - "PlaybackUrl": { - "description": "Channel Playback URL.", - "type": "string" - }, - "Preset": { - "description": "Optional transcode preset for the channel. This is selectable only for ADVANCED_HD and ADVANCED_SD channel types. For those channel types, the default preset is HIGHER_BANDWIDTH_DELIVERY. For other channel types (BASIC and STANDARD), preset is the empty string (\"\").", - "enum": [ - "", - "HIGHER_BANDWIDTH_DELIVERY", - "CONSTRAINED_BANDWIDTH_DELIVERY" - ], - "type": "string" - }, - "RecordingConfigurationArn": { - "default": "", - "description": "Recording Configuration ARN. A value other than an empty string indicates that recording is enabled. Default: \"\" (recording is disabled).", - "maxLength": 128, - "minLength": 0, - "pattern": "^$|arn:aws:ivs:[a-z0-9-]+:[0-9]+:recording-configuration/[a-zA-Z0-9-]+$", - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the asset model.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "Type": { - "default": "STANDARD", - "description": "Channel type, which determines the allowable resolution and bitrate. If you exceed the allowable resolution or bitrate, the stream probably will disconnect immediately.", - "enum": [ - "STANDARD", - "BASIC", - "ADVANCED_SD", - "ADVANCED_HD" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/PlaybackUrl", - "/properties/IngestEndpoint" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ivs:TagResource", - "ivs:UntagResource", - "ivs:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IVS::Channel" -} +{ + "additionalProperties": false, + "definitions": { + "MultitrackInputConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "default": false, + "description": "Indicates whether multitrack input is enabled. Can be set to true only if channel type is STANDARD. Setting enabled to true with any other channel type will cause an exception. If true, then policy, maximumResolution, and containerFormat are required, and containerFormat must be set to FRAGMENTED_MP4. Default: false.", + "type": "boolean" + }, + "MaximumResolution": { + "description": "Maximum resolution for multitrack input. Required if enabled is true.", + "enum": [ + "SD", + "HD", + "FULL_HD" + ], + "type": "string" + }, + "Policy": { + "description": "Indicates whether multitrack input is allowed or required. Required if enabled is true.", + "enum": [ + "ALLOW", + "REQUIRE" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::IVS::Channel", + "handlers": { + "create": { + "permissions": [ + "ivs:CreateChannel", + "ivs:TagResource" + ] + }, + "delete": { + "permissions": [ + "ivs:DeleteChannel", + "ivs:UntagResource" + ] + }, + "list": { + "permissions": [ + "ivs:ListChannels", + "ivs:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "ivs:GetChannel", + "ivs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ivs:GetChannel", + "ivs:UpdateChannel", + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Channel ARN is automatically generated on creation and assigned as the unique identifier.", + "maxLength": 128, + "minLength": 1, + "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:channel/[a-zA-Z0-9-]+$", + "type": "string" + }, + "Authorized": { + "default": false, + "description": "Whether the channel is authorized.", + "type": "boolean" + }, + "ContainerFormat": { + "default": "TS", + "description": "Indicates which content-packaging format is used (MPEG-TS or fMP4). If multitrackInputConfiguration is specified and enabled is true, then containerFormat is required and must be set to FRAGMENTED_MP4. Otherwise, containerFormat may be set to TS or FRAGMENTED_MP4. Default: TS.", + "enum": [ + "TS", + "FRAGMENTED_MP4" + ], + "type": "string" + }, + "IngestEndpoint": { + "description": "Channel ingest endpoint, part of the definition of an ingest server, used when you set up streaming software.", + "type": "string" + }, + "InsecureIngest": { + "default": false, + "description": "Whether the channel allows insecure ingest.", + "type": "boolean" + }, + "LatencyMode": { + "default": "LOW", + "description": "Channel latency mode.", + "enum": [ + "NORMAL", + "LOW" + ], + "type": "string" + }, + "MultitrackInputConfiguration": { + "$ref": "#/definitions/MultitrackInputConfiguration" + }, + "Name": { + "default": "-", + "description": "Channel", + "maxLength": 128, + "minLength": 0, + "pattern": "^[a-zA-Z0-9-_]*$", + "type": "string" + }, + "PlaybackUrl": { + "description": "Channel Playback URL.", + "type": "string" + }, + "Preset": { + "description": "Optional transcode preset for the channel. This is selectable only for ADVANCED_HD and ADVANCED_SD channel types. For those channel types, the default preset is HIGHER_BANDWIDTH_DELIVERY. For other channel types (BASIC and STANDARD), preset is the empty string (\"\").", + "enum": [ + "", + "HIGHER_BANDWIDTH_DELIVERY", + "CONSTRAINED_BANDWIDTH_DELIVERY" + ], + "type": "string" + }, + "RecordingConfigurationArn": { + "default": "", + "description": "Recording Configuration ARN. A value other than an empty string indicates that recording is enabled. Default: \"\" (recording is disabled).", + "maxLength": 128, + "minLength": 0, + "pattern": "^$|arn:aws:ivs:[a-z0-9-]+:[0-9]+:recording-configuration/[a-zA-Z0-9-]+$", + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the asset model.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "Type": { + "default": "STANDARD", + "description": "Channel type, which determines the allowable resolution and bitrate. If you exceed the allowable resolution or bitrate, the stream probably will disconnect immediately.", + "enum": [ + "STANDARD", + "BASIC", + "ADVANCED_SD", + "ADVANCED_HD" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/PlaybackUrl", + "/properties/IngestEndpoint" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IVS::Channel" +} diff --git a/src/schema/aws-ivs-encoderconfiguration.json b/src/schema/aws-ivs-encoderconfiguration.json index 0d615566..4bc32906 100644 --- a/src/schema/aws-ivs-encoderconfiguration.json +++ b/src/schema/aws-ivs-encoderconfiguration.json @@ -1,153 +1,153 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Video", - "/properties/Video/Bitrate", - "/properties/Video/Framerate", - "/properties/Video/Height", - "/properties/Video/Width" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::IVS::EncoderConfiguration.", - "handlers": { - "create": { - "permissions": [ - "ivs:CreateEncoderConfiguration", - "ivs:TagResource" - ] - }, - "delete": { - "permissions": [ - "ivs:DeleteEncoderConfiguration", - "ivs:UntagResource" - ] - }, - "list": { - "permissions": [ - "ivs:ListEncoderConfigurations", - "ivs:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "ivs:GetEncoderConfiguration", - "ivs:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "ivs:GetEncoderConfiguration", - "ivs:ListTagsForResource", - "ivs:UntagResource", - "ivs:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Encoder configuration identifier.", - "maxLength": 128, - "minLength": 1, - "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:encoder-configuration/[a-zA-Z0-9-]+$", - "type": "string" - }, - "Name": { - "description": "Encoder configuration name.", - "maxLength": 128, - "minLength": 0, - "pattern": "^[a-zA-Z0-9-_]*$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "Video": { - "additionalProperties": false, - "description": "Video configuration. Default: video resolution 1280x720, bitrate 2500 kbps, 30 fps", - "properties": { - "Bitrate": { - "default": 2500000, - "description": "Bitrate for generated output, in bps. Default: 2500000.", - "maximum": 8500000, - "minimum": 1, - "type": "integer" - }, - "Framerate": { - "default": 30, - "description": "Video frame rate, in fps. Default: 30.", - "maximum": 60, - "minimum": 1, - "type": "number" - }, - "Height": { - "default": 720, - "description": "Video-resolution height. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 720.", - "maximum": 1920, - "minimum": 2, - "type": "integer" - }, - "Width": { - "default": 1280, - "description": "Video-resolution width. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 1280.", - "maximum": 1920, - "minimum": 2, - "type": "integer" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ivs:TagResource", - "ivs:UntagResource", - "ivs:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IVS::EncoderConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Video", + "/properties/Video/Bitrate", + "/properties/Video/Framerate", + "/properties/Video/Height", + "/properties/Video/Width" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::IVS::EncoderConfiguration.", + "handlers": { + "create": { + "permissions": [ + "ivs:CreateEncoderConfiguration", + "ivs:TagResource" + ] + }, + "delete": { + "permissions": [ + "ivs:DeleteEncoderConfiguration", + "ivs:UntagResource" + ] + }, + "list": { + "permissions": [ + "ivs:ListEncoderConfigurations", + "ivs:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "ivs:GetEncoderConfiguration", + "ivs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ivs:GetEncoderConfiguration", + "ivs:ListTagsForResource", + "ivs:UntagResource", + "ivs:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Encoder configuration identifier.", + "maxLength": 128, + "minLength": 1, + "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:encoder-configuration/[a-zA-Z0-9-]+$", + "type": "string" + }, + "Name": { + "description": "Encoder configuration name.", + "maxLength": 128, + "minLength": 0, + "pattern": "^[a-zA-Z0-9-_]*$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "Video": { + "additionalProperties": false, + "description": "Video configuration. Default: video resolution 1280x720, bitrate 2500 kbps, 30 fps", + "properties": { + "Bitrate": { + "default": 2500000, + "description": "Bitrate for generated output, in bps. Default: 2500000.", + "maximum": 8500000, + "minimum": 1, + "type": "integer" + }, + "Framerate": { + "default": 30, + "description": "Video frame rate, in fps. Default: 30.", + "maximum": 60, + "minimum": 1, + "type": "number" + }, + "Height": { + "default": 720, + "description": "Video-resolution height. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 720.", + "maximum": 1920, + "minimum": 2, + "type": "integer" + }, + "Width": { + "default": 1280, + "description": "Video-resolution width. This must be an even number. Note that the maximum value is determined by width times height, such that the maximum total pixels is 2073600 (1920x1080 or 1080x1920). Default: 1280.", + "maximum": 1920, + "minimum": 2, + "type": "integer" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IVS::EncoderConfiguration" +} diff --git a/src/schema/aws-ivs-ingestconfiguration.json b/src/schema/aws-ivs-ingestconfiguration.json new file mode 100644 index 00000000..ff7e3bc9 --- /dev/null +++ b/src/schema/aws-ivs-ingestconfiguration.json @@ -0,0 +1,169 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InsecureIngest", + "/properties/UserId", + "/properties/Name", + "/properties/IngestProtocol" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::IVS::IngestConfiguration", + "handlers": { + "create": { + "permissions": [ + "ivs:CreateIngestConfiguration", + "ivs:TagResource" + ] + }, + "delete": { + "permissions": [ + "ivs:DeleteIngestConfiguration", + "ivs:UntagResource" + ] + }, + "list": { + "permissions": [ + "ivs:ListIngestConfigurations", + "ivs:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "ivs:GetIngestConfiguration", + "ivs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ivs:GetIngestConfiguration", + "ivs:UpdateIngestConfiguration", + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "IngestConfiguration ARN is automatically generated on creation and assigned as the unique identifier.", + "maxLength": 128, + "minLength": 1, + "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:ingest-configuration/[a-zA-Z0-9-]+$", + "type": "string" + }, + "IngestProtocol": { + "default": "RTMPS", + "description": "Ingest Protocol.", + "enum": [ + "RTMP", + "RTMPS" + ], + "type": "string" + }, + "InsecureIngest": { + "default": false, + "description": "Whether ingest configuration allows insecure ingest.", + "type": "boolean" + }, + "Name": { + "default": "-", + "description": "IngestConfiguration", + "maxLength": 128, + "minLength": 0, + "pattern": "^[a-zA-Z0-9-_]*$", + "type": "string" + }, + "ParticipantId": { + "description": "Participant Id is automatically generated on creation and assigned.", + "maxLength": 64, + "minLength": 0, + "pattern": "^[a-zA-Z0-9-_]*$", + "type": "string" + }, + "StageArn": { + "default": "", + "description": "Stage ARN. A value other than an empty string indicates that stage is linked to IngestConfiguration. Default: \"\" (recording is disabled).", + "maxLength": 128, + "minLength": 0, + "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:stage/[a-zA-Z0-9-]+$", + "type": "string" + }, + "State": { + "default": "INACTIVE", + "description": "State of IngestConfiguration which determines whether IngestConfiguration is in use or not.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "type": "string" + }, + "StreamKey": { + "description": "Stream-key value.", + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the asset model.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UserId": { + "description": "User defined indentifier for participant associated with IngestConfiguration.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ParticipantId", + "/properties/StreamKey", + "/properties/State" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IVS::IngestConfiguration", + "writeOnlyProperties": [ + "/properties/InsecureIngest" + ] +} diff --git a/src/schema/aws-ivs-playbackkeypair.json b/src/schema/aws-ivs-playbackkeypair.json index 4519efba..45b7cb88 100644 --- a/src/schema/aws-ivs-playbackkeypair.json +++ b/src/schema/aws-ivs-playbackkeypair.json @@ -1,121 +1,121 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PublicKeyMaterial", - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::IVS::PlaybackKeyPair", - "handlers": { - "create": { - "permissions": [ - "ivs:ImportPlaybackKeyPair", - "ivs:TagResource" - ] - }, - "delete": { - "permissions": [ - "ivs:DeletePlaybackKeyPair", - "ivs:UntagResource" - ] - }, - "list": { - "permissions": [ - "ivs:ListPlaybackKeyPairs", - "ivs:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "ivs:GetPlaybackKeyPair" - ] - }, - "update": { - "permissions": [ - "ivs:GetPlaybackKeyPair", - "ivs:ListTagsForResource", - "ivs:UntagResource", - "ivs:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Key-pair identifier.", - "maxLength": 128, - "minLength": 1, - "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:playback-key/[a-zA-Z0-9-]+$", - "type": "string" - }, - "Fingerprint": { - "description": "Key-pair identifier.", - "type": "string" - }, - "Name": { - "description": "An arbitrary string (a nickname) assigned to a playback key pair that helps the customer identify that resource. The value does not need to be unique.", - "maxLength": 128, - "minLength": 0, - "pattern": "^[a-zA-Z0-9-_]*$", - "type": "string" - }, - "PublicKeyMaterial": { - "description": "The public portion of a customer-generated key pair.", - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the asset model.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Fingerprint" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ivs:TagResource", - "ivs:UntagResource", - "ivs:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IVS::PlaybackKeyPair", - "writeOnlyProperties": [ - "/properties/PublicKeyMaterial" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PublicKeyMaterial", + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::IVS::PlaybackKeyPair", + "handlers": { + "create": { + "permissions": [ + "ivs:ImportPlaybackKeyPair", + "ivs:TagResource" + ] + }, + "delete": { + "permissions": [ + "ivs:DeletePlaybackKeyPair", + "ivs:UntagResource" + ] + }, + "list": { + "permissions": [ + "ivs:ListPlaybackKeyPairs", + "ivs:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "ivs:GetPlaybackKeyPair" + ] + }, + "update": { + "permissions": [ + "ivs:GetPlaybackKeyPair", + "ivs:ListTagsForResource", + "ivs:UntagResource", + "ivs:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Key-pair identifier.", + "maxLength": 128, + "minLength": 1, + "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:playback-key/[a-zA-Z0-9-]+$", + "type": "string" + }, + "Fingerprint": { + "description": "Key-pair identifier.", + "type": "string" + }, + "Name": { + "description": "An arbitrary string (a nickname) assigned to a playback key pair that helps the customer identify that resource. The value does not need to be unique.", + "maxLength": 128, + "minLength": 0, + "pattern": "^[a-zA-Z0-9-_]*$", + "type": "string" + }, + "PublicKeyMaterial": { + "description": "The public portion of a customer-generated key pair. This field is required to create the AWS::IVS::PlaybackKeyPair resource.", + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the asset model.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Fingerprint" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IVS::PlaybackKeyPair", + "writeOnlyProperties": [ + "/properties/PublicKeyMaterial" + ] +} diff --git a/src/schema/aws-ivs-playbackrestrictionpolicy.json b/src/schema/aws-ivs-playbackrestrictionpolicy.json index e9c129de..ce9ef5bc 100644 --- a/src/schema/aws-ivs-playbackrestrictionpolicy.json +++ b/src/schema/aws-ivs-playbackrestrictionpolicy.json @@ -1,138 +1,138 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::IVS::PlaybackRestrictionPolicy.", - "handlers": { - "create": { - "permissions": [ - "ivs:CreatePlaybackRestrictionPolicy", - "ivs:TagResource" - ] - }, - "delete": { - "permissions": [ - "ivs:DeletePlaybackRestrictionPolicy", - "ivs:UntagResource" - ] - }, - "list": { - "permissions": [ - "ivs:ListPlaybackRestrictionPolicies", - "ivs:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "ivs:GetPlaybackRestrictionPolicy", - "ivs:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "ivs:GetPlaybackRestrictionPolicy", - "ivs:UpdatePlaybackRestrictionPolicy", - "ivs:ListTagsForResource", - "ivs:UntagResource", - "ivs:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "AllowedCountries": { - "default": [], - "description": "A list of country codes that control geoblocking restriction. Allowed values are the officially assigned ISO 3166-1 alpha-2 codes. Default: All countries (an empty array).", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "AllowedOrigins": { - "default": [], - "description": "A list of origin sites that control CORS restriction. Allowed values are the same as valid values of the Origin header defined at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "Arn": { - "description": "Playback-restriction-policy identifier.", - "maxLength": 128, - "minLength": 1, - "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:playback-restriction-policy/[a-zA-Z0-9-]+$", - "type": "string" - }, - "EnableStrictOriginEnforcement": { - "default": false, - "description": "Whether channel playback is constrained by origin site.", - "type": "boolean" - }, - "Name": { - "description": "Playback-restriction-policy name.", - "maxLength": 128, - "minLength": 0, - "pattern": "^[a-zA-Z0-9-_]*$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "AllowedCountries", - "AllowedOrigins" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ivs:TagResource", - "ivs:UntagResource", - "ivs:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IVS::PlaybackRestrictionPolicy" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::IVS::PlaybackRestrictionPolicy.", + "handlers": { + "create": { + "permissions": [ + "ivs:CreatePlaybackRestrictionPolicy", + "ivs:TagResource" + ] + }, + "delete": { + "permissions": [ + "ivs:DeletePlaybackRestrictionPolicy", + "ivs:UntagResource" + ] + }, + "list": { + "permissions": [ + "ivs:ListPlaybackRestrictionPolicies", + "ivs:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "ivs:GetPlaybackRestrictionPolicy", + "ivs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ivs:GetPlaybackRestrictionPolicy", + "ivs:UpdatePlaybackRestrictionPolicy", + "ivs:ListTagsForResource", + "ivs:UntagResource", + "ivs:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AllowedCountries": { + "default": [], + "description": "A list of country codes that control geoblocking restriction. Allowed values are the officially assigned ISO 3166-1 alpha-2 codes. Default: All countries (an empty array).", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "AllowedOrigins": { + "default": [], + "description": "A list of origin sites that control CORS restriction. Allowed values are the same as valid values of the Origin header defined at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Arn": { + "description": "Playback-restriction-policy identifier.", + "maxLength": 128, + "minLength": 1, + "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:playback-restriction-policy/[a-zA-Z0-9-]+$", + "type": "string" + }, + "EnableStrictOriginEnforcement": { + "default": false, + "description": "Whether channel playback is constrained by origin site.", + "type": "boolean" + }, + "Name": { + "description": "Playback-restriction-policy name.", + "maxLength": 128, + "minLength": 0, + "pattern": "^[a-zA-Z0-9-_]*$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "AllowedCountries", + "AllowedOrigins" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IVS::PlaybackRestrictionPolicy" +} diff --git a/src/schema/aws-ivs-publickey.json b/src/schema/aws-ivs-publickey.json index db2d4557..97636e4a 100644 --- a/src/schema/aws-ivs-publickey.json +++ b/src/schema/aws-ivs-publickey.json @@ -1,119 +1,119 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PublicKeyMaterial", - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::IVS::PublicKey", - "handlers": { - "create": { - "permissions": [ - "ivs:ImportPublicKey", - "ivs:TagResource" - ] - }, - "delete": { - "permissions": [ - "ivs:DeletePublicKey", - "ivs:UntagResource" - ] - }, - "list": { - "permissions": [ - "ivs:ListPublicKeys", - "ivs:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "ivs:GetPublicKey" - ] - }, - "update": { - "permissions": [ - "ivs:GetPublicKey", - "ivs:ListTagsForResource", - "ivs:UntagResource", - "ivs:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Key-pair identifier.", - "maxLength": 128, - "minLength": 1, - "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:public-key/[a-zA-Z0-9-]+$", - "type": "string" - }, - "Fingerprint": { - "description": "Key-pair identifier.", - "type": "string" - }, - "Name": { - "description": "Name of the public key to be imported. The value does not need to be unique.", - "maxLength": 128, - "minLength": 0, - "pattern": "^[a-zA-Z0-9-_]*$", - "type": "string" - }, - "PublicKeyMaterial": { - "description": "The public portion of a customer-generated key pair.", - "pattern": "-----BEGIN PUBLIC KEY-----\\r?\\n([a-zA-Z0-9+/=\\r\\n]+)\\r?\\n-----END PUBLIC KEY-----(\\r?\\n)?", - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the asset model.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Fingerprint" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ivs:TagResource", - "ivs:UntagResource", - "ivs:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IVS::PublicKey" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PublicKeyMaterial", + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::IVS::PublicKey", + "handlers": { + "create": { + "permissions": [ + "ivs:ImportPublicKey", + "ivs:TagResource" + ] + }, + "delete": { + "permissions": [ + "ivs:DeletePublicKey", + "ivs:UntagResource" + ] + }, + "list": { + "permissions": [ + "ivs:ListPublicKeys", + "ivs:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "ivs:GetPublicKey" + ] + }, + "update": { + "permissions": [ + "ivs:GetPublicKey", + "ivs:ListTagsForResource", + "ivs:UntagResource", + "ivs:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Key-pair identifier.", + "maxLength": 128, + "minLength": 1, + "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:public-key/[a-zA-Z0-9-]+$", + "type": "string" + }, + "Fingerprint": { + "description": "Key-pair identifier.", + "type": "string" + }, + "Name": { + "description": "Name of the public key to be imported. The value does not need to be unique.", + "maxLength": 128, + "minLength": 0, + "pattern": "^[a-zA-Z0-9-_]*$", + "type": "string" + }, + "PublicKeyMaterial": { + "description": "The public portion of a customer-generated key pair. This field is required to create the AWS::IVS::PublicKey resource.", + "pattern": "-----BEGIN PUBLIC KEY-----\\r?\\n([a-zA-Z0-9+/=\\r\\n]+)\\r?\\n-----END PUBLIC KEY-----(\\r?\\n)?", + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the asset model.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Fingerprint" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IVS::PublicKey" +} diff --git a/src/schema/aws-ivs-recordingconfiguration.json b/src/schema/aws-ivs-recordingconfiguration.json index 0645d0dd..5baa67c4 100644 --- a/src/schema/aws-ivs-recordingconfiguration.json +++ b/src/schema/aws-ivs-recordingconfiguration.json @@ -1,276 +1,278 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/DestinationConfiguration", - "/properties/DestinationConfiguration/S3", - "/properties/DestinationConfiguration/S3/BucketName", - "/properties/RecordingReconnectWindowSeconds", - "/properties/ThumbnailConfiguration", - "/properties/ThumbnailConfiguration/RecordingMode", - "/properties/ThumbnailConfiguration/TargetIntervalSeconds", - "/properties/ThumbnailConfiguration/Storage", - "/properties/ThumbnailConfiguration/Resolution", - "/properties/RenditionConfiguration", - "/properties/RenditionConfiguration/RenditionSelection", - "/properties/RenditionConfiguration/Renditions" - ], - "definitions": { - "DestinationConfiguration": { - "additionalProperties": false, - "description": "Recording Destination Configuration.", - "properties": { - "S3": { - "$ref": "#/definitions/S3DestinationConfiguration" - } - }, - "required": [], - "type": "object" - }, - "RenditionConfiguration": { - "additionalProperties": false, - "description": "Rendition Configuration describes which renditions should be recorded for a stream.", - "properties": { - "RenditionSelection": { - "default": "ALL", - "description": "Resolution Selection indicates which set of renditions are recorded for a stream.", - "enum": [ - "ALL", - "NONE", - "CUSTOM" - ], - "type": "string" - }, - "Renditions": { - "description": "Renditions indicates which renditions are recorded for a stream.", - "insertionOrder": false, - "items": { - "enum": [ - "FULL_HD", - "HD", - "SD", - "LOWEST_RESOLUTION" - ], - "type": "string" - }, - "maxItems": 4, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "required": [], - "type": "object" - }, - "S3DestinationConfiguration": { - "additionalProperties": false, - "description": "Recording S3 Destination Configuration.", - "properties": { - "BucketName": { - "maxLength": 63, - "minLength": 3, - "pattern": "^[a-z0-9-.]+$", - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "ThumbnailConfiguration": { - "additionalProperties": false, - "description": "Recording Thumbnail Configuration.", - "properties": { - "RecordingMode": { - "default": "INTERVAL", - "description": "Thumbnail Recording Mode, which determines whether thumbnails are recorded at an interval or are disabled.", - "enum": [ - "INTERVAL", - "DISABLED" - ], - "type": "string" - }, - "Resolution": { - "description": "Resolution indicates the desired resolution of recorded thumbnails.", - "enum": [ - "FULL_HD", - "HD", - "SD", - "LOWEST_RESOLUTION" - ], - "type": "string" - }, - "Storage": { - "description": "Storage indicates the format in which thumbnails are recorded.", - "insertionOrder": false, - "items": { - "enum": [ - "SEQUENTIAL", - "LATEST" - ], - "type": "string" - }, - "maxItems": 2, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "TargetIntervalSeconds": { - "default": 60, - "description": "Target Interval Seconds defines the interval at which thumbnails are recorded. This field is required if RecordingMode is INTERVAL.", - "maximum": 60, - "minimum": 1, - "type": "integer" - } - }, - "required": [], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::IVS::RecordingConfiguration", - "handlers": { - "create": { - "permissions": [ - "ivs:CreateRecordingConfiguration", - "ivs:GetRecordingConfiguration", - "ivs:TagResource", - "iam:CreateServiceLinkedRole", - "iam:PutRolePolicy", - "iam:AttachRolePolicy", - "s3:ListBucket", - "s3:GetBucketLocation", - "cloudformation:ListExports" - ] - }, - "delete": { - "permissions": [ - "ivs:DeleteRecordingConfiguration", - "ivs:UntagResource", - "iam:CreateServiceLinkedRole" - ] - }, - "list": { - "permissions": [ - "ivs:ListRecordingConfigurations", - "s3:GetBucketLocation", - "ivs:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "ivs:GetRecordingConfiguration", - "s3:GetBucketLocation", - "ivs:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "ivs:GetRecordingConfiguration", - "sts:AssumeRole", - "iam:CreateServiceLinkedRole", - "iam:PutRolePolicy", - "iam:AttachRolePolicy", - "s3:ListBucket", - "ivs:TagResource", - "ivs:UntagResource", - "ivs:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Recording Configuration ARN is automatically generated on creation and assigned as the unique identifier.", - "maxLength": 128, - "minLength": 0, - "pattern": "^arn:aws[-a-z]*:ivs:[a-z0-9-]+:[0-9]+:recording-configuration/[a-zA-Z0-9-]+$", - "type": "string" - }, - "DestinationConfiguration": { - "$ref": "#/definitions/DestinationConfiguration" - }, - "Name": { - "description": "Recording Configuration Name.", - "maxLength": 128, - "minLength": 0, - "pattern": "^[a-zA-Z0-9-_]*$", - "type": "string" - }, - "RecordingReconnectWindowSeconds": { - "default": 0, - "description": "Recording Reconnect Window Seconds. (0 means disabled)", - "maximum": 300, - "minimum": 0, - "type": "integer" - }, - "RenditionConfiguration": { - "$ref": "#/definitions/RenditionConfiguration" - }, - "State": { - "description": "Recording Configuration State.", - "enum": [ - "CREATING", - "CREATE_FAILED", - "ACTIVE" - ], - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the asset model.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "ThumbnailConfiguration": { - "$ref": "#/definitions/ThumbnailConfiguration" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/State" - ], - "required": [ - "DestinationConfiguration" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ivs:TagResource", - "ivs:UntagResource", - "ivs:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IVS::RecordingConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/DestinationConfiguration", + "/properties/DestinationConfiguration/S3", + "/properties/DestinationConfiguration/S3/BucketName", + "/properties/RecordingReconnectWindowSeconds", + "/properties/ThumbnailConfiguration", + "/properties/ThumbnailConfiguration/RecordingMode", + "/properties/ThumbnailConfiguration/TargetIntervalSeconds", + "/properties/ThumbnailConfiguration/Storage", + "/properties/ThumbnailConfiguration/Resolution", + "/properties/RenditionConfiguration", + "/properties/RenditionConfiguration/RenditionSelection", + "/properties/RenditionConfiguration/Renditions" + ], + "definitions": { + "DestinationConfiguration": { + "additionalProperties": false, + "description": "Recording Destination Configuration.", + "properties": { + "S3": { + "$ref": "#/definitions/S3DestinationConfiguration" + } + }, + "required": [], + "type": "object" + }, + "RenditionConfiguration": { + "additionalProperties": false, + "description": "Rendition Configuration describes which renditions should be recorded for a stream.", + "properties": { + "RenditionSelection": { + "default": "ALL", + "description": "Resolution Selection indicates which set of renditions are recorded for a stream.", + "enum": [ + "ALL", + "NONE", + "CUSTOM" + ], + "type": "string" + }, + "Renditions": { + "description": "Renditions indicates which renditions are recorded for a stream.", + "insertionOrder": false, + "items": { + "enum": [ + "FULL_HD", + "HD", + "SD", + "LOWEST_RESOLUTION" + ], + "type": "string" + }, + "maxItems": 4, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "required": [], + "type": "object" + }, + "S3DestinationConfiguration": { + "additionalProperties": false, + "description": "Recording S3 Destination Configuration.", + "properties": { + "BucketName": { + "maxLength": 63, + "minLength": 3, + "pattern": "^[a-z0-9-.]+$", + "type": "string" + } + }, + "required": [ + "BucketName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "ThumbnailConfiguration": { + "additionalProperties": false, + "description": "Recording Thumbnail Configuration.", + "properties": { + "RecordingMode": { + "default": "INTERVAL", + "description": "Thumbnail Recording Mode, which determines whether thumbnails are recorded at an interval or are disabled.", + "enum": [ + "INTERVAL", + "DISABLED" + ], + "type": "string" + }, + "Resolution": { + "description": "Resolution indicates the desired resolution of recorded thumbnails.", + "enum": [ + "FULL_HD", + "HD", + "SD", + "LOWEST_RESOLUTION" + ], + "type": "string" + }, + "Storage": { + "description": "Storage indicates the format in which thumbnails are recorded.", + "insertionOrder": false, + "items": { + "enum": [ + "SEQUENTIAL", + "LATEST" + ], + "type": "string" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "TargetIntervalSeconds": { + "default": 60, + "description": "Target Interval Seconds defines the interval at which thumbnails are recorded. This field is required if RecordingMode is INTERVAL.", + "maximum": 60, + "minimum": 1, + "type": "integer" + } + }, + "required": [], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::IVS::RecordingConfiguration", + "handlers": { + "create": { + "permissions": [ + "ivs:CreateRecordingConfiguration", + "ivs:GetRecordingConfiguration", + "ivs:TagResource", + "iam:CreateServiceLinkedRole", + "iam:PutRolePolicy", + "iam:AttachRolePolicy", + "s3:ListBucket", + "s3:GetBucketLocation", + "cloudformation:ListExports" + ] + }, + "delete": { + "permissions": [ + "ivs:DeleteRecordingConfiguration", + "ivs:UntagResource", + "iam:CreateServiceLinkedRole" + ] + }, + "list": { + "permissions": [ + "ivs:ListRecordingConfigurations", + "s3:GetBucketLocation", + "ivs:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "ivs:GetRecordingConfiguration", + "s3:GetBucketLocation", + "ivs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ivs:GetRecordingConfiguration", + "sts:AssumeRole", + "iam:CreateServiceLinkedRole", + "iam:PutRolePolicy", + "iam:AttachRolePolicy", + "s3:ListBucket", + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Recording Configuration ARN is automatically generated on creation and assigned as the unique identifier.", + "maxLength": 128, + "minLength": 0, + "pattern": "^arn:aws[-a-z]*:ivs:[a-z0-9-]+:[0-9]+:recording-configuration/[a-zA-Z0-9-]+$", + "type": "string" + }, + "DestinationConfiguration": { + "$ref": "#/definitions/DestinationConfiguration" + }, + "Name": { + "description": "Recording Configuration Name.", + "maxLength": 128, + "minLength": 0, + "pattern": "^[a-zA-Z0-9-_]*$", + "type": "string" + }, + "RecordingReconnectWindowSeconds": { + "default": 0, + "description": "Recording Reconnect Window Seconds. (0 means disabled)", + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "RenditionConfiguration": { + "$ref": "#/definitions/RenditionConfiguration" + }, + "State": { + "description": "Recording Configuration State.", + "enum": [ + "CREATING", + "CREATE_FAILED", + "ACTIVE" + ], + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the asset model.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "ThumbnailConfiguration": { + "$ref": "#/definitions/ThumbnailConfiguration" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/State" + ], + "required": [ + "DestinationConfiguration" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IVS::RecordingConfiguration" +} diff --git a/src/schema/aws-ivs-stage.json b/src/schema/aws-ivs-stage.json index 535cb6d9..3ee310df 100644 --- a/src/schema/aws-ivs-stage.json +++ b/src/schema/aws-ivs-stage.json @@ -1,154 +1,157 @@ -{ - "additionalProperties": false, - "definitions": { - "AutoParticipantRecordingConfiguration": { - "additionalProperties": false, - "description": "Configuration object for individual participant recording, to attach to the new stage.", - "properties": { - "MediaTypes": { - "default": [ - "AUDIO_VIDEO" - ], - "description": "Types of media to be recorded. Default: AUDIO_VIDEO.", - "insertionOrder": false, - "items": { - "enum": [ - "AUDIO_VIDEO", - "AUDIO_ONLY" - ], - "type": "string" - }, - "maxItems": 1, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "StorageConfigurationArn": { - "description": "ARN of the StorageConfiguration resource to use for individual participant recording.", - "maxLength": 128, - "minLength": 0, - "pattern": "^$|^arn:aws:ivs:[a-z0-9-]+:[0-9]+:storage-configuration/[a-zA-Z0-9-]+$", - "type": "string" - } - }, - "required": [ - "StorageConfigurationArn" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Definition for type AWS::IVS::Stage.", - "handlers": { - "create": { - "permissions": [ - "ivs:CreateStage", - "ivs:GetStage", - "ivs:TagResource", - "ivs:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "ivs:DeleteStage", - "ivs:UntagResource" - ] - }, - "list": { - "permissions": [ - "ivs:ListStages", - "ivs:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "ivs:GetStage", - "ivs:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "ivs:GetStage", - "ivs:UpdateStage", - "ivs:TagResource", - "ivs:UntagResource", - "ivs:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "ActiveSessionId": { - "default": "", - "description": "ID of the active session within the stage.", - "maxLength": 128, - "minLength": 0, - "type": "string" - }, - "Arn": { - "description": "Stage ARN is automatically generated on creation and assigned as the unique identifier.", - "maxLength": 128, - "minLength": 0, - "pattern": "^arn:aws[-a-z]*:ivs:[a-z0-9-]+:[0-9]+:stage/[a-zA-Z0-9-]+$", - "type": "string" - }, - "AutoParticipantRecordingConfiguration": { - "$ref": "#/definitions/AutoParticipantRecordingConfiguration" - }, - "Name": { - "description": "Stage name", - "maxLength": 128, - "minLength": 0, - "pattern": "^[a-zA-Z0-9-_]*$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/ActiveSessionId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ivs:TagResource", - "ivs:UntagResource", - "ivs:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IVS::Stage" -} +{ + "additionalProperties": false, + "definitions": { + "AutoParticipantRecordingConfiguration": { + "additionalProperties": false, + "description": "Configuration object for individual participant recording, to attach to the new stage.", + "properties": { + "MediaTypes": { + "default": [ + "AUDIO_VIDEO" + ], + "description": "Types of media to be recorded. Default: AUDIO_VIDEO.", + "insertionOrder": false, + "items": { + "enum": [ + "AUDIO_VIDEO", + "AUDIO_ONLY" + ], + "type": "string" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "StorageConfigurationArn": { + "description": "ARN of the StorageConfiguration resource to use for individual participant recording.", + "maxLength": 128, + "minLength": 0, + "pattern": "^$|^arn:aws:ivs:[a-z0-9-]+:[0-9]+:storage-configuration/[a-zA-Z0-9-]+$", + "type": "string" + } + }, + "required": [ + "StorageConfigurationArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Definition for type AWS::IVS::Stage.", + "handlers": { + "create": { + "permissions": [ + "ivs:CreateStage", + "ivs:GetStage", + "ivs:TagResource", + "ivs:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "ivs:DeleteStage", + "ivs:UntagResource" + ] + }, + "list": { + "permissions": [ + "ivs:ListStages", + "ivs:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "ivs:GetStage", + "ivs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ivs:GetStage", + "ivs:UpdateStage", + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "ActiveSessionId": { + "default": "", + "description": "ID of the active session within the stage.", + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "Arn": { + "description": "Stage ARN is automatically generated on creation and assigned as the unique identifier.", + "maxLength": 128, + "minLength": 0, + "pattern": "^arn:aws[-a-z]*:ivs:[a-z0-9-]+:[0-9]+:stage/[a-zA-Z0-9-]+$", + "type": "string" + }, + "AutoParticipantRecordingConfiguration": { + "$ref": "#/definitions/AutoParticipantRecordingConfiguration" + }, + "Name": { + "description": "Stage name", + "maxLength": 128, + "minLength": 0, + "pattern": "^[a-zA-Z0-9-_]*$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ActiveSessionId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IVS::Stage" +} diff --git a/src/schema/aws-ivs-storageconfiguration.json b/src/schema/aws-ivs-storageconfiguration.json index 16ecc7a8..3f160a79 100644 --- a/src/schema/aws-ivs-storageconfiguration.json +++ b/src/schema/aws-ivs-storageconfiguration.json @@ -1,143 +1,145 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/S3", - "/properties/S3/BucketName" - ], - "definitions": { - "S3StorageConfiguration": { - "additionalProperties": false, - "description": "A complex type that describes an S3 location where recorded videos will be stored.", - "properties": { - "BucketName": { - "description": "Location (S3 bucket name) where recorded videos will be stored. Note that the StorageConfiguration and S3 bucket must be in the same region as the Composition.", - "maxLength": 63, - "minLength": 3, - "pattern": "^[a-z0-9-.]+$", - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::IVS::StorageConfiguration", - "handlers": { - "create": { - "permissions": [ - "ivs:CreateStorageConfiguration", - "ivs:GetStorageConfiguration", - "ivs:TagResource", - "s3:GetBucketLocation", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy" - ] - }, - "delete": { - "permissions": [ - "ivs:DeleteStorageConfiguration", - "ivs:UntagResource", - "s3:GetBucketPolicy", - "s3:DeleteBucketPolicy", - "s3:PutBucketPolicy" - ] - }, - "list": { - "permissions": [ - "ivs:ListStorageConfigurations", - "s3:GetBucketLocation", - "ivs:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "ivs:GetStorageConfiguration", - "ivs:ListTagsForResource", - "s3:GetBucketLocation" - ] - }, - "update": { - "permissions": [ - "ivs:GetStorageConfiguration", - "ivs:TagResource", - "ivs:UntagResource", - "ivs:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Storage Configuration ARN is automatically generated on creation and assigned as the unique identifier.", - "maxLength": 128, - "minLength": 0, - "pattern": "^arn:aws[-a-z]*:ivs:[a-z0-9-]+:[0-9]+:storage-configuration/[a-zA-Z0-9-]+$", - "type": "string" - }, - "Name": { - "description": "Storage Configuration Name.", - "maxLength": 128, - "minLength": 0, - "pattern": "^[a-zA-Z0-9-_]*$", - "type": "string" - }, - "S3": { - "$ref": "#/definitions/S3StorageConfiguration" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the asset model.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "S3" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ivs:TagResource", - "ivs:UntagResource", - "ivs:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IVS::StorageConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/S3", + "/properties/S3/BucketName" + ], + "definitions": { + "S3StorageConfiguration": { + "additionalProperties": false, + "description": "A complex type that describes an S3 location where recorded videos will be stored.", + "properties": { + "BucketName": { + "description": "Location (S3 bucket name) where recorded videos will be stored. Note that the StorageConfiguration and S3 bucket must be in the same region as the Composition.", + "maxLength": 63, + "minLength": 3, + "pattern": "^[a-z0-9-.]+$", + "type": "string" + } + }, + "required": [ + "BucketName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::IVS::StorageConfiguration", + "handlers": { + "create": { + "permissions": [ + "ivs:CreateStorageConfiguration", + "ivs:GetStorageConfiguration", + "ivs:TagResource", + "s3:GetBucketLocation", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy" + ] + }, + "delete": { + "permissions": [ + "ivs:DeleteStorageConfiguration", + "ivs:UntagResource", + "s3:GetBucketPolicy", + "s3:DeleteBucketPolicy", + "s3:PutBucketPolicy" + ] + }, + "list": { + "permissions": [ + "ivs:ListStorageConfigurations", + "s3:GetBucketLocation", + "ivs:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "ivs:GetStorageConfiguration", + "ivs:ListTagsForResource", + "s3:GetBucketLocation" + ] + }, + "update": { + "permissions": [ + "ivs:GetStorageConfiguration", + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Storage Configuration ARN is automatically generated on creation and assigned as the unique identifier.", + "maxLength": 128, + "minLength": 0, + "pattern": "^arn:aws[-a-z]*:ivs:[a-z0-9-]+:[0-9]+:storage-configuration/[a-zA-Z0-9-]+$", + "type": "string" + }, + "Name": { + "description": "Storage Configuration Name.", + "maxLength": 128, + "minLength": 0, + "pattern": "^[a-zA-Z0-9-_]*$", + "type": "string" + }, + "S3": { + "$ref": "#/definitions/S3StorageConfiguration" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the asset model.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "S3" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IVS::StorageConfiguration" +} diff --git a/src/schema/aws-ivs-streamkey.json b/src/schema/aws-ivs-streamkey.json index d84213ff..793dace1 100644 --- a/src/schema/aws-ivs-streamkey.json +++ b/src/schema/aws-ivs-streamkey.json @@ -1,127 +1,129 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ChannelArn" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::IVS::StreamKey", - "handlers": { - "create": { - "permissions": [ - "ivs:TagResource", - "ivs:UntagResource", - "ivs:CreateStreamKey" - ] - }, - "delete": { - "permissions": [ - "ivs:DeleteStreamKey", - "ivs:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ChannelArn": { - "$ref": "resource-schema.json#/properties/ChannelArn" - } - }, - "required": [ - "ChannelArn" - ] - }, - "permissions": [ - "ivs:ListStreamKeys", - "ivs:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "ivs:GetStreamKey", - "ivs:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "ivs:GetStreamKey", - "ivs:TagResource", - "ivs:UntagResource", - "ivs:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Stream Key ARN is automatically generated on creation and assigned as the unique identifier.", - "maxLength": 128, - "minLength": 1, - "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:stream-key/[a-zA-Z0-9-]+$", - "type": "string" - }, - "ChannelArn": { - "description": "Channel ARN for the stream.", - "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:channel/[a-zA-Z0-9-]+$", - "type": "string" - }, - "Tags": { - "description": "A list of key-value pairs that contain metadata for the asset model.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "Value": { - "description": "Stream-key value.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Value" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "ChannelArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ivs:TagResource", - "ivs:UntagResource", - "ivs:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IVS::StreamKey" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ChannelArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::IVS::StreamKey", + "handlers": { + "create": { + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:CreateStreamKey" + ] + }, + "delete": { + "permissions": [ + "ivs:DeleteStreamKey", + "ivs:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ChannelArn": { + "$ref": "resource-schema.json#/properties/ChannelArn" + } + }, + "required": [ + "ChannelArn" + ] + }, + "permissions": [ + "ivs:ListStreamKeys", + "ivs:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "ivs:GetStreamKey", + "ivs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ivs:GetStreamKey", + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Stream Key ARN is automatically generated on creation and assigned as the unique identifier.", + "maxLength": 128, + "minLength": 1, + "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:stream-key/[a-zA-Z0-9-]+$", + "type": "string" + }, + "ChannelArn": { + "description": "Channel ARN for the stream.", + "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:channel/[a-zA-Z0-9-]+$", + "type": "string" + }, + "Tags": { + "description": "A list of key-value pairs that contain metadata for the asset model.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "Value": { + "description": "Stream-key value.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Value" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "ChannelArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IVS::StreamKey" +} diff --git a/src/schema/aws-ivschat-loggingconfiguration.json b/src/schema/aws-ivschat-loggingconfiguration.json index 13ea9522..2f3a77dd 100644 --- a/src/schema/aws-ivschat-loggingconfiguration.json +++ b/src/schema/aws-ivschat-loggingconfiguration.json @@ -1,225 +1,230 @@ -{ - "additionalProperties": false, - "definitions": { - "CloudWatchLogsDestinationConfiguration": { - "additionalProperties": false, - "description": "CloudWatch destination configuration for IVS Chat logging.", - "properties": { - "LogGroupName": { - "description": "Name of the Amazon CloudWatch Logs log group where chat activity will be logged.", - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\.\\-_/#A-Za-z0-9]+$", - "type": "string" - } - }, - "required": [ - "LogGroupName" - ], - "type": "object" - }, - "DestinationConfiguration": { - "additionalProperties": false, - "description": "Destination configuration for IVS Chat logging.", - "properties": { - "CloudWatchLogs": { - "$ref": "#/definitions/CloudWatchLogsDestinationConfiguration" - }, - "Firehose": { - "$ref": "#/definitions/FirehoseDestinationConfiguration" - }, - "S3": { - "$ref": "#/definitions/S3DestinationConfiguration" - } - }, - "required": [], - "type": "object" - }, - "FirehoseDestinationConfiguration": { - "additionalProperties": false, - "description": "Kinesis Firehose destination configuration for IVS Chat logging.", - "properties": { - "DeliveryStreamName": { - "description": "Name of the Amazon Kinesis Firehose delivery stream where chat activity will be logged.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - } - }, - "required": [ - "DeliveryStreamName" - ], - "type": "object" - }, - "S3DestinationConfiguration": { - "additionalProperties": false, - "description": "S3 destination configuration for IVS Chat logging.", - "properties": { - "BucketName": { - "description": "Name of the Amazon S3 bucket where chat activity will be logged.", - "maxLength": 63, - "minLength": 3, - "pattern": "^[a-z0-9-.]+$", - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource type definition for AWS::IVSChat::LoggingConfiguration.", - "handlers": { - "create": { - "permissions": [ - "ivschat:CreateLoggingConfiguration", - "ivschat:GetLoggingConfiguration", - "logs:CreateLogDelivery", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "s3:PutBucketPolicy", - "s3:GetBucketPolicy", - "iam:CreateServiceLinkedRole", - "firehose:TagDeliveryStream", - "ivschat:TagResource" - ] - }, - "delete": { - "permissions": [ - "ivschat:DeleteLoggingConfiguration", - "ivschat:GetLoggingConfiguration", - "logs:DeleteLogDelivery", - "logs:ListLogDeliveries", - "ivschat:UntagResource", - "logs:GetLogDelivery" - ] - }, - "list": { - "permissions": [ - "ivschat:ListLoggingConfigurations", - "ivschat:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "ivschat:GetLoggingConfiguration", - "ivschat:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "ivschat:UpdateLoggingConfiguration", - "ivschat:GetLoggingConfiguration", - "ivschat:TagResource", - "ivschat:UntagResource", - "ivschat:ListTagsForResource", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:UpdateLogDelivery", - "logs:DeleteLogDelivery", - "logs:ListLogDeliveries", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "s3:PutBucketPolicy", - "s3:GetBucketPolicy", - "iam:CreateServiceLinkedRole", - "firehose:TagDeliveryStream" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "LoggingConfiguration ARN is automatically generated on creation and assigned as the unique identifier.", - "maxLength": 128, - "minLength": 1, - "pattern": "^arn:aws:ivschat:[a-z0-9-]+:[0-9]+:logging-configuration/[a-zA-Z0-9-]+$", - "type": "string" - }, - "DestinationConfiguration": { - "$ref": "#/definitions/DestinationConfiguration" - }, - "Id": { - "description": "The system-generated ID of the logging configuration.", - "maxLength": 12, - "minLength": 12, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Name": { - "description": "The name of the logging configuration. The value does not need to be unique.", - "maxLength": 128, - "minLength": 0, - "pattern": "^[a-zA-Z0-9-_]*$", - "type": "string" - }, - "State": { - "description": "The state of the logging configuration. When the state is ACTIVE, the configuration is ready to log chat content.", - "enum": [ - "CREATING", - "CREATE_FAILED", - "DELETING", - "DELETE_FAILED", - "UPDATING", - "UPDATING_FAILED", - "ACTIVE" - ], - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id", - "/properties/State" - ], - "required": [ - "DestinationConfiguration" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ivschat.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IVSChat::LoggingConfiguration" -} +{ + "additionalProperties": false, + "definitions": { + "CloudWatchLogsDestinationConfiguration": { + "additionalProperties": false, + "description": "CloudWatch destination configuration for IVS Chat logging.", + "properties": { + "LogGroupName": { + "description": "Name of the Amazon CloudWatch Logs log group where chat activity will be logged.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\.\\-_/#A-Za-z0-9]+$", + "type": "string" + } + }, + "required": [ + "LogGroupName" + ], + "type": "object" + }, + "DestinationConfiguration": { + "additionalProperties": false, + "description": "Destination configuration for IVS Chat logging.", + "properties": { + "CloudWatchLogs": { + "$ref": "#/definitions/CloudWatchLogsDestinationConfiguration" + }, + "Firehose": { + "$ref": "#/definitions/FirehoseDestinationConfiguration" + }, + "S3": { + "$ref": "#/definitions/S3DestinationConfiguration" + } + }, + "required": [], + "type": "object" + }, + "FirehoseDestinationConfiguration": { + "additionalProperties": false, + "description": "Kinesis Firehose destination configuration for IVS Chat logging.", + "properties": { + "DeliveryStreamName": { + "description": "Name of the Amazon Kinesis Firehose delivery stream where chat activity will be logged.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.-]+$", + "type": "string" + } + }, + "required": [ + "DeliveryStreamName" + ], + "type": "object" + }, + "S3DestinationConfiguration": { + "additionalProperties": false, + "description": "S3 destination configuration for IVS Chat logging.", + "properties": { + "BucketName": { + "description": "Name of the Amazon S3 bucket where chat activity will be logged.", + "maxLength": 63, + "minLength": 3, + "pattern": "^[a-z0-9-.]+$", + "type": "string" + } + }, + "required": [ + "BucketName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource type definition for AWS::IVSChat::LoggingConfiguration.", + "handlers": { + "create": { + "permissions": [ + "ivschat:CreateLoggingConfiguration", + "ivschat:GetLoggingConfiguration", + "logs:CreateLogDelivery", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "s3:PutBucketPolicy", + "s3:GetBucketPolicy", + "iam:CreateServiceLinkedRole", + "firehose:TagDeliveryStream", + "ivschat:TagResource" + ] + }, + "delete": { + "permissions": [ + "ivschat:DeleteLoggingConfiguration", + "ivschat:GetLoggingConfiguration", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "ivschat:UntagResource", + "logs:GetLogDelivery" + ] + }, + "list": { + "permissions": [ + "ivschat:ListLoggingConfigurations", + "ivschat:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "ivschat:GetLoggingConfiguration", + "ivschat:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ivschat:UpdateLoggingConfiguration", + "ivschat:GetLoggingConfiguration", + "ivschat:TagResource", + "ivschat:UntagResource", + "ivschat:ListTagsForResource", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "s3:PutBucketPolicy", + "s3:GetBucketPolicy", + "iam:CreateServiceLinkedRole", + "firehose:TagDeliveryStream" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "LoggingConfiguration ARN is automatically generated on creation and assigned as the unique identifier.", + "maxLength": 128, + "minLength": 1, + "pattern": "^arn:aws:ivschat:[a-z0-9-]+:[0-9]+:logging-configuration/[a-zA-Z0-9-]+$", + "type": "string" + }, + "DestinationConfiguration": { + "$ref": "#/definitions/DestinationConfiguration" + }, + "Id": { + "description": "The system-generated ID of the logging configuration.", + "maxLength": 12, + "minLength": 12, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Name": { + "description": "The name of the logging configuration. The value does not need to be unique.", + "maxLength": 128, + "minLength": 0, + "pattern": "^[a-zA-Z0-9-_]*$", + "type": "string" + }, + "State": { + "description": "The state of the logging configuration. When the state is ACTIVE, the configuration is ready to log chat content.", + "enum": [ + "CREATING", + "CREATE_FAILED", + "DELETING", + "DELETE_FAILED", + "UPDATING", + "UPDATING_FAILED", + "ACTIVE" + ], + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/State" + ], + "required": [ + "DestinationConfiguration" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ivschat.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ivschat:TagResource", + "ivschat:UntagResource", + "ivschat:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IVSChat::LoggingConfiguration" +} diff --git a/src/schema/aws-ivschat-room.json b/src/schema/aws-ivschat-room.json index 5a31f9bb..73c08024 100644 --- a/src/schema/aws-ivschat-room.json +++ b/src/schema/aws-ivschat-room.json @@ -1,172 +1,172 @@ -{ - "additionalProperties": false, - "definitions": { - "MessageReviewHandler": { - "additionalProperties": false, - "description": "Configuration information for optional review of messages.", - "properties": { - "FallbackResult": { - "default": "ALLOW", - "description": "Specifies the fallback behavior if the handler does not return a valid response, encounters an error, or times out.", - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "Uri": { - "description": "Identifier of the message review handler.", - "maxLength": 170, - "minLength": 0, - "pattern": "^$|^arn:aws:lambda:[a-z0-9-]+:[0-9]{12}:function:.+", - "type": "string" - } - }, - "required": [], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource type definition for AWS::IVSChat::Room.", - "handlers": { - "create": { - "permissions": [ - "ivschat:CreateRoom", - "ivschat:TagResource" - ] - }, - "delete": { - "permissions": [ - "ivschat:DeleteRoom", - "ivschat:UntagResource" - ] - }, - "list": { - "permissions": [ - "ivschat:ListRooms", - "ivschat:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "ivschat:GetRoom", - "ivschat:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "ivschat:UpdateRoom", - "ivschat:TagResource", - "ivschat:UntagResource", - "ivschat:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Room ARN is automatically generated on creation and assigned as the unique identifier.", - "maxLength": 128, - "minLength": 1, - "pattern": "^arn:aws:ivschat:[a-z0-9-]+:[0-9]+:room/[a-zA-Z0-9-]+$", - "type": "string" - }, - "Id": { - "description": "The system-generated ID of the room.", - "maxLength": 12, - "minLength": 12, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "LoggingConfigurationIdentifiers": { - "description": "Array of logging configuration identifiers attached to the room.", - "insertionOrder": false, - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^arn:aws:ivschat:[a-z0-9-]+:[0-9]+:logging-configuration/[a-zA-Z0-9-]+$", - "type": "string" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "MaximumMessageLength": { - "default": 500, - "description": "The maximum number of characters in a single message.", - "maximum": 500, - "minimum": 1, - "type": "integer" - }, - "MaximumMessageRatePerSecond": { - "default": 10, - "description": "The maximum number of messages per second that can be sent to the room.", - "maximum": 10, - "minimum": 1, - "type": "integer" - }, - "MessageReviewHandler": { - "$ref": "#/definitions/MessageReviewHandler" - }, - "Name": { - "description": "The name of the room. The value does not need to be unique.", - "maxLength": 128, - "minLength": 0, - "pattern": "^[a-zA-Z0-9-_]*$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ivschat.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ivschat:TagResource", - "ivschat:ListTagsForResource", - "ivschat:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IVSChat::Room" -} +{ + "additionalProperties": false, + "definitions": { + "MessageReviewHandler": { + "additionalProperties": false, + "description": "Configuration information for optional review of messages.", + "properties": { + "FallbackResult": { + "default": "ALLOW", + "description": "Specifies the fallback behavior if the handler does not return a valid response, encounters an error, or times out.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "Uri": { + "description": "Identifier of the message review handler.", + "maxLength": 170, + "minLength": 0, + "pattern": "^$|^arn:aws:lambda:[a-z0-9-]+:[0-9]{12}:function:.+", + "type": "string" + } + }, + "required": [], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource type definition for AWS::IVSChat::Room.", + "handlers": { + "create": { + "permissions": [ + "ivschat:CreateRoom", + "ivschat:TagResource" + ] + }, + "delete": { + "permissions": [ + "ivschat:DeleteRoom", + "ivschat:UntagResource" + ] + }, + "list": { + "permissions": [ + "ivschat:ListRooms", + "ivschat:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "ivschat:GetRoom", + "ivschat:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ivschat:UpdateRoom", + "ivschat:TagResource", + "ivschat:UntagResource", + "ivschat:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Room ARN is automatically generated on creation and assigned as the unique identifier.", + "maxLength": 128, + "minLength": 1, + "pattern": "^arn:aws:ivschat:[a-z0-9-]+:[0-9]+:room/[a-zA-Z0-9-]+$", + "type": "string" + }, + "Id": { + "description": "The system-generated ID of the room.", + "maxLength": 12, + "minLength": 12, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "LoggingConfigurationIdentifiers": { + "description": "Array of logging configuration identifiers attached to the room.", + "insertionOrder": false, + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^arn:aws:ivschat:[a-z0-9-]+:[0-9]+:logging-configuration/[a-zA-Z0-9-]+$", + "type": "string" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "MaximumMessageLength": { + "default": 500, + "description": "The maximum number of characters in a single message.", + "maximum": 500, + "minimum": 1, + "type": "integer" + }, + "MaximumMessageRatePerSecond": { + "default": 10, + "description": "The maximum number of messages per second that can be sent to the room.", + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "MessageReviewHandler": { + "$ref": "#/definitions/MessageReviewHandler" + }, + "Name": { + "description": "The name of the room. The value does not need to be unique.", + "maxLength": 128, + "minLength": 0, + "pattern": "^[a-zA-Z0-9-_]*$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ivschat.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ivschat:TagResource", + "ivschat:ListTagsForResource", + "ivschat:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IVSChat::Room" +} diff --git a/src/schema/aws-kafkaconnect-connector.json b/src/schema/aws-kafkaconnect-connector.json index 55f72822..24dafebf 100644 --- a/src/schema/aws-kafkaconnect-connector.json +++ b/src/schema/aws-kafkaconnect-connector.json @@ -1,580 +1,580 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ConnectorName" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConnectorConfiguration", - "/properties/ConnectorDescription", - "/properties/ConnectorName", - "/properties/KafkaCluster", - "/properties/KafkaClusterClientAuthentication", - "/properties/KafkaClusterEncryptionInTransit", - "/properties/KafkaConnectVersion", - "/properties/LogDelivery", - "/properties/Plugins", - "/properties/ServiceExecutionRoleArn", - "/properties/WorkerConfiguration" - ], - "definitions": { - "ApacheKafkaCluster": { - "additionalProperties": false, - "description": "Details of how to connect to an Apache Kafka cluster.", - "properties": { - "BootstrapServers": { - "description": "The bootstrap servers string of the Apache Kafka cluster.", - "type": "string" - }, - "Vpc": { - "$ref": "#/definitions/Vpc" - } - }, - "required": [ - "BootstrapServers", - "Vpc" - ], - "type": "object" - }, - "AutoScaling": { - "additionalProperties": false, - "description": "Details about auto scaling of a connector.", - "properties": { - "MaxWorkerCount": { - "description": "The maximum number of workers for a connector.", - "type": "integer" - }, - "McuCount": { - "description": "Specifies how many MSK Connect Units (MCU) as the minimum scaling unit.", - "enum": [ - 1, - 2, - 4, - 8 - ], - "type": "integer" - }, - "MinWorkerCount": { - "description": "The minimum number of workers for a connector.", - "type": "integer" - }, - "ScaleInPolicy": { - "$ref": "#/definitions/ScaleInPolicy" - }, - "ScaleOutPolicy": { - "$ref": "#/definitions/ScaleOutPolicy" - } - }, - "required": [ - "MaxWorkerCount", - "MinWorkerCount", - "ScaleInPolicy", - "ScaleOutPolicy", - "McuCount" - ], - "type": "object" - }, - "Capacity": { - "additionalProperties": false, - "description": "Information about the capacity allocated to the connector.", - "oneOf": [ - { - "required": [ - "AutoScaling" - ] - }, - { - "required": [ - "ProvisionedCapacity" - ] - } - ], - "properties": { - "AutoScaling": { - "$ref": "#/definitions/AutoScaling" - }, - "ProvisionedCapacity": { - "$ref": "#/definitions/ProvisionedCapacity" - } - }, - "type": "object" - }, - "CloudWatchLogsLogDelivery": { - "additionalProperties": false, - "description": "Details about delivering logs to Amazon CloudWatch Logs.", - "properties": { - "Enabled": { - "description": "Specifies whether the logs get sent to the specified CloudWatch Logs destination.", - "type": "boolean" - }, - "LogGroup": { - "description": "The CloudWatch log group that is the destination for log delivery.", - "type": "string" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "CustomPlugin": { - "additionalProperties": false, - "description": "Details about a custom plugin.", - "properties": { - "CustomPluginArn": { - "description": "The Amazon Resource Name (ARN) of the custom plugin to use.", - "pattern": "arn:(aws|aws-us-gov|aws-cn):kafkaconnect:.*", - "type": "string" - }, - "Revision": { - "description": "The revision of the custom plugin to use.", - "format": "int64", - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "CustomPluginArn", - "Revision" - ], - "type": "object" - }, - "FirehoseLogDelivery": { - "additionalProperties": false, - "description": "Details about delivering logs to Amazon Kinesis Data Firehose.", - "properties": { - "DeliveryStream": { - "description": "The Kinesis Data Firehose delivery stream that is the destination for log delivery.", - "type": "string" - }, - "Enabled": { - "description": "Specifies whether the logs get sent to the specified Kinesis Data Firehose delivery stream.", - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "KafkaCluster": { - "additionalProperties": false, - "description": "Details of how to connect to the Kafka cluster.", - "properties": { - "ApacheKafkaCluster": { - "$ref": "#/definitions/ApacheKafkaCluster" - } - }, - "required": [ - "ApacheKafkaCluster" - ], - "type": "object" - }, - "KafkaClusterClientAuthentication": { - "additionalProperties": false, - "description": "Details of the client authentication used by the Kafka cluster.", - "properties": { - "AuthenticationType": { - "$ref": "#/definitions/KafkaClusterClientAuthenticationType" - } - }, - "required": [ - "AuthenticationType" - ], - "type": "object" - }, - "KafkaClusterClientAuthenticationType": { - "description": "The type of client authentication used to connect to the Kafka cluster. Value NONE means that no client authentication is used.", - "enum": [ - "NONE", - "IAM" - ], - "type": "string" - }, - "KafkaClusterEncryptionInTransit": { - "additionalProperties": false, - "description": "Details of encryption in transit to the Kafka cluster.", - "properties": { - "EncryptionType": { - "$ref": "#/definitions/KafkaClusterEncryptionInTransitType" - } - }, - "required": [ - "EncryptionType" - ], - "type": "object" - }, - "KafkaClusterEncryptionInTransitType": { - "description": "The type of encryption in transit to the Kafka cluster.", - "enum": [ - "PLAINTEXT", - "TLS" - ], - "type": "string" - }, - "LogDelivery": { - "additionalProperties": false, - "description": "Details of what logs are delivered and where they are delivered.", - "properties": { - "WorkerLogDelivery": { - "$ref": "#/definitions/WorkerLogDelivery" - } - }, - "required": [ - "WorkerLogDelivery" - ], - "type": "object" - }, - "Plugin": { - "additionalProperties": false, - "description": "Details about a Kafka Connect plugin which will be used with the connector.", - "properties": { - "CustomPlugin": { - "$ref": "#/definitions/CustomPlugin" - } - }, - "required": [ - "CustomPlugin" - ], - "type": "object" - }, - "ProvisionedCapacity": { - "additionalProperties": false, - "description": "Details about a fixed capacity allocated to a connector.", - "properties": { - "McuCount": { - "description": "Specifies how many MSK Connect Units (MCU) are allocated to the connector.", - "enum": [ - 1, - 2, - 4, - 8 - ], - "type": "integer" - }, - "WorkerCount": { - "description": "Number of workers for a connector.", - "type": "integer" - } - }, - "required": [ - "WorkerCount" - ], - "type": "object" - }, - "S3LogDelivery": { - "additionalProperties": false, - "description": "Details about delivering logs to Amazon S3.", - "properties": { - "Bucket": { - "description": "The name of the S3 bucket that is the destination for log delivery.", - "type": "string" - }, - "Enabled": { - "description": "Specifies whether the logs get sent to the specified Amazon S3 destination.", - "type": "boolean" - }, - "Prefix": { - "description": "The S3 prefix that is the destination for log delivery.", - "type": "string" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "ScaleInPolicy": { - "additionalProperties": false, - "description": "Information about the scale in policy of the connector.", - "properties": { - "CpuUtilizationPercentage": { - "description": "Specifies the CPU utilization percentage threshold at which connector scale in should trigger.", - "maximum": 100, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "CpuUtilizationPercentage" - ], - "type": "object" - }, - "ScaleOutPolicy": { - "additionalProperties": false, - "description": "Information about the scale out policy of the connector.", - "properties": { - "CpuUtilizationPercentage": { - "description": "Specifies the CPU utilization percentage threshold at which connector scale out should trigger.", - "maximum": 100, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "CpuUtilizationPercentage" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Vpc": { - "additionalProperties": false, - "description": "Information about a VPC used with the connector.", - "properties": { - "SecurityGroups": { - "description": "The AWS security groups to associate with the elastic network interfaces in order to specify what the connector has access to.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Subnets": { - "description": "The list of subnets to connect to in the virtual private cloud (VPC). AWS creates elastic network interfaces inside these subnets.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "SecurityGroups", - "Subnets" - ], - "type": "object" - }, - "WorkerConfiguration": { - "additionalProperties": false, - "description": "Specifies the worker configuration to use with the connector.", - "properties": { - "Revision": { - "description": "The revision of the worker configuration to use.", - "format": "int64", - "minimum": 1, - "type": "integer" - }, - "WorkerConfigurationArn": { - "description": "The Amazon Resource Name (ARN) of the worker configuration to use.", - "pattern": "arn:(aws|aws-us-gov|aws-cn):kafkaconnect:.*", - "type": "string" - } - }, - "required": [ - "Revision", - "WorkerConfigurationArn" - ], - "type": "object" - }, - "WorkerLogDelivery": { - "additionalProperties": false, - "description": "Specifies where worker logs are delivered.", - "properties": { - "CloudWatchLogs": { - "$ref": "#/definitions/CloudWatchLogsLogDelivery" - }, - "Firehose": { - "$ref": "#/definitions/FirehoseLogDelivery" - }, - "S3": { - "$ref": "#/definitions/S3LogDelivery" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::KafkaConnect::Connector", - "handlers": { - "create": { - "permissions": [ - "kafkaconnect:CreateConnector", - "kafkaconnect:DescribeConnector", - "kafkaconnect:TagResource", - "kafkaconnect:ListTagsForResource", - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "ec2:CreateNetworkInterface", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:ListLogDeliveries", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy", - "firehose:TagDeliveryStream" - ] - }, - "delete": { - "permissions": [ - "kafkaconnect:DeleteConnector", - "kafkaconnect:DescribeConnector", - "logs:DeleteLogDelivery", - "logs:GetLogDelivery", - "logs:ListLogDeliveries" - ] - }, - "list": { - "permissions": [ - "kafkaconnect:ListConnectors" - ] - }, - "read": { - "permissions": [ - "kafkaconnect:DescribeConnector", - "kafkaconnect:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "kafkaconnect:UpdateConnector", - "kafkaconnect:DescribeConnector", - "kafkaconnect:TagResource", - "kafkaconnect:ListTagsForResource", - "kafkaconnect:UntagResource", - "iam:CreateServiceLinkedRole", - "logs:UpdateLogDelivery", - "logs:GetLogDelivery", - "logs:ListLogDeliveries", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy", - "firehose:TagDeliveryStream" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConnectorArn" - ], - "properties": { - "Capacity": { - "$ref": "#/definitions/Capacity" - }, - "ConnectorArn": { - "description": "Amazon Resource Name for the created Connector.", - "pattern": "arn:(aws|aws-us-gov|aws-cn):kafkaconnect:.*", - "type": "string" - }, - "ConnectorConfiguration": { - "additionalProperties": false, - "description": "The configuration for the connector.", - "patternProperties": { - ".*": { - "type": "string" - } - }, - "type": "object" - }, - "ConnectorDescription": { - "description": "A summary description of the connector.", - "maxLength": 1024, - "type": "string" - }, - "ConnectorName": { - "description": "The name of the connector.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "KafkaCluster": { - "$ref": "#/definitions/KafkaCluster" - }, - "KafkaClusterClientAuthentication": { - "$ref": "#/definitions/KafkaClusterClientAuthentication" - }, - "KafkaClusterEncryptionInTransit": { - "$ref": "#/definitions/KafkaClusterEncryptionInTransit" - }, - "KafkaConnectVersion": { - "description": "The version of Kafka Connect. It has to be compatible with both the Kafka cluster's version and the plugins.", - "type": "string" - }, - "LogDelivery": { - "$ref": "#/definitions/LogDelivery" - }, - "Plugins": { - "description": "List of plugins to use with the connector.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Plugin" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "ServiceExecutionRoleArn": { - "description": "The Amazon Resource Name (ARN) of the IAM role used by the connector to access Amazon S3 objects and other external resources.", - "pattern": "arn:(aws|aws-us-gov|aws-cn):iam:.*", - "type": "string" - }, - "Tags": { - "description": "A collection of tags associated with a resource", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "WorkerConfiguration": { - "$ref": "#/definitions/WorkerConfiguration" - } - }, - "readOnlyProperties": [ - "/properties/ConnectorArn" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "Capacity", - "ConnectorConfiguration", - "ConnectorName", - "KafkaConnectVersion", - "KafkaCluster", - "KafkaClusterClientAuthentication", - "KafkaClusterEncryptionInTransit", - "Plugins", - "ServiceExecutionRoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kafkaconnect.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "kafkaconnect:ListTagsForResource", - "kafkaconnect:UntagResource", - "kafkaconnect:TagResource", - "firehose:TagDeliveryStream" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::KafkaConnect::Connector" -} +{ + "additionalIdentifiers": [ + [ + "/properties/ConnectorName" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConnectorDescription", + "/properties/ConnectorName", + "/properties/KafkaCluster", + "/properties/KafkaClusterClientAuthentication", + "/properties/KafkaClusterEncryptionInTransit", + "/properties/KafkaConnectVersion", + "/properties/LogDelivery", + "/properties/Plugins", + "/properties/ServiceExecutionRoleArn", + "/properties/WorkerConfiguration" + ], + "definitions": { + "ApacheKafkaCluster": { + "additionalProperties": false, + "description": "Details of how to connect to an Apache Kafka cluster.", + "properties": { + "BootstrapServers": { + "description": "The bootstrap servers string of the Apache Kafka cluster.", + "type": "string" + }, + "Vpc": { + "$ref": "#/definitions/Vpc" + } + }, + "required": [ + "BootstrapServers", + "Vpc" + ], + "type": "object" + }, + "AutoScaling": { + "additionalProperties": false, + "description": "Details about auto scaling of a connector.", + "properties": { + "MaxWorkerCount": { + "description": "The maximum number of workers for a connector.", + "type": "integer" + }, + "McuCount": { + "description": "Specifies how many MSK Connect Units (MCU) as the minimum scaling unit.", + "enum": [ + 1, + 2, + 4, + 8 + ], + "type": "integer" + }, + "MinWorkerCount": { + "description": "The minimum number of workers for a connector.", + "type": "integer" + }, + "ScaleInPolicy": { + "$ref": "#/definitions/ScaleInPolicy" + }, + "ScaleOutPolicy": { + "$ref": "#/definitions/ScaleOutPolicy" + } + }, + "required": [ + "MaxWorkerCount", + "MinWorkerCount", + "ScaleInPolicy", + "ScaleOutPolicy", + "McuCount" + ], + "type": "object" + }, + "Capacity": { + "additionalProperties": false, + "description": "Information about the capacity allocated to the connector.", + "oneOf": [ + { + "required": [ + "AutoScaling" + ] + }, + { + "required": [ + "ProvisionedCapacity" + ] + } + ], + "properties": { + "AutoScaling": { + "$ref": "#/definitions/AutoScaling" + }, + "ProvisionedCapacity": { + "$ref": "#/definitions/ProvisionedCapacity" + } + }, + "type": "object" + }, + "CloudWatchLogsLogDelivery": { + "additionalProperties": false, + "description": "Details about delivering logs to Amazon CloudWatch Logs.", + "properties": { + "Enabled": { + "description": "Specifies whether the logs get sent to the specified CloudWatch Logs destination.", + "type": "boolean" + }, + "LogGroup": { + "description": "The CloudWatch log group that is the destination for log delivery.", + "type": "string" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "CustomPlugin": { + "additionalProperties": false, + "description": "Details about a custom plugin.", + "properties": { + "CustomPluginArn": { + "description": "The Amazon Resource Name (ARN) of the custom plugin to use.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):kafkaconnect:.*", + "type": "string" + }, + "Revision": { + "description": "The revision of the custom plugin to use.", + "format": "int64", + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "CustomPluginArn", + "Revision" + ], + "type": "object" + }, + "FirehoseLogDelivery": { + "additionalProperties": false, + "description": "Details about delivering logs to Amazon Kinesis Data Firehose.", + "properties": { + "DeliveryStream": { + "description": "The Kinesis Data Firehose delivery stream that is the destination for log delivery.", + "type": "string" + }, + "Enabled": { + "description": "Specifies whether the logs get sent to the specified Kinesis Data Firehose delivery stream.", + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "KafkaCluster": { + "additionalProperties": false, + "description": "Details of how to connect to the Kafka cluster.", + "properties": { + "ApacheKafkaCluster": { + "$ref": "#/definitions/ApacheKafkaCluster" + } + }, + "required": [ + "ApacheKafkaCluster" + ], + "type": "object" + }, + "KafkaClusterClientAuthentication": { + "additionalProperties": false, + "description": "Details of the client authentication used by the Kafka cluster.", + "properties": { + "AuthenticationType": { + "$ref": "#/definitions/KafkaClusterClientAuthenticationType" + } + }, + "required": [ + "AuthenticationType" + ], + "type": "object" + }, + "KafkaClusterClientAuthenticationType": { + "description": "The type of client authentication used to connect to the Kafka cluster. Value NONE means that no client authentication is used.", + "enum": [ + "NONE", + "IAM" + ], + "type": "string" + }, + "KafkaClusterEncryptionInTransit": { + "additionalProperties": false, + "description": "Details of encryption in transit to the Kafka cluster.", + "properties": { + "EncryptionType": { + "$ref": "#/definitions/KafkaClusterEncryptionInTransitType" + } + }, + "required": [ + "EncryptionType" + ], + "type": "object" + }, + "KafkaClusterEncryptionInTransitType": { + "description": "The type of encryption in transit to the Kafka cluster.", + "enum": [ + "PLAINTEXT", + "TLS" + ], + "type": "string" + }, + "LogDelivery": { + "additionalProperties": false, + "description": "Details of what logs are delivered and where they are delivered.", + "properties": { + "WorkerLogDelivery": { + "$ref": "#/definitions/WorkerLogDelivery" + } + }, + "required": [ + "WorkerLogDelivery" + ], + "type": "object" + }, + "Plugin": { + "additionalProperties": false, + "description": "Details about a Kafka Connect plugin which will be used with the connector.", + "properties": { + "CustomPlugin": { + "$ref": "#/definitions/CustomPlugin" + } + }, + "required": [ + "CustomPlugin" + ], + "type": "object" + }, + "ProvisionedCapacity": { + "additionalProperties": false, + "description": "Details about a fixed capacity allocated to a connector.", + "properties": { + "McuCount": { + "description": "Specifies how many MSK Connect Units (MCU) are allocated to the connector.", + "enum": [ + 1, + 2, + 4, + 8 + ], + "type": "integer" + }, + "WorkerCount": { + "description": "Number of workers for a connector.", + "type": "integer" + } + }, + "required": [ + "WorkerCount" + ], + "type": "object" + }, + "S3LogDelivery": { + "additionalProperties": false, + "description": "Details about delivering logs to Amazon S3.", + "properties": { + "Bucket": { + "description": "The name of the S3 bucket that is the destination for log delivery.", + "type": "string" + }, + "Enabled": { + "description": "Specifies whether the logs get sent to the specified Amazon S3 destination.", + "type": "boolean" + }, + "Prefix": { + "description": "The S3 prefix that is the destination for log delivery.", + "type": "string" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "ScaleInPolicy": { + "additionalProperties": false, + "description": "Information about the scale in policy of the connector.", + "properties": { + "CpuUtilizationPercentage": { + "description": "Specifies the CPU utilization percentage threshold at which connector scale in should trigger.", + "maximum": 100, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "CpuUtilizationPercentage" + ], + "type": "object" + }, + "ScaleOutPolicy": { + "additionalProperties": false, + "description": "Information about the scale out policy of the connector.", + "properties": { + "CpuUtilizationPercentage": { + "description": "Specifies the CPU utilization percentage threshold at which connector scale out should trigger.", + "maximum": 100, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "CpuUtilizationPercentage" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "Vpc": { + "additionalProperties": false, + "description": "Information about a VPC used with the connector.", + "properties": { + "SecurityGroups": { + "description": "The AWS security groups to associate with the elastic network interfaces in order to specify what the connector has access to.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "description": "The list of subnets to connect to in the virtual private cloud (VPC). AWS creates elastic network interfaces inside these subnets.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "SecurityGroups", + "Subnets" + ], + "type": "object" + }, + "WorkerConfiguration": { + "additionalProperties": false, + "description": "Specifies the worker configuration to use with the connector.", + "properties": { + "Revision": { + "description": "The revision of the worker configuration to use.", + "format": "int64", + "minimum": 1, + "type": "integer" + }, + "WorkerConfigurationArn": { + "description": "The Amazon Resource Name (ARN) of the worker configuration to use.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):kafkaconnect:.*", + "type": "string" + } + }, + "required": [ + "Revision", + "WorkerConfigurationArn" + ], + "type": "object" + }, + "WorkerLogDelivery": { + "additionalProperties": false, + "description": "Specifies where worker logs are delivered.", + "properties": { + "CloudWatchLogs": { + "$ref": "#/definitions/CloudWatchLogsLogDelivery" + }, + "Firehose": { + "$ref": "#/definitions/FirehoseLogDelivery" + }, + "S3": { + "$ref": "#/definitions/S3LogDelivery" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::KafkaConnect::Connector", + "handlers": { + "create": { + "permissions": [ + "kafkaconnect:CreateConnector", + "kafkaconnect:DescribeConnector", + "kafkaconnect:TagResource", + "kafkaconnect:ListTagsForResource", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "ec2:CreateNetworkInterface", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "firehose:TagDeliveryStream" + ] + }, + "delete": { + "permissions": [ + "kafkaconnect:DeleteConnector", + "kafkaconnect:DescribeConnector", + "logs:DeleteLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries" + ] + }, + "list": { + "permissions": [ + "kafkaconnect:ListConnectors" + ] + }, + "read": { + "permissions": [ + "kafkaconnect:DescribeConnector", + "kafkaconnect:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "kafkaconnect:UpdateConnector", + "kafkaconnect:DescribeConnector", + "kafkaconnect:DescribeConnectorOperation", + "kafkaconnect:TagResource", + "kafkaconnect:ListTagsForResource", + "kafkaconnect:UntagResource", + "iam:CreateServiceLinkedRole", + "logs:UpdateLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "firehose:TagDeliveryStream" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConnectorArn" + ], + "properties": { + "Capacity": { + "$ref": "#/definitions/Capacity" + }, + "ConnectorArn": { + "description": "Amazon Resource Name for the created Connector.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):kafkaconnect:.*", + "type": "string" + }, + "ConnectorConfiguration": { + "additionalProperties": false, + "description": "The configuration for the connector.", + "patternProperties": { + ".*": { + "type": "string" + } + }, + "type": "object" + }, + "ConnectorDescription": { + "description": "A summary description of the connector.", + "maxLength": 1024, + "type": "string" + }, + "ConnectorName": { + "description": "The name of the connector.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "KafkaCluster": { + "$ref": "#/definitions/KafkaCluster" + }, + "KafkaClusterClientAuthentication": { + "$ref": "#/definitions/KafkaClusterClientAuthentication" + }, + "KafkaClusterEncryptionInTransit": { + "$ref": "#/definitions/KafkaClusterEncryptionInTransit" + }, + "KafkaConnectVersion": { + "description": "The version of Kafka Connect. It has to be compatible with both the Kafka cluster's version and the plugins.", + "type": "string" + }, + "LogDelivery": { + "$ref": "#/definitions/LogDelivery" + }, + "Plugins": { + "description": "List of plugins to use with the connector.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Plugin" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ServiceExecutionRoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM role used by the connector to access Amazon S3 objects and other external resources.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):iam:.*", + "type": "string" + }, + "Tags": { + "description": "A collection of tags associated with a resource", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "WorkerConfiguration": { + "$ref": "#/definitions/WorkerConfiguration" + } + }, + "readOnlyProperties": [ + "/properties/ConnectorArn" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "Capacity", + "ConnectorConfiguration", + "ConnectorName", + "KafkaConnectVersion", + "KafkaCluster", + "KafkaClusterClientAuthentication", + "KafkaClusterEncryptionInTransit", + "Plugins", + "ServiceExecutionRoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kafkaconnect.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "kafkaconnect:ListTagsForResource", + "kafkaconnect:UntagResource", + "kafkaconnect:TagResource", + "firehose:TagDeliveryStream" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::KafkaConnect::Connector" +} diff --git a/src/schema/aws-kafkaconnect-customplugin.json b/src/schema/aws-kafkaconnect-customplugin.json index a81f2a69..08feaf9d 100644 --- a/src/schema/aws-kafkaconnect-customplugin.json +++ b/src/schema/aws-kafkaconnect-customplugin.json @@ -1,204 +1,204 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Name" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Description", - "/properties/ContentType", - "/properties/Location" - ], - "definitions": { - "CustomPluginFileDescription": { - "additionalProperties": false, - "description": "Details about the custom plugin file.", - "properties": { - "FileMd5": { - "description": "The hex-encoded MD5 checksum of the custom plugin file. You can use it to validate the file.", - "type": "string" - }, - "FileSize": { - "description": "The size in bytes of the custom plugin file. You can use it to validate the file.", - "format": "int64", - "type": "integer" - } - }, - "type": "object" - }, - "CustomPluginLocation": { - "additionalProperties": false, - "description": "Information about the location of a custom plugin.", - "properties": { - "S3Location": { - "$ref": "#/definitions/S3Location" - } - }, - "required": [ - "S3Location" - ], - "type": "object" - }, - "S3Location": { - "additionalProperties": false, - "description": "The S3 bucket Amazon Resource Name (ARN), file key, and object version of the plugin file stored in Amazon S3.", - "properties": { - "BucketArn": { - "description": "The Amazon Resource Name (ARN) of an S3 bucket.", - "type": "string" - }, - "FileKey": { - "description": "The file key for an object in an S3 bucket.", - "type": "string" - }, - "ObjectVersion": { - "description": "The version of an object in an S3 bucket.", - "type": "string" - } - }, - "required": [ - "BucketArn", - "FileKey" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "An example resource schema demonstrating some basic constructs and validation rules.", - "handlers": { - "create": { - "permissions": [ - "kafkaconnect:DescribeCustomPlugin", - "kafkaconnect:ListTagsForResource", - "kafkaconnect:CreateCustomPlugin", - "kafkaconnect:TagResource", - "s3:GetObject", - "s3:GetObjectVersion", - "s3:GetObjectAttributes", - "s3:GetObjectVersionAttributes" - ] - }, - "delete": { - "permissions": [ - "kafkaconnect:DeleteCustomPlugin", - "kafkaconnect:DescribeCustomPlugin" - ] - }, - "list": { - "permissions": [ - "kafkaconnect:ListCustomPlugins" - ] - }, - "read": { - "permissions": [ - "kafkaconnect:DescribeCustomPlugin", - "kafkaconnect:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "kafkaconnect:DescribeCustomPlugin", - "kafkaconnect:ListTagsForResource", - "kafkaconnect:TagResource", - "kafkaconnect:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/CustomPluginArn" - ], - "properties": { - "ContentType": { - "description": "The type of the plugin file.", - "enum": [ - "JAR", - "ZIP" - ], - "type": "string" - }, - "CustomPluginArn": { - "description": "The Amazon Resource Name (ARN) of the custom plugin to use.", - "pattern": "arn:(aws|aws-us-gov|aws-cn):kafkaconnect:.*", - "type": "string" - }, - "Description": { - "description": "A summary description of the custom plugin.", - "maxLength": 1024, - "type": "string" - }, - "FileDescription": { - "$ref": "#/definitions/CustomPluginFileDescription" - }, - "Location": { - "$ref": "#/definitions/CustomPluginLocation" - }, - "Name": { - "description": "The name of the custom plugin.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Revision": { - "description": "The revision of the custom plugin.", - "format": "int64", - "type": "integer" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/CustomPluginArn", - "/properties/Revision", - "/properties/FileDescription" - ], - "required": [ - "Name", - "ContentType", - "Location" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "kafkaconnect:ListTagsForResource", - "kafkaconnect:UntagResource", - "kafkaconnect:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::KafkaConnect::CustomPlugin" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Description", + "/properties/ContentType", + "/properties/Location" + ], + "definitions": { + "CustomPluginFileDescription": { + "additionalProperties": false, + "description": "Details about the custom plugin file.", + "properties": { + "FileMd5": { + "description": "The hex-encoded MD5 checksum of the custom plugin file. You can use it to validate the file.", + "type": "string" + }, + "FileSize": { + "description": "The size in bytes of the custom plugin file. You can use it to validate the file.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "CustomPluginLocation": { + "additionalProperties": false, + "description": "Information about the location of a custom plugin.", + "properties": { + "S3Location": { + "$ref": "#/definitions/S3Location" + } + }, + "required": [ + "S3Location" + ], + "type": "object" + }, + "S3Location": { + "additionalProperties": false, + "description": "The S3 bucket Amazon Resource Name (ARN), file key, and object version of the plugin file stored in Amazon S3.", + "properties": { + "BucketArn": { + "description": "The Amazon Resource Name (ARN) of an S3 bucket.", + "type": "string" + }, + "FileKey": { + "description": "The file key for an object in an S3 bucket.", + "type": "string" + }, + "ObjectVersion": { + "description": "The version of an object in an S3 bucket.", + "type": "string" + } + }, + "required": [ + "BucketArn", + "FileKey" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "handlers": { + "create": { + "permissions": [ + "kafkaconnect:DescribeCustomPlugin", + "kafkaconnect:ListTagsForResource", + "kafkaconnect:CreateCustomPlugin", + "kafkaconnect:TagResource", + "s3:GetObject", + "s3:GetObjectVersion", + "s3:GetObjectAttributes", + "s3:GetObjectVersionAttributes" + ] + }, + "delete": { + "permissions": [ + "kafkaconnect:DeleteCustomPlugin", + "kafkaconnect:DescribeCustomPlugin" + ] + }, + "list": { + "permissions": [ + "kafkaconnect:ListCustomPlugins" + ] + }, + "read": { + "permissions": [ + "kafkaconnect:DescribeCustomPlugin", + "kafkaconnect:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "kafkaconnect:DescribeCustomPlugin", + "kafkaconnect:ListTagsForResource", + "kafkaconnect:TagResource", + "kafkaconnect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/CustomPluginArn" + ], + "properties": { + "ContentType": { + "description": "The type of the plugin file.", + "enum": [ + "JAR", + "ZIP" + ], + "type": "string" + }, + "CustomPluginArn": { + "description": "The Amazon Resource Name (ARN) of the custom plugin to use.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):kafkaconnect:.*", + "type": "string" + }, + "Description": { + "description": "A summary description of the custom plugin.", + "maxLength": 1024, + "type": "string" + }, + "FileDescription": { + "$ref": "#/definitions/CustomPluginFileDescription" + }, + "Location": { + "$ref": "#/definitions/CustomPluginLocation" + }, + "Name": { + "description": "The name of the custom plugin.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Revision": { + "description": "The revision of the custom plugin.", + "format": "int64", + "type": "integer" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/CustomPluginArn", + "/properties/Revision", + "/properties/FileDescription" + ], + "required": [ + "Name", + "ContentType", + "Location" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "kafkaconnect:ListTagsForResource", + "kafkaconnect:UntagResource", + "kafkaconnect:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::KafkaConnect::CustomPlugin" +} diff --git a/src/schema/aws-kafkaconnect-workerconfiguration.json b/src/schema/aws-kafkaconnect-workerconfiguration.json index 891ed593..3ffa71ea 100644 --- a/src/schema/aws-kafkaconnect-workerconfiguration.json +++ b/src/schema/aws-kafkaconnect-workerconfiguration.json @@ -1,131 +1,131 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Name" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Description", - "/properties/PropertiesFileContent" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The configuration of the workers, which are the processes that run the connector logic.", - "handlers": { - "create": { - "permissions": [ - "kafkaconnect:DescribeWorkerConfiguration", - "kafkaconnect:CreateWorkerConfiguration", - "kafkaconnect:TagResource", - "kafkaconnect:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "kafkaconnect:DescribeWorkerConfiguration", - "kafkaconnect:DeleteWorkerConfiguration" - ] - }, - "list": { - "permissions": [ - "kafkaconnect:ListWorkerConfigurations" - ] - }, - "read": { - "permissions": [ - "kafkaconnect:DescribeWorkerConfiguration", - "kafkaconnect:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "kafkaconnect:DescribeWorkerConfiguration", - "kafkaconnect:ListTagsForResource", - "kafkaconnect:TagResource", - "kafkaconnect:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/WorkerConfigurationArn" - ], - "properties": { - "Description": { - "description": "A summary description of the worker configuration.", - "maxLength": 1024, - "type": "string" - }, - "Name": { - "description": "The name of the worker configuration.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "PropertiesFileContent": { - "description": "Base64 encoded contents of connect-distributed.properties file.", - "type": "string" - }, - "Revision": { - "description": "The description of a revision of the worker configuration.", - "format": "int64", - "type": "integer" - }, - "Tags": { - "description": "A collection of tags associated with a resource", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "WorkerConfigurationArn": { - "description": "The Amazon Resource Name (ARN) of the custom configuration.", - "pattern": "arn:(aws|aws-us-gov|aws-cn):kafkaconnect:.*", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/WorkerConfigurationArn", - "/properties/Revision" - ], - "required": [ - "Name", - "PropertiesFileContent" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kafkaconnect.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "kafkaconnect:ListTagsForResource", - "kafkaconnect:UntagResource", - "kafkaconnect:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::KafkaConnect::WorkerConfiguration" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Description", + "/properties/PropertiesFileContent" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The configuration of the workers, which are the processes that run the connector logic.", + "handlers": { + "create": { + "permissions": [ + "kafkaconnect:DescribeWorkerConfiguration", + "kafkaconnect:CreateWorkerConfiguration", + "kafkaconnect:TagResource", + "kafkaconnect:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "kafkaconnect:DescribeWorkerConfiguration", + "kafkaconnect:DeleteWorkerConfiguration" + ] + }, + "list": { + "permissions": [ + "kafkaconnect:ListWorkerConfigurations" + ] + }, + "read": { + "permissions": [ + "kafkaconnect:DescribeWorkerConfiguration", + "kafkaconnect:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "kafkaconnect:DescribeWorkerConfiguration", + "kafkaconnect:ListTagsForResource", + "kafkaconnect:TagResource", + "kafkaconnect:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/WorkerConfigurationArn" + ], + "properties": { + "Description": { + "description": "A summary description of the worker configuration.", + "maxLength": 1024, + "type": "string" + }, + "Name": { + "description": "The name of the worker configuration.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "PropertiesFileContent": { + "description": "Base64 encoded contents of connect-distributed.properties file.", + "type": "string" + }, + "Revision": { + "description": "The description of a revision of the worker configuration.", + "format": "int64", + "type": "integer" + }, + "Tags": { + "description": "A collection of tags associated with a resource", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "WorkerConfigurationArn": { + "description": "The Amazon Resource Name (ARN) of the custom configuration.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):kafkaconnect:.*", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/WorkerConfigurationArn", + "/properties/Revision" + ], + "required": [ + "Name", + "PropertiesFileContent" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kafkaconnect.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "kafkaconnect:ListTagsForResource", + "kafkaconnect:UntagResource", + "kafkaconnect:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::KafkaConnect::WorkerConfiguration" +} diff --git a/src/schema/aws-kendra-datasource.json b/src/schema/aws-kendra-datasource.json index 5c320989..a991e2aa 100644 --- a/src/schema/aws-kendra-datasource.json +++ b/src/schema/aws-kendra-datasource.json @@ -1,1783 +1,1795 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Type" - ], - "definitions": { - "AccessControlListConfiguration": { - "additionalProperties": false, - "properties": { - "KeyPath": { - "$ref": "#/definitions/S3ObjectKey" - } - }, - "type": "object" - }, - "AclConfiguration": { - "additionalProperties": false, - "properties": { - "AllowedGroupsColumnName": { - "$ref": "#/definitions/ColumnName" - } - }, - "required": [ - "AllowedGroupsColumnName" - ], - "type": "object" - }, - "Arn": { - "maxLength": 1000, - "type": "string" - }, - "ChangeDetectingColumns": { - "items": { - "$ref": "#/definitions/ColumnName" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "ColumnConfiguration": { - "additionalProperties": false, - "properties": { - "ChangeDetectingColumns": { - "$ref": "#/definitions/ChangeDetectingColumns" - }, - "DocumentDataColumnName": { - "$ref": "#/definitions/ColumnName" - }, - "DocumentIdColumnName": { - "$ref": "#/definitions/ColumnName" - }, - "DocumentTitleColumnName": { - "$ref": "#/definitions/ColumnName" - }, - "FieldMappings": { - "$ref": "#/definitions/DataSourceToIndexFieldMappingList" - } - }, - "required": [ - "DocumentIdColumnName", - "DocumentDataColumnName", - "ChangeDetectingColumns" - ], - "type": "object" - }, - "ColumnName": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "ConditionOperator": { - "enum": [ - "GreaterThan", - "GreaterThanOrEquals", - "LessThan", - "LessThanOrEquals", - "Equals", - "NotEquals", - "Contains", - "NotContains", - "Exists", - "NotExists", - "BeginsWith" - ], - "type": "string" - }, - "ConfluenceAttachmentConfiguration": { - "additionalProperties": false, - "properties": { - "AttachmentFieldMappings": { - "$ref": "#/definitions/ConfluenceAttachmentFieldMappingsList" - }, - "CrawlAttachments": { - "type": "boolean" - } - }, - "type": "object" - }, - "ConfluenceAttachmentFieldMappingsList": { - "items": { - "$ref": "#/definitions/ConfluenceAttachmentToIndexFieldMapping" - }, - "maxItems": 11, - "minItems": 1, - "type": "array" - }, - "ConfluenceAttachmentFieldName": { - "enum": [ - "AUTHOR", - "CONTENT_TYPE", - "CREATED_DATE", - "DISPLAY_URL", - "FILE_SIZE", - "ITEM_TYPE", - "PARENT_ID", - "SPACE_KEY", - "SPACE_NAME", - "URL", - "VERSION" - ], - "type": "string" - }, - "ConfluenceAttachmentToIndexFieldMapping": { - "additionalProperties": false, - "properties": { - "DataSourceFieldName": { - "$ref": "#/definitions/ConfluenceAttachmentFieldName" - }, - "DateFieldFormat": { - "$ref": "#/definitions/DateFieldFormat" - }, - "IndexFieldName": { - "$ref": "#/definitions/IndexFieldName" - } - }, - "required": [ - "DataSourceFieldName", - "IndexFieldName" - ], - "type": "object" - }, - "ConfluenceBlogConfiguration": { - "additionalProperties": false, - "properties": { - "BlogFieldMappings": { - "$ref": "#/definitions/ConfluenceBlogFieldMappingsList" - } - }, - "type": "object" - }, - "ConfluenceBlogFieldMappingsList": { - "items": { - "$ref": "#/definitions/ConfluenceBlogToIndexFieldMapping" - }, - "maxItems": 9, - "minItems": 1, - "type": "array" - }, - "ConfluenceBlogFieldName": { - "enum": [ - "AUTHOR", - "DISPLAY_URL", - "ITEM_TYPE", - "LABELS", - "PUBLISH_DATE", - "SPACE_KEY", - "SPACE_NAME", - "URL", - "VERSION" - ], - "type": "string" - }, - "ConfluenceBlogToIndexFieldMapping": { - "additionalProperties": false, - "properties": { - "DataSourceFieldName": { - "$ref": "#/definitions/ConfluenceBlogFieldName" - }, - "DateFieldFormat": { - "$ref": "#/definitions/DateFieldFormat" - }, - "IndexFieldName": { - "$ref": "#/definitions/IndexFieldName" - } - }, - "required": [ - "DataSourceFieldName", - "IndexFieldName" - ], - "type": "object" - }, - "ConfluenceConfiguration": { - "additionalProperties": false, - "properties": { - "AttachmentConfiguration": { - "$ref": "#/definitions/ConfluenceAttachmentConfiguration" - }, - "BlogConfiguration": { - "$ref": "#/definitions/ConfluenceBlogConfiguration" - }, - "ExclusionPatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "InclusionPatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "PageConfiguration": { - "$ref": "#/definitions/ConfluencePageConfiguration" - }, - "SecretArn": { - "$ref": "#/definitions/SecretArn" - }, - "ServerUrl": { - "$ref": "#/definitions/Url" - }, - "SpaceConfiguration": { - "$ref": "#/definitions/ConfluenceSpaceConfiguration" - }, - "Version": { - "$ref": "#/definitions/ConfluenceVersion" - }, - "VpcConfiguration": { - "$ref": "#/definitions/DataSourceVpcConfiguration" - } - }, - "required": [ - "ServerUrl", - "SecretArn", - "Version" - ], - "type": "object" - }, - "ConfluencePageConfiguration": { - "additionalProperties": false, - "properties": { - "PageFieldMappings": { - "$ref": "#/definitions/ConfluencePageFieldMappingsList" - } - }, - "type": "object" - }, - "ConfluencePageFieldMappingsList": { - "items": { - "$ref": "#/definitions/ConfluencePageToIndexFieldMapping" - }, - "maxItems": 12, - "minItems": 1, - "type": "array" - }, - "ConfluencePageFieldName": { - "enum": [ - "AUTHOR", - "CONTENT_STATUS", - "CREATED_DATE", - "DISPLAY_URL", - "ITEM_TYPE", - "LABELS", - "MODIFIED_DATE", - "PARENT_ID", - "SPACE_KEY", - "SPACE_NAME", - "URL", - "VERSION" - ], - "type": "string" - }, - "ConfluencePageToIndexFieldMapping": { - "additionalProperties": false, - "properties": { - "DataSourceFieldName": { - "$ref": "#/definitions/ConfluencePageFieldName" - }, - "DateFieldFormat": { - "$ref": "#/definitions/DateFieldFormat" - }, - "IndexFieldName": { - "$ref": "#/definitions/IndexFieldName" - } - }, - "required": [ - "DataSourceFieldName", - "IndexFieldName" - ], - "type": "object" - }, - "ConfluenceSpaceConfiguration": { - "additionalProperties": false, - "properties": { - "CrawlArchivedSpaces": { - "type": "boolean" - }, - "CrawlPersonalSpaces": { - "type": "boolean" - }, - "ExcludeSpaces": { - "$ref": "#/definitions/ConfluenceSpaceList" - }, - "IncludeSpaces": { - "$ref": "#/definitions/ConfluenceSpaceList" - }, - "SpaceFieldMappings": { - "$ref": "#/definitions/ConfluenceSpaceFieldMappingsList" - } - }, - "type": "object" - }, - "ConfluenceSpaceFieldMappingsList": { - "items": { - "$ref": "#/definitions/ConfluenceSpaceToIndexFieldMapping" - }, - "maxItems": 4, - "minItems": 1, - "type": "array" - }, - "ConfluenceSpaceFieldName": { - "enum": [ - "DISPLAY_URL", - "ITEM_TYPE", - "SPACE_KEY", - "URL" - ], - "type": "string" - }, - "ConfluenceSpaceIdentifier": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "ConfluenceSpaceList": { - "items": { - "$ref": "#/definitions/ConfluenceSpaceIdentifier" - }, - "minItems": 1, - "type": "array" - }, - "ConfluenceSpaceToIndexFieldMapping": { - "additionalProperties": false, - "properties": { - "DataSourceFieldName": { - "$ref": "#/definitions/ConfluenceSpaceFieldName" - }, - "DateFieldFormat": { - "$ref": "#/definitions/DateFieldFormat" - }, - "IndexFieldName": { - "$ref": "#/definitions/IndexFieldName" - } - }, - "required": [ - "DataSourceFieldName", - "IndexFieldName" - ], - "type": "object" - }, - "ConfluenceVersion": { - "enum": [ - "CLOUD", - "SERVER" - ], - "type": "string" - }, - "ConnectionConfiguration": { - "additionalProperties": false, - "properties": { - "DatabaseHost": { - "$ref": "#/definitions/DatabaseHost" - }, - "DatabaseName": { - "$ref": "#/definitions/DatabaseName" - }, - "DatabasePort": { - "$ref": "#/definitions/DatabasePort" - }, - "SecretArn": { - "$ref": "#/definitions/SecretArn" - }, - "TableName": { - "$ref": "#/definitions/TableName" - } - }, - "required": [ - "DatabaseHost", - "DatabasePort", - "DatabaseName", - "TableName", - "SecretArn" - ], - "type": "object" - }, - "CustomDocumentEnrichmentConfiguration": { - "additionalProperties": false, - "properties": { - "InlineConfigurations": { - "$ref": "#/definitions/InlineConfigurations" - }, - "PostExtractionHookConfiguration": { - "$ref": "#/definitions/HookConfiguration" - }, - "PreExtractionHookConfiguration": { - "$ref": "#/definitions/HookConfiguration" - }, - "RoleArn": { - "$ref": "#/definitions/RoleArn" - } - }, - "type": "object" - }, - "DataSourceConfiguration": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "S3Configuration" - ] - }, - { - "required": [ - "SharePointConfiguration" - ] - }, - { - "required": [ - "SalesforceConfiguration" - ] - }, - { - "required": [ - "OneDriveConfiguration" - ] - }, - { - "required": [ - "ServiceNowConfiguration" - ] - }, - { - "required": [ - "DatabaseConfiguration" - ] - }, - { - "required": [ - "ConfluenceConfiguration" - ] - }, - { - "required": [ - "GoogleDriveConfiguration" - ] - }, - { - "required": [ - "WebCrawlerConfiguration" - ] - }, - { - "required": [ - "WorkDocsConfiguration" - ] - } - ], - "properties": { - "ConfluenceConfiguration": { - "$ref": "#/definitions/ConfluenceConfiguration" - }, - "DatabaseConfiguration": { - "$ref": "#/definitions/DatabaseConfiguration" - }, - "GoogleDriveConfiguration": { - "$ref": "#/definitions/GoogleDriveConfiguration" - }, - "OneDriveConfiguration": { - "$ref": "#/definitions/OneDriveConfiguration" - }, - "S3Configuration": { - "$ref": "#/definitions/S3DataSourceConfiguration" - }, - "SalesforceConfiguration": { - "$ref": "#/definitions/SalesforceConfiguration" - }, - "ServiceNowConfiguration": { - "$ref": "#/definitions/ServiceNowConfiguration" - }, - "SharePointConfiguration": { - "$ref": "#/definitions/SharePointConfiguration" - }, - "WebCrawlerConfiguration": { - "$ref": "#/definitions/WebCrawlerConfiguration" - }, - "WorkDocsConfiguration": { - "$ref": "#/definitions/WorkDocsConfiguration" - } - }, - "type": "object" - }, - "DataSourceFieldName": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "DataSourceInclusionsExclusionsStrings": { - "items": { - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "type": "array" - }, - "DataSourceToIndexFieldMapping": { - "additionalProperties": false, - "properties": { - "DataSourceFieldName": { - "$ref": "#/definitions/DataSourceFieldName" - }, - "DateFieldFormat": { - "$ref": "#/definitions/DateFieldFormat" - }, - "IndexFieldName": { - "$ref": "#/definitions/IndexFieldName" - } - }, - "required": [ - "DataSourceFieldName", - "IndexFieldName" - ], - "type": "object" - }, - "DataSourceToIndexFieldMappingList": { - "items": { - "$ref": "#/definitions/DataSourceToIndexFieldMapping" - }, - "maxItems": 100, - "type": "array" - }, - "DataSourceVpcConfiguration": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "items": { - "maxLength": 200, - "minLength": 1, - "pattern": "[\\-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 10, - "type": "array" - }, - "SubnetIds": { - "items": { - "maxLength": 200, - "minLength": 1, - "pattern": "[\\-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 6, - "type": "array" - } - }, - "required": [ - "SubnetIds", - "SecurityGroupIds" - ], - "type": "object" - }, - "DatabaseConfiguration": { - "additionalProperties": false, - "properties": { - "AclConfiguration": { - "$ref": "#/definitions/AclConfiguration" - }, - "ColumnConfiguration": { - "$ref": "#/definitions/ColumnConfiguration" - }, - "ConnectionConfiguration": { - "$ref": "#/definitions/ConnectionConfiguration" - }, - "DatabaseEngineType": { - "$ref": "#/definitions/DatabaseEngineType" - }, - "SqlConfiguration": { - "$ref": "#/definitions/SqlConfiguration" - }, - "VpcConfiguration": { - "$ref": "#/definitions/DataSourceVpcConfiguration" - } - }, - "required": [ - "ConnectionConfiguration", - "ColumnConfiguration", - "DatabaseEngineType" - ], - "type": "object" - }, - "DatabaseEngineType": { - "enum": [ - "RDS_AURORA_MYSQL", - "RDS_AURORA_POSTGRESQL", - "RDS_MYSQL", - "RDS_POSTGRESQL" - ], - "type": "string" - }, - "DatabaseHost": { - "maxLength": 253, - "minLength": 1, - "type": "string" - }, - "DatabaseName": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "DatabasePort": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "DateFieldFormat": { - "maxLength": 40, - "minLength": 4, - "type": "string" - }, - "Description": { - "description": "Description of data source", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "DisableLocalGroups": { - "type": "boolean" - }, - "DocumentAttributeCondition": { - "additionalProperties": false, - "properties": { - "ConditionDocumentAttributeKey": { - "$ref": "#/definitions/DocumentAttributeKey" - }, - "ConditionOnValue": { - "$ref": "#/definitions/DocumentAttributeValue" - }, - "Operator": { - "$ref": "#/definitions/ConditionOperator" - } - }, - "required": [ - "ConditionDocumentAttributeKey", - "Operator" - ], - "type": "object" - }, - "DocumentAttributeKey": { - "maxLength": 200, - "minLength": 1, - "pattern": "[a-zA-Z0-9_][a-zA-Z0-9_-]*", - "type": "string" - }, - "DocumentAttributeTarget": { - "additionalProperties": false, - "properties": { - "TargetDocumentAttributeKey": { - "$ref": "#/definitions/DocumentAttributeKey" - }, - "TargetDocumentAttributeValue": { - "$ref": "#/definitions/DocumentAttributeValue" - }, - "TargetDocumentAttributeValueDeletion": { - "type": "boolean" - } - }, - "required": [ - "TargetDocumentAttributeKey" - ], - "type": "object" - }, - "DocumentAttributeValue": { - "additionalProperties": false, - "properties": { - "DateValue": { - "$ref": "#/definitions/Timestamp" - }, - "LongValue": { - "$ref": "#/definitions/Long" - }, - "StringListValue": { - "items": { - "type": "string" - }, - "type": "array" - }, - "StringValue": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "DocumentsMetadataConfiguration": { - "additionalProperties": false, - "properties": { - "S3Prefix": { - "$ref": "#/definitions/S3ObjectKey" - } - }, - "type": "object" - }, - "ExcludeMimeTypesList": { - "items": { - "$ref": "#/definitions/MimeType" - }, - "maxItems": 30, - "minItems": 0, - "type": "array" - }, - "ExcludeSharedDrivesList": { - "items": { - "$ref": "#/definitions/SharedDriveId" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "ExcludeUserAccountsList": { - "items": { - "$ref": "#/definitions/UserAccount" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "GoogleDriveConfiguration": { - "additionalProperties": false, - "properties": { - "ExcludeMimeTypes": { - "$ref": "#/definitions/ExcludeMimeTypesList" - }, - "ExcludeSharedDrives": { - "$ref": "#/definitions/ExcludeSharedDrivesList" - }, - "ExcludeUserAccounts": { - "$ref": "#/definitions/ExcludeUserAccountsList" - }, - "ExclusionPatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "FieldMappings": { - "$ref": "#/definitions/DataSourceToIndexFieldMappingList" - }, - "InclusionPatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "SecretArn": { - "$ref": "#/definitions/SecretArn" - } - }, - "required": [ - "SecretArn" - ], - "type": "object" - }, - "HookConfiguration": { - "additionalProperties": false, - "properties": { - "InvocationCondition": { - "$ref": "#/definitions/DocumentAttributeCondition" - }, - "LambdaArn": { - "$ref": "#/definitions/LambdaArn" - }, - "S3Bucket": { - "$ref": "#/definitions/S3BucketName" - } - }, - "required": [ - "LambdaArn", - "S3Bucket" - ], - "type": "object" - }, - "Id": { - "description": "ID of data source", - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "IndexFieldName": { - "maxLength": 30, - "minLength": 1, - "type": "string" - }, - "IndexId": { - "description": "ID of Index", - "maxLength": 36, - "minLength": 36, - "type": "string" - }, - "InlineConfigurations": { - "description": "List of InlineCustomDocumentEnrichmentConfigurations", - "items": { - "$ref": "#/definitions/InlineCustomDocumentEnrichmentConfiguration" - }, - "maxItems": 100, - "type": "array" - }, - "InlineCustomDocumentEnrichmentConfiguration": { - "additionalProperties": false, - "properties": { - "Condition": { - "$ref": "#/definitions/DocumentAttributeCondition" - }, - "DocumentContentDeletion": { - "type": "boolean" - }, - "Target": { - "$ref": "#/definitions/DocumentAttributeTarget" - } - }, - "type": "object" - }, - "LambdaArn": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "LanguageCode": { - "description": "The code for a language.", - "maxLength": 10, - "minLength": 2, - "pattern": "[a-zA-Z-]*", - "type": "string" - }, - "Long": { - "format": "int64", - "type": "integer" - }, - "MimeType": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "Name of data source", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "OneDriveConfiguration": { - "additionalProperties": false, - "properties": { - "DisableLocalGroups": { - "$ref": "#/definitions/DisableLocalGroups" - }, - "ExclusionPatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "FieldMappings": { - "$ref": "#/definitions/DataSourceToIndexFieldMappingList" - }, - "InclusionPatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "OneDriveUsers": { - "$ref": "#/definitions/OneDriveUsers" - }, - "SecretArn": { - "$ref": "#/definitions/SecretArn" - }, - "TenantDomain": { - "$ref": "#/definitions/TenantDomain" - } - }, - "required": [ - "TenantDomain", - "SecretArn", - "OneDriveUsers" - ], - "type": "object" - }, - "OneDriveUser": { - "maxLength": 256, - "minLength": 1, - "pattern": "^(?!\\s).+@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$", - "type": "string" - }, - "OneDriveUserList": { - "items": { - "$ref": "#/definitions/OneDriveUser" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "OneDriveUsers": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "OneDriveUserList" - ] - }, - { - "required": [ - "OneDriveUserS3Path" - ] - } - ], - "properties": { - "OneDriveUserList": { - "$ref": "#/definitions/OneDriveUserList" - }, - "OneDriveUserS3Path": { - "$ref": "#/definitions/S3Path" - } - }, - "type": "object" - }, - "ProxyConfiguration": { - "additionalProperties": false, - "properties": { - "Credentials": { - "$ref": "#/definitions/SecretArn" - }, - "Host": { - "maxLength": 253, - "minLength": 1, - "pattern": "([^\\s]*)", - "type": "string" - }, - "Port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "Host", - "Port" - ], - "type": "object" - }, - "QueryIdentifiersEnclosingOption": { - "enum": [ - "DOUBLE_QUOTES", - "NONE" - ], - "type": "string" - }, - "RoleArn": { - "description": "Role ARN", - "maxLength": 1284, - "minLength": 1, - "pattern": "arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}", - "type": "string" - }, - "S3BucketName": { - "maxLength": 63, - "minLength": 3, - "pattern": "[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]", - "type": "string" - }, - "S3DataSourceConfiguration": { - "additionalProperties": false, - "description": "S3 data source configuration", - "properties": { - "AccessControlListConfiguration": { - "$ref": "#/definitions/AccessControlListConfiguration" - }, - "BucketName": { - "$ref": "#/definitions/S3BucketName" - }, - "DocumentsMetadataConfiguration": { - "$ref": "#/definitions/DocumentsMetadataConfiguration" - }, - "ExclusionPatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "InclusionPatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "InclusionPrefixes": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "S3ObjectKey": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "S3Path": { - "additionalProperties": false, - "properties": { - "Bucket": { - "$ref": "#/definitions/S3BucketName" - }, - "Key": { - "$ref": "#/definitions/S3ObjectKey" - } - }, - "required": [ - "Bucket", - "Key" - ], - "type": "object" - }, - "SalesforceChatterFeedConfiguration": { - "additionalProperties": false, - "properties": { - "DocumentDataFieldName": { - "$ref": "#/definitions/DataSourceFieldName" - }, - "DocumentTitleFieldName": { - "$ref": "#/definitions/DataSourceFieldName" - }, - "FieldMappings": { - "$ref": "#/definitions/DataSourceToIndexFieldMappingList" - }, - "IncludeFilterTypes": { - "$ref": "#/definitions/SalesforceChatterFeedIncludeFilterTypes" - } - }, - "required": [ - "DocumentDataFieldName" - ], - "type": "object" - }, - "SalesforceChatterFeedIncludeFilterType": { - "enum": [ - "ACTIVE_USER", - "STANDARD_USER" - ], - "type": "string" - }, - "SalesforceChatterFeedIncludeFilterTypes": { - "items": { - "$ref": "#/definitions/SalesforceChatterFeedIncludeFilterType" - }, - "maxItems": 2, - "minItems": 1, - "type": "array" - }, - "SalesforceConfiguration": { - "additionalProperties": false, - "properties": { - "ChatterFeedConfiguration": { - "$ref": "#/definitions/SalesforceChatterFeedConfiguration" - }, - "CrawlAttachments": { - "type": "boolean" - }, - "ExcludeAttachmentFilePatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "IncludeAttachmentFilePatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "KnowledgeArticleConfiguration": { - "$ref": "#/definitions/SalesforceKnowledgeArticleConfiguration" - }, - "SecretArn": { - "$ref": "#/definitions/SecretArn" - }, - "ServerUrl": { - "$ref": "#/definitions/Url" - }, - "StandardObjectAttachmentConfiguration": { - "$ref": "#/definitions/SalesforceStandardObjectAttachmentConfiguration" - }, - "StandardObjectConfigurations": { - "$ref": "#/definitions/SalesforceStandardObjectConfigurationList" - } - }, - "required": [ - "ServerUrl", - "SecretArn" - ], - "type": "object" - }, - "SalesforceCustomKnowledgeArticleTypeConfiguration": { - "additionalProperties": false, - "properties": { - "DocumentDataFieldName": { - "$ref": "#/definitions/DataSourceFieldName" - }, - "DocumentTitleFieldName": { - "$ref": "#/definitions/DataSourceFieldName" - }, - "FieldMappings": { - "$ref": "#/definitions/DataSourceToIndexFieldMappingList" - }, - "Name": { - "$ref": "#/definitions/SalesforceCustomKnowledgeArticleTypeName" - } - }, - "required": [ - "Name", - "DocumentDataFieldName" - ], - "type": "object" - }, - "SalesforceCustomKnowledgeArticleTypeConfigurationList": { - "items": { - "$ref": "#/definitions/SalesforceCustomKnowledgeArticleTypeConfiguration" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "SalesforceCustomKnowledgeArticleTypeName": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "SalesforceKnowledgeArticleConfiguration": { - "additionalProperties": false, - "properties": { - "CustomKnowledgeArticleTypeConfigurations": { - "$ref": "#/definitions/SalesforceCustomKnowledgeArticleTypeConfigurationList" - }, - "IncludedStates": { - "$ref": "#/definitions/SalesforceKnowledgeArticleStateList" - }, - "StandardKnowledgeArticleTypeConfiguration": { - "$ref": "#/definitions/SalesforceStandardKnowledgeArticleTypeConfiguration" - } - }, - "required": [ - "IncludedStates" - ], - "type": "object" - }, - "SalesforceKnowledgeArticleState": { - "enum": [ - "DRAFT", - "PUBLISHED", - "ARCHIVED" - ], - "type": "string" - }, - "SalesforceKnowledgeArticleStateList": { - "items": { - "$ref": "#/definitions/SalesforceKnowledgeArticleState" - }, - "maxItems": 3, - "minItems": 1, - "type": "array" - }, - "SalesforceStandardKnowledgeArticleTypeConfiguration": { - "additionalProperties": false, - "properties": { - "DocumentDataFieldName": { - "$ref": "#/definitions/DataSourceFieldName" - }, - "DocumentTitleFieldName": { - "$ref": "#/definitions/DataSourceFieldName" - }, - "FieldMappings": { - "$ref": "#/definitions/DataSourceToIndexFieldMappingList" - } - }, - "required": [ - "DocumentDataFieldName" - ], - "type": "object" - }, - "SalesforceStandardObjectAttachmentConfiguration": { - "additionalProperties": false, - "properties": { - "DocumentTitleFieldName": { - "$ref": "#/definitions/DataSourceFieldName" - }, - "FieldMappings": { - "$ref": "#/definitions/DataSourceToIndexFieldMappingList" - } - }, - "type": "object" - }, - "SalesforceStandardObjectConfiguration": { - "additionalProperties": false, - "properties": { - "DocumentDataFieldName": { - "$ref": "#/definitions/DataSourceFieldName" - }, - "DocumentTitleFieldName": { - "$ref": "#/definitions/DataSourceFieldName" - }, - "FieldMappings": { - "$ref": "#/definitions/DataSourceToIndexFieldMappingList" - }, - "Name": { - "$ref": "#/definitions/SalesforceStandardObjectName" - } - }, - "required": [ - "Name", - "DocumentDataFieldName" - ], - "type": "object" - }, - "SalesforceStandardObjectConfigurationList": { - "items": { - "$ref": "#/definitions/SalesforceStandardObjectConfiguration" - }, - "maxItems": 17, - "minItems": 1, - "type": "array" - }, - "SalesforceStandardObjectName": { - "enum": [ - "ACCOUNT", - "CAMPAIGN", - "CASE", - "CONTACT", - "CONTRACT", - "DOCUMENT", - "GROUP", - "IDEA", - "LEAD", - "OPPORTUNITY", - "PARTNER", - "PRICEBOOK", - "PRODUCT", - "PROFILE", - "SOLUTION", - "TASK", - "USER" - ], - "type": "string" - }, - "Schedule": { - "description": "Schedule", - "maxLength": 1000, - "type": "string" - }, - "SecretArn": { - "maxLength": 1284, - "minLength": 1, - "pattern": "arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}", - "type": "string" - }, - "ServiceNowAuthenticationType": { - "enum": [ - "HTTP_BASIC", - "OAUTH2" - ], - "type": "string" - }, - "ServiceNowBuildVersionType": { - "enum": [ - "LONDON", - "OTHERS" - ], - "type": "string" - }, - "ServiceNowConfiguration": { - "additionalProperties": false, - "properties": { - "AuthenticationType": { - "$ref": "#/definitions/ServiceNowAuthenticationType" - }, - "HostUrl": { - "$ref": "#/definitions/ServiceNowHostUrl" - }, - "KnowledgeArticleConfiguration": { - "$ref": "#/definitions/ServiceNowKnowledgeArticleConfiguration" - }, - "SecretArn": { - "$ref": "#/definitions/SecretArn" - }, - "ServiceCatalogConfiguration": { - "$ref": "#/definitions/ServiceNowServiceCatalogConfiguration" - }, - "ServiceNowBuildVersion": { - "$ref": "#/definitions/ServiceNowBuildVersionType" - } - }, - "required": [ - "HostUrl", - "SecretArn", - "ServiceNowBuildVersion" - ], - "type": "object" - }, - "ServiceNowHostUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^(?!(^(https?|ftp|file):\\/\\/))[a-z0-9-]+(\\.service-now\\.com)$", - "type": "string" - }, - "ServiceNowKnowledgeArticleConfiguration": { - "additionalProperties": false, - "properties": { - "CrawlAttachments": { - "type": "boolean" - }, - "DocumentDataFieldName": { - "$ref": "#/definitions/DataSourceFieldName" - }, - "DocumentTitleFieldName": { - "$ref": "#/definitions/DataSourceFieldName" - }, - "ExcludeAttachmentFilePatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "FieldMappings": { - "$ref": "#/definitions/DataSourceToIndexFieldMappingList" - }, - "FilterQuery": { - "$ref": "#/definitions/ServiceNowKnowledgeArticleFilterQuery" - }, - "IncludeAttachmentFilePatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - } - }, - "required": [ - "DocumentDataFieldName" - ], - "type": "object" - }, - "ServiceNowKnowledgeArticleFilterQuery": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "ServiceNowServiceCatalogConfiguration": { - "additionalProperties": false, - "properties": { - "CrawlAttachments": { - "type": "boolean" - }, - "DocumentDataFieldName": { - "$ref": "#/definitions/DataSourceFieldName" - }, - "DocumentTitleFieldName": { - "$ref": "#/definitions/DataSourceFieldName" - }, - "ExcludeAttachmentFilePatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "FieldMappings": { - "$ref": "#/definitions/DataSourceToIndexFieldMappingList" - }, - "IncludeAttachmentFilePatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - } - }, - "required": [ - "DocumentDataFieldName" - ], - "type": "object" - }, - "SharePointConfiguration": { - "additionalProperties": false, - "description": "SharePoint configuration", - "properties": { - "CrawlAttachments": { - "type": "boolean" - }, - "DisableLocalGroups": { - "$ref": "#/definitions/DisableLocalGroups" - }, - "DocumentTitleFieldName": { - "$ref": "#/definitions/DataSourceFieldName" - }, - "ExclusionPatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "FieldMappings": { - "$ref": "#/definitions/DataSourceToIndexFieldMappingList" - }, - "InclusionPatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "SecretArn": { - "$ref": "#/definitions/SecretArn" - }, - "SharePointVersion": { - "enum": [ - "SHAREPOINT_ONLINE", - "SHAREPOINT_2013", - "SHAREPOINT_2016" - ], - "type": "string" - }, - "SslCertificateS3Path": { - "$ref": "#/definitions/S3Path" - }, - "Urls": { - "items": { - "$ref": "#/definitions/Url" - }, - "maxItems": 100, - "type": "array" - }, - "UseChangeLog": { - "type": "boolean" - }, - "VpcConfiguration": { - "$ref": "#/definitions/DataSourceVpcConfiguration" - } - }, - "required": [ - "Urls", - "SecretArn", - "SharePointVersion" - ], - "type": "object" - }, - "SharedDriveId": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "SqlConfiguration": { - "additionalProperties": false, - "properties": { - "QueryIdentifiersEnclosingOption": { - "$ref": "#/definitions/QueryIdentifiersEnclosingOption" - } - }, - "type": "object" - }, - "TableName": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A label for tagging Kendra resources", - "properties": { - "Key": { - "description": "A string used to identify this tag", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "A string containing the value for the tag", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TagList": { - "description": "List of tags", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array" - }, - "TenantDomain": { - "maxLength": 256, - "minLength": 1, - "pattern": "^([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\\.)+[a-z]{2,}$", - "type": "string" - }, - "Timestamp": { - "type": "string" - }, - "Type": { - "description": "Data source type", - "enum": [ - "S3", - "SHAREPOINT", - "SALESFORCE", - "ONEDRIVE", - "SERVICENOW", - "DATABASE", - "CUSTOM", - "CONFLUENCE", - "GOOGLEDRIVE", - "WEBCRAWLER", - "WORKDOCS" - ], - "type": "string" - }, - "Url": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^(https?|ftp|file)://([^\\s]*)", - "type": "string" - }, - "UserAccount": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "WebCrawlerAuthenticationConfiguration": { - "additionalProperties": false, - "properties": { - "BasicAuthentication": { - "$ref": "#/definitions/WebCrawlerBasicAuthenticationList" - } - }, - "type": "object" - }, - "WebCrawlerBasicAuthentication": { - "additionalProperties": false, - "properties": { - "Credentials": { - "$ref": "#/definitions/SecretArn" - }, - "Host": { - "maxLength": 253, - "minLength": 1, - "pattern": "([^\\s]*)", - "type": "string" - }, - "Port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "Host", - "Port", - "Credentials" - ], - "type": "object" - }, - "WebCrawlerBasicAuthenticationList": { - "items": { - "$ref": "#/definitions/WebCrawlerBasicAuthentication" - }, - "maxItems": 10, - "type": "array" - }, - "WebCrawlerConfiguration": { - "additionalProperties": false, - "properties": { - "AuthenticationConfiguration": { - "$ref": "#/definitions/WebCrawlerAuthenticationConfiguration" - }, - "CrawlDepth": { - "maximum": 10, - "minimum": 1, - "type": "integer" - }, - "MaxContentSizePerPageInMegaBytes": { - "maximum": 50, - "minimum": 0, - "type": "number" - }, - "MaxLinksPerPage": { - "maximum": 1000, - "minimum": 1, - "type": "integer" - }, - "MaxUrlsPerMinuteCrawlRate": { - "maximum": 300, - "minimum": 1, - "type": "integer" - }, - "ProxyConfiguration": { - "$ref": "#/definitions/ProxyConfiguration" - }, - "UrlExclusionPatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "UrlInclusionPatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "Urls": { - "$ref": "#/definitions/WebCrawlerUrls" - } - }, - "required": [ - "Urls" - ], - "type": "object" - }, - "WebCrawlerSeedUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^(https?)://([^\\s]*)", - "type": "string" - }, - "WebCrawlerSeedUrlConfiguration": { - "additionalProperties": false, - "properties": { - "SeedUrls": { - "$ref": "#/definitions/WebCrawlerSeedUrlList" - }, - "WebCrawlerMode": { - "enum": [ - "HOST_ONLY", - "SUBDOMAINS", - "EVERYTHING" - ], - "type": "string" - } - }, - "required": [ - "SeedUrls" - ], - "type": "object" - }, - "WebCrawlerSeedUrlList": { - "items": { - "$ref": "#/definitions/WebCrawlerSeedUrl" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "WebCrawlerSiteMap": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^(https?):\\/\\/([^\\s]*)", - "type": "string" - }, - "WebCrawlerSiteMaps": { - "items": { - "$ref": "#/definitions/WebCrawlerSiteMap" - }, - "maxItems": 3, - "minItems": 0, - "type": "array" - }, - "WebCrawlerSiteMapsConfiguration": { - "additionalProperties": false, - "properties": { - "SiteMaps": { - "$ref": "#/definitions/WebCrawlerSiteMaps" - } - }, - "required": [ - "SiteMaps" - ], - "type": "object" - }, - "WebCrawlerUrls": { - "additionalProperties": false, - "properties": { - "SeedUrlConfiguration": { - "$ref": "#/definitions/WebCrawlerSeedUrlConfiguration" - }, - "SiteMapsConfiguration": { - "$ref": "#/definitions/WebCrawlerSiteMapsConfiguration" - } - }, - "type": "object" - }, - "WorkDocsConfiguration": { - "additionalProperties": false, - "properties": { - "CrawlComments": { - "type": "boolean" - }, - "ExclusionPatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "FieldMappings": { - "$ref": "#/definitions/DataSourceToIndexFieldMappingList" - }, - "InclusionPatterns": { - "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" - }, - "OrganizationId": { - "maxLength": 12, - "minLength": 12, - "pattern": "d-[0-9a-fA-F]{10}", - "type": "string" - }, - "UseChangeLog": { - "type": "boolean" - } - }, - "required": [ - "OrganizationId" - ], - "type": "object" - } - }, - "description": "Kendra DataSource", - "handlers": { - "create": { - "permissions": [ - "kendra:CreateDataSource", - "kendra:DescribeDataSource", - "kendra:ListTagsForResource", - "iam:PassRole", - "kendra:TagResource" - ] - }, - "delete": { - "permissions": [ - "kendra:DescribeDataSource", - "kendra:DeleteDataSource" - ], - "timeoutInMinutes": 720 - }, - "list": { - "permissions": [ - "kendra:ListDataSources" - ] - }, - "read": { - "permissions": [ - "kendra:DescribeDataSource", - "kendra:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "kendra:DescribeDataSource", - "kendra:UpdateDataSource", - "kendra:ListTagsForResource", - "kendra:TagResource", - "kendra:UntagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id", - "/properties/IndexId" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "CustomDocumentEnrichmentConfiguration": { - "$ref": "#/definitions/CustomDocumentEnrichmentConfiguration" - }, - "DataSourceConfiguration": { - "$ref": "#/definitions/DataSourceConfiguration" - }, - "Description": { - "$ref": "#/definitions/Description" - }, - "Id": { - "$ref": "#/definitions/Id" - }, - "IndexId": { - "$ref": "#/definitions/IndexId" - }, - "LanguageCode": { - "$ref": "#/definitions/LanguageCode" - }, - "Name": { - "$ref": "#/definitions/Name" - }, - "RoleArn": { - "$ref": "#/definitions/RoleArn" - }, - "Schedule": { - "$ref": "#/definitions/Schedule" - }, - "Tags": { - "$ref": "#/definitions/TagList", - "description": "Tags for labeling the data source" - }, - "Type": { - "$ref": "#/definitions/Type" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "Name", - "IndexId", - "Type" - ], - "sourceUrl": "https://docs.aws.amazon.com/kendra/latest/dg/hiw-data-source.html", - "typeName": "AWS::Kendra::DataSource" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type" + ], + "definitions": { + "AccessControlListConfiguration": { + "additionalProperties": false, + "properties": { + "KeyPath": { + "$ref": "#/definitions/S3ObjectKey" + } + }, + "type": "object" + }, + "AclConfiguration": { + "additionalProperties": false, + "properties": { + "AllowedGroupsColumnName": { + "$ref": "#/definitions/ColumnName" + } + }, + "required": [ + "AllowedGroupsColumnName" + ], + "type": "object" + }, + "Arn": { + "maxLength": 1000, + "type": "string" + }, + "ChangeDetectingColumns": { + "items": { + "$ref": "#/definitions/ColumnName" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "ColumnConfiguration": { + "additionalProperties": false, + "properties": { + "ChangeDetectingColumns": { + "$ref": "#/definitions/ChangeDetectingColumns" + }, + "DocumentDataColumnName": { + "$ref": "#/definitions/ColumnName" + }, + "DocumentIdColumnName": { + "$ref": "#/definitions/ColumnName" + }, + "DocumentTitleColumnName": { + "$ref": "#/definitions/ColumnName" + }, + "FieldMappings": { + "$ref": "#/definitions/DataSourceToIndexFieldMappingList" + } + }, + "required": [ + "DocumentIdColumnName", + "DocumentDataColumnName", + "ChangeDetectingColumns" + ], + "type": "object" + }, + "ColumnName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "ConditionOperator": { + "enum": [ + "GreaterThan", + "GreaterThanOrEquals", + "LessThan", + "LessThanOrEquals", + "Equals", + "NotEquals", + "Contains", + "NotContains", + "Exists", + "NotExists", + "BeginsWith" + ], + "type": "string" + }, + "ConfluenceAttachmentConfiguration": { + "additionalProperties": false, + "properties": { + "AttachmentFieldMappings": { + "$ref": "#/definitions/ConfluenceAttachmentFieldMappingsList" + }, + "CrawlAttachments": { + "type": "boolean" + } + }, + "type": "object" + }, + "ConfluenceAttachmentFieldMappingsList": { + "items": { + "$ref": "#/definitions/ConfluenceAttachmentToIndexFieldMapping" + }, + "maxItems": 11, + "minItems": 1, + "type": "array" + }, + "ConfluenceAttachmentFieldName": { + "enum": [ + "AUTHOR", + "CONTENT_TYPE", + "CREATED_DATE", + "DISPLAY_URL", + "FILE_SIZE", + "ITEM_TYPE", + "PARENT_ID", + "SPACE_KEY", + "SPACE_NAME", + "URL", + "VERSION" + ], + "type": "string" + }, + "ConfluenceAttachmentToIndexFieldMapping": { + "additionalProperties": false, + "properties": { + "DataSourceFieldName": { + "$ref": "#/definitions/ConfluenceAttachmentFieldName" + }, + "DateFieldFormat": { + "$ref": "#/definitions/DateFieldFormat" + }, + "IndexFieldName": { + "$ref": "#/definitions/IndexFieldName" + } + }, + "required": [ + "DataSourceFieldName", + "IndexFieldName" + ], + "type": "object" + }, + "ConfluenceBlogConfiguration": { + "additionalProperties": false, + "properties": { + "BlogFieldMappings": { + "$ref": "#/definitions/ConfluenceBlogFieldMappingsList" + } + }, + "type": "object" + }, + "ConfluenceBlogFieldMappingsList": { + "items": { + "$ref": "#/definitions/ConfluenceBlogToIndexFieldMapping" + }, + "maxItems": 9, + "minItems": 1, + "type": "array" + }, + "ConfluenceBlogFieldName": { + "enum": [ + "AUTHOR", + "DISPLAY_URL", + "ITEM_TYPE", + "LABELS", + "PUBLISH_DATE", + "SPACE_KEY", + "SPACE_NAME", + "URL", + "VERSION" + ], + "type": "string" + }, + "ConfluenceBlogToIndexFieldMapping": { + "additionalProperties": false, + "properties": { + "DataSourceFieldName": { + "$ref": "#/definitions/ConfluenceBlogFieldName" + }, + "DateFieldFormat": { + "$ref": "#/definitions/DateFieldFormat" + }, + "IndexFieldName": { + "$ref": "#/definitions/IndexFieldName" + } + }, + "required": [ + "DataSourceFieldName", + "IndexFieldName" + ], + "type": "object" + }, + "ConfluenceConfiguration": { + "additionalProperties": false, + "properties": { + "AttachmentConfiguration": { + "$ref": "#/definitions/ConfluenceAttachmentConfiguration" + }, + "BlogConfiguration": { + "$ref": "#/definitions/ConfluenceBlogConfiguration" + }, + "ExclusionPatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "InclusionPatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "PageConfiguration": { + "$ref": "#/definitions/ConfluencePageConfiguration" + }, + "SecretArn": { + "$ref": "#/definitions/SecretArn" + }, + "ServerUrl": { + "$ref": "#/definitions/Url" + }, + "SpaceConfiguration": { + "$ref": "#/definitions/ConfluenceSpaceConfiguration" + }, + "Version": { + "$ref": "#/definitions/ConfluenceVersion" + }, + "VpcConfiguration": { + "$ref": "#/definitions/DataSourceVpcConfiguration" + } + }, + "required": [ + "ServerUrl", + "SecretArn", + "Version" + ], + "type": "object" + }, + "ConfluencePageConfiguration": { + "additionalProperties": false, + "properties": { + "PageFieldMappings": { + "$ref": "#/definitions/ConfluencePageFieldMappingsList" + } + }, + "type": "object" + }, + "ConfluencePageFieldMappingsList": { + "items": { + "$ref": "#/definitions/ConfluencePageToIndexFieldMapping" + }, + "maxItems": 12, + "minItems": 1, + "type": "array" + }, + "ConfluencePageFieldName": { + "enum": [ + "AUTHOR", + "CONTENT_STATUS", + "CREATED_DATE", + "DISPLAY_URL", + "ITEM_TYPE", + "LABELS", + "MODIFIED_DATE", + "PARENT_ID", + "SPACE_KEY", + "SPACE_NAME", + "URL", + "VERSION" + ], + "type": "string" + }, + "ConfluencePageToIndexFieldMapping": { + "additionalProperties": false, + "properties": { + "DataSourceFieldName": { + "$ref": "#/definitions/ConfluencePageFieldName" + }, + "DateFieldFormat": { + "$ref": "#/definitions/DateFieldFormat" + }, + "IndexFieldName": { + "$ref": "#/definitions/IndexFieldName" + } + }, + "required": [ + "DataSourceFieldName", + "IndexFieldName" + ], + "type": "object" + }, + "ConfluenceSpaceConfiguration": { + "additionalProperties": false, + "properties": { + "CrawlArchivedSpaces": { + "type": "boolean" + }, + "CrawlPersonalSpaces": { + "type": "boolean" + }, + "ExcludeSpaces": { + "$ref": "#/definitions/ConfluenceSpaceList" + }, + "IncludeSpaces": { + "$ref": "#/definitions/ConfluenceSpaceList" + }, + "SpaceFieldMappings": { + "$ref": "#/definitions/ConfluenceSpaceFieldMappingsList" + } + }, + "type": "object" + }, + "ConfluenceSpaceFieldMappingsList": { + "items": { + "$ref": "#/definitions/ConfluenceSpaceToIndexFieldMapping" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "ConfluenceSpaceFieldName": { + "enum": [ + "DISPLAY_URL", + "ITEM_TYPE", + "SPACE_KEY", + "URL" + ], + "type": "string" + }, + "ConfluenceSpaceIdentifier": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "ConfluenceSpaceList": { + "items": { + "$ref": "#/definitions/ConfluenceSpaceIdentifier" + }, + "minItems": 1, + "type": "array" + }, + "ConfluenceSpaceToIndexFieldMapping": { + "additionalProperties": false, + "properties": { + "DataSourceFieldName": { + "$ref": "#/definitions/ConfluenceSpaceFieldName" + }, + "DateFieldFormat": { + "$ref": "#/definitions/DateFieldFormat" + }, + "IndexFieldName": { + "$ref": "#/definitions/IndexFieldName" + } + }, + "required": [ + "DataSourceFieldName", + "IndexFieldName" + ], + "type": "object" + }, + "ConfluenceVersion": { + "enum": [ + "CLOUD", + "SERVER" + ], + "type": "string" + }, + "ConnectionConfiguration": { + "additionalProperties": false, + "properties": { + "DatabaseHost": { + "$ref": "#/definitions/DatabaseHost" + }, + "DatabaseName": { + "$ref": "#/definitions/DatabaseName" + }, + "DatabasePort": { + "$ref": "#/definitions/DatabasePort" + }, + "SecretArn": { + "$ref": "#/definitions/SecretArn" + }, + "TableName": { + "$ref": "#/definitions/TableName" + } + }, + "required": [ + "DatabaseHost", + "DatabasePort", + "DatabaseName", + "TableName", + "SecretArn" + ], + "type": "object" + }, + "CustomDocumentEnrichmentConfiguration": { + "additionalProperties": false, + "properties": { + "InlineConfigurations": { + "$ref": "#/definitions/InlineConfigurations" + }, + "PostExtractionHookConfiguration": { + "$ref": "#/definitions/HookConfiguration" + }, + "PreExtractionHookConfiguration": { + "$ref": "#/definitions/HookConfiguration" + }, + "RoleArn": { + "$ref": "#/definitions/RoleArn" + } + }, + "type": "object" + }, + "DataSourceConfiguration": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "S3Configuration" + ] + }, + { + "required": [ + "SharePointConfiguration" + ] + }, + { + "required": [ + "SalesforceConfiguration" + ] + }, + { + "required": [ + "OneDriveConfiguration" + ] + }, + { + "required": [ + "ServiceNowConfiguration" + ] + }, + { + "required": [ + "DatabaseConfiguration" + ] + }, + { + "required": [ + "ConfluenceConfiguration" + ] + }, + { + "required": [ + "GoogleDriveConfiguration" + ] + }, + { + "required": [ + "WebCrawlerConfiguration" + ] + }, + { + "required": [ + "WorkDocsConfiguration" + ] + } + ], + "properties": { + "ConfluenceConfiguration": { + "$ref": "#/definitions/ConfluenceConfiguration" + }, + "DatabaseConfiguration": { + "$ref": "#/definitions/DatabaseConfiguration" + }, + "GoogleDriveConfiguration": { + "$ref": "#/definitions/GoogleDriveConfiguration" + }, + "OneDriveConfiguration": { + "$ref": "#/definitions/OneDriveConfiguration" + }, + "S3Configuration": { + "$ref": "#/definitions/S3DataSourceConfiguration" + }, + "SalesforceConfiguration": { + "$ref": "#/definitions/SalesforceConfiguration" + }, + "ServiceNowConfiguration": { + "$ref": "#/definitions/ServiceNowConfiguration" + }, + "SharePointConfiguration": { + "$ref": "#/definitions/SharePointConfiguration" + }, + "WebCrawlerConfiguration": { + "$ref": "#/definitions/WebCrawlerConfiguration" + }, + "WorkDocsConfiguration": { + "$ref": "#/definitions/WorkDocsConfiguration" + } + }, + "type": "object" + }, + "DataSourceFieldName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "DataSourceInclusionsExclusionsStrings": { + "items": { + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "type": "array" + }, + "DataSourceToIndexFieldMapping": { + "additionalProperties": false, + "properties": { + "DataSourceFieldName": { + "$ref": "#/definitions/DataSourceFieldName" + }, + "DateFieldFormat": { + "$ref": "#/definitions/DateFieldFormat" + }, + "IndexFieldName": { + "$ref": "#/definitions/IndexFieldName" + } + }, + "required": [ + "DataSourceFieldName", + "IndexFieldName" + ], + "type": "object" + }, + "DataSourceToIndexFieldMappingList": { + "items": { + "$ref": "#/definitions/DataSourceToIndexFieldMapping" + }, + "maxItems": 100, + "type": "array" + }, + "DataSourceVpcConfiguration": { + "additionalProperties": false, + "properties": { + "SecurityGroupIds": { + "items": { + "maxLength": 200, + "minLength": 1, + "pattern": "[\\-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 10, + "type": "array" + }, + "SubnetIds": { + "items": { + "maxLength": 200, + "minLength": 1, + "pattern": "[\\-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 6, + "type": "array" + } + }, + "required": [ + "SubnetIds", + "SecurityGroupIds" + ], + "type": "object" + }, + "DatabaseConfiguration": { + "additionalProperties": false, + "properties": { + "AclConfiguration": { + "$ref": "#/definitions/AclConfiguration" + }, + "ColumnConfiguration": { + "$ref": "#/definitions/ColumnConfiguration" + }, + "ConnectionConfiguration": { + "$ref": "#/definitions/ConnectionConfiguration" + }, + "DatabaseEngineType": { + "$ref": "#/definitions/DatabaseEngineType" + }, + "SqlConfiguration": { + "$ref": "#/definitions/SqlConfiguration" + }, + "VpcConfiguration": { + "$ref": "#/definitions/DataSourceVpcConfiguration" + } + }, + "required": [ + "ConnectionConfiguration", + "ColumnConfiguration", + "DatabaseEngineType" + ], + "type": "object" + }, + "DatabaseEngineType": { + "enum": [ + "RDS_AURORA_MYSQL", + "RDS_AURORA_POSTGRESQL", + "RDS_MYSQL", + "RDS_POSTGRESQL" + ], + "type": "string" + }, + "DatabaseHost": { + "maxLength": 253, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "DatabasePort": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "DateFieldFormat": { + "maxLength": 40, + "minLength": 4, + "type": "string" + }, + "Description": { + "description": "Description of data source", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "DisableLocalGroups": { + "type": "boolean" + }, + "DocumentAttributeCondition": { + "additionalProperties": false, + "properties": { + "ConditionDocumentAttributeKey": { + "$ref": "#/definitions/DocumentAttributeKey" + }, + "ConditionOnValue": { + "$ref": "#/definitions/DocumentAttributeValue" + }, + "Operator": { + "$ref": "#/definitions/ConditionOperator" + } + }, + "required": [ + "ConditionDocumentAttributeKey", + "Operator" + ], + "type": "object" + }, + "DocumentAttributeKey": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9_][a-zA-Z0-9_-]*", + "type": "string" + }, + "DocumentAttributeTarget": { + "additionalProperties": false, + "properties": { + "TargetDocumentAttributeKey": { + "$ref": "#/definitions/DocumentAttributeKey" + }, + "TargetDocumentAttributeValue": { + "$ref": "#/definitions/DocumentAttributeValue" + }, + "TargetDocumentAttributeValueDeletion": { + "type": "boolean" + } + }, + "required": [ + "TargetDocumentAttributeKey" + ], + "type": "object" + }, + "DocumentAttributeValue": { + "additionalProperties": false, + "properties": { + "DateValue": { + "$ref": "#/definitions/Timestamp" + }, + "LongValue": { + "$ref": "#/definitions/Long" + }, + "StringListValue": { + "items": { + "type": "string" + }, + "type": "array" + }, + "StringValue": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "DocumentsMetadataConfiguration": { + "additionalProperties": false, + "properties": { + "S3Prefix": { + "$ref": "#/definitions/S3ObjectKey" + } + }, + "type": "object" + }, + "ExcludeMimeTypesList": { + "items": { + "$ref": "#/definitions/MimeType" + }, + "maxItems": 30, + "minItems": 0, + "type": "array" + }, + "ExcludeSharedDrivesList": { + "items": { + "$ref": "#/definitions/SharedDriveId" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ExcludeUserAccountsList": { + "items": { + "$ref": "#/definitions/UserAccount" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "GoogleDriveConfiguration": { + "additionalProperties": false, + "properties": { + "ExcludeMimeTypes": { + "$ref": "#/definitions/ExcludeMimeTypesList" + }, + "ExcludeSharedDrives": { + "$ref": "#/definitions/ExcludeSharedDrivesList" + }, + "ExcludeUserAccounts": { + "$ref": "#/definitions/ExcludeUserAccountsList" + }, + "ExclusionPatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "FieldMappings": { + "$ref": "#/definitions/DataSourceToIndexFieldMappingList" + }, + "InclusionPatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "SecretArn": { + "$ref": "#/definitions/SecretArn" + } + }, + "required": [ + "SecretArn" + ], + "type": "object" + }, + "HookConfiguration": { + "additionalProperties": false, + "properties": { + "InvocationCondition": { + "$ref": "#/definitions/DocumentAttributeCondition" + }, + "LambdaArn": { + "$ref": "#/definitions/LambdaArn" + }, + "S3Bucket": { + "$ref": "#/definitions/S3BucketName" + } + }, + "required": [ + "LambdaArn", + "S3Bucket" + ], + "type": "object" + }, + "Id": { + "description": "ID of data source", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "IndexFieldName": { + "maxLength": 30, + "minLength": 1, + "type": "string" + }, + "IndexId": { + "description": "ID of Index", + "maxLength": 36, + "minLength": 36, + "type": "string" + }, + "InlineConfigurations": { + "description": "List of InlineCustomDocumentEnrichmentConfigurations", + "items": { + "$ref": "#/definitions/InlineCustomDocumentEnrichmentConfiguration" + }, + "maxItems": 100, + "type": "array" + }, + "InlineCustomDocumentEnrichmentConfiguration": { + "additionalProperties": false, + "properties": { + "Condition": { + "$ref": "#/definitions/DocumentAttributeCondition" + }, + "DocumentContentDeletion": { + "type": "boolean" + }, + "Target": { + "$ref": "#/definitions/DocumentAttributeTarget" + } + }, + "type": "object" + }, + "LambdaArn": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "LanguageCode": { + "description": "The code for a language.", + "maxLength": 10, + "minLength": 2, + "pattern": "[a-zA-Z-]*", + "type": "string" + }, + "Long": { + "format": "int64", + "type": "integer" + }, + "MimeType": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "Name of data source", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "OneDriveConfiguration": { + "additionalProperties": false, + "properties": { + "DisableLocalGroups": { + "$ref": "#/definitions/DisableLocalGroups" + }, + "ExclusionPatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "FieldMappings": { + "$ref": "#/definitions/DataSourceToIndexFieldMappingList" + }, + "InclusionPatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "OneDriveUsers": { + "$ref": "#/definitions/OneDriveUsers" + }, + "SecretArn": { + "$ref": "#/definitions/SecretArn" + }, + "TenantDomain": { + "$ref": "#/definitions/TenantDomain" + } + }, + "required": [ + "TenantDomain", + "SecretArn", + "OneDriveUsers" + ], + "type": "object" + }, + "OneDriveUser": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s).+@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$", + "type": "string" + }, + "OneDriveUserList": { + "items": { + "$ref": "#/definitions/OneDriveUser" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "OneDriveUsers": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "OneDriveUserList" + ] + }, + { + "required": [ + "OneDriveUserS3Path" + ] + } + ], + "properties": { + "OneDriveUserList": { + "$ref": "#/definitions/OneDriveUserList" + }, + "OneDriveUserS3Path": { + "$ref": "#/definitions/S3Path" + } + }, + "type": "object" + }, + "ProxyConfiguration": { + "additionalProperties": false, + "properties": { + "Credentials": { + "$ref": "#/definitions/SecretArn" + }, + "Host": { + "maxLength": 253, + "minLength": 1, + "pattern": "([^\\s]*)", + "type": "string" + }, + "Port": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "Host", + "Port" + ], + "type": "object" + }, + "QueryIdentifiersEnclosingOption": { + "enum": [ + "DOUBLE_QUOTES", + "NONE" + ], + "type": "string" + }, + "RoleArn": { + "description": "Role ARN", + "maxLength": 1284, + "minLength": 1, + "pattern": "arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}", + "type": "string" + }, + "S3BucketName": { + "maxLength": 63, + "minLength": 3, + "pattern": "[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]", + "type": "string" + }, + "S3DataSourceConfiguration": { + "additionalProperties": false, + "description": "S3 data source configuration", + "properties": { + "AccessControlListConfiguration": { + "$ref": "#/definitions/AccessControlListConfiguration" + }, + "BucketName": { + "$ref": "#/definitions/S3BucketName" + }, + "DocumentsMetadataConfiguration": { + "$ref": "#/definitions/DocumentsMetadataConfiguration" + }, + "ExclusionPatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "InclusionPatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "InclusionPrefixes": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + } + }, + "required": [ + "BucketName" + ], + "type": "object" + }, + "S3ObjectKey": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "S3Path": { + "additionalProperties": false, + "properties": { + "Bucket": { + "$ref": "#/definitions/S3BucketName" + }, + "Key": { + "$ref": "#/definitions/S3ObjectKey" + } + }, + "required": [ + "Bucket", + "Key" + ], + "type": "object" + }, + "SalesforceChatterFeedConfiguration": { + "additionalProperties": false, + "properties": { + "DocumentDataFieldName": { + "$ref": "#/definitions/DataSourceFieldName" + }, + "DocumentTitleFieldName": { + "$ref": "#/definitions/DataSourceFieldName" + }, + "FieldMappings": { + "$ref": "#/definitions/DataSourceToIndexFieldMappingList" + }, + "IncludeFilterTypes": { + "$ref": "#/definitions/SalesforceChatterFeedIncludeFilterTypes" + } + }, + "required": [ + "DocumentDataFieldName" + ], + "type": "object" + }, + "SalesforceChatterFeedIncludeFilterType": { + "enum": [ + "ACTIVE_USER", + "STANDARD_USER" + ], + "type": "string" + }, + "SalesforceChatterFeedIncludeFilterTypes": { + "items": { + "$ref": "#/definitions/SalesforceChatterFeedIncludeFilterType" + }, + "maxItems": 2, + "minItems": 1, + "type": "array" + }, + "SalesforceConfiguration": { + "additionalProperties": false, + "properties": { + "ChatterFeedConfiguration": { + "$ref": "#/definitions/SalesforceChatterFeedConfiguration" + }, + "CrawlAttachments": { + "type": "boolean" + }, + "ExcludeAttachmentFilePatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "IncludeAttachmentFilePatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "KnowledgeArticleConfiguration": { + "$ref": "#/definitions/SalesforceKnowledgeArticleConfiguration" + }, + "SecretArn": { + "$ref": "#/definitions/SecretArn" + }, + "ServerUrl": { + "$ref": "#/definitions/Url" + }, + "StandardObjectAttachmentConfiguration": { + "$ref": "#/definitions/SalesforceStandardObjectAttachmentConfiguration" + }, + "StandardObjectConfigurations": { + "$ref": "#/definitions/SalesforceStandardObjectConfigurationList" + } + }, + "required": [ + "ServerUrl", + "SecretArn" + ], + "type": "object" + }, + "SalesforceCustomKnowledgeArticleTypeConfiguration": { + "additionalProperties": false, + "properties": { + "DocumentDataFieldName": { + "$ref": "#/definitions/DataSourceFieldName" + }, + "DocumentTitleFieldName": { + "$ref": "#/definitions/DataSourceFieldName" + }, + "FieldMappings": { + "$ref": "#/definitions/DataSourceToIndexFieldMappingList" + }, + "Name": { + "$ref": "#/definitions/SalesforceCustomKnowledgeArticleTypeName" + } + }, + "required": [ + "Name", + "DocumentDataFieldName" + ], + "type": "object" + }, + "SalesforceCustomKnowledgeArticleTypeConfigurationList": { + "items": { + "$ref": "#/definitions/SalesforceCustomKnowledgeArticleTypeConfiguration" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "SalesforceCustomKnowledgeArticleTypeName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "SalesforceKnowledgeArticleConfiguration": { + "additionalProperties": false, + "properties": { + "CustomKnowledgeArticleTypeConfigurations": { + "$ref": "#/definitions/SalesforceCustomKnowledgeArticleTypeConfigurationList" + }, + "IncludedStates": { + "$ref": "#/definitions/SalesforceKnowledgeArticleStateList" + }, + "StandardKnowledgeArticleTypeConfiguration": { + "$ref": "#/definitions/SalesforceStandardKnowledgeArticleTypeConfiguration" + } + }, + "required": [ + "IncludedStates" + ], + "type": "object" + }, + "SalesforceKnowledgeArticleState": { + "enum": [ + "DRAFT", + "PUBLISHED", + "ARCHIVED" + ], + "type": "string" + }, + "SalesforceKnowledgeArticleStateList": { + "items": { + "$ref": "#/definitions/SalesforceKnowledgeArticleState" + }, + "maxItems": 3, + "minItems": 1, + "type": "array" + }, + "SalesforceStandardKnowledgeArticleTypeConfiguration": { + "additionalProperties": false, + "properties": { + "DocumentDataFieldName": { + "$ref": "#/definitions/DataSourceFieldName" + }, + "DocumentTitleFieldName": { + "$ref": "#/definitions/DataSourceFieldName" + }, + "FieldMappings": { + "$ref": "#/definitions/DataSourceToIndexFieldMappingList" + } + }, + "required": [ + "DocumentDataFieldName" + ], + "type": "object" + }, + "SalesforceStandardObjectAttachmentConfiguration": { + "additionalProperties": false, + "properties": { + "DocumentTitleFieldName": { + "$ref": "#/definitions/DataSourceFieldName" + }, + "FieldMappings": { + "$ref": "#/definitions/DataSourceToIndexFieldMappingList" + } + }, + "type": "object" + }, + "SalesforceStandardObjectConfiguration": { + "additionalProperties": false, + "properties": { + "DocumentDataFieldName": { + "$ref": "#/definitions/DataSourceFieldName" + }, + "DocumentTitleFieldName": { + "$ref": "#/definitions/DataSourceFieldName" + }, + "FieldMappings": { + "$ref": "#/definitions/DataSourceToIndexFieldMappingList" + }, + "Name": { + "$ref": "#/definitions/SalesforceStandardObjectName" + } + }, + "required": [ + "Name", + "DocumentDataFieldName" + ], + "type": "object" + }, + "SalesforceStandardObjectConfigurationList": { + "items": { + "$ref": "#/definitions/SalesforceStandardObjectConfiguration" + }, + "maxItems": 17, + "minItems": 1, + "type": "array" + }, + "SalesforceStandardObjectName": { + "enum": [ + "ACCOUNT", + "CAMPAIGN", + "CASE", + "CONTACT", + "CONTRACT", + "DOCUMENT", + "GROUP", + "IDEA", + "LEAD", + "OPPORTUNITY", + "PARTNER", + "PRICEBOOK", + "PRODUCT", + "PROFILE", + "SOLUTION", + "TASK", + "USER" + ], + "type": "string" + }, + "Schedule": { + "description": "Schedule", + "maxLength": 1000, + "type": "string" + }, + "SecretArn": { + "maxLength": 1284, + "minLength": 1, + "pattern": "arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}", + "type": "string" + }, + "ServiceNowAuthenticationType": { + "enum": [ + "HTTP_BASIC", + "OAUTH2" + ], + "type": "string" + }, + "ServiceNowBuildVersionType": { + "enum": [ + "LONDON", + "OTHERS" + ], + "type": "string" + }, + "ServiceNowConfiguration": { + "additionalProperties": false, + "properties": { + "AuthenticationType": { + "$ref": "#/definitions/ServiceNowAuthenticationType" + }, + "HostUrl": { + "$ref": "#/definitions/ServiceNowHostUrl" + }, + "KnowledgeArticleConfiguration": { + "$ref": "#/definitions/ServiceNowKnowledgeArticleConfiguration" + }, + "SecretArn": { + "$ref": "#/definitions/SecretArn" + }, + "ServiceCatalogConfiguration": { + "$ref": "#/definitions/ServiceNowServiceCatalogConfiguration" + }, + "ServiceNowBuildVersion": { + "$ref": "#/definitions/ServiceNowBuildVersionType" + } + }, + "required": [ + "HostUrl", + "SecretArn", + "ServiceNowBuildVersion" + ], + "type": "object" + }, + "ServiceNowHostUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^(?!(^(https?|ftp|file):\\/\\/))[a-z0-9-]+(\\.service-now\\.com)$", + "type": "string" + }, + "ServiceNowKnowledgeArticleConfiguration": { + "additionalProperties": false, + "properties": { + "CrawlAttachments": { + "type": "boolean" + }, + "DocumentDataFieldName": { + "$ref": "#/definitions/DataSourceFieldName" + }, + "DocumentTitleFieldName": { + "$ref": "#/definitions/DataSourceFieldName" + }, + "ExcludeAttachmentFilePatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "FieldMappings": { + "$ref": "#/definitions/DataSourceToIndexFieldMappingList" + }, + "FilterQuery": { + "$ref": "#/definitions/ServiceNowKnowledgeArticleFilterQuery" + }, + "IncludeAttachmentFilePatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + } + }, + "required": [ + "DocumentDataFieldName" + ], + "type": "object" + }, + "ServiceNowKnowledgeArticleFilterQuery": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ServiceNowServiceCatalogConfiguration": { + "additionalProperties": false, + "properties": { + "CrawlAttachments": { + "type": "boolean" + }, + "DocumentDataFieldName": { + "$ref": "#/definitions/DataSourceFieldName" + }, + "DocumentTitleFieldName": { + "$ref": "#/definitions/DataSourceFieldName" + }, + "ExcludeAttachmentFilePatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "FieldMappings": { + "$ref": "#/definitions/DataSourceToIndexFieldMappingList" + }, + "IncludeAttachmentFilePatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + } + }, + "required": [ + "DocumentDataFieldName" + ], + "type": "object" + }, + "SharePointConfiguration": { + "additionalProperties": false, + "description": "SharePoint configuration", + "properties": { + "CrawlAttachments": { + "type": "boolean" + }, + "DisableLocalGroups": { + "$ref": "#/definitions/DisableLocalGroups" + }, + "DocumentTitleFieldName": { + "$ref": "#/definitions/DataSourceFieldName" + }, + "ExclusionPatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "FieldMappings": { + "$ref": "#/definitions/DataSourceToIndexFieldMappingList" + }, + "InclusionPatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "SecretArn": { + "$ref": "#/definitions/SecretArn" + }, + "SharePointVersion": { + "enum": [ + "SHAREPOINT_ONLINE", + "SHAREPOINT_2013", + "SHAREPOINT_2016" + ], + "type": "string" + }, + "SslCertificateS3Path": { + "$ref": "#/definitions/S3Path" + }, + "Urls": { + "items": { + "$ref": "#/definitions/Url" + }, + "maxItems": 100, + "type": "array" + }, + "UseChangeLog": { + "type": "boolean" + }, + "VpcConfiguration": { + "$ref": "#/definitions/DataSourceVpcConfiguration" + } + }, + "required": [ + "Urls", + "SecretArn", + "SharePointVersion" + ], + "type": "object" + }, + "SharedDriveId": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "SqlConfiguration": { + "additionalProperties": false, + "properties": { + "QueryIdentifiersEnclosingOption": { + "$ref": "#/definitions/QueryIdentifiersEnclosingOption" + } + }, + "type": "object" + }, + "TableName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A label for tagging Kendra resources", + "properties": { + "Key": { + "description": "A string used to identify this tag", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A string containing the value for the tag", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagList": { + "description": "List of tags", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array" + }, + "TenantDomain": { + "maxLength": 256, + "minLength": 1, + "pattern": "^([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\\.)+[a-z]{2,}$", + "type": "string" + }, + "Timestamp": { + "type": "string" + }, + "Type": { + "description": "Data source type", + "enum": [ + "S3", + "SHAREPOINT", + "SALESFORCE", + "ONEDRIVE", + "SERVICENOW", + "DATABASE", + "CUSTOM", + "CONFLUENCE", + "GOOGLEDRIVE", + "WEBCRAWLER", + "WORKDOCS" + ], + "type": "string" + }, + "Url": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^(https?|ftp|file)://([^\\s]*)", + "type": "string" + }, + "UserAccount": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "WebCrawlerAuthenticationConfiguration": { + "additionalProperties": false, + "properties": { + "BasicAuthentication": { + "$ref": "#/definitions/WebCrawlerBasicAuthenticationList" + } + }, + "type": "object" + }, + "WebCrawlerBasicAuthentication": { + "additionalProperties": false, + "properties": { + "Credentials": { + "$ref": "#/definitions/SecretArn" + }, + "Host": { + "maxLength": 253, + "minLength": 1, + "pattern": "([^\\s]*)", + "type": "string" + }, + "Port": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "Host", + "Port", + "Credentials" + ], + "type": "object" + }, + "WebCrawlerBasicAuthenticationList": { + "items": { + "$ref": "#/definitions/WebCrawlerBasicAuthentication" + }, + "maxItems": 10, + "type": "array" + }, + "WebCrawlerConfiguration": { + "additionalProperties": false, + "properties": { + "AuthenticationConfiguration": { + "$ref": "#/definitions/WebCrawlerAuthenticationConfiguration" + }, + "CrawlDepth": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "MaxContentSizePerPageInMegaBytes": { + "maximum": 50, + "minimum": 0, + "type": "number" + }, + "MaxLinksPerPage": { + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "MaxUrlsPerMinuteCrawlRate": { + "maximum": 300, + "minimum": 1, + "type": "integer" + }, + "ProxyConfiguration": { + "$ref": "#/definitions/ProxyConfiguration" + }, + "UrlExclusionPatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "UrlInclusionPatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "Urls": { + "$ref": "#/definitions/WebCrawlerUrls" + } + }, + "required": [ + "Urls" + ], + "type": "object" + }, + "WebCrawlerSeedUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^(https?)://([^\\s]*)", + "type": "string" + }, + "WebCrawlerSeedUrlConfiguration": { + "additionalProperties": false, + "properties": { + "SeedUrls": { + "$ref": "#/definitions/WebCrawlerSeedUrlList" + }, + "WebCrawlerMode": { + "enum": [ + "HOST_ONLY", + "SUBDOMAINS", + "EVERYTHING" + ], + "type": "string" + } + }, + "required": [ + "SeedUrls" + ], + "type": "object" + }, + "WebCrawlerSeedUrlList": { + "items": { + "$ref": "#/definitions/WebCrawlerSeedUrl" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "WebCrawlerSiteMap": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^(https?):\\/\\/([^\\s]*)", + "type": "string" + }, + "WebCrawlerSiteMaps": { + "items": { + "$ref": "#/definitions/WebCrawlerSiteMap" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "WebCrawlerSiteMapsConfiguration": { + "additionalProperties": false, + "properties": { + "SiteMaps": { + "$ref": "#/definitions/WebCrawlerSiteMaps" + } + }, + "required": [ + "SiteMaps" + ], + "type": "object" + }, + "WebCrawlerUrls": { + "additionalProperties": false, + "properties": { + "SeedUrlConfiguration": { + "$ref": "#/definitions/WebCrawlerSeedUrlConfiguration" + }, + "SiteMapsConfiguration": { + "$ref": "#/definitions/WebCrawlerSiteMapsConfiguration" + } + }, + "type": "object" + }, + "WorkDocsConfiguration": { + "additionalProperties": false, + "properties": { + "CrawlComments": { + "type": "boolean" + }, + "ExclusionPatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "FieldMappings": { + "$ref": "#/definitions/DataSourceToIndexFieldMappingList" + }, + "InclusionPatterns": { + "$ref": "#/definitions/DataSourceInclusionsExclusionsStrings" + }, + "OrganizationId": { + "maxLength": 12, + "minLength": 12, + "pattern": "d-[0-9a-fA-F]{10}", + "type": "string" + }, + "UseChangeLog": { + "type": "boolean" + } + }, + "required": [ + "OrganizationId" + ], + "type": "object" + } + }, + "description": "Kendra DataSource", + "handlers": { + "create": { + "permissions": [ + "kendra:CreateDataSource", + "kendra:DescribeDataSource", + "kendra:ListTagsForResource", + "iam:PassRole", + "kendra:TagResource" + ] + }, + "delete": { + "permissions": [ + "kendra:DescribeDataSource", + "kendra:DeleteDataSource" + ], + "timeoutInMinutes": 720 + }, + "list": { + "permissions": [ + "kendra:ListDataSources" + ] + }, + "read": { + "permissions": [ + "kendra:DescribeDataSource", + "kendra:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "kendra:DescribeDataSource", + "kendra:UpdateDataSource", + "kendra:ListTagsForResource", + "kendra:TagResource", + "kendra:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id", + "/properties/IndexId" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CustomDocumentEnrichmentConfiguration": { + "$ref": "#/definitions/CustomDocumentEnrichmentConfiguration" + }, + "DataSourceConfiguration": { + "$ref": "#/definitions/DataSourceConfiguration" + }, + "Description": { + "$ref": "#/definitions/Description" + }, + "Id": { + "$ref": "#/definitions/Id" + }, + "IndexId": { + "$ref": "#/definitions/IndexId" + }, + "LanguageCode": { + "$ref": "#/definitions/LanguageCode" + }, + "Name": { + "$ref": "#/definitions/Name" + }, + "RoleArn": { + "$ref": "#/definitions/RoleArn" + }, + "Schedule": { + "$ref": "#/definitions/Schedule" + }, + "Tags": { + "$ref": "#/definitions/TagList", + "description": "Tags for labeling the data source" + }, + "Type": { + "$ref": "#/definitions/Type" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Name", + "IndexId", + "Type" + ], + "sourceUrl": "https://docs.aws.amazon.com/kendra/latest/dg/hiw-data-source.html", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "kendra:UntagResource", + "kendra:TagResource", + "kendra:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Kendra::DataSource" +} diff --git a/src/schema/aws-kendra-faq.json b/src/schema/aws-kendra-faq.json index 17bfc2ff..4ceccd60 100644 --- a/src/schema/aws-kendra-faq.json +++ b/src/schema/aws-kendra-faq.json @@ -1,208 +1,220 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/IndexId", - "/properties/Name", - "/properties/S3Path", - "/properties/RoleArn", - "/properties/Description", - "/properties/FileFormat" - ], - "definitions": { - "Description": { - "description": "Description of the FAQ", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "FaqName": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "FileFormat": { - "description": "Format of the input file", - "enum": [ - "CSV", - "CSV_WITH_HEADER", - "JSON" - ], - "type": "string" - }, - "Id": { - "description": "Unique ID of the FAQ", - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "IndexId": { - "description": "Unique ID of Index", - "maxLength": 36, - "minLength": 36, - "type": "string" - }, - "LanguageCode": { - "description": "The code for a language.", - "maxLength": 10, - "minLength": 2, - "pattern": "[a-zA-Z-]*", - "type": "string" - }, - "RoleArn": { - "maxLength": 1284, - "minLength": 1, - "pattern": "arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}", - "type": "string" - }, - "S3BucketName": { - "maxLength": 63, - "minLength": 3, - "pattern": "[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]", - "type": "string" - }, - "S3ObjectKey": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "S3Path": { - "additionalProperties": false, - "properties": { - "Bucket": { - "$ref": "#/definitions/S3BucketName" - }, - "Key": { - "$ref": "#/definitions/S3ObjectKey" - } - }, - "required": [ - "Bucket", - "Key" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A label for tagging Kendra resources", - "properties": { - "Key": { - "description": "A string used to identify this tag", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "A string containing the value for the tag", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TagList": { - "description": "List of tags", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array" - } - }, - "description": "A Kendra FAQ resource", - "handlers": { - "create": { - "permissions": [ - "kendra:CreateFaq", - "kendra:DescribeFaq", - "iam:PassRole", - "kendra:ListTagsForResource", - "kendra:TagResource" - ] - }, - "delete": { - "permissions": [ - "kendra:DeleteFaq", - "kendra:DescribeFaq" - ] - }, - "list": { - "permissions": [ - "kendra:ListFaqs" - ] - }, - "read": { - "permissions": [ - "kendra:DescribeFaq", - "kendra:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "kendra:ListTagsForResource", - "kendra:UntagResource", - "kendra:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id", - "/properties/IndexId" - ], - "properties": { - "Arn": { - "maxLength": 1000, - "type": "string" - }, - "Description": { - "$ref": "#/definitions/Description", - "description": "FAQ description" - }, - "FileFormat": { - "$ref": "#/definitions/FileFormat", - "description": "FAQ file format" - }, - "Id": { - "$ref": "#/definitions/Id" - }, - "IndexId": { - "$ref": "#/definitions/IndexId", - "description": "Index ID" - }, - "LanguageCode": { - "$ref": "#/definitions/LanguageCode" - }, - "Name": { - "$ref": "#/definitions/FaqName", - "description": "FAQ name" - }, - "RoleArn": { - "$ref": "#/definitions/RoleArn", - "description": "FAQ role ARN" - }, - "S3Path": { - "$ref": "#/definitions/S3Path", - "description": "FAQ S3 path" - }, - "Tags": { - "$ref": "#/definitions/TagList", - "description": "Tags for labeling the FAQ" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "IndexId", - "Name", - "S3Path", - "RoleArn" - ], - "sourceUrl": "https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html", - "typeName": "AWS::Kendra::Faq" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IndexId", + "/properties/Name", + "/properties/S3Path", + "/properties/RoleArn", + "/properties/Description", + "/properties/FileFormat" + ], + "definitions": { + "Description": { + "description": "Description of the FAQ", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "FaqName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "FileFormat": { + "description": "Format of the input file", + "enum": [ + "CSV", + "CSV_WITH_HEADER", + "JSON" + ], + "type": "string" + }, + "Id": { + "description": "Unique ID of the FAQ", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "IndexId": { + "description": "Unique ID of Index", + "maxLength": 36, + "minLength": 36, + "type": "string" + }, + "LanguageCode": { + "description": "The code for a language.", + "maxLength": 10, + "minLength": 2, + "pattern": "[a-zA-Z-]*", + "type": "string" + }, + "RoleArn": { + "maxLength": 1284, + "minLength": 1, + "pattern": "arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}", + "type": "string" + }, + "S3BucketName": { + "maxLength": 63, + "minLength": 3, + "pattern": "[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]", + "type": "string" + }, + "S3ObjectKey": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "S3Path": { + "additionalProperties": false, + "properties": { + "Bucket": { + "$ref": "#/definitions/S3BucketName" + }, + "Key": { + "$ref": "#/definitions/S3ObjectKey" + } + }, + "required": [ + "Bucket", + "Key" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A label for tagging Kendra resources", + "properties": { + "Key": { + "description": "A string used to identify this tag", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A string containing the value for the tag", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagList": { + "description": "List of tags", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array" + } + }, + "description": "A Kendra FAQ resource", + "handlers": { + "create": { + "permissions": [ + "kendra:CreateFaq", + "kendra:DescribeFaq", + "iam:PassRole", + "kendra:ListTagsForResource", + "kendra:TagResource" + ] + }, + "delete": { + "permissions": [ + "kendra:DeleteFaq", + "kendra:DescribeFaq" + ] + }, + "list": { + "permissions": [ + "kendra:ListFaqs" + ] + }, + "read": { + "permissions": [ + "kendra:DescribeFaq", + "kendra:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "kendra:ListTagsForResource", + "kendra:UntagResource", + "kendra:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id", + "/properties/IndexId" + ], + "properties": { + "Arn": { + "maxLength": 1000, + "type": "string" + }, + "Description": { + "$ref": "#/definitions/Description", + "description": "FAQ description" + }, + "FileFormat": { + "$ref": "#/definitions/FileFormat", + "description": "FAQ file format" + }, + "Id": { + "$ref": "#/definitions/Id" + }, + "IndexId": { + "$ref": "#/definitions/IndexId", + "description": "Index ID" + }, + "LanguageCode": { + "$ref": "#/definitions/LanguageCode" + }, + "Name": { + "$ref": "#/definitions/FaqName", + "description": "FAQ name" + }, + "RoleArn": { + "$ref": "#/definitions/RoleArn", + "description": "FAQ role ARN" + }, + "S3Path": { + "$ref": "#/definitions/S3Path", + "description": "FAQ S3 path" + }, + "Tags": { + "$ref": "#/definitions/TagList", + "description": "Tags for labeling the FAQ" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "IndexId", + "Name", + "S3Path", + "RoleArn" + ], + "sourceUrl": "https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "kendra:UntagResource", + "kendra:TagResource", + "kendra:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Kendra::Faq" +} diff --git a/src/schema/aws-kendra-index.json b/src/schema/aws-kendra-index.json index 30cfb67c..0d9d7b7f 100644 --- a/src/schema/aws-kendra-index.json +++ b/src/schema/aws-kendra-index.json @@ -1,444 +1,457 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Edition", - "/properties/ServerSideEncryptionConfiguration" - ], - "definitions": { - "Arn": { - "maxLength": 1000, - "type": "string" - }, - "CapacityUnitsConfiguration": { - "additionalProperties": false, - "properties": { - "QueryCapacityUnits": { - "$ref": "#/definitions/QueryCapacityUnits" - }, - "StorageCapacityUnits": { - "$ref": "#/definitions/StorageCapacityUnits" - } - }, - "required": [ - "StorageCapacityUnits", - "QueryCapacityUnits" - ], - "type": "object" - }, - "ClaimRegex": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "Description": { - "maxLength": 1000, - "type": "string" - }, - "DocumentAttributeValueType": { - "enum": [ - "STRING_VALUE", - "STRING_LIST_VALUE", - "LONG_VALUE", - "DATE_VALUE" - ], - "type": "string" - }, - "DocumentMetadataConfiguration": { - "additionalProperties": false, - "properties": { - "Name": { - "$ref": "#/definitions/DocumentMetadataConfigurationName" - }, - "Relevance": { - "$ref": "#/definitions/Relevance" - }, - "Search": { - "$ref": "#/definitions/Search" - }, - "Type": { - "$ref": "#/definitions/DocumentAttributeValueType" - } - }, - "required": [ - "Name", - "Type" - ], - "type": "object" - }, - "DocumentMetadataConfigurationList": { - "items": { - "$ref": "#/definitions/DocumentMetadataConfiguration" - }, - "maxItems": 500, - "type": "array" - }, - "DocumentMetadataConfigurationName": { - "maxLength": 30, - "minLength": 1, - "type": "string" - }, - "Duration": { - "maxLength": 10, - "minLength": 1, - "pattern": "[0-9]+[s]", - "type": "string" - }, - "Edition": { - "description": "Edition of index", - "enum": [ - "DEVELOPER_EDITION", - "ENTERPRISE_EDITION" - ], - "type": "string" - }, - "Freshness": { - "type": "boolean" - }, - "GroupAttributeField": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "Id": { - "description": "Unique ID of index", - "maxLength": 36, - "minLength": 36, - "type": "string" - }, - "Importance": { - "maximum": 10, - "minimum": 1, - "type": "integer" - }, - "Issuer": { - "maxLength": 65, - "minLength": 1, - "type": "string" - }, - "JsonTokenTypeConfiguration": { - "additionalProperties": false, - "properties": { - "GroupAttributeField": { - "$ref": "#/definitions/GroupAttributeField" - }, - "UserNameAttributeField": { - "$ref": "#/definitions/UserNameAttributeField" - } - }, - "required": [ - "UserNameAttributeField", - "GroupAttributeField" - ], - "type": "object" - }, - "JwtTokenTypeConfiguration": { - "additionalProperties": false, - "properties": { - "ClaimRegex": { - "$ref": "#/definitions/ClaimRegex" - }, - "GroupAttributeField": { - "$ref": "#/definitions/GroupAttributeField" - }, - "Issuer": { - "$ref": "#/definitions/Issuer" - }, - "KeyLocation": { - "$ref": "#/definitions/KeyLocation" - }, - "SecretManagerArn": { - "$ref": "#/definitions/RoleArn" - }, - "URL": { - "$ref": "#/definitions/Url" - }, - "UserNameAttributeField": { - "$ref": "#/definitions/UserNameAttributeField" - } - }, - "required": [ - "KeyLocation" - ], - "type": "object" - }, - "KeyLocation": { - "enum": [ - "URL", - "SECRET_MANAGER" - ], - "type": "string" - }, - "KmsKeyId": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "Name of index", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "Order": { - "enum": [ - "ASCENDING", - "DESCENDING" - ], - "type": "string" - }, - "QueryCapacityUnits": { - "minimum": 0, - "type": "integer" - }, - "Relevance": { - "additionalProperties": false, - "properties": { - "Duration": { - "$ref": "#/definitions/Duration" - }, - "Freshness": { - "$ref": "#/definitions/Freshness" - }, - "Importance": { - "$ref": "#/definitions/Importance" - }, - "RankOrder": { - "$ref": "#/definitions/Order" - }, - "ValueImportanceItems": { - "$ref": "#/definitions/ValueImportanceItems" - } - }, - "type": "object" - }, - "RoleArn": { - "description": "Role Arn", - "maxLength": 1284, - "minLength": 1, - "pattern": "arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}", - "type": "string" - }, - "Search": { - "additionalProperties": false, - "properties": { - "Displayable": { - "type": "boolean" - }, - "Facetable": { - "type": "boolean" - }, - "Searchable": { - "type": "boolean" - }, - "Sortable": { - "type": "boolean" - } - }, - "type": "object" - }, - "ServerSideEncryptionConfiguration": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "$ref": "#/definitions/KmsKeyId" - } - }, - "type": "object" - }, - "StorageCapacityUnits": { - "minimum": 0, - "type": "integer" - }, - "Tag": { - "additionalProperties": false, - "description": "A label for tagging Kendra resources", - "properties": { - "Key": { - "description": "A string used to identify this tag", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "A string containing the value for the tag", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TagList": { - "description": "List of tags", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array" - }, - "Url": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^(https?|ftp|file):\\/\\/([^\\s]*)", - "type": "string" - }, - "UserContextPolicy": { - "enum": [ - "ATTRIBUTE_FILTER", - "USER_TOKEN" - ], - "type": "string" - }, - "UserNameAttributeField": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "UserTokenConfiguration": { - "additionalProperties": false, - "properties": { - "JsonTokenTypeConfiguration": { - "$ref": "#/definitions/JsonTokenTypeConfiguration" - }, - "JwtTokenTypeConfiguration": { - "$ref": "#/definitions/JwtTokenTypeConfiguration" - } - }, - "type": "object" - }, - "UserTokenConfigurationList": { - "items": { - "$ref": "#/definitions/UserTokenConfiguration" - }, - "maxItems": 1, - "type": "array" - }, - "ValueImportanceItem": { - "additionalProperties": false, - "properties": { - "Key": { - "$ref": "#/definitions/ValueImportanceItemKey" - }, - "Value": { - "$ref": "#/definitions/Importance" - } - }, - "type": "object" - }, - "ValueImportanceItemKey": { - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "ValueImportanceItems": { - "items": { - "$ref": "#/definitions/ValueImportanceItem" - }, - "type": "array" - } - }, - "description": "A Kendra index", - "handlers": { - "create": { - "permissions": [ - "kendra:CreateIndex", - "kendra:DescribeIndex", - "kendra:UpdateIndex", - "kendra:ListTagsForResource", - "iam:PassRole", - "kendra:TagResource" - ], - "timeoutInMinutes": 240 - }, - "delete": { - "permissions": [ - "kendra:DescribeIndex", - "kendra:DeleteIndex" - ], - "timeoutInMinutes": 720 - }, - "list": { - "permissions": [ - "kendra:ListIndices" - ] - }, - "read": { - "permissions": [ - "kendra:DescribeIndex", - "kendra:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "kendra:DescribeIndex", - "kendra:UpdateIndex", - "kendra:ListTagsForResource", - "kendra:TagResource", - "kendra:UntagResource", - "iam:PassRole" - ], - "timeoutInMinutes": 240 - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "CapacityUnits": { - "$ref": "#/definitions/CapacityUnitsConfiguration", - "description": "Capacity units" - }, - "Description": { - "$ref": "#/definitions/Description", - "description": "A description for the index" - }, - "DocumentMetadataConfigurations": { - "$ref": "#/definitions/DocumentMetadataConfigurationList", - "description": "Document metadata configurations" - }, - "Edition": { - "$ref": "#/definitions/Edition" - }, - "Id": { - "$ref": "#/definitions/Id" - }, - "Name": { - "$ref": "#/definitions/Name" - }, - "RoleArn": { - "$ref": "#/definitions/RoleArn" - }, - "ServerSideEncryptionConfiguration": { - "$ref": "#/definitions/ServerSideEncryptionConfiguration", - "description": "Server side encryption configuration" - }, - "Tags": { - "$ref": "#/definitions/TagList", - "description": "Tags for labeling the index" - }, - "UserContextPolicy": { - "$ref": "#/definitions/UserContextPolicy" - }, - "UserTokenConfigurations": { - "$ref": "#/definitions/UserTokenConfigurationList" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "Name", - "RoleArn", - "Edition" - ], - "sourceUrl": "https://docs.aws.amazon.com/kendra/latest/dg/hiw-index.html", - "typeName": "AWS::Kendra::Index" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Edition", + "/properties/ServerSideEncryptionConfiguration" + ], + "definitions": { + "Arn": { + "maxLength": 1000, + "type": "string" + }, + "CapacityUnitsConfiguration": { + "additionalProperties": false, + "properties": { + "QueryCapacityUnits": { + "$ref": "#/definitions/QueryCapacityUnits" + }, + "StorageCapacityUnits": { + "$ref": "#/definitions/StorageCapacityUnits" + } + }, + "required": [ + "StorageCapacityUnits", + "QueryCapacityUnits" + ], + "type": "object" + }, + "ClaimRegex": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Description": { + "maxLength": 1000, + "type": "string" + }, + "DocumentAttributeValueType": { + "enum": [ + "STRING_VALUE", + "STRING_LIST_VALUE", + "LONG_VALUE", + "DATE_VALUE" + ], + "type": "string" + }, + "DocumentMetadataConfiguration": { + "additionalProperties": false, + "properties": { + "Name": { + "$ref": "#/definitions/DocumentMetadataConfigurationName" + }, + "Relevance": { + "$ref": "#/definitions/Relevance" + }, + "Search": { + "$ref": "#/definitions/Search" + }, + "Type": { + "$ref": "#/definitions/DocumentAttributeValueType" + } + }, + "required": [ + "Name", + "Type" + ], + "type": "object" + }, + "DocumentMetadataConfigurationList": { + "items": { + "$ref": "#/definitions/DocumentMetadataConfiguration" + }, + "maxItems": 500, + "type": "array" + }, + "DocumentMetadataConfigurationName": { + "maxLength": 30, + "minLength": 1, + "type": "string" + }, + "Duration": { + "maxLength": 10, + "minLength": 1, + "pattern": "[0-9]+[s]", + "type": "string" + }, + "Edition": { + "description": "Edition of index", + "enum": [ + "DEVELOPER_EDITION", + "ENTERPRISE_EDITION", + "GEN_AI_ENTERPRISE_EDITION" + ], + "type": "string" + }, + "Freshness": { + "type": "boolean" + }, + "GroupAttributeField": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Id": { + "description": "Unique ID of index", + "maxLength": 36, + "minLength": 36, + "type": "string" + }, + "Importance": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Issuer": { + "maxLength": 65, + "minLength": 1, + "type": "string" + }, + "JsonTokenTypeConfiguration": { + "additionalProperties": false, + "properties": { + "GroupAttributeField": { + "$ref": "#/definitions/GroupAttributeField" + }, + "UserNameAttributeField": { + "$ref": "#/definitions/UserNameAttributeField" + } + }, + "required": [ + "UserNameAttributeField", + "GroupAttributeField" + ], + "type": "object" + }, + "JwtTokenTypeConfiguration": { + "additionalProperties": false, + "properties": { + "ClaimRegex": { + "$ref": "#/definitions/ClaimRegex" + }, + "GroupAttributeField": { + "$ref": "#/definitions/GroupAttributeField" + }, + "Issuer": { + "$ref": "#/definitions/Issuer" + }, + "KeyLocation": { + "$ref": "#/definitions/KeyLocation" + }, + "SecretManagerArn": { + "$ref": "#/definitions/RoleArn" + }, + "URL": { + "$ref": "#/definitions/Url" + }, + "UserNameAttributeField": { + "$ref": "#/definitions/UserNameAttributeField" + } + }, + "required": [ + "KeyLocation" + ], + "type": "object" + }, + "KeyLocation": { + "enum": [ + "URL", + "SECRET_MANAGER" + ], + "type": "string" + }, + "KmsKeyId": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "Name of index", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "Order": { + "enum": [ + "ASCENDING", + "DESCENDING" + ], + "type": "string" + }, + "QueryCapacityUnits": { + "minimum": 0, + "type": "integer" + }, + "Relevance": { + "additionalProperties": false, + "properties": { + "Duration": { + "$ref": "#/definitions/Duration" + }, + "Freshness": { + "$ref": "#/definitions/Freshness" + }, + "Importance": { + "$ref": "#/definitions/Importance" + }, + "RankOrder": { + "$ref": "#/definitions/Order" + }, + "ValueImportanceItems": { + "$ref": "#/definitions/ValueImportanceItems" + } + }, + "type": "object" + }, + "RoleArn": { + "description": "Role Arn", + "maxLength": 1284, + "minLength": 1, + "pattern": "arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}", + "type": "string" + }, + "Search": { + "additionalProperties": false, + "properties": { + "Displayable": { + "type": "boolean" + }, + "Facetable": { + "type": "boolean" + }, + "Searchable": { + "type": "boolean" + }, + "Sortable": { + "type": "boolean" + } + }, + "type": "object" + }, + "ServerSideEncryptionConfiguration": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "$ref": "#/definitions/KmsKeyId" + } + }, + "type": "object" + }, + "StorageCapacityUnits": { + "minimum": 0, + "type": "integer" + }, + "Tag": { + "additionalProperties": false, + "description": "A label for tagging Kendra resources", + "properties": { + "Key": { + "description": "A string used to identify this tag", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A string containing the value for the tag", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagList": { + "description": "List of tags", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array" + }, + "Url": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^(https?|ftp|file):\\/\\/([^\\s]*)", + "type": "string" + }, + "UserContextPolicy": { + "enum": [ + "ATTRIBUTE_FILTER", + "USER_TOKEN" + ], + "type": "string" + }, + "UserNameAttributeField": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "UserTokenConfiguration": { + "additionalProperties": false, + "properties": { + "JsonTokenTypeConfiguration": { + "$ref": "#/definitions/JsonTokenTypeConfiguration" + }, + "JwtTokenTypeConfiguration": { + "$ref": "#/definitions/JwtTokenTypeConfiguration" + } + }, + "type": "object" + }, + "UserTokenConfigurationList": { + "items": { + "$ref": "#/definitions/UserTokenConfiguration" + }, + "maxItems": 1, + "type": "array" + }, + "ValueImportanceItem": { + "additionalProperties": false, + "properties": { + "Key": { + "$ref": "#/definitions/ValueImportanceItemKey" + }, + "Value": { + "$ref": "#/definitions/Importance" + } + }, + "type": "object" + }, + "ValueImportanceItemKey": { + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "ValueImportanceItems": { + "items": { + "$ref": "#/definitions/ValueImportanceItem" + }, + "type": "array" + } + }, + "description": "A Kendra index", + "handlers": { + "create": { + "permissions": [ + "kendra:CreateIndex", + "kendra:DescribeIndex", + "kendra:UpdateIndex", + "kendra:ListTagsForResource", + "iam:PassRole", + "kendra:TagResource" + ], + "timeoutInMinutes": 240 + }, + "delete": { + "permissions": [ + "kendra:DescribeIndex", + "kendra:DeleteIndex" + ], + "timeoutInMinutes": 720 + }, + "list": { + "permissions": [ + "kendra:ListIndices" + ] + }, + "read": { + "permissions": [ + "kendra:DescribeIndex", + "kendra:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "kendra:DescribeIndex", + "kendra:UpdateIndex", + "kendra:ListTagsForResource", + "kendra:TagResource", + "kendra:UntagResource", + "iam:PassRole" + ], + "timeoutInMinutes": 240 + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CapacityUnits": { + "$ref": "#/definitions/CapacityUnitsConfiguration", + "description": "Capacity units" + }, + "Description": { + "$ref": "#/definitions/Description", + "description": "A description for the index" + }, + "DocumentMetadataConfigurations": { + "$ref": "#/definitions/DocumentMetadataConfigurationList", + "description": "Document metadata configurations" + }, + "Edition": { + "$ref": "#/definitions/Edition" + }, + "Id": { + "$ref": "#/definitions/Id" + }, + "Name": { + "$ref": "#/definitions/Name" + }, + "RoleArn": { + "$ref": "#/definitions/RoleArn" + }, + "ServerSideEncryptionConfiguration": { + "$ref": "#/definitions/ServerSideEncryptionConfiguration", + "description": "Server side encryption configuration" + }, + "Tags": { + "$ref": "#/definitions/TagList", + "description": "Tags for labeling the index" + }, + "UserContextPolicy": { + "$ref": "#/definitions/UserContextPolicy" + }, + "UserTokenConfigurations": { + "$ref": "#/definitions/UserTokenConfigurationList" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Name", + "RoleArn", + "Edition" + ], + "sourceUrl": "https://docs.aws.amazon.com/kendra/latest/dg/hiw-index.html", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "kendra:UntagResource", + "kendra:TagResource", + "kendra:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Kendra::Index" +} diff --git a/src/schema/aws-kendraranking-executionplan.json b/src/schema/aws-kendraranking-executionplan.json index 39f25c79..6d3f56b1 100644 --- a/src/schema/aws-kendraranking-executionplan.json +++ b/src/schema/aws-kendraranking-executionplan.json @@ -1,156 +1,156 @@ -{ - "additionalProperties": false, - "definitions": { - "Arn": { - "maxLength": 1000, - "type": "string" - }, - "CapacityUnitsConfiguration": { - "additionalProperties": false, - "properties": { - "RescoreCapacityUnits": { - "$ref": "#/definitions/RescoreCapacityUnits" - } - }, - "required": [ - "RescoreCapacityUnits" - ], - "type": "object" - }, - "Description": { - "maxLength": 1000, - "type": "string" - }, - "Id": { - "description": "Unique ID of rescore execution plan", - "maxLength": 36, - "minLength": 36, - "type": "string" - }, - "Name": { - "description": "Name of kendra ranking rescore execution plan", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "RescoreCapacityUnits": { - "minimum": 0, - "type": "integer" - }, - "Tag": { - "additionalProperties": false, - "description": "A label for tagging KendraRanking resources", - "properties": { - "Key": { - "description": "A string used to identify this tag", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "A string containing the value for the tag", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Tags": { - "description": "List of tags", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array" - } - }, - "description": "A KendraRanking Rescore execution plan", - "handlers": { - "create": { - "permissions": [ - "kendra-ranking:CreateRescoreExecutionPlan", - "kendra-ranking:DescribeRescoreExecutionPlan", - "kendra-ranking:UpdateRescoreExecutionPlan", - "kendra-ranking:ListTagsForResource", - "kendra-ranking:TagResource" - ], - "timeoutInMinutes": 240 - }, - "delete": { - "permissions": [ - "kendra-ranking:DescribeRescoreExecutionPlan", - "kendra-ranking:DeleteRescoreExecutionPlan" - ], - "timeoutInMinutes": 720 - }, - "list": { - "permissions": [ - "kendra-ranking:ListRescoreExecutionPlans" - ] - }, - "read": { - "permissions": [ - "kendra-ranking:DescribeRescoreExecutionPlan", - "kendra-ranking:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "kendra-ranking:DescribeRescoreExecutionPlan", - "kendra-ranking:UpdateRescoreExecutionPlan", - "kendra-ranking:ListTagsForResource", - "kendra-ranking:TagResource", - "kendra-ranking:UntagResource" - ], - "timeoutInMinutes": 240 - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "CapacityUnits": { - "$ref": "#/definitions/CapacityUnitsConfiguration", - "description": "Capacity units" - }, - "Description": { - "$ref": "#/definitions/Description", - "description": "A description for the execution plan" - }, - "Id": { - "$ref": "#/definitions/Id" - }, - "Name": { - "$ref": "#/definitions/Name" - }, - "Tags": { - "$ref": "#/definitions/Tags", - "description": "Tags for labeling the execution plan" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://docs.aws.amazon.com/kendra/latest/dg/hiw-index.html", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::KendraRanking::ExecutionPlan" -} +{ + "additionalProperties": false, + "definitions": { + "Arn": { + "maxLength": 1000, + "type": "string" + }, + "CapacityUnitsConfiguration": { + "additionalProperties": false, + "properties": { + "RescoreCapacityUnits": { + "$ref": "#/definitions/RescoreCapacityUnits" + } + }, + "required": [ + "RescoreCapacityUnits" + ], + "type": "object" + }, + "Description": { + "maxLength": 1000, + "type": "string" + }, + "Id": { + "description": "Unique ID of rescore execution plan", + "maxLength": 36, + "minLength": 36, + "type": "string" + }, + "Name": { + "description": "Name of kendra ranking rescore execution plan", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "RescoreCapacityUnits": { + "minimum": 0, + "type": "integer" + }, + "Tag": { + "additionalProperties": false, + "description": "A label for tagging KendraRanking resources", + "properties": { + "Key": { + "description": "A string used to identify this tag", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A string containing the value for the tag", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Tags": { + "description": "List of tags", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array" + } + }, + "description": "A KendraRanking Rescore execution plan", + "handlers": { + "create": { + "permissions": [ + "kendra-ranking:CreateRescoreExecutionPlan", + "kendra-ranking:DescribeRescoreExecutionPlan", + "kendra-ranking:UpdateRescoreExecutionPlan", + "kendra-ranking:ListTagsForResource", + "kendra-ranking:TagResource" + ], + "timeoutInMinutes": 240 + }, + "delete": { + "permissions": [ + "kendra-ranking:DescribeRescoreExecutionPlan", + "kendra-ranking:DeleteRescoreExecutionPlan" + ], + "timeoutInMinutes": 720 + }, + "list": { + "permissions": [ + "kendra-ranking:ListRescoreExecutionPlans" + ] + }, + "read": { + "permissions": [ + "kendra-ranking:DescribeRescoreExecutionPlan", + "kendra-ranking:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "kendra-ranking:DescribeRescoreExecutionPlan", + "kendra-ranking:UpdateRescoreExecutionPlan", + "kendra-ranking:ListTagsForResource", + "kendra-ranking:TagResource", + "kendra-ranking:UntagResource" + ], + "timeoutInMinutes": 240 + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CapacityUnits": { + "$ref": "#/definitions/CapacityUnitsConfiguration", + "description": "Capacity units" + }, + "Description": { + "$ref": "#/definitions/Description", + "description": "A description for the execution plan" + }, + "Id": { + "$ref": "#/definitions/Id" + }, + "Name": { + "$ref": "#/definitions/Name" + }, + "Tags": { + "$ref": "#/definitions/Tags", + "description": "Tags for labeling the execution plan" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://docs.aws.amazon.com/kendra/latest/dg/hiw-index.html", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::KendraRanking::ExecutionPlan" +} diff --git a/src/schema/aws-kinesis-resourcepolicy.json b/src/schema/aws-kinesis-resourcepolicy.json index aca1930d..7af53c4f 100644 --- a/src/schema/aws-kinesis-resourcepolicy.json +++ b/src/schema/aws-kinesis-resourcepolicy.json @@ -1,50 +1,71 @@ { - "typeName" : "AWS::Kinesis::ResourcePolicy", - "description" : "Resource Type definition for AWS::Kinesis::ResourcePolicy", - "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kinesis.git", - "properties" : { - "ResourceArn" : { - "description" : "The ARN of the AWS Kinesis resource to which the policy applies.", - "type" : "string", - "minLength" : 1, - "maxLength" : 2048, - "pattern" : "arn:aws.*:kinesis:.*:\\d{12}:stream/\\S+", - "anyOf" : [ { - "relationshipRef" : { - "typeName" : "AWS::Kinesis::Stream", - "propertyPath" : "/properties/Arn" - } - }, { - "relationshipRef" : { - "typeName" : "AWS::Kinesis::StreamConsumer", - "propertyPath" : "/properties/ConsumerARN" - } - } ] + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceArn" + ], + "description": "Resource Type definition for AWS::Kinesis::ResourcePolicy", + "handlers": { + "create": { + "permissions": [ + "kinesis:GetResourcePolicy", + "kinesis:PutResourcePolicy" + ] }, - "ResourcePolicy" : { - "description" : "A policy document containing permissions to add to the specified resource. In IAM, you must provide policy documents in JSON format. However, in CloudFormation you can provide the policy in JSON or YAML format because CloudFormation converts YAML to JSON before submitting it to IAM.", - "type" : "object" - } - }, - "additionalProperties" : false, - "required" : [ "ResourceArn", "ResourcePolicy" ], - "createOnlyProperties" : [ "/properties/ResourceArn" ], - "primaryIdentifier" : [ "/properties/ResourceArn" ], - "tagging" : { - "taggable" : false - }, - "handlers" : { - "create" : { - "permissions" : [ "kinesis:GetResourcePolicy", "kinesis:PutResourcePolicy" ] + "delete": { + "permissions": [ + "kinesis:DeleteResourcePolicy", + "kinesis:GetResourcePolicy" + ] }, - "read" : { - "permissions" : [ "kinesis:GetResourcePolicy" ] + "read": { + "permissions": [ + "kinesis:GetResourcePolicy" + ] }, - "update" : { - "permissions" : [ "kinesis:PutResourcePolicy", "kinesis:GetResourcePolicy" ] + "update": { + "permissions": [ + "kinesis:PutResourcePolicy", + "kinesis:GetResourcePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/ResourceArn" + ], + "properties": { + "ResourceArn": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::Kinesis::Stream" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/ConsumerARN", + "typeName": "AWS::Kinesis::StreamConsumer" + } + } + ], + "description": "The ARN of the AWS Kinesis resource to which the policy applies.", + "maxLength": 2048, + "minLength": 1, + "pattern": "arn:aws.*:kinesis:.*:\\d{12}:stream/\\S+", + "type": "string" }, - "delete" : { - "permissions" : [ "kinesis:DeleteResourcePolicy", "kinesis:GetResourcePolicy" ] + "ResourcePolicy": { + "description": "A policy document containing permissions to add to the specified resource. In IAM, you must provide policy documents in JSON format. However, in CloudFormation you can provide the policy in JSON or YAML format because CloudFormation converts YAML to JSON before submitting it to IAM.", + "type": "object" } - } -} \ No newline at end of file + }, + "required": [ + "ResourceArn", + "ResourcePolicy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kinesis.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Kinesis::ResourcePolicy" +} diff --git a/src/schema/aws-kinesis-stream.json b/src/schema/aws-kinesis-stream.json index 93927c67..3b72e02c 100644 --- a/src/schema/aws-kinesis-stream.json +++ b/src/schema/aws-kinesis-stream.json @@ -1,201 +1,226 @@ -{ - "$comment": "Do not set SystemTags to true without implementing a fail-open mechanism. It should not fail when adding systemTags for customers without AddTagsToStream Permission. Cloudformation will automatically add system tags even if customer does not have the AddTagsToStream permission. COE: https://www.coe.a2z.com/coe/236297/content", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "StreamEncryption": { - "additionalProperties": false, - "description": "When specified, enables or updates server-side encryption using an AWS KMS key for a specified stream. Removing this property from your stack template and updating your stack disables encryption.", - "properties": { - "EncryptionType": { - "description": "The encryption type to use. The only valid value is KMS. ", - "enum": [ - "KMS" - ], - "type": "string" - }, - "KeyId": { - "anyOf": [ - { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::KMS::Key" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/KeyId", - "typeName": "AWS::KMS::Key" - } - } - ], - "description": "The GUID for the customer-managed AWS KMS key to use for encryption. This value can be a globally unique identifier, a fully specified Amazon Resource Name (ARN) to either an alias or a key, or an alias name prefixed by \"alias/\".You can also use a master key owned by Kinesis Data Streams by specifying the alias aws/kinesis.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "EncryptionType", - "KeyId" - ], - "type": "object" - }, - "StreamModeDetails": { - "additionalProperties": false, - "description": "When specified, enables or updates the mode of stream. Default is PROVISIONED.", - "properties": { - "StreamMode": { - "description": "The mode of the stream", - "enum": [ - "ON_DEMAND", - "PROVISIONED" - ], - "type": "string" - } - }, - "required": [ - "StreamMode" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "An arbitrary set of tags (key-value pairs) to associate with the Kinesis stream.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Kinesis::Stream", - "handlers": { - "create": { - "permissions": [ - "kinesis:EnableEnhancedMonitoring", - "kinesis:DescribeStreamSummary", - "kinesis:CreateStream", - "kinesis:IncreaseStreamRetentionPeriod", - "kinesis:StartStreamEncryption", - "kinesis:AddTagsToStream", - "kinesis:ListTagsForStream" - ] - }, - "delete": { - "permissions": [ - "kinesis:DescribeStreamSummary", - "kinesis:DeleteStream", - "kinesis:RemoveTagsFromStream" - ] - }, - "list": { - "permissions": [ - "kinesis:ListStreams" - ] - }, - "read": { - "permissions": [ - "kinesis:DescribeStreamSummary", - "kinesis:ListTagsForStream" - ] - }, - "update": { - "permissions": [ - "kinesis:EnableEnhancedMonitoring", - "kinesis:DisableEnhancedMonitoring", - "kinesis:DescribeStreamSummary", - "kinesis:UpdateShardCount", - "kinesis:UpdateStreamMode", - "kinesis:IncreaseStreamRetentionPeriod", - "kinesis:DecreaseStreamRetentionPeriod", - "kinesis:StartStreamEncryption", - "kinesis:StopStreamEncryption", - "kinesis:AddTagsToStream", - "kinesis:RemoveTagsFromStream", - "kinesis:ListTagsForStream" - ], - "timeoutInMinutes": 240 - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "description": "The Amazon resource name (ARN) of the Kinesis stream", - "type": "string" - }, - "Name": { - "description": "The name of the Kinesis stream.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - }, - "RetentionPeriodHours": { - "description": "The number of hours for the data records that are stored in shards to remain accessible.", - "minimum": 24, - "type": "integer" - }, - "ShardCount": { - "description": "The number of shards that the stream uses. Required when StreamMode = PROVISIONED is passed.", - "minimum": 1, - "type": "integer" - }, - "StreamEncryption": { - "$ref": "#/definitions/StreamEncryption", - "description": "When specified, enables or updates server-side encryption using an AWS KMS key for a specified stream." - }, - "StreamModeDetails": { - "$ref": "#/definitions/StreamModeDetails", - "default": { - "StreamMode": "PROVISIONED" - }, - "description": "The mode in which the stream is running." - }, - "Tags": { - "description": "An arbitrary set of tags (key\u2013value pairs) to associate with the Kinesis stream.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kinesis.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "kinesis:AddTagsToStream", - "kinesis:RemoveTagsFromStream", - "kinesis:ListTagsForStream" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Kinesis::Stream" -} +{ + "$comment": "Do not set SystemTags to true without implementing a fail-open mechanism. It should not fail when adding systemTags for customers without AddTagsToStream Permission. Cloudformation will automatically add system tags even if customer does not have the AddTagsToStream permission. COE: https://www.coe.a2z.com/coe/236297/content", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "EnhancedMetric": { + "additionalProperties": false, + "description": "Value of an enhanced metric", + "enum": [ + "IncomingBytes", + "IncomingRecords", + "OutgoingBytes", + "OutgoingRecords", + "WriteProvisionedThroughputExceeded", + "ReadProvisionedThroughputExceeded", + "IteratorAgeMilliseconds", + "ALL" + ], + "type": "string" + }, + "StreamEncryption": { + "additionalProperties": false, + "description": "When specified, enables or updates server-side encryption using an AWS KMS key for a specified stream. Removing this property from your stack template and updating your stack disables encryption.", + "properties": { + "EncryptionType": { + "description": "The encryption type to use. The only valid value is KMS. ", + "enum": [ + "KMS" + ], + "type": "string" + }, + "KeyId": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::KMS::Key" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/KeyId", + "typeName": "AWS::KMS::Key" + } + } + ], + "description": "The GUID for the customer-managed AWS KMS key to use for encryption. This value can be a globally unique identifier, a fully specified Amazon Resource Name (ARN) to either an alias or a key, or an alias name prefixed by \"alias/\".You can also use a master key owned by Kinesis Data Streams by specifying the alias aws/kinesis.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "EncryptionType", + "KeyId" + ], + "type": "object" + }, + "StreamModeDetails": { + "additionalProperties": false, + "description": "When specified, enables or updates the mode of stream. Default is PROVISIONED.", + "properties": { + "StreamMode": { + "description": "The mode of the stream", + "enum": [ + "ON_DEMAND", + "PROVISIONED" + ], + "type": "string" + } + }, + "required": [ + "StreamMode" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "An arbitrary set of tags (key-value pairs) to associate with the Kinesis stream.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Kinesis::Stream", + "handlers": { + "create": { + "permissions": [ + "kinesis:EnableEnhancedMonitoring", + "kinesis:DescribeStreamSummary", + "kinesis:CreateStream", + "kinesis:IncreaseStreamRetentionPeriod", + "kinesis:StartStreamEncryption", + "kinesis:AddTagsToStream", + "kinesis:ListTagsForStream" + ] + }, + "delete": { + "permissions": [ + "kinesis:DescribeStreamSummary", + "kinesis:DeleteStream", + "kinesis:RemoveTagsFromStream" + ] + }, + "list": { + "permissions": [ + "kinesis:ListStreams" + ] + }, + "read": { + "permissions": [ + "kinesis:DescribeStreamSummary", + "kinesis:ListTagsForStream" + ] + }, + "update": { + "permissions": [ + "kinesis:EnableEnhancedMonitoring", + "kinesis:DisableEnhancedMonitoring", + "kinesis:DescribeStreamSummary", + "kinesis:UpdateShardCount", + "kinesis:UpdateStreamMode", + "kinesis:IncreaseStreamRetentionPeriod", + "kinesis:DecreaseStreamRetentionPeriod", + "kinesis:StartStreamEncryption", + "kinesis:StopStreamEncryption", + "kinesis:AddTagsToStream", + "kinesis:RemoveTagsFromStream", + "kinesis:ListTagsForStream" + ], + "timeoutInMinutes": 240 + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "description": "The Amazon resource name (ARN) of the Kinesis stream", + "type": "string" + }, + "DesiredShardLevelMetrics": { + "description": "The final list of shard-level metrics", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EnhancedMetric" + }, + "maxItems": 7, + "type": "array", + "uniqueItems": true + }, + "Name": { + "description": "The name of the Kinesis stream.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.-]+$", + "type": "string" + }, + "RetentionPeriodHours": { + "description": "The number of hours for the data records that are stored in shards to remain accessible.", + "minimum": 24, + "type": "integer" + }, + "ShardCount": { + "description": "The number of shards that the stream uses. Required when StreamMode = PROVISIONED is passed.", + "minimum": 1, + "type": "integer" + }, + "StreamEncryption": { + "$ref": "#/definitions/StreamEncryption", + "description": "When specified, enables or updates server-side encryption using an AWS KMS key for a specified stream." + }, + "StreamModeDetails": { + "$ref": "#/definitions/StreamModeDetails", + "default": { + "StreamMode": "PROVISIONED" + }, + "description": "The mode in which the stream is running." + }, + "Tags": { + "description": "An arbitrary set of tags (key\u2013value pairs) to associate with the Kinesis stream.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kinesis.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "kinesis:AddTagsToStream", + "kinesis:RemoveTagsFromStream", + "kinesis:ListTagsForStream" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Kinesis::Stream" +} diff --git a/src/schema/aws-kinesis-streamconsumer.json b/src/schema/aws-kinesis-streamconsumer.json index 233b8e85..486b1b07 100644 --- a/src/schema/aws-kinesis-streamconsumer.json +++ b/src/schema/aws-kinesis-streamconsumer.json @@ -1,42 +1,42 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConsumerName", - "/properties/StreamARN" - ], - "description": "Resource Type definition for AWS::Kinesis::StreamConsumer", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ConsumerARN": { - "type": "string" - }, - "ConsumerCreationTimestamp": { - "type": "string" - }, - "ConsumerName": { - "type": "string" - }, - "ConsumerStatus": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "StreamARN": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ConsumerStatus", - "/properties/ConsumerARN", - "/properties/ConsumerCreationTimestamp", - "/properties/Id" - ], - "required": [ - "ConsumerName", - "StreamARN" - ], - "typeName": "AWS::Kinesis::StreamConsumer" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConsumerName", + "/properties/StreamARN" + ], + "description": "Resource Type definition for AWS::Kinesis::StreamConsumer", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ConsumerARN": { + "type": "string" + }, + "ConsumerCreationTimestamp": { + "type": "string" + }, + "ConsumerName": { + "type": "string" + }, + "ConsumerStatus": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "StreamARN": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ConsumerStatus", + "/properties/ConsumerARN", + "/properties/ConsumerCreationTimestamp", + "/properties/Id" + ], + "required": [ + "ConsumerName", + "StreamARN" + ], + "typeName": "AWS::Kinesis::StreamConsumer" +} diff --git a/src/schema/aws-kinesisanalytics-application.json b/src/schema/aws-kinesisanalytics-application.json index 3b61938d..9a5cd6d6 100644 --- a/src/schema/aws-kinesisanalytics-application.json +++ b/src/schema/aws-kinesisanalytics-application.json @@ -1,231 +1,231 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationName" - ], - "definitions": { - "CSVMappingParameters": { - "additionalProperties": false, - "properties": { - "RecordColumnDelimiter": { - "type": "string" - }, - "RecordRowDelimiter": { - "type": "string" - } - }, - "required": [ - "RecordColumnDelimiter", - "RecordRowDelimiter" - ], - "type": "object" - }, - "Input": { - "additionalProperties": false, - "properties": { - "InputParallelism": { - "$ref": "#/definitions/InputParallelism" - }, - "InputProcessingConfiguration": { - "$ref": "#/definitions/InputProcessingConfiguration" - }, - "InputSchema": { - "$ref": "#/definitions/InputSchema" - }, - "KinesisFirehoseInput": { - "$ref": "#/definitions/KinesisFirehoseInput" - }, - "KinesisStreamsInput": { - "$ref": "#/definitions/KinesisStreamsInput" - }, - "NamePrefix": { - "type": "string" - } - }, - "required": [ - "NamePrefix", - "InputSchema" - ], - "type": "object" - }, - "InputLambdaProcessor": { - "additionalProperties": false, - "properties": { - "ResourceARN": { - "type": "string" - }, - "RoleARN": { - "type": "string" - } - }, - "required": [ - "ResourceARN", - "RoleARN" - ], - "type": "object" - }, - "InputParallelism": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - } - }, - "type": "object" - }, - "InputProcessingConfiguration": { - "additionalProperties": false, - "properties": { - "InputLambdaProcessor": { - "$ref": "#/definitions/InputLambdaProcessor" - } - }, - "type": "object" - }, - "InputSchema": { - "additionalProperties": false, - "properties": { - "RecordColumns": { - "items": { - "$ref": "#/definitions/RecordColumn" - }, - "type": "array", - "uniqueItems": false - }, - "RecordEncoding": { - "type": "string" - }, - "RecordFormat": { - "$ref": "#/definitions/RecordFormat" - } - }, - "required": [ - "RecordColumns", - "RecordFormat" - ], - "type": "object" - }, - "JSONMappingParameters": { - "additionalProperties": false, - "properties": { - "RecordRowPath": { - "type": "string" - } - }, - "required": [ - "RecordRowPath" - ], - "type": "object" - }, - "KinesisFirehoseInput": { - "additionalProperties": false, - "properties": { - "ResourceARN": { - "type": "string" - }, - "RoleARN": { - "type": "string" - } - }, - "required": [ - "ResourceARN", - "RoleARN" - ], - "type": "object" - }, - "KinesisStreamsInput": { - "additionalProperties": false, - "properties": { - "ResourceARN": { - "type": "string" - }, - "RoleARN": { - "type": "string" - } - }, - "required": [ - "ResourceARN", - "RoleARN" - ], - "type": "object" - }, - "MappingParameters": { - "additionalProperties": false, - "properties": { - "CSVMappingParameters": { - "$ref": "#/definitions/CSVMappingParameters" - }, - "JSONMappingParameters": { - "$ref": "#/definitions/JSONMappingParameters" - } - }, - "type": "object" - }, - "RecordColumn": { - "additionalProperties": false, - "properties": { - "Mapping": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "SqlType": { - "type": "string" - } - }, - "required": [ - "SqlType", - "Name" - ], - "type": "object" - }, - "RecordFormat": { - "additionalProperties": false, - "properties": { - "MappingParameters": { - "$ref": "#/definitions/MappingParameters" - }, - "RecordFormatType": { - "type": "string" - } - }, - "required": [ - "RecordFormatType" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::KinesisAnalytics::Application", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationCode": { - "type": "string" - }, - "ApplicationDescription": { - "type": "string" - }, - "ApplicationName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Inputs": { - "items": { - "$ref": "#/definitions/Input" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Inputs" - ], - "typeName": "AWS::KinesisAnalytics::Application" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationName" + ], + "definitions": { + "CSVMappingParameters": { + "additionalProperties": false, + "properties": { + "RecordColumnDelimiter": { + "type": "string" + }, + "RecordRowDelimiter": { + "type": "string" + } + }, + "required": [ + "RecordColumnDelimiter", + "RecordRowDelimiter" + ], + "type": "object" + }, + "Input": { + "additionalProperties": false, + "properties": { + "InputParallelism": { + "$ref": "#/definitions/InputParallelism" + }, + "InputProcessingConfiguration": { + "$ref": "#/definitions/InputProcessingConfiguration" + }, + "InputSchema": { + "$ref": "#/definitions/InputSchema" + }, + "KinesisFirehoseInput": { + "$ref": "#/definitions/KinesisFirehoseInput" + }, + "KinesisStreamsInput": { + "$ref": "#/definitions/KinesisStreamsInput" + }, + "NamePrefix": { + "type": "string" + } + }, + "required": [ + "NamePrefix", + "InputSchema" + ], + "type": "object" + }, + "InputLambdaProcessor": { + "additionalProperties": false, + "properties": { + "ResourceARN": { + "type": "string" + }, + "RoleARN": { + "type": "string" + } + }, + "required": [ + "ResourceARN", + "RoleARN" + ], + "type": "object" + }, + "InputParallelism": { + "additionalProperties": false, + "properties": { + "Count": { + "type": "integer" + } + }, + "type": "object" + }, + "InputProcessingConfiguration": { + "additionalProperties": false, + "properties": { + "InputLambdaProcessor": { + "$ref": "#/definitions/InputLambdaProcessor" + } + }, + "type": "object" + }, + "InputSchema": { + "additionalProperties": false, + "properties": { + "RecordColumns": { + "items": { + "$ref": "#/definitions/RecordColumn" + }, + "type": "array", + "uniqueItems": false + }, + "RecordEncoding": { + "type": "string" + }, + "RecordFormat": { + "$ref": "#/definitions/RecordFormat" + } + }, + "required": [ + "RecordColumns", + "RecordFormat" + ], + "type": "object" + }, + "JSONMappingParameters": { + "additionalProperties": false, + "properties": { + "RecordRowPath": { + "type": "string" + } + }, + "required": [ + "RecordRowPath" + ], + "type": "object" + }, + "KinesisFirehoseInput": { + "additionalProperties": false, + "properties": { + "ResourceARN": { + "type": "string" + }, + "RoleARN": { + "type": "string" + } + }, + "required": [ + "ResourceARN", + "RoleARN" + ], + "type": "object" + }, + "KinesisStreamsInput": { + "additionalProperties": false, + "properties": { + "ResourceARN": { + "type": "string" + }, + "RoleARN": { + "type": "string" + } + }, + "required": [ + "ResourceARN", + "RoleARN" + ], + "type": "object" + }, + "MappingParameters": { + "additionalProperties": false, + "properties": { + "CSVMappingParameters": { + "$ref": "#/definitions/CSVMappingParameters" + }, + "JSONMappingParameters": { + "$ref": "#/definitions/JSONMappingParameters" + } + }, + "type": "object" + }, + "RecordColumn": { + "additionalProperties": false, + "properties": { + "Mapping": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "SqlType": { + "type": "string" + } + }, + "required": [ + "SqlType", + "Name" + ], + "type": "object" + }, + "RecordFormat": { + "additionalProperties": false, + "properties": { + "MappingParameters": { + "$ref": "#/definitions/MappingParameters" + }, + "RecordFormatType": { + "type": "string" + } + }, + "required": [ + "RecordFormatType" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::KinesisAnalytics::Application", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationCode": { + "type": "string" + }, + "ApplicationDescription": { + "type": "string" + }, + "ApplicationName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Inputs": { + "items": { + "$ref": "#/definitions/Input" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Inputs" + ], + "typeName": "AWS::KinesisAnalytics::Application" +} diff --git a/src/schema/aws-kinesisanalytics-applicationoutput.json b/src/schema/aws-kinesisanalytics-applicationoutput.json index 67d18402..94e264d3 100644 --- a/src/schema/aws-kinesisanalytics-applicationoutput.json +++ b/src/schema/aws-kinesisanalytics-applicationoutput.json @@ -1,112 +1,112 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationName" - ], - "definitions": { - "DestinationSchema": { - "additionalProperties": false, - "properties": { - "RecordFormatType": { - "type": "string" - } - }, - "type": "object" - }, - "KinesisFirehoseOutput": { - "additionalProperties": false, - "properties": { - "ResourceARN": { - "type": "string" - }, - "RoleARN": { - "type": "string" - } - }, - "required": [ - "ResourceARN", - "RoleARN" - ], - "type": "object" - }, - "KinesisStreamsOutput": { - "additionalProperties": false, - "properties": { - "ResourceARN": { - "type": "string" - }, - "RoleARN": { - "type": "string" - } - }, - "required": [ - "ResourceARN", - "RoleARN" - ], - "type": "object" - }, - "LambdaOutput": { - "additionalProperties": false, - "properties": { - "ResourceARN": { - "type": "string" - }, - "RoleARN": { - "type": "string" - } - }, - "required": [ - "ResourceARN", - "RoleARN" - ], - "type": "object" - }, - "Output": { - "additionalProperties": false, - "properties": { - "DestinationSchema": { - "$ref": "#/definitions/DestinationSchema" - }, - "KinesisFirehoseOutput": { - "$ref": "#/definitions/KinesisFirehoseOutput" - }, - "KinesisStreamsOutput": { - "$ref": "#/definitions/KinesisStreamsOutput" - }, - "LambdaOutput": { - "$ref": "#/definitions/LambdaOutput" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "DestinationSchema" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::KinesisAnalytics::ApplicationOutput", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Output": { - "$ref": "#/definitions/Output" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ApplicationName", - "Output" - ], - "typeName": "AWS::KinesisAnalytics::ApplicationOutput" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationName" + ], + "definitions": { + "DestinationSchema": { + "additionalProperties": false, + "properties": { + "RecordFormatType": { + "type": "string" + } + }, + "type": "object" + }, + "KinesisFirehoseOutput": { + "additionalProperties": false, + "properties": { + "ResourceARN": { + "type": "string" + }, + "RoleARN": { + "type": "string" + } + }, + "required": [ + "ResourceARN", + "RoleARN" + ], + "type": "object" + }, + "KinesisStreamsOutput": { + "additionalProperties": false, + "properties": { + "ResourceARN": { + "type": "string" + }, + "RoleARN": { + "type": "string" + } + }, + "required": [ + "ResourceARN", + "RoleARN" + ], + "type": "object" + }, + "LambdaOutput": { + "additionalProperties": false, + "properties": { + "ResourceARN": { + "type": "string" + }, + "RoleARN": { + "type": "string" + } + }, + "required": [ + "ResourceARN", + "RoleARN" + ], + "type": "object" + }, + "Output": { + "additionalProperties": false, + "properties": { + "DestinationSchema": { + "$ref": "#/definitions/DestinationSchema" + }, + "KinesisFirehoseOutput": { + "$ref": "#/definitions/KinesisFirehoseOutput" + }, + "KinesisStreamsOutput": { + "$ref": "#/definitions/KinesisStreamsOutput" + }, + "LambdaOutput": { + "$ref": "#/definitions/LambdaOutput" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "DestinationSchema" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::KinesisAnalytics::ApplicationOutput", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Output": { + "$ref": "#/definitions/Output" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationName", + "Output" + ], + "typeName": "AWS::KinesisAnalytics::ApplicationOutput" +} diff --git a/src/schema/aws-kinesisanalytics-applicationreferencedatasource.json b/src/schema/aws-kinesisanalytics-applicationreferencedatasource.json index f90c25ac..fa31204e 100644 --- a/src/schema/aws-kinesisanalytics-applicationreferencedatasource.json +++ b/src/schema/aws-kinesisanalytics-applicationreferencedatasource.json @@ -1,166 +1,166 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationName" - ], - "definitions": { - "CSVMappingParameters": { - "additionalProperties": false, - "properties": { - "RecordColumnDelimiter": { - "type": "string" - }, - "RecordRowDelimiter": { - "type": "string" - } - }, - "required": [ - "RecordColumnDelimiter", - "RecordRowDelimiter" - ], - "type": "object" - }, - "JSONMappingParameters": { - "additionalProperties": false, - "properties": { - "RecordRowPath": { - "type": "string" - } - }, - "required": [ - "RecordRowPath" - ], - "type": "object" - }, - "MappingParameters": { - "additionalProperties": false, - "properties": { - "CSVMappingParameters": { - "$ref": "#/definitions/CSVMappingParameters" - }, - "JSONMappingParameters": { - "$ref": "#/definitions/JSONMappingParameters" - } - }, - "type": "object" - }, - "RecordColumn": { - "additionalProperties": false, - "properties": { - "Mapping": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "SqlType": { - "type": "string" - } - }, - "required": [ - "SqlType", - "Name" - ], - "type": "object" - }, - "RecordFormat": { - "additionalProperties": false, - "properties": { - "MappingParameters": { - "$ref": "#/definitions/MappingParameters" - }, - "RecordFormatType": { - "type": "string" - } - }, - "required": [ - "RecordFormatType" - ], - "type": "object" - }, - "ReferenceDataSource": { - "additionalProperties": false, - "properties": { - "ReferenceSchema": { - "$ref": "#/definitions/ReferenceSchema" - }, - "S3ReferenceDataSource": { - "$ref": "#/definitions/S3ReferenceDataSource" - }, - "TableName": { - "type": "string" - } - }, - "required": [ - "ReferenceSchema" - ], - "type": "object" - }, - "ReferenceSchema": { - "additionalProperties": false, - "properties": { - "RecordColumns": { - "items": { - "$ref": "#/definitions/RecordColumn" - }, - "type": "array", - "uniqueItems": false - }, - "RecordEncoding": { - "type": "string" - }, - "RecordFormat": { - "$ref": "#/definitions/RecordFormat" - } - }, - "required": [ - "RecordColumns", - "RecordFormat" - ], - "type": "object" - }, - "S3ReferenceDataSource": { - "additionalProperties": false, - "properties": { - "BucketARN": { - "type": "string" - }, - "FileKey": { - "type": "string" - }, - "ReferenceRoleARN": { - "type": "string" - } - }, - "required": [ - "BucketARN", - "FileKey", - "ReferenceRoleARN" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::KinesisAnalytics::ApplicationReferenceDataSource", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ReferenceDataSource": { - "$ref": "#/definitions/ReferenceDataSource" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ReferenceDataSource", - "ApplicationName" - ], - "typeName": "AWS::KinesisAnalytics::ApplicationReferenceDataSource" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationName" + ], + "definitions": { + "CSVMappingParameters": { + "additionalProperties": false, + "properties": { + "RecordColumnDelimiter": { + "type": "string" + }, + "RecordRowDelimiter": { + "type": "string" + } + }, + "required": [ + "RecordColumnDelimiter", + "RecordRowDelimiter" + ], + "type": "object" + }, + "JSONMappingParameters": { + "additionalProperties": false, + "properties": { + "RecordRowPath": { + "type": "string" + } + }, + "required": [ + "RecordRowPath" + ], + "type": "object" + }, + "MappingParameters": { + "additionalProperties": false, + "properties": { + "CSVMappingParameters": { + "$ref": "#/definitions/CSVMappingParameters" + }, + "JSONMappingParameters": { + "$ref": "#/definitions/JSONMappingParameters" + } + }, + "type": "object" + }, + "RecordColumn": { + "additionalProperties": false, + "properties": { + "Mapping": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "SqlType": { + "type": "string" + } + }, + "required": [ + "SqlType", + "Name" + ], + "type": "object" + }, + "RecordFormat": { + "additionalProperties": false, + "properties": { + "MappingParameters": { + "$ref": "#/definitions/MappingParameters" + }, + "RecordFormatType": { + "type": "string" + } + }, + "required": [ + "RecordFormatType" + ], + "type": "object" + }, + "ReferenceDataSource": { + "additionalProperties": false, + "properties": { + "ReferenceSchema": { + "$ref": "#/definitions/ReferenceSchema" + }, + "S3ReferenceDataSource": { + "$ref": "#/definitions/S3ReferenceDataSource" + }, + "TableName": { + "type": "string" + } + }, + "required": [ + "ReferenceSchema" + ], + "type": "object" + }, + "ReferenceSchema": { + "additionalProperties": false, + "properties": { + "RecordColumns": { + "items": { + "$ref": "#/definitions/RecordColumn" + }, + "type": "array", + "uniqueItems": false + }, + "RecordEncoding": { + "type": "string" + }, + "RecordFormat": { + "$ref": "#/definitions/RecordFormat" + } + }, + "required": [ + "RecordColumns", + "RecordFormat" + ], + "type": "object" + }, + "S3ReferenceDataSource": { + "additionalProperties": false, + "properties": { + "BucketARN": { + "type": "string" + }, + "FileKey": { + "type": "string" + }, + "ReferenceRoleARN": { + "type": "string" + } + }, + "required": [ + "BucketARN", + "FileKey", + "ReferenceRoleARN" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::KinesisAnalytics::ApplicationReferenceDataSource", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "ReferenceDataSource": { + "$ref": "#/definitions/ReferenceDataSource" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ReferenceDataSource", + "ApplicationName" + ], + "typeName": "AWS::KinesisAnalytics::ApplicationReferenceDataSource" +} diff --git a/src/schema/aws-kinesisanalyticsv2-application.json b/src/schema/aws-kinesisanalyticsv2-application.json index f881421d..614370c1 100644 --- a/src/schema/aws-kinesisanalyticsv2-application.json +++ b/src/schema/aws-kinesisanalyticsv2-application.json @@ -1,1001 +1,1006 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationName", - "/properties/ApplicationMode" - ], - "definitions": { - "ApplicationCodeConfiguration": { - "additionalProperties": false, - "description": "Describes code configuration for an application.", - "properties": { - "CodeContent": { - "$ref": "#/definitions/CodeContent", - "description": "The location and type of the application code." - }, - "CodeContentType": { - "description": "Specifies whether the code content is in text or zip format.", - "enum": [ - "PLAINTEXT", - "ZIPFILE" - ], - "type": "string" - } - }, - "required": [ - "CodeContentType", - "CodeContent" - ], - "type": "object" - }, - "ApplicationConfiguration": { - "additionalProperties": false, - "description": "Specifies the creation parameters for a Kinesis Data Analytics application.", - "properties": { - "ApplicationCodeConfiguration": { - "$ref": "#/definitions/ApplicationCodeConfiguration", - "description": "The code location and type parameters for a Flink-based Kinesis Data Analytics application." - }, - "ApplicationSnapshotConfiguration": { - "$ref": "#/definitions/ApplicationSnapshotConfiguration", - "description": "Describes whether snapshots are enabled for a Flink-based Kinesis Data Analytics application." - }, - "ApplicationSystemRollbackConfiguration": { - "$ref": "#/definitions/ApplicationSystemRollbackConfiguration", - "description": "Describes whether system initiated rollbacks are enabled for a Flink-based Kinesis Data Analytics application." - }, - "EnvironmentProperties": { - "$ref": "#/definitions/EnvironmentProperties", - "description": "Describes execution properties for a Flink-based Kinesis Data Analytics application." - }, - "FlinkApplicationConfiguration": { - "$ref": "#/definitions/FlinkApplicationConfiguration", - "description": "The creation and update parameters for a Flink-based Kinesis Data Analytics application." - }, - "SqlApplicationConfiguration": { - "$ref": "#/definitions/SqlApplicationConfiguration", - "description": "The creation and update parameters for a SQL-based Kinesis Data Analytics application." - }, - "VpcConfigurations": { - "$ref": "#/definitions/VpcConfigurations", - "description": "The array of descriptions of VPC configurations available to the application." - }, - "ZeppelinApplicationConfiguration": { - "$ref": "#/definitions/ZeppelinApplicationConfiguration", - "description": "The configuration parameters for a Kinesis Data Analytics Studio notebook." - } - }, - "type": "object" - }, - "ApplicationMaintenanceConfiguration": { - "additionalProperties": false, - "description": "Describes the maintenance configuration for the application.", - "properties": { - "ApplicationMaintenanceWindowStartTime": { - "description": "The start time for the maintenance window.", - "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$", - "type": "string" - } - }, - "required": [ - "ApplicationMaintenanceWindowStartTime" - ], - "type": "object" - }, - "ApplicationRestoreConfiguration": { - "additionalProperties": false, - "description": "Describes the restore behavior of a restarting application.", - "properties": { - "ApplicationRestoreType": { - "description": "Specifies how the application should be restored.", - "enum": [ - "SKIP_RESTORE_FROM_SNAPSHOT", - "RESTORE_FROM_LATEST_SNAPSHOT", - "RESTORE_FROM_CUSTOM_SNAPSHOT" - ], - "type": "string" - }, - "SnapshotName": { - "description": "The identifier of an existing snapshot of application state to use to restart an application. The application uses this value if RESTORE_FROM_CUSTOM_SNAPSHOT is specified for the ApplicationRestoreType.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - } - }, - "required": [ - "ApplicationRestoreType" - ], - "type": "object" - }, - "ApplicationSnapshotConfiguration": { - "additionalProperties": false, - "description": "Describes whether snapshots are enabled for a Flink-based Kinesis Data Analytics application.", - "properties": { - "SnapshotsEnabled": { - "description": "Describes whether snapshots are enabled for a Flink-based Kinesis Data Analytics application.", - "type": "boolean" - } - }, - "required": [ - "SnapshotsEnabled" - ], - "type": "object" - }, - "ApplicationSystemRollbackConfiguration": { - "additionalProperties": false, - "description": "Describes whether system initiated rollbacks are enabled for a Flink-based Kinesis Data Analytics application.", - "properties": { - "RollbackEnabled": { - "description": "Describes whether system initiated rollbacks are enabled for a Flink-based Kinesis Data Analytics application.", - "type": "boolean" - } - }, - "required": [ - "RollbackEnabled" - ], - "type": "object" - }, - "Arn": { - "description": "The Amazon Resource Name", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:.*$", - "type": "string" - }, - "CSVMappingParameters": { - "additionalProperties": false, - "description": "For a SQL-based Kinesis Data Analytics application, provides additional mapping information when the record format uses delimiters, such as CSV. For example, the following sample records use CSV format, where the records use the '\\n' as the row delimiter and a comma (\",\") as the column delimiter:\n`\"name1\", \"address1\"`\n`\"name2\", \"address2\"`", - "properties": { - "RecordColumnDelimiter": { - "description": "The column delimiter. For example, in a CSV format, a comma (\",\") is the typical column delimiter.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "RecordRowDelimiter": { - "description": "The row delimiter. For example, in a CSV format, '\\n' is the typical row delimiter.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "RecordRowDelimiter", - "RecordColumnDelimiter" - ], - "type": "object" - }, - "CatalogConfiguration": { - "additionalProperties": false, - "description": "The configuration parameters for the default Amazon Glue database. You use this database for SQL queries that you write in a Kinesis Data Analytics Studio notebook.", - "properties": { - "GlueDataCatalogConfiguration": { - "$ref": "#/definitions/GlueDataCatalogConfiguration", - "description": "The configuration parameters for the default Amazon Glue database. You use this database for Apache Flink SQL queries and table API transforms that you write in a Kinesis Data Analytics Studio notebook." - } - }, - "type": "object" - }, - "CheckpointConfiguration": { - "additionalProperties": false, - "description": "Describes an application's checkpointing configuration. Checkpointing is the process of persisting application state for fault tolerance. For more information, see Checkpoints for Fault Tolerance in the Apache Flink Documentation.", - "properties": { - "CheckpointInterval": { - "description": "Describes the interval in milliseconds between checkpoint operations.", - "format": "int64", - "maximum": 9223372036854775807, - "minimum": 1, - "type": "integer" - }, - "CheckpointingEnabled": { - "description": "Describes whether checkpointing is enabled for a Flink-based Kinesis Data Analytics application.", - "type": "boolean" - }, - "ConfigurationType": { - "description": "Describes whether the application uses Kinesis Data Analytics' default checkpointing behavior. You must set this property to `CUSTOM` in order to set the `CheckpointingEnabled`, `CheckpointInterval`, or `MinPauseBetweenCheckpoints` parameters.", - "enum": [ - "DEFAULT", - "CUSTOM" - ], - "type": "string" - }, - "MinPauseBetweenCheckpoints": { - "description": "Describes the minimum time in milliseconds after a checkpoint operation completes that a new checkpoint operation can start. If a checkpoint operation takes longer than the CheckpointInterval, the application otherwise performs continual checkpoint operations. For more information, see Tuning Checkpointing in the Apache Flink Documentation.", - "format": "int64", - "maximum": 9223372036854775807, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "ConfigurationType" - ], - "type": "object" - }, - "CodeContent": { - "additionalProperties": false, - "description": "Specifies either the application code, or the location of the application code, for a Flink-based Kinesis Data Analytics application.", - "properties": { - "S3ContentLocation": { - "$ref": "#/definitions/S3ContentLocation", - "description": "Information about the Amazon S3 bucket that contains the application code." - }, - "TextContent": { - "description": "The text-format code for a Flink-based Kinesis Data Analytics application.", - "maxLength": 102400, - "minLength": 1, - "type": "string" - }, - "ZipFileContent": { - "description": "The zip-format code for a Flink-based Kinesis Data Analytics application.", - "type": "string" - } - }, - "type": "object" - }, - "CustomArtifactConfiguration": { - "additionalProperties": false, - "description": "The configuration of connectors and user-defined functions.", - "properties": { - "ArtifactType": { - "description": "Set this to either `UDF` or `DEPENDENCY_JAR`. `UDF` stands for user-defined functions. This type of artifact must be in an S3 bucket. A `DEPENDENCY_JAR` can be in either Maven or an S3 bucket.", - "enum": [ - "DEPENDENCY_JAR", - "UDF" - ], - "type": "string" - }, - "MavenReference": { - "$ref": "#/definitions/MavenReference", - "description": "The parameters required to fully specify a Maven reference." - }, - "S3ContentLocation": { - "$ref": "#/definitions/S3ContentLocation", - "description": "The location of the custom artifacts." - } - }, - "required": [ - "ArtifactType" - ], - "type": "object" - }, - "CustomArtifactsConfiguration": { - "description": "A list of CustomArtifactConfiguration objects.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CustomArtifactConfiguration", - "description": "The configuration of connectors and user-defined functions." - }, - "maxItems": 50, - "type": "array", - "uniqueItems": false - }, - "DeployAsApplicationConfiguration": { - "additionalProperties": false, - "description": "The information required to deploy a Kinesis Data Analytics Studio notebook as an application with durable state.", - "properties": { - "S3ContentLocation": { - "$ref": "#/definitions/S3ContentBaseLocation", - "description": "The description of an Amazon S3 object that contains the Amazon Data Analytics application, including the Amazon Resource Name (ARN) of the S3 bucket, the name of the Amazon S3 object that contains the data, and the version number of the Amazon S3 object that contains the data." - } - }, - "required": [ - "S3ContentLocation" - ], - "type": "object" - }, - "EnvironmentProperties": { - "additionalProperties": false, - "description": "Describes execution properties for a Flink-based Kinesis Data Analytics application.", - "properties": { - "PropertyGroups": { - "description": "Describes the execution property groups.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PropertyGroup" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "FlinkApplicationConfiguration": { - "additionalProperties": false, - "description": "Describes configuration parameters for a Flink-based Kinesis Data Analytics application or a Studio notebook.", - "properties": { - "CheckpointConfiguration": { - "$ref": "#/definitions/CheckpointConfiguration", - "description": "Describes an application's checkpointing configuration. Checkpointing is the process of persisting application state for fault tolerance. For more information, see Checkpoints for Fault Tolerance in the Apache Flink Documentation." - }, - "MonitoringConfiguration": { - "$ref": "#/definitions/MonitoringConfiguration", - "description": "Describes configuration parameters for Amazon CloudWatch logging for an application." - }, - "ParallelismConfiguration": { - "$ref": "#/definitions/ParallelismConfiguration", - "description": "Describes parameters for how an application executes multiple tasks simultaneously." - } - }, - "type": "object" - }, - "FlinkRunConfiguration": { - "additionalProperties": false, - "description": "Describes the starting parameters for a Flink-based Kinesis Data Analytics application.", - "properties": { - "AllowNonRestoredState": { - "description": "When restoring from a snapshot, specifies whether the runtime is allowed to skip a state that cannot be mapped to the new program. Defaults to false. If you update your application without specifying this parameter, AllowNonRestoredState will be set to false, even if it was previously set to true.", - "type": "boolean" - } - }, - "type": "object" - }, - "GlueDataCatalogConfiguration": { - "additionalProperties": false, - "description": "The configuration of the Glue Data Catalog that you use for Apache Flink SQL queries and table API transforms that you write in an application.", - "properties": { - "DatabaseARN": { - "$ref": "#/definitions/Arn", - "description": "The Amazon Resource Name (ARN) of the database." - } - }, - "type": "object" - }, - "Input": { - "additionalProperties": false, - "description": "When you configure the application input for a SQL-based Kinesis Data Analytics application, you specify the streaming source, the in-application stream name that is created, and the mapping between the two.", - "properties": { - "InputParallelism": { - "$ref": "#/definitions/InputParallelism", - "description": "Describes the number of in-application streams to create." - }, - "InputProcessingConfiguration": { - "$ref": "#/definitions/InputProcessingConfiguration", - "description": "The InputProcessingConfiguration for the input. An input processor transforms records as they are received from the stream, before the application's SQL code executes. Currently, the only input processing configuration available is InputLambdaProcessor." - }, - "InputSchema": { - "$ref": "#/definitions/InputSchema", - "description": "Describes the format of the data in the streaming source, and how each data element maps to corresponding columns in the in-application stream that is being created." - }, - "KinesisFirehoseInput": { - "$ref": "#/definitions/KinesisFirehoseInput", - "description": "If the streaming source is an Amazon Kinesis Data Firehose delivery stream, identifies the delivery stream's ARN." - }, - "KinesisStreamsInput": { - "$ref": "#/definitions/KinesisStreamsInput", - "description": "If the streaming source is an Amazon Kinesis data stream, identifies the stream's Amazon Resource Name (ARN)." - }, - "NamePrefix": { - "description": "The name prefix to use when creating an in-application stream. Suppose that you specify a prefix `\"MyInApplicationStream\"`. Kinesis Data Analytics then creates one or more (as per the InputParallelism count you specified) in-application streams with the names `\"MyInApplicationStream_001\"`, `\"MyInApplicationStream_002\"`, and so on.", - "maxLength": 32, - "minLength": 1, - "pattern": "^[^-\\s<>&]*$", - "type": "string" - } - }, - "required": [ - "NamePrefix", - "InputSchema" - ], - "type": "object" - }, - "InputLambdaProcessor": { - "additionalProperties": false, - "description": "An object that contains the Amazon Resource Name (ARN) of the Amazon Lambda function that is used to preprocess records in the stream in a SQL-based Kinesis Data Analytics application.", - "properties": { - "ResourceARN": { - "$ref": "#/definitions/Arn", - "description": "The ARN of the Amazon Lambda function that operates on records in the stream." - } - }, - "required": [ - "ResourceARN" - ], - "type": "object" - }, - "InputParallelism": { - "additionalProperties": false, - "description": "For a SQL-based Kinesis Data Analytics application, describes the number of in-application streams to create for a given streaming source.", - "properties": { - "Count": { - "description": "The number of in-application streams to create.", - "maximum": 64, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "InputProcessingConfiguration": { - "additionalProperties": false, - "description": "For an SQL-based Amazon Kinesis Data Analytics application, describes a processor that is used to preprocess the records in the stream before being processed by your application code. Currently, the only input processor available is Amazon Lambda.", - "properties": { - "InputLambdaProcessor": { - "$ref": "#/definitions/InputLambdaProcessor", - "description": "The InputLambdaProcessor that is used to preprocess the records in the stream before being processed by your application code." - } - }, - "type": "object" - }, - "InputSchema": { - "additionalProperties": false, - "description": "For a SQL-based Kinesis Data Analytics application, describes the format of the data in the streaming source, and how each data element maps to corresponding columns created in the in-application stream.", - "properties": { - "RecordColumns": { - "description": "A list of `RecordColumn` objects.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RecordColumn" - }, - "maxItems": 1000, - "type": "array", - "uniqueItems": false - }, - "RecordEncoding": { - "description": "Specifies the encoding of the records in the streaming source. For example, UTF-8.", - "enum": [ - "UTF-8" - ], - "type": "string" - }, - "RecordFormat": { - "$ref": "#/definitions/RecordFormat", - "description": "Specifies the format of the records on the streaming source." - } - }, - "required": [ - "RecordColumns", - "RecordFormat" - ], - "type": "object" - }, - "JSONMappingParameters": { - "additionalProperties": false, - "description": "For a SQL-based Kinesis Data Analytics application, provides additional mapping information when JSON is the record format on the streaming source.", - "properties": { - "RecordRowPath": { - "description": "The path to the top-level parent that contains the records.", - "maxLength": 65535, - "minLength": 1, - "pattern": "^(?=^\\$)(?=^\\S+$).*$", - "type": "string" - } - }, - "required": [ - "RecordRowPath" - ], - "type": "object" - }, - "KinesisFirehoseInput": { - "additionalProperties": false, - "description": "For a SQL-based Kinesis Data Analytics application, identifies a Kinesis Data Firehose delivery stream as the streaming source. You provide the delivery stream's Amazon Resource Name (ARN).", - "properties": { - "ResourceARN": { - "$ref": "#/definitions/Arn", - "description": "The Amazon Resource Name (ARN) of the delivery stream." - } - }, - "required": [ - "ResourceARN" - ], - "type": "object" - }, - "KinesisStreamsInput": { - "additionalProperties": false, - "description": "Identifies a Kinesis data stream as the streaming source. You provide the stream's Amazon Resource Name (ARN).", - "properties": { - "ResourceARN": { - "$ref": "#/definitions/Arn", - "description": "The ARN of the input Kinesis data stream to read." - } - }, - "required": [ - "ResourceARN" - ], - "type": "object" - }, - "MappingParameters": { - "additionalProperties": false, - "description": "When you configure a SQL-based Kinesis Data Analytics application's input at the time of creating or updating an application, provides additional mapping information specific to the record format (such as JSON, CSV, or record fields delimited by some delimiter) on the streaming source.", - "properties": { - "CSVMappingParameters": { - "$ref": "#/definitions/CSVMappingParameters", - "description": "Provides additional mapping information when the record format uses delimiters (for example, CSV)." - }, - "JSONMappingParameters": { - "$ref": "#/definitions/JSONMappingParameters", - "description": "Provides additional mapping information when JSON is the record format on the streaming source." - } - }, - "type": "object" - }, - "MavenReference": { - "additionalProperties": false, - "description": "The information required to specify a Maven reference. You can use Maven references to specify dependency JAR files.", - "properties": { - "ArtifactId": { - "description": "The artifact ID of the Maven reference.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - }, - "GroupId": { - "description": "The group ID of the Maven reference.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - }, - "Version": { - "description": "The version of the Maven reference.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - } - }, - "required": [ - "ArtifactId", - "GroupId", - "Version" - ], - "type": "object" - }, - "MonitoringConfiguration": { - "additionalProperties": false, - "description": "Describes configuration parameters for Amazon CloudWatch logging for a Java-based Kinesis Data Analytics application. For more information about CloudWatch logging, see Monitoring.", - "properties": { - "ConfigurationType": { - "description": "Describes whether to use the default CloudWatch logging configuration for an application. You must set this property to CUSTOM in order to set the LogLevel or MetricsLevel parameters.", - "enum": [ - "DEFAULT", - "CUSTOM" - ], - "type": "string" - }, - "LogLevel": { - "description": "Describes the verbosity of the CloudWatch Logs for an application.", - "enum": [ - "DEBUG", - "INFO", - "WARN", - "ERROR" - ], - "type": "string" - }, - "MetricsLevel": { - "description": "Describes the granularity of the CloudWatch Logs for an application. The Parallelism level is not recommended for applications with a Parallelism over 64 due to excessive costs.", - "enum": [ - "APPLICATION", - "OPERATOR", - "PARALLELISM", - "TASK" - ], - "type": "string" - } - }, - "required": [ - "ConfigurationType" - ], - "type": "object" - }, - "ParallelismConfiguration": { - "additionalProperties": false, - "description": "Describes parameters for how a Flink-based Kinesis Data Analytics application executes multiple tasks simultaneously. For more information about parallelism, see Parallel Execution in the Apache Flink Documentation", - "properties": { - "AutoScalingEnabled": { - "description": "Describes whether the Kinesis Data Analytics service can increase the parallelism of the application in response to increased throughput.", - "type": "boolean" - }, - "ConfigurationType": { - "description": "Describes whether the application uses the default parallelism for the Kinesis Data Analytics service. You must set this property to `CUSTOM` in order to change your application's `AutoScalingEnabled`, `Parallelism`, or `ParallelismPerKPU` properties.", - "enum": [ - "CUSTOM", - "DEFAULT" - ], - "type": "string" - }, - "Parallelism": { - "description": "Describes the initial number of parallel tasks that a Java-based Kinesis Data Analytics application can perform. The Kinesis Data Analytics service can increase this number automatically if ParallelismConfiguration:AutoScalingEnabled is set to true.", - "minimum": 1, - "type": "integer" - }, - "ParallelismPerKPU": { - "description": "Describes the number of parallel tasks that a Java-based Kinesis Data Analytics application can perform per Kinesis Processing Unit (KPU) used by the application. For more information about KPUs, see Amazon Kinesis Data Analytics Pricing.", - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "ConfigurationType" - ], - "type": "object" - }, - "PropertyGroup": { - "additionalProperties": false, - "description": "Property key-value pairs passed into an application.", - "properties": { - "PropertyGroupId": { - "description": "Describes the key of an application execution property key-value pair.", - "maxLength": 50, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - }, - "PropertyMap": { - "additionalProperties": false, - "description": "Describes the value of an application execution property key-value pair.", - "maxProperties": 50, - "patternProperties": { - "^.{1,2048}$": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "RecordColumn": { - "additionalProperties": false, - "description": "For a SQL-based Kinesis Data Analytics application, describes the mapping of each data element in the streaming source to the corresponding column in the in-application stream.\nAlso used to describe the format of the reference data source.", - "properties": { - "Mapping": { - "description": "A reference to the data element in the streaming input or the reference data source.", - "maxLength": 65535, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "The name of the column that is created in the in-application input stream or reference table.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[^-\\s<>&]*$", - "type": "string" - }, - "SqlType": { - "description": "The type of column created in the in-application input stream or reference table.", - "maxLength": 100, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "SqlType", - "Name" - ], - "type": "object" - }, - "RecordFormat": { - "additionalProperties": false, - "description": "For a SQL-based Kinesis Data Analytics application, describes the record format and relevant mapping information that should be applied to schematize the records on the stream.", - "properties": { - "MappingParameters": { - "$ref": "#/definitions/MappingParameters", - "description": "When you configure application input at the time of creating or updating an application, provides additional mapping information specific to the record format (such as JSON, CSV, or record fields delimited by some delimiter) on the streaming source." - }, - "RecordFormatType": { - "description": "The type of record format.", - "enum": [ - "CSV", - "JSON" - ], - "type": "string" - } - }, - "required": [ - "RecordFormatType" - ], - "type": "object" - }, - "RunConfiguration": { - "additionalProperties": false, - "description": "Identifies the run configuration (start parameters) of a Kinesis Data Analytics application. This section is evaluated only on stack updates for applications in running RUNNING state and has no effect during manual application start.", - "properties": { - "ApplicationRestoreConfiguration": { - "$ref": "#/definitions/ApplicationRestoreConfiguration", - "description": "Describes the restore behavior of a restarting application." - }, - "FlinkRunConfiguration": { - "$ref": "#/definitions/FlinkRunConfiguration", - "description": "Describes the starting parameters for a Flink-based Kinesis Data Analytics application." - } - }, - "type": "object" - }, - "S3ContentBaseLocation": { - "additionalProperties": false, - "description": "The base location of the Amazon Data Analytics application.", - "properties": { - "BasePath": { - "description": "The base path for the S3 bucket.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^[a-zA-Z0-9/!-_.*'()]+$", - "type": "string" - }, - "BucketARN": { - "$ref": "#/definitions/Arn", - "description": "The Amazon Resource Name (ARN) of the S3 bucket." - } - }, - "required": [ - "BucketARN" - ], - "type": "object" - }, - "S3ContentLocation": { - "additionalProperties": false, - "description": "The location of an application or a custom artifact.", - "properties": { - "BucketARN": { - "$ref": "#/definitions/Arn", - "description": "The Amazon Resource Name (ARN) for the S3 bucket containing the application code." - }, - "FileKey": { - "description": "The file key for the object containing the application code.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "ObjectVersion": { - "description": "The version of the object containing the application code.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "BucketARN", - "FileKey" - ], - "type": "object" - }, - "SqlApplicationConfiguration": { - "additionalProperties": false, - "description": "Describes the inputs, outputs, and reference data sources for a SQL-based Kinesis Data Analytics application.", - "properties": { - "Inputs": { - "description": "The array of Input objects describing the input streams used by the application.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Input" - }, - "maxItems": 1, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair that identifies an application.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that's 1 to 128 Unicode characters in length and can't be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that's 0 to 256 characters in length.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "VpcConfiguration": { - "additionalProperties": false, - "description": "Describes the parameters of a VPC used by the application.", - "properties": { - "SecurityGroupIds": { - "description": "The array of SecurityGroup IDs used by the VPC configuration.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array", - "uniqueItems": false - }, - "SubnetIds": { - "description": "The array of Subnet IDs used by the VPC configuration.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 16, - "minItems": 1, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "SecurityGroupIds", - "SubnetIds" - ], - "type": "object" - }, - "VpcConfigurations": { - "description": "The array of descriptions of VPC configurations available to the application.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/VpcConfiguration", - "description": "Describes the parameters of a VPC used by the application." - }, - "maxItems": 1, - "type": "array", - "uniqueItems": false - }, - "ZeppelinApplicationConfiguration": { - "additionalProperties": false, - "description": "The configuration of a Kinesis Data Analytics Studio notebook.", - "properties": { - "CatalogConfiguration": { - "$ref": "#/definitions/CatalogConfiguration", - "description": "The Amazon Glue Data Catalog that you use in queries in a Kinesis Data Analytics Studio notebook." - }, - "CustomArtifactsConfiguration": { - "$ref": "#/definitions/CustomArtifactsConfiguration", - "description": "A list of CustomArtifactConfiguration objects." - }, - "DeployAsApplicationConfiguration": { - "$ref": "#/definitions/DeployAsApplicationConfiguration", - "description": "The information required to deploy a Kinesis Data Analytics Studio notebook as an application with durable state." - }, - "MonitoringConfiguration": { - "$ref": "#/definitions/ZeppelinMonitoringConfiguration", - "description": "The monitoring configuration of a Kinesis Data Analytics Studio notebook." - } - }, - "type": "object" - }, - "ZeppelinMonitoringConfiguration": { - "additionalProperties": false, - "description": "Describes configuration parameters for Amazon CloudWatch logging for a Kinesis Data Analytics Studio notebook. For more information about CloudWatch logging, see Monitoring.", - "properties": { - "LogLevel": { - "description": "The verbosity of the CloudWatch Logs for an application. You can set it to `INFO`, `WARN`, `ERROR`, or `DEBUG`.", - "enum": [ - "DEBUG", - "INFO", - "WARN", - "ERROR" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Creates an Amazon Kinesis Data Analytics application. For information about creating a Kinesis Data Analytics application, see [Creating an Application](https://docs.aws.amazon.com/kinesisanalytics/latest/java/getting-started.html).", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "kinesisanalytics:CreateApplication", - "kinesisanalytics:DescribeApplication", - "kinesisanalytics:ListTagsForResource", - "kinesisanalytics:UpdateApplicationMaintenanceConfiguration" - ] - }, - "delete": { - "permissions": [ - "kinesisanalytics:DescribeApplication", - "kinesisanalytics:DeleteApplication" - ] - }, - "list": { - "permissions": [ - "kinesisanalytics:ListApplications" - ] - }, - "read": { - "permissions": [ - "kinesisanalytics:DescribeApplication", - "kinesisanalytics:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "kinesisanalytics:UpdateApplication", - "kinesisanalytics:DescribeApplication", - "kinesisanalytics:TagResource", - "kinesisanalytics:UntagResource", - "kinesisanalytics:AddApplicationVpcConfiguration", - "kinesisanalytics:DeleteApplicationVpcConfiguration", - "kinesisanalytics:UpdateApplicationMaintenanceConfiguration", - "kinesisanalytics:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationName" - ], - "properties": { - "ApplicationConfiguration": { - "$ref": "#/definitions/ApplicationConfiguration", - "description": "Use this parameter to configure the application." - }, - "ApplicationDescription": { - "default": "", - "description": "The description of the application.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "ApplicationMaintenanceConfiguration": { - "$ref": "#/definitions/ApplicationMaintenanceConfiguration", - "description": "Used to configure start of maintenance window." - }, - "ApplicationMode": { - "description": "To create a Kinesis Data Analytics Studio notebook, you must set the mode to `INTERACTIVE`. However, for a Kinesis Data Analytics for Apache Flink application, the mode is optional.", - "enum": [ - "INTERACTIVE", - "STREAMING" - ], - "type": "string" - }, - "ApplicationName": { - "description": "The name of the application.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - }, - "RunConfiguration": { - "$ref": "#/definitions/RunConfiguration", - "description": "Specifies run configuration (start parameters) of a Kinesis Data Analytics application. Evaluated on update for RUNNING applications an only." - }, - "RuntimeEnvironment": { - "description": "The runtime environment for the application.", - "type": "string" - }, - "ServiceExecutionRole": { - "$ref": "#/definitions/Arn", - "description": "Specifies the IAM role that the application uses to access external resources." - }, - "Tags": { - "description": "A list of one or more tags to assign to the application. A tag is a key-value pair that identifies an application. Note that the maximum number of application tags includes system tags. The maximum number of user-defined application tags is 50.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 1, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "RuntimeEnvironment", - "ServiceExecutionRole" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kinesisanalyticsv2.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::KinesisAnalyticsV2::Application", - "writeOnlyProperties": [ - "/properties/RunConfiguration", - "/properties/ApplicationConfiguration/EnvironmentProperties", - "/properties/ApplicationConfiguration/ApplicationCodeConfiguration/CodeContent/ZipFileContent" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationName", + "/properties/ApplicationMode" + ], + "definitions": { + "ApplicationCodeConfiguration": { + "additionalProperties": false, + "description": "Describes code configuration for an application.", + "properties": { + "CodeContent": { + "$ref": "#/definitions/CodeContent", + "description": "The location and type of the application code." + }, + "CodeContentType": { + "description": "Specifies whether the code content is in text or zip format.", + "enum": [ + "PLAINTEXT", + "ZIPFILE" + ], + "type": "string" + } + }, + "required": [ + "CodeContentType", + "CodeContent" + ], + "type": "object" + }, + "ApplicationConfiguration": { + "additionalProperties": false, + "description": "Specifies the creation parameters for a Kinesis Data Analytics application.", + "properties": { + "ApplicationCodeConfiguration": { + "$ref": "#/definitions/ApplicationCodeConfiguration", + "description": "The code location and type parameters for a Flink-based Kinesis Data Analytics application." + }, + "ApplicationSnapshotConfiguration": { + "$ref": "#/definitions/ApplicationSnapshotConfiguration", + "description": "Describes whether snapshots are enabled for a Flink-based Kinesis Data Analytics application." + }, + "ApplicationSystemRollbackConfiguration": { + "$ref": "#/definitions/ApplicationSystemRollbackConfiguration", + "description": "Describes whether system initiated rollbacks are enabled for a Flink-based Kinesis Data Analytics application." + }, + "EnvironmentProperties": { + "$ref": "#/definitions/EnvironmentProperties", + "description": "Describes execution properties for a Flink-based Kinesis Data Analytics application." + }, + "FlinkApplicationConfiguration": { + "$ref": "#/definitions/FlinkApplicationConfiguration", + "description": "The creation and update parameters for a Flink-based Kinesis Data Analytics application." + }, + "SqlApplicationConfiguration": { + "$ref": "#/definitions/SqlApplicationConfiguration", + "description": "The creation and update parameters for a SQL-based Kinesis Data Analytics application." + }, + "VpcConfigurations": { + "$ref": "#/definitions/VpcConfigurations", + "description": "The array of descriptions of VPC configurations available to the application." + }, + "ZeppelinApplicationConfiguration": { + "$ref": "#/definitions/ZeppelinApplicationConfiguration", + "description": "The configuration parameters for a Kinesis Data Analytics Studio notebook." + } + }, + "type": "object" + }, + "ApplicationMaintenanceConfiguration": { + "additionalProperties": false, + "description": "Describes the maintenance configuration for the application.", + "properties": { + "ApplicationMaintenanceWindowStartTime": { + "description": "The start time for the maintenance window.", + "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$", + "type": "string" + } + }, + "required": [ + "ApplicationMaintenanceWindowStartTime" + ], + "type": "object" + }, + "ApplicationRestoreConfiguration": { + "additionalProperties": false, + "description": "Describes the restore behavior of a restarting application.", + "properties": { + "ApplicationRestoreType": { + "description": "Specifies how the application should be restored.", + "enum": [ + "SKIP_RESTORE_FROM_SNAPSHOT", + "RESTORE_FROM_LATEST_SNAPSHOT", + "RESTORE_FROM_CUSTOM_SNAPSHOT" + ], + "type": "string" + }, + "SnapshotName": { + "description": "The identifier of an existing snapshot of application state to use to restart an application. The application uses this value if RESTORE_FROM_CUSTOM_SNAPSHOT is specified for the ApplicationRestoreType.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.-]+$", + "type": "string" + } + }, + "required": [ + "ApplicationRestoreType" + ], + "type": "object" + }, + "ApplicationSnapshotConfiguration": { + "additionalProperties": false, + "description": "Describes whether snapshots are enabled for a Flink-based Kinesis Data Analytics application.", + "properties": { + "SnapshotsEnabled": { + "description": "Describes whether snapshots are enabled for a Flink-based Kinesis Data Analytics application.", + "type": "boolean" + } + }, + "required": [ + "SnapshotsEnabled" + ], + "type": "object" + }, + "ApplicationSystemRollbackConfiguration": { + "additionalProperties": false, + "description": "Describes whether system initiated rollbacks are enabled for a Flink-based Kinesis Data Analytics application.", + "properties": { + "RollbackEnabled": { + "description": "Describes whether system initiated rollbacks are enabled for a Flink-based Kinesis Data Analytics application.", + "type": "boolean" + } + }, + "required": [ + "RollbackEnabled" + ], + "type": "object" + }, + "Arn": { + "description": "The Amazon Resource Name", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:.*$", + "type": "string" + }, + "CSVMappingParameters": { + "additionalProperties": false, + "description": "For a SQL-based Kinesis Data Analytics application, provides additional mapping information when the record format uses delimiters, such as CSV. For example, the following sample records use CSV format, where the records use the '\\n' as the row delimiter and a comma (\",\") as the column delimiter:\n`\"name1\", \"address1\"`\n`\"name2\", \"address2\"`", + "properties": { + "RecordColumnDelimiter": { + "description": "The column delimiter. For example, in a CSV format, a comma (\",\") is the typical column delimiter.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "RecordRowDelimiter": { + "description": "The row delimiter. For example, in a CSV format, '\\n' is the typical row delimiter.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "RecordRowDelimiter", + "RecordColumnDelimiter" + ], + "type": "object" + }, + "CatalogConfiguration": { + "additionalProperties": false, + "description": "The configuration parameters for the default Amazon Glue database. You use this database for SQL queries that you write in a Kinesis Data Analytics Studio notebook.", + "properties": { + "GlueDataCatalogConfiguration": { + "$ref": "#/definitions/GlueDataCatalogConfiguration", + "description": "The configuration parameters for the default Amazon Glue database. You use this database for Apache Flink SQL queries and table API transforms that you write in a Kinesis Data Analytics Studio notebook." + } + }, + "type": "object" + }, + "CheckpointConfiguration": { + "additionalProperties": false, + "description": "Describes an application's checkpointing configuration. Checkpointing is the process of persisting application state for fault tolerance. For more information, see Checkpoints for Fault Tolerance in the Apache Flink Documentation.", + "properties": { + "CheckpointInterval": { + "description": "Describes the interval in milliseconds between checkpoint operations.", + "format": "int64", + "maximum": 9223372036854775807, + "minimum": 1, + "type": "integer" + }, + "CheckpointingEnabled": { + "description": "Describes whether checkpointing is enabled for a Flink-based Kinesis Data Analytics application.", + "type": "boolean" + }, + "ConfigurationType": { + "description": "Describes whether the application uses Kinesis Data Analytics' default checkpointing behavior. You must set this property to `CUSTOM` in order to set the `CheckpointingEnabled`, `CheckpointInterval`, or `MinPauseBetweenCheckpoints` parameters.", + "enum": [ + "DEFAULT", + "CUSTOM" + ], + "type": "string" + }, + "MinPauseBetweenCheckpoints": { + "description": "Describes the minimum time in milliseconds after a checkpoint operation completes that a new checkpoint operation can start. If a checkpoint operation takes longer than the CheckpointInterval, the application otherwise performs continual checkpoint operations. For more information, see Tuning Checkpointing in the Apache Flink Documentation.", + "format": "int64", + "maximum": 9223372036854775807, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "ConfigurationType" + ], + "type": "object" + }, + "CodeContent": { + "additionalProperties": false, + "description": "Specifies either the application code, or the location of the application code, for a Flink-based Kinesis Data Analytics application.", + "properties": { + "S3ContentLocation": { + "$ref": "#/definitions/S3ContentLocation", + "description": "Information about the Amazon S3 bucket that contains the application code." + }, + "TextContent": { + "description": "The text-format code for a Flink-based Kinesis Data Analytics application.", + "maxLength": 102400, + "minLength": 1, + "type": "string" + }, + "ZipFileContent": { + "description": "The zip-format code for a Flink-based Kinesis Data Analytics application.", + "type": "string" + } + }, + "type": "object" + }, + "CustomArtifactConfiguration": { + "additionalProperties": false, + "description": "The configuration of connectors and user-defined functions.", + "properties": { + "ArtifactType": { + "description": "Set this to either `UDF` or `DEPENDENCY_JAR`. `UDF` stands for user-defined functions. This type of artifact must be in an S3 bucket. A `DEPENDENCY_JAR` can be in either Maven or an S3 bucket.", + "enum": [ + "DEPENDENCY_JAR", + "UDF" + ], + "type": "string" + }, + "MavenReference": { + "$ref": "#/definitions/MavenReference", + "description": "The parameters required to fully specify a Maven reference." + }, + "S3ContentLocation": { + "$ref": "#/definitions/S3ContentLocation", + "description": "The location of the custom artifacts." + } + }, + "required": [ + "ArtifactType" + ], + "type": "object" + }, + "CustomArtifactsConfiguration": { + "description": "A list of CustomArtifactConfiguration objects.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomArtifactConfiguration", + "description": "The configuration of connectors and user-defined functions." + }, + "maxItems": 50, + "type": "array", + "uniqueItems": false + }, + "DeployAsApplicationConfiguration": { + "additionalProperties": false, + "description": "The information required to deploy a Kinesis Data Analytics Studio notebook as an application with durable state.", + "properties": { + "S3ContentLocation": { + "$ref": "#/definitions/S3ContentBaseLocation", + "description": "The description of an Amazon S3 object that contains the Amazon Data Analytics application, including the Amazon Resource Name (ARN) of the S3 bucket, the name of the Amazon S3 object that contains the data, and the version number of the Amazon S3 object that contains the data." + } + }, + "required": [ + "S3ContentLocation" + ], + "type": "object" + }, + "EnvironmentProperties": { + "additionalProperties": false, + "description": "Describes execution properties for a Flink-based Kinesis Data Analytics application.", + "properties": { + "PropertyGroups": { + "description": "Describes the execution property groups.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PropertyGroup" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "FlinkApplicationConfiguration": { + "additionalProperties": false, + "description": "Describes configuration parameters for a Flink-based Kinesis Data Analytics application or a Studio notebook.", + "properties": { + "CheckpointConfiguration": { + "$ref": "#/definitions/CheckpointConfiguration", + "description": "Describes an application's checkpointing configuration. Checkpointing is the process of persisting application state for fault tolerance. For more information, see Checkpoints for Fault Tolerance in the Apache Flink Documentation." + }, + "MonitoringConfiguration": { + "$ref": "#/definitions/MonitoringConfiguration", + "description": "Describes configuration parameters for Amazon CloudWatch logging for an application." + }, + "ParallelismConfiguration": { + "$ref": "#/definitions/ParallelismConfiguration", + "description": "Describes parameters for how an application executes multiple tasks simultaneously." + } + }, + "type": "object" + }, + "FlinkRunConfiguration": { + "additionalProperties": false, + "description": "Describes the starting parameters for a Flink-based Kinesis Data Analytics application.", + "properties": { + "AllowNonRestoredState": { + "description": "When restoring from a snapshot, specifies whether the runtime is allowed to skip a state that cannot be mapped to the new program. Defaults to false. If you update your application without specifying this parameter, AllowNonRestoredState will be set to false, even if it was previously set to true.", + "type": "boolean" + } + }, + "type": "object" + }, + "GlueDataCatalogConfiguration": { + "additionalProperties": false, + "description": "The configuration of the Glue Data Catalog that you use for Apache Flink SQL queries and table API transforms that you write in an application.", + "properties": { + "DatabaseARN": { + "$ref": "#/definitions/Arn", + "description": "The Amazon Resource Name (ARN) of the database." + } + }, + "type": "object" + }, + "Input": { + "additionalProperties": false, + "description": "When you configure the application input for a SQL-based Kinesis Data Analytics application, you specify the streaming source, the in-application stream name that is created, and the mapping between the two.", + "properties": { + "InputParallelism": { + "$ref": "#/definitions/InputParallelism", + "description": "Describes the number of in-application streams to create." + }, + "InputProcessingConfiguration": { + "$ref": "#/definitions/InputProcessingConfiguration", + "description": "The InputProcessingConfiguration for the input. An input processor transforms records as they are received from the stream, before the application's SQL code executes. Currently, the only input processing configuration available is InputLambdaProcessor." + }, + "InputSchema": { + "$ref": "#/definitions/InputSchema", + "description": "Describes the format of the data in the streaming source, and how each data element maps to corresponding columns in the in-application stream that is being created." + }, + "KinesisFirehoseInput": { + "$ref": "#/definitions/KinesisFirehoseInput", + "description": "If the streaming source is an Amazon Kinesis Data Firehose delivery stream, identifies the delivery stream's ARN." + }, + "KinesisStreamsInput": { + "$ref": "#/definitions/KinesisStreamsInput", + "description": "If the streaming source is an Amazon Kinesis data stream, identifies the stream's Amazon Resource Name (ARN)." + }, + "NamePrefix": { + "description": "The name prefix to use when creating an in-application stream. Suppose that you specify a prefix `\"MyInApplicationStream\"`. Kinesis Data Analytics then creates one or more (as per the InputParallelism count you specified) in-application streams with the names `\"MyInApplicationStream_001\"`, `\"MyInApplicationStream_002\"`, and so on.", + "maxLength": 32, + "minLength": 1, + "pattern": "^[^-\\s<>&]*$", + "type": "string" + } + }, + "required": [ + "NamePrefix", + "InputSchema" + ], + "type": "object" + }, + "InputLambdaProcessor": { + "additionalProperties": false, + "description": "An object that contains the Amazon Resource Name (ARN) of the Amazon Lambda function that is used to preprocess records in the stream in a SQL-based Kinesis Data Analytics application.", + "properties": { + "ResourceARN": { + "$ref": "#/definitions/Arn", + "description": "The ARN of the Amazon Lambda function that operates on records in the stream." + } + }, + "required": [ + "ResourceARN" + ], + "type": "object" + }, + "InputParallelism": { + "additionalProperties": false, + "description": "For a SQL-based Kinesis Data Analytics application, describes the number of in-application streams to create for a given streaming source.", + "properties": { + "Count": { + "description": "The number of in-application streams to create.", + "maximum": 64, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "InputProcessingConfiguration": { + "additionalProperties": false, + "description": "For an SQL-based Amazon Kinesis Data Analytics application, describes a processor that is used to preprocess the records in the stream before being processed by your application code. Currently, the only input processor available is Amazon Lambda.", + "properties": { + "InputLambdaProcessor": { + "$ref": "#/definitions/InputLambdaProcessor", + "description": "The InputLambdaProcessor that is used to preprocess the records in the stream before being processed by your application code." + } + }, + "type": "object" + }, + "InputSchema": { + "additionalProperties": false, + "description": "For a SQL-based Kinesis Data Analytics application, describes the format of the data in the streaming source, and how each data element maps to corresponding columns created in the in-application stream.", + "properties": { + "RecordColumns": { + "description": "A list of `RecordColumn` objects.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RecordColumn" + }, + "maxItems": 1000, + "type": "array", + "uniqueItems": false + }, + "RecordEncoding": { + "description": "Specifies the encoding of the records in the streaming source. For example, UTF-8.", + "enum": [ + "UTF-8" + ], + "type": "string" + }, + "RecordFormat": { + "$ref": "#/definitions/RecordFormat", + "description": "Specifies the format of the records on the streaming source." + } + }, + "required": [ + "RecordColumns", + "RecordFormat" + ], + "type": "object" + }, + "JSONMappingParameters": { + "additionalProperties": false, + "description": "For a SQL-based Kinesis Data Analytics application, provides additional mapping information when JSON is the record format on the streaming source.", + "properties": { + "RecordRowPath": { + "description": "The path to the top-level parent that contains the records.", + "maxLength": 65535, + "minLength": 1, + "pattern": "^(?=^\\$)(?=^\\S+$).*$", + "type": "string" + } + }, + "required": [ + "RecordRowPath" + ], + "type": "object" + }, + "KinesisFirehoseInput": { + "additionalProperties": false, + "description": "For a SQL-based Kinesis Data Analytics application, identifies a Kinesis Data Firehose delivery stream as the streaming source. You provide the delivery stream's Amazon Resource Name (ARN).", + "properties": { + "ResourceARN": { + "$ref": "#/definitions/Arn", + "description": "The Amazon Resource Name (ARN) of the delivery stream." + } + }, + "required": [ + "ResourceARN" + ], + "type": "object" + }, + "KinesisStreamsInput": { + "additionalProperties": false, + "description": "Identifies a Kinesis data stream as the streaming source. You provide the stream's Amazon Resource Name (ARN).", + "properties": { + "ResourceARN": { + "$ref": "#/definitions/Arn", + "description": "The ARN of the input Kinesis data stream to read." + } + }, + "required": [ + "ResourceARN" + ], + "type": "object" + }, + "MappingParameters": { + "additionalProperties": false, + "description": "When you configure a SQL-based Kinesis Data Analytics application's input at the time of creating or updating an application, provides additional mapping information specific to the record format (such as JSON, CSV, or record fields delimited by some delimiter) on the streaming source.", + "properties": { + "CSVMappingParameters": { + "$ref": "#/definitions/CSVMappingParameters", + "description": "Provides additional mapping information when the record format uses delimiters (for example, CSV)." + }, + "JSONMappingParameters": { + "$ref": "#/definitions/JSONMappingParameters", + "description": "Provides additional mapping information when JSON is the record format on the streaming source." + } + }, + "type": "object" + }, + "MavenReference": { + "additionalProperties": false, + "description": "The information required to specify a Maven reference. You can use Maven references to specify dependency JAR files.", + "properties": { + "ArtifactId": { + "description": "The artifact ID of the Maven reference.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.-]+$", + "type": "string" + }, + "GroupId": { + "description": "The group ID of the Maven reference.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.-]+$", + "type": "string" + }, + "Version": { + "description": "The version of the Maven reference.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.-]+$", + "type": "string" + } + }, + "required": [ + "ArtifactId", + "GroupId", + "Version" + ], + "type": "object" + }, + "MonitoringConfiguration": { + "additionalProperties": false, + "description": "Describes configuration parameters for Amazon CloudWatch logging for a Java-based Kinesis Data Analytics application. For more information about CloudWatch logging, see Monitoring.", + "properties": { + "ConfigurationType": { + "description": "Describes whether to use the default CloudWatch logging configuration for an application. You must set this property to CUSTOM in order to set the LogLevel or MetricsLevel parameters.", + "enum": [ + "DEFAULT", + "CUSTOM" + ], + "type": "string" + }, + "LogLevel": { + "description": "Describes the verbosity of the CloudWatch Logs for an application.", + "enum": [ + "DEBUG", + "INFO", + "WARN", + "ERROR" + ], + "type": "string" + }, + "MetricsLevel": { + "description": "Describes the granularity of the CloudWatch Logs for an application. The Parallelism level is not recommended for applications with a Parallelism over 64 due to excessive costs.", + "enum": [ + "APPLICATION", + "OPERATOR", + "PARALLELISM", + "TASK" + ], + "type": "string" + } + }, + "required": [ + "ConfigurationType" + ], + "type": "object" + }, + "ParallelismConfiguration": { + "additionalProperties": false, + "description": "Describes parameters for how a Flink-based Kinesis Data Analytics application executes multiple tasks simultaneously. For more information about parallelism, see Parallel Execution in the Apache Flink Documentation", + "properties": { + "AutoScalingEnabled": { + "description": "Describes whether the Kinesis Data Analytics service can increase the parallelism of the application in response to increased throughput.", + "type": "boolean" + }, + "ConfigurationType": { + "description": "Describes whether the application uses the default parallelism for the Kinesis Data Analytics service. You must set this property to `CUSTOM` in order to change your application's `AutoScalingEnabled`, `Parallelism`, or `ParallelismPerKPU` properties.", + "enum": [ + "CUSTOM", + "DEFAULT" + ], + "type": "string" + }, + "Parallelism": { + "description": "Describes the initial number of parallel tasks that a Java-based Kinesis Data Analytics application can perform. The Kinesis Data Analytics service can increase this number automatically if ParallelismConfiguration:AutoScalingEnabled is set to true.", + "minimum": 1, + "type": "integer" + }, + "ParallelismPerKPU": { + "description": "Describes the number of parallel tasks that a Java-based Kinesis Data Analytics application can perform per Kinesis Processing Unit (KPU) used by the application. For more information about KPUs, see Amazon Kinesis Data Analytics Pricing.", + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "ConfigurationType" + ], + "type": "object" + }, + "PropertyGroup": { + "additionalProperties": false, + "description": "Property key-value pairs passed into an application.", + "properties": { + "PropertyGroupId": { + "description": "Describes the key of an application execution property key-value pair.", + "maxLength": 50, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.-]+$", + "type": "string" + }, + "PropertyMap": { + "additionalProperties": false, + "description": "Describes the value of an application execution property key-value pair.", + "maxProperties": 50, + "patternProperties": { + "^.{1,2048}$": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "RecordColumn": { + "additionalProperties": false, + "description": "For a SQL-based Kinesis Data Analytics application, describes the mapping of each data element in the streaming source to the corresponding column in the in-application stream.\nAlso used to describe the format of the reference data source.", + "properties": { + "Mapping": { + "description": "A reference to the data element in the streaming input or the reference data source.", + "maxLength": 65535, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "The name of the column that is created in the in-application input stream or reference table.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[^-\\s<>&]*$", + "type": "string" + }, + "SqlType": { + "description": "The type of column created in the in-application input stream or reference table.", + "maxLength": 100, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "SqlType", + "Name" + ], + "type": "object" + }, + "RecordFormat": { + "additionalProperties": false, + "description": "For a SQL-based Kinesis Data Analytics application, describes the record format and relevant mapping information that should be applied to schematize the records on the stream.", + "properties": { + "MappingParameters": { + "$ref": "#/definitions/MappingParameters", + "description": "When you configure application input at the time of creating or updating an application, provides additional mapping information specific to the record format (such as JSON, CSV, or record fields delimited by some delimiter) on the streaming source." + }, + "RecordFormatType": { + "description": "The type of record format.", + "enum": [ + "CSV", + "JSON" + ], + "type": "string" + } + }, + "required": [ + "RecordFormatType" + ], + "type": "object" + }, + "RunConfiguration": { + "additionalProperties": false, + "description": "Identifies the run configuration (start parameters) of a Kinesis Data Analytics application. This section is evaluated only on stack updates for applications in running RUNNING state and has no effect during manual application start.", + "properties": { + "ApplicationRestoreConfiguration": { + "$ref": "#/definitions/ApplicationRestoreConfiguration", + "description": "Describes the restore behavior of a restarting application." + }, + "FlinkRunConfiguration": { + "$ref": "#/definitions/FlinkRunConfiguration", + "description": "Describes the starting parameters for a Flink-based Kinesis Data Analytics application." + } + }, + "type": "object" + }, + "S3ContentBaseLocation": { + "additionalProperties": false, + "description": "The base location of the Amazon Data Analytics application.", + "properties": { + "BasePath": { + "description": "The base path for the S3 bucket.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[a-zA-Z0-9/!-_.*'()]+$", + "type": "string" + }, + "BucketARN": { + "$ref": "#/definitions/Arn", + "description": "The Amazon Resource Name (ARN) of the S3 bucket." + } + }, + "required": [ + "BucketARN" + ], + "type": "object" + }, + "S3ContentLocation": { + "additionalProperties": false, + "description": "The location of an application or a custom artifact.", + "properties": { + "BucketARN": { + "$ref": "#/definitions/Arn", + "description": "The Amazon Resource Name (ARN) for the S3 bucket containing the application code." + }, + "FileKey": { + "description": "The file key for the object containing the application code.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "ObjectVersion": { + "description": "The version of the object containing the application code.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "BucketARN", + "FileKey" + ], + "type": "object" + }, + "SqlApplicationConfiguration": { + "additionalProperties": false, + "description": "Describes the inputs, outputs, and reference data sources for a SQL-based Kinesis Data Analytics application.", + "properties": { + "Inputs": { + "description": "The array of Input objects describing the input streams used by the application.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Input" + }, + "maxItems": 1, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair that identifies an application.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that's 1 to 128 Unicode characters in length and can't be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that's 0 to 256 characters in length.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VpcConfiguration": { + "additionalProperties": false, + "description": "Describes the parameters of a VPC used by the application.", + "properties": { + "SecurityGroupIds": { + "description": "The array of SecurityGroup IDs used by the VPC configuration.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "SubnetIds": { + "description": "The array of Subnet IDs used by the VPC configuration.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "SecurityGroupIds", + "SubnetIds" + ], + "type": "object" + }, + "VpcConfigurations": { + "description": "The array of descriptions of VPC configurations available to the application.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VpcConfiguration", + "description": "Describes the parameters of a VPC used by the application." + }, + "maxItems": 1, + "type": "array", + "uniqueItems": false + }, + "ZeppelinApplicationConfiguration": { + "additionalProperties": false, + "description": "The configuration of a Kinesis Data Analytics Studio notebook.", + "properties": { + "CatalogConfiguration": { + "$ref": "#/definitions/CatalogConfiguration", + "description": "The Amazon Glue Data Catalog that you use in queries in a Kinesis Data Analytics Studio notebook." + }, + "CustomArtifactsConfiguration": { + "$ref": "#/definitions/CustomArtifactsConfiguration", + "description": "A list of CustomArtifactConfiguration objects." + }, + "DeployAsApplicationConfiguration": { + "$ref": "#/definitions/DeployAsApplicationConfiguration", + "description": "The information required to deploy a Kinesis Data Analytics Studio notebook as an application with durable state." + }, + "MonitoringConfiguration": { + "$ref": "#/definitions/ZeppelinMonitoringConfiguration", + "description": "The monitoring configuration of a Kinesis Data Analytics Studio notebook." + } + }, + "type": "object" + }, + "ZeppelinMonitoringConfiguration": { + "additionalProperties": false, + "description": "Describes configuration parameters for Amazon CloudWatch logging for a Kinesis Data Analytics Studio notebook. For more information about CloudWatch logging, see Monitoring.", + "properties": { + "LogLevel": { + "description": "The verbosity of the CloudWatch Logs for an application. You can set it to `INFO`, `WARN`, `ERROR`, or `DEBUG`.", + "enum": [ + "DEBUG", + "INFO", + "WARN", + "ERROR" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Creates an Amazon Kinesis Data Analytics application. For information about creating a Kinesis Data Analytics application, see [Creating an Application](https://docs.aws.amazon.com/kinesisanalytics/latest/java/getting-started.html).", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "kinesisanalytics:CreateApplication", + "kinesisanalytics:DescribeApplication", + "kinesisanalytics:ListTagsForResource", + "kinesisanalytics:UpdateApplicationMaintenanceConfiguration" + ] + }, + "delete": { + "permissions": [ + "kinesisanalytics:DescribeApplication", + "kinesisanalytics:DeleteApplication" + ] + }, + "list": { + "permissions": [ + "kinesisanalytics:ListApplications" + ] + }, + "read": { + "permissions": [ + "kinesisanalytics:DescribeApplication", + "kinesisanalytics:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "kinesisanalytics:UpdateApplication", + "kinesisanalytics:DescribeApplication", + "kinesisanalytics:TagResource", + "kinesisanalytics:UntagResource", + "kinesisanalytics:AddApplicationVpcConfiguration", + "kinesisanalytics:DeleteApplicationVpcConfiguration", + "kinesisanalytics:UpdateApplicationMaintenanceConfiguration", + "kinesisanalytics:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationName" + ], + "properties": { + "ApplicationConfiguration": { + "$ref": "#/definitions/ApplicationConfiguration", + "description": "Use this parameter to configure the application." + }, + "ApplicationDescription": { + "default": "", + "description": "The description of the application.", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "ApplicationMaintenanceConfiguration": { + "$ref": "#/definitions/ApplicationMaintenanceConfiguration", + "description": "Used to configure start of maintenance window." + }, + "ApplicationMode": { + "description": "To create a Kinesis Data Analytics Studio notebook, you must set the mode to `INTERACTIVE`. However, for a Kinesis Data Analytics for Apache Flink application, the mode is optional.", + "enum": [ + "INTERACTIVE", + "STREAMING" + ], + "type": "string" + }, + "ApplicationName": { + "description": "The name of the application.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.-]+$", + "type": "string" + }, + "RunConfiguration": { + "$ref": "#/definitions/RunConfiguration", + "description": "Specifies run configuration (start parameters) of a Kinesis Data Analytics application. Evaluated on update for RUNNING applications an only." + }, + "RuntimeEnvironment": { + "description": "The runtime environment for the application.", + "type": "string" + }, + "ServiceExecutionRole": { + "$ref": "#/definitions/Arn", + "description": "Specifies the IAM role that the application uses to access external resources." + }, + "Tags": { + "description": "A list of one or more tags to assign to the application. A tag is a key-value pair that identifies an application. Note that the maximum number of application tags includes system tags. The maximum number of user-defined application tags is 50.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "RuntimeEnvironment", + "ServiceExecutionRole" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kinesisanalyticsv2.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "kinesisanalytics:TagResource", + "kinesisanalytics:UntagResource", + "kinesisanalytics:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::KinesisAnalyticsV2::Application", + "writeOnlyProperties": [ + "/properties/RunConfiguration", + "/properties/ApplicationConfiguration/EnvironmentProperties", + "/properties/ApplicationConfiguration/ApplicationCodeConfiguration/CodeContent/ZipFileContent" + ] +} diff --git a/src/schema/aws-kinesisanalyticsv2-applicationcloudwatchloggingoption.json b/src/schema/aws-kinesisanalyticsv2-applicationcloudwatchloggingoption.json index e0fdb7fd..fddb8d04 100644 --- a/src/schema/aws-kinesisanalyticsv2-applicationcloudwatchloggingoption.json +++ b/src/schema/aws-kinesisanalyticsv2-applicationcloudwatchloggingoption.json @@ -1,43 +1,43 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationName" - ], - "definitions": { - "CloudWatchLoggingOption": { - "additionalProperties": false, - "properties": { - "LogStreamARN": { - "type": "string" - } - }, - "required": [ - "LogStreamARN" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::KinesisAnalyticsV2::ApplicationCloudWatchLoggingOption", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationName": { - "type": "string" - }, - "CloudWatchLoggingOption": { - "$ref": "#/definitions/CloudWatchLoggingOption" - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "CloudWatchLoggingOption", - "ApplicationName" - ], - "typeName": "AWS::KinesisAnalyticsV2::ApplicationCloudWatchLoggingOption" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationName" + ], + "definitions": { + "CloudWatchLoggingOption": { + "additionalProperties": false, + "properties": { + "LogStreamARN": { + "type": "string" + } + }, + "required": [ + "LogStreamARN" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::KinesisAnalyticsV2::ApplicationCloudWatchLoggingOption", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationName": { + "type": "string" + }, + "CloudWatchLoggingOption": { + "$ref": "#/definitions/CloudWatchLoggingOption" + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "CloudWatchLoggingOption", + "ApplicationName" + ], + "typeName": "AWS::KinesisAnalyticsV2::ApplicationCloudWatchLoggingOption" +} diff --git a/src/schema/aws-kinesisanalyticsv2-applicationoutput.json b/src/schema/aws-kinesisanalyticsv2-applicationoutput.json index 157f00cb..907e4663 100644 --- a/src/schema/aws-kinesisanalyticsv2-applicationoutput.json +++ b/src/schema/aws-kinesisanalyticsv2-applicationoutput.json @@ -1,100 +1,100 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationName" - ], - "definitions": { - "DestinationSchema": { - "additionalProperties": false, - "properties": { - "RecordFormatType": { - "type": "string" - } - }, - "type": "object" - }, - "KinesisFirehoseOutput": { - "additionalProperties": false, - "properties": { - "ResourceARN": { - "type": "string" - } - }, - "required": [ - "ResourceARN" - ], - "type": "object" - }, - "KinesisStreamsOutput": { - "additionalProperties": false, - "properties": { - "ResourceARN": { - "type": "string" - } - }, - "required": [ - "ResourceARN" - ], - "type": "object" - }, - "LambdaOutput": { - "additionalProperties": false, - "properties": { - "ResourceARN": { - "type": "string" - } - }, - "required": [ - "ResourceARN" - ], - "type": "object" - }, - "Output": { - "additionalProperties": false, - "properties": { - "DestinationSchema": { - "$ref": "#/definitions/DestinationSchema" - }, - "KinesisFirehoseOutput": { - "$ref": "#/definitions/KinesisFirehoseOutput" - }, - "KinesisStreamsOutput": { - "$ref": "#/definitions/KinesisStreamsOutput" - }, - "LambdaOutput": { - "$ref": "#/definitions/LambdaOutput" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "DestinationSchema" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::KinesisAnalyticsV2::ApplicationOutput", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Output": { - "$ref": "#/definitions/Output" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ApplicationName", - "Output" - ], - "typeName": "AWS::KinesisAnalyticsV2::ApplicationOutput" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationName" + ], + "definitions": { + "DestinationSchema": { + "additionalProperties": false, + "properties": { + "RecordFormatType": { + "type": "string" + } + }, + "type": "object" + }, + "KinesisFirehoseOutput": { + "additionalProperties": false, + "properties": { + "ResourceARN": { + "type": "string" + } + }, + "required": [ + "ResourceARN" + ], + "type": "object" + }, + "KinesisStreamsOutput": { + "additionalProperties": false, + "properties": { + "ResourceARN": { + "type": "string" + } + }, + "required": [ + "ResourceARN" + ], + "type": "object" + }, + "LambdaOutput": { + "additionalProperties": false, + "properties": { + "ResourceARN": { + "type": "string" + } + }, + "required": [ + "ResourceARN" + ], + "type": "object" + }, + "Output": { + "additionalProperties": false, + "properties": { + "DestinationSchema": { + "$ref": "#/definitions/DestinationSchema" + }, + "KinesisFirehoseOutput": { + "$ref": "#/definitions/KinesisFirehoseOutput" + }, + "KinesisStreamsOutput": { + "$ref": "#/definitions/KinesisStreamsOutput" + }, + "LambdaOutput": { + "$ref": "#/definitions/LambdaOutput" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "DestinationSchema" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::KinesisAnalyticsV2::ApplicationOutput", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Output": { + "$ref": "#/definitions/Output" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationName", + "Output" + ], + "typeName": "AWS::KinesisAnalyticsV2::ApplicationOutput" +} diff --git a/src/schema/aws-kinesisanalyticsv2-applicationreferencedatasource.json b/src/schema/aws-kinesisanalyticsv2-applicationreferencedatasource.json index b75330f5..a38fc2f2 100644 --- a/src/schema/aws-kinesisanalyticsv2-applicationreferencedatasource.json +++ b/src/schema/aws-kinesisanalyticsv2-applicationreferencedatasource.json @@ -1,162 +1,162 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationName" - ], - "definitions": { - "CSVMappingParameters": { - "additionalProperties": false, - "properties": { - "RecordColumnDelimiter": { - "type": "string" - }, - "RecordRowDelimiter": { - "type": "string" - } - }, - "required": [ - "RecordColumnDelimiter", - "RecordRowDelimiter" - ], - "type": "object" - }, - "JSONMappingParameters": { - "additionalProperties": false, - "properties": { - "RecordRowPath": { - "type": "string" - } - }, - "required": [ - "RecordRowPath" - ], - "type": "object" - }, - "MappingParameters": { - "additionalProperties": false, - "properties": { - "CSVMappingParameters": { - "$ref": "#/definitions/CSVMappingParameters" - }, - "JSONMappingParameters": { - "$ref": "#/definitions/JSONMappingParameters" - } - }, - "type": "object" - }, - "RecordColumn": { - "additionalProperties": false, - "properties": { - "Mapping": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "SqlType": { - "type": "string" - } - }, - "required": [ - "SqlType", - "Name" - ], - "type": "object" - }, - "RecordFormat": { - "additionalProperties": false, - "properties": { - "MappingParameters": { - "$ref": "#/definitions/MappingParameters" - }, - "RecordFormatType": { - "type": "string" - } - }, - "required": [ - "RecordFormatType" - ], - "type": "object" - }, - "ReferenceDataSource": { - "additionalProperties": false, - "properties": { - "ReferenceSchema": { - "$ref": "#/definitions/ReferenceSchema" - }, - "S3ReferenceDataSource": { - "$ref": "#/definitions/S3ReferenceDataSource" - }, - "TableName": { - "type": "string" - } - }, - "required": [ - "ReferenceSchema" - ], - "type": "object" - }, - "ReferenceSchema": { - "additionalProperties": false, - "properties": { - "RecordColumns": { - "items": { - "$ref": "#/definitions/RecordColumn" - }, - "type": "array", - "uniqueItems": false - }, - "RecordEncoding": { - "type": "string" - }, - "RecordFormat": { - "$ref": "#/definitions/RecordFormat" - } - }, - "required": [ - "RecordColumns", - "RecordFormat" - ], - "type": "object" - }, - "S3ReferenceDataSource": { - "additionalProperties": false, - "properties": { - "BucketARN": { - "type": "string" - }, - "FileKey": { - "type": "string" - } - }, - "required": [ - "BucketARN", - "FileKey" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::KinesisAnalyticsV2::ApplicationReferenceDataSource", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ReferenceDataSource": { - "$ref": "#/definitions/ReferenceDataSource" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ReferenceDataSource", - "ApplicationName" - ], - "typeName": "AWS::KinesisAnalyticsV2::ApplicationReferenceDataSource" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationName" + ], + "definitions": { + "CSVMappingParameters": { + "additionalProperties": false, + "properties": { + "RecordColumnDelimiter": { + "type": "string" + }, + "RecordRowDelimiter": { + "type": "string" + } + }, + "required": [ + "RecordColumnDelimiter", + "RecordRowDelimiter" + ], + "type": "object" + }, + "JSONMappingParameters": { + "additionalProperties": false, + "properties": { + "RecordRowPath": { + "type": "string" + } + }, + "required": [ + "RecordRowPath" + ], + "type": "object" + }, + "MappingParameters": { + "additionalProperties": false, + "properties": { + "CSVMappingParameters": { + "$ref": "#/definitions/CSVMappingParameters" + }, + "JSONMappingParameters": { + "$ref": "#/definitions/JSONMappingParameters" + } + }, + "type": "object" + }, + "RecordColumn": { + "additionalProperties": false, + "properties": { + "Mapping": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "SqlType": { + "type": "string" + } + }, + "required": [ + "SqlType", + "Name" + ], + "type": "object" + }, + "RecordFormat": { + "additionalProperties": false, + "properties": { + "MappingParameters": { + "$ref": "#/definitions/MappingParameters" + }, + "RecordFormatType": { + "type": "string" + } + }, + "required": [ + "RecordFormatType" + ], + "type": "object" + }, + "ReferenceDataSource": { + "additionalProperties": false, + "properties": { + "ReferenceSchema": { + "$ref": "#/definitions/ReferenceSchema" + }, + "S3ReferenceDataSource": { + "$ref": "#/definitions/S3ReferenceDataSource" + }, + "TableName": { + "type": "string" + } + }, + "required": [ + "ReferenceSchema" + ], + "type": "object" + }, + "ReferenceSchema": { + "additionalProperties": false, + "properties": { + "RecordColumns": { + "items": { + "$ref": "#/definitions/RecordColumn" + }, + "type": "array", + "uniqueItems": false + }, + "RecordEncoding": { + "type": "string" + }, + "RecordFormat": { + "$ref": "#/definitions/RecordFormat" + } + }, + "required": [ + "RecordColumns", + "RecordFormat" + ], + "type": "object" + }, + "S3ReferenceDataSource": { + "additionalProperties": false, + "properties": { + "BucketARN": { + "type": "string" + }, + "FileKey": { + "type": "string" + } + }, + "required": [ + "BucketARN", + "FileKey" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::KinesisAnalyticsV2::ApplicationReferenceDataSource", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "ReferenceDataSource": { + "$ref": "#/definitions/ReferenceDataSource" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ReferenceDataSource", + "ApplicationName" + ], + "typeName": "AWS::KinesisAnalyticsV2::ApplicationReferenceDataSource" +} diff --git a/src/schema/aws-kinesisfirehose-deliverystream.json b/src/schema/aws-kinesisfirehose-deliverystream.json index 77321cc2..2e814958 100644 --- a/src/schema/aws-kinesisfirehose-deliverystream.json +++ b/src/schema/aws-kinesisfirehose-deliverystream.json @@ -1,1919 +1,1937 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DeliveryStreamName", - "/properties/DeliveryStreamType", - "/properties/ElasticsearchDestinationConfiguration/VpcConfiguration", - "/properties/AmazonopensearchserviceDestinationConfiguration/VpcConfiguration", - "/properties/AmazonOpenSearchServerlessDestinationConfiguration/VpcConfiguration", - "/properties/DatabaseSourceConfiguration", - "/properties/KinesisStreamSourceConfiguration", - "/properties/MSKSourceConfiguration", - "/properties/IcebergDestinationConfiguration", - "/properties/SnowflakeDestinationConfiguration/SnowflakeVpcConfiguration" - ], - "definitions": { - "AmazonOpenSearchServerlessBufferingHints": { - "additionalProperties": false, - "properties": { - "IntervalInSeconds": { - "type": "integer" - }, - "SizeInMBs": { - "type": "integer" - } - }, - "type": "object" - }, - "AmazonOpenSearchServerlessDestinationConfiguration": { - "additionalProperties": false, - "properties": { - "BufferingHints": { - "$ref": "#/definitions/AmazonOpenSearchServerlessBufferingHints" - }, - "CloudWatchLoggingOptions": { - "$ref": "#/definitions/CloudWatchLoggingOptions" - }, - "CollectionEndpoint": { - "maxLength": 512, - "minLength": 1, - "pattern": "https:.*", - "relationshipRef": { - "propertyPath": "/properties/CollectionEndpoint", - "typeName": "AWS::OpenSearchServerless::Collection" - }, - "type": "string" - }, - "IndexName": { - "maxLength": 80, - "minLength": 1, - "type": "string" - }, - "ProcessingConfiguration": { - "$ref": "#/definitions/ProcessingConfiguration" - }, - "RetryOptions": { - "$ref": "#/definitions/AmazonOpenSearchServerlessRetryOptions" - }, - "RoleARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::Role" - }, - "type": "string" - }, - "S3BackupMode": { - "enum": [ - "FailedDocumentsOnly", - "AllDocuments" - ], - "type": "string" - }, - "S3Configuration": { - "$ref": "#/definitions/S3DestinationConfiguration" - }, - "VpcConfiguration": { - "$ref": "#/definitions/VpcConfiguration" - } - }, - "required": [ - "IndexName", - "S3Configuration", - "RoleARN" - ], - "type": "object" - }, - "AmazonOpenSearchServerlessRetryOptions": { - "additionalProperties": false, - "properties": { - "DurationInSeconds": { - "type": "integer" - } - }, - "type": "object" - }, - "AmazonopensearchserviceBufferingHints": { - "additionalProperties": false, - "properties": { - "IntervalInSeconds": { - "type": "integer" - }, - "SizeInMBs": { - "type": "integer" - } - }, - "type": "object" - }, - "AmazonopensearchserviceDestinationConfiguration": { - "additionalProperties": false, - "properties": { - "BufferingHints": { - "$ref": "#/definitions/AmazonopensearchserviceBufferingHints" - }, - "CloudWatchLoggingOptions": { - "$ref": "#/definitions/CloudWatchLoggingOptions" - }, - "ClusterEndpoint": { - "maxLength": 512, - "minLength": 1, - "pattern": "https:.*", - "type": "string" - }, - "DocumentIdOptions": { - "$ref": "#/definitions/DocumentIdOptions" - }, - "DomainARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "type": "string" - }, - "IndexName": { - "maxLength": 80, - "minLength": 1, - "type": "string" - }, - "IndexRotationPeriod": { - "enum": [ - "NoRotation", - "OneHour", - "OneDay", - "OneWeek", - "OneMonth" - ], - "type": "string" - }, - "ProcessingConfiguration": { - "$ref": "#/definitions/ProcessingConfiguration" - }, - "RetryOptions": { - "$ref": "#/definitions/AmazonopensearchserviceRetryOptions" - }, - "RoleARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::Role" - }, - "type": "string" - }, - "S3BackupMode": { - "enum": [ - "FailedDocumentsOnly", - "AllDocuments" - ], - "type": "string" - }, - "S3Configuration": { - "$ref": "#/definitions/S3DestinationConfiguration" - }, - "TypeName": { - "maxLength": 100, - "minLength": 0, - "type": "string" - }, - "VpcConfiguration": { - "$ref": "#/definitions/VpcConfiguration" - } - }, - "required": [ - "IndexName", - "S3Configuration", - "RoleARN" - ], - "type": "object" - }, - "AmazonopensearchserviceRetryOptions": { - "additionalProperties": false, - "properties": { - "DurationInSeconds": { - "type": "integer" - } - }, - "type": "object" - }, - "AuthenticationConfiguration": { - "additionalProperties": false, - "properties": { - "Connectivity": { - "enum": [ - "PUBLIC", - "PRIVATE" - ], - "type": "string" - }, - "RoleARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::Role" - }, - "type": "string" - } - }, - "required": [ - "RoleARN", - "Connectivity" - ], - "type": "object" - }, - "BufferingHints": { - "additionalProperties": false, - "properties": { - "IntervalInSeconds": { - "type": "integer" - }, - "SizeInMBs": { - "type": "integer" - } - }, - "type": "object" - }, - "CatalogConfiguration": { - "additionalProperties": false, - "properties": { - "CatalogArn": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "type": "string" - } - }, - "type": "object" - }, - "CloudWatchLoggingOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "LogGroupName": { - "relationshipRef": { - "propertyPath": "/properties/LogGroupName", - "typeName": "AWS::Logs::LogGroup" - }, - "type": "string" - }, - "LogStreamName": { - "relationshipRef": { - "propertyPath": "/properties/LogStreamName", - "typeName": "AWS::Logs::LogStream" - }, - "type": "string" - } - }, - "type": "object" - }, - "CopyCommand": { - "additionalProperties": false, - "properties": { - "CopyOptions": { - "maxLength": 204800, - "minLength": 0, - "type": "string" - }, - "DataTableColumns": { - "maxLength": 204800, - "minLength": 0, - "type": "string" - }, - "DataTableName": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DataTableName" - ], - "type": "object" - }, - "DataFormatConversionConfiguration": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "InputFormatConfiguration": { - "$ref": "#/definitions/InputFormatConfiguration" - }, - "OutputFormatConfiguration": { - "$ref": "#/definitions/OutputFormatConfiguration" - }, - "SchemaConfiguration": { - "$ref": "#/definitions/SchemaConfiguration" - } - }, - "type": "object" - }, - "DatabaseColumnName": { - "maxLength": 194, - "minLength": 1, - "pattern": "[\\u0001-\\uFFFF]*", - "type": "string" - }, - "DatabaseColumns": { - "additionalProperties": false, - "properties": { - "Exclude": { - "items": { - "$ref": "#/definitions/DatabaseColumnName" - }, - "type": "array" - }, - "Include": { - "items": { - "$ref": "#/definitions/DatabaseColumnName" - }, - "type": "array" - } - }, - "type": "object" - }, - "DatabaseName": { - "maxLength": 64, - "minLength": 1, - "pattern": "[\\u0001-\\uFFFF]*", - "type": "string" - }, - "DatabaseSourceAuthenticationConfiguration": { - "additionalProperties": false, - "properties": { - "SecretsManagerConfiguration": { - "$ref": "#/definitions/SecretsManagerConfiguration" - } - }, - "required": [ - "SecretsManagerConfiguration" - ], - "type": "object" - }, - "DatabaseSourceConfiguration": { - "additionalProperties": false, - "properties": { - "Columns": { - "$ref": "#/definitions/DatabaseColumns" - }, - "DatabaseSourceAuthenticationConfiguration": { - "$ref": "#/definitions/DatabaseSourceAuthenticationConfiguration" - }, - "DatabaseSourceVPCConfiguration": { - "$ref": "#/definitions/DatabaseSourceVPCConfiguration" - }, - "Databases": { - "$ref": "#/definitions/Databases" - }, - "Digest": { - "maxLength": 512, - "minLength": 1, - "pattern": ".*", - "type": "string" - }, - "Endpoint": { - "maxLength": 255, - "minLength": 1, - "pattern": "^(?!\\s*$).+", - "type": "string" - }, - "Port": { - "maximum": 65535, - "minimum": 0, - "type": "integer" - }, - "PublicCertificate": { - "maxLength": 4096, - "minLength": 1, - "pattern": ".*", - "type": "string" - }, - "SSLMode": { - "enum": [ - "Disabled", - "Enabled" - ], - "type": "string" - }, - "SnapshotWatermarkTable": { - "$ref": "#/definitions/DatabaseTableName" - }, - "SurrogateKeys": { - "items": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^\\S+$", - "type": "string" - }, - "type": "array" - }, - "Tables": { - "$ref": "#/definitions/DatabaseTables" - }, - "Type": { - "enum": [ - "MySQL", - "PostgreSQL" - ], - "type": "string" - } - }, - "required": [ - "Type", - "Endpoint", - "Port", - "Databases", - "Tables", - "SnapshotWatermarkTable", - "DatabaseSourceAuthenticationConfiguration", - "DatabaseSourceVPCConfiguration" - ], - "type": "object" - }, - "DatabaseSourceVPCConfiguration": { - "additionalProperties": false, - "properties": { - "VpcEndpointServiceName": { - "$ref": "#/definitions/VpcEndpointServiceName" - } - }, - "required": [ - "VpcEndpointServiceName" - ], - "type": "object" - }, - "DatabaseTableName": { - "maxLength": 129, - "minLength": 1, - "pattern": "[\\u0001-\\uFFFF]*", - "type": "string" - }, - "DatabaseTables": { - "additionalProperties": false, - "properties": { - "Exclude": { - "items": { - "$ref": "#/definitions/DatabaseTableName" - }, - "type": "array" - }, - "Include": { - "items": { - "$ref": "#/definitions/DatabaseTableName" - }, - "type": "array" - } - }, - "type": "object" - }, - "Databases": { - "additionalProperties": false, - "properties": { - "Exclude": { - "items": { - "$ref": "#/definitions/DatabaseName" - }, - "type": "array" - }, - "Include": { - "items": { - "$ref": "#/definitions/DatabaseName" - }, - "type": "array" - } - }, - "type": "object" - }, - "DeliveryStreamEncryptionConfigurationInput": { - "additionalProperties": false, - "properties": { - "KeyARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::KMS::Key" - }, - "type": "string" - }, - "KeyType": { - "enum": [ - "AWS_OWNED_CMK", - "CUSTOMER_MANAGED_CMK" - ], - "type": "string" - } - }, - "required": [ - "KeyType" - ], - "type": "object" - }, - "Deserializer": { - "additionalProperties": false, - "properties": { - "HiveJsonSerDe": { - "$ref": "#/definitions/HiveJsonSerDe" - }, - "OpenXJsonSerDe": { - "$ref": "#/definitions/OpenXJsonSerDe" - } - }, - "type": "object" - }, - "DestinationTableConfiguration": { - "additionalProperties": false, - "properties": { - "DestinationDatabaseName": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "DestinationTableName": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "S3ErrorOutputPrefix": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "UniqueKeys": { - "items": { - "$ref": "#/definitions/UniqueKey" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "DestinationDatabaseName", - "DestinationTableName" - ], - "type": "object" - }, - "DestinationTableConfigurationList": { - "items": { - "$ref": "#/definitions/DestinationTableConfiguration" - }, - "type": "array" - }, - "DocumentIdOptions": { - "additionalProperties": false, - "properties": { - "DefaultDocumentIdFormat": { - "enum": [ - "FIREHOSE_DEFAULT", - "NO_DOCUMENT_ID" - ], - "type": "string" - } - }, - "required": [ - "DefaultDocumentIdFormat" - ], - "type": "object" - }, - "DynamicPartitioningConfiguration": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "RetryOptions": { - "$ref": "#/definitions/RetryOptions" - } - }, - "type": "object" - }, - "ElasticsearchBufferingHints": { - "additionalProperties": false, - "properties": { - "IntervalInSeconds": { - "type": "integer" - }, - "SizeInMBs": { - "type": "integer" - } - }, - "type": "object" - }, - "ElasticsearchDestinationConfiguration": { - "additionalProperties": false, - "properties": { - "BufferingHints": { - "$ref": "#/definitions/ElasticsearchBufferingHints" - }, - "CloudWatchLoggingOptions": { - "$ref": "#/definitions/CloudWatchLoggingOptions" - }, - "ClusterEndpoint": { - "maxLength": 512, - "minLength": 1, - "pattern": "https:.*", - "type": "string" - }, - "DocumentIdOptions": { - "$ref": "#/definitions/DocumentIdOptions" - }, - "DomainARN": { - "anyOf": [ - { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::Elasticsearch::Domain" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::OpenSearchService::Domain" - } - } - ], - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "type": "string" - }, - "IndexName": { - "maxLength": 80, - "minLength": 1, - "type": "string" - }, - "IndexRotationPeriod": { - "enum": [ - "NoRotation", - "OneHour", - "OneDay", - "OneWeek", - "OneMonth" - ], - "type": "string" - }, - "ProcessingConfiguration": { - "$ref": "#/definitions/ProcessingConfiguration" - }, - "RetryOptions": { - "$ref": "#/definitions/ElasticsearchRetryOptions" - }, - "RoleARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::Role" - }, - "type": "string" - }, - "S3BackupMode": { - "enum": [ - "FailedDocumentsOnly", - "AllDocuments" - ], - "type": "string" - }, - "S3Configuration": { - "$ref": "#/definitions/S3DestinationConfiguration" - }, - "TypeName": { - "maxLength": 100, - "minLength": 0, - "type": "string" - }, - "VpcConfiguration": { - "$ref": "#/definitions/VpcConfiguration" - } - }, - "required": [ - "IndexName", - "S3Configuration", - "RoleARN" - ], - "type": "object" - }, - "ElasticsearchRetryOptions": { - "additionalProperties": false, - "properties": { - "DurationInSeconds": { - "type": "integer" - } - }, - "type": "object" - }, - "EncryptionConfiguration": { - "additionalProperties": false, - "properties": { - "KMSEncryptionConfig": { - "$ref": "#/definitions/KMSEncryptionConfig" - }, - "NoEncryptionConfig": { - "enum": [ - "NoEncryption" - ], - "type": "string" - } - }, - "type": "object" - }, - "ExtendedS3DestinationConfiguration": { - "additionalProperties": false, - "properties": { - "BucketARN": { - "maxLength": 2048, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::S3::Bucket" - }, - "type": "string" - }, - "BufferingHints": { - "$ref": "#/definitions/BufferingHints" - }, - "CloudWatchLoggingOptions": { - "$ref": "#/definitions/CloudWatchLoggingOptions" - }, - "CompressionFormat": { - "enum": [ - "UNCOMPRESSED", - "GZIP", - "ZIP", - "Snappy", - "HADOOP_SNAPPY" - ], - "type": "string" - }, - "CustomTimeZone": { - "maxLength": 50, - "minLength": 0, - "type": "string" - }, - "DataFormatConversionConfiguration": { - "$ref": "#/definitions/DataFormatConversionConfiguration" - }, - "DynamicPartitioningConfiguration": { - "$ref": "#/definitions/DynamicPartitioningConfiguration" - }, - "EncryptionConfiguration": { - "$ref": "#/definitions/EncryptionConfiguration" - }, - "ErrorOutputPrefix": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "FileExtension": { - "maxLength": 128, - "minLength": 0, - "pattern": "^$|\\.[0-9a-z!\\-_.*'()]+", - "type": "string" - }, - "Prefix": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "ProcessingConfiguration": { - "$ref": "#/definitions/ProcessingConfiguration" - }, - "RoleARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::Role" - }, - "type": "string" - }, - "S3BackupConfiguration": { - "$ref": "#/definitions/S3DestinationConfiguration" - }, - "S3BackupMode": { - "enum": [ - "Disabled", - "Enabled" - ], - "type": "string" - } - }, - "required": [ - "BucketARN", - "RoleARN" - ], - "type": "object" - }, - "HiveJsonSerDe": { - "additionalProperties": false, - "properties": { - "TimestampFormats": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "HttpEndpointCommonAttribute": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "AttributeValue": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "AttributeName", - "AttributeValue" - ], - "type": "object" - }, - "HttpEndpointConfiguration": { - "additionalProperties": false, - "properties": { - "AccessKey": { - "maxLength": 4096, - "minLength": 0, - "type": "string" - }, - "Name": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Url": { - "maxLength": 1000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Url" - ], - "type": "object" - }, - "HttpEndpointDestinationConfiguration": { - "additionalProperties": false, - "properties": { - "BufferingHints": { - "$ref": "#/definitions/BufferingHints" - }, - "CloudWatchLoggingOptions": { - "$ref": "#/definitions/CloudWatchLoggingOptions" - }, - "EndpointConfiguration": { - "$ref": "#/definitions/HttpEndpointConfiguration" - }, - "ProcessingConfiguration": { - "$ref": "#/definitions/ProcessingConfiguration" - }, - "RequestConfiguration": { - "$ref": "#/definitions/HttpEndpointRequestConfiguration" - }, - "RetryOptions": { - "$ref": "#/definitions/RetryOptions" - }, - "RoleARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::Role" - }, - "type": "string" - }, - "S3BackupMode": { - "type": "string" - }, - "S3Configuration": { - "$ref": "#/definitions/S3DestinationConfiguration" - }, - "SecretsManagerConfiguration": { - "$ref": "#/definitions/SecretsManagerConfiguration" - } - }, - "required": [ - "EndpointConfiguration", - "S3Configuration" - ], - "type": "object" - }, - "HttpEndpointRequestConfiguration": { - "additionalProperties": false, - "properties": { - "CommonAttributes": { - "items": { - "$ref": "#/definitions/HttpEndpointCommonAttribute" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "ContentEncoding": { - "enum": [ - "NONE", - "GZIP" - ], - "type": "string" - } - }, - "type": "object" - }, - "IcebergDestinationConfiguration": { - "additionalProperties": false, - "properties": { - "BufferingHints": { - "$ref": "#/definitions/BufferingHints" - }, - "CatalogConfiguration": { - "$ref": "#/definitions/CatalogConfiguration" - }, - "CloudWatchLoggingOptions": { - "$ref": "#/definitions/CloudWatchLoggingOptions" - }, - "DestinationTableConfigurationList": { - "$ref": "#/definitions/DestinationTableConfigurationList" - }, - "ProcessingConfiguration": { - "$ref": "#/definitions/ProcessingConfiguration" - }, - "RetryOptions": { - "$ref": "#/definitions/RetryOptions" - }, - "RoleARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::Role" - }, - "type": "string" - }, - "S3Configuration": { - "$ref": "#/definitions/S3DestinationConfiguration" - }, - "s3BackupMode": { - "enum": [ - "AllData", - "FailedDataOnly" - ], - "type": "string" - } - }, - "required": [ - "RoleARN", - "CatalogConfiguration", - "S3Configuration" - ], - "type": "object" - }, - "InputFormatConfiguration": { - "additionalProperties": false, - "properties": { - "Deserializer": { - "$ref": "#/definitions/Deserializer" - } - }, - "type": "object" - }, - "KMSEncryptionConfig": { - "additionalProperties": false, - "properties": { - "AWSKMSKeyARN": { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::KMS::Key" - }, - "type": "string" - } - }, - "required": [ - "AWSKMSKeyARN" - ], - "type": "object" - }, - "KinesisStreamSourceConfiguration": { - "additionalProperties": false, - "properties": { - "KinesisStreamARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::Kinesis::Stream" - }, - "type": "string" - }, - "RoleARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::Role" - }, - "type": "string" - } - }, - "required": [ - "RoleARN", - "KinesisStreamARN" - ], - "type": "object" - }, - "MSKSourceConfiguration": { - "additionalProperties": false, - "properties": { - "AuthenticationConfiguration": { - "$ref": "#/definitions/AuthenticationConfiguration" - }, - "MSKClusterARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::MSK::Cluster" - }, - "type": "string" - }, - "ReadFromTimestamp": { - "type": "string" - }, - "TopicName": { - "maxLength": 255, - "minLength": 1, - "pattern": "[a-zA-Z0-9\\._\\-]+", - "type": "string" - } - }, - "required": [ - "MSKClusterARN", - "TopicName", - "AuthenticationConfiguration" - ], - "type": "object" - }, - "OpenXJsonSerDe": { - "additionalProperties": false, - "properties": { - "CaseInsensitive": { - "type": "boolean" - }, - "ColumnToJsonKeyMappings": { - "additionalProperties": false, - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "ConvertDotsInJsonKeysToUnderscores": { - "type": "boolean" - } - }, - "type": "object" - }, - "OrcSerDe": { - "additionalProperties": false, - "properties": { - "BlockSizeBytes": { - "type": "integer" - }, - "BloomFilterColumns": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "BloomFilterFalsePositiveProbability": { - "type": "number" - }, - "Compression": { - "type": "string" - }, - "DictionaryKeyThreshold": { - "type": "number" - }, - "EnablePadding": { - "type": "boolean" - }, - "FormatVersion": { - "type": "string" - }, - "PaddingTolerance": { - "type": "number" - }, - "RowIndexStride": { - "type": "integer" - }, - "StripeSizeBytes": { - "type": "integer" - } - }, - "type": "object" - }, - "OutputFormatConfiguration": { - "additionalProperties": false, - "properties": { - "Serializer": { - "$ref": "#/definitions/Serializer" - } - }, - "type": "object" - }, - "ParquetSerDe": { - "additionalProperties": false, - "properties": { - "BlockSizeBytes": { - "type": "integer" - }, - "Compression": { - "type": "string" - }, - "EnableDictionaryCompression": { - "type": "boolean" - }, - "MaxPaddingBytes": { - "type": "integer" - }, - "PageSizeBytes": { - "type": "integer" - }, - "WriterVersion": { - "type": "string" - } - }, - "type": "object" - }, - "ProcessingConfiguration": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "Processors": { - "items": { - "$ref": "#/definitions/Processor" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "Processor": { - "additionalProperties": false, - "properties": { - "Parameters": { - "items": { - "$ref": "#/definitions/ProcessorParameter" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "enum": [ - "RecordDeAggregation", - "Decompression", - "CloudWatchLogProcessing", - "Lambda", - "MetadataExtraction", - "AppendDelimiterToRecord" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ProcessorParameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "type": "string" - }, - "ParameterValue": { - "anyOf": [ - { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::Lambda::Function" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::Role" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/Id", - "typeName": "AWS::Lambda::Alias" - } - } - ], - "type": "string" - } - }, - "required": [ - "ParameterValue", - "ParameterName" - ], - "type": "object" - }, - "RedshiftDestinationConfiguration": { - "additionalProperties": false, - "properties": { - "CloudWatchLoggingOptions": { - "$ref": "#/definitions/CloudWatchLoggingOptions" - }, - "ClusterJDBCURL": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "CopyCommand": { - "$ref": "#/definitions/CopyCommand" - }, - "Password": { - "maxLength": 512, - "minLength": 6, - "type": "string" - }, - "ProcessingConfiguration": { - "$ref": "#/definitions/ProcessingConfiguration" - }, - "RetryOptions": { - "$ref": "#/definitions/RedshiftRetryOptions" - }, - "RoleARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::Role" - }, - "type": "string" - }, - "S3BackupConfiguration": { - "$ref": "#/definitions/S3DestinationConfiguration" - }, - "S3BackupMode": { - "enum": [ - "Disabled", - "Enabled" - ], - "type": "string" - }, - "S3Configuration": { - "$ref": "#/definitions/S3DestinationConfiguration" - }, - "SecretsManagerConfiguration": { - "$ref": "#/definitions/SecretsManagerConfiguration" - }, - "Username": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "S3Configuration", - "ClusterJDBCURL", - "CopyCommand", - "RoleARN" - ], - "type": "object" - }, - "RedshiftRetryOptions": { - "additionalProperties": false, - "properties": { - "DurationInSeconds": { - "type": "integer" - } - }, - "type": "object" - }, - "RetryOptions": { - "additionalProperties": false, - "properties": { - "DurationInSeconds": { - "type": "integer" - } - }, - "type": "object" - }, - "S3DestinationConfiguration": { - "additionalProperties": false, - "properties": { - "BucketARN": { - "maxLength": 2048, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::S3::Bucket" - }, - "type": "string" - }, - "BufferingHints": { - "$ref": "#/definitions/BufferingHints" - }, - "CloudWatchLoggingOptions": { - "$ref": "#/definitions/CloudWatchLoggingOptions" - }, - "CompressionFormat": { - "enum": [ - "UNCOMPRESSED", - "GZIP", - "ZIP", - "Snappy", - "HADOOP_SNAPPY" - ], - "type": "string" - }, - "EncryptionConfiguration": { - "$ref": "#/definitions/EncryptionConfiguration" - }, - "ErrorOutputPrefix": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "Prefix": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "RoleARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::Role" - }, - "type": "string" - } - }, - "required": [ - "BucketARN", - "RoleARN" - ], - "type": "object" - }, - "SchemaConfiguration": { - "additionalProperties": false, - "properties": { - "CatalogId": { - "type": "string" - }, - "DatabaseName": { - "relationshipRef": { - "propertyPath": "/properties/Id", - "typeName": "AWS::Glue::Database" - }, - "type": "string" - }, - "Region": { - "type": "string" - }, - "RoleARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::Role" - }, - "type": "string" - }, - "TableName": { - "relationshipRef": { - "propertyPath": "/properties/Id", - "typeName": "AWS::Glue::Table" - }, - "type": "string" - }, - "VersionId": { - "type": "string" - } - }, - "type": "object" - }, - "SecretsManagerConfiguration": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "RoleARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*:iam::\\d{12}:role/[a-zA-Z_0-9+=,.@\\-_/]+", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::Role" - }, - "type": "string" - }, - "SecretARN": { - "maxLength": 2048, - "minLength": 1, - "pattern": "arn:.*:secretsmanager:[a-zA-Z0-9\\-]+:\\d{12}:secret:[a-zA-Z0-9\\-/_+=.@]+", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::SecretsManager::Secret" - }, - "type": "string" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "Serializer": { - "additionalProperties": false, - "properties": { - "OrcSerDe": { - "$ref": "#/definitions/OrcSerDe" - }, - "ParquetSerDe": { - "$ref": "#/definitions/ParquetSerDe" - } - }, - "type": "object" - }, - "SnowflakeBufferingHints": { - "additionalProperties": false, - "properties": { - "IntervalInSeconds": { - "type": "integer" - }, - "SizeInMBs": { - "type": "integer" - } - }, - "type": "object" - }, - "SnowflakeDestinationConfiguration": { - "additionalProperties": false, - "properties": { - "AccountUrl": { - "maxLength": 2048, - "minLength": 24, - "pattern": ".+?\\.snowflakecomputing\\.com", - "type": "string" - }, - "BufferingHints": { - "$ref": "#/definitions/SnowflakeBufferingHints" - }, - "CloudWatchLoggingOptions": { - "$ref": "#/definitions/CloudWatchLoggingOptions" - }, - "ContentColumnName": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "DataLoadingOption": { - "enum": [ - "JSON_MAPPING", - "VARIANT_CONTENT_MAPPING", - "VARIANT_CONTENT_AND_METADATA_MAPPING" - ], - "type": "string" - }, - "Database": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "KeyPassphrase": { - "maxLength": 255, - "minLength": 7, - "type": "string" - }, - "MetaDataColumnName": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "PrivateKey": { - "maxLength": 4096, - "minLength": 256, - "pattern": "^(?:[A-Za-z0-9+\\/]{4})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$", - "type": "string" - }, - "ProcessingConfiguration": { - "$ref": "#/definitions/ProcessingConfiguration" - }, - "RetryOptions": { - "$ref": "#/definitions/SnowflakeRetryOptions" - }, - "RoleARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::Role" - }, - "type": "string" - }, - "S3BackupMode": { - "enum": [ - "FailedDataOnly", - "AllData" - ], - "type": "string" - }, - "S3Configuration": { - "$ref": "#/definitions/S3DestinationConfiguration" - }, - "Schema": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "SecretsManagerConfiguration": { - "$ref": "#/definitions/SecretsManagerConfiguration" - }, - "SnowflakeRoleConfiguration": { - "$ref": "#/definitions/SnowflakeRoleConfiguration" - }, - "SnowflakeVpcConfiguration": { - "$ref": "#/definitions/SnowflakeVpcConfiguration" - }, - "Table": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "User": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "AccountUrl", - "Database", - "Schema", - "Table", - "RoleARN", - "S3Configuration" - ], - "type": "object" - }, - "SnowflakeRetryOptions": { - "additionalProperties": false, - "properties": { - "DurationInSeconds": { - "type": "integer" - } - }, - "type": "object" - }, - "SnowflakeRoleConfiguration": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "SnowflakeRole": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "SnowflakeVpcConfiguration": { - "additionalProperties": false, - "properties": { - "PrivateLinkVpceId": { - "maxLength": 255, - "minLength": 47, - "pattern": "([a-zA-Z0-9\\-\\_]+\\.){2,3}vpce\\.[a-zA-Z0-9\\-]*\\.vpce-svc\\-[a-zA-Z0-9\\-]{17}$", - "type": "string" - } - }, - "required": [ - "PrivateLinkVpceId" - ], - "type": "object" - }, - "SplunkBufferingHints": { - "additionalProperties": false, - "properties": { - "IntervalInSeconds": { - "type": "integer" - }, - "SizeInMBs": { - "type": "integer" - } - }, - "type": "object" - }, - "SplunkDestinationConfiguration": { - "additionalProperties": false, - "properties": { - "BufferingHints": { - "$ref": "#/definitions/SplunkBufferingHints" - }, - "CloudWatchLoggingOptions": { - "$ref": "#/definitions/CloudWatchLoggingOptions" - }, - "HECAcknowledgmentTimeoutInSeconds": { - "maximum": 600, - "minimum": 180, - "type": "integer" - }, - "HECEndpoint": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - }, - "HECEndpointType": { - "enum": [ - "Raw", - "Event" - ], - "type": "string" - }, - "HECToken": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - }, - "ProcessingConfiguration": { - "$ref": "#/definitions/ProcessingConfiguration" - }, - "RetryOptions": { - "$ref": "#/definitions/SplunkRetryOptions" - }, - "S3BackupMode": { - "type": "string" - }, - "S3Configuration": { - "$ref": "#/definitions/S3DestinationConfiguration" - }, - "SecretsManagerConfiguration": { - "$ref": "#/definitions/SecretsManagerConfiguration" - } - }, - "required": [ - "HECEndpoint", - "S3Configuration", - "HECEndpointType" - ], - "type": "object" - }, - "SplunkRetryOptions": { - "additionalProperties": false, - "properties": { - "DurationInSeconds": { - "type": "integer" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@%]*$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@%]*$", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - }, - "UniqueKey": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "VpcConfiguration": { - "additionalProperties": false, - "properties": { - "RoleARN": { - "maxLength": 512, - "minLength": 1, - "pattern": "arn:.*", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::Role" - }, - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "maxLength": 1024, - "minLength": 1, - "relationshipRef": { - "propertyPath": "/properties/GroupId", - "typeName": "AWS::EC2::SecurityGroup" - }, - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "SubnetIds": { - "items": { - "maxLength": 1024, - "minLength": 1, - "relationshipRef": { - "propertyPath": "/properties/SubnetId", - "typeName": "AWS::EC2::Subnet" - }, - "type": "string" - }, - "maxItems": 16, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "RoleARN", - "SubnetIds", - "SecurityGroupIds" - ], - "type": "object" - }, - "VpcEndpointServiceName": { - "maxLength": 255, - "minLength": 47, - "pattern": "([a-zA-Z0-9\\-\\_]+\\.){2,3}vpce\\.[a-zA-Z0-9\\-]*\\.vpce-svc\\-[a-zA-Z0-9\\-]{17}$", - "type": "string" - } - }, - "description": "Resource Type definition for AWS::KinesisFirehose::DeliveryStream", - "handlers": { - "create": { - "permissions": [ - "firehose:CreateDeliveryStream", - "firehose:DescribeDeliveryStream", - "iam:GetRole", - "iam:PassRole", - "kms:CreateGrant", - "kms:DescribeKey" - ] - }, - "delete": { - "permissions": [ - "firehose:DeleteDeliveryStream", - "firehose:DescribeDeliveryStream", - "kms:RevokeGrant", - "kms:DescribeKey" - ] - }, - "list": { - "permissions": [ - "firehose:ListDeliveryStreams" - ] - }, - "read": { - "permissions": [ - "firehose:DescribeDeliveryStream", - "firehose:ListTagsForDeliveryStream" - ] - }, - "update": { - "permissions": [ - "firehose:UpdateDestination", - "firehose:DescribeDeliveryStream", - "firehose:StartDeliveryStreamEncryption", - "firehose:StopDeliveryStreamEncryption", - "firehose:ListTagsForDeliveryStream", - "firehose:TagDeliveryStream", - "firehose:UntagDeliveryStream", - "kms:CreateGrant", - "kms:RevokeGrant", - "kms:DescribeKey" - ] - } - }, - "primaryIdentifier": [ - "/properties/DeliveryStreamName" - ], - "properties": { - "AmazonOpenSearchServerlessDestinationConfiguration": { - "$ref": "#/definitions/AmazonOpenSearchServerlessDestinationConfiguration" - }, - "AmazonopensearchserviceDestinationConfiguration": { - "$ref": "#/definitions/AmazonopensearchserviceDestinationConfiguration" - }, - "Arn": { - "type": "string" - }, - "DatabaseSourceConfiguration": { - "$ref": "#/definitions/DatabaseSourceConfiguration" - }, - "DeliveryStreamEncryptionConfigurationInput": { - "$ref": "#/definitions/DeliveryStreamEncryptionConfigurationInput" - }, - "DeliveryStreamName": { - "maxLength": 64, - "minLength": 1, - "pattern": "[a-zA-Z0-9._-]+", - "type": "string" - }, - "DeliveryStreamType": { - "enum": [ - "DatabaseAsSource", - "DirectPut", - "KinesisStreamAsSource", - "MSKAsSource" - ], - "type": "string" - }, - "ElasticsearchDestinationConfiguration": { - "$ref": "#/definitions/ElasticsearchDestinationConfiguration" - }, - "ExtendedS3DestinationConfiguration": { - "$ref": "#/definitions/ExtendedS3DestinationConfiguration" - }, - "HttpEndpointDestinationConfiguration": { - "$ref": "#/definitions/HttpEndpointDestinationConfiguration" - }, - "IcebergDestinationConfiguration": { - "$ref": "#/definitions/IcebergDestinationConfiguration" - }, - "KinesisStreamSourceConfiguration": { - "$ref": "#/definitions/KinesisStreamSourceConfiguration" - }, - "MSKSourceConfiguration": { - "$ref": "#/definitions/MSKSourceConfiguration" - }, - "RedshiftDestinationConfiguration": { - "$ref": "#/definitions/RedshiftDestinationConfiguration" - }, - "S3DestinationConfiguration": { - "$ref": "#/definitions/S3DestinationConfiguration" - }, - "SnowflakeDestinationConfiguration": { - "$ref": "#/definitions/SnowflakeDestinationConfiguration" - }, - "SplunkDestinationConfiguration": { - "$ref": "#/definitions/SplunkDestinationConfiguration" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "typeName": "AWS::KinesisFirehose::DeliveryStream" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DeliveryStreamName", + "/properties/DeliveryStreamType", + "/properties/ElasticsearchDestinationConfiguration/VpcConfiguration", + "/properties/AmazonopensearchserviceDestinationConfiguration/VpcConfiguration", + "/properties/AmazonOpenSearchServerlessDestinationConfiguration/VpcConfiguration", + "/properties/DatabaseSourceConfiguration", + "/properties/KinesisStreamSourceConfiguration", + "/properties/DirectPutSourceConfiguration", + "/properties/MSKSourceConfiguration", + "/properties/IcebergDestinationConfiguration/CatalogConfiguration", + "/properties/SnowflakeDestinationConfiguration/SnowflakeVpcConfiguration" + ], + "definitions": { + "AmazonOpenSearchServerlessBufferingHints": { + "additionalProperties": false, + "properties": { + "IntervalInSeconds": { + "type": "integer" + }, + "SizeInMBs": { + "type": "integer" + } + }, + "type": "object" + }, + "AmazonOpenSearchServerlessDestinationConfiguration": { + "additionalProperties": false, + "properties": { + "BufferingHints": { + "$ref": "#/definitions/AmazonOpenSearchServerlessBufferingHints" + }, + "CloudWatchLoggingOptions": { + "$ref": "#/definitions/CloudWatchLoggingOptions" + }, + "CollectionEndpoint": { + "maxLength": 512, + "minLength": 1, + "pattern": "https:.*", + "relationshipRef": { + "propertyPath": "/properties/CollectionEndpoint", + "typeName": "AWS::OpenSearchServerless::Collection" + }, + "type": "string" + }, + "IndexName": { + "maxLength": 80, + "minLength": 1, + "type": "string" + }, + "ProcessingConfiguration": { + "$ref": "#/definitions/ProcessingConfiguration" + }, + "RetryOptions": { + "$ref": "#/definitions/AmazonOpenSearchServerlessRetryOptions" + }, + "RoleARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + }, + "type": "string" + }, + "S3BackupMode": { + "enum": [ + "FailedDocumentsOnly", + "AllDocuments" + ], + "type": "string" + }, + "S3Configuration": { + "$ref": "#/definitions/S3DestinationConfiguration" + }, + "VpcConfiguration": { + "$ref": "#/definitions/VpcConfiguration" + } + }, + "required": [ + "IndexName", + "S3Configuration", + "RoleARN" + ], + "type": "object" + }, + "AmazonOpenSearchServerlessRetryOptions": { + "additionalProperties": false, + "properties": { + "DurationInSeconds": { + "type": "integer" + } + }, + "type": "object" + }, + "AmazonopensearchserviceBufferingHints": { + "additionalProperties": false, + "properties": { + "IntervalInSeconds": { + "type": "integer" + }, + "SizeInMBs": { + "type": "integer" + } + }, + "type": "object" + }, + "AmazonopensearchserviceDestinationConfiguration": { + "additionalProperties": false, + "properties": { + "BufferingHints": { + "$ref": "#/definitions/AmazonopensearchserviceBufferingHints" + }, + "CloudWatchLoggingOptions": { + "$ref": "#/definitions/CloudWatchLoggingOptions" + }, + "ClusterEndpoint": { + "maxLength": 512, + "minLength": 1, + "pattern": "https:.*", + "type": "string" + }, + "DocumentIdOptions": { + "$ref": "#/definitions/DocumentIdOptions" + }, + "DomainARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "type": "string" + }, + "IndexName": { + "maxLength": 80, + "minLength": 1, + "type": "string" + }, + "IndexRotationPeriod": { + "enum": [ + "NoRotation", + "OneHour", + "OneDay", + "OneWeek", + "OneMonth" + ], + "type": "string" + }, + "ProcessingConfiguration": { + "$ref": "#/definitions/ProcessingConfiguration" + }, + "RetryOptions": { + "$ref": "#/definitions/AmazonopensearchserviceRetryOptions" + }, + "RoleARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + }, + "type": "string" + }, + "S3BackupMode": { + "enum": [ + "FailedDocumentsOnly", + "AllDocuments" + ], + "type": "string" + }, + "S3Configuration": { + "$ref": "#/definitions/S3DestinationConfiguration" + }, + "TypeName": { + "maxLength": 100, + "minLength": 0, + "type": "string" + }, + "VpcConfiguration": { + "$ref": "#/definitions/VpcConfiguration" + } + }, + "required": [ + "IndexName", + "S3Configuration", + "RoleARN" + ], + "type": "object" + }, + "AmazonopensearchserviceRetryOptions": { + "additionalProperties": false, + "properties": { + "DurationInSeconds": { + "type": "integer" + } + }, + "type": "object" + }, + "AuthenticationConfiguration": { + "additionalProperties": false, + "properties": { + "Connectivity": { + "enum": [ + "PUBLIC", + "PRIVATE" + ], + "type": "string" + }, + "RoleARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + }, + "type": "string" + } + }, + "required": [ + "RoleARN", + "Connectivity" + ], + "type": "object" + }, + "BufferingHints": { + "additionalProperties": false, + "properties": { + "IntervalInSeconds": { + "type": "integer" + }, + "SizeInMBs": { + "type": "integer" + } + }, + "type": "object" + }, + "CatalogConfiguration": { + "additionalProperties": false, + "properties": { + "CatalogArn": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "type": "string" + } + }, + "type": "object" + }, + "CloudWatchLoggingOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "LogGroupName": { + "relationshipRef": { + "propertyPath": "/properties/LogGroupName", + "typeName": "AWS::Logs::LogGroup" + }, + "type": "string" + }, + "LogStreamName": { + "relationshipRef": { + "propertyPath": "/properties/LogStreamName", + "typeName": "AWS::Logs::LogStream" + }, + "type": "string" + } + }, + "type": "object" + }, + "CopyCommand": { + "additionalProperties": false, + "properties": { + "CopyOptions": { + "maxLength": 204800, + "minLength": 0, + "type": "string" + }, + "DataTableColumns": { + "maxLength": 204800, + "minLength": 0, + "type": "string" + }, + "DataTableName": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DataTableName" + ], + "type": "object" + }, + "DataFormatConversionConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "InputFormatConfiguration": { + "$ref": "#/definitions/InputFormatConfiguration" + }, + "OutputFormatConfiguration": { + "$ref": "#/definitions/OutputFormatConfiguration" + }, + "SchemaConfiguration": { + "$ref": "#/definitions/SchemaConfiguration" + } + }, + "type": "object" + }, + "DatabaseColumnName": { + "maxLength": 194, + "minLength": 1, + "pattern": "[\\u0001-\\uFFFF]*", + "type": "string" + }, + "DatabaseColumns": { + "additionalProperties": false, + "properties": { + "Exclude": { + "items": { + "$ref": "#/definitions/DatabaseColumnName" + }, + "type": "array" + }, + "Include": { + "items": { + "$ref": "#/definitions/DatabaseColumnName" + }, + "type": "array" + } + }, + "type": "object" + }, + "DatabaseName": { + "maxLength": 64, + "minLength": 1, + "pattern": "[\\u0001-\\uFFFF]*", + "type": "string" + }, + "DatabaseSourceAuthenticationConfiguration": { + "additionalProperties": false, + "properties": { + "SecretsManagerConfiguration": { + "$ref": "#/definitions/SecretsManagerConfiguration" + } + }, + "required": [ + "SecretsManagerConfiguration" + ], + "type": "object" + }, + "DatabaseSourceConfiguration": { + "additionalProperties": false, + "properties": { + "Columns": { + "$ref": "#/definitions/DatabaseColumns" + }, + "DatabaseSourceAuthenticationConfiguration": { + "$ref": "#/definitions/DatabaseSourceAuthenticationConfiguration" + }, + "DatabaseSourceVPCConfiguration": { + "$ref": "#/definitions/DatabaseSourceVPCConfiguration" + }, + "Databases": { + "$ref": "#/definitions/Databases" + }, + "Digest": { + "maxLength": 512, + "minLength": 1, + "pattern": ".*", + "type": "string" + }, + "Endpoint": { + "maxLength": 255, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Port": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "PublicCertificate": { + "maxLength": 4096, + "minLength": 1, + "pattern": ".*", + "type": "string" + }, + "SSLMode": { + "enum": [ + "Disabled", + "Enabled" + ], + "type": "string" + }, + "SnapshotWatermarkTable": { + "$ref": "#/definitions/DatabaseTableName" + }, + "SurrogateKeys": { + "items": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^\\S+$", + "type": "string" + }, + "type": "array" + }, + "Tables": { + "$ref": "#/definitions/DatabaseTables" + }, + "Type": { + "enum": [ + "MySQL", + "PostgreSQL" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Endpoint", + "Port", + "Databases", + "Tables", + "SnapshotWatermarkTable", + "DatabaseSourceAuthenticationConfiguration", + "DatabaseSourceVPCConfiguration" + ], + "type": "object" + }, + "DatabaseSourceVPCConfiguration": { + "additionalProperties": false, + "properties": { + "VpcEndpointServiceName": { + "$ref": "#/definitions/VpcEndpointServiceName" + } + }, + "required": [ + "VpcEndpointServiceName" + ], + "type": "object" + }, + "DatabaseTableName": { + "maxLength": 129, + "minLength": 1, + "pattern": "[\\u0001-\\uFFFF]*", + "type": "string" + }, + "DatabaseTables": { + "additionalProperties": false, + "properties": { + "Exclude": { + "items": { + "$ref": "#/definitions/DatabaseTableName" + }, + "type": "array" + }, + "Include": { + "items": { + "$ref": "#/definitions/DatabaseTableName" + }, + "type": "array" + } + }, + "type": "object" + }, + "Databases": { + "additionalProperties": false, + "properties": { + "Exclude": { + "items": { + "$ref": "#/definitions/DatabaseName" + }, + "type": "array" + }, + "Include": { + "items": { + "$ref": "#/definitions/DatabaseName" + }, + "type": "array" + } + }, + "type": "object" + }, + "DeliveryStreamEncryptionConfigurationInput": { + "additionalProperties": false, + "properties": { + "KeyARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::KMS::Key" + }, + "type": "string" + }, + "KeyType": { + "enum": [ + "AWS_OWNED_CMK", + "CUSTOMER_MANAGED_CMK" + ], + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + "Deserializer": { + "additionalProperties": false, + "properties": { + "HiveJsonSerDe": { + "$ref": "#/definitions/HiveJsonSerDe" + }, + "OpenXJsonSerDe": { + "$ref": "#/definitions/OpenXJsonSerDe" + } + }, + "type": "object" + }, + "DestinationTableConfiguration": { + "additionalProperties": false, + "properties": { + "DestinationDatabaseName": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "DestinationTableName": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "S3ErrorOutputPrefix": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "UniqueKeys": { + "items": { + "$ref": "#/definitions/UniqueKey" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "DestinationDatabaseName", + "DestinationTableName" + ], + "type": "object" + }, + "DestinationTableConfigurationList": { + "items": { + "$ref": "#/definitions/DestinationTableConfiguration" + }, + "type": "array" + }, + "DirectPutSourceConfiguration": { + "additionalProperties": false, + "properties": { + "ThroughputHintInMBs": { + "maximum": 100, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "DocumentIdOptions": { + "additionalProperties": false, + "properties": { + "DefaultDocumentIdFormat": { + "enum": [ + "FIREHOSE_DEFAULT", + "NO_DOCUMENT_ID" + ], + "type": "string" + } + }, + "required": [ + "DefaultDocumentIdFormat" + ], + "type": "object" + }, + "DynamicPartitioningConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "RetryOptions": { + "$ref": "#/definitions/RetryOptions" + } + }, + "type": "object" + }, + "ElasticsearchBufferingHints": { + "additionalProperties": false, + "properties": { + "IntervalInSeconds": { + "type": "integer" + }, + "SizeInMBs": { + "type": "integer" + } + }, + "type": "object" + }, + "ElasticsearchDestinationConfiguration": { + "additionalProperties": false, + "properties": { + "BufferingHints": { + "$ref": "#/definitions/ElasticsearchBufferingHints" + }, + "CloudWatchLoggingOptions": { + "$ref": "#/definitions/CloudWatchLoggingOptions" + }, + "ClusterEndpoint": { + "maxLength": 512, + "minLength": 1, + "pattern": "https:.*", + "type": "string" + }, + "DocumentIdOptions": { + "$ref": "#/definitions/DocumentIdOptions" + }, + "DomainARN": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::Elasticsearch::Domain" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::OpenSearchService::Domain" + } + } + ], + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "type": "string" + }, + "IndexName": { + "maxLength": 80, + "minLength": 1, + "type": "string" + }, + "IndexRotationPeriod": { + "enum": [ + "NoRotation", + "OneHour", + "OneDay", + "OneWeek", + "OneMonth" + ], + "type": "string" + }, + "ProcessingConfiguration": { + "$ref": "#/definitions/ProcessingConfiguration" + }, + "RetryOptions": { + "$ref": "#/definitions/ElasticsearchRetryOptions" + }, + "RoleARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + }, + "type": "string" + }, + "S3BackupMode": { + "enum": [ + "FailedDocumentsOnly", + "AllDocuments" + ], + "type": "string" + }, + "S3Configuration": { + "$ref": "#/definitions/S3DestinationConfiguration" + }, + "TypeName": { + "maxLength": 100, + "minLength": 0, + "type": "string" + }, + "VpcConfiguration": { + "$ref": "#/definitions/VpcConfiguration" + } + }, + "required": [ + "IndexName", + "S3Configuration", + "RoleARN" + ], + "type": "object" + }, + "ElasticsearchRetryOptions": { + "additionalProperties": false, + "properties": { + "DurationInSeconds": { + "type": "integer" + } + }, + "type": "object" + }, + "EncryptionConfiguration": { + "additionalProperties": false, + "properties": { + "KMSEncryptionConfig": { + "$ref": "#/definitions/KMSEncryptionConfig" + }, + "NoEncryptionConfig": { + "enum": [ + "NoEncryption" + ], + "type": "string" + } + }, + "type": "object" + }, + "ExtendedS3DestinationConfiguration": { + "additionalProperties": false, + "properties": { + "BucketARN": { + "maxLength": 2048, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::S3::Bucket" + }, + "type": "string" + }, + "BufferingHints": { + "$ref": "#/definitions/BufferingHints" + }, + "CloudWatchLoggingOptions": { + "$ref": "#/definitions/CloudWatchLoggingOptions" + }, + "CompressionFormat": { + "enum": [ + "UNCOMPRESSED", + "GZIP", + "ZIP", + "Snappy", + "HADOOP_SNAPPY" + ], + "type": "string" + }, + "CustomTimeZone": { + "maxLength": 50, + "minLength": 0, + "type": "string" + }, + "DataFormatConversionConfiguration": { + "$ref": "#/definitions/DataFormatConversionConfiguration" + }, + "DynamicPartitioningConfiguration": { + "$ref": "#/definitions/DynamicPartitioningConfiguration" + }, + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration" + }, + "ErrorOutputPrefix": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "FileExtension": { + "maxLength": 128, + "minLength": 0, + "pattern": "^$|\\.[0-9a-z!\\-_.*'()]+", + "type": "string" + }, + "Prefix": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "ProcessingConfiguration": { + "$ref": "#/definitions/ProcessingConfiguration" + }, + "RoleARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + }, + "type": "string" + }, + "S3BackupConfiguration": { + "$ref": "#/definitions/S3DestinationConfiguration" + }, + "S3BackupMode": { + "enum": [ + "Disabled", + "Enabled" + ], + "type": "string" + } + }, + "required": [ + "BucketARN", + "RoleARN" + ], + "type": "object" + }, + "HiveJsonSerDe": { + "additionalProperties": false, + "properties": { + "TimestampFormats": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "HttpEndpointCommonAttribute": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "AttributeValue": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "AttributeName", + "AttributeValue" + ], + "type": "object" + }, + "HttpEndpointConfiguration": { + "additionalProperties": false, + "properties": { + "AccessKey": { + "maxLength": 4096, + "minLength": 0, + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Url": { + "maxLength": 1000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Url" + ], + "type": "object" + }, + "HttpEndpointDestinationConfiguration": { + "additionalProperties": false, + "properties": { + "BufferingHints": { + "$ref": "#/definitions/BufferingHints" + }, + "CloudWatchLoggingOptions": { + "$ref": "#/definitions/CloudWatchLoggingOptions" + }, + "EndpointConfiguration": { + "$ref": "#/definitions/HttpEndpointConfiguration" + }, + "ProcessingConfiguration": { + "$ref": "#/definitions/ProcessingConfiguration" + }, + "RequestConfiguration": { + "$ref": "#/definitions/HttpEndpointRequestConfiguration" + }, + "RetryOptions": { + "$ref": "#/definitions/RetryOptions" + }, + "RoleARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + }, + "type": "string" + }, + "S3BackupMode": { + "type": "string" + }, + "S3Configuration": { + "$ref": "#/definitions/S3DestinationConfiguration" + }, + "SecretsManagerConfiguration": { + "$ref": "#/definitions/SecretsManagerConfiguration" + } + }, + "required": [ + "EndpointConfiguration", + "S3Configuration" + ], + "type": "object" + }, + "HttpEndpointRequestConfiguration": { + "additionalProperties": false, + "properties": { + "CommonAttributes": { + "items": { + "$ref": "#/definitions/HttpEndpointCommonAttribute" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "ContentEncoding": { + "enum": [ + "NONE", + "GZIP" + ], + "type": "string" + } + }, + "type": "object" + }, + "IcebergDestinationConfiguration": { + "additionalProperties": false, + "properties": { + "AppendOnly": { + "type": "boolean" + }, + "BufferingHints": { + "$ref": "#/definitions/BufferingHints" + }, + "CatalogConfiguration": { + "$ref": "#/definitions/CatalogConfiguration" + }, + "CloudWatchLoggingOptions": { + "$ref": "#/definitions/CloudWatchLoggingOptions" + }, + "DestinationTableConfigurationList": { + "$ref": "#/definitions/DestinationTableConfigurationList" + }, + "ProcessingConfiguration": { + "$ref": "#/definitions/ProcessingConfiguration" + }, + "RetryOptions": { + "$ref": "#/definitions/RetryOptions" + }, + "RoleARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + }, + "type": "string" + }, + "S3Configuration": { + "$ref": "#/definitions/S3DestinationConfiguration" + }, + "s3BackupMode": { + "enum": [ + "AllData", + "FailedDataOnly" + ], + "type": "string" + } + }, + "required": [ + "RoleARN", + "CatalogConfiguration", + "S3Configuration" + ], + "type": "object" + }, + "InputFormatConfiguration": { + "additionalProperties": false, + "properties": { + "Deserializer": { + "$ref": "#/definitions/Deserializer" + } + }, + "type": "object" + }, + "KMSEncryptionConfig": { + "additionalProperties": false, + "properties": { + "AWSKMSKeyARN": { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::KMS::Key" + }, + "type": "string" + } + }, + "required": [ + "AWSKMSKeyARN" + ], + "type": "object" + }, + "KinesisStreamSourceConfiguration": { + "additionalProperties": false, + "properties": { + "KinesisStreamARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::Kinesis::Stream" + }, + "type": "string" + }, + "RoleARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + }, + "type": "string" + } + }, + "required": [ + "RoleARN", + "KinesisStreamARN" + ], + "type": "object" + }, + "MSKSourceConfiguration": { + "additionalProperties": false, + "properties": { + "AuthenticationConfiguration": { + "$ref": "#/definitions/AuthenticationConfiguration" + }, + "MSKClusterARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::MSK::Cluster" + }, + "type": "string" + }, + "ReadFromTimestamp": { + "type": "string" + }, + "TopicName": { + "maxLength": 255, + "minLength": 1, + "pattern": "[a-zA-Z0-9\\._\\-]+", + "type": "string" + } + }, + "required": [ + "MSKClusterARN", + "TopicName", + "AuthenticationConfiguration" + ], + "type": "object" + }, + "OpenXJsonSerDe": { + "additionalProperties": false, + "properties": { + "CaseInsensitive": { + "type": "boolean" + }, + "ColumnToJsonKeyMappings": { + "additionalProperties": false, + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "ConvertDotsInJsonKeysToUnderscores": { + "type": "boolean" + } + }, + "type": "object" + }, + "OrcSerDe": { + "additionalProperties": false, + "properties": { + "BlockSizeBytes": { + "type": "integer" + }, + "BloomFilterColumns": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "BloomFilterFalsePositiveProbability": { + "type": "number" + }, + "Compression": { + "type": "string" + }, + "DictionaryKeyThreshold": { + "type": "number" + }, + "EnablePadding": { + "type": "boolean" + }, + "FormatVersion": { + "type": "string" + }, + "PaddingTolerance": { + "type": "number" + }, + "RowIndexStride": { + "type": "integer" + }, + "StripeSizeBytes": { + "type": "integer" + } + }, + "type": "object" + }, + "OutputFormatConfiguration": { + "additionalProperties": false, + "properties": { + "Serializer": { + "$ref": "#/definitions/Serializer" + } + }, + "type": "object" + }, + "ParquetSerDe": { + "additionalProperties": false, + "properties": { + "BlockSizeBytes": { + "type": "integer" + }, + "Compression": { + "type": "string" + }, + "EnableDictionaryCompression": { + "type": "boolean" + }, + "MaxPaddingBytes": { + "type": "integer" + }, + "PageSizeBytes": { + "type": "integer" + }, + "WriterVersion": { + "type": "string" + } + }, + "type": "object" + }, + "ProcessingConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "Processors": { + "items": { + "$ref": "#/definitions/Processor" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Processor": { + "additionalProperties": false, + "properties": { + "Parameters": { + "items": { + "$ref": "#/definitions/ProcessorParameter" + }, + "type": "array", + "uniqueItems": true + }, + "Type": { + "enum": [ + "RecordDeAggregation", + "Decompression", + "CloudWatchLogProcessing", + "Lambda", + "MetadataExtraction", + "AppendDelimiterToRecord" + ], + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "ProcessorParameter": { + "additionalProperties": false, + "properties": { + "ParameterName": { + "type": "string" + }, + "ParameterValue": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::Lambda::Function" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/Id", + "typeName": "AWS::Lambda::Alias" + } + } + ], + "type": "string" + } + }, + "required": [ + "ParameterValue", + "ParameterName" + ], + "type": "object" + }, + "RedshiftDestinationConfiguration": { + "additionalProperties": false, + "properties": { + "CloudWatchLoggingOptions": { + "$ref": "#/definitions/CloudWatchLoggingOptions" + }, + "ClusterJDBCURL": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "CopyCommand": { + "$ref": "#/definitions/CopyCommand" + }, + "Password": { + "maxLength": 512, + "minLength": 6, + "type": "string" + }, + "ProcessingConfiguration": { + "$ref": "#/definitions/ProcessingConfiguration" + }, + "RetryOptions": { + "$ref": "#/definitions/RedshiftRetryOptions" + }, + "RoleARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + }, + "type": "string" + }, + "S3BackupConfiguration": { + "$ref": "#/definitions/S3DestinationConfiguration" + }, + "S3BackupMode": { + "enum": [ + "Disabled", + "Enabled" + ], + "type": "string" + }, + "S3Configuration": { + "$ref": "#/definitions/S3DestinationConfiguration" + }, + "SecretsManagerConfiguration": { + "$ref": "#/definitions/SecretsManagerConfiguration" + }, + "Username": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "S3Configuration", + "ClusterJDBCURL", + "CopyCommand", + "RoleARN" + ], + "type": "object" + }, + "RedshiftRetryOptions": { + "additionalProperties": false, + "properties": { + "DurationInSeconds": { + "type": "integer" + } + }, + "type": "object" + }, + "RetryOptions": { + "additionalProperties": false, + "properties": { + "DurationInSeconds": { + "type": "integer" + } + }, + "type": "object" + }, + "S3DestinationConfiguration": { + "additionalProperties": false, + "properties": { + "BucketARN": { + "maxLength": 2048, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::S3::Bucket" + }, + "type": "string" + }, + "BufferingHints": { + "$ref": "#/definitions/BufferingHints" + }, + "CloudWatchLoggingOptions": { + "$ref": "#/definitions/CloudWatchLoggingOptions" + }, + "CompressionFormat": { + "enum": [ + "UNCOMPRESSED", + "GZIP", + "ZIP", + "Snappy", + "HADOOP_SNAPPY" + ], + "type": "string" + }, + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration" + }, + "ErrorOutputPrefix": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "Prefix": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "RoleARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + }, + "type": "string" + } + }, + "required": [ + "BucketARN", + "RoleARN" + ], + "type": "object" + }, + "SchemaConfiguration": { + "additionalProperties": false, + "properties": { + "CatalogId": { + "type": "string" + }, + "DatabaseName": { + "relationshipRef": { + "propertyPath": "/properties/Id", + "typeName": "AWS::Glue::Database" + }, + "type": "string" + }, + "Region": { + "type": "string" + }, + "RoleARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + }, + "type": "string" + }, + "TableName": { + "relationshipRef": { + "propertyPath": "/properties/Id", + "typeName": "AWS::Glue::Table" + }, + "type": "string" + }, + "VersionId": { + "type": "string" + } + }, + "type": "object" + }, + "SecretsManagerConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "RoleARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*:iam::\\d{12}:role/[a-zA-Z_0-9+=,.@\\-_/]+", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + }, + "type": "string" + }, + "SecretARN": { + "maxLength": 2048, + "minLength": 1, + "pattern": "arn:.*:secretsmanager:[a-zA-Z0-9\\-]+:\\d{12}:secret:[a-zA-Z0-9\\-/_+=.@]+", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::SecretsManager::Secret" + }, + "type": "string" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "Serializer": { + "additionalProperties": false, + "properties": { + "OrcSerDe": { + "$ref": "#/definitions/OrcSerDe" + }, + "ParquetSerDe": { + "$ref": "#/definitions/ParquetSerDe" + } + }, + "type": "object" + }, + "SnowflakeBufferingHints": { + "additionalProperties": false, + "properties": { + "IntervalInSeconds": { + "type": "integer" + }, + "SizeInMBs": { + "type": "integer" + } + }, + "type": "object" + }, + "SnowflakeDestinationConfiguration": { + "additionalProperties": false, + "properties": { + "AccountUrl": { + "maxLength": 2048, + "minLength": 24, + "pattern": ".+?\\.snowflakecomputing\\.com", + "type": "string" + }, + "BufferingHints": { + "$ref": "#/definitions/SnowflakeBufferingHints" + }, + "CloudWatchLoggingOptions": { + "$ref": "#/definitions/CloudWatchLoggingOptions" + }, + "ContentColumnName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "DataLoadingOption": { + "enum": [ + "JSON_MAPPING", + "VARIANT_CONTENT_MAPPING", + "VARIANT_CONTENT_AND_METADATA_MAPPING" + ], + "type": "string" + }, + "Database": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyPassphrase": { + "maxLength": 255, + "minLength": 7, + "type": "string" + }, + "MetaDataColumnName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "PrivateKey": { + "maxLength": 4096, + "minLength": 256, + "pattern": "^(?:[A-Za-z0-9+\\/]{4})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$", + "type": "string" + }, + "ProcessingConfiguration": { + "$ref": "#/definitions/ProcessingConfiguration" + }, + "RetryOptions": { + "$ref": "#/definitions/SnowflakeRetryOptions" + }, + "RoleARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + }, + "type": "string" + }, + "S3BackupMode": { + "enum": [ + "FailedDataOnly", + "AllData" + ], + "type": "string" + }, + "S3Configuration": { + "$ref": "#/definitions/S3DestinationConfiguration" + }, + "Schema": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "SecretsManagerConfiguration": { + "$ref": "#/definitions/SecretsManagerConfiguration" + }, + "SnowflakeRoleConfiguration": { + "$ref": "#/definitions/SnowflakeRoleConfiguration" + }, + "SnowflakeVpcConfiguration": { + "$ref": "#/definitions/SnowflakeVpcConfiguration" + }, + "Table": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "User": { + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "AccountUrl", + "Database", + "Schema", + "Table", + "RoleARN", + "S3Configuration" + ], + "type": "object" + }, + "SnowflakeRetryOptions": { + "additionalProperties": false, + "properties": { + "DurationInSeconds": { + "type": "integer" + } + }, + "type": "object" + }, + "SnowflakeRoleConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "SnowflakeRole": { + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SnowflakeVpcConfiguration": { + "additionalProperties": false, + "properties": { + "PrivateLinkVpceId": { + "maxLength": 255, + "minLength": 47, + "pattern": "([a-zA-Z0-9\\-\\_]+\\.){2,3}vpce\\.[a-zA-Z0-9\\-]*\\.vpce-svc\\-[a-zA-Z0-9\\-]{17}$", + "type": "string" + } + }, + "required": [ + "PrivateLinkVpceId" + ], + "type": "object" + }, + "SplunkBufferingHints": { + "additionalProperties": false, + "properties": { + "IntervalInSeconds": { + "type": "integer" + }, + "SizeInMBs": { + "type": "integer" + } + }, + "type": "object" + }, + "SplunkDestinationConfiguration": { + "additionalProperties": false, + "properties": { + "BufferingHints": { + "$ref": "#/definitions/SplunkBufferingHints" + }, + "CloudWatchLoggingOptions": { + "$ref": "#/definitions/CloudWatchLoggingOptions" + }, + "HECAcknowledgmentTimeoutInSeconds": { + "maximum": 600, + "minimum": 180, + "type": "integer" + }, + "HECEndpoint": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "HECEndpointType": { + "enum": [ + "Raw", + "Event" + ], + "type": "string" + }, + "HECToken": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "ProcessingConfiguration": { + "$ref": "#/definitions/ProcessingConfiguration" + }, + "RetryOptions": { + "$ref": "#/definitions/SplunkRetryOptions" + }, + "S3BackupMode": { + "type": "string" + }, + "S3Configuration": { + "$ref": "#/definitions/S3DestinationConfiguration" + }, + "SecretsManagerConfiguration": { + "$ref": "#/definitions/SecretsManagerConfiguration" + } + }, + "required": [ + "HECEndpoint", + "S3Configuration", + "HECEndpointType" + ], + "type": "object" + }, + "SplunkRetryOptions": { + "additionalProperties": false, + "properties": { + "DurationInSeconds": { + "type": "integer" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@%]*$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@%]*$", + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "UniqueKey": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "VpcConfiguration": { + "additionalProperties": false, + "properties": { + "RoleARN": { + "maxLength": 512, + "minLength": 1, + "pattern": "arn:.*", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + }, + "type": "string" + }, + "SecurityGroupIds": { + "items": { + "maxLength": 1024, + "minLength": 1, + "relationshipRef": { + "propertyPath": "/properties/GroupId", + "typeName": "AWS::EC2::SecurityGroup" + }, + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "SubnetIds": { + "items": { + "maxLength": 1024, + "minLength": 1, + "relationshipRef": { + "propertyPath": "/properties/SubnetId", + "typeName": "AWS::EC2::Subnet" + }, + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "RoleARN", + "SubnetIds", + "SecurityGroupIds" + ], + "type": "object" + }, + "VpcEndpointServiceName": { + "maxLength": 255, + "minLength": 47, + "pattern": "([a-zA-Z0-9\\-\\_]+\\.){2,3}vpce\\.[a-zA-Z0-9\\-]*\\.vpce-svc\\-[a-zA-Z0-9\\-]{17}$", + "type": "string" + } + }, + "description": "Resource Type definition for AWS::KinesisFirehose::DeliveryStream", + "handlers": { + "create": { + "permissions": [ + "firehose:CreateDeliveryStream", + "firehose:DescribeDeliveryStream", + "iam:GetRole", + "iam:PassRole", + "kms:CreateGrant", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "firehose:DeleteDeliveryStream", + "firehose:DescribeDeliveryStream", + "kms:RevokeGrant", + "kms:DescribeKey" + ] + }, + "list": { + "permissions": [ + "firehose:ListDeliveryStreams" + ] + }, + "read": { + "permissions": [ + "firehose:DescribeDeliveryStream", + "firehose:ListTagsForDeliveryStream" + ] + }, + "update": { + "permissions": [ + "firehose:UpdateDestination", + "firehose:DescribeDeliveryStream", + "firehose:StartDeliveryStreamEncryption", + "firehose:StopDeliveryStreamEncryption", + "firehose:ListTagsForDeliveryStream", + "firehose:TagDeliveryStream", + "firehose:UntagDeliveryStream", + "kms:CreateGrant", + "kms:RevokeGrant", + "kms:DescribeKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/DeliveryStreamName" + ], + "properties": { + "AmazonOpenSearchServerlessDestinationConfiguration": { + "$ref": "#/definitions/AmazonOpenSearchServerlessDestinationConfiguration" + }, + "AmazonopensearchserviceDestinationConfiguration": { + "$ref": "#/definitions/AmazonopensearchserviceDestinationConfiguration" + }, + "Arn": { + "type": "string" + }, + "DatabaseSourceConfiguration": { + "$ref": "#/definitions/DatabaseSourceConfiguration" + }, + "DeliveryStreamEncryptionConfigurationInput": { + "$ref": "#/definitions/DeliveryStreamEncryptionConfigurationInput" + }, + "DeliveryStreamName": { + "maxLength": 64, + "minLength": 1, + "pattern": "[a-zA-Z0-9._-]+", + "type": "string" + }, + "DeliveryStreamType": { + "enum": [ + "DatabaseAsSource", + "DirectPut", + "KinesisStreamAsSource", + "MSKAsSource" + ], + "type": "string" + }, + "DirectPutSourceConfiguration": { + "$ref": "#/definitions/DirectPutSourceConfiguration" + }, + "ElasticsearchDestinationConfiguration": { + "$ref": "#/definitions/ElasticsearchDestinationConfiguration" + }, + "ExtendedS3DestinationConfiguration": { + "$ref": "#/definitions/ExtendedS3DestinationConfiguration" + }, + "HttpEndpointDestinationConfiguration": { + "$ref": "#/definitions/HttpEndpointDestinationConfiguration" + }, + "IcebergDestinationConfiguration": { + "$ref": "#/definitions/IcebergDestinationConfiguration" + }, + "KinesisStreamSourceConfiguration": { + "$ref": "#/definitions/KinesisStreamSourceConfiguration" + }, + "MSKSourceConfiguration": { + "$ref": "#/definitions/MSKSourceConfiguration" + }, + "RedshiftDestinationConfiguration": { + "$ref": "#/definitions/RedshiftDestinationConfiguration" + }, + "S3DestinationConfiguration": { + "$ref": "#/definitions/S3DestinationConfiguration" + }, + "SnowflakeDestinationConfiguration": { + "$ref": "#/definitions/SnowflakeDestinationConfiguration" + }, + "SplunkDestinationConfiguration": { + "$ref": "#/definitions/SplunkDestinationConfiguration" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "typeName": "AWS::KinesisFirehose::DeliveryStream" +} diff --git a/src/schema/aws-kinesisvideo-signalingchannel.json b/src/schema/aws-kinesisvideo-signalingchannel.json index b5224c44..eab9b7dc 100644 --- a/src/schema/aws-kinesisvideo-signalingchannel.json +++ b/src/schema/aws-kinesisvideo-signalingchannel.json @@ -1,103 +1,124 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. Specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. The following characters can be used: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. Specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. The following characters can be used: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type Definition for AWS::KinesisVideo::SignalingChannel", - "handlers": { - "create": { - "permissions": [ - "kinesisvideo:CreateSignalingChannel", - "kinesisvideo:DescribeSignalingChannel" - ] - }, - "delete": { - "permissions": [ - "kinesisvideo:DeleteSignalingChannel", - "kinesisvideo:DescribeSignalingChannel" - ] - }, - "read": { - "permissions": [ - "kinesisvideo:DescribeSignalingChannel" - ] - }, - "update": { - "permissions": [ - "kinesisvideo:UpdateSignalingChannel", - "kinesisvideo:DescribeSignalingChannel" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the Kinesis Video Signaling Channel.", - "type": "string" - }, - "MessageTtlSeconds": { - "description": "The period of time a signaling channel retains undelivered messages before they are discarded.", - "maximum": 120, - "minimum": 5, - "type": "integer" - }, - "Name": { - "description": "The name of the Kinesis Video Signaling Channel.", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z0-9_.-]+", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 1, - "type": "array", - "uniqueItems": false - }, - "Type": { - "description": "The type of the Kinesis Video Signaling Channel to create. Currently, SINGLE_MASTER is the only supported channel type.", - "enum": [ - "SINGLE_MASTER" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kinesisvideo.git", - "typeName": "AWS::KinesisVideo::SignalingChannel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. Specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. The following characters can be used: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. Specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. The following characters can be used: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type Definition for AWS::KinesisVideo::SignalingChannel", + "handlers": { + "create": { + "permissions": [ + "kinesisvideo:CreateSignalingChannel", + "kinesisvideo:DescribeSignalingChannel", + "kinesisvideo:TagResource" + ] + }, + "delete": { + "permissions": [ + "kinesisvideo:DeleteSignalingChannel", + "kinesisvideo:DescribeSignalingChannel" + ] + }, + "list": { + "permissions": [ + "kinesisvideo:ListSignalingChannels" + ] + }, + "read": { + "permissions": [ + "kinesisvideo:DescribeSignalingChannel", + "kinesisvideo:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "kinesisvideo:UpdateSignalingChannel", + "kinesisvideo:DescribeSignalingChannel", + "kinesisvideo:TagResource", + "kinesisvideo:UntagResource", + "kinesisvideo:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the Kinesis Video Signaling Channel.", + "type": "string" + }, + "MessageTtlSeconds": { + "description": "The period of time a signaling channel retains undelivered messages before they are discarded.", + "maximum": 120, + "minimum": 5, + "type": "integer" + }, + "Name": { + "description": "The name of the Kinesis Video Signaling Channel.", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z0-9_.-]+", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "Type": { + "description": "The type of the Kinesis Video Signaling Channel to create. Currently, SINGLE_MASTER is the only supported channel type.", + "enum": [ + "SINGLE_MASTER" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kinesisvideo.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "kinesisvideo:TagResource", + "kinesisvideo:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::KinesisVideo::SignalingChannel" +} diff --git a/src/schema/aws-kinesisvideo-stream.json b/src/schema/aws-kinesisvideo-stream.json index 87707fbd..8aeddbfc 100644 --- a/src/schema/aws-kinesisvideo-stream.json +++ b/src/schema/aws-kinesisvideo-stream.json @@ -1,118 +1,139 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associated with the Kinesis Video Stream.", - "properties": { - "Key": { - "description": "The key name of the tag. Specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. The following characters can be used: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. Specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. The following characters can be used: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type Definition for AWS::KinesisVideo::Stream", - "handlers": { - "create": { - "permissions": [ - "kinesisvideo:DescribeStream", - "kinesisvideo:CreateStream" - ] - }, - "delete": { - "permissions": [ - "kinesisvideo:DescribeStream", - "kinesisvideo:DeleteStream" - ] - }, - "read": { - "permissions": [ - "kinesisvideo:DescribeStream" - ] - }, - "update": { - "permissions": [ - "kinesisvideo:DescribeStream", - "kinesisvideo:UpdateStream", - "kinesisvideo:UpdateDataRetention" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the Kinesis Video stream.", - "type": "string" - }, - "DataRetentionInHours": { - "description": "The number of hours till which Kinesis Video will retain the data in the stream", - "maximum": 87600, - "minimum": 0, - "type": "integer" - }, - "DeviceName": { - "description": "The name of the device that is writing to the stream.", - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z0-9_.-]+", - "type": "string" - }, - "KmsKeyId": { - "description": "AWS KMS key ID that Kinesis Video Streams uses to encrypt stream data.", - "maxLength": 2048, - "minLength": 1, - "pattern": ".+", - "type": "string" - }, - "MediaType": { - "description": "The media type of the stream. Consumers of the stream can use this information when processing the stream.", - "maxLength": 128, - "minLength": 1, - "pattern": "[\\w\\-\\.\\+]+/[\\w\\-\\.\\+]+(,[\\w\\-\\.\\+]+/[\\w\\-\\.\\+]+)*", - "type": "string" - }, - "Name": { - "description": "The name of the Kinesis Video stream.", - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z0-9_.-]+", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs associated with the Kinesis Video Stream.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 1, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kinesisvideo.git", - "typeName": "AWS::KinesisVideo::Stream" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associated with the Kinesis Video Stream.", + "properties": { + "Key": { + "description": "The key name of the tag. Specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. The following characters can be used: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. Specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. The following characters can be used: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type Definition for AWS::KinesisVideo::Stream", + "handlers": { + "create": { + "permissions": [ + "kinesisvideo:DescribeStream", + "kinesisvideo:CreateStream", + "kinesisvideo:TagStream" + ] + }, + "delete": { + "permissions": [ + "kinesisvideo:DescribeStream", + "kinesisvideo:DeleteStream" + ] + }, + "list": { + "permissions": [ + "kinesisvideo:ListStreams" + ] + }, + "read": { + "permissions": [ + "kinesisvideo:DescribeStream", + "kinesisvideo:ListTagsForStream" + ] + }, + "update": { + "permissions": [ + "kinesisvideo:DescribeStream", + "kinesisvideo:UpdateStream", + "kinesisvideo:UpdateDataRetention", + "kinesisvideo:TagStream", + "kinesisvideo:UntagStream", + "kinesisvideo:ListTagsForStream" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the Kinesis Video stream.", + "type": "string" + }, + "DataRetentionInHours": { + "description": "The number of hours till which Kinesis Video will retain the data in the stream", + "maximum": 87600, + "minimum": 0, + "type": "integer" + }, + "DeviceName": { + "description": "The name of the device that is writing to the stream.", + "maxLength": 128, + "minLength": 1, + "pattern": "[a-zA-Z0-9_.-]+", + "type": "string" + }, + "KmsKeyId": { + "description": "AWS KMS key ID that Kinesis Video Streams uses to encrypt stream data.", + "maxLength": 2048, + "minLength": 1, + "pattern": ".+", + "type": "string" + }, + "MediaType": { + "description": "The media type of the stream. Consumers of the stream can use this information when processing the stream.", + "maxLength": 128, + "minLength": 1, + "pattern": "[\\w\\-\\.\\+]+/[\\w\\-\\.\\+]+(,[\\w\\-\\.\\+]+/[\\w\\-\\.\\+]+)*", + "type": "string" + }, + "Name": { + "description": "The name of the Kinesis Video stream.", + "maxLength": 256, + "minLength": 1, + "pattern": "[a-zA-Z0-9_.-]+", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs associated with the Kinesis Video Stream.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kinesisvideo.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "kinesisvideo:TagStream", + "kinesisvideo:UntagStream" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::KinesisVideo::Stream" +} diff --git a/src/schema/aws-kms-alias.json b/src/schema/aws-kms-alias.json index 20859195..4dba0f02 100644 --- a/src/schema/aws-kms-alias.json +++ b/src/schema/aws-kms-alias.json @@ -1,61 +1,61 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AliasName" - ], - "description": "The ``AWS::KMS::Alias`` resource specifies a display name for a [KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys). You can use an alias to identify a KMS key in the KMS console, in the [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) operation, and in [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations), such as [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) and [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html).\n Adding, deleting, or updating an alias can allow or deny permission to the KMS key. For details, see [ABAC for](https://docs.aws.amazon.com/kms/latest/developerguide/abac.html) in the *Developer Guide*.\n Using an alias to refer to a KMS key can help you simplify key management. For example, an alias in your code can be associated with different KMS keys in different AWS-Regions. For more information, see [Using aliases](https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html) in the *Developer Guide*.\n When specifying an alias, observe the following rules.\n + Each alias is associated with one KMS key, but multiple aliases can be associated with the same KMS key.\n + The alias and its associated KMS key must be in the same AWS-account and Region.\n + The alias name must be unique in the AWS-account and Region. However, you can create aliases with the same name in different AWS-Regions. For example, you can have an ``alias/projectKey`` in multiple Regions, each of which is associated with a KMS key in its Region.\n + Each alias name must begin with ``alias/`` followed by a name, such as ``alias/exampleKey``. The alias name can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). Alias names cannot begin with ``alias/aws/``. That alias name prefix is reserved for [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).\n \n *Regions* \n KMS CloudFormation resources are available in all AWS-Regions in which KMS and CFN are supported.", - "handlers": { - "create": { - "permissions": [ - "kms:CreateAlias" - ] - }, - "delete": { - "permissions": [ - "kms:DeleteAlias" - ] - }, - "list": { - "permissions": [ - "kms:ListAliases" - ] - }, - "read": { - "permissions": [ - "kms:ListAliases" - ] - }, - "update": { - "permissions": [ - "kms:UpdateAlias" - ] - } - }, - "primaryIdentifier": [ - "/properties/AliasName" - ], - "properties": { - "AliasName": { - "description": "Specifies the alias name. This value must begin with ``alias/`` followed by a name, such as ``alias/ExampleAlias``. \n If you change the value of the ``AliasName`` property, the existing alias is deleted and a new alias is created for the specified KMS key. This change can disrupt applications that use the alias. It can also allow or deny access to a KMS key affected by attribute-based access control (ABAC).\n The alias must be string of 1-256 characters. It can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). The alias name cannot begin with ``alias/aws/``. The ``alias/aws/`` prefix is reserved for [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).", - "maxLength": 256, - "minLength": 1, - "pattern": "^(alias/)[a-zA-Z0-9:/_-]+$", - "type": "string" - }, - "TargetKeyId": { - "description": "Associates the alias with the specified [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). The KMS key must be in the same AWS-account and Region.\n A valid key ID is required. If you supply a null or empty string value, this operation returns an error.\n For help finding the key ID and ARN, see [Finding the key ID and ARN](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html#find-cmk-id-arn) in the *Developer Guide*.\n Specify the key ID or the key ARN of the KMS key.\n For example:\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` \n \n To get the key ID and key ARN for a KMS key, use [ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html) or [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html).", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "AliasName", - "TargetKeyId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::KMS::Alias" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AliasName" + ], + "description": "The ``AWS::KMS::Alias`` resource specifies a display name for a [KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys). You can use an alias to identify a KMS key in the KMS console, in the [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) operation, and in [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations), such as [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) and [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html).\n Adding, deleting, or updating an alias can allow or deny permission to the KMS key. For details, see [ABAC for](https://docs.aws.amazon.com/kms/latest/developerguide/abac.html) in the *Developer Guide*.\n Using an alias to refer to a KMS key can help you simplify key management. For example, an alias in your code can be associated with different KMS keys in different AWS-Regions. For more information, see [Using aliases](https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html) in the *Developer Guide*.\n When specifying an alias, observe the following rules.\n + Each alias is associated with one KMS key, but multiple aliases can be associated with the same KMS key.\n + The alias and its associated KMS key must be in the same AWS-account and Region.\n + The alias name must be unique in the AWS-account and Region. However, you can create aliases with the same name in different AWS-Regions. For example, you can have an ``alias/projectKey`` in multiple Regions, each of which is associated with a KMS key in its Region.\n + Each alias name must begin with ``alias/`` followed by a name, such as ``alias/exampleKey``. The alias name can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). Alias names cannot begin with ``alias/aws/``. That alias name prefix is reserved for [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).\n \n *Regions* \n KMS CloudFormation resources are available in all AWS-Regions in which KMS and CFN are supported.", + "handlers": { + "create": { + "permissions": [ + "kms:CreateAlias" + ] + }, + "delete": { + "permissions": [ + "kms:DeleteAlias" + ] + }, + "list": { + "permissions": [ + "kms:ListAliases" + ] + }, + "read": { + "permissions": [ + "kms:ListAliases" + ] + }, + "update": { + "permissions": [ + "kms:UpdateAlias" + ] + } + }, + "primaryIdentifier": [ + "/properties/AliasName" + ], + "properties": { + "AliasName": { + "description": "Specifies the alias name. This value must begin with ``alias/`` followed by a name, such as ``alias/ExampleAlias``. \n If you change the value of the ``AliasName`` property, the existing alias is deleted and a new alias is created for the specified KMS key. This change can disrupt applications that use the alias. It can also allow or deny access to a KMS key affected by attribute-based access control (ABAC).\n The alias must be string of 1-256 characters. It can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). The alias name cannot begin with ``alias/aws/``. The ``alias/aws/`` prefix is reserved for [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).", + "maxLength": 256, + "minLength": 1, + "pattern": "^(alias/)[a-zA-Z0-9:/_-]+$", + "type": "string" + }, + "TargetKeyId": { + "description": "Associates the alias with the specified [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). The KMS key must be in the same AWS-account and Region.\n A valid key ID is required. If you supply a null or empty string value, this operation returns an error.\n For help finding the key ID and ARN, see [Finding the key ID and ARN](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html#find-cmk-id-arn) in the *Developer Guide*.\n Specify the key ID or the key ARN of the KMS key.\n For example:\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab``\n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab``\n \n To get the key ID and key ARN for a KMS key, use [ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html) or [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html).", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "AliasName", + "TargetKeyId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::KMS::Alias" +} diff --git a/src/schema/aws-kms-key.json b/src/schema/aws-kms-key.json index 704bfe45..4815ba16 100644 --- a/src/schema/aws-kms-key.json +++ b/src/schema/aws-kms-key.json @@ -1,199 +1,204 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair. A tag consists of a tag key and a tag value. Tag keys and tag values are both required, but tag values can be empty (null) strings.\n Do not include confidential or sensitive information in this field. This field may be displayed in plaintext in CloudTrail logs and other output.\n For information about the rules that apply to tag keys and tag values, see [User-Defined Tag Restrictions](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html) in the *Billing and Cost Management User Guide*.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that's 1 to 128 Unicode characters in length and can't be prefixed with ``aws:``. digits, whitespace, ``_``, ``.``, ``:``, ``/``, ``=``, ``+``, ``@``, ``-``, and ``\"``.\n For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that's 1 to 256 characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, ``_``, ``.``, ``/``, ``=``, ``+``, and ``-``.\n For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The ``AWS::KMS::Key`` resource specifies an [KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) in KMSlong. You can use this resource to create symmetric encryption KMS keys, asymmetric KMS keys for encryption or signing, and symmetric HMAC KMS keys. You can use ``AWS::KMS::Key`` to create [multi-Region primary keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html#mrk-primary-key) of all supported types. To replicate a multi-Region key, use the ``AWS::KMS::ReplicaKey`` resource.\n If you change the value of the ``KeySpec``, ``KeyUsage``, ``Origin``, or ``MultiRegion`` properties of an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing any of its immutable property values.\n KMS replaced the term *customer master key (CMK)* with ** and *KMS key*. The concept has not changed. To prevent breaking changes, KMS is keeping some variations of this term.\n You can use symmetric encryption KMS keys to encrypt and decrypt small amounts of data, but they are more commonly used to generate data keys and data key pairs. You can also use a symmetric encryption KMS key to encrypt data stored in AWS services that are [integrated with](https://docs.aws.amazon.com//kms/features/#AWS_Service_Integration). For more information, see [Symmetric encryption KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks) in the *Developer Guide*.\n You can use asymmetric KMS keys to encrypt and decrypt data or sign messages and verify signatures. To create an asymmetric key, you must specify an asymmetric ``KeySpec`` value and a ``KeyUsage`` value. For details, see [Asymmetric keys in](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) in the *Developer Guide*.\n You can use HMAC KMS keys (which are also symmetric keys) to generate and verify hash-based message authentication codes. To create an HMAC key, you must specify an HMAC ``KeySpec`` value and a ``KeyUsage`` value of ``GENERATE_VERIFY_MAC``. For details, see [HMAC keys in](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html) in the *Developer Guide*.\n You can also create symmetric encryption, asymmetric, and HMAC multi-Region primary keys. To create a multi-Region primary key, set the ``MultiRegion`` property to ``true``. For information about multi-Region keys, see [Multi-Region keys in](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the *Developer Guide*.\n You cannot use the ``AWS::KMS::Key`` resource to specify a KMS key with [imported key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) or a KMS key in a [custom key store](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html).\n *Regions* \n KMS CloudFormation resources are available in all Regions in which KMS and CFN are supported. You can use the ``AWS::KMS::Key`` resource to create and manage all KMS key types that are supported in a Region.", - "handlers": { - "create": { - "permissions": [ - "kms:CreateKey", - "kms:EnableKeyRotation", - "kms:DisableKey", - "kms:TagResource", - "kms:PutKeyPolicy" - ] - }, - "delete": { - "permissions": [ - "kms:DescribeKey", - "kms:ScheduleKeyDeletion" - ] - }, - "list": { - "permissions": [ - "kms:ListKeys", - "kms:DescribeKey" - ] - }, - "read": { - "permissions": [ - "kms:DescribeKey", - "kms:GetKeyPolicy", - "kms:GetKeyRotationStatus", - "kms:ListResourceTags" - ] - }, - "update": { - "permissions": [ - "kms:DescribeKey", - "kms:DisableKey", - "kms:DisableKeyRotation", - "kms:EnableKey", - "kms:EnableKeyRotation", - "kms:PutKeyPolicy", - "kms:TagResource", - "kms:UntagResource", - "kms:UpdateKeyDescription", - "kms:ListResourceTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/KeyId" - ], - "properties": { - "Arn": { - "description": "", - "type": "string" - }, - "BypassPolicyLockoutSafetyCheck": { - "default": false, - "description": "Skips (\"bypasses\") the key policy lockout safety check. The default value is false.\n Setting this value to true increases the risk that the KMS key becomes unmanageable. Do not set this value to true indiscriminately.\n For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html#prevent-unmanageable-key) in the *Developer Guide*.\n Use this parameter only when you intend to prevent the principal that is making the request from making a subsequent [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) request on the KMS key.", - "type": "boolean" - }, - "Description": { - "description": "A description of the KMS key. Use a description that helps you to distinguish this KMS key from others in the account, such as its intended use.", - "maxLength": 8192, - "minLength": 0, - "type": "string" - }, - "EnableKeyRotation": { - "description": "Enables automatic rotation of the key material for the specified KMS key. By default, automatic key rotation is not enabled.\n KMS supports automatic rotation only for symmetric encryption KMS keys (``KeySpec`` = ``SYMMETRIC_DEFAULT``). For asymmetric KMS keys, HMAC KMS keys, and KMS keys with Origin ``EXTERNAL``, omit the ``EnableKeyRotation`` property or set it to ``false``.\n To enable automatic key rotation of the key material for a multi-Region KMS key, set ``EnableKeyRotation`` to ``true`` on the primary key (created by using ``AWS::KMS::Key``). KMS copies the rotation status to all replica keys. For details, see [Rotating multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate) in the *Developer Guide*.\n When you enable automatic rotation, KMS automatically creates new key material for the KMS key one year after the enable date and every year thereafter. KMS retains all key material until you delete the KMS key. For detailed information about automatic key rotation, see [Rotating KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) in the *Developer Guide*.", - "type": "boolean" - }, - "Enabled": { - "description": "Specifies whether the KMS key is enabled. Disabled KMS keys cannot be used in cryptographic operations.\n When ``Enabled`` is ``true``, the *key state* of the KMS key is ``Enabled``. When ``Enabled`` is ``false``, the key state of the KMS key is ``Disabled``. The default value is ``true``.\n The actual key state of the KMS key might be affected by actions taken outside of CloudFormation, such as running the [EnableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKey.html), [DisableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisableKey.html), or [ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html) operations.\n For information about the key states of a KMS key, see [Key state: Effect on your KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the *Developer Guide*.", - "type": "boolean" - }, - "KeyId": { - "description": "", - "type": "string" - }, - "KeyPolicy": { - "default": "{\n \"Version\": \"2012-10-17\",\n \"Id\": \"key-default\",\n \"Statement\": [\n {\n \"Sid\": \"Enable IAM User Permissions\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"arn::iam:::root\"\n },\n \"Action\": \"kms:*\",\n \"Resource\": \"*\"\n }\n ]\n}", - "description": "The key policy to attach to the KMS key.\n If you provide a key policy, it must meet the following criteria:\n + The key policy must allow the caller to make a subsequent [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) request on the KMS key. This reduces the risk that the KMS key becomes unmanageable. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) in the *Developer Guide*. (To omit this condition, set ``BypassPolicyLockoutSafetyCheck`` to true.)\n + Each statement in the key policy must contain one or more principals. The principals in the key policy must exist and be visible to KMS. When you create a new AWS principal (for example, an IAM user or role), you might need to enforce a delay before including the new principal in a key policy because the new principal might not be immediately visible to KMS. For more information, see [Changes that I make are not always immediately visible](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_eventual-consistency) in the *User Guide*.\n \n If you do not provide a key policy, KMS attaches a default key policy to the KMS key. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default) in the *Developer Guide*.\n A key policy document can include only the following characters:\n + Printable ASCII characters\n + Printable characters in the Basic Latin and Latin-1 Supplement character set\n + The tab (``\\u0009``), line feed (``\\u000A``), and carriage return (``\\u000D``) special characters\n \n *Minimum*: ``1`` \n *Maximum*: ``32768``", - "type": [ - "object", - "string" - ] - }, - "KeySpec": { - "default": "SYMMETRIC_DEFAULT", - "description": "Specifies the type of KMS key to create. The default value, ``SYMMETRIC_DEFAULT``, creates a KMS key with a 256-bit symmetric key for encryption and decryption. In China Regions, ``SYMMETRIC_DEFAULT`` creates a 128-bit symmetric key that uses SM4 encryption. You can't change the ``KeySpec`` value after the KMS key is created. For help choosing a key spec for your KMS key, see [Choosing a KMS key type](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose.html) in the *Developer Guide*.\n The ``KeySpec`` property determines the type of key material in the KMS key and the algorithms that the KMS key supports. To further restrict the algorithms that can be used with the KMS key, use a condition key in its key policy or IAM policy. For more information, see [condition keys](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms) in the *Developer Guide*.\n If you change the value of the ``KeySpec`` property on an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing an immutable property value.\n [services that are integrated with](https://docs.aws.amazon.com/kms/features/#AWS_Service_Integration) use symmetric encryption KMS keys to protect your data. These services do not support encryption with asymmetric KMS keys. For help determining whether a KMS key is asymmetric, see [Identifying asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/find-symm-asymm.html) in the *Developer Guide*.\n KMS supports the following key specs for KMS keys:\n + Symmetric encryption key (default)\n + ``SYMMETRIC_DEFAULT`` (AES-256-GCM)\n \n + HMAC keys (symmetric)\n + ``HMAC_224`` \n + ``HMAC_256`` \n + ``HMAC_384`` \n + ``HMAC_512`` \n \n + Asymmetric RSA key pairs (encryption and decryption *or* signing and verification)\n + ``RSA_2048`` \n + ``RSA_3072`` \n + ``RSA_4096`` \n \n + Asymmetric NIST-recommended elliptic curve key pairs (signing and verification *or* deriving shared secrets)\n + ``ECC_NIST_P256`` (secp256r1)\n + ``ECC_NIST_P384`` (secp384r1)\n + ``ECC_NIST_P521`` (secp521r1)\n \n + Other asymmetric elliptic curve key pairs (signing and verification)\n + ``ECC_SECG_P256K1`` (secp256k1), commonly used for cryptocurrencies.\n \n + SM2 key pairs (encryption and decryption *or* signing and verification *or* deriving shared secrets)\n + ``SM2`` (China Regions only)", - "enum": [ - "SYMMETRIC_DEFAULT", - "RSA_2048", - "RSA_3072", - "RSA_4096", - "ECC_NIST_P256", - "ECC_NIST_P384", - "ECC_NIST_P521", - "ECC_SECG_P256K1", - "HMAC_224", - "HMAC_256", - "HMAC_384", - "HMAC_512", - "SM2" - ], - "type": "string" - }, - "KeyUsage": { - "default": "ENCRYPT_DECRYPT", - "description": "Determines the [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations) for which you can use the KMS key. The default value is ``ENCRYPT_DECRYPT``. This property is required for asymmetric KMS keys and HMAC KMS keys. You can't change the ``KeyUsage`` value after the KMS key is created.\n If you change the value of the ``KeyUsage`` property on an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing an immutable property value.\n Select only one valid value.\n + For symmetric encryption KMS keys, omit the parameter or specify ``ENCRYPT_DECRYPT``.\n + For HMAC KMS keys (symmetric), specify ``GENERATE_VERIFY_MAC``.\n + For asymmetric KMS keys with RSA key pairs, specify ``ENCRYPT_DECRYPT`` or ``SIGN_VERIFY``.\n + For asymmetric KMS keys with NIST-recommended elliptic curve key pairs, specify ``SIGN_VERIFY`` or ``KEY_AGREEMENT``.\n + For asymmetric KMS keys with ``ECC_SECG_P256K1`` key pairs specify ``SIGN_VERIFY``.\n + For asymmetric KMS keys with SM2 key pairs (China Regions only), specify ``ENCRYPT_DECRYPT``, ``SIGN_VERIFY``, or ``KEY_AGREEMENT``.", - "enum": [ - "ENCRYPT_DECRYPT", - "SIGN_VERIFY", - "GENERATE_VERIFY_MAC", - "KEY_AGREEMENT" - ], - "type": "string" - }, - "MultiRegion": { - "default": false, - "description": "Creates a multi-Region primary key that you can replicate in other AWS-Regions. You can't change the ``MultiRegion`` value after the KMS key is created.\n For a list of AWS-Regions in which multi-Region keys are supported, see [Multi-Region keys in](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the **.\n If you change the value of the ``MultiRegion`` property on an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing an immutable property value.\n For a multi-Region key, set to this property to ``true``. For a single-Region key, omit this property or set it to ``false``. The default value is ``false``.\n *Multi-Region keys* are an KMS feature that lets you create multiple interoperable KMS keys in different AWS-Regions. Because these KMS keys have the same key ID, key material, and other metadata, you can use them to encrypt data in one AWS-Region and decrypt it in a different AWS-Region without making a cross-Region call or exposing the plaintext data. For more information, see [Multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the *Developer Guide*.\n You can create a symmetric encryption, HMAC, or asymmetric multi-Region KMS key, and you can create a multi-Region key with imported key material. However, you cannot create a multi-Region key in a custom key store.\n To create a replica of this primary key in a different AWS-Region , create an [AWS::KMS::ReplicaKey](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-replicakey.html) resource in a CloudFormation stack in the replica Region. Specify the key ARN of this primary key.", - "type": "boolean" - }, - "Origin": { - "default": "AWS_KMS", - "description": "The source of the key material for the KMS key. You cannot change the origin after you create the KMS key. The default is ``AWS_KMS``, which means that KMS creates the key material.\n To [create a KMS key with no key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys-create-cmk.html) (for imported key material), set this value to ``EXTERNAL``. For more information about importing key material into KMS, see [Importing Key Material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) in the *Developer Guide*.\n You can ignore ``ENABLED`` when Origin is ``EXTERNAL``. When a KMS key with Origin ``EXTERNAL`` is created, the key state is ``PENDING_IMPORT`` and ``ENABLED`` is ``false``. After you import the key material, ``ENABLED`` updated to ``true``. The KMS key can then be used for Cryptographic Operations. \n CFN doesn't support creating an ``Origin`` parameter of the ``AWS_CLOUDHSM`` or ``EXTERNAL_KEY_STORE`` values.", - "enum": [ - "AWS_KMS", - "EXTERNAL" - ], - "type": "string" - }, - "PendingWindowInDays": { - "description": "Specifies the number of days in the waiting period before KMS deletes a KMS key that has been removed from a CloudFormation stack. Enter a value between 7 and 30 days. The default value is 30 days.\n When you remove a KMS key from a CloudFormation stack, KMS schedules the KMS key for deletion and starts the mandatory waiting period. The ``PendingWindowInDays`` property determines the length of waiting period. During the waiting period, the key state of KMS key is ``Pending Deletion`` or ``Pending Replica Deletion``, which prevents the KMS key from being used in cryptographic operations. When the waiting period expires, KMS permanently deletes the KMS key.\n KMS will not delete a [multi-Region primary key](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) that has replica keys. If you remove a multi-Region primary key from a CloudFormation stack, its key state changes to ``PendingReplicaDeletion`` so it cannot be replicated or used in cryptographic operations. This state can persist indefinitely. When the last of its replica keys is deleted, the key state of the primary key changes to ``PendingDeletion`` and the waiting period specified by ``PendingWindowInDays`` begins. When this waiting period expires, KMS deletes the primary key. For details, see [Deleting multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-delete.html) in the *Developer Guide*.\n You cannot use a CloudFormation template to cancel deletion of the KMS key after you remove it from the stack, regardless of the waiting period. If you specify a KMS key in your template, even one with the same name, CloudFormation creates a new KMS key. To cancel deletion of a KMS key, use the KMS console or the [CancelKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_CancelKeyDeletion.html) operation.\n For information about the ``Pending Deletion`` and ``Pending Replica Deletion`` key states, see [Key state: Effect on your KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the *Developer Guide*. For more information about deleting KMS keys, see the [ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html) operation in the *API Reference* and [Deleting KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) in the *Developer Guide*.", - "maximum": 30, - "minimum": 7, - "type": "integer" - }, - "RotationPeriodInDays": { - "default": 365, - "description": "Specifies a custom period of time between each rotation date. If no value is specified, the default value is 365 days.\n The rotation period defines the number of days after you enable automatic key rotation that KMS will rotate your key material, and the number of days between each automatic rotation thereafter.\n You can use the [kms:RotationPeriodInDays](https://docs.aws.amazon.com/kms/latest/developerguide/conditions-kms.html#conditions-kms-rotation-period-in-days) condition key to further constrain the values that principals can specify in the ``RotationPeriodInDays`` parameter.\n For more information about rotating KMS keys and automatic rotation, see [Rotating keys](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) in the *Developer Guide*.", - "maximum": 2560, - "minimum": 90, - "type": "integer" - }, - "Tags": { - "description": "Assigns one or more tags to the replica key.\n Tagging or untagging a KMS key can allow or deny permission to the KMS key. For details, see [ABAC for](https://docs.aws.amazon.com/kms/latest/developerguide/abac.html) in the *Developer Guide*.\n For information about tags in KMS, see [Tagging keys](https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html) in the *Developer Guide*. For information about tags in CloudFormation, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/KeyId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kms", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::KMS::Key", - "writeOnlyProperties": [ - "/properties/PendingWindowInDays", - "/properties/BypassPolicyLockoutSafetyCheck", - "/properties/RotationPeriodInDays" - ] -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair. A tag consists of a tag key and a tag value. Tag keys and tag values are both required, but tag values can be empty (null) strings.\n Do not include confidential or sensitive information in this field. This field may be displayed in plaintext in CloudTrail logs and other output.\n For information about the rules that apply to tag keys and tag values, see [User-Defined Tag Restrictions](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html) in the *Billing and Cost Management User Guide*.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that's 1 to 128 Unicode characters in length and can't be prefixed with ``aws:``. digits, whitespace, ``_``, ``.``, ``:``, ``/``, ``=``, ``+``, ``@``, ``-``, and ``\"``.\n For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that's 1 to 256 characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, ``_``, ``.``, ``/``, ``=``, ``+``, and ``-``.\n For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The ``AWS::KMS::Key`` resource specifies an [KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) in KMSlong. You can use this resource to create symmetric encryption KMS keys, asymmetric KMS keys for encryption or signing, and symmetric HMAC KMS keys. You can use ``AWS::KMS::Key`` to create [multi-Region primary keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html#mrk-primary-key) of all supported types. To replicate a multi-Region key, use the ``AWS::KMS::ReplicaKey`` resource.\n If you change the value of the ``KeySpec``, ``KeyUsage``, ``Origin``, or ``MultiRegion`` properties of an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing any of its immutable property values.\n KMS replaced the term *customer master key (CMK)* with ** and *KMS key*. The concept has not changed. To prevent breaking changes, KMS is keeping some variations of this term.\n You can use symmetric encryption KMS keys to encrypt and decrypt small amounts of data, but they are more commonly used to generate data keys and data key pairs. You can also use a symmetric encryption KMS key to encrypt data stored in AWS services that are [integrated with](https://docs.aws.amazon.com//kms/features/#AWS_Service_Integration). For more information, see [Symmetric encryption KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks) in the *Developer Guide*.\n You can use asymmetric KMS keys to encrypt and decrypt data or sign messages and verify signatures. To create an asymmetric key, you must specify an asymmetric ``KeySpec`` value and a ``KeyUsage`` value. For details, see [Asymmetric keys in](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) in the *Developer Guide*.\n You can use HMAC KMS keys (which are also symmetric keys) to generate and verify hash-based message authentication codes. To create an HMAC key, you must specify an HMAC ``KeySpec`` value and a ``KeyUsage`` value of ``GENERATE_VERIFY_MAC``. For details, see [HMAC keys in](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html) in the *Developer Guide*.\n You can also create symmetric encryption, asymmetric, and HMAC multi-Region primary keys. To create a multi-Region primary key, set the ``MultiRegion`` property to ``true``. For information about multi-Region keys, see [Multi-Region keys in](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the *Developer Guide*.\n You cannot use the ``AWS::KMS::Key`` resource to specify a KMS key with [imported key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) or a KMS key in a [custom key store](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html).\n *Regions* \n KMS CloudFormation resources are available in all Regions in which KMS and CFN are supported. You can use the ``AWS::KMS::Key`` resource to create and manage all KMS key types that are supported in a Region.", + "handlers": { + "create": { + "permissions": [ + "kms:CreateKey", + "kms:EnableKeyRotation", + "kms:DisableKey", + "kms:TagResource", + "kms:PutKeyPolicy" + ] + }, + "delete": { + "permissions": [ + "kms:DescribeKey", + "kms:ScheduleKeyDeletion" + ] + }, + "list": { + "permissions": [ + "kms:ListKeys", + "kms:DescribeKey" + ] + }, + "read": { + "permissions": [ + "kms:DescribeKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:ListResourceTags" + ] + }, + "update": { + "permissions": [ + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:PutKeyPolicy", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateKeyDescription", + "kms:ListResourceTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/KeyId" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "BypassPolicyLockoutSafetyCheck": { + "default": false, + "description": "Skips (\"bypasses\") the key policy lockout safety check. The default value is false.\n Setting this value to true increases the risk that the KMS key becomes unmanageable. Do not set this value to true indiscriminately.\n For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html#prevent-unmanageable-key) in the *Developer Guide*.\n Use this parameter only when you intend to prevent the principal that is making the request from making a subsequent [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) request on the KMS key.", + "type": "boolean" + }, + "Description": { + "description": "A description of the KMS key. Use a description that helps you to distinguish this KMS key from others in the account, such as its intended use.", + "maxLength": 8192, + "minLength": 0, + "type": "string" + }, + "EnableKeyRotation": { + "description": "Enables automatic rotation of the key material for the specified KMS key. By default, automatic key rotation is not enabled.\n KMS supports automatic rotation only for symmetric encryption KMS keys (``KeySpec`` = ``SYMMETRIC_DEFAULT``). For asymmetric KMS keys, HMAC KMS keys, and KMS keys with Origin ``EXTERNAL``, omit the ``EnableKeyRotation`` property or set it to ``false``.\n To enable automatic key rotation of the key material for a multi-Region KMS key, set ``EnableKeyRotation`` to ``true`` on the primary key (created by using ``AWS::KMS::Key``). KMS copies the rotation status to all replica keys. For details, see [Rotating multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate) in the *Developer Guide*.\n When you enable automatic rotation, KMS automatically creates new key material for the KMS key one year after the enable date and every year thereafter. KMS retains all key material until you delete the KMS key. For detailed information about automatic key rotation, see [Rotating KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) in the *Developer Guide*.", + "type": "boolean" + }, + "Enabled": { + "description": "Specifies whether the KMS key is enabled. Disabled KMS keys cannot be used in cryptographic operations.\n When ``Enabled`` is ``true``, the *key state* of the KMS key is ``Enabled``. When ``Enabled`` is ``false``, the key state of the KMS key is ``Disabled``. The default value is ``true``.\n The actual key state of the KMS key might be affected by actions taken outside of CloudFormation, such as running the [EnableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKey.html), [DisableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisableKey.html), or [ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html) operations.\n For information about the key states of a KMS key, see [Key state: Effect on your KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the *Developer Guide*.", + "type": "boolean" + }, + "KeyId": { + "description": "", + "type": "string" + }, + "KeyPolicy": { + "default": "{\n \"Version\": \"2012-10-17\",\n \"Id\": \"key-default\",\n \"Statement\": [\n {\n \"Sid\": \"Enable IAM User Permissions\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"arn::iam:::root\"\n },\n \"Action\": \"kms:*\",\n \"Resource\": \"*\"\n }\n ]\n}", + "description": "The key policy to attach to the KMS key.\n If you provide a key policy, it must meet the following criteria:\n + The key policy must allow the caller to make a subsequent [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) request on the KMS key. This reduces the risk that the KMS key becomes unmanageable. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) in the *Developer Guide*. (To omit this condition, set ``BypassPolicyLockoutSafetyCheck`` to true.)\n + Each statement in the key policy must contain one or more principals. The principals in the key policy must exist and be visible to KMS. When you create a new AWS principal (for example, an IAM user or role), you might need to enforce a delay before including the new principal in a key policy because the new principal might not be immediately visible to KMS. For more information, see [Changes that I make are not always immediately visible](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_eventual-consistency) in the *User Guide*.\n \n If you do not provide a key policy, KMS attaches a default key policy to the KMS key. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default) in the *Developer Guide*.\n A key policy document can include only the following characters:\n + Printable ASCII characters\n + Printable characters in the Basic Latin and Latin-1 Supplement character set\n + The tab (``\\u0009``), line feed (``\\u000A``), and carriage return (``\\u000D``) special characters\n \n *Minimum*: ``1``\n *Maximum*: ``32768``", + "type": [ + "object", + "string" + ] + }, + "KeySpec": { + "default": "SYMMETRIC_DEFAULT", + "description": "Specifies the type of KMS key to create. The default value, ``SYMMETRIC_DEFAULT``, creates a KMS key with a 256-bit symmetric key for encryption and decryption. In China Regions, ``SYMMETRIC_DEFAULT`` creates a 128-bit symmetric key that uses SM4 encryption. You can't change the ``KeySpec`` value after the KMS key is created. For help choosing a key spec for your KMS key, see [Choosing a KMS key type](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose.html) in the *Developer Guide*.\n The ``KeySpec`` property determines the type of key material in the KMS key and the algorithms that the KMS key supports. To further restrict the algorithms that can be used with the KMS key, use a condition key in its key policy or IAM policy. For more information, see [condition keys](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms) in the *Developer Guide*.\n If you change the value of the ``KeySpec`` property on an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing an immutable property value.\n [services that are integrated with](https://docs.aws.amazon.com/kms/features/#AWS_Service_Integration) use symmetric encryption KMS keys to protect your data. These services do not support encryption with asymmetric KMS keys. For help determining whether a KMS key is asymmetric, see [Identifying asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/find-symm-asymm.html) in the *Developer Guide*.\n KMS supports the following key specs for KMS keys:\n + Symmetric encryption key (default)\n + ``SYMMETRIC_DEFAULT`` (AES-256-GCM)\n \n + HMAC keys (symmetric)\n + ``HMAC_224`` \n + ``HMAC_256`` \n + ``HMAC_384`` \n + ``HMAC_512`` \n \n + Asymmetric RSA key pairs (encryption and decryption *or* signing and verification)\n + ``RSA_2048`` \n + ``RSA_3072`` \n + ``RSA_4096`` \n \n + Asymmetric NIST-recommended elliptic curve key pairs (signing and verification *or* deriving shared secrets)\n + ``ECC_NIST_P256`` (secp256r1)\n + ``ECC_NIST_P384`` (secp384r1)\n + ``ECC_NIST_P521`` (secp521r1)\n \n + Other asymmetric elliptic curve key pairs (signing and verification)\n + ``ECC_SECG_P256K1`` (secp256k1), commonly used for cryptocurrencies.\n \n + SM2 key pairs (encryption and decryption *or* signing and verification *or* deriving shared secrets)\n + ``SM2`` (China Regions only)", + "enum": [ + "SYMMETRIC_DEFAULT", + "RSA_2048", + "RSA_3072", + "RSA_4096", + "ECC_NIST_P256", + "ECC_NIST_P384", + "ECC_NIST_P521", + "ECC_SECG_P256K1", + "HMAC_224", + "HMAC_256", + "HMAC_384", + "HMAC_512", + "SM2" + ], + "type": "string" + }, + "KeyUsage": { + "default": "ENCRYPT_DECRYPT", + "description": "Determines the [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations) for which you can use the KMS key. The default value is ``ENCRYPT_DECRYPT``. This property is required for asymmetric KMS keys and HMAC KMS keys. You can't change the ``KeyUsage`` value after the KMS key is created.\n If you change the value of the ``KeyUsage`` property on an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing an immutable property value.\n Select only one valid value.\n + For symmetric encryption KMS keys, omit the parameter or specify ``ENCRYPT_DECRYPT``.\n + For HMAC KMS keys (symmetric), specify ``GENERATE_VERIFY_MAC``.\n + For asymmetric KMS keys with RSA key pairs, specify ``ENCRYPT_DECRYPT`` or ``SIGN_VERIFY``.\n + For asymmetric KMS keys with NIST-recommended elliptic curve key pairs, specify ``SIGN_VERIFY`` or ``KEY_AGREEMENT``.\n + For asymmetric KMS keys with ``ECC_SECG_P256K1`` key pairs specify ``SIGN_VERIFY``.\n + For asymmetric KMS keys with SM2 key pairs (China Regions only), specify ``ENCRYPT_DECRYPT``, ``SIGN_VERIFY``, or ``KEY_AGREEMENT``.", + "enum": [ + "ENCRYPT_DECRYPT", + "SIGN_VERIFY", + "GENERATE_VERIFY_MAC", + "KEY_AGREEMENT" + ], + "type": "string" + }, + "MultiRegion": { + "default": false, + "description": "Creates a multi-Region primary key that you can replicate in other AWS-Regions. You can't change the ``MultiRegion`` value after the KMS key is created.\n For a list of AWS-Regions in which multi-Region keys are supported, see [Multi-Region keys in](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the **.\n If you change the value of the ``MultiRegion`` property on an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing an immutable property value.\n For a multi-Region key, set to this property to ``true``. For a single-Region key, omit this property or set it to ``false``. The default value is ``false``.\n *Multi-Region keys* are an KMS feature that lets you create multiple interoperable KMS keys in different AWS-Regions. Because these KMS keys have the same key ID, key material, and other metadata, you can use them to encrypt data in one AWS-Region and decrypt it in a different AWS-Region without making a cross-Region call or exposing the plaintext data. For more information, see [Multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the *Developer Guide*.\n You can create a symmetric encryption, HMAC, or asymmetric multi-Region KMS key, and you can create a multi-Region key with imported key material. However, you cannot create a multi-Region key in a custom key store.\n To create a replica of this primary key in a different AWS-Region , create an [AWS::KMS::ReplicaKey](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-replicakey.html) resource in a CloudFormation stack in the replica Region. Specify the key ARN of this primary key.", + "type": "boolean" + }, + "Origin": { + "default": "AWS_KMS", + "description": "The source of the key material for the KMS key. You cannot change the origin after you create the KMS key. The default is ``AWS_KMS``, which means that KMS creates the key material.\n To [create a KMS key with no key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys-create-cmk.html) (for imported key material), set this value to ``EXTERNAL``. For more information about importing key material into KMS, see [Importing Key Material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) in the *Developer Guide*.\n You can ignore ``ENABLED`` when Origin is ``EXTERNAL``. When a KMS key with Origin ``EXTERNAL`` is created, the key state is ``PENDING_IMPORT`` and ``ENABLED`` is ``false``. After you import the key material, ``ENABLED`` updated to ``true``. The KMS key can then be used for Cryptographic Operations. \n CFN doesn't support creating an ``Origin`` parameter of the ``AWS_CLOUDHSM`` or ``EXTERNAL_KEY_STORE`` values.", + "enum": [ + "AWS_KMS", + "EXTERNAL" + ], + "type": "string" + }, + "PendingWindowInDays": { + "description": "Specifies the number of days in the waiting period before KMS deletes a KMS key that has been removed from a CloudFormation stack. Enter a value between 7 and 30 days. The default value is 30 days.\n When you remove a KMS key from a CloudFormation stack, KMS schedules the KMS key for deletion and starts the mandatory waiting period. The ``PendingWindowInDays`` property determines the length of waiting period. During the waiting period, the key state of KMS key is ``Pending Deletion`` or ``Pending Replica Deletion``, which prevents the KMS key from being used in cryptographic operations. When the waiting period expires, KMS permanently deletes the KMS key.\n KMS will not delete a [multi-Region primary key](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) that has replica keys. If you remove a multi-Region primary key from a CloudFormation stack, its key state changes to ``PendingReplicaDeletion`` so it cannot be replicated or used in cryptographic operations. This state can persist indefinitely. When the last of its replica keys is deleted, the key state of the primary key changes to ``PendingDeletion`` and the waiting period specified by ``PendingWindowInDays`` begins. When this waiting period expires, KMS deletes the primary key. For details, see [Deleting multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-delete.html) in the *Developer Guide*.\n You cannot use a CloudFormation template to cancel deletion of the KMS key after you remove it from the stack, regardless of the waiting period. If you specify a KMS key in your template, even one with the same name, CloudFormation creates a new KMS key. To cancel deletion of a KMS key, use the KMS console or the [CancelKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_CancelKeyDeletion.html) operation.\n For information about the ``Pending Deletion`` and ``Pending Replica Deletion`` key states, see [Key state: Effect on your KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the *Developer Guide*. For more information about deleting KMS keys, see the [ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html) operation in the *API Reference* and [Deleting KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) in the *Developer Guide*.", + "maximum": 30, + "minimum": 7, + "type": "integer" + }, + "RotationPeriodInDays": { + "default": 365, + "description": "Specifies a custom period of time between each rotation date. If no value is specified, the default value is 365 days.\n The rotation period defines the number of days after you enable automatic key rotation that KMS will rotate your key material, and the number of days between each automatic rotation thereafter.\n You can use the [kms:RotationPeriodInDays](https://docs.aws.amazon.com/kms/latest/developerguide/conditions-kms.html#conditions-kms-rotation-period-in-days) condition key to further constrain the values that principals can specify in the ``RotationPeriodInDays`` parameter.\n For more information about rotating KMS keys and automatic rotation, see [Rotating keys](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) in the *Developer Guide*.", + "maximum": 2560, + "minimum": 90, + "type": "integer" + }, + "Tags": { + "description": "Assigns one or more tags to the replica key.\n Tagging or untagging a KMS key can allow or deny permission to the KMS key. For details, see [ABAC for](https://docs.aws.amazon.com/kms/latest/developerguide/abac.html) in the *Developer Guide*.\n For information about tags in KMS, see [Tagging keys](https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html) in the *Developer Guide*. For information about tags in CloudFormation, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/KeyId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kms", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "kms:TagResource", + "kms:UntagResource", + "kms:ListResourceTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::KMS::Key", + "writeOnlyProperties": [ + "/properties/PendingWindowInDays", + "/properties/BypassPolicyLockoutSafetyCheck", + "/properties/RotationPeriodInDays" + ] +} diff --git a/src/schema/aws-kms-replicakey.json b/src/schema/aws-kms-replicakey.json index e4efd635..59bfbd60 100644 --- a/src/schema/aws-kms-replicakey.json +++ b/src/schema/aws-kms-replicakey.json @@ -1,142 +1,147 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PrimaryKeyArn" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::KMS::ReplicaKey resource specifies a multi-region replica AWS KMS key in AWS Key Management Service (AWS KMS).", - "handlers": { - "create": { - "permissions": [ - "kms:ReplicateKey", - "kms:CreateKey", - "kms:DescribeKey", - "kms:DisableKey", - "kms:TagResource" - ] - }, - "delete": { - "permissions": [ - "kms:DescribeKey", - "kms:ScheduleKeyDeletion" - ] - }, - "list": { - "permissions": [ - "kms:ListKeys", - "kms:DescribeKey" - ] - }, - "read": { - "permissions": [ - "kms:DescribeKey", - "kms:GetKeyPolicy", - "kms:ListResourceTags" - ] - }, - "update": { - "permissions": [ - "kms:DescribeKey", - "kms:DisableKey", - "kms:EnableKey", - "kms:PutKeyPolicy", - "kms:TagResource", - "kms:UntagResource", - "kms:UpdateKeyDescription" - ] - } - }, - "primaryIdentifier": [ - "/properties/KeyId" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Description": { - "description": "A description of the AWS KMS key. Use a description that helps you to distinguish this AWS KMS key from others in the account, such as its intended use.", - "maxLength": 8192, - "minLength": 0, - "type": "string" - }, - "Enabled": { - "description": "Specifies whether the AWS KMS key is enabled. Disabled AWS KMS keys cannot be used in cryptographic operations.", - "type": "boolean" - }, - "KeyId": { - "type": "string" - }, - "KeyPolicy": { - "description": "The key policy that authorizes use of the AWS KMS key. The key policy must observe the following rules.", - "type": [ - "object", - "string" - ] - }, - "PendingWindowInDays": { - "description": "Specifies the number of days in the waiting period before AWS KMS deletes an AWS KMS key that has been removed from a CloudFormation stack. Enter a value between 7 and 30 days. The default value is 30 days.", - "maximum": 30, - "minimum": 7, - "type": "integer" - }, - "PrimaryKeyArn": { - "description": "Identifies the primary AWS KMS key to create a replica of. Specify the Amazon Resource Name (ARN) of the AWS KMS key. You cannot specify an alias or key ID. For help finding the ARN, see Finding the Key ID and ARN in the AWS Key Management Service Developer Guide.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/KeyId" - ], - "required": [ - "PrimaryKeyArn", - "KeyPolicy" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kms", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::KMS::ReplicaKey", - "writeOnlyProperties": [ - "/properties/PendingWindowInDays" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PrimaryKeyArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::KMS::ReplicaKey resource specifies a multi-region replica AWS KMS key in AWS Key Management Service (AWS KMS).", + "handlers": { + "create": { + "permissions": [ + "kms:ReplicateKey", + "kms:CreateKey", + "kms:DescribeKey", + "kms:DisableKey", + "kms:TagResource" + ] + }, + "delete": { + "permissions": [ + "kms:DescribeKey", + "kms:ScheduleKeyDeletion" + ] + }, + "list": { + "permissions": [ + "kms:ListKeys", + "kms:DescribeKey" + ] + }, + "read": { + "permissions": [ + "kms:DescribeKey", + "kms:GetKeyPolicy", + "kms:ListResourceTags" + ] + }, + "update": { + "permissions": [ + "kms:DescribeKey", + "kms:DisableKey", + "kms:EnableKey", + "kms:PutKeyPolicy", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateKeyDescription" + ] + } + }, + "primaryIdentifier": [ + "/properties/KeyId" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Description": { + "description": "A description of the AWS KMS key. Use a description that helps you to distinguish this AWS KMS key from others in the account, such as its intended use.", + "maxLength": 8192, + "minLength": 0, + "type": "string" + }, + "Enabled": { + "description": "Specifies whether the AWS KMS key is enabled. Disabled AWS KMS keys cannot be used in cryptographic operations.", + "type": "boolean" + }, + "KeyId": { + "type": "string" + }, + "KeyPolicy": { + "description": "The key policy that authorizes use of the AWS KMS key. The key policy must observe the following rules.", + "type": [ + "object", + "string" + ] + }, + "PendingWindowInDays": { + "description": "Specifies the number of days in the waiting period before AWS KMS deletes an AWS KMS key that has been removed from a CloudFormation stack. Enter a value between 7 and 30 days. The default value is 30 days.", + "maximum": 30, + "minimum": 7, + "type": "integer" + }, + "PrimaryKeyArn": { + "description": "Identifies the primary AWS KMS key to create a replica of. Specify the Amazon Resource Name (ARN) of the AWS KMS key. You cannot specify an alias or key ID. For help finding the ARN, see Finding the Key ID and ARN in the AWS Key Management Service Developer Guide.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/KeyId" + ], + "required": [ + "PrimaryKeyArn", + "KeyPolicy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kms", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "kms:TagResource", + "kms:UntagResource", + "kms:ListResourceTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::KMS::ReplicaKey", + "writeOnlyProperties": [ + "/properties/PendingWindowInDays" + ] +} diff --git a/src/schema/aws-lakeformation-datacellsfilter.json b/src/schema/aws-lakeformation-datacellsfilter.json index 582f82c5..eb7e7911 100644 --- a/src/schema/aws-lakeformation-datacellsfilter.json +++ b/src/schema/aws-lakeformation-datacellsfilter.json @@ -1,133 +1,133 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TableCatalogId", - "/properties/DatabaseName", - "/properties/TableName", - "/properties/Name", - "/properties/RowFilter", - "/properties/ColumnNames", - "/properties/ColumnWildcard" - ], - "definitions": { - "CatalogIdString": { - "description": "A string representing the Catalog Id.", - "maxLength": 12, - "minLength": 12, - "type": "string" - }, - "ColumnNames": { - "description": "A list of column names.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/NameString" - }, - "type": "array" - }, - "ColumnWildcard": { - "additionalProperties": false, - "description": "An object representing the Data Cells Filter's Columns. Either Column Names or a Wildcard is required.", - "properties": { - "ExcludedColumnNames": { - "$ref": "#/definitions/ColumnNames", - "description": "A list of column names to be excluded from the Data Cells Filter." - } - }, - "type": "object" - }, - "NameString": { - "description": "A string representing a resource's name.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "RowFilter": { - "additionalProperties": false, - "description": "An object representing the Data Cells Filter's Row Filter. Either a Filter Expression or a Wildcard is required.", - "properties": { - "AllRowsWildcard": { - "additionalProperties": false, - "description": "An empty object representing a row wildcard.", - "type": "object" - }, - "FilterExpression": { - "description": "A PartiQL predicate.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "A resource schema representing a Lake Formation Data Cells Filter.", - "handlers": { - "create": { - "permissions": [ - "lakeformation:CreateDataCellsFilter", - "glue:GetTable" - ] - }, - "delete": { - "permissions": [ - "lakeformation:DeleteDataCellsFilter" - ] - }, - "list": { - "permissions": [ - "lakeformation:ListDataCellsFilter" - ] - }, - "read": { - "permissions": [ - "lakeformation:ListDataCellsFilter" - ] - } - }, - "primaryIdentifier": [ - "/properties/TableCatalogId", - "/properties/DatabaseName", - "/properties/TableName", - "/properties/Name" - ], - "properties": { - "ColumnNames": { - "$ref": "#/definitions/ColumnNames", - "description": "A list of columns to be included in this Data Cells Filter." - }, - "ColumnWildcard": { - "$ref": "#/definitions/ColumnWildcard", - "description": "An object representing the Data Cells Filter's Columns. Either Column Names or a Wildcard is required" - }, - "DatabaseName": { - "$ref": "#/definitions/NameString", - "description": "The name of the Database that the Table resides in." - }, - "Name": { - "$ref": "#/definitions/NameString", - "description": "The desired name of the Data Cells Filter." - }, - "RowFilter": { - "$ref": "#/definitions/RowFilter", - "description": "An object representing the Data Cells Filter's Row Filter. Either a Filter Expression or a Wildcard is required" - }, - "TableCatalogId": { - "$ref": "#/definitions/CatalogIdString", - "description": "The Catalog Id of the Table on which to create a Data Cells Filter." - }, - "TableName": { - "$ref": "#/definitions/NameString", - "description": "The name of the Table to create a Data Cells Filter for." - } - }, - "replacementStrategy": "delete_then_create", - "required": [ - "TableCatalogId", - "DatabaseName", - "TableName", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::LakeFormation::DataCellsFilter" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TableCatalogId", + "/properties/DatabaseName", + "/properties/TableName", + "/properties/Name", + "/properties/RowFilter", + "/properties/ColumnNames", + "/properties/ColumnWildcard" + ], + "definitions": { + "CatalogIdString": { + "description": "A string representing the Catalog Id.", + "maxLength": 12, + "minLength": 12, + "type": "string" + }, + "ColumnNames": { + "description": "A list of column names.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/NameString" + }, + "type": "array" + }, + "ColumnWildcard": { + "additionalProperties": false, + "description": "An object representing the Data Cells Filter's Columns. Either Column Names or a Wildcard is required.", + "properties": { + "ExcludedColumnNames": { + "$ref": "#/definitions/ColumnNames", + "description": "A list of column names to be excluded from the Data Cells Filter." + } + }, + "type": "object" + }, + "NameString": { + "description": "A string representing a resource's name.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "RowFilter": { + "additionalProperties": false, + "description": "An object representing the Data Cells Filter's Row Filter. Either a Filter Expression or a Wildcard is required.", + "properties": { + "AllRowsWildcard": { + "additionalProperties": false, + "description": "An empty object representing a row wildcard.", + "type": "object" + }, + "FilterExpression": { + "description": "A PartiQL predicate.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "A resource schema representing a Lake Formation Data Cells Filter.", + "handlers": { + "create": { + "permissions": [ + "lakeformation:CreateDataCellsFilter", + "glue:GetTable" + ] + }, + "delete": { + "permissions": [ + "lakeformation:DeleteDataCellsFilter" + ] + }, + "list": { + "permissions": [ + "lakeformation:ListDataCellsFilter" + ] + }, + "read": { + "permissions": [ + "lakeformation:ListDataCellsFilter" + ] + } + }, + "primaryIdentifier": [ + "/properties/TableCatalogId", + "/properties/DatabaseName", + "/properties/TableName", + "/properties/Name" + ], + "properties": { + "ColumnNames": { + "$ref": "#/definitions/ColumnNames", + "description": "A list of columns to be included in this Data Cells Filter." + }, + "ColumnWildcard": { + "$ref": "#/definitions/ColumnWildcard", + "description": "An object representing the Data Cells Filter's Columns. Either Column Names or a Wildcard is required" + }, + "DatabaseName": { + "$ref": "#/definitions/NameString", + "description": "The name of the Database that the Table resides in." + }, + "Name": { + "$ref": "#/definitions/NameString", + "description": "The desired name of the Data Cells Filter." + }, + "RowFilter": { + "$ref": "#/definitions/RowFilter", + "description": "An object representing the Data Cells Filter's Row Filter. Either a Filter Expression or a Wildcard is required" + }, + "TableCatalogId": { + "$ref": "#/definitions/CatalogIdString", + "description": "The Catalog Id of the Table on which to create a Data Cells Filter." + }, + "TableName": { + "$ref": "#/definitions/NameString", + "description": "The name of the Table to create a Data Cells Filter for." + } + }, + "replacementStrategy": "delete_then_create", + "required": [ + "TableCatalogId", + "DatabaseName", + "TableName", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::LakeFormation::DataCellsFilter" +} diff --git a/src/schema/aws-lakeformation-datalakesettings.json b/src/schema/aws-lakeformation-datalakesettings.json index b7cdf31e..183183ae 100644 --- a/src/schema/aws-lakeformation-datalakesettings.json +++ b/src/schema/aws-lakeformation-datalakesettings.json @@ -1,72 +1,72 @@ -{ - "additionalProperties": false, - "definitions": { - "Admins": { - "additionalProperties": false, - "type": "object" - }, - "CreateDatabaseDefaultPermissions": { - "additionalProperties": false, - "type": "object" - }, - "CreateTableDefaultPermissions": { - "additionalProperties": false, - "type": "object" - }, - "ExternalDataFilteringAllowList": { - "additionalProperties": false, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::LakeFormation::DataLakeSettings", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Admins": { - "$ref": "#/definitions/Admins" - }, - "AllowExternalDataFiltering": { - "type": "boolean" - }, - "AllowFullTableExternalDataAccess": { - "type": "boolean" - }, - "AuthorizedSessionTagValueList": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "CreateDatabaseDefaultPermissions": { - "$ref": "#/definitions/CreateDatabaseDefaultPermissions" - }, - "CreateTableDefaultPermissions": { - "$ref": "#/definitions/CreateTableDefaultPermissions" - }, - "ExternalDataFilteringAllowList": { - "$ref": "#/definitions/ExternalDataFilteringAllowList" - }, - "Id": { - "type": "string" - }, - "MutationType": { - "type": "string" - }, - "Parameters": { - "type": "object" - }, - "TrustedResourceOwners": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "typeName": "AWS::LakeFormation::DataLakeSettings" -} +{ + "additionalProperties": false, + "definitions": { + "Admins": { + "additionalProperties": false, + "type": "object" + }, + "CreateDatabaseDefaultPermissions": { + "additionalProperties": false, + "type": "object" + }, + "CreateTableDefaultPermissions": { + "additionalProperties": false, + "type": "object" + }, + "ExternalDataFilteringAllowList": { + "additionalProperties": false, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::LakeFormation::DataLakeSettings", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Admins": { + "$ref": "#/definitions/Admins" + }, + "AllowExternalDataFiltering": { + "type": "boolean" + }, + "AllowFullTableExternalDataAccess": { + "type": "boolean" + }, + "AuthorizedSessionTagValueList": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "CreateDatabaseDefaultPermissions": { + "$ref": "#/definitions/CreateDatabaseDefaultPermissions" + }, + "CreateTableDefaultPermissions": { + "$ref": "#/definitions/CreateTableDefaultPermissions" + }, + "ExternalDataFilteringAllowList": { + "$ref": "#/definitions/ExternalDataFilteringAllowList" + }, + "Id": { + "type": "string" + }, + "MutationType": { + "type": "string" + }, + "Parameters": { + "type": "object" + }, + "TrustedResourceOwners": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::LakeFormation::DataLakeSettings" +} diff --git a/src/schema/aws-lakeformation-permissions.json b/src/schema/aws-lakeformation-permissions.json index fcf70172..b03214f6 100644 --- a/src/schema/aws-lakeformation-permissions.json +++ b/src/schema/aws-lakeformation-permissions.json @@ -1,157 +1,157 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DataLakePrincipal", - "/properties/Resource" - ], - "definitions": { - "ColumnWildcard": { - "additionalProperties": false, - "properties": { - "ExcludedColumnNames": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "DataLakePrincipal": { - "additionalProperties": false, - "properties": { - "DataLakePrincipalIdentifier": { - "type": "string" - } - }, - "type": "object" - }, - "DataLocationResource": { - "additionalProperties": false, - "properties": { - "CatalogId": { - "type": "string" - }, - "S3Resource": { - "type": "string" - } - }, - "type": "object" - }, - "DatabaseResource": { - "additionalProperties": false, - "properties": { - "CatalogId": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "type": "object" - }, - "Resource": { - "additionalProperties": false, - "properties": { - "DataLocationResource": { - "$ref": "#/definitions/DataLocationResource" - }, - "DatabaseResource": { - "$ref": "#/definitions/DatabaseResource" - }, - "TableResource": { - "$ref": "#/definitions/TableResource" - }, - "TableWithColumnsResource": { - "$ref": "#/definitions/TableWithColumnsResource" - } - }, - "type": "object" - }, - "TableResource": { - "additionalProperties": false, - "properties": { - "CatalogId": { - "type": "string" - }, - "DatabaseName": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "TableWildcard": { - "$ref": "#/definitions/TableWildcard" - } - }, - "type": "object" - }, - "TableWildcard": { - "additionalProperties": false, - "type": "object" - }, - "TableWithColumnsResource": { - "additionalProperties": false, - "properties": { - "CatalogId": { - "type": "string" - }, - "ColumnNames": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ColumnWildcard": { - "$ref": "#/definitions/ColumnWildcard" - }, - "DatabaseName": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::LakeFormation::Permissions", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DataLakePrincipal": { - "$ref": "#/definitions/DataLakePrincipal" - }, - "Id": { - "type": "string" - }, - "Permissions": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "PermissionsWithGrantOption": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Resource": { - "$ref": "#/definitions/Resource" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "DataLakePrincipal", - "Resource" - ], - "typeName": "AWS::LakeFormation::Permissions" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DataLakePrincipal", + "/properties/Resource" + ], + "definitions": { + "ColumnWildcard": { + "additionalProperties": false, + "properties": { + "ExcludedColumnNames": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DataLakePrincipal": { + "additionalProperties": false, + "properties": { + "DataLakePrincipalIdentifier": { + "type": "string" + } + }, + "type": "object" + }, + "DataLocationResource": { + "additionalProperties": false, + "properties": { + "CatalogId": { + "type": "string" + }, + "S3Resource": { + "type": "string" + } + }, + "type": "object" + }, + "DatabaseResource": { + "additionalProperties": false, + "properties": { + "CatalogId": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "type": "object" + }, + "Resource": { + "additionalProperties": false, + "properties": { + "DataLocationResource": { + "$ref": "#/definitions/DataLocationResource" + }, + "DatabaseResource": { + "$ref": "#/definitions/DatabaseResource" + }, + "TableResource": { + "$ref": "#/definitions/TableResource" + }, + "TableWithColumnsResource": { + "$ref": "#/definitions/TableWithColumnsResource" + } + }, + "type": "object" + }, + "TableResource": { + "additionalProperties": false, + "properties": { + "CatalogId": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "TableWildcard": { + "$ref": "#/definitions/TableWildcard" + } + }, + "type": "object" + }, + "TableWildcard": { + "additionalProperties": false, + "type": "object" + }, + "TableWithColumnsResource": { + "additionalProperties": false, + "properties": { + "CatalogId": { + "type": "string" + }, + "ColumnNames": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ColumnWildcard": { + "$ref": "#/definitions/ColumnWildcard" + }, + "DatabaseName": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::LakeFormation::Permissions", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DataLakePrincipal": { + "$ref": "#/definitions/DataLakePrincipal" + }, + "Id": { + "type": "string" + }, + "Permissions": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "PermissionsWithGrantOption": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Resource": { + "$ref": "#/definitions/Resource" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "DataLakePrincipal", + "Resource" + ], + "typeName": "AWS::LakeFormation::Permissions" +} diff --git a/src/schema/aws-lakeformation-principalpermissions.json b/src/schema/aws-lakeformation-principalpermissions.json index 96de3ae9..30a4cc1f 100644 --- a/src/schema/aws-lakeformation-principalpermissions.json +++ b/src/schema/aws-lakeformation-principalpermissions.json @@ -1,519 +1,519 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Catalog", - "/properties/Principal", - "/properties/Resource", - "/properties/Permissions", - "/properties/PermissionsWithGrantOption" - ], - "definitions": { - "CatalogIdString": { - "maxLength": 12, - "minLength": 12, - "type": "string" - }, - "CatalogResource": { - "additionalProperties": false, - "type": "object" - }, - "ColumnNames": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/NameString" - }, - "type": "array" - }, - "ColumnWildcard": { - "additionalProperties": false, - "description": "A wildcard object, consisting of an optional list of excluded column names or indexes.", - "properties": { - "ExcludedColumnNames": { - "$ref": "#/definitions/ColumnNames", - "description": "Excludes column names. Any column with this name will be excluded." - } - }, - "type": "object" - }, - "DataCellsFilterResource": { - "additionalProperties": false, - "description": "A structure that describes certain columns on certain rows.", - "properties": { - "DatabaseName": { - "$ref": "#/definitions/NameString", - "description": "A database in the GLUDC." - }, - "Name": { - "$ref": "#/definitions/NameString", - "description": "The name given by the user to the data filter cell." - }, - "TableCatalogId": { - "$ref": "#/definitions/CatalogIdString", - "description": "The ID of the catalog to which the table belongs." - }, - "TableName": { - "$ref": "#/definitions/NameString", - "description": "The name of the table." - } - }, - "required": [ - "TableCatalogId", - "DatabaseName", - "TableName", - "Name" - ], - "type": "object" - }, - "DataLakePrincipal": { - "additionalProperties": false, - "description": "The LFlong principal.", - "properties": { - "DataLakePrincipalIdentifier": { - "$ref": "#/definitions/DataLakePrincipalString", - "description": "An identifier for the LFlong principal." - } - }, - "type": "object" - }, - "DataLakePrincipalList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DataLakePrincipal" - }, - "type": "array" - }, - "DataLakePrincipalString": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "DataLocationResource": { - "additionalProperties": false, - "description": "A structure for a data location object where permissions are granted or revoked.", - "properties": { - "CatalogId": { - "$ref": "#/definitions/CatalogIdString", - "description": "The identifier for the GLUDC where the location is registered with LFlong." - }, - "ResourceArn": { - "$ref": "#/definitions/ResourceArnString", - "description": "The Amazon Resource Name (ARN) that uniquely identifies the data location resource." - } - }, - "required": [ - "CatalogId", - "ResourceArn" - ], - "type": "object" - }, - "DatabaseResource": { - "additionalProperties": false, - "description": "A structure for the database object.", - "properties": { - "CatalogId": { - "$ref": "#/definitions/CatalogIdString", - "description": "The identifier for the Data Catalog. By default, it is the account ID of the caller." - }, - "Name": { - "$ref": "#/definitions/NameString", - "description": "The name of the database resource. Unique to the Data Catalog." - } - }, - "required": [ - "CatalogId", - "Name" - ], - "type": "object" - }, - "Expression": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LFTag" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "IAMRoleArn": { - "pattern": "arn:*:iam::[0-9]*:role/.*", - "type": "string" - }, - "LFTag": { - "additionalProperties": false, - "description": "The LF-tag key and values attached to a resource.", - "properties": { - "TagKey": { - "$ref": "#/definitions/LFTagKey", - "description": "The key-name for the LF-tag." - }, - "TagValues": { - "$ref": "#/definitions/TagValueList", - "description": "A list of possible values of the corresponding ``TagKey`` of an LF-tag key-value pair." - } - }, - "type": "object" - }, - "LFTagKey": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "LFTagKeyResource": { - "additionalProperties": false, - "description": "A structure containing an LF-tag key and values for a resource.", - "properties": { - "CatalogId": { - "$ref": "#/definitions/CatalogIdString", - "description": "The identifier for the GLUDC where the location is registered with GLUDC." - }, - "TagKey": { - "$ref": "#/definitions/NameString", - "description": "The key-name for the LF-tag." - }, - "TagValues": { - "$ref": "#/definitions/TagValueList", - "description": "A list of possible values for the corresponding ``TagKey`` of an LF-tag key-value pair." - } - }, - "required": [ - "CatalogId", - "TagKey", - "TagValues" - ], - "type": "object" - }, - "LFTagPair": { - "additionalProperties": false, - "description": "", - "properties": { - "CatalogId": { - "$ref": "#/definitions/CatalogIdString" - }, - "TagKey": { - "$ref": "#/definitions/LFTagKey" - }, - "TagValues": { - "$ref": "#/definitions/TagValueList" - } - }, - "required": [ - "TagKey", - "TagValues" - ], - "type": "object" - }, - "LFTagPolicyResource": { - "additionalProperties": false, - "description": "A list of LF-tag conditions that define a resource's LF-tag policy.\n A structure that allows an admin to grant user permissions on certain conditions. For example, granting a role access to all columns that do not have the LF-tag 'PII' in tables that have the LF-tag 'Prod'.", - "properties": { - "CatalogId": { - "$ref": "#/definitions/CatalogIdString", - "description": "The identifier for the GLUDC. The GLUDC is the persistent metadata store. It contains database definitions, table definitions, and other control information to manage your LFlong environment." - }, - "Expression": { - "$ref": "#/definitions/Expression", - "description": "A list of LF-tag conditions that apply to the resource's LF-tag policy." - }, - "ResourceType": { - "$ref": "#/definitions/ResourceType", - "description": "The resource type for which the LF-tag policy applies." - } - }, - "required": [ - "CatalogId", - "ResourceType", - "Expression" - ], - "type": "object" - }, - "LFTagValue": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "LFTagsList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LFTagPair" - }, - "type": "array" - }, - "NameString": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "NullableBoolean": { - "type": [ - "boolean", - "null" - ] - }, - "PathString": { - "type": "string" - }, - "Permission": { - "enum": [ - "ALL", - "SELECT", - "ALTER", - "DROP", - "DELETE", - "INSERT", - "DESCRIBE", - "CREATE_DATABASE", - "CREATE_TABLE", - "DATA_LOCATION_ACCESS", - "CREATE_LF_TAG", - "ASSOCIATE", - "GRANT_WITH_LF_TAG_EXPRESSION" - ], - "type": "string" - }, - "PermissionList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Permission" - }, - "type": "array" - }, - "PrincipalPermissions": { - "additionalProperties": false, - "description": "", - "properties": { - "DataLakePrincipal": { - "$ref": "#/definitions/DataLakePrincipal" - }, - "PermissionList": { - "$ref": "#/definitions/PermissionList" - } - }, - "type": "object" - }, - "PrincipalPermissionsList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PrincipalPermissions" - }, - "type": "array" - }, - "PrincipalResourcePair": { - "additionalProperties": false, - "description": "", - "properties": { - "Principal": { - "$ref": "#/definitions/DataLakePrincipal" - }, - "Resource": { - "$ref": "#/definitions/Resource" - } - }, - "required": [ - "Principal", - "Resource" - ], - "type": "object" - }, - "Resource": { - "additionalProperties": false, - "description": "A structure for the resource.", - "properties": { - "Catalog": { - "$ref": "#/definitions/CatalogResource", - "description": "The identifier for the Data Catalog. By default, the account ID. The Data Catalog is the persistent metadata store. It contains database definitions, table definitions, and other control information to manage your LFlong environment." - }, - "DataCellsFilter": { - "$ref": "#/definitions/DataCellsFilterResource", - "description": "A data cell filter." - }, - "DataLocation": { - "$ref": "#/definitions/DataLocationResource", - "description": "The location of an Amazon S3 path where permissions are granted or revoked." - }, - "Database": { - "$ref": "#/definitions/DatabaseResource", - "description": "The database for the resource. Unique to the Data Catalog. A database is a set of associated table definitions organized into a logical group. You can Grant and Revoke database permissions to a principal." - }, - "LFTag": { - "$ref": "#/definitions/LFTagKeyResource", - "description": "The LF-tag key and values attached to a resource." - }, - "LFTagPolicy": { - "$ref": "#/definitions/LFTagPolicyResource", - "description": "A list of LF-tag conditions that define a resource's LF-tag policy." - }, - "Table": { - "$ref": "#/definitions/TableResource", - "description": "The table for the resource. A table is a metadata definition that represents your data. You can Grant and Revoke table privileges to a principal." - }, - "TableWithColumns": { - "$ref": "#/definitions/TableWithColumnsResource", - "description": "The table with columns for the resource. A principal with permissions to this resource can select metadata from the columns of a table in the Data Catalog and the underlying data in Amazon S3." - } - }, - "type": "object" - }, - "ResourceArnString": { - "type": "string" - }, - "ResourceType": { - "enum": [ - "DATABASE", - "TABLE" - ], - "type": "string" - }, - "TableResource": { - "additionalProperties": false, - "description": "A structure for the table object. A table is a metadata definition that represents your data. You can Grant and Revoke table privileges to a principal.", - "properties": { - "CatalogId": { - "$ref": "#/definitions/CatalogIdString", - "description": "The identifier for the Data Catalog. By default, it is the account ID of the caller." - }, - "DatabaseName": { - "$ref": "#/definitions/NameString", - "description": "The name of the database for the table. Unique to a Data Catalog. A database is a set of associated table definitions organized into a logical group. You can Grant and Revoke database privileges to a principal." - }, - "Name": { - "$ref": "#/definitions/NameString", - "description": "The name of the table." - }, - "TableWildcard": { - "$ref": "#/definitions/TableWildcard", - "description": "A wildcard object representing every table under a database.\n At least one of ``TableResource$Name`` or ``TableResource$TableWildcard`` is required." - } - }, - "required": [ - "CatalogId", - "DatabaseName" - ], - "type": "object" - }, - "TableWildcard": { - "additionalProperties": false, - "type": "object" - }, - "TableWithColumnsResource": { - "additionalProperties": false, - "description": "A structure for a table with columns object. This object is only used when granting a SELECT permission.\n This object must take a value for at least one of ``ColumnsNames``, ``ColumnsIndexes``, or ``ColumnsWildcard``.", - "properties": { - "CatalogId": { - "$ref": "#/definitions/CatalogIdString", - "description": "The identifier for the GLUDC where the location is registered with LFlong." - }, - "ColumnNames": { - "$ref": "#/definitions/ColumnNames", - "description": "The list of column names for the table. At least one of ``ColumnNames`` or ``ColumnWildcard`` is required." - }, - "ColumnWildcard": { - "$ref": "#/definitions/ColumnWildcard", - "description": "A wildcard specified by a ``ColumnWildcard`` object. At least one of ``ColumnNames`` or ``ColumnWildcard`` is required." - }, - "DatabaseName": { - "$ref": "#/definitions/NameString", - "description": "The name of the database for the table with columns resource. Unique to the Data Catalog. A database is a set of associated table definitions organized into a logical group. You can Grant and Revoke database privileges to a principal." - }, - "Name": { - "$ref": "#/definitions/NameString", - "description": "The name of the table resource. A table is a metadata definition that represents your data. You can Grant and Revoke table privileges to a principal." - } - }, - "required": [ - "CatalogId", - "DatabaseName", - "Name" - ], - "type": "object" - }, - "TagValueList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LFTagValue" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - } - }, - "description": "The ``AWS::LakeFormation::PrincipalPermissions`` resource represents the permissions that a principal has on a GLUDC resource (such as GLUlong databases or GLUlong tables). When you create a ``PrincipalPermissions`` resource, the permissions are granted via the LFlong ``GrantPermissions`` API operation. When you delete a ``PrincipalPermissions`` resource, the permissions on principal-resource pair are revoked via the LFlong ``RevokePermissions`` API operation.", - "handlers": { - "create": { - "permissions": [ - "lakeformation:GrantPermissions", - "lakeformation:ListPermissions", - "glue:GetTable", - "glue:GetDatabase" - ] - }, - "delete": { - "permissions": [ - "lakeformation:RevokePermissions", - "lakeformation:ListPermissions", - "glue:GetTable", - "glue:GetDatabase" - ] - }, - "read": { - "permissions": [ - "lakeformation:ListPermissions", - "glue:GetTable", - "glue:GetDatabase" - ] - } - }, - "primaryIdentifier": [ - "/properties/PrincipalIdentifier", - "/properties/ResourceIdentifier" - ], - "properties": { - "Catalog": { - "$ref": "#/definitions/CatalogIdString", - "description": "The identifier for the GLUDC. By default, the account ID. The GLUDC is the persistent metadata store. It contains database definitions, table definitions, and other control information to manage your Lake Formation environment." - }, - "Permissions": { - "$ref": "#/definitions/PermissionList", - "description": "The permissions granted or revoked." - }, - "PermissionsWithGrantOption": { - "$ref": "#/definitions/PermissionList", - "description": "Indicates the ability to grant permissions (as a subset of permissions granted)." - }, - "Principal": { - "$ref": "#/definitions/DataLakePrincipal", - "description": "The principal to be granted a permission." - }, - "PrincipalIdentifier": { - "description": "", - "type": "string" - }, - "Resource": { - "$ref": "#/definitions/Resource", - "description": "The resource to be granted or revoked permissions." - }, - "ResourceIdentifier": { - "description": "", - "type": "string" - } - }, - "propertyTransform": { - "/properties/Permissions": "Permissions=[] ? null : Permissions", - "/properties/PermissionsWithGrantOption": "PermissionsWithGrantOption=[] ? null : PermissionsWithGrantOption" - }, - "readOnlyProperties": [ - "/properties/PrincipalIdentifier", - "/properties/ResourceIdentifier" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "Principal", - "Resource", - "Permissions", - "PermissionsWithGrantOption" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::LakeFormation::PrincipalPermissions" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Catalog", + "/properties/Principal", + "/properties/Resource", + "/properties/Permissions", + "/properties/PermissionsWithGrantOption" + ], + "definitions": { + "CatalogIdString": { + "maxLength": 12, + "minLength": 12, + "type": "string" + }, + "CatalogResource": { + "additionalProperties": false, + "type": "object" + }, + "ColumnNames": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/NameString" + }, + "type": "array" + }, + "ColumnWildcard": { + "additionalProperties": false, + "description": "A wildcard object, consisting of an optional list of excluded column names or indexes.", + "properties": { + "ExcludedColumnNames": { + "$ref": "#/definitions/ColumnNames", + "description": "Excludes column names. Any column with this name will be excluded." + } + }, + "type": "object" + }, + "DataCellsFilterResource": { + "additionalProperties": false, + "description": "A structure that describes certain columns on certain rows.", + "properties": { + "DatabaseName": { + "$ref": "#/definitions/NameString", + "description": "A database in the GLUDC." + }, + "Name": { + "$ref": "#/definitions/NameString", + "description": "The name given by the user to the data filter cell." + }, + "TableCatalogId": { + "$ref": "#/definitions/CatalogIdString", + "description": "The ID of the catalog to which the table belongs." + }, + "TableName": { + "$ref": "#/definitions/NameString", + "description": "The name of the table." + } + }, + "required": [ + "TableCatalogId", + "DatabaseName", + "TableName", + "Name" + ], + "type": "object" + }, + "DataLakePrincipal": { + "additionalProperties": false, + "description": "The LFlong principal.", + "properties": { + "DataLakePrincipalIdentifier": { + "$ref": "#/definitions/DataLakePrincipalString", + "description": "An identifier for the LFlong principal." + } + }, + "type": "object" + }, + "DataLakePrincipalList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DataLakePrincipal" + }, + "type": "array" + }, + "DataLakePrincipalString": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "DataLocationResource": { + "additionalProperties": false, + "description": "A structure for a data location object where permissions are granted or revoked.", + "properties": { + "CatalogId": { + "$ref": "#/definitions/CatalogIdString", + "description": "The identifier for the GLUDC where the location is registered with LFlong." + }, + "ResourceArn": { + "$ref": "#/definitions/ResourceArnString", + "description": "The Amazon Resource Name (ARN) that uniquely identifies the data location resource." + } + }, + "required": [ + "CatalogId", + "ResourceArn" + ], + "type": "object" + }, + "DatabaseResource": { + "additionalProperties": false, + "description": "A structure for the database object.", + "properties": { + "CatalogId": { + "$ref": "#/definitions/CatalogIdString", + "description": "The identifier for the Data Catalog. By default, it is the account ID of the caller." + }, + "Name": { + "$ref": "#/definitions/NameString", + "description": "The name of the database resource. Unique to the Data Catalog." + } + }, + "required": [ + "CatalogId", + "Name" + ], + "type": "object" + }, + "Expression": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LFTag" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "IAMRoleArn": { + "pattern": "arn:*:iam::[0-9]*:role/.*", + "type": "string" + }, + "LFTag": { + "additionalProperties": false, + "description": "The LF-tag key and values attached to a resource.", + "properties": { + "TagKey": { + "$ref": "#/definitions/LFTagKey", + "description": "The key-name for the LF-tag." + }, + "TagValues": { + "$ref": "#/definitions/TagValueList", + "description": "A list of possible values of the corresponding ``TagKey`` of an LF-tag key-value pair." + } + }, + "type": "object" + }, + "LFTagKey": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "LFTagKeyResource": { + "additionalProperties": false, + "description": "A structure containing an LF-tag key and values for a resource.", + "properties": { + "CatalogId": { + "$ref": "#/definitions/CatalogIdString", + "description": "The identifier for the GLUDC where the location is registered with GLUDC." + }, + "TagKey": { + "$ref": "#/definitions/NameString", + "description": "The key-name for the LF-tag." + }, + "TagValues": { + "$ref": "#/definitions/TagValueList", + "description": "A list of possible values for the corresponding ``TagKey`` of an LF-tag key-value pair." + } + }, + "required": [ + "CatalogId", + "TagKey", + "TagValues" + ], + "type": "object" + }, + "LFTagPair": { + "additionalProperties": false, + "description": "", + "properties": { + "CatalogId": { + "$ref": "#/definitions/CatalogIdString" + }, + "TagKey": { + "$ref": "#/definitions/LFTagKey" + }, + "TagValues": { + "$ref": "#/definitions/TagValueList" + } + }, + "required": [ + "TagKey", + "TagValues" + ], + "type": "object" + }, + "LFTagPolicyResource": { + "additionalProperties": false, + "description": "A list of LF-tag conditions that define a resource's LF-tag policy.\n A structure that allows an admin to grant user permissions on certain conditions. For example, granting a role access to all columns that do not have the LF-tag 'PII' in tables that have the LF-tag 'Prod'.", + "properties": { + "CatalogId": { + "$ref": "#/definitions/CatalogIdString", + "description": "The identifier for the GLUDC. The GLUDC is the persistent metadata store. It contains database definitions, table definitions, and other control information to manage your LFlong environment." + }, + "Expression": { + "$ref": "#/definitions/Expression", + "description": "A list of LF-tag conditions that apply to the resource's LF-tag policy." + }, + "ResourceType": { + "$ref": "#/definitions/ResourceType", + "description": "The resource type for which the LF-tag policy applies." + } + }, + "required": [ + "CatalogId", + "ResourceType", + "Expression" + ], + "type": "object" + }, + "LFTagValue": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "LFTagsList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LFTagPair" + }, + "type": "array" + }, + "NameString": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "NullableBoolean": { + "type": [ + "boolean", + "null" + ] + }, + "PathString": { + "type": "string" + }, + "Permission": { + "enum": [ + "ALL", + "SELECT", + "ALTER", + "DROP", + "DELETE", + "INSERT", + "DESCRIBE", + "CREATE_DATABASE", + "CREATE_TABLE", + "DATA_LOCATION_ACCESS", + "CREATE_LF_TAG", + "ASSOCIATE", + "GRANT_WITH_LF_TAG_EXPRESSION" + ], + "type": "string" + }, + "PermissionList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Permission" + }, + "type": "array" + }, + "PrincipalPermissions": { + "additionalProperties": false, + "description": "", + "properties": { + "DataLakePrincipal": { + "$ref": "#/definitions/DataLakePrincipal" + }, + "PermissionList": { + "$ref": "#/definitions/PermissionList" + } + }, + "type": "object" + }, + "PrincipalPermissionsList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PrincipalPermissions" + }, + "type": "array" + }, + "PrincipalResourcePair": { + "additionalProperties": false, + "description": "", + "properties": { + "Principal": { + "$ref": "#/definitions/DataLakePrincipal" + }, + "Resource": { + "$ref": "#/definitions/Resource" + } + }, + "required": [ + "Principal", + "Resource" + ], + "type": "object" + }, + "Resource": { + "additionalProperties": false, + "description": "A structure for the resource.", + "properties": { + "Catalog": { + "$ref": "#/definitions/CatalogResource", + "description": "The identifier for the Data Catalog. By default, the account ID. The Data Catalog is the persistent metadata store. It contains database definitions, table definitions, and other control information to manage your LFlong environment." + }, + "DataCellsFilter": { + "$ref": "#/definitions/DataCellsFilterResource", + "description": "A data cell filter." + }, + "DataLocation": { + "$ref": "#/definitions/DataLocationResource", + "description": "The location of an Amazon S3 path where permissions are granted or revoked." + }, + "Database": { + "$ref": "#/definitions/DatabaseResource", + "description": "The database for the resource. Unique to the Data Catalog. A database is a set of associated table definitions organized into a logical group. You can Grant and Revoke database permissions to a principal." + }, + "LFTag": { + "$ref": "#/definitions/LFTagKeyResource", + "description": "The LF-tag key and values attached to a resource." + }, + "LFTagPolicy": { + "$ref": "#/definitions/LFTagPolicyResource", + "description": "A list of LF-tag conditions that define a resource's LF-tag policy." + }, + "Table": { + "$ref": "#/definitions/TableResource", + "description": "The table for the resource. A table is a metadata definition that represents your data. You can Grant and Revoke table privileges to a principal." + }, + "TableWithColumns": { + "$ref": "#/definitions/TableWithColumnsResource", + "description": "The table with columns for the resource. A principal with permissions to this resource can select metadata from the columns of a table in the Data Catalog and the underlying data in Amazon S3." + } + }, + "type": "object" + }, + "ResourceArnString": { + "type": "string" + }, + "ResourceType": { + "enum": [ + "DATABASE", + "TABLE" + ], + "type": "string" + }, + "TableResource": { + "additionalProperties": false, + "description": "A structure for the table object. A table is a metadata definition that represents your data. You can Grant and Revoke table privileges to a principal.", + "properties": { + "CatalogId": { + "$ref": "#/definitions/CatalogIdString", + "description": "The identifier for the Data Catalog. By default, it is the account ID of the caller." + }, + "DatabaseName": { + "$ref": "#/definitions/NameString", + "description": "The name of the database for the table. Unique to a Data Catalog. A database is a set of associated table definitions organized into a logical group. You can Grant and Revoke database privileges to a principal." + }, + "Name": { + "$ref": "#/definitions/NameString", + "description": "The name of the table." + }, + "TableWildcard": { + "$ref": "#/definitions/TableWildcard", + "description": "A wildcard object representing every table under a database.\n At least one of ``TableResource$Name`` or ``TableResource$TableWildcard`` is required." + } + }, + "required": [ + "CatalogId", + "DatabaseName" + ], + "type": "object" + }, + "TableWildcard": { + "additionalProperties": false, + "type": "object" + }, + "TableWithColumnsResource": { + "additionalProperties": false, + "description": "A structure for a table with columns object. This object is only used when granting a SELECT permission.\n This object must take a value for at least one of ``ColumnsNames``, ``ColumnsIndexes``, or ``ColumnsWildcard``.", + "properties": { + "CatalogId": { + "$ref": "#/definitions/CatalogIdString", + "description": "The identifier for the GLUDC where the location is registered with LFlong." + }, + "ColumnNames": { + "$ref": "#/definitions/ColumnNames", + "description": "The list of column names for the table. At least one of ``ColumnNames`` or ``ColumnWildcard`` is required." + }, + "ColumnWildcard": { + "$ref": "#/definitions/ColumnWildcard", + "description": "A wildcard specified by a ``ColumnWildcard`` object. At least one of ``ColumnNames`` or ``ColumnWildcard`` is required." + }, + "DatabaseName": { + "$ref": "#/definitions/NameString", + "description": "The name of the database for the table with columns resource. Unique to the Data Catalog. A database is a set of associated table definitions organized into a logical group. You can Grant and Revoke database privileges to a principal." + }, + "Name": { + "$ref": "#/definitions/NameString", + "description": "The name of the table resource. A table is a metadata definition that represents your data. You can Grant and Revoke table privileges to a principal." + } + }, + "required": [ + "CatalogId", + "DatabaseName", + "Name" + ], + "type": "object" + }, + "TagValueList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LFTagValue" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "description": "The ``AWS::LakeFormation::PrincipalPermissions`` resource represents the permissions that a principal has on a GLUDC resource (such as GLUlong databases or GLUlong tables). When you create a ``PrincipalPermissions`` resource, the permissions are granted via the LFlong ``GrantPermissions`` API operation. When you delete a ``PrincipalPermissions`` resource, the permissions on principal-resource pair are revoked via the LFlong ``RevokePermissions`` API operation.", + "handlers": { + "create": { + "permissions": [ + "lakeformation:GrantPermissions", + "lakeformation:ListPermissions", + "glue:GetTable", + "glue:GetDatabase" + ] + }, + "delete": { + "permissions": [ + "lakeformation:RevokePermissions", + "lakeformation:ListPermissions", + "glue:GetTable", + "glue:GetDatabase" + ] + }, + "read": { + "permissions": [ + "lakeformation:ListPermissions", + "glue:GetTable", + "glue:GetDatabase" + ] + } + }, + "primaryIdentifier": [ + "/properties/PrincipalIdentifier", + "/properties/ResourceIdentifier" + ], + "properties": { + "Catalog": { + "$ref": "#/definitions/CatalogIdString", + "description": "The identifier for the GLUDC. By default, the account ID. The GLUDC is the persistent metadata store. It contains database definitions, table definitions, and other control information to manage your Lake Formation environment." + }, + "Permissions": { + "$ref": "#/definitions/PermissionList", + "description": "The permissions granted or revoked." + }, + "PermissionsWithGrantOption": { + "$ref": "#/definitions/PermissionList", + "description": "Indicates the ability to grant permissions (as a subset of permissions granted)." + }, + "Principal": { + "$ref": "#/definitions/DataLakePrincipal", + "description": "The principal to be granted a permission." + }, + "PrincipalIdentifier": { + "description": "", + "type": "string" + }, + "Resource": { + "$ref": "#/definitions/Resource", + "description": "The resource to be granted or revoked permissions." + }, + "ResourceIdentifier": { + "description": "", + "type": "string" + } + }, + "propertyTransform": { + "/properties/Permissions": "Permissions=[] ? null : Permissions", + "/properties/PermissionsWithGrantOption": "PermissionsWithGrantOption=[] ? null : PermissionsWithGrantOption" + }, + "readOnlyProperties": [ + "/properties/PrincipalIdentifier", + "/properties/ResourceIdentifier" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "Principal", + "Resource", + "Permissions", + "PermissionsWithGrantOption" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::LakeFormation::PrincipalPermissions" +} diff --git a/src/schema/aws-lakeformation-resource.json b/src/schema/aws-lakeformation-resource.json index 4614a41f..5ae298f4 100644 --- a/src/schema/aws-lakeformation-resource.json +++ b/src/schema/aws-lakeformation-resource.json @@ -1,38 +1,38 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceArn" - ], - "description": "Resource Type definition for AWS::LakeFormation::Resource", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "HybridAccessEnabled": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "ResourceArn": { - "type": "string" - }, - "RoleArn": { - "type": "string" - }, - "UseServiceLinkedRole": { - "type": "boolean" - }, - "WithFederation": { - "type": "boolean" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ResourceArn", - "UseServiceLinkedRole" - ], - "typeName": "AWS::LakeFormation::Resource" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceArn" + ], + "description": "Resource Type definition for AWS::LakeFormation::Resource", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "HybridAccessEnabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "ResourceArn": { + "type": "string" + }, + "RoleArn": { + "type": "string" + }, + "UseServiceLinkedRole": { + "type": "boolean" + }, + "WithFederation": { + "type": "boolean" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ResourceArn", + "UseServiceLinkedRole" + ], + "typeName": "AWS::LakeFormation::Resource" +} diff --git a/src/schema/aws-lakeformation-tag.json b/src/schema/aws-lakeformation-tag.json index 6a9b4c01..d8133d36 100644 --- a/src/schema/aws-lakeformation-tag.json +++ b/src/schema/aws-lakeformation-tag.json @@ -1,90 +1,90 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CatalogId", - "/properties/TagKey" - ], - "definitions": { - "CatalogIdString": { - "maxLength": 12, - "minLength": 12, - "type": "string" - }, - "LFTagKey": { - "maxLength": 128, - "minLength": 1, - "pattern": "^([{a-zA-Z}{\\s}{0-9}_.:\\/=+\\-@%]*)$", - "type": "string" - }, - "LFTagValue": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([{a-zA-Z}{\\s}{0-9}_.:\\*\\/=+\\-@%]*)$", - "type": "string" - }, - "TagValueList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LFTagValue" - }, - "maxItems": 1000, - "minItems": 1, - "type": "array" - } - }, - "description": "A resource schema representing a Lake Formation Tag.", - "handlers": { - "create": { - "permissions": [ - "lakeformation:CreateLFTag" - ] - }, - "delete": { - "permissions": [ - "lakeformation:DeleteLFTag" - ] - }, - "list": { - "permissions": [ - "lakeformation:ListLFTags" - ] - }, - "read": { - "permissions": [ - "lakeformation:GetLFTag" - ] - }, - "update": { - "permissions": [ - "lakeformation:UpdateLFTag" - ] - } - }, - "primaryIdentifier": [ - "/properties/TagKey" - ], - "properties": { - "CatalogId": { - "$ref": "#/definitions/CatalogIdString", - "description": "The identifier for the Data Catalog. By default, the account ID. The Data Catalog is the persistent metadata store. It contains database definitions, table definitions, and other control information to manage your Lake Formation environment." - }, - "TagKey": { - "$ref": "#/definitions/LFTagKey", - "description": "The key-name for the LF-tag." - }, - "TagValues": { - "$ref": "#/definitions/TagValueList", - "description": "A list of possible values an attribute can take." - } - }, - "replacementStrategy": "delete_then_create", - "required": [ - "TagKey", - "TagValues" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::LakeFormation::Tag" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CatalogId", + "/properties/TagKey" + ], + "definitions": { + "CatalogIdString": { + "maxLength": 12, + "minLength": 12, + "type": "string" + }, + "LFTagKey": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([{a-zA-Z}{\\s}{0-9}_.:\\/=+\\-@%]*)$", + "type": "string" + }, + "LFTagValue": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([{a-zA-Z}{\\s}{0-9}_.:\\*\\/=+\\-@%]*)$", + "type": "string" + }, + "TagValueList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LFTagValue" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + } + }, + "description": "A resource schema representing a Lake Formation Tag.", + "handlers": { + "create": { + "permissions": [ + "lakeformation:CreateLFTag" + ] + }, + "delete": { + "permissions": [ + "lakeformation:DeleteLFTag" + ] + }, + "list": { + "permissions": [ + "lakeformation:ListLFTags" + ] + }, + "read": { + "permissions": [ + "lakeformation:GetLFTag" + ] + }, + "update": { + "permissions": [ + "lakeformation:UpdateLFTag" + ] + } + }, + "primaryIdentifier": [ + "/properties/TagKey" + ], + "properties": { + "CatalogId": { + "$ref": "#/definitions/CatalogIdString", + "description": "The identifier for the Data Catalog. By default, the account ID. The Data Catalog is the persistent metadata store. It contains database definitions, table definitions, and other control information to manage your Lake Formation environment." + }, + "TagKey": { + "$ref": "#/definitions/LFTagKey", + "description": "The key-name for the LF-tag." + }, + "TagValues": { + "$ref": "#/definitions/TagValueList", + "description": "A list of possible values an attribute can take." + } + }, + "replacementStrategy": "delete_then_create", + "required": [ + "TagKey", + "TagValues" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::LakeFormation::Tag" +} diff --git a/src/schema/aws-lakeformation-tagassociation.json b/src/schema/aws-lakeformation-tagassociation.json index 6f5aab94..897c9d1f 100644 --- a/src/schema/aws-lakeformation-tagassociation.json +++ b/src/schema/aws-lakeformation-tagassociation.json @@ -1,241 +1,241 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Resource", - "/properties/LFTags" - ], - "definitions": { - "CatalogIdString": { - "maxLength": 12, - "minLength": 12, - "type": "string" - }, - "CatalogResource": { - "additionalProperties": false, - "type": "object" - }, - "ColumnNames": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/NameString" - }, - "type": "array" - }, - "DataLakePrincipal": { - "additionalProperties": false, - "properties": { - "DataLakePrincipalIdentifier": { - "$ref": "#/definitions/DataLakePrincipalString" - } - }, - "type": "object" - }, - "DataLakePrincipalString": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "DatabaseResource": { - "additionalProperties": false, - "properties": { - "CatalogId": { - "$ref": "#/definitions/CatalogIdString" - }, - "Name": { - "$ref": "#/definitions/NameString" - } - }, - "required": [ - "CatalogId", - "Name" - ], - "type": "object" - }, - "LFTagKey": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "LFTagPair": { - "additionalProperties": false, - "properties": { - "CatalogId": { - "$ref": "#/definitions/CatalogIdString" - }, - "TagKey": { - "$ref": "#/definitions/LFTagKey" - }, - "TagValues": { - "$ref": "#/definitions/TagValueList" - } - }, - "required": [ - "CatalogId", - "TagKey", - "TagValues" - ], - "type": "object" - }, - "LFTagValue": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "LFTagsList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LFTagPair" - }, - "type": "array" - }, - "NameString": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Resource": { - "additionalProperties": false, - "properties": { - "Catalog": { - "$ref": "#/definitions/CatalogResource" - }, - "Database": { - "$ref": "#/definitions/DatabaseResource" - }, - "Table": { - "$ref": "#/definitions/TableResource" - }, - "TableWithColumns": { - "$ref": "#/definitions/TableWithColumnsResource" - } - }, - "type": "object" - }, - "ResourceType": { - "enum": [ - "DATABASE", - "TABLE" - ], - "type": "string" - }, - "TableResource": { - "additionalProperties": false, - "properties": { - "CatalogId": { - "$ref": "#/definitions/CatalogIdString" - }, - "DatabaseName": { - "$ref": "#/definitions/NameString" - }, - "Name": { - "$ref": "#/definitions/NameString" - }, - "TableWildcard": { - "$ref": "#/definitions/TableWildcard" - } - }, - "required": [ - "CatalogId", - "DatabaseName" - ], - "type": "object" - }, - "TableWildcard": { - "additionalProperties": false, - "type": "object" - }, - "TableWithColumnsResource": { - "additionalProperties": false, - "properties": { - "CatalogId": { - "$ref": "#/definitions/CatalogIdString" - }, - "ColumnNames": { - "$ref": "#/definitions/ColumnNames" - }, - "DatabaseName": { - "$ref": "#/definitions/NameString" - }, - "Name": { - "$ref": "#/definitions/NameString" - } - }, - "required": [ - "CatalogId", - "DatabaseName", - "Name", - "ColumnNames" - ], - "type": "object" - }, - "TagValueList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LFTagValue" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - } - }, - "description": "A resource schema representing a Lake Formation Tag Association. While tag associations are not explicit Lake Formation resources, this CloudFormation resource can be used to associate tags with Lake Formation entities.", - "handlers": { - "create": { - "permissions": [ - "lakeformation:AddLFTagsToResource", - "glue:GetDatabase", - "glue:GetTable" - ] - }, - "delete": { - "permissions": [ - "lakeformation:RemoveLFTagsFromResource", - "glue:GetDatabase", - "glue:GetTable" - ] - }, - "read": { - "permissions": [ - "lakeformation:GetResourceLFTags", - "glue:GetDatabase", - "glue:GetTable" - ] - } - }, - "primaryIdentifier": [ - "/properties/ResourceIdentifier", - "/properties/TagsIdentifier" - ], - "properties": { - "LFTags": { - "$ref": "#/definitions/LFTagsList", - "description": "List of Lake Formation Tags to associate with the Lake Formation Resource" - }, - "Resource": { - "$ref": "#/definitions/Resource", - "description": "Resource to tag with the Lake Formation Tags" - }, - "ResourceIdentifier": { - "description": "Unique string identifying the resource. Used as primary identifier, which ideally should be a string", - "type": "string" - }, - "TagsIdentifier": { - "description": "Unique string identifying the resource's tags. Used as primary identifier, which ideally should be a string", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ResourceIdentifier", - "/properties/TagsIdentifier" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "Resource", - "LFTags" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::LakeFormation::TagAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Resource", + "/properties/LFTags" + ], + "definitions": { + "CatalogIdString": { + "maxLength": 12, + "minLength": 12, + "type": "string" + }, + "CatalogResource": { + "additionalProperties": false, + "type": "object" + }, + "ColumnNames": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/NameString" + }, + "type": "array" + }, + "DataLakePrincipal": { + "additionalProperties": false, + "properties": { + "DataLakePrincipalIdentifier": { + "$ref": "#/definitions/DataLakePrincipalString" + } + }, + "type": "object" + }, + "DataLakePrincipalString": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "DatabaseResource": { + "additionalProperties": false, + "properties": { + "CatalogId": { + "$ref": "#/definitions/CatalogIdString" + }, + "Name": { + "$ref": "#/definitions/NameString" + } + }, + "required": [ + "CatalogId", + "Name" + ], + "type": "object" + }, + "LFTagKey": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "LFTagPair": { + "additionalProperties": false, + "properties": { + "CatalogId": { + "$ref": "#/definitions/CatalogIdString" + }, + "TagKey": { + "$ref": "#/definitions/LFTagKey" + }, + "TagValues": { + "$ref": "#/definitions/TagValueList" + } + }, + "required": [ + "CatalogId", + "TagKey", + "TagValues" + ], + "type": "object" + }, + "LFTagValue": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "LFTagsList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LFTagPair" + }, + "type": "array" + }, + "NameString": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Resource": { + "additionalProperties": false, + "properties": { + "Catalog": { + "$ref": "#/definitions/CatalogResource" + }, + "Database": { + "$ref": "#/definitions/DatabaseResource" + }, + "Table": { + "$ref": "#/definitions/TableResource" + }, + "TableWithColumns": { + "$ref": "#/definitions/TableWithColumnsResource" + } + }, + "type": "object" + }, + "ResourceType": { + "enum": [ + "DATABASE", + "TABLE" + ], + "type": "string" + }, + "TableResource": { + "additionalProperties": false, + "properties": { + "CatalogId": { + "$ref": "#/definitions/CatalogIdString" + }, + "DatabaseName": { + "$ref": "#/definitions/NameString" + }, + "Name": { + "$ref": "#/definitions/NameString" + }, + "TableWildcard": { + "$ref": "#/definitions/TableWildcard" + } + }, + "required": [ + "CatalogId", + "DatabaseName" + ], + "type": "object" + }, + "TableWildcard": { + "additionalProperties": false, + "type": "object" + }, + "TableWithColumnsResource": { + "additionalProperties": false, + "properties": { + "CatalogId": { + "$ref": "#/definitions/CatalogIdString" + }, + "ColumnNames": { + "$ref": "#/definitions/ColumnNames" + }, + "DatabaseName": { + "$ref": "#/definitions/NameString" + }, + "Name": { + "$ref": "#/definitions/NameString" + } + }, + "required": [ + "CatalogId", + "DatabaseName", + "Name", + "ColumnNames" + ], + "type": "object" + }, + "TagValueList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LFTagValue" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "description": "A resource schema representing a Lake Formation Tag Association. While tag associations are not explicit Lake Formation resources, this CloudFormation resource can be used to associate tags with Lake Formation entities.", + "handlers": { + "create": { + "permissions": [ + "lakeformation:AddLFTagsToResource", + "glue:GetDatabase", + "glue:GetTable" + ] + }, + "delete": { + "permissions": [ + "lakeformation:RemoveLFTagsFromResource", + "glue:GetDatabase", + "glue:GetTable" + ] + }, + "read": { + "permissions": [ + "lakeformation:GetResourceLFTags", + "glue:GetDatabase", + "glue:GetTable" + ] + } + }, + "primaryIdentifier": [ + "/properties/ResourceIdentifier", + "/properties/TagsIdentifier" + ], + "properties": { + "LFTags": { + "$ref": "#/definitions/LFTagsList", + "description": "List of Lake Formation Tags to associate with the Lake Formation Resource" + }, + "Resource": { + "$ref": "#/definitions/Resource", + "description": "Resource to tag with the Lake Formation Tags" + }, + "ResourceIdentifier": { + "description": "Unique string identifying the resource. Used as primary identifier, which ideally should be a string", + "type": "string" + }, + "TagsIdentifier": { + "description": "Unique string identifying the resource's tags. Used as primary identifier, which ideally should be a string", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ResourceIdentifier", + "/properties/TagsIdentifier" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "Resource", + "LFTags" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::LakeFormation::TagAssociation" +} diff --git a/src/schema/aws-lambda-alias.json b/src/schema/aws-lambda-alias.json index 6a1271e0..9412fb6d 100644 --- a/src/schema/aws-lambda-alias.json +++ b/src/schema/aws-lambda-alias.json @@ -1,160 +1,160 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/FunctionName" - ], - "definitions": { - "AliasRoutingConfiguration": { - "additionalProperties": false, - "description": "The traffic-shifting configuration of a Lambda function alias.", - "properties": { - "AdditionalVersionWeights": { - "description": "The second version, and the percentage of traffic that's routed to it.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/VersionWeight" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "ProvisionedConcurrencyConfiguration": { - "additionalProperties": false, - "description": "A provisioned concurrency configuration for a function's alias.", - "properties": { - "ProvisionedConcurrentExecutions": { - "description": "The amount of provisioned concurrency to allocate for the alias.", - "type": "integer" - } - }, - "required": [ - "ProvisionedConcurrentExecutions" - ], - "type": "object" - }, - "VersionWeight": { - "additionalProperties": false, - "description": "The traffic-shifting configuration of a Lambda function alias.", - "properties": { - "FunctionVersion": { - "description": "The qualifier of the second version.", - "type": "string" - }, - "FunctionWeight": { - "description": "The percentage of traffic that the alias routes to the second version.", - "type": "number" - } - }, - "required": [ - "FunctionVersion", - "FunctionWeight" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Lambda::Alias", - "handlers": { - "create": { - "permissions": [ - "lambda:CreateAlias", - "lambda:PutProvisionedConcurrencyConfig", - "lambda:GetProvisionedConcurrencyConfig" - ], - "timeoutInMinutes": 45 - }, - "delete": { - "permissions": [ - "lambda:DeleteAlias", - "lambda:GetAlias" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "FunctionName": { - "$ref": "resource-schema.json#/properties/FunctionName" - } - }, - "required": [ - "FunctionName" - ] - }, - "permissions": [ - "lambda:ListAliases" - ] - }, - "read": { - "permissions": [ - "lambda:GetAlias", - "lambda:GetProvisionedConcurrencyConfig" - ] - }, - "update": { - "permissions": [ - "lambda:UpdateAlias", - "lambda:GetAlias", - "lambda:PutProvisionedConcurrencyConfig", - "lambda:DeleteProvisionedConcurrencyConfig", - "lambda:GetProvisionedConcurrencyConfig", - "codedeploy:CreateDeployment", - "codedeploy:GetDeployment", - "codedeploy:GetDeploymentGroup", - "codedeploy:GetDeploymentConfig", - "codedeploy:StopDeployment" - ], - "timeoutInMinutes": 120 - } - }, - "primaryIdentifier": [ - "/properties/AliasArn" - ], - "properties": { - "AliasArn": { - "description": "Lambda Alias ARN generated by the service.", - "type": "string" - }, - "Description": { - "description": "A description of the alias.", - "type": "string" - }, - "FunctionName": { - "description": "The name of the Lambda function.", - "type": "string" - }, - "FunctionVersion": { - "description": "The function version that the alias invokes.", - "type": "string" - }, - "Name": { - "description": "The name of the alias.", - "type": "string" - }, - "ProvisionedConcurrencyConfig": { - "$ref": "#/definitions/ProvisionedConcurrencyConfiguration", - "description": "Specifies a provisioned concurrency configuration for a function's alias." - }, - "RoutingConfig": { - "$ref": "#/definitions/AliasRoutingConfiguration", - "description": "The routing configuration of the alias." - } - }, - "propertyTransform": { - "/properties/FunctionName": "$split(FunctionName, \":\")[-1] $OR FunctionName" - }, - "readOnlyProperties": [ - "/properties/AliasArn" - ], - "required": [ - "FunctionName", - "FunctionVersion", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lambda", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Lambda::Alias" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/FunctionName" + ], + "definitions": { + "AliasRoutingConfiguration": { + "additionalProperties": false, + "description": "The traffic-shifting configuration of a Lambda function alias.", + "properties": { + "AdditionalVersionWeights": { + "description": "The second version, and the percentage of traffic that's routed to it.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VersionWeight" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ProvisionedConcurrencyConfiguration": { + "additionalProperties": false, + "description": "A provisioned concurrency configuration for a function's alias.", + "properties": { + "ProvisionedConcurrentExecutions": { + "description": "The amount of provisioned concurrency to allocate for the alias.", + "type": "integer" + } + }, + "required": [ + "ProvisionedConcurrentExecutions" + ], + "type": "object" + }, + "VersionWeight": { + "additionalProperties": false, + "description": "The traffic-shifting configuration of a Lambda function alias.", + "properties": { + "FunctionVersion": { + "description": "The qualifier of the second version.", + "type": "string" + }, + "FunctionWeight": { + "description": "The percentage of traffic that the alias routes to the second version.", + "type": "number" + } + }, + "required": [ + "FunctionVersion", + "FunctionWeight" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Lambda::Alias", + "handlers": { + "create": { + "permissions": [ + "lambda:CreateAlias", + "lambda:PutProvisionedConcurrencyConfig", + "lambda:GetProvisionedConcurrencyConfig" + ], + "timeoutInMinutes": 45 + }, + "delete": { + "permissions": [ + "lambda:DeleteAlias", + "lambda:GetAlias" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FunctionName": { + "$ref": "resource-schema.json#/properties/FunctionName" + } + }, + "required": [ + "FunctionName" + ] + }, + "permissions": [ + "lambda:ListAliases" + ] + }, + "read": { + "permissions": [ + "lambda:GetAlias", + "lambda:GetProvisionedConcurrencyConfig" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateAlias", + "lambda:GetAlias", + "lambda:PutProvisionedConcurrencyConfig", + "lambda:DeleteProvisionedConcurrencyConfig", + "lambda:GetProvisionedConcurrencyConfig", + "codedeploy:CreateDeployment", + "codedeploy:GetDeployment", + "codedeploy:GetDeploymentGroup", + "codedeploy:GetDeploymentConfig", + "codedeploy:StopDeployment" + ], + "timeoutInMinutes": 120 + } + }, + "primaryIdentifier": [ + "/properties/AliasArn" + ], + "properties": { + "AliasArn": { + "description": "Lambda Alias ARN generated by the service.", + "type": "string" + }, + "Description": { + "description": "A description of the alias.", + "type": "string" + }, + "FunctionName": { + "description": "The name of the Lambda function.", + "type": "string" + }, + "FunctionVersion": { + "description": "The function version that the alias invokes.", + "type": "string" + }, + "Name": { + "description": "The name of the alias.", + "type": "string" + }, + "ProvisionedConcurrencyConfig": { + "$ref": "#/definitions/ProvisionedConcurrencyConfiguration", + "description": "Specifies a provisioned concurrency configuration for a function's alias." + }, + "RoutingConfig": { + "$ref": "#/definitions/AliasRoutingConfiguration", + "description": "The routing configuration of the alias." + } + }, + "propertyTransform": { + "/properties/FunctionName": "$split(FunctionName, \":\")[-1] $OR FunctionName" + }, + "readOnlyProperties": [ + "/properties/AliasArn" + ], + "required": [ + "FunctionName", + "FunctionVersion", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lambda", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Lambda::Alias" +} diff --git a/src/schema/aws-lambda-codesigningconfig.json b/src/schema/aws-lambda-codesigningconfig.json index d7e8e514..db9ae0e3 100644 --- a/src/schema/aws-lambda-codesigningconfig.json +++ b/src/schema/aws-lambda-codesigningconfig.json @@ -1,153 +1,158 @@ -{ - "additionalProperties": false, - "definitions": { - "AllowedPublishers": { - "additionalProperties": false, - "description": "When the CodeSigningConfig is later on attached to a function, the function code will be expected to be signed by profiles from this list", - "properties": { - "SigningProfileVersionArns": { - "description": "List of Signing profile version Arns", - "items": { - "maxLength": 1024, - "minLength": 12, - "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "SigningProfileVersionArns" - ], - "type": "object" - }, - "CodeSigningPolicies": { - "additionalProperties": false, - "description": "Policies to control how to act if a signature is invalid", - "properties": { - "UntrustedArtifactOnDeployment": { - "default": "Warn", - "description": "Indicates how Lambda operations involve updating the code artifact will operate. Default to Warn if not provided", - "enum": [ - "Warn", - "Enforce" - ], - "type": "string" - } - }, - "required": [ - "UntrustedArtifactOnDeployment" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Lambda::CodeSigningConfig.", - "handlers": { - "create": { - "permissions": [ - "lambda:CreateCodeSigningConfig", - "lambda:TagResource" - ] - }, - "delete": { - "permissions": [ - "lambda:DeleteCodeSigningConfig" - ] - }, - "list": { - "permissions": [ - "lambda:ListCodeSigningConfigs" - ] - }, - "read": { - "permissions": [ - "lambda:GetCodeSigningConfig", - "lambda:ListTags" - ] - }, - "update": { - "permissions": [ - "lambda:UpdateCodeSigningConfig", - "lambda:ListTags", - "lambda:TagResource", - "lambda:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/CodeSigningConfigArn" - ], - "properties": { - "AllowedPublishers": { - "$ref": "#/definitions/AllowedPublishers", - "description": "When the CodeSigningConfig is later on attached to a function, the function code will be expected to be signed by profiles from this list" - }, - "CodeSigningConfigArn": { - "description": "A unique Arn for CodeSigningConfig resource", - "pattern": "arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:code-signing-config:csc-[a-z0-9]{17}", - "type": "string" - }, - "CodeSigningConfigId": { - "description": "A unique identifier for CodeSigningConfig resource", - "pattern": "csc-[a-zA-Z0-9-_\\.]{17}", - "type": "string" - }, - "CodeSigningPolicies": { - "$ref": "#/definitions/CodeSigningPolicies", - "description": "Policies to control how to act if a signature is invalid" - }, - "Description": { - "description": "A description of the CodeSigningConfig", - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "Tags": { - "description": "A list of tags to apply to CodeSigningConfig resource", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/CodeSigningConfigId", - "/properties/CodeSigningConfigArn" - ], - "required": [ - "AllowedPublishers" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Lambda::CodeSigningConfig" -} +{ + "additionalProperties": false, + "definitions": { + "AllowedPublishers": { + "additionalProperties": false, + "description": "When the CodeSigningConfig is later on attached to a function, the function code will be expected to be signed by profiles from this list", + "properties": { + "SigningProfileVersionArns": { + "description": "List of Signing profile version Arns", + "items": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "SigningProfileVersionArns" + ], + "type": "object" + }, + "CodeSigningPolicies": { + "additionalProperties": false, + "description": "Policies to control how to act if a signature is invalid", + "properties": { + "UntrustedArtifactOnDeployment": { + "default": "Warn", + "description": "Indicates how Lambda operations involve updating the code artifact will operate. Default to Warn if not provided", + "enum": [ + "Warn", + "Enforce" + ], + "type": "string" + } + }, + "required": [ + "UntrustedArtifactOnDeployment" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Lambda::CodeSigningConfig.", + "handlers": { + "create": { + "permissions": [ + "lambda:CreateCodeSigningConfig", + "lambda:TagResource" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteCodeSigningConfig" + ] + }, + "list": { + "permissions": [ + "lambda:ListCodeSigningConfigs" + ] + }, + "read": { + "permissions": [ + "lambda:GetCodeSigningConfig", + "lambda:ListTags" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateCodeSigningConfig", + "lambda:ListTags", + "lambda:TagResource", + "lambda:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/CodeSigningConfigArn" + ], + "properties": { + "AllowedPublishers": { + "$ref": "#/definitions/AllowedPublishers", + "description": "When the CodeSigningConfig is later on attached to a function, the function code will be expected to be signed by profiles from this list" + }, + "CodeSigningConfigArn": { + "description": "A unique Arn for CodeSigningConfig resource", + "pattern": "arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:code-signing-config:csc-[a-z0-9]{17}", + "type": "string" + }, + "CodeSigningConfigId": { + "description": "A unique identifier for CodeSigningConfig resource", + "pattern": "csc-[a-zA-Z0-9-_\\.]{17}", + "type": "string" + }, + "CodeSigningPolicies": { + "$ref": "#/definitions/CodeSigningPolicies", + "description": "Policies to control how to act if a signature is invalid" + }, + "Description": { + "description": "A description of the CodeSigningConfig", + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Tags": { + "description": "A list of tags to apply to CodeSigningConfig resource", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/CodeSigningConfigId", + "/properties/CodeSigningConfigArn" + ], + "required": [ + "AllowedPublishers" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "lambda:ListTags", + "lambda:TagResource", + "lambda:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Lambda::CodeSigningConfig" +} diff --git a/src/schema/aws-lambda-eventinvokeconfig.json b/src/schema/aws-lambda-eventinvokeconfig.json index b0f86aa4..9f1b9458 100644 --- a/src/schema/aws-lambda-eventinvokeconfig.json +++ b/src/schema/aws-lambda-eventinvokeconfig.json @@ -1,137 +1,137 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FunctionName", - "/properties/Qualifier" - ], - "definitions": { - "DestinationConfig": { - "additionalProperties": false, - "description": "A destination for events after they have been sent to a function for processing.", - "properties": { - "OnFailure": { - "$ref": "#/definitions/OnFailure" - }, - "OnSuccess": { - "$ref": "#/definitions/OnSuccess" - } - }, - "type": "object" - }, - "OnFailure": { - "additionalProperties": false, - "description": "The destination configuration for failed invocations.", - "properties": { - "Destination": { - "description": "The Amazon Resource Name (ARN) of the destination resource.", - "maxLength": 350, - "minLength": 0, - "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", - "type": "string" - } - }, - "required": [ - "Destination" - ], - "type": "object" - }, - "OnSuccess": { - "additionalProperties": false, - "description": "The destination configuration for successful invocations.", - "properties": { - "Destination": { - "description": "The Amazon Resource Name (ARN) of the destination resource.", - "maxLength": 350, - "minLength": 0, - "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", - "type": "string" - } - }, - "required": [ - "Destination" - ], - "type": "object" - } - }, - "description": "The AWS::Lambda::EventInvokeConfig resource configures options for asynchronous invocation on a version or an alias.", - "handlers": { - "create": { - "permissions": [ - "lambda:PutFunctionEventInvokeConfig" - ] - }, - "delete": { - "permissions": [ - "lambda:DeleteFunctionEventInvokeConfig" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "FunctionName": { - "$ref": "resource-schema.json#/properties/FunctionName" - } - }, - "required": [ - "FunctionName" - ] - }, - "permissions": [ - "lambda:ListFunctionEventInvokeConfigs" - ] - }, - "read": { - "permissions": [ - "lambda:GetFunctionEventInvokeConfig" - ] - }, - "update": { - "permissions": [ - "lambda:UpdateFunctionEventInvokeConfig" - ] - } - }, - "primaryIdentifier": [ - "/properties/FunctionName", - "/properties/Qualifier" - ], - "properties": { - "DestinationConfig": { - "$ref": "#/definitions/DestinationConfig" - }, - "FunctionName": { - "description": "The name of the Lambda function.", - "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", - "type": "string" - }, - "MaximumEventAgeInSeconds": { - "description": "The maximum age of a request that Lambda sends to a function for processing.", - "maximum": 21600, - "minimum": 60, - "type": "integer" - }, - "MaximumRetryAttempts": { - "description": "The maximum number of times to retry when the function returns an error.", - "maximum": 2, - "minimum": 0, - "type": "integer" - }, - "Qualifier": { - "description": "The identifier of a version or alias.", - "pattern": "^(|[a-zA-Z0-9$_-]{1,129})$", - "type": "string" - } - }, - "required": [ - "FunctionName", - "Qualifier" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Lambda::EventInvokeConfig" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FunctionName", + "/properties/Qualifier" + ], + "definitions": { + "DestinationConfig": { + "additionalProperties": false, + "description": "A destination for events after they have been sent to a function for processing.", + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + }, + "OnSuccess": { + "$ref": "#/definitions/OnSuccess" + } + }, + "type": "object" + }, + "OnFailure": { + "additionalProperties": false, + "description": "The destination configuration for failed invocations.", + "properties": { + "Destination": { + "description": "The Amazon Resource Name (ARN) of the destination resource.", + "maxLength": 350, + "minLength": 0, + "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "required": [ + "Destination" + ], + "type": "object" + }, + "OnSuccess": { + "additionalProperties": false, + "description": "The destination configuration for successful invocations.", + "properties": { + "Destination": { + "description": "The Amazon Resource Name (ARN) of the destination resource.", + "maxLength": 350, + "minLength": 0, + "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "required": [ + "Destination" + ], + "type": "object" + } + }, + "description": "The AWS::Lambda::EventInvokeConfig resource configures options for asynchronous invocation on a version or an alias.", + "handlers": { + "create": { + "permissions": [ + "lambda:PutFunctionEventInvokeConfig" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteFunctionEventInvokeConfig" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FunctionName": { + "$ref": "resource-schema.json#/properties/FunctionName" + } + }, + "required": [ + "FunctionName" + ] + }, + "permissions": [ + "lambda:ListFunctionEventInvokeConfigs" + ] + }, + "read": { + "permissions": [ + "lambda:GetFunctionEventInvokeConfig" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateFunctionEventInvokeConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/FunctionName", + "/properties/Qualifier" + ], + "properties": { + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "FunctionName": { + "description": "The name of the Lambda function.", + "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", + "type": "string" + }, + "MaximumEventAgeInSeconds": { + "description": "The maximum age of a request that Lambda sends to a function for processing.", + "maximum": 21600, + "minimum": 60, + "type": "integer" + }, + "MaximumRetryAttempts": { + "description": "The maximum number of times to retry when the function returns an error.", + "maximum": 2, + "minimum": 0, + "type": "integer" + }, + "Qualifier": { + "description": "The identifier of a version or alias.", + "pattern": "^(|[a-zA-Z0-9$_-]{1,129})$", + "type": "string" + } + }, + "required": [ + "FunctionName", + "Qualifier" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Lambda::EventInvokeConfig" +} diff --git a/src/schema/aws-lambda-eventsourcemapping.json b/src/schema/aws-lambda-eventsourcemapping.json index a9e0ff83..3683cf9b 100644 --- a/src/schema/aws-lambda-eventsourcemapping.json +++ b/src/schema/aws-lambda-eventsourcemapping.json @@ -1,467 +1,518 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/EventSourceArn", - "/properties/StartingPosition", - "/properties/StartingPositionTimestamp", - "/properties/SelfManagedEventSource", - "/properties/AmazonManagedKafkaEventSourceConfig", - "/properties/SelfManagedKafkaEventSourceConfig" - ], - "definitions": { - "AmazonManagedKafkaEventSourceConfig": { - "additionalProperties": false, - "description": "Specific configuration settings for an Amazon Managed Streaming for Apache Kafka (Amazon MSK) event source.", - "properties": { - "ConsumerGroupId": { - "$ref": "#/definitions/ConsumerGroupId", - "description": "The identifier for the Kafka consumer group to join. The consumer group ID must be unique among all your Kafka event sources. After creating a Kafka event source mapping with the consumer group ID specified, you cannot update this value. For more information, see [Customizable consumer group ID](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-consumer-group-id)." - } - }, - "type": "object" - }, - "ConsumerGroupId": { - "description": "The identifier for the Kafka Consumer Group to join.", - "maxLength": 200, - "minLength": 1, - "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", - "type": "string" - }, - "DestinationConfig": { - "additionalProperties": false, - "description": "A configuration object that specifies the destination of an event after Lambda processes it.", - "properties": { - "OnFailure": { - "$ref": "#/definitions/OnFailure", - "description": "The destination configuration for failed invocations." - } - }, - "type": "object" - }, - "DocumentDBEventSourceConfig": { - "additionalProperties": false, - "description": "Specific configuration settings for a DocumentDB event source.", - "properties": { - "CollectionName": { - "description": "The name of the collection to consume within the database. If you do not specify a collection, Lambda consumes all collections.", - "maxLength": 57, - "minLength": 1, - "type": "string" - }, - "DatabaseName": { - "description": "The name of the database to consume within the DocumentDB cluster.", - "maxLength": 63, - "minLength": 1, - "type": "string" - }, - "FullDocument": { - "description": "Determines what DocumentDB sends to your event stream during document update operations. If set to UpdateLookup, DocumentDB sends a delta describing the changes, along with a copy of the entire document. Otherwise, DocumentDB sends only a partial document that contains the changes.", - "enum": [ - "UpdateLookup", - "Default" - ], - "type": "string" - } - }, - "type": "object" - }, - "Endpoints": { - "additionalProperties": false, - "description": "The list of bootstrap servers for your Kafka brokers in the following format: ``\"KafkaBootstrapServers\": [\"abc.xyz.com:xxxx\",\"abc2.xyz.com:xxxx\"]``.", - "properties": { - "KafkaBootstrapServers": { - "description": "The list of bootstrap servers for your Kafka brokers in the following format: ``\"KafkaBootstrapServers\": [\"abc.xyz.com:xxxx\",\"abc2.xyz.com:xxxx\"]``.", - "items": { - "description": "The URL of a Kafka server.", - "maxLength": 300, - "minLength": 1, - "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", - "type": "string" - }, - "maxItems": 10, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "Filter": { - "additionalProperties": false, - "description": "A structure within a ``FilterCriteria`` object that defines an event filtering pattern.", - "properties": { - "Pattern": { - "description": "A filter pattern. For more information on the syntax of a filter pattern, see [Filter rule syntax](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-syntax).", - "maxLength": 4096, - "minLength": 0, - "pattern": ".*", - "type": "string" - } - }, - "type": "object" - }, - "FilterCriteria": { - "additionalProperties": false, - "description": "An object that contains the filters for an event source.", - "properties": { - "Filters": { - "description": "A list of filters.", - "items": { - "$ref": "#/definitions/Filter" - }, - "maxItems": 20, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "MaximumConcurrency": { - "description": "The maximum number of concurrent functions that an event source can invoke.", - "maximum": 1000, - "minimum": 2, - "type": "integer" - }, - "OnFailure": { - "additionalProperties": false, - "description": "A destination for events that failed processing.", - "properties": { - "Destination": { - "description": "The Amazon Resource Name (ARN) of the destination resource.\n To retain records of [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Lambda function, or Amazon EventBridge event bus as the destination.\n To retain records of failed invocations from [Kinesis and DynamoDB event sources](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#event-source-mapping-destinations), you can configure an Amazon SNS topic or Amazon SQS queue as the destination.\n To retain records of failed invocations from [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination.", - "maxLength": 1024, - "minLength": 12, - "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", - "type": "string" - } - }, - "type": "object" - }, - "ScalingConfig": { - "additionalProperties": false, - "description": "(Amazon SQS only) The scaling configuration for the event source. To remove the configuration, pass an empty value.", - "properties": { - "MaximumConcurrency": { - "$ref": "#/definitions/MaximumConcurrency", - "description": "Limits the number of concurrent instances that the SQS event source can invoke." - } - }, - "type": "object" - }, - "SelfManagedEventSource": { - "additionalProperties": false, - "description": "The self-managed Apache Kafka cluster for your event source.", - "properties": { - "Endpoints": { - "$ref": "#/definitions/Endpoints", - "description": "The list of bootstrap servers for your Kafka brokers in the following format: ``\"KafkaBootstrapServers\": [\"abc.xyz.com:xxxx\",\"abc2.xyz.com:xxxx\"]``." - } - }, - "type": "object" - }, - "SelfManagedKafkaEventSourceConfig": { - "additionalProperties": false, - "description": "Specific configuration settings for a self-managed Apache Kafka event source.", - "properties": { - "ConsumerGroupId": { - "$ref": "#/definitions/ConsumerGroupId", - "description": "The identifier for the Kafka consumer group to join. The consumer group ID must be unique among all your Kafka event sources. After creating a Kafka event source mapping with the consumer group ID specified, you cannot update this value. For more information, see [Customizable consumer group ID](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-consumer-group-id)." - } - }, - "type": "object" - }, - "SourceAccessConfiguration": { - "additionalProperties": false, - "description": "An array of the authentication protocol, VPC components, or virtual host to secure and define your event source.", - "properties": { - "Type": { - "description": "The type of authentication protocol, VPC components, or virtual host for your event source. For example: ``\"Type\":\"SASL_SCRAM_512_AUTH\"``.\n + ``BASIC_AUTH`` \u2013 (Amazon MQ) The ASMlong secret that stores your broker credentials.\n + ``BASIC_AUTH`` \u2013 (Self-managed Apache Kafka) The Secrets Manager ARN of your secret key used for SASL/PLAIN authentication of your Apache Kafka brokers.\n + ``VPC_SUBNET`` \u2013 (Self-managed Apache Kafka) The subnets associated with your VPC. Lambda connects to these subnets to fetch data from your self-managed Apache Kafka cluster.\n + ``VPC_SECURITY_GROUP`` \u2013 (Self-managed Apache Kafka) The VPC security group used to manage access to your self-managed Apache Kafka brokers.\n + ``SASL_SCRAM_256_AUTH`` \u2013 (Self-managed Apache Kafka) The Secrets Manager ARN of your secret key used for SASL SCRAM-256 authentication of your self-managed Apache Kafka brokers.\n + ``SASL_SCRAM_512_AUTH`` \u2013 (Amazon MSK, Self-managed Apache Kafka) The Secrets Manager ARN of your secret key used for SASL SCRAM-512 authentication of your self-managed Apache Kafka brokers.\n + ``VIRTUAL_HOST`` \u2013- (RabbitMQ) The name of the virtual host in your RabbitMQ broker. Lambda uses this RabbitMQ host as the event source. This property cannot be specified in an UpdateEventSourceMapping API call.\n + ``CLIENT_CERTIFICATE_TLS_AUTH`` \u2013 (Amazon MSK, self-managed Apache Kafka) The Secrets Manager ARN of your secret key containing the certificate chain (X.509 PEM), private key (PKCS#8 PEM), and private key password (optional) used for mutual TLS authentication of your MSK/Apache Kafka brokers.\n + ``SERVER_ROOT_CA_CERTIFICATE`` \u2013 (Self-managed Apache Kafka) The Secrets Manager ARN of your secret key containing the root CA certificate (X.509 PEM) used for TLS encryption of your Apache Kafka brokers.", - "enum": [ - "BASIC_AUTH", - "VPC_SUBNET", - "VPC_SECURITY_GROUP", - "SASL_SCRAM_512_AUTH", - "SASL_SCRAM_256_AUTH", - "VIRTUAL_HOST", - "CLIENT_CERTIFICATE_TLS_AUTH", - "SERVER_ROOT_CA_CERTIFICATE" - ], - "type": "string" - }, - "URI": { - "description": "The value for your chosen configuration in ``Type``. For example: ``\"URI\": \"arn:aws:secretsmanager:us-east-1:01234567890:secret:MyBrokerSecretName\"``.", - "maxLength": 200, - "minLength": 1, - "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A [tag](https://docs.aws.amazon.com/lambda/latest/dg/tagging.html) to apply to the event source mapping.", - "properties": { - "Key": { - "description": "The key for this tag.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for this tag.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "The ``AWS::Lambda::EventSourceMapping`` resource creates a mapping between an event source and an LAMlong function. LAM reads items from the event source and triggers the function.\n For details about each event source type, see the following topics. In particular, each of the topics describes the required and optional parameters for the specific event source. \n + [Configuring a Dynamo DB stream as an event source](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html#services-dynamodb-eventsourcemapping) \n + [Configuring a Kinesis stream as an event source](https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html#services-kinesis-eventsourcemapping) \n + [Configuring an SQS queue as an event source](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#events-sqs-eventsource) \n + [Configuring an MQ broker as an event source](https://docs.aws.amazon.com/lambda/latest/dg/with-mq.html#services-mq-eventsourcemapping) \n + [Configuring MSK as an event source](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html) \n + [Configuring Self-Managed Apache Kafka as an event source](https://docs.aws.amazon.com/lambda/latest/dg/kafka-smaa.html) \n + [Configuring Amazon DocumentDB as an event source](https://docs.aws.amazon.com/lambda/latest/dg/with-documentdb.html)", - "handlers": { - "create": { - "permissions": [ - "lambda:CreateEventSourceMapping", - "lambda:GetEventSourceMapping", - "lambda:TagResource", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "delete": { - "permissions": [ - "lambda:DeleteEventSourceMapping", - "lambda:GetEventSourceMapping", - "kms:Decrypt" - ] - }, - "list": { - "permissions": [ - "lambda:ListEventSourceMappings" - ] - }, - "read": { - "permissions": [ - "lambda:GetEventSourceMapping", - "lambda:ListTags", - "kms:Decrypt" - ] - }, - "update": { - "permissions": [ - "lambda:UpdateEventSourceMapping", - "lambda:GetEventSourceMapping", - "lambda:ListTags", - "lambda:TagResource", - "lambda:UntagResource", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AmazonManagedKafkaEventSourceConfig": { - "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig", - "description": "Specific configuration settings for an Amazon Managed Streaming for Apache Kafka (Amazon MSK) event source." - }, - "BatchSize": { - "description": "The maximum number of records in each batch that Lambda pulls from your stream or queue and sends to your function. Lambda passes all of the records in the batch to the function in a single call, up to the payload limit for synchronous invocation (6 MB).\n + *Amazon Kinesis* \u2013 Default 100. Max 10,000.\n + *Amazon DynamoDB Streams* \u2013 Default 100. Max 10,000.\n + *Amazon Simple Queue Service* \u2013 Default 10. For standard queues the max is 10,000. For FIFO queues the max is 10.\n + *Amazon Managed Streaming for Apache Kafka* \u2013 Default 100. Max 10,000.\n + *Self-managed Apache Kafka* \u2013 Default 100. Max 10,000.\n + *Amazon MQ (ActiveMQ and RabbitMQ)* \u2013 Default 100. Max 10,000.\n + *DocumentDB* \u2013 Default 100. Max 10,000.", - "maximum": 10000, - "minimum": 1, - "type": "integer" - }, - "BisectBatchOnFunctionError": { - "description": "(Kinesis and DynamoDB Streams only) If the function returns an error, split the batch in two and retry. The default value is false.", - "type": "boolean" - }, - "DestinationConfig": { - "$ref": "#/definitions/DestinationConfig", - "description": "(Kinesis, DynamoDB Streams, Amazon MSK, and self-managed Apache Kafka event sources only) A configuration object that specifies the destination of an event after Lambda processes it." - }, - "DocumentDBEventSourceConfig": { - "$ref": "#/definitions/DocumentDBEventSourceConfig", - "description": "Specific configuration settings for a DocumentDB event source." - }, - "Enabled": { - "description": "When true, the event source mapping is active. When false, Lambda pauses polling and invocation.\n Default: True", - "type": "boolean" - }, - "EventSourceArn": { - "description": "The Amazon Resource Name (ARN) of the event source.\n + *Amazon Kinesis* \u2013 The ARN of the data stream or a stream consumer.\n + *Amazon DynamoDB Streams* \u2013 The ARN of the stream.\n + *Amazon Simple Queue Service* \u2013 The ARN of the queue.\n + *Amazon Managed Streaming for Apache Kafka* \u2013 The ARN of the cluster or the ARN of the VPC connection (for [cross-account event source mappings](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#msk-multi-vpc)).\n + *Amazon MQ* \u2013 The ARN of the broker.\n + *Amazon DocumentDB* \u2013 The ARN of the DocumentDB change stream.", - "maxLength": 1024, - "minLength": 12, - "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", - "type": "string" - }, - "EventSourceMappingArn": { - "description": "", - "maxLength": 120, - "minLength": 85, - "pattern": "arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:\\d{12}:event-source-mapping:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", - "type": "string" - }, - "FilterCriteria": { - "$ref": "#/definitions/FilterCriteria", - "description": "An object that defines the filter criteria that determine whether Lambda should process an event. For more information, see [Lambda event filtering](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html)." - }, - "FunctionName": { - "description": "The name or ARN of the Lambda function.\n **Name formats**\n + *Function name* \u2013 ``MyFunction``.\n + *Function ARN* \u2013 ``arn:aws:lambda:us-west-2:123456789012:function:MyFunction``.\n + *Version or Alias ARN* \u2013 ``arn:aws:lambda:us-west-2:123456789012:function:MyFunction:PROD``.\n + *Partial ARN* \u2013 ``123456789012:function:MyFunction``.\n \n The length constraint applies only to the full ARN. If you specify only the function name, it's limited to 64 characters in length.", - "maxLength": 140, - "minLength": 1, - "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", - "type": "string" - }, - "FunctionResponseTypes": { - "description": "(Kinesis, DynamoDB Streams, and SQS) A list of current response type enums applied to the event source mapping.\n Valid Values: ``ReportBatchItemFailures``", - "items": { - "enum": [ - "ReportBatchItemFailures" - ], - "type": "string" - }, - "maxLength": 1, - "minLength": 0, - "type": "array", - "uniqueItems": true - }, - "Id": { - "description": "", - "maxLength": 36, - "minLength": 36, - "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", - "type": "string" - }, - "KmsKeyArn": { - "description": "The ARN of the KMSlong (KMS) customer managed key that Lambda uses to encrypt your function's [filter criteria](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-basics).", - "maxLength": 2048, - "minLength": 12, - "pattern": "(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()", - "type": "string" - }, - "MaximumBatchingWindowInSeconds": { - "description": "The maximum amount of time, in seconds, that Lambda spends gathering records before invoking the function.\n *Default (, , event sources)*: 0\n *Default (, Kafka, , event sources)*: 500 ms\n *Related setting:* For SQS event sources, when you set ``BatchSize`` to a value greater than 10, you must set ``MaximumBatchingWindowInSeconds`` to at least 1.", - "maximum": 300, - "minimum": 0, - "type": "integer" - }, - "MaximumRecordAgeInSeconds": { - "description": "(Kinesis and DynamoDB Streams only) Discard records older than the specified age. The default value is -1, which sets the maximum age to infinite. When the value is set to infinite, Lambda never discards old records.\n The minimum valid value for maximum record age is 60s. Although values less than 60 and greater than -1 fall within the parameter's absolute range, they are not allowed", - "maximum": 604800, - "minimum": -1, - "type": "integer" - }, - "MaximumRetryAttempts": { - "description": "(Kinesis and DynamoDB Streams only) Discard records after the specified number of retries. The default value is -1, which sets the maximum number of retries to infinite. When MaximumRetryAttempts is infinite, Lambda retries failed records until the record expires in the event source.", - "maximum": 10000, - "minimum": -1, - "type": "integer" - }, - "ParallelizationFactor": { - "description": "(Kinesis and DynamoDB Streams only) The number of batches to process concurrently from each shard. The default value is 1.", - "maximum": 10, - "minimum": 1, - "type": "integer" - }, - "Queues": { - "description": "(Amazon MQ) The name of the Amazon MQ broker destination queue to consume.", - "items": { - "maxLength": 1000, - "minLength": 1, - "pattern": "[\\s\\S]*", - "type": "string" - }, - "maxItems": 1, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "ScalingConfig": { - "$ref": "#/definitions/ScalingConfig", - "description": "(Amazon SQS only) The scaling configuration for the event source. For more information, see [Configuring maximum concurrency for Amazon SQS event sources](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#events-sqs-max-concurrency)." - }, - "SelfManagedEventSource": { - "$ref": "#/definitions/SelfManagedEventSource", - "description": "The self-managed Apache Kafka cluster for your event source." - }, - "SelfManagedKafkaEventSourceConfig": { - "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig", - "description": "Specific configuration settings for a self-managed Apache Kafka event source." - }, - "SourceAccessConfigurations": { - "description": "An array of the authentication protocol, VPC components, or virtual host to secure and define your event source.", - "items": { - "$ref": "#/definitions/SourceAccessConfiguration" - }, - "maxItems": 22, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "StartingPosition": { - "description": "The position in a stream from which to start reading. Required for Amazon Kinesis and Amazon DynamoDB.\n + *LATEST* - Read only new records.\n + *TRIM_HORIZON* - Process all available records.\n + *AT_TIMESTAMP* - Specify a time from which to start reading records.", - "maxLength": 12, - "minLength": 6, - "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", - "type": "string" - }, - "StartingPositionTimestamp": { - "description": "With ``StartingPosition`` set to ``AT_TIMESTAMP``, the time from which to start reading, in Unix time seconds. ``StartingPositionTimestamp`` cannot be in the future.", - "type": "number" - }, - "Tags": { - "description": "A list of tags to add to the event source mapping.\n You must have the ``lambda:TagResource``, ``lambda:UntagResource``, and ``lambda:ListTags`` permissions for your [principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) to manage the CFN stack. If you don't have these permissions, there might be unexpected behavior with stack-level tags propagating to the resource during resource creation and update.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Topics": { - "description": "The name of the Kafka topic.", - "items": { - "maxLength": 249, - "minLength": 1, - "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", - "type": "string" - }, - "maxItems": 1, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "TumblingWindowInSeconds": { - "description": "(Kinesis and DynamoDB Streams only) The duration in seconds of a processing window for DynamoDB and Kinesis Streams event sources. A value of 0 seconds indicates no tumbling window.", - "maximum": 900, - "minimum": 0, - "type": "integer" - } - }, - "propertyTransform": { - "/properties/StartingPositionTimestamp": "StartingPositionTimestamp * 1000" - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/EventSourceMappingArn" - ], - "required": [ - "FunctionName" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Lambda::EventSourceMapping" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "description": "Specific configuration settings for an Amazon Managed Streaming for Apache Kafka (Amazon MSK) event source.", + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId", + "description": "The identifier for the Kafka consumer group to join. The consumer group ID must be unique among all your Kafka event sources. After creating a Kafka event source mapping with the consumer group ID specified, you cannot update this value. For more information, see [Customizable consumer group ID](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-consumer-group-id)." + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "description": "The identifier for the Kafka Consumer Group to join.", + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "description": "A configuration object that specifies the destination of an event after Lambda processes it.", + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure", + "description": "The destination configuration for failed invocations." + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "description": "Specific configuration settings for a DocumentDB event source.", + "properties": { + "CollectionName": { + "description": "The name of the collection to consume within the database. If you do not specify a collection, Lambda consumes all collections.", + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "description": "The name of the database to consume within the DocumentDB cluster.", + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "description": "Determines what DocumentDB sends to your event stream during document update operations. If set to UpdateLookup, DocumentDB sends a delta describing the changes, along with a copy of the entire document. Otherwise, DocumentDB sends only a partial document that contains the changes.", + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "description": "The list of bootstrap servers for your Kafka brokers in the following format: ``\"KafkaBootstrapServers\": [\"abc.xyz.com:xxxx\",\"abc2.xyz.com:xxxx\"]``.", + "properties": { + "KafkaBootstrapServers": { + "description": "The list of bootstrap servers for your Kafka brokers in the following format: ``\"KafkaBootstrapServers\": [\"abc.xyz.com:xxxx\",\"abc2.xyz.com:xxxx\"]``.", + "items": { + "description": "The URL of a Kafka server.", + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "description": "A structure within a ``FilterCriteria`` object that defines an event filtering pattern.", + "properties": { + "Pattern": { + "description": "A filter pattern. For more information on the syntax of a filter pattern, see [Filter rule syntax](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-syntax).", + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "description": "An object that contains the filters for an event source.", + "properties": { + "Filters": { + "description": "A list of filters.", + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "description": "The maximum number of concurrent functions that an event source can invoke.", + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "MetricsConfig": { + "additionalProperties": false, + "description": "The metrics configuration for your event source. Use this configuration object to define which metrics you want your event source mapping to produce.", + "properties": { + "Metrics": { + "description": "The metrics you want your event source mapping to produce. Include ``EventCount`` to receive event source mapping metrics related to the number of events processed by your event source mapping. For more information about these metrics, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics).", + "items": { + "enum": [ + "EventCount" + ], + "type": "string" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "OnFailure": { + "additionalProperties": false, + "description": "A destination for events that failed processing.", + "properties": { + "Destination": { + "description": "The Amazon Resource Name (ARN) of the destination resource.\n To retain records of unsuccessful [asynchronous invocations](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-async-destinations), you can configure an Amazon SNS topic, Amazon SQS queue, Amazon S3 bucket, Lambda function, or Amazon EventBridge event bus as the destination.\n To retain records of failed invocations from [Kinesis](https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html), [DynamoDB](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html), [self-managed Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html#services-smaa-onfailure-destination) or [Amazon MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-onfailure-destination), you can configure an Amazon SNS topic, Amazon SQS queue, or Amazon S3 bucket as the destination.", + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ProvisionedPollerConfig": { + "additionalProperties": false, + "description": "The [provisioned mode](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#invocation-eventsourcemapping-provisioned-mode) configuration for the event source. Use provisioned mode to customize the minimum and maximum number of event pollers for your event source.", + "properties": { + "MaximumPollers": { + "description": "The maximum number of event pollers this event source can scale up to.", + "maximum": 2000, + "minimum": 1, + "type": "integer" + }, + "MinimumPollers": { + "description": "The minimum number of event pollers this event source can scale down to.", + "maximum": 200, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "description": "(Amazon SQS only) The scaling configuration for the event source. To remove the configuration, pass an empty value.", + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency", + "description": "Limits the number of concurrent instances that the SQS event source can invoke." + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "description": "The self-managed Apache Kafka cluster for your event source.", + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints", + "description": "The list of bootstrap servers for your Kafka brokers in the following format: ``\"KafkaBootstrapServers\": [\"abc.xyz.com:xxxx\",\"abc2.xyz.com:xxxx\"]``." + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "description": "Specific configuration settings for a self-managed Apache Kafka event source.", + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId", + "description": "The identifier for the Kafka consumer group to join. The consumer group ID must be unique among all your Kafka event sources. After creating a Kafka event source mapping with the consumer group ID specified, you cannot update this value. For more information, see [Customizable consumer group ID](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#services-msk-consumer-group-id)." + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "description": "An array of the authentication protocol, VPC components, or virtual host to secure and define your event source.", + "properties": { + "Type": { + "description": "The type of authentication protocol, VPC components, or virtual host for your event source. For example: ``\"Type\":\"SASL_SCRAM_512_AUTH\"``.\n + ``BASIC_AUTH`` \u2013 (Amazon MQ) The ASMlong secret that stores your broker credentials.\n + ``BASIC_AUTH`` \u2013 (Self-managed Apache Kafka) The Secrets Manager ARN of your secret key used for SASL/PLAIN authentication of your Apache Kafka brokers.\n + ``VPC_SUBNET`` \u2013 (Self-managed Apache Kafka) The subnets associated with your VPC. Lambda connects to these subnets to fetch data from your self-managed Apache Kafka cluster.\n + ``VPC_SECURITY_GROUP`` \u2013 (Self-managed Apache Kafka) The VPC security group used to manage access to your self-managed Apache Kafka brokers.\n + ``SASL_SCRAM_256_AUTH`` \u2013 (Self-managed Apache Kafka) The Secrets Manager ARN of your secret key used for SASL SCRAM-256 authentication of your self-managed Apache Kafka brokers.\n + ``SASL_SCRAM_512_AUTH`` \u2013 (Amazon MSK, Self-managed Apache Kafka) The Secrets Manager ARN of your secret key used for SASL SCRAM-512 authentication of your self-managed Apache Kafka brokers.\n + ``VIRTUAL_HOST`` \u2013- (RabbitMQ) The name of the virtual host in your RabbitMQ broker. Lambda uses this RabbitMQ host as the event source. This property cannot be specified in an UpdateEventSourceMapping API call.\n + ``CLIENT_CERTIFICATE_TLS_AUTH`` \u2013 (Amazon MSK, self-managed Apache Kafka) The Secrets Manager ARN of your secret key containing the certificate chain (X.509 PEM), private key (PKCS#8 PEM), and private key password (optional) used for mutual TLS authentication of your MSK/Apache Kafka brokers.\n + ``SERVER_ROOT_CA_CERTIFICATE`` \u2013 (Self-managed Apache Kafka) The Secrets Manager ARN of your secret key containing the root CA certificate (X.509 PEM) used for TLS encryption of your Apache Kafka brokers.", + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "description": "The value for your chosen configuration in ``Type``. For example: ``\"URI\": \"arn:aws:secretsmanager:us-east-1:01234567890:secret:MyBrokerSecretName\"``.", + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A [tag](https://docs.aws.amazon.com/lambda/latest/dg/tagging.html) to apply to the event source mapping.", + "properties": { + "Key": { + "description": "The key for this tag.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for this tag.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "The ``AWS::Lambda::EventSourceMapping`` resource creates a mapping between an event source and an LAMlong function. LAM reads items from the event source and triggers the function.\n For details about each event source type, see the following topics. In particular, each of the topics describes the required and optional parameters for the specific event source. \n + [Configuring a Dynamo DB stream as an event source](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html#services-dynamodb-eventsourcemapping) \n + [Configuring a Kinesis stream as an event source](https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html#services-kinesis-eventsourcemapping) \n + [Configuring an SQS queue as an event source](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#events-sqs-eventsource) \n + [Configuring an MQ broker as an event source](https://docs.aws.amazon.com/lambda/latest/dg/with-mq.html#services-mq-eventsourcemapping) \n + [Configuring MSK as an event source](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html) \n + [Configuring Self-Managed Apache Kafka as an event source](https://docs.aws.amazon.com/lambda/latest/dg/kafka-smaa.html) \n + [Configuring Amazon DocumentDB as an event source](https://docs.aws.amazon.com/lambda/latest/dg/with-documentdb.html)", + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping", + "lambda:TagResource", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping", + "kms:Decrypt" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping", + "lambda:ListTags", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping", + "lambda:TagResource", + "lambda:UntagResource", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig", + "description": "Specific configuration settings for an Amazon Managed Streaming for Apache Kafka (Amazon MSK) event source." + }, + "BatchSize": { + "description": "The maximum number of records in each batch that Lambda pulls from your stream or queue and sends to your function. Lambda passes all of the records in the batch to the function in a single call, up to the payload limit for synchronous invocation (6 MB).\n + *Amazon Kinesis* \u2013 Default 100. Max 10,000.\n + *Amazon DynamoDB Streams* \u2013 Default 100. Max 10,000.\n + *Amazon Simple Queue Service* \u2013 Default 10. For standard queues the max is 10,000. For FIFO queues the max is 10.\n + *Amazon Managed Streaming for Apache Kafka* \u2013 Default 100. Max 10,000.\n + *Self-managed Apache Kafka* \u2013 Default 100. Max 10,000.\n + *Amazon MQ (ActiveMQ and RabbitMQ)* \u2013 Default 100. Max 10,000.\n + *DocumentDB* \u2013 Default 100. Max 10,000.", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "description": "(Kinesis and DynamoDB Streams only) If the function returns an error, split the batch in two and retry. The default value is false.\n When using ``BisectBatchOnFunctionError``, check the ``BatchSize`` parameter in the ``OnFailure`` destination message's metadata. The ``BatchSize`` could be greater than 1 since LAM consolidates failed messages metadata when writing to the ``OnFailure`` destination.", + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig", + "description": "(Kinesis, DynamoDB Streams, Amazon MSK, and self-managed Apache Kafka event sources only) A configuration object that specifies the destination of an event after Lambda processes it." + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig", + "description": "Specific configuration settings for a DocumentDB event source." + }, + "Enabled": { + "description": "When true, the event source mapping is active. When false, Lambda pauses polling and invocation.\n Default: True", + "type": "boolean" + }, + "EventSourceArn": { + "description": "The Amazon Resource Name (ARN) of the event source.\n + *Amazon Kinesis* \u2013 The ARN of the data stream or a stream consumer.\n + *Amazon DynamoDB Streams* \u2013 The ARN of the stream.\n + *Amazon Simple Queue Service* \u2013 The ARN of the queue.\n + *Amazon Managed Streaming for Apache Kafka* \u2013 The ARN of the cluster or the ARN of the VPC connection (for [cross-account event source mappings](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html#msk-multi-vpc)).\n + *Amazon MQ* \u2013 The ARN of the broker.\n + *Amazon DocumentDB* \u2013 The ARN of the DocumentDB change stream.", + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "EventSourceMappingArn": { + "description": "", + "maxLength": 120, + "minLength": 85, + "pattern": "arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:\\d{12}:event-source-mapping:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria", + "description": "An object that defines the filter criteria that determine whether Lambda should process an event. For more information, see [Lambda event filtering](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html)." + }, + "FunctionName": { + "description": "The name or ARN of the Lambda function.\n **Name formats**\n + *Function name* \u2013 ``MyFunction``.\n + *Function ARN* \u2013 ``arn:aws:lambda:us-west-2:123456789012:function:MyFunction``.\n + *Version or Alias ARN* \u2013 ``arn:aws:lambda:us-west-2:123456789012:function:MyFunction:PROD``.\n + *Partial ARN* \u2013 ``123456789012:function:MyFunction``.\n \n The length constraint applies only to the full ARN. If you specify only the function name, it's limited to 64 characters in length.", + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "description": "(Kinesis, DynamoDB Streams, and SQS) A list of current response type enums applied to the event source mapping.\n Valid Values: ``ReportBatchItemFailures``", + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "description": "", + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "KmsKeyArn": { + "description": "The ARN of the KMSlong (KMS) customer managed key that Lambda uses to encrypt your function's [filter criteria](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-basics).", + "maxLength": 2048, + "minLength": 12, + "pattern": "(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "description": "The maximum amount of time, in seconds, that Lambda spends gathering records before invoking the function.\n *Default (, , event sources)*: 0\n *Default (, Kafka, , event sources)*: 500 ms\n *Related setting:* For SQS event sources, when you set ``BatchSize`` to a value greater than 10, you must set ``MaximumBatchingWindowInSeconds`` to at least 1.", + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "description": "(Kinesis and DynamoDB Streams only) Discard records older than the specified age. The default value is -1, which sets the maximum age to infinite. When the value is set to infinite, Lambda never discards old records.\n The minimum valid value for maximum record age is 60s. Although values less than 60 and greater than -1 fall within the parameter's absolute range, they are not allowed", + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "description": "(Kinesis and DynamoDB Streams only) Discard records after the specified number of retries. The default value is -1, which sets the maximum number of retries to infinite. When MaximumRetryAttempts is infinite, Lambda retries failed records until the record expires in the event source.", + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "MetricsConfig": { + "$ref": "#/definitions/MetricsConfig", + "description": "The metrics configuration for your event source. For more information, see [Event source mapping metrics](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html#event-source-mapping-metrics)." + }, + "ParallelizationFactor": { + "description": "(Kinesis and DynamoDB Streams only) The number of batches to process concurrently from each shard. The default value is 1.", + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "ProvisionedPollerConfig": { + "$ref": "#/definitions/ProvisionedPollerConfig", + "description": "(Amazon MSK and self-managed Apache Kafka only) The provisioned mode configuration for the event source. For more information, see [provisioned mode](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#invocation-eventsourcemapping-provisioned-mode)." + }, + "Queues": { + "description": "(Amazon MQ) The name of the Amazon MQ broker destination queue to consume.", + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig", + "description": "(Amazon SQS only) The scaling configuration for the event source. For more information, see [Configuring maximum concurrency for Amazon SQS event sources](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#events-sqs-max-concurrency)." + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource", + "description": "The self-managed Apache Kafka cluster for your event source." + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig", + "description": "Specific configuration settings for a self-managed Apache Kafka event source." + }, + "SourceAccessConfigurations": { + "description": "An array of the authentication protocol, VPC components, or virtual host to secure and define your event source.", + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "description": "The position in a stream from which to start reading. Required for Amazon Kinesis and Amazon DynamoDB.\n + *LATEST* - Read only new records.\n + *TRIM_HORIZON* - Process all available records.\n + *AT_TIMESTAMP* - Specify a time from which to start reading records.", + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "description": "With ``StartingPosition`` set to ``AT_TIMESTAMP``, the time from which to start reading, in Unix time seconds. ``StartingPositionTimestamp`` cannot be in the future.", + "type": "number" + }, + "Tags": { + "description": "A list of tags to add to the event source mapping.\n You must have the ``lambda:TagResource``, ``lambda:UntagResource``, and ``lambda:ListTags`` permissions for your [principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) to manage the CFN stack. If you don't have these permissions, there might be unexpected behavior with stack-level tags propagating to the resource during resource creation and update.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Topics": { + "description": "The name of the Kafka topic.", + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "description": "(Kinesis and DynamoDB Streams only) The duration in seconds of a processing window for DynamoDB and Kinesis Streams event sources. A value of 0 seconds indicates no tumbling window.", + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "propertyTransform": { + "/properties/StartingPositionTimestamp": "StartingPositionTimestamp * 1000" + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/EventSourceMappingArn" + ], + "required": [ + "FunctionName" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "lambda:ListTags", + "lambda:TagResource", + "lambda:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/schema/aws-lambda-function.json b/src/schema/aws-lambda-function.json index bcfce22e..9ade73d1 100644 --- a/src/schema/aws-lambda-function.json +++ b/src/schema/aws-lambda-function.json @@ -1,584 +1,588 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FunctionName" - ], - "definitions": { - "Code": { - "additionalProperties": false, - "description": "The [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html) for a Lambda function. To deploy a function defined as a container image, you specify the location of a container image in the Amazon ECR registry. For a .zip file deployment package, you can specify the location of an object in Amazon S3. For Node.js and Python functions, you can specify the function code inline in the template.\n Changes to a deployment package in Amazon S3 or a container image in ECR are not detected automatically during stack updates. To update the function code, change the object key or version in the template.", - "properties": { - "ImageUri": { - "description": "URI of a [container image](https://docs.aws.amazon.com/lambda/latest/dg/lambda-images.html) in the Amazon ECR registry.", - "type": "string" - }, - "S3Bucket": { - "description": "An Amazon S3 bucket in the same AWS-Region as your function. The bucket can be in a different AWS-account.", - "maxLength": 63, - "minLength": 3, - "pattern": "^[0-9A-Za-z\\.\\-_]*(?``. To use a different log group, enter an existing log group or enter a new log group name.", - "maxLength": 512, - "minLength": 1, - "pattern": "[\\.\\-_/#A-Za-z0-9]+", - "type": "string" - }, - "SystemLogLevel": { - "description": "Set this property to filter the system logs for your function that Lambda sends to CloudWatch. Lambda only sends system logs at the selected level of detail and lower, where ``DEBUG`` is the highest level and ``WARN`` is the lowest.", - "enum": [ - "DEBUG", - "INFO", - "WARN" - ], - "type": "string" - } - }, - "type": "object" - }, - "RecursiveLoop": { - "description": "The function recursion configuration.", - "enum": [ - "Allow", - "Terminate" - ], - "type": "string" - }, - "RuntimeManagementConfig": { - "additionalProperties": false, - "description": "Sets the runtime management configuration for a function's version. For more information, see [Runtime updates](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html).", - "properties": { - "RuntimeVersionArn": { - "description": "The ARN of the runtime version you want the function to use.\n This is only required if you're using the *Manual* runtime update mode.", - "type": "string" - }, - "UpdateRuntimeOn": { - "description": "Specify the runtime update mode.\n + *Auto (default)* - Automatically update to the most recent and secure runtime version using a [Two-phase runtime version rollout](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html#runtime-management-two-phase). This is the best choice for most customers to ensure they always benefit from runtime updates.\n + *FunctionUpdate* - LAM updates the runtime of you function to the most recent and secure runtime version when you update your function. This approach synchronizes runtime updates with function deployments, giving you control over when runtime updates are applied and allowing you to detect and mitigate rare runtime update incompatibilities early. When using this setting, you need to regularly update your functions to keep their runtime up-to-date.\n + *Manual* - You specify a runtime version in your function configuration. The function will use this runtime version indefinitely. In the rare case where a new runtime version is incompatible with an existing function, this allows you to roll back your function to an earlier runtime version. For more information, see [Roll back a runtime version](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html#runtime-management-rollback).\n \n *Valid Values*: ``Auto`` | ``FunctionUpdate`` | ``Manual``", - "enum": [ - "Auto", - "FunctionUpdate", - "Manual" - ], - "type": "string" - } - }, - "required": [ - "UpdateRuntimeOn" - ], - "type": "object" - }, - "SnapStart": { - "additionalProperties": false, - "description": "The function's [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) setting.", - "properties": { - "ApplyOn": { - "description": "Set ``ApplyOn`` to ``PublishedVersions`` to create a snapshot of the initialized execution environment when you publish a function version.", - "enum": [ - "PublishedVersions", - "None" - ], - "type": "string" - } - }, - "required": [ - "ApplyOn" - ], - "type": "object" - }, - "SnapStartResponse": { - "additionalProperties": false, - "description": "The function's [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) setting.", - "properties": { - "ApplyOn": { - "description": "When set to ``PublishedVersions``, Lambda creates a snapshot of the execution environment when you publish a function version.", - "enum": [ - "PublishedVersions", - "None" - ], - "type": "string" - }, - "OptimizationStatus": { - "description": "When you provide a [qualified Amazon Resource Name (ARN)](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html#versioning-versions-using), this response element indicates whether SnapStart is activated for the specified function version.", - "enum": [ - "On", - "Off" - ], - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A [tag](https://docs.aws.amazon.com/lambda/latest/dg/tagging.html) to apply to the function.", - "properties": { - "Key": { - "description": "The key for this tag.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for this tag.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - }, - "TracingConfig": { - "additionalProperties": false, - "description": "The function's [](https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html) tracing configuration. To sample and record incoming requests, set ``Mode`` to ``Active``.", - "properties": { - "Mode": { - "description": "The tracing mode.", - "enum": [ - "Active", - "PassThrough" - ], - "type": "string" - } - }, - "type": "object" - }, - "VpcConfig": { - "additionalProperties": false, - "description": "The VPC security groups and subnets that are attached to a Lambda function. When you connect a function to a VPC, Lambda creates an elastic network interface for each combination of security group and subnet in the function's VPC configuration. The function can only access resources and the internet through that VPC. For more information, see [VPC Settings](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html).\n When you delete a function, CFN monitors the state of its network interfaces and waits for Lambda to delete them before proceeding. If the VPC is defined in the same stack, the network interfaces need to be deleted by Lambda before CFN can delete the VPC's resources.\n To monitor network interfaces, CFN needs the ``ec2:DescribeNetworkInterfaces`` permission. It obtains this from the user or role that modifies the stack. If you don't provide this permission, CFN does not wait for network interfaces to be deleted.", - "properties": { - "Ipv6AllowedForDualStack": { - "description": "Allows outbound IPv6 traffic on VPC functions that are connected to dual-stack subnets.", - "type": "boolean" - }, - "SecurityGroupIds": { - "description": "A list of VPC security group IDs.", - "items": { - "type": "string" - }, - "maxItems": 5, - "type": "array", - "uniqueItems": false - }, - "SubnetIds": { - "description": "A list of VPC subnet IDs.", - "items": { - "type": "string" - }, - "maxItems": 16, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - } - }, - "description": "The ``AWS::Lambda::Function`` resource creates a Lambda function. To create a function, you need a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html) and an [execution role](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html). The deployment package is a .zip file archive or container image that contains your function code. The execution role grants the function permission to use AWS services, such as Amazon CloudWatch Logs for log streaming and AWS X-Ray for request tracing.\n You set the package type to ``Image`` if the deployment package is a [container image](https://docs.aws.amazon.com/lambda/latest/dg/lambda-images.html). For these functions, include the URI of the container image in the ECR registry in the [ImageUri property of the Code property](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html#cfn-lambda-function-code-imageuri). You do not need to specify the handler and runtime properties. \n You set the package type to ``Zip`` if the deployment package is a [.zip file archive](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html#gettingstarted-package-zip). For these functions, specify the S3 location of your .zip file in the ``Code`` property. Alternatively, for Node.js and Python functions, you can define your function inline in the [ZipFile property of the Code property](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html#cfn-lambda-function-code-zipfile). In both cases, you must also specify the handler and runtime properties.\n You can use [code signing](https://docs.aws.amazon.com/lambda/latest/dg/configuration-codesigning.html) if your deployment package is a .zip file archive. To enable code signing for this function, specify the ARN of a code-signing configuration. When a user attempts to deploy a code package with ``UpdateFunctionCode``, Lambda checks that the code package has a valid signature from a trusted publisher. The code-signing configuration includes a set of signing profiles, which define the trusted publishers for this function.\n When you update a ``AWS::Lambda::Function`` resource, CFNshort calls the [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html) and [UpdateFunctionCode](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html) LAM APIs under the hood. Because these calls happen sequentially, and invocations can happen between these calls, your function may encounter errors in the time between the calls. For example, if you remove an environment variable, and the code that references that environment variable in the same CFNshort update, you may see invocation errors related to a missing environment variable. To work around this, you can invoke your function against a version or alias by default, rather than the ``$LATEST`` version.\n Note that you configure [provisioned concurrency](https://docs.aws.amazon.com/lambda/latest/dg/provisioned-concurrency.html) on a ``AWS::Lambda::Version`` or a ``AWS::Lambda::Alias``.\n For a complete introduction to Lambda functions, see [What is Lambda?](https://docs.aws.amazon.com/lambda/latest/dg/lambda-welcome.html) in the *Lambda developer guide.*", - "handlers": { - "create": { - "permissions": [ - "lambda:CreateFunction", - "lambda:GetFunction", - "lambda:PutFunctionConcurrency", - "iam:PassRole", - "s3:GetObject", - "s3:GetObjectVersion", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "elasticfilesystem:DescribeMountTargets", - "kms:CreateGrant", - "kms:Decrypt", - "kms:Encrypt", - "kms:GenerateDataKey", - "lambda:GetCodeSigningConfig", - "lambda:GetFunctionCodeSigningConfig", - "lambda:GetLayerVersion", - "lambda:GetRuntimeManagementConfig", - "lambda:PutRuntimeManagementConfig", - "lambda:TagResource", - "lambda:PutFunctionRecursionConfig", - "lambda:GetFunctionRecursionConfig" - ] - }, - "delete": { - "permissions": [ - "lambda:DeleteFunction", - "lambda:GetFunction", - "ec2:DescribeNetworkInterfaces" - ] - }, - "list": { - "permissions": [ - "lambda:ListFunctions" - ] - }, - "read": { - "permissions": [ - "lambda:GetFunction", - "lambda:GetFunctionCodeSigningConfig", - "lambda:GetFunctionRecursionConfig" - ] - }, - "update": { - "permissions": [ - "lambda:DeleteFunctionConcurrency", - "lambda:GetFunction", - "lambda:PutFunctionConcurrency", - "lambda:ListTags", - "lambda:TagResource", - "lambda:UntagResource", - "lambda:UpdateFunctionConfiguration", - "lambda:UpdateFunctionCode", - "iam:PassRole", - "s3:GetObject", - "s3:GetObjectVersion", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "elasticfilesystem:DescribeMountTargets", - "kms:CreateGrant", - "kms:Decrypt", - "kms:GenerateDataKey", - "lambda:GetRuntimeManagementConfig", - "lambda:PutRuntimeManagementConfig", - "lambda:PutFunctionCodeSigningConfig", - "lambda:DeleteFunctionCodeSigningConfig", - "lambda:GetCodeSigningConfig", - "lambda:GetFunctionCodeSigningConfig", - "lambda:PutFunctionRecursionConfig", - "lambda:GetFunctionRecursionConfig" - ] - } - }, - "primaryIdentifier": [ - "/properties/FunctionName" - ], - "properties": { - "Architectures": { - "description": "The instruction set architecture that the function supports. Enter a string array with one of the valid values (arm64 or x86_64). The default value is ``x86_64``.", - "items": { - "enum": [ - "x86_64", - "arm64" - ], - "type": "string" - }, - "maxItems": 1, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Arn": { - "description": "", - "type": "string" - }, - "Code": { - "$ref": "#/definitions/Code", - "description": "The code for the function. You can define your function code in multiple ways:\n + For .zip deployment packages, you can specify the S3 location of the .zip file in the ``S3Bucket``, ``S3Key``, and ``S3ObjectVersion`` properties.\n + For .zip deployment packages, you can alternatively define the function code inline in the ``ZipFile`` property. This method works only for Node.js and Python functions.\n + For container images, specify the URI of your container image in the ECR registry in the ``ImageUri`` property." - }, - "CodeSigningConfigArn": { - "description": "To enable code signing for this function, specify the ARN of a code-signing configuration. A code-signing configuration includes a set of signing profiles, which define the trusted publishers for this function.", - "pattern": "arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:\\d{12}:code-signing-config:csc-[a-z0-9]{17}", - "type": "string" - }, - "DeadLetterConfig": { - "$ref": "#/definitions/DeadLetterConfig", - "description": "A dead-letter queue configuration that specifies the queue or topic where Lambda sends asynchronous events when they fail processing. For more information, see [Dead-letter queues](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-dlq)." - }, - "Description": { - "description": "A description of the function.", - "maxLength": 256, - "type": "string" - }, - "Environment": { - "$ref": "#/definitions/Environment", - "description": "Environment variables that are accessible from function code during execution." - }, - "EphemeralStorage": { - "$ref": "#/definitions/EphemeralStorage", - "description": "The size of the function's ``/tmp`` directory in MB. The default value is 512, but it can be any whole number between 512 and 10,240 MB." - }, - "FileSystemConfigs": { - "description": "Connection settings for an Amazon EFS file system. To connect a function to a file system, a mount target must be available in every Availability Zone that your function connects to. If your template contains an [AWS::EFS::MountTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html) resource, you must also specify a ``DependsOn`` attribute to ensure that the mount target is created or updated before the function.\n For more information about using the ``DependsOn`` attribute, see [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html).", - "items": { - "$ref": "#/definitions/FileSystemConfig" - }, - "maxItems": 1, - "type": "array" - }, - "FunctionName": { - "description": "The name of the Lambda function, up to 64 characters in length. If you don't specify a name, CFN generates one.\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", - "minLength": 1, - "type": "string" - }, - "Handler": { - "description": "The name of the method within your code that Lambda calls to run your function. Handler is required if the deployment package is a .zip file archive. The format includes the file name. It can also include namespaces and other qualifiers, depending on the runtime. For more information, see [Lambda programming model](https://docs.aws.amazon.com/lambda/latest/dg/foundation-progmodel.html).", - "maxLength": 128, - "pattern": "^[^\\s]+$", - "type": "string" - }, - "ImageConfig": { - "$ref": "#/definitions/ImageConfig", - "description": "Configuration values that override the container image Dockerfile settings. For more information, see [Container image settings](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-parms)." - }, - "KmsKeyArn": { - "description": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption). When [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) is activated, LAM also uses this key is to encrypt your function's snapshot. If you deploy your function using a container image, LAM also uses this key to encrypt your function when it's deployed. Note that this is not the same key that's used to protect your container image in the ECRlong (ECR). If you don't provide a customer managed key, LAM uses a default service key.", - "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", - "type": "string" - }, - "Layers": { - "description": "A list of [function layers](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) to add to the function's execution environment. Specify each layer by its ARN, including the version.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "LoggingConfig": { - "$ref": "#/definitions/LoggingConfig", - "description": "The function's Amazon CloudWatch Logs configuration settings." - }, - "MemorySize": { - "description": "The amount of [memory available to the function](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-memory-console) at runtime. Increasing the function memory also increases its CPU allocation. The default value is 128 MB. The value can be any multiple of 1 MB. Note that new AWS accounts have reduced concurrency and memory quotas. AWS raises these quotas automatically based on your usage. You can also request a quota increase.", - "type": "integer" - }, - "PackageType": { - "description": "The type of deployment package. Set to ``Image`` for container image and set ``Zip`` for .zip file archive.", - "enum": [ - "Image", - "Zip" - ], - "type": "string" - }, - "RecursiveLoop": { - "$ref": "#/definitions/RecursiveLoop", - "description": "The status of your function's recursive loop detection configuration.\n When this value is set to ``Allow``and Lambda detects your function being invoked as part of a recursive loop, it doesn't take any action.\n When this value is set to ``Terminate`` and Lambda detects your function being invoked as part of a recursive loop, it stops your function being invoked and notifies you." - }, - "ReservedConcurrentExecutions": { - "description": "The number of simultaneous executions to reserve for the function.", - "minimum": 0, - "type": "integer" - }, - "Role": { - "description": "The Amazon Resource Name (ARN) of the function's execution role.", - "pattern": "^arn:(aws[a-zA-Z-]*)?:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "Runtime": { - "description": "The identifier of the function's [runtime](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html). Runtime is required if the deployment package is a .zip file archive. Specifying a runtime results in an error if you're deploying a function using a container image.\n The following list includes deprecated runtimes. Lambda blocks creating new functions and updating existing functions shortly after each runtime is deprecated. For more information, see [Runtime use after deprecation](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html#runtime-deprecation-levels).\n For a list of all currently supported runtimes, see [Supported runtimes](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html#runtimes-supported).", - "type": "string" - }, - "RuntimeManagementConfig": { - "$ref": "#/definitions/RuntimeManagementConfig", - "description": "Sets the runtime management configuration for a function's version. For more information, see [Runtime updates](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html)." - }, - "SnapStart": { - "$ref": "#/definitions/SnapStart", - "description": "The function's [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) setting." - }, - "SnapStartResponse": { - "$ref": "#/definitions/SnapStartResponse", - "description": "" - }, - "Tags": { - "description": "A list of [tags](https://docs.aws.amazon.com/lambda/latest/dg/tagging.html) to apply to the function.\n You must have the ``lambda:TagResource``, ``lambda:UntagResource``, and ``lambda:ListTags`` permissions for your [principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) to manage the CFN stack. If you don't have these permissions, there might be unexpected behavior with stack-level tags propagating to the resource during resource creation and update.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Timeout": { - "description": "The amount of time (in seconds) that Lambda allows a function to run before stopping it. The default is 3 seconds. The maximum allowed value is 900 seconds. For more information, see [Lambda execution environment](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-context.html).", - "minimum": 1, - "type": "integer" - }, - "TracingConfig": { - "$ref": "#/definitions/TracingConfig", - "description": "Set ``Mode`` to ``Active`` to sample and trace a subset of incoming requests with [X-Ray](https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html)." - }, - "VpcConfig": { - "$ref": "#/definitions/VpcConfig", - "description": "For network connectivity to AWS resources in a VPC, specify a list of security groups and subnets in the VPC. When you connect a function to a VPC, it can access resources and the internet only through that VPC. For more information, see [Configuring a Lambda function to access resources in a VPC](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html)." - } - }, - "readOnlyProperties": [ - "/properties/SnapStartResponse", - "/properties/SnapStartResponse/ApplyOn", - "/properties/SnapStartResponse/OptimizationStatus", - "/properties/Arn" - ], - "required": [ - "Code", - "Role" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Lambda::Function", - "writeOnlyProperties": [ - "/properties/SnapStart", - "/properties/SnapStart/ApplyOn", - "/properties/Code", - "/properties/Code/ImageUri", - "/properties/Code/S3Bucket", - "/properties/Code/S3Key", - "/properties/Code/S3ObjectVersion", - "/properties/Code/ZipFile" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FunctionName", + "/properties/PackageType" + ], + "definitions": { + "Code": { + "additionalProperties": false, + "description": "The [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html) for a Lambda function. To deploy a function defined as a container image, you specify the location of a container image in the Amazon ECR registry. For a .zip file deployment package, you can specify the location of an object in Amazon S3. For Node.js and Python functions, you can specify the function code inline in the template.\n When you specify source code inline for a Node.js function, the ``index`` file that CFN creates uses the extension ``.js``. This means that LAM treats the file as a CommonJS module. ES modules aren't supported for inline functions.\n Changes to a deployment package in Amazon S3 or a container image in ECR are not detected automatically during stack updates. To update the function code, change the object key or version in the template.", + "properties": { + "ImageUri": { + "description": "URI of a [container image](https://docs.aws.amazon.com/lambda/latest/dg/lambda-images.html) in the Amazon ECR registry.", + "type": "string" + }, + "S3Bucket": { + "description": "An Amazon S3 bucket in the same AWS-Region as your function. The bucket can be in a different AWS-account.", + "maxLength": 63, + "minLength": 3, + "pattern": "^[0-9A-Za-z\\.\\-_]*(?``. To use a different log group, enter an existing log group or enter a new log group name.", + "maxLength": 512, + "minLength": 1, + "pattern": "[\\.\\-_/#A-Za-z0-9]+", + "type": "string" + }, + "SystemLogLevel": { + "description": "Set this property to filter the system logs for your function that Lambda sends to CloudWatch. Lambda only sends system logs at the selected level of detail and lower, where ``DEBUG`` is the highest level and ``WARN`` is the lowest.", + "enum": [ + "DEBUG", + "INFO", + "WARN" + ], + "type": "string" + } + }, + "type": "object" + }, + "RecursiveLoop": { + "description": "The function recursion configuration.", + "enum": [ + "Allow", + "Terminate" + ], + "type": "string" + }, + "RuntimeManagementConfig": { + "additionalProperties": false, + "description": "Sets the runtime management configuration for a function's version. For more information, see [Runtime updates](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html).", + "properties": { + "RuntimeVersionArn": { + "description": "The ARN of the runtime version you want the function to use.\n This is only required if you're using the *Manual* runtime update mode.", + "type": "string" + }, + "UpdateRuntimeOn": { + "description": "Specify the runtime update mode.\n + *Auto (default)* - Automatically update to the most recent and secure runtime version using a [Two-phase runtime version rollout](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html#runtime-management-two-phase). This is the best choice for most customers to ensure they always benefit from runtime updates.\n + *FunctionUpdate* - LAM updates the runtime of you function to the most recent and secure runtime version when you update your function. This approach synchronizes runtime updates with function deployments, giving you control over when runtime updates are applied and allowing you to detect and mitigate rare runtime update incompatibilities early. When using this setting, you need to regularly update your functions to keep their runtime up-to-date.\n + *Manual* - You specify a runtime version in your function configuration. The function will use this runtime version indefinitely. In the rare case where a new runtime version is incompatible with an existing function, this allows you to roll back your function to an earlier runtime version. For more information, see [Roll back a runtime version](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html#runtime-management-rollback).\n \n *Valid Values*: ``Auto`` | ``FunctionUpdate`` | ``Manual``", + "enum": [ + "Auto", + "FunctionUpdate", + "Manual" + ], + "type": "string" + } + }, + "required": [ + "UpdateRuntimeOn" + ], + "type": "object" + }, + "SnapStart": { + "additionalProperties": false, + "description": "The function's [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) setting.", + "properties": { + "ApplyOn": { + "description": "Set ``ApplyOn`` to ``PublishedVersions`` to create a snapshot of the initialized execution environment when you publish a function version.", + "enum": [ + "PublishedVersions", + "None" + ], + "type": "string" + } + }, + "required": [ + "ApplyOn" + ], + "type": "object" + }, + "SnapStartResponse": { + "additionalProperties": false, + "description": "The function's [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) setting.", + "properties": { + "ApplyOn": { + "description": "When set to ``PublishedVersions``, Lambda creates a snapshot of the execution environment when you publish a function version.", + "enum": [ + "PublishedVersions", + "None" + ], + "type": "string" + }, + "OptimizationStatus": { + "description": "When you provide a [qualified Amazon Resource Name (ARN)](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html#versioning-versions-using), this response element indicates whether SnapStart is activated for the specified function version.", + "enum": [ + "On", + "Off" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A [tag](https://docs.aws.amazon.com/lambda/latest/dg/tagging.html) to apply to the function.", + "properties": { + "Key": { + "description": "The key for this tag.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for this tag.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "TracingConfig": { + "additionalProperties": false, + "description": "The function's [](https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html) tracing configuration. To sample and record incoming requests, set ``Mode`` to ``Active``.", + "properties": { + "Mode": { + "description": "The tracing mode.", + "enum": [ + "Active", + "PassThrough" + ], + "type": "string" + } + }, + "type": "object" + }, + "VpcConfig": { + "additionalProperties": false, + "description": "The VPC security groups and subnets that are attached to a Lambda function. When you connect a function to a VPC, Lambda creates an elastic network interface for each combination of security group and subnet in the function's VPC configuration. The function can only access resources and the internet through that VPC. For more information, see [VPC Settings](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html).\n When you delete a function, CFN monitors the state of its network interfaces and waits for Lambda to delete them before proceeding. If the VPC is defined in the same stack, the network interfaces need to be deleted by Lambda before CFN can delete the VPC's resources.\n To monitor network interfaces, CFN needs the ``ec2:DescribeNetworkInterfaces`` permission. It obtains this from the user or role that modifies the stack. If you don't provide this permission, CFN does not wait for network interfaces to be deleted.", + "properties": { + "Ipv6AllowedForDualStack": { + "description": "Allows outbound IPv6 traffic on VPC functions that are connected to dual-stack subnets.", + "type": "boolean" + }, + "SecurityGroupIds": { + "description": "A list of VPC security group IDs.", + "items": { + "type": "string" + }, + "maxItems": 5, + "type": "array", + "uniqueItems": false + }, + "SubnetIds": { + "description": "A list of VPC subnet IDs.", + "items": { + "type": "string" + }, + "maxItems": 16, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "description": "The ``AWS::Lambda::Function`` resource creates a Lambda function. To create a function, you need a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html) and an [execution role](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html). The deployment package is a .zip file archive or container image that contains your function code. The execution role grants the function permission to use AWS services, such as Amazon CloudWatch Logs for log streaming and AWS X-Ray for request tracing.\n You set the package type to ``Image`` if the deployment package is a [container image](https://docs.aws.amazon.com/lambda/latest/dg/lambda-images.html). For these functions, include the URI of the container image in the ECR registry in the [ImageUri property of the Code property](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html#cfn-lambda-function-code-imageuri). You do not need to specify the handler and runtime properties. \n You set the package type to ``Zip`` if the deployment package is a [.zip file archive](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html#gettingstarted-package-zip). For these functions, specify the S3 location of your .zip file in the ``Code`` property. Alternatively, for Node.js and Python functions, you can define your function inline in the [ZipFile property of the Code property](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html#cfn-lambda-function-code-zipfile). In both cases, you must also specify the handler and runtime properties.\n You can use [code signing](https://docs.aws.amazon.com/lambda/latest/dg/configuration-codesigning.html) if your deployment package is a .zip file archive. To enable code signing for this function, specify the ARN of a code-signing configuration. When a user attempts to deploy a code package with ``UpdateFunctionCode``, Lambda checks that the code package has a valid signature from a trusted publisher. The code-signing configuration includes a set of signing profiles, which define the trusted publishers for this function.\n When you update a ``AWS::Lambda::Function`` resource, CFNshort calls the [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html) and [UpdateFunctionCode](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html) LAM APIs under the hood. Because these calls happen sequentially, and invocations can happen between these calls, your function may encounter errors in the time between the calls. For example, if you remove an environment variable, and the code that references that environment variable in the same CFNshort update, you may see invocation errors related to a missing environment variable. To work around this, you can invoke your function against a version or alias by default, rather than the ``$LATEST`` version.\n Note that you configure [provisioned concurrency](https://docs.aws.amazon.com/lambda/latest/dg/provisioned-concurrency.html) on a ``AWS::Lambda::Version`` or a ``AWS::Lambda::Alias``.\n For a complete introduction to Lambda functions, see [What is Lambda?](https://docs.aws.amazon.com/lambda/latest/dg/lambda-welcome.html) in the *Lambda developer guide.*", + "handlers": { + "create": { + "permissions": [ + "lambda:CreateFunction", + "lambda:GetFunction", + "lambda:PutFunctionConcurrency", + "iam:PassRole", + "s3:GetObject", + "s3:GetObjectVersion", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "elasticfilesystem:DescribeMountTargets", + "kms:CreateGrant", + "kms:Decrypt", + "kms:Encrypt", + "kms:GenerateDataKey", + "lambda:GetCodeSigningConfig", + "lambda:GetFunctionCodeSigningConfig", + "lambda:GetLayerVersion", + "lambda:GetRuntimeManagementConfig", + "lambda:PutRuntimeManagementConfig", + "lambda:TagResource", + "lambda:PutFunctionRecursionConfig", + "lambda:GetFunctionRecursionConfig" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteFunction", + "lambda:GetFunction", + "ec2:DescribeNetworkInterfaces" + ] + }, + "list": { + "permissions": [ + "lambda:ListFunctions" + ] + }, + "read": { + "permissions": [ + "lambda:GetFunction", + "lambda:GetFunctionCodeSigningConfig", + "lambda:GetFunctionRecursionConfig" + ] + }, + "update": { + "permissions": [ + "lambda:DeleteFunctionConcurrency", + "lambda:GetFunction", + "lambda:PutFunctionConcurrency", + "lambda:TagResource", + "lambda:UntagResource", + "lambda:UpdateFunctionConfiguration", + "lambda:UpdateFunctionCode", + "iam:PassRole", + "s3:GetObject", + "s3:GetObjectVersion", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "elasticfilesystem:DescribeMountTargets", + "kms:CreateGrant", + "kms:Decrypt", + "kms:GenerateDataKey", + "lambda:GetRuntimeManagementConfig", + "lambda:PutRuntimeManagementConfig", + "lambda:PutFunctionCodeSigningConfig", + "lambda:DeleteFunctionCodeSigningConfig", + "lambda:GetCodeSigningConfig", + "lambda:GetFunctionCodeSigningConfig", + "lambda:PutFunctionRecursionConfig", + "lambda:GetFunctionRecursionConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/FunctionName" + ], + "properties": { + "Architectures": { + "description": "The instruction set architecture that the function supports. Enter a string array with one of the valid values (arm64 or x86_64). The default value is ``x86_64``.", + "items": { + "enum": [ + "x86_64", + "arm64" + ], + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Arn": { + "description": "", + "type": "string" + }, + "Code": { + "$ref": "#/definitions/Code", + "description": "The code for the function. You can define your function code in multiple ways:\n + For .zip deployment packages, you can specify the S3 location of the .zip file in the ``S3Bucket``, ``S3Key``, and ``S3ObjectVersion`` properties.\n + For .zip deployment packages, you can alternatively define the function code inline in the ``ZipFile`` property. This method works only for Node.js and Python functions.\n + For container images, specify the URI of your container image in the ECR registry in the ``ImageUri`` property." + }, + "CodeSigningConfigArn": { + "description": "To enable code signing for this function, specify the ARN of a code-signing configuration. A code-signing configuration includes a set of signing profiles, which define the trusted publishers for this function.", + "pattern": "arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:\\d{12}:code-signing-config:csc-[a-z0-9]{17}", + "type": "string" + }, + "DeadLetterConfig": { + "$ref": "#/definitions/DeadLetterConfig", + "description": "A dead-letter queue configuration that specifies the queue or topic where Lambda sends asynchronous events when they fail processing. For more information, see [Dead-letter queues](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-dlq)." + }, + "Description": { + "description": "A description of the function.", + "maxLength": 256, + "type": "string" + }, + "Environment": { + "$ref": "#/definitions/Environment", + "description": "Environment variables that are accessible from function code during execution." + }, + "EphemeralStorage": { + "$ref": "#/definitions/EphemeralStorage", + "description": "The size of the function's ``/tmp`` directory in MB. The default value is 512, but it can be any whole number between 512 and 10,240 MB." + }, + "FileSystemConfigs": { + "description": "Connection settings for an Amazon EFS file system. To connect a function to a file system, a mount target must be available in every Availability Zone that your function connects to. If your template contains an [AWS::EFS::MountTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html) resource, you must also specify a ``DependsOn`` attribute to ensure that the mount target is created or updated before the function.\n For more information about using the ``DependsOn`` attribute, see [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html).", + "items": { + "$ref": "#/definitions/FileSystemConfig" + }, + "maxItems": 1, + "type": "array" + }, + "FunctionName": { + "description": "The name of the Lambda function, up to 64 characters in length. If you don't specify a name, CFN generates one.\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", + "minLength": 1, + "type": "string" + }, + "Handler": { + "description": "The name of the method within your code that Lambda calls to run your function. Handler is required if the deployment package is a .zip file archive. The format includes the file name. It can also include namespaces and other qualifiers, depending on the runtime. For more information, see [Lambda programming model](https://docs.aws.amazon.com/lambda/latest/dg/foundation-progmodel.html).", + "maxLength": 128, + "pattern": "^[^\\s]+$", + "type": "string" + }, + "ImageConfig": { + "$ref": "#/definitions/ImageConfig", + "description": "Configuration values that override the container image Dockerfile settings. For more information, see [Container image settings](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-parms)." + }, + "KmsKeyArn": { + "description": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt the following resources:\n + The function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption).\n + The function's [Lambda SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) snapshots.\n + When used with ``SourceKMSKeyArn``, the unzipped version of the .zip deployment package that's used for function invocations. For more information, see [Specifying a customer managed key for Lambda](https://docs.aws.amazon.com/lambda/latest/dg/encrypt-zip-package.html#enable-zip-custom-encryption).\n + The optimized version of the container image that's used for function invocations. Note that this is not the same key that's used to protect your container image in the Amazon Elastic Container Registry (Amazon ECR). For more information, see [Function lifecycle](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-lifecycle).\n \n If you don't provide a customer managed key, Lambda uses an [owned key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) or an [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).", + "pattern": "^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$", + "type": "string" + }, + "Layers": { + "description": "A list of [function layers](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) to add to the function's execution environment. Specify each layer by its ARN, including the version.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "LoggingConfig": { + "$ref": "#/definitions/LoggingConfig", + "description": "The function's Amazon CloudWatch Logs configuration settings." + }, + "MemorySize": { + "description": "The amount of [memory available to the function](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-memory-console) at runtime. Increasing the function memory also increases its CPU allocation. The default value is 128 MB. The value can be any multiple of 1 MB. Note that new AWS accounts have reduced concurrency and memory quotas. AWS raises these quotas automatically based on your usage. You can also request a quota increase.", + "type": "integer" + }, + "PackageType": { + "description": "The type of deployment package. Set to ``Image`` for container image and set ``Zip`` for .zip file archive.", + "enum": [ + "Image", + "Zip" + ], + "type": "string" + }, + "RecursiveLoop": { + "$ref": "#/definitions/RecursiveLoop", + "description": "The status of your function's recursive loop detection configuration.\n When this value is set to ``Allow``and Lambda detects your function being invoked as part of a recursive loop, it doesn't take any action.\n When this value is set to ``Terminate`` and Lambda detects your function being invoked as part of a recursive loop, it stops your function being invoked and notifies you." + }, + "ReservedConcurrentExecutions": { + "description": "The number of simultaneous executions to reserve for the function.", + "minimum": 0, + "type": "integer" + }, + "Role": { + "description": "The Amazon Resource Name (ARN) of the function's execution role.", + "pattern": "^arn:(aws[a-zA-Z-]*)?:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "Runtime": { + "description": "The identifier of the function's [runtime](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html). Runtime is required if the deployment package is a .zip file archive. Specifying a runtime results in an error if you're deploying a function using a container image.\n The following list includes deprecated runtimes. Lambda blocks creating new functions and updating existing functions shortly after each runtime is deprecated. For more information, see [Runtime use after deprecation](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html#runtime-deprecation-levels).\n For a list of all currently supported runtimes, see [Supported runtimes](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html#runtimes-supported).", + "type": "string" + }, + "RuntimeManagementConfig": { + "$ref": "#/definitions/RuntimeManagementConfig", + "description": "Sets the runtime management configuration for a function's version. For more information, see [Runtime updates](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html)." + }, + "SnapStart": { + "$ref": "#/definitions/SnapStart", + "description": "The function's [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) setting." + }, + "SnapStartResponse": { + "$ref": "#/definitions/SnapStartResponse", + "description": "" + }, + "Tags": { + "description": "A list of [tags](https://docs.aws.amazon.com/lambda/latest/dg/tagging.html) to apply to the function.\n You must have the ``lambda:TagResource``, ``lambda:UntagResource``, and ``lambda:ListTags`` permissions for your [principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) to manage the CFN stack. If you don't have these permissions, there might be unexpected behavior with stack-level tags propagating to the resource during resource creation and update.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Timeout": { + "description": "The amount of time (in seconds) that Lambda allows a function to run before stopping it. The default is 3 seconds. The maximum allowed value is 900 seconds. For more information, see [Lambda execution environment](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-context.html).", + "minimum": 1, + "type": "integer" + }, + "TracingConfig": { + "$ref": "#/definitions/TracingConfig", + "description": "Set ``Mode`` to ``Active`` to sample and trace a subset of incoming requests with [X-Ray](https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html)." + }, + "VpcConfig": { + "$ref": "#/definitions/VpcConfig", + "description": "For network connectivity to AWS resources in a VPC, specify a list of security groups and subnets in the VPC. When you connect a function to a VPC, it can access resources and the internet only through that VPC. For more information, see [Configuring a Lambda function to access resources in a VPC](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html)." + } + }, + "readOnlyProperties": [ + "/properties/SnapStartResponse", + "/properties/SnapStartResponse/ApplyOn", + "/properties/SnapStartResponse/OptimizationStatus", + "/properties/Arn" + ], + "required": [ + "Code", + "Role" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "lambda:ListTags", + "lambda:TagResource", + "lambda:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Lambda::Function", + "writeOnlyProperties": [ + "/properties/SnapStart", + "/properties/SnapStart/ApplyOn", + "/properties/Code/ImageUri", + "/properties/Code/S3Bucket", + "/properties/Code/S3Key", + "/properties/Code/S3ObjectVersion", + "/properties/Code/ZipFile" + ] +} diff --git a/src/schema/aws-lambda-layerversion.json b/src/schema/aws-lambda-layerversion.json index bad498d8..7a5c195e 100644 --- a/src/schema/aws-lambda-layerversion.json +++ b/src/schema/aws-lambda-layerversion.json @@ -1,120 +1,123 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CompatibleRuntimes", - "/properties/LicenseInfo", - "/properties/CompatibleArchitectures", - "/properties/LayerName", - "/properties/Description", - "/properties/Content" - ], - "definitions": { - "Content": { - "additionalProperties": false, - "properties": { - "S3Bucket": { - "description": "The Amazon S3 bucket of the layer archive.", - "type": "string" - }, - "S3Key": { - "description": "The Amazon S3 key of the layer archive.", - "type": "string" - }, - "S3ObjectVersion": { - "description": "For versioned objects, the version of the layer archive object to use.", - "type": "string" - } - }, - "required": [ - "S3Bucket", - "S3Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Lambda::LayerVersion", - "handlers": { - "create": { - "permissions": [ - "lambda:PublishLayerVersion", - "s3:GetObject", - "s3:GetObjectVersion" - ] - }, - "delete": { - "permissions": [ - "lambda:GetLayerVersion", - "lambda:DeleteLayerVersion" - ] - }, - "list": { - "permissions": [ - "lambda:ListLayerVersions" - ] - }, - "read": { - "permissions": [ - "lambda:GetLayerVersion" - ] - } - }, - "primaryIdentifier": [ - "/properties/LayerVersionArn" - ], - "properties": { - "CompatibleArchitectures": { - "description": "A list of compatible instruction set architectures.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "CompatibleRuntimes": { - "description": "A list of compatible function runtimes. Used for filtering with ListLayers and ListLayerVersions.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Content": { - "$ref": "#/definitions/Content", - "description": "The function layer archive." - }, - "Description": { - "description": "The description of the version.", - "type": "string" - }, - "LayerName": { - "description": "The name or Amazon Resource Name (ARN) of the layer.", - "type": "string" - }, - "LayerVersionArn": { - "type": "string" - }, - "LicenseInfo": { - "description": "The layer's software license.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/LayerVersionArn" - ], - "required": [ - "Content" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lambda.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Lambda::LayerVersion", - "writeOnlyProperties": [ - "/properties/Content" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CompatibleRuntimes", + "/properties/LicenseInfo", + "/properties/CompatibleArchitectures", + "/properties/LayerName", + "/properties/Description", + "/properties/Content" + ], + "definitions": { + "Content": { + "additionalProperties": false, + "properties": { + "S3Bucket": { + "description": "The Amazon S3 bucket of the layer archive.", + "type": "string" + }, + "S3Key": { + "description": "The Amazon S3 key of the layer archive.", + "type": "string" + }, + "S3ObjectVersion": { + "description": "For versioned objects, the version of the layer archive object to use.", + "type": "string" + } + }, + "required": [ + "S3Bucket", + "S3Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Lambda::LayerVersion", + "handlers": { + "create": { + "permissions": [ + "lambda:PublishLayerVersion", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "delete": { + "permissions": [ + "lambda:GetLayerVersion", + "lambda:DeleteLayerVersion" + ] + }, + "list": { + "permissions": [ + "lambda:ListLayerVersions" + ] + }, + "read": { + "permissions": [ + "lambda:GetLayerVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/LayerVersionArn" + ], + "properties": { + "CompatibleArchitectures": { + "description": "A list of compatible instruction set architectures.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "CompatibleRuntimes": { + "description": "A list of compatible function runtimes. Used for filtering with ListLayers and ListLayerVersions.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Content": { + "$ref": "#/definitions/Content", + "description": "The function layer archive." + }, + "Description": { + "description": "The description of the version.", + "type": "string" + }, + "LayerName": { + "description": "The name or Amazon Resource Name (ARN) of the layer.", + "type": "string" + }, + "LayerVersionArn": { + "type": "string" + }, + "LicenseInfo": { + "description": "The layer's software license.", + "type": "string" + } + }, + "propertyTransform": { + "/properties/LayerName": "$split(LayerName, \":\")[-1] $OR LayerName" + }, + "readOnlyProperties": [ + "/properties/LayerVersionArn" + ], + "required": [ + "Content" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lambda.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Lambda::LayerVersion", + "writeOnlyProperties": [ + "/properties/Content" + ] +} diff --git a/src/schema/aws-lambda-layerversionpermission.json b/src/schema/aws-lambda-layerversionpermission.json index e4b91693..39bb3325 100644 --- a/src/schema/aws-lambda-layerversionpermission.json +++ b/src/schema/aws-lambda-layerversionpermission.json @@ -1,74 +1,74 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/OrganizationId", - "/properties/Principal", - "/properties/Action", - "/properties/LayerVersionArn" - ], - "description": "Schema for Lambda LayerVersionPermission", - "handlers": { - "create": { - "permissions": [ - "lambda:AddLayerVersionPermission" - ] - }, - "delete": { - "permissions": [ - "lambda:GetLayerVersionPolicy", - "lambda:RemoveLayerVersionPermission" - ] - }, - "list": { - "permissions": [ - "lambda:GetLayerVersionPolicy" - ] - }, - "read": { - "permissions": [ - "lambda:GetLayerVersionPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Action": { - "description": "The API action that grants access to the layer.", - "type": "string" - }, - "Id": { - "description": "ID generated by service", - "type": "string" - }, - "LayerVersionArn": { - "description": "The name or Amazon Resource Name (ARN) of the layer.", - "type": "string" - }, - "OrganizationId": { - "description": "With the principal set to *, grant permission to all accounts in the specified organization.", - "type": "string" - }, - "Principal": { - "description": "An account ID, or * to grant layer usage permission to all accounts in an organization, or all AWS accounts (if organizationId is not specified).", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "LayerVersionArn", - "Action", - "Principal" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lambda.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Lambda::LayerVersionPermission" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/OrganizationId", + "/properties/Principal", + "/properties/Action", + "/properties/LayerVersionArn" + ], + "description": "Schema for Lambda LayerVersionPermission", + "handlers": { + "create": { + "permissions": [ + "lambda:AddLayerVersionPermission" + ] + }, + "delete": { + "permissions": [ + "lambda:GetLayerVersionPolicy", + "lambda:RemoveLayerVersionPermission" + ] + }, + "list": { + "permissions": [ + "lambda:GetLayerVersionPolicy" + ] + }, + "read": { + "permissions": [ + "lambda:GetLayerVersionPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Action": { + "description": "The API action that grants access to the layer.", + "type": "string" + }, + "Id": { + "description": "ID generated by service", + "type": "string" + }, + "LayerVersionArn": { + "description": "The name or Amazon Resource Name (ARN) of the layer.", + "type": "string" + }, + "OrganizationId": { + "description": "With the principal set to *, grant permission to all accounts in the specified organization.", + "type": "string" + }, + "Principal": { + "description": "An account ID, or * to grant layer usage permission to all accounts in an organization, or all AWS accounts (if organizationId is not specified).", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "LayerVersionArn", + "Action", + "Principal" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lambda.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Lambda::LayerVersionPermission" +} diff --git a/src/schema/aws-lambda-permission.json b/src/schema/aws-lambda-permission.json index aaaa18db..af62d9d4 100644 --- a/src/schema/aws-lambda-permission.json +++ b/src/schema/aws-lambda-permission.json @@ -1,138 +1,138 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FunctionName", - "/properties/FunctionUrlAuthType", - "/properties/SourceAccount", - "/properties/SourceArn", - "/properties/Principal", - "/properties/PrincipalOrgID", - "/properties/Action", - "/properties/EventSourceToken" - ], - "description": "The ``AWS::Lambda::Permission`` resource grants an AWS service or another account permission to use a function. You can apply the policy at the function level, or specify a qualifier to restrict access to a single version or alias. If you use a qualifier, the invoker must use the full Amazon Resource Name (ARN) of that version or alias to invoke the function.\n To grant permission to another account, specify the account ID as the ``Principal``. To grant permission to an organization defined in AOlong, specify the organization ID as the ``PrincipalOrgID``. For AWS services, the principal is a domain-style identifier defined by the service, like ``s3.amazonaws.com`` or ``sns.amazonaws.com``. For AWS services, you can also specify the ARN of the associated resource as the ``SourceArn``. If you grant permission to a service principal without specifying the source, other accounts could potentially configure resources in their account to invoke your Lambda function.\n If your function has a function URL, you can specify the ``FunctionUrlAuthType`` parameter. This adds a condition to your permission that only applies when your function URL's ``AuthType`` matches the specified ``FunctionUrlAuthType``. For more information about the ``AuthType`` parameter, see [Security and auth model for function URLs](https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html).\n This resource adds a statement to a resource-based permission policy for the function. For more information about function policies, see [Lambda Function Policies](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html).", - "handlers": { - "create": { - "permissions": [ - "lambda:AddPermission" - ] - }, - "delete": { - "permissions": [ - "lambda:RemovePermission" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "FunctionName": { - "description": "The name of the Lambda function, version, or alias.", - "maxLength": 140, - "minLength": 1, - "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", - "type": "string" - } - }, - "required": [ - "FunctionName" - ] - }, - "permissions": [ - "lambda:GetPolicy" - ] - }, - "read": { - "permissions": [ - "lambda:GetPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/FunctionName", - "/properties/Id" - ], - "properties": { - "Action": { - "description": "The action that the principal can use on the function. For example, ``lambda:InvokeFunction`` or ``lambda:GetFunction``.", - "maxLength": 256, - "minLength": 1, - "pattern": "^(lambda:[*]|lambda:[a-zA-Z]+|[*])$", - "type": "string" - }, - "EventSourceToken": { - "description": "For Alexa Smart Home functions, a token that the invoker must supply.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9._\\-]+$", - "type": "string" - }, - "FunctionName": { - "description": "The name or ARN of the Lambda function, version, or alias.\n **Name formats**\n + *Function name* \u2013 ``my-function`` (name-only), ``my-function:v1`` (with alias).\n + *Function ARN* \u2013 ``arn:aws:lambda:us-west-2:123456789012:function:my-function``.\n + *Partial ARN* \u2013 ``123456789012:function:my-function``.\n \n You can append a version number or alias to any of the formats. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.", - "maxLength": 140, - "minLength": 1, - "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", - "type": "string" - }, - "FunctionUrlAuthType": { - "description": "The type of authentication that your function URL uses. Set to ``AWS_IAM`` if you want to restrict access to authenticated users only. Set to ``NONE`` if you want to bypass IAM authentication to create a public endpoint. For more information, see [Security and auth model for Lambda function URLs](https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html).", - "enum": [ - "AWS_IAM", - "NONE" - ], - "type": "string" - }, - "Id": { - "description": "", - "maxLength": 256, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "Principal": { - "description": "The AWS-service or AWS-account that invokes the function. If you specify a service, use ``SourceArn`` or ``SourceAccount`` to limit who can invoke the function through that service.", - "maxLength": 256, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "PrincipalOrgID": { - "description": "The identifier for your organization in AOlong. Use this to grant permissions to all the AWS-accounts under this organization.", - "maxLength": 34, - "minLength": 12, - "pattern": "^o-[a-z0-9]{10,32}$", - "type": "string" - }, - "SourceAccount": { - "description": "For AWS-service, the ID of the AWS-account that owns the resource. Use this together with ``SourceArn`` to ensure that the specified account owns the resource. It is possible for an Amazon S3 bucket to be deleted by its owner and recreated by another account.", - "maxLength": 12, - "minLength": 12, - "pattern": "^\\d{12}$", - "type": "string" - }, - "SourceArn": { - "description": "For AWS-services, the ARN of the AWS resource that invokes the function. For example, an Amazon S3 bucket or Amazon SNS topic.\n Note that Lambda configures the comparison using the ``StringLike`` operator.", - "maxLength": 1024, - "minLength": 12, - "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)$", - "type": "string" - } - }, - "propertyTransform": { - "/properties/Principal": "$join([\"^arn:aws[a-zA-Z-]*:iam::\",Principal,\":[a-zA-Z-]*\"]) $OR Principal" - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "FunctionName", - "Action", - "Principal" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Lambda::Permission" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FunctionName", + "/properties/FunctionUrlAuthType", + "/properties/SourceAccount", + "/properties/SourceArn", + "/properties/Principal", + "/properties/PrincipalOrgID", + "/properties/Action", + "/properties/EventSourceToken" + ], + "description": "The ``AWS::Lambda::Permission`` resource grants an AWS service or another account permission to use a function. You can apply the policy at the function level, or specify a qualifier to restrict access to a single version or alias. If you use a qualifier, the invoker must use the full Amazon Resource Name (ARN) of that version or alias to invoke the function.\n To grant permission to another account, specify the account ID as the ``Principal``. To grant permission to an organization defined in AOlong, specify the organization ID as the ``PrincipalOrgID``. For AWS services, the principal is a domain-style identifier defined by the service, like ``s3.amazonaws.com`` or ``sns.amazonaws.com``. For AWS services, you can also specify the ARN of the associated resource as the ``SourceArn``. If you grant permission to a service principal without specifying the source, other accounts could potentially configure resources in their account to invoke your Lambda function.\n If your function has a function URL, you can specify the ``FunctionUrlAuthType`` parameter. This adds a condition to your permission that only applies when your function URL's ``AuthType`` matches the specified ``FunctionUrlAuthType``. For more information about the ``AuthType`` parameter, see [Security and auth model for function URLs](https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html).\n This resource adds a statement to a resource-based permission policy for the function. For more information about function policies, see [Lambda Function Policies](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html).", + "handlers": { + "create": { + "permissions": [ + "lambda:AddPermission" + ] + }, + "delete": { + "permissions": [ + "lambda:RemovePermission" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FunctionName": { + "description": "The name of the Lambda function, version, or alias.", + "maxLength": 140, + "minLength": 1, + "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", + "type": "string" + } + }, + "required": [ + "FunctionName" + ] + }, + "permissions": [ + "lambda:GetPolicy" + ] + }, + "read": { + "permissions": [ + "lambda:GetPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/FunctionName", + "/properties/Id" + ], + "properties": { + "Action": { + "description": "The action that the principal can use on the function. For example, ``lambda:InvokeFunction`` or ``lambda:GetFunction``.", + "maxLength": 256, + "minLength": 1, + "pattern": "^(lambda:[*]|lambda:[a-zA-Z]+|[*])$", + "type": "string" + }, + "EventSourceToken": { + "description": "For Alexa Smart Home functions, a token that the invoker must supply.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9._\\-]+$", + "type": "string" + }, + "FunctionName": { + "description": "The name or ARN of the Lambda function, version, or alias.\n **Name formats**\n + *Function name* \u2013 ``my-function`` (name-only), ``my-function:v1`` (with alias).\n + *Function ARN* \u2013 ``arn:aws:lambda:us-west-2:123456789012:function:my-function``.\n + *Partial ARN* \u2013 ``123456789012:function:my-function``.\n \n You can append a version number or alias to any of the formats. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.", + "maxLength": 140, + "minLength": 1, + "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", + "type": "string" + }, + "FunctionUrlAuthType": { + "description": "The type of authentication that your function URL uses. Set to ``AWS_IAM`` if you want to restrict access to authenticated users only. Set to ``NONE`` if you want to bypass IAM authentication to create a public endpoint. For more information, see [Security and auth model for Lambda function URLs](https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html).", + "enum": [ + "AWS_IAM", + "NONE" + ], + "type": "string" + }, + "Id": { + "description": "", + "maxLength": 256, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "Principal": { + "description": "The AWS-service, AWS-account, IAM user, or IAM role that invokes the function. If you specify a service, use ``SourceArn`` or ``SourceAccount`` to limit who can invoke the function through that service.", + "maxLength": 256, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "PrincipalOrgID": { + "description": "The identifier for your organization in AOlong. Use this to grant permissions to all the AWS-accounts under this organization.", + "maxLength": 34, + "minLength": 12, + "pattern": "^o-[a-z0-9]{10,32}$", + "type": "string" + }, + "SourceAccount": { + "description": "For AWS-service, the ID of the AWS-account that owns the resource. Use this together with ``SourceArn`` to ensure that the specified account owns the resource. It is possible for an Amazon S3 bucket to be deleted by its owner and recreated by another account.", + "maxLength": 12, + "minLength": 12, + "pattern": "^\\d{12}$", + "type": "string" + }, + "SourceArn": { + "description": "For AWS-services, the ARN of the AWS resource that invokes the function. For example, an Amazon S3 bucket or Amazon SNS topic.\n Note that Lambda configures the comparison using the ``StringLike`` operator.", + "maxLength": 1024, + "minLength": 12, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)$", + "type": "string" + } + }, + "propertyTransform": { + "/properties/Principal": "$join([\"^arn:aws[a-zA-Z-]*:iam::\",Principal,\":[a-zA-Z-]*\"]) $OR Principal" + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName", + "Action", + "Principal" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Lambda::Permission" +} diff --git a/src/schema/aws-lambda-url.json b/src/schema/aws-lambda-url.json index ecb78088..c04c1e4c 100644 --- a/src/schema/aws-lambda-url.json +++ b/src/schema/aws-lambda-url.json @@ -1,191 +1,191 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TargetFunctionArn", - "/properties/Qualifier" - ], - "definitions": { - "AllowHeaders": { - "insertionOrder": true, - "items": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "AllowMethods": { - "insertionOrder": true, - "items": { - "enum": [ - "GET", - "PUT", - "HEAD", - "POST", - "PATCH", - "DELETE", - "*" - ], - "type": "string" - }, - "maxItems": 6, - "minItems": 1, - "type": "array" - }, - "AllowOrigins": { - "insertionOrder": true, - "items": { - "maxLength": 253, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "Cors": { - "additionalProperties": false, - "properties": { - "AllowCredentials": { - "description": "Specifies whether credentials are included in the CORS request.", - "type": "boolean" - }, - "AllowHeaders": { - "$ref": "#/definitions/AllowHeaders", - "description": "Represents a collection of allowed headers." - }, - "AllowMethods": { - "$ref": "#/definitions/AllowMethods", - "description": "Represents a collection of allowed HTTP methods." - }, - "AllowOrigins": { - "$ref": "#/definitions/AllowOrigins", - "description": "Represents a collection of allowed origins." - }, - "ExposeHeaders": { - "$ref": "#/definitions/ExposeHeaders", - "description": "Represents a collection of exposed headers." - }, - "MaxAge": { - "maximum": 86400, - "minimum": 0, - "type": "integer" - } - }, - "type": "object" - }, - "ExposeHeaders": { - "insertionOrder": true, - "items": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - } - }, - "description": "Resource Type definition for AWS::Lambda::Url", - "handlers": { - "create": { - "permissions": [ - "lambda:CreateFunctionUrlConfig" - ] - }, - "delete": { - "permissions": [ - "lambda:DeleteFunctionUrlConfig" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "TargetFunctionArn": { - "description": "The Amazon Resource Name (ARN) of the function associated with the Function URL.", - "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:((?!\\d+)[0-9a-zA-Z-_]+))?$", - "type": "string" - } - }, - "required": [ - "TargetFunctionArn" - ] - }, - "permissions": [ - "lambda:ListFunctionUrlConfigs" - ] - }, - "read": { - "permissions": [ - "lambda:GetFunctionUrlConfig" - ] - }, - "update": { - "permissions": [ - "lambda:UpdateFunctionUrlConfig" - ] - } - }, - "primaryIdentifier": [ - "/properties/FunctionArn" - ], - "properties": { - "AuthType": { - "description": "Can be either AWS_IAM if the requests are authorized via IAM, or NONE if no authorization is configured on the Function URL.", - "enum": [ - "AWS_IAM", - "NONE" - ], - "type": "string" - }, - "Cors": { - "$ref": "#/definitions/Cors" - }, - "FunctionArn": { - "description": "The full Amazon Resource Name (ARN) of the function associated with the Function URL.", - "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:((?!\\d+)[0-9a-zA-Z-_]+))?$", - "type": "string" - }, - "FunctionUrl": { - "description": "The generated url for this resource.", - "type": "string" - }, - "InvokeMode": { - "description": "The invocation mode for the function's URL. Set to BUFFERED if you want to buffer responses before returning them to the client. Set to RESPONSE_STREAM if you want to stream responses, allowing faster time to first byte and larger response payload sizes. If not set, defaults to BUFFERED.", - "enum": [ - "BUFFERED", - "RESPONSE_STREAM" - ], - "type": "string" - }, - "Qualifier": { - "description": "The alias qualifier for the target function. If TargetFunctionArn is unqualified then Qualifier must be passed.", - "maxLength": 128, - "minLength": 1, - "pattern": "((?!^[0-9]+$)([a-zA-Z0-9-_]+))", - "type": "string" - }, - "TargetFunctionArn": { - "description": "The Amazon Resource Name (ARN) of the function associated with the Function URL.", - "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:((?!\\d+)[0-9a-zA-Z-_]+))?$", - "type": "string" - } - }, - "propertyTransform": { - "/properties/TargetFunctionArn": "$lookup($match(TargetFunctionArn,/(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-[0-9]{1}:)?([0-9]{12}:)?(function:)?([a-zA-Z0-9-_]+)(:((?![0-9]+)[0-9a-zA-Z-_]+))?/)['groups'], 'groups')[6]" - }, - "readOnlyProperties": [ - "/properties/FunctionUrl", - "/properties/FunctionArn" - ], - "required": [ - "TargetFunctionArn", - "AuthType" - ], - "tagging": { - "taggable": false - }, - "typeName": "AWS::Lambda::Url" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TargetFunctionArn", + "/properties/Qualifier" + ], + "definitions": { + "AllowHeaders": { + "insertionOrder": true, + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "AllowMethods": { + "insertionOrder": true, + "items": { + "enum": [ + "GET", + "PUT", + "HEAD", + "POST", + "PATCH", + "DELETE", + "*" + ], + "type": "string" + }, + "maxItems": 6, + "minItems": 1, + "type": "array" + }, + "AllowOrigins": { + "insertionOrder": true, + "items": { + "maxLength": 253, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "Cors": { + "additionalProperties": false, + "properties": { + "AllowCredentials": { + "description": "Specifies whether credentials are included in the CORS request.", + "type": "boolean" + }, + "AllowHeaders": { + "$ref": "#/definitions/AllowHeaders", + "description": "Represents a collection of allowed headers." + }, + "AllowMethods": { + "$ref": "#/definitions/AllowMethods", + "description": "Represents a collection of allowed HTTP methods." + }, + "AllowOrigins": { + "$ref": "#/definitions/AllowOrigins", + "description": "Represents a collection of allowed origins." + }, + "ExposeHeaders": { + "$ref": "#/definitions/ExposeHeaders", + "description": "Represents a collection of exposed headers." + }, + "MaxAge": { + "maximum": 86400, + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "ExposeHeaders": { + "insertionOrder": true, + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + } + }, + "description": "Resource Type definition for AWS::Lambda::Url", + "handlers": { + "create": { + "permissions": [ + "lambda:CreateFunctionUrlConfig" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteFunctionUrlConfig" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TargetFunctionArn": { + "description": "The Amazon Resource Name (ARN) of the function associated with the Function URL.", + "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:((?!\\d+)[0-9a-zA-Z-_]+))?$", + "type": "string" + } + }, + "required": [ + "TargetFunctionArn" + ] + }, + "permissions": [ + "lambda:ListFunctionUrlConfigs" + ] + }, + "read": { + "permissions": [ + "lambda:GetFunctionUrlConfig" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateFunctionUrlConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/FunctionArn" + ], + "properties": { + "AuthType": { + "description": "Can be either AWS_IAM if the requests are authorized via IAM, or NONE if no authorization is configured on the Function URL.", + "enum": [ + "AWS_IAM", + "NONE" + ], + "type": "string" + }, + "Cors": { + "$ref": "#/definitions/Cors" + }, + "FunctionArn": { + "description": "The full Amazon Resource Name (ARN) of the function associated with the Function URL.", + "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:((?!\\d+)[0-9a-zA-Z-_]+))?$", + "type": "string" + }, + "FunctionUrl": { + "description": "The generated url for this resource.", + "type": "string" + }, + "InvokeMode": { + "description": "The invocation mode for the function's URL. Set to BUFFERED if you want to buffer responses before returning them to the client. Set to RESPONSE_STREAM if you want to stream responses, allowing faster time to first byte and larger response payload sizes. If not set, defaults to BUFFERED.", + "enum": [ + "BUFFERED", + "RESPONSE_STREAM" + ], + "type": "string" + }, + "Qualifier": { + "description": "The alias qualifier for the target function. If TargetFunctionArn is unqualified then Qualifier must be passed.", + "maxLength": 128, + "minLength": 1, + "pattern": "((?!^[0-9]+$)([a-zA-Z0-9-_]+))", + "type": "string" + }, + "TargetFunctionArn": { + "description": "The Amazon Resource Name (ARN) of the function associated with the Function URL.", + "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:((?!\\d+)[0-9a-zA-Z-_]+))?$", + "type": "string" + } + }, + "propertyTransform": { + "/properties/TargetFunctionArn": "$lookup($match(TargetFunctionArn,/(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-[0-9]{1}:)?([0-9]{12}:)?(function:)?([a-zA-Z0-9-_]+)(:((?![0-9]+)[0-9a-zA-Z-_]+))?/)['groups'], 'groups')[6]" + }, + "readOnlyProperties": [ + "/properties/FunctionUrl", + "/properties/FunctionArn" + ], + "required": [ + "TargetFunctionArn", + "AuthType" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::Lambda::Url" +} diff --git a/src/schema/aws-lambda-version.json b/src/schema/aws-lambda-version.json index 771b61a9..ebb71fc8 100644 --- a/src/schema/aws-lambda-version.json +++ b/src/schema/aws-lambda-version.json @@ -1,149 +1,149 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FunctionName", - "/properties/Description", - "/properties/CodeSha256", - "/properties/ProvisionedConcurrencyConfig", - "/properties/RuntimePolicy" - ], - "definitions": { - "ProvisionedConcurrencyConfiguration": { - "additionalProperties": false, - "description": "A provisioned concurrency configuration for a function's version.", - "properties": { - "ProvisionedConcurrentExecutions": { - "description": "The amount of provisioned concurrency to allocate for the version.", - "type": "integer" - } - }, - "required": [ - "ProvisionedConcurrentExecutions" - ], - "type": "object" - }, - "RuntimePolicy": { - "additionalProperties": false, - "description": "Runtime Management Config of a function.", - "properties": { - "RuntimeVersionArn": { - "description": "The ARN of the runtime the function is configured to use. If the runtime update mode is manual, the ARN is returned, otherwise null is returned.", - "maxLength": 2048, - "minLength": 26, - "pattern": "^arn:(aws[a-zA-Z-]*):lambda:[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}::runtime:.+$", - "type": "string" - }, - "UpdateRuntimeOn": { - "description": "The runtime update mode.", - "type": "string" - } - }, - "required": [ - "UpdateRuntimeOn" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Lambda::Version", - "handlers": { - "create": { - "permissions": [ - "lambda:PublishVersion", - "lambda:GetFunctionConfiguration", - "lambda:PutProvisionedConcurrencyConfig", - "lambda:GetProvisionedConcurrencyConfig", - "lambda:PutRuntimeManagementConfig", - "lambda:GetRuntimeManagementConfig" - ], - "timeoutInMinutes": 180 - }, - "delete": { - "permissions": [ - "lambda:GetFunctionConfiguration", - "lambda:DeleteFunction" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "FunctionName": { - "description": "The name of the Lambda function, version, or alias.", - "maxLength": 140, - "minLength": 1, - "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", - "type": "string" - } - }, - "required": [ - "FunctionName" - ] - }, - "permissions": [ - "lambda:ListVersionsByFunction" - ] - }, - "read": { - "permissions": [ - "lambda:GetFunctionConfiguration", - "lambda:GetProvisionedConcurrencyConfig", - "lambda:GetRuntimeManagementConfig" - ] - } - }, - "primaryIdentifier": [ - "/properties/FunctionArn" - ], - "properties": { - "CodeSha256": { - "description": "Only publish a version if the hash value matches the value that's specified. Use this option to avoid publishing a version if the function code has changed since you last updated it. Updates are not supported for this property.", - "type": "string" - }, - "Description": { - "description": "A description for the version to override the description in the function configuration. Updates are not supported for this property.", - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "FunctionArn": { - "description": "The ARN of the version.", - "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", - "type": "string" - }, - "FunctionName": { - "description": "The name of the Lambda function.", - "maxLength": 140, - "minLength": 1, - "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", - "type": "string" - }, - "ProvisionedConcurrencyConfig": { - "$ref": "#/definitions/ProvisionedConcurrencyConfiguration", - "description": "Specifies a provisioned concurrency configuration for a function's version. Updates are not supported for this property." - }, - "RuntimePolicy": { - "$ref": "#/definitions/RuntimePolicy", - "description": "Specifies the runtime management configuration of a function. Displays runtimeVersionArn only for Manual." - }, - "Version": { - "description": "The version number.", - "type": "string" - } - }, - "propertyTransform": { - "/properties/FunctionName": "$split(FunctionName, \":\")[-1] $OR FunctionName" - }, - "readOnlyProperties": [ - "/properties/Version", - "/properties/FunctionArn" - ], - "required": [ - "FunctionName" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Lambda::Version" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FunctionName", + "/properties/Description", + "/properties/CodeSha256", + "/properties/ProvisionedConcurrencyConfig", + "/properties/RuntimePolicy" + ], + "definitions": { + "ProvisionedConcurrencyConfiguration": { + "additionalProperties": false, + "description": "A provisioned concurrency configuration for a function's version.", + "properties": { + "ProvisionedConcurrentExecutions": { + "description": "The amount of provisioned concurrency to allocate for the version.", + "type": "integer" + } + }, + "required": [ + "ProvisionedConcurrentExecutions" + ], + "type": "object" + }, + "RuntimePolicy": { + "additionalProperties": false, + "description": "Runtime Management Config of a function.", + "properties": { + "RuntimeVersionArn": { + "description": "The ARN of the runtime the function is configured to use. If the runtime update mode is manual, the ARN is returned, otherwise null is returned.", + "maxLength": 2048, + "minLength": 26, + "pattern": "^arn:(aws[a-zA-Z-]*):lambda:[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}::runtime:.+$", + "type": "string" + }, + "UpdateRuntimeOn": { + "description": "The runtime update mode.", + "type": "string" + } + }, + "required": [ + "UpdateRuntimeOn" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Lambda::Version", + "handlers": { + "create": { + "permissions": [ + "lambda:PublishVersion", + "lambda:GetFunctionConfiguration", + "lambda:PutProvisionedConcurrencyConfig", + "lambda:GetProvisionedConcurrencyConfig", + "lambda:PutRuntimeManagementConfig", + "lambda:GetRuntimeManagementConfig" + ], + "timeoutInMinutes": 180 + }, + "delete": { + "permissions": [ + "lambda:GetFunctionConfiguration", + "lambda:DeleteFunction" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FunctionName": { + "description": "The name of the Lambda function, version, or alias.", + "maxLength": 140, + "minLength": 1, + "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", + "type": "string" + } + }, + "required": [ + "FunctionName" + ] + }, + "permissions": [ + "lambda:ListVersionsByFunction" + ] + }, + "read": { + "permissions": [ + "lambda:GetFunctionConfiguration", + "lambda:GetProvisionedConcurrencyConfig", + "lambda:GetRuntimeManagementConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/FunctionArn" + ], + "properties": { + "CodeSha256": { + "description": "Only publish a version if the hash value matches the value that's specified. Use this option to avoid publishing a version if the function code has changed since you last updated it. Updates are not supported for this property.", + "type": "string" + }, + "Description": { + "description": "A description for the version to override the description in the function configuration. Updates are not supported for this property.", + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "FunctionArn": { + "description": "The ARN of the version.", + "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", + "type": "string" + }, + "FunctionName": { + "description": "The name of the Lambda function.", + "maxLength": 140, + "minLength": 1, + "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", + "type": "string" + }, + "ProvisionedConcurrencyConfig": { + "$ref": "#/definitions/ProvisionedConcurrencyConfiguration", + "description": "Specifies a provisioned concurrency configuration for a function's version. Updates are not supported for this property." + }, + "RuntimePolicy": { + "$ref": "#/definitions/RuntimePolicy", + "description": "Specifies the runtime management configuration of a function. Displays runtimeVersionArn only for Manual." + }, + "Version": { + "description": "The version number.", + "type": "string" + } + }, + "propertyTransform": { + "/properties/FunctionName": "$split(FunctionName, \":\")[-1] $OR FunctionName" + }, + "readOnlyProperties": [ + "/properties/Version", + "/properties/FunctionArn" + ], + "required": [ + "FunctionName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Lambda::Version" +} diff --git a/src/schema/aws-launchwizard-deployment.json b/src/schema/aws-launchwizard-deployment.json index 16192633..7c0cbea0 100644 --- a/src/schema/aws-launchwizard-deployment.json +++ b/src/schema/aws-launchwizard-deployment.json @@ -1,249 +1,253 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DeploymentPatternName", - "/properties/Name", - "/properties/WorkloadName" - ], - "definitions": { - "DeploymentSpecifications": { - "additionalProperties": false, - "maxProperties": 100, - "minProperties": 1, - "patternProperties": { - "^[a-zA-Z0-9-:]{3,256}$": { - "maxLength": 1500, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "DeploymentStatus": { - "enum": [ - "COMPLETED", - "CREATING", - "DELETE_IN_PROGRESS", - "DELETE_INITIATING", - "DELETE_FAILED", - "DELETED", - "FAILED", - "IN_PROGRESS", - "VALIDATING" - ], - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "Definition of AWS::LaunchWizard::Deployment Resource Type", - "handlers": { - "create": { - "permissions": [ - "launchwizard:CreateDeployment", - "launchwizard:GetDeployment", - "launchwizard:ListDeploymentEvents", - "launchwizard:ListTagsForResource", - "launchwizard:TagResource", - "ssm:GetParameter", - "ssm:PutParameter", - "ssm:DescribeParameters", - "ssm:AddTagsToResource", - "ssm:DeleteParameter", - "secretsmanager:DescribeSecret", - "secretsmanager:PutSecretValue", - "secretsmanager:CreateSecret", - "secretsmanager:TagResource", - "secretsmanager:UpdateSecret", - "resource-groups:CreateGroup", - "resource-groups:DeleteGroup", - "cloudformation:DeleteStack", - "cloudformation:DescribeStackResources", - "cloudformation:DescribeStackResource", - "cloudformation:DescribeStacks", - "cloudformation:DescribeStackEvents", - "cloudformation:CreateStack", - "cloudformation:TagResource", - "s3:PutObject", - "s3:GetObject", - "s3:CreateBucket", - "sns:ListSubscriptionsByTopic", - "sns:Publish", - "sns:ListSubscriptions", - "sns:ListTopics", - "sns:CreateTopic", - "sns:Subscribe", - "sns:Unsubscribe", - "sqs:TagQueue", - "sqs:GetQueueUrl", - "sqs:AddPermission", - "sqs:ListQueues", - "sqs:GetQueueAttributes", - "sqs:ListQueueTags", - "sqs:CreateQueue", - "sqs:SetQueueAttributes" - ], - "timeoutInMinutes": 370 - }, - "delete": { - "permissions": [ - "launchwizard:GetDeployment", - "launchwizard:DeleteDeployment", - "launchwizard:UntagResource", - "ssm:DeleteParameter", - "secretsmanager:DeleteSecret", - "resource-groups:DeleteGroup", - "cloudformation:DeleteStack", - "cloudformation:DescribeStacks", - "ssm:GetParameter", - "sns:ListSubscriptionsByTopic", - "sns:Publish", - "sns:ListSubscriptions", - "sns:ListTopics", - "sns:CreateTopic", - "sns:DeleteTopic", - "sns:Subscribe", - "sns:Unsubscribe", - "sqs:GetQueueUrl", - "sqs:ListQueues", - "sqs:DeleteQueue", - "sqs:GetQueueAttributes", - "sqs:ListQueueTags" - ] - }, - "list": { - "permissions": [ - "launchwizard:ListDeployments", - "launchwizard:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "launchwizard:GetDeployment", - "launchwizard:ListDeploymentEvents", - "launchwizard:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "launchwizard:GetDeployment", - "launchwizard:ListTagsForResource", - "launchwizard:TagResource", - "launchwizard:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "ARN of the LaunchWizard deployment", - "pattern": "^arn:aws(-cn|-us-gov)?:launchwizard:[a-z0-9-]+:[0-9]{12}:deployment/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$", - "type": "string" - }, - "CreatedAt": { - "description": "Timestamp of LaunchWizard deployment creation", - "format": "date-time", - "type": "string" - }, - "DeletedAt": { - "description": "Timestamp of LaunchWizard deployment deletion", - "format": "date-time", - "type": "string" - }, - "DeploymentId": { - "description": "Deployment ID of the LaunchWizard deployment", - "maxLength": 128, - "minLength": 2, - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - }, - "DeploymentPatternName": { - "description": "Workload deployment pattern name", - "maxLength": 256, - "minLength": 1, - "pattern": "^[A-Za-z0-9][a-zA-Z0-9-]*$", - "type": "string" - }, - "Name": { - "description": "Name of LaunchWizard deployment", - "maxLength": 50, - "minLength": 1, - "pattern": "^[A-Za-z0-9_\\s\\.-]+$", - "type": "string" - }, - "ResourceGroup": { - "description": "Resource Group Name created for LaunchWizard deployment", - "type": "string" - }, - "Specifications": { - "$ref": "#/definitions/DeploymentSpecifications", - "description": "LaunchWizard deployment specifications" - }, - "Status": { - "$ref": "#/definitions/DeploymentStatus", - "description": "Status of LaunchWizard deployment" - }, - "Tags": { - "description": "Tags for LaunchWizard deployment", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tags" - }, - "type": "array" - }, - "WorkloadName": { - "description": "Workload Name for LaunchWizard deployment", - "maxLength": 100, - "minLength": 1, - "pattern": "^[A-Za-z][a-zA-Z0-9-_]*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/DeletedAt", - "/properties/DeploymentId", - "/properties/ResourceGroup", - "/properties/Status" - ], - "required": [ - "DeploymentPatternName", - "Name", - "Specifications", - "WorkloadName" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::LaunchWizard::Deployment", - "writeOnlyProperties": [ - "/properties/Specifications" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DeploymentPatternName", + "/properties/Name", + "/properties/WorkloadName" + ], + "definitions": { + "DeploymentSpecifications": { + "additionalProperties": false, + "maxProperties": 100, + "minProperties": 1, + "patternProperties": { + "^[a-zA-Z0-9-:]{3,256}$": { + "maxLength": 1500, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "DeploymentStatus": { + "enum": [ + "COMPLETED", + "CREATING", + "DELETE_IN_PROGRESS", + "DELETE_INITIATING", + "DELETE_FAILED", + "DELETED", + "FAILED", + "IN_PROGRESS", + "VALIDATING" + ], + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Definition of AWS::LaunchWizard::Deployment Resource Type", + "handlers": { + "create": { + "permissions": [ + "launchwizard:CreateDeployment", + "launchwizard:GetDeployment", + "launchwizard:ListDeploymentEvents", + "launchwizard:ListTagsForResource", + "launchwizard:TagResource", + "ssm:GetParameter", + "ssm:PutParameter", + "ssm:DescribeParameters", + "ssm:AddTagsToResource", + "ssm:DeleteParameter", + "secretsmanager:DescribeSecret", + "secretsmanager:PutSecretValue", + "secretsmanager:CreateSecret", + "secretsmanager:TagResource", + "secretsmanager:UpdateSecret", + "resource-groups:CreateGroup", + "resource-groups:DeleteGroup", + "cloudformation:DeleteStack", + "cloudformation:DescribeStackResources", + "cloudformation:DescribeStackResource", + "cloudformation:DescribeStacks", + "cloudformation:DescribeStackEvents", + "cloudformation:CreateStack", + "cloudformation:TagResource", + "s3:PutObject", + "s3:GetObject", + "s3:CreateBucket", + "sns:ListSubscriptionsByTopic", + "sns:Publish", + "sns:ListSubscriptions", + "sns:ListTopics", + "sns:CreateTopic", + "sns:Subscribe", + "sns:Unsubscribe", + "sqs:TagQueue", + "sqs:GetQueueUrl", + "sqs:AddPermission", + "sqs:ListQueues", + "sqs:GetQueueAttributes", + "sqs:ListQueueTags", + "sqs:CreateQueue", + "sqs:SetQueueAttributes" + ], + "timeoutInMinutes": 370 + }, + "delete": { + "permissions": [ + "launchwizard:GetDeployment", + "launchwizard:DeleteDeployment", + "launchwizard:UntagResource", + "ssm:DeleteParameter", + "secretsmanager:DeleteSecret", + "resource-groups:DeleteGroup", + "cloudformation:DeleteStack", + "cloudformation:DescribeStacks", + "ssm:GetParameter", + "sns:ListSubscriptionsByTopic", + "sns:Publish", + "sns:ListSubscriptions", + "sns:ListTopics", + "sns:CreateTopic", + "sns:DeleteTopic", + "sns:Subscribe", + "sns:Unsubscribe", + "sqs:GetQueueUrl", + "sqs:ListQueues", + "sqs:DeleteQueue", + "sqs:GetQueueAttributes", + "sqs:ListQueueTags" + ] + }, + "list": { + "permissions": [ + "launchwizard:ListDeployments", + "launchwizard:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "launchwizard:GetDeployment", + "launchwizard:ListDeploymentEvents", + "launchwizard:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "launchwizard:GetDeployment", + "launchwizard:ListTagsForResource", + "launchwizard:TagResource", + "launchwizard:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "ARN of the LaunchWizard deployment", + "pattern": "^arn:aws(-cn|-us-gov)?:launchwizard:[a-z0-9-]+:[0-9]{12}:deployment/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$", + "type": "string" + }, + "CreatedAt": { + "description": "Timestamp of LaunchWizard deployment creation", + "format": "date-time", + "type": "string" + }, + "DeletedAt": { + "description": "Timestamp of LaunchWizard deployment deletion", + "format": "date-time", + "type": "string" + }, + "DeploymentId": { + "description": "Deployment ID of the LaunchWizard deployment", + "maxLength": 128, + "minLength": 2, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + }, + "DeploymentPatternName": { + "description": "Workload deployment pattern name", + "maxLength": 256, + "minLength": 1, + "pattern": "^[A-Za-z0-9][a-zA-Z0-9-]*$", + "type": "string" + }, + "Name": { + "description": "Name of LaunchWizard deployment", + "maxLength": 50, + "minLength": 1, + "pattern": "^[A-Za-z0-9_\\s\\.-]+$", + "type": "string" + }, + "ResourceGroup": { + "description": "Resource Group Name created for LaunchWizard deployment", + "type": "string" + }, + "Specifications": { + "$ref": "#/definitions/DeploymentSpecifications", + "description": "LaunchWizard deployment specifications" + }, + "Status": { + "$ref": "#/definitions/DeploymentStatus", + "description": "Status of LaunchWizard deployment" + }, + "Tags": { + "description": "Tags for LaunchWizard deployment", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tags" + }, + "type": "array" + }, + "WorkloadName": { + "description": "Workload Name for LaunchWizard deployment", + "maxLength": 100, + "minLength": 1, + "pattern": "^[A-Za-z][a-zA-Z0-9-_]*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/DeletedAt", + "/properties/DeploymentId", + "/properties/ResourceGroup", + "/properties/Status" + ], + "required": [ + "DeploymentPatternName", + "Name", + "WorkloadName" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "launchwizard:ListTagsForResource", + "launchwizard:TagResource", + "launchwizard:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::LaunchWizard::Deployment", + "writeOnlyProperties": [ + "/properties/Specifications" + ] +} diff --git a/src/schema/aws-lex-bot.json b/src/schema/aws-lex-bot.json index ef06e9e4..3264e5ee 100644 --- a/src/schema/aws-lex-bot.json +++ b/src/schema/aws-lex-bot.json @@ -1,2339 +1,2373 @@ -{ - "additionalProperties": false, - "definitions": { - "AdvancedRecognitionSetting": { - "additionalProperties": false, - "description": "Provides settings that enable advanced recognition settings for slot values.", - "properties": { - "AudioRecognitionStrategy": { - "$ref": "#/definitions/AudioRecognitionStrategy" - } - }, - "type": "object" - }, - "AllowedInputTypes": { - "additionalProperties": false, - "description": "Specifies the allowed input types.", - "properties": { - "AllowAudioInput": { - "description": "Indicates whether audio input is allowed.", - "type": "boolean" - }, - "AllowDTMFInput": { - "description": "Indicates whether DTMF input is allowed.", - "type": "boolean" - } - }, - "required": [ - "AllowAudioInput", - "AllowDTMFInput" - ], - "type": "object" - }, - "AttachmentTitle": { - "maxLength": 250, - "minLength": 1, - "type": "string" - }, - "AttachmentUrl": { - "maxLength": 250, - "minLength": 1, - "type": "string" - }, - "AudioAndDTMFInputSpecification": { - "additionalProperties": false, - "description": "Specifies the audio and DTMF input specification.", - "properties": { - "AudioSpecification": { - "$ref": "#/definitions/AudioSpecification" - }, - "DTMFSpecification": { - "$ref": "#/definitions/DTMFSpecification" - }, - "StartTimeoutMs": { - "description": "Time for which a bot waits before assuming that the customer isn't going to speak or press a key. This timeout is shared between Audio and DTMF inputs.", - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "StartTimeoutMs" - ], - "type": "object" - }, - "AudioLogDestination": { - "additionalProperties": false, - "description": "The location of audio log files collected when conversation logging is enabled for a bot.", - "properties": { - "S3Bucket": { - "$ref": "#/definitions/S3BucketLogDestination" - } - }, - "required": [ - "S3Bucket" - ], - "type": "object" - }, - "AudioLogSetting": { - "additionalProperties": false, - "description": "Settings for logging audio of conversations between Amazon Lex and a user. You specify whether to log audio and the Amazon S3 bucket where the audio file is stored.", - "properties": { - "Destination": { - "$ref": "#/definitions/AudioLogDestination" - }, - "Enabled": { - "description": "", - "type": "boolean" - } - }, - "required": [ - "Destination", - "Enabled" - ], - "type": "object" - }, - "AudioLogSettings": { - "description": "List of audio log settings that pertain to the conversation log settings for the bot's TestBotAlias.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AudioLogSetting" - }, - "maxItems": 1, - "type": "array", - "uniqueItems": true - }, - "AudioRecognitionStrategy": { - "description": "Enables using slot values as a custom vocabulary when recognizing user utterances.", - "enum": [ - "UseSlotValuesAsCustomVocabulary" - ], - "type": "string" - }, - "AudioSpecification": { - "additionalProperties": false, - "description": "Specifies the audio input specifications.", - "properties": { - "EndTimeoutMs": { - "description": "Time for which a bot waits after the customer stops speaking to assume the utterance is finished.", - "minimum": 1, - "type": "integer" - }, - "MaxLengthMs": { - "description": "Time for how long Amazon Lex waits before speech input is truncated and the speech is returned to application.", - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "EndTimeoutMs", - "MaxLengthMs" - ], - "type": "object" - }, - "BotAliasLocaleSettings": { - "additionalProperties": false, - "description": "You can use this parameter to specify a specific Lambda function to run different functions in different locales.", - "properties": { - "CodeHookSpecification": { - "$ref": "#/definitions/CodeHookSpecification" - }, - "Enabled": { - "description": "Whether the Lambda code hook is enabled", - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "BotAliasLocaleSettingsItem": { - "additionalProperties": false, - "description": "A locale setting in alias", - "properties": { - "BotAliasLocaleSetting": { - "$ref": "#/definitions/BotAliasLocaleSettings" - }, - "LocaleId": { - "description": "A string used to identify the locale", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "LocaleId", - "BotAliasLocaleSetting" - ], - "type": "object" - }, - "BotAliasLocaleSettingsList": { - "description": "A list of bot alias locale settings to add to the bot alias.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/BotAliasLocaleSettingsItem" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "BotArn": { - "maxLength": 1011, - "minLength": 1, - "pattern": "^arn:aws[a-zA-Z-]*:lex:[a-z]+-[a-z]+-[0-9]:[0-9]{12}:bot/[0-9a-zA-Z]+$", - "type": "string" - }, - "BotLocale": { - "additionalProperties": false, - "description": "A locale in the bot, which contains the intents and slot types that the bot uses in conversations with users in the specified language and locale.", - "properties": { - "CustomVocabulary": { - "$ref": "#/definitions/CustomVocabulary" - }, - "Description": { - "$ref": "#/definitions/Description" - }, - "Intents": { - "description": "List of intents", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Intent" - }, - "maxItems": 1000, - "type": "array", - "uniqueItems": true - }, - "LocaleId": { - "$ref": "#/definitions/LocaleId" - }, - "NluConfidenceThreshold": { - "$ref": "#/definitions/ConfidenceThreshold" - }, - "SlotTypes": { - "description": "List of SlotTypes", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SlotType" - }, - "maxItems": 250, - "type": "array", - "uniqueItems": true - }, - "VoiceSettings": { - "$ref": "#/definitions/VoiceSettings" - } - }, - "required": [ - "LocaleId", - "NluConfidenceThreshold" - ], - "type": "object" - }, - "Button": { - "additionalProperties": false, - "description": "A button to use on a response card used to gather slot values from a user.", - "properties": { - "Text": { - "description": "The text that appears on the button.", - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value returned to Amazon Lex when the user chooses this button.", - "maxLength": 50, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Text", - "Value" - ], - "type": "object" - }, - "CloudWatchLogGroupLogDestination": { - "additionalProperties": false, - "properties": { - "CloudWatchLogGroupArn": { - "description": "A string used to identify the groupArn for the Cloudwatch Log Group", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "LogPrefix": { - "description": "A string containing the value for the Log Prefix", - "maxLength": 1024, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "CloudWatchLogGroupArn", - "LogPrefix" - ], - "type": "object" - }, - "CodeHookSpecification": { - "additionalProperties": false, - "description": "Contains information about code hooks that Amazon Lex calls during a conversation.", - "properties": { - "LambdaCodeHook": { - "$ref": "#/definitions/LambdaCodeHook" - } - }, - "required": [ - "LambdaCodeHook" - ], - "type": "object" - }, - "Condition": { - "additionalProperties": false, - "description": "Provides an expression that evaluates to true or false.", - "properties": { - "ExpressionString": { - "$ref": "#/definitions/ConditionExpression", - "description": "The expression string that is evaluated." - } - }, - "required": [ - "ExpressionString" - ], - "type": "object" - }, - "ConditionExpression": { - "description": "Expression that is evaluated to true or false at runtime.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Conditional": { - "additionalProperties": false, - "description": "Contains conditional branches to fork the conversation flow.", - "properties": { - "ConditionalBranches": { - "$ref": "#/definitions/ConditionalBranches" - }, - "IsActive": { - "type": "boolean" - } - }, - "required": [ - "IsActive", - "ConditionalBranches" - ], - "type": "object" - }, - "ConditionalBranch": { - "additionalProperties": false, - "description": "A set of actions that Amazon Lex should run if the condition is matched.", - "properties": { - "Condition": { - "$ref": "#/definitions/Condition", - "description": "Contains the expression to evaluate. If the condition is true, the branch's actions are taken." - }, - "Name": { - "$ref": "#/definitions/Name", - "description": "The name of the branch." - }, - "NextStep": { - "$ref": "#/definitions/DialogState", - "description": "The next step in the conversation." - }, - "Response": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." - } - }, - "required": [ - "Name", - "Condition", - "NextStep" - ], - "type": "object" - }, - "ConditionalBranches": { - "description": "A list of 1 to 4 conditional branches to fork the conversation flow.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ConditionalBranch" - }, - "maxItems": 4, - "minItems": 1, - "type": "array" - }, - "ConditionalSpecification": { - "additionalProperties": false, - "description": "Provides a list of conditional branches. Branches are evaluated in the order that they are entered in the list. The first branch with a condition that evaluates to true is executed. The last branch in the list is the default branch. The default branch should not have any condition expression. The default branch is executed if no other branch has a matching condition.", - "properties": { - "ConditionalBranches": { - "$ref": "#/definitions/ConditionalBranches", - "description": "A list of conditional branches. A conditional branch is made up of a condition, a response and a next step. The response and next step are executed when the condition is true." - }, - "DefaultBranch": { - "$ref": "#/definitions/DefaultConditionalBranch", - "description": "The conditional branch that should be followed when the conditions for other branches are not satisfied. A conditional branch is made up of a condition, a response and a next step." - }, - "IsActive": { - "description": "Determines whether a conditional branch is active. When active is false, the conditions are not evaluated.", - "type": "boolean" - } - }, - "required": [ - "IsActive", - "ConditionalBranches", - "DefaultBranch" - ], - "type": "object" - }, - "ConfidenceThreshold": { - "description": "The specified confidence threshold for inserting the AMAZON.FallbackIntent and AMAZON.KendraSearchIntent intents.", - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "ContextTimeToLiveInSeconds": { - "description": "The amount of time, in seconds, that the output context should remain active.", - "maximum": 86400, - "minimum": 5, - "type": "integer" - }, - "ContextTurnsToLive": { - "description": "The number of conversation turns that the output context should remain active.", - "maximum": 20, - "minimum": 1, - "type": "integer" - }, - "ConversationLogSettings": { - "additionalProperties": false, - "description": "Contains information about code hooks that Amazon Lex calls during a conversation.", - "properties": { - "AudioLogSettings": { - "$ref": "#/definitions/AudioLogSettings" - }, - "TextLogSettings": { - "$ref": "#/definitions/TextLogSettings" - } - }, - "type": "object" - }, - "CustomPayload": { - "additionalProperties": false, - "description": "A message in a custom format defined by the client application.", - "properties": { - "Value": { - "description": "The string that is sent to your application.", - "maxLength": 1000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "CustomVocabulary": { - "additionalProperties": false, - "description": "A custom vocabulary is a list of specific phrases that you want Amazon Lex V2 to recognize in the audio input.", - "properties": { - "CustomVocabularyItems": { - "$ref": "#/definitions/CustomVocabularyItems" - } - }, - "required": [ - "CustomVocabularyItems" - ], - "type": "object" - }, - "CustomVocabularyItem": { - "additionalProperties": false, - "description": "A custom vocabulary item that contains the phrase to recognize and a weight to give the boost.", - "properties": { - "DisplayAs": { - "description": "Defines how you want your phrase to look in your transcription output.", - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "Phrase": { - "description": "Phrase that should be recognized.", - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "Weight": { - "description": "The degree to which the phrase recognition is boosted. The weight 0 means that no boosting will be applied and the entry will only be used for performing replacements using the displayAs field.", - "maximum": 3, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "Phrase" - ], - "type": "object" - }, - "CustomVocabularyItems": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CustomVocabularyItem" - }, - "maxItems": 500, - "type": "array", - "uniqueItems": true - }, - "DTMFSpecification": { - "additionalProperties": false, - "description": "Specifies the settings on DTMF input.", - "properties": { - "DeletionCharacter": { - "description": "The DTMF character that clears the accumulated DTMF digits and immediately ends the input.", - "pattern": "^[A-D0-9#*]{1}$", - "type": "string" - }, - "EndCharacter": { - "description": "The DTMF character that immediately ends input. If the user does not press this character, the input ends after the end timeout.", - "pattern": "^[A-D0-9#*]{1}$", - "type": "string" - }, - "EndTimeoutMs": { - "description": "How long the bot should wait after the last DTMF character input before assuming that the input has concluded.", - "minimum": 1, - "type": "integer" - }, - "MaxLength": { - "description": "The maximum number of DTMF digits allowed in an utterance.", - "maximum": 1024, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "DeletionCharacter", - "EndCharacter", - "EndTimeoutMs", - "MaxLength" - ], - "type": "object" - }, - "DataPrivacy": { - "additionalProperties": false, - "description": "Provides information on additional privacy protections Amazon Lex should use with the bot's data.", - "properties": { - "ChildDirected": { - "description": "Specify whether your use of Amazon Lex is related to application that is directed or targeted, in whole or in part, to children under age 13 and subject to the Children's Online Privacy Protection Act (COPPA).", - "type": "boolean" - } - }, - "required": [ - "ChildDirected" - ], - "type": "object" - }, - "DefaultConditionalBranch": { - "additionalProperties": false, - "description": "A set of actions that Amazon Lex should run if none of the other conditions are met.", - "properties": { - "NextStep": { - "$ref": "#/definitions/DialogState", - "description": "The next step in the conversation." - }, - "Response": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." - } - }, - "type": "object" - }, - "Description": { - "description": "A description of the resource", - "maxLength": 200, - "type": "string" - }, - "DialogAction": { - "additionalProperties": false, - "description": "Defines the action that the bot executes at runtime when the conversation reaches this step.", - "properties": { - "SlotToElicit": { - "$ref": "#/definitions/Name", - "description": "If the dialog action is ElicitSlot, defines the slot to elicit from the user." - }, - "SuppressNextMessage": { - "description": "When true the next message for the intent is not used.", - "type": "boolean" - }, - "Type": { - "$ref": "#/definitions/DialogActionType", - "description": "The action that the bot should execute." - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "DialogActionType": { - "description": "The possible values of actions that the conversation can take.", - "enum": [ - "CloseIntent", - "ConfirmIntent", - "ElicitIntent", - "ElicitSlot", - "StartIntent", - "FulfillIntent", - "EndConversation", - "EvaluateConditional", - "InvokeDialogCodeHook" - ], - "type": "string" - }, - "DialogCodeHookInvocationSetting": { - "additionalProperties": false, - "description": "Settings that specify the dialog code hook that is called by Amazon Lex at a step of the conversation.", - "properties": { - "EnableCodeHookInvocation": { - "description": "Indicates whether a Lambda function should be invoked for the dialog.", - "type": "boolean" - }, - "InvocationLabel": { - "$ref": "#/definitions/Name", - "description": "A label that indicates the dialog step from which the dialog code hook is happening." - }, - "IsActive": { - "description": "Determines whether a dialog code hook is used when the intent is activated.", - "type": "boolean" - }, - "PostCodeHookSpecification": { - "$ref": "#/definitions/PostDialogCodeHookInvocationSpecification", - "description": "Contains the responses and actions that Amazon Lex takes after the Lambda function is complete." - } - }, - "required": [ - "IsActive", - "EnableCodeHookInvocation", - "PostCodeHookSpecification" - ], - "type": "object" - }, - "DialogCodeHookSetting": { - "additionalProperties": false, - "description": "Settings that determine the Lambda function that Amazon Lex uses for processing user responses.", - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "DialogState": { - "additionalProperties": false, - "description": "The current state of the conversation with the user.", - "properties": { - "DialogAction": { - "$ref": "#/definitions/DialogAction", - "description": "Defines the action that the bot executes at runtime when the conversation reaches this step." - }, - "Intent": { - "$ref": "#/definitions/IntentOverride", - "description": "Override settings to configure the intent state." - }, - "SessionAttributes": { - "description": "List of session attributes to be applied when the conversation reaches this step.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SessionAttribute" - }, - "type": "array" - } - }, - "type": "object" - }, - "ElicitationCodeHookInvocationSetting": { - "additionalProperties": false, - "description": "Settings that specify the dialog code hook that is called by Amazon Lex between eliciting slot values.", - "properties": { - "EnableCodeHookInvocation": { - "description": "Indicates whether a Lambda function should be invoked for the dialog.", - "type": "boolean" - }, - "InvocationLabel": { - "$ref": "#/definitions/Name", - "description": "A label that indicates the dialog step from which the dialog code hook is happening." - } - }, - "required": [ - "EnableCodeHookInvocation" - ], - "type": "object" - }, - "ExternalSourceSetting": { - "additionalProperties": false, - "description": "Provides information about the external source of the slot type's definition.", - "properties": { - "GrammarSlotTypeSetting": { - "$ref": "#/definitions/GrammarSlotTypeSetting" - } - }, - "type": "object" - }, - "FulfillmentCodeHookSetting": { - "additionalProperties": false, - "description": "Settings that determine if a Lambda function should be invoked to fulfill a specific intent.", - "properties": { - "Enabled": { - "type": "boolean" - }, - "FulfillmentUpdatesSpecification": { - "$ref": "#/definitions/FulfillmentUpdatesSpecification" - }, - "IsActive": { - "description": "Determines whether the fulfillment code hook is used. When active is false, the code hook doesn't run.", - "type": "boolean" - }, - "PostFulfillmentStatusSpecification": { - "$ref": "#/definitions/PostFulfillmentStatusSpecification" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "FulfillmentStartResponseSpecification": { - "additionalProperties": false, - "description": "Provides settings for a message that is sent to the user when a fulfillment Lambda function starts running.", - "properties": { - "AllowInterrupt": { - "description": "Determines whether the user can interrupt the start message while it is playing.", - "type": "boolean" - }, - "DelayInSeconds": { - "description": "The delay between when the Lambda fulfillment function starts running and the start message is played. If the Lambda function returns before the delay is over, the start message isn't played.", - "maximum": 900, - "minimum": 1, - "type": "integer" - }, - "MessageGroups": { - "$ref": "#/definitions/MessageGroupsList" - } - }, - "required": [ - "DelayInSeconds", - "MessageGroups" - ], - "type": "object" - }, - "FulfillmentUpdateResponseSpecification": { - "additionalProperties": false, - "description": "Provides settings for a message that is sent periodically to the user while a fulfillment Lambda function is running.", - "properties": { - "AllowInterrupt": { - "description": "Determines whether the user can interrupt an update message while it is playing.", - "type": "boolean" - }, - "FrequencyInSeconds": { - "description": "The frequency that a message is sent to the user. When the period ends, Amazon Lex chooses a message from the message groups and plays it to the user. If the fulfillment Lambda returns before the first period ends, an update message is not played to the user.", - "maximum": 900, - "minimum": 1, - "type": "integer" - }, - "MessageGroups": { - "$ref": "#/definitions/MessageGroupsList" - } - }, - "required": [ - "FrequencyInSeconds", - "MessageGroups" - ], - "type": "object" - }, - "FulfillmentUpdatesSpecification": { - "additionalProperties": false, - "description": "Provides information for updating the user on the progress of fulfilling an intent.", - "properties": { - "Active": { - "description": "Determines whether fulfillment updates are sent to the user. When this field is true, updates are sent.", - "type": "boolean" - }, - "StartResponse": { - "$ref": "#/definitions/FulfillmentStartResponseSpecification" - }, - "TimeoutInSeconds": { - "description": "The length of time that the fulfillment Lambda function should run before it times out.", - "maximum": 900, - "minimum": 1, - "type": "integer" - }, - "UpdateResponse": { - "$ref": "#/definitions/FulfillmentUpdateResponseSpecification" - } - }, - "required": [ - "Active" - ], - "type": "object" - }, - "GrammarSlotTypeSetting": { - "additionalProperties": false, - "description": "Settings required for a slot type based on a grammar that you provide.", - "properties": { - "Source": { - "$ref": "#/definitions/GrammarSlotTypeSource" - } - }, - "type": "object" - }, - "GrammarSlotTypeSource": { - "additionalProperties": false, - "description": "Describes the Amazon S3 bucket name and location for the grammar that is the source for the slot type.", - "properties": { - "KmsKeyArn": { - "description": "The Amazon KMS key required to decrypt the contents of the grammar, if any.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w\\-]+:kms:[\\w\\-]+:[\\d]{12}:(?:key\\/[\\w\\-]+|alias\\/[a-zA-Z0-9:\\/_\\-]{1,256})$", - "type": "string" - }, - "S3BucketName": { - "$ref": "#/definitions/S3BucketName", - "description": "The name of the S3 bucket that contains the grammar source." - }, - "S3ObjectKey": { - "$ref": "#/definitions/S3ObjectKey", - "description": "The path to the grammar in the S3 bucket." - } - }, - "required": [ - "S3BucketName", - "S3ObjectKey" - ], - "type": "object" - }, - "Id": { - "description": "Unique ID of resource", - "maxLength": 10, - "minLength": 10, - "pattern": "^[0-9a-zA-Z]+$", - "type": "string" - }, - "IdleSessionTTLInSeconds": { - "description": "The time, in seconds, that Amazon Lex should keep information about a user's conversation with the bot.", - "maximum": 86400, - "minimum": 60, - "type": "integer" - }, - "ImageResponseCard": { - "additionalProperties": false, - "description": "A message that defines a response card that the client application can show to the user.", - "properties": { - "Buttons": { - "description": "A list of buttons that should be displayed on the response card.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Button" - }, - "maxItems": 5, - "type": "array" - }, - "ImageUrl": { - "$ref": "#/definitions/AttachmentUrl", - "description": "The URL of an image to display on the response card." - }, - "Subtitle": { - "$ref": "#/definitions/AttachmentTitle", - "description": "The subtitle to display on the response card." - }, - "Title": { - "$ref": "#/definitions/AttachmentTitle", - "description": "The title to display on the response card." - } - }, - "required": [ - "Title" - ], - "type": "object" - }, - "InitialResponseSetting": { - "additionalProperties": false, - "description": "Configuration setting for a response sent to the user before Amazon Lex starts eliciting slots.", - "properties": { - "CodeHook": { - "$ref": "#/definitions/DialogCodeHookInvocationSetting", - "description": "Settings that specify the dialog code hook that is called by Amazon Lex at a step of the conversation." - }, - "Conditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "Provides a list of conditional branches. Branches are evaluated in the order that they are entered in the list. The first branch with a condition that evaluates to true is executed. The last branch in the list is the default branch. The default branch should not have any condition expression. The default branch is executed if no other branch has a matching condition." - }, - "InitialResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." - }, - "NextStep": { - "$ref": "#/definitions/DialogState", - "description": "The next step in the conversation." - } - }, - "type": "object" - }, - "InputContext": { - "additionalProperties": false, - "description": "InputContext specified for the intent.", - "properties": { - "Name": { - "$ref": "#/definitions/Name", - "description": "The name of the context." - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "InputContextsList": { - "description": "The list of input contexts specified for the intent.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/InputContext" - }, - "maxItems": 5, - "type": "array" - }, - "Intent": { - "additionalProperties": false, - "description": "Represents an action that the user wants to perform.", - "properties": { - "Description": { - "$ref": "#/definitions/Description", - "description": "Description of thr intent." - }, - "DialogCodeHook": { - "$ref": "#/definitions/DialogCodeHookSetting" - }, - "FulfillmentCodeHook": { - "$ref": "#/definitions/FulfillmentCodeHookSetting" - }, - "InitialResponseSetting": { - "$ref": "#/definitions/InitialResponseSetting", - "description": "Configuration setting for a response sent to the user before Amazon Lex starts eliciting slots." - }, - "InputContexts": { - "$ref": "#/definitions/InputContextsList" - }, - "IntentClosingSetting": { - "$ref": "#/definitions/IntentClosingSetting" - }, - "IntentConfirmationSetting": { - "$ref": "#/definitions/IntentConfirmationSetting" - }, - "KendraConfiguration": { - "$ref": "#/definitions/KendraConfiguration" - }, - "Name": { - "$ref": "#/definitions/Name", - "description": "The name of the intent." - }, - "OutputContexts": { - "$ref": "#/definitions/OutputContextsList" - }, - "ParentIntentSignature": { - "$ref": "#/definitions/ParentIntentSignature" - }, - "SampleUtterances": { - "$ref": "#/definitions/SampleUtterancesList", - "description": "A sample utterance that invokes an intent or respond to a slot elicitation prompt." - }, - "SlotPriorities": { - "$ref": "#/definitions/SlotPrioritiesList" - }, - "Slots": { - "description": "List of slots", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Slot" - }, - "maxItems": 100, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "IntentClosingSetting": { - "additionalProperties": false, - "description": "Provides a statement the Amazon Lex conveys to the user when the intent is successfully fulfilled.", - "properties": { - "ClosingResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "The response that Amazon Lex sends to the user when the intent is complete." - }, - "Conditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches associated with the intent's closing response. These branches are executed when the nextStep attribute is set to EvalutateConditional." - }, - "IsActive": { - "description": "Specifies whether an intent's closing response is used. When this field is false, the closing response isn't sent to the user. If the active field isn't specified, the default is true.", - "type": "boolean" - }, - "NextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifies the next step that the bot executes after playing the intent's closing response." - } - }, - "type": "object" - }, - "IntentConfirmationSetting": { - "additionalProperties": false, - "description": "Provides a prompt for making sure that the user is ready for the intent to be fulfilled.", - "properties": { - "CodeHook": { - "$ref": "#/definitions/DialogCodeHookInvocationSetting", - "description": "The DialogCodeHookInvocationSetting object associated with intent's confirmation step. The dialog code hook is triggered based on these invocation settings when the confirmation next step or declination next step or failure next step is InvokeDialogCodeHook." - }, - "ConfirmationConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches to evaluate after the intent is closed." - }, - "ConfirmationNextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifies the next step that the bot executes when the customer confirms the intent." - }, - "ConfirmationResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." - }, - "DeclinationConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches to evaluate after the intent is declined." - }, - "DeclinationNextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifies the next step that the bot executes when the customer declines the intent." - }, - "DeclinationResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "When the user answers \"no\" to the question defined in promptSpecification, Amazon Lex responds with this response to acknowledge that the intent was canceled." - }, - "ElicitationCodeHook": { - "$ref": "#/definitions/ElicitationCodeHookInvocationSetting", - "description": "The DialogCodeHookInvocationSetting used when the code hook is invoked during confirmation prompt retries." - }, - "FailureConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "Provides a list of conditional branches. Branches are evaluated in the order that they are entered in the list. The first branch with a condition that evaluates to true is executed. The last branch in the list is the default branch. The default branch should not have any condition expression. The default branch is executed if no other branch has a matching condition." - }, - "FailureNextStep": { - "$ref": "#/definitions/DialogState", - "description": "The next step to take in the conversation if the confirmation step fails." - }, - "FailureResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." - }, - "IsActive": { - "description": "Specifies whether the intent's confirmation is sent to the user. When this field is false, confirmation and declination responses aren't sent. If the active field isn't specified, the default is true.", - "type": "boolean" - }, - "PromptSpecification": { - "$ref": "#/definitions/PromptSpecification", - "description": "Prompts the user to confirm the intent. This question should have a yes or no answer." - } - }, - "required": [ - "PromptSpecification" - ], - "type": "object" - }, - "IntentOverride": { - "additionalProperties": false, - "description": "Override settings to configure the intent state.", - "properties": { - "Name": { - "$ref": "#/definitions/Name", - "description": "The name of the intent. Only required when you're switching intents." - }, - "Slots": { - "description": "A map of all of the slot value overrides for the intent.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SlotValueOverrideMap" - }, - "type": "array" - } - }, - "type": "object" - }, - "KendraConfiguration": { - "additionalProperties": false, - "description": "Configuration for searching a Amazon Kendra index specified for the intent.", - "properties": { - "KendraIndex": { - "$ref": "#/definitions/KendraIndexArn" - }, - "QueryFilterString": { - "$ref": "#/definitions/QueryFilterString" - }, - "QueryFilterStringEnabled": { - "description": "Determines whether the AMAZON.KendraSearchIntent intent uses a custom query string to query the Amazon Kendra index.", - "type": "boolean" - } - }, - "required": [ - "KendraIndex" - ], - "type": "object" - }, - "KendraIndexArn": { - "description": "The Amazon Resource Name (ARN) of the Amazon Kendra index that you want the AMAZON.KendraSearchIntent intent to search.", - "maxLength": 2048, - "minLength": 32, - "pattern": "^arn:aws[a-zA-Z-]*:kendra:[a-z]+-[a-z]+-[0-9]:[0-9]{12}:index/[a-zA-Z0-9][a-zA-Z0-9_-]*$", - "type": "string" - }, - "LambdaCodeHook": { - "additionalProperties": false, - "description": "Contains information about code hooks that Amazon Lex calls during a conversation.", - "properties": { - "CodeHookInterfaceVersion": { - "description": "The version of the request-response that you want Amazon Lex to use to invoke your Lambda function.", - "maxLength": 5, - "minLength": 1, - "type": "string" - }, - "LambdaArn": { - "description": "The Amazon Resource Name (ARN) of the Lambda function.", - "maxLength": 2048, - "minLength": 20, - "type": "string" - } - }, - "required": [ - "CodeHookInterfaceVersion", - "LambdaArn" - ], - "type": "object" - }, - "LocaleId": { - "description": "The identifier of the language and locale that the bot will be used in.", - "type": "string" - }, - "Message": { - "additionalProperties": false, - "description": "The primary message that Amazon Lex should send to the user.", - "properties": { - "CustomPayload": { - "$ref": "#/definitions/CustomPayload" - }, - "ImageResponseCard": { - "$ref": "#/definitions/ImageResponseCard" - }, - "PlainTextMessage": { - "$ref": "#/definitions/PlainTextMessage" - }, - "SSMLMessage": { - "$ref": "#/definitions/SSMLMessage" - } - }, - "required": [], - "type": "object" - }, - "MessageGroup": { - "additionalProperties": false, - "description": "One or more messages that Amazon Lex can send to the user.", - "properties": { - "Message": { - "$ref": "#/definitions/Message" - }, - "Variations": { - "description": "Message variations to send to the user.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Message" - }, - "maxItems": 2, - "type": "array" - } - }, - "required": [ - "Message" - ], - "type": "object" - }, - "MessageGroupsList": { - "description": "One to 5 message groups that contain update messages. Amazon Lex chooses one of the messages to play to the user.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MessageGroup" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "MessageSelectionStrategy": { - "description": "Indicates how a message is selected from a message group among retries.", - "enum": [ - "Random", - "Ordered" - ], - "type": "string" - }, - "MultipleValuesSetting": { - "additionalProperties": false, - "description": "Indicates whether a slot can return multiple values.", - "properties": { - "AllowMultipleValues": { - "type": "boolean" - } - }, - "required": [], - "type": "object" - }, - "Name": { - "description": "Unique name for a resource.", - "maxLength": 100, - "minLength": 1, - "pattern": "^([0-9a-zA-Z][_-]?)+$", - "type": "string" - }, - "ObfuscationSetting": { - "additionalProperties": false, - "description": "Determines whether Amazon Lex obscures slot values in conversation logs.", - "properties": { - "ObfuscationSettingType": { - "description": "Value that determines whether Amazon Lex obscures slot values in conversation logs. The default is to obscure the values.", - "enum": [ - "None", - "DefaultObfuscation" - ], - "type": "string" - } - }, - "required": [ - "ObfuscationSettingType" - ], - "type": "object" - }, - "OutputContext": { - "additionalProperties": false, - "description": "A session context that is activated when an intent is fulfilled.", - "properties": { - "Name": { - "$ref": "#/definitions/Name" - }, - "TimeToLiveInSeconds": { - "$ref": "#/definitions/ContextTimeToLiveInSeconds" - }, - "TurnsToLive": { - "$ref": "#/definitions/ContextTurnsToLive" - } - }, - "required": [ - "Name", - "TimeToLiveInSeconds", - "TurnsToLive" - ], - "type": "object" - }, - "OutputContextsList": { - "description": "A list of contexts that the intent activates when it is fulfilled.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/OutputContext" - }, - "maxItems": 10, - "type": "array" - }, - "ParentIntentSignature": { - "description": "A unique identifier for the built-in intent to base this intent on.", - "type": "string" - }, - "ParentSlotTypeSignature": { - "description": "The built-in slot type used as a parent of this slot type.", - "type": "string" - }, - "PlainTextMessage": { - "additionalProperties": false, - "description": "A message in plain text format.", - "properties": { - "Value": { - "description": "The message to send to the user.", - "maxLength": 1000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "PostDialogCodeHookInvocationSpecification": { - "additionalProperties": false, - "description": "Specifies next steps to run after the dialog code hook finishes.", - "properties": { - "FailureConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches to evaluate after the dialog code hook throws an exception or returns with the State field of the Intent object set to Failed." - }, - "FailureNextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifies the next step the bot runs after the dialog code hook throws an exception or returns with the State field of the Intent object set to Failed." - }, - "FailureResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." - }, - "SuccessConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches to evaluate after the dialog code hook finishes successfully." - }, - "SuccessNextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifics the next step the bot runs after the dialog code hook finishes successfully." - }, - "SuccessResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." - }, - "TimeoutConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches to evaluate if the code hook times out." - }, - "TimeoutNextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifies the next step that the bot runs when the code hook times out." - }, - "TimeoutResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." - } - }, - "type": "object" - }, - "PostFulfillmentStatusSpecification": { - "additionalProperties": false, - "description": "Provides a setting that determines whether the post-fulfillment response is sent to the user.", - "properties": { - "FailureConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches to evaluate after the fulfillment code hook throws an exception or returns with the State field of the Intent object set to Failed." - }, - "FailureNextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifies the next step the bot runs after the fulfillment code hook throws an exception or returns with the State field of the Intent object set to Failed." - }, - "FailureResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." - }, - "SuccessConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches to evaluate after the fulfillment code hook finishes successfully." - }, - "SuccessNextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifies the next step in the conversation that Amazon Lex invokes when the fulfillment code hook completes successfully." - }, - "SuccessResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." - }, - "TimeoutConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches to evaluate if the fulfillment code hook times out." - }, - "TimeoutNextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifies the next step that the bot runs when the fulfillment code hook times out." - }, - "TimeoutResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." - } - }, - "required": [], - "type": "object" - }, - "PriorityValue": { - "description": "The priority that a slot should be elicited.", - "maximum": 100, - "minimum": 0, - "type": "integer" - }, - "PromptAttemptSpecification": { - "additionalProperties": false, - "description": "Specifies the settings on a prompt attempt.", - "properties": { - "AllowInterrupt": { - "description": "Indicates whether the user can interrupt a speech prompt attempt from the bot.", - "type": "boolean" - }, - "AllowedInputTypes": { - "$ref": "#/definitions/AllowedInputTypes" - }, - "AudioAndDTMFInputSpecification": { - "$ref": "#/definitions/AudioAndDTMFInputSpecification" - }, - "TextInputSpecification": { - "$ref": "#/definitions/TextInputSpecification" - } - }, - "required": [ - "AllowedInputTypes" - ], - "type": "object" - }, - "PromptMaxRetries": { - "description": "The maximum number of times the bot tries to elicit a response from the user using this prompt.", - "maximum": 5, - "minimum": 0, - "type": "integer" - }, - "PromptSpecification": { - "additionalProperties": false, - "description": "Prompts the user to confirm the intent.", - "properties": { - "AllowInterrupt": { - "description": "Indicates whether the user can interrupt a speech prompt from the bot.", - "type": "boolean" - }, - "MaxRetries": { - "$ref": "#/definitions/PromptMaxRetries" - }, - "MessageGroupsList": { - "$ref": "#/definitions/MessageGroupsList" - }, - "MessageSelectionStrategy": { - "$ref": "#/definitions/MessageSelectionStrategy" - }, - "PromptAttemptsSpecification": { - "additionalProperties": false, - "description": "Specifies the advanced settings on each attempt of the prompt.", - "patternProperties": { - "^(Initial|Retry1|Retry2|Retry3|Retry4|Retry5)$": { - "$ref": "#/definitions/PromptAttemptSpecification" - } - }, - "type": "object" - } - }, - "required": [ - "MessageGroupsList", - "MaxRetries" - ], - "type": "object" - }, - "QueryFilterString": { - "description": "A query filter that Amazon Lex sends to Amazon Kendra to filter the response from a query.", - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "ResponseSpecification": { - "additionalProperties": false, - "description": "A list of message groups that Amazon Lex uses to respond the user input.", - "properties": { - "AllowInterrupt": { - "description": "Indicates whether the user can interrupt a speech prompt from the bot.", - "type": "boolean" - }, - "MessageGroupsList": { - "$ref": "#/definitions/MessageGroupsList" - } - }, - "required": [ - "MessageGroupsList" - ], - "type": "object" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) of an IAM role that has permission to access the bot.", - "maxLength": 2048, - "minLength": 32, - "pattern": "^arn:aws[a-zA-Z-]*:iam::[0-9]{12}:role/.*$", - "type": "string" - }, - "S3BucketLogDestination": { - "additionalProperties": false, - "description": "Specifies an Amazon S3 bucket for logging audio conversations", - "properties": { - "KmsKeyArn": { - "description": "The Amazon Resource Name (ARN) of an AWS Key Management Service (KMS) key for encrypting audio log files stored in an S3 bucket.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w\\-]+:kms:[\\w\\-]+:[\\d]{12}:(?:key\\/[\\w\\-]+|alias\\/[a-zA-Z0-9:\\/_\\-]{1,256})$", - "type": "string" - }, - "LogPrefix": { - "description": "The Amazon S3 key of the deployment package.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "S3BucketArn": { - "description": "The Amazon Resource Name (ARN) of an Amazon S3 bucket where audio log files are stored.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:[\\w\\-]+:s3:::[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", - "type": "string" - } - }, - "required": [ - "LogPrefix", - "S3BucketArn" - ], - "type": "object" - }, - "S3BucketName": { - "maxLength": 63, - "minLength": 3, - "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", - "type": "string" - }, - "S3Location": { - "additionalProperties": false, - "description": "S3 location of bot definitions zip file, if it's not defined inline in CloudFormation.", - "properties": { - "S3Bucket": { - "$ref": "#/definitions/S3BucketName", - "description": "An Amazon S3 bucket in the same AWS Region as your function. The bucket can be in a different AWS account." - }, - "S3ObjectKey": { - "$ref": "#/definitions/S3ObjectKey", - "description": "The Amazon S3 key of the deployment package." - }, - "S3ObjectVersion": { - "description": "For versioned objects, the version of the deployment package object to use. If not specified, the current object version will be used.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "S3Bucket", - "S3ObjectKey" - ], - "type": "object" - }, - "S3ObjectKey": { - "maxLength": 1024, - "minLength": 1, - "pattern": "[\\.\\-\\!\\*\\_\\'\\(\\)a-zA-Z0-9][\\.\\-\\!\\*\\_\\'\\(\\)\\/a-zA-Z0-9]*$", - "type": "string" - }, - "SSMLMessage": { - "additionalProperties": false, - "description": "A message in Speech Synthesis Markup Language (SSML).", - "properties": { - "Value": { - "description": "The SSML text that defines the prompt.", - "maxLength": 1000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "SampleUtterance": { - "additionalProperties": false, - "description": "A sample utterance that invokes an intent or respond to a slot elicitation prompt.", - "properties": { - "Utterance": { - "$ref": "#/definitions/Utterance" - } - }, - "required": [ - "Utterance" - ], - "type": "object" - }, - "SampleUtterancesList": { - "description": "An array of sample utterances", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SampleUtterance" - }, - "type": "array" - }, - "SampleValue": { - "additionalProperties": false, - "description": "Defines one of the values for a slot type.", - "properties": { - "Value": { - "description": "The value that can be used for a slot type.", - "maxLength": 140, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "SessionAttribute": { - "additionalProperties": false, - "description": "Key/value pair representing session-specific context information. It contains application information passed between Amazon Lex and a client application.", - "properties": { - "Key": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - }, - "Slot": { - "additionalProperties": false, - "description": "A slot is a variable needed to fulfill an intent, where an intent can require zero or more slots.", - "properties": { - "Description": { - "$ref": "#/definitions/Description" - }, - "MultipleValuesSetting": { - "$ref": "#/definitions/MultipleValuesSetting" - }, - "Name": { - "$ref": "#/definitions/Name" - }, - "ObfuscationSetting": { - "$ref": "#/definitions/ObfuscationSetting" - }, - "SlotTypeName": { - "$ref": "#/definitions/SlotTypeName" - }, - "ValueElicitationSetting": { - "$ref": "#/definitions/SlotValueElicitationSetting" - } - }, - "required": [ - "Name", - "SlotTypeName", - "ValueElicitationSetting" - ], - "type": "object" - }, - "SlotCaptureSetting": { - "additionalProperties": false, - "description": "Settings used when Amazon Lex successfully captures a slot value from a user.", - "properties": { - "CaptureConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches to evaluate after the slot value is captured." - }, - "CaptureNextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifies the next step that the bot runs when the slot value is captured before the code hook times out." - }, - "CaptureResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." - }, - "CodeHook": { - "$ref": "#/definitions/DialogCodeHookInvocationSetting", - "description": "Code hook called after Amazon Lex successfully captures a slot value." - }, - "ElicitationCodeHook": { - "$ref": "#/definitions/ElicitationCodeHookInvocationSetting", - "description": "Code hook called when Amazon Lex doesn't capture a slot value." - }, - "FailureConditional": { - "$ref": "#/definitions/ConditionalSpecification", - "description": "A list of conditional branches to evaluate when the slot value isn't captured." - }, - "FailureNextStep": { - "$ref": "#/definitions/DialogState", - "description": "Specifies the next step that the bot runs when the slot value code is not recognized." - }, - "FailureResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "Specifies a list of message groups that Amazon Lex uses to respond the user input." - } - }, - "type": "object" - }, - "SlotConstraint": { - "enum": [ - "Required", - "Optional" - ], - "type": "string" - }, - "SlotDefaultValue": { - "additionalProperties": false, - "description": "The default value to use when a user doesn't provide a value for a slot.", - "properties": { - "DefaultValue": { - "description": "The default value to use when a user doesn't provide a value for a slot.", - "maxLength": 202, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DefaultValue" - ], - "type": "object" - }, - "SlotDefaultValueSpecification": { - "additionalProperties": false, - "description": "A list of values that Amazon Lex should use as the default value for a slot.", - "properties": { - "DefaultValueList": { - "description": "A list of slot default values", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SlotDefaultValue" - }, - "maxItems": 10, - "type": "array" - } - }, - "required": [ - "DefaultValueList" - ], - "type": "object" - }, - "SlotPrioritiesList": { - "description": "List for slot priorities", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SlotPriority" - }, - "type": "array" - }, - "SlotPriority": { - "additionalProperties": false, - "description": "The priority that Amazon Lex should use when eliciting slot values from a user.", - "properties": { - "Priority": { - "$ref": "#/definitions/PriorityValue" - }, - "SlotName": { - "$ref": "#/definitions/Name", - "description": "The name of the slot." - } - }, - "required": [ - "SlotName", - "Priority" - ], - "type": "object" - }, - "SlotShape": { - "description": "The different shapes that a slot can be in during a conversation.", - "enum": [ - "Scalar", - "List" - ], - "type": "string" - }, - "SlotType": { - "additionalProperties": false, - "description": "A custom, extended built-in or a grammar slot type.", - "properties": { - "Description": { - "$ref": "#/definitions/Description" - }, - "ExternalSourceSetting": { - "$ref": "#/definitions/ExternalSourceSetting" - }, - "Name": { - "$ref": "#/definitions/Name" - }, - "ParentSlotTypeSignature": { - "$ref": "#/definitions/ParentSlotTypeSignature" - }, - "SlotTypeValues": { - "$ref": "#/definitions/SlotTypeValues" - }, - "ValueSelectionSetting": { - "$ref": "#/definitions/SlotValueSelectionSetting" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "SlotTypeName": { - "description": "The slot type name that is used in the slot. Allows for custom and built-in slot type names", - "type": "string" - }, - "SlotTypeValue": { - "additionalProperties": false, - "description": "Value that the slot type can take.", - "properties": { - "SampleValue": { - "$ref": "#/definitions/SampleValue" - }, - "Synonyms": { - "$ref": "#/definitions/SynonymList" - } - }, - "required": [ - "SampleValue" - ], - "type": "object" - }, - "SlotTypeValues": { - "description": "A List of slot type values", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SlotTypeValue" - }, - "maxItems": 10000, - "type": "array" - }, - "SlotValue": { - "additionalProperties": false, - "description": "The value to set in a slot.", - "properties": { - "InterpretedValue": { - "description": "The value that Amazon Lex determines for the slot.", - "maxLength": 202, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "SlotValueElicitationSetting": { - "additionalProperties": false, - "description": "Settings that you can use for eliciting a slot value.", - "properties": { - "DefaultValueSpecification": { - "$ref": "#/definitions/SlotDefaultValueSpecification", - "description": "A list of default values for a slot." - }, - "PromptSpecification": { - "$ref": "#/definitions/PromptSpecification", - "description": "The prompt that Amazon Lex uses to elicit the slot value from the user." - }, - "SampleUtterances": { - "$ref": "#/definitions/SampleUtterancesList", - "description": "If you know a specific pattern that users might respond to an Amazon Lex request for a slot value, you can provide those utterances to improve accuracy." - }, - "SlotCaptureSetting": { - "$ref": "#/definitions/SlotCaptureSetting", - "description": "Specifies the next stage in the conversation after capturing the slot." - }, - "SlotConstraint": { - "$ref": "#/definitions/SlotConstraint", - "description": "Specifies whether the slot is required or optional." - }, - "WaitAndContinueSpecification": { - "$ref": "#/definitions/WaitAndContinueSpecification", - "description": "Specifies the prompts that Amazon Lex uses while a bot is waiting for customer input." - } - }, - "required": [ - "SlotConstraint" - ], - "type": "object" - }, - "SlotValueOverride": { - "additionalProperties": false, - "description": "The slot values that Amazon Lex uses when it sets slot values in a dialog step.", - "properties": { - "Shape": { - "$ref": "#/definitions/SlotShape", - "description": "When the shape value is List, it indicates that the values field contains a list of slot values. When the value is Scalar, it indicates that the value field contains a single value." - }, - "Value": { - "$ref": "#/definitions/SlotValue", - "description": "The current value of the slot." - }, - "Values": { - "$ref": "#/definitions/SlotValues", - "description": "A list of one or more values that the user provided for the slot. For example, for a slot that elicits pizza toppings, the values might be \"pepperoni\" and \"pineapple.\"" - } - }, - "type": "object" - }, - "SlotValueOverrideMap": { - "additionalProperties": false, - "description": "A map of slot names and their overridden values.", - "properties": { - "SlotName": { - "$ref": "#/definitions/Name" - }, - "SlotValueOverride": { - "$ref": "#/definitions/SlotValueOverride" - } - }, - "type": "object" - }, - "SlotValueRegexFilter": { - "additionalProperties": false, - "description": "A regular expression used to validate the value of a slot.", - "properties": { - "Pattern": { - "description": "Regex pattern", - "maxLength": 300, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Pattern" - ], - "type": "object" - }, - "SlotValueResolutionStrategy": { - "enum": [ - "ORIGINAL_VALUE", - "TOP_RESOLUTION" - ], - "type": "string" - }, - "SlotValueSelectionSetting": { - "additionalProperties": false, - "description": "Contains settings used by Amazon Lex to select a slot value.", - "properties": { - "AdvancedRecognitionSetting": { - "$ref": "#/definitions/AdvancedRecognitionSetting" - }, - "RegexFilter": { - "$ref": "#/definitions/SlotValueRegexFilter" - }, - "ResolutionStrategy": { - "$ref": "#/definitions/SlotValueResolutionStrategy" - } - }, - "required": [ - "ResolutionStrategy" - ], - "type": "object" - }, - "SlotValues": { - "description": "An array of values that slots should be set to", - "items": { - "$ref": "#/definitions/SlotValueOverride" - }, - "type": "array" - }, - "StillWaitingResponseFrequency": { - "description": "How often a message should be sent to the user in seconds.", - "maximum": 300, - "minimum": 1, - "type": "integer" - }, - "StillWaitingResponseSpecification": { - "additionalProperties": false, - "description": "StillWaitingResponseSpecification.", - "properties": { - "AllowInterrupt": { - "description": "Indicates whether the user can interrupt a speech prompt from the bot.", - "type": "boolean" - }, - "FrequencyInSeconds": { - "$ref": "#/definitions/StillWaitingResponseFrequency" - }, - "MessageGroupsList": { - "$ref": "#/definitions/MessageGroupsList" - }, - "TimeoutInSeconds": { - "$ref": "#/definitions/StillWaitingResponseTimeout" - } - }, - "required": [ - "MessageGroupsList", - "FrequencyInSeconds", - "TimeoutInSeconds" - ], - "type": "object" - }, - "StillWaitingResponseTimeout": { - "description": "If Amazon Lex waits longer than this length of time in seconds for a response, it will stop sending messages.", - "maximum": 900, - "minimum": 1, - "type": "integer" - }, - "SynonymList": { - "description": "Additional values related to the slot type entry.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SampleValue" - }, - "maxItems": 10000, - "type": "array" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair for tagging Lex resources", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TestBotAliasSettings": { - "additionalProperties": false, - "description": "Configuring the test bot alias settings for a given bot", - "properties": { - "BotAliasLocaleSettings": { - "$ref": "#/definitions/BotAliasLocaleSettingsList" - }, - "ConversationLogSettings": { - "$ref": "#/definitions/ConversationLogSettings" - }, - "Description": { - "$ref": "#/definitions/Description" - }, - "SentimentAnalysisSettings": { - "additionalProperties": false, - "description": "Determines whether Amazon Lex will use Amazon Comprehend to detect the sentiment of user utterances.", - "properties": { - "DetectSentiment": { - "description": "Enable to call Amazon Comprehend for Sentiment natively within Lex", - "type": "boolean" - } - }, - "required": [ - "DetectSentiment" - ], - "type": "object" - } - }, - "type": "object" - }, - "TextInputSpecification": { - "additionalProperties": false, - "description": "Specifies the text input specifications.", - "properties": { - "StartTimeoutMs": { - "description": "Time for which a bot waits before re-prompting a customer for text input.", - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "StartTimeoutMs" - ], - "type": "object" - }, - "TextLogDestination": { - "additionalProperties": false, - "description": "Defines the Amazon CloudWatch Logs destination log group for conversation text logs.", - "properties": { - "CloudWatch": { - "$ref": "#/definitions/CloudWatchLogGroupLogDestination" - } - }, - "required": [ - "CloudWatch" - ], - "type": "object" - }, - "TextLogSetting": { - "additionalProperties": false, - "description": "Contains information about code hooks that Amazon Lex calls during a conversation.", - "properties": { - "Destination": { - "$ref": "#/definitions/TextLogDestination" - }, - "Enabled": { - "description": "", - "type": "boolean" - } - }, - "required": [ - "Destination", - "Enabled" - ], - "type": "object" - }, - "TextLogSettings": { - "description": "List of text log settings that pertain to the conversation log settings for the bot's TestBotAlias", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TextLogSetting" - }, - "maxItems": 1, - "type": "array", - "uniqueItems": true - }, - "Utterance": { - "description": "The sample utterance that Amazon Lex uses to build its machine-learning model to recognize intents/slots.", - "type": "string" - }, - "VoiceSettings": { - "additionalProperties": false, - "description": "Settings for using an Amazon Polly voice to communicate with a user.", - "properties": { - "Engine": { - "description": "Indicates the type of Amazon Polly voice that Amazon Lex should use for voice interaction with the user. For more information, see the engine parameter of the SynthesizeSpeech operation in the Amazon Polly developer guide.", - "enum": [ - "standard", - "neural" - ], - "type": "string" - }, - "VoiceId": { - "description": "The Amazon Polly voice ID that Amazon Lex uses for voice interaction with the user.", - "type": "string" - } - }, - "required": [ - "VoiceId" - ], - "type": "object" - }, - "WaitAndContinueSpecification": { - "additionalProperties": false, - "description": "The prompts that Amazon Lex uses while a bot is waiting for customer input.", - "properties": { - "ContinueResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "The response that Amazon Lex sends to indicate that the bot is ready to continue the conversation." - }, - "IsActive": { - "description": "Specifies whether the bot will wait for a user to respond.", - "type": "boolean" - }, - "StillWaitingResponse": { - "$ref": "#/definitions/StillWaitingResponseSpecification", - "description": "The response that Amazon Lex sends periodically to the user to indicate that the bot is still waiting for input from the user." - }, - "WaitingResponse": { - "$ref": "#/definitions/ResponseSpecification", - "description": "The response that Amazon Lex sends to indicate that the bot is waiting for the conversation to continue." - } - }, - "required": [ - "WaitingResponse", - "ContinueResponse" - ], - "type": "object" - } - }, - "description": "Amazon Lex conversational bot performing automated tasks such as ordering a pizza, booking a hotel, and so on.", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "lex:DescribeBot", - "lex:CreateUploadUrl", - "lex:StartImport", - "lex:DescribeImport", - "lex:ListTagsForResource", - "lex:TagResource", - "lex:CreateBot", - "lex:CreateBotLocale", - "lex:CreateIntent", - "lex:CreateSlot", - "lex:CreateSlotType", - "lex:UpdateBot", - "lex:UpdateBotLocale", - "lex:UpdateIntent", - "lex:UpdateSlot", - "lex:UpdateSlotType", - "lex:DeleteBotLocale", - "lex:DeleteIntent", - "lex:DeleteSlot", - "lex:DeleteSlotType", - "lex:DescribeBotLocale", - "lex:BuildBotLocale", - "lex:ListBots", - "lex:ListBotLocales", - "lex:CreateCustomVocabulary", - "lex:UpdateCustomVocabulary", - "lex:DeleteCustomVocabulary", - "s3:GetObject", - "lex:UpdateBotAlias" - ] - }, - "delete": { - "permissions": [ - "lex:DeleteBot", - "lex:DescribeBot", - "lex:DeleteBotLocale", - "lex:DeleteIntent", - "lex:DeleteSlotType", - "lex:DeleteSlot", - "lex:DeleteBotVersion", - "lex:DeleteBotChannel", - "lex:DeleteBotAlias", - "lex:DeleteCustomVocabulary" - ] - }, - "list": { - "permissions": [ - "lex:ListBots" - ] - }, - "read": { - "permissions": [ - "lex:DescribeBot", - "lex:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "lex:DescribeBot", - "lex:CreateUploadUrl", - "lex:StartImport", - "lex:DescribeImport", - "lex:ListTagsForResource", - "lex:TagResource", - "lex:UntagResource", - "lex:CreateBot", - "lex:CreateBotLocale", - "lex:CreateIntent", - "lex:CreateSlot", - "lex:CreateSlotType", - "lex:UpdateBot", - "lex:UpdateBotLocale", - "lex:UpdateIntent", - "lex:UpdateSlot", - "lex:UpdateSlotType", - "lex:DeleteBotLocale", - "lex:DeleteIntent", - "lex:DeleteSlot", - "lex:DeleteSlotType", - "lex:DescribeBotLocale", - "lex:BuildBotLocale", - "lex:ListBots", - "lex:ListBotLocales", - "lex:CreateCustomVocabulary", - "lex:UpdateCustomVocabulary", - "lex:DeleteCustomVocabulary", - "s3:GetObject", - "lex:UpdateBotAlias" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/BotArn" - }, - "AutoBuildBotLocales": { - "description": "Specifies whether to build the bot locales after bot creation completes.", - "type": "boolean" - }, - "BotFileS3Location": { - "$ref": "#/definitions/S3Location" - }, - "BotLocales": { - "description": "List of bot locales", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/BotLocale" - }, - "type": "array", - "uniqueItems": true - }, - "BotTags": { - "description": "A list of tags to add to the bot, which can only be added at bot creation.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - }, - "DataPrivacy": { - "additionalProperties": false, - "description": "Data privacy setting of the Bot.", - "properties": { - "ChildDirected": { - "description": "", - "type": "boolean" - } - }, - "required": [ - "ChildDirected" - ], - "type": "object" - }, - "Description": { - "$ref": "#/definitions/Description" - }, - "Id": { - "$ref": "#/definitions/Id" - }, - "IdleSessionTTLInSeconds": { - "description": "IdleSessionTTLInSeconds of the resource", - "maximum": 86400, - "minimum": 60, - "type": "integer" - }, - "Name": { - "$ref": "#/definitions/Name" - }, - "RoleArn": { - "$ref": "#/definitions/RoleArn" - }, - "TestBotAliasSettings": { - "$ref": "#/definitions/TestBotAliasSettings" - }, - "TestBotAliasTags": { - "description": "A list of tags to add to the test alias for a bot, , which can only be added at bot/bot alias creation.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "Name", - "RoleArn", - "DataPrivacy", - "IdleSessionTTLInSeconds" - ], - "sourceUrl": "https://docs.aws.amazon.com/lexv2/latest/dg/build-create.html", - "taggable": true, - "typeName": "AWS::Lex::Bot", - "writeOnlyProperties": [ - "/properties/BotLocales", - "/properties/BotFileS3Location", - "/properties/AutoBuildBotLocales", - "/properties/BotTags", - "/properties/TestBotAliasTags" - ] -} +{ + "additionalProperties": false, + "definitions": { + "AdvancedRecognitionSetting": { + "additionalProperties": false, + "properties": { + "AudioRecognitionStrategy": { + "$ref": "#/definitions/AudioRecognitionStrategy" + } + }, + "type": "object" + }, + "AllowedInputTypes": { + "additionalProperties": false, + "properties": { + "AllowAudioInput": { + "type": "boolean" + }, + "AllowDTMFInput": { + "type": "boolean" + } + }, + "required": [ + "AllowAudioInput", + "AllowDTMFInput" + ], + "type": "object" + }, + "AttachmentTitle": { + "maxLength": 250, + "minLength": 1, + "type": "string" + }, + "AttachmentUrl": { + "maxLength": 250, + "minLength": 1, + "type": "string" + }, + "AudioAndDTMFInputSpecification": { + "additionalProperties": false, + "properties": { + "AudioSpecification": { + "$ref": "#/definitions/AudioSpecification" + }, + "DTMFSpecification": { + "$ref": "#/definitions/DTMFSpecification" + }, + "StartTimeoutMs": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "StartTimeoutMs" + ], + "type": "object" + }, + "AudioLogDestination": { + "additionalProperties": false, + "properties": { + "S3Bucket": { + "$ref": "#/definitions/S3BucketLogDestination" + } + }, + "required": [ + "S3Bucket" + ], + "type": "object" + }, + "AudioLogSetting": { + "additionalProperties": false, + "properties": { + "Destination": { + "$ref": "#/definitions/AudioLogDestination" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Destination", + "Enabled" + ], + "type": "object" + }, + "AudioLogSettings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AudioLogSetting" + }, + "maxItems": 1, + "type": "array", + "uniqueItems": true + }, + "AudioRecognitionStrategy": { + "enum": [ + "UseSlotValuesAsCustomVocabulary" + ], + "type": "string" + }, + "AudioSpecification": { + "additionalProperties": false, + "properties": { + "EndTimeoutMs": { + "minimum": 1, + "type": "integer" + }, + "MaxLengthMs": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "EndTimeoutMs", + "MaxLengthMs" + ], + "type": "object" + }, + "BedrockAgentIntentConfiguration": { + "additionalProperties": false, + "properties": { + "BedrockAgentConfiguration": { + "additionalProperties": false, + "properties": { + "BedrockAgentAliasId": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "BedrockAgentId": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "BedrockAgentIntentKnowledgeBaseConfiguration": { + "additionalProperties": false, + "properties": { + "BedrockKnowledgeBaseArn": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "BedrockModelConfiguration": { + "$ref": "#/definitions/BedrockModelSpecification" + } + }, + "required": [ + "BedrockKnowledgeBaseArn", + "BedrockModelConfiguration" + ], + "type": "object" + } + }, + "type": "object" + }, + "BedrockModelSpecification": { + "additionalProperties": false, + "properties": { + "BedrockGuardrailConfiguration": { + "additionalProperties": false, + "properties": { + "BedrockGuardrailIdentifier": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "BedrockGuardrailVersion": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "BedrockModelCustomPrompt": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "BedrockTraceStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "ModelArn": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ModelArn" + ], + "type": "object" + }, + "BotAliasLocaleSettings": { + "additionalProperties": false, + "properties": { + "CodeHookSpecification": { + "$ref": "#/definitions/CodeHookSpecification" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "BotAliasLocaleSettingsItem": { + "additionalProperties": false, + "properties": { + "BotAliasLocaleSetting": { + "$ref": "#/definitions/BotAliasLocaleSettings" + }, + "LocaleId": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "LocaleId", + "BotAliasLocaleSetting" + ], + "type": "object" + }, + "BotAliasLocaleSettingsList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/BotAliasLocaleSettingsItem" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "BotArn": { + "maxLength": 1011, + "minLength": 1, + "pattern": "^arn:aws[a-zA-Z-]*:lex:[a-z]+-[a-z]+-[0-9]:[0-9]{12}:bot/[0-9a-zA-Z]+$", + "type": "string" + }, + "BotLocale": { + "additionalProperties": false, + "properties": { + "CustomVocabulary": { + "$ref": "#/definitions/CustomVocabulary" + }, + "Description": { + "$ref": "#/definitions/Description" + }, + "Intents": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Intent" + }, + "maxItems": 1000, + "type": "array", + "uniqueItems": true + }, + "LocaleId": { + "$ref": "#/definitions/LocaleId" + }, + "NluConfidenceThreshold": { + "$ref": "#/definitions/ConfidenceThreshold" + }, + "SlotTypes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SlotType" + }, + "maxItems": 250, + "type": "array", + "uniqueItems": true + }, + "VoiceSettings": { + "$ref": "#/definitions/VoiceSettings" + } + }, + "required": [ + "LocaleId", + "NluConfidenceThreshold" + ], + "type": "object" + }, + "Button": { + "additionalProperties": false, + "properties": { + "Text": { + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 50, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Text", + "Value" + ], + "type": "object" + }, + "CloudWatchLogGroupLogDestination": { + "additionalProperties": false, + "properties": { + "CloudWatchLogGroupArn": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "LogPrefix": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "CloudWatchLogGroupArn", + "LogPrefix" + ], + "type": "object" + }, + "CodeHookSpecification": { + "additionalProperties": false, + "properties": { + "LambdaCodeHook": { + "$ref": "#/definitions/LambdaCodeHook" + } + }, + "required": [ + "LambdaCodeHook" + ], + "type": "object" + }, + "CompositeSlotTypeSetting": { + "additionalProperties": false, + "properties": { + "SubSlots": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/SubSlotTypeComposition" + }, + "maxItems": 6, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Condition": { + "additionalProperties": false, + "properties": { + "ExpressionString": { + "$ref": "#/definitions/ConditionExpression" + } + }, + "required": [ + "ExpressionString" + ], + "type": "object" + }, + "ConditionExpression": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Conditional": { + "additionalProperties": false, + "properties": { + "ConditionalBranches": { + "$ref": "#/definitions/ConditionalBranches" + }, + "IsActive": { + "type": "boolean" + } + }, + "required": [ + "IsActive", + "ConditionalBranches" + ], + "type": "object" + }, + "ConditionalBranch": { + "additionalProperties": false, + "properties": { + "Condition": { + "$ref": "#/definitions/Condition" + }, + "Name": { + "$ref": "#/definitions/Name" + }, + "NextStep": { + "$ref": "#/definitions/DialogState" + }, + "Response": { + "$ref": "#/definitions/ResponseSpecification" + } + }, + "required": [ + "Name", + "Condition", + "NextStep" + ], + "type": "object" + }, + "ConditionalBranches": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ConditionalBranch" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "ConditionalSpecification": { + "additionalProperties": false, + "properties": { + "ConditionalBranches": { + "$ref": "#/definitions/ConditionalBranches" + }, + "DefaultBranch": { + "$ref": "#/definitions/DefaultConditionalBranch" + }, + "IsActive": { + "type": "boolean" + } + }, + "required": [ + "IsActive", + "ConditionalBranches", + "DefaultBranch" + ], + "type": "object" + }, + "ConfidenceThreshold": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "ContextTimeToLiveInSeconds": { + "maximum": 86400, + "minimum": 5, + "type": "integer" + }, + "ContextTurnsToLive": { + "maximum": 20, + "minimum": 1, + "type": "integer" + }, + "ConversationLogSettings": { + "additionalProperties": false, + "properties": { + "AudioLogSettings": { + "$ref": "#/definitions/AudioLogSettings" + }, + "TextLogSettings": { + "$ref": "#/definitions/TextLogSettings" + } + }, + "type": "object" + }, + "CustomPayload": { + "additionalProperties": false, + "properties": { + "Value": { + "maxLength": 1000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "CustomVocabulary": { + "additionalProperties": false, + "properties": { + "CustomVocabularyItems": { + "$ref": "#/definitions/CustomVocabularyItems" + } + }, + "required": [ + "CustomVocabularyItems" + ], + "type": "object" + }, + "CustomVocabularyItem": { + "additionalProperties": false, + "properties": { + "DisplayAs": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Phrase": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Weight": { + "maximum": 3, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "Phrase" + ], + "type": "object" + }, + "CustomVocabularyItems": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomVocabularyItem" + }, + "maxItems": 500, + "type": "array", + "uniqueItems": true + }, + "DTMFSpecification": { + "additionalProperties": false, + "properties": { + "DeletionCharacter": { + "pattern": "^[A-D0-9#*]{1}$", + "type": "string" + }, + "EndCharacter": { + "pattern": "^[A-D0-9#*]{1}$", + "type": "string" + }, + "EndTimeoutMs": { + "minimum": 1, + "type": "integer" + }, + "MaxLength": { + "maximum": 1024, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "DeletionCharacter", + "EndCharacter", + "EndTimeoutMs", + "MaxLength" + ], + "type": "object" + }, + "DataPrivacy": { + "additionalProperties": false, + "properties": { + "ChildDirected": { + "type": "boolean" + } + }, + "required": [ + "ChildDirected" + ], + "type": "object" + }, + "DefaultConditionalBranch": { + "additionalProperties": false, + "properties": { + "NextStep": { + "$ref": "#/definitions/DialogState" + }, + "Response": { + "$ref": "#/definitions/ResponseSpecification" + } + }, + "type": "object" + }, + "Description": { + "description": "A description of the resource", + "maxLength": 200, + "type": "string" + }, + "DialogAction": { + "additionalProperties": false, + "properties": { + "SlotToElicit": { + "$ref": "#/definitions/Name" + }, + "SuppressNextMessage": { + "type": "boolean" + }, + "Type": { + "$ref": "#/definitions/DialogActionType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "DialogActionType": { + "enum": [ + "CloseIntent", + "ConfirmIntent", + "ElicitIntent", + "ElicitSlot", + "StartIntent", + "FulfillIntent", + "EndConversation", + "EvaluateConditional", + "InvokeDialogCodeHook" + ], + "type": "string" + }, + "DialogCodeHookInvocationSetting": { + "additionalProperties": false, + "properties": { + "EnableCodeHookInvocation": { + "type": "boolean" + }, + "InvocationLabel": { + "$ref": "#/definitions/Name" + }, + "IsActive": { + "type": "boolean" + }, + "PostCodeHookSpecification": { + "$ref": "#/definitions/PostDialogCodeHookInvocationSpecification" + } + }, + "required": [ + "IsActive", + "EnableCodeHookInvocation", + "PostCodeHookSpecification" + ], + "type": "object" + }, + "DialogCodeHookSetting": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "DialogState": { + "additionalProperties": false, + "properties": { + "DialogAction": { + "$ref": "#/definitions/DialogAction" + }, + "Intent": { + "$ref": "#/definitions/IntentOverride" + }, + "SessionAttributes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SessionAttribute" + }, + "type": "array" + } + }, + "type": "object" + }, + "ElicitationCodeHookInvocationSetting": { + "additionalProperties": false, + "properties": { + "EnableCodeHookInvocation": { + "type": "boolean" + }, + "InvocationLabel": { + "$ref": "#/definitions/Name" + } + }, + "required": [ + "EnableCodeHookInvocation" + ], + "type": "object" + }, + "ExternalSourceSetting": { + "additionalProperties": false, + "properties": { + "GrammarSlotTypeSetting": { + "$ref": "#/definitions/GrammarSlotTypeSetting" + } + }, + "type": "object" + }, + "FulfillmentCodeHookSetting": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "FulfillmentUpdatesSpecification": { + "$ref": "#/definitions/FulfillmentUpdatesSpecification" + }, + "IsActive": { + "type": "boolean" + }, + "PostFulfillmentStatusSpecification": { + "$ref": "#/definitions/PostFulfillmentStatusSpecification" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "FulfillmentStartResponseSpecification": { + "additionalProperties": false, + "properties": { + "AllowInterrupt": { + "type": "boolean" + }, + "DelayInSeconds": { + "maximum": 900, + "minimum": 1, + "type": "integer" + }, + "MessageGroups": { + "$ref": "#/definitions/MessageGroupsList" + } + }, + "required": [ + "DelayInSeconds", + "MessageGroups" + ], + "type": "object" + }, + "FulfillmentUpdateResponseSpecification": { + "additionalProperties": false, + "properties": { + "AllowInterrupt": { + "type": "boolean" + }, + "FrequencyInSeconds": { + "maximum": 900, + "minimum": 1, + "type": "integer" + }, + "MessageGroups": { + "$ref": "#/definitions/MessageGroupsList" + } + }, + "required": [ + "FrequencyInSeconds", + "MessageGroups" + ], + "type": "object" + }, + "FulfillmentUpdatesSpecification": { + "additionalProperties": false, + "properties": { + "Active": { + "type": "boolean" + }, + "StartResponse": { + "$ref": "#/definitions/FulfillmentStartResponseSpecification" + }, + "TimeoutInSeconds": { + "maximum": 900, + "minimum": 1, + "type": "integer" + }, + "UpdateResponse": { + "$ref": "#/definitions/FulfillmentUpdateResponseSpecification" + } + }, + "required": [ + "Active" + ], + "type": "object" + }, + "GrammarSlotTypeSetting": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/GrammarSlotTypeSource" + } + }, + "type": "object" + }, + "GrammarSlotTypeSource": { + "additionalProperties": false, + "properties": { + "KmsKeyArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w\\-]+:kms:[\\w\\-]+:[\\d]{12}:(?:key\\/[\\w\\-]+|alias\\/[a-zA-Z0-9:\\/_\\-]{1,256})$", + "type": "string" + }, + "S3BucketName": { + "$ref": "#/definitions/S3BucketName" + }, + "S3ObjectKey": { + "$ref": "#/definitions/S3ObjectKey" + } + }, + "required": [ + "S3BucketName", + "S3ObjectKey" + ], + "type": "object" + }, + "Id": { + "maxLength": 10, + "minLength": 10, + "pattern": "^[0-9a-zA-Z]+$", + "type": "string" + }, + "IdleSessionTTLInSeconds": { + "maximum": 86400, + "minimum": 60, + "type": "integer" + }, + "ImageResponseCard": { + "additionalProperties": false, + "properties": { + "Buttons": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Button" + }, + "maxItems": 5, + "type": "array" + }, + "ImageUrl": { + "$ref": "#/definitions/AttachmentUrl" + }, + "Subtitle": { + "$ref": "#/definitions/AttachmentTitle" + }, + "Title": { + "$ref": "#/definitions/AttachmentTitle" + } + }, + "required": [ + "Title" + ], + "type": "object" + }, + "InitialResponseSetting": { + "additionalProperties": false, + "properties": { + "CodeHook": { + "$ref": "#/definitions/DialogCodeHookInvocationSetting" + }, + "Conditional": { + "$ref": "#/definitions/ConditionalSpecification" + }, + "InitialResponse": { + "$ref": "#/definitions/ResponseSpecification" + }, + "NextStep": { + "$ref": "#/definitions/DialogState" + } + }, + "type": "object" + }, + "InputContext": { + "additionalProperties": false, + "properties": { + "Name": { + "$ref": "#/definitions/Name" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "InputContextsList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InputContext" + }, + "maxItems": 5, + "type": "array" + }, + "Intent": { + "additionalProperties": false, + "properties": { + "BedrockAgentIntentConfiguration": { + "$ref": "#/definitions/BedrockAgentIntentConfiguration" + }, + "Description": { + "$ref": "#/definitions/Description", + "description": "Description of thr intent." + }, + "DialogCodeHook": { + "$ref": "#/definitions/DialogCodeHookSetting" + }, + "FulfillmentCodeHook": { + "$ref": "#/definitions/FulfillmentCodeHookSetting" + }, + "InitialResponseSetting": { + "$ref": "#/definitions/InitialResponseSetting" + }, + "InputContexts": { + "$ref": "#/definitions/InputContextsList" + }, + "IntentClosingSetting": { + "$ref": "#/definitions/IntentClosingSetting" + }, + "IntentConfirmationSetting": { + "$ref": "#/definitions/IntentConfirmationSetting" + }, + "KendraConfiguration": { + "$ref": "#/definitions/KendraConfiguration" + }, + "Name": { + "$ref": "#/definitions/Name" + }, + "OutputContexts": { + "$ref": "#/definitions/OutputContextsList" + }, + "ParentIntentSignature": { + "$ref": "#/definitions/ParentIntentSignature" + }, + "QInConnectIntentConfiguration": { + "$ref": "#/definitions/QInConnectIntentConfiguration" + }, + "QnAIntentConfiguration": { + "$ref": "#/definitions/QnAIntentConfiguration" + }, + "SampleUtterances": { + "$ref": "#/definitions/SampleUtterancesList" + }, + "SlotPriorities": { + "$ref": "#/definitions/SlotPrioritiesList" + }, + "Slots": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Slot" + }, + "maxItems": 100, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "IntentClosingSetting": { + "additionalProperties": false, + "properties": { + "ClosingResponse": { + "$ref": "#/definitions/ResponseSpecification" + }, + "Conditional": { + "$ref": "#/definitions/ConditionalSpecification" + }, + "IsActive": { + "type": "boolean" + }, + "NextStep": { + "$ref": "#/definitions/DialogState" + } + }, + "type": "object" + }, + "IntentConfirmationSetting": { + "additionalProperties": false, + "properties": { + "CodeHook": { + "$ref": "#/definitions/DialogCodeHookInvocationSetting" + }, + "ConfirmationConditional": { + "$ref": "#/definitions/ConditionalSpecification" + }, + "ConfirmationNextStep": { + "$ref": "#/definitions/DialogState" + }, + "ConfirmationResponse": { + "$ref": "#/definitions/ResponseSpecification" + }, + "DeclinationConditional": { + "$ref": "#/definitions/ConditionalSpecification" + }, + "DeclinationNextStep": { + "$ref": "#/definitions/DialogState" + }, + "DeclinationResponse": { + "$ref": "#/definitions/ResponseSpecification" + }, + "ElicitationCodeHook": { + "$ref": "#/definitions/ElicitationCodeHookInvocationSetting" + }, + "FailureConditional": { + "$ref": "#/definitions/ConditionalSpecification" + }, + "FailureNextStep": { + "$ref": "#/definitions/DialogState" + }, + "FailureResponse": { + "$ref": "#/definitions/ResponseSpecification" + }, + "IsActive": { + "type": "boolean" + }, + "PromptSpecification": { + "$ref": "#/definitions/PromptSpecification" + } + }, + "required": [ + "PromptSpecification" + ], + "type": "object" + }, + "IntentOverride": { + "additionalProperties": false, + "properties": { + "Name": { + "$ref": "#/definitions/Name" + }, + "Slots": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SlotValueOverrideMap" + }, + "type": "array" + } + }, + "type": "object" + }, + "KendraConfiguration": { + "additionalProperties": false, + "properties": { + "KendraIndex": { + "$ref": "#/definitions/KendraIndexArn" + }, + "QueryFilterString": { + "$ref": "#/definitions/QueryFilterString" + }, + "QueryFilterStringEnabled": { + "type": "boolean" + } + }, + "required": [ + "KendraIndex" + ], + "type": "object" + }, + "KendraIndexArn": { + "maxLength": 2048, + "minLength": 32, + "pattern": "^arn:aws[a-zA-Z-]*:kendra:[a-z]+-[a-z]+-[0-9]:[0-9]{12}:index/[a-zA-Z0-9][a-zA-Z0-9_-]*$", + "type": "string" + }, + "LambdaCodeHook": { + "additionalProperties": false, + "properties": { + "CodeHookInterfaceVersion": { + "maxLength": 5, + "minLength": 1, + "type": "string" + }, + "LambdaArn": { + "maxLength": 2048, + "minLength": 20, + "type": "string" + } + }, + "required": [ + "CodeHookInterfaceVersion", + "LambdaArn" + ], + "type": "object" + }, + "LocaleId": { + "type": "string" + }, + "Message": { + "additionalProperties": false, + "properties": { + "CustomPayload": { + "$ref": "#/definitions/CustomPayload" + }, + "ImageResponseCard": { + "$ref": "#/definitions/ImageResponseCard" + }, + "PlainTextMessage": { + "$ref": "#/definitions/PlainTextMessage" + }, + "SSMLMessage": { + "$ref": "#/definitions/SSMLMessage" + } + }, + "required": [], + "type": "object" + }, + "MessageGroup": { + "additionalProperties": false, + "properties": { + "Message": { + "$ref": "#/definitions/Message" + }, + "Variations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Message" + }, + "maxItems": 2, + "type": "array" + } + }, + "required": [ + "Message" + ], + "type": "object" + }, + "MessageGroupsList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MessageGroup" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "MessageSelectionStrategy": { + "enum": [ + "Random", + "Ordered" + ], + "type": "string" + }, + "MultipleValuesSetting": { + "additionalProperties": false, + "properties": { + "AllowMultipleValues": { + "type": "boolean" + } + }, + "required": [], + "type": "object" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^([0-9a-zA-Z][_-]?)+$", + "type": "string" + }, + "ObfuscationSetting": { + "additionalProperties": false, + "properties": { + "ObfuscationSettingType": { + "enum": [ + "None", + "DefaultObfuscation" + ], + "type": "string" + } + }, + "required": [ + "ObfuscationSettingType" + ], + "type": "object" + }, + "OutputContext": { + "additionalProperties": false, + "properties": { + "Name": { + "$ref": "#/definitions/Name" + }, + "TimeToLiveInSeconds": { + "$ref": "#/definitions/ContextTimeToLiveInSeconds" + }, + "TurnsToLive": { + "$ref": "#/definitions/ContextTurnsToLive" + } + }, + "required": [ + "Name", + "TimeToLiveInSeconds", + "TurnsToLive" + ], + "type": "object" + }, + "OutputContextsList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/OutputContext" + }, + "maxItems": 10, + "type": "array" + }, + "ParentIntentSignature": { + "type": "string" + }, + "ParentSlotTypeSignature": { + "type": "string" + }, + "PlainTextMessage": { + "additionalProperties": false, + "properties": { + "Value": { + "maxLength": 1000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "PostDialogCodeHookInvocationSpecification": { + "additionalProperties": false, + "properties": { + "FailureConditional": { + "$ref": "#/definitions/ConditionalSpecification" + }, + "FailureNextStep": { + "$ref": "#/definitions/DialogState" + }, + "FailureResponse": { + "$ref": "#/definitions/ResponseSpecification" + }, + "SuccessConditional": { + "$ref": "#/definitions/ConditionalSpecification" + }, + "SuccessNextStep": { + "$ref": "#/definitions/DialogState" + }, + "SuccessResponse": { + "$ref": "#/definitions/ResponseSpecification" + }, + "TimeoutConditional": { + "$ref": "#/definitions/ConditionalSpecification" + }, + "TimeoutNextStep": { + "$ref": "#/definitions/DialogState" + }, + "TimeoutResponse": { + "$ref": "#/definitions/ResponseSpecification" + } + }, + "type": "object" + }, + "PostFulfillmentStatusSpecification": { + "additionalProperties": false, + "properties": { + "FailureConditional": { + "$ref": "#/definitions/ConditionalSpecification" + }, + "FailureNextStep": { + "$ref": "#/definitions/DialogState" + }, + "FailureResponse": { + "$ref": "#/definitions/ResponseSpecification" + }, + "SuccessConditional": { + "$ref": "#/definitions/ConditionalSpecification" + }, + "SuccessNextStep": { + "$ref": "#/definitions/DialogState" + }, + "SuccessResponse": { + "$ref": "#/definitions/ResponseSpecification" + }, + "TimeoutConditional": { + "$ref": "#/definitions/ConditionalSpecification" + }, + "TimeoutNextStep": { + "$ref": "#/definitions/DialogState" + }, + "TimeoutResponse": { + "$ref": "#/definitions/ResponseSpecification" + } + }, + "required": [], + "type": "object" + }, + "PriorityValue": { + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "PromptAttemptSpecification": { + "additionalProperties": false, + "properties": { + "AllowInterrupt": { + "type": "boolean" + }, + "AllowedInputTypes": { + "$ref": "#/definitions/AllowedInputTypes" + }, + "AudioAndDTMFInputSpecification": { + "$ref": "#/definitions/AudioAndDTMFInputSpecification" + }, + "TextInputSpecification": { + "$ref": "#/definitions/TextInputSpecification" + } + }, + "required": [ + "AllowedInputTypes" + ], + "type": "object" + }, + "PromptMaxRetries": { + "maximum": 5, + "minimum": 0, + "type": "integer" + }, + "PromptSpecification": { + "additionalProperties": false, + "properties": { + "AllowInterrupt": { + "type": "boolean" + }, + "MaxRetries": { + "$ref": "#/definitions/PromptMaxRetries" + }, + "MessageGroupsList": { + "$ref": "#/definitions/MessageGroupsList" + }, + "MessageSelectionStrategy": { + "$ref": "#/definitions/MessageSelectionStrategy" + }, + "PromptAttemptsSpecification": { + "additionalProperties": false, + "patternProperties": { + "^(Initial|Retry1|Retry2|Retry3|Retry4|Retry5)$": { + "$ref": "#/definitions/PromptAttemptSpecification" + } + }, + "type": "object" + } + }, + "required": [ + "MessageGroupsList", + "MaxRetries" + ], + "type": "object" + }, + "QInConnectIntentConfiguration": { + "additionalProperties": false, + "properties": { + "QInConnectAssistantConfiguration": { + "additionalProperties": false, + "properties": { + "AssistantArn": { + "maxLength": 200, + "minLength": 1, + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$", + "type": "string" + } + }, + "required": [ + "AssistantArn" + ], + "type": "object" + } + }, + "type": "object" + }, + "QnAIntentConfiguration": { + "additionalProperties": false, + "properties": { + "BedrockModelConfiguration": { + "$ref": "#/definitions/BedrockModelSpecification" + }, + "DataSourceConfiguration": { + "additionalProperties": false, + "properties": { + "BedrockKnowledgeStoreConfiguration": { + "additionalProperties": false, + "properties": { + "BKBExactResponseFields": { + "additionalProperties": false, + "properties": { + "AnswerField": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "BedrockKnowledgeBaseArn": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "ExactResponse": { + "type": "boolean" + } + }, + "type": "object" + }, + "KendraConfiguration": { + "$ref": "#/definitions/QnAKendraConfiguration" + }, + "OpensearchConfiguration": { + "additionalProperties": false, + "properties": { + "DomainEndpoint": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "ExactResponse": { + "type": "boolean" + }, + "ExactResponseFields": { + "additionalProperties": false, + "properties": { + "AnswerField": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "QuestionField": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "IncludeFields": { + "insertionOrder": false, + "items": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "type": "array" + }, + "IndexName": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "required": [ + "DataSourceConfiguration", + "BedrockModelConfiguration" + ], + "type": "object" + }, + "QnAKendraConfiguration": { + "additionalProperties": false, + "properties": { + "ExactResponse": { + "type": "boolean" + }, + "KendraIndex": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "QueryFilterString": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "QueryFilterStringEnabled": { + "type": "boolean" + } + }, + "required": [ + "KendraIndex", + "QueryFilterStringEnabled", + "ExactResponse" + ], + "type": "object" + }, + "QueryFilterString": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "ReplicaRegion": { + "description": "The secondary region that will be used in the replication of the source bot.", + "maxLength": 25, + "minLength": 2, + "type": "string" + }, + "Replication": { + "additionalProperties": false, + "properties": { + "ReplicaRegions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicaRegion" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "ReplicaRegions" + ], + "type": "object" + }, + "ResponseSpecification": { + "additionalProperties": false, + "properties": { + "AllowInterrupt": { + "type": "boolean" + }, + "MessageGroupsList": { + "$ref": "#/definitions/MessageGroupsList" + } + }, + "required": [ + "MessageGroupsList" + ], + "type": "object" + }, + "RoleArn": { + "maxLength": 2048, + "minLength": 32, + "pattern": "^arn:aws[a-zA-Z-]*:iam::[0-9]{12}:role/.*$", + "type": "string" + }, + "S3BucketLogDestination": { + "additionalProperties": false, + "properties": { + "KmsKeyArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w\\-]+:kms:[\\w\\-]+:[\\d]{12}:(?:key\\/[\\w\\-]+|alias\\/[a-zA-Z0-9:\\/_\\-]{1,256})$", + "type": "string" + }, + "LogPrefix": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "S3BucketArn": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:[\\w\\-]+:s3:::[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", + "type": "string" + } + }, + "required": [ + "LogPrefix", + "S3BucketArn" + ], + "type": "object" + }, + "S3BucketName": { + "maxLength": 63, + "minLength": 3, + "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", + "type": "string" + }, + "S3Location": { + "additionalProperties": false, + "properties": { + "S3Bucket": { + "$ref": "#/definitions/S3BucketName" + }, + "S3ObjectKey": { + "$ref": "#/definitions/S3ObjectKey" + }, + "S3ObjectVersion": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "S3Bucket", + "S3ObjectKey" + ], + "type": "object" + }, + "S3ObjectKey": { + "maxLength": 1024, + "minLength": 1, + "pattern": "[\\.\\-\\!\\*\\_\\'\\(\\)a-zA-Z0-9][\\.\\-\\!\\*\\_\\'\\(\\)\\/a-zA-Z0-9]*$", + "type": "string" + }, + "SSMLMessage": { + "additionalProperties": false, + "properties": { + "Value": { + "maxLength": 1000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "SampleUtterance": { + "additionalProperties": false, + "properties": { + "Utterance": { + "$ref": "#/definitions/Utterance" + } + }, + "required": [ + "Utterance" + ], + "type": "object" + }, + "SampleUtterancesList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SampleUtterance" + }, + "type": "array" + }, + "SampleValue": { + "additionalProperties": false, + "properties": { + "Value": { + "maxLength": 140, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "SessionAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "Slot": { + "additionalProperties": false, + "properties": { + "Description": { + "$ref": "#/definitions/Description" + }, + "MultipleValuesSetting": { + "$ref": "#/definitions/MultipleValuesSetting" + }, + "Name": { + "$ref": "#/definitions/Name" + }, + "ObfuscationSetting": { + "$ref": "#/definitions/ObfuscationSetting" + }, + "SlotTypeName": { + "$ref": "#/definitions/SlotTypeName" + }, + "ValueElicitationSetting": { + "$ref": "#/definitions/SlotValueElicitationSetting" + } + }, + "required": [ + "Name", + "SlotTypeName", + "ValueElicitationSetting" + ], + "type": "object" + }, + "SlotCaptureSetting": { + "additionalProperties": false, + "properties": { + "CaptureConditional": { + "$ref": "#/definitions/ConditionalSpecification" + }, + "CaptureNextStep": { + "$ref": "#/definitions/DialogState" + }, + "CaptureResponse": { + "$ref": "#/definitions/ResponseSpecification" + }, + "CodeHook": { + "$ref": "#/definitions/DialogCodeHookInvocationSetting" + }, + "ElicitationCodeHook": { + "$ref": "#/definitions/ElicitationCodeHookInvocationSetting" + }, + "FailureConditional": { + "$ref": "#/definitions/ConditionalSpecification" + }, + "FailureNextStep": { + "$ref": "#/definitions/DialogState" + }, + "FailureResponse": { + "$ref": "#/definitions/ResponseSpecification" + } + }, + "type": "object" + }, + "SlotConstraint": { + "enum": [ + "Required", + "Optional" + ], + "type": "string" + }, + "SlotDefaultValue": { + "additionalProperties": false, + "properties": { + "DefaultValue": { + "maxLength": 202, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DefaultValue" + ], + "type": "object" + }, + "SlotDefaultValueSpecification": { + "additionalProperties": false, + "properties": { + "DefaultValueList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SlotDefaultValue" + }, + "maxItems": 10, + "type": "array" + } + }, + "required": [ + "DefaultValueList" + ], + "type": "object" + }, + "SlotPrioritiesList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SlotPriority" + }, + "type": "array" + }, + "SlotPriority": { + "additionalProperties": false, + "properties": { + "Priority": { + "$ref": "#/definitions/PriorityValue" + }, + "SlotName": { + "$ref": "#/definitions/Name" + } + }, + "required": [ + "SlotName", + "Priority" + ], + "type": "object" + }, + "SlotShape": { + "enum": [ + "Scalar", + "List" + ], + "type": "string" + }, + "SlotType": { + "additionalProperties": false, + "properties": { + "CompositeSlotTypeSetting": { + "$ref": "#/definitions/CompositeSlotTypeSetting" + }, + "Description": { + "$ref": "#/definitions/Description" + }, + "ExternalSourceSetting": { + "$ref": "#/definitions/ExternalSourceSetting" + }, + "Name": { + "$ref": "#/definitions/Name" + }, + "ParentSlotTypeSignature": { + "$ref": "#/definitions/ParentSlotTypeSignature" + }, + "SlotTypeValues": { + "$ref": "#/definitions/SlotTypeValues" + }, + "ValueSelectionSetting": { + "$ref": "#/definitions/SlotValueSelectionSetting" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "SlotTypeName": { + "type": "string" + }, + "SlotTypeValue": { + "additionalProperties": false, + "properties": { + "SampleValue": { + "$ref": "#/definitions/SampleValue" + }, + "Synonyms": { + "$ref": "#/definitions/SynonymList" + } + }, + "required": [ + "SampleValue" + ], + "type": "object" + }, + "SlotTypeValues": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SlotTypeValue" + }, + "maxItems": 10000, + "type": "array" + }, + "SlotValue": { + "additionalProperties": false, + "properties": { + "InterpretedValue": { + "maxLength": 202, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SlotValueElicitationSetting": { + "additionalProperties": false, + "properties": { + "DefaultValueSpecification": { + "$ref": "#/definitions/SlotDefaultValueSpecification" + }, + "PromptSpecification": { + "$ref": "#/definitions/PromptSpecification" + }, + "SampleUtterances": { + "$ref": "#/definitions/SampleUtterancesList" + }, + "SlotCaptureSetting": { + "$ref": "#/definitions/SlotCaptureSetting" + }, + "SlotConstraint": { + "$ref": "#/definitions/SlotConstraint" + }, + "WaitAndContinueSpecification": { + "$ref": "#/definitions/WaitAndContinueSpecification" + } + }, + "required": [ + "SlotConstraint" + ], + "type": "object" + }, + "SlotValueOverride": { + "additionalProperties": false, + "properties": { + "Shape": { + "$ref": "#/definitions/SlotShape" + }, + "Value": { + "$ref": "#/definitions/SlotValue" + }, + "Values": { + "$ref": "#/definitions/SlotValues" + } + }, + "type": "object" + }, + "SlotValueOverrideMap": { + "additionalProperties": false, + "properties": { + "SlotName": { + "$ref": "#/definitions/Name" + }, + "SlotValueOverride": { + "$ref": "#/definitions/SlotValueOverride" + } + }, + "type": "object" + }, + "SlotValueRegexFilter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Pattern" + ], + "type": "object" + }, + "SlotValueResolutionStrategy": { + "enum": [ + "ORIGINAL_VALUE", + "TOP_RESOLUTION", + "CONCATENATION" + ], + "type": "string" + }, + "SlotValueSelectionSetting": { + "additionalProperties": false, + "properties": { + "AdvancedRecognitionSetting": { + "$ref": "#/definitions/AdvancedRecognitionSetting" + }, + "RegexFilter": { + "$ref": "#/definitions/SlotValueRegexFilter" + }, + "ResolutionStrategy": { + "$ref": "#/definitions/SlotValueResolutionStrategy" + } + }, + "required": [ + "ResolutionStrategy" + ], + "type": "object" + }, + "SlotValues": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SlotValueOverride" + }, + "type": "array" + }, + "StillWaitingResponseFrequency": { + "maximum": 300, + "minimum": 1, + "type": "integer" + }, + "StillWaitingResponseSpecification": { + "additionalProperties": false, + "properties": { + "AllowInterrupt": { + "type": "boolean" + }, + "FrequencyInSeconds": { + "$ref": "#/definitions/StillWaitingResponseFrequency" + }, + "MessageGroupsList": { + "$ref": "#/definitions/MessageGroupsList" + }, + "TimeoutInSeconds": { + "$ref": "#/definitions/StillWaitingResponseTimeout" + } + }, + "required": [ + "MessageGroupsList", + "FrequencyInSeconds", + "TimeoutInSeconds" + ], + "type": "object" + }, + "StillWaitingResponseTimeout": { + "maximum": 900, + "minimum": 1, + "type": "integer" + }, + "SubSlotTypeComposition": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "SlotTypeId": { + "maxLength": 25, + "minLength": 1, + "pattern": "^((AMAZON\\.)[a-zA-Z_]+?|[0-9a-zA-Z]+)$", + "type": "string" + } + }, + "required": [ + "Name", + "SlotTypeId" + ], + "type": "object" + }, + "SynonymList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SampleValue" + }, + "maxItems": 10000, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TestBotAliasSettings": { + "additionalProperties": false, + "properties": { + "BotAliasLocaleSettings": { + "$ref": "#/definitions/BotAliasLocaleSettingsList" + }, + "ConversationLogSettings": { + "$ref": "#/definitions/ConversationLogSettings" + }, + "Description": { + "$ref": "#/definitions/Description" + }, + "SentimentAnalysisSettings": { + "additionalProperties": false, + "properties": { + "DetectSentiment": { + "type": "boolean" + } + }, + "required": [ + "DetectSentiment" + ], + "type": "object" + } + }, + "type": "object" + }, + "TextInputSpecification": { + "additionalProperties": false, + "properties": { + "StartTimeoutMs": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "StartTimeoutMs" + ], + "type": "object" + }, + "TextLogDestination": { + "additionalProperties": false, + "properties": { + "CloudWatch": { + "$ref": "#/definitions/CloudWatchLogGroupLogDestination" + } + }, + "required": [ + "CloudWatch" + ], + "type": "object" + }, + "TextLogSetting": { + "additionalProperties": false, + "properties": { + "Destination": { + "$ref": "#/definitions/TextLogDestination" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Destination", + "Enabled" + ], + "type": "object" + }, + "TextLogSettings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TextLogSetting" + }, + "maxItems": 1, + "type": "array", + "uniqueItems": true + }, + "Utterance": { + "type": "string" + }, + "VoiceSettings": { + "additionalProperties": false, + "properties": { + "Engine": { + "enum": [ + "standard", + "neural", + "long-form", + "generative" + ], + "type": "string" + }, + "VoiceId": { + "type": "string" + } + }, + "required": [ + "VoiceId" + ], + "type": "object" + }, + "WaitAndContinueSpecification": { + "additionalProperties": false, + "properties": { + "ContinueResponse": { + "$ref": "#/definitions/ResponseSpecification" + }, + "IsActive": { + "type": "boolean" + }, + "StillWaitingResponse": { + "$ref": "#/definitions/StillWaitingResponseSpecification" + }, + "WaitingResponse": { + "$ref": "#/definitions/ResponseSpecification" + } + }, + "required": [ + "WaitingResponse", + "ContinueResponse" + ], + "type": "object" + } + }, + "description": "Amazon Lex conversational bot performing automated tasks such as ordering a pizza, booking a hotel, and so on.", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "lex:DescribeBot", + "lex:CreateUploadUrl", + "lex:StartImport", + "lex:DescribeImport", + "lex:ListTagsForResource", + "lex:TagResource", + "lex:CreateBot", + "lex:CreateBotLocale", + "lex:CreateIntent", + "lex:CreateSlot", + "lex:CreateSlotType", + "lex:UpdateBot", + "lex:UpdateBotLocale", + "lex:UpdateIntent", + "lex:UpdateSlot", + "lex:UpdateSlotType", + "lex:DeleteBotLocale", + "lex:DeleteIntent", + "lex:DeleteSlot", + "lex:DeleteSlotType", + "lex:DescribeBotLocale", + "lex:BuildBotLocale", + "lex:ListBots", + "lex:ListBotLocales", + "lex:CreateCustomVocabulary", + "lex:UpdateCustomVocabulary", + "lex:DeleteCustomVocabulary", + "s3:GetObject", + "lex:UpdateBotAlias", + "iam:CreateServiceLinkedRole", + "iam:GetRole", + "lex:CreateBotReplica", + "lex:DescribeBotReplica", + "lex:DeleteBotReplica" + ] + }, + "delete": { + "permissions": [ + "lex:DeleteBot", + "lex:DescribeBot", + "lex:DeleteBotLocale", + "lex:DeleteIntent", + "lex:DeleteSlotType", + "lex:DeleteSlot", + "lex:DeleteBotVersion", + "lex:DeleteBotChannel", + "lex:DeleteBotAlias", + "lex:DeleteCustomVocabulary", + "lex:DeleteBotReplica" + ] + }, + "list": { + "permissions": [ + "lex:ListBots", + "lex:ListBotReplicas" + ] + }, + "read": { + "permissions": [ + "lex:DescribeBot", + "lex:ListTagsForResource", + "lex:DescribeBotReplica" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "lex:DescribeBot", + "lex:CreateUploadUrl", + "lex:StartImport", + "lex:DescribeImport", + "lex:ListTagsForResource", + "lex:TagResource", + "lex:UntagResource", + "lex:CreateBot", + "lex:CreateBotLocale", + "lex:CreateIntent", + "lex:CreateSlot", + "lex:CreateSlotType", + "lex:UpdateBot", + "lex:UpdateBotLocale", + "lex:UpdateIntent", + "lex:UpdateSlot", + "lex:UpdateSlotType", + "lex:DeleteBotLocale", + "lex:DeleteIntent", + "lex:DeleteSlot", + "lex:DeleteSlotType", + "lex:DescribeBotLocale", + "lex:BuildBotLocale", + "lex:ListBots", + "lex:ListBotLocales", + "lex:CreateCustomVocabulary", + "lex:UpdateCustomVocabulary", + "lex:DeleteCustomVocabulary", + "s3:GetObject", + "lex:UpdateBotAlias", + "lex:CreateBotReplica", + "lex:DescribeBotReplica", + "lex:DeleteBotReplica" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/BotArn" + }, + "AutoBuildBotLocales": { + "type": "boolean" + }, + "BotFileS3Location": { + "$ref": "#/definitions/S3Location" + }, + "BotLocales": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/BotLocale" + }, + "type": "array", + "uniqueItems": true + }, + "BotTags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + }, + "DataPrivacy": { + "additionalProperties": false, + "properties": { + "ChildDirected": { + "type": "boolean" + } + }, + "required": [ + "ChildDirected" + ], + "type": "object" + }, + "Description": { + "$ref": "#/definitions/Description" + }, + "Id": { + "$ref": "#/definitions/Id" + }, + "IdleSessionTTLInSeconds": { + "maximum": 86400, + "minimum": 60, + "type": "integer" + }, + "Name": { + "$ref": "#/definitions/Name" + }, + "Replication": { + "$ref": "#/definitions/Replication" + }, + "RoleArn": { + "$ref": "#/definitions/RoleArn" + }, + "TestBotAliasSettings": { + "$ref": "#/definitions/TestBotAliasSettings" + }, + "TestBotAliasTags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Name", + "RoleArn", + "DataPrivacy", + "IdleSessionTTLInSeconds" + ], + "sourceUrl": "https://docs.aws.amazon.com/lexv2/latest/dg/build-create.html", + "taggable": true, + "typeName": "AWS::Lex::Bot", + "writeOnlyProperties": [ + "/properties/BotLocales", + "/properties/BotFileS3Location", + "/properties/AutoBuildBotLocales", + "/properties/BotTags", + "/properties/TestBotAliasTags", + "/properties/Replication" + ] +} diff --git a/src/schema/aws-lex-botalias.json b/src/schema/aws-lex-botalias.json index a869b0b2..366c8287 100644 --- a/src/schema/aws-lex-botalias.json +++ b/src/schema/aws-lex-botalias.json @@ -1,410 +1,410 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/BotId" - ], - "definitions": { - "Arn": { - "maxLength": 1000, - "type": "string" - }, - "AudioLogDestination": { - "additionalProperties": false, - "description": "The location of audio log files collected when conversation logging is enabled for a bot.", - "properties": { - "S3Bucket": { - "$ref": "#/definitions/S3BucketLogDestination" - } - }, - "required": [ - "S3Bucket" - ], - "type": "object" - }, - "AudioLogSetting": { - "additionalProperties": false, - "description": "Settings for logging audio of conversations between Amazon Lex and a user. You specify whether to log audio and the Amazon S3 bucket where the audio file is stored.", - "properties": { - "Destination": { - "$ref": "#/definitions/AudioLogDestination" - }, - "Enabled": { - "description": "", - "type": "boolean" - } - }, - "required": [ - "Destination", - "Enabled" - ], - "type": "object" - }, - "AudioLogSettings": { - "description": "List of audio log settings", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AudioLogSetting" - }, - "maxItems": 1, - "type": "array", - "uniqueItems": true - }, - "BotAliasLocaleSettings": { - "additionalProperties": false, - "description": "You can use this parameter to specify a specific Lambda function to run different functions in different locales.", - "properties": { - "CodeHookSpecification": { - "$ref": "#/definitions/CodeHookSpecification" - }, - "Enabled": { - "description": "Whether the Lambda code hook is enabled", - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "BotAliasLocaleSettingsItem": { - "additionalProperties": false, - "description": "A locale setting in alias", - "properties": { - "BotAliasLocaleSetting": { - "$ref": "#/definitions/BotAliasLocaleSettings" - }, - "LocaleId": { - "description": "A string used to identify the locale", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "LocaleId", - "BotAliasLocaleSetting" - ], - "type": "object" - }, - "BotAliasLocaleSettingsList": { - "description": "A list of bot alias locale settings to add to the bot alias.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/BotAliasLocaleSettingsItem" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "BotAliasStatus": { - "enum": [ - "Creating", - "Available", - "Deleting", - "Failed" - ], - "type": "string" - }, - "BotVersion": { - "description": "The version of a bot.", - "maxLength": 5, - "minLength": 1, - "pattern": "^(DRAFT|[0-9]+)$", - "type": "string" - }, - "CloudWatchLogGroupLogDestination": { - "additionalProperties": false, - "properties": { - "CloudWatchLogGroupArn": { - "description": "A string used to identify the groupArn for the Cloudwatch Log Group", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "LogPrefix": { - "description": "A string containing the value for the Log Prefix", - "maxLength": 1024, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "CloudWatchLogGroupArn", - "LogPrefix" - ], - "type": "object" - }, - "CodeHookSpecification": { - "additionalProperties": false, - "description": "Contains information about code hooks that Amazon Lex calls during a conversation.", - "properties": { - "LambdaCodeHook": { - "$ref": "#/definitions/LambdaCodeHook" - } - }, - "required": [ - "LambdaCodeHook" - ], - "type": "object" - }, - "ConversationLogSettings": { - "additionalProperties": false, - "description": "Contains information about code hooks that Amazon Lex calls during a conversation.", - "properties": { - "AudioLogSettings": { - "$ref": "#/definitions/AudioLogSettings" - }, - "TextLogSettings": { - "$ref": "#/definitions/TextLogSettings" - } - }, - "type": "object" - }, - "Description": { - "description": "A description of the bot alias. Use the description to help identify the bot alias in lists.", - "maxLength": 200, - "type": "string" - }, - "Id": { - "description": "Unique ID of resource", - "maxLength": 10, - "minLength": 10, - "pattern": "^[0-9a-zA-Z]+$", - "type": "string" - }, - "LambdaCodeHook": { - "additionalProperties": false, - "description": "Contains information about code hooks that Amazon Lex calls during a conversation.", - "properties": { - "CodeHookInterfaceVersion": { - "description": "The version of the request-response that you want Amazon Lex to use to invoke your Lambda function.", - "maxLength": 5, - "minLength": 1, - "type": "string" - }, - "LambdaArn": { - "description": "The Amazon Resource Name (ARN) of the Lambda function.", - "maxLength": 2048, - "minLength": 20, - "type": "string" - } - }, - "required": [ - "CodeHookInterfaceVersion", - "LambdaArn" - ], - "type": "object" - }, - "LocaleId": { - "description": "The identifier of the language and locale that the bot alias will be configured in.", - "type": "string" - }, - "Name": { - "description": "A unique identifier for a resource.", - "maxLength": 100, - "minLength": 1, - "pattern": "^([0-9a-zA-Z][_-]?)+$", - "type": "string" - }, - "S3BucketLogDestination": { - "additionalProperties": false, - "description": "Specifies an Amazon S3 bucket for logging audio conversations", - "properties": { - "KmsKeyArn": { - "description": "The Amazon Resource Name (ARN) of an AWS Key Management Service (KMS) key for encrypting audio log files stored in an S3 bucket.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w\\-]+:kms:[\\w\\-]+:[\\d]{12}:(?:key\\/[\\w\\-]+|alias\\/[a-zA-Z0-9:\\/_\\-]{1,256})$", - "type": "string" - }, - "LogPrefix": { - "description": "The Amazon S3 key of the deployment package.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "S3BucketArn": { - "description": "The Amazon Resource Name (ARN) of an Amazon S3 bucket where audio log files are stored.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:[\\w\\-]+:s3:::[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", - "type": "string" - } - }, - "required": [ - "LogPrefix", - "S3BucketArn" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A label for tagging Lex resources", - "properties": { - "Key": { - "description": "A string used to identify this tag", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "A string containing the value for the tag", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TextLogDestination": { - "additionalProperties": false, - "description": "Defines the Amazon CloudWatch Logs destination log group for conversation text logs.", - "properties": { - "CloudWatch": { - "$ref": "#/definitions/CloudWatchLogGroupLogDestination" - } - }, - "required": [ - "CloudWatch" - ], - "type": "object" - }, - "TextLogSetting": { - "additionalProperties": false, - "description": "Contains information about code hooks that Amazon Lex calls during a conversation.", - "properties": { - "Destination": { - "$ref": "#/definitions/TextLogDestination" - }, - "Enabled": { - "description": "", - "type": "boolean" - } - }, - "required": [ - "Destination", - "Enabled" - ], - "type": "object" - }, - "TextLogSettings": { - "description": "List of text log settings", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TextLogSetting" - }, - "maxItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "description": "A Bot Alias enables you to change the version of a bot without updating applications that use the bot", - "handlers": { - "create": { - "permissions": [ - "lex:CreateBotAlias", - "lex:DescribeBot" - ] - }, - "delete": { - "permissions": [ - "lex:DeleteBotAlias" - ] - }, - "list": { - "permissions": [ - "lex:ListBotAliases" - ] - }, - "read": { - "permissions": [ - "lex:DescribeBotAlias" - ] - }, - "update": { - "permissions": [ - "lex:UpdateBotAlias", - "lex:DescribeBotAlias", - "lex:ListTagsForResource", - "lex:TagResource", - "lex:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/BotAliasId", - "/properties/BotId" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "BotAliasId": { - "$ref": "#/definitions/Id" - }, - "BotAliasLocaleSettings": { - "$ref": "#/definitions/BotAliasLocaleSettingsList" - }, - "BotAliasName": { - "$ref": "#/definitions/Name" - }, - "BotAliasStatus": { - "$ref": "#/definitions/BotAliasStatus" - }, - "BotAliasTags": { - "description": "A list of tags to add to the bot alias.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - }, - "BotId": { - "$ref": "#/definitions/Id" - }, - "BotVersion": { - "$ref": "#/definitions/BotVersion" - }, - "ConversationLogSettings": { - "$ref": "#/definitions/ConversationLogSettings" - }, - "Description": { - "$ref": "#/definitions/Description" - }, - "SentimentAnalysisSettings": { - "additionalProperties": false, - "description": "Determines whether Amazon Lex will use Amazon Comprehend to detect the sentiment of user utterances.", - "properties": { - "DetectSentiment": { - "description": "Enable to call Amazon Comprehend for Sentiment natively within Lex", - "type": "boolean" - } - }, - "required": [ - "DetectSentiment" - ], - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/BotAliasId", - "/properties/Arn", - "/properties/BotAliasStatus" - ], - "required": [ - "BotId", - "BotAliasName" - ], - "sourceUrl": "https://docs.aws.amazon.com/lexv2/latest/dg/API_CreateBotAlias.html", - "taggable": false, - "typeName": "AWS::Lex::BotAlias", - "writeOnlyProperties": [ - "/properties/BotAliasTags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BotId" + ], + "definitions": { + "Arn": { + "maxLength": 1000, + "type": "string" + }, + "AudioLogDestination": { + "additionalProperties": false, + "description": "The location of audio log files collected when conversation logging is enabled for a bot.", + "properties": { + "S3Bucket": { + "$ref": "#/definitions/S3BucketLogDestination" + } + }, + "required": [ + "S3Bucket" + ], + "type": "object" + }, + "AudioLogSetting": { + "additionalProperties": false, + "description": "Settings for logging audio of conversations between Amazon Lex and a user. You specify whether to log audio and the Amazon S3 bucket where the audio file is stored.", + "properties": { + "Destination": { + "$ref": "#/definitions/AudioLogDestination" + }, + "Enabled": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "Destination", + "Enabled" + ], + "type": "object" + }, + "AudioLogSettings": { + "description": "List of audio log settings", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AudioLogSetting" + }, + "maxItems": 1, + "type": "array", + "uniqueItems": true + }, + "BotAliasLocaleSettings": { + "additionalProperties": false, + "description": "You can use this parameter to specify a specific Lambda function to run different functions in different locales.", + "properties": { + "CodeHookSpecification": { + "$ref": "#/definitions/CodeHookSpecification" + }, + "Enabled": { + "description": "Whether the Lambda code hook is enabled", + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "BotAliasLocaleSettingsItem": { + "additionalProperties": false, + "description": "A locale setting in alias", + "properties": { + "BotAliasLocaleSetting": { + "$ref": "#/definitions/BotAliasLocaleSettings" + }, + "LocaleId": { + "description": "A string used to identify the locale", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "LocaleId", + "BotAliasLocaleSetting" + ], + "type": "object" + }, + "BotAliasLocaleSettingsList": { + "description": "A list of bot alias locale settings to add to the bot alias.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/BotAliasLocaleSettingsItem" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "BotAliasStatus": { + "enum": [ + "Creating", + "Available", + "Deleting", + "Failed" + ], + "type": "string" + }, + "BotVersion": { + "description": "The version of a bot.", + "maxLength": 5, + "minLength": 1, + "pattern": "^(DRAFT|[0-9]+)$", + "type": "string" + }, + "CloudWatchLogGroupLogDestination": { + "additionalProperties": false, + "properties": { + "CloudWatchLogGroupArn": { + "description": "A string used to identify the groupArn for the Cloudwatch Log Group", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "LogPrefix": { + "description": "A string containing the value for the Log Prefix", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "CloudWatchLogGroupArn", + "LogPrefix" + ], + "type": "object" + }, + "CodeHookSpecification": { + "additionalProperties": false, + "description": "Contains information about code hooks that Amazon Lex calls during a conversation.", + "properties": { + "LambdaCodeHook": { + "$ref": "#/definitions/LambdaCodeHook" + } + }, + "required": [ + "LambdaCodeHook" + ], + "type": "object" + }, + "ConversationLogSettings": { + "additionalProperties": false, + "description": "Contains information about code hooks that Amazon Lex calls during a conversation.", + "properties": { + "AudioLogSettings": { + "$ref": "#/definitions/AudioLogSettings" + }, + "TextLogSettings": { + "$ref": "#/definitions/TextLogSettings" + } + }, + "type": "object" + }, + "Description": { + "description": "A description of the bot alias. Use the description to help identify the bot alias in lists.", + "maxLength": 200, + "type": "string" + }, + "Id": { + "description": "Unique ID of resource", + "maxLength": 10, + "minLength": 10, + "pattern": "^[0-9a-zA-Z]+$", + "type": "string" + }, + "LambdaCodeHook": { + "additionalProperties": false, + "description": "Contains information about code hooks that Amazon Lex calls during a conversation.", + "properties": { + "CodeHookInterfaceVersion": { + "description": "The version of the request-response that you want Amazon Lex to use to invoke your Lambda function.", + "maxLength": 5, + "minLength": 1, + "type": "string" + }, + "LambdaArn": { + "description": "The Amazon Resource Name (ARN) of the Lambda function.", + "maxLength": 2048, + "minLength": 20, + "type": "string" + } + }, + "required": [ + "CodeHookInterfaceVersion", + "LambdaArn" + ], + "type": "object" + }, + "LocaleId": { + "description": "The identifier of the language and locale that the bot alias will be configured in.", + "type": "string" + }, + "Name": { + "description": "A unique identifier for a resource.", + "maxLength": 100, + "minLength": 1, + "pattern": "^([0-9a-zA-Z][_-]?)+$", + "type": "string" + }, + "S3BucketLogDestination": { + "additionalProperties": false, + "description": "Specifies an Amazon S3 bucket for logging audio conversations", + "properties": { + "KmsKeyArn": { + "description": "The Amazon Resource Name (ARN) of an AWS Key Management Service (KMS) key for encrypting audio log files stored in an S3 bucket.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w\\-]+:kms:[\\w\\-]+:[\\d]{12}:(?:key\\/[\\w\\-]+|alias\\/[a-zA-Z0-9:\\/_\\-]{1,256})$", + "type": "string" + }, + "LogPrefix": { + "description": "The Amazon S3 key of the deployment package.", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "S3BucketArn": { + "description": "The Amazon Resource Name (ARN) of an Amazon S3 bucket where audio log files are stored.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:[\\w\\-]+:s3:::[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", + "type": "string" + } + }, + "required": [ + "LogPrefix", + "S3BucketArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A label for tagging Lex resources", + "properties": { + "Key": { + "description": "A string used to identify this tag", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A string containing the value for the tag", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TextLogDestination": { + "additionalProperties": false, + "description": "Defines the Amazon CloudWatch Logs destination log group for conversation text logs.", + "properties": { + "CloudWatch": { + "$ref": "#/definitions/CloudWatchLogGroupLogDestination" + } + }, + "required": [ + "CloudWatch" + ], + "type": "object" + }, + "TextLogSetting": { + "additionalProperties": false, + "description": "Contains information about code hooks that Amazon Lex calls during a conversation.", + "properties": { + "Destination": { + "$ref": "#/definitions/TextLogDestination" + }, + "Enabled": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "Destination", + "Enabled" + ], + "type": "object" + }, + "TextLogSettings": { + "description": "List of text log settings", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TextLogSetting" + }, + "maxItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "description": "A Bot Alias enables you to change the version of a bot without updating applications that use the bot", + "handlers": { + "create": { + "permissions": [ + "lex:CreateBotAlias", + "lex:DescribeBot" + ] + }, + "delete": { + "permissions": [ + "lex:DeleteBotAlias" + ] + }, + "list": { + "permissions": [ + "lex:ListBotAliases" + ] + }, + "read": { + "permissions": [ + "lex:DescribeBotAlias" + ] + }, + "update": { + "permissions": [ + "lex:UpdateBotAlias", + "lex:DescribeBotAlias", + "lex:ListTagsForResource", + "lex:TagResource", + "lex:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/BotAliasId", + "/properties/BotId" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "BotAliasId": { + "$ref": "#/definitions/Id" + }, + "BotAliasLocaleSettings": { + "$ref": "#/definitions/BotAliasLocaleSettingsList" + }, + "BotAliasName": { + "$ref": "#/definitions/Name" + }, + "BotAliasStatus": { + "$ref": "#/definitions/BotAliasStatus" + }, + "BotAliasTags": { + "description": "A list of tags to add to the bot alias.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + }, + "BotId": { + "$ref": "#/definitions/Id" + }, + "BotVersion": { + "$ref": "#/definitions/BotVersion" + }, + "ConversationLogSettings": { + "$ref": "#/definitions/ConversationLogSettings" + }, + "Description": { + "$ref": "#/definitions/Description" + }, + "SentimentAnalysisSettings": { + "additionalProperties": false, + "description": "Determines whether Amazon Lex will use Amazon Comprehend to detect the sentiment of user utterances.", + "properties": { + "DetectSentiment": { + "description": "Enable to call Amazon Comprehend for Sentiment natively within Lex", + "type": "boolean" + } + }, + "required": [ + "DetectSentiment" + ], + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/BotAliasId", + "/properties/Arn", + "/properties/BotAliasStatus" + ], + "required": [ + "BotId", + "BotAliasName" + ], + "sourceUrl": "https://docs.aws.amazon.com/lexv2/latest/dg/API_CreateBotAlias.html", + "taggable": false, + "typeName": "AWS::Lex::BotAlias", + "writeOnlyProperties": [ + "/properties/BotAliasTags" + ] +} diff --git a/src/schema/aws-lex-botversion.json b/src/schema/aws-lex-botversion.json index b343c771..0239c3dd 100644 --- a/src/schema/aws-lex-botversion.json +++ b/src/schema/aws-lex-botversion.json @@ -1,128 +1,128 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/BotId" - ], - "definitions": { - "BotVersion": { - "description": "The version of a bot.", - "maxLength": 5, - "minLength": 1, - "pattern": "^(DRAFT|[0-9]+)$", - "type": "string" - }, - "BotVersionLocaleDetails": { - "additionalProperties": false, - "description": "The version of a bot used for a bot locale.", - "properties": { - "SourceBotVersion": { - "$ref": "#/definitions/BotVersion" - } - }, - "required": [ - "SourceBotVersion" - ], - "type": "object" - }, - "BotVersionLocaleSpecification": { - "additionalProperties": false, - "properties": { - "BotVersionLocaleDetails": { - "$ref": "#/definitions/BotVersionLocaleDetails" - }, - "LocaleId": { - "$ref": "#/definitions/LocaleId" - } - }, - "required": [ - "LocaleId", - "BotVersionLocaleDetails" - ], - "type": "object" - }, - "BotVersionLocaleSpecificationList": { - "description": "Specifies the locales that Amazon Lex adds to this version. You can choose the Draft version or any other previously published version for each locale.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/BotVersionLocaleSpecification" - }, - "minItems": 1, - "type": "array" - }, - "Description": { - "description": "A description of the version. Use the description to help identify the version in lists.", - "maxLength": 200, - "type": "string" - }, - "Id": { - "description": "Unique ID of resource", - "maxLength": 10, - "minLength": 10, - "pattern": "^[0-9a-zA-Z]+$", - "type": "string" - }, - "LocaleId": { - "description": "The identifier of the language and locale that the bot will be used in.", - "type": "string" - } - }, - "description": "A version is a numbered snapshot of your work that you can publish for use in different parts of your workflow, such as development, beta deployment, and production.", - "handlers": { - "create": { - "permissions": [ - "lex:CreateBotVersion", - "lex:DescribeBotVersion", - "lex:DescribeBot", - "lex:DescribeBotLocale", - "lex:BuildBotLocale" - ] - }, - "delete": { - "permissions": [ - "lex:DeleteBotVersion", - "lex:DescribeBotVersion" - ] - }, - "list": { - "permissions": [ - "lex:ListBotVersions" - ] - }, - "read": { - "permissions": [ - "lex:DescribeBotVersion" - ] - } - }, - "primaryIdentifier": [ - "/properties/BotId", - "/properties/BotVersion" - ], - "properties": { - "BotId": { - "$ref": "#/definitions/Id" - }, - "BotVersion": { - "$ref": "#/definitions/BotVersion" - }, - "BotVersionLocaleSpecification": { - "$ref": "#/definitions/BotVersionLocaleSpecificationList" - }, - "Description": { - "$ref": "#/definitions/Description" - } - }, - "readOnlyProperties": [ - "/properties/BotVersion" - ], - "required": [ - "BotId", - "BotVersionLocaleSpecification" - ], - "sourceUrl": "https://docs.aws.amazon.com/lexv2/latest/dg/API_CreateBotVersion.html", - "taggable": false, - "typeName": "AWS::Lex::BotVersion", - "writeOnlyProperties": [ - "/properties/BotVersionLocaleSpecification" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BotId" + ], + "definitions": { + "BotVersion": { + "description": "The version of a bot.", + "maxLength": 5, + "minLength": 1, + "pattern": "^(DRAFT|[0-9]+)$", + "type": "string" + }, + "BotVersionLocaleDetails": { + "additionalProperties": false, + "description": "The version of a bot used for a bot locale.", + "properties": { + "SourceBotVersion": { + "$ref": "#/definitions/BotVersion" + } + }, + "required": [ + "SourceBotVersion" + ], + "type": "object" + }, + "BotVersionLocaleSpecification": { + "additionalProperties": false, + "properties": { + "BotVersionLocaleDetails": { + "$ref": "#/definitions/BotVersionLocaleDetails" + }, + "LocaleId": { + "$ref": "#/definitions/LocaleId" + } + }, + "required": [ + "LocaleId", + "BotVersionLocaleDetails" + ], + "type": "object" + }, + "BotVersionLocaleSpecificationList": { + "description": "Specifies the locales that Amazon Lex adds to this version. You can choose the Draft version or any other previously published version for each locale.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/BotVersionLocaleSpecification" + }, + "minItems": 1, + "type": "array" + }, + "Description": { + "description": "A description of the version. Use the description to help identify the version in lists.", + "maxLength": 200, + "type": "string" + }, + "Id": { + "description": "Unique ID of resource", + "maxLength": 10, + "minLength": 10, + "pattern": "^[0-9a-zA-Z]+$", + "type": "string" + }, + "LocaleId": { + "description": "The identifier of the language and locale that the bot will be used in.", + "type": "string" + } + }, + "description": "A version is a numbered snapshot of your work that you can publish for use in different parts of your workflow, such as development, beta deployment, and production.", + "handlers": { + "create": { + "permissions": [ + "lex:CreateBotVersion", + "lex:DescribeBotVersion", + "lex:DescribeBot", + "lex:DescribeBotLocale", + "lex:BuildBotLocale" + ] + }, + "delete": { + "permissions": [ + "lex:DeleteBotVersion", + "lex:DescribeBotVersion" + ] + }, + "list": { + "permissions": [ + "lex:ListBotVersions" + ] + }, + "read": { + "permissions": [ + "lex:DescribeBotVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/BotId", + "/properties/BotVersion" + ], + "properties": { + "BotId": { + "$ref": "#/definitions/Id" + }, + "BotVersion": { + "$ref": "#/definitions/BotVersion" + }, + "BotVersionLocaleSpecification": { + "$ref": "#/definitions/BotVersionLocaleSpecificationList" + }, + "Description": { + "$ref": "#/definitions/Description" + } + }, + "readOnlyProperties": [ + "/properties/BotVersion" + ], + "required": [ + "BotId", + "BotVersionLocaleSpecification" + ], + "sourceUrl": "https://docs.aws.amazon.com/lexv2/latest/dg/API_CreateBotVersion.html", + "taggable": false, + "typeName": "AWS::Lex::BotVersion", + "writeOnlyProperties": [ + "/properties/BotVersionLocaleSpecification" + ] +} diff --git a/src/schema/aws-lex-resourcepolicy.json b/src/schema/aws-lex-resourcepolicy.json index b1b7be42..6d38cc8c 100644 --- a/src/schema/aws-lex-resourcepolicy.json +++ b/src/schema/aws-lex-resourcepolicy.json @@ -1,90 +1,90 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ResourceArn" - ] - ], - "additionalProperties": false, - "definitions": { - "PhysicalId": { - "description": "The Physical ID of the resource policy.", - "type": "string" - }, - "Policy": { - "description": "A resource policy to add to the resource. The policy is a JSON structure following the IAM syntax that contains one or more statements that define the policy.", - "type": "object" - }, - "ResourceArn": { - "description": "The Amazon Resource Name (ARN) of the bot or bot alias that the resource policy is attached to.", - "maxLength": 1011, - "minLength": 1, - "type": "string" - }, - "RevisionId": { - "description": "The current revision of the resource policy. Use the revision ID to make sure that you are updating the most current version of a resource policy when you add a policy statement to a resource, delete a resource, or update a resource.", - "maxLength": 5, - "minLength": 1, - "pattern": "^[0-9]+$", - "type": "string" - } - }, - "description": "A resource policy with specified policy statements that attaches to a Lex bot or bot alias.", - "handlers": { - "create": { - "permissions": [ - "lex:CreateResourcePolicy", - "lex:DescribeResourcePolicy" - ] - }, - "delete": { - "permissions": [ - "lex:DeleteResourcePolicy", - "lex:DescribeResourcePolicy" - ] - }, - "list": { - "permissions": [ - "lex:DescribeResourcePolicy" - ] - }, - "read": { - "permissions": [ - "lex:DescribeResourcePolicy" - ] - }, - "update": { - "permissions": [ - "lex:UpdateResourcePolicy", - "lex:DescribeResourcePolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "$ref": "#/definitions/PhysicalId" - }, - "Policy": { - "$ref": "#/definitions/Policy" - }, - "ResourceArn": { - "$ref": "#/definitions/ResourceArn" - }, - "RevisionId": { - "$ref": "#/definitions/RevisionId" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/RevisionId" - ], - "required": [ - "ResourceArn", - "Policy" - ], - "sourceUrl": "https://docs.aws.amazon.com/lexv2/latest/dg/security_iam_service-with-iam.html#security_iam_service-with-iam-resource-based-policies", - "taggable": false, - "typeName": "AWS::Lex::ResourcePolicy" -} +{ + "additionalIdentifiers": [ + [ + "/properties/ResourceArn" + ] + ], + "additionalProperties": false, + "definitions": { + "PhysicalId": { + "description": "The Physical ID of the resource policy.", + "type": "string" + }, + "Policy": { + "description": "A resource policy to add to the resource. The policy is a JSON structure following the IAM syntax that contains one or more statements that define the policy.", + "type": "object" + }, + "ResourceArn": { + "description": "The Amazon Resource Name (ARN) of the bot or bot alias that the resource policy is attached to.", + "maxLength": 1011, + "minLength": 1, + "type": "string" + }, + "RevisionId": { + "description": "The current revision of the resource policy. Use the revision ID to make sure that you are updating the most current version of a resource policy when you add a policy statement to a resource, delete a resource, or update a resource.", + "maxLength": 5, + "minLength": 1, + "pattern": "^[0-9]+$", + "type": "string" + } + }, + "description": "A resource policy with specified policy statements that attaches to a Lex bot or bot alias.", + "handlers": { + "create": { + "permissions": [ + "lex:CreateResourcePolicy", + "lex:DescribeResourcePolicy" + ] + }, + "delete": { + "permissions": [ + "lex:DeleteResourcePolicy", + "lex:DescribeResourcePolicy" + ] + }, + "list": { + "permissions": [ + "lex:DescribeResourcePolicy" + ] + }, + "read": { + "permissions": [ + "lex:DescribeResourcePolicy" + ] + }, + "update": { + "permissions": [ + "lex:UpdateResourcePolicy", + "lex:DescribeResourcePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "$ref": "#/definitions/PhysicalId" + }, + "Policy": { + "$ref": "#/definitions/Policy" + }, + "ResourceArn": { + "$ref": "#/definitions/ResourceArn" + }, + "RevisionId": { + "$ref": "#/definitions/RevisionId" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/RevisionId" + ], + "required": [ + "ResourceArn", + "Policy" + ], + "sourceUrl": "https://docs.aws.amazon.com/lexv2/latest/dg/security_iam_service-with-iam.html#security_iam_service-with-iam-resource-based-policies", + "taggable": false, + "typeName": "AWS::Lex::ResourcePolicy" +} diff --git a/src/schema/aws-licensemanager-grant.json b/src/schema/aws-licensemanager-grant.json index dac92306..9cd9abcc 100644 --- a/src/schema/aws-licensemanager-grant.json +++ b/src/schema/aws-licensemanager-grant.json @@ -1,91 +1,91 @@ -{ - "additionalProperties": false, - "definitions": { - "Arn": { - "maxLength": 2048, - "type": "string" - } - }, - "description": "An example resource schema demonstrating some basic constructs and validation rules.", - "handlers": { - "create": { - "permissions": [ - "license-manager:CreateGrant" - ] - }, - "delete": { - "permissions": [ - "license-manager:DeleteGrant" - ] - }, - "list": { - "permissions": [ - "license-manager:ListDistributedGrants" - ] - }, - "read": { - "permissions": [ - "license-manager:GetGrant" - ] - }, - "update": { - "permissions": [ - "license-manager:CreateGrantVersion" - ] - } - }, - "primaryIdentifier": [ - "/properties/GrantArn" - ], - "properties": { - "AllowedOperations": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "GrantArn": { - "$ref": "#/definitions/Arn", - "description": "Arn of the grant." - }, - "GrantName": { - "description": "Name for the created Grant.", - "type": "string" - }, - "HomeRegion": { - "description": "Home region for the created grant.", - "type": "string" - }, - "LicenseArn": { - "$ref": "#/definitions/Arn", - "description": "License Arn for the grant." - }, - "Principals": { - "items": { - "$ref": "#/definitions/Arn" - }, - "type": "array", - "uniqueItems": true - }, - "Status": { - "type": "string" - }, - "Version": { - "description": "The version of the grant.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/GrantArn", - "/properties/Version" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::LicenseManager::Grant", - "writeOnlyProperties": [ - "/properties/Principals", - "/properties/AllowedOperations", - "/properties/Status" - ] -} +{ + "additionalProperties": false, + "definitions": { + "Arn": { + "maxLength": 2048, + "type": "string" + } + }, + "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "handlers": { + "create": { + "permissions": [ + "license-manager:CreateGrant" + ] + }, + "delete": { + "permissions": [ + "license-manager:DeleteGrant" + ] + }, + "list": { + "permissions": [ + "license-manager:ListDistributedGrants" + ] + }, + "read": { + "permissions": [ + "license-manager:GetGrant" + ] + }, + "update": { + "permissions": [ + "license-manager:CreateGrantVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/GrantArn" + ], + "properties": { + "AllowedOperations": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "GrantArn": { + "$ref": "#/definitions/Arn", + "description": "Arn of the grant." + }, + "GrantName": { + "description": "Name for the created Grant.", + "type": "string" + }, + "HomeRegion": { + "description": "Home region for the created grant.", + "type": "string" + }, + "LicenseArn": { + "$ref": "#/definitions/Arn", + "description": "License Arn for the grant." + }, + "Principals": { + "items": { + "$ref": "#/definitions/Arn" + }, + "type": "array", + "uniqueItems": true + }, + "Status": { + "type": "string" + }, + "Version": { + "description": "The version of the grant.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/GrantArn", + "/properties/Version" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "typeName": "AWS::LicenseManager::Grant", + "writeOnlyProperties": [ + "/properties/Principals", + "/properties/AllowedOperations", + "/properties/Status" + ] +} diff --git a/src/schema/aws-licensemanager-license.json b/src/schema/aws-licensemanager-license.json index 13c209bb..a4f9d4bd 100644 --- a/src/schema/aws-licensemanager-license.json +++ b/src/schema/aws-licensemanager-license.json @@ -1,241 +1,241 @@ -{ - "additionalProperties": false, - "definitions": { - "Arn": { - "maxLength": 2048, - "type": "string" - }, - "BorrowConfiguration": { - "additionalProperties": false, - "properties": { - "AllowEarlyCheckIn": { - "type": "boolean" - }, - "MaxTimeToLiveInMinutes": { - "type": "integer" - } - }, - "required": [ - "MaxTimeToLiveInMinutes", - "AllowEarlyCheckIn" - ], - "type": "object" - }, - "ConsumptionConfiguration": { - "additionalProperties": false, - "properties": { - "BorrowConfiguration": { - "$ref": "#/definitions/BorrowConfiguration" - }, - "ProvisionalConfiguration": { - "$ref": "#/definitions/ProvisionalConfiguration" - }, - "RenewType": { - "type": "string" - } - }, - "type": "object" - }, - "Entitlement": { - "additionalProperties": false, - "properties": { - "AllowCheckIn": { - "type": "boolean" - }, - "MaxCount": { - "type": "integer" - }, - "Name": { - "type": "string" - }, - "Overage": { - "type": "boolean" - }, - "Unit": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Name", - "Unit" - ], - "type": "object" - }, - "IssuerData": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "SignKey": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "LicenseStatus": { - "type": "string" - }, - "Metadata": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Name", - "Value" - ], - "type": "object" - }, - "ProvisionalConfiguration": { - "additionalProperties": false, - "properties": { - "MaxTimeToLiveInMinutes": { - "type": "integer" - } - }, - "required": [ - "MaxTimeToLiveInMinutes" - ], - "type": "object" - }, - "ValidityDateFormat": { - "additionalProperties": false, - "properties": { - "Begin": { - "description": "Validity begin date for the license.", - "format": "date-time", - "type": "string" - }, - "End": { - "description": "Validity begin date for the license.", - "format": "date-time", - "type": "string" - } - }, - "required": [ - "Begin", - "End" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::LicenseManager::License", - "handlers": { - "create": { - "permissions": [ - "license-manager:CreateLicense" - ] - }, - "delete": { - "permissions": [ - "license-manager:DeleteLicense" - ] - }, - "list": { - "permissions": [ - "license-manager:ListLicenses" - ] - }, - "read": { - "permissions": [ - "license-manager:GetLicense" - ] - }, - "update": { - "permissions": [ - "license-manager:CreateLicenseVersion" - ] - } - }, - "primaryIdentifier": [ - "/properties/LicenseArn" - ], - "properties": { - "Beneficiary": { - "description": "Beneficiary of the license.", - "type": "string" - }, - "ConsumptionConfiguration": { - "$ref": "#/definitions/ConsumptionConfiguration" - }, - "Entitlements": { - "items": { - "$ref": "#/definitions/Entitlement" - }, - "type": "array", - "uniqueItems": true - }, - "HomeRegion": { - "description": "Home region for the created license.", - "type": "string" - }, - "Issuer": { - "$ref": "#/definitions/IssuerData" - }, - "LicenseArn": { - "$ref": "#/definitions/Arn", - "description": "Amazon Resource Name is a unique name for each resource." - }, - "LicenseMetadata": { - "items": { - "$ref": "#/definitions/Metadata" - }, - "type": "array", - "uniqueItems": true - }, - "LicenseName": { - "description": "Name for the created license.", - "type": "string" - }, - "ProductName": { - "description": "Product name for the created license.", - "type": "string" - }, - "ProductSKU": { - "description": "ProductSKU of the license.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Status": { - "$ref": "#/definitions/LicenseStatus" - }, - "Validity": { - "$ref": "#/definitions/ValidityDateFormat" - }, - "Version": { - "description": "The version of the license.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/LicenseArn", - "/properties/Version" - ], - "required": [ - "LicenseName", - "ProductName", - "Issuer", - "HomeRegion", - "Validity", - "ConsumptionConfiguration", - "Entitlements" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-licensemanager.git", - "typeName": "AWS::LicenseManager::License", - "writeOnlyProperties": [ - "/properties/Status" - ] -} +{ + "additionalProperties": false, + "definitions": { + "Arn": { + "maxLength": 2048, + "type": "string" + }, + "BorrowConfiguration": { + "additionalProperties": false, + "properties": { + "AllowEarlyCheckIn": { + "type": "boolean" + }, + "MaxTimeToLiveInMinutes": { + "type": "integer" + } + }, + "required": [ + "MaxTimeToLiveInMinutes", + "AllowEarlyCheckIn" + ], + "type": "object" + }, + "ConsumptionConfiguration": { + "additionalProperties": false, + "properties": { + "BorrowConfiguration": { + "$ref": "#/definitions/BorrowConfiguration" + }, + "ProvisionalConfiguration": { + "$ref": "#/definitions/ProvisionalConfiguration" + }, + "RenewType": { + "type": "string" + } + }, + "type": "object" + }, + "Entitlement": { + "additionalProperties": false, + "properties": { + "AllowCheckIn": { + "type": "boolean" + }, + "MaxCount": { + "type": "integer" + }, + "Name": { + "type": "string" + }, + "Overage": { + "type": "boolean" + }, + "Unit": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Name", + "Unit" + ], + "type": "object" + }, + "IssuerData": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "SignKey": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "LicenseStatus": { + "type": "string" + }, + "Metadata": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Name", + "Value" + ], + "type": "object" + }, + "ProvisionalConfiguration": { + "additionalProperties": false, + "properties": { + "MaxTimeToLiveInMinutes": { + "type": "integer" + } + }, + "required": [ + "MaxTimeToLiveInMinutes" + ], + "type": "object" + }, + "ValidityDateFormat": { + "additionalProperties": false, + "properties": { + "Begin": { + "description": "Validity begin date for the license.", + "format": "date-time", + "type": "string" + }, + "End": { + "description": "Validity begin date for the license.", + "format": "date-time", + "type": "string" + } + }, + "required": [ + "Begin", + "End" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::LicenseManager::License", + "handlers": { + "create": { + "permissions": [ + "license-manager:CreateLicense" + ] + }, + "delete": { + "permissions": [ + "license-manager:DeleteLicense" + ] + }, + "list": { + "permissions": [ + "license-manager:ListLicenses" + ] + }, + "read": { + "permissions": [ + "license-manager:GetLicense" + ] + }, + "update": { + "permissions": [ + "license-manager:CreateLicenseVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/LicenseArn" + ], + "properties": { + "Beneficiary": { + "description": "Beneficiary of the license.", + "type": "string" + }, + "ConsumptionConfiguration": { + "$ref": "#/definitions/ConsumptionConfiguration" + }, + "Entitlements": { + "items": { + "$ref": "#/definitions/Entitlement" + }, + "type": "array", + "uniqueItems": true + }, + "HomeRegion": { + "description": "Home region for the created license.", + "type": "string" + }, + "Issuer": { + "$ref": "#/definitions/IssuerData" + }, + "LicenseArn": { + "$ref": "#/definitions/Arn", + "description": "Amazon Resource Name is a unique name for each resource." + }, + "LicenseMetadata": { + "items": { + "$ref": "#/definitions/Metadata" + }, + "type": "array", + "uniqueItems": true + }, + "LicenseName": { + "description": "Name for the created license.", + "type": "string" + }, + "ProductName": { + "description": "Product name for the created license.", + "type": "string" + }, + "ProductSKU": { + "description": "ProductSKU of the license.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/LicenseStatus" + }, + "Validity": { + "$ref": "#/definitions/ValidityDateFormat" + }, + "Version": { + "description": "The version of the license.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LicenseArn", + "/properties/Version" + ], + "required": [ + "LicenseName", + "ProductName", + "Issuer", + "HomeRegion", + "Validity", + "ConsumptionConfiguration", + "Entitlements" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-licensemanager.git", + "typeName": "AWS::LicenseManager::License", + "writeOnlyProperties": [ + "/properties/Status" + ] +} diff --git a/src/schema/aws-lightsail-alarm.json b/src/schema/aws-lightsail-alarm.json index 203733c2..8efe9dc2 100644 --- a/src/schema/aws-lightsail-alarm.json +++ b/src/schema/aws-lightsail-alarm.json @@ -1,121 +1,121 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AlarmName", - "/properties/MonitoredResourceName", - "/properties/MetricName" - ], - "description": "Resource Type definition for AWS::Lightsail::Alarm", - "handlers": { - "create": { - "permissions": [ - "lightsail:PutAlarm", - "lightsail:GetAlarms" - ] - }, - "delete": { - "permissions": [ - "lightsail:DeleteAlarm", - "lightsail:GetAlarms" - ] - }, - "list": { - "permissions": [ - "lightsail:GetAlarms" - ] - }, - "read": { - "permissions": [ - "lightsail:GetAlarms" - ] - }, - "update": { - "permissions": [ - "lightsail:PutAlarm", - "lightsail:GetAlarms" - ] - } - }, - "primaryIdentifier": [ - "/properties/AlarmName" - ], - "properties": { - "AlarmArn": { - "type": "string" - }, - "AlarmName": { - "description": "The name for the alarm. Specify the name of an existing alarm to update, and overwrite the previous configuration of the alarm.", - "pattern": "\\w[\\w\\-]*\\w", - "type": "string" - }, - "ComparisonOperator": { - "description": "The arithmetic operation to use when comparing the specified statistic to the threshold. The specified statistic value is used as the first operand.", - "type": "string" - }, - "ContactProtocols": { - "description": "The contact protocols to use for the alarm, such as Email, SMS (text messaging), or both.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "DatapointsToAlarm": { - "description": "The number of data points that must be not within the specified threshold to trigger the alarm. If you are setting an \"M out of N\" alarm, this value (datapointsToAlarm) is the M.", - "type": "integer" - }, - "EvaluationPeriods": { - "description": "The number of most recent periods over which data is compared to the specified threshold. If you are setting an \"M out of N\" alarm, this value (evaluationPeriods) is the N.", - "type": "integer" - }, - "MetricName": { - "description": "The name of the metric to associate with the alarm.", - "type": "string" - }, - "MonitoredResourceName": { - "description": "The name of the Lightsail resource that the alarm monitors.", - "type": "string" - }, - "NotificationEnabled": { - "description": "Indicates whether the alarm is enabled. Notifications are enabled by default if you don't specify this parameter.", - "type": "boolean" - }, - "NotificationTriggers": { - "description": "The alarm states that trigger a notification.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "State": { - "description": "The current state of the alarm.", - "type": "string" - }, - "Threshold": { - "description": "The value against which the specified statistic is compared.", - "type": "number" - }, - "TreatMissingData": { - "description": "Sets how this alarm will handle missing data points.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AlarmArn", - "/properties/State" - ], - "required": [ - "AlarmName", - "MonitoredResourceName", - "MetricName", - "ComparisonOperator", - "EvaluationPeriods", - "Threshold" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", - "taggable": true, - "typeName": "AWS::Lightsail::Alarm" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AlarmName", + "/properties/MonitoredResourceName", + "/properties/MetricName" + ], + "description": "Resource Type definition for AWS::Lightsail::Alarm", + "handlers": { + "create": { + "permissions": [ + "lightsail:PutAlarm", + "lightsail:GetAlarms" + ] + }, + "delete": { + "permissions": [ + "lightsail:DeleteAlarm", + "lightsail:GetAlarms" + ] + }, + "list": { + "permissions": [ + "lightsail:GetAlarms" + ] + }, + "read": { + "permissions": [ + "lightsail:GetAlarms" + ] + }, + "update": { + "permissions": [ + "lightsail:PutAlarm", + "lightsail:GetAlarms" + ] + } + }, + "primaryIdentifier": [ + "/properties/AlarmName" + ], + "properties": { + "AlarmArn": { + "type": "string" + }, + "AlarmName": { + "description": "The name for the alarm. Specify the name of an existing alarm to update, and overwrite the previous configuration of the alarm.", + "pattern": "\\w[\\w\\-]*\\w", + "type": "string" + }, + "ComparisonOperator": { + "description": "The arithmetic operation to use when comparing the specified statistic to the threshold. The specified statistic value is used as the first operand.", + "type": "string" + }, + "ContactProtocols": { + "description": "The contact protocols to use for the alarm, such as Email, SMS (text messaging), or both.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "DatapointsToAlarm": { + "description": "The number of data points that must be not within the specified threshold to trigger the alarm. If you are setting an \"M out of N\" alarm, this value (datapointsToAlarm) is the M.", + "type": "integer" + }, + "EvaluationPeriods": { + "description": "The number of most recent periods over which data is compared to the specified threshold. If you are setting an \"M out of N\" alarm, this value (evaluationPeriods) is the N.", + "type": "integer" + }, + "MetricName": { + "description": "The name of the metric to associate with the alarm.", + "type": "string" + }, + "MonitoredResourceName": { + "description": "The name of the Lightsail resource that the alarm monitors.", + "type": "string" + }, + "NotificationEnabled": { + "description": "Indicates whether the alarm is enabled. Notifications are enabled by default if you don't specify this parameter.", + "type": "boolean" + }, + "NotificationTriggers": { + "description": "The alarm states that trigger a notification.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "State": { + "description": "The current state of the alarm.", + "type": "string" + }, + "Threshold": { + "description": "The value against which the specified statistic is compared.", + "type": "number" + }, + "TreatMissingData": { + "description": "Sets how this alarm will handle missing data points.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AlarmArn", + "/properties/State" + ], + "required": [ + "AlarmName", + "MonitoredResourceName", + "MetricName", + "ComparisonOperator", + "EvaluationPeriods", + "Threshold" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", + "taggable": true, + "typeName": "AWS::Lightsail::Alarm" +} diff --git a/src/schema/aws-lightsail-bucket.json b/src/schema/aws-lightsail-bucket.json index 59f449e2..0e267ca6 100644 --- a/src/schema/aws-lightsail-bucket.json +++ b/src/schema/aws-lightsail-bucket.json @@ -1,171 +1,171 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/BucketName" - ], - "definitions": { - "AccessRules": { - "additionalProperties": false, - "description": "An object that sets the public accessibility of objects in the specified bucket.", - "properties": { - "AllowPublicOverrides": { - "description": "A Boolean value that indicates whether the access control list (ACL) permissions that are applied to individual objects override the getObject option that is currently specified.", - "type": "boolean" - }, - "GetObject": { - "description": "Specifies the anonymous access to all objects in a bucket.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Lightsail::Bucket", - "handlers": { - "create": { - "permissions": [ - "lightsail:CreateBucket", - "lightsail:GetBuckets", - "lightsail:GetInstance", - "lightsail:UpdateBucket", - "lightsail:UpdateBucketBundle", - "lightsail:SetResourceAccessForBucket", - "lightsail:TagResource", - "lightsail:UntagResource" - ] - }, - "delete": { - "permissions": [ - "lightsail:DeleteBucket", - "lightsail:GetBuckets" - ] - }, - "list": { - "permissions": [ - "lightsail:GetBuckets" - ] - }, - "read": { - "permissions": [ - "lightsail:GetBuckets" - ] - }, - "update": { - "permissions": [ - "lightsail:GetBuckets", - "lightsail:GetInstance", - "lightsail:UpdateBucket", - "lightsail:UpdateBucketBundle", - "lightsail:SetResourceAccessForBucket", - "lightsail:TagResource", - "lightsail:UntagResource" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/BucketName" - ], - "properties": { - "AbleToUpdateBundle": { - "description": "Indicates whether the bundle that is currently applied to a bucket can be changed to another bundle. You can update a bucket's bundle only one time within a monthly AWS billing cycle.", - "type": "boolean" - }, - "AccessRules": { - "$ref": "#/definitions/AccessRules" - }, - "BucketArn": { - "type": "string" - }, - "BucketName": { - "description": "The name for the bucket.", - "maxLength": 54, - "minLength": 3, - "pattern": "^[a-z0-9][a-z0-9-]{1,52}[a-z0-9]$", - "type": "string" - }, - "BundleId": { - "description": "The ID of the bundle to use for the bucket.", - "type": "string" - }, - "ObjectVersioning": { - "description": "Specifies whether to enable or disable versioning of objects in the bucket.", - "type": "boolean" - }, - "ReadOnlyAccessAccounts": { - "description": "An array of strings to specify the AWS account IDs that can access the bucket.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "ResourcesReceivingAccess": { - "description": "The names of the Lightsail resources for which to set bucket access.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Url": { - "description": "The URL of the bucket.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/BucketArn", - "/properties/Url", - "/properties/AbleToUpdateBundle" - ], - "required": [ - "BucketName", - "BundleId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "lightsail:TagResource", - "lightsail:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Lightsail::Bucket" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BucketName" + ], + "definitions": { + "AccessRules": { + "additionalProperties": false, + "description": "An object that sets the public accessibility of objects in the specified bucket.", + "properties": { + "AllowPublicOverrides": { + "description": "A Boolean value that indicates whether the access control list (ACL) permissions that are applied to individual objects override the getObject option that is currently specified.", + "type": "boolean" + }, + "GetObject": { + "description": "Specifies the anonymous access to all objects in a bucket.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Lightsail::Bucket", + "handlers": { + "create": { + "permissions": [ + "lightsail:CreateBucket", + "lightsail:GetBuckets", + "lightsail:GetInstance", + "lightsail:UpdateBucket", + "lightsail:UpdateBucketBundle", + "lightsail:SetResourceAccessForBucket", + "lightsail:TagResource", + "lightsail:UntagResource" + ] + }, + "delete": { + "permissions": [ + "lightsail:DeleteBucket", + "lightsail:GetBuckets" + ] + }, + "list": { + "permissions": [ + "lightsail:GetBuckets" + ] + }, + "read": { + "permissions": [ + "lightsail:GetBuckets" + ] + }, + "update": { + "permissions": [ + "lightsail:GetBuckets", + "lightsail:GetInstance", + "lightsail:UpdateBucket", + "lightsail:UpdateBucketBundle", + "lightsail:SetResourceAccessForBucket", + "lightsail:TagResource", + "lightsail:UntagResource" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/BucketName" + ], + "properties": { + "AbleToUpdateBundle": { + "description": "Indicates whether the bundle that is currently applied to a bucket can be changed to another bundle. You can update a bucket's bundle only one time within a monthly AWS billing cycle.", + "type": "boolean" + }, + "AccessRules": { + "$ref": "#/definitions/AccessRules" + }, + "BucketArn": { + "type": "string" + }, + "BucketName": { + "description": "The name for the bucket.", + "maxLength": 54, + "minLength": 3, + "pattern": "^[a-z0-9][a-z0-9-]{1,52}[a-z0-9]$", + "type": "string" + }, + "BundleId": { + "description": "The ID of the bundle to use for the bucket.", + "type": "string" + }, + "ObjectVersioning": { + "description": "Specifies whether to enable or disable versioning of objects in the bucket.", + "type": "boolean" + }, + "ReadOnlyAccessAccounts": { + "description": "An array of strings to specify the AWS account IDs that can access the bucket.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "ResourcesReceivingAccess": { + "description": "The names of the Lightsail resources for which to set bucket access.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Url": { + "description": "The URL of the bucket.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/BucketArn", + "/properties/Url", + "/properties/AbleToUpdateBundle" + ], + "required": [ + "BucketName", + "BundleId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "lightsail:TagResource", + "lightsail:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Lightsail::Bucket" +} diff --git a/src/schema/aws-lightsail-certificate.json b/src/schema/aws-lightsail-certificate.json index e3e4f0a8..d3cbd345 100644 --- a/src/schema/aws-lightsail-certificate.json +++ b/src/schema/aws-lightsail-certificate.json @@ -1,125 +1,125 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CertificateName", - "/properties/DomainName", - "/properties/SubjectAlternativeNames" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Lightsail::Certificate.", - "handlers": { - "create": { - "permissions": [ - "lightsail:CreateCertificate", - "lightsail:GetCertificates", - "lightsail:TagResource", - "lightsail:UntagResource" - ] - }, - "delete": { - "permissions": [ - "lightsail:DeleteCertificate", - "lightsail:GetCertificates" - ] - }, - "list": { - "permissions": [ - "lightsail:GetCertificates" - ] - }, - "read": { - "permissions": [ - "lightsail:GetCertificates" - ] - }, - "update": { - "permissions": [ - "lightsail:GetCertificates", - "lightsail:TagResource", - "lightsail:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/CertificateName" - ], - "properties": { - "CertificateArn": { - "type": "string" - }, - "CertificateName": { - "description": "The name for the certificate.", - "type": "string" - }, - "DomainName": { - "description": "The domain name (e.g., example.com ) for the certificate.", - "type": "string" - }, - "Status": { - "description": "The validation status of the certificate.", - "type": "string" - }, - "SubjectAlternativeNames": { - "description": "An array of strings that specify the alternate domains (e.g., example2.com) and subdomains (e.g., blog.example.com) for the certificate.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/CertificateArn", - "/properties/Status" - ], - "required": [ - "CertificateName", - "DomainName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "lightsail:TagResource", - "lightsail:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Lightsail::Certificate" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CertificateName", + "/properties/DomainName", + "/properties/SubjectAlternativeNames" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Lightsail::Certificate.", + "handlers": { + "create": { + "permissions": [ + "lightsail:CreateCertificate", + "lightsail:GetCertificates", + "lightsail:TagResource", + "lightsail:UntagResource" + ] + }, + "delete": { + "permissions": [ + "lightsail:DeleteCertificate", + "lightsail:GetCertificates" + ] + }, + "list": { + "permissions": [ + "lightsail:GetCertificates" + ] + }, + "read": { + "permissions": [ + "lightsail:GetCertificates" + ] + }, + "update": { + "permissions": [ + "lightsail:GetCertificates", + "lightsail:TagResource", + "lightsail:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/CertificateName" + ], + "properties": { + "CertificateArn": { + "type": "string" + }, + "CertificateName": { + "description": "The name for the certificate.", + "type": "string" + }, + "DomainName": { + "description": "The domain name (e.g., example.com ) for the certificate.", + "type": "string" + }, + "Status": { + "description": "The validation status of the certificate.", + "type": "string" + }, + "SubjectAlternativeNames": { + "description": "An array of strings that specify the alternate domains (e.g., example2.com) and subdomains (e.g., blog.example.com) for the certificate.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/CertificateArn", + "/properties/Status" + ], + "required": [ + "CertificateName", + "DomainName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "lightsail:TagResource", + "lightsail:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Lightsail::Certificate" +} diff --git a/src/schema/aws-lightsail-container.json b/src/schema/aws-lightsail-container.json index 2cde312c..8c1171c6 100644 --- a/src/schema/aws-lightsail-container.json +++ b/src/schema/aws-lightsail-container.json @@ -1,333 +1,333 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServiceName" - ], - "definitions": { - "Container": { - "additionalProperties": false, - "description": "Describes the settings of a container that will be launched, or that is launched, to an Amazon Lightsail container service.", - "properties": { - "Command": { - "description": "The launch command for the container.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "ContainerName": { - "description": "The name of the container.", - "type": "string" - }, - "Environment": { - "description": "The environment variables of the container.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EnvironmentVariable" - }, - "type": "array", - "uniqueItems": true - }, - "Image": { - "description": "The name of the image used for the container.", - "type": "string" - }, - "Ports": { - "description": "The open firewall ports of the container.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PortInfo" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "ContainerServiceDeployment": { - "additionalProperties": false, - "description": "Describes a container deployment configuration of an Amazon Lightsail container service.", - "properties": { - "Containers": { - "description": "An object that describes the configuration for the containers of the deployment.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Container" - }, - "type": "array", - "uniqueItems": true - }, - "PublicEndpoint": { - "$ref": "#/definitions/PublicEndpoint", - "description": "An object that describes the endpoint of the deployment." - } - }, - "type": "object" - }, - "EnvironmentVariable": { - "additionalProperties": false, - "properties": { - "Value": { - "type": "string" - }, - "Variable": { - "type": "string" - } - }, - "type": "object" - }, - "HealthCheckConfig": { - "additionalProperties": false, - "description": "Describes the health check configuration of an Amazon Lightsail container service.", - "properties": { - "HealthyThreshold": { - "description": "The number of consecutive health checks successes required before moving the container to the Healthy state. The default value is 2.", - "type": "integer" - }, - "IntervalSeconds": { - "description": "The approximate interval, in seconds, between health checks of an individual container. You can specify between 5 and 300 seconds. The default value is 5.", - "type": "integer" - }, - "Path": { - "description": "The path on the container on which to perform the health check. The default value is /.", - "type": "string" - }, - "SuccessCodes": { - "description": "The HTTP codes to use when checking for a successful response from a container. You can specify values between 200 and 499. You can specify multiple values (for example, 200,202) or a range of values (for example, 200-299).", - "type": "string" - }, - "TimeoutSeconds": { - "description": "The amount of time, in seconds, during which no response means a failed health check. You can specify between 2 and 60 seconds. The default value is 2.", - "type": "integer" - }, - "UnhealthyThreshold": { - "description": "The number of consecutive health check failures required before moving the container to the Unhealthy state. The default value is 2.", - "type": "integer" - } - }, - "type": "object" - }, - "PortInfo": { - "additionalProperties": false, - "properties": { - "Port": { - "type": "string" - }, - "Protocol": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateRegistryAccess": { - "additionalProperties": false, - "description": "An object to describe the configuration for the container service to access private container image repositories, such as Amazon Elastic Container Registry (Amazon ECR) private repositories.", - "properties": { - "EcrImagePullerRole": { - "additionalProperties": false, - "description": "An object to describe a request to activate or deactivate the role that you can use to grant an Amazon Lightsail container service access to Amazon Elastic Container Registry (Amazon ECR) private repositories.", - "properties": { - "IsActive": { - "description": "A Boolean value that indicates whether to activate the role.", - "type": "boolean" - }, - "PrincipalArn": { - "description": "The Amazon Resource Name (ARN) of the role, if it is activated.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "PublicDomainName": { - "additionalProperties": false, - "description": "The public domain name to use with the container service, such as example.com and www.example.com.", - "properties": { - "CertificateName": { - "type": "string" - }, - "DomainNames": { - "description": "An object that describes the configuration for the containers of the deployment.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "PublicEndpoint": { - "additionalProperties": false, - "description": "Describes the settings of a public endpoint for an Amazon Lightsail container service.", - "properties": { - "ContainerName": { - "description": "The name of the container for the endpoint.", - "type": "string" - }, - "ContainerPort": { - "description": "The port of the container to which traffic is forwarded to.", - "type": "integer" - }, - "HealthCheckConfig": { - "$ref": "#/definitions/HealthCheckConfig", - "description": "An object that describes the health check configuration of the container." - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Lightsail::Container", - "handlers": { - "create": { - "permissions": [ - "lightsail:CreateContainerService", - "lightsail:CreateContainerServiceDeployment", - "lightsail:GetContainerServices", - "lightsail:TagResource", - "lightsail:UntagResource", - "lightsail:UpdateContainerService" - ] - }, - "delete": { - "permissions": [ - "lightsail:DeleteContainerService", - "lightsail:GetContainerServices" - ] - }, - "list": { - "permissions": [ - "lightsail:GetContainerServices" - ] - }, - "read": { - "permissions": [ - "lightsail:GetContainerServices" - ] - }, - "update": { - "permissions": [ - "lightsail:CreateContainerServiceDeployment", - "lightsail:GetContainerServices", - "lightsail:TagResource", - "lightsail:UntagResource", - "lightsail:UpdateContainerService" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/ServiceName" - ], - "properties": { - "ContainerArn": { - "type": "string" - }, - "ContainerServiceDeployment": { - "$ref": "#/definitions/ContainerServiceDeployment", - "description": "Describes a container deployment configuration of an Amazon Lightsail container service." - }, - "IsDisabled": { - "description": "A Boolean value to indicate whether the container service is disabled.", - "type": "boolean" - }, - "Power": { - "description": "The power specification for the container service.", - "type": "string" - }, - "PrincipalArn": { - "description": "The principal ARN of the container service.", - "type": "string" - }, - "PrivateRegistryAccess": { - "$ref": "#/definitions/PrivateRegistryAccess", - "description": "A Boolean value to indicate whether the container service has access to private container image repositories, such as Amazon Elastic Container Registry (Amazon ECR) private repositories." - }, - "PublicDomainNames": { - "description": "The public domain names to use with the container service, such as example.com and www.example.com.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PublicDomainName" - }, - "type": "array", - "uniqueItems": true - }, - "Scale": { - "description": "The scale specification for the container service.", - "maximum": 20, - "minimum": 1, - "type": "integer" - }, - "ServiceName": { - "description": "The name for the container service.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-z0-9]{1,2}|[a-z0-9][a-z0-9-]+[a-z0-9]$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Url": { - "description": "The publicly accessible URL of the container service.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ContainerArn", - "/properties/Url", - "/properties/PrincipalArn", - "/properties/PrivateRegistryAccess/EcrImagePullerRole/PrincipalArn" - ], - "required": [ - "ServiceName", - "Power", - "Scale" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "lightsail:TagResource", - "lightsail:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Lightsail::Container" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServiceName" + ], + "definitions": { + "Container": { + "additionalProperties": false, + "description": "Describes the settings of a container that will be launched, or that is launched, to an Amazon Lightsail container service.", + "properties": { + "Command": { + "description": "The launch command for the container.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "ContainerName": { + "description": "The name of the container.", + "type": "string" + }, + "Environment": { + "description": "The environment variables of the container.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EnvironmentVariable" + }, + "type": "array", + "uniqueItems": true + }, + "Image": { + "description": "The name of the image used for the container.", + "type": "string" + }, + "Ports": { + "description": "The open firewall ports of the container.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PortInfo" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ContainerServiceDeployment": { + "additionalProperties": false, + "description": "Describes a container deployment configuration of an Amazon Lightsail container service.", + "properties": { + "Containers": { + "description": "An object that describes the configuration for the containers of the deployment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Container" + }, + "type": "array", + "uniqueItems": true + }, + "PublicEndpoint": { + "$ref": "#/definitions/PublicEndpoint", + "description": "An object that describes the endpoint of the deployment." + } + }, + "type": "object" + }, + "EnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Value": { + "type": "string" + }, + "Variable": { + "type": "string" + } + }, + "type": "object" + }, + "HealthCheckConfig": { + "additionalProperties": false, + "description": "Describes the health check configuration of an Amazon Lightsail container service.", + "properties": { + "HealthyThreshold": { + "description": "The number of consecutive health checks successes required before moving the container to the Healthy state. The default value is 2.", + "type": "integer" + }, + "IntervalSeconds": { + "description": "The approximate interval, in seconds, between health checks of an individual container. You can specify between 5 and 300 seconds. The default value is 5.", + "type": "integer" + }, + "Path": { + "description": "The path on the container on which to perform the health check. The default value is /.", + "type": "string" + }, + "SuccessCodes": { + "description": "The HTTP codes to use when checking for a successful response from a container. You can specify values between 200 and 499. You can specify multiple values (for example, 200,202) or a range of values (for example, 200-299).", + "type": "string" + }, + "TimeoutSeconds": { + "description": "The amount of time, in seconds, during which no response means a failed health check. You can specify between 2 and 60 seconds. The default value is 2.", + "type": "integer" + }, + "UnhealthyThreshold": { + "description": "The number of consecutive health check failures required before moving the container to the Unhealthy state. The default value is 2.", + "type": "integer" + } + }, + "type": "object" + }, + "PortInfo": { + "additionalProperties": false, + "properties": { + "Port": { + "type": "string" + }, + "Protocol": { + "type": "string" + } + }, + "type": "object" + }, + "PrivateRegistryAccess": { + "additionalProperties": false, + "description": "An object to describe the configuration for the container service to access private container image repositories, such as Amazon Elastic Container Registry (Amazon ECR) private repositories.", + "properties": { + "EcrImagePullerRole": { + "additionalProperties": false, + "description": "An object to describe a request to activate or deactivate the role that you can use to grant an Amazon Lightsail container service access to Amazon Elastic Container Registry (Amazon ECR) private repositories.", + "properties": { + "IsActive": { + "description": "A Boolean value that indicates whether to activate the role.", + "type": "boolean" + }, + "PrincipalArn": { + "description": "The Amazon Resource Name (ARN) of the role, if it is activated.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "PublicDomainName": { + "additionalProperties": false, + "description": "The public domain name to use with the container service, such as example.com and www.example.com.", + "properties": { + "CertificateName": { + "type": "string" + }, + "DomainNames": { + "description": "An object that describes the configuration for the containers of the deployment.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "PublicEndpoint": { + "additionalProperties": false, + "description": "Describes the settings of a public endpoint for an Amazon Lightsail container service.", + "properties": { + "ContainerName": { + "description": "The name of the container for the endpoint.", + "type": "string" + }, + "ContainerPort": { + "description": "The port of the container to which traffic is forwarded to.", + "type": "integer" + }, + "HealthCheckConfig": { + "$ref": "#/definitions/HealthCheckConfig", + "description": "An object that describes the health check configuration of the container." + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Lightsail::Container", + "handlers": { + "create": { + "permissions": [ + "lightsail:CreateContainerService", + "lightsail:CreateContainerServiceDeployment", + "lightsail:GetContainerServices", + "lightsail:TagResource", + "lightsail:UntagResource", + "lightsail:UpdateContainerService" + ] + }, + "delete": { + "permissions": [ + "lightsail:DeleteContainerService", + "lightsail:GetContainerServices" + ] + }, + "list": { + "permissions": [ + "lightsail:GetContainerServices" + ] + }, + "read": { + "permissions": [ + "lightsail:GetContainerServices" + ] + }, + "update": { + "permissions": [ + "lightsail:CreateContainerServiceDeployment", + "lightsail:GetContainerServices", + "lightsail:TagResource", + "lightsail:UntagResource", + "lightsail:UpdateContainerService" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/ServiceName" + ], + "properties": { + "ContainerArn": { + "type": "string" + }, + "ContainerServiceDeployment": { + "$ref": "#/definitions/ContainerServiceDeployment", + "description": "Describes a container deployment configuration of an Amazon Lightsail container service." + }, + "IsDisabled": { + "description": "A Boolean value to indicate whether the container service is disabled.", + "type": "boolean" + }, + "Power": { + "description": "The power specification for the container service.", + "type": "string" + }, + "PrincipalArn": { + "description": "The principal ARN of the container service.", + "type": "string" + }, + "PrivateRegistryAccess": { + "$ref": "#/definitions/PrivateRegistryAccess", + "description": "A Boolean value to indicate whether the container service has access to private container image repositories, such as Amazon Elastic Container Registry (Amazon ECR) private repositories." + }, + "PublicDomainNames": { + "description": "The public domain names to use with the container service, such as example.com and www.example.com.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PublicDomainName" + }, + "type": "array", + "uniqueItems": true + }, + "Scale": { + "description": "The scale specification for the container service.", + "maximum": 20, + "minimum": 1, + "type": "integer" + }, + "ServiceName": { + "description": "The name for the container service.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-z0-9]{1,2}|[a-z0-9][a-z0-9-]+[a-z0-9]$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Url": { + "description": "The publicly accessible URL of the container service.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ContainerArn", + "/properties/Url", + "/properties/PrincipalArn", + "/properties/PrivateRegistryAccess/EcrImagePullerRole/PrincipalArn" + ], + "required": [ + "ServiceName", + "Power", + "Scale" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "lightsail:TagResource", + "lightsail:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Lightsail::Container" +} diff --git a/src/schema/aws-lightsail-database.json b/src/schema/aws-lightsail-database.json index caf1212b..68eef3ac 100644 --- a/src/schema/aws-lightsail-database.json +++ b/src/schema/aws-lightsail-database.json @@ -1,241 +1,241 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RelationalDatabaseName", - "/properties/AvailabilityZone", - "/properties/RelationalDatabaseBlueprintId", - "/properties/RelationalDatabaseBundleId", - "/properties/MasterDatabaseName", - "/properties/MasterUsername" - ], - "definitions": { - "RelationalDatabaseParameter": { - "additionalProperties": false, - "description": "Describes the parameters of the database.", - "properties": { - "AllowedValues": { - "description": "Specifies the valid range of values for the parameter.", - "type": "string" - }, - "ApplyMethod": { - "description": "Indicates when parameter updates are applied. Can be immediate or pending-reboot.", - "type": "string" - }, - "ApplyType": { - "description": "Specifies the engine-specific parameter type.", - "type": "string" - }, - "DataType": { - "description": "Specifies the valid data type for the parameter.", - "type": "string" - }, - "Description": { - "description": "Provides a description of the parameter.", - "type": "string" - }, - "IsModifiable": { - "description": "A Boolean value indicating whether the parameter can be modified.", - "type": "boolean" - }, - "ParameterName": { - "description": "Specifies the name of the parameter.", - "type": "string" - }, - "ParameterValue": { - "description": "Specifies the value of the parameter.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Lightsail::Database", - "handlers": { - "create": { - "permissions": [ - "lightsail:CreateRelationalDatabase", - "lightsail:GetRelationalDatabase", - "lightsail:GetRelationalDatabases", - "lightsail:GetRegions", - "lightsail:TagResource", - "lightsail:UntagResource", - "lightsail:UpdateRelationalDatabase", - "lightsail:UpdateRelationalDatabaseParameters" - ] - }, - "delete": { - "permissions": [ - "lightsail:DeleteRelationalDatabase", - "lightsail:GetRelationalDatabase", - "lightsail:GetRelationalDatabases" - ] - }, - "list": { - "permissions": [ - "lightsail:GetRelationalDatabases" - ] - }, - "read": { - "permissions": [ - "lightsail:GetRelationalDatabase", - "lightsail:GetRelationalDatabases" - ] - }, - "update": { - "permissions": [ - "lightsail:GetRelationalDatabase", - "lightsail:GetRelationalDatabases", - "lightsail:TagResource", - "lightsail:UntagResource", - "lightsail:UpdateRelationalDatabase", - "lightsail:UpdateRelationalDatabaseParameters" - ] - } - }, - "primaryIdentifier": [ - "/properties/RelationalDatabaseName" - ], - "properties": { - "AvailabilityZone": { - "description": "The Availability Zone in which to create your new database. Use the us-east-2a case-sensitive format.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "BackupRetention": { - "description": "When true, enables automated backup retention for your database. Updates are applied during the next maintenance window because this can result in an outage.", - "type": "boolean" - }, - "CaCertificateIdentifier": { - "description": "Indicates the certificate that needs to be associated with the database.", - "type": "string" - }, - "DatabaseArn": { - "type": "string" - }, - "MasterDatabaseName": { - "description": "The name of the database to create when the Lightsail database resource is created. For MySQL, if this parameter isn't specified, no database is created in the database resource. For PostgreSQL, if this parameter isn't specified, a database named postgres is created in the database resource.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "MasterUserPassword": { - "description": "The password for the master user. The password can include any printable ASCII character except \"/\", \"\"\", or \"@\". It cannot contain spaces.", - "maxLength": 63, - "minLength": 1, - "type": "string" - }, - "MasterUsername": { - "description": "The name for the master user.", - "maxLength": 63, - "minLength": 1, - "type": "string" - }, - "PreferredBackupWindow": { - "description": "The daily time range during which automated backups are created for your new database if automated backups are enabled.", - "type": "string" - }, - "PreferredMaintenanceWindow": { - "description": "The weekly time range during which system maintenance can occur on your new database.", - "type": "string" - }, - "PubliclyAccessible": { - "description": "Specifies the accessibility options for your new database. A value of true specifies a database that is available to resources outside of your Lightsail account. A value of false specifies a database that is available only to your Lightsail resources in the same region as your database.", - "type": "boolean" - }, - "RelationalDatabaseBlueprintId": { - "description": "The blueprint ID for your new database. A blueprint describes the major engine version of a database.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "RelationalDatabaseBundleId": { - "description": "The bundle ID for your new database. A bundle describes the performance specifications for your database.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "RelationalDatabaseName": { - "description": "The name to use for your new Lightsail database resource.", - "maxLength": 255, - "minLength": 2, - "pattern": "\\w[\\w\\-]*\\w", - "type": "string" - }, - "RelationalDatabaseParameters": { - "description": "Update one or more parameters of the relational database.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RelationalDatabaseParameter" - }, - "type": "array", - "uniqueItems": true - }, - "RotateMasterUserPassword": { - "description": "When true, the master user password is changed to a new strong password generated by Lightsail. Use the get relational database master user password operation to get the new password.", - "type": "boolean" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "propertyTransform": { - "/properties/PreferredMaintenanceWindow": "$lowercase(PreferredMaintenanceWindow)" - }, - "readOnlyProperties": [ - "/properties/DatabaseArn" - ], - "required": [ - "RelationalDatabaseName", - "RelationalDatabaseBlueprintId", - "RelationalDatabaseBundleId", - "MasterDatabaseName", - "MasterUsername" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "lightsail:TagResource", - "lightsail:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Lightsail::Database", - "writeOnlyProperties": [ - "/properties/MasterUserPassword", - "/properties/RelationalDatabaseParameters", - "/properties/RotateMasterUserPassword" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RelationalDatabaseName", + "/properties/AvailabilityZone", + "/properties/RelationalDatabaseBlueprintId", + "/properties/RelationalDatabaseBundleId", + "/properties/MasterDatabaseName", + "/properties/MasterUsername" + ], + "definitions": { + "RelationalDatabaseParameter": { + "additionalProperties": false, + "description": "Describes the parameters of the database.", + "properties": { + "AllowedValues": { + "description": "Specifies the valid range of values for the parameter.", + "type": "string" + }, + "ApplyMethod": { + "description": "Indicates when parameter updates are applied. Can be immediate or pending-reboot.", + "type": "string" + }, + "ApplyType": { + "description": "Specifies the engine-specific parameter type.", + "type": "string" + }, + "DataType": { + "description": "Specifies the valid data type for the parameter.", + "type": "string" + }, + "Description": { + "description": "Provides a description of the parameter.", + "type": "string" + }, + "IsModifiable": { + "description": "A Boolean value indicating whether the parameter can be modified.", + "type": "boolean" + }, + "ParameterName": { + "description": "Specifies the name of the parameter.", + "type": "string" + }, + "ParameterValue": { + "description": "Specifies the value of the parameter.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Lightsail::Database", + "handlers": { + "create": { + "permissions": [ + "lightsail:CreateRelationalDatabase", + "lightsail:GetRelationalDatabase", + "lightsail:GetRelationalDatabases", + "lightsail:GetRegions", + "lightsail:TagResource", + "lightsail:UntagResource", + "lightsail:UpdateRelationalDatabase", + "lightsail:UpdateRelationalDatabaseParameters" + ] + }, + "delete": { + "permissions": [ + "lightsail:DeleteRelationalDatabase", + "lightsail:GetRelationalDatabase", + "lightsail:GetRelationalDatabases" + ] + }, + "list": { + "permissions": [ + "lightsail:GetRelationalDatabases" + ] + }, + "read": { + "permissions": [ + "lightsail:GetRelationalDatabase", + "lightsail:GetRelationalDatabases" + ] + }, + "update": { + "permissions": [ + "lightsail:GetRelationalDatabase", + "lightsail:GetRelationalDatabases", + "lightsail:TagResource", + "lightsail:UntagResource", + "lightsail:UpdateRelationalDatabase", + "lightsail:UpdateRelationalDatabaseParameters" + ] + } + }, + "primaryIdentifier": [ + "/properties/RelationalDatabaseName" + ], + "properties": { + "AvailabilityZone": { + "description": "The Availability Zone in which to create your new database. Use the us-east-2a case-sensitive format.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "BackupRetention": { + "description": "When true, enables automated backup retention for your database. Updates are applied during the next maintenance window because this can result in an outage.", + "type": "boolean" + }, + "CaCertificateIdentifier": { + "description": "Indicates the certificate that needs to be associated with the database.", + "type": "string" + }, + "DatabaseArn": { + "type": "string" + }, + "MasterDatabaseName": { + "description": "The name of the database to create when the Lightsail database resource is created. For MySQL, if this parameter isn't specified, no database is created in the database resource. For PostgreSQL, if this parameter isn't specified, a database named postgres is created in the database resource.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "MasterUserPassword": { + "description": "The password for the master user. The password can include any printable ASCII character except \"/\", \"\"\", or \"@\". It cannot contain spaces.", + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "MasterUsername": { + "description": "The name for the master user.", + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "PreferredBackupWindow": { + "description": "The daily time range during which automated backups are created for your new database if automated backups are enabled.", + "type": "string" + }, + "PreferredMaintenanceWindow": { + "description": "The weekly time range during which system maintenance can occur on your new database.", + "type": "string" + }, + "PubliclyAccessible": { + "description": "Specifies the accessibility options for your new database. A value of true specifies a database that is available to resources outside of your Lightsail account. A value of false specifies a database that is available only to your Lightsail resources in the same region as your database.", + "type": "boolean" + }, + "RelationalDatabaseBlueprintId": { + "description": "The blueprint ID for your new database. A blueprint describes the major engine version of a database.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "RelationalDatabaseBundleId": { + "description": "The bundle ID for your new database. A bundle describes the performance specifications for your database.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "RelationalDatabaseName": { + "description": "The name to use for your new Lightsail database resource.", + "maxLength": 255, + "minLength": 2, + "pattern": "\\w[\\w\\-]*\\w", + "type": "string" + }, + "RelationalDatabaseParameters": { + "description": "Update one or more parameters of the relational database.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RelationalDatabaseParameter" + }, + "type": "array", + "uniqueItems": true + }, + "RotateMasterUserPassword": { + "description": "When true, the master user password is changed to a new strong password generated by Lightsail. Use the get relational database master user password operation to get the new password.", + "type": "boolean" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": { + "/properties/PreferredMaintenanceWindow": "$lowercase(PreferredMaintenanceWindow)" + }, + "readOnlyProperties": [ + "/properties/DatabaseArn" + ], + "required": [ + "RelationalDatabaseName", + "RelationalDatabaseBlueprintId", + "RelationalDatabaseBundleId", + "MasterDatabaseName", + "MasterUsername" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "lightsail:TagResource", + "lightsail:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Lightsail::Database", + "writeOnlyProperties": [ + "/properties/MasterUserPassword", + "/properties/RelationalDatabaseParameters", + "/properties/RotateMasterUserPassword" + ] +} diff --git a/src/schema/aws-lightsail-disk.json b/src/schema/aws-lightsail-disk.json index 833057ae..f7e701dd 100644 --- a/src/schema/aws-lightsail-disk.json +++ b/src/schema/aws-lightsail-disk.json @@ -1,242 +1,242 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DiskName", - "/properties/AvailabilityZone", - "/properties/SizeInGb" - ], - "definitions": { - "AddOn": { - "additionalProperties": false, - "description": "A addon associate with a resource.", - "properties": { - "AddOnType": { - "description": "The add-on type", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "AutoSnapshotAddOnRequest": { - "$ref": "#/definitions/AutoSnapshotAddOn" - }, - "Status": { - "description": "Status of the Addon", - "enum": [ - "Enabling", - "Disabling", - "Enabled", - "Terminating", - "Terminated", - "Disabled", - "Failed" - ], - "type": "string" - } - }, - "required": [ - "AddOnType" - ], - "type": "object" - }, - "AutoSnapshotAddOn": { - "additionalProperties": false, - "description": "An object that represents additional parameters when enabling or modifying the automatic snapshot add-on", - "properties": { - "SnapshotTimeOfDay": { - "description": "The daily time when an automatic snapshot will be created.", - "pattern": "^[0-9]{2}:00$", - "type": "string" - } - }, - "type": "object" - }, - "Location": { - "additionalProperties": false, - "description": "Location of a resource.", - "properties": { - "AvailabilityZone": { - "description": "The Availability Zone in which to create your disk. Use the following format: us-east-2a (case sensitive). Be sure to add the include Availability Zones parameter to your request.", - "type": "string" - }, - "RegionName": { - "description": "The Region Name in which to create your disk.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Lightsail::Disk", - "handlers": { - "create": { - "permissions": [ - "lightsail:CreateDisk", - "lightsail:EnableAddOn", - "lightsail:DisableAddOn", - "lightsail:GetDisk", - "lightsail:GetDisks", - "lightsail:GetRegions", - "lightsail:TagResource", - "lightsail:UntagResource" - ] - }, - "delete": { - "permissions": [ - "lightsail:GetDisk", - "lightsail:GetDisks", - "lightsail:DeleteDisk" - ] - }, - "list": { - "permissions": [ - "lightsail:GetDisks" - ] - }, - "read": { - "permissions": [ - "lightsail:GetDisk", - "lightsail:GetDisks" - ] - }, - "update": { - "permissions": [ - "lightsail:GetDisk", - "lightsail:GetDisks", - "lightsail:EnableAddOn", - "lightsail:DisableAddOn", - "lightsail:TagResource", - "lightsail:UntagResource" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/DiskName" - ], - "properties": { - "AddOns": { - "description": "An array of objects representing the add-ons to enable for the new instance.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AddOn" - }, - "type": "array" - }, - "AttachedTo": { - "description": "Name of the attached Lightsail Instance", - "type": "string" - }, - "AttachmentState": { - "description": "Attachment State of the Lightsail disk", - "type": "string" - }, - "AvailabilityZone": { - "description": "The Availability Zone in which to create your instance. Use the following format: us-east-2a (case sensitive). Be sure to add the include Availability Zones parameter to your request.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "DiskArn": { - "type": "string" - }, - "DiskName": { - "description": "The names to use for your new Lightsail disk.", - "maxLength": 254, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][\\w\\-.]*[a-zA-Z0-9]$", - "type": "string" - }, - "Iops": { - "description": "Iops of the Lightsail disk", - "type": "integer" - }, - "IsAttached": { - "description": "Check is Disk is attached state", - "type": "boolean" - }, - "Location": { - "$ref": "#/definitions/Location" - }, - "Path": { - "description": "Path of the attached Disk", - "type": "string" - }, - "ResourceType": { - "description": "Resource type of Lightsail instance.", - "type": "string" - }, - "SizeInGb": { - "description": "Size of the Lightsail disk", - "type": "integer" - }, - "State": { - "description": "State of the Lightsail disk", - "type": "string" - }, - "SupportCode": { - "description": "Support code to help identify any issues", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/AttachedTo", - "/properties/Path", - "/properties/IsAttached", - "/properties/Iops", - "/properties/AttachmentState", - "/properties/State", - "/properties/ResourceType", - "/properties/Location/AvailabilityZone", - "/properties/Location/RegionName", - "/properties/SupportCode", - "/properties/DiskArn" - ], - "required": [ - "DiskName", - "SizeInGb" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "lightsail:TagResource", - "lightsail:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Lightsail::Disk" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DiskName", + "/properties/AvailabilityZone", + "/properties/SizeInGb" + ], + "definitions": { + "AddOn": { + "additionalProperties": false, + "description": "A addon associate with a resource.", + "properties": { + "AddOnType": { + "description": "The add-on type", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "AutoSnapshotAddOnRequest": { + "$ref": "#/definitions/AutoSnapshotAddOn" + }, + "Status": { + "description": "Status of the Addon", + "enum": [ + "Enabling", + "Disabling", + "Enabled", + "Terminating", + "Terminated", + "Disabled", + "Failed" + ], + "type": "string" + } + }, + "required": [ + "AddOnType" + ], + "type": "object" + }, + "AutoSnapshotAddOn": { + "additionalProperties": false, + "description": "An object that represents additional parameters when enabling or modifying the automatic snapshot add-on", + "properties": { + "SnapshotTimeOfDay": { + "description": "The daily time when an automatic snapshot will be created.", + "pattern": "^[0-9]{2}:00$", + "type": "string" + } + }, + "type": "object" + }, + "Location": { + "additionalProperties": false, + "description": "Location of a resource.", + "properties": { + "AvailabilityZone": { + "description": "The Availability Zone in which to create your disk. Use the following format: us-east-2a (case sensitive). Be sure to add the include Availability Zones parameter to your request.", + "type": "string" + }, + "RegionName": { + "description": "The Region Name in which to create your disk.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Lightsail::Disk", + "handlers": { + "create": { + "permissions": [ + "lightsail:CreateDisk", + "lightsail:EnableAddOn", + "lightsail:DisableAddOn", + "lightsail:GetDisk", + "lightsail:GetDisks", + "lightsail:GetRegions", + "lightsail:TagResource", + "lightsail:UntagResource" + ] + }, + "delete": { + "permissions": [ + "lightsail:GetDisk", + "lightsail:GetDisks", + "lightsail:DeleteDisk" + ] + }, + "list": { + "permissions": [ + "lightsail:GetDisks" + ] + }, + "read": { + "permissions": [ + "lightsail:GetDisk", + "lightsail:GetDisks" + ] + }, + "update": { + "permissions": [ + "lightsail:GetDisk", + "lightsail:GetDisks", + "lightsail:EnableAddOn", + "lightsail:DisableAddOn", + "lightsail:TagResource", + "lightsail:UntagResource" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/DiskName" + ], + "properties": { + "AddOns": { + "description": "An array of objects representing the add-ons to enable for the new instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AddOn" + }, + "type": "array" + }, + "AttachedTo": { + "description": "Name of the attached Lightsail Instance", + "type": "string" + }, + "AttachmentState": { + "description": "Attachment State of the Lightsail disk", + "type": "string" + }, + "AvailabilityZone": { + "description": "The Availability Zone in which to create your instance. Use the following format: us-east-2a (case sensitive). Be sure to add the include Availability Zones parameter to your request.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "DiskArn": { + "type": "string" + }, + "DiskName": { + "description": "The names to use for your new Lightsail disk.", + "maxLength": 254, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][\\w\\-.]*[a-zA-Z0-9]$", + "type": "string" + }, + "Iops": { + "description": "Iops of the Lightsail disk", + "type": "integer" + }, + "IsAttached": { + "description": "Check is Disk is attached state", + "type": "boolean" + }, + "Location": { + "$ref": "#/definitions/Location" + }, + "Path": { + "description": "Path of the attached Disk", + "type": "string" + }, + "ResourceType": { + "description": "Resource type of Lightsail instance.", + "type": "string" + }, + "SizeInGb": { + "description": "Size of the Lightsail disk", + "type": "integer" + }, + "State": { + "description": "State of the Lightsail disk", + "type": "string" + }, + "SupportCode": { + "description": "Support code to help identify any issues", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/AttachedTo", + "/properties/Path", + "/properties/IsAttached", + "/properties/Iops", + "/properties/AttachmentState", + "/properties/State", + "/properties/ResourceType", + "/properties/Location/AvailabilityZone", + "/properties/Location/RegionName", + "/properties/SupportCode", + "/properties/DiskArn" + ], + "required": [ + "DiskName", + "SizeInGb" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "lightsail:TagResource", + "lightsail:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Lightsail::Disk" +} diff --git a/src/schema/aws-lightsail-distribution.json b/src/schema/aws-lightsail-distribution.json index c9fb5638..4ffa231c 100644 --- a/src/schema/aws-lightsail-distribution.json +++ b/src/schema/aws-lightsail-distribution.json @@ -1,315 +1,315 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DistributionName", - "/properties/IpAddressType" - ], - "definitions": { - "CacheBehavior": { - "additionalProperties": false, - "description": "Describes the default cache behavior of an Amazon Lightsail content delivery network (CDN) distribution.", - "properties": { - "Behavior": { - "description": "The cache behavior of the distribution.", - "type": "string" - } - }, - "type": "object" - }, - "CacheBehaviorPerPath": { - "additionalProperties": false, - "description": "Describes the per-path cache behavior of an Amazon Lightsail content delivery network (CDN) distribution.", - "properties": { - "Behavior": { - "description": "The cache behavior for the specified path.", - "type": "string" - }, - "Path": { - "description": "The path to a directory or file to cached, or not cache. Use an asterisk symbol to specify wildcard directories (path/to/assets/*), and file types (*.html, *jpg, *js). Directories and file paths are case-sensitive.", - "type": "string" - } - }, - "type": "object" - }, - "CacheSettings": { - "additionalProperties": false, - "description": "Describes the cache settings of an Amazon Lightsail content delivery network (CDN) distribution.", - "properties": { - "AllowedHTTPMethods": { - "description": "The HTTP methods that are processed and forwarded to the distribution's origin.", - "type": "string" - }, - "CachedHTTPMethods": { - "description": "The HTTP method responses that are cached by your distribution.", - "type": "string" - }, - "DefaultTTL": { - "description": "The default amount of time that objects stay in the distribution's cache before the distribution forwards another request to the origin to determine whether the content has been updated.", - "format": "int64", - "type": "integer" - }, - "ForwardedCookies": { - "$ref": "#/definitions/CookieObject", - "description": "An object that describes the cookies that are forwarded to the origin. Your content is cached based on the cookies that are forwarded." - }, - "ForwardedHeaders": { - "$ref": "#/definitions/HeaderObject", - "description": "An object that describes the headers that are forwarded to the origin. Your content is cached based on the headers that are forwarded." - }, - "ForwardedQueryStrings": { - "$ref": "#/definitions/QueryStringObject", - "description": "An object that describes the query strings that are forwarded to the origin. Your content is cached based on the query strings that are forwarded." - }, - "MaximumTTL": { - "description": "The maximum amount of time that objects stay in the distribution's cache before the distribution forwards another request to the origin to determine whether the object has been updated.", - "format": "int64", - "type": "integer" - }, - "MinimumTTL": { - "description": "The minimum amount of time that objects stay in the distribution's cache before the distribution forwards another request to the origin to determine whether the object has been updated.", - "format": "int64", - "type": "integer" - } - }, - "type": "object" - }, - "CookieObject": { - "additionalProperties": false, - "description": "Describes whether an Amazon Lightsail content delivery network (CDN) distribution forwards cookies to the origin and, if so, which ones.", - "properties": { - "CookiesAllowList": { - "description": "The specific cookies to forward to your distribution's origin.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Option": { - "description": "Specifies which cookies to forward to the distribution's origin for a cache behavior: all, none, or allow-list to forward only the cookies specified in the cookiesAllowList parameter.", - "type": "string" - } - }, - "type": "object" - }, - "HeaderObject": { - "additionalProperties": false, - "description": "Describes the request headers that a Lightsail distribution bases caching on.", - "properties": { - "HeadersAllowList": { - "description": "The specific headers to forward to your distribution's origin.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Option": { - "description": "The headers that you want your distribution to forward to your origin and base caching on.", - "type": "string" - } - }, - "type": "object" - }, - "InputOrigin": { - "additionalProperties": false, - "description": "Describes the origin resource of an Amazon Lightsail content delivery network (CDN) distribution.", - "properties": { - "Name": { - "description": "The name of the origin resource.", - "type": "string" - }, - "ProtocolPolicy": { - "description": "The protocol that your Amazon Lightsail distribution uses when establishing a connection with your origin to pull content.", - "type": "string" - }, - "RegionName": { - "description": "The AWS Region name of the origin resource.", - "type": "string" - } - }, - "type": "object" - }, - "QueryStringObject": { - "additionalProperties": false, - "description": "Describes the query string parameters that an Amazon Lightsail content delivery network (CDN) distribution to bases caching on.", - "properties": { - "Option": { - "description": "Indicates whether the distribution forwards and caches based on query strings.", - "type": "boolean" - }, - "QueryStringsAllowList": { - "description": "The specific query strings that the distribution forwards to the origin.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Lightsail::Distribution", - "handlers": { - "create": { - "permissions": [ - "lightsail:AttachCertificateToDistribution", - "lightsail:CreateDistribution", - "lightsail:DetachCertificateFromDistribution", - "lightsail:GetCertificates", - "lightsail:GetCertificateDetails", - "lightsail:GetDistributions", - "lightsail:TagResource", - "lightsail:UntagResource", - "lightsail:UpdateDistribution", - "lightsail:UpdateDistributionBundle" - ] - }, - "delete": { - "permissions": [ - "lightsail:DeleteDistribution", - "lightsail:GetDistributions" - ] - }, - "list": { - "permissions": [ - "lightsail:GetDistributions" - ] - }, - "read": { - "permissions": [ - "lightsail:GetDistributions" - ] - }, - "update": { - "permissions": [ - "lightsail:AttachCertificateToDistribution", - "lightsail:DetachCertificateFromDistribution", - "lightsail:GetCertificates", - "lightsail:GetCertificateDetails", - "lightsail:GetDistributions", - "lightsail:TagResource", - "lightsail:UntagResource", - "lightsail:UpdateDistribution", - "lightsail:UpdateDistributionBundle" - ] - } - }, - "primaryIdentifier": [ - "/properties/DistributionName" - ], - "properties": { - "AbleToUpdateBundle": { - "description": "Indicates whether the bundle that is currently applied to your distribution, specified using the distributionName parameter, can be changed to another bundle.", - "type": "boolean" - }, - "BundleId": { - "description": "The bundle ID to use for the distribution.", - "type": "string" - }, - "CacheBehaviorSettings": { - "$ref": "#/definitions/CacheSettings", - "description": "An object that describes the cache behavior settings for the distribution." - }, - "CacheBehaviors": { - "description": "An array of objects that describe the per-path cache behavior for the distribution.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CacheBehaviorPerPath" - }, - "type": "array", - "uniqueItems": true - }, - "CertificateName": { - "description": "The certificate attached to the Distribution.", - "type": "string" - }, - "DefaultCacheBehavior": { - "$ref": "#/definitions/CacheBehavior", - "description": "An object that describes the default cache behavior for the distribution." - }, - "DistributionArn": { - "type": "string" - }, - "DistributionName": { - "description": "The name for the distribution.", - "pattern": "\\w[\\w\\-]*\\w", - "type": "string" - }, - "IpAddressType": { - "description": "The IP address type for the distribution.", - "type": "string" - }, - "IsEnabled": { - "description": "Indicates whether the distribution is enabled.", - "type": "boolean" - }, - "Origin": { - "$ref": "#/definitions/InputOrigin", - "description": "An object that describes the origin resource for the distribution, such as a Lightsail instance or load balancer." - }, - "Status": { - "description": "The status of the distribution.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/DistributionArn", - "/properties/Status", - "/properties/AbleToUpdateBundle" - ], - "required": [ - "DistributionName", - "BundleId", - "DefaultCacheBehavior", - "Origin" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "lightsail:TagResource", - "lightsail:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Lightsail::Distribution" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DistributionName", + "/properties/IpAddressType" + ], + "definitions": { + "CacheBehavior": { + "additionalProperties": false, + "description": "Describes the default cache behavior of an Amazon Lightsail content delivery network (CDN) distribution.", + "properties": { + "Behavior": { + "description": "The cache behavior of the distribution.", + "type": "string" + } + }, + "type": "object" + }, + "CacheBehaviorPerPath": { + "additionalProperties": false, + "description": "Describes the per-path cache behavior of an Amazon Lightsail content delivery network (CDN) distribution.", + "properties": { + "Behavior": { + "description": "The cache behavior for the specified path.", + "type": "string" + }, + "Path": { + "description": "The path to a directory or file to cached, or not cache. Use an asterisk symbol to specify wildcard directories (path/to/assets/*), and file types (*.html, *jpg, *js). Directories and file paths are case-sensitive.", + "type": "string" + } + }, + "type": "object" + }, + "CacheSettings": { + "additionalProperties": false, + "description": "Describes the cache settings of an Amazon Lightsail content delivery network (CDN) distribution.", + "properties": { + "AllowedHTTPMethods": { + "description": "The HTTP methods that are processed and forwarded to the distribution's origin.", + "type": "string" + }, + "CachedHTTPMethods": { + "description": "The HTTP method responses that are cached by your distribution.", + "type": "string" + }, + "DefaultTTL": { + "description": "The default amount of time that objects stay in the distribution's cache before the distribution forwards another request to the origin to determine whether the content has been updated.", + "format": "int64", + "type": "integer" + }, + "ForwardedCookies": { + "$ref": "#/definitions/CookieObject", + "description": "An object that describes the cookies that are forwarded to the origin. Your content is cached based on the cookies that are forwarded." + }, + "ForwardedHeaders": { + "$ref": "#/definitions/HeaderObject", + "description": "An object that describes the headers that are forwarded to the origin. Your content is cached based on the headers that are forwarded." + }, + "ForwardedQueryStrings": { + "$ref": "#/definitions/QueryStringObject", + "description": "An object that describes the query strings that are forwarded to the origin. Your content is cached based on the query strings that are forwarded." + }, + "MaximumTTL": { + "description": "The maximum amount of time that objects stay in the distribution's cache before the distribution forwards another request to the origin to determine whether the object has been updated.", + "format": "int64", + "type": "integer" + }, + "MinimumTTL": { + "description": "The minimum amount of time that objects stay in the distribution's cache before the distribution forwards another request to the origin to determine whether the object has been updated.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "CookieObject": { + "additionalProperties": false, + "description": "Describes whether an Amazon Lightsail content delivery network (CDN) distribution forwards cookies to the origin and, if so, which ones.", + "properties": { + "CookiesAllowList": { + "description": "The specific cookies to forward to your distribution's origin.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Option": { + "description": "Specifies which cookies to forward to the distribution's origin for a cache behavior: all, none, or allow-list to forward only the cookies specified in the cookiesAllowList parameter.", + "type": "string" + } + }, + "type": "object" + }, + "HeaderObject": { + "additionalProperties": false, + "description": "Describes the request headers that a Lightsail distribution bases caching on.", + "properties": { + "HeadersAllowList": { + "description": "The specific headers to forward to your distribution's origin.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Option": { + "description": "The headers that you want your distribution to forward to your origin and base caching on.", + "type": "string" + } + }, + "type": "object" + }, + "InputOrigin": { + "additionalProperties": false, + "description": "Describes the origin resource of an Amazon Lightsail content delivery network (CDN) distribution.", + "properties": { + "Name": { + "description": "The name of the origin resource.", + "type": "string" + }, + "ProtocolPolicy": { + "description": "The protocol that your Amazon Lightsail distribution uses when establishing a connection with your origin to pull content.", + "type": "string" + }, + "RegionName": { + "description": "The AWS Region name of the origin resource.", + "type": "string" + } + }, + "type": "object" + }, + "QueryStringObject": { + "additionalProperties": false, + "description": "Describes the query string parameters that an Amazon Lightsail content delivery network (CDN) distribution to bases caching on.", + "properties": { + "Option": { + "description": "Indicates whether the distribution forwards and caches based on query strings.", + "type": "boolean" + }, + "QueryStringsAllowList": { + "description": "The specific query strings that the distribution forwards to the origin.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Lightsail::Distribution", + "handlers": { + "create": { + "permissions": [ + "lightsail:AttachCertificateToDistribution", + "lightsail:CreateDistribution", + "lightsail:DetachCertificateFromDistribution", + "lightsail:GetCertificates", + "lightsail:GetCertificateDetails", + "lightsail:GetDistributions", + "lightsail:TagResource", + "lightsail:UntagResource", + "lightsail:UpdateDistribution", + "lightsail:UpdateDistributionBundle" + ] + }, + "delete": { + "permissions": [ + "lightsail:DeleteDistribution", + "lightsail:GetDistributions" + ] + }, + "list": { + "permissions": [ + "lightsail:GetDistributions" + ] + }, + "read": { + "permissions": [ + "lightsail:GetDistributions" + ] + }, + "update": { + "permissions": [ + "lightsail:AttachCertificateToDistribution", + "lightsail:DetachCertificateFromDistribution", + "lightsail:GetCertificates", + "lightsail:GetCertificateDetails", + "lightsail:GetDistributions", + "lightsail:TagResource", + "lightsail:UntagResource", + "lightsail:UpdateDistribution", + "lightsail:UpdateDistributionBundle" + ] + } + }, + "primaryIdentifier": [ + "/properties/DistributionName" + ], + "properties": { + "AbleToUpdateBundle": { + "description": "Indicates whether the bundle that is currently applied to your distribution, specified using the distributionName parameter, can be changed to another bundle.", + "type": "boolean" + }, + "BundleId": { + "description": "The bundle ID to use for the distribution.", + "type": "string" + }, + "CacheBehaviorSettings": { + "$ref": "#/definitions/CacheSettings", + "description": "An object that describes the cache behavior settings for the distribution." + }, + "CacheBehaviors": { + "description": "An array of objects that describe the per-path cache behavior for the distribution.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CacheBehaviorPerPath" + }, + "type": "array", + "uniqueItems": true + }, + "CertificateName": { + "description": "The certificate attached to the Distribution.", + "type": "string" + }, + "DefaultCacheBehavior": { + "$ref": "#/definitions/CacheBehavior", + "description": "An object that describes the default cache behavior for the distribution." + }, + "DistributionArn": { + "type": "string" + }, + "DistributionName": { + "description": "The name for the distribution.", + "pattern": "\\w[\\w\\-]*\\w", + "type": "string" + }, + "IpAddressType": { + "description": "The IP address type for the distribution.", + "type": "string" + }, + "IsEnabled": { + "description": "Indicates whether the distribution is enabled.", + "type": "boolean" + }, + "Origin": { + "$ref": "#/definitions/InputOrigin", + "description": "An object that describes the origin resource for the distribution, such as a Lightsail instance or load balancer." + }, + "Status": { + "description": "The status of the distribution.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/DistributionArn", + "/properties/Status", + "/properties/AbleToUpdateBundle" + ], + "required": [ + "DistributionName", + "BundleId", + "DefaultCacheBehavior", + "Origin" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "lightsail:TagResource", + "lightsail:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Lightsail::Distribution" +} diff --git a/src/schema/aws-lightsail-instance.json b/src/schema/aws-lightsail-instance.json index 37abde33..be3ff753 100644 --- a/src/schema/aws-lightsail-instance.json +++ b/src/schema/aws-lightsail-instance.json @@ -1,476 +1,476 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceName", - "/properties/BlueprintId", - "/properties/BundleId", - "/properties/AvailabilityZone" - ], - "definitions": { - "AddOn": { - "additionalProperties": false, - "description": "A addon associate with a resource.", - "properties": { - "AddOnType": { - "description": "The add-on type", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "AutoSnapshotAddOnRequest": { - "$ref": "#/definitions/AutoSnapshotAddOn" - }, - "Status": { - "description": "Status of the Addon", - "enum": [ - "Enabling", - "Disabling", - "Enabled", - "Terminating", - "Terminated", - "Disabled", - "Failed" - ], - "type": "string" - } - }, - "required": [ - "AddOnType" - ], - "type": "object" - }, - "AutoSnapshotAddOn": { - "additionalProperties": false, - "description": "An object that represents additional parameters when enabling or modifying the automatic snapshot add-on", - "properties": { - "SnapshotTimeOfDay": { - "description": "The daily time when an automatic snapshot will be created.", - "pattern": "^[0-9]{2}:00$", - "type": "string" - } - }, - "type": "object" - }, - "Disk": { - "additionalProperties": false, - "description": "Disk associated with the Instance.", - "properties": { - "AttachedTo": { - "description": "Instance attached to the disk.", - "type": "string" - }, - "AttachmentState": { - "description": "Attachment state of the disk.", - "type": "string" - }, - "DiskName": { - "description": "The names to use for your new Lightsail disk.", - "maxLength": 254, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][\\w\\-.]*[a-zA-Z0-9]$", - "type": "string" - }, - "IOPS": { - "description": "IOPS of disk.", - "type": "integer" - }, - "IsSystemDisk": { - "description": "Is the Attached disk is the system disk of the Instance.", - "type": "boolean" - }, - "Path": { - "description": "Path of the disk attached to the instance.", - "type": "string" - }, - "SizeInGb": { - "description": "Size of the disk attached to the Instance.", - "type": "string" - } - }, - "required": [ - "DiskName", - "Path" - ], - "type": "object" - }, - "Hardware": { - "additionalProperties": false, - "description": "Hardware of the Instance.", - "properties": { - "CpuCount": { - "description": "CPU count of the Instance.", - "type": "integer" - }, - "Disks": { - "description": "Disks attached to the Instance.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Disk" - }, - "type": "array", - "uniqueItems": true - }, - "RamSizeInGb": { - "description": "RAM Size of the Instance.", - "type": "integer" - } - }, - "type": "object" - }, - "Location": { - "additionalProperties": false, - "description": "Location of a resource.", - "properties": { - "AvailabilityZone": { - "description": "The Availability Zone in which to create your instance. Use the following format: us-east-2a (case sensitive). Be sure to add the include Availability Zones parameter to your request.", - "type": "string" - }, - "RegionName": { - "description": "The Region Name in which to create your instance.", - "type": "string" - } - }, - "type": "object" - }, - "MonthlyTransfer": { - "additionalProperties": false, - "description": "Monthly Transfer of the Instance.", - "properties": { - "GbPerMonthAllocated": { - "description": "GbPerMonthAllocated of the Instance.", - "type": "string" - } - }, - "type": "object" - }, - "Networking": { - "additionalProperties": false, - "description": "Networking of the Instance.", - "properties": { - "MonthlyTransfer": { - "$ref": "#/definitions/MonthlyTransfer" - }, - "Ports": { - "description": "Ports to the Instance.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Port" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Ports" - ], - "type": "object" - }, - "Port": { - "additionalProperties": false, - "description": "Port of the Instance.", - "properties": { - "AccessDirection": { - "description": "Access Direction for Protocol of the Instance(inbound/outbound).", - "type": "string" - }, - "AccessFrom": { - "description": "Access From Protocol of the Instance.", - "type": "string" - }, - "AccessType": { - "description": "Access Type Protocol of the Instance.", - "type": "string" - }, - "CidrListAliases": { - "$ref": "#/definitions/cidrListAliases" - }, - "Cidrs": { - "$ref": "#/definitions/cidrs" - }, - "CommonName": { - "description": "CommonName for Protocol of the Instance.", - "type": "string" - }, - "FromPort": { - "description": "From Port of the Instance.", - "type": "integer" - }, - "Ipv6Cidrs": { - "$ref": "#/definitions/ipv6Cidrs" - }, - "Protocol": { - "description": "Port Protocol of the Instance.", - "type": "string" - }, - "ToPort": { - "description": "To Port of the Instance.", - "type": "integer" - } - }, - "type": "object" - }, - "State": { - "additionalProperties": false, - "description": "Current State of the Instance.", - "properties": { - "Code": { - "description": "Status code of the Instance.", - "type": "integer" - }, - "Name": { - "description": "Status code of the Instance.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - }, - "cidrListAliases": { - "description": "cidr List Aliases", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "cidrs": { - "description": "cidrs", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "ipv6Cidrs": { - "description": "IPv6 Cidrs", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - } - }, - "description": "Resource Type definition for AWS::Lightsail::Instance", - "handlers": { - "create": { - "permissions": [ - "lightsail:CreateInstances", - "lightsail:GetInstances", - "lightsail:EnableAddOn", - "lightsail:GetInstance", - "lightsail:DisableAddOn", - "lightsail:PutInstancePublicPorts", - "lightsail:AttachDisk", - "lightsail:DetachDisk", - "lightsail:StartInstance", - "lightsail:StopInstance", - "lightsail:GetDisk", - "lightsail:GetRegions", - "lightsail:TagResource", - "lightsail:UntagResource" - ] - }, - "delete": { - "permissions": [ - "lightsail:GetInstances", - "lightsail:GetInstance", - "lightsail:DeleteInstance" - ] - }, - "list": { - "permissions": [ - "lightsail:GetInstances" - ] - }, - "read": { - "permissions": [ - "lightsail:GetInstances", - "lightsail:GetInstance" - ] - }, - "update": { - "permissions": [ - "lightsail:GetInstances", - "lightsail:GetInstance", - "lightsail:DeleteInstance", - "lightsail:EnableAddOn", - "lightsail:DisableAddOn", - "lightsail:PutInstancePublicPorts", - "lightsail:AttachDisk", - "lightsail:DetachDisk", - "lightsail:StartInstance", - "lightsail:StopInstance", - "lightsail:GetDisk", - "lightsail:TagResource", - "lightsail:UntagResource" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/InstanceName" - ], - "properties": { - "AddOns": { - "description": "An array of objects representing the add-ons to enable for the new instance.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AddOn" - }, - "type": "array" - }, - "AvailabilityZone": { - "description": "The Availability Zone in which to create your instance. Use the following format: us-east-2a (case sensitive). Be sure to add the include Availability Zones parameter to your request.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "BlueprintId": { - "description": "The ID for a virtual private server image (e.g., app_wordpress_4_4 or app_lamp_7_0 ). Use the get blueprints operation to return a list of available images (or blueprints ).", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "BundleId": { - "description": "The bundle of specification information for your virtual private server (or instance ), including the pricing plan (e.g., micro_1_0 ).", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Hardware": { - "$ref": "#/definitions/Hardware" - }, - "InstanceArn": { - "type": "string" - }, - "InstanceName": { - "description": "The names to use for your new Lightsail instance.", - "maxLength": 254, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][\\w\\-.]*[a-zA-Z0-9]$", - "type": "string" - }, - "Ipv6Addresses": { - "description": "IPv6 addresses of the instance", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "IsStaticIp": { - "description": "Is the IP Address of the Instance is the static IP", - "type": "boolean" - }, - "KeyPairName": { - "description": "The name of your key pair.", - "type": "string" - }, - "Location": { - "$ref": "#/definitions/Location" - }, - "Networking": { - "$ref": "#/definitions/Networking" - }, - "PrivateIpAddress": { - "description": "Private IP Address of the Instance", - "type": "string" - }, - "PublicIpAddress": { - "description": "Public IP Address of the Instance", - "type": "string" - }, - "ResourceType": { - "description": "Resource type of Lightsail instance.", - "type": "string" - }, - "SshKeyName": { - "description": "SSH Key Name of the Lightsail instance.", - "type": "string" - }, - "State": { - "$ref": "#/definitions/State" - }, - "SupportCode": { - "description": "Support code to help identify any issues", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "UserData": { - "description": "A launch script you can create that configures a server with additional user data. For example, you might want to run apt-get -y update.", - "type": "string" - }, - "UserName": { - "description": "Username of the Lightsail instance.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/InstanceArn", - "/properties/SshKeyName", - "/properties/SupportCode", - "/properties/ResourceType", - "/properties/IsStaticIp", - "/properties/PrivateIpAddress", - "/properties/PublicIpAddress", - "/properties/Ipv6Addresses", - "/properties/Location/AvailabilityZone", - "/properties/Location/RegionName", - "/properties/Hardware/CpuCount", - "/properties/Hardware/RamSizeInGb", - "/properties/State/Code", - "/properties/State/Name", - "/properties/UserName", - "/properties/Networking/MonthlyTransfer/GbPerMonthAllocated" - ], - "required": [ - "InstanceName", - "BlueprintId", - "BundleId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "lightsail:TagResource", - "lightsail:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Lightsail::Instance", - "writeOnlyProperties": [ - "/properties/UserData" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceName", + "/properties/BlueprintId", + "/properties/BundleId", + "/properties/AvailabilityZone" + ], + "definitions": { + "AddOn": { + "additionalProperties": false, + "description": "A addon associate with a resource.", + "properties": { + "AddOnType": { + "description": "The add-on type", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "AutoSnapshotAddOnRequest": { + "$ref": "#/definitions/AutoSnapshotAddOn" + }, + "Status": { + "description": "Status of the Addon", + "enum": [ + "Enabling", + "Disabling", + "Enabled", + "Terminating", + "Terminated", + "Disabled", + "Failed" + ], + "type": "string" + } + }, + "required": [ + "AddOnType" + ], + "type": "object" + }, + "AutoSnapshotAddOn": { + "additionalProperties": false, + "description": "An object that represents additional parameters when enabling or modifying the automatic snapshot add-on", + "properties": { + "SnapshotTimeOfDay": { + "description": "The daily time when an automatic snapshot will be created.", + "pattern": "^[0-9]{2}:00$", + "type": "string" + } + }, + "type": "object" + }, + "Disk": { + "additionalProperties": false, + "description": "Disk associated with the Instance.", + "properties": { + "AttachedTo": { + "description": "Instance attached to the disk.", + "type": "string" + }, + "AttachmentState": { + "description": "Attachment state of the disk.", + "type": "string" + }, + "DiskName": { + "description": "The names to use for your new Lightsail disk.", + "maxLength": 254, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][\\w\\-.]*[a-zA-Z0-9]$", + "type": "string" + }, + "IOPS": { + "description": "IOPS of disk.", + "type": "integer" + }, + "IsSystemDisk": { + "description": "Is the Attached disk is the system disk of the Instance.", + "type": "boolean" + }, + "Path": { + "description": "Path of the disk attached to the instance.", + "type": "string" + }, + "SizeInGb": { + "description": "Size of the disk attached to the Instance.", + "type": "string" + } + }, + "required": [ + "DiskName", + "Path" + ], + "type": "object" + }, + "Hardware": { + "additionalProperties": false, + "description": "Hardware of the Instance.", + "properties": { + "CpuCount": { + "description": "CPU count of the Instance.", + "type": "integer" + }, + "Disks": { + "description": "Disks attached to the Instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Disk" + }, + "type": "array", + "uniqueItems": true + }, + "RamSizeInGb": { + "description": "RAM Size of the Instance.", + "type": "integer" + } + }, + "type": "object" + }, + "Location": { + "additionalProperties": false, + "description": "Location of a resource.", + "properties": { + "AvailabilityZone": { + "description": "The Availability Zone in which to create your instance. Use the following format: us-east-2a (case sensitive). Be sure to add the include Availability Zones parameter to your request.", + "type": "string" + }, + "RegionName": { + "description": "The Region Name in which to create your instance.", + "type": "string" + } + }, + "type": "object" + }, + "MonthlyTransfer": { + "additionalProperties": false, + "description": "Monthly Transfer of the Instance.", + "properties": { + "GbPerMonthAllocated": { + "description": "GbPerMonthAllocated of the Instance.", + "type": "string" + } + }, + "type": "object" + }, + "Networking": { + "additionalProperties": false, + "description": "Networking of the Instance.", + "properties": { + "MonthlyTransfer": { + "$ref": "#/definitions/MonthlyTransfer" + }, + "Ports": { + "description": "Ports to the Instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Port" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Ports" + ], + "type": "object" + }, + "Port": { + "additionalProperties": false, + "description": "Port of the Instance.", + "properties": { + "AccessDirection": { + "description": "Access Direction for Protocol of the Instance(inbound/outbound).", + "type": "string" + }, + "AccessFrom": { + "description": "Access From Protocol of the Instance.", + "type": "string" + }, + "AccessType": { + "description": "Access Type Protocol of the Instance.", + "type": "string" + }, + "CidrListAliases": { + "$ref": "#/definitions/cidrListAliases" + }, + "Cidrs": { + "$ref": "#/definitions/cidrs" + }, + "CommonName": { + "description": "CommonName for Protocol of the Instance.", + "type": "string" + }, + "FromPort": { + "description": "From Port of the Instance.", + "type": "integer" + }, + "Ipv6Cidrs": { + "$ref": "#/definitions/ipv6Cidrs" + }, + "Protocol": { + "description": "Port Protocol of the Instance.", + "type": "string" + }, + "ToPort": { + "description": "To Port of the Instance.", + "type": "integer" + } + }, + "type": "object" + }, + "State": { + "additionalProperties": false, + "description": "Current State of the Instance.", + "properties": { + "Code": { + "description": "Status code of the Instance.", + "type": "integer" + }, + "Name": { + "description": "Status code of the Instance.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "cidrListAliases": { + "description": "cidr List Aliases", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "cidrs": { + "description": "cidrs", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "ipv6Cidrs": { + "description": "IPv6 Cidrs", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "description": "Resource Type definition for AWS::Lightsail::Instance", + "handlers": { + "create": { + "permissions": [ + "lightsail:CreateInstances", + "lightsail:GetInstances", + "lightsail:EnableAddOn", + "lightsail:GetInstance", + "lightsail:DisableAddOn", + "lightsail:PutInstancePublicPorts", + "lightsail:AttachDisk", + "lightsail:DetachDisk", + "lightsail:StartInstance", + "lightsail:StopInstance", + "lightsail:GetDisk", + "lightsail:GetRegions", + "lightsail:TagResource", + "lightsail:UntagResource" + ] + }, + "delete": { + "permissions": [ + "lightsail:GetInstances", + "lightsail:GetInstance", + "lightsail:DeleteInstance" + ] + }, + "list": { + "permissions": [ + "lightsail:GetInstances" + ] + }, + "read": { + "permissions": [ + "lightsail:GetInstances", + "lightsail:GetInstance" + ] + }, + "update": { + "permissions": [ + "lightsail:GetInstances", + "lightsail:GetInstance", + "lightsail:DeleteInstance", + "lightsail:EnableAddOn", + "lightsail:DisableAddOn", + "lightsail:PutInstancePublicPorts", + "lightsail:AttachDisk", + "lightsail:DetachDisk", + "lightsail:StartInstance", + "lightsail:StopInstance", + "lightsail:GetDisk", + "lightsail:TagResource", + "lightsail:UntagResource" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/InstanceName" + ], + "properties": { + "AddOns": { + "description": "An array of objects representing the add-ons to enable for the new instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AddOn" + }, + "type": "array" + }, + "AvailabilityZone": { + "description": "The Availability Zone in which to create your instance. Use the following format: us-east-2a (case sensitive). Be sure to add the include Availability Zones parameter to your request.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "BlueprintId": { + "description": "The ID for a virtual private server image (e.g., app_wordpress_4_4 or app_lamp_7_0 ). Use the get blueprints operation to return a list of available images (or blueprints ).", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "BundleId": { + "description": "The bundle of specification information for your virtual private server (or instance ), including the pricing plan (e.g., micro_1_0 ).", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Hardware": { + "$ref": "#/definitions/Hardware" + }, + "InstanceArn": { + "type": "string" + }, + "InstanceName": { + "description": "The names to use for your new Lightsail instance.", + "maxLength": 254, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][\\w\\-.]*[a-zA-Z0-9]$", + "type": "string" + }, + "Ipv6Addresses": { + "description": "IPv6 addresses of the instance", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "IsStaticIp": { + "description": "Is the IP Address of the Instance is the static IP", + "type": "boolean" + }, + "KeyPairName": { + "description": "The name of your key pair.", + "type": "string" + }, + "Location": { + "$ref": "#/definitions/Location" + }, + "Networking": { + "$ref": "#/definitions/Networking" + }, + "PrivateIpAddress": { + "description": "Private IP Address of the Instance", + "type": "string" + }, + "PublicIpAddress": { + "description": "Public IP Address of the Instance", + "type": "string" + }, + "ResourceType": { + "description": "Resource type of Lightsail instance.", + "type": "string" + }, + "SshKeyName": { + "description": "SSH Key Name of the Lightsail instance.", + "type": "string" + }, + "State": { + "$ref": "#/definitions/State" + }, + "SupportCode": { + "description": "Support code to help identify any issues", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "UserData": { + "description": "A launch script you can create that configures a server with additional user data. For example, you might want to run apt-get -y update.", + "type": "string" + }, + "UserName": { + "description": "Username of the Lightsail instance.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/InstanceArn", + "/properties/SshKeyName", + "/properties/SupportCode", + "/properties/ResourceType", + "/properties/IsStaticIp", + "/properties/PrivateIpAddress", + "/properties/PublicIpAddress", + "/properties/Ipv6Addresses", + "/properties/Location/AvailabilityZone", + "/properties/Location/RegionName", + "/properties/Hardware/CpuCount", + "/properties/Hardware/RamSizeInGb", + "/properties/State/Code", + "/properties/State/Name", + "/properties/UserName", + "/properties/Networking/MonthlyTransfer/GbPerMonthAllocated" + ], + "required": [ + "InstanceName", + "BlueprintId", + "BundleId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "lightsail:TagResource", + "lightsail:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Lightsail::Instance", + "writeOnlyProperties": [ + "/properties/UserData" + ] +} diff --git a/src/schema/aws-lightsail-loadbalancer.json b/src/schema/aws-lightsail-loadbalancer.json index 4a1c27de..c696dda8 100644 --- a/src/schema/aws-lightsail-loadbalancer.json +++ b/src/schema/aws-lightsail-loadbalancer.json @@ -1,153 +1,153 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LoadBalancerName", - "/properties/InstancePort", - "/properties/IpAddressType" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Lightsail::LoadBalancer", - "handlers": { - "create": { - "permissions": [ - "lightsail:CreateLoadBalancer", - "lightsail:GetLoadBalancer", - "lightsail:GetLoadBalancers", - "lightsail:GetInstance", - "lightsail:AttachInstancesToLoadBalancer", - "lightsail:DetachInstancesFromLoadBalancer", - "lightsail:UpdateLoadBalancerAttribute", - "lightsail:TagResource", - "lightsail:UntagResource" - ] - }, - "delete": { - "permissions": [ - "lightsail:DeleteLoadBalancer", - "lightsail:GetLoadBalancer", - "lightsail:GetLoadBalancers" - ] - }, - "list": { - "permissions": [ - "lightsail:GetLoadBalancers" - ] - }, - "read": { - "permissions": [ - "lightsail:GetLoadBalancer", - "lightsail:GetLoadBalancers" - ] - }, - "update": { - "permissions": [ - "lightsail:GetLoadBalancer", - "lightsail:GetLoadBalancers", - "lightsail:GetInstance", - "lightsail:AttachInstancesToLoadBalancer", - "lightsail:DetachInstancesFromLoadBalancer", - "lightsail:UpdateLoadBalancerAttribute", - "lightsail:TagResource", - "lightsail:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/LoadBalancerName" - ], - "properties": { - "AttachedInstances": { - "description": "The names of the instances attached to the load balancer.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "HealthCheckPath": { - "description": "The path you provided to perform the load balancer health check. If you didn't specify a health check path, Lightsail uses the root path of your website (e.g., \"/\").", - "type": "string" - }, - "InstancePort": { - "description": "The instance port where you're creating your load balancer.", - "type": "integer" - }, - "IpAddressType": { - "description": "The IP address type for the load balancer. The possible values are ipv4 for IPv4 only, and dualstack for IPv4 and IPv6. The default value is dualstack.", - "type": "string" - }, - "LoadBalancerArn": { - "type": "string" - }, - "LoadBalancerName": { - "description": "The name of your load balancer.", - "pattern": "\\w[\\w\\-]*\\w", - "type": "string" - }, - "SessionStickinessEnabled": { - "description": "Configuration option to enable session stickiness.", - "type": "boolean" - }, - "SessionStickinessLBCookieDurationSeconds": { - "description": "Configuration option to adjust session stickiness cookie duration parameter.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "TlsPolicyName": { - "description": "The name of the TLS policy to apply to the load balancer.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/LoadBalancerArn" - ], - "required": [ - "LoadBalancerName", - "InstancePort" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "lightsail:TagResource", - "lightsail:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Lightsail::LoadBalancer" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/InstancePort", + "/properties/IpAddressType" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Lightsail::LoadBalancer", + "handlers": { + "create": { + "permissions": [ + "lightsail:CreateLoadBalancer", + "lightsail:GetLoadBalancer", + "lightsail:GetLoadBalancers", + "lightsail:GetInstance", + "lightsail:AttachInstancesToLoadBalancer", + "lightsail:DetachInstancesFromLoadBalancer", + "lightsail:UpdateLoadBalancerAttribute", + "lightsail:TagResource", + "lightsail:UntagResource" + ] + }, + "delete": { + "permissions": [ + "lightsail:DeleteLoadBalancer", + "lightsail:GetLoadBalancer", + "lightsail:GetLoadBalancers" + ] + }, + "list": { + "permissions": [ + "lightsail:GetLoadBalancers" + ] + }, + "read": { + "permissions": [ + "lightsail:GetLoadBalancer", + "lightsail:GetLoadBalancers" + ] + }, + "update": { + "permissions": [ + "lightsail:GetLoadBalancer", + "lightsail:GetLoadBalancers", + "lightsail:GetInstance", + "lightsail:AttachInstancesToLoadBalancer", + "lightsail:DetachInstancesFromLoadBalancer", + "lightsail:UpdateLoadBalancerAttribute", + "lightsail:TagResource", + "lightsail:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerName" + ], + "properties": { + "AttachedInstances": { + "description": "The names of the instances attached to the load balancer.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "HealthCheckPath": { + "description": "The path you provided to perform the load balancer health check. If you didn't specify a health check path, Lightsail uses the root path of your website (e.g., \"/\").", + "type": "string" + }, + "InstancePort": { + "description": "The instance port where you're creating your load balancer.", + "type": "integer" + }, + "IpAddressType": { + "description": "The IP address type for the load balancer. The possible values are ipv4 for IPv4 only, and dualstack for IPv4 and IPv6. The default value is dualstack.", + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerName": { + "description": "The name of your load balancer.", + "pattern": "\\w[\\w\\-]*\\w", + "type": "string" + }, + "SessionStickinessEnabled": { + "description": "Configuration option to enable session stickiness.", + "type": "boolean" + }, + "SessionStickinessLBCookieDurationSeconds": { + "description": "Configuration option to adjust session stickiness cookie duration parameter.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TlsPolicyName": { + "description": "The name of the TLS policy to apply to the load balancer.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerArn" + ], + "required": [ + "LoadBalancerName", + "InstancePort" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "lightsail:TagResource", + "lightsail:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Lightsail::LoadBalancer" +} diff --git a/src/schema/aws-lightsail-loadbalancertlscertificate.json b/src/schema/aws-lightsail-loadbalancertlscertificate.json index 1fe574b7..09d78613 100644 --- a/src/schema/aws-lightsail-loadbalancertlscertificate.json +++ b/src/schema/aws-lightsail-loadbalancertlscertificate.json @@ -1,103 +1,103 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LoadBalancerName", - "/properties/CertificateName", - "/properties/CertificateDomainName", - "/properties/CertificateAlternativeNames" - ], - "description": "Resource Type definition for AWS::Lightsail::LoadBalancerTlsCertificate", - "handlers": { - "create": { - "permissions": [ - "lightsail:CreateLoadBalancerTlsCertificate", - "lightsail:GetLoadBalancerTlsCertificates", - "lightsail:GetLoadBalancer", - "lightsail:AttachLoadBalancerTlsCertificate", - "lightsail:UpdateLoadBalancerAttribute" - ] - }, - "delete": { - "permissions": [ - "lightsail:DeleteLoadBalancerTlsCertificate", - "lightsail:GetLoadBalancerTlsCertificates", - "lightsail:GetLoadBalancer" - ] - }, - "list": { - "permissions": [ - "lightsail:GetLoadBalancerTlsCertificates", - "lightsail:GetLoadBalancer" - ] - }, - "read": { - "permissions": [ - "lightsail:GetLoadBalancerTlsCertificates", - "lightsail:GetLoadBalancer" - ] - }, - "update": { - "permissions": [ - "lightsail:AttachLoadBalancerTlsCertificate", - "lightsail:GetLoadBalancerTlsCertificates", - "lightsail:GetLoadBalancer", - "lightsail:UpdateLoadBalancerAttribute" - ] - } - }, - "primaryIdentifier": [ - "/properties/CertificateName", - "/properties/LoadBalancerName" - ], - "properties": { - "CertificateAlternativeNames": { - "description": "An array of strings listing alternative domains and subdomains for your SSL/TLS certificate.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "CertificateDomainName": { - "description": "The domain name (e.g., example.com ) for your SSL/TLS certificate.", - "type": "string" - }, - "CertificateName": { - "description": "The SSL/TLS certificate name.", - "type": "string" - }, - "HttpsRedirectionEnabled": { - "description": "A Boolean value that indicates whether HTTPS redirection is enabled for the load balancer.", - "type": "boolean" - }, - "IsAttached": { - "description": "When true, the SSL/TLS certificate is attached to the Lightsail load balancer.", - "type": "boolean" - }, - "LoadBalancerName": { - "description": "The name of your load balancer.", - "pattern": "\\w[\\w\\-]*\\w", - "type": "string" - }, - "LoadBalancerTlsCertificateArn": { - "type": "string" - }, - "Status": { - "description": "The validation status of the SSL/TLS certificate.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/LoadBalancerTlsCertificateArn", - "/properties/Status" - ], - "required": [ - "LoadBalancerName", - "CertificateName", - "CertificateDomainName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", - "taggable": true, - "typeName": "AWS::Lightsail::LoadBalancerTlsCertificate" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/CertificateName", + "/properties/CertificateDomainName", + "/properties/CertificateAlternativeNames" + ], + "description": "Resource Type definition for AWS::Lightsail::LoadBalancerTlsCertificate", + "handlers": { + "create": { + "permissions": [ + "lightsail:CreateLoadBalancerTlsCertificate", + "lightsail:GetLoadBalancerTlsCertificates", + "lightsail:GetLoadBalancer", + "lightsail:AttachLoadBalancerTlsCertificate", + "lightsail:UpdateLoadBalancerAttribute" + ] + }, + "delete": { + "permissions": [ + "lightsail:DeleteLoadBalancerTlsCertificate", + "lightsail:GetLoadBalancerTlsCertificates", + "lightsail:GetLoadBalancer" + ] + }, + "list": { + "permissions": [ + "lightsail:GetLoadBalancerTlsCertificates", + "lightsail:GetLoadBalancer" + ] + }, + "read": { + "permissions": [ + "lightsail:GetLoadBalancerTlsCertificates", + "lightsail:GetLoadBalancer" + ] + }, + "update": { + "permissions": [ + "lightsail:AttachLoadBalancerTlsCertificate", + "lightsail:GetLoadBalancerTlsCertificates", + "lightsail:GetLoadBalancer", + "lightsail:UpdateLoadBalancerAttribute" + ] + } + }, + "primaryIdentifier": [ + "/properties/CertificateName", + "/properties/LoadBalancerName" + ], + "properties": { + "CertificateAlternativeNames": { + "description": "An array of strings listing alternative domains and subdomains for your SSL/TLS certificate.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "CertificateDomainName": { + "description": "The domain name (e.g., example.com ) for your SSL/TLS certificate.", + "type": "string" + }, + "CertificateName": { + "description": "The SSL/TLS certificate name.", + "type": "string" + }, + "HttpsRedirectionEnabled": { + "description": "A Boolean value that indicates whether HTTPS redirection is enabled for the load balancer.", + "type": "boolean" + }, + "IsAttached": { + "description": "When true, the SSL/TLS certificate is attached to the Lightsail load balancer.", + "type": "boolean" + }, + "LoadBalancerName": { + "description": "The name of your load balancer.", + "pattern": "\\w[\\w\\-]*\\w", + "type": "string" + }, + "LoadBalancerTlsCertificateArn": { + "type": "string" + }, + "Status": { + "description": "The validation status of the SSL/TLS certificate.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerTlsCertificateArn", + "/properties/Status" + ], + "required": [ + "LoadBalancerName", + "CertificateName", + "CertificateDomainName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", + "taggable": true, + "typeName": "AWS::Lightsail::LoadBalancerTlsCertificate" +} diff --git a/src/schema/aws-lightsail-staticip.json b/src/schema/aws-lightsail-staticip.json index 1d31771a..07315e26 100644 --- a/src/schema/aws-lightsail-staticip.json +++ b/src/schema/aws-lightsail-staticip.json @@ -1,82 +1,82 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StaticIpName" - ], - "definitions": {}, - "description": "Resource Type definition for AWS::Lightsail::StaticIp", - "handlers": { - "create": { - "permissions": [ - "lightsail:AllocateStaticIp", - "lightsail:AttachStaticIp", - "lightsail:DetachStaticIp", - "lightsail:GetInstance", - "lightsail:GetStaticIp", - "lightsail:GetStaticIps" - ] - }, - "delete": { - "permissions": [ - "lightsail:GetStaticIp", - "lightsail:GetStaticIps", - "lightsail:ReleaseStaticIp" - ] - }, - "list": { - "permissions": [ - "lightsail:GetStaticIps" - ] - }, - "read": { - "permissions": [ - "lightsail:GetStaticIp", - "lightsail:GetStaticIps" - ] - }, - "update": { - "permissions": [ - "lightsail:AttachStaticIp", - "lightsail:DetachStaticIp", - "lightsail:GetInstance", - "lightsail:GetStaticIp", - "lightsail:GetStaticIps" - ] - } - }, - "primaryIdentifier": [ - "/properties/StaticIpName" - ], - "properties": { - "AttachedTo": { - "description": "The instance where the static IP is attached.", - "type": "string" - }, - "IpAddress": { - "description": "The static IP address.", - "type": "string" - }, - "IsAttached": { - "description": "A Boolean value indicating whether the static IP is attached.", - "type": "boolean" - }, - "StaticIpArn": { - "type": "string" - }, - "StaticIpName": { - "description": "The name of the static IP address.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/StaticIpArn", - "/properties/IsAttached", - "/properties/IpAddress" - ], - "required": [ - "StaticIpName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", - "taggable": true, - "typeName": "AWS::Lightsail::StaticIp" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StaticIpName" + ], + "definitions": {}, + "description": "Resource Type definition for AWS::Lightsail::StaticIp", + "handlers": { + "create": { + "permissions": [ + "lightsail:AllocateStaticIp", + "lightsail:AttachStaticIp", + "lightsail:DetachStaticIp", + "lightsail:GetInstance", + "lightsail:GetStaticIp", + "lightsail:GetStaticIps" + ] + }, + "delete": { + "permissions": [ + "lightsail:GetStaticIp", + "lightsail:GetStaticIps", + "lightsail:ReleaseStaticIp" + ] + }, + "list": { + "permissions": [ + "lightsail:GetStaticIps" + ] + }, + "read": { + "permissions": [ + "lightsail:GetStaticIp", + "lightsail:GetStaticIps" + ] + }, + "update": { + "permissions": [ + "lightsail:AttachStaticIp", + "lightsail:DetachStaticIp", + "lightsail:GetInstance", + "lightsail:GetStaticIp", + "lightsail:GetStaticIps" + ] + } + }, + "primaryIdentifier": [ + "/properties/StaticIpName" + ], + "properties": { + "AttachedTo": { + "description": "The instance where the static IP is attached.", + "type": "string" + }, + "IpAddress": { + "description": "The static IP address.", + "type": "string" + }, + "IsAttached": { + "description": "A Boolean value indicating whether the static IP is attached.", + "type": "boolean" + }, + "StaticIpArn": { + "type": "string" + }, + "StaticIpName": { + "description": "The name of the static IP address.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/StaticIpArn", + "/properties/IsAttached", + "/properties/IpAddress" + ], + "required": [ + "StaticIpName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lightsail.git", + "taggable": true, + "typeName": "AWS::Lightsail::StaticIp" +} diff --git a/src/schema/aws-location-apikey.json b/src/schema/aws-location-apikey.json index 7464c4b9..317a4d03 100644 --- a/src/schema/aws-location-apikey.json +++ b/src/schema/aws-location-apikey.json @@ -1,264 +1,268 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KeyName" - ], - "definitions": { - "ApiKeyRestrictions": { - "additionalProperties": false, - "properties": { - "AllowActions": { - "insertionOrder": false, - "items": { - "maxLength": 200, - "minLength": 5, - "pattern": "^(geo|geo-routes|geo-places|geo-maps):\\w*\\*?$", - "type": "string" - }, - "maxItems": 24, - "minItems": 1, - "type": "array" - }, - "AllowReferers": { - "insertionOrder": false, - "items": { - "maxLength": 253, - "pattern": "^([$\\-._+!*\\x{60}(),;/?:@=&\\w]|%([0-9a-fA-F?]{2}|[0-9a-fA-F?]?[*]))+$", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "AllowResources": { - "insertionOrder": false, - "items": { - "maxLength": 1600, - "pattern": "(^arn(:[a-z0-9]+([.-][a-z0-9]+)*):geo(:([a-z0-9]+([.-][a-z0-9]+)*))(:[0-9]+):((\\*)|([-a-z]+[/][*-._\\w]+))$)|(^arn(:[a-z0-9]+([.-][a-z0-9]+)*):(geo-routes|geo-places|geo-maps)(:((\\*)|([a-z0-9]+([.-][a-z0-9]+)*)))::((provider[\\/][*-._\\w]+))$)", - "type": "string" - }, - "maxItems": 8, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "AllowActions", - "AllowResources" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "pattern": "^[A-Za-z0-9 _=@:.+-/]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "maxProperties": 50, - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$", - "type": "string" - } - }, - "type": "object" - }, - "iso8601UTC": { - "description": "The datetime value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ss.sssZ)", - "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", - "type": "string" - } - }, - "description": "Definition of AWS::Location::APIKey Resource Type", - "handlers": { - "create": { - "permissions": [ - "geo:CreateKey", - "geo:DescribeKey", - "geo:TagResource", - "geo:UntagResource", - "geo:GetMapTile", - "geo:GetMapStyleDescriptor", - "geo:GetMapSprites", - "geo:GetMapGlyphs", - "geo:SearchPlaceIndexForText", - "geo:SearchPlaceIndexForPosition", - "geo:SearchPlaceIndexForSuggestions", - "geo:GetPlace", - "geo:CalculateRoute", - "geo:CalculateRouteMatrix", - "geo-maps:GetTile", - "geo-maps:GetStaticMap", - "geo-places:Autocomplete", - "geo-places:Geocode", - "geo-places:GetPlace", - "geo-places:ReverseGeocode", - "geo-places:SearchNearby", - "geo-places:SearchText", - "geo-places:Suggest", - "geo-routes:CalculateIsolines", - "geo-routes:CalculateRouteMatrix", - "geo-routes:CalculateRoutes", - "geo-routes:OptimizeWaypoints", - "geo-routes:SnapToRoads" - ] - }, - "delete": { - "permissions": [ - "geo:DeleteKey", - "geo:DescribeKey" - ] - }, - "list": { - "permissions": [ - "geo:ListKeys" - ] - }, - "read": { - "permissions": [ - "geo:DescribeKey" - ] - }, - "update": { - "permissions": [ - "geo:CreateKey", - "geo:DescribeKey", - "geo:TagResource", - "geo:UntagResource", - "geo:GetMapTile", - "geo:GetMapStyleDescriptor", - "geo:GetMapSprites", - "geo:GetMapGlyphs", - "geo:SearchPlaceIndexForText", - "geo:SearchPlaceIndexForPosition", - "geo:SearchPlaceIndexForSuggestions", - "geo:GetPlace", - "geo:CalculateRoute", - "geo:CalculateRouteMatrix", - "geo-maps:GetTile", - "geo-maps:GetStaticMap", - "geo-places:Autocomplete", - "geo-places:Geocode", - "geo-places:GetPlace", - "geo-places:ReverseGeocode", - "geo-places:SearchNearby", - "geo-places:SearchText", - "geo-places:Suggest", - "geo-routes:CalculateIsolines", - "geo-routes:CalculateRouteMatrix", - "geo-routes:CalculateRoutes", - "geo-routes:OptimizeWaypoints", - "geo-routes:SnapToRoads", - "geo:UpdateKey" - ] - } - }, - "primaryIdentifier": [ - "/properties/KeyName" - ], - "properties": { - "Arn": { - "maxLength": 1600, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", - "type": "string" - }, - "CreateTime": { - "$ref": "#/definitions/iso8601UTC" - }, - "Description": { - "maxLength": 1000, - "minLength": 0, - "type": "string" - }, - "ExpireTime": { - "$ref": "#/definitions/iso8601UTC" - }, - "ForceDelete": { - "type": "boolean" - }, - "ForceUpdate": { - "type": "boolean" - }, - "KeyArn": { - "maxLength": 1600, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", - "type": "string" - }, - "KeyName": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[-._\\w]+$", - "type": "string" - }, - "NoExpiry": { - "type": "boolean" - }, - "Restrictions": { - "$ref": "#/definitions/ApiKeyRestrictions" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "UpdateTime": { - "$ref": "#/definitions/iso8601UTC" - } - }, - "readOnlyProperties": [ - "/properties/CreateTime", - "/properties/Arn", - "/properties/KeyArn", - "/properties/UpdateTime" - ], - "required": [ - "KeyName", - "Restrictions" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "geo:TagResource", - "geo:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Location::APIKey", - "writeOnlyProperties": [ - "/properties/ForceUpdate", - "/properties/ForceDelete", - "/properties/NoExpiry" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KeyName" + ], + "definitions": { + "ApiKeyRestrictions": { + "additionalProperties": false, + "properties": { + "AllowActions": { + "insertionOrder": false, + "items": { + "maxLength": 200, + "minLength": 5, + "pattern": "^(geo|geo-routes|geo-places|geo-maps):\\w*\\*?$", + "type": "string" + }, + "maxItems": 24, + "minItems": 1, + "type": "array" + }, + "AllowReferers": { + "insertionOrder": false, + "items": { + "maxLength": 253, + "pattern": "^([$\\-._+!*\\x{60}(),;/?:@=&\\w]|%([0-9a-fA-F?]{2}|[0-9a-fA-F?]?[*]))+$", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "AllowResources": { + "insertionOrder": false, + "items": { + "maxLength": 1600, + "pattern": "(^arn(:[a-z0-9]+([.-][a-z0-9]+)*):geo(:([a-z0-9]+([.-][a-z0-9]+)*))(:[0-9]+):((\\*)|([-a-z]+[/][*-._\\w]+))$)|(^arn(:[a-z0-9]+([.-][a-z0-9]+)*):(geo-routes|geo-places|geo-maps)(:((\\*)|([a-z0-9]+([.-][a-z0-9]+)*)))::((provider[\\/][*-._\\w]+))$)", + "type": "string" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "AllowActions", + "AllowResources" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[A-Za-z0-9 _=@:.+-/]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "maxProperties": 50, + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$", + "type": "string" + } + }, + "type": "object" + }, + "Unit": { + "additionalProperties": false, + "type": "object" + }, + "iso8601UTC": { + "description": "The datetime value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ss.sssZ)", + "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", + "type": "string" + } + }, + "description": "Definition of AWS::Location::APIKey Resource Type", + "handlers": { + "create": { + "permissions": [ + "geo:CreateKey", + "geo:DescribeKey", + "geo:TagResource", + "geo:UntagResource", + "geo:GetMapTile", + "geo:GetMapStyleDescriptor", + "geo:GetMapSprites", + "geo:GetMapGlyphs", + "geo:SearchPlaceIndexForText", + "geo:SearchPlaceIndexForPosition", + "geo:SearchPlaceIndexForSuggestions", + "geo:GetPlace", + "geo:CalculateRoute", + "geo:CalculateRouteMatrix", + "geo-maps:GetTile", + "geo-maps:GetStaticMap", + "geo-places:Autocomplete", + "geo-places:Geocode", + "geo-places:GetPlace", + "geo-places:ReverseGeocode", + "geo-places:SearchNearby", + "geo-places:SearchText", + "geo-places:Suggest", + "geo-routes:CalculateIsolines", + "geo-routes:CalculateRouteMatrix", + "geo-routes:CalculateRoutes", + "geo-routes:OptimizeWaypoints", + "geo-routes:SnapToRoads" + ] + }, + "delete": { + "permissions": [ + "geo:DeleteKey", + "geo:DescribeKey" + ] + }, + "list": { + "permissions": [ + "geo:ListKeys" + ] + }, + "read": { + "permissions": [ + "geo:DescribeKey" + ] + }, + "update": { + "permissions": [ + "geo:CreateKey", + "geo:DescribeKey", + "geo:TagResource", + "geo:UntagResource", + "geo:GetMapTile", + "geo:GetMapStyleDescriptor", + "geo:GetMapSprites", + "geo:GetMapGlyphs", + "geo:SearchPlaceIndexForText", + "geo:SearchPlaceIndexForPosition", + "geo:SearchPlaceIndexForSuggestions", + "geo:GetPlace", + "geo:CalculateRoute", + "geo:CalculateRouteMatrix", + "geo-maps:GetTile", + "geo-maps:GetStaticMap", + "geo-places:Autocomplete", + "geo-places:Geocode", + "geo-places:GetPlace", + "geo-places:ReverseGeocode", + "geo-places:SearchNearby", + "geo-places:SearchText", + "geo-places:Suggest", + "geo-routes:CalculateIsolines", + "geo-routes:CalculateRouteMatrix", + "geo-routes:CalculateRoutes", + "geo-routes:OptimizeWaypoints", + "geo-routes:SnapToRoads", + "geo:UpdateKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/KeyName" + ], + "properties": { + "Arn": { + "maxLength": 1600, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", + "type": "string" + }, + "CreateTime": { + "$ref": "#/definitions/iso8601UTC" + }, + "Description": { + "maxLength": 1000, + "minLength": 0, + "type": "string" + }, + "ExpireTime": { + "$ref": "#/definitions/iso8601UTC" + }, + "ForceDelete": { + "type": "boolean" + }, + "ForceUpdate": { + "type": "boolean" + }, + "KeyArn": { + "maxLength": 1600, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", + "type": "string" + }, + "KeyName": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[-._\\w]+$", + "type": "string" + }, + "NoExpiry": { + "type": "boolean" + }, + "Restrictions": { + "$ref": "#/definitions/ApiKeyRestrictions" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "UpdateTime": { + "$ref": "#/definitions/iso8601UTC" + } + }, + "readOnlyProperties": [ + "/properties/CreateTime", + "/properties/Arn", + "/properties/KeyArn", + "/properties/UpdateTime" + ], + "required": [ + "KeyName", + "Restrictions" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "geo:TagResource", + "geo:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Location::APIKey", + "writeOnlyProperties": [ + "/properties/ForceUpdate", + "/properties/ForceDelete", + "/properties/NoExpiry" + ] +} diff --git a/src/schema/aws-location-geofencecollection.json b/src/schema/aws-location-geofencecollection.json index 20a50053..c2a064d9 100644 --- a/src/schema/aws-location-geofencecollection.json +++ b/src/schema/aws-location-geofencecollection.json @@ -1,179 +1,179 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CollectionName", - "/properties/KmsKeyId" - ], - "definitions": { - "PricingPlan": { - "enum": [ - "RequestBasedUsage" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "pattern": "^[A-Za-z0-9 _=@:.+-/]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "maxProperties": 50, - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$", - "type": "string" - } - }, - "type": "object" - }, - "iso8601UTC": { - "description": "The datetime value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ss.sssZ)", - "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/PricingPlan", - "/properties/PricingPlanDataSource" - ], - "description": "Definition of AWS::Location::GeofenceCollection Resource Type", - "handlers": { - "create": { - "permissions": [ - "geo:CreateGeofenceCollection", - "geo:DescribeGeofenceCollection", - "geo:TagResource", - "geo:UntagResource", - "kms:DescribeKey", - "kms:CreateGrant" - ] - }, - "delete": { - "permissions": [ - "geo:DeleteGeofenceCollection", - "geo:DescribeGeofenceCollection" - ] - }, - "list": { - "permissions": [ - "geo:ListGeofenceCollections" - ] - }, - "read": { - "permissions": [ - "geo:DescribeGeofenceCollection", - "kms:DescribeKey" - ] - }, - "update": { - "permissions": [ - "geo:CreateGeofenceCollection", - "geo:DescribeGeofenceCollection", - "geo:TagResource", - "geo:UntagResource", - "kms:DescribeKey", - "kms:CreateGrant", - "geo:UpdateGeofenceCollection" - ] - } - }, - "primaryIdentifier": [ - "/properties/CollectionName" - ], - "properties": { - "Arn": { - "maxLength": 1600, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", - "type": "string" - }, - "CollectionArn": { - "maxLength": 1600, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", - "type": "string" - }, - "CollectionName": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[-._\\w]+$", - "type": "string" - }, - "CreateTime": { - "$ref": "#/definitions/iso8601UTC" - }, - "Description": { - "maxLength": 1000, - "minLength": 0, - "type": "string" - }, - "KmsKeyId": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "PricingPlan": { - "$ref": "#/definitions/PricingPlan" - }, - "PricingPlanDataSource": { - "description": "This shape is deprecated since 2022-02-01: Deprecated. No longer allowed.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "UpdateTime": { - "$ref": "#/definitions/iso8601UTC" - } - }, - "readOnlyProperties": [ - "/properties/CollectionArn", - "/properties/Arn", - "/properties/CreateTime", - "/properties/UpdateTime" - ], - "required": [ - "CollectionName" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "geo:TagResource", - "geo:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Location::GeofenceCollection" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CollectionName", + "/properties/KmsKeyId" + ], + "definitions": { + "PricingPlan": { + "enum": [ + "RequestBasedUsage" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[A-Za-z0-9 _=@:.+-/]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "maxProperties": 50, + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$", + "type": "string" + } + }, + "type": "object" + }, + "iso8601UTC": { + "description": "The datetime value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ss.sssZ)", + "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/PricingPlan", + "/properties/PricingPlanDataSource" + ], + "description": "Definition of AWS::Location::GeofenceCollection Resource Type", + "handlers": { + "create": { + "permissions": [ + "geo:CreateGeofenceCollection", + "geo:DescribeGeofenceCollection", + "geo:TagResource", + "geo:UntagResource", + "kms:DescribeKey", + "kms:CreateGrant" + ] + }, + "delete": { + "permissions": [ + "geo:DeleteGeofenceCollection", + "geo:DescribeGeofenceCollection" + ] + }, + "list": { + "permissions": [ + "geo:ListGeofenceCollections" + ] + }, + "read": { + "permissions": [ + "geo:DescribeGeofenceCollection", + "kms:DescribeKey" + ] + }, + "update": { + "permissions": [ + "geo:CreateGeofenceCollection", + "geo:DescribeGeofenceCollection", + "geo:TagResource", + "geo:UntagResource", + "kms:DescribeKey", + "kms:CreateGrant", + "geo:UpdateGeofenceCollection" + ] + } + }, + "primaryIdentifier": [ + "/properties/CollectionName" + ], + "properties": { + "Arn": { + "maxLength": 1600, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", + "type": "string" + }, + "CollectionArn": { + "maxLength": 1600, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", + "type": "string" + }, + "CollectionName": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[-._\\w]+$", + "type": "string" + }, + "CreateTime": { + "$ref": "#/definitions/iso8601UTC" + }, + "Description": { + "maxLength": 1000, + "minLength": 0, + "type": "string" + }, + "KmsKeyId": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "PricingPlan": { + "$ref": "#/definitions/PricingPlan" + }, + "PricingPlanDataSource": { + "description": "This shape is deprecated since 2022-02-01: Deprecated. No longer allowed.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "UpdateTime": { + "$ref": "#/definitions/iso8601UTC" + } + }, + "readOnlyProperties": [ + "/properties/CollectionArn", + "/properties/Arn", + "/properties/CreateTime", + "/properties/UpdateTime" + ], + "required": [ + "CollectionName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "geo:TagResource", + "geo:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Location::GeofenceCollection" +} diff --git a/src/schema/aws-location-map.json b/src/schema/aws-location-map.json index 5b2ad1ab..3f480693 100644 --- a/src/schema/aws-location-map.json +++ b/src/schema/aws-location-map.json @@ -1,196 +1,196 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Configuration", - "/properties/MapName" - ], - "definitions": { - "MapConfiguration": { - "additionalProperties": false, - "properties": { - "CustomLayers": { - "items": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[-._\\w]+$", - "type": "string" - }, - "maxItems": 10, - "type": "array" - }, - "PoliticalView": { - "maxLength": 3, - "minLength": 3, - "pattern": "^[A-Z]{3}$", - "type": "string" - }, - "Style": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[-._\\w]+$", - "type": "string" - } - }, - "required": [ - "Style" - ], - "type": "object" - }, - "PricingPlan": { - "enum": [ - "RequestBasedUsage" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "pattern": "^[A-Za-z0-9 _=@:.+-/]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "maxProperties": 50, - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$", - "type": "string" - } - }, - "type": "object" - }, - "iso8601UTC": { - "description": "The datetime value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ss.sssZ)", - "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", - "type": "string" - } - }, - "description": "Definition of AWS::Location::Map Resource Type", - "handlers": { - "create": { - "permissions": [ - "geo:CreateMap", - "geo:DescribeMap", - "geo:TagResource", - "geo:UntagResource" - ] - }, - "delete": { - "permissions": [ - "geo:DeleteMap", - "geo:DescribeMap" - ] - }, - "list": { - "permissions": [ - "geo:ListMaps" - ] - }, - "read": { - "permissions": [ - "geo:DescribeMap" - ] - }, - "update": { - "permissions": [ - "geo:CreateMap", - "geo:DescribeMap", - "geo:TagResource", - "geo:UntagResource", - "geo:UpdateMap" - ] - } - }, - "primaryIdentifier": [ - "/properties/MapName" - ], - "properties": { - "Arn": { - "maxLength": 1600, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", - "type": "string" - }, - "Configuration": { - "$ref": "#/definitions/MapConfiguration" - }, - "CreateTime": { - "$ref": "#/definitions/iso8601UTC" - }, - "Description": { - "maxLength": 1000, - "minLength": 0, - "type": "string" - }, - "MapArn": { - "maxLength": 1600, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*):geo(:([a-z0-9]+([.-][a-z0-9]+)*))(:[0-9]+):((\\*)|([-a-z]+[/][*-._\\w]+))$", - "type": "string" - }, - "MapName": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[-._\\w]+$", - "type": "string" - }, - "PricingPlan": { - "$ref": "#/definitions/PricingPlan" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "UpdateTime": { - "$ref": "#/definitions/iso8601UTC" - } - }, - "readOnlyProperties": [ - "/properties/CreateTime", - "/properties/Arn", - "/properties/MapArn", - "/properties/UpdateTime" - ], - "required": [ - "Configuration", - "MapName" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "geo:TagResource", - "geo:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Location::Map" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Configuration", + "/properties/MapName" + ], + "definitions": { + "MapConfiguration": { + "additionalProperties": false, + "properties": { + "CustomLayers": { + "items": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[-._\\w]+$", + "type": "string" + }, + "maxItems": 10, + "type": "array" + }, + "PoliticalView": { + "maxLength": 3, + "minLength": 3, + "pattern": "^[A-Z]{3}$", + "type": "string" + }, + "Style": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[-._\\w]+$", + "type": "string" + } + }, + "required": [ + "Style" + ], + "type": "object" + }, + "PricingPlan": { + "enum": [ + "RequestBasedUsage" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[A-Za-z0-9 _=@:.+-/]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "maxProperties": 50, + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$", + "type": "string" + } + }, + "type": "object" + }, + "iso8601UTC": { + "description": "The datetime value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ss.sssZ)", + "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", + "type": "string" + } + }, + "description": "Definition of AWS::Location::Map Resource Type", + "handlers": { + "create": { + "permissions": [ + "geo:CreateMap", + "geo:DescribeMap", + "geo:TagResource", + "geo:UntagResource" + ] + }, + "delete": { + "permissions": [ + "geo:DeleteMap", + "geo:DescribeMap" + ] + }, + "list": { + "permissions": [ + "geo:ListMaps" + ] + }, + "read": { + "permissions": [ + "geo:DescribeMap" + ] + }, + "update": { + "permissions": [ + "geo:CreateMap", + "geo:DescribeMap", + "geo:TagResource", + "geo:UntagResource", + "geo:UpdateMap" + ] + } + }, + "primaryIdentifier": [ + "/properties/MapName" + ], + "properties": { + "Arn": { + "maxLength": 1600, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", + "type": "string" + }, + "Configuration": { + "$ref": "#/definitions/MapConfiguration" + }, + "CreateTime": { + "$ref": "#/definitions/iso8601UTC" + }, + "Description": { + "maxLength": 1000, + "minLength": 0, + "type": "string" + }, + "MapArn": { + "maxLength": 1600, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*):geo(:([a-z0-9]+([.-][a-z0-9]+)*))(:[0-9]+):((\\*)|([-a-z]+[/][*-._\\w]+))$", + "type": "string" + }, + "MapName": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[-._\\w]+$", + "type": "string" + }, + "PricingPlan": { + "$ref": "#/definitions/PricingPlan" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "UpdateTime": { + "$ref": "#/definitions/iso8601UTC" + } + }, + "readOnlyProperties": [ + "/properties/CreateTime", + "/properties/Arn", + "/properties/MapArn", + "/properties/UpdateTime" + ], + "required": [ + "Configuration", + "MapName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "geo:TagResource", + "geo:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Location::Map" +} diff --git a/src/schema/aws-location-placeindex.json b/src/schema/aws-location-placeindex.json index d88a3d79..adab7607 100644 --- a/src/schema/aws-location-placeindex.json +++ b/src/schema/aws-location-placeindex.json @@ -1,184 +1,184 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DataSource", - "/properties/IndexName" - ], - "definitions": { - "DataSourceConfiguration": { - "additionalProperties": false, - "properties": { - "IntendedUse": { - "$ref": "#/definitions/IntendedUse" - } - }, - "type": "object" - }, - "IntendedUse": { - "enum": [ - "SingleUse", - "Storage" - ], - "type": "string" - }, - "PricingPlan": { - "enum": [ - "RequestBasedUsage" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "pattern": "^[A-Za-z0-9 _=@:.+-/]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "maxProperties": 50, - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$", - "type": "string" - } - }, - "type": "object" - }, - "iso8601UTC": { - "description": "The datetime value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ss.sssZ)", - "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", - "type": "string" - } - }, - "description": "Definition of AWS::Location::PlaceIndex Resource Type", - "handlers": { - "create": { - "permissions": [ - "geo:CreatePlaceIndex", - "geo:DescribePlaceIndex", - "geo:TagResource", - "geo:UntagResource" - ] - }, - "delete": { - "permissions": [ - "geo:DeletePlaceIndex", - "geo:DescribePlaceIndex" - ] - }, - "list": { - "permissions": [ - "geo:ListPlaceIndexes" - ] - }, - "read": { - "permissions": [ - "geo:DescribePlaceIndex" - ] - }, - "update": { - "permissions": [ - "geo:CreatePlaceIndex", - "geo:DescribePlaceIndex", - "geo:TagResource", - "geo:UntagResource", - "geo:UpdatePlaceIndex" - ] - } - }, - "primaryIdentifier": [ - "/properties/IndexName" - ], - "properties": { - "Arn": { - "maxLength": 1600, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", - "type": "string" - }, - "CreateTime": { - "$ref": "#/definitions/iso8601UTC" - }, - "DataSource": { - "type": "string" - }, - "DataSourceConfiguration": { - "$ref": "#/definitions/DataSourceConfiguration" - }, - "Description": { - "maxLength": 1000, - "minLength": 0, - "type": "string" - }, - "IndexArn": { - "maxLength": 1600, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*):geo(:([a-z0-9]+([.-][a-z0-9]+)*))(:[0-9]+):((\\*)|([-a-z]+[/][*-._\\w]+))$", - "type": "string" - }, - "IndexName": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[-._\\w]+$", - "type": "string" - }, - "PricingPlan": { - "$ref": "#/definitions/PricingPlan" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "UpdateTime": { - "$ref": "#/definitions/iso8601UTC" - } - }, - "readOnlyProperties": [ - "/properties/CreateTime", - "/properties/Arn", - "/properties/IndexArn", - "/properties/UpdateTime" - ], - "required": [ - "DataSource", - "IndexName" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "geo:TagResource", - "geo:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Location::PlaceIndex" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DataSource", + "/properties/IndexName" + ], + "definitions": { + "DataSourceConfiguration": { + "additionalProperties": false, + "properties": { + "IntendedUse": { + "$ref": "#/definitions/IntendedUse" + } + }, + "type": "object" + }, + "IntendedUse": { + "enum": [ + "SingleUse", + "Storage" + ], + "type": "string" + }, + "PricingPlan": { + "enum": [ + "RequestBasedUsage" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[A-Za-z0-9 _=@:.+-/]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "maxProperties": 50, + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$", + "type": "string" + } + }, + "type": "object" + }, + "iso8601UTC": { + "description": "The datetime value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ss.sssZ)", + "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", + "type": "string" + } + }, + "description": "Definition of AWS::Location::PlaceIndex Resource Type", + "handlers": { + "create": { + "permissions": [ + "geo:CreatePlaceIndex", + "geo:DescribePlaceIndex", + "geo:TagResource", + "geo:UntagResource" + ] + }, + "delete": { + "permissions": [ + "geo:DeletePlaceIndex", + "geo:DescribePlaceIndex" + ] + }, + "list": { + "permissions": [ + "geo:ListPlaceIndexes" + ] + }, + "read": { + "permissions": [ + "geo:DescribePlaceIndex" + ] + }, + "update": { + "permissions": [ + "geo:CreatePlaceIndex", + "geo:DescribePlaceIndex", + "geo:TagResource", + "geo:UntagResource", + "geo:UpdatePlaceIndex" + ] + } + }, + "primaryIdentifier": [ + "/properties/IndexName" + ], + "properties": { + "Arn": { + "maxLength": 1600, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", + "type": "string" + }, + "CreateTime": { + "$ref": "#/definitions/iso8601UTC" + }, + "DataSource": { + "type": "string" + }, + "DataSourceConfiguration": { + "$ref": "#/definitions/DataSourceConfiguration" + }, + "Description": { + "maxLength": 1000, + "minLength": 0, + "type": "string" + }, + "IndexArn": { + "maxLength": 1600, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*):geo(:([a-z0-9]+([.-][a-z0-9]+)*))(:[0-9]+):((\\*)|([-a-z]+[/][*-._\\w]+))$", + "type": "string" + }, + "IndexName": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[-._\\w]+$", + "type": "string" + }, + "PricingPlan": { + "$ref": "#/definitions/PricingPlan" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "UpdateTime": { + "$ref": "#/definitions/iso8601UTC" + } + }, + "readOnlyProperties": [ + "/properties/CreateTime", + "/properties/Arn", + "/properties/IndexArn", + "/properties/UpdateTime" + ], + "required": [ + "DataSource", + "IndexName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "geo:TagResource", + "geo:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Location::PlaceIndex" +} diff --git a/src/schema/aws-location-routecalculator.json b/src/schema/aws-location-routecalculator.json index b782ccb5..256de2e1 100644 --- a/src/schema/aws-location-routecalculator.json +++ b/src/schema/aws-location-routecalculator.json @@ -1,165 +1,165 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CalculatorName", - "/properties/DataSource" - ], - "definitions": { - "PricingPlan": { - "enum": [ - "RequestBasedUsage" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "pattern": "^[A-Za-z0-9 _=@:.+-/]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "maxProperties": 50, - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$", - "type": "string" - } - }, - "type": "object" - }, - "iso8601UTC": { - "description": "The datetime value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ss.sssZ)", - "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", - "type": "string" - } - }, - "description": "Definition of AWS::Location::RouteCalculator Resource Type", - "handlers": { - "create": { - "permissions": [ - "geo:CreateRouteCalculator", - "geo:DescribeRouteCalculator", - "geo:TagResource", - "geo:UntagResource" - ] - }, - "delete": { - "permissions": [ - "geo:DeleteRouteCalculator", - "geo:DescribeRouteCalculator" - ] - }, - "list": { - "permissions": [ - "geo:ListRouteCalculators" - ] - }, - "read": { - "permissions": [ - "geo:DescribeRouteCalculator" - ] - }, - "update": { - "permissions": [ - "geo:CreateRouteCalculator", - "geo:DescribeRouteCalculator", - "geo:TagResource", - "geo:UntagResource", - "geo:UpdateRouteCalculator" - ] - } - }, - "primaryIdentifier": [ - "/properties/CalculatorName" - ], - "properties": { - "Arn": { - "maxLength": 1600, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", - "type": "string" - }, - "CalculatorArn": { - "maxLength": 1600, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*):geo(:([a-z0-9]+([.-][a-z0-9]+)*))(:[0-9]+):((\\*)|([-a-z]+[/][*-._\\w]+))$", - "type": "string" - }, - "CalculatorName": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[-._\\w]+$", - "type": "string" - }, - "CreateTime": { - "$ref": "#/definitions/iso8601UTC" - }, - "DataSource": { - "type": "string" - }, - "Description": { - "maxLength": 1000, - "minLength": 0, - "type": "string" - }, - "PricingPlan": { - "$ref": "#/definitions/PricingPlan" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "UpdateTime": { - "$ref": "#/definitions/iso8601UTC" - } - }, - "readOnlyProperties": [ - "/properties/CalculatorArn", - "/properties/Arn", - "/properties/CreateTime", - "/properties/UpdateTime" - ], - "required": [ - "DataSource", - "CalculatorName" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "geo:TagResource", - "geo:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Location::RouteCalculator" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CalculatorName", + "/properties/DataSource" + ], + "definitions": { + "PricingPlan": { + "enum": [ + "RequestBasedUsage" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[A-Za-z0-9 _=@:.+-/]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "maxProperties": 50, + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$", + "type": "string" + } + }, + "type": "object" + }, + "iso8601UTC": { + "description": "The datetime value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ss.sssZ)", + "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", + "type": "string" + } + }, + "description": "Definition of AWS::Location::RouteCalculator Resource Type", + "handlers": { + "create": { + "permissions": [ + "geo:CreateRouteCalculator", + "geo:DescribeRouteCalculator", + "geo:TagResource", + "geo:UntagResource" + ] + }, + "delete": { + "permissions": [ + "geo:DeleteRouteCalculator", + "geo:DescribeRouteCalculator" + ] + }, + "list": { + "permissions": [ + "geo:ListRouteCalculators" + ] + }, + "read": { + "permissions": [ + "geo:DescribeRouteCalculator" + ] + }, + "update": { + "permissions": [ + "geo:CreateRouteCalculator", + "geo:DescribeRouteCalculator", + "geo:TagResource", + "geo:UntagResource", + "geo:UpdateRouteCalculator" + ] + } + }, + "primaryIdentifier": [ + "/properties/CalculatorName" + ], + "properties": { + "Arn": { + "maxLength": 1600, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", + "type": "string" + }, + "CalculatorArn": { + "maxLength": 1600, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*):geo(:([a-z0-9]+([.-][a-z0-9]+)*))(:[0-9]+):((\\*)|([-a-z]+[/][*-._\\w]+))$", + "type": "string" + }, + "CalculatorName": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[-._\\w]+$", + "type": "string" + }, + "CreateTime": { + "$ref": "#/definitions/iso8601UTC" + }, + "DataSource": { + "type": "string" + }, + "Description": { + "maxLength": 1000, + "minLength": 0, + "type": "string" + }, + "PricingPlan": { + "$ref": "#/definitions/PricingPlan" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "UpdateTime": { + "$ref": "#/definitions/iso8601UTC" + } + }, + "readOnlyProperties": [ + "/properties/CalculatorArn", + "/properties/Arn", + "/properties/CreateTime", + "/properties/UpdateTime" + ], + "required": [ + "DataSource", + "CalculatorName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "geo:TagResource", + "geo:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Location::RouteCalculator" +} diff --git a/src/schema/aws-location-tracker.json b/src/schema/aws-location-tracker.json index 468969a9..ec94b317 100644 --- a/src/schema/aws-location-tracker.json +++ b/src/schema/aws-location-tracker.json @@ -1,196 +1,196 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKeyId", - "/properties/TrackerName" - ], - "definitions": { - "PositionFiltering": { - "enum": [ - "TimeBased", - "DistanceBased", - "AccuracyBased" - ], - "type": "string" - }, - "PricingPlan": { - "enum": [ - "RequestBasedUsage" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "pattern": "^[A-Za-z0-9 _=@:.+-/]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "maxProperties": 50, - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$", - "type": "string" - } - }, - "type": "object" - }, - "iso8601UTC": { - "description": "The datetime value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ss.sssZ)", - "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/PricingPlan", - "/properties/PricingPlanDataSource" - ], - "description": "Definition of AWS::Location::Tracker Resource Type", - "handlers": { - "create": { - "permissions": [ - "geo:CreateTracker", - "geo:DescribeTracker", - "geo:TagResource", - "geo:UntagResource", - "kms:DescribeKey", - "kms:CreateGrant" - ] - }, - "delete": { - "permissions": [ - "geo:DeleteTracker", - "geo:DescribeTracker" - ] - }, - "list": { - "permissions": [ - "geo:ListTrackers" - ] - }, - "read": { - "permissions": [ - "geo:DescribeTracker", - "kms:DescribeKey" - ] - }, - "update": { - "permissions": [ - "geo:CreateTracker", - "geo:DescribeTracker", - "geo:TagResource", - "geo:UntagResource", - "kms:DescribeKey", - "kms:CreateGrant", - "geo:UpdateTracker" - ] - } - }, - "primaryIdentifier": [ - "/properties/TrackerName" - ], - "properties": { - "Arn": { - "maxLength": 1600, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", - "type": "string" - }, - "CreateTime": { - "$ref": "#/definitions/iso8601UTC" - }, - "Description": { - "maxLength": 1000, - "minLength": 0, - "type": "string" - }, - "EventBridgeEnabled": { - "type": "boolean" - }, - "KmsKeyEnableGeospatialQueries": { - "type": "boolean" - }, - "KmsKeyId": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "PositionFiltering": { - "$ref": "#/definitions/PositionFiltering" - }, - "PricingPlan": { - "$ref": "#/definitions/PricingPlan" - }, - "PricingPlanDataSource": { - "description": "This shape is deprecated since 2022-02-01: Deprecated. No longer allowed.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "TrackerArn": { - "maxLength": 1600, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", - "type": "string" - }, - "TrackerName": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[-._\\w]+$", - "type": "string" - }, - "UpdateTime": { - "$ref": "#/definitions/iso8601UTC" - } - }, - "readOnlyProperties": [ - "/properties/CreateTime", - "/properties/Arn", - "/properties/TrackerArn", - "/properties/UpdateTime" - ], - "required": [ - "TrackerName" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "geo:TagResource", - "geo:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Location::Tracker" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KmsKeyId", + "/properties/TrackerName" + ], + "definitions": { + "PositionFiltering": { + "enum": [ + "TimeBased", + "DistanceBased", + "AccuracyBased" + ], + "type": "string" + }, + "PricingPlan": { + "enum": [ + "RequestBasedUsage" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[A-Za-z0-9 _=@:.+-/]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "maxProperties": 50, + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.,:/=+\\-@]*)$", + "type": "string" + } + }, + "type": "object" + }, + "iso8601UTC": { + "description": "The datetime value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ss.sssZ)", + "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/PricingPlan", + "/properties/PricingPlanDataSource" + ], + "description": "Definition of AWS::Location::Tracker Resource Type", + "handlers": { + "create": { + "permissions": [ + "geo:CreateTracker", + "geo:DescribeTracker", + "geo:TagResource", + "geo:UntagResource", + "kms:DescribeKey", + "kms:CreateGrant" + ] + }, + "delete": { + "permissions": [ + "geo:DeleteTracker", + "geo:DescribeTracker" + ] + }, + "list": { + "permissions": [ + "geo:ListTrackers" + ] + }, + "read": { + "permissions": [ + "geo:DescribeTracker", + "kms:DescribeKey" + ] + }, + "update": { + "permissions": [ + "geo:CreateTracker", + "geo:DescribeTracker", + "geo:TagResource", + "geo:UntagResource", + "kms:DescribeKey", + "kms:CreateGrant", + "geo:UpdateTracker" + ] + } + }, + "primaryIdentifier": [ + "/properties/TrackerName" + ], + "properties": { + "Arn": { + "maxLength": 1600, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", + "type": "string" + }, + "CreateTime": { + "$ref": "#/definitions/iso8601UTC" + }, + "Description": { + "maxLength": 1000, + "minLength": 0, + "type": "string" + }, + "EventBridgeEnabled": { + "type": "boolean" + }, + "KmsKeyEnableGeospatialQueries": { + "type": "boolean" + }, + "KmsKeyId": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "PositionFiltering": { + "$ref": "#/definitions/PositionFiltering" + }, + "PricingPlan": { + "$ref": "#/definitions/PricingPlan" + }, + "PricingPlanDataSource": { + "description": "This shape is deprecated since 2022-02-01: Deprecated. No longer allowed.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "TrackerArn": { + "maxLength": 1600, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", + "type": "string" + }, + "TrackerName": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[-._\\w]+$", + "type": "string" + }, + "UpdateTime": { + "$ref": "#/definitions/iso8601UTC" + } + }, + "readOnlyProperties": [ + "/properties/CreateTime", + "/properties/Arn", + "/properties/TrackerArn", + "/properties/UpdateTime" + ], + "required": [ + "TrackerName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "geo:TagResource", + "geo:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Location::Tracker" +} diff --git a/src/schema/aws-location-trackerconsumer.json b/src/schema/aws-location-trackerconsumer.json index abec2a7f..80469108 100644 --- a/src/schema/aws-location-trackerconsumer.json +++ b/src/schema/aws-location-trackerconsumer.json @@ -1,60 +1,60 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TrackerName", - "/properties/ConsumerArn" - ], - "description": "Definition of AWS::Location::TrackerConsumer Resource Type", - "handlers": { - "create": { - "permissions": [ - "geo:AssociateTrackerConsumer", - "geo:ListTrackerConsumers" - ] - }, - "delete": { - "permissions": [ - "geo:DisassociateTrackerConsumer", - "geo:ListTrackerConsumers" - ] - }, - "list": { - "permissions": [ - "geo:ListTrackerConsumers" - ] - }, - "read": { - "permissions": [ - "geo:ListTrackerConsumers" - ] - } - }, - "primaryIdentifier": [ - "/properties/TrackerName", - "/properties/ConsumerArn" - ], - "properties": { - "ConsumerArn": { - "maxLength": 1600, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", - "type": "string" - }, - "TrackerName": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[-._\\w]+$", - "type": "string" - } - }, - "required": [ - "ConsumerArn", - "TrackerName" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Location::TrackerConsumer" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TrackerName", + "/properties/ConsumerArn" + ], + "description": "Definition of AWS::Location::TrackerConsumer Resource Type", + "handlers": { + "create": { + "permissions": [ + "geo:AssociateTrackerConsumer", + "geo:ListTrackerConsumers" + ] + }, + "delete": { + "permissions": [ + "geo:DisassociateTrackerConsumer", + "geo:ListTrackerConsumers" + ] + }, + "list": { + "permissions": [ + "geo:ListTrackerConsumers" + ] + }, + "read": { + "permissions": [ + "geo:ListTrackerConsumers" + ] + } + }, + "primaryIdentifier": [ + "/properties/TrackerName", + "/properties/ConsumerArn" + ], + "properties": { + "ConsumerArn": { + "maxLength": 1600, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", + "type": "string" + }, + "TrackerName": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[-._\\w]+$", + "type": "string" + } + }, + "required": [ + "ConsumerArn", + "TrackerName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Location::TrackerConsumer" +} diff --git a/src/schema/aws-logs-accountpolicy.json b/src/schema/aws-logs-accountpolicy.json index 98288f12..9d3aa520 100644 --- a/src/schema/aws-logs-accountpolicy.json +++ b/src/schema/aws-logs-accountpolicy.json @@ -1,128 +1,140 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyName", - "/properties/PolicyType" - ], - "description": "The AWS::Logs::AccountPolicy resource specifies a CloudWatch Logs AccountPolicy.", - "handlers": { - "create": { - "permissions": [ - "logs:PutAccountPolicy", - "logs:PutDataProtectionPolicy", - "logs:DescribeAccountPolicies", - "logs:CreateLogDelivery", - "s3:REST.PUT.OBJECT", - "firehose:TagDeliveryStream", - "logs:PutSubscriptionFilter", - "logs:DeleteSubscriptionFilter", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "logs:DeleteAccountPolicy", - "logs:DeleteDataProtectionPolicy", - "logs:DescribeAccountPolicies", - "logs:DeleteSubscriptionFilter", - "iam:PassRole" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyType": { - "$ref": "resource-schema.json#/properties/PolicyType" - } - }, - "required": [ - "PolicyType" - ] - }, - "permissions": [ - "logs:DescribeAccountPolicies" - ] - }, - "read": { - "permissions": [ - "logs:DescribeAccountPolicies" - ] - }, - "update": { - "permissions": [ - "logs:PutAccountPolicy", - "logs:PutDataProtectionPolicy", - "logs:DescribeAccountPolicies", - "logs:DeleteAccountPolicy", - "logs:DeleteDataProtectionPolicy", - "logs:CreateLogDelivery", - "logs:PutSubscriptionFilter", - "logs:DeleteSubscriptionFilter", - "s3:REST.PUT.OBJECT", - "firehose:TagDeliveryStream", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/AccountId", - "/properties/PolicyType", - "/properties/PolicyName" - ], - "properties": { - "AccountId": { - "description": "User account id", - "pattern": "^\\d{12}$", - "type": "string" - }, - "PolicyDocument": { - "description": "The body of the policy document you want to use for this topic.\n\nYou can only add one policy per PolicyType.\n\nThe policy must be in JSON string format.\n\nLength Constraints: Maximum length of 30720", - "maxLength": 30720, - "minLength": 1, - "type": "string" - }, - "PolicyName": { - "description": "The name of the account policy", - "maxLength": 256, - "minLength": 1, - "pattern": "^[^:*]{1,256}$", - "type": "string" - }, - "PolicyType": { - "description": "Type of the policy.", - "enum": [ - "DATA_PROTECTION_POLICY", - "SUBSCRIPTION_FILTER_POLICY" - ], - "type": "string" - }, - "Scope": { - "description": "Scope for policy application", - "enum": [ - "ALL" - ], - "type": "string" - }, - "SelectionCriteria": { - "description": "Log group selection criteria to apply policy only to a subset of log groups. SelectionCriteria string can be up to 25KB and cloudwatchlogs determines the length of selectionCriteria by using its UTF-8 bytes", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AccountId" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "PolicyName", - "PolicyType", - "PolicyDocument" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Logs::AccountPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyName", + "/properties/PolicyType" + ], + "description": "The AWS::Logs::AccountPolicy resource specifies a CloudWatch Logs AccountPolicy.", + "handlers": { + "create": { + "permissions": [ + "logs:PutAccountPolicy", + "logs:PutIndexPolicy", + "logs:PutDataProtectionPolicy", + "logs:DescribeAccountPolicies", + "logs:CreateLogDelivery", + "s3:REST.PUT.OBJECT", + "firehose:TagDeliveryStream", + "logs:PutSubscriptionFilter", + "logs:DeleteSubscriptionFilter", + "logs:PutTransformer", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "logs:DeleteAccountPolicy", + "logs:DeleteIndexPolicy", + "logs:DeleteDataProtectionPolicy", + "logs:DescribeAccountPolicies", + "logs:DeleteSubscriptionFilter", + "logs:DeleteTransformer", + "iam:PassRole" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyType": { + "$ref": "resource-schema.json#/properties/PolicyType" + } + }, + "required": [ + "PolicyType" + ] + }, + "permissions": [ + "logs:DescribeAccountPolicies", + "logs:GetTransformer" + ] + }, + "read": { + "permissions": [ + "logs:DescribeAccountPolicies", + "logs:GetTransformer" + ] + }, + "update": { + "permissions": [ + "logs:PutAccountPolicy", + "logs:PutIndexPolicy", + "logs:PutDataProtectionPolicy", + "logs:DescribeAccountPolicies", + "logs:DeleteAccountPolicy", + "logs:DeleteIndexPolicy", + "logs:DeleteDataProtectionPolicy", + "logs:CreateLogDelivery", + "logs:PutSubscriptionFilter", + "logs:DeleteSubscriptionFilter", + "logs:PutTransformer", + "logs:DeleteTransformer", + "s3:REST.PUT.OBJECT", + "firehose:TagDeliveryStream", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccountId", + "/properties/PolicyType", + "/properties/PolicyName" + ], + "properties": { + "AccountId": { + "description": "User account id", + "pattern": "^\\d{12}$", + "type": "string" + }, + "PolicyDocument": { + "description": "The body of the policy document you want to use for this topic.\n\nYou can only add one policy per PolicyType.\n\nThe policy must be in JSON string format.\n\nLength Constraints: Maximum length of 30720", + "maxLength": 30720, + "minLength": 1, + "type": "string" + }, + "PolicyName": { + "description": "The name of the account policy", + "maxLength": 256, + "minLength": 1, + "pattern": "^[^:*]{1,256}$", + "type": "string" + }, + "PolicyType": { + "description": "Type of the policy.", + "enum": [ + "DATA_PROTECTION_POLICY", + "SUBSCRIPTION_FILTER_POLICY", + "FIELD_INDEX_POLICY", + "TRANSFORMER_POLICY" + ], + "type": "string" + }, + "Scope": { + "description": "Scope for policy application", + "enum": [ + "ALL" + ], + "type": "string" + }, + "SelectionCriteria": { + "description": "Log group selection criteria to apply policy only to a subset of log groups. SelectionCriteria string can be up to 25KB and cloudwatchlogs determines the length of selectionCriteria by using its UTF-8 bytes", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AccountId" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "PolicyName", + "PolicyType", + "PolicyDocument" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Logs::AccountPolicy" +} diff --git a/src/schema/aws-logs-delivery.json b/src/schema/aws-logs-delivery.json index 1bfc441a..c38a2fc3 100644 --- a/src/schema/aws-logs-delivery.json +++ b/src/schema/aws-logs-delivery.json @@ -1,170 +1,176 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DeliverySourceName", - "/properties/DeliveryDestinationArn" - ], - "definitions": { - "Arn": { - "description": "Amazon Resource Name (ARN) that uniquely identify AWS resource.", - "maxLength": 2048, - "minLength": 16, - "pattern": "[\\w#+=/:,.@-]*\\*?", - "type": "string" - }, - "FieldHeader": { - "description": "A single record field to be delivered to the destination.", - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "This structure contains information about one delivery in your account.\n\nA delivery is a connection between a logical delivery source and a logical delivery destination.\n\nFor more information, see [CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html).", - "handlers": { - "create": { - "permissions": [ - "logs:CreateDelivery", - "logs:GetDelivery", - "logs:DescribeDeliveries", - "logs:ListTagsForResource", - "logs:TagResource", - "logs:GetDeliverySource", - "logs:GetDeliveryDestination" - ] - }, - "delete": { - "permissions": [ - "logs:DeleteDelivery", - "logs:ListTagsForResource", - "logs:UntagResource" - ] - }, - "list": { - "permissions": [ - "logs:DescribeDeliveries", - "logs:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "logs:GetDelivery", - "logs:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "logs:GetDelivery", - "logs:ListTagsForResource", - "logs:TagResource", - "logs:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/DeliveryId" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn", - "description": "The Amazon Resource Name (ARN) that uniquely identifies this delivery." - }, - "DeliveryDestinationArn": { - "$ref": "#/definitions/Arn", - "description": "The ARN of the delivery destination that is associated with this delivery." - }, - "DeliveryDestinationType": { - "description": "Displays whether the delivery destination associated with this delivery is CloudWatch Logs, Amazon S3, or Kinesis Data Firehose.", - "maxLength": 12, - "minLength": 1, - "pattern": "^[0-9A-Za-z]+$", - "type": "string" - }, - "DeliveryId": { - "description": "The unique ID that identifies this delivery in your account.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[0-9A-Za-z]+$", - "type": "string" - }, - "DeliverySourceName": { - "description": "The name of the delivery source that is associated with this delivery.", - "maxLength": 60, - "minLength": 1, - "pattern": "[\\w-]*$", - "type": "string" - }, - "FieldDelimiter": { - "description": "The field delimiter to use between record fields when the final output format of a delivery is in Plain , W3C , or Raw format.", - "maxLength": 5, - "minLength": 1, - "type": "string" - }, - "RecordFields": { - "description": "The list of record fields to be delivered to the destination, in order. If the delivery's log source has mandatory fields, they must be included in this list.", - "items": { - "$ref": "#/definitions/FieldHeader" - }, - "type": "array" - }, - "S3EnableHiveCompatiblePath": { - "description": "This parameter causes the S3 objects that contain delivered logs to use a prefix structure that allows for integration with Apache Hive.", - "type": "boolean" - }, - "S3SuffixPath": { - "description": "This string allows re-configuring the S3 object prefix to contain either static or variable sections. The valid variables to use in the suffix path will vary by each log source. See ConfigurationTemplate$allowedSuffixPathFields for more info on what values are supported in the suffix path for each log source.", - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "Tags": { - "description": "The tags that have been assigned to this delivery.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/DeliveryId", - "/properties/Arn", - "/properties/DeliveryDestinationType" - ], - "required": [ - "DeliverySourceName", - "DeliveryDestinationArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Logs::Delivery" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DeliverySourceName", + "/properties/DeliveryDestinationArn" + ], + "definitions": { + "Arn": { + "description": "Amazon Resource Name (ARN) that uniquely identify AWS resource.", + "maxLength": 2048, + "minLength": 16, + "pattern": "[\\w#+=/:,.@-]*\\*?", + "type": "string" + }, + "FieldHeader": { + "description": "A single record field to be delivered to the destination.", + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "This structure contains information about one delivery in your account.\n\nA delivery is a connection between a logical delivery source and a logical delivery destination.\n\nFor more information, see [CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html).", + "handlers": { + "create": { + "permissions": [ + "logs:CreateDelivery", + "logs:GetDelivery", + "logs:DescribeDeliveries", + "logs:ListTagsForResource", + "logs:TagResource", + "logs:GetDeliverySource", + "logs:GetDeliveryDestination" + ] + }, + "delete": { + "permissions": [ + "logs:DeleteDelivery", + "logs:ListTagsForResource", + "logs:UntagResource" + ] + }, + "list": { + "permissions": [ + "logs:DescribeDeliveries", + "logs:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "logs:GetDelivery", + "logs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "logs:GetDelivery", + "logs:ListTagsForResource", + "logs:TagResource", + "logs:UntagResource", + "logs:UpdateDeliveryConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/DeliveryId" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn", + "description": "The Amazon Resource Name (ARN) that uniquely identifies this delivery." + }, + "DeliveryDestinationArn": { + "$ref": "#/definitions/Arn", + "description": "The ARN of the delivery destination that is associated with this delivery." + }, + "DeliveryDestinationType": { + "description": "Displays whether the delivery destination associated with this delivery is CloudWatch Logs, Amazon S3, or Kinesis Data Firehose.", + "maxLength": 12, + "minLength": 1, + "pattern": "^[0-9A-Za-z]+$", + "type": "string" + }, + "DeliveryId": { + "description": "The unique ID that identifies this delivery in your account.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9A-Za-z]+$", + "type": "string" + }, + "DeliverySourceName": { + "description": "The name of the delivery source that is associated with this delivery.", + "maxLength": 60, + "minLength": 1, + "pattern": "[\\w-]*$", + "type": "string" + }, + "FieldDelimiter": { + "description": "The field delimiter to use between record fields when the final output format of a delivery is in Plain , W3C , or Raw format.", + "maxLength": 5, + "minLength": 1, + "type": "string" + }, + "RecordFields": { + "description": "The list of record fields to be delivered to the destination, in order. If the delivery's log source has mandatory fields, they must be included in this list.", + "items": { + "$ref": "#/definitions/FieldHeader" + }, + "type": "array" + }, + "S3EnableHiveCompatiblePath": { + "description": "This parameter causes the S3 objects that contain delivered logs to use a prefix structure that allows for integration with Apache Hive.", + "type": "boolean" + }, + "S3SuffixPath": { + "description": "This string allows re-configuring the S3 object prefix to contain either static or variable sections. The valid variables to use in the suffix path will vary by each log source. See ConfigurationTemplate$allowedSuffixPathFields for more info on what values are supported in the suffix path for each log source.", + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Tags": { + "description": "The tags that have been assigned to this delivery.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/DeliveryId", + "/properties/Arn", + "/properties/DeliveryDestinationType" + ], + "required": [ + "DeliverySourceName", + "DeliveryDestinationArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "logs:TagResource", + "logs:UntagResource", + "logs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Logs::Delivery" +} diff --git a/src/schema/aws-logs-deliverydestination.json b/src/schema/aws-logs-deliverydestination.json index 4cbc306e..f00eff7e 100644 --- a/src/schema/aws-logs-deliverydestination.json +++ b/src/schema/aws-logs-deliverydestination.json @@ -1,173 +1,178 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/OutputFormat", - "/properties/DestinationResourceArn" - ], - "definitions": { - "Arn": { - "description": "The Amazon Resource Name (ARN) that uniquely identifies a resource.", - "maxLength": 2048, - "minLength": 16, - "pattern": "[\\w#+=/:,.@-]*\\*?", - "type": "string" - }, - "DestinationPolicy": { - "additionalProperties": false, - "properties": { - "DeliveryDestinationName": { - "description": "The name of the delivery destination to assign this policy to", - "maxLength": 60, - "minLength": 1, - "type": "string" - }, - "DeliveryDestinationPolicy": { - "description": "The contents of the policy attached to the delivery destination", - "maxLength": 51200, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DeliveryDestinationName", - "DeliveryDestinationPolicy" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "This structure contains information about one delivery destination in your account.\n\nA delivery destination is an AWS resource that represents an AWS service that logs can be sent to CloudWatch Logs, Amazon S3, are supported as Kinesis Data Firehose delivery destinations.", - "handlers": { - "create": { - "permissions": [ - "logs:PutDeliveryDestination", - "logs:GetDeliveryDestination", - "logs:ListTagsForResource", - "logs:TagResource", - "logs:UntagResource", - "logs:PutDeliveryDestinationPolicy", - "logs:GetDeliveryDestinationPolicy" - ] - }, - "delete": { - "permissions": [ - "logs:DeleteDeliveryDestination", - "logs:DeleteDeliveryDestinationPolicy" - ] - }, - "list": { - "permissions": [ - "logs:DescribeDeliveryDestinations", - "logs:GetDeliveryDestinationPolicy" - ] - }, - "read": { - "permissions": [ - "logs:GetDeliveryDestination", - "logs:ListTagsForResource", - "logs:GetDeliveryDestinationPolicy" - ] - }, - "update": { - "permissions": [ - "logs:PutDeliveryDestination", - "logs:GetDeliveryDestination", - "logs:ListTagsForResource", - "logs:TagResource", - "logs:UntagResource", - "logs:DeleteDeliveryDestinationPolicy", - "logs:PutDeliveryDestinationPolicy", - "logs:GetDeliveryDestinationPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn", - "description": "The Amazon Resource Name (ARN) that uniquely identifies this delivery destination." - }, - "DeliveryDestinationPolicy": { - "description": "IAM policy that grants permissions to CloudWatch Logs to deliver logs cross-account to a specified destination in this account.\n\nThe policy must be in JSON string format.\n\nLength Constraints: Maximum length of 51200", - "items": { - "$ref": "#/definitions/DestinationPolicy" - }, - "type": "object" - }, - "DeliveryDestinationType": { - "description": "Displays whether this delivery destination is CloudWatch Logs, Amazon S3, or Kinesis Data Firehose.", - "maxLength": 12, - "minLength": 1, - "pattern": "^[0-9A-Za-z]+$", - "type": "string" - }, - "DestinationResourceArn": { - "$ref": "#/definitions/Arn", - "description": "The ARN of the Amazon Web Services destination that this delivery destination represents. That Amazon Web Services destination can be a log group in CloudWatch Logs, an Amazon S3 bucket, or a delivery stream in Firehose." - }, - "Name": { - "description": "The name of this delivery destination.", - "maxLength": 60, - "minLength": 1, - "pattern": "[\\w-]*$", - "type": "string" - }, - "OutputFormat": { - "description": "The format of the logs that are sent to this delivery destination.", - "maxLength": 12, - "minLength": 1, - "pattern": "^[0-9A-Za-z]+$", - "type": "string" - }, - "Tags": { - "description": "The tags that have been assigned to this delivery destination.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/DeliveryDestinationType" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Logs::DeliveryDestination" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/OutputFormat", + "/properties/DestinationResourceArn" + ], + "definitions": { + "Arn": { + "description": "The Amazon Resource Name (ARN) that uniquely identifies a resource.", + "maxLength": 2048, + "minLength": 16, + "pattern": "[\\w#+=/:,.@-]*\\*?", + "type": "string" + }, + "DestinationPolicy": { + "additionalProperties": false, + "properties": { + "DeliveryDestinationName": { + "description": "The name of the delivery destination to assign this policy to", + "maxLength": 60, + "minLength": 1, + "type": "string" + }, + "DeliveryDestinationPolicy": { + "description": "The contents of the policy attached to the delivery destination", + "maxLength": 51200, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DeliveryDestinationName", + "DeliveryDestinationPolicy" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "This structure contains information about one delivery destination in your account.\n\nA delivery destination is an AWS resource that represents an AWS service that logs can be sent to CloudWatch Logs, Amazon S3, are supported as Kinesis Data Firehose delivery destinations.", + "handlers": { + "create": { + "permissions": [ + "logs:PutDeliveryDestination", + "logs:GetDeliveryDestination", + "logs:ListTagsForResource", + "logs:TagResource", + "logs:UntagResource", + "logs:PutDeliveryDestinationPolicy", + "logs:GetDeliveryDestinationPolicy" + ] + }, + "delete": { + "permissions": [ + "logs:DeleteDeliveryDestination", + "logs:DeleteDeliveryDestinationPolicy" + ] + }, + "list": { + "permissions": [ + "logs:DescribeDeliveryDestinations", + "logs:GetDeliveryDestinationPolicy" + ] + }, + "read": { + "permissions": [ + "logs:GetDeliveryDestination", + "logs:ListTagsForResource", + "logs:GetDeliveryDestinationPolicy" + ] + }, + "update": { + "permissions": [ + "logs:PutDeliveryDestination", + "logs:GetDeliveryDestination", + "logs:ListTagsForResource", + "logs:TagResource", + "logs:UntagResource", + "logs:DeleteDeliveryDestinationPolicy", + "logs:PutDeliveryDestinationPolicy", + "logs:GetDeliveryDestinationPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn", + "description": "The Amazon Resource Name (ARN) that uniquely identifies this delivery destination." + }, + "DeliveryDestinationPolicy": { + "description": "IAM policy that grants permissions to CloudWatch Logs to deliver logs cross-account to a specified destination in this account.\n\nThe policy must be in JSON string format.\n\nLength Constraints: Maximum length of 51200", + "items": { + "$ref": "#/definitions/DestinationPolicy" + }, + "type": "object" + }, + "DeliveryDestinationType": { + "description": "Displays whether this delivery destination is CloudWatch Logs, Amazon S3, or Kinesis Data Firehose.", + "maxLength": 12, + "minLength": 1, + "pattern": "^[0-9A-Za-z]+$", + "type": "string" + }, + "DestinationResourceArn": { + "$ref": "#/definitions/Arn", + "description": "The ARN of the Amazon Web Services destination that this delivery destination represents. That Amazon Web Services destination can be a log group in CloudWatch Logs, an Amazon S3 bucket, or a delivery stream in Firehose." + }, + "Name": { + "description": "The name of this delivery destination.", + "maxLength": 60, + "minLength": 1, + "pattern": "[\\w-]*$", + "type": "string" + }, + "OutputFormat": { + "description": "The format of the logs that are sent to this delivery destination.", + "maxLength": 12, + "minLength": 1, + "pattern": "^[0-9A-Za-z]+$", + "type": "string" + }, + "Tags": { + "description": "The tags that have been assigned to this delivery destination.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/DeliveryDestinationType" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "logs:TagResource", + "logs:UntagResource", + "logs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Logs::DeliveryDestination" +} diff --git a/src/schema/aws-logs-deliverysource.json b/src/schema/aws-logs-deliverysource.json index 335ca847..37b77d5a 100644 --- a/src/schema/aws-logs-deliverysource.json +++ b/src/schema/aws-logs-deliverysource.json @@ -1,150 +1,155 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Arn": { - "description": "The Amazon Resource Name (ARN) that uniquely identifies this delivery source.", - "maxLength": 2048, - "minLength": 16, - "pattern": "[\\w#+=/:,.@-]*\\*?", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": " A delivery source is an AWS resource that sends logs to an AWS destination. The destination can be CloudWatch Logs, Amazon S3, or Kinesis Data Firehose.\n\nOnly some AWS services support being configured as a delivery source. These services are listed as Supported [V2 Permissions] in the table at [Enabling logging from AWS services](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html).", - "handlers": { - "create": { - "permissions": [ - "logs:PutDeliverySource", - "logs:GetDeliverySource", - "logs:ListTagsForResource", - "logs:TagResource", - "logs:AllowVendedLogDeliveryForResource", - "codewhisperer:AllowVendedLogDeliveryForResource", - "autoloop:AllowVendedLogDeliveryForResource", - "workmail:AllowVendedLogDeliveryForResource" - ] - }, - "delete": { - "permissions": [ - "logs:DeleteDeliverySource" - ] - }, - "list": { - "permissions": [ - "logs:DescribeDeliverySources" - ] - }, - "read": { - "permissions": [ - "logs:GetDeliverySource", - "logs:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "logs:PutDeliverySource", - "logs:GetDeliverySource", - "logs:ListTagsForResource", - "logs:TagResource", - "logs:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn", - "description": "The Amazon Resource Name (ARN) that uniquely identifies this delivery source." - }, - "LogType": { - "description": "The type of logs being delivered. Only mandatory when the resourceArn could match more than one. In such a case, the error message will contain all the possible options.", - "maxLength": 255, - "minLength": 1, - "pattern": "[\\w-]*$", - "type": "string" - }, - "Name": { - "description": "The unique name of the Log source.", - "maxLength": 60, - "minLength": 1, - "pattern": "[\\w-]*$", - "type": "string" - }, - "ResourceArn": { - "$ref": "#/definitions/Arn", - "description": "The ARN of the resource that will be sending the logs." - }, - "ResourceArns": { - "description": "This array contains the ARN of the AWS resource that sends logs and is represented by this delivery source. Currently, only one ARN can be in the array.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Arn" - }, - "type": "array", - "uniqueItems": true - }, - "Service": { - "description": "The AWS service that is sending logs.", - "maxLength": 255, - "minLength": 1, - "pattern": "[\\w-]*$", - "type": "string" - }, - "Tags": { - "description": "The tags that have been assigned to this delivery source.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Service", - "/properties/ResourceArns", - "/properties/Arn" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Logs::DeliverySource", - "writeOnlyProperties": [ - "/properties/ResourceArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Arn": { + "description": "The Amazon Resource Name (ARN) that uniquely identifies this delivery source.", + "maxLength": 2048, + "minLength": 16, + "pattern": "[\\w#+=/:,.@-]*\\*?", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": " A delivery source is an AWS resource that sends logs to an AWS destination. The destination can be CloudWatch Logs, Amazon S3, or Kinesis Data Firehose.\n\nOnly some AWS services support being configured as a delivery source. These services are listed as Supported [V2 Permissions] in the table at [Enabling logging from AWS services](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html).", + "handlers": { + "create": { + "permissions": [ + "logs:PutDeliverySource", + "logs:GetDeliverySource", + "logs:ListTagsForResource", + "logs:TagResource", + "logs:AllowVendedLogDeliveryForResource", + "codewhisperer:AllowVendedLogDeliveryForResource", + "autoloop:AllowVendedLogDeliveryForResource", + "workmail:AllowVendedLogDeliveryForResource" + ] + }, + "delete": { + "permissions": [ + "logs:DeleteDeliverySource" + ] + }, + "list": { + "permissions": [ + "logs:DescribeDeliverySources" + ] + }, + "read": { + "permissions": [ + "logs:GetDeliverySource", + "logs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "logs:PutDeliverySource", + "logs:GetDeliverySource", + "logs:ListTagsForResource", + "logs:TagResource", + "logs:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn", + "description": "The Amazon Resource Name (ARN) that uniquely identifies this delivery source." + }, + "LogType": { + "description": "The type of logs being delivered. Only mandatory when the resourceArn could match more than one. In such a case, the error message will contain all the possible options.", + "maxLength": 255, + "minLength": 1, + "pattern": "[\\w-]*$", + "type": "string" + }, + "Name": { + "description": "The unique name of the Log source.", + "maxLength": 60, + "minLength": 1, + "pattern": "[\\w-]*$", + "type": "string" + }, + "ResourceArn": { + "$ref": "#/definitions/Arn", + "description": "The ARN of the resource that will be sending the logs." + }, + "ResourceArns": { + "description": "This array contains the ARN of the AWS resource that sends logs and is represented by this delivery source. Currently, only one ARN can be in the array.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Arn" + }, + "type": "array", + "uniqueItems": true + }, + "Service": { + "description": "The AWS service that is sending logs.", + "maxLength": 255, + "minLength": 1, + "pattern": "[\\w-]*$", + "type": "string" + }, + "Tags": { + "description": "The tags that have been assigned to this delivery source.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Service", + "/properties/ResourceArns", + "/properties/Arn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "logs:TagResource", + "logs:UntagResource", + "logs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Logs::DeliverySource", + "writeOnlyProperties": [ + "/properties/ResourceArn" + ] +} diff --git a/src/schema/aws-logs-destination.json b/src/schema/aws-logs-destination.json index a1ff4827..72368b87 100644 --- a/src/schema/aws-logs-destination.json +++ b/src/schema/aws-logs-destination.json @@ -1,83 +1,83 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DestinationName" - ], - "description": "The AWS::Logs::Destination resource specifies a CloudWatch Logs destination. A destination encapsulates a physical resource (such as an Amazon Kinesis data stream) and enables you to subscribe that resource to a stream of log events.", - "handlers": { - "create": { - "permissions": [ - "logs:PutDestination", - "logs:PutDestinationPolicy", - "logs:DescribeDestinations", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "logs:DeleteDestination" - ] - }, - "list": { - "permissions": [ - "logs:DescribeDestinations" - ] - }, - "read": { - "permissions": [ - "logs:DescribeDestinations" - ] - }, - "update": { - "permissions": [ - "logs:PutDestination", - "logs:PutDestinationPolicy", - "logs:DescribeDestinations", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/DestinationName" - ], - "properties": { - "Arn": { - "type": "string" - }, - "DestinationName": { - "description": "The name of the destination resource", - "maxLength": 512, - "minLength": 1, - "pattern": "^[^:*]{1,512}$", - "type": "string" - }, - "DestinationPolicy": { - "description": "An IAM policy document that governs which AWS accounts can create subscription filters against this destination.", - "minLength": 1, - "type": "string" - }, - "RoleArn": { - "description": "The ARN of an IAM role that permits CloudWatch Logs to send data to the specified AWS resource", - "minLength": 1, - "type": "string" - }, - "TargetArn": { - "description": "The ARN of the physical target where the log events are delivered (for example, a Kinesis stream)", - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "DestinationName", - "TargetArn", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Logs::Destination" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DestinationName" + ], + "description": "The AWS::Logs::Destination resource specifies a CloudWatch Logs destination. A destination encapsulates a physical resource (such as an Amazon Kinesis data stream) and enables you to subscribe that resource to a stream of log events.", + "handlers": { + "create": { + "permissions": [ + "logs:PutDestination", + "logs:PutDestinationPolicy", + "logs:DescribeDestinations", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "logs:DeleteDestination" + ] + }, + "list": { + "permissions": [ + "logs:DescribeDestinations" + ] + }, + "read": { + "permissions": [ + "logs:DescribeDestinations" + ] + }, + "update": { + "permissions": [ + "logs:PutDestination", + "logs:PutDestinationPolicy", + "logs:DescribeDestinations", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DestinationName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "DestinationName": { + "description": "The name of the destination resource", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^:*]{1,512}$", + "type": "string" + }, + "DestinationPolicy": { + "description": "An IAM policy document that governs which AWS accounts can create subscription filters against this destination.", + "minLength": 1, + "type": "string" + }, + "RoleArn": { + "description": "The ARN of an IAM role that permits CloudWatch Logs to send data to the specified AWS resource", + "minLength": 1, + "type": "string" + }, + "TargetArn": { + "description": "The ARN of the physical target where the log events are delivered (for example, a Kinesis stream)", + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "DestinationName", + "TargetArn", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Logs::Destination" +} diff --git a/src/schema/aws-logs-integration.json b/src/schema/aws-logs-integration.json new file mode 100644 index 00000000..9da27ece --- /dev/null +++ b/src/schema/aws-logs-integration.json @@ -0,0 +1,167 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IntegrationName", + "/properties/IntegrationType", + "/properties/ResourceConfig" + ], + "definitions": { + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "[\\w#+=/:,.@-]*\\*?", + "type": "string" + }, + "OpenSearchResourceConfig": { + "additionalProperties": false, + "properties": { + "ApplicationARN": { + "$ref": "#/definitions/Arn" + }, + "DashboardViewerPrincipals": { + "items": { + "$ref": "#/definitions/Arn" + }, + "type": "array" + }, + "DataSourceRoleArn": { + "$ref": "#/definitions/Arn" + }, + "KmsKeyArn": { + "$ref": "#/definitions/Arn" + }, + "RetentionDays": { + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "DataSourceRoleArn", + "DashboardViewerPrincipals" + ], + "type": "object" + } + }, + "description": "Resource Schema for Logs Integration Resource", + "handlers": { + "create": { + "permissions": [ + "logs:PutIntegration", + "logs:GetIntegration", + "aoss:CreateCollection", + "aoss:CreateSecurityPolicy", + "aoss:CreateAccessPolicy", + "aoss:CreateLifeCyclePolicy", + "aoss:BatchGetCollection", + "aoss:DeleteCollection", + "aoss:DeleteSecurityPolicy", + "aoss:DeleteAccessPolicy", + "aoss:DeleteLifeCyclePolicy", + "aoss:GetAccessPolicy", + "aoss:GetSecurityPolicy", + "aoss:BatchGetLifecyclePolicy", + "aoss:TagResource", + "aoss:APIAccessAll", + "opensearch:AddDirectQueryDataSource", + "opensearch:DeleteDirectQueryDataSource", + "opensearch:GetDirectQueryDataSource", + "opensearch:CreateApplication", + "opensearch:GetApplication", + "opensearch:UpdateApplication", + "opensearch:DeleteApplication", + "opensearch:ApplicationAccessAll", + "opensearch:DashboardsAccessAll", + "opensearch:StartDirectQuery", + "opensearch:GetDirectQuery", + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "iam:AttachRolePolicy", + "iam:AttachUserPolicy", + "es:AddDirectQueryDataSource", + "es:CreateApplication", + "es:UpdateApplication", + "es:GetApplication", + "es:DeleteApplication", + "es:DeleteDirectQueryDataSource", + "es:GetDirectQueryDataSource", + "es:AddTags", + "es:ListApplications" + ], + "timeoutInMinutes": 30 + }, + "delete": { + "permissions": [ + "logs:DeleteIntegration" + ] + }, + "list": { + "permissions": [ + "logs:ListIntegrations" + ] + }, + "read": { + "permissions": [ + "logs:GetIntegration" + ] + } + }, + "primaryIdentifier": [ + "/properties/IntegrationName" + ], + "properties": { + "IntegrationName": { + "description": "User provided identifier for integration, unique to the user account.", + "maxLength": 50, + "minLength": 1, + "pattern": "[\\.\\-_/#A-Za-z0-9]+", + "type": "string" + }, + "IntegrationStatus": { + "description": "Status of creation for the Integration and its resources", + "enum": [ + "PROVISIONING", + "ACTIVE", + "FAILED" + ], + "type": "string" + }, + "IntegrationType": { + "description": "The type of the Integration.", + "enum": [ + "OPENSEARCH" + ], + "type": "string" + }, + "ResourceConfig": { + "additionalProperties": false, + "description": "OpenSearchResourceConfig for the given Integration", + "properties": { + "OpenSearchResourceConfig": { + "$ref": "#/definitions/OpenSearchResourceConfig" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/IntegrationStatus" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "IntegrationName", + "IntegrationType", + "ResourceConfig" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Logs::Integration", + "writeOnlyProperties": [ + "/properties/ResourceConfig" + ] +} diff --git a/src/schema/aws-logs-loganomalydetector.json b/src/schema/aws-logs-loganomalydetector.json index 46288a00..40d82064 100644 --- a/src/schema/aws-logs-loganomalydetector.json +++ b/src/schema/aws-logs-loganomalydetector.json @@ -1,111 +1,111 @@ -{ - "additionalProperties": false, - "description": "The AWS::Logs::LogAnomalyDetector resource specifies a CloudWatch Logs LogAnomalyDetector.", - "handlers": { - "create": { - "permissions": [ - "logs:CreateLogAnomalyDetector" - ] - }, - "delete": { - "permissions": [ - "logs:DeleteLogAnomalyDetector" - ] - }, - "list": { - "permissions": [ - "logs:ListLogAnomalyDetectors" - ] - }, - "read": { - "permissions": [ - "logs:GetLogAnomalyDetector" - ] - }, - "update": { - "permissions": [ - "logs:UpdateLogAnomalyDetector" - ] - } - }, - "primaryIdentifier": [ - "/properties/AnomalyDetectorArn" - ], - "properties": { - "AccountId": { - "description": "Account ID for owner of detector", - "type": "string" - }, - "AnomalyDetectorArn": { - "description": "ARN of LogAnomalyDetector", - "type": "string" - }, - "AnomalyDetectorStatus": { - "description": "Current status of detector.", - "type": "string" - }, - "AnomalyVisibilityTime": { - "description": "", - "type": "number" - }, - "CreationTimeStamp": { - "description": "When detector was created.", - "type": "number" - }, - "DetectorName": { - "description": "Name of detector", - "type": "string" - }, - "EvaluationFrequency": { - "description": "How often log group is evaluated", - "enum": [ - "FIVE_MIN", - "TEN_MIN", - "FIFTEEN_MIN", - "THIRTY_MIN", - "ONE_HOUR" - ], - "type": "string" - }, - "FilterPattern": { - "description": "", - "pattern": "", - "type": "string" - }, - "KmsKeyId": { - "description": "The Amazon Resource Name (ARN) of the CMK to use when encrypting log data.", - "maxLength": 256, - "type": "string" - }, - "LastModifiedTimeStamp": { - "description": "When detector was lsat modified.", - "type": "number" - }, - "LogGroupArnList": { - "description": "List of Arns for the given log group", - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/AnomalyDetectorArn", - "/properties/CreationTimeStamp", - "/properties/LastModifiedTimeStamp", - "/properties/AnomalyDetectorStatus" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Logs::LogAnomalyDetector", - "writeOnlyProperties": [ - "/properties/AccountId" - ] -} +{ + "additionalProperties": false, + "description": "The AWS::Logs::LogAnomalyDetector resource specifies a CloudWatch Logs LogAnomalyDetector.", + "handlers": { + "create": { + "permissions": [ + "logs:CreateLogAnomalyDetector" + ] + }, + "delete": { + "permissions": [ + "logs:DeleteLogAnomalyDetector" + ] + }, + "list": { + "permissions": [ + "logs:ListLogAnomalyDetectors" + ] + }, + "read": { + "permissions": [ + "logs:GetLogAnomalyDetector" + ] + }, + "update": { + "permissions": [ + "logs:UpdateLogAnomalyDetector" + ] + } + }, + "primaryIdentifier": [ + "/properties/AnomalyDetectorArn" + ], + "properties": { + "AccountId": { + "description": "Account ID for owner of detector", + "type": "string" + }, + "AnomalyDetectorArn": { + "description": "ARN of LogAnomalyDetector", + "type": "string" + }, + "AnomalyDetectorStatus": { + "description": "Current status of detector.", + "type": "string" + }, + "AnomalyVisibilityTime": { + "description": "", + "type": "number" + }, + "CreationTimeStamp": { + "description": "When detector was created.", + "type": "number" + }, + "DetectorName": { + "description": "Name of detector", + "type": "string" + }, + "EvaluationFrequency": { + "description": "How often log group is evaluated", + "enum": [ + "FIVE_MIN", + "TEN_MIN", + "FIFTEEN_MIN", + "THIRTY_MIN", + "ONE_HOUR" + ], + "type": "string" + }, + "FilterPattern": { + "description": "", + "pattern": "", + "type": "string" + }, + "KmsKeyId": { + "description": "The Amazon Resource Name (ARN) of the CMK to use when encrypting log data.", + "maxLength": 256, + "type": "string" + }, + "LastModifiedTimeStamp": { + "description": "When detector was lsat modified.", + "type": "number" + }, + "LogGroupArnList": { + "description": "List of Arns for the given log group", + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/AnomalyDetectorArn", + "/properties/CreationTimeStamp", + "/properties/LastModifiedTimeStamp", + "/properties/AnomalyDetectorStatus" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Logs::LogAnomalyDetector", + "writeOnlyProperties": [ + "/properties/AccountId" + ] +} diff --git a/src/schema/aws-logs-loggroup.json b/src/schema/aws-logs-loggroup.json index 67616b68..e6f2d084 100644 --- a/src/schema/aws-logs-loggroup.json +++ b/src/schema/aws-logs-loggroup.json @@ -1,177 +1,199 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LogGroupName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "", - "properties": { - "Key": { - "description": "", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The ``AWS::Logs::LogGroup`` resource specifies a log group. A log group defines common properties for log streams, such as their retention and access control rules. Each log stream must belong to one log group.\n You can create up to 1,000,000 log groups per Region per account. You must use the following guidelines when naming a log group:\n + Log group names must be unique within a Region for an AWS account.\n + Log group names can be between 1 and 512 characters long.\n + Log group names consist of the following characters: a-z, A-Z, 0-9, '_' (underscore), '-' (hyphen), '/' (forward slash), and '.' (period).", - "handlers": { - "create": { - "permissions": [ - "logs:DescribeLogGroups", - "logs:CreateLogGroup", - "logs:PutRetentionPolicy", - "logs:TagResource", - "logs:GetDataProtectionPolicy", - "logs:PutDataProtectionPolicy", - "logs:CreateLogDelivery", - "s3:REST.PUT.OBJECT", - "firehose:TagDeliveryStream", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies" - ] - }, - "delete": { - "permissions": [ - "logs:DescribeLogGroups", - "logs:DeleteLogGroup", - "logs:DeleteDataProtectionPolicy" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "LogGroupName": { - "$ref": "resource-schema.json#/properties/LogGroupName" - } - }, - "required": [] - }, - "permissions": [ - "logs:DescribeLogGroups", - "logs:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "logs:DescribeLogGroups", - "logs:ListTagsForResource", - "logs:GetDataProtectionPolicy" - ] - }, - "update": { - "permissions": [ - "logs:DescribeLogGroups", - "logs:AssociateKmsKey", - "logs:DisassociateKmsKey", - "logs:PutRetentionPolicy", - "logs:DeleteRetentionPolicy", - "logs:TagResource", - "logs:UntagResource", - "logs:GetDataProtectionPolicy", - "logs:PutDataProtectionPolicy", - "logs:CreateLogDelivery", - "s3:REST.PUT.OBJECT", - "firehose:TagDeliveryStream" - ] - } - }, - "primaryIdentifier": [ - "/properties/LogGroupName" - ], - "properties": { - "Arn": { - "description": "", - "type": "string" - }, - "DataProtectionPolicy": { - "description": "Creates a data protection policy and assigns it to the log group. A data protection policy can help safeguard sensitive data that's ingested by the log group by auditing and masking the sensitive log data. When a user who does not have permission to view masked data views a log event that includes masked data, the sensitive data is replaced by asterisks.\n For more information, including a list of types of data that can be audited and masked, see [Protect sensitive log data with masking](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data.html).", - "type": "object" - }, - "KmsKeyId": { - "description": "The Amazon Resource Name (ARN) of the KMS key to use when encrypting log data.\n To associate an KMS key with the log group, specify the ARN of that KMS key here. If you do so, ingested data is encrypted using this key. This association is stored as long as the data encrypted with the KMS key is still within CWL. This enables CWL to decrypt this data whenever it is requested.\n If you attempt to associate a KMS key with the log group but the KMS key doesn't exist or is deactivated, you will receive an ``InvalidParameterException`` error.\n Log group data is always encrypted in CWL. If you omit this key, the encryption does not use KMS. For more information, see [Encrypt log data in using](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)", - "maxLength": 256, - "pattern": "^arn:[a-z0-9-]+:kms:[a-z0-9-]+:\\d{12}:(key|alias)/.+\\Z", - "type": "string" - }, - "LogGroupClass": { - "default": "STANDARD", - "description": "Specifies the log group class for this log group. There are two classes:\n + The ``Standard`` log class supports all CWL features.\n + The ``Infrequent Access`` log class supports a subset of CWL features and incurs lower costs.\n \n For details about the features supported by each class, see [Log classes](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch_Logs_Log_Classes.html)", - "enum": [ - "STANDARD", - "INFREQUENT_ACCESS" - ], - "type": "string" - }, - "LogGroupName": { - "description": "The name of the log group. If you don't specify a name, CFNlong generates a unique ID for the log group.", - "maxLength": 512, - "minLength": 1, - "pattern": "^[.\\-_/#A-Za-z0-9]{1,512}\\Z", - "type": "string" - }, - "RetentionInDays": { - "description": "The number of days to retain the log events in the specified log group. Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, and 3653.\n To set a log group so that its log events do not expire, use [DeleteRetentionPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DeleteRetentionPolicy.html).", - "enum": [ - 1, - 3, - 5, - 7, - 14, - 30, - 60, - 90, - 120, - 150, - 180, - 365, - 400, - 545, - 731, - 1096, - 1827, - 2192, - 2557, - 2922, - 3288, - 3653 - ], - "type": "integer" - }, - "Tags": { - "description": "An array of key-value pairs to apply to the log group.\n For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Logs::LogGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LogGroupName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "The value of this key-value pair.", + "properties": { + "Key": { + "description": "", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value of this key-value pair.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The ``AWS::Logs::LogGroup`` resource specifies a log group. A log group defines common properties for log streams, such as their retention and access control rules. Each log stream must belong to one log group.\n You can create up to 1,000,000 log groups per Region per account. You must use the following guidelines when naming a log group:\n + Log group names must be unique within a Region for an AWS account.\n + Log group names can be between 1 and 512 characters long.\n + Log group names consist of the following characters: a-z, A-Z, 0-9, '_' (underscore), '-' (hyphen), '/' (forward slash), and '.' (period).", + "handlers": { + "create": { + "permissions": [ + "logs:DescribeLogGroups", + "logs:CreateLogGroup", + "logs:PutRetentionPolicy", + "logs:TagResource", + "logs:GetDataProtectionPolicy", + "logs:PutDataProtectionPolicy", + "logs:CreateLogDelivery", + "s3:REST.PUT.OBJECT", + "firehose:TagDeliveryStream", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:PutIndexPolicy", + "logs:DescribeIndexPolicies" + ] + }, + "delete": { + "permissions": [ + "logs:DescribeLogGroups", + "logs:DeleteLogGroup", + "logs:DeleteDataProtectionPolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "LogGroupName": { + "$ref": "resource-schema.json#/properties/LogGroupName" + } + }, + "required": [] + }, + "permissions": [ + "logs:DescribeLogGroups", + "logs:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "logs:DescribeLogGroups", + "logs:ListTagsForResource", + "logs:GetDataProtectionPolicy", + "logs:DescribeIndexPolicies" + ] + }, + "update": { + "permissions": [ + "logs:DescribeLogGroups", + "logs:AssociateKmsKey", + "logs:DisassociateKmsKey", + "logs:PutRetentionPolicy", + "logs:DeleteRetentionPolicy", + "logs:TagResource", + "logs:UntagResource", + "logs:ListTagsForResource", + "logs:GetDataProtectionPolicy", + "logs:PutDataProtectionPolicy", + "logs:CreateLogDelivery", + "s3:REST.PUT.OBJECT", + "firehose:TagDeliveryStream", + "logs:PutIndexPolicy", + "logs:DeleteIndexPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/LogGroupName" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "DataProtectionPolicy": { + "description": "Creates a data protection policy and assigns it to the log group. A data protection policy can help safeguard sensitive data that's ingested by the log group by auditing and masking the sensitive log data. When a user who does not have permission to view masked data views a log event that includes masked data, the sensitive data is replaced by asterisks.\n For more information, including a list of types of data that can be audited and masked, see [Protect sensitive log data with masking](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data.html).", + "type": "object" + }, + "FieldIndexPolicies": { + "description": "Creates or updates a *field index policy* for the specified log group. Only log groups in the Standard log class support field index policies. For more information about log classes, see [Log classes](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch_Logs_Log_Classes.html).\n You can use field index policies to create *field indexes* on fields found in log events in the log group. Creating field indexes lowers the costs for CWL Insights queries that reference those field indexes, because these queries attempt to skip the processing of log events that are known to not match the indexed field. Good fields to index are fields that you often need to query for and fields that have high cardinality of values Common examples of indexes include request ID, session ID, userID, and instance IDs. For more information, see [Create field indexes to improve query performance and reduce costs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatchLogs-Field-Indexing.html).\n Currently, this array supports only one field index policy object.", + "insertionOrder": false, + "items": { + "description": "Index policy for log group in JSON format", + "type": "object" + }, + "type": "array", + "uniqueItems": true + }, + "KmsKeyId": { + "description": "The Amazon Resource Name (ARN) of the KMS key to use when encrypting log data.\n To associate an KMS key with the log group, specify the ARN of that KMS key here. If you do so, ingested data is encrypted using this key. This association is stored as long as the data encrypted with the KMS key is still within CWL. This enables CWL to decrypt this data whenever it is requested.\n If you attempt to associate a KMS key with the log group but the KMS key doesn't exist or is deactivated, you will receive an ``InvalidParameterException`` error.\n Log group data is always encrypted in CWL. If you omit this key, the encryption does not use KMS. For more information, see [Encrypt log data in using](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)", + "maxLength": 256, + "pattern": "^arn:[a-z0-9-]+:kms:[a-z0-9-]+:\\d{12}:(key|alias)/.+\\Z", + "type": "string" + }, + "LogGroupClass": { + "default": "STANDARD", + "description": "Specifies the log group class for this log group. There are two classes:\n + The ``Standard`` log class supports all CWL features.\n + The ``Infrequent Access`` log class supports a subset of CWL features and incurs lower costs.\n \n For details about the features supported by each class, see [Log classes](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch_Logs_Log_Classes.html)", + "enum": [ + "STANDARD", + "INFREQUENT_ACCESS", + "DELIVERY" + ], + "type": "string" + }, + "LogGroupName": { + "description": "The name of the log group. If you don't specify a name, CFNlong generates a unique ID for the log group.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[.\\-_/#A-Za-z0-9]{1,512}\\Z", + "type": "string" + }, + "RetentionInDays": { + "description": "The number of days to retain the log events in the specified log group. Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, and 3653.\n To set a log group so that its log events do not expire, use [DeleteRetentionPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DeleteRetentionPolicy.html).", + "enum": [ + 1, + 3, + 5, + 7, + 14, + 30, + 60, + 90, + 120, + 150, + 180, + 365, + 400, + 545, + 731, + 1096, + 1827, + 2192, + 2557, + 2922, + 3288, + 3653 + ], + "type": "integer" + }, + "Tags": { + "description": "An array of key-value pairs to apply to the log group.\n For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "logs:TagResource", + "logs:UntagResource", + "logs:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Logs::LogGroup" +} diff --git a/src/schema/aws-logs-logstream.json b/src/schema/aws-logs-logstream.json index 665b0148..93e3ac4d 100644 --- a/src/schema/aws-logs-logstream.json +++ b/src/schema/aws-logs-logstream.json @@ -1,63 +1,63 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LogGroupName", - "/properties/LogStreamName" - ], - "description": "Resource Type definition for AWS::Logs::LogStream", - "handlers": { - "create": { - "permissions": [ - "logs:CreateLogStream", - "logs:DescribeLogStreams" - ] - }, - "delete": { - "permissions": [ - "logs:DeleteLogStream" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "LogGroupName": { - "$ref": "resource-schema.json#/properties/LogGroupName" - } - }, - "required": [ - "LogGroupName" - ] - }, - "permissions": [ - "logs:DescribeLogStreams" - ] - }, - "read": { - "permissions": [ - "logs:DescribeLogStreams" - ] - } - }, - "primaryIdentifier": [ - "/properties/LogGroupName", - "/properties/LogStreamName" - ], - "properties": { - "LogGroupName": { - "description": "The name of the log group where the log stream is created.", - "type": "string" - }, - "LogStreamName": { - "description": "The name of the log stream. The name must be unique wihtin the log group.", - "type": "string" - } - }, - "required": [ - "LogGroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Logs::LogStream" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LogGroupName", + "/properties/LogStreamName" + ], + "description": "Resource Type definition for AWS::Logs::LogStream", + "handlers": { + "create": { + "permissions": [ + "logs:CreateLogStream", + "logs:DescribeLogStreams" + ] + }, + "delete": { + "permissions": [ + "logs:DeleteLogStream" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "LogGroupName": { + "$ref": "resource-schema.json#/properties/LogGroupName" + } + }, + "required": [ + "LogGroupName" + ] + }, + "permissions": [ + "logs:DescribeLogStreams" + ] + }, + "read": { + "permissions": [ + "logs:DescribeLogStreams" + ] + } + }, + "primaryIdentifier": [ + "/properties/LogGroupName", + "/properties/LogStreamName" + ], + "properties": { + "LogGroupName": { + "description": "The name of the log group where the log stream is created.", + "type": "string" + }, + "LogStreamName": { + "description": "The name of the log stream. The name must be unique wihtin the log group.", + "type": "string" + } + }, + "required": [ + "LogGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Logs::LogStream" +} diff --git a/src/schema/aws-logs-metricfilter.json b/src/schema/aws-logs-metricfilter.json index b64921ab..59e5a5d5 100644 --- a/src/schema/aws-logs-metricfilter.json +++ b/src/schema/aws-logs-metricfilter.json @@ -1,197 +1,201 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FilterName", - "/properties/LogGroupName" - ], - "definitions": { - "Dimension": { - "additionalProperties": false, - "description": "Specifies the CW metric dimensions to publish with this metric.\n Because dimensions are part of the unique identifier for a metric, whenever a unique dimension name/value pair is extracted from your logs, you are creating a new variation of that metric.\n For more information about publishing dimensions with metrics created by metric filters, see [Publishing dimensions with metrics from values in JSON or space-delimited log events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html#logs-metric-filters-dimensions).\n Metrics extracted from log events are charged as custom metrics. To prevent unexpected high charges, do not specify high-cardinality fields such as ``IPAddress`` or ``requestID`` as dimensions. Each different value found for a dimension is treated as a separate metric and accrues charges as a separate custom metric. \n To help prevent accidental high charges, Amazon disables a metric filter if it generates 1000 different name/value pairs for the dimensions that you have specified within a certain amount of time.\n You can also set up a billing alarm to alert you if your charges are higher than expected. For more information, see [Creating a Billing Alarm to Monitor Your Estimated Charges](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html).", - "properties": { - "Key": { - "description": "The name for the CW metric dimension that the metric filter creates.\n Dimension names must contain only ASCII characters, must include at least one non-whitespace character, and cannot start with a colon (:).", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The log event field that will contain the value for this dimension. This dimension will only be published for a metric if the value is found in the log event. For example, ``$.eventType`` for JSON log events, or ``$server`` for space-delimited log events.", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "MetricTransformation": { - "additionalProperties": false, - "description": "``MetricTransformation`` is a property of the ``AWS::Logs::MetricFilter`` resource that describes how to transform log streams into a CloudWatch metric.", - "properties": { - "DefaultValue": { - "description": "(Optional) The value to emit when a filter pattern does not match a log event. This value can be null.", - "type": "number" - }, - "Dimensions": { - "description": "The fields to use as dimensions for the metric. One metric filter can include as many as three dimensions.\n Metrics extracted from log events are charged as custom metrics. To prevent unexpected high charges, do not specify high-cardinality fields such as ``IPAddress`` or ``requestID`` as dimensions. Each different value found for a dimension is treated as a separate metric and accrues charges as a separate custom metric. \n CloudWatch Logs disables a metric filter if it generates 1000 different name/value pairs for your specified dimensions within a certain amount of time. This helps to prevent accidental high charges.\n You can also set up a billing alarm to alert you if your charges are higher than expected. For more information, see [Creating a Billing Alarm to Monitor Your Estimated Charges](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html).", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Dimension" - }, - "maxItems": 3, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "MetricName": { - "description": "The name of the CloudWatch metric.", - "maxLength": 255, - "minLength": 1, - "pattern": "^((?![:*$])[\\x00-\\x7F]){1,255}", - "type": "string" - }, - "MetricNamespace": { - "$comment": "Namespaces can be up to 256 characters long; valid characters include 0-9A-Za-z.-_/#", - "description": "A custom namespace to contain your metric in CloudWatch. Use namespaces to group together metrics that are similar. For more information, see [Namespaces](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Namespace).", - "maxLength": 256, - "minLength": 1, - "pattern": "^[0-9a-zA-Z\\.\\-_\\/#]{1,256}", - "type": "string" - }, - "MetricValue": { - "description": "The value that is published to the CloudWatch metric. For example, if you're counting the occurrences of a particular term like ``Error``, specify 1 for the metric value. If you're counting the number of bytes transferred, reference the value that is in the log event by using $. followed by the name of the field that you specified in the filter pattern, such as ``$.size``.", - "maxLength": 100, - "minLength": 1, - "pattern": ".{1,100}", - "type": "string" - }, - "Unit": { - "description": "The unit to assign to the metric. If you omit this, the unit is set as ``None``.", - "enum": [ - "Seconds", - "Microseconds", - "Milliseconds", - "Bytes", - "Kilobytes", - "Megabytes", - "Gigabytes", - "Terabytes", - "Bits", - "Kilobits", - "Megabits", - "Gigabits", - "Terabits", - "Percent", - "Count", - "Bytes/Second", - "Kilobytes/Second", - "Megabytes/Second", - "Gigabytes/Second", - "Terabytes/Second", - "Bits/Second", - "Kilobits/Second", - "Megabits/Second", - "Gigabits/Second", - "Terabits/Second", - "Count/Second", - "None" - ], - "type": "string" - } - }, - "required": [ - "MetricName", - "MetricNamespace", - "MetricValue" - ], - "type": "object" - } - }, - "description": "The ``AWS::Logs::MetricFilter`` resource specifies a metric filter that describes how CWL extracts information from logs and transforms it into Amazon CloudWatch metrics. If you have multiple metric filters that are associated with a log group, all the filters are applied to the log streams in that group.\n The maximum number of metric filters that can be associated with a log group is 100.", - "handlers": { - "create": { - "permissions": [ - "logs:PutMetricFilter", - "logs:DescribeMetricFilters" - ] - }, - "delete": { - "permissions": [ - "logs:DeleteMetricFilter" - ] - }, - "list": { - "permissions": [ - "logs:DescribeMetricFilters" - ] - }, - "read": { - "permissions": [ - "logs:DescribeMetricFilters" - ] - }, - "update": { - "permissions": [ - "logs:PutMetricFilter", - "logs:DescribeMetricFilters" - ] - } - }, - "primaryIdentifier": [ - "/properties/LogGroupName", - "/properties/FilterName" - ], - "properties": { - "FilterName": { - "description": "The name of the metric filter.", - "maxLength": 512, - "minLength": 1, - "pattern": "^[^:*]{1,512}", - "type": "string" - }, - "FilterPattern": { - "description": "A filter pattern for extracting metric data out of ingested log events. For more information, see [Filter and Pattern Syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html).", - "maxLength": 1024, - "type": "string" - }, - "LogGroupName": { - "description": "The name of an existing log group that you want to associate with this metric filter.", - "maxLength": 512, - "minLength": 1, - "pattern": "^[.\\-_/#A-Za-z0-9]{1,512}", - "type": "string" - }, - "MetricTransformations": { - "description": "The metric transformations.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MetricTransformation" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - } - }, - "replacementStrategy": "delete_then_create", - "required": [ - "FilterPattern", - "LogGroupName", - "MetricTransformations" - ], - "resourceLink": { - "mappings": { - "LogGroupName": "/LogGroupName", - "MetricName": "/MetricName" - }, - "templateUri": "/cloudwatch/home?region=${awsRegion}#logsV2:log-groups/log-group/${LogGroupName}/edit-metric-filter/${MetricName}" - }, - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Logs::MetricFilter" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FilterName", + "/properties/LogGroupName" + ], + "definitions": { + "Dimension": { + "additionalProperties": false, + "description": "Specifies the CW metric dimensions to publish with this metric.\n Because dimensions are part of the unique identifier for a metric, whenever a unique dimension name/value pair is extracted from your logs, you are creating a new variation of that metric.\n For more information about publishing dimensions with metrics created by metric filters, see [Publishing dimensions with metrics from values in JSON or space-delimited log events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html#logs-metric-filters-dimensions).\n Metrics extracted from log events are charged as custom metrics. To prevent unexpected high charges, do not specify high-cardinality fields such as ``IPAddress`` or ``requestID`` as dimensions. Each different value found for a dimension is treated as a separate metric and accrues charges as a separate custom metric. \n To help prevent accidental high charges, Amazon disables a metric filter if it generates 1000 different name/value pairs for the dimensions that you have specified within a certain amount of time.\n You can also set up a billing alarm to alert you if your charges are higher than expected. For more information, see [Creating a Billing Alarm to Monitor Your Estimated Charges](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html).", + "properties": { + "Key": { + "description": "The name for the CW metric dimension that the metric filter creates.\n Dimension names must contain only ASCII characters, must include at least one non-whitespace character, and cannot start with a colon (:).", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The log event field that will contain the value for this dimension. This dimension will only be published for a metric if the value is found in the log event. For example, ``$.eventType`` for JSON log events, or ``$server`` for space-delimited log events.", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "MetricTransformation": { + "additionalProperties": false, + "description": "``MetricTransformation`` is a property of the ``AWS::Logs::MetricFilter`` resource that describes how to transform log streams into a CloudWatch metric.", + "properties": { + "DefaultValue": { + "description": "(Optional) The value to emit when a filter pattern does not match a log event. This value can be null.", + "type": "number" + }, + "Dimensions": { + "description": "The fields to use as dimensions for the metric. One metric filter can include as many as three dimensions.\n Metrics extracted from log events are charged as custom metrics. To prevent unexpected high charges, do not specify high-cardinality fields such as ``IPAddress`` or ``requestID`` as dimensions. Each different value found for a dimension is treated as a separate metric and accrues charges as a separate custom metric. \n CloudWatch Logs disables a metric filter if it generates 1000 different name/value pairs for your specified dimensions within a certain amount of time. This helps to prevent accidental high charges.\n You can also set up a billing alarm to alert you if your charges are higher than expected. For more information, see [Creating a Billing Alarm to Monitor Your Estimated Charges](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html).", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Dimension" + }, + "maxItems": 3, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "MetricName": { + "description": "The name of the CloudWatch metric.", + "maxLength": 255, + "minLength": 1, + "pattern": "^((?![:*$])[\\x00-\\x7F]){1,255}", + "type": "string" + }, + "MetricNamespace": { + "$comment": "Namespaces can be up to 256 characters long; valid characters include 0-9A-Za-z.-_/#", + "description": "A custom namespace to contain your metric in CloudWatch. Use namespaces to group together metrics that are similar. For more information, see [Namespaces](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Namespace).", + "maxLength": 256, + "minLength": 1, + "pattern": "^[0-9a-zA-Z\\.\\-_\\/#]{1,256}", + "type": "string" + }, + "MetricValue": { + "description": "The value that is published to the CloudWatch metric. For example, if you're counting the occurrences of a particular term like ``Error``, specify 1 for the metric value. If you're counting the number of bytes transferred, reference the value that is in the log event by using $. followed by the name of the field that you specified in the filter pattern, such as ``$.size``.", + "maxLength": 100, + "minLength": 1, + "pattern": ".{1,100}", + "type": "string" + }, + "Unit": { + "description": "The unit to assign to the metric. If you omit this, the unit is set as ``None``.", + "enum": [ + "Seconds", + "Microseconds", + "Milliseconds", + "Bytes", + "Kilobytes", + "Megabytes", + "Gigabytes", + "Terabytes", + "Bits", + "Kilobits", + "Megabits", + "Gigabits", + "Terabits", + "Percent", + "Count", + "Bytes/Second", + "Kilobytes/Second", + "Megabytes/Second", + "Gigabytes/Second", + "Terabytes/Second", + "Bits/Second", + "Kilobits/Second", + "Megabits/Second", + "Gigabits/Second", + "Terabits/Second", + "Count/Second", + "None" + ], + "type": "string" + } + }, + "required": [ + "MetricName", + "MetricNamespace", + "MetricValue" + ], + "type": "object" + } + }, + "description": "The ``AWS::Logs::MetricFilter`` resource specifies a metric filter that describes how CWL extracts information from logs and transforms it into Amazon CloudWatch metrics. If you have multiple metric filters that are associated with a log group, all the filters are applied to the log streams in that group.\n The maximum number of metric filters that can be associated with a log group is 100.", + "handlers": { + "create": { + "permissions": [ + "logs:PutMetricFilter", + "logs:DescribeMetricFilters" + ] + }, + "delete": { + "permissions": [ + "logs:DeleteMetricFilter" + ] + }, + "list": { + "permissions": [ + "logs:DescribeMetricFilters" + ] + }, + "read": { + "permissions": [ + "logs:DescribeMetricFilters" + ] + }, + "update": { + "permissions": [ + "logs:PutMetricFilter", + "logs:DescribeMetricFilters" + ] + } + }, + "primaryIdentifier": [ + "/properties/LogGroupName", + "/properties/FilterName" + ], + "properties": { + "ApplyOnTransformedLogs": { + "description": "This parameter is valid only for log groups that have an active log transformer. For more information about log transformers, see [PutTransformer](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutTransformer.html).\n If this value is ``true``, the metric filter is applied on the transformed version of the log events instead of the original ingested log events.", + "type": "boolean" + }, + "FilterName": { + "description": "The name of the metric filter.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^:*]{1,512}", + "type": "string" + }, + "FilterPattern": { + "description": "A filter pattern for extracting metric data out of ingested log events. For more information, see [Filter and Pattern Syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html).", + "maxLength": 1024, + "type": "string" + }, + "LogGroupName": { + "description": "The name of an existing log group that you want to associate with this metric filter.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[.\\-_/#A-Za-z0-9]{1,512}", + "type": "string" + }, + "MetricTransformations": { + "description": "The metric transformations.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MetricTransformation" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "replacementStrategy": "delete_then_create", + "required": [ + "FilterPattern", + "LogGroupName", + "MetricTransformations" + ], + "resourceLink": { + "mappings": { + "LogGroupName": "/LogGroupName", + "MetricName": "/MetricName" + }, + "templateUri": "/cloudwatch/home?region=${awsRegion}#logsV2:log-groups/log-group/${LogGroupName}/edit-metric-filter/${MetricName}" + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Logs::MetricFilter" +} diff --git a/src/schema/aws-logs-querydefinition.json b/src/schema/aws-logs-querydefinition.json index f90be6a8..6155e5fc 100644 --- a/src/schema/aws-logs-querydefinition.json +++ b/src/schema/aws-logs-querydefinition.json @@ -1,83 +1,93 @@ -{ - "additionalProperties": false, - "definitions": { - "LogGroup": { - "maxLength": 512, - "minLength": 1, - "pattern": "[\\.\\-_/#A-Za-z0-9]+", - "type": "string" - } - }, - "description": "The resource schema for AWSLogs QueryDefinition", - "handlers": { - "create": { - "permissions": [ - "logs:PutQueryDefinition" - ] - }, - "delete": { - "permissions": [ - "logs:DeleteQueryDefinition" - ] - }, - "list": { - "permissions": [ - "logs:DescribeQueryDefinitions" - ] - }, - "read": { - "permissions": [ - "logs:DescribeQueryDefinitions" - ] - }, - "update": { - "permissions": [ - "logs:PutQueryDefinition" - ] - } - }, - "primaryIdentifier": [ - "/properties/QueryDefinitionId" - ], - "properties": { - "LogGroupNames": { - "description": "Optionally define specific log groups as part of your query definition", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LogGroup", - "description": "LogGroup name" - }, - "type": "array" - }, - "Name": { - "description": "A name for the saved query definition", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "QueryDefinitionId": { - "description": "Unique identifier of a query definition", - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "QueryString": { - "description": "The query string to use for this definition", - "maxLength": 10000, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/QueryDefinitionId" - ], - "required": [ - "Name", - "QueryString" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Logs::QueryDefinition" -} +{ + "additionalProperties": false, + "definitions": { + "LogGroup": { + "maxLength": 512, + "minLength": 1, + "pattern": "[\\.\\-_/#A-Za-z0-9]+", + "type": "string" + } + }, + "description": "The resource schema for AWSLogs QueryDefinition", + "handlers": { + "create": { + "permissions": [ + "logs:PutQueryDefinition" + ] + }, + "delete": { + "permissions": [ + "logs:DeleteQueryDefinition" + ] + }, + "list": { + "permissions": [ + "logs:DescribeQueryDefinitions" + ] + }, + "read": { + "permissions": [ + "logs:DescribeQueryDefinitions" + ] + }, + "update": { + "permissions": [ + "logs:PutQueryDefinition" + ] + } + }, + "primaryIdentifier": [ + "/properties/QueryDefinitionId" + ], + "properties": { + "LogGroupNames": { + "description": "Optionally define specific log groups as part of your query definition", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LogGroup", + "description": "LogGroup name" + }, + "type": "array" + }, + "Name": { + "description": "A name for the saved query definition", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "QueryDefinitionId": { + "description": "Unique identifier of a query definition", + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "QueryLanguage": { + "default": "CWLI", + "description": "Query language of the query string. Possible values are CWLI, SQL, PPL, with CWLI being the default.", + "enum": [ + "CWLI", + "SQL", + "PPL" + ], + "type": "string" + }, + "QueryString": { + "description": "The query string to use for this definition", + "maxLength": 10000, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/QueryDefinitionId" + ], + "required": [ + "Name", + "QueryString" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Logs::QueryDefinition" +} diff --git a/src/schema/aws-logs-resourcepolicy.json b/src/schema/aws-logs-resourcepolicy.json index 26f526f9..79fd86a8 100644 --- a/src/schema/aws-logs-resourcepolicy.json +++ b/src/schema/aws-logs-resourcepolicy.json @@ -1,65 +1,65 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyName" - ], - "description": "The resource schema for AWSLogs ResourcePolicy", - "handlers": { - "create": { - "permissions": [ - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies" - ] - }, - "delete": { - "permissions": [ - "logs:DeleteResourcePolicy" - ] - }, - "list": { - "permissions": [ - "logs:DescribeResourcePolicies" - ] - }, - "read": { - "permissions": [ - "logs:DescribeResourcePolicies" - ] - }, - "update": { - "permissions": [ - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DeleteResourcePolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/PolicyName" - ], - "properties": { - "PolicyDocument": { - "description": "The policy document", - "maxLength": 5120, - "minLength": 1, - "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+", - "type": "string" - }, - "PolicyName": { - "description": "A name for resource policy", - "maxLength": 255, - "minLength": 1, - "pattern": "^([^:*\\/]+\\/?)*[^:*\\/]+$", - "type": "string" - } - }, - "required": [ - "PolicyName", - "PolicyDocument" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Logs::ResourcePolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyName" + ], + "description": "The resource schema for AWSLogs ResourcePolicy", + "handlers": { + "create": { + "permissions": [ + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies" + ] + }, + "delete": { + "permissions": [ + "logs:DeleteResourcePolicy" + ] + }, + "list": { + "permissions": [ + "logs:DescribeResourcePolicies" + ] + }, + "read": { + "permissions": [ + "logs:DescribeResourcePolicies" + ] + }, + "update": { + "permissions": [ + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DeleteResourcePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/PolicyName" + ], + "properties": { + "PolicyDocument": { + "description": "The policy document", + "maxLength": 5120, + "minLength": 1, + "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+", + "type": "string" + }, + "PolicyName": { + "description": "A name for resource policy", + "maxLength": 255, + "minLength": 1, + "pattern": "^([^:*\\/]+\\/?)*[^:*\\/]+$", + "type": "string" + } + }, + "required": [ + "PolicyName", + "PolicyDocument" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Logs::ResourcePolicy" +} diff --git a/src/schema/aws-logs-subscriptionfilter.json b/src/schema/aws-logs-subscriptionfilter.json index f20d90b2..552d9842 100644 --- a/src/schema/aws-logs-subscriptionfilter.json +++ b/src/schema/aws-logs-subscriptionfilter.json @@ -1,98 +1,102 @@ -{ - "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-cli/master/src/rpdk/core/data/schema/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FilterName", - "/properties/LogGroupName" - ], - "description": "The ``AWS::Logs::SubscriptionFilter`` resource specifies a subscription filter and associates it with the specified log group. Subscription filters allow you to subscribe to a real-time stream of log events and have them delivered to a specific destination. Currently, the supported destinations are:\n + An Amazon Kinesis data stream belonging to the same account as the subscription filter, for same-account delivery.\n + A logical destination that belongs to a different account, for cross-account delivery.\n + An Amazon Kinesis Firehose delivery stream that belongs to the same account as the subscription filter, for same-account delivery.\n + An LAMlong function that belongs to the same account as the subscription filter, for same-account delivery.\n \n There can be as many as two subscription filters associated with a log group.", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "logs:PutSubscriptionFilter", - "logs:DescribeSubscriptionFilters" - ] - }, - "delete": { - "permissions": [ - "logs:DeleteSubscriptionFilter" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "LogGroupName": { - "$ref": "resource-schema.json#/properties/LogGroupName" - } - }, - "required": [ - "LogGroupName" - ] - }, - "permissions": [ - "logs:DescribeSubscriptionFilters" - ] - }, - "read": { - "permissions": [ - "logs:DescribeSubscriptionFilters" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "logs:PutSubscriptionFilter", - "logs:DescribeSubscriptionFilters" - ] - } - }, - "primaryIdentifier": [ - "/properties/FilterName", - "/properties/LogGroupName" - ], - "properties": { - "DestinationArn": { - "description": "The Amazon Resource Name (ARN) of the destination.", - "type": "string" - }, - "Distribution": { - "description": "The method used to distribute log data to the destination, which can be either random or grouped by log stream.", - "enum": [ - "Random", - "ByLogStream" - ], - "type": "string" - }, - "FilterName": { - "description": "The name of the subscription filter.", - "type": "string" - }, - "FilterPattern": { - "description": "The filtering expressions that restrict what gets delivered to the destination AWS resource. For more information about the filter pattern syntax, see [Filter and Pattern Syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html).", - "type": "string" - }, - "LogGroupName": { - "description": "The log group to associate with the subscription filter. All log events that are uploaded to this log group are filtered and delivered to the specified AWS resource if the filter pattern matches the log events.", - "type": "string" - }, - "RoleArn": { - "description": "The ARN of an IAM role that grants CWL permissions to deliver ingested log events to the destination stream. You don't need to provide the ARN when you are working with a logical destination for cross-account delivery.", - "type": "string" - } - }, - "replacementStrategy": "delete_then_create", - "required": [ - "DestinationArn", - "FilterPattern", - "LogGroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Logs::SubscriptionFilter" -} +{ + "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-cli/master/src/rpdk/core/data/schema/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FilterName", + "/properties/LogGroupName" + ], + "description": "The ``AWS::Logs::SubscriptionFilter`` resource specifies a subscription filter and associates it with the specified log group. Subscription filters allow you to subscribe to a real-time stream of log events and have them delivered to a specific destination. Currently, the supported destinations are:\n + An Amazon Kinesis data stream belonging to the same account as the subscription filter, for same-account delivery.\n + A logical destination that belongs to a different account, for cross-account delivery.\n + An Amazon Kinesis Firehose delivery stream that belongs to the same account as the subscription filter, for same-account delivery.\n + An LAMlong function that belongs to the same account as the subscription filter, for same-account delivery.\n \n There can be as many as two subscription filters associated with a log group.", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "logs:PutSubscriptionFilter", + "logs:DescribeSubscriptionFilters" + ] + }, + "delete": { + "permissions": [ + "logs:DeleteSubscriptionFilter" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "LogGroupName": { + "$ref": "resource-schema.json#/properties/LogGroupName" + } + }, + "required": [ + "LogGroupName" + ] + }, + "permissions": [ + "logs:DescribeSubscriptionFilters" + ] + }, + "read": { + "permissions": [ + "logs:DescribeSubscriptionFilters" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "logs:PutSubscriptionFilter", + "logs:DescribeSubscriptionFilters" + ] + } + }, + "primaryIdentifier": [ + "/properties/FilterName", + "/properties/LogGroupName" + ], + "properties": { + "ApplyOnTransformedLogs": { + "description": "This parameter is valid only for log groups that have an active log transformer. For more information about log transformers, see [PutTransformer](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutTransformer.html).\n If this value is ``true``, the subscription filter is applied on the transformed version of the log events instead of the original ingested log events.", + "type": "boolean" + }, + "DestinationArn": { + "description": "The Amazon Resource Name (ARN) of the destination.", + "type": "string" + }, + "Distribution": { + "description": "The method used to distribute log data to the destination, which can be either random or grouped by log stream.", + "enum": [ + "Random", + "ByLogStream" + ], + "type": "string" + }, + "FilterName": { + "description": "The name of the subscription filter.", + "type": "string" + }, + "FilterPattern": { + "description": "The filtering expressions that restrict what gets delivered to the destination AWS resource. For more information about the filter pattern syntax, see [Filter and Pattern Syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html).", + "type": "string" + }, + "LogGroupName": { + "description": "The log group to associate with the subscription filter. All log events that are uploaded to this log group are filtered and delivered to the specified AWS resource if the filter pattern matches the log events.", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of an IAM role that grants CWL permissions to deliver ingested log events to the destination stream. You don't need to provide the ARN when you are working with a logical destination for cross-account delivery.", + "type": "string" + } + }, + "replacementStrategy": "delete_then_create", + "required": [ + "DestinationArn", + "FilterPattern", + "LogGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Logs::SubscriptionFilter" +} diff --git a/src/schema/aws-logs-transformer.json b/src/schema/aws-logs-transformer.json new file mode 100644 index 00000000..72ee6493 --- /dev/null +++ b/src/schema/aws-logs-transformer.json @@ -0,0 +1,658 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LogGroupIdentifier" + ], + "definitions": { + "AddKeyEntry": { + "additionalProperties": false, + "properties": { + "Key": { + "$ref": "#/definitions/NonEmptyAndMaxLengthString" + }, + "OverwriteIfExists": { + "type": "boolean" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Column": { + "$ref": "#/definitions/NonEmptyAndMaxLengthString" + }, + "CopyValueEntry": { + "additionalProperties": false, + "properties": { + "OverwriteIfExists": { + "type": "boolean" + }, + "Source": { + "$ref": "#/definitions/NonEmptyString" + }, + "Target": { + "$ref": "#/definitions/NonEmptyAndMaxLengthString" + } + }, + "required": [ + "Source", + "Target" + ], + "type": "object" + }, + "MatchPattern": { + "$ref": "#/definitions/NonEmptyString" + }, + "MaxLengthString": { + "maxLength": 128, + "type": "string" + }, + "MoveKeyEntry": { + "additionalProperties": false, + "properties": { + "OverwriteIfExists": { + "type": "boolean" + }, + "Source": { + "$ref": "#/definitions/NonEmptyString" + }, + "Target": { + "$ref": "#/definitions/NonEmptyString" + } + }, + "required": [ + "Source", + "Target" + ], + "type": "object" + }, + "NonEmptyAndMaxLengthString": { + "maxLength": 128, + "pattern": "^.*[a-zA-Z0-9]+.*$", + "type": "string" + }, + "NonEmptyString": { + "pattern": "^.*[a-zA-Z0-9]+.*$", + "type": "string" + }, + "ParseCloudfront": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/NonEmptyString" + } + }, + "type": "object" + }, + "ParsePostgres": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/NonEmptyString" + } + }, + "type": "object" + }, + "ParseRoute53": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/NonEmptyString" + } + }, + "type": "object" + }, + "ParseVPC": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/NonEmptyString" + } + }, + "type": "object" + }, + "ParseWAF": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/NonEmptyString" + } + }, + "type": "object" + }, + "Processor": { + "additionalProperties": false, + "description": "Individual processor configuration", + "maxProperties": 1, + "minProperties": 1, + "properties": { + "AddKeys": { + "additionalProperties": false, + "properties": { + "Entries": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AddKeyEntry" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Entries" + ], + "type": "object" + }, + "CopyValue": { + "additionalProperties": false, + "properties": { + "Entries": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CopyValueEntry" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Entries" + ], + "type": "object" + }, + "Csv": { + "additionalProperties": false, + "properties": { + "Columns": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Column" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "Delimiter": { + "maxLength": 1, + "type": "string" + }, + "QuoteCharacter": { + "maxLength": 1, + "type": "string" + }, + "Source": { + "type": "string" + } + }, + "type": "object" + }, + "DateTimeConverter": { + "additionalProperties": false, + "properties": { + "Locale": { + "type": "string" + }, + "MatchPatterns": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MatchPattern" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Source": { + "$ref": "#/definitions/NonEmptyString" + }, + "SourceTimezone": { + "type": "string" + }, + "Target": { + "$ref": "#/definitions/NonEmptyAndMaxLengthString" + }, + "TargetFormat": { + "type": "string" + }, + "TargetTimezone": { + "type": "string" + } + }, + "required": [ + "Source", + "Target", + "MatchPatterns" + ], + "type": "object" + }, + "DeleteKeys": { + "additionalProperties": false, + "properties": { + "WithKeys": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/WithKey" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "WithKeys" + ], + "type": "object" + }, + "Grok": { + "additionalProperties": false, + "properties": { + "Match": { + "maxLength": 128, + "type": "string" + }, + "Source": { + "$ref": "#/definitions/NonEmptyString" + } + }, + "required": [ + "Match" + ], + "type": "object" + }, + "ListToMap": { + "additionalProperties": false, + "properties": { + "Flatten": { + "type": "boolean" + }, + "FlattenedElement": { + "enum": [ + "first", + "last" + ], + "type": "string" + }, + "Key": { + "$ref": "#/definitions/NonEmptyString" + }, + "Source": { + "$ref": "#/definitions/NonEmptyString" + }, + "Target": { + "$ref": "#/definitions/NonEmptyAndMaxLengthString" + }, + "ValueKey": { + "$ref": "#/definitions/NonEmptyString" + } + }, + "required": [ + "Source", + "Key" + ], + "type": "object" + }, + "LowerCaseString": { + "additionalProperties": false, + "properties": { + "WithKeys": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/WithKey" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "WithKeys" + ], + "type": "object" + }, + "MoveKeys": { + "additionalProperties": false, + "properties": { + "Entries": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MoveKeyEntry" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Entries" + ], + "type": "object" + }, + "ParseCloudfront": { + "$ref": "#/definitions/ParseCloudfront" + }, + "ParseJSON": { + "additionalProperties": false, + "properties": { + "Destination": { + "$ref": "#/definitions/NonEmptyAndMaxLengthString" + }, + "Source": { + "type": "string" + } + }, + "type": "object" + }, + "ParseKeyValue": { + "additionalProperties": false, + "properties": { + "Destination": { + "$ref": "#/definitions/NonEmptyString" + }, + "FieldDelimiter": { + "type": "string" + }, + "KeyPrefix": { + "$ref": "#/definitions/NonEmptyString" + }, + "KeyValueDelimiter": { + "type": "string" + }, + "NonMatchValue": { + "$ref": "#/definitions/NonEmptyString" + }, + "OverwriteIfExists": { + "type": "boolean" + }, + "Source": { + "$ref": "#/definitions/NonEmptyString" + } + }, + "type": "object" + }, + "ParsePostgres": { + "$ref": "#/definitions/ParsePostgres" + }, + "ParseRoute53": { + "$ref": "#/definitions/ParseRoute53" + }, + "ParseVPC": { + "$ref": "#/definitions/ParseVPC" + }, + "ParseWAF": { + "$ref": "#/definitions/ParseWAF" + }, + "RenameKeys": { + "additionalProperties": false, + "properties": { + "Entries": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RenameKeyEntry" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Entries" + ], + "type": "object" + }, + "SplitString": { + "additionalProperties": false, + "properties": { + "Entries": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SplitStringEntry" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Entries" + ], + "type": "object" + }, + "SubstituteString": { + "additionalProperties": false, + "properties": { + "Entries": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubstituteStringEntry" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Entries" + ], + "type": "object" + }, + "TrimString": { + "additionalProperties": false, + "properties": { + "WithKeys": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/WithKey" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "WithKeys" + ], + "type": "object" + }, + "TypeConverter": { + "additionalProperties": false, + "properties": { + "Entries": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TypeConverterEntry" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Entries" + ], + "type": "object" + }, + "UpperCaseString": { + "additionalProperties": false, + "properties": { + "WithKeys": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/WithKey" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "WithKeys" + ], + "type": "object" + } + }, + "type": "object" + }, + "RenameKeyEntry": { + "additionalProperties": false, + "properties": { + "Key": { + "$ref": "#/definitions/NonEmptyString" + }, + "OverwriteIfExists": { + "type": "boolean" + }, + "RenameTo": { + "$ref": "#/definitions/NonEmptyString" + } + }, + "required": [ + "Key", + "RenameTo" + ], + "type": "object" + }, + "SplitStringEntry": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 1, + "type": "string" + }, + "Source": { + "$ref": "#/definitions/NonEmptyString" + } + }, + "required": [ + "Source", + "Delimiter" + ], + "type": "object" + }, + "SubstituteStringEntry": { + "additionalProperties": false, + "properties": { + "From": { + "$ref": "#/definitions/NonEmptyAndMaxLengthString" + }, + "Source": { + "$ref": "#/definitions/NonEmptyString" + }, + "To": { + "$ref": "#/definitions/NonEmptyAndMaxLengthString" + } + }, + "required": [ + "Source", + "From", + "To" + ], + "type": "object" + }, + "TypeConverterEntry": { + "additionalProperties": false, + "properties": { + "Key": { + "$ref": "#/definitions/NonEmptyString" + }, + "Type": { + "enum": [ + "boolean", + "integer", + "double", + "string" + ], + "type": "string" + } + }, + "required": [ + "Key", + "Type" + ], + "type": "object" + }, + "WithKey": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "description": "Specifies a transformer on the log group to transform logs into consistent structured and information rich format.", + "handlers": { + "create": { + "permissions": [ + "logs:PutTransformer", + "logs:GetTransformer" + ] + }, + "delete": { + "permissions": [ + "logs:DeleteTransformer" + ] + }, + "list": { + "permissions": [ + "logs:DescribeLogGroups", + "logs:GetTransformer" + ] + }, + "read": { + "permissions": [ + "logs:GetTransformer" + ] + }, + "update": { + "permissions": [ + "logs:GetTransformer", + "logs:PutTransformer" + ] + } + }, + "primaryIdentifier": [ + "/properties/LogGroupIdentifier" + ], + "properties": { + "LogGroupIdentifier": { + "description": "Existing log group that you want to associate with this transformer.", + "maxLength": 2048, + "minLength": 1, + "pattern": "[\\w#+=/:,.@-]*", + "type": "string" + }, + "TransformerConfig": { + "description": "List of processors in a transformer", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Processor" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "LogGroupIdentifier", + "TransformerConfig" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Logs::Transformer" +} diff --git a/src/schema/aws-lookoutequipment-inferencescheduler.json b/src/schema/aws-lookoutequipment-inferencescheduler.json index 77add62a..8c63aba0 100644 --- a/src/schema/aws-lookoutequipment-inferencescheduler.json +++ b/src/schema/aws-lookoutequipment-inferencescheduler.json @@ -1,253 +1,253 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InferenceSchedulerName", - "/properties/ModelName", - "/properties/ServerSideKmsKeyId" - ], - "definitions": { - "Bucket": { - "maxLength": 63, - "minLength": 3, - "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", - "type": "string" - }, - "InputNameConfiguration": { - "additionalProperties": false, - "description": "Specifies configuration information for the input data for the inference, including timestamp format and delimiter.", - "properties": { - "ComponentTimestampDelimiter": { - "description": "Indicates the delimiter character used between items in the data.", - "maxLength": 1, - "minLength": 0, - "pattern": "^(\\-|\\_|\\s)?$", - "type": "string" - }, - "TimestampFormat": { - "description": "The format of the timestamp, whether Epoch time, or standard, with or without hyphens (-).", - "pattern": "^EPOCH|yyyy-MM-dd-HH-mm-ss|yyyyMMddHHmmss$", - "type": "string" - } - }, - "type": "object" - }, - "Prefix": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "S3InputConfiguration": { - "additionalProperties": false, - "description": "Specifies configuration information for the input data for the inference, including input data S3 location.", - "properties": { - "Bucket": { - "$ref": "#/definitions/Bucket" - }, - "Prefix": { - "$ref": "#/definitions/Prefix" - } - }, - "required": [ - "Bucket" - ], - "type": "object" - }, - "S3OutputConfiguration": { - "additionalProperties": false, - "description": "Specifies configuration information for the output results from the inference, including output S3 location.", - "properties": { - "Bucket": { - "$ref": "#/definitions/Bucket" - }, - "Prefix": { - "$ref": "#/definitions/Prefix" - } - }, - "required": [ - "Bucket" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A tag is a key-value pair that can be added to a resource as metadata.", - "properties": { - "Key": { - "description": "The key for the specified tag.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the specified tag.", - "maxLength": 256, - "minLength": 0, - "pattern": "[\\s\\w+-=\\.:/@]*", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for LookoutEquipment InferenceScheduler.", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "lookoutequipment:CreateInferenceScheduler", - "lookoutequipment:DescribeInferenceScheduler" - ] - }, - "delete": { - "permissions": [ - "lookoutequipment:DeleteInferenceScheduler", - "lookoutequipment:StopInferenceScheduler", - "lookoutequipment:DescribeInferenceScheduler" - ] - }, - "list": { - "permissions": [ - "lookoutequipment:ListInferenceSchedulers" - ] - }, - "read": { - "permissions": [ - "lookoutequipment:DescribeInferenceScheduler" - ] - }, - "update": { - "permissions": [ - "lookoutequipment:UpdateInferenceScheduler", - "lookoutequipment:DescribeInferenceScheduler", - "lookoutequipment:StopInferenceScheduler", - "lookoutequipment:StartInferenceScheduler" - ] - } - }, - "primaryIdentifier": [ - "/properties/InferenceSchedulerName" - ], - "properties": { - "DataDelayOffsetInMinutes": { - "description": "A period of time (in minutes) by which inference on the data is delayed after the data starts.", - "maximum": 60, - "minimum": 0, - "type": "integer" - }, - "DataInputConfiguration": { - "additionalProperties": false, - "description": "Specifies configuration information for the input data for the inference scheduler, including delimiter, format, and dataset location.", - "properties": { - "InferenceInputNameConfiguration": { - "$ref": "#/definitions/InputNameConfiguration" - }, - "InputTimeZoneOffset": { - "description": "Indicates the difference between your time zone and Greenwich Mean Time (GMT).", - "pattern": "^(\\+|\\-)[0-9]{2}\\:[0-9]{2}$", - "type": "string" - }, - "S3InputConfiguration": { - "$ref": "#/definitions/S3InputConfiguration" - } - }, - "required": [ - "S3InputConfiguration" - ], - "type": "object" - }, - "DataOutputConfiguration": { - "additionalProperties": false, - "description": "Specifies configuration information for the output results for the inference scheduler, including the S3 location for the output.", - "properties": { - "KmsKeyId": { - "description": "The ID number for the AWS KMS key used to encrypt the inference output.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,2048}$", - "type": "string" - }, - "S3OutputConfiguration": { - "$ref": "#/definitions/S3OutputConfiguration" - } - }, - "required": [ - "S3OutputConfiguration" - ], - "type": "object" - }, - "DataUploadFrequency": { - "description": "How often data is uploaded to the source S3 bucket for the input data.", - "enum": [ - "PT5M", - "PT10M", - "PT15M", - "PT30M", - "PT1H" - ], - "type": "string" - }, - "InferenceSchedulerArn": { - "description": "The Amazon Resource Name (ARN) of the inference scheduler being created.", - "maxLength": 200, - "minLength": 1, - "pattern": "arn:aws(-[^:]+)?:lookoutequipment:[a-zA-Z0-9\\-]*:[0-9]{12}:inference-scheduler\\/.+", - "type": "string" - }, - "InferenceSchedulerName": { - "description": "The name of the inference scheduler being created.", - "maxLength": 200, - "minLength": 1, - "pattern": "^[0-9a-zA-Z_-]{1,200}$", - "type": "string" - }, - "ModelName": { - "description": "The name of the previously trained ML model being used to create the inference scheduler.", - "maxLength": 200, - "minLength": 1, - "pattern": "^[0-9a-zA-Z_-]{1,200}$", - "type": "string" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) of a role with permission to access the data source being used for the inference.", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:aws(-[^:]+)?:iam::[0-9]{12}:role/.+", - "type": "string" - }, - "ServerSideKmsKeyId": { - "description": "Provides the identifier of the AWS KMS customer master key (CMK) used to encrypt inference scheduler data by Amazon Lookout for Equipment.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,2048}$", - "type": "string" - }, - "Tags": { - "description": "Any tags associated with the inference scheduler.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/InferenceSchedulerArn" - ], - "required": [ - "DataInputConfiguration", - "DataOutputConfiguration", - "DataUploadFrequency", - "ModelName", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "taggable": true, - "typeName": "AWS::LookoutEquipment::InferenceScheduler" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InferenceSchedulerName", + "/properties/ModelName", + "/properties/ServerSideKmsKeyId" + ], + "definitions": { + "Bucket": { + "maxLength": 63, + "minLength": 3, + "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", + "type": "string" + }, + "InputNameConfiguration": { + "additionalProperties": false, + "description": "Specifies configuration information for the input data for the inference, including timestamp format and delimiter.", + "properties": { + "ComponentTimestampDelimiter": { + "description": "Indicates the delimiter character used between items in the data.", + "maxLength": 1, + "minLength": 0, + "pattern": "^(\\-|\\_|\\s)?$", + "type": "string" + }, + "TimestampFormat": { + "description": "The format of the timestamp, whether Epoch time, or standard, with or without hyphens (-).", + "pattern": "^EPOCH|yyyy-MM-dd-HH-mm-ss|yyyyMMddHHmmss$", + "type": "string" + } + }, + "type": "object" + }, + "Prefix": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "S3InputConfiguration": { + "additionalProperties": false, + "description": "Specifies configuration information for the input data for the inference, including input data S3 location.", + "properties": { + "Bucket": { + "$ref": "#/definitions/Bucket" + }, + "Prefix": { + "$ref": "#/definitions/Prefix" + } + }, + "required": [ + "Bucket" + ], + "type": "object" + }, + "S3OutputConfiguration": { + "additionalProperties": false, + "description": "Specifies configuration information for the output results from the inference, including output S3 location.", + "properties": { + "Bucket": { + "$ref": "#/definitions/Bucket" + }, + "Prefix": { + "$ref": "#/definitions/Prefix" + } + }, + "required": [ + "Bucket" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A tag is a key-value pair that can be added to a resource as metadata.", + "properties": { + "Key": { + "description": "The key for the specified tag.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the specified tag.", + "maxLength": 256, + "minLength": 0, + "pattern": "[\\s\\w+-=\\.:/@]*", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for LookoutEquipment InferenceScheduler.", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "lookoutequipment:CreateInferenceScheduler", + "lookoutequipment:DescribeInferenceScheduler" + ] + }, + "delete": { + "permissions": [ + "lookoutequipment:DeleteInferenceScheduler", + "lookoutequipment:StopInferenceScheduler", + "lookoutequipment:DescribeInferenceScheduler" + ] + }, + "list": { + "permissions": [ + "lookoutequipment:ListInferenceSchedulers" + ] + }, + "read": { + "permissions": [ + "lookoutequipment:DescribeInferenceScheduler" + ] + }, + "update": { + "permissions": [ + "lookoutequipment:UpdateInferenceScheduler", + "lookoutequipment:DescribeInferenceScheduler", + "lookoutequipment:StopInferenceScheduler", + "lookoutequipment:StartInferenceScheduler" + ] + } + }, + "primaryIdentifier": [ + "/properties/InferenceSchedulerName" + ], + "properties": { + "DataDelayOffsetInMinutes": { + "description": "A period of time (in minutes) by which inference on the data is delayed after the data starts.", + "maximum": 60, + "minimum": 0, + "type": "integer" + }, + "DataInputConfiguration": { + "additionalProperties": false, + "description": "Specifies configuration information for the input data for the inference scheduler, including delimiter, format, and dataset location.", + "properties": { + "InferenceInputNameConfiguration": { + "$ref": "#/definitions/InputNameConfiguration" + }, + "InputTimeZoneOffset": { + "description": "Indicates the difference between your time zone and Greenwich Mean Time (GMT).", + "pattern": "^(\\+|\\-)[0-9]{2}\\:[0-9]{2}$", + "type": "string" + }, + "S3InputConfiguration": { + "$ref": "#/definitions/S3InputConfiguration" + } + }, + "required": [ + "S3InputConfiguration" + ], + "type": "object" + }, + "DataOutputConfiguration": { + "additionalProperties": false, + "description": "Specifies configuration information for the output results for the inference scheduler, including the S3 location for the output.", + "properties": { + "KmsKeyId": { + "description": "The ID number for the AWS KMS key used to encrypt the inference output.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,2048}$", + "type": "string" + }, + "S3OutputConfiguration": { + "$ref": "#/definitions/S3OutputConfiguration" + } + }, + "required": [ + "S3OutputConfiguration" + ], + "type": "object" + }, + "DataUploadFrequency": { + "description": "How often data is uploaded to the source S3 bucket for the input data.", + "enum": [ + "PT5M", + "PT10M", + "PT15M", + "PT30M", + "PT1H" + ], + "type": "string" + }, + "InferenceSchedulerArn": { + "description": "The Amazon Resource Name (ARN) of the inference scheduler being created.", + "maxLength": 200, + "minLength": 1, + "pattern": "arn:aws(-[^:]+)?:lookoutequipment:[a-zA-Z0-9\\-]*:[0-9]{12}:inference-scheduler\\/.+", + "type": "string" + }, + "InferenceSchedulerName": { + "description": "The name of the inference scheduler being created.", + "maxLength": 200, + "minLength": 1, + "pattern": "^[0-9a-zA-Z_-]{1,200}$", + "type": "string" + }, + "ModelName": { + "description": "The name of the previously trained ML model being used to create the inference scheduler.", + "maxLength": 200, + "minLength": 1, + "pattern": "^[0-9a-zA-Z_-]{1,200}$", + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of a role with permission to access the data source being used for the inference.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:aws(-[^:]+)?:iam::[0-9]{12}:role/.+", + "type": "string" + }, + "ServerSideKmsKeyId": { + "description": "Provides the identifier of the AWS KMS customer master key (CMK) used to encrypt inference scheduler data by Amazon Lookout for Equipment.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,2048}$", + "type": "string" + }, + "Tags": { + "description": "Any tags associated with the inference scheduler.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/InferenceSchedulerArn" + ], + "required": [ + "DataInputConfiguration", + "DataOutputConfiguration", + "DataUploadFrequency", + "ModelName", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "taggable": true, + "typeName": "AWS::LookoutEquipment::InferenceScheduler" +} diff --git a/src/schema/aws-lookoutmetrics-alert.json b/src/schema/aws-lookoutmetrics-alert.json index 00f426a2..d23e0d79 100644 --- a/src/schema/aws-lookoutmetrics-alert.json +++ b/src/schema/aws-lookoutmetrics-alert.json @@ -1,139 +1,139 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AlertName", - "/properties/AlertDescription", - "/properties/AnomalyDetectorArn", - "/properties/AlertSensitivityThreshold", - "/properties/Action" - ], - "definitions": { - "Action": { - "additionalProperties": false, - "properties": { - "LambdaConfiguration": { - "$ref": "#/definitions/LambdaConfiguration" - }, - "SNSConfiguration": { - "$ref": "#/definitions/SNSConfiguration" - } - }, - "type": "object" - }, - "Arn": { - "maxLength": 256, - "pattern": "arn:([a-z\\d-]+):.*:.*:.*:.+", - "type": "string" - }, - "LambdaConfiguration": { - "additionalProperties": false, - "description": "Configuration options for a Lambda alert action.", - "properties": { - "LambdaArn": { - "$ref": "#/definitions/Arn", - "description": "ARN of a Lambda to send alert notifications to." - }, - "RoleArn": { - "$ref": "#/definitions/Arn", - "description": "ARN of an IAM role that LookoutMetrics should assume to access the Lambda function." - } - }, - "required": [ - "RoleArn", - "LambdaArn" - ], - "type": "object" - }, - "SNSConfiguration": { - "additionalProperties": false, - "description": "Configuration options for an SNS alert action.", - "properties": { - "RoleArn": { - "$ref": "#/definitions/Arn", - "description": "ARN of an IAM role that LookoutMetrics should assume to access the SNS topic." - }, - "SnsTopicArn": { - "$ref": "#/definitions/Arn", - "description": "ARN of an SNS topic to send alert notifications to." - } - }, - "required": [ - "RoleArn", - "SnsTopicArn" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::LookoutMetrics::Alert", - "handlers": { - "create": { - "permissions": [ - "lookoutmetrics:CreateAlert", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "lookoutmetrics:DeleteAlert" - ] - }, - "list": { - "permissions": [ - "lookoutmetrics:ListAlerts" - ] - }, - "read": { - "permissions": [ - "lookoutmetrics:DescribeAlert" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Action": { - "$ref": "#/definitions/Action", - "description": "The action to be taken by the alert when an anomaly is detected." - }, - "AlertDescription": { - "description": "A description for the alert.", - "maxLength": 256, - "pattern": ".*\\S.*", - "type": "string" - }, - "AlertName": { - "description": "The name of the alert. If not provided, a name is generated automatically.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", - "type": "string" - }, - "AlertSensitivityThreshold": { - "description": "A number between 0 and 100 (inclusive) that tunes the sensitivity of the alert.", - "maximum": 100, - "minimum": 0, - "type": "integer" - }, - "AnomalyDetectorArn": { - "description": "The Amazon resource name (ARN) of the Anomaly Detector to alert.", - "maxLength": 256, - "pattern": "arn:([a-z\\d-]+):.*:.*:.*:.+", - "type": "string" - }, - "Arn": { - "$ref": "#/definitions/Arn", - "description": "ARN assigned to the alert." - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "AnomalyDetectorArn", - "AlertSensitivityThreshold", - "Action" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lookout-for-metrics.git", - "typeName": "AWS::LookoutMetrics::Alert" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AlertName", + "/properties/AlertDescription", + "/properties/AnomalyDetectorArn", + "/properties/AlertSensitivityThreshold", + "/properties/Action" + ], + "definitions": { + "Action": { + "additionalProperties": false, + "properties": { + "LambdaConfiguration": { + "$ref": "#/definitions/LambdaConfiguration" + }, + "SNSConfiguration": { + "$ref": "#/definitions/SNSConfiguration" + } + }, + "type": "object" + }, + "Arn": { + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):.*:.*:.*:.+", + "type": "string" + }, + "LambdaConfiguration": { + "additionalProperties": false, + "description": "Configuration options for a Lambda alert action.", + "properties": { + "LambdaArn": { + "$ref": "#/definitions/Arn", + "description": "ARN of a Lambda to send alert notifications to." + }, + "RoleArn": { + "$ref": "#/definitions/Arn", + "description": "ARN of an IAM role that LookoutMetrics should assume to access the Lambda function." + } + }, + "required": [ + "RoleArn", + "LambdaArn" + ], + "type": "object" + }, + "SNSConfiguration": { + "additionalProperties": false, + "description": "Configuration options for an SNS alert action.", + "properties": { + "RoleArn": { + "$ref": "#/definitions/Arn", + "description": "ARN of an IAM role that LookoutMetrics should assume to access the SNS topic." + }, + "SnsTopicArn": { + "$ref": "#/definitions/Arn", + "description": "ARN of an SNS topic to send alert notifications to." + } + }, + "required": [ + "RoleArn", + "SnsTopicArn" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::LookoutMetrics::Alert", + "handlers": { + "create": { + "permissions": [ + "lookoutmetrics:CreateAlert", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "lookoutmetrics:DeleteAlert" + ] + }, + "list": { + "permissions": [ + "lookoutmetrics:ListAlerts" + ] + }, + "read": { + "permissions": [ + "lookoutmetrics:DescribeAlert" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Action": { + "$ref": "#/definitions/Action", + "description": "The action to be taken by the alert when an anomaly is detected." + }, + "AlertDescription": { + "description": "A description for the alert.", + "maxLength": 256, + "pattern": ".*\\S.*", + "type": "string" + }, + "AlertName": { + "description": "The name of the alert. If not provided, a name is generated automatically.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", + "type": "string" + }, + "AlertSensitivityThreshold": { + "description": "A number between 0 and 100 (inclusive) that tunes the sensitivity of the alert.", + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "AnomalyDetectorArn": { + "description": "The Amazon resource name (ARN) of the Anomaly Detector to alert.", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):.*:.*:.*:.+", + "type": "string" + }, + "Arn": { + "$ref": "#/definitions/Arn", + "description": "ARN assigned to the alert." + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "AnomalyDetectorArn", + "AlertSensitivityThreshold", + "Action" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lookout-for-metrics.git", + "typeName": "AWS::LookoutMetrics::Alert" +} diff --git a/src/schema/aws-lookoutmetrics-anomalydetector.json b/src/schema/aws-lookoutmetrics-anomalydetector.json index ef0edc91..9cb44625 100644 --- a/src/schema/aws-lookoutmetrics-anomalydetector.json +++ b/src/schema/aws-lookoutmetrics-anomalydetector.json @@ -1,547 +1,547 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AnomalyDetectorName", - "/properties/MetricSource" - ], - "definitions": { - "AnomalyDetectorConfig": { - "additionalProperties": false, - "properties": { - "AnomalyDetectorFrequency": { - "$ref": "#/definitions/AnomalyDetectorFrequency", - "description": "Frequency of anomaly detection" - } - }, - "required": [ - "AnomalyDetectorFrequency" - ], - "type": "object" - }, - "AnomalyDetectorFrequency": { - "description": "Frequency of anomaly detection", - "enum": [ - "PT5M", - "PT10M", - "PT1H", - "P1D" - ], - "type": "string" - }, - "AppFlowConfig": { - "additionalProperties": false, - "properties": { - "FlowName": { - "maxLength": 256, - "pattern": "[a-zA-Z0-9][\\w!@#.-]+", - "type": "string" - }, - "RoleArn": { - "$ref": "#/definitions/Arn" - } - }, - "required": [ - "RoleArn", - "FlowName" - ], - "type": "object" - }, - "Arn": { - "maxLength": 256, - "pattern": "arn:([a-z\\d-]+):.*:.*:.*:.+", - "type": "string" - }, - "Charset": { - "maxLength": 63, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", - "type": "string" - }, - "CloudwatchConfig": { - "additionalProperties": false, - "properties": { - "RoleArn": { - "$ref": "#/definitions/Arn" - } - }, - "required": [ - "RoleArn" - ], - "type": "object" - }, - "ColumnName": { - "description": "Name of a column in the data.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", - "type": "string" - }, - "CsvFormatDescriptor": { - "additionalProperties": false, - "properties": { - "Charset": { - "$ref": "#/definitions/Charset" - }, - "ContainsHeader": { - "type": "boolean" - }, - "Delimiter": { - "maxLength": 1, - "pattern": "[^\\r\\n]", - "type": "string" - }, - "FileCompression": { - "enum": [ - "NONE", - "GZIP" - ], - "type": "string" - }, - "HeaderList": { - "items": { - "$ref": "#/definitions/ColumnName" - }, - "type": "array" - }, - "QuoteSymbol": { - "maxLength": 1, - "pattern": "[^\\r\\n]|^$", - "type": "string" - } - }, - "type": "object" - }, - "DatabaseHost": { - "maxLength": 253, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "DatabasePort": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "FileFormatDescriptor": { - "additionalProperties": false, - "properties": { - "CsvFormatDescriptor": { - "$ref": "#/definitions/CsvFormatDescriptor" - }, - "JsonFormatDescriptor": { - "$ref": "#/definitions/JsonFormatDescriptor" - } - }, - "type": "object" - }, - "JsonFormatDescriptor": { - "additionalProperties": false, - "properties": { - "Charset": { - "$ref": "#/definitions/Charset" - }, - "FileCompression": { - "enum": [ - "NONE", - "GZIP" - ], - "type": "string" - } - }, - "type": "object" - }, - "Metric": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "description": "Operator used to aggregate metric values", - "enum": [ - "AVG", - "SUM" - ], - "type": "string" - }, - "MetricName": { - "$ref": "#/definitions/ColumnName" - }, - "Namespace": { - "maxLength": 255, - "minLength": 1, - "pattern": "[^:].*", - "type": "string" - } - }, - "required": [ - "MetricName", - "AggregationFunction" - ], - "type": "object" - }, - "MetricSet": { - "additionalProperties": false, - "properties": { - "DimensionList": { - "description": "Dimensions for this MetricSet.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ColumnName" - }, - "minItems": 0, - "type": "array" - }, - "MetricList": { - "description": "Metrics captured by this MetricSet.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Metric" - }, - "minItems": 1, - "type": "array" - }, - "MetricSetDescription": { - "description": "A description for the MetricSet.", - "maxLength": 256, - "pattern": ".*\\S.*", - "type": "string" - }, - "MetricSetFrequency": { - "description": "A frequency period to aggregate the data", - "enum": [ - "PT5M", - "PT10M", - "PT1H", - "P1D" - ], - "type": "string" - }, - "MetricSetName": { - "description": "The name of the MetricSet.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", - "type": "string" - }, - "MetricSource": { - "$ref": "#/definitions/MetricSource" - }, - "Offset": { - "description": "Offset, in seconds, between the frequency interval and the time at which the metrics are available.", - "maximum": 432000, - "minimum": 0, - "type": "integer" - }, - "TimestampColumn": { - "$ref": "#/definitions/TimestampColumn" - }, - "Timezone": { - "maxLength": 60, - "pattern": ".*\\S.*", - "type": "string" - } - }, - "required": [ - "MetricSetName", - "MetricList", - "MetricSource" - ], - "type": "object" - }, - "MetricSource": { - "additionalProperties": false, - "properties": { - "AppFlowConfig": { - "$ref": "#/definitions/AppFlowConfig" - }, - "CloudwatchConfig": { - "$ref": "#/definitions/CloudwatchConfig" - }, - "RDSSourceConfig": { - "$ref": "#/definitions/RDSSourceConfig" - }, - "RedshiftSourceConfig": { - "$ref": "#/definitions/RedshiftSourceConfig" - }, - "S3SourceConfig": { - "$ref": "#/definitions/S3SourceConfig" - } - }, - "type": "object" - }, - "RDSSourceConfig": { - "additionalProperties": false, - "properties": { - "DBInstanceIdentifier": { - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z](?!.*--)(?!.*-$)[0-9a-zA-Z\\-]*$", - "type": "string" - }, - "DatabaseHost": { - "$ref": "#/definitions/DatabaseHost" - }, - "DatabaseName": { - "maxLength": 64, - "minLength": 1, - "pattern": "[a-zA-Z0-9_]+", - "type": "string" - }, - "DatabasePort": { - "$ref": "#/definitions/DatabasePort" - }, - "RoleArn": { - "$ref": "#/definitions/Arn" - }, - "SecretManagerArn": { - "$ref": "#/definitions/SecretManagerArn" - }, - "TableName": { - "$ref": "#/definitions/TableName" - }, - "VpcConfiguration": { - "$ref": "#/definitions/VpcConfiguration" - } - }, - "required": [ - "DBInstanceIdentifier", - "DatabaseHost", - "DatabasePort", - "SecretManagerArn", - "DatabaseName", - "TableName", - "RoleArn", - "VpcConfiguration" - ], - "type": "object" - }, - "RedshiftSourceConfig": { - "additionalProperties": false, - "properties": { - "ClusterIdentifier": { - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-z](?!.*--)(?!.*-$)[0-9a-z\\-]*$", - "type": "string" - }, - "DatabaseHost": { - "$ref": "#/definitions/DatabaseHost" - }, - "DatabaseName": { - "maxLength": 100, - "minLength": 1, - "pattern": "[a-z0-9]+", - "type": "string" - }, - "DatabasePort": { - "$ref": "#/definitions/DatabasePort" - }, - "RoleArn": { - "$ref": "#/definitions/Arn" - }, - "SecretManagerArn": { - "$ref": "#/definitions/SecretManagerArn" - }, - "TableName": { - "$ref": "#/definitions/TableName" - }, - "VpcConfiguration": { - "$ref": "#/definitions/VpcConfiguration" - } - }, - "required": [ - "ClusterIdentifier", - "DatabaseHost", - "DatabasePort", - "SecretManagerArn", - "DatabaseName", - "TableName", - "RoleArn", - "VpcConfiguration" - ], - "type": "object" - }, - "S3SourceConfig": { - "additionalProperties": false, - "properties": { - "FileFormatDescriptor": { - "$ref": "#/definitions/FileFormatDescriptor" - }, - "HistoricalDataPathList": { - "items": { - "maxLength": 1024, - "pattern": "^s3://[a-z0-9].+$", - "type": "string" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "RoleArn": { - "$ref": "#/definitions/Arn" - }, - "TemplatedPathList": { - "items": { - "maxLength": 1024, - "pattern": "^s3://[a-zA-Z0-9_\\-\\/ {}=]+$", - "type": "string" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "RoleArn", - "FileFormatDescriptor" - ], - "type": "object" - }, - "SecretManagerArn": { - "maxLength": 256, - "pattern": "arn:([a-z\\d-]+):.*:.*:secret:AmazonLookoutMetrics-.+", - "type": "string" - }, - "SecurityGroupIdList": { - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "type": "array" - }, - "SubnetIdList": { - "items": { - "maxLength": 255, - "pattern": "[\\-0-9a-zA-Z]+", - "type": "string" - }, - "type": "array" - }, - "TableName": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", - "type": "string" - }, - "TimestampColumn": { - "additionalProperties": false, - "properties": { - "ColumnFormat": { - "description": "A timestamp format for the timestamps in the dataset", - "maxLength": 63, - "pattern": ".*\\S.*", - "type": "string" - }, - "ColumnName": { - "$ref": "#/definitions/ColumnName" - } - }, - "type": "object" - }, - "VpcConfiguration": { - "additionalProperties": false, - "properties": { - "SecurityGroupIdList": { - "$ref": "#/definitions/SecurityGroupIdList" - }, - "SubnetIdList": { - "$ref": "#/definitions/SubnetIdList" - } - }, - "required": [ - "SubnetIdList", - "SecurityGroupIdList" - ], - "type": "object" - } - }, - "description": "An Amazon Lookout for Metrics Detector", - "handlers": { - "create": { - "permissions": [ - "lookoutmetrics:CreateAnomalyDetector", - "lookoutmetrics:DeleteAnomalyDetector", - "lookoutmetrics:CreateMetricSet", - "iam:PassRole" - ], - "timeoutInMinutes": 15 - }, - "delete": { - "permissions": [ - "lookoutmetrics:DescribeAnomalyDetector", - "lookoutmetrics:DeleteAnomalyDetector" - ], - "timeoutInMinutes": 15 - }, - "list": { - "permissions": [ - "lookoutmetrics:ListAnomalyDetectors" - ], - "timeoutInMinutes": 15 - }, - "read": { - "permissions": [ - "lookoutmetrics:DescribeAnomalyDetector", - "lookoutmetrics:DescribeMetricSet", - "lookoutmetrics:ListMetricSets" - ], - "timeoutInMinutes": 15 - }, - "update": { - "permissions": [ - "lookoutmetrics:UpdateAnomalyDetector", - "lookoutmetrics:UpdateMetricSet" - ], - "timeoutInMinutes": 15 - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "AnomalyDetectorConfig": { - "$ref": "#/definitions/AnomalyDetectorConfig", - "description": "Configuration options for the AnomalyDetector" - }, - "AnomalyDetectorDescription": { - "description": "A description for the AnomalyDetector.", - "maxLength": 256, - "pattern": ".*\\S.*", - "type": "string" - }, - "AnomalyDetectorName": { - "description": "Name for the Amazon Lookout for Metrics Anomaly Detector", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", - "type": "string" - }, - "Arn": { - "$ref": "#/definitions/Arn" - }, - "KmsKeyArn": { - "description": "KMS key used to encrypt the AnomalyDetector data", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:aws.*:kms:.*:[0-9]{12}:key/.*", - "type": "string" - }, - "MetricSetList": { - "description": "List of metric sets for anomaly detection", - "items": { - "$ref": "#/definitions/MetricSet" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "AnomalyDetectorConfig", - "MetricSetList" - ], - "sourceUrl": "https://docs.aws.amazon.com/lookoutmetrics/latest/dev/lookoutmetrics-welcome.html", - "typeName": "AWS::LookoutMetrics::AnomalyDetector" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AnomalyDetectorName", + "/properties/MetricSource" + ], + "definitions": { + "AnomalyDetectorConfig": { + "additionalProperties": false, + "properties": { + "AnomalyDetectorFrequency": { + "$ref": "#/definitions/AnomalyDetectorFrequency", + "description": "Frequency of anomaly detection" + } + }, + "required": [ + "AnomalyDetectorFrequency" + ], + "type": "object" + }, + "AnomalyDetectorFrequency": { + "description": "Frequency of anomaly detection", + "enum": [ + "PT5M", + "PT10M", + "PT1H", + "P1D" + ], + "type": "string" + }, + "AppFlowConfig": { + "additionalProperties": false, + "properties": { + "FlowName": { + "maxLength": 256, + "pattern": "[a-zA-Z0-9][\\w!@#.-]+", + "type": "string" + }, + "RoleArn": { + "$ref": "#/definitions/Arn" + } + }, + "required": [ + "RoleArn", + "FlowName" + ], + "type": "object" + }, + "Arn": { + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):.*:.*:.*:.+", + "type": "string" + }, + "Charset": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", + "type": "string" + }, + "CloudwatchConfig": { + "additionalProperties": false, + "properties": { + "RoleArn": { + "$ref": "#/definitions/Arn" + } + }, + "required": [ + "RoleArn" + ], + "type": "object" + }, + "ColumnName": { + "description": "Name of a column in the data.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", + "type": "string" + }, + "CsvFormatDescriptor": { + "additionalProperties": false, + "properties": { + "Charset": { + "$ref": "#/definitions/Charset" + }, + "ContainsHeader": { + "type": "boolean" + }, + "Delimiter": { + "maxLength": 1, + "pattern": "[^\\r\\n]", + "type": "string" + }, + "FileCompression": { + "enum": [ + "NONE", + "GZIP" + ], + "type": "string" + }, + "HeaderList": { + "items": { + "$ref": "#/definitions/ColumnName" + }, + "type": "array" + }, + "QuoteSymbol": { + "maxLength": 1, + "pattern": "[^\\r\\n]|^$", + "type": "string" + } + }, + "type": "object" + }, + "DatabaseHost": { + "maxLength": 253, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "DatabasePort": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "FileFormatDescriptor": { + "additionalProperties": false, + "properties": { + "CsvFormatDescriptor": { + "$ref": "#/definitions/CsvFormatDescriptor" + }, + "JsonFormatDescriptor": { + "$ref": "#/definitions/JsonFormatDescriptor" + } + }, + "type": "object" + }, + "JsonFormatDescriptor": { + "additionalProperties": false, + "properties": { + "Charset": { + "$ref": "#/definitions/Charset" + }, + "FileCompression": { + "enum": [ + "NONE", + "GZIP" + ], + "type": "string" + } + }, + "type": "object" + }, + "Metric": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "description": "Operator used to aggregate metric values", + "enum": [ + "AVG", + "SUM" + ], + "type": "string" + }, + "MetricName": { + "$ref": "#/definitions/ColumnName" + }, + "Namespace": { + "maxLength": 255, + "minLength": 1, + "pattern": "[^:].*", + "type": "string" + } + }, + "required": [ + "MetricName", + "AggregationFunction" + ], + "type": "object" + }, + "MetricSet": { + "additionalProperties": false, + "properties": { + "DimensionList": { + "description": "Dimensions for this MetricSet.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ColumnName" + }, + "minItems": 0, + "type": "array" + }, + "MetricList": { + "description": "Metrics captured by this MetricSet.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Metric" + }, + "minItems": 1, + "type": "array" + }, + "MetricSetDescription": { + "description": "A description for the MetricSet.", + "maxLength": 256, + "pattern": ".*\\S.*", + "type": "string" + }, + "MetricSetFrequency": { + "description": "A frequency period to aggregate the data", + "enum": [ + "PT5M", + "PT10M", + "PT1H", + "P1D" + ], + "type": "string" + }, + "MetricSetName": { + "description": "The name of the MetricSet.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", + "type": "string" + }, + "MetricSource": { + "$ref": "#/definitions/MetricSource" + }, + "Offset": { + "description": "Offset, in seconds, between the frequency interval and the time at which the metrics are available.", + "maximum": 432000, + "minimum": 0, + "type": "integer" + }, + "TimestampColumn": { + "$ref": "#/definitions/TimestampColumn" + }, + "Timezone": { + "maxLength": 60, + "pattern": ".*\\S.*", + "type": "string" + } + }, + "required": [ + "MetricSetName", + "MetricList", + "MetricSource" + ], + "type": "object" + }, + "MetricSource": { + "additionalProperties": false, + "properties": { + "AppFlowConfig": { + "$ref": "#/definitions/AppFlowConfig" + }, + "CloudwatchConfig": { + "$ref": "#/definitions/CloudwatchConfig" + }, + "RDSSourceConfig": { + "$ref": "#/definitions/RDSSourceConfig" + }, + "RedshiftSourceConfig": { + "$ref": "#/definitions/RedshiftSourceConfig" + }, + "S3SourceConfig": { + "$ref": "#/definitions/S3SourceConfig" + } + }, + "type": "object" + }, + "RDSSourceConfig": { + "additionalProperties": false, + "properties": { + "DBInstanceIdentifier": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z](?!.*--)(?!.*-$)[0-9a-zA-Z\\-]*$", + "type": "string" + }, + "DatabaseHost": { + "$ref": "#/definitions/DatabaseHost" + }, + "DatabaseName": { + "maxLength": 64, + "minLength": 1, + "pattern": "[a-zA-Z0-9_]+", + "type": "string" + }, + "DatabasePort": { + "$ref": "#/definitions/DatabasePort" + }, + "RoleArn": { + "$ref": "#/definitions/Arn" + }, + "SecretManagerArn": { + "$ref": "#/definitions/SecretManagerArn" + }, + "TableName": { + "$ref": "#/definitions/TableName" + }, + "VpcConfiguration": { + "$ref": "#/definitions/VpcConfiguration" + } + }, + "required": [ + "DBInstanceIdentifier", + "DatabaseHost", + "DatabasePort", + "SecretManagerArn", + "DatabaseName", + "TableName", + "RoleArn", + "VpcConfiguration" + ], + "type": "object" + }, + "RedshiftSourceConfig": { + "additionalProperties": false, + "properties": { + "ClusterIdentifier": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-z](?!.*--)(?!.*-$)[0-9a-z\\-]*$", + "type": "string" + }, + "DatabaseHost": { + "$ref": "#/definitions/DatabaseHost" + }, + "DatabaseName": { + "maxLength": 100, + "minLength": 1, + "pattern": "[a-z0-9]+", + "type": "string" + }, + "DatabasePort": { + "$ref": "#/definitions/DatabasePort" + }, + "RoleArn": { + "$ref": "#/definitions/Arn" + }, + "SecretManagerArn": { + "$ref": "#/definitions/SecretManagerArn" + }, + "TableName": { + "$ref": "#/definitions/TableName" + }, + "VpcConfiguration": { + "$ref": "#/definitions/VpcConfiguration" + } + }, + "required": [ + "ClusterIdentifier", + "DatabaseHost", + "DatabasePort", + "SecretManagerArn", + "DatabaseName", + "TableName", + "RoleArn", + "VpcConfiguration" + ], + "type": "object" + }, + "S3SourceConfig": { + "additionalProperties": false, + "properties": { + "FileFormatDescriptor": { + "$ref": "#/definitions/FileFormatDescriptor" + }, + "HistoricalDataPathList": { + "items": { + "maxLength": 1024, + "pattern": "^s3://[a-z0-9].+$", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "RoleArn": { + "$ref": "#/definitions/Arn" + }, + "TemplatedPathList": { + "items": { + "maxLength": 1024, + "pattern": "^s3://[a-zA-Z0-9_\\-\\/ {}=]+$", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "RoleArn", + "FileFormatDescriptor" + ], + "type": "object" + }, + "SecretManagerArn": { + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):.*:.*:secret:AmazonLookoutMetrics-.+", + "type": "string" + }, + "SecurityGroupIdList": { + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "type": "array" + }, + "SubnetIdList": { + "items": { + "maxLength": 255, + "pattern": "[\\-0-9a-zA-Z]+", + "type": "string" + }, + "type": "array" + }, + "TableName": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + "TimestampColumn": { + "additionalProperties": false, + "properties": { + "ColumnFormat": { + "description": "A timestamp format for the timestamps in the dataset", + "maxLength": 63, + "pattern": ".*\\S.*", + "type": "string" + }, + "ColumnName": { + "$ref": "#/definitions/ColumnName" + } + }, + "type": "object" + }, + "VpcConfiguration": { + "additionalProperties": false, + "properties": { + "SecurityGroupIdList": { + "$ref": "#/definitions/SecurityGroupIdList" + }, + "SubnetIdList": { + "$ref": "#/definitions/SubnetIdList" + } + }, + "required": [ + "SubnetIdList", + "SecurityGroupIdList" + ], + "type": "object" + } + }, + "description": "An Amazon Lookout for Metrics Detector", + "handlers": { + "create": { + "permissions": [ + "lookoutmetrics:CreateAnomalyDetector", + "lookoutmetrics:DeleteAnomalyDetector", + "lookoutmetrics:CreateMetricSet", + "iam:PassRole" + ], + "timeoutInMinutes": 15 + }, + "delete": { + "permissions": [ + "lookoutmetrics:DescribeAnomalyDetector", + "lookoutmetrics:DeleteAnomalyDetector" + ], + "timeoutInMinutes": 15 + }, + "list": { + "permissions": [ + "lookoutmetrics:ListAnomalyDetectors" + ], + "timeoutInMinutes": 15 + }, + "read": { + "permissions": [ + "lookoutmetrics:DescribeAnomalyDetector", + "lookoutmetrics:DescribeMetricSet", + "lookoutmetrics:ListMetricSets" + ], + "timeoutInMinutes": 15 + }, + "update": { + "permissions": [ + "lookoutmetrics:UpdateAnomalyDetector", + "lookoutmetrics:UpdateMetricSet" + ], + "timeoutInMinutes": 15 + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AnomalyDetectorConfig": { + "$ref": "#/definitions/AnomalyDetectorConfig", + "description": "Configuration options for the AnomalyDetector" + }, + "AnomalyDetectorDescription": { + "description": "A description for the AnomalyDetector.", + "maxLength": 256, + "pattern": ".*\\S.*", + "type": "string" + }, + "AnomalyDetectorName": { + "description": "Name for the Amazon Lookout for Metrics Anomaly Detector", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", + "type": "string" + }, + "Arn": { + "$ref": "#/definitions/Arn" + }, + "KmsKeyArn": { + "description": "KMS key used to encrypt the AnomalyDetector data", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:aws.*:kms:.*:[0-9]{12}:key/.*", + "type": "string" + }, + "MetricSetList": { + "description": "List of metric sets for anomaly detection", + "items": { + "$ref": "#/definitions/MetricSet" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "AnomalyDetectorConfig", + "MetricSetList" + ], + "sourceUrl": "https://docs.aws.amazon.com/lookoutmetrics/latest/dev/lookoutmetrics-welcome.html", + "typeName": "AWS::LookoutMetrics::AnomalyDetector" +} diff --git a/src/schema/aws-lookoutvision-project.json b/src/schema/aws-lookoutvision-project.json index 26769f2b..570b9ada 100644 --- a/src/schema/aws-lookoutvision-project.json +++ b/src/schema/aws-lookoutvision-project.json @@ -1,69 +1,69 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProjectName" - ], - "definitions": { - "Arn": { - "maxLength": 1000, - "type": "string" - }, - "ProjectName": { - "description": "The name of the Amazon Lookout for Vision project", - "maxLength": 255, - "minLength": 1, - "pattern": "[a-zA-Z0-9][a-zA-Z0-9_\\-]*", - "type": "string" - } - }, - "description": "The AWS::LookoutVision::Project type creates an Amazon Lookout for Vision project. A project is a grouping of the resources needed to create and manage a Lookout for Vision model.", - "handlers": { - "create": { - "permissions": [ - "lookoutvision:CreateProject" - ], - "timeoutInMinutes": 15 - }, - "delete": { - "permissions": [ - "lookoutvision:DeleteProject" - ], - "timeoutInMinutes": 15 - }, - "list": { - "permissions": [ - "lookoutvision:ListProjects" - ], - "timeoutInMinutes": 15 - }, - "read": { - "permissions": [ - "lookoutvision:DescribeProject" - ], - "timeoutInMinutes": 15 - }, - "update": { - "permissions": [], - "timeoutInMinutes": 15 - } - }, - "primaryIdentifier": [ - "/properties/ProjectName" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "ProjectName": { - "$ref": "#/definitions/ProjectName" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "ProjectName" - ], - "sourceUrl": "https://docs.aws.amazon.com/lookout-for-vision/latest/developer-guide/model-create-project.html", - "typeName": "AWS::LookoutVision::Project" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ProjectName" + ], + "definitions": { + "Arn": { + "maxLength": 1000, + "type": "string" + }, + "ProjectName": { + "description": "The name of the Amazon Lookout for Vision project", + "maxLength": 255, + "minLength": 1, + "pattern": "[a-zA-Z0-9][a-zA-Z0-9_\\-]*", + "type": "string" + } + }, + "description": "The AWS::LookoutVision::Project type creates an Amazon Lookout for Vision project. A project is a grouping of the resources needed to create and manage a Lookout for Vision model.", + "handlers": { + "create": { + "permissions": [ + "lookoutvision:CreateProject" + ], + "timeoutInMinutes": 15 + }, + "delete": { + "permissions": [ + "lookoutvision:DeleteProject" + ], + "timeoutInMinutes": 15 + }, + "list": { + "permissions": [ + "lookoutvision:ListProjects" + ], + "timeoutInMinutes": 15 + }, + "read": { + "permissions": [ + "lookoutvision:DescribeProject" + ], + "timeoutInMinutes": 15 + }, + "update": { + "permissions": [], + "timeoutInMinutes": 15 + } + }, + "primaryIdentifier": [ + "/properties/ProjectName" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "ProjectName": { + "$ref": "#/definitions/ProjectName" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "ProjectName" + ], + "sourceUrl": "https://docs.aws.amazon.com/lookout-for-vision/latest/developer-guide/model-create-project.html", + "typeName": "AWS::LookoutVision::Project" +} diff --git a/src/schema/aws-m2-application.json b/src/schema/aws-m2-application.json index 6982f52b..68a3e957 100644 --- a/src/schema/aws-m2-application.json +++ b/src/schema/aws-m2-application.json @@ -1,169 +1,175 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/EngineType", - "/properties/Name", - "/properties/KmsKeyId", - "/properties/RoleArn" - ], - "definitions": { - "Definition": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "S3Location": { - "pattern": "^\\S{1,2000}$", - "type": "string" - } - }, - "required": [ - "S3Location" - ], - "title": "S3Location", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Content": { - "maxLength": 65000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Content" - ], - "title": "Content", - "type": "object" - } - ] - }, - "EngineType": { - "enum": [ - "microfocus", - "bluage" - ], - "type": "string" - }, - "TagMap": { - "additionalProperties": false, - "maxProperties": 200, - "minProperties": 0, - "patternProperties": { - "^(?!aws:).+$": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Represents an application that runs on an AWS Mainframe Modernization Environment", - "handlers": { - "create": { - "permissions": [ - "m2:CreateApplication", - "m2:GetApplication", - "m2:ListTagsForResource", - "m2:TagResource", - "s3:GetObject", - "s3:ListBucket", - "kms:DescribeKey", - "kms:CreateGrant", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "elasticloadbalancing:DeleteListener", - "elasticloadbalancing:DeleteTargetGroup", - "logs:DeleteLogDelivery", - "m2:GetApplication", - "m2:DeleteApplication" - ] - }, - "list": { - "permissions": [ - "m2:ListApplications" - ] - }, - "read": { - "permissions": [ - "m2:GetApplication", - "m2:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "m2:UpdateApplication", - "m2:GetApplication", - "m2:ListTagsForResource", - "m2:TagResource", - "m2:UntagResource", - "s3:GetObject", - "s3:ListBucket" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationArn" - ], - "properties": { - "ApplicationArn": { - "pattern": "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]):[0-9]{12}:[A-Za-z0-9/][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "ApplicationId": { - "pattern": "^\\S{1,80}$", - "type": "string" - }, - "Definition": { - "$ref": "#/definitions/Definition" - }, - "Description": { - "maxLength": 500, - "minLength": 0, - "type": "string" - }, - "EngineType": { - "$ref": "#/definitions/EngineType" - }, - "KmsKeyId": { - "description": "The ID or the Amazon Resource Name (ARN) of the customer managed KMS Key used for encrypting application-related resources.", - "maxLength": 2048, - "type": "string" - }, - "Name": { - "pattern": "^[A-Za-z0-9][A-Za-z0-9_\\-]{1,59}$", - "type": "string" - }, - "RoleArn": { - "pattern": "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]|):[0-9]{12}:[A-Za-z0-9/][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/TagMap" - } - }, - "readOnlyProperties": [ - "/properties/ApplicationArn", - "/properties/ApplicationId" - ], - "required": [ - "EngineType", - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::M2::Application", - "writeOnlyProperties": [ - "/properties/Definition" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EngineType", + "/properties/Name", + "/properties/KmsKeyId", + "/properties/RoleArn" + ], + "definitions": { + "Definition": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "S3Location": { + "pattern": "^\\S{1,2000}$", + "type": "string" + } + }, + "required": [ + "S3Location" + ], + "title": "S3Location", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Content": { + "maxLength": 65000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Content" + ], + "title": "Content", + "type": "object" + } + ] + }, + "EngineType": { + "enum": [ + "microfocus", + "bluage" + ], + "type": "string" + }, + "TagMap": { + "additionalProperties": false, + "maxProperties": 200, + "minProperties": 0, + "patternProperties": { + "^(?!aws:).+$": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Represents an application that runs on an AWS Mainframe Modernization Environment", + "handlers": { + "create": { + "permissions": [ + "m2:CreateApplication", + "m2:GetApplication", + "m2:ListTagsForResource", + "m2:TagResource", + "s3:GetObject", + "s3:ListBucket", + "kms:DescribeKey", + "kms:CreateGrant", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DeleteListener", + "elasticloadbalancing:DeleteTargetGroup", + "logs:DeleteLogDelivery", + "m2:GetApplication", + "m2:DeleteApplication" + ] + }, + "list": { + "permissions": [ + "m2:ListApplications" + ] + }, + "read": { + "permissions": [ + "m2:GetApplication", + "m2:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "m2:UpdateApplication", + "m2:GetApplication", + "m2:ListTagsForResource", + "m2:TagResource", + "m2:UntagResource", + "s3:GetObject", + "s3:ListBucket" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationArn" + ], + "properties": { + "ApplicationArn": { + "pattern": "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]):[0-9]{12}:[A-Za-z0-9/][A-Za-z0-9:_/+=,@.-]{0,1023}$", + "type": "string" + }, + "ApplicationId": { + "pattern": "^\\S{1,80}$", + "type": "string" + }, + "Definition": { + "$ref": "#/definitions/Definition" + }, + "Description": { + "maxLength": 500, + "minLength": 0, + "type": "string" + }, + "EngineType": { + "$ref": "#/definitions/EngineType" + }, + "KmsKeyId": { + "description": "The ID or the Amazon Resource Name (ARN) of the customer managed KMS Key used for encrypting application-related resources.", + "maxLength": 2048, + "type": "string" + }, + "Name": { + "pattern": "^[A-Za-z0-9][A-Za-z0-9_\\-]{1,59}$", + "type": "string" + }, + "RoleArn": { + "pattern": "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]|):[0-9]{12}:[A-Za-z0-9/][A-Za-z0-9:_/+=,@.-]{0,1023}$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + } + }, + "readOnlyProperties": [ + "/properties/ApplicationArn", + "/properties/ApplicationId" + ], + "required": [ + "EngineType", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "m2:TagResource", + "m2:UntagResource", + "m2:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::M2::Application", + "writeOnlyProperties": [ + "/properties/Definition" + ] +} diff --git a/src/schema/aws-m2-deployment.json b/src/schema/aws-m2-deployment.json new file mode 100644 index 00000000..345e50f0 --- /dev/null +++ b/src/schema/aws-m2-deployment.json @@ -0,0 +1,131 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EnvironmentId", + "/properties/ApplicationId" + ], + "description": "Represents a deployment resource of an AWS Mainframe Modernization (M2) application to a specified environment", + "handlers": { + "create": { + "permissions": [ + "m2:CreateDeployment", + "m2:ListDeployments", + "m2:GetDeployment", + "iam:PassRole", + "ec2:DescribeNetworkInterfaces", + "elasticloadbalancing:CreateListener", + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:CreateTargetGroup", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RegisterTargets", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "logs:CreateLogGroup", + "logs:PutResourcePolicy" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DeleteListener", + "elasticloadbalancing:DeleteTargetGroup", + "elasticloadbalancing:DeregisterTargets", + "elasticloadbalancing:DeleteLoadBalancer", + "logs:DeleteLogDelivery", + "m2:ListDeployments", + "m2:GetDeployment", + "m2:DeleteApplicationFromEnvironment" + ], + "timeoutInMinutes": 60 + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "m2:ListDeployments" + ] + }, + "read": { + "permissions": [ + "m2:ListDeployments", + "m2:GetDeployment" + ] + }, + "update": { + "permissions": [ + "m2:CreateDeployment", + "m2:ListDeployments", + "m2:GetDeployment", + "elasticloadbalancing:CreateListener", + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:CreateTargetGroup", + "elasticloadbalancing:DeleteListener", + "elasticloadbalancing:DeleteTargetGroup", + "elasticloadbalancing:DeregisterTargets", + "elasticloadbalancing:DeleteLoadBalancer", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RegisterTargets", + "ec2:DescribeNetworkInterfaces" + ], + "timeoutInMinutes": 60 + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId" + ], + "properties": { + "ApplicationId": { + "description": "The application ID.", + "pattern": "^\\S{1,80}$", + "type": "string" + }, + "ApplicationVersion": { + "description": "The version number of the application to deploy", + "type": "integer" + }, + "DeploymentId": { + "description": "The deployment ID.", + "pattern": "^\\S{1,80}$", + "type": "string" + }, + "EnvironmentId": { + "description": "The environment ID.", + "pattern": "^\\S{1,80}$", + "type": "string" + }, + "Status": { + "description": "The status of the deployment.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DeploymentId", + "/properties/Status" + ], + "required": [ + "EnvironmentId", + "ApplicationId", + "ApplicationVersion" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-m2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::M2::Deployment" +} diff --git a/src/schema/aws-m2-environment.json b/src/schema/aws-m2-environment.json index a474930c..bc03f0d0 100644 --- a/src/schema/aws-m2-environment.json +++ b/src/schema/aws-m2-environment.json @@ -1,282 +1,299 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Description", - "/properties/EngineType", - "/properties/KmsKeyId", - "/properties/Name", - "/properties/PubliclyAccessible", - "/properties/SecurityGroupIds", - "/properties/StorageConfigurations", - "/properties/SubnetIds" - ], - "definitions": { - "EfsStorageConfiguration": { - "additionalProperties": false, - "description": "Defines the storage configuration for an Amazon EFS file system.", - "properties": { - "FileSystemId": { - "description": "The file system identifier.", - "pattern": "^\\S{1,200}$", - "type": "string" - }, - "MountPoint": { - "description": "The mount point for the file system.", - "pattern": "^\\S{1,200}$", - "type": "string" - } - }, - "required": [ - "FileSystemId", - "MountPoint" - ], - "type": "object" - }, - "EngineType": { - "description": "The target platform for the environment.", - "enum": [ - "microfocus", - "bluage" - ], - "type": "string" - }, - "FsxStorageConfiguration": { - "additionalProperties": false, - "description": "Defines the storage configuration for an Amazon FSx file system.", - "properties": { - "FileSystemId": { - "description": "The file system identifier.", - "pattern": "^\\S{1,200}$", - "type": "string" - }, - "MountPoint": { - "description": "The mount point for the file system.", - "pattern": "^\\S{1,200}$", - "type": "string" - } - }, - "required": [ - "FileSystemId", - "MountPoint" - ], - "type": "object" - }, - "HighAvailabilityConfig": { - "additionalProperties": false, - "description": "Defines the details of a high availability configuration.", - "properties": { - "DesiredCapacity": { - "maximum": 100, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "DesiredCapacity" - ], - "type": "object" - }, - "StorageConfiguration": { - "description": "Defines the storage configuration for an environment.", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Efs": { - "$ref": "#/definitions/EfsStorageConfiguration" - } - }, - "required": [ - "Efs" - ] - }, - { - "additionalProperties": false, - "properties": { - "Fsx": { - "$ref": "#/definitions/FsxStorageConfiguration" - } - }, - "required": [ - "Fsx" - ] - } - ], - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "description": "Defines tags associated to an environment.", - "maxProperties": 200, - "minProperties": 0, - "patternProperties": { - "^(?!aws:).+$": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Represents a runtime environment that can run migrated mainframe applications.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateNetworkInterface", - "ec2:CreateNetworkInterfacePermission", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:ModifyNetworkInterfaceAttribute", - "elasticfilesystem:DescribeMountTargets", - "elasticloadbalancing:CreateLoadBalancer", - "elasticloadbalancing:DeleteLoadBalancer", - "elasticloadbalancing:AddTags", - "fsx:DescribeFileSystems", - "iam:CreateServiceLinkedRole", - "kms:DescribeKey", - "kms:CreateGrant", - "m2:CreateEnvironment", - "m2:GetEnvironment", - "m2:ListTagsForResource", - "m2:TagResource" - ], - "timeoutInMinutes": 120 - }, - "delete": { - "permissions": [ - "elasticloadbalancing:DeleteLoadBalancer", - "m2:DeleteEnvironment", - "m2:GetEnvironment" - ], - "timeoutInMinutes": 120 - }, - "list": { - "permissions": [ - "m2:ListEnvironments" - ] - }, - "read": { - "permissions": [ - "m2:ListTagsForResource", - "m2:GetEnvironment" - ] - }, - "update": { - "permissions": [ - "m2:TagResource", - "m2:UntagResource", - "m2:ListTagsForResource", - "m2:GetEnvironment", - "m2:UpdateEnvironment", - "kms:DescribeKey" - ], - "timeoutInMinutes": 120 - } - }, - "primaryIdentifier": [ - "/properties/EnvironmentArn" - ], - "properties": { - "Description": { - "description": "The description of the environment.", - "maxLength": 500, - "minLength": 0, - "type": "string" - }, - "EngineType": { - "$ref": "#/definitions/EngineType" - }, - "EngineVersion": { - "description": "The version of the runtime engine for the environment.", - "pattern": "^\\S{1,10}$", - "type": "string" - }, - "EnvironmentArn": { - "description": "The Amazon Resource Name (ARN) of the runtime environment.", - "pattern": "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]):[0-9]{12}:[A-Za-z0-9/][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "EnvironmentId": { - "description": "The unique identifier of the environment.", - "pattern": "^\\S{1,80}$", - "type": "string" - }, - "HighAvailabilityConfig": { - "$ref": "#/definitions/HighAvailabilityConfig" - }, - "InstanceType": { - "description": "The type of instance underlying the environment.", - "pattern": "^\\S{1,20}$", - "type": "string" - }, - "KmsKeyId": { - "description": "The ID or the Amazon Resource Name (ARN) of the customer managed KMS Key used for encrypting environment-related resources.", - "maxLength": 2048, - "type": "string" - }, - "Name": { - "description": "The name of the environment.", - "pattern": "^[A-Za-z0-9][A-Za-z0-9_\\-]{1,59}$", - "type": "string" - }, - "PreferredMaintenanceWindow": { - "description": "Configures a desired maintenance window for the environment. If you do not provide a value, a random system-generated value will be assigned.", - "pattern": "^\\S{1,50}$", - "type": "string" - }, - "PubliclyAccessible": { - "description": "Specifies whether the environment is publicly accessible.", - "type": "boolean" - }, - "SecurityGroupIds": { - "description": "The list of security groups for the VPC associated with this environment.", - "insertionOrder": false, - "items": { - "pattern": "^\\S{1,50}$", - "type": "string" - }, - "type": "array" - }, - "StorageConfigurations": { - "description": "The storage configurations defined for the runtime environment.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/StorageConfiguration" - }, - "type": "array" - }, - "SubnetIds": { - "description": "The unique identifiers of the subnets assigned to this runtime environment.", - "insertionOrder": false, - "items": { - "pattern": "^\\S{1,50}$", - "type": "string" - }, - "type": "array" - }, - "Tags": { - "$ref": "#/definitions/TagMap", - "description": "Tags associated to this environment." - } - }, - "readOnlyProperties": [ - "/properties/EnvironmentArn", - "/properties/EnvironmentId" - ], - "required": [ - "EngineType", - "InstanceType", - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::M2::Environment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description", + "/properties/EngineType", + "/properties/KmsKeyId", + "/properties/Name", + "/properties/NetworkType", + "/properties/PubliclyAccessible", + "/properties/SecurityGroupIds", + "/properties/StorageConfigurations", + "/properties/SubnetIds" + ], + "definitions": { + "EfsStorageConfiguration": { + "additionalProperties": false, + "description": "Defines the storage configuration for an Amazon EFS file system.", + "properties": { + "FileSystemId": { + "description": "The file system identifier.", + "pattern": "^\\S{1,200}$", + "type": "string" + }, + "MountPoint": { + "description": "The mount point for the file system.", + "pattern": "^\\S{1,200}$", + "type": "string" + } + }, + "required": [ + "FileSystemId", + "MountPoint" + ], + "type": "object" + }, + "EngineType": { + "description": "The target platform for the environment.", + "enum": [ + "microfocus", + "bluage" + ], + "type": "string" + }, + "FsxStorageConfiguration": { + "additionalProperties": false, + "description": "Defines the storage configuration for an Amazon FSx file system.", + "properties": { + "FileSystemId": { + "description": "The file system identifier.", + "pattern": "^\\S{1,200}$", + "type": "string" + }, + "MountPoint": { + "description": "The mount point for the file system.", + "pattern": "^\\S{1,200}$", + "type": "string" + } + }, + "required": [ + "FileSystemId", + "MountPoint" + ], + "type": "object" + }, + "HighAvailabilityConfig": { + "additionalProperties": false, + "description": "Defines the details of a high availability configuration.", + "properties": { + "DesiredCapacity": { + "maximum": 100, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "DesiredCapacity" + ], + "type": "object" + }, + "NetworkType": { + "enum": [ + "ipv4", + "dual" + ], + "type": "string" + }, + "StorageConfiguration": { + "description": "Defines the storage configuration for an environment.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Efs": { + "$ref": "#/definitions/EfsStorageConfiguration" + } + }, + "required": [ + "Efs" + ] + }, + { + "additionalProperties": false, + "properties": { + "Fsx": { + "$ref": "#/definitions/FsxStorageConfiguration" + } + }, + "required": [ + "Fsx" + ] + } + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "description": "Defines tags associated to an environment.", + "maxProperties": 200, + "minProperties": 0, + "patternProperties": { + "^(?!aws:).+$": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Represents a runtime environment that can run migrated mainframe applications.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkInterface", + "ec2:CreateNetworkInterfacePermission", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcAttribute", + "ec2:DescribeVpcs", + "ec2:ModifyNetworkInterfaceAttribute", + "elasticfilesystem:DescribeMountTargets", + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DeleteLoadBalancer", + "elasticloadbalancing:AddTags", + "fsx:DescribeFileSystems", + "iam:CreateServiceLinkedRole", + "kms:DescribeKey", + "kms:CreateGrant", + "m2:CreateEnvironment", + "m2:GetEnvironment", + "m2:ListTagsForResource", + "m2:TagResource" + ], + "timeoutInMinutes": 120 + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DeleteLoadBalancer", + "m2:DeleteEnvironment", + "m2:GetEnvironment" + ], + "timeoutInMinutes": 120 + }, + "list": { + "permissions": [ + "m2:ListEnvironments" + ] + }, + "read": { + "permissions": [ + "m2:ListTagsForResource", + "m2:GetEnvironment" + ] + }, + "update": { + "permissions": [ + "m2:TagResource", + "m2:UntagResource", + "m2:ListTagsForResource", + "m2:GetEnvironment", + "m2:UpdateEnvironment", + "kms:DescribeKey" + ], + "timeoutInMinutes": 120 + } + }, + "primaryIdentifier": [ + "/properties/EnvironmentArn" + ], + "properties": { + "Description": { + "description": "The description of the environment.", + "maxLength": 500, + "minLength": 0, + "type": "string" + }, + "EngineType": { + "$ref": "#/definitions/EngineType" + }, + "EngineVersion": { + "description": "The version of the runtime engine for the environment.", + "pattern": "^\\S{1,10}$", + "type": "string" + }, + "EnvironmentArn": { + "description": "The Amazon Resource Name (ARN) of the runtime environment.", + "pattern": "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]):[0-9]{12}:[A-Za-z0-9/][A-Za-z0-9:_/+=,@.-]{0,1023}$", + "type": "string" + }, + "EnvironmentId": { + "description": "The unique identifier of the environment.", + "pattern": "^\\S{1,80}$", + "type": "string" + }, + "HighAvailabilityConfig": { + "$ref": "#/definitions/HighAvailabilityConfig" + }, + "InstanceType": { + "description": "The type of instance underlying the environment.", + "pattern": "^\\S{1,20}$", + "type": "string" + }, + "KmsKeyId": { + "description": "The ID or the Amazon Resource Name (ARN) of the customer managed KMS Key used for encrypting environment-related resources.", + "maxLength": 2048, + "type": "string" + }, + "Name": { + "description": "The name of the environment.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9_\\-]{1,59}$", + "type": "string" + }, + "NetworkType": { + "$ref": "#/definitions/NetworkType" + }, + "PreferredMaintenanceWindow": { + "description": "Configures a desired maintenance window for the environment. If you do not provide a value, a random system-generated value will be assigned.", + "pattern": "^\\S{1,50}$", + "type": "string" + }, + "PubliclyAccessible": { + "description": "Specifies whether the environment is publicly accessible.", + "type": "boolean" + }, + "SecurityGroupIds": { + "description": "The list of security groups for the VPC associated with this environment.", + "insertionOrder": false, + "items": { + "pattern": "^\\S{1,50}$", + "type": "string" + }, + "type": "array" + }, + "StorageConfigurations": { + "description": "The storage configurations defined for the runtime environment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StorageConfiguration" + }, + "type": "array" + }, + "SubnetIds": { + "description": "The unique identifiers of the subnets assigned to this runtime environment.", + "insertionOrder": false, + "items": { + "pattern": "^\\S{1,50}$", + "type": "string" + }, + "type": "array" + }, + "Tags": { + "$ref": "#/definitions/TagMap", + "description": "Tags associated to this environment." + } + }, + "readOnlyProperties": [ + "/properties/EnvironmentArn", + "/properties/EnvironmentId" + ], + "required": [ + "EngineType", + "InstanceType", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "m2:TagResource", + "m2:UntagResource", + "m2:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::M2::Environment" +} diff --git a/src/schema/aws-macie-allowlist.json b/src/schema/aws-macie-allowlist.json index 217dddec..ab423bd9 100644 --- a/src/schema/aws-macie-allowlist.json +++ b/src/schema/aws-macie-allowlist.json @@ -1,180 +1,184 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Arn" - ] - ], - "additionalProperties": false, - "definitions": { - "Criteria": { - "description": "The regex or s3 object to use for the AllowList.", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Regex": { - "description": "The S3 object key for the AllowList.", - "type": "string" - } - }, - "required": [ - "Regex" - ] - }, - { - "additionalProperties": false, - "properties": { - "S3WordsList": { - "$ref": "#/definitions/S3WordsList", - "description": "The S3 location for the AllowList." - } - }, - "required": [ - "S3WordsList" - ] - } - ], - "type": "object" - }, - "Regex": { - "type": "string" - }, - "S3WordsList": { - "additionalProperties": false, - "properties": { - "BucketName": { - "type": "string" - }, - "ObjectKey": { - "type": "string" - } - }, - "required": [ - "BucketName", - "ObjectKey" - ], - "type": "object" - }, - "Status": { - "description": "The status for the AllowList", - "enum": [ - "OK", - "S3_OBJECT_NOT_FOUND", - "S3_USER_ACCESS_DENIED", - "S3_OBJECT_ACCESS_DENIED", - "S3_THROTTLED", - "S3_OBJECT_OVERSIZE", - "S3_OBJECT_EMPTY", - "UNKNOWN_ERROR" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The tag's key.", - "type": "string" - }, - "Value": { - "description": "The tag's value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Macie AllowList resource schema", - "handlers": { - "create": { - "permissions": [ - "macie2:CreateAllowList", - "macie2:GetAllowList", - "macie2:TagResource" - ] - }, - "delete": { - "permissions": [ - "macie2:DeleteAllowList" - ] - }, - "list": { - "permissions": [ - "macie2:ListAllowLists" - ] - }, - "read": { - "permissions": [ - "macie2:GetAllowList" - ] - }, - "update": { - "permissions": [ - "macie2:UpdateAllowList", - "macie2:GetAllowList", - "macie2:TagResource", - "macie2:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "AllowList ARN.", - "type": "string" - }, - "Criteria": { - "$ref": "#/definitions/Criteria", - "description": "AllowList criteria." - }, - "Description": { - "description": "Description of AllowList.", - "type": "string" - }, - "Id": { - "description": "AllowList ID.", - "type": "string" - }, - "Name": { - "description": "Name of AllowList.", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/Status", - "description": "AllowList status." - }, - "Tags": { - "description": "A collection of tags associated with a resource", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/Status" - ], - "required": [ - "Name", - "Criteria" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-macie.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Macie::AllowList" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Arn" + ] + ], + "additionalProperties": false, + "definitions": { + "Criteria": { + "description": "The regex or s3 object to use for the AllowList.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Regex": { + "description": "The S3 object key for the AllowList.", + "type": "string" + } + }, + "required": [ + "Regex" + ] + }, + { + "additionalProperties": false, + "properties": { + "S3WordsList": { + "$ref": "#/definitions/S3WordsList", + "description": "The S3 location for the AllowList." + } + }, + "required": [ + "S3WordsList" + ] + } + ], + "type": "object" + }, + "Regex": { + "type": "string" + }, + "S3WordsList": { + "additionalProperties": false, + "properties": { + "BucketName": { + "type": "string" + }, + "ObjectKey": { + "type": "string" + } + }, + "required": [ + "BucketName", + "ObjectKey" + ], + "type": "object" + }, + "Status": { + "description": "The status for the AllowList", + "enum": [ + "OK", + "S3_OBJECT_NOT_FOUND", + "S3_USER_ACCESS_DENIED", + "S3_OBJECT_ACCESS_DENIED", + "S3_THROTTLED", + "S3_OBJECT_OVERSIZE", + "S3_OBJECT_EMPTY", + "UNKNOWN_ERROR" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The tag's key.", + "type": "string" + }, + "Value": { + "description": "The tag's value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Macie AllowList resource schema", + "handlers": { + "create": { + "permissions": [ + "macie2:CreateAllowList", + "macie2:GetAllowList", + "macie2:TagResource" + ] + }, + "delete": { + "permissions": [ + "macie2:DeleteAllowList" + ] + }, + "list": { + "permissions": [ + "macie2:ListAllowLists" + ] + }, + "read": { + "permissions": [ + "macie2:GetAllowList" + ] + }, + "update": { + "permissions": [ + "macie2:UpdateAllowList", + "macie2:GetAllowList", + "macie2:TagResource", + "macie2:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "AllowList ARN.", + "type": "string" + }, + "Criteria": { + "$ref": "#/definitions/Criteria", + "description": "AllowList criteria." + }, + "Description": { + "description": "Description of AllowList.", + "type": "string" + }, + "Id": { + "description": "AllowList ID.", + "type": "string" + }, + "Name": { + "description": "Name of AllowList.", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/Status", + "description": "AllowList status." + }, + "Tags": { + "description": "A collection of tags associated with a resource", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/Status" + ], + "required": [ + "Name", + "Criteria" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-macie.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "macie2:TagResource", + "macie2:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Macie::AllowList" +} diff --git a/src/schema/aws-macie-customdataidentifier.json b/src/schema/aws-macie-customdataidentifier.json index c5cd4b1e..c7ccadaa 100644 --- a/src/schema/aws-macie-customdataidentifier.json +++ b/src/schema/aws-macie-customdataidentifier.json @@ -1,136 +1,141 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Arn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Description", - "/properties/Regex", - "/properties/MaximumMatchDistance", - "/properties/Keywords", - "/properties/IgnoreWords" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The tag's key.", - "type": "string" - }, - "Value": { - "description": "The tag's value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Macie CustomDataIdentifier resource schema", - "handlers": { - "create": { - "permissions": [ - "macie2:CreateCustomDataIdentifier", - "macie2:GetCustomDataIdentifier", - "macie2:TagResource" - ] - }, - "delete": { - "permissions": [ - "macie2:DeleteCustomDataIdentifier" - ] - }, - "list": { - "permissions": [ - "macie2:ListCustomDataIdentifiers" - ] - }, - "read": { - "permissions": [ - "macie2:GetCustomDataIdentifier" - ] - }, - "update": { - "permissions": [ - "macie2:TagResource", - "macie2:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "Custom data identifier ARN.", - "type": "string" - }, - "Description": { - "description": "Description of custom data identifier.", - "type": "string" - }, - "Id": { - "description": "Custom data identifier ID.", - "type": "string" - }, - "IgnoreWords": { - "description": "Words to be ignored.", - "items": { - "type": "string" - }, - "type": "array" - }, - "Keywords": { - "description": "Keywords to be matched against.", - "items": { - "type": "string" - }, - "type": "array" - }, - "MaximumMatchDistance": { - "description": "Maximum match distance.", - "type": "integer" - }, - "Name": { - "description": "Name of custom data identifier.", - "type": "string" - }, - "Regex": { - "description": "Regular expression for custom data identifier.", - "type": "string" - }, - "Tags": { - "description": "A collection of tags associated with a resource", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "Name", - "Regex" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-macie.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Macie::CustomDataIdentifier" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Arn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Description", + "/properties/Regex", + "/properties/MaximumMatchDistance", + "/properties/Keywords", + "/properties/IgnoreWords" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The tag's key.", + "type": "string" + }, + "Value": { + "description": "The tag's value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Macie CustomDataIdentifier resource schema", + "handlers": { + "create": { + "permissions": [ + "macie2:CreateCustomDataIdentifier", + "macie2:GetCustomDataIdentifier", + "macie2:TagResource" + ] + }, + "delete": { + "permissions": [ + "macie2:DeleteCustomDataIdentifier" + ] + }, + "list": { + "permissions": [ + "macie2:ListCustomDataIdentifiers" + ] + }, + "read": { + "permissions": [ + "macie2:GetCustomDataIdentifier" + ] + }, + "update": { + "permissions": [ + "macie2:TagResource", + "macie2:UntagResource", + "macie2:GetCustomDataIdentifier" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "Custom data identifier ARN.", + "type": "string" + }, + "Description": { + "description": "Description of custom data identifier.", + "type": "string" + }, + "Id": { + "description": "Custom data identifier ID.", + "type": "string" + }, + "IgnoreWords": { + "description": "Words to be ignored.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Keywords": { + "description": "Keywords to be matched against.", + "items": { + "type": "string" + }, + "type": "array" + }, + "MaximumMatchDistance": { + "description": "Maximum match distance.", + "type": "integer" + }, + "Name": { + "description": "Name of custom data identifier.", + "type": "string" + }, + "Regex": { + "description": "Regular expression for custom data identifier.", + "type": "string" + }, + "Tags": { + "description": "A collection of tags associated with a resource", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Name", + "Regex" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-macie.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "macie2:TagResource", + "macie2:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Macie::CustomDataIdentifier" +} diff --git a/src/schema/aws-macie-findingsfilter.json b/src/schema/aws-macie-findingsfilter.json index b4a85826..cf2892ad 100644 --- a/src/schema/aws-macie-findingsfilter.json +++ b/src/schema/aws-macie-findingsfilter.json @@ -1,195 +1,199 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Arn" - ], - [ - "/properties/Name" - ] - ], - "additionalProperties": false, - "definitions": { - "Criterion": { - "additionalProperties": false, - "description": "Map of filter criteria.", - "patternProperties": { - "\\w": { - "$ref": "#/definitions/CriterionAdditionalProperties" - } - }, - "type": "object" - }, - "CriterionAdditionalProperties": { - "additionalProperties": false, - "properties": { - "eq": { - "items": { - "type": "string" - }, - "type": "array" - }, - "gt": { - "format": "int64", - "type": "integer" - }, - "gte": { - "format": "int64", - "type": "integer" - }, - "lt": { - "format": "int64", - "type": "integer" - }, - "lte": { - "format": "int64", - "type": "integer" - }, - "neq": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "FindingCriteria": { - "additionalProperties": false, - "properties": { - "Criterion": { - "$ref": "#/definitions/Criterion" - } - }, - "type": "object" - }, - "FindingFilterAction": { - "enum": [ - "ARCHIVE", - "NOOP" - ], - "type": "string" - }, - "FindingsFilterListItem": { - "description": "Returned by ListHandler representing filter name and ID.", - "properties": { - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The tag's key.", - "type": "string" - }, - "Value": { - "description": "The tag's value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Macie FindingsFilter resource schema.", - "handlers": { - "create": { - "permissions": [ - "macie2:GetFindingsFilter", - "macie2:CreateFindingsFilter", - "macie2:TagResource" - ] - }, - "delete": { - "permissions": [ - "macie2:DeleteFindingsFilter" - ] - }, - "list": { - "permissions": [ - "macie2:ListFindingsFilters" - ] - }, - "read": { - "permissions": [ - "macie2:GetFindingsFilter" - ] - }, - "update": { - "permissions": [ - "macie2:GetFindingsFilter", - "macie2:UpdateFindingsFilter", - "macie2:TagResource", - "macie2:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Action": { - "$ref": "#/definitions/FindingFilterAction", - "description": "Findings filter action." - }, - "Arn": { - "description": "Findings filter ARN.", - "type": "string" - }, - "Description": { - "description": "Findings filter description", - "type": "string" - }, - "FindingCriteria": { - "$ref": "#/definitions/FindingCriteria", - "description": "Findings filter criteria." - }, - "Id": { - "description": "Findings filter ID.", - "type": "string" - }, - "Name": { - "description": "Findings filter name", - "type": "string" - }, - "Position": { - "description": "Findings filter position.", - "type": "integer" - }, - "Tags": { - "description": "A collection of tags associated with a resource", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "Name", - "FindingCriteria" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-macie.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Macie::FindingsFilter" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Arn" + ], + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "definitions": { + "Criterion": { + "additionalProperties": false, + "description": "Map of filter criteria.", + "patternProperties": { + "\\w": { + "$ref": "#/definitions/CriterionAdditionalProperties" + } + }, + "type": "object" + }, + "CriterionAdditionalProperties": { + "additionalProperties": false, + "properties": { + "eq": { + "items": { + "type": "string" + }, + "type": "array" + }, + "gt": { + "format": "int64", + "type": "integer" + }, + "gte": { + "format": "int64", + "type": "integer" + }, + "lt": { + "format": "int64", + "type": "integer" + }, + "lte": { + "format": "int64", + "type": "integer" + }, + "neq": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "FindingCriteria": { + "additionalProperties": false, + "properties": { + "Criterion": { + "$ref": "#/definitions/Criterion" + } + }, + "type": "object" + }, + "FindingFilterAction": { + "enum": [ + "ARCHIVE", + "NOOP" + ], + "type": "string" + }, + "FindingsFilterListItem": { + "description": "Returned by ListHandler representing filter name and ID.", + "properties": { + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The tag's key.", + "type": "string" + }, + "Value": { + "description": "The tag's value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Macie FindingsFilter resource schema.", + "handlers": { + "create": { + "permissions": [ + "macie2:GetFindingsFilter", + "macie2:CreateFindingsFilter", + "macie2:TagResource" + ] + }, + "delete": { + "permissions": [ + "macie2:DeleteFindingsFilter" + ] + }, + "list": { + "permissions": [ + "macie2:ListFindingsFilters" + ] + }, + "read": { + "permissions": [ + "macie2:GetFindingsFilter" + ] + }, + "update": { + "permissions": [ + "macie2:GetFindingsFilter", + "macie2:UpdateFindingsFilter", + "macie2:TagResource", + "macie2:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Action": { + "$ref": "#/definitions/FindingFilterAction", + "description": "Findings filter action." + }, + "Arn": { + "description": "Findings filter ARN.", + "type": "string" + }, + "Description": { + "description": "Findings filter description", + "type": "string" + }, + "FindingCriteria": { + "$ref": "#/definitions/FindingCriteria", + "description": "Findings filter criteria." + }, + "Id": { + "description": "Findings filter ID.", + "type": "string" + }, + "Name": { + "description": "Findings filter name", + "type": "string" + }, + "Position": { + "description": "Findings filter position.", + "type": "integer" + }, + "Tags": { + "description": "A collection of tags associated with a resource", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Name", + "FindingCriteria" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-macie.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "macie2:TagResource", + "macie2:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Macie::FindingsFilter" +} diff --git a/src/schema/aws-macie-session.json b/src/schema/aws-macie-session.json index 1a0d72f6..88e53872 100644 --- a/src/schema/aws-macie-session.json +++ b/src/schema/aws-macie-session.json @@ -1,77 +1,90 @@ -{ - "additionalProperties": false, - "description": "The AWS::Macie::Session resource specifies a new Amazon Macie session. A session is an object that represents the Amazon Macie service. A session is required for Amazon Macie to become operational.", - "handlers": { - "create": { - "permissions": [ - "macie2:GetMacieSession", - "macie2:EnableMacie" - ] - }, - "delete": { - "permissions": [ - "macie2:DisableMacie" - ] - }, - "list": { - "permissions": [ - "macie2:GetMacieSession" - ] - }, - "read": { - "permissions": [ - "macie2:GetMacieSession" - ] - }, - "update": { - "permissions": [ - "macie2:GetMacieSession", - "macie2:UpdateMacieSession" - ] - } - }, - "primaryIdentifier": [ - "/properties/AwsAccountId" - ], - "properties": { - "AwsAccountId": { - "description": "AWS account ID of customer", - "type": "string" - }, - "FindingPublishingFrequency": { - "default": "SIX_HOURS", - "description": "A enumeration value that specifies how frequently finding updates are published.", - "enum": [ - "FIFTEEN_MINUTES", - "ONE_HOUR", - "SIX_HOURS" - ], - "type": "string" - }, - "ServiceRole": { - "description": "Service role used by Macie", - "type": "string" - }, - "Status": { - "default": "ENABLED", - "description": "A enumeration value that specifies the status of the Macie Session.", - "enum": [ - "ENABLED", - "PAUSED" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AwsAccountId", - "/properties/ServiceRole" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-macie.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Macie::Session" -} +{ + "additionalProperties": false, + "description": "The AWS::Macie::Session resource specifies a new Amazon Macie session. A session is an object that represents the Amazon Macie service. A session is required for Amazon Macie to become operational.", + "handlers": { + "create": { + "permissions": [ + "macie2:GetMacieSession", + "macie2:EnableMacie", + "macie2:ListAutomatedDiscoveryAccounts" + ] + }, + "delete": { + "permissions": [ + "macie2:DisableMacie" + ] + }, + "list": { + "permissions": [ + "macie2:GetMacieSession", + "macie2:ListAutomatedDiscoveryAccounts" + ] + }, + "read": { + "permissions": [ + "macie2:GetMacieSession", + "macie2:ListAutomatedDiscoveryAccounts" + ] + }, + "update": { + "permissions": [ + "macie2:GetMacieSession", + "macie2:UpdateMacieSession", + "macie2:ListAutomatedDiscoveryAccounts" + ] + } + }, + "primaryIdentifier": [ + "/properties/AwsAccountId" + ], + "properties": { + "AutomatedDiscoveryStatus": { + "description": "The status of automated sensitive data discovery for the Macie session.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "AwsAccountId": { + "description": "AWS account ID of customer", + "type": "string" + }, + "FindingPublishingFrequency": { + "default": "SIX_HOURS", + "description": "A enumeration value that specifies how frequently finding updates are published.", + "enum": [ + "FIFTEEN_MINUTES", + "ONE_HOUR", + "SIX_HOURS" + ], + "type": "string" + }, + "ServiceRole": { + "description": "Service role used by Macie", + "type": "string" + }, + "Status": { + "default": "ENABLED", + "description": "A enumeration value that specifies the status of the Macie Session.", + "enum": [ + "ENABLED", + "PAUSED" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/ServiceRole", + "/properties/AutomatedDiscoveryStatus" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-macie.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Macie::Session" +} diff --git a/src/schema/aws-managedblockchain-accessor.json b/src/schema/aws-managedblockchain-accessor.json index 5bdbb14e..87a8c315 100644 --- a/src/schema/aws-managedblockchain-accessor.json +++ b/src/schema/aws-managedblockchain-accessor.json @@ -1,157 +1,157 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Arn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AccessorType", - "/properties/NetworkType" - ], - "definitions": { - "AccessorStatus": { - "enum": [ - "AVAILABLE", - "PENDING_DELETION", - "DELETED" - ], - "type": "string" - }, - "AccessorType": { - "enum": [ - "BILLING_TOKEN" - ], - "type": "string" - }, - "NetworkAccessorType": { - "enum": [ - "ETHEREUM_GOERLI", - "ETHEREUM_MAINNET", - "ETHEREUM_MAINNET_AND_GOERLI", - "POLYGON_MAINNET", - "POLYGON_MUMBAI" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::ManagedBlockchain::com.amazonaws.taiga.webservice.api#Accessor Resource Type", - "handlers": { - "create": { - "permissions": [ - "managedblockchain:CreateAccessor", - "managedblockchain:TagResource", - "managedblockchain:GetAccessor" - ] - }, - "delete": { - "permissions": [ - "managedblockchain:DeleteAccessor" - ] - }, - "list": { - "permissions": [ - "managedblockchain:ListAccessors" - ] - }, - "read": { - "permissions": [ - "managedblockchain:GetAccessor" - ] - }, - "update": { - "permissions": [ - "managedblockchain:GetAccessor", - "managedblockchain:CreateAccessor", - "managedblockchain:TagResource", - "managedblockchain:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AccessorType": { - "$ref": "#/definitions/AccessorType" - }, - "Arn": { - "maxLength": 1011, - "minLength": 1, - "pattern": "^arn:.+:.+:.+:.+:.+$", - "type": "string" - }, - "BillingToken": { - "maxLength": 42, - "minLength": 42, - "type": "string" - }, - "CreationDate": { - "type": "string" - }, - "Id": { - "maxLength": 32, - "minLength": 1, - "type": "string" - }, - "NetworkType": { - "$ref": "#/definitions/NetworkAccessorType" - }, - "Status": { - "$ref": "#/definitions/AccessorStatus" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id", - "/properties/BillingToken", - "/properties/CreationDate", - "/properties/Status" - ], - "required": [ - "AccessorType" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ManagedBlockchain::Accessor", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/Arn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AccessorType", + "/properties/NetworkType" + ], + "definitions": { + "AccessorStatus": { + "enum": [ + "AVAILABLE", + "PENDING_DELETION", + "DELETED" + ], + "type": "string" + }, + "AccessorType": { + "enum": [ + "BILLING_TOKEN" + ], + "type": "string" + }, + "NetworkAccessorType": { + "enum": [ + "ETHEREUM_GOERLI", + "ETHEREUM_MAINNET", + "ETHEREUM_MAINNET_AND_GOERLI", + "POLYGON_MAINNET", + "POLYGON_MUMBAI" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::ManagedBlockchain::com.amazonaws.taiga.webservice.api#Accessor Resource Type", + "handlers": { + "create": { + "permissions": [ + "managedblockchain:CreateAccessor", + "managedblockchain:TagResource", + "managedblockchain:GetAccessor" + ] + }, + "delete": { + "permissions": [ + "managedblockchain:DeleteAccessor" + ] + }, + "list": { + "permissions": [ + "managedblockchain:ListAccessors" + ] + }, + "read": { + "permissions": [ + "managedblockchain:GetAccessor" + ] + }, + "update": { + "permissions": [ + "managedblockchain:GetAccessor", + "managedblockchain:CreateAccessor", + "managedblockchain:TagResource", + "managedblockchain:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AccessorType": { + "$ref": "#/definitions/AccessorType" + }, + "Arn": { + "maxLength": 1011, + "minLength": 1, + "pattern": "^arn:.+:.+:.+:.+:.+$", + "type": "string" + }, + "BillingToken": { + "maxLength": 42, + "minLength": 42, + "type": "string" + }, + "CreationDate": { + "type": "string" + }, + "Id": { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + "NetworkType": { + "$ref": "#/definitions/NetworkAccessorType" + }, + "Status": { + "$ref": "#/definitions/AccessorStatus" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/BillingToken", + "/properties/CreationDate", + "/properties/Status" + ], + "required": [ + "AccessorType" + ], + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ManagedBlockchain::Accessor", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/schema/aws-managedblockchain-member.json b/src/schema/aws-managedblockchain-member.json index 5cb399ca..ca2d439f 100644 --- a/src/schema/aws-managedblockchain-member.json +++ b/src/schema/aws-managedblockchain-member.json @@ -1,151 +1,151 @@ -{ - "additionalProperties": false, - "definitions": { - "ApprovalThresholdPolicy": { - "additionalProperties": false, - "properties": { - "ProposalDurationInHours": { - "type": "integer" - }, - "ThresholdComparator": { - "type": "string" - }, - "ThresholdPercentage": { - "type": "integer" - } - }, - "type": "object" - }, - "MemberConfiguration": { - "additionalProperties": false, - "properties": { - "Description": { - "type": "string" - }, - "MemberFrameworkConfiguration": { - "$ref": "#/definitions/MemberFrameworkConfiguration" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "MemberFabricConfiguration": { - "additionalProperties": false, - "properties": { - "AdminPassword": { - "type": "string" - }, - "AdminUsername": { - "type": "string" - } - }, - "required": [ - "AdminUsername", - "AdminPassword" - ], - "type": "object" - }, - "MemberFrameworkConfiguration": { - "additionalProperties": false, - "properties": { - "MemberFabricConfiguration": { - "$ref": "#/definitions/MemberFabricConfiguration" - } - }, - "type": "object" - }, - "NetworkConfiguration": { - "additionalProperties": false, - "properties": { - "Description": { - "type": "string" - }, - "Framework": { - "type": "string" - }, - "FrameworkVersion": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "NetworkFrameworkConfiguration": { - "$ref": "#/definitions/NetworkFrameworkConfiguration" - }, - "VotingPolicy": { - "$ref": "#/definitions/VotingPolicy" - } - }, - "required": [ - "VotingPolicy", - "Framework", - "FrameworkVersion", - "Name" - ], - "type": "object" - }, - "NetworkFabricConfiguration": { - "additionalProperties": false, - "properties": { - "Edition": { - "type": "string" - } - }, - "required": [ - "Edition" - ], - "type": "object" - }, - "NetworkFrameworkConfiguration": { - "additionalProperties": false, - "properties": { - "NetworkFabricConfiguration": { - "$ref": "#/definitions/NetworkFabricConfiguration" - } - }, - "type": "object" - }, - "VotingPolicy": { - "additionalProperties": false, - "properties": { - "ApprovalThresholdPolicy": { - "$ref": "#/definitions/ApprovalThresholdPolicy" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ManagedBlockchain::Member", - "primaryIdentifier": [ - "/properties/MemberId" - ], - "properties": { - "InvitationId": { - "type": "string" - }, - "MemberConfiguration": { - "$ref": "#/definitions/MemberConfiguration" - }, - "MemberId": { - "type": "string" - }, - "NetworkConfiguration": { - "$ref": "#/definitions/NetworkConfiguration" - }, - "NetworkId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/MemberId" - ], - "required": [ - "MemberConfiguration" - ], - "typeName": "AWS::ManagedBlockchain::Member" -} +{ + "additionalProperties": false, + "definitions": { + "ApprovalThresholdPolicy": { + "additionalProperties": false, + "properties": { + "ProposalDurationInHours": { + "type": "integer" + }, + "ThresholdComparator": { + "type": "string" + }, + "ThresholdPercentage": { + "type": "integer" + } + }, + "type": "object" + }, + "MemberConfiguration": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "MemberFrameworkConfiguration": { + "$ref": "#/definitions/MemberFrameworkConfiguration" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "MemberFabricConfiguration": { + "additionalProperties": false, + "properties": { + "AdminPassword": { + "type": "string" + }, + "AdminUsername": { + "type": "string" + } + }, + "required": [ + "AdminUsername", + "AdminPassword" + ], + "type": "object" + }, + "MemberFrameworkConfiguration": { + "additionalProperties": false, + "properties": { + "MemberFabricConfiguration": { + "$ref": "#/definitions/MemberFabricConfiguration" + } + }, + "type": "object" + }, + "NetworkConfiguration": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "Framework": { + "type": "string" + }, + "FrameworkVersion": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "NetworkFrameworkConfiguration": { + "$ref": "#/definitions/NetworkFrameworkConfiguration" + }, + "VotingPolicy": { + "$ref": "#/definitions/VotingPolicy" + } + }, + "required": [ + "VotingPolicy", + "Framework", + "FrameworkVersion", + "Name" + ], + "type": "object" + }, + "NetworkFabricConfiguration": { + "additionalProperties": false, + "properties": { + "Edition": { + "type": "string" + } + }, + "required": [ + "Edition" + ], + "type": "object" + }, + "NetworkFrameworkConfiguration": { + "additionalProperties": false, + "properties": { + "NetworkFabricConfiguration": { + "$ref": "#/definitions/NetworkFabricConfiguration" + } + }, + "type": "object" + }, + "VotingPolicy": { + "additionalProperties": false, + "properties": { + "ApprovalThresholdPolicy": { + "$ref": "#/definitions/ApprovalThresholdPolicy" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ManagedBlockchain::Member", + "primaryIdentifier": [ + "/properties/MemberId" + ], + "properties": { + "InvitationId": { + "type": "string" + }, + "MemberConfiguration": { + "$ref": "#/definitions/MemberConfiguration" + }, + "MemberId": { + "type": "string" + }, + "NetworkConfiguration": { + "$ref": "#/definitions/NetworkConfiguration" + }, + "NetworkId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/MemberId" + ], + "required": [ + "MemberConfiguration" + ], + "typeName": "AWS::ManagedBlockchain::Member" +} diff --git a/src/schema/aws-managedblockchain-node.json b/src/schema/aws-managedblockchain-node.json index 8857c6c8..a263d064 100644 --- a/src/schema/aws-managedblockchain-node.json +++ b/src/schema/aws-managedblockchain-node.json @@ -1,51 +1,51 @@ -{ - "additionalProperties": false, - "definitions": { - "NodeConfiguration": { - "additionalProperties": false, - "properties": { - "AvailabilityZone": { - "type": "string" - }, - "InstanceType": { - "type": "string" - } - }, - "required": [ - "AvailabilityZone", - "InstanceType" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ManagedBlockchain::Node", - "primaryIdentifier": [ - "/properties/NodeId" - ], - "properties": { - "Arn": { - "type": "string" - }, - "MemberId": { - "type": "string" - }, - "NetworkId": { - "type": "string" - }, - "NodeConfiguration": { - "$ref": "#/definitions/NodeConfiguration" - }, - "NodeId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/NodeId", - "/properties/Arn" - ], - "required": [ - "NetworkId", - "NodeConfiguration" - ], - "typeName": "AWS::ManagedBlockchain::Node" -} +{ + "additionalProperties": false, + "definitions": { + "NodeConfiguration": { + "additionalProperties": false, + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "InstanceType": { + "type": "string" + } + }, + "required": [ + "AvailabilityZone", + "InstanceType" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ManagedBlockchain::Node", + "primaryIdentifier": [ + "/properties/NodeId" + ], + "properties": { + "Arn": { + "type": "string" + }, + "MemberId": { + "type": "string" + }, + "NetworkId": { + "type": "string" + }, + "NodeConfiguration": { + "$ref": "#/definitions/NodeConfiguration" + }, + "NodeId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/NodeId", + "/properties/Arn" + ], + "required": [ + "NetworkId", + "NodeConfiguration" + ], + "typeName": "AWS::ManagedBlockchain::Node" +} diff --git a/src/schema/aws-mediaconnect-bridge.json b/src/schema/aws-mediaconnect-bridge.json index ee870592..5964eec1 100644 --- a/src/schema/aws-mediaconnect-bridge.json +++ b/src/schema/aws-mediaconnect-bridge.json @@ -1,331 +1,350 @@ -{ - "additionalProperties": false, - "definitions": { - "BridgeFlowSource": { - "additionalProperties": false, - "description": "The source of the bridge. A flow source originates in MediaConnect as an existing cloud flow.", - "properties": { - "FlowArn": { - "description": "The ARN of the cloud flow used as a source of this bridge.", - "type": "string" - }, - "FlowVpcInterfaceAttachment": { - "$ref": "#/definitions/VpcInterfaceAttachment", - "description": "The name of the VPC interface attachment to use for this source." - }, - "Name": { - "description": "The name of the flow source.", - "type": "string" - } - }, - "required": [ - "Name", - "FlowArn" - ], - "type": "object" - }, - "BridgeNetworkOutput": { - "additionalProperties": false, - "description": "The output of the bridge. A network output is delivered to your premises.", - "properties": { - "IpAddress": { - "description": "The network output IP Address.", - "type": "string" - }, - "Name": { - "description": "The network output name.", - "type": "string" - }, - "NetworkName": { - "description": "The network output's gateway network name.", - "type": "string" - }, - "Port": { - "description": "The network output port.", - "type": "integer" - }, - "Protocol": { - "$ref": "#/definitions/ProtocolEnum", - "description": "The network output protocol." - }, - "Ttl": { - "description": "The network output TTL.", - "type": "integer" - } - }, - "required": [ - "Name", - "Protocol", - "IpAddress", - "Port", - "NetworkName", - "Ttl" - ], - "type": "object" - }, - "BridgeNetworkSource": { - "additionalProperties": false, - "description": "The source of the bridge. A network source originates at your premises.", - "properties": { - "MulticastIp": { - "description": "The network source multicast IP.", - "type": "string" - }, - "Name": { - "description": "The name of the network source.", - "type": "string" - }, - "NetworkName": { - "description": "The network source's gateway network name.", - "type": "string" - }, - "Port": { - "description": "The network source port.", - "type": "integer" - }, - "Protocol": { - "$ref": "#/definitions/ProtocolEnum", - "description": "The network source protocol." - } - }, - "required": [ - "Name", - "Protocol", - "MulticastIp", - "Port", - "NetworkName" - ], - "type": "object" - }, - "BridgeOutput": { - "additionalProperties": false, - "description": "The output of the bridge.", - "properties": { - "NetworkOutput": { - "$ref": "#/definitions/BridgeNetworkOutput" - } - }, - "type": "object" - }, - "BridgeSource": { - "additionalProperties": false, - "description": "The bridge's source.", - "properties": { - "FlowSource": { - "$ref": "#/definitions/BridgeFlowSource" - }, - "NetworkSource": { - "$ref": "#/definitions/BridgeNetworkSource" - } - }, - "type": "object" - }, - "BridgeStateEnum": { - "enum": [ - "CREATING", - "STANDBY", - "STARTING", - "DEPLOYING", - "ACTIVE", - "STOPPING", - "DELETING", - "DELETED", - "START_FAILED", - "START_PENDING", - "UPDATING" - ], - "type": "string" - }, - "EgressGatewayBridge": { - "additionalProperties": false, - "properties": { - "MaxBitrate": { - "description": "The maximum expected bitrate of the egress bridge.", - "type": "integer" - } - }, - "required": [ - "MaxBitrate" - ], - "type": "object" - }, - "FailoverConfig": { - "additionalProperties": false, - "description": "The settings for source failover.", - "properties": { - "FailoverMode": { - "$ref": "#/definitions/FailoverModeEnum", - "description": "The type of failover you choose for this flow. FAILOVER allows switching between different streams." - }, - "SourcePriority": { - "$ref": "#/definitions/SourcePriority", - "description": "The priority you want to assign to a source. You can have a primary stream and a backup stream or two equally prioritized streams." - }, - "State": { - "$ref": "#/definitions/FailoverConfigStateEnum" - } - }, - "required": [ - "FailoverMode" - ], - "type": "object" - }, - "FailoverConfigStateEnum": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "FailoverModeEnum": { - "enum": [ - "FAILOVER" - ], - "type": "string" - }, - "IngressGatewayBridge": { - "additionalProperties": false, - "properties": { - "MaxBitrate": { - "description": "The maximum expected bitrate of the ingress bridge.", - "type": "integer" - }, - "MaxOutputs": { - "description": "The maximum number of outputs on the ingress bridge.", - "type": "integer" - } - }, - "required": [ - "MaxBitrate", - "MaxOutputs" - ], - "type": "object" - }, - "ProtocolEnum": { - "enum": [ - "rtp-fec", - "rtp", - "udp" - ], - "type": "string" - }, - "SourcePriority": { - "additionalProperties": false, - "description": "The priority you want to assign to a source. You can have a primary stream and a backup stream or two equally prioritized streams.", - "properties": { - "PrimarySource": { - "description": "The name of the source you choose as the primary source for this flow.", - "type": "string" - } - }, - "type": "object" - }, - "VpcInterfaceAttachment": { - "additionalProperties": false, - "description": "The settings for attaching a VPC interface to an resource.", - "properties": { - "VpcInterfaceName": { - "description": "The name of the VPC interface to use for this resource.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::MediaConnect::Bridge", - "handlers": { - "create": { - "permissions": [ - "mediaconnect:CreateBridge", - "mediaconnect:DescribeBridge" - ] - }, - "delete": { - "permissions": [ - "mediaconnect:DescribeBridge", - "mediaconnect:DeleteBridge" - ] - }, - "list": { - "permissions": [ - "mediaconnect:ListBridges" - ] - }, - "read": { - "permissions": [ - "mediaconnect:DescribeBridge" - ] - }, - "update": { - "permissions": [ - "mediaconnect:DescribeBridge", - "mediaconnect:UpdateBridge" - ] - } - }, - "primaryIdentifier": [ - "/properties/BridgeArn" - ], - "properties": { - "BridgeArn": { - "description": "The Amazon Resource Number (ARN) of the bridge.", - "type": "string" - }, - "BridgeState": { - "$ref": "#/definitions/BridgeStateEnum" - }, - "EgressGatewayBridge": { - "$ref": "#/definitions/EgressGatewayBridge", - "type": "object" - }, - "IngressGatewayBridge": { - "$ref": "#/definitions/IngressGatewayBridge", - "type": "object" - }, - "Name": { - "description": "The name of the bridge.", - "type": "string" - }, - "Outputs": { - "description": "The outputs on this bridge.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/BridgeOutput" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "PlacementArn": { - "description": "The placement Amazon Resource Number (ARN) of the bridge.", - "type": "string" - }, - "SourceFailoverConfig": { - "$ref": "#/definitions/FailoverConfig" - }, - "Sources": { - "description": "The sources on this bridge.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/BridgeSource" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/BridgeArn", - "/properties/BridgeState" - ], - "required": [ - "Name", - "PlacementArn", - "Sources" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::MediaConnect::Bridge" -} +{ + "additionalProperties": false, + "definitions": { + "BridgeFlowSource": { + "additionalProperties": false, + "description": "The source of the bridge. A flow source originates in MediaConnect as an existing cloud flow.", + "properties": { + "FlowArn": { + "description": "The ARN of the cloud flow used as a source of this bridge.", + "type": "string" + }, + "FlowVpcInterfaceAttachment": { + "$ref": "#/definitions/VpcInterfaceAttachment", + "description": "The name of the VPC interface attachment to use for this source." + }, + "Name": { + "description": "The name of the flow source.", + "type": "string" + } + }, + "required": [ + "Name", + "FlowArn" + ], + "type": "object" + }, + "BridgeNetworkOutput": { + "additionalProperties": false, + "description": "The output of the bridge. A network output is delivered to your premises.", + "properties": { + "IpAddress": { + "description": "The network output IP Address.", + "type": "string" + }, + "Name": { + "description": "The network output name.", + "type": "string" + }, + "NetworkName": { + "description": "The network output's gateway network name.", + "type": "string" + }, + "Port": { + "description": "The network output port.", + "type": "integer" + }, + "Protocol": { + "$ref": "#/definitions/ProtocolEnum", + "description": "The network output protocol." + }, + "Ttl": { + "description": "The network output TTL.", + "type": "integer" + } + }, + "required": [ + "Name", + "Protocol", + "IpAddress", + "Port", + "NetworkName", + "Ttl" + ], + "type": "object" + }, + "BridgeNetworkSource": { + "additionalProperties": false, + "description": "The source of the bridge. A network source originates at your premises.", + "properties": { + "MulticastIp": { + "description": "The network source multicast IP.", + "type": "string" + }, + "MulticastSourceSettings": { + "$ref": "#/definitions/MulticastSourceSettings", + "description": "The settings related to the multicast source." + }, + "Name": { + "description": "The name of the network source.", + "type": "string" + }, + "NetworkName": { + "description": "The network source's gateway network name.", + "type": "string" + }, + "Port": { + "description": "The network source port.", + "type": "integer" + }, + "Protocol": { + "$ref": "#/definitions/ProtocolEnum", + "description": "The network source protocol." + } + }, + "required": [ + "Name", + "Protocol", + "MulticastIp", + "Port", + "NetworkName" + ], + "type": "object" + }, + "BridgeOutput": { + "additionalProperties": false, + "description": "The output of the bridge.", + "properties": { + "NetworkOutput": { + "$ref": "#/definitions/BridgeNetworkOutput" + } + }, + "type": "object" + }, + "BridgeSource": { + "additionalProperties": false, + "description": "The bridge's source.", + "properties": { + "FlowSource": { + "$ref": "#/definitions/BridgeFlowSource" + }, + "NetworkSource": { + "$ref": "#/definitions/BridgeNetworkSource" + } + }, + "type": "object" + }, + "BridgeStateEnum": { + "enum": [ + "CREATING", + "STANDBY", + "STARTING", + "DEPLOYING", + "ACTIVE", + "STOPPING", + "DELETING", + "DELETED", + "START_FAILED", + "START_PENDING", + "UPDATING" + ], + "type": "string" + }, + "EgressGatewayBridge": { + "additionalProperties": false, + "properties": { + "MaxBitrate": { + "description": "The maximum expected bitrate of the egress bridge.", + "type": "integer" + } + }, + "required": [ + "MaxBitrate" + ], + "type": "object" + }, + "FailoverConfig": { + "additionalProperties": false, + "description": "The settings for source failover.", + "properties": { + "FailoverMode": { + "$ref": "#/definitions/FailoverModeEnum", + "description": "The type of failover you choose for this flow. FAILOVER allows switching between different streams." + }, + "SourcePriority": { + "$ref": "#/definitions/SourcePriority", + "description": "The priority you want to assign to a source. You can have a primary stream and a backup stream or two equally prioritized streams." + }, + "State": { + "$ref": "#/definitions/FailoverConfigStateEnum" + } + }, + "required": [ + "FailoverMode" + ], + "type": "object" + }, + "FailoverConfigStateEnum": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "FailoverModeEnum": { + "enum": [ + "FAILOVER" + ], + "type": "string" + }, + "IngressGatewayBridge": { + "additionalProperties": false, + "properties": { + "MaxBitrate": { + "description": "The maximum expected bitrate of the ingress bridge.", + "type": "integer" + }, + "MaxOutputs": { + "description": "The maximum number of outputs on the ingress bridge.", + "type": "integer" + } + }, + "required": [ + "MaxBitrate", + "MaxOutputs" + ], + "type": "object" + }, + "MulticastSourceSettings": { + "additionalProperties": false, + "description": "The settings related to the multicast source.", + "properties": { + "MulticastSourceIp": { + "description": "The IP address of the source for source-specific multicast (SSM).", + "type": "string" + } + }, + "type": "object" + }, + "ProtocolEnum": { + "enum": [ + "rtp-fec", + "rtp", + "udp" + ], + "type": "string" + }, + "SourcePriority": { + "additionalProperties": false, + "description": "The priority you want to assign to a source. You can have a primary stream and a backup stream or two equally prioritized streams.", + "properties": { + "PrimarySource": { + "description": "The name of the source you choose as the primary source for this flow.", + "type": "string" + } + }, + "type": "object" + }, + "VpcInterfaceAttachment": { + "additionalProperties": false, + "description": "The settings for attaching a VPC interface to an resource.", + "properties": { + "VpcInterfaceName": { + "description": "The name of the VPC interface to use for this resource.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::MediaConnect::Bridge", + "handlers": { + "create": { + "permissions": [ + "mediaconnect:CreateBridge", + "mediaconnect:DescribeBridge", + "mediaconnect:AddBridgeOutputs", + "mediaconnect:AddBridgeSources" + ] + }, + "delete": { + "permissions": [ + "mediaconnect:DescribeBridge", + "mediaconnect:DeleteBridge", + "mediaconnect:RemoveBridgeOutput", + "mediaconnect:RemoveBridgeSource" + ] + }, + "list": { + "permissions": [ + "mediaconnect:ListBridges" + ] + }, + "read": { + "permissions": [ + "mediaconnect:DescribeBridge" + ] + }, + "update": { + "permissions": [ + "mediaconnect:DescribeBridge", + "mediaconnect:UpdateBridge" + ] + } + }, + "primaryIdentifier": [ + "/properties/BridgeArn" + ], + "properties": { + "BridgeArn": { + "description": "The Amazon Resource Number (ARN) of the bridge.", + "type": "string" + }, + "BridgeState": { + "$ref": "#/definitions/BridgeStateEnum" + }, + "EgressGatewayBridge": { + "$ref": "#/definitions/EgressGatewayBridge", + "type": "object" + }, + "IngressGatewayBridge": { + "$ref": "#/definitions/IngressGatewayBridge", + "type": "object" + }, + "Name": { + "description": "The name of the bridge.", + "type": "string" + }, + "Outputs": { + "description": "The outputs on this bridge.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/BridgeOutput" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "PlacementArn": { + "description": "The placement Amazon Resource Number (ARN) of the bridge.", + "type": "string" + }, + "SourceFailoverConfig": { + "$ref": "#/definitions/FailoverConfig" + }, + "Sources": { + "description": "The sources on this bridge.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/BridgeSource" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/BridgeArn", + "/properties/BridgeState" + ], + "required": [ + "Name", + "PlacementArn", + "Sources" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::MediaConnect::Bridge" +} diff --git a/src/schema/aws-mediaconnect-bridgeoutput.json b/src/schema/aws-mediaconnect-bridgeoutput.json index c7beee2b..66091942 100644 --- a/src/schema/aws-mediaconnect-bridgeoutput.json +++ b/src/schema/aws-mediaconnect-bridgeoutput.json @@ -1,104 +1,104 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/BridgeArn", - "/properties/Name" - ], - "definitions": { - "BridgeNetworkOutput": { - "additionalProperties": false, - "description": "The output of the bridge. A network output is delivered to your premises.", - "properties": { - "IpAddress": { - "description": "The network output IP Address.", - "type": "string" - }, - "NetworkName": { - "description": "The network output's gateway network name.", - "type": "string" - }, - "Port": { - "description": "The network output port.", - "type": "integer" - }, - "Protocol": { - "description": "The network output protocol.", - "enum": [ - "rtp-fec", - "rtp", - "udp" - ], - "type": "string" - }, - "Ttl": { - "description": "The network output TTL.", - "type": "integer" - } - }, - "required": [ - "Protocol", - "IpAddress", - "Port", - "NetworkName", - "Ttl" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::MediaConnect::BridgeOutput", - "handlers": { - "create": { - "permissions": [ - "mediaconnect:AddBridgeOutputs", - "mediaconnect:DescribeBridge" - ] - }, - "delete": { - "permissions": [ - "mediaconnect:RemoveBridgeOutput" - ] - }, - "read": { - "permissions": [ - "mediaconnect:DescribeBridge" - ] - }, - "update": { - "permissions": [ - "mediaconnect:DescribeBridge", - "mediaconnect:UpdateBridgeOutput" - ] - } - }, - "primaryIdentifier": [ - "/properties/BridgeArn", - "/properties/Name" - ], - "properties": { - "BridgeArn": { - "description": "The Amazon Resource Number (ARN) of the bridge.", - "type": "string" - }, - "Name": { - "description": "The network output name.", - "type": "string" - }, - "NetworkOutput": { - "$ref": "#/definitions/BridgeNetworkOutput", - "description": "The output of the bridge." - } - }, - "propertyTransform": { - "/properties/Name": "$join([\"Output:\",Name])" - }, - "required": [ - "BridgeArn", - "Name", - "NetworkOutput" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::MediaConnect::BridgeOutput" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BridgeArn", + "/properties/Name" + ], + "definitions": { + "BridgeNetworkOutput": { + "additionalProperties": false, + "description": "The output of the bridge. A network output is delivered to your premises.", + "properties": { + "IpAddress": { + "description": "The network output IP Address.", + "type": "string" + }, + "NetworkName": { + "description": "The network output's gateway network name.", + "type": "string" + }, + "Port": { + "description": "The network output port.", + "type": "integer" + }, + "Protocol": { + "description": "The network output protocol.", + "enum": [ + "rtp-fec", + "rtp", + "udp" + ], + "type": "string" + }, + "Ttl": { + "description": "The network output TTL.", + "type": "integer" + } + }, + "required": [ + "Protocol", + "IpAddress", + "Port", + "NetworkName", + "Ttl" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::MediaConnect::BridgeOutput", + "handlers": { + "create": { + "permissions": [ + "mediaconnect:AddBridgeOutputs", + "mediaconnect:DescribeBridge" + ] + }, + "delete": { + "permissions": [ + "mediaconnect:RemoveBridgeOutput" + ] + }, + "read": { + "permissions": [ + "mediaconnect:DescribeBridge" + ] + }, + "update": { + "permissions": [ + "mediaconnect:DescribeBridge", + "mediaconnect:UpdateBridgeOutput" + ] + } + }, + "primaryIdentifier": [ + "/properties/BridgeArn", + "/properties/Name" + ], + "properties": { + "BridgeArn": { + "description": "The Amazon Resource Number (ARN) of the bridge.", + "type": "string" + }, + "Name": { + "description": "The network output name.", + "type": "string" + }, + "NetworkOutput": { + "$ref": "#/definitions/BridgeNetworkOutput", + "description": "The output of the bridge." + } + }, + "propertyTransform": { + "/properties/Name": "$join([\"Output:\",Name])" + }, + "required": [ + "BridgeArn", + "Name", + "NetworkOutput" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::MediaConnect::BridgeOutput" +} diff --git a/src/schema/aws-mediaconnect-bridgesource.json b/src/schema/aws-mediaconnect-bridgesource.json index 091892e6..4cee14fd 100644 --- a/src/schema/aws-mediaconnect-bridgesource.json +++ b/src/schema/aws-mediaconnect-bridgesource.json @@ -1,132 +1,147 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/BridgeArn", - "/properties/Name" - ], - "definitions": { - "BridgeFlowSource": { - "additionalProperties": false, - "description": "The source of the bridge. A flow source originates in MediaConnect as an existing cloud flow.", - "properties": { - "FlowArn": { - "description": "The ARN of the cloud flow used as a source of this bridge.", - "type": "string" - }, - "FlowVpcInterfaceAttachment": { - "$ref": "#/definitions/VpcInterfaceAttachment", - "description": "The name of the VPC interface attachment to use for this source." - } - }, - "required": [ - "FlowArn" - ], - "type": "object" - }, - "BridgeNetworkSource": { - "additionalProperties": false, - "description": "The source of the bridge. A network source originates at your premises.", - "properties": { - "MulticastIp": { - "description": "The network source multicast IP.", - "type": "string" - }, - "NetworkName": { - "description": "The network source's gateway network name.", - "type": "string" - }, - "Port": { - "description": "The network source port.", - "type": "integer" - }, - "Protocol": { - "$ref": "#/definitions/ProtocolEnum", - "description": "The network source protocol." - } - }, - "required": [ - "Protocol", - "MulticastIp", - "Port", - "NetworkName" - ], - "type": "object" - }, - "ProtocolEnum": { - "enum": [ - "rtp-fec", - "rtp", - "udp" - ], - "type": "string" - }, - "VpcInterfaceAttachment": { - "additionalProperties": false, - "description": "The settings for attaching a VPC interface to an resource.", - "properties": { - "VpcInterfaceName": { - "description": "The name of the VPC interface to use for this resource.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::MediaConnect::BridgeSource", - "handlers": { - "create": { - "permissions": [ - "mediaconnect:AddBridgeSources", - "mediaconnect:DescribeBridge" - ] - }, - "delete": { - "permissions": [ - "mediaconnect:RemoveBridgeSource" - ] - }, - "read": { - "permissions": [ - "mediaconnect:DescribeBridge" - ] - }, - "update": { - "permissions": [ - "mediaconnect:DescribeBridge", - "mediaconnect:UpdateBridgeSource" - ] - } - }, - "primaryIdentifier": [ - "/properties/BridgeArn", - "/properties/Name" - ], - "properties": { - "BridgeArn": { - "description": "The Amazon Resource Number (ARN) of the bridge.", - "type": "string" - }, - "FlowSource": { - "$ref": "#/definitions/BridgeFlowSource" - }, - "Name": { - "description": "The name of the source.", - "type": "string" - }, - "NetworkSource": { - "$ref": "#/definitions/BridgeNetworkSource" - } - }, - "propertyTransform": { - "/properties/Name": "$join([\"Source:\",Name])" - }, - "required": [ - "Name", - "BridgeArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::MediaConnect::BridgeSource" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BridgeArn", + "/properties/Name" + ], + "definitions": { + "BridgeFlowSource": { + "additionalProperties": false, + "description": "The source of the bridge. A flow source originates in MediaConnect as an existing cloud flow.", + "properties": { + "FlowArn": { + "description": "The ARN of the cloud flow used as a source of this bridge.", + "type": "string" + }, + "FlowVpcInterfaceAttachment": { + "$ref": "#/definitions/VpcInterfaceAttachment", + "description": "The name of the VPC interface attachment to use for this source." + } + }, + "required": [ + "FlowArn" + ], + "type": "object" + }, + "BridgeNetworkSource": { + "additionalProperties": false, + "description": "The source of the bridge. A network source originates at your premises.", + "properties": { + "MulticastIp": { + "description": "The network source multicast IP.", + "type": "string" + }, + "MulticastSourceSettings": { + "$ref": "#/definitions/MulticastSourceSettings", + "description": "The settings related to the multicast source." + }, + "NetworkName": { + "description": "The network source's gateway network name.", + "type": "string" + }, + "Port": { + "description": "The network source port.", + "type": "integer" + }, + "Protocol": { + "$ref": "#/definitions/ProtocolEnum", + "description": "The network source protocol." + } + }, + "required": [ + "Protocol", + "MulticastIp", + "Port", + "NetworkName" + ], + "type": "object" + }, + "MulticastSourceSettings": { + "additionalProperties": false, + "description": "The settings related to the multicast source.", + "properties": { + "MulticastSourceIp": { + "description": "The IP address of the source for source-specific multicast (SSM).", + "type": "string" + } + }, + "type": "object" + }, + "ProtocolEnum": { + "enum": [ + "rtp-fec", + "rtp", + "udp" + ], + "type": "string" + }, + "VpcInterfaceAttachment": { + "additionalProperties": false, + "description": "The settings for attaching a VPC interface to an resource.", + "properties": { + "VpcInterfaceName": { + "description": "The name of the VPC interface to use for this resource.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::MediaConnect::BridgeSource", + "handlers": { + "create": { + "permissions": [ + "mediaconnect:AddBridgeSources", + "mediaconnect:DescribeBridge" + ] + }, + "delete": { + "permissions": [ + "mediaconnect:RemoveBridgeSource" + ] + }, + "read": { + "permissions": [ + "mediaconnect:DescribeBridge" + ] + }, + "update": { + "permissions": [ + "mediaconnect:DescribeBridge", + "mediaconnect:UpdateBridgeSource" + ] + } + }, + "primaryIdentifier": [ + "/properties/BridgeArn", + "/properties/Name" + ], + "properties": { + "BridgeArn": { + "description": "The Amazon Resource Number (ARN) of the bridge.", + "type": "string" + }, + "FlowSource": { + "$ref": "#/definitions/BridgeFlowSource" + }, + "Name": { + "description": "The name of the source.", + "type": "string" + }, + "NetworkSource": { + "$ref": "#/definitions/BridgeNetworkSource" + } + }, + "propertyTransform": { + "/properties/Name": "$join([\"Source:\",Name])" + }, + "required": [ + "Name", + "BridgeArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::MediaConnect::BridgeSource" +} diff --git a/src/schema/aws-mediaconnect-flow.json b/src/schema/aws-mediaconnect-flow.json index 70f3a7af..b202c822 100644 --- a/src/schema/aws-mediaconnect-flow.json +++ b/src/schema/aws-mediaconnect-flow.json @@ -1,653 +1,827 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/AvailabilityZone", - "/properties/Source/Name" - ], - "definitions": { - "Encryption": { - "additionalProperties": false, - "description": "Information about the encryption of the flow.", - "properties": { - "Algorithm": { - "description": "The type of algorithm that is used for the encryption (such as aes128, aes192, or aes256).", - "enum": [ - "aes128", - "aes192", - "aes256" - ], - "type": "string" - }, - "ConstantInitializationVector": { - "description": "A 128-bit, 16-byte hex value represented by a 32-character string, to be used with the key for encrypting content. This parameter is not valid for static key encryption.", - "type": "string" - }, - "DeviceId": { - "description": "The value of one of the devices that you configured with your digital rights management (DRM) platform key provider. This parameter is required for SPEKE encryption and is not valid for static key encryption.", - "type": "string" - }, - "KeyType": { - "default": "static-key", - "description": "The type of key that is used for the encryption. If no keyType is provided, the service will use the default setting (static-key).", - "enum": [ - "speke", - "static-key", - "srt-password" - ], - "type": "string" - }, - "Region": { - "description": "The AWS Region that the API Gateway proxy endpoint was created in. This parameter is required for SPEKE encryption and is not valid for static key encryption.", - "type": "string" - }, - "ResourceId": { - "description": "An identifier for the content. The service sends this value to the key server to identify the current endpoint. The resource ID is also known as the content ID. This parameter is required for SPEKE encryption and is not valid for static key encryption.", - "type": "string" - }, - "RoleArn": { - "description": "The ARN of the role that you created during setup (when you set up AWS Elemental MediaConnect as a trusted entity).", - "type": "string" - }, - "SecretArn": { - "description": " The ARN of the secret that you created in AWS Secrets Manager to store the encryption key. This parameter is required for static key encryption and is not valid for SPEKE encryption.", - "type": "string" - }, - "Url": { - "description": "The URL from the API Gateway proxy that you set up to talk to your key server. This parameter is required for SPEKE encryption and is not valid for static key encryption.", - "type": "string" - } - }, - "required": [ - "RoleArn" - ], - "type": "object" - }, - "FailoverConfig": { - "additionalProperties": false, - "description": "The settings for source failover", - "properties": { - "FailoverMode": { - "description": "The type of failover you choose for this flow. MERGE combines the source streams into a single stream, allowing graceful recovery from any single-source loss. FAILOVER allows switching between different streams.", - "enum": [ - "MERGE", - "FAILOVER" - ], - "type": "string" - }, - "RecoveryWindow": { - "description": "Search window time to look for dash-7 packets", - "type": "integer" - }, - "SourcePriority": { - "additionalProperties": false, - "description": "The priority you want to assign to a source. You can have a primary stream and a backup stream or two equally prioritized streams.", - "properties": { - "PrimarySource": { - "description": "The name of the source you choose as the primary source for this flow.", - "type": "string" - } - }, - "required": [ - "PrimarySource" - ], - "type": "object" - }, - "State": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - } - }, - "type": "object" - }, - "Fmtp": { - "additionalProperties": false, - "description": "A set of parameters that define the media stream.", - "properties": { - "ChannelOrder": { - "description": "The format of the audio channel.", - "type": "string" - }, - "Colorimetry": { - "description": "The format used for the representation of color.", - "enum": [ - "BT601", - "BT709", - "BT2020", - "BT2100", - "ST2065-1", - "ST2065-3", - "XYZ" - ], - "type": "string" - }, - "ExactFramerate": { - "description": "The frame rate for the video stream, in frames/second. For example: 60000/1001.", - "type": "string" - }, - "Par": { - "description": "The pixel aspect ratio (PAR) of the video.", - "type": "string" - }, - "Range": { - "description": "The encoding range of the video.", - "enum": [ - "NARROW", - "FULL", - "FULLPROTECT" - ], - "type": "string" - }, - "ScanMode": { - "description": "The type of compression that was used to smooth the video's appearance.", - "enum": [ - "progressive", - "interlace", - "progressive-segmented-frame" - ], - "type": "string" - }, - "Tcs": { - "description": "The transfer characteristic system (TCS) that is used in the video.", - "enum": [ - "SDR", - "PQ", - "HLG", - "LINEAR", - "BT2100LINPQ", - "BT2100LINHLG", - "ST2065-1", - "ST428-1", - "DENSITY" - ], - "type": "string" - } - }, - "type": "object" - }, - "GatewayBridgeSource": { - "additionalProperties": false, - "description": "The source configuration for cloud flows receiving a stream from a bridge.", - "properties": { - "BridgeArn": { - "description": "The ARN of the bridge feeding this flow.", - "type": "string" - }, - "VpcInterfaceAttachment": { - "$ref": "#/definitions/VpcInterfaceAttachment", - "description": "The name of the VPC interface attachment to use for this bridge source." - } - }, - "required": [ - "BridgeArn" - ], - "type": "object" - }, - "InputConfiguration": { - "additionalProperties": false, - "description": "The transport parameters associated with an incoming media stream.", - "properties": { - "InputPort": { - "description": "The port that the flow listens on for an incoming media stream.", - "type": "integer" - }, - "Interface": { - "$ref": "#/definitions/Interface", - "description": "The VPC interface where the media stream comes in from." - } - }, - "required": [ - "InputPort", - "Interface" - ], - "type": "object" - }, - "Interface": { - "additionalProperties": false, - "description": "The VPC interface that you want to use for the media stream associated with the output.", - "properties": { - "Name": { - "description": "The name of the VPC interface that you want to use for the media stream associated with the output.", - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "Maintenance": { - "additionalProperties": false, - "description": "The maintenance setting of a flow.", - "properties": { - "MaintenanceDay": { - "description": "A day of a week when the maintenance will happen. Use Monday/Tuesday/Wednesday/Thursday/Friday/Saturday/Sunday.", - "enum": [ - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday", - "Sunday" - ], - "type": "string" - }, - "MaintenanceStartHour": { - "description": "UTC time when the maintenance will happen. Use 24-hour HH:MM format. Minutes must be 00. Example: 13:00. The default value is 02:00.", - "type": "string" - } - }, - "required": [ - "MaintenanceDay", - "MaintenanceStartHour" - ], - "type": "object" - }, - "MediaStream": { - "additionalProperties": false, - "description": "A single track or stream of media that contains video, audio, or ancillary data. After you add a media stream to a flow, you can associate it with sources and outputs on that flow, as long as they use the CDI protocol or the ST 2110 JPEG XS protocol. Each source or output can consist of one or many media streams.", - "properties": { - "Attributes": { - "$ref": "#/definitions/MediaStreamAttributes", - "description": "Attributes that are related to the media stream." - }, - "ClockRate": { - "description": "The sample rate for the stream. This value in measured in kHz.", - "type": "integer" - }, - "Description": { - "description": "A description that can help you quickly identify what your media stream is used for.", - "type": "string" - }, - "Fmt": { - "description": "The format type number (sometimes referred to as RTP payload type) of the media stream. MediaConnect assigns this value to the media stream. For ST 2110 JPEG XS outputs, you need to provide this value to the receiver.", - "type": "integer" - }, - "MediaStreamId": { - "description": "A unique identifier for the media stream.", - "type": "integer" - }, - "MediaStreamName": { - "description": "A name that helps you distinguish one media stream from another.", - "type": "string" - }, - "MediaStreamType": { - "description": "The type of media stream.", - "enum": [ - "video", - "audio", - "ancillary-data" - ], - "type": "string" - }, - "VideoFormat": { - "description": "The resolution of the video.", - "enum": [ - "2160p", - "1080p", - "1080i", - "720p", - "480p" - ], - "type": "string" - } - }, - "required": [ - "MediaStreamId", - "MediaStreamType", - "MediaStreamName" - ], - "type": "object" - }, - "MediaStreamAttributes": { - "additionalProperties": false, - "description": "Attributes that are related to the media stream.", - "properties": { - "Fmtp": { - "$ref": "#/definitions/Fmtp", - "description": "A set of parameters that define the media stream." - }, - "Lang": { - "description": "The audio language, in a format that is recognized by the receiver.", - "type": "string" - } - }, - "type": "object" - }, - "MediaStreamSourceConfiguration": { - "additionalProperties": false, - "description": "The media stream that is associated with the source, and the parameters for that association.", - "properties": { - "EncodingName": { - "description": "The format that was used to encode the data. For ancillary data streams, set the encoding name to smpte291. For audio streams, set the encoding name to pcm. For video, 2110 streams, set the encoding name to raw. For video, JPEG XS streams, set the encoding name to jxsv.", - "enum": [ - "jxsv", - "raw", - "smpte291", - "pcm" - ], - "type": "string" - }, - "InputConfigurations": { - "description": "The media streams that you want to associate with the source.", - "items": { - "$ref": "#/definitions/InputConfiguration" - }, - "type": "array" - }, - "MediaStreamName": { - "description": "A name that helps you distinguish one media stream from another.", - "type": "string" - } - }, - "required": [ - "EncodingName", - "MediaStreamName" - ], - "type": "object" - }, - "Source": { - "additionalProperties": false, - "description": "The settings for the source of the flow.", - "properties": { - "Decryption": { - "$ref": "#/definitions/Encryption", - "description": "The type of decryption that is used on the content ingested from this source." - }, - "Description": { - "description": "A description for the source. This value is not used or seen outside of the current AWS Elemental MediaConnect account.", - "type": "string" - }, - "EntitlementArn": { - "description": "The ARN of the entitlement that allows you to subscribe to content that comes from another AWS account. The entitlement is set by the content originator and the ARN is generated as part of the originator's flow.", - "type": "string" - }, - "GatewayBridgeSource": { - "$ref": "#/definitions/GatewayBridgeSource", - "description": "The source configuration for cloud flows receiving a stream from a bridge." - }, - "IngestIp": { - "description": "The IP address that the flow will be listening on for incoming content.", - "type": "string" - }, - "IngestPort": { - "description": "The port that the flow will be listening on for incoming content.", - "type": "integer" - }, - "MaxBitrate": { - "description": "The smoothing max bitrate for RIST, RTP, and RTP-FEC streams.", - "type": "integer" - }, - "MaxLatency": { - "description": "The maximum latency in milliseconds. This parameter applies only to RIST-based and Zixi-based streams.", - "type": "integer" - }, - "MaxSyncBuffer": { - "description": "The size of the buffer (in milliseconds) to use to sync incoming source data.", - "type": "integer" - }, - "MediaStreamSourceConfigurations": { - "description": "The media stream that is associated with the source, and the parameters for that association.", - "items": { - "$ref": "#/definitions/MediaStreamSourceConfiguration" - }, - "type": "array" - }, - "MinLatency": { - "description": "The minimum latency in milliseconds.", - "type": "integer" - }, - "Name": { - "description": "The name of the source.", - "type": "string" - }, - "Protocol": { - "description": "The protocol that is used by the source.", - "enum": [ - "zixi-push", - "rtp-fec", - "rtp", - "rist", - "fujitsu-qos", - "srt-listener", - "srt-caller", - "st2110-jpegxs", - "cdi" - ], - "type": "string" - }, - "SenderControlPort": { - "description": "The port that the flow uses to send outbound requests to initiate connection with the sender for fujitsu-qos protocol.", - "type": "integer" - }, - "SenderIpAddress": { - "description": "The IP address that the flow communicates with to initiate connection with the sender for fujitsu-qos protocol.", - "type": "string" - }, - "SourceArn": { - "description": "The ARN of the source.", - "type": "string" - }, - "SourceIngestPort": { - "description": "The port that the flow will be listening on for incoming content.(ReadOnly)", - "type": "string" - }, - "SourceListenerAddress": { - "description": "Source IP or domain name for SRT-caller protocol.", - "type": "string" - }, - "SourceListenerPort": { - "description": "Source port for SRT-caller protocol.", - "type": "integer" - }, - "StreamId": { - "description": "The stream ID that you want to use for this transport. This parameter applies only to Zixi-based streams.", - "type": "string" - }, - "VpcInterfaceName": { - "description": "The name of the VPC Interface this Source is configured with.", - "type": "string" - }, - "WhitelistCidr": { - "description": "The range of IP addresses that should be allowed to contribute content to your source. These IP addresses should be in the form of a Classless Inter-Domain Routing (CIDR) block; for example, 10.0.0.0/16.", - "type": "string" - } - }, - "type": "object" - }, - "SourceMonitoringConfig": { - "additionalProperties": false, - "description": "The settings for source monitoring.", - "properties": { - "ThumbnailState": { - "description": "The state of thumbnail monitoring.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - } - }, - "required": [ - "ThumbnailState" - ], - "type": "object" - }, - "VpcInterface": { - "additionalProperties": false, - "description": "The details of a VPC interface.", - "properties": { - "Name": { - "description": "Immutable and has to be a unique against other VpcInterfaces in this Flow.", - "type": "string" - }, - "NetworkInterfaceIds": { - "description": "IDs of the network interfaces created in customer's account by MediaConnect.", - "items": { - "type": "string" - }, - "type": "array" - }, - "NetworkInterfaceType": { - "description": "The type of network adapter that you want MediaConnect to use on this interface. If you don't set this value, it defaults to ENA.", - "enum": [ - "ena", - "efa" - ], - "type": "string" - }, - "RoleArn": { - "description": "Role Arn MediaConnect can assume to create ENIs in customer's account.", - "type": "string" - }, - "SecurityGroupIds": { - "description": "Security Group IDs to be used on ENI.", - "items": { - "type": "string" - }, - "type": "array" - }, - "SubnetId": { - "description": "Subnet must be in the AZ of the Flow", - "type": "string" - } - }, - "required": [ - "Name", - "RoleArn", - "SecurityGroupIds", - "SubnetId" - ], - "type": "object" - }, - "VpcInterfaceAttachment": { - "additionalProperties": false, - "description": "The settings for attaching a VPC interface to an resource.", - "properties": { - "VpcInterfaceName": { - "description": "The name of the VPC interface to use for this resource.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::MediaConnect::Flow", - "handlers": { - "create": { - "permissions": [ - "mediaconnect:CreateFlow", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "mediaconnect:DescribeFlow", - "mediaconnect:DeleteFlow" - ] - }, - "list": { - "permissions": [ - "mediaconnect:ListFlows" - ] - }, - "read": { - "permissions": [ - "mediaconnect:DescribeFlow" - ] - }, - "update": { - "permissions": [ - "mediaconnect:DescribeFlow", - "mediaconnect:UpdateFlow", - "mediaconnect:UpdateFlowSource", - "mediaconnect:UpdateFlowMediaStream", - "mediaconnect:AddFlowMediaStreams", - "mediaconnect:RemoveFlowMediaStream", - "mediaconnect:AddFlowVpcInterfaces", - "mediaconnect:RemoveFlowVpcInterface" - ] - } - }, - "primaryIdentifier": [ - "/properties/FlowArn" - ], - "properties": { - "AvailabilityZone": { - "description": "The Availability Zone that you want to create the flow in. These options are limited to the Availability Zones within the current AWS.", - "type": "string" - }, - "EgressIp": { - "description": "The IP address from which video will be sent to output destinations.", - "type": "string" - }, - "FlowArn": { - "description": "The Amazon Resource Name (ARN), a unique identifier for any AWS resource, of the flow.", - "type": "string" - }, - "FlowAvailabilityZone": { - "description": "The Availability Zone that you want to create the flow in. These options are limited to the Availability Zones within the current AWS.(ReadOnly)", - "type": "string" - }, - "Maintenance": { - "$ref": "#/definitions/Maintenance", - "description": "The maintenance settings you want to use for the flow." - }, - "MediaStreams": { - "description": "The media streams associated with the flow. You can associate any of these media streams with sources and outputs on the flow.", - "items": { - "$ref": "#/definitions/MediaStream" - }, - "type": "array" - }, - "Name": { - "description": "The name of the flow.", - "type": "string" - }, - "Source": { - "$ref": "#/definitions/Source", - "description": "The source of the flow." - }, - "SourceFailoverConfig": { - "$ref": "#/definitions/FailoverConfig", - "description": "The source failover config of the flow." - }, - "SourceMonitoringConfig": { - "$ref": "#/definitions/SourceMonitoringConfig", - "description": "The source monitoring config of the flow." - }, - "VpcInterfaces": { - "description": "The VPC interfaces that you added to this flow.", - "items": { - "$ref": "#/definitions/VpcInterface" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/FlowArn", - "/properties/FlowAvailabilityZone", - "/properties/Source/SourceArn", - "/properties/Source/IngestIp", - "/properties/Source/SourceIngestPort", - "/properties/VpcInterfaces/*/NetworkInterfaceIds", - "/properties/MediaStreams/*/Fmt", - "/properties/EgressIp" - ], - "required": [ - "Name", - "Source" - ], - "resourceLink": { - "mappings": { - "flowArn": "/FlowArn" - }, - "templateUri": "/mediaconnect/home?region=${awsRegion}#/flows/${flowArn}" - }, - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", - "typeName": "AWS::MediaConnect::Flow" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/AvailabilityZone", + "/properties/Source/Name" + ], + "definitions": { + "AudioMonitoringSetting": { + "additionalProperties": false, + "description": "Specifies the configuration for audio stream metrics monitoring.", + "properties": { + "SilentAudio": { + "$ref": "#/definitions/SilentAudio" + } + }, + "type": "object" + }, + "BlackFrames": { + "additionalProperties": false, + "description": "Configures settings for the BlackFrames metric.", + "properties": { + "State": { + "description": "Indicates whether the BlackFrames metric is enabled or disabled.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "ThresholdSeconds": { + "description": "Specifies the number of consecutive seconds of black frames that triggers an event or alert.", + "type": "integer" + } + }, + "type": "object" + }, + "Encryption": { + "additionalProperties": false, + "description": "Information about the encryption of the flow.", + "properties": { + "Algorithm": { + "description": "The type of algorithm that is used for the encryption (such as aes128, aes192, or aes256).", + "enum": [ + "aes128", + "aes192", + "aes256" + ], + "type": "string" + }, + "ConstantInitializationVector": { + "description": "A 128-bit, 16-byte hex value represented by a 32-character string, to be used with the key for encrypting content. This parameter is not valid for static key encryption.", + "type": "string" + }, + "DeviceId": { + "description": "The value of one of the devices that you configured with your digital rights management (DRM) platform key provider. This parameter is required for SPEKE encryption and is not valid for static key encryption.", + "type": "string" + }, + "KeyType": { + "default": "static-key", + "description": "The type of key that is used for the encryption. If no keyType is provided, the service will use the default setting (static-key).", + "enum": [ + "speke", + "static-key", + "srt-password" + ], + "type": "string" + }, + "Region": { + "description": "The AWS Region that the API Gateway proxy endpoint was created in. This parameter is required for SPEKE encryption and is not valid for static key encryption.", + "type": "string" + }, + "ResourceId": { + "description": "An identifier for the content. The service sends this value to the key server to identify the current endpoint. The resource ID is also known as the content ID. This parameter is required for SPEKE encryption and is not valid for static key encryption.", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the role that you created during setup (when you set up AWS Elemental MediaConnect as a trusted entity).", + "type": "string" + }, + "SecretArn": { + "description": " The ARN of the secret that you created in AWS Secrets Manager to store the encryption key. This parameter is required for static key encryption and is not valid for SPEKE encryption.", + "type": "string" + }, + "Url": { + "description": "The URL from the API Gateway proxy that you set up to talk to your key server. This parameter is required for SPEKE encryption and is not valid for static key encryption.", + "type": "string" + } + }, + "required": [ + "RoleArn" + ], + "type": "object" + }, + "FailoverConfig": { + "additionalProperties": false, + "description": "The settings for source failover", + "properties": { + "FailoverMode": { + "description": "The type of failover you choose for this flow. MERGE combines the source streams into a single stream, allowing graceful recovery from any single-source loss. FAILOVER allows switching between different streams.", + "enum": [ + "MERGE", + "FAILOVER" + ], + "type": "string" + }, + "RecoveryWindow": { + "description": "Search window time to look for dash-7 packets", + "type": "integer" + }, + "SourcePriority": { + "additionalProperties": false, + "description": "The priority you want to assign to a source. You can have a primary stream and a backup stream or two equally prioritized streams.", + "properties": { + "PrimarySource": { + "description": "The name of the source you choose as the primary source for this flow.", + "type": "string" + } + }, + "required": [ + "PrimarySource" + ], + "type": "object" + }, + "State": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + }, + "Fmtp": { + "additionalProperties": false, + "description": "A set of parameters that define the media stream.", + "properties": { + "ChannelOrder": { + "description": "The format of the audio channel.", + "type": "string" + }, + "Colorimetry": { + "description": "The format used for the representation of color.", + "enum": [ + "BT601", + "BT709", + "BT2020", + "BT2100", + "ST2065-1", + "ST2065-3", + "XYZ" + ], + "type": "string" + }, + "ExactFramerate": { + "description": "The frame rate for the video stream, in frames/second. For example: 60000/1001.", + "type": "string" + }, + "Par": { + "description": "The pixel aspect ratio (PAR) of the video.", + "type": "string" + }, + "Range": { + "description": "The encoding range of the video.", + "enum": [ + "NARROW", + "FULL", + "FULLPROTECT" + ], + "type": "string" + }, + "ScanMode": { + "description": "The type of compression that was used to smooth the video's appearance.", + "enum": [ + "progressive", + "interlace", + "progressive-segmented-frame" + ], + "type": "string" + }, + "Tcs": { + "description": "The transfer characteristic system (TCS) that is used in the video.", + "enum": [ + "SDR", + "PQ", + "HLG", + "LINEAR", + "BT2100LINPQ", + "BT2100LINHLG", + "ST2065-1", + "ST428-1", + "DENSITY" + ], + "type": "string" + } + }, + "type": "object" + }, + "FrozenFrames": { + "additionalProperties": false, + "description": "Configures settings for the FrozenFrames metric.", + "properties": { + "State": { + "description": "Indicates whether the FrozenFrames metric is enabled or disabled.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "ThresholdSeconds": { + "description": "Specifies the number of consecutive seconds of a static image that triggers an event or alert.", + "type": "integer" + } + }, + "type": "object" + }, + "GatewayBridgeSource": { + "additionalProperties": false, + "description": "The source configuration for cloud flows receiving a stream from a bridge.", + "properties": { + "BridgeArn": { + "description": "The ARN of the bridge feeding this flow.", + "type": "string" + }, + "VpcInterfaceAttachment": { + "$ref": "#/definitions/VpcInterfaceAttachment", + "description": "The name of the VPC interface attachment to use for this bridge source." + } + }, + "required": [ + "BridgeArn" + ], + "type": "object" + }, + "InputConfiguration": { + "additionalProperties": false, + "description": "The transport parameters associated with an incoming media stream.", + "properties": { + "InputPort": { + "description": "The port that the flow listens on for an incoming media stream.", + "type": "integer" + }, + "Interface": { + "$ref": "#/definitions/Interface", + "description": "The VPC interface where the media stream comes in from." + } + }, + "required": [ + "InputPort", + "Interface" + ], + "type": "object" + }, + "Interface": { + "additionalProperties": false, + "description": "The VPC interface that you want to use for the media stream associated with the output.", + "properties": { + "Name": { + "description": "The name of the VPC interface that you want to use for the media stream associated with the output.", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Maintenance": { + "additionalProperties": false, + "description": "The maintenance setting of a flow.", + "properties": { + "MaintenanceDay": { + "description": "A day of a week when the maintenance will happen. Use Monday/Tuesday/Wednesday/Thursday/Friday/Saturday/Sunday.", + "enum": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + ], + "type": "string" + }, + "MaintenanceStartHour": { + "description": "UTC time when the maintenance will happen. Use 24-hour HH:MM format. Minutes must be 00. Example: 13:00. The default value is 02:00.", + "type": "string" + } + }, + "required": [ + "MaintenanceDay", + "MaintenanceStartHour" + ], + "type": "object" + }, + "MediaStream": { + "additionalProperties": false, + "description": "A single track or stream of media that contains video, audio, or ancillary data. After you add a media stream to a flow, you can associate it with sources and outputs on that flow, as long as they use the CDI protocol or the ST 2110 JPEG XS protocol. Each source or output can consist of one or many media streams.", + "properties": { + "Attributes": { + "$ref": "#/definitions/MediaStreamAttributes", + "description": "Attributes that are related to the media stream." + }, + "ClockRate": { + "description": "The sample rate for the stream. This value in measured in kHz.", + "type": "integer" + }, + "Description": { + "description": "A description that can help you quickly identify what your media stream is used for.", + "type": "string" + }, + "Fmt": { + "description": "The format type number (sometimes referred to as RTP payload type) of the media stream. MediaConnect assigns this value to the media stream. For ST 2110 JPEG XS outputs, you need to provide this value to the receiver.", + "type": "integer" + }, + "MediaStreamId": { + "description": "A unique identifier for the media stream.", + "type": "integer" + }, + "MediaStreamName": { + "description": "A name that helps you distinguish one media stream from another.", + "type": "string" + }, + "MediaStreamType": { + "description": "The type of media stream.", + "enum": [ + "video", + "audio", + "ancillary-data" + ], + "type": "string" + }, + "VideoFormat": { + "description": "The resolution of the video.", + "enum": [ + "2160p", + "1080p", + "1080i", + "720p", + "480p" + ], + "type": "string" + } + }, + "required": [ + "MediaStreamId", + "MediaStreamType", + "MediaStreamName" + ], + "type": "object" + }, + "MediaStreamAttributes": { + "additionalProperties": false, + "description": "Attributes that are related to the media stream.", + "properties": { + "Fmtp": { + "$ref": "#/definitions/Fmtp", + "description": "A set of parameters that define the media stream." + }, + "Lang": { + "description": "The audio language, in a format that is recognized by the receiver.", + "type": "string" + } + }, + "type": "object" + }, + "MediaStreamSourceConfiguration": { + "additionalProperties": false, + "description": "The media stream that is associated with the source, and the parameters for that association.", + "properties": { + "EncodingName": { + "description": "The format that was used to encode the data. For ancillary data streams, set the encoding name to smpte291. For audio streams, set the encoding name to pcm. For video, 2110 streams, set the encoding name to raw. For video, JPEG XS streams, set the encoding name to jxsv.", + "enum": [ + "jxsv", + "raw", + "smpte291", + "pcm" + ], + "type": "string" + }, + "InputConfigurations": { + "description": "The media streams that you want to associate with the source.", + "items": { + "$ref": "#/definitions/InputConfiguration" + }, + "type": "array" + }, + "MediaStreamName": { + "description": "A name that helps you distinguish one media stream from another.", + "type": "string" + } + }, + "required": [ + "EncodingName", + "MediaStreamName" + ], + "type": "object" + }, + "NdiConfig": { + "additionalProperties": false, + "description": "Specifies the configuration settings for NDI outputs. Required when the flow includes NDI outputs.", + "properties": { + "MachineName": { + "description": "A prefix for the names of the NDI sources that the flow creates. If a custom name isn't specified, MediaConnect generates a unique 12-character ID as the prefix.", + "type": "string" + }, + "NdiDiscoveryServers": { + "description": "A list of up to three NDI discovery server configurations. While not required by the API, this configuration is necessary for NDI functionality to work properly.", + "items": { + "$ref": "#/definitions/NdiDiscoveryServerConfig" + }, + "type": "array" + }, + "NdiState": { + "description": "A setting that controls whether NDI outputs can be used in the flow. Must be ENABLED to add NDI outputs. Default is DISABLED.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + }, + "NdiDiscoveryServerConfig": { + "additionalProperties": false, + "description": "Specifies the configuration settings for individual NDI discovery servers. A maximum of 3 servers is allowed.", + "properties": { + "DiscoveryServerAddress": { + "description": "The unique network address of the NDI discovery server.", + "type": "string" + }, + "DiscoveryServerPort": { + "description": "The port for the NDI discovery server. Defaults to 5959 if a custom port isn't specified.", + "format": "int32", + "type": "integer" + }, + "VpcInterfaceAdapter": { + "description": "The identifier for the Virtual Private Cloud (VPC) network interface used by the flow.", + "type": "string" + } + }, + "required": [ + "DiscoveryServerAddress", + "VpcInterfaceAdapter" + ], + "type": "object" + }, + "SilentAudio": { + "additionalProperties": false, + "description": "Configures settings for the SilentAudio metric.", + "properties": { + "State": { + "description": "Indicates whether the SilentAudio metric is enabled or disabled.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "ThresholdSeconds": { + "description": "Specifies the number of consecutive seconds of silence that triggers an event or alert.", + "type": "integer" + } + }, + "type": "object" + }, + "Source": { + "additionalProperties": false, + "description": "The settings for the source of the flow.", + "properties": { + "Decryption": { + "$ref": "#/definitions/Encryption", + "description": "The type of decryption that is used on the content ingested from this source." + }, + "Description": { + "description": "A description for the source. This value is not used or seen outside of the current AWS Elemental MediaConnect account.", + "type": "string" + }, + "EntitlementArn": { + "description": "The ARN of the entitlement that allows you to subscribe to content that comes from another AWS account. The entitlement is set by the content originator and the ARN is generated as part of the originator's flow.", + "type": "string" + }, + "GatewayBridgeSource": { + "$ref": "#/definitions/GatewayBridgeSource", + "description": "The source configuration for cloud flows receiving a stream from a bridge." + }, + "IngestIp": { + "description": "The IP address that the flow will be listening on for incoming content.", + "type": "string" + }, + "IngestPort": { + "description": "The port that the flow will be listening on for incoming content.", + "type": "integer" + }, + "MaxBitrate": { + "description": "The smoothing max bitrate for RIST, RTP, and RTP-FEC streams.", + "type": "integer" + }, + "MaxLatency": { + "description": "The maximum latency in milliseconds. This parameter applies only to RIST-based and Zixi-based streams.", + "type": "integer" + }, + "MaxSyncBuffer": { + "description": "The size of the buffer (in milliseconds) to use to sync incoming source data.", + "type": "integer" + }, + "MediaStreamSourceConfigurations": { + "description": "The media stream that is associated with the source, and the parameters for that association.", + "items": { + "$ref": "#/definitions/MediaStreamSourceConfiguration" + }, + "type": "array" + }, + "MinLatency": { + "description": "The minimum latency in milliseconds.", + "type": "integer" + }, + "Name": { + "description": "The name of the source.", + "type": "string" + }, + "Protocol": { + "description": "The protocol that is used by the source.", + "enum": [ + "zixi-push", + "rtp-fec", + "rtp", + "rist", + "fujitsu-qos", + "srt-listener", + "srt-caller", + "st2110-jpegxs", + "cdi" + ], + "type": "string" + }, + "SenderControlPort": { + "description": "The port that the flow uses to send outbound requests to initiate connection with the sender for fujitsu-qos protocol.", + "type": "integer" + }, + "SenderIpAddress": { + "description": "The IP address that the flow communicates with to initiate connection with the sender for fujitsu-qos protocol.", + "type": "string" + }, + "SourceArn": { + "description": "The ARN of the source.", + "type": "string" + }, + "SourceIngestPort": { + "description": "The port that the flow will be listening on for incoming content.(ReadOnly)", + "type": "string" + }, + "SourceListenerAddress": { + "description": "Source IP or domain name for SRT-caller protocol.", + "type": "string" + }, + "SourceListenerPort": { + "description": "Source port for SRT-caller protocol.", + "type": "integer" + }, + "StreamId": { + "description": "The stream ID that you want to use for this transport. This parameter applies only to Zixi-based streams.", + "type": "string" + }, + "VpcInterfaceName": { + "description": "The name of the VPC Interface this Source is configured with.", + "type": "string" + }, + "WhitelistCidr": { + "description": "The range of IP addresses that should be allowed to contribute content to your source. These IP addresses should be in the form of a Classless Inter-Domain Routing (CIDR) block; for example, 10.0.0.0/16.", + "type": "string" + } + }, + "type": "object" + }, + "SourceMonitoringConfig": { + "additionalProperties": false, + "description": "The settings for source monitoring.", + "properties": { + "AudioMonitoringSettings": { + "description": "Contains the settings for audio stream metrics monitoring.", + "items": { + "$ref": "#/definitions/AudioMonitoringSetting" + }, + "type": "array" + }, + "ContentQualityAnalysisState": { + "description": "Indicates whether content quality analysis is enabled or disabled.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "ThumbnailState": { + "description": "The state of thumbnail monitoring.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "VideoMonitoringSettings": { + "description": "Contains the settings for video stream metrics monitoring.", + "items": { + "$ref": "#/definitions/VideoMonitoringSetting" + }, + "type": "array" + } + }, + "type": "object" + }, + "VideoMonitoringSetting": { + "additionalProperties": false, + "description": "Specifies the configuration for video stream metrics monitoring.", + "properties": { + "BlackFrames": { + "$ref": "#/definitions/BlackFrames" + }, + "FrozenFrames": { + "$ref": "#/definitions/FrozenFrames" + } + }, + "type": "object" + }, + "VpcInterface": { + "additionalProperties": false, + "description": "The details of a VPC interface.", + "properties": { + "Name": { + "description": "Immutable and has to be a unique against other VpcInterfaces in this Flow.", + "type": "string" + }, + "NetworkInterfaceIds": { + "description": "IDs of the network interfaces created in customer's account by MediaConnect.", + "items": { + "type": "string" + }, + "type": "array" + }, + "NetworkInterfaceType": { + "description": "The type of network adapter that you want MediaConnect to use on this interface. If you don't set this value, it defaults to ENA.", + "enum": [ + "ena", + "efa" + ], + "type": "string" + }, + "RoleArn": { + "description": "Role Arn MediaConnect can assume to create ENIs in customer's account.", + "type": "string" + }, + "SecurityGroupIds": { + "description": "Security Group IDs to be used on ENI.", + "items": { + "type": "string" + }, + "type": "array" + }, + "SubnetId": { + "description": "Subnet must be in the AZ of the Flow", + "type": "string" + } + }, + "required": [ + "Name", + "RoleArn", + "SecurityGroupIds", + "SubnetId" + ], + "type": "object" + }, + "VpcInterfaceAttachment": { + "additionalProperties": false, + "description": "The settings for attaching a VPC interface to an resource.", + "properties": { + "VpcInterfaceName": { + "description": "The name of the VPC interface to use for this resource.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::MediaConnect::Flow", + "handlers": { + "create": { + "permissions": [ + "mediaconnect:CreateFlow", + "mediaconnect:AddFlowMediaStreams", + "mediaconnect:AddFlowSources", + "mediaconnect:AddFlowVpcInterfaces", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "mediaconnect:DescribeFlow", + "mediaconnect:DeleteFlow", + "mediaconnect:RemoveFlowMediaStream", + "mediaconnect:RemoveFlowOutput", + "mediaconnect:RemoveFlowSource", + "mediaconnect:RemoveFlowVpcInterface", + "mediaconnect:RevokeFlowEntitlement" + ] + }, + "list": { + "permissions": [ + "mediaconnect:ListFlows" + ] + }, + "read": { + "permissions": [ + "mediaconnect:DescribeFlow" + ] + }, + "update": { + "permissions": [ + "mediaconnect:DescribeFlow", + "mediaconnect:UpdateFlow", + "mediaconnect:UpdateFlowSource", + "mediaconnect:UpdateFlowMediaStream", + "mediaconnect:AddFlowMediaStreams", + "mediaconnect:RemoveFlowMediaStream", + "mediaconnect:AddFlowVpcInterfaces", + "mediaconnect:RemoveFlowVpcInterface" + ] + } + }, + "primaryIdentifier": [ + "/properties/FlowArn" + ], + "properties": { + "AvailabilityZone": { + "description": "The Availability Zone that you want to create the flow in. These options are limited to the Availability Zones within the current AWS.", + "type": "string" + }, + "EgressIp": { + "description": "The IP address from which video will be sent to output destinations.", + "type": "string" + }, + "FlowArn": { + "description": "The Amazon Resource Name (ARN), a unique identifier for any AWS resource, of the flow.", + "type": "string" + }, + "FlowAvailabilityZone": { + "description": "The Availability Zone that you want to create the flow in. These options are limited to the Availability Zones within the current AWS.(ReadOnly)", + "type": "string" + }, + "FlowNdiMachineName": { + "description": "A prefix for the names of the NDI sources that the flow creates.(ReadOnly)", + "type": "string" + }, + "FlowSize": { + "description": "Determines the processing capacity and feature set of the flow. Set this optional parameter to LARGE if you want to enable NDI outputs on the flow.", + "enum": [ + "MEDIUM", + "LARGE" + ], + "type": "string" + }, + "Maintenance": { + "$ref": "#/definitions/Maintenance", + "description": "The maintenance settings you want to use for the flow." + }, + "MediaStreams": { + "description": "The media streams associated with the flow. You can associate any of these media streams with sources and outputs on the flow.", + "items": { + "$ref": "#/definitions/MediaStream" + }, + "type": "array" + }, + "Name": { + "description": "The name of the flow.", + "type": "string" + }, + "NdiConfig": { + "$ref": "#/definitions/NdiConfig", + "description": "Specifies the configuration settings for NDI outputs. Required when the flow includes NDI outputs." + }, + "Source": { + "$ref": "#/definitions/Source", + "description": "The source of the flow." + }, + "SourceFailoverConfig": { + "$ref": "#/definitions/FailoverConfig", + "description": "The source failover config of the flow." + }, + "SourceMonitoringConfig": { + "$ref": "#/definitions/SourceMonitoringConfig", + "description": "The source monitoring config of the flow." + }, + "VpcInterfaces": { + "description": "The VPC interfaces that you added to this flow.", + "items": { + "$ref": "#/definitions/VpcInterface" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/FlowArn", + "/properties/FlowAvailabilityZone", + "/properties/Source/SourceArn", + "/properties/Source/IngestIp", + "/properties/Source/SourceIngestPort", + "/properties/VpcInterfaces/*/NetworkInterfaceIds", + "/properties/MediaStreams/*/Fmt", + "/properties/EgressIp", + "/properties/FlowNdiMachineName" + ], + "required": [ + "Name", + "Source" + ], + "resourceLink": { + "mappings": { + "flowArn": "/FlowArn" + }, + "templateUri": "/mediaconnect/home?region=${awsRegion}#/flows/${flowArn}" + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", + "typeName": "AWS::MediaConnect::Flow" +} diff --git a/src/schema/aws-mediaconnect-flowentitlement.json b/src/schema/aws-mediaconnect-flowentitlement.json index 8c99e874..ce4c6e70 100644 --- a/src/schema/aws-mediaconnect-flowentitlement.json +++ b/src/schema/aws-mediaconnect-flowentitlement.json @@ -1,153 +1,154 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DataTransferSubscriberFeePercent", - "/properties/Name" - ], - "definitions": { - "Encryption": { - "additionalProperties": false, - "description": "Information about the encryption of the flow.", - "properties": { - "Algorithm": { - "description": "The type of algorithm that is used for the encryption (such as aes128, aes192, or aes256).", - "enum": [ - "aes128", - "aes192", - "aes256" - ], - "type": "string" - }, - "ConstantInitializationVector": { - "description": "A 128-bit, 16-byte hex value represented by a 32-character string, to be used with the key for encrypting content. This parameter is not valid for static key encryption.", - "type": "string" - }, - "DeviceId": { - "description": "The value of one of the devices that you configured with your digital rights management (DRM) platform key provider. This parameter is required for SPEKE encryption and is not valid for static key encryption.", - "type": "string" - }, - "KeyType": { - "default": "static-key", - "description": "The type of key that is used for the encryption. If no keyType is provided, the service will use the default setting (static-key).", - "enum": [ - "speke", - "static-key" - ], - "type": "string" - }, - "Region": { - "description": "The AWS Region that the API Gateway proxy endpoint was created in. This parameter is required for SPEKE encryption and is not valid for static key encryption.", - "type": "string" - }, - "ResourceId": { - "description": "An identifier for the content. The service sends this value to the key server to identify the current endpoint. The resource ID is also known as the content ID. This parameter is required for SPEKE encryption and is not valid for static key encryption.", - "type": "string" - }, - "RoleArn": { - "description": "The ARN of the role that you created during setup (when you set up AWS Elemental MediaConnect as a trusted entity).", - "type": "string" - }, - "SecretArn": { - "description": " The ARN of the secret that you created in AWS Secrets Manager to store the encryption key. This parameter is required for static key encryption and is not valid for SPEKE encryption.", - "type": "string" - }, - "Url": { - "description": "The URL from the API Gateway proxy that you set up to talk to your key server. This parameter is required for SPEKE encryption and is not valid for static key encryption.", - "type": "string" - } - }, - "required": [ - "Algorithm", - "RoleArn" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::MediaConnect::FlowEntitlement", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "mediaconnect:GrantFlowEntitlements" - ] - }, - "delete": { - "permissions": [ - "mediaconnect:DescribeFlow", - "mediaconnect:RevokeFlowEntitlement" - ] - }, - "list": { - "permissions": [ - "mediaconnect:DescribeFlow" - ] - }, - "read": { - "permissions": [ - "mediaconnect:DescribeFlow" - ] - }, - "update": { - "permissions": [ - "mediaconnect:DescribeFlow", - "mediaconnect:UpdateFlowEntitlement" - ] - } - }, - "primaryIdentifier": [ - "/properties/EntitlementArn" - ], - "properties": { - "DataTransferSubscriberFeePercent": { - "default": 0, - "description": "Percentage from 0-100 of the data transfer cost to be billed to the subscriber.", - "type": "integer" - }, - "Description": { - "description": "A description of the entitlement.", - "type": "string" - }, - "Encryption": { - "$ref": "#/definitions/Encryption", - "description": "The type of encryption that will be used on the output that is associated with this entitlement." - }, - "EntitlementArn": { - "description": "The ARN of the entitlement.", - "type": "string" - }, - "EntitlementStatus": { - "description": " An indication of whether the entitlement is enabled.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "FlowArn": { - "description": "The ARN of the flow.", - "type": "string" - }, - "Name": { - "description": "The name of the entitlement.", - "type": "string" - }, - "Subscribers": { - "description": "The AWS account IDs that you want to share your content with. The receiving accounts (subscribers) will be allowed to create their own flow using your content as the source.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/EntitlementArn" - ], - "required": [ - "FlowArn", - "Name", - "Subscribers", - "Description" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", - "typeName": "AWS::MediaConnect::FlowEntitlement" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DataTransferSubscriberFeePercent", + "/properties/Name" + ], + "definitions": { + "Encryption": { + "additionalProperties": false, + "description": "Information about the encryption of the flow.", + "properties": { + "Algorithm": { + "description": "The type of algorithm that is used for the encryption (such as aes128, aes192, or aes256).", + "enum": [ + "aes128", + "aes192", + "aes256" + ], + "type": "string" + }, + "ConstantInitializationVector": { + "description": "A 128-bit, 16-byte hex value represented by a 32-character string, to be used with the key for encrypting content. This parameter is not valid for static key encryption.", + "type": "string" + }, + "DeviceId": { + "description": "The value of one of the devices that you configured with your digital rights management (DRM) platform key provider. This parameter is required for SPEKE encryption and is not valid for static key encryption.", + "type": "string" + }, + "KeyType": { + "default": "static-key", + "description": "The type of key that is used for the encryption. If no keyType is provided, the service will use the default setting (static-key).", + "enum": [ + "speke", + "static-key" + ], + "type": "string" + }, + "Region": { + "description": "The AWS Region that the API Gateway proxy endpoint was created in. This parameter is required for SPEKE encryption and is not valid for static key encryption.", + "type": "string" + }, + "ResourceId": { + "description": "An identifier for the content. The service sends this value to the key server to identify the current endpoint. The resource ID is also known as the content ID. This parameter is required for SPEKE encryption and is not valid for static key encryption.", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the role that you created during setup (when you set up AWS Elemental MediaConnect as a trusted entity).", + "type": "string" + }, + "SecretArn": { + "description": " The ARN of the secret that you created in AWS Secrets Manager to store the encryption key. This parameter is required for static key encryption and is not valid for SPEKE encryption.", + "type": "string" + }, + "Url": { + "description": "The URL from the API Gateway proxy that you set up to talk to your key server. This parameter is required for SPEKE encryption and is not valid for static key encryption.", + "type": "string" + } + }, + "required": [ + "Algorithm", + "RoleArn" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::MediaConnect::FlowEntitlement", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "mediaconnect:GrantFlowEntitlements" + ] + }, + "delete": { + "permissions": [ + "mediaconnect:DescribeFlow", + "mediaconnect:RevokeFlowEntitlement" + ] + }, + "list": { + "permissions": [ + "mediaconnect:DescribeFlow", + "mediaconnect:ListFlows" + ] + }, + "read": { + "permissions": [ + "mediaconnect:DescribeFlow" + ] + }, + "update": { + "permissions": [ + "mediaconnect:DescribeFlow", + "mediaconnect:UpdateFlowEntitlement" + ] + } + }, + "primaryIdentifier": [ + "/properties/EntitlementArn" + ], + "properties": { + "DataTransferSubscriberFeePercent": { + "default": 0, + "description": "Percentage from 0-100 of the data transfer cost to be billed to the subscriber.", + "type": "integer" + }, + "Description": { + "description": "A description of the entitlement.", + "type": "string" + }, + "Encryption": { + "$ref": "#/definitions/Encryption", + "description": "The type of encryption that will be used on the output that is associated with this entitlement." + }, + "EntitlementArn": { + "description": "The ARN of the entitlement.", + "type": "string" + }, + "EntitlementStatus": { + "description": " An indication of whether the entitlement is enabled.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "FlowArn": { + "description": "The ARN of the flow.", + "type": "string" + }, + "Name": { + "description": "The name of the entitlement.", + "type": "string" + }, + "Subscribers": { + "description": "The AWS account IDs that you want to share your content with. The receiving accounts (subscribers) will be allowed to create their own flow using your content as the source.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/EntitlementArn" + ], + "required": [ + "FlowArn", + "Name", + "Subscribers", + "Description" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", + "typeName": "AWS::MediaConnect::FlowEntitlement" +} diff --git a/src/schema/aws-mediaconnect-flowoutput.json b/src/schema/aws-mediaconnect-flowoutput.json index 951e87ee..95cbccc1 100644 --- a/src/schema/aws-mediaconnect-flowoutput.json +++ b/src/schema/aws-mediaconnect-flowoutput.json @@ -1,287 +1,297 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "DestinationConfiguration": { - "additionalProperties": false, - "description": "The definition of a media stream that is associated with the output.", - "properties": { - "DestinationIp": { - "description": "The IP address where contents of the media stream will be sent.", - "type": "string" - }, - "DestinationPort": { - "description": "The port to use when the content of the media stream is distributed to the output.", - "type": "integer" - }, - "Interface": { - "$ref": "#/definitions/Interface", - "description": "The VPC interface that is used for the media stream associated with the output." - } - }, - "required": [ - "DestinationIp", - "DestinationPort", - "Interface" - ], - "type": "object" - }, - "EncodingParameters": { - "additionalProperties": false, - "description": "A collection of parameters that determine how MediaConnect will convert the content. These fields only apply to outputs on flows that have a CDI source.", - "properties": { - "CompressionFactor": { - "description": "A value that is used to calculate compression for an output. The bitrate of the output is calculated as follows: Output bitrate = (1 / compressionFactor) * (source bitrate) This property only applies to outputs that use the ST 2110 JPEG XS protocol, with a flow source that uses the CDI protocol. Valid values are in the range of 3.0 to 10.0, inclusive.", - "type": "number" - }, - "EncoderProfile": { - "description": "A setting on the encoder that drives compression settings. This property only applies to video media streams associated with outputs that use the ST 2110 JPEG XS protocol, with a flow source that uses the CDI protocol.", - "enum": [ - "main", - "high" - ], - "type": "string" - } - }, - "required": [ - "CompressionFactor" - ], - "type": "object" - }, - "Encryption": { - "additionalProperties": false, - "description": "Information about the encryption of the flow.", - "properties": { - "Algorithm": { - "description": "The type of algorithm that is used for the encryption (such as aes128, aes192, or aes256).", - "enum": [ - "aes128", - "aes192", - "aes256" - ], - "type": "string" - }, - "KeyType": { - "default": "static-key", - "description": "The type of key that is used for the encryption. If no keyType is provided, the service will use the default setting (static-key).", - "enum": [ - "static-key", - "srt-password" - ], - "type": "string" - }, - "RoleArn": { - "description": "The ARN of the role that you created during setup (when you set up AWS Elemental MediaConnect as a trusted entity).", - "type": "string" - }, - "SecretArn": { - "description": " The ARN of the secret that you created in AWS Secrets Manager to store the encryption key. This parameter is required for static key encryption and is not valid for SPEKE encryption.", - "type": "string" - } - }, - "required": [ - "RoleArn", - "SecretArn" - ], - "type": "object" - }, - "Interface": { - "additionalProperties": false, - "description": "The VPC interface that you want to use for the media stream associated with the output.", - "properties": { - "Name": { - "description": "The name of the VPC interface that you want to use for the media stream associated with the output.", - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "MediaStreamOutputConfiguration": { - "additionalProperties": false, - "description": "The media stream that is associated with the output, and the parameters for that association.", - "properties": { - "DestinationConfigurations": { - "description": "The media streams that you want to associate with the output.", - "items": { - "$ref": "#/definitions/DestinationConfiguration" - }, - "type": "array" - }, - "EncodingName": { - "description": "The format that will be used to encode the data. For ancillary data streams, set the encoding name to smpte291. For audio streams, set the encoding name to pcm. For video streams on sources or outputs that use the CDI protocol, set the encoding name to raw. For video streams on sources or outputs that use the ST 2110 JPEG XS protocol, set the encoding name to jxsv.", - "enum": [ - "jxsv", - "raw", - "smpte291", - "pcm" - ], - "type": "string" - }, - "EncodingParameters": { - "$ref": "#/definitions/EncodingParameters", - "description": "A collection of parameters that determine how MediaConnect will convert the content. These fields only apply to outputs on flows that have a CDI source." - }, - "MediaStreamName": { - "description": "A name that helps you distinguish one media stream from another.", - "type": "string" - } - }, - "required": [ - "EncodingName", - "MediaStreamName" - ], - "type": "object" - }, - "VpcInterfaceAttachment": { - "additionalProperties": false, - "description": "The settings for attaching a VPC interface to an output.", - "properties": { - "VpcInterfaceName": { - "description": "The name of the VPC interface to use for this output.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::MediaConnect::FlowOutput", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "mediaconnect:AddFlowOutputs" - ] - }, - "delete": { - "permissions": [ - "mediaconnect:DescribeFlow", - "mediaconnect:RemoveFlowOutput" - ] - }, - "list": { - "permissions": [ - "mediaconnect:DescribeFlow" - ] - }, - "read": { - "permissions": [ - "mediaconnect:DescribeFlow" - ] - }, - "update": { - "permissions": [ - "mediaconnect:DescribeFlow", - "mediaconnect:UpdateFlowOutput" - ] - } - }, - "primaryIdentifier": [ - "/properties/OutputArn" - ], - "properties": { - "CidrAllowList": { - "description": "The range of IP addresses that should be allowed to initiate output requests to this flow. These IP addresses should be in the form of a Classless Inter-Domain Routing (CIDR) block; for example, 10.0.0.0/16.", - "items": { - "type": "string" - }, - "type": "array" - }, - "Description": { - "description": "A description of the output.", - "type": "string" - }, - "Destination": { - "description": "The address where you want to send the output.", - "type": "string" - }, - "Encryption": { - "$ref": "#/definitions/Encryption", - "description": "The type of key used for the encryption. If no keyType is provided, the service will use the default setting (static-key)." - }, - "FlowArn": { - "description": "The Amazon Resource Name (ARN), a unique identifier for any AWS resource, of the flow.", - "type": "string" - }, - "MaxLatency": { - "description": "The maximum latency in milliseconds. This parameter applies only to RIST-based and Zixi-based streams.", - "type": "integer" - }, - "MediaStreamOutputConfigurations": { - "description": "The definition for each media stream that is associated with the output.", - "items": { - "$ref": "#/definitions/MediaStreamOutputConfiguration" - }, - "type": "array" - }, - "MinLatency": { - "description": "The minimum latency in milliseconds.", - "type": "integer" - }, - "Name": { - "description": "The name of the output. This value must be unique within the current flow.", - "type": "string" - }, - "OutputArn": { - "description": "The ARN of the output.", - "type": "string" - }, - "OutputStatus": { - "description": "An indication of whether the output should transmit data or not.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "Port": { - "description": "The port to use when content is distributed to this output.", - "type": "integer" - }, - "Protocol": { - "description": "The protocol that is used by the source or output.", - "enum": [ - "zixi-push", - "rtp-fec", - "rtp", - "zixi-pull", - "rist", - "fujitsu-qos", - "srt-listener", - "srt-caller", - "st2110-jpegxs", - "cdi" - ], - "type": "string" - }, - "RemoteId": { - "description": "The remote ID for the Zixi-pull stream.", - "type": "string" - }, - "SmoothingLatency": { - "description": "The smoothing latency in milliseconds for RIST, RTP, and RTP-FEC streams.", - "type": "integer" - }, - "StreamId": { - "description": "The stream ID that you want to use for this transport. This parameter applies only to Zixi-based streams.", - "type": "string" - }, - "VpcInterfaceAttachment": { - "$ref": "#/definitions/VpcInterfaceAttachment", - "description": "The name of the VPC interface attachment to use for this output." - } - }, - "readOnlyProperties": [ - "/properties/OutputArn" - ], - "required": [ - "FlowArn", - "Protocol" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", - "typeName": "AWS::MediaConnect::FlowOutput" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "DestinationConfiguration": { + "additionalProperties": false, + "description": "The definition of a media stream that is associated with the output.", + "properties": { + "DestinationIp": { + "description": "The IP address where contents of the media stream will be sent.", + "type": "string" + }, + "DestinationPort": { + "description": "The port to use when the content of the media stream is distributed to the output.", + "type": "integer" + }, + "Interface": { + "$ref": "#/definitions/Interface", + "description": "The VPC interface that is used for the media stream associated with the output." + } + }, + "required": [ + "DestinationIp", + "DestinationPort", + "Interface" + ], + "type": "object" + }, + "EncodingParameters": { + "additionalProperties": false, + "description": "A collection of parameters that determine how MediaConnect will convert the content. These fields only apply to outputs on flows that have a CDI source.", + "properties": { + "CompressionFactor": { + "description": "A value that is used to calculate compression for an output. The bitrate of the output is calculated as follows: Output bitrate = (1 / compressionFactor) * (source bitrate) This property only applies to outputs that use the ST 2110 JPEG XS protocol, with a flow source that uses the CDI protocol. Valid values are in the range of 3.0 to 10.0, inclusive.", + "type": "number" + }, + "EncoderProfile": { + "description": "A setting on the encoder that drives compression settings. This property only applies to video media streams associated with outputs that use the ST 2110 JPEG XS protocol, with a flow source that uses the CDI protocol.", + "enum": [ + "main", + "high" + ], + "type": "string" + } + }, + "required": [ + "CompressionFactor" + ], + "type": "object" + }, + "Encryption": { + "additionalProperties": false, + "description": "Information about the encryption of the flow.", + "properties": { + "Algorithm": { + "description": "The type of algorithm that is used for the encryption (such as aes128, aes192, or aes256).", + "enum": [ + "aes128", + "aes192", + "aes256" + ], + "type": "string" + }, + "KeyType": { + "default": "static-key", + "description": "The type of key that is used for the encryption. If no keyType is provided, the service will use the default setting (static-key).", + "enum": [ + "static-key", + "srt-password" + ], + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the role that you created during setup (when you set up AWS Elemental MediaConnect as a trusted entity).", + "type": "string" + }, + "SecretArn": { + "description": " The ARN of the secret that you created in AWS Secrets Manager to store the encryption key. This parameter is required for static key encryption and is not valid for SPEKE encryption.", + "type": "string" + } + }, + "required": [ + "RoleArn", + "SecretArn" + ], + "type": "object" + }, + "Interface": { + "additionalProperties": false, + "description": "The VPC interface that you want to use for the media stream associated with the output.", + "properties": { + "Name": { + "description": "The name of the VPC interface that you want to use for the media stream associated with the output.", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "MediaStreamOutputConfiguration": { + "additionalProperties": false, + "description": "The media stream that is associated with the output, and the parameters for that association.", + "properties": { + "DestinationConfigurations": { + "description": "The media streams that you want to associate with the output.", + "items": { + "$ref": "#/definitions/DestinationConfiguration" + }, + "type": "array" + }, + "EncodingName": { + "description": "The format that will be used to encode the data. For ancillary data streams, set the encoding name to smpte291. For audio streams, set the encoding name to pcm. For video streams on sources or outputs that use the CDI protocol, set the encoding name to raw. For video streams on sources or outputs that use the ST 2110 JPEG XS protocol, set the encoding name to jxsv.", + "enum": [ + "jxsv", + "raw", + "smpte291", + "pcm" + ], + "type": "string" + }, + "EncodingParameters": { + "$ref": "#/definitions/EncodingParameters", + "description": "A collection of parameters that determine how MediaConnect will convert the content. These fields only apply to outputs on flows that have a CDI source." + }, + "MediaStreamName": { + "description": "A name that helps you distinguish one media stream from another.", + "type": "string" + } + }, + "required": [ + "EncodingName", + "MediaStreamName" + ], + "type": "object" + }, + "VpcInterfaceAttachment": { + "additionalProperties": false, + "description": "The settings for attaching a VPC interface to an output.", + "properties": { + "VpcInterfaceName": { + "description": "The name of the VPC interface to use for this output.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::MediaConnect::FlowOutput", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "mediaconnect:AddFlowOutputs" + ] + }, + "delete": { + "permissions": [ + "mediaconnect:DescribeFlow", + "mediaconnect:RemoveFlowOutput" + ] + }, + "list": { + "permissions": [ + "mediaconnect:DescribeFlow", + "mediaconnect:ListFlows" + ] + }, + "read": { + "permissions": [ + "mediaconnect:DescribeFlow" + ] + }, + "update": { + "permissions": [ + "mediaconnect:DescribeFlow", + "mediaconnect:UpdateFlowOutput" + ] + } + }, + "primaryIdentifier": [ + "/properties/OutputArn" + ], + "properties": { + "CidrAllowList": { + "description": "The range of IP addresses that should be allowed to initiate output requests to this flow. These IP addresses should be in the form of a Classless Inter-Domain Routing (CIDR) block; for example, 10.0.0.0/16.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Description": { + "description": "A description of the output.", + "type": "string" + }, + "Destination": { + "description": "The address where you want to send the output.", + "type": "string" + }, + "Encryption": { + "$ref": "#/definitions/Encryption", + "description": "The type of key used for the encryption. If no keyType is provided, the service will use the default setting (static-key)." + }, + "FlowArn": { + "description": "The Amazon Resource Name (ARN), a unique identifier for any AWS resource, of the flow.", + "type": "string" + }, + "MaxLatency": { + "description": "The maximum latency in milliseconds. This parameter applies only to RIST-based and Zixi-based streams.", + "type": "integer" + }, + "MediaStreamOutputConfigurations": { + "description": "The definition for each media stream that is associated with the output.", + "items": { + "$ref": "#/definitions/MediaStreamOutputConfiguration" + }, + "type": "array" + }, + "MinLatency": { + "description": "The minimum latency in milliseconds.", + "type": "integer" + }, + "Name": { + "description": "The name of the output. This value must be unique within the current flow.", + "type": "string" + }, + "NdiProgramName": { + "description": "A suffix for the names of the NDI sources that the flow creates. If a custom name isn't specified, MediaConnect uses the output name.", + "type": "string" + }, + "NdiSpeedHqQuality": { + "description": "A quality setting for the NDI Speed HQ encoder.", + "type": "integer" + }, + "OutputArn": { + "description": "The ARN of the output.", + "type": "string" + }, + "OutputStatus": { + "description": "An indication of whether the output should transmit data or not.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Port": { + "description": "The port to use when content is distributed to this output.", + "type": "integer" + }, + "Protocol": { + "description": "The protocol that is used by the source or output.", + "enum": [ + "zixi-push", + "rtp-fec", + "rtp", + "zixi-pull", + "rist", + "fujitsu-qos", + "srt-listener", + "srt-caller", + "st2110-jpegxs", + "cdi", + "ndi-speed-hq" + ], + "type": "string" + }, + "RemoteId": { + "description": "The remote ID for the Zixi-pull stream.", + "type": "string" + }, + "SmoothingLatency": { + "description": "The smoothing latency in milliseconds for RIST, RTP, and RTP-FEC streams.", + "type": "integer" + }, + "StreamId": { + "description": "The stream ID that you want to use for this transport. This parameter applies only to Zixi-based streams.", + "type": "string" + }, + "VpcInterfaceAttachment": { + "$ref": "#/definitions/VpcInterfaceAttachment", + "description": "The name of the VPC interface attachment to use for this output." + } + }, + "readOnlyProperties": [ + "/properties/OutputArn" + ], + "required": [ + "FlowArn", + "Protocol" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", + "typeName": "AWS::MediaConnect::FlowOutput" +} diff --git a/src/schema/aws-mediaconnect-flowsource.json b/src/schema/aws-mediaconnect-flowsource.json index d2c71e6b..d1fe2111 100644 --- a/src/schema/aws-mediaconnect-flowsource.json +++ b/src/schema/aws-mediaconnect-flowsource.json @@ -1,235 +1,236 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Encryption": { - "additionalProperties": false, - "description": "Information about the encryption of the flow.", - "properties": { - "Algorithm": { - "description": "The type of algorithm that is used for the encryption (such as aes128, aes192, or aes256).", - "enum": [ - "aes128", - "aes192", - "aes256" - ], - "type": "string" - }, - "ConstantInitializationVector": { - "description": "A 128-bit, 16-byte hex value represented by a 32-character string, to be used with the key for encrypting content. This parameter is not valid for static key encryption.", - "type": "string" - }, - "DeviceId": { - "description": "The value of one of the devices that you configured with your digital rights management (DRM) platform key provider. This parameter is required for SPEKE encryption and is not valid for static key encryption.", - "type": "string" - }, - "KeyType": { - "default": "static-key", - "description": "The type of key that is used for the encryption. If no keyType is provided, the service will use the default setting (static-key).", - "enum": [ - "speke", - "static-key", - "srt-password" - ], - "type": "string" - }, - "Region": { - "description": "The AWS Region that the API Gateway proxy endpoint was created in. This parameter is required for SPEKE encryption and is not valid for static key encryption.", - "type": "string" - }, - "ResourceId": { - "description": "An identifier for the content. The service sends this value to the key server to identify the current endpoint. The resource ID is also known as the content ID. This parameter is required for SPEKE encryption and is not valid for static key encryption.", - "type": "string" - }, - "RoleArn": { - "description": "The ARN of the role that you created during setup (when you set up AWS Elemental MediaConnect as a trusted entity).", - "type": "string" - }, - "SecretArn": { - "description": " The ARN of the secret that you created in AWS Secrets Manager to store the encryption key. This parameter is required for static key encryption and is not valid for SPEKE encryption.", - "type": "string" - }, - "Url": { - "description": "The URL from the API Gateway proxy that you set up to talk to your key server. This parameter is required for SPEKE encryption and is not valid for static key encryption.", - "type": "string" - } - }, - "required": [ - "RoleArn" - ], - "type": "object" - }, - "GatewayBridgeSource": { - "additionalProperties": false, - "description": "The source configuration for cloud flows receiving a stream from a bridge.", - "properties": { - "BridgeArn": { - "description": "The ARN of the bridge feeding this flow.", - "type": "string" - }, - "VpcInterfaceAttachment": { - "$ref": "#/definitions/VpcInterfaceAttachment", - "description": "The name of the VPC interface attachment to use for this bridge source." - } - }, - "required": [ - "BridgeArn" - ], - "type": "object" - }, - "VpcInterfaceAttachment": { - "additionalProperties": false, - "description": "The settings for attaching a VPC interface to an resource.", - "properties": { - "VpcInterfaceName": { - "description": "The name of the VPC interface to use for this resource.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::MediaConnect::FlowSource", - "handlers": { - "create": { - "permissions": [ - "mediaconnect:CreateFlow", - "mediaconnect:DescribeFlow", - "mediaconnect:AddFlowSources", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "mediaconnect:DescribeFlow", - "mediaconnect:RemoveFlowSource" - ] - }, - "list": { - "permissions": [ - "mediaconnect:DescribeFlow" - ] - }, - "read": { - "permissions": [ - "mediaconnect:DescribeFlow" - ] - }, - "update": { - "permissions": [ - "mediaconnect:DescribeFlow", - "mediaconnect:UpdateFlowSource" - ] - } - }, - "primaryIdentifier": [ - "/properties/SourceArn" - ], - "properties": { - "Decryption": { - "$ref": "#/definitions/Encryption", - "description": "The type of encryption that is used on the content ingested from this source." - }, - "Description": { - "description": "A description for the source. This value is not used or seen outside of the current AWS Elemental MediaConnect account.", - "type": "string" - }, - "EntitlementArn": { - "description": "The ARN of the entitlement that allows you to subscribe to content that comes from another AWS account. The entitlement is set by the content originator and the ARN is generated as part of the originator's flow.", - "type": "string" - }, - "FlowArn": { - "description": "The ARN of the flow.", - "type": "string" - }, - "GatewayBridgeSource": { - "$ref": "#/definitions/GatewayBridgeSource", - "description": "The source configuration for cloud flows receiving a stream from a bridge." - }, - "IngestIp": { - "description": "The IP address that the flow will be listening on for incoming content.", - "type": "string" - }, - "IngestPort": { - "description": "The port that the flow will be listening on for incoming content.", - "type": "integer" - }, - "MaxBitrate": { - "description": "The smoothing max bitrate for RIST, RTP, and RTP-FEC streams.", - "type": "integer" - }, - "MaxLatency": { - "description": "The maximum latency in milliseconds. This parameter applies only to RIST-based and Zixi-based streams.", - "type": "integer" - }, - "MinLatency": { - "description": "The minimum latency in milliseconds.", - "type": "integer" - }, - "Name": { - "description": "The name of the source.", - "type": "string" - }, - "Protocol": { - "description": "The protocol that is used by the source.", - "enum": [ - "zixi-push", - "rtp-fec", - "rtp", - "rist", - "srt-listener", - "srt-caller" - ], - "type": "string" - }, - "SenderControlPort": { - "description": "The port that the flow uses to send outbound requests to initiate connection with the sender for fujitsu-qos protocol.", - "type": "integer" - }, - "SenderIpAddress": { - "description": "The IP address that the flow communicates with to initiate connection with the sender for fujitsu-qos protocol.", - "type": "string" - }, - "SourceArn": { - "description": "The ARN of the source.", - "type": "string" - }, - "SourceIngestPort": { - "description": "The port that the flow will be listening on for incoming content.(ReadOnly)", - "type": "string" - }, - "SourceListenerAddress": { - "description": "Source IP or domain name for SRT-caller protocol.", - "type": "string" - }, - "SourceListenerPort": { - "description": "Source port for SRT-caller protocol.", - "type": "integer" - }, - "StreamId": { - "description": "The stream ID that you want to use for this transport. This parameter applies only to Zixi-based streams.", - "type": "string" - }, - "VpcInterfaceName": { - "description": "The name of the VPC Interface this Source is configured with.", - "type": "string" - }, - "WhitelistCidr": { - "description": "The range of IP addresses that should be allowed to contribute content to your source. These IP addresses should be in the form of a Classless Inter-Domain Routing (CIDR) block; for example, 10.0.0.0/16.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/IngestIp", - "/properties/SourceArn", - "/properties/SourceIngestPort" - ], - "required": [ - "Name", - "Description" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", - "typeName": "AWS::MediaConnect::FlowSource" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Encryption": { + "additionalProperties": false, + "description": "Information about the encryption of the flow.", + "properties": { + "Algorithm": { + "description": "The type of algorithm that is used for the encryption (such as aes128, aes192, or aes256).", + "enum": [ + "aes128", + "aes192", + "aes256" + ], + "type": "string" + }, + "ConstantInitializationVector": { + "description": "A 128-bit, 16-byte hex value represented by a 32-character string, to be used with the key for encrypting content. This parameter is not valid for static key encryption.", + "type": "string" + }, + "DeviceId": { + "description": "The value of one of the devices that you configured with your digital rights management (DRM) platform key provider. This parameter is required for SPEKE encryption and is not valid for static key encryption.", + "type": "string" + }, + "KeyType": { + "default": "static-key", + "description": "The type of key that is used for the encryption. If no keyType is provided, the service will use the default setting (static-key).", + "enum": [ + "speke", + "static-key", + "srt-password" + ], + "type": "string" + }, + "Region": { + "description": "The AWS Region that the API Gateway proxy endpoint was created in. This parameter is required for SPEKE encryption and is not valid for static key encryption.", + "type": "string" + }, + "ResourceId": { + "description": "An identifier for the content. The service sends this value to the key server to identify the current endpoint. The resource ID is also known as the content ID. This parameter is required for SPEKE encryption and is not valid for static key encryption.", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the role that you created during setup (when you set up AWS Elemental MediaConnect as a trusted entity).", + "type": "string" + }, + "SecretArn": { + "description": " The ARN of the secret that you created in AWS Secrets Manager to store the encryption key. This parameter is required for static key encryption and is not valid for SPEKE encryption.", + "type": "string" + }, + "Url": { + "description": "The URL from the API Gateway proxy that you set up to talk to your key server. This parameter is required for SPEKE encryption and is not valid for static key encryption.", + "type": "string" + } + }, + "required": [ + "RoleArn" + ], + "type": "object" + }, + "GatewayBridgeSource": { + "additionalProperties": false, + "description": "The source configuration for cloud flows receiving a stream from a bridge.", + "properties": { + "BridgeArn": { + "description": "The ARN of the bridge feeding this flow.", + "type": "string" + }, + "VpcInterfaceAttachment": { + "$ref": "#/definitions/VpcInterfaceAttachment", + "description": "The name of the VPC interface attachment to use for this bridge source." + } + }, + "required": [ + "BridgeArn" + ], + "type": "object" + }, + "VpcInterfaceAttachment": { + "additionalProperties": false, + "description": "The settings for attaching a VPC interface to an resource.", + "properties": { + "VpcInterfaceName": { + "description": "The name of the VPC interface to use for this resource.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::MediaConnect::FlowSource", + "handlers": { + "create": { + "permissions": [ + "mediaconnect:CreateFlow", + "mediaconnect:DescribeFlow", + "mediaconnect:AddFlowSources", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "mediaconnect:DescribeFlow", + "mediaconnect:RemoveFlowSource" + ] + }, + "list": { + "permissions": [ + "mediaconnect:DescribeFlow", + "mediaconnect:ListFlows" + ] + }, + "read": { + "permissions": [ + "mediaconnect:DescribeFlow" + ] + }, + "update": { + "permissions": [ + "mediaconnect:DescribeFlow", + "mediaconnect:UpdateFlowSource" + ] + } + }, + "primaryIdentifier": [ + "/properties/SourceArn" + ], + "properties": { + "Decryption": { + "$ref": "#/definitions/Encryption", + "description": "The type of encryption that is used on the content ingested from this source." + }, + "Description": { + "description": "A description for the source. This value is not used or seen outside of the current AWS Elemental MediaConnect account.", + "type": "string" + }, + "EntitlementArn": { + "description": "The ARN of the entitlement that allows you to subscribe to content that comes from another AWS account. The entitlement is set by the content originator and the ARN is generated as part of the originator's flow.", + "type": "string" + }, + "FlowArn": { + "description": "The ARN of the flow.", + "type": "string" + }, + "GatewayBridgeSource": { + "$ref": "#/definitions/GatewayBridgeSource", + "description": "The source configuration for cloud flows receiving a stream from a bridge." + }, + "IngestIp": { + "description": "The IP address that the flow will be listening on for incoming content.", + "type": "string" + }, + "IngestPort": { + "description": "The port that the flow will be listening on for incoming content.", + "type": "integer" + }, + "MaxBitrate": { + "description": "The smoothing max bitrate for RIST, RTP, and RTP-FEC streams.", + "type": "integer" + }, + "MaxLatency": { + "description": "The maximum latency in milliseconds. This parameter applies only to RIST-based and Zixi-based streams.", + "type": "integer" + }, + "MinLatency": { + "description": "The minimum latency in milliseconds.", + "type": "integer" + }, + "Name": { + "description": "The name of the source.", + "type": "string" + }, + "Protocol": { + "description": "The protocol that is used by the source.", + "enum": [ + "zixi-push", + "rtp-fec", + "rtp", + "rist", + "srt-listener", + "srt-caller" + ], + "type": "string" + }, + "SenderControlPort": { + "description": "The port that the flow uses to send outbound requests to initiate connection with the sender for fujitsu-qos protocol.", + "type": "integer" + }, + "SenderIpAddress": { + "description": "The IP address that the flow communicates with to initiate connection with the sender for fujitsu-qos protocol.", + "type": "string" + }, + "SourceArn": { + "description": "The ARN of the source.", + "type": "string" + }, + "SourceIngestPort": { + "description": "The port that the flow will be listening on for incoming content.(ReadOnly)", + "type": "string" + }, + "SourceListenerAddress": { + "description": "Source IP or domain name for SRT-caller protocol.", + "type": "string" + }, + "SourceListenerPort": { + "description": "Source port for SRT-caller protocol.", + "type": "integer" + }, + "StreamId": { + "description": "The stream ID that you want to use for this transport. This parameter applies only to Zixi-based streams.", + "type": "string" + }, + "VpcInterfaceName": { + "description": "The name of the VPC Interface this Source is configured with.", + "type": "string" + }, + "WhitelistCidr": { + "description": "The range of IP addresses that should be allowed to contribute content to your source. These IP addresses should be in the form of a Classless Inter-Domain Routing (CIDR) block; for example, 10.0.0.0/16.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/IngestIp", + "/properties/SourceArn", + "/properties/SourceIngestPort" + ], + "required": [ + "Name", + "Description" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", + "typeName": "AWS::MediaConnect::FlowSource" +} diff --git a/src/schema/aws-mediaconnect-flowvpcinterface.json b/src/schema/aws-mediaconnect-flowvpcinterface.json index a83d38cf..dd67e65e 100644 --- a/src/schema/aws-mediaconnect-flowvpcinterface.json +++ b/src/schema/aws-mediaconnect-flowvpcinterface.json @@ -1,88 +1,88 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FlowArn", - "/properties/Name" - ], - "description": "Resource schema for AWS::MediaConnect::FlowVpcInterface", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "mediaconnect:DescribeFlow", - "mediaconnect:AddFlowVpcInterfaces" - ] - }, - "delete": { - "permissions": [ - "mediaconnect:DescribeFlow", - "mediaconnect:RemoveFlowVpcInterface" - ] - }, - "list": { - "permissions": [ - "mediaconnect:DescribeFlow" - ] - }, - "read": { - "permissions": [ - "mediaconnect:DescribeFlow" - ] - }, - "update": { - "permissions": [ - "mediaconnect:DescribeFlow", - "mediaconnect:AddFlowVpcInterfaces", - "mediaconnect:RemoveFlowVpcInterface" - ] - } - }, - "primaryIdentifier": [ - "/properties/FlowArn", - "/properties/Name" - ], - "properties": { - "FlowArn": { - "description": "The Amazon Resource Name (ARN), a unique identifier for any AWS resource, of the flow.", - "type": "string" - }, - "Name": { - "description": "Immutable and has to be a unique against other VpcInterfaces in this Flow.", - "type": "string" - }, - "NetworkInterfaceIds": { - "description": "IDs of the network interfaces created in customer's account by MediaConnect.", - "items": { - "type": "string" - }, - "type": "array" - }, - "RoleArn": { - "description": "Role Arn MediaConnect can assume to create ENIs in customer's account.", - "type": "string" - }, - "SecurityGroupIds": { - "description": "Security Group IDs to be used on ENI.", - "items": { - "type": "string" - }, - "type": "array" - }, - "SubnetId": { - "description": "Subnet must be in the AZ of the Flow", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/NetworkInterfaceIds" - ], - "required": [ - "FlowArn", - "Name", - "RoleArn", - "SubnetId", - "SecurityGroupIds" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", - "typeName": "AWS::MediaConnect::FlowVpcInterface" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FlowArn", + "/properties/Name" + ], + "description": "Resource schema for AWS::MediaConnect::FlowVpcInterface", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "mediaconnect:DescribeFlow", + "mediaconnect:AddFlowVpcInterfaces" + ] + }, + "delete": { + "permissions": [ + "mediaconnect:DescribeFlow", + "mediaconnect:RemoveFlowVpcInterface" + ] + }, + "list": { + "permissions": [ + "mediaconnect:DescribeFlow" + ] + }, + "read": { + "permissions": [ + "mediaconnect:DescribeFlow" + ] + }, + "update": { + "permissions": [ + "mediaconnect:DescribeFlow", + "mediaconnect:AddFlowVpcInterfaces", + "mediaconnect:RemoveFlowVpcInterface" + ] + } + }, + "primaryIdentifier": [ + "/properties/FlowArn", + "/properties/Name" + ], + "properties": { + "FlowArn": { + "description": "The Amazon Resource Name (ARN), a unique identifier for any AWS resource, of the flow.", + "type": "string" + }, + "Name": { + "description": "Immutable and has to be a unique against other VpcInterfaces in this Flow.", + "type": "string" + }, + "NetworkInterfaceIds": { + "description": "IDs of the network interfaces created in customer's account by MediaConnect.", + "items": { + "type": "string" + }, + "type": "array" + }, + "RoleArn": { + "description": "Role Arn MediaConnect can assume to create ENIs in customer's account.", + "type": "string" + }, + "SecurityGroupIds": { + "description": "Security Group IDs to be used on ENI.", + "items": { + "type": "string" + }, + "type": "array" + }, + "SubnetId": { + "description": "Subnet must be in the AZ of the Flow", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/NetworkInterfaceIds" + ], + "required": [ + "FlowArn", + "Name", + "RoleArn", + "SubnetId", + "SecurityGroupIds" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", + "typeName": "AWS::MediaConnect::FlowVpcInterface" +} diff --git a/src/schema/aws-mediaconnect-gateway.json b/src/schema/aws-mediaconnect-gateway.json index 1dbceeb6..b102cf67 100644 --- a/src/schema/aws-mediaconnect-gateway.json +++ b/src/schema/aws-mediaconnect-gateway.json @@ -1,113 +1,113 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/EgressCidrBlocks", - "/properties/Networks" - ], - "definitions": { - "GatewayNetwork": { - "additionalProperties": false, - "description": "The network settings for a gateway.", - "properties": { - "CidrBlock": { - "description": "A unique IP address range to use for this network. These IP addresses should be in the form of a Classless Inter-Domain Routing (CIDR) block; for example, 10.0.0.0/16.", - "type": "string" - }, - "Name": { - "description": "The name of the network. This name is used to reference the network and must be unique among networks in this gateway.", - "type": "string" - } - }, - "required": [ - "Name", - "CidrBlock" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::MediaConnect::Gateway", - "handlers": { - "create": { - "permissions": [ - "iam:CreateServiceLinkedRole", - "mediaconnect:CreateGateway", - "mediaconnect:DescribeGateway" - ] - }, - "delete": { - "permissions": [ - "iam:CreateServiceLinkedRole", - "mediaconnect:DescribeGateway", - "mediaconnect:DeleteGateway" - ] - }, - "list": { - "permissions": [ - "mediaconnect:ListGateways" - ] - }, - "read": { - "permissions": [ - "mediaconnect:DescribeGateway" - ] - } - }, - "primaryIdentifier": [ - "/properties/GatewayArn" - ], - "properties": { - "EgressCidrBlocks": { - "description": "The range of IP addresses that contribute content or initiate output requests for flows communicating with this gateway. These IP addresses should be in the form of a Classless Inter-Domain Routing (CIDR) block; for example, 10.0.0.0/16.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "GatewayArn": { - "description": "The Amazon Resource Name (ARN) of the gateway.", - "type": "string" - }, - "GatewayState": { - "description": "The current status of the gateway.", - "enum": [ - "CREATING", - "ACTIVE", - "UPDATING", - "ERROR", - "DELETING", - "DELETED" - ], - "type": "string" - }, - "Name": { - "description": "The name of the gateway. This name can not be modified after the gateway is created.", - "type": "string" - }, - "Networks": { - "description": "The list of networks in the gateway.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/GatewayNetwork" - }, - "maxItems": 4, - "minItems": 1, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/GatewayArn", - "/properties/GatewayState" - ], - "required": [ - "Name", - "EgressCidrBlocks", - "Networks" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::MediaConnect::Gateway" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/EgressCidrBlocks", + "/properties/Networks" + ], + "definitions": { + "GatewayNetwork": { + "additionalProperties": false, + "description": "The network settings for a gateway.", + "properties": { + "CidrBlock": { + "description": "A unique IP address range to use for this network. These IP addresses should be in the form of a Classless Inter-Domain Routing (CIDR) block; for example, 10.0.0.0/16.", + "type": "string" + }, + "Name": { + "description": "The name of the network. This name is used to reference the network and must be unique among networks in this gateway.", + "type": "string" + } + }, + "required": [ + "Name", + "CidrBlock" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::MediaConnect::Gateway", + "handlers": { + "create": { + "permissions": [ + "iam:CreateServiceLinkedRole", + "mediaconnect:CreateGateway", + "mediaconnect:DescribeGateway" + ] + }, + "delete": { + "permissions": [ + "iam:CreateServiceLinkedRole", + "mediaconnect:DescribeGateway", + "mediaconnect:DeleteGateway" + ] + }, + "list": { + "permissions": [ + "mediaconnect:ListGateways" + ] + }, + "read": { + "permissions": [ + "mediaconnect:DescribeGateway" + ] + } + }, + "primaryIdentifier": [ + "/properties/GatewayArn" + ], + "properties": { + "EgressCidrBlocks": { + "description": "The range of IP addresses that contribute content or initiate output requests for flows communicating with this gateway. These IP addresses should be in the form of a Classless Inter-Domain Routing (CIDR) block; for example, 10.0.0.0/16.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "GatewayArn": { + "description": "The Amazon Resource Name (ARN) of the gateway.", + "type": "string" + }, + "GatewayState": { + "description": "The current status of the gateway.", + "enum": [ + "CREATING", + "ACTIVE", + "UPDATING", + "ERROR", + "DELETING", + "DELETED" + ], + "type": "string" + }, + "Name": { + "description": "The name of the gateway. This name can not be modified after the gateway is created.", + "type": "string" + }, + "Networks": { + "description": "The list of networks in the gateway.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/GatewayNetwork" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/GatewayArn", + "/properties/GatewayState" + ], + "required": [ + "Name", + "EgressCidrBlocks", + "Networks" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::MediaConnect::Gateway" +} diff --git a/src/schema/aws-mediaconvert-jobtemplate.json b/src/schema/aws-mediaconvert-jobtemplate.json index 5be56f7b..c4d2a2cb 100644 --- a/src/schema/aws-mediaconvert-jobtemplate.json +++ b/src/schema/aws-mediaconvert-jobtemplate.json @@ -1,89 +1,89 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "AccelerationSettings": { - "additionalProperties": false, - "properties": { - "Mode": { - "type": "string" - } - }, - "required": [ - "Mode" - ], - "type": "object" - }, - "HopDestination": { - "additionalProperties": false, - "properties": { - "Priority": { - "type": "integer" - }, - "Queue": { - "type": "string" - }, - "WaitMinutes": { - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::MediaConvert::JobTemplate", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AccelerationSettings": { - "$ref": "#/definitions/AccelerationSettings" - }, - "Arn": { - "type": "string" - }, - "Category": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "HopDestinations": { - "items": { - "$ref": "#/definitions/HopDestination" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Priority": { - "type": "integer" - }, - "Queue": { - "type": "string" - }, - "SettingsJson": { - "type": "object" - }, - "StatusUpdateInterval": { - "type": "string" - }, - "Tags": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "SettingsJson" - ], - "typeName": "AWS::MediaConvert::JobTemplate" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "AccelerationSettings": { + "additionalProperties": false, + "properties": { + "Mode": { + "type": "string" + } + }, + "required": [ + "Mode" + ], + "type": "object" + }, + "HopDestination": { + "additionalProperties": false, + "properties": { + "Priority": { + "type": "integer" + }, + "Queue": { + "type": "string" + }, + "WaitMinutes": { + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MediaConvert::JobTemplate", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AccelerationSettings": { + "$ref": "#/definitions/AccelerationSettings" + }, + "Arn": { + "type": "string" + }, + "Category": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "HopDestinations": { + "items": { + "$ref": "#/definitions/HopDestination" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Priority": { + "type": "integer" + }, + "Queue": { + "type": "string" + }, + "SettingsJson": { + "type": "object" + }, + "StatusUpdateInterval": { + "type": "string" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "SettingsJson" + ], + "typeName": "AWS::MediaConvert::JobTemplate" +} diff --git a/src/schema/aws-mediaconvert-preset.json b/src/schema/aws-mediaconvert-preset.json index cf9402d5..e57b5ce0 100644 --- a/src/schema/aws-mediaconvert-preset.json +++ b/src/schema/aws-mediaconvert-preset.json @@ -1,41 +1,41 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "description": "Resource Type definition for AWS::MediaConvert::Preset", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Category": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "SettingsJson": { - "type": "object" - }, - "Tags": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "SettingsJson" - ], - "typeName": "AWS::MediaConvert::Preset" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "description": "Resource Type definition for AWS::MediaConvert::Preset", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Category": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "SettingsJson": { + "type": "object" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "SettingsJson" + ], + "typeName": "AWS::MediaConvert::Preset" +} diff --git a/src/schema/aws-mediaconvert-queue.json b/src/schema/aws-mediaconvert-queue.json index f14f6bc9..007b4134 100644 --- a/src/schema/aws-mediaconvert-queue.json +++ b/src/schema/aws-mediaconvert-queue.json @@ -1,38 +1,41 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "description": "Resource Type definition for AWS::MediaConvert::Queue", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "PricingPlan": { - "type": "string" - }, - "Status": { - "type": "string" - }, - "Tags": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "typeName": "AWS::MediaConvert::Queue" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "description": "Resource Type definition for AWS::MediaConvert::Queue", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "ConcurrentJobs": { + "type": "integer" + }, + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "PricingPlan": { + "type": "string" + }, + "Status": { + "type": "string" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "typeName": "AWS::MediaConvert::Queue" +} diff --git a/src/schema/aws-medialive-channel.json b/src/schema/aws-medialive-channel.json index c88f0bfc..d2300c39 100644 --- a/src/schema/aws-medialive-channel.json +++ b/src/schema/aws-medialive-channel.json @@ -1,3277 +1,3568 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Vpc" - ], - "definitions": { - "AacSettings": { - "additionalProperties": false, - "properties": { - "Bitrate": { - "type": "number" - }, - "CodingMode": { - "type": "string" - }, - "InputType": { - "type": "string" - }, - "Profile": { - "type": "string" - }, - "RateControlMode": { - "type": "string" - }, - "RawFormat": { - "type": "string" - }, - "SampleRate": { - "type": "number" - }, - "Spec": { - "type": "string" - }, - "VbrQuality": { - "type": "string" - } - }, - "type": "object" - }, - "Ac3Settings": { - "additionalProperties": false, - "properties": { - "AttenuationControl": { - "type": "string" - }, - "Bitrate": { - "type": "number" - }, - "BitstreamMode": { - "type": "string" - }, - "CodingMode": { - "type": "string" - }, - "Dialnorm": { - "type": "integer" - }, - "DrcProfile": { - "type": "string" - }, - "LfeFilter": { - "type": "string" - }, - "MetadataControl": { - "type": "string" - } - }, - "type": "object" - }, - "AncillarySourceSettings": { - "additionalProperties": false, - "properties": { - "SourceAncillaryChannelNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "ArchiveCdnSettings": { - "additionalProperties": false, - "properties": { - "ArchiveS3Settings": { - "$ref": "#/definitions/ArchiveS3Settings" - } - }, - "type": "object" - }, - "ArchiveContainerSettings": { - "additionalProperties": false, - "properties": { - "M2tsSettings": { - "$ref": "#/definitions/M2tsSettings" - }, - "RawSettings": { - "$ref": "#/definitions/RawSettings" - } - }, - "type": "object" - }, - "ArchiveGroupSettings": { - "additionalProperties": false, - "properties": { - "ArchiveCdnSettings": { - "$ref": "#/definitions/ArchiveCdnSettings" - }, - "Destination": { - "$ref": "#/definitions/OutputLocationRef" - }, - "RolloverInterval": { - "type": "integer" - } - }, - "type": "object" - }, - "ArchiveOutputSettings": { - "additionalProperties": false, - "properties": { - "ContainerSettings": { - "$ref": "#/definitions/ArchiveContainerSettings" - }, - "Extension": { - "type": "string" - }, - "NameModifier": { - "type": "string" - } - }, - "type": "object" - }, - "ArchiveS3Settings": { - "additionalProperties": false, - "properties": { - "CannedAcl": { - "type": "string" - } - }, - "type": "object" - }, - "AribDestinationSettings": { - "additionalProperties": false, - "type": "object" - }, - "AribSourceSettings": { - "additionalProperties": false, - "type": "object" - }, - "AudioChannelMapping": { - "additionalProperties": false, - "properties": { - "InputChannelLevels": { - "items": { - "$ref": "#/definitions/InputChannelLevel" - }, - "type": "array", - "uniqueItems": false - }, - "OutputChannel": { - "type": "integer" - } - }, - "type": "object" - }, - "AudioCodecSettings": { - "additionalProperties": false, - "properties": { - "AacSettings": { - "$ref": "#/definitions/AacSettings" - }, - "Ac3Settings": { - "$ref": "#/definitions/Ac3Settings" - }, - "Eac3AtmosSettings": { - "$ref": "#/definitions/Eac3AtmosSettings" - }, - "Eac3Settings": { - "$ref": "#/definitions/Eac3Settings" - }, - "Mp2Settings": { - "$ref": "#/definitions/Mp2Settings" - }, - "PassThroughSettings": { - "$ref": "#/definitions/PassThroughSettings" - }, - "WavSettings": { - "$ref": "#/definitions/WavSettings" - } - }, - "type": "object" - }, - "AudioDescription": { - "additionalProperties": false, - "properties": { - "AudioDashRoles": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AudioNormalizationSettings": { - "$ref": "#/definitions/AudioNormalizationSettings" - }, - "AudioSelectorName": { - "type": "string" - }, - "AudioType": { - "type": "string" - }, - "AudioTypeControl": { - "type": "string" - }, - "AudioWatermarkingSettings": { - "$ref": "#/definitions/AudioWatermarkSettings" - }, - "CodecSettings": { - "$ref": "#/definitions/AudioCodecSettings" - }, - "DvbDashAccessibility": { - "type": "string" - }, - "LanguageCode": { - "type": "string" - }, - "LanguageCodeControl": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "RemixSettings": { - "$ref": "#/definitions/RemixSettings" - }, - "StreamName": { - "type": "string" - } - }, - "type": "object" - }, - "AudioDolbyEDecode": { - "additionalProperties": false, - "properties": { - "ProgramSelection": { - "type": "string" - } - }, - "type": "object" - }, - "AudioHlsRenditionSelection": { - "additionalProperties": false, - "properties": { - "GroupId": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "type": "object" - }, - "AudioLanguageSelection": { - "additionalProperties": false, - "properties": { - "LanguageCode": { - "type": "string" - }, - "LanguageSelectionPolicy": { - "type": "string" - } - }, - "type": "object" - }, - "AudioNormalizationSettings": { - "additionalProperties": false, - "properties": { - "Algorithm": { - "type": "string" - }, - "AlgorithmControl": { - "type": "string" - }, - "TargetLkfs": { - "type": "number" - } - }, - "type": "object" - }, - "AudioOnlyHlsSettings": { - "additionalProperties": false, - "properties": { - "AudioGroupId": { - "type": "string" - }, - "AudioOnlyImage": { - "$ref": "#/definitions/InputLocation" - }, - "AudioTrackType": { - "type": "string" - }, - "SegmentType": { - "type": "string" - } - }, - "type": "object" - }, - "AudioPidSelection": { - "additionalProperties": false, - "properties": { - "Pid": { - "type": "integer" - } - }, - "type": "object" - }, - "AudioSelector": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "SelectorSettings": { - "$ref": "#/definitions/AudioSelectorSettings" - } - }, - "type": "object" - }, - "AudioSelectorSettings": { - "additionalProperties": false, - "properties": { - "AudioHlsRenditionSelection": { - "$ref": "#/definitions/AudioHlsRenditionSelection" - }, - "AudioLanguageSelection": { - "$ref": "#/definitions/AudioLanguageSelection" - }, - "AudioPidSelection": { - "$ref": "#/definitions/AudioPidSelection" - }, - "AudioTrackSelection": { - "$ref": "#/definitions/AudioTrackSelection" - } - }, - "type": "object" - }, - "AudioSilenceFailoverSettings": { - "additionalProperties": false, - "properties": { - "AudioSelectorName": { - "type": "string" - }, - "AudioSilenceThresholdMsec": { - "type": "integer" - } - }, - "type": "object" - }, - "AudioTrack": { - "additionalProperties": false, - "properties": { - "Track": { - "type": "integer" - } - }, - "type": "object" - }, - "AudioTrackSelection": { - "additionalProperties": false, - "properties": { - "DolbyEDecode": { - "$ref": "#/definitions/AudioDolbyEDecode" - }, - "Tracks": { - "items": { - "$ref": "#/definitions/AudioTrack" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "AudioWatermarkSettings": { - "additionalProperties": false, - "properties": { - "NielsenWatermarksSettings": { - "$ref": "#/definitions/NielsenWatermarksSettings" - } - }, - "type": "object" - }, - "AutomaticInputFailoverSettings": { - "additionalProperties": false, - "properties": { - "ErrorClearTimeMsec": { - "type": "integer" - }, - "FailoverConditions": { - "items": { - "$ref": "#/definitions/FailoverCondition" - }, - "type": "array", - "uniqueItems": false - }, - "InputPreference": { - "type": "string" - }, - "SecondaryInputId": { - "type": "string" - } - }, - "type": "object" - }, - "AvailBlanking": { - "additionalProperties": false, - "properties": { - "AvailBlankingImage": { - "$ref": "#/definitions/InputLocation" - }, - "State": { - "type": "string" - } - }, - "type": "object" - }, - "AvailConfiguration": { - "additionalProperties": false, - "properties": { - "AvailSettings": { - "$ref": "#/definitions/AvailSettings" - }, - "Scte35SegmentationScope": { - "type": "string" - } - }, - "type": "object" - }, - "AvailSettings": { - "additionalProperties": false, - "properties": { - "Esam": { - "$ref": "#/definitions/Esam" - }, - "Scte35SpliceInsert": { - "$ref": "#/definitions/Scte35SpliceInsert" - }, - "Scte35TimeSignalApos": { - "$ref": "#/definitions/Scte35TimeSignalApos" - } - }, - "type": "object" - }, - "BlackoutSlate": { - "additionalProperties": false, - "properties": { - "BlackoutSlateImage": { - "$ref": "#/definitions/InputLocation" - }, - "NetworkEndBlackout": { - "type": "string" - }, - "NetworkEndBlackoutImage": { - "$ref": "#/definitions/InputLocation" - }, - "NetworkId": { - "type": "string" - }, - "State": { - "type": "string" - } - }, - "type": "object" - }, - "BurnInDestinationSettings": { - "additionalProperties": false, - "properties": { - "Alignment": { - "type": "string" - }, - "BackgroundColor": { - "type": "string" - }, - "BackgroundOpacity": { - "type": "integer" - }, - "Font": { - "$ref": "#/definitions/InputLocation" - }, - "FontColor": { - "type": "string" - }, - "FontOpacity": { - "type": "integer" - }, - "FontResolution": { - "type": "integer" - }, - "FontSize": { - "type": "string" - }, - "OutlineColor": { - "type": "string" - }, - "OutlineSize": { - "type": "integer" - }, - "ShadowColor": { - "type": "string" - }, - "ShadowOpacity": { - "type": "integer" - }, - "ShadowXOffset": { - "type": "integer" - }, - "ShadowYOffset": { - "type": "integer" - }, - "TeletextGridControl": { - "type": "string" - }, - "XPosition": { - "type": "integer" - }, - "YPosition": { - "type": "integer" - } - }, - "type": "object" - }, - "CaptionDescription": { - "additionalProperties": false, - "properties": { - "Accessibility": { - "type": "string" - }, - "CaptionDashRoles": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "CaptionSelectorName": { - "type": "string" - }, - "DestinationSettings": { - "$ref": "#/definitions/CaptionDestinationSettings" - }, - "DvbDashAccessibility": { - "type": "string" - }, - "LanguageCode": { - "type": "string" - }, - "LanguageDescription": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "type": "object" - }, - "CaptionDestinationSettings": { - "additionalProperties": false, - "properties": { - "AribDestinationSettings": { - "$ref": "#/definitions/AribDestinationSettings" - }, - "BurnInDestinationSettings": { - "$ref": "#/definitions/BurnInDestinationSettings" - }, - "DvbSubDestinationSettings": { - "$ref": "#/definitions/DvbSubDestinationSettings" - }, - "EbuTtDDestinationSettings": { - "$ref": "#/definitions/EbuTtDDestinationSettings" - }, - "EmbeddedDestinationSettings": { - "$ref": "#/definitions/EmbeddedDestinationSettings" - }, - "EmbeddedPlusScte20DestinationSettings": { - "$ref": "#/definitions/EmbeddedPlusScte20DestinationSettings" - }, - "RtmpCaptionInfoDestinationSettings": { - "$ref": "#/definitions/RtmpCaptionInfoDestinationSettings" - }, - "Scte20PlusEmbeddedDestinationSettings": { - "$ref": "#/definitions/Scte20PlusEmbeddedDestinationSettings" - }, - "Scte27DestinationSettings": { - "$ref": "#/definitions/Scte27DestinationSettings" - }, - "SmpteTtDestinationSettings": { - "$ref": "#/definitions/SmpteTtDestinationSettings" - }, - "TeletextDestinationSettings": { - "$ref": "#/definitions/TeletextDestinationSettings" - }, - "TtmlDestinationSettings": { - "$ref": "#/definitions/TtmlDestinationSettings" - }, - "WebvttDestinationSettings": { - "$ref": "#/definitions/WebvttDestinationSettings" - } - }, - "type": "object" - }, - "CaptionLanguageMapping": { - "additionalProperties": false, - "properties": { - "CaptionChannel": { - "type": "integer" - }, - "LanguageCode": { - "type": "string" - }, - "LanguageDescription": { - "type": "string" - } - }, - "type": "object" - }, - "CaptionRectangle": { - "additionalProperties": false, - "properties": { - "Height": { - "type": "number" - }, - "LeftOffset": { - "type": "number" - }, - "TopOffset": { - "type": "number" - }, - "Width": { - "type": "number" - } - }, - "type": "object" - }, - "CaptionSelector": { - "additionalProperties": false, - "properties": { - "LanguageCode": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "SelectorSettings": { - "$ref": "#/definitions/CaptionSelectorSettings" - } - }, - "type": "object" - }, - "CaptionSelectorSettings": { - "additionalProperties": false, - "properties": { - "AncillarySourceSettings": { - "$ref": "#/definitions/AncillarySourceSettings" - }, - "AribSourceSettings": { - "$ref": "#/definitions/AribSourceSettings" - }, - "DvbSubSourceSettings": { - "$ref": "#/definitions/DvbSubSourceSettings" - }, - "EmbeddedSourceSettings": { - "$ref": "#/definitions/EmbeddedSourceSettings" - }, - "Scte20SourceSettings": { - "$ref": "#/definitions/Scte20SourceSettings" - }, - "Scte27SourceSettings": { - "$ref": "#/definitions/Scte27SourceSettings" - }, - "TeletextSourceSettings": { - "$ref": "#/definitions/TeletextSourceSettings" - } - }, - "type": "object" - }, - "CdiInputSpecification": { - "additionalProperties": false, - "properties": { - "Resolution": { - "type": "string" - } - }, - "type": "object" - }, - "CmafIngestGroupSettings": { - "additionalProperties": false, - "properties": { - "Destination": { - "$ref": "#/definitions/OutputLocationRef" - }, - "NielsenId3Behavior": { - "type": "string" - }, - "Scte35Type": { - "type": "string" - }, - "SegmentLength": { - "type": "integer" - }, - "SegmentLengthUnits": { - "type": "string" - }, - "SendDelayMs": { - "type": "integer" - } - }, - "type": "object" - }, - "CmafIngestOutputSettings": { - "additionalProperties": false, - "properties": { - "NameModifier": { - "type": "string" - } - }, - "type": "object" - }, - "ColorCorrection": { - "additionalProperties": false, - "properties": { - "InputColorSpace": { - "type": "string" - }, - "OutputColorSpace": { - "type": "string" - }, - "Uri": { - "type": "string" - } - }, - "type": "object" - }, - "ColorCorrectionSettings": { - "additionalProperties": false, - "properties": { - "GlobalColorCorrections": { - "items": { - "$ref": "#/definitions/ColorCorrection" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "ColorSpacePassthroughSettings": { - "additionalProperties": false, - "type": "object" - }, - "DolbyVision81Settings": { - "additionalProperties": false, - "type": "object" - }, - "DvbNitSettings": { - "additionalProperties": false, - "properties": { - "NetworkId": { - "type": "integer" - }, - "NetworkName": { - "type": "string" - }, - "RepInterval": { - "type": "integer" - } - }, - "type": "object" - }, - "DvbSdtSettings": { - "additionalProperties": false, - "properties": { - "OutputSdt": { - "type": "string" - }, - "RepInterval": { - "type": "integer" - }, - "ServiceName": { - "type": "string" - }, - "ServiceProviderName": { - "type": "string" - } - }, - "type": "object" - }, - "DvbSubDestinationSettings": { - "additionalProperties": false, - "properties": { - "Alignment": { - "type": "string" - }, - "BackgroundColor": { - "type": "string" - }, - "BackgroundOpacity": { - "type": "integer" - }, - "Font": { - "$ref": "#/definitions/InputLocation" - }, - "FontColor": { - "type": "string" - }, - "FontOpacity": { - "type": "integer" - }, - "FontResolution": { - "type": "integer" - }, - "FontSize": { - "type": "string" - }, - "OutlineColor": { - "type": "string" - }, - "OutlineSize": { - "type": "integer" - }, - "ShadowColor": { - "type": "string" - }, - "ShadowOpacity": { - "type": "integer" - }, - "ShadowXOffset": { - "type": "integer" - }, - "ShadowYOffset": { - "type": "integer" - }, - "TeletextGridControl": { - "type": "string" - }, - "XPosition": { - "type": "integer" - }, - "YPosition": { - "type": "integer" - } - }, - "type": "object" - }, - "DvbSubSourceSettings": { - "additionalProperties": false, - "properties": { - "OcrLanguage": { - "type": "string" - }, - "Pid": { - "type": "integer" - } - }, - "type": "object" - }, - "DvbTdtSettings": { - "additionalProperties": false, - "properties": { - "RepInterval": { - "type": "integer" - } - }, - "type": "object" - }, - "Eac3AtmosSettings": { - "additionalProperties": false, - "properties": { - "Bitrate": { - "type": "number" - }, - "CodingMode": { - "type": "string" - }, - "Dialnorm": { - "type": "integer" - }, - "DrcLine": { - "type": "string" - }, - "DrcRf": { - "type": "string" - }, - "HeightTrim": { - "type": "number" - }, - "SurroundTrim": { - "type": "number" - } - }, - "type": "object" - }, - "Eac3Settings": { - "additionalProperties": false, - "properties": { - "AttenuationControl": { - "type": "string" - }, - "Bitrate": { - "type": "number" - }, - "BitstreamMode": { - "type": "string" - }, - "CodingMode": { - "type": "string" - }, - "DcFilter": { - "type": "string" - }, - "Dialnorm": { - "type": "integer" - }, - "DrcLine": { - "type": "string" - }, - "DrcRf": { - "type": "string" - }, - "LfeControl": { - "type": "string" - }, - "LfeFilter": { - "type": "string" - }, - "LoRoCenterMixLevel": { - "type": "number" - }, - "LoRoSurroundMixLevel": { - "type": "number" - }, - "LtRtCenterMixLevel": { - "type": "number" - }, - "LtRtSurroundMixLevel": { - "type": "number" - }, - "MetadataControl": { - "type": "string" - }, - "PassthroughControl": { - "type": "string" - }, - "PhaseControl": { - "type": "string" - }, - "StereoDownmix": { - "type": "string" - }, - "SurroundExMode": { - "type": "string" - }, - "SurroundMode": { - "type": "string" - } - }, - "type": "object" - }, - "EbuTtDDestinationSettings": { - "additionalProperties": false, - "properties": { - "CopyrightHolder": { - "type": "string" - }, - "FillLineGap": { - "type": "string" - }, - "FontFamily": { - "type": "string" - }, - "StyleControl": { - "type": "string" - } - }, - "type": "object" - }, - "EmbeddedDestinationSettings": { - "additionalProperties": false, - "type": "object" - }, - "EmbeddedPlusScte20DestinationSettings": { - "additionalProperties": false, - "type": "object" - }, - "EmbeddedSourceSettings": { - "additionalProperties": false, - "properties": { - "Convert608To708": { - "type": "string" - }, - "Scte20Detection": { - "type": "string" - }, - "Source608ChannelNumber": { - "type": "integer" - }, - "Source608TrackNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "EncoderSettings": { - "additionalProperties": false, - "properties": { - "AudioDescriptions": { - "items": { - "$ref": "#/definitions/AudioDescription" - }, - "type": "array", - "uniqueItems": false - }, - "AvailBlanking": { - "$ref": "#/definitions/AvailBlanking" - }, - "AvailConfiguration": { - "$ref": "#/definitions/AvailConfiguration" - }, - "BlackoutSlate": { - "$ref": "#/definitions/BlackoutSlate" - }, - "CaptionDescriptions": { - "items": { - "$ref": "#/definitions/CaptionDescription" - }, - "type": "array", - "uniqueItems": false - }, - "ColorCorrectionSettings": { - "$ref": "#/definitions/ColorCorrectionSettings" - }, - "FeatureActivations": { - "$ref": "#/definitions/FeatureActivations" - }, - "GlobalConfiguration": { - "$ref": "#/definitions/GlobalConfiguration" - }, - "MotionGraphicsConfiguration": { - "$ref": "#/definitions/MotionGraphicsConfiguration" - }, - "NielsenConfiguration": { - "$ref": "#/definitions/NielsenConfiguration" - }, - "OutputGroups": { - "items": { - "$ref": "#/definitions/OutputGroup" - }, - "type": "array", - "uniqueItems": false - }, - "ThumbnailConfiguration": { - "$ref": "#/definitions/ThumbnailConfiguration" - }, - "TimecodeConfig": { - "$ref": "#/definitions/TimecodeConfig" - }, - "VideoDescriptions": { - "items": { - "$ref": "#/definitions/VideoDescription" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "EpochLockingSettings": { - "additionalProperties": false, - "properties": { - "CustomEpoch": { - "type": "string" - }, - "JamSyncTime": { - "type": "string" - } - }, - "type": "object" - }, - "Esam": { - "additionalProperties": false, - "properties": { - "AcquisitionPointId": { - "type": "string" - }, - "AdAvailOffset": { - "type": "integer" - }, - "PasswordParam": { - "type": "string" - }, - "PoisEndpoint": { - "type": "string" - }, - "Username": { - "type": "string" - }, - "ZoneIdentity": { - "type": "string" - } - }, - "type": "object" - }, - "FailoverCondition": { - "additionalProperties": false, - "properties": { - "FailoverConditionSettings": { - "$ref": "#/definitions/FailoverConditionSettings" - } - }, - "type": "object" - }, - "FailoverConditionSettings": { - "additionalProperties": false, - "properties": { - "AudioSilenceSettings": { - "$ref": "#/definitions/AudioSilenceFailoverSettings" - }, - "InputLossSettings": { - "$ref": "#/definitions/InputLossFailoverSettings" - }, - "VideoBlackSettings": { - "$ref": "#/definitions/VideoBlackFailoverSettings" - } - }, - "type": "object" - }, - "FeatureActivations": { - "additionalProperties": false, - "properties": { - "InputPrepareScheduleActions": { - "type": "string" - }, - "OutputStaticImageOverlayScheduleActions": { - "type": "string" - } - }, - "type": "object" - }, - "FecOutputSettings": { - "additionalProperties": false, - "properties": { - "ColumnDepth": { - "type": "integer" - }, - "IncludeFec": { - "type": "string" - }, - "RowLength": { - "type": "integer" - } - }, - "type": "object" - }, - "Fmp4HlsSettings": { - "additionalProperties": false, - "properties": { - "AudioRenditionSets": { - "type": "string" - }, - "NielsenId3Behavior": { - "type": "string" - }, - "TimedMetadataBehavior": { - "type": "string" - } - }, - "type": "object" - }, - "FrameCaptureCdnSettings": { - "additionalProperties": false, - "properties": { - "FrameCaptureS3Settings": { - "$ref": "#/definitions/FrameCaptureS3Settings" - } - }, - "type": "object" - }, - "FrameCaptureGroupSettings": { - "additionalProperties": false, - "properties": { - "Destination": { - "$ref": "#/definitions/OutputLocationRef" - }, - "FrameCaptureCdnSettings": { - "$ref": "#/definitions/FrameCaptureCdnSettings" - } - }, - "type": "object" - }, - "FrameCaptureHlsSettings": { - "additionalProperties": false, - "type": "object" - }, - "FrameCaptureOutputSettings": { - "additionalProperties": false, - "properties": { - "NameModifier": { - "type": "string" - } - }, - "type": "object" - }, - "FrameCaptureS3Settings": { - "additionalProperties": false, - "properties": { - "CannedAcl": { - "type": "string" - } - }, - "type": "object" - }, - "FrameCaptureSettings": { - "additionalProperties": false, - "properties": { - "CaptureInterval": { - "type": "integer" - }, - "CaptureIntervalUnits": { - "type": "string" - }, - "TimecodeBurninSettings": { - "$ref": "#/definitions/TimecodeBurninSettings" - } - }, - "type": "object" - }, - "GlobalConfiguration": { - "additionalProperties": false, - "properties": { - "InitialAudioGain": { - "type": "integer" - }, - "InputEndAction": { - "type": "string" - }, - "InputLossBehavior": { - "$ref": "#/definitions/InputLossBehavior" - }, - "OutputLockingMode": { - "type": "string" - }, - "OutputLockingSettings": { - "$ref": "#/definitions/OutputLockingSettings" - }, - "OutputTimingSource": { - "type": "string" - }, - "SupportLowFramerateInputs": { - "type": "string" - } - }, - "type": "object" - }, - "H264ColorSpaceSettings": { - "additionalProperties": false, - "properties": { - "ColorSpacePassthroughSettings": { - "$ref": "#/definitions/ColorSpacePassthroughSettings" - }, - "Rec601Settings": { - "$ref": "#/definitions/Rec601Settings" - }, - "Rec709Settings": { - "$ref": "#/definitions/Rec709Settings" - } - }, - "type": "object" - }, - "H264FilterSettings": { - "additionalProperties": false, - "properties": { - "TemporalFilterSettings": { - "$ref": "#/definitions/TemporalFilterSettings" - } - }, - "type": "object" - }, - "H264Settings": { - "additionalProperties": false, - "properties": { - "AdaptiveQuantization": { - "type": "string" - }, - "AfdSignaling": { - "type": "string" - }, - "Bitrate": { - "type": "integer" - }, - "BufFillPct": { - "type": "integer" - }, - "BufSize": { - "type": "integer" - }, - "ColorMetadata": { - "type": "string" - }, - "ColorSpaceSettings": { - "$ref": "#/definitions/H264ColorSpaceSettings" - }, - "EntropyEncoding": { - "type": "string" - }, - "FilterSettings": { - "$ref": "#/definitions/H264FilterSettings" - }, - "FixedAfd": { - "type": "string" - }, - "FlickerAq": { - "type": "string" - }, - "ForceFieldPictures": { - "type": "string" - }, - "FramerateControl": { - "type": "string" - }, - "FramerateDenominator": { - "type": "integer" - }, - "FramerateNumerator": { - "type": "integer" - }, - "GopBReference": { - "type": "string" - }, - "GopClosedCadence": { - "type": "integer" - }, - "GopNumBFrames": { - "type": "integer" - }, - "GopSize": { - "type": "number" - }, - "GopSizeUnits": { - "type": "string" - }, - "Level": { - "type": "string" - }, - "LookAheadRateControl": { - "type": "string" - }, - "MaxBitrate": { - "type": "integer" - }, - "MinIInterval": { - "type": "integer" - }, - "MinQp": { - "type": "integer" - }, - "NumRefFrames": { - "type": "integer" - }, - "ParControl": { - "type": "string" - }, - "ParDenominator": { - "type": "integer" - }, - "ParNumerator": { - "type": "integer" - }, - "Profile": { - "type": "string" - }, - "QualityLevel": { - "type": "string" - }, - "QvbrQualityLevel": { - "type": "integer" - }, - "RateControlMode": { - "type": "string" - }, - "ScanType": { - "type": "string" - }, - "SceneChangeDetect": { - "type": "string" - }, - "Slices": { - "type": "integer" - }, - "Softness": { - "type": "integer" - }, - "SpatialAq": { - "type": "string" - }, - "SubgopLength": { - "type": "string" - }, - "Syntax": { - "type": "string" - }, - "TemporalAq": { - "type": "string" - }, - "TimecodeBurninSettings": { - "$ref": "#/definitions/TimecodeBurninSettings" - }, - "TimecodeInsertion": { - "type": "string" - } - }, - "type": "object" - }, - "H265ColorSpaceSettings": { - "additionalProperties": false, - "properties": { - "ColorSpacePassthroughSettings": { - "$ref": "#/definitions/ColorSpacePassthroughSettings" - }, - "DolbyVision81Settings": { - "$ref": "#/definitions/DolbyVision81Settings" - }, - "Hdr10Settings": { - "$ref": "#/definitions/Hdr10Settings" - }, - "Rec601Settings": { - "$ref": "#/definitions/Rec601Settings" - }, - "Rec709Settings": { - "$ref": "#/definitions/Rec709Settings" - } - }, - "type": "object" - }, - "H265FilterSettings": { - "additionalProperties": false, - "properties": { - "TemporalFilterSettings": { - "$ref": "#/definitions/TemporalFilterSettings" - } - }, - "type": "object" - }, - "H265Settings": { - "additionalProperties": false, - "properties": { - "AdaptiveQuantization": { - "type": "string" - }, - "AfdSignaling": { - "type": "string" - }, - "AlternativeTransferFunction": { - "type": "string" - }, - "Bitrate": { - "type": "integer" - }, - "BufSize": { - "type": "integer" - }, - "ColorMetadata": { - "type": "string" - }, - "ColorSpaceSettings": { - "$ref": "#/definitions/H265ColorSpaceSettings" - }, - "FilterSettings": { - "$ref": "#/definitions/H265FilterSettings" - }, - "FixedAfd": { - "type": "string" - }, - "FlickerAq": { - "type": "string" - }, - "FramerateDenominator": { - "type": "integer" - }, - "FramerateNumerator": { - "type": "integer" - }, - "GopClosedCadence": { - "type": "integer" - }, - "GopSize": { - "type": "number" - }, - "GopSizeUnits": { - "type": "string" - }, - "Level": { - "type": "string" - }, - "LookAheadRateControl": { - "type": "string" - }, - "MaxBitrate": { - "type": "integer" - }, - "MinIInterval": { - "type": "integer" - }, - "MinQp": { - "type": "integer" - }, - "MvOverPictureBoundaries": { - "type": "string" - }, - "MvTemporalPredictor": { - "type": "string" - }, - "ParDenominator": { - "type": "integer" - }, - "ParNumerator": { - "type": "integer" - }, - "Profile": { - "type": "string" - }, - "QvbrQualityLevel": { - "type": "integer" - }, - "RateControlMode": { - "type": "string" - }, - "ScanType": { - "type": "string" - }, - "SceneChangeDetect": { - "type": "string" - }, - "Slices": { - "type": "integer" - }, - "Tier": { - "type": "string" - }, - "TileHeight": { - "type": "integer" - }, - "TilePadding": { - "type": "string" - }, - "TileWidth": { - "type": "integer" - }, - "TimecodeBurninSettings": { - "$ref": "#/definitions/TimecodeBurninSettings" - }, - "TimecodeInsertion": { - "type": "string" - }, - "TreeblockSize": { - "type": "string" - } - }, - "type": "object" - }, - "Hdr10Settings": { - "additionalProperties": false, - "properties": { - "MaxCll": { - "type": "integer" - }, - "MaxFall": { - "type": "integer" - } - }, - "type": "object" - }, - "HlsAkamaiSettings": { - "additionalProperties": false, - "properties": { - "ConnectionRetryInterval": { - "type": "integer" - }, - "FilecacheDuration": { - "type": "integer" - }, - "HttpTransferMode": { - "type": "string" - }, - "NumRetries": { - "type": "integer" - }, - "RestartDelay": { - "type": "integer" - }, - "Salt": { - "type": "string" - }, - "Token": { - "type": "string" - } - }, - "type": "object" - }, - "HlsBasicPutSettings": { - "additionalProperties": false, - "properties": { - "ConnectionRetryInterval": { - "type": "integer" - }, - "FilecacheDuration": { - "type": "integer" - }, - "NumRetries": { - "type": "integer" - }, - "RestartDelay": { - "type": "integer" - } - }, - "type": "object" - }, - "HlsCdnSettings": { - "additionalProperties": false, - "properties": { - "HlsAkamaiSettings": { - "$ref": "#/definitions/HlsAkamaiSettings" - }, - "HlsBasicPutSettings": { - "$ref": "#/definitions/HlsBasicPutSettings" - }, - "HlsMediaStoreSettings": { - "$ref": "#/definitions/HlsMediaStoreSettings" - }, - "HlsS3Settings": { - "$ref": "#/definitions/HlsS3Settings" - }, - "HlsWebdavSettings": { - "$ref": "#/definitions/HlsWebdavSettings" - } - }, - "type": "object" - }, - "HlsGroupSettings": { - "additionalProperties": false, - "properties": { - "AdMarkers": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "BaseUrlContent": { - "type": "string" - }, - "BaseUrlContent1": { - "type": "string" - }, - "BaseUrlManifest": { - "type": "string" - }, - "BaseUrlManifest1": { - "type": "string" - }, - "CaptionLanguageMappings": { - "items": { - "$ref": "#/definitions/CaptionLanguageMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CaptionLanguageSetting": { - "type": "string" - }, - "ClientCache": { - "type": "string" - }, - "CodecSpecification": { - "type": "string" - }, - "ConstantIv": { - "type": "string" - }, - "Destination": { - "$ref": "#/definitions/OutputLocationRef" - }, - "DirectoryStructure": { - "type": "string" - }, - "DiscontinuityTags": { - "type": "string" - }, - "EncryptionType": { - "type": "string" - }, - "HlsCdnSettings": { - "$ref": "#/definitions/HlsCdnSettings" - }, - "HlsId3SegmentTagging": { - "type": "string" - }, - "IFrameOnlyPlaylists": { - "type": "string" - }, - "IncompleteSegmentBehavior": { - "type": "string" - }, - "IndexNSegments": { - "type": "integer" - }, - "InputLossAction": { - "type": "string" - }, - "IvInManifest": { - "type": "string" - }, - "IvSource": { - "type": "string" - }, - "KeepSegments": { - "type": "integer" - }, - "KeyFormat": { - "type": "string" - }, - "KeyFormatVersions": { - "type": "string" - }, - "KeyProviderSettings": { - "$ref": "#/definitions/KeyProviderSettings" - }, - "ManifestCompression": { - "type": "string" - }, - "ManifestDurationFormat": { - "type": "string" - }, - "MinSegmentLength": { - "type": "integer" - }, - "Mode": { - "type": "string" - }, - "OutputSelection": { - "type": "string" - }, - "ProgramDateTime": { - "type": "string" - }, - "ProgramDateTimeClock": { - "type": "string" - }, - "ProgramDateTimePeriod": { - "type": "integer" - }, - "RedundantManifest": { - "type": "string" - }, - "SegmentLength": { - "type": "integer" - }, - "SegmentationMode": { - "type": "string" - }, - "SegmentsPerSubdirectory": { - "type": "integer" - }, - "StreamInfResolution": { - "type": "string" - }, - "TimedMetadataId3Frame": { - "type": "string" - }, - "TimedMetadataId3Period": { - "type": "integer" - }, - "TimestampDeltaMilliseconds": { - "type": "integer" - }, - "TsFileMode": { - "type": "string" - } - }, - "type": "object" - }, - "HlsInputSettings": { - "additionalProperties": false, - "properties": { - "Bandwidth": { - "type": "integer" - }, - "BufferSegments": { - "type": "integer" - }, - "Retries": { - "type": "integer" - }, - "RetryInterval": { - "type": "integer" - }, - "Scte35Source": { - "type": "string" - } - }, - "type": "object" - }, - "HlsMediaStoreSettings": { - "additionalProperties": false, - "properties": { - "ConnectionRetryInterval": { - "type": "integer" - }, - "FilecacheDuration": { - "type": "integer" - }, - "MediaStoreStorageClass": { - "type": "string" - }, - "NumRetries": { - "type": "integer" - }, - "RestartDelay": { - "type": "integer" - } - }, - "type": "object" - }, - "HlsOutputSettings": { - "additionalProperties": false, - "properties": { - "H265PackagingType": { - "type": "string" - }, - "HlsSettings": { - "$ref": "#/definitions/HlsSettings" - }, - "NameModifier": { - "type": "string" - }, - "SegmentModifier": { - "type": "string" - } - }, - "type": "object" - }, - "HlsS3Settings": { - "additionalProperties": false, - "properties": { - "CannedAcl": { - "type": "string" - } - }, - "type": "object" - }, - "HlsSettings": { - "additionalProperties": false, - "properties": { - "AudioOnlyHlsSettings": { - "$ref": "#/definitions/AudioOnlyHlsSettings" - }, - "Fmp4HlsSettings": { - "$ref": "#/definitions/Fmp4HlsSettings" - }, - "FrameCaptureHlsSettings": { - "$ref": "#/definitions/FrameCaptureHlsSettings" - }, - "StandardHlsSettings": { - "$ref": "#/definitions/StandardHlsSettings" - } - }, - "type": "object" - }, - "HlsWebdavSettings": { - "additionalProperties": false, - "properties": { - "ConnectionRetryInterval": { - "type": "integer" - }, - "FilecacheDuration": { - "type": "integer" - }, - "HttpTransferMode": { - "type": "string" - }, - "NumRetries": { - "type": "integer" - }, - "RestartDelay": { - "type": "integer" - } - }, - "type": "object" - }, - "HtmlMotionGraphicsSettings": { - "additionalProperties": false, - "type": "object" - }, - "InputAttachment": { - "additionalProperties": false, - "properties": { - "AutomaticInputFailoverSettings": { - "$ref": "#/definitions/AutomaticInputFailoverSettings" - }, - "InputAttachmentName": { - "type": "string" - }, - "InputId": { - "type": "string" - }, - "InputSettings": { - "$ref": "#/definitions/InputSettings" - } - }, - "type": "object" - }, - "InputChannelLevel": { - "additionalProperties": false, - "properties": { - "Gain": { - "type": "integer" - }, - "InputChannel": { - "type": "integer" - } - }, - "type": "object" - }, - "InputLocation": { - "additionalProperties": false, - "properties": { - "PasswordParam": { - "type": "string" - }, - "Uri": { - "type": "string" - }, - "Username": { - "type": "string" - } - }, - "type": "object" - }, - "InputLossBehavior": { - "additionalProperties": false, - "properties": { - "BlackFrameMsec": { - "type": "integer" - }, - "InputLossImageColor": { - "type": "string" - }, - "InputLossImageSlate": { - "$ref": "#/definitions/InputLocation" - }, - "InputLossImageType": { - "type": "string" - }, - "RepeatFrameMsec": { - "type": "integer" - } - }, - "type": "object" - }, - "InputLossFailoverSettings": { - "additionalProperties": false, - "properties": { - "InputLossThresholdMsec": { - "type": "integer" - } - }, - "type": "object" - }, - "InputSettings": { - "additionalProperties": false, - "properties": { - "AudioSelectors": { - "items": { - "$ref": "#/definitions/AudioSelector" - }, - "type": "array", - "uniqueItems": false - }, - "CaptionSelectors": { - "items": { - "$ref": "#/definitions/CaptionSelector" - }, - "type": "array", - "uniqueItems": false - }, - "DeblockFilter": { - "type": "string" - }, - "DenoiseFilter": { - "type": "string" - }, - "FilterStrength": { - "type": "integer" - }, - "InputFilter": { - "type": "string" - }, - "NetworkInputSettings": { - "$ref": "#/definitions/NetworkInputSettings" - }, - "Scte35Pid": { - "type": "integer" - }, - "Smpte2038DataPreference": { - "type": "string" - }, - "SourceEndBehavior": { - "type": "string" - }, - "VideoSelector": { - "$ref": "#/definitions/VideoSelector" - } - }, - "type": "object" - }, - "InputSpecification": { - "additionalProperties": false, - "properties": { - "Codec": { - "type": "string" - }, - "MaximumBitrate": { - "type": "string" - }, - "Resolution": { - "type": "string" - } - }, - "type": "object" - }, - "KeyProviderSettings": { - "additionalProperties": false, - "properties": { - "StaticKeySettings": { - "$ref": "#/definitions/StaticKeySettings" - } - }, - "type": "object" - }, - "M2tsSettings": { - "additionalProperties": false, - "properties": { - "AbsentInputAudioBehavior": { - "type": "string" - }, - "Arib": { - "type": "string" - }, - "AribCaptionsPid": { - "type": "string" - }, - "AribCaptionsPidControl": { - "type": "string" - }, - "AudioBufferModel": { - "type": "string" - }, - "AudioFramesPerPes": { - "type": "integer" - }, - "AudioPids": { - "type": "string" - }, - "AudioStreamType": { - "type": "string" - }, - "Bitrate": { - "type": "integer" - }, - "BufferModel": { - "type": "string" - }, - "CcDescriptor": { - "type": "string" - }, - "DvbNitSettings": { - "$ref": "#/definitions/DvbNitSettings" - }, - "DvbSdtSettings": { - "$ref": "#/definitions/DvbSdtSettings" - }, - "DvbSubPids": { - "type": "string" - }, - "DvbTdtSettings": { - "$ref": "#/definitions/DvbTdtSettings" - }, - "DvbTeletextPid": { - "type": "string" - }, - "Ebif": { - "type": "string" - }, - "EbpAudioInterval": { - "type": "string" - }, - "EbpLookaheadMs": { - "type": "integer" - }, - "EbpPlacement": { - "type": "string" - }, - "EcmPid": { - "type": "string" - }, - "EsRateInPes": { - "type": "string" - }, - "EtvPlatformPid": { - "type": "string" - }, - "EtvSignalPid": { - "type": "string" - }, - "FragmentTime": { - "type": "number" - }, - "Klv": { - "type": "string" - }, - "KlvDataPids": { - "type": "string" - }, - "NielsenId3Behavior": { - "type": "string" - }, - "NullPacketBitrate": { - "type": "number" - }, - "PatInterval": { - "type": "integer" - }, - "PcrControl": { - "type": "string" - }, - "PcrPeriod": { - "type": "integer" - }, - "PcrPid": { - "type": "string" - }, - "PmtInterval": { - "type": "integer" - }, - "PmtPid": { - "type": "string" - }, - "ProgramNum": { - "type": "integer" - }, - "RateMode": { - "type": "string" - }, - "Scte27Pids": { - "type": "string" - }, - "Scte35Control": { - "type": "string" - }, - "Scte35Pid": { - "type": "string" - }, - "Scte35PrerollPullupMilliseconds": { - "type": "number" - }, - "SegmentationMarkers": { - "type": "string" - }, - "SegmentationStyle": { - "type": "string" - }, - "SegmentationTime": { - "type": "number" - }, - "TimedMetadataBehavior": { - "type": "string" - }, - "TimedMetadataPid": { - "type": "string" - }, - "TransportStreamId": { - "type": "integer" - }, - "VideoPid": { - "type": "string" - } - }, - "type": "object" - }, - "M3u8Settings": { - "additionalProperties": false, - "properties": { - "AudioFramesPerPes": { - "type": "integer" - }, - "AudioPids": { - "type": "string" - }, - "EcmPid": { - "type": "string" - }, - "KlvBehavior": { - "type": "string" - }, - "KlvDataPids": { - "type": "string" - }, - "NielsenId3Behavior": { - "type": "string" - }, - "PatInterval": { - "type": "integer" - }, - "PcrControl": { - "type": "string" - }, - "PcrPeriod": { - "type": "integer" - }, - "PcrPid": { - "type": "string" - }, - "PmtInterval": { - "type": "integer" - }, - "PmtPid": { - "type": "string" - }, - "ProgramNum": { - "type": "integer" - }, - "Scte35Behavior": { - "type": "string" - }, - "Scte35Pid": { - "type": "string" - }, - "TimedMetadataBehavior": { - "type": "string" - }, - "TimedMetadataPid": { - "type": "string" - }, - "TransportStreamId": { - "type": "integer" - }, - "VideoPid": { - "type": "string" - } - }, - "type": "object" - }, - "MaintenanceCreateSettings": { - "additionalProperties": false, - "properties": { - "MaintenanceDay": { - "type": "string" - }, - "MaintenanceStartTime": { - "type": "string" - } - }, - "type": "object" - }, - "MediaPackageGroupSettings": { - "additionalProperties": false, - "properties": { - "Destination": { - "$ref": "#/definitions/OutputLocationRef" - } - }, - "type": "object" - }, - "MediaPackageOutputDestinationSettings": { - "additionalProperties": false, - "properties": { - "ChannelId": { - "type": "string" - } - }, - "type": "object" - }, - "MediaPackageOutputSettings": { - "additionalProperties": false, - "type": "object" - }, - "MotionGraphicsConfiguration": { - "additionalProperties": false, - "properties": { - "MotionGraphicsInsertion": { - "type": "string" - }, - "MotionGraphicsSettings": { - "$ref": "#/definitions/MotionGraphicsSettings" - } - }, - "type": "object" - }, - "MotionGraphicsSettings": { - "additionalProperties": false, - "properties": { - "HtmlMotionGraphicsSettings": { - "$ref": "#/definitions/HtmlMotionGraphicsSettings" - } - }, - "type": "object" - }, - "Mp2Settings": { - "additionalProperties": false, - "properties": { - "Bitrate": { - "type": "number" - }, - "CodingMode": { - "type": "string" - }, - "SampleRate": { - "type": "number" - } - }, - "type": "object" - }, - "Mpeg2FilterSettings": { - "additionalProperties": false, - "properties": { - "TemporalFilterSettings": { - "$ref": "#/definitions/TemporalFilterSettings" - } - }, - "type": "object" - }, - "Mpeg2Settings": { - "additionalProperties": false, - "properties": { - "AdaptiveQuantization": { - "type": "string" - }, - "AfdSignaling": { - "type": "string" - }, - "ColorMetadata": { - "type": "string" - }, - "ColorSpace": { - "type": "string" - }, - "DisplayAspectRatio": { - "type": "string" - }, - "FilterSettings": { - "$ref": "#/definitions/Mpeg2FilterSettings" - }, - "FixedAfd": { - "type": "string" - }, - "FramerateDenominator": { - "type": "integer" - }, - "FramerateNumerator": { - "type": "integer" - }, - "GopClosedCadence": { - "type": "integer" - }, - "GopNumBFrames": { - "type": "integer" - }, - "GopSize": { - "type": "number" - }, - "GopSizeUnits": { - "type": "string" - }, - "ScanType": { - "type": "string" - }, - "SubgopLength": { - "type": "string" - }, - "TimecodeBurninSettings": { - "$ref": "#/definitions/TimecodeBurninSettings" - }, - "TimecodeInsertion": { - "type": "string" - } - }, - "type": "object" - }, - "MsSmoothGroupSettings": { - "additionalProperties": false, - "properties": { - "AcquisitionPointId": { - "type": "string" - }, - "AudioOnlyTimecodeControl": { - "type": "string" - }, - "CertificateMode": { - "type": "string" - }, - "ConnectionRetryInterval": { - "type": "integer" - }, - "Destination": { - "$ref": "#/definitions/OutputLocationRef" - }, - "EventId": { - "type": "string" - }, - "EventIdMode": { - "type": "string" - }, - "EventStopBehavior": { - "type": "string" - }, - "FilecacheDuration": { - "type": "integer" - }, - "FragmentLength": { - "type": "integer" - }, - "InputLossAction": { - "type": "string" - }, - "NumRetries": { - "type": "integer" - }, - "RestartDelay": { - "type": "integer" - }, - "SegmentationMode": { - "type": "string" - }, - "SendDelayMs": { - "type": "integer" - }, - "SparseTrackType": { - "type": "string" - }, - "StreamManifestBehavior": { - "type": "string" - }, - "TimestampOffset": { - "type": "string" - }, - "TimestampOffsetMode": { - "type": "string" - } - }, - "type": "object" - }, - "MsSmoothOutputSettings": { - "additionalProperties": false, - "properties": { - "H265PackagingType": { - "type": "string" - }, - "NameModifier": { - "type": "string" - } - }, - "type": "object" - }, - "MultiplexGroupSettings": { - "additionalProperties": false, - "type": "object" - }, - "MultiplexOutputSettings": { - "additionalProperties": false, - "properties": { - "Destination": { - "$ref": "#/definitions/OutputLocationRef" - } - }, - "type": "object" - }, - "MultiplexProgramChannelDestinationSettings": { - "additionalProperties": false, - "properties": { - "MultiplexId": { - "type": "string" - }, - "ProgramName": { - "type": "string" - } - }, - "type": "object" - }, - "NetworkInputSettings": { - "additionalProperties": false, - "properties": { - "HlsInputSettings": { - "$ref": "#/definitions/HlsInputSettings" - }, - "ServerValidation": { - "type": "string" - } - }, - "type": "object" - }, - "NielsenCBET": { - "additionalProperties": false, - "properties": { - "CbetCheckDigitString": { - "type": "string" - }, - "CbetStepaside": { - "type": "string" - }, - "Csid": { - "type": "string" - } - }, - "type": "object" - }, - "NielsenConfiguration": { - "additionalProperties": false, - "properties": { - "DistributorId": { - "type": "string" - }, - "NielsenPcmToId3Tagging": { - "type": "string" - } - }, - "type": "object" - }, - "NielsenNaesIiNw": { - "additionalProperties": false, - "properties": { - "CheckDigitString": { - "type": "string" - }, - "Sid": { - "type": "number" - }, - "Timezone": { - "type": "string" - } - }, - "type": "object" - }, - "NielsenWatermarksSettings": { - "additionalProperties": false, - "properties": { - "NielsenCbetSettings": { - "$ref": "#/definitions/NielsenCBET" - }, - "NielsenDistributionType": { - "type": "string" - }, - "NielsenNaesIiNwSettings": { - "$ref": "#/definitions/NielsenNaesIiNw" - } - }, - "type": "object" - }, - "Output": { - "additionalProperties": false, - "properties": { - "AudioDescriptionNames": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "CaptionDescriptionNames": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "OutputName": { - "type": "string" - }, - "OutputSettings": { - "$ref": "#/definitions/OutputSettings" - }, - "VideoDescriptionName": { - "type": "string" - } - }, - "type": "object" - }, - "OutputDestination": { - "additionalProperties": false, - "properties": { - "Id": { - "type": "string" - }, - "MediaPackageSettings": { - "items": { - "$ref": "#/definitions/MediaPackageOutputDestinationSettings" - }, - "type": "array", - "uniqueItems": false - }, - "MultiplexSettings": { - "$ref": "#/definitions/MultiplexProgramChannelDestinationSettings" - }, - "Settings": { - "items": { - "$ref": "#/definitions/OutputDestinationSettings" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "OutputDestinationSettings": { - "additionalProperties": false, - "properties": { - "PasswordParam": { - "type": "string" - }, - "StreamName": { - "type": "string" - }, - "Url": { - "type": "string" - }, - "Username": { - "type": "string" - } - }, - "type": "object" - }, - "OutputGroup": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "OutputGroupSettings": { - "$ref": "#/definitions/OutputGroupSettings" - }, - "Outputs": { - "items": { - "$ref": "#/definitions/Output" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "OutputGroupSettings": { - "additionalProperties": false, - "properties": { - "ArchiveGroupSettings": { - "$ref": "#/definitions/ArchiveGroupSettings" - }, - "CmafIngestGroupSettings": { - "$ref": "#/definitions/CmafIngestGroupSettings" - }, - "FrameCaptureGroupSettings": { - "$ref": "#/definitions/FrameCaptureGroupSettings" - }, - "HlsGroupSettings": { - "$ref": "#/definitions/HlsGroupSettings" - }, - "MediaPackageGroupSettings": { - "$ref": "#/definitions/MediaPackageGroupSettings" - }, - "MsSmoothGroupSettings": { - "$ref": "#/definitions/MsSmoothGroupSettings" - }, - "MultiplexGroupSettings": { - "$ref": "#/definitions/MultiplexGroupSettings" - }, - "RtmpGroupSettings": { - "$ref": "#/definitions/RtmpGroupSettings" - }, - "UdpGroupSettings": { - "$ref": "#/definitions/UdpGroupSettings" - } - }, - "type": "object" - }, - "OutputLocationRef": { - "additionalProperties": false, - "properties": { - "DestinationRefId": { - "type": "string" - } - }, - "type": "object" - }, - "OutputLockingSettings": { - "additionalProperties": false, - "properties": { - "EpochLockingSettings": { - "$ref": "#/definitions/EpochLockingSettings" - }, - "PipelineLockingSettings": { - "$ref": "#/definitions/PipelineLockingSettings" - } - }, - "type": "object" - }, - "OutputSettings": { - "additionalProperties": false, - "properties": { - "ArchiveOutputSettings": { - "$ref": "#/definitions/ArchiveOutputSettings" - }, - "CmafIngestOutputSettings": { - "$ref": "#/definitions/CmafIngestOutputSettings" - }, - "FrameCaptureOutputSettings": { - "$ref": "#/definitions/FrameCaptureOutputSettings" - }, - "HlsOutputSettings": { - "$ref": "#/definitions/HlsOutputSettings" - }, - "MediaPackageOutputSettings": { - "$ref": "#/definitions/MediaPackageOutputSettings" - }, - "MsSmoothOutputSettings": { - "$ref": "#/definitions/MsSmoothOutputSettings" - }, - "MultiplexOutputSettings": { - "$ref": "#/definitions/MultiplexOutputSettings" - }, - "RtmpOutputSettings": { - "$ref": "#/definitions/RtmpOutputSettings" - }, - "UdpOutputSettings": { - "$ref": "#/definitions/UdpOutputSettings" - } - }, - "type": "object" - }, - "PassThroughSettings": { - "additionalProperties": false, - "type": "object" - }, - "PipelineLockingSettings": { - "additionalProperties": false, - "type": "object" - }, - "RawSettings": { - "additionalProperties": false, - "type": "object" - }, - "Rec601Settings": { - "additionalProperties": false, - "type": "object" - }, - "Rec709Settings": { - "additionalProperties": false, - "type": "object" - }, - "RemixSettings": { - "additionalProperties": false, - "properties": { - "ChannelMappings": { - "items": { - "$ref": "#/definitions/AudioChannelMapping" - }, - "type": "array", - "uniqueItems": false - }, - "ChannelsIn": { - "type": "integer" - }, - "ChannelsOut": { - "type": "integer" - } - }, - "type": "object" - }, - "RtmpCaptionInfoDestinationSettings": { - "additionalProperties": false, - "type": "object" - }, - "RtmpGroupSettings": { - "additionalProperties": false, - "properties": { - "AdMarkers": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AuthenticationScheme": { - "type": "string" - }, - "CacheFullBehavior": { - "type": "string" - }, - "CacheLength": { - "type": "integer" - }, - "CaptionData": { - "type": "string" - }, - "IncludeFillerNalUnits": { - "type": "string" - }, - "InputLossAction": { - "type": "string" - }, - "RestartDelay": { - "type": "integer" - } - }, - "type": "object" - }, - "RtmpOutputSettings": { - "additionalProperties": false, - "properties": { - "CertificateMode": { - "type": "string" - }, - "ConnectionRetryInterval": { - "type": "integer" - }, - "Destination": { - "$ref": "#/definitions/OutputLocationRef" - }, - "NumRetries": { - "type": "integer" - } - }, - "type": "object" - }, - "Scte20PlusEmbeddedDestinationSettings": { - "additionalProperties": false, - "type": "object" - }, - "Scte20SourceSettings": { - "additionalProperties": false, - "properties": { - "Convert608To708": { - "type": "string" - }, - "Source608ChannelNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "Scte27DestinationSettings": { - "additionalProperties": false, - "type": "object" - }, - "Scte27SourceSettings": { - "additionalProperties": false, - "properties": { - "OcrLanguage": { - "type": "string" - }, - "Pid": { - "type": "integer" - } - }, - "type": "object" - }, - "Scte35SpliceInsert": { - "additionalProperties": false, - "properties": { - "AdAvailOffset": { - "type": "integer" - }, - "NoRegionalBlackoutFlag": { - "type": "string" - }, - "WebDeliveryAllowedFlag": { - "type": "string" - } - }, - "type": "object" - }, - "Scte35TimeSignalApos": { - "additionalProperties": false, - "properties": { - "AdAvailOffset": { - "type": "integer" - }, - "NoRegionalBlackoutFlag": { - "type": "string" - }, - "WebDeliveryAllowedFlag": { - "type": "string" - } - }, - "type": "object" - }, - "SmpteTtDestinationSettings": { - "additionalProperties": false, - "type": "object" - }, - "StandardHlsSettings": { - "additionalProperties": false, - "properties": { - "AudioRenditionSets": { - "type": "string" - }, - "M3u8Settings": { - "$ref": "#/definitions/M3u8Settings" - } - }, - "type": "object" - }, - "StaticKeySettings": { - "additionalProperties": false, - "properties": { - "KeyProviderServer": { - "$ref": "#/definitions/InputLocation" - }, - "StaticKeyValue": { - "type": "string" - } - }, - "type": "object" - }, - "TeletextDestinationSettings": { - "additionalProperties": false, - "type": "object" - }, - "TeletextSourceSettings": { - "additionalProperties": false, - "properties": { - "OutputRectangle": { - "$ref": "#/definitions/CaptionRectangle" - }, - "PageNumber": { - "type": "string" - } - }, - "type": "object" - }, - "TemporalFilterSettings": { - "additionalProperties": false, - "properties": { - "PostFilterSharpening": { - "type": "string" - }, - "Strength": { - "type": "string" - } - }, - "type": "object" - }, - "ThumbnailConfiguration": { - "additionalProperties": false, - "properties": { - "State": { - "type": "string" - } - }, - "type": "object" - }, - "TimecodeBurninSettings": { - "additionalProperties": false, - "properties": { - "FontSize": { - "type": "string" - }, - "Position": { - "type": "string" - }, - "Prefix": { - "type": "string" - } - }, - "type": "object" - }, - "TimecodeConfig": { - "additionalProperties": false, - "properties": { - "Source": { - "type": "string" - }, - "SyncThreshold": { - "type": "integer" - } - }, - "type": "object" - }, - "TtmlDestinationSettings": { - "additionalProperties": false, - "properties": { - "StyleControl": { - "type": "string" - } - }, - "type": "object" - }, - "UdpContainerSettings": { - "additionalProperties": false, - "properties": { - "M2tsSettings": { - "$ref": "#/definitions/M2tsSettings" - } - }, - "type": "object" - }, - "UdpGroupSettings": { - "additionalProperties": false, - "properties": { - "InputLossAction": { - "type": "string" - }, - "TimedMetadataId3Frame": { - "type": "string" - }, - "TimedMetadataId3Period": { - "type": "integer" - } - }, - "type": "object" - }, - "UdpOutputSettings": { - "additionalProperties": false, - "properties": { - "BufferMsec": { - "type": "integer" - }, - "ContainerSettings": { - "$ref": "#/definitions/UdpContainerSettings" - }, - "Destination": { - "$ref": "#/definitions/OutputLocationRef" - }, - "FecOutputSettings": { - "$ref": "#/definitions/FecOutputSettings" - } - }, - "type": "object" - }, - "VideoBlackFailoverSettings": { - "additionalProperties": false, - "properties": { - "BlackDetectThreshold": { - "type": "number" - }, - "VideoBlackThresholdMsec": { - "type": "integer" - } - }, - "type": "object" - }, - "VideoCodecSettings": { - "additionalProperties": false, - "properties": { - "FrameCaptureSettings": { - "$ref": "#/definitions/FrameCaptureSettings" - }, - "H264Settings": { - "$ref": "#/definitions/H264Settings" - }, - "H265Settings": { - "$ref": "#/definitions/H265Settings" - }, - "Mpeg2Settings": { - "$ref": "#/definitions/Mpeg2Settings" - } - }, - "type": "object" - }, - "VideoDescription": { - "additionalProperties": false, - "properties": { - "CodecSettings": { - "$ref": "#/definitions/VideoCodecSettings" - }, - "Height": { - "type": "integer" - }, - "Name": { - "type": "string" - }, - "RespondToAfd": { - "type": "string" - }, - "ScalingBehavior": { - "type": "string" - }, - "Sharpness": { - "type": "integer" - }, - "Width": { - "type": "integer" - } - }, - "type": "object" - }, - "VideoSelector": { - "additionalProperties": false, - "properties": { - "ColorSpace": { - "type": "string" - }, - "ColorSpaceSettings": { - "$ref": "#/definitions/VideoSelectorColorSpaceSettings" - }, - "ColorSpaceUsage": { - "type": "string" - }, - "SelectorSettings": { - "$ref": "#/definitions/VideoSelectorSettings" - } - }, - "type": "object" - }, - "VideoSelectorColorSpaceSettings": { - "additionalProperties": false, - "properties": { - "Hdr10Settings": { - "$ref": "#/definitions/Hdr10Settings" - } - }, - "type": "object" - }, - "VideoSelectorPid": { - "additionalProperties": false, - "properties": { - "Pid": { - "type": "integer" - } - }, - "type": "object" - }, - "VideoSelectorProgramId": { - "additionalProperties": false, - "properties": { - "ProgramId": { - "type": "integer" - } - }, - "type": "object" - }, - "VideoSelectorSettings": { - "additionalProperties": false, - "properties": { - "VideoSelectorPid": { - "$ref": "#/definitions/VideoSelectorPid" - }, - "VideoSelectorProgramId": { - "$ref": "#/definitions/VideoSelectorProgramId" - } - }, - "type": "object" - }, - "VpcOutputSettings": { - "additionalProperties": false, - "properties": { - "PublicAddressAllocationIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "WavSettings": { - "additionalProperties": false, - "properties": { - "BitDepth": { - "type": "number" - }, - "CodingMode": { - "type": "string" - }, - "SampleRate": { - "type": "number" - } - }, - "type": "object" - }, - "WebvttDestinationSettings": { - "additionalProperties": false, - "properties": { - "StyleControl": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::MediaLive::Channel", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "CdiInputSpecification": { - "$ref": "#/definitions/CdiInputSpecification" - }, - "ChannelClass": { - "type": "string" - }, - "Destinations": { - "items": { - "$ref": "#/definitions/OutputDestination" - }, - "type": "array", - "uniqueItems": false - }, - "EncoderSettings": { - "$ref": "#/definitions/EncoderSettings" - }, - "Id": { - "type": "string" - }, - "InputAttachments": { - "items": { - "$ref": "#/definitions/InputAttachment" - }, - "type": "array", - "uniqueItems": false - }, - "InputSpecification": { - "$ref": "#/definitions/InputSpecification" - }, - "Inputs": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "LogLevel": { - "type": "string" - }, - "Maintenance": { - "$ref": "#/definitions/MaintenanceCreateSettings" - }, - "Name": { - "type": "string" - }, - "RoleArn": { - "type": "string" - }, - "Tags": { - "type": "object" - }, - "Vpc": { - "$ref": "#/definitions/VpcOutputSettings" - } - }, - "readOnlyProperties": [ - "/properties/Inputs", - "/properties/Id", - "/properties/Arn" - ], - "typeName": "AWS::MediaLive::Channel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Vpc", + "/properties/AnywhereSettings" + ], + "definitions": { + "AacSettings": { + "additionalProperties": false, + "properties": { + "Bitrate": { + "type": "number" + }, + "CodingMode": { + "type": "string" + }, + "InputType": { + "type": "string" + }, + "Profile": { + "type": "string" + }, + "RateControlMode": { + "type": "string" + }, + "RawFormat": { + "type": "string" + }, + "SampleRate": { + "type": "number" + }, + "Spec": { + "type": "string" + }, + "VbrQuality": { + "type": "string" + } + }, + "type": "object" + }, + "Ac3Settings": { + "additionalProperties": false, + "properties": { + "AttenuationControl": { + "type": "string" + }, + "Bitrate": { + "type": "number" + }, + "BitstreamMode": { + "type": "string" + }, + "CodingMode": { + "type": "string" + }, + "Dialnorm": { + "type": "integer" + }, + "DrcProfile": { + "type": "string" + }, + "LfeFilter": { + "type": "string" + }, + "MetadataControl": { + "type": "string" + } + }, + "type": "object" + }, + "AncillarySourceSettings": { + "additionalProperties": false, + "properties": { + "SourceAncillaryChannelNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "AnywhereSettings": { + "additionalProperties": false, + "properties": { + "ChannelPlacementGroupId": { + "type": "string" + }, + "ClusterId": { + "type": "string" + } + }, + "type": "object" + }, + "ArchiveCdnSettings": { + "additionalProperties": false, + "properties": { + "ArchiveS3Settings": { + "$ref": "#/definitions/ArchiveS3Settings" + } + }, + "type": "object" + }, + "ArchiveContainerSettings": { + "additionalProperties": false, + "properties": { + "M2tsSettings": { + "$ref": "#/definitions/M2tsSettings" + }, + "RawSettings": { + "$ref": "#/definitions/RawSettings" + } + }, + "type": "object" + }, + "ArchiveGroupSettings": { + "additionalProperties": false, + "properties": { + "ArchiveCdnSettings": { + "$ref": "#/definitions/ArchiveCdnSettings" + }, + "Destination": { + "$ref": "#/definitions/OutputLocationRef" + }, + "RolloverInterval": { + "type": "integer" + } + }, + "type": "object" + }, + "ArchiveOutputSettings": { + "additionalProperties": false, + "properties": { + "ContainerSettings": { + "$ref": "#/definitions/ArchiveContainerSettings" + }, + "Extension": { + "type": "string" + }, + "NameModifier": { + "type": "string" + } + }, + "type": "object" + }, + "ArchiveS3Settings": { + "additionalProperties": false, + "properties": { + "CannedAcl": { + "type": "string" + } + }, + "type": "object" + }, + "AribDestinationSettings": { + "additionalProperties": false, + "type": "object" + }, + "AribSourceSettings": { + "additionalProperties": false, + "type": "object" + }, + "AudioChannelMapping": { + "additionalProperties": false, + "properties": { + "InputChannelLevels": { + "items": { + "$ref": "#/definitions/InputChannelLevel" + }, + "type": "array", + "uniqueItems": false + }, + "OutputChannel": { + "type": "integer" + } + }, + "type": "object" + }, + "AudioCodecSettings": { + "additionalProperties": false, + "properties": { + "AacSettings": { + "$ref": "#/definitions/AacSettings" + }, + "Ac3Settings": { + "$ref": "#/definitions/Ac3Settings" + }, + "Eac3AtmosSettings": { + "$ref": "#/definitions/Eac3AtmosSettings" + }, + "Eac3Settings": { + "$ref": "#/definitions/Eac3Settings" + }, + "Mp2Settings": { + "$ref": "#/definitions/Mp2Settings" + }, + "PassThroughSettings": { + "$ref": "#/definitions/PassThroughSettings" + }, + "WavSettings": { + "$ref": "#/definitions/WavSettings" + } + }, + "type": "object" + }, + "AudioDescription": { + "additionalProperties": false, + "properties": { + "AudioDashRoles": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AudioNormalizationSettings": { + "$ref": "#/definitions/AudioNormalizationSettings" + }, + "AudioSelectorName": { + "type": "string" + }, + "AudioType": { + "type": "string" + }, + "AudioTypeControl": { + "type": "string" + }, + "AudioWatermarkingSettings": { + "$ref": "#/definitions/AudioWatermarkSettings" + }, + "CodecSettings": { + "$ref": "#/definitions/AudioCodecSettings" + }, + "DvbDashAccessibility": { + "type": "string" + }, + "LanguageCode": { + "type": "string" + }, + "LanguageCodeControl": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "RemixSettings": { + "$ref": "#/definitions/RemixSettings" + }, + "StreamName": { + "type": "string" + } + }, + "type": "object" + }, + "AudioDolbyEDecode": { + "additionalProperties": false, + "properties": { + "ProgramSelection": { + "type": "string" + } + }, + "type": "object" + }, + "AudioHlsRenditionSelection": { + "additionalProperties": false, + "properties": { + "GroupId": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "type": "object" + }, + "AudioLanguageSelection": { + "additionalProperties": false, + "properties": { + "LanguageCode": { + "type": "string" + }, + "LanguageSelectionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "AudioNormalizationSettings": { + "additionalProperties": false, + "properties": { + "Algorithm": { + "type": "string" + }, + "AlgorithmControl": { + "type": "string" + }, + "TargetLkfs": { + "type": "number" + } + }, + "type": "object" + }, + "AudioOnlyHlsSettings": { + "additionalProperties": false, + "properties": { + "AudioGroupId": { + "type": "string" + }, + "AudioOnlyImage": { + "$ref": "#/definitions/InputLocation" + }, + "AudioTrackType": { + "type": "string" + }, + "SegmentType": { + "type": "string" + } + }, + "type": "object" + }, + "AudioPidSelection": { + "additionalProperties": false, + "properties": { + "Pid": { + "type": "integer" + } + }, + "type": "object" + }, + "AudioSelector": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "SelectorSettings": { + "$ref": "#/definitions/AudioSelectorSettings" + } + }, + "type": "object" + }, + "AudioSelectorSettings": { + "additionalProperties": false, + "properties": { + "AudioHlsRenditionSelection": { + "$ref": "#/definitions/AudioHlsRenditionSelection" + }, + "AudioLanguageSelection": { + "$ref": "#/definitions/AudioLanguageSelection" + }, + "AudioPidSelection": { + "$ref": "#/definitions/AudioPidSelection" + }, + "AudioTrackSelection": { + "$ref": "#/definitions/AudioTrackSelection" + } + }, + "type": "object" + }, + "AudioSilenceFailoverSettings": { + "additionalProperties": false, + "properties": { + "AudioSelectorName": { + "type": "string" + }, + "AudioSilenceThresholdMsec": { + "type": "integer" + } + }, + "type": "object" + }, + "AudioTrack": { + "additionalProperties": false, + "properties": { + "Track": { + "type": "integer" + } + }, + "type": "object" + }, + "AudioTrackSelection": { + "additionalProperties": false, + "properties": { + "DolbyEDecode": { + "$ref": "#/definitions/AudioDolbyEDecode" + }, + "Tracks": { + "items": { + "$ref": "#/definitions/AudioTrack" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "AudioWatermarkSettings": { + "additionalProperties": false, + "properties": { + "NielsenWatermarksSettings": { + "$ref": "#/definitions/NielsenWatermarksSettings" + } + }, + "type": "object" + }, + "AutomaticInputFailoverSettings": { + "additionalProperties": false, + "properties": { + "ErrorClearTimeMsec": { + "type": "integer" + }, + "FailoverConditions": { + "items": { + "$ref": "#/definitions/FailoverCondition" + }, + "type": "array", + "uniqueItems": false + }, + "InputPreference": { + "type": "string" + }, + "SecondaryInputId": { + "type": "string" + } + }, + "type": "object" + }, + "Av1ColorSpaceSettings": { + "additionalProperties": false, + "properties": { + "ColorSpacePassthroughSettings": { + "$ref": "#/definitions/ColorSpacePassthroughSettings" + }, + "Hdr10Settings": { + "$ref": "#/definitions/Hdr10Settings" + }, + "Rec601Settings": { + "$ref": "#/definitions/Rec601Settings" + }, + "Rec709Settings": { + "$ref": "#/definitions/Rec709Settings" + } + }, + "type": "object" + }, + "Av1Settings": { + "additionalProperties": false, + "properties": { + "AfdSignaling": { + "type": "string" + }, + "BufSize": { + "type": "integer" + }, + "ColorSpaceSettings": { + "$ref": "#/definitions/Av1ColorSpaceSettings" + }, + "FixedAfd": { + "type": "string" + }, + "FramerateDenominator": { + "type": "integer" + }, + "FramerateNumerator": { + "type": "integer" + }, + "GopSize": { + "type": "number" + }, + "GopSizeUnits": { + "type": "string" + }, + "Level": { + "type": "string" + }, + "LookAheadRateControl": { + "type": "string" + }, + "MaxBitrate": { + "type": "integer" + }, + "MinIInterval": { + "type": "integer" + }, + "ParDenominator": { + "type": "integer" + }, + "ParNumerator": { + "type": "integer" + }, + "QvbrQualityLevel": { + "type": "integer" + }, + "SceneChangeDetect": { + "type": "string" + }, + "TimecodeBurninSettings": { + "$ref": "#/definitions/TimecodeBurninSettings" + } + }, + "type": "object" + }, + "AvailBlanking": { + "additionalProperties": false, + "properties": { + "AvailBlankingImage": { + "$ref": "#/definitions/InputLocation" + }, + "State": { + "type": "string" + } + }, + "type": "object" + }, + "AvailConfiguration": { + "additionalProperties": false, + "properties": { + "AvailSettings": { + "$ref": "#/definitions/AvailSettings" + }, + "Scte35SegmentationScope": { + "type": "string" + } + }, + "type": "object" + }, + "AvailSettings": { + "additionalProperties": false, + "properties": { + "Esam": { + "$ref": "#/definitions/Esam" + }, + "Scte35SpliceInsert": { + "$ref": "#/definitions/Scte35SpliceInsert" + }, + "Scte35TimeSignalApos": { + "$ref": "#/definitions/Scte35TimeSignalApos" + } + }, + "type": "object" + }, + "BandwidthReductionFilterSettings": { + "additionalProperties": false, + "properties": { + "PostFilterSharpening": { + "type": "string" + }, + "Strength": { + "type": "string" + } + }, + "type": "object" + }, + "BlackoutSlate": { + "additionalProperties": false, + "properties": { + "BlackoutSlateImage": { + "$ref": "#/definitions/InputLocation" + }, + "NetworkEndBlackout": { + "type": "string" + }, + "NetworkEndBlackoutImage": { + "$ref": "#/definitions/InputLocation" + }, + "NetworkId": { + "type": "string" + }, + "State": { + "type": "string" + } + }, + "type": "object" + }, + "BurnInDestinationSettings": { + "additionalProperties": false, + "properties": { + "Alignment": { + "type": "string" + }, + "BackgroundColor": { + "type": "string" + }, + "BackgroundOpacity": { + "type": "integer" + }, + "Font": { + "$ref": "#/definitions/InputLocation" + }, + "FontColor": { + "type": "string" + }, + "FontOpacity": { + "type": "integer" + }, + "FontResolution": { + "type": "integer" + }, + "FontSize": { + "type": "string" + }, + "OutlineColor": { + "type": "string" + }, + "OutlineSize": { + "type": "integer" + }, + "ShadowColor": { + "type": "string" + }, + "ShadowOpacity": { + "type": "integer" + }, + "ShadowXOffset": { + "type": "integer" + }, + "ShadowYOffset": { + "type": "integer" + }, + "TeletextGridControl": { + "type": "string" + }, + "XPosition": { + "type": "integer" + }, + "YPosition": { + "type": "integer" + } + }, + "type": "object" + }, + "CaptionDescription": { + "additionalProperties": false, + "properties": { + "Accessibility": { + "type": "string" + }, + "CaptionDashRoles": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "CaptionSelectorName": { + "type": "string" + }, + "DestinationSettings": { + "$ref": "#/definitions/CaptionDestinationSettings" + }, + "DvbDashAccessibility": { + "type": "string" + }, + "LanguageCode": { + "type": "string" + }, + "LanguageDescription": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "type": "object" + }, + "CaptionDestinationSettings": { + "additionalProperties": false, + "properties": { + "AribDestinationSettings": { + "$ref": "#/definitions/AribDestinationSettings" + }, + "BurnInDestinationSettings": { + "$ref": "#/definitions/BurnInDestinationSettings" + }, + "DvbSubDestinationSettings": { + "$ref": "#/definitions/DvbSubDestinationSettings" + }, + "EbuTtDDestinationSettings": { + "$ref": "#/definitions/EbuTtDDestinationSettings" + }, + "EmbeddedDestinationSettings": { + "$ref": "#/definitions/EmbeddedDestinationSettings" + }, + "EmbeddedPlusScte20DestinationSettings": { + "$ref": "#/definitions/EmbeddedPlusScte20DestinationSettings" + }, + "RtmpCaptionInfoDestinationSettings": { + "$ref": "#/definitions/RtmpCaptionInfoDestinationSettings" + }, + "Scte20PlusEmbeddedDestinationSettings": { + "$ref": "#/definitions/Scte20PlusEmbeddedDestinationSettings" + }, + "Scte27DestinationSettings": { + "$ref": "#/definitions/Scte27DestinationSettings" + }, + "SmpteTtDestinationSettings": { + "$ref": "#/definitions/SmpteTtDestinationSettings" + }, + "TeletextDestinationSettings": { + "$ref": "#/definitions/TeletextDestinationSettings" + }, + "TtmlDestinationSettings": { + "$ref": "#/definitions/TtmlDestinationSettings" + }, + "WebvttDestinationSettings": { + "$ref": "#/definitions/WebvttDestinationSettings" + } + }, + "type": "object" + }, + "CaptionLanguageMapping": { + "additionalProperties": false, + "properties": { + "CaptionChannel": { + "type": "integer" + }, + "LanguageCode": { + "type": "string" + }, + "LanguageDescription": { + "type": "string" + } + }, + "type": "object" + }, + "CaptionRectangle": { + "additionalProperties": false, + "properties": { + "Height": { + "type": "number" + }, + "LeftOffset": { + "type": "number" + }, + "TopOffset": { + "type": "number" + }, + "Width": { + "type": "number" + } + }, + "type": "object" + }, + "CaptionSelector": { + "additionalProperties": false, + "properties": { + "LanguageCode": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "SelectorSettings": { + "$ref": "#/definitions/CaptionSelectorSettings" + } + }, + "type": "object" + }, + "CaptionSelectorSettings": { + "additionalProperties": false, + "properties": { + "AncillarySourceSettings": { + "$ref": "#/definitions/AncillarySourceSettings" + }, + "AribSourceSettings": { + "$ref": "#/definitions/AribSourceSettings" + }, + "DvbSubSourceSettings": { + "$ref": "#/definitions/DvbSubSourceSettings" + }, + "EmbeddedSourceSettings": { + "$ref": "#/definitions/EmbeddedSourceSettings" + }, + "Scte20SourceSettings": { + "$ref": "#/definitions/Scte20SourceSettings" + }, + "Scte27SourceSettings": { + "$ref": "#/definitions/Scte27SourceSettings" + }, + "TeletextSourceSettings": { + "$ref": "#/definitions/TeletextSourceSettings" + } + }, + "type": "object" + }, + "CdiInputSpecification": { + "additionalProperties": false, + "properties": { + "Resolution": { + "type": "string" + } + }, + "type": "object" + }, + "ChannelEngineVersionRequest": { + "additionalProperties": false, + "properties": { + "Version": { + "type": "string" + } + }, + "type": "object" + }, + "CmafIngestGroupSettings": { + "additionalProperties": false, + "properties": { + "Destination": { + "$ref": "#/definitions/OutputLocationRef" + }, + "Id3Behavior": { + "type": "string" + }, + "Id3NameModifier": { + "type": "string" + }, + "KlvBehavior": { + "type": "string" + }, + "KlvNameModifier": { + "type": "string" + }, + "NielsenId3Behavior": { + "type": "string" + }, + "NielsenId3NameModifier": { + "type": "string" + }, + "Scte35NameModifier": { + "type": "string" + }, + "Scte35Type": { + "type": "string" + }, + "SegmentLength": { + "type": "integer" + }, + "SegmentLengthUnits": { + "type": "string" + }, + "SendDelayMs": { + "type": "integer" + } + }, + "type": "object" + }, + "CmafIngestOutputSettings": { + "additionalProperties": false, + "properties": { + "NameModifier": { + "type": "string" + } + }, + "type": "object" + }, + "ColorCorrection": { + "additionalProperties": false, + "properties": { + "InputColorSpace": { + "type": "string" + }, + "OutputColorSpace": { + "type": "string" + }, + "Uri": { + "type": "string" + } + }, + "type": "object" + }, + "ColorCorrectionSettings": { + "additionalProperties": false, + "properties": { + "GlobalColorCorrections": { + "items": { + "$ref": "#/definitions/ColorCorrection" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "ColorSpacePassthroughSettings": { + "additionalProperties": false, + "type": "object" + }, + "DolbyVision81Settings": { + "additionalProperties": false, + "type": "object" + }, + "DvbNitSettings": { + "additionalProperties": false, + "properties": { + "NetworkId": { + "type": "integer" + }, + "NetworkName": { + "type": "string" + }, + "RepInterval": { + "type": "integer" + } + }, + "type": "object" + }, + "DvbSdtSettings": { + "additionalProperties": false, + "properties": { + "OutputSdt": { + "type": "string" + }, + "RepInterval": { + "type": "integer" + }, + "ServiceName": { + "type": "string" + }, + "ServiceProviderName": { + "type": "string" + } + }, + "type": "object" + }, + "DvbSubDestinationSettings": { + "additionalProperties": false, + "properties": { + "Alignment": { + "type": "string" + }, + "BackgroundColor": { + "type": "string" + }, + "BackgroundOpacity": { + "type": "integer" + }, + "Font": { + "$ref": "#/definitions/InputLocation" + }, + "FontColor": { + "type": "string" + }, + "FontOpacity": { + "type": "integer" + }, + "FontResolution": { + "type": "integer" + }, + "FontSize": { + "type": "string" + }, + "OutlineColor": { + "type": "string" + }, + "OutlineSize": { + "type": "integer" + }, + "ShadowColor": { + "type": "string" + }, + "ShadowOpacity": { + "type": "integer" + }, + "ShadowXOffset": { + "type": "integer" + }, + "ShadowYOffset": { + "type": "integer" + }, + "TeletextGridControl": { + "type": "string" + }, + "XPosition": { + "type": "integer" + }, + "YPosition": { + "type": "integer" + } + }, + "type": "object" + }, + "DvbSubSourceSettings": { + "additionalProperties": false, + "properties": { + "OcrLanguage": { + "type": "string" + }, + "Pid": { + "type": "integer" + } + }, + "type": "object" + }, + "DvbTdtSettings": { + "additionalProperties": false, + "properties": { + "RepInterval": { + "type": "integer" + } + }, + "type": "object" + }, + "Eac3AtmosSettings": { + "additionalProperties": false, + "properties": { + "Bitrate": { + "type": "number" + }, + "CodingMode": { + "type": "string" + }, + "Dialnorm": { + "type": "integer" + }, + "DrcLine": { + "type": "string" + }, + "DrcRf": { + "type": "string" + }, + "HeightTrim": { + "type": "number" + }, + "SurroundTrim": { + "type": "number" + } + }, + "type": "object" + }, + "Eac3Settings": { + "additionalProperties": false, + "properties": { + "AttenuationControl": { + "type": "string" + }, + "Bitrate": { + "type": "number" + }, + "BitstreamMode": { + "type": "string" + }, + "CodingMode": { + "type": "string" + }, + "DcFilter": { + "type": "string" + }, + "Dialnorm": { + "type": "integer" + }, + "DrcLine": { + "type": "string" + }, + "DrcRf": { + "type": "string" + }, + "LfeControl": { + "type": "string" + }, + "LfeFilter": { + "type": "string" + }, + "LoRoCenterMixLevel": { + "type": "number" + }, + "LoRoSurroundMixLevel": { + "type": "number" + }, + "LtRtCenterMixLevel": { + "type": "number" + }, + "LtRtSurroundMixLevel": { + "type": "number" + }, + "MetadataControl": { + "type": "string" + }, + "PassthroughControl": { + "type": "string" + }, + "PhaseControl": { + "type": "string" + }, + "StereoDownmix": { + "type": "string" + }, + "SurroundExMode": { + "type": "string" + }, + "SurroundMode": { + "type": "string" + } + }, + "type": "object" + }, + "EbuTtDDestinationSettings": { + "additionalProperties": false, + "properties": { + "CopyrightHolder": { + "type": "string" + }, + "FillLineGap": { + "type": "string" + }, + "FontFamily": { + "type": "string" + }, + "StyleControl": { + "type": "string" + } + }, + "type": "object" + }, + "EmbeddedDestinationSettings": { + "additionalProperties": false, + "type": "object" + }, + "EmbeddedPlusScte20DestinationSettings": { + "additionalProperties": false, + "type": "object" + }, + "EmbeddedSourceSettings": { + "additionalProperties": false, + "properties": { + "Convert608To708": { + "type": "string" + }, + "Scte20Detection": { + "type": "string" + }, + "Source608ChannelNumber": { + "type": "integer" + }, + "Source608TrackNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "EncoderSettings": { + "additionalProperties": false, + "properties": { + "AudioDescriptions": { + "items": { + "$ref": "#/definitions/AudioDescription" + }, + "type": "array", + "uniqueItems": false + }, + "AvailBlanking": { + "$ref": "#/definitions/AvailBlanking" + }, + "AvailConfiguration": { + "$ref": "#/definitions/AvailConfiguration" + }, + "BlackoutSlate": { + "$ref": "#/definitions/BlackoutSlate" + }, + "CaptionDescriptions": { + "items": { + "$ref": "#/definitions/CaptionDescription" + }, + "type": "array", + "uniqueItems": false + }, + "ColorCorrectionSettings": { + "$ref": "#/definitions/ColorCorrectionSettings" + }, + "FeatureActivations": { + "$ref": "#/definitions/FeatureActivations" + }, + "GlobalConfiguration": { + "$ref": "#/definitions/GlobalConfiguration" + }, + "MotionGraphicsConfiguration": { + "$ref": "#/definitions/MotionGraphicsConfiguration" + }, + "NielsenConfiguration": { + "$ref": "#/definitions/NielsenConfiguration" + }, + "OutputGroups": { + "items": { + "$ref": "#/definitions/OutputGroup" + }, + "type": "array", + "uniqueItems": false + }, + "ThumbnailConfiguration": { + "$ref": "#/definitions/ThumbnailConfiguration" + }, + "TimecodeConfig": { + "$ref": "#/definitions/TimecodeConfig" + }, + "VideoDescriptions": { + "items": { + "$ref": "#/definitions/VideoDescription" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EpochLockingSettings": { + "additionalProperties": false, + "properties": { + "CustomEpoch": { + "type": "string" + }, + "JamSyncTime": { + "type": "string" + } + }, + "type": "object" + }, + "Esam": { + "additionalProperties": false, + "properties": { + "AcquisitionPointId": { + "type": "string" + }, + "AdAvailOffset": { + "type": "integer" + }, + "PasswordParam": { + "type": "string" + }, + "PoisEndpoint": { + "type": "string" + }, + "Username": { + "type": "string" + }, + "ZoneIdentity": { + "type": "string" + } + }, + "type": "object" + }, + "FailoverCondition": { + "additionalProperties": false, + "properties": { + "FailoverConditionSettings": { + "$ref": "#/definitions/FailoverConditionSettings" + } + }, + "type": "object" + }, + "FailoverConditionSettings": { + "additionalProperties": false, + "properties": { + "AudioSilenceSettings": { + "$ref": "#/definitions/AudioSilenceFailoverSettings" + }, + "InputLossSettings": { + "$ref": "#/definitions/InputLossFailoverSettings" + }, + "VideoBlackSettings": { + "$ref": "#/definitions/VideoBlackFailoverSettings" + } + }, + "type": "object" + }, + "FeatureActivations": { + "additionalProperties": false, + "properties": { + "InputPrepareScheduleActions": { + "type": "string" + }, + "OutputStaticImageOverlayScheduleActions": { + "type": "string" + } + }, + "type": "object" + }, + "FecOutputSettings": { + "additionalProperties": false, + "properties": { + "ColumnDepth": { + "type": "integer" + }, + "IncludeFec": { + "type": "string" + }, + "RowLength": { + "type": "integer" + } + }, + "type": "object" + }, + "Fmp4HlsSettings": { + "additionalProperties": false, + "properties": { + "AudioRenditionSets": { + "type": "string" + }, + "NielsenId3Behavior": { + "type": "string" + }, + "TimedMetadataBehavior": { + "type": "string" + } + }, + "type": "object" + }, + "FrameCaptureCdnSettings": { + "additionalProperties": false, + "properties": { + "FrameCaptureS3Settings": { + "$ref": "#/definitions/FrameCaptureS3Settings" + } + }, + "type": "object" + }, + "FrameCaptureGroupSettings": { + "additionalProperties": false, + "properties": { + "Destination": { + "$ref": "#/definitions/OutputLocationRef" + }, + "FrameCaptureCdnSettings": { + "$ref": "#/definitions/FrameCaptureCdnSettings" + } + }, + "type": "object" + }, + "FrameCaptureHlsSettings": { + "additionalProperties": false, + "type": "object" + }, + "FrameCaptureOutputSettings": { + "additionalProperties": false, + "properties": { + "NameModifier": { + "type": "string" + } + }, + "type": "object" + }, + "FrameCaptureS3Settings": { + "additionalProperties": false, + "properties": { + "CannedAcl": { + "type": "string" + } + }, + "type": "object" + }, + "FrameCaptureSettings": { + "additionalProperties": false, + "properties": { + "CaptureInterval": { + "type": "integer" + }, + "CaptureIntervalUnits": { + "type": "string" + }, + "TimecodeBurninSettings": { + "$ref": "#/definitions/TimecodeBurninSettings" + } + }, + "type": "object" + }, + "GlobalConfiguration": { + "additionalProperties": false, + "properties": { + "InitialAudioGain": { + "type": "integer" + }, + "InputEndAction": { + "type": "string" + }, + "InputLossBehavior": { + "$ref": "#/definitions/InputLossBehavior" + }, + "OutputLockingMode": { + "type": "string" + }, + "OutputLockingSettings": { + "$ref": "#/definitions/OutputLockingSettings" + }, + "OutputTimingSource": { + "type": "string" + }, + "SupportLowFramerateInputs": { + "type": "string" + } + }, + "type": "object" + }, + "H264ColorSpaceSettings": { + "additionalProperties": false, + "properties": { + "ColorSpacePassthroughSettings": { + "$ref": "#/definitions/ColorSpacePassthroughSettings" + }, + "Rec601Settings": { + "$ref": "#/definitions/Rec601Settings" + }, + "Rec709Settings": { + "$ref": "#/definitions/Rec709Settings" + } + }, + "type": "object" + }, + "H264FilterSettings": { + "additionalProperties": false, + "properties": { + "BandwidthReductionFilterSettings": { + "$ref": "#/definitions/BandwidthReductionFilterSettings" + }, + "TemporalFilterSettings": { + "$ref": "#/definitions/TemporalFilterSettings" + } + }, + "type": "object" + }, + "H264Settings": { + "additionalProperties": false, + "properties": { + "AdaptiveQuantization": { + "type": "string" + }, + "AfdSignaling": { + "type": "string" + }, + "Bitrate": { + "type": "integer" + }, + "BufFillPct": { + "type": "integer" + }, + "BufSize": { + "type": "integer" + }, + "ColorMetadata": { + "type": "string" + }, + "ColorSpaceSettings": { + "$ref": "#/definitions/H264ColorSpaceSettings" + }, + "EntropyEncoding": { + "type": "string" + }, + "FilterSettings": { + "$ref": "#/definitions/H264FilterSettings" + }, + "FixedAfd": { + "type": "string" + }, + "FlickerAq": { + "type": "string" + }, + "ForceFieldPictures": { + "type": "string" + }, + "FramerateControl": { + "type": "string" + }, + "FramerateDenominator": { + "type": "integer" + }, + "FramerateNumerator": { + "type": "integer" + }, + "GopBReference": { + "type": "string" + }, + "GopClosedCadence": { + "type": "integer" + }, + "GopNumBFrames": { + "type": "integer" + }, + "GopSize": { + "type": "number" + }, + "GopSizeUnits": { + "type": "string" + }, + "Level": { + "type": "string" + }, + "LookAheadRateControl": { + "type": "string" + }, + "MaxBitrate": { + "type": "integer" + }, + "MinIInterval": { + "type": "integer" + }, + "MinQp": { + "type": "integer" + }, + "NumRefFrames": { + "type": "integer" + }, + "ParControl": { + "type": "string" + }, + "ParDenominator": { + "type": "integer" + }, + "ParNumerator": { + "type": "integer" + }, + "Profile": { + "type": "string" + }, + "QualityLevel": { + "type": "string" + }, + "QvbrQualityLevel": { + "type": "integer" + }, + "RateControlMode": { + "type": "string" + }, + "ScanType": { + "type": "string" + }, + "SceneChangeDetect": { + "type": "string" + }, + "Slices": { + "type": "integer" + }, + "Softness": { + "type": "integer" + }, + "SpatialAq": { + "type": "string" + }, + "SubgopLength": { + "type": "string" + }, + "Syntax": { + "type": "string" + }, + "TemporalAq": { + "type": "string" + }, + "TimecodeBurninSettings": { + "$ref": "#/definitions/TimecodeBurninSettings" + }, + "TimecodeInsertion": { + "type": "string" + } + }, + "type": "object" + }, + "H265ColorSpaceSettings": { + "additionalProperties": false, + "properties": { + "ColorSpacePassthroughSettings": { + "$ref": "#/definitions/ColorSpacePassthroughSettings" + }, + "DolbyVision81Settings": { + "$ref": "#/definitions/DolbyVision81Settings" + }, + "Hdr10Settings": { + "$ref": "#/definitions/Hdr10Settings" + }, + "Rec601Settings": { + "$ref": "#/definitions/Rec601Settings" + }, + "Rec709Settings": { + "$ref": "#/definitions/Rec709Settings" + } + }, + "type": "object" + }, + "H265FilterSettings": { + "additionalProperties": false, + "properties": { + "BandwidthReductionFilterSettings": { + "$ref": "#/definitions/BandwidthReductionFilterSettings" + }, + "TemporalFilterSettings": { + "$ref": "#/definitions/TemporalFilterSettings" + } + }, + "type": "object" + }, + "H265Settings": { + "additionalProperties": false, + "properties": { + "AdaptiveQuantization": { + "type": "string" + }, + "AfdSignaling": { + "type": "string" + }, + "AlternativeTransferFunction": { + "type": "string" + }, + "Bitrate": { + "type": "integer" + }, + "BufSize": { + "type": "integer" + }, + "ColorMetadata": { + "type": "string" + }, + "ColorSpaceSettings": { + "$ref": "#/definitions/H265ColorSpaceSettings" + }, + "Deblocking": { + "type": "string" + }, + "FilterSettings": { + "$ref": "#/definitions/H265FilterSettings" + }, + "FixedAfd": { + "type": "string" + }, + "FlickerAq": { + "type": "string" + }, + "FramerateDenominator": { + "type": "integer" + }, + "FramerateNumerator": { + "type": "integer" + }, + "GopClosedCadence": { + "type": "integer" + }, + "GopSize": { + "type": "number" + }, + "GopSizeUnits": { + "type": "string" + }, + "Level": { + "type": "string" + }, + "LookAheadRateControl": { + "type": "string" + }, + "MaxBitrate": { + "type": "integer" + }, + "MinIInterval": { + "type": "integer" + }, + "MinQp": { + "type": "integer" + }, + "MvOverPictureBoundaries": { + "type": "string" + }, + "MvTemporalPredictor": { + "type": "string" + }, + "ParDenominator": { + "type": "integer" + }, + "ParNumerator": { + "type": "integer" + }, + "Profile": { + "type": "string" + }, + "QvbrQualityLevel": { + "type": "integer" + }, + "RateControlMode": { + "type": "string" + }, + "ScanType": { + "type": "string" + }, + "SceneChangeDetect": { + "type": "string" + }, + "Slices": { + "type": "integer" + }, + "Tier": { + "type": "string" + }, + "TileHeight": { + "type": "integer" + }, + "TilePadding": { + "type": "string" + }, + "TileWidth": { + "type": "integer" + }, + "TimecodeBurninSettings": { + "$ref": "#/definitions/TimecodeBurninSettings" + }, + "TimecodeInsertion": { + "type": "string" + }, + "TreeblockSize": { + "type": "string" + } + }, + "type": "object" + }, + "Hdr10Settings": { + "additionalProperties": false, + "properties": { + "MaxCll": { + "type": "integer" + }, + "MaxFall": { + "type": "integer" + } + }, + "type": "object" + }, + "HlsAkamaiSettings": { + "additionalProperties": false, + "properties": { + "ConnectionRetryInterval": { + "type": "integer" + }, + "FilecacheDuration": { + "type": "integer" + }, + "HttpTransferMode": { + "type": "string" + }, + "NumRetries": { + "type": "integer" + }, + "RestartDelay": { + "type": "integer" + }, + "Salt": { + "type": "string" + }, + "Token": { + "type": "string" + } + }, + "type": "object" + }, + "HlsBasicPutSettings": { + "additionalProperties": false, + "properties": { + "ConnectionRetryInterval": { + "type": "integer" + }, + "FilecacheDuration": { + "type": "integer" + }, + "NumRetries": { + "type": "integer" + }, + "RestartDelay": { + "type": "integer" + } + }, + "type": "object" + }, + "HlsCdnSettings": { + "additionalProperties": false, + "properties": { + "HlsAkamaiSettings": { + "$ref": "#/definitions/HlsAkamaiSettings" + }, + "HlsBasicPutSettings": { + "$ref": "#/definitions/HlsBasicPutSettings" + }, + "HlsMediaStoreSettings": { + "$ref": "#/definitions/HlsMediaStoreSettings" + }, + "HlsS3Settings": { + "$ref": "#/definitions/HlsS3Settings" + }, + "HlsWebdavSettings": { + "$ref": "#/definitions/HlsWebdavSettings" + } + }, + "type": "object" + }, + "HlsGroupSettings": { + "additionalProperties": false, + "properties": { + "AdMarkers": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "BaseUrlContent": { + "type": "string" + }, + "BaseUrlContent1": { + "type": "string" + }, + "BaseUrlManifest": { + "type": "string" + }, + "BaseUrlManifest1": { + "type": "string" + }, + "CaptionLanguageMappings": { + "items": { + "$ref": "#/definitions/CaptionLanguageMapping" + }, + "type": "array", + "uniqueItems": false + }, + "CaptionLanguageSetting": { + "type": "string" + }, + "ClientCache": { + "type": "string" + }, + "CodecSpecification": { + "type": "string" + }, + "ConstantIv": { + "type": "string" + }, + "Destination": { + "$ref": "#/definitions/OutputLocationRef" + }, + "DirectoryStructure": { + "type": "string" + }, + "DiscontinuityTags": { + "type": "string" + }, + "EncryptionType": { + "type": "string" + }, + "HlsCdnSettings": { + "$ref": "#/definitions/HlsCdnSettings" + }, + "HlsId3SegmentTagging": { + "type": "string" + }, + "IFrameOnlyPlaylists": { + "type": "string" + }, + "IncompleteSegmentBehavior": { + "type": "string" + }, + "IndexNSegments": { + "type": "integer" + }, + "InputLossAction": { + "type": "string" + }, + "IvInManifest": { + "type": "string" + }, + "IvSource": { + "type": "string" + }, + "KeepSegments": { + "type": "integer" + }, + "KeyFormat": { + "type": "string" + }, + "KeyFormatVersions": { + "type": "string" + }, + "KeyProviderSettings": { + "$ref": "#/definitions/KeyProviderSettings" + }, + "ManifestCompression": { + "type": "string" + }, + "ManifestDurationFormat": { + "type": "string" + }, + "MinSegmentLength": { + "type": "integer" + }, + "Mode": { + "type": "string" + }, + "OutputSelection": { + "type": "string" + }, + "ProgramDateTime": { + "type": "string" + }, + "ProgramDateTimeClock": { + "type": "string" + }, + "ProgramDateTimePeriod": { + "type": "integer" + }, + "RedundantManifest": { + "type": "string" + }, + "SegmentLength": { + "type": "integer" + }, + "SegmentationMode": { + "type": "string" + }, + "SegmentsPerSubdirectory": { + "type": "integer" + }, + "StreamInfResolution": { + "type": "string" + }, + "TimedMetadataId3Frame": { + "type": "string" + }, + "TimedMetadataId3Period": { + "type": "integer" + }, + "TimestampDeltaMilliseconds": { + "type": "integer" + }, + "TsFileMode": { + "type": "string" + } + }, + "type": "object" + }, + "HlsInputSettings": { + "additionalProperties": false, + "properties": { + "Bandwidth": { + "type": "integer" + }, + "BufferSegments": { + "type": "integer" + }, + "Retries": { + "type": "integer" + }, + "RetryInterval": { + "type": "integer" + }, + "Scte35Source": { + "type": "string" + } + }, + "type": "object" + }, + "HlsMediaStoreSettings": { + "additionalProperties": false, + "properties": { + "ConnectionRetryInterval": { + "type": "integer" + }, + "FilecacheDuration": { + "type": "integer" + }, + "MediaStoreStorageClass": { + "type": "string" + }, + "NumRetries": { + "type": "integer" + }, + "RestartDelay": { + "type": "integer" + } + }, + "type": "object" + }, + "HlsOutputSettings": { + "additionalProperties": false, + "properties": { + "H265PackagingType": { + "type": "string" + }, + "HlsSettings": { + "$ref": "#/definitions/HlsSettings" + }, + "NameModifier": { + "type": "string" + }, + "SegmentModifier": { + "type": "string" + } + }, + "type": "object" + }, + "HlsS3Settings": { + "additionalProperties": false, + "properties": { + "CannedAcl": { + "type": "string" + } + }, + "type": "object" + }, + "HlsSettings": { + "additionalProperties": false, + "properties": { + "AudioOnlyHlsSettings": { + "$ref": "#/definitions/AudioOnlyHlsSettings" + }, + "Fmp4HlsSettings": { + "$ref": "#/definitions/Fmp4HlsSettings" + }, + "FrameCaptureHlsSettings": { + "$ref": "#/definitions/FrameCaptureHlsSettings" + }, + "StandardHlsSettings": { + "$ref": "#/definitions/StandardHlsSettings" + } + }, + "type": "object" + }, + "HlsWebdavSettings": { + "additionalProperties": false, + "properties": { + "ConnectionRetryInterval": { + "type": "integer" + }, + "FilecacheDuration": { + "type": "integer" + }, + "HttpTransferMode": { + "type": "string" + }, + "NumRetries": { + "type": "integer" + }, + "RestartDelay": { + "type": "integer" + } + }, + "type": "object" + }, + "HtmlMotionGraphicsSettings": { + "additionalProperties": false, + "type": "object" + }, + "InputAttachment": { + "additionalProperties": false, + "properties": { + "AutomaticInputFailoverSettings": { + "$ref": "#/definitions/AutomaticInputFailoverSettings" + }, + "InputAttachmentName": { + "type": "string" + }, + "InputId": { + "type": "string" + }, + "InputSettings": { + "$ref": "#/definitions/InputSettings" + }, + "LogicalInterfaceNames": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "InputChannelLevel": { + "additionalProperties": false, + "properties": { + "Gain": { + "type": "integer" + }, + "InputChannel": { + "type": "integer" + } + }, + "type": "object" + }, + "InputLocation": { + "additionalProperties": false, + "properties": { + "PasswordParam": { + "type": "string" + }, + "Uri": { + "type": "string" + }, + "Username": { + "type": "string" + } + }, + "type": "object" + }, + "InputLossBehavior": { + "additionalProperties": false, + "properties": { + "BlackFrameMsec": { + "type": "integer" + }, + "InputLossImageColor": { + "type": "string" + }, + "InputLossImageSlate": { + "$ref": "#/definitions/InputLocation" + }, + "InputLossImageType": { + "type": "string" + }, + "RepeatFrameMsec": { + "type": "integer" + } + }, + "type": "object" + }, + "InputLossFailoverSettings": { + "additionalProperties": false, + "properties": { + "InputLossThresholdMsec": { + "type": "integer" + } + }, + "type": "object" + }, + "InputSettings": { + "additionalProperties": false, + "properties": { + "AudioSelectors": { + "items": { + "$ref": "#/definitions/AudioSelector" + }, + "type": "array", + "uniqueItems": false + }, + "CaptionSelectors": { + "items": { + "$ref": "#/definitions/CaptionSelector" + }, + "type": "array", + "uniqueItems": false + }, + "DeblockFilter": { + "type": "string" + }, + "DenoiseFilter": { + "type": "string" + }, + "FilterStrength": { + "type": "integer" + }, + "InputFilter": { + "type": "string" + }, + "NetworkInputSettings": { + "$ref": "#/definitions/NetworkInputSettings" + }, + "Scte35Pid": { + "type": "integer" + }, + "Smpte2038DataPreference": { + "type": "string" + }, + "SourceEndBehavior": { + "type": "string" + }, + "VideoSelector": { + "$ref": "#/definitions/VideoSelector" + } + }, + "type": "object" + }, + "InputSpecification": { + "additionalProperties": false, + "properties": { + "Codec": { + "type": "string" + }, + "MaximumBitrate": { + "type": "string" + }, + "Resolution": { + "type": "string" + } + }, + "type": "object" + }, + "KeyProviderSettings": { + "additionalProperties": false, + "properties": { + "StaticKeySettings": { + "$ref": "#/definitions/StaticKeySettings" + } + }, + "type": "object" + }, + "M2tsSettings": { + "additionalProperties": false, + "properties": { + "AbsentInputAudioBehavior": { + "type": "string" + }, + "Arib": { + "type": "string" + }, + "AribCaptionsPid": { + "type": "string" + }, + "AribCaptionsPidControl": { + "type": "string" + }, + "AudioBufferModel": { + "type": "string" + }, + "AudioFramesPerPes": { + "type": "integer" + }, + "AudioPids": { + "type": "string" + }, + "AudioStreamType": { + "type": "string" + }, + "Bitrate": { + "type": "integer" + }, + "BufferModel": { + "type": "string" + }, + "CcDescriptor": { + "type": "string" + }, + "DvbNitSettings": { + "$ref": "#/definitions/DvbNitSettings" + }, + "DvbSdtSettings": { + "$ref": "#/definitions/DvbSdtSettings" + }, + "DvbSubPids": { + "type": "string" + }, + "DvbTdtSettings": { + "$ref": "#/definitions/DvbTdtSettings" + }, + "DvbTeletextPid": { + "type": "string" + }, + "Ebif": { + "type": "string" + }, + "EbpAudioInterval": { + "type": "string" + }, + "EbpLookaheadMs": { + "type": "integer" + }, + "EbpPlacement": { + "type": "string" + }, + "EcmPid": { + "type": "string" + }, + "EsRateInPes": { + "type": "string" + }, + "EtvPlatformPid": { + "type": "string" + }, + "EtvSignalPid": { + "type": "string" + }, + "FragmentTime": { + "type": "number" + }, + "Klv": { + "type": "string" + }, + "KlvDataPids": { + "type": "string" + }, + "NielsenId3Behavior": { + "type": "string" + }, + "NullPacketBitrate": { + "type": "number" + }, + "PatInterval": { + "type": "integer" + }, + "PcrControl": { + "type": "string" + }, + "PcrPeriod": { + "type": "integer" + }, + "PcrPid": { + "type": "string" + }, + "PmtInterval": { + "type": "integer" + }, + "PmtPid": { + "type": "string" + }, + "ProgramNum": { + "type": "integer" + }, + "RateMode": { + "type": "string" + }, + "Scte27Pids": { + "type": "string" + }, + "Scte35Control": { + "type": "string" + }, + "Scte35Pid": { + "type": "string" + }, + "Scte35PrerollPullupMilliseconds": { + "type": "number" + }, + "SegmentationMarkers": { + "type": "string" + }, + "SegmentationStyle": { + "type": "string" + }, + "SegmentationTime": { + "type": "number" + }, + "TimedMetadataBehavior": { + "type": "string" + }, + "TimedMetadataPid": { + "type": "string" + }, + "TransportStreamId": { + "type": "integer" + }, + "VideoPid": { + "type": "string" + } + }, + "type": "object" + }, + "M3u8Settings": { + "additionalProperties": false, + "properties": { + "AudioFramesPerPes": { + "type": "integer" + }, + "AudioPids": { + "type": "string" + }, + "EcmPid": { + "type": "string" + }, + "KlvBehavior": { + "type": "string" + }, + "KlvDataPids": { + "type": "string" + }, + "NielsenId3Behavior": { + "type": "string" + }, + "PatInterval": { + "type": "integer" + }, + "PcrControl": { + "type": "string" + }, + "PcrPeriod": { + "type": "integer" + }, + "PcrPid": { + "type": "string" + }, + "PmtInterval": { + "type": "integer" + }, + "PmtPid": { + "type": "string" + }, + "ProgramNum": { + "type": "integer" + }, + "Scte35Behavior": { + "type": "string" + }, + "Scte35Pid": { + "type": "string" + }, + "TimedMetadataBehavior": { + "type": "string" + }, + "TimedMetadataPid": { + "type": "string" + }, + "TransportStreamId": { + "type": "integer" + }, + "VideoPid": { + "type": "string" + } + }, + "type": "object" + }, + "MaintenanceCreateSettings": { + "additionalProperties": false, + "properties": { + "MaintenanceDay": { + "type": "string" + }, + "MaintenanceStartTime": { + "type": "string" + } + }, + "type": "object" + }, + "MediaPackageGroupSettings": { + "additionalProperties": false, + "properties": { + "Destination": { + "$ref": "#/definitions/OutputLocationRef" + } + }, + "type": "object" + }, + "MediaPackageOutputDestinationSettings": { + "additionalProperties": false, + "properties": { + "ChannelGroup": { + "type": "string" + }, + "ChannelId": { + "type": "string" + }, + "ChannelName": { + "type": "string" + } + }, + "type": "object" + }, + "MediaPackageOutputSettings": { + "additionalProperties": false, + "type": "object" + }, + "MotionGraphicsConfiguration": { + "additionalProperties": false, + "properties": { + "MotionGraphicsInsertion": { + "type": "string" + }, + "MotionGraphicsSettings": { + "$ref": "#/definitions/MotionGraphicsSettings" + } + }, + "type": "object" + }, + "MotionGraphicsSettings": { + "additionalProperties": false, + "properties": { + "HtmlMotionGraphicsSettings": { + "$ref": "#/definitions/HtmlMotionGraphicsSettings" + } + }, + "type": "object" + }, + "Mp2Settings": { + "additionalProperties": false, + "properties": { + "Bitrate": { + "type": "number" + }, + "CodingMode": { + "type": "string" + }, + "SampleRate": { + "type": "number" + } + }, + "type": "object" + }, + "Mpeg2FilterSettings": { + "additionalProperties": false, + "properties": { + "TemporalFilterSettings": { + "$ref": "#/definitions/TemporalFilterSettings" + } + }, + "type": "object" + }, + "Mpeg2Settings": { + "additionalProperties": false, + "properties": { + "AdaptiveQuantization": { + "type": "string" + }, + "AfdSignaling": { + "type": "string" + }, + "ColorMetadata": { + "type": "string" + }, + "ColorSpace": { + "type": "string" + }, + "DisplayAspectRatio": { + "type": "string" + }, + "FilterSettings": { + "$ref": "#/definitions/Mpeg2FilterSettings" + }, + "FixedAfd": { + "type": "string" + }, + "FramerateDenominator": { + "type": "integer" + }, + "FramerateNumerator": { + "type": "integer" + }, + "GopClosedCadence": { + "type": "integer" + }, + "GopNumBFrames": { + "type": "integer" + }, + "GopSize": { + "type": "number" + }, + "GopSizeUnits": { + "type": "string" + }, + "ScanType": { + "type": "string" + }, + "SubgopLength": { + "type": "string" + }, + "TimecodeBurninSettings": { + "$ref": "#/definitions/TimecodeBurninSettings" + }, + "TimecodeInsertion": { + "type": "string" + } + }, + "type": "object" + }, + "MsSmoothGroupSettings": { + "additionalProperties": false, + "properties": { + "AcquisitionPointId": { + "type": "string" + }, + "AudioOnlyTimecodeControl": { + "type": "string" + }, + "CertificateMode": { + "type": "string" + }, + "ConnectionRetryInterval": { + "type": "integer" + }, + "Destination": { + "$ref": "#/definitions/OutputLocationRef" + }, + "EventId": { + "type": "string" + }, + "EventIdMode": { + "type": "string" + }, + "EventStopBehavior": { + "type": "string" + }, + "FilecacheDuration": { + "type": "integer" + }, + "FragmentLength": { + "type": "integer" + }, + "InputLossAction": { + "type": "string" + }, + "NumRetries": { + "type": "integer" + }, + "RestartDelay": { + "type": "integer" + }, + "SegmentationMode": { + "type": "string" + }, + "SendDelayMs": { + "type": "integer" + }, + "SparseTrackType": { + "type": "string" + }, + "StreamManifestBehavior": { + "type": "string" + }, + "TimestampOffset": { + "type": "string" + }, + "TimestampOffsetMode": { + "type": "string" + } + }, + "type": "object" + }, + "MsSmoothOutputSettings": { + "additionalProperties": false, + "properties": { + "H265PackagingType": { + "type": "string" + }, + "NameModifier": { + "type": "string" + } + }, + "type": "object" + }, + "MulticastInputSettings": { + "additionalProperties": false, + "properties": { + "SourceIpAddress": { + "type": "string" + } + }, + "type": "object" + }, + "MultiplexContainerSettings": { + "additionalProperties": false, + "properties": { + "MultiplexM2tsSettings": { + "$ref": "#/definitions/MultiplexM2tsSettings" + } + }, + "type": "object" + }, + "MultiplexGroupSettings": { + "additionalProperties": false, + "type": "object" + }, + "MultiplexM2tsSettings": { + "additionalProperties": false, + "properties": { + "AbsentInputAudioBehavior": { + "type": "string" + }, + "Arib": { + "type": "string" + }, + "AudioBufferModel": { + "type": "string" + }, + "AudioFramesPerPes": { + "type": "integer" + }, + "AudioStreamType": { + "type": "string" + }, + "CcDescriptor": { + "type": "string" + }, + "Ebif": { + "type": "string" + }, + "EsRateInPes": { + "type": "string" + }, + "Klv": { + "type": "string" + }, + "NielsenId3Behavior": { + "type": "string" + }, + "PcrControl": { + "type": "string" + }, + "PcrPeriod": { + "type": "integer" + }, + "Scte35Control": { + "type": "string" + }, + "Scte35PrerollPullupMilliseconds": { + "type": "number" + } + }, + "type": "object" + }, + "MultiplexOutputSettings": { + "additionalProperties": false, + "properties": { + "ContainerSettings": { + "$ref": "#/definitions/MultiplexContainerSettings" + }, + "Destination": { + "$ref": "#/definitions/OutputLocationRef" + } + }, + "type": "object" + }, + "MultiplexProgramChannelDestinationSettings": { + "additionalProperties": false, + "properties": { + "MultiplexId": { + "type": "string" + }, + "ProgramName": { + "type": "string" + } + }, + "type": "object" + }, + "NetworkInputSettings": { + "additionalProperties": false, + "properties": { + "HlsInputSettings": { + "$ref": "#/definitions/HlsInputSettings" + }, + "MulticastInputSettings": { + "$ref": "#/definitions/MulticastInputSettings" + }, + "ServerValidation": { + "type": "string" + } + }, + "type": "object" + }, + "NielsenCBET": { + "additionalProperties": false, + "properties": { + "CbetCheckDigitString": { + "type": "string" + }, + "CbetStepaside": { + "type": "string" + }, + "Csid": { + "type": "string" + } + }, + "type": "object" + }, + "NielsenConfiguration": { + "additionalProperties": false, + "properties": { + "DistributorId": { + "type": "string" + }, + "NielsenPcmToId3Tagging": { + "type": "string" + } + }, + "type": "object" + }, + "NielsenNaesIiNw": { + "additionalProperties": false, + "properties": { + "CheckDigitString": { + "type": "string" + }, + "Sid": { + "type": "number" + }, + "Timezone": { + "type": "string" + } + }, + "type": "object" + }, + "NielsenWatermarksSettings": { + "additionalProperties": false, + "properties": { + "NielsenCbetSettings": { + "$ref": "#/definitions/NielsenCBET" + }, + "NielsenDistributionType": { + "type": "string" + }, + "NielsenNaesIiNwSettings": { + "$ref": "#/definitions/NielsenNaesIiNw" + } + }, + "type": "object" + }, + "Output": { + "additionalProperties": false, + "properties": { + "AudioDescriptionNames": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "CaptionDescriptionNames": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "OutputName": { + "type": "string" + }, + "OutputSettings": { + "$ref": "#/definitions/OutputSettings" + }, + "VideoDescriptionName": { + "type": "string" + } + }, + "type": "object" + }, + "OutputDestination": { + "additionalProperties": false, + "properties": { + "Id": { + "type": "string" + }, + "MediaPackageSettings": { + "items": { + "$ref": "#/definitions/MediaPackageOutputDestinationSettings" + }, + "type": "array", + "uniqueItems": false + }, + "MultiplexSettings": { + "$ref": "#/definitions/MultiplexProgramChannelDestinationSettings" + }, + "Settings": { + "items": { + "$ref": "#/definitions/OutputDestinationSettings" + }, + "type": "array", + "uniqueItems": false + }, + "SrtSettings": { + "items": { + "$ref": "#/definitions/SrtOutputDestinationSettings" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "OutputDestinationSettings": { + "additionalProperties": false, + "properties": { + "PasswordParam": { + "type": "string" + }, + "StreamName": { + "type": "string" + }, + "Url": { + "type": "string" + }, + "Username": { + "type": "string" + } + }, + "type": "object" + }, + "OutputGroup": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "OutputGroupSettings": { + "$ref": "#/definitions/OutputGroupSettings" + }, + "Outputs": { + "items": { + "$ref": "#/definitions/Output" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "OutputGroupSettings": { + "additionalProperties": false, + "properties": { + "ArchiveGroupSettings": { + "$ref": "#/definitions/ArchiveGroupSettings" + }, + "CmafIngestGroupSettings": { + "$ref": "#/definitions/CmafIngestGroupSettings" + }, + "FrameCaptureGroupSettings": { + "$ref": "#/definitions/FrameCaptureGroupSettings" + }, + "HlsGroupSettings": { + "$ref": "#/definitions/HlsGroupSettings" + }, + "MediaPackageGroupSettings": { + "$ref": "#/definitions/MediaPackageGroupSettings" + }, + "MsSmoothGroupSettings": { + "$ref": "#/definitions/MsSmoothGroupSettings" + }, + "MultiplexGroupSettings": { + "$ref": "#/definitions/MultiplexGroupSettings" + }, + "RtmpGroupSettings": { + "$ref": "#/definitions/RtmpGroupSettings" + }, + "SrtGroupSettings": { + "$ref": "#/definitions/SrtGroupSettings" + }, + "UdpGroupSettings": { + "$ref": "#/definitions/UdpGroupSettings" + } + }, + "type": "object" + }, + "OutputLocationRef": { + "additionalProperties": false, + "properties": { + "DestinationRefId": { + "type": "string" + } + }, + "type": "object" + }, + "OutputLockingSettings": { + "additionalProperties": false, + "properties": { + "EpochLockingSettings": { + "$ref": "#/definitions/EpochLockingSettings" + }, + "PipelineLockingSettings": { + "$ref": "#/definitions/PipelineLockingSettings" + } + }, + "type": "object" + }, + "OutputSettings": { + "additionalProperties": false, + "properties": { + "ArchiveOutputSettings": { + "$ref": "#/definitions/ArchiveOutputSettings" + }, + "CmafIngestOutputSettings": { + "$ref": "#/definitions/CmafIngestOutputSettings" + }, + "FrameCaptureOutputSettings": { + "$ref": "#/definitions/FrameCaptureOutputSettings" + }, + "HlsOutputSettings": { + "$ref": "#/definitions/HlsOutputSettings" + }, + "MediaPackageOutputSettings": { + "$ref": "#/definitions/MediaPackageOutputSettings" + }, + "MsSmoothOutputSettings": { + "$ref": "#/definitions/MsSmoothOutputSettings" + }, + "MultiplexOutputSettings": { + "$ref": "#/definitions/MultiplexOutputSettings" + }, + "RtmpOutputSettings": { + "$ref": "#/definitions/RtmpOutputSettings" + }, + "SrtOutputSettings": { + "$ref": "#/definitions/SrtOutputSettings" + }, + "UdpOutputSettings": { + "$ref": "#/definitions/UdpOutputSettings" + } + }, + "type": "object" + }, + "PassThroughSettings": { + "additionalProperties": false, + "type": "object" + }, + "PipelineLockingSettings": { + "additionalProperties": false, + "type": "object" + }, + "RawSettings": { + "additionalProperties": false, + "type": "object" + }, + "Rec601Settings": { + "additionalProperties": false, + "type": "object" + }, + "Rec709Settings": { + "additionalProperties": false, + "type": "object" + }, + "RemixSettings": { + "additionalProperties": false, + "properties": { + "ChannelMappings": { + "items": { + "$ref": "#/definitions/AudioChannelMapping" + }, + "type": "array", + "uniqueItems": false + }, + "ChannelsIn": { + "type": "integer" + }, + "ChannelsOut": { + "type": "integer" + } + }, + "type": "object" + }, + "RtmpCaptionInfoDestinationSettings": { + "additionalProperties": false, + "type": "object" + }, + "RtmpGroupSettings": { + "additionalProperties": false, + "properties": { + "AdMarkers": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AuthenticationScheme": { + "type": "string" + }, + "CacheFullBehavior": { + "type": "string" + }, + "CacheLength": { + "type": "integer" + }, + "CaptionData": { + "type": "string" + }, + "IncludeFillerNalUnits": { + "type": "string" + }, + "InputLossAction": { + "type": "string" + }, + "RestartDelay": { + "type": "integer" + } + }, + "type": "object" + }, + "RtmpOutputSettings": { + "additionalProperties": false, + "properties": { + "CertificateMode": { + "type": "string" + }, + "ConnectionRetryInterval": { + "type": "integer" + }, + "Destination": { + "$ref": "#/definitions/OutputLocationRef" + }, + "NumRetries": { + "type": "integer" + } + }, + "type": "object" + }, + "Scte20PlusEmbeddedDestinationSettings": { + "additionalProperties": false, + "type": "object" + }, + "Scte20SourceSettings": { + "additionalProperties": false, + "properties": { + "Convert608To708": { + "type": "string" + }, + "Source608ChannelNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "Scte27DestinationSettings": { + "additionalProperties": false, + "type": "object" + }, + "Scte27SourceSettings": { + "additionalProperties": false, + "properties": { + "OcrLanguage": { + "type": "string" + }, + "Pid": { + "type": "integer" + } + }, + "type": "object" + }, + "Scte35SpliceInsert": { + "additionalProperties": false, + "properties": { + "AdAvailOffset": { + "type": "integer" + }, + "NoRegionalBlackoutFlag": { + "type": "string" + }, + "WebDeliveryAllowedFlag": { + "type": "string" + } + }, + "type": "object" + }, + "Scte35TimeSignalApos": { + "additionalProperties": false, + "properties": { + "AdAvailOffset": { + "type": "integer" + }, + "NoRegionalBlackoutFlag": { + "type": "string" + }, + "WebDeliveryAllowedFlag": { + "type": "string" + } + }, + "type": "object" + }, + "SmpteTtDestinationSettings": { + "additionalProperties": false, + "type": "object" + }, + "SrtGroupSettings": { + "additionalProperties": false, + "properties": { + "InputLossAction": { + "type": "string" + } + }, + "type": "object" + }, + "SrtOutputDestinationSettings": { + "additionalProperties": false, + "properties": { + "EncryptionPassphraseSecretArn": { + "type": "string" + }, + "StreamId": { + "type": "string" + }, + "Url": { + "type": "string" + } + }, + "type": "object" + }, + "SrtOutputSettings": { + "additionalProperties": false, + "properties": { + "BufferMsec": { + "type": "integer" + }, + "ContainerSettings": { + "$ref": "#/definitions/UdpContainerSettings" + }, + "Destination": { + "$ref": "#/definitions/OutputLocationRef" + }, + "EncryptionType": { + "type": "string" + }, + "Latency": { + "type": "integer" + } + }, + "type": "object" + }, + "StandardHlsSettings": { + "additionalProperties": false, + "properties": { + "AudioRenditionSets": { + "type": "string" + }, + "M3u8Settings": { + "$ref": "#/definitions/M3u8Settings" + } + }, + "type": "object" + }, + "StaticKeySettings": { + "additionalProperties": false, + "properties": { + "KeyProviderServer": { + "$ref": "#/definitions/InputLocation" + }, + "StaticKeyValue": { + "type": "string" + } + }, + "type": "object" + }, + "TeletextDestinationSettings": { + "additionalProperties": false, + "type": "object" + }, + "TeletextSourceSettings": { + "additionalProperties": false, + "properties": { + "OutputRectangle": { + "$ref": "#/definitions/CaptionRectangle" + }, + "PageNumber": { + "type": "string" + } + }, + "type": "object" + }, + "TemporalFilterSettings": { + "additionalProperties": false, + "properties": { + "PostFilterSharpening": { + "type": "string" + }, + "Strength": { + "type": "string" + } + }, + "type": "object" + }, + "ThumbnailConfiguration": { + "additionalProperties": false, + "properties": { + "State": { + "type": "string" + } + }, + "type": "object" + }, + "TimecodeBurninSettings": { + "additionalProperties": false, + "properties": { + "FontSize": { + "type": "string" + }, + "Position": { + "type": "string" + }, + "Prefix": { + "type": "string" + } + }, + "type": "object" + }, + "TimecodeConfig": { + "additionalProperties": false, + "properties": { + "Source": { + "type": "string" + }, + "SyncThreshold": { + "type": "integer" + } + }, + "type": "object" + }, + "TtmlDestinationSettings": { + "additionalProperties": false, + "properties": { + "StyleControl": { + "type": "string" + } + }, + "type": "object" + }, + "UdpContainerSettings": { + "additionalProperties": false, + "properties": { + "M2tsSettings": { + "$ref": "#/definitions/M2tsSettings" + } + }, + "type": "object" + }, + "UdpGroupSettings": { + "additionalProperties": false, + "properties": { + "InputLossAction": { + "type": "string" + }, + "TimedMetadataId3Frame": { + "type": "string" + }, + "TimedMetadataId3Period": { + "type": "integer" + } + }, + "type": "object" + }, + "UdpOutputSettings": { + "additionalProperties": false, + "properties": { + "BufferMsec": { + "type": "integer" + }, + "ContainerSettings": { + "$ref": "#/definitions/UdpContainerSettings" + }, + "Destination": { + "$ref": "#/definitions/OutputLocationRef" + }, + "FecOutputSettings": { + "$ref": "#/definitions/FecOutputSettings" + } + }, + "type": "object" + }, + "VideoBlackFailoverSettings": { + "additionalProperties": false, + "properties": { + "BlackDetectThreshold": { + "type": "number" + }, + "VideoBlackThresholdMsec": { + "type": "integer" + } + }, + "type": "object" + }, + "VideoCodecSettings": { + "additionalProperties": false, + "properties": { + "Av1Settings": { + "$ref": "#/definitions/Av1Settings" + }, + "FrameCaptureSettings": { + "$ref": "#/definitions/FrameCaptureSettings" + }, + "H264Settings": { + "$ref": "#/definitions/H264Settings" + }, + "H265Settings": { + "$ref": "#/definitions/H265Settings" + }, + "Mpeg2Settings": { + "$ref": "#/definitions/Mpeg2Settings" + } + }, + "type": "object" + }, + "VideoDescription": { + "additionalProperties": false, + "properties": { + "CodecSettings": { + "$ref": "#/definitions/VideoCodecSettings" + }, + "Height": { + "type": "integer" + }, + "Name": { + "type": "string" + }, + "RespondToAfd": { + "type": "string" + }, + "ScalingBehavior": { + "type": "string" + }, + "Sharpness": { + "type": "integer" + }, + "Width": { + "type": "integer" + } + }, + "type": "object" + }, + "VideoSelector": { + "additionalProperties": false, + "properties": { + "ColorSpace": { + "type": "string" + }, + "ColorSpaceSettings": { + "$ref": "#/definitions/VideoSelectorColorSpaceSettings" + }, + "ColorSpaceUsage": { + "type": "string" + }, + "SelectorSettings": { + "$ref": "#/definitions/VideoSelectorSettings" + } + }, + "type": "object" + }, + "VideoSelectorColorSpaceSettings": { + "additionalProperties": false, + "properties": { + "Hdr10Settings": { + "$ref": "#/definitions/Hdr10Settings" + } + }, + "type": "object" + }, + "VideoSelectorPid": { + "additionalProperties": false, + "properties": { + "Pid": { + "type": "integer" + } + }, + "type": "object" + }, + "VideoSelectorProgramId": { + "additionalProperties": false, + "properties": { + "ProgramId": { + "type": "integer" + } + }, + "type": "object" + }, + "VideoSelectorSettings": { + "additionalProperties": false, + "properties": { + "VideoSelectorPid": { + "$ref": "#/definitions/VideoSelectorPid" + }, + "VideoSelectorProgramId": { + "$ref": "#/definitions/VideoSelectorProgramId" + } + }, + "type": "object" + }, + "VpcOutputSettings": { + "additionalProperties": false, + "properties": { + "PublicAddressAllocationIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "WavSettings": { + "additionalProperties": false, + "properties": { + "BitDepth": { + "type": "number" + }, + "CodingMode": { + "type": "string" + }, + "SampleRate": { + "type": "number" + } + }, + "type": "object" + }, + "WebvttDestinationSettings": { + "additionalProperties": false, + "properties": { + "StyleControl": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MediaLive::Channel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AnywhereSettings": { + "$ref": "#/definitions/AnywhereSettings" + }, + "Arn": { + "type": "string" + }, + "CdiInputSpecification": { + "$ref": "#/definitions/CdiInputSpecification" + }, + "ChannelClass": { + "type": "string" + }, + "ChannelEngineVersion": { + "$ref": "#/definitions/ChannelEngineVersionRequest" + }, + "Destinations": { + "items": { + "$ref": "#/definitions/OutputDestination" + }, + "type": "array", + "uniqueItems": false + }, + "DryRun": { + "type": "boolean" + }, + "EncoderSettings": { + "$ref": "#/definitions/EncoderSettings" + }, + "Id": { + "type": "string" + }, + "InputAttachments": { + "items": { + "$ref": "#/definitions/InputAttachment" + }, + "type": "array", + "uniqueItems": false + }, + "InputSpecification": { + "$ref": "#/definitions/InputSpecification" + }, + "Inputs": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "LogLevel": { + "type": "string" + }, + "Maintenance": { + "$ref": "#/definitions/MaintenanceCreateSettings" + }, + "Name": { + "type": "string" + }, + "RoleArn": { + "type": "string" + }, + "Tags": { + "type": "object" + }, + "Vpc": { + "$ref": "#/definitions/VpcOutputSettings" + } + }, + "readOnlyProperties": [ + "/properties/Inputs", + "/properties/Id", + "/properties/Arn" + ], + "typeName": "AWS::MediaLive::Channel" +} diff --git a/src/schema/aws-medialive-channelplacementgroup.json b/src/schema/aws-medialive-channelplacementgroup.json index 0cfdc260..61cdc231 100644 --- a/src/schema/aws-medialive-channelplacementgroup.json +++ b/src/schema/aws-medialive-channelplacementgroup.json @@ -1,145 +1,148 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClusterId" - ], - "definitions": { - "ChannelPlacementGroupState": { - "description": "The current state of the ChannelPlacementGroupState", - "enum": [ - "UNASSIGNED", - "ASSIGNING", - "ASSIGNED", - "DELETING", - "DELETED", - "UNASSIGNING" - ], - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::MediaLive::ChannelPlacementGroup Resource Type", - "handlers": { - "create": { - "permissions": [ - "medialive:CreateChannelPlacementGroup", - "medialive:DescribeChannelPlacementGroup", - "medialive:CreateTags" - ] - }, - "delete": { - "permissions": [ - "medialive:DeleteChannelPlacementGroup", - "medialive:DescribeChannelPlacementGroup" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ClusterId": { - "$ref": "resource-schema.json#/properties/ClusterId" - } - }, - "required": [ - "ClusterId" - ] - }, - "permissions": [ - "medialive:ListChannelPlacementGroups" - ] - }, - "read": { - "permissions": [ - "medialive:DescribeChannelPlacementGroup" - ] - }, - "update": { - "permissions": [ - "medialive:UpdateChannelPlacementGroup", - "medialive:DescribeChannelPlacementGroup", - "medialive:CreateTags", - "medialive:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id", - "/properties/ClusterId" - ], - "properties": { - "Arn": { - "description": "The ARN of the channel placement group.", - "type": "string" - }, - "Channels": { - "description": "List of channel IDs added to the channel placement group.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "ClusterId": { - "description": "The ID of the cluster the node is on.", - "type": "string" - }, - "Id": { - "description": "Unique internal identifier.", - "type": "string" - }, - "Name": { - "description": "The name of the channel placement group.", - "type": "string" - }, - "Nodes": { - "description": "List of nodes added to the channel placement group", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "State": { - "$ref": "#/definitions/ChannelPlacementGroupState" - }, - "Tags": { - "description": "A collection of key-value pairs.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tags" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Channels", - "/properties/Id", - "/properties/State" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-medialive.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "medialive:CreateTags", - "medialive:DeleteTags" - ], - "tagOnCreate": false, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::MediaLive::ChannelPlacementGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterId" + ], + "definitions": { + "ChannelPlacementGroupState": { + "description": "The current state of the ChannelPlacementGroupState", + "enum": [ + "UNASSIGNED", + "ASSIGNING", + "ASSIGNED", + "DELETING", + "DELETED", + "UNASSIGNING" + ], + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::MediaLive::ChannelPlacementGroup Resource Type", + "handlers": { + "create": { + "permissions": [ + "medialive:CreateChannelPlacementGroup", + "medialive:DescribeChannelPlacementGroup", + "medialive:CreateTags", + "medialive:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "medialive:DeleteChannelPlacementGroup", + "medialive:DescribeChannelPlacementGroup" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ClusterId": { + "$ref": "resource-schema.json#/properties/ClusterId" + } + }, + "required": [ + "ClusterId" + ] + }, + "permissions": [ + "medialive:ListChannelPlacementGroups" + ] + }, + "read": { + "permissions": [ + "medialive:DescribeChannelPlacementGroup", + "medialive:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "medialive:UpdateChannelPlacementGroup", + "medialive:DescribeChannelPlacementGroup", + "medialive:CreateTags", + "medialive:DeleteTags", + "medialive:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id", + "/properties/ClusterId" + ], + "properties": { + "Arn": { + "description": "The ARN of the channel placement group.", + "type": "string" + }, + "Channels": { + "description": "List of channel IDs added to the channel placement group.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "ClusterId": { + "description": "The ID of the cluster the node is on.", + "type": "string" + }, + "Id": { + "description": "Unique internal identifier.", + "type": "string" + }, + "Name": { + "description": "The name of the channel placement group.", + "type": "string" + }, + "Nodes": { + "description": "List of nodes added to the channel placement group", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "State": { + "$ref": "#/definitions/ChannelPlacementGroupState" + }, + "Tags": { + "description": "A collection of key-value pairs.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tags" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Channels", + "/properties/Id", + "/properties/State" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-medialive.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "medialive:CreateTags", + "medialive:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaLive::ChannelPlacementGroup" +} diff --git a/src/schema/aws-medialive-cloudwatchalarmtemplate.json b/src/schema/aws-medialive-cloudwatchalarmtemplate.json index 2fdbfea4..794be787 100644 --- a/src/schema/aws-medialive-cloudwatchalarmtemplate.json +++ b/src/schema/aws-medialive-cloudwatchalarmtemplate.json @@ -1,229 +1,229 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Tags" - ], - "definitions": { - "CloudWatchAlarmTemplateComparisonOperator": { - "description": "The comparison operator used to compare the specified statistic and the threshold.", - "enum": [ - "GreaterThanOrEqualToThreshold", - "GreaterThanThreshold", - "LessThanThreshold", - "LessThanOrEqualToThreshold" - ], - "type": "string" - }, - "CloudWatchAlarmTemplateStatistic": { - "description": "The statistic to apply to the alarm's metric data.", - "enum": [ - "SampleCount", - "Average", - "Sum", - "Minimum", - "Maximum" - ], - "type": "string" - }, - "CloudWatchAlarmTemplateTargetResourceType": { - "description": "The resource type this template should dynamically generate cloudwatch metric alarms for.", - "enum": [ - "CLOUDFRONT_DISTRIBUTION", - "MEDIALIVE_MULTIPLEX", - "MEDIALIVE_CHANNEL", - "MEDIALIVE_INPUT_DEVICE", - "MEDIAPACKAGE_CHANNEL", - "MEDIAPACKAGE_ORIGIN_ENDPOINT", - "MEDIACONNECT_FLOW", - "S3_BUCKET" - ], - "type": "string" - }, - "CloudWatchAlarmTemplateTreatMissingData": { - "description": "Specifies how missing data points are treated when evaluating the alarm's condition.", - "enum": [ - "notBreaching", - "breaching", - "ignore", - "missing" - ], - "type": "string" - }, - "TagMap": { - "additionalProperties": false, - "description": "Represents the tags associated with a resource.", - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::MediaLive::CloudWatchAlarmTemplate Resource Type", - "handlers": { - "create": { - "permissions": [ - "medialive:CreateCloudWatchAlarmTemplate", - "medialive:GetCloudWatchAlarmTemplate", - "medialive:CreateTags" - ] - }, - "delete": { - "permissions": [ - "medialive:DeleteCloudWatchAlarmTemplate" - ] - }, - "list": { - "permissions": [ - "medialive:ListCloudWatchAlarmTemplates" - ] - }, - "read": { - "permissions": [ - "medialive:GetCloudWatchAlarmTemplate" - ] - }, - "update": { - "permissions": [ - "medialive:UpdateCloudWatchAlarmTemplate", - "medialive:GetCloudWatchAlarmTemplate", - "medialive:CreateTags", - "medialive:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/Identifier" - ], - "properties": { - "Arn": { - "description": "A cloudwatch alarm template's ARN (Amazon Resource Name)", - "pattern": "^arn:.+:medialive:.+:cloudwatch-alarm-template:.+$", - "type": "string" - }, - "ComparisonOperator": { - "$ref": "#/definitions/CloudWatchAlarmTemplateComparisonOperator" - }, - "CreatedAt": { - "format": "date-time", - "type": "string" - }, - "DatapointsToAlarm": { - "default": 0, - "description": "The number of datapoints within the evaluation period that must be breaching to trigger the alarm.", - "minimum": 1, - "type": "number" - }, - "Description": { - "description": "A resource's optional description.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "EvaluationPeriods": { - "default": 0, - "description": "The number of periods over which data is compared to the specified threshold.", - "minimum": 1, - "type": "number" - }, - "GroupId": { - "description": "A cloudwatch alarm template group's id. AWS provided template groups have ids that start with `aws-`", - "maxLength": 11, - "minLength": 7, - "pattern": "^(aws-)?[0-9]{7}$", - "type": "string" - }, - "GroupIdentifier": { - "description": "A cloudwatch alarm template group's identifier. Can be either be its id or current name.", - "pattern": "^[^\\s]+$", - "type": "string" - }, - "Id": { - "description": "A cloudwatch alarm template's id. AWS provided templates have ids that start with `aws-`", - "maxLength": 11, - "minLength": 7, - "pattern": "^(aws-)?[0-9]{7}$", - "type": "string" - }, - "Identifier": { - "type": "string" - }, - "MetricName": { - "description": "The name of the metric associated with the alarm. Must be compatible with targetResourceType.", - "maxLength": 64, - "minLength": 0, - "type": "string" - }, - "ModifiedAt": { - "format": "date-time", - "type": "string" - }, - "Name": { - "description": "A resource's name. Names must be unique within the scope of a resource type in a specific region.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[^\\s]+$", - "type": "string" - }, - "Period": { - "default": 0, - "description": "The period, in seconds, over which the specified statistic is applied.", - "maximum": 86400, - "minimum": 10, - "type": "number" - }, - "Statistic": { - "$ref": "#/definitions/CloudWatchAlarmTemplateStatistic" - }, - "Tags": { - "$ref": "#/definitions/TagMap" - }, - "TargetResourceType": { - "$ref": "#/definitions/CloudWatchAlarmTemplateTargetResourceType" - }, - "Threshold": { - "default": 0, - "description": "The threshold value to compare with the specified statistic.", - "type": "number" - }, - "TreatMissingData": { - "$ref": "#/definitions/CloudWatchAlarmTemplateTreatMissingData" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/Id", - "/properties/GroupId", - "/properties/Identifier", - "/properties/ModifiedAt" - ], - "required": [ - "ComparisonOperator", - "EvaluationPeriods", - "GroupIdentifier", - "MetricName", - "Name", - "Period", - "Statistic", - "TargetResourceType", - "Threshold", - "TreatMissingData" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "medialive:CreateTags", - "medialive:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MediaLive::CloudWatchAlarmTemplate", - "writeOnlyProperties": [ - "/properties/GroupIdentifier" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tags" + ], + "definitions": { + "CloudWatchAlarmTemplateComparisonOperator": { + "description": "The comparison operator used to compare the specified statistic and the threshold.", + "enum": [ + "GreaterThanOrEqualToThreshold", + "GreaterThanThreshold", + "LessThanThreshold", + "LessThanOrEqualToThreshold" + ], + "type": "string" + }, + "CloudWatchAlarmTemplateStatistic": { + "description": "The statistic to apply to the alarm's metric data.", + "enum": [ + "SampleCount", + "Average", + "Sum", + "Minimum", + "Maximum" + ], + "type": "string" + }, + "CloudWatchAlarmTemplateTargetResourceType": { + "description": "The resource type this template should dynamically generate cloudwatch metric alarms for.", + "enum": [ + "CLOUDFRONT_DISTRIBUTION", + "MEDIALIVE_MULTIPLEX", + "MEDIALIVE_CHANNEL", + "MEDIALIVE_INPUT_DEVICE", + "MEDIAPACKAGE_CHANNEL", + "MEDIAPACKAGE_ORIGIN_ENDPOINT", + "MEDIACONNECT_FLOW", + "MEDIATAILOR_PLAYBACK_CONFIGURATION", + "S3_BUCKET" + ], + "type": "string" + }, + "CloudWatchAlarmTemplateTreatMissingData": { + "description": "Specifies how missing data points are treated when evaluating the alarm's condition.", + "enum": [ + "notBreaching", + "breaching", + "ignore", + "missing" + ], + "type": "string" + }, + "TagMap": { + "additionalProperties": false, + "description": "Represents the tags associated with a resource.", + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::MediaLive::CloudWatchAlarmTemplate Resource Type", + "handlers": { + "create": { + "permissions": [ + "medialive:CreateCloudWatchAlarmTemplate", + "medialive:GetCloudWatchAlarmTemplate", + "medialive:CreateTags" + ] + }, + "delete": { + "permissions": [ + "medialive:DeleteCloudWatchAlarmTemplate" + ] + }, + "list": { + "permissions": [ + "medialive:ListCloudWatchAlarmTemplates" + ] + }, + "read": { + "permissions": [ + "medialive:GetCloudWatchAlarmTemplate" + ] + }, + "update": { + "permissions": [ + "medialive:UpdateCloudWatchAlarmTemplate", + "medialive:GetCloudWatchAlarmTemplate", + "medialive:CreateTags", + "medialive:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Identifier" + ], + "properties": { + "Arn": { + "description": "A cloudwatch alarm template's ARN (Amazon Resource Name)", + "pattern": "^arn:.+:medialive:.+:cloudwatch-alarm-template:.+$", + "type": "string" + }, + "ComparisonOperator": { + "$ref": "#/definitions/CloudWatchAlarmTemplateComparisonOperator" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "DatapointsToAlarm": { + "default": 0, + "description": "The number of datapoints within the evaluation period that must be breaching to trigger the alarm.", + "minimum": 1, + "type": "number" + }, + "Description": { + "description": "A resource's optional description.", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "EvaluationPeriods": { + "default": 0, + "description": "The number of periods over which data is compared to the specified threshold.", + "minimum": 1, + "type": "number" + }, + "GroupId": { + "description": "A cloudwatch alarm template group's id. AWS provided template groups have ids that start with `aws-`", + "maxLength": 11, + "minLength": 7, + "pattern": "^(aws-)?[0-9]{7}$", + "type": "string" + }, + "GroupIdentifier": { + "description": "A cloudwatch alarm template group's identifier. Can be either be its id or current name.", + "pattern": "^[^\\s]+$", + "type": "string" + }, + "Id": { + "description": "A cloudwatch alarm template's id. AWS provided templates have ids that start with `aws-`", + "maxLength": 11, + "minLength": 7, + "pattern": "^(aws-)?[0-9]{7}$", + "type": "string" + }, + "Identifier": { + "type": "string" + }, + "MetricName": { + "description": "The name of the metric associated with the alarm. Must be compatible with targetResourceType.", + "maxLength": 64, + "minLength": 0, + "type": "string" + }, + "ModifiedAt": { + "format": "date-time", + "type": "string" + }, + "Name": { + "description": "A resource's name. Names must be unique within the scope of a resource type in a specific region.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[^\\s]+$", + "type": "string" + }, + "Period": { + "default": 0, + "description": "The period, in seconds, over which the specified statistic is applied.", + "maximum": 86400, + "minimum": 10, + "type": "number" + }, + "Statistic": { + "$ref": "#/definitions/CloudWatchAlarmTemplateStatistic" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + }, + "TargetResourceType": { + "$ref": "#/definitions/CloudWatchAlarmTemplateTargetResourceType" + }, + "Threshold": { + "default": 0, + "description": "The threshold value to compare with the specified statistic.", + "type": "number" + }, + "TreatMissingData": { + "$ref": "#/definitions/CloudWatchAlarmTemplateTreatMissingData" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/Id", + "/properties/GroupId", + "/properties/Identifier", + "/properties/ModifiedAt" + ], + "required": [ + "ComparisonOperator", + "EvaluationPeriods", + "MetricName", + "Name", + "Period", + "Statistic", + "TargetResourceType", + "Threshold", + "TreatMissingData" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "medialive:CreateTags", + "medialive:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaLive::CloudWatchAlarmTemplate", + "writeOnlyProperties": [ + "/properties/GroupIdentifier" + ] +} diff --git a/src/schema/aws-medialive-cloudwatchalarmtemplategroup.json b/src/schema/aws-medialive-cloudwatchalarmtemplategroup.json index e7e5b918..3e2991e9 100644 --- a/src/schema/aws-medialive-cloudwatchalarmtemplategroup.json +++ b/src/schema/aws-medialive-cloudwatchalarmtemplategroup.json @@ -1,118 +1,118 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Tags" - ], - "definitions": { - "TagMap": { - "additionalProperties": false, - "description": "Represents the tags associated with a resource.", - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::MediaLive::CloudWatchAlarmTemplateGroup Resource Type", - "handlers": { - "create": { - "permissions": [ - "medialive:CreateCloudWatchAlarmTemplateGroup", - "medialive:GetCloudWatchAlarmTemplateGroup", - "medialive:CreateTags" - ] - }, - "delete": { - "permissions": [ - "medialive:DeleteCloudWatchAlarmTemplateGroup" - ] - }, - "list": { - "permissions": [ - "medialive:ListCloudWatchAlarmTemplateGroups" - ] - }, - "read": { - "permissions": [ - "medialive:GetCloudWatchAlarmTemplateGroup" - ] - }, - "update": { - "permissions": [ - "medialive:UpdateCloudWatchAlarmTemplateGroup", - "medialive:GetCloudWatchAlarmTemplateGroup", - "medialive:CreateTags", - "medialive:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/Identifier" - ], - "properties": { - "Arn": { - "description": "A cloudwatch alarm template group's ARN (Amazon Resource Name)", - "pattern": "^arn:.+:medialive:.+:cloudwatch-alarm-template-group:.+$", - "type": "string" - }, - "CreatedAt": { - "format": "date-time", - "type": "string" - }, - "Description": { - "description": "A resource's optional description.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "Id": { - "description": "A cloudwatch alarm template group's id. AWS provided template groups have ids that start with `aws-`", - "maxLength": 11, - "minLength": 7, - "pattern": "^(aws-)?[0-9]{7}$", - "type": "string" - }, - "Identifier": { - "type": "string" - }, - "ModifiedAt": { - "format": "date-time", - "type": "string" - }, - "Name": { - "description": "A resource's name. Names must be unique within the scope of a resource type in a specific region.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[^\\s]+$", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/TagMap" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/Id", - "/properties/Identifier", - "/properties/ModifiedAt" - ], - "required": [ - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "medialive:CreateTags", - "medialive:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MediaLive::CloudWatchAlarmTemplateGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Tags" + ], + "definitions": { + "TagMap": { + "additionalProperties": false, + "description": "Represents the tags associated with a resource.", + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::MediaLive::CloudWatchAlarmTemplateGroup Resource Type", + "handlers": { + "create": { + "permissions": [ + "medialive:CreateCloudWatchAlarmTemplateGroup", + "medialive:GetCloudWatchAlarmTemplateGroup", + "medialive:CreateTags" + ] + }, + "delete": { + "permissions": [ + "medialive:DeleteCloudWatchAlarmTemplateGroup" + ] + }, + "list": { + "permissions": [ + "medialive:ListCloudWatchAlarmTemplateGroups" + ] + }, + "read": { + "permissions": [ + "medialive:GetCloudWatchAlarmTemplateGroup" + ] + }, + "update": { + "permissions": [ + "medialive:UpdateCloudWatchAlarmTemplateGroup", + "medialive:GetCloudWatchAlarmTemplateGroup", + "medialive:CreateTags", + "medialive:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Identifier" + ], + "properties": { + "Arn": { + "description": "A cloudwatch alarm template group's ARN (Amazon Resource Name)", + "pattern": "^arn:.+:medialive:.+:cloudwatch-alarm-template-group:.+$", + "type": "string" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "A resource's optional description.", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "Id": { + "description": "A cloudwatch alarm template group's id. AWS provided template groups have ids that start with `aws-`", + "maxLength": 11, + "minLength": 7, + "pattern": "^(aws-)?[0-9]{7}$", + "type": "string" + }, + "Identifier": { + "type": "string" + }, + "ModifiedAt": { + "format": "date-time", + "type": "string" + }, + "Name": { + "description": "A resource's name. Names must be unique within the scope of a resource type in a specific region.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[^\\s]+$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/Id", + "/properties/Identifier", + "/properties/ModifiedAt" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "medialive:CreateTags", + "medialive:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaLive::CloudWatchAlarmTemplateGroup" +} diff --git a/src/schema/aws-medialive-cluster.json b/src/schema/aws-medialive-cluster.json index ecf74899..403abad8 100644 --- a/src/schema/aws-medialive-cluster.json +++ b/src/schema/aws-medialive-cluster.json @@ -1,198 +1,202 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClusterType", - "/properties/InstanceRoleArn" - ], - "definitions": { - "ClusterNetworkSettings": { - "additionalProperties": false, - "description": "On premises settings which will have the interface network mappings and default Output logical interface", - "properties": { - "DefaultRoute": { - "description": "Default value if the customer does not define it in channel Output API", - "type": "string" - }, - "InterfaceMappings": { - "description": "Network mappings for the cluster", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/InterfaceMapping" - }, - "type": "array" - } - }, - "type": "object" - }, - "ClusterState": { - "description": "The current state of the Cluster.", - "enum": [ - "CREATING", - "CREATE_FAILED", - "ACTIVE", - "DELETING", - "DELETED" - ], - "type": "string" - }, - "ClusterType": { - "description": "The hardware type for the cluster.", - "enum": [ - "ON_PREMISES", - "OUTPOSTS_RACK", - "OUTPOSTS_SERVER", - "EC2" - ], - "type": "string" - }, - "InterfaceMapping": { - "additionalProperties": false, - "description": "Network mappings for the cluster", - "properties": { - "LogicalInterfaceName": { - "description": "logical interface name, unique in the list", - "type": "string" - }, - "NetworkId": { - "description": "Network Id to be associated with the logical interface name, can be duplicated in list", - "type": "string" - } - }, - "type": "object" - }, - "InterfaceNetworkMapping": { - "additionalProperties": false, - "description": "Network mappings for the cluster", - "properties": { - "LogicalInterfaceName": { - "description": "logical interface name, unique in the list", - "type": "string" - }, - "NetworkId": { - "description": "Network Id to be associated with the logical interface name, can be duplicated in list", - "type": "string" - } - }, - "type": "object" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::MediaLive::Cluster Resource Type", - "handlers": { - "create": { - "permissions": [ - "medialive:CreateCluster", - "medialive:DescribeCluster", - "medialive:CreateTags", - "ecs:CreateCluster", - "ecs:RegisterTaskDefinition", - "ecs:TagResource", - "ecs:CreateService", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "medialive:DeleteCluster", - "medialive:DescribeCluster" - ] - }, - "list": { - "permissions": [ - "medialive:ListClusters" - ] - }, - "read": { - "permissions": [ - "medialive:DescribeCluster" - ] - }, - "update": { - "permissions": [ - "medialive:UpdateCluster", - "medialive:DescribeCluster", - "medialive:CreateTags", - "medialive:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The ARN of the Cluster.", - "pattern": "^arn:.+:medialive:.+:cluster:.+$", - "type": "string" - }, - "ChannelIds": { - "description": "The MediaLive Channels that are currently running on Nodes in this Cluster.", - "insertionOrder": false, - "items": { - "description": "MediaLive Channel Ids", - "type": "string" - }, - "type": "array" - }, - "ClusterType": { - "$ref": "#/definitions/ClusterType" - }, - "Id": { - "description": "The unique ID of the Cluster.", - "type": "string" - }, - "InstanceRoleArn": { - "description": "The IAM role your nodes will use.", - "pattern": "^arn:.+:iam:.+:role/.+$", - "type": "string" - }, - "Name": { - "description": "The user-specified name of the Cluster to be created.", - "type": "string" - }, - "NetworkSettings": { - "$ref": "#/definitions/ClusterNetworkSettings" - }, - "State": { - "$ref": "#/definitions/ClusterState" - }, - "Tags": { - "description": "A collection of key-value pairs.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tags" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/ChannelIds", - "/properties/Id", - "/properties/State" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "medialive:CreateTags", - "medialive:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MediaLive::Cluster" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterType", + "/properties/InstanceRoleArn" + ], + "definitions": { + "ClusterNetworkSettings": { + "additionalProperties": false, + "description": "On premises settings which will have the interface network mappings and default Output logical interface", + "properties": { + "DefaultRoute": { + "description": "Default value if the customer does not define it in channel Output API", + "type": "string" + }, + "InterfaceMappings": { + "description": "Network mappings for the cluster", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InterfaceMapping" + }, + "type": "array" + } + }, + "type": "object" + }, + "ClusterState": { + "description": "The current state of the Cluster.", + "enum": [ + "CREATING", + "CREATE_FAILED", + "ACTIVE", + "DELETING", + "DELETED" + ], + "type": "string" + }, + "ClusterType": { + "description": "The hardware type for the cluster.", + "enum": [ + "ON_PREMISES", + "OUTPOSTS_RACK", + "OUTPOSTS_SERVER", + "EC2" + ], + "type": "string" + }, + "InterfaceMapping": { + "additionalProperties": false, + "description": "Network mappings for the cluster", + "properties": { + "LogicalInterfaceName": { + "description": "logical interface name, unique in the list", + "type": "string" + }, + "NetworkId": { + "description": "Network Id to be associated with the logical interface name, can be duplicated in list", + "type": "string" + } + }, + "type": "object" + }, + "InterfaceNetworkMapping": { + "additionalProperties": false, + "description": "Network mappings for the cluster", + "properties": { + "LogicalInterfaceName": { + "description": "logical interface name, unique in the list", + "type": "string" + }, + "NetworkId": { + "description": "Network Id to be associated with the logical interface name, can be duplicated in list", + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::MediaLive::Cluster Resource Type", + "handlers": { + "create": { + "permissions": [ + "medialive:CreateCluster", + "medialive:DescribeCluster", + "medialive:CreateTags", + "ecs:CreateCluster", + "ecs:RegisterTaskDefinition", + "ecs:TagResource", + "ecs:CreateService", + "iam:PassRole", + "medialive:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "medialive:DeleteCluster", + "medialive:DescribeCluster", + "ecs:DeleteService" + ] + }, + "list": { + "permissions": [ + "medialive:ListClusters" + ] + }, + "read": { + "permissions": [ + "medialive:DescribeCluster", + "medialive:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "medialive:UpdateCluster", + "medialive:DescribeCluster", + "medialive:CreateTags", + "medialive:DeleteTags", + "medialive:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The ARN of the Cluster.", + "pattern": "^arn:.+:medialive:.+:cluster:.+$", + "type": "string" + }, + "ChannelIds": { + "description": "The MediaLive Channels that are currently running on Nodes in this Cluster.", + "insertionOrder": false, + "items": { + "description": "MediaLive Channel Ids", + "type": "string" + }, + "type": "array" + }, + "ClusterType": { + "$ref": "#/definitions/ClusterType" + }, + "Id": { + "description": "The unique ID of the Cluster.", + "type": "string" + }, + "InstanceRoleArn": { + "description": "The IAM role your nodes will use.", + "pattern": "^arn:.+:iam:.+:role/.+$", + "type": "string" + }, + "Name": { + "description": "The user-specified name of the Cluster to be created.", + "type": "string" + }, + "NetworkSettings": { + "$ref": "#/definitions/ClusterNetworkSettings" + }, + "State": { + "$ref": "#/definitions/ClusterState" + }, + "Tags": { + "description": "A collection of key-value pairs.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tags" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ChannelIds", + "/properties/Id", + "/properties/State" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "medialive:CreateTags", + "medialive:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaLive::Cluster" +} diff --git a/src/schema/aws-medialive-eventbridgeruletemplate.json b/src/schema/aws-medialive-eventbridgeruletemplate.json index fa1825c1..4081129b 100644 --- a/src/schema/aws-medialive-eventbridgeruletemplate.json +++ b/src/schema/aws-medialive-eventbridgeruletemplate.json @@ -1,185 +1,184 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Tags" - ], - "definitions": { - "EventBridgeRuleTemplateEventType": { - "description": "The type of event to match with the rule.", - "enum": [ - "MEDIALIVE_MULTIPLEX_ALERT", - "MEDIALIVE_MULTIPLEX_STATE_CHANGE", - "MEDIALIVE_CHANNEL_ALERT", - "MEDIALIVE_CHANNEL_INPUT_CHANGE", - "MEDIALIVE_CHANNEL_STATE_CHANGE", - "MEDIAPACKAGE_INPUT_NOTIFICATION", - "MEDIAPACKAGE_KEY_PROVIDER_NOTIFICATION", - "MEDIAPACKAGE_HARVEST_JOB_NOTIFICATION", - "SIGNAL_MAP_ACTIVE_ALARM", - "MEDIACONNECT_ALERT", - "MEDIACONNECT_SOURCE_HEALTH", - "MEDIACONNECT_OUTPUT_HEALTH", - "MEDIACONNECT_FLOW_STATUS_CHANGE" - ], - "type": "string" - }, - "EventBridgeRuleTemplateTarget": { - "additionalProperties": false, - "description": "The target to which to send matching events.", - "properties": { - "Arn": { - "description": "Target ARNs must be either an SNS topic or CloudWatch log group.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn.+$", - "type": "string" - } - }, - "required": [ - "Arn" - ], - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "description": "Represents the tags associated with a resource.", - "patternProperties": { - ".+": { - "description": "Placeholder documentation for __string", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::MediaLive::EventBridgeRuleTemplate Resource Type", - "handlers": { - "create": { - "permissions": [ - "medialive:CreateEventBridgeRuleTemplate", - "medialive:GetEventBridgeRuleTemplate", - "medialive:CreateTags" - ] - }, - "delete": { - "permissions": [ - "medialive:DeleteEventBridgeRuleTemplate" - ] - }, - "list": { - "permissions": [ - "medialive:ListEventBridgeRuleTemplates" - ] - }, - "read": { - "permissions": [ - "medialive:GetEventBridgeRuleTemplate" - ] - }, - "update": { - "permissions": [ - "medialive:UpdateEventBridgeRuleTemplate", - "medialive:GetEventBridgeRuleTemplate", - "medialive:CreateTags", - "medialive:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/Identifier" - ], - "properties": { - "Arn": { - "description": "An eventbridge rule template's ARN (Amazon Resource Name)", - "pattern": "^arn:.+:medialive:.+:eventbridge-rule-template:.+$", - "type": "string" - }, - "CreatedAt": { - "description": "Placeholder documentation for __timestampIso8601", - "format": "date-time", - "type": "string" - }, - "Description": { - "description": "A resource's optional description.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "EventTargets": { - "description": "Placeholder documentation for __listOfEventBridgeRuleTemplateTarget", - "items": { - "$ref": "#/definitions/EventBridgeRuleTemplateTarget" - }, - "type": "array" - }, - "EventType": { - "$ref": "#/definitions/EventBridgeRuleTemplateEventType" - }, - "GroupId": { - "description": "An eventbridge rule template group's id. AWS provided template groups have ids that start with `aws-`", - "maxLength": 11, - "minLength": 7, - "pattern": "^(aws-)?[0-9]{7}$", - "type": "string" - }, - "GroupIdentifier": { - "description": "An eventbridge rule template group's identifier. Can be either be its id or current name.", - "pattern": "^[^\\s]+$", - "type": "string" - }, - "Id": { - "description": "An eventbridge rule template's id. AWS provided templates have ids that start with `aws-`", - "maxLength": 11, - "minLength": 7, - "pattern": "^(aws-)?[0-9]{7}$", - "type": "string" - }, - "Identifier": { - "description": "Placeholder documentation for __string", - "type": "string" - }, - "ModifiedAt": { - "description": "Placeholder documentation for __timestampIso8601", - "format": "date-time", - "type": "string" - }, - "Name": { - "description": "A resource's name. Names must be unique within the scope of a resource type in a specific region.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[^\\s]+$", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/TagMap" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/GroupId", - "/properties/Id", - "/properties/Identifier", - "/properties/ModifiedAt" - ], - "required": [ - "EventType", - "GroupIdentifier", - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "medialive:CreateTags", - "medialive:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MediaLive::EventBridgeRuleTemplate", - "writeOnlyProperties": [ - "/properties/GroupIdentifier" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tags" + ], + "definitions": { + "EventBridgeRuleTemplateEventType": { + "description": "The type of event to match with the rule.", + "enum": [ + "MEDIALIVE_MULTIPLEX_ALERT", + "MEDIALIVE_MULTIPLEX_STATE_CHANGE", + "MEDIALIVE_CHANNEL_ALERT", + "MEDIALIVE_CHANNEL_INPUT_CHANGE", + "MEDIALIVE_CHANNEL_STATE_CHANGE", + "MEDIAPACKAGE_INPUT_NOTIFICATION", + "MEDIAPACKAGE_KEY_PROVIDER_NOTIFICATION", + "MEDIAPACKAGE_HARVEST_JOB_NOTIFICATION", + "SIGNAL_MAP_ACTIVE_ALARM", + "MEDIACONNECT_ALERT", + "MEDIACONNECT_SOURCE_HEALTH", + "MEDIACONNECT_OUTPUT_HEALTH", + "MEDIACONNECT_FLOW_STATUS_CHANGE" + ], + "type": "string" + }, + "EventBridgeRuleTemplateTarget": { + "additionalProperties": false, + "description": "The target to which to send matching events.", + "properties": { + "Arn": { + "description": "Target ARNs must be either an SNS topic or CloudWatch log group.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn.+$", + "type": "string" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "description": "Represents the tags associated with a resource.", + "patternProperties": { + ".+": { + "description": "Placeholder documentation for __string", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::MediaLive::EventBridgeRuleTemplate Resource Type", + "handlers": { + "create": { + "permissions": [ + "medialive:CreateEventBridgeRuleTemplate", + "medialive:GetEventBridgeRuleTemplate", + "medialive:CreateTags" + ] + }, + "delete": { + "permissions": [ + "medialive:DeleteEventBridgeRuleTemplate" + ] + }, + "list": { + "permissions": [ + "medialive:ListEventBridgeRuleTemplates" + ] + }, + "read": { + "permissions": [ + "medialive:GetEventBridgeRuleTemplate" + ] + }, + "update": { + "permissions": [ + "medialive:UpdateEventBridgeRuleTemplate", + "medialive:GetEventBridgeRuleTemplate", + "medialive:CreateTags", + "medialive:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Identifier" + ], + "properties": { + "Arn": { + "description": "An eventbridge rule template's ARN (Amazon Resource Name)", + "pattern": "^arn:.+:medialive:.+:eventbridge-rule-template:.+$", + "type": "string" + }, + "CreatedAt": { + "description": "Placeholder documentation for __timestampIso8601", + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "A resource's optional description.", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "EventTargets": { + "description": "Placeholder documentation for __listOfEventBridgeRuleTemplateTarget", + "items": { + "$ref": "#/definitions/EventBridgeRuleTemplateTarget" + }, + "type": "array" + }, + "EventType": { + "$ref": "#/definitions/EventBridgeRuleTemplateEventType" + }, + "GroupId": { + "description": "An eventbridge rule template group's id. AWS provided template groups have ids that start with `aws-`", + "maxLength": 11, + "minLength": 7, + "pattern": "^(aws-)?[0-9]{7}$", + "type": "string" + }, + "GroupIdentifier": { + "description": "An eventbridge rule template group's identifier. Can be either be its id or current name.", + "pattern": "^[^\\s]+$", + "type": "string" + }, + "Id": { + "description": "An eventbridge rule template's id. AWS provided templates have ids that start with `aws-`", + "maxLength": 11, + "minLength": 7, + "pattern": "^(aws-)?[0-9]{7}$", + "type": "string" + }, + "Identifier": { + "description": "Placeholder documentation for __string", + "type": "string" + }, + "ModifiedAt": { + "description": "Placeholder documentation for __timestampIso8601", + "format": "date-time", + "type": "string" + }, + "Name": { + "description": "A resource's name. Names must be unique within the scope of a resource type in a specific region.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[^\\s]+$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/GroupId", + "/properties/Id", + "/properties/Identifier", + "/properties/ModifiedAt" + ], + "required": [ + "EventType", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "medialive:CreateTags", + "medialive:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaLive::EventBridgeRuleTemplate", + "writeOnlyProperties": [ + "/properties/GroupIdentifier" + ] +} diff --git a/src/schema/aws-medialive-eventbridgeruletemplategroup.json b/src/schema/aws-medialive-eventbridgeruletemplategroup.json index 658b5133..d06ce9ec 100644 --- a/src/schema/aws-medialive-eventbridgeruletemplategroup.json +++ b/src/schema/aws-medialive-eventbridgeruletemplategroup.json @@ -1,118 +1,118 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Tags" - ], - "definitions": { - "TagMap": { - "additionalProperties": false, - "description": "Represents the tags associated with a resource.", - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::MediaLive::EventBridgeRuleTemplateGroup Resource Type", - "handlers": { - "create": { - "permissions": [ - "medialive:CreateEventBridgeRuleTemplateGroup", - "medialive:GetEventBridgeRuleTemplateGroup", - "medialive:CreateTags" - ] - }, - "delete": { - "permissions": [ - "medialive:DeleteEventBridgeRuleTemplateGroup" - ] - }, - "list": { - "permissions": [ - "medialive:ListEventBridgeRuleTemplateGroups" - ] - }, - "read": { - "permissions": [ - "medialive:GetEventBridgeRuleTemplateGroup" - ] - }, - "update": { - "permissions": [ - "medialive:UpdateEventBridgeRuleTemplateGroup", - "medialive:GetEventBridgeRuleTemplateGroup", - "medialive:CreateTags", - "medialive:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/Identifier" - ], - "properties": { - "Arn": { - "description": "An eventbridge rule template group's ARN (Amazon Resource Name)", - "pattern": "^arn:.+:medialive:.+:eventbridge-rule-template-group:.+$", - "type": "string" - }, - "CreatedAt": { - "format": "date-time", - "type": "string" - }, - "Description": { - "description": "A resource's optional description.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "Id": { - "description": "An eventbridge rule template group's id. AWS provided template groups have ids that start with `aws-`", - "maxLength": 11, - "minLength": 7, - "pattern": "^(aws-)?[0-9]{7}$", - "type": "string" - }, - "Identifier": { - "type": "string" - }, - "ModifiedAt": { - "format": "date-time", - "type": "string" - }, - "Name": { - "description": "A resource's name. Names must be unique within the scope of a resource type in a specific region.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[^\\s]+$", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/TagMap" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/Id", - "/properties/Identifier", - "/properties/ModifiedAt" - ], - "required": [ - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "medialive:CreateTags", - "medialive:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MediaLive::EventBridgeRuleTemplateGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Tags" + ], + "definitions": { + "TagMap": { + "additionalProperties": false, + "description": "Represents the tags associated with a resource.", + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::MediaLive::EventBridgeRuleTemplateGroup Resource Type", + "handlers": { + "create": { + "permissions": [ + "medialive:CreateEventBridgeRuleTemplateGroup", + "medialive:GetEventBridgeRuleTemplateGroup", + "medialive:CreateTags" + ] + }, + "delete": { + "permissions": [ + "medialive:DeleteEventBridgeRuleTemplateGroup" + ] + }, + "list": { + "permissions": [ + "medialive:ListEventBridgeRuleTemplateGroups" + ] + }, + "read": { + "permissions": [ + "medialive:GetEventBridgeRuleTemplateGroup" + ] + }, + "update": { + "permissions": [ + "medialive:UpdateEventBridgeRuleTemplateGroup", + "medialive:GetEventBridgeRuleTemplateGroup", + "medialive:CreateTags", + "medialive:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Identifier" + ], + "properties": { + "Arn": { + "description": "An eventbridge rule template group's ARN (Amazon Resource Name)", + "pattern": "^arn:.+:medialive:.+:eventbridge-rule-template-group:.+$", + "type": "string" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "A resource's optional description.", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "Id": { + "description": "An eventbridge rule template group's id. AWS provided template groups have ids that start with `aws-`", + "maxLength": 11, + "minLength": 7, + "pattern": "^(aws-)?[0-9]{7}$", + "type": "string" + }, + "Identifier": { + "type": "string" + }, + "ModifiedAt": { + "format": "date-time", + "type": "string" + }, + "Name": { + "description": "A resource's name. Names must be unique within the scope of a resource type in a specific region.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[^\\s]+$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/Id", + "/properties/Identifier", + "/properties/ModifiedAt" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "medialive:CreateTags", + "medialive:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaLive::EventBridgeRuleTemplateGroup" +} diff --git a/src/schema/aws-medialive-input.json b/src/schema/aws-medialive-input.json index eb2441db..f07da482 100644 --- a/src/schema/aws-medialive-input.json +++ b/src/schema/aws-medialive-input.json @@ -1,187 +1,244 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Vpc", - "/properties/Type" - ], - "definitions": { - "InputDestinationRequest": { - "additionalProperties": false, - "properties": { - "StreamName": { - "type": "string" - } - }, - "type": "object" - }, - "InputDeviceSettings": { - "additionalProperties": false, - "properties": { - "Id": { - "type": "string" - } - }, - "type": "object" - }, - "InputSourceRequest": { - "additionalProperties": false, - "properties": { - "PasswordParam": { - "type": "string" - }, - "Url": { - "type": "string" - }, - "Username": { - "type": "string" - } - }, - "type": "object" - }, - "InputVpcRequest": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "MediaConnectFlowRequest": { - "additionalProperties": false, - "properties": { - "FlowArn": { - "type": "string" - } - }, - "type": "object" - }, - "SrtCallerDecryptionRequest": { - "additionalProperties": false, - "properties": { - "Algorithm": { - "type": "string" - }, - "PassphraseSecretArn": { - "type": "string" - } - }, - "type": "object" - }, - "SrtCallerSourceRequest": { - "additionalProperties": false, - "properties": { - "Decryption": { - "$ref": "#/definitions/SrtCallerDecryptionRequest" - }, - "MinimumLatency": { - "type": "integer" - }, - "SrtListenerAddress": { - "type": "string" - }, - "SrtListenerPort": { - "type": "string" - }, - "StreamId": { - "type": "string" - } - }, - "type": "object" - }, - "SrtSettingsRequest": { - "additionalProperties": false, - "properties": { - "SrtCallerSources": { - "items": { - "$ref": "#/definitions/SrtCallerSourceRequest" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::MediaLive::Input", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Destinations": { - "items": { - "$ref": "#/definitions/InputDestinationRequest" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - }, - "InputDevices": { - "items": { - "$ref": "#/definitions/InputDeviceSettings" - }, - "type": "array", - "uniqueItems": false - }, - "InputSecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "MediaConnectFlows": { - "items": { - "$ref": "#/definitions/MediaConnectFlowRequest" - }, - "type": "array", - "uniqueItems": false - }, - "Name": { - "type": "string" - }, - "RoleArn": { - "type": "string" - }, - "Sources": { - "items": { - "$ref": "#/definitions/InputSourceRequest" - }, - "type": "array", - "uniqueItems": false - }, - "SrtSettings": { - "$ref": "#/definitions/SrtSettingsRequest" - }, - "Tags": { - "type": "object" - }, - "Type": { - "type": "string" - }, - "Vpc": { - "$ref": "#/definitions/InputVpcRequest" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "typeName": "AWS::MediaLive::Input" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Vpc", + "/properties/Type", + "/properties/InputNetworkLocation" + ], + "definitions": { + "InputDestinationRequest": { + "additionalProperties": false, + "properties": { + "Network": { + "type": "string" + }, + "NetworkRoutes": { + "items": { + "$ref": "#/definitions/InputRequestDestinationRoute" + }, + "type": "array", + "uniqueItems": false + }, + "StaticIpAddress": { + "type": "string" + }, + "StreamName": { + "type": "string" + } + }, + "type": "object" + }, + "InputDeviceSettings": { + "additionalProperties": false, + "properties": { + "Id": { + "type": "string" + } + }, + "type": "object" + }, + "InputRequestDestinationRoute": { + "additionalProperties": false, + "properties": { + "Cidr": { + "type": "string" + }, + "Gateway": { + "type": "string" + } + }, + "type": "object" + }, + "InputSourceRequest": { + "additionalProperties": false, + "properties": { + "PasswordParam": { + "type": "string" + }, + "Url": { + "type": "string" + }, + "Username": { + "type": "string" + } + }, + "type": "object" + }, + "InputVpcRequest": { + "additionalProperties": false, + "properties": { + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "MediaConnectFlowRequest": { + "additionalProperties": false, + "properties": { + "FlowArn": { + "type": "string" + } + }, + "type": "object" + }, + "MulticastSettingsCreateRequest": { + "additionalProperties": false, + "properties": { + "Sources": { + "items": { + "$ref": "#/definitions/MulticastSourceCreateRequest" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "MulticastSourceCreateRequest": { + "additionalProperties": false, + "properties": { + "SourceIp": { + "type": "string" + }, + "Url": { + "type": "string" + } + }, + "type": "object" + }, + "SrtCallerDecryptionRequest": { + "additionalProperties": false, + "properties": { + "Algorithm": { + "type": "string" + }, + "PassphraseSecretArn": { + "type": "string" + } + }, + "type": "object" + }, + "SrtCallerSourceRequest": { + "additionalProperties": false, + "properties": { + "Decryption": { + "$ref": "#/definitions/SrtCallerDecryptionRequest" + }, + "MinimumLatency": { + "type": "integer" + }, + "SrtListenerAddress": { + "type": "string" + }, + "SrtListenerPort": { + "type": "string" + }, + "StreamId": { + "type": "string" + } + }, + "type": "object" + }, + "SrtSettingsRequest": { + "additionalProperties": false, + "properties": { + "SrtCallerSources": { + "items": { + "$ref": "#/definitions/SrtCallerSourceRequest" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MediaLive::Input", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Destinations": { + "items": { + "$ref": "#/definitions/InputDestinationRequest" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "InputDevices": { + "items": { + "$ref": "#/definitions/InputDeviceSettings" + }, + "type": "array", + "uniqueItems": false + }, + "InputNetworkLocation": { + "type": "string" + }, + "InputSecurityGroups": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MediaConnectFlows": { + "items": { + "$ref": "#/definitions/MediaConnectFlowRequest" + }, + "type": "array", + "uniqueItems": false + }, + "MulticastSettings": { + "$ref": "#/definitions/MulticastSettingsCreateRequest" + }, + "Name": { + "type": "string" + }, + "RoleArn": { + "type": "string" + }, + "Sources": { + "items": { + "$ref": "#/definitions/InputSourceRequest" + }, + "type": "array", + "uniqueItems": false + }, + "SrtSettings": { + "$ref": "#/definitions/SrtSettingsRequest" + }, + "Tags": { + "type": "object" + }, + "Type": { + "type": "string" + }, + "Vpc": { + "$ref": "#/definitions/InputVpcRequest" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "typeName": "AWS::MediaLive::Input" +} diff --git a/src/schema/aws-medialive-inputsecuritygroup.json b/src/schema/aws-medialive-inputsecuritygroup.json index 86ac945f..6ce9954d 100644 --- a/src/schema/aws-medialive-inputsecuritygroup.json +++ b/src/schema/aws-medialive-inputsecuritygroup.json @@ -1,41 +1,44 @@ -{ - "additionalProperties": false, - "definitions": { - "InputWhitelistRuleCidr": { - "additionalProperties": false, - "properties": { - "Cidr": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::MediaLive::InputSecurityGroup", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Tags": { - "type": "object" - }, - "WhitelistRules": { - "items": { - "$ref": "#/definitions/InputWhitelistRuleCidr" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id" - ], - "typeName": "AWS::MediaLive::InputSecurityGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tags" + ], + "definitions": { + "InputWhitelistRuleCidr": { + "additionalProperties": false, + "properties": { + "Cidr": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MediaLive::InputSecurityGroup", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Tags": { + "type": "object" + }, + "WhitelistRules": { + "items": { + "$ref": "#/definitions/InputWhitelistRuleCidr" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "typeName": "AWS::MediaLive::InputSecurityGroup" +} diff --git a/src/schema/aws-medialive-multiplex.json b/src/schema/aws-medialive-multiplex.json index 5d56052b..6772410f 100644 --- a/src/schema/aws-medialive-multiplex.json +++ b/src/schema/aws-medialive-multiplex.json @@ -1,200 +1,200 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AvailabilityZones" - ], - "definitions": { - "MultiplexOutputDestination": { - "additionalProperties": false, - "description": "Multiplex MediaConnect output destination settings.", - "properties": { - "MultiplexMediaConnectOutputDestinationSettings": { - "additionalProperties": false, - "description": "Multiplex MediaConnect output destination settings.", - "properties": { - "EntitlementArn": { - "description": "The MediaConnect entitlement ARN available as a Flow source.", - "minLength": 1, - "type": "string" - } - } - } - }, - "type": "object" - }, - "MultiplexSettings": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "MaximumVideoBufferDelayMilliseconds": { - "description": "Maximum video buffer delay in milliseconds.", - "maximum": 3000, - "minimum": 800, - "type": "integer" - }, - "TransportStreamBitrate": { - "description": "Transport stream bit rate.", - "maximum": 100000000, - "minimum": 1000000, - "type": "integer" - }, - "TransportStreamId": { - "description": "Transport stream ID.", - "maximum": 65535, - "minimum": 0, - "type": "integer" - }, - "TransportStreamReservedBitrate": { - "description": "Transport stream reserved bit rate.", - "maximum": 100000000, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "TransportStreamBitrate", - "TransportStreamId" - ], - "type": "object" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::MediaLive::Multiplex", - "handlers": { - "create": { - "permissions": [ - "medialive:CreateMultiplex", - "medialive:DescribeMultiplex", - "medialive:CreateTags" - ] - }, - "delete": { - "permissions": [ - "medialive:DeleteMultiplex", - "medialive:DescribeMultiplex" - ] - }, - "list": { - "permissions": [ - "medialive:ListMultiplexes" - ] - }, - "read": { - "permissions": [ - "medialive:DescribeMultiplex" - ] - }, - "update": { - "permissions": [ - "medialive:UpdateMultiplex", - "medialive:DescribeMultiplex", - "medialive:CreateTags", - "medialive:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The unique arn of the multiplex.", - "type": "string" - }, - "AvailabilityZones": { - "description": "A list of availability zones for the multiplex.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "Destinations": { - "description": "A list of the multiplex output destinations.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MultiplexOutputDestination" - }, - "type": "array" - }, - "Id": { - "description": "The unique id of the multiplex.", - "type": "string" - }, - "MultiplexSettings": { - "$ref": "#/definitions/MultiplexSettings", - "description": "Configuration for a multiplex event." - }, - "Name": { - "description": "Name of multiplex.", - "type": "string" - }, - "PipelinesRunningCount": { - "description": "The number of currently healthy pipelines.", - "type": "integer" - }, - "ProgramCount": { - "description": "The number of programs in the multiplex.", - "type": "integer" - }, - "State": { - "enum": [ - "CREATING", - "CREATE_FAILED", - "IDLE", - "STARTING", - "RUNNING", - "RECOVERING", - "STOPPING", - "DELETING", - "DELETED" - ], - "type": "string" - }, - "Tags": { - "description": "A collection of key-value pairs.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tags" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id", - "/properties/PipelinesRunningCount", - "/properties/ProgramCount", - "/properties/State" - ], - "required": [ - "AvailabilityZones", - "MultiplexSettings", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-medialive.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "medialive:CreateTags", - "medialive:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MediaLive::Multiplex" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AvailabilityZones" + ], + "definitions": { + "MultiplexOutputDestination": { + "additionalProperties": false, + "description": "Multiplex MediaConnect output destination settings.", + "properties": { + "MultiplexMediaConnectOutputDestinationSettings": { + "additionalProperties": false, + "description": "Multiplex MediaConnect output destination settings.", + "properties": { + "EntitlementArn": { + "description": "The MediaConnect entitlement ARN available as a Flow source.", + "minLength": 1, + "type": "string" + } + } + } + }, + "type": "object" + }, + "MultiplexSettings": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "MaximumVideoBufferDelayMilliseconds": { + "description": "Maximum video buffer delay in milliseconds.", + "maximum": 3000, + "minimum": 800, + "type": "integer" + }, + "TransportStreamBitrate": { + "description": "Transport stream bit rate.", + "maximum": 100000000, + "minimum": 1000000, + "type": "integer" + }, + "TransportStreamId": { + "description": "Transport stream ID.", + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "TransportStreamReservedBitrate": { + "description": "Transport stream reserved bit rate.", + "maximum": 100000000, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "TransportStreamBitrate", + "TransportStreamId" + ], + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::MediaLive::Multiplex", + "handlers": { + "create": { + "permissions": [ + "medialive:CreateMultiplex", + "medialive:DescribeMultiplex", + "medialive:CreateTags" + ] + }, + "delete": { + "permissions": [ + "medialive:DeleteMultiplex", + "medialive:DescribeMultiplex" + ] + }, + "list": { + "permissions": [ + "medialive:ListMultiplexes" + ] + }, + "read": { + "permissions": [ + "medialive:DescribeMultiplex" + ] + }, + "update": { + "permissions": [ + "medialive:UpdateMultiplex", + "medialive:DescribeMultiplex", + "medialive:CreateTags", + "medialive:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The unique arn of the multiplex.", + "type": "string" + }, + "AvailabilityZones": { + "description": "A list of availability zones for the multiplex.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Destinations": { + "description": "A list of the multiplex output destinations.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MultiplexOutputDestination" + }, + "type": "array" + }, + "Id": { + "description": "The unique id of the multiplex.", + "type": "string" + }, + "MultiplexSettings": { + "$ref": "#/definitions/MultiplexSettings", + "description": "Configuration for a multiplex event." + }, + "Name": { + "description": "Name of multiplex.", + "type": "string" + }, + "PipelinesRunningCount": { + "description": "The number of currently healthy pipelines.", + "type": "integer" + }, + "ProgramCount": { + "description": "The number of programs in the multiplex.", + "type": "integer" + }, + "State": { + "enum": [ + "CREATING", + "CREATE_FAILED", + "IDLE", + "STARTING", + "RUNNING", + "RECOVERING", + "STOPPING", + "DELETING", + "DELETED" + ], + "type": "string" + }, + "Tags": { + "description": "A collection of key-value pairs.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tags" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/PipelinesRunningCount", + "/properties/ProgramCount", + "/properties/State" + ], + "required": [ + "AvailabilityZones", + "MultiplexSettings", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-medialive.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "medialive:CreateTags", + "medialive:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaLive::Multiplex" +} diff --git a/src/schema/aws-medialive-multiplexprogram.json b/src/schema/aws-medialive-multiplexprogram.json index b6370d20..87328dc4 100644 --- a/src/schema/aws-medialive-multiplexprogram.json +++ b/src/schema/aws-medialive-multiplexprogram.json @@ -1,295 +1,295 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProgramName", - "/properties/MultiplexId" - ], - "definitions": { - "MultiplexProgramPacketIdentifiersMap": { - "additionalProperties": false, - "description": "Packet identifiers map for a given Multiplex program.", - "properties": { - "AudioPids": { - "insertionOrder": true, - "items": { - "type": "integer" - }, - "type": "array" - }, - "DvbSubPids": { - "insertionOrder": true, - "items": { - "type": "integer" - }, - "type": "array" - }, - "DvbTeletextPid": { - "type": "integer" - }, - "EtvPlatformPid": { - "type": "integer" - }, - "EtvSignalPid": { - "type": "integer" - }, - "KlvDataPids": { - "insertionOrder": true, - "items": { - "type": "integer" - }, - "type": "array" - }, - "PcrPid": { - "type": "integer" - }, - "PmtPid": { - "type": "integer" - }, - "PrivateMetadataPid": { - "type": "integer" - }, - "Scte27Pids": { - "insertionOrder": true, - "items": { - "type": "integer" - }, - "type": "array" - }, - "Scte35Pid": { - "type": "integer" - }, - "TimedMetadataPid": { - "type": "integer" - }, - "VideoPid": { - "type": "integer" - } - }, - "type": "object" - }, - "MultiplexProgramPipelineDetail": { - "additionalProperties": false, - "description": "The current source for one of the pipelines in the multiplex.", - "properties": { - "ActiveChannelPipeline": { - "description": "Identifies the channel pipeline that is currently active for the pipeline (identified by PipelineId) in the multiplex.", - "type": "string" - }, - "PipelineId": { - "description": "Identifies a specific pipeline in the multiplex.", - "type": "string" - } - }, - "type": "object" - }, - "MultiplexProgramServiceDescriptor": { - "additionalProperties": false, - "description": "Transport stream service descriptor configuration for the Multiplex program.", - "properties": { - "ProviderName": { - "description": "Name of the provider.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "ServiceName": { - "description": "Name of the service.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ProviderName", - "ServiceName" - ], - "type": "object" - }, - "MultiplexProgramSettings": { - "additionalProperties": false, - "description": "Multiplex Program settings configuration.", - "properties": { - "PreferredChannelPipeline": { - "$ref": "#/definitions/PreferredChannelPipeline", - "type": "string" - }, - "ProgramNumber": { - "description": "Unique program number.", - "maximum": 65535, - "minimum": 0, - "type": "integer" - }, - "ServiceDescriptor": { - "$ref": "#/definitions/MultiplexProgramServiceDescriptor", - "description": "Transport stream service descriptor configuration for the Multiplex program." - }, - "VideoSettings": { - "$ref": "#/definitions/MultiplexVideoSettings", - "description": "Program video settings configuration." - } - }, - "required": [ - "ProgramNumber" - ], - "type": "object" - }, - "MultiplexStatmuxVideoSettings": { - "additionalProperties": false, - "description": "Statmux rate control settings", - "properties": { - "MaximumBitrate": { - "description": "Maximum statmux bitrate.", - "maximum": 100000000, - "minimum": 100000, - "type": "integer" - }, - "MinimumBitrate": { - "description": "Minimum statmux bitrate.", - "maximum": 100000000, - "minimum": 100000, - "type": "integer" - }, - "Priority": { - "description": "The purpose of the priority is to use a combination of the\\nmultiplex rate control algorithm and the QVBR capability of the\\nencoder to prioritize the video quality of some channels in a\\nmultiplex over others. Channels that have a higher priority will\\nget higher video quality at the expense of the video quality of\\nother channels in the multiplex with lower priority.", - "maximum": 5, - "minimum": -5, - "type": "integer" - } - }, - "type": "object" - }, - "MultiplexVideoSettings": { - "description": "The video configuration for each program in a multiplex.", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "ConstantBitrate": { - "description": "The constant bitrate configuration for the video encode.\nWhen this field is defined, StatmuxSettings must be undefined.", - "maximum": 100000000, - "minimum": 100000, - "type": "integer" - } - }, - "required": [ - "ConstantBitrate" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "StatmuxSettings": { - "$ref": "#/definitions/MultiplexStatmuxVideoSettings", - "description": "Statmux rate control settings.\nWhen this field is defined, ConstantBitrate must be undefined." - } - }, - "required": [ - "StatmuxSettings" - ], - "type": "object" - } - ], - "type": "object" - }, - "PreferredChannelPipeline": { - "description": "Indicates which pipeline is preferred by the multiplex for program ingest.\nIf set to \\\"PIPELINE_0\\\" or \\\"PIPELINE_1\\\" and an unhealthy ingest causes the multiplex to switch to the non-preferred pipeline,\nit will switch back once that ingest is healthy again. If set to \\\"CURRENTLY_ACTIVE\\\",\nit will not switch back to the other pipeline based on it recovering to a healthy state,\nit will only switch if the active pipeline becomes unhealthy.\n", - "enum": [ - "CURRENTLY_ACTIVE", - "PIPELINE_0", - "PIPELINE_1" - ], - "type": "string" - } - }, - "description": "Resource schema for AWS::MediaLive::Multiplexprogram", - "handlers": { - "create": { - "permissions": [ - "medialive:CreateMultiplexProgram", - "medialive:DescribeMultiplexProgram" - ] - }, - "delete": { - "permissions": [ - "medialive:DeleteMultiplexProgram", - "medialive:DescribeMultiplexProgram" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Arn": { - "$ref": "resource-schema.json#/properties/MultiplexId" - } - }, - "required": [ - "MultiplexId" - ] - }, - "permissions": [ - "medialive:ListMultiplexPrograms" - ] - }, - "read": { - "permissions": [ - "medialive:DescribeMultiplexProgram" - ] - }, - "update": { - "permissions": [ - "medialive:UpdateMultiplexProgram", - "medialive:DescribeMultiplexProgram" - ] - } - }, - "primaryIdentifier": [ - "/properties/ProgramName", - "/properties/MultiplexId" - ], - "properties": { - "ChannelId": { - "description": "The MediaLive channel associated with the program.", - "type": "string" - }, - "MultiplexId": { - "description": "The ID of the multiplex that the program belongs to.", - "type": "string" - }, - "MultiplexProgramSettings": { - "$ref": "#/definitions/MultiplexProgramSettings", - "description": "The settings for this multiplex program." - }, - "PacketIdentifiersMap": { - "$ref": "#/definitions/MultiplexProgramPacketIdentifiersMap", - "description": "The packet identifier map for this multiplex program." - }, - "PipelineDetails": { - "description": "Contains information about the current sources for the specified program in the specified multiplex. Keep in mind that each multiplex pipeline connects to both pipelines in a given source channel (the channel identified by the program). But only one of those channel pipelines is ever active at one time.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/MultiplexProgramPipelineDetail" - }, - "type": "array" - }, - "PreferredChannelPipeline": { - "$ref": "#/definitions/PreferredChannelPipeline", - "description": "The settings for this multiplex program." - }, - "ProgramName": { - "description": "The name of the multiplex program.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ChannelId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-medialiveprogram.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::MediaLive::Multiplexprogram", - "writeOnlyProperties": [ - "/properties/PreferredChannelPipeline" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ProgramName", + "/properties/MultiplexId" + ], + "definitions": { + "MultiplexProgramPacketIdentifiersMap": { + "additionalProperties": false, + "description": "Packet identifiers map for a given Multiplex program.", + "properties": { + "AudioPids": { + "insertionOrder": true, + "items": { + "type": "integer" + }, + "type": "array" + }, + "DvbSubPids": { + "insertionOrder": true, + "items": { + "type": "integer" + }, + "type": "array" + }, + "DvbTeletextPid": { + "type": "integer" + }, + "EtvPlatformPid": { + "type": "integer" + }, + "EtvSignalPid": { + "type": "integer" + }, + "KlvDataPids": { + "insertionOrder": true, + "items": { + "type": "integer" + }, + "type": "array" + }, + "PcrPid": { + "type": "integer" + }, + "PmtPid": { + "type": "integer" + }, + "PrivateMetadataPid": { + "type": "integer" + }, + "Scte27Pids": { + "insertionOrder": true, + "items": { + "type": "integer" + }, + "type": "array" + }, + "Scte35Pid": { + "type": "integer" + }, + "TimedMetadataPid": { + "type": "integer" + }, + "VideoPid": { + "type": "integer" + } + }, + "type": "object" + }, + "MultiplexProgramPipelineDetail": { + "additionalProperties": false, + "description": "The current source for one of the pipelines in the multiplex.", + "properties": { + "ActiveChannelPipeline": { + "description": "Identifies the channel pipeline that is currently active for the pipeline (identified by PipelineId) in the multiplex.", + "type": "string" + }, + "PipelineId": { + "description": "Identifies a specific pipeline in the multiplex.", + "type": "string" + } + }, + "type": "object" + }, + "MultiplexProgramServiceDescriptor": { + "additionalProperties": false, + "description": "Transport stream service descriptor configuration for the Multiplex program.", + "properties": { + "ProviderName": { + "description": "Name of the provider.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "ServiceName": { + "description": "Name of the service.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ProviderName", + "ServiceName" + ], + "type": "object" + }, + "MultiplexProgramSettings": { + "additionalProperties": false, + "description": "Multiplex Program settings configuration.", + "properties": { + "PreferredChannelPipeline": { + "$ref": "#/definitions/PreferredChannelPipeline", + "type": "string" + }, + "ProgramNumber": { + "description": "Unique program number.", + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "ServiceDescriptor": { + "$ref": "#/definitions/MultiplexProgramServiceDescriptor", + "description": "Transport stream service descriptor configuration for the Multiplex program." + }, + "VideoSettings": { + "$ref": "#/definitions/MultiplexVideoSettings", + "description": "Program video settings configuration." + } + }, + "required": [ + "ProgramNumber" + ], + "type": "object" + }, + "MultiplexStatmuxVideoSettings": { + "additionalProperties": false, + "description": "Statmux rate control settings", + "properties": { + "MaximumBitrate": { + "description": "Maximum statmux bitrate.", + "maximum": 100000000, + "minimum": 100000, + "type": "integer" + }, + "MinimumBitrate": { + "description": "Minimum statmux bitrate.", + "maximum": 100000000, + "minimum": 100000, + "type": "integer" + }, + "Priority": { + "description": "The purpose of the priority is to use a combination of the\\nmultiplex rate control algorithm and the QVBR capability of the\\nencoder to prioritize the video quality of some channels in a\\nmultiplex over others. Channels that have a higher priority will\\nget higher video quality at the expense of the video quality of\\nother channels in the multiplex with lower priority.", + "maximum": 5, + "minimum": -5, + "type": "integer" + } + }, + "type": "object" + }, + "MultiplexVideoSettings": { + "description": "The video configuration for each program in a multiplex.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "ConstantBitrate": { + "description": "The constant bitrate configuration for the video encode.\nWhen this field is defined, StatmuxSettings must be undefined.", + "maximum": 100000000, + "minimum": 100000, + "type": "integer" + } + }, + "required": [ + "ConstantBitrate" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "StatmuxSettings": { + "$ref": "#/definitions/MultiplexStatmuxVideoSettings", + "description": "Statmux rate control settings.\nWhen this field is defined, ConstantBitrate must be undefined." + } + }, + "required": [ + "StatmuxSettings" + ], + "type": "object" + } + ], + "type": "object" + }, + "PreferredChannelPipeline": { + "description": "Indicates which pipeline is preferred by the multiplex for program ingest.\nIf set to \\\"PIPELINE_0\\\" or \\\"PIPELINE_1\\\" and an unhealthy ingest causes the multiplex to switch to the non-preferred pipeline,\nit will switch back once that ingest is healthy again. If set to \\\"CURRENTLY_ACTIVE\\\",\nit will not switch back to the other pipeline based on it recovering to a healthy state,\nit will only switch if the active pipeline becomes unhealthy.\n", + "enum": [ + "CURRENTLY_ACTIVE", + "PIPELINE_0", + "PIPELINE_1" + ], + "type": "string" + } + }, + "description": "Resource schema for AWS::MediaLive::Multiplexprogram", + "handlers": { + "create": { + "permissions": [ + "medialive:CreateMultiplexProgram", + "medialive:DescribeMultiplexProgram" + ] + }, + "delete": { + "permissions": [ + "medialive:DeleteMultiplexProgram", + "medialive:DescribeMultiplexProgram" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Arn": { + "$ref": "resource-schema.json#/properties/MultiplexId" + } + }, + "required": [ + "MultiplexId" + ] + }, + "permissions": [ + "medialive:ListMultiplexPrograms" + ] + }, + "read": { + "permissions": [ + "medialive:DescribeMultiplexProgram" + ] + }, + "update": { + "permissions": [ + "medialive:UpdateMultiplexProgram", + "medialive:DescribeMultiplexProgram" + ] + } + }, + "primaryIdentifier": [ + "/properties/ProgramName", + "/properties/MultiplexId" + ], + "properties": { + "ChannelId": { + "description": "The MediaLive channel associated with the program.", + "type": "string" + }, + "MultiplexId": { + "description": "The ID of the multiplex that the program belongs to.", + "type": "string" + }, + "MultiplexProgramSettings": { + "$ref": "#/definitions/MultiplexProgramSettings", + "description": "The settings for this multiplex program." + }, + "PacketIdentifiersMap": { + "$ref": "#/definitions/MultiplexProgramPacketIdentifiersMap", + "description": "The packet identifier map for this multiplex program." + }, + "PipelineDetails": { + "description": "Contains information about the current sources for the specified program in the specified multiplex. Keep in mind that each multiplex pipeline connects to both pipelines in a given source channel (the channel identified by the program). But only one of those channel pipelines is ever active at one time.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/MultiplexProgramPipelineDetail" + }, + "type": "array" + }, + "PreferredChannelPipeline": { + "$ref": "#/definitions/PreferredChannelPipeline", + "description": "The settings for this multiplex program." + }, + "ProgramName": { + "description": "The name of the multiplex program.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ChannelId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-medialiveprogram.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::MediaLive::Multiplexprogram", + "writeOnlyProperties": [ + "/properties/PreferredChannelPipeline" + ] +} diff --git a/src/schema/aws-medialive-network.json b/src/schema/aws-medialive-network.json index 6b9a801b..01eec8b1 100644 --- a/src/schema/aws-medialive-network.json +++ b/src/schema/aws-medialive-network.json @@ -1,165 +1,169 @@ -{ - "additionalProperties": false, - "definitions": { - "IpPool": { - "additionalProperties": false, - "description": "IP address cidr pool", - "properties": { - "Cidr": { - "description": "IP address cidr pool", - "type": "string" - } - }, - "type": "object" - }, - "NetworkState": { - "enum": [ - "CREATING", - "CREATE_FAILED", - "ACTIVE", - "DELETING", - "IDLE", - "IN_USE", - "UPDATING", - "DELETED", - "DELETE_FAILED" - ], - "type": "string" - }, - "Route": { - "additionalProperties": false, - "properties": { - "Cidr": { - "description": "Ip address cidr", - "type": "string" - }, - "Gateway": { - "description": "IP address for the route packet paths", - "type": "string" - } - }, - "type": "object" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::MediaLive::Network.", - "handlers": { - "create": { - "permissions": [ - "medialive:CreateNetwork", - "medialive:CreateTags" - ] - }, - "delete": { - "permissions": [ - "medialive:DeleteNetwork", - "medialive:DescribeNetwork" - ] - }, - "list": { - "permissions": [ - "medialive:ListNetworks" - ] - }, - "read": { - "permissions": [ - "medialive:DescribeNetwork" - ] - }, - "update": { - "permissions": [ - "medialive:UpdateNetwork", - "medialive:CreateTags", - "medialive:DeleteTags", - "medialive:DescribeNetwork" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The ARN of the Network.", - "type": "string" - }, - "AssociatedClusterIds": { - "insertionOrder": false, - "items": { - "description": "Cluster Ids which have this network ID in their Interface Network Mappings", - "type": "string" - }, - "type": "array" - }, - "Id": { - "description": "The unique ID of the Network.", - "type": "string" - }, - "IpPools": { - "description": "The list of IP address cidr pools for the network", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/IpPool" - }, - "type": "array" - }, - "Name": { - "description": "The user-specified name of the Network to be created.", - "type": "string" - }, - "Routes": { - "description": "The routes for the network", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Route" - }, - "type": "array" - }, - "State": { - "$ref": "#/definitions/NetworkState", - "description": "The current state of the Network." - }, - "Tags": { - "description": "A collection of key-value pairs.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tags" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id", - "/properties/State", - "/properties/AssociatedClusterIds" - ], - "required": [ - "Name", - "IpPools" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "medialive:CreateTags", - "medialive:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MediaLive::Network" -} +{ + "additionalProperties": false, + "definitions": { + "IpPool": { + "additionalProperties": false, + "description": "IP address cidr pool", + "properties": { + "Cidr": { + "description": "IP address cidr pool", + "type": "string" + } + }, + "type": "object" + }, + "NetworkState": { + "enum": [ + "CREATING", + "CREATE_FAILED", + "ACTIVE", + "DELETING", + "IDLE", + "IN_USE", + "UPDATING", + "DELETED", + "DELETE_FAILED" + ], + "type": "string" + }, + "Route": { + "additionalProperties": false, + "properties": { + "Cidr": { + "description": "Ip address cidr", + "type": "string" + }, + "Gateway": { + "description": "IP address for the route packet paths", + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::MediaLive::Network.", + "handlers": { + "create": { + "permissions": [ + "medialive:CreateNetwork", + "medialive:CreateTags", + "medialive:DescribeNetwork", + "medialive:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "medialive:DeleteNetwork", + "medialive:DescribeNetwork" + ] + }, + "list": { + "permissions": [ + "medialive:ListNetworks" + ] + }, + "read": { + "permissions": [ + "medialive:DescribeNetwork", + "medialive:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "medialive:UpdateNetwork", + "medialive:CreateTags", + "medialive:DeleteTags", + "medialive:DescribeNetwork", + "medialive:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The ARN of the Network.", + "type": "string" + }, + "AssociatedClusterIds": { + "insertionOrder": false, + "items": { + "description": "Cluster Ids which have this network ID in their Interface Network Mappings", + "type": "string" + }, + "type": "array" + }, + "Id": { + "description": "The unique ID of the Network.", + "type": "string" + }, + "IpPools": { + "description": "The list of IP address cidr pools for the network", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpPool" + }, + "type": "array" + }, + "Name": { + "description": "The user-specified name of the Network to be created.", + "type": "string" + }, + "Routes": { + "description": "The routes for the network", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Route" + }, + "type": "array" + }, + "State": { + "$ref": "#/definitions/NetworkState", + "description": "The current state of the Network." + }, + "Tags": { + "description": "A collection of key-value pairs.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tags" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/State", + "/properties/AssociatedClusterIds" + ], + "required": [ + "Name", + "IpPools" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "medialive:CreateTags", + "medialive:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaLive::Network" +} diff --git a/src/schema/aws-medialive-sdisource.json b/src/schema/aws-medialive-sdisource.json index 7537ff2e..4e351f0e 100644 --- a/src/schema/aws-medialive-sdisource.json +++ b/src/schema/aws-medialive-sdisource.json @@ -1,140 +1,144 @@ -{ - "additionalProperties": false, - "definitions": { - "SdiSourceMode": { - "description": "The current state of the SdiSource.", - "enum": [ - "QUADRANT", - "INTERLEAVE" - ], - "type": "string" - }, - "SdiSourceState": { - "description": "The current state of the SdiSource.", - "enum": [ - "IDLE", - "IN_USE", - "DELETED" - ], - "type": "string" - }, - "SdiSourceType": { - "description": "The interface mode of the SdiSource.", - "enum": [ - "SINGLE", - "QUAD" - ], - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::MediaLive::SdiSource Resource Type", - "handlers": { - "create": { - "permissions": [ - "medialive:CreateSdiSource", - "medialive:CreateTags" - ] - }, - "delete": { - "permissions": [ - "medialive:DeleteSdiSource", - "medialive:DescribeSdiSource" - ] - }, - "list": { - "permissions": [ - "medialive:ListSdiSources" - ] - }, - "read": { - "permissions": [ - "medialive:DescribeSdiSource" - ] - }, - "update": { - "permissions": [ - "medialive:UpdateSdiSource", - "medialive:DescribeSdiSource", - "medialive:CreateTags", - "medialive:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The unique arn of the SdiSource.", - "type": "string" - }, - "Id": { - "description": "The unique identifier of the SdiSource.", - "type": "string" - }, - "Inputs": { - "description": "The list of inputs currently using this SDI source.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "Mode": { - "$ref": "#/definitions/SdiSourceMode" - }, - "Name": { - "description": "The name of the SdiSource.", - "type": "string" - }, - "State": { - "$ref": "#/definitions/SdiSourceState" - }, - "Tags": { - "description": "A collection of key-value pairs.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tags" - }, - "type": "array" - }, - "Type": { - "$ref": "#/definitions/SdiSourceType" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/State", - "/properties/Arn", - "/properties/Inputs" - ], - "required": [ - "Name", - "Type" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "medialive:CreateTags", - "medialive:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MediaLive::SdiSource" -} +{ + "additionalProperties": false, + "definitions": { + "SdiSourceMode": { + "description": "The current state of the SdiSource.", + "enum": [ + "QUADRANT", + "INTERLEAVE" + ], + "type": "string" + }, + "SdiSourceState": { + "description": "The current state of the SdiSource.", + "enum": [ + "IDLE", + "IN_USE", + "DELETED" + ], + "type": "string" + }, + "SdiSourceType": { + "description": "The interface mode of the SdiSource.", + "enum": [ + "SINGLE", + "QUAD" + ], + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::MediaLive::SdiSource Resource Type", + "handlers": { + "create": { + "permissions": [ + "medialive:CreateSdiSource", + "medialive:CreateTags", + "medialive:DescribeSdiSource", + "medialive:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "medialive:DeleteSdiSource", + "medialive:DescribeSdiSource" + ] + }, + "list": { + "permissions": [ + "medialive:ListSdiSources" + ] + }, + "read": { + "permissions": [ + "medialive:DescribeSdiSource", + "medialive:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "medialive:UpdateSdiSource", + "medialive:DescribeSdiSource", + "medialive:CreateTags", + "medialive:DeleteTags", + "medialive:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The unique arn of the SdiSource.", + "type": "string" + }, + "Id": { + "description": "The unique identifier of the SdiSource.", + "type": "string" + }, + "Inputs": { + "description": "The list of inputs currently using this SDI source.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Mode": { + "$ref": "#/definitions/SdiSourceMode" + }, + "Name": { + "description": "The name of the SdiSource.", + "type": "string" + }, + "State": { + "$ref": "#/definitions/SdiSourceState" + }, + "Tags": { + "description": "A collection of key-value pairs.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tags" + }, + "type": "array" + }, + "Type": { + "$ref": "#/definitions/SdiSourceType" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/State", + "/properties/Arn", + "/properties/Inputs" + ], + "required": [ + "Name", + "Type" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "medialive:CreateTags", + "medialive:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaLive::SdiSource" +} diff --git a/src/schema/aws-medialive-signalmap.json b/src/schema/aws-medialive-signalmap.json index 743ae165..1d558c89 100644 --- a/src/schema/aws-medialive-signalmap.json +++ b/src/schema/aws-medialive-signalmap.json @@ -1,424 +1,424 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Tags" - ], - "definitions": { - "FailedMediaResourceMap": { - "additionalProperties": false, - "description": "A map representing an incomplete AWS media workflow as a graph.", - "patternProperties": { - ".+": { - "$ref": "#/definitions/MediaResource" - } - }, - "type": "object" - }, - "MediaResource": { - "additionalProperties": false, - "description": "An AWS resource used in media workflows.", - "properties": { - "Destinations": { - "items": { - "$ref": "#/definitions/MediaResourceNeighbor" - }, - "type": "array" - }, - "Name": { - "description": "The logical name of an AWS media resource.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Sources": { - "items": { - "$ref": "#/definitions/MediaResourceNeighbor" - }, - "type": "array" - } - }, - "type": "object" - }, - "MediaResourceMap": { - "additionalProperties": false, - "description": "A map representing an AWS media workflow as a graph.", - "patternProperties": { - ".+": { - "$ref": "#/definitions/MediaResource" - } - }, - "type": "object" - }, - "MediaResourceNeighbor": { - "additionalProperties": false, - "description": "A direct source or destination neighbor to an AWS media resource.", - "properties": { - "Arn": { - "description": "The ARN of a resource used in AWS media workflows.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn.+$", - "type": "string" - }, - "Name": { - "description": "The logical name of an AWS media resource.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Arn" - ], - "type": "object" - }, - "MonitorDeployment": { - "additionalProperties": false, - "description": "Represents the latest monitor deployment of a signal map.", - "properties": { - "DetailsUri": { - "description": "URI associated with a signal map's monitor deployment.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "ErrorMessage": { - "description": "Error message associated with a failed monitor deployment of a signal map.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Status": { - "$ref": "#/definitions/SignalMapMonitorDeploymentStatus" - } - }, - "required": [ - "Status" - ], - "type": "object" - }, - "SignalMapMonitorDeploymentStatus": { - "description": "A signal map's monitor deployment status.", - "enum": [ - "NOT_DEPLOYED", - "DRY_RUN_DEPLOYMENT_COMPLETE", - "DRY_RUN_DEPLOYMENT_FAILED", - "DRY_RUN_DEPLOYMENT_IN_PROGRESS", - "DEPLOYMENT_COMPLETE", - "DEPLOYMENT_FAILED", - "DEPLOYMENT_IN_PROGRESS", - "DELETE_COMPLETE", - "DELETE_FAILED", - "DELETE_IN_PROGRESS" - ], - "type": "string" - }, - "SignalMapStatus": { - "description": "A signal map's current status which is dependent on its lifecycle actions or associated jobs.", - "enum": [ - "CREATE_IN_PROGRESS", - "CREATE_COMPLETE", - "CREATE_FAILED", - "UPDATE_IN_PROGRESS", - "UPDATE_COMPLETE", - "UPDATE_REVERTED", - "UPDATE_FAILED", - "READY", - "NOT_READY" - ], - "type": "string" - }, - "SuccessfulMonitorDeployment": { - "additionalProperties": false, - "description": "Represents the latest successful monitor deployment of a signal map.", - "properties": { - "DetailsUri": { - "description": "URI associated with a signal map's monitor deployment.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Status": { - "$ref": "#/definitions/SignalMapMonitorDeploymentStatus" - } - }, - "required": [ - "DetailsUri", - "Status" - ], - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "description": "Represents the tags associated with a resource.", - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - }, - "Unit": { - "additionalProperties": false, - "type": "object" - } - }, - "description": "Definition of AWS::MediaLive::SignalMap Resource Type", - "handlers": { - "create": { - "permissions": [ - "medialive:CreateSignalMap", - "medialive:GetSignalMap", - "medialive:CreateTags", - "medialive:DescribeChannel", - "medialive:DescribeInput", - "medialive:DescribeInputDevice", - "medialive:DescribeInputSecurityGroup", - "medialive:DescribeMultiplex", - "medialive:DescribeMultiplexProgram", - "medialive:ListChannels", - "medialive:ListInputDevices", - "medialive:ListInputSecurityGroups", - "medialive:ListInputs", - "medialive:ListMultiplexPrograms", - "medialive:ListMultiplexes", - "medialive:ListOfferings", - "medialive:ListReservations", - "medialive:ListTagsForResource", - "cloudfront:ListDistributions", - "cloudfront:GetDistribution", - "ec2:DescribeNetworkInterfaces", - "mediaconnect:ListEntitlements", - "mediaconnect:ListFlows", - "mediaconnect:ListOfferings", - "mediaconnect:ListReservations", - "mediaconnect:DescribeFlow", - "mediapackage:ListChannels", - "mediapackage:ListOriginEndpoints", - "mediapackage:DescribeChannel", - "mediapackage:DescribeOriginEndpoint", - "mediapackagev2:ListChannelGroups", - "mediapackagev2:ListChannels", - "mediapackagev2:ListOriginEndpoints", - "mediapackagev2:GetChannelGroup", - "mediapackagev2:GetChannel", - "mediapackagev2:GetOriginEndpoint", - "tag:GetResources" - ] - }, - "delete": { - "permissions": [ - "medialive:GetSignalMap", - "medialive:DeleteSignalMap" - ] - }, - "list": { - "permissions": [ - "medialive:ListSignalMaps" - ] - }, - "read": { - "permissions": [ - "medialive:GetSignalMap", - "tag:GetResources" - ] - }, - "update": { - "permissions": [ - "medialive:StartUpdateSignalMap", - "medialive:GetSignalMap", - "medialive:CreateTags", - "medialive:DeleteTags", - "medialive:DescribeChannel", - "medialive:DescribeInput", - "medialive:DescribeInputDevice", - "medialive:DescribeInputSecurityGroup", - "medialive:DescribeMultiplex", - "medialive:DescribeMultiplexProgram", - "medialive:ListChannels", - "medialive:ListInputDevices", - "medialive:ListInputSecurityGroups", - "medialive:ListInputs", - "medialive:ListMultiplexPrograms", - "medialive:ListMultiplexes", - "medialive:ListOfferings", - "medialive:ListReservations", - "medialive:ListTagsForResource", - "cloudfront:ListDistributions", - "cloudfront:GetDistribution", - "ec2:DescribeNetworkInterfaces", - "mediaconnect:ListEntitlements", - "mediaconnect:ListFlows", - "mediaconnect:ListOfferings", - "mediaconnect:ListReservations", - "mediaconnect:DescribeFlow", - "mediapackage:ListChannels", - "mediapackage:ListOriginEndpoints", - "mediapackage:DescribeChannel", - "mediapackage:DescribeOriginEndpoint", - "mediapackagev2:ListChannelGroups", - "mediapackagev2:ListChannels", - "mediapackagev2:ListOriginEndpoints", - "mediapackagev2:GetChannelGroup", - "mediapackagev2:GetChannel", - "mediapackagev2:GetOriginEndpoint", - "tag:GetResources" - ] - } - }, - "primaryIdentifier": [ - "/properties/Identifier" - ], - "properties": { - "Arn": { - "description": "A signal map's ARN (Amazon Resource Name)", - "pattern": "^arn:.+:medialive:.+:signal-map:.+$", - "type": "string" - }, - "CloudWatchAlarmTemplateGroupIdentifiers": { - "items": { - "pattern": "^[^\\s]+$", - "type": "string" - }, - "type": "array" - }, - "CloudWatchAlarmTemplateGroupIds": { - "items": { - "maxLength": 11, - "minLength": 7, - "pattern": "^(aws-)?[0-9]{7}$", - "type": "string" - }, - "type": "array" - }, - "CreatedAt": { - "format": "date-time", - "type": "string" - }, - "Description": { - "description": "A resource's optional description.", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "DiscoveryEntryPointArn": { - "description": "A top-level supported AWS resource ARN to discovery a signal map from.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "ErrorMessage": { - "description": "Error message associated with a failed creation or failed update attempt of a signal map.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "EventBridgeRuleTemplateGroupIdentifiers": { - "items": { - "pattern": "^[^\\s]+$", - "type": "string" - }, - "type": "array" - }, - "EventBridgeRuleTemplateGroupIds": { - "items": { - "maxLength": 11, - "minLength": 7, - "pattern": "^(aws-)?[0-9]{7}$", - "type": "string" - }, - "type": "array" - }, - "FailedMediaResourceMap": { - "$ref": "#/definitions/FailedMediaResourceMap" - }, - "ForceRediscovery": { - "default": false, - "description": "If true, will force a rediscovery of a signal map if an unchanged discoveryEntryPointArn is provided.", - "type": "boolean" - }, - "Id": { - "description": "A signal map's id.", - "maxLength": 11, - "minLength": 7, - "pattern": "^(aws-)?[0-9]{7}$", - "type": "string" - }, - "Identifier": { - "type": "string" - }, - "LastDiscoveredAt": { - "format": "date-time", - "type": "string" - }, - "LastSuccessfulMonitorDeployment": { - "$ref": "#/definitions/SuccessfulMonitorDeployment" - }, - "MediaResourceMap": { - "$ref": "#/definitions/MediaResourceMap" - }, - "ModifiedAt": { - "format": "date-time", - "type": "string" - }, - "MonitorChangesPendingDeployment": { - "default": false, - "description": "If true, there are pending monitor changes for this signal map that can be deployed.", - "type": "boolean" - }, - "MonitorDeployment": { - "$ref": "#/definitions/MonitorDeployment" - }, - "Name": { - "description": "A resource's name. Names must be unique within the scope of a resource type in a specific region.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[^\\s]+$", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/SignalMapStatus" - }, - "Tags": { - "$ref": "#/definitions/TagMap" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CloudWatchAlarmTemplateGroupIds", - "/properties/CreatedAt", - "/properties/ErrorMessage", - "/properties/EventBridgeRuleTemplateGroupIds", - "/properties/FailedMediaResourceMap", - "/properties/Id", - "/properties/Identifier", - "/properties/LastDiscoveredAt", - "/properties/LastSuccessfulMonitorDeployment", - "/properties/MediaResourceMap", - "/properties/ModifiedAt", - "/properties/MonitorChangesPendingDeployment", - "/properties/MonitorDeployment", - "/properties/Status" - ], - "required": [ - "DiscoveryEntryPointArn", - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "medialive:CreateTags", - "medialive:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MediaLive::SignalMap", - "writeOnlyProperties": [ - "/properties/CloudWatchAlarmTemplateGroupIdentifiers", - "/properties/EventBridgeRuleTemplateGroupIdentifiers", - "/properties/ForceRediscovery" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tags" + ], + "definitions": { + "FailedMediaResourceMap": { + "additionalProperties": false, + "description": "A map representing an incomplete AWS media workflow as a graph.", + "patternProperties": { + ".+": { + "$ref": "#/definitions/MediaResource" + } + }, + "type": "object" + }, + "MediaResource": { + "additionalProperties": false, + "description": "An AWS resource used in media workflows.", + "properties": { + "Destinations": { + "items": { + "$ref": "#/definitions/MediaResourceNeighbor" + }, + "type": "array" + }, + "Name": { + "description": "The logical name of an AWS media resource.", + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Sources": { + "items": { + "$ref": "#/definitions/MediaResourceNeighbor" + }, + "type": "array" + } + }, + "type": "object" + }, + "MediaResourceMap": { + "additionalProperties": false, + "description": "A map representing an AWS media workflow as a graph.", + "patternProperties": { + ".+": { + "$ref": "#/definitions/MediaResource" + } + }, + "type": "object" + }, + "MediaResourceNeighbor": { + "additionalProperties": false, + "description": "A direct source or destination neighbor to an AWS media resource.", + "properties": { + "Arn": { + "description": "The ARN of a resource used in AWS media workflows.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn.+$", + "type": "string" + }, + "Name": { + "description": "The logical name of an AWS media resource.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "MonitorDeployment": { + "additionalProperties": false, + "description": "Represents the latest monitor deployment of a signal map.", + "properties": { + "DetailsUri": { + "description": "URI associated with a signal map's monitor deployment.", + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "ErrorMessage": { + "description": "Error message associated with a failed monitor deployment of a signal map.", + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/SignalMapMonitorDeploymentStatus" + } + }, + "required": [ + "Status" + ], + "type": "object" + }, + "SignalMapMonitorDeploymentStatus": { + "description": "A signal map's monitor deployment status.", + "enum": [ + "NOT_DEPLOYED", + "DRY_RUN_DEPLOYMENT_COMPLETE", + "DRY_RUN_DEPLOYMENT_FAILED", + "DRY_RUN_DEPLOYMENT_IN_PROGRESS", + "DEPLOYMENT_COMPLETE", + "DEPLOYMENT_FAILED", + "DEPLOYMENT_IN_PROGRESS", + "DELETE_COMPLETE", + "DELETE_FAILED", + "DELETE_IN_PROGRESS" + ], + "type": "string" + }, + "SignalMapStatus": { + "description": "A signal map's current status which is dependent on its lifecycle actions or associated jobs.", + "enum": [ + "CREATE_IN_PROGRESS", + "CREATE_COMPLETE", + "CREATE_FAILED", + "UPDATE_IN_PROGRESS", + "UPDATE_COMPLETE", + "UPDATE_REVERTED", + "UPDATE_FAILED", + "READY", + "NOT_READY" + ], + "type": "string" + }, + "SuccessfulMonitorDeployment": { + "additionalProperties": false, + "description": "Represents the latest successful monitor deployment of a signal map.", + "properties": { + "DetailsUri": { + "description": "URI associated with a signal map's monitor deployment.", + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/SignalMapMonitorDeploymentStatus" + } + }, + "required": [ + "DetailsUri", + "Status" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "description": "Represents the tags associated with a resource.", + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "Unit": { + "additionalProperties": false, + "type": "object" + } + }, + "description": "Definition of AWS::MediaLive::SignalMap Resource Type", + "handlers": { + "create": { + "permissions": [ + "medialive:CreateSignalMap", + "medialive:GetSignalMap", + "medialive:CreateTags", + "medialive:DescribeChannel", + "medialive:DescribeInput", + "medialive:DescribeInputDevice", + "medialive:DescribeInputSecurityGroup", + "medialive:DescribeMultiplex", + "medialive:DescribeMultiplexProgram", + "medialive:ListChannels", + "medialive:ListInputDevices", + "medialive:ListInputSecurityGroups", + "medialive:ListInputs", + "medialive:ListMultiplexPrograms", + "medialive:ListMultiplexes", + "medialive:ListOfferings", + "medialive:ListReservations", + "medialive:ListTagsForResource", + "cloudfront:ListDistributions", + "cloudfront:GetDistribution", + "ec2:DescribeNetworkInterfaces", + "mediaconnect:ListEntitlements", + "mediaconnect:ListFlows", + "mediaconnect:ListOfferings", + "mediaconnect:ListReservations", + "mediaconnect:DescribeFlow", + "mediapackage:ListChannels", + "mediapackage:ListOriginEndpoints", + "mediapackage:DescribeChannel", + "mediapackage:DescribeOriginEndpoint", + "mediapackagev2:ListChannelGroups", + "mediapackagev2:ListChannels", + "mediapackagev2:ListOriginEndpoints", + "mediapackagev2:GetChannelGroup", + "mediapackagev2:GetChannel", + "mediapackagev2:GetOriginEndpoint", + "tag:GetResources" + ] + }, + "delete": { + "permissions": [ + "medialive:GetSignalMap", + "medialive:DeleteSignalMap" + ] + }, + "list": { + "permissions": [ + "medialive:ListSignalMaps" + ] + }, + "read": { + "permissions": [ + "medialive:GetSignalMap", + "tag:GetResources" + ] + }, + "update": { + "permissions": [ + "medialive:StartUpdateSignalMap", + "medialive:GetSignalMap", + "medialive:CreateTags", + "medialive:DeleteTags", + "medialive:DescribeChannel", + "medialive:DescribeInput", + "medialive:DescribeInputDevice", + "medialive:DescribeInputSecurityGroup", + "medialive:DescribeMultiplex", + "medialive:DescribeMultiplexProgram", + "medialive:ListChannels", + "medialive:ListInputDevices", + "medialive:ListInputSecurityGroups", + "medialive:ListInputs", + "medialive:ListMultiplexPrograms", + "medialive:ListMultiplexes", + "medialive:ListOfferings", + "medialive:ListReservations", + "medialive:ListTagsForResource", + "cloudfront:ListDistributions", + "cloudfront:GetDistribution", + "ec2:DescribeNetworkInterfaces", + "mediaconnect:ListEntitlements", + "mediaconnect:ListFlows", + "mediaconnect:ListOfferings", + "mediaconnect:ListReservations", + "mediaconnect:DescribeFlow", + "mediapackage:ListChannels", + "mediapackage:ListOriginEndpoints", + "mediapackage:DescribeChannel", + "mediapackage:DescribeOriginEndpoint", + "mediapackagev2:ListChannelGroups", + "mediapackagev2:ListChannels", + "mediapackagev2:ListOriginEndpoints", + "mediapackagev2:GetChannelGroup", + "mediapackagev2:GetChannel", + "mediapackagev2:GetOriginEndpoint", + "tag:GetResources" + ] + } + }, + "primaryIdentifier": [ + "/properties/Identifier" + ], + "properties": { + "Arn": { + "description": "A signal map's ARN (Amazon Resource Name)", + "pattern": "^arn:.+:medialive:.+:signal-map:.+$", + "type": "string" + }, + "CloudWatchAlarmTemplateGroupIdentifiers": { + "items": { + "pattern": "^[^\\s]+$", + "type": "string" + }, + "type": "array" + }, + "CloudWatchAlarmTemplateGroupIds": { + "items": { + "maxLength": 11, + "minLength": 7, + "pattern": "^(aws-)?[0-9]{7}$", + "type": "string" + }, + "type": "array" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "A resource's optional description.", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "DiscoveryEntryPointArn": { + "description": "A top-level supported AWS resource ARN to discovery a signal map from.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ErrorMessage": { + "description": "Error message associated with a failed creation or failed update attempt of a signal map.", + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "EventBridgeRuleTemplateGroupIdentifiers": { + "items": { + "pattern": "^[^\\s]+$", + "type": "string" + }, + "type": "array" + }, + "EventBridgeRuleTemplateGroupIds": { + "items": { + "maxLength": 11, + "minLength": 7, + "pattern": "^(aws-)?[0-9]{7}$", + "type": "string" + }, + "type": "array" + }, + "FailedMediaResourceMap": { + "$ref": "#/definitions/FailedMediaResourceMap" + }, + "ForceRediscovery": { + "default": false, + "description": "If true, will force a rediscovery of a signal map if an unchanged discoveryEntryPointArn is provided.", + "type": "boolean" + }, + "Id": { + "description": "A signal map's id.", + "maxLength": 11, + "minLength": 7, + "pattern": "^(aws-)?[0-9]{7}$", + "type": "string" + }, + "Identifier": { + "type": "string" + }, + "LastDiscoveredAt": { + "format": "date-time", + "type": "string" + }, + "LastSuccessfulMonitorDeployment": { + "$ref": "#/definitions/SuccessfulMonitorDeployment" + }, + "MediaResourceMap": { + "$ref": "#/definitions/MediaResourceMap" + }, + "ModifiedAt": { + "format": "date-time", + "type": "string" + }, + "MonitorChangesPendingDeployment": { + "default": false, + "description": "If true, there are pending monitor changes for this signal map that can be deployed.", + "type": "boolean" + }, + "MonitorDeployment": { + "$ref": "#/definitions/MonitorDeployment" + }, + "Name": { + "description": "A resource's name. Names must be unique within the scope of a resource type in a specific region.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[^\\s]+$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/SignalMapStatus" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CloudWatchAlarmTemplateGroupIds", + "/properties/CreatedAt", + "/properties/ErrorMessage", + "/properties/EventBridgeRuleTemplateGroupIds", + "/properties/FailedMediaResourceMap", + "/properties/Id", + "/properties/Identifier", + "/properties/LastDiscoveredAt", + "/properties/LastSuccessfulMonitorDeployment", + "/properties/MediaResourceMap", + "/properties/ModifiedAt", + "/properties/MonitorChangesPendingDeployment", + "/properties/MonitorDeployment", + "/properties/Status" + ], + "required": [ + "DiscoveryEntryPointArn", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "medialive:CreateTags", + "medialive:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaLive::SignalMap", + "writeOnlyProperties": [ + "/properties/CloudWatchAlarmTemplateGroupIdentifiers", + "/properties/EventBridgeRuleTemplateGroupIdentifiers", + "/properties/ForceRediscovery" + ] +} diff --git a/src/schema/aws-mediapackage-asset.json b/src/schema/aws-mediapackage-asset.json index e67f1bf2..e8f193c2 100644 --- a/src/schema/aws-mediapackage-asset.json +++ b/src/schema/aws-mediapackage-asset.json @@ -1,137 +1,137 @@ -{ - "additionalProperties": false, - "definitions": { - "EgressEndpoint": { - "additionalProperties": false, - "description": "The endpoint URL used to access an Asset using one PackagingConfiguration.", - "properties": { - "PackagingConfigurationId": { - "description": "The ID of the PackagingConfiguration being applied to the Asset.", - "type": "string" - }, - "Url": { - "description": "The URL of the parent manifest for the repackaged Asset.", - "type": "string" - } - }, - "required": [ - "PackagingConfigurationId", - "Url" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::MediaPackage::Asset", - "handlers": { - "create": { - "permissions": [ - "mediapackage-vod:CreateAsset", - "mediapackage-vod:DescribeAsset", - "mediapackage-vod:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "mediapackage-vod:DescribeAsset", - "mediapackage-vod:DeleteAsset" - ] - }, - "list": { - "permissions": [ - "mediapackage-vod:ListAssets", - "mediapackage-vod:DescribePackagingGroup" - ] - }, - "read": { - "permissions": [ - "mediapackage-vod:DescribeAsset" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The ARN of the Asset.", - "type": "string" - }, - "CreatedAt": { - "description": "The time the Asset was initially submitted for Ingest.", - "type": "string" - }, - "EgressEndpoints": { - "description": "The list of egress endpoints available for the Asset.", - "items": { - "$ref": "#/definitions/EgressEndpoint" - }, - "type": "array" - }, - "Id": { - "description": "The unique identifier for the Asset.", - "type": "string" - }, - "PackagingGroupId": { - "description": "The ID of the PackagingGroup for the Asset.", - "type": "string" - }, - "ResourceId": { - "description": "The resource ID to include in SPEKE key requests.", - "type": "string" - }, - "SourceArn": { - "description": "ARN of the source object in S3.", - "type": "string" - }, - "SourceRoleArn": { - "description": "The IAM role_arn used to access the source S3 bucket.", - "type": "string" - }, - "Tags": { - "description": "A collection of tags associated with a resource", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/EgressEndpoints/*/PackagingConfigurationId", - "/properties/EgressEndpoints/*/Url" - ], - "required": [ - "Id", - "PackagingGroupId", - "SourceArn", - "SourceRoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::MediaPackage::Asset" -} +{ + "additionalProperties": false, + "definitions": { + "EgressEndpoint": { + "additionalProperties": false, + "description": "The endpoint URL used to access an Asset using one PackagingConfiguration.", + "properties": { + "PackagingConfigurationId": { + "description": "The ID of the PackagingConfiguration being applied to the Asset.", + "type": "string" + }, + "Url": { + "description": "The URL of the parent manifest for the repackaged Asset.", + "type": "string" + } + }, + "required": [ + "PackagingConfigurationId", + "Url" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::MediaPackage::Asset", + "handlers": { + "create": { + "permissions": [ + "mediapackage-vod:CreateAsset", + "mediapackage-vod:DescribeAsset", + "mediapackage-vod:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "mediapackage-vod:DescribeAsset", + "mediapackage-vod:DeleteAsset" + ] + }, + "list": { + "permissions": [ + "mediapackage-vod:ListAssets", + "mediapackage-vod:DescribePackagingGroup" + ] + }, + "read": { + "permissions": [ + "mediapackage-vod:DescribeAsset" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The ARN of the Asset.", + "type": "string" + }, + "CreatedAt": { + "description": "The time the Asset was initially submitted for Ingest.", + "type": "string" + }, + "EgressEndpoints": { + "description": "The list of egress endpoints available for the Asset.", + "items": { + "$ref": "#/definitions/EgressEndpoint" + }, + "type": "array" + }, + "Id": { + "description": "The unique identifier for the Asset.", + "type": "string" + }, + "PackagingGroupId": { + "description": "The ID of the PackagingGroup for the Asset.", + "type": "string" + }, + "ResourceId": { + "description": "The resource ID to include in SPEKE key requests.", + "type": "string" + }, + "SourceArn": { + "description": "ARN of the source object in S3.", + "type": "string" + }, + "SourceRoleArn": { + "description": "The IAM role_arn used to access the source S3 bucket.", + "type": "string" + }, + "Tags": { + "description": "A collection of tags associated with a resource", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/EgressEndpoints/*/PackagingConfigurationId", + "/properties/EgressEndpoints/*/Url" + ], + "required": [ + "Id", + "PackagingGroupId", + "SourceArn", + "SourceRoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::MediaPackage::Asset" +} diff --git a/src/schema/aws-mediapackage-channel.json b/src/schema/aws-mediapackage-channel.json index e99f0a01..fa4e7a61 100644 --- a/src/schema/aws-mediapackage-channel.json +++ b/src/schema/aws-mediapackage-channel.json @@ -1,175 +1,175 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Id", - "/properties/Tags" - ], - "definitions": { - "HlsIngest": { - "additionalProperties": false, - "description": "An HTTP Live Streaming (HLS) ingest resource configuration.", - "properties": { - "ingestEndpoints": { - "description": "A list of endpoints to which the source stream should be sent.", - "items": { - "$ref": "#/definitions/IngestEndpoint" - }, - "type": "array" - } - }, - "type": "object" - }, - "IngestEndpoint": { - "additionalProperties": false, - "description": "An endpoint for ingesting source content for a Channel.", - "properties": { - "Id": { - "description": "The system generated unique identifier for the IngestEndpoint", - "type": "string" - }, - "Password": { - "description": "The system generated password for ingest authentication.", - "type": "string" - }, - "Url": { - "description": "The ingest URL to which the source stream should be sent.", - "type": "string" - }, - "Username": { - "description": "The system generated username for ingest authentication.", - "type": "string" - } - }, - "required": [ - "Id", - "Username", - "Password", - "Url" - ], - "type": "object" - }, - "LogConfiguration": { - "additionalProperties": false, - "properties": { - "LogGroupName": { - "description": "Sets a custom AWS CloudWatch log group name for access logs. If a log group name isn't specified, the defaults are used: /aws/MediaPackage/EgressAccessLogs for egress access logs and /aws/MediaPackage/IngressAccessLogs for ingress access logs.", - "maxLength": 256, - "minLength": 1, - "pattern": "\\A^(\\/aws\\/MediaPackage\\/)[a-zA-Z0-9_-]+\\Z", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::MediaPackage::Channel", - "handlers": { - "create": { - "permissions": [ - "mediapackage:CreateChannel", - "mediapackage:DescribeChannel", - "mediapackage:UpdateChannel", - "mediapackage:TagResource", - "mediapackage:ConfigureLogs", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "mediapackage:DeleteChannel" - ] - }, - "list": { - "permissions": [ - "mediapackage:ListChannels" - ] - }, - "read": { - "permissions": [ - "mediapackage:DescribeChannel" - ] - }, - "update": { - "permissions": [ - "mediapackage:UpdateChannel", - "mediapackage:ConfigureLogs", - "iam:CreateServiceLinkedRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) assigned to the Channel.", - "type": "string" - }, - "Description": { - "description": "A short text description of the Channel.", - "type": "string" - }, - "EgressAccessLogs": { - "$ref": "#/definitions/LogConfiguration", - "description": "The configuration parameters for egress access logging." - }, - "HlsIngest": { - "$ref": "#/definitions/HlsIngest", - "description": "An HTTP Live Streaming (HLS) ingest resource configuration." - }, - "Id": { - "description": "The ID of the Channel.", - "maxLength": 256, - "minLength": 1, - "pattern": "\\A[0-9a-zA-Z-_]+\\Z", - "type": "string" - }, - "IngressAccessLogs": { - "$ref": "#/definitions/LogConfiguration", - "description": "The configuration parameters for egress access logging." - }, - "Tags": { - "description": "A collection of tags associated with a resource", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/HlsIngest/ingestEndpoints/*/Id", - "/properties/HlsIngest/ingestEndpoints/*/Username", - "/properties/HlsIngest/ingestEndpoints/*/Password", - "/properties/HlsIngest/ingestEndpoints/*/Url" - ], - "required": [ - "Id" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::MediaPackage::Channel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Id", + "/properties/Tags" + ], + "definitions": { + "HlsIngest": { + "additionalProperties": false, + "description": "An HTTP Live Streaming (HLS) ingest resource configuration.", + "properties": { + "ingestEndpoints": { + "description": "A list of endpoints to which the source stream should be sent.", + "items": { + "$ref": "#/definitions/IngestEndpoint" + }, + "type": "array" + } + }, + "type": "object" + }, + "IngestEndpoint": { + "additionalProperties": false, + "description": "An endpoint for ingesting source content for a Channel.", + "properties": { + "Id": { + "description": "The system generated unique identifier for the IngestEndpoint", + "type": "string" + }, + "Password": { + "description": "The system generated password for ingest authentication.", + "type": "string" + }, + "Url": { + "description": "The ingest URL to which the source stream should be sent.", + "type": "string" + }, + "Username": { + "description": "The system generated username for ingest authentication.", + "type": "string" + } + }, + "required": [ + "Id", + "Username", + "Password", + "Url" + ], + "type": "object" + }, + "LogConfiguration": { + "additionalProperties": false, + "properties": { + "LogGroupName": { + "description": "Sets a custom AWS CloudWatch log group name for access logs. If a log group name isn't specified, the defaults are used: /aws/MediaPackage/EgressAccessLogs for egress access logs and /aws/MediaPackage/IngressAccessLogs for ingress access logs.", + "maxLength": 256, + "minLength": 1, + "pattern": "\\A^(\\/aws\\/MediaPackage\\/)[a-zA-Z0-9_-]+\\Z", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::MediaPackage::Channel", + "handlers": { + "create": { + "permissions": [ + "mediapackage:CreateChannel", + "mediapackage:DescribeChannel", + "mediapackage:UpdateChannel", + "mediapackage:TagResource", + "mediapackage:ConfigureLogs", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "mediapackage:DeleteChannel" + ] + }, + "list": { + "permissions": [ + "mediapackage:ListChannels" + ] + }, + "read": { + "permissions": [ + "mediapackage:DescribeChannel" + ] + }, + "update": { + "permissions": [ + "mediapackage:UpdateChannel", + "mediapackage:ConfigureLogs", + "iam:CreateServiceLinkedRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) assigned to the Channel.", + "type": "string" + }, + "Description": { + "description": "A short text description of the Channel.", + "type": "string" + }, + "EgressAccessLogs": { + "$ref": "#/definitions/LogConfiguration", + "description": "The configuration parameters for egress access logging." + }, + "HlsIngest": { + "$ref": "#/definitions/HlsIngest", + "description": "An HTTP Live Streaming (HLS) ingest resource configuration." + }, + "Id": { + "description": "The ID of the Channel.", + "maxLength": 256, + "minLength": 1, + "pattern": "\\A[0-9a-zA-Z-_]+\\Z", + "type": "string" + }, + "IngressAccessLogs": { + "$ref": "#/definitions/LogConfiguration", + "description": "The configuration parameters for egress access logging." + }, + "Tags": { + "description": "A collection of tags associated with a resource", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/HlsIngest/ingestEndpoints/*/Id", + "/properties/HlsIngest/ingestEndpoints/*/Username", + "/properties/HlsIngest/ingestEndpoints/*/Password", + "/properties/HlsIngest/ingestEndpoints/*/Url" + ], + "required": [ + "Id" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::MediaPackage::Channel" +} diff --git a/src/schema/aws-mediapackage-originendpoint.json b/src/schema/aws-mediapackage-originendpoint.json index 096b66f4..8d304125 100644 --- a/src/schema/aws-mediapackage-originendpoint.json +++ b/src/schema/aws-mediapackage-originendpoint.json @@ -1,700 +1,700 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Id" - ], - "definitions": { - "AdsOnDeliveryRestrictions": { - "description": "This setting allows the delivery restriction flags on SCTE-35 segmentation descriptors to determine whether a message signals an ad. Choosing \"NONE\" means no SCTE-35 messages become ads. Choosing \"RESTRICTED\" means SCTE-35 messages of the types specified in AdTriggers that contain delivery restrictions will be treated as ads. Choosing \"UNRESTRICTED\" means SCTE-35 messages of the types specified in AdTriggers that do not contain delivery restrictions will be treated as ads. Choosing \"BOTH\" means all SCTE-35 messages of the types specified in AdTriggers will be treated as ads. Note that Splice Insert messages do not have these flags and are always treated as ads if specified in AdTriggers.", - "enum": [ - "NONE", - "RESTRICTED", - "UNRESTRICTED", - "BOTH" - ], - "type": "string" - }, - "Authorization": { - "additionalProperties": false, - "description": "CDN Authorization credentials", - "properties": { - "CdnIdentifierSecret": { - "description": "The Amazon Resource Name (ARN) for the secret in Secrets Manager that your Content Distribution Network (CDN) uses for authorization to access your endpoint.", - "type": "string" - }, - "SecretsRoleArn": { - "description": "The Amazon Resource Name (ARN) for the IAM role that allows MediaPackage to communicate with AWS Secrets Manager.", - "type": "string" - } - }, - "required": [ - "SecretsRoleArn", - "CdnIdentifierSecret" - ], - "type": "object" - }, - "CmafEncryption": { - "additionalProperties": false, - "description": "A Common Media Application Format (CMAF) encryption configuration.", - "properties": { - "ConstantInitializationVector": { - "description": "An optional 128-bit, 16-byte hex value represented by a 32-character string, used in conjunction with the key for encrypting blocks. If you don't specify a value, then MediaPackage creates the constant initialization vector (IV).", - "maxLength": 32, - "minLength": 32, - "pattern": "\\A[0-9a-fA-F]+\\Z", - "type": "string" - }, - "EncryptionMethod": { - "description": "The encryption method used", - "enum": [ - "SAMPLE_AES", - "AES_CTR" - ], - "type": "string" - }, - "KeyRotationIntervalSeconds": { - "description": "Time (in seconds) between each encryption key rotation.", - "type": "integer" - }, - "SpekeKeyProvider": { - "$ref": "#/definitions/SpekeKeyProvider" - } - }, - "required": [ - "SpekeKeyProvider" - ], - "type": "object" - }, - "CmafPackage": { - "additionalProperties": false, - "description": "A Common Media Application Format (CMAF) packaging configuration.", - "properties": { - "Encryption": { - "$ref": "#/definitions/CmafEncryption" - }, - "HlsManifests": { - "description": "A list of HLS manifest configurations", - "items": { - "$ref": "#/definitions/HlsManifest" - }, - "type": "array" - }, - "SegmentDurationSeconds": { - "description": "Duration (in seconds) of each segment. Actual segments will be rounded to the nearest multiple of the source segment duration.", - "type": "integer" - }, - "SegmentPrefix": { - "description": "An optional custom string that is prepended to the name of each segment. If not specified, it defaults to the ChannelId.", - "type": "string" - }, - "StreamSelection": { - "$ref": "#/definitions/StreamSelection" - } - }, - "type": "object" - }, - "DashEncryption": { - "additionalProperties": false, - "description": "A Dynamic Adaptive Streaming over HTTP (DASH) encryption configuration.", - "properties": { - "KeyRotationIntervalSeconds": { - "description": "Time (in seconds) between each encryption key rotation.", - "type": "integer" - }, - "SpekeKeyProvider": { - "$ref": "#/definitions/SpekeKeyProvider" - } - }, - "required": [ - "SpekeKeyProvider" - ], - "type": "object" - }, - "DashPackage": { - "additionalProperties": false, - "description": "A Dynamic Adaptive Streaming over HTTP (DASH) packaging configuration.", - "properties": { - "AdTriggers": { - "description": "A list of SCTE-35 message types that are treated as ad markers in the output. If empty, no ad markers are output. Specify multiple items to create ad markers for all of the included message types.", - "items": { - "enum": [ - "SPLICE_INSERT", - "BREAK", - "PROVIDER_ADVERTISEMENT", - "DISTRIBUTOR_ADVERTISEMENT", - "PROVIDER_PLACEMENT_OPPORTUNITY", - "DISTRIBUTOR_PLACEMENT_OPPORTUNITY", - "PROVIDER_OVERLAY_PLACEMENT_OPPORTUNITY", - "DISTRIBUTOR_OVERLAY_PLACEMENT_OPPORTUNITY" - ], - "type": "string" - }, - "type": "array" - }, - "AdsOnDeliveryRestrictions": { - "$ref": "#/definitions/AdsOnDeliveryRestrictions" - }, - "Encryption": { - "$ref": "#/definitions/DashEncryption" - }, - "IncludeIframeOnlyStream": { - "description": "When enabled, an I-Frame only stream will be included in the output.", - "type": "boolean" - }, - "ManifestLayout": { - "description": "Determines the position of some tags in the Media Presentation Description (MPD). When set to FULL, elements like SegmentTemplate and ContentProtection are included in each Representation. When set to COMPACT, duplicate elements are combined and presented at the AdaptationSet level.", - "enum": [ - "FULL", - "COMPACT", - "DRM_TOP_LEVEL_COMPACT" - ], - "type": "string" - }, - "ManifestWindowSeconds": { - "description": "Time window (in seconds) contained in each manifest.", - "type": "integer" - }, - "MinBufferTimeSeconds": { - "description": "Minimum duration (in seconds) that a player will buffer media before starting the presentation.", - "type": "integer" - }, - "MinUpdatePeriodSeconds": { - "description": "Minimum duration (in seconds) between potential changes to the Dynamic Adaptive Streaming over HTTP (DASH) Media Presentation Description (MPD).", - "type": "integer" - }, - "PeriodTriggers": { - "description": "A list of triggers that controls when the outgoing Dynamic Adaptive Streaming over HTTP (DASH) Media Presentation Description (MPD) will be partitioned into multiple periods. If empty, the content will not be partitioned into more than one period. If the list contains \"ADS\", new periods will be created where the Channel source contains SCTE-35 ad markers.", - "items": { - "enum": [ - "ADS" - ], - "type": "string" - }, - "type": "array" - }, - "Profile": { - "description": "The Dynamic Adaptive Streaming over HTTP (DASH) profile type. When set to \"HBBTV_1_5\", HbbTV 1.5 compliant output is enabled.", - "enum": [ - "NONE", - "HBBTV_1_5", - "HYBRIDCAST", - "DVB_DASH_2014" - ], - "type": "string" - }, - "SegmentDurationSeconds": { - "description": "Duration (in seconds) of each segment. Actual segments will be rounded to the nearest multiple of the source segment duration.", - "type": "integer" - }, - "SegmentTemplateFormat": { - "description": "Determines the type of SegmentTemplate included in the Media Presentation Description (MPD). When set to NUMBER_WITH_TIMELINE, a full timeline is presented in each SegmentTemplate, with $Number$ media URLs. When set to TIME_WITH_TIMELINE, a full timeline is presented in each SegmentTemplate, with $Time$ media URLs. When set to NUMBER_WITH_DURATION, only a duration is included in each SegmentTemplate, with $Number$ media URLs.", - "enum": [ - "NUMBER_WITH_TIMELINE", - "TIME_WITH_TIMELINE", - "NUMBER_WITH_DURATION" - ], - "type": "string" - }, - "StreamSelection": { - "$ref": "#/definitions/StreamSelection" - }, - "SuggestedPresentationDelaySeconds": { - "description": "Duration (in seconds) to delay live content before presentation.", - "type": "integer" - }, - "UtcTiming": { - "description": "Determines the type of UTCTiming included in the Media Presentation Description (MPD)", - "enum": [ - "HTTP-XSDATE", - "HTTP-ISO", - "HTTP-HEAD", - "NONE" - ], - "type": "string" - }, - "UtcTimingUri": { - "description": "Specifies the value attribute of the UTCTiming field when utcTiming is set to HTTP-ISO, HTTP-HEAD or HTTP-XSDATE", - "type": "string" - } - }, - "type": "object" - }, - "EncryptionContractConfiguration": { - "additionalProperties": false, - "description": "The configuration to use for encrypting one or more content tracks separately for endpoints that use SPEKE 2.0.", - "properties": { - "PresetSpeke20Audio": { - "description": "A collection of audio encryption presets.", - "enum": [ - "PRESET-AUDIO-1", - "PRESET-AUDIO-2", - "PRESET-AUDIO-3", - "SHARED", - "UNENCRYPTED" - ], - "type": "string" - }, - "PresetSpeke20Video": { - "description": "A collection of video encryption presets.", - "enum": [ - "PRESET-VIDEO-1", - "PRESET-VIDEO-2", - "PRESET-VIDEO-3", - "PRESET-VIDEO-4", - "PRESET-VIDEO-5", - "PRESET-VIDEO-6", - "PRESET-VIDEO-7", - "PRESET-VIDEO-8", - "SHARED", - "UNENCRYPTED" - ], - "type": "string" - } - }, - "required": [ - "PresetSpeke20Audio", - "PresetSpeke20Video" - ], - "type": "object" - }, - "HlsEncryption": { - "additionalProperties": false, - "description": "An HTTP Live Streaming (HLS) encryption configuration.", - "properties": { - "ConstantInitializationVector": { - "description": "A constant initialization vector for encryption (optional). When not specified the initialization vector will be periodically rotated.", - "type": "string" - }, - "EncryptionMethod": { - "description": "The encryption method to use.", - "enum": [ - "AES_128", - "SAMPLE_AES" - ], - "type": "string" - }, - "KeyRotationIntervalSeconds": { - "description": "Interval (in seconds) between each encryption key rotation.", - "type": "integer" - }, - "RepeatExtXKey": { - "description": "When enabled, the EXT-X-KEY tag will be repeated in output manifests.", - "type": "boolean" - }, - "SpekeKeyProvider": { - "$ref": "#/definitions/SpekeKeyProvider" - } - }, - "required": [ - "SpekeKeyProvider" - ], - "type": "object" - }, - "HlsManifest": { - "additionalProperties": false, - "description": "A HTTP Live Streaming (HLS) manifest configuration.", - "properties": { - "AdMarkers": { - "description": "This setting controls how ad markers are included in the packaged OriginEndpoint. \"NONE\" will omit all SCTE-35 ad markers from the output. \"PASSTHROUGH\" causes the manifest to contain a copy of the SCTE-35 ad markers (comments) taken directly from the input HTTP Live Streaming (HLS) manifest. \"SCTE35_ENHANCED\" generates ad markers and blackout tags based on SCTE-35 messages in the input source. \"DATERANGE\" inserts EXT-X-DATERANGE tags to signal ad and program transition events in HLS and CMAF manifests. For this option, you must set a programDateTimeIntervalSeconds value that is greater than 0.", - "enum": [ - "NONE", - "SCTE35_ENHANCED", - "PASSTHROUGH", - "DATERANGE" - ], - "type": "string" - }, - "AdTriggers": { - "description": "A list of SCTE-35 message types that are treated as ad markers in the output. If empty, no ad markers are output. Specify multiple items to create ad markers for all of the included message types.", - "items": { - "enum": [ - "SPLICE_INSERT", - "BREAK", - "PROVIDER_ADVERTISEMENT", - "DISTRIBUTOR_ADVERTISEMENT", - "PROVIDER_PLACEMENT_OPPORTUNITY", - "DISTRIBUTOR_PLACEMENT_OPPORTUNITY", - "PROVIDER_OVERLAY_PLACEMENT_OPPORTUNITY", - "DISTRIBUTOR_OVERLAY_PLACEMENT_OPPORTUNITY" - ], - "type": "string" - }, - "type": "array" - }, - "AdsOnDeliveryRestrictions": { - "$ref": "#/definitions/AdsOnDeliveryRestrictions" - }, - "Id": { - "description": "The ID of the manifest. The ID must be unique within the OriginEndpoint and it cannot be changed after it is created.", - "type": "string" - }, - "IncludeIframeOnlyStream": { - "description": "When enabled, an I-Frame only stream will be included in the output.", - "type": "boolean" - }, - "ManifestName": { - "description": "An optional short string appended to the end of the OriginEndpoint URL. If not specified, defaults to the manifestName for the OriginEndpoint.", - "type": "string" - }, - "PlaylistType": { - "description": "The HTTP Live Streaming (HLS) playlist type. When either \"EVENT\" or \"VOD\" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be included in the media playlist.", - "enum": [ - "NONE", - "EVENT", - "VOD" - ], - "type": "string" - }, - "PlaylistWindowSeconds": { - "description": "Time window (in seconds) contained in each parent manifest.", - "type": "integer" - }, - "ProgramDateTimeIntervalSeconds": { - "description": "The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag inserted into manifests. Additionally, when an interval is specified ID3Timed Metadata messages will be generated every 5 seconds using the ingest time of the content. If the interval is not specified, or set to 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests and no ID3Timed Metadata messages will be generated. Note that irrespective of this parameter, if any ID3 Timed Metadata is found in HTTP Live Streaming (HLS) input, it will be passed through to HLS output.", - "type": "integer" - }, - "Url": { - "description": "The URL of the packaged OriginEndpoint for consumption.", - "type": "string" - } - }, - "required": [ - "Id" - ], - "type": "object" - }, - "HlsPackage": { - "additionalProperties": false, - "description": "An HTTP Live Streaming (HLS) packaging configuration.", - "properties": { - "AdMarkers": { - "description": "This setting controls how ad markers are included in the packaged OriginEndpoint. \"NONE\" will omit all SCTE-35 ad markers from the output. \"PASSTHROUGH\" causes the manifest to contain a copy of the SCTE-35 ad markers (comments) taken directly from the input HTTP Live Streaming (HLS) manifest. \"SCTE35_ENHANCED\" generates ad markers and blackout tags based on SCTE-35 messages in the input source. \"DATERANGE\" inserts EXT-X-DATERANGE tags to signal ad and program transition events in HLS and CMAF manifests. For this option, you must set a programDateTimeIntervalSeconds value that is greater than 0.", - "enum": [ - "NONE", - "SCTE35_ENHANCED", - "PASSTHROUGH", - "DATERANGE" - ], - "type": "string" - }, - "AdTriggers": { - "description": "A list of SCTE-35 message types that are treated as ad markers in the output. If empty, no ad markers are output. Specify multiple items to create ad markers for all of the included message types.", - "items": { - "enum": [ - "SPLICE_INSERT", - "BREAK", - "PROVIDER_ADVERTISEMENT", - "DISTRIBUTOR_ADVERTISEMENT", - "PROVIDER_PLACEMENT_OPPORTUNITY", - "DISTRIBUTOR_PLACEMENT_OPPORTUNITY", - "PROVIDER_OVERLAY_PLACEMENT_OPPORTUNITY", - "DISTRIBUTOR_OVERLAY_PLACEMENT_OPPORTUNITY" - ], - "type": "string" - }, - "type": "array" - }, - "AdsOnDeliveryRestrictions": { - "$ref": "#/definitions/AdsOnDeliveryRestrictions" - }, - "Encryption": { - "$ref": "#/definitions/HlsEncryption" - }, - "IncludeDvbSubtitles": { - "description": "When enabled, MediaPackage passes through digital video broadcasting (DVB) subtitles into the output.", - "type": "boolean" - }, - "IncludeIframeOnlyStream": { - "description": "When enabled, an I-Frame only stream will be included in the output.", - "type": "boolean" - }, - "PlaylistType": { - "description": "The HTTP Live Streaming (HLS) playlist type. When either \"EVENT\" or \"VOD\" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be included in the media playlist.", - "enum": [ - "NONE", - "EVENT", - "VOD" - ], - "type": "string" - }, - "PlaylistWindowSeconds": { - "description": "Time window (in seconds) contained in each parent manifest.", - "type": "integer" - }, - "ProgramDateTimeIntervalSeconds": { - "description": "The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag inserted into manifests. Additionally, when an interval is specified ID3Timed Metadata messages will be generated every 5 seconds using the ingest time of the content. If the interval is not specified, or set to 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests and no ID3Timed Metadata messages will be generated. Note that irrespective of this parameter, if any ID3 Timed Metadata is found in HTTP Live Streaming (HLS) input, it will be passed through to HLS output.", - "type": "integer" - }, - "SegmentDurationSeconds": { - "description": "Duration (in seconds) of each fragment. Actual fragments will be rounded to the nearest multiple of the source fragment duration.", - "type": "integer" - }, - "StreamSelection": { - "$ref": "#/definitions/StreamSelection" - }, - "UseAudioRenditionGroup": { - "description": "When enabled, audio streams will be placed in rendition groups in the output.", - "type": "boolean" - } - }, - "type": "object" - }, - "MssEncryption": { - "additionalProperties": false, - "description": "A Microsoft Smooth Streaming (MSS) encryption configuration.", - "properties": { - "SpekeKeyProvider": { - "$ref": "#/definitions/SpekeKeyProvider" - } - }, - "required": [ - "SpekeKeyProvider" - ], - "type": "object" - }, - "MssPackage": { - "additionalProperties": false, - "description": "A Microsoft Smooth Streaming (MSS) packaging configuration.", - "properties": { - "Encryption": { - "$ref": "#/definitions/MssEncryption" - }, - "ManifestWindowSeconds": { - "description": "The time window (in seconds) contained in each manifest.", - "type": "integer" - }, - "SegmentDurationSeconds": { - "description": "The duration (in seconds) of each segment.", - "type": "integer" - }, - "StreamSelection": { - "$ref": "#/definitions/StreamSelection" - } - }, - "type": "object" - }, - "SpekeKeyProvider": { - "additionalProperties": false, - "description": "A configuration for accessing an external Secure Packager and Encoder Key Exchange (SPEKE) service that will provide encryption keys.", - "properties": { - "CertificateArn": { - "description": "An Amazon Resource Name (ARN) of a Certificate Manager certificate that MediaPackage will use for enforcing secure end-to-end data transfer with the key provider service.", - "type": "string" - }, - "EncryptionContractConfiguration": { - "$ref": "#/definitions/EncryptionContractConfiguration" - }, - "ResourceId": { - "description": "The resource ID to include in key requests.", - "type": "string" - }, - "RoleArn": { - "description": "An Amazon Resource Name (ARN) of an IAM role that AWS Elemental MediaPackage will assume when accessing the key provider service.", - "type": "string" - }, - "SystemIds": { - "description": "The system IDs to include in key requests.", - "items": { - "type": "string" - }, - "type": "array" - }, - "Url": { - "description": "The URL of the external key provider service.", - "type": "string" - } - }, - "required": [ - "ResourceId", - "SystemIds", - "Url", - "RoleArn" - ], - "type": "object" - }, - "StreamSelection": { - "additionalProperties": false, - "description": "A StreamSelection configuration.", - "properties": { - "MaxVideoBitsPerSecond": { - "description": "The maximum video bitrate (bps) to include in output.", - "type": "integer" - }, - "MinVideoBitsPerSecond": { - "description": "The minimum video bitrate (bps) to include in output.", - "type": "integer" - }, - "StreamOrder": { - "description": "A directive that determines the order of streams in the output.", - "enum": [ - "ORIGINAL", - "VIDEO_BITRATE_ASCENDING", - "VIDEO_BITRATE_DESCENDING" - ], - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "deprecatedProperties": [ - "/properties/HlsPackage/Encryption/SpekeKeyProvider/EncryptionContractConfiguration/PresetSpeke20Audio", - "/properties/HlsPackage/Encryption/SpekeKeyProvider/EncryptionContractConfiguration/PresetSpeke20Video", - "/properties/MssPackage/Encryption/SpekeKeyProvider/EncryptionContractConfiguration/PresetSpeke20Audio", - "/properties/MssPackage/Encryption/SpekeKeyProvider/EncryptionContractConfiguration/PresetSpeke20Video", - "/properties/CmafPackage/HlsManifests/*/Url" - ], - "description": "Resource schema for AWS::MediaPackage::OriginEndpoint", - "handlers": { - "create": { - "permissions": [ - "mediapackage:CreateOriginEndpoint", - "mediapackage:DescribeOriginEndpoint", - "mediapackage:DescribeChannel", - "mediapackage:TagResource", - "iam:PassRole", - "acm:DescribeCertificate" - ] - }, - "delete": { - "permissions": [ - "mediapackage:DeleteOriginEndpoint" - ] - }, - "list": { - "permissions": [ - "mediapackage:ListOriginEndpoints" - ] - }, - "read": { - "permissions": [ - "mediapackage:DescribeOriginEndpoint" - ] - }, - "update": { - "permissions": [ - "mediapackage:UpdateOriginEndpoint", - "mediapackage:TagResource", - "mediapackage:ListTagsForResource", - "mediapackage:UntagResource", - "mediapackage:DescribeOriginEndpoint", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) assigned to the OriginEndpoint.", - "type": "string" - }, - "Authorization": { - "$ref": "#/definitions/Authorization" - }, - "ChannelId": { - "description": "The ID of the Channel the OriginEndpoint is associated with.", - "type": "string" - }, - "CmafPackage": { - "$ref": "#/definitions/CmafPackage" - }, - "DashPackage": { - "$ref": "#/definitions/DashPackage" - }, - "Description": { - "description": "A short text description of the OriginEndpoint.", - "type": "string" - }, - "HlsPackage": { - "$ref": "#/definitions/HlsPackage" - }, - "Id": { - "description": "The ID of the OriginEndpoint.", - "maxLength": 256, - "minLength": 1, - "pattern": "\\A[0-9a-zA-Z-_]+\\Z", - "type": "string" - }, - "ManifestName": { - "description": "A short string appended to the end of the OriginEndpoint URL.", - "type": "string" - }, - "MssPackage": { - "$ref": "#/definitions/MssPackage" - }, - "Origination": { - "description": "Control whether origination of video is allowed for this OriginEndpoint. If set to ALLOW, the OriginEndpoint may by requested, pursuant to any other form of access control. If set to DENY, the OriginEndpoint may not be requested. This can be helpful for Live to VOD harvesting, or for temporarily disabling origination", - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "StartoverWindowSeconds": { - "description": "Maximum duration (seconds) of content to retain for startover playback. If not specified, startover playback will be disabled for the OriginEndpoint.", - "type": "integer" - }, - "Tags": { - "description": "A collection of tags associated with a resource", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "TimeDelaySeconds": { - "description": "Amount of delay (seconds) to enforce on the playback of live content. If not specified, there will be no time delay in effect for the OriginEndpoint.", - "type": "integer" - }, - "Url": { - "description": "The URL of the packaged OriginEndpoint for consumption.", - "type": "string" - }, - "Whitelist": { - "description": "A list of source IP CIDR blocks that will be allowed to access the OriginEndpoint.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Url" - ], - "required": [ - "Id", - "ChannelId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "mediapackage:TagResource", - "mediapackage:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MediaPackage::OriginEndpoint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Id" + ], + "definitions": { + "AdsOnDeliveryRestrictions": { + "description": "This setting allows the delivery restriction flags on SCTE-35 segmentation descriptors to determine whether a message signals an ad. Choosing \"NONE\" means no SCTE-35 messages become ads. Choosing \"RESTRICTED\" means SCTE-35 messages of the types specified in AdTriggers that contain delivery restrictions will be treated as ads. Choosing \"UNRESTRICTED\" means SCTE-35 messages of the types specified in AdTriggers that do not contain delivery restrictions will be treated as ads. Choosing \"BOTH\" means all SCTE-35 messages of the types specified in AdTriggers will be treated as ads. Note that Splice Insert messages do not have these flags and are always treated as ads if specified in AdTriggers.", + "enum": [ + "NONE", + "RESTRICTED", + "UNRESTRICTED", + "BOTH" + ], + "type": "string" + }, + "Authorization": { + "additionalProperties": false, + "description": "CDN Authorization credentials", + "properties": { + "CdnIdentifierSecret": { + "description": "The Amazon Resource Name (ARN) for the secret in Secrets Manager that your Content Distribution Network (CDN) uses for authorization to access your endpoint.", + "type": "string" + }, + "SecretsRoleArn": { + "description": "The Amazon Resource Name (ARN) for the IAM role that allows MediaPackage to communicate with AWS Secrets Manager.", + "type": "string" + } + }, + "required": [ + "SecretsRoleArn", + "CdnIdentifierSecret" + ], + "type": "object" + }, + "CmafEncryption": { + "additionalProperties": false, + "description": "A Common Media Application Format (CMAF) encryption configuration.", + "properties": { + "ConstantInitializationVector": { + "description": "An optional 128-bit, 16-byte hex value represented by a 32-character string, used in conjunction with the key for encrypting blocks. If you don't specify a value, then MediaPackage creates the constant initialization vector (IV).", + "maxLength": 32, + "minLength": 32, + "pattern": "\\A[0-9a-fA-F]+\\Z", + "type": "string" + }, + "EncryptionMethod": { + "description": "The encryption method used", + "enum": [ + "SAMPLE_AES", + "AES_CTR" + ], + "type": "string" + }, + "KeyRotationIntervalSeconds": { + "description": "Time (in seconds) between each encryption key rotation.", + "type": "integer" + }, + "SpekeKeyProvider": { + "$ref": "#/definitions/SpekeKeyProvider" + } + }, + "required": [ + "SpekeKeyProvider" + ], + "type": "object" + }, + "CmafPackage": { + "additionalProperties": false, + "description": "A Common Media Application Format (CMAF) packaging configuration.", + "properties": { + "Encryption": { + "$ref": "#/definitions/CmafEncryption" + }, + "HlsManifests": { + "description": "A list of HLS manifest configurations", + "items": { + "$ref": "#/definitions/HlsManifest" + }, + "type": "array" + }, + "SegmentDurationSeconds": { + "description": "Duration (in seconds) of each segment. Actual segments will be rounded to the nearest multiple of the source segment duration.", + "type": "integer" + }, + "SegmentPrefix": { + "description": "An optional custom string that is prepended to the name of each segment. If not specified, it defaults to the ChannelId.", + "type": "string" + }, + "StreamSelection": { + "$ref": "#/definitions/StreamSelection" + } + }, + "type": "object" + }, + "DashEncryption": { + "additionalProperties": false, + "description": "A Dynamic Adaptive Streaming over HTTP (DASH) encryption configuration.", + "properties": { + "KeyRotationIntervalSeconds": { + "description": "Time (in seconds) between each encryption key rotation.", + "type": "integer" + }, + "SpekeKeyProvider": { + "$ref": "#/definitions/SpekeKeyProvider" + } + }, + "required": [ + "SpekeKeyProvider" + ], + "type": "object" + }, + "DashPackage": { + "additionalProperties": false, + "description": "A Dynamic Adaptive Streaming over HTTP (DASH) packaging configuration.", + "properties": { + "AdTriggers": { + "description": "A list of SCTE-35 message types that are treated as ad markers in the output. If empty, no ad markers are output. Specify multiple items to create ad markers for all of the included message types.", + "items": { + "enum": [ + "SPLICE_INSERT", + "BREAK", + "PROVIDER_ADVERTISEMENT", + "DISTRIBUTOR_ADVERTISEMENT", + "PROVIDER_PLACEMENT_OPPORTUNITY", + "DISTRIBUTOR_PLACEMENT_OPPORTUNITY", + "PROVIDER_OVERLAY_PLACEMENT_OPPORTUNITY", + "DISTRIBUTOR_OVERLAY_PLACEMENT_OPPORTUNITY" + ], + "type": "string" + }, + "type": "array" + }, + "AdsOnDeliveryRestrictions": { + "$ref": "#/definitions/AdsOnDeliveryRestrictions" + }, + "Encryption": { + "$ref": "#/definitions/DashEncryption" + }, + "IncludeIframeOnlyStream": { + "description": "When enabled, an I-Frame only stream will be included in the output.", + "type": "boolean" + }, + "ManifestLayout": { + "description": "Determines the position of some tags in the Media Presentation Description (MPD). When set to FULL, elements like SegmentTemplate and ContentProtection are included in each Representation. When set to COMPACT, duplicate elements are combined and presented at the AdaptationSet level.", + "enum": [ + "FULL", + "COMPACT", + "DRM_TOP_LEVEL_COMPACT" + ], + "type": "string" + }, + "ManifestWindowSeconds": { + "description": "Time window (in seconds) contained in each manifest.", + "type": "integer" + }, + "MinBufferTimeSeconds": { + "description": "Minimum duration (in seconds) that a player will buffer media before starting the presentation.", + "type": "integer" + }, + "MinUpdatePeriodSeconds": { + "description": "Minimum duration (in seconds) between potential changes to the Dynamic Adaptive Streaming over HTTP (DASH) Media Presentation Description (MPD).", + "type": "integer" + }, + "PeriodTriggers": { + "description": "A list of triggers that controls when the outgoing Dynamic Adaptive Streaming over HTTP (DASH) Media Presentation Description (MPD) will be partitioned into multiple periods. If empty, the content will not be partitioned into more than one period. If the list contains \"ADS\", new periods will be created where the Channel source contains SCTE-35 ad markers.", + "items": { + "enum": [ + "ADS" + ], + "type": "string" + }, + "type": "array" + }, + "Profile": { + "description": "The Dynamic Adaptive Streaming over HTTP (DASH) profile type. When set to \"HBBTV_1_5\", HbbTV 1.5 compliant output is enabled.", + "enum": [ + "NONE", + "HBBTV_1_5", + "HYBRIDCAST", + "DVB_DASH_2014" + ], + "type": "string" + }, + "SegmentDurationSeconds": { + "description": "Duration (in seconds) of each segment. Actual segments will be rounded to the nearest multiple of the source segment duration.", + "type": "integer" + }, + "SegmentTemplateFormat": { + "description": "Determines the type of SegmentTemplate included in the Media Presentation Description (MPD). When set to NUMBER_WITH_TIMELINE, a full timeline is presented in each SegmentTemplate, with $Number$ media URLs. When set to TIME_WITH_TIMELINE, a full timeline is presented in each SegmentTemplate, with $Time$ media URLs. When set to NUMBER_WITH_DURATION, only a duration is included in each SegmentTemplate, with $Number$ media URLs.", + "enum": [ + "NUMBER_WITH_TIMELINE", + "TIME_WITH_TIMELINE", + "NUMBER_WITH_DURATION" + ], + "type": "string" + }, + "StreamSelection": { + "$ref": "#/definitions/StreamSelection" + }, + "SuggestedPresentationDelaySeconds": { + "description": "Duration (in seconds) to delay live content before presentation.", + "type": "integer" + }, + "UtcTiming": { + "description": "Determines the type of UTCTiming included in the Media Presentation Description (MPD)", + "enum": [ + "HTTP-XSDATE", + "HTTP-ISO", + "HTTP-HEAD", + "NONE" + ], + "type": "string" + }, + "UtcTimingUri": { + "description": "Specifies the value attribute of the UTCTiming field when utcTiming is set to HTTP-ISO, HTTP-HEAD or HTTP-XSDATE", + "type": "string" + } + }, + "type": "object" + }, + "EncryptionContractConfiguration": { + "additionalProperties": false, + "description": "The configuration to use for encrypting one or more content tracks separately for endpoints that use SPEKE 2.0.", + "properties": { + "PresetSpeke20Audio": { + "description": "A collection of audio encryption presets.", + "enum": [ + "PRESET-AUDIO-1", + "PRESET-AUDIO-2", + "PRESET-AUDIO-3", + "SHARED", + "UNENCRYPTED" + ], + "type": "string" + }, + "PresetSpeke20Video": { + "description": "A collection of video encryption presets.", + "enum": [ + "PRESET-VIDEO-1", + "PRESET-VIDEO-2", + "PRESET-VIDEO-3", + "PRESET-VIDEO-4", + "PRESET-VIDEO-5", + "PRESET-VIDEO-6", + "PRESET-VIDEO-7", + "PRESET-VIDEO-8", + "SHARED", + "UNENCRYPTED" + ], + "type": "string" + } + }, + "required": [ + "PresetSpeke20Audio", + "PresetSpeke20Video" + ], + "type": "object" + }, + "HlsEncryption": { + "additionalProperties": false, + "description": "An HTTP Live Streaming (HLS) encryption configuration.", + "properties": { + "ConstantInitializationVector": { + "description": "A constant initialization vector for encryption (optional). When not specified the initialization vector will be periodically rotated.", + "type": "string" + }, + "EncryptionMethod": { + "description": "The encryption method to use.", + "enum": [ + "AES_128", + "SAMPLE_AES" + ], + "type": "string" + }, + "KeyRotationIntervalSeconds": { + "description": "Interval (in seconds) between each encryption key rotation.", + "type": "integer" + }, + "RepeatExtXKey": { + "description": "When enabled, the EXT-X-KEY tag will be repeated in output manifests.", + "type": "boolean" + }, + "SpekeKeyProvider": { + "$ref": "#/definitions/SpekeKeyProvider" + } + }, + "required": [ + "SpekeKeyProvider" + ], + "type": "object" + }, + "HlsManifest": { + "additionalProperties": false, + "description": "A HTTP Live Streaming (HLS) manifest configuration.", + "properties": { + "AdMarkers": { + "description": "This setting controls how ad markers are included in the packaged OriginEndpoint. \"NONE\" will omit all SCTE-35 ad markers from the output. \"PASSTHROUGH\" causes the manifest to contain a copy of the SCTE-35 ad markers (comments) taken directly from the input HTTP Live Streaming (HLS) manifest. \"SCTE35_ENHANCED\" generates ad markers and blackout tags based on SCTE-35 messages in the input source. \"DATERANGE\" inserts EXT-X-DATERANGE tags to signal ad and program transition events in HLS and CMAF manifests. For this option, you must set a programDateTimeIntervalSeconds value that is greater than 0.", + "enum": [ + "NONE", + "SCTE35_ENHANCED", + "PASSTHROUGH", + "DATERANGE" + ], + "type": "string" + }, + "AdTriggers": { + "description": "A list of SCTE-35 message types that are treated as ad markers in the output. If empty, no ad markers are output. Specify multiple items to create ad markers for all of the included message types.", + "items": { + "enum": [ + "SPLICE_INSERT", + "BREAK", + "PROVIDER_ADVERTISEMENT", + "DISTRIBUTOR_ADVERTISEMENT", + "PROVIDER_PLACEMENT_OPPORTUNITY", + "DISTRIBUTOR_PLACEMENT_OPPORTUNITY", + "PROVIDER_OVERLAY_PLACEMENT_OPPORTUNITY", + "DISTRIBUTOR_OVERLAY_PLACEMENT_OPPORTUNITY" + ], + "type": "string" + }, + "type": "array" + }, + "AdsOnDeliveryRestrictions": { + "$ref": "#/definitions/AdsOnDeliveryRestrictions" + }, + "Id": { + "description": "The ID of the manifest. The ID must be unique within the OriginEndpoint and it cannot be changed after it is created.", + "type": "string" + }, + "IncludeIframeOnlyStream": { + "description": "When enabled, an I-Frame only stream will be included in the output.", + "type": "boolean" + }, + "ManifestName": { + "description": "An optional short string appended to the end of the OriginEndpoint URL. If not specified, defaults to the manifestName for the OriginEndpoint.", + "type": "string" + }, + "PlaylistType": { + "description": "The HTTP Live Streaming (HLS) playlist type. When either \"EVENT\" or \"VOD\" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be included in the media playlist.", + "enum": [ + "NONE", + "EVENT", + "VOD" + ], + "type": "string" + }, + "PlaylistWindowSeconds": { + "description": "Time window (in seconds) contained in each parent manifest.", + "type": "integer" + }, + "ProgramDateTimeIntervalSeconds": { + "description": "The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag inserted into manifests. Additionally, when an interval is specified ID3Timed Metadata messages will be generated every 5 seconds using the ingest time of the content. If the interval is not specified, or set to 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests and no ID3Timed Metadata messages will be generated. Note that irrespective of this parameter, if any ID3 Timed Metadata is found in HTTP Live Streaming (HLS) input, it will be passed through to HLS output.", + "type": "integer" + }, + "Url": { + "description": "The URL of the packaged OriginEndpoint for consumption.", + "type": "string" + } + }, + "required": [ + "Id" + ], + "type": "object" + }, + "HlsPackage": { + "additionalProperties": false, + "description": "An HTTP Live Streaming (HLS) packaging configuration.", + "properties": { + "AdMarkers": { + "description": "This setting controls how ad markers are included in the packaged OriginEndpoint. \"NONE\" will omit all SCTE-35 ad markers from the output. \"PASSTHROUGH\" causes the manifest to contain a copy of the SCTE-35 ad markers (comments) taken directly from the input HTTP Live Streaming (HLS) manifest. \"SCTE35_ENHANCED\" generates ad markers and blackout tags based on SCTE-35 messages in the input source. \"DATERANGE\" inserts EXT-X-DATERANGE tags to signal ad and program transition events in HLS and CMAF manifests. For this option, you must set a programDateTimeIntervalSeconds value that is greater than 0.", + "enum": [ + "NONE", + "SCTE35_ENHANCED", + "PASSTHROUGH", + "DATERANGE" + ], + "type": "string" + }, + "AdTriggers": { + "description": "A list of SCTE-35 message types that are treated as ad markers in the output. If empty, no ad markers are output. Specify multiple items to create ad markers for all of the included message types.", + "items": { + "enum": [ + "SPLICE_INSERT", + "BREAK", + "PROVIDER_ADVERTISEMENT", + "DISTRIBUTOR_ADVERTISEMENT", + "PROVIDER_PLACEMENT_OPPORTUNITY", + "DISTRIBUTOR_PLACEMENT_OPPORTUNITY", + "PROVIDER_OVERLAY_PLACEMENT_OPPORTUNITY", + "DISTRIBUTOR_OVERLAY_PLACEMENT_OPPORTUNITY" + ], + "type": "string" + }, + "type": "array" + }, + "AdsOnDeliveryRestrictions": { + "$ref": "#/definitions/AdsOnDeliveryRestrictions" + }, + "Encryption": { + "$ref": "#/definitions/HlsEncryption" + }, + "IncludeDvbSubtitles": { + "description": "When enabled, MediaPackage passes through digital video broadcasting (DVB) subtitles into the output.", + "type": "boolean" + }, + "IncludeIframeOnlyStream": { + "description": "When enabled, an I-Frame only stream will be included in the output.", + "type": "boolean" + }, + "PlaylistType": { + "description": "The HTTP Live Streaming (HLS) playlist type. When either \"EVENT\" or \"VOD\" is specified, a corresponding EXT-X-PLAYLIST-TYPE entry will be included in the media playlist.", + "enum": [ + "NONE", + "EVENT", + "VOD" + ], + "type": "string" + }, + "PlaylistWindowSeconds": { + "description": "Time window (in seconds) contained in each parent manifest.", + "type": "integer" + }, + "ProgramDateTimeIntervalSeconds": { + "description": "The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag inserted into manifests. Additionally, when an interval is specified ID3Timed Metadata messages will be generated every 5 seconds using the ingest time of the content. If the interval is not specified, or set to 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests and no ID3Timed Metadata messages will be generated. Note that irrespective of this parameter, if any ID3 Timed Metadata is found in HTTP Live Streaming (HLS) input, it will be passed through to HLS output.", + "type": "integer" + }, + "SegmentDurationSeconds": { + "description": "Duration (in seconds) of each fragment. Actual fragments will be rounded to the nearest multiple of the source fragment duration.", + "type": "integer" + }, + "StreamSelection": { + "$ref": "#/definitions/StreamSelection" + }, + "UseAudioRenditionGroup": { + "description": "When enabled, audio streams will be placed in rendition groups in the output.", + "type": "boolean" + } + }, + "type": "object" + }, + "MssEncryption": { + "additionalProperties": false, + "description": "A Microsoft Smooth Streaming (MSS) encryption configuration.", + "properties": { + "SpekeKeyProvider": { + "$ref": "#/definitions/SpekeKeyProvider" + } + }, + "required": [ + "SpekeKeyProvider" + ], + "type": "object" + }, + "MssPackage": { + "additionalProperties": false, + "description": "A Microsoft Smooth Streaming (MSS) packaging configuration.", + "properties": { + "Encryption": { + "$ref": "#/definitions/MssEncryption" + }, + "ManifestWindowSeconds": { + "description": "The time window (in seconds) contained in each manifest.", + "type": "integer" + }, + "SegmentDurationSeconds": { + "description": "The duration (in seconds) of each segment.", + "type": "integer" + }, + "StreamSelection": { + "$ref": "#/definitions/StreamSelection" + } + }, + "type": "object" + }, + "SpekeKeyProvider": { + "additionalProperties": false, + "description": "A configuration for accessing an external Secure Packager and Encoder Key Exchange (SPEKE) service that will provide encryption keys.", + "properties": { + "CertificateArn": { + "description": "An Amazon Resource Name (ARN) of a Certificate Manager certificate that MediaPackage will use for enforcing secure end-to-end data transfer with the key provider service.", + "type": "string" + }, + "EncryptionContractConfiguration": { + "$ref": "#/definitions/EncryptionContractConfiguration" + }, + "ResourceId": { + "description": "The resource ID to include in key requests.", + "type": "string" + }, + "RoleArn": { + "description": "An Amazon Resource Name (ARN) of an IAM role that AWS Elemental MediaPackage will assume when accessing the key provider service.", + "type": "string" + }, + "SystemIds": { + "description": "The system IDs to include in key requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Url": { + "description": "The URL of the external key provider service.", + "type": "string" + } + }, + "required": [ + "ResourceId", + "SystemIds", + "Url", + "RoleArn" + ], + "type": "object" + }, + "StreamSelection": { + "additionalProperties": false, + "description": "A StreamSelection configuration.", + "properties": { + "MaxVideoBitsPerSecond": { + "description": "The maximum video bitrate (bps) to include in output.", + "type": "integer" + }, + "MinVideoBitsPerSecond": { + "description": "The minimum video bitrate (bps) to include in output.", + "type": "integer" + }, + "StreamOrder": { + "description": "A directive that determines the order of streams in the output.", + "enum": [ + "ORIGINAL", + "VIDEO_BITRATE_ASCENDING", + "VIDEO_BITRATE_DESCENDING" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/HlsPackage/Encryption/SpekeKeyProvider/EncryptionContractConfiguration/PresetSpeke20Audio", + "/properties/HlsPackage/Encryption/SpekeKeyProvider/EncryptionContractConfiguration/PresetSpeke20Video", + "/properties/MssPackage/Encryption/SpekeKeyProvider/EncryptionContractConfiguration/PresetSpeke20Audio", + "/properties/MssPackage/Encryption/SpekeKeyProvider/EncryptionContractConfiguration/PresetSpeke20Video", + "/properties/CmafPackage/HlsManifests/*/Url" + ], + "description": "Resource schema for AWS::MediaPackage::OriginEndpoint", + "handlers": { + "create": { + "permissions": [ + "mediapackage:CreateOriginEndpoint", + "mediapackage:DescribeOriginEndpoint", + "mediapackage:DescribeChannel", + "mediapackage:TagResource", + "iam:PassRole", + "acm:DescribeCertificate" + ] + }, + "delete": { + "permissions": [ + "mediapackage:DeleteOriginEndpoint" + ] + }, + "list": { + "permissions": [ + "mediapackage:ListOriginEndpoints" + ] + }, + "read": { + "permissions": [ + "mediapackage:DescribeOriginEndpoint" + ] + }, + "update": { + "permissions": [ + "mediapackage:UpdateOriginEndpoint", + "mediapackage:TagResource", + "mediapackage:ListTagsForResource", + "mediapackage:UntagResource", + "mediapackage:DescribeOriginEndpoint", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) assigned to the OriginEndpoint.", + "type": "string" + }, + "Authorization": { + "$ref": "#/definitions/Authorization" + }, + "ChannelId": { + "description": "The ID of the Channel the OriginEndpoint is associated with.", + "type": "string" + }, + "CmafPackage": { + "$ref": "#/definitions/CmafPackage" + }, + "DashPackage": { + "$ref": "#/definitions/DashPackage" + }, + "Description": { + "description": "A short text description of the OriginEndpoint.", + "type": "string" + }, + "HlsPackage": { + "$ref": "#/definitions/HlsPackage" + }, + "Id": { + "description": "The ID of the OriginEndpoint.", + "maxLength": 256, + "minLength": 1, + "pattern": "\\A[0-9a-zA-Z-_]+\\Z", + "type": "string" + }, + "ManifestName": { + "description": "A short string appended to the end of the OriginEndpoint URL.", + "type": "string" + }, + "MssPackage": { + "$ref": "#/definitions/MssPackage" + }, + "Origination": { + "description": "Control whether origination of video is allowed for this OriginEndpoint. If set to ALLOW, the OriginEndpoint may by requested, pursuant to any other form of access control. If set to DENY, the OriginEndpoint may not be requested. This can be helpful for Live to VOD harvesting, or for temporarily disabling origination", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "StartoverWindowSeconds": { + "description": "Maximum duration (seconds) of content to retain for startover playback. If not specified, startover playback will be disabled for the OriginEndpoint.", + "type": "integer" + }, + "Tags": { + "description": "A collection of tags associated with a resource", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TimeDelaySeconds": { + "description": "Amount of delay (seconds) to enforce on the playback of live content. If not specified, there will be no time delay in effect for the OriginEndpoint.", + "type": "integer" + }, + "Url": { + "description": "The URL of the packaged OriginEndpoint for consumption.", + "type": "string" + }, + "Whitelist": { + "description": "A list of source IP CIDR blocks that will be allowed to access the OriginEndpoint.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Url" + ], + "required": [ + "Id", + "ChannelId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "mediapackage:TagResource", + "mediapackage:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaPackage::OriginEndpoint" +} diff --git a/src/schema/aws-mediapackage-packagingconfiguration.json b/src/schema/aws-mediapackage-packagingconfiguration.json index 801a966c..e6058d9a 100644 --- a/src/schema/aws-mediapackage-packagingconfiguration.json +++ b/src/schema/aws-mediapackage-packagingconfiguration.json @@ -1,501 +1,501 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Id" - ], - "definitions": { - "CmafEncryption": { - "additionalProperties": false, - "description": "A CMAF encryption configuration.", - "properties": { - "SpekeKeyProvider": { - "$ref": "#/definitions/SpekeKeyProvider" - } - }, - "required": [ - "SpekeKeyProvider" - ], - "type": "object" - }, - "CmafPackage": { - "additionalProperties": false, - "description": "A CMAF packaging configuration.", - "properties": { - "Encryption": { - "$ref": "#/definitions/CmafEncryption" - }, - "HlsManifests": { - "description": "A list of HLS manifest configurations.", - "items": { - "$ref": "#/definitions/HlsManifest" - }, - "type": "array" - }, - "IncludeEncoderConfigurationInSegments": { - "description": "When includeEncoderConfigurationInSegments is set to true, MediaPackage places your encoder's Sequence Parameter Set (SPS), Picture Parameter Set (PPS), and Video Parameter Set (VPS) metadata in every video segment instead of in the init fragment. This lets you use different SPS/PPS/VPS settings for your assets during content playback.", - "type": "boolean" - }, - "SegmentDurationSeconds": { - "$ref": "#/definitions/SegmentDurationSeconds" - } - }, - "required": [ - "HlsManifests" - ], - "type": "object" - }, - "DashEncryption": { - "additionalProperties": false, - "description": "A Dynamic Adaptive Streaming over HTTP (DASH) encryption configuration.", - "properties": { - "SpekeKeyProvider": { - "$ref": "#/definitions/SpekeKeyProvider" - } - }, - "required": [ - "SpekeKeyProvider" - ], - "type": "object" - }, - "DashManifest": { - "additionalProperties": false, - "description": "A DASH manifest configuration.", - "properties": { - "ManifestLayout": { - "description": "Determines the position of some tags in the Media Presentation Description (MPD). When set to FULL, elements like SegmentTemplate and ContentProtection are included in each Representation. When set to COMPACT, duplicate elements are combined and presented at the AdaptationSet level.", - "enum": [ - "FULL", - "COMPACT" - ], - "type": "string" - }, - "ManifestName": { - "$ref": "#/definitions/ManifestName" - }, - "MinBufferTimeSeconds": { - "description": "Minimum duration (in seconds) that a player will buffer media before starting the presentation.", - "type": "integer" - }, - "Profile": { - "description": "The Dynamic Adaptive Streaming over HTTP (DASH) profile type. When set to \"HBBTV_1_5\", HbbTV 1.5 compliant output is enabled.", - "enum": [ - "NONE", - "HBBTV_1_5" - ], - "type": "string" - }, - "ScteMarkersSource": { - "description": "The source of scte markers used. When set to SEGMENTS, the scte markers are sourced from the segments of the ingested content. When set to MANIFEST, the scte markers are sourced from the manifest of the ingested content.", - "enum": [ - "SEGMENTS", - "MANIFEST" - ], - "type": "string" - }, - "StreamSelection": { - "$ref": "#/definitions/StreamSelection" - } - }, - "type": "object" - }, - "DashPackage": { - "additionalProperties": false, - "description": "A Dynamic Adaptive Streaming over HTTP (DASH) packaging configuration.", - "properties": { - "DashManifests": { - "description": "A list of DASH manifest configurations.", - "items": { - "$ref": "#/definitions/DashManifest" - }, - "type": "array" - }, - "Encryption": { - "$ref": "#/definitions/DashEncryption" - }, - "IncludeEncoderConfigurationInSegments": { - "description": "When includeEncoderConfigurationInSegments is set to true, MediaPackage places your encoder's Sequence Parameter Set (SPS), Picture Parameter Set (PPS), and Video Parameter Set (VPS) metadata in every video segment instead of in the init fragment. This lets you use different SPS/PPS/VPS settings for your assets during content playback.", - "type": "boolean" - }, - "IncludeIframeOnlyStream": { - "description": "When enabled, an I-Frame only stream will be included in the output.", - "type": "boolean" - }, - "PeriodTriggers": { - "description": "A list of triggers that controls when the outgoing Dynamic Adaptive Streaming over HTTP (DASH) Media Presentation Description (MPD) will be partitioned into multiple periods. If empty, the content will not be partitioned into more than one period. If the list contains \"ADS\", new periods will be created where the Asset contains SCTE-35 ad markers.", - "items": { - "enum": [ - "ADS" - ], - "type": "string" - }, - "type": "array" - }, - "SegmentDurationSeconds": { - "$ref": "#/definitions/SegmentDurationSeconds" - }, - "SegmentTemplateFormat": { - "description": "Determines the type of SegmentTemplate included in the Media Presentation Description (MPD). When set to NUMBER_WITH_TIMELINE, a full timeline is presented in each SegmentTemplate, with $Number$ media URLs. When set to TIME_WITH_TIMELINE, a full timeline is presented in each SegmentTemplate, with $Time$ media URLs. When set to NUMBER_WITH_DURATION, only a duration is included in each SegmentTemplate, with $Number$ media URLs.", - "enum": [ - "NUMBER_WITH_TIMELINE", - "TIME_WITH_TIMELINE", - "NUMBER_WITH_DURATION" - ], - "type": "string" - } - }, - "required": [ - "DashManifests" - ], - "type": "object" - }, - "EncryptionContractConfiguration": { - "additionalProperties": false, - "description": "The configuration to use for encrypting one or more content tracks separately for endpoints that use SPEKE 2.0.", - "properties": { - "PresetSpeke20Audio": { - "description": "A collection of audio encryption presets.", - "enum": [ - "PRESET-AUDIO-1", - "PRESET-AUDIO-2", - "PRESET-AUDIO-3", - "SHARED", - "UNENCRYPTED" - ], - "type": "string" - }, - "PresetSpeke20Video": { - "description": "A collection of video encryption presets.", - "enum": [ - "PRESET-VIDEO-1", - "PRESET-VIDEO-2", - "PRESET-VIDEO-3", - "PRESET-VIDEO-4", - "PRESET-VIDEO-5", - "PRESET-VIDEO-6", - "PRESET-VIDEO-7", - "PRESET-VIDEO-8", - "SHARED", - "UNENCRYPTED" - ], - "type": "string" - } - }, - "required": [ - "PresetSpeke20Audio", - "PresetSpeke20Video" - ], - "type": "object" - }, - "HlsEncryption": { - "additionalProperties": false, - "description": "An HTTP Live Streaming (HLS) encryption configuration.", - "properties": { - "ConstantInitializationVector": { - "description": "An HTTP Live Streaming (HLS) encryption configuration.", - "type": "string" - }, - "EncryptionMethod": { - "description": "The encryption method to use.", - "enum": [ - "AES_128", - "SAMPLE_AES" - ], - "type": "string" - }, - "SpekeKeyProvider": { - "$ref": "#/definitions/SpekeKeyProvider" - } - }, - "required": [ - "SpekeKeyProvider" - ], - "type": "object" - }, - "HlsManifest": { - "additionalProperties": false, - "description": "An HTTP Live Streaming (HLS) manifest configuration.", - "properties": { - "AdMarkers": { - "description": "This setting controls how ad markers are included in the packaged OriginEndpoint. \"NONE\" will omit all SCTE-35 ad markers from the output. \"PASSTHROUGH\" causes the manifest to contain a copy of the SCTE-35 ad markers (comments) taken directly from the input HTTP Live Streaming (HLS) manifest. \"SCTE35_ENHANCED\" generates ad markers and blackout tags based on SCTE-35 messages in the input source.", - "enum": [ - "NONE", - "SCTE35_ENHANCED", - "PASSTHROUGH" - ], - "type": "string" - }, - "IncludeIframeOnlyStream": { - "description": "When enabled, an I-Frame only stream will be included in the output.", - "type": "boolean" - }, - "ManifestName": { - "$ref": "#/definitions/ManifestName" - }, - "ProgramDateTimeIntervalSeconds": { - "description": "The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag inserted into manifests. Additionally, when an interval is specified ID3Timed Metadata messages will be generated every 5 seconds using the ingest time of the content. If the interval is not specified, or set to 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests and no ID3Timed Metadata messages will be generated. Note that irrespective of this parameter, if any ID3 Timed Metadata is found in HTTP Live Streaming (HLS) input, it will be passed through to HLS output.", - "type": "integer" - }, - "RepeatExtXKey": { - "description": "When enabled, the EXT-X-KEY tag will be repeated in output manifests.", - "type": "boolean" - }, - "StreamSelection": { - "$ref": "#/definitions/StreamSelection" - } - }, - "type": "object" - }, - "HlsPackage": { - "additionalProperties": false, - "description": "An HTTP Live Streaming (HLS) packaging configuration.", - "properties": { - "Encryption": { - "$ref": "#/definitions/HlsEncryption" - }, - "HlsManifests": { - "description": "A list of HLS manifest configurations.", - "items": { - "$ref": "#/definitions/HlsManifest" - }, - "type": "array" - }, - "IncludeDvbSubtitles": { - "description": "When enabled, MediaPackage passes through digital video broadcasting (DVB) subtitles into the output.", - "type": "boolean" - }, - "SegmentDurationSeconds": { - "$ref": "#/definitions/SegmentDurationSeconds" - }, - "UseAudioRenditionGroup": { - "description": "When enabled, audio streams will be placed in rendition groups in the output.", - "type": "boolean" - } - }, - "required": [ - "HlsManifests" - ], - "type": "object" - }, - "ManifestName": { - "description": "An optional string to include in the name of the manifest.", - "type": "string" - }, - "MssEncryption": { - "additionalProperties": false, - "description": "A CMAF encryption configuration.", - "properties": { - "SpekeKeyProvider": { - "$ref": "#/definitions/SpekeKeyProvider" - } - }, - "required": [ - "SpekeKeyProvider" - ], - "type": "object" - }, - "MssManifest": { - "additionalProperties": false, - "description": "A Microsoft Smooth Streaming (MSS) manifest configuration.", - "properties": { - "ManifestName": { - "$ref": "#/definitions/ManifestName" - }, - "StreamSelection": { - "$ref": "#/definitions/StreamSelection" - } - }, - "type": "object" - }, - "MssPackage": { - "additionalProperties": false, - "description": "A Microsoft Smooth Streaming (MSS) PackagingConfiguration.", - "properties": { - "Encryption": { - "$ref": "#/definitions/MssEncryption" - }, - "MssManifests": { - "description": "A list of MSS manifest configurations.", - "items": { - "$ref": "#/definitions/MssManifest" - }, - "type": "array" - }, - "SegmentDurationSeconds": { - "$ref": "#/definitions/SegmentDurationSeconds" - } - }, - "required": [ - "MssManifests" - ], - "type": "object" - }, - "RoleArn": { - "description": "An Amazon Resource Name (ARN) of an IAM role that AWS Elemental MediaPackage will assume when accessing the key provider service.", - "type": "string" - }, - "SegmentDurationSeconds": { - "description": "Duration (in seconds) of each fragment. Actual fragments will be rounded to the nearest multiple of the source fragment duration.", - "type": "integer" - }, - "SpekeKeyProvider": { - "additionalProperties": false, - "description": "A configuration for accessing an external Secure Packager and Encoder Key Exchange (SPEKE) service that will provide encryption keys.", - "properties": { - "EncryptionContractConfiguration": { - "$ref": "#/definitions/EncryptionContractConfiguration" - }, - "RoleArn": { - "$ref": "#/definitions/RoleArn" - }, - "SystemIds": { - "description": "The system IDs to include in key requests.", - "items": { - "type": "string" - }, - "type": "array" - }, - "Url": { - "description": "The URL of the external key provider service.", - "type": "string" - } - }, - "required": [ - "RoleArn", - "SystemIds", - "Url" - ], - "type": "object" - }, - "StreamSelection": { - "additionalProperties": false, - "description": "A StreamSelection configuration.", - "properties": { - "MaxVideoBitsPerSecond": { - "description": "The maximum video bitrate (bps) to include in output.", - "type": "integer" - }, - "MinVideoBitsPerSecond": { - "description": "The minimum video bitrate (bps) to include in output.", - "type": "integer" - }, - "StreamOrder": { - "description": "A directive that determines the order of streams in the output.", - "enum": [ - "ORIGINAL", - "VIDEO_BITRATE_ASCENDING", - "VIDEO_BITRATE_DESCENDING" - ], - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "deprecatedProperties": [ - "/properties/HlsPackage/Encryption/SpekeKeyProvider/EncryptionContractConfiguration/PresetSpeke20Audio", - "/properties/HlsPackage/Encryption/SpekeKeyProvider/EncryptionContractConfiguration/PresetSpeke20Video", - "/properties/MssPackage/Encryption/SpekeKeyProvider/EncryptionContractConfiguration/PresetSpeke20Audio", - "/properties/MssPackage/Encryption/SpekeKeyProvider/EncryptionContractConfiguration/PresetSpeke20Video" - ], - "description": "Resource schema for AWS::MediaPackage::PackagingConfiguration", - "handlers": { - "create": { - "permissions": [ - "mediapackage-vod:CreatePackagingConfiguration", - "mediapackage-vod:DescribePackagingConfiguration", - "mediapackage-vod:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "mediapackage-vod:DescribePackagingConfiguration", - "mediapackage-vod:DeletePackagingConfiguration" - ] - }, - "list": { - "permissions": [ - "mediapackage-vod:ListPackagingConfigurations", - "mediapackage-vod:DescribePackagingGroup" - ] - }, - "read": { - "permissions": [ - "mediapackage-vod:DescribePackagingConfiguration" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The ARN of the PackagingConfiguration.", - "type": "string" - }, - "CmafPackage": { - "$ref": "#/definitions/CmafPackage", - "description": "A CMAF packaging configuration." - }, - "DashPackage": { - "$ref": "#/definitions/DashPackage", - "description": "A Dynamic Adaptive Streaming over HTTP (DASH) packaging configuration." - }, - "HlsPackage": { - "$ref": "#/definitions/HlsPackage", - "description": "An HTTP Live Streaming (HLS) packaging configuration." - }, - "Id": { - "description": "The ID of the PackagingConfiguration.", - "type": "string" - }, - "MssPackage": { - "$ref": "#/definitions/MssPackage", - "description": "A Microsoft Smooth Streaming (MSS) PackagingConfiguration." - }, - "PackagingGroupId": { - "description": "The ID of a PackagingGroup.", - "type": "string" - }, - "Tags": { - "description": "A collection of tags associated with a resource", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "PackagingGroupId", - "Id" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::MediaPackage::PackagingConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Id" + ], + "definitions": { + "CmafEncryption": { + "additionalProperties": false, + "description": "A CMAF encryption configuration.", + "properties": { + "SpekeKeyProvider": { + "$ref": "#/definitions/SpekeKeyProvider" + } + }, + "required": [ + "SpekeKeyProvider" + ], + "type": "object" + }, + "CmafPackage": { + "additionalProperties": false, + "description": "A CMAF packaging configuration.", + "properties": { + "Encryption": { + "$ref": "#/definitions/CmafEncryption" + }, + "HlsManifests": { + "description": "A list of HLS manifest configurations.", + "items": { + "$ref": "#/definitions/HlsManifest" + }, + "type": "array" + }, + "IncludeEncoderConfigurationInSegments": { + "description": "When includeEncoderConfigurationInSegments is set to true, MediaPackage places your encoder's Sequence Parameter Set (SPS), Picture Parameter Set (PPS), and Video Parameter Set (VPS) metadata in every video segment instead of in the init fragment. This lets you use different SPS/PPS/VPS settings for your assets during content playback.", + "type": "boolean" + }, + "SegmentDurationSeconds": { + "$ref": "#/definitions/SegmentDurationSeconds" + } + }, + "required": [ + "HlsManifests" + ], + "type": "object" + }, + "DashEncryption": { + "additionalProperties": false, + "description": "A Dynamic Adaptive Streaming over HTTP (DASH) encryption configuration.", + "properties": { + "SpekeKeyProvider": { + "$ref": "#/definitions/SpekeKeyProvider" + } + }, + "required": [ + "SpekeKeyProvider" + ], + "type": "object" + }, + "DashManifest": { + "additionalProperties": false, + "description": "A DASH manifest configuration.", + "properties": { + "ManifestLayout": { + "description": "Determines the position of some tags in the Media Presentation Description (MPD). When set to FULL, elements like SegmentTemplate and ContentProtection are included in each Representation. When set to COMPACT, duplicate elements are combined and presented at the AdaptationSet level.", + "enum": [ + "FULL", + "COMPACT" + ], + "type": "string" + }, + "ManifestName": { + "$ref": "#/definitions/ManifestName" + }, + "MinBufferTimeSeconds": { + "description": "Minimum duration (in seconds) that a player will buffer media before starting the presentation.", + "type": "integer" + }, + "Profile": { + "description": "The Dynamic Adaptive Streaming over HTTP (DASH) profile type. When set to \"HBBTV_1_5\", HbbTV 1.5 compliant output is enabled.", + "enum": [ + "NONE", + "HBBTV_1_5" + ], + "type": "string" + }, + "ScteMarkersSource": { + "description": "The source of scte markers used. When set to SEGMENTS, the scte markers are sourced from the segments of the ingested content. When set to MANIFEST, the scte markers are sourced from the manifest of the ingested content.", + "enum": [ + "SEGMENTS", + "MANIFEST" + ], + "type": "string" + }, + "StreamSelection": { + "$ref": "#/definitions/StreamSelection" + } + }, + "type": "object" + }, + "DashPackage": { + "additionalProperties": false, + "description": "A Dynamic Adaptive Streaming over HTTP (DASH) packaging configuration.", + "properties": { + "DashManifests": { + "description": "A list of DASH manifest configurations.", + "items": { + "$ref": "#/definitions/DashManifest" + }, + "type": "array" + }, + "Encryption": { + "$ref": "#/definitions/DashEncryption" + }, + "IncludeEncoderConfigurationInSegments": { + "description": "When includeEncoderConfigurationInSegments is set to true, MediaPackage places your encoder's Sequence Parameter Set (SPS), Picture Parameter Set (PPS), and Video Parameter Set (VPS) metadata in every video segment instead of in the init fragment. This lets you use different SPS/PPS/VPS settings for your assets during content playback.", + "type": "boolean" + }, + "IncludeIframeOnlyStream": { + "description": "When enabled, an I-Frame only stream will be included in the output.", + "type": "boolean" + }, + "PeriodTriggers": { + "description": "A list of triggers that controls when the outgoing Dynamic Adaptive Streaming over HTTP (DASH) Media Presentation Description (MPD) will be partitioned into multiple periods. If empty, the content will not be partitioned into more than one period. If the list contains \"ADS\", new periods will be created where the Asset contains SCTE-35 ad markers.", + "items": { + "enum": [ + "ADS" + ], + "type": "string" + }, + "type": "array" + }, + "SegmentDurationSeconds": { + "$ref": "#/definitions/SegmentDurationSeconds" + }, + "SegmentTemplateFormat": { + "description": "Determines the type of SegmentTemplate included in the Media Presentation Description (MPD). When set to NUMBER_WITH_TIMELINE, a full timeline is presented in each SegmentTemplate, with $Number$ media URLs. When set to TIME_WITH_TIMELINE, a full timeline is presented in each SegmentTemplate, with $Time$ media URLs. When set to NUMBER_WITH_DURATION, only a duration is included in each SegmentTemplate, with $Number$ media URLs.", + "enum": [ + "NUMBER_WITH_TIMELINE", + "TIME_WITH_TIMELINE", + "NUMBER_WITH_DURATION" + ], + "type": "string" + } + }, + "required": [ + "DashManifests" + ], + "type": "object" + }, + "EncryptionContractConfiguration": { + "additionalProperties": false, + "description": "The configuration to use for encrypting one or more content tracks separately for endpoints that use SPEKE 2.0.", + "properties": { + "PresetSpeke20Audio": { + "description": "A collection of audio encryption presets.", + "enum": [ + "PRESET-AUDIO-1", + "PRESET-AUDIO-2", + "PRESET-AUDIO-3", + "SHARED", + "UNENCRYPTED" + ], + "type": "string" + }, + "PresetSpeke20Video": { + "description": "A collection of video encryption presets.", + "enum": [ + "PRESET-VIDEO-1", + "PRESET-VIDEO-2", + "PRESET-VIDEO-3", + "PRESET-VIDEO-4", + "PRESET-VIDEO-5", + "PRESET-VIDEO-6", + "PRESET-VIDEO-7", + "PRESET-VIDEO-8", + "SHARED", + "UNENCRYPTED" + ], + "type": "string" + } + }, + "required": [ + "PresetSpeke20Audio", + "PresetSpeke20Video" + ], + "type": "object" + }, + "HlsEncryption": { + "additionalProperties": false, + "description": "An HTTP Live Streaming (HLS) encryption configuration.", + "properties": { + "ConstantInitializationVector": { + "description": "An HTTP Live Streaming (HLS) encryption configuration.", + "type": "string" + }, + "EncryptionMethod": { + "description": "The encryption method to use.", + "enum": [ + "AES_128", + "SAMPLE_AES" + ], + "type": "string" + }, + "SpekeKeyProvider": { + "$ref": "#/definitions/SpekeKeyProvider" + } + }, + "required": [ + "SpekeKeyProvider" + ], + "type": "object" + }, + "HlsManifest": { + "additionalProperties": false, + "description": "An HTTP Live Streaming (HLS) manifest configuration.", + "properties": { + "AdMarkers": { + "description": "This setting controls how ad markers are included in the packaged OriginEndpoint. \"NONE\" will omit all SCTE-35 ad markers from the output. \"PASSTHROUGH\" causes the manifest to contain a copy of the SCTE-35 ad markers (comments) taken directly from the input HTTP Live Streaming (HLS) manifest. \"SCTE35_ENHANCED\" generates ad markers and blackout tags based on SCTE-35 messages in the input source.", + "enum": [ + "NONE", + "SCTE35_ENHANCED", + "PASSTHROUGH" + ], + "type": "string" + }, + "IncludeIframeOnlyStream": { + "description": "When enabled, an I-Frame only stream will be included in the output.", + "type": "boolean" + }, + "ManifestName": { + "$ref": "#/definitions/ManifestName" + }, + "ProgramDateTimeIntervalSeconds": { + "description": "The interval (in seconds) between each EXT-X-PROGRAM-DATE-TIME tag inserted into manifests. Additionally, when an interval is specified ID3Timed Metadata messages will be generated every 5 seconds using the ingest time of the content. If the interval is not specified, or set to 0, then no EXT-X-PROGRAM-DATE-TIME tags will be inserted into manifests and no ID3Timed Metadata messages will be generated. Note that irrespective of this parameter, if any ID3 Timed Metadata is found in HTTP Live Streaming (HLS) input, it will be passed through to HLS output.", + "type": "integer" + }, + "RepeatExtXKey": { + "description": "When enabled, the EXT-X-KEY tag will be repeated in output manifests.", + "type": "boolean" + }, + "StreamSelection": { + "$ref": "#/definitions/StreamSelection" + } + }, + "type": "object" + }, + "HlsPackage": { + "additionalProperties": false, + "description": "An HTTP Live Streaming (HLS) packaging configuration.", + "properties": { + "Encryption": { + "$ref": "#/definitions/HlsEncryption" + }, + "HlsManifests": { + "description": "A list of HLS manifest configurations.", + "items": { + "$ref": "#/definitions/HlsManifest" + }, + "type": "array" + }, + "IncludeDvbSubtitles": { + "description": "When enabled, MediaPackage passes through digital video broadcasting (DVB) subtitles into the output.", + "type": "boolean" + }, + "SegmentDurationSeconds": { + "$ref": "#/definitions/SegmentDurationSeconds" + }, + "UseAudioRenditionGroup": { + "description": "When enabled, audio streams will be placed in rendition groups in the output.", + "type": "boolean" + } + }, + "required": [ + "HlsManifests" + ], + "type": "object" + }, + "ManifestName": { + "description": "An optional string to include in the name of the manifest.", + "type": "string" + }, + "MssEncryption": { + "additionalProperties": false, + "description": "A CMAF encryption configuration.", + "properties": { + "SpekeKeyProvider": { + "$ref": "#/definitions/SpekeKeyProvider" + } + }, + "required": [ + "SpekeKeyProvider" + ], + "type": "object" + }, + "MssManifest": { + "additionalProperties": false, + "description": "A Microsoft Smooth Streaming (MSS) manifest configuration.", + "properties": { + "ManifestName": { + "$ref": "#/definitions/ManifestName" + }, + "StreamSelection": { + "$ref": "#/definitions/StreamSelection" + } + }, + "type": "object" + }, + "MssPackage": { + "additionalProperties": false, + "description": "A Microsoft Smooth Streaming (MSS) PackagingConfiguration.", + "properties": { + "Encryption": { + "$ref": "#/definitions/MssEncryption" + }, + "MssManifests": { + "description": "A list of MSS manifest configurations.", + "items": { + "$ref": "#/definitions/MssManifest" + }, + "type": "array" + }, + "SegmentDurationSeconds": { + "$ref": "#/definitions/SegmentDurationSeconds" + } + }, + "required": [ + "MssManifests" + ], + "type": "object" + }, + "RoleArn": { + "description": "An Amazon Resource Name (ARN) of an IAM role that AWS Elemental MediaPackage will assume when accessing the key provider service.", + "type": "string" + }, + "SegmentDurationSeconds": { + "description": "Duration (in seconds) of each fragment. Actual fragments will be rounded to the nearest multiple of the source fragment duration.", + "type": "integer" + }, + "SpekeKeyProvider": { + "additionalProperties": false, + "description": "A configuration for accessing an external Secure Packager and Encoder Key Exchange (SPEKE) service that will provide encryption keys.", + "properties": { + "EncryptionContractConfiguration": { + "$ref": "#/definitions/EncryptionContractConfiguration" + }, + "RoleArn": { + "$ref": "#/definitions/RoleArn" + }, + "SystemIds": { + "description": "The system IDs to include in key requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Url": { + "description": "The URL of the external key provider service.", + "type": "string" + } + }, + "required": [ + "RoleArn", + "SystemIds", + "Url" + ], + "type": "object" + }, + "StreamSelection": { + "additionalProperties": false, + "description": "A StreamSelection configuration.", + "properties": { + "MaxVideoBitsPerSecond": { + "description": "The maximum video bitrate (bps) to include in output.", + "type": "integer" + }, + "MinVideoBitsPerSecond": { + "description": "The minimum video bitrate (bps) to include in output.", + "type": "integer" + }, + "StreamOrder": { + "description": "A directive that determines the order of streams in the output.", + "enum": [ + "ORIGINAL", + "VIDEO_BITRATE_ASCENDING", + "VIDEO_BITRATE_DESCENDING" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/HlsPackage/Encryption/SpekeKeyProvider/EncryptionContractConfiguration/PresetSpeke20Audio", + "/properties/HlsPackage/Encryption/SpekeKeyProvider/EncryptionContractConfiguration/PresetSpeke20Video", + "/properties/MssPackage/Encryption/SpekeKeyProvider/EncryptionContractConfiguration/PresetSpeke20Audio", + "/properties/MssPackage/Encryption/SpekeKeyProvider/EncryptionContractConfiguration/PresetSpeke20Video" + ], + "description": "Resource schema for AWS::MediaPackage::PackagingConfiguration", + "handlers": { + "create": { + "permissions": [ + "mediapackage-vod:CreatePackagingConfiguration", + "mediapackage-vod:DescribePackagingConfiguration", + "mediapackage-vod:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "mediapackage-vod:DescribePackagingConfiguration", + "mediapackage-vod:DeletePackagingConfiguration" + ] + }, + "list": { + "permissions": [ + "mediapackage-vod:ListPackagingConfigurations", + "mediapackage-vod:DescribePackagingGroup" + ] + }, + "read": { + "permissions": [ + "mediapackage-vod:DescribePackagingConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The ARN of the PackagingConfiguration.", + "type": "string" + }, + "CmafPackage": { + "$ref": "#/definitions/CmafPackage", + "description": "A CMAF packaging configuration." + }, + "DashPackage": { + "$ref": "#/definitions/DashPackage", + "description": "A Dynamic Adaptive Streaming over HTTP (DASH) packaging configuration." + }, + "HlsPackage": { + "$ref": "#/definitions/HlsPackage", + "description": "An HTTP Live Streaming (HLS) packaging configuration." + }, + "Id": { + "description": "The ID of the PackagingConfiguration.", + "type": "string" + }, + "MssPackage": { + "$ref": "#/definitions/MssPackage", + "description": "A Microsoft Smooth Streaming (MSS) PackagingConfiguration." + }, + "PackagingGroupId": { + "description": "The ID of a PackagingGroup.", + "type": "string" + }, + "Tags": { + "description": "A collection of tags associated with a resource", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "PackagingGroupId", + "Id" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::MediaPackage::PackagingConfiguration" +} diff --git a/src/schema/aws-mediapackage-packaginggroup.json b/src/schema/aws-mediapackage-packaginggroup.json index 9ceed69d..398a954b 100644 --- a/src/schema/aws-mediapackage-packaginggroup.json +++ b/src/schema/aws-mediapackage-packaginggroup.json @@ -1,147 +1,147 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Id", - "/properties/Tags" - ], - "definitions": { - "Authorization": { - "additionalProperties": false, - "properties": { - "CdnIdentifierSecret": { - "description": "The Amazon Resource Name (ARN) for the secret in AWS Secrets Manager that is used for CDN authorization.", - "type": "string" - }, - "SecretsRoleArn": { - "description": "The Amazon Resource Name (ARN) for the IAM role that allows MediaPackage to communicate with AWS Secrets Manager.", - "type": "string" - } - }, - "required": [ - "CdnIdentifierSecret", - "SecretsRoleArn" - ], - "type": "object" - }, - "LogConfiguration": { - "additionalProperties": false, - "properties": { - "LogGroupName": { - "description": "Sets a custom AWS CloudWatch log group name for egress logs. If a log group name isn't specified, the default name is used: /aws/MediaPackage/VodEgressAccessLogs.", - "maxLength": 512, - "minLength": 1, - "pattern": "\\A\\/aws\\/MediaPackage\\/[0-9a-zA-Z-_\\/\\.#]+\\Z", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::MediaPackage::PackagingGroup", - "handlers": { - "create": { - "permissions": [ - "mediapackage-vod:CreatePackagingGroup", - "mediapackage-vod:DescribePackagingGroup", - "mediapackage-vod:TagResource", - "mediapackage-vod:ConfigureLogs", - "iam:PassRole", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "mediapackage-vod:DescribePackagingGroup", - "mediapackage-vod:DeletePackagingGroup" - ] - }, - "list": { - "permissions": [ - "mediapackage-vod:ListPackagingGroups" - ] - }, - "read": { - "permissions": [ - "mediapackage-vod:DescribePackagingGroup" - ] - }, - "update": { - "permissions": [ - "mediapackage-vod:DescribePackagingGroup", - "mediapackage-vod:UpdatePackagingGroup", - "mediapackage-vod:ConfigureLogs", - "mediapackage-vod:TagResource", - "iam:PassRole", - "iam:CreateServiceLinkedRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The ARN of the PackagingGroup.", - "type": "string" - }, - "Authorization": { - "$ref": "#/definitions/Authorization", - "description": "CDN Authorization" - }, - "DomainName": { - "description": "The fully qualified domain name for Assets in the PackagingGroup.", - "type": "string" - }, - "EgressAccessLogs": { - "$ref": "#/definitions/LogConfiguration", - "description": "The configuration parameters for egress access logging." - }, - "Id": { - "description": "The ID of the PackagingGroup.", - "maxLength": 256, - "minLength": 1, - "pattern": "\\A[0-9a-zA-Z-_]+\\Z", - "type": "string" - }, - "Tags": { - "description": "A collection of tags associated with a resource", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/DomainName" - ], - "required": [ - "Id" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackage.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::MediaPackage::PackagingGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Id", + "/properties/Tags" + ], + "definitions": { + "Authorization": { + "additionalProperties": false, + "properties": { + "CdnIdentifierSecret": { + "description": "The Amazon Resource Name (ARN) for the secret in AWS Secrets Manager that is used for CDN authorization.", + "type": "string" + }, + "SecretsRoleArn": { + "description": "The Amazon Resource Name (ARN) for the IAM role that allows MediaPackage to communicate with AWS Secrets Manager.", + "type": "string" + } + }, + "required": [ + "CdnIdentifierSecret", + "SecretsRoleArn" + ], + "type": "object" + }, + "LogConfiguration": { + "additionalProperties": false, + "properties": { + "LogGroupName": { + "description": "Sets a custom AWS CloudWatch log group name for egress logs. If a log group name isn't specified, the default name is used: /aws/MediaPackage/VodEgressAccessLogs.", + "maxLength": 512, + "minLength": 1, + "pattern": "\\A\\/aws\\/MediaPackage\\/[0-9a-zA-Z-_\\/\\.#]+\\Z", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::MediaPackage::PackagingGroup", + "handlers": { + "create": { + "permissions": [ + "mediapackage-vod:CreatePackagingGroup", + "mediapackage-vod:DescribePackagingGroup", + "mediapackage-vod:TagResource", + "mediapackage-vod:ConfigureLogs", + "iam:PassRole", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "mediapackage-vod:DescribePackagingGroup", + "mediapackage-vod:DeletePackagingGroup" + ] + }, + "list": { + "permissions": [ + "mediapackage-vod:ListPackagingGroups" + ] + }, + "read": { + "permissions": [ + "mediapackage-vod:DescribePackagingGroup" + ] + }, + "update": { + "permissions": [ + "mediapackage-vod:DescribePackagingGroup", + "mediapackage-vod:UpdatePackagingGroup", + "mediapackage-vod:ConfigureLogs", + "mediapackage-vod:TagResource", + "iam:PassRole", + "iam:CreateServiceLinkedRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The ARN of the PackagingGroup.", + "type": "string" + }, + "Authorization": { + "$ref": "#/definitions/Authorization", + "description": "CDN Authorization" + }, + "DomainName": { + "description": "The fully qualified domain name for Assets in the PackagingGroup.", + "type": "string" + }, + "EgressAccessLogs": { + "$ref": "#/definitions/LogConfiguration", + "description": "The configuration parameters for egress access logging." + }, + "Id": { + "description": "The ID of the PackagingGroup.", + "maxLength": 256, + "minLength": 1, + "pattern": "\\A[0-9a-zA-Z-_]+\\Z", + "type": "string" + }, + "Tags": { + "description": "A collection of tags associated with a resource", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/DomainName" + ], + "required": [ + "Id" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackage.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::MediaPackage::PackagingGroup" +} diff --git a/src/schema/aws-mediapackagev2-channel.json b/src/schema/aws-mediapackagev2-channel.json index dfb7cac3..178a9776 100644 --- a/src/schema/aws-mediapackagev2-channel.json +++ b/src/schema/aws-mediapackagev2-channel.json @@ -1,178 +1,206 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ChannelGroupName", - "/properties/ChannelName" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ChannelGroupName", - "/properties/ChannelName", - "/properties/InputType" - ], - "definitions": { - "IngestEndpoint": { - "additionalProperties": false, - "description": "

The ingest domain URL where the source stream should be sent.

", - "properties": { - "Id": { - "description": "

The system-generated unique identifier for the IngestEndpoint.

", - "type": "string" - }, - "Url": { - "description": "

The ingest domain URL where the source stream should be sent.

", - "type": "string" - } - }, - "type": "object" - }, - "InputType": { - "enum": [ - "HLS", - "CMAF" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "

Represents an entry point into AWS Elemental MediaPackage for an ABR video content stream sent from an upstream encoder such as AWS Elemental MediaLive. The channel continuously analyzes the content that it receives and prepares it to be distributed to consumers via one or more origin endpoints.

", - "handlers": { - "create": { - "permissions": [ - "mediapackagev2:TagResource", - "mediapackagev2:CreateChannel" - ] - }, - "delete": { - "permissions": [ - "mediapackagev2:GetChannel", - "mediapackagev2:DeleteChannel" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ChannelGroupName": { - "$ref": "resource-schema.json#/properties/ChannelGroupName" - } - }, - "required": [ - "ChannelGroupName" - ] - }, - "permissions": [ - "mediapackagev2:ListChannels" - ] - }, - "read": { - "permissions": [ - "mediapackagev2:GetChannel" - ] - }, - "update": { - "permissions": [ - "mediapackagev2:TagResource", - "mediapackagev2:UntagResource", - "mediapackagev2:ListTagsForResource", - "mediapackagev2:UpdateChannel" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) associated with the resource.

", - "type": "string" - }, - "ChannelGroupName": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "ChannelName": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "CreatedAt": { - "description": "

The date and time the channel was created.

", - "format": "date-time", - "type": "string" - }, - "Description": { - "description": "

Enter any descriptive text that helps you to identify the channel.

", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "IngestEndpointUrls": { - "items": { - "type": "string" - }, - "type": "array" - }, - "IngestEndpoints": { - "description": "

The list of ingest endpoints.

", - "items": { - "$ref": "#/definitions/IngestEndpoint" - }, - "type": "array" - }, - "InputType": { - "$ref": "#/definitions/InputType" - }, - "ModifiedAt": { - "description": "

The date and time the channel was modified.

", - "format": "date-time", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/IngestEndpoints", - "/properties/IngestEndpointUrls", - "/properties/ModifiedAt" - ], - "required": [ - "ChannelGroupName", - "ChannelName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackagev2", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "mediapackagev2:TagResource", - "mediapackagev2:UntagResource", - "mediapackagev2:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MediaPackageV2::Channel" -} +{ + "additionalIdentifiers": [ + [ + "/properties/ChannelGroupName", + "/properties/ChannelName" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ChannelGroupName", + "/properties/ChannelName", + "/properties/InputType" + ], + "definitions": { + "IngestEndpoint": { + "additionalProperties": false, + "description": "

The ingest domain URL where the source stream should be sent.

", + "properties": { + "Id": { + "description": "

The system-generated unique identifier for the IngestEndpoint.

", + "type": "string" + }, + "Url": { + "description": "

The ingest domain URL where the source stream should be sent.

", + "type": "string" + } + }, + "type": "object" + }, + "InputSwitchConfiguration": { + "additionalProperties": false, + "description": "

The configuration for input switching based on the media quality confidence score (MQCS) as provided from AWS Elemental MediaLive.

", + "properties": { + "MQCSInputSwitching": { + "description": "

When true, AWS Elemental MediaPackage performs input switching based on the MQCS. Default is true. This setting is valid only when InputType is CMAF.

", + "type": "boolean" + } + }, + "type": "object" + }, + "InputType": { + "enum": [ + "HLS", + "CMAF" + ], + "type": "string" + }, + "OutputHeaderConfiguration": { + "additionalProperties": false, + "description": "

The settings for what common media server data (CMSD) headers AWS Elemental MediaPackage includes in responses to the CDN.

", + "properties": { + "PublishMQCS": { + "description": "

When true, AWS Elemental MediaPackage includes the MQCS in responses to the CDN. This setting is valid only when InputType is CMAF.

", + "type": "boolean" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "

Represents an entry point into AWS Elemental MediaPackage for an ABR video content stream sent from an upstream encoder such as AWS Elemental MediaLive. The channel continuously analyzes the content that it receives and prepares it to be distributed to consumers via one or more origin endpoints.

", + "handlers": { + "create": { + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:CreateChannel" + ] + }, + "delete": { + "permissions": [ + "mediapackagev2:GetChannel", + "mediapackagev2:DeleteChannel" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ChannelGroupName": { + "$ref": "resource-schema.json#/properties/ChannelGroupName" + } + }, + "required": [ + "ChannelGroupName" + ] + }, + "permissions": [ + "mediapackagev2:ListChannels" + ] + }, + "read": { + "permissions": [ + "mediapackagev2:GetChannel" + ] + }, + "update": { + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:UntagResource", + "mediapackagev2:ListTagsForResource", + "mediapackagev2:UpdateChannel" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) associated with the resource.

", + "type": "string" + }, + "ChannelGroupName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ChannelName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "CreatedAt": { + "description": "

The date and time the channel was created.

", + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "

Enter any descriptive text that helps you to identify the channel.

", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "IngestEndpointUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "IngestEndpoints": { + "description": "

The list of ingest endpoints.

", + "items": { + "$ref": "#/definitions/IngestEndpoint" + }, + "type": "array" + }, + "InputSwitchConfiguration": { + "$ref": "#/definitions/InputSwitchConfiguration" + }, + "InputType": { + "$ref": "#/definitions/InputType" + }, + "ModifiedAt": { + "description": "

The date and time the channel was modified.

", + "format": "date-time", + "type": "string" + }, + "OutputHeaderConfiguration": { + "$ref": "#/definitions/OutputHeaderConfiguration" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/IngestEndpoints", + "/properties/IngestEndpointUrls", + "/properties/ModifiedAt" + ], + "required": [ + "ChannelGroupName", + "ChannelName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackagev2", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:UntagResource", + "mediapackagev2:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaPackageV2::Channel" +} diff --git a/src/schema/aws-mediapackagev2-channelgroup.json b/src/schema/aws-mediapackagev2-channelgroup.json index 8a676bc5..478bb3bc 100644 --- a/src/schema/aws-mediapackagev2-channelgroup.json +++ b/src/schema/aws-mediapackagev2-channelgroup.json @@ -1,123 +1,123 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ChannelGroupName" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ChannelGroupName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "

Represents a channel group that facilitates the grouping of multiple channels.

", - "handlers": { - "create": { - "permissions": [ - "mediapackagev2:TagResource", - "mediapackagev2:CreateChannelGroup" - ] - }, - "delete": { - "permissions": [ - "mediapackagev2:GetChannelGroup", - "mediapackagev2:DeleteChannelGroup" - ] - }, - "list": { - "permissions": [ - "mediapackagev2:ListChannelGroups" - ] - }, - "read": { - "permissions": [ - "mediapackagev2:GetChannelGroup" - ] - }, - "update": { - "permissions": [ - "mediapackagev2:TagResource", - "mediapackagev2:UntagResource", - "mediapackagev2:ListTagsForResource", - "mediapackagev2:UpdateChannelGroup" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) associated with the resource.

", - "type": "string" - }, - "ChannelGroupName": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "CreatedAt": { - "description": "

The date and time the channel group was created.

", - "format": "date-time", - "type": "string" - }, - "Description": { - "description": "

Enter any descriptive text that helps you to identify the channel group.

", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "EgressDomain": { - "description": "

The output domain where the source stream should be sent. Integrate the domain with a downstream CDN (such as Amazon CloudFront) or playback device.

", - "type": "string" - }, - "ModifiedAt": { - "description": "

The date and time the channel group was modified.

", - "format": "date-time", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/EgressDomain", - "/properties/ModifiedAt" - ], - "required": [ - "ChannelGroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackagev2", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "mediapackagev2:TagResource", - "mediapackagev2:UntagResource", - "mediapackagev2:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MediaPackageV2::ChannelGroup" -} +{ + "additionalIdentifiers": [ + [ + "/properties/ChannelGroupName" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ChannelGroupName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "

Represents a channel group that facilitates the grouping of multiple channels.

", + "handlers": { + "create": { + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:CreateChannelGroup" + ] + }, + "delete": { + "permissions": [ + "mediapackagev2:GetChannelGroup", + "mediapackagev2:DeleteChannelGroup" + ] + }, + "list": { + "permissions": [ + "mediapackagev2:ListChannelGroups" + ] + }, + "read": { + "permissions": [ + "mediapackagev2:GetChannelGroup" + ] + }, + "update": { + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:UntagResource", + "mediapackagev2:ListTagsForResource", + "mediapackagev2:UpdateChannelGroup" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) associated with the resource.

", + "type": "string" + }, + "ChannelGroupName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "CreatedAt": { + "description": "

The date and time the channel group was created.

", + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "

Enter any descriptive text that helps you to identify the channel group.

", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "EgressDomain": { + "description": "

The output domain where the source stream should be sent. Integrate the domain with a downstream CDN (such as Amazon CloudFront) or playback device.

", + "type": "string" + }, + "ModifiedAt": { + "description": "

The date and time the channel group was modified.

", + "format": "date-time", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/EgressDomain", + "/properties/ModifiedAt" + ], + "required": [ + "ChannelGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackagev2", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:UntagResource", + "mediapackagev2:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaPackageV2::ChannelGroup" +} diff --git a/src/schema/aws-mediapackagev2-channelpolicy.json b/src/schema/aws-mediapackagev2-channelpolicy.json index 9708c25a..04204027 100644 --- a/src/schema/aws-mediapackagev2-channelpolicy.json +++ b/src/schema/aws-mediapackagev2-channelpolicy.json @@ -1,70 +1,70 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ChannelGroupName", - "/properties/ChannelName" - ], - "description": "

Represents a resource-based policy that allows or denies access to a channel.

", - "handlers": { - "create": { - "permissions": [ - "mediapackagev2:GetChannelPolicy", - "mediapackagev2:PutChannelPolicy" - ] - }, - "delete": { - "permissions": [ - "mediapackagev2:GetChannelPolicy", - "mediapackagev2:DeleteChannelPolicy" - ] - }, - "read": { - "permissions": [ - "mediapackagev2:GetChannelPolicy" - ] - }, - "update": { - "permissions": [ - "mediapackagev2:GetChannelPolicy", - "mediapackagev2:PutChannelPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/ChannelGroupName", - "/properties/ChannelName" - ], - "properties": { - "ChannelGroupName": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "ChannelName": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "Policy": { - "type": [ - "object", - "string" - ] - } - }, - "required": [ - "ChannelGroupName", - "ChannelName", - "Policy" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackagev2", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::MediaPackageV2::ChannelPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ChannelGroupName", + "/properties/ChannelName" + ], + "description": "

Represents a resource-based policy that allows or denies access to a channel.

", + "handlers": { + "create": { + "permissions": [ + "mediapackagev2:GetChannelPolicy", + "mediapackagev2:PutChannelPolicy" + ] + }, + "delete": { + "permissions": [ + "mediapackagev2:GetChannelPolicy", + "mediapackagev2:DeleteChannelPolicy" + ] + }, + "read": { + "permissions": [ + "mediapackagev2:GetChannelPolicy" + ] + }, + "update": { + "permissions": [ + "mediapackagev2:GetChannelPolicy", + "mediapackagev2:PutChannelPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/ChannelGroupName", + "/properties/ChannelName" + ], + "properties": { + "ChannelGroupName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ChannelName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "Policy": { + "type": [ + "object", + "string" + ] + } + }, + "required": [ + "ChannelGroupName", + "ChannelName", + "Policy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackagev2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::MediaPackageV2::ChannelPolicy" +} diff --git a/src/schema/aws-mediapackagev2-originendpoint.json b/src/schema/aws-mediapackagev2-originendpoint.json index b773e793..eba923e4 100644 --- a/src/schema/aws-mediapackagev2-originendpoint.json +++ b/src/schema/aws-mediapackagev2-originendpoint.json @@ -1,744 +1,752 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ChannelGroupName", - "/properties/ChannelName", - "/properties/OriginEndpointName" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ChannelGroupName", - "/properties/ChannelName", - "/properties/OriginEndpointName" - ], - "definitions": { - "AdMarkerDash": { - "enum": [ - "BINARY", - "XML" - ], - "type": "string" - }, - "AdMarkerHls": { - "enum": [ - "DATERANGE" - ], - "type": "string" - }, - "CmafEncryptionMethod": { - "enum": [ - "CENC", - "CBCS" - ], - "type": "string" - }, - "ContainerType": { - "enum": [ - "TS", - "CMAF" - ], - "type": "string" - }, - "DashDrmSignaling": { - "enum": [ - "INDIVIDUAL", - "REFERENCED" - ], - "type": "string" - }, - "DashManifestConfiguration": { - "additionalProperties": false, - "description": "

Retrieve the DASH manifest configuration.

", - "properties": { - "DrmSignaling": { - "$ref": "#/definitions/DashDrmSignaling" - }, - "FilterConfiguration": { - "$ref": "#/definitions/FilterConfiguration" - }, - "ManifestName": { - "description": "

A short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index.

", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "ManifestWindowSeconds": { - "description": "

The total duration (in seconds) of the manifest's content.

", - "type": "integer" - }, - "MinBufferTimeSeconds": { - "description": "

Minimum amount of content (in seconds) that a player must keep available in the buffer.

", - "type": "integer" - }, - "MinUpdatePeriodSeconds": { - "description": "

Minimum amount of time (in seconds) that the player should wait before requesting updates to the manifest.

", - "type": "integer" - }, - "PeriodTriggers": { - "description": "

A list of triggers that controls when AWS Elemental MediaPackage separates the MPEG-DASH manifest into multiple periods. Leave this value empty to indicate that the manifest is contained all in one period.\n For more information about periods in the DASH manifest, see Multi-period DASH in AWS Elemental MediaPackage.

", - "items": { - "$ref": "#/definitions/DashPeriodTrigger" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "ScteDash": { - "$ref": "#/definitions/ScteDash" - }, - "SegmentTemplateFormat": { - "$ref": "#/definitions/DashSegmentTemplateFormat" - }, - "SuggestedPresentationDelaySeconds": { - "description": "

The amount of time (in seconds) that the player should be from the end of the manifest.

", - "type": "integer" - }, - "UtcTiming": { - "$ref": "#/definitions/DashUtcTiming" - } - }, - "required": [ - "ManifestName" - ], - "type": "object" - }, - "DashPeriodTrigger": { - "enum": [ - "AVAILS", - "DRM_KEY_ROTATION", - "SOURCE_CHANGES", - "SOURCE_DISRUPTIONS", - "NONE" - ], - "type": "string" - }, - "DashSegmentTemplateFormat": { - "enum": [ - "NUMBER_WITH_TIMELINE" - ], - "type": "string" - }, - "DashUtcTiming": { - "additionalProperties": false, - "description": "

Determines the type of UTC timing included in the DASH Media Presentation Description (MPD).

", - "properties": { - "TimingMode": { - "$ref": "#/definitions/DashUtcTimingMode" - }, - "TimingSource": { - "description": "

The the method that the player uses to synchronize to coordinated universal time (UTC) wall clock time.

", - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "DashUtcTimingMode": { - "enum": [ - "HTTP_HEAD", - "HTTP_ISO", - "HTTP_XSDATE", - "UTC_DIRECT" - ], - "type": "string" - }, - "DrmSystem": { - "enum": [ - "CLEAR_KEY_AES_128", - "FAIRPLAY", - "PLAYREADY", - "WIDEVINE", - "IRDETO" - ], - "type": "string" - }, - "Encryption": { - "additionalProperties": false, - "description": "

The parameters for encrypting content.

", - "properties": { - "ConstantInitializationVector": { - "description": "

A 128-bit, 16-byte hex value represented by a 32-character string, used in conjunction with the key for encrypting content. If you don't specify a value, then MediaPackage creates the constant initialization vector (IV).

", - "maxLength": 32, - "minLength": 32, - "pattern": "^[0-9a-fA-F]+$", - "type": "string" - }, - "EncryptionMethod": { - "$ref": "#/definitions/EncryptionMethod" - }, - "KeyRotationIntervalSeconds": { - "description": "

The frequency (in seconds) of key changes for live workflows, in which content is streamed real time. The service retrieves content keys before the live content begins streaming, and then retrieves them as needed over the lifetime of the workflow. By default, key rotation is set to 300 seconds (5 minutes), the minimum rotation interval, which is equivalent to setting it to 300. If you don't enter an interval, content keys aren't rotated.

\n

The following example setting causes the service to rotate keys every thirty minutes: 1800\n

", - "maximum": 31536000, - "minimum": 300, - "type": "integer" - }, - "SpekeKeyProvider": { - "$ref": "#/definitions/SpekeKeyProvider" - } - }, - "required": [ - "EncryptionMethod", - "SpekeKeyProvider" - ], - "type": "object" - }, - "EncryptionContractConfiguration": { - "additionalProperties": false, - "description": "

Configure one or more content encryption keys for your endpoints that use SPEKE Version 2.0. The encryption contract defines which content keys are used to encrypt the audio and video tracks in your stream. To configure the encryption contract, specify which audio and video encryption presets to use.

", - "properties": { - "PresetSpeke20Audio": { - "$ref": "#/definitions/PresetSpeke20Audio" - }, - "PresetSpeke20Video": { - "$ref": "#/definitions/PresetSpeke20Video" - } - }, - "required": [ - "PresetSpeke20Audio", - "PresetSpeke20Video" - ], - "type": "object" - }, - "EncryptionMethod": { - "additionalProperties": false, - "description": "

The encryption type.

", - "properties": { - "CmafEncryptionMethod": { - "$ref": "#/definitions/CmafEncryptionMethod" - }, - "TsEncryptionMethod": { - "$ref": "#/definitions/TsEncryptionMethod" - } - }, - "type": "object" - }, - "EndpointErrorCondition": { - "enum": [ - "STALE_MANIFEST", - "INCOMPLETE_MANIFEST", - "MISSING_DRM_KEY", - "SLATE_INPUT" - ], - "type": "string" - }, - "FilterConfiguration": { - "additionalProperties": false, - "description": "

Filter configuration includes settings for manifest filtering, start and end times, and time delay that apply to all of your egress requests for this manifest.

", - "properties": { - "ClipStartTime": { - "description": "

Optionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.

", - "format": "date-time", - "type": "string" - }, - "End": { - "description": "

Optionally specify the end time for all of your manifest egress requests. When you include end time, note that you cannot use end time query parameters for this manifest's endpoint URL.

", - "format": "date-time", - "type": "string" - }, - "ManifestFilter": { - "description": "

Optionally specify one or more manifest filters for all of your manifest egress requests. When you include a manifest filter, note that you cannot use an identical manifest filter query parameter for this manifest's endpoint URL.

", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Start": { - "description": "

Optionally specify the start time for all of your manifest egress requests. When you include start time, note that you cannot use start time query parameters for this manifest's endpoint URL.

", - "format": "date-time", - "type": "string" - }, - "TimeDelaySeconds": { - "description": "

Optionally specify the time delay for all of your manifest egress requests. Enter a value that is smaller than your endpoint's startover window. When you include time delay, note that you cannot use time delay query parameters for this manifest's endpoint URL.

", - "maximum": 1209600, - "minimum": 0, - "type": "integer" - } - }, - "type": "object" - }, - "ForceEndpointErrorConfiguration": { - "additionalProperties": false, - "description": "

The failover settings for the endpoint.

", - "properties": { - "EndpointErrorConditions": { - "description": "

The failover settings for the endpoint. The options are:

\n
    \n
  • \n

    \n STALE_MANIFEST - The manifest stalled and there a no new segments or parts.

    \n
  • \n
  • \n

    \n INCOMPLETE_MANIFEST - There is a gap in the manifest.

    \n
  • \n
  • \n

    \n MISSING_DRM_KEY - Key rotation is enabled but we're unable to fetch the key for the current key period.

    \n
  • \n
", - "items": { - "$ref": "#/definitions/EndpointErrorCondition" - }, - "type": "array" - } - }, - "type": "object" - }, - "HlsManifestConfiguration": { - "additionalProperties": false, - "description": "

Retrieve the HTTP live streaming (HLS) manifest configuration.

", - "properties": { - "ChildManifestName": { - "description": "

A short string that's appended to the endpoint URL. The child manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default child manifest name, index_1. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.

", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "FilterConfiguration": { - "$ref": "#/definitions/FilterConfiguration" - }, - "ManifestName": { - "description": "

A short short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index. MediaPackage automatically inserts the format extension, such as .m3u8. You can't use the same manifest name if you use HLS manifest and low-latency HLS manifest. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.

", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "ManifestWindowSeconds": { - "description": "

The total duration (in seconds) of the manifest's content.

", - "type": "integer" - }, - "ProgramDateTimeIntervalSeconds": { - "description": "

Inserts EXT-X-PROGRAM-DATE-TIME tags in the output manifest at the interval that you specify. If you don't enter an interval, \n EXT-X-PROGRAM-DATE-TIME tags aren't included in the manifest. \n The tags sync the stream to the wall clock so that viewers can seek to a specific time in the playback timeline on the player. \n ID3Timed metadata messages generate every 5 seconds whenever the content is ingested.

\n

Irrespective of this parameter, if any ID3Timed metadata is in the HLS input, it is passed through to the HLS output.

", - "type": "integer" - }, - "ScteHls": { - "$ref": "#/definitions/ScteHls" - }, - "StartTag": { - "$ref": "#/definitions/StartTag" - }, - "Url": { - "description": "

The egress domain URL for stream delivery from MediaPackage.

", - "type": "string" - } - }, - "required": [ - "ManifestName" - ], - "type": "object" - }, - "LowLatencyHlsManifestConfiguration": { - "additionalProperties": false, - "description": "

Retrieve the low-latency HTTP live streaming (HLS) manifest configuration.

", - "properties": { - "ChildManifestName": { - "description": "

A short string that's appended to the endpoint URL. The child manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default child manifest name, index_1. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.

", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "FilterConfiguration": { - "$ref": "#/definitions/FilterConfiguration" - }, - "ManifestName": { - "description": "

A short short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index. MediaPackage automatically inserts the format extension, such as .m3u8. You can't use the same manifest name if you use HLS manifest and low-latency HLS manifest. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.

", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "ManifestWindowSeconds": { - "description": "

The total duration (in seconds) of the manifest's content.

", - "type": "integer" - }, - "ProgramDateTimeIntervalSeconds": { - "description": "

Inserts EXT-X-PROGRAM-DATE-TIME tags in the output manifest at the interval that you specify. If you don't enter an interval, \n EXT-X-PROGRAM-DATE-TIME tags aren't included in the manifest. \n The tags sync the stream to the wall clock so that viewers can seek to a specific time in the playback timeline on the player. \n ID3Timed metadata messages generate every 5 seconds whenever the content is ingested.

\n

Irrespective of this parameter, if any ID3Timed metadata is in the HLS input, it is passed through to the HLS output.

", - "type": "integer" - }, - "ScteHls": { - "$ref": "#/definitions/ScteHls" - }, - "StartTag": { - "$ref": "#/definitions/StartTag" - }, - "Url": { - "description": "

The egress domain URL for stream delivery from MediaPackage.

", - "type": "string" - } - }, - "required": [ - "ManifestName" - ], - "type": "object" - }, - "PresetSpeke20Audio": { - "enum": [ - "PRESET_AUDIO_1", - "PRESET_AUDIO_2", - "PRESET_AUDIO_3", - "SHARED", - "UNENCRYPTED" - ], - "type": "string" - }, - "PresetSpeke20Video": { - "enum": [ - "PRESET_VIDEO_1", - "PRESET_VIDEO_2", - "PRESET_VIDEO_3", - "PRESET_VIDEO_4", - "PRESET_VIDEO_5", - "PRESET_VIDEO_6", - "PRESET_VIDEO_7", - "PRESET_VIDEO_8", - "SHARED", - "UNENCRYPTED" - ], - "type": "string" - }, - "Scte": { - "additionalProperties": false, - "description": "

The SCTE configuration.

", - "properties": { - "ScteFilter": { - "description": "

The SCTE-35 message types that you want to be treated as ad markers in the output.

", - "items": { - "$ref": "#/definitions/ScteFilter" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ScteDash": { - "additionalProperties": false, - "description": "

The SCTE configuration.

", - "properties": { - "AdMarkerDash": { - "$ref": "#/definitions/AdMarkerDash" - } - }, - "type": "object" - }, - "ScteFilter": { - "enum": [ - "SPLICE_INSERT", - "BREAK", - "PROVIDER_ADVERTISEMENT", - "DISTRIBUTOR_ADVERTISEMENT", - "PROVIDER_PLACEMENT_OPPORTUNITY", - "DISTRIBUTOR_PLACEMENT_OPPORTUNITY", - "PROVIDER_OVERLAY_PLACEMENT_OPPORTUNITY", - "DISTRIBUTOR_OVERLAY_PLACEMENT_OPPORTUNITY", - "PROGRAM" - ], - "type": "string" - }, - "ScteHls": { - "additionalProperties": false, - "description": "

The SCTE configuration.

", - "properties": { - "AdMarkerHls": { - "$ref": "#/definitions/AdMarkerHls" - } - }, - "type": "object" - }, - "Segment": { - "additionalProperties": false, - "description": "

The segment configuration, including the segment name, duration, and other configuration values.

", - "properties": { - "Encryption": { - "$ref": "#/definitions/Encryption" - }, - "IncludeIframeOnlyStreams": { - "description": "

When selected, the stream set includes an additional I-frame only stream, along with the other tracks. If false, this extra stream is not included. MediaPackage generates an I-frame only stream from the first rendition in the manifest. The service inserts EXT-I-FRAMES-ONLY tags in the output manifest, and then generates and includes an I-frames only playlist in the stream. This playlist permits player functionality like fast forward and rewind.

", - "type": "boolean" - }, - "Scte": { - "$ref": "#/definitions/Scte" - }, - "SegmentDurationSeconds": { - "description": "

The duration (in seconds) of each segment. Enter a value equal to, or a multiple of, the input segment duration. If the value that you enter is different from the input segment duration, MediaPackage rounds segments to the nearest multiple of the input segment duration.

", - "maximum": 30, - "minimum": 1, - "type": "integer" - }, - "SegmentName": { - "description": "

The name that describes the segment. The name is the base name of the segment used in all content manifests inside of the endpoint. You can't use spaces in the name.

", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "TsIncludeDvbSubtitles": { - "description": "

By default, MediaPackage excludes all digital video broadcasting (DVB) subtitles from the output. When selected, MediaPackage passes through DVB subtitles into the output.

", - "type": "boolean" - }, - "TsUseAudioRenditionGroup": { - "description": "

When selected, MediaPackage bundles all audio tracks in a rendition group. All other tracks in the stream can be used with any audio rendition from the group.

", - "type": "boolean" - } - }, - "type": "object" - }, - "SpekeKeyProvider": { - "additionalProperties": false, - "description": "

The parameters for the SPEKE key provider.

", - "properties": { - "DrmSystems": { - "description": "

The DRM solution provider you're using to protect your content during distribution.

", - "items": { - "$ref": "#/definitions/DrmSystem" - }, - "maxItems": 4, - "minItems": 1, - "type": "array" - }, - "EncryptionContractConfiguration": { - "$ref": "#/definitions/EncryptionContractConfiguration" - }, - "ResourceId": { - "description": "

The unique identifier for the content. The service sends this to the key server to identify the current endpoint. How unique you make this depends on how fine-grained you want access controls to be. The service does not permit you to use the same ID for two simultaneous encryption processes. The resource ID is also known as the content ID.

\n

The following example shows a resource ID: MovieNight20171126093045\n

", - "maxLength": 256, - "minLength": 1, - "pattern": "^[0-9a-zA-Z_-]+$", - "type": "string" - }, - "RoleArn": { - "description": "

The ARN for the IAM role granted by the key provider that provides access to the key provider API. This role must have a trust policy that allows MediaPackage to assume the role, and it must have a sufficient permissions policy to allow access to the specific key retrieval URL. Get this from your DRM solution provider.

\n

Valid format: arn:aws:iam::{accountID}:role/{name}. The following example shows a role ARN: arn:aws:iam::444455556666:role/SpekeAccess\n

", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Url": { - "description": "

The URL of the API Gateway proxy that you set up to talk to your key server. The API Gateway proxy must reside in the same AWS Region as MediaPackage and must start with https://.

\n

The following example shows a URL: https://1wm2dx1f33.execute-api.us-west-2.amazonaws.com/SpekeSample/copyProtection\n

", - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DrmSystems", - "EncryptionContractConfiguration", - "ResourceId", - "RoleArn", - "Url" - ], - "type": "object" - }, - "StartTag": { - "additionalProperties": false, - "description": "

To insert an EXT-X-START tag in your HLS playlist, specify a StartTag configuration object with a valid TimeOffset. When you do, you can also optionally specify whether to include a PRECISE value in the EXT-X-START tag.

", - "properties": { - "Precise": { - "description": "

Specify the value for PRECISE within your EXT-X-START tag. Leave blank, or choose false, to use the default value NO. Choose yes to use the value YES.

", - "type": "boolean" - }, - "TimeOffset": { - "description": "

Specify the value for TIME-OFFSET within your EXT-X-START tag. Enter a signed floating point value which, if positive, must be less than the configured manifest duration minus three times the configured segment target duration. If negative, the absolute value must be larger than three times the configured segment target duration, and the absolute value must be smaller than the configured manifest duration.

", - "type": "number" - } - }, - "required": [ - "TimeOffset" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "TsEncryptionMethod": { - "enum": [ - "AES_128", - "SAMPLE_AES" - ], - "type": "string" - } - }, - "description": "

Represents an origin endpoint that is associated with a channel, offering a dynamically repackaged version of its content through various streaming media protocols. The content can be efficiently disseminated to end-users via a Content Delivery Network (CDN), like Amazon CloudFront.

", - "handlers": { - "create": { - "permissions": [ - "mediapackagev2:TagResource", - "mediapackagev2:CreateOriginEndpoint", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "mediapackagev2:GetOriginEndpoint", - "mediapackagev2:DeleteOriginEndpoint" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ChannelGroupName": { - "$ref": "resource-schema.json#/properties/ChannelGroupName" - }, - "ChannelName": { - "$ref": "resource-schema.json#/properties/ChannelName" - } - }, - "required": [ - "ChannelGroupName", - "ChannelName" - ] - }, - "permissions": [ - "mediapackagev2:ListOriginEndpoints" - ] - }, - "read": { - "permissions": [ - "mediapackagev2:GetOriginEndpoint" - ] - }, - "update": { - "permissions": [ - "mediapackagev2:TagResource", - "mediapackagev2:UntagResource", - "mediapackagev2:ListTagsForResource", - "mediapackagev2:UpdateOriginEndpoint", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) associated with the resource.

", - "type": "string" - }, - "ChannelGroupName": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "ChannelName": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "ContainerType": { - "$ref": "#/definitions/ContainerType" - }, - "CreatedAt": { - "description": "

The date and time the origin endpoint was created.

", - "format": "date-time", - "type": "string" - }, - "DashManifestUrls": { - "items": { - "type": "string" - }, - "type": "array" - }, - "DashManifests": { - "description": "

A DASH manifest configuration.

", - "items": { - "$ref": "#/definitions/DashManifestConfiguration" - }, - "type": "array" - }, - "Description": { - "description": "

Enter any descriptive text that helps you to identify the origin endpoint.

", - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "ForceEndpointErrorConfiguration": { - "$ref": "#/definitions/ForceEndpointErrorConfiguration" - }, - "HlsManifestUrls": { - "items": { - "type": "string" - }, - "type": "array" - }, - "HlsManifests": { - "description": "

An HTTP live streaming (HLS) manifest configuration.

", - "items": { - "$ref": "#/definitions/HlsManifestConfiguration" - }, - "type": "array" - }, - "LowLatencyHlsManifestUrls": { - "items": { - "type": "string" - }, - "type": "array" - }, - "LowLatencyHlsManifests": { - "description": "

A low-latency HLS manifest configuration.

", - "items": { - "$ref": "#/definitions/LowLatencyHlsManifestConfiguration" - }, - "type": "array" - }, - "ModifiedAt": { - "description": "

The date and time the origin endpoint was modified.

", - "format": "date-time", - "type": "string" - }, - "OriginEndpointName": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "Segment": { - "$ref": "#/definitions/Segment" - }, - "StartoverWindowSeconds": { - "description": "

The size of the window (in seconds) to create a window of the live stream that's available for on-demand viewing. Viewers can start-over or catch-up on content that falls within the window. The maximum startover window is 1,209,600 seconds (14 days).

", - "maximum": 1209600, - "minimum": 60, - "type": "integer" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/DashManifestUrls", - "/properties/HlsManifestUrls", - "/properties/LowLatencyHlsManifestUrls", - "/properties/ModifiedAt", - "/properties/LowLatencyHlsManifests/*/Url", - "/properties/HlsManifests/*/Url" - ], - "required": [ - "ChannelGroupName", - "ChannelName", - "OriginEndpointName", - "ContainerType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackagev2", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "mediapackagev2:TagResource", - "mediapackagev2:UntagResource", - "mediapackagev2:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MediaPackageV2::OriginEndpoint" -} +{ + "additionalIdentifiers": [ + [ + "/properties/ChannelGroupName", + "/properties/ChannelName", + "/properties/OriginEndpointName" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ChannelGroupName", + "/properties/ChannelName", + "/properties/OriginEndpointName" + ], + "definitions": { + "AdMarkerDash": { + "enum": [ + "BINARY", + "XML" + ], + "type": "string" + }, + "AdMarkerHls": { + "enum": [ + "DATERANGE" + ], + "type": "string" + }, + "CmafEncryptionMethod": { + "enum": [ + "CENC", + "CBCS" + ], + "type": "string" + }, + "ContainerType": { + "enum": [ + "TS", + "CMAF" + ], + "type": "string" + }, + "DashDrmSignaling": { + "enum": [ + "INDIVIDUAL", + "REFERENCED" + ], + "type": "string" + }, + "DashManifestConfiguration": { + "additionalProperties": false, + "description": "

Retrieve the DASH manifest configuration.

", + "properties": { + "DrmSignaling": { + "$ref": "#/definitions/DashDrmSignaling" + }, + "FilterConfiguration": { + "$ref": "#/definitions/FilterConfiguration" + }, + "ManifestName": { + "description": "

A short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index.

", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ManifestWindowSeconds": { + "description": "

The total duration (in seconds) of the manifest's content.

", + "type": "integer" + }, + "MinBufferTimeSeconds": { + "description": "

Minimum amount of content (in seconds) that a player must keep available in the buffer.

", + "type": "integer" + }, + "MinUpdatePeriodSeconds": { + "description": "

Minimum amount of time (in seconds) that the player should wait before requesting updates to the manifest.

", + "type": "integer" + }, + "PeriodTriggers": { + "description": "

A list of triggers that controls when AWS Elemental MediaPackage separates the MPEG-DASH manifest into multiple periods. Leave this value empty to indicate that the manifest is contained all in one period.\n For more information about periods in the DASH manifest, see Multi-period DASH in AWS Elemental MediaPackage.

", + "items": { + "$ref": "#/definitions/DashPeriodTrigger" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ScteDash": { + "$ref": "#/definitions/ScteDash" + }, + "SegmentTemplateFormat": { + "$ref": "#/definitions/DashSegmentTemplateFormat" + }, + "SuggestedPresentationDelaySeconds": { + "description": "

The amount of time (in seconds) that the player should be from the end of the manifest.

", + "type": "integer" + }, + "UtcTiming": { + "$ref": "#/definitions/DashUtcTiming" + } + }, + "required": [ + "ManifestName" + ], + "type": "object" + }, + "DashPeriodTrigger": { + "enum": [ + "AVAILS", + "DRM_KEY_ROTATION", + "SOURCE_CHANGES", + "SOURCE_DISRUPTIONS", + "NONE" + ], + "type": "string" + }, + "DashSegmentTemplateFormat": { + "enum": [ + "NUMBER_WITH_TIMELINE" + ], + "type": "string" + }, + "DashUtcTiming": { + "additionalProperties": false, + "description": "

Determines the type of UTC timing included in the DASH Media Presentation Description (MPD).

", + "properties": { + "TimingMode": { + "$ref": "#/definitions/DashUtcTimingMode" + }, + "TimingSource": { + "description": "

The the method that the player uses to synchronize to coordinated universal time (UTC) wall clock time.

", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "DashUtcTimingMode": { + "enum": [ + "HTTP_HEAD", + "HTTP_ISO", + "HTTP_XSDATE", + "UTC_DIRECT" + ], + "type": "string" + }, + "DrmSystem": { + "enum": [ + "CLEAR_KEY_AES_128", + "FAIRPLAY", + "PLAYREADY", + "WIDEVINE", + "IRDETO" + ], + "type": "string" + }, + "Encryption": { + "additionalProperties": false, + "description": "

The parameters for encrypting content.

", + "properties": { + "ConstantInitializationVector": { + "description": "

A 128-bit, 16-byte hex value represented by a 32-character string, used in conjunction with the key for encrypting content. If you don't specify a value, then MediaPackage creates the constant initialization vector (IV).

", + "maxLength": 32, + "minLength": 32, + "pattern": "^[0-9a-fA-F]+$", + "type": "string" + }, + "EncryptionMethod": { + "$ref": "#/definitions/EncryptionMethod" + }, + "KeyRotationIntervalSeconds": { + "description": "

The frequency (in seconds) of key changes for live workflows, in which content is streamed real time. The service retrieves content keys before the live content begins streaming, and then retrieves them as needed over the lifetime of the workflow. By default, key rotation is set to 300 seconds (5 minutes), the minimum rotation interval, which is equivalent to setting it to 300. If you don't enter an interval, content keys aren't rotated.

\n

The following example setting causes the service to rotate keys every thirty minutes: 1800\n

", + "maximum": 31536000, + "minimum": 300, + "type": "integer" + }, + "SpekeKeyProvider": { + "$ref": "#/definitions/SpekeKeyProvider" + } + }, + "required": [ + "EncryptionMethod", + "SpekeKeyProvider" + ], + "type": "object" + }, + "EncryptionContractConfiguration": { + "additionalProperties": false, + "description": "

Configure one or more content encryption keys for your endpoints that use SPEKE Version 2.0. The encryption contract defines which content keys are used to encrypt the audio and video tracks in your stream. To configure the encryption contract, specify which audio and video encryption presets to use.

", + "properties": { + "PresetSpeke20Audio": { + "$ref": "#/definitions/PresetSpeke20Audio" + }, + "PresetSpeke20Video": { + "$ref": "#/definitions/PresetSpeke20Video" + } + }, + "required": [ + "PresetSpeke20Audio", + "PresetSpeke20Video" + ], + "type": "object" + }, + "EncryptionMethod": { + "additionalProperties": false, + "description": "

The encryption type.

", + "properties": { + "CmafEncryptionMethod": { + "$ref": "#/definitions/CmafEncryptionMethod" + }, + "TsEncryptionMethod": { + "$ref": "#/definitions/TsEncryptionMethod" + } + }, + "type": "object" + }, + "EndpointErrorCondition": { + "enum": [ + "STALE_MANIFEST", + "INCOMPLETE_MANIFEST", + "MISSING_DRM_KEY", + "SLATE_INPUT" + ], + "type": "string" + }, + "FilterConfiguration": { + "additionalProperties": false, + "description": "

Filter configuration includes settings for manifest filtering, start and end times, and time delay that apply to all of your egress requests for this manifest.

", + "properties": { + "ClipStartTime": { + "description": "

Optionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.

", + "format": "date-time", + "type": "string" + }, + "End": { + "description": "

Optionally specify the end time for all of your manifest egress requests. When you include end time, note that you cannot use end time query parameters for this manifest's endpoint URL.

", + "format": "date-time", + "type": "string" + }, + "ManifestFilter": { + "description": "

Optionally specify one or more manifest filters for all of your manifest egress requests. When you include a manifest filter, note that you cannot use an identical manifest filter query parameter for this manifest's endpoint URL.

", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Start": { + "description": "

Optionally specify the start time for all of your manifest egress requests. When you include start time, note that you cannot use start time query parameters for this manifest's endpoint URL.

", + "format": "date-time", + "type": "string" + }, + "TimeDelaySeconds": { + "description": "

Optionally specify the time delay for all of your manifest egress requests. Enter a value that is smaller than your endpoint's startover window. When you include time delay, note that you cannot use time delay query parameters for this manifest's endpoint URL.

", + "maximum": 1209600, + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "ForceEndpointErrorConfiguration": { + "additionalProperties": false, + "description": "

The failover settings for the endpoint.

", + "properties": { + "EndpointErrorConditions": { + "description": "

The failover conditions for the endpoint. The options are:

\n
    \n
  • \n

    \n STALE_MANIFEST - The manifest stalled and there are no new segments or parts.

    \n
  • \n
  • \n

    \n INCOMPLETE_MANIFEST - There is a gap in the manifest.

    \n
  • \n
  • \n

    \n MISSING_DRM_KEY - Key rotation is enabled but we're unable to fetch the key for the current key period.

    \n
  • \n
  • \n

    \n SLATE_INPUT - The segments which contain slate content are considered to be missing content.

    \n
  • \n
", + "items": { + "$ref": "#/definitions/EndpointErrorCondition" + }, + "type": "array" + } + }, + "type": "object" + }, + "HlsManifestConfiguration": { + "additionalProperties": false, + "description": "

Retrieve the HTTP live streaming (HLS) manifest configuration.

", + "properties": { + "ChildManifestName": { + "description": "

A short string that's appended to the endpoint URL. The child manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default child manifest name, index_1. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.

", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "FilterConfiguration": { + "$ref": "#/definitions/FilterConfiguration" + }, + "ManifestName": { + "description": "

A short short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index. MediaPackage automatically inserts the format extension, such as .m3u8. You can't use the same manifest name if you use HLS manifest and low-latency HLS manifest. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.

", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ManifestWindowSeconds": { + "description": "

The total duration (in seconds) of the manifest's content.

", + "type": "integer" + }, + "ProgramDateTimeIntervalSeconds": { + "description": "

Inserts EXT-X-PROGRAM-DATE-TIME tags in the output manifest at the interval that you specify. If you don't enter an interval,\n EXT-X-PROGRAM-DATE-TIME tags aren't included in the manifest.\n The tags sync the stream to the wall clock so that viewers can seek to a specific time in the playback timeline on the player.

\n

Irrespective of this parameter, if any ID3Timed metadata is in the HLS input, it is passed through to the HLS output.

", + "type": "integer" + }, + "ScteHls": { + "$ref": "#/definitions/ScteHls" + }, + "StartTag": { + "$ref": "#/definitions/StartTag" + }, + "Url": { + "description": "

The egress domain URL for stream delivery from MediaPackage.

", + "type": "string" + }, + "UrlEncodeChildManifest": { + "description": "

When enabled, MediaPackage URL-encodes the query string for API requests for HLS child manifests to comply with Amazon Web Services Signature Version 4 (SigV4) signature signing protocol.\n For more information, see Amazon Web Services Signature Version 4 for API requests in Identity and Access Management User Guide.

", + "type": "boolean" + } + }, + "required": [ + "ManifestName" + ], + "type": "object" + }, + "LowLatencyHlsManifestConfiguration": { + "additionalProperties": false, + "description": "

Retrieve the low-latency HTTP live streaming (HLS) manifest configuration.

", + "properties": { + "ChildManifestName": { + "description": "

A short string that's appended to the endpoint URL. The child manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default child manifest name, index_1. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.

", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "FilterConfiguration": { + "$ref": "#/definitions/FilterConfiguration" + }, + "ManifestName": { + "description": "

A short short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index. MediaPackage automatically inserts the format extension, such as .m3u8. You can't use the same manifest name if you use HLS manifest and low-latency HLS manifest. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.

", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ManifestWindowSeconds": { + "description": "

The total duration (in seconds) of the manifest's content.

", + "type": "integer" + }, + "ProgramDateTimeIntervalSeconds": { + "description": "

Inserts EXT-X-PROGRAM-DATE-TIME tags in the output manifest at the interval that you specify. If you don't enter an interval,\n EXT-X-PROGRAM-DATE-TIME tags aren't included in the manifest.\n The tags sync the stream to the wall clock so that viewers can seek to a specific time in the playback timeline on the player.

\n

Irrespective of this parameter, if any ID3Timed metadata is in the HLS input, it is passed through to the HLS output.

", + "type": "integer" + }, + "ScteHls": { + "$ref": "#/definitions/ScteHls" + }, + "StartTag": { + "$ref": "#/definitions/StartTag" + }, + "Url": { + "description": "

The egress domain URL for stream delivery from MediaPackage.

", + "type": "string" + }, + "UrlEncodeChildManifest": { + "description": "

When enabled, MediaPackage URL-encodes the query string for API requests for LL-HLS child manifests to comply with Amazon Web Services Signature Version 4 (SigV4) signature signing protocol.\n For more information, see Amazon Web Services Signature Version 4 for API requests in Identity and Access Management User Guide.

", + "type": "boolean" + } + }, + "required": [ + "ManifestName" + ], + "type": "object" + }, + "PresetSpeke20Audio": { + "enum": [ + "PRESET_AUDIO_1", + "PRESET_AUDIO_2", + "PRESET_AUDIO_3", + "SHARED", + "UNENCRYPTED" + ], + "type": "string" + }, + "PresetSpeke20Video": { + "enum": [ + "PRESET_VIDEO_1", + "PRESET_VIDEO_2", + "PRESET_VIDEO_3", + "PRESET_VIDEO_4", + "PRESET_VIDEO_5", + "PRESET_VIDEO_6", + "PRESET_VIDEO_7", + "PRESET_VIDEO_8", + "SHARED", + "UNENCRYPTED" + ], + "type": "string" + }, + "Scte": { + "additionalProperties": false, + "description": "

The SCTE configuration.

", + "properties": { + "ScteFilter": { + "description": "

The SCTE-35 message types that you want to be treated as ad markers in the output.

", + "items": { + "$ref": "#/definitions/ScteFilter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ScteDash": { + "additionalProperties": false, + "description": "

The SCTE configuration.

", + "properties": { + "AdMarkerDash": { + "$ref": "#/definitions/AdMarkerDash" + } + }, + "type": "object" + }, + "ScteFilter": { + "enum": [ + "SPLICE_INSERT", + "BREAK", + "PROVIDER_ADVERTISEMENT", + "DISTRIBUTOR_ADVERTISEMENT", + "PROVIDER_PLACEMENT_OPPORTUNITY", + "DISTRIBUTOR_PLACEMENT_OPPORTUNITY", + "PROVIDER_OVERLAY_PLACEMENT_OPPORTUNITY", + "DISTRIBUTOR_OVERLAY_PLACEMENT_OPPORTUNITY", + "PROGRAM" + ], + "type": "string" + }, + "ScteHls": { + "additionalProperties": false, + "description": "

The SCTE configuration.

", + "properties": { + "AdMarkerHls": { + "$ref": "#/definitions/AdMarkerHls" + } + }, + "type": "object" + }, + "Segment": { + "additionalProperties": false, + "description": "

The segment configuration, including the segment name, duration, and other configuration values.

", + "properties": { + "Encryption": { + "$ref": "#/definitions/Encryption" + }, + "IncludeIframeOnlyStreams": { + "description": "

When selected, the stream set includes an additional I-frame only stream, along with the other tracks. If false, this extra stream is not included. MediaPackage generates an I-frame only stream from the first rendition in the manifest. The service inserts EXT-I-FRAMES-ONLY tags in the output manifest, and then generates and includes an I-frames only playlist in the stream. This playlist permits player functionality like fast forward and rewind.

", + "type": "boolean" + }, + "Scte": { + "$ref": "#/definitions/Scte" + }, + "SegmentDurationSeconds": { + "description": "

The duration (in seconds) of each segment. Enter a value equal to, or a multiple of, the input segment duration. If the value that you enter is different from the input segment duration, MediaPackage rounds segments to the nearest multiple of the input segment duration.

", + "maximum": 30, + "minimum": 1, + "type": "integer" + }, + "SegmentName": { + "description": "

The name that describes the segment. The name is the base name of the segment used in all content manifests inside of the endpoint. You can't use spaces in the name.

", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "TsIncludeDvbSubtitles": { + "description": "

By default, MediaPackage excludes all digital video broadcasting (DVB) subtitles from the output. When selected, MediaPackage passes through DVB subtitles into the output.

", + "type": "boolean" + }, + "TsUseAudioRenditionGroup": { + "description": "

When selected, MediaPackage bundles all audio tracks in a rendition group. All other tracks in the stream can be used with any audio rendition from the group.

", + "type": "boolean" + } + }, + "type": "object" + }, + "SpekeKeyProvider": { + "additionalProperties": false, + "description": "

The parameters for the SPEKE key provider.

", + "properties": { + "DrmSystems": { + "description": "

The DRM solution provider you're using to protect your content during distribution.

", + "items": { + "$ref": "#/definitions/DrmSystem" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "EncryptionContractConfiguration": { + "$ref": "#/definitions/EncryptionContractConfiguration" + }, + "ResourceId": { + "description": "

The unique identifier for the content. The service sends this to the key server to identify the current endpoint. How unique you make this depends on how fine-grained you want access controls to be. The service does not permit you to use the same ID for two simultaneous encryption processes. The resource ID is also known as the content ID.

\n

The following example shows a resource ID: MovieNight20171126093045\n

", + "maxLength": 256, + "minLength": 1, + "pattern": "^[0-9a-zA-Z_-]+$", + "type": "string" + }, + "RoleArn": { + "description": "

The ARN for the IAM role granted by the key provider that provides access to the key provider API. This role must have a trust policy that allows MediaPackage to assume the role, and it must have a sufficient permissions policy to allow access to the specific key retrieval URL. Get this from your DRM solution provider.

\n

Valid format: arn:aws:iam::{accountID}:role/{name}. The following example shows a role ARN: arn:aws:iam::444455556666:role/SpekeAccess\n

", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Url": { + "description": "

The URL of the API Gateway proxy that you set up to talk to your key server. The API Gateway proxy must reside in the same AWS Region as MediaPackage and must start with https://.

\n

The following example shows a URL: https://1wm2dx1f33.execute-api.us-west-2.amazonaws.com/SpekeSample/copyProtection\n

", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DrmSystems", + "EncryptionContractConfiguration", + "ResourceId", + "RoleArn", + "Url" + ], + "type": "object" + }, + "StartTag": { + "additionalProperties": false, + "description": "

To insert an EXT-X-START tag in your HLS playlist, specify a StartTag configuration object with a valid TimeOffset. When you do, you can also optionally specify whether to include a PRECISE value in the EXT-X-START tag.

", + "properties": { + "Precise": { + "description": "

Specify the value for PRECISE within your EXT-X-START tag. Leave blank, or choose false, to use the default value NO. Choose yes to use the value YES.

", + "type": "boolean" + }, + "TimeOffset": { + "description": "

Specify the value for TIME-OFFSET within your EXT-X-START tag. Enter a signed floating point value which, if positive, must be less than the configured manifest duration minus three times the configured segment target duration. If negative, the absolute value must be larger than three times the configured segment target duration, and the absolute value must be smaller than the configured manifest duration.

", + "type": "number" + } + }, + "required": [ + "TimeOffset" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "TsEncryptionMethod": { + "enum": [ + "AES_128", + "SAMPLE_AES" + ], + "type": "string" + } + }, + "description": "

Represents an origin endpoint that is associated with a channel, offering a dynamically repackaged version of its content through various streaming media protocols. The content can be efficiently disseminated to end-users via a Content Delivery Network (CDN), like Amazon CloudFront.

", + "handlers": { + "create": { + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:CreateOriginEndpoint", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "mediapackagev2:GetOriginEndpoint", + "mediapackagev2:DeleteOriginEndpoint" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ChannelGroupName": { + "$ref": "resource-schema.json#/properties/ChannelGroupName" + }, + "ChannelName": { + "$ref": "resource-schema.json#/properties/ChannelName" + } + }, + "required": [ + "ChannelGroupName", + "ChannelName" + ] + }, + "permissions": [ + "mediapackagev2:ListOriginEndpoints" + ] + }, + "read": { + "permissions": [ + "mediapackagev2:GetOriginEndpoint" + ] + }, + "update": { + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:UntagResource", + "mediapackagev2:ListTagsForResource", + "mediapackagev2:UpdateOriginEndpoint", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) associated with the resource.

", + "type": "string" + }, + "ChannelGroupName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ChannelName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ContainerType": { + "$ref": "#/definitions/ContainerType" + }, + "CreatedAt": { + "description": "

The date and time the origin endpoint was created.

", + "format": "date-time", + "type": "string" + }, + "DashManifestUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "DashManifests": { + "description": "

A DASH manifest configuration.

", + "items": { + "$ref": "#/definitions/DashManifestConfiguration" + }, + "type": "array" + }, + "Description": { + "description": "

Enter any descriptive text that helps you to identify the origin endpoint.

", + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "ForceEndpointErrorConfiguration": { + "$ref": "#/definitions/ForceEndpointErrorConfiguration" + }, + "HlsManifestUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "HlsManifests": { + "description": "

An HTTP live streaming (HLS) manifest configuration.

", + "items": { + "$ref": "#/definitions/HlsManifestConfiguration" + }, + "type": "array" + }, + "LowLatencyHlsManifestUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "LowLatencyHlsManifests": { + "description": "

A low-latency HLS manifest configuration.

", + "items": { + "$ref": "#/definitions/LowLatencyHlsManifestConfiguration" + }, + "type": "array" + }, + "ModifiedAt": { + "description": "

The date and time the origin endpoint was modified.

", + "format": "date-time", + "type": "string" + }, + "OriginEndpointName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "Segment": { + "$ref": "#/definitions/Segment" + }, + "StartoverWindowSeconds": { + "description": "

The size of the window (in seconds) to create a window of the live stream that's available for on-demand viewing. Viewers can start-over or catch-up on content that falls within the window. The maximum startover window is 1,209,600 seconds (14 days).

", + "maximum": 1209600, + "minimum": 60, + "type": "integer" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/DashManifestUrls", + "/properties/HlsManifestUrls", + "/properties/LowLatencyHlsManifestUrls", + "/properties/ModifiedAt", + "/properties/LowLatencyHlsManifests/*/Url", + "/properties/HlsManifests/*/Url" + ], + "required": [ + "ChannelGroupName", + "ChannelName", + "OriginEndpointName", + "ContainerType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackagev2", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "mediapackagev2:TagResource", + "mediapackagev2:UntagResource", + "mediapackagev2:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaPackageV2::OriginEndpoint" +} diff --git a/src/schema/aws-mediapackagev2-originendpointpolicy.json b/src/schema/aws-mediapackagev2-originendpointpolicy.json index c88cbd71..decdfb39 100644 --- a/src/schema/aws-mediapackagev2-originendpointpolicy.json +++ b/src/schema/aws-mediapackagev2-originendpointpolicy.json @@ -1,79 +1,79 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ChannelGroupName", - "/properties/ChannelName", - "/properties/OriginEndpointName" - ], - "description": "

Represents a resource policy that allows or denies access to an origin endpoint.

", - "handlers": { - "create": { - "permissions": [ - "mediapackagev2:GetOriginEndpointPolicy", - "mediapackagev2:PutOriginEndpointPolicy" - ] - }, - "delete": { - "permissions": [ - "mediapackagev2:GetOriginEndpointPolicy", - "mediapackagev2:DeleteOriginEndpointPolicy" - ] - }, - "read": { - "permissions": [ - "mediapackagev2:GetOriginEndpointPolicy" - ] - }, - "update": { - "permissions": [ - "mediapackagev2:GetOriginEndpointPolicy", - "mediapackagev2:PutOriginEndpointPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/ChannelGroupName", - "/properties/ChannelName", - "/properties/OriginEndpointName" - ], - "properties": { - "ChannelGroupName": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "ChannelName": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "OriginEndpointName": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "Policy": { - "type": [ - "object", - "string" - ] - } - }, - "required": [ - "ChannelGroupName", - "ChannelName", - "OriginEndpointName", - "Policy" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackagev2", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::MediaPackageV2::OriginEndpointPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ChannelGroupName", + "/properties/ChannelName", + "/properties/OriginEndpointName" + ], + "description": "

Represents a resource policy that allows or denies access to an origin endpoint.

", + "handlers": { + "create": { + "permissions": [ + "mediapackagev2:GetOriginEndpointPolicy", + "mediapackagev2:PutOriginEndpointPolicy" + ] + }, + "delete": { + "permissions": [ + "mediapackagev2:GetOriginEndpointPolicy", + "mediapackagev2:DeleteOriginEndpointPolicy" + ] + }, + "read": { + "permissions": [ + "mediapackagev2:GetOriginEndpointPolicy" + ] + }, + "update": { + "permissions": [ + "mediapackagev2:GetOriginEndpointPolicy", + "mediapackagev2:PutOriginEndpointPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/ChannelGroupName", + "/properties/ChannelName", + "/properties/OriginEndpointName" + ], + "properties": { + "ChannelGroupName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "ChannelName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "OriginEndpointName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "Policy": { + "type": [ + "object", + "string" + ] + } + }, + "required": [ + "ChannelGroupName", + "ChannelName", + "OriginEndpointName", + "Policy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackagev2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::MediaPackageV2::OriginEndpointPolicy" +} diff --git a/src/schema/aws-mediastore-container.json b/src/schema/aws-mediastore-container.json index 5b6ffb2f..5c964da1 100644 --- a/src/schema/aws-mediastore-container.json +++ b/src/schema/aws-mediastore-container.json @@ -1,145 +1,145 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ContainerName" - ], - "definitions": { - "CorsRule": { - "additionalProperties": false, - "properties": { - "AllowedHeaders": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AllowedMethods": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AllowedOrigins": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ExposeHeaders": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "MaxAgeSeconds": { - "type": "integer" - } - }, - "type": "object" - }, - "MetricPolicy": { - "additionalProperties": false, - "properties": { - "ContainerLevelMetrics": { - "type": "string" - }, - "MetricPolicyRules": { - "items": { - "$ref": "#/definitions/MetricPolicyRule" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "ContainerLevelMetrics" - ], - "type": "object" - }, - "MetricPolicyRule": { - "additionalProperties": false, - "properties": { - "ObjectGroup": { - "type": "string" - }, - "ObjectGroupName": { - "type": "string" - } - }, - "required": [ - "ObjectGroup", - "ObjectGroupName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::MediaStore::Container", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AccessLoggingEnabled": { - "type": "boolean" - }, - "ContainerName": { - "type": "string" - }, - "CorsPolicy": { - "items": { - "$ref": "#/definitions/CorsRule" - }, - "type": "array", - "uniqueItems": false - }, - "Endpoint": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "LifecyclePolicy": { - "type": "string" - }, - "MetricPolicy": { - "$ref": "#/definitions/MetricPolicy" - }, - "Policy": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Endpoint" - ], - "required": [ - "ContainerName" - ], - "typeName": "AWS::MediaStore::Container" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ContainerName" + ], + "definitions": { + "CorsRule": { + "additionalProperties": false, + "properties": { + "AllowedHeaders": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AllowedMethods": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AllowedOrigins": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ExposeHeaders": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MaxAgeSeconds": { + "type": "integer" + } + }, + "type": "object" + }, + "MetricPolicy": { + "additionalProperties": false, + "properties": { + "ContainerLevelMetrics": { + "type": "string" + }, + "MetricPolicyRules": { + "items": { + "$ref": "#/definitions/MetricPolicyRule" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ContainerLevelMetrics" + ], + "type": "object" + }, + "MetricPolicyRule": { + "additionalProperties": false, + "properties": { + "ObjectGroup": { + "type": "string" + }, + "ObjectGroupName": { + "type": "string" + } + }, + "required": [ + "ObjectGroup", + "ObjectGroupName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MediaStore::Container", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AccessLoggingEnabled": { + "type": "boolean" + }, + "ContainerName": { + "type": "string" + }, + "CorsPolicy": { + "items": { + "$ref": "#/definitions/CorsRule" + }, + "type": "array", + "uniqueItems": false + }, + "Endpoint": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "LifecyclePolicy": { + "type": "string" + }, + "MetricPolicy": { + "$ref": "#/definitions/MetricPolicy" + }, + "Policy": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Endpoint" + ], + "required": [ + "ContainerName" + ], + "typeName": "AWS::MediaStore::Container" +} diff --git a/src/schema/aws-mediatailor-channel.json b/src/schema/aws-mediatailor-channel.json index 1715263a..f679fa2e 100644 --- a/src/schema/aws-mediatailor-channel.json +++ b/src/schema/aws-mediatailor-channel.json @@ -1,271 +1,271 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ChannelName", - "/properties/Tier" - ], - "definitions": { - "AdMarkupType": { - "enum": [ - "DATERANGE", - "SCTE35_ENHANCED" - ], - "type": "string" - }, - "DashPlaylistSettings": { - "additionalProperties": false, - "description": "

Dash manifest configuration parameters.

", - "properties": { - "ManifestWindowSeconds": { - "description": "

The total duration (in seconds) of each manifest. Minimum value: 30 seconds. Maximum value: 3600 seconds.

", - "type": "number" - }, - "MinBufferTimeSeconds": { - "description": "

Minimum amount of content (measured in seconds) that a player must keep available in the buffer. Minimum value: 2 seconds. Maximum value: 60 seconds.

", - "type": "number" - }, - "MinUpdatePeriodSeconds": { - "description": "

Minimum amount of time (in seconds) that the player should wait before requesting updates to the manifest. Minimum value: 2 seconds. Maximum value: 60 seconds.

", - "type": "number" - }, - "SuggestedPresentationDelaySeconds": { - "description": "

Amount of time (in seconds) that the player should be from the live point at the end of the manifest. Minimum value: 2 seconds. Maximum value: 60 seconds.

", - "type": "number" - } - }, - "type": "object" - }, - "HlsPlaylistSettings": { - "additionalProperties": false, - "description": "

HLS playlist configuration parameters.

", - "properties": { - "AdMarkupType": { - "description": "

Determines the type of SCTE 35 tags to use in ad markup. Specify DATERANGE to use DATERANGE tags (for live or VOD content). Specify SCTE35_ENHANCED to use EXT-X-CUE-OUT and EXT-X-CUE-IN tags (for VOD content only).

", - "items": { - "$ref": "#/definitions/AdMarkupType" - }, - "type": "array" - }, - "ManifestWindowSeconds": { - "description": "

The total duration (in seconds) of each manifest. Minimum value: 30 seconds. Maximum value: 3600 seconds.

", - "type": "number" - } - }, - "type": "object" - }, - "LogConfigurationForChannel": { - "additionalProperties": false, - "description": "

The log configuration for the channel.

", - "properties": { - "LogTypes": { - "description": "

The log types.

", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LogType" - }, - "type": "array" - } - }, - "type": "object" - }, - "LogType": { - "enum": [ - "AS_RUN" - ], - "type": "string" - }, - "PlaybackMode": { - "enum": [ - "LOOP", - "LINEAR" - ], - "type": "string" - }, - "RequestOutputItem": { - "additionalProperties": false, - "description": "

The output configuration for this channel.

", - "properties": { - "DashPlaylistSettings": { - "$ref": "#/definitions/DashPlaylistSettings" - }, - "HlsPlaylistSettings": { - "$ref": "#/definitions/HlsPlaylistSettings" - }, - "ManifestName": { - "description": "

The name of the manifest for the channel. The name appears in the PlaybackUrl.

", - "type": "string" - }, - "SourceGroup": { - "description": "

A string used to match which HttpPackageConfiguration is used for each VodSource.

", - "type": "string" - } - }, - "required": [ - "ManifestName", - "SourceGroup" - ], - "type": "object" - }, - "SlateSource": { - "additionalProperties": false, - "description": "

Slate VOD source configuration.

", - "properties": { - "SourceLocationName": { - "description": "

The name of the source location where the slate VOD source is stored.

", - "type": "string" - }, - "VodSourceName": { - "description": "

The slate VOD source name. The VOD source must already exist in a source location before it can be used for slate.

", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Tier": { - "enum": [ - "BASIC", - "STANDARD" - ], - "type": "string" - }, - "TimeShiftConfiguration": { - "additionalProperties": false, - "description": "

The configuration for time-shifted viewing.

", - "properties": { - "MaxTimeDelaySeconds": { - "description": "

The maximum time delay for time-shifted viewing. The minimum allowed maximum time delay is 0 seconds, and the maximum allowed maximum time delay is 21600 seconds (6 hours).

", - "type": "number" - } - }, - "required": [ - "MaxTimeDelaySeconds" - ], - "type": "object" - } - }, - "description": "Definition of AWS::MediaTailor::Channel Resource Type", - "handlers": { - "create": { - "permissions": [ - "mediatailor:CreateChannel", - "mediatailor:TagResource", - "mediatailor:ConfigureLogsForChannel", - "iam:CreateServiceLinkedRole", - "mediatailor:DescribeChannel" - ] - }, - "delete": { - "permissions": [ - "mediatailor:DeleteChannel", - "mediatailor:DescribeChannel" - ] - }, - "list": { - "permissions": [ - "mediatailor:ListChannels" - ] - }, - "read": { - "permissions": [ - "mediatailor:DescribeChannel" - ] - }, - "update": { - "permissions": [ - "mediatailor:UpdateChannel", - "mediatailor:TagResource", - "mediatailor:UntagResource", - "iam:CreateServiceLinkedRole", - "mediatailor:ConfigureLogsForChannel", - "mediatailor:DescribeChannel" - ] - } - }, - "primaryIdentifier": [ - "/properties/ChannelName" - ], - "properties": { - "Arn": { - "description": "

The ARN of the channel.

", - "type": "string" - }, - "Audiences": { - "description": "

The list of audiences defined in channel.

", - "items": { - "type": "string" - }, - "type": "array" - }, - "ChannelName": { - "type": "string" - }, - "FillerSlate": { - "$ref": "#/definitions/SlateSource" - }, - "LogConfiguration": { - "$ref": "#/definitions/LogConfigurationForChannel" - }, - "Outputs": { - "description": "

The channel's output properties.

", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RequestOutputItem" - }, - "type": "array" - }, - "PlaybackMode": { - "$ref": "#/definitions/PlaybackMode" - }, - "Tags": { - "description": "The tags to assign to the channel.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Tier": { - "$ref": "#/definitions/Tier" - }, - "TimeShiftConfiguration": { - "$ref": "#/definitions/TimeShiftConfiguration" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "ChannelName", - "Outputs", - "PlaybackMode" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediatailor.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MediaTailor::Channel", - "writeOnlyProperties": [ - "/properties/Outputs" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ChannelName", + "/properties/Tier" + ], + "definitions": { + "AdMarkupType": { + "enum": [ + "DATERANGE", + "SCTE35_ENHANCED" + ], + "type": "string" + }, + "DashPlaylistSettings": { + "additionalProperties": false, + "description": "

Dash manifest configuration parameters.

", + "properties": { + "ManifestWindowSeconds": { + "description": "

The total duration (in seconds) of each manifest. Minimum value: 30 seconds. Maximum value: 3600 seconds.

", + "type": "number" + }, + "MinBufferTimeSeconds": { + "description": "

Minimum amount of content (measured in seconds) that a player must keep available in the buffer. Minimum value: 2 seconds. Maximum value: 60 seconds.

", + "type": "number" + }, + "MinUpdatePeriodSeconds": { + "description": "

Minimum amount of time (in seconds) that the player should wait before requesting updates to the manifest. Minimum value: 2 seconds. Maximum value: 60 seconds.

", + "type": "number" + }, + "SuggestedPresentationDelaySeconds": { + "description": "

Amount of time (in seconds) that the player should be from the live point at the end of the manifest. Minimum value: 2 seconds. Maximum value: 60 seconds.

", + "type": "number" + } + }, + "type": "object" + }, + "HlsPlaylistSettings": { + "additionalProperties": false, + "description": "

HLS playlist configuration parameters.

", + "properties": { + "AdMarkupType": { + "description": "

Determines the type of SCTE 35 tags to use in ad markup. Specify DATERANGE to use DATERANGE tags (for live or VOD content). Specify SCTE35_ENHANCED to use EXT-X-CUE-OUT and EXT-X-CUE-IN tags (for VOD content only).

", + "items": { + "$ref": "#/definitions/AdMarkupType" + }, + "type": "array" + }, + "ManifestWindowSeconds": { + "description": "

The total duration (in seconds) of each manifest. Minimum value: 30 seconds. Maximum value: 3600 seconds.

", + "type": "number" + } + }, + "type": "object" + }, + "LogConfigurationForChannel": { + "additionalProperties": false, + "description": "

The log configuration for the channel.

", + "properties": { + "LogTypes": { + "description": "

The log types.

", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LogType" + }, + "type": "array" + } + }, + "type": "object" + }, + "LogType": { + "enum": [ + "AS_RUN" + ], + "type": "string" + }, + "PlaybackMode": { + "enum": [ + "LOOP", + "LINEAR" + ], + "type": "string" + }, + "RequestOutputItem": { + "additionalProperties": false, + "description": "

The output configuration for this channel.

", + "properties": { + "DashPlaylistSettings": { + "$ref": "#/definitions/DashPlaylistSettings" + }, + "HlsPlaylistSettings": { + "$ref": "#/definitions/HlsPlaylistSettings" + }, + "ManifestName": { + "description": "

The name of the manifest for the channel. The name appears in the PlaybackUrl.

", + "type": "string" + }, + "SourceGroup": { + "description": "

A string used to match which HttpPackageConfiguration is used for each VodSource.

", + "type": "string" + } + }, + "required": [ + "ManifestName", + "SourceGroup" + ], + "type": "object" + }, + "SlateSource": { + "additionalProperties": false, + "description": "

Slate VOD source configuration.

", + "properties": { + "SourceLocationName": { + "description": "

The name of the source location where the slate VOD source is stored.

", + "type": "string" + }, + "VodSourceName": { + "description": "

The slate VOD source name. The VOD source must already exist in a source location before it can be used for slate.

", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "Tier": { + "enum": [ + "BASIC", + "STANDARD" + ], + "type": "string" + }, + "TimeShiftConfiguration": { + "additionalProperties": false, + "description": "

The configuration for time-shifted viewing.

", + "properties": { + "MaxTimeDelaySeconds": { + "description": "

The maximum time delay for time-shifted viewing. The minimum allowed maximum time delay is 0 seconds, and the maximum allowed maximum time delay is 21600 seconds (6 hours).

", + "type": "number" + } + }, + "required": [ + "MaxTimeDelaySeconds" + ], + "type": "object" + } + }, + "description": "Definition of AWS::MediaTailor::Channel Resource Type", + "handlers": { + "create": { + "permissions": [ + "mediatailor:CreateChannel", + "mediatailor:TagResource", + "mediatailor:ConfigureLogsForChannel", + "iam:CreateServiceLinkedRole", + "mediatailor:DescribeChannel" + ] + }, + "delete": { + "permissions": [ + "mediatailor:DeleteChannel", + "mediatailor:DescribeChannel" + ] + }, + "list": { + "permissions": [ + "mediatailor:ListChannels" + ] + }, + "read": { + "permissions": [ + "mediatailor:DescribeChannel" + ] + }, + "update": { + "permissions": [ + "mediatailor:UpdateChannel", + "mediatailor:TagResource", + "mediatailor:UntagResource", + "iam:CreateServiceLinkedRole", + "mediatailor:ConfigureLogsForChannel", + "mediatailor:DescribeChannel" + ] + } + }, + "primaryIdentifier": [ + "/properties/ChannelName" + ], + "properties": { + "Arn": { + "description": "

The ARN of the channel.

", + "type": "string" + }, + "Audiences": { + "description": "

The list of audiences defined in channel.

", + "items": { + "type": "string" + }, + "type": "array" + }, + "ChannelName": { + "type": "string" + }, + "FillerSlate": { + "$ref": "#/definitions/SlateSource" + }, + "LogConfiguration": { + "$ref": "#/definitions/LogConfigurationForChannel" + }, + "Outputs": { + "description": "

The channel's output properties.

", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RequestOutputItem" + }, + "type": "array" + }, + "PlaybackMode": { + "$ref": "#/definitions/PlaybackMode" + }, + "Tags": { + "description": "The tags to assign to the channel.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Tier": { + "$ref": "#/definitions/Tier" + }, + "TimeShiftConfiguration": { + "$ref": "#/definitions/TimeShiftConfiguration" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "ChannelName", + "Outputs", + "PlaybackMode" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediatailor.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaTailor::Channel", + "writeOnlyProperties": [ + "/properties/Outputs" + ] +} diff --git a/src/schema/aws-mediatailor-channelpolicy.json b/src/schema/aws-mediatailor-channelpolicy.json index 2ff225df..a596c184 100644 --- a/src/schema/aws-mediatailor-channelpolicy.json +++ b/src/schema/aws-mediatailor-channelpolicy.json @@ -1,58 +1,58 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ChannelName" - ], - "description": "Definition of AWS::MediaTailor::ChannelPolicy Resource Type", - "handlers": { - "create": { - "permissions": [ - "mediatailor:PutChannelPolicy", - "mediatailor:GetChannelPolicy" - ] - }, - "delete": { - "permissions": [ - "mediatailor:DeleteChannelPolicy", - "mediatailor:GetChannelPolicy" - ] - }, - "read": { - "permissions": [ - "mediatailor:GetChannelPolicy" - ] - }, - "update": { - "permissions": [ - "mediatailor:PutChannelPolicy", - "mediatailor:GetChannelPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/ChannelName" - ], - "properties": { - "ChannelName": { - "type": "string" - }, - "Policy": { - "description": "

The IAM policy for the channel. IAM policies are used to control access to your channel.

", - "type": [ - "object", - "string" - ] - } - }, - "required": [ - "ChannelName", - "Policy" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::MediaTailor::ChannelPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ChannelName" + ], + "description": "Definition of AWS::MediaTailor::ChannelPolicy Resource Type", + "handlers": { + "create": { + "permissions": [ + "mediatailor:PutChannelPolicy", + "mediatailor:GetChannelPolicy" + ] + }, + "delete": { + "permissions": [ + "mediatailor:DeleteChannelPolicy", + "mediatailor:GetChannelPolicy" + ] + }, + "read": { + "permissions": [ + "mediatailor:GetChannelPolicy" + ] + }, + "update": { + "permissions": [ + "mediatailor:PutChannelPolicy", + "mediatailor:GetChannelPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/ChannelName" + ], + "properties": { + "ChannelName": { + "type": "string" + }, + "Policy": { + "description": "

The IAM policy for the channel. IAM policies are used to control access to your channel.

", + "type": [ + "object", + "string" + ] + } + }, + "required": [ + "ChannelName", + "Policy" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::MediaTailor::ChannelPolicy" +} diff --git a/src/schema/aws-mediatailor-livesource.json b/src/schema/aws-mediatailor-livesource.json index 1353226c..0a615dc5 100644 --- a/src/schema/aws-mediatailor-livesource.json +++ b/src/schema/aws-mediatailor-livesource.json @@ -1,148 +1,148 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LiveSourceName", - "/properties/SourceLocationName" - ], - "definitions": { - "HttpPackageConfiguration": { - "additionalProperties": false, - "description": "

The HTTP package configuration properties for the requested VOD source.

", - "properties": { - "Path": { - "description": "

The relative path to the URL for this VOD source. This is combined with SourceLocation::HttpConfiguration::BaseUrl to form a valid URL.

", - "type": "string" - }, - "SourceGroup": { - "description": "

The name of the source group. This has to match one of the Channel::Outputs::SourceGroup.

", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/Type" - } - }, - "required": [ - "Path", - "SourceGroup", - "Type" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Type": { - "enum": [ - "DASH", - "HLS" - ], - "type": "string" - } - }, - "description": "Definition of AWS::MediaTailor::LiveSource Resource Type", - "handlers": { - "create": { - "permissions": [ - "mediatailor:CreateLiveSource", - "mediatailor:DescribeLiveSource", - "mediatailor:TagResource" - ] - }, - "delete": { - "permissions": [ - "mediatailor:DeleteLiveSource", - "mediatailor:DescribeLiveSource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "SourceLocationName": { - "$ref": "resource-schema.json#/properties/SourceLocationName" - } - }, - "required": [ - "SourceLocationName" - ] - }, - "permissions": [ - "mediatailor:ListLiveSources" - ] - }, - "read": { - "permissions": [ - "mediatailor:DescribeLiveSource" - ] - }, - "update": { - "permissions": [ - "mediatailor:UpdateLiveSource", - "mediatailor:DescribeLiveSource", - "mediatailor:TagResource", - "mediatailor:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/LiveSourceName", - "/properties/SourceLocationName" - ], - "properties": { - "Arn": { - "description": "

The ARN of the live source.

", - "type": "string" - }, - "HttpPackageConfigurations": { - "description": "

A list of HTTP package configuration parameters for this live source.

", - "items": { - "$ref": "#/definitions/HttpPackageConfiguration" - }, - "type": "array" - }, - "LiveSourceName": { - "type": "string" - }, - "SourceLocationName": { - "type": "string" - }, - "Tags": { - "description": "The tags to assign to the live source.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "HttpPackageConfigurations", - "LiveSourceName", - "SourceLocationName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediatailor", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MediaTailor::LiveSource" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LiveSourceName", + "/properties/SourceLocationName" + ], + "definitions": { + "HttpPackageConfiguration": { + "additionalProperties": false, + "description": "

The HTTP package configuration properties for the requested VOD source.

", + "properties": { + "Path": { + "description": "

The relative path to the URL for this VOD source. This is combined with SourceLocation::HttpConfiguration::BaseUrl to form a valid URL.

", + "type": "string" + }, + "SourceGroup": { + "description": "

The name of the source group. This has to match one of the Channel::Outputs::SourceGroup.

", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/Type" + } + }, + "required": [ + "Path", + "SourceGroup", + "Type" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "Type": { + "enum": [ + "DASH", + "HLS" + ], + "type": "string" + } + }, + "description": "Definition of AWS::MediaTailor::LiveSource Resource Type", + "handlers": { + "create": { + "permissions": [ + "mediatailor:CreateLiveSource", + "mediatailor:DescribeLiveSource", + "mediatailor:TagResource" + ] + }, + "delete": { + "permissions": [ + "mediatailor:DeleteLiveSource", + "mediatailor:DescribeLiveSource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "SourceLocationName": { + "$ref": "resource-schema.json#/properties/SourceLocationName" + } + }, + "required": [ + "SourceLocationName" + ] + }, + "permissions": [ + "mediatailor:ListLiveSources" + ] + }, + "read": { + "permissions": [ + "mediatailor:DescribeLiveSource" + ] + }, + "update": { + "permissions": [ + "mediatailor:UpdateLiveSource", + "mediatailor:DescribeLiveSource", + "mediatailor:TagResource", + "mediatailor:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/LiveSourceName", + "/properties/SourceLocationName" + ], + "properties": { + "Arn": { + "description": "

The ARN of the live source.

", + "type": "string" + }, + "HttpPackageConfigurations": { + "description": "

A list of HTTP package configuration parameters for this live source.

", + "items": { + "$ref": "#/definitions/HttpPackageConfiguration" + }, + "type": "array" + }, + "LiveSourceName": { + "type": "string" + }, + "SourceLocationName": { + "type": "string" + }, + "Tags": { + "description": "The tags to assign to the live source.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "HttpPackageConfigurations", + "LiveSourceName", + "SourceLocationName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediatailor", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaTailor::LiveSource" +} diff --git a/src/schema/aws-mediatailor-playbackconfiguration.json b/src/schema/aws-mediatailor-playbackconfiguration.json index 68d3a6e1..09a39456 100644 --- a/src/schema/aws-mediatailor-playbackconfiguration.json +++ b/src/schema/aws-mediatailor-playbackconfiguration.json @@ -1,300 +1,300 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "AdMarkerPassthrough": { - "additionalProperties": false, - "description": "For HLS, when set to true, MediaTailor passes through EXT-X-CUE-IN, EXT-X-CUE-OUT, and EXT-X-SPLICEPOINT-SCTE35 ad markers from the origin manifest to the MediaTailor personalized manifest. No logic is applied to these ad markers. For example, if EXT-X-CUE-OUT has a value of 60, but no ads are filled for that ad break, MediaTailor will not set the value to 0.", - "properties": { - "Enabled": { - "description": "Enables ad marker passthrough for your configuration.", - "type": "boolean" - } - }, - "type": "object" - }, - "AvailSuppression": { - "additionalProperties": false, - "description": "The configuration for avail suppression, also known as ad suppression. For more information about ad suppression, see Ad Suppression (https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html).", - "properties": { - "FillPolicy": { - "description": "Defines the policy to apply to the avail suppression mode. BEHIND_LIVE_EDGE will always use the full avail suppression policy. AFTER_LIVE_EDGE mode can be used to invoke partial ad break fills when a session starts mid-break. Valid values are FULL_AVAIL_ONLY and PARTIAL_AVAIL", - "enum": [ - "PARTIAL_AVAIL", - "FULL_AVAIL_ONLY" - ], - "type": "string" - }, - "Mode": { - "description": "Sets the ad suppression mode. By default, ad suppression is off and all ad breaks are filled with ads or slate. When Mode is set to BEHIND_LIVE_EDGE, ad suppression is active and MediaTailor won't fill ad breaks on or behind the ad suppression Value time in the manifest lookback window. When Mode is set to AFTER_LIVE_EDGE, ad suppression is active and MediaTailor won't fill ad breaks that are within the live edge plus the avail suppression value.", - "enum": [ - "OFF", - "BEHIND_LIVE_EDGE", - "AFTER_LIVE_EDGE" - ], - "type": "string" - }, - "Value": { - "description": "A live edge offset time in HH:MM:SS. MediaTailor won't fill ad breaks on or behind this time in the manifest lookback window. If Value is set to 00:00:00, it is in sync with the live edge, and MediaTailor won't fill any ad breaks on or behind the live edge. If you set a Value time, MediaTailor won't fill any ad breaks on or behind this time in the manifest lookback window. For example, if you set 00:45:00, then MediaTailor will fill ad breaks that occur within 45 minutes behind the live edge, but won't fill ad breaks on or behind 45 minutes behind the live edge.", - "type": "string" - } - }, - "type": "object" - }, - "Bumper": { - "additionalProperties": false, - "description": "The configuration for bumpers. Bumpers are short audio or video clips that play at the start or before the end of an ad break. To learn more about bumpers, see Bumpers (https://docs.aws.amazon.com/mediatailor/latest/ug/bumpers.html).", - "properties": { - "EndUrl": { - "description": "The URL for the end bumper asset.", - "type": "string" - }, - "StartUrl": { - "description": "The URL for the start bumper asset.", - "type": "string" - } - }, - "type": "object" - }, - "CdnConfiguration": { - "additionalProperties": false, - "description": "The configuration for using a content delivery network (CDN), like Amazon CloudFront, for content and ad segment management.", - "properties": { - "AdSegmentUrlPrefix": { - "description": "A non-default content delivery network (CDN) to serve ad segments. By default, AWS Elemental MediaTailor uses Amazon CloudFront with default cache settings as its CDN for ad segments. To set up an alternate CDN, create a rule in your CDN for the origin ads.mediatailor.<region>.amazonaws.com. Then specify the rule's name in this AdSegmentUrlPrefix. When AWS Elemental MediaTailor serves a manifest, it reports your CDN as the source for ad segments.", - "type": "string" - }, - "ContentSegmentUrlPrefix": { - "description": "A content delivery network (CDN) to cache content segments, so that content requests don't always have to go to the origin server. First, create a rule in your CDN for the content segment origin server. Then specify the rule's name in this ContentSegmentUrlPrefix. When AWS Elemental MediaTailor serves a manifest, it reports your CDN as the source for content segments.", - "type": "string" - } - }, - "type": "object" - }, - "ConfigurationAliases": { - "additionalProperties": false, - "description": "The predefined aliases for dynamic variables.", - "patternProperties": { - "player_params\\.\\w+\\Z": { - "type": "object" - } - } - }, - "DashConfiguration": { - "additionalProperties": false, - "description": "The configuration for DASH PUT operations.", - "properties": { - "ManifestEndpointPrefix": { - "description": "The URL generated by MediaTailor to initiate a DASH playback session. The session uses server-side reporting.", - "type": "string" - }, - "MpdLocation": { - "description": "The setting that controls whether MediaTailor includes the Location tag in DASH manifests. MediaTailor populates the Location tag with the URL for manifest update requests, to be used by players that don't support sticky redirects. Disable this if you have CDN routing rules set up for accessing MediaTailor manifests, and you are either using client-side reporting or your players support sticky HTTP redirects. Valid values are DISABLED and EMT_DEFAULT. The EMT_DEFAULT setting enables the inclusion of the tag and is the default value.", - "type": "string" - }, - "OriginManifestType": { - "description": "The setting that controls whether MediaTailor handles manifests from the origin server as multi-period manifests or single-period manifests. If your origin server produces single-period manifests, set this to SINGLE_PERIOD. The default setting is MULTI_PERIOD. For multi-period manifests, omit this setting or set it to MULTI_PERIOD.", - "enum": [ - "SINGLE_PERIOD", - "MULTI_PERIOD" - ], - "type": "string" - } - }, - "type": "object" - }, - "HlsConfiguration": { - "additionalProperties": false, - "properties": { - "ManifestEndpointPrefix": { - "description": "The URL that is used to initiate a playback session for devices that support Apple HLS. The session uses server-side reporting.", - "type": "string" - } - }, - "type": "object" - }, - "LivePreRollConfiguration": { - "additionalProperties": false, - "description": "The configuration for pre-roll ad insertion.", - "properties": { - "AdDecisionServerUrl": { - "description": "The URL for the ad decision server (ADS) for pre-roll ads. This includes the specification of static parameters and placeholders for dynamic parameters. AWS Elemental MediaTailor substitutes player-specific and session-specific parameters as needed when calling the ADS. Alternately, for testing, you can provide a static VAST URL. The maximum length is 25,000 characters.", - "type": "string" - }, - "MaxDurationSeconds": { - "description": "The maximum allowed duration for the pre-roll ad avail. AWS Elemental MediaTailor won't play pre-roll ads to exceed this duration, regardless of the total duration of ads that the ADS returns.", - "type": "integer" - } - }, - "type": "object" - }, - "ManifestProcessingRules": { - "additionalProperties": false, - "description": "The configuration for manifest processing rules. Manifest processing rules enable customization of the personalized manifests created by MediaTailor.", - "properties": { - "AdMarkerPassthrough": { - "$ref": "#/definitions/AdMarkerPassthrough", - "description": "For HLS, when set to true, MediaTailor passes through EXT-X-CUE-IN, EXT-X-CUE-OUT, and EXT-X-SPLICEPOINT-SCTE35 ad markers from the origin manifest to the MediaTailor personalized manifest. No logic is applied to these ad markers. For example, if EXT-X-CUE-OUT has a value of 60, but no ads are filled for that ad break, MediaTailor will not set the value to 0." - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::MediaTailor::PlaybackConfiguration", - "handlers": { - "create": { - "permissions": [ - "mediatailor:PutPlaybackConfiguration", - "mediatailor:ConfigureLogsForPlaybackConfiguration", - "iam:CreateServiceLinkedRole", - "mediatailor:UntagResource", - "mediatailor:TagResource" - ] - }, - "delete": { - "permissions": [ - "mediatailor:DeletePlaybackConfiguration" - ] - }, - "list": { - "permissions": [ - "mediatailor:ListPlaybackConfigurations" - ] - }, - "read": { - "permissions": [ - "mediatailor:GetPlaybackConfiguration" - ] - }, - "update": { - "permissions": [ - "mediatailor:PutPlaybackConfiguration", - "mediatailor:ConfigureLogsForPlaybackConfiguration", - "iam:CreateServiceLinkedRole", - "mediatailor:UntagResource", - "mediatailor:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "AdDecisionServerUrl": { - "description": "The URL for the ad decision server (ADS). This includes the specification of static parameters and placeholders for dynamic parameters. AWS Elemental MediaTailor substitutes player-specific and session-specific parameters as needed when calling the ADS. Alternately, for testing you can provide a static VAST URL. The maximum length is 25,000 characters.", - "type": "string" - }, - "AvailSuppression": { - "$ref": "#/definitions/AvailSuppression", - "description": "The configuration for avail suppression, also known as ad suppression. For more information about ad suppression, see Ad Suppression (https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html)." - }, - "Bumper": { - "$ref": "#/definitions/Bumper", - "description": "The configuration for bumpers. Bumpers are short audio or video clips that play at the start or before the end of an ad break. To learn more about bumpers, see Bumpers (https://docs.aws.amazon.com/mediatailor/latest/ug/bumpers.html)." - }, - "CdnConfiguration": { - "$ref": "#/definitions/CdnConfiguration", - "description": "The configuration for using a content delivery network (CDN), like Amazon CloudFront, for content and ad segment management." - }, - "ConfigurationAliases": { - "$ref": "#/definitions/ConfigurationAliases", - "description": "The player parameters and aliases used as dynamic variables during session initialization. For more information, see Domain Variables. " - }, - "DashConfiguration": { - "$ref": "#/definitions/DashConfiguration", - "description": "The configuration for DASH content." - }, - "HlsConfiguration": { - "$ref": "#/definitions/HlsConfiguration", - "description": "The configuration for HLS content." - }, - "LivePreRollConfiguration": { - "$ref": "#/definitions/LivePreRollConfiguration", - "description": "The configuration for pre-roll ad insertion." - }, - "ManifestProcessingRules": { - "$ref": "#/definitions/ManifestProcessingRules", - "description": "The configuration for manifest processing rules. Manifest processing rules enable customization of the personalized manifests created by MediaTailor." - }, - "Name": { - "description": "The identifier for the playback configuration.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "type": "string" - }, - "PersonalizationThresholdSeconds": { - "description": "Defines the maximum duration of underfilled ad time (in seconds) allowed in an ad break. If the duration of underfilled ad time exceeds the personalization threshold, then the personalization of the ad break is abandoned and the underlying content is shown. This feature applies to ad replacement in live and VOD streams, rather than ad insertion, because it relies on an underlying content stream. For more information about ad break behavior, including ad replacement and insertion, see Ad Behavior in AWS Elemental MediaTailor (https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html).", - "type": "integer" - }, - "PlaybackConfigurationArn": { - "description": "The Amazon Resource Name (ARN) for the playback configuration.", - "type": "string" - }, - "PlaybackEndpointPrefix": { - "description": "The URL that the player accesses to get a manifest from MediaTailor. This session will use server-side reporting.", - "type": "string" - }, - "SessionInitializationEndpointPrefix": { - "description": "The URL that the player uses to initialize a session that uses client-side reporting.", - "type": "string" - }, - "SlateAdUrl": { - "description": "The URL for a high-quality video asset to transcode and use to fill in time that's not used by ads. AWS Elemental MediaTailor shows the slate to fill in gaps in media content. Configuring the slate is optional for non-VPAID configurations. For VPAID, the slate is required because MediaTailor provides it in the slots that are designated for dynamic ad content. The slate must be a high-quality asset that contains both audio and video.", - "type": "string" - }, - "Tags": { - "description": "The tags to assign to the playback configuration.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "TranscodeProfileName": { - "description": "The name that is used to associate this playback configuration with a custom transcode profile. This overrides the dynamic transcoding defaults of MediaTailor. Use this only if you have already set up custom profiles with the help of AWS Support.", - "type": "string" - }, - "VideoContentSourceUrl": { - "description": "The URL prefix for the parent manifest for the stream, minus the asset ID. The maximum length is 512 characters.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/SessionInitializationEndpointPrefix", - "/properties/HlsConfiguration/ManifestEndpointPrefix", - "/properties/DashConfiguration/ManifestEndpointPrefix", - "/properties/PlaybackConfigurationArn", - "/properties/PlaybackEndpointPrefix" - ], - "required": [ - "Name", - "VideoContentSourceUrl", - "AdDecisionServerUrl" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediatailor.git", - "tagging": { - "cloudFormationSystemTags": false, - "taggable": true - }, - "typeName": "AWS::MediaTailor::PlaybackConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "AdMarkerPassthrough": { + "additionalProperties": false, + "description": "For HLS, when set to true, MediaTailor passes through EXT-X-CUE-IN, EXT-X-CUE-OUT, and EXT-X-SPLICEPOINT-SCTE35 ad markers from the origin manifest to the MediaTailor personalized manifest. No logic is applied to these ad markers. For example, if EXT-X-CUE-OUT has a value of 60, but no ads are filled for that ad break, MediaTailor will not set the value to 0.", + "properties": { + "Enabled": { + "description": "Enables ad marker passthrough for your configuration.", + "type": "boolean" + } + }, + "type": "object" + }, + "AvailSuppression": { + "additionalProperties": false, + "description": "The configuration for avail suppression, also known as ad suppression. For more information about ad suppression, see Ad Suppression (https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html).", + "properties": { + "FillPolicy": { + "description": "Defines the policy to apply to the avail suppression mode. BEHIND_LIVE_EDGE will always use the full avail suppression policy. AFTER_LIVE_EDGE mode can be used to invoke partial ad break fills when a session starts mid-break. Valid values are FULL_AVAIL_ONLY and PARTIAL_AVAIL", + "enum": [ + "PARTIAL_AVAIL", + "FULL_AVAIL_ONLY" + ], + "type": "string" + }, + "Mode": { + "description": "Sets the ad suppression mode. By default, ad suppression is off and all ad breaks are filled with ads or slate. When Mode is set to BEHIND_LIVE_EDGE, ad suppression is active and MediaTailor won't fill ad breaks on or behind the ad suppression Value time in the manifest lookback window. When Mode is set to AFTER_LIVE_EDGE, ad suppression is active and MediaTailor won't fill ad breaks that are within the live edge plus the avail suppression value.", + "enum": [ + "OFF", + "BEHIND_LIVE_EDGE", + "AFTER_LIVE_EDGE" + ], + "type": "string" + }, + "Value": { + "description": "A live edge offset time in HH:MM:SS. MediaTailor won't fill ad breaks on or behind this time in the manifest lookback window. If Value is set to 00:00:00, it is in sync with the live edge, and MediaTailor won't fill any ad breaks on or behind the live edge. If you set a Value time, MediaTailor won't fill any ad breaks on or behind this time in the manifest lookback window. For example, if you set 00:45:00, then MediaTailor will fill ad breaks that occur within 45 minutes behind the live edge, but won't fill ad breaks on or behind 45 minutes behind the live edge.", + "type": "string" + } + }, + "type": "object" + }, + "Bumper": { + "additionalProperties": false, + "description": "The configuration for bumpers. Bumpers are short audio or video clips that play at the start or before the end of an ad break. To learn more about bumpers, see Bumpers (https://docs.aws.amazon.com/mediatailor/latest/ug/bumpers.html).", + "properties": { + "EndUrl": { + "description": "The URL for the end bumper asset.", + "type": "string" + }, + "StartUrl": { + "description": "The URL for the start bumper asset.", + "type": "string" + } + }, + "type": "object" + }, + "CdnConfiguration": { + "additionalProperties": false, + "description": "The configuration for using a content delivery network (CDN), like Amazon CloudFront, for content and ad segment management.", + "properties": { + "AdSegmentUrlPrefix": { + "description": "A non-default content delivery network (CDN) to serve ad segments. By default, AWS Elemental MediaTailor uses Amazon CloudFront with default cache settings as its CDN for ad segments. To set up an alternate CDN, create a rule in your CDN for the origin ads.mediatailor.<region>.amazonaws.com. Then specify the rule's name in this AdSegmentUrlPrefix. When AWS Elemental MediaTailor serves a manifest, it reports your CDN as the source for ad segments.", + "type": "string" + }, + "ContentSegmentUrlPrefix": { + "description": "A content delivery network (CDN) to cache content segments, so that content requests don't always have to go to the origin server. First, create a rule in your CDN for the content segment origin server. Then specify the rule's name in this ContentSegmentUrlPrefix. When AWS Elemental MediaTailor serves a manifest, it reports your CDN as the source for content segments.", + "type": "string" + } + }, + "type": "object" + }, + "ConfigurationAliases": { + "additionalProperties": false, + "description": "The predefined aliases for dynamic variables.", + "patternProperties": { + "player_params\\.\\w+\\Z": { + "type": "object" + } + } + }, + "DashConfiguration": { + "additionalProperties": false, + "description": "The configuration for DASH PUT operations.", + "properties": { + "ManifestEndpointPrefix": { + "description": "The URL generated by MediaTailor to initiate a DASH playback session. The session uses server-side reporting.", + "type": "string" + }, + "MpdLocation": { + "description": "The setting that controls whether MediaTailor includes the Location tag in DASH manifests. MediaTailor populates the Location tag with the URL for manifest update requests, to be used by players that don't support sticky redirects. Disable this if you have CDN routing rules set up for accessing MediaTailor manifests, and you are either using client-side reporting or your players support sticky HTTP redirects. Valid values are DISABLED and EMT_DEFAULT. The EMT_DEFAULT setting enables the inclusion of the tag and is the default value.", + "type": "string" + }, + "OriginManifestType": { + "description": "The setting that controls whether MediaTailor handles manifests from the origin server as multi-period manifests or single-period manifests. If your origin server produces single-period manifests, set this to SINGLE_PERIOD. The default setting is MULTI_PERIOD. For multi-period manifests, omit this setting or set it to MULTI_PERIOD.", + "enum": [ + "SINGLE_PERIOD", + "MULTI_PERIOD" + ], + "type": "string" + } + }, + "type": "object" + }, + "HlsConfiguration": { + "additionalProperties": false, + "properties": { + "ManifestEndpointPrefix": { + "description": "The URL that is used to initiate a playback session for devices that support Apple HLS. The session uses server-side reporting.", + "type": "string" + } + }, + "type": "object" + }, + "LivePreRollConfiguration": { + "additionalProperties": false, + "description": "The configuration for pre-roll ad insertion.", + "properties": { + "AdDecisionServerUrl": { + "description": "The URL for the ad decision server (ADS) for pre-roll ads. This includes the specification of static parameters and placeholders for dynamic parameters. AWS Elemental MediaTailor substitutes player-specific and session-specific parameters as needed when calling the ADS. Alternately, for testing, you can provide a static VAST URL. The maximum length is 25,000 characters.", + "type": "string" + }, + "MaxDurationSeconds": { + "description": "The maximum allowed duration for the pre-roll ad avail. AWS Elemental MediaTailor won't play pre-roll ads to exceed this duration, regardless of the total duration of ads that the ADS returns.", + "type": "integer" + } + }, + "type": "object" + }, + "ManifestProcessingRules": { + "additionalProperties": false, + "description": "The configuration for manifest processing rules. Manifest processing rules enable customization of the personalized manifests created by MediaTailor.", + "properties": { + "AdMarkerPassthrough": { + "$ref": "#/definitions/AdMarkerPassthrough", + "description": "For HLS, when set to true, MediaTailor passes through EXT-X-CUE-IN, EXT-X-CUE-OUT, and EXT-X-SPLICEPOINT-SCTE35 ad markers from the origin manifest to the MediaTailor personalized manifest. No logic is applied to these ad markers. For example, if EXT-X-CUE-OUT has a value of 60, but no ads are filled for that ad break, MediaTailor will not set the value to 0." + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::MediaTailor::PlaybackConfiguration", + "handlers": { + "create": { + "permissions": [ + "mediatailor:PutPlaybackConfiguration", + "mediatailor:ConfigureLogsForPlaybackConfiguration", + "iam:CreateServiceLinkedRole", + "mediatailor:UntagResource", + "mediatailor:TagResource" + ] + }, + "delete": { + "permissions": [ + "mediatailor:DeletePlaybackConfiguration" + ] + }, + "list": { + "permissions": [ + "mediatailor:ListPlaybackConfigurations" + ] + }, + "read": { + "permissions": [ + "mediatailor:GetPlaybackConfiguration" + ] + }, + "update": { + "permissions": [ + "mediatailor:PutPlaybackConfiguration", + "mediatailor:ConfigureLogsForPlaybackConfiguration", + "iam:CreateServiceLinkedRole", + "mediatailor:UntagResource", + "mediatailor:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "AdDecisionServerUrl": { + "description": "The URL for the ad decision server (ADS). This includes the specification of static parameters and placeholders for dynamic parameters. AWS Elemental MediaTailor substitutes player-specific and session-specific parameters as needed when calling the ADS. Alternately, for testing you can provide a static VAST URL. The maximum length is 25,000 characters.", + "type": "string" + }, + "AvailSuppression": { + "$ref": "#/definitions/AvailSuppression", + "description": "The configuration for avail suppression, also known as ad suppression. For more information about ad suppression, see Ad Suppression (https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html)." + }, + "Bumper": { + "$ref": "#/definitions/Bumper", + "description": "The configuration for bumpers. Bumpers are short audio or video clips that play at the start or before the end of an ad break. To learn more about bumpers, see Bumpers (https://docs.aws.amazon.com/mediatailor/latest/ug/bumpers.html)." + }, + "CdnConfiguration": { + "$ref": "#/definitions/CdnConfiguration", + "description": "The configuration for using a content delivery network (CDN), like Amazon CloudFront, for content and ad segment management." + }, + "ConfigurationAliases": { + "$ref": "#/definitions/ConfigurationAliases", + "description": "The player parameters and aliases used as dynamic variables during session initialization. For more information, see Domain Variables. " + }, + "DashConfiguration": { + "$ref": "#/definitions/DashConfiguration", + "description": "The configuration for DASH content." + }, + "HlsConfiguration": { + "$ref": "#/definitions/HlsConfiguration", + "description": "The configuration for HLS content." + }, + "LivePreRollConfiguration": { + "$ref": "#/definitions/LivePreRollConfiguration", + "description": "The configuration for pre-roll ad insertion." + }, + "ManifestProcessingRules": { + "$ref": "#/definitions/ManifestProcessingRules", + "description": "The configuration for manifest processing rules. Manifest processing rules enable customization of the personalized manifests created by MediaTailor." + }, + "Name": { + "description": "The identifier for the playback configuration.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "PersonalizationThresholdSeconds": { + "description": "Defines the maximum duration of underfilled ad time (in seconds) allowed in an ad break. If the duration of underfilled ad time exceeds the personalization threshold, then the personalization of the ad break is abandoned and the underlying content is shown. This feature applies to ad replacement in live and VOD streams, rather than ad insertion, because it relies on an underlying content stream. For more information about ad break behavior, including ad replacement and insertion, see Ad Behavior in AWS Elemental MediaTailor (https://docs.aws.amazon.com/mediatailor/latest/ug/ad-behavior.html).", + "type": "integer" + }, + "PlaybackConfigurationArn": { + "description": "The Amazon Resource Name (ARN) for the playback configuration.", + "type": "string" + }, + "PlaybackEndpointPrefix": { + "description": "The URL that the player accesses to get a manifest from MediaTailor. This session will use server-side reporting.", + "type": "string" + }, + "SessionInitializationEndpointPrefix": { + "description": "The URL that the player uses to initialize a session that uses client-side reporting.", + "type": "string" + }, + "SlateAdUrl": { + "description": "The URL for a high-quality video asset to transcode and use to fill in time that's not used by ads. AWS Elemental MediaTailor shows the slate to fill in gaps in media content. Configuring the slate is optional for non-VPAID configurations. For VPAID, the slate is required because MediaTailor provides it in the slots that are designated for dynamic ad content. The slate must be a high-quality asset that contains both audio and video.", + "type": "string" + }, + "Tags": { + "description": "The tags to assign to the playback configuration.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TranscodeProfileName": { + "description": "The name that is used to associate this playback configuration with a custom transcode profile. This overrides the dynamic transcoding defaults of MediaTailor. Use this only if you have already set up custom profiles with the help of AWS Support.", + "type": "string" + }, + "VideoContentSourceUrl": { + "description": "The URL prefix for the parent manifest for the stream, minus the asset ID. The maximum length is 512 characters.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/SessionInitializationEndpointPrefix", + "/properties/HlsConfiguration/ManifestEndpointPrefix", + "/properties/DashConfiguration/ManifestEndpointPrefix", + "/properties/PlaybackConfigurationArn", + "/properties/PlaybackEndpointPrefix" + ], + "required": [ + "Name", + "VideoContentSourceUrl", + "AdDecisionServerUrl" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediatailor.git", + "tagging": { + "cloudFormationSystemTags": false, + "taggable": true + }, + "typeName": "AWS::MediaTailor::PlaybackConfiguration" +} diff --git a/src/schema/aws-mediatailor-sourcelocation.json b/src/schema/aws-mediatailor-sourcelocation.json index 884f2251..97027030 100644 --- a/src/schema/aws-mediatailor-sourcelocation.json +++ b/src/schema/aws-mediatailor-sourcelocation.json @@ -1,197 +1,197 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SourceLocationName" - ], - "definitions": { - "AccessConfiguration": { - "additionalProperties": false, - "description": "

Access configuration parameters.

", - "properties": { - "AccessType": { - "$ref": "#/definitions/AccessType" - }, - "SecretsManagerAccessTokenConfiguration": { - "$ref": "#/definitions/SecretsManagerAccessTokenConfiguration" - } - }, - "type": "object" - }, - "AccessType": { - "enum": [ - "S3_SIGV4", - "SECRETS_MANAGER_ACCESS_TOKEN", - "AUTODETECT_SIGV4" - ], - "type": "string" - }, - "DefaultSegmentDeliveryConfiguration": { - "additionalProperties": false, - "description": "

The optional configuration for a server that serves segments. Use this if you want the segment delivery server to be different from the source location server. For example, you can configure your source location server to be an origination server, such as MediaPackage, and the segment delivery server to be a content delivery network (CDN), such as CloudFront. If you don't specify a segment delivery server, then the source location server is used.

", - "properties": { - "BaseUrl": { - "description": "

The hostname of the server that will be used to serve segments. This string must include the protocol, such as https://.

", - "type": "string" - } - }, - "type": "object" - }, - "HttpConfiguration": { - "additionalProperties": false, - "description": "

The HTTP configuration for the source location.

", - "properties": { - "BaseUrl": { - "description": "

The base URL for the source location host server. This string must include the protocol, such as https://.

", - "type": "string" - } - }, - "required": [ - "BaseUrl" - ], - "type": "object" - }, - "SecretsManagerAccessTokenConfiguration": { - "additionalProperties": false, - "description": "

AWS Secrets Manager access token configuration parameters. For information about Secrets Manager access token authentication, see Working with AWS Secrets Manager access token authentication.

", - "properties": { - "HeaderName": { - "description": "

The name of the HTTP header used to supply the access token in requests to the source location.

", - "type": "string" - }, - "SecretArn": { - "description": "

The Amazon Resource Name (ARN) of the AWS Secrets Manager secret that contains the access token.

", - "type": "string" - }, - "SecretStringKey": { - "description": "

The AWS Secrets Manager SecretString key associated with the access token. MediaTailor uses the key to look up SecretString key and value pair containing the access token.

", - "type": "string" - } - }, - "type": "object" - }, - "SegmentDeliveryConfiguration": { - "additionalProperties": false, - "description": "

The segment delivery configuration settings.

", - "properties": { - "BaseUrl": { - "description": "

The base URL of the host or path of the segment delivery server that you're using to serve segments. This is typically a content delivery network (CDN). The URL can be absolute or relative. To use an absolute URL include the protocol, such as https://example.com/some/path. To use a relative URL specify the relative path, such as /some/path*.

", - "type": "string" - }, - "Name": { - "description": "

A unique identifier used to distinguish between multiple segment delivery configurations in a source location.

", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Definition of AWS::MediaTailor::SourceLocation Resource Type", - "handlers": { - "create": { - "permissions": [ - "mediatailor:CreateSourceLocation", - "mediatailor:DescribeSourceLocation", - "mediatailor:TagResource", - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue", - "kms:CreateGrant" - ] - }, - "delete": { - "permissions": [ - "mediatailor:DeleteSourceLocation", - "mediatailor:DescribeSourceLocation" - ] - }, - "list": { - "permissions": [ - "mediatailor:ListSourceLocations" - ] - }, - "read": { - "permissions": [ - "mediatailor:DescribeSourceLocation" - ] - }, - "update": { - "permissions": [ - "mediatailor:DescribeSourceLocation", - "mediatailor:TagResource", - "mediatailor:UntagResource", - "mediatailor:UpdateSourceLocation", - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue", - "kms:CreateGrant" - ] - } - }, - "primaryIdentifier": [ - "/properties/SourceLocationName" - ], - "properties": { - "AccessConfiguration": { - "$ref": "#/definitions/AccessConfiguration" - }, - "Arn": { - "description": "

The ARN of the source location.

", - "type": "string" - }, - "DefaultSegmentDeliveryConfiguration": { - "$ref": "#/definitions/DefaultSegmentDeliveryConfiguration" - }, - "HttpConfiguration": { - "$ref": "#/definitions/HttpConfiguration" - }, - "SegmentDeliveryConfigurations": { - "description": "

A list of the segment delivery configurations associated with this resource.

", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SegmentDeliveryConfiguration" - }, - "type": "array" - }, - "SourceLocationName": { - "type": "string" - }, - "Tags": { - "description": "The tags to assign to the source location.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "HttpConfiguration", - "SourceLocationName" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MediaTailor::SourceLocation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SourceLocationName" + ], + "definitions": { + "AccessConfiguration": { + "additionalProperties": false, + "description": "

Access configuration parameters.

", + "properties": { + "AccessType": { + "$ref": "#/definitions/AccessType" + }, + "SecretsManagerAccessTokenConfiguration": { + "$ref": "#/definitions/SecretsManagerAccessTokenConfiguration" + } + }, + "type": "object" + }, + "AccessType": { + "enum": [ + "S3_SIGV4", + "SECRETS_MANAGER_ACCESS_TOKEN", + "AUTODETECT_SIGV4" + ], + "type": "string" + }, + "DefaultSegmentDeliveryConfiguration": { + "additionalProperties": false, + "description": "

The optional configuration for a server that serves segments. Use this if you want the segment delivery server to be different from the source location server. For example, you can configure your source location server to be an origination server, such as MediaPackage, and the segment delivery server to be a content delivery network (CDN), such as CloudFront. If you don't specify a segment delivery server, then the source location server is used.

", + "properties": { + "BaseUrl": { + "description": "

The hostname of the server that will be used to serve segments. This string must include the protocol, such as https://.

", + "type": "string" + } + }, + "type": "object" + }, + "HttpConfiguration": { + "additionalProperties": false, + "description": "

The HTTP configuration for the source location.

", + "properties": { + "BaseUrl": { + "description": "

The base URL for the source location host server. This string must include the protocol, such as https://.

", + "type": "string" + } + }, + "required": [ + "BaseUrl" + ], + "type": "object" + }, + "SecretsManagerAccessTokenConfiguration": { + "additionalProperties": false, + "description": "

AWS Secrets Manager access token configuration parameters. For information about Secrets Manager access token authentication, see Working with AWS Secrets Manager access token authentication.

", + "properties": { + "HeaderName": { + "description": "

The name of the HTTP header used to supply the access token in requests to the source location.

", + "type": "string" + }, + "SecretArn": { + "description": "

The Amazon Resource Name (ARN) of the AWS Secrets Manager secret that contains the access token.

", + "type": "string" + }, + "SecretStringKey": { + "description": "

The AWS Secrets Manager SecretString key associated with the access token. MediaTailor uses the key to look up SecretString key and value pair containing the access token.

", + "type": "string" + } + }, + "type": "object" + }, + "SegmentDeliveryConfiguration": { + "additionalProperties": false, + "description": "

The segment delivery configuration settings.

", + "properties": { + "BaseUrl": { + "description": "

The base URL of the host or path of the segment delivery server that you're using to serve segments. This is typically a content delivery network (CDN). The URL can be absolute or relative. To use an absolute URL include the protocol, such as https://example.com/some/path. To use a relative URL specify the relative path, such as /some/path*.

", + "type": "string" + }, + "Name": { + "description": "

A unique identifier used to distinguish between multiple segment delivery configurations in a source location.

", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Definition of AWS::MediaTailor::SourceLocation Resource Type", + "handlers": { + "create": { + "permissions": [ + "mediatailor:CreateSourceLocation", + "mediatailor:DescribeSourceLocation", + "mediatailor:TagResource", + "secretsmanager:DescribeSecret", + "secretsmanager:GetSecretValue", + "kms:CreateGrant" + ] + }, + "delete": { + "permissions": [ + "mediatailor:DeleteSourceLocation", + "mediatailor:DescribeSourceLocation" + ] + }, + "list": { + "permissions": [ + "mediatailor:ListSourceLocations" + ] + }, + "read": { + "permissions": [ + "mediatailor:DescribeSourceLocation" + ] + }, + "update": { + "permissions": [ + "mediatailor:DescribeSourceLocation", + "mediatailor:TagResource", + "mediatailor:UntagResource", + "mediatailor:UpdateSourceLocation", + "secretsmanager:DescribeSecret", + "secretsmanager:GetSecretValue", + "kms:CreateGrant" + ] + } + }, + "primaryIdentifier": [ + "/properties/SourceLocationName" + ], + "properties": { + "AccessConfiguration": { + "$ref": "#/definitions/AccessConfiguration" + }, + "Arn": { + "description": "

The ARN of the source location.

", + "type": "string" + }, + "DefaultSegmentDeliveryConfiguration": { + "$ref": "#/definitions/DefaultSegmentDeliveryConfiguration" + }, + "HttpConfiguration": { + "$ref": "#/definitions/HttpConfiguration" + }, + "SegmentDeliveryConfigurations": { + "description": "

A list of the segment delivery configurations associated with this resource.

", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SegmentDeliveryConfiguration" + }, + "type": "array" + }, + "SourceLocationName": { + "type": "string" + }, + "Tags": { + "description": "The tags to assign to the source location.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "HttpConfiguration", + "SourceLocationName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaTailor::SourceLocation" +} diff --git a/src/schema/aws-mediatailor-vodsource.json b/src/schema/aws-mediatailor-vodsource.json index 7379eab1..6c1843ac 100644 --- a/src/schema/aws-mediatailor-vodsource.json +++ b/src/schema/aws-mediatailor-vodsource.json @@ -1,148 +1,148 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SourceLocationName", - "/properties/VodSourceName" - ], - "definitions": { - "HttpPackageConfiguration": { - "additionalProperties": false, - "description": "

The HTTP package configuration properties for the requested VOD source.

", - "properties": { - "Path": { - "description": "

The relative path to the URL for this VOD source. This is combined with SourceLocation::HttpConfiguration::BaseUrl to form a valid URL.

", - "type": "string" - }, - "SourceGroup": { - "description": "

The name of the source group. This has to match one of the Channel::Outputs::SourceGroup.

", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/Type" - } - }, - "required": [ - "Path", - "SourceGroup", - "Type" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Type": { - "enum": [ - "DASH", - "HLS" - ], - "type": "string" - } - }, - "description": "Definition of AWS::MediaTailor::VodSource Resource Type", - "handlers": { - "create": { - "permissions": [ - "mediatailor:CreateVodSource", - "mediatailor:DescribeVodSource", - "mediatailor:TagResource" - ] - }, - "delete": { - "permissions": [ - "mediatailor:DeleteVodSource", - "mediatailor:DescribeVodSource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "SourceLocationName": { - "$ref": "resource-schema.json#/properties/SourceLocationName" - } - }, - "required": [ - "SourceLocationName" - ] - }, - "permissions": [ - "mediatailor:ListVodSources" - ] - }, - "read": { - "permissions": [ - "mediatailor:DescribeVodSource" - ] - }, - "update": { - "permissions": [ - "mediatailor:DescribeVodSource", - "mediatailor:TagResource", - "mediatailor:UntagResource", - "mediatailor:UpdateVodSource" - ] - } - }, - "primaryIdentifier": [ - "/properties/SourceLocationName", - "/properties/VodSourceName" - ], - "properties": { - "Arn": { - "description": "

The ARN of the VOD source.

", - "type": "string" - }, - "HttpPackageConfigurations": { - "description": "

A list of HTTP package configuration parameters for this VOD source.

", - "items": { - "$ref": "#/definitions/HttpPackageConfiguration" - }, - "type": "array" - }, - "SourceLocationName": { - "type": "string" - }, - "Tags": { - "description": "The tags to assign to the VOD source.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "VodSourceName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "HttpPackageConfigurations", - "SourceLocationName", - "VodSourceName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediatailor", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MediaTailor::VodSource" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SourceLocationName", + "/properties/VodSourceName" + ], + "definitions": { + "HttpPackageConfiguration": { + "additionalProperties": false, + "description": "

The HTTP package configuration properties for the requested VOD source.

", + "properties": { + "Path": { + "description": "

The relative path to the URL for this VOD source. This is combined with SourceLocation::HttpConfiguration::BaseUrl to form a valid URL.

", + "type": "string" + }, + "SourceGroup": { + "description": "

The name of the source group. This has to match one of the Channel::Outputs::SourceGroup.

", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/Type" + } + }, + "required": [ + "Path", + "SourceGroup", + "Type" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "Type": { + "enum": [ + "DASH", + "HLS" + ], + "type": "string" + } + }, + "description": "Definition of AWS::MediaTailor::VodSource Resource Type", + "handlers": { + "create": { + "permissions": [ + "mediatailor:CreateVodSource", + "mediatailor:DescribeVodSource", + "mediatailor:TagResource" + ] + }, + "delete": { + "permissions": [ + "mediatailor:DeleteVodSource", + "mediatailor:DescribeVodSource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "SourceLocationName": { + "$ref": "resource-schema.json#/properties/SourceLocationName" + } + }, + "required": [ + "SourceLocationName" + ] + }, + "permissions": [ + "mediatailor:ListVodSources" + ] + }, + "read": { + "permissions": [ + "mediatailor:DescribeVodSource" + ] + }, + "update": { + "permissions": [ + "mediatailor:DescribeVodSource", + "mediatailor:TagResource", + "mediatailor:UntagResource", + "mediatailor:UpdateVodSource" + ] + } + }, + "primaryIdentifier": [ + "/properties/SourceLocationName", + "/properties/VodSourceName" + ], + "properties": { + "Arn": { + "description": "

The ARN of the VOD source.

", + "type": "string" + }, + "HttpPackageConfigurations": { + "description": "

A list of HTTP package configuration parameters for this VOD source.

", + "items": { + "$ref": "#/definitions/HttpPackageConfiguration" + }, + "type": "array" + }, + "SourceLocationName": { + "type": "string" + }, + "Tags": { + "description": "The tags to assign to the VOD source.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VodSourceName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "HttpPackageConfigurations", + "SourceLocationName", + "VodSourceName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediatailor", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MediaTailor::VodSource" +} diff --git a/src/schema/aws-memorydb-acl.json b/src/schema/aws-memorydb-acl.json index aad2ab07..fb0b2825 100644 --- a/src/schema/aws-memorydb-acl.json +++ b/src/schema/aws-memorydb-acl.json @@ -1,130 +1,131 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ACLName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with 'aws:'. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::MemoryDB::ACL", - "handlers": { - "create": { - "permissions": [ - "memorydb:CreateACL", - "memorydb:DescribeACLs", - "memorydb:TagResource", - "memorydb:ListTags" - ] - }, - "delete": { - "permissions": [ - "memorydb:ModifyReplicationGroup", - "memorydb:DeleteACL", - "memorydb:DescribeACLs" - ] - }, - "list": { - "permissions": [ - "memorydb:DescribeACLs", - "memorydb:ListTags" - ] - }, - "read": { - "permissions": [ - "memorydb:DescribeACLs", - "memorydb:ListTags" - ] - }, - "update": { - "permissions": [ - "memorydb:UpdateACL", - "memorydb:DescribeACLs", - "memorydb:ListTags", - "memorydb:TagResource", - "memorydb:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ACLName" - ], - "properties": { - "ACLName": { - "description": "The name of the acl.", - "pattern": "[a-z][a-z0-9\\\\-]*", - "type": "string" - }, - "Arn": { - "description": "The Amazon Resource Name (ARN) of the acl.", - "type": "string" - }, - "Status": { - "description": "Indicates acl status. Can be \"creating\", \"active\", \"modifying\", \"deleting\".", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this cluster.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UserNames": { - "$comment": "List of users.", - "description": "List of users associated to this acl.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/Arn" - ], - "required": [ - "ACLName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "memorydb:TagResource", - "memorydb:ListTags", - "memorydb:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MemoryDB::ACL" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ACLName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with 'aws:'. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MemoryDB::ACL", + "handlers": { + "create": { + "permissions": [ + "memorydb:CreateACL", + "memorydb:DescribeACLs", + "memorydb:TagResource", + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "memorydb:ModifyReplicationGroup", + "memorydb:DeleteACL", + "memorydb:DescribeACLs" + ] + }, + "list": { + "permissions": [ + "memorydb:DescribeACLs", + "memorydb:ListTags" + ] + }, + "read": { + "permissions": [ + "memorydb:DescribeACLs", + "memorydb:ListTags" + ] + }, + "update": { + "permissions": [ + "memorydb:UpdateACL", + "memorydb:DescribeACLs", + "memorydb:ListTags", + "memorydb:TagResource", + "memorydb:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ACLName" + ], + "properties": { + "ACLName": { + "description": "The name of the acl.", + "pattern": "[a-z][a-z0-9\\\\-]*", + "type": "string" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the acl.", + "type": "string" + }, + "Status": { + "description": "Indicates acl status. Can be \"creating\", \"active\", \"modifying\", \"deleting\".", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this cluster.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UserNames": { + "$comment": "List of users.", + "description": "List of users associated to this acl.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Status", + "/properties/Arn" + ], + "required": [ + "ACLName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "memorydb:TagResource", + "memorydb:ListTags", + "memorydb:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MemoryDB::ACL" +} diff --git a/src/schema/aws-memorydb-cluster.json b/src/schema/aws-memorydb-cluster.json index f833a434..1791b730 100644 --- a/src/schema/aws-memorydb-cluster.json +++ b/src/schema/aws-memorydb-cluster.json @@ -1,272 +1,306 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClusterName", - "/properties/TLSEnabled", - "/properties/DataTiering", - "/properties/KmsKeyId", - "/properties/Port", - "/properties/SubnetGroupName", - "/properties/SnapshotArns", - "/properties/SnapshotName" - ], - "definitions": { - "DataTieringStatus": { - "enum": [ - "true", - "false" - ], - "type": "string" - }, - "Endpoint": { - "additionalProperties": false, - "properties": { - "Address": { - "description": "The DNS address of the primary read-write node.", - "type": "string" - }, - "Port": { - "description": "The port number that the engine is listening on. ", - "type": "integer" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key for the tag. May not be null.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,128}$", - "type": "string" - }, - "Value": { - "description": "The tag's value. May be null.", - "maxLength": 256, - "minLength": 1, - "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,256}$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::MemoryDB::Cluster resource creates an Amazon MemoryDB Cluster.", - "handlers": { - "create": { - "permissions": [ - "kms:DescribeKey", - "kms:CreateGrant", - "memorydb:CreateCluster", - "memorydb:DescribeClusters", - "memorydb:TagResource", - "memorydb:ListTags" - ] - }, - "delete": { - "permissions": [ - "memorydb:DeleteCluster", - "memorydb:DescribeClusters" - ] - }, - "list": { - "permissions": [ - "memorydb:DescribeClusters" - ] - }, - "read": { - "permissions": [ - "memorydb:DescribeClusters", - "memorydb:ListTags" - ] - }, - "update": { - "permissions": [ - "memorydb:UpdateCluster", - "memorydb:DescribeClusters", - "memorydb:ListTags", - "memorydb:TagResource", - "memorydb:UntagResource" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/ClusterName" - ], - "properties": { - "ACLName": { - "description": "The name of the Access Control List to associate with the cluster.", - "pattern": "[a-zA-Z][a-zA-Z0-9\\-]*", - "type": "string" - }, - "ARN": { - "description": "The Amazon Resource Name (ARN) of the cluster.", - "type": "string" - }, - "AutoMinorVersionUpgrade": { - "description": "A flag that enables automatic minor version upgrade when set to true.\n\nYou cannot modify the value of AutoMinorVersionUpgrade after the cluster is created. To enable AutoMinorVersionUpgrade on a cluster you must set AutoMinorVersionUpgrade to true when you create a cluster.", - "type": "boolean" - }, - "ClusterEndpoint": { - "$ref": "#/definitions/Endpoint", - "description": "The cluster endpoint." - }, - "ClusterName": { - "description": "The name of the cluster. This value must be unique as it also serves as the cluster identifier.", - "pattern": "[a-z][a-z0-9\\-]*", - "type": "string" - }, - "DataTiering": { - "$ref": "#/definitions/DataTieringStatus", - "description": "Enables data tiering. Data tiering is only supported for clusters using the r6gd node type. This parameter must be set when using r6gd nodes.", - "type": "object" - }, - "Description": { - "description": "An optional description of the cluster.", - "type": "string" - }, - "Engine": { - "description": "The engine type used by the cluster.", - "type": "string" - }, - "EngineVersion": { - "description": "The Redis engine version used by the cluster.", - "type": "string" - }, - "FinalSnapshotName": { - "description": "The user-supplied name of a final cluster snapshot. This is the unique name that identifies the snapshot. MemoryDB creates the snapshot, and then deletes the cluster immediately afterward.", - "type": "string" - }, - "KmsKeyId": { - "description": "The ID of the KMS key used to encrypt the cluster.", - "type": "string" - }, - "MaintenanceWindow": { - "description": "Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period.", - "type": "string" - }, - "NodeType": { - "description": "The compute and memory capacity of the nodes in the cluster.", - "type": "string" - }, - "NumReplicasPerShard": { - "description": "The number of replicas to apply to each shard. The limit is 5.", - "type": "integer" - }, - "NumShards": { - "description": "The number of shards the cluster will contain.", - "type": "integer" - }, - "ParameterGroupName": { - "description": "The name of the parameter group associated with the cluster.", - "type": "string" - }, - "ParameterGroupStatus": { - "description": "The status of the parameter group used by the cluster.", - "type": "string" - }, - "Port": { - "description": "The port number on which each member of the cluster accepts connections.", - "type": "integer" - }, - "SecurityGroupIds": { - "description": "One or more Amazon VPC security groups associated with this cluster.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SnapshotArns": { - "description": "A list of Amazon Resource Names (ARN) that uniquely identify the RDB snapshot files stored in Amazon S3. The snapshot files are used to populate the new cluster. The Amazon S3 object name in the ARN cannot contain any commas.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SnapshotName": { - "description": "The name of a snapshot from which to restore data into the new cluster. The snapshot status changes to restoring while the new cluster is being created.", - "type": "string" - }, - "SnapshotRetentionLimit": { - "description": "The number of days for which MemoryDB retains automatic snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot that was taken today is retained for 5 days before being deleted.", - "type": "integer" - }, - "SnapshotWindow": { - "description": "The daily time range (in UTC) during which MemoryDB begins taking a daily snapshot of your cluster.", - "type": "string" - }, - "SnsTopicArn": { - "description": "The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent.", - "type": "string" - }, - "SnsTopicStatus": { - "description": "The status of the Amazon SNS notification topic. Notifications are sent only if the status is enabled.", - "type": "string" - }, - "Status": { - "description": "The status of the cluster. For example, Available, Updating, Creating.", - "type": "string" - }, - "SubnetGroupName": { - "description": "The name of the subnet group to be used for the cluster.", - "type": "string" - }, - "TLSEnabled": { - "description": "A flag that enables in-transit encryption when set to true.\n\nYou cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.", - "type": "boolean" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this cluster.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/ClusterEndpoint/Address", - "/properties/ClusterEndpoint/Port", - "/properties/ARN", - "/properties/ParameterGroupStatus" - ], - "required": [ - "ClusterName", - "NodeType", - "ACLName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "memorydb:TagResource", - "memorydb:ListTags", - "memorydb:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MemoryDB::Cluster", - "writeOnlyProperties": [ - "/properties/SnapshotArns", - "/properties/SnapshotName", - "/properties/FinalSnapshotName" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterName", + "/properties/TLSEnabled", + "/properties/DataTiering", + "/properties/KmsKeyId", + "/properties/Port", + "/properties/SubnetGroupName", + "/properties/SnapshotArns", + "/properties/MultiRegionClusterName", + "/properties/SnapshotName", + "/properties/NetworkType" + ], + "definitions": { + "DataTieringStatus": { + "enum": [ + "true", + "false" + ], + "type": "string" + }, + "Endpoint": { + "additionalProperties": false, + "properties": { + "Address": { + "description": "The DNS address of the primary read-write node.", + "type": "string" + }, + "Port": { + "description": "The port number that the engine is listening on. ", + "type": "integer" + } + }, + "type": "object" + }, + "SupportedIpDiscoveryTypes": { + "enum": [ + "ipv4", + "ipv6" + ], + "type": "string" + }, + "SupportedNetworkTypes": { + "enum": [ + "ipv4", + "ipv6", + "dual_stack" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for the tag. May not be null.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,128}$", + "type": "string" + }, + "Value": { + "description": "The tag's value. May be null.", + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,256}$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::MemoryDB::Cluster resource creates an Amazon MemoryDB Cluster.", + "handlers": { + "create": { + "permissions": [ + "kms:DescribeKey", + "kms:CreateGrant", + "memorydb:CreateCluster", + "memorydb:DescribeClusters", + "memorydb:TagResource", + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 720 + }, + "delete": { + "permissions": [ + "memorydb:DeleteCluster", + "memorydb:DescribeClusters" + ] + }, + "list": { + "permissions": [ + "memorydb:DescribeClusters" + ] + }, + "read": { + "permissions": [ + "memorydb:DescribeClusters", + "memorydb:ListTags" + ] + }, + "update": { + "permissions": [ + "memorydb:UpdateCluster", + "memorydb:DescribeClusters", + "memorydb:ListTags", + "memorydb:TagResource", + "memorydb:UntagResource" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/ClusterName" + ], + "properties": { + "ACLName": { + "description": "The name of the Access Control List to associate with the cluster.", + "pattern": "[a-zA-Z][a-zA-Z0-9\\-]*", + "type": "string" + }, + "ARN": { + "description": "The Amazon Resource Name (ARN) of the cluster.", + "type": "string" + }, + "AutoMinorVersionUpgrade": { + "description": "A flag that enables automatic minor version upgrade when set to true.\n\nYou cannot modify the value of AutoMinorVersionUpgrade after the cluster is created. To enable AutoMinorVersionUpgrade on a cluster you must set AutoMinorVersionUpgrade to true when you create a cluster.", + "type": "boolean" + }, + "ClusterEndpoint": { + "$ref": "#/definitions/Endpoint", + "description": "The cluster endpoint." + }, + "ClusterName": { + "description": "The name of the cluster. This value must be unique as it also serves as the cluster identifier.", + "pattern": "[a-z][a-z0-9\\-]*", + "type": "string" + }, + "DataTiering": { + "$ref": "#/definitions/DataTieringStatus", + "description": "Enables data tiering. Data tiering is only supported for clusters using the r6gd node type. This parameter must be set when using r6gd nodes.", + "type": "object" + }, + "Description": { + "description": "An optional description of the cluster.", + "type": "string" + }, + "Engine": { + "description": "The engine type used by the cluster.", + "type": "string" + }, + "EngineVersion": { + "description": "The Redis engine version used by the cluster.", + "type": "string" + }, + "FinalSnapshotName": { + "description": "The user-supplied name of a final cluster snapshot. This is the unique name that identifies the snapshot. MemoryDB creates the snapshot, and then deletes the cluster immediately afterward.", + "type": "string" + }, + "IpDiscovery": { + "$ref": "#/definitions/SupportedIpDiscoveryTypes", + "description": "For clusters wth dual stack NetworkType, IpDiscovery controls the Ip protocol (ipv4 or ipv6) returned by the engine commands such as `cluster info` and `cluster nodes` which are used by clients to connect to the nodes in the cluster.", + "type": "object" + }, + "KmsKeyId": { + "description": "The ID of the KMS key used to encrypt the cluster.", + "type": "string" + }, + "MaintenanceWindow": { + "description": "Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period.", + "type": "string" + }, + "MultiRegionClusterName": { + "description": "The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix.", + "type": "string" + }, + "NetworkType": { + "$ref": "#/definitions/SupportedNetworkTypes", + "description": "Must be either ipv4 | ipv6 | dual_stack.", + "type": "object" + }, + "NodeType": { + "description": "The compute and memory capacity of the nodes in the cluster.", + "type": "string" + }, + "NumReplicasPerShard": { + "description": "The number of replicas to apply to each shard. The limit is 5.", + "type": "integer" + }, + "NumShards": { + "description": "The number of shards the cluster will contain.", + "type": "integer" + }, + "ParameterGroupName": { + "description": "The name of the parameter group associated with the cluster.", + "type": "string" + }, + "ParameterGroupStatus": { + "description": "The status of the parameter group used by the cluster.", + "type": "string" + }, + "Port": { + "description": "The port number on which each member of the cluster accepts connections.", + "type": "integer" + }, + "SecurityGroupIds": { + "description": "One or more Amazon VPC security groups associated with this cluster.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SnapshotArns": { + "description": "A list of Amazon Resource Names (ARN) that uniquely identify the RDB snapshot files stored in Amazon S3. The snapshot files are used to populate the new cluster. The Amazon S3 object name in the ARN cannot contain any commas.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SnapshotName": { + "description": "The name of a snapshot from which to restore data into the new cluster. The snapshot status changes to restoring while the new cluster is being created.", + "type": "string" + }, + "SnapshotRetentionLimit": { + "description": "The number of days for which MemoryDB retains automatic snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot that was taken today is retained for 5 days before being deleted.", + "type": "integer" + }, + "SnapshotWindow": { + "description": "The daily time range (in UTC) during which MemoryDB begins taking a daily snapshot of your cluster.", + "type": "string" + }, + "SnsTopicArn": { + "description": "The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent.", + "type": "string" + }, + "SnsTopicStatus": { + "description": "The status of the Amazon SNS notification topic. Notifications are sent only if the status is enabled.", + "type": "string" + }, + "Status": { + "description": "The status of the cluster. For example, Available, Updating, Creating.", + "type": "string" + }, + "SubnetGroupName": { + "description": "The name of the subnet group to be used for the cluster.", + "type": "string" + }, + "TLSEnabled": { + "description": "A flag that enables in-transit encryption when set to true.\n\nYou cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.", + "type": "boolean" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this cluster.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Status", + "/properties/ClusterEndpoint/Address", + "/properties/ClusterEndpoint/Port", + "/properties/ARN", + "/properties/ParameterGroupStatus" + ], + "required": [ + "ClusterName", + "NodeType", + "ACLName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "memorydb:TagResource", + "memorydb:ListTags", + "memorydb:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MemoryDB::Cluster", + "writeOnlyProperties": [ + "/properties/SnapshotArns", + "/properties/SnapshotName", + "/properties/MultiRegionClusterName", + "/properties/FinalSnapshotName" + ] +} diff --git a/src/schema/aws-memorydb-multiregioncluster.json b/src/schema/aws-memorydb-multiregioncluster.json new file mode 100644 index 00000000..63e430c6 --- /dev/null +++ b/src/schema/aws-memorydb-multiregioncluster.json @@ -0,0 +1,170 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MultiRegionClusterNameSuffix", + "/properties/EngineVersion", + "/properties/MultiRegionParameterGroupName", + "/properties/TLSEnabled" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for the tag. May not be null.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,128}$", + "type": "string" + }, + "Value": { + "description": "The tag's value. May be null.", + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,256}$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::MemoryDB::Multi Region Cluster resource creates an Amazon MemoryDB Multi Region Cluster.", + "handlers": { + "create": { + "permissions": [ + "memorydb:CreateMultiRegionCluster", + "memorydb:DescribeMultiRegionClusters", + "memorydb:TagResource", + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "memorydb:DeleteMultiRegionCluster", + "memorydb:DescribeMultiRegionClusters" + ] + }, + "list": { + "permissions": [ + "memorydb:DescribeMultiRegionClusters" + ] + }, + "read": { + "permissions": [ + "memorydb:DescribeMultiRegionClusters", + "memorydb:ListTags" + ] + }, + "update": { + "permissions": [ + "memorydb:UpdateMultiRegionCluster", + "memorydb:DescribeMultiRegionClusters", + "memorydb:ListTags", + "memorydb:TagResource", + "memorydb:UntagResource" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/MultiRegionClusterName" + ], + "properties": { + "ARN": { + "description": "The Amazon Resource Name (ARN) of the multi region cluster.", + "type": "string" + }, + "Description": { + "description": "Description of the multi region cluster.", + "type": "string" + }, + "Engine": { + "description": "The engine type used by the multi region cluster.", + "type": "string" + }, + "EngineVersion": { + "description": "The Redis engine version used by the multi region cluster.", + "type": "string" + }, + "MultiRegionClusterName": { + "description": "The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix.", + "type": "string" + }, + "MultiRegionClusterNameSuffix": { + "description": "The name of the Multi Region cluster. This value must be unique as it also serves as the multi region cluster identifier.", + "pattern": "[a-z][a-z0-9\\-]*", + "type": "string" + }, + "MultiRegionParameterGroupName": { + "description": "The name of the parameter group associated with the multi region cluster.", + "type": "string" + }, + "NodeType": { + "description": "The compute and memory capacity of the nodes in the multi region cluster.", + "type": "string" + }, + "NumShards": { + "description": "The number of shards the multi region cluster will contain.", + "type": "integer" + }, + "Status": { + "description": "The status of the multi region cluster. For example, Available, Updating, Creating.", + "type": "string" + }, + "TLSEnabled": { + "description": "A flag that enables in-transit encryption when set to true.\n\nYou cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.", + "type": "boolean" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this multi region cluster.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UpdateStrategy": { + "description": "An enum string value that determines the update strategy for scaling. Possible values are 'COORDINATED' and 'UNCOORDINATED'. Default is 'COORDINATED'.", + "enum": [ + "COORDINATED", + "UNCOORDINATED" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/MultiRegionClusterName", + "/properties/Status", + "/properties/ARN" + ], + "required": [ + "NodeType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "memorydb:TagResource", + "memorydb:ListTags", + "memorydb:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MemoryDB::MultiRegionCluster", + "writeOnlyProperties": [ + "/properties/MultiRegionClusterNameSuffix", + "/properties/UpdateStrategy" + ] +} diff --git a/src/schema/aws-memorydb-parametergroup.json b/src/schema/aws-memorydb-parametergroup.json index e3de863d..569392ec 100644 --- a/src/schema/aws-memorydb-parametergroup.json +++ b/src/schema/aws-memorydb-parametergroup.json @@ -1,132 +1,133 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ParameterGroupName", - "/properties/Family", - "/properties/Description" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key for the tag. May not be null.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,128}$", - "type": "string" - }, - "Value": { - "description": "The tag's value. May be null.", - "maxLength": 256, - "minLength": 1, - "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,256}$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::MemoryDB::ParameterGroup resource creates an Amazon MemoryDB ParameterGroup.", - "handlers": { - "create": { - "permissions": [ - "memorydb:CreateParameterGroup", - "memorydb:DescribeParameterGroups", - "memorydb:TagResource", - "memorydb:ListTags" - ] - }, - "delete": { - "permissions": [ - "memorydb:DeleteParameterGroup" - ] - }, - "list": { - "permissions": [ - "memorydb:DescribeParameterGroups" - ] - }, - "read": { - "permissions": [ - "memorydb:DescribeParameterGroups", - "memorydb:ListTags" - ] - }, - "update": { - "permissions": [ - "memorydb:UpdateParameterGroup", - "memorydb:DescribeParameterGroups", - "memorydb:DescribeParameters", - "memorydb:DescribeClusters", - "memorydb:ListTags", - "memorydb:TagResource", - "memorydb:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ParameterGroupName" - ], - "properties": { - "ARN": { - "description": "The Amazon Resource Name (ARN) of the parameter group.", - "type": "string" - }, - "Description": { - "description": "A description of the parameter group.", - "type": "string" - }, - "Family": { - "description": "The name of the parameter group family that this parameter group is compatible with.", - "type": "string" - }, - "ParameterGroupName": { - "description": "The name of the parameter group.", - "type": "string" - }, - "Parameters": { - "description": "An map of parameter names and values for the parameter update. You must supply at least one parameter name and value; subsequent arguments are optional.", - "type": "object" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this parameter group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/ARN" - ], - "required": [ - "ParameterGroupName", - "Family" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "memorydb:TagResource", - "memorydb:ListTags", - "memorydb:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MemoryDB::ParameterGroup", - "writeOnlyProperties": [ - "/properties/Parameters" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ParameterGroupName", + "/properties/Family", + "/properties/Description" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for the tag. May not be null.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,128}$", + "type": "string" + }, + "Value": { + "description": "The tag's value. May be null.", + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,256}$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::MemoryDB::ParameterGroup resource creates an Amazon MemoryDB ParameterGroup.", + "handlers": { + "create": { + "permissions": [ + "memorydb:CreateParameterGroup", + "memorydb:DescribeParameterGroups", + "memorydb:TagResource", + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "memorydb:DeleteParameterGroup" + ] + }, + "list": { + "permissions": [ + "memorydb:DescribeParameterGroups" + ] + }, + "read": { + "permissions": [ + "memorydb:DescribeParameterGroups", + "memorydb:ListTags" + ] + }, + "update": { + "permissions": [ + "memorydb:UpdateParameterGroup", + "memorydb:DescribeParameterGroups", + "memorydb:DescribeParameters", + "memorydb:DescribeClusters", + "memorydb:ListTags", + "memorydb:TagResource", + "memorydb:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ParameterGroupName" + ], + "properties": { + "ARN": { + "description": "The Amazon Resource Name (ARN) of the parameter group.", + "type": "string" + }, + "Description": { + "description": "A description of the parameter group.", + "type": "string" + }, + "Family": { + "description": "The name of the parameter group family that this parameter group is compatible with.", + "type": "string" + }, + "ParameterGroupName": { + "description": "The name of the parameter group.", + "type": "string" + }, + "Parameters": { + "description": "An map of parameter names and values for the parameter update. You must supply at least one parameter name and value; subsequent arguments are optional.", + "type": "object" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this parameter group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/ARN" + ], + "required": [ + "ParameterGroupName", + "Family" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "memorydb:TagResource", + "memorydb:ListTags", + "memorydb:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MemoryDB::ParameterGroup", + "writeOnlyProperties": [ + "/properties/Parameters" + ] +} diff --git a/src/schema/aws-memorydb-subnetgroup.json b/src/schema/aws-memorydb-subnetgroup.json index 0fa03286..a5827cd9 100644 --- a/src/schema/aws-memorydb-subnetgroup.json +++ b/src/schema/aws-memorydb-subnetgroup.json @@ -1,128 +1,139 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SubnetGroupName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key for the tag. May not be null.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,128}$", - "type": "string" - }, - "Value": { - "description": "The tag's value. May be null.", - "maxLength": 256, - "minLength": 1, - "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,256}$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::MemoryDB::SubnetGroup resource creates an Amazon MemoryDB Subnet Group.", - "handlers": { - "create": { - "permissions": [ - "memorydb:CreateSubnetGroup", - "memorydb:DescribeSubnetGroups", - "memorydb:TagResource", - "memorydb:ListTags" - ] - }, - "delete": { - "permissions": [ - "memorydb:DeleteSubnetGroup", - "memorydb:DescribeSubnetGroups" - ] - }, - "list": { - "permissions": [ - "memorydb:DescribeSubnetGroups" - ] - }, - "read": { - "permissions": [ - "memorydb:DescribeSubnetGroups", - "memorydb:ListTags" - ] - }, - "update": { - "permissions": [ - "memorydb:UpdateSubnetGroup", - "memorydb:DescribeSubnetGroups", - "memorydb:ListTags", - "memorydb:TagResource", - "memorydb:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/SubnetGroupName" - ], - "properties": { - "ARN": { - "description": "The Amazon Resource Name (ARN) of the subnet group.", - "type": "string" - }, - "Description": { - "description": "An optional description of the subnet group.", - "type": "string" - }, - "SubnetGroupName": { - "description": "The name of the subnet group. This value must be unique as it also serves as the subnet group identifier.", - "pattern": "[a-z][a-z0-9\\-]*", - "type": "string" - }, - "SubnetIds": { - "description": "A list of VPC subnet IDs for the subnet group.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "description": "An array of key-value pairs to apply to this subnet group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/ARN" - ], - "required": [ - "SubnetGroupName", - "SubnetIds" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "memorydb:TagResource", - "memorydb:ListTags", - "memorydb:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MemoryDB::SubnetGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubnetGroupName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key for the tag. May not be null.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,128}$", + "type": "string" + }, + "Value": { + "description": "The tag's value. May be null.", + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,256}$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::MemoryDB::SubnetGroup resource creates an Amazon MemoryDB Subnet Group.", + "handlers": { + "create": { + "permissions": [ + "memorydb:CreateSubnetGroup", + "memorydb:DescribeSubnetGroups", + "memorydb:TagResource", + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "memorydb:DeleteSubnetGroup", + "memorydb:DescribeSubnetGroups" + ] + }, + "list": { + "permissions": [ + "memorydb:DescribeSubnetGroups" + ] + }, + "read": { + "permissions": [ + "memorydb:DescribeSubnetGroups", + "memorydb:ListTags" + ] + }, + "update": { + "permissions": [ + "memorydb:UpdateSubnetGroup", + "memorydb:DescribeSubnetGroups", + "memorydb:ListTags", + "memorydb:TagResource", + "memorydb:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/SubnetGroupName" + ], + "properties": { + "ARN": { + "description": "The Amazon Resource Name (ARN) of the subnet group.", + "type": "string" + }, + "Description": { + "description": "An optional description of the subnet group.", + "type": "string" + }, + "SubnetGroupName": { + "description": "The name of the subnet group. This value must be unique as it also serves as the subnet group identifier.", + "pattern": "[a-z][a-z0-9\\-]*", + "type": "string" + }, + "SubnetIds": { + "description": "A list of VPC subnet IDs for the subnet group.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SupportedNetworkTypes": { + "description": "Supported network types would be a list of network types supported by subnet group and can be either [ipv4] or [ipv4, dual_stack] or [ipv6].", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "An array of key-value pairs to apply to this subnet group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/ARN", + "/properties/SupportedNetworkTypes" + ], + "required": [ + "SubnetGroupName", + "SubnetIds" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "memorydb:TagResource", + "memorydb:ListTags", + "memorydb:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MemoryDB::SubnetGroup" +} diff --git a/src/schema/aws-memorydb-user.json b/src/schema/aws-memorydb-user.json index 824f2124..75772616 100644 --- a/src/schema/aws-memorydb-user.json +++ b/src/schema/aws-memorydb-user.json @@ -1,153 +1,154 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with 'aws:'. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::MemoryDB::User", - "handlers": { - "create": { - "permissions": [ - "memorydb:CreateUser", - "memorydb:DescribeUsers", - "memorydb:TagResource", - "memorydb:ListTags" - ] - }, - "delete": { - "permissions": [ - "memorydb:DeleteUser", - "memorydb:DescribeUsers" - ] - }, - "list": { - "permissions": [ - "memorydb:DescribeUsers", - "memorydb:ListTags" - ] - }, - "read": { - "permissions": [ - "memorydb:DescribeUsers", - "memorydb:ListTags" - ] - }, - "update": { - "permissions": [ - "memorydb:UpdateUser", - "memorydb:DescribeUsers", - "memorydb:ListTags", - "memorydb:TagResource", - "memorydb:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserName" - ], - "properties": { - "AccessString": { - "description": "Access permissions string used for this user account.", - "type": "string" - }, - "Arn": { - "description": "The Amazon Resource Name (ARN) of the user account.", - "type": "string" - }, - "AuthenticationMode": { - "additionalProperties": false, - "properties": { - "Passwords": { - "$comment": "List of passwords.", - "description": "Passwords used for this user account. You can create up to two passwords for each user.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Type": { - "description": "Type of authentication strategy for this user.", - "enum": [ - "password", - "iam" - ], - "type": "string" - } - }, - "type": "object" - }, - "Status": { - "description": "Indicates the user status. Can be \"active\", \"modifying\" or \"deleting\".", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this user.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UserName": { - "description": "The name of the user.", - "pattern": "[a-z][a-z0-9\\\\-]*", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/Arn" - ], - "required": [ - "UserName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "memorydb:TagResource", - "memorydb:ListTags", - "memorydb:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MemoryDB::User", - "writeOnlyProperties": [ - "/properties/AuthenticationMode", - "/properties/AccessString" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/UserName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with 'aws:'. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MemoryDB::User", + "handlers": { + "create": { + "permissions": [ + "memorydb:CreateUser", + "memorydb:DescribeUsers", + "memorydb:TagResource", + "memorydb:ListTags", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "memorydb:DeleteUser", + "memorydb:DescribeUsers" + ] + }, + "list": { + "permissions": [ + "memorydb:DescribeUsers", + "memorydb:ListTags" + ] + }, + "read": { + "permissions": [ + "memorydb:DescribeUsers", + "memorydb:ListTags" + ] + }, + "update": { + "permissions": [ + "memorydb:UpdateUser", + "memorydb:DescribeUsers", + "memorydb:ListTags", + "memorydb:TagResource", + "memorydb:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserName" + ], + "properties": { + "AccessString": { + "description": "Access permissions string used for this user account.", + "type": "string" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the user account.", + "type": "string" + }, + "AuthenticationMode": { + "additionalProperties": false, + "properties": { + "Passwords": { + "$comment": "List of passwords.", + "description": "Passwords used for this user account. You can create up to two passwords for each user.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "maxItems": 2, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "Type of authentication strategy for this user.", + "enum": [ + "password", + "iam" + ], + "type": "string" + } + }, + "type": "object" + }, + "Status": { + "description": "Indicates the user status. Can be \"active\", \"modifying\" or \"deleting\".", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this user.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UserName": { + "description": "The name of the user.", + "pattern": "[a-z][a-z0-9\\\\-]*", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Status", + "/properties/Arn" + ], + "required": [ + "UserName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "memorydb:TagResource", + "memorydb:ListTags", + "memorydb:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MemoryDB::User", + "writeOnlyProperties": [ + "/properties/AuthenticationMode", + "/properties/AccessString" + ] +} diff --git a/src/schema/aws-msk-batchscramsecret.json b/src/schema/aws-msk-batchscramsecret.json index c34915a6..7619abbd 100644 --- a/src/schema/aws-msk-batchscramsecret.json +++ b/src/schema/aws-msk-batchscramsecret.json @@ -1,93 +1,93 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClusterArn" - ], - "definitions": { - "SecretArnList": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - } - }, - "description": "Resource Type definition for AWS::MSK::BatchScramSecret", - "handlers": { - "create": { - "permissions": [ - "kafka:BatchAssociateScramSecret", - "kafka:ListScramSecrets", - "kms:CreateGrant", - "kms:DescribeKey", - "secretsmanager:GetSecretValue" - ] - }, - "delete": { - "permissions": [ - "kafka:BatchDisassociateScramSecret", - "kafka:ListScramSecrets", - "kms:CreateGrant", - "kms:DescribeKey" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ClusterArn": { - "$ref": "resource-schema.json#/properties/ClusterArn" - } - }, - "required": [ - "ClusterArn" - ] - }, - "permissions": [ - "kafka:ListScramSecrets", - "kms:CreateGrant", - "kms:DescribeKey", - "secretsmanager:GetSecretValue" - ] - }, - "read": { - "permissions": [ - "kafka:ListScramSecrets", - "kms:CreateGrant", - "kms:DescribeKey", - "secretsmanager:GetSecretValue" - ] - }, - "update": { - "permissions": [ - "kafka:BatchAssociateScramSecret", - "kafka:BatchDisassociateScramSecret", - "kafka:ListScramSecrets", - "kms:CreateGrant", - "kms:DescribeKey", - "secretsmanager:GetSecretValue" - ] - } - }, - "primaryIdentifier": [ - "/properties/ClusterArn" - ], - "properties": { - "ClusterArn": { - "type": "string" - }, - "SecretArnList": { - "$ref": "#/definitions/SecretArnList" - } - }, - "required": [ - "ClusterArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-msk", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::MSK::BatchScramSecret" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterArn" + ], + "definitions": { + "SecretArnList": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "description": "Resource Type definition for AWS::MSK::BatchScramSecret", + "handlers": { + "create": { + "permissions": [ + "kafka:BatchAssociateScramSecret", + "kafka:ListScramSecrets", + "kms:CreateGrant", + "kms:DescribeKey", + "secretsmanager:GetSecretValue" + ] + }, + "delete": { + "permissions": [ + "kafka:BatchDisassociateScramSecret", + "kafka:ListScramSecrets", + "kms:CreateGrant", + "kms:DescribeKey" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ClusterArn": { + "$ref": "resource-schema.json#/properties/ClusterArn" + } + }, + "required": [ + "ClusterArn" + ] + }, + "permissions": [ + "kafka:ListScramSecrets", + "kms:CreateGrant", + "kms:DescribeKey", + "secretsmanager:GetSecretValue" + ] + }, + "read": { + "permissions": [ + "kafka:ListScramSecrets", + "kms:CreateGrant", + "kms:DescribeKey", + "secretsmanager:GetSecretValue" + ] + }, + "update": { + "permissions": [ + "kafka:BatchAssociateScramSecret", + "kafka:BatchDisassociateScramSecret", + "kafka:ListScramSecrets", + "kms:CreateGrant", + "kms:DescribeKey", + "secretsmanager:GetSecretValue" + ] + } + }, + "primaryIdentifier": [ + "/properties/ClusterArn" + ], + "properties": { + "ClusterArn": { + "type": "string" + }, + "SecretArnList": { + "$ref": "#/definitions/SecretArnList" + } + }, + "required": [ + "ClusterArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-msk", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::MSK::BatchScramSecret" +} diff --git a/src/schema/aws-msk-cluster.json b/src/schema/aws-msk-cluster.json index 9f67045d..9bea92f1 100644 --- a/src/schema/aws-msk-cluster.json +++ b/src/schema/aws-msk-cluster.json @@ -1,622 +1,622 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/BrokerNodeGroupInfo/BrokerAZDistribution", - "/properties/BrokerNodeGroupInfo/ClientSubnets", - "/properties/BrokerNodeGroupInfo/SecurityGroups", - "/properties/EncryptionInfo/EncryptionAtRest", - "/properties/EncryptionInfo/EncryptionInTransit/InCluster", - "/properties/ClusterName" - ], - "definitions": { - "BrokerLogs": { - "additionalProperties": false, - "properties": { - "CloudWatchLogs": { - "$ref": "#/definitions/CloudWatchLogs" - }, - "Firehose": { - "$ref": "#/definitions/Firehose" - }, - "S3": { - "$ref": "#/definitions/S3" - } - }, - "type": "object" - }, - "BrokerNodeGroupInfo": { - "additionalProperties": false, - "properties": { - "BrokerAZDistribution": { - "maxLength": 9, - "minLength": 6, - "type": "string" - }, - "ClientSubnets": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ConnectivityInfo": { - "$ref": "#/definitions/ConnectivityInfo" - }, - "InstanceType": { - "maxLength": 32, - "minLength": 5, - "type": "string" - }, - "SecurityGroups": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "StorageInfo": { - "$ref": "#/definitions/StorageInfo" - } - }, - "required": [ - "ClientSubnets", - "InstanceType" - ], - "type": "object" - }, - "ClientAuthentication": { - "additionalProperties": false, - "properties": { - "Sasl": { - "$ref": "#/definitions/Sasl" - }, - "Tls": { - "$ref": "#/definitions/Tls" - }, - "Unauthenticated": { - "$ref": "#/definitions/Unauthenticated" - } - }, - "type": "object" - }, - "CloudWatchLogs": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "LogGroup": { - "type": "string" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "ConfigurationInfo": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - }, - "Revision": { - "type": "integer" - } - }, - "required": [ - "Revision", - "Arn" - ], - "type": "object" - }, - "ConnectivityInfo": { - "additionalProperties": false, - "properties": { - "PublicAccess": { - "$ref": "#/definitions/PublicAccess" - }, - "VpcConnectivity": { - "$ref": "#/definitions/VpcConnectivity" - } - }, - "type": "object" - }, - "EBSStorageInfo": { - "additionalProperties": false, - "properties": { - "ProvisionedThroughput": { - "$ref": "#/definitions/ProvisionedThroughput" - }, - "VolumeSize": { - "maximum": 16384, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "EncryptionAtRest": { - "additionalProperties": false, - "properties": { - "DataVolumeKMSKeyId": { - "type": "string" - } - }, - "required": [ - "DataVolumeKMSKeyId" - ], - "type": "object" - }, - "EncryptionInTransit": { - "additionalProperties": false, - "properties": { - "ClientBroker": { - "enum": [ - "TLS", - "TLS_PLAINTEXT", - "PLAINTEXT" - ], - "type": "string" - }, - "InCluster": { - "type": "boolean" - } - }, - "type": "object" - }, - "EncryptionInfo": { - "additionalProperties": false, - "properties": { - "EncryptionAtRest": { - "$ref": "#/definitions/EncryptionAtRest" - }, - "EncryptionInTransit": { - "$ref": "#/definitions/EncryptionInTransit" - } - }, - "type": "object" - }, - "Firehose": { - "additionalProperties": false, - "properties": { - "DeliveryStream": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "Iam": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "JmxExporter": { - "additionalProperties": false, - "properties": { - "EnabledInBroker": { - "type": "boolean" - } - }, - "required": [ - "EnabledInBroker" - ], - "type": "object" - }, - "LoggingInfo": { - "additionalProperties": false, - "properties": { - "BrokerLogs": { - "$ref": "#/definitions/BrokerLogs" - } - }, - "required": [ - "BrokerLogs" - ], - "type": "object" - }, - "NodeExporter": { - "additionalProperties": false, - "properties": { - "EnabledInBroker": { - "type": "boolean" - } - }, - "required": [ - "EnabledInBroker" - ], - "type": "object" - }, - "OpenMonitoring": { - "additionalProperties": false, - "properties": { - "Prometheus": { - "$ref": "#/definitions/Prometheus" - } - }, - "required": [ - "Prometheus" - ], - "type": "object" - }, - "Prometheus": { - "additionalProperties": false, - "properties": { - "JmxExporter": { - "$ref": "#/definitions/JmxExporter" - }, - "NodeExporter": { - "$ref": "#/definitions/NodeExporter" - } - }, - "type": "object" - }, - "ProvisionedThroughput": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "VolumeThroughput": { - "type": "integer" - } - }, - "type": "object" - }, - "PublicAccess": { - "additionalProperties": false, - "properties": { - "Type": { - "maxLength": 23, - "minLength": 7, - "type": "string" - } - }, - "type": "object" - }, - "S3": { - "additionalProperties": false, - "properties": { - "Bucket": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - }, - "Prefix": { - "type": "string" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "Sasl": { - "additionalProperties": false, - "properties": { - "Iam": { - "$ref": "#/definitions/Iam" - }, - "Scram": { - "$ref": "#/definitions/Scram" - } - }, - "type": "object" - }, - "Scram": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "StorageInfo": { - "additionalProperties": false, - "properties": { - "EBSStorageInfo": { - "$ref": "#/definitions/EBSStorageInfo" - } - }, - "type": "object" - }, - "Tls": { - "additionalProperties": false, - "properties": { - "CertificateAuthorityArnList": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "Unauthenticated": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "VpcConnectivity": { - "additionalProperties": false, - "properties": { - "ClientAuthentication": { - "$ref": "#/definitions/VpcConnectivityClientAuthentication" - } - }, - "type": "object" - }, - "VpcConnectivityClientAuthentication": { - "additionalProperties": false, - "properties": { - "Sasl": { - "$ref": "#/definitions/VpcConnectivitySasl" - }, - "Tls": { - "$ref": "#/definitions/VpcConnectivityTls" - } - }, - "type": "object" - }, - "VpcConnectivityIam": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "VpcConnectivitySasl": { - "additionalProperties": false, - "properties": { - "Iam": { - "$ref": "#/definitions/VpcConnectivityIam" - }, - "Scram": { - "$ref": "#/definitions/VpcConnectivityScram" - } - }, - "type": "object" - }, - "VpcConnectivityScram": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "VpcConnectivityTls": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::MSK::Cluster", - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "iam:AttachRolePolicy", - "iam:CreateServiceLinkedRole", - "iam:PutRolePolicy", - "kms:CreateGrant", - "kms:DescribeKey", - "kafka:CreateCluster", - "kafka:DescribeCluster", - "kafka:TagResource", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:UpdateLogDelivery", - "logs:DeleteLogDelivery", - "logs:ListLogDeliveries", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "firehose:TagDeliveryStream", - "acm-pca:GetCertificateAuthorityCertificate" - ], - "timeoutInMinutes": 120 - }, - "delete": { - "permissions": [ - "kafka:DeleteCluster", - "kafka:DescribeCluster" - ], - "timeoutInMinutes": 30 - }, - "list": { - "permissions": [ - "kafka:ListClusters" - ] - }, - "read": { - "permissions": [ - "kafka:DescribeCluster" - ] - }, - "update": { - "permissions": [ - "kafka:UpdateMonitoring", - "kafka:UpdateClusterKafkaVersion", - "kafka:UpdateClusterConfiguration", - "kafka:UpdateBrokerType", - "kafka:UpdateBrokerCount", - "kafka:UpdateBrokerStorage", - "kafka:UpdateStorage", - "kafka:UpdateSecurity", - "kafka:UpdateConnectivity", - "kafka:DescribeCluster", - "kafka:DescribeClusterOperation", - "kafka:TagResource", - "kafka:UntagResource", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "ec2:DescribeSecurityGroups", - "iam:AttachRolePolicy", - "iam:CreateServiceLinkedRole", - "iam:PutRolePolicy", - "kms:DescribeKey", - "kms:CreateGrant", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:UpdateLogDelivery", - "logs:DeleteLogDelivery", - "logs:ListLogDeliveries", - "s3:GetBucketPolicy", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "firehose:TagDeliveryStream", - "acm-pca:GetCertificateAuthorityCertificate" - ], - "timeoutInMinutes": 720 - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "type": "string" - }, - "BrokerNodeGroupInfo": { - "$ref": "#/definitions/BrokerNodeGroupInfo" - }, - "ClientAuthentication": { - "$ref": "#/definitions/ClientAuthentication" - }, - "ClusterName": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "ConfigurationInfo": { - "$ref": "#/definitions/ConfigurationInfo" - }, - "CurrentVersion": { - "description": "The current version of the MSK cluster", - "type": "string" - }, - "EncryptionInfo": { - "$ref": "#/definitions/EncryptionInfo" - }, - "EnhancedMonitoring": { - "enum": [ - "DEFAULT", - "PER_BROKER", - "PER_TOPIC_PER_BROKER", - "PER_TOPIC_PER_PARTITION" - ], - "maxLength": 23, - "minLength": 7, - "type": "string" - }, - "KafkaVersion": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "LoggingInfo": { - "$ref": "#/definitions/LoggingInfo" - }, - "NumberOfBrokerNodes": { - "type": "integer" - }, - "OpenMonitoring": { - "$ref": "#/definitions/OpenMonitoring" - }, - "StorageMode": { - "enum": [ - "LOCAL", - "TIERED" - ], - "maxLength": 6, - "minLength": 5, - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "BrokerNodeGroupInfo", - "KafkaVersion", - "NumberOfBrokerNodes", - "ClusterName" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "kafka:TagResource", - "kafka:UntagResource", - "kafka:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MSK::Cluster" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BrokerNodeGroupInfo/BrokerAZDistribution", + "/properties/BrokerNodeGroupInfo/ClientSubnets", + "/properties/BrokerNodeGroupInfo/SecurityGroups", + "/properties/EncryptionInfo/EncryptionAtRest", + "/properties/EncryptionInfo/EncryptionInTransit/InCluster", + "/properties/ClusterName" + ], + "definitions": { + "BrokerLogs": { + "additionalProperties": false, + "properties": { + "CloudWatchLogs": { + "$ref": "#/definitions/CloudWatchLogs" + }, + "Firehose": { + "$ref": "#/definitions/Firehose" + }, + "S3": { + "$ref": "#/definitions/S3" + } + }, + "type": "object" + }, + "BrokerNodeGroupInfo": { + "additionalProperties": false, + "properties": { + "BrokerAZDistribution": { + "maxLength": 9, + "minLength": 6, + "type": "string" + }, + "ClientSubnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ConnectivityInfo": { + "$ref": "#/definitions/ConnectivityInfo" + }, + "InstanceType": { + "maxLength": 32, + "minLength": 5, + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "StorageInfo": { + "$ref": "#/definitions/StorageInfo" + } + }, + "required": [ + "ClientSubnets", + "InstanceType" + ], + "type": "object" + }, + "ClientAuthentication": { + "additionalProperties": false, + "properties": { + "Sasl": { + "$ref": "#/definitions/Sasl" + }, + "Tls": { + "$ref": "#/definitions/Tls" + }, + "Unauthenticated": { + "$ref": "#/definitions/Unauthenticated" + } + }, + "type": "object" + }, + "CloudWatchLogs": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "LogGroup": { + "type": "string" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "ConfigurationInfo": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + }, + "Revision": { + "type": "integer" + } + }, + "required": [ + "Revision", + "Arn" + ], + "type": "object" + }, + "ConnectivityInfo": { + "additionalProperties": false, + "properties": { + "PublicAccess": { + "$ref": "#/definitions/PublicAccess" + }, + "VpcConnectivity": { + "$ref": "#/definitions/VpcConnectivity" + } + }, + "type": "object" + }, + "EBSStorageInfo": { + "additionalProperties": false, + "properties": { + "ProvisionedThroughput": { + "$ref": "#/definitions/ProvisionedThroughput" + }, + "VolumeSize": { + "maximum": 16384, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "EncryptionAtRest": { + "additionalProperties": false, + "properties": { + "DataVolumeKMSKeyId": { + "type": "string" + } + }, + "required": [ + "DataVolumeKMSKeyId" + ], + "type": "object" + }, + "EncryptionInTransit": { + "additionalProperties": false, + "properties": { + "ClientBroker": { + "enum": [ + "TLS", + "TLS_PLAINTEXT", + "PLAINTEXT" + ], + "type": "string" + }, + "InCluster": { + "type": "boolean" + } + }, + "type": "object" + }, + "EncryptionInfo": { + "additionalProperties": false, + "properties": { + "EncryptionAtRest": { + "$ref": "#/definitions/EncryptionAtRest" + }, + "EncryptionInTransit": { + "$ref": "#/definitions/EncryptionInTransit" + } + }, + "type": "object" + }, + "Firehose": { + "additionalProperties": false, + "properties": { + "DeliveryStream": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "Iam": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "JmxExporter": { + "additionalProperties": false, + "properties": { + "EnabledInBroker": { + "type": "boolean" + } + }, + "required": [ + "EnabledInBroker" + ], + "type": "object" + }, + "LoggingInfo": { + "additionalProperties": false, + "properties": { + "BrokerLogs": { + "$ref": "#/definitions/BrokerLogs" + } + }, + "required": [ + "BrokerLogs" + ], + "type": "object" + }, + "NodeExporter": { + "additionalProperties": false, + "properties": { + "EnabledInBroker": { + "type": "boolean" + } + }, + "required": [ + "EnabledInBroker" + ], + "type": "object" + }, + "OpenMonitoring": { + "additionalProperties": false, + "properties": { + "Prometheus": { + "$ref": "#/definitions/Prometheus" + } + }, + "required": [ + "Prometheus" + ], + "type": "object" + }, + "Prometheus": { + "additionalProperties": false, + "properties": { + "JmxExporter": { + "$ref": "#/definitions/JmxExporter" + }, + "NodeExporter": { + "$ref": "#/definitions/NodeExporter" + } + }, + "type": "object" + }, + "ProvisionedThroughput": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "VolumeThroughput": { + "type": "integer" + } + }, + "type": "object" + }, + "PublicAccess": { + "additionalProperties": false, + "properties": { + "Type": { + "maxLength": 23, + "minLength": 7, + "type": "string" + } + }, + "type": "object" + }, + "S3": { + "additionalProperties": false, + "properties": { + "Bucket": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Prefix": { + "type": "string" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "Sasl": { + "additionalProperties": false, + "properties": { + "Iam": { + "$ref": "#/definitions/Iam" + }, + "Scram": { + "$ref": "#/definitions/Scram" + } + }, + "type": "object" + }, + "Scram": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "StorageInfo": { + "additionalProperties": false, + "properties": { + "EBSStorageInfo": { + "$ref": "#/definitions/EBSStorageInfo" + } + }, + "type": "object" + }, + "Tls": { + "additionalProperties": false, + "properties": { + "CertificateAuthorityArnList": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "Unauthenticated": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "VpcConnectivity": { + "additionalProperties": false, + "properties": { + "ClientAuthentication": { + "$ref": "#/definitions/VpcConnectivityClientAuthentication" + } + }, + "type": "object" + }, + "VpcConnectivityClientAuthentication": { + "additionalProperties": false, + "properties": { + "Sasl": { + "$ref": "#/definitions/VpcConnectivitySasl" + }, + "Tls": { + "$ref": "#/definitions/VpcConnectivityTls" + } + }, + "type": "object" + }, + "VpcConnectivityIam": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "VpcConnectivitySasl": { + "additionalProperties": false, + "properties": { + "Iam": { + "$ref": "#/definitions/VpcConnectivityIam" + }, + "Scram": { + "$ref": "#/definitions/VpcConnectivityScram" + } + }, + "type": "object" + }, + "VpcConnectivityScram": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "VpcConnectivityTls": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MSK::Cluster", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "iam:AttachRolePolicy", + "iam:CreateServiceLinkedRole", + "iam:PutRolePolicy", + "kms:CreateGrant", + "kms:DescribeKey", + "kafka:CreateCluster", + "kafka:DescribeCluster", + "kafka:TagResource", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "firehose:TagDeliveryStream", + "acm-pca:GetCertificateAuthorityCertificate" + ], + "timeoutInMinutes": 120 + }, + "delete": { + "permissions": [ + "kafka:DeleteCluster", + "kafka:DescribeCluster" + ], + "timeoutInMinutes": 30 + }, + "list": { + "permissions": [ + "kafka:ListClusters" + ] + }, + "read": { + "permissions": [ + "kafka:DescribeCluster" + ] + }, + "update": { + "permissions": [ + "kafka:UpdateMonitoring", + "kafka:UpdateClusterKafkaVersion", + "kafka:UpdateClusterConfiguration", + "kafka:UpdateBrokerType", + "kafka:UpdateBrokerCount", + "kafka:UpdateBrokerStorage", + "kafka:UpdateStorage", + "kafka:UpdateSecurity", + "kafka:UpdateConnectivity", + "kafka:DescribeCluster", + "kafka:DescribeClusterOperation", + "kafka:TagResource", + "kafka:UntagResource", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "ec2:DescribeSecurityGroups", + "iam:AttachRolePolicy", + "iam:CreateServiceLinkedRole", + "iam:PutRolePolicy", + "kms:DescribeKey", + "kms:CreateGrant", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "s3:GetBucketPolicy", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "firehose:TagDeliveryStream", + "acm-pca:GetCertificateAuthorityCertificate" + ], + "timeoutInMinutes": 720 + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "type": "string" + }, + "BrokerNodeGroupInfo": { + "$ref": "#/definitions/BrokerNodeGroupInfo" + }, + "ClientAuthentication": { + "$ref": "#/definitions/ClientAuthentication" + }, + "ClusterName": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "ConfigurationInfo": { + "$ref": "#/definitions/ConfigurationInfo" + }, + "CurrentVersion": { + "description": "The current version of the MSK cluster", + "type": "string" + }, + "EncryptionInfo": { + "$ref": "#/definitions/EncryptionInfo" + }, + "EnhancedMonitoring": { + "enum": [ + "DEFAULT", + "PER_BROKER", + "PER_TOPIC_PER_BROKER", + "PER_TOPIC_PER_PARTITION" + ], + "maxLength": 23, + "minLength": 7, + "type": "string" + }, + "KafkaVersion": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "LoggingInfo": { + "$ref": "#/definitions/LoggingInfo" + }, + "NumberOfBrokerNodes": { + "type": "integer" + }, + "OpenMonitoring": { + "$ref": "#/definitions/OpenMonitoring" + }, + "StorageMode": { + "enum": [ + "LOCAL", + "TIERED" + ], + "maxLength": 6, + "minLength": 5, + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { + "type": "string" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "BrokerNodeGroupInfo", + "KafkaVersion", + "NumberOfBrokerNodes", + "ClusterName" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "kafka:TagResource", + "kafka:UntagResource", + "kafka:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MSK::Cluster" +} diff --git a/src/schema/aws-msk-clusterpolicy.json b/src/schema/aws-msk-clusterpolicy.json index 174b72ec..0b1e64da 100644 --- a/src/schema/aws-msk-clusterpolicy.json +++ b/src/schema/aws-msk-clusterpolicy.json @@ -1,79 +1,79 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClusterArn" - ], - "definitions": {}, - "description": "Resource Type definition for AWS::MSK::ClusterPolicy", - "handlers": { - "create": { - "permissions": [ - "kafka:PutClusterPolicy", - "kafka:GetClusterPolicy" - ] - }, - "delete": { - "permissions": [ - "kafka:DeleteClusterPolicy", - "kafka:GetClusterPolicy" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ClusterArn": { - "$ref": "resource-schema.json#/properties/ClusterArn" - } - }, - "required": [ - "ClusterArn" - ] - }, - "permissions": [ - "kafka:GetClusterPolicy" - ] - }, - "read": { - "permissions": [ - "kafka:GetClusterPolicy" - ] - }, - "update": { - "permissions": [ - "kafka:PutClusterPolicy", - "kafka:GetClusterPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/ClusterArn" - ], - "properties": { - "ClusterArn": { - "description": "The arn of the cluster for the resource policy.", - "pattern": "^arn:[\\w-]+:kafka:[\\w-]+:\\d+:cluster.*\\Z", - "type": "string" - }, - "CurrentVersion": { - "description": "The current version of the policy attached to the specified cluster", - "pattern": "^(K)([a-zA-Z0-9]+)\\Z", - "type": "string" - }, - "Policy": { - "description": "A policy document containing permissions to add to the specified cluster.", - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/CurrentVersion" - ], - "required": [ - "Policy", - "ClusterArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-msk", - "tagging": { - "taggable": false - }, - "typeName": "AWS::MSK::ClusterPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterArn" + ], + "definitions": {}, + "description": "Resource Type definition for AWS::MSK::ClusterPolicy", + "handlers": { + "create": { + "permissions": [ + "kafka:PutClusterPolicy", + "kafka:GetClusterPolicy" + ] + }, + "delete": { + "permissions": [ + "kafka:DeleteClusterPolicy", + "kafka:GetClusterPolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ClusterArn": { + "$ref": "resource-schema.json#/properties/ClusterArn" + } + }, + "required": [ + "ClusterArn" + ] + }, + "permissions": [ + "kafka:GetClusterPolicy" + ] + }, + "read": { + "permissions": [ + "kafka:GetClusterPolicy" + ] + }, + "update": { + "permissions": [ + "kafka:PutClusterPolicy", + "kafka:GetClusterPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/ClusterArn" + ], + "properties": { + "ClusterArn": { + "description": "The arn of the cluster for the resource policy.", + "pattern": "^arn:[\\w-]+:kafka:[\\w-]+:\\d+:cluster.*\\Z", + "type": "string" + }, + "CurrentVersion": { + "description": "The current version of the policy attached to the specified cluster", + "pattern": "^(K)([a-zA-Z0-9]+)\\Z", + "type": "string" + }, + "Policy": { + "description": "A policy document containing permissions to add to the specified cluster.", + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/CurrentVersion" + ], + "required": [ + "Policy", + "ClusterArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-msk", + "tagging": { + "taggable": false + }, + "typeName": "AWS::MSK::ClusterPolicy" +} diff --git a/src/schema/aws-msk-configuration.json b/src/schema/aws-msk-configuration.json index c50d7536..59f9a1c4 100644 --- a/src/schema/aws-msk-configuration.json +++ b/src/schema/aws-msk-configuration.json @@ -1,105 +1,105 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KafkaVersionsList", - "/properties/Name" - ], - "definitions": { - "KafkaVersionsList": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "LatestRevision": { - "additionalProperties": false, - "properties": { - "CreationTime": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Revision": { - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::MSK::Configuration", - "handlers": { - "create": { - "permissions": [ - "kafka:CreateConfiguration", - "Kafka:DescribeConfiguration" - ] - }, - "delete": { - "permissions": [ - "kafka:DeleteConfiguration", - "kafka:DescribeConfiguration" - ] - }, - "list": { - "permissions": [ - "kafka:ListConfigurations" - ] - }, - "read": { - "permissions": [ - "kafka:DescribeConfiguration" - ] - }, - "update": { - "permissions": [ - "kafka:UpdateConfiguration", - "kafka:DescribeConfiguration" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "KafkaVersionsList": { - "$ref": "#/definitions/KafkaVersionsList" - }, - "LatestRevision": { - "$ref": "#/definitions/LatestRevision" - }, - "Name": { - "type": "string" - }, - "ServerProperties": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/LatestRevision/CreationTime", - "/properties/LatestRevision/Revision", - "/properties/LatestRevision/Description" - ], - "required": [ - "ServerProperties", - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::MSK::Configuration", - "writeOnlyProperties": [ - "/properties/ServerProperties" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KafkaVersionsList", + "/properties/Name" + ], + "definitions": { + "KafkaVersionsList": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "LatestRevision": { + "additionalProperties": false, + "properties": { + "CreationTime": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Revision": { + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MSK::Configuration", + "handlers": { + "create": { + "permissions": [ + "kafka:CreateConfiguration", + "Kafka:DescribeConfiguration" + ] + }, + "delete": { + "permissions": [ + "kafka:DeleteConfiguration", + "kafka:DescribeConfiguration" + ] + }, + "list": { + "permissions": [ + "kafka:ListConfigurations" + ] + }, + "read": { + "permissions": [ + "kafka:DescribeConfiguration" + ] + }, + "update": { + "permissions": [ + "kafka:UpdateConfiguration", + "kafka:DescribeConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "KafkaVersionsList": { + "$ref": "#/definitions/KafkaVersionsList" + }, + "LatestRevision": { + "$ref": "#/definitions/LatestRevision" + }, + "Name": { + "type": "string" + }, + "ServerProperties": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/LatestRevision/CreationTime", + "/properties/LatestRevision/Revision", + "/properties/LatestRevision/Description" + ], + "required": [ + "ServerProperties", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::MSK::Configuration", + "writeOnlyProperties": [ + "/properties/ServerProperties" + ] +} diff --git a/src/schema/aws-msk-replicator.json b/src/schema/aws-msk-replicator.json index 7e818507..b6ea7d40 100644 --- a/src/schema/aws-msk-replicator.json +++ b/src/schema/aws-msk-replicator.json @@ -1,410 +1,416 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ReplicatorName" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ReplicatorName", - "/properties/Description", - "/properties/KafkaClusters", - "/properties/ServiceExecutionRoleArn" - ], - "definitions": { - "AmazonMskCluster": { - "additionalProperties": false, - "description": "Details of an Amazon MSK cluster.", - "properties": { - "MskClusterArn": { - "description": "The ARN of an Amazon MSK cluster.", - "pattern": "arn:(aws|aws-us-gov|aws-cn):kafka:.*", - "type": "string" - } - }, - "required": [ - "MskClusterArn" - ], - "type": "object" - }, - "ConsumerGroupReplication": { - "additionalProperties": false, - "description": "Configuration relating to consumer group replication.", - "properties": { - "ConsumerGroupsToExclude": { - "description": "List of regular expression patterns indicating the consumer groups that should not be replicated.", - "insertionOrder": false, - "items": { - "maxLength": 256, - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "ConsumerGroupsToReplicate": { - "description": "List of regular expression patterns indicating the consumer groups to copy.", - "insertionOrder": false, - "items": { - "maxLength": 256, - "type": "string" - }, - "maxItems": 100, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "DetectAndCopyNewConsumerGroups": { - "description": "Whether to periodically check for new consumer groups.", - "type": "boolean" - }, - "SynchroniseConsumerGroupOffsets": { - "description": "Whether to periodically write the translated offsets to __consumer_offsets topic in target cluster.", - "type": "boolean" - } - }, - "required": [ - "ConsumerGroupsToReplicate" - ], - "type": "object" - }, - "KafkaCluster": { - "additionalProperties": false, - "description": "Details of a Kafka cluster for replication.", - "properties": { - "AmazonMskCluster": { - "$ref": "#/definitions/AmazonMskCluster", - "description": "Details of an Amazon MSK cluster. Exactly one of AmazonMskCluster is required." - }, - "VpcConfig": { - "$ref": "#/definitions/KafkaClusterClientVpcConfig", - "description": "Details of an Amazon VPC which has network connectivity to the Apache Kafka cluster." - } - }, - "required": [ - "AmazonMskCluster", - "VpcConfig" - ], - "type": "object" - }, - "KafkaClusterClientVpcConfig": { - "additionalProperties": false, - "description": "Details of an Amazon VPC which has network connectivity to the Kafka cluster.", - "properties": { - "SecurityGroupIds": { - "description": "The AWS security groups to associate with the elastic network interfaces in order to specify what the replicator has access to. If a security group is not specified, the default security group associated with the VPC is used.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 16, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "SubnetIds": { - "description": "The list of subnets to connect to in the virtual private cloud (VPC). AWS creates elastic network interfaces inside these subnets.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 3, - "minItems": 2, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "SubnetIds" - ], - "type": "object" - }, - "ReplicationInfo": { - "additionalProperties": false, - "description": "Specifies configuration for replication between a source and target Kafka cluster.", - "properties": { - "ConsumerGroupReplication": { - "$ref": "#/definitions/ConsumerGroupReplication", - "description": "Configuration relating to consumer group replication." - }, - "SourceKafkaClusterArn": { - "description": "Amazon Resource Name of the source Kafka cluster.", - "pattern": "arn:(aws|aws-us-gov|aws-cn):kafka:.*", - "type": "string" - }, - "TargetCompressionType": { - "description": "The type of compression to use writing records to target Kafka cluster.", - "enum": [ - "NONE", - "GZIP", - "SNAPPY", - "LZ4", - "ZSTD" - ], - "type": "string" - }, - "TargetKafkaClusterArn": { - "description": "Amazon Resource Name of the target Kafka cluster.", - "pattern": "arn:(aws|aws-us-gov|aws-cn):kafka:.*", - "type": "string" - }, - "TopicReplication": { - "$ref": "#/definitions/TopicReplication", - "description": "Configuration relating to topic replication." - } - }, - "required": [ - "SourceKafkaClusterArn", - "TargetKafkaClusterArn", - "TopicReplication", - "ConsumerGroupReplication", - "TargetCompressionType" - ], - "type": "object" - }, - "ReplicationStartingPosition": { - "additionalProperties": false, - "description": "Configuration for specifying the position in the topics to start replicating from.", - "properties": { - "Type": { - "$ref": "#/definitions/ReplicationStartingPositionType" - } - }, - "required": [], - "type": "object" - }, - "ReplicationStartingPositionType": { - "description": "The type of replication starting position.", - "enum": [ - "LATEST", - "EARLIEST" - ], - "type": "string" - }, - "ReplicationTopicNameConfiguration": { - "additionalProperties": false, - "description": "Configuration for specifying replicated topic names should be the same as their corresponding upstream topics or prefixed with source cluster alias.", - "properties": { - "Type": { - "$ref": "#/definitions/ReplicationTopicNameConfigurationType" - } - }, - "required": [], - "type": "object" - }, - "ReplicationTopicNameConfigurationType": { - "description": "The type of replicated topic name.", - "enum": [ - "PREFIXED_WITH_SOURCE_CLUSTER_ALIAS", - "IDENTICAL" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TopicReplication": { - "additionalProperties": false, - "properties": { - "CopyAccessControlListsForTopics": { - "description": "Whether to periodically configure remote topic ACLs to match their corresponding upstream topics.", - "type": "boolean" - }, - "CopyTopicConfigurations": { - "description": "Whether to periodically configure remote topics to match their corresponding upstream topics.", - "type": "boolean" - }, - "DetectAndCopyNewTopics": { - "description": "Whether to periodically check for new topics and partitions.", - "type": "boolean" - }, - "StartingPosition": { - "$ref": "#/definitions/ReplicationStartingPosition", - "description": "Configuration for specifying the position in the topics to start replicating from." - }, - "TopicNameConfiguration": { - "$ref": "#/definitions/ReplicationTopicNameConfiguration", - "description": "Configuration for specifying replicated topic names should be the same as their corresponding upstream topics or prefixed with source cluster alias." - }, - "TopicsToExclude": { - "description": "List of regular expression patterns indicating the topics that should not be replicated.", - "insertionOrder": false, - "items": { - "maxLength": 249, - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "TopicsToReplicate": { - "description": "List of regular expression patterns indicating the topics to copy.", - "insertionOrder": false, - "items": { - "maxLength": 249, - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "TopicsToReplicate" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::MSK::Replicator", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateNetworkInterface", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "kafka:CreateReplicator", - "kafka:CreateReplicatorReference", - "kafka:DescribeClusterV2", - "kafka:DescribeReplicator", - "kafka:GetBootstrapBrokers", - "kafka:ListTagsForResource", - "kafka:TagResource" - ] - }, - "delete": { - "permissions": [ - "kafka:DeleteReplicator", - "kafka:DescribeReplicator", - "kafka:ListTagsForResource", - "kafka:UntagResource" - ] - }, - "list": { - "permissions": [ - "kafka:ListReplicators" - ] - }, - "read": { - "permissions": [ - "kafka:DescribeReplicator", - "kafka:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "kafka:DescribeReplicator", - "kafka:ListTagsForResource", - "kafka:TagResource", - "kafka:UntagResource", - "kafka:UpdateReplicationInfo" - ] - } - }, - "primaryIdentifier": [ - "/properties/ReplicatorArn" - ], - "properties": { - "CurrentVersion": { - "description": "The current version of the MSK replicator.", - "type": "string" - }, - "Description": { - "description": "A summary description of the replicator.", - "maxLength": 1024, - "type": "string" - }, - "KafkaClusters": { - "description": "Specifies a list of Kafka clusters which are targets of the replicator.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/KafkaCluster" - }, - "maxItems": 2, - "minItems": 2, - "type": "array", - "uniqueItems": true - }, - "ReplicationInfoList": { - "description": "A list of replication configurations, where each configuration targets a given source cluster to target cluster replication flow.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ReplicationInfo" - }, - "maxItems": 1, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "ReplicatorArn": { - "description": "Amazon Resource Name for the created replicator.", - "pattern": "arn:(aws|aws-us-gov|aws-cn):kafka:.*", - "type": "string" - }, - "ReplicatorName": { - "description": "The name of the replicator.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[0-9A-Za-z][0-9A-Za-z-]{0,}$", - "type": "string" - }, - "ServiceExecutionRoleArn": { - "description": "The Amazon Resource Name (ARN) of the IAM role used by the replicator to access external resources.", - "pattern": "arn:(aws|aws-us-gov|aws-cn):iam:.*", - "type": "string" - }, - "Tags": { - "description": "A collection of tags associated with a resource", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/ReplicatorArn" - ], - "required": [ - "ReplicatorName", - "ReplicationInfoList", - "KafkaClusters", - "ServiceExecutionRoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-msk-replicator.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "kafka:UntagResource", - "kafka:ListTagsForResource", - "kafka:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MSK::Replicator" -} +{ + "additionalIdentifiers": [ + [ + "/properties/ReplicatorName" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ReplicatorName", + "/properties/Description", + "/properties/KafkaClusters", + "/properties/ServiceExecutionRoleArn", + "/properties/ReplicationInfoList/*/SourceKafkaClusterArn", + "/properties/ReplicationInfoList/*/TargetKafkaClusterArn", + "/properties/ReplicationInfoList/*/TargetCompressionType", + "/properties/ReplicationInfoList/*/TopicReplication/StartingPosition", + "/properties/ReplicationInfoList/*/TopicReplication/TopicNameConfiguration" + ], + "definitions": { + "AmazonMskCluster": { + "additionalProperties": false, + "description": "Details of an Amazon MSK cluster.", + "properties": { + "MskClusterArn": { + "description": "The ARN of an Amazon MSK cluster.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):kafka:.*", + "type": "string" + } + }, + "required": [ + "MskClusterArn" + ], + "type": "object" + }, + "ConsumerGroupReplication": { + "additionalProperties": false, + "description": "Configuration relating to consumer group replication.", + "properties": { + "ConsumerGroupsToExclude": { + "description": "List of regular expression patterns indicating the consumer groups that should not be replicated.", + "insertionOrder": false, + "items": { + "maxLength": 256, + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ConsumerGroupsToReplicate": { + "description": "List of regular expression patterns indicating the consumer groups to copy.", + "insertionOrder": false, + "items": { + "maxLength": 256, + "type": "string" + }, + "maxItems": 100, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "DetectAndCopyNewConsumerGroups": { + "description": "Whether to periodically check for new consumer groups.", + "type": "boolean" + }, + "SynchroniseConsumerGroupOffsets": { + "description": "Whether to periodically write the translated offsets to __consumer_offsets topic in target cluster.", + "type": "boolean" + } + }, + "required": [ + "ConsumerGroupsToReplicate" + ], + "type": "object" + }, + "KafkaCluster": { + "additionalProperties": false, + "description": "Details of a Kafka cluster for replication.", + "properties": { + "AmazonMskCluster": { + "$ref": "#/definitions/AmazonMskCluster", + "description": "Details of an Amazon MSK cluster. Exactly one of AmazonMskCluster is required." + }, + "VpcConfig": { + "$ref": "#/definitions/KafkaClusterClientVpcConfig", + "description": "Details of an Amazon VPC which has network connectivity to the Apache Kafka cluster." + } + }, + "required": [ + "AmazonMskCluster", + "VpcConfig" + ], + "type": "object" + }, + "KafkaClusterClientVpcConfig": { + "additionalProperties": false, + "description": "Details of an Amazon VPC which has network connectivity to the Kafka cluster.", + "properties": { + "SecurityGroupIds": { + "description": "The AWS security groups to associate with the elastic network interfaces in order to specify what the replicator has access to. If a security group is not specified, the default security group associated with the VPC is used.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "SubnetIds": { + "description": "The list of subnets to connect to in the virtual private cloud (VPC). AWS creates elastic network interfaces inside these subnets.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 3, + "minItems": 2, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "SubnetIds" + ], + "type": "object" + }, + "ReplicationInfo": { + "additionalProperties": false, + "description": "Specifies configuration for replication between a source and target Kafka cluster.", + "properties": { + "ConsumerGroupReplication": { + "$ref": "#/definitions/ConsumerGroupReplication", + "description": "Configuration relating to consumer group replication." + }, + "SourceKafkaClusterArn": { + "description": "Amazon Resource Name of the source Kafka cluster.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):kafka:.*", + "type": "string" + }, + "TargetCompressionType": { + "description": "The type of compression to use writing records to target Kafka cluster.", + "enum": [ + "NONE", + "GZIP", + "SNAPPY", + "LZ4", + "ZSTD" + ], + "type": "string" + }, + "TargetKafkaClusterArn": { + "description": "Amazon Resource Name of the target Kafka cluster.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):kafka:.*", + "type": "string" + }, + "TopicReplication": { + "$ref": "#/definitions/TopicReplication", + "description": "Configuration relating to topic replication." + } + }, + "required": [ + "SourceKafkaClusterArn", + "TargetKafkaClusterArn", + "TopicReplication", + "ConsumerGroupReplication", + "TargetCompressionType" + ], + "type": "object" + }, + "ReplicationStartingPosition": { + "additionalProperties": false, + "description": "Configuration for specifying the position in the topics to start replicating from.", + "properties": { + "Type": { + "$ref": "#/definitions/ReplicationStartingPositionType" + } + }, + "required": [], + "type": "object" + }, + "ReplicationStartingPositionType": { + "description": "The type of replication starting position.", + "enum": [ + "LATEST", + "EARLIEST" + ], + "type": "string" + }, + "ReplicationTopicNameConfiguration": { + "additionalProperties": false, + "description": "Configuration for specifying replicated topic names should be the same as their corresponding upstream topics or prefixed with source cluster alias.", + "properties": { + "Type": { + "$ref": "#/definitions/ReplicationTopicNameConfigurationType" + } + }, + "required": [], + "type": "object" + }, + "ReplicationTopicNameConfigurationType": { + "description": "The type of replicated topic name.", + "enum": [ + "PREFIXED_WITH_SOURCE_CLUSTER_ALIAS", + "IDENTICAL" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TopicReplication": { + "additionalProperties": false, + "properties": { + "CopyAccessControlListsForTopics": { + "description": "Whether to periodically configure remote topic ACLs to match their corresponding upstream topics.", + "type": "boolean" + }, + "CopyTopicConfigurations": { + "description": "Whether to periodically configure remote topics to match their corresponding upstream topics.", + "type": "boolean" + }, + "DetectAndCopyNewTopics": { + "description": "Whether to periodically check for new topics and partitions.", + "type": "boolean" + }, + "StartingPosition": { + "$ref": "#/definitions/ReplicationStartingPosition", + "description": "Configuration for specifying the position in the topics to start replicating from." + }, + "TopicNameConfiguration": { + "$ref": "#/definitions/ReplicationTopicNameConfiguration", + "description": "Configuration for specifying replicated topic names should be the same as their corresponding upstream topics or prefixed with source cluster alias." + }, + "TopicsToExclude": { + "description": "List of regular expression patterns indicating the topics that should not be replicated.", + "insertionOrder": false, + "items": { + "maxLength": 249, + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TopicsToReplicate": { + "description": "List of regular expression patterns indicating the topics to copy.", + "insertionOrder": false, + "items": { + "maxLength": 249, + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "TopicsToReplicate" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MSK::Replicator", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkInterface", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "kafka:CreateReplicator", + "kafka:CreateReplicatorReference", + "kafka:DescribeClusterV2", + "kafka:DescribeReplicator", + "kafka:GetBootstrapBrokers", + "kafka:ListTagsForResource", + "kafka:TagResource" + ] + }, + "delete": { + "permissions": [ + "kafka:DeleteReplicator", + "kafka:DescribeReplicator", + "kafka:ListTagsForResource", + "kafka:UntagResource" + ] + }, + "list": { + "permissions": [ + "kafka:ListReplicators" + ] + }, + "read": { + "permissions": [ + "kafka:DescribeReplicator", + "kafka:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "kafka:DescribeReplicator", + "kafka:ListTagsForResource", + "kafka:TagResource", + "kafka:UntagResource", + "kafka:UpdateReplicationInfo" + ] + } + }, + "primaryIdentifier": [ + "/properties/ReplicatorArn" + ], + "properties": { + "CurrentVersion": { + "description": "The current version of the MSK replicator.", + "type": "string" + }, + "Description": { + "description": "A summary description of the replicator.", + "maxLength": 1024, + "type": "string" + }, + "KafkaClusters": { + "description": "Specifies a list of Kafka clusters which are targets of the replicator.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/KafkaCluster" + }, + "maxItems": 2, + "minItems": 2, + "type": "array", + "uniqueItems": true + }, + "ReplicationInfoList": { + "description": "A list of replication configurations, where each configuration targets a given source cluster to target cluster replication flow.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicationInfo" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ReplicatorArn": { + "description": "Amazon Resource Name for the created replicator.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):kafka:.*", + "type": "string" + }, + "ReplicatorName": { + "description": "The name of the replicator.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[0-9A-Za-z][0-9A-Za-z-]{0,}$", + "type": "string" + }, + "ServiceExecutionRoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM role used by the replicator to access external resources.", + "pattern": "arn:(aws|aws-us-gov|aws-cn):iam:.*", + "type": "string" + }, + "Tags": { + "description": "A collection of tags associated with a resource", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/ReplicatorArn", + "/properties/CurrentVersion" + ], + "required": [ + "ReplicatorName", + "ReplicationInfoList", + "KafkaClusters", + "ServiceExecutionRoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-msk-replicator.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "kafka:UntagResource", + "kafka:ListTagsForResource", + "kafka:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MSK::Replicator" +} diff --git a/src/schema/aws-msk-serverlesscluster.json b/src/schema/aws-msk-serverlesscluster.json index 3610bb27..4f24ff7a 100644 --- a/src/schema/aws-msk-serverlesscluster.json +++ b/src/schema/aws-msk-serverlesscluster.json @@ -1,158 +1,163 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClusterName", - "/properties/VpcConfigs", - "/properties/ClientAuthentication", - "/properties/Tags" - ], - "definitions": { - "ClientAuthentication": { - "additionalProperties": false, - "properties": { - "Sasl": { - "$ref": "#/definitions/Sasl" - } - }, - "required": [ - "Sasl" - ], - "type": "object" - }, - "Iam": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "required": [ - "Enabled" - ], - "type": "object" - }, - "Sasl": { - "additionalProperties": false, - "properties": { - "Iam": { - "$ref": "#/definitions/Iam" - } - }, - "required": [ - "Iam" - ], - "type": "object" - }, - "VpcConfig": { - "additionalProperties": false, - "properties": { - "SecurityGroups": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "SubnetIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "SubnetIds" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::MSK::ServerlessCluster", - "handlers": { - "create": { - "permissions": [ - "kafka:CreateClusterV2", - "kafka:TagResource", - "kafka:DescribeClusterV2", - "ec2:CreateVpcEndpoint", - "ec2:CreateTags", - "ec2:DescribeVpcAttribute", - "ec2:DescribeSubnets", - "ec2:DescribeVpcEndpoints", - "ec2:DescribeVpcs", - "ec2:DescribeSecurityGroups" - ], - "timeoutInMinutes": 120 - }, - "delete": { - "permissions": [ - "kafka:DeleteCluster", - "kafka:DescribeClusterV2", - "ec2:DeleteVpcEndpoints" - ], - "timeoutInMinutes": 75 - }, - "list": { - "permissions": [ - "kafka:ListClustersV2" - ] - }, - "read": { - "permissions": [ - "kafka:DescribeClusterV2" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "type": "string" - }, - "ClientAuthentication": { - "$ref": "#/definitions/ClientAuthentication" - }, - "ClusterName": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { - "type": "string" - } - }, - "type": "object" - }, - "VpcConfigs": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/VpcConfig" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "ClusterName", - "VpcConfigs", - "ClientAuthentication" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::MSK::ServerlessCluster" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterName", + "/properties/VpcConfigs", + "/properties/ClientAuthentication", + "/properties/Tags" + ], + "definitions": { + "ClientAuthentication": { + "additionalProperties": false, + "properties": { + "Sasl": { + "$ref": "#/definitions/Sasl" + } + }, + "required": [ + "Sasl" + ], + "type": "object" + }, + "Iam": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "Sasl": { + "additionalProperties": false, + "properties": { + "Iam": { + "$ref": "#/definitions/Iam" + } + }, + "required": [ + "Iam" + ], + "type": "object" + }, + "VpcConfig": { + "additionalProperties": false, + "properties": { + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "SubnetIds" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::MSK::ServerlessCluster", + "handlers": { + "create": { + "permissions": [ + "kafka:CreateClusterV2", + "kafka:TagResource", + "kafka:DescribeClusterV2", + "ec2:CreateVpcEndpoint", + "ec2:CreateTags", + "ec2:DescribeVpcAttribute", + "ec2:DescribeSubnets", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeVpcs", + "ec2:DescribeSecurityGroups" + ], + "timeoutInMinutes": 120 + }, + "delete": { + "permissions": [ + "kafka:DeleteCluster", + "kafka:DescribeClusterV2", + "ec2:DeleteVpcEndpoints" + ], + "timeoutInMinutes": 75 + }, + "list": { + "permissions": [ + "kafka:ListClustersV2" + ] + }, + "read": { + "permissions": [ + "kafka:DescribeClusterV2" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "type": "string" + }, + "ClientAuthentication": { + "$ref": "#/definitions/ClientAuthentication" + }, + "ClusterName": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { + "type": "string" + } + }, + "type": "object" + }, + "VpcConfigs": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VpcConfig" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "ClusterName", + "VpcConfigs", + "ClientAuthentication" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "kafka:TagResource", + "kafka:UntagResource", + "kafka:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::MSK::ServerlessCluster" +} diff --git a/src/schema/aws-msk-vpcconnection.json b/src/schema/aws-msk-vpcconnection.json index b756b299..74de6407 100644 --- a/src/schema/aws-msk-vpcconnection.json +++ b/src/schema/aws-msk-vpcconnection.json @@ -1,166 +1,166 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClientSubnets", - "/properties/Authentication", - "/properties/SecurityGroups", - "/properties/TargetClusterArn", - "/properties/VpcId" - ], - "definitions": { - "Authentication": { - "description": "The type of private link authentication", - "enum": [ - "SASL_IAM", - "SASL_SCRAM", - "TLS" - ], - "maxLength": 10, - "minLength": 3, - "type": "string" - }, - "ClientSubnets": { - "insertionOrder": false, - "items": { - "pattern": "^(subnet-)([a-z0-9]+)\\Z", - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "insertionOrder": false, - "items": { - "pattern": "^(sg-)([a-z0-9]+)\\Z", - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { - "type": "string" - } - }, - "type": "object" - }, - "VpcId": { - "pattern": "^(vpc-)([a-z0-9]+)\\Z", - "type": "string" - } - }, - "description": "Resource Type definition for AWS::MSK::VpcConnection", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeVpcEndpoints", - "ec2:AcceptVpcEndpointConnections", - "ec2:RejectVpcEndpointConnections", - "ec2:DescribeVpcEndpointConnections", - "ec2:CreateTags", - "iam:AttachRolePolicy", - "iam:CreateServiceLinkedRole", - "iam:PutRolePolicy", - "kafka:CreateVpcConnection", - "kafka:DescribeVpcConnection", - "kafka:TagResource", - "kms:CreateGrant", - "kms:DescribeKey" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteVpcEndpoint", - "ec2:DeleteVpcEndpoints", - "ec2:DescribeVpcEndpoints", - "ec2:DescribeVpcEndpointConnections", - "kafka:DeleteVpcConnection", - "kafka:DescribeVpcConnection", - "kms:CreateGrant", - "kms:DescribeKey" - ] - }, - "list": { - "permissions": [ - "kafka:ListVpcConnections", - "kms:CreateGrant", - "kms:DescribeKey" - ] - }, - "read": { - "permissions": [ - "kafka:DescribeVpcConnection", - "kms:CreateGrant", - "kms:DescribeKey" - ] - }, - "update": { - "permissions": [ - "kafka:DescribeVpcConnection", - "kms:CreateGrant", - "kms:DescribeKey", - "kafka:TagResource", - "kafka:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Authentication": { - "$ref": "#/definitions/Authentication" - }, - "ClientSubnets": { - "$ref": "#/definitions/ClientSubnets" - }, - "SecurityGroups": { - "$ref": "#/definitions/SecurityGroups" - }, - "Tags": { - "$ref": "#/definitions/Tags" - }, - "TargetClusterArn": { - "description": "The Amazon Resource Name (ARN) of the target cluster", - "pattern": "^arn:[\\w-]+:kafka:[\\w-]+:\\d+:cluster.*\\Z", - "type": "string" - }, - "VpcId": { - "$ref": "#/definitions/VpcId" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Authentication", - "ClientSubnets", - "SecurityGroups", - "TargetClusterArn", - "VpcId" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "kafka:TagResource", - "kafka:UntagResource", - "kafka:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MSK::VpcConnection" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClientSubnets", + "/properties/Authentication", + "/properties/SecurityGroups", + "/properties/TargetClusterArn", + "/properties/VpcId" + ], + "definitions": { + "Authentication": { + "description": "The type of private link authentication", + "enum": [ + "SASL_IAM", + "SASL_SCRAM", + "TLS" + ], + "maxLength": 10, + "minLength": 3, + "type": "string" + }, + "ClientSubnets": { + "insertionOrder": false, + "items": { + "pattern": "^(subnet-)([a-z0-9]+)\\Z", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "pattern": "^(sg-)([a-z0-9]+)\\Z", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { + "type": "string" + } + }, + "type": "object" + }, + "VpcId": { + "pattern": "^(vpc-)([a-z0-9]+)\\Z", + "type": "string" + } + }, + "description": "Resource Type definition for AWS::MSK::VpcConnection", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpcEndpoint", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcAttribute", + "ec2:DescribeVpcs", + "ec2:DescribeVpcEndpoints", + "ec2:AcceptVpcEndpointConnections", + "ec2:RejectVpcEndpointConnections", + "ec2:DescribeVpcEndpointConnections", + "ec2:CreateTags", + "iam:AttachRolePolicy", + "iam:CreateServiceLinkedRole", + "iam:PutRolePolicy", + "kafka:CreateVpcConnection", + "kafka:DescribeVpcConnection", + "kafka:TagResource", + "kms:CreateGrant", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpcEndpoint", + "ec2:DeleteVpcEndpoints", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeVpcEndpointConnections", + "kafka:DeleteVpcConnection", + "kafka:DescribeVpcConnection", + "kms:CreateGrant", + "kms:DescribeKey" + ] + }, + "list": { + "permissions": [ + "kafka:ListVpcConnections", + "kms:CreateGrant", + "kms:DescribeKey" + ] + }, + "read": { + "permissions": [ + "kafka:DescribeVpcConnection", + "kms:CreateGrant", + "kms:DescribeKey" + ] + }, + "update": { + "permissions": [ + "kafka:DescribeVpcConnection", + "kms:CreateGrant", + "kms:DescribeKey", + "kafka:TagResource", + "kafka:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Authentication": { + "$ref": "#/definitions/Authentication" + }, + "ClientSubnets": { + "$ref": "#/definitions/ClientSubnets" + }, + "SecurityGroups": { + "$ref": "#/definitions/SecurityGroups" + }, + "Tags": { + "$ref": "#/definitions/Tags" + }, + "TargetClusterArn": { + "description": "The Amazon Resource Name (ARN) of the target cluster", + "pattern": "^arn:[\\w-]+:kafka:[\\w-]+:\\d+:cluster.*\\Z", + "type": "string" + }, + "VpcId": { + "$ref": "#/definitions/VpcId" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Authentication", + "ClientSubnets", + "SecurityGroups", + "TargetClusterArn", + "VpcId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "kafka:TagResource", + "kafka:UntagResource", + "kafka:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MSK::VpcConnection" +} diff --git a/src/schema/aws-mwaa-environment.json b/src/schema/aws-mwaa-environment.json index 0a8762e9..b96676da 100644 --- a/src/schema/aws-mwaa-environment.json +++ b/src/schema/aws-mwaa-environment.json @@ -1,524 +1,566 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/KmsKey", - "/properties/NetworkConfiguration/SubnetIds", - "/properties/EndpointManagement" - ], - "definitions": { - "AirflowArn": { - "description": "", - "maxLength": 1224, - "minLength": 1, - "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:airflow:[a-z0-9\\-]+:\\d{12}:environment/\\w+", - "type": "string" - }, - "AirflowVersion": { - "description": "Version of airflow to deploy to the environment.", - "maxLength": 32, - "pattern": "^[0-9a-z.]+$", - "type": "string" - }, - "CeleryExecutorQueue": { - "description": "The celery executor queue associated with the environment.", - "maxLength": 1224, - "type": "string" - }, - "CloudWatchLogGroupArn": { - "description": "", - "maxLength": 1224, - "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:logs:[a-z0-9\\-]+:\\d{12}:log-group:\\w+", - "type": "string" - }, - "ConfigKey": { - "description": "", - "maxLength": 64, - "pattern": "^[a-z]+([a-z._]*[a-z]+)?$", - "type": "string" - }, - "ConfigValue": { - "description": "", - "maxLength": 256, - "pattern": ".*", - "type": "string" - }, - "CreatedAt": { - "description": "When the environment resource was created.", - "type": "string" - }, - "DatabaseVpcEndpointService": { - "description": "The database VPC endpoint service name.", - "maxLength": 1224, - "type": "string" - }, - "EndpointManagement": { - "description": "Defines whether the VPC endpoints configured for the environment are created, and managed, by the customer or by Amazon MWAA.", - "enum": [ - "CUSTOMER", - "SERVICE" - ], - "type": "string" - }, - "EnvironmentArn": { - "description": "ARN for the MWAA environment.", - "maxLength": 1224, - "minLength": 1, - "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:airflow:[a-z0-9\\-]+:\\d{12}:environment/\\w+", - "type": "string" - }, - "EnvironmentClass": { - "description": "Templated configuration for airflow processes and backing infrastructure.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "EnvironmentName": { - "description": "Customer-defined identifier for the environment, unique per customer region.", - "maxLength": 80, - "minLength": 1, - "pattern": "^[a-zA-Z][0-9a-zA-Z\\-_]*$", - "type": "string" - }, - "EnvironmentStatus": { - "description": "The status of the environment.", - "enum": [ - "CREATING", - "CREATE_FAILED", - "AVAILABLE", - "UPDATING", - "DELETING", - "DELETED", - "UPDATE_FAILED", - "UNAVAILABLE", - "PENDING" - ], - "type": "string" - }, - "ErrorCode": { - "description": "The error code associated with an error.", - "type": "string" - }, - "ErrorMessage": { - "description": "Error message describing a failed operation.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^.+$", - "type": "string" - }, - "ExecutionRoleArn": { - "description": "IAM role to be used by tasks.", - "maxLength": 1224, - "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "KmsKey": { - "description": "The identifier of the AWS Key Management Service (AWS KMS) customer master key (CMK) to use for MWAA data encryption.\n\n You can specify the CMK using any of the following:\n\n Key ID. For example, key/1234abcd-12ab-34cd-56ef-1234567890ab.\n\n Key alias. For example, alias/ExampleAlias.\n\n Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef.\n\n Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.\n\n AWS authenticates the CMK asynchronously. Therefore, if you specify an ID, alias, or ARN that is not valid, the action can appear to complete, but eventually fails.", - "maxLength": 1224, - "pattern": "^(((arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:kms:[a-z]{2}-[a-z]+-\\d:\\d+:)?key\\/)?[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|(arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):kms:[a-z]{2}-[a-z]+-\\d:\\d+:)?alias/.+)$", - "type": "string" - }, - "LastUpdate": { - "additionalProperties": false, - "description": "Details about the last update performed on the environment.", - "properties": { - "CreatedAt": { - "$ref": "#/definitions/UpdateCreatedAt" - }, - "Error": { - "$ref": "#/definitions/UpdateError" - }, - "Status": { - "$ref": "#/definitions/UpdateStatus" - } - }, - "type": "object" - }, - "LoggingConfiguration": { - "additionalProperties": false, - "description": "Logging configuration for the environment.", - "properties": { - "DagProcessingLogs": { - "$ref": "#/definitions/ModuleLoggingConfiguration" - }, - "SchedulerLogs": { - "$ref": "#/definitions/ModuleLoggingConfiguration" - }, - "TaskLogs": { - "$ref": "#/definitions/ModuleLoggingConfiguration" - }, - "WebserverLogs": { - "$ref": "#/definitions/ModuleLoggingConfiguration" - }, - "WorkerLogs": { - "$ref": "#/definitions/ModuleLoggingConfiguration" - } - }, - "type": "object" - }, - "LoggingConfigurationInput": { - "additionalProperties": false, - "description": "Configures logging for the environment.", - "properties": { - "DagProcessingLogs": { - "$ref": "#/definitions/ModuleLoggingConfigurationInput" - }, - "SchedulerLogs": { - "$ref": "#/definitions/ModuleLoggingConfigurationInput" - }, - "TaskLogs": { - "$ref": "#/definitions/ModuleLoggingConfigurationInput" - }, - "WebserverLogs": { - "$ref": "#/definitions/ModuleLoggingConfigurationInput" - }, - "WorkerLogs": { - "$ref": "#/definitions/ModuleLoggingConfigurationInput" - } - }, - "type": "object" - }, - "LoggingEnabled": { - "description": "", - "type": "boolean" - }, - "LoggingLevel": { - "description": "", - "enum": [ - "CRITICAL", - "ERROR", - "WARNING", - "INFO", - "DEBUG" - ], - "type": "string" - }, - "MaxWebservers": { - "description": "Maximum webserver compute units.", - "minimum": 1, - "type": "integer" - }, - "MaxWorkers": { - "description": "Maximum worker compute units.", - "minimum": 1, - "type": "integer" - }, - "MinWebservers": { - "description": "Minimum webserver compute units.", - "minimum": 1, - "type": "integer" - }, - "MinWorkers": { - "description": "Minimum worker compute units.", - "minimum": 1, - "type": "integer" - }, - "ModuleLoggingConfiguration": { - "additionalProperties": false, - "description": "Logging configuration for a specific airflow component.", - "properties": { - "CloudWatchLogGroupArn": { - "$ref": "#/definitions/CloudWatchLogGroupArn" - }, - "Enabled": { - "$ref": "#/definitions/LoggingEnabled" - }, - "LogLevel": { - "$ref": "#/definitions/LoggingLevel" - } - }, - "type": "object" - }, - "ModuleLoggingConfigurationInput": { - "additionalProperties": false, - "description": "Configures airflow component logging for the environment.", - "properties": { - "Enabled": { - "$ref": "#/definitions/LoggingEnabled" - }, - "LogLevel": { - "$ref": "#/definitions/LoggingLevel" - } - }, - "type": "object" - }, - "NetworkConfiguration": { - "additionalProperties": false, - "description": "Configures the network resources of the environment.", - "properties": { - "SecurityGroupIds": { - "description": "A list of security groups to use for the environment.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/SecurityGroupId" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "SubnetIds": { - "description": "A list of subnets to use for the environment. These must be private subnets, in the same VPC, in two different availability zones.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/SubnetId" - }, - "maxItems": 2, - "minItems": 2, - "type": "array" - } - }, - "type": "object" - }, - "RelativePath": { - "description": "Represents an S3 prefix relative to the root of an S3 bucket.", - "maxLength": 1024, - "pattern": ".*", - "type": "string" - }, - "S3BucketArn": { - "description": "ARN for the AWS S3 bucket to use as the source of DAGs and plugins for the environment.", - "maxLength": 1224, - "minLength": 1, - "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:s3:::[a-z0-9.\\-]+$", - "type": "string" - }, - "S3ObjectVersion": { - "description": "Represents an version ID for an S3 object.", - "maxLength": 1024, - "type": "string" - }, - "Schedulers": { - "description": "Scheduler compute units.", - "minimum": 1, - "type": "integer" - }, - "SecurityGroupId": { - "description": "", - "maxLength": 1024, - "minLength": 1, - "pattern": "^sg-[a-zA-Z0-9\\-._]+$", - "type": "string" - }, - "ServiceRoleArn": { - "description": "IAM role to be used by MWAA to perform AWS API calls on behalf of the customer.", - "maxLength": 1224, - "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "SubnetId": { - "description": "", - "maxLength": 1024, - "pattern": "^subnet-[a-zA-Z0-9\\-._]+$", - "type": "string" - }, - "UpdateCreatedAt": { - "description": "When the update request was created.", - "type": "string" - }, - "UpdateError": { - "additionalProperties": false, - "description": "The error associated with an update request.", - "properties": { - "ErrorCode": { - "$ref": "#/definitions/ErrorCode" - }, - "ErrorMessage": { - "$ref": "#/definitions/ErrorMessage" - } - }, - "type": "object" - }, - "UpdateStatus": { - "description": "", - "enum": [ - "SUCCESS", - "PENDING", - "FAILED" - ], - "type": "string" - }, - "WebserverAccessMode": { - "description": "Choice for mode of webserver access including over public internet or via private VPC endpoint.", - "enum": [ - "PRIVATE_ONLY", - "PUBLIC_ONLY" - ], - "type": "string" - }, - "WebserverUrl": { - "description": "Url endpoint for the environment's Airflow UI.", - "maxLength": 256, - "minLength": 1, - "pattern": "^https://.+$", - "type": "string" - }, - "WebserverVpcEndpointService": { - "description": "The webserver VPC endpoint service name, applicable if private webserver access mode selected.", - "maxLength": 1224, - "type": "string" - }, - "WeeklyMaintenanceWindowStart": { - "description": "Start time for the weekly maintenance window.", - "maxLength": 9, - "pattern": "(MON|TUE|WED|THU|FRI|SAT|SUN):([01]\\d|2[0-3]):(00|30)", - "type": "string" - } - }, - "description": "Resource schema for AWS::MWAA::Environment", - "handlers": { - "create": { - "permissions": [ - "airflow:CreateEnvironment" - ], - "timeoutInMinutes": 180 - }, - "delete": { - "permissions": [ - "airflow:DeleteEnvironment" - ] - }, - "list": { - "permissions": [ - "airflow:ListEnvironments" - ] - }, - "read": { - "permissions": [ - "airflow:GetEnvironment" - ] - }, - "update": { - "permissions": [ - "airflow:UpdateEnvironment", - "airflow:TagResource", - "airflow:UntagResource" - ], - "timeoutInMinutes": 480 - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "AirflowConfigurationOptions": { - "description": "Key/value pairs representing Airflow configuration variables.\n Keys are prefixed by their section:\n\n [core]\n dags_folder={AIRFLOW_HOME}/dags\n\n Would be represented as\n\n \"core.dags_folder\": \"{AIRFLOW_HOME}/dags\"", - "type": "object" - }, - "AirflowVersion": { - "$ref": "#/definitions/AirflowVersion" - }, - "Arn": { - "$ref": "#/definitions/EnvironmentArn" - }, - "CeleryExecutorQueue": { - "$ref": "#/definitions/CeleryExecutorQueue" - }, - "DagS3Path": { - "$ref": "#/definitions/RelativePath" - }, - "DatabaseVpcEndpointService": { - "$ref": "#/definitions/DatabaseVpcEndpointService" - }, - "EndpointManagement": { - "$ref": "#/definitions/EndpointManagement" - }, - "EnvironmentClass": { - "$ref": "#/definitions/EnvironmentClass" - }, - "ExecutionRoleArn": { - "$ref": "#/definitions/ExecutionRoleArn" - }, - "KmsKey": { - "$ref": "#/definitions/KmsKey" - }, - "LoggingConfiguration": { - "$ref": "#/definitions/LoggingConfiguration" - }, - "MaxWebservers": { - "$ref": "#/definitions/MaxWebservers" - }, - "MaxWorkers": { - "$ref": "#/definitions/MaxWorkers" - }, - "MinWebservers": { - "$ref": "#/definitions/MinWebservers" - }, - "MinWorkers": { - "$ref": "#/definitions/MinWorkers" - }, - "Name": { - "$ref": "#/definitions/EnvironmentName" - }, - "NetworkConfiguration": { - "$ref": "#/definitions/NetworkConfiguration" - }, - "PluginsS3ObjectVersion": { - "$ref": "#/definitions/S3ObjectVersion" - }, - "PluginsS3Path": { - "$ref": "#/definitions/RelativePath" - }, - "RequirementsS3ObjectVersion": { - "$ref": "#/definitions/S3ObjectVersion" - }, - "RequirementsS3Path": { - "$ref": "#/definitions/RelativePath" - }, - "Schedulers": { - "$ref": "#/definitions/Schedulers" - }, - "SourceBucketArn": { - "$ref": "#/definitions/S3BucketArn" - }, - "StartupScriptS3ObjectVersion": { - "$ref": "#/definitions/S3ObjectVersion" - }, - "StartupScriptS3Path": { - "$ref": "#/definitions/RelativePath" - }, - "Tags": { - "description": "A map of tags for the environment.", - "type": "object" - }, - "WebserverAccessMode": { - "$ref": "#/definitions/WebserverAccessMode" - }, - "WebserverUrl": { - "$ref": "#/definitions/WebserverUrl" - }, - "WebserverVpcEndpointService": { - "$ref": "#/definitions/WebserverVpcEndpointService" - }, - "WeeklyMaintenanceWindowStart": { - "$ref": "#/definitions/WeeklyMaintenanceWindowStart" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CeleryExecutorQueue", - "/properties/DatabaseVpcEndpointService", - "/properties/WebserverVpcEndpointService", - "/properties/WebserverUrl", - "/properties/LoggingConfiguration/DagProcessingLogs/CloudWatchLogGroupArn", - "/properties/LoggingConfiguration/SchedulerLogs/CloudWatchLogGroupArn", - "/properties/LoggingConfiguration/WebserverLogs/CloudWatchLogGroupArn", - "/properties/LoggingConfiguration/WorkerLogs/CloudWatchLogGroupArn", - "/properties/LoggingConfiguration/TaskLogs/CloudWatchLogGroupArn" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mwaa.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "airflow:UntagResource", - "airflow:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::MWAA::Environment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/KmsKey", + "/properties/NetworkConfiguration/SubnetIds", + "/properties/EndpointManagement" + ], + "definitions": { + "AirflowArn": { + "description": "", + "maxLength": 1224, + "minLength": 1, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:airflow:[a-z0-9\\-]+:\\d{12}:environment/\\w+", + "type": "string" + }, + "AirflowVersion": { + "description": "Version of airflow to deploy to the environment.", + "maxLength": 32, + "pattern": "^[0-9a-z.]+$", + "type": "string" + }, + "CeleryExecutorQueue": { + "description": "The celery executor queue associated with the environment.", + "maxLength": 1224, + "type": "string" + }, + "CloudWatchLogGroupArn": { + "description": "", + "maxLength": 1224, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:logs:[a-z0-9\\-]+:\\d{12}:log-group:\\w+", + "type": "string" + }, + "ConfigKey": { + "description": "", + "maxLength": 64, + "pattern": "^[a-z]+([a-z._]*[a-z]+)?$", + "type": "string" + }, + "ConfigValue": { + "description": "", + "maxLength": 256, + "pattern": ".*", + "type": "string" + }, + "CreatedAt": { + "description": "When the environment resource was created.", + "type": "string" + }, + "DatabaseVpcEndpointService": { + "description": "The database VPC endpoint service name.", + "maxLength": 1224, + "type": "string" + }, + "EndpointManagement": { + "description": "Defines whether the VPC endpoints configured for the environment are created, and managed, by the customer or by Amazon MWAA.", + "enum": [ + "CUSTOMER", + "SERVICE" + ], + "type": "string" + }, + "EnvironmentArn": { + "description": "ARN for the MWAA environment.", + "maxLength": 1224, + "minLength": 1, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:airflow:[a-z0-9\\-]+:\\d{12}:environment/\\w+", + "type": "string" + }, + "EnvironmentClass": { + "description": "Templated configuration for airflow processes and backing infrastructure.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "EnvironmentName": { + "description": "Customer-defined identifier for the environment, unique per customer region.", + "maxLength": 80, + "minLength": 1, + "pattern": "^[a-zA-Z][0-9a-zA-Z\\-_]*$", + "type": "string" + }, + "EnvironmentStatus": { + "description": "The status of the environment.", + "enum": [ + "CREATING", + "CREATE_FAILED", + "AVAILABLE", + "UPDATING", + "DELETING", + "DELETED", + "UPDATE_FAILED", + "UNAVAILABLE", + "PENDING" + ], + "type": "string" + }, + "ErrorCode": { + "description": "The error code associated with an error.", + "type": "string" + }, + "ErrorMessage": { + "description": "Error message describing a failed operation.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^.+$", + "type": "string" + }, + "ExecutionRoleArn": { + "description": "IAM role to be used by tasks.", + "maxLength": 1224, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "KmsKey": { + "description": "The identifier of the AWS Key Management Service (AWS KMS) customer master key (CMK) to use for MWAA data encryption.\n\n You can specify the CMK using any of the following:\n\n Key ID. For example, key/1234abcd-12ab-34cd-56ef-1234567890ab.\n\n Key alias. For example, alias/ExampleAlias.\n\n Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef.\n\n Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.\n\n AWS authenticates the CMK asynchronously. Therefore, if you specify an ID, alias, or ARN that is not valid, the action can appear to complete, but eventually fails.", + "maxLength": 1224, + "pattern": "^(((arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:kms:[a-z]{2}-[a-z]+-\\d:\\d+:)?key\\/)?[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|(arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):kms:[a-z]{2}-[a-z]+-\\d:\\d+:)?alias/.+)$", + "type": "string" + }, + "LastUpdate": { + "additionalProperties": false, + "description": "Details about the last update performed on the environment.", + "properties": { + "CreatedAt": { + "$ref": "#/definitions/UpdateCreatedAt" + }, + "Error": { + "$ref": "#/definitions/UpdateError" + }, + "Status": { + "$ref": "#/definitions/UpdateStatus" + } + }, + "type": "object" + }, + "LoggingConfiguration": { + "additionalProperties": false, + "description": "Logging configuration for the environment.", + "properties": { + "DagProcessingLogs": { + "$ref": "#/definitions/ModuleLoggingConfiguration" + }, + "SchedulerLogs": { + "$ref": "#/definitions/ModuleLoggingConfiguration" + }, + "TaskLogs": { + "$ref": "#/definitions/ModuleLoggingConfiguration" + }, + "WebserverLogs": { + "$ref": "#/definitions/ModuleLoggingConfiguration" + }, + "WorkerLogs": { + "$ref": "#/definitions/ModuleLoggingConfiguration" + } + }, + "type": "object" + }, + "LoggingConfigurationInput": { + "additionalProperties": false, + "description": "Configures logging for the environment.", + "properties": { + "DagProcessingLogs": { + "$ref": "#/definitions/ModuleLoggingConfigurationInput" + }, + "SchedulerLogs": { + "$ref": "#/definitions/ModuleLoggingConfigurationInput" + }, + "TaskLogs": { + "$ref": "#/definitions/ModuleLoggingConfigurationInput" + }, + "WebserverLogs": { + "$ref": "#/definitions/ModuleLoggingConfigurationInput" + }, + "WorkerLogs": { + "$ref": "#/definitions/ModuleLoggingConfigurationInput" + } + }, + "type": "object" + }, + "LoggingEnabled": { + "description": "", + "type": "boolean" + }, + "LoggingLevel": { + "description": "", + "enum": [ + "CRITICAL", + "ERROR", + "WARNING", + "INFO", + "DEBUG" + ], + "type": "string" + }, + "MaxWebservers": { + "description": "Maximum webserver compute units.", + "minimum": 1, + "type": "integer" + }, + "MaxWorkers": { + "description": "Maximum worker compute units.", + "minimum": 1, + "type": "integer" + }, + "MinWebservers": { + "description": "Minimum webserver compute units.", + "minimum": 1, + "type": "integer" + }, + "MinWorkers": { + "description": "Minimum worker compute units.", + "minimum": 1, + "type": "integer" + }, + "ModuleLoggingConfiguration": { + "additionalProperties": false, + "description": "Logging configuration for a specific airflow component.", + "properties": { + "CloudWatchLogGroupArn": { + "$ref": "#/definitions/CloudWatchLogGroupArn" + }, + "Enabled": { + "$ref": "#/definitions/LoggingEnabled" + }, + "LogLevel": { + "$ref": "#/definitions/LoggingLevel" + } + }, + "type": "object" + }, + "ModuleLoggingConfigurationInput": { + "additionalProperties": false, + "description": "Configures airflow component logging for the environment.", + "properties": { + "Enabled": { + "$ref": "#/definitions/LoggingEnabled" + }, + "LogLevel": { + "$ref": "#/definitions/LoggingLevel" + } + }, + "type": "object" + }, + "NetworkConfiguration": { + "additionalProperties": false, + "description": "Configures the network resources of the environment.", + "properties": { + "SecurityGroupIds": { + "description": "A list of security groups to use for the environment.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/SecurityGroupId" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "SubnetIds": { + "description": "A list of subnets to use for the environment. These must be private subnets, in the same VPC, in two different availability zones.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/SubnetId" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + } + }, + "type": "object" + }, + "RelativePath": { + "description": "Represents an S3 prefix relative to the root of an S3 bucket.", + "maxLength": 1024, + "pattern": ".*", + "type": "string" + }, + "S3BucketArn": { + "description": "ARN for the AWS S3 bucket to use as the source of DAGs and plugins for the environment.", + "maxLength": 1224, + "minLength": 1, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:s3:::[a-z0-9.\\-]+$", + "type": "string" + }, + "S3ObjectVersion": { + "description": "Represents an version ID for an S3 object.", + "maxLength": 1024, + "type": "string" + }, + "Schedulers": { + "description": "Scheduler compute units.", + "minimum": 1, + "type": "integer" + }, + "SecurityGroupId": { + "description": "", + "maxLength": 1024, + "minLength": 1, + "pattern": "^sg-[a-zA-Z0-9\\-._]+$", + "type": "string" + }, + "ServiceRoleArn": { + "description": "IAM role to be used by MWAA to perform AWS API calls on behalf of the customer.", + "maxLength": 1224, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b)(-[a-z]+)?:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "SubnetId": { + "description": "", + "maxLength": 1024, + "pattern": "^subnet-[a-zA-Z0-9\\-._]+$", + "type": "string" + }, + "UpdateCreatedAt": { + "description": "When the update request was created.", + "type": "string" + }, + "UpdateError": { + "additionalProperties": false, + "description": "The error associated with an update request.", + "properties": { + "ErrorCode": { + "$ref": "#/definitions/ErrorCode" + }, + "ErrorMessage": { + "$ref": "#/definitions/ErrorMessage" + } + }, + "type": "object" + }, + "UpdateStatus": { + "description": "", + "enum": [ + "SUCCESS", + "PENDING", + "FAILED" + ], + "type": "string" + }, + "WebserverAccessMode": { + "description": "Choice for mode of webserver access including over public internet or via private VPC endpoint.", + "enum": [ + "PRIVATE_ONLY", + "PUBLIC_ONLY" + ], + "type": "string" + }, + "WebserverUrl": { + "description": "Url endpoint for the environment's Airflow UI.", + "maxLength": 256, + "minLength": 1, + "pattern": "^https://.+$", + "type": "string" + }, + "WebserverVpcEndpointService": { + "description": "The webserver VPC endpoint service name, applicable if private webserver access mode selected.", + "maxLength": 1224, + "type": "string" + }, + "WeeklyMaintenanceWindowStart": { + "description": "Start time for the weekly maintenance window.", + "maxLength": 9, + "pattern": "(MON|TUE|WED|THU|FRI|SAT|SUN):([01]\\d|2[0-3]):(00|30)", + "type": "string" + } + }, + "description": "Resource schema for AWS::MWAA::Environment", + "handlers": { + "create": { + "permissions": [ + "airflow:GetEnvironment", + "airflow:CreateEnvironment", + "airflow:TagResource", + "airflow:UntagResource", + "iam:PassRole", + "iam:ListRoles", + "iam:CreatePolicy", + "iam:AttachRolePolicy", + "iam:CreateRole", + "iam:CreateServiceLinkedRole", + "s3:GetBucketLocation", + "s3:ListAllMyBuckets", + "s3:ListBucket", + "s3:ListBucketVersions", + "s3:CreateBucket", + "s3:PutObject", + "s3:GetEncryptionConfiguration", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "ec2:DescribeRouteTables", + "ec2:AuthorizeSecurityGroupIngress", + "ec2:CreateSecurityGroup", + "ec2:CreateVpcEndpoint", + "ec2:CreateNetworkInterface", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases" + ], + "timeoutInMinutes": 180 + }, + "delete": { + "permissions": [ + "airflow:GetEnvironment", + "airflow:DeleteEnvironment" + ] + }, + "list": { + "permissions": [ + "airflow:ListEnvironments" + ] + }, + "read": { + "permissions": [ + "airflow:GetEnvironment" + ] + }, + "update": { + "permissions": [ + "airflow:GetEnvironment", + "airflow:UpdateEnvironment", + "airflow:TagResource", + "airflow:UntagResource", + "iam:PassRole", + "iam:ListRoles", + "iam:AttachRolePolicy", + "s3:GetBucketLocation", + "s3:ListBucket", + "s3:ListBucketVersions", + "s3:GetEncryptionConfiguration", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "ec2:DescribeRouteTables", + "kms:DescribeKey", + "kms:ListAliases" + ], + "timeoutInMinutes": 480 + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "AirflowConfigurationOptions": { + "description": "Key/value pairs representing Airflow configuration variables.\n Keys are prefixed by their section:\n\n [core]\n dags_folder={AIRFLOW_HOME}/dags\n\n Would be represented as\n\n \"core.dags_folder\": \"{AIRFLOW_HOME}/dags\"", + "type": "object" + }, + "AirflowVersion": { + "$ref": "#/definitions/AirflowVersion" + }, + "Arn": { + "$ref": "#/definitions/EnvironmentArn" + }, + "CeleryExecutorQueue": { + "$ref": "#/definitions/CeleryExecutorQueue" + }, + "DagS3Path": { + "$ref": "#/definitions/RelativePath" + }, + "DatabaseVpcEndpointService": { + "$ref": "#/definitions/DatabaseVpcEndpointService" + }, + "EndpointManagement": { + "$ref": "#/definitions/EndpointManagement" + }, + "EnvironmentClass": { + "$ref": "#/definitions/EnvironmentClass" + }, + "ExecutionRoleArn": { + "$ref": "#/definitions/ExecutionRoleArn" + }, + "KmsKey": { + "$ref": "#/definitions/KmsKey" + }, + "LoggingConfiguration": { + "$ref": "#/definitions/LoggingConfiguration" + }, + "MaxWebservers": { + "$ref": "#/definitions/MaxWebservers" + }, + "MaxWorkers": { + "$ref": "#/definitions/MaxWorkers" + }, + "MinWebservers": { + "$ref": "#/definitions/MinWebservers" + }, + "MinWorkers": { + "$ref": "#/definitions/MinWorkers" + }, + "Name": { + "$ref": "#/definitions/EnvironmentName" + }, + "NetworkConfiguration": { + "$ref": "#/definitions/NetworkConfiguration" + }, + "PluginsS3ObjectVersion": { + "$ref": "#/definitions/S3ObjectVersion" + }, + "PluginsS3Path": { + "$ref": "#/definitions/RelativePath" + }, + "RequirementsS3ObjectVersion": { + "$ref": "#/definitions/S3ObjectVersion" + }, + "RequirementsS3Path": { + "$ref": "#/definitions/RelativePath" + }, + "Schedulers": { + "$ref": "#/definitions/Schedulers" + }, + "SourceBucketArn": { + "$ref": "#/definitions/S3BucketArn" + }, + "StartupScriptS3ObjectVersion": { + "$ref": "#/definitions/S3ObjectVersion" + }, + "StartupScriptS3Path": { + "$ref": "#/definitions/RelativePath" + }, + "Tags": { + "description": "A map of tags for the environment.", + "type": "object" + }, + "WebserverAccessMode": { + "$ref": "#/definitions/WebserverAccessMode" + }, + "WebserverUrl": { + "$ref": "#/definitions/WebserverUrl" + }, + "WebserverVpcEndpointService": { + "$ref": "#/definitions/WebserverVpcEndpointService" + }, + "WeeklyMaintenanceWindowStart": { + "$ref": "#/definitions/WeeklyMaintenanceWindowStart" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CeleryExecutorQueue", + "/properties/DatabaseVpcEndpointService", + "/properties/WebserverVpcEndpointService", + "/properties/WebserverUrl", + "/properties/LoggingConfiguration/DagProcessingLogs/CloudWatchLogGroupArn", + "/properties/LoggingConfiguration/SchedulerLogs/CloudWatchLogGroupArn", + "/properties/LoggingConfiguration/WebserverLogs/CloudWatchLogGroupArn", + "/properties/LoggingConfiguration/WorkerLogs/CloudWatchLogGroupArn", + "/properties/LoggingConfiguration/TaskLogs/CloudWatchLogGroupArn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mwaa.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "airflow:UntagResource", + "airflow:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MWAA::Environment" +} diff --git a/src/schema/aws-neptune-dbcluster.json b/src/schema/aws-neptune-dbcluster.json index ec48d561..1750055c 100644 --- a/src/schema/aws-neptune-dbcluster.json +++ b/src/schema/aws-neptune-dbcluster.json @@ -1,337 +1,342 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AvailabilityZones", - "/properties/DBClusterIdentifier", - "/properties/DBSubnetGroupName", - "/properties/KmsKeyId", - "/properties/RestoreToTime", - "/properties/RestoreType", - "/properties/SnapshotIdentifier", - "/properties/SourceDBClusterIdentifier", - "/properties/StorageEncrypted", - "/properties/UseLatestRestorableTime" - ], - "definitions": { - "DBClusterRole": { - "additionalProperties": false, - "description": "Describes an AWS Identity and Access Management (IAM) role that is associated with a DB cluster.", - "properties": { - "FeatureName": { - "description": "The name of the feature associated with the AWS Identity and Access Management (IAM) role. For the list of supported feature names, see DBEngineVersion in the Amazon Neptune API Reference.", - "type": "string" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) of the IAM role that is associated with the DB cluster.", - "type": "string" - } - }, - "required": [ - "RoleArn" - ], - "type": "object" - }, - "ServerlessScalingConfiguration": { - "additionalProperties": false, - "description": "Contains the scaling configuration of an Neptune Serverless DB cluster.", - "properties": { - "MaxCapacity": { - "description": "The maximum number of Neptune capacity units (NCUs) for a DB instance in an Neptune Serverless cluster. You can specify NCU values in half-step increments, such as 40, 40.5, 41, and so on. The smallest value you can use is 2.5, whereas the largest is 128.", - "maximum": 128, - "minimum": 2.5, - "type": "number" - }, - "MinCapacity": { - "description": "The minimum number of Neptune capacity units (NCUs) for a DB instance in an Neptune Serverless cluster. You can specify NCU values in half-step increments, such as 8, 8.5, 9, and so on. The smallest value you can use is 1, whereas the largest is 128.", - "maximum": 128, - "minimum": 1, - "type": "number" - } - }, - "required": [ - "MinCapacity", - "MaxCapacity" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "The AWS::Neptune::DBCluster resource creates an Amazon Neptune DB cluster.", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "rds:AddRoleToDBCluster", - "rds:AddTagsToResource", - "rds:CreateDBCluster", - "rds:CreateDBInstance", - "rds:DescribeDBClusters", - "rds:ListTagsForResource", - "rds:ModifyDBCluster", - "rds:RestoreDBClusterFromSnapshot", - "rds:RestoreDBClusterToPointInTime", - "kms:CreateGrant", - "kms:DescribeKey" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "rds:DeleteDBCluster", - "rds:DeleteDBInstance", - "rds:DescribeDBClusters", - "rds:DescribeGlobalClusters", - "rds:ListTagsForResource", - "rds:RemoveFromGlobalCluster", - "rds:CreateDBClusterSnapshot", - "kms:CreateGrant", - "kms:DescribeKey" - ], - "timeoutInMinutes": 2160 - }, - "list": { - "permissions": [ - "rds:DescribeDBClusters", - "rds:ListTagsForResource", - "kms:CreateGrant", - "kms:DescribeKey" - ], - "timeoutInMinutes": 2160 - }, - "read": { - "permissions": [ - "rds:DescribeDBClusters", - "rds:ListTagsForResource", - "kms:CreateGrant", - "kms:DescribeKey" - ], - "timeoutInMinutes": 2160 - }, - "update": { - "permissions": [ - "ec2:DescribeSecurityGroups", - "iam:PassRole", - "rds:AddRoleToDBCluster", - "rds:AddTagsToResource", - "rds:DescribeDBClusters", - "rds:DescribeDBInstances", - "rds:DescribeDBSubnetGroups", - "rds:DescribeGlobalClusters", - "rds:ListTagsForResource", - "rds:ModifyDBCluster", - "rds:ModifyDBInstance", - "rds:RemoveFromGlobalCluster", - "rds:RemoveRoleFromDBCluster", - "rds:RemoveTagsFromResource", - "kms:CreateGrant", - "kms:DescribeKey" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/DBClusterIdentifier" - ], - "properties": { - "AssociatedRoles": { - "description": "Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/DBClusterRole" - }, - "type": "array", - "uniqueItems": true - }, - "AvailabilityZones": { - "description": "Provides the list of EC2 Availability Zones that instances in the DB cluster can be created in.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "BackupRetentionPeriod": { - "default": 1, - "description": "Specifies the number of days for which automatic DB snapshots are retained.", - "minimum": 1, - "type": "integer" - }, - "ClusterResourceId": { - "description": "The resource id for the DB cluster. For example: `cluster-ABCD1234EFGH5678IJKL90MNOP`. The cluster ID uniquely identifies the cluster and is used in things like IAM authentication policies.", - "type": "string" - }, - "CopyTagsToSnapshot": { - "description": "A value that indicates whether to copy all tags from the DB cluster to snapshots of the DB cluster. The default behaviour is not to copy them.", - "type": "boolean" - }, - "DBClusterIdentifier": { - "description": "The DB cluster identifier. Contains a user-supplied DB cluster identifier. This identifier is the unique key that identifies a DB cluster stored as a lowercase string.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", - "type": "string" - }, - "DBClusterParameterGroupName": { - "description": "Provides the name of the DB cluster parameter group.", - "type": "string" - }, - "DBInstanceParameterGroupName": { - "description": "The name of the DB parameter group to apply to all instances of the DB cluster. Used only in case of a major EngineVersion upgrade request.", - "type": "string" - }, - "DBPort": { - "description": "The port number on which the DB instances in the DB cluster accept connections. \n\nIf not specified, the default port used is `8182`. \n\nNote: `Port` property will soon be deprecated from this resource. Please update existing templates to rename it with new property `DBPort` having same functionalities.", - "type": "integer" - }, - "DBSubnetGroupName": { - "description": "Specifies information on the subnet group associated with the DB cluster, including the name, description, and subnets in the subnet group.", - "type": "string" - }, - "DeletionProtection": { - "description": "Indicates whether or not the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled.", - "type": "boolean" - }, - "EnableCloudwatchLogsExports": { - "description": "Specifies a list of log types that are enabled for export to CloudWatch Logs.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Endpoint": { - "description": "The connection endpoint for the DB cluster. For example: `mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`", - "type": "string" - }, - "EngineVersion": { - "description": "Indicates the database engine version.", - "type": "string" - }, - "IamAuthEnabled": { - "description": "True if mapping of Amazon Identity and Access Management (IAM) accounts to database accounts is enabled, and otherwise false.", - "type": "boolean" - }, - "KmsKeyId": { - "description": "The Amazon Resource Name (ARN) of the AWS KMS key that is used to encrypt the database instances in the DB cluster, such as arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. If you enable the StorageEncrypted property but don't specify this property, the default KMS key is used. If you specify this property, you must set the StorageEncrypted property to true.", - "type": "string" - }, - "Port": { - "description": "The port number on which the DB cluster accepts connections. For example: `8182`.", - "type": "string" - }, - "PreferredBackupWindow": { - "description": "Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod.", - "type": "string" - }, - "PreferredMaintenanceWindow": { - "description": "Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).", - "type": "string" - }, - "ReadEndpoint": { - "description": "The reader endpoint for the DB cluster. For example: `mystack-mydbcluster-ro-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`", - "type": "string" - }, - "RestoreToTime": { - "description": "Creates a new DB cluster from a DB snapshot or DB cluster snapshot.\n\nIf a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.\n\nIf a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.", - "type": "string" - }, - "RestoreType": { - "default": "full-copy", - "description": "Creates a new DB cluster from a DB snapshot or DB cluster snapshot.\n\nIf a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.\n\nIf a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.", - "type": "string" - }, - "ServerlessScalingConfiguration": { - "$ref": "#/definitions/ServerlessScalingConfiguration", - "description": "Contains the scaling configuration used by the Neptune Serverless Instances within this DB cluster." - }, - "SnapshotIdentifier": { - "description": "Specifies the identifier for a DB cluster snapshot. Must match the identifier of an existing snapshot.\n\nAfter you restore a DB cluster using a SnapshotIdentifier, you must specify the same SnapshotIdentifier for any future updates to the DB cluster. When you specify this property for an update, the DB cluster is not restored from the snapshot again, and the data in the database is not changed.\n\nHowever, if you don't specify the SnapshotIdentifier, an empty DB cluster is created, and the original DB cluster is deleted. If you specify a property that is different from the previous snapshot restore property, the DB cluster is restored from the snapshot specified by the SnapshotIdentifier, and the original DB cluster is deleted.", - "type": "string" - }, - "SourceDBClusterIdentifier": { - "description": "Creates a new DB cluster from a DB snapshot or DB cluster snapshot.\n\nIf a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.\n\nIf a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.", - "type": "string" - }, - "StorageEncrypted": { - "description": "Indicates whether the DB cluster is encrypted.\n\nIf you specify the KmsKeyId property, then you must enable encryption and set this property to true.\n\nIf you enable the StorageEncrypted property but don't specify KmsKeyId property, then the default KMS key is used. If you specify KmsKeyId property, then that KMS Key is used to encrypt the database instances in the DB cluster.\n\nIf you specify the SourceDBClusterIdentifier property and don't specify this property or disable it. The value is inherited from the source DB cluster, and if the DB cluster is encrypted, the KmsKeyId property from the source cluster is used.\n\nIf you specify the DBSnapshotIdentifier and don't specify this property or disable it. The value is inherited from the snapshot, and the specified KmsKeyId property from the snapshot is used.", - "type": "boolean" - }, - "Tags": { - "description": "The tags assigned to this cluster.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UseLatestRestorableTime": { - "description": "Creates a new DB cluster from a DB snapshot or DB cluster snapshot.\n\nIf a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.\n\nIf a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.", - "type": "boolean" - }, - "VpcSecurityGroupIds": { - "description": "Provides a list of VPC security groups that the DB cluster belongs to.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "propertyTransform": { - "/properties/DBClusterIdentifier": "$lowercase(DBClusterIdentifier)", - "/properties/DBClusterParameterGroupName": "$lowercase(DBClusterParameterGroupName)", - "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)", - "/properties/SnapshotIdentifier": "$lowercase(SnapshotIdentifier)", - "/properties/SourceDBClusterIdentifier": "$lowercase(SourceDBClusterIdentifier)" - }, - "readOnlyProperties": [ - "/properties/Endpoint", - "/properties/ClusterResourceId", - "/properties/Port", - "/properties/ReadEndpoint" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-neptune", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Neptune::DBCluster", - "writeOnlyProperties": [ - "/properties/DBInstanceParameterGroupName", - "/properties/RestoreToTime", - "/properties/RestoreType", - "/properties/SnapshotIdentifier", - "/properties/SourceDBClusterIdentifier", - "/properties/UseLatestRestorableTime" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AvailabilityZones", + "/properties/DBClusterIdentifier", + "/properties/DBSubnetGroupName", + "/properties/KmsKeyId", + "/properties/RestoreToTime", + "/properties/RestoreType", + "/properties/SnapshotIdentifier", + "/properties/SourceDBClusterIdentifier", + "/properties/StorageEncrypted", + "/properties/UseLatestRestorableTime" + ], + "definitions": { + "DBClusterRole": { + "additionalProperties": false, + "description": "Describes an AWS Identity and Access Management (IAM) role that is associated with a DB cluster.", + "properties": { + "FeatureName": { + "description": "The name of the feature associated with the AWS Identity and Access Management (IAM) role. For the list of supported feature names, see DBEngineVersion in the Amazon Neptune API Reference.", + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM role that is associated with the DB cluster.", + "type": "string" + } + }, + "required": [ + "RoleArn" + ], + "type": "object" + }, + "ServerlessScalingConfiguration": { + "additionalProperties": false, + "description": "Contains the scaling configuration of an Neptune Serverless DB cluster.", + "properties": { + "MaxCapacity": { + "description": "The maximum number of Neptune capacity units (NCUs) for a DB instance in an Neptune Serverless cluster. You can specify NCU values in half-step increments, such as 40, 40.5, 41, and so on. The smallest value you can use is 2.5, whereas the largest is 128.", + "maximum": 128, + "minimum": 2.5, + "type": "number" + }, + "MinCapacity": { + "description": "The minimum number of Neptune capacity units (NCUs) for a DB instance in an Neptune Serverless cluster. You can specify NCU values in half-step increments, such as 8, 8.5, 9, and so on. The smallest value you can use is 1, whereas the largest is 128.", + "maximum": 128, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "MinCapacity", + "MaxCapacity" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "The AWS::Neptune::DBCluster resource creates an Amazon Neptune DB cluster.", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "rds:AddRoleToDBCluster", + "rds:AddTagsToResource", + "rds:CreateDBCluster", + "rds:CreateDBInstance", + "rds:DescribeDBClusters", + "rds:ListTagsForResource", + "rds:ModifyDBCluster", + "rds:RestoreDBClusterFromSnapshot", + "rds:RestoreDBClusterToPointInTime", + "kms:CreateGrant", + "kms:DescribeKey" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "rds:DeleteDBCluster", + "rds:DeleteDBInstance", + "rds:DescribeDBClusters", + "rds:DescribeGlobalClusters", + "rds:ListTagsForResource", + "rds:RemoveFromGlobalCluster", + "rds:CreateDBClusterSnapshot", + "kms:CreateGrant", + "kms:DescribeKey" + ], + "timeoutInMinutes": 2160 + }, + "list": { + "permissions": [ + "rds:DescribeDBClusters", + "rds:ListTagsForResource", + "kms:CreateGrant", + "kms:DescribeKey" + ], + "timeoutInMinutes": 2160 + }, + "read": { + "permissions": [ + "rds:DescribeDBClusters", + "rds:ListTagsForResource", + "kms:CreateGrant", + "kms:DescribeKey" + ], + "timeoutInMinutes": 2160 + }, + "update": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "iam:PassRole", + "rds:AddRoleToDBCluster", + "rds:AddTagsToResource", + "rds:DescribeDBClusters", + "rds:DescribeDBInstances", + "rds:DescribeDBSubnetGroups", + "rds:DescribeGlobalClusters", + "rds:ListTagsForResource", + "rds:ModifyDBCluster", + "rds:ModifyDBInstance", + "rds:RemoveFromGlobalCluster", + "rds:RemoveRoleFromDBCluster", + "rds:RemoveTagsFromResource", + "kms:CreateGrant", + "kms:DescribeKey" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/DBClusterIdentifier" + ], + "properties": { + "AssociatedRoles": { + "description": "Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/DBClusterRole" + }, + "type": "array", + "uniqueItems": true + }, + "AvailabilityZones": { + "description": "Provides the list of EC2 Availability Zones that instances in the DB cluster can be created in.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "BackupRetentionPeriod": { + "default": 1, + "description": "Specifies the number of days for which automatic DB snapshots are retained.", + "minimum": 1, + "type": "integer" + }, + "ClusterResourceId": { + "description": "The resource id for the DB cluster. For example: `cluster-ABCD1234EFGH5678IJKL90MNOP`. The cluster ID uniquely identifies the cluster and is used in things like IAM authentication policies.", + "type": "string" + }, + "CopyTagsToSnapshot": { + "description": "A value that indicates whether to copy all tags from the DB cluster to snapshots of the DB cluster. The default behaviour is not to copy them.", + "type": "boolean" + }, + "DBClusterIdentifier": { + "description": "The DB cluster identifier. Contains a user-supplied DB cluster identifier. This identifier is the unique key that identifies a DB cluster stored as a lowercase string.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "DBClusterParameterGroupName": { + "description": "Provides the name of the DB cluster parameter group.", + "type": "string" + }, + "DBInstanceParameterGroupName": { + "description": "The name of the DB parameter group to apply to all instances of the DB cluster. Used only in case of a major EngineVersion upgrade request.", + "type": "string" + }, + "DBPort": { + "description": "The port number on which the DB instances in the DB cluster accept connections. \n\nIf not specified, the default port used is `8182`. \n\nNote: `Port` property will soon be deprecated from this resource. Please update existing templates to rename it with new property `DBPort` having same functionalities.", + "type": "integer" + }, + "DBSubnetGroupName": { + "description": "Specifies information on the subnet group associated with the DB cluster, including the name, description, and subnets in the subnet group.", + "type": "string" + }, + "DeletionProtection": { + "description": "Indicates whether or not the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled.", + "type": "boolean" + }, + "EnableCloudwatchLogsExports": { + "description": "Specifies a list of log types that are enabled for export to CloudWatch Logs.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Endpoint": { + "description": "The connection endpoint for the DB cluster. For example: `mystack-mydbcluster-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`", + "type": "string" + }, + "EngineVersion": { + "description": "Indicates the database engine version.", + "type": "string" + }, + "IamAuthEnabled": { + "description": "True if mapping of Amazon Identity and Access Management (IAM) accounts to database accounts is enabled, and otherwise false.", + "type": "boolean" + }, + "KmsKeyId": { + "description": "The Amazon Resource Name (ARN) of the AWS KMS key that is used to encrypt the database instances in the DB cluster, such as arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. If you enable the StorageEncrypted property but don't specify this property, the default KMS key is used. If you specify this property, you must set the StorageEncrypted property to true.", + "type": "string" + }, + "Port": { + "description": "The port number on which the DB cluster accepts connections. For example: `8182`.", + "type": "string" + }, + "PreferredBackupWindow": { + "description": "Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod.", + "type": "string" + }, + "PreferredMaintenanceWindow": { + "description": "Specifies the weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).", + "type": "string" + }, + "ReadEndpoint": { + "description": "The reader endpoint for the DB cluster. For example: `mystack-mydbcluster-ro-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`", + "type": "string" + }, + "RestoreToTime": { + "description": "Creates a new DB cluster from a DB snapshot or DB cluster snapshot.\n\nIf a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.\n\nIf a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.", + "type": "string" + }, + "RestoreType": { + "default": "full-copy", + "description": "Creates a new DB cluster from a DB snapshot or DB cluster snapshot.\n\nIf a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.\n\nIf a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.", + "type": "string" + }, + "ServerlessScalingConfiguration": { + "$ref": "#/definitions/ServerlessScalingConfiguration", + "description": "Contains the scaling configuration used by the Neptune Serverless Instances within this DB cluster." + }, + "SnapshotIdentifier": { + "description": "Specifies the identifier for a DB cluster snapshot. Must match the identifier of an existing snapshot.\n\nAfter you restore a DB cluster using a SnapshotIdentifier, you must specify the same SnapshotIdentifier for any future updates to the DB cluster. When you specify this property for an update, the DB cluster is not restored from the snapshot again, and the data in the database is not changed.\n\nHowever, if you don't specify the SnapshotIdentifier, an empty DB cluster is created, and the original DB cluster is deleted. If you specify a property that is different from the previous snapshot restore property, the DB cluster is restored from the snapshot specified by the SnapshotIdentifier, and the original DB cluster is deleted.", + "type": "string" + }, + "SourceDBClusterIdentifier": { + "description": "Creates a new DB cluster from a DB snapshot or DB cluster snapshot.\n\nIf a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.\n\nIf a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.", + "type": "string" + }, + "StorageEncrypted": { + "description": "Indicates whether the DB cluster is encrypted.\n\nIf you specify the KmsKeyId property, then you must enable encryption and set this property to true.\n\nIf you enable the StorageEncrypted property but don't specify KmsKeyId property, then the default KMS key is used. If you specify KmsKeyId property, then that KMS Key is used to encrypt the database instances in the DB cluster.\n\nIf you specify the SourceDBClusterIdentifier property and don't specify this property or disable it. The value is inherited from the source DB cluster, and if the DB cluster is encrypted, the KmsKeyId property from the source cluster is used.\n\nIf you specify the DBSnapshotIdentifier and don't specify this property or disable it. The value is inherited from the snapshot, and the specified KmsKeyId property from the snapshot is used.", + "type": "boolean" + }, + "Tags": { + "description": "The tags assigned to this cluster.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UseLatestRestorableTime": { + "description": "Creates a new DB cluster from a DB snapshot or DB cluster snapshot.\n\nIf a DB snapshot is specified, the target DB cluster is created from the source DB snapshot with a default configuration and default security group.\n\nIf a DB cluster snapshot is specified, the target DB cluster is created from the source DB cluster restore point with the same configuration as the original source DB cluster, except that the new DB cluster is created with the default security group.", + "type": "boolean" + }, + "VpcSecurityGroupIds": { + "description": "Provides a list of VPC security groups that the DB cluster belongs to.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": { + "/properties/DBClusterIdentifier": "$lowercase(DBClusterIdentifier)", + "/properties/DBClusterParameterGroupName": "$lowercase(DBClusterParameterGroupName)", + "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)", + "/properties/SnapshotIdentifier": "$lowercase(SnapshotIdentifier)", + "/properties/SourceDBClusterIdentifier": "$lowercase(SourceDBClusterIdentifier)" + }, + "readOnlyProperties": [ + "/properties/Endpoint", + "/properties/ClusterResourceId", + "/properties/Port", + "/properties/ReadEndpoint" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-neptune", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:ListTagsForResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Neptune::DBCluster", + "writeOnlyProperties": [ + "/properties/DBInstanceParameterGroupName", + "/properties/RestoreToTime", + "/properties/RestoreType", + "/properties/SnapshotIdentifier", + "/properties/SourceDBClusterIdentifier", + "/properties/UseLatestRestorableTime" + ] +} diff --git a/src/schema/aws-neptune-dbclusterparametergroup.json b/src/schema/aws-neptune-dbclusterparametergroup.json index fda633ae..74dcc783 100644 --- a/src/schema/aws-neptune-dbclusterparametergroup.json +++ b/src/schema/aws-neptune-dbclusterparametergroup.json @@ -1,63 +1,129 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Family", - "/properties/Description", - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Neptune::DBClusterParameterGroup", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Family": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Parameters": { - "type": "object" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Family", - "Description", - "Parameters" - ], - "typeName": "AWS::Neptune::DBClusterParameterGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Description", + "/properties/Family" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::Neptune::DBClusterParameterGroup resource creates a new Amazon Neptune DB cluster parameter group", + "handlers": { + "create": { + "permissions": [ + "rds:AddTagsToResource", + "rds:CreateDBClusterParameterGroup", + "rds:DescribeDBClusterParameterGroups", + "rds:DescribeDBClusterParameters", + "rds:DescribeEngineDefaultClusterParameters", + "rds:ListTagsForResource", + "rds:ModifyDBClusterParameterGroup", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 180 + }, + "delete": { + "permissions": [ + "rds:DeleteDBClusterParameterGroup", + "rds:ListTagsForResource", + "rds:RemoveTagsFromResource" + ] + }, + "list": { + "permissions": [ + "rds:DescribeDBClusterParameterGroups", + "rds:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "rds:DescribeDBClusterParameterGroups", + "rds:ListTagsForResource", + "rds:DescribeDBClusterParameters" + ] + }, + "update": { + "permissions": [ + "rds:AddTagsToResource", + "rds:DescribeDBClusterParameterGroups", + "rds:DescribeDBClusterParameters", + "rds:DescribeDBClusters", + "rds:DescribeEngineDefaultClusterParameters", + "rds:ListTagsForResource", + "rds:ModifyDBClusterParameterGroup", + "rds:RemoveTagsFromResource", + "rds:ResetDBClusterParameterGroup" + ], + "timeoutInMinutes": 180 + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Description": { + "description": "Provides the customer-specified description for this DB cluster parameter group.", + "type": "string" + }, + "Family": { + "description": "Must be neptune1 for engine versions prior to 1.2.0.0, or neptune1.2 for engine version 1.2.0.0 and higher.", + "type": "string" + }, + "Name": { + "description": "Provides the name of the DB cluster parameter group.", + "type": "string" + }, + "Parameters": { + "description": "An array of parameters to be modified. A maximum of 20 parameters can be modified in a single request.", + "type": "object" + }, + "Tags": { + "description": "The list of tags for the cluster parameter group.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "propertyTransform": { + "/properties/Name": "$lowercase(Name)" + }, + "required": [ + "Description", + "Family", + "Parameters" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-neptune", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:ListTagsForResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Neptune::DBClusterParameterGroup" +} diff --git a/src/schema/aws-neptune-dbinstance.json b/src/schema/aws-neptune-dbinstance.json index e7b626d1..b064fb2a 100644 --- a/src/schema/aws-neptune-dbinstance.json +++ b/src/schema/aws-neptune-dbinstance.json @@ -1,89 +1,89 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DBClusterIdentifier", - "/properties/AvailabilityZone", - "/properties/DBInstanceIdentifier", - "/properties/DBSubnetGroupName", - "/properties/DBSnapshotIdentifier" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Neptune::DBInstance", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "AvailabilityZone": { - "type": "string" - }, - "DBClusterIdentifier": { - "type": "string" - }, - "DBInstanceClass": { - "type": "string" - }, - "DBInstanceIdentifier": { - "type": "string" - }, - "DBParameterGroupName": { - "type": "string" - }, - "DBSnapshotIdentifier": { - "type": "string" - }, - "DBSubnetGroupName": { - "type": "string" - }, - "Endpoint": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Port": { - "type": "string" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Endpoint", - "/properties/Port", - "/properties/Id" - ], - "required": [ - "DBInstanceClass" - ], - "typeName": "AWS::Neptune::DBInstance" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DBClusterIdentifier", + "/properties/AvailabilityZone", + "/properties/DBInstanceIdentifier", + "/properties/DBSubnetGroupName", + "/properties/DBSnapshotIdentifier" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Neptune::DBInstance", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AllowMajorVersionUpgrade": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "AvailabilityZone": { + "type": "string" + }, + "DBClusterIdentifier": { + "type": "string" + }, + "DBInstanceClass": { + "type": "string" + }, + "DBInstanceIdentifier": { + "type": "string" + }, + "DBParameterGroupName": { + "type": "string" + }, + "DBSnapshotIdentifier": { + "type": "string" + }, + "DBSubnetGroupName": { + "type": "string" + }, + "Endpoint": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Port": { + "type": "string" + }, + "PreferredMaintenanceWindow": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Endpoint", + "/properties/Port", + "/properties/Id" + ], + "required": [ + "DBInstanceClass" + ], + "typeName": "AWS::Neptune::DBInstance" +} diff --git a/src/schema/aws-neptune-dbparametergroup.json b/src/schema/aws-neptune-dbparametergroup.json index c8f61c1a..a202295d 100644 --- a/src/schema/aws-neptune-dbparametergroup.json +++ b/src/schema/aws-neptune-dbparametergroup.json @@ -1,63 +1,128 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Family", - "/properties/Description", - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Neptune::DBParameterGroup", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Family": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Parameters": { - "type": "object" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Family", - "Description", - "Parameters" - ], - "typeName": "AWS::Neptune::DBParameterGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Description", + "/properties/Family" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "AWS::Neptune::DBParameterGroup creates a new DB parameter group. This type can be declared in a template and referenced in the DBParameterGroupName parameter of AWS::Neptune::DBInstance", + "handlers": { + "create": { + "permissions": [ + "rds:AddTagsToResource", + "rds:CreateDBParameterGroup", + "rds:DescribeDBParameterGroups", + "rds:DescribeDBParameters", + "rds:DescribeEngineDefaultParameters", + "rds:ModifyDBParameterGroup", + "rds:ListTagsForResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "rds:DeleteDBParameterGroup", + "rds:RemoveTagsFromResource" + ] + }, + "list": { + "permissions": [ + "rds:DescribeDBParameterGroups", + "rds:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "rds:DescribeDBParameterGroups", + "rds:ListTagsForResource", + "rds:DescribeDBParameters", + "rds:DescribeEngineDefaultParameters" + ] + }, + "update": { + "permissions": [ + "rds:AddTagsToResource", + "rds:DescribeDBParameterGroups", + "rds:DescribeDBParameters", + "rds:DescribeEngineDefaultParameters", + "rds:ListTagsForResource", + "rds:ModifyDBParameterGroup", + "rds:ResetDBParameterGroup", + "rds:RemoveTagsFromResource", + "rds:DescribeDBInstances" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Description": { + "description": "Provides the customer-specified description for this DB parameter group.", + "type": "string" + }, + "Family": { + "description": "Must be `neptune1` for engine versions prior to 1.2.0.0, or `neptune1.2` for engine version `1.2.0.0` and higher.", + "type": "string" + }, + "Name": { + "description": "Provides the name of the DB parameter group.", + "type": "string" + }, + "Parameters": { + "description": "The parameters to set for this DB parameter group.\n\nThe parameters are expressed as a JSON object consisting of key-value pairs.\n\nChanges to dynamic parameters are applied immediately. During an update, if you have static parameters (whether they were changed or not), it triggers AWS CloudFormation to reboot the associated DB instance without failover.", + "type": "object" + }, + "Tags": { + "description": "An optional array of key-value pairs to apply to this DB parameter group.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "propertyTransform": { + "/properties/Name": "$lowercase(Name)" + }, + "required": [ + "Family", + "Description", + "Parameters" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-neptune", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:ListTagsForResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Neptune::DBParameterGroup" +} diff --git a/src/schema/aws-neptune-dbsubnetgroup.json b/src/schema/aws-neptune-dbsubnetgroup.json index 7645e5c0..ddaa0ad1 100644 --- a/src/schema/aws-neptune-dbsubnetgroup.json +++ b/src/schema/aws-neptune-dbsubnetgroup.json @@ -1,61 +1,118 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DBSubnetGroupName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Neptune::DBSubnetGroup", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DBSubnetGroupDescription": { - "type": "string" - }, - "DBSubnetGroupName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "DBSubnetGroupDescription", - "SubnetIds" - ], - "typeName": "AWS::Neptune::DBSubnetGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DBSubnetGroupName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "An optional array of key-value pairs to apply to this DB subnet group.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::Neptune::DBSubnetGroup type creates an Amazon Neptune DB subnet group. Subnet groups must contain at least two subnets in two different Availability Zones in the same AWS Region.", + "handlers": { + "create": { + "permissions": [ + "rds:CreateDBSubnetGroup", + "rds:DescribeDBSubnetGroups", + "rds:ListTagsForResource", + "rds:AddTagsToResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "rds:DeleteDBSubnetGroup", + "rds:DescribeDBSubnetGroups", + "rds:ListTagsForResource", + "rds:RemoveTagsFromResource" + ] + }, + "list": { + "permissions": [ + "rds:DescribeDBSubnetGroups", + "rds:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "rds:DescribeDBSubnetGroups", + "rds:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "rds:ModifyDBSubnetGroup", + "rds:DescribeDBSubnetGroups", + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource", + "rds:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DBSubnetGroupName" + ], + "properties": { + "DBSubnetGroupDescription": { + "description": "The description for the DB subnet group.", + "type": "string" + }, + "DBSubnetGroupName": { + "description": "The name for the DB subnet group. This value is stored as a lowercase string.\n\nConstraints: Must contain no more than 255 lowercase alphanumeric characters or hyphens. Must not be \"Default\".\n\nExample: mysubnetgroup\n\n", + "type": "string" + }, + "SubnetIds": { + "description": "The Amazon EC2 subnet IDs for the DB subnet group.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "description": "An optional array of key-value pairs to apply to this DB subnet group.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "propertyTransform": { + "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)" + }, + "required": [ + "DBSubnetGroupDescription", + "SubnetIds" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-neptune", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:ListTagsForResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Neptune::DBSubnetGroup" +} diff --git a/src/schema/aws-neptune-eventsubscription.json b/src/schema/aws-neptune-eventsubscription.json index 95e4c9a0..05e09626 100644 --- a/src/schema/aws-neptune-eventsubscription.json +++ b/src/schema/aws-neptune-eventsubscription.json @@ -1,42 +1,42 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SnsTopicArn" - ], - "description": "Resource Type definition for AWS::Neptune::EventSubscription", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Enabled": { - "type": "boolean" - }, - "EventCategories": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - }, - "SnsTopicArn": { - "type": "string" - }, - "SourceIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceType": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "typeName": "AWS::Neptune::EventSubscription" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SnsTopicArn" + ], + "description": "Resource Type definition for AWS::Neptune::EventSubscription", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Enabled": { + "type": "boolean" + }, + "EventCategories": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "SnsTopicArn": { + "type": "string" + }, + "SourceIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SourceType": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::Neptune::EventSubscription" +} diff --git a/src/schema/aws-neptunegraph-graph.json b/src/schema/aws-neptunegraph-graph.json index 38387641..019cb924 100644 --- a/src/schema/aws-neptunegraph-graph.json +++ b/src/schema/aws-neptunegraph-graph.json @@ -1,190 +1,190 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/GraphName" - ] - ], - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/ProvisionedMemory" - ], - "createOnlyProperties": [ - "/properties/GraphName", - "/properties/ReplicaCount", - "/properties/VectorSearchConfiguration" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - }, - "VectorSearchConfiguration": { - "additionalProperties": false, - "description": "The vector search configuration.", - "properties": { - "VectorSearchDimension": { - "description": "The vector search dimension", - "type": "integer" - } - }, - "required": [ - "VectorSearchDimension" - ], - "type": "object" - } - }, - "description": "The AWS::NeptuneGraph::Graph resource creates an Amazon NeptuneGraph Graph.", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "neptune-graph:CreateGraph", - "neptune-graph:GetGraph", - "neptune-graph:ListTagsForResource", - "neptune-graph:TagResource", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:Decrypt", - "iam:CreateServiceLinkedRole" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "neptune-graph:DeleteGraph", - "neptune-graph:GetGraph", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:Decrypt" - ], - "timeoutInMinutes": 2160 - }, - "list": { - "permissions": [ - "neptune-graph:GetGraph", - "neptune-graph:ListGraphs", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:Decrypt" - ], - "timeoutInMinutes": 2160 - }, - "read": { - "permissions": [ - "neptune-graph:GetGraph", - "neptune-graph:ListTagsForResource", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:Decrypt" - ], - "timeoutInMinutes": 2160 - }, - "update": { - "permissions": [ - "iam:PassRole", - "neptune-graph:GetGraph", - "neptune-graph:ListTagsForResource", - "neptune-graph:TagResource", - "neptune-graph:UntagResource", - "neptune-graph:UpdateGraph", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:Decrypt" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/GraphId" - ], - "properties": { - "DeletionProtection": { - "description": "Value that indicates whether the Graph has deletion protection enabled. The graph can't be deleted when deletion protection is enabled.\n\n_Default_: If not specified, the default value is true.", - "type": "boolean" - }, - "Endpoint": { - "description": "The connection endpoint for the graph. For example: `g-12a3bcdef4.us-east-1.neptune-graph.amazonaws.com`", - "type": "string" - }, - "GraphArn": { - "description": "Graph resource ARN", - "type": "string" - }, - "GraphId": { - "description": "The auto-generated id assigned by the service.", - "type": "string" - }, - "GraphName": { - "description": "Contains a user-supplied name for the Graph. \n\nIf you don't specify a name, we generate a unique Graph Name using a combination of Stack Name and a UUID comprising of 4 characters.\n\n_Important_: If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*$", - "type": "string" - }, - "ProvisionedMemory": { - "description": "Memory for the Graph.", - "type": "integer" - }, - "PublicConnectivity": { - "description": "Specifies whether the Graph can be reached over the internet. Access to all graphs requires IAM authentication.\n\nWhen the Graph is publicly reachable, its Domain Name System (DNS) endpoint resolves to the public IP address from the internet.\n\nWhen the Graph isn't publicly reachable, you need to create a PrivateGraphEndpoint in a given VPC to ensure the DNS name resolves to a private IP address that is reachable from the VPC.\n\n_Default_: If not specified, the default value is false.", - "type": "boolean" - }, - "ReplicaCount": { - "description": "Specifies the number of replicas you want when finished. All replicas will be provisioned in different availability zones.\n\nReplica Count should always be less than or equal to 2.\n\n_Default_: If not specified, the default value is 1.", - "type": "integer" - }, - "Tags": { - "description": "The tags associated with this graph.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "VectorSearchConfiguration": { - "$ref": "#/definitions/VectorSearchConfiguration", - "description": "Vector Search Configuration" - } - }, - "propertyTransform": { - "/properties/GraphId": "$lowercase(GraphId)", - "/properties/GraphName": "$lowercase(GraphName)" - }, - "readOnlyProperties": [ - "/properties/GraphArn", - "/properties/GraphId", - "/properties/Endpoint" - ], - "required": [ - "ProvisionedMemory" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-neptunegraph", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::NeptuneGraph::Graph" -} +{ + "additionalIdentifiers": [ + [ + "/properties/GraphName" + ] + ], + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/ProvisionedMemory" + ], + "createOnlyProperties": [ + "/properties/GraphName", + "/properties/ReplicaCount", + "/properties/VectorSearchConfiguration" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "VectorSearchConfiguration": { + "additionalProperties": false, + "description": "The vector search configuration.", + "properties": { + "VectorSearchDimension": { + "description": "The vector search dimension", + "type": "integer" + } + }, + "required": [ + "VectorSearchDimension" + ], + "type": "object" + } + }, + "description": "The AWS::NeptuneGraph::Graph resource creates an Amazon NeptuneGraph Graph.", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "neptune-graph:CreateGraph", + "neptune-graph:GetGraph", + "neptune-graph:ListTagsForResource", + "neptune-graph:TagResource", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:Decrypt", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "neptune-graph:DeleteGraph", + "neptune-graph:GetGraph", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:Decrypt" + ], + "timeoutInMinutes": 2160 + }, + "list": { + "permissions": [ + "neptune-graph:GetGraph", + "neptune-graph:ListGraphs", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:Decrypt" + ], + "timeoutInMinutes": 2160 + }, + "read": { + "permissions": [ + "neptune-graph:GetGraph", + "neptune-graph:ListTagsForResource", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:Decrypt" + ], + "timeoutInMinutes": 2160 + }, + "update": { + "permissions": [ + "iam:PassRole", + "neptune-graph:GetGraph", + "neptune-graph:ListTagsForResource", + "neptune-graph:TagResource", + "neptune-graph:UntagResource", + "neptune-graph:UpdateGraph", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:Decrypt" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/GraphId" + ], + "properties": { + "DeletionProtection": { + "description": "Value that indicates whether the Graph has deletion protection enabled. The graph can't be deleted when deletion protection is enabled.\n\n_Default_: If not specified, the default value is true.", + "type": "boolean" + }, + "Endpoint": { + "description": "The connection endpoint for the graph. For example: `g-12a3bcdef4.us-east-1.neptune-graph.amazonaws.com`", + "type": "string" + }, + "GraphArn": { + "description": "Graph resource ARN", + "type": "string" + }, + "GraphId": { + "description": "The auto-generated id assigned by the service.", + "type": "string" + }, + "GraphName": { + "description": "Contains a user-supplied name for the Graph. \n\nIf you don't specify a name, we generate a unique Graph Name using a combination of Stack Name and a UUID comprising of 4 characters.\n\n_Important_: If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*$", + "type": "string" + }, + "ProvisionedMemory": { + "description": "Memory for the Graph.", + "type": "integer" + }, + "PublicConnectivity": { + "description": "Specifies whether the Graph can be reached over the internet. Access to all graphs requires IAM authentication.\n\nWhen the Graph is publicly reachable, its Domain Name System (DNS) endpoint resolves to the public IP address from the internet.\n\nWhen the Graph isn't publicly reachable, you need to create a PrivateGraphEndpoint in a given VPC to ensure the DNS name resolves to a private IP address that is reachable from the VPC.\n\n_Default_: If not specified, the default value is false.", + "type": "boolean" + }, + "ReplicaCount": { + "description": "Specifies the number of replicas you want when finished. All replicas will be provisioned in different availability zones.\n\nReplica Count should always be less than or equal to 2.\n\n_Default_: If not specified, the default value is 1.", + "type": "integer" + }, + "Tags": { + "description": "The tags associated with this graph.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "VectorSearchConfiguration": { + "$ref": "#/definitions/VectorSearchConfiguration", + "description": "Vector Search Configuration" + } + }, + "propertyTransform": { + "/properties/GraphId": "$lowercase(GraphId)", + "/properties/GraphName": "$lowercase(GraphName)" + }, + "readOnlyProperties": [ + "/properties/GraphArn", + "/properties/GraphId", + "/properties/Endpoint" + ], + "required": [ + "ProvisionedMemory" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-neptunegraph", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NeptuneGraph::Graph" +} diff --git a/src/schema/aws-neptunegraph-privategraphendpoint.json b/src/schema/aws-neptunegraph-privategraphendpoint.json index 21b288b8..bbb71ba8 100644 --- a/src/schema/aws-neptunegraph-privategraphendpoint.json +++ b/src/schema/aws-neptunegraph-privategraphendpoint.json @@ -1,132 +1,133 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/GraphIdentifier", - "/properties/VpcId" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GraphIdentifier", - "/properties/SecurityGroupIds", - "/properties/SubnetIds", - "/properties/VpcId" - ], - "description": "The AWS::NeptuneGraph::PrivateGraphEndpoint resource creates an Amazon NeptuneGraph PrivateGraphEndpoint.", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "ec2:DescribeVpcAttribute", - "ec2:DescribeAvailabilityZones", - "ec2:ModifyVpcEndpoint", - "route53:AssociateVPCWithHostedZone", - "iam:PassRole", - "neptune-graph:CreatePrivateGraphEndpoint", - "neptune-graph:GetPrivateGraphEndpoint", - "iam:CreateServiceLinkedRole" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "ec2:DeleteVpcEndpoints", - "ec2:DescribeVpcEndpoints", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "ec2:DescribeVpcAttribute", - "ec2:DescribeAvailabilityZones", - "ec2:ModifyVpcEndpoint", - "route53:DisassociateVPCFromHostedZone", - "neptune-graph:DeletePrivateGraphEndpoint", - "neptune-graph:GetPrivateGraphEndpoint" - ], - "timeoutInMinutes": 2160 - }, - "list": { - "permissions": [ - "neptune-graph:GetPrivateGraphEndpoint", - "neptune-graph:ListPrivateGraphEndpoints" - ], - "timeoutInMinutes": 2160 - }, - "read": { - "permissions": [ - "neptune-graph:GetPrivateGraphEndpoint" - ], - "timeoutInMinutes": 2160 - }, - "update": { - "permissions": [ - "iam:PassRole", - "neptune-graph:GetPrivateGraphEndpoint" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/PrivateGraphEndpointIdentifier" - ], - "properties": { - "GraphIdentifier": { - "description": "The auto-generated Graph Id assigned by the service.", - "type": "string" - }, - "PrivateGraphEndpointIdentifier": { - "description": "PrivateGraphEndpoint resource identifier generated by concatenating the associated GraphIdentifier and VpcId with an underscore separator.\n\n For example, if GraphIdentifier is `g-12a3bcdef4` and VpcId is `vpc-0a12bc34567de8f90`, the generated PrivateGraphEndpointIdentifier will be `g-12a3bcdef4_vpc-0a12bc34567de8f90`", - "type": "string" - }, - "SecurityGroupIds": { - "description": "The security group Ids associated with the VPC where you want the private graph endpoint to be created, ie, the graph will be reachable from within the VPC.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "SubnetIds": { - "description": "The subnet Ids associated with the VPC where you want the private graph endpoint to be created, ie, the graph will be reachable from within the VPC.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "VpcEndpointId": { - "description": "VPC endpoint that provides a private connection between the Graph and specified VPC.", - "type": "string" - }, - "VpcId": { - "description": "The VPC where you want the private graph endpoint to be created, ie, the graph will be reachable from within the VPC.", - "type": "string" - } - }, - "propertyTransform": { - "/properties/GraphIdentifier": "$lowercase(GraphIdentifier)" - }, - "readOnlyProperties": [ - "/properties/PrivateGraphEndpointIdentifier", - "/properties/VpcEndpointId" - ], - "required": [ - "GraphIdentifier", - "VpcId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-neptunegraph", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::NeptuneGraph::PrivateGraphEndpoint", - "writeOnlyProperties": [ - "/properties/GraphIdentifier", - "/properties/SecurityGroupIds" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/GraphIdentifier", + "/properties/VpcId" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GraphIdentifier", + "/properties/SecurityGroupIds", + "/properties/SubnetIds", + "/properties/VpcId" + ], + "description": "The AWS::NeptuneGraph::PrivateGraphEndpoint resource creates an Amazon NeptuneGraph PrivateGraphEndpoint.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "ec2:DescribeVpcAttribute", + "ec2:DescribeAvailabilityZones", + "ec2:ModifyVpcEndpoint", + "route53:AssociateVPCWithHostedZone", + "iam:PassRole", + "neptune-graph:CreatePrivateGraphEndpoint", + "neptune-graph:GetPrivateGraphEndpoint", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "ec2:DeleteVpcEndpoints", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "ec2:DescribeVpcAttribute", + "ec2:DescribeAvailabilityZones", + "ec2:ModifyVpcEndpoint", + "route53:DisassociateVPCFromHostedZone", + "neptune-graph:DeletePrivateGraphEndpoint", + "neptune-graph:GetPrivateGraphEndpoint" + ], + "timeoutInMinutes": 2160 + }, + "list": { + "permissions": [ + "neptune-graph:GetPrivateGraphEndpoint", + "neptune-graph:ListPrivateGraphEndpoints", + "neptune-graph:ListGraphs" + ], + "timeoutInMinutes": 2160 + }, + "read": { + "permissions": [ + "neptune-graph:GetPrivateGraphEndpoint" + ], + "timeoutInMinutes": 2160 + }, + "update": { + "permissions": [ + "iam:PassRole", + "neptune-graph:GetPrivateGraphEndpoint" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/PrivateGraphEndpointIdentifier" + ], + "properties": { + "GraphIdentifier": { + "description": "The auto-generated Graph Id assigned by the service.", + "type": "string" + }, + "PrivateGraphEndpointIdentifier": { + "description": "PrivateGraphEndpoint resource identifier generated by concatenating the associated GraphIdentifier and VpcId with an underscore separator.\n\n For example, if GraphIdentifier is `g-12a3bcdef4` and VpcId is `vpc-0a12bc34567de8f90`, the generated PrivateGraphEndpointIdentifier will be `g-12a3bcdef4_vpc-0a12bc34567de8f90`", + "type": "string" + }, + "SecurityGroupIds": { + "description": "The security group Ids associated with the VPC where you want the private graph endpoint to be created, ie, the graph will be reachable from within the VPC.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "SubnetIds": { + "description": "The subnet Ids associated with the VPC where you want the private graph endpoint to be created, ie, the graph will be reachable from within the VPC.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "VpcEndpointId": { + "description": "VPC endpoint that provides a private connection between the Graph and specified VPC.", + "type": "string" + }, + "VpcId": { + "description": "The VPC where you want the private graph endpoint to be created, ie, the graph will be reachable from within the VPC.", + "type": "string" + } + }, + "propertyTransform": { + "/properties/GraphIdentifier": "$lowercase(GraphIdentifier)" + }, + "readOnlyProperties": [ + "/properties/PrivateGraphEndpointIdentifier", + "/properties/VpcEndpointId" + ], + "required": [ + "GraphIdentifier", + "VpcId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-neptunegraph", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::NeptuneGraph::PrivateGraphEndpoint", + "writeOnlyProperties": [ + "/properties/GraphIdentifier", + "/properties/SecurityGroupIds" + ] +} diff --git a/src/schema/aws-networkfirewall-firewall.json b/src/schema/aws-networkfirewall-firewall.json index b9f7ae7e..6dadf458 100644 --- a/src/schema/aws-networkfirewall-firewall.json +++ b/src/schema/aws-networkfirewall-firewall.json @@ -1,206 +1,223 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/VpcId", - "/properties/FirewallName" - ], - "definitions": { - "EndpointId": { - "description": "An endpoint Id.", - "type": "string" - }, - "ResourceArn": { - "description": "A resource ARN.", - "maxLength": 256, - "minLength": 1, - "pattern": "^arn:aws.*$", - "type": "string" - }, - "SubnetMapping": { - "additionalProperties": false, - "properties": { - "IPAddressType": { - "description": "A IPAddressType", - "type": "string" - }, - "SubnetId": { - "description": "A SubnetId.", - "type": "string" - } - }, - "required": [ - "SubnetId" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource type definition for AWS::NetworkFirewall::Firewall", - "handlers": { - "create": { - "permissions": [ - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "iam:CreateServiceLinkedRole", - "network-firewall:CreateFirewall", - "network-firewall:DescribeFirewallPolicy", - "network-firewall:DescribeRuleGroup", - "network-firewall:TagResource", - "network-firewall:AssociateSubnets", - "network-firewall:AssociateFirewallPolicy", - "network-firewall:DescribeFirewall" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteVpcEndpoints", - "ec2:DescribeRouteTables", - "logs:DescribeLogGroups", - "logs:DescribeResourcePolicies", - "logs:GetLogDelivery", - "logs:ListLogDeliveries", - "network-firewall:DeleteFirewall", - "network-firewall:UntagResource", - "network-firewall:DescribeFirewall" - ] - }, - "list": { - "permissions": [ - "network-firewall:ListFirewalls" - ] - }, - "read": { - "permissions": [ - "network-firewall:DescribeFirewall", - "network-firewall:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "network-firewall:AssociateSubnets", - "network-firewall:DisassociateSubnets", - "network-firewall:UpdateFirewallDescription", - "network-firewall:UpdateFirewallDeleteProtection", - "network-firewall:UpdateSubnetChangeProtection", - "network-firewall:UpdateFirewallPolicyChangeProtection", - "network-firewall:AssociateFirewallPolicy", - "network-firewall:TagResource", - "network-firewall:UntagResource", - "network-firewall:DescribeFirewall" - ] - } - }, - "primaryIdentifier": [ - "/properties/FirewallArn" - ], - "properties": { - "DeleteProtection": { - "type": "boolean" - }, - "Description": { - "maxLength": 512, - "pattern": "^.*$", - "type": "string" - }, - "EndpointIds": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EndpointId" - }, - "type": "array" - }, - "FirewallArn": { - "$ref": "#/definitions/ResourceArn" - }, - "FirewallId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$", - "type": "string" - }, - "FirewallName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "FirewallPolicyArn": { - "$ref": "#/definitions/ResourceArn" - }, - "FirewallPolicyChangeProtection": { - "type": "boolean" - }, - "SubnetChangeProtection": { - "type": "boolean" - }, - "SubnetMappings": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SubnetMapping" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "VpcId": { - "maxLength": 128, - "minLength": 1, - "pattern": "^vpc-[0-9a-f]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/FirewallArn", - "/properties/FirewallId", - "/properties/EndpointIds" - ], - "required": [ - "FirewallName", - "FirewallPolicyArn", - "VpcId", - "SubnetMappings" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "network-firewall:TagResource", - "network-firewall:UntagResource", - "network-firewall:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::NetworkFirewall::Firewall" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcId", + "/properties/FirewallName" + ], + "definitions": { + "EnabledAnalysisType": { + "description": "An analysis type.", + "enum": [ + "TLS_SNI", + "HTTP_HOST" + ], + "type": "string" + }, + "EndpointId": { + "description": "An endpoint Id.", + "type": "string" + }, + "ResourceArn": { + "description": "A resource ARN.", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:aws.*$", + "type": "string" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "IPAddressType": { + "description": "A IPAddressType", + "type": "string" + }, + "SubnetId": { + "description": "A SubnetId.", + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource type definition for AWS::NetworkFirewall::Firewall", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "iam:CreateServiceLinkedRole", + "network-firewall:CreateFirewall", + "network-firewall:DescribeFirewallPolicy", + "network-firewall:DescribeRuleGroup", + "network-firewall:TagResource", + "network-firewall:AssociateSubnets", + "network-firewall:AssociateFirewallPolicy", + "network-firewall:DescribeFirewall" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpcEndpoints", + "ec2:DescribeRouteTables", + "logs:DescribeLogGroups", + "logs:DescribeResourcePolicies", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "network-firewall:DeleteFirewall", + "network-firewall:UntagResource", + "network-firewall:DescribeFirewall" + ] + }, + "list": { + "permissions": [ + "network-firewall:ListFirewalls" + ] + }, + "read": { + "permissions": [ + "network-firewall:DescribeFirewall", + "network-firewall:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "network-firewall:AssociateSubnets", + "network-firewall:DisassociateSubnets", + "network-firewall:UpdateFirewallDescription", + "network-firewall:UpdateFirewallDeleteProtection", + "network-firewall:UpdateSubnetChangeProtection", + "network-firewall:UpdateFirewallPolicyChangeProtection", + "network-firewall:AssociateFirewallPolicy", + "network-firewall:TagResource", + "network-firewall:UntagResource", + "network-firewall:DescribeFirewall", + "network-firewall:UpdateFirewallAnalysisSettings" + ] + } + }, + "primaryIdentifier": [ + "/properties/FirewallArn" + ], + "properties": { + "DeleteProtection": { + "type": "boolean" + }, + "Description": { + "maxLength": 512, + "pattern": "^.*$", + "type": "string" + }, + "EnabledAnalysisTypes": { + "description": "The types of analysis to enable for the firewall. Can be TLS_SNI, HTTP_HOST, or both.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EnabledAnalysisType" + }, + "type": "array" + }, + "EndpointIds": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EndpointId" + }, + "type": "array" + }, + "FirewallArn": { + "$ref": "#/definitions/ResourceArn" + }, + "FirewallId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$", + "type": "string" + }, + "FirewallName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "FirewallPolicyArn": { + "$ref": "#/definitions/ResourceArn" + }, + "FirewallPolicyChangeProtection": { + "type": "boolean" + }, + "SubnetChangeProtection": { + "type": "boolean" + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VpcId": { + "maxLength": 128, + "minLength": 1, + "pattern": "^vpc-[0-9a-f]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/FirewallArn", + "/properties/FirewallId", + "/properties/EndpointIds" + ], + "required": [ + "FirewallName", + "FirewallPolicyArn", + "VpcId", + "SubnetMappings" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "network-firewall:TagResource", + "network-firewall:UntagResource", + "network-firewall:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkFirewall::Firewall" +} diff --git a/src/schema/aws-networkfirewall-firewallpolicy.json b/src/schema/aws-networkfirewall-firewallpolicy.json index bb635c5c..1e01ed68 100644 --- a/src/schema/aws-networkfirewall-firewallpolicy.json +++ b/src/schema/aws-networkfirewall-firewallpolicy.json @@ -1,389 +1,389 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FirewallPolicyName" - ], - "definitions": { - "ActionDefinition": { - "additionalProperties": false, - "properties": { - "PublishMetricAction": { - "$ref": "#/definitions/PublishMetricAction" - } - }, - "type": "object" - }, - "CustomAction": { - "additionalProperties": false, - "properties": { - "ActionDefinition": { - "$ref": "#/definitions/ActionDefinition" - }, - "ActionName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - } - }, - "required": [ - "ActionName", - "ActionDefinition" - ], - "type": "object" - }, - "Dimension": { - "additionalProperties": false, - "properties": { - "Value": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-_ ]+$", - "type": "string" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "FirewallPolicy": { - "additionalProperties": false, - "properties": { - "PolicyVariables": { - "additionalProperties": false, - "properties": { - "RuleVariables": { - "$ref": "#/definitions/RuleVariables" - } - }, - "type": "object" - }, - "StatefulDefaultActions": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "StatefulEngineOptions": { - "$ref": "#/definitions/StatefulEngineOptions" - }, - "StatefulRuleGroupReferences": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StatefulRuleGroupReference" - }, - "type": "array", - "uniqueItems": false - }, - "StatelessCustomActions": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/CustomAction" - }, - "type": "array", - "uniqueItems": false - }, - "StatelessDefaultActions": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "StatelessFragmentDefaultActions": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "StatelessRuleGroupReferences": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StatelessRuleGroupReference" - }, - "type": "array", - "uniqueItems": false - }, - "TLSInspectionConfigurationArn": { - "$ref": "#/definitions/ResourceArn" - } - }, - "required": [ - "StatelessDefaultActions", - "StatelessFragmentDefaultActions" - ], - "type": "object" - }, - "IPSet": { - "additionalProperties": false, - "properties": { - "Definition": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/VariableDefinition" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "OverrideAction": { - "enum": [ - "DROP_TO_ALERT" - ], - "type": "string" - }, - "Priority": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "PublishMetricAction": { - "additionalProperties": false, - "properties": { - "Dimensions": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Dimension" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Dimensions" - ], - "type": "object" - }, - "ResourceArn": { - "description": "A resource ARN.", - "maxLength": 256, - "minLength": 1, - "pattern": "^(arn:aws.*)$", - "type": "string" - }, - "RuleOrder": { - "enum": [ - "DEFAULT_ACTION_ORDER", - "STRICT_ORDER" - ], - "type": "string" - }, - "RuleVariables": { - "additionalProperties": false, - "patternProperties": { - "^[A-Za-z0-9_]{1,32}$": { - "$ref": "#/definitions/IPSet" - } - }, - "type": "object" - }, - "StatefulEngineOptions": { - "additionalProperties": false, - "properties": { - "FlowTimeouts": { - "additionalProperties": false, - "properties": { - "TcpIdleTimeoutSeconds": { - "maximum": 6000, - "minimum": 60, - "type": "integer" - } - }, - "type": "object" - }, - "RuleOrder": { - "$ref": "#/definitions/RuleOrder" - }, - "StreamExceptionPolicy": { - "$ref": "#/definitions/StreamExceptionPolicy" - } - }, - "type": "object" - }, - "StatefulRuleGroupOverride": { - "additionalProperties": false, - "properties": { - "Action": { - "$ref": "#/definitions/OverrideAction" - } - }, - "type": "object" - }, - "StatefulRuleGroupReference": { - "additionalProperties": false, - "properties": { - "Override": { - "$ref": "#/definitions/StatefulRuleGroupOverride" - }, - "Priority": { - "$ref": "#/definitions/Priority" - }, - "ResourceArn": { - "$ref": "#/definitions/ResourceArn" - } - }, - "required": [ - "ResourceArn" - ], - "type": "object" - }, - "StatelessRuleGroupReference": { - "additionalProperties": false, - "properties": { - "Priority": { - "$ref": "#/definitions/Priority" - }, - "ResourceArn": { - "$ref": "#/definitions/ResourceArn" - } - }, - "required": [ - "ResourceArn", - "Priority" - ], - "type": "object" - }, - "StreamExceptionPolicy": { - "enum": [ - "DROP", - "CONTINUE", - "REJECT" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 0, - "pattern": "^.*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "VariableDefinition": { - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "description": "Resource type definition for AWS::NetworkFirewall::FirewallPolicy", - "handlers": { - "create": { - "permissions": [ - "network-firewall:CreateFirewallPolicy", - "network-firewall:DescribeFirewallPolicy", - "network-firewall:ListTLSInspectionConfigurations", - "network-firewall:TagResource", - "network-firewall:ListRuleGroups" - ] - }, - "delete": { - "permissions": [ - "network-firewall:DeleteFirewallPolicy", - "network-firewall:DescribeFirewallPolicy", - "network-firewall:UntagResource" - ] - }, - "list": { - "permissions": [ - "network-firewall:ListFirewallPolicies" - ] - }, - "read": { - "permissions": [ - "network-firewall:DescribeFirewallPolicy", - "network-firewall:ListTagsForResources" - ] - }, - "update": { - "permissions": [ - "network-firewall:UpdateFirewallPolicy", - "network-firewall:DescribeFirewallPolicy", - "network-firewall:TagResource", - "network-firewall:UntagResource", - "network-firewall:ListRuleGroups", - "network-firewall:ListTLSInspectionConfigurations" - ] - } - }, - "primaryIdentifier": [ - "/properties/FirewallPolicyArn" - ], - "properties": { - "Description": { - "maxLength": 512, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "FirewallPolicy": { - "$ref": "#/definitions/FirewallPolicy" - }, - "FirewallPolicyArn": { - "$ref": "#/definitions/ResourceArn" - }, - "FirewallPolicyId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$", - "type": "string" - }, - "FirewallPolicyName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/FirewallPolicyArn", - "/properties/FirewallPolicyId" - ], - "required": [ - "FirewallPolicyName", - "FirewallPolicy" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "network-firewall:TagResource", - "network-firewall:UntagResource", - "network-firewall:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::NetworkFirewall::FirewallPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FirewallPolicyName" + ], + "definitions": { + "ActionDefinition": { + "additionalProperties": false, + "properties": { + "PublishMetricAction": { + "$ref": "#/definitions/PublishMetricAction" + } + }, + "type": "object" + }, + "CustomAction": { + "additionalProperties": false, + "properties": { + "ActionDefinition": { + "$ref": "#/definitions/ActionDefinition" + }, + "ActionName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "required": [ + "ActionName", + "ActionDefinition" + ], + "type": "object" + }, + "Dimension": { + "additionalProperties": false, + "properties": { + "Value": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-_ ]+$", + "type": "string" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "FirewallPolicy": { + "additionalProperties": false, + "properties": { + "PolicyVariables": { + "additionalProperties": false, + "properties": { + "RuleVariables": { + "$ref": "#/definitions/RuleVariables" + } + }, + "type": "object" + }, + "StatefulDefaultActions": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "StatefulEngineOptions": { + "$ref": "#/definitions/StatefulEngineOptions" + }, + "StatefulRuleGroupReferences": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StatefulRuleGroupReference" + }, + "type": "array", + "uniqueItems": false + }, + "StatelessCustomActions": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/CustomAction" + }, + "type": "array", + "uniqueItems": false + }, + "StatelessDefaultActions": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "StatelessFragmentDefaultActions": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "StatelessRuleGroupReferences": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StatelessRuleGroupReference" + }, + "type": "array", + "uniqueItems": false + }, + "TLSInspectionConfigurationArn": { + "$ref": "#/definitions/ResourceArn" + } + }, + "required": [ + "StatelessDefaultActions", + "StatelessFragmentDefaultActions" + ], + "type": "object" + }, + "IPSet": { + "additionalProperties": false, + "properties": { + "Definition": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/VariableDefinition" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "OverrideAction": { + "enum": [ + "DROP_TO_ALERT" + ], + "type": "string" + }, + "Priority": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "PublishMetricAction": { + "additionalProperties": false, + "properties": { + "Dimensions": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Dimension" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Dimensions" + ], + "type": "object" + }, + "ResourceArn": { + "description": "A resource ARN.", + "maxLength": 256, + "minLength": 1, + "pattern": "^(arn:aws.*)$", + "type": "string" + }, + "RuleOrder": { + "enum": [ + "DEFAULT_ACTION_ORDER", + "STRICT_ORDER" + ], + "type": "string" + }, + "RuleVariables": { + "additionalProperties": false, + "patternProperties": { + "^[A-Za-z0-9_]{1,32}$": { + "$ref": "#/definitions/IPSet" + } + }, + "type": "object" + }, + "StatefulEngineOptions": { + "additionalProperties": false, + "properties": { + "FlowTimeouts": { + "additionalProperties": false, + "properties": { + "TcpIdleTimeoutSeconds": { + "maximum": 6000, + "minimum": 60, + "type": "integer" + } + }, + "type": "object" + }, + "RuleOrder": { + "$ref": "#/definitions/RuleOrder" + }, + "StreamExceptionPolicy": { + "$ref": "#/definitions/StreamExceptionPolicy" + } + }, + "type": "object" + }, + "StatefulRuleGroupOverride": { + "additionalProperties": false, + "properties": { + "Action": { + "$ref": "#/definitions/OverrideAction" + } + }, + "type": "object" + }, + "StatefulRuleGroupReference": { + "additionalProperties": false, + "properties": { + "Override": { + "$ref": "#/definitions/StatefulRuleGroupOverride" + }, + "Priority": { + "$ref": "#/definitions/Priority" + }, + "ResourceArn": { + "$ref": "#/definitions/ResourceArn" + } + }, + "required": [ + "ResourceArn" + ], + "type": "object" + }, + "StatelessRuleGroupReference": { + "additionalProperties": false, + "properties": { + "Priority": { + "$ref": "#/definitions/Priority" + }, + "ResourceArn": { + "$ref": "#/definitions/ResourceArn" + } + }, + "required": [ + "ResourceArn", + "Priority" + ], + "type": "object" + }, + "StreamExceptionPolicy": { + "enum": [ + "DROP", + "CONTINUE", + "REJECT" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 0, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VariableDefinition": { + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "description": "Resource type definition for AWS::NetworkFirewall::FirewallPolicy", + "handlers": { + "create": { + "permissions": [ + "network-firewall:CreateFirewallPolicy", + "network-firewall:DescribeFirewallPolicy", + "network-firewall:ListTLSInspectionConfigurations", + "network-firewall:TagResource", + "network-firewall:ListRuleGroups" + ] + }, + "delete": { + "permissions": [ + "network-firewall:DeleteFirewallPolicy", + "network-firewall:DescribeFirewallPolicy", + "network-firewall:UntagResource" + ] + }, + "list": { + "permissions": [ + "network-firewall:ListFirewallPolicies" + ] + }, + "read": { + "permissions": [ + "network-firewall:DescribeFirewallPolicy", + "network-firewall:ListTagsForResources" + ] + }, + "update": { + "permissions": [ + "network-firewall:UpdateFirewallPolicy", + "network-firewall:DescribeFirewallPolicy", + "network-firewall:TagResource", + "network-firewall:UntagResource", + "network-firewall:ListRuleGroups", + "network-firewall:ListTLSInspectionConfigurations" + ] + } + }, + "primaryIdentifier": [ + "/properties/FirewallPolicyArn" + ], + "properties": { + "Description": { + "maxLength": 512, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "FirewallPolicy": { + "$ref": "#/definitions/FirewallPolicy" + }, + "FirewallPolicyArn": { + "$ref": "#/definitions/ResourceArn" + }, + "FirewallPolicyId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$", + "type": "string" + }, + "FirewallPolicyName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/FirewallPolicyArn", + "/properties/FirewallPolicyId" + ], + "required": [ + "FirewallPolicyName", + "FirewallPolicy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "network-firewall:TagResource", + "network-firewall:UntagResource", + "network-firewall:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkFirewall::FirewallPolicy" +} diff --git a/src/schema/aws-networkfirewall-loggingconfiguration.json b/src/schema/aws-networkfirewall-loggingconfiguration.json index 8a7882b6..ce89fa2b 100644 --- a/src/schema/aws-networkfirewall-loggingconfiguration.json +++ b/src/schema/aws-networkfirewall-loggingconfiguration.json @@ -1,152 +1,152 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FirewallName", - "/properties/FirewallArn" - ], - "definitions": { - "LogDestinationConfig": { - "additionalProperties": false, - "properties": { - "LogDestination": { - "additionalProperties": false, - "description": "A key-value pair to configure the logDestinations.", - "minProperties": 1, - "patternProperties": { - "^[0-9A-Za-z.\\-_@\\/]+$": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "LogDestinationType": { - "enum": [ - "S3", - "CloudWatchLogs", - "KinesisDataFirehose" - ], - "type": "string" - }, - "LogType": { - "enum": [ - "ALERT", - "FLOW", - "TLS" - ], - "type": "string" - } - }, - "required": [ - "LogType", - "LogDestinationType", - "LogDestination" - ], - "type": "object" - }, - "LoggingConfiguration": { - "additionalProperties": false, - "properties": { - "LogDestinationConfigs": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LogDestinationConfig" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "LogDestinationConfigs" - ], - "type": "object" - }, - "ResourceArn": { - "description": "A resource ARN.", - "maxLength": 256, - "minLength": 1, - "pattern": "^arn:aws.*$", - "type": "string" - } - }, - "description": "Resource type definition for AWS::NetworkFirewall::LoggingConfiguration", - "handlers": { - "create": { - "permissions": [ - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:ListLogDeliveries", - "s3:PutBucketPolicy", - "s3:GetBucketPolicy", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "iam:CreateServiceLinkedRole", - "firehose:TagDeliveryStream", - "network-firewall:UpdateLoggingConfiguration", - "network-firewall:DescribeLoggingConfiguration" - ] - }, - "delete": { - "permissions": [ - "logs:DeleteLogDelivery", - "logs:ListLogDeliveries", - "logs:GetLogDelivery", - "network-firewall:UpdateLoggingConfiguration", - "network-firewall:DescribeLoggingConfiguration" - ] - }, - "read": { - "permissions": [ - "logs:GetLogDelivery", - "logs:ListLogDeliveries", - "network-firewall:DescribeLoggingConfiguration" - ] - }, - "update": { - "permissions": [ - "logs:CreateLogDelivery", - "logs:DeleteLogDelivery", - "logs:GetLogDelivery", - "logs:UpdateLogDelivery", - "logs:ListLogDeliveries", - "s3:PutBucketPolicy", - "s3:GetBucketPolicy", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "iam:CreateServiceLinkedRole", - "firehose:TagDeliveryStream", - "network-firewall:UpdateLoggingConfiguration", - "network-firewall:DescribeLoggingConfiguration" - ] - } - }, - "primaryIdentifier": [ - "/properties/FirewallArn" - ], - "properties": { - "FirewallArn": { - "$ref": "#/definitions/ResourceArn" - }, - "FirewallName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "LoggingConfiguration": { - "$ref": "#/definitions/LoggingConfiguration" - } - }, - "required": [ - "FirewallArn", - "LoggingConfiguration" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::NetworkFirewall::LoggingConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FirewallName", + "/properties/FirewallArn" + ], + "definitions": { + "LogDestinationConfig": { + "additionalProperties": false, + "properties": { + "LogDestination": { + "additionalProperties": false, + "description": "A key-value pair to configure the logDestinations.", + "minProperties": 1, + "patternProperties": { + "^[0-9A-Za-z.\\-_@\\/]+$": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "LogDestinationType": { + "enum": [ + "S3", + "CloudWatchLogs", + "KinesisDataFirehose" + ], + "type": "string" + }, + "LogType": { + "enum": [ + "ALERT", + "FLOW", + "TLS" + ], + "type": "string" + } + }, + "required": [ + "LogType", + "LogDestinationType", + "LogDestination" + ], + "type": "object" + }, + "LoggingConfiguration": { + "additionalProperties": false, + "properties": { + "LogDestinationConfigs": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LogDestinationConfig" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "LogDestinationConfigs" + ], + "type": "object" + }, + "ResourceArn": { + "description": "A resource ARN.", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:aws.*$", + "type": "string" + } + }, + "description": "Resource type definition for AWS::NetworkFirewall::LoggingConfiguration", + "handlers": { + "create": { + "permissions": [ + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "s3:PutBucketPolicy", + "s3:GetBucketPolicy", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "iam:CreateServiceLinkedRole", + "firehose:TagDeliveryStream", + "network-firewall:UpdateLoggingConfiguration", + "network-firewall:DescribeLoggingConfiguration" + ] + }, + "delete": { + "permissions": [ + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "logs:GetLogDelivery", + "network-firewall:UpdateLoggingConfiguration", + "network-firewall:DescribeLoggingConfiguration" + ] + }, + "read": { + "permissions": [ + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "network-firewall:DescribeLoggingConfiguration" + ] + }, + "update": { + "permissions": [ + "logs:CreateLogDelivery", + "logs:DeleteLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:ListLogDeliveries", + "s3:PutBucketPolicy", + "s3:GetBucketPolicy", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "iam:CreateServiceLinkedRole", + "firehose:TagDeliveryStream", + "network-firewall:UpdateLoggingConfiguration", + "network-firewall:DescribeLoggingConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/FirewallArn" + ], + "properties": { + "FirewallArn": { + "$ref": "#/definitions/ResourceArn" + }, + "FirewallName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "LoggingConfiguration": { + "$ref": "#/definitions/LoggingConfiguration" + } + }, + "required": [ + "FirewallArn", + "LoggingConfiguration" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::NetworkFirewall::LoggingConfiguration" +} diff --git a/src/schema/aws-networkfirewall-rulegroup.json b/src/schema/aws-networkfirewall-rulegroup.json index aff52185..8119d86e 100644 --- a/src/schema/aws-networkfirewall-rulegroup.json +++ b/src/schema/aws-networkfirewall-rulegroup.json @@ -1,726 +1,726 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RuleGroupName", - "/properties/Capacity", - "/properties/Type" - ], - "definitions": { - "ActionDefinition": { - "additionalProperties": false, - "properties": { - "PublishMetricAction": { - "$ref": "#/definitions/PublishMetricAction" - } - }, - "type": "object" - }, - "Address": { - "additionalProperties": false, - "properties": { - "AddressDefinition": { - "maxLength": 255, - "minLength": 1, - "pattern": "^([a-fA-F\\d:\\.]+/\\d{1,3})$", - "type": "string" - } - }, - "required": [ - "AddressDefinition" - ], - "type": "object" - }, - "CustomAction": { - "additionalProperties": false, - "properties": { - "ActionDefinition": { - "$ref": "#/definitions/ActionDefinition" - }, - "ActionName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - } - }, - "required": [ - "ActionName", - "ActionDefinition" - ], - "type": "object" - }, - "Dimension": { - "additionalProperties": false, - "properties": { - "Value": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-_ ]+$", - "type": "string" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "GeneratedRulesType": { - "enum": [ - "ALLOWLIST", - "DENYLIST" - ], - "type": "string" - }, - "Header": { - "additionalProperties": false, - "properties": { - "Destination": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "DestinationPort": { - "$ref": "#/definitions/Port" - }, - "Direction": { - "enum": [ - "FORWARD", - "ANY" - ], - "type": "string" - }, - "Protocol": { - "enum": [ - "IP", - "TCP", - "UDP", - "ICMP", - "HTTP", - "FTP", - "TLS", - "SMB", - "DNS", - "DCERPC", - "SSH", - "SMTP", - "IMAP", - "MSN", - "KRB5", - "IKEV2", - "TFTP", - "NTP", - "DHCP" - ], - "type": "string" - }, - "Source": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "SourcePort": { - "$ref": "#/definitions/Port" - } - }, - "required": [ - "Protocol", - "Source", - "SourcePort", - "Direction", - "Destination", - "DestinationPort" - ], - "type": "object" - }, - "IPSet": { - "additionalProperties": false, - "properties": { - "Definition": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/VariableDefinition" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "IPSetReference": { - "additionalProperties": false, - "properties": { - "ReferenceArn": { - "$ref": "#/definitions/ResourceArn" - } - }, - "type": "object" - }, - "MatchAttributes": { - "additionalProperties": false, - "properties": { - "DestinationPorts": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PortRange" - }, - "type": "array", - "uniqueItems": false - }, - "Destinations": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Address" - }, - "type": "array", - "uniqueItems": false - }, - "Protocols": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ProtocolNumber" - }, - "type": "array", - "uniqueItems": false - }, - "SourcePorts": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PortRange" - }, - "type": "array", - "uniqueItems": false - }, - "Sources": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Address" - }, - "type": "array", - "uniqueItems": false - }, - "TCPFlags": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TCPFlagField" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "Port": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "PortRange": { - "additionalProperties": false, - "properties": { - "FromPort": { - "$ref": "#/definitions/PortRangeBound" - }, - "ToPort": { - "$ref": "#/definitions/PortRangeBound" - } - }, - "required": [ - "FromPort", - "ToPort" - ], - "type": "object" - }, - "PortRangeBound": { - "maximum": 65535, - "minimum": 0, - "type": "integer" - }, - "PortSet": { - "additionalProperties": false, - "properties": { - "Definition": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/VariableDefinition" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "ProtocolNumber": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "PublishMetricAction": { - "additionalProperties": false, - "properties": { - "Dimensions": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Dimension" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Dimensions" - ], - "type": "object" - }, - "ReferenceSets": { - "additionalProperties": false, - "properties": { - "IPSetReferences": { - "additionalProperties": false, - "patternProperties": { - "^[A-Za-z0-9_]{1,32}$": { - "$ref": "#/definitions/IPSetReference" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "ResourceArn": { - "description": "A resource ARN.", - "maxLength": 256, - "minLength": 1, - "pattern": "^(arn:aws.*)$", - "type": "string" - }, - "RuleDefinition": { - "additionalProperties": false, - "properties": { - "Actions": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "MatchAttributes": { - "$ref": "#/definitions/MatchAttributes" - } - }, - "required": [ - "MatchAttributes", - "Actions" - ], - "type": "object" - }, - "RuleGroup": { - "additionalProperties": false, - "properties": { - "ReferenceSets": { - "$ref": "#/definitions/ReferenceSets" - }, - "RuleVariables": { - "$ref": "#/definitions/RuleVariables" - }, - "RulesSource": { - "$ref": "#/definitions/RulesSource" - }, - "StatefulRuleOptions": { - "$ref": "#/definitions/StatefulRuleOptions" - } - }, - "required": [ - "RulesSource" - ], - "type": "object" - }, - "RuleOption": { - "additionalProperties": false, - "properties": { - "Keyword": { - "maxLength": 128, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "Settings": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Setting" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Keyword" - ], - "type": "object" - }, - "RuleOrder": { - "enum": [ - "DEFAULT_ACTION_ORDER", - "STRICT_ORDER" - ], - "type": "string" - }, - "RuleVariables": { - "additionalProperties": false, - "properties": { - "IPSets": { - "additionalProperties": false, - "patternProperties": { - "^[A-Za-z0-9_]{1,32}$": { - "$ref": "#/definitions/IPSet" - } - }, - "type": "object" - }, - "PortSets": { - "additionalProperties": false, - "patternProperties": { - "^[A-Za-z0-9_]{1,32}$": { - "$ref": "#/definitions/PortSet" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "RulesSource": { - "additionalProperties": false, - "properties": { - "RulesSourceList": { - "$ref": "#/definitions/RulesSourceList" - }, - "RulesString": { - "$ref": "#/definitions/RulesString" - }, - "StatefulRules": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StatefulRule" - }, - "type": "array", - "uniqueItems": false - }, - "StatelessRulesAndCustomActions": { - "$ref": "#/definitions/StatelessRulesAndCustomActions" - } - }, - "type": "object" - }, - "RulesSourceList": { - "additionalProperties": false, - "properties": { - "GeneratedRulesType": { - "$ref": "#/definitions/GeneratedRulesType" - }, - "TargetTypes": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TargetType" - }, - "type": "array", - "uniqueItems": false - }, - "Targets": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Targets", - "TargetTypes", - "GeneratedRulesType" - ], - "type": "object" - }, - "RulesString": { - "maxLength": 1000000, - "minLength": 0, - "type": "string" - }, - "Setting": { - "maxLength": 8192, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "StatefulRule": { - "additionalProperties": false, - "properties": { - "Action": { - "enum": [ - "PASS", - "DROP", - "ALERT", - "REJECT" - ], - "type": "string" - }, - "Header": { - "$ref": "#/definitions/Header" - }, - "RuleOptions": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/RuleOption" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Action", - "Header", - "RuleOptions" - ], - "type": "object" - }, - "StatefulRuleOptions": { - "additionalProperties": false, - "properties": { - "RuleOrder": { - "$ref": "#/definitions/RuleOrder" - } - }, - "type": "object" - }, - "StatelessRule": { - "additionalProperties": false, - "properties": { - "Priority": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "RuleDefinition": { - "$ref": "#/definitions/RuleDefinition" - } - }, - "required": [ - "RuleDefinition", - "Priority" - ], - "type": "object" - }, - "StatelessRulesAndCustomActions": { - "additionalProperties": false, - "properties": { - "CustomActions": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/CustomAction" - }, - "type": "array", - "uniqueItems": false - }, - "StatelessRules": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StatelessRule" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "StatelessRules" - ], - "type": "object" - }, - "TCPFlag": { - "enum": [ - "FIN", - "SYN", - "RST", - "PSH", - "ACK", - "URG", - "ECE", - "CWR" - ], - "type": "string" - }, - "TCPFlagField": { - "additionalProperties": false, - "properties": { - "Flags": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TCPFlag" - }, - "type": "array", - "uniqueItems": false - }, - "Masks": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TCPFlag" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Flags" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 0, - "pattern": "^.*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TargetType": { - "enum": [ - "TLS_SNI", - "HTTP_HOST" - ], - "type": "string" - }, - "VariableDefinition": { - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "description": "Resource type definition for AWS::NetworkFirewall::RuleGroup", - "handlers": { - "create": { - "permissions": [ - "network-firewall:CreateRuleGroup", - "network-firewall:DescribeRuleGroup", - "network-firewall:TagResource", - "network-firewall:ListRuleGroups", - "iam:CreateServiceLinkedRole", - "ec2:GetManagedPrefixListEntries" - ] - }, - "delete": { - "permissions": [ - "network-firewall:DeleteRuleGroup", - "network-firewall:DescribeRuleGroup", - "network-firewall:UntagResource" - ] - }, - "list": { - "permissions": [ - "network-firewall:ListRuleGroups" - ] - }, - "read": { - "permissions": [ - "network-firewall:DescribeRuleGroup", - "network-firewall:ListTagsForResources" - ] - }, - "update": { - "permissions": [ - "network-firewall:UpdateRuleGroup", - "network-firewall:DescribeRuleGroup", - "network-firewall:TagResource", - "network-firewall:UntagResource", - "iam:CreateServiceLinkedRole", - "ec2:GetManagedPrefixListEntries" - ] - } - }, - "primaryIdentifier": [ - "/properties/RuleGroupArn" - ], - "properties": { - "Capacity": { - "type": "integer" - }, - "Description": { - "maxLength": 512, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "RuleGroup": { - "$ref": "#/definitions/RuleGroup" - }, - "RuleGroupArn": { - "$ref": "#/definitions/ResourceArn" - }, - "RuleGroupId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$", - "type": "string" - }, - "RuleGroupName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "enum": [ - "STATELESS", - "STATEFUL" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/RuleGroupArn", - "/properties/RuleGroupId" - ], - "required": [ - "Type", - "Capacity", - "RuleGroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "network-firewall:TagResource", - "network-firewall:UntagResource", - "network-firewall:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::NetworkFirewall::RuleGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RuleGroupName", + "/properties/Capacity", + "/properties/Type" + ], + "definitions": { + "ActionDefinition": { + "additionalProperties": false, + "properties": { + "PublishMetricAction": { + "$ref": "#/definitions/PublishMetricAction" + } + }, + "type": "object" + }, + "Address": { + "additionalProperties": false, + "properties": { + "AddressDefinition": { + "maxLength": 255, + "minLength": 1, + "pattern": "^([a-fA-F\\d:\\.]+/\\d{1,3})$", + "type": "string" + } + }, + "required": [ + "AddressDefinition" + ], + "type": "object" + }, + "CustomAction": { + "additionalProperties": false, + "properties": { + "ActionDefinition": { + "$ref": "#/definitions/ActionDefinition" + }, + "ActionName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "required": [ + "ActionName", + "ActionDefinition" + ], + "type": "object" + }, + "Dimension": { + "additionalProperties": false, + "properties": { + "Value": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-_ ]+$", + "type": "string" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "GeneratedRulesType": { + "enum": [ + "ALLOWLIST", + "DENYLIST" + ], + "type": "string" + }, + "Header": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "DestinationPort": { + "$ref": "#/definitions/Port" + }, + "Direction": { + "enum": [ + "FORWARD", + "ANY" + ], + "type": "string" + }, + "Protocol": { + "enum": [ + "IP", + "TCP", + "UDP", + "ICMP", + "HTTP", + "FTP", + "TLS", + "SMB", + "DNS", + "DCERPC", + "SSH", + "SMTP", + "IMAP", + "MSN", + "KRB5", + "IKEV2", + "TFTP", + "NTP", + "DHCP" + ], + "type": "string" + }, + "Source": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "SourcePort": { + "$ref": "#/definitions/Port" + } + }, + "required": [ + "Protocol", + "Source", + "SourcePort", + "Direction", + "Destination", + "DestinationPort" + ], + "type": "object" + }, + "IPSet": { + "additionalProperties": false, + "properties": { + "Definition": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/VariableDefinition" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "IPSetReference": { + "additionalProperties": false, + "properties": { + "ReferenceArn": { + "$ref": "#/definitions/ResourceArn" + } + }, + "type": "object" + }, + "MatchAttributes": { + "additionalProperties": false, + "properties": { + "DestinationPorts": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": false + }, + "Destinations": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Address" + }, + "type": "array", + "uniqueItems": false + }, + "Protocols": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ProtocolNumber" + }, + "type": "array", + "uniqueItems": false + }, + "SourcePorts": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": false + }, + "Sources": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Address" + }, + "type": "array", + "uniqueItems": false + }, + "TCPFlags": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TCPFlagField" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "Port": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "PortRange": { + "additionalProperties": false, + "properties": { + "FromPort": { + "$ref": "#/definitions/PortRangeBound" + }, + "ToPort": { + "$ref": "#/definitions/PortRangeBound" + } + }, + "required": [ + "FromPort", + "ToPort" + ], + "type": "object" + }, + "PortRangeBound": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "PortSet": { + "additionalProperties": false, + "properties": { + "Definition": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/VariableDefinition" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "ProtocolNumber": { + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "PublishMetricAction": { + "additionalProperties": false, + "properties": { + "Dimensions": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Dimension" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Dimensions" + ], + "type": "object" + }, + "ReferenceSets": { + "additionalProperties": false, + "properties": { + "IPSetReferences": { + "additionalProperties": false, + "patternProperties": { + "^[A-Za-z0-9_]{1,32}$": { + "$ref": "#/definitions/IPSetReference" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "ResourceArn": { + "description": "A resource ARN.", + "maxLength": 256, + "minLength": 1, + "pattern": "^(arn:aws.*)$", + "type": "string" + }, + "RuleDefinition": { + "additionalProperties": false, + "properties": { + "Actions": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MatchAttributes": { + "$ref": "#/definitions/MatchAttributes" + } + }, + "required": [ + "MatchAttributes", + "Actions" + ], + "type": "object" + }, + "RuleGroup": { + "additionalProperties": false, + "properties": { + "ReferenceSets": { + "$ref": "#/definitions/ReferenceSets" + }, + "RuleVariables": { + "$ref": "#/definitions/RuleVariables" + }, + "RulesSource": { + "$ref": "#/definitions/RulesSource" + }, + "StatefulRuleOptions": { + "$ref": "#/definitions/StatefulRuleOptions" + } + }, + "required": [ + "RulesSource" + ], + "type": "object" + }, + "RuleOption": { + "additionalProperties": false, + "properties": { + "Keyword": { + "maxLength": 128, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "Settings": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Setting" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Keyword" + ], + "type": "object" + }, + "RuleOrder": { + "enum": [ + "DEFAULT_ACTION_ORDER", + "STRICT_ORDER" + ], + "type": "string" + }, + "RuleVariables": { + "additionalProperties": false, + "properties": { + "IPSets": { + "additionalProperties": false, + "patternProperties": { + "^[A-Za-z0-9_]{1,32}$": { + "$ref": "#/definitions/IPSet" + } + }, + "type": "object" + }, + "PortSets": { + "additionalProperties": false, + "patternProperties": { + "^[A-Za-z0-9_]{1,32}$": { + "$ref": "#/definitions/PortSet" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "RulesSource": { + "additionalProperties": false, + "properties": { + "RulesSourceList": { + "$ref": "#/definitions/RulesSourceList" + }, + "RulesString": { + "$ref": "#/definitions/RulesString" + }, + "StatefulRules": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StatefulRule" + }, + "type": "array", + "uniqueItems": false + }, + "StatelessRulesAndCustomActions": { + "$ref": "#/definitions/StatelessRulesAndCustomActions" + } + }, + "type": "object" + }, + "RulesSourceList": { + "additionalProperties": false, + "properties": { + "GeneratedRulesType": { + "$ref": "#/definitions/GeneratedRulesType" + }, + "TargetTypes": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TargetType" + }, + "type": "array", + "uniqueItems": false + }, + "Targets": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Targets", + "TargetTypes", + "GeneratedRulesType" + ], + "type": "object" + }, + "RulesString": { + "maxLength": 1000000, + "minLength": 0, + "type": "string" + }, + "Setting": { + "maxLength": 8192, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "StatefulRule": { + "additionalProperties": false, + "properties": { + "Action": { + "enum": [ + "PASS", + "DROP", + "ALERT", + "REJECT" + ], + "type": "string" + }, + "Header": { + "$ref": "#/definitions/Header" + }, + "RuleOptions": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/RuleOption" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Action", + "Header", + "RuleOptions" + ], + "type": "object" + }, + "StatefulRuleOptions": { + "additionalProperties": false, + "properties": { + "RuleOrder": { + "$ref": "#/definitions/RuleOrder" + } + }, + "type": "object" + }, + "StatelessRule": { + "additionalProperties": false, + "properties": { + "Priority": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "RuleDefinition": { + "$ref": "#/definitions/RuleDefinition" + } + }, + "required": [ + "RuleDefinition", + "Priority" + ], + "type": "object" + }, + "StatelessRulesAndCustomActions": { + "additionalProperties": false, + "properties": { + "CustomActions": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/CustomAction" + }, + "type": "array", + "uniqueItems": false + }, + "StatelessRules": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StatelessRule" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "StatelessRules" + ], + "type": "object" + }, + "TCPFlag": { + "enum": [ + "FIN", + "SYN", + "RST", + "PSH", + "ACK", + "URG", + "ECE", + "CWR" + ], + "type": "string" + }, + "TCPFlagField": { + "additionalProperties": false, + "properties": { + "Flags": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TCPFlag" + }, + "type": "array", + "uniqueItems": false + }, + "Masks": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TCPFlag" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Flags" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 0, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TargetType": { + "enum": [ + "TLS_SNI", + "HTTP_HOST" + ], + "type": "string" + }, + "VariableDefinition": { + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "description": "Resource type definition for AWS::NetworkFirewall::RuleGroup", + "handlers": { + "create": { + "permissions": [ + "network-firewall:CreateRuleGroup", + "network-firewall:DescribeRuleGroup", + "network-firewall:TagResource", + "network-firewall:ListRuleGroups", + "iam:CreateServiceLinkedRole", + "ec2:GetManagedPrefixListEntries" + ] + }, + "delete": { + "permissions": [ + "network-firewall:DeleteRuleGroup", + "network-firewall:DescribeRuleGroup", + "network-firewall:UntagResource" + ] + }, + "list": { + "permissions": [ + "network-firewall:ListRuleGroups" + ] + }, + "read": { + "permissions": [ + "network-firewall:DescribeRuleGroup", + "network-firewall:ListTagsForResources" + ] + }, + "update": { + "permissions": [ + "network-firewall:UpdateRuleGroup", + "network-firewall:DescribeRuleGroup", + "network-firewall:TagResource", + "network-firewall:UntagResource", + "iam:CreateServiceLinkedRole", + "ec2:GetManagedPrefixListEntries" + ] + } + }, + "primaryIdentifier": [ + "/properties/RuleGroupArn" + ], + "properties": { + "Capacity": { + "type": "integer" + }, + "Description": { + "maxLength": 512, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "RuleGroup": { + "$ref": "#/definitions/RuleGroup" + }, + "RuleGroupArn": { + "$ref": "#/definitions/ResourceArn" + }, + "RuleGroupId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$", + "type": "string" + }, + "RuleGroupName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Type": { + "enum": [ + "STATELESS", + "STATEFUL" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/RuleGroupArn", + "/properties/RuleGroupId" + ], + "required": [ + "Type", + "Capacity", + "RuleGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "network-firewall:TagResource", + "network-firewall:UntagResource", + "network-firewall:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkFirewall::RuleGroup" +} diff --git a/src/schema/aws-networkfirewall-tlsinspectionconfiguration.json b/src/schema/aws-networkfirewall-tlsinspectionconfiguration.json index ce3adb91..2fbd41fc 100644 --- a/src/schema/aws-networkfirewall-tlsinspectionconfiguration.json +++ b/src/schema/aws-networkfirewall-tlsinspectionconfiguration.json @@ -1,296 +1,296 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TLSInspectionConfigurationName" - ], - "definitions": { - "Address": { - "additionalProperties": false, - "properties": { - "AddressDefinition": { - "maxLength": 255, - "minLength": 1, - "pattern": "^([a-fA-F\\d:\\.]+/\\d{1,3})$", - "type": "string" - } - }, - "required": [ - "AddressDefinition" - ], - "type": "object" - }, - "PortRange": { - "additionalProperties": false, - "properties": { - "FromPort": { - "$ref": "#/definitions/PortRangeBound" - }, - "ToPort": { - "$ref": "#/definitions/PortRangeBound" - } - }, - "required": [ - "FromPort", - "ToPort" - ], - "type": "object" - }, - "PortRangeBound": { - "maximum": 65535, - "minimum": 0, - "type": "integer" - }, - "ProtocolNumber": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "ResourceArn": { - "description": "A resource ARN.", - "maxLength": 256, - "minLength": 1, - "pattern": "^(arn:aws.*)$", - "type": "string" - }, - "RevokedStatusAction": { - "enum": [ - "PASS", - "DROP", - "REJECT" - ], - "type": "string" - }, - "ServerCertificate": { - "additionalProperties": false, - "properties": { - "ResourceArn": { - "$ref": "#/definitions/ResourceArn" - } - }, - "type": "object" - }, - "ServerCertificateConfiguration": { - "additionalProperties": false, - "properties": { - "CertificateAuthorityArn": { - "$ref": "#/definitions/ResourceArn" - }, - "CheckCertificateRevocationStatus": { - "additionalProperties": false, - "properties": { - "RevokedStatusAction": { - "$ref": "#/definitions/RevokedStatusAction" - }, - "UnknownStatusAction": { - "$ref": "#/definitions/UnknownStatusAction" - } - }, - "type": "object" - }, - "Scopes": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ServerCertificateScope" - }, - "type": "array", - "uniqueItems": false - }, - "ServerCertificates": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ServerCertificate" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "ServerCertificateScope": { - "additionalProperties": false, - "properties": { - "DestinationPorts": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PortRange" - }, - "type": "array", - "uniqueItems": false - }, - "Destinations": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Address" - }, - "type": "array", - "uniqueItems": false - }, - "Protocols": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ProtocolNumber" - }, - "type": "array", - "uniqueItems": false - }, - "SourcePorts": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PortRange" - }, - "type": "array", - "uniqueItems": false - }, - "Sources": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Address" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "TLSInspectionConfiguration": { - "additionalProperties": false, - "properties": { - "ServerCertificateConfigurations": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ServerCertificateConfiguration" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 0, - "pattern": "^.*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UnknownStatusAction": { - "enum": [ - "PASS", - "DROP", - "REJECT" - ], - "type": "string" - } - }, - "description": "Resource type definition for AWS::NetworkFirewall::TLSInspectionConfiguration", - "handlers": { - "create": { - "permissions": [ - "iam:CreateServiceLinkedRole", - "network-firewall:CreateTLSInspectionConfiguration", - "network-firewall:DescribeTLSInspectionConfiguration", - "network-firewall:TagResource" - ] - }, - "delete": { - "permissions": [ - "network-firewall:DeleteTLSInspectionConfiguration", - "network-firewall:DescribeTLSInspectionConfiguration", - "network-firewall:UntagResource" - ] - }, - "list": { - "permissions": [ - "network-firewall:ListTLSInspectionConfigurations" - ] - }, - "read": { - "permissions": [ - "network-firewall:DescribeTLSInspectionConfiguration", - "network-firewall:ListTagsForResources" - ] - }, - "update": { - "permissions": [ - "network-firewall:UpdateTLSInspectionConfiguration", - "network-firewall:DescribeTLSInspectionConfiguration", - "network-firewall:TagResource", - "network-firewall:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/TLSInspectionConfigurationArn" - ], - "properties": { - "Description": { - "maxLength": 512, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "TLSInspectionConfiguration": { - "$ref": "#/definitions/TLSInspectionConfiguration" - }, - "TLSInspectionConfigurationArn": { - "$ref": "#/definitions/ResourceArn" - }, - "TLSInspectionConfigurationId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$", - "type": "string" - }, - "TLSInspectionConfigurationName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/TLSInspectionConfigurationArn", - "/properties/TLSInspectionConfigurationId" - ], - "required": [ - "TLSInspectionConfigurationName", - "TLSInspectionConfiguration" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "network-firewall:TagResource", - "network-firewall:UntagResource", - "network-firewall:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::NetworkFirewall::TLSInspectionConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TLSInspectionConfigurationName" + ], + "definitions": { + "Address": { + "additionalProperties": false, + "properties": { + "AddressDefinition": { + "maxLength": 255, + "minLength": 1, + "pattern": "^([a-fA-F\\d:\\.]+/\\d{1,3})$", + "type": "string" + } + }, + "required": [ + "AddressDefinition" + ], + "type": "object" + }, + "PortRange": { + "additionalProperties": false, + "properties": { + "FromPort": { + "$ref": "#/definitions/PortRangeBound" + }, + "ToPort": { + "$ref": "#/definitions/PortRangeBound" + } + }, + "required": [ + "FromPort", + "ToPort" + ], + "type": "object" + }, + "PortRangeBound": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "ProtocolNumber": { + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "ResourceArn": { + "description": "A resource ARN.", + "maxLength": 256, + "minLength": 1, + "pattern": "^(arn:aws.*)$", + "type": "string" + }, + "RevokedStatusAction": { + "enum": [ + "PASS", + "DROP", + "REJECT" + ], + "type": "string" + }, + "ServerCertificate": { + "additionalProperties": false, + "properties": { + "ResourceArn": { + "$ref": "#/definitions/ResourceArn" + } + }, + "type": "object" + }, + "ServerCertificateConfiguration": { + "additionalProperties": false, + "properties": { + "CertificateAuthorityArn": { + "$ref": "#/definitions/ResourceArn" + }, + "CheckCertificateRevocationStatus": { + "additionalProperties": false, + "properties": { + "RevokedStatusAction": { + "$ref": "#/definitions/RevokedStatusAction" + }, + "UnknownStatusAction": { + "$ref": "#/definitions/UnknownStatusAction" + } + }, + "type": "object" + }, + "Scopes": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ServerCertificateScope" + }, + "type": "array", + "uniqueItems": false + }, + "ServerCertificates": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ServerCertificate" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ServerCertificateScope": { + "additionalProperties": false, + "properties": { + "DestinationPorts": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": false + }, + "Destinations": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Address" + }, + "type": "array", + "uniqueItems": false + }, + "Protocols": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ProtocolNumber" + }, + "type": "array", + "uniqueItems": false + }, + "SourcePorts": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array", + "uniqueItems": false + }, + "Sources": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Address" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "TLSInspectionConfiguration": { + "additionalProperties": false, + "properties": { + "ServerCertificateConfigurations": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ServerCertificateConfiguration" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 0, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UnknownStatusAction": { + "enum": [ + "PASS", + "DROP", + "REJECT" + ], + "type": "string" + } + }, + "description": "Resource type definition for AWS::NetworkFirewall::TLSInspectionConfiguration", + "handlers": { + "create": { + "permissions": [ + "iam:CreateServiceLinkedRole", + "network-firewall:CreateTLSInspectionConfiguration", + "network-firewall:DescribeTLSInspectionConfiguration", + "network-firewall:TagResource" + ] + }, + "delete": { + "permissions": [ + "network-firewall:DeleteTLSInspectionConfiguration", + "network-firewall:DescribeTLSInspectionConfiguration", + "network-firewall:UntagResource" + ] + }, + "list": { + "permissions": [ + "network-firewall:ListTLSInspectionConfigurations" + ] + }, + "read": { + "permissions": [ + "network-firewall:DescribeTLSInspectionConfiguration", + "network-firewall:ListTagsForResources" + ] + }, + "update": { + "permissions": [ + "network-firewall:UpdateTLSInspectionConfiguration", + "network-firewall:DescribeTLSInspectionConfiguration", + "network-firewall:TagResource", + "network-firewall:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/TLSInspectionConfigurationArn" + ], + "properties": { + "Description": { + "maxLength": 512, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "TLSInspectionConfiguration": { + "$ref": "#/definitions/TLSInspectionConfiguration" + }, + "TLSInspectionConfigurationArn": { + "$ref": "#/definitions/ResourceArn" + }, + "TLSInspectionConfigurationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$", + "type": "string" + }, + "TLSInspectionConfigurationName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/TLSInspectionConfigurationArn", + "/properties/TLSInspectionConfigurationId" + ], + "required": [ + "TLSInspectionConfigurationName", + "TLSInspectionConfiguration" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "network-firewall:TagResource", + "network-firewall:UntagResource", + "network-firewall:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkFirewall::TLSInspectionConfiguration" +} diff --git a/src/schema/aws-networkmanager-connectattachment.json b/src/schema/aws-networkmanager-connectattachment.json index 55afdc0d..f054dd52 100644 --- a/src/schema/aws-networkmanager-connectattachment.json +++ b/src/schema/aws-networkmanager-connectattachment.json @@ -1,240 +1,240 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CoreNetworkId", - "/properties/EdgeLocation", - "/properties/TransportAttachmentId", - "/properties/Options" - ], - "definitions": { - "ConnectAttachmentOptions": { - "additionalProperties": false, - "description": "Connect attachment options for protocol", - "properties": { - "Protocol": { - "description": "Tunnel protocol for connect attachment", - "type": "string" - } - }, - "type": "object" - }, - "ProposedNetworkFunctionGroupChange": { - "additionalProperties": false, - "description": "The attachment to move from one network function group to another.", - "properties": { - "AttachmentPolicyRuleNumber": { - "description": "The rule number in the policy document that applies to this change.", - "type": "integer" - }, - "NetworkFunctionGroupName": { - "description": "The name of the network function group to change.", - "type": "string" - }, - "Tags": { - "description": "The key-value tags that changed for the network function group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "ProposedSegmentChange": { - "additionalProperties": false, - "description": "The attachment to move from one segment to another.", - "properties": { - "AttachmentPolicyRuleNumber": { - "description": "The rule number in the policy document that applies to this change.", - "type": "integer" - }, - "SegmentName": { - "description": "The name of the segment to change.", - "type": "string" - }, - "Tags": { - "description": "The list of key-value tags that changed for the segment.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "AWS::NetworkManager::ConnectAttachment Resource Type Definition", - "handlers": { - "create": { - "permissions": [ - "networkmanager:GetConnectAttachment", - "networkmanager:CreateConnectAttachment", - "networkmanager:TagResource", - "ec2:DescribeRegions" - ] - }, - "delete": { - "permissions": [ - "networkmanager:GetConnectAttachment", - "networkmanager:DeleteAttachment", - "ec2:DescribeRegions" - ] - }, - "list": { - "permissions": [ - "networkmanager:ListAttachments" - ] - }, - "read": { - "permissions": [ - "networkmanager:GetConnectAttachment" - ] - }, - "update": { - "permissions": [ - "networkmanager:GetConnectAttachment", - "networkmanager:ListTagsForResource", - "networkmanager:TagResource", - "networkmanager:UntagResource", - "ec2:DescribeRegions" - ] - } - }, - "primaryIdentifier": [ - "/properties/AttachmentId" - ], - "properties": { - "AttachmentId": { - "description": "The ID of the attachment.", - "type": "string" - }, - "AttachmentPolicyRuleNumber": { - "description": "The policy rule number associated with the attachment.", - "type": "integer" - }, - "AttachmentType": { - "description": "The type of attachment.", - "type": "string" - }, - "CoreNetworkArn": { - "description": "The ARN of a core network.", - "type": "string" - }, - "CoreNetworkId": { - "description": "ID of the CoreNetwork that the attachment will be attached to.", - "type": "string" - }, - "CreatedAt": { - "description": "Creation time of the attachment.", - "type": "string" - }, - "EdgeLocation": { - "description": "Edge location of the attachment.", - "type": "string" - }, - "NetworkFunctionGroupName": { - "description": "The name of the network function group attachment.", - "type": "string" - }, - "Options": { - "$ref": "#/definitions/ConnectAttachmentOptions", - "description": "Protocol options for connect attachment" - }, - "OwnerAccountId": { - "description": "The ID of the attachment account owner.", - "type": "string" - }, - "ProposedNetworkFunctionGroupChange": { - "$ref": "#/definitions/ProposedNetworkFunctionGroupChange", - "description": "The attachment to move from one network function group to another." - }, - "ProposedSegmentChange": { - "$ref": "#/definitions/ProposedSegmentChange", - "description": "The attachment to move from one segment to another." - }, - "ResourceArn": { - "description": "The attachment resource ARN.", - "type": "string" - }, - "SegmentName": { - "description": "The name of the segment attachment.", - "type": "string" - }, - "State": { - "description": "State of the attachment.", - "type": "string" - }, - "Tags": { - "description": "Tags for the attachment.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "TransportAttachmentId": { - "description": "Id of transport attachment", - "type": "string" - }, - "UpdatedAt": { - "description": "Last update time of the attachment.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CoreNetworkArn", - "/properties/CreatedAt", - "/properties/UpdatedAt", - "/properties/AttachmentType", - "/properties/State", - "/properties/ResourceArn", - "/properties/AttachmentId", - "/properties/OwnerAccountId", - "/properties/AttachmentPolicyRuleNumber", - "/properties/SegmentName" - ], - "required": [ - "CoreNetworkId", - "EdgeLocation", - "TransportAttachmentId", - "Options" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-connectattachment", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "networkmanager:TagResource", - "networkmanager:UntagResource", - "networkmanager:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::NetworkManager::ConnectAttachment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CoreNetworkId", + "/properties/EdgeLocation", + "/properties/TransportAttachmentId", + "/properties/Options" + ], + "definitions": { + "ConnectAttachmentOptions": { + "additionalProperties": false, + "description": "Connect attachment options for protocol", + "properties": { + "Protocol": { + "description": "Tunnel protocol for connect attachment", + "type": "string" + } + }, + "type": "object" + }, + "ProposedNetworkFunctionGroupChange": { + "additionalProperties": false, + "description": "The attachment to move from one network function group to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the network function group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ProposedSegmentChange": { + "additionalProperties": false, + "description": "The attachment to move from one segment to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "SegmentName": { + "description": "The name of the segment to change.", + "type": "string" + }, + "Tags": { + "description": "The list of key-value tags that changed for the segment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "AWS::NetworkManager::ConnectAttachment Resource Type Definition", + "handlers": { + "create": { + "permissions": [ + "networkmanager:GetConnectAttachment", + "networkmanager:CreateConnectAttachment", + "networkmanager:TagResource", + "ec2:DescribeRegions" + ] + }, + "delete": { + "permissions": [ + "networkmanager:GetConnectAttachment", + "networkmanager:DeleteAttachment", + "ec2:DescribeRegions" + ] + }, + "list": { + "permissions": [ + "networkmanager:ListAttachments" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetConnectAttachment" + ] + }, + "update": { + "permissions": [ + "networkmanager:GetConnectAttachment", + "networkmanager:ListTagsForResource", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ] + } + }, + "primaryIdentifier": [ + "/properties/AttachmentId" + ], + "properties": { + "AttachmentId": { + "description": "The ID of the attachment.", + "type": "string" + }, + "AttachmentPolicyRuleNumber": { + "description": "The policy rule number associated with the attachment.", + "type": "integer" + }, + "AttachmentType": { + "description": "The type of attachment.", + "type": "string" + }, + "CoreNetworkArn": { + "description": "The ARN of a core network.", + "type": "string" + }, + "CoreNetworkId": { + "description": "ID of the CoreNetwork that the attachment will be attached to.", + "type": "string" + }, + "CreatedAt": { + "description": "Creation time of the attachment.", + "type": "string" + }, + "EdgeLocation": { + "description": "Edge location of the attachment.", + "type": "string" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group attachment.", + "type": "string" + }, + "Options": { + "$ref": "#/definitions/ConnectAttachmentOptions", + "description": "Protocol options for connect attachment" + }, + "OwnerAccountId": { + "description": "The ID of the attachment account owner.", + "type": "string" + }, + "ProposedNetworkFunctionGroupChange": { + "$ref": "#/definitions/ProposedNetworkFunctionGroupChange", + "description": "The attachment to move from one network function group to another." + }, + "ProposedSegmentChange": { + "$ref": "#/definitions/ProposedSegmentChange", + "description": "The attachment to move from one segment to another." + }, + "ResourceArn": { + "description": "The attachment resource ARN.", + "type": "string" + }, + "SegmentName": { + "description": "The name of the segment attachment.", + "type": "string" + }, + "State": { + "description": "State of the attachment.", + "type": "string" + }, + "Tags": { + "description": "Tags for the attachment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TransportAttachmentId": { + "description": "Id of transport attachment", + "type": "string" + }, + "UpdatedAt": { + "description": "Last update time of the attachment.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CoreNetworkArn", + "/properties/CreatedAt", + "/properties/UpdatedAt", + "/properties/AttachmentType", + "/properties/State", + "/properties/ResourceArn", + "/properties/AttachmentId", + "/properties/OwnerAccountId", + "/properties/AttachmentPolicyRuleNumber", + "/properties/SegmentName" + ], + "required": [ + "CoreNetworkId", + "EdgeLocation", + "TransportAttachmentId", + "Options" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-connectattachment", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::ConnectAttachment" +} diff --git a/src/schema/aws-networkmanager-connectpeer.json b/src/schema/aws-networkmanager-connectpeer.json index 1c1384c1..6db89565 100644 --- a/src/schema/aws-networkmanager-connectpeer.json +++ b/src/schema/aws-networkmanager-connectpeer.json @@ -1,242 +1,242 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ConnectAttachmentId", - "/properties/CoreNetworkAddress", - "/properties/InsideCidrBlocks" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PeerAddress", - "/properties/CoreNetworkAddress", - "/properties/BgpOptions", - "/properties/InsideCidrBlocks", - "/properties/ConnectAttachmentId", - "/properties/SubnetArn" - ], - "definitions": { - "BgpOptions": { - "additionalProperties": false, - "description": "Bgp options", - "properties": { - "PeerAsn": { - "type": "number" - } - }, - "type": "object" - }, - "ConnectPeerBgpConfiguration": { - "additionalProperties": false, - "description": "Bgp configuration for connect peer", - "properties": { - "CoreNetworkAddress": { - "description": "The address of a core network.", - "type": "string" - }, - "CoreNetworkAsn": { - "description": "The ASN of the Coret Network.", - "type": "number" - }, - "PeerAddress": { - "description": "The address of a core network Connect peer.", - "type": "string" - }, - "PeerAsn": { - "description": "The ASN of the Connect peer.", - "type": "number" - } - }, - "type": "object" - }, - "ConnectPeerConfiguration": { - "additionalProperties": false, - "properties": { - "BgpConfigurations": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ConnectPeerBgpConfiguration" - }, - "type": "array" - }, - "CoreNetworkAddress": { - "description": "The IP address of a core network.", - "type": "string" - }, - "InsideCidrBlocks": { - "description": "The inside IP addresses used for a Connect peer configuration.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "PeerAddress": { - "description": "The IP address of the Connect peer.", - "type": "string" - }, - "Protocol": { - "$ref": "#/definitions/TunnelProtocol" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TunnelProtocol": { - "description": "The protocol used for a Connect peer configuration.", - "type": "string" - } - }, - "description": "AWS::NetworkManager::ConnectPeer Resource Type Definition.", - "handlers": { - "create": { - "permissions": [ - "networkmanager:GetConnectPeer", - "networkmanager:CreateConnectPeer", - "networkmanager:TagResource", - "ec2:DescribeRegions" - ] - }, - "delete": { - "permissions": [ - "networkmanager:GetConnectPeer", - "networkmanager:DeleteConnectPeer", - "ec2:DescribeRegions" - ] - }, - "list": { - "permissions": [ - "networkmanager:ListConnectPeers" - ] - }, - "read": { - "permissions": [ - "networkmanager:GetConnectPeer" - ] - }, - "update": { - "permissions": [ - "networkmanager:GetConnectPeer", - "networkmanager:ListTagsForResource", - "networkmanager:TagResource", - "networkmanager:UntagResource", - "ec2:DescribeRegions" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConnectPeerId" - ], - "properties": { - "BgpOptions": { - "$ref": "#/definitions/BgpOptions", - "description": "Bgp options for connect peer." - }, - "Configuration": { - "$ref": "#/definitions/ConnectPeerConfiguration", - "description": "Configuration of the connect peer." - }, - "ConnectAttachmentId": { - "description": "The ID of the attachment to connect.", - "type": "string" - }, - "ConnectPeerId": { - "description": "The ID of the Connect peer.", - "type": "string" - }, - "CoreNetworkAddress": { - "description": "The IP address of a core network.", - "type": "string" - }, - "CoreNetworkId": { - "description": "The ID of the core network.", - "type": "string" - }, - "CreatedAt": { - "description": "Connect peer creation time.", - "type": "string" - }, - "EdgeLocation": { - "description": "The Connect peer Regions where edges are located.", - "type": "string" - }, - "InsideCidrBlocks": { - "description": "The inside IP addresses used for a Connect peer configuration.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "PeerAddress": { - "description": "The IP address of the Connect peer.", - "type": "string" - }, - "State": { - "description": "State of the connect peer.", - "type": "string" - }, - "SubnetArn": { - "description": "The subnet ARN for the connect peer.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/ConnectPeerId", - "/properties/State", - "/properties/CreatedAt", - "/properties/Configuration", - "/properties/CoreNetworkId", - "/properties/EdgeLocation" - ], - "required": [ - "ConnectAttachmentId", - "PeerAddress" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-connectpeer", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "networkmanager:TagResource", - "networkmanager:UntagResource", - "networkmanager:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::NetworkManager::ConnectPeer", - "writeOnlyProperties": [ - "/properties/CoreNetworkAddress", - "/properties/BgpOptions", - "/properties/SubnetArn" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/ConnectAttachmentId", + "/properties/CoreNetworkAddress", + "/properties/InsideCidrBlocks" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PeerAddress", + "/properties/CoreNetworkAddress", + "/properties/BgpOptions", + "/properties/InsideCidrBlocks", + "/properties/ConnectAttachmentId", + "/properties/SubnetArn" + ], + "definitions": { + "BgpOptions": { + "additionalProperties": false, + "description": "Bgp options", + "properties": { + "PeerAsn": { + "type": "number" + } + }, + "type": "object" + }, + "ConnectPeerBgpConfiguration": { + "additionalProperties": false, + "description": "Bgp configuration for connect peer", + "properties": { + "CoreNetworkAddress": { + "description": "The address of a core network.", + "type": "string" + }, + "CoreNetworkAsn": { + "description": "The ASN of the Coret Network.", + "type": "number" + }, + "PeerAddress": { + "description": "The address of a core network Connect peer.", + "type": "string" + }, + "PeerAsn": { + "description": "The ASN of the Connect peer.", + "type": "number" + } + }, + "type": "object" + }, + "ConnectPeerConfiguration": { + "additionalProperties": false, + "properties": { + "BgpConfigurations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ConnectPeerBgpConfiguration" + }, + "type": "array" + }, + "CoreNetworkAddress": { + "description": "The IP address of a core network.", + "type": "string" + }, + "InsideCidrBlocks": { + "description": "The inside IP addresses used for a Connect peer configuration.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "PeerAddress": { + "description": "The IP address of the Connect peer.", + "type": "string" + }, + "Protocol": { + "$ref": "#/definitions/TunnelProtocol" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TunnelProtocol": { + "description": "The protocol used for a Connect peer configuration.", + "type": "string" + } + }, + "description": "AWS::NetworkManager::ConnectPeer Resource Type Definition.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:GetConnectPeer", + "networkmanager:CreateConnectPeer", + "networkmanager:TagResource", + "ec2:DescribeRegions" + ] + }, + "delete": { + "permissions": [ + "networkmanager:GetConnectPeer", + "networkmanager:DeleteConnectPeer", + "ec2:DescribeRegions" + ] + }, + "list": { + "permissions": [ + "networkmanager:ListConnectPeers" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetConnectPeer" + ] + }, + "update": { + "permissions": [ + "networkmanager:GetConnectPeer", + "networkmanager:ListTagsForResource", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConnectPeerId" + ], + "properties": { + "BgpOptions": { + "$ref": "#/definitions/BgpOptions", + "description": "Bgp options for connect peer." + }, + "Configuration": { + "$ref": "#/definitions/ConnectPeerConfiguration", + "description": "Configuration of the connect peer." + }, + "ConnectAttachmentId": { + "description": "The ID of the attachment to connect.", + "type": "string" + }, + "ConnectPeerId": { + "description": "The ID of the Connect peer.", + "type": "string" + }, + "CoreNetworkAddress": { + "description": "The IP address of a core network.", + "type": "string" + }, + "CoreNetworkId": { + "description": "The ID of the core network.", + "type": "string" + }, + "CreatedAt": { + "description": "Connect peer creation time.", + "type": "string" + }, + "EdgeLocation": { + "description": "The Connect peer Regions where edges are located.", + "type": "string" + }, + "InsideCidrBlocks": { + "description": "The inside IP addresses used for a Connect peer configuration.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "PeerAddress": { + "description": "The IP address of the Connect peer.", + "type": "string" + }, + "State": { + "description": "State of the connect peer.", + "type": "string" + }, + "SubnetArn": { + "description": "The subnet ARN for the connect peer.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/ConnectPeerId", + "/properties/State", + "/properties/CreatedAt", + "/properties/Configuration", + "/properties/CoreNetworkId", + "/properties/EdgeLocation" + ], + "required": [ + "ConnectAttachmentId", + "PeerAddress" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-connectpeer", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::ConnectPeer", + "writeOnlyProperties": [ + "/properties/CoreNetworkAddress", + "/properties/BgpOptions", + "/properties/SubnetArn" + ] +} diff --git a/src/schema/aws-networkmanager-corenetwork.json b/src/schema/aws-networkmanager-corenetwork.json index 19781e4e..faddbcde 100644 --- a/src/schema/aws-networkmanager-corenetwork.json +++ b/src/schema/aws-networkmanager-corenetwork.json @@ -1,268 +1,268 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/CoreNetworkArn" - ], - [ - "/properties/GlobalNetworkId" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GlobalNetworkId" - ], - "definitions": { - "CoreNetworkEdge": { - "additionalProperties": false, - "properties": { - "Asn": { - "description": "The ASN of a core network edge.", - "type": "number" - }, - "EdgeLocation": { - "description": "The Region where a core network edge is located.", - "type": "string" - }, - "InsideCidrBlocks": { - "insertionOrder": false, - "items": { - "description": "The inside IP addresses used for core network edges.", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "CoreNetworkNetworkFunctionGroup": { - "additionalProperties": false, - "properties": { - "EdgeLocations": { - "insertionOrder": false, - "items": { - "description": "The Regions where the edges are located.", - "type": "string" - }, - "type": "array" - }, - "Name": { - "description": "Name of network function group", - "type": "string" - }, - "Segments": { - "additionalProperties": false, - "properties": { - "SendTo": { - "insertionOrder": false, - "items": { - "description": "The send-to segments.", - "type": "string" - }, - "type": "array" - }, - "SendVia": { - "insertionOrder": false, - "items": { - "description": "The send-via segments.", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "CoreNetworkSegment": { - "additionalProperties": false, - "properties": { - "EdgeLocations": { - "insertionOrder": false, - "items": { - "description": "The Regions where the edges are located.", - "type": "string" - }, - "type": "array" - }, - "Name": { - "description": "Name of segment", - "type": "string" - }, - "SharedSegments": { - "insertionOrder": false, - "items": { - "description": "The shared segments of a core network.", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "AWS::NetworkManager::CoreNetwork Resource Type Definition.", - "handlers": { - "create": { - "permissions": [ - "networkmanager:CreateCoreNetwork", - "networkmanager:GetCoreNetwork", - "networkmanager:GetCoreNetworkPolicy", - "networkmanager:TagResource", - "ec2:DescribeRegions" - ], - "timeoutInMinutes": 720 - }, - "delete": { - "permissions": [ - "networkmanager:DeleteCoreNetwork", - "networkmanager:UntagResource", - "networkmanager:GetCoreNetwork", - "networkmanager:GetCoreNetworkPolicy", - "ec2:DescribeRegions" - ], - "timeoutInMinutes": 720 - }, - "list": { - "permissions": [ - "networkmanager:ListCoreNetworks" - ] - }, - "read": { - "permissions": [ - "networkmanager:GetCoreNetwork", - "networkmanager:GetCoreNetworkPolicy" - ] - }, - "update": { - "permissions": [ - "networkmanager:UpdateCoreNetwork", - "networkmanager:GetCoreNetwork", - "networkmanager:ListTagsForResource", - "networkmanager:PutCoreNetworkPolicy", - "networkmanager:GetCoreNetworkPolicy", - "networkmanager:ExecuteCoreNetworkChangeSet", - "networkmanager:TagResource", - "networkmanager:UntagResource", - "ec2:DescribeRegions" - ], - "timeoutInMinutes": 720 - } - }, - "primaryIdentifier": [ - "/properties/CoreNetworkId" - ], - "properties": { - "CoreNetworkArn": { - "description": "The ARN (Amazon resource name) of core network", - "type": "string" - }, - "CoreNetworkId": { - "description": "The Id of core network", - "type": "string" - }, - "CreatedAt": { - "description": "The creation time of core network", - "type": "string" - }, - "Description": { - "description": "The description of core network", - "type": "string" - }, - "Edges": { - "description": "The edges within a core network.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CoreNetworkEdge" - }, - "type": "array" - }, - "GlobalNetworkId": { - "description": "The ID of the global network that your core network is a part of.", - "type": "string" - }, - "NetworkFunctionGroups": { - "description": "The network function groups within a core network.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CoreNetworkNetworkFunctionGroup" - }, - "type": "array" - }, - "OwnerAccount": { - "description": "Owner of the core network", - "type": "string" - }, - "PolicyDocument": { - "description": "Live policy document for the core network, you must provide PolicyDocument in Json Format", - "type": "object" - }, - "Segments": { - "description": "The segments within a core network.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CoreNetworkSegment" - }, - "type": "array" - }, - "State": { - "description": "The state of core network", - "type": "string" - }, - "Tags": { - "description": "The tags for the global network.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/OwnerAccount", - "/properties/CoreNetworkId", - "/properties/CoreNetworkArn", - "/properties/CreatedAt", - "/properties/State", - "/properties/Segments", - "/properties/NetworkFunctionGroups", - "/properties/Edges" - ], - "required": [ - "GlobalNetworkId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-corenetwork", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "networkmanager:TagResource", - "networkmanager:UntagResource", - "networkmanager:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::NetworkManager::CoreNetwork" -} +{ + "additionalIdentifiers": [ + [ + "/properties/CoreNetworkArn" + ], + [ + "/properties/GlobalNetworkId" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GlobalNetworkId" + ], + "definitions": { + "CoreNetworkEdge": { + "additionalProperties": false, + "properties": { + "Asn": { + "description": "The ASN of a core network edge.", + "type": "number" + }, + "EdgeLocation": { + "description": "The Region where a core network edge is located.", + "type": "string" + }, + "InsideCidrBlocks": { + "insertionOrder": false, + "items": { + "description": "The inside IP addresses used for core network edges.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "CoreNetworkNetworkFunctionGroup": { + "additionalProperties": false, + "properties": { + "EdgeLocations": { + "insertionOrder": false, + "items": { + "description": "The Regions where the edges are located.", + "type": "string" + }, + "type": "array" + }, + "Name": { + "description": "Name of network function group", + "type": "string" + }, + "Segments": { + "additionalProperties": false, + "properties": { + "SendTo": { + "insertionOrder": false, + "items": { + "description": "The send-to segments.", + "type": "string" + }, + "type": "array" + }, + "SendVia": { + "insertionOrder": false, + "items": { + "description": "The send-via segments.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "CoreNetworkSegment": { + "additionalProperties": false, + "properties": { + "EdgeLocations": { + "insertionOrder": false, + "items": { + "description": "The Regions where the edges are located.", + "type": "string" + }, + "type": "array" + }, + "Name": { + "description": "Name of segment", + "type": "string" + }, + "SharedSegments": { + "insertionOrder": false, + "items": { + "description": "The shared segments of a core network.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "AWS::NetworkManager::CoreNetwork Resource Type Definition.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateCoreNetwork", + "networkmanager:GetCoreNetwork", + "networkmanager:GetCoreNetworkPolicy", + "networkmanager:TagResource", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 720 + }, + "delete": { + "permissions": [ + "networkmanager:DeleteCoreNetwork", + "networkmanager:UntagResource", + "networkmanager:GetCoreNetwork", + "networkmanager:GetCoreNetworkPolicy", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 720 + }, + "list": { + "permissions": [ + "networkmanager:ListCoreNetworks" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetCoreNetwork", + "networkmanager:GetCoreNetworkPolicy" + ] + }, + "update": { + "permissions": [ + "networkmanager:UpdateCoreNetwork", + "networkmanager:GetCoreNetwork", + "networkmanager:ListTagsForResource", + "networkmanager:PutCoreNetworkPolicy", + "networkmanager:GetCoreNetworkPolicy", + "networkmanager:ExecuteCoreNetworkChangeSet", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 720 + } + }, + "primaryIdentifier": [ + "/properties/CoreNetworkId" + ], + "properties": { + "CoreNetworkArn": { + "description": "The ARN (Amazon resource name) of core network", + "type": "string" + }, + "CoreNetworkId": { + "description": "The Id of core network", + "type": "string" + }, + "CreatedAt": { + "description": "The creation time of core network", + "type": "string" + }, + "Description": { + "description": "The description of core network", + "type": "string" + }, + "Edges": { + "description": "The edges within a core network.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CoreNetworkEdge" + }, + "type": "array" + }, + "GlobalNetworkId": { + "description": "The ID of the global network that your core network is a part of.", + "type": "string" + }, + "NetworkFunctionGroups": { + "description": "The network function groups within a core network.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CoreNetworkNetworkFunctionGroup" + }, + "type": "array" + }, + "OwnerAccount": { + "description": "Owner of the core network", + "type": "string" + }, + "PolicyDocument": { + "description": "Live policy document for the core network, you must provide PolicyDocument in Json Format", + "type": "object" + }, + "Segments": { + "description": "The segments within a core network.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CoreNetworkSegment" + }, + "type": "array" + }, + "State": { + "description": "The state of core network", + "type": "string" + }, + "Tags": { + "description": "The tags for the global network.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/OwnerAccount", + "/properties/CoreNetworkId", + "/properties/CoreNetworkArn", + "/properties/CreatedAt", + "/properties/State", + "/properties/Segments", + "/properties/NetworkFunctionGroups", + "/properties/Edges" + ], + "required": [ + "GlobalNetworkId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-corenetwork", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::CoreNetwork" +} diff --git a/src/schema/aws-networkmanager-customergatewayassociation.json b/src/schema/aws-networkmanager-customergatewayassociation.json index c319d164..b47cd7aa 100644 --- a/src/schema/aws-networkmanager-customergatewayassociation.json +++ b/src/schema/aws-networkmanager-customergatewayassociation.json @@ -1,78 +1,78 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GlobalNetworkId", - "/properties/CustomerGatewayArn", - "/properties/DeviceId", - "/properties/LinkId" - ], - "description": "The AWS::NetworkManager::CustomerGatewayAssociation type associates a customer gateway with a device and optionally, with a link.", - "handlers": { - "create": { - "permissions": [ - "networkmanager:GetCustomerGatewayAssociations", - "networkmanager:AssociateCustomerGateway" - ] - }, - "delete": { - "permissions": [ - "networkmanager:DisassociateCustomerGateway" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "GlobalNetworkId": { - "$ref": "resource-schema.json#/properties/GlobalNetworkId" - } - }, - "required": [ - "GlobalNetworkId" - ] - }, - "permissions": [ - "networkmanager:GetCustomerGatewayAssociations" - ] - }, - "read": { - "permissions": [ - "networkmanager:GetCustomerGatewayAssociations" - ] - } - }, - "primaryIdentifier": [ - "/properties/GlobalNetworkId", - "/properties/CustomerGatewayArn" - ], - "properties": { - "CustomerGatewayArn": { - "description": "The Amazon Resource Name (ARN) of the customer gateway.", - "type": "string" - }, - "DeviceId": { - "description": "The ID of the device", - "type": "string" - }, - "GlobalNetworkId": { - "description": "The ID of the global network.", - "type": "string" - }, - "LinkId": { - "description": "The ID of the link", - "type": "string" - } - }, - "required": [ - "GlobalNetworkId", - "CustomerGatewayArn", - "DeviceId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::NetworkManager::CustomerGatewayAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GlobalNetworkId", + "/properties/CustomerGatewayArn", + "/properties/DeviceId", + "/properties/LinkId" + ], + "description": "The AWS::NetworkManager::CustomerGatewayAssociation type associates a customer gateway with a device and optionally, with a link.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:GetCustomerGatewayAssociations", + "networkmanager:AssociateCustomerGateway" + ] + }, + "delete": { + "permissions": [ + "networkmanager:DisassociateCustomerGateway" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "GlobalNetworkId": { + "$ref": "resource-schema.json#/properties/GlobalNetworkId" + } + }, + "required": [ + "GlobalNetworkId" + ] + }, + "permissions": [ + "networkmanager:GetCustomerGatewayAssociations" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetCustomerGatewayAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/GlobalNetworkId", + "/properties/CustomerGatewayArn" + ], + "properties": { + "CustomerGatewayArn": { + "description": "The Amazon Resource Name (ARN) of the customer gateway.", + "type": "string" + }, + "DeviceId": { + "description": "The ID of the device", + "type": "string" + }, + "GlobalNetworkId": { + "description": "The ID of the global network.", + "type": "string" + }, + "LinkId": { + "description": "The ID of the link", + "type": "string" + } + }, + "required": [ + "GlobalNetworkId", + "CustomerGatewayArn", + "DeviceId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::NetworkManager::CustomerGatewayAssociation" +} diff --git a/src/schema/aws-networkmanager-device.json b/src/schema/aws-networkmanager-device.json index 18d720b9..b86f615f 100644 --- a/src/schema/aws-networkmanager-device.json +++ b/src/schema/aws-networkmanager-device.json @@ -1,201 +1,201 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/DeviceArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GlobalNetworkId" - ], - "definitions": { - "AWSLocation": { - "additionalProperties": false, - "description": "The Amazon Web Services location of the device, if applicable.", - "properties": { - "SubnetArn": { - "description": "The Amazon Resource Name (ARN) of the subnet that the device is located in.", - "type": "string" - }, - "Zone": { - "description": "The Zone that the device is located in. Specify the ID of an Availability Zone, Local Zone, Wavelength Zone, or an Outpost.", - "type": "string" - } - }, - "type": "object" - }, - "Location": { - "additionalProperties": false, - "description": "The site location.", - "properties": { - "Address": { - "description": "The physical address.", - "type": "string" - }, - "Latitude": { - "description": "The latitude.", - "type": "string" - }, - "Longitude": { - "description": "The longitude.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a device resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::NetworkManager::Device type describes a device.", - "handlers": { - "create": { - "permissions": [ - "networkmanager:CreateDevice", - "networkmanager:GetDevices", - "networkmanager:TagResource" - ] - }, - "delete": { - "permissions": [ - "networkmanager:GetDevices", - "networkmanager:DeleteDevice" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "GlobalNetworkId": { - "$ref": "resource-schema.json#/properties/GlobalNetworkId" - } - }, - "required": [ - "GlobalNetworkId" - ] - }, - "permissions": [ - "networkmanager:GetDevices" - ] - }, - "read": { - "permissions": [ - "networkmanager:GetDevices" - ] - }, - "update": { - "permissions": [ - "networkmanager:UpdateDevice", - "networkmanager:ListTagsForResource", - "networkmanager:GetDevices", - "networkmanager:TagResource", - "networkmanager:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/GlobalNetworkId", - "/properties/DeviceId" - ], - "properties": { - "AWSLocation": { - "$ref": "#/definitions/AWSLocation", - "description": "The Amazon Web Services location of the device, if applicable." - }, - "CreatedAt": { - "description": "The date and time that the device was created.", - "type": "string" - }, - "Description": { - "description": "The description of the device.", - "type": "string" - }, - "DeviceArn": { - "description": "The Amazon Resource Name (ARN) of the device.", - "type": "string" - }, - "DeviceId": { - "description": "The ID of the device.", - "type": "string" - }, - "GlobalNetworkId": { - "description": "The ID of the global network.", - "type": "string" - }, - "Location": { - "$ref": "#/definitions/Location", - "description": "The site location." - }, - "Model": { - "description": "The device model", - "type": "string" - }, - "SerialNumber": { - "description": "The device serial number.", - "type": "string" - }, - "SiteId": { - "description": "The site ID.", - "type": "string" - }, - "State": { - "description": "The state of the device.", - "type": "string" - }, - "Tags": { - "description": "The tags for the device.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "description": "The device type.", - "type": "string" - }, - "Vendor": { - "description": "The device vendor.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/DeviceId", - "/properties/DeviceArn", - "/properties/State", - "/properties/CreatedAt" - ], - "required": [ - "GlobalNetworkId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "networkmanager:TagResource", - "networkmanager:UntagResource", - "networkmanager:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::NetworkManager::Device" -} +{ + "additionalIdentifiers": [ + [ + "/properties/DeviceArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GlobalNetworkId" + ], + "definitions": { + "AWSLocation": { + "additionalProperties": false, + "description": "The Amazon Web Services location of the device, if applicable.", + "properties": { + "SubnetArn": { + "description": "The Amazon Resource Name (ARN) of the subnet that the device is located in.", + "type": "string" + }, + "Zone": { + "description": "The Zone that the device is located in. Specify the ID of an Availability Zone, Local Zone, Wavelength Zone, or an Outpost.", + "type": "string" + } + }, + "type": "object" + }, + "Location": { + "additionalProperties": false, + "description": "The site location.", + "properties": { + "Address": { + "description": "The physical address.", + "type": "string" + }, + "Latitude": { + "description": "The latitude.", + "type": "string" + }, + "Longitude": { + "description": "The longitude.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a device resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::NetworkManager::Device type describes a device.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateDevice", + "networkmanager:GetDevices", + "networkmanager:TagResource" + ] + }, + "delete": { + "permissions": [ + "networkmanager:GetDevices", + "networkmanager:DeleteDevice" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "GlobalNetworkId": { + "$ref": "resource-schema.json#/properties/GlobalNetworkId" + } + }, + "required": [ + "GlobalNetworkId" + ] + }, + "permissions": [ + "networkmanager:GetDevices" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetDevices" + ] + }, + "update": { + "permissions": [ + "networkmanager:UpdateDevice", + "networkmanager:ListTagsForResource", + "networkmanager:GetDevices", + "networkmanager:TagResource", + "networkmanager:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/GlobalNetworkId", + "/properties/DeviceId" + ], + "properties": { + "AWSLocation": { + "$ref": "#/definitions/AWSLocation", + "description": "The Amazon Web Services location of the device, if applicable." + }, + "CreatedAt": { + "description": "The date and time that the device was created.", + "type": "string" + }, + "Description": { + "description": "The description of the device.", + "type": "string" + }, + "DeviceArn": { + "description": "The Amazon Resource Name (ARN) of the device.", + "type": "string" + }, + "DeviceId": { + "description": "The ID of the device.", + "type": "string" + }, + "GlobalNetworkId": { + "description": "The ID of the global network.", + "type": "string" + }, + "Location": { + "$ref": "#/definitions/Location", + "description": "The site location." + }, + "Model": { + "description": "The device model", + "type": "string" + }, + "SerialNumber": { + "description": "The device serial number.", + "type": "string" + }, + "SiteId": { + "description": "The site ID.", + "type": "string" + }, + "State": { + "description": "The state of the device.", + "type": "string" + }, + "Tags": { + "description": "The tags for the device.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "The device type.", + "type": "string" + }, + "Vendor": { + "description": "The device vendor.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DeviceId", + "/properties/DeviceArn", + "/properties/State", + "/properties/CreatedAt" + ], + "required": [ + "GlobalNetworkId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::Device" +} diff --git a/src/schema/aws-networkmanager-directconnectgatewayattachment.json b/src/schema/aws-networkmanager-directconnectgatewayattachment.json new file mode 100644 index 00000000..96cf1fa5 --- /dev/null +++ b/src/schema/aws-networkmanager-directconnectgatewayattachment.json @@ -0,0 +1,239 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/CoreNetworkId", + "/properties/DirectConnectGatewayArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CoreNetworkId", + "/properties/DirectConnectGatewayArn" + ], + "definitions": { + "ProposedNetworkFunctionGroupChange": { + "additionalProperties": false, + "description": "The attachment to move from one network function group to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the network function group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ProposedSegmentChange": { + "additionalProperties": false, + "description": "The attachment to move from one segment to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "SegmentName": { + "description": "The name of the segment to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the segment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "AWS::NetworkManager::DirectConnectGatewayAttachment Resource Type", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateDirectConnectGatewayAttachment", + "networkmanager:GetDirectConnectGatewayAttachment", + "networkmanager:TagResource", + "ec2:DescribeRegions", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "networkmanager:DeleteAttachment", + "networkmanager:GetDirectConnectGatewayAttachment", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 60 + }, + "list": { + "permissions": [ + "networkmanager:ListAttachments" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetDirectConnectGatewayAttachment" + ] + }, + "update": { + "permissions": [ + "networkmanager:UpdateDirectConnectGatewayAttachment", + "networkmanager:GetDirectConnectGatewayAttachment", + "networkmanager:ListTagsForResource", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 60 + } + }, + "primaryIdentifier": [ + "/properties/AttachmentId" + ], + "properties": { + "AttachmentId": { + "description": "Id of the attachment.", + "type": "string" + }, + "AttachmentPolicyRuleNumber": { + "description": "The policy rule number associated with the attachment.", + "type": "integer" + }, + "AttachmentType": { + "description": "Attachment type.", + "type": "string" + }, + "CoreNetworkArn": { + "description": "The ARN of a core network for the Direct Connect Gateway attachment.", + "type": "string" + }, + "CoreNetworkId": { + "description": "The ID of a core network for the Direct Connect Gateway attachment.", + "type": "string" + }, + "CreatedAt": { + "description": "Creation time of the attachment.", + "type": "string" + }, + "DirectConnectGatewayArn": { + "description": "The ARN of the Direct Connect Gateway.", + "type": "string" + }, + "EdgeLocations": { + "description": "The Regions where the edges are located.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group attachment.", + "type": "string" + }, + "OwnerAccountId": { + "description": "Owner account of the attachment.", + "type": "string" + }, + "ProposedNetworkFunctionGroupChange": { + "$ref": "#/definitions/ProposedNetworkFunctionGroupChange", + "description": "The attachment to move from one network function group to another." + }, + "ProposedSegmentChange": { + "$ref": "#/definitions/ProposedSegmentChange", + "description": "The attachment to move from one segment to another." + }, + "ResourceArn": { + "description": "The ARN of the Resource.", + "type": "string" + }, + "SegmentName": { + "description": "The name of the segment attachment..", + "type": "string" + }, + "State": { + "description": "State of the attachment.", + "type": "string" + }, + "Tags": { + "description": "Tags for the attachment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "UpdatedAt": { + "description": "Last update time of the attachment.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CoreNetworkArn", + "/properties/CreatedAt", + "/properties/UpdatedAt", + "/properties/AttachmentType", + "/properties/State", + "/properties/AttachmentId", + "/properties/OwnerAccountId", + "/properties/AttachmentPolicyRuleNumber", + "/properties/SegmentName", + "/properties/NetworkFunctionGroupName", + "/properties/ResourceArn" + ], + "required": [ + "CoreNetworkId", + "DirectConnectGatewayArn", + "EdgeLocations" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-directconnectgatewayattachment", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::DirectConnectGatewayAttachment" +} diff --git a/src/schema/aws-networkmanager-globalnetwork.json b/src/schema/aws-networkmanager-globalnetwork.json index c961388c..bb325f1b 100644 --- a/src/schema/aws-networkmanager-globalnetwork.json +++ b/src/schema/aws-networkmanager-globalnetwork.json @@ -1,117 +1,117 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Arn" - ] - ], - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a global network resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::NetworkManager::GlobalNetwork type specifies a global network of the user's account", - "handlers": { - "create": { - "permissions": [ - "networkmanager:CreateGlobalNetwork", - "networkmanager:DescribeGlobalNetworks", - "networkmanager:TagResource", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "networkmanager:DeleteGlobalNetwork", - "networkmanager:DescribeGlobalNetworks" - ] - }, - "list": { - "permissions": [ - "networkmanager:DescribeGlobalNetworks" - ] - }, - "read": { - "permissions": [ - "networkmanager:DescribeGlobalNetworks" - ] - }, - "update": { - "permissions": [ - "networkmanager:UpdateGlobalNetwork", - "networkmanager:DescribeGlobalNetworks", - "networkmanager:TagResource", - "networkmanager:UntagResource", - "networkmanager:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the global network.", - "type": "string" - }, - "CreatedAt": { - "description": "The date and time that the global network was created.", - "type": "string" - }, - "Description": { - "description": "The description of the global network.", - "type": "string" - }, - "Id": { - "description": "The ID of the global network.", - "type": "string" - }, - "State": { - "description": "The state of the global network.", - "type": "string" - }, - "Tags": { - "description": "The tags for the global network.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "networkmanager:TagResource", - "networkmanager:UntagResource", - "networkmanager:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::NetworkManager::GlobalNetwork" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Arn" + ] + ], + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a global network resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::NetworkManager::GlobalNetwork type specifies a global network of the user's account", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateGlobalNetwork", + "networkmanager:DescribeGlobalNetworks", + "networkmanager:TagResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "networkmanager:DeleteGlobalNetwork", + "networkmanager:DescribeGlobalNetworks" + ] + }, + "list": { + "permissions": [ + "networkmanager:DescribeGlobalNetworks" + ] + }, + "read": { + "permissions": [ + "networkmanager:DescribeGlobalNetworks" + ] + }, + "update": { + "permissions": [ + "networkmanager:UpdateGlobalNetwork", + "networkmanager:DescribeGlobalNetworks", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the global network.", + "type": "string" + }, + "CreatedAt": { + "description": "The date and time that the global network was created.", + "type": "string" + }, + "Description": { + "description": "The description of the global network.", + "type": "string" + }, + "Id": { + "description": "The ID of the global network.", + "type": "string" + }, + "State": { + "description": "The state of the global network.", + "type": "string" + }, + "Tags": { + "description": "The tags for the global network.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::GlobalNetwork" +} diff --git a/src/schema/aws-networkmanager-link.json b/src/schema/aws-networkmanager-link.json index b7eba4a0..378ee037 100644 --- a/src/schema/aws-networkmanager-link.json +++ b/src/schema/aws-networkmanager-link.json @@ -1,173 +1,173 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/LinkArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GlobalNetworkId", - "/properties/SiteId" - ], - "definitions": { - "Bandwidth": { - "additionalProperties": false, - "description": "The bandwidth for the link.", - "properties": { - "DownloadSpeed": { - "description": "Download speed in Mbps.", - "type": "integer" - }, - "UploadSpeed": { - "description": "Upload speed in Mbps.", - "type": "integer" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a link resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::NetworkManager::Link type describes a link.", - "handlers": { - "create": { - "permissions": [ - "networkmanager:CreateLink", - "networkmanager:GetLinks", - "networkmanager:TagResource" - ] - }, - "delete": { - "permissions": [ - "networkmanager:GetLinks", - "networkmanager:DeleteLink" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "GlobalNetworkId": { - "$ref": "resource-schema.json#/properties/GlobalNetworkId" - } - }, - "required": [ - "GlobalNetworkId" - ] - }, - "permissions": [ - "networkmanager:GetLinks" - ] - }, - "read": { - "permissions": [ - "networkmanager:GetLinks" - ] - }, - "update": { - "permissions": [ - "networkmanager:ListTagsForResource", - "networkmanager:TagResource", - "networkmanager:GetLinks", - "networkmanager:UntagResource", - "networkmanager:UpdateLink" - ] - } - }, - "primaryIdentifier": [ - "/properties/GlobalNetworkId", - "/properties/LinkId" - ], - "properties": { - "Bandwidth": { - "$ref": "#/definitions/Bandwidth", - "description": "The Bandwidth for the link." - }, - "CreatedAt": { - "description": "The date and time that the device was created.", - "type": "string" - }, - "Description": { - "description": "The description of the link.", - "type": "string" - }, - "GlobalNetworkId": { - "description": "The ID of the global network.", - "type": "string" - }, - "LinkArn": { - "description": "The Amazon Resource Name (ARN) of the link.", - "type": "string" - }, - "LinkId": { - "description": "The ID of the link.", - "type": "string" - }, - "Provider": { - "description": "The provider of the link.", - "type": "string" - }, - "SiteId": { - "description": "The ID of the site", - "type": "string" - }, - "State": { - "description": "The state of the link.", - "type": "string" - }, - "Tags": { - "description": "The tags for the link.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "description": "The type of the link.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/LinkId", - "/properties/LinkArn", - "/properties/CreatedAt", - "/properties/State" - ], - "required": [ - "GlobalNetworkId", - "SiteId", - "Bandwidth" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "networkmanager:TagResource", - "networkmanager:UntagResource", - "networkmanager:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::NetworkManager::Link" -} +{ + "additionalIdentifiers": [ + [ + "/properties/LinkArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GlobalNetworkId", + "/properties/SiteId" + ], + "definitions": { + "Bandwidth": { + "additionalProperties": false, + "description": "The bandwidth for the link.", + "properties": { + "DownloadSpeed": { + "description": "Download speed in Mbps.", + "type": "integer" + }, + "UploadSpeed": { + "description": "Upload speed in Mbps.", + "type": "integer" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a link resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::NetworkManager::Link type describes a link.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateLink", + "networkmanager:GetLinks", + "networkmanager:TagResource" + ] + }, + "delete": { + "permissions": [ + "networkmanager:GetLinks", + "networkmanager:DeleteLink" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "GlobalNetworkId": { + "$ref": "resource-schema.json#/properties/GlobalNetworkId" + } + }, + "required": [ + "GlobalNetworkId" + ] + }, + "permissions": [ + "networkmanager:GetLinks" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetLinks" + ] + }, + "update": { + "permissions": [ + "networkmanager:ListTagsForResource", + "networkmanager:TagResource", + "networkmanager:GetLinks", + "networkmanager:UntagResource", + "networkmanager:UpdateLink" + ] + } + }, + "primaryIdentifier": [ + "/properties/GlobalNetworkId", + "/properties/LinkId" + ], + "properties": { + "Bandwidth": { + "$ref": "#/definitions/Bandwidth", + "description": "The Bandwidth for the link." + }, + "CreatedAt": { + "description": "The date and time that the device was created.", + "type": "string" + }, + "Description": { + "description": "The description of the link.", + "type": "string" + }, + "GlobalNetworkId": { + "description": "The ID of the global network.", + "type": "string" + }, + "LinkArn": { + "description": "The Amazon Resource Name (ARN) of the link.", + "type": "string" + }, + "LinkId": { + "description": "The ID of the link.", + "type": "string" + }, + "Provider": { + "description": "The provider of the link.", + "type": "string" + }, + "SiteId": { + "description": "The ID of the site", + "type": "string" + }, + "State": { + "description": "The state of the link.", + "type": "string" + }, + "Tags": { + "description": "The tags for the link.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "The type of the link.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LinkId", + "/properties/LinkArn", + "/properties/CreatedAt", + "/properties/State" + ], + "required": [ + "GlobalNetworkId", + "SiteId", + "Bandwidth" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::Link" +} diff --git a/src/schema/aws-networkmanager-linkassociation.json b/src/schema/aws-networkmanager-linkassociation.json index 8ccd27ef..d47440d9 100644 --- a/src/schema/aws-networkmanager-linkassociation.json +++ b/src/schema/aws-networkmanager-linkassociation.json @@ -1,74 +1,74 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GlobalNetworkId", - "/properties/DeviceId", - "/properties/LinkId" - ], - "description": "The AWS::NetworkManager::LinkAssociation type associates a link to a device. The device and link must be in the same global network and the same site.", - "handlers": { - "create": { - "permissions": [ - "networkmanager:GetLinkAssociations", - "networkmanager:AssociateLink" - ] - }, - "delete": { - "permissions": [ - "networkmanager:DisassociateLink" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "GlobalNetworkId": { - "$ref": "resource-schema.json#/properties/GlobalNetworkId" - } - }, - "required": [ - "GlobalNetworkId" - ] - }, - "permissions": [ - "networkmanager:GetLinkAssociations" - ] - }, - "read": { - "permissions": [ - "networkmanager:GetLinkAssociations" - ] - } - }, - "primaryIdentifier": [ - "/properties/GlobalNetworkId", - "/properties/DeviceId", - "/properties/LinkId" - ], - "properties": { - "DeviceId": { - "description": "The ID of the device", - "type": "string" - }, - "GlobalNetworkId": { - "description": "The ID of the global network.", - "type": "string" - }, - "LinkId": { - "description": "The ID of the link", - "type": "string" - } - }, - "required": [ - "GlobalNetworkId", - "DeviceId", - "LinkId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::NetworkManager::LinkAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GlobalNetworkId", + "/properties/DeviceId", + "/properties/LinkId" + ], + "description": "The AWS::NetworkManager::LinkAssociation type associates a link to a device. The device and link must be in the same global network and the same site.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:GetLinkAssociations", + "networkmanager:AssociateLink" + ] + }, + "delete": { + "permissions": [ + "networkmanager:DisassociateLink" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "GlobalNetworkId": { + "$ref": "resource-schema.json#/properties/GlobalNetworkId" + } + }, + "required": [ + "GlobalNetworkId" + ] + }, + "permissions": [ + "networkmanager:GetLinkAssociations" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetLinkAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/GlobalNetworkId", + "/properties/DeviceId", + "/properties/LinkId" + ], + "properties": { + "DeviceId": { + "description": "The ID of the device", + "type": "string" + }, + "GlobalNetworkId": { + "description": "The ID of the global network.", + "type": "string" + }, + "LinkId": { + "description": "The ID of the link", + "type": "string" + } + }, + "required": [ + "GlobalNetworkId", + "DeviceId", + "LinkId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::NetworkManager::LinkAssociation" +} diff --git a/src/schema/aws-networkmanager-site.json b/src/schema/aws-networkmanager-site.json index f210ccc0..0a2e128a 100644 --- a/src/schema/aws-networkmanager-site.json +++ b/src/schema/aws-networkmanager-site.json @@ -1,162 +1,162 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/SiteArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GlobalNetworkId" - ], - "definitions": { - "Location": { - "additionalProperties": false, - "description": "The location of the site", - "properties": { - "Address": { - "description": "The physical address.", - "type": "string" - }, - "Latitude": { - "description": "The latitude.", - "type": "string" - }, - "Longitude": { - "description": "The longitude.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a site resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::NetworkManager::Site type describes a site.", - "handlers": { - "create": { - "permissions": [ - "networkmanager:CreateSite", - "networkmanager:GetSites", - "networkmanager:TagResource" - ] - }, - "delete": { - "permissions": [ - "networkmanager:GetSites", - "networkmanager:DeleteSite" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "GlobalNetworkId": { - "$ref": "resource-schema.json#/properties/GlobalNetworkId" - } - }, - "required": [ - "GlobalNetworkId" - ] - }, - "permissions": [ - "networkmanager:GetSites" - ] - }, - "read": { - "permissions": [ - "networkmanager:GetSites" - ] - }, - "update": { - "permissions": [ - "networkmanager:GetSites", - "networkmanager:ListTagsForResource", - "networkmanager:TagResource", - "networkmanager:UntagResource", - "networkmanager:UpdateSite" - ] - } - }, - "primaryIdentifier": [ - "/properties/GlobalNetworkId", - "/properties/SiteId" - ], - "properties": { - "CreatedAt": { - "description": "The date and time that the device was created.", - "type": "string" - }, - "Description": { - "description": "The description of the site.", - "type": "string" - }, - "GlobalNetworkId": { - "description": "The ID of the global network.", - "type": "string" - }, - "Location": { - "$ref": "#/definitions/Location", - "description": "The location of the site." - }, - "SiteArn": { - "description": "The Amazon Resource Name (ARN) of the site.", - "type": "string" - }, - "SiteId": { - "description": "The ID of the site.", - "type": "string" - }, - "State": { - "description": "The state of the site.", - "type": "string" - }, - "Tags": { - "description": "The tags for the site.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/SiteId", - "/properties/SiteArn", - "/properties/State", - "/properties/CreatedAt" - ], - "required": [ - "GlobalNetworkId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "networkmanager:TagResource", - "networkmanager:UntagResource", - "networkmanager:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::NetworkManager::Site" -} +{ + "additionalIdentifiers": [ + [ + "/properties/SiteArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GlobalNetworkId" + ], + "definitions": { + "Location": { + "additionalProperties": false, + "description": "The location of the site", + "properties": { + "Address": { + "description": "The physical address.", + "type": "string" + }, + "Latitude": { + "description": "The latitude.", + "type": "string" + }, + "Longitude": { + "description": "The longitude.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a site resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::NetworkManager::Site type describes a site.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateSite", + "networkmanager:GetSites", + "networkmanager:TagResource" + ] + }, + "delete": { + "permissions": [ + "networkmanager:GetSites", + "networkmanager:DeleteSite" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "GlobalNetworkId": { + "$ref": "resource-schema.json#/properties/GlobalNetworkId" + } + }, + "required": [ + "GlobalNetworkId" + ] + }, + "permissions": [ + "networkmanager:GetSites" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetSites" + ] + }, + "update": { + "permissions": [ + "networkmanager:GetSites", + "networkmanager:ListTagsForResource", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:UpdateSite" + ] + } + }, + "primaryIdentifier": [ + "/properties/GlobalNetworkId", + "/properties/SiteId" + ], + "properties": { + "CreatedAt": { + "description": "The date and time that the device was created.", + "type": "string" + }, + "Description": { + "description": "The description of the site.", + "type": "string" + }, + "GlobalNetworkId": { + "description": "The ID of the global network.", + "type": "string" + }, + "Location": { + "$ref": "#/definitions/Location", + "description": "The location of the site." + }, + "SiteArn": { + "description": "The Amazon Resource Name (ARN) of the site.", + "type": "string" + }, + "SiteId": { + "description": "The ID of the site.", + "type": "string" + }, + "State": { + "description": "The state of the site.", + "type": "string" + }, + "Tags": { + "description": "The tags for the site.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/SiteId", + "/properties/SiteArn", + "/properties/State", + "/properties/CreatedAt" + ], + "required": [ + "GlobalNetworkId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::Site" +} diff --git a/src/schema/aws-networkmanager-sitetositevpnattachment.json b/src/schema/aws-networkmanager-sitetositevpnattachment.json index 972d6311..8313c469 100644 --- a/src/schema/aws-networkmanager-sitetositevpnattachment.json +++ b/src/schema/aws-networkmanager-sitetositevpnattachment.json @@ -1,230 +1,230 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/CoreNetworkId", - "/properties/VpnConnectionArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CoreNetworkId", - "/properties/VpnConnectionArn" - ], - "definitions": { - "ProposedNetworkFunctionGroupChange": { - "additionalProperties": false, - "description": "The attachment to move from one network function group to another.", - "properties": { - "AttachmentPolicyRuleNumber": { - "description": "The rule number in the policy document that applies to this change.", - "type": "integer" - }, - "NetworkFunctionGroupName": { - "description": "The name of the network function group to change.", - "type": "string" - }, - "Tags": { - "description": "The key-value tags that changed for the network function group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "ProposedSegmentChange": { - "additionalProperties": false, - "description": "The attachment to move from one segment to another.", - "properties": { - "AttachmentPolicyRuleNumber": { - "description": "The rule number in the policy document that applies to this change.", - "type": "integer" - }, - "SegmentName": { - "description": "The name of the segment to change.", - "type": "string" - }, - "Tags": { - "description": "The key-value tags that changed for the segment.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "AWS::NetworkManager::SiteToSiteVpnAttachment Resource Type definition.", - "handlers": { - "create": { - "permissions": [ - "networkmanager:GetSiteToSiteVpnAttachment", - "networkmanager:CreateSiteToSiteVpnAttachment", - "ec2:DescribeRegions", - "networkmanager:TagResource" - ], - "timeoutInMinutes": 40 - }, - "delete": { - "permissions": [ - "networkmanager:GetSiteToSiteVpnAttachment", - "networkmanager:DeleteAttachment", - "ec2:DescribeRegions" - ], - "timeoutInMinutes": 720 - }, - "list": { - "permissions": [ - "networkmanager:ListAttachments" - ] - }, - "read": { - "permissions": [ - "networkmanager:GetSiteToSiteVpnAttachment" - ] - }, - "update": { - "permissions": [ - "networkmanager:GetSiteToSiteVpnAttachment", - "networkmanager:ListTagsForResource", - "networkmanager:TagResource", - "networkmanager:UntagResource", - "ec2:DescribeRegions" - ] - } - }, - "primaryIdentifier": [ - "/properties/AttachmentId" - ], - "properties": { - "AttachmentId": { - "description": "The ID of the attachment.", - "type": "string" - }, - "AttachmentPolicyRuleNumber": { - "description": "The policy rule number associated with the attachment.", - "type": "integer" - }, - "AttachmentType": { - "description": "The type of attachment.", - "type": "string" - }, - "CoreNetworkArn": { - "description": "The ARN of a core network for the VPC attachment.", - "type": "string" - }, - "CoreNetworkId": { - "description": "The ID of a core network where you're creating a site-to-site VPN attachment.", - "type": "string" - }, - "CreatedAt": { - "description": "Creation time of the attachment.", - "type": "string" - }, - "EdgeLocation": { - "description": "The Region where the edge is located.", - "type": "string" - }, - "NetworkFunctionGroupName": { - "description": "The name of the network function group attachment.", - "type": "string" - }, - "OwnerAccountId": { - "description": "Owner account of the attachment.", - "type": "string" - }, - "ProposedNetworkFunctionGroupChange": { - "$ref": "#/definitions/ProposedNetworkFunctionGroupChange", - "description": "The attachment to move from one network function group to another." - }, - "ProposedSegmentChange": { - "$ref": "#/definitions/ProposedSegmentChange", - "description": "The attachment to move from one segment to another." - }, - "ResourceArn": { - "description": "The ARN of the Resource.", - "type": "string" - }, - "SegmentName": { - "description": "The name of the segment that attachment is in.", - "type": "string" - }, - "State": { - "description": "The state of the attachment.", - "type": "string" - }, - "Tags": { - "description": "Tags for the attachment.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "UpdatedAt": { - "description": "Last update time of the attachment.", - "type": "string" - }, - "VpnConnectionArn": { - "description": "The ARN of the site-to-site VPN attachment.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CoreNetworkArn", - "/properties/CreatedAt", - "/properties/UpdatedAt", - "/properties/AttachmentType", - "/properties/State", - "/properties/ResourceArn", - "/properties/AttachmentId", - "/properties/OwnerAccountId", - "/properties/EdgeLocation", - "/properties/AttachmentPolicyRuleNumber", - "/properties/SegmentName" - ], - "required": [ - "CoreNetworkId", - "VpnConnectionArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-sitetositevpnattachment", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "networkmanager:TagResource", - "networkmanager:UntagResource", - "networkmanager:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::NetworkManager::SiteToSiteVpnAttachment" -} +{ + "additionalIdentifiers": [ + [ + "/properties/CoreNetworkId", + "/properties/VpnConnectionArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CoreNetworkId", + "/properties/VpnConnectionArn" + ], + "definitions": { + "ProposedNetworkFunctionGroupChange": { + "additionalProperties": false, + "description": "The attachment to move from one network function group to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the network function group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ProposedSegmentChange": { + "additionalProperties": false, + "description": "The attachment to move from one segment to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "SegmentName": { + "description": "The name of the segment to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the segment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "AWS::NetworkManager::SiteToSiteVpnAttachment Resource Type definition.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:GetSiteToSiteVpnAttachment", + "networkmanager:CreateSiteToSiteVpnAttachment", + "ec2:DescribeRegions", + "networkmanager:TagResource" + ], + "timeoutInMinutes": 120 + }, + "delete": { + "permissions": [ + "networkmanager:GetSiteToSiteVpnAttachment", + "networkmanager:DeleteAttachment", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 720 + }, + "list": { + "permissions": [ + "networkmanager:ListAttachments" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetSiteToSiteVpnAttachment" + ] + }, + "update": { + "permissions": [ + "networkmanager:GetSiteToSiteVpnAttachment", + "networkmanager:ListTagsForResource", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ] + } + }, + "primaryIdentifier": [ + "/properties/AttachmentId" + ], + "properties": { + "AttachmentId": { + "description": "The ID of the attachment.", + "type": "string" + }, + "AttachmentPolicyRuleNumber": { + "description": "The policy rule number associated with the attachment.", + "type": "integer" + }, + "AttachmentType": { + "description": "The type of attachment.", + "type": "string" + }, + "CoreNetworkArn": { + "description": "The ARN of a core network for the VPC attachment.", + "type": "string" + }, + "CoreNetworkId": { + "description": "The ID of a core network where you're creating a site-to-site VPN attachment.", + "type": "string" + }, + "CreatedAt": { + "description": "Creation time of the attachment.", + "type": "string" + }, + "EdgeLocation": { + "description": "The Region where the edge is located.", + "type": "string" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group attachment.", + "type": "string" + }, + "OwnerAccountId": { + "description": "Owner account of the attachment.", + "type": "string" + }, + "ProposedNetworkFunctionGroupChange": { + "$ref": "#/definitions/ProposedNetworkFunctionGroupChange", + "description": "The attachment to move from one network function group to another." + }, + "ProposedSegmentChange": { + "$ref": "#/definitions/ProposedSegmentChange", + "description": "The attachment to move from one segment to another." + }, + "ResourceArn": { + "description": "The ARN of the Resource.", + "type": "string" + }, + "SegmentName": { + "description": "The name of the segment that attachment is in.", + "type": "string" + }, + "State": { + "description": "The state of the attachment.", + "type": "string" + }, + "Tags": { + "description": "Tags for the attachment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "UpdatedAt": { + "description": "Last update time of the attachment.", + "type": "string" + }, + "VpnConnectionArn": { + "description": "The ARN of the site-to-site VPN attachment.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CoreNetworkArn", + "/properties/CreatedAt", + "/properties/UpdatedAt", + "/properties/AttachmentType", + "/properties/State", + "/properties/ResourceArn", + "/properties/AttachmentId", + "/properties/OwnerAccountId", + "/properties/EdgeLocation", + "/properties/AttachmentPolicyRuleNumber", + "/properties/SegmentName" + ], + "required": [ + "CoreNetworkId", + "VpnConnectionArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-sitetositevpnattachment", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::SiteToSiteVpnAttachment" +} diff --git a/src/schema/aws-networkmanager-transitgatewaypeering.json b/src/schema/aws-networkmanager-transitgatewaypeering.json index 9df421b8..009256c2 100644 --- a/src/schema/aws-networkmanager-transitgatewaypeering.json +++ b/src/schema/aws-networkmanager-transitgatewaypeering.json @@ -1,162 +1,161 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CoreNetworkId", - "/properties/TransitGatewayArn" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "AWS::NetworkManager::TransitGatewayPeering Resoruce Type.", - "handlers": { - "create": { - "permissions": [ - "networkmanager:CreateTransitGatewayPeering", - "networkmanager:TagResource", - "networkmanager:GetTransitGatewayPeering", - "iam:CreateServiceLinkedRole", - "ec2:CreateTransitGatewayPeeringAttachment", - "ec2:AcceptTransitGatewayPeeringAttachment", - "ec2:DescribeRegions" - ], - "timeoutInMinutes": 60 - }, - "delete": { - "permissions": [ - "networkmanager:DeletePeering", - "networkmanager:GetTransitGatewayPeering", - "ec2:DescribeRegions" - ], - "timeoutInMinutes": 60 - }, - "list": { - "permissions": [ - "networkmanager:ListPeerings" - ] - }, - "read": { - "permissions": [ - "networkmanager:GetTransitGatewayPeering", - "networkmanager:TagResource" - ] - }, - "update": { - "permissions": [ - "networkmanager:TagResource", - "networkmanager:UntagResource", - "networkmanager:ListTagsForResource", - "networkmanager:GetTransitGatewayPeering", - "ec2:DescribeRegions" - ] - } - }, - "primaryIdentifier": [ - "/properties/PeeringId" - ], - "properties": { - "CoreNetworkArn": { - "description": "The ARN (Amazon Resource Name) of the core network that you want to peer a transit gateway to.", - "type": "string" - }, - "CoreNetworkId": { - "description": "The Id of the core network that you want to peer a transit gateway to.", - "type": "string" - }, - "CreatedAt": { - "description": "The creation time of the transit gateway peering", - "type": "string" - }, - "EdgeLocation": { - "description": "The location of the transit gateway peering", - "type": "string" - }, - "OwnerAccountId": { - "description": "Peering owner account Id", - "type": "string" - }, - "PeeringId": { - "description": "The Id of the transit gateway peering", - "type": "string" - }, - "PeeringType": { - "description": "Peering type (TransitGatewayPeering)", - "type": "string" - }, - "ResourceArn": { - "description": "The ARN (Amazon Resource Name) of the resource that you will peer to a core network", - "type": "string" - }, - "State": { - "description": "The state of the transit gateway peering", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "TransitGatewayArn": { - "description": "The ARN (Amazon Resource Name) of the transit gateway that you will peer to a core network", - "type": "string" - }, - "TransitGatewayPeeringAttachmentId": { - "description": "The ID of the TransitGatewayPeeringAttachment", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CoreNetworkArn", - "/properties/PeeringId", - "/properties/State", - "/properties/PeeringType", - "/properties/OwnerAccountId", - "/properties/EdgeLocation", - "/properties/ResourceArn", - "/properties/CreatedAt", - "/properties/TransitGatewayPeeringAttachmentId" - ], - "required": [ - "CoreNetworkId", - "TransitGatewayArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-transitgatewaypeering", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "networkmanager:TagResource", - "networkmanager:UntagResource", - "networkmanager:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::NetworkManager::TransitGatewayPeering" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CoreNetworkId", + "/properties/TransitGatewayArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "AWS::NetworkManager::TransitGatewayPeering Resoruce Type.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateTransitGatewayPeering", + "networkmanager:TagResource", + "networkmanager:GetTransitGatewayPeering", + "iam:CreateServiceLinkedRole", + "ec2:CreateTransitGatewayPeeringAttachment", + "ec2:AcceptTransitGatewayPeeringAttachment", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "networkmanager:DeletePeering", + "networkmanager:GetTransitGatewayPeering", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 60 + }, + "list": { + "permissions": [ + "networkmanager:ListPeerings" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetTransitGatewayPeering" + ] + }, + "update": { + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource", + "networkmanager:GetTransitGatewayPeering", + "ec2:DescribeRegions" + ] + } + }, + "primaryIdentifier": [ + "/properties/PeeringId" + ], + "properties": { + "CoreNetworkArn": { + "description": "The ARN (Amazon Resource Name) of the core network that you want to peer a transit gateway to.", + "type": "string" + }, + "CoreNetworkId": { + "description": "The Id of the core network that you want to peer a transit gateway to.", + "type": "string" + }, + "CreatedAt": { + "description": "The creation time of the transit gateway peering", + "type": "string" + }, + "EdgeLocation": { + "description": "The location of the transit gateway peering", + "type": "string" + }, + "OwnerAccountId": { + "description": "Peering owner account Id", + "type": "string" + }, + "PeeringId": { + "description": "The Id of the transit gateway peering", + "type": "string" + }, + "PeeringType": { + "description": "Peering type (TransitGatewayPeering)", + "type": "string" + }, + "ResourceArn": { + "description": "The ARN (Amazon Resource Name) of the resource that you will peer to a core network", + "type": "string" + }, + "State": { + "description": "The state of the transit gateway peering", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TransitGatewayArn": { + "description": "The ARN (Amazon Resource Name) of the transit gateway that you will peer to a core network", + "type": "string" + }, + "TransitGatewayPeeringAttachmentId": { + "description": "The ID of the TransitGatewayPeeringAttachment", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CoreNetworkArn", + "/properties/PeeringId", + "/properties/State", + "/properties/PeeringType", + "/properties/OwnerAccountId", + "/properties/EdgeLocation", + "/properties/ResourceArn", + "/properties/CreatedAt", + "/properties/TransitGatewayPeeringAttachmentId" + ], + "required": [ + "CoreNetworkId", + "TransitGatewayArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-transitgatewaypeering", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::TransitGatewayPeering" +} diff --git a/src/schema/aws-networkmanager-transitgatewayregistration.json b/src/schema/aws-networkmanager-transitgatewayregistration.json index 4a722e9d..8e67bf35 100644 --- a/src/schema/aws-networkmanager-transitgatewayregistration.json +++ b/src/schema/aws-networkmanager-transitgatewayregistration.json @@ -1,70 +1,70 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GlobalNetworkId", - "/properties/TransitGatewayArn" - ], - "description": "The AWS::NetworkManager::TransitGatewayRegistration type registers a transit gateway in your global network. The transit gateway can be in any AWS Region, but it must be owned by the same AWS account that owns the global network. You cannot register a transit gateway in more than one global network.", - "handlers": { - "create": { - "permissions": [ - "networkmanager:RegisterTransitGateway", - "networkmanager:GetTransitGatewayRegistrations" - ], - "timeoutInMinutes": 30 - }, - "delete": { - "permissions": [ - "networkmanager:DeregisterTransitGateway", - "networkmanager:GetTransitGatewayRegistrations" - ], - "timeoutInMinutes": 30 - }, - "list": { - "handlerSchema": { - "properties": { - "GlobalNetworkId": { - "$ref": "resource-schema.json#/properties/GlobalNetworkId" - } - }, - "required": [ - "GlobalNetworkId" - ] - }, - "permissions": [ - "networkmanager:GetTransitGatewayRegistrations" - ] - }, - "read": { - "permissions": [ - "networkmanager:GetTransitGatewayRegistrations" - ] - } - }, - "primaryIdentifier": [ - "/properties/GlobalNetworkId", - "/properties/TransitGatewayArn" - ], - "properties": { - "GlobalNetworkId": { - "description": "The ID of the global network.", - "type": "string" - }, - "TransitGatewayArn": { - "description": "The Amazon Resource Name (ARN) of the transit gateway.", - "type": "string" - } - }, - "required": [ - "GlobalNetworkId", - "TransitGatewayArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::NetworkManager::TransitGatewayRegistration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GlobalNetworkId", + "/properties/TransitGatewayArn" + ], + "description": "The AWS::NetworkManager::TransitGatewayRegistration type registers a transit gateway in your global network. The transit gateway can be in any AWS Region, but it must be owned by the same AWS account that owns the global network. You cannot register a transit gateway in more than one global network.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:RegisterTransitGateway", + "networkmanager:GetTransitGatewayRegistrations" + ], + "timeoutInMinutes": 30 + }, + "delete": { + "permissions": [ + "networkmanager:DeregisterTransitGateway", + "networkmanager:GetTransitGatewayRegistrations" + ], + "timeoutInMinutes": 30 + }, + "list": { + "handlerSchema": { + "properties": { + "GlobalNetworkId": { + "$ref": "resource-schema.json#/properties/GlobalNetworkId" + } + }, + "required": [ + "GlobalNetworkId" + ] + }, + "permissions": [ + "networkmanager:GetTransitGatewayRegistrations" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetTransitGatewayRegistrations" + ] + } + }, + "primaryIdentifier": [ + "/properties/GlobalNetworkId", + "/properties/TransitGatewayArn" + ], + "properties": { + "GlobalNetworkId": { + "description": "The ID of the global network.", + "type": "string" + }, + "TransitGatewayArn": { + "description": "The Amazon Resource Name (ARN) of the transit gateway.", + "type": "string" + } + }, + "required": [ + "GlobalNetworkId", + "TransitGatewayArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::NetworkManager::TransitGatewayRegistration" +} diff --git a/src/schema/aws-networkmanager-transitgatewayroutetableattachment.json b/src/schema/aws-networkmanager-transitgatewayroutetableattachment.json index 2dcce0ad..914cfbba 100644 --- a/src/schema/aws-networkmanager-transitgatewayroutetableattachment.json +++ b/src/schema/aws-networkmanager-transitgatewayroutetableattachment.json @@ -1,229 +1,229 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PeeringId", - "/properties/TransitGatewayRouteTableArn" - ], - "definitions": { - "ProposedNetworkFunctionGroupChange": { - "additionalProperties": false, - "description": "The attachment to move from one network function group to another.", - "properties": { - "AttachmentPolicyRuleNumber": { - "description": "The rule number in the policy document that applies to this change.", - "type": "integer" - }, - "NetworkFunctionGroupName": { - "description": "The name of the network function group to change.", - "type": "string" - }, - "Tags": { - "description": "The key-value tags that changed for the network function group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "ProposedSegmentChange": { - "additionalProperties": false, - "description": "The attachment to move from one segment to another.", - "properties": { - "AttachmentPolicyRuleNumber": { - "description": "The rule number in the policy document that applies to this change.", - "type": "integer" - }, - "SegmentName": { - "description": "The name of the segment to change.", - "type": "string" - }, - "Tags": { - "description": "The key-value tags that changed for the segment.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "insertionOrder": false, - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "AWS::NetworkManager::TransitGatewayRouteTableAttachment Resource Type definition.", - "handlers": { - "create": { - "permissions": [ - "networkmanager:CreateTransitGatewayRouteTableAttachment", - "networkmanager:GetTransitGatewayRouteTableAttachment", - "networkmanager:TagResource", - "iam:CreateServiceLinkedRole", - "ec2:DescribeRegions" - ] - }, - "delete": { - "permissions": [ - "networkmanager:GetTransitGatewayRouteTableAttachment", - "networkmanager:DeleteAttachment", - "ec2:DescribeRegions" - ] - }, - "list": { - "permissions": [ - "networkmanager:ListAttachments" - ] - }, - "read": { - "permissions": [ - "networkmanager:GetTransitGatewayRouteTableAttachment" - ] - }, - "update": { - "permissions": [ - "networkmanager:GetTransitGatewayRouteTableAttachment", - "networkmanager:ListTagsForResource", - "networkmanager:TagResource", - "networkmanager:UntagResource", - "ec2:DescribeRegions" - ] - } - }, - "primaryIdentifier": [ - "/properties/AttachmentId" - ], - "properties": { - "AttachmentId": { - "description": "The ID of the attachment.", - "type": "string" - }, - "AttachmentPolicyRuleNumber": { - "description": "The policy rule number associated with the attachment.", - "type": "integer" - }, - "AttachmentType": { - "description": "The type of attachment.", - "type": "string" - }, - "CoreNetworkArn": { - "description": "The ARN of a core network for the VPC attachment.", - "type": "string" - }, - "CoreNetworkId": { - "description": "The ID of a core network where you're creating a site-to-site VPN attachment.", - "type": "string" - }, - "CreatedAt": { - "description": "Creation time of the attachment.", - "type": "string" - }, - "EdgeLocation": { - "description": "The Region where the edge is located.", - "type": "string" - }, - "NetworkFunctionGroupName": { - "description": "The name of the network function group attachment.", - "type": "string" - }, - "OwnerAccountId": { - "description": "Owner account of the attachment.", - "type": "string" - }, - "PeeringId": { - "description": "The Id of peering between transit gateway and core network.", - "type": "string" - }, - "ProposedNetworkFunctionGroupChange": { - "$ref": "#/definitions/ProposedNetworkFunctionGroupChange", - "description": "The attachment to move from one network function group to another." - }, - "ProposedSegmentChange": { - "$ref": "#/definitions/ProposedSegmentChange", - "description": "The attachment to move from one segment to another." - }, - "ResourceArn": { - "description": "The ARN of the Resource.", - "type": "string" - }, - "SegmentName": { - "description": "The name of the segment that attachment is in.", - "type": "string" - }, - "State": { - "description": "The state of the attachment.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "TransitGatewayRouteTableArn": { - "description": "The Arn of transit gateway route table.", - "type": "string" - }, - "UpdatedAt": { - "description": "Last update time of the attachment.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CoreNetworkArn", - "/properties/CoreNetworkId", - "/properties/CreatedAt", - "/properties/UpdatedAt", - "/properties/AttachmentType", - "/properties/State", - "/properties/ResourceArn", - "/properties/AttachmentId", - "/properties/OwnerAccountId", - "/properties/EdgeLocation", - "/properties/AttachmentPolicyRuleNumber", - "/properties/SegmentName" - ], - "required": [ - "PeeringId", - "TransitGatewayRouteTableArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-transitgatewayroutetableattachment", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "networkmanager:TagResource", - "networkmanager:UntagResource", - "networkmanager:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::NetworkManager::TransitGatewayRouteTableAttachment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PeeringId", + "/properties/TransitGatewayRouteTableArn" + ], + "definitions": { + "ProposedNetworkFunctionGroupChange": { + "additionalProperties": false, + "description": "The attachment to move from one network function group to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the network function group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ProposedSegmentChange": { + "additionalProperties": false, + "description": "The attachment to move from one segment to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "SegmentName": { + "description": "The name of the segment to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the segment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "insertionOrder": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "AWS::NetworkManager::TransitGatewayRouteTableAttachment Resource Type definition.", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateTransitGatewayRouteTableAttachment", + "networkmanager:GetTransitGatewayRouteTableAttachment", + "networkmanager:TagResource", + "iam:CreateServiceLinkedRole", + "ec2:DescribeRegions" + ] + }, + "delete": { + "permissions": [ + "networkmanager:GetTransitGatewayRouteTableAttachment", + "networkmanager:DeleteAttachment", + "ec2:DescribeRegions" + ] + }, + "list": { + "permissions": [ + "networkmanager:ListAttachments" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetTransitGatewayRouteTableAttachment" + ] + }, + "update": { + "permissions": [ + "networkmanager:GetTransitGatewayRouteTableAttachment", + "networkmanager:ListTagsForResource", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ] + } + }, + "primaryIdentifier": [ + "/properties/AttachmentId" + ], + "properties": { + "AttachmentId": { + "description": "The ID of the attachment.", + "type": "string" + }, + "AttachmentPolicyRuleNumber": { + "description": "The policy rule number associated with the attachment.", + "type": "integer" + }, + "AttachmentType": { + "description": "The type of attachment.", + "type": "string" + }, + "CoreNetworkArn": { + "description": "The ARN of a core network for the VPC attachment.", + "type": "string" + }, + "CoreNetworkId": { + "description": "The ID of a core network where you're creating a site-to-site VPN attachment.", + "type": "string" + }, + "CreatedAt": { + "description": "Creation time of the attachment.", + "type": "string" + }, + "EdgeLocation": { + "description": "The Region where the edge is located.", + "type": "string" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group attachment.", + "type": "string" + }, + "OwnerAccountId": { + "description": "Owner account of the attachment.", + "type": "string" + }, + "PeeringId": { + "description": "The Id of peering between transit gateway and core network.", + "type": "string" + }, + "ProposedNetworkFunctionGroupChange": { + "$ref": "#/definitions/ProposedNetworkFunctionGroupChange", + "description": "The attachment to move from one network function group to another." + }, + "ProposedSegmentChange": { + "$ref": "#/definitions/ProposedSegmentChange", + "description": "The attachment to move from one segment to another." + }, + "ResourceArn": { + "description": "The ARN of the Resource.", + "type": "string" + }, + "SegmentName": { + "description": "The name of the segment that attachment is in.", + "type": "string" + }, + "State": { + "description": "The state of the attachment.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TransitGatewayRouteTableArn": { + "description": "The Arn of transit gateway route table.", + "type": "string" + }, + "UpdatedAt": { + "description": "Last update time of the attachment.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CoreNetworkArn", + "/properties/CoreNetworkId", + "/properties/CreatedAt", + "/properties/UpdatedAt", + "/properties/AttachmentType", + "/properties/State", + "/properties/ResourceArn", + "/properties/AttachmentId", + "/properties/OwnerAccountId", + "/properties/EdgeLocation", + "/properties/AttachmentPolicyRuleNumber", + "/properties/SegmentName" + ], + "required": [ + "PeeringId", + "TransitGatewayRouteTableArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-transitgatewayroutetableattachment", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::TransitGatewayRouteTableAttachment" +} diff --git a/src/schema/aws-networkmanager-vpcattachment.json b/src/schema/aws-networkmanager-vpcattachment.json index ef9857b2..441dadfa 100644 --- a/src/schema/aws-networkmanager-vpcattachment.json +++ b/src/schema/aws-networkmanager-vpcattachment.json @@ -1,265 +1,265 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/CoreNetworkId", - "/properties/VpcArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CoreNetworkId", - "/properties/VpcArn" - ], - "definitions": { - "ProposedNetworkFunctionGroupChange": { - "additionalProperties": false, - "description": "The attachment to move from one network function group to another.", - "properties": { - "AttachmentPolicyRuleNumber": { - "description": "The rule number in the policy document that applies to this change.", - "type": "integer" - }, - "NetworkFunctionGroupName": { - "description": "The name of the network function group to change.", - "type": "string" - }, - "Tags": { - "description": "The key-value tags that changed for the network function group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "ProposedSegmentChange": { - "additionalProperties": false, - "description": "The attachment to move from one segment to another.", - "properties": { - "AttachmentPolicyRuleNumber": { - "description": "The rule number in the policy document that applies to this change.", - "type": "integer" - }, - "SegmentName": { - "description": "The name of the segment to change.", - "type": "string" - }, - "Tags": { - "description": "The key-value tags that changed for the segment.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "VpcOptions": { - "additionalProperties": false, - "description": "Vpc options of the attachment.", - "properties": { - "ApplianceModeSupport": { - "default": false, - "description": "Indicates whether to enable ApplianceModeSupport Support for Vpc Attachment. Valid Values: true | false", - "type": "boolean" - }, - "Ipv6Support": { - "default": false, - "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable", - "type": "boolean" - } - }, - "type": "object" - } - }, - "description": "AWS::NetworkManager::VpcAttachment Resoruce Type", - "handlers": { - "create": { - "permissions": [ - "networkmanager:CreateVpcAttachment", - "networkmanager:GetVpcAttachment", - "networkmanager:TagResource", - "ec2:DescribeRegions", - "iam:CreateServiceLinkedRole" - ], - "timeoutInMinutes": 60 - }, - "delete": { - "permissions": [ - "networkmanager:DeleteAttachment", - "networkmanager:GetVpcAttachment", - "networkmanager:UntagResource", - "ec2:DescribeRegions" - ], - "timeoutInMinutes": 60 - }, - "list": { - "permissions": [ - "networkmanager:ListAttachments" - ] - }, - "read": { - "permissions": [ - "networkmanager:GetVpcAttachment" - ] - }, - "update": { - "permissions": [ - "networkmanager:UpdateVpcAttachment", - "networkmanager:GetVpcAttachment", - "networkmanager:ListTagsForResource", - "networkmanager:TagResource", - "networkmanager:UntagResource", - "ec2:DescribeRegions" - ], - "timeoutInMinutes": 60 - } - }, - "primaryIdentifier": [ - "/properties/AttachmentId" - ], - "properties": { - "AttachmentId": { - "description": "Id of the attachment.", - "type": "string" - }, - "AttachmentPolicyRuleNumber": { - "description": "The policy rule number associated with the attachment.", - "type": "integer" - }, - "AttachmentType": { - "description": "Attachment type.", - "type": "string" - }, - "CoreNetworkArn": { - "description": "The ARN of a core network for the VPC attachment.", - "type": "string" - }, - "CoreNetworkId": { - "description": "The ID of a core network for the VPC attachment.", - "type": "string" - }, - "CreatedAt": { - "description": "Creation time of the attachment.", - "type": "string" - }, - "EdgeLocation": { - "description": "The Region where the edge is located.", - "type": "string" - }, - "NetworkFunctionGroupName": { - "description": "The name of the network function group attachment.", - "type": "string" - }, - "Options": { - "$ref": "#/definitions/VpcOptions", - "description": "Vpc options of the attachment." - }, - "OwnerAccountId": { - "description": "Owner account of the attachment.", - "type": "string" - }, - "ProposedNetworkFunctionGroupChange": { - "$ref": "#/definitions/ProposedNetworkFunctionGroupChange", - "description": "The attachment to move from one network function group to another." - }, - "ProposedSegmentChange": { - "$ref": "#/definitions/ProposedSegmentChange", - "description": "The attachment to move from one segment to another." - }, - "ResourceArn": { - "description": "The ARN of the Resource.", - "type": "string" - }, - "SegmentName": { - "description": "The name of the segment attachment..", - "type": "string" - }, - "State": { - "description": "State of the attachment.", - "type": "string" - }, - "SubnetArns": { - "description": "Subnet Arn list", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "Tags": { - "description": "Tags for the attachment.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "UpdatedAt": { - "description": "Last update time of the attachment.", - "type": "string" - }, - "VpcArn": { - "description": "The ARN of the VPC.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CoreNetworkArn", - "/properties/CreatedAt", - "/properties/UpdatedAt", - "/properties/AttachmentType", - "/properties/State", - "/properties/AttachmentId", - "/properties/OwnerAccountId", - "/properties/EdgeLocation", - "/properties/AttachmentPolicyRuleNumber", - "/properties/SegmentName", - "/properties/NetworkFunctionGroupName", - "/properties/ResourceArn" - ], - "required": [ - "CoreNetworkId", - "VpcArn", - "SubnetArns" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-vpcattachment", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "networkmanager:TagResource", - "networkmanager:UntagResource", - "networkmanager:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::NetworkManager::VpcAttachment" -} +{ + "additionalIdentifiers": [ + [ + "/properties/CoreNetworkId", + "/properties/VpcArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CoreNetworkId", + "/properties/VpcArn" + ], + "definitions": { + "ProposedNetworkFunctionGroupChange": { + "additionalProperties": false, + "description": "The attachment to move from one network function group to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the network function group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ProposedSegmentChange": { + "additionalProperties": false, + "description": "The attachment to move from one segment to another.", + "properties": { + "AttachmentPolicyRuleNumber": { + "description": "The rule number in the policy document that applies to this change.", + "type": "integer" + }, + "SegmentName": { + "description": "The name of the segment to change.", + "type": "string" + }, + "Tags": { + "description": "The key-value tags that changed for the segment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VpcOptions": { + "additionalProperties": false, + "description": "Vpc options of the attachment.", + "properties": { + "ApplianceModeSupport": { + "default": false, + "description": "Indicates whether to enable ApplianceModeSupport Support for Vpc Attachment. Valid Values: true | false", + "type": "boolean" + }, + "Ipv6Support": { + "default": false, + "description": "Indicates whether to enable Ipv6 Support for Vpc Attachment. Valid Values: enable | disable", + "type": "boolean" + } + }, + "type": "object" + } + }, + "description": "AWS::NetworkManager::VpcAttachment Resoruce Type", + "handlers": { + "create": { + "permissions": [ + "networkmanager:CreateVpcAttachment", + "networkmanager:GetVpcAttachment", + "networkmanager:TagResource", + "ec2:DescribeRegions", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "networkmanager:DeleteAttachment", + "networkmanager:GetVpcAttachment", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 60 + }, + "list": { + "permissions": [ + "networkmanager:ListAttachments" + ] + }, + "read": { + "permissions": [ + "networkmanager:GetVpcAttachment" + ] + }, + "update": { + "permissions": [ + "networkmanager:UpdateVpcAttachment", + "networkmanager:GetVpcAttachment", + "networkmanager:ListTagsForResource", + "networkmanager:TagResource", + "networkmanager:UntagResource", + "ec2:DescribeRegions" + ], + "timeoutInMinutes": 60 + } + }, + "primaryIdentifier": [ + "/properties/AttachmentId" + ], + "properties": { + "AttachmentId": { + "description": "Id of the attachment.", + "type": "string" + }, + "AttachmentPolicyRuleNumber": { + "description": "The policy rule number associated with the attachment.", + "type": "integer" + }, + "AttachmentType": { + "description": "Attachment type.", + "type": "string" + }, + "CoreNetworkArn": { + "description": "The ARN of a core network for the VPC attachment.", + "type": "string" + }, + "CoreNetworkId": { + "description": "The ID of a core network for the VPC attachment.", + "type": "string" + }, + "CreatedAt": { + "description": "Creation time of the attachment.", + "type": "string" + }, + "EdgeLocation": { + "description": "The Region where the edge is located.", + "type": "string" + }, + "NetworkFunctionGroupName": { + "description": "The name of the network function group attachment.", + "type": "string" + }, + "Options": { + "$ref": "#/definitions/VpcOptions", + "description": "Vpc options of the attachment." + }, + "OwnerAccountId": { + "description": "Owner account of the attachment.", + "type": "string" + }, + "ProposedNetworkFunctionGroupChange": { + "$ref": "#/definitions/ProposedNetworkFunctionGroupChange", + "description": "The attachment to move from one network function group to another." + }, + "ProposedSegmentChange": { + "$ref": "#/definitions/ProposedSegmentChange", + "description": "The attachment to move from one segment to another." + }, + "ResourceArn": { + "description": "The ARN of the Resource.", + "type": "string" + }, + "SegmentName": { + "description": "The name of the segment attachment..", + "type": "string" + }, + "State": { + "description": "State of the attachment.", + "type": "string" + }, + "SubnetArns": { + "description": "Subnet Arn list", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Tags": { + "description": "Tags for the attachment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "UpdatedAt": { + "description": "Last update time of the attachment.", + "type": "string" + }, + "VpcArn": { + "description": "The ARN of the VPC.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CoreNetworkArn", + "/properties/CreatedAt", + "/properties/UpdatedAt", + "/properties/AttachmentType", + "/properties/State", + "/properties/AttachmentId", + "/properties/OwnerAccountId", + "/properties/EdgeLocation", + "/properties/AttachmentPolicyRuleNumber", + "/properties/SegmentName", + "/properties/NetworkFunctionGroupName", + "/properties/ResourceArn" + ], + "required": [ + "CoreNetworkId", + "VpcArn", + "SubnetArns" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkmanager/aws-networkmanager-vpcattachment", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "networkmanager:TagResource", + "networkmanager:UntagResource", + "networkmanager:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::NetworkManager::VpcAttachment" +} diff --git a/src/schema/aws-nimblestudio-launchprofile.json b/src/schema/aws-nimblestudio-launchprofile.json deleted file mode 100644 index 997c9a70..00000000 --- a/src/schema/aws-nimblestudio-launchprofile.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Ec2SubnetIds", - "/properties/StudioId", - "/properties/Tags" - ], - "definitions": { - "StreamConfiguration": { - "additionalProperties": false, - "properties": { - "AutomaticTerminationMode": { - "type": "string" - }, - "ClipboardMode": { - "type": "string" - }, - "Ec2InstanceTypes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "MaxSessionLengthInMinutes": { - "type": "number" - }, - "MaxStoppedSessionLengthInMinutes": { - "type": "number" - }, - "SessionBackup": { - "$ref": "#/definitions/StreamConfigurationSessionBackup" - }, - "SessionPersistenceMode": { - "type": "string" - }, - "SessionStorage": { - "$ref": "#/definitions/StreamConfigurationSessionStorage" - }, - "StreamingImageIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "VolumeConfiguration": { - "$ref": "#/definitions/VolumeConfiguration" - } - }, - "required": [ - "ClipboardMode", - "StreamingImageIds", - "Ec2InstanceTypes" - ], - "type": "object" - }, - "StreamConfigurationSessionBackup": { - "additionalProperties": false, - "properties": { - "MaxBackupsToRetain": { - "type": "number" - }, - "Mode": { - "type": "string" - } - }, - "type": "object" - }, - "StreamConfigurationSessionStorage": { - "additionalProperties": false, - "properties": { - "Mode": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Root": { - "$ref": "#/definitions/StreamingSessionStorageRoot" - } - }, - "required": [ - "Mode" - ], - "type": "object" - }, - "StreamingSessionStorageRoot": { - "additionalProperties": false, - "properties": { - "Linux": { - "type": "string" - }, - "Windows": { - "type": "string" - } - }, - "type": "object" - }, - "VolumeConfiguration": { - "additionalProperties": false, - "properties": { - "Iops": { - "type": "number" - }, - "Size": { - "type": "number" - }, - "Throughput": { - "type": "number" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::NimbleStudio::LaunchProfile", - "primaryIdentifier": [ - "/properties/LaunchProfileId" - ], - "properties": { - "Description": { - "type": "string" - }, - "Ec2SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "LaunchProfileId": { - "type": "string" - }, - "LaunchProfileProtocolVersions": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Name": { - "type": "string" - }, - "StreamConfiguration": { - "$ref": "#/definitions/StreamConfiguration" - }, - "StudioComponentIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "StudioId": { - "type": "string" - }, - "Tags": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/LaunchProfileId" - ], - "required": [ - "Ec2SubnetIds", - "StudioComponentIds", - "StreamConfiguration", - "LaunchProfileProtocolVersions", - "StudioId", - "Name" - ], - "typeName": "AWS::NimbleStudio::LaunchProfile" -} diff --git a/src/schema/aws-nimblestudio-streamingimage.json b/src/schema/aws-nimblestudio-streamingimage.json deleted file mode 100644 index e4bc115e..00000000 --- a/src/schema/aws-nimblestudio-streamingimage.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StudioId", - "/properties/Tags", - "/properties/Ec2ImageId" - ], - "definitions": { - "StreamingImageEncryptionConfiguration": { - "additionalProperties": false, - "properties": { - "KeyArn": { - "type": "string" - }, - "KeyType": { - "type": "string" - } - }, - "required": [ - "KeyType" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::NimbleStudio::StreamingImage", - "primaryIdentifier": [ - "/properties/StreamingImageId" - ], - "properties": { - "Description": { - "type": "string" - }, - "Ec2ImageId": { - "type": "string" - }, - "EncryptionConfiguration": { - "$ref": "#/definitions/StreamingImageEncryptionConfiguration" - }, - "EncryptionConfigurationKeyArn": { - "type": "string" - }, - "EncryptionConfigurationKeyType": { - "type": "string" - }, - "EulaIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Name": { - "type": "string" - }, - "Owner": { - "type": "string" - }, - "Platform": { - "type": "string" - }, - "StreamingImageId": { - "type": "string" - }, - "StudioId": { - "type": "string" - }, - "Tags": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Platform", - "/properties/EulaIds", - "/properties/Owner", - "/properties/EncryptionConfiguration.KeyArn", - "/properties/EncryptionConfiguration", - "/properties/EncryptionConfiguration.KeyType", - "/properties/StreamingImageId" - ], - "required": [ - "Ec2ImageId", - "StudioId", - "Name" - ], - "typeName": "AWS::NimbleStudio::StreamingImage" -} diff --git a/src/schema/aws-nimblestudio-studio.json b/src/schema/aws-nimblestudio-studio.json deleted file mode 100644 index 589df3fa..00000000 --- a/src/schema/aws-nimblestudio-studio.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StudioName", - "/properties/Tags" - ], - "definitions": { - "StudioEncryptionConfiguration": { - "additionalProperties": false, - "properties": { - "KeyArn": { - "type": "string" - }, - "KeyType": { - "type": "string" - } - }, - "required": [ - "KeyType" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::NimbleStudio::Studio", - "primaryIdentifier": [ - "/properties/StudioId" - ], - "properties": { - "AdminRoleArn": { - "type": "string" - }, - "DisplayName": { - "type": "string" - }, - "HomeRegion": { - "type": "string" - }, - "SsoClientId": { - "type": "string" - }, - "StudioEncryptionConfiguration": { - "$ref": "#/definitions/StudioEncryptionConfiguration" - }, - "StudioId": { - "type": "string" - }, - "StudioName": { - "type": "string" - }, - "StudioUrl": { - "type": "string" - }, - "Tags": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "UserRoleArn": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/StudioId", - "/properties/HomeRegion", - "/properties/SsoClientId", - "/properties/StudioUrl" - ], - "required": [ - "UserRoleArn", - "DisplayName", - "StudioName", - "AdminRoleArn" - ], - "typeName": "AWS::NimbleStudio::Studio" -} diff --git a/src/schema/aws-nimblestudio-studiocomponent.json b/src/schema/aws-nimblestudio-studiocomponent.json deleted file mode 100644 index d6572154..00000000 --- a/src/schema/aws-nimblestudio-studiocomponent.json +++ /dev/null @@ -1,196 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Subtype", - "/properties/StudioId", - "/properties/Tags" - ], - "definitions": { - "ActiveDirectoryComputerAttribute": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "ActiveDirectoryConfiguration": { - "additionalProperties": false, - "properties": { - "ComputerAttributes": { - "items": { - "$ref": "#/definitions/ActiveDirectoryComputerAttribute" - }, - "type": "array", - "uniqueItems": false - }, - "DirectoryId": { - "type": "string" - }, - "OrganizationalUnitDistinguishedName": { - "type": "string" - } - }, - "type": "object" - }, - "ComputeFarmConfiguration": { - "additionalProperties": false, - "properties": { - "ActiveDirectoryUser": { - "type": "string" - }, - "Endpoint": { - "type": "string" - } - }, - "type": "object" - }, - "LicenseServiceConfiguration": { - "additionalProperties": false, - "properties": { - "Endpoint": { - "type": "string" - } - }, - "type": "object" - }, - "ScriptParameterKeyValue": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "SharedFileSystemConfiguration": { - "additionalProperties": false, - "properties": { - "Endpoint": { - "type": "string" - }, - "FileSystemId": { - "type": "string" - }, - "LinuxMountPoint": { - "type": "string" - }, - "ShareName": { - "type": "string" - }, - "WindowsMountDrive": { - "type": "string" - } - }, - "type": "object" - }, - "StudioComponentConfiguration": { - "additionalProperties": false, - "properties": { - "ActiveDirectoryConfiguration": { - "$ref": "#/definitions/ActiveDirectoryConfiguration" - }, - "ComputeFarmConfiguration": { - "$ref": "#/definitions/ComputeFarmConfiguration" - }, - "LicenseServiceConfiguration": { - "$ref": "#/definitions/LicenseServiceConfiguration" - }, - "SharedFileSystemConfiguration": { - "$ref": "#/definitions/SharedFileSystemConfiguration" - } - }, - "type": "object" - }, - "StudioComponentInitializationScript": { - "additionalProperties": false, - "properties": { - "LaunchProfileProtocolVersion": { - "type": "string" - }, - "Platform": { - "type": "string" - }, - "RunContext": { - "type": "string" - }, - "Script": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::NimbleStudio::StudioComponent", - "primaryIdentifier": [ - "/properties/StudioComponentId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/StudioComponentConfiguration" - }, - "Description": { - "type": "string" - }, - "Ec2SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "InitializationScripts": { - "items": { - "$ref": "#/definitions/StudioComponentInitializationScript" - }, - "type": "array", - "uniqueItems": false - }, - "Name": { - "type": "string" - }, - "ScriptParameters": { - "items": { - "$ref": "#/definitions/ScriptParameterKeyValue" - }, - "type": "array", - "uniqueItems": false - }, - "StudioComponentId": { - "type": "string" - }, - "StudioId": { - "type": "string" - }, - "Subtype": { - "type": "string" - }, - "Tags": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "Type": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/StudioComponentId" - ], - "required": [ - "Type", - "StudioId", - "Name" - ], - "typeName": "AWS::NimbleStudio::StudioComponent" -} diff --git a/src/schema/aws-notifications-channelassociation.json b/src/schema/aws-notifications-channelassociation.json new file mode 100644 index 00000000..5fdd15ee --- /dev/null +++ b/src/schema/aws-notifications-channelassociation.json @@ -0,0 +1,66 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Arn", + "/properties/NotificationConfigurationArn" + ], + "description": "Definition of AWS::Notifications::ChannelAssociation Resource Type", + "handlers": { + "create": { + "permissions": [ + "notifications:AssociateChannel", + "notifications:ListChannels" + ] + }, + "delete": { + "permissions": [ + "notifications:DisassociateChannel" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "NotificationConfigurationArn": { + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration\\/[a-z0-9]{27}$", + "type": "string" + } + }, + "required": [ + "NotificationConfigurationArn" + ] + }, + "permissions": [ + "notifications:ListChannels" + ] + }, + "read": { + "permissions": [ + "notifications:ListChannels" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn", + "/properties/NotificationConfigurationArn" + ], + "properties": { + "Arn": { + "description": "ARN identifier of the channel.\nExample: arn:aws:chatbot::123456789012:chat-configuration/slack-channel/security-ops", + "pattern": "^arn:aws:(chatbot|consoleapp|notifications-contacts):[a-zA-Z0-9-]*:[0-9]{12}:[a-zA-Z0-9-_.@]+/[a-zA-Z0-9/_.@:-]+$", + "type": "string" + }, + "NotificationConfigurationArn": { + "description": "ARN identifier of the NotificationConfiguration.\nExample: arn:aws:notifications::123456789012:configuration/a01jes88qxwkbj05xv9c967pgm1", + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration\\/[a-z0-9]{27}$", + "type": "string" + } + }, + "required": [ + "Arn", + "NotificationConfigurationArn" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::Notifications::ChannelAssociation" +} diff --git a/src/schema/aws-notifications-eventrule.json b/src/schema/aws-notifications-eventrule.json new file mode 100644 index 00000000..623c9086 --- /dev/null +++ b/src/schema/aws-notifications-eventrule.json @@ -0,0 +1,163 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EventType", + "/properties/NotificationConfigurationArn", + "/properties/Source" + ], + "definitions": { + "EventRuleStatus": { + "enum": [ + "ACTIVE", + "INACTIVE", + "CREATING", + "UPDATING", + "DELETING" + ], + "type": "string" + }, + "EventRuleStatusSummary": { + "additionalProperties": false, + "properties": { + "Reason": { + "type": "string" + }, + "Status": { + "$ref": "#/definitions/EventRuleStatus" + } + }, + "required": [ + "Reason", + "Status" + ], + "type": "object" + }, + "StatusSummaryByRegion": { + "additionalProperties": false, + "patternProperties": { + "^([a-z]{1,2})-([a-z]{1,15}-)+([0-9])$": { + "$ref": "#/definitions/EventRuleStatusSummary" + } + }, + "type": "object" + }, + "Unit": { + "additionalProperties": false, + "type": "object" + } + }, + "description": "Definition of AWS::Notifications::EventRule Resource Type", + "handlers": { + "create": { + "permissions": [ + "notifications:CreateEventRule", + "notifications:UpdateEventRule", + "notifications:GetEventRule" + ] + }, + "delete": { + "permissions": [ + "notifications:DeleteEventRule", + "notifications:GetEventRule" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "NotificationConfigurationArn": { + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration\\/[a-z0-9]{27}$", + "type": "string" + } + }, + "required": [ + "NotificationConfigurationArn" + ] + }, + "permissions": [ + "notifications:ListEventRules", + "notifications:GetEventRule" + ] + }, + "read": { + "permissions": [ + "notifications:GetEventRule" + ] + }, + "update": { + "permissions": [ + "notifications:UpdateEventRule", + "notifications:GetEventRule" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration/[a-z0-9]{27}/rule/[a-z0-9]{27}$", + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "EventPattern": { + "maxLength": 4096, + "minLength": 0, + "type": "string" + }, + "EventType": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([a-zA-Z0-9 \\-\\(\\)])+$", + "type": "string" + }, + "ManagedRules": { + "items": { + "pattern": "^arn:aws:events:[a-z-\\d]{2,25}:\\d{12}:rule\\/[a-zA-Z-\\d]{1,1024}$", + "type": "string" + }, + "type": "array" + }, + "NotificationConfigurationArn": { + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration/[a-z0-9]{27}$", + "type": "string" + }, + "Regions": { + "items": { + "maxLength": 25, + "minLength": 2, + "pattern": "^([a-z]{1,2})-([a-z]{1,15}-)+([0-9])$", + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "Source": { + "maxLength": 36, + "minLength": 1, + "pattern": "^aws.([a-z0-9\\-])+$", + "type": "string" + }, + "StatusSummaryByRegion": { + "$ref": "#/definitions/StatusSummaryByRegion" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/ManagedRules", + "/properties/StatusSummaryByRegion" + ], + "required": [ + "EventType", + "NotificationConfigurationArn", + "Regions", + "Source" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::Notifications::EventRule" +} diff --git a/src/schema/aws-notifications-managednotificationaccountcontactassociation.json b/src/schema/aws-notifications-managednotificationaccountcontactassociation.json new file mode 100644 index 00000000..f1f6d142 --- /dev/null +++ b/src/schema/aws-notifications-managednotificationaccountcontactassociation.json @@ -0,0 +1,86 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ManagedNotificationConfigurationArn", + "/properties/ContactIdentifier" + ], + "definitions": { + "ContactIdentifier": { + "description": "This unique identifier for Contact", + "enum": [ + "ACCOUNT_PRIMARY", + "ACCOUNT_ALTERNATE_SECURITY", + "ACCOUNT_ALTERNATE_OPERATIONS", + "ACCOUNT_ALTERNATE_BILLING" + ], + "type": "string" + }, + "ManagedNotificationConfigurationArn": { + "description": "The managed notification configuration ARN, against which the account contact association will be created", + "pattern": "^arn:[-.a-z0-9]{1,63}:notifications::[0-9]{12}:managed-notification-configuration/category/[a-zA-Z0-9-]{3,64}/sub-category/[a-zA-Z0-9-]{3,64}$", + "type": "string" + } + }, + "description": "This resource schema represents the ManagedNotificationAccountContactAssociation resource in the AWS User Notifications.", + "handlers": { + "create": { + "permissions": [ + "notifications:AssociateManagedNotificationAccountContact", + "notifications:ListManagedNotificationChannelAssociations" + ] + }, + "delete": { + "permissions": [ + "notifications:DisassociateManagedNotificationAccountContact", + "notifications:ListManagedNotificationChannelAssociations" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ManagedNotificationConfigurationArn": { + "pattern": "^arn:[-.a-z0-9]{1,63}:notifications::([0-9]{12}|):managed-notification-configuration/category/[a-zA-Z0-9-]{3,64}/sub-category/[a-zA-Z0-9-]{3,64}$", + "type": "string" + } + }, + "required": [ + "ManagedNotificationConfigurationArn" + ] + }, + "permissions": [ + "notifications:ListManagedNotificationChannelAssociations" + ] + }, + "read": { + "permissions": [ + "notifications:ListManagedNotificationChannelAssociations" + ] + }, + "update": { + "permissions": [ + "notifications:ListManagedNotificationChannelAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/ManagedNotificationConfigurationArn", + "/properties/ContactIdentifier" + ], + "properties": { + "ContactIdentifier": { + "$ref": "#/definitions/ContactIdentifier" + }, + "ManagedNotificationConfigurationArn": { + "$ref": "#/definitions/ManagedNotificationConfigurationArn" + } + }, + "required": [ + "ContactIdentifier", + "ManagedNotificationConfigurationArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Notifications::ManagedNotificationAccountContactAssociation" +} diff --git a/src/schema/aws-notifications-managednotificationadditionalchannelassociation.json b/src/schema/aws-notifications-managednotificationadditionalchannelassociation.json new file mode 100644 index 00000000..61c13a2e --- /dev/null +++ b/src/schema/aws-notifications-managednotificationadditionalchannelassociation.json @@ -0,0 +1,66 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ChannelArn", + "/properties/ManagedNotificationConfigurationArn" + ], + "description": "Definition of AWS::Notifications::ManagedNotificationAdditionalChannelAssociation Resource Type", + "handlers": { + "create": { + "permissions": [ + "notifications:AssociateManagedNotificationAdditionalChannel", + "notifications:ListManagedNotificationChannelAssociations" + ] + }, + "delete": { + "permissions": [ + "notifications:DisassociateManagedNotificationAdditionalChannel", + "notifications:ListManagedNotificationChannelAssociations" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "NotificationConfigurationArn": { + "type": "string" + } + }, + "required": [ + "ManagedNotificationConfigurationArn" + ] + }, + "permissions": [ + "notifications:ListManagedNotificationChannelAssociations" + ] + }, + "read": { + "permissions": [ + "notifications:ListManagedNotificationChannelAssociations" + ] + } + }, + "primaryIdentifier": [ + "/properties/ChannelArn", + "/properties/ManagedNotificationConfigurationArn" + ], + "properties": { + "ChannelArn": { + "description": "ARN identifier of the channel.\nExample: arn:aws:chatbot::123456789012:chat-configuration/slack-channel/security-ops", + "pattern": "^arn:aws:(chatbot|consoleapp|notifications-contacts):[a-zA-Z0-9-]*:[0-9]{12}:[a-zA-Z0-9-_.@]+/[a-zA-Z0-9/_.@:-]+$", + "type": "string" + }, + "ManagedNotificationConfigurationArn": { + "description": "ARN identifier of the Managed Notification.\nExample: arn:aws:notifications::381491923782:managed-notification-configuration/category/AWS-Health/sub-category/Billing", + "pattern": "^arn:[-.a-z0-9]{1,63}:notifications::[0-9]{12}:managed-notification-configuration/category/[a-zA-Z0-9-]{3,64}/sub-category/[a-zA-Z0-9-]{3,64}$", + "type": "string" + } + }, + "required": [ + "ChannelArn", + "ManagedNotificationConfigurationArn" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::Notifications::ManagedNotificationAdditionalChannelAssociation" +} diff --git a/src/schema/aws-notifications-notificationconfiguration.json b/src/schema/aws-notifications-notificationconfiguration.json new file mode 100644 index 00000000..f1a9e889 --- /dev/null +++ b/src/schema/aws-notifications-notificationconfiguration.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tags" + ], + "definitions": { + "AggregationDuration": { + "enum": [ + "LONG", + "SHORT", + "NONE" + ], + "type": "string" + }, + "NotificationConfigurationStatus": { + "enum": [ + "ACTIVE", + "PARTIALLY_ACTIVE", + "INACTIVE", + "DELETING" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagMap": { + "description": "A list of tags that are attached to the role.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "description": "Definition of AWS::Notifications::NotificationConfiguration Resource Type", + "handlers": { + "create": { + "permissions": [ + "notifications:CreateNotificationConfiguration", + "notifications:GetNotificationConfiguration", + "notifications:UpdateNotificationConfiguration", + "notifications:TagResource", + "notifications:UntagResource", + "notifications:ListTagsForResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "notifications:DeleteNotificationConfiguration" + ] + }, + "list": { + "permissions": [ + "notifications:ListNotificationConfigurations", + "notifications:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "notifications:GetNotificationConfiguration", + "notifications:ListTagsForResource", + "notifications:TagResource", + "notifications:UntagResource" + ] + }, + "update": { + "permissions": [ + "notifications:CreateNotificationConfiguration", + "notifications:GetNotificationConfiguration", + "notifications:UpdateNotificationConfiguration", + "notifications:TagResource", + "notifications:UntagResource", + "notifications:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AggregationDuration": { + "$ref": "#/definitions/AggregationDuration" + }, + "Arn": { + "pattern": "^arn:aws:notifications::[0-9]{12}:configuration/[a-z0-9]{27}$", + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "Description": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[^\\u0001-\\u001F\\u007F-\\u009F]*$", + "type": "string" + }, + "Name": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9_\\-]+$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/NotificationConfigurationStatus" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + } + }, + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/Status", + "/properties/Arn" + ], + "required": [ + "Description", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "notifications:TagResource", + "notifications:UntagResource", + "notifications:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Notifications::NotificationConfiguration" +} diff --git a/src/schema/aws-notifications-notificationhub.json b/src/schema/aws-notifications-notificationhub.json new file mode 100644 index 00000000..3d1bf1d1 --- /dev/null +++ b/src/schema/aws-notifications-notificationhub.json @@ -0,0 +1,92 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Region" + ], + "definitions": { + "NotificationHubStatus": { + "enum": [ + "ACTIVE", + "REGISTERING", + "DEREGISTERING", + "INACTIVE" + ], + "type": "string" + }, + "NotificationHubStatusSummary": { + "additionalProperties": false, + "properties": { + "NotificationHubStatus": { + "$ref": "#/definitions/NotificationHubStatus" + }, + "NotificationHubStatusReason": { + "type": "string" + } + }, + "required": [ + "NotificationHubStatus", + "NotificationHubStatusReason" + ], + "type": "object" + }, + "Region": { + "description": "Region that NotificationHub is present in.", + "maxLength": 25, + "minLength": 2, + "pattern": "^([a-z]{1,2})-([a-z]{1,15}-)+([0-9])$", + "type": "string" + } + }, + "description": "Definition of AWS::Notifications::NotificationHub Resource Type", + "handlers": { + "create": { + "permissions": [ + "notifications:RegisterNotificationHub", + "notifications:ListNotificationHubs", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "notifications:DeregisterNotificationHub", + "notifications:ListNotificationHubs" + ] + }, + "list": { + "permissions": [ + "notifications:ListNotificationHubs" + ] + }, + "read": { + "permissions": [ + "notifications:ListNotificationHubs" + ] + } + }, + "primaryIdentifier": [ + "/properties/Region" + ], + "properties": { + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "NotificationHubStatusSummary": { + "$ref": "#/definitions/NotificationHubStatusSummary" + }, + "Region": { + "$ref": "#/definitions/Region" + } + }, + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/NotificationHubStatusSummary" + ], + "required": [ + "Region" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::Notifications::NotificationHub" +} diff --git a/src/schema/aws-notificationscontacts-emailcontact.json b/src/schema/aws-notificationscontacts-emailcontact.json new file mode 100644 index 00000000..680353b0 --- /dev/null +++ b/src/schema/aws-notificationscontacts-emailcontact.json @@ -0,0 +1,177 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EmailAddress", + "/properties/Name", + "/properties/Tags" + ], + "definitions": { + "EmailContact": { + "additionalProperties": false, + "properties": { + "Address": { + "maxLength": 254, + "minLength": 6, + "pattern": "^(.+)@(.+)$", + "type": "string" + }, + "Arn": { + "pattern": "^arn:aws:notifications-contacts::[0-9]{12}:emailcontact/[a-z0-9]{27}$", + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 64, + "minLength": 1, + "pattern": "[\\w-.~]+", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/EmailContactStatus" + }, + "UpdateTime": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "Address", + "Arn", + "CreationTime", + "Name", + "Status", + "UpdateTime" + ], + "type": "object" + }, + "EmailContactStatus": { + "enum": [ + "inactive", + "active" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagMap": { + "description": "A list of tags that are attached to the role.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "description": "Definition of AWS::NotificationsContacts::EmailContact Resource Type", + "handlers": { + "create": { + "permissions": [ + "notifications-contacts:CreateEmailContact", + "notifications-contacts:GetEmailContact", + "notifications-contacts:SendActivationCode", + "notifications-contacts:ListEmailContacts", + "notifications-contacts:TagResource", + "notifications-contacts:UntagResource", + "notifications-contacts:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "notifications-contacts:DeleteEmailContact", + "notifications-contacts:GetEmailContact" + ] + }, + "list": { + "permissions": [ + "notifications-contacts:ListEmailContacts" + ] + }, + "read": { + "permissions": [ + "notifications-contacts:GetEmailContact", + "notifications-contacts:ListTagsForResource", + "notifications-contacts:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "^arn:aws:notifications-contacts::[0-9]{12}:emailcontact/[a-z0-9]{27}$", + "type": "string" + }, + "EmailAddress": { + "maxLength": 254, + "minLength": 6, + "pattern": "^(.+)@(.+)$", + "type": "string" + }, + "EmailContact": { + "$ref": "#/definitions/EmailContact" + }, + "Name": { + "maxLength": 64, + "minLength": 1, + "pattern": "[\\w-.~]+", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/EmailContact", + "/properties/EmailContact/Arn", + "/properties/EmailContact/Address", + "/properties/EmailContact/Name", + "/properties/EmailContact/Status", + "/properties/EmailContact/CreationTime", + "/properties/EmailContact/UpdateTime" + ], + "required": [ + "EmailAddress", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "notifications-contacts:TagResource", + "notifications-contacts:UntagResource", + "notifications-contacts:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::NotificationsContacts::EmailContact", + "writeOnlyProperties": [ + "/properties/EmailAddress", + "/properties/Name" + ] +} diff --git a/src/schema/aws-oam-link.json b/src/schema/aws-oam-link.json index 7093c612..adc5f8ca 100644 --- a/src/schema/aws-oam-link.json +++ b/src/schema/aws-oam-link.json @@ -1,162 +1,170 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SinkIdentifier", - "/properties/LabelTemplate" - ], - "definitions": { - "LinkConfiguration": { - "additionalProperties": false, - "properties": { - "LogGroupConfiguration": { - "$ref": "#/definitions/LinkFilter" - }, - "MetricConfiguration": { - "$ref": "#/definitions/LinkFilter" - } - }, - "type": "object" - }, - "LinkFilter": { - "additionalProperties": false, - "properties": { - "Filter": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Filter" - ], - "type": "object" - }, - "ResourceType": { - "enum": [ - "AWS::CloudWatch::Metric", - "AWS::Logs::LogGroup", - "AWS::XRay::Trace", - "AWS::ApplicationInsights::Application", - "AWS::InternetMonitor::Monitor" - ], - "type": "string" - } - }, - "description": "Definition of AWS::Oam::Link Resource Type", - "handlers": { - "create": { - "permissions": [ - "oam:CreateLink", - "oam:GetLink", - "cloudwatch:Link", - "logs:Link", - "xray:Link", - "applicationinsights:Link", - "internetmonitor:Link" - ] - }, - "delete": { - "permissions": [ - "oam:DeleteLink", - "oam:GetLink" - ] - }, - "list": { - "permissions": [ - "oam:ListLinks" - ] - }, - "read": { - "permissions": [ - "oam:GetLink" - ] - }, - "update": { - "permissions": [ - "oam:GetLink", - "oam:UpdateLink", - "cloudwatch:Link", - "logs:Link", - "xray:Link", - "applicationinsights:Link", - "internetmonitor:Link", - "oam:TagResource", - "oam:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "type": "string" - }, - "Label": { - "type": "string" - }, - "LabelTemplate": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "LinkConfiguration": { - "$ref": "#/definitions/LinkConfiguration" - }, - "ResourceTypes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ResourceType" - }, - "maxItems": 50, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "SinkIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "Tags to apply to the link", - "patternProperties": { - "^(?!aws:.*).{1,128}$": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:.", - "maxLength": 256, - "minLength": 0, - "pattern": "^(?!aws:.*).{0,256}$", - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Label" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "ResourceTypes", - "SinkIdentifier" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "oam:ListTagsForResource", - "oam:UntagResource", - "oam:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Oam::Link", - "writeOnlyProperties": [ - "/properties/LabelTemplate" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SinkIdentifier", + "/properties/LabelTemplate" + ], + "definitions": { + "LinkConfiguration": { + "additionalProperties": false, + "properties": { + "LogGroupConfiguration": { + "$ref": "#/definitions/LinkFilter" + }, + "MetricConfiguration": { + "$ref": "#/definitions/LinkFilter" + } + }, + "type": "object" + }, + "LinkFilter": { + "additionalProperties": false, + "properties": { + "Filter": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Filter" + ], + "type": "object" + }, + "ResourceType": { + "enum": [ + "AWS::CloudWatch::Metric", + "AWS::Logs::LogGroup", + "AWS::XRay::Trace", + "AWS::ApplicationInsights::Application", + "AWS::InternetMonitor::Monitor", + "AWS::ApplicationSignals::Service", + "AWS::ApplicationSignals::ServiceLevelObjective" + ], + "type": "string" + } + }, + "description": "Definition of AWS::Oam::Link Resource Type", + "handlers": { + "create": { + "permissions": [ + "oam:CreateLink", + "oam:GetLink", + "oam:TagResource", + "oam:ListTagsForResource", + "cloudwatch:Link", + "logs:Link", + "xray:Link", + "applicationinsights:Link", + "internetmonitor:Link", + "application-signals:Link" + ] + }, + "delete": { + "permissions": [ + "oam:DeleteLink", + "oam:GetLink" + ] + }, + "list": { + "permissions": [ + "oam:ListLinks" + ] + }, + "read": { + "permissions": [ + "oam:GetLink", + "oam:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "oam:GetLink", + "oam:UpdateLink", + "cloudwatch:Link", + "logs:Link", + "xray:Link", + "applicationinsights:Link", + "internetmonitor:Link", + "application-signals:Link", + "oam:TagResource", + "oam:UntagResource", + "oam:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "type": "string" + }, + "Label": { + "type": "string" + }, + "LabelTemplate": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "LinkConfiguration": { + "$ref": "#/definitions/LinkConfiguration" + }, + "ResourceTypes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourceType" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "SinkIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "Tags to apply to the link", + "patternProperties": { + "^(?!aws:.*).{1,128}$": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:.", + "maxLength": 256, + "minLength": 0, + "pattern": "^(?!aws:.*).{0,256}$", + "type": "string" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Label" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "ResourceTypes", + "SinkIdentifier" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "oam:ListTagsForResource", + "oam:UntagResource", + "oam:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Oam::Link", + "writeOnlyProperties": [ + "/properties/LabelTemplate" + ] +} diff --git a/src/schema/aws-oam-sink.json b/src/schema/aws-oam-sink.json index f0b93f9b..2c978a05 100644 --- a/src/schema/aws-oam-sink.json +++ b/src/schema/aws-oam-sink.json @@ -1,98 +1,102 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "description": "Resource Type definition for AWS::Oam::Sink", - "handlers": { - "create": { - "permissions": [ - "oam:CreateSink", - "oam:PutSinkPolicy", - "oam:GetSinkPolicy", - "oam:GetSink" - ] - }, - "delete": { - "permissions": [ - "oam:DeleteSink", - "oam:GetSinkPolicy", - "oam:GetSink" - ] - }, - "list": { - "permissions": [ - "oam:ListSinks" - ] - }, - "read": { - "permissions": [ - "oam:GetSinkPolicy", - "oam:GetSink" - ] - }, - "update": { - "permissions": [ - "oam:PutSinkPolicy", - "oam:GetSinkPolicy", - "oam:GetSink", - "oam:TagResource", - "oam:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon resource name (ARN) of the ObservabilityAccessManager Sink", - "maxLength": 2048, - "type": "string" - }, - "Name": { - "description": "The name of the ObservabilityAccessManager Sink.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - }, - "Policy": { - "description": "The policy of this ObservabilityAccessManager Sink.", - "type": "object" - }, - "Tags": { - "additionalProperties": false, - "description": "Tags to apply to the sink", - "patternProperties": { - "^(?!aws:.*).{1,128}$": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:.", - "maxLength": 256, - "minLength": 0, - "pattern": "^(?!aws:.*).{0,256}$", - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "oam:ListTagsForResource", - "oam:UntagResource", - "oam:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Oam::Sink" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "description": "Resource Type definition for AWS::Oam::Sink", + "handlers": { + "create": { + "permissions": [ + "oam:CreateSink", + "oam:PutSinkPolicy", + "oam:GetSinkPolicy", + "oam:GetSink", + "oam:TagResource", + "oam:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "oam:DeleteSink", + "oam:GetSinkPolicy", + "oam:GetSink" + ] + }, + "list": { + "permissions": [ + "oam:ListSinks" + ] + }, + "read": { + "permissions": [ + "oam:GetSinkPolicy", + "oam:GetSink", + "oam:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "oam:PutSinkPolicy", + "oam:GetSinkPolicy", + "oam:GetSink", + "oam:TagResource", + "oam:UntagResource", + "oam:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon resource name (ARN) of the ObservabilityAccessManager Sink", + "maxLength": 2048, + "type": "string" + }, + "Name": { + "description": "The name of the ObservabilityAccessManager Sink.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.-]+$", + "type": "string" + }, + "Policy": { + "description": "The policy of this ObservabilityAccessManager Sink.", + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "description": "Tags to apply to the sink", + "patternProperties": { + "^(?!aws:.*).{1,128}$": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:.", + "maxLength": 256, + "minLength": 0, + "pattern": "^(?!aws:.*).{0,256}$", + "type": "string" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "oam:ListTagsForResource", + "oam:UntagResource", + "oam:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Oam::Sink" +} diff --git a/src/schema/aws-omics-annotationstore.json b/src/schema/aws-omics-annotationstore.json index 85067969..98a6986c 100644 --- a/src/schema/aws-omics-annotationstore.json +++ b/src/schema/aws-omics-annotationstore.json @@ -1,299 +1,299 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Reference", - "/properties/SseConfig", - "/properties/StoreFormat", - "/properties/StoreOptions", - "/properties/Tags" - ], - "definitions": { - "AnnotationType": { - "enum": [ - "GENERIC", - "CHR_POS", - "CHR_POS_REF_ALT", - "CHR_START_END_ONE_BASE", - "CHR_START_END_REF_ALT_ONE_BASE", - "CHR_START_END_ZERO_BASE", - "CHR_START_END_REF_ALT_ZERO_BASE" - ], - "type": "string" - }, - "EncryptionType": { - "enum": [ - "KMS" - ], - "type": "string" - }, - "FormatToHeader": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "maxLength": 1000, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "FormatToHeaderKey": { - "enum": [ - "CHR", - "START", - "END", - "REF", - "ALT", - "POS" - ], - "type": "string" - }, - "ReferenceItem": { - "additionalProperties": false, - "properties": { - "ReferenceArn": { - "maxLength": 127, - "minLength": 1, - "pattern": "^arn:.+$", - "type": "string" - } - }, - "required": [ - "ReferenceArn" - ], - "type": "object" - }, - "SchemaItem": { - "additionalProperties": false, - "maxProperties": 1, - "minProperties": 1, - "patternProperties": { - "^[a-z0-9_]{1,255}$": { - "$ref": "#/definitions/SchemaValueType" - } - }, - "type": "object" - }, - "SchemaValueType": { - "enum": [ - "LONG", - "INT", - "STRING", - "FLOAT", - "DOUBLE", - "BOOLEAN" - ], - "type": "string" - }, - "SseConfig": { - "additionalProperties": false, - "properties": { - "KeyArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/EncryptionType" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "StoreFormat": { - "enum": [ - "GFF", - "TSV", - "VCF" - ], - "type": "string" - }, - "StoreOptions": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "TsvStoreOptions": { - "$ref": "#/definitions/TsvStoreOptions" - } - }, - "required": [ - "TsvStoreOptions" - ], - "title": "TsvStoreOptions", - "type": "object" - } - ] - }, - "StoreStatus": { - "enum": [ - "CREATING", - "UPDATING", - "DELETING", - "ACTIVE", - "FAILED" - ], - "type": "string" - }, - "TagMap": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "TsvStoreOptions": { - "additionalProperties": false, - "properties": { - "AnnotationType": { - "$ref": "#/definitions/AnnotationType" - }, - "FormatToHeader": { - "$ref": "#/definitions/FormatToHeader" - }, - "Schema": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SchemaItem" - }, - "maxItems": 5000, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::Omics::AnnotationStore Resource Type", - "handlers": { - "create": { - "permissions": [ - "omics:CreateAnnotationStore", - "omics:TagResource", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:CreateGrant", - "ram:AcceptResourceShareInvitation", - "ram:GetResourceShareInvitations", - "omics:GetAnnotationStore" - ] - }, - "delete": { - "permissions": [ - "omics:DeleteAnnotationStore", - "omics:ListAnnotationStores" - ] - }, - "list": { - "permissions": [ - "omics:ListAnnotationStores" - ] - }, - "read": { - "permissions": [ - "omics:GetAnnotationStore" - ] - }, - "update": { - "permissions": [ - "omics:UpdateAnnotationStore", - "omics:TagResource", - "omics:UntagResource", - "omics:GetAnnotationStore", - "omics:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "CreationTime": { - "format": "date-time", - "type": "string" - }, - "Description": { - "maxLength": 500, - "minLength": 0, - "type": "string" - }, - "Id": { - "pattern": "^[a-f0-9]{12}$", - "type": "string" - }, - "Name": { - "pattern": "^([a-z]){1}([a-z0-9_]){2,254}", - "type": "string" - }, - "Reference": { - "$ref": "#/definitions/ReferenceItem" - }, - "SseConfig": { - "$ref": "#/definitions/SseConfig" - }, - "Status": { - "$ref": "#/definitions/StoreStatus" - }, - "StatusMessage": { - "maxLength": 1000, - "minLength": 0, - "type": "string" - }, - "StoreArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)$", - "type": "string" - }, - "StoreFormat": { - "$ref": "#/definitions/StoreFormat" - }, - "StoreOptions": { - "$ref": "#/definitions/StoreOptions" - }, - "StoreSizeBytes": { - "type": "number" - }, - "Tags": { - "$ref": "#/definitions/TagMap" - }, - "UpdateTime": { - "format": "date-time", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CreationTime", - "/properties/Id", - "/properties/Status", - "/properties/StatusMessage", - "/properties/StoreArn", - "/properties/StoreSizeBytes", - "/properties/UpdateTime" - ], - "required": [ - "Name", - "StoreFormat" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "omics:TagResource", - "omics:UntagResource", - "omics:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Omics::AnnotationStore" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Reference", + "/properties/SseConfig", + "/properties/StoreFormat", + "/properties/StoreOptions", + "/properties/Tags" + ], + "definitions": { + "AnnotationType": { + "enum": [ + "GENERIC", + "CHR_POS", + "CHR_POS_REF_ALT", + "CHR_START_END_ONE_BASE", + "CHR_START_END_REF_ALT_ONE_BASE", + "CHR_START_END_ZERO_BASE", + "CHR_START_END_REF_ALT_ZERO_BASE" + ], + "type": "string" + }, + "EncryptionType": { + "enum": [ + "KMS" + ], + "type": "string" + }, + "FormatToHeader": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "maxLength": 1000, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "FormatToHeaderKey": { + "enum": [ + "CHR", + "START", + "END", + "REF", + "ALT", + "POS" + ], + "type": "string" + }, + "ReferenceItem": { + "additionalProperties": false, + "properties": { + "ReferenceArn": { + "maxLength": 127, + "minLength": 1, + "pattern": "^arn:.+$", + "type": "string" + } + }, + "required": [ + "ReferenceArn" + ], + "type": "object" + }, + "SchemaItem": { + "additionalProperties": false, + "maxProperties": 1, + "minProperties": 1, + "patternProperties": { + "^[a-z0-9_]{1,255}$": { + "$ref": "#/definitions/SchemaValueType" + } + }, + "type": "object" + }, + "SchemaValueType": { + "enum": [ + "LONG", + "INT", + "STRING", + "FLOAT", + "DOUBLE", + "BOOLEAN" + ], + "type": "string" + }, + "SseConfig": { + "additionalProperties": false, + "properties": { + "KeyArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/EncryptionType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "StoreFormat": { + "enum": [ + "GFF", + "TSV", + "VCF" + ], + "type": "string" + }, + "StoreOptions": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "TsvStoreOptions": { + "$ref": "#/definitions/TsvStoreOptions" + } + }, + "required": [ + "TsvStoreOptions" + ], + "title": "TsvStoreOptions", + "type": "object" + } + ] + }, + "StoreStatus": { + "enum": [ + "CREATING", + "UPDATING", + "DELETING", + "ACTIVE", + "FAILED" + ], + "type": "string" + }, + "TagMap": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "TsvStoreOptions": { + "additionalProperties": false, + "properties": { + "AnnotationType": { + "$ref": "#/definitions/AnnotationType" + }, + "FormatToHeader": { + "$ref": "#/definitions/FormatToHeader" + }, + "Schema": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SchemaItem" + }, + "maxItems": 5000, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::Omics::AnnotationStore Resource Type", + "handlers": { + "create": { + "permissions": [ + "omics:CreateAnnotationStore", + "omics:TagResource", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:CreateGrant", + "ram:AcceptResourceShareInvitation", + "ram:GetResourceShareInvitations", + "omics:GetAnnotationStore" + ] + }, + "delete": { + "permissions": [ + "omics:DeleteAnnotationStore", + "omics:ListAnnotationStores" + ] + }, + "list": { + "permissions": [ + "omics:ListAnnotationStores" + ] + }, + "read": { + "permissions": [ + "omics:GetAnnotationStore" + ] + }, + "update": { + "permissions": [ + "omics:UpdateAnnotationStore", + "omics:TagResource", + "omics:UntagResource", + "omics:GetAnnotationStore", + "omics:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "Description": { + "maxLength": 500, + "minLength": 0, + "type": "string" + }, + "Id": { + "pattern": "^[a-f0-9]{12}$", + "type": "string" + }, + "Name": { + "pattern": "^([a-z]){1}([a-z0-9_]){2,254}", + "type": "string" + }, + "Reference": { + "$ref": "#/definitions/ReferenceItem" + }, + "SseConfig": { + "$ref": "#/definitions/SseConfig" + }, + "Status": { + "$ref": "#/definitions/StoreStatus" + }, + "StatusMessage": { + "maxLength": 1000, + "minLength": 0, + "type": "string" + }, + "StoreArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)$", + "type": "string" + }, + "StoreFormat": { + "$ref": "#/definitions/StoreFormat" + }, + "StoreOptions": { + "$ref": "#/definitions/StoreOptions" + }, + "StoreSizeBytes": { + "type": "number" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + }, + "UpdateTime": { + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/Id", + "/properties/Status", + "/properties/StatusMessage", + "/properties/StoreArn", + "/properties/StoreSizeBytes", + "/properties/UpdateTime" + ], + "required": [ + "Name", + "StoreFormat" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "omics:TagResource", + "omics:UntagResource", + "omics:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Omics::AnnotationStore" +} diff --git a/src/schema/aws-omics-referencestore.json b/src/schema/aws-omics-referencestore.json index f238ab9f..0bc9149e 100644 --- a/src/schema/aws-omics-referencestore.json +++ b/src/schema/aws-omics-referencestore.json @@ -1,140 +1,137 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Description", - "/properties/Name", - "/properties/SseConfig", - "/properties/Tags" - ], - "definitions": { - "EncryptionType": { - "enum": [ - "KMS" - ], - "type": "string" - }, - "SseConfig": { - "additionalProperties": false, - "description": "Server-side encryption (SSE) settings for a store.", - "properties": { - "KeyArn": { - "description": "An encryption key ARN.", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/EncryptionType" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::Omics::ReferenceStore Resource Type", - "handlers": { - "create": { - "permissions": [ - "omics:CreateReferenceStore", - "omics:TagResource", - "kms:DescribeKey" - ] - }, - "delete": { - "permissions": [ - "omics:DeleteReferenceStore" - ] - }, - "list": { - "permissions": [ - "omics:ListReferenceStores" - ] - }, - "read": { - "permissions": [ - "omics:GetReferenceStore", - "omics:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ReferenceStoreId" - ], - "properties": { - "Arn": { - "description": "The store's ARN.", - "maxLength": 127, - "minLength": 1, - "pattern": "^arn:.+$", - "type": "string" - }, - "CreationTime": { - "description": "When the store was created.", - "format": "date-time", - "type": "string" - }, - "Description": { - "description": "A description for the store.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", - "type": "string" - }, - "Name": { - "description": "A name for the store.", - "maxLength": 127, - "minLength": 1, - "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", - "type": "string" - }, - "ReferenceStoreId": { - "maxLength": 36, - "minLength": 10, - "pattern": "^[0-9]+$", - "type": "string" - }, - "SseConfig": { - "$ref": "#/definitions/SseConfig" - }, - "Tags": { - "$ref": "#/definitions/TagMap" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationTime", - "/properties/ReferenceStoreId" - ], - "required": [ - "Name" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "omics:TagResource", - "omics:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::Omics::ReferenceStore", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description", + "/properties/Name", + "/properties/SseConfig", + "/properties/Tags" + ], + "definitions": { + "EncryptionType": { + "enum": [ + "KMS" + ], + "type": "string" + }, + "SseConfig": { + "additionalProperties": false, + "description": "Server-side encryption (SSE) settings for a store.", + "properties": { + "KeyArn": { + "description": "An encryption key ARN.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/EncryptionType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::Omics::ReferenceStore Resource Type", + "handlers": { + "create": { + "permissions": [ + "omics:CreateReferenceStore", + "omics:TagResource", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "omics:DeleteReferenceStore" + ] + }, + "list": { + "permissions": [ + "omics:ListReferenceStores" + ] + }, + "read": { + "permissions": [ + "omics:GetReferenceStore", + "omics:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ReferenceStoreId" + ], + "properties": { + "Arn": { + "description": "The store's ARN.", + "maxLength": 127, + "minLength": 1, + "pattern": "^arn:.+$", + "type": "string" + }, + "CreationTime": { + "description": "When the store was created.", + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "A description for the store.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "Name": { + "description": "A name for the store.", + "maxLength": 127, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "ReferenceStoreId": { + "maxLength": 36, + "minLength": 10, + "pattern": "^[0-9]+$", + "type": "string" + }, + "SseConfig": { + "$ref": "#/definitions/SseConfig" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/ReferenceStoreId" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "omics:TagResource", + "omics:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Omics::ReferenceStore" +} diff --git a/src/schema/aws-omics-rungroup.json b/src/schema/aws-omics-rungroup.json index b8a30542..f348e5cc 100644 --- a/src/schema/aws-omics-rungroup.json +++ b/src/schema/aws-omics-rungroup.json @@ -1,120 +1,120 @@ -{ - "additionalProperties": false, - "definitions": { - "TagMap": { - "additionalProperties": false, - "description": "A map of resource tags", - "patternProperties": { - ".+": { - "description": "Resource tag value", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::Omics::RunGroup Resource Type", - "handlers": { - "create": { - "permissions": [ - "omics:CreateRunGroup", - "omics:TagResource" - ] - }, - "delete": { - "permissions": [ - "omics:DeleteRunGroup", - "omics:GetRunGroup" - ] - }, - "list": { - "permissions": [ - "omics:ListRunGroups" - ] - }, - "read": { - "permissions": [ - "omics:GetRunGroup" - ] - }, - "update": { - "permissions": [ - "omics:UpdateRunGroup", - "omics:TagResource", - "omics:GetRunGroup", - "omics:ListTagsForResource", - "omics:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "maxLength": 128, - "minLength": 1, - "pattern": "^arn:.+$", - "type": "string" - }, - "CreationTime": { - "format": "date-time", - "type": "string" - }, - "Id": { - "maxLength": 18, - "minLength": 1, - "pattern": "^[0-9]+$", - "type": "string" - }, - "MaxCpus": { - "maximum": 100000, - "minimum": 1, - "type": "number" - }, - "MaxDuration": { - "maximum": 100000, - "minimum": 1, - "type": "number" - }, - "MaxGpus": { - "maximum": 100000, - "minimum": 1, - "type": "number" - }, - "MaxRuns": { - "maximum": 100000, - "minimum": 1, - "type": "number" - }, - "Name": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/TagMap" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationTime", - "/properties/Id" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "omics:TagResource", - "omics:UntagResource", - "omics:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Omics::RunGroup" -} +{ + "additionalProperties": false, + "definitions": { + "TagMap": { + "additionalProperties": false, + "description": "A map of resource tags", + "patternProperties": { + ".+": { + "description": "Resource tag value", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::Omics::RunGroup Resource Type", + "handlers": { + "create": { + "permissions": [ + "omics:CreateRunGroup", + "omics:TagResource" + ] + }, + "delete": { + "permissions": [ + "omics:DeleteRunGroup", + "omics:GetRunGroup" + ] + }, + "list": { + "permissions": [ + "omics:ListRunGroups" + ] + }, + "read": { + "permissions": [ + "omics:GetRunGroup" + ] + }, + "update": { + "permissions": [ + "omics:UpdateRunGroup", + "omics:TagResource", + "omics:GetRunGroup", + "omics:ListTagsForResource", + "omics:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "maxLength": 128, + "minLength": 1, + "pattern": "^arn:.+$", + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "Id": { + "maxLength": 18, + "minLength": 1, + "pattern": "^[0-9]+$", + "type": "string" + }, + "MaxCpus": { + "maximum": 100000, + "minimum": 1, + "type": "number" + }, + "MaxDuration": { + "maximum": 100000, + "minimum": 1, + "type": "number" + }, + "MaxGpus": { + "maximum": 100000, + "minimum": 1, + "type": "number" + }, + "MaxRuns": { + "maximum": 100000, + "minimum": 1, + "type": "number" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/Id" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "omics:TagResource", + "omics:UntagResource", + "omics:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Omics::RunGroup" +} diff --git a/src/schema/aws-omics-sequencestore.json b/src/schema/aws-omics-sequencestore.json index d7cb018e..d4e00921 100644 --- a/src/schema/aws-omics-sequencestore.json +++ b/src/schema/aws-omics-sequencestore.json @@ -1,147 +1,232 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Description", - "/properties/Name", - "/properties/FallbackLocation", - "/properties/SseConfig", - "/properties/Tags" - ], - "definitions": { - "EncryptionType": { - "enum": [ - "KMS" - ], - "type": "string" - }, - "SseConfig": { - "additionalProperties": false, - "description": "Server-side encryption (SSE) settings for a store.", - "properties": { - "KeyArn": { - "description": "An encryption key ARN.", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/EncryptionType" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::Omics::SequenceStore Resource Type", - "handlers": { - "create": { - "permissions": [ - "omics:CreateSequenceStore", - "omics:TagResource", - "kms:DescribeKey" - ] - }, - "delete": { - "permissions": [ - "omics:DeleteSequenceStore" - ] - }, - "list": { - "permissions": [ - "omics:ListSequenceStores" - ] - }, - "read": { - "permissions": [ - "omics:GetSequenceStore", - "omics:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/SequenceStoreId" - ], - "properties": { - "Arn": { - "description": "The store's ARN.", - "maxLength": 127, - "minLength": 1, - "pattern": "^arn:.+$", - "type": "string" - }, - "CreationTime": { - "description": "When the store was created.", - "format": "date-time", - "type": "string" - }, - "Description": { - "description": "A description for the store.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", - "type": "string" - }, - "FallbackLocation": { - "description": "An S3 URI representing the bucket and folder to store failed read set uploads.", - "minLength": 1, - "pattern": "^s3:\\/\\/([a-z0-9][a-z0-9-.]{1,61}[a-z0-9])\\/?((.{1,1024})\\/)?$", - "type": "string" - }, - "Name": { - "description": "A name for the store.", - "maxLength": 127, - "minLength": 1, - "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", - "type": "string" - }, - "SequenceStoreId": { - "maxLength": 36, - "minLength": 10, - "pattern": "^[0-9]+$", - "type": "string" - }, - "SseConfig": { - "$ref": "#/definitions/SseConfig" - }, - "Tags": { - "$ref": "#/definitions/TagMap" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationTime", - "/properties/SequenceStoreId" - ], - "required": [ - "Name" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "omics:TagResource", - "omics:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::Omics::SequenceStore", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ETagAlgorithmFamily", + "/properties/SseConfig" + ], + "definitions": { + "ETagAlgorithmFamily": { + "enum": [ + "MD5up", + "SHA256up", + "SHA512up" + ], + "type": "string" + }, + "EncryptionType": { + "enum": [ + "KMS" + ], + "type": "string" + }, + "SequenceStoreStatus": { + "enum": [ + "CREATING", + "ACTIVE", + "UPDATING", + "DELETING", + "FAILED" + ], + "type": "string" + }, + "SseConfig": { + "additionalProperties": false, + "description": "Server-side encryption (SSE) settings for a store.", + "properties": { + "KeyArn": { + "description": "An encryption key ARN.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/EncryptionType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Omics::SequenceStore", + "handlers": { + "create": { + "permissions": [ + "omics:CreateSequenceStore", + "omics:GetSequenceStore", + "omics:GetS3AccessPolicy", + "omics:PutS3AccessPolicy", + "omics:ListTagsForResource", + "omics:TagResource", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "omics:DeleteSequenceStore" + ] + }, + "list": { + "permissions": [ + "omics:ListSequenceStores" + ] + }, + "read": { + "permissions": [ + "omics:GetS3AccessPolicy", + "omics:GetSequenceStore", + "omics:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "omics:UpdateSequenceStore", + "omics:GetSequenceStore", + "omics:TagResource", + "omics:UntagResource", + "omics:ListTagsForResource", + "omics:GetS3AccessPolicy", + "omics:DeleteS3AccessPolicy", + "omics:PutS3AccessPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/SequenceStoreId" + ], + "properties": { + "AccessLogLocation": { + "description": "Location of the access logs.", + "pattern": "^$|^s3://([a-z0-9][a-z0-9-.]{1,61}[a-z0-9])/?((.{1,800})/)?$", + "type": "string" + }, + "Arn": { + "description": "The store's ARN.", + "maxLength": 127, + "minLength": 1, + "pattern": "^arn:.+$", + "type": "string" + }, + "CreationTime": { + "description": "When the store was created.", + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "A description for the store.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "ETagAlgorithmFamily": { + "$ref": "#/definitions/ETagAlgorithmFamily" + }, + "FallbackLocation": { + "description": "An S3 location that is used to store files that have failed a direct upload.", + "minLength": 0, + "pattern": "^$|^s3://([a-z0-9][a-z0-9-.]{1,61}[a-z0-9])/?((.{1,1024})/)?$", + "type": "string" + }, + "Name": { + "description": "A name for the store.", + "maxLength": 127, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "PropagatedSetLevelTags": { + "description": "The tags keys to propagate to the S3 objects associated with read sets in the sequence store.", + "items": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + }, + "S3AccessPointArn": { + "description": "This is ARN of the access point associated with the S3 bucket storing read sets.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^arn:[^:]*:s3:[^:]*:[^:]*:accesspoint/.*$", + "type": "string" + }, + "S3AccessPolicy": { + "description": "The resource policy that controls S3 access on the store", + "type": "object" + }, + "S3Uri": { + "description": "The S3 URI of the sequence store.", + "pattern": "^s3://([a-z0-9][a-z0-9-.]{1,61}[a-z0-9])/(.{1,1024})$", + "type": "string" + }, + "SequenceStoreId": { + "maxLength": 36, + "minLength": 10, + "pattern": "^[0-9]+$", + "type": "string" + }, + "SseConfig": { + "$ref": "#/definitions/SseConfig" + }, + "Status": { + "$ref": "#/definitions/SequenceStoreStatus" + }, + "StatusMessage": { + "description": "The status message of the sequence store.", + "maxLength": 127, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + }, + "UpdateTime": { + "description": "The last-updated time of the sequence store.", + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/S3AccessPointArn", + "/properties/S3Uri", + "/properties/SequenceStoreId", + "/properties/Status", + "/properties/StatusMessage", + "/properties/UpdateTime" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "omics:TagResource", + "omics:ListTagsForResource", + "omics:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Omics::SequenceStore" +} diff --git a/src/schema/aws-omics-variantstore.json b/src/schema/aws-omics-variantstore.json index 7786877b..2dac788a 100644 --- a/src/schema/aws-omics-variantstore.json +++ b/src/schema/aws-omics-variantstore.json @@ -1,189 +1,189 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Reference", - "/properties/SseConfig", - "/properties/Tags" - ], - "definitions": { - "EncryptionType": { - "enum": [ - "KMS" - ], - "type": "string" - }, - "ReferenceItem": { - "additionalProperties": false, - "properties": { - "ReferenceArn": { - "maxLength": 127, - "minLength": 1, - "pattern": "^arn:.+$", - "type": "string" - } - }, - "required": [ - "ReferenceArn" - ], - "type": "object" - }, - "SseConfig": { - "additionalProperties": false, - "properties": { - "KeyArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/EncryptionType" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "StoreStatus": { - "enum": [ - "CREATING", - "UPDATING", - "DELETING", - "ACTIVE", - "FAILED" - ], - "type": "string" - }, - "TagMap": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::Omics::VariantStore Resource Type", - "handlers": { - "create": { - "permissions": [ - "omics:CreateVariantStore", - "omics:TagResource", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:CreateGrant", - "ram:AcceptResourceShareInvitation", - "ram:GetResourceShareInvitations", - "omics:GetVariantStore" - ] - }, - "delete": { - "permissions": [ - "omics:DeleteVariantStore", - "omics:ListVariantStores" - ] - }, - "list": { - "permissions": [ - "omics:ListVariantStores" - ] - }, - "read": { - "permissions": [ - "omics:GetVariantStore" - ] - }, - "update": { - "permissions": [ - "omics:UpdateVariantStore", - "omics:TagResource", - "omics:UntagResource", - "omics:ListTagsForResource", - "omics:GetVariantStore" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "CreationTime": { - "format": "date-time", - "type": "string" - }, - "Description": { - "maxLength": 500, - "minLength": 0, - "type": "string" - }, - "Id": { - "pattern": "^[a-f0-9]{12}$", - "type": "string" - }, - "Name": { - "pattern": "^([a-z]){1}([a-z0-9_]){2,254}", - "type": "string" - }, - "Reference": { - "$ref": "#/definitions/ReferenceItem" - }, - "SseConfig": { - "$ref": "#/definitions/SseConfig" - }, - "Status": { - "$ref": "#/definitions/StoreStatus" - }, - "StatusMessage": { - "maxLength": 1000, - "minLength": 0, - "type": "string" - }, - "StoreArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)$", - "type": "string" - }, - "StoreSizeBytes": { - "type": "number" - }, - "Tags": { - "$ref": "#/definitions/TagMap" - }, - "UpdateTime": { - "format": "date-time", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CreationTime", - "/properties/Id", - "/properties/Status", - "/properties/StatusMessage", - "/properties/StoreArn", - "/properties/StoreSizeBytes", - "/properties/UpdateTime" - ], - "required": [ - "Name", - "Reference" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "omics:TagResource", - "omics:UntagResource", - "omics:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Omics::VariantStore" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Reference", + "/properties/SseConfig", + "/properties/Tags" + ], + "definitions": { + "EncryptionType": { + "enum": [ + "KMS" + ], + "type": "string" + }, + "ReferenceItem": { + "additionalProperties": false, + "properties": { + "ReferenceArn": { + "maxLength": 127, + "minLength": 1, + "pattern": "^arn:.+$", + "type": "string" + } + }, + "required": [ + "ReferenceArn" + ], + "type": "object" + }, + "SseConfig": { + "additionalProperties": false, + "properties": { + "KeyArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/EncryptionType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "StoreStatus": { + "enum": [ + "CREATING", + "UPDATING", + "DELETING", + "ACTIVE", + "FAILED" + ], + "type": "string" + }, + "TagMap": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::Omics::VariantStore Resource Type", + "handlers": { + "create": { + "permissions": [ + "omics:CreateVariantStore", + "omics:TagResource", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:CreateGrant", + "ram:AcceptResourceShareInvitation", + "ram:GetResourceShareInvitations", + "omics:GetVariantStore" + ] + }, + "delete": { + "permissions": [ + "omics:DeleteVariantStore", + "omics:ListVariantStores" + ] + }, + "list": { + "permissions": [ + "omics:ListVariantStores" + ] + }, + "read": { + "permissions": [ + "omics:GetVariantStore" + ] + }, + "update": { + "permissions": [ + "omics:UpdateVariantStore", + "omics:TagResource", + "omics:UntagResource", + "omics:ListTagsForResource", + "omics:GetVariantStore" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "Description": { + "maxLength": 500, + "minLength": 0, + "type": "string" + }, + "Id": { + "pattern": "^[a-f0-9]{12}$", + "type": "string" + }, + "Name": { + "pattern": "^([a-z]){1}([a-z0-9_]){2,254}", + "type": "string" + }, + "Reference": { + "$ref": "#/definitions/ReferenceItem" + }, + "SseConfig": { + "$ref": "#/definitions/SseConfig" + }, + "Status": { + "$ref": "#/definitions/StoreStatus" + }, + "StatusMessage": { + "maxLength": 1000, + "minLength": 0, + "type": "string" + }, + "StoreArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:([^:\n]*):([^:\n]*):([^:\n]*):([0-9]{12}):([^:\n]*)$", + "type": "string" + }, + "StoreSizeBytes": { + "type": "number" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + }, + "UpdateTime": { + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/Id", + "/properties/Status", + "/properties/StatusMessage", + "/properties/StoreArn", + "/properties/StoreSizeBytes", + "/properties/UpdateTime" + ], + "required": [ + "Name", + "Reference" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "omics:TagResource", + "omics:UntagResource", + "omics:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Omics::VariantStore" +} diff --git a/src/schema/aws-omics-workflow.json b/src/schema/aws-omics-workflow.json index 5425f0bf..c105d757 100644 --- a/src/schema/aws-omics-workflow.json +++ b/src/schema/aws-omics-workflow.json @@ -1,226 +1,226 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DefinitionUri", - "/properties/Engine", - "/properties/Main", - "/properties/ParameterTemplate", - "/properties/StorageCapacity", - "/properties/Accelerators" - ], - "definitions": { - "Accelerators": { - "enum": [ - "GPU" - ], - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "TagMap": { - "additionalProperties": false, - "description": "A map of resource tags", - "patternProperties": { - ".+": { - "description": "Resource tag value", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "WorkflowEngine": { - "enum": [ - "WDL", - "NEXTFLOW", - "CWL" - ], - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "WorkflowParameter": { - "additionalProperties": false, - "properties": { - "Description": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", - "type": "string" - }, - "Optional": { - "type": "boolean" - } - }, - "type": "object" - }, - "WorkflowParameterTemplate": { - "additionalProperties": false, - "maxProperties": 1000, - "minProperties": 1, - "patternProperties": { - "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$": { - "$ref": "#/definitions/WorkflowParameter" - } - }, - "type": "object" - }, - "WorkflowStatus": { - "enum": [ - "CREATING", - "ACTIVE", - "UPDATING", - "DELETED", - "FAILED" - ], - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "WorkflowType": { - "enum": [ - "PRIVATE" - ], - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "description": "Definition of AWS::Omics::Workflow Resource Type", - "handlers": { - "create": { - "permissions": [ - "omics:CreateWorkflow", - "omics:GetWorkflow", - "omics:TagResource", - "s3:PutObject", - "s3:GetObject", - "s3:GetObjectAttributes", - "s3:HeadObject", - "s3:GetEncryptionConfiguration", - "kms:Decrypt", - "kms:GenerateDataKey", - "kms:GenerateDataKeyPair", - "kms:GenerateDataKeyPairWithoutPlaintext", - "kms:GenerateDataKeyWithoutPlaintext" - ] - }, - "delete": { - "permissions": [ - "omics:DeleteWorkflow", - "omics:GetWorkflow" - ] - }, - "list": { - "permissions": [ - "omics:ListWorkflows" - ] - }, - "read": { - "permissions": [ - "omics:GetWorkflow" - ] - }, - "update": { - "permissions": [ - "omics:UpdateWorkflow", - "omics:GetWorkflow", - "omics:TagResource", - "omics:ListTagsForResource", - "omics:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Accelerators": { - "$ref": "#/definitions/Accelerators" - }, - "Arn": { - "maxLength": 128, - "minLength": 1, - "pattern": "^arn:.+$", - "type": "string" - }, - "CreationTime": { - "format": "date-time", - "type": "string" - }, - "DefinitionUri": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", - "type": "string" - }, - "Description": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", - "type": "string" - }, - "Engine": { - "$ref": "#/definitions/WorkflowEngine" - }, - "Id": { - "maxLength": 18, - "minLength": 1, - "pattern": "^[0-9]+$", - "type": "string" - }, - "Main": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", - "type": "string" - }, - "Name": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", - "type": "string" - }, - "ParameterTemplate": { - "$ref": "#/definitions/WorkflowParameterTemplate" - }, - "Status": { - "$ref": "#/definitions/WorkflowStatus" - }, - "StorageCapacity": { - "maximum": 100000, - "minimum": 0, - "type": "number" - }, - "Tags": { - "$ref": "#/definitions/TagMap" - }, - "Type": { - "$ref": "#/definitions/WorkflowType" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationTime", - "/properties/Id", - "/properties/Status", - "/properties/Type" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "omics:TagResource", - "omics:UntagResource", - "omics:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Omics::Workflow", - "writeOnlyProperties": [ - "/properties/DefinitionUri" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DefinitionUri", + "/properties/Engine", + "/properties/Main", + "/properties/ParameterTemplate", + "/properties/StorageCapacity", + "/properties/Accelerators" + ], + "definitions": { + "Accelerators": { + "enum": [ + "GPU" + ], + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "TagMap": { + "additionalProperties": false, + "description": "A map of resource tags", + "patternProperties": { + ".+": { + "description": "Resource tag value", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "WorkflowEngine": { + "enum": [ + "WDL", + "NEXTFLOW", + "CWL" + ], + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "WorkflowParameter": { + "additionalProperties": false, + "properties": { + "Description": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "Optional": { + "type": "boolean" + } + }, + "type": "object" + }, + "WorkflowParameterTemplate": { + "additionalProperties": false, + "maxProperties": 1000, + "minProperties": 1, + "patternProperties": { + "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$": { + "$ref": "#/definitions/WorkflowParameter" + } + }, + "type": "object" + }, + "WorkflowStatus": { + "enum": [ + "CREATING", + "ACTIVE", + "UPDATING", + "DELETED", + "FAILED" + ], + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "WorkflowType": { + "enum": [ + "PRIVATE" + ], + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "description": "Definition of AWS::Omics::Workflow Resource Type", + "handlers": { + "create": { + "permissions": [ + "omics:CreateWorkflow", + "omics:GetWorkflow", + "omics:TagResource", + "s3:PutObject", + "s3:GetObject", + "s3:GetObjectAttributes", + "s3:HeadObject", + "s3:GetEncryptionConfiguration", + "kms:Decrypt", + "kms:GenerateDataKey", + "kms:GenerateDataKeyPair", + "kms:GenerateDataKeyPairWithoutPlaintext", + "kms:GenerateDataKeyWithoutPlaintext" + ] + }, + "delete": { + "permissions": [ + "omics:DeleteWorkflow", + "omics:GetWorkflow" + ] + }, + "list": { + "permissions": [ + "omics:ListWorkflows" + ] + }, + "read": { + "permissions": [ + "omics:GetWorkflow" + ] + }, + "update": { + "permissions": [ + "omics:UpdateWorkflow", + "omics:GetWorkflow", + "omics:TagResource", + "omics:ListTagsForResource", + "omics:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Accelerators": { + "$ref": "#/definitions/Accelerators" + }, + "Arn": { + "maxLength": 128, + "minLength": 1, + "pattern": "^arn:.+$", + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "DefinitionUri": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "Description": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "Engine": { + "$ref": "#/definitions/WorkflowEngine" + }, + "Id": { + "maxLength": 18, + "minLength": 1, + "pattern": "^[0-9]+$", + "type": "string" + }, + "Main": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\p{L}||\\p{M}||\\p{Z}||\\p{S}||\\p{N}||\\p{P}]+$", + "type": "string" + }, + "ParameterTemplate": { + "$ref": "#/definitions/WorkflowParameterTemplate" + }, + "Status": { + "$ref": "#/definitions/WorkflowStatus" + }, + "StorageCapacity": { + "maximum": 100000, + "minimum": 0, + "type": "number" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + }, + "Type": { + "$ref": "#/definitions/WorkflowType" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/Id", + "/properties/Status", + "/properties/Type" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "omics:TagResource", + "omics:UntagResource", + "omics:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Omics::Workflow", + "writeOnlyProperties": [ + "/properties/DefinitionUri" + ] +} diff --git a/src/schema/aws-opensearchserverless-accesspolicy.json b/src/schema/aws-opensearchserverless-accesspolicy.json index e27fadb8..e3088c83 100644 --- a/src/schema/aws-opensearchserverless-accesspolicy.json +++ b/src/schema/aws-opensearchserverless-accesspolicy.json @@ -1,99 +1,99 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Type", - "/properties/Name" - ], - "definitions": { - "AccessPolicyType": { - "description": "The possible types for the access policy", - "enum": [ - "data" - ], - "type": "string" - } - }, - "description": "Amazon OpenSearchServerless access policy resource", - "handlers": { - "create": { - "permissions": [ - "aoss:CreateAccessPolicy", - "aoss:GetAccessPolicy" - ] - }, - "delete": { - "permissions": [ - "aoss:DeleteAccessPolicy", - "aoss:GetAccessPolicy" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Type": { - "$ref": "resource-schema.json#/properties/Type" - } - }, - "required": [ - "Type" - ] - }, - "permissions": [ - "aoss:ListAccessPolicies" - ] - }, - "read": { - "permissions": [ - "aoss:GetAccessPolicy" - ] - }, - "update": { - "permissions": [ - "aoss:UpdateAccessPolicy", - "aoss:GetAccessPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Type", - "/properties/Name" - ], - "properties": { - "Description": { - "description": "The description of the policy", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "The name of the policy", - "maxLength": 32, - "minLength": 3, - "pattern": "^[a-z][a-z0-9-]{2,31}$", - "type": "string" - }, - "Policy": { - "description": "The JSON policy document that is the content for the policy", - "maxLength": 20480, - "minLength": 1, - "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u00A1-\\u00FF]+", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/AccessPolicyType" - } - }, - "required": [ - "Type", - "Name", - "Policy" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-opensearchserverless", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::OpenSearchServerless::AccessPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/Name" + ], + "definitions": { + "AccessPolicyType": { + "description": "The possible types for the access policy", + "enum": [ + "data" + ], + "type": "string" + } + }, + "description": "Amazon OpenSearchServerless access policy resource", + "handlers": { + "create": { + "permissions": [ + "aoss:CreateAccessPolicy", + "aoss:GetAccessPolicy" + ] + }, + "delete": { + "permissions": [ + "aoss:DeleteAccessPolicy", + "aoss:GetAccessPolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Type": { + "$ref": "resource-schema.json#/properties/Type" + } + }, + "required": [ + "Type" + ] + }, + "permissions": [ + "aoss:ListAccessPolicies" + ] + }, + "read": { + "permissions": [ + "aoss:GetAccessPolicy" + ] + }, + "update": { + "permissions": [ + "aoss:UpdateAccessPolicy", + "aoss:GetAccessPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Type", + "/properties/Name" + ], + "properties": { + "Description": { + "description": "The description of the policy", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "The name of the policy", + "maxLength": 32, + "minLength": 3, + "pattern": "^[a-z][a-z0-9-]{2,31}$", + "type": "string" + }, + "Policy": { + "description": "The JSON policy document that is the content for the policy", + "maxLength": 20480, + "minLength": 1, + "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u00A1-\\u00FF]+", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/AccessPolicyType" + } + }, + "required": [ + "Type", + "Name", + "Policy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-opensearchserverless", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::OpenSearchServerless::AccessPolicy" +} diff --git a/src/schema/aws-opensearchserverless-collection.json b/src/schema/aws-opensearchserverless-collection.json index f63730d1..bee66331 100644 --- a/src/schema/aws-opensearchserverless-collection.json +++ b/src/schema/aws-opensearchserverless-collection.json @@ -1,161 +1,161 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Name" - ], - [ - "/properties/Arn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Tags", - "/properties/Type" - ], - "definitions": { - "CollectionType": { - "description": "The possible types for the collection", - "enum": [ - "SEARCH", - "TIMESERIES", - "VECTORSEARCH" - ], - "type": "string" - }, - "StandbyReplicas": { - "description": "The possible standby replicas for the collection", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair metadata associated with resource", - "properties": { - "Key": { - "description": "The key in the key-value pair", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value in the key-value pair", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Amazon OpenSearchServerless collection resource", - "handlers": { - "create": { - "permissions": [ - "aoss:CreateCollection", - "aoss:BatchGetCollection", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "aoss:DeleteCollection", - "aoss:BatchGetCollection" - ] - }, - "list": { - "permissions": [ - "aoss:ListCollections" - ] - }, - "read": { - "permissions": [ - "aoss:BatchGetCollection" - ] - }, - "update": { - "permissions": [ - "aoss:UpdateCollection", - "aoss:BatchGetCollection" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the collection.", - "type": "string" - }, - "CollectionEndpoint": { - "description": "The endpoint for the collection.", - "type": "string" - }, - "DashboardEndpoint": { - "description": "The OpenSearch Dashboards endpoint for the collection.", - "type": "string" - }, - "Description": { - "description": "The description of the collection", - "maxLength": 1000, - "type": "string" - }, - "Id": { - "description": "The identifier of the collection", - "maxLength": 40, - "minLength": 3, - "type": "string" - }, - "Name": { - "description": "The name of the collection.\n\nThe name must meet the following criteria:\nUnique to your account and AWS Region\nStarts with a lowercase letter\nContains only lowercase letters a-z, the numbers 0-9 and the hyphen (-)\nContains between 3 and 32 characters\n", - "maxLength": 32, - "minLength": 3, - "pattern": "^[a-z][a-z0-9-]{2,31}$", - "type": "string" - }, - "StandbyReplicas": { - "$ref": "#/definitions/StandbyReplicas" - }, - "Tags": { - "description": "List of tags to be added to the resource", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - }, - "Type": { - "$ref": "#/definitions/CollectionType" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/CollectionEndpoint", - "/properties/DashboardEndpoint" - ], - "required": [ - "Name" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::OpenSearchServerless::Collection", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/Name" + ], + [ + "/properties/Arn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Tags", + "/properties/Type" + ], + "definitions": { + "CollectionType": { + "description": "The possible types for the collection", + "enum": [ + "SEARCH", + "TIMESERIES", + "VECTORSEARCH" + ], + "type": "string" + }, + "StandbyReplicas": { + "description": "The possible standby replicas for the collection", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair metadata associated with resource", + "properties": { + "Key": { + "description": "The key in the key-value pair", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value in the key-value pair", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Amazon OpenSearchServerless collection resource", + "handlers": { + "create": { + "permissions": [ + "aoss:CreateCollection", + "aoss:BatchGetCollection", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "aoss:DeleteCollection", + "aoss:BatchGetCollection" + ] + }, + "list": { + "permissions": [ + "aoss:ListCollections" + ] + }, + "read": { + "permissions": [ + "aoss:BatchGetCollection" + ] + }, + "update": { + "permissions": [ + "aoss:UpdateCollection", + "aoss:BatchGetCollection" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the collection.", + "type": "string" + }, + "CollectionEndpoint": { + "description": "The endpoint for the collection.", + "type": "string" + }, + "DashboardEndpoint": { + "description": "The OpenSearch Dashboards endpoint for the collection.", + "type": "string" + }, + "Description": { + "description": "The description of the collection", + "maxLength": 1000, + "type": "string" + }, + "Id": { + "description": "The identifier of the collection", + "maxLength": 40, + "minLength": 3, + "type": "string" + }, + "Name": { + "description": "The name of the collection.\n\nThe name must meet the following criteria:\nUnique to your account and AWS Region\nStarts with a lowercase letter\nContains only lowercase letters a-z, the numbers 0-9 and the hyphen (-)\nContains between 3 and 32 characters\n", + "maxLength": 32, + "minLength": 3, + "pattern": "^[a-z][a-z0-9-]{2,31}$", + "type": "string" + }, + "StandbyReplicas": { + "$ref": "#/definitions/StandbyReplicas" + }, + "Tags": { + "description": "List of tags to be added to the resource", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + }, + "Type": { + "$ref": "#/definitions/CollectionType" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/CollectionEndpoint", + "/properties/DashboardEndpoint" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::OpenSearchServerless::Collection", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/schema/aws-opensearchserverless-index.json b/src/schema/aws-opensearchserverless-index.json new file mode 100644 index 00000000..781e76e8 --- /dev/null +++ b/src/schema/aws-opensearchserverless-index.json @@ -0,0 +1,226 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IndexName", + "/properties/CollectionEndpoint" + ], + "definitions": { + "IndexSettings": { + "additionalProperties": false, + "properties": { + "Index": { + "additionalProperties": false, + "properties": { + "Knn": { + "description": "Enable/disable k-nearest neighbor search capability", + "type": "boolean" + }, + "KnnAlgoParamEfSearch": { + "description": "Size of the dynamic list for the nearest neighbors", + "type": "integer" + }, + "RefreshInterval": { + "description": "How often to perform refresh operation (e.g. '1s', '5s')", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "PropertyMapping": { + "additionalProperties": false, + "properties": { + "Dimension": { + "description": "Dimension size for vector fields, defines the number of dimensions in the vector", + "type": "integer" + }, + "Index": { + "description": "Whether a field should be indexed", + "type": "boolean" + }, + "Method": { + "additionalProperties": false, + "description": "Configuration for k-NN search method", + "properties": { + "Engine": { + "description": "The k-NN search engine to use", + "enum": [ + "nmslib", + "faiss", + "lucene" + ], + "type": "string" + }, + "Name": { + "description": "The algorithm name for k-NN search", + "enum": [ + "hnsw", + "ivf" + ], + "type": "string" + }, + "Parameters": { + "additionalProperties": false, + "description": "Additional parameters for the k-NN algorithm", + "properties": { + "EfConstruction": { + "description": "The size of the dynamic list used during k-NN graph creation", + "minimum": 1, + "type": "integer" + }, + "M": { + "description": "Number of neighbors to consider during k-NN search", + "maximum": 100, + "minimum": 2, + "type": "integer" + } + }, + "type": "object" + }, + "SpaceType": { + "description": "The distance function used for k-NN search", + "enum": [ + "l2", + "l1", + "linf", + "cosinesimil", + "innerproduct", + "hamming" + ], + "type": "string" + } + }, + "required": [ + "Name", + "Engine" + ], + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "description": "Nested fields within an object or nested field type", + "patternProperties": { + "^[A-Za-z0-9_.-]{1,64}$": { + "$ref": "#/definitions/PropertyMapping", + "description": "Nested field name and its mapping configuration" + } + }, + "type": "object" + }, + "Type": { + "description": "The field data type. Must be a valid OpenSearch field type.", + "enum": [ + "text", + "knn_vector" + ], + "type": "string" + }, + "Value": { + "description": "Default value for the field when not specified in a document", + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + } + }, + "description": "An OpenSearch Serverless index resource", + "handlers": { + "create": { + "permissions": [ + "aoss:APIAccessAll" + ] + }, + "delete": { + "permissions": [ + "aoss:APIAccessAll" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "CollectionEndpoint": { + "$ref": "resource-schema.json#/properties/CollectionEndpoint" + } + }, + "required": [ + "CollectionEndpoint" + ] + }, + "permissions": [ + "aoss:APIAccessAll" + ] + }, + "read": { + "permissions": [ + "aoss:APIAccessAll" + ] + }, + "update": { + "permissions": [ + "aoss:APIAccessAll" + ] + } + }, + "primaryIdentifier": [ + "/properties/IndexName", + "/properties/CollectionEndpoint" + ], + "properties": { + "CollectionEndpoint": { + "description": "The endpoint for the collection.", + "type": "string" + }, + "IndexName": { + "description": "The name of the OpenSearch Serverless index.", + "pattern": "^(?![_-])[a-z][a-z0-9_-]*$", + "type": "string" + }, + "Mappings": { + "additionalProperties": false, + "description": "Index Mappings", + "properties": { + "Properties": { + "additionalProperties": false, + "description": "Defines the fields within the mapping, including their types and configurations", + "patternProperties": { + "^[A-Za-z0-9_.-]{1,64}$": { + "$ref": "#/definitions/PropertyMapping", + "description": "Field name and its mapping configuration" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "Settings": { + "$ref": "#/definitions/IndexSettings", + "description": "Index settings" + }, + "Uuid": { + "description": "The unique identifier for the index.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Uuid" + ], + "required": [ + "CollectionEndpoint", + "IndexName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-opensearchserverless", + "tagging": { + "taggable": false + }, + "typeName": "AWS::OpenSearchServerless::Index", + "writeOnlyProperties": [ + "/properties/Settings/Index/RefreshInterval", + "/properties/Settings/Index/KnnAlgoParamEfSearch" + ] +} diff --git a/src/schema/aws-opensearchserverless-lifecyclepolicy.json b/src/schema/aws-opensearchserverless-lifecyclepolicy.json index 1912a5d0..c8fe60d4 100644 --- a/src/schema/aws-opensearchserverless-lifecyclepolicy.json +++ b/src/schema/aws-opensearchserverless-lifecyclepolicy.json @@ -1,97 +1,97 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Type", - "/properties/Name" - ], - "definitions": { - "LifecyclePolicyType": { - "description": "The type of lifecycle policy", - "enum": [ - "retention" - ], - "type": "string" - } - }, - "description": "Amazon OpenSearchServerless lifecycle policy resource", - "handlers": { - "create": { - "permissions": [ - "aoss:CreateLifecyclePolicy" - ] - }, - "delete": { - "permissions": [ - "aoss:DeleteLifecyclePolicy" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Type": { - "$ref": "resource-schema.json#/properties/Type" - } - }, - "required": [ - "Type" - ] - }, - "permissions": [ - "aoss:ListLifecyclePolicies" - ] - }, - "read": { - "permissions": [ - "aoss:BatchGetLifecyclePolicy" - ] - }, - "update": { - "permissions": [ - "aoss:UpdateLifecyclePolicy", - "aoss:BatchGetLifecyclePolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Type", - "/properties/Name" - ], - "properties": { - "Description": { - "description": "The description of the policy", - "maxLength": 1000, - "minLength": 0, - "type": "string" - }, - "Name": { - "description": "The name of the policy", - "maxLength": 32, - "minLength": 3, - "pattern": "^[a-z][a-z0-9-]+$", - "type": "string" - }, - "Policy": { - "description": "The JSON policy document that is the content for the policy", - "maxLength": 20480, - "minLength": 1, - "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u00A1-\\u00FF]+", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/LifecyclePolicyType" - } - }, - "required": [ - "Type", - "Name", - "Policy" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-opensearchserverless", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::OpenSearchServerless::LifecyclePolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/Name" + ], + "definitions": { + "LifecyclePolicyType": { + "description": "The type of lifecycle policy", + "enum": [ + "retention" + ], + "type": "string" + } + }, + "description": "Amazon OpenSearchServerless lifecycle policy resource", + "handlers": { + "create": { + "permissions": [ + "aoss:CreateLifecyclePolicy" + ] + }, + "delete": { + "permissions": [ + "aoss:DeleteLifecyclePolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Type": { + "$ref": "resource-schema.json#/properties/Type" + } + }, + "required": [ + "Type" + ] + }, + "permissions": [ + "aoss:ListLifecyclePolicies" + ] + }, + "read": { + "permissions": [ + "aoss:BatchGetLifecyclePolicy" + ] + }, + "update": { + "permissions": [ + "aoss:UpdateLifecyclePolicy", + "aoss:BatchGetLifecyclePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Type", + "/properties/Name" + ], + "properties": { + "Description": { + "description": "The description of the policy", + "maxLength": 1000, + "minLength": 0, + "type": "string" + }, + "Name": { + "description": "The name of the policy", + "maxLength": 32, + "minLength": 3, + "pattern": "^[a-z][a-z0-9-]+$", + "type": "string" + }, + "Policy": { + "description": "The JSON policy document that is the content for the policy", + "maxLength": 20480, + "minLength": 1, + "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u00A1-\\u00FF]+", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/LifecyclePolicyType" + } + }, + "required": [ + "Type", + "Name", + "Policy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-opensearchserverless", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::OpenSearchServerless::LifecyclePolicy" +} diff --git a/src/schema/aws-opensearchserverless-securityconfig.json b/src/schema/aws-opensearchserverless-securityconfig.json index 22c86024..283c7303 100644 --- a/src/schema/aws-opensearchserverless-securityconfig.json +++ b/src/schema/aws-opensearchserverless-securityconfig.json @@ -1,139 +1,209 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Name" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Type", - "/properties/Name" - ], - "definitions": { - "SamlConfigOptions": { - "additionalProperties": false, - "description": "Describes saml options in form of key value map", - "properties": { - "GroupAttribute": { - "description": "Group attribute for this saml integration", - "maxLength": 2048, - "minLength": 1, - "pattern": "[\\w+=,.@-]+", - "type": "string" - }, - "Metadata": { - "description": "The XML saml provider metadata document that you want to use", - "maxLength": 51200, - "minLength": 1, - "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u00A1-\\u00FF]+", - "type": "string" - }, - "SessionTimeout": { - "description": "Defines the session timeout in minutes", - "type": "integer" - }, - "UserAttribute": { - "description": "Custom attribute for this saml integration", - "maxLength": 2048, - "minLength": 1, - "pattern": "[\\w+=,.@-]+", - "type": "string" - } - }, - "required": [ - "Metadata" - ], - "type": "object" - }, - "SecurityConfigType": { - "description": "Config type for security config", - "enum": [ - "saml" - ], - "type": "string" - } - }, - "description": "Amazon OpenSearchServerless security config resource", - "handlers": { - "create": { - "permissions": [ - "aoss:CreateSecurityConfig" - ] - }, - "delete": { - "permissions": [ - "aoss:DeleteSecurityConfig" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Type": { - "$ref": "resource-schema.json#/properties/Type" - } - }, - "required": [ - "Type" - ] - }, - "permissions": [ - "aoss:ListSecurityConfigs" - ] - }, - "read": { - "permissions": [ - "aoss:GetSecurityConfig" - ] - }, - "update": { - "permissions": [ - "aoss:GetSecurityConfig", - "aoss:UpdateSecurityConfig" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "description": "Security config description", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "Id": { - "description": "The identifier of the security config", - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "The friendly name of the security config", - "maxLength": 32, - "minLength": 3, - "pattern": "^[a-z][a-z0-9-]{2,31}$", - "type": "string" - }, - "SamlOptions": { - "$ref": "#/definitions/SamlConfigOptions" - }, - "Type": { - "$ref": "#/definitions/SecurityConfigType" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-opensearchserverless", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::OpenSearchServerless::SecurityConfig", - "writeOnlyProperties": [ - "/properties/Name" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/Name", + "/properties/IamIdentityCenterOptions/InstanceArn" + ], + "definitions": { + "IamIdentityCenterApplicationArn": { + "description": "The ARN of the IAM Identity Center application used to integrate with OpenSearch Serverless", + "type": "string" + }, + "IamIdentityCenterConfigOptions": { + "additionalProperties": false, + "description": "Describes IAM Identity Center options for an OpenSearch Serverless security configuration in the form of a key-value map", + "properties": { + "ApplicationArn": { + "$ref": "#/definitions/IamIdentityCenterApplicationArn" + }, + "ApplicationDescription": { + "description": "The description of the IAM Identity Center application used to integrate with OpenSearch Serverless", + "type": "string" + }, + "ApplicationName": { + "description": "The name of the IAM Identity Center application used to integrate with OpenSearch Serverless", + "type": "string" + }, + "GroupAttribute": { + "$ref": "#/definitions/IamIdentityCenterGroupAttribute" + }, + "InstanceArn": { + "$ref": "#/definitions/IamIdentityCenterInstanceArn" + }, + "UserAttribute": { + "$ref": "#/definitions/IamIdentityCenterUserAttribute" + } + }, + "required": [ + "InstanceArn" + ], + "type": "object" + }, + "IamIdentityCenterGroupAttribute": { + "description": "Group attribute for this IAM Identity Center integration", + "type": "string" + }, + "IamIdentityCenterInstanceArn": { + "description": "The ARN of the IAM Identity Center instance used to integrate with OpenSearch Serverless", + "type": "string" + }, + "IamIdentityCenterUserAttribute": { + "description": "User attribute for this IAM Identity Center integration", + "type": "string" + }, + "SamlConfigOptions": { + "additionalProperties": false, + "description": "Describes saml options in form of key value map", + "properties": { + "GroupAttribute": { + "description": "Group attribute for this saml integration", + "maxLength": 2048, + "minLength": 1, + "pattern": "[\\w+=,.@-]+", + "type": "string" + }, + "Metadata": { + "description": "The XML saml provider metadata document that you want to use", + "maxLength": 51200, + "minLength": 1, + "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u00A1-\\u00FF]+", + "type": "string" + }, + "OpenSearchServerlessEntityId": { + "description": "Custom entity id attribute to override default entity id for this saml integration", + "maxLength": 1024, + "minLength": 1, + "pattern": "^aws:opensearch:[0-9]{12}:*", + "type": "string" + }, + "SessionTimeout": { + "description": "Defines the session timeout in minutes", + "type": "integer" + }, + "UserAttribute": { + "description": "Custom attribute for this saml integration", + "maxLength": 2048, + "minLength": 1, + "pattern": "[\\w+=,.@-]+", + "type": "string" + } + }, + "required": [ + "Metadata" + ], + "type": "object" + }, + "SecurityConfigType": { + "description": "Config type for security config", + "enum": [ + "saml", + "iamidentitycenter" + ], + "type": "string" + } + }, + "description": "Amazon OpenSearchServerless security config resource", + "handlers": { + "create": { + "permissions": [ + "aoss:CreateSecurityConfig", + "sso:CreateApplication", + "sso:ListApplications", + "sso:DeleteApplication", + "sso:PutApplicationAssignmentConfiguration", + "sso:PutApplicationAuthenticationMethod", + "sso:PutApplicationGrant" + ] + }, + "delete": { + "permissions": [ + "aoss:DeleteSecurityConfig", + "sso:ListApplicationAssignments", + "sso:DeleteApplicationAssignment", + "sso:DeleteApplication" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Type": { + "$ref": "resource-schema.json#/properties/Type" + } + }, + "required": [ + "Type" + ] + }, + "permissions": [ + "aoss:ListSecurityConfigs" + ] + }, + "read": { + "permissions": [ + "aoss:GetSecurityConfig" + ] + }, + "update": { + "permissions": [ + "aoss:GetSecurityConfig", + "aoss:UpdateSecurityConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "description": "Security config description", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "IamIdentityCenterOptions": { + "$ref": "#/definitions/IamIdentityCenterConfigOptions" + }, + "Id": { + "description": "The identifier of the security config", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "The friendly name of the security config", + "maxLength": 32, + "minLength": 3, + "pattern": "^[a-z][a-z0-9-]{2,31}$", + "type": "string" + }, + "SamlOptions": { + "$ref": "#/definitions/SamlConfigOptions" + }, + "Type": { + "$ref": "#/definitions/SecurityConfigType" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/IamIdentityCenterOptions/ApplicationArn", + "/properties/IamIdentityCenterOptions/ApplicationName", + "/properties/IamIdentityCenterOptions/ApplicationDescription" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-opensearchserverless", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::OpenSearchServerless::SecurityConfig", + "writeOnlyProperties": [ + "/properties/Name" + ] +} diff --git a/src/schema/aws-opensearchserverless-securitypolicy.json b/src/schema/aws-opensearchserverless-securitypolicy.json index 1102107e..2a8fd811 100644 --- a/src/schema/aws-opensearchserverless-securitypolicy.json +++ b/src/schema/aws-opensearchserverless-securitypolicy.json @@ -1,105 +1,105 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Type", - "/properties/Name" - ], - "definitions": { - "SecurityPolicyType": { - "description": "The possible types for the network policy", - "enum": [ - "encryption", - "network" - ], - "type": "string" - } - }, - "description": "Amazon OpenSearchServerless security policy resource", - "handlers": { - "create": { - "permissions": [ - "aoss:GetSecurityPolicy", - "aoss:CreateSecurityPolicy", - "kms:DescribeKey", - "kms:CreateGrant" - ] - }, - "delete": { - "permissions": [ - "aoss:GetSecurityPolicy", - "aoss:DeleteSecurityPolicy" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Type": { - "$ref": "resource-schema.json#/properties/Type" - } - }, - "required": [ - "Type" - ] - }, - "permissions": [ - "aoss:ListSecurityPolicies" - ] - }, - "read": { - "permissions": [ - "aoss:GetSecurityPolicy", - "kms:DescribeKey" - ] - }, - "update": { - "permissions": [ - "aoss:GetSecurityPolicy", - "aoss:UpdateSecurityPolicy", - "kms:DescribeKey", - "kms:CreateGrant" - ] - } - }, - "primaryIdentifier": [ - "/properties/Type", - "/properties/Name" - ], - "properties": { - "Description": { - "description": "The description of the policy", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "The name of the policy", - "maxLength": 32, - "minLength": 3, - "pattern": "^[a-z][a-z0-9-]{2,31}$", - "type": "string" - }, - "Policy": { - "description": "The JSON policy document that is the content for the policy", - "maxLength": 20480, - "minLength": 1, - "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u00A1-\\u00FF]+", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SecurityPolicyType" - } - }, - "required": [ - "Type", - "Name", - "Policy" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-opensearchserverless", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::OpenSearchServerless::SecurityPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/Name" + ], + "definitions": { + "SecurityPolicyType": { + "description": "The possible types for the network policy", + "enum": [ + "encryption", + "network" + ], + "type": "string" + } + }, + "description": "Amazon OpenSearchServerless security policy resource", + "handlers": { + "create": { + "permissions": [ + "aoss:GetSecurityPolicy", + "aoss:CreateSecurityPolicy", + "kms:DescribeKey", + "kms:CreateGrant" + ] + }, + "delete": { + "permissions": [ + "aoss:GetSecurityPolicy", + "aoss:DeleteSecurityPolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Type": { + "$ref": "resource-schema.json#/properties/Type" + } + }, + "required": [ + "Type" + ] + }, + "permissions": [ + "aoss:ListSecurityPolicies" + ] + }, + "read": { + "permissions": [ + "aoss:GetSecurityPolicy", + "kms:DescribeKey" + ] + }, + "update": { + "permissions": [ + "aoss:GetSecurityPolicy", + "aoss:UpdateSecurityPolicy", + "kms:DescribeKey", + "kms:CreateGrant" + ] + } + }, + "primaryIdentifier": [ + "/properties/Type", + "/properties/Name" + ], + "properties": { + "Description": { + "description": "The description of the policy", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "The name of the policy", + "maxLength": 32, + "minLength": 3, + "pattern": "^[a-z][a-z0-9-]{2,31}$", + "type": "string" + }, + "Policy": { + "description": "The JSON policy document that is the content for the policy", + "maxLength": 20480, + "minLength": 1, + "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u00A1-\\u00FF]+", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SecurityPolicyType" + } + }, + "required": [ + "Type", + "Name", + "Policy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-opensearchserverless", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::OpenSearchServerless::SecurityPolicy" +} diff --git a/src/schema/aws-opensearchserverless-vpcendpoint.json b/src/schema/aws-opensearchserverless-vpcendpoint.json index 75c1692a..429663d7 100644 --- a/src/schema/aws-opensearchserverless-vpcendpoint.json +++ b/src/schema/aws-opensearchserverless-vpcendpoint.json @@ -1,159 +1,159 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Name" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/VpcId" - ], - "description": "Amazon OpenSearchServerless vpc endpoint resource", - "handlers": { - "create": { - "permissions": [ - "aoss:BatchGetVpcEndpoint", - "aoss:CreateVpcEndpoint", - "ec2:CreateVpcEndpoint", - "ec2:DeleteVpcEndPoints", - "ec2:DescribeVpcEndpoints", - "ec2:ModifyVpcEndPoint", - "ec2:DescribeVpcs", - "ec2:DescribeSubnets", - "ec2:DescribeSecurityGroups", - "ec2:CreateTags", - "route53:ChangeResourceRecordSets", - "route53:GetChange", - "route53:GetHostedZone", - "route53:ListResourceRecordSets", - "route53:ListHostedZonesByName", - "route53:CreateHostedZone", - "route53:ListHostedZonesByVPC", - "route53:AssociateVPCWithHostedZone" - ] - }, - "delete": { - "permissions": [ - "aoss:BatchGetVpcEndpoint", - "aoss:DeleteVpcEndpoint", - "ec2:DeleteVpcEndPoints", - "ec2:DescribeVpcEndpoints", - "ec2:ModifyVpcEndPoint", - "ec2:DescribeVpcs", - "ec2:DescribeSubnets", - "ec2:DescribeSecurityGroups", - "ec2:CreateTags", - "route53:ChangeResourceRecordSets", - "route53:DeleteHostedZone", - "route53:GetChange", - "route53:GetHostedZone", - "route53:ListResourceRecordSets", - "route53:ListHostedZonesByName", - "route53:ListHostedZonesByVPC", - "route53:AssociateVPCWithHostedZone" - ] - }, - "list": { - "permissions": [ - "aoss:ListVpcEndpoints", - "ec2:DescribeVpcEndpoints" - ] - }, - "read": { - "permissions": [ - "aoss:BatchGetVpcEndpoint", - "ec2:DescribeVpcEndpoints" - ] - }, - "update": { - "permissions": [ - "aoss:BatchGetVpcEndpoint", - "aoss:UpdateVpcEndpoint", - "ec2:CreateVpcEndpoint", - "ec2:DeleteVpcEndPoints", - "ec2:DescribeVpcEndpoints", - "ec2:ModifyVpcEndPoint", - "ec2:DescribeVpcs", - "ec2:DescribeSubnets", - "ec2:DescribeSecurityGroups", - "ec2:CreateTags", - "route53:ChangeResourceRecordSets", - "route53:GetChange", - "route53:GetHostedZone", - "route53:ListResourceRecordSets", - "route53:ListHostedZonesByName", - "route53:CreateHostedZone", - "route53:ListHostedZonesByVPC", - "route53:AssociateVPCWithHostedZone" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "description": "The identifier of the VPC Endpoint", - "maxLength": 255, - "minLength": 1, - "pattern": "^vpce-[0-9a-z]*$", - "type": "string" - }, - "Name": { - "description": "The name of the VPC Endpoint", - "maxLength": 32, - "minLength": 3, - "pattern": "^[a-z][a-z0-9-]{2,31}$", - "type": "string" - }, - "SecurityGroupIds": { - "description": "The ID of one or more security groups to associate with the endpoint network interface", - "insertionOrder": false, - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[\\w+\\-]+$", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "SubnetIds": { - "description": "The ID of one or more subnets in which to create an endpoint network interface", - "insertionOrder": false, - "items": { - "maxLength": 32, - "minLength": 1, - "pattern": "^subnet-([0-9a-f]{8}|[0-9a-f]{17})$", - "type": "string" - }, - "maxItems": 6, - "minItems": 1, - "type": "array" - }, - "VpcId": { - "description": "The ID of the VPC in which the endpoint will be used.", - "maxLength": 255, - "minLength": 1, - "pattern": "^vpc-[0-9a-z]*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Name", - "VpcId", - "SubnetIds" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::OpenSearchServerless::VpcEndpoint" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/VpcId" + ], + "description": "Amazon OpenSearchServerless vpc endpoint resource", + "handlers": { + "create": { + "permissions": [ + "aoss:BatchGetVpcEndpoint", + "aoss:CreateVpcEndpoint", + "ec2:CreateVpcEndpoint", + "ec2:DeleteVpcEndPoints", + "ec2:DescribeVpcEndpoints", + "ec2:ModifyVpcEndPoint", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:CreateTags", + "route53:ChangeResourceRecordSets", + "route53:GetChange", + "route53:GetHostedZone", + "route53:ListResourceRecordSets", + "route53:ListHostedZonesByName", + "route53:CreateHostedZone", + "route53:ListHostedZonesByVPC", + "route53:AssociateVPCWithHostedZone" + ] + }, + "delete": { + "permissions": [ + "aoss:BatchGetVpcEndpoint", + "aoss:DeleteVpcEndpoint", + "ec2:DeleteVpcEndPoints", + "ec2:DescribeVpcEndpoints", + "ec2:ModifyVpcEndPoint", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:CreateTags", + "route53:ChangeResourceRecordSets", + "route53:DeleteHostedZone", + "route53:GetChange", + "route53:GetHostedZone", + "route53:ListResourceRecordSets", + "route53:ListHostedZonesByName", + "route53:ListHostedZonesByVPC", + "route53:AssociateVPCWithHostedZone" + ] + }, + "list": { + "permissions": [ + "aoss:ListVpcEndpoints", + "ec2:DescribeVpcEndpoints" + ] + }, + "read": { + "permissions": [ + "aoss:BatchGetVpcEndpoint", + "ec2:DescribeVpcEndpoints" + ] + }, + "update": { + "permissions": [ + "aoss:BatchGetVpcEndpoint", + "aoss:UpdateVpcEndpoint", + "ec2:CreateVpcEndpoint", + "ec2:DeleteVpcEndPoints", + "ec2:DescribeVpcEndpoints", + "ec2:ModifyVpcEndPoint", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:CreateTags", + "route53:ChangeResourceRecordSets", + "route53:GetChange", + "route53:GetHostedZone", + "route53:ListResourceRecordSets", + "route53:ListHostedZonesByName", + "route53:CreateHostedZone", + "route53:ListHostedZonesByVPC", + "route53:AssociateVPCWithHostedZone" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "The identifier of the VPC Endpoint", + "maxLength": 255, + "minLength": 1, + "pattern": "^vpce-[0-9a-z]*$", + "type": "string" + }, + "Name": { + "description": "The name of the VPC Endpoint", + "maxLength": 32, + "minLength": 3, + "pattern": "^[a-z][a-z0-9-]{2,31}$", + "type": "string" + }, + "SecurityGroupIds": { + "description": "The ID of one or more security groups to associate with the endpoint network interface", + "insertionOrder": false, + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\w+\\-]+$", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "SubnetIds": { + "description": "The ID of one or more subnets in which to create an endpoint network interface", + "insertionOrder": false, + "items": { + "maxLength": 32, + "minLength": 1, + "pattern": "^subnet-([0-9a-f]{8}|[0-9a-f]{17})$", + "type": "string" + }, + "maxItems": 6, + "minItems": 1, + "type": "array" + }, + "VpcId": { + "description": "The ID of the VPC in which the endpoint will be used.", + "maxLength": 255, + "minLength": 1, + "pattern": "^vpc-[0-9a-z]*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name", + "VpcId", + "SubnetIds" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::OpenSearchServerless::VpcEndpoint" +} diff --git a/src/schema/aws-opensearchservice-application.json b/src/schema/aws-opensearchservice-application.json index 8c56f077..f5cb30ee 100644 --- a/src/schema/aws-opensearchservice-application.json +++ b/src/schema/aws-opensearchservice-application.json @@ -1,162 +1,210 @@ { - "typeName" : "AWS::OpenSearchService::Application", - "description" : "Amazon OpenSearchService application resource", - "definitions" : { - "AppConfigType" : { - "type" : "string", - "enum" : [ "opensearchDashboards.dashboardAdmin.users", "opensearchDashboards.dashboardAdmin.groups" ], - "description" : "AppConfig type values." - }, - "Tag" : { - "type" : "object", - "description" : "A key-value pair metadata associated with resource", - "properties" : { - "Key" : { - "type" : "string", - "maxLength" : 128, - "minLength" : 1, - "description" : "The key in the key-value pair" + "additionalIdentifiers": [ + [ + "/properties/Arn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "AppConfig": { + "additionalProperties": false, + "description": "A key-value pair of AppConfig", + "properties": { + "Key": { + "$ref": "#/definitions/AppConfigType", + "description": "The configuration key" }, - "Value" : { - "type" : "string", - "maxLength" : 256, - "minLength" : 0, - "description" : "The value in the key-value pair" + "Value": { + "description": "The configuration value.", + "maxLength": 256, + "minLength": 0, + "type": "string" } }, - "required" : [ "Key", "Value" ], - "additionalProperties" : false + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "AppConfigType": { + "description": "AppConfig type values.", + "enum": [ + "opensearchDashboards.dashboardAdmin.users", + "opensearchDashboards.dashboardAdmin.groups" + ], + "type": "string" }, - "AppConfig" : { - "type" : "object", - "description" : "A key-value pair of AppConfig", - "properties" : { - "Key" : { - "$ref" : "#/definitions/AppConfigType", - "description" : "The configuration key" + "DataSource": { + "additionalProperties": false, + "description": "Datasource arn and description", + "properties": { + "DataSourceArn": { + "$ref": "#/properties/Arn", + "description": "The ARN of the data source." }, - "Value" : { - "type" : "string", - "maxLength" : 256, - "minLength" : 0, - "description" : "The configuration value." + "DataSourceDescription": { + "description": "Description of the data source.", + "type": "string" } }, - "required" : [ "Key", "Value" ], - "additionalProperties" : false + "required": [ + "DataSourceArn" + ], + "type": "object" }, - "DataSource" : { - "type" : "object", - "description" : "Datasource arn and description", - "properties" : { - "DataSourceArn" : { - "$ref" : "#/properties/Arn", - "description" : "The ARN of the data source." + "Tag": { + "additionalProperties": false, + "description": "A key-value pair metadata associated with resource", + "properties": { + "Key": { + "description": "The key in the key-value pair", + "maxLength": 128, + "minLength": 1, + "type": "string" }, - "DataSourceDescription" : { - "type" : "string", - "description" : "Description of the data source." + "Value": { + "description": "The value in the key-value pair", + "maxLength": 256, + "minLength": 0, + "type": "string" } }, - "required" : [ "DataSourceArn" ], - "additionalProperties" : false + "required": [ + "Key", + "Value" + ], + "type": "object" } }, - "properties" : { - "IamIdentityCenterOptions" : { - "type" : "object", - "description" : "Options for configuring IAM Identity Center", - "properties" : { - "Enabled" : { - "type" : "boolean", - "description" : "Whether IAM Identity Center is enabled." - }, - "IamIdentityCenterInstanceArn" : { - "$ref" : "#/properties/Arn", - "description" : "The ARN of the IAM Identity Center instance." - }, - "IamRoleForIdentityCenterApplicationArn" : { - "type" : "string", - "description" : "The ARN of the IAM role for Identity Center application." - } - }, - "additionalProperties" : false - }, - "Arn" : { - "type" : "string", - "description" : "Amazon Resource Name (ARN) format." + "description": "Amazon OpenSearchService application resource", + "handlers": { + "create": { + "permissions": [ + "es:CreateApplication", + "es:GetApplication", + "es:AddTags", + "es:ListTags", + "iam:CreateServiceLinkedRole" + ] }, - "Id" : { - "type" : "string", - "maxLength" : 40, - "minLength" : 3, - "description" : "The identifier of the application." + "delete": { + "permissions": [ + "es:GetApplication", + "es:DeleteApplication" + ] }, - "Name" : { - "type" : "string", - "pattern" : "[a-z][a-z0-9\\-]+", - "minLength" : 3, - "maxLength" : 40, - "description" : "The name of the application." + "list": { + "permissions": [ + "es:ListApplications" + ] }, - "Endpoint" : { - "type" : "string", - "description" : "The endpoint for the application." + "read": { + "permissions": [ + "es:GetApplication", + "es:ListTags" + ] }, - "AppConfigs" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/AppConfig" + "update": { + "permissions": [ + "es:UpdateApplication", + "es:GetApplication", + "es:AddTags", + "es:RemoveTags", + "es:ListTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "AppConfigs": { + "description": "List of application configurations.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AppConfig" }, - "description" : "List of application configurations.", - "insertionOrder" : false + "type": "array" }, - "DataSources" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/DataSource" - }, - "description" : "List of data sources.", - "insertionOrder" : false + "Arn": { + "description": "Amazon Resource Name (ARN) format.", + "type": "string" }, - "Tags" : { - "description" : "An arbitrary set of tags (key-value pairs) for this application.", - "items" : { - "$ref" : "#/definitions/Tag" + "DataSources": { + "description": "List of data sources.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DataSource" }, - "type" : "array", - "uniqueItems" : true - } - }, - "required" : [ "Name" ], - "readOnlyProperties" : [ "/properties/Id", "/properties/Arn" ], - "createOnlyProperties" : [ "/properties/Name" ], - "primaryIdentifier" : [ "/properties/Name" ], - "additionalIdentifiers" : [ [ "/properties/Arn" ] ], - "handlers" : { - "create" : { - "permissions" : [ "es:CreateApplication", "es:GetApplication", "es:AddTags", "es:ListTags", "iam:CreateServiceLinkedRole" ] + "type": "array" }, - "read" : { - "permissions" : [ "es:GetApplication", "es:ListTags" ] + "Endpoint": { + "description": "The endpoint for the application.", + "type": "string" }, - "update" : { - "permissions" : [ "es:UpdateApplication", "es:GetApplication", "es:AddTags", "es:RemoveTags", "es:ListTags" ] + "IamIdentityCenterOptions": { + "additionalProperties": false, + "description": "Options for configuring IAM Identity Center", + "properties": { + "Enabled": { + "description": "Whether IAM Identity Center is enabled.", + "type": "boolean" + }, + "IamIdentityCenterInstanceArn": { + "$ref": "#/properties/Arn", + "description": "The ARN of the IAM Identity Center instance." + }, + "IamRoleForIdentityCenterApplicationArn": { + "description": "The ARN of the IAM role for Identity Center application.", + "type": "string" + } + }, + "type": "object" }, - "delete" : { - "permissions" : [ "es:GetApplication", "es:DeleteApplication" ] + "Id": { + "description": "The identifier of the application.", + "maxLength": 40, + "minLength": 3, + "type": "string" }, - "list" : { - "permissions" : [ "es:ListApplications" ] + "Name": { + "description": "The name of the application.", + "maxLength": 40, + "minLength": 3, + "pattern": "[a-z][a-z0-9\\-]+", + "type": "string" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this application.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true } }, - "tagging" : { - "taggable" : true, - "tagOnCreate" : true, - "tagUpdatable" : true, - "cloudFormationSystemTags" : true, - "tagProperty" : "/properties/Tags", - "permissions" : [ "es:AddTags", "es:RemoveTags", "es:ListTags" ] + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "es:AddTags", + "es:RemoveTags", + "es:ListTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true }, - "additionalProperties" : false -} \ No newline at end of file + "typeName": "AWS::OpenSearchService::Application" +} diff --git a/src/schema/aws-opensearchservice-domain.json b/src/schema/aws-opensearchservice-domain.json index bff3f536..eb7d43af 100644 --- a/src/schema/aws-opensearchservice-domain.json +++ b/src/schema/aws-opensearchservice-domain.json @@ -1,613 +1,649 @@ -{ - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/EncryptionAtRestOptions/properties", - "/properties/AdvancedSecurityOptions/properties/Enabled" - ], - "createOnlyProperties": [ - "/properties/DomainName" - ], - "definitions": { - "AdvancedSecurityOptionsInput": { - "additionalProperties": false, - "properties": { - "AnonymousAuthDisableDate": { - "type": "string" - }, - "AnonymousAuthEnabled": { - "type": "boolean" - }, - "Enabled": { - "type": "boolean" - }, - "InternalUserDatabaseEnabled": { - "type": "boolean" - }, - "JWTOptions": { - "$ref": "#/definitions/JWTOptions" - }, - "MasterUserOptions": { - "$ref": "#/definitions/MasterUserOptions" - }, - "SAMLOptions": { - "$ref": "#/definitions/SAMLOptions" - } - }, - "type": "object" - }, - "ClusterConfig": { - "additionalProperties": false, - "properties": { - "ColdStorageOptions": { - "$ref": "#/definitions/ColdStorageOptions" - }, - "DedicatedMasterCount": { - "type": "integer" - }, - "DedicatedMasterEnabled": { - "type": "boolean" - }, - "DedicatedMasterType": { - "type": "string" - }, - "InstanceCount": { - "type": "integer" - }, - "InstanceType": { - "type": "string" - }, - "MultiAZWithStandbyEnabled": { - "type": "boolean" - }, - "WarmCount": { - "type": "integer" - }, - "WarmEnabled": { - "type": "boolean" - }, - "WarmType": { - "type": "string" - }, - "ZoneAwarenessConfig": { - "$ref": "#/definitions/ZoneAwarenessConfig" - }, - "ZoneAwarenessEnabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "CognitoOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "IdentityPoolId": { - "type": "string" - }, - "RoleArn": { - "type": "string" - }, - "UserPoolId": { - "type": "string" - } - }, - "type": "object" - }, - "ColdStorageOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "DomainEndpointOptions": { - "additionalProperties": false, - "properties": { - "CustomEndpoint": { - "type": "string" - }, - "CustomEndpointCertificateArn": { - "type": "string" - }, - "CustomEndpointEnabled": { - "type": "boolean" - }, - "EnforceHTTPS": { - "type": "boolean" - }, - "TLSSecurityPolicy": { - "type": "string" - } - }, - "type": "object" - }, - "EBSOptions": { - "additionalProperties": false, - "properties": { - "EBSEnabled": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "Throughput": { - "type": "integer" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "EncryptionAtRestOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "KmsKeyId": { - "type": "string" - } - }, - "type": "object" - }, - "IdentityCenterOptions": { - "additionalProperties": false, - "description": "Options for configuring Identity Center", - "properties": { - "EnabledAPIAccess": { - "description": "Whether Identity Center is enabled.", - "type": "boolean" - }, - "IdentityCenterApplicationARN": { - "description": "The ARN of the Identity Center application.", - "type": "string" - }, - "IdentityCenterInstanceARN": { - "description": "The ARN of the Identity Center instance.", - "type": "string" - }, - "IdentityStoreId": { - "description": "The IdentityStoreId for Identity Center options.", - "type": "string" - }, - "RolesKey": { - "$ref": "#/definitions/RolesKeyIdcType", - "description": "The roles key for Identity Center options." - }, - "SubjectKey": { - "$ref": "#/definitions/SubjectKeyIdcType", - "description": "The subject key for Identity Center options." - } - }, - "type": "object" - }, - "Idp": { - "additionalProperties": false, - "properties": { - "EntityId": { - "type": "string" - }, - "MetadataContent": { - "maxLength": 1048576, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "MetadataContent", - "EntityId" - ], - "type": "object" - }, - "JWTOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "PublicKey": { - "type": "string" - }, - "RolesKey": { - "type": "string" - }, - "SubjectKey": { - "type": "string" - } - }, - "type": "object" - }, - "LogPublishingOption": { - "additionalProperties": false, - "properties": { - "CloudWatchLogsLogGroupArn": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "MasterUserOptions": { - "additionalProperties": false, - "properties": { - "MasterUserARN": { - "type": "string" - }, - "MasterUserName": { - "type": "string" - }, - "MasterUserPassword": { - "type": "string" - } - }, - "type": "object" - }, - "NodeToNodeEncryptionOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "OffPeakWindow": { - "additionalProperties": false, - "properties": { - "WindowStartTime": { - "$ref": "#/definitions/WindowStartTime" - } - }, - "type": "object" - }, - "OffPeakWindowOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "OffPeakWindow": { - "$ref": "#/definitions/OffPeakWindow" - } - }, - "type": "object" - }, - "RolesKeyIdcType": { - "description": "Roles Key Idc type values.", - "enum": [ - "GroupName", - "GroupId" - ], - "type": "string" - }, - "SAMLOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "Idp": { - "$ref": "#/definitions/Idp" - }, - "MasterBackendRole": { - "type": "string" - }, - "MasterUserName": { - "type": "string" - }, - "RolesKey": { - "type": "string" - }, - "SessionTimeoutMinutes": { - "type": "integer" - }, - "SubjectKey": { - "type": "string" - } - }, - "type": "object" - }, - "ServiceSoftwareOptions": { - "additionalProperties": false, - "properties": { - "AutomatedUpdateDate": { - "type": "string" - }, - "Cancellable": { - "type": "boolean" - }, - "CurrentVersion": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "NewVersion": { - "type": "string" - }, - "OptionalDeployment": { - "type": "boolean" - }, - "UpdateAvailable": { - "type": "boolean" - }, - "UpdateStatus": { - "type": "string" - } - }, - "type": "object" - }, - "SnapshotOptions": { - "additionalProperties": false, - "properties": { - "AutomatedSnapshotStartHour": { - "type": "integer" - } - }, - "type": "object" - }, - "SoftwareUpdateOptions": { - "additionalProperties": false, - "properties": { - "AutoSoftwareUpdateEnabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "SubjectKeyIdcType": { - "description": "Subject Key Idc type values.", - "enum": [ - "UserName", - "UserId", - "Email" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The value of the tag.", - "maxLength": 128, - "minLength": 0, - "type": "string" - }, - "Value": { - "description": "The key of the tag.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "VPCOptions": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "WindowStartTime": { - "additionalProperties": false, - "properties": { - "Hours": { - "maximum": 23, - "minimum": 0, - "type": "integer" - }, - "Minutes": { - "maximum": 59, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "Hours", - "Minutes" - ], - "type": "object" - }, - "ZoneAwarenessConfig": { - "additionalProperties": false, - "properties": { - "AvailabilityZoneCount": { - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "An example resource schema demonstrating some basic constructs and validation rules.", - "handlers": { - "create": { - "permissions": [ - "es:CreateDomain", - "es:DescribeDomain", - "es:AddTags", - "es:ListTags" - ] - }, - "delete": { - "permissions": [ - "es:DeleteDomain", - "es:DescribeDomain" - ] - }, - "read": { - "permissions": [ - "es:DescribeDomain", - "es:ListTags" - ] - }, - "update": { - "permissions": [ - "es:UpdateDomain", - "es:UpgradeDomain", - "es:DescribeDomain", - "es:AddTags", - "es:RemoveTags", - "es:ListTags", - "es:DescribeDomainChangeProgress" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/DomainName" - ], - "properties": { - "AccessPolicies": { - "type": "object" - }, - "AdvancedOptions": { - "additionalProperties": false, - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "AdvancedSecurityOptions": { - "$ref": "#/definitions/AdvancedSecurityOptionsInput" - }, - "Arn": { - "type": "string" - }, - "ClusterConfig": { - "$ref": "#/definitions/ClusterConfig" - }, - "CognitoOptions": { - "$ref": "#/definitions/CognitoOptions" - }, - "DomainArn": { - "type": "string" - }, - "DomainEndpoint": { - "type": "string" - }, - "DomainEndpointOptions": { - "$ref": "#/definitions/DomainEndpointOptions" - }, - "DomainEndpointV2": { - "type": "string" - }, - "DomainEndpoints": { - "additionalProperties": false, - "patternProperties": { - "^.*$": { - "type": "string" - } - }, - "type": "object" - }, - "DomainName": { - "type": "string" - }, - "EBSOptions": { - "$ref": "#/definitions/EBSOptions" - }, - "EncryptionAtRestOptions": { - "$ref": "#/definitions/EncryptionAtRestOptions" - }, - "EngineVersion": { - "type": "string" - }, - "IPAddressType": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "IdentityCenterOptions": { - "$ref": "#/definitions/IdentityCenterOptions" - }, - "LogPublishingOptions": { - "additionalProperties": false, - "patternProperties": { - "[a-zA-Z0-9]+": { - "$ref": "#/definitions/LogPublishingOption" - } - }, - "type": "object" - }, - "NodeToNodeEncryptionOptions": { - "$ref": "#/definitions/NodeToNodeEncryptionOptions" - }, - "OffPeakWindowOptions": { - "$ref": "#/definitions/OffPeakWindowOptions" - }, - "ServiceSoftwareOptions": { - "$ref": "#/definitions/ServiceSoftwareOptions" - }, - "SkipShardMigrationWait": { - "type": "boolean" - }, - "SnapshotOptions": { - "$ref": "#/definitions/SnapshotOptions" - }, - "SoftwareUpdateOptions": { - "$ref": "#/definitions/SoftwareUpdateOptions" - }, - "Tags": { - "description": "An arbitrary set of tags (key-value pairs) for this Domain.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "VPCOptions": { - "$ref": "#/definitions/VPCOptions" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/DomainArn", - "/properties/DomainEndpoint", - "/properties/DomainEndpointV2", - "/properties/DomainEndpoints", - "/properties/ServiceSoftwareOptions", - "/properties/AdvancedSecurityOptions/AnonymousAuthDisableDate", - "/properties/IdentityCenterOptions/IdentityCenterApplicationARN", - "/properties/IdentityCenterOptions/IdentityStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::OpenSearchService::Domain", - "writeOnlyProperties": [ - "/properties/AdvancedSecurityOptions/MasterUserOptions", - "/properties/AdvancedSecurityOptions/SAMLOptions/MasterUserName", - "/properties/AdvancedSecurityOptions/SAMLOptions/MasterBackendRole", - "/properties/AdvancedSecurityOptions/JWTOptions/PublicKey" - ] -} +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/EncryptionAtRestOptions/properties", + "/properties/AdvancedSecurityOptions/properties/Enabled" + ], + "createOnlyProperties": [ + "/properties/DomainName" + ], + "definitions": { + "AdvancedSecurityOptionsInput": { + "additionalProperties": false, + "properties": { + "AnonymousAuthDisableDate": { + "type": "string" + }, + "AnonymousAuthEnabled": { + "type": "boolean" + }, + "Enabled": { + "type": "boolean" + }, + "InternalUserDatabaseEnabled": { + "type": "boolean" + }, + "JWTOptions": { + "$ref": "#/definitions/JWTOptions" + }, + "MasterUserOptions": { + "$ref": "#/definitions/MasterUserOptions" + }, + "SAMLOptions": { + "$ref": "#/definitions/SAMLOptions" + } + }, + "type": "object" + }, + "ClusterConfig": { + "additionalProperties": false, + "properties": { + "ColdStorageOptions": { + "$ref": "#/definitions/ColdStorageOptions" + }, + "DedicatedMasterCount": { + "type": "integer" + }, + "DedicatedMasterEnabled": { + "type": "boolean" + }, + "DedicatedMasterType": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceType": { + "type": "string" + }, + "MultiAZWithStandbyEnabled": { + "type": "boolean" + }, + "NodeOptions": { + "items": { + "$ref": "#/definitions/NodeOption" + }, + "type": "array" + }, + "WarmCount": { + "type": "integer" + }, + "WarmEnabled": { + "type": "boolean" + }, + "WarmType": { + "type": "string" + }, + "ZoneAwarenessConfig": { + "$ref": "#/definitions/ZoneAwarenessConfig" + }, + "ZoneAwarenessEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "CognitoOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "IdentityPoolId": { + "type": "string" + }, + "RoleArn": { + "type": "string" + }, + "UserPoolId": { + "type": "string" + } + }, + "type": "object" + }, + "ColdStorageOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "DomainEndpointOptions": { + "additionalProperties": false, + "properties": { + "CustomEndpoint": { + "type": "string" + }, + "CustomEndpointCertificateArn": { + "type": "string" + }, + "CustomEndpointEnabled": { + "type": "boolean" + }, + "EnforceHTTPS": { + "type": "boolean" + }, + "TLSSecurityPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "EBSOptions": { + "additionalProperties": false, + "properties": { + "EBSEnabled": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "Throughput": { + "type": "integer" + }, + "VolumeSize": { + "type": "integer" + }, + "VolumeType": { + "type": "string" + } + }, + "type": "object" + }, + "EncryptionAtRestOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "KmsKeyId": { + "type": "string" + } + }, + "type": "object" + }, + "IdentityCenterOptions": { + "additionalProperties": false, + "description": "Options for configuring Identity Center", + "properties": { + "EnabledAPIAccess": { + "description": "Whether Identity Center is enabled.", + "type": "boolean" + }, + "IdentityCenterApplicationARN": { + "description": "The ARN of the Identity Center application.", + "type": "string" + }, + "IdentityCenterInstanceARN": { + "description": "The ARN of the Identity Center instance.", + "type": "string" + }, + "IdentityStoreId": { + "description": "The IdentityStoreId for Identity Center options.", + "type": "string" + }, + "RolesKey": { + "$ref": "#/definitions/RolesKeyIdcType", + "description": "The roles key for Identity Center options." + }, + "SubjectKey": { + "$ref": "#/definitions/SubjectKeyIdcType", + "description": "The subject key for Identity Center options." + } + }, + "type": "object" + }, + "Idp": { + "additionalProperties": false, + "properties": { + "EntityId": { + "type": "string" + }, + "MetadataContent": { + "maxLength": 1048576, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "MetadataContent", + "EntityId" + ], + "type": "object" + }, + "JWTOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "PublicKey": { + "type": "string" + }, + "RolesKey": { + "type": "string" + }, + "SubjectKey": { + "type": "string" + } + }, + "type": "object" + }, + "LogPublishingOption": { + "additionalProperties": false, + "properties": { + "CloudWatchLogsLogGroupArn": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "MasterUserOptions": { + "additionalProperties": false, + "properties": { + "MasterUserARN": { + "type": "string" + }, + "MasterUserName": { + "type": "string" + }, + "MasterUserPassword": { + "type": "string" + } + }, + "type": "object" + }, + "NodeConfig": { + "additionalProperties": false, + "properties": { + "Count": { + "type": "integer" + }, + "Enabled": { + "type": "boolean" + }, + "Type": { + "type": "string" + } + }, + "type": "object" + }, + "NodeOption": { + "additionalProperties": false, + "properties": { + "NodeConfig": { + "$ref": "#/definitions/NodeConfig" + }, + "NodeType": { + "enum": [ + "coordinator" + ], + "type": "string" + } + }, + "type": "object" + }, + "NodeToNodeEncryptionOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "OffPeakWindow": { + "additionalProperties": false, + "properties": { + "WindowStartTime": { + "$ref": "#/definitions/WindowStartTime" + } + }, + "type": "object" + }, + "OffPeakWindowOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OffPeakWindow": { + "$ref": "#/definitions/OffPeakWindow" + } + }, + "type": "object" + }, + "RolesKeyIdcType": { + "description": "Roles Key Idc type values.", + "enum": [ + "GroupName", + "GroupId" + ], + "type": "string" + }, + "SAMLOptions": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "Idp": { + "$ref": "#/definitions/Idp" + }, + "MasterBackendRole": { + "type": "string" + }, + "MasterUserName": { + "type": "string" + }, + "RolesKey": { + "type": "string" + }, + "SessionTimeoutMinutes": { + "type": "integer" + }, + "SubjectKey": { + "type": "string" + } + }, + "type": "object" + }, + "ServiceSoftwareOptions": { + "additionalProperties": false, + "properties": { + "AutomatedUpdateDate": { + "type": "string" + }, + "Cancellable": { + "type": "boolean" + }, + "CurrentVersion": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "NewVersion": { + "type": "string" + }, + "OptionalDeployment": { + "type": "boolean" + }, + "UpdateAvailable": { + "type": "boolean" + }, + "UpdateStatus": { + "type": "string" + } + }, + "type": "object" + }, + "SnapshotOptions": { + "additionalProperties": false, + "properties": { + "AutomatedSnapshotStartHour": { + "type": "integer" + } + }, + "type": "object" + }, + "SoftwareUpdateOptions": { + "additionalProperties": false, + "properties": { + "AutoSoftwareUpdateEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "SubjectKeyIdcType": { + "description": "Subject Key Idc type values.", + "enum": [ + "UserName", + "UserId", + "Email" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The value of the tag.", + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "Value": { + "description": "The key of the tag.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VPCOptions": { + "additionalProperties": false, + "properties": { + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "WindowStartTime": { + "additionalProperties": false, + "properties": { + "Hours": { + "maximum": 23, + "minimum": 0, + "type": "integer" + }, + "Minutes": { + "maximum": 59, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "Hours", + "Minutes" + ], + "type": "object" + }, + "ZoneAwarenessConfig": { + "additionalProperties": false, + "properties": { + "AvailabilityZoneCount": { + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "handlers": { + "create": { + "permissions": [ + "es:CreateDomain", + "es:DescribeDomain", + "es:AddTags", + "es:ListTags" + ] + }, + "delete": { + "permissions": [ + "es:DeleteDomain", + "es:DescribeDomain" + ] + }, + "read": { + "permissions": [ + "es:DescribeDomain", + "es:ListTags" + ] + }, + "update": { + "permissions": [ + "es:UpdateDomain", + "es:UpgradeDomain", + "es:DescribeDomain", + "es:AddTags", + "es:RemoveTags", + "es:ListTags", + "es:DescribeDomainChangeProgress" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/DomainName" + ], + "properties": { + "AccessPolicies": { + "type": "object" + }, + "AdvancedOptions": { + "additionalProperties": false, + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "AdvancedSecurityOptions": { + "$ref": "#/definitions/AdvancedSecurityOptionsInput" + }, + "Arn": { + "type": "string" + }, + "ClusterConfig": { + "$ref": "#/definitions/ClusterConfig" + }, + "CognitoOptions": { + "$ref": "#/definitions/CognitoOptions" + }, + "DomainArn": { + "type": "string" + }, + "DomainEndpoint": { + "type": "string" + }, + "DomainEndpointOptions": { + "$ref": "#/definitions/DomainEndpointOptions" + }, + "DomainEndpointV2": { + "type": "string" + }, + "DomainEndpoints": { + "additionalProperties": false, + "patternProperties": { + "^.*$": { + "type": "string" + } + }, + "type": "object" + }, + "DomainName": { + "type": "string" + }, + "EBSOptions": { + "$ref": "#/definitions/EBSOptions" + }, + "EncryptionAtRestOptions": { + "$ref": "#/definitions/EncryptionAtRestOptions" + }, + "EngineVersion": { + "type": "string" + }, + "IPAddressType": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IdentityCenterOptions": { + "$ref": "#/definitions/IdentityCenterOptions" + }, + "LogPublishingOptions": { + "additionalProperties": false, + "patternProperties": { + "[a-zA-Z0-9]+": { + "$ref": "#/definitions/LogPublishingOption" + } + }, + "type": "object" + }, + "NodeToNodeEncryptionOptions": { + "$ref": "#/definitions/NodeToNodeEncryptionOptions" + }, + "OffPeakWindowOptions": { + "$ref": "#/definitions/OffPeakWindowOptions" + }, + "ServiceSoftwareOptions": { + "$ref": "#/definitions/ServiceSoftwareOptions" + }, + "SkipShardMigrationWait": { + "type": "boolean" + }, + "SnapshotOptions": { + "$ref": "#/definitions/SnapshotOptions" + }, + "SoftwareUpdateOptions": { + "$ref": "#/definitions/SoftwareUpdateOptions" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this Domain.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VPCOptions": { + "$ref": "#/definitions/VPCOptions" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/DomainArn", + "/properties/DomainEndpoint", + "/properties/DomainEndpointV2", + "/properties/DomainEndpoints", + "/properties/ServiceSoftwareOptions", + "/properties/AdvancedSecurityOptions/AnonymousAuthDisableDate", + "/properties/IdentityCenterOptions/IdentityCenterApplicationARN", + "/properties/IdentityCenterOptions/IdentityStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "typeName": "AWS::OpenSearchService::Domain", + "writeOnlyProperties": [ + "/properties/AdvancedSecurityOptions/MasterUserOptions", + "/properties/AdvancedSecurityOptions/SAMLOptions/MasterUserName", + "/properties/AdvancedSecurityOptions/SAMLOptions/MasterBackendRole", + "/properties/AdvancedSecurityOptions/JWTOptions/PublicKey" + ] +} diff --git a/src/schema/aws-opsworks-app.json b/src/schema/aws-opsworks-app.json index 55f65533..a5c0a003 100644 --- a/src/schema/aws-opsworks-app.json +++ b/src/schema/aws-opsworks-app.json @@ -1,153 +1,153 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Shortname", - "/properties/StackId" - ], - "definitions": { - "DataSource": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - }, - "DatabaseName": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "type": "object" - }, - "EnvironmentVariable": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Secure": { - "type": "boolean" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Source": { - "additionalProperties": false, - "properties": { - "Password": { - "type": "string" - }, - "Revision": { - "type": "string" - }, - "SshKey": { - "type": "string" - }, - "Type": { - "type": "string" - }, - "Url": { - "type": "string" - }, - "Username": { - "type": "string" - } - }, - "type": "object" - }, - "SslConfiguration": { - "additionalProperties": false, - "properties": { - "Certificate": { - "type": "string" - }, - "Chain": { - "type": "string" - }, - "PrivateKey": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::OpsWorks::App", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AppSource": { - "$ref": "#/definitions/Source" - }, - "Attributes": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "DataSources": { - "items": { - "$ref": "#/definitions/DataSource" - }, - "type": "array", - "uniqueItems": true - }, - "Description": { - "type": "string" - }, - "Domains": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "EnableSsl": { - "type": "boolean" - }, - "Environment": { - "items": { - "$ref": "#/definitions/EnvironmentVariable" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Shortname": { - "type": "string" - }, - "SslConfiguration": { - "$ref": "#/definitions/SslConfiguration" - }, - "StackId": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Type", - "Name", - "StackId" - ], - "typeName": "AWS::OpsWorks::App" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Shortname", + "/properties/StackId" + ], + "definitions": { + "DataSource": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + }, + "DatabaseName": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "type": "object" + }, + "EnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Secure": { + "type": "boolean" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "Source": { + "additionalProperties": false, + "properties": { + "Password": { + "type": "string" + }, + "Revision": { + "type": "string" + }, + "SshKey": { + "type": "string" + }, + "Type": { + "type": "string" + }, + "Url": { + "type": "string" + }, + "Username": { + "type": "string" + } + }, + "type": "object" + }, + "SslConfiguration": { + "additionalProperties": false, + "properties": { + "Certificate": { + "type": "string" + }, + "Chain": { + "type": "string" + }, + "PrivateKey": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::OpsWorks::App", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AppSource": { + "$ref": "#/definitions/Source" + }, + "Attributes": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "DataSources": { + "items": { + "$ref": "#/definitions/DataSource" + }, + "type": "array", + "uniqueItems": true + }, + "Description": { + "type": "string" + }, + "Domains": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "EnableSsl": { + "type": "boolean" + }, + "Environment": { + "items": { + "$ref": "#/definitions/EnvironmentVariable" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Shortname": { + "type": "string" + }, + "SslConfiguration": { + "$ref": "#/definitions/SslConfiguration" + }, + "StackId": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Type", + "Name", + "StackId" + ], + "typeName": "AWS::OpsWorks::App" +} diff --git a/src/schema/aws-opsworks-elasticloadbalancerattachment.json b/src/schema/aws-opsworks-elasticloadbalancerattachment.json index be03e75b..df477416 100644 --- a/src/schema/aws-opsworks-elasticloadbalancerattachment.json +++ b/src/schema/aws-opsworks-elasticloadbalancerattachment.json @@ -1,26 +1,26 @@ -{ - "additionalProperties": false, - "description": "Resource Type definition for AWS::OpsWorks::ElasticLoadBalancerAttachment", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ElasticLoadBalancerName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "LayerId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "LayerId", - "ElasticLoadBalancerName" - ], - "typeName": "AWS::OpsWorks::ElasticLoadBalancerAttachment" -} +{ + "additionalProperties": false, + "description": "Resource Type definition for AWS::OpsWorks::ElasticLoadBalancerAttachment", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ElasticLoadBalancerName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "LayerId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "LayerId", + "ElasticLoadBalancerName" + ], + "typeName": "AWS::OpsWorks::ElasticLoadBalancerAttachment" +} diff --git a/src/schema/aws-opsworks-instance.json b/src/schema/aws-opsworks-instance.json index f2769840..e6ae7267 100644 --- a/src/schema/aws-opsworks-instance.json +++ b/src/schema/aws-opsworks-instance.json @@ -1,231 +1,231 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Tenancy", - "/properties/BlockDeviceMappings", - "/properties/VirtualizationType", - "/properties/TimeBasedAutoScaling", - "/properties/RootDeviceType", - "/properties/AutoScalingType", - "/properties/StackId", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/EbsOptimized" - ], - "definitions": { - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/EbsBlockDevice" - }, - "NoDevice": { - "type": "string" - }, - "VirtualName": { - "type": "string" - } - }, - "type": "object" - }, - "EbsBlockDevice": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "TimeBasedAutoScaling": { - "additionalProperties": false, - "properties": { - "Friday": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "Monday": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "Saturday": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "Sunday": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "Thursday": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "Tuesday": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "Wednesday": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::OpsWorks::Instance", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AgentVersion": { - "type": "string" - }, - "AmiId": { - "type": "string" - }, - "Architecture": { - "type": "string" - }, - "AutoScalingType": { - "type": "string" - }, - "AvailabilityZone": { - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": true - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticIps": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Hostname": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "InstanceType": { - "type": "string" - }, - "LayerIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Os": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateIp": { - "type": "string" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RootDeviceType": { - "type": "string" - }, - "SshKeyName": { - "type": "string" - }, - "StackId": { - "type": "string" - }, - "SubnetId": { - "type": "string" - }, - "Tenancy": { - "type": "string" - }, - "TimeBasedAutoScaling": { - "$ref": "#/definitions/TimeBasedAutoScaling" - }, - "VirtualizationType": { - "type": "string" - }, - "Volumes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PublicIp", - "/properties/PrivateIp", - "/properties/Id" - ], - "required": [ - "LayerIds", - "InstanceType", - "StackId" - ], - "typeName": "AWS::OpsWorks::Instance" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/BlockDeviceMappings", + "/properties/VirtualizationType", + "/properties/TimeBasedAutoScaling", + "/properties/RootDeviceType", + "/properties/AutoScalingType", + "/properties/StackId", + "/properties/AvailabilityZone", + "/properties/SubnetId", + "/properties/EbsOptimized" + ], + "definitions": { + "BlockDeviceMapping": { + "additionalProperties": false, + "properties": { + "DeviceName": { + "type": "string" + }, + "Ebs": { + "$ref": "#/definitions/EbsBlockDevice" + }, + "NoDevice": { + "type": "string" + }, + "VirtualName": { + "type": "string" + } + }, + "type": "object" + }, + "EbsBlockDevice": { + "additionalProperties": false, + "properties": { + "DeleteOnTermination": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "SnapshotId": { + "type": "string" + }, + "VolumeSize": { + "type": "integer" + }, + "VolumeType": { + "type": "string" + } + }, + "type": "object" + }, + "TimeBasedAutoScaling": { + "additionalProperties": false, + "properties": { + "Friday": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "Monday": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "Saturday": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "Sunday": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "Thursday": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "Tuesday": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "Wednesday": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::OpsWorks::Instance", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AgentVersion": { + "type": "string" + }, + "AmiId": { + "type": "string" + }, + "Architecture": { + "type": "string" + }, + "AutoScalingType": { + "type": "string" + }, + "AvailabilityZone": { + "type": "string" + }, + "BlockDeviceMappings": { + "items": { + "$ref": "#/definitions/BlockDeviceMapping" + }, + "type": "array", + "uniqueItems": true + }, + "EbsOptimized": { + "type": "boolean" + }, + "ElasticIps": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Hostname": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "InstallUpdatesOnBoot": { + "type": "boolean" + }, + "InstanceType": { + "type": "string" + }, + "LayerIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Os": { + "type": "string" + }, + "PrivateDnsName": { + "type": "string" + }, + "PrivateIp": { + "type": "string" + }, + "PublicDnsName": { + "type": "string" + }, + "PublicIp": { + "type": "string" + }, + "RootDeviceType": { + "type": "string" + }, + "SshKeyName": { + "type": "string" + }, + "StackId": { + "type": "string" + }, + "SubnetId": { + "type": "string" + }, + "Tenancy": { + "type": "string" + }, + "TimeBasedAutoScaling": { + "$ref": "#/definitions/TimeBasedAutoScaling" + }, + "VirtualizationType": { + "type": "string" + }, + "Volumes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/PublicDnsName", + "/properties/PrivateDnsName", + "/properties/PublicIp", + "/properties/PrivateIp", + "/properties/Id" + ], + "required": [ + "LayerIds", + "InstanceType", + "StackId" + ], + "typeName": "AWS::OpsWorks::Instance" +} diff --git a/src/schema/aws-opsworks-layer.json b/src/schema/aws-opsworks-layer.json index 0bf35605..80f81c44 100644 --- a/src/schema/aws-opsworks-layer.json +++ b/src/schema/aws-opsworks-layer.json @@ -1,253 +1,253 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Type", - "/properties/StackId" - ], - "definitions": { - "AutoScalingThresholds": { - "additionalProperties": false, - "properties": { - "CpuThreshold": { - "type": "number" - }, - "IgnoreMetricsTime": { - "type": "integer" - }, - "InstanceCount": { - "type": "integer" - }, - "LoadThreshold": { - "type": "number" - }, - "MemoryThreshold": { - "type": "number" - }, - "ThresholdsWaitTime": { - "type": "integer" - } - }, - "type": "object" - }, - "LifecycleEventConfiguration": { - "additionalProperties": false, - "properties": { - "ShutdownEventConfiguration": { - "$ref": "#/definitions/ShutdownEventConfiguration" - } - }, - "type": "object" - }, - "LoadBasedAutoScaling": { - "additionalProperties": false, - "properties": { - "DownScaling": { - "$ref": "#/definitions/AutoScalingThresholds" - }, - "Enable": { - "type": "boolean" - }, - "UpScaling": { - "$ref": "#/definitions/AutoScalingThresholds" - } - }, - "type": "object" - }, - "Recipes": { - "additionalProperties": false, - "properties": { - "Configure": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Deploy": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Setup": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Shutdown": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Undeploy": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "ShutdownEventConfiguration": { - "additionalProperties": false, - "properties": { - "DelayUntilElbConnectionsDrained": { - "type": "boolean" - }, - "ExecutionTimeout": { - "type": "integer" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "VolumeConfiguration": { - "additionalProperties": false, - "properties": { - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "MountPoint": { - "type": "string" - }, - "NumberOfDisks": { - "type": "integer" - }, - "RaidLevel": { - "type": "integer" - }, - "Size": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::OpsWorks::Layer", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Attributes": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "AutoAssignElasticIps": { - "type": "boolean" - }, - "AutoAssignPublicIps": { - "type": "boolean" - }, - "CustomInstanceProfileArn": { - "type": "string" - }, - "CustomJson": { - "type": "object" - }, - "CustomRecipes": { - "$ref": "#/definitions/Recipes" - }, - "CustomSecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "EnableAutoHealing": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "LifecycleEventConfiguration": { - "$ref": "#/definitions/LifecycleEventConfiguration" - }, - "LoadBasedAutoScaling": { - "$ref": "#/definitions/LoadBasedAutoScaling" - }, - "Name": { - "type": "string" - }, - "Packages": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Shortname": { - "type": "string" - }, - "StackId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Type": { - "type": "string" - }, - "UseEbsOptimizedInstances": { - "type": "boolean" - }, - "VolumeConfigurations": { - "items": { - "$ref": "#/definitions/VolumeConfiguration" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "EnableAutoHealing", - "Name", - "Type", - "AutoAssignElasticIps", - "Shortname", - "AutoAssignPublicIps", - "StackId" - ], - "typeName": "AWS::OpsWorks::Layer" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/StackId" + ], + "definitions": { + "AutoScalingThresholds": { + "additionalProperties": false, + "properties": { + "CpuThreshold": { + "type": "number" + }, + "IgnoreMetricsTime": { + "type": "integer" + }, + "InstanceCount": { + "type": "integer" + }, + "LoadThreshold": { + "type": "number" + }, + "MemoryThreshold": { + "type": "number" + }, + "ThresholdsWaitTime": { + "type": "integer" + } + }, + "type": "object" + }, + "LifecycleEventConfiguration": { + "additionalProperties": false, + "properties": { + "ShutdownEventConfiguration": { + "$ref": "#/definitions/ShutdownEventConfiguration" + } + }, + "type": "object" + }, + "LoadBasedAutoScaling": { + "additionalProperties": false, + "properties": { + "DownScaling": { + "$ref": "#/definitions/AutoScalingThresholds" + }, + "Enable": { + "type": "boolean" + }, + "UpScaling": { + "$ref": "#/definitions/AutoScalingThresholds" + } + }, + "type": "object" + }, + "Recipes": { + "additionalProperties": false, + "properties": { + "Configure": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Deploy": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Setup": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Shutdown": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Undeploy": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ShutdownEventConfiguration": { + "additionalProperties": false, + "properties": { + "DelayUntilElbConnectionsDrained": { + "type": "boolean" + }, + "ExecutionTimeout": { + "type": "integer" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VolumeConfiguration": { + "additionalProperties": false, + "properties": { + "Encrypted": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "MountPoint": { + "type": "string" + }, + "NumberOfDisks": { + "type": "integer" + }, + "RaidLevel": { + "type": "integer" + }, + "Size": { + "type": "integer" + }, + "VolumeType": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::OpsWorks::Layer", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Attributes": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "AutoAssignElasticIps": { + "type": "boolean" + }, + "AutoAssignPublicIps": { + "type": "boolean" + }, + "CustomInstanceProfileArn": { + "type": "string" + }, + "CustomJson": { + "type": "object" + }, + "CustomRecipes": { + "$ref": "#/definitions/Recipes" + }, + "CustomSecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "EnableAutoHealing": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstallUpdatesOnBoot": { + "type": "boolean" + }, + "LifecycleEventConfiguration": { + "$ref": "#/definitions/LifecycleEventConfiguration" + }, + "LoadBasedAutoScaling": { + "$ref": "#/definitions/LoadBasedAutoScaling" + }, + "Name": { + "type": "string" + }, + "Packages": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Shortname": { + "type": "string" + }, + "StackId": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + }, + "UseEbsOptimizedInstances": { + "type": "boolean" + }, + "VolumeConfigurations": { + "items": { + "$ref": "#/definitions/VolumeConfiguration" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "EnableAutoHealing", + "Name", + "Type", + "AutoAssignElasticIps", + "Shortname", + "AutoAssignPublicIps", + "StackId" + ], + "typeName": "AWS::OpsWorks::Layer" +} diff --git a/src/schema/aws-opsworks-stack.json b/src/schema/aws-opsworks-stack.json index 41da6e51..81100875 100644 --- a/src/schema/aws-opsworks-stack.json +++ b/src/schema/aws-opsworks-stack.json @@ -1,225 +1,225 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServiceRoleArn", - "/properties/CloneAppIds", - "/properties/ClonePermissions", - "/properties/VpcId", - "/properties/SourceStackId" - ], - "definitions": { - "ChefConfiguration": { - "additionalProperties": false, - "properties": { - "BerkshelfVersion": { - "type": "string" - }, - "ManageBerkshelf": { - "type": "boolean" - } - }, - "type": "object" - }, - "ElasticIp": { - "additionalProperties": false, - "properties": { - "Ip": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "Ip" - ], - "type": "object" - }, - "RdsDbInstance": { - "additionalProperties": false, - "properties": { - "DbPassword": { - "type": "string" - }, - "DbUser": { - "type": "string" - }, - "RdsDbInstanceArn": { - "type": "string" - } - }, - "required": [ - "DbPassword", - "DbUser", - "RdsDbInstanceArn" - ], - "type": "object" - }, - "Source": { - "additionalProperties": false, - "properties": { - "Password": { - "type": "string" - }, - "Revision": { - "type": "string" - }, - "SshKey": { - "type": "string" - }, - "Type": { - "type": "string" - }, - "Url": { - "type": "string" - }, - "Username": { - "type": "string" - } - }, - "type": "object" - }, - "StackConfigurationManager": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::OpsWorks::Stack", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AgentVersion": { - "type": "string" - }, - "Attributes": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "ChefConfiguration": { - "$ref": "#/definitions/ChefConfiguration" - }, - "CloneAppIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "ClonePermissions": { - "type": "boolean" - }, - "ConfigurationManager": { - "$ref": "#/definitions/StackConfigurationManager" - }, - "CustomCookbooksSource": { - "$ref": "#/definitions/Source" - }, - "CustomJson": { - "type": "object" - }, - "DefaultAvailabilityZone": { - "type": "string" - }, - "DefaultInstanceProfileArn": { - "type": "string" - }, - "DefaultOs": { - "type": "string" - }, - "DefaultRootDeviceType": { - "type": "string" - }, - "DefaultSshKeyName": { - "type": "string" - }, - "DefaultSubnetId": { - "type": "string" - }, - "EcsClusterArn": { - "type": "string" - }, - "ElasticIps": { - "items": { - "$ref": "#/definitions/ElasticIp" - }, - "type": "array", - "uniqueItems": true - }, - "HostnameTheme": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "RdsDbInstances": { - "items": { - "$ref": "#/definitions/RdsDbInstance" - }, - "type": "array", - "uniqueItems": true - }, - "ServiceRoleArn": { - "type": "string" - }, - "SourceStackId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "UseCustomCookbooks": { - "type": "boolean" - }, - "UseOpsworksSecurityGroups": { - "type": "boolean" - }, - "VpcId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "DefaultInstanceProfileArn", - "ServiceRoleArn", - "Name" - ], - "typeName": "AWS::OpsWorks::Stack" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServiceRoleArn", + "/properties/CloneAppIds", + "/properties/ClonePermissions", + "/properties/VpcId", + "/properties/SourceStackId" + ], + "definitions": { + "ChefConfiguration": { + "additionalProperties": false, + "properties": { + "BerkshelfVersion": { + "type": "string" + }, + "ManageBerkshelf": { + "type": "boolean" + } + }, + "type": "object" + }, + "ElasticIp": { + "additionalProperties": false, + "properties": { + "Ip": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "Ip" + ], + "type": "object" + }, + "RdsDbInstance": { + "additionalProperties": false, + "properties": { + "DbPassword": { + "type": "string" + }, + "DbUser": { + "type": "string" + }, + "RdsDbInstanceArn": { + "type": "string" + } + }, + "required": [ + "DbPassword", + "DbUser", + "RdsDbInstanceArn" + ], + "type": "object" + }, + "Source": { + "additionalProperties": false, + "properties": { + "Password": { + "type": "string" + }, + "Revision": { + "type": "string" + }, + "SshKey": { + "type": "string" + }, + "Type": { + "type": "string" + }, + "Url": { + "type": "string" + }, + "Username": { + "type": "string" + } + }, + "type": "object" + }, + "StackConfigurationManager": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Version": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::OpsWorks::Stack", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AgentVersion": { + "type": "string" + }, + "Attributes": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string" + } + }, + "type": "object" + }, + "ChefConfiguration": { + "$ref": "#/definitions/ChefConfiguration" + }, + "CloneAppIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "ClonePermissions": { + "type": "boolean" + }, + "ConfigurationManager": { + "$ref": "#/definitions/StackConfigurationManager" + }, + "CustomCookbooksSource": { + "$ref": "#/definitions/Source" + }, + "CustomJson": { + "type": "object" + }, + "DefaultAvailabilityZone": { + "type": "string" + }, + "DefaultInstanceProfileArn": { + "type": "string" + }, + "DefaultOs": { + "type": "string" + }, + "DefaultRootDeviceType": { + "type": "string" + }, + "DefaultSshKeyName": { + "type": "string" + }, + "DefaultSubnetId": { + "type": "string" + }, + "EcsClusterArn": { + "type": "string" + }, + "ElasticIps": { + "items": { + "$ref": "#/definitions/ElasticIp" + }, + "type": "array", + "uniqueItems": true + }, + "HostnameTheme": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "RdsDbInstances": { + "items": { + "$ref": "#/definitions/RdsDbInstance" + }, + "type": "array", + "uniqueItems": true + }, + "ServiceRoleArn": { + "type": "string" + }, + "SourceStackId": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "UseCustomCookbooks": { + "type": "boolean" + }, + "UseOpsworksSecurityGroups": { + "type": "boolean" + }, + "VpcId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "DefaultInstanceProfileArn", + "ServiceRoleArn", + "Name" + ], + "typeName": "AWS::OpsWorks::Stack" +} diff --git a/src/schema/aws-opsworks-userprofile.json b/src/schema/aws-opsworks-userprofile.json index f2ff0872..375b569d 100644 --- a/src/schema/aws-opsworks-userprofile.json +++ b/src/schema/aws-opsworks-userprofile.json @@ -1,34 +1,34 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/IamUserArn" - ], - "description": "Resource Type definition for AWS::OpsWorks::UserProfile", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AllowSelfManagement": { - "type": "boolean" - }, - "IamUserArn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "SshPublicKey": { - "type": "string" - }, - "SshUsername": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "IamUserArn" - ], - "typeName": "AWS::OpsWorks::UserProfile" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/IamUserArn" + ], + "description": "Resource Type definition for AWS::OpsWorks::UserProfile", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AllowSelfManagement": { + "type": "boolean" + }, + "IamUserArn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "SshPublicKey": { + "type": "string" + }, + "SshUsername": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IamUserArn" + ], + "typeName": "AWS::OpsWorks::UserProfile" +} diff --git a/src/schema/aws-opsworks-volume.json b/src/schema/aws-opsworks-volume.json index d575f1bf..1417fd3b 100644 --- a/src/schema/aws-opsworks-volume.json +++ b/src/schema/aws-opsworks-volume.json @@ -1,36 +1,36 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StackId", - "/properties/Ec2VolumeId" - ], - "description": "Resource Type definition for AWS::OpsWorks::Volume", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Ec2VolumeId": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "MountPoint": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "StackId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Ec2VolumeId", - "StackId" - ], - "typeName": "AWS::OpsWorks::Volume" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StackId", + "/properties/Ec2VolumeId" + ], + "description": "Resource Type definition for AWS::OpsWorks::Volume", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Ec2VolumeId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "MountPoint": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "StackId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Ec2VolumeId", + "StackId" + ], + "typeName": "AWS::OpsWorks::Volume" +} diff --git a/src/schema/aws-opsworkscm-server.json b/src/schema/aws-opsworkscm-server.json index 1a9d4ae0..346cc328 100644 --- a/src/schema/aws-opsworkscm-server.json +++ b/src/schema/aws-opsworkscm-server.json @@ -1,236 +1,236 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KeyPair", - "/properties/CustomPrivateKey", - "/properties/ServiceRoleArn", - "/properties/InstanceType", - "/properties/CustomCertificate", - "/properties/CustomDomain", - "/properties/InstanceProfileArn", - "/properties/SecurityGroupIds", - "/properties/ServerName", - "/properties/SubnetIds", - "/properties/BackupId", - "/properties/EngineModel", - "/properties/AssociatePublicIpAddress", - "/properties/EngineVersion", - "/properties/Engine" - ], - "definitions": { - "EngineAttribute": { - "additionalProperties": false, - "properties": { - "Name": { - "maxLength": 10000, - "pattern": "(?s).*", - "type": "string" - }, - "Value": { - "maxLength": 10000, - "pattern": "(?s).*", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::OpsWorksCM::Server", - "handlers": { - "create": { - "permissions": [ - "opsworks-cm:CreateServer", - "opsworks-cm:DescribeServers", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "opsworks-cm:DeleteServer", - "opsworks-cm:DescribeServers" - ] - }, - "list": { - "permissions": [ - "opsworks-cm:DescribeServers", - "opsworks-cm:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "opsworks-cm:DescribeServers" - ] - }, - "update": { - "permissions": [ - "opsworks-cm:UpdateServer", - "opsworks-cm:TagResource", - "opsworks-cm:UntagResource", - "opsworks-cm:DescribeServers" - ] - } - }, - "primaryIdentifier": [ - "/properties/ServerName" - ], - "properties": { - "Arn": { - "maxLength": 10000, - "type": "string" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "BackupId": { - "maxLength": 79, - "pattern": "[a-zA-Z][a-zA-Z0-9\\-\\.\\:]*", - "type": "string" - }, - "BackupRetentionCount": { - "minLength": 1, - "type": "integer" - }, - "CustomCertificate": { - "maxLength": 2097152, - "pattern": "(?s)\\s*-----BEGIN CERTIFICATE-----.+-----END CERTIFICATE-----\\s*", - "type": "string" - }, - "CustomDomain": { - "maxLength": 253, - "pattern": "^(((?!-)[A-Za-z0-9-]{0,62}[A-Za-z0-9])\\.)+((?!-)[A-Za-z0-9-]{1,62}[A-Za-z0-9])$", - "type": "string" - }, - "CustomPrivateKey": { - "maxLength": 4096, - "pattern": "(?ms)\\s*^-----BEGIN (?-s:.*)PRIVATE KEY-----$.*?^-----END (?-s:.*)PRIVATE KEY-----$\\s*", - "type": "string" - }, - "DisableAutomatedBackup": { - "type": "boolean" - }, - "Endpoint": { - "maxLength": 10000, - "type": "string" - }, - "Engine": { - "maxLength": 10000, - "type": "string" - }, - "EngineAttributes": { - "items": { - "$ref": "#/definitions/EngineAttribute" - }, - "type": "array", - "uniqueItems": false - }, - "EngineModel": { - "maxLength": 10000, - "type": "string" - }, - "EngineVersion": { - "maxLength": 10000, - "type": "string" - }, - "InstanceProfileArn": { - "maxLength": 10000, - "pattern": "arn:aws:iam::[0-9]{12}:instance-profile/.*", - "type": "string" - }, - "InstanceType": { - "maxLength": 10000, - "type": "string" - }, - "KeyPair": { - "maxLength": 10000, - "pattern": ".*", - "type": "string" - }, - "PreferredBackupWindow": { - "maxLength": 10000, - "pattern": "^((Mon|Tue|Wed|Thu|Fri|Sat|Sun):)?([0-1][0-9]|2[0-3]):[0-5][0-9]$", - "type": "string" - }, - "PreferredMaintenanceWindow": { - "maxLength": 10000, - "pattern": "^((Mon|Tue|Wed|Thu|Fri|Sat|Sun):)?([0-1][0-9]|2[0-3]):[0-5][0-9]$", - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "maxLength": 10000, - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ServerName": { - "maxLength": 40, - "minLength": 1, - "pattern": "[a-zA-Z][a-zA-Z0-9\\-]*", - "type": "string" - }, - "ServiceRoleArn": { - "maxLength": 10000, - "pattern": "arn:aws:iam::[0-9]{12}:role/.*", - "type": "string" - }, - "SubnetIds": { - "items": { - "maxLength": 10000, - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ServerName", - "/properties/Endpoint", - "/properties/Arn" - ], - "required": [ - "ServiceRoleArn", - "InstanceProfileArn", - "InstanceType" - ], - "typeName": "AWS::OpsWorksCM::Server", - "writeOnlyProperties": [ - "/properties/BackupId", - "/properties/CustomCertificate", - "/properties/CustomDomain", - "/properties/CustomPrivateKey", - "/properties/EngineAttributes", - "/properties/EngineVersion", - "/properties/KeyPair", - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KeyPair", + "/properties/CustomPrivateKey", + "/properties/ServiceRoleArn", + "/properties/InstanceType", + "/properties/CustomCertificate", + "/properties/CustomDomain", + "/properties/InstanceProfileArn", + "/properties/SecurityGroupIds", + "/properties/ServerName", + "/properties/SubnetIds", + "/properties/BackupId", + "/properties/EngineModel", + "/properties/AssociatePublicIpAddress", + "/properties/EngineVersion", + "/properties/Engine" + ], + "definitions": { + "EngineAttribute": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 10000, + "pattern": "(?s).*", + "type": "string" + }, + "Value": { + "maxLength": 10000, + "pattern": "(?s).*", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::OpsWorksCM::Server", + "handlers": { + "create": { + "permissions": [ + "opsworks-cm:CreateServer", + "opsworks-cm:DescribeServers", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "opsworks-cm:DeleteServer", + "opsworks-cm:DescribeServers" + ] + }, + "list": { + "permissions": [ + "opsworks-cm:DescribeServers", + "opsworks-cm:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "opsworks-cm:DescribeServers" + ] + }, + "update": { + "permissions": [ + "opsworks-cm:UpdateServer", + "opsworks-cm:TagResource", + "opsworks-cm:UntagResource", + "opsworks-cm:DescribeServers" + ] + } + }, + "primaryIdentifier": [ + "/properties/ServerName" + ], + "properties": { + "Arn": { + "maxLength": 10000, + "type": "string" + }, + "AssociatePublicIpAddress": { + "type": "boolean" + }, + "BackupId": { + "maxLength": 79, + "pattern": "[a-zA-Z][a-zA-Z0-9\\-\\.\\:]*", + "type": "string" + }, + "BackupRetentionCount": { + "minLength": 1, + "type": "integer" + }, + "CustomCertificate": { + "maxLength": 2097152, + "pattern": "(?s)\\s*-----BEGIN CERTIFICATE-----.+-----END CERTIFICATE-----\\s*", + "type": "string" + }, + "CustomDomain": { + "maxLength": 253, + "pattern": "^(((?!-)[A-Za-z0-9-]{0,62}[A-Za-z0-9])\\.)+((?!-)[A-Za-z0-9-]{1,62}[A-Za-z0-9])$", + "type": "string" + }, + "CustomPrivateKey": { + "maxLength": 4096, + "pattern": "(?ms)\\s*^-----BEGIN (?-s:.*)PRIVATE KEY-----$.*?^-----END (?-s:.*)PRIVATE KEY-----$\\s*", + "type": "string" + }, + "DisableAutomatedBackup": { + "type": "boolean" + }, + "Endpoint": { + "maxLength": 10000, + "type": "string" + }, + "Engine": { + "maxLength": 10000, + "type": "string" + }, + "EngineAttributes": { + "items": { + "$ref": "#/definitions/EngineAttribute" + }, + "type": "array", + "uniqueItems": false + }, + "EngineModel": { + "maxLength": 10000, + "type": "string" + }, + "EngineVersion": { + "maxLength": 10000, + "type": "string" + }, + "InstanceProfileArn": { + "maxLength": 10000, + "pattern": "arn:aws:iam::[0-9]{12}:instance-profile/.*", + "type": "string" + }, + "InstanceType": { + "maxLength": 10000, + "type": "string" + }, + "KeyPair": { + "maxLength": 10000, + "pattern": ".*", + "type": "string" + }, + "PreferredBackupWindow": { + "maxLength": 10000, + "pattern": "^((Mon|Tue|Wed|Thu|Fri|Sat|Sun):)?([0-1][0-9]|2[0-3]):[0-5][0-9]$", + "type": "string" + }, + "PreferredMaintenanceWindow": { + "maxLength": 10000, + "pattern": "^((Mon|Tue|Wed|Thu|Fri|Sat|Sun):)?([0-1][0-9]|2[0-3]):[0-5][0-9]$", + "type": "string" + }, + "SecurityGroupIds": { + "items": { + "maxLength": 10000, + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ServerName": { + "maxLength": 40, + "minLength": 1, + "pattern": "[a-zA-Z][a-zA-Z0-9\\-]*", + "type": "string" + }, + "ServiceRoleArn": { + "maxLength": 10000, + "pattern": "arn:aws:iam::[0-9]{12}:role/.*", + "type": "string" + }, + "SubnetIds": { + "items": { + "maxLength": 10000, + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ServerName", + "/properties/Endpoint", + "/properties/Arn" + ], + "required": [ + "ServiceRoleArn", + "InstanceProfileArn", + "InstanceType" + ], + "typeName": "AWS::OpsWorksCM::Server", + "writeOnlyProperties": [ + "/properties/BackupId", + "/properties/CustomCertificate", + "/properties/CustomDomain", + "/properties/CustomPrivateKey", + "/properties/EngineAttributes", + "/properties/EngineVersion", + "/properties/KeyPair", + "/properties/Tags" + ] +} diff --git a/src/schema/aws-organizations-account.json b/src/schema/aws-organizations-account.json index 998bd283..497e6162 100644 --- a/src/schema/aws-organizations-account.json +++ b/src/schema/aws-organizations-account.json @@ -1,178 +1,179 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A custom key-value pair associated with a resource within your organization.", - "properties": { - "Key": { - "description": "The key identifier, or name, of the tag.", - "maxLength": 128, - "minLength": 1, - "pattern": "[\\s\\S]*", - "type": "string" - }, - "Value": { - "description": "The string value that's associated with the key of the tag. You can set the value of a tag to an empty string, but you can't set the value of a tag to null.", - "maxLength": 256, - "minLength": 0, - "pattern": "[\\s\\S]*", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "You can use AWS::Organizations::Account to manage accounts in organization.", - "handlers": { - "create": { - "permissions": [ - "organizations:CreateAccount", - "organizations:DescribeCreateAccountStatus", - "organizations:MoveAccount", - "organizations:ListParents", - "organizations:TagResource", - "organizations:DescribeAccount", - "organizations:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "organizations:CloseAccount" - ] - }, - "list": { - "permissions": [ - "organizations:ListAccounts" - ] - }, - "read": { - "permissions": [ - "organizations:DescribeAccount", - "organizations:ListParents", - "organizations:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "organizations:MoveAccount", - "organizations:TagResource", - "organizations:UntagResource", - "organizations:ListRoots", - "organizations:DescribeAccount", - "organizations:ListParents", - "organizations:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AccountId" - ], - "properties": { - "AccountId": { - "description": "If the account was created successfully, the unique identifier (ID) of the new account.", - "maxLength": 12, - "pattern": "^\\d{12}$", - "type": "string" - }, - "AccountName": { - "description": "The friendly name of the member account.", - "maxLength": 50, - "minLength": 1, - "pattern": "[\\u0020-\\u007E]+", - "type": "string" - }, - "Arn": { - "description": "The Amazon Resource Name (ARN) of the account.", - "pattern": "^arn:aws.*:organizations::\\d{12}:account\\/o-[a-z0-9]{10,32}\\/\\d{12}", - "type": "string" - }, - "Email": { - "description": "The email address of the owner to assign to the new member account.", - "maxLength": 64, - "minLength": 6, - "pattern": "[^\\s@]+@[^\\s@]+\\.[^\\s@]+", - "type": "string" - }, - "JoinedMethod": { - "description": "The method by which the account joined the organization.", - "enum": [ - "INVITED", - "CREATED" - ], - "type": "string" - }, - "JoinedTimestamp": { - "description": "The date the account became a part of the organization.", - "type": "string" - }, - "ParentIds": { - "description": "List of parent nodes for the member account. Currently only one parent at a time is supported. Default is root.", - "insertionOrder": false, - "items": { - "pattern": "^(r-[0-9a-z]{4,32})|(ou-[0-9a-z]{4,32}-[a-z0-9]{8,32})$", - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "RoleName": { - "default": "OrganizationAccountAccessRole", - "description": "The name of an IAM role that AWS Organizations automatically preconfigures in the new member account. Default name is OrganizationAccountAccessRole if not specified.", - "maxLength": 64, - "minLength": 1, - "pattern": "[\\w+=,.@-]{1,64}", - "type": "string" - }, - "Status": { - "description": "The status of the account in the organization.", - "enum": [ - "ACTIVE", - "SUSPENDED", - "PENDING_CLOSURE" - ], - "type": "string" - }, - "Tags": { - "description": "A list of tags that you want to attach to the newly created account. For each tag in the list, you must specify both a tag key and a value.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/AccountId", - "/properties/Status", - "/properties/JoinedTimestamp", - "/properties/JoinedMethod", - "/properties/Arn" - ], - "required": [ - "AccountName", - "Email" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-organizations", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "organizations:TagResource", - "organizations:UntagResource", - "organizations:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Organizations::Account", - "writeOnlyProperties": [ - "/properties/RoleName" - ] -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A custom key-value pair associated with a resource within your organization.", + "properties": { + "Key": { + "description": "The key identifier, or name, of the tag.", + "maxLength": 128, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "Value": { + "description": "The string value that's associated with the key of the tag. You can set the value of a tag to an empty string, but you can't set the value of a tag to null.", + "maxLength": 256, + "minLength": 0, + "pattern": "[\\s\\S]*", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "You can use AWS::Organizations::Account to manage accounts in organization.", + "handlers": { + "create": { + "permissions": [ + "organizations:CreateAccount", + "organizations:DescribeCreateAccountStatus", + "organizations:MoveAccount", + "organizations:ListAccounts", + "organizations:ListParents", + "organizations:TagResource", + "organizations:DescribeAccount", + "organizations:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "organizations:CloseAccount" + ] + }, + "list": { + "permissions": [ + "organizations:ListAccounts" + ] + }, + "read": { + "permissions": [ + "organizations:DescribeAccount", + "organizations:ListParents", + "organizations:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "organizations:MoveAccount", + "organizations:TagResource", + "organizations:UntagResource", + "organizations:ListRoots", + "organizations:DescribeAccount", + "organizations:ListParents", + "organizations:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccountId" + ], + "properties": { + "AccountId": { + "description": "If the account was created successfully, the unique identifier (ID) of the new account.", + "maxLength": 12, + "pattern": "^\\d{12}$", + "type": "string" + }, + "AccountName": { + "description": "The friendly name of the member account.", + "maxLength": 50, + "minLength": 1, + "pattern": "[\\u0020-\\u007E]+", + "type": "string" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the account.", + "pattern": "^arn:aws.*:organizations::\\d{12}:account\\/o-[a-z0-9]{10,32}\\/\\d{12}", + "type": "string" + }, + "Email": { + "description": "The email address of the owner to assign to the new member account.", + "maxLength": 64, + "minLength": 6, + "pattern": "[^\\s@]+@[^\\s@]+\\.[^\\s@]+", + "type": "string" + }, + "JoinedMethod": { + "description": "The method by which the account joined the organization.", + "enum": [ + "INVITED", + "CREATED" + ], + "type": "string" + }, + "JoinedTimestamp": { + "description": "The date the account became a part of the organization.", + "type": "string" + }, + "ParentIds": { + "description": "List of parent nodes for the member account. Currently only one parent at a time is supported. Default is root.", + "insertionOrder": false, + "items": { + "pattern": "^(r-[0-9a-z]{4,32})|(ou-[0-9a-z]{4,32}-[a-z0-9]{8,32})$", + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "RoleName": { + "default": "OrganizationAccountAccessRole", + "description": "The name of an IAM role that AWS Organizations automatically preconfigures in the new member account. Default name is OrganizationAccountAccessRole if not specified.", + "maxLength": 64, + "minLength": 1, + "pattern": "[\\w+=,.@-]{1,64}", + "type": "string" + }, + "Status": { + "description": "The status of the account in the organization.", + "enum": [ + "ACTIVE", + "SUSPENDED", + "PENDING_CLOSURE" + ], + "type": "string" + }, + "Tags": { + "description": "A list of tags that you want to attach to the newly created account. For each tag in the list, you must specify both a tag key and a value.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/AccountId", + "/properties/Status", + "/properties/JoinedTimestamp", + "/properties/JoinedMethod", + "/properties/Arn" + ], + "required": [ + "AccountName", + "Email" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-organizations", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "organizations:TagResource", + "organizations:UntagResource", + "organizations:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Organizations::Account", + "writeOnlyProperties": [ + "/properties/RoleName" + ] +} diff --git a/src/schema/aws-organizations-organization.json b/src/schema/aws-organizations-organization.json index 5b4da2fa..ecdf05f2 100644 --- a/src/schema/aws-organizations-organization.json +++ b/src/schema/aws-organizations-organization.json @@ -1,96 +1,96 @@ -{ - "additionalProperties": false, - "description": "Resource schema for AWS::Organizations::Organization", - "handlers": { - "create": { - "permissions": [ - "organizations:CreateOrganization", - "organizations:DescribeOrganization", - "iam:CreateServiceLinkedRole", - "organizations:ListRoots" - ] - }, - "delete": { - "permissions": [ - "organizations:DeleteOrganization", - "organizations:DescribeOrganization" - ] - }, - "list": { - "permissions": [ - "organizations:DescribeOrganization" - ] - }, - "read": { - "permissions": [ - "organizations:DescribeOrganization", - "organizations:ListRoots" - ] - }, - "update": { - "permissions": [ - "organizations:DescribeOrganization" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of an organization.", - "pattern": "^arn:aws.*:organizations::\\d{12}:organization\\/o-[a-z0-9]{10,32}", - "type": "string" - }, - "FeatureSet": { - "default": "ALL", - "description": "Specifies the feature set supported by the new organization. Each feature set supports different levels of functionality.", - "enum": [ - "ALL", - "CONSOLIDATED_BILLING" - ], - "type": "string" - }, - "Id": { - "description": "The unique identifier (ID) of an organization.", - "pattern": "^o-[a-z0-9]{10,32}$", - "type": "string" - }, - "ManagementAccountArn": { - "description": "The Amazon Resource Name (ARN) of the account that is designated as the management account for the organization.", - "pattern": "^arn:aws.*:organizations::\\d{12}:account\\/o-[a-z0-9]{10,32}\\/\\d{12}", - "type": "string" - }, - "ManagementAccountEmail": { - "description": "The email address that is associated with the AWS account that is designated as the management account for the organization.", - "maxLength": 64, - "minLength": 6, - "pattern": "[^\\s@]+@[^\\s@]+\\.[^\\s@]+", - "type": "string" - }, - "ManagementAccountId": { - "description": "The unique identifier (ID) of the management account of an organization.", - "pattern": "^\\d{12}$", - "type": "string" - }, - "RootId": { - "description": "The unique identifier (ID) for the root.", - "maxLength": 64, - "pattern": "^r-[0-9a-z]{4,32}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/ManagementAccountArn", - "/properties/ManagementAccountId", - "/properties/ManagementAccountEmail", - "/properties/RootId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-organizations.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Organizations::Organization" -} +{ + "additionalProperties": false, + "description": "Resource schema for AWS::Organizations::Organization", + "handlers": { + "create": { + "permissions": [ + "organizations:CreateOrganization", + "organizations:DescribeOrganization", + "iam:CreateServiceLinkedRole", + "organizations:ListRoots" + ] + }, + "delete": { + "permissions": [ + "organizations:DeleteOrganization", + "organizations:DescribeOrganization" + ] + }, + "list": { + "permissions": [ + "organizations:DescribeOrganization" + ] + }, + "read": { + "permissions": [ + "organizations:DescribeOrganization", + "organizations:ListRoots" + ] + }, + "update": { + "permissions": [ + "organizations:DescribeOrganization" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of an organization.", + "pattern": "^arn:aws.*:organizations::\\d{12}:organization\\/o-[a-z0-9]{10,32}", + "type": "string" + }, + "FeatureSet": { + "default": "ALL", + "description": "Specifies the feature set supported by the new organization. Each feature set supports different levels of functionality.", + "enum": [ + "ALL", + "CONSOLIDATED_BILLING" + ], + "type": "string" + }, + "Id": { + "description": "The unique identifier (ID) of an organization.", + "pattern": "^o-[a-z0-9]{10,32}$", + "type": "string" + }, + "ManagementAccountArn": { + "description": "The Amazon Resource Name (ARN) of the account that is designated as the management account for the organization.", + "pattern": "^arn:aws.*:organizations::\\d{12}:account\\/o-[a-z0-9]{10,32}\\/\\d{12}", + "type": "string" + }, + "ManagementAccountEmail": { + "description": "The email address that is associated with the AWS account that is designated as the management account for the organization.", + "maxLength": 64, + "minLength": 6, + "pattern": "[^\\s@]+@[^\\s@]+\\.[^\\s@]+", + "type": "string" + }, + "ManagementAccountId": { + "description": "The unique identifier (ID) of the management account of an organization.", + "pattern": "^\\d{12}$", + "type": "string" + }, + "RootId": { + "description": "The unique identifier (ID) for the root.", + "maxLength": 64, + "pattern": "^r-[0-9a-z]{4,32}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/ManagementAccountArn", + "/properties/ManagementAccountId", + "/properties/ManagementAccountEmail", + "/properties/RootId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-organizations.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Organizations::Organization" +} diff --git a/src/schema/aws-organizations-organizationalunit.json b/src/schema/aws-organizations-organizationalunit.json index eaeb6ee6..1acd3860 100644 --- a/src/schema/aws-organizations-organizationalunit.json +++ b/src/schema/aws-organizations-organizationalunit.json @@ -1,140 +1,141 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ParentId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A custom key-value pair associated with a resource within your organization.", - "properties": { - "Key": { - "description": "The key identifier, or name, of the tag.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The string value that's associated with the key of the tag. You can set the value of a tag to an empty string, but you can't set the value of a tag to null.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "You can use organizational units (OUs) to group accounts together to administer as a single unit. This greatly simplifies the management of your accounts. For example, you can attach a policy-based control to an OU, and all accounts within the OU automatically inherit the policy. You can create multiple OUs within a single organization, and you can create OUs within other OUs. Each OU can contain multiple accounts, and you can move accounts from one OU to another. However, OU names must be unique within a parent OU or root.", - "handlers": { - "create": { - "permissions": [ - "organizations:CreateOrganizationalUnit", - "organizations:DescribeOrganizationalUnit", - "organizations:ListParents", - "organizations:ListTagsForResource", - "organizations:TagResource" - ] - }, - "delete": { - "permissions": [ - "organizations:DeleteOrganizationalUnit" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ParentId": { - "$ref": "resource-schema.json#/properties/ParentId" - } - }, - "required": [ - "ParentId" - ] - }, - "permissions": [ - "organizations:ListOrganizationalUnitsForParent" - ] - }, - "read": { - "permissions": [ - "organizations:DescribeOrganizationalUnit", - "organizations:ListParents", - "organizations:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "organizations:DescribeOrganizationalUnit", - "organizations:ListParents", - "organizations:ListTagsForResource", - "organizations:TagResource", - "organizations:UntagResource", - "organizations:UpdateOrganizationalUnit" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of this OU.", - "pattern": "^arn:aws.*:organizations::\\d{12}:ou/o-[a-z0-9]{10,32}/ou-[0-9a-z]{4,32}-[0-9a-z]{8,32}", - "type": "string" - }, - "Id": { - "description": "The unique identifier (ID) associated with this OU.", - "maxLength": 68, - "pattern": "^ou-[0-9a-z]{4,32}-[a-z0-9]{8,32}$", - "type": "string" - }, - "Name": { - "description": "The friendly name of this OU.", - "maxLength": 128, - "minLength": 1, - "pattern": "[\\s\\S]*", - "type": "string" - }, - "ParentId": { - "description": "The unique identifier (ID) of the parent root or OU that you want to create the new OU in.", - "maxLength": 100, - "pattern": "^(r-[0-9a-z]{4,32})|(ou-[0-9a-z]{4,32}-[a-z0-9]{8,32})$", - "type": "string" - }, - "Tags": { - "description": "A list of tags that you want to attach to the newly created OU.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id" - ], - "required": [ - "Name", - "ParentId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-organizations", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "organizations:TagResource", - "organizations:UntagResource", - "organizations:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Organizations::OrganizationalUnit" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ParentId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A custom key-value pair associated with a resource within your organization.", + "properties": { + "Key": { + "description": "The key identifier, or name, of the tag.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The string value that's associated with the key of the tag. You can set the value of a tag to an empty string, but you can't set the value of a tag to null.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "You can use organizational units (OUs) to group accounts together to administer as a single unit. This greatly simplifies the management of your accounts. For example, you can attach a policy-based control to an OU, and all accounts within the OU automatically inherit the policy. You can create multiple OUs within a single organization, and you can create OUs within other OUs. Each OU can contain multiple accounts, and you can move accounts from one OU to another. However, OU names must be unique within a parent OU or root.", + "handlers": { + "create": { + "permissions": [ + "organizations:CreateOrganizationalUnit", + "organizations:DescribeOrganizationalUnit", + "organizations:ListParents", + "organizations:ListOrganizationalUnitsForParent", + "organizations:ListTagsForResource", + "organizations:TagResource" + ] + }, + "delete": { + "permissions": [ + "organizations:DeleteOrganizationalUnit" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ParentId": { + "$ref": "resource-schema.json#/properties/ParentId" + } + }, + "required": [ + "ParentId" + ] + }, + "permissions": [ + "organizations:ListOrganizationalUnitsForParent" + ] + }, + "read": { + "permissions": [ + "organizations:DescribeOrganizationalUnit", + "organizations:ListParents", + "organizations:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "organizations:DescribeOrganizationalUnit", + "organizations:ListParents", + "organizations:ListTagsForResource", + "organizations:TagResource", + "organizations:UntagResource", + "organizations:UpdateOrganizationalUnit" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of this OU.", + "pattern": "^arn:aws.*:organizations::\\d{12}:ou/o-[a-z0-9]{10,32}/ou-[0-9a-z]{4,32}-[0-9a-z]{8,32}", + "type": "string" + }, + "Id": { + "description": "The unique identifier (ID) associated with this OU.", + "maxLength": 68, + "pattern": "^ou-[0-9a-z]{4,32}-[a-z0-9]{8,32}$", + "type": "string" + }, + "Name": { + "description": "The friendly name of this OU.", + "maxLength": 128, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "ParentId": { + "description": "The unique identifier (ID) of the parent root or OU that you want to create the new OU in.", + "maxLength": 100, + "pattern": "^(r-[0-9a-z]{4,32})|(ou-[0-9a-z]{4,32}-[a-z0-9]{8,32})$", + "type": "string" + }, + "Tags": { + "description": "A list of tags that you want to attach to the newly created OU.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id" + ], + "required": [ + "Name", + "ParentId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-organizations", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "organizations:TagResource", + "organizations:UntagResource", + "organizations:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Organizations::OrganizationalUnit" +} diff --git a/src/schema/aws-organizations-policy.json b/src/schema/aws-organizations-policy.json index a2ea68c8..c4b79f5d 100644 --- a/src/schema/aws-organizations-policy.json +++ b/src/schema/aws-organizations-policy.json @@ -1,183 +1,186 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Type" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A custom key-value pair associated with a resource within your organization.", - "properties": { - "Key": { - "description": "The key identifier, or name, of the tag.", - "maxLength": 128, - "minLength": 1, - "pattern": "[\\s\\S]*", - "type": "string" - }, - "Value": { - "description": "The string value that's associated with the key of the tag. You can set the value of a tag to an empty string, but you can't set the value of a tag to null.", - "maxLength": 256, - "minLength": 0, - "pattern": "[\\s\\S]*", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Policies in AWS Organizations enable you to manage different features of the AWS accounts in your organization. You can use policies when all features are enabled in your organization.", - "handlers": { - "create": { - "permissions": [ - "organizations:CreatePolicy", - "organizations:DescribePolicy", - "organizations:AttachPolicy", - "organizations:ListTagsForResource", - "organizations:ListTargetsForPolicy", - "organizations:TagResource" - ] - }, - "delete": { - "permissions": [ - "organizations:DetachPolicy", - "organizations:DeletePolicy" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Type": { - "$ref": "resource-schema.json#/properties/Type" - } - }, - "required": [ - "Type" - ] - }, - "permissions": [ - "organizations:ListPolicies" - ] - }, - "read": { - "permissions": [ - "organizations:DescribePolicy", - "organizations:ListTargetsForPolicy", - "organizations:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "organizations:AttachPolicy", - "organizations:DetachPolicy", - "organizations:UpdatePolicy", - "organizations:ListTagsForResource", - "organizations:ListTargetsForPolicy", - "organizations:TagResource", - "organizations:UntagResource", - "organizations:DescribePolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "ARN of the Policy", - "pattern": "^arn:aws.*:organizations::[0-9]{12}:policy/o-[a-z0-9]{10}/(service_control|tag|backup|aiservices_opt_out)_policy/p-[a-z0-9]{8}", - "type": "string" - }, - "AwsManaged": { - "description": "A boolean value that indicates whether the specified policy is an AWS managed policy. If true, then you can attach the policy to roots, OUs, or accounts, but you cannot edit it.", - "type": "boolean" - }, - "Content": { - "description": "The Policy text content. For AWS CloudFormation templates formatted in YAML, you can provide the policy in JSON or YAML format. AWS CloudFormation always converts a YAML policy to JSON format before submitting it.", - "maxLength": 1000000, - "minLength": 1, - "pattern": "[\\s\\S]*", - "type": [ - "object", - "string" - ] - }, - "Description": { - "description": "Human readable description of the policy", - "maxLength": 512, - "pattern": "[\\s\\S]*", - "type": "string" - }, - "Id": { - "description": "Id of the Policy", - "maxLength": 130, - "pattern": "^p-[0-9a-zA-Z_]{8,128}$", - "type": "string" - }, - "Name": { - "description": "Name of the Policy", - "maxLength": 128, - "minLength": 1, - "pattern": "[\\s\\S]*", - "type": "string" - }, - "Tags": { - "description": "A list of tags that you want to attach to the newly created policy. For each tag in the list, you must specify both a tag key and a value. You can set the value to an empty string, but you can't set it to null.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "TargetIds": { - "description": "List of unique identifiers (IDs) of the root, OU, or account that you want to attach the policy to", - "insertionOrder": false, - "items": { - "pattern": "^(r-[0-9a-z]{4,32})|(\\d{12})|(ou-[0-9a-z]{4,32}-[a-z0-9]{8,32})$", - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "description": "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY", - "enum": [ - "SERVICE_CONTROL_POLICY", - "AISERVICES_OPT_OUT_POLICY", - "BACKUP_POLICY", - "TAG_POLICY", - "CHATBOT_POLICY" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/AwsManaged" - ], - "required": [ - "Name", - "Type", - "Content" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-organizations", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "organizations:TagResource", - "organizations:UntagResource", - "organizations:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Organizations::Policy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A custom key-value pair associated with a resource within your organization.", + "properties": { + "Key": { + "description": "The key identifier, or name, of the tag.", + "maxLength": 128, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "Value": { + "description": "The string value that's associated with the key of the tag. You can set the value of a tag to an empty string, but you can't set the value of a tag to null.", + "maxLength": 256, + "minLength": 0, + "pattern": "[\\s\\S]*", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Policies in AWS Organizations enable you to manage different features of the AWS accounts in your organization. You can use policies when all features are enabled in your organization.", + "handlers": { + "create": { + "permissions": [ + "organizations:CreatePolicy", + "organizations:DescribePolicy", + "organizations:AttachPolicy", + "organizations:ListPolicies", + "organizations:ListTagsForResource", + "organizations:ListTargetsForPolicy", + "organizations:TagResource" + ] + }, + "delete": { + "permissions": [ + "organizations:DetachPolicy", + "organizations:DeletePolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Type": { + "$ref": "resource-schema.json#/properties/Type" + } + }, + "required": [ + "Type" + ] + }, + "permissions": [ + "organizations:ListPolicies" + ] + }, + "read": { + "permissions": [ + "organizations:DescribePolicy", + "organizations:ListTargetsForPolicy", + "organizations:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "organizations:AttachPolicy", + "organizations:DetachPolicy", + "organizations:UpdatePolicy", + "organizations:ListTagsForResource", + "organizations:ListTargetsForPolicy", + "organizations:TagResource", + "organizations:UntagResource", + "organizations:DescribePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "ARN of the Policy", + "pattern": "^arn:aws.*:organizations::[0-9]{12}:policy/o-[a-z0-9]{10}/(service_control|tag|backup|aiservices_opt_out)_policy/p-[a-z0-9]{8}", + "type": "string" + }, + "AwsManaged": { + "description": "A boolean value that indicates whether the specified policy is an AWS managed policy. If true, then you can attach the policy to roots, OUs, or accounts, but you cannot edit it.", + "type": "boolean" + }, + "Content": { + "description": "The Policy text content. For AWS CloudFormation templates formatted in YAML, you can provide the policy in JSON or YAML format. AWS CloudFormation always converts a YAML policy to JSON format before submitting it.", + "maxLength": 1000000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": [ + "object", + "string" + ] + }, + "Description": { + "description": "Human readable description of the policy", + "maxLength": 512, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "Id": { + "description": "Id of the Policy", + "maxLength": 130, + "pattern": "^p-[0-9a-zA-Z_]{8,128}$", + "type": "string" + }, + "Name": { + "description": "Name of the Policy", + "maxLength": 128, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "Tags": { + "description": "A list of tags that you want to attach to the newly created policy. For each tag in the list, you must specify both a tag key and a value. You can set the value to an empty string, but you can't set it to null.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TargetIds": { + "description": "List of unique identifiers (IDs) of the root, OU, or account that you want to attach the policy to", + "insertionOrder": false, + "items": { + "pattern": "^(r-[0-9a-z]{4,32})|(\\d{12})|(ou-[0-9a-z]{4,32}-[a-z0-9]{8,32})$", + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "The type of policy to create. You can specify one of the following values: AISERVICES_OPT_OUT_POLICY, BACKUP_POLICY, SERVICE_CONTROL_POLICY, TAG_POLICY, CHATBOT_POLICY, RESOURCE_CONTROL_POLICY,DECLARATIVE_POLICY_EC2", + "enum": [ + "SERVICE_CONTROL_POLICY", + "AISERVICES_OPT_OUT_POLICY", + "BACKUP_POLICY", + "TAG_POLICY", + "CHATBOT_POLICY", + "RESOURCE_CONTROL_POLICY", + "DECLARATIVE_POLICY_EC2" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/AwsManaged" + ], + "required": [ + "Name", + "Type", + "Content" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-organizations", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "organizations:TagResource", + "organizations:UntagResource", + "organizations:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Organizations::Policy" +} diff --git a/src/schema/aws-organizations-resourcepolicy.json b/src/schema/aws-organizations-resourcepolicy.json index 98c1a7a7..889397c8 100644 --- a/src/schema/aws-organizations-resourcepolicy.json +++ b/src/schema/aws-organizations-resourcepolicy.json @@ -1,120 +1,120 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A custom key-value pair associated with a resource within your organization.", - "properties": { - "Key": { - "description": "The key identifier, or name, of the tag.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The string value that's associated with the key of the tag. You can set the value of a tag to an empty string, but you can't set the value of a tag to null.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "You can use AWS::Organizations::ResourcePolicy to delegate policy management for AWS Organizations to specified member accounts to perform policy actions that are by default available only to the management account.", - "handlers": { - "create": { - "permissions": [ - "organizations:PutResourcePolicy", - "organizations:DescribeResourcePolicy", - "organizations:ListTagsForResource", - "organizations:TagResource" - ] - }, - "delete": { - "permissions": [ - "organizations:DeleteResourcePolicy" - ] - }, - "list": { - "permissions": [ - "organizations:DescribeResourcePolicy" - ] - }, - "read": { - "permissions": [ - "organizations:DescribeResourcePolicy", - "organizations:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "organizations:DescribeResourcePolicy", - "organizations:PutResourcePolicy", - "organizations:ListTagsForResource", - "organizations:TagResource", - "organizations:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the resource policy.", - "pattern": "^arn:aws.*:organizations::\\d{12}:resourcepolicy\\/o-[a-z0-9]{10,32}\\/rp-[0-9a-zA-Z_]{4,128}", - "type": "string" - }, - "Content": { - "description": "The policy document. For AWS CloudFormation templates formatted in YAML, you can provide the policy in JSON or YAML format. AWS CloudFormation always converts a YAML policy to JSON format before submitting it.", - "maxLength": 40000, - "minLength": 1, - "pattern": "[\\s\\S]*", - "type": [ - "object", - "string" - ] - }, - "Id": { - "description": "The unique identifier (ID) associated with this resource policy.", - "maxLength": 131, - "pattern": "^rp-[0-9a-zA-Z_]{4,128}$", - "type": "string" - }, - "Tags": { - "description": "A list of tags that you want to attach to the resource policy", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "Content" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-organizations", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "organizations:TagResource", - "organizations:UntagResource", - "organizations:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Organizations::ResourcePolicy" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A custom key-value pair associated with a resource within your organization.", + "properties": { + "Key": { + "description": "The key identifier, or name, of the tag.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The string value that's associated with the key of the tag. You can set the value of a tag to an empty string, but you can't set the value of a tag to null.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "You can use AWS::Organizations::ResourcePolicy to delegate policy management for AWS Organizations to specified member accounts to perform policy actions that are by default available only to the management account.", + "handlers": { + "create": { + "permissions": [ + "organizations:PutResourcePolicy", + "organizations:DescribeResourcePolicy", + "organizations:ListTagsForResource", + "organizations:TagResource" + ] + }, + "delete": { + "permissions": [ + "organizations:DeleteResourcePolicy" + ] + }, + "list": { + "permissions": [ + "organizations:DescribeResourcePolicy" + ] + }, + "read": { + "permissions": [ + "organizations:DescribeResourcePolicy", + "organizations:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "organizations:DescribeResourcePolicy", + "organizations:PutResourcePolicy", + "organizations:ListTagsForResource", + "organizations:TagResource", + "organizations:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the resource policy.", + "pattern": "^arn:aws.*:organizations::\\d{12}:resourcepolicy\\/o-[a-z0-9]{10,32}\\/rp-[0-9a-zA-Z_]{4,128}", + "type": "string" + }, + "Content": { + "description": "The policy document. For AWS CloudFormation templates formatted in YAML, you can provide the policy in JSON or YAML format. AWS CloudFormation always converts a YAML policy to JSON format before submitting it.", + "maxLength": 40000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": [ + "object", + "string" + ] + }, + "Id": { + "description": "The unique identifier (ID) associated with this resource policy.", + "maxLength": 131, + "pattern": "^rp-[0-9a-zA-Z_]{4,128}$", + "type": "string" + }, + "Tags": { + "description": "A list of tags that you want to attach to the resource policy", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Content" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-organizations", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "organizations:TagResource", + "organizations:UntagResource", + "organizations:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Organizations::ResourcePolicy" +} diff --git a/src/schema/aws-osis-pipeline.json b/src/schema/aws-osis-pipeline.json index be2dd542..b70b97ed 100644 --- a/src/schema/aws-osis-pipeline.json +++ b/src/schema/aws-osis-pipeline.json @@ -1,317 +1,317 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PipelineName" - ], - "definitions": { - "BufferOptions": { - "additionalProperties": false, - "description": "Key-value pairs to configure buffering.", - "properties": { - "PersistentBufferEnabled": { - "description": "Whether persistent buffering should be enabled.", - "type": "boolean" - } - }, - "required": [ - "PersistentBufferEnabled" - ], - "type": "object" - }, - "EncryptionAtRestOptions": { - "additionalProperties": false, - "description": "Key-value pairs to configure encryption at rest.", - "properties": { - "KmsKeyArn": { - "description": "The KMS key to use for encrypting data. By default an AWS owned key is used", - "type": "string" - } - }, - "required": [ - "KmsKeyArn" - ], - "type": "object" - }, - "LogPublishingOptions": { - "additionalProperties": false, - "description": "Key-value pairs to configure log publishing.", - "properties": { - "CloudWatchLogDestination": { - "additionalProperties": false, - "description": "The destination for OpenSearch Ingestion Service logs sent to Amazon CloudWatch.", - "properties": { - "LogGroup": { - "maxLength": 512, - "minLength": 1, - "pattern": "\\/aws\\/vendedlogs\\/[\\.\\-_/#A-Za-z0-9]+", - "type": "string" - } - }, - "required": [ - "LogGroup" - ], - "type": "object" - }, - "IsLoggingEnabled": { - "description": "Whether logs should be published.", - "type": "boolean" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "VpcEndpoint": { - "additionalProperties": false, - "description": "An OpenSearch Ingestion Service-managed VPC endpoint that will access one or more pipelines.", - "properties": { - "VpcEndpointId": { - "description": "The unique identifier of the endpoint.", - "type": "string" - }, - "VpcId": { - "description": "The ID for your VPC. AWS Privatelink generates this value when you create a VPC.", - "type": "string" - }, - "VpcOptions": { - "$ref": "#/definitions/VpcOptions" - } - }, - "type": "object" - }, - "VpcOptions": { - "additionalProperties": false, - "description": "Container for the values required to configure VPC access for the pipeline. If you don't specify these values, OpenSearch Ingestion Service creates the pipeline with a public endpoint.", - "properties": { - "SecurityGroupIds": { - "description": "A list of security groups associated with the VPC endpoint.", - "insertionOrder": false, - "items": { - "maxLength": 20, - "minLength": 11, - "pattern": "sg-\\w{8}(\\w{9})?", - "type": "string" - }, - "type": "array" - }, - "SubnetIds": { - "description": "A list of subnet IDs associated with the VPC endpoint.", - "insertionOrder": false, - "items": { - "maxLength": 24, - "minLength": 15, - "pattern": "subnet-\\w{8}(\\w{9})?", - "type": "string" - }, - "type": "array" - }, - "VpcAttachmentOptions": { - "additionalProperties": false, - "description": "Options for attaching a VPC to the pipeline.", - "properties": { - "AttachToVpc": { - "description": "Whether the pipeline should be attached to the provided VPC", - "type": "boolean" - }, - "CidrBlock": { - "description": "The CIDR block to be reserved for OpenSearch Ingestion to create elastic network interfaces (ENIs).", - "pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/(3[0-2]|[12]?[0-9])$", - "type": "string" - } - }, - "required": [ - "AttachToVpc", - "CidrBlock" - ], - "type": "object" - }, - "VpcEndpointManagement": { - "description": "Defines whether you or Amazon OpenSearch Ingestion service create and manage the VPC endpoint configured for the pipeline.", - "enum": [ - "CUSTOMER", - "SERVICE" - ], - "type": "string" - } - }, - "required": [ - "SubnetIds" - ], - "type": "object" - } - }, - "description": "An OpenSearch Ingestion Service Data Prepper pipeline running Data Prepper.", - "handlers": { - "create": { - "permissions": [ - "osis:CreatePipeline", - "osis:GetPipeline", - "osis:TagResource", - "osis:ListTagsForResource", - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "logs:CreateLogDelivery", - "kms:DescribeKey" - ] - }, - "delete": { - "permissions": [ - "osis:DeletePipeline", - "osis:GetPipeline", - "logs:GetLogDelivery", - "logs:DeleteLogDelivery", - "logs:ListLogDeliveries" - ] - }, - "list": { - "permissions": [ - "osis:ListPipelines" - ] - }, - "read": { - "permissions": [ - "osis:GetPipeline", - "osis:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "osis:UpdatePipeline", - "osis:GetPipeline", - "osis:ListTagsForResource", - "osis:TagResource", - "osis:UntagResource", - "iam:PassRole", - "logs:GetLogDelivery", - "logs:UpdateLogDelivery", - "logs:ListLogDeliveries", - "kms:DescribeKey" - ] - } - }, - "primaryIdentifier": [ - "/properties/PipelineArn" - ], - "properties": { - "BufferOptions": { - "$ref": "#/definitions/BufferOptions" - }, - "EncryptionAtRestOptions": { - "$ref": "#/definitions/EncryptionAtRestOptions" - }, - "IngestEndpointUrls": { - "description": "A list of endpoints that can be used for ingesting data into a pipeline", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "LogPublishingOptions": { - "$ref": "#/definitions/LogPublishingOptions" - }, - "MaxUnits": { - "description": "The maximum pipeline capacity, in Ingestion OpenSearch Compute Units (OCUs).", - "maximum": 384, - "minimum": 1, - "type": "integer" - }, - "MinUnits": { - "description": "The minimum pipeline capacity, in Ingestion OpenSearch Compute Units (OCUs).", - "maximum": 384, - "minimum": 1, - "type": "integer" - }, - "PipelineArn": { - "description": "The Amazon Resource Name (ARN) of the pipeline.", - "maxLength": 76, - "minLength": 46, - "pattern": "^arn:(aws|aws\\-cn|aws\\-us\\-gov|aws\\-iso|aws\\-iso\\-b):osis:.+:pipeline\\/.+$", - "type": "string" - }, - "PipelineConfigurationBody": { - "description": "The Data Prepper pipeline configuration.", - "maxLength": 24000, - "minLength": 1, - "type": "string" - }, - "PipelineName": { - "description": "Name of the OpenSearch Ingestion Service pipeline to create. Pipeline names are unique across the pipelines owned by an account within an AWS Region.", - "maxLength": 28, - "minLength": 3, - "pattern": "[a-z][a-z0-9\\-]+", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "VpcEndpointService": { - "description": "The VPC endpoint service name for the pipeline.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "VpcEndpoints": { - "description": "The VPC interface endpoints that have access to the pipeline.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/VpcEndpoint" - }, - "type": "array" - }, - "VpcOptions": { - "$ref": "#/definitions/VpcOptions" - } - }, - "readOnlyProperties": [ - "/properties/PipelineArn", - "/properties/IngestEndpointUrls", - "/properties/VpcEndpoints", - "/properties/VpcEndpointService" - ], - "required": [ - "MaxUnits", - "MinUnits", - "PipelineConfigurationBody", - "PipelineName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-osis.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::OSIS::Pipeline", - "writeOnlyProperties": [ - "/properties/VpcOptions" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PipelineName" + ], + "definitions": { + "BufferOptions": { + "additionalProperties": false, + "description": "Key-value pairs to configure buffering.", + "properties": { + "PersistentBufferEnabled": { + "description": "Whether persistent buffering should be enabled.", + "type": "boolean" + } + }, + "required": [ + "PersistentBufferEnabled" + ], + "type": "object" + }, + "EncryptionAtRestOptions": { + "additionalProperties": false, + "description": "Key-value pairs to configure encryption at rest.", + "properties": { + "KmsKeyArn": { + "description": "The KMS key to use for encrypting data. By default an AWS owned key is used", + "type": "string" + } + }, + "required": [ + "KmsKeyArn" + ], + "type": "object" + }, + "LogPublishingOptions": { + "additionalProperties": false, + "description": "Key-value pairs to configure log publishing.", + "properties": { + "CloudWatchLogDestination": { + "additionalProperties": false, + "description": "The destination for OpenSearch Ingestion Service logs sent to Amazon CloudWatch.", + "properties": { + "LogGroup": { + "maxLength": 512, + "minLength": 1, + "pattern": "\\/aws\\/vendedlogs\\/[\\.\\-_/#A-Za-z0-9]+", + "type": "string" + } + }, + "required": [ + "LogGroup" + ], + "type": "object" + }, + "IsLoggingEnabled": { + "description": "Whether logs should be published.", + "type": "boolean" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VpcEndpoint": { + "additionalProperties": false, + "description": "An OpenSearch Ingestion Service-managed VPC endpoint that will access one or more pipelines.", + "properties": { + "VpcEndpointId": { + "description": "The unique identifier of the endpoint.", + "type": "string" + }, + "VpcId": { + "description": "The ID for your VPC. AWS Privatelink generates this value when you create a VPC.", + "type": "string" + }, + "VpcOptions": { + "$ref": "#/definitions/VpcOptions" + } + }, + "type": "object" + }, + "VpcOptions": { + "additionalProperties": false, + "description": "Container for the values required to configure VPC access for the pipeline. If you don't specify these values, OpenSearch Ingestion Service creates the pipeline with a public endpoint.", + "properties": { + "SecurityGroupIds": { + "description": "A list of security groups associated with the VPC endpoint.", + "insertionOrder": false, + "items": { + "maxLength": 20, + "minLength": 11, + "pattern": "sg-\\w{8}(\\w{9})?", + "type": "string" + }, + "type": "array" + }, + "SubnetIds": { + "description": "A list of subnet IDs associated with the VPC endpoint.", + "insertionOrder": false, + "items": { + "maxLength": 24, + "minLength": 15, + "pattern": "subnet-\\w{8}(\\w{9})?", + "type": "string" + }, + "type": "array" + }, + "VpcAttachmentOptions": { + "additionalProperties": false, + "description": "Options for attaching a VPC to the pipeline.", + "properties": { + "AttachToVpc": { + "description": "Whether the pipeline should be attached to the provided VPC", + "type": "boolean" + }, + "CidrBlock": { + "description": "The CIDR block to be reserved for OpenSearch Ingestion to create elastic network interfaces (ENIs).", + "pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/(3[0-2]|[12]?[0-9])$", + "type": "string" + } + }, + "required": [ + "AttachToVpc", + "CidrBlock" + ], + "type": "object" + }, + "VpcEndpointManagement": { + "description": "Defines whether you or Amazon OpenSearch Ingestion service create and manage the VPC endpoint configured for the pipeline.", + "enum": [ + "CUSTOMER", + "SERVICE" + ], + "type": "string" + } + }, + "required": [ + "SubnetIds" + ], + "type": "object" + } + }, + "description": "An OpenSearch Ingestion Service Data Prepper pipeline running Data Prepper.", + "handlers": { + "create": { + "permissions": [ + "osis:CreatePipeline", + "osis:GetPipeline", + "osis:TagResource", + "osis:ListTagsForResource", + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "logs:CreateLogDelivery", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "osis:DeletePipeline", + "osis:GetPipeline", + "logs:GetLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries" + ] + }, + "list": { + "permissions": [ + "osis:ListPipelines" + ] + }, + "read": { + "permissions": [ + "osis:GetPipeline", + "osis:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "osis:UpdatePipeline", + "osis:GetPipeline", + "osis:ListTagsForResource", + "osis:TagResource", + "osis:UntagResource", + "iam:PassRole", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:ListLogDeliveries", + "kms:DescribeKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/PipelineArn" + ], + "properties": { + "BufferOptions": { + "$ref": "#/definitions/BufferOptions" + }, + "EncryptionAtRestOptions": { + "$ref": "#/definitions/EncryptionAtRestOptions" + }, + "IngestEndpointUrls": { + "description": "A list of endpoints that can be used for ingesting data into a pipeline", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "LogPublishingOptions": { + "$ref": "#/definitions/LogPublishingOptions" + }, + "MaxUnits": { + "description": "The maximum pipeline capacity, in Ingestion OpenSearch Compute Units (OCUs).", + "maximum": 384, + "minimum": 1, + "type": "integer" + }, + "MinUnits": { + "description": "The minimum pipeline capacity, in Ingestion OpenSearch Compute Units (OCUs).", + "maximum": 384, + "minimum": 1, + "type": "integer" + }, + "PipelineArn": { + "description": "The Amazon Resource Name (ARN) of the pipeline.", + "maxLength": 76, + "minLength": 46, + "pattern": "^arn:(aws|aws\\-cn|aws\\-us\\-gov|aws\\-iso|aws\\-iso\\-b):osis:.+:pipeline\\/.+$", + "type": "string" + }, + "PipelineConfigurationBody": { + "description": "The Data Prepper pipeline configuration.", + "maxLength": 24000, + "minLength": 1, + "type": "string" + }, + "PipelineName": { + "description": "Name of the OpenSearch Ingestion Service pipeline to create. Pipeline names are unique across the pipelines owned by an account within an AWS Region.", + "maxLength": 28, + "minLength": 3, + "pattern": "[a-z][a-z0-9\\-]+", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VpcEndpointService": { + "description": "The VPC endpoint service name for the pipeline.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "VpcEndpoints": { + "description": "The VPC interface endpoints that have access to the pipeline.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VpcEndpoint" + }, + "type": "array" + }, + "VpcOptions": { + "$ref": "#/definitions/VpcOptions" + } + }, + "readOnlyProperties": [ + "/properties/PipelineArn", + "/properties/IngestEndpointUrls", + "/properties/VpcEndpoints", + "/properties/VpcEndpointService" + ], + "required": [ + "MaxUnits", + "MinUnits", + "PipelineConfigurationBody", + "PipelineName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-osis.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::OSIS::Pipeline", + "writeOnlyProperties": [ + "/properties/VpcOptions" + ] +} diff --git a/src/schema/aws-panorama-applicationinstance.json b/src/schema/aws-panorama-applicationinstance.json index b1af6878..baa5a0c8 100644 --- a/src/schema/aws-panorama-applicationinstance.json +++ b/src/schema/aws-panorama-applicationinstance.json @@ -1,320 +1,331 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Description", - "/properties/ManifestPayload", - "/properties/ManifestOverridesPayload", - "/properties/RuntimeRoleArn", - "/properties/DefaultRuntimeContextDevice", - "/properties/ApplicationInstanceIdToReplace" - ], - "definitions": { - "ApplicationInstanceArn": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "ApplicationInstanceHealthStatus": { - "enum": [ - "RUNNING", - "ERROR", - "NOT_AVAILABLE" - ], - "type": "string" - }, - "ApplicationInstanceId": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\-\\_]+$", - "type": "string" - }, - "ApplicationInstanceStatus": { - "enum": [ - "DEPLOYMENT_PENDING", - "DEPLOYMENT_REQUESTED", - "DEPLOYMENT_IN_PROGRESS", - "DEPLOYMENT_ERROR", - "DEPLOYMENT_SUCCEEDED", - "REMOVAL_PENDING", - "REMOVAL_REQUESTED", - "REMOVAL_IN_PROGRESS", - "REMOVAL_FAILED", - "REMOVAL_SUCCEEDED" - ], - "type": "string" - }, - "ApplicationInstanceStatusDescription": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "DefaultRuntimeContextDevice": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\-\\_]+$", - "type": "string" - }, - "Description": { - "maxLength": 255, - "minLength": 0, - "pattern": "^.*$", - "type": "string" - }, - "DeviceId": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\-\\_]+$", - "type": "string" - }, - "DeviceName": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\-\\_]+$", - "type": "string" - }, - "ManifestOverridesPayload": { - "additionalProperties": false, - "description": "Parameter overrides for an application instance. This is a JSON document that has a single key (``PayloadData``) where the value is an escaped string representation of the overrides document.", - "properties": { - "PayloadData": { - "$ref": "#/definitions/ManifestOverridesPayloadData", - "description": "The overrides document." - } - }, - "type": "object" - }, - "ManifestOverridesPayloadData": { - "maxLength": 51200, - "minLength": 0, - "pattern": "^.+$", - "type": "string" - }, - "ManifestPayload": { - "additionalProperties": false, - "description": "A application verion's manifest file. This is a JSON document that has a single key (``PayloadData``) where the value is an escaped string representation of the application manifest (``graph.json``). This file is located in the ``graphs`` folder in your application source.", - "properties": { - "PayloadData": { - "$ref": "#/definitions/ManifestPayloadData", - "description": "The application manifest." - } - }, - "type": "object" - }, - "ManifestPayloadData": { - "maxLength": 51200, - "minLength": 1, - "pattern": "^.+$", - "type": "string" - }, - "Name": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\-\\_]+$", - "type": "string" - }, - "RuntimeRoleArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-z0-9][-.a-z0-9]{0,62}:iam::[0-9]{12}:role/.+$", - "type": "string" - }, - "StatusFilter": { - "enum": [ - "DEPLOYMENT_SUCCEEDED", - "DEPLOYMENT_ERROR", - "REMOVAL_SUCCEEDED", - "REMOVAL_FAILED", - "PROCESSING_DEPLOYMENT", - "PROCESSING_REMOVAL" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "", - "properties": { - "Key": { - "description": "", - "maxLength": 128, - "minLength": 1, - "pattern": "^.+$", - "type": "string" - }, - "Value": { - "description": "", - "maxLength": 256, - "minLength": 0, - "pattern": "^.+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TagList": { - "description": "List of tags", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Timestamp": { - "type": "integer" - } - }, - "description": "Creates an application instance and deploys it to a device.", - "handlers": { - "create": { - "permissions": [ - "panorama:CreateApplicationInstance", - "panorama:ListTagsForResource", - "panorama:TagResource", - "panorama:DescribeApplicationInstance", - "panorama:DescribeApplicationInstanceDetails", - "iam:PassRole", - "s3:ListBucket", - "s3:PutObject", - "s3:GetObject", - "s3:GetObjectVersion" - ] - }, - "delete": { - "permissions": [ - "panorama:RemoveApplicationInstance", - "panorama:DescribeApplicationInstance", - "panorama:DescribeApplicationInstanceDetails", - "s3:DeleteObject", - "s3:DeleteObjectVersion", - "s3:DeleteObjectVersionTagging", - "s3:ListObjects", - "s3:GetObject", - "s3:GetObjectVersion" - ] - }, - "list": { - "permissions": [ - "panorama:ListApplicationInstances", - "s3:ListBucket", - "s3:GetObject", - "s3:GetObjectVersion" - ] - }, - "read": { - "permissions": [ - "panorama:DescribeApplicationInstance", - "panorama:DescribeApplicationInstanceDetails", - "panorama:ListTagsForResource", - "s3:ListObjects", - "s3:GetObject", - "s3:GetObjectVersion" - ] - }, - "update": { - "permissions": [ - "panorama:ListTagsForResource", - "panorama:TagResource", - "panorama:UntagResource", - "panorama:DescribeApplicationInstance", - "panorama:DescribeApplicationInstanceDetails", - "s3:ListObjects", - "s3:GetObject", - "s3:GetObjectVersion" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationInstanceId" - ], - "properties": { - "ApplicationInstanceId": { - "$ref": "#/definitions/ApplicationInstanceId", - "description": "" - }, - "ApplicationInstanceIdToReplace": { - "$ref": "#/definitions/ApplicationInstanceId", - "description": "The ID of an application instance to replace with the new instance." - }, - "Arn": { - "$ref": "#/definitions/ApplicationInstanceArn", - "description": "" - }, - "CreatedTime": { - "$ref": "#/definitions/Timestamp", - "description": "" - }, - "DefaultRuntimeContextDevice": { - "$ref": "#/definitions/DefaultRuntimeContextDevice", - "description": "The device's ID." - }, - "DefaultRuntimeContextDeviceName": { - "$ref": "#/definitions/DeviceName", - "description": "" - }, - "Description": { - "$ref": "#/definitions/Description", - "description": "A description for the application instance." - }, - "HealthStatus": { - "$ref": "#/definitions/ApplicationInstanceHealthStatus", - "description": "" - }, - "LastUpdatedTime": { - "$ref": "#/definitions/Timestamp", - "description": "" - }, - "ManifestOverridesPayload": { - "$ref": "#/definitions/ManifestOverridesPayload", - "description": "Setting overrides for the application manifest." - }, - "ManifestPayload": { - "$ref": "#/definitions/ManifestPayload", - "description": "The application's manifest document." - }, - "Name": { - "$ref": "#/definitions/Name", - "description": "A name for the application instance." - }, - "RuntimeRoleArn": { - "$ref": "#/definitions/RuntimeRoleArn", - "description": "The ARN of a runtime role for the application instance." - }, - "Status": { - "$ref": "#/definitions/ApplicationInstanceStatus", - "description": "" - }, - "StatusDescription": { - "$ref": "#/definitions/ApplicationInstanceStatusDescription", - "description": "" - }, - "Tags": { - "$ref": "#/definitions/TagList", - "description": "Tags for the application instance." - } - }, - "readOnlyProperties": [ - "/properties/ApplicationInstanceId", - "/properties/Arn", - "/properties/Status", - "/properties/HealthStatus", - "/properties/StatusDescription", - "/properties/DefaultRuntimeContextDeviceName", - "/properties/CreatedTime", - "/properties/LastUpdatedTime" - ], - "required": [ - "ManifestPayload", - "DefaultRuntimeContextDevice" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "taggable": true, - "typeName": "AWS::Panorama::ApplicationInstance", - "writeOnlyProperties": [ - "/properties/ApplicationInstanceIdToReplace" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Description", + "/properties/ManifestPayload", + "/properties/ManifestOverridesPayload", + "/properties/RuntimeRoleArn", + "/properties/DefaultRuntimeContextDevice", + "/properties/ApplicationInstanceIdToReplace" + ], + "definitions": { + "ApplicationInstanceArn": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "ApplicationInstanceHealthStatus": { + "enum": [ + "RUNNING", + "ERROR", + "NOT_AVAILABLE" + ], + "type": "string" + }, + "ApplicationInstanceId": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_]+$", + "type": "string" + }, + "ApplicationInstanceStatus": { + "enum": [ + "DEPLOYMENT_PENDING", + "DEPLOYMENT_REQUESTED", + "DEPLOYMENT_IN_PROGRESS", + "DEPLOYMENT_ERROR", + "DEPLOYMENT_SUCCEEDED", + "REMOVAL_PENDING", + "REMOVAL_REQUESTED", + "REMOVAL_IN_PROGRESS", + "REMOVAL_FAILED", + "REMOVAL_SUCCEEDED" + ], + "type": "string" + }, + "ApplicationInstanceStatusDescription": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "DefaultRuntimeContextDevice": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_]+$", + "type": "string" + }, + "Description": { + "maxLength": 255, + "minLength": 0, + "pattern": "^.*$", + "type": "string" + }, + "DeviceId": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_]+$", + "type": "string" + }, + "DeviceName": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_]+$", + "type": "string" + }, + "ManifestOverridesPayload": { + "additionalProperties": false, + "description": "Parameter overrides for an application instance. This is a JSON document that has a single key (``PayloadData``) where the value is an escaped string representation of the overrides document.", + "properties": { + "PayloadData": { + "$ref": "#/definitions/ManifestOverridesPayloadData", + "description": "The overrides document." + } + }, + "type": "object" + }, + "ManifestOverridesPayloadData": { + "maxLength": 51200, + "minLength": 0, + "pattern": "^.+$", + "type": "string" + }, + "ManifestPayload": { + "additionalProperties": false, + "description": "A application verion's manifest file. This is a JSON document that has a single key (``PayloadData``) where the value is an escaped string representation of the application manifest (``graph.json``). This file is located in the ``graphs`` folder in your application source.", + "properties": { + "PayloadData": { + "$ref": "#/definitions/ManifestPayloadData", + "description": "The application manifest." + } + }, + "type": "object" + }, + "ManifestPayloadData": { + "maxLength": 51200, + "minLength": 1, + "pattern": "^.+$", + "type": "string" + }, + "Name": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_]+$", + "type": "string" + }, + "RuntimeRoleArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-z0-9][-.a-z0-9]{0,62}:iam::[0-9]{12}:role/.+$", + "type": "string" + }, + "StatusFilter": { + "enum": [ + "DEPLOYMENT_SUCCEEDED", + "DEPLOYMENT_ERROR", + "REMOVAL_SUCCEEDED", + "REMOVAL_FAILED", + "PROCESSING_DEPLOYMENT", + "PROCESSING_REMOVAL" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "", + "properties": { + "Key": { + "description": "", + "maxLength": 128, + "minLength": 1, + "pattern": "^.+$", + "type": "string" + }, + "Value": { + "description": "", + "maxLength": 256, + "minLength": 0, + "pattern": "^.+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagList": { + "description": "List of tags", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Timestamp": { + "type": "integer" + } + }, + "description": "Creates an application instance and deploys it to a device.", + "handlers": { + "create": { + "permissions": [ + "panorama:CreateApplicationInstance", + "panorama:ListTagsForResource", + "panorama:TagResource", + "panorama:DescribeApplicationInstance", + "panorama:DescribeApplicationInstanceDetails", + "iam:PassRole", + "s3:ListBucket", + "s3:PutObject", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "delete": { + "permissions": [ + "panorama:RemoveApplicationInstance", + "panorama:DescribeApplicationInstance", + "panorama:DescribeApplicationInstanceDetails", + "s3:DeleteObject", + "s3:DeleteObjectVersion", + "s3:DeleteObjectVersionTagging", + "s3:ListObjects", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "list": { + "permissions": [ + "panorama:ListApplicationInstances", + "s3:ListBucket", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "read": { + "permissions": [ + "panorama:DescribeApplicationInstance", + "panorama:DescribeApplicationInstanceDetails", + "panorama:ListTagsForResource", + "s3:ListObjects", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "update": { + "permissions": [ + "panorama:ListTagsForResource", + "panorama:TagResource", + "panorama:UntagResource", + "panorama:DescribeApplicationInstance", + "panorama:DescribeApplicationInstanceDetails", + "s3:ListObjects", + "s3:GetObject", + "s3:GetObjectVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationInstanceId" + ], + "properties": { + "ApplicationInstanceId": { + "$ref": "#/definitions/ApplicationInstanceId", + "description": "" + }, + "ApplicationInstanceIdToReplace": { + "$ref": "#/definitions/ApplicationInstanceId", + "description": "The ID of an application instance to replace with the new instance." + }, + "Arn": { + "$ref": "#/definitions/ApplicationInstanceArn", + "description": "" + }, + "CreatedTime": { + "$ref": "#/definitions/Timestamp", + "description": "" + }, + "DefaultRuntimeContextDevice": { + "$ref": "#/definitions/DefaultRuntimeContextDevice", + "description": "The device's ID." + }, + "DefaultRuntimeContextDeviceName": { + "$ref": "#/definitions/DeviceName", + "description": "" + }, + "Description": { + "$ref": "#/definitions/Description", + "description": "A description for the application instance." + }, + "HealthStatus": { + "$ref": "#/definitions/ApplicationInstanceHealthStatus", + "description": "" + }, + "LastUpdatedTime": { + "$ref": "#/definitions/Timestamp", + "description": "" + }, + "ManifestOverridesPayload": { + "$ref": "#/definitions/ManifestOverridesPayload", + "description": "Setting overrides for the application manifest." + }, + "ManifestPayload": { + "$ref": "#/definitions/ManifestPayload", + "description": "The application's manifest document." + }, + "Name": { + "$ref": "#/definitions/Name", + "description": "A name for the application instance." + }, + "RuntimeRoleArn": { + "$ref": "#/definitions/RuntimeRoleArn", + "description": "The ARN of a runtime role for the application instance." + }, + "Status": { + "$ref": "#/definitions/ApplicationInstanceStatus", + "description": "" + }, + "StatusDescription": { + "$ref": "#/definitions/ApplicationInstanceStatusDescription", + "description": "" + }, + "Tags": { + "$ref": "#/definitions/TagList", + "description": "Tags for the application instance." + } + }, + "readOnlyProperties": [ + "/properties/ApplicationInstanceId", + "/properties/Arn", + "/properties/Status", + "/properties/HealthStatus", + "/properties/StatusDescription", + "/properties/DefaultRuntimeContextDeviceName", + "/properties/CreatedTime", + "/properties/LastUpdatedTime" + ], + "required": [ + "ManifestPayload", + "DefaultRuntimeContextDevice" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "panorama:ListTagsForResource", + "panorama:TagResource", + "panorama:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Panorama::ApplicationInstance", + "writeOnlyProperties": [ + "/properties/ApplicationInstanceIdToReplace" + ] +} diff --git a/src/schema/aws-panorama-package.json b/src/schema/aws-panorama-package.json index ed2a0a33..12387b80 100644 --- a/src/schema/aws-panorama-package.json +++ b/src/schema/aws-panorama-package.json @@ -1,191 +1,202 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PackageName" - ], - "definitions": { - "NodePackageArn": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "NodePackageId": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\-\\_\\/]+$", - "type": "string" - }, - "NodePackageName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\-\\_]+$", - "type": "string" - }, - "StorageLocation": { - "additionalProperties": false, - "description": "A storage location.", - "properties": { - "BinaryPrefixLocation": { - "description": "The location's binary prefix.", - "type": "string" - }, - "Bucket": { - "description": "The location's bucket.", - "type": "string" - }, - "GeneratedPrefixLocation": { - "description": "The location's generated prefix.", - "type": "string" - }, - "ManifestPrefixLocation": { - "description": "The location's manifest prefix.", - "type": "string" - }, - "RepoPrefixLocation": { - "description": "The location's repo prefix.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "", - "properties": { - "Key": { - "description": "", - "maxLength": 128, - "minLength": 1, - "pattern": "^.+$", - "type": "string" - }, - "Value": { - "description": "", - "maxLength": 256, - "minLength": 0, - "pattern": "^.+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TagList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Timestamp": { - "type": "integer" - } - }, - "description": "Creates a package and storage location in an Amazon S3 access point.", - "handlers": { - "create": { - "permissions": [ - "panorama:CreatePackage", - "panorama:ListTagsForResource", - "panorama:TagResource", - "panorama:DescribePackage", - "s3:ListBucket", - "s3:PutObject", - "s3:GetObject", - "s3:GetObjectVersion" - ] - }, - "delete": { - "permissions": [ - "panorama:DeletePackage", - "panorama:DescribePackage", - "s3:DeleteObject", - "s3:DeleteObjectVersion", - "s3:DeleteObjectVersionTagging", - "s3:ListObjects", - "s3:ListObjectsV2", - "s3:ListBucket", - "s3:GetObject", - "s3:GetObjectVersion" - ] - }, - "list": { - "permissions": [ - "panorama:ListPackages", - "s3:ListBucket", - "s3:GetObject", - "s3:GetObjectVersion" - ] - }, - "read": { - "permissions": [ - "panorama:DescribePackage", - "panorama:ListTagsForResource", - "s3:ListBucket", - "s3:GetObject", - "s3:GetObjectVersion" - ] - }, - "update": { - "permissions": [ - "panorama:DescribePackage", - "panorama:ListTagsForResource", - "panorama:TagResource", - "panorama:UntagResource", - "s3:PutObject", - "s3:ListBucket", - "s3:GetObject", - "s3:GetObjectVersion" - ] - } - }, - "primaryIdentifier": [ - "/properties/PackageId" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/NodePackageArn", - "description": "" - }, - "CreatedTime": { - "$ref": "#/definitions/Timestamp", - "description": "" - }, - "PackageId": { - "$ref": "#/definitions/NodePackageId", - "description": "" - }, - "PackageName": { - "$ref": "#/definitions/NodePackageName", - "description": "A name for the package." - }, - "StorageLocation": { - "$ref": "#/definitions/StorageLocation", - "description": "A storage location." - }, - "Tags": { - "$ref": "#/definitions/TagList", - "description": "Tags for the package." - } - }, - "readOnlyProperties": [ - "/properties/PackageId", - "/properties/Arn", - "/properties/CreatedTime", - "/properties/StorageLocation/Bucket", - "/properties/StorageLocation/RepoPrefixLocation", - "/properties/StorageLocation/GeneratedPrefixLocation", - "/properties/StorageLocation/BinaryPrefixLocation", - "/properties/StorageLocation/ManifestPrefixLocation" - ], - "required": [ - "PackageName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "taggable": true, - "typeName": "AWS::Panorama::Package" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PackageName" + ], + "definitions": { + "NodePackageArn": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "NodePackageId": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_\\/]+$", + "type": "string" + }, + "NodePackageName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_]+$", + "type": "string" + }, + "StorageLocation": { + "additionalProperties": false, + "description": "A storage location.", + "properties": { + "BinaryPrefixLocation": { + "description": "The location's binary prefix.", + "type": "string" + }, + "Bucket": { + "description": "The location's bucket.", + "type": "string" + }, + "GeneratedPrefixLocation": { + "description": "The location's generated prefix.", + "type": "string" + }, + "ManifestPrefixLocation": { + "description": "The location's manifest prefix.", + "type": "string" + }, + "RepoPrefixLocation": { + "description": "The location's repo prefix.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "", + "properties": { + "Key": { + "description": "", + "maxLength": 128, + "minLength": 1, + "pattern": "^.+$", + "type": "string" + }, + "Value": { + "description": "", + "maxLength": 256, + "minLength": 0, + "pattern": "^.+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Timestamp": { + "type": "integer" + } + }, + "description": "Creates a package and storage location in an Amazon S3 access point.", + "handlers": { + "create": { + "permissions": [ + "panorama:CreatePackage", + "panorama:ListTagsForResource", + "panorama:TagResource", + "panorama:DescribePackage", + "s3:ListBucket", + "s3:PutObject", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "delete": { + "permissions": [ + "panorama:DeletePackage", + "panorama:DescribePackage", + "s3:DeleteObject", + "s3:DeleteObjectVersion", + "s3:DeleteObjectVersionTagging", + "s3:ListObjects", + "s3:ListObjectsV2", + "s3:ListBucket", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "list": { + "permissions": [ + "panorama:ListPackages", + "s3:ListBucket", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "read": { + "permissions": [ + "panorama:DescribePackage", + "panorama:ListTagsForResource", + "s3:ListBucket", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "update": { + "permissions": [ + "panorama:DescribePackage", + "panorama:ListTagsForResource", + "panorama:TagResource", + "panorama:UntagResource", + "s3:PutObject", + "s3:ListBucket", + "s3:GetObject", + "s3:GetObjectVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/PackageId" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/NodePackageArn", + "description": "" + }, + "CreatedTime": { + "$ref": "#/definitions/Timestamp", + "description": "" + }, + "PackageId": { + "$ref": "#/definitions/NodePackageId", + "description": "" + }, + "PackageName": { + "$ref": "#/definitions/NodePackageName", + "description": "A name for the package." + }, + "StorageLocation": { + "$ref": "#/definitions/StorageLocation", + "description": "A storage location." + }, + "Tags": { + "$ref": "#/definitions/TagList", + "description": "Tags for the package." + } + }, + "readOnlyProperties": [ + "/properties/PackageId", + "/properties/Arn", + "/properties/CreatedTime", + "/properties/StorageLocation/Bucket", + "/properties/StorageLocation/RepoPrefixLocation", + "/properties/StorageLocation/GeneratedPrefixLocation", + "/properties/StorageLocation/BinaryPrefixLocation", + "/properties/StorageLocation/ManifestPrefixLocation" + ], + "required": [ + "PackageName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "panorama:ListTagsForResource", + "panorama:TagResource", + "panorama:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Panorama::Package" +} diff --git a/src/schema/aws-panorama-packageversion.json b/src/schema/aws-panorama-packageversion.json index 6dadfd61..47bc8ca4 100644 --- a/src/schema/aws-panorama-packageversion.json +++ b/src/schema/aws-panorama-packageversion.json @@ -1,180 +1,179 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/OwnerAccount", - "/properties/PackageId", - "/properties/PackageVersion", - "/properties/PatchVersion" - ], - "definitions": { - "NodePackageArn": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "NodePackageId": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\-\\_\\/]+$", - "type": "string" - }, - "NodePackageName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\-\\_]+$", - "type": "string" - }, - "NodePackagePatchVersion": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-z0-9]+$", - "type": "string" - }, - "NodePackageVersion": { - "maxLength": 255, - "minLength": 1, - "pattern": "^([0-9]+)\\.([0-9]+)$", - "type": "string" - }, - "PackageOwnerAccount": { - "maxLength": 12, - "minLength": 1, - "pattern": "^[0-9a-z\\_]+$", - "type": "string" - }, - "PackageVersionStatus": { - "enum": [ - "REGISTER_PENDING", - "REGISTER_COMPLETED", - "FAILED", - "DELETING" - ], - "type": "string" - }, - "PackageVersionStatusDescription": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "TimeStamp": { - "type": "integer" - } - }, - "description": "Registers a package version.", - "handlers": { - "create": { - "permissions": [ - "panorama:RegisterPackageVersion", - "panorama:DescribePackageVersion", - "s3:ListBucket", - "s3:PutObject", - "s3:GetObject", - "s3:GetObjectVersion" - ] - }, - "delete": { - "permissions": [ - "panorama:DeregisterPackageVersion", - "panorama:DescribePackageVersion", - "s3:DeleteObject", - "s3:DeleteObjectVersion", - "s3:DeleteObjectVersionTagging", - "s3:ListBucket", - "s3:GetObject", - "s3:GetObjectVersion" - ] - }, - "read": { - "permissions": [ - "panorama:DescribePackageVersion", - "s3:ListBucket", - "s3:GetObject", - "s3:GetObjectVersion" - ] - }, - "update": { - "permissions": [ - "panorama:DescribePackageVersion", - "panorama:RegisterPackageVersion", - "s3:ListBucket", - "s3:PutObject", - "s3:GetObject", - "s3:GetObjectVersion" - ] - } - }, - "primaryIdentifier": [ - "/properties/PackageId", - "/properties/PackageVersion", - "/properties/PatchVersion" - ], - "properties": { - "IsLatestPatch": { - "description": "", - "type": "boolean" - }, - "MarkLatest": { - "description": "Whether to mark the new version as the latest version.", - "type": "boolean" - }, - "OwnerAccount": { - "$ref": "#/definitions/PackageOwnerAccount", - "description": "An owner account." - }, - "PackageArn": { - "$ref": "#/definitions/NodePackageArn", - "description": "" - }, - "PackageId": { - "$ref": "#/definitions/NodePackageId", - "description": "A package ID." - }, - "PackageName": { - "$ref": "#/definitions/NodePackageName", - "description": "" - }, - "PackageVersion": { - "$ref": "#/definitions/NodePackageVersion", - "description": "A package version." - }, - "PatchVersion": { - "$ref": "#/definitions/NodePackagePatchVersion", - "description": "A patch version." - }, - "RegisteredTime": { - "$ref": "#/definitions/TimeStamp", - "description": "" - }, - "Status": { - "$ref": "#/definitions/PackageVersionStatus", - "description": "" - }, - "StatusDescription": { - "$ref": "#/definitions/PackageVersionStatusDescription", - "description": "" - }, - "UpdatedLatestPatchVersion": { - "$ref": "#/definitions/NodePackagePatchVersion", - "description": "If the version was marked latest, the new version to maker as latest." - } - }, - "readOnlyProperties": [ - "/properties/PackageName", - "/properties/PackageArn", - "/properties/Status", - "/properties/StatusDescription", - "/properties/IsLatestPatch", - "/properties/RegisteredTime" - ], - "required": [ - "PackageId", - "PackageVersion", - "PatchVersion" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-panorama.git", - "taggable": false, - "typeName": "AWS::Panorama::PackageVersion", - "writeOnlyProperties": [ - "/properties/UpdatedLatestPatchVersion" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/OwnerAccount", + "/properties/PackageId", + "/properties/PackageVersion", + "/properties/PatchVersion" + ], + "definitions": { + "NodePackageArn": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "NodePackageId": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_\\/]+$", + "type": "string" + }, + "NodePackageName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-\\_]+$", + "type": "string" + }, + "NodePackagePatchVersion": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-z0-9]+$", + "type": "string" + }, + "NodePackageVersion": { + "maxLength": 255, + "minLength": 1, + "pattern": "^([0-9]+)\\.([0-9]+)$", + "type": "string" + }, + "PackageOwnerAccount": { + "maxLength": 12, + "minLength": 1, + "pattern": "^[0-9a-z\\_]+$", + "type": "string" + }, + "PackageVersionStatus": { + "enum": [ + "REGISTER_PENDING", + "REGISTER_COMPLETED", + "FAILED", + "DELETING" + ], + "type": "string" + }, + "PackageVersionStatusDescription": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "TimeStamp": { + "type": "integer" + } + }, + "description": "Registers a package version.", + "handlers": { + "create": { + "permissions": [ + "panorama:RegisterPackageVersion", + "panorama:DescribePackageVersion", + "s3:ListBucket", + "s3:PutObject", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "delete": { + "permissions": [ + "panorama:DeregisterPackageVersion", + "panorama:DescribePackageVersion", + "s3:DeleteObject", + "s3:DeleteObjectVersion", + "s3:DeleteObjectVersionTagging", + "s3:ListBucket", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "read": { + "permissions": [ + "panorama:DescribePackageVersion", + "s3:ListBucket", + "s3:GetObject", + "s3:GetObjectVersion" + ] + }, + "update": { + "permissions": [ + "panorama:DescribePackageVersion", + "panorama:RegisterPackageVersion", + "s3:ListBucket", + "s3:PutObject", + "s3:GetObject", + "s3:GetObjectVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/PackageId", + "/properties/PackageVersion", + "/properties/PatchVersion" + ], + "properties": { + "IsLatestPatch": { + "description": "", + "type": "boolean" + }, + "MarkLatest": { + "description": "Whether to mark the new version as the latest version.", + "type": "boolean" + }, + "OwnerAccount": { + "$ref": "#/definitions/PackageOwnerAccount", + "description": "An owner account." + }, + "PackageArn": { + "$ref": "#/definitions/NodePackageArn", + "description": "" + }, + "PackageId": { + "$ref": "#/definitions/NodePackageId", + "description": "A package ID." + }, + "PackageName": { + "$ref": "#/definitions/NodePackageName", + "description": "" + }, + "PackageVersion": { + "$ref": "#/definitions/NodePackageVersion", + "description": "A package version." + }, + "PatchVersion": { + "$ref": "#/definitions/NodePackagePatchVersion", + "description": "A patch version." + }, + "RegisteredTime": { + "$ref": "#/definitions/TimeStamp", + "description": "" + }, + "Status": { + "$ref": "#/definitions/PackageVersionStatus", + "description": "" + }, + "StatusDescription": { + "$ref": "#/definitions/PackageVersionStatusDescription", + "description": "" + }, + "UpdatedLatestPatchVersion": { + "$ref": "#/definitions/NodePackagePatchVersion", + "description": "If the version was marked latest, the new version to maker as latest." + } + }, + "readOnlyProperties": [ + "/properties/PackageName", + "/properties/PackageArn", + "/properties/Status", + "/properties/StatusDescription", + "/properties/IsLatestPatch", + "/properties/RegisteredTime" + ], + "required": [ + "PackageId", + "PackageVersion", + "PatchVersion" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-panorama.git", + "typeName": "AWS::Panorama::PackageVersion", + "writeOnlyProperties": [ + "/properties/UpdatedLatestPatchVersion" + ] +} diff --git a/src/schema/aws-paymentcryptography-alias.json b/src/schema/aws-paymentcryptography-alias.json index 0990acf7..a1bef272 100644 --- a/src/schema/aws-paymentcryptography-alias.json +++ b/src/schema/aws-paymentcryptography-alias.json @@ -1,58 +1,58 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AliasName" - ], - "description": "Definition of AWS::PaymentCryptography::Alias Resource Type", - "handlers": { - "create": { - "permissions": [ - "payment-cryptography:CreateAlias" - ] - }, - "delete": { - "permissions": [ - "payment-cryptography:DeleteAlias" - ] - }, - "list": { - "permissions": [ - "payment-cryptography:ListAliases" - ] - }, - "read": { - "permissions": [ - "payment-cryptography:GetAlias" - ] - }, - "update": { - "permissions": [ - "payment-cryptography:UpdateAlias" - ] - } - }, - "primaryIdentifier": [ - "/properties/AliasName" - ], - "properties": { - "AliasName": { - "maxLength": 256, - "minLength": 7, - "pattern": "^alias/[a-zA-Z0-9/_-]+$", - "type": "string" - }, - "KeyArn": { - "maxLength": 150, - "minLength": 70, - "pattern": "^arn:aws:payment-cryptography:[a-z]{2}-[a-z]{1,16}-[0-9]+:[0-9]{12}:key/[0-9a-zA-Z]{16,64}$", - "type": "string" - } - }, - "required": [ - "AliasName" - ], - "tagging": { - "taggable": false - }, - "typeName": "AWS::PaymentCryptography::Alias" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AliasName" + ], + "description": "Definition of AWS::PaymentCryptography::Alias Resource Type", + "handlers": { + "create": { + "permissions": [ + "payment-cryptography:CreateAlias" + ] + }, + "delete": { + "permissions": [ + "payment-cryptography:DeleteAlias" + ] + }, + "list": { + "permissions": [ + "payment-cryptography:ListAliases" + ] + }, + "read": { + "permissions": [ + "payment-cryptography:GetAlias" + ] + }, + "update": { + "permissions": [ + "payment-cryptography:UpdateAlias" + ] + } + }, + "primaryIdentifier": [ + "/properties/AliasName" + ], + "properties": { + "AliasName": { + "maxLength": 256, + "minLength": 7, + "pattern": "^alias/[a-zA-Z0-9/_-]+$", + "type": "string" + }, + "KeyArn": { + "maxLength": 150, + "minLength": 70, + "pattern": "^arn:aws:payment-cryptography:[a-z]{2}-[a-z]{1,16}-[0-9]+:[0-9]{12}:key/[0-9a-zA-Z]{16,64}$", + "type": "string" + } + }, + "required": [ + "AliasName" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::PaymentCryptography::Alias" +} diff --git a/src/schema/aws-paymentcryptography-key.json b/src/schema/aws-paymentcryptography-key.json index e1d44222..82a91584 100644 --- a/src/schema/aws-paymentcryptography-key.json +++ b/src/schema/aws-paymentcryptography-key.json @@ -1,265 +1,298 @@ -{ - "additionalProperties": false, - "definitions": { - "KeyAlgorithm": { - "enum": [ - "TDES_2KEY", - "TDES_3KEY", - "AES_128", - "AES_192", - "AES_256", - "RSA_2048", - "RSA_3072", - "RSA_4096", - "ECC_NIST_P256", - "ECC_NIST_P384" - ], - "type": "string" - }, - "KeyAttributes": { - "additionalProperties": false, - "properties": { - "KeyAlgorithm": { - "$ref": "#/definitions/KeyAlgorithm" - }, - "KeyClass": { - "$ref": "#/definitions/KeyClass" - }, - "KeyModesOfUse": { - "$ref": "#/definitions/KeyModesOfUse" - }, - "KeyUsage": { - "$ref": "#/definitions/KeyUsage" - } - }, - "required": [ - "KeyAlgorithm", - "KeyClass", - "KeyModesOfUse", - "KeyUsage" - ], - "type": "object" - }, - "KeyCheckValueAlgorithm": { - "enum": [ - "CMAC", - "ANSI_X9_24" - ], - "type": "string" - }, - "KeyClass": { - "enum": [ - "SYMMETRIC_KEY", - "ASYMMETRIC_KEY_PAIR", - "PRIVATE_KEY", - "PUBLIC_KEY" - ], - "type": "string" - }, - "KeyModesOfUse": { - "additionalProperties": false, - "properties": { - "Decrypt": { - "default": false, - "type": "boolean" - }, - "DeriveKey": { - "default": false, - "type": "boolean" - }, - "Encrypt": { - "default": false, - "type": "boolean" - }, - "Generate": { - "default": false, - "type": "boolean" - }, - "NoRestrictions": { - "default": false, - "type": "boolean" - }, - "Sign": { - "default": false, - "type": "boolean" - }, - "Unwrap": { - "default": false, - "type": "boolean" - }, - "Verify": { - "default": false, - "type": "boolean" - }, - "Wrap": { - "default": false, - "type": "boolean" - } - }, - "type": "object" - }, - "KeyOrigin": { - "description": "Defines the source of a key", - "enum": [ - "EXTERNAL", - "AWS_PAYMENT_CRYPTOGRAPHY" - ], - "type": "string" - }, - "KeyState": { - "description": "Defines the state of a key", - "enum": [ - "CREATE_IN_PROGRESS", - "CREATE_COMPLETE", - "DELETE_PENDING", - "DELETE_COMPLETE" - ], - "type": "string" - }, - "KeyUsage": { - "enum": [ - "TR31_B0_BASE_DERIVATION_KEY", - "TR31_C0_CARD_VERIFICATION_KEY", - "TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY", - "TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION", - "TR31_E0_EMV_MKEY_APP_CRYPTOGRAMS", - "TR31_E1_EMV_MKEY_CONFIDENTIALITY", - "TR31_E2_EMV_MKEY_INTEGRITY", - "TR31_E4_EMV_MKEY_DYNAMIC_NUMBERS", - "TR31_E5_EMV_MKEY_CARD_PERSONALIZATION", - "TR31_E6_EMV_MKEY_OTHER", - "TR31_K0_KEY_ENCRYPTION_KEY", - "TR31_K1_KEY_BLOCK_PROTECTION_KEY", - "TR31_K3_ASYMMETRIC_KEY_FOR_KEY_AGREEMENT", - "TR31_M3_ISO_9797_3_MAC_KEY", - "TR31_M1_ISO_9797_1_MAC_KEY", - "TR31_M6_ISO_9797_5_CMAC_KEY", - "TR31_M7_HMAC_KEY", - "TR31_P0_PIN_ENCRYPTION_KEY", - "TR31_P1_PIN_GENERATION_KEY", - "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE", - "TR31_V1_IBM3624_PIN_VERIFICATION_KEY", - "TR31_V2_VISA_PIN_VERIFICATION_KEY", - "TR31_K2_TR34_ASYMMETRIC_KEY" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::PaymentCryptography::Key Resource Type", - "handlers": { - "create": { - "permissions": [ - "payment-cryptography:GetKey", - "payment-cryptography:CreateKey", - "payment-cryptography:TagResource" - ] - }, - "delete": { - "permissions": [ - "payment-cryptography:GetKey", - "payment-cryptography:DeleteKey" - ] - }, - "list": { - "permissions": [ - "payment-cryptography:ListKeys" - ] - }, - "read": { - "permissions": [ - "payment-cryptography:GetKey", - "payment-cryptography:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "payment-cryptography:GetKey", - "payment-cryptography:ListTagsForResource", - "payment-cryptography:TagResource", - "payment-cryptography:UntagResource", - "payment-cryptography:StartKeyUsage", - "payment-cryptography:StopKeyUsage" - ] - } - }, - "primaryIdentifier": [ - "/properties/KeyIdentifier" - ], - "properties": { - "Enabled": { - "type": "boolean" - }, - "Exportable": { - "type": "boolean" - }, - "KeyAttributes": { - "$ref": "#/definitions/KeyAttributes" - }, - "KeyCheckValueAlgorithm": { - "$ref": "#/definitions/KeyCheckValueAlgorithm" - }, - "KeyIdentifier": { - "maxLength": 322, - "minLength": 7, - "pattern": "^arn:aws:payment-cryptography:[a-z]{2}-[a-z]{1,16}-[0-9]+:[0-9]{12}:(key/[0-9a-zA-Z]{16,64}|alias/[a-zA-Z0-9/_-]+)$|^alias/[a-zA-Z0-9/_-]+$", - "type": "string" - }, - "KeyOrigin": { - "$ref": "#/definitions/KeyOrigin" - }, - "KeyState": { - "$ref": "#/definitions/KeyState" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/KeyIdentifier", - "/properties/KeyOrigin", - "/properties/KeyState" - ], - "required": [ - "Exportable", - "KeyAttributes" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "payment-cryptography:ListTagsForResource", - "payment-cryptography:TagResource", - "payment-cryptography:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::PaymentCryptography::Key" -} +{ + "additionalProperties": false, + "definitions": { + "DeriveKeyUsage": { + "enum": [ + "TR31_B0_BASE_DERIVATION_KEY", + "TR31_C0_CARD_VERIFICATION_KEY", + "TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY", + "TR31_E0_EMV_MKEY_APP_CRYPTOGRAMS", + "TR31_E1_EMV_MKEY_CONFIDENTIALITY", + "TR31_E2_EMV_MKEY_INTEGRITY", + "TR31_E4_EMV_MKEY_DYNAMIC_NUMBERS", + "TR31_E5_EMV_MKEY_CARD_PERSONALIZATION", + "TR31_E6_EMV_MKEY_OTHER", + "TR31_K0_KEY_ENCRYPTION_KEY", + "TR31_K1_KEY_BLOCK_PROTECTION_KEY", + "TR31_M3_ISO_9797_3_MAC_KEY", + "TR31_M1_ISO_9797_1_MAC_KEY", + "TR31_M6_ISO_9797_5_CMAC_KEY", + "TR31_M7_HMAC_KEY", + "TR31_P0_PIN_ENCRYPTION_KEY", + "TR31_P1_PIN_GENERATION_KEY", + "TR31_V1_IBM3624_PIN_VERIFICATION_KEY", + "TR31_V2_VISA_PIN_VERIFICATION_KEY" + ], + "type": "string" + }, + "KeyAlgorithm": { + "enum": [ + "TDES_2KEY", + "TDES_3KEY", + "AES_128", + "AES_192", + "AES_256", + "HMAC_SHA256", + "HMAC_SHA384", + "HMAC_SHA512", + "HMAC_SHA224", + "RSA_2048", + "RSA_3072", + "RSA_4096", + "ECC_NIST_P256", + "ECC_NIST_P384", + "ECC_NIST_P521" + ], + "type": "string" + }, + "KeyAttributes": { + "additionalProperties": false, + "properties": { + "KeyAlgorithm": { + "$ref": "#/definitions/KeyAlgorithm" + }, + "KeyClass": { + "$ref": "#/definitions/KeyClass" + }, + "KeyModesOfUse": { + "$ref": "#/definitions/KeyModesOfUse" + }, + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + } + }, + "required": [ + "KeyAlgorithm", + "KeyClass", + "KeyModesOfUse", + "KeyUsage" + ], + "type": "object" + }, + "KeyCheckValueAlgorithm": { + "enum": [ + "CMAC", + "ANSI_X9_24", + "HMAC" + ], + "type": "string" + }, + "KeyClass": { + "enum": [ + "SYMMETRIC_KEY", + "ASYMMETRIC_KEY_PAIR", + "PRIVATE_KEY", + "PUBLIC_KEY" + ], + "type": "string" + }, + "KeyModesOfUse": { + "additionalProperties": false, + "properties": { + "Decrypt": { + "default": false, + "type": "boolean" + }, + "DeriveKey": { + "default": false, + "type": "boolean" + }, + "Encrypt": { + "default": false, + "type": "boolean" + }, + "Generate": { + "default": false, + "type": "boolean" + }, + "NoRestrictions": { + "default": false, + "type": "boolean" + }, + "Sign": { + "default": false, + "type": "boolean" + }, + "Unwrap": { + "default": false, + "type": "boolean" + }, + "Verify": { + "default": false, + "type": "boolean" + }, + "Wrap": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "KeyOrigin": { + "description": "Defines the source of a key", + "enum": [ + "EXTERNAL", + "AWS_PAYMENT_CRYPTOGRAPHY" + ], + "type": "string" + }, + "KeyState": { + "description": "Defines the state of a key", + "enum": [ + "CREATE_IN_PROGRESS", + "CREATE_COMPLETE", + "DELETE_PENDING", + "DELETE_COMPLETE" + ], + "type": "string" + }, + "KeyUsage": { + "enum": [ + "TR31_B0_BASE_DERIVATION_KEY", + "TR31_C0_CARD_VERIFICATION_KEY", + "TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY", + "TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION", + "TR31_E0_EMV_MKEY_APP_CRYPTOGRAMS", + "TR31_E1_EMV_MKEY_CONFIDENTIALITY", + "TR31_E2_EMV_MKEY_INTEGRITY", + "TR31_E4_EMV_MKEY_DYNAMIC_NUMBERS", + "TR31_E5_EMV_MKEY_CARD_PERSONALIZATION", + "TR31_E6_EMV_MKEY_OTHER", + "TR31_K0_KEY_ENCRYPTION_KEY", + "TR31_K1_KEY_BLOCK_PROTECTION_KEY", + "TR31_K3_ASYMMETRIC_KEY_FOR_KEY_AGREEMENT", + "TR31_M3_ISO_9797_3_MAC_KEY", + "TR31_M1_ISO_9797_1_MAC_KEY", + "TR31_M6_ISO_9797_5_CMAC_KEY", + "TR31_M7_HMAC_KEY", + "TR31_P0_PIN_ENCRYPTION_KEY", + "TR31_P1_PIN_GENERATION_KEY", + "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE", + "TR31_V1_IBM3624_PIN_VERIFICATION_KEY", + "TR31_V2_VISA_PIN_VERIFICATION_KEY", + "TR31_K2_TR34_ASYMMETRIC_KEY" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::PaymentCryptography::Key Resource Type", + "handlers": { + "create": { + "permissions": [ + "payment-cryptography:GetKey", + "payment-cryptography:CreateKey", + "payment-cryptography:TagResource" + ] + }, + "delete": { + "permissions": [ + "payment-cryptography:GetKey", + "payment-cryptography:DeleteKey" + ] + }, + "list": { + "permissions": [ + "payment-cryptography:ListKeys" + ] + }, + "read": { + "permissions": [ + "payment-cryptography:GetKey", + "payment-cryptography:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "payment-cryptography:GetKey", + "payment-cryptography:ListTagsForResource", + "payment-cryptography:TagResource", + "payment-cryptography:UntagResource", + "payment-cryptography:StartKeyUsage", + "payment-cryptography:StopKeyUsage" + ] + } + }, + "primaryIdentifier": [ + "/properties/KeyIdentifier" + ], + "properties": { + "DeriveKeyUsage": { + "$ref": "#/definitions/DeriveKeyUsage" + }, + "Enabled": { + "type": "boolean" + }, + "Exportable": { + "type": "boolean" + }, + "KeyAttributes": { + "$ref": "#/definitions/KeyAttributes" + }, + "KeyCheckValueAlgorithm": { + "$ref": "#/definitions/KeyCheckValueAlgorithm" + }, + "KeyIdentifier": { + "maxLength": 322, + "minLength": 7, + "pattern": "^arn:aws:payment-cryptography:[a-z]{2}-[a-z]{1,16}-[0-9]+:[0-9]{12}:(key/[0-9a-zA-Z]{16,64}|alias/[a-zA-Z0-9/_-]+)$|^alias/[a-zA-Z0-9/_-]+$", + "type": "string" + }, + "KeyOrigin": { + "$ref": "#/definitions/KeyOrigin" + }, + "KeyState": { + "$ref": "#/definitions/KeyState" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/KeyIdentifier", + "/properties/KeyOrigin", + "/properties/KeyState" + ], + "required": [ + "Exportable", + "KeyAttributes" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "payment-cryptography:ListTagsForResource", + "payment-cryptography:TagResource", + "payment-cryptography:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PaymentCryptography::Key" +} diff --git a/src/schema/aws-pcaconnectorad-connector.json b/src/schema/aws-pcaconnectorad-connector.json index c7c22e01..125afed5 100644 --- a/src/schema/aws-pcaconnectorad-connector.json +++ b/src/schema/aws-pcaconnectorad-connector.json @@ -1,133 +1,144 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CertificateAuthorityArn", - "/properties/DirectoryId", - "/properties/VpcInformation" - ], - "definitions": { - "Tags": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - }, - "VpcInformation": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "items": { - "maxLength": 20, - "minLength": 11, - "pattern": "^(?:sg-[0-9a-f]{8}|sg-[0-9a-f]{17})$", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "SecurityGroupIds" - ], - "type": "object" - } - }, - "description": "Definition of AWS::PCAConnectorAD::Connector Resource Type", - "handlers": { - "create": { - "permissions": [ - "acm-pca:DescribeCertificateAuthority", - "acm-pca:GetCertificateAuthorityCertificate", - "acm-pca:GetCertificate", - "acm-pca:IssueCertificate", - "ds:DescribeDirectories", - "ec2:CreateTags", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "pca-connector-ad:CreateConnector", - "pca-connector-ad:GetConnector", - "pca-connector-ad:TagResource" - ] - }, - "delete": { - "permissions": [ - "ec2:DeleteVpcEndpoints", - "ec2:DescribeVpcEndpoints", - "pca-connector-ad:GetConnector", - "pca-connector-ad:DeleteConnector", - "pca-connector-ad:UntagResource" - ] - }, - "list": { - "permissions": [ - "pca-connector-ad:ListConnectors" - ] - }, - "read": { - "permissions": [ - "pca-connector-ad:ListTagsForResource", - "pca-connector-ad:GetConnector" - ] - }, - "update": { - "permissions": [ - "pca-connector-ad:ListTagsForResource", - "pca-connector-ad:TagResource", - "pca-connector-ad:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConnectorArn" - ], - "properties": { - "CertificateAuthorityArn": { - "maxLength": 200, - "minLength": 5, - "pattern": "^arn:[\\w-]+:acm-pca:[\\w-]+:[0-9]+:certificate-authority(\\/[\\w-]+)$", - "type": "string" - }, - "ConnectorArn": { - "maxLength": 200, - "minLength": 5, - "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector(\\/[\\w-]+)$", - "type": "string" - }, - "DirectoryId": { - "pattern": "^d-[0-9a-f]{10}$", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/Tags" - }, - "VpcInformation": { - "$ref": "#/definitions/VpcInformation" - } - }, - "readOnlyProperties": [ - "/properties/ConnectorArn" - ], - "required": [ - "CertificateAuthorityArn", - "DirectoryId", - "VpcInformation" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "pca-connector-ad:ListTagsForResource", - "pca-connector-ad:TagResource", - "pca-connector-ad:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::PCAConnectorAD::Connector" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CertificateAuthorityArn", + "/properties/DirectoryId", + "/properties/VpcInformation" + ], + "definitions": { + "Tags": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "Unit": { + "additionalProperties": false, + "type": "object" + }, + "VpcInformation": { + "additionalProperties": false, + "properties": { + "IpAddressType": { + "enum": [ + "IPV4", + "DUALSTACK" + ], + "type": "string" + }, + "SecurityGroupIds": { + "items": { + "maxLength": 20, + "minLength": 11, + "pattern": "^(?:sg-[0-9a-f]{8}|sg-[0-9a-f]{17})$", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "SecurityGroupIds" + ], + "type": "object" + } + }, + "description": "Represents a Connector that connects AWS PrivateCA and your directory", + "handlers": { + "create": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCertificate", + "acm-pca:GetCertificate", + "acm-pca:IssueCertificate", + "ds:DescribeDirectories", + "ec2:CreateTags", + "ec2:CreateVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "pca-connector-ad:CreateConnector", + "pca-connector-ad:GetConnector", + "pca-connector-ad:TagResource" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteVpcEndpoints", + "ec2:DescribeVpcEndpoints", + "pca-connector-ad:GetConnector", + "pca-connector-ad:DeleteConnector", + "pca-connector-ad:UntagResource" + ] + }, + "list": { + "permissions": [ + "pca-connector-ad:ListConnectors" + ] + }, + "read": { + "permissions": [ + "pca-connector-ad:ListTagsForResource", + "pca-connector-ad:GetConnector" + ] + }, + "update": { + "permissions": [ + "pca-connector-ad:ListTagsForResource", + "pca-connector-ad:TagResource", + "pca-connector-ad:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConnectorArn" + ], + "properties": { + "CertificateAuthorityArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:[\\w-]+:acm-pca:[\\w-]+:[0-9]+:certificate-authority\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", + "type": "string" + }, + "ConnectorArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", + "type": "string" + }, + "DirectoryId": { + "pattern": "^d-[0-9a-f]{10}$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags" + }, + "VpcInformation": { + "$ref": "#/definitions/VpcInformation" + } + }, + "readOnlyProperties": [ + "/properties/ConnectorArn" + ], + "required": [ + "CertificateAuthorityArn", + "DirectoryId", + "VpcInformation" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "pca-connector-ad:ListTagsForResource", + "pca-connector-ad:TagResource", + "pca-connector-ad:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PCAConnectorAD::Connector" +} diff --git a/src/schema/aws-pcaconnectorad-directoryregistration.json b/src/schema/aws-pcaconnectorad-directoryregistration.json index 1b149bf3..a477c410 100644 --- a/src/schema/aws-pcaconnectorad-directoryregistration.json +++ b/src/schema/aws-pcaconnectorad-directoryregistration.json @@ -1,94 +1,94 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DirectoryId" - ], - "definitions": { - "Tags": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::PCAConnectorAD::DirectoryRegistration Resource Type", - "handlers": { - "create": { - "permissions": [ - "ds:AuthorizeApplication", - "ds:DescribeDirectories", - "pca-connector-ad:GetDirectoryRegistration", - "pca-connector-ad:CreateDirectoryRegistration", - "pca-connector-ad:TagResource" - ] - }, - "delete": { - "permissions": [ - "ds:DescribeDirectories", - "ds:UnauthorizeApplication", - "ds:UpdateAuthorizedApplication", - "pca-connector-ad:GetDirectoryRegistration", - "pca-connector-ad:DeleteDirectoryRegistration", - "pca-connector-ad:UntagResource" - ] - }, - "list": { - "permissions": [ - "pca-connector-ad:ListDirectoryRegistrations" - ] - }, - "read": { - "permissions": [ - "pca-connector-ad:GetDirectoryRegistration", - "pca-connector-ad:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "pca-connector-ad:ListTagsForResource", - "pca-connector-ad:TagResource", - "pca-connector-ad:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/DirectoryRegistrationArn" - ], - "properties": { - "DirectoryId": { - "pattern": "^d-[0-9a-f]{10}$", - "type": "string" - }, - "DirectoryRegistrationArn": { - "maxLength": 200, - "minLength": 5, - "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:directory-registration(\\/[\\w-]+)$", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/Tags" - } - }, - "readOnlyProperties": [ - "/properties/DirectoryRegistrationArn" - ], - "required": [ - "DirectoryId" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "pca-connector-ad:ListTagsForResource", - "pca-connector-ad:TagResource", - "pca-connector-ad:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::PCAConnectorAD::DirectoryRegistration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DirectoryId" + ], + "definitions": { + "Tags": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::PCAConnectorAD::DirectoryRegistration Resource Type", + "handlers": { + "create": { + "permissions": [ + "ds:AuthorizeApplication", + "ds:DescribeDirectories", + "pca-connector-ad:GetDirectoryRegistration", + "pca-connector-ad:CreateDirectoryRegistration", + "pca-connector-ad:TagResource" + ] + }, + "delete": { + "permissions": [ + "ds:DescribeDirectories", + "ds:UnauthorizeApplication", + "ds:UpdateAuthorizedApplication", + "pca-connector-ad:GetDirectoryRegistration", + "pca-connector-ad:DeleteDirectoryRegistration", + "pca-connector-ad:UntagResource" + ] + }, + "list": { + "permissions": [ + "pca-connector-ad:ListDirectoryRegistrations" + ] + }, + "read": { + "permissions": [ + "pca-connector-ad:GetDirectoryRegistration", + "pca-connector-ad:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "pca-connector-ad:ListTagsForResource", + "pca-connector-ad:TagResource", + "pca-connector-ad:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DirectoryRegistrationArn" + ], + "properties": { + "DirectoryId": { + "pattern": "^d-[0-9a-f]{10}$", + "type": "string" + }, + "DirectoryRegistrationArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:directory-registration(\\/[\\w-]+)$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/DirectoryRegistrationArn" + ], + "required": [ + "DirectoryId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "pca-connector-ad:ListTagsForResource", + "pca-connector-ad:TagResource", + "pca-connector-ad:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PCAConnectorAD::DirectoryRegistration" +} diff --git a/src/schema/aws-pcaconnectorad-serviceprincipalname.json b/src/schema/aws-pcaconnectorad-serviceprincipalname.json index 1963eea9..8ea9757c 100644 --- a/src/schema/aws-pcaconnectorad-serviceprincipalname.json +++ b/src/schema/aws-pcaconnectorad-serviceprincipalname.json @@ -1,70 +1,70 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConnectorArn", - "/properties/DirectoryRegistrationArn" - ], - "description": "Definition of AWS::PCAConnectorAD::ServicePrincipalName Resource Type", - "handlers": { - "create": { - "permissions": [ - "ds:UpdateAuthorizedApplication", - "pca-connector-ad:GetServicePrincipalName", - "pca-connector-ad:CreateServicePrincipalName" - ] - }, - "delete": { - "permissions": [ - "ds:UpdateAuthorizedApplication", - "pca-connector-ad:GetServicePrincipalName", - "pca-connector-ad:DeleteServicePrincipalName" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "DirectoryRegistrationArn": { - "$ref": "resource-schema.json#/properties/DirectoryRegistrationArn" - } - }, - "required": [ - "DirectoryRegistrationArn" - ] - }, - "permissions": [ - "pca-connector-ad:ListServicePrincipalNames" - ] - }, - "read": { - "permissions": [ - "pca-connector-ad:GetServicePrincipalName" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConnectorArn", - "/properties/DirectoryRegistrationArn" - ], - "properties": { - "ConnectorArn": { - "maxLength": 200, - "minLength": 5, - "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector(\\/[\\w-]+)$", - "type": "string" - }, - "DirectoryRegistrationArn": { - "maxLength": 200, - "minLength": 5, - "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:directory-registration(\\/[\\w-]+)$", - "type": "string" - } - }, - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcaconnectorad", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::PCAConnectorAD::ServicePrincipalName" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConnectorArn", + "/properties/DirectoryRegistrationArn" + ], + "description": "Definition of AWS::PCAConnectorAD::ServicePrincipalName Resource Type", + "handlers": { + "create": { + "permissions": [ + "ds:UpdateAuthorizedApplication", + "pca-connector-ad:GetServicePrincipalName", + "pca-connector-ad:CreateServicePrincipalName" + ] + }, + "delete": { + "permissions": [ + "ds:UpdateAuthorizedApplication", + "pca-connector-ad:GetServicePrincipalName", + "pca-connector-ad:DeleteServicePrincipalName" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "DirectoryRegistrationArn": { + "$ref": "resource-schema.json#/properties/DirectoryRegistrationArn" + } + }, + "required": [ + "DirectoryRegistrationArn" + ] + }, + "permissions": [ + "pca-connector-ad:ListServicePrincipalNames" + ] + }, + "read": { + "permissions": [ + "pca-connector-ad:GetServicePrincipalName" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConnectorArn", + "/properties/DirectoryRegistrationArn" + ], + "properties": { + "ConnectorArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector(\\/[\\w-]+)$", + "type": "string" + }, + "DirectoryRegistrationArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:directory-registration(\\/[\\w-]+)$", + "type": "string" + } + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcaconnectorad", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::PCAConnectorAD::ServicePrincipalName" +} diff --git a/src/schema/aws-pcaconnectorad-template.json b/src/schema/aws-pcaconnectorad-template.json index 3dd32145..43b778e5 100644 --- a/src/schema/aws-pcaconnectorad-template.json +++ b/src/schema/aws-pcaconnectorad-template.json @@ -1,1040 +1,1040 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConnectorArn", - "/properties/Name" - ], - "definitions": { - "ApplicationPolicies": { - "additionalProperties": false, - "properties": { - "Critical": { - "type": "boolean" - }, - "Policies": { - "items": { - "$ref": "#/definitions/ApplicationPolicy" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Policies" - ], - "type": "object" - }, - "ApplicationPolicy": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "PolicyType": { - "$ref": "#/definitions/ApplicationPolicyType" - } - }, - "required": [ - "PolicyType" - ], - "title": "PolicyType", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "PolicyObjectIdentifier": { - "maxLength": 64, - "minLength": 1, - "pattern": "^([0-2])\\.([0-9]|([0-3][0-9]))(\\.([0-9]+)){0,126}$", - "type": "string" - } - }, - "required": [ - "PolicyObjectIdentifier" - ], - "title": "PolicyObjectIdentifier", - "type": "object" - } - ] - }, - "ApplicationPolicyType": { - "enum": [ - "ALL_APPLICATION_POLICIES", - "ANY_PURPOSE", - "ATTESTATION_IDENTITY_KEY_CERTIFICATE", - "CERTIFICATE_REQUEST_AGENT", - "CLIENT_AUTHENTICATION", - "CODE_SIGNING", - "CTL_USAGE", - "DIGITAL_RIGHTS", - "DIRECTORY_SERVICE_EMAIL_REPLICATION", - "DISALLOWED_LIST", - "DNS_SERVER_TRUST", - "DOCUMENT_ENCRYPTION", - "DOCUMENT_SIGNING", - "DYNAMIC_CODE_GENERATOR", - "EARLY_LAUNCH_ANTIMALWARE_DRIVER", - "EMBEDDED_WINDOWS_SYSTEM_COMPONENT_VERIFICATION", - "ENCLAVE", - "ENCRYPTING_FILE_SYSTEM", - "ENDORSEMENT_KEY_CERTIFICATE", - "FILE_RECOVERY", - "HAL_EXTENSION", - "IP_SECURITY_END_SYSTEM", - "IP_SECURITY_IKE_INTERMEDIATE", - "IP_SECURITY_TUNNEL_TERMINATION", - "IP_SECURITY_USER", - "ISOLATED_USER_MODE", - "KDC_AUTHENTICATION", - "KERNEL_MODE_CODE_SIGNING", - "KEY_PACK_LICENSES", - "KEY_RECOVERY", - "KEY_RECOVERY_AGENT", - "LICENSE_SERVER_VERIFICATION", - "LIFETIME_SIGNING", - "MICROSOFT_PUBLISHER", - "MICROSOFT_TIME_STAMPING", - "MICROSOFT_TRUST_LIST_SIGNING", - "OCSP_SIGNING", - "OEM_WINDOWS_SYSTEM_COMPONENT_VERIFICATION", - "PLATFORM_CERTIFICATE", - "PREVIEW_BUILD_SIGNING", - "PRIVATE_KEY_ARCHIVAL", - "PROTECTED_PROCESS_LIGHT_VERIFICATION", - "PROTECTED_PROCESS_VERIFICATION", - "QUALIFIED_SUBORDINATION", - "REVOKED_LIST_SIGNER", - "ROOT_PROGRAM_AUTO_UPDATE_CA_REVOCATION", - "ROOT_PROGRAM_AUTO_UPDATE_END_REVOCATION", - "ROOT_PROGRAM_NO_OSCP_FAILOVER_TO_CRL", - "ROOT_LIST_SIGNER", - "SECURE_EMAIL", - "SERVER_AUTHENTICATION", - "SMART_CARD_LOGIN", - "SPC_ENCRYPTED_DIGEST_RETRY_COUNT", - "SPC_RELAXED_PE_MARKER_CHECK", - "TIME_STAMPING", - "WINDOWS_HARDWARE_DRIVER_ATTESTED_VERIFICATION", - "WINDOWS_HARDWARE_DRIVER_EXTENDED_VERIFICATION", - "WINDOWS_HARDWARE_DRIVER_VERIFICATION", - "WINDOWS_HELLO_RECOVERY_KEY_ENCRYPTION", - "WINDOWS_KITS_COMPONENT", - "WINDOWS_RT_VERIFICATION", - "WINDOWS_SOFTWARE_EXTENSION_VERIFICATION", - "WINDOWS_STORE", - "WINDOWS_SYSTEM_COMPONENT_VERIFICATION", - "WINDOWS_TCB_COMPONENT", - "WINDOWS_THIRD_PARTY_APPLICATION_COMPONENT", - "WINDOWS_UPDATE" - ], - "type": "string" - }, - "CertificateValidity": { - "additionalProperties": false, - "properties": { - "RenewalPeriod": { - "$ref": "#/definitions/ValidityPeriod" - }, - "ValidityPeriod": { - "$ref": "#/definitions/ValidityPeriod" - } - }, - "required": [ - "RenewalPeriod", - "ValidityPeriod" - ], - "type": "object" - }, - "ClientCompatibilityV2": { - "enum": [ - "WINDOWS_SERVER_2003", - "WINDOWS_SERVER_2008", - "WINDOWS_SERVER_2008_R2", - "WINDOWS_SERVER_2012", - "WINDOWS_SERVER_2012_R2", - "WINDOWS_SERVER_2016" - ], - "type": "string" - }, - "ClientCompatibilityV3": { - "enum": [ - "WINDOWS_SERVER_2008", - "WINDOWS_SERVER_2008_R2", - "WINDOWS_SERVER_2012", - "WINDOWS_SERVER_2012_R2", - "WINDOWS_SERVER_2016" - ], - "type": "string" - }, - "ClientCompatibilityV4": { - "enum": [ - "WINDOWS_SERVER_2012", - "WINDOWS_SERVER_2012_R2", - "WINDOWS_SERVER_2016" - ], - "type": "string" - }, - "EnrollmentFlagsV2": { - "additionalProperties": false, - "properties": { - "EnableKeyReuseOnNtTokenKeysetStorageFull": { - "type": "boolean" - }, - "IncludeSymmetricAlgorithms": { - "type": "boolean" - }, - "NoSecurityExtension": { - "type": "boolean" - }, - "RemoveInvalidCertificateFromPersonalStore": { - "type": "boolean" - }, - "UserInteractionRequired": { - "type": "boolean" - } - }, - "type": "object" - }, - "EnrollmentFlagsV3": { - "additionalProperties": false, - "properties": { - "EnableKeyReuseOnNtTokenKeysetStorageFull": { - "type": "boolean" - }, - "IncludeSymmetricAlgorithms": { - "type": "boolean" - }, - "NoSecurityExtension": { - "type": "boolean" - }, - "RemoveInvalidCertificateFromPersonalStore": { - "type": "boolean" - }, - "UserInteractionRequired": { - "type": "boolean" - } - }, - "type": "object" - }, - "EnrollmentFlagsV4": { - "additionalProperties": false, - "properties": { - "EnableKeyReuseOnNtTokenKeysetStorageFull": { - "type": "boolean" - }, - "IncludeSymmetricAlgorithms": { - "type": "boolean" - }, - "NoSecurityExtension": { - "type": "boolean" - }, - "RemoveInvalidCertificateFromPersonalStore": { - "type": "boolean" - }, - "UserInteractionRequired": { - "type": "boolean" - } - }, - "type": "object" - }, - "ExtensionsV2": { - "additionalProperties": false, - "properties": { - "ApplicationPolicies": { - "$ref": "#/definitions/ApplicationPolicies" - }, - "KeyUsage": { - "$ref": "#/definitions/KeyUsage" - } - }, - "required": [ - "KeyUsage" - ], - "type": "object" - }, - "ExtensionsV3": { - "additionalProperties": false, - "properties": { - "ApplicationPolicies": { - "$ref": "#/definitions/ApplicationPolicies" - }, - "KeyUsage": { - "$ref": "#/definitions/KeyUsage" - } - }, - "required": [ - "KeyUsage" - ], - "type": "object" - }, - "ExtensionsV4": { - "additionalProperties": false, - "properties": { - "ApplicationPolicies": { - "$ref": "#/definitions/ApplicationPolicies" - }, - "KeyUsage": { - "$ref": "#/definitions/KeyUsage" - } - }, - "required": [ - "KeyUsage" - ], - "type": "object" - }, - "GeneralFlagsV2": { - "additionalProperties": false, - "properties": { - "AutoEnrollment": { - "type": "boolean" - }, - "MachineType": { - "type": "boolean" - } - }, - "type": "object" - }, - "GeneralFlagsV3": { - "additionalProperties": false, - "properties": { - "AutoEnrollment": { - "type": "boolean" - }, - "MachineType": { - "type": "boolean" - } - }, - "type": "object" - }, - "GeneralFlagsV4": { - "additionalProperties": false, - "properties": { - "AutoEnrollment": { - "type": "boolean" - }, - "MachineType": { - "type": "boolean" - } - }, - "type": "object" - }, - "HashAlgorithm": { - "enum": [ - "SHA256", - "SHA384", - "SHA512" - ], - "type": "string" - }, - "KeySpec": { - "enum": [ - "KEY_EXCHANGE", - "SIGNATURE" - ], - "type": "string" - }, - "KeyUsage": { - "additionalProperties": false, - "properties": { - "Critical": { - "type": "boolean" - }, - "UsageFlags": { - "$ref": "#/definitions/KeyUsageFlags" - } - }, - "required": [ - "UsageFlags" - ], - "type": "object" - }, - "KeyUsageFlags": { - "additionalProperties": false, - "properties": { - "DataEncipherment": { - "type": "boolean" - }, - "DigitalSignature": { - "type": "boolean" - }, - "KeyAgreement": { - "type": "boolean" - }, - "KeyEncipherment": { - "type": "boolean" - }, - "NonRepudiation": { - "type": "boolean" - } - }, - "type": "object" - }, - "KeyUsageProperty": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "PropertyType": { - "$ref": "#/definitions/KeyUsagePropertyType" - } - }, - "required": [ - "PropertyType" - ], - "title": "PropertyType", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "PropertyFlags": { - "$ref": "#/definitions/KeyUsagePropertyFlags" - } - }, - "required": [ - "PropertyFlags" - ], - "title": "PropertyFlags", - "type": "object" - } - ] - }, - "KeyUsagePropertyFlags": { - "additionalProperties": false, - "properties": { - "Decrypt": { - "type": "boolean" - }, - "KeyAgreement": { - "type": "boolean" - }, - "Sign": { - "type": "boolean" - } - }, - "type": "object" - }, - "KeyUsagePropertyType": { - "enum": [ - "ALL" - ], - "type": "string" - }, - "PrivateKeyAlgorithm": { - "enum": [ - "RSA", - "ECDH_P256", - "ECDH_P384", - "ECDH_P521" - ], - "type": "string" - }, - "PrivateKeyAttributesV2": { - "additionalProperties": false, - "properties": { - "CryptoProviders": { - "items": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "KeySpec": { - "$ref": "#/definitions/KeySpec" - }, - "MinimalKeyLength": { - "minimum": 1, - "type": "number" - } - }, - "required": [ - "KeySpec", - "MinimalKeyLength" - ], - "type": "object" - }, - "PrivateKeyAttributesV3": { - "additionalProperties": false, - "properties": { - "Algorithm": { - "$ref": "#/definitions/PrivateKeyAlgorithm" - }, - "CryptoProviders": { - "items": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "KeySpec": { - "$ref": "#/definitions/KeySpec" - }, - "KeyUsageProperty": { - "$ref": "#/definitions/KeyUsageProperty" - }, - "MinimalKeyLength": { - "minimum": 1, - "type": "number" - } - }, - "required": [ - "Algorithm", - "KeySpec", - "KeyUsageProperty", - "MinimalKeyLength" - ], - "type": "object" - }, - "PrivateKeyAttributesV4": { - "additionalProperties": false, - "properties": { - "Algorithm": { - "$ref": "#/definitions/PrivateKeyAlgorithm" - }, - "CryptoProviders": { - "items": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "KeySpec": { - "$ref": "#/definitions/KeySpec" - }, - "KeyUsageProperty": { - "$ref": "#/definitions/KeyUsageProperty" - }, - "MinimalKeyLength": { - "minimum": 1, - "type": "number" - } - }, - "required": [ - "KeySpec", - "MinimalKeyLength" - ], - "type": "object" - }, - "PrivateKeyFlagsV2": { - "additionalProperties": false, - "properties": { - "ClientVersion": { - "$ref": "#/definitions/ClientCompatibilityV2" - }, - "ExportableKey": { - "type": "boolean" - }, - "StrongKeyProtectionRequired": { - "type": "boolean" - } - }, - "required": [ - "ClientVersion" - ], - "type": "object" - }, - "PrivateKeyFlagsV3": { - "additionalProperties": false, - "properties": { - "ClientVersion": { - "$ref": "#/definitions/ClientCompatibilityV3" - }, - "ExportableKey": { - "type": "boolean" - }, - "RequireAlternateSignatureAlgorithm": { - "type": "boolean" - }, - "StrongKeyProtectionRequired": { - "type": "boolean" - } - }, - "required": [ - "ClientVersion" - ], - "type": "object" - }, - "PrivateKeyFlagsV4": { - "additionalProperties": false, - "properties": { - "ClientVersion": { - "$ref": "#/definitions/ClientCompatibilityV4" - }, - "ExportableKey": { - "type": "boolean" - }, - "RequireAlternateSignatureAlgorithm": { - "type": "boolean" - }, - "RequireSameKeyRenewal": { - "type": "boolean" - }, - "StrongKeyProtectionRequired": { - "type": "boolean" - }, - "UseLegacyProvider": { - "type": "boolean" - } - }, - "required": [ - "ClientVersion" - ], - "type": "object" - }, - "SubjectNameFlagsV2": { - "additionalProperties": false, - "properties": { - "RequireCommonName": { - "type": "boolean" - }, - "RequireDirectoryPath": { - "type": "boolean" - }, - "RequireDnsAsCn": { - "type": "boolean" - }, - "RequireEmail": { - "type": "boolean" - }, - "SanRequireDirectoryGuid": { - "type": "boolean" - }, - "SanRequireDns": { - "type": "boolean" - }, - "SanRequireDomainDns": { - "type": "boolean" - }, - "SanRequireEmail": { - "type": "boolean" - }, - "SanRequireSpn": { - "type": "boolean" - }, - "SanRequireUpn": { - "type": "boolean" - } - }, - "type": "object" - }, - "SubjectNameFlagsV3": { - "additionalProperties": false, - "properties": { - "RequireCommonName": { - "type": "boolean" - }, - "RequireDirectoryPath": { - "type": "boolean" - }, - "RequireDnsAsCn": { - "type": "boolean" - }, - "RequireEmail": { - "type": "boolean" - }, - "SanRequireDirectoryGuid": { - "type": "boolean" - }, - "SanRequireDns": { - "type": "boolean" - }, - "SanRequireDomainDns": { - "type": "boolean" - }, - "SanRequireEmail": { - "type": "boolean" - }, - "SanRequireSpn": { - "type": "boolean" - }, - "SanRequireUpn": { - "type": "boolean" - } - }, - "type": "object" - }, - "SubjectNameFlagsV4": { - "additionalProperties": false, - "properties": { - "RequireCommonName": { - "type": "boolean" - }, - "RequireDirectoryPath": { - "type": "boolean" - }, - "RequireDnsAsCn": { - "type": "boolean" - }, - "RequireEmail": { - "type": "boolean" - }, - "SanRequireDirectoryGuid": { - "type": "boolean" - }, - "SanRequireDns": { - "type": "boolean" - }, - "SanRequireDomainDns": { - "type": "boolean" - }, - "SanRequireEmail": { - "type": "boolean" - }, - "SanRequireSpn": { - "type": "boolean" - }, - "SanRequireUpn": { - "type": "boolean" - } - }, - "type": "object" - }, - "Tags": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - }, - "TemplateDefinition": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "TemplateV2": { - "$ref": "#/definitions/TemplateV2" - } - }, - "required": [ - "TemplateV2" - ], - "title": "TemplateV2", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "TemplateV3": { - "$ref": "#/definitions/TemplateV3" - } - }, - "required": [ - "TemplateV3" - ], - "title": "TemplateV3", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "TemplateV4": { - "$ref": "#/definitions/TemplateV4" - } - }, - "required": [ - "TemplateV4" - ], - "title": "TemplateV4", - "type": "object" - } - ] - }, - "TemplateV2": { - "additionalProperties": false, - "properties": { - "CertificateValidity": { - "$ref": "#/definitions/CertificateValidity" - }, - "EnrollmentFlags": { - "$ref": "#/definitions/EnrollmentFlagsV2" - }, - "Extensions": { - "$ref": "#/definitions/ExtensionsV2" - }, - "GeneralFlags": { - "$ref": "#/definitions/GeneralFlagsV2" - }, - "PrivateKeyAttributes": { - "$ref": "#/definitions/PrivateKeyAttributesV2" - }, - "PrivateKeyFlags": { - "$ref": "#/definitions/PrivateKeyFlagsV2" - }, - "SubjectNameFlags": { - "$ref": "#/definitions/SubjectNameFlagsV2" - }, - "SupersededTemplates": { - "items": { - "maxLength": 64, - "minLength": 1, - "pattern": "^(?!^\\s+$)((?![\\x5c'\\x2b,;<=>#\\x22])([\\x20-\\x7E]))+$", - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "CertificateValidity", - "EnrollmentFlags", - "Extensions", - "GeneralFlags", - "PrivateKeyAttributes", - "PrivateKeyFlags", - "SubjectNameFlags" - ], - "type": "object" - }, - "TemplateV3": { - "additionalProperties": false, - "properties": { - "CertificateValidity": { - "$ref": "#/definitions/CertificateValidity" - }, - "EnrollmentFlags": { - "$ref": "#/definitions/EnrollmentFlagsV3" - }, - "Extensions": { - "$ref": "#/definitions/ExtensionsV3" - }, - "GeneralFlags": { - "$ref": "#/definitions/GeneralFlagsV3" - }, - "HashAlgorithm": { - "$ref": "#/definitions/HashAlgorithm" - }, - "PrivateKeyAttributes": { - "$ref": "#/definitions/PrivateKeyAttributesV3" - }, - "PrivateKeyFlags": { - "$ref": "#/definitions/PrivateKeyFlagsV3" - }, - "SubjectNameFlags": { - "$ref": "#/definitions/SubjectNameFlagsV3" - }, - "SupersededTemplates": { - "items": { - "maxLength": 64, - "minLength": 1, - "pattern": "^(?!^\\s+$)((?![\\x5c'\\x2b,;<=>#\\x22])([\\x20-\\x7E]))+$", - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "CertificateValidity", - "EnrollmentFlags", - "Extensions", - "GeneralFlags", - "HashAlgorithm", - "PrivateKeyAttributes", - "PrivateKeyFlags", - "SubjectNameFlags" - ], - "type": "object" - }, - "TemplateV4": { - "additionalProperties": false, - "properties": { - "CertificateValidity": { - "$ref": "#/definitions/CertificateValidity" - }, - "EnrollmentFlags": { - "$ref": "#/definitions/EnrollmentFlagsV4" - }, - "Extensions": { - "$ref": "#/definitions/ExtensionsV4" - }, - "GeneralFlags": { - "$ref": "#/definitions/GeneralFlagsV4" - }, - "HashAlgorithm": { - "$ref": "#/definitions/HashAlgorithm" - }, - "PrivateKeyAttributes": { - "$ref": "#/definitions/PrivateKeyAttributesV4" - }, - "PrivateKeyFlags": { - "$ref": "#/definitions/PrivateKeyFlagsV4" - }, - "SubjectNameFlags": { - "$ref": "#/definitions/SubjectNameFlagsV4" - }, - "SupersededTemplates": { - "items": { - "maxLength": 64, - "minLength": 1, - "pattern": "^(?!^\\s+$)((?![\\x5c'\\x2b,;<=>#\\x22])([\\x20-\\x7E]))+$", - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "CertificateValidity", - "EnrollmentFlags", - "Extensions", - "GeneralFlags", - "PrivateKeyAttributes", - "PrivateKeyFlags", - "SubjectNameFlags" - ], - "type": "object" - }, - "ValidityPeriod": { - "additionalProperties": false, - "properties": { - "Period": { - "maximum": 8766000, - "minimum": 1, - "type": "number" - }, - "PeriodType": { - "$ref": "#/definitions/ValidityPeriodType" - } - }, - "required": [ - "Period", - "PeriodType" - ], - "type": "object" - }, - "ValidityPeriodType": { - "enum": [ - "HOURS", - "DAYS", - "WEEKS", - "MONTHS", - "YEARS" - ], - "type": "string" - } - }, - "description": "Represents a template that defines certificate configurations, both for issuance and client handling", - "handlers": { - "create": { - "permissions": [ - "pca-connector-ad:CreateTemplate", - "pca-connector-ad:TagResource" - ] - }, - "delete": { - "permissions": [ - "pca-connector-ad:GetTemplate", - "pca-connector-ad:DeleteTemplate", - "pca-connector-ad:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ConnectorArn": { - "$ref": "resource-schema.json#/properties/ConnectorArn" - } - }, - "required": [ - "ConnectorArn" - ] - }, - "permissions": [ - "pca-connector-ad:ListTemplates" - ] - }, - "read": { - "permissions": [ - "pca-connector-ad:GetTemplate", - "pca-connector-ad:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "pca-connector-ad:ListTagsForResource", - "pca-connector-ad:TagResource", - "pca-connector-ad:UntagResource", - "pca-connector-ad:UpdateTemplate" - ] - } - }, - "primaryIdentifier": [ - "/properties/TemplateArn" - ], - "properties": { - "ConnectorArn": { - "maxLength": 200, - "minLength": 5, - "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", - "type": "string" - }, - "Definition": { - "$ref": "#/definitions/TemplateDefinition" - }, - "Name": { - "maxLength": 64, - "minLength": 1, - "pattern": "^(?!^\\s+$)((?![\\x5c'\\x2b,;<=>#\\x22])([\\x20-\\x7E]))+$", - "type": "string" - }, - "ReenrollAllCertificateHolders": { - "type": "boolean" - }, - "Tags": { - "$ref": "#/definitions/Tags" - }, - "TemplateArn": { - "maxLength": 200, - "minLength": 5, - "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}\\/template\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/TemplateArn" - ], - "required": [ - "ConnectorArn", - "Definition", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcaconnectorad", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "pca-connector-ad:ListTagsForResource", - "pca-connector-ad:TagResource", - "pca-connector-ad:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::PCAConnectorAD::Template", - "writeOnlyProperties": [ - "/properties/ReenrollAllCertificateHolders" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConnectorArn", + "/properties/Name" + ], + "definitions": { + "ApplicationPolicies": { + "additionalProperties": false, + "properties": { + "Critical": { + "type": "boolean" + }, + "Policies": { + "items": { + "$ref": "#/definitions/ApplicationPolicy" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Policies" + ], + "type": "object" + }, + "ApplicationPolicy": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "PolicyType": { + "$ref": "#/definitions/ApplicationPolicyType" + } + }, + "required": [ + "PolicyType" + ], + "title": "PolicyType", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "PolicyObjectIdentifier": { + "maxLength": 64, + "minLength": 1, + "pattern": "^([0-2])\\.([0-9]|([0-3][0-9]))(\\.([0-9]+)){0,126}$", + "type": "string" + } + }, + "required": [ + "PolicyObjectIdentifier" + ], + "title": "PolicyObjectIdentifier", + "type": "object" + } + ] + }, + "ApplicationPolicyType": { + "enum": [ + "ALL_APPLICATION_POLICIES", + "ANY_PURPOSE", + "ATTESTATION_IDENTITY_KEY_CERTIFICATE", + "CERTIFICATE_REQUEST_AGENT", + "CLIENT_AUTHENTICATION", + "CODE_SIGNING", + "CTL_USAGE", + "DIGITAL_RIGHTS", + "DIRECTORY_SERVICE_EMAIL_REPLICATION", + "DISALLOWED_LIST", + "DNS_SERVER_TRUST", + "DOCUMENT_ENCRYPTION", + "DOCUMENT_SIGNING", + "DYNAMIC_CODE_GENERATOR", + "EARLY_LAUNCH_ANTIMALWARE_DRIVER", + "EMBEDDED_WINDOWS_SYSTEM_COMPONENT_VERIFICATION", + "ENCLAVE", + "ENCRYPTING_FILE_SYSTEM", + "ENDORSEMENT_KEY_CERTIFICATE", + "FILE_RECOVERY", + "HAL_EXTENSION", + "IP_SECURITY_END_SYSTEM", + "IP_SECURITY_IKE_INTERMEDIATE", + "IP_SECURITY_TUNNEL_TERMINATION", + "IP_SECURITY_USER", + "ISOLATED_USER_MODE", + "KDC_AUTHENTICATION", + "KERNEL_MODE_CODE_SIGNING", + "KEY_PACK_LICENSES", + "KEY_RECOVERY", + "KEY_RECOVERY_AGENT", + "LICENSE_SERVER_VERIFICATION", + "LIFETIME_SIGNING", + "MICROSOFT_PUBLISHER", + "MICROSOFT_TIME_STAMPING", + "MICROSOFT_TRUST_LIST_SIGNING", + "OCSP_SIGNING", + "OEM_WINDOWS_SYSTEM_COMPONENT_VERIFICATION", + "PLATFORM_CERTIFICATE", + "PREVIEW_BUILD_SIGNING", + "PRIVATE_KEY_ARCHIVAL", + "PROTECTED_PROCESS_LIGHT_VERIFICATION", + "PROTECTED_PROCESS_VERIFICATION", + "QUALIFIED_SUBORDINATION", + "REVOKED_LIST_SIGNER", + "ROOT_PROGRAM_AUTO_UPDATE_CA_REVOCATION", + "ROOT_PROGRAM_AUTO_UPDATE_END_REVOCATION", + "ROOT_PROGRAM_NO_OSCP_FAILOVER_TO_CRL", + "ROOT_LIST_SIGNER", + "SECURE_EMAIL", + "SERVER_AUTHENTICATION", + "SMART_CARD_LOGIN", + "SPC_ENCRYPTED_DIGEST_RETRY_COUNT", + "SPC_RELAXED_PE_MARKER_CHECK", + "TIME_STAMPING", + "WINDOWS_HARDWARE_DRIVER_ATTESTED_VERIFICATION", + "WINDOWS_HARDWARE_DRIVER_EXTENDED_VERIFICATION", + "WINDOWS_HARDWARE_DRIVER_VERIFICATION", + "WINDOWS_HELLO_RECOVERY_KEY_ENCRYPTION", + "WINDOWS_KITS_COMPONENT", + "WINDOWS_RT_VERIFICATION", + "WINDOWS_SOFTWARE_EXTENSION_VERIFICATION", + "WINDOWS_STORE", + "WINDOWS_SYSTEM_COMPONENT_VERIFICATION", + "WINDOWS_TCB_COMPONENT", + "WINDOWS_THIRD_PARTY_APPLICATION_COMPONENT", + "WINDOWS_UPDATE" + ], + "type": "string" + }, + "CertificateValidity": { + "additionalProperties": false, + "properties": { + "RenewalPeriod": { + "$ref": "#/definitions/ValidityPeriod" + }, + "ValidityPeriod": { + "$ref": "#/definitions/ValidityPeriod" + } + }, + "required": [ + "RenewalPeriod", + "ValidityPeriod" + ], + "type": "object" + }, + "ClientCompatibilityV2": { + "enum": [ + "WINDOWS_SERVER_2003", + "WINDOWS_SERVER_2008", + "WINDOWS_SERVER_2008_R2", + "WINDOWS_SERVER_2012", + "WINDOWS_SERVER_2012_R2", + "WINDOWS_SERVER_2016" + ], + "type": "string" + }, + "ClientCompatibilityV3": { + "enum": [ + "WINDOWS_SERVER_2008", + "WINDOWS_SERVER_2008_R2", + "WINDOWS_SERVER_2012", + "WINDOWS_SERVER_2012_R2", + "WINDOWS_SERVER_2016" + ], + "type": "string" + }, + "ClientCompatibilityV4": { + "enum": [ + "WINDOWS_SERVER_2012", + "WINDOWS_SERVER_2012_R2", + "WINDOWS_SERVER_2016" + ], + "type": "string" + }, + "EnrollmentFlagsV2": { + "additionalProperties": false, + "properties": { + "EnableKeyReuseOnNtTokenKeysetStorageFull": { + "type": "boolean" + }, + "IncludeSymmetricAlgorithms": { + "type": "boolean" + }, + "NoSecurityExtension": { + "type": "boolean" + }, + "RemoveInvalidCertificateFromPersonalStore": { + "type": "boolean" + }, + "UserInteractionRequired": { + "type": "boolean" + } + }, + "type": "object" + }, + "EnrollmentFlagsV3": { + "additionalProperties": false, + "properties": { + "EnableKeyReuseOnNtTokenKeysetStorageFull": { + "type": "boolean" + }, + "IncludeSymmetricAlgorithms": { + "type": "boolean" + }, + "NoSecurityExtension": { + "type": "boolean" + }, + "RemoveInvalidCertificateFromPersonalStore": { + "type": "boolean" + }, + "UserInteractionRequired": { + "type": "boolean" + } + }, + "type": "object" + }, + "EnrollmentFlagsV4": { + "additionalProperties": false, + "properties": { + "EnableKeyReuseOnNtTokenKeysetStorageFull": { + "type": "boolean" + }, + "IncludeSymmetricAlgorithms": { + "type": "boolean" + }, + "NoSecurityExtension": { + "type": "boolean" + }, + "RemoveInvalidCertificateFromPersonalStore": { + "type": "boolean" + }, + "UserInteractionRequired": { + "type": "boolean" + } + }, + "type": "object" + }, + "ExtensionsV2": { + "additionalProperties": false, + "properties": { + "ApplicationPolicies": { + "$ref": "#/definitions/ApplicationPolicies" + }, + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + } + }, + "required": [ + "KeyUsage" + ], + "type": "object" + }, + "ExtensionsV3": { + "additionalProperties": false, + "properties": { + "ApplicationPolicies": { + "$ref": "#/definitions/ApplicationPolicies" + }, + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + } + }, + "required": [ + "KeyUsage" + ], + "type": "object" + }, + "ExtensionsV4": { + "additionalProperties": false, + "properties": { + "ApplicationPolicies": { + "$ref": "#/definitions/ApplicationPolicies" + }, + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + } + }, + "required": [ + "KeyUsage" + ], + "type": "object" + }, + "GeneralFlagsV2": { + "additionalProperties": false, + "properties": { + "AutoEnrollment": { + "type": "boolean" + }, + "MachineType": { + "type": "boolean" + } + }, + "type": "object" + }, + "GeneralFlagsV3": { + "additionalProperties": false, + "properties": { + "AutoEnrollment": { + "type": "boolean" + }, + "MachineType": { + "type": "boolean" + } + }, + "type": "object" + }, + "GeneralFlagsV4": { + "additionalProperties": false, + "properties": { + "AutoEnrollment": { + "type": "boolean" + }, + "MachineType": { + "type": "boolean" + } + }, + "type": "object" + }, + "HashAlgorithm": { + "enum": [ + "SHA256", + "SHA384", + "SHA512" + ], + "type": "string" + }, + "KeySpec": { + "enum": [ + "KEY_EXCHANGE", + "SIGNATURE" + ], + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "Critical": { + "type": "boolean" + }, + "UsageFlags": { + "$ref": "#/definitions/KeyUsageFlags" + } + }, + "required": [ + "UsageFlags" + ], + "type": "object" + }, + "KeyUsageFlags": { + "additionalProperties": false, + "properties": { + "DataEncipherment": { + "type": "boolean" + }, + "DigitalSignature": { + "type": "boolean" + }, + "KeyAgreement": { + "type": "boolean" + }, + "KeyEncipherment": { + "type": "boolean" + }, + "NonRepudiation": { + "type": "boolean" + } + }, + "type": "object" + }, + "KeyUsageProperty": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "PropertyType": { + "$ref": "#/definitions/KeyUsagePropertyType" + } + }, + "required": [ + "PropertyType" + ], + "title": "PropertyType", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "PropertyFlags": { + "$ref": "#/definitions/KeyUsagePropertyFlags" + } + }, + "required": [ + "PropertyFlags" + ], + "title": "PropertyFlags", + "type": "object" + } + ] + }, + "KeyUsagePropertyFlags": { + "additionalProperties": false, + "properties": { + "Decrypt": { + "type": "boolean" + }, + "KeyAgreement": { + "type": "boolean" + }, + "Sign": { + "type": "boolean" + } + }, + "type": "object" + }, + "KeyUsagePropertyType": { + "enum": [ + "ALL" + ], + "type": "string" + }, + "PrivateKeyAlgorithm": { + "enum": [ + "RSA", + "ECDH_P256", + "ECDH_P384", + "ECDH_P521" + ], + "type": "string" + }, + "PrivateKeyAttributesV2": { + "additionalProperties": false, + "properties": { + "CryptoProviders": { + "items": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "KeySpec": { + "$ref": "#/definitions/KeySpec" + }, + "MinimalKeyLength": { + "minimum": 1, + "type": "number" + } + }, + "required": [ + "KeySpec", + "MinimalKeyLength" + ], + "type": "object" + }, + "PrivateKeyAttributesV3": { + "additionalProperties": false, + "properties": { + "Algorithm": { + "$ref": "#/definitions/PrivateKeyAlgorithm" + }, + "CryptoProviders": { + "items": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "KeySpec": { + "$ref": "#/definitions/KeySpec" + }, + "KeyUsageProperty": { + "$ref": "#/definitions/KeyUsageProperty" + }, + "MinimalKeyLength": { + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Algorithm", + "KeySpec", + "KeyUsageProperty", + "MinimalKeyLength" + ], + "type": "object" + }, + "PrivateKeyAttributesV4": { + "additionalProperties": false, + "properties": { + "Algorithm": { + "$ref": "#/definitions/PrivateKeyAlgorithm" + }, + "CryptoProviders": { + "items": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "KeySpec": { + "$ref": "#/definitions/KeySpec" + }, + "KeyUsageProperty": { + "$ref": "#/definitions/KeyUsageProperty" + }, + "MinimalKeyLength": { + "minimum": 1, + "type": "number" + } + }, + "required": [ + "KeySpec", + "MinimalKeyLength" + ], + "type": "object" + }, + "PrivateKeyFlagsV2": { + "additionalProperties": false, + "properties": { + "ClientVersion": { + "$ref": "#/definitions/ClientCompatibilityV2" + }, + "ExportableKey": { + "type": "boolean" + }, + "StrongKeyProtectionRequired": { + "type": "boolean" + } + }, + "required": [ + "ClientVersion" + ], + "type": "object" + }, + "PrivateKeyFlagsV3": { + "additionalProperties": false, + "properties": { + "ClientVersion": { + "$ref": "#/definitions/ClientCompatibilityV3" + }, + "ExportableKey": { + "type": "boolean" + }, + "RequireAlternateSignatureAlgorithm": { + "type": "boolean" + }, + "StrongKeyProtectionRequired": { + "type": "boolean" + } + }, + "required": [ + "ClientVersion" + ], + "type": "object" + }, + "PrivateKeyFlagsV4": { + "additionalProperties": false, + "properties": { + "ClientVersion": { + "$ref": "#/definitions/ClientCompatibilityV4" + }, + "ExportableKey": { + "type": "boolean" + }, + "RequireAlternateSignatureAlgorithm": { + "type": "boolean" + }, + "RequireSameKeyRenewal": { + "type": "boolean" + }, + "StrongKeyProtectionRequired": { + "type": "boolean" + }, + "UseLegacyProvider": { + "type": "boolean" + } + }, + "required": [ + "ClientVersion" + ], + "type": "object" + }, + "SubjectNameFlagsV2": { + "additionalProperties": false, + "properties": { + "RequireCommonName": { + "type": "boolean" + }, + "RequireDirectoryPath": { + "type": "boolean" + }, + "RequireDnsAsCn": { + "type": "boolean" + }, + "RequireEmail": { + "type": "boolean" + }, + "SanRequireDirectoryGuid": { + "type": "boolean" + }, + "SanRequireDns": { + "type": "boolean" + }, + "SanRequireDomainDns": { + "type": "boolean" + }, + "SanRequireEmail": { + "type": "boolean" + }, + "SanRequireSpn": { + "type": "boolean" + }, + "SanRequireUpn": { + "type": "boolean" + } + }, + "type": "object" + }, + "SubjectNameFlagsV3": { + "additionalProperties": false, + "properties": { + "RequireCommonName": { + "type": "boolean" + }, + "RequireDirectoryPath": { + "type": "boolean" + }, + "RequireDnsAsCn": { + "type": "boolean" + }, + "RequireEmail": { + "type": "boolean" + }, + "SanRequireDirectoryGuid": { + "type": "boolean" + }, + "SanRequireDns": { + "type": "boolean" + }, + "SanRequireDomainDns": { + "type": "boolean" + }, + "SanRequireEmail": { + "type": "boolean" + }, + "SanRequireSpn": { + "type": "boolean" + }, + "SanRequireUpn": { + "type": "boolean" + } + }, + "type": "object" + }, + "SubjectNameFlagsV4": { + "additionalProperties": false, + "properties": { + "RequireCommonName": { + "type": "boolean" + }, + "RequireDirectoryPath": { + "type": "boolean" + }, + "RequireDnsAsCn": { + "type": "boolean" + }, + "RequireEmail": { + "type": "boolean" + }, + "SanRequireDirectoryGuid": { + "type": "boolean" + }, + "SanRequireDns": { + "type": "boolean" + }, + "SanRequireDomainDns": { + "type": "boolean" + }, + "SanRequireEmail": { + "type": "boolean" + }, + "SanRequireSpn": { + "type": "boolean" + }, + "SanRequireUpn": { + "type": "boolean" + } + }, + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "TemplateDefinition": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "TemplateV2": { + "$ref": "#/definitions/TemplateV2" + } + }, + "required": [ + "TemplateV2" + ], + "title": "TemplateV2", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "TemplateV3": { + "$ref": "#/definitions/TemplateV3" + } + }, + "required": [ + "TemplateV3" + ], + "title": "TemplateV3", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "TemplateV4": { + "$ref": "#/definitions/TemplateV4" + } + }, + "required": [ + "TemplateV4" + ], + "title": "TemplateV4", + "type": "object" + } + ] + }, + "TemplateV2": { + "additionalProperties": false, + "properties": { + "CertificateValidity": { + "$ref": "#/definitions/CertificateValidity" + }, + "EnrollmentFlags": { + "$ref": "#/definitions/EnrollmentFlagsV2" + }, + "Extensions": { + "$ref": "#/definitions/ExtensionsV2" + }, + "GeneralFlags": { + "$ref": "#/definitions/GeneralFlagsV2" + }, + "PrivateKeyAttributes": { + "$ref": "#/definitions/PrivateKeyAttributesV2" + }, + "PrivateKeyFlags": { + "$ref": "#/definitions/PrivateKeyFlagsV2" + }, + "SubjectNameFlags": { + "$ref": "#/definitions/SubjectNameFlagsV2" + }, + "SupersededTemplates": { + "items": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!^\\s+$)((?![\\x5c'\\x2b,;<=>#\\x22])([\\x20-\\x7E]))+$", + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "CertificateValidity", + "EnrollmentFlags", + "Extensions", + "GeneralFlags", + "PrivateKeyAttributes", + "PrivateKeyFlags", + "SubjectNameFlags" + ], + "type": "object" + }, + "TemplateV3": { + "additionalProperties": false, + "properties": { + "CertificateValidity": { + "$ref": "#/definitions/CertificateValidity" + }, + "EnrollmentFlags": { + "$ref": "#/definitions/EnrollmentFlagsV3" + }, + "Extensions": { + "$ref": "#/definitions/ExtensionsV3" + }, + "GeneralFlags": { + "$ref": "#/definitions/GeneralFlagsV3" + }, + "HashAlgorithm": { + "$ref": "#/definitions/HashAlgorithm" + }, + "PrivateKeyAttributes": { + "$ref": "#/definitions/PrivateKeyAttributesV3" + }, + "PrivateKeyFlags": { + "$ref": "#/definitions/PrivateKeyFlagsV3" + }, + "SubjectNameFlags": { + "$ref": "#/definitions/SubjectNameFlagsV3" + }, + "SupersededTemplates": { + "items": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!^\\s+$)((?![\\x5c'\\x2b,;<=>#\\x22])([\\x20-\\x7E]))+$", + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "CertificateValidity", + "EnrollmentFlags", + "Extensions", + "GeneralFlags", + "HashAlgorithm", + "PrivateKeyAttributes", + "PrivateKeyFlags", + "SubjectNameFlags" + ], + "type": "object" + }, + "TemplateV4": { + "additionalProperties": false, + "properties": { + "CertificateValidity": { + "$ref": "#/definitions/CertificateValidity" + }, + "EnrollmentFlags": { + "$ref": "#/definitions/EnrollmentFlagsV4" + }, + "Extensions": { + "$ref": "#/definitions/ExtensionsV4" + }, + "GeneralFlags": { + "$ref": "#/definitions/GeneralFlagsV4" + }, + "HashAlgorithm": { + "$ref": "#/definitions/HashAlgorithm" + }, + "PrivateKeyAttributes": { + "$ref": "#/definitions/PrivateKeyAttributesV4" + }, + "PrivateKeyFlags": { + "$ref": "#/definitions/PrivateKeyFlagsV4" + }, + "SubjectNameFlags": { + "$ref": "#/definitions/SubjectNameFlagsV4" + }, + "SupersededTemplates": { + "items": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!^\\s+$)((?![\\x5c'\\x2b,;<=>#\\x22])([\\x20-\\x7E]))+$", + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "CertificateValidity", + "EnrollmentFlags", + "Extensions", + "GeneralFlags", + "PrivateKeyAttributes", + "PrivateKeyFlags", + "SubjectNameFlags" + ], + "type": "object" + }, + "ValidityPeriod": { + "additionalProperties": false, + "properties": { + "Period": { + "maximum": 8766000, + "minimum": 1, + "type": "number" + }, + "PeriodType": { + "$ref": "#/definitions/ValidityPeriodType" + } + }, + "required": [ + "Period", + "PeriodType" + ], + "type": "object" + }, + "ValidityPeriodType": { + "enum": [ + "HOURS", + "DAYS", + "WEEKS", + "MONTHS", + "YEARS" + ], + "type": "string" + } + }, + "description": "Represents a template that defines certificate configurations, both for issuance and client handling", + "handlers": { + "create": { + "permissions": [ + "pca-connector-ad:CreateTemplate", + "pca-connector-ad:TagResource" + ] + }, + "delete": { + "permissions": [ + "pca-connector-ad:GetTemplate", + "pca-connector-ad:DeleteTemplate", + "pca-connector-ad:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ConnectorArn": { + "$ref": "resource-schema.json#/properties/ConnectorArn" + } + }, + "required": [ + "ConnectorArn" + ] + }, + "permissions": [ + "pca-connector-ad:ListTemplates" + ] + }, + "read": { + "permissions": [ + "pca-connector-ad:GetTemplate", + "pca-connector-ad:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "pca-connector-ad:ListTagsForResource", + "pca-connector-ad:TagResource", + "pca-connector-ad:UntagResource", + "pca-connector-ad:UpdateTemplate" + ] + } + }, + "primaryIdentifier": [ + "/properties/TemplateArn" + ], + "properties": { + "ConnectorArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", + "type": "string" + }, + "Definition": { + "$ref": "#/definitions/TemplateDefinition" + }, + "Name": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!^\\s+$)((?![\\x5c'\\x2b,;<=>#\\x22])([\\x20-\\x7E]))+$", + "type": "string" + }, + "ReenrollAllCertificateHolders": { + "type": "boolean" + }, + "Tags": { + "$ref": "#/definitions/Tags" + }, + "TemplateArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}\\/template\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TemplateArn" + ], + "required": [ + "ConnectorArn", + "Definition", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcaconnectorad", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "pca-connector-ad:ListTagsForResource", + "pca-connector-ad:TagResource", + "pca-connector-ad:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PCAConnectorAD::Template", + "writeOnlyProperties": [ + "/properties/ReenrollAllCertificateHolders" + ] +} diff --git a/src/schema/aws-pcaconnectorad-templategroupaccesscontrolentry.json b/src/schema/aws-pcaconnectorad-templategroupaccesscontrolentry.json index 97be634c..4ddf3a24 100644 --- a/src/schema/aws-pcaconnectorad-templategroupaccesscontrolentry.json +++ b/src/schema/aws-pcaconnectorad-templategroupaccesscontrolentry.json @@ -1,110 +1,110 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GroupSecurityIdentifier", - "/properties/TemplateArn" - ], - "definitions": { - "AccessRight": { - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "AccessRights": { - "additionalProperties": false, - "properties": { - "AutoEnroll": { - "$ref": "#/definitions/AccessRight" - }, - "Enroll": { - "$ref": "#/definitions/AccessRight" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::PCAConnectorAD::TemplateGroupAccessControlEntry Resource Type", - "handlers": { - "create": { - "permissions": [ - "pca-connector-ad:CreateTemplateGroupAccessControlEntry" - ] - }, - "delete": { - "permissions": [ - "pca-connector-ad:DeleteTemplateGroupAccessControlEntry", - "pca-connector-ad:GetTemplateGroupAccessControlEntry" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "TemplateArn": { - "$ref": "resource-schema.json#/properties/TemplateArn" - } - }, - "required": [ - "TemplateArn" - ] - }, - "permissions": [ - "pca-connector-ad:ListTemplateGroupAccessControlEntries" - ] - }, - "read": { - "permissions": [ - "pca-connector-ad:GetTemplateGroupAccessControlEntry" - ] - }, - "update": { - "permissions": [ - "pca-connector-ad:UpdateTemplateGroupAccessControlEntry" - ] - } - }, - "primaryIdentifier": [ - "/properties/GroupSecurityIdentifier", - "/properties/TemplateArn" - ], - "properties": { - "AccessRights": { - "$ref": "#/definitions/AccessRights" - }, - "GroupDisplayName": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[\\x20-\\x7E]+$", - "type": "string" - }, - "GroupSecurityIdentifier": { - "maxLength": 256, - "minLength": 7, - "pattern": "^S-[0-9]-([0-9]+-){1,14}[0-9]+$", - "type": "string" - }, - "TemplateArn": { - "maxLength": 200, - "minLength": 5, - "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector(\\/[\\w-]+)\\/template(\\/[\\w-]+)$", - "type": "string" - } - }, - "required": [ - "AccessRights", - "GroupDisplayName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcaconnectorad", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::PCAConnectorAD::TemplateGroupAccessControlEntry", - "writeOnlyProperties": [ - "/properties/AccessRights", - "/properties/GroupDisplayName" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GroupSecurityIdentifier", + "/properties/TemplateArn" + ], + "definitions": { + "AccessRight": { + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "AccessRights": { + "additionalProperties": false, + "properties": { + "AutoEnroll": { + "$ref": "#/definitions/AccessRight" + }, + "Enroll": { + "$ref": "#/definitions/AccessRight" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::PCAConnectorAD::TemplateGroupAccessControlEntry Resource Type", + "handlers": { + "create": { + "permissions": [ + "pca-connector-ad:CreateTemplateGroupAccessControlEntry" + ] + }, + "delete": { + "permissions": [ + "pca-connector-ad:DeleteTemplateGroupAccessControlEntry", + "pca-connector-ad:GetTemplateGroupAccessControlEntry" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TemplateArn": { + "$ref": "resource-schema.json#/properties/TemplateArn" + } + }, + "required": [ + "TemplateArn" + ] + }, + "permissions": [ + "pca-connector-ad:ListTemplateGroupAccessControlEntries" + ] + }, + "read": { + "permissions": [ + "pca-connector-ad:GetTemplateGroupAccessControlEntry" + ] + }, + "update": { + "permissions": [ + "pca-connector-ad:UpdateTemplateGroupAccessControlEntry" + ] + } + }, + "primaryIdentifier": [ + "/properties/GroupSecurityIdentifier", + "/properties/TemplateArn" + ], + "properties": { + "AccessRights": { + "$ref": "#/definitions/AccessRights" + }, + "GroupDisplayName": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[\\x20-\\x7E]+$", + "type": "string" + }, + "GroupSecurityIdentifier": { + "maxLength": 256, + "minLength": 7, + "pattern": "^S-[0-9]-([0-9]+-){1,14}[0-9]+$", + "type": "string" + }, + "TemplateArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector(\\/[\\w-]+)\\/template(\\/[\\w-]+)$", + "type": "string" + } + }, + "required": [ + "AccessRights", + "GroupDisplayName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcaconnectorad", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::PCAConnectorAD::TemplateGroupAccessControlEntry", + "writeOnlyProperties": [ + "/properties/AccessRights", + "/properties/GroupDisplayName" + ] +} diff --git a/src/schema/aws-pcaconnectorscep-challenge.json b/src/schema/aws-pcaconnectorscep-challenge.json index 18e0445c..10633c6a 100644 --- a/src/schema/aws-pcaconnectorscep-challenge.json +++ b/src/schema/aws-pcaconnectorscep-challenge.json @@ -1,105 +1,105 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConnectorArn" - ], - "definitions": { - "Tags": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - }, - "Unit": { - "additionalProperties": false, - "type": "object" - } - }, - "description": "Represents a SCEP Challenge that is used for certificate enrollment", - "handlers": { - "create": { - "permissions": [ - "pca-connector-scep:CreateChallenge", - "pca-connector-scep:TagResource" - ] - }, - "delete": { - "permissions": [ - "pca-connector-scep:GetChallengeMetadata", - "pca-connector-scep:DeleteChallenge", - "pca-connector-scep:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ConnectorArn": { - "$ref": "resource-schema.json#/properties/ConnectorArn" - } - }, - "required": [ - "ConnectorArn" - ] - }, - "permissions": [ - "pca-connector-scep:ListChallengeMetadata" - ] - }, - "read": { - "permissions": [ - "pca-connector-scep:ListTagsForResource", - "pca-connector-scep:GetChallengeMetadata" - ] - }, - "update": { - "permissions": [ - "pca-connector-scep:ListTagsForResource", - "pca-connector-scep:TagResource", - "pca-connector-scep:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ChallengeArn" - ], - "properties": { - "ChallengeArn": { - "maxLength": 200, - "minLength": 5, - "pattern": "^arn:aws(-[a-z]+)*:pca-connector-scep:[a-z]+(-[a-z]+)+-[1-9]\\d*:\\d{12}:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}\\/challenge\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", - "type": "string" - }, - "ConnectorArn": { - "maxLength": 200, - "minLength": 5, - "pattern": "^arn:aws(-[a-z]+)*:pca-connector-scep:[a-z]+(-[a-z]+)+-[1-9]\\d*:\\d{12}:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/Tags" - } - }, - "readOnlyProperties": [ - "/properties/ChallengeArn" - ], - "required": [ - "ConnectorArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcaconnectorscep", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "pca-connector-scep:ListTagsForResource", - "pca-connector-scep:TagResource", - "pca-connector-scep:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::PCAConnectorSCEP::Challenge" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConnectorArn" + ], + "definitions": { + "Tags": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "Unit": { + "additionalProperties": false, + "type": "object" + } + }, + "description": "Represents a SCEP Challenge that is used for certificate enrollment", + "handlers": { + "create": { + "permissions": [ + "pca-connector-scep:CreateChallenge", + "pca-connector-scep:TagResource" + ] + }, + "delete": { + "permissions": [ + "pca-connector-scep:GetChallengeMetadata", + "pca-connector-scep:DeleteChallenge", + "pca-connector-scep:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ConnectorArn": { + "$ref": "resource-schema.json#/properties/ConnectorArn" + } + }, + "required": [ + "ConnectorArn" + ] + }, + "permissions": [ + "pca-connector-scep:ListChallengeMetadata" + ] + }, + "read": { + "permissions": [ + "pca-connector-scep:ListTagsForResource", + "pca-connector-scep:GetChallengeMetadata" + ] + }, + "update": { + "permissions": [ + "pca-connector-scep:ListTagsForResource", + "pca-connector-scep:TagResource", + "pca-connector-scep:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ChallengeArn" + ], + "properties": { + "ChallengeArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:aws(-[a-z]+)*:pca-connector-scep:[a-z]+(-[a-z]+)+-[1-9]\\d*:\\d{12}:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}\\/challenge\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", + "type": "string" + }, + "ConnectorArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:aws(-[a-z]+)*:pca-connector-scep:[a-z]+(-[a-z]+)+-[1-9]\\d*:\\d{12}:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/ChallengeArn" + ], + "required": [ + "ConnectorArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcaconnectorscep", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "pca-connector-scep:ListTagsForResource", + "pca-connector-scep:TagResource", + "pca-connector-scep:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PCAConnectorSCEP::Challenge" +} diff --git a/src/schema/aws-pcaconnectorscep-connector.json b/src/schema/aws-pcaconnectorscep-connector.json index 40663dae..75dbfb29 100644 --- a/src/schema/aws-pcaconnectorscep-connector.json +++ b/src/schema/aws-pcaconnectorscep-connector.json @@ -1,183 +1,183 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CertificateAuthorityArn", - "/properties/MobileDeviceManagement" - ], - "definitions": { - "ConnectorType": { - "enum": [ - "GENERAL_PURPOSE", - "INTUNE" - ], - "type": "string" - }, - "IntuneConfiguration": { - "additionalProperties": false, - "properties": { - "AzureApplicationId": { - "maxLength": 100, - "minLength": 15, - "pattern": "^[a-zA-Z0-9]{2,15}-[a-zA-Z0-9]{2,15}-[a-zA-Z0-9]{2,15}-[a-zA-Z0-9]{2,15}-[a-zA-Z0-9]{2,15}$", - "type": "string" - }, - "Domain": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9._-]+$", - "type": "string" - } - }, - "required": [ - "AzureApplicationId", - "Domain" - ], - "type": "object" - }, - "MobileDeviceManagement": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Intune": { - "$ref": "#/definitions/IntuneConfiguration" - } - }, - "required": [ - "Intune" - ], - "title": "Intune" - } - ], - "type": "object" - }, - "OpenIdConfiguration": { - "additionalProperties": false, - "properties": { - "Audience": { - "type": "string" - }, - "Issuer": { - "type": "string" - }, - "Subject": { - "type": "string" - } - }, - "type": "object" - }, - "Tags": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - }, - "Unit": { - "additionalProperties": false, - "type": "object" - } - }, - "description": "Represents a Connector that allows certificate issuance through Simple Certificate Enrollment Protocol (SCEP)", - "handlers": { - "create": { - "permissions": [ - "acm-pca:DescribeCertificateAuthority", - "acm-pca:GetCertificate", - "acm-pca:GetCertificateAuthorityCertificate", - "acm-pca:IssueCertificate", - "pca-connector-scep:GetConnector", - "pca-connector-scep:CreateConnector", - "pca-connector-scep:TagResource" - ] - }, - "delete": { - "permissions": [ - "acm-pca:DescribeCertificateAuthority", - "acm-pca:GetCertificate", - "acm-pca:GetCertificateAuthorityCertificate", - "acm-pca:IssueCertificate", - "pca-connector-scep:GetConnector", - "pca-connector-scep:DeleteConnector", - "pca-connector-scep:UntagResource" - ] - }, - "list": { - "permissions": [ - "pca-connector-scep:ListConnectors" - ] - }, - "read": { - "permissions": [ - "pca-connector-scep:ListTagsForResource", - "pca-connector-scep:GetConnector" - ] - }, - "update": { - "permissions": [ - "pca-connector-scep:ListTagsForResource", - "pca-connector-scep:TagResource", - "pca-connector-scep:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConnectorArn" - ], - "properties": { - "CertificateAuthorityArn": { - "maxLength": 200, - "minLength": 5, - "pattern": "^arn:aws(-[a-z]+)*:acm-pca:[a-z]+(-[a-z]+)+-[1-9]\\d*:\\d{12}:certificate-authority\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", - "type": "string" - }, - "ConnectorArn": { - "maxLength": 200, - "minLength": 5, - "pattern": "^arn:aws(-[a-z]+)*:pca-connector-scep:[a-z]+(-[a-z]+)+-[1-9]\\d*:\\d{12}:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", - "type": "string" - }, - "Endpoint": { - "maxLength": 200, - "minLength": 5, - "type": "string" - }, - "MobileDeviceManagement": { - "$ref": "#/definitions/MobileDeviceManagement" - }, - "OpenIdConfiguration": { - "$ref": "#/definitions/OpenIdConfiguration" - }, - "Tags": { - "$ref": "#/definitions/Tags" - }, - "Type": { - "$ref": "#/definitions/ConnectorType" - } - }, - "readOnlyProperties": [ - "/properties/ConnectorArn", - "/properties/Endpoint", - "/properties/OpenIdConfiguration", - "/properties/Type" - ], - "required": [ - "CertificateAuthorityArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcaconnectorscep", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "pca-connector-scep:ListTagsForResource", - "pca-connector-scep:TagResource", - "pca-connector-scep:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::PCAConnectorSCEP::Connector" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CertificateAuthorityArn", + "/properties/MobileDeviceManagement" + ], + "definitions": { + "ConnectorType": { + "enum": [ + "GENERAL_PURPOSE", + "INTUNE" + ], + "type": "string" + }, + "IntuneConfiguration": { + "additionalProperties": false, + "properties": { + "AzureApplicationId": { + "maxLength": 100, + "minLength": 15, + "pattern": "^[a-zA-Z0-9]{2,15}-[a-zA-Z0-9]{2,15}-[a-zA-Z0-9]{2,15}-[a-zA-Z0-9]{2,15}-[a-zA-Z0-9]{2,15}$", + "type": "string" + }, + "Domain": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9._-]+$", + "type": "string" + } + }, + "required": [ + "AzureApplicationId", + "Domain" + ], + "type": "object" + }, + "MobileDeviceManagement": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Intune": { + "$ref": "#/definitions/IntuneConfiguration" + } + }, + "required": [ + "Intune" + ], + "title": "Intune" + } + ], + "type": "object" + }, + "OpenIdConfiguration": { + "additionalProperties": false, + "properties": { + "Audience": { + "type": "string" + }, + "Issuer": { + "type": "string" + }, + "Subject": { + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "Unit": { + "additionalProperties": false, + "type": "object" + } + }, + "description": "Represents a Connector that allows certificate issuance through Simple Certificate Enrollment Protocol (SCEP)", + "handlers": { + "create": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificate", + "acm-pca:GetCertificateAuthorityCertificate", + "acm-pca:IssueCertificate", + "pca-connector-scep:GetConnector", + "pca-connector-scep:CreateConnector", + "pca-connector-scep:TagResource" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificate", + "acm-pca:GetCertificateAuthorityCertificate", + "acm-pca:IssueCertificate", + "pca-connector-scep:GetConnector", + "pca-connector-scep:DeleteConnector", + "pca-connector-scep:UntagResource" + ] + }, + "list": { + "permissions": [ + "pca-connector-scep:ListConnectors" + ] + }, + "read": { + "permissions": [ + "pca-connector-scep:ListTagsForResource", + "pca-connector-scep:GetConnector" + ] + }, + "update": { + "permissions": [ + "pca-connector-scep:ListTagsForResource", + "pca-connector-scep:TagResource", + "pca-connector-scep:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConnectorArn" + ], + "properties": { + "CertificateAuthorityArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:aws(-[a-z]+)*:acm-pca:[a-z]+(-[a-z]+)+-[1-9]\\d*:\\d{12}:certificate-authority\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", + "type": "string" + }, + "ConnectorArn": { + "maxLength": 200, + "minLength": 5, + "pattern": "^arn:aws(-[a-z]+)*:pca-connector-scep:[a-z]+(-[a-z]+)+-[1-9]\\d*:\\d{12}:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", + "type": "string" + }, + "Endpoint": { + "maxLength": 200, + "minLength": 5, + "type": "string" + }, + "MobileDeviceManagement": { + "$ref": "#/definitions/MobileDeviceManagement" + }, + "OpenIdConfiguration": { + "$ref": "#/definitions/OpenIdConfiguration" + }, + "Tags": { + "$ref": "#/definitions/Tags" + }, + "Type": { + "$ref": "#/definitions/ConnectorType" + } + }, + "readOnlyProperties": [ + "/properties/ConnectorArn", + "/properties/Endpoint", + "/properties/OpenIdConfiguration", + "/properties/Type" + ], + "required": [ + "CertificateAuthorityArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcaconnectorscep", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "pca-connector-scep:ListTagsForResource", + "pca-connector-scep:TagResource", + "pca-connector-scep:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PCAConnectorSCEP::Connector" +} diff --git a/src/schema/aws-pcs-cluster.json b/src/schema/aws-pcs-cluster.json new file mode 100644 index 00000000..dc26e865 --- /dev/null +++ b/src/schema/aws-pcs-cluster.json @@ -0,0 +1,333 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Networking", + "/properties/Scheduler", + "/properties/Size", + "/properties/SlurmConfiguration" + ], + "definitions": { + "AuthKey": { + "additionalProperties": false, + "description": "The shared Slurm key for authentication, also known as the cluster secret.", + "properties": { + "SecretArn": { + "description": "The Amazon Resource Name (ARN) of the the shared Slurm key.", + "type": "string" + }, + "SecretVersion": { + "description": "The version of the shared Slurm key.", + "type": "string" + } + }, + "required": [ + "SecretArn", + "SecretVersion" + ], + "type": "object" + }, + "Endpoint": { + "additionalProperties": false, + "description": "An endpoint available for interaction with the scheduler.", + "properties": { + "Port": { + "description": "The endpoint's connection port number.", + "type": "string" + }, + "PrivateIpAddress": { + "description": "The endpoint's private IP address.", + "type": "string" + }, + "PublicIpAddress": { + "description": "The endpoint's public IP address.", + "type": "string" + }, + "Type": { + "description": "Indicates the type of endpoint running at the specific IP address.", + "enum": [ + "SLURMCTLD", + "SLURMDBD" + ], + "type": "string" + } + }, + "required": [ + "Port", + "PrivateIpAddress", + "Type" + ], + "type": "object" + }, + "ErrorInfo": { + "additionalProperties": false, + "description": "An error that occurred during resource provisioning.", + "properties": { + "Code": { + "description": "The short-form error code.", + "type": "string" + }, + "Message": { + "description": "The detailed error information.", + "type": "string" + } + }, + "type": "object" + }, + "SecurityGroupId": { + "description": "A VPC security group ID.", + "type": "string" + }, + "SlurmCustomSetting": { + "additionalProperties": false, + "description": "Additional settings that directly map to Slurm settings.", + "properties": { + "ParameterName": { + "description": "AWS PCS supports configuration of the following Slurm parameters for clusters: Prolog, Epilog, and SelectTypeParameters.", + "type": "string" + }, + "ParameterValue": { + "description": "The value for the configured Slurm setting.", + "type": "string" + } + }, + "required": [ + "ParameterName", + "ParameterValue" + ], + "type": "object" + }, + "SubnetId": { + "description": "A VPC subnet ID.", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "AWS::PCS::Cluster resource creates an AWS PCS cluster.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkInterface", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:GetSecurityGroupsForVpc", + "iam:CreateServiceLinkedRole", + "secretsmanager:CreateSecret", + "secretsmanager:TagResource", + "pcs:CreateCluster", + "pcs:GetCluster", + "pcs:ListTagsForResource", + "pcs:TagResource" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "pcs:DeleteCluster", + "pcs:GetCluster" + ], + "timeoutInMinutes": 60 + }, + "list": { + "permissions": [ + "pcs:ListClusters" + ] + }, + "read": { + "permissions": [ + "pcs:GetCluster", + "pcs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "pcs:GetCluster", + "pcs:ListTagsForResource", + "pcs:TagResource", + "pcs:UntagResource" + ], + "timeoutInMinutes": 60 + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The unique Amazon Resource Name (ARN) of the cluster.", + "type": "string" + }, + "Endpoints": { + "description": "The list of endpoints available for interaction with the scheduler.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Endpoint" + }, + "type": "array" + }, + "ErrorInfo": { + "description": "The list of errors that occurred during cluster provisioning.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ErrorInfo" + }, + "type": "array" + }, + "Id": { + "description": "The generated unique ID of the cluster.", + "pattern": "^(pcs_[a-zA-Z0-9]+|[A-Za-z][A-Za-z0-9-]{1,40})$", + "type": "string" + }, + "Name": { + "description": "The name that identifies the cluster.", + "type": "string" + }, + "Networking": { + "additionalProperties": false, + "description": "The networking configuration for the cluster's control plane.", + "properties": { + "SecurityGroupIds": { + "description": "The list of security group IDs associated with the Elastic Network Interface (ENI) created in subnets.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SecurityGroupId" + }, + "type": "array" + }, + "SubnetIds": { + "description": "The list of subnet IDs where AWS PCS creates an Elastic Network Interface (ENI) to enable communication between managed controllers and AWS PCS resources. The subnet must have an available IP address, cannot reside in AWS Outposts, AWS Wavelength, or an AWS Local Zone. AWS PCS currently supports only 1 subnet in this list.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetId" + }, + "type": "array" + } + }, + "type": "object" + }, + "Scheduler": { + "additionalProperties": false, + "description": "The cluster management and job scheduling software associated with the cluster.", + "properties": { + "Type": { + "description": "The software AWS PCS uses to manage cluster scaling and job scheduling.", + "enum": [ + "SLURM" + ], + "type": "string" + }, + "Version": { + "description": "The version of the specified scheduling software that AWS PCS uses to manage cluster scaling and job scheduling.", + "type": "string" + } + }, + "required": [ + "Type", + "Version" + ], + "type": "object" + }, + "Size": { + "description": "The size of the cluster.", + "enum": [ + "SMALL", + "MEDIUM", + "LARGE" + ], + "type": "string" + }, + "SlurmConfiguration": { + "additionalProperties": false, + "description": "Additional options related to the Slurm scheduler.", + "properties": { + "AuthKey": { + "$ref": "#/definitions/AuthKey" + }, + "ScaleDownIdleTimeInSeconds": { + "description": "The time before an idle node is scaled down.", + "minimum": 1, + "type": "integer" + }, + "SlurmCustomSettings": { + "description": "Additional Slurm-specific configuration that directly maps to Slurm settings.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SlurmCustomSetting" + }, + "type": "array" + } + }, + "type": "object" + }, + "Status": { + "description": "The provisioning status of the cluster. The provisioning status doesn't indicate the overall health of the cluster.", + "enum": [ + "CREATING", + "ACTIVE", + "UPDATING", + "DELETING", + "CREATE_FAILED", + "DELETE_FAILED", + "UPDATE_FAILED" + ], + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + "patternProperties": { + "^.+$": { + "type": "string" + } + } + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Endpoints", + "/properties/ErrorInfo", + "/properties/Id", + "/properties/Status" + ], + "required": [ + "Networking", + "Scheduler", + "Size" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcs.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "pcs:TagResource", + "pcs:ListTagsForResource", + "pcs:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PCS::Cluster" +} diff --git a/src/schema/aws-pcs-computenodegroup.json b/src/schema/aws-pcs-computenodegroup.json new file mode 100644 index 00000000..47669860 --- /dev/null +++ b/src/schema/aws-pcs-computenodegroup.json @@ -0,0 +1,335 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/ClusterId", + "/properties/InstanceConfigs" + ], + "definitions": { + "ErrorInfo": { + "additionalProperties": false, + "description": "An error that occurred during resource provisioning.", + "properties": { + "Code": { + "description": "The short-form error code.", + "type": "string" + }, + "Message": { + "description": "The detailed error information.", + "type": "string" + } + }, + "type": "object" + }, + "InstanceConfig": { + "additionalProperties": false, + "description": "An EC2 instance configuration AWS PCS uses to launch compute nodes.", + "properties": { + "InstanceType": { + "description": "The EC2 instance type that AWS PCS can provision in the compute node group.", + "type": "string" + } + }, + "type": "object" + }, + "SlurmCustomSetting": { + "additionalProperties": false, + "description": "Additional settings that directly map to Slurm settings.", + "properties": { + "ParameterName": { + "description": "AWS PCS supports configuration of the following Slurm parameters for compute node groups: Weight and RealMemory.", + "type": "string" + }, + "ParameterValue": { + "description": "The value for the configured Slurm setting.", + "type": "string" + } + }, + "required": [ + "ParameterName", + "ParameterValue" + ], + "type": "object" + }, + "SubnetId": { + "description": "A VPC subnet ID.", + "type": "string" + } + }, + "description": "AWS::PCS::ComputeNodeGroup resource creates an AWS PCS compute node group.", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeImages", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:DescribeLaunchTemplates", + "ec2:DescribeLaunchTemplateVersions", + "ec2:DescribeInstanceTypes", + "ec2:DescribeInstanceTypeOfferings", + "ec2:RunInstances", + "ec2:CreateFleet", + "ec2:CreateTags", + "iam:PassRole", + "iam:GetInstanceProfile", + "pcs:CreateComputeNodeGroup", + "pcs:GetComputeNodeGroup", + "pcs:ListTagsForResource", + "pcs:TagResource" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "ec2:DescribeImages", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:DescribeLaunchTemplates", + "ec2:DescribeLaunchTemplateVersions", + "ec2:DescribeInstanceTypes", + "ec2:DescribeInstanceTypeOfferings", + "ec2:TerminateInstances", + "ec2:CreateFleet", + "ec2:CreateTags", + "iam:PassRole", + "iam:GetInstanceProfile", + "pcs:GetComputeNodeGroup", + "pcs:DeleteComputeNodeGroup", + "pcs:ListTagsForResource", + "pcs:TagResource", + "pcs:UntagResource" + ], + "timeoutInMinutes": 60 + }, + "list": { + "handlerSchema": { + "properties": { + "ClusterId": { + "$ref": "resource-schema.json#/properties/ClusterId" + } + }, + "required": [ + "ClusterId" + ] + }, + "permissions": [ + "pcs:ListClusters", + "pcs:ListComputeNodeGroups" + ] + }, + "read": { + "permissions": [ + "pcs:GetComputeNodeGroup", + "pcs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeImages", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:DescribeLaunchTemplates", + "ec2:DescribeLaunchTemplateVersions", + "ec2:DescribeInstanceTypes", + "ec2:DescribeInstanceTypeOfferings", + "ec2:RunInstances", + "ec2:CreateFleet", + "ec2:CreateTags", + "iam:PassRole", + "iam:GetInstanceProfile", + "pcs:GetComputeNodeGroup", + "pcs:UpdateComputeNodeGroup", + "pcs:ListTagsForResource", + "pcs:TagResource", + "pcs:UntagResource" + ], + "timeoutInMinutes": 60 + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AmiId": { + "description": "The ID of the Amazon Machine Image (AMI) that AWS PCS uses to launch instances. If not provided, AWS PCS uses the AMI ID specified in the custom launch template.", + "pattern": "^ami-[a-z0-9]+$", + "type": "string" + }, + "Arn": { + "description": "The unique Amazon Resource Name (ARN) of the compute node group.", + "type": "string" + }, + "ClusterId": { + "description": "The ID of the cluster of the compute node group.", + "type": "string" + }, + "CustomLaunchTemplate": { + "additionalProperties": false, + "description": "An Amazon EC2 launch template AWS PCS uses to launch compute nodes.", + "properties": { + "TemplateId": { + "description": "The ID of the EC2 launch template to use to provision instances.", + "type": "string" + }, + "Version": { + "description": "The version of the EC2 launch template to use to provision instances.", + "type": "string" + } + }, + "required": [ + "Version" + ], + "type": "object" + }, + "ErrorInfo": { + "description": "The list of errors that occurred during compute node group provisioning.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ErrorInfo" + }, + "type": "array" + }, + "IamInstanceProfileArn": { + "description": "The Amazon Resource Name (ARN) of the IAM instance profile used to pass an IAM role when launching EC2 instances. The role contained in your instance profile must have pcs:RegisterComputeNodeGroupInstance permissions attached to provision instances correctly.", + "pattern": "^arn:aws([a-zA-Z-]{0,10})?:iam::[0-9]{12}:instance-profile/.{1,128}$", + "type": "string" + }, + "Id": { + "description": "The generated unique ID of the compute node group.", + "type": "string" + }, + "InstanceConfigs": { + "description": "A list of EC2 instance configurations that AWS PCS can provision in the compute node group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InstanceConfig" + }, + "type": "array" + }, + "Name": { + "description": "The name that identifies the compute node group.", + "type": "string" + }, + "PurchaseOption": { + "description": "Specifies how EC2 instances are purchased on your behalf. AWS PCS supports On-Demand and Spot instances. For more information, see Instance purchasing options in the Amazon Elastic Compute Cloud User Guide. If you don't provide this option, it defaults to On-Demand.", + "enum": [ + "ONDEMAND", + "SPOT" + ], + "type": "string" + }, + "ScalingConfiguration": { + "additionalProperties": false, + "description": "Specifies the boundaries of the compute node group auto scaling.", + "properties": { + "MaxInstanceCount": { + "description": "The upper bound of the number of instances allowed in the compute fleet.", + "minimum": 0, + "type": "integer" + }, + "MinInstanceCount": { + "description": "The lower bound of the number of instances allowed in the compute fleet.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "MaxInstanceCount", + "MinInstanceCount" + ], + "type": "object" + }, + "SlurmConfiguration": { + "additionalProperties": false, + "description": "Additional options related to the Slurm scheduler.", + "properties": { + "SlurmCustomSettings": { + "description": "Additional Slurm-specific configuration that directly maps to Slurm settings.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SlurmCustomSetting" + }, + "type": "array" + } + }, + "type": "object" + }, + "SpotOptions": { + "additionalProperties": false, + "description": "Additional configuration when you specify SPOT as the purchase option.", + "properties": { + "AllocationStrategy": { + "description": "The Amazon EC2 allocation strategy AWS PCS uses to provision EC2 instances. AWS PCS supports lowest price, capacity optimized, and price capacity optimized. If you don't provide this option, it defaults to price capacity optimized.", + "enum": [ + "lowest-price", + "capacity-optimized", + "price-capacity-optimized" + ], + "type": "string" + } + }, + "type": "object" + }, + "Status": { + "description": "The provisioning status of the compute node group. The provisioning status doesn't indicate the overall health of the compute node group.", + "enum": [ + "CREATING", + "ACTIVE", + "UPDATING", + "DELETING", + "CREATE_FAILED", + "DELETE_FAILED", + "UPDATE_FAILED" + ], + "type": "string" + }, + "SubnetIds": { + "description": "The list of subnet IDs where instances are provisioned by the compute node group. The subnets must be in the same VPC as the cluster.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetId" + }, + "type": "array" + }, + "Tags": { + "additionalProperties": false, + "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + "patternProperties": { + "^.+$": { + "type": "string" + } + } + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ErrorInfo", + "/properties/Id", + "/properties/Status" + ], + "required": [ + "ClusterId", + "CustomLaunchTemplate", + "IamInstanceProfileArn", + "InstanceConfigs", + "ScalingConfiguration", + "SubnetIds" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcs.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "pcs:TagResource", + "pcs:ListTagsForResource", + "pcs:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PCS::ComputeNodeGroup" +} diff --git a/src/schema/aws-pcs-queue.json b/src/schema/aws-pcs-queue.json new file mode 100644 index 00000000..4333d8be --- /dev/null +++ b/src/schema/aws-pcs-queue.json @@ -0,0 +1,178 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/ClusterId" + ], + "definitions": { + "ComputeNodeGroupConfiguration": { + "additionalProperties": false, + "description": "The compute node group configuration for a queue.", + "properties": { + "ComputeNodeGroupId": { + "description": "The compute node group ID for the compute node group configuration.", + "type": "string" + } + }, + "type": "object" + }, + "ErrorInfo": { + "additionalProperties": false, + "description": "An error that occurred during resource provisioning.", + "properties": { + "Code": { + "description": "The short-form error code.", + "type": "string" + }, + "Message": { + "description": "The detailed error information.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "AWS::PCS::Queue resource creates an AWS PCS queue.", + "handlers": { + "create": { + "permissions": [ + "ec2:CreateNetworkInterface", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "ec2:GetSecurityGroupsForVpc", + "iam:CreateServiceLinkedRole", + "secretsmanager:CreateSecret", + "secretsmanager:TagResource", + "pcs:CreateQueue", + "pcs:GetQueue", + "pcs:ListTagsForResource", + "pcs:TagResource" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "pcs:DeleteQueue", + "pcs:GetQueue" + ], + "timeoutInMinutes": 60 + }, + "list": { + "handlerSchema": { + "properties": { + "ClusterId": { + "$ref": "resource-schema.json#/properties/ClusterId" + } + }, + "required": [ + "ClusterId" + ] + }, + "permissions": [ + "pcs:ListClusters", + "pcs:ListQueues" + ] + }, + "read": { + "permissions": [ + "pcs:GetQueue", + "pcs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "pcs:GetQueue", + "pcs:UpdateQueue", + "pcs:ListTagsForResource", + "pcs:TagResource", + "pcs:UntagResource" + ], + "timeoutInMinutes": 60 + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The unique Amazon Resource Name (ARN) of the queue.", + "pattern": "^(.*?)", + "type": "string" + }, + "ClusterId": { + "description": "The ID of the cluster of the queue.", + "type": "string" + }, + "ComputeNodeGroupConfigurations": { + "description": "The list of compute node group configurations associated with the queue. Queues assign jobs to associated compute node groups.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ComputeNodeGroupConfiguration" + }, + "type": "array" + }, + "ErrorInfo": { + "description": "The list of errors that occurred during queue provisioning.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ErrorInfo" + }, + "type": "array" + }, + "Id": { + "description": "The generated unique ID of the queue.", + "type": "string" + }, + "Name": { + "description": "The name that identifies the queue.", + "type": "string" + }, + "Status": { + "description": "The provisioning status of the queue. The provisioning status doesn't indicate the overall health of the queue.", + "enum": [ + "CREATING", + "ACTIVE", + "UPDATING", + "DELETING", + "CREATE_FAILED", + "DELETE_FAILED", + "UPDATE_FAILED" + ], + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "1 or more tags added to the resource. Each tag consists of a tag key and tag value. The tag value is optional and can be an empty string.", + "patternProperties": { + "^.+$": { + "type": "string" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ErrorInfo", + "/properties/Id", + "/properties/Status" + ], + "required": [ + "ClusterId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcs.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "pcs:TagResource", + "pcs:ListTagsForResource", + "pcs:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::PCS::Queue" +} diff --git a/src/schema/aws-personalize-dataset.json b/src/schema/aws-personalize-dataset.json index a53010e6..666c4065 100644 --- a/src/schema/aws-personalize-dataset.json +++ b/src/schema/aws-personalize-dataset.json @@ -1,150 +1,150 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/DatasetType", - "/properties/DatasetGroupArn", - "/properties/SchemaArn" - ], - "definitions": { - "DatasetImportJob": { - "additionalProperties": false, - "description": "Initial DatasetImportJob for the created dataset", - "properties": { - "DataSource": { - "additionalProperties": false, - "description": "The Amazon S3 bucket that contains the training data to import.", - "properties": { - "DataLocation": { - "description": "The path to the Amazon S3 bucket where the data that you want to upload to your dataset is stored.", - "maxLength": 256, - "pattern": "(s3|http|https)://.+", - "type": "string" - } - }, - "type": "object" - }, - "DatasetArn": { - "description": "The ARN of the dataset that receives the imported data", - "maxLength": 256, - "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", - "type": "string" - }, - "DatasetImportJobArn": { - "description": "The ARN of the dataset import job", - "maxLength": 256, - "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", - "type": "string" - }, - "JobName": { - "description": "The name for the dataset import job.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", - "type": "string" - }, - "RoleArn": { - "description": "The ARN of the IAM role that has permissions to read from the Amazon S3 data source.", - "maxLength": 256, - "pattern": "arn:([a-z\\d-]+):iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::Personalize::Dataset.", - "handlers": { - "create": { - "permissions": [ - "personalize:CreateDataset", - "personalize:DescribeDataset", - "personalize:CreateDatasetImportJob", - "personalize:DescribeDatasetImportJob", - "iam:PassRole" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "personalize:DeleteDataset", - "personalize:DescribeDataset" - ] - }, - "list": { - "permissions": [ - "personalize:ListDatasets" - ] - }, - "read": { - "permissions": [ - "personalize:DescribeDataset" - ] - }, - "update": { - "permissions": [ - "personalize:DescribeDataset", - "personalize:CreateDatasetImportJob", - "personalize:DescribeDatasetImportJob", - "iam:PassRole" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/DatasetArn" - ], - "properties": { - "DatasetArn": { - "description": "The ARN of the dataset", - "maxLength": 256, - "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", - "type": "string" - }, - "DatasetGroupArn": { - "description": "The Amazon Resource Name (ARN) of the dataset group to add the dataset to", - "maxLength": 256, - "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", - "type": "string" - }, - "DatasetImportJob": { - "$ref": "#/definitions/DatasetImportJob" - }, - "DatasetType": { - "description": "The type of dataset", - "enum": [ - "Interactions", - "Items", - "Users" - ], - "maxLength": 256, - "type": "string" - }, - "Name": { - "description": "The name for the dataset", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", - "type": "string" - }, - "SchemaArn": { - "description": "The ARN of the schema to associate with the dataset. The schema defines the dataset fields.", - "maxLength": 256, - "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/DatasetArn" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "Name", - "DatasetType", - "DatasetGroupArn", - "SchemaArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-personalize", - "taggable": false, - "typeName": "AWS::Personalize::Dataset" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/DatasetType", + "/properties/DatasetGroupArn", + "/properties/SchemaArn" + ], + "definitions": { + "DatasetImportJob": { + "additionalProperties": false, + "description": "Initial DatasetImportJob for the created dataset", + "properties": { + "DataSource": { + "additionalProperties": false, + "description": "The Amazon S3 bucket that contains the training data to import.", + "properties": { + "DataLocation": { + "description": "The path to the Amazon S3 bucket where the data that you want to upload to your dataset is stored.", + "maxLength": 256, + "pattern": "(s3|http|https)://.+", + "type": "string" + } + }, + "type": "object" + }, + "DatasetArn": { + "description": "The ARN of the dataset that receives the imported data", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "DatasetImportJobArn": { + "description": "The ARN of the dataset import job", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "JobName": { + "description": "The name for the dataset import job.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the IAM role that has permissions to read from the Amazon S3 data source.", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::Personalize::Dataset.", + "handlers": { + "create": { + "permissions": [ + "personalize:CreateDataset", + "personalize:DescribeDataset", + "personalize:CreateDatasetImportJob", + "personalize:DescribeDatasetImportJob", + "iam:PassRole" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "personalize:DeleteDataset", + "personalize:DescribeDataset" + ] + }, + "list": { + "permissions": [ + "personalize:ListDatasets" + ] + }, + "read": { + "permissions": [ + "personalize:DescribeDataset" + ] + }, + "update": { + "permissions": [ + "personalize:DescribeDataset", + "personalize:CreateDatasetImportJob", + "personalize:DescribeDatasetImportJob", + "iam:PassRole" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/DatasetArn" + ], + "properties": { + "DatasetArn": { + "description": "The ARN of the dataset", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "DatasetGroupArn": { + "description": "The Amazon Resource Name (ARN) of the dataset group to add the dataset to", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "DatasetImportJob": { + "$ref": "#/definitions/DatasetImportJob" + }, + "DatasetType": { + "description": "The type of dataset", + "enum": [ + "Interactions", + "Items", + "Users" + ], + "maxLength": 256, + "type": "string" + }, + "Name": { + "description": "The name for the dataset", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", + "type": "string" + }, + "SchemaArn": { + "description": "The ARN of the schema to associate with the dataset. The schema defines the dataset fields.", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DatasetArn" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "Name", + "DatasetType", + "DatasetGroupArn", + "SchemaArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-personalize", + "taggable": false, + "typeName": "AWS::Personalize::Dataset" +} diff --git a/src/schema/aws-personalize-datasetgroup.json b/src/schema/aws-personalize-datasetgroup.json index 8440ed93..1247c400 100644 --- a/src/schema/aws-personalize-datasetgroup.json +++ b/src/schema/aws-personalize-datasetgroup.json @@ -1,82 +1,82 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/RoleArn", - "/properties/KmsKeyArn", - "/properties/Domain" - ], - "description": "Resource Schema for AWS::Personalize::DatasetGroup.", - "handlers": { - "create": { - "permissions": [ - "personalize:CreateDatasetGroup", - "personalize:DescribeDatasetGroup", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "personalize:DescribeDatasetGroup", - "personalize:DeleteDatasetGroup" - ] - }, - "list": { - "permissions": [ - "personalize:ListDatasetGroups" - ] - }, - "read": { - "permissions": [ - "personalize:DescribeDatasetGroup" - ] - } - }, - "primaryIdentifier": [ - "/properties/DatasetGroupArn" - ], - "properties": { - "DatasetGroupArn": { - "description": "The Amazon Resource Name (ARN) of the dataset group.", - "maxLength": 256, - "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", - "type": "string" - }, - "Domain": { - "description": "The domain of a Domain dataset group.", - "enum": [ - "ECOMMERCE", - "VIDEO_ON_DEMAND" - ], - "type": "string" - }, - "KmsKeyArn": { - "description": "The Amazon Resource Name(ARN) of a AWS Key Management Service (KMS) key used to encrypt the datasets.", - "maxLength": 2048, - "pattern": "arn:aws.*:kms:.*:[0-9]{12}:key/.*", - "type": "string" - }, - "Name": { - "description": "The name for the new dataset group.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", - "type": "string" - }, - "RoleArn": { - "description": "The ARN of the AWS Identity and Access Management (IAM) role that has permissions to access the AWS Key Management Service (KMS) key. Supplying an IAM role is only valid when also specifying a KMS key.", - "maxLength": 256, - "minLength": 0, - "pattern": "arn:([a-z\\d-]+):iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/DatasetGroupArn" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-personalize", - "typeName": "AWS::Personalize::DatasetGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/RoleArn", + "/properties/KmsKeyArn", + "/properties/Domain" + ], + "description": "Resource Schema for AWS::Personalize::DatasetGroup.", + "handlers": { + "create": { + "permissions": [ + "personalize:CreateDatasetGroup", + "personalize:DescribeDatasetGroup", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "personalize:DescribeDatasetGroup", + "personalize:DeleteDatasetGroup" + ] + }, + "list": { + "permissions": [ + "personalize:ListDatasetGroups" + ] + }, + "read": { + "permissions": [ + "personalize:DescribeDatasetGroup" + ] + } + }, + "primaryIdentifier": [ + "/properties/DatasetGroupArn" + ], + "properties": { + "DatasetGroupArn": { + "description": "The Amazon Resource Name (ARN) of the dataset group.", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "Domain": { + "description": "The domain of a Domain dataset group.", + "enum": [ + "ECOMMERCE", + "VIDEO_ON_DEMAND" + ], + "type": "string" + }, + "KmsKeyArn": { + "description": "The Amazon Resource Name(ARN) of a AWS Key Management Service (KMS) key used to encrypt the datasets.", + "maxLength": 2048, + "pattern": "arn:aws.*:kms:.*:[0-9]{12}:key/.*", + "type": "string" + }, + "Name": { + "description": "The name for the new dataset group.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", + "type": "string" + }, + "RoleArn": { + "description": "The ARN of the AWS Identity and Access Management (IAM) role that has permissions to access the AWS Key Management Service (KMS) key. Supplying an IAM role is only valid when also specifying a KMS key.", + "maxLength": 256, + "minLength": 0, + "pattern": "arn:([a-z\\d-]+):iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DatasetGroupArn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-personalize", + "typeName": "AWS::Personalize::DatasetGroup" +} diff --git a/src/schema/aws-personalize-schema.json b/src/schema/aws-personalize-schema.json index 2385f13b..c8e1fc88 100644 --- a/src/schema/aws-personalize-schema.json +++ b/src/schema/aws-personalize-schema.json @@ -1,73 +1,73 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Schema", - "/properties/Domain" - ], - "description": "Resource schema for AWS::Personalize::Schema.", - "handlers": { - "create": { - "permissions": [ - "personalize:CreateSchema", - "personalize:DescribeSchema" - ] - }, - "delete": { - "permissions": [ - "personalize:DeleteSchema", - "personalize:DescribeSchema" - ] - }, - "list": { - "permissions": [ - "personalize:ListSchemas" - ] - }, - "read": { - "permissions": [ - "personalize:DescribeSchema" - ] - } - }, - "primaryIdentifier": [ - "/properties/SchemaArn" - ], - "properties": { - "Domain": { - "description": "The domain of a Domain dataset group.", - "enum": [ - "ECOMMERCE", - "VIDEO_ON_DEMAND" - ], - "type": "string" - }, - "Name": { - "description": "Name for the schema.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", - "type": "string" - }, - "Schema": { - "description": "A schema in Avro JSON format.", - "maxLength": 10000, - "type": "string" - }, - "SchemaArn": { - "description": "Arn for the schema.", - "maxLength": 256, - "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/SchemaArn" - ], - "required": [ - "Name", - "Schema" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-personalize", - "typeName": "AWS::Personalize::Schema" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Schema", + "/properties/Domain" + ], + "description": "Resource schema for AWS::Personalize::Schema.", + "handlers": { + "create": { + "permissions": [ + "personalize:CreateSchema", + "personalize:DescribeSchema" + ] + }, + "delete": { + "permissions": [ + "personalize:DeleteSchema", + "personalize:DescribeSchema" + ] + }, + "list": { + "permissions": [ + "personalize:ListSchemas" + ] + }, + "read": { + "permissions": [ + "personalize:DescribeSchema" + ] + } + }, + "primaryIdentifier": [ + "/properties/SchemaArn" + ], + "properties": { + "Domain": { + "description": "The domain of a Domain dataset group.", + "enum": [ + "ECOMMERCE", + "VIDEO_ON_DEMAND" + ], + "type": "string" + }, + "Name": { + "description": "Name for the schema.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", + "type": "string" + }, + "Schema": { + "description": "A schema in Avro JSON format.", + "maxLength": 10000, + "type": "string" + }, + "SchemaArn": { + "description": "Arn for the schema.", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/SchemaArn" + ], + "required": [ + "Name", + "Schema" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-personalize", + "typeName": "AWS::Personalize::Schema" +} diff --git a/src/schema/aws-personalize-solution.json b/src/schema/aws-personalize-solution.json index 3b69428e..ea3ae312 100644 --- a/src/schema/aws-personalize-solution.json +++ b/src/schema/aws-personalize-solution.json @@ -1,304 +1,304 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/EventType", - "/properties/DatasetGroupArn", - "/properties/PerformAutoML", - "/properties/PerformHPO", - "/properties/RecipeArn", - "/properties/SolutionConfig" - ], - "definitions": { - "CategoricalHyperParameterRange": { - "additionalProperties": false, - "description": "Provides the name and values of a Categorical hyperparameter.", - "properties": { - "Name": { - "description": "The name of the hyperparameter.", - "maxLength": 256, - "type": "string" - }, - "Values": { - "description": "A list of the categories for the hyperparameter.", - "insertionOrder": true, - "items": { - "maxLength": 1000, - "type": "string" - }, - "maxItems": 100, - "type": "array" - } - }, - "type": "object" - }, - "ContinuousHyperParameterRange": { - "additionalProperties": false, - "description": "Provides the name and range of a continuous hyperparameter.", - "properties": { - "MaxValue": { - "description": "The maximum allowable value for the hyperparameter.", - "minimum": -1000000, - "type": "number" - }, - "MinValue": { - "description": "The minimum allowable value for the hyperparameter.", - "minimum": -1000000, - "type": "number" - }, - "Name": { - "description": "The name of the hyperparameter.", - "maxLength": 256, - "type": "string" - } - }, - "type": "object" - }, - "IntegerHyperParameterRange": { - "additionalProperties": false, - "description": "Provides the name and range of an integer-valued hyperparameter.", - "properties": { - "MaxValue": { - "description": "The maximum allowable value for the hyperparameter.", - "maximum": 1000000, - "type": "integer" - }, - "MinValue": { - "description": "The minimum allowable value for the hyperparameter.", - "minimum": -1000000, - "type": "integer" - }, - "Name": { - "description": "The name of the hyperparameter.", - "maxLength": 256, - "type": "string" - } - }, - "type": "object" - }, - "SolutionArn": { - "description": "The ARN of the solution", - "maxLength": 256, - "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", - "type": "string" - }, - "SolutionConfig": { - "additionalProperties": false, - "description": "The configuration to use with the solution. When performAutoML is set to true, Amazon Personalize only evaluates the autoMLConfig section of the solution configuration.", - "properties": { - "AlgorithmHyperParameters": { - "additionalProperties": false, - "description": "Lists the hyperparameter names and ranges.", - "maxProperties": 100, - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "AutoMLConfig": { - "additionalProperties": false, - "description": "The AutoMLConfig object containing a list of recipes to search when AutoML is performed.", - "properties": { - "MetricName": { - "description": "The metric to optimize.", - "maxLength": 256, - "type": "string" - }, - "RecipeList": { - "description": "The list of candidate recipes.", - "insertionOrder": true, - "items": { - "maxLength": 256, - "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", - "type": "string" - }, - "maxItems": 100, - "type": "array" - } - }, - "type": "object" - }, - "EventValueThreshold": { - "description": "Only events with a value greater than or equal to this threshold are used for training a model.", - "maxLength": 256, - "type": "string" - }, - "FeatureTransformationParameters": { - "additionalProperties": false, - "description": "Lists the feature transformation parameters.", - "maxProperties": 100, - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "HpoConfig": { - "additionalProperties": false, - "description": "Describes the properties for hyperparameter optimization (HPO)", - "properties": { - "AlgorithmHyperParameterRanges": { - "additionalProperties": false, - "description": "The hyperparameters and their allowable ranges", - "properties": { - "CategoricalHyperParameterRanges": { - "description": "The categorical hyperparameters and their ranges.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/CategoricalHyperParameterRange" - }, - "maxItems": 100, - "type": "array" - }, - "ContinuousHyperParameterRanges": { - "description": "The continuous hyperparameters and their ranges.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ContinuousHyperParameterRange" - }, - "maxItems": 100, - "type": "array" - }, - "IntegerHyperParameterRanges": { - "description": "The integer hyperparameters and their ranges.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/IntegerHyperParameterRange" - }, - "maxItems": 100, - "type": "array" - } - }, - "type": "object" - }, - "HpoObjective": { - "additionalProperties": false, - "description": "The metric to optimize during HPO.", - "properties": { - "MetricName": { - "description": "The name of the metric", - "maxLength": 256, - "type": "string" - }, - "MetricRegex": { - "description": "A regular expression for finding the metric in the training job logs.", - "maxLength": 256, - "type": "string" - }, - "Type": { - "description": "The type of the metric. Valid values are Maximize and Minimize.", - "enum": [ - "Maximize", - "Minimize" - ], - "type": "string" - } - }, - "type": "object" - }, - "HpoResourceConfig": { - "additionalProperties": false, - "description": "Describes the resource configuration for hyperparameter optimization (HPO).", - "properties": { - "MaxNumberOfTrainingJobs": { - "description": "The maximum number of training jobs when you create a solution version. The maximum value for maxNumberOfTrainingJobs is 40.", - "maxLength": 256, - "type": "string" - }, - "MaxParallelTrainingJobs": { - "description": "The maximum number of parallel training jobs when you create a solution version. The maximum value for maxParallelTrainingJobs is 10.", - "maxLength": 256, - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::Personalize::Solution.", - "handlers": { - "create": { - "permissions": [ - "personalize:CreateSolution", - "personalize:DescribeSolution" - ] - }, - "delete": { - "permissions": [ - "personalize:DeleteSolution", - "personalize:DescribeSolution" - ] - }, - "list": { - "permissions": [ - "personalize:ListSolutions" - ] - }, - "read": { - "permissions": [ - "personalize:DescribeSolution" - ] - } - }, - "primaryIdentifier": [ - "/properties/SolutionArn" - ], - "properties": { - "DatasetGroupArn": { - "description": "The ARN of the dataset group that provides the training data.", - "maxLength": 256, - "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", - "type": "string" - }, - "EventType": { - "description": "When your have multiple event types (using an EVENT_TYPE schema field), this parameter specifies which event type (for example, 'click' or 'like') is used for training the model. If you do not provide an eventType, Amazon Personalize will use all interactions for training with equal weight regardless of type.", - "maxLength": 256, - "type": "string" - }, - "Name": { - "description": "The name for the solution", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", - "type": "string" - }, - "PerformAutoML": { - "description": "Whether to perform automated machine learning (AutoML). The default is false. For this case, you must specify recipeArn.", - "type": "boolean" - }, - "PerformHPO": { - "description": "Whether to perform hyperparameter optimization (HPO) on the specified or selected recipe. The default is false. When performing AutoML, this parameter is always true and you should not set it to false.", - "type": "boolean" - }, - "RecipeArn": { - "description": "The ARN of the recipe to use for model training. Only specified when performAutoML is false.", - "maxLength": 256, - "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", - "type": "string" - }, - "SolutionArn": { - "$ref": "#/definitions/SolutionArn" - }, - "SolutionConfig": { - "$ref": "#/definitions/SolutionConfig" - } - }, - "readOnlyProperties": [ - "/properties/SolutionArn" - ], - "required": [ - "Name", - "DatasetGroupArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-personalize", - "taggable": false, - "typeName": "AWS::Personalize::Solution" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/EventType", + "/properties/DatasetGroupArn", + "/properties/PerformAutoML", + "/properties/PerformHPO", + "/properties/RecipeArn", + "/properties/SolutionConfig" + ], + "definitions": { + "CategoricalHyperParameterRange": { + "additionalProperties": false, + "description": "Provides the name and values of a Categorical hyperparameter.", + "properties": { + "Name": { + "description": "The name of the hyperparameter.", + "maxLength": 256, + "type": "string" + }, + "Values": { + "description": "A list of the categories for the hyperparameter.", + "insertionOrder": true, + "items": { + "maxLength": 1000, + "type": "string" + }, + "maxItems": 100, + "type": "array" + } + }, + "type": "object" + }, + "ContinuousHyperParameterRange": { + "additionalProperties": false, + "description": "Provides the name and range of a continuous hyperparameter.", + "properties": { + "MaxValue": { + "description": "The maximum allowable value for the hyperparameter.", + "minimum": -1000000, + "type": "number" + }, + "MinValue": { + "description": "The minimum allowable value for the hyperparameter.", + "minimum": -1000000, + "type": "number" + }, + "Name": { + "description": "The name of the hyperparameter.", + "maxLength": 256, + "type": "string" + } + }, + "type": "object" + }, + "IntegerHyperParameterRange": { + "additionalProperties": false, + "description": "Provides the name and range of an integer-valued hyperparameter.", + "properties": { + "MaxValue": { + "description": "The maximum allowable value for the hyperparameter.", + "maximum": 1000000, + "type": "integer" + }, + "MinValue": { + "description": "The minimum allowable value for the hyperparameter.", + "minimum": -1000000, + "type": "integer" + }, + "Name": { + "description": "The name of the hyperparameter.", + "maxLength": 256, + "type": "string" + } + }, + "type": "object" + }, + "SolutionArn": { + "description": "The ARN of the solution", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "SolutionConfig": { + "additionalProperties": false, + "description": "The configuration to use with the solution. When performAutoML is set to true, Amazon Personalize only evaluates the autoMLConfig section of the solution configuration.", + "properties": { + "AlgorithmHyperParameters": { + "additionalProperties": false, + "description": "Lists the hyperparameter names and ranges.", + "maxProperties": 100, + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "AutoMLConfig": { + "additionalProperties": false, + "description": "The AutoMLConfig object containing a list of recipes to search when AutoML is performed.", + "properties": { + "MetricName": { + "description": "The metric to optimize.", + "maxLength": 256, + "type": "string" + }, + "RecipeList": { + "description": "The list of candidate recipes.", + "insertionOrder": true, + "items": { + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "maxItems": 100, + "type": "array" + } + }, + "type": "object" + }, + "EventValueThreshold": { + "description": "Only events with a value greater than or equal to this threshold are used for training a model.", + "maxLength": 256, + "type": "string" + }, + "FeatureTransformationParameters": { + "additionalProperties": false, + "description": "Lists the feature transformation parameters.", + "maxProperties": 100, + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "HpoConfig": { + "additionalProperties": false, + "description": "Describes the properties for hyperparameter optimization (HPO)", + "properties": { + "AlgorithmHyperParameterRanges": { + "additionalProperties": false, + "description": "The hyperparameters and their allowable ranges", + "properties": { + "CategoricalHyperParameterRanges": { + "description": "The categorical hyperparameters and their ranges.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/CategoricalHyperParameterRange" + }, + "maxItems": 100, + "type": "array" + }, + "ContinuousHyperParameterRanges": { + "description": "The continuous hyperparameters and their ranges.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ContinuousHyperParameterRange" + }, + "maxItems": 100, + "type": "array" + }, + "IntegerHyperParameterRanges": { + "description": "The integer hyperparameters and their ranges.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IntegerHyperParameterRange" + }, + "maxItems": 100, + "type": "array" + } + }, + "type": "object" + }, + "HpoObjective": { + "additionalProperties": false, + "description": "The metric to optimize during HPO.", + "properties": { + "MetricName": { + "description": "The name of the metric", + "maxLength": 256, + "type": "string" + }, + "MetricRegex": { + "description": "A regular expression for finding the metric in the training job logs.", + "maxLength": 256, + "type": "string" + }, + "Type": { + "description": "The type of the metric. Valid values are Maximize and Minimize.", + "enum": [ + "Maximize", + "Minimize" + ], + "type": "string" + } + }, + "type": "object" + }, + "HpoResourceConfig": { + "additionalProperties": false, + "description": "Describes the resource configuration for hyperparameter optimization (HPO).", + "properties": { + "MaxNumberOfTrainingJobs": { + "description": "The maximum number of training jobs when you create a solution version. The maximum value for maxNumberOfTrainingJobs is 40.", + "maxLength": 256, + "type": "string" + }, + "MaxParallelTrainingJobs": { + "description": "The maximum number of parallel training jobs when you create a solution version. The maximum value for maxParallelTrainingJobs is 10.", + "maxLength": 256, + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::Personalize::Solution.", + "handlers": { + "create": { + "permissions": [ + "personalize:CreateSolution", + "personalize:DescribeSolution" + ] + }, + "delete": { + "permissions": [ + "personalize:DeleteSolution", + "personalize:DescribeSolution" + ] + }, + "list": { + "permissions": [ + "personalize:ListSolutions" + ] + }, + "read": { + "permissions": [ + "personalize:DescribeSolution" + ] + } + }, + "primaryIdentifier": [ + "/properties/SolutionArn" + ], + "properties": { + "DatasetGroupArn": { + "description": "The ARN of the dataset group that provides the training data.", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "EventType": { + "description": "When your have multiple event types (using an EVENT_TYPE schema field), this parameter specifies which event type (for example, 'click' or 'like') is used for training the model. If you do not provide an eventType, Amazon Personalize will use all interactions for training with equal weight regardless of type.", + "maxLength": 256, + "type": "string" + }, + "Name": { + "description": "The name for the solution", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9\\-_]*", + "type": "string" + }, + "PerformAutoML": { + "description": "Whether to perform automated machine learning (AutoML). The default is false. For this case, you must specify recipeArn.", + "type": "boolean" + }, + "PerformHPO": { + "description": "Whether to perform hyperparameter optimization (HPO) on the specified or selected recipe. The default is false. When performing AutoML, this parameter is always true and you should not set it to false.", + "type": "boolean" + }, + "RecipeArn": { + "description": "The ARN of the recipe to use for model training. Only specified when performAutoML is false.", + "maxLength": 256, + "pattern": "arn:([a-z\\d-]+):personalize:.*:.*:.+", + "type": "string" + }, + "SolutionArn": { + "$ref": "#/definitions/SolutionArn" + }, + "SolutionConfig": { + "$ref": "#/definitions/SolutionConfig" + } + }, + "readOnlyProperties": [ + "/properties/SolutionArn" + ], + "required": [ + "Name", + "DatasetGroupArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-personalize", + "taggable": false, + "typeName": "AWS::Personalize::Solution" +} diff --git a/src/schema/aws-pinpoint-admchannel.json b/src/schema/aws-pinpoint-admchannel.json index 6afb89c6..2c541808 100644 --- a/src/schema/aws-pinpoint-admchannel.json +++ b/src/schema/aws-pinpoint-admchannel.json @@ -1,36 +1,36 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId" - ], - "description": "Resource Type definition for AWS::Pinpoint::ADMChannel", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationId": { - "type": "string" - }, - "ClientId": { - "type": "string" - }, - "ClientSecret": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ApplicationId", - "ClientId", - "ClientSecret" - ], - "typeName": "AWS::Pinpoint::ADMChannel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::ADMChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "ClientId": { + "type": "string" + }, + "ClientSecret": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId", + "ClientId", + "ClientSecret" + ], + "typeName": "AWS::Pinpoint::ADMChannel" +} diff --git a/src/schema/aws-pinpoint-apnschannel.json b/src/schema/aws-pinpoint-apnschannel.json index 2484f5ae..fc62c018 100644 --- a/src/schema/aws-pinpoint-apnschannel.json +++ b/src/schema/aws-pinpoint-apnschannel.json @@ -1,49 +1,49 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId" - ], - "description": "Resource Type definition for AWS::Pinpoint::APNSChannel", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationId": { - "type": "string" - }, - "BundleId": { - "type": "string" - }, - "Certificate": { - "type": "string" - }, - "DefaultAuthenticationMethod": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "PrivateKey": { - "type": "string" - }, - "TeamId": { - "type": "string" - }, - "TokenKey": { - "type": "string" - }, - "TokenKeyId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ApplicationId" - ], - "typeName": "AWS::Pinpoint::APNSChannel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::APNSChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "BundleId": { + "type": "string" + }, + "Certificate": { + "type": "string" + }, + "DefaultAuthenticationMethod": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "PrivateKey": { + "type": "string" + }, + "TeamId": { + "type": "string" + }, + "TokenKey": { + "type": "string" + }, + "TokenKeyId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId" + ], + "typeName": "AWS::Pinpoint::APNSChannel" +} diff --git a/src/schema/aws-pinpoint-apnssandboxchannel.json b/src/schema/aws-pinpoint-apnssandboxchannel.json index 5bbd8736..35dec1ce 100644 --- a/src/schema/aws-pinpoint-apnssandboxchannel.json +++ b/src/schema/aws-pinpoint-apnssandboxchannel.json @@ -1,49 +1,49 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId" - ], - "description": "Resource Type definition for AWS::Pinpoint::APNSSandboxChannel", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationId": { - "type": "string" - }, - "BundleId": { - "type": "string" - }, - "Certificate": { - "type": "string" - }, - "DefaultAuthenticationMethod": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "PrivateKey": { - "type": "string" - }, - "TeamId": { - "type": "string" - }, - "TokenKey": { - "type": "string" - }, - "TokenKeyId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ApplicationId" - ], - "typeName": "AWS::Pinpoint::APNSSandboxChannel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::APNSSandboxChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "BundleId": { + "type": "string" + }, + "Certificate": { + "type": "string" + }, + "DefaultAuthenticationMethod": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "PrivateKey": { + "type": "string" + }, + "TeamId": { + "type": "string" + }, + "TokenKey": { + "type": "string" + }, + "TokenKeyId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId" + ], + "typeName": "AWS::Pinpoint::APNSSandboxChannel" +} diff --git a/src/schema/aws-pinpoint-apnsvoipchannel.json b/src/schema/aws-pinpoint-apnsvoipchannel.json index 032e1b9b..53d20fe8 100644 --- a/src/schema/aws-pinpoint-apnsvoipchannel.json +++ b/src/schema/aws-pinpoint-apnsvoipchannel.json @@ -1,49 +1,49 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId" - ], - "description": "Resource Type definition for AWS::Pinpoint::APNSVoipChannel", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationId": { - "type": "string" - }, - "BundleId": { - "type": "string" - }, - "Certificate": { - "type": "string" - }, - "DefaultAuthenticationMethod": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "PrivateKey": { - "type": "string" - }, - "TeamId": { - "type": "string" - }, - "TokenKey": { - "type": "string" - }, - "TokenKeyId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ApplicationId" - ], - "typeName": "AWS::Pinpoint::APNSVoipChannel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::APNSVoipChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "BundleId": { + "type": "string" + }, + "Certificate": { + "type": "string" + }, + "DefaultAuthenticationMethod": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "PrivateKey": { + "type": "string" + }, + "TeamId": { + "type": "string" + }, + "TokenKey": { + "type": "string" + }, + "TokenKeyId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId" + ], + "typeName": "AWS::Pinpoint::APNSVoipChannel" +} diff --git a/src/schema/aws-pinpoint-apnsvoipsandboxchannel.json b/src/schema/aws-pinpoint-apnsvoipsandboxchannel.json index 3a21e396..4dfefb2d 100644 --- a/src/schema/aws-pinpoint-apnsvoipsandboxchannel.json +++ b/src/schema/aws-pinpoint-apnsvoipsandboxchannel.json @@ -1,49 +1,49 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId" - ], - "description": "Resource Type definition for AWS::Pinpoint::APNSVoipSandboxChannel", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationId": { - "type": "string" - }, - "BundleId": { - "type": "string" - }, - "Certificate": { - "type": "string" - }, - "DefaultAuthenticationMethod": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "PrivateKey": { - "type": "string" - }, - "TeamId": { - "type": "string" - }, - "TokenKey": { - "type": "string" - }, - "TokenKeyId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ApplicationId" - ], - "typeName": "AWS::Pinpoint::APNSVoipSandboxChannel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::APNSVoipSandboxChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "BundleId": { + "type": "string" + }, + "Certificate": { + "type": "string" + }, + "DefaultAuthenticationMethod": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "PrivateKey": { + "type": "string" + }, + "TeamId": { + "type": "string" + }, + "TokenKey": { + "type": "string" + }, + "TokenKeyId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId" + ], + "typeName": "AWS::Pinpoint::APNSVoipSandboxChannel" +} diff --git a/src/schema/aws-pinpoint-app.json b/src/schema/aws-pinpoint-app.json index 677fede5..d099dc82 100644 --- a/src/schema/aws-pinpoint-app.json +++ b/src/schema/aws-pinpoint-app.json @@ -1,32 +1,32 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "description": "Resource Type definition for AWS::Pinpoint::App", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::Pinpoint::App" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "description": "Resource Type definition for AWS::Pinpoint::App", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::Pinpoint::App" +} diff --git a/src/schema/aws-pinpoint-applicationsettings.json b/src/schema/aws-pinpoint-applicationsettings.json index c6ef5a0a..a28d4644 100644 --- a/src/schema/aws-pinpoint-applicationsettings.json +++ b/src/schema/aws-pinpoint-applicationsettings.json @@ -1,88 +1,88 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId" - ], - "definitions": { - "CampaignHook": { - "additionalProperties": false, - "properties": { - "LambdaFunctionName": { - "type": "string" - }, - "Mode": { - "type": "string" - }, - "WebUrl": { - "type": "string" - } - }, - "type": "object" - }, - "Limits": { - "additionalProperties": false, - "properties": { - "Daily": { - "type": "integer" - }, - "MaximumDuration": { - "type": "integer" - }, - "MessagesPerSecond": { - "type": "integer" - }, - "Total": { - "type": "integer" - } - }, - "type": "object" - }, - "QuietTime": { - "additionalProperties": false, - "properties": { - "End": { - "type": "string" - }, - "Start": { - "type": "string" - } - }, - "required": [ - "Start", - "End" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Pinpoint::ApplicationSettings", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationId": { - "type": "string" - }, - "CampaignHook": { - "$ref": "#/definitions/CampaignHook" - }, - "CloudWatchMetricsEnabled": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "Limits": { - "$ref": "#/definitions/Limits" - }, - "QuietTime": { - "$ref": "#/definitions/QuietTime" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ApplicationId" - ], - "typeName": "AWS::Pinpoint::ApplicationSettings" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "definitions": { + "CampaignHook": { + "additionalProperties": false, + "properties": { + "LambdaFunctionName": { + "type": "string" + }, + "Mode": { + "type": "string" + }, + "WebUrl": { + "type": "string" + } + }, + "type": "object" + }, + "Limits": { + "additionalProperties": false, + "properties": { + "Daily": { + "type": "integer" + }, + "MaximumDuration": { + "type": "integer" + }, + "MessagesPerSecond": { + "type": "integer" + }, + "Total": { + "type": "integer" + } + }, + "type": "object" + }, + "QuietTime": { + "additionalProperties": false, + "properties": { + "End": { + "type": "string" + }, + "Start": { + "type": "string" + } + }, + "required": [ + "Start", + "End" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Pinpoint::ApplicationSettings", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "CampaignHook": { + "$ref": "#/definitions/CampaignHook" + }, + "CloudWatchMetricsEnabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "Limits": { + "$ref": "#/definitions/Limits" + }, + "QuietTime": { + "$ref": "#/definitions/QuietTime" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId" + ], + "typeName": "AWS::Pinpoint::ApplicationSettings" +} diff --git a/src/schema/aws-pinpoint-baiduchannel.json b/src/schema/aws-pinpoint-baiduchannel.json index 61f31fc3..e07692e9 100644 --- a/src/schema/aws-pinpoint-baiduchannel.json +++ b/src/schema/aws-pinpoint-baiduchannel.json @@ -1,36 +1,36 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId" - ], - "description": "Resource Type definition for AWS::Pinpoint::BaiduChannel", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApiKey": { - "type": "string" - }, - "ApplicationId": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "SecretKey": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ApplicationId", - "SecretKey", - "ApiKey" - ], - "typeName": "AWS::Pinpoint::BaiduChannel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::BaiduChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApiKey": { + "type": "string" + }, + "ApplicationId": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "SecretKey": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId", + "SecretKey", + "ApiKey" + ], + "typeName": "AWS::Pinpoint::BaiduChannel" +} diff --git a/src/schema/aws-pinpoint-campaign.json b/src/schema/aws-pinpoint-campaign.json index d2976779..e3d597b8 100644 --- a/src/schema/aws-pinpoint-campaign.json +++ b/src/schema/aws-pinpoint-campaign.json @@ -1,537 +1,537 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId" - ], - "definitions": { - "CampaignCustomMessage": { - "additionalProperties": false, - "properties": { - "Data": { - "type": "string" - } - }, - "type": "object" - }, - "CampaignEmailMessage": { - "additionalProperties": false, - "properties": { - "Body": { - "type": "string" - }, - "FromAddress": { - "type": "string" - }, - "HtmlBody": { - "type": "string" - }, - "Title": { - "type": "string" - } - }, - "type": "object" - }, - "CampaignEventFilter": { - "additionalProperties": false, - "properties": { - "Dimensions": { - "$ref": "#/definitions/EventDimensions" - }, - "FilterType": { - "type": "string" - } - }, - "type": "object" - }, - "CampaignHook": { - "additionalProperties": false, - "properties": { - "LambdaFunctionName": { - "type": "string" - }, - "Mode": { - "type": "string" - }, - "WebUrl": { - "type": "string" - } - }, - "type": "object" - }, - "CampaignInAppMessage": { - "additionalProperties": false, - "properties": { - "Content": { - "items": { - "$ref": "#/definitions/InAppMessageContent" - }, - "type": "array", - "uniqueItems": false - }, - "CustomConfig": { - "type": "object" - }, - "Layout": { - "type": "string" - } - }, - "type": "object" - }, - "CampaignSmsMessage": { - "additionalProperties": false, - "properties": { - "Body": { - "type": "string" - }, - "EntityId": { - "type": "string" - }, - "MessageType": { - "type": "string" - }, - "OriginationNumber": { - "type": "string" - }, - "SenderId": { - "type": "string" - }, - "TemplateId": { - "type": "string" - } - }, - "type": "object" - }, - "CustomDeliveryConfiguration": { - "additionalProperties": false, - "properties": { - "DeliveryUri": { - "type": "string" - }, - "EndpointTypes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "DefaultButtonConfiguration": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "type": "string" - }, - "BorderRadius": { - "type": "integer" - }, - "ButtonAction": { - "type": "string" - }, - "Link": { - "type": "string" - }, - "Text": { - "type": "string" - }, - "TextColor": { - "type": "string" - } - }, - "type": "object" - }, - "EventDimensions": { - "additionalProperties": false, - "properties": { - "Attributes": { - "type": "object" - }, - "EventType": { - "$ref": "#/definitions/SetDimension" - }, - "Metrics": { - "type": "object" - } - }, - "type": "object" - }, - "InAppMessageBodyConfig": { - "additionalProperties": false, - "properties": { - "Alignment": { - "type": "string" - }, - "Body": { - "type": "string" - }, - "TextColor": { - "type": "string" - } - }, - "type": "object" - }, - "InAppMessageButton": { - "additionalProperties": false, - "properties": { - "Android": { - "$ref": "#/definitions/OverrideButtonConfiguration" - }, - "DefaultConfig": { - "$ref": "#/definitions/DefaultButtonConfiguration" - }, - "IOS": { - "$ref": "#/definitions/OverrideButtonConfiguration" - }, - "Web": { - "$ref": "#/definitions/OverrideButtonConfiguration" - } - }, - "type": "object" - }, - "InAppMessageContent": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "type": "string" - }, - "BodyConfig": { - "$ref": "#/definitions/InAppMessageBodyConfig" - }, - "HeaderConfig": { - "$ref": "#/definitions/InAppMessageHeaderConfig" - }, - "ImageUrl": { - "type": "string" - }, - "PrimaryBtn": { - "$ref": "#/definitions/InAppMessageButton" - }, - "SecondaryBtn": { - "$ref": "#/definitions/InAppMessageButton" - } - }, - "type": "object" - }, - "InAppMessageHeaderConfig": { - "additionalProperties": false, - "properties": { - "Alignment": { - "type": "string" - }, - "Header": { - "type": "string" - }, - "TextColor": { - "type": "string" - } - }, - "type": "object" - }, - "Limits": { - "additionalProperties": false, - "properties": { - "Daily": { - "type": "integer" - }, - "MaximumDuration": { - "type": "integer" - }, - "MessagesPerSecond": { - "type": "integer" - }, - "Session": { - "type": "integer" - }, - "Total": { - "type": "integer" - } - }, - "type": "object" - }, - "Message": { - "additionalProperties": false, - "properties": { - "Action": { - "type": "string" - }, - "Body": { - "type": "string" - }, - "ImageIconUrl": { - "type": "string" - }, - "ImageSmallIconUrl": { - "type": "string" - }, - "ImageUrl": { - "type": "string" - }, - "JsonBody": { - "type": "string" - }, - "MediaUrl": { - "type": "string" - }, - "RawContent": { - "type": "string" - }, - "SilentPush": { - "type": "boolean" - }, - "TimeToLive": { - "type": "integer" - }, - "Title": { - "type": "string" - }, - "Url": { - "type": "string" - } - }, - "type": "object" - }, - "MessageConfiguration": { - "additionalProperties": false, - "properties": { - "ADMMessage": { - "$ref": "#/definitions/Message" - }, - "APNSMessage": { - "$ref": "#/definitions/Message" - }, - "BaiduMessage": { - "$ref": "#/definitions/Message" - }, - "CustomMessage": { - "$ref": "#/definitions/CampaignCustomMessage" - }, - "DefaultMessage": { - "$ref": "#/definitions/Message" - }, - "EmailMessage": { - "$ref": "#/definitions/CampaignEmailMessage" - }, - "GCMMessage": { - "$ref": "#/definitions/Message" - }, - "InAppMessage": { - "$ref": "#/definitions/CampaignInAppMessage" - }, - "SMSMessage": { - "$ref": "#/definitions/CampaignSmsMessage" - } - }, - "type": "object" - }, - "OverrideButtonConfiguration": { - "additionalProperties": false, - "properties": { - "ButtonAction": { - "type": "string" - }, - "Link": { - "type": "string" - } - }, - "type": "object" - }, - "QuietTime": { - "additionalProperties": false, - "properties": { - "End": { - "type": "string" - }, - "Start": { - "type": "string" - } - }, - "required": [ - "Start", - "End" - ], - "type": "object" - }, - "Schedule": { - "additionalProperties": false, - "properties": { - "EndTime": { - "type": "string" - }, - "EventFilter": { - "$ref": "#/definitions/CampaignEventFilter" - }, - "Frequency": { - "type": "string" - }, - "IsLocalTime": { - "type": "boolean" - }, - "QuietTime": { - "$ref": "#/definitions/QuietTime" - }, - "StartTime": { - "type": "string" - }, - "TimeZone": { - "type": "string" - } - }, - "type": "object" - }, - "SetDimension": { - "additionalProperties": false, - "properties": { - "DimensionType": { - "type": "string" - }, - "Values": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "Template": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "type": "object" - }, - "TemplateConfiguration": { - "additionalProperties": false, - "properties": { - "EmailTemplate": { - "$ref": "#/definitions/Template" - }, - "PushTemplate": { - "$ref": "#/definitions/Template" - }, - "SMSTemplate": { - "$ref": "#/definitions/Template" - }, - "VoiceTemplate": { - "$ref": "#/definitions/Template" - } - }, - "type": "object" - }, - "WriteTreatmentResource": { - "additionalProperties": false, - "properties": { - "CustomDeliveryConfiguration": { - "$ref": "#/definitions/CustomDeliveryConfiguration" - }, - "MessageConfiguration": { - "$ref": "#/definitions/MessageConfiguration" - }, - "Schedule": { - "$ref": "#/definitions/Schedule" - }, - "SizePercent": { - "type": "integer" - }, - "TemplateConfiguration": { - "$ref": "#/definitions/TemplateConfiguration" - }, - "TreatmentDescription": { - "type": "string" - }, - "TreatmentName": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Pinpoint::Campaign", - "primaryIdentifier": [ - "/properties/CampaignId" - ], - "properties": { - "AdditionalTreatments": { - "items": { - "$ref": "#/definitions/WriteTreatmentResource" - }, - "type": "array", - "uniqueItems": false - }, - "ApplicationId": { - "type": "string" - }, - "Arn": { - "type": "string" - }, - "CampaignHook": { - "$ref": "#/definitions/CampaignHook" - }, - "CampaignId": { - "type": "string" - }, - "CustomDeliveryConfiguration": { - "$ref": "#/definitions/CustomDeliveryConfiguration" - }, - "Description": { - "type": "string" - }, - "HoldoutPercent": { - "type": "integer" - }, - "IsPaused": { - "type": "boolean" - }, - "Limits": { - "$ref": "#/definitions/Limits" - }, - "MessageConfiguration": { - "$ref": "#/definitions/MessageConfiguration" - }, - "Name": { - "type": "string" - }, - "Priority": { - "type": "integer" - }, - "Schedule": { - "$ref": "#/definitions/Schedule" - }, - "SegmentId": { - "type": "string" - }, - "SegmentVersion": { - "type": "integer" - }, - "Tags": { - "type": "object" - }, - "TemplateConfiguration": { - "$ref": "#/definitions/TemplateConfiguration" - }, - "TreatmentDescription": { - "type": "string" - }, - "TreatmentName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CampaignId" - ], - "required": [ - "SegmentId", - "Schedule", - "ApplicationId", - "Name" - ], - "typeName": "AWS::Pinpoint::Campaign" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "definitions": { + "CampaignCustomMessage": { + "additionalProperties": false, + "properties": { + "Data": { + "type": "string" + } + }, + "type": "object" + }, + "CampaignEmailMessage": { + "additionalProperties": false, + "properties": { + "Body": { + "type": "string" + }, + "FromAddress": { + "type": "string" + }, + "HtmlBody": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "CampaignEventFilter": { + "additionalProperties": false, + "properties": { + "Dimensions": { + "$ref": "#/definitions/EventDimensions" + }, + "FilterType": { + "type": "string" + } + }, + "type": "object" + }, + "CampaignHook": { + "additionalProperties": false, + "properties": { + "LambdaFunctionName": { + "type": "string" + }, + "Mode": { + "type": "string" + }, + "WebUrl": { + "type": "string" + } + }, + "type": "object" + }, + "CampaignInAppMessage": { + "additionalProperties": false, + "properties": { + "Content": { + "items": { + "$ref": "#/definitions/InAppMessageContent" + }, + "type": "array", + "uniqueItems": false + }, + "CustomConfig": { + "type": "object" + }, + "Layout": { + "type": "string" + } + }, + "type": "object" + }, + "CampaignSmsMessage": { + "additionalProperties": false, + "properties": { + "Body": { + "type": "string" + }, + "EntityId": { + "type": "string" + }, + "MessageType": { + "type": "string" + }, + "OriginationNumber": { + "type": "string" + }, + "SenderId": { + "type": "string" + }, + "TemplateId": { + "type": "string" + } + }, + "type": "object" + }, + "CustomDeliveryConfiguration": { + "additionalProperties": false, + "properties": { + "DeliveryUri": { + "type": "string" + }, + "EndpointTypes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DefaultButtonConfiguration": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "type": "string" + }, + "BorderRadius": { + "type": "integer" + }, + "ButtonAction": { + "type": "string" + }, + "Link": { + "type": "string" + }, + "Text": { + "type": "string" + }, + "TextColor": { + "type": "string" + } + }, + "type": "object" + }, + "EventDimensions": { + "additionalProperties": false, + "properties": { + "Attributes": { + "type": "object" + }, + "EventType": { + "$ref": "#/definitions/SetDimension" + }, + "Metrics": { + "type": "object" + } + }, + "type": "object" + }, + "InAppMessageBodyConfig": { + "additionalProperties": false, + "properties": { + "Alignment": { + "type": "string" + }, + "Body": { + "type": "string" + }, + "TextColor": { + "type": "string" + } + }, + "type": "object" + }, + "InAppMessageButton": { + "additionalProperties": false, + "properties": { + "Android": { + "$ref": "#/definitions/OverrideButtonConfiguration" + }, + "DefaultConfig": { + "$ref": "#/definitions/DefaultButtonConfiguration" + }, + "IOS": { + "$ref": "#/definitions/OverrideButtonConfiguration" + }, + "Web": { + "$ref": "#/definitions/OverrideButtonConfiguration" + } + }, + "type": "object" + }, + "InAppMessageContent": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "type": "string" + }, + "BodyConfig": { + "$ref": "#/definitions/InAppMessageBodyConfig" + }, + "HeaderConfig": { + "$ref": "#/definitions/InAppMessageHeaderConfig" + }, + "ImageUrl": { + "type": "string" + }, + "PrimaryBtn": { + "$ref": "#/definitions/InAppMessageButton" + }, + "SecondaryBtn": { + "$ref": "#/definitions/InAppMessageButton" + } + }, + "type": "object" + }, + "InAppMessageHeaderConfig": { + "additionalProperties": false, + "properties": { + "Alignment": { + "type": "string" + }, + "Header": { + "type": "string" + }, + "TextColor": { + "type": "string" + } + }, + "type": "object" + }, + "Limits": { + "additionalProperties": false, + "properties": { + "Daily": { + "type": "integer" + }, + "MaximumDuration": { + "type": "integer" + }, + "MessagesPerSecond": { + "type": "integer" + }, + "Session": { + "type": "integer" + }, + "Total": { + "type": "integer" + } + }, + "type": "object" + }, + "Message": { + "additionalProperties": false, + "properties": { + "Action": { + "type": "string" + }, + "Body": { + "type": "string" + }, + "ImageIconUrl": { + "type": "string" + }, + "ImageSmallIconUrl": { + "type": "string" + }, + "ImageUrl": { + "type": "string" + }, + "JsonBody": { + "type": "string" + }, + "MediaUrl": { + "type": "string" + }, + "RawContent": { + "type": "string" + }, + "SilentPush": { + "type": "boolean" + }, + "TimeToLive": { + "type": "integer" + }, + "Title": { + "type": "string" + }, + "Url": { + "type": "string" + } + }, + "type": "object" + }, + "MessageConfiguration": { + "additionalProperties": false, + "properties": { + "ADMMessage": { + "$ref": "#/definitions/Message" + }, + "APNSMessage": { + "$ref": "#/definitions/Message" + }, + "BaiduMessage": { + "$ref": "#/definitions/Message" + }, + "CustomMessage": { + "$ref": "#/definitions/CampaignCustomMessage" + }, + "DefaultMessage": { + "$ref": "#/definitions/Message" + }, + "EmailMessage": { + "$ref": "#/definitions/CampaignEmailMessage" + }, + "GCMMessage": { + "$ref": "#/definitions/Message" + }, + "InAppMessage": { + "$ref": "#/definitions/CampaignInAppMessage" + }, + "SMSMessage": { + "$ref": "#/definitions/CampaignSmsMessage" + } + }, + "type": "object" + }, + "OverrideButtonConfiguration": { + "additionalProperties": false, + "properties": { + "ButtonAction": { + "type": "string" + }, + "Link": { + "type": "string" + } + }, + "type": "object" + }, + "QuietTime": { + "additionalProperties": false, + "properties": { + "End": { + "type": "string" + }, + "Start": { + "type": "string" + } + }, + "required": [ + "Start", + "End" + ], + "type": "object" + }, + "Schedule": { + "additionalProperties": false, + "properties": { + "EndTime": { + "type": "string" + }, + "EventFilter": { + "$ref": "#/definitions/CampaignEventFilter" + }, + "Frequency": { + "type": "string" + }, + "IsLocalTime": { + "type": "boolean" + }, + "QuietTime": { + "$ref": "#/definitions/QuietTime" + }, + "StartTime": { + "type": "string" + }, + "TimeZone": { + "type": "string" + } + }, + "type": "object" + }, + "SetDimension": { + "additionalProperties": false, + "properties": { + "DimensionType": { + "type": "string" + }, + "Values": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "Template": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Version": { + "type": "string" + } + }, + "type": "object" + }, + "TemplateConfiguration": { + "additionalProperties": false, + "properties": { + "EmailTemplate": { + "$ref": "#/definitions/Template" + }, + "PushTemplate": { + "$ref": "#/definitions/Template" + }, + "SMSTemplate": { + "$ref": "#/definitions/Template" + }, + "VoiceTemplate": { + "$ref": "#/definitions/Template" + } + }, + "type": "object" + }, + "WriteTreatmentResource": { + "additionalProperties": false, + "properties": { + "CustomDeliveryConfiguration": { + "$ref": "#/definitions/CustomDeliveryConfiguration" + }, + "MessageConfiguration": { + "$ref": "#/definitions/MessageConfiguration" + }, + "Schedule": { + "$ref": "#/definitions/Schedule" + }, + "SizePercent": { + "type": "integer" + }, + "TemplateConfiguration": { + "$ref": "#/definitions/TemplateConfiguration" + }, + "TreatmentDescription": { + "type": "string" + }, + "TreatmentName": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Pinpoint::Campaign", + "primaryIdentifier": [ + "/properties/CampaignId" + ], + "properties": { + "AdditionalTreatments": { + "items": { + "$ref": "#/definitions/WriteTreatmentResource" + }, + "type": "array", + "uniqueItems": false + }, + "ApplicationId": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CampaignHook": { + "$ref": "#/definitions/CampaignHook" + }, + "CampaignId": { + "type": "string" + }, + "CustomDeliveryConfiguration": { + "$ref": "#/definitions/CustomDeliveryConfiguration" + }, + "Description": { + "type": "string" + }, + "HoldoutPercent": { + "type": "integer" + }, + "IsPaused": { + "type": "boolean" + }, + "Limits": { + "$ref": "#/definitions/Limits" + }, + "MessageConfiguration": { + "$ref": "#/definitions/MessageConfiguration" + }, + "Name": { + "type": "string" + }, + "Priority": { + "type": "integer" + }, + "Schedule": { + "$ref": "#/definitions/Schedule" + }, + "SegmentId": { + "type": "string" + }, + "SegmentVersion": { + "type": "integer" + }, + "Tags": { + "type": "object" + }, + "TemplateConfiguration": { + "$ref": "#/definitions/TemplateConfiguration" + }, + "TreatmentDescription": { + "type": "string" + }, + "TreatmentName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CampaignId" + ], + "required": [ + "SegmentId", + "Schedule", + "ApplicationId", + "Name" + ], + "typeName": "AWS::Pinpoint::Campaign" +} diff --git a/src/schema/aws-pinpoint-emailchannel.json b/src/schema/aws-pinpoint-emailchannel.json index c8d9bd1b..d320b190 100644 --- a/src/schema/aws-pinpoint-emailchannel.json +++ b/src/schema/aws-pinpoint-emailchannel.json @@ -1,45 +1,45 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId" - ], - "description": "Resource Type definition for AWS::Pinpoint::EmailChannel", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationId": { - "type": "string" - }, - "ConfigurationSet": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - }, - "FromAddress": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Identity": { - "type": "string" - }, - "OrchestrationSendingRoleArn": { - "type": "string" - }, - "RoleArn": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "FromAddress", - "ApplicationId", - "Identity" - ], - "typeName": "AWS::Pinpoint::EmailChannel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::EmailChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "ConfigurationSet": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "FromAddress": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Identity": { + "type": "string" + }, + "OrchestrationSendingRoleArn": { + "type": "string" + }, + "RoleArn": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FromAddress", + "ApplicationId", + "Identity" + ], + "typeName": "AWS::Pinpoint::EmailChannel" +} diff --git a/src/schema/aws-pinpoint-emailtemplate.json b/src/schema/aws-pinpoint-emailtemplate.json index ecf0c2e7..76c92a78 100644 --- a/src/schema/aws-pinpoint-emailtemplate.json +++ b/src/schema/aws-pinpoint-emailtemplate.json @@ -1,48 +1,48 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TemplateName" - ], - "description": "Resource Type definition for AWS::Pinpoint::EmailTemplate", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "DefaultSubstitutions": { - "type": "string" - }, - "HtmlPart": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Subject": { - "type": "string" - }, - "Tags": { - "type": "object" - }, - "TemplateDescription": { - "type": "string" - }, - "TemplateName": { - "type": "string" - }, - "TextPart": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "TemplateName", - "Subject" - ], - "typeName": "AWS::Pinpoint::EmailTemplate" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TemplateName" + ], + "description": "Resource Type definition for AWS::Pinpoint::EmailTemplate", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "DefaultSubstitutions": { + "type": "string" + }, + "HtmlPart": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Subject": { + "type": "string" + }, + "Tags": { + "type": "object" + }, + "TemplateDescription": { + "type": "string" + }, + "TemplateName": { + "type": "string" + }, + "TextPart": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "TemplateName", + "Subject" + ], + "typeName": "AWS::Pinpoint::EmailTemplate" +} diff --git a/src/schema/aws-pinpoint-eventstream.json b/src/schema/aws-pinpoint-eventstream.json index d1acc2a9..465e651c 100644 --- a/src/schema/aws-pinpoint-eventstream.json +++ b/src/schema/aws-pinpoint-eventstream.json @@ -1,33 +1,33 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId" - ], - "description": "Resource Type definition for AWS::Pinpoint::EventStream", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationId": { - "type": "string" - }, - "DestinationStreamArn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "RoleArn": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ApplicationId", - "DestinationStreamArn", - "RoleArn" - ], - "typeName": "AWS::Pinpoint::EventStream" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::EventStream", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "DestinationStreamArn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "RoleArn": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId", + "DestinationStreamArn", + "RoleArn" + ], + "typeName": "AWS::Pinpoint::EventStream" +} diff --git a/src/schema/aws-pinpoint-gcmchannel.json b/src/schema/aws-pinpoint-gcmchannel.json index 5be82fc4..132664d9 100644 --- a/src/schema/aws-pinpoint-gcmchannel.json +++ b/src/schema/aws-pinpoint-gcmchannel.json @@ -1,37 +1,37 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId" - ], - "description": "Resource Type definition for AWS::Pinpoint::GCMChannel", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApiKey": { - "type": "string" - }, - "ApplicationId": { - "type": "string" - }, - "DefaultAuthenticationMethod": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "ServiceJson": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ApplicationId" - ], - "typeName": "AWS::Pinpoint::GCMChannel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::GCMChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApiKey": { + "type": "string" + }, + "ApplicationId": { + "type": "string" + }, + "DefaultAuthenticationMethod": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "ServiceJson": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId" + ], + "typeName": "AWS::Pinpoint::GCMChannel" +} diff --git a/src/schema/aws-pinpoint-inapptemplate.json b/src/schema/aws-pinpoint-inapptemplate.json index 541c8c92..60f2574e 100644 --- a/src/schema/aws-pinpoint-inapptemplate.json +++ b/src/schema/aws-pinpoint-inapptemplate.json @@ -1,225 +1,225 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TemplateName" - ], - "definitions": { - "Alignment": { - "enum": [ - "LEFT", - "CENTER", - "RIGHT" - ], - "type": "string" - }, - "BodyConfig": { - "additionalProperties": false, - "properties": { - "Alignment": { - "$ref": "#/definitions/Alignment" - }, - "Body": { - "type": "string" - }, - "TextColor": { - "type": "string" - } - }, - "type": "object" - }, - "ButtonAction": { - "enum": [ - "LINK", - "DEEP_LINK", - "CLOSE" - ], - "type": "string" - }, - "ButtonConfig": { - "additionalProperties": false, - "properties": { - "Android": { - "$ref": "#/definitions/OverrideButtonConfiguration" - }, - "DefaultConfig": { - "$ref": "#/definitions/DefaultButtonConfiguration" - }, - "IOS": { - "$ref": "#/definitions/OverrideButtonConfiguration" - }, - "Web": { - "$ref": "#/definitions/OverrideButtonConfiguration" - } - }, - "type": "object" - }, - "DefaultButtonConfiguration": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "type": "string" - }, - "BorderRadius": { - "type": "integer" - }, - "ButtonAction": { - "$ref": "#/definitions/ButtonAction" - }, - "Link": { - "type": "string" - }, - "Text": { - "type": "string" - }, - "TextColor": { - "type": "string" - } - }, - "type": "object" - }, - "HeaderConfig": { - "additionalProperties": false, - "properties": { - "Alignment": { - "$ref": "#/definitions/Alignment" - }, - "Header": { - "type": "string" - }, - "TextColor": { - "type": "string" - } - }, - "type": "object" - }, - "InAppMessageContent": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "type": "string" - }, - "BodyConfig": { - "$ref": "#/definitions/BodyConfig" - }, - "HeaderConfig": { - "$ref": "#/definitions/HeaderConfig" - }, - "ImageUrl": { - "type": "string" - }, - "PrimaryBtn": { - "$ref": "#/definitions/ButtonConfig" - }, - "SecondaryBtn": { - "$ref": "#/definitions/ButtonConfig" - } - }, - "type": "object" - }, - "OverrideButtonConfiguration": { - "additionalProperties": false, - "properties": { - "ButtonAction": { - "$ref": "#/definitions/ButtonAction" - }, - "Link": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Pinpoint::InAppTemplate", - "handlers": { - "create": { - "permissions": [ - "mobiletargeting:CreateInAppTemplate", - "mobiletargeting:GetInAppTemplate", - "mobiletargeting:TagResource" - ] - }, - "delete": { - "permissions": [ - "mobiletargeting:DeleteInAppTemplate", - "mobiletargeting:GetInAppTemplate" - ] - }, - "list": { - "permissions": [ - "mobiletargeting:GetInAppTemplate", - "mobiletargeting:ListTemplates" - ] - }, - "read": { - "permissions": [ - "mobiletargeting:GetInAppTemplate", - "mobiletargeting:ListTemplates" - ] - }, - "update": { - "permissions": [ - "mobiletargeting:UpdateInAppTemplate", - "mobiletargeting:GetInAppTemplate", - "mobiletargeting:TagResource", - "mobiletargeting:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/TemplateName" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Content": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/InAppMessageContent" - }, - "type": "array" - }, - "CustomConfig": { - "type": "object" - }, - "Layout": { - "enum": [ - "BOTTOM_BANNER", - "TOP_BANNER", - "OVERLAYS", - "MOBILE_FEED", - "MIDDLE_BANNER", - "CAROUSEL" - ], - "type": "string" - }, - "Tags": { - "type": "object" - }, - "TemplateDescription": { - "type": "string" - }, - "TemplateName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "TemplateName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "mobiletargeting:TagResource", - "mobiletargeting:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Pinpoint::InAppTemplate" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TemplateName" + ], + "definitions": { + "Alignment": { + "enum": [ + "LEFT", + "CENTER", + "RIGHT" + ], + "type": "string" + }, + "BodyConfig": { + "additionalProperties": false, + "properties": { + "Alignment": { + "$ref": "#/definitions/Alignment" + }, + "Body": { + "type": "string" + }, + "TextColor": { + "type": "string" + } + }, + "type": "object" + }, + "ButtonAction": { + "enum": [ + "LINK", + "DEEP_LINK", + "CLOSE" + ], + "type": "string" + }, + "ButtonConfig": { + "additionalProperties": false, + "properties": { + "Android": { + "$ref": "#/definitions/OverrideButtonConfiguration" + }, + "DefaultConfig": { + "$ref": "#/definitions/DefaultButtonConfiguration" + }, + "IOS": { + "$ref": "#/definitions/OverrideButtonConfiguration" + }, + "Web": { + "$ref": "#/definitions/OverrideButtonConfiguration" + } + }, + "type": "object" + }, + "DefaultButtonConfiguration": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "type": "string" + }, + "BorderRadius": { + "type": "integer" + }, + "ButtonAction": { + "$ref": "#/definitions/ButtonAction" + }, + "Link": { + "type": "string" + }, + "Text": { + "type": "string" + }, + "TextColor": { + "type": "string" + } + }, + "type": "object" + }, + "HeaderConfig": { + "additionalProperties": false, + "properties": { + "Alignment": { + "$ref": "#/definitions/Alignment" + }, + "Header": { + "type": "string" + }, + "TextColor": { + "type": "string" + } + }, + "type": "object" + }, + "InAppMessageContent": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "type": "string" + }, + "BodyConfig": { + "$ref": "#/definitions/BodyConfig" + }, + "HeaderConfig": { + "$ref": "#/definitions/HeaderConfig" + }, + "ImageUrl": { + "type": "string" + }, + "PrimaryBtn": { + "$ref": "#/definitions/ButtonConfig" + }, + "SecondaryBtn": { + "$ref": "#/definitions/ButtonConfig" + } + }, + "type": "object" + }, + "OverrideButtonConfiguration": { + "additionalProperties": false, + "properties": { + "ButtonAction": { + "$ref": "#/definitions/ButtonAction" + }, + "Link": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Pinpoint::InAppTemplate", + "handlers": { + "create": { + "permissions": [ + "mobiletargeting:CreateInAppTemplate", + "mobiletargeting:GetInAppTemplate", + "mobiletargeting:TagResource" + ] + }, + "delete": { + "permissions": [ + "mobiletargeting:DeleteInAppTemplate", + "mobiletargeting:GetInAppTemplate" + ] + }, + "list": { + "permissions": [ + "mobiletargeting:GetInAppTemplate", + "mobiletargeting:ListTemplates" + ] + }, + "read": { + "permissions": [ + "mobiletargeting:GetInAppTemplate", + "mobiletargeting:ListTemplates" + ] + }, + "update": { + "permissions": [ + "mobiletargeting:UpdateInAppTemplate", + "mobiletargeting:GetInAppTemplate", + "mobiletargeting:TagResource", + "mobiletargeting:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/TemplateName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Content": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/InAppMessageContent" + }, + "type": "array" + }, + "CustomConfig": { + "type": "object" + }, + "Layout": { + "enum": [ + "BOTTOM_BANNER", + "TOP_BANNER", + "OVERLAYS", + "MOBILE_FEED", + "MIDDLE_BANNER", + "CAROUSEL" + ], + "type": "string" + }, + "Tags": { + "type": "object" + }, + "TemplateDescription": { + "type": "string" + }, + "TemplateName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "TemplateName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "mobiletargeting:TagResource", + "mobiletargeting:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Pinpoint::InAppTemplate" +} diff --git a/src/schema/aws-pinpoint-pushtemplate.json b/src/schema/aws-pinpoint-pushtemplate.json index 89a62eb2..a268987e 100644 --- a/src/schema/aws-pinpoint-pushtemplate.json +++ b/src/schema/aws-pinpoint-pushtemplate.json @@ -1,130 +1,130 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TemplateName" - ], - "definitions": { - "APNSPushNotificationTemplate": { - "additionalProperties": false, - "properties": { - "Action": { - "type": "string" - }, - "Body": { - "type": "string" - }, - "MediaUrl": { - "type": "string" - }, - "Sound": { - "type": "string" - }, - "Title": { - "type": "string" - }, - "Url": { - "type": "string" - } - }, - "type": "object" - }, - "AndroidPushNotificationTemplate": { - "additionalProperties": false, - "properties": { - "Action": { - "type": "string" - }, - "Body": { - "type": "string" - }, - "ImageIconUrl": { - "type": "string" - }, - "ImageUrl": { - "type": "string" - }, - "SmallImageIconUrl": { - "type": "string" - }, - "Sound": { - "type": "string" - }, - "Title": { - "type": "string" - }, - "Url": { - "type": "string" - } - }, - "type": "object" - }, - "DefaultPushNotificationTemplate": { - "additionalProperties": false, - "properties": { - "Action": { - "type": "string" - }, - "Body": { - "type": "string" - }, - "Sound": { - "type": "string" - }, - "Title": { - "type": "string" - }, - "Url": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Pinpoint::PushTemplate", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ADM": { - "$ref": "#/definitions/AndroidPushNotificationTemplate" - }, - "APNS": { - "$ref": "#/definitions/APNSPushNotificationTemplate" - }, - "Arn": { - "type": "string" - }, - "Baidu": { - "$ref": "#/definitions/AndroidPushNotificationTemplate" - }, - "Default": { - "$ref": "#/definitions/DefaultPushNotificationTemplate" - }, - "DefaultSubstitutions": { - "type": "string" - }, - "GCM": { - "$ref": "#/definitions/AndroidPushNotificationTemplate" - }, - "Id": { - "type": "string" - }, - "Tags": { - "type": "object" - }, - "TemplateDescription": { - "type": "string" - }, - "TemplateName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "TemplateName" - ], - "typeName": "AWS::Pinpoint::PushTemplate" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TemplateName" + ], + "definitions": { + "APNSPushNotificationTemplate": { + "additionalProperties": false, + "properties": { + "Action": { + "type": "string" + }, + "Body": { + "type": "string" + }, + "MediaUrl": { + "type": "string" + }, + "Sound": { + "type": "string" + }, + "Title": { + "type": "string" + }, + "Url": { + "type": "string" + } + }, + "type": "object" + }, + "AndroidPushNotificationTemplate": { + "additionalProperties": false, + "properties": { + "Action": { + "type": "string" + }, + "Body": { + "type": "string" + }, + "ImageIconUrl": { + "type": "string" + }, + "ImageUrl": { + "type": "string" + }, + "SmallImageIconUrl": { + "type": "string" + }, + "Sound": { + "type": "string" + }, + "Title": { + "type": "string" + }, + "Url": { + "type": "string" + } + }, + "type": "object" + }, + "DefaultPushNotificationTemplate": { + "additionalProperties": false, + "properties": { + "Action": { + "type": "string" + }, + "Body": { + "type": "string" + }, + "Sound": { + "type": "string" + }, + "Title": { + "type": "string" + }, + "Url": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Pinpoint::PushTemplate", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ADM": { + "$ref": "#/definitions/AndroidPushNotificationTemplate" + }, + "APNS": { + "$ref": "#/definitions/APNSPushNotificationTemplate" + }, + "Arn": { + "type": "string" + }, + "Baidu": { + "$ref": "#/definitions/AndroidPushNotificationTemplate" + }, + "Default": { + "$ref": "#/definitions/DefaultPushNotificationTemplate" + }, + "DefaultSubstitutions": { + "type": "string" + }, + "GCM": { + "$ref": "#/definitions/AndroidPushNotificationTemplate" + }, + "Id": { + "type": "string" + }, + "Tags": { + "type": "object" + }, + "TemplateDescription": { + "type": "string" + }, + "TemplateName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "TemplateName" + ], + "typeName": "AWS::Pinpoint::PushTemplate" +} diff --git a/src/schema/aws-pinpoint-segment.json b/src/schema/aws-pinpoint-segment.json index 0936adce..5293532b 100644 --- a/src/schema/aws-pinpoint-segment.json +++ b/src/schema/aws-pinpoint-segment.json @@ -1,234 +1,234 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId" - ], - "definitions": { - "Behavior": { - "additionalProperties": false, - "properties": { - "Recency": { - "$ref": "#/definitions/Recency" - } - }, - "type": "object" - }, - "Coordinates": { - "additionalProperties": false, - "properties": { - "Latitude": { - "type": "number" - }, - "Longitude": { - "type": "number" - } - }, - "required": [ - "Longitude", - "Latitude" - ], - "type": "object" - }, - "Demographic": { - "additionalProperties": false, - "properties": { - "AppVersion": { - "$ref": "#/definitions/SetDimension" - }, - "Channel": { - "$ref": "#/definitions/SetDimension" - }, - "DeviceType": { - "$ref": "#/definitions/SetDimension" - }, - "Make": { - "$ref": "#/definitions/SetDimension" - }, - "Model": { - "$ref": "#/definitions/SetDimension" - }, - "Platform": { - "$ref": "#/definitions/SetDimension" - } - }, - "type": "object" - }, - "GPSPoint": { - "additionalProperties": false, - "properties": { - "Coordinates": { - "$ref": "#/definitions/Coordinates" - }, - "RangeInKilometers": { - "type": "number" - } - }, - "required": [ - "RangeInKilometers", - "Coordinates" - ], - "type": "object" - }, - "Groups": { - "additionalProperties": false, - "properties": { - "Dimensions": { - "items": { - "$ref": "#/definitions/SegmentDimensions" - }, - "type": "array", - "uniqueItems": false - }, - "SourceSegments": { - "items": { - "$ref": "#/definitions/SourceSegments" - }, - "type": "array", - "uniqueItems": false - }, - "SourceType": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "type": "object" - }, - "Location": { - "additionalProperties": false, - "properties": { - "Country": { - "$ref": "#/definitions/SetDimension" - }, - "GPSPoint": { - "$ref": "#/definitions/GPSPoint" - } - }, - "type": "object" - }, - "Recency": { - "additionalProperties": false, - "properties": { - "Duration": { - "type": "string" - }, - "RecencyType": { - "type": "string" - } - }, - "required": [ - "Duration", - "RecencyType" - ], - "type": "object" - }, - "SegmentDimensions": { - "additionalProperties": false, - "properties": { - "Attributes": { - "type": "object" - }, - "Behavior": { - "$ref": "#/definitions/Behavior" - }, - "Demographic": { - "$ref": "#/definitions/Demographic" - }, - "Location": { - "$ref": "#/definitions/Location" - }, - "Metrics": { - "type": "object" - }, - "UserAttributes": { - "type": "object" - } - }, - "type": "object" - }, - "SegmentGroups": { - "additionalProperties": false, - "properties": { - "Groups": { - "items": { - "$ref": "#/definitions/Groups" - }, - "type": "array", - "uniqueItems": false - }, - "Include": { - "type": "string" - } - }, - "type": "object" - }, - "SetDimension": { - "additionalProperties": false, - "properties": { - "DimensionType": { - "type": "string" - }, - "Values": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "SourceSegments": { - "additionalProperties": false, - "properties": { - "Id": { - "type": "string" - }, - "Version": { - "type": "integer" - } - }, - "required": [ - "Id" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Pinpoint::Segment", - "primaryIdentifier": [ - "/properties/SegmentId" - ], - "properties": { - "ApplicationId": { - "type": "string" - }, - "Arn": { - "type": "string" - }, - "Dimensions": { - "$ref": "#/definitions/SegmentDimensions" - }, - "Name": { - "type": "string" - }, - "SegmentGroups": { - "$ref": "#/definitions/SegmentGroups" - }, - "SegmentId": { - "type": "string" - }, - "Tags": { - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/SegmentId", - "/properties/Arn" - ], - "required": [ - "ApplicationId", - "Name" - ], - "typeName": "AWS::Pinpoint::Segment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "definitions": { + "Behavior": { + "additionalProperties": false, + "properties": { + "Recency": { + "$ref": "#/definitions/Recency" + } + }, + "type": "object" + }, + "Coordinates": { + "additionalProperties": false, + "properties": { + "Latitude": { + "type": "number" + }, + "Longitude": { + "type": "number" + } + }, + "required": [ + "Longitude", + "Latitude" + ], + "type": "object" + }, + "Demographic": { + "additionalProperties": false, + "properties": { + "AppVersion": { + "$ref": "#/definitions/SetDimension" + }, + "Channel": { + "$ref": "#/definitions/SetDimension" + }, + "DeviceType": { + "$ref": "#/definitions/SetDimension" + }, + "Make": { + "$ref": "#/definitions/SetDimension" + }, + "Model": { + "$ref": "#/definitions/SetDimension" + }, + "Platform": { + "$ref": "#/definitions/SetDimension" + } + }, + "type": "object" + }, + "GPSPoint": { + "additionalProperties": false, + "properties": { + "Coordinates": { + "$ref": "#/definitions/Coordinates" + }, + "RangeInKilometers": { + "type": "number" + } + }, + "required": [ + "RangeInKilometers", + "Coordinates" + ], + "type": "object" + }, + "Groups": { + "additionalProperties": false, + "properties": { + "Dimensions": { + "items": { + "$ref": "#/definitions/SegmentDimensions" + }, + "type": "array", + "uniqueItems": false + }, + "SourceSegments": { + "items": { + "$ref": "#/definitions/SourceSegments" + }, + "type": "array", + "uniqueItems": false + }, + "SourceType": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "type": "object" + }, + "Location": { + "additionalProperties": false, + "properties": { + "Country": { + "$ref": "#/definitions/SetDimension" + }, + "GPSPoint": { + "$ref": "#/definitions/GPSPoint" + } + }, + "type": "object" + }, + "Recency": { + "additionalProperties": false, + "properties": { + "Duration": { + "type": "string" + }, + "RecencyType": { + "type": "string" + } + }, + "required": [ + "Duration", + "RecencyType" + ], + "type": "object" + }, + "SegmentDimensions": { + "additionalProperties": false, + "properties": { + "Attributes": { + "type": "object" + }, + "Behavior": { + "$ref": "#/definitions/Behavior" + }, + "Demographic": { + "$ref": "#/definitions/Demographic" + }, + "Location": { + "$ref": "#/definitions/Location" + }, + "Metrics": { + "type": "object" + }, + "UserAttributes": { + "type": "object" + } + }, + "type": "object" + }, + "SegmentGroups": { + "additionalProperties": false, + "properties": { + "Groups": { + "items": { + "$ref": "#/definitions/Groups" + }, + "type": "array", + "uniqueItems": false + }, + "Include": { + "type": "string" + } + }, + "type": "object" + }, + "SetDimension": { + "additionalProperties": false, + "properties": { + "DimensionType": { + "type": "string" + }, + "Values": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "SourceSegments": { + "additionalProperties": false, + "properties": { + "Id": { + "type": "string" + }, + "Version": { + "type": "integer" + } + }, + "required": [ + "Id" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Pinpoint::Segment", + "primaryIdentifier": [ + "/properties/SegmentId" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "Dimensions": { + "$ref": "#/definitions/SegmentDimensions" + }, + "Name": { + "type": "string" + }, + "SegmentGroups": { + "$ref": "#/definitions/SegmentGroups" + }, + "SegmentId": { + "type": "string" + }, + "Tags": { + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/SegmentId", + "/properties/Arn" + ], + "required": [ + "ApplicationId", + "Name" + ], + "typeName": "AWS::Pinpoint::Segment" +} diff --git a/src/schema/aws-pinpoint-smschannel.json b/src/schema/aws-pinpoint-smschannel.json index 3fe57941..d3a47227 100644 --- a/src/schema/aws-pinpoint-smschannel.json +++ b/src/schema/aws-pinpoint-smschannel.json @@ -1,34 +1,34 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId" - ], - "description": "Resource Type definition for AWS::Pinpoint::SMSChannel", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationId": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "SenderId": { - "type": "string" - }, - "ShortCode": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ApplicationId" - ], - "typeName": "AWS::Pinpoint::SMSChannel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::SMSChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "SenderId": { + "type": "string" + }, + "ShortCode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId" + ], + "typeName": "AWS::Pinpoint::SMSChannel" +} diff --git a/src/schema/aws-pinpoint-smstemplate.json b/src/schema/aws-pinpoint-smstemplate.json index 6d1d57ab..61738a55 100644 --- a/src/schema/aws-pinpoint-smstemplate.json +++ b/src/schema/aws-pinpoint-smstemplate.json @@ -1,42 +1,42 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TemplateName" - ], - "description": "Resource Type definition for AWS::Pinpoint::SmsTemplate", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Body": { - "type": "string" - }, - "DefaultSubstitutions": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Tags": { - "type": "object" - }, - "TemplateDescription": { - "type": "string" - }, - "TemplateName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "TemplateName", - "Body" - ], - "typeName": "AWS::Pinpoint::SmsTemplate" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TemplateName" + ], + "description": "Resource Type definition for AWS::Pinpoint::SmsTemplate", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Body": { + "type": "string" + }, + "DefaultSubstitutions": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Tags": { + "type": "object" + }, + "TemplateDescription": { + "type": "string" + }, + "TemplateName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "TemplateName", + "Body" + ], + "typeName": "AWS::Pinpoint::SmsTemplate" +} diff --git a/src/schema/aws-pinpoint-voicechannel.json b/src/schema/aws-pinpoint-voicechannel.json index bbc63a5b..acce4ef0 100644 --- a/src/schema/aws-pinpoint-voicechannel.json +++ b/src/schema/aws-pinpoint-voicechannel.json @@ -1,28 +1,28 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId" - ], - "description": "Resource Type definition for AWS::Pinpoint::VoiceChannel", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationId": { - "type": "string" - }, - "Enabled": { - "type": "boolean" - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ApplicationId" - ], - "typeName": "AWS::Pinpoint::VoiceChannel" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "description": "Resource Type definition for AWS::Pinpoint::VoiceChannel", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationId": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ApplicationId" + ], + "typeName": "AWS::Pinpoint::VoiceChannel" +} diff --git a/src/schema/aws-pinpointemail-configurationset.json b/src/schema/aws-pinpointemail-configurationset.json index 1d27edb7..fa073f9f 100644 --- a/src/schema/aws-pinpointemail-configurationset.json +++ b/src/schema/aws-pinpointemail-configurationset.json @@ -1,94 +1,94 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "DeliveryOptions": { - "additionalProperties": false, - "properties": { - "SendingPoolName": { - "type": "string" - } - }, - "type": "object" - }, - "ReputationOptions": { - "additionalProperties": false, - "properties": { - "ReputationMetricsEnabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "SendingOptions": { - "additionalProperties": false, - "properties": { - "SendingEnabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "Tags": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "TrackingOptions": { - "additionalProperties": false, - "properties": { - "CustomRedirectDomain": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::PinpointEmail::ConfigurationSet", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DeliveryOptions": { - "$ref": "#/definitions/DeliveryOptions" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "ReputationOptions": { - "$ref": "#/definitions/ReputationOptions" - }, - "SendingOptions": { - "$ref": "#/definitions/SendingOptions" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tags" - }, - "type": "array", - "uniqueItems": false - }, - "TrackingOptions": { - "$ref": "#/definitions/TrackingOptions" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::PinpointEmail::ConfigurationSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "DeliveryOptions": { + "additionalProperties": false, + "properties": { + "SendingPoolName": { + "type": "string" + } + }, + "type": "object" + }, + "ReputationOptions": { + "additionalProperties": false, + "properties": { + "ReputationMetricsEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "SendingOptions": { + "additionalProperties": false, + "properties": { + "SendingEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "TrackingOptions": { + "additionalProperties": false, + "properties": { + "CustomRedirectDomain": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::PinpointEmail::ConfigurationSet", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DeliveryOptions": { + "$ref": "#/definitions/DeliveryOptions" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "ReputationOptions": { + "$ref": "#/definitions/ReputationOptions" + }, + "SendingOptions": { + "$ref": "#/definitions/SendingOptions" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tags" + }, + "type": "array", + "uniqueItems": false + }, + "TrackingOptions": { + "$ref": "#/definitions/TrackingOptions" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::PinpointEmail::ConfigurationSet" +} diff --git a/src/schema/aws-pinpointemail-configurationseteventdestination.json b/src/schema/aws-pinpointemail-configurationseteventdestination.json index 82b6b19e..0410f373 100644 --- a/src/schema/aws-pinpointemail-configurationseteventdestination.json +++ b/src/schema/aws-pinpointemail-configurationseteventdestination.json @@ -1,136 +1,136 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConfigurationSetName", - "/properties/EventDestinationName" - ], - "definitions": { - "CloudWatchDestination": { - "additionalProperties": false, - "properties": { - "DimensionConfigurations": { - "items": { - "$ref": "#/definitions/DimensionConfiguration" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "DimensionConfiguration": { - "additionalProperties": false, - "properties": { - "DefaultDimensionValue": { - "type": "string" - }, - "DimensionName": { - "type": "string" - }, - "DimensionValueSource": { - "type": "string" - } - }, - "required": [ - "DimensionValueSource", - "DefaultDimensionValue", - "DimensionName" - ], - "type": "object" - }, - "EventDestination": { - "additionalProperties": false, - "properties": { - "CloudWatchDestination": { - "$ref": "#/definitions/CloudWatchDestination" - }, - "Enabled": { - "type": "boolean" - }, - "KinesisFirehoseDestination": { - "$ref": "#/definitions/KinesisFirehoseDestination" - }, - "MatchingEventTypes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "PinpointDestination": { - "$ref": "#/definitions/PinpointDestination" - }, - "SnsDestination": { - "$ref": "#/definitions/SnsDestination" - } - }, - "required": [ - "MatchingEventTypes" - ], - "type": "object" - }, - "KinesisFirehoseDestination": { - "additionalProperties": false, - "properties": { - "DeliveryStreamArn": { - "type": "string" - }, - "IamRoleArn": { - "type": "string" - } - }, - "required": [ - "DeliveryStreamArn", - "IamRoleArn" - ], - "type": "object" - }, - "PinpointDestination": { - "additionalProperties": false, - "properties": { - "ApplicationArn": { - "type": "string" - } - }, - "type": "object" - }, - "SnsDestination": { - "additionalProperties": false, - "properties": { - "TopicArn": { - "type": "string" - } - }, - "required": [ - "TopicArn" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::PinpointEmail::ConfigurationSetEventDestination", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ConfigurationSetName": { - "type": "string" - }, - "EventDestination": { - "$ref": "#/definitions/EventDestination" - }, - "EventDestinationName": { - "type": "string" - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ConfigurationSetName", - "EventDestinationName" - ], - "typeName": "AWS::PinpointEmail::ConfigurationSetEventDestination" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConfigurationSetName", + "/properties/EventDestinationName" + ], + "definitions": { + "CloudWatchDestination": { + "additionalProperties": false, + "properties": { + "DimensionConfigurations": { + "items": { + "$ref": "#/definitions/DimensionConfiguration" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DimensionConfiguration": { + "additionalProperties": false, + "properties": { + "DefaultDimensionValue": { + "type": "string" + }, + "DimensionName": { + "type": "string" + }, + "DimensionValueSource": { + "type": "string" + } + }, + "required": [ + "DimensionValueSource", + "DefaultDimensionValue", + "DimensionName" + ], + "type": "object" + }, + "EventDestination": { + "additionalProperties": false, + "properties": { + "CloudWatchDestination": { + "$ref": "#/definitions/CloudWatchDestination" + }, + "Enabled": { + "type": "boolean" + }, + "KinesisFirehoseDestination": { + "$ref": "#/definitions/KinesisFirehoseDestination" + }, + "MatchingEventTypes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "PinpointDestination": { + "$ref": "#/definitions/PinpointDestination" + }, + "SnsDestination": { + "$ref": "#/definitions/SnsDestination" + } + }, + "required": [ + "MatchingEventTypes" + ], + "type": "object" + }, + "KinesisFirehoseDestination": { + "additionalProperties": false, + "properties": { + "DeliveryStreamArn": { + "type": "string" + }, + "IamRoleArn": { + "type": "string" + } + }, + "required": [ + "DeliveryStreamArn", + "IamRoleArn" + ], + "type": "object" + }, + "PinpointDestination": { + "additionalProperties": false, + "properties": { + "ApplicationArn": { + "type": "string" + } + }, + "type": "object" + }, + "SnsDestination": { + "additionalProperties": false, + "properties": { + "TopicArn": { + "type": "string" + } + }, + "required": [ + "TopicArn" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::PinpointEmail::ConfigurationSetEventDestination", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ConfigurationSetName": { + "type": "string" + }, + "EventDestination": { + "$ref": "#/definitions/EventDestination" + }, + "EventDestinationName": { + "type": "string" + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ConfigurationSetName", + "EventDestinationName" + ], + "typeName": "AWS::PinpointEmail::ConfigurationSetEventDestination" +} diff --git a/src/schema/aws-pinpointemail-dedicatedippool.json b/src/schema/aws-pinpointemail-dedicatedippool.json index 6483d93c..0ed89049 100644 --- a/src/schema/aws-pinpointemail-dedicatedippool.json +++ b/src/schema/aws-pinpointemail-dedicatedippool.json @@ -1,43 +1,43 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PoolName" - ], - "definitions": { - "Tags": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::PinpointEmail::DedicatedIpPool", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "PoolName": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tags" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "typeName": "AWS::PinpointEmail::DedicatedIpPool" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PoolName" + ], + "definitions": { + "Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::PinpointEmail::DedicatedIpPool", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "PoolName": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tags" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::PinpointEmail::DedicatedIpPool" +} diff --git a/src/schema/aws-pinpointemail-identity.json b/src/schema/aws-pinpointemail-identity.json index d6904961..f0f41e7f 100644 --- a/src/schema/aws-pinpointemail-identity.json +++ b/src/schema/aws-pinpointemail-identity.json @@ -1,91 +1,91 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "MailFromAttributes": { - "additionalProperties": false, - "properties": { - "BehaviorOnMxFailure": { - "type": "string" - }, - "MailFromDomain": { - "type": "string" - } - }, - "type": "object" - }, - "Tags": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::PinpointEmail::Identity", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DkimSigningEnabled": { - "type": "boolean" - }, - "FeedbackForwardingEnabled": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "IdentityDNSRecordName1": { - "type": "string" - }, - "IdentityDNSRecordName2": { - "type": "string" - }, - "IdentityDNSRecordName3": { - "type": "string" - }, - "IdentityDNSRecordValue1": { - "type": "string" - }, - "IdentityDNSRecordValue2": { - "type": "string" - }, - "IdentityDNSRecordValue3": { - "type": "string" - }, - "MailFromAttributes": { - "$ref": "#/definitions/MailFromAttributes" - }, - "Name": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tags" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/IdentityDNSRecordName1", - "/properties/IdentityDNSRecordValue1", - "/properties/IdentityDNSRecordName3", - "/properties/IdentityDNSRecordValue2", - "/properties/IdentityDNSRecordName2", - "/properties/IdentityDNSRecordValue3", - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::PinpointEmail::Identity" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "MailFromAttributes": { + "additionalProperties": false, + "properties": { + "BehaviorOnMxFailure": { + "type": "string" + }, + "MailFromDomain": { + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::PinpointEmail::Identity", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DkimSigningEnabled": { + "type": "boolean" + }, + "FeedbackForwardingEnabled": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "IdentityDNSRecordName1": { + "type": "string" + }, + "IdentityDNSRecordName2": { + "type": "string" + }, + "IdentityDNSRecordName3": { + "type": "string" + }, + "IdentityDNSRecordValue1": { + "type": "string" + }, + "IdentityDNSRecordValue2": { + "type": "string" + }, + "IdentityDNSRecordValue3": { + "type": "string" + }, + "MailFromAttributes": { + "$ref": "#/definitions/MailFromAttributes" + }, + "Name": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tags" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/IdentityDNSRecordName1", + "/properties/IdentityDNSRecordValue1", + "/properties/IdentityDNSRecordName3", + "/properties/IdentityDNSRecordValue2", + "/properties/IdentityDNSRecordName2", + "/properties/IdentityDNSRecordValue3", + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::PinpointEmail::Identity" +} diff --git a/src/schema/aws-pipes-pipe.json b/src/schema/aws-pipes-pipe.json index 6c95f9f1..7e197391 100644 --- a/src/schema/aws-pipes-pipe.json +++ b/src/schema/aws-pipes-pipe.json @@ -1,1928 +1,1928 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Arn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Source", - "/properties/SourceParameters/DynamoDBStreamParameters/StartingPosition", - "/properties/SourceParameters/KinesisStreamParameters/StartingPosition", - "/properties/SourceParameters/KinesisStreamParameters/StartingPositionTimestamp", - "/properties/SourceParameters/ActiveMQBrokerParameters/QueueName", - "/properties/SourceParameters/RabbitMQBrokerParameters/QueueName", - "/properties/SourceParameters/RabbitMQBrokerParameters/VirtualHost", - "/properties/SourceParameters/ManagedStreamingKafkaParameters/TopicName", - "/properties/SourceParameters/ManagedStreamingKafkaParameters/StartingPosition", - "/properties/SourceParameters/ManagedStreamingKafkaParameters/ConsumerGroupID", - "/properties/SourceParameters/SelfManagedKafkaParameters/TopicName", - "/properties/SourceParameters/SelfManagedKafkaParameters/StartingPosition", - "/properties/SourceParameters/SelfManagedKafkaParameters/AdditionalBootstrapServers", - "/properties/SourceParameters/SelfManagedKafkaParameters/ConsumerGroupID" - ], - "definitions": { - "AssignPublicIp": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "AwsVpcConfiguration": { - "additionalProperties": false, - "properties": { - "AssignPublicIp": { - "$ref": "#/definitions/AssignPublicIp" - }, - "SecurityGroups": { - "items": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^sg-[0-9a-zA-Z]*|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", - "type": "string" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - }, - "Subnets": { - "items": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^subnet-[0-9a-z]*|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", - "type": "string" - }, - "maxItems": 16, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Subnets" - ], - "type": "object" - }, - "BatchArrayProperties": { - "additionalProperties": false, - "properties": { - "Size": { - "default": 0, - "maximum": 10000, - "minimum": 2, - "type": "integer" - } - }, - "type": "object" - }, - "BatchContainerOverrides": { - "additionalProperties": false, - "properties": { - "Command": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Environment": { - "items": { - "$ref": "#/definitions/BatchEnvironmentVariable" - }, - "type": "array" - }, - "InstanceType": { - "type": "string" - }, - "ResourceRequirements": { - "items": { - "$ref": "#/definitions/BatchResourceRequirement" - }, - "type": "array" - } - }, - "type": "object" - }, - "BatchEnvironmentVariable": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "BatchJobDependency": { - "additionalProperties": false, - "properties": { - "JobId": { - "type": "string" - }, - "Type": { - "$ref": "#/definitions/BatchJobDependencyType" - } - }, - "type": "object" - }, - "BatchJobDependencyType": { - "enum": [ - "N_TO_N", - "SEQUENTIAL" - ], - "type": "string" - }, - "BatchParametersMap": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - }, - "BatchResourceRequirement": { - "additionalProperties": false, - "properties": { - "Type": { - "$ref": "#/definitions/BatchResourceRequirementType" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Type", - "Value" - ], - "type": "object" - }, - "BatchResourceRequirementType": { - "enum": [ - "GPU", - "MEMORY", - "VCPU" - ], - "type": "string" - }, - "BatchRetryStrategy": { - "additionalProperties": false, - "properties": { - "Attempts": { - "default": 0, - "maximum": 10, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "CapacityProviderStrategyItem": { - "additionalProperties": false, - "properties": { - "Base": { - "default": 0, - "maximum": 100000, - "minimum": 0, - "type": "integer" - }, - "CapacityProvider": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Weight": { - "default": 0, - "maximum": 1000, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "CapacityProvider" - ], - "type": "object" - }, - "CloudwatchLogsLogDestination": { - "additionalProperties": false, - "properties": { - "LogGroupArn": { - "maxLength": 1600, - "minLength": 1, - "pattern": "^(^arn:aws([a-z]|\\-)*:logs:([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}):(\\d{12}):log-group:.+)$", - "type": "string" - } - }, - "type": "object" - }, - "DeadLetterConfig": { - "additionalProperties": false, - "properties": { - "Arn": { - "maxLength": 1600, - "minLength": 1, - "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)$", - "type": "string" - } - }, - "type": "object" - }, - "DimensionMapping": { - "additionalProperties": false, - "properties": { - "DimensionName": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "DimensionValue": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "DimensionValueType": { - "$ref": "#/definitions/DimensionValueType" - } - }, - "required": [ - "DimensionName", - "DimensionValue", - "DimensionValueType" - ], - "type": "object" - }, - "DimensionValueType": { - "enum": [ - "VARCHAR" - ], - "type": "string" - }, - "DynamoDBStreamStartPosition": { - "enum": [ - "TRIM_HORIZON", - "LATEST" - ], - "type": "string" - }, - "EcsContainerOverride": { - "additionalProperties": false, - "properties": { - "Command": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Cpu": { - "type": "integer" - }, - "Environment": { - "items": { - "$ref": "#/definitions/EcsEnvironmentVariable" - }, - "type": "array" - }, - "EnvironmentFiles": { - "items": { - "$ref": "#/definitions/EcsEnvironmentFile" - }, - "type": "array" - }, - "Memory": { - "type": "integer" - }, - "MemoryReservation": { - "type": "integer" - }, - "Name": { - "type": "string" - }, - "ResourceRequirements": { - "items": { - "$ref": "#/definitions/EcsResourceRequirement" - }, - "type": "array" - } - }, - "type": "object" - }, - "EcsEnvironmentFile": { - "additionalProperties": false, - "properties": { - "Type": { - "$ref": "#/definitions/EcsEnvironmentFileType" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Type", - "Value" - ], - "type": "object" - }, - "EcsEnvironmentFileType": { - "enum": [ - "s3" - ], - "type": "string" - }, - "EcsEnvironmentVariable": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "EcsEphemeralStorage": { - "additionalProperties": false, - "properties": { - "SizeInGiB": { - "default": 0, - "maximum": 200, - "minimum": 21, - "type": "integer" - } - }, - "required": [ - "SizeInGiB" - ], - "type": "object" - }, - "EcsInferenceAcceleratorOverride": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "DeviceType": { - "type": "string" - } - }, - "type": "object" - }, - "EcsResourceRequirement": { - "additionalProperties": false, - "properties": { - "Type": { - "$ref": "#/definitions/EcsResourceRequirementType" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Type", - "Value" - ], - "type": "object" - }, - "EcsResourceRequirementType": { - "enum": [ - "GPU", - "InferenceAccelerator" - ], - "type": "string" - }, - "EcsTaskOverride": { - "additionalProperties": false, - "properties": { - "ContainerOverrides": { - "items": { - "$ref": "#/definitions/EcsContainerOverride" - }, - "type": "array" - }, - "Cpu": { - "type": "string" - }, - "EphemeralStorage": { - "$ref": "#/definitions/EcsEphemeralStorage" - }, - "ExecutionRoleArn": { - "maxLength": 1600, - "minLength": 1, - "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", - "type": "string" - }, - "InferenceAcceleratorOverrides": { - "items": { - "$ref": "#/definitions/EcsInferenceAcceleratorOverride" - }, - "type": "array" - }, - "Memory": { - "type": "string" - }, - "TaskRoleArn": { - "maxLength": 1600, - "minLength": 1, - "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", - "type": "string" - } - }, - "type": "object" - }, - "EpochTimeUnit": { - "enum": [ - "MILLISECONDS", - "SECONDS", - "MICROSECONDS", - "NANOSECONDS" - ], - "type": "string" - }, - "Filter": { - "additionalProperties": false, - "properties": { - "Pattern": { - "maxLength": 4096, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "FilterCriteria": { - "additionalProperties": false, - "properties": { - "Filters": { - "items": { - "$ref": "#/definitions/Filter" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "FirehoseLogDestination": { - "additionalProperties": false, - "properties": { - "DeliveryStreamArn": { - "maxLength": 1600, - "minLength": 1, - "pattern": "^(^arn:aws([a-z]|\\-)*:firehose:([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}):(\\d{12}):deliverystream/.+)$", - "type": "string" - } - }, - "type": "object" - }, - "HeaderParametersMap": { - "additionalProperties": false, - "patternProperties": { - "^[!#$%&'*+-.^_`|~0-9a-zA-Z]+|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$": { - "maxLength": 512, - "minLength": 0, - "pattern": "^[ \\t]*[\\x20-\\x7E]+([ \\t]+[\\x20-\\x7E]+)*[ \\t]*|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", - "type": "string" - } - }, - "type": "object" - }, - "IncludeExecutionDataOption": { - "enum": [ - "ALL" - ], - "type": "string" - }, - "KinesisStreamStartPosition": { - "enum": [ - "TRIM_HORIZON", - "LATEST", - "AT_TIMESTAMP" - ], - "type": "string" - }, - "LaunchType": { - "enum": [ - "EC2", - "FARGATE", - "EXTERNAL" - ], - "type": "string" - }, - "LogLevel": { - "enum": [ - "OFF", - "ERROR", - "INFO", - "TRACE" - ], - "type": "string" - }, - "MQBrokerAccessCredentials": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "BasicAuth": { - "description": "Optional SecretManager ARN which stores the database credentials", - "maxLength": 1600, - "minLength": 1, - "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", - "type": "string" - } - }, - "required": [ - "BasicAuth" - ], - "title": "BasicAuth", - "type": "object" - } - ] - }, - "MSKAccessCredentials": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "SaslScram512Auth": { - "description": "Optional SecretManager ARN which stores the database credentials", - "maxLength": 1600, - "minLength": 1, - "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", - "type": "string" - } - }, - "required": [ - "SaslScram512Auth" - ], - "title": "SaslScram512Auth", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "ClientCertificateTlsAuth": { - "description": "Optional SecretManager ARN which stores the database credentials", - "maxLength": 1600, - "minLength": 1, - "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", - "type": "string" - } - }, - "required": [ - "ClientCertificateTlsAuth" - ], - "title": "ClientCertificateTlsAuth", - "type": "object" - } - ] - }, - "MSKStartPosition": { - "enum": [ - "TRIM_HORIZON", - "LATEST" - ], - "type": "string" - }, - "MeasureValueType": { - "enum": [ - "DOUBLE", - "BIGINT", - "VARCHAR", - "BOOLEAN", - "TIMESTAMP" - ], - "type": "string" - }, - "MultiMeasureAttributeMapping": { - "additionalProperties": false, - "properties": { - "MeasureValue": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "MeasureValueType": { - "$ref": "#/definitions/MeasureValueType" - }, - "MultiMeasureAttributeName": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "MeasureValue", - "MeasureValueType", - "MultiMeasureAttributeName" - ], - "type": "object" - }, - "MultiMeasureMapping": { - "additionalProperties": false, - "properties": { - "MultiMeasureAttributeMappings": { - "items": { - "$ref": "#/definitions/MultiMeasureAttributeMapping" - }, - "maxItems": 256, - "minItems": 1, - "type": "array" - }, - "MultiMeasureName": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "MultiMeasureAttributeMappings", - "MultiMeasureName" - ], - "type": "object" - }, - "NetworkConfiguration": { - "additionalProperties": false, - "properties": { - "AwsvpcConfiguration": { - "$ref": "#/definitions/AwsVpcConfiguration" - } - }, - "type": "object" - }, - "OnPartialBatchItemFailureStreams": { - "enum": [ - "AUTOMATIC_BISECT" - ], - "type": "string" - }, - "PipeEnrichmentHttpParameters": { - "additionalProperties": false, - "properties": { - "HeaderParameters": { - "$ref": "#/definitions/HeaderParametersMap" - }, - "PathParameterValues": { - "items": { - "pattern": "^(?!\\s*$).+|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", - "type": "string" - }, - "type": "array" - }, - "QueryStringParameters": { - "$ref": "#/definitions/QueryStringParametersMap" - } - }, - "type": "object" - }, - "PipeEnrichmentParameters": { - "additionalProperties": false, - "properties": { - "HttpParameters": { - "$ref": "#/definitions/PipeEnrichmentHttpParameters" - }, - "InputTemplate": { - "maxLength": 8192, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "PipeLogConfiguration": { - "additionalProperties": false, - "properties": { - "CloudwatchLogsLogDestination": { - "$ref": "#/definitions/CloudwatchLogsLogDestination" - }, - "FirehoseLogDestination": { - "$ref": "#/definitions/FirehoseLogDestination" - }, - "IncludeExecutionData": { - "items": { - "$ref": "#/definitions/IncludeExecutionDataOption" - }, - "type": "array", - "uniqueItems": true - }, - "Level": { - "$ref": "#/definitions/LogLevel" - }, - "S3LogDestination": { - "$ref": "#/definitions/S3LogDestination" - } - }, - "type": "object" - }, - "PipeSourceActiveMQBrokerParameters": { - "additionalProperties": false, - "properties": { - "BatchSize": { - "maximum": 10000, - "minimum": 1, - "type": "integer" - }, - "Credentials": { - "$ref": "#/definitions/MQBrokerAccessCredentials" - }, - "MaximumBatchingWindowInSeconds": { - "maximum": 300, - "minimum": 0, - "type": "integer" - }, - "QueueName": { - "maxLength": 1000, - "minLength": 1, - "pattern": "^[\\s\\S]*$", - "type": "string" - } - }, - "required": [ - "Credentials", - "QueueName" - ], - "type": "object" - }, - "PipeSourceDynamoDBStreamParameters": { - "additionalProperties": false, - "properties": { - "BatchSize": { - "maximum": 10000, - "minimum": 1, - "type": "integer" - }, - "DeadLetterConfig": { - "$ref": "#/definitions/DeadLetterConfig" - }, - "MaximumBatchingWindowInSeconds": { - "maximum": 300, - "minimum": 0, - "type": "integer" - }, - "MaximumRecordAgeInSeconds": { - "maximum": 604800, - "minimum": -1, - "type": "integer" - }, - "MaximumRetryAttempts": { - "maximum": 10000, - "minimum": -1, - "type": "integer" - }, - "OnPartialBatchItemFailure": { - "$ref": "#/definitions/OnPartialBatchItemFailureStreams" - }, - "ParallelizationFactor": { - "maximum": 10, - "minimum": 1, - "type": "integer" - }, - "StartingPosition": { - "$ref": "#/definitions/DynamoDBStreamStartPosition" - } - }, - "required": [ - "StartingPosition" - ], - "type": "object" - }, - "PipeSourceKinesisStreamParameters": { - "additionalProperties": false, - "properties": { - "BatchSize": { - "maximum": 10000, - "minimum": 1, - "type": "integer" - }, - "DeadLetterConfig": { - "$ref": "#/definitions/DeadLetterConfig" - }, - "MaximumBatchingWindowInSeconds": { - "maximum": 300, - "minimum": 0, - "type": "integer" - }, - "MaximumRecordAgeInSeconds": { - "maximum": 604800, - "minimum": -1, - "type": "integer" - }, - "MaximumRetryAttempts": { - "maximum": 10000, - "minimum": -1, - "type": "integer" - }, - "OnPartialBatchItemFailure": { - "$ref": "#/definitions/OnPartialBatchItemFailureStreams" - }, - "ParallelizationFactor": { - "maximum": 10, - "minimum": 1, - "type": "integer" - }, - "StartingPosition": { - "$ref": "#/definitions/KinesisStreamStartPosition" - }, - "StartingPositionTimestamp": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "StartingPosition" - ], - "type": "object" - }, - "PipeSourceManagedStreamingKafkaParameters": { - "additionalProperties": false, - "properties": { - "BatchSize": { - "maximum": 10000, - "minimum": 1, - "type": "integer" - }, - "ConsumerGroupID": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-\\/*:_+=.@-]*$", - "type": "string" - }, - "Credentials": { - "$ref": "#/definitions/MSKAccessCredentials" - }, - "MaximumBatchingWindowInSeconds": { - "maximum": 300, - "minimum": 0, - "type": "integer" - }, - "StartingPosition": { - "$ref": "#/definitions/MSKStartPosition" - }, - "TopicName": { - "maxLength": 249, - "minLength": 1, - "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)$", - "type": "string" - } - }, - "required": [ - "TopicName" - ], - "type": "object" - }, - "PipeSourceParameters": { - "additionalProperties": false, - "properties": { - "ActiveMQBrokerParameters": { - "$ref": "#/definitions/PipeSourceActiveMQBrokerParameters" - }, - "DynamoDBStreamParameters": { - "$ref": "#/definitions/PipeSourceDynamoDBStreamParameters" - }, - "FilterCriteria": { - "$ref": "#/definitions/FilterCriteria" - }, - "KinesisStreamParameters": { - "$ref": "#/definitions/PipeSourceKinesisStreamParameters" - }, - "ManagedStreamingKafkaParameters": { - "$ref": "#/definitions/PipeSourceManagedStreamingKafkaParameters" - }, - "RabbitMQBrokerParameters": { - "$ref": "#/definitions/PipeSourceRabbitMQBrokerParameters" - }, - "SelfManagedKafkaParameters": { - "$ref": "#/definitions/PipeSourceSelfManagedKafkaParameters" - }, - "SqsQueueParameters": { - "$ref": "#/definitions/PipeSourceSqsQueueParameters" - } - }, - "type": "object" - }, - "PipeSourceRabbitMQBrokerParameters": { - "additionalProperties": false, - "properties": { - "BatchSize": { - "maximum": 10000, - "minimum": 1, - "type": "integer" - }, - "Credentials": { - "$ref": "#/definitions/MQBrokerAccessCredentials" - }, - "MaximumBatchingWindowInSeconds": { - "maximum": 300, - "minimum": 0, - "type": "integer" - }, - "QueueName": { - "maxLength": 1000, - "minLength": 1, - "pattern": "^[\\s\\S]*$", - "type": "string" - }, - "VirtualHost": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-\\/*:_+=.@-]*$", - "type": "string" - } - }, - "required": [ - "Credentials", - "QueueName" - ], - "type": "object" - }, - "PipeSourceSelfManagedKafkaParameters": { - "additionalProperties": false, - "properties": { - "AdditionalBootstrapServers": { - "items": { - "maxLength": 300, - "minLength": 1, - "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}$", - "type": "string" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "BatchSize": { - "maximum": 10000, - "minimum": 1, - "type": "integer" - }, - "ConsumerGroupID": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-\\/*:_+=.@-]*$", - "type": "string" - }, - "Credentials": { - "$ref": "#/definitions/SelfManagedKafkaAccessConfigurationCredentials" - }, - "MaximumBatchingWindowInSeconds": { - "maximum": 300, - "minimum": 0, - "type": "integer" - }, - "ServerRootCaCertificate": { - "description": "Optional SecretManager ARN which stores the database credentials", - "maxLength": 1600, - "minLength": 1, - "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", - "type": "string" - }, - "StartingPosition": { - "$ref": "#/definitions/SelfManagedKafkaStartPosition" - }, - "TopicName": { - "maxLength": 249, - "minLength": 1, - "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)$", - "type": "string" - }, - "Vpc": { - "$ref": "#/definitions/SelfManagedKafkaAccessConfigurationVpc" - } - }, - "required": [ - "TopicName" - ], - "type": "object" - }, - "PipeSourceSqsQueueParameters": { - "additionalProperties": false, - "properties": { - "BatchSize": { - "maximum": 10000, - "minimum": 1, - "type": "integer" - }, - "MaximumBatchingWindowInSeconds": { - "maximum": 300, - "minimum": 0, - "type": "integer" - } - }, - "type": "object" - }, - "PipeState": { - "enum": [ - "RUNNING", - "STOPPED", - "CREATING", - "UPDATING", - "DELETING", - "STARTING", - "STOPPING", - "CREATE_FAILED", - "UPDATE_FAILED", - "START_FAILED", - "STOP_FAILED", - "DELETE_FAILED", - "CREATE_ROLLBACK_FAILED", - "DELETE_ROLLBACK_FAILED", - "UPDATE_ROLLBACK_FAILED" - ], - "type": "string" - }, - "PipeTargetBatchJobParameters": { - "additionalProperties": false, - "properties": { - "ArrayProperties": { - "$ref": "#/definitions/BatchArrayProperties" - }, - "ContainerOverrides": { - "$ref": "#/definitions/BatchContainerOverrides" - }, - "DependsOn": { - "items": { - "$ref": "#/definitions/BatchJobDependency" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "JobDefinition": { - "type": "string" - }, - "JobName": { - "type": "string" - }, - "Parameters": { - "$ref": "#/definitions/BatchParametersMap" - }, - "RetryStrategy": { - "$ref": "#/definitions/BatchRetryStrategy" - } - }, - "required": [ - "JobDefinition", - "JobName" - ], - "type": "object" - }, - "PipeTargetCloudWatchLogsParameters": { - "additionalProperties": false, - "properties": { - "LogStreamName": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Timestamp": { - "maxLength": 256, - "minLength": 1, - "pattern": "^\\$(\\.[\\w_-]+(\\[(\\d+|\\*)\\])*)*$", - "type": "string" - } - }, - "type": "object" - }, - "PipeTargetEcsTaskParameters": { - "additionalProperties": false, - "properties": { - "CapacityProviderStrategy": { - "items": { - "$ref": "#/definitions/CapacityProviderStrategyItem" - }, - "maxItems": 6, - "minItems": 0, - "type": "array" - }, - "EnableECSManagedTags": { - "default": false, - "type": "boolean" - }, - "EnableExecuteCommand": { - "default": false, - "type": "boolean" - }, - "Group": { - "type": "string" - }, - "LaunchType": { - "$ref": "#/definitions/LaunchType" - }, - "NetworkConfiguration": { - "$ref": "#/definitions/NetworkConfiguration" - }, - "Overrides": { - "$ref": "#/definitions/EcsTaskOverride" - }, - "PlacementConstraints": { - "items": { - "$ref": "#/definitions/PlacementConstraint" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "PlacementStrategy": { - "items": { - "$ref": "#/definitions/PlacementStrategy" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - }, - "PlatformVersion": { - "type": "string" - }, - "PropagateTags": { - "$ref": "#/definitions/PropagateTags" - }, - "ReferenceId": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "TaskCount": { - "minimum": 1, - "type": "integer" - }, - "TaskDefinitionArn": { - "maxLength": 1600, - "minLength": 1, - "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", - "type": "string" - } - }, - "required": [ - "TaskDefinitionArn" - ], - "type": "object" - }, - "PipeTargetEventBridgeEventBusParameters": { - "additionalProperties": false, - "properties": { - "DetailType": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "EndpointId": { - "maxLength": 50, - "minLength": 1, - "pattern": "^[A-Za-z0-9\\-]+[\\.][A-Za-z0-9\\-]+$", - "type": "string" - }, - "Resources": { - "items": { - "maxLength": 1600, - "minLength": 1, - "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", - "type": "string" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "Source": { - "maxLength": 256, - "minLength": 1, - "pattern": "(?=[/\\.\\-_A-Za-z0-9]+)((?!aws\\.).*)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)", - "type": "string" - }, - "Time": { - "maxLength": 256, - "minLength": 1, - "pattern": "^\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*$", - "type": "string" - } - }, - "type": "object" - }, - "PipeTargetHttpParameters": { - "additionalProperties": false, - "properties": { - "HeaderParameters": { - "$ref": "#/definitions/HeaderParametersMap" - }, - "PathParameterValues": { - "items": { - "pattern": "^(?!\\s*$).+|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", - "type": "string" - }, - "type": "array" - }, - "QueryStringParameters": { - "$ref": "#/definitions/QueryStringParametersMap" - } - }, - "type": "object" - }, - "PipeTargetInvocationType": { - "enum": [ - "REQUEST_RESPONSE", - "FIRE_AND_FORGET" - ], - "type": "string" - }, - "PipeTargetKinesisStreamParameters": { - "additionalProperties": false, - "properties": { - "PartitionKey": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "PartitionKey" - ], - "type": "object" - }, - "PipeTargetLambdaFunctionParameters": { - "additionalProperties": false, - "properties": { - "InvocationType": { - "$ref": "#/definitions/PipeTargetInvocationType" - } - }, - "type": "object" - }, - "PipeTargetParameters": { - "additionalProperties": false, - "properties": { - "BatchJobParameters": { - "$ref": "#/definitions/PipeTargetBatchJobParameters" - }, - "CloudWatchLogsParameters": { - "$ref": "#/definitions/PipeTargetCloudWatchLogsParameters" - }, - "EcsTaskParameters": { - "$ref": "#/definitions/PipeTargetEcsTaskParameters" - }, - "EventBridgeEventBusParameters": { - "$ref": "#/definitions/PipeTargetEventBridgeEventBusParameters" - }, - "HttpParameters": { - "$ref": "#/definitions/PipeTargetHttpParameters" - }, - "InputTemplate": { - "maxLength": 8192, - "minLength": 0, - "type": "string" - }, - "KinesisStreamParameters": { - "$ref": "#/definitions/PipeTargetKinesisStreamParameters" - }, - "LambdaFunctionParameters": { - "$ref": "#/definitions/PipeTargetLambdaFunctionParameters" - }, - "RedshiftDataParameters": { - "$ref": "#/definitions/PipeTargetRedshiftDataParameters" - }, - "SageMakerPipelineParameters": { - "$ref": "#/definitions/PipeTargetSageMakerPipelineParameters" - }, - "SqsQueueParameters": { - "$ref": "#/definitions/PipeTargetSqsQueueParameters" - }, - "StepFunctionStateMachineParameters": { - "$ref": "#/definitions/PipeTargetStateMachineParameters" - }, - "TimestreamParameters": { - "$ref": "#/definitions/PipeTargetTimestreamParameters" - } - }, - "type": "object" - }, - "PipeTargetRedshiftDataParameters": { - "additionalProperties": false, - "properties": { - "Database": { - "description": "Redshift Database", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "DbUser": { - "description": "Database user name", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "SecretManagerArn": { - "description": "Optional SecretManager ARN which stores the database credentials", - "maxLength": 1600, - "minLength": 1, - "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", - "type": "string" - }, - "Sqls": { - "description": "A list of SQLs.", - "items": { - "description": "A single Redshift SQL", - "maxLength": 100000, - "minLength": 1, - "type": "string" - }, - "maxItems": 40, - "minItems": 1, - "type": "array" - }, - "StatementName": { - "description": "A name for Redshift DataAPI statement which can be used as filter of ListStatement.", - "maxLength": 500, - "minLength": 1, - "type": "string" - }, - "WithEvent": { - "default": false, - "type": "boolean" - } - }, - "required": [ - "Database", - "Sqls" - ], - "type": "object" - }, - "PipeTargetSageMakerPipelineParameters": { - "additionalProperties": false, - "properties": { - "PipelineParameterList": { - "items": { - "$ref": "#/definitions/SageMakerPipelineParameter" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PipeTargetSqsQueueParameters": { - "additionalProperties": false, - "properties": { - "MessageDeduplicationId": { - "maxLength": 100, - "minLength": 0, - "type": "string" - }, - "MessageGroupId": { - "maxLength": 100, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "PipeTargetStateMachineParameters": { - "additionalProperties": false, - "properties": { - "InvocationType": { - "$ref": "#/definitions/PipeTargetInvocationType" - } - }, - "type": "object" - }, - "PipeTargetTimestreamParameters": { - "additionalProperties": false, - "properties": { - "DimensionMappings": { - "items": { - "$ref": "#/definitions/DimensionMapping" - }, - "maxItems": 128, - "minItems": 1, - "type": "array" - }, - "EpochTimeUnit": { - "$ref": "#/definitions/EpochTimeUnit" - }, - "MultiMeasureMappings": { - "items": { - "$ref": "#/definitions/MultiMeasureMapping" - }, - "maxItems": 1024, - "minItems": 0, - "type": "array" - }, - "SingleMeasureMappings": { - "items": { - "$ref": "#/definitions/SingleMeasureMapping" - }, - "maxItems": 8192, - "minItems": 0, - "type": "array" - }, - "TimeFieldType": { - "$ref": "#/definitions/TimeFieldType" - }, - "TimeValue": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "TimestampFormat": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "VersionValue": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DimensionMappings", - "TimeValue", - "VersionValue" - ], - "type": "object" - }, - "PlacementConstraint": { - "additionalProperties": false, - "properties": { - "Expression": { - "maxLength": 2000, - "minLength": 0, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/PlacementConstraintType" - } - }, - "type": "object" - }, - "PlacementConstraintType": { - "enum": [ - "distinctInstance", - "memberOf" - ], - "type": "string" - }, - "PlacementStrategy": { - "additionalProperties": false, - "properties": { - "Field": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/PlacementStrategyType" - } - }, - "type": "object" - }, - "PlacementStrategyType": { - "enum": [ - "random", - "spread", - "binpack" - ], - "type": "string" - }, - "PropagateTags": { - "enum": [ - "TASK_DEFINITION" - ], - "type": "string" - }, - "QueryStringParametersMap": { - "additionalProperties": false, - "patternProperties": { - "^[^\\x00-\\x1F\\x7F]+|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$": { - "maxLength": 512, - "minLength": 0, - "pattern": "^[^\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F]+|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", - "type": "string" - } - }, - "type": "object" - }, - "RequestedPipeState": { - "enum": [ - "RUNNING", - "STOPPED" - ], - "type": "string" - }, - "S3LogDestination": { - "additionalProperties": false, - "properties": { - "BucketName": { - "type": "string" - }, - "BucketOwner": { - "type": "string" - }, - "OutputFormat": { - "$ref": "#/definitions/S3OutputFormat" - }, - "Prefix": { - "type": "string" - } - }, - "type": "object" - }, - "S3OutputFormat": { - "enum": [ - "json", - "plain", - "w3c" - ], - "type": "string" - }, - "SageMakerPipelineParameter": { - "additionalProperties": false, - "properties": { - "Name": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", - "type": "string" - }, - "Value": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Name", - "Value" - ], - "type": "object" - }, - "SelfManagedKafkaAccessConfigurationCredentials": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "BasicAuth": { - "description": "Optional SecretManager ARN which stores the database credentials", - "maxLength": 1600, - "minLength": 1, - "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", - "type": "string" - } - }, - "required": [ - "BasicAuth" - ], - "title": "BasicAuth", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "SaslScram512Auth": { - "description": "Optional SecretManager ARN which stores the database credentials", - "maxLength": 1600, - "minLength": 1, - "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", - "type": "string" - } - }, - "required": [ - "SaslScram512Auth" - ], - "title": "SaslScram512Auth", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "SaslScram256Auth": { - "description": "Optional SecretManager ARN which stores the database credentials", - "maxLength": 1600, - "minLength": 1, - "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", - "type": "string" - } - }, - "required": [ - "SaslScram256Auth" - ], - "title": "SaslScram256Auth", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "ClientCertificateTlsAuth": { - "description": "Optional SecretManager ARN which stores the database credentials", - "maxLength": 1600, - "minLength": 1, - "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", - "type": "string" - } - }, - "required": [ - "ClientCertificateTlsAuth" - ], - "title": "ClientCertificateTlsAuth", - "type": "object" - } - ] - }, - "SelfManagedKafkaAccessConfigurationVpc": { - "additionalProperties": false, - "properties": { - "SecurityGroup": { - "description": "List of SecurityGroupId.", - "items": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^sg-[0-9a-zA-Z]*$", - "type": "string" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - }, - "Subnets": { - "description": "List of SubnetId.", - "items": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^subnet-[0-9a-z]*$", - "type": "string" - }, - "maxItems": 16, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "SelfManagedKafkaStartPosition": { - "enum": [ - "TRIM_HORIZON", - "LATEST" - ], - "type": "string" - }, - "SingleMeasureMapping": { - "additionalProperties": false, - "properties": { - "MeasureName": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "MeasureValue": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "MeasureValueType": { - "$ref": "#/definitions/MeasureValueType" - } - }, - "required": [ - "MeasureName", - "MeasureValue", - "MeasureValueType" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "maxProperties": 50, - "minProperties": 1, - "patternProperties": { - ".+": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "TimeFieldType": { - "enum": [ - "EPOCH", - "TIMESTAMP_FORMAT" - ], - "type": "string" - } - }, - "description": "Definition of AWS::Pipes::Pipe Resource Type", - "handlers": { - "create": { - "permissions": [ - "pipes:CreatePipe", - "pipes:DescribePipe", - "pipes:TagResource", - "iam:PassRole", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "iam:CreateServiceLinkedRole", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:ListLogDeliveries", - "s3:PutBucketPolicy", - "s3:GetBucketPolicy", - "firehose:TagDeliveryStream", - "kms:DescribeKey", - "kms:Decrypt", - "kms:GenerateDataKey" - ] - }, - "delete": { - "permissions": [ - "pipes:DeletePipe", - "pipes:DescribePipe", - "pipes:UntagResource", - "logs:CreateLogDelivery", - "logs:UpdateLogDelivery", - "logs:DeleteLogDelivery", - "logs:GetLogDelivery", - "logs:ListLogDeliveries", - "kms:DescribeKey", - "kms:Decrypt", - "kms:GenerateDataKey" - ] - }, - "list": { - "permissions": [ - "pipes:ListPipes" - ] - }, - "read": { - "permissions": [ - "pipes:DescribePipe", - "kms:Decrypt" - ] - }, - "update": { - "permissions": [ - "pipes:UpdatePipe", - "pipes:TagResource", - "pipes:UntagResource", - "pipes:DescribePipe", - "iam:PassRole", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "iam:CreateServiceLinkedRole", - "logs:CreateLogDelivery", - "logs:UpdateLogDelivery", - "logs:DeleteLogDelivery", - "logs:GetLogDelivery", - "logs:ListLogDeliveries", - "s3:PutBucketPolicy", - "s3:GetBucketPolicy", - "firehose:TagDeliveryStream", - "kms:DescribeKey", - "kms:Decrypt", - "kms:GenerateDataKey" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "maxLength": 1600, - "minLength": 1, - "pattern": "^arn:aws([a-z]|\\-)*:([a-zA-Z0-9\\-]+):([a-z]|\\d|\\-)*:([0-9]{12})?:(.+)$", - "type": "string" - }, - "CreationTime": { - "format": "date-time", - "type": "string" - }, - "CurrentState": { - "$ref": "#/definitions/PipeState" - }, - "Description": { - "maxLength": 512, - "minLength": 0, - "pattern": "^.*$", - "type": "string" - }, - "DesiredState": { - "$ref": "#/definitions/RequestedPipeState" - }, - "Enrichment": { - "maxLength": 1600, - "minLength": 0, - "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)$", - "type": "string" - }, - "EnrichmentParameters": { - "$ref": "#/definitions/PipeEnrichmentParameters" - }, - "KmsKeyIdentifier": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - }, - "LastModifiedTime": { - "format": "date-time", - "type": "string" - }, - "LogConfiguration": { - "$ref": "#/definitions/PipeLogConfiguration" - }, - "Name": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[\\.\\-_A-Za-z0-9]+$", - "type": "string" - }, - "RoleArn": { - "maxLength": 1600, - "minLength": 1, - "pattern": "^arn:(aws[a-zA-Z-]*)?:iam::\\d{12}:role/?[a-zA-Z0-9+=,.@\\-_/]+$", - "type": "string" - }, - "Source": { - "maxLength": 1600, - "minLength": 1, - "pattern": "^smk://(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)$", - "type": "string" - }, - "SourceParameters": { - "$ref": "#/definitions/PipeSourceParameters" - }, - "StateReason": { - "maxLength": 512, - "minLength": 0, - "pattern": "^.*$", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/TagMap" - }, - "Target": { - "maxLength": 1600, - "minLength": 1, - "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)$", - "type": "string" - }, - "TargetParameters": { - "$ref": "#/definitions/PipeTargetParameters" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationTime", - "/properties/CurrentState", - "/properties/LastModifiedTime", - "/properties/StateReason" - ], - "required": [ - "RoleArn", - "Source", - "Target" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "pipes:TagResource", - "pipes:UntagResource", - "pipes:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Pipes::Pipe", - "writeOnlyProperties": [ - "/properties/TargetParameters", - "/properties/SourceParameters" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/Arn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Source", + "/properties/SourceParameters/DynamoDBStreamParameters/StartingPosition", + "/properties/SourceParameters/KinesisStreamParameters/StartingPosition", + "/properties/SourceParameters/KinesisStreamParameters/StartingPositionTimestamp", + "/properties/SourceParameters/ActiveMQBrokerParameters/QueueName", + "/properties/SourceParameters/RabbitMQBrokerParameters/QueueName", + "/properties/SourceParameters/RabbitMQBrokerParameters/VirtualHost", + "/properties/SourceParameters/ManagedStreamingKafkaParameters/TopicName", + "/properties/SourceParameters/ManagedStreamingKafkaParameters/StartingPosition", + "/properties/SourceParameters/ManagedStreamingKafkaParameters/ConsumerGroupID", + "/properties/SourceParameters/SelfManagedKafkaParameters/TopicName", + "/properties/SourceParameters/SelfManagedKafkaParameters/StartingPosition", + "/properties/SourceParameters/SelfManagedKafkaParameters/AdditionalBootstrapServers", + "/properties/SourceParameters/SelfManagedKafkaParameters/ConsumerGroupID" + ], + "definitions": { + "AssignPublicIp": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "AwsVpcConfiguration": { + "additionalProperties": false, + "properties": { + "AssignPublicIp": { + "$ref": "#/definitions/AssignPublicIp" + }, + "SecurityGroups": { + "items": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^sg-[0-9a-zA-Z]*|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "Subnets": { + "items": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^subnet-[0-9a-z]*|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + }, + "maxItems": 16, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Subnets" + ], + "type": "object" + }, + "BatchArrayProperties": { + "additionalProperties": false, + "properties": { + "Size": { + "default": 0, + "maximum": 10000, + "minimum": 2, + "type": "integer" + } + }, + "type": "object" + }, + "BatchContainerOverrides": { + "additionalProperties": false, + "properties": { + "Command": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Environment": { + "items": { + "$ref": "#/definitions/BatchEnvironmentVariable" + }, + "type": "array" + }, + "InstanceType": { + "type": "string" + }, + "ResourceRequirements": { + "items": { + "$ref": "#/definitions/BatchResourceRequirement" + }, + "type": "array" + } + }, + "type": "object" + }, + "BatchEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "BatchJobDependency": { + "additionalProperties": false, + "properties": { + "JobId": { + "type": "string" + }, + "Type": { + "$ref": "#/definitions/BatchJobDependencyType" + } + }, + "type": "object" + }, + "BatchJobDependencyType": { + "enum": [ + "N_TO_N", + "SEQUENTIAL" + ], + "type": "string" + }, + "BatchParametersMap": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "BatchResourceRequirement": { + "additionalProperties": false, + "properties": { + "Type": { + "$ref": "#/definitions/BatchResourceRequirementType" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, + "BatchResourceRequirementType": { + "enum": [ + "GPU", + "MEMORY", + "VCPU" + ], + "type": "string" + }, + "BatchRetryStrategy": { + "additionalProperties": false, + "properties": { + "Attempts": { + "default": 0, + "maximum": 10, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "CapacityProviderStrategyItem": { + "additionalProperties": false, + "properties": { + "Base": { + "default": 0, + "maximum": 100000, + "minimum": 0, + "type": "integer" + }, + "CapacityProvider": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Weight": { + "default": 0, + "maximum": 1000, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "CapacityProvider" + ], + "type": "object" + }, + "CloudwatchLogsLogDestination": { + "additionalProperties": false, + "properties": { + "LogGroupArn": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:logs:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):log-group:.+)$", + "type": "string" + } + }, + "type": "object" + }, + "DeadLetterConfig": { + "additionalProperties": false, + "properties": { + "Arn": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)$", + "type": "string" + } + }, + "type": "object" + }, + "DimensionMapping": { + "additionalProperties": false, + "properties": { + "DimensionName": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "DimensionValue": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DimensionValueType": { + "$ref": "#/definitions/DimensionValueType" + } + }, + "required": [ + "DimensionName", + "DimensionValue", + "DimensionValueType" + ], + "type": "object" + }, + "DimensionValueType": { + "enum": [ + "VARCHAR" + ], + "type": "string" + }, + "DynamoDBStreamStartPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST" + ], + "type": "string" + }, + "EcsContainerOverride": { + "additionalProperties": false, + "properties": { + "Command": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Cpu": { + "type": "integer" + }, + "Environment": { + "items": { + "$ref": "#/definitions/EcsEnvironmentVariable" + }, + "type": "array" + }, + "EnvironmentFiles": { + "items": { + "$ref": "#/definitions/EcsEnvironmentFile" + }, + "type": "array" + }, + "Memory": { + "type": "integer" + }, + "MemoryReservation": { + "type": "integer" + }, + "Name": { + "type": "string" + }, + "ResourceRequirements": { + "items": { + "$ref": "#/definitions/EcsResourceRequirement" + }, + "type": "array" + } + }, + "type": "object" + }, + "EcsEnvironmentFile": { + "additionalProperties": false, + "properties": { + "Type": { + "$ref": "#/definitions/EcsEnvironmentFileType" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, + "EcsEnvironmentFileType": { + "enum": [ + "s3" + ], + "type": "string" + }, + "EcsEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "EcsEphemeralStorage": { + "additionalProperties": false, + "properties": { + "SizeInGiB": { + "default": 0, + "maximum": 200, + "minimum": 21, + "type": "integer" + } + }, + "required": [ + "SizeInGiB" + ], + "type": "object" + }, + "EcsInferenceAcceleratorOverride": { + "additionalProperties": false, + "properties": { + "DeviceName": { + "type": "string" + }, + "DeviceType": { + "type": "string" + } + }, + "type": "object" + }, + "EcsResourceRequirement": { + "additionalProperties": false, + "properties": { + "Type": { + "$ref": "#/definitions/EcsResourceRequirementType" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, + "EcsResourceRequirementType": { + "enum": [ + "GPU", + "InferenceAccelerator" + ], + "type": "string" + }, + "EcsTaskOverride": { + "additionalProperties": false, + "properties": { + "ContainerOverrides": { + "items": { + "$ref": "#/definitions/EcsContainerOverride" + }, + "type": "array" + }, + "Cpu": { + "type": "string" + }, + "EphemeralStorage": { + "$ref": "#/definitions/EcsEphemeralStorage" + }, + "ExecutionRoleArn": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + }, + "InferenceAcceleratorOverrides": { + "items": { + "$ref": "#/definitions/EcsInferenceAcceleratorOverride" + }, + "type": "array" + }, + "Memory": { + "type": "string" + }, + "TaskRoleArn": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + } + }, + "type": "object" + }, + "EpochTimeUnit": { + "enum": [ + "MILLISECONDS", + "SECONDS", + "MICROSECONDS", + "NANOSECONDS" + ], + "type": "string" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FirehoseLogDestination": { + "additionalProperties": false, + "properties": { + "DeliveryStreamArn": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:firehose:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):deliverystream/.+)$", + "type": "string" + } + }, + "type": "object" + }, + "HeaderParametersMap": { + "additionalProperties": false, + "patternProperties": { + "^[!#$%&'*+-.^_`|~0-9a-zA-Z]+|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$": { + "maxLength": 512, + "minLength": 0, + "pattern": "^[ \\t]*[\\x20-\\x7E]+([ \\t]+[\\x20-\\x7E]+)*[ \\t]*|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + } + }, + "type": "object" + }, + "IncludeExecutionDataOption": { + "enum": [ + "ALL" + ], + "type": "string" + }, + "KinesisStreamStartPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "type": "string" + }, + "LaunchType": { + "enum": [ + "EC2", + "FARGATE", + "EXTERNAL" + ], + "type": "string" + }, + "LogLevel": { + "enum": [ + "OFF", + "ERROR", + "INFO", + "TRACE" + ], + "type": "string" + }, + "MQBrokerAccessCredentials": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "BasicAuth": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", + "type": "string" + } + }, + "required": [ + "BasicAuth" + ], + "title": "BasicAuth", + "type": "object" + } + ] + }, + "MSKAccessCredentials": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "SaslScram512Auth": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", + "type": "string" + } + }, + "required": [ + "SaslScram512Auth" + ], + "title": "SaslScram512Auth", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "ClientCertificateTlsAuth": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", + "type": "string" + } + }, + "required": [ + "ClientCertificateTlsAuth" + ], + "title": "ClientCertificateTlsAuth", + "type": "object" + } + ] + }, + "MSKStartPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST" + ], + "type": "string" + }, + "MeasureValueType": { + "enum": [ + "DOUBLE", + "BIGINT", + "VARCHAR", + "BOOLEAN", + "TIMESTAMP" + ], + "type": "string" + }, + "MultiMeasureAttributeMapping": { + "additionalProperties": false, + "properties": { + "MeasureValue": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "MeasureValueType": { + "$ref": "#/definitions/MeasureValueType" + }, + "MultiMeasureAttributeName": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "MeasureValue", + "MeasureValueType", + "MultiMeasureAttributeName" + ], + "type": "object" + }, + "MultiMeasureMapping": { + "additionalProperties": false, + "properties": { + "MultiMeasureAttributeMappings": { + "items": { + "$ref": "#/definitions/MultiMeasureAttributeMapping" + }, + "maxItems": 256, + "minItems": 1, + "type": "array" + }, + "MultiMeasureName": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "MultiMeasureAttributeMappings", + "MultiMeasureName" + ], + "type": "object" + }, + "NetworkConfiguration": { + "additionalProperties": false, + "properties": { + "AwsvpcConfiguration": { + "$ref": "#/definitions/AwsVpcConfiguration" + } + }, + "type": "object" + }, + "OnPartialBatchItemFailureStreams": { + "enum": [ + "AUTOMATIC_BISECT" + ], + "type": "string" + }, + "PipeEnrichmentHttpParameters": { + "additionalProperties": false, + "properties": { + "HeaderParameters": { + "$ref": "#/definitions/HeaderParametersMap" + }, + "PathParameterValues": { + "items": { + "pattern": "^(?!\\s*$).+|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + }, + "type": "array" + }, + "QueryStringParameters": { + "$ref": "#/definitions/QueryStringParametersMap" + } + }, + "type": "object" + }, + "PipeEnrichmentParameters": { + "additionalProperties": false, + "properties": { + "HttpParameters": { + "$ref": "#/definitions/PipeEnrichmentHttpParameters" + }, + "InputTemplate": { + "maxLength": 8192, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "PipeLogConfiguration": { + "additionalProperties": false, + "properties": { + "CloudwatchLogsLogDestination": { + "$ref": "#/definitions/CloudwatchLogsLogDestination" + }, + "FirehoseLogDestination": { + "$ref": "#/definitions/FirehoseLogDestination" + }, + "IncludeExecutionData": { + "items": { + "$ref": "#/definitions/IncludeExecutionDataOption" + }, + "type": "array", + "uniqueItems": true + }, + "Level": { + "$ref": "#/definitions/LogLevel" + }, + "S3LogDestination": { + "$ref": "#/definitions/S3LogDestination" + } + }, + "type": "object" + }, + "PipeSourceActiveMQBrokerParameters": { + "additionalProperties": false, + "properties": { + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "Credentials": { + "$ref": "#/definitions/MQBrokerAccessCredentials" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "QueueName": { + "maxLength": 1000, + "minLength": 1, + "pattern": "^[\\s\\S]*$", + "type": "string" + } + }, + "required": [ + "Credentials", + "QueueName" + ], + "type": "object" + }, + "PipeSourceDynamoDBStreamParameters": { + "additionalProperties": false, + "properties": { + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "DeadLetterConfig": { + "$ref": "#/definitions/DeadLetterConfig" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "OnPartialBatchItemFailure": { + "$ref": "#/definitions/OnPartialBatchItemFailureStreams" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "StartingPosition": { + "$ref": "#/definitions/DynamoDBStreamStartPosition" + } + }, + "required": [ + "StartingPosition" + ], + "type": "object" + }, + "PipeSourceKinesisStreamParameters": { + "additionalProperties": false, + "properties": { + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "DeadLetterConfig": { + "$ref": "#/definitions/DeadLetterConfig" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "OnPartialBatchItemFailure": { + "$ref": "#/definitions/OnPartialBatchItemFailureStreams" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "StartingPosition": { + "$ref": "#/definitions/KinesisStreamStartPosition" + }, + "StartingPositionTimestamp": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "StartingPosition" + ], + "type": "object" + }, + "PipeSourceManagedStreamingKafkaParameters": { + "additionalProperties": false, + "properties": { + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "ConsumerGroupID": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-\\/*:_+=.@-]*$", + "type": "string" + }, + "Credentials": { + "$ref": "#/definitions/MSKAccessCredentials" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "StartingPosition": { + "$ref": "#/definitions/MSKStartPosition" + }, + "TopicName": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)$", + "type": "string" + } + }, + "required": [ + "TopicName" + ], + "type": "object" + }, + "PipeSourceParameters": { + "additionalProperties": false, + "properties": { + "ActiveMQBrokerParameters": { + "$ref": "#/definitions/PipeSourceActiveMQBrokerParameters" + }, + "DynamoDBStreamParameters": { + "$ref": "#/definitions/PipeSourceDynamoDBStreamParameters" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "KinesisStreamParameters": { + "$ref": "#/definitions/PipeSourceKinesisStreamParameters" + }, + "ManagedStreamingKafkaParameters": { + "$ref": "#/definitions/PipeSourceManagedStreamingKafkaParameters" + }, + "RabbitMQBrokerParameters": { + "$ref": "#/definitions/PipeSourceRabbitMQBrokerParameters" + }, + "SelfManagedKafkaParameters": { + "$ref": "#/definitions/PipeSourceSelfManagedKafkaParameters" + }, + "SqsQueueParameters": { + "$ref": "#/definitions/PipeSourceSqsQueueParameters" + } + }, + "type": "object" + }, + "PipeSourceRabbitMQBrokerParameters": { + "additionalProperties": false, + "properties": { + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "Credentials": { + "$ref": "#/definitions/MQBrokerAccessCredentials" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "QueueName": { + "maxLength": 1000, + "minLength": 1, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "VirtualHost": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-\\/*:_+=.@-]*$", + "type": "string" + } + }, + "required": [ + "Credentials", + "QueueName" + ], + "type": "object" + }, + "PipeSourceSelfManagedKafkaParameters": { + "additionalProperties": false, + "properties": { + "AdditionalBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}$", + "type": "string" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "ConsumerGroupID": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-\\/*:_+=.@-]*$", + "type": "string" + }, + "Credentials": { + "$ref": "#/definitions/SelfManagedKafkaAccessConfigurationCredentials" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "ServerRootCaCertificate": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", + "type": "string" + }, + "StartingPosition": { + "$ref": "#/definitions/SelfManagedKafkaStartPosition" + }, + "TopicName": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)$", + "type": "string" + }, + "Vpc": { + "$ref": "#/definitions/SelfManagedKafkaAccessConfigurationVpc" + } + }, + "required": [ + "TopicName" + ], + "type": "object" + }, + "PipeSourceSqsQueueParameters": { + "additionalProperties": false, + "properties": { + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "PipeState": { + "enum": [ + "RUNNING", + "STOPPED", + "CREATING", + "UPDATING", + "DELETING", + "STARTING", + "STOPPING", + "CREATE_FAILED", + "UPDATE_FAILED", + "START_FAILED", + "STOP_FAILED", + "DELETE_FAILED", + "CREATE_ROLLBACK_FAILED", + "DELETE_ROLLBACK_FAILED", + "UPDATE_ROLLBACK_FAILED" + ], + "type": "string" + }, + "PipeTargetBatchJobParameters": { + "additionalProperties": false, + "properties": { + "ArrayProperties": { + "$ref": "#/definitions/BatchArrayProperties" + }, + "ContainerOverrides": { + "$ref": "#/definitions/BatchContainerOverrides" + }, + "DependsOn": { + "items": { + "$ref": "#/definitions/BatchJobDependency" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "JobDefinition": { + "type": "string" + }, + "JobName": { + "type": "string" + }, + "Parameters": { + "$ref": "#/definitions/BatchParametersMap" + }, + "RetryStrategy": { + "$ref": "#/definitions/BatchRetryStrategy" + } + }, + "required": [ + "JobDefinition", + "JobName" + ], + "type": "object" + }, + "PipeTargetCloudWatchLogsParameters": { + "additionalProperties": false, + "properties": { + "LogStreamName": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Timestamp": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\$(\\.[\\w_-]+(\\[(\\d+|\\*)\\])*)*$", + "type": "string" + } + }, + "type": "object" + }, + "PipeTargetEcsTaskParameters": { + "additionalProperties": false, + "properties": { + "CapacityProviderStrategy": { + "items": { + "$ref": "#/definitions/CapacityProviderStrategyItem" + }, + "maxItems": 6, + "minItems": 0, + "type": "array" + }, + "EnableECSManagedTags": { + "default": false, + "type": "boolean" + }, + "EnableExecuteCommand": { + "default": false, + "type": "boolean" + }, + "Group": { + "type": "string" + }, + "LaunchType": { + "$ref": "#/definitions/LaunchType" + }, + "NetworkConfiguration": { + "$ref": "#/definitions/NetworkConfiguration" + }, + "Overrides": { + "$ref": "#/definitions/EcsTaskOverride" + }, + "PlacementConstraints": { + "items": { + "$ref": "#/definitions/PlacementConstraint" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "PlacementStrategy": { + "items": { + "$ref": "#/definitions/PlacementStrategy" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "PlatformVersion": { + "type": "string" + }, + "PropagateTags": { + "$ref": "#/definitions/PropagateTags" + }, + "ReferenceId": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TaskCount": { + "minimum": 1, + "type": "integer" + }, + "TaskDefinitionArn": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + } + }, + "required": [ + "TaskDefinitionArn" + ], + "type": "object" + }, + "PipeTargetEventBridgeEventBusParameters": { + "additionalProperties": false, + "properties": { + "DetailType": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "EndpointId": { + "maxLength": 50, + "minLength": 1, + "pattern": "^[A-Za-z0-9\\-]+[\\.][A-Za-z0-9\\-]+$", + "type": "string" + }, + "Resources": { + "items": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Source": { + "maxLength": 256, + "minLength": 1, + "pattern": "(?=[/\\.\\-_A-Za-z0-9]+)((?!aws\\.).*)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)", + "type": "string" + }, + "Time": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*$", + "type": "string" + } + }, + "type": "object" + }, + "PipeTargetHttpParameters": { + "additionalProperties": false, + "properties": { + "HeaderParameters": { + "$ref": "#/definitions/HeaderParametersMap" + }, + "PathParameterValues": { + "items": { + "pattern": "^(?!\\s*$).+|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + }, + "type": "array" + }, + "QueryStringParameters": { + "$ref": "#/definitions/QueryStringParametersMap" + } + }, + "type": "object" + }, + "PipeTargetInvocationType": { + "enum": [ + "REQUEST_RESPONSE", + "FIRE_AND_FORGET" + ], + "type": "string" + }, + "PipeTargetKinesisStreamParameters": { + "additionalProperties": false, + "properties": { + "PartitionKey": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "PartitionKey" + ], + "type": "object" + }, + "PipeTargetLambdaFunctionParameters": { + "additionalProperties": false, + "properties": { + "InvocationType": { + "$ref": "#/definitions/PipeTargetInvocationType" + } + }, + "type": "object" + }, + "PipeTargetParameters": { + "additionalProperties": false, + "properties": { + "BatchJobParameters": { + "$ref": "#/definitions/PipeTargetBatchJobParameters" + }, + "CloudWatchLogsParameters": { + "$ref": "#/definitions/PipeTargetCloudWatchLogsParameters" + }, + "EcsTaskParameters": { + "$ref": "#/definitions/PipeTargetEcsTaskParameters" + }, + "EventBridgeEventBusParameters": { + "$ref": "#/definitions/PipeTargetEventBridgeEventBusParameters" + }, + "HttpParameters": { + "$ref": "#/definitions/PipeTargetHttpParameters" + }, + "InputTemplate": { + "maxLength": 8192, + "minLength": 0, + "type": "string" + }, + "KinesisStreamParameters": { + "$ref": "#/definitions/PipeTargetKinesisStreamParameters" + }, + "LambdaFunctionParameters": { + "$ref": "#/definitions/PipeTargetLambdaFunctionParameters" + }, + "RedshiftDataParameters": { + "$ref": "#/definitions/PipeTargetRedshiftDataParameters" + }, + "SageMakerPipelineParameters": { + "$ref": "#/definitions/PipeTargetSageMakerPipelineParameters" + }, + "SqsQueueParameters": { + "$ref": "#/definitions/PipeTargetSqsQueueParameters" + }, + "StepFunctionStateMachineParameters": { + "$ref": "#/definitions/PipeTargetStateMachineParameters" + }, + "TimestreamParameters": { + "$ref": "#/definitions/PipeTargetTimestreamParameters" + } + }, + "type": "object" + }, + "PipeTargetRedshiftDataParameters": { + "additionalProperties": false, + "properties": { + "Database": { + "description": "Redshift Database", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "DbUser": { + "description": "Database user name", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SecretManagerArn": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + }, + "Sqls": { + "description": "A list of SQLs.", + "items": { + "description": "A single Redshift SQL", + "maxLength": 100000, + "minLength": 1, + "type": "string" + }, + "maxItems": 40, + "minItems": 1, + "type": "array" + }, + "StatementName": { + "description": "A name for Redshift DataAPI statement which can be used as filter of ListStatement.", + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "WithEvent": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "Database", + "Sqls" + ], + "type": "object" + }, + "PipeTargetSageMakerPipelineParameters": { + "additionalProperties": false, + "properties": { + "PipelineParameterList": { + "items": { + "$ref": "#/definitions/SageMakerPipelineParameter" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PipeTargetSqsQueueParameters": { + "additionalProperties": false, + "properties": { + "MessageDeduplicationId": { + "maxLength": 100, + "minLength": 0, + "type": "string" + }, + "MessageGroupId": { + "maxLength": 100, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "PipeTargetStateMachineParameters": { + "additionalProperties": false, + "properties": { + "InvocationType": { + "$ref": "#/definitions/PipeTargetInvocationType" + } + }, + "type": "object" + }, + "PipeTargetTimestreamParameters": { + "additionalProperties": false, + "properties": { + "DimensionMappings": { + "items": { + "$ref": "#/definitions/DimensionMapping" + }, + "maxItems": 128, + "minItems": 1, + "type": "array" + }, + "EpochTimeUnit": { + "$ref": "#/definitions/EpochTimeUnit" + }, + "MultiMeasureMappings": { + "items": { + "$ref": "#/definitions/MultiMeasureMapping" + }, + "maxItems": 1024, + "minItems": 0, + "type": "array" + }, + "SingleMeasureMappings": { + "items": { + "$ref": "#/definitions/SingleMeasureMapping" + }, + "maxItems": 8192, + "minItems": 0, + "type": "array" + }, + "TimeFieldType": { + "$ref": "#/definitions/TimeFieldType" + }, + "TimeValue": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "TimestampFormat": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "VersionValue": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DimensionMappings", + "TimeValue", + "VersionValue" + ], + "type": "object" + }, + "PlacementConstraint": { + "additionalProperties": false, + "properties": { + "Expression": { + "maxLength": 2000, + "minLength": 0, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/PlacementConstraintType" + } + }, + "type": "object" + }, + "PlacementConstraintType": { + "enum": [ + "distinctInstance", + "memberOf" + ], + "type": "string" + }, + "PlacementStrategy": { + "additionalProperties": false, + "properties": { + "Field": { + "maxLength": 255, + "minLength": 0, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/PlacementStrategyType" + } + }, + "type": "object" + }, + "PlacementStrategyType": { + "enum": [ + "random", + "spread", + "binpack" + ], + "type": "string" + }, + "PropagateTags": { + "enum": [ + "TASK_DEFINITION" + ], + "type": "string" + }, + "QueryStringParametersMap": { + "additionalProperties": false, + "patternProperties": { + "^[^\\x00-\\x1F\\x7F]+|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$": { + "maxLength": 512, + "minLength": 0, + "pattern": "^[^\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F]+|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + } + }, + "type": "object" + }, + "RequestedPipeState": { + "enum": [ + "RUNNING", + "STOPPED" + ], + "type": "string" + }, + "S3LogDestination": { + "additionalProperties": false, + "properties": { + "BucketName": { + "type": "string" + }, + "BucketOwner": { + "type": "string" + }, + "OutputFormat": { + "$ref": "#/definitions/S3OutputFormat" + }, + "Prefix": { + "type": "string" + } + }, + "type": "object" + }, + "S3OutputFormat": { + "enum": [ + "json", + "plain", + "w3c" + ], + "type": "string" + }, + "SageMakerPipelineParameter": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", + "type": "string" + }, + "Value": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Name", + "Value" + ], + "type": "object" + }, + "SelfManagedKafkaAccessConfigurationCredentials": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "BasicAuth": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", + "type": "string" + } + }, + "required": [ + "BasicAuth" + ], + "title": "BasicAuth", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "SaslScram512Auth": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", + "type": "string" + } + }, + "required": [ + "SaslScram512Auth" + ], + "title": "SaslScram512Auth", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "SaslScram256Auth": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", + "type": "string" + } + }, + "required": [ + "SaslScram256Auth" + ], + "title": "SaslScram256Auth", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "ClientCertificateTlsAuth": { + "description": "Optional SecretManager ARN which stores the database credentials", + "maxLength": 1600, + "minLength": 1, + "pattern": "^(^arn:aws([a-z]|\\-)*:secretsmanager:([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}):(\\d{12}):secret:.+)$", + "type": "string" + } + }, + "required": [ + "ClientCertificateTlsAuth" + ], + "title": "ClientCertificateTlsAuth", + "type": "object" + } + ] + }, + "SelfManagedKafkaAccessConfigurationVpc": { + "additionalProperties": false, + "properties": { + "SecurityGroup": { + "description": "List of SecurityGroupId.", + "items": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^sg-[0-9a-zA-Z]*$", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "Subnets": { + "description": "List of SubnetId.", + "items": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^subnet-[0-9a-z]*$", + "type": "string" + }, + "maxItems": 16, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "SelfManagedKafkaStartPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST" + ], + "type": "string" + }, + "SingleMeasureMapping": { + "additionalProperties": false, + "properties": { + "MeasureName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "MeasureValue": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "MeasureValueType": { + "$ref": "#/definitions/MeasureValueType" + } + }, + "required": [ + "MeasureName", + "MeasureValue", + "MeasureValueType" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "maxProperties": 50, + "minProperties": 1, + "patternProperties": { + ".+": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "TimeFieldType": { + "enum": [ + "EPOCH", + "TIMESTAMP_FORMAT" + ], + "type": "string" + } + }, + "description": "Definition of AWS::Pipes::Pipe Resource Type", + "handlers": { + "create": { + "permissions": [ + "pipes:CreatePipe", + "pipes:DescribePipe", + "pipes:TagResource", + "iam:PassRole", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "iam:CreateServiceLinkedRole", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "s3:PutBucketPolicy", + "s3:GetBucketPolicy", + "firehose:TagDeliveryStream", + "kms:DescribeKey", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + }, + "delete": { + "permissions": [ + "pipes:DeletePipe", + "pipes:DescribePipe", + "pipes:UntagResource", + "logs:CreateLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "kms:DescribeKey", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + }, + "list": { + "permissions": [ + "pipes:ListPipes" + ] + }, + "read": { + "permissions": [ + "pipes:DescribePipe", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "pipes:UpdatePipe", + "pipes:TagResource", + "pipes:UntagResource", + "pipes:DescribePipe", + "iam:PassRole", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "iam:CreateServiceLinkedRole", + "logs:CreateLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "s3:PutBucketPolicy", + "s3:GetBucketPolicy", + "firehose:TagDeliveryStream", + "kms:DescribeKey", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:aws([a-z]|\\-)*:([a-zA-Z0-9\\-]+):([a-z]|\\d|\\-)*:([0-9]{12})?:(.+)$", + "type": "string" + }, + "CreationTime": { + "format": "date-time", + "type": "string" + }, + "CurrentState": { + "$ref": "#/definitions/PipeState" + }, + "Description": { + "maxLength": 512, + "minLength": 0, + "pattern": "^.*$", + "type": "string" + }, + "DesiredState": { + "$ref": "#/definitions/RequestedPipeState" + }, + "Enrichment": { + "maxLength": 1600, + "minLength": 0, + "pattern": "^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)$", + "type": "string" + }, + "EnrichmentParameters": { + "$ref": "#/definitions/PipeEnrichmentParameters" + }, + "KmsKeyIdentifier": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "LastModifiedTime": { + "format": "date-time", + "type": "string" + }, + "LogConfiguration": { + "$ref": "#/definitions/PipeLogConfiguration" + }, + "Name": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[\\.\\-_A-Za-z0-9]+$", + "type": "string" + }, + "RoleArn": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:(aws[a-zA-Z-]*)?:iam::\\d{12}:role/?[a-zA-Z0-9+=,.@\\-_/]+$", + "type": "string" + }, + "Source": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^smk://(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)$", + "type": "string" + }, + "SourceParameters": { + "$ref": "#/definitions/PipeSourceParameters" + }, + "StateReason": { + "maxLength": 512, + "minLength": 0, + "pattern": "^.*$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + }, + "Target": { + "maxLength": 1600, + "minLength": 1, + "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-]+):([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.+)$", + "type": "string" + }, + "TargetParameters": { + "$ref": "#/definitions/PipeTargetParameters" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/CurrentState", + "/properties/LastModifiedTime", + "/properties/StateReason" + ], + "required": [ + "RoleArn", + "Source", + "Target" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "pipes:TagResource", + "pipes:UntagResource", + "pipes:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Pipes::Pipe", + "writeOnlyProperties": [ + "/properties/TargetParameters", + "/properties/SourceParameters" + ] +} diff --git a/src/schema/aws-proton-environmentaccountconnection.json b/src/schema/aws-proton-environmentaccountconnection.json index 5788ba15..6195db4b 100644 --- a/src/schema/aws-proton-environmentaccountconnection.json +++ b/src/schema/aws-proton-environmentaccountconnection.json @@ -1,170 +1,170 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Id" - ] - ], - "additionalProperties": false, - "definitions": { - "Status": { - "enum": [ - "PENDING", - "CONNECTED", - "REJECTED" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "

A description of a resource tag.

", - "properties": { - "Key": { - "description": "

The key of the resource tag.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "

The value of the resource tag.

", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Schema describing various properties for AWS Proton Environment Account Connections resources.", - "handlers": { - "create": { - "permissions": [ - "proton:CreateEnvironmentAccountConnection", - "proton:TagResource", - "iam:PassRole", - "proton:ListTagsForResource", - "proton:GetEnvironmentAccountConnection" - ] - }, - "delete": { - "permissions": [ - "proton:DeleteEnvironmentAccountConnection", - "proton:UntagResource", - "iam:PassRole", - "proton:ListTagsForResource", - "proton:GetEnvironmentAccountConnection" - ] - }, - "list": { - "permissions": [ - "proton:ListEnvironmentAccountConnections" - ] - }, - "read": { - "permissions": [ - "proton:GetEnvironmentAccountConnection", - "proton:ListTagsForResource", - "iam:PassRole", - "proton:GetEnvironmentAccountConnection" - ] - }, - "update": { - "permissions": [ - "proton:CreateEnvironmentAccountConnection", - "proton:ListTagsForResource", - "proton:TagResource", - "proton:UntagResource", - "proton:UpdateEnvironmentAccountConnection", - "iam:PassRole", - "proton:GetEnvironmentAccountConnection" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the environment account connection.", - "type": "string" - }, - "CodebuildRoleArn": { - "description": "The Amazon Resource Name (ARN) of an IAM service role in the environment account. AWS Proton uses this role to provision infrastructure resources using CodeBuild-based provisioning in the associated environment account.", - "maxLength": 200, - "minLength": 1, - "pattern": "^arn:(aws|aws-cn|aws-us-gov):iam::\\d{12}:role/([\\w+=,.@-]{1,512}[/:])*([\\w+=,.@-]{1,64})$", - "type": "string" - }, - "ComponentRoleArn": { - "description": "The Amazon Resource Name (ARN) of the IAM service role that AWS Proton uses when provisioning directly defined components in the associated environment account. It determines the scope of infrastructure that a component can provision in the account.", - "maxLength": 200, - "minLength": 1, - "pattern": "^arn:(aws|aws-cn|aws-us-gov):iam::\\d{12}:role/([\\w+=,.@-]{1,512}[/:])*([\\w+=,.@-]{1,64})$", - "type": "string" - }, - "EnvironmentAccountId": { - "description": "The environment account that's connected to the environment account connection.", - "pattern": "^\\d{12}$", - "type": "string" - }, - "EnvironmentName": { - "description": "The name of the AWS Proton environment that's created in the associated management account.", - "maxLength": 100, - "minLength": 1, - "pattern": "^[0-9A-Za-z]+[0-9A-Za-z_\\-]*$", - "type": "string" - }, - "Id": { - "description": "The ID of the environment account connection.", - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - }, - "ManagementAccountId": { - "description": "The ID of the management account that accepts or rejects the environment account connection. You create an manage the AWS Proton environment in this account. If the management account accepts the environment account connection, AWS Proton can use the associated IAM role to provision environment infrastructure resources in the associated environment account.", - "pattern": "^\\d{12}$", - "type": "string" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) of the IAM service role that's created in the environment account. AWS Proton uses this role to provision infrastructure resources in the associated environment account.", - "maxLength": 200, - "minLength": 1, - "pattern": "^arn:(aws|aws-cn|aws-us-gov):iam::\\d{12}:role/([\\w+=,.@-]{1,512}[/:])*([\\w+=,.@-]{1,64})$", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/Status", - "description": "The status of the environment account connection." - }, - "Tags": { - "description": "

An optional list of metadata items that you can associate with the Proton environment account connection. A tag is a key-value pair.

\n

For more information, see Proton resources and tagging in the\n Proton User Guide.

", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id", - "/properties/Status" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-proton", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "proton:ListTagsForResource", - "proton:UntagResource", - "proton:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Proton::EnvironmentAccountConnection" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Id" + ] + ], + "additionalProperties": false, + "definitions": { + "Status": { + "enum": [ + "PENDING", + "CONNECTED", + "REJECTED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "

A description of a resource tag.

", + "properties": { + "Key": { + "description": "

The key of the resource tag.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "

The value of the resource tag.

", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Schema describing various properties for AWS Proton Environment Account Connections resources.", + "handlers": { + "create": { + "permissions": [ + "proton:CreateEnvironmentAccountConnection", + "proton:TagResource", + "iam:PassRole", + "proton:ListTagsForResource", + "proton:GetEnvironmentAccountConnection" + ] + }, + "delete": { + "permissions": [ + "proton:DeleteEnvironmentAccountConnection", + "proton:UntagResource", + "iam:PassRole", + "proton:ListTagsForResource", + "proton:GetEnvironmentAccountConnection" + ] + }, + "list": { + "permissions": [ + "proton:ListEnvironmentAccountConnections" + ] + }, + "read": { + "permissions": [ + "proton:GetEnvironmentAccountConnection", + "proton:ListTagsForResource", + "iam:PassRole", + "proton:GetEnvironmentAccountConnection" + ] + }, + "update": { + "permissions": [ + "proton:CreateEnvironmentAccountConnection", + "proton:ListTagsForResource", + "proton:TagResource", + "proton:UntagResource", + "proton:UpdateEnvironmentAccountConnection", + "iam:PassRole", + "proton:GetEnvironmentAccountConnection" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the environment account connection.", + "type": "string" + }, + "CodebuildRoleArn": { + "description": "The Amazon Resource Name (ARN) of an IAM service role in the environment account. AWS Proton uses this role to provision infrastructure resources using CodeBuild-based provisioning in the associated environment account.", + "maxLength": 200, + "minLength": 1, + "pattern": "^arn:(aws|aws-cn|aws-us-gov):iam::\\d{12}:role/([\\w+=,.@-]{1,512}[/:])*([\\w+=,.@-]{1,64})$", + "type": "string" + }, + "ComponentRoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM service role that AWS Proton uses when provisioning directly defined components in the associated environment account. It determines the scope of infrastructure that a component can provision in the account.", + "maxLength": 200, + "minLength": 1, + "pattern": "^arn:(aws|aws-cn|aws-us-gov):iam::\\d{12}:role/([\\w+=,.@-]{1,512}[/:])*([\\w+=,.@-]{1,64})$", + "type": "string" + }, + "EnvironmentAccountId": { + "description": "The environment account that's connected to the environment account connection.", + "pattern": "^\\d{12}$", + "type": "string" + }, + "EnvironmentName": { + "description": "The name of the AWS Proton environment that's created in the associated management account.", + "maxLength": 100, + "minLength": 1, + "pattern": "^[0-9A-Za-z]+[0-9A-Za-z_\\-]*$", + "type": "string" + }, + "Id": { + "description": "The ID of the environment account connection.", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + }, + "ManagementAccountId": { + "description": "The ID of the management account that accepts or rejects the environment account connection. You create an manage the AWS Proton environment in this account. If the management account accepts the environment account connection, AWS Proton can use the associated IAM role to provision environment infrastructure resources in the associated environment account.", + "pattern": "^\\d{12}$", + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM service role that's created in the environment account. AWS Proton uses this role to provision infrastructure resources in the associated environment account.", + "maxLength": 200, + "minLength": 1, + "pattern": "^arn:(aws|aws-cn|aws-us-gov):iam::\\d{12}:role/([\\w+=,.@-]{1,512}[/:])*([\\w+=,.@-]{1,64})$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/Status", + "description": "The status of the environment account connection." + }, + "Tags": { + "description": "

An optional list of metadata items that you can associate with the Proton environment account connection. A tag is a key-value pair.

\n

For more information, see Proton resources and tagging in the\n Proton User Guide.

", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/Status" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-proton", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "proton:ListTagsForResource", + "proton:UntagResource", + "proton:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Proton::EnvironmentAccountConnection" +} diff --git a/src/schema/aws-proton-environmenttemplate.json b/src/schema/aws-proton-environmenttemplate.json index 73dec647..cad9a4dd 100644 --- a/src/schema/aws-proton-environmenttemplate.json +++ b/src/schema/aws-proton-environmenttemplate.json @@ -1,294 +1,294 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Name" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/EncryptionKey", - "/properties/Name", - "/properties/Provisioning" - ], - "definitions": { - "Provisioning": { - "enum": [ - "CUSTOMER_MANAGED" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "

A description of a resource tag.

", - "properties": { - "Key": { - "description": "

The key of the resource tag.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "

The value of the resource tag.

", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::Proton::EnvironmentTemplate Resource Type", - "handlers": { - "create": { - "permissions": [ - "proton:CreateEnvironmentTemplate", - "proton:DeleteEnvironmentTemplate", - "proton:ListTagsForResource", - "proton:TagResource", - "proton:GetEnvironmentTemplate", - "kms:CancelKeyDeletion", - "kms:CreateAlias", - "kms:CreateCustomKeyStore", - "kms:CreateGrant", - "kms:CreateKey", - "kms:DeleteAlias", - "kms:DeleteCustomKeyStore", - "kms:DeleteImportedKeyMaterial", - "kms:DescribeCustomKeyStores", - "kms:DescribeKey", - "kms:DisableKey", - "kms:DisableKeyRotation", - "kms:EnableKey", - "kms:EnableKeyRotation", - "kms:GenerateDataKey", - "kms:GetKeyPolicy", - "kms:GetKeyRotationStatus", - "kms:GetParametersForImport", - "kms:GetPublicKey", - "kms:ListAliases", - "kms:ListGrants", - "kms:ListKeyPolicies", - "kms:ListKeyRotations", - "kms:ListKeys", - "kms:ListResourceTags", - "kms:ListRetirableGrants", - "kms:PutKeyPolicy", - "kms:RevokeGrant", - "kms:ScheduleKeyDeletion", - "kms:TagResource", - "kms:UntagResource", - "kms:UpdateAlias", - "kms:UpdateCustomKeyStore", - "kms:UpdateKeyDescription", - "kms:UpdatePrimaryRegion" - ] - }, - "delete": { - "permissions": [ - "proton:CreateEnvironmentTemplate", - "proton:DeleteEnvironmentTemplate", - "proton:GetEnvironmentTemplate", - "proton:ListTagsForResource", - "proton:TagResource", - "proton:UntagResource", - "kms:CancelKeyDeletion", - "kms:CreateAlias", - "kms:CreateCustomKeyStore", - "kms:CreateGrant", - "kms:CreateKey", - "kms:DeleteAlias", - "kms:DeleteCustomKeyStore", - "kms:DeleteImportedKeyMaterial", - "kms:DescribeCustomKeyStores", - "kms:DescribeKey", - "kms:DisableKey", - "kms:DisableKeyRotation", - "kms:EnableKey", - "kms:EnableKeyRotation", - "kms:GenerateDataKey", - "kms:GetKeyPolicy", - "kms:GetKeyRotationStatus", - "kms:GetParametersForImport", - "kms:GetPublicKey", - "kms:ListAliases", - "kms:ListGrants", - "kms:ListKeyPolicies", - "kms:ListKeyRotations", - "kms:ListKeys", - "kms:ListResourceTags", - "kms:ListRetirableGrants", - "kms:PutKeyPolicy", - "kms:RevokeGrant", - "kms:ScheduleKeyDeletion", - "kms:TagResource", - "kms:UntagResource", - "kms:UpdateAlias", - "kms:UpdateCustomKeyStore", - "kms:UpdateKeyDescription", - "kms:UpdatePrimaryRegion" - ] - }, - "list": { - "permissions": [ - "proton:ListEnvironmentTemplates" - ] - }, - "read": { - "permissions": [ - "proton:CreateEnvironmentTemplate", - "proton:DeleteEnvironmentTemplate", - "proton:ListTagsForResource", - "proton:GetEnvironmentTemplate", - "kms:CancelKeyDeletion", - "kms:CreateAlias", - "kms:CreateCustomKeyStore", - "kms:CreateGrant", - "kms:CreateKey", - "kms:DeleteAlias", - "kms:DeleteCustomKeyStore", - "kms:DeleteImportedKeyMaterial", - "kms:DescribeCustomKeyStores", - "kms:DescribeKey", - "kms:DisableKey", - "kms:DisableKeyRotation", - "kms:EnableKey", - "kms:EnableKeyRotation", - "kms:GenerateDataKey", - "kms:GetKeyPolicy", - "kms:GetKeyRotationStatus", - "kms:GetParametersForImport", - "kms:GetPublicKey", - "kms:ListAliases", - "kms:ListGrants", - "kms:ListKeyPolicies", - "kms:ListKeyRotations", - "kms:ListKeys", - "kms:ListResourceTags", - "kms:ListRetirableGrants", - "kms:PutKeyPolicy", - "kms:RevokeGrant", - "kms:ScheduleKeyDeletion", - "kms:TagResource", - "kms:UntagResource", - "kms:UpdateAlias", - "kms:UpdateCustomKeyStore", - "kms:UpdateKeyDescription", - "kms:UpdatePrimaryRegion" - ] - }, - "update": { - "permissions": [ - "proton:CreateEnvironmentTemplate", - "proton:DeleteEnvironmentTemplate", - "proton:GetEnvironmentTemplate", - "proton:ListTagsForResource", - "proton:TagResource", - "proton:UpdateEnvironmentTemplate", - "proton:UntagResource", - "kms:CancelKeyDeletion", - "kms:CreateAlias", - "kms:CreateCustomKeyStore", - "kms:CreateGrant", - "kms:CreateKey", - "kms:DeleteAlias", - "kms:DeleteCustomKeyStore", - "kms:DeleteImportedKeyMaterial", - "kms:DescribeCustomKeyStores", - "kms:DescribeKey", - "kms:DisableKey", - "kms:DisableKeyRotation", - "kms:EnableKey", - "kms:EnableKeyRotation", - "kms:GenerateDataKey", - "kms:GetKeyPolicy", - "kms:GetKeyRotationStatus", - "kms:GetParametersForImport", - "kms:GetPublicKey", - "kms:ListAliases", - "kms:ListGrants", - "kms:ListKeyPolicies", - "kms:ListKeyRotations", - "kms:ListKeys", - "kms:ListResourceTags", - "kms:ListRetirableGrants", - "kms:PutKeyPolicy", - "kms:RevokeGrant", - "kms:ScheduleKeyDeletion", - "kms:TagResource", - "kms:UntagResource", - "kms:UpdateAlias", - "kms:UpdateCustomKeyStore", - "kms:UpdateKeyDescription", - "kms:UpdatePrimaryRegion" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) of the environment template.

", - "type": "string" - }, - "Description": { - "description": "

A description of the environment template.

", - "maxLength": 500, - "minLength": 0, - "type": "string" - }, - "DisplayName": { - "description": "

The environment template name as displayed in the developer interface.

", - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "EncryptionKey": { - "description": "

A customer provided encryption key that Proton uses to encrypt data.

", - "maxLength": 200, - "minLength": 1, - "pattern": "^arn:(aws|aws-cn|aws-us-gov):[a-zA-Z0-9-]+:[a-zA-Z0-9-]*:\\d{12}:([\\w+=,.@-]+[/:])*[\\w+=,.@-]+$", - "type": "string" - }, - "Name": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[0-9A-Za-z]+[0-9A-Za-z_\\-]*$", - "type": "string" - }, - "Provisioning": { - "$ref": "#/definitions/Provisioning" - }, - "Tags": { - "description": "

An optional list of metadata items that you can associate with the Proton environment template. A tag is a key-value pair.

\n

For more information, see Proton resources and tagging in the\n Proton User Guide.

", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-proton", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "proton:ListTagsForResource", - "proton:UntagResource", - "proton:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Proton::EnvironmentTemplate" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EncryptionKey", + "/properties/Name", + "/properties/Provisioning" + ], + "definitions": { + "Provisioning": { + "enum": [ + "CUSTOMER_MANAGED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "

A description of a resource tag.

", + "properties": { + "Key": { + "description": "

The key of the resource tag.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "

The value of the resource tag.

", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Proton::EnvironmentTemplate Resource Type", + "handlers": { + "create": { + "permissions": [ + "proton:CreateEnvironmentTemplate", + "proton:DeleteEnvironmentTemplate", + "proton:ListTagsForResource", + "proton:TagResource", + "proton:GetEnvironmentTemplate", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" + ] + }, + "delete": { + "permissions": [ + "proton:CreateEnvironmentTemplate", + "proton:DeleteEnvironmentTemplate", + "proton:GetEnvironmentTemplate", + "proton:ListTagsForResource", + "proton:TagResource", + "proton:UntagResource", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" + ] + }, + "list": { + "permissions": [ + "proton:ListEnvironmentTemplates" + ] + }, + "read": { + "permissions": [ + "proton:CreateEnvironmentTemplate", + "proton:DeleteEnvironmentTemplate", + "proton:ListTagsForResource", + "proton:GetEnvironmentTemplate", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" + ] + }, + "update": { + "permissions": [ + "proton:CreateEnvironmentTemplate", + "proton:DeleteEnvironmentTemplate", + "proton:GetEnvironmentTemplate", + "proton:ListTagsForResource", + "proton:TagResource", + "proton:UpdateEnvironmentTemplate", + "proton:UntagResource", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the environment template.

", + "type": "string" + }, + "Description": { + "description": "

A description of the environment template.

", + "maxLength": 500, + "minLength": 0, + "type": "string" + }, + "DisplayName": { + "description": "

The environment template name as displayed in the developer interface.

", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "EncryptionKey": { + "description": "

A customer provided encryption key that Proton uses to encrypt data.

", + "maxLength": 200, + "minLength": 1, + "pattern": "^arn:(aws|aws-cn|aws-us-gov):[a-zA-Z0-9-]+:[a-zA-Z0-9-]*:\\d{12}:([\\w+=,.@-]+[/:])*[\\w+=,.@-]+$", + "type": "string" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[0-9A-Za-z]+[0-9A-Za-z_\\-]*$", + "type": "string" + }, + "Provisioning": { + "$ref": "#/definitions/Provisioning" + }, + "Tags": { + "description": "

An optional list of metadata items that you can associate with the Proton environment template. A tag is a key-value pair.

\n

For more information, see Proton resources and tagging in the\n Proton User Guide.

", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-proton", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "proton:ListTagsForResource", + "proton:UntagResource", + "proton:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Proton::EnvironmentTemplate" +} diff --git a/src/schema/aws-proton-servicetemplate.json b/src/schema/aws-proton-servicetemplate.json index 8aabbbfa..473f38d0 100644 --- a/src/schema/aws-proton-servicetemplate.json +++ b/src/schema/aws-proton-servicetemplate.json @@ -1,289 +1,290 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Name" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/EncryptionKey", - "/properties/Name", - "/properties/PipelineProvisioning" - ], - "definitions": { - "Provisioning": { - "enum": [ - "CUSTOMER_MANAGED" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "

A description of a resource tag.

", - "properties": { - "Key": { - "description": "

The key of the resource tag.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "

The value of the resource tag.

", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::Proton::ServiceTemplate Resource Type", - "handlers": { - "create": { - "permissions": [ - "proton:CreateServiceTemplate", - "proton:TagResource", - "proton:GetServiceTemplate", - "kms:CancelKeyDeletion", - "kms:CreateAlias", - "kms:CreateCustomKeyStore", - "kms:CreateGrant", - "kms:CreateKey", - "kms:DeleteAlias", - "kms:DeleteCustomKeyStore", - "kms:DeleteImportedKeyMaterial", - "kms:DescribeCustomKeyStores", - "kms:DescribeKey", - "kms:DisableKey", - "kms:DisableKeyRotation", - "kms:EnableKey", - "kms:EnableKeyRotation", - "kms:GenerateDataKey", - "kms:GetKeyPolicy", - "kms:GetKeyRotationStatus", - "kms:GetParametersForImport", - "kms:GetPublicKey", - "kms:ListAliases", - "kms:ListGrants", - "kms:ListKeyPolicies", - "kms:ListKeyRotations", - "kms:ListKeys", - "kms:ListResourceTags", - "kms:ListRetirableGrants", - "kms:PutKeyPolicy", - "kms:RevokeGrant", - "kms:ScheduleKeyDeletion", - "kms:TagResource", - "kms:UntagResource", - "kms:UpdateAlias", - "kms:UpdateCustomKeyStore", - "kms:UpdateKeyDescription", - "kms:UpdatePrimaryRegion" - ] - }, - "delete": { - "permissions": [ - "proton:DeleteServiceTemplate", - "proton:UntagResource", - "proton:GetServiceTemplate", - "kms:CancelKeyDeletion", - "kms:CreateAlias", - "kms:CreateCustomKeyStore", - "kms:CreateGrant", - "kms:CreateKey", - "kms:DeleteAlias", - "kms:DeleteCustomKeyStore", - "kms:DeleteImportedKeyMaterial", - "kms:DescribeCustomKeyStores", - "kms:DescribeKey", - "kms:DisableKey", - "kms:DisableKeyRotation", - "kms:EnableKey", - "kms:EnableKeyRotation", - "kms:GenerateDataKey", - "kms:GetKeyPolicy", - "kms:GetKeyRotationStatus", - "kms:GetParametersForImport", - "kms:GetPublicKey", - "kms:ListAliases", - "kms:ListGrants", - "kms:ListKeyPolicies", - "kms:ListKeyRotations", - "kms:ListKeys", - "kms:ListResourceTags", - "kms:ListRetirableGrants", - "kms:PutKeyPolicy", - "kms:RevokeGrant", - "kms:ScheduleKeyDeletion", - "kms:TagResource", - "kms:UntagResource", - "kms:UpdateAlias", - "kms:UpdateCustomKeyStore", - "kms:UpdateKeyDescription", - "kms:UpdatePrimaryRegion" - ] - }, - "list": { - "permissions": [ - "proton:ListServiceTemplates" - ] - }, - "read": { - "permissions": [ - "proton:GetServiceTemplate", - "proton:ListTagsForResource", - "kms:CancelKeyDeletion", - "kms:CreateAlias", - "kms:CreateCustomKeyStore", - "kms:CreateGrant", - "kms:CreateKey", - "kms:DeleteAlias", - "kms:DeleteCustomKeyStore", - "kms:DeleteImportedKeyMaterial", - "kms:DescribeCustomKeyStores", - "kms:DescribeKey", - "kms:DisableKey", - "kms:DisableKeyRotation", - "kms:EnableKey", - "kms:EnableKeyRotation", - "kms:GenerateDataKey", - "kms:GetKeyPolicy", - "kms:GetKeyRotationStatus", - "kms:GetParametersForImport", - "kms:GetPublicKey", - "kms:ListAliases", - "kms:ListGrants", - "kms:ListKeyPolicies", - "kms:ListKeyRotations", - "kms:ListKeys", - "kms:ListResourceTags", - "kms:ListRetirableGrants", - "kms:PutKeyPolicy", - "kms:RevokeGrant", - "kms:ScheduleKeyDeletion", - "kms:TagResource", - "kms:UntagResource", - "kms:UpdateAlias", - "kms:UpdateCustomKeyStore", - "kms:UpdateKeyDescription", - "kms:UpdatePrimaryRegion" - ] - }, - "update": { - "permissions": [ - "proton:GetServiceTemplate", - "proton:CreateServiceTemplate", - "proton:ListTagsForResource", - "proton:TagResource", - "proton:UntagResource", - "proton:UpdateServiceTemplate", - "kms:CancelKeyDeletion", - "kms:CreateAlias", - "kms:CreateCustomKeyStore", - "kms:CreateGrant", - "kms:CreateKey", - "kms:DeleteAlias", - "kms:DeleteCustomKeyStore", - "kms:DeleteImportedKeyMaterial", - "kms:DescribeCustomKeyStores", - "kms:DescribeKey", - "kms:DisableKey", - "kms:DisableKeyRotation", - "kms:EnableKey", - "kms:EnableKeyRotation", - "kms:GenerateDataKey", - "kms:GetKeyPolicy", - "kms:GetKeyRotationStatus", - "kms:GetParametersForImport", - "kms:GetPublicKey", - "kms:ListAliases", - "kms:ListGrants", - "kms:ListKeyPolicies", - "kms:ListKeyRotations", - "kms:ListKeys", - "kms:ListResourceTags", - "kms:ListRetirableGrants", - "kms:PutKeyPolicy", - "kms:RevokeGrant", - "kms:ScheduleKeyDeletion", - "kms:TagResource", - "kms:UntagResource", - "kms:UpdateAlias", - "kms:UpdateCustomKeyStore", - "kms:UpdateKeyDescription", - "kms:UpdatePrimaryRegion" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) of the service template.

", - "maxLength": 200, - "minLength": 1, - "pattern": "^arn:(aws|aws-cn|aws-us-gov):[a-zA-Z0-9-]+:[a-zA-Z0-9-]*:\\d{12}:([\\w+=,.@-]+[/:])*[\\w+=,.@-]+$", - "type": "string" - }, - "Description": { - "description": "

A description of the service template.

", - "maxLength": 500, - "minLength": 0, - "type": "string" - }, - "DisplayName": { - "description": "

The name of the service template as displayed in the developer interface.

", - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "EncryptionKey": { - "description": "

A customer provided encryption key that's used to encrypt data.

", - "maxLength": 200, - "minLength": 1, - "pattern": "^arn:(aws|aws-cn|aws-us-gov):[a-zA-Z0-9-]+:[a-zA-Z0-9-]*:\\d{12}:([\\w+=,.@-]+[/:])*[\\w+=,.@-]+$", - "type": "string" - }, - "Name": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[0-9A-Za-z]+[0-9A-Za-z_\\-]*$", - "type": "string" - }, - "PipelineProvisioning": { - "$ref": "#/definitions/Provisioning" - }, - "Tags": { - "description": "

An optional list of metadata items that you can associate with the Proton service template. A tag is a key-value pair.

\n

For more information, see Proton resources and tagging in the\n Proton User Guide.

", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-proton", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "proton:ListTagsForResource", - "proton:UntagResource", - "proton:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Proton::ServiceTemplate" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EncryptionKey", + "/properties/Name", + "/properties/PipelineProvisioning" + ], + "definitions": { + "Provisioning": { + "enum": [ + "CUSTOMER_MANAGED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "

A description of a resource tag.

", + "properties": { + "Key": { + "description": "

The key of the resource tag.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "

The value of the resource tag.

", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Proton::ServiceTemplate Resource Type", + "handlers": { + "create": { + "permissions": [ + "proton:CreateServiceTemplate", + "proton:TagResource", + "proton:GetServiceTemplate", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" + ] + }, + "delete": { + "permissions": [ + "proton:DeleteServiceTemplate", + "proton:UntagResource", + "proton:GetServiceTemplate", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" + ] + }, + "list": { + "permissions": [ + "proton:ListServiceTemplates", + "proton:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "proton:GetServiceTemplate", + "proton:ListTagsForResource", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" + ] + }, + "update": { + "permissions": [ + "proton:GetServiceTemplate", + "proton:CreateServiceTemplate", + "proton:ListTagsForResource", + "proton:TagResource", + "proton:UntagResource", + "proton:UpdateServiceTemplate", + "kms:CancelKeyDeletion", + "kms:CreateAlias", + "kms:CreateCustomKeyStore", + "kms:CreateGrant", + "kms:CreateKey", + "kms:DeleteAlias", + "kms:DeleteCustomKeyStore", + "kms:DeleteImportedKeyMaterial", + "kms:DescribeCustomKeyStores", + "kms:DescribeKey", + "kms:DisableKey", + "kms:DisableKeyRotation", + "kms:EnableKey", + "kms:EnableKeyRotation", + "kms:GenerateDataKey", + "kms:GetKeyPolicy", + "kms:GetKeyRotationStatus", + "kms:GetParametersForImport", + "kms:GetPublicKey", + "kms:ListAliases", + "kms:ListGrants", + "kms:ListKeyPolicies", + "kms:ListKeyRotations", + "kms:ListKeys", + "kms:ListResourceTags", + "kms:ListRetirableGrants", + "kms:PutKeyPolicy", + "kms:RevokeGrant", + "kms:ScheduleKeyDeletion", + "kms:TagResource", + "kms:UntagResource", + "kms:UpdateAlias", + "kms:UpdateCustomKeyStore", + "kms:UpdateKeyDescription", + "kms:UpdatePrimaryRegion" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the service template.

", + "maxLength": 200, + "minLength": 1, + "pattern": "^arn:(aws|aws-cn|aws-us-gov):[a-zA-Z0-9-]+:[a-zA-Z0-9-]*:\\d{12}:([\\w+=,.@-]+[/:])*[\\w+=,.@-]+$", + "type": "string" + }, + "Description": { + "description": "

A description of the service template.

", + "maxLength": 500, + "minLength": 0, + "type": "string" + }, + "DisplayName": { + "description": "

The name of the service template as displayed in the developer interface.

", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "EncryptionKey": { + "description": "

A customer provided encryption key that's used to encrypt data.

", + "maxLength": 200, + "minLength": 1, + "pattern": "^arn:(aws|aws-cn|aws-us-gov):[a-zA-Z0-9-]+:[a-zA-Z0-9-]*:\\d{12}:([\\w+=,.@-]+[/:])*[\\w+=,.@-]+$", + "type": "string" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[0-9A-Za-z]+[0-9A-Za-z_\\-]*$", + "type": "string" + }, + "PipelineProvisioning": { + "$ref": "#/definitions/Provisioning" + }, + "Tags": { + "description": "

An optional list of metadata items that you can associate with the Proton service template. A tag is a key-value pair.

\n

For more information, see Proton resources and tagging in the\n Proton User Guide.

", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-proton", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "proton:ListTagsForResource", + "proton:UntagResource", + "proton:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Proton::ServiceTemplate" +} diff --git a/src/schema/aws-qbusiness-application.json b/src/schema/aws-qbusiness-application.json index 27407a2c..3e8920da 100644 --- a/src/schema/aws-qbusiness-application.json +++ b/src/schema/aws-qbusiness-application.json @@ -1,322 +1,351 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClientIdsForOIDC", - "/properties/EncryptionConfiguration", - "/properties/IamIdentityProviderArn", - "/properties/IdentityType" - ], - "definitions": { - "ApplicationStatus": { - "enum": [ - "CREATING", - "ACTIVE", - "DELETING", - "FAILED", - "UPDATING" - ], - "type": "string" - }, - "AttachmentsConfiguration": { - "additionalProperties": false, - "properties": { - "AttachmentsControlMode": { - "$ref": "#/definitions/AttachmentsControlMode" - } - }, - "required": [ - "AttachmentsControlMode" - ], - "type": "object" - }, - "AttachmentsControlMode": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "AutoSubscriptionConfiguration": { - "additionalProperties": false, - "properties": { - "AutoSubscribe": { - "$ref": "#/definitions/AutoSubscriptionStatus" - }, - "DefaultSubscriptionType": { - "$ref": "#/definitions/SubscriptionType" - } - }, - "required": [ - "AutoSubscribe" - ], - "type": "object" - }, - "AutoSubscriptionStatus": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "EncryptionConfiguration": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "IdentityType": { - "enum": [ - "AWS_IAM_IDP_SAML", - "AWS_IAM_IDP_OIDC", - "AWS_IAM_IDC" - ], - "type": "string" - }, - "PersonalizationConfiguration": { - "additionalProperties": false, - "properties": { - "PersonalizationControlMode": { - "$ref": "#/definitions/PersonalizationControlMode" - } - }, - "required": [ - "PersonalizationControlMode" - ], - "type": "object" - }, - "PersonalizationControlMode": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "QAppsConfiguration": { - "additionalProperties": false, - "properties": { - "QAppsControlMode": { - "$ref": "#/definitions/QAppsControlMode" - } - }, - "required": [ - "QAppsControlMode" - ], - "type": "object" - }, - "QAppsControlMode": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "SubscriptionType": { - "enum": [ - "Q_LITE", - "Q_BUSINESS" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::QBusiness::Application Resource Type", - "handlers": { - "create": { - "permissions": [ - "iam:GetSAMLProvider", - "iam:PassRole", - "kms:CreateGrant", - "kms:DescribeKey", - "qbusiness:CreateApplication", - "qbusiness:GetApplication", - "qbusiness:UpdateApplication", - "qbusiness:ListTagsForResource", - "qbusiness:TagResource", - "sso:CreateApplication", - "sso:DeleteApplication", - "sso:DescribeInstance", - "sso:PutApplicationAccessScope", - "sso:PutApplicationAuthenticationMethod", - "sso:PutApplicationGrant" - ] - }, - "delete": { - "permissions": [ - "kms:RetireGrant", - "qbusiness:DeleteApplication", - "qbusiness:GetApplication", - "sso:DeleteApplication" - ] - }, - "list": { - "permissions": [ - "qbusiness:ListApplications" - ] - }, - "read": { - "permissions": [ - "qbusiness:GetApplication", - "qbusiness:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "qbusiness:GetApplication", - "qbusiness:ListTagsForResource", - "qbusiness:TagResource", - "qbusiness:UntagResource", - "qbusiness:UpdateApplication", - "sso:CreateApplication", - "sso:DeleteApplication", - "sso:DescribeInstance", - "sso:PutApplicationAccessScope", - "sso:PutApplicationAuthenticationMethod", - "sso:PutApplicationGrant" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationId" - ], - "properties": { - "ApplicationArn": { - "maxLength": 1284, - "minLength": 0, - "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", - "type": "string" - }, - "ApplicationId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", - "type": "string" - }, - "AttachmentsConfiguration": { - "$ref": "#/definitions/AttachmentsConfiguration" - }, - "AutoSubscriptionConfiguration": { - "$ref": "#/definitions/AutoSubscriptionConfiguration" - }, - "ClientIdsForOIDC": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.:/()*?=-]*$", - "type": "string" - }, - "type": "array" - }, - "CreatedAt": { - "format": "date-time", - "type": "string" - }, - "Description": { - "maxLength": 1000, - "minLength": 0, - "pattern": "^[\\s\\S]*$", - "type": "string" - }, - "DisplayName": { - "maxLength": 1000, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", - "type": "string" - }, - "EncryptionConfiguration": { - "$ref": "#/definitions/EncryptionConfiguration" - }, - "IamIdentityProviderArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws:iam::\\d{12}:(oidc-provider|saml-provider)/[a-zA-Z0-9_\\.\\/@\\-]+$", - "type": "string" - }, - "IdentityCenterApplicationArn": { - "maxLength": 1224, - "minLength": 10, - "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::\\d{12}:application/(sso)?ins-[a-zA-Z0-9-.]{16}/apl-[a-zA-Z0-9]{16}$", - "type": "string" - }, - "IdentityCenterInstanceArn": { - "maxLength": 1224, - "minLength": 10, - "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}$", - "type": "string" - }, - "IdentityType": { - "$ref": "#/definitions/IdentityType" - }, - "PersonalizationConfiguration": { - "$ref": "#/definitions/PersonalizationConfiguration" - }, - "QAppsConfiguration": { - "$ref": "#/definitions/QAppsConfiguration" - }, - "RoleArn": { - "maxLength": 1284, - "minLength": 0, - "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/ApplicationStatus" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "UpdatedAt": { - "format": "date-time", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ApplicationArn", - "/properties/ApplicationId", - "/properties/CreatedAt", - "/properties/IdentityCenterApplicationArn", - "/properties/Status", - "/properties/UpdatedAt" - ], - "required": [ - "DisplayName" - ], - "tagging": { - "taggable": true - }, - "typeName": "AWS::QBusiness::Application", - "writeOnlyProperties": [ - "/properties/IdentityCenterInstanceArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClientIdsForOIDC", + "/properties/EncryptionConfiguration", + "/properties/IamIdentityProviderArn", + "/properties/IdentityType", + "/properties/QuickSightConfiguration" + ], + "definitions": { + "ApplicationStatus": { + "enum": [ + "CREATING", + "ACTIVE", + "DELETING", + "FAILED", + "UPDATING" + ], + "type": "string" + }, + "AttachmentsConfiguration": { + "additionalProperties": false, + "properties": { + "AttachmentsControlMode": { + "$ref": "#/definitions/AttachmentsControlMode" + } + }, + "required": [ + "AttachmentsControlMode" + ], + "type": "object" + }, + "AttachmentsControlMode": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "AutoSubscriptionConfiguration": { + "additionalProperties": false, + "properties": { + "AutoSubscribe": { + "$ref": "#/definitions/AutoSubscriptionStatus" + }, + "DefaultSubscriptionType": { + "$ref": "#/definitions/SubscriptionType" + } + }, + "required": [ + "AutoSubscribe" + ], + "type": "object" + }, + "AutoSubscriptionStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "EncryptionConfiguration": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "IdentityType": { + "enum": [ + "AWS_IAM_IDP_SAML", + "AWS_IAM_IDP_OIDC", + "AWS_IAM_IDC", + "AWS_QUICKSIGHT_IDP" + ], + "type": "string" + }, + "PersonalizationConfiguration": { + "additionalProperties": false, + "properties": { + "PersonalizationControlMode": { + "$ref": "#/definitions/PersonalizationControlMode" + } + }, + "required": [ + "PersonalizationControlMode" + ], + "type": "object" + }, + "PersonalizationControlMode": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "QAppsConfiguration": { + "additionalProperties": false, + "properties": { + "QAppsControlMode": { + "$ref": "#/definitions/QAppsControlMode" + } + }, + "required": [ + "QAppsControlMode" + ], + "type": "object" + }, + "QAppsControlMode": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "QuickSightConfiguration": { + "additionalProperties": false, + "properties": { + "ClientNamespace": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9._-]*$", + "type": "string" + } + }, + "required": [ + "ClientNamespace" + ], + "type": "object" + }, + "SubscriptionType": { + "enum": [ + "Q_LITE", + "Q_BUSINESS" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::QBusiness::Application Resource Type", + "handlers": { + "create": { + "permissions": [ + "iam:GetSAMLProvider", + "iam:PassRole", + "kms:CreateGrant", + "kms:DescribeKey", + "qbusiness:CreateApplication", + "qbusiness:GetApplication", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UpdateApplication", + "quicksight:DescribeAccountSubscription", + "quicksight:ListNamespaces", + "sso:CreateApplication", + "sso:DeleteApplication", + "sso:DescribeInstance", + "sso:PutApplicationAccessScope", + "sso:PutApplicationAuthenticationMethod", + "sso:PutApplicationGrant" + ] + }, + "delete": { + "permissions": [ + "kms:RetireGrant", + "qbusiness:DeleteApplication", + "qbusiness:GetApplication", + "sso:DeleteApplication" + ] + }, + "list": { + "permissions": [ + "qbusiness:ListApplications" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetApplication", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "qbusiness:GetApplication", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdateApplication", + "sso:CreateApplication", + "sso:DeleteApplication", + "sso:DescribeInstance", + "sso:PutApplicationAccessScope", + "sso:PutApplicationAuthenticationMethod", + "sso:PutApplicationGrant" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId" + ], + "properties": { + "ApplicationArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "ApplicationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "AttachmentsConfiguration": { + "$ref": "#/definitions/AttachmentsConfiguration" + }, + "AutoSubscriptionConfiguration": { + "$ref": "#/definitions/AutoSubscriptionConfiguration" + }, + "ClientIdsForOIDC": { + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.:/()*?=-]*$", + "type": "string" + }, + "type": "array" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "Description": { + "maxLength": 1000, + "minLength": 0, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "DisplayName": { + "maxLength": 1000, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", + "type": "string" + }, + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration" + }, + "IamIdentityProviderArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws:iam::\\d{12}:(oidc-provider|saml-provider)/[a-zA-Z0-9_\\.\\/@\\-]+$", + "type": "string" + }, + "IdentityCenterApplicationArn": { + "maxLength": 1224, + "minLength": 10, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::\\d{12}:application/(sso)?ins-[a-zA-Z0-9-.]{16}/apl-[a-zA-Z0-9]{16}$", + "type": "string" + }, + "IdentityCenterInstanceArn": { + "maxLength": 1224, + "minLength": 10, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}$", + "type": "string" + }, + "IdentityType": { + "$ref": "#/definitions/IdentityType" + }, + "PersonalizationConfiguration": { + "$ref": "#/definitions/PersonalizationConfiguration" + }, + "QAppsConfiguration": { + "$ref": "#/definitions/QAppsConfiguration" + }, + "QuickSightConfiguration": { + "$ref": "#/definitions/QuickSightConfiguration" + }, + "RoleArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/ApplicationStatus" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "UpdatedAt": { + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ApplicationArn", + "/properties/ApplicationId", + "/properties/CreatedAt", + "/properties/IdentityCenterApplicationArn", + "/properties/Status", + "/properties/UpdatedAt" + ], + "required": [ + "DisplayName" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "qbusiness:UntagResource", + "qbusiness:TagResource", + "qbusiness:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QBusiness::Application", + "writeOnlyProperties": [ + "/properties/IdentityCenterInstanceArn" + ] +} diff --git a/src/schema/aws-qbusiness-dataaccessor.json b/src/schema/aws-qbusiness-dataaccessor.json new file mode 100644 index 00000000..5758b7fa --- /dev/null +++ b/src/schema/aws-qbusiness-dataaccessor.json @@ -0,0 +1,330 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/Principal" + ], + "definitions": { + "ActionConfiguration": { + "additionalProperties": false, + "properties": { + "Action": { + "pattern": "^qbusiness:[a-zA-Z]+$", + "type": "string" + }, + "FilterConfiguration": { + "$ref": "#/definitions/ActionFilterConfiguration" + } + }, + "required": [ + "Action" + ], + "type": "object" + }, + "ActionFilterConfiguration": { + "additionalProperties": false, + "properties": { + "DocumentAttributeFilter": { + "$ref": "#/definitions/AttributeFilter" + } + }, + "required": [ + "DocumentAttributeFilter" + ], + "type": "object" + }, + "AttributeFilter": { + "additionalProperties": false, + "properties": { + "AndAllFilters": { + "items": { + "$ref": "#/definitions/AttributeFilter" + }, + "type": "array" + }, + "ContainsAll": { + "$ref": "#/definitions/DocumentAttribute" + }, + "ContainsAny": { + "$ref": "#/definitions/DocumentAttribute" + }, + "EqualsTo": { + "$ref": "#/definitions/DocumentAttribute" + }, + "GreaterThan": { + "$ref": "#/definitions/DocumentAttribute" + }, + "GreaterThanOrEquals": { + "$ref": "#/definitions/DocumentAttribute" + }, + "LessThan": { + "$ref": "#/definitions/DocumentAttribute" + }, + "LessThanOrEquals": { + "$ref": "#/definitions/DocumentAttribute" + }, + "NotFilter": { + "$ref": "#/definitions/AttributeFilter" + }, + "OrAllFilters": { + "items": { + "$ref": "#/definitions/AttributeFilter" + }, + "type": "array" + } + }, + "type": "object" + }, + "DocumentAttribute": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_][a-zA-Z0-9_-]*$", + "type": "string" + }, + "Value": { + "$ref": "#/definitions/DocumentAttributeValue" + } + }, + "required": [ + "Name", + "Value" + ], + "type": "object" + }, + "DocumentAttributeValue": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "StringValue": { + "maxLength": 2048, + "type": "string" + } + }, + "required": [ + "StringValue" + ], + "title": "StringValue", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "StringListValue": { + "items": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "StringListValue" + ], + "title": "StringListValue", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "LongValue": { + "type": "number" + } + }, + "required": [ + "LongValue" + ], + "title": "LongValue", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "DateValue": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "DateValue" + ], + "title": "DateValue", + "type": "object" + } + ] + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Unit": { + "additionalProperties": false, + "type": "object" + } + }, + "description": "Definition of AWS::QBusiness::DataAccessor Resource Type", + "handlers": { + "create": { + "permissions": [ + "qbusiness:CreateDataAccessor", + "qbusiness:GetDataAccessor", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "sso:CreateApplication", + "sso:PutApplicationAuthenticationMethod", + "sso:PutApplicationGrant", + "sso:PutApplicationAccessScope" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DeleteDataAccessor", + "qbusiness:GetDataAccessor", + "sso:DeleteApplication" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "qbusiness:ListDataAccessors" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetDataAccessor", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "qbusiness:GetDataAccessor", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdateDataAccessor" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/DataAccessorId" + ], + "properties": { + "ActionConfigurations": { + "items": { + "$ref": "#/definitions/ActionConfiguration" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "ApplicationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "DataAccessorArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "DataAccessorId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "DisplayName": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", + "type": "string" + }, + "IdcApplicationArn": { + "maxLength": 1224, + "minLength": 10, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::\\d{12}:application/(sso)?ins-[a-zA-Z0-9-.]{16}/apl-[a-zA-Z0-9]{16}$", + "type": "string" + }, + "Principal": { + "maxLength": 1284, + "minLength": 1, + "pattern": "^arn:aws:iam::[0-9]{12}:role/[a-zA-Z0-9_/+=,.@-]+$", + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "UpdatedAt": { + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/DataAccessorArn", + "/properties/DataAccessorId", + "/properties/IdcApplicationArn", + "/properties/UpdatedAt" + ], + "required": [ + "ApplicationId", + "ActionConfigurations", + "DisplayName", + "Principal" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "qbusiness:UntagResource", + "qbusiness:TagResource", + "qbusiness:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QBusiness::DataAccessor" +} diff --git a/src/schema/aws-qbusiness-datasource.json b/src/schema/aws-qbusiness-datasource.json index 33df6f38..bc8a2ba0 100644 --- a/src/schema/aws-qbusiness-datasource.json +++ b/src/schema/aws-qbusiness-datasource.json @@ -1,428 +1,512 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId", - "/properties/IndexId" - ], - "definitions": { - "AttributeValueOperator": { - "enum": [ - "DELETE" - ], - "type": "string" - }, - "DataSourceStatus": { - "enum": [ - "PENDING_CREATION", - "CREATING", - "ACTIVE", - "DELETING", - "FAILED", - "UPDATING" - ], - "type": "string" - }, - "DataSourceVpcConfiguration": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "insertionOrder": false, - "items": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[-0-9a-zA-Z]+$", - "type": "string" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "SubnetIds": { - "insertionOrder": false, - "items": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[-0-9a-zA-Z]+$", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "SecurityGroupIds", - "SubnetIds" - ], - "type": "object" - }, - "DocumentAttributeCondition": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_][a-zA-Z0-9_-]*$", - "type": "string" - }, - "Operator": { - "$ref": "#/definitions/DocumentEnrichmentConditionOperator" - }, - "Value": { - "$ref": "#/definitions/DocumentAttributeValue" - } - }, - "required": [ - "Key", - "Operator" - ], - "type": "object" - }, - "DocumentAttributeTarget": { - "additionalProperties": false, - "properties": { - "AttributeValueOperator": { - "$ref": "#/definitions/AttributeValueOperator" - }, - "Key": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_][a-zA-Z0-9_-]*$", - "type": "string" - }, - "Value": { - "$ref": "#/definitions/DocumentAttributeValue" - } - }, - "required": [ - "Key" - ], - "type": "object" - }, - "DocumentAttributeValue": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "StringValue": { - "maxLength": 2048, - "type": "string" - } - }, - "required": [ - "StringValue" - ], - "title": "StringValue", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "StringListValue": { - "insertionOrder": true, - "items": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "StringListValue" - ], - "title": "StringListValue", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "LongValue": { - "type": "number" - } - }, - "required": [ - "LongValue" - ], - "title": "LongValue", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "DateValue": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "DateValue" - ], - "title": "DateValue", - "type": "object" - } - ] - }, - "DocumentContentOperator": { - "enum": [ - "DELETE" - ], - "type": "string" - }, - "DocumentEnrichmentConditionOperator": { - "enum": [ - "GREATER_THAN", - "GREATER_THAN_OR_EQUALS", - "LESS_THAN", - "LESS_THAN_OR_EQUALS", - "EQUALS", - "NOT_EQUALS", - "CONTAINS", - "NOT_CONTAINS", - "EXISTS", - "NOT_EXISTS", - "BEGINS_WITH" - ], - "type": "string" - }, - "DocumentEnrichmentConfiguration": { - "additionalProperties": false, - "properties": { - "InlineConfigurations": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/InlineDocumentEnrichmentConfiguration" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "PostExtractionHookConfiguration": { - "$ref": "#/definitions/HookConfiguration" - }, - "PreExtractionHookConfiguration": { - "$ref": "#/definitions/HookConfiguration" - } - }, - "type": "object" - }, - "HookConfiguration": { - "additionalProperties": false, - "properties": { - "InvocationCondition": { - "$ref": "#/definitions/DocumentAttributeCondition" - }, - "LambdaArn": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:aws[a-zA-Z-]*:lambda:[a-z-]*-[0-9]:[0-9]{12}:function:[a-zA-Z0-9-_]+(/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})?(:[a-zA-Z0-9-_]+)?$", - "type": "string" - }, - "RoleArn": { - "maxLength": 1284, - "minLength": 0, - "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", - "type": "string" - }, - "S3BucketName": { - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", - "type": "string" - } - }, - "type": "object" - }, - "InlineDocumentEnrichmentConfiguration": { - "additionalProperties": false, - "properties": { - "Condition": { - "$ref": "#/definitions/DocumentAttributeCondition" - }, - "DocumentContentOperator": { - "$ref": "#/definitions/DocumentContentOperator" - }, - "Target": { - "$ref": "#/definitions/DocumentAttributeTarget" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::QBusiness::DataSource Resource Type", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "qbusiness:CreateDataSource", - "qbusiness:GetDataSource", - "qbusiness:ListTagsForResource", - "qbusiness:TagResource" - ] - }, - "delete": { - "permissions": [ - "qbusiness:DeleteDataSource", - "qbusiness:GetDataSource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApplicationId": { - "$ref": "resource-schema.json#/properties/ApplicationId" - }, - "IndexId": { - "$ref": "resource-schema.json#/properties/IndexId" - } - }, - "required": [ - "IndexId", - "ApplicationId" - ] - }, - "permissions": [ - "qbusiness:ListDataSources" - ] - }, - "read": { - "permissions": [ - "qbusiness:GetDataSource", - "qbusiness:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "qbusiness:GetDataSource", - "qbusiness:ListTagsForResource", - "qbusiness:TagResource", - "qbusiness:UntagResource", - "qbusiness:UpdateDataSource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationId", - "/properties/DataSourceId", - "/properties/IndexId" - ], - "properties": { - "ApplicationId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", - "type": "string" - }, - "Configuration": {}, - "CreatedAt": { - "format": "date-time", - "type": "string" - }, - "DataSourceArn": { - "maxLength": 1284, - "minLength": 0, - "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", - "type": "string" - }, - "DataSourceId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", - "type": "string" - }, - "Description": { - "maxLength": 1000, - "minLength": 0, - "pattern": "^[\\s\\S]*$", - "type": "string" - }, - "DisplayName": { - "maxLength": 1000, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", - "type": "string" - }, - "DocumentEnrichmentConfiguration": { - "$ref": "#/definitions/DocumentEnrichmentConfiguration" - }, - "IndexId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", - "type": "string" - }, - "RoleArn": { - "maxLength": 1284, - "minLength": 0, - "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/DataSourceStatus" - }, - "SyncSchedule": { - "maxLength": 998, - "pattern": "^[\\s\\S]*$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Type": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "UpdatedAt": { - "format": "date-time", - "type": "string" - }, - "VpcConfiguration": { - "$ref": "#/definitions/DataSourceVpcConfiguration" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/DataSourceArn", - "/properties/DataSourceId", - "/properties/Status", - "/properties/Type", - "/properties/UpdatedAt" - ], - "required": [ - "ApplicationId", - "IndexId", - "Configuration", - "DisplayName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", - "tagging": { - "taggable": true - }, - "typeName": "AWS::QBusiness::DataSource" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/IndexId" + ], + "definitions": { + "AttributeValueOperator": { + "enum": [ + "DELETE" + ], + "type": "string" + }, + "AudioExtractionConfiguration": { + "additionalProperties": false, + "properties": { + "AudioExtractionStatus": { + "$ref": "#/definitions/AudioExtractionStatus" + } + }, + "required": [ + "AudioExtractionStatus" + ], + "type": "object" + }, + "AudioExtractionStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "DataSourceStatus": { + "enum": [ + "PENDING_CREATION", + "CREATING", + "ACTIVE", + "DELETING", + "FAILED", + "UPDATING" + ], + "type": "string" + }, + "DataSourceVpcConfiguration": { + "additionalProperties": false, + "properties": { + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[-0-9a-zA-Z]+$", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[-0-9a-zA-Z]+$", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "SecurityGroupIds", + "SubnetIds" + ], + "type": "object" + }, + "DocumentAttributeCondition": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_][a-zA-Z0-9_-]*$", + "type": "string" + }, + "Operator": { + "$ref": "#/definitions/DocumentEnrichmentConditionOperator" + }, + "Value": { + "$ref": "#/definitions/DocumentAttributeValue" + } + }, + "required": [ + "Key", + "Operator" + ], + "type": "object" + }, + "DocumentAttributeTarget": { + "additionalProperties": false, + "properties": { + "AttributeValueOperator": { + "$ref": "#/definitions/AttributeValueOperator" + }, + "Key": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_][a-zA-Z0-9_-]*$", + "type": "string" + }, + "Value": { + "$ref": "#/definitions/DocumentAttributeValue" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "DocumentAttributeValue": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "StringValue": { + "maxLength": 2048, + "type": "string" + } + }, + "required": [ + "StringValue" + ], + "title": "StringValue", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "StringListValue": { + "insertionOrder": true, + "items": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "StringListValue" + ], + "title": "StringListValue", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "LongValue": { + "type": "number" + } + }, + "required": [ + "LongValue" + ], + "title": "LongValue", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "DateValue": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "DateValue" + ], + "title": "DateValue", + "type": "object" + } + ] + }, + "DocumentContentOperator": { + "enum": [ + "DELETE" + ], + "type": "string" + }, + "DocumentEnrichmentConditionOperator": { + "enum": [ + "GREATER_THAN", + "GREATER_THAN_OR_EQUALS", + "LESS_THAN", + "LESS_THAN_OR_EQUALS", + "EQUALS", + "NOT_EQUALS", + "CONTAINS", + "NOT_CONTAINS", + "EXISTS", + "NOT_EXISTS", + "BEGINS_WITH" + ], + "type": "string" + }, + "DocumentEnrichmentConfiguration": { + "additionalProperties": false, + "properties": { + "InlineConfigurations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InlineDocumentEnrichmentConfiguration" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "PostExtractionHookConfiguration": { + "$ref": "#/definitions/HookConfiguration" + }, + "PreExtractionHookConfiguration": { + "$ref": "#/definitions/HookConfiguration" + } + }, + "type": "object" + }, + "HookConfiguration": { + "additionalProperties": false, + "properties": { + "InvocationCondition": { + "$ref": "#/definitions/DocumentAttributeCondition" + }, + "LambdaArn": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws[a-zA-Z-]*:lambda:[a-z-]*-[0-9]:[0-9]{12}:function:[a-zA-Z0-9-_]+(/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})?(:[a-zA-Z0-9-_]+)?$", + "type": "string" + }, + "RoleArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "S3BucketName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", + "type": "string" + } + }, + "type": "object" + }, + "ImageExtractionConfiguration": { + "additionalProperties": false, + "properties": { + "ImageExtractionStatus": { + "$ref": "#/definitions/ImageExtractionStatus" + } + }, + "required": [ + "ImageExtractionStatus" + ], + "type": "object" + }, + "ImageExtractionStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "InlineDocumentEnrichmentConfiguration": { + "additionalProperties": false, + "properties": { + "Condition": { + "$ref": "#/definitions/DocumentAttributeCondition" + }, + "DocumentContentOperator": { + "$ref": "#/definitions/DocumentContentOperator" + }, + "Target": { + "$ref": "#/definitions/DocumentAttributeTarget" + } + }, + "type": "object" + }, + "MediaExtractionConfiguration": { + "additionalProperties": false, + "properties": { + "AudioExtractionConfiguration": { + "$ref": "#/definitions/AudioExtractionConfiguration" + }, + "ImageExtractionConfiguration": { + "$ref": "#/definitions/ImageExtractionConfiguration" + }, + "VideoExtractionConfiguration": { + "$ref": "#/definitions/VideoExtractionConfiguration" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VideoExtractionConfiguration": { + "additionalProperties": false, + "properties": { + "VideoExtractionStatus": { + "$ref": "#/definitions/VideoExtractionStatus" + } + }, + "required": [ + "VideoExtractionStatus" + ], + "type": "object" + }, + "VideoExtractionStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "description": "Definition of AWS::QBusiness::DataSource Resource Type", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "qbusiness:CreateDataSource", + "qbusiness:GetDataSource", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DeleteDataSource", + "qbusiness:GetDataSource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + }, + "IndexId": { + "$ref": "resource-schema.json#/properties/IndexId" + } + }, + "required": [ + "IndexId", + "ApplicationId" + ] + }, + "permissions": [ + "qbusiness:ListDataSources" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetDataSource", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "qbusiness:GetDataSource", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdateDataSource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/DataSourceId", + "/properties/IndexId" + ], + "properties": { + "ApplicationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "Configuration": {}, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "DataSourceArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "DataSourceId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "Description": { + "maxLength": 1000, + "minLength": 0, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "DisplayName": { + "maxLength": 1000, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", + "type": "string" + }, + "DocumentEnrichmentConfiguration": { + "$ref": "#/definitions/DocumentEnrichmentConfiguration" + }, + "IndexId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "MediaExtractionConfiguration": { + "$ref": "#/definitions/MediaExtractionConfiguration" + }, + "RoleArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/DataSourceStatus" + }, + "SyncSchedule": { + "maxLength": 998, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Type": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "UpdatedAt": { + "format": "date-time", + "type": "string" + }, + "VpcConfiguration": { + "$ref": "#/definitions/DataSourceVpcConfiguration" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/DataSourceArn", + "/properties/DataSourceId", + "/properties/Status", + "/properties/Type", + "/properties/UpdatedAt" + ], + "required": [ + "ApplicationId", + "IndexId", + "Configuration", + "DisplayName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "qbusiness:UntagResource", + "qbusiness:TagResource", + "qbusiness:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QBusiness::DataSource" +} diff --git a/src/schema/aws-qbusiness-index.json b/src/schema/aws-qbusiness-index.json index 346de401..5d4cb290 100644 --- a/src/schema/aws-qbusiness-index.json +++ b/src/schema/aws-qbusiness-index.json @@ -1,252 +1,261 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId", - "/properties/Type" - ], - "definitions": { - "AttributeType": { - "enum": [ - "STRING", - "STRING_LIST", - "NUMBER", - "DATE" - ], - "type": "string" - }, - "DocumentAttributeConfiguration": { - "additionalProperties": false, - "properties": { - "Name": { - "maxLength": 30, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_][a-zA-Z0-9_-]*$", - "type": "string" - }, - "Search": { - "$ref": "#/definitions/Status" - }, - "Type": { - "$ref": "#/definitions/AttributeType" - } - }, - "type": "object" - }, - "IndexCapacityConfiguration": { - "additionalProperties": false, - "properties": { - "Units": { - "minimum": 1, - "type": "number" - } - }, - "type": "object" - }, - "IndexStatistics": { - "additionalProperties": false, - "properties": { - "TextDocumentStatistics": { - "$ref": "#/definitions/TextDocumentStatistics" - } - }, - "type": "object" - }, - "IndexStatus": { - "enum": [ - "CREATING", - "ACTIVE", - "DELETING", - "FAILED", - "UPDATING" - ], - "type": "string" - }, - "IndexType": { - "enum": [ - "ENTERPRISE", - "STARTER" - ], - "type": "string" - }, - "Status": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TextDocumentStatistics": { - "additionalProperties": false, - "properties": { - "IndexedTextBytes": { - "minimum": 0, - "type": "number" - }, - "IndexedTextDocumentCount": { - "minimum": 0, - "type": "number" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::QBusiness::Index Resource Type", - "handlers": { - "create": { - "permissions": [ - "qbusiness:CreateIndex", - "qbusiness:GetIndex", - "qbusiness:ListTagsForResource", - "qbusiness:TagResource", - "qbusiness:UpdateIndex" - ] - }, - "delete": { - "permissions": [ - "qbusiness:DeleteIndex", - "qbusiness:GetIndex" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApplicationId": { - "$ref": "resource-schema.json#/properties/ApplicationId" - } - }, - "required": [ - "ApplicationId" - ] - }, - "permissions": [ - "qbusiness:ListIndices" - ] - }, - "read": { - "permissions": [ - "qbusiness:GetIndex", - "qbusiness:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "qbusiness:GetIndex", - "qbusiness:ListTagsForResource", - "qbusiness:TagResource", - "qbusiness:UntagResource", - "qbusiness:UpdateIndex" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationId", - "/properties/IndexId" - ], - "properties": { - "ApplicationId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", - "type": "string" - }, - "CapacityConfiguration": { - "$ref": "#/definitions/IndexCapacityConfiguration" - }, - "CreatedAt": { - "format": "date-time", - "type": "string" - }, - "Description": { - "maxLength": 1000, - "minLength": 0, - "pattern": "^[\\s\\S]*$", - "type": "string" - }, - "DisplayName": { - "maxLength": 1000, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", - "type": "string" - }, - "DocumentAttributeConfigurations": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DocumentAttributeConfiguration" - }, - "maxItems": 500, - "minItems": 1, - "type": "array" - }, - "IndexArn": { - "maxLength": 1284, - "minLength": 0, - "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", - "type": "string" - }, - "IndexId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", - "type": "string" - }, - "IndexStatistics": { - "$ref": "#/definitions/IndexStatistics" - }, - "Status": { - "$ref": "#/definitions/IndexStatus" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Type": { - "$ref": "#/definitions/IndexType" - }, - "UpdatedAt": { - "format": "date-time", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/IndexArn", - "/properties/IndexId", - "/properties/IndexStatistics", - "/properties/Status", - "/properties/UpdatedAt" - ], - "required": [ - "ApplicationId", - "DisplayName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", - "tagging": { - "taggable": true - }, - "typeName": "AWS::QBusiness::Index" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/Type" + ], + "definitions": { + "AttributeType": { + "enum": [ + "STRING", + "STRING_LIST", + "NUMBER", + "DATE" + ], + "type": "string" + }, + "DocumentAttributeConfiguration": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 30, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_][a-zA-Z0-9_-]*$", + "type": "string" + }, + "Search": { + "$ref": "#/definitions/Status" + }, + "Type": { + "$ref": "#/definitions/AttributeType" + } + }, + "type": "object" + }, + "IndexCapacityConfiguration": { + "additionalProperties": false, + "properties": { + "Units": { + "minimum": 1, + "type": "number" + } + }, + "type": "object" + }, + "IndexStatistics": { + "additionalProperties": false, + "properties": { + "TextDocumentStatistics": { + "$ref": "#/definitions/TextDocumentStatistics" + } + }, + "type": "object" + }, + "IndexStatus": { + "enum": [ + "CREATING", + "ACTIVE", + "DELETING", + "FAILED", + "UPDATING" + ], + "type": "string" + }, + "IndexType": { + "enum": [ + "ENTERPRISE", + "STARTER" + ], + "type": "string" + }, + "Status": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TextDocumentStatistics": { + "additionalProperties": false, + "properties": { + "IndexedTextBytes": { + "minimum": 0, + "type": "number" + }, + "IndexedTextDocumentCount": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::QBusiness::Index Resource Type", + "handlers": { + "create": { + "permissions": [ + "qbusiness:CreateIndex", + "qbusiness:GetIndex", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UpdateIndex" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DeleteIndex", + "qbusiness:GetIndex" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "qbusiness:ListIndices" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetIndex", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "qbusiness:GetIndex", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdateIndex" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/IndexId" + ], + "properties": { + "ApplicationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "CapacityConfiguration": { + "$ref": "#/definitions/IndexCapacityConfiguration" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "Description": { + "maxLength": 1000, + "minLength": 0, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "DisplayName": { + "maxLength": 1000, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", + "type": "string" + }, + "DocumentAttributeConfigurations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DocumentAttributeConfiguration" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "IndexArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "IndexId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "IndexStatistics": { + "$ref": "#/definitions/IndexStatistics" + }, + "Status": { + "$ref": "#/definitions/IndexStatus" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Type": { + "$ref": "#/definitions/IndexType" + }, + "UpdatedAt": { + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/IndexArn", + "/properties/IndexId", + "/properties/IndexStatistics", + "/properties/Status", + "/properties/UpdatedAt" + ], + "required": [ + "ApplicationId", + "DisplayName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "qbusiness:UntagResource", + "qbusiness:TagResource", + "qbusiness:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QBusiness::Index" +} diff --git a/src/schema/aws-qbusiness-permission.json b/src/schema/aws-qbusiness-permission.json new file mode 100644 index 00000000..ac60cbda --- /dev/null +++ b/src/schema/aws-qbusiness-permission.json @@ -0,0 +1,91 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/StatementId", + "/properties/Actions", + "/properties/Principal" + ], + "description": "Definition of AWS::QBusiness::Permission Resource Type", + "handlers": { + "create": { + "permissions": [ + "qbusiness:AssociatePermission", + "qbusiness:PutResourcePolicy" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DisassociatePermission", + "qbusiness:PutResourcePolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "qbusiness:GetPolicy" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/StatementId" + ], + "properties": { + "Actions": { + "items": { + "pattern": "^qbusiness:[a-zA-Z]+$", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "ApplicationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "Principal": { + "maxLength": 1284, + "minLength": 1, + "pattern": "^arn:aws:iam::[0-9]{12}:role/[a-zA-Z0-9_/+=,.@-]+$", + "type": "string" + }, + "StatementId": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + } + }, + "required": [ + "ApplicationId", + "StatementId", + "Actions", + "Principal" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::QBusiness::Permission" +} diff --git a/src/schema/aws-qbusiness-plugin.json b/src/schema/aws-qbusiness-plugin.json index 2cc056c7..224581b0 100644 --- a/src/schema/aws-qbusiness-plugin.json +++ b/src/schema/aws-qbusiness-plugin.json @@ -1,364 +1,394 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId", - "/properties/Type" - ], - "definitions": { - "APISchema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Payload": { - "type": "string" - } - }, - "required": [ - "Payload" - ], - "title": "Payload", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "S3": { - "$ref": "#/definitions/S3" - } - }, - "required": [ - "S3" - ], - "title": "S3", - "type": "object" - } - ] - }, - "APISchemaType": { - "enum": [ - "OPEN_API_V3" - ], - "type": "string" - }, - "BasicAuthConfiguration": { - "additionalProperties": false, - "properties": { - "RoleArn": { - "maxLength": 1284, - "minLength": 0, - "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", - "type": "string" - }, - "SecretArn": { - "maxLength": 1284, - "minLength": 0, - "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", - "type": "string" - } - }, - "required": [ - "RoleArn", - "SecretArn" - ], - "type": "object" - }, - "CustomPluginConfiguration": { - "additionalProperties": false, - "properties": { - "ApiSchema": { - "$ref": "#/definitions/APISchema" - }, - "ApiSchemaType": { - "$ref": "#/definitions/APISchemaType" - }, - "Description": { - "maxLength": 200, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ApiSchema", - "ApiSchemaType", - "Description" - ], - "type": "object" - }, - "NoAuthConfiguration": { - "additionalProperties": false, - "type": "object" - }, - "OAuth2ClientCredentialConfiguration": { - "additionalProperties": false, - "properties": { - "RoleArn": { - "maxLength": 1284, - "minLength": 0, - "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", - "type": "string" - }, - "SecretArn": { - "maxLength": 1284, - "minLength": 0, - "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", - "type": "string" - } - }, - "required": [ - "RoleArn", - "SecretArn" - ], - "type": "object" - }, - "PluginAuthConfiguration": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "BasicAuthConfiguration": { - "$ref": "#/definitions/BasicAuthConfiguration" - } - }, - "required": [ - "BasicAuthConfiguration" - ], - "title": "BasicAuthConfiguration", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "OAuth2ClientCredentialConfiguration": { - "$ref": "#/definitions/OAuth2ClientCredentialConfiguration" - } - }, - "required": [ - "OAuth2ClientCredentialConfiguration" - ], - "title": "OAuth2ClientCredentialConfiguration", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "NoAuthConfiguration": { - "$ref": "#/definitions/NoAuthConfiguration" - } - }, - "required": [ - "NoAuthConfiguration" - ], - "title": "NoAuthConfiguration", - "type": "object" - } - ] - }, - "PluginBuildStatus": { - "enum": [ - "READY", - "CREATE_IN_PROGRESS", - "CREATE_FAILED", - "UPDATE_IN_PROGRESS", - "UPDATE_FAILED", - "DELETE_IN_PROGRESS", - "DELETE_FAILED" - ], - "type": "string" - }, - "PluginState": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "PluginType": { - "enum": [ - "SERVICE_NOW", - "SALESFORCE", - "JIRA", - "ZENDESK", - "CUSTOM" - ], - "type": "string" - }, - "S3": { - "additionalProperties": false, - "properties": { - "Bucket": { - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", - "type": "string" - }, - "Key": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Bucket", - "Key" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::QBusiness::Plugin Resource Type", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "qbusiness:CreatePlugin", - "qbusiness:GetPlugin", - "qbusiness:ListTagsForResource", - "qbusiness:TagResource", - "qbusiness:UpdatePlugin" - ] - }, - "delete": { - "permissions": [ - "qbusiness:DeletePlugin", - "qbusiness:GetPlugin" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApplicationId": { - "$ref": "resource-schema.json#/properties/ApplicationId" - } - }, - "required": [ - "ApplicationId" - ] - }, - "permissions": [ - "qbusiness:ListPlugins" - ] - }, - "read": { - "permissions": [ - "qbusiness:GetPlugin", - "qbusiness:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "qbusiness:GetPlugin", - "qbusiness:ListTagsForResource", - "qbusiness:TagResource", - "qbusiness:UntagResource", - "qbusiness:UpdatePlugin" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationId", - "/properties/PluginId" - ], - "properties": { - "ApplicationId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", - "type": "string" - }, - "AuthConfiguration": { - "$ref": "#/definitions/PluginAuthConfiguration" - }, - "BuildStatus": { - "$ref": "#/definitions/PluginBuildStatus" - }, - "CreatedAt": { - "format": "date-time", - "type": "string" - }, - "CustomPluginConfiguration": { - "$ref": "#/definitions/CustomPluginConfiguration" - }, - "DisplayName": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", - "type": "string" - }, - "PluginArn": { - "maxLength": 1284, - "minLength": 0, - "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", - "type": "string" - }, - "PluginId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", - "type": "string" - }, - "ServerUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^(https?|ftp|file)://([^\\s]*)$", - "type": "string" - }, - "State": { - "$ref": "#/definitions/PluginState" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Type": { - "$ref": "#/definitions/PluginType" - }, - "UpdatedAt": { - "format": "date-time", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/BuildStatus", - "/properties/CreatedAt", - "/properties/PluginArn", - "/properties/PluginId", - "/properties/UpdatedAt" - ], - "required": [ - "ApplicationId", - "AuthConfiguration", - "DisplayName", - "Type" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", - "tagging": { - "taggable": true - }, - "typeName": "AWS::QBusiness::Plugin" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/Type" + ], + "definitions": { + "APISchema": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Payload": { + "type": "string" + } + }, + "required": [ + "Payload" + ], + "title": "Payload", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "S3": { + "$ref": "#/definitions/S3" + } + }, + "required": [ + "S3" + ], + "title": "S3", + "type": "object" + } + ] + }, + "APISchemaType": { + "enum": [ + "OPEN_API_V3" + ], + "type": "string" + }, + "BasicAuthConfiguration": { + "additionalProperties": false, + "properties": { + "RoleArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "SecretArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + } + }, + "required": [ + "RoleArn", + "SecretArn" + ], + "type": "object" + }, + "CustomPluginConfiguration": { + "additionalProperties": false, + "properties": { + "ApiSchema": { + "$ref": "#/definitions/APISchema" + }, + "ApiSchemaType": { + "$ref": "#/definitions/APISchemaType" + }, + "Description": { + "maxLength": 200, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ApiSchema", + "ApiSchemaType", + "Description" + ], + "type": "object" + }, + "NoAuthConfiguration": { + "additionalProperties": false, + "type": "object" + }, + "OAuth2ClientCredentialConfiguration": { + "additionalProperties": false, + "properties": { + "AuthorizationUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^(https?|ftp|file)://([^\\s]*)$", + "type": "string" + }, + "RoleArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "SecretArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "TokenUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^(https?|ftp|file)://([^\\s]*)$", + "type": "string" + } + }, + "required": [ + "RoleArn", + "SecretArn" + ], + "type": "object" + }, + "PluginAuthConfiguration": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "BasicAuthConfiguration": { + "$ref": "#/definitions/BasicAuthConfiguration" + } + }, + "required": [ + "BasicAuthConfiguration" + ], + "title": "BasicAuthConfiguration", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "OAuth2ClientCredentialConfiguration": { + "$ref": "#/definitions/OAuth2ClientCredentialConfiguration" + } + }, + "required": [ + "OAuth2ClientCredentialConfiguration" + ], + "title": "OAuth2ClientCredentialConfiguration", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "NoAuthConfiguration": { + "$ref": "#/definitions/NoAuthConfiguration" + } + }, + "required": [ + "NoAuthConfiguration" + ], + "title": "NoAuthConfiguration", + "type": "object" + } + ] + }, + "PluginBuildStatus": { + "enum": [ + "READY", + "CREATE_IN_PROGRESS", + "CREATE_FAILED", + "UPDATE_IN_PROGRESS", + "UPDATE_FAILED", + "DELETE_IN_PROGRESS", + "DELETE_FAILED" + ], + "type": "string" + }, + "PluginState": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "PluginType": { + "enum": [ + "SERVICE_NOW", + "SALESFORCE", + "JIRA", + "ZENDESK", + "CUSTOM", + "QUICKSIGHT", + "SERVICENOW_NOW_PLATFORM", + "JIRA_CLOUD", + "SALESFORCE_CRM", + "ZENDESK_SUITE", + "ATLASSIAN_CONFLUENCE", + "GOOGLE_CALENDAR", + "MICROSOFT_TEAMS", + "MICROSOFT_EXCHANGE", + "PAGERDUTY_ADVANCE", + "SMARTSHEET", + "ASANA" + ], + "type": "string" + }, + "S3": { + "additionalProperties": false, + "properties": { + "Bucket": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", + "type": "string" + }, + "Key": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Bucket", + "Key" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::QBusiness::Plugin Resource Type", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "qbusiness:CreatePlugin", + "qbusiness:GetPlugin", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DeletePlugin", + "qbusiness:GetPlugin" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "qbusiness:ListPlugins" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetPlugin", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "qbusiness:GetPlugin", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdatePlugin" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/PluginId" + ], + "properties": { + "ApplicationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "AuthConfiguration": { + "$ref": "#/definitions/PluginAuthConfiguration" + }, + "BuildStatus": { + "$ref": "#/definitions/PluginBuildStatus" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "CustomPluginConfiguration": { + "$ref": "#/definitions/CustomPluginConfiguration" + }, + "DisplayName": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", + "type": "string" + }, + "PluginArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "PluginId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + }, + "ServerUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^(https?|ftp|file)://([^\\s]*)$", + "type": "string" + }, + "State": { + "$ref": "#/definitions/PluginState" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Type": { + "$ref": "#/definitions/PluginType" + }, + "UpdatedAt": { + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/BuildStatus", + "/properties/CreatedAt", + "/properties/PluginArn", + "/properties/PluginId", + "/properties/UpdatedAt" + ], + "required": [ + "AuthConfiguration", + "DisplayName", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "qbusiness:UntagResource", + "qbusiness:TagResource", + "qbusiness:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QBusiness::Plugin" +} diff --git a/src/schema/aws-qbusiness-retriever.json b/src/schema/aws-qbusiness-retriever.json index be293bfa..a45d2a5e 100644 --- a/src/schema/aws-qbusiness-retriever.json +++ b/src/schema/aws-qbusiness-retriever.json @@ -1,233 +1,242 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId", - "/properties/Type" - ], - "definitions": { - "KendraIndexConfiguration": { - "additionalProperties": false, - "properties": { - "IndexId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", - "type": "string" - } - }, - "required": [ - "IndexId" - ], - "type": "object" - }, - "NativeIndexConfiguration": { - "additionalProperties": false, - "properties": { - "IndexId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", - "type": "string" - } - }, - "required": [ - "IndexId" - ], - "type": "object" - }, - "RetrieverConfiguration": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "NativeIndexConfiguration": { - "$ref": "#/definitions/NativeIndexConfiguration" - } - }, - "required": [ - "NativeIndexConfiguration" - ], - "title": "NativeIndexConfiguration", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "KendraIndexConfiguration": { - "$ref": "#/definitions/KendraIndexConfiguration" - } - }, - "required": [ - "KendraIndexConfiguration" - ], - "title": "KendraIndexConfiguration", - "type": "object" - } - ] - }, - "RetrieverStatus": { - "enum": [ - "CREATING", - "ACTIVE", - "FAILED" - ], - "type": "string" - }, - "RetrieverType": { - "enum": [ - "NATIVE_INDEX", - "KENDRA_INDEX" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::QBusiness::Retriever Resource Type", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "qbusiness:CreateRetriever", - "qbusiness:GetRetriever", - "qbusiness:ListTagsForResource", - "qbusiness:TagResource" - ] - }, - "delete": { - "permissions": [ - "qbusiness:DeleteRetriever", - "qbusiness:GetRetriever" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApplicationId": { - "$ref": "resource-schema.json#/properties/ApplicationId" - } - }, - "required": [ - "ApplicationId" - ] - }, - "permissions": [ - "qbusiness:ListRetrievers" - ] - }, - "read": { - "permissions": [ - "qbusiness:GetRetriever", - "qbusiness:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "qbusiness:GetRetriever", - "qbusiness:ListTagsForResource", - "qbusiness:TagResource", - "qbusiness:UntagResource", - "qbusiness:UpdateRetriever" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationId", - "/properties/RetrieverId" - ], - "properties": { - "ApplicationId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", - "type": "string" - }, - "Configuration": { - "$ref": "#/definitions/RetrieverConfiguration" - }, - "CreatedAt": { - "format": "date-time", - "type": "string" - }, - "DisplayName": { - "maxLength": 1000, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", - "type": "string" - }, - "RetrieverArn": { - "maxLength": 1284, - "minLength": 0, - "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", - "type": "string" - }, - "RetrieverId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", - "type": "string" - }, - "RoleArn": { - "maxLength": 1284, - "minLength": 0, - "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/RetrieverStatus" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Type": { - "$ref": "#/definitions/RetrieverType" - }, - "UpdatedAt": { - "format": "date-time", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/RetrieverArn", - "/properties/RetrieverId", - "/properties/Status", - "/properties/UpdatedAt" - ], - "required": [ - "ApplicationId", - "Configuration", - "DisplayName", - "Type" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", - "tagging": { - "taggable": true - }, - "typeName": "AWS::QBusiness::Retriever" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/Type" + ], + "definitions": { + "KendraIndexConfiguration": { + "additionalProperties": false, + "properties": { + "IndexId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + } + }, + "required": [ + "IndexId" + ], + "type": "object" + }, + "NativeIndexConfiguration": { + "additionalProperties": false, + "properties": { + "IndexId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + } + }, + "required": [ + "IndexId" + ], + "type": "object" + }, + "RetrieverConfiguration": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "NativeIndexConfiguration": { + "$ref": "#/definitions/NativeIndexConfiguration" + } + }, + "required": [ + "NativeIndexConfiguration" + ], + "title": "NativeIndexConfiguration", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "KendraIndexConfiguration": { + "$ref": "#/definitions/KendraIndexConfiguration" + } + }, + "required": [ + "KendraIndexConfiguration" + ], + "title": "KendraIndexConfiguration", + "type": "object" + } + ] + }, + "RetrieverStatus": { + "enum": [ + "CREATING", + "ACTIVE", + "FAILED" + ], + "type": "string" + }, + "RetrieverType": { + "enum": [ + "NATIVE_INDEX", + "KENDRA_INDEX" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::QBusiness::Retriever Resource Type", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "qbusiness:CreateRetriever", + "qbusiness:GetRetriever", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DeleteRetriever", + "qbusiness:GetRetriever" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "qbusiness:ListRetrievers" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetRetriever", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "qbusiness:GetRetriever", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdateRetriever" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/RetrieverId" + ], + "properties": { + "ApplicationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "Configuration": { + "$ref": "#/definitions/RetrieverConfiguration" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "DisplayName": { + "maxLength": 1000, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", + "type": "string" + }, + "RetrieverArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "RetrieverId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "RoleArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/RetrieverStatus" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Type": { + "$ref": "#/definitions/RetrieverType" + }, + "UpdatedAt": { + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/RetrieverArn", + "/properties/RetrieverId", + "/properties/Status", + "/properties/UpdatedAt" + ], + "required": [ + "ApplicationId", + "Configuration", + "DisplayName", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "qbusiness:UntagResource", + "qbusiness:TagResource", + "qbusiness:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QBusiness::Retriever" +} diff --git a/src/schema/aws-qbusiness-webexperience.json b/src/schema/aws-qbusiness-webexperience.json index b97d60aa..af1aedb7 100644 --- a/src/schema/aws-qbusiness-webexperience.json +++ b/src/schema/aws-qbusiness-webexperience.json @@ -1,275 +1,346 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationId" - ], - "definitions": { - "IdentityProviderConfiguration": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "SamlConfiguration": { - "$ref": "#/definitions/SamlProviderConfiguration" - } - }, - "required": [ - "SamlConfiguration" - ], - "title": "SamlConfiguration", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "OpenIDConnectConfiguration": { - "$ref": "#/definitions/OpenIDConnectProviderConfiguration" - } - }, - "required": [ - "OpenIDConnectConfiguration" - ], - "title": "OpenIDConnectConfiguration", - "type": "object" - } - ] - }, - "OpenIDConnectProviderConfiguration": { - "additionalProperties": false, - "properties": { - "SecretsArn": { - "maxLength": 1284, - "minLength": 0, - "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", - "type": "string" - }, - "SecretsRole": { - "maxLength": 1284, - "minLength": 0, - "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", - "type": "string" - } - }, - "required": [ - "SecretsArn", - "SecretsRole" - ], - "type": "object" - }, - "Origin": { - "maxLength": 64, - "minLength": 1, - "pattern": "^(http:\\/\\/|https:\\/\\/)[a-zA-Z0-9-_.]+(?::[0-9]{1,5})?$", - "type": "string" - }, - "SamlProviderConfiguration": { - "additionalProperties": false, - "properties": { - "AuthenticationUrl": { - "maxLength": 1284, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - } - }, - "required": [ - "AuthenticationUrl" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "WebExperienceSamplePromptsControlMode": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "WebExperienceStatus": { - "enum": [ - "CREATING", - "ACTIVE", - "DELETING", - "FAILED", - "PENDING_AUTH_CONFIG" - ], - "type": "string" - } - }, - "description": "Definition of AWS::QBusiness::WebExperience Resource Type", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "qbusiness:CreateWebExperience", - "qbusiness:GetWebExperience", - "qbusiness:ListTagsForResource", - "qbusiness:TagResource", - "sso:PutApplicationGrant", - "sso:UpdateApplication" - ] - }, - "delete": { - "permissions": [ - "qbusiness:DeleteWebExperience", - "qbusiness:GetWebExperience" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApplicationId": { - "$ref": "resource-schema.json#/properties/ApplicationId" - } - }, - "required": [ - "ApplicationId" - ] - }, - "permissions": [ - "qbusiness:ListWebExperiences" - ] - }, - "read": { - "permissions": [ - "qbusiness:GetWebExperience", - "qbusiness:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "qbusiness:GetWebExperience", - "qbusiness:ListTagsForResource", - "qbusiness:TagResource", - "qbusiness:UntagResource", - "qbusiness:UpdateWebExperience", - "sso:PutApplicationGrant", - "sso:UpdateApplication" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationId", - "/properties/WebExperienceId" - ], - "properties": { - "ApplicationId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", - "type": "string" - }, - "CreatedAt": { - "format": "date-time", - "type": "string" - }, - "DefaultEndpoint": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^(https?|ftp|file)://([^\\s]*)$", - "type": "string" - }, - "IdentityProviderConfiguration": { - "$ref": "#/definitions/IdentityProviderConfiguration" - }, - "Origins": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Origin" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "RoleArn": { - "maxLength": 1284, - "minLength": 0, - "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", - "type": "string" - }, - "SamplePromptsControlMode": { - "$ref": "#/definitions/WebExperienceSamplePromptsControlMode" - }, - "Status": { - "$ref": "#/definitions/WebExperienceStatus" - }, - "Subtitle": { - "maxLength": 500, - "minLength": 0, - "pattern": "^[\\s\\S]*$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Title": { - "maxLength": 500, - "minLength": 0, - "pattern": "^[\\s\\S]*$", - "type": "string" - }, - "UpdatedAt": { - "format": "date-time", - "type": "string" - }, - "WebExperienceArn": { - "maxLength": 1284, - "minLength": 0, - "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", - "type": "string" - }, - "WebExperienceId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]*$", - "type": "string" - }, - "WelcomeMessage": { - "maxLength": 300, - "minLength": 0, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/DefaultEndpoint", - "/properties/Status", - "/properties/UpdatedAt", - "/properties/WebExperienceArn", - "/properties/WebExperienceId" - ], - "required": [ - "ApplicationId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", - "tagging": { - "taggable": true - }, - "typeName": "AWS::QBusiness::WebExperience" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "definitions": { + "BrowserExtension": { + "enum": [ + "FIREFOX", + "CHROME" + ], + "type": "string" + }, + "BrowserExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "EnabledBrowserExtensions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/BrowserExtension" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "EnabledBrowserExtensions" + ], + "type": "object" + }, + "CustomizationConfiguration": { + "additionalProperties": false, + "properties": { + "CustomCSSUrl": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^(https?://[a-zA-Z0-9-_.+%/]+\\.css)?$", + "type": "string" + }, + "FaviconUrl": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^(https?://[a-zA-Z0-9-_.+%/]+\\.(svg|ico))?$", + "type": "string" + }, + "FontUrl": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^(https?://[a-zA-Z0-9-_.+%/]+\\.(ttf|woff|woff2|otf))?$", + "type": "string" + }, + "LogoUrl": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^(https?://[a-zA-Z0-9-_.+%/]+\\.(svg|png))?$", + "type": "string" + } + }, + "type": "object" + }, + "IdentityProviderConfiguration": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "SamlConfiguration": { + "$ref": "#/definitions/SamlProviderConfiguration" + } + }, + "required": [ + "SamlConfiguration" + ], + "title": "SamlConfiguration", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "OpenIDConnectConfiguration": { + "$ref": "#/definitions/OpenIDConnectProviderConfiguration" + } + }, + "required": [ + "OpenIDConnectConfiguration" + ], + "title": "OpenIDConnectConfiguration", + "type": "object" + } + ] + }, + "OpenIDConnectProviderConfiguration": { + "additionalProperties": false, + "properties": { + "SecretsArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "SecretsRole": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + } + }, + "required": [ + "SecretsArn", + "SecretsRole" + ], + "type": "object" + }, + "Origin": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(http:\\/\\/|https:\\/\\/)[a-zA-Z0-9-_.]+(?::[0-9]{1,5})?$", + "type": "string" + }, + "SamlProviderConfiguration": { + "additionalProperties": false, + "properties": { + "AuthenticationUrl": { + "maxLength": 1284, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + } + }, + "required": [ + "AuthenticationUrl" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "WebExperienceSamplePromptsControlMode": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "WebExperienceStatus": { + "enum": [ + "CREATING", + "ACTIVE", + "DELETING", + "FAILED", + "PENDING_AUTH_CONFIG" + ], + "type": "string" + } + }, + "description": "Definition of AWS::QBusiness::WebExperience Resource Type", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "qbusiness:CreateWebExperience", + "qbusiness:GetWebExperience", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "sso:PutApplicationGrant", + "sso:UpdateApplication" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DeleteWebExperience", + "qbusiness:GetWebExperience" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "qbusiness:ListWebExperiences" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetWebExperience", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "qbusiness:GetWebExperience", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdateWebExperience", + "sso:PutApplicationGrant", + "sso:UpdateApplication" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/WebExperienceId" + ], + "properties": { + "ApplicationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{35}$", + "type": "string" + }, + "BrowserExtensionConfiguration": { + "$ref": "#/definitions/BrowserExtensionConfiguration" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "CustomizationConfiguration": { + "$ref": "#/definitions/CustomizationConfiguration" + }, + "DefaultEndpoint": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^(https?|ftp|file)://([^\\s]*)$", + "type": "string" + }, + "IdentityProviderConfiguration": { + "$ref": "#/definitions/IdentityProviderConfiguration" + }, + "Origins": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Origin" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "RoleArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "SamplePromptsControlMode": { + "$ref": "#/definitions/WebExperienceSamplePromptsControlMode" + }, + "Status": { + "$ref": "#/definitions/WebExperienceStatus" + }, + "Subtitle": { + "maxLength": 500, + "minLength": 0, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Title": { + "maxLength": 500, + "minLength": 0, + "pattern": "^[\\s\\S]*$", + "type": "string" + }, + "UpdatedAt": { + "format": "date-time", + "type": "string" + }, + "WebExperienceArn": { + "maxLength": 1284, + "minLength": 0, + "pattern": "^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$", + "type": "string" + }, + "WebExperienceId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]*$", + "type": "string" + }, + "WelcomeMessage": { + "maxLength": 300, + "minLength": 0, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/DefaultEndpoint", + "/properties/Status", + "/properties/UpdatedAt", + "/properties/WebExperienceArn", + "/properties/WebExperienceId" + ], + "required": [ + "ApplicationId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "qbusiness:UntagResource", + "qbusiness:TagResource", + "qbusiness:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QBusiness::WebExperience" +} diff --git a/src/schema/aws-qldb-ledger.json b/src/schema/aws-qldb-ledger.json index a447fbfb..33191a47 100644 --- a/src/schema/aws-qldb-ledger.json +++ b/src/schema/aws-qldb-ledger.json @@ -1,59 +1,59 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::QLDB::Ledger", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DeletionProtection": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "KmsKey": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "PermissionsMode": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "PermissionsMode" - ], - "typeName": "AWS::QLDB::Ledger" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::QLDB::Ledger", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DeletionProtection": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "KmsKey": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "PermissionsMode": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "PermissionsMode" + ], + "typeName": "AWS::QLDB::Ledger" +} diff --git a/src/schema/aws-qldb-stream.json b/src/schema/aws-qldb-stream.json index 0cc69281..03c7a629 100644 --- a/src/schema/aws-qldb-stream.json +++ b/src/schema/aws-qldb-stream.json @@ -1,161 +1,161 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/LedgerName", - "/properties/StreamName", - "/properties/RoleArn", - "/properties/KinesisConfiguration", - "/properties/InclusiveStartTime", - "/properties/ExclusiveEndTime" - ], - "definitions": { - "Arn": { - "pattern": "arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*", - "type": "string" - }, - "KinesisConfiguration": { - "additionalProperties": false, - "properties": { - "AggregationEnabled": { - "type": "boolean" - }, - "StreamArn": { - "$ref": "#/definitions/Arn", - "type": "object" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::QLDB::Stream.", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "qldb:StreamJournalToKinesis", - "qldb:DescribeJournalKinesisStream" - ] - }, - "delete": { - "permissions": [ - "qldb:CancelJournalKinesisStream", - "qldb:DescribeJournalKinesisStream" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "LedgerName": { - "type": "string" - } - }, - "required": [ - "LedgerName" - ] - }, - "permissions": [ - "qldb:listJournalKinesisStreamsForLedger" - ] - }, - "read": { - "permissions": [ - "qldb:DescribeJournalKinesisStream", - "qldb:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "qldb:DescribeJournalKinesisStream", - "qldb:UntagResource", - "qldb:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/LedgerName", - "/properties/Id" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "ExclusiveEndTime": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InclusiveStartTime": { - "type": "string" - }, - "KinesisConfiguration": { - "$ref": "#/definitions/KinesisConfiguration" - }, - "LedgerName": { - "type": "string" - }, - "RoleArn": { - "$ref": "#/definitions/Arn" - }, - "StreamName": { - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "LedgerName", - "StreamName", - "RoleArn", - "KinesisConfiguration", - "InclusiveStartTime" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "qldb:TagResource", - "qldb:UntagResource", - "qldb:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::QLDB::Stream" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LedgerName", + "/properties/StreamName", + "/properties/RoleArn", + "/properties/KinesisConfiguration", + "/properties/InclusiveStartTime", + "/properties/ExclusiveEndTime" + ], + "definitions": { + "Arn": { + "pattern": "arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*", + "type": "string" + }, + "KinesisConfiguration": { + "additionalProperties": false, + "properties": { + "AggregationEnabled": { + "type": "boolean" + }, + "StreamArn": { + "$ref": "#/definitions/Arn", + "type": "object" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::QLDB::Stream.", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "qldb:StreamJournalToKinesis", + "qldb:DescribeJournalKinesisStream" + ] + }, + "delete": { + "permissions": [ + "qldb:CancelJournalKinesisStream", + "qldb:DescribeJournalKinesisStream" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "LedgerName": { + "type": "string" + } + }, + "required": [ + "LedgerName" + ] + }, + "permissions": [ + "qldb:listJournalKinesisStreamsForLedger" + ] + }, + "read": { + "permissions": [ + "qldb:DescribeJournalKinesisStream", + "qldb:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "qldb:DescribeJournalKinesisStream", + "qldb:UntagResource", + "qldb:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/LedgerName", + "/properties/Id" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "ExclusiveEndTime": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "InclusiveStartTime": { + "type": "string" + }, + "KinesisConfiguration": { + "$ref": "#/definitions/KinesisConfiguration" + }, + "LedgerName": { + "type": "string" + }, + "RoleArn": { + "$ref": "#/definitions/Arn" + }, + "StreamName": { + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "LedgerName", + "StreamName", + "RoleArn", + "KinesisConfiguration", + "InclusiveStartTime" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "qldb:TagResource", + "qldb:UntagResource", + "qldb:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QLDB::Stream" +} diff --git a/src/schema/aws-quicksight-analysis.json b/src/schema/aws-quicksight-analysis.json index 9d5a4697..2a8a678b 100644 --- a/src/schema/aws-quicksight-analysis.json +++ b/src/schema/aws-quicksight-analysis.json @@ -1,11503 +1,12941 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AnalysisId", - "/properties/AwsAccountId" - ], - "definitions": { - "AggregationFunction": { - "additionalProperties": false, - "properties": { - "AttributeAggregationFunction": { - "$ref": "#/definitions/AttributeAggregationFunction" - }, - "CategoricalAggregationFunction": { - "$ref": "#/definitions/CategoricalAggregationFunction" - }, - "DateAggregationFunction": { - "$ref": "#/definitions/DateAggregationFunction" - }, - "NumericalAggregationFunction": { - "$ref": "#/definitions/NumericalAggregationFunction" - } - }, - "type": "object" - }, - "AggregationSortConfiguration": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/AggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "SortDirection": { - "$ref": "#/definitions/SortDirection" - } - }, - "required": [ - "Column", - "SortDirection" - ], - "type": "object" - }, - "AllSheetsFilterScopeConfiguration": { - "additionalProperties": false, - "type": "object" - }, - "AnalysisDefaults": { - "additionalProperties": false, - "properties": { - "DefaultNewSheetConfiguration": { - "$ref": "#/definitions/DefaultNewSheetConfiguration" - } - }, - "required": [ - "DefaultNewSheetConfiguration" - ], - "type": "object" - }, - "AnalysisDefinition": { - "additionalProperties": false, - "properties": { - "AnalysisDefaults": { - "$ref": "#/definitions/AnalysisDefaults" - }, - "CalculatedFields": { - "items": { - "$ref": "#/definitions/CalculatedField" - }, - "maxItems": 500, - "minItems": 0, - "type": "array" - }, - "ColumnConfigurations": { - "items": { - "$ref": "#/definitions/ColumnConfiguration" - }, - "maxItems": 2000, - "minItems": 0, - "type": "array" - }, - "DataSetIdentifierDeclarations": { - "items": { - "$ref": "#/definitions/DataSetIdentifierDeclaration" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - }, - "FilterGroups": { - "items": { - "$ref": "#/definitions/FilterGroup" - }, - "maxItems": 2000, - "minItems": 0, - "type": "array" - }, - "Options": { - "$ref": "#/definitions/AssetOptions" - }, - "ParameterDeclarations": { - "items": { - "$ref": "#/definitions/ParameterDeclaration" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "QueryExecutionOptions": { - "$ref": "#/definitions/QueryExecutionOptions" - }, - "Sheets": { - "items": { - "$ref": "#/definitions/SheetDefinition" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "DataSetIdentifierDeclarations" - ], - "type": "object" - }, - "AnalysisError": { - "additionalProperties": false, - "description": "

Analysis error.

", - "properties": { - "Message": { - "description": "

The message associated with the analysis error.

", - "pattern": "\\S", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/AnalysisErrorType" - }, - "ViolatedEntities": { - "description": "

Lists the violated entities that caused the analysis error

", - "items": { - "$ref": "#/definitions/Entity" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "AnalysisErrorType": { - "enum": [ - "ACCESS_DENIED", - "SOURCE_NOT_FOUND", - "DATA_SET_NOT_FOUND", - "INTERNAL_FAILURE", - "PARAMETER_VALUE_INCOMPATIBLE", - "PARAMETER_TYPE_INVALID", - "PARAMETER_NOT_FOUND", - "COLUMN_TYPE_MISMATCH", - "COLUMN_GEOGRAPHIC_ROLE_MISMATCH", - "COLUMN_REPLACEMENT_MISSING" - ], - "type": "string" - }, - "AnalysisSourceEntity": { - "additionalProperties": false, - "description": "

The source entity of an analysis.

", - "properties": { - "SourceTemplate": { - "$ref": "#/definitions/AnalysisSourceTemplate" - } - }, - "type": "object" - }, - "AnalysisSourceTemplate": { - "additionalProperties": false, - "description": "

The source template of an analysis.

", - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) of the source template of an analysis.

", - "type": "string" - }, - "DataSetReferences": { - "description": "

The dataset references of the source template of an analysis.

", - "items": { - "$ref": "#/definitions/DataSetReference" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Arn", - "DataSetReferences" - ], - "type": "object" - }, - "AnchorDateConfiguration": { - "additionalProperties": false, - "properties": { - "AnchorOption": { - "$ref": "#/definitions/AnchorOption" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - } - }, - "type": "object" - }, - "AnchorOption": { - "enum": [ - "NOW" - ], - "type": "string" - }, - "ArcAxisConfiguration": { - "additionalProperties": false, - "properties": { - "Range": { - "$ref": "#/definitions/ArcAxisDisplayRange" - }, - "ReserveRange": { - "default": 0, - "type": "number" - } - }, - "type": "object" - }, - "ArcAxisDisplayRange": { - "additionalProperties": false, - "properties": { - "Max": { - "default": null, - "type": "number" - }, - "Min": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "ArcConfiguration": { - "additionalProperties": false, - "properties": { - "ArcAngle": { - "default": null, - "type": "number" - }, - "ArcThickness": { - "$ref": "#/definitions/ArcThicknessOptions" - } - }, - "type": "object" - }, - "ArcOptions": { - "additionalProperties": false, - "properties": { - "ArcThickness": { - "$ref": "#/definitions/ArcThickness" - } - }, - "type": "object" - }, - "ArcThickness": { - "enum": [ - "SMALL", - "MEDIUM", - "LARGE", - "WHOLE" - ], - "type": "string" - }, - "ArcThicknessOptions": { - "enum": [ - "SMALL", - "MEDIUM", - "LARGE" - ], - "type": "string" - }, - "AssetOptions": { - "additionalProperties": false, - "properties": { - "Timezone": { - "type": "string" - }, - "WeekStart": { - "$ref": "#/definitions/DayOfTheWeek" - } - }, - "type": "object" - }, - "AttributeAggregationFunction": { - "additionalProperties": false, - "properties": { - "SimpleAttributeAggregation": { - "$ref": "#/definitions/SimpleAttributeAggregationFunction" - }, - "ValueForMultipleValues": { - "type": "string" - } - }, - "type": "object" - }, - "AxisBinding": { - "enum": [ - "PRIMARY_YAXIS", - "SECONDARY_YAXIS" - ], - "type": "string" - }, - "AxisDataOptions": { - "additionalProperties": false, - "properties": { - "DateAxisOptions": { - "$ref": "#/definitions/DateAxisOptions" - }, - "NumericAxisOptions": { - "$ref": "#/definitions/NumericAxisOptions" - } - }, - "type": "object" - }, - "AxisDisplayDataDrivenRange": { - "additionalProperties": false, - "type": "object" - }, - "AxisDisplayMinMaxRange": { - "additionalProperties": false, - "properties": { - "Maximum": { - "default": null, - "type": "number" - }, - "Minimum": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "AxisDisplayOptions": { - "additionalProperties": false, - "properties": { - "AxisLineVisibility": { - "$ref": "#/definitions/Visibility" - }, - "AxisOffset": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "DataOptions": { - "$ref": "#/definitions/AxisDataOptions" - }, - "GridLineVisibility": { - "$ref": "#/definitions/Visibility" - }, - "ScrollbarOptions": { - "$ref": "#/definitions/ScrollBarOptions" - }, - "TickLabelOptions": { - "$ref": "#/definitions/AxisTickLabelOptions" - } - }, - "type": "object" - }, - "AxisDisplayRange": { - "additionalProperties": false, - "properties": { - "DataDriven": { - "$ref": "#/definitions/AxisDisplayDataDrivenRange" - }, - "MinMax": { - "$ref": "#/definitions/AxisDisplayMinMaxRange" - } - }, - "type": "object" - }, - "AxisLabelOptions": { - "additionalProperties": false, - "properties": { - "ApplyTo": { - "$ref": "#/definitions/AxisLabelReferenceOptions" - }, - "CustomLabel": { - "type": "string" - }, - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - } - }, - "type": "object" - }, - "AxisLabelReferenceOptions": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "AxisLinearScale": { - "additionalProperties": false, - "properties": { - "StepCount": { - "default": null, - "type": "number" - }, - "StepSize": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "AxisLogarithmicScale": { - "additionalProperties": false, - "properties": { - "Base": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "AxisScale": { - "additionalProperties": false, - "properties": { - "Linear": { - "$ref": "#/definitions/AxisLinearScale" - }, - "Logarithmic": { - "$ref": "#/definitions/AxisLogarithmicScale" - } - }, - "type": "object" - }, - "AxisTickLabelOptions": { - "additionalProperties": false, - "properties": { - "LabelOptions": { - "$ref": "#/definitions/LabelOptions" - }, - "RotationAngle": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "BarChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Colors": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "SmallMultiples": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "BarChartConfiguration": { - "additionalProperties": false, - "properties": { - "BarsArrangement": { - "$ref": "#/definitions/BarsArrangement" - }, - "CategoryAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ColorLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ContributionAnalysisDefaults": { - "items": { - "$ref": "#/definitions/ContributionAnalysisDefault" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/BarChartFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "Orientation": { - "$ref": "#/definitions/BarChartOrientation" - }, - "ReferenceLines": { - "items": { - "$ref": "#/definitions/ReferenceLine" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "SmallMultiplesOptions": { - "$ref": "#/definitions/SmallMultiplesOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/BarChartSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "ValueAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "ValueLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "BarChartFieldWells": { - "additionalProperties": false, - "properties": { - "BarChartAggregatedFieldWells": { - "$ref": "#/definitions/BarChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "BarChartOrientation": { - "enum": [ - "HORIZONTAL", - "VERTICAL" - ], - "type": "string" - }, - "BarChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "ColorItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "ColorSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "SmallMultiplesLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "SmallMultiplesSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "BarChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/BarChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "BarsArrangement": { - "enum": [ - "CLUSTERED", - "STACKED", - "STACKED_PERCENT" - ], - "type": "string" - }, - "BaseMapStyleType": { - "enum": [ - "LIGHT_GRAY", - "DARK_GRAY", - "STREET", - "IMAGERY" - ], - "type": "string" - }, - "BinCountOptions": { - "additionalProperties": false, - "properties": { - "Value": { - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "BinWidthOptions": { - "additionalProperties": false, - "properties": { - "BinCountLimit": { - "maximum": 1000, - "minimum": 0, - "type": "number" - }, - "Value": { - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "BodySectionConfiguration": { - "additionalProperties": false, - "properties": { - "Content": { - "$ref": "#/definitions/BodySectionContent" - }, - "PageBreakConfiguration": { - "$ref": "#/definitions/SectionPageBreakConfiguration" - }, - "SectionId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Style": { - "$ref": "#/definitions/SectionStyle" - } - }, - "required": [ - "Content", - "SectionId" - ], - "type": "object" - }, - "BodySectionContent": { - "additionalProperties": false, - "properties": { - "Layout": { - "$ref": "#/definitions/SectionLayoutConfiguration" - } - }, - "type": "object" - }, - "BoxPlotAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "GroupBy": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "BoxPlotChartConfiguration": { - "additionalProperties": false, - "properties": { - "BoxPlotOptions": { - "$ref": "#/definitions/BoxPlotOptions" - }, - "CategoryAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/BoxPlotFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "PrimaryYAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "PrimaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ReferenceLines": { - "items": { - "$ref": "#/definitions/ReferenceLine" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "SortConfiguration": { - "$ref": "#/definitions/BoxPlotSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "BoxPlotFieldWells": { - "additionalProperties": false, - "properties": { - "BoxPlotAggregatedFieldWells": { - "$ref": "#/definitions/BoxPlotAggregatedFieldWells" - } - }, - "type": "object" - }, - "BoxPlotFillStyle": { - "enum": [ - "SOLID", - "TRANSPARENT" - ], - "type": "string" - }, - "BoxPlotOptions": { - "additionalProperties": false, - "properties": { - "AllDataPointsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "OutlierVisibility": { - "$ref": "#/definitions/Visibility" - }, - "StyleOptions": { - "$ref": "#/definitions/BoxPlotStyleOptions" - } - }, - "type": "object" - }, - "BoxPlotSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "PaginationConfiguration": { - "$ref": "#/definitions/PaginationConfiguration" - } - }, - "type": "object" - }, - "BoxPlotStyleOptions": { - "additionalProperties": false, - "properties": { - "FillStyle": { - "$ref": "#/definitions/BoxPlotFillStyle" - } - }, - "type": "object" - }, - "BoxPlotVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/BoxPlotChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "CalculatedField": { - "additionalProperties": false, - "properties": { - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Expression": { - "maxLength": 32000, - "minLength": 1, - "type": "string" - }, - "Name": { - "maxLength": 127, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DataSetIdentifier", - "Expression", - "Name" - ], - "type": "object" - }, - "CalculatedMeasureField": { - "additionalProperties": false, - "properties": { - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Expression", - "FieldId" - ], - "type": "object" - }, - "CascadingControlConfiguration": { - "additionalProperties": false, - "properties": { - "SourceControls": { - "items": { - "$ref": "#/definitions/CascadingControlSource" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "CascadingControlSource": { - "additionalProperties": false, - "properties": { - "ColumnToMatch": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "SourceSheetControlId": { - "type": "string" - } - }, - "type": "object" - }, - "CategoricalAggregationFunction": { - "enum": [ - "COUNT", - "DISTINCT_COUNT" - ], - "type": "string" - }, - "CategoricalDimensionField": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/StringFormatConfiguration" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "CategoricalMeasureField": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/CategoricalAggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/StringFormatConfiguration" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "CategoryDrillDownFilter": { - "additionalProperties": false, - "properties": { - "CategoryValues": { - "items": { - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "maxItems": 100000, - "minItems": 0, - "type": "array" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - } - }, - "required": [ - "CategoryValues", - "Column" - ], - "type": "object" - }, - "CategoryFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "Configuration": { - "$ref": "#/definitions/CategoryFilterConfiguration" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "Column", - "Configuration", - "FilterId" - ], - "type": "object" - }, - "CategoryFilterConfiguration": { - "additionalProperties": false, - "properties": { - "CustomFilterConfiguration": { - "$ref": "#/definitions/CustomFilterConfiguration" - }, - "CustomFilterListConfiguration": { - "$ref": "#/definitions/CustomFilterListConfiguration" - }, - "FilterListConfiguration": { - "$ref": "#/definitions/FilterListConfiguration" - } - }, - "type": "object" - }, - "CategoryFilterMatchOperator": { - "enum": [ - "EQUALS", - "DOES_NOT_EQUAL", - "CONTAINS", - "DOES_NOT_CONTAIN", - "STARTS_WITH", - "ENDS_WITH" - ], - "type": "string" - }, - "CategoryFilterSelectAllOptions": { - "enum": [ - "FILTER_ALL_VALUES" - ], - "type": "string" - }, - "CategoryInnerFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "Configuration": { - "$ref": "#/definitions/CategoryFilterConfiguration" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - } - }, - "required": [ - "Column", - "Configuration" - ], - "type": "object" - }, - "ChartAxisLabelOptions": { - "additionalProperties": false, - "properties": { - "AxisLabelOptions": { - "items": { - "$ref": "#/definitions/AxisLabelOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "SortIconVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "ClusterMarker": { - "additionalProperties": false, - "properties": { - "SimpleClusterMarker": { - "$ref": "#/definitions/SimpleClusterMarker" - } - }, - "type": "object" - }, - "ClusterMarkerConfiguration": { - "additionalProperties": false, - "properties": { - "ClusterMarker": { - "$ref": "#/definitions/ClusterMarker" - } - }, - "type": "object" - }, - "ColorFillType": { - "enum": [ - "DISCRETE", - "GRADIENT" - ], - "type": "string" - }, - "ColorScale": { - "additionalProperties": false, - "properties": { - "ColorFillType": { - "$ref": "#/definitions/ColorFillType" - }, - "Colors": { - "items": { - "$ref": "#/definitions/DataColor" - }, - "maxItems": 3, - "minItems": 2, - "type": "array" - }, - "NullValueColor": { - "$ref": "#/definitions/DataColor" - } - }, - "required": [ - "ColorFillType", - "Colors" - ], - "type": "object" - }, - "ColorsConfiguration": { - "additionalProperties": false, - "properties": { - "CustomColors": { - "items": { - "$ref": "#/definitions/CustomColor" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ColumnConfiguration": { - "additionalProperties": false, - "properties": { - "ColorsConfiguration": { - "$ref": "#/definitions/ColorsConfiguration" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FormatConfiguration": { - "$ref": "#/definitions/FormatConfiguration" - }, - "Role": { - "$ref": "#/definitions/ColumnRole" - } - }, - "required": [ - "Column" - ], - "type": "object" - }, - "ColumnHierarchy": { - "additionalProperties": false, - "properties": { - "DateTimeHierarchy": { - "$ref": "#/definitions/DateTimeHierarchy" - }, - "ExplicitHierarchy": { - "$ref": "#/definitions/ExplicitHierarchy" - }, - "PredefinedHierarchy": { - "$ref": "#/definitions/PredefinedHierarchy" - } - }, - "type": "object" - }, - "ColumnIdentifier": { - "additionalProperties": false, - "properties": { - "ColumnName": { - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ColumnName", - "DataSetIdentifier" - ], - "type": "object" - }, - "ColumnRole": { - "enum": [ - "DIMENSION", - "MEASURE" - ], - "type": "string" - }, - "ColumnSort": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/AggregationFunction" - }, - "Direction": { - "$ref": "#/definitions/SortDirection" - }, - "SortBy": { - "$ref": "#/definitions/ColumnIdentifier" - } - }, - "required": [ - "Direction", - "SortBy" - ], - "type": "object" - }, - "ColumnTooltipItem": { - "additionalProperties": false, - "properties": { - "Aggregation": { - "$ref": "#/definitions/AggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "Label": { - "type": "string" - }, - "TooltipTarget": { - "$ref": "#/definitions/TooltipTarget" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "required": [ - "Column" - ], - "type": "object" - }, - "ComboChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "BarValues": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Colors": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "LineValues": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ComboChartConfiguration": { - "additionalProperties": false, - "properties": { - "BarDataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "BarsArrangement": { - "$ref": "#/definitions/BarsArrangement" - }, - "CategoryAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ColorLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/ComboChartFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "LineDataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "PrimaryYAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "PrimaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ReferenceLines": { - "items": { - "$ref": "#/definitions/ReferenceLine" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "SecondaryYAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "SecondaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "SingleAxisOptions": { - "$ref": "#/definitions/SingleAxisOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/ComboChartSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "ComboChartFieldWells": { - "additionalProperties": false, - "properties": { - "ComboChartAggregatedFieldWells": { - "$ref": "#/definitions/ComboChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "ComboChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "ColorItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "ColorSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ComboChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/ComboChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "CommitMode": { - "enum": [ - "AUTO", - "MANUAL" - ], - "type": "string" - }, - "ComparisonConfiguration": { - "additionalProperties": false, - "properties": { - "ComparisonFormat": { - "$ref": "#/definitions/ComparisonFormatConfiguration" - }, - "ComparisonMethod": { - "$ref": "#/definitions/ComparisonMethod" - } - }, - "type": "object" - }, - "ComparisonFormatConfiguration": { - "additionalProperties": false, - "properties": { - "NumberDisplayFormatConfiguration": { - "$ref": "#/definitions/NumberDisplayFormatConfiguration" - }, - "PercentageDisplayFormatConfiguration": { - "$ref": "#/definitions/PercentageDisplayFormatConfiguration" - } - }, - "type": "object" - }, - "ComparisonMethod": { - "enum": [ - "DIFFERENCE", - "PERCENT_DIFFERENCE", - "PERCENT" - ], - "type": "string" - }, - "Computation": { - "additionalProperties": false, - "properties": { - "Forecast": { - "$ref": "#/definitions/ForecastComputation" - }, - "GrowthRate": { - "$ref": "#/definitions/GrowthRateComputation" - }, - "MaximumMinimum": { - "$ref": "#/definitions/MaximumMinimumComputation" - }, - "MetricComparison": { - "$ref": "#/definitions/MetricComparisonComputation" - }, - "PeriodOverPeriod": { - "$ref": "#/definitions/PeriodOverPeriodComputation" - }, - "PeriodToDate": { - "$ref": "#/definitions/PeriodToDateComputation" - }, - "TopBottomMovers": { - "$ref": "#/definitions/TopBottomMoversComputation" - }, - "TopBottomRanked": { - "$ref": "#/definitions/TopBottomRankedComputation" - }, - "TotalAggregation": { - "$ref": "#/definitions/TotalAggregationComputation" - }, - "UniqueValues": { - "$ref": "#/definitions/UniqueValuesComputation" - } - }, - "type": "object" - }, - "ConditionalFormattingColor": { - "additionalProperties": false, - "properties": { - "Gradient": { - "$ref": "#/definitions/ConditionalFormattingGradientColor" - }, - "Solid": { - "$ref": "#/definitions/ConditionalFormattingSolidColor" - } - }, - "type": "object" - }, - "ConditionalFormattingCustomIconCondition": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "DisplayConfiguration": { - "$ref": "#/definitions/ConditionalFormattingIconDisplayConfiguration" - }, - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "IconOptions": { - "$ref": "#/definitions/ConditionalFormattingCustomIconOptions" - } - }, - "required": [ - "Expression", - "IconOptions" - ], - "type": "object" - }, - "ConditionalFormattingCustomIconOptions": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/Icon" - }, - "UnicodeIcon": { - "pattern": "^[^\\u0000-\\u00FF]$", - "type": "string" - } - }, - "type": "object" - }, - "ConditionalFormattingGradientColor": { - "additionalProperties": false, - "properties": { - "Color": { - "$ref": "#/definitions/GradientColor" - }, - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Color", - "Expression" - ], - "type": "object" - }, - "ConditionalFormattingIcon": { - "additionalProperties": false, - "properties": { - "CustomCondition": { - "$ref": "#/definitions/ConditionalFormattingCustomIconCondition" - }, - "IconSet": { - "$ref": "#/definitions/ConditionalFormattingIconSet" - } - }, - "type": "object" - }, - "ConditionalFormattingIconDisplayConfiguration": { - "additionalProperties": false, - "properties": { - "IconDisplayOption": { - "$ref": "#/definitions/ConditionalFormattingIconDisplayOption" - } - }, - "type": "object" - }, - "ConditionalFormattingIconDisplayOption": { - "enum": [ - "ICON_ONLY" - ], - "type": "string" - }, - "ConditionalFormattingIconSet": { - "additionalProperties": false, - "properties": { - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "IconSetType": { - "$ref": "#/definitions/ConditionalFormattingIconSetType" - } - }, - "required": [ - "Expression" - ], - "type": "object" - }, - "ConditionalFormattingIconSetType": { - "enum": [ - "PLUS_MINUS", - "CHECK_X", - "THREE_COLOR_ARROW", - "THREE_GRAY_ARROW", - "CARET_UP_MINUS_DOWN", - "THREE_SHAPE", - "THREE_CIRCLE", - "FLAGS", - "BARS", - "FOUR_COLOR_ARROW", - "FOUR_GRAY_ARROW" - ], - "type": "string" - }, - "ConditionalFormattingSolidColor": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Expression" - ], - "type": "object" - }, - "ContributionAnalysisDefault": { - "additionalProperties": false, - "properties": { - "ContributorDimensions": { - "items": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "maxItems": 4, - "minItems": 1, - "type": "array" - }, - "MeasureFieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ContributorDimensions", - "MeasureFieldId" - ], - "type": "object" - }, - "CrossDatasetTypes": { - "enum": [ - "ALL_DATASETS", - "SINGLE_DATASET" - ], - "type": "string" - }, - "CurrencyDisplayFormatConfiguration": { - "additionalProperties": false, - "properties": { - "DecimalPlacesConfiguration": { - "$ref": "#/definitions/DecimalPlacesConfiguration" - }, - "NegativeValueConfiguration": { - "$ref": "#/definitions/NegativeValueConfiguration" - }, - "NullValueFormatConfiguration": { - "$ref": "#/definitions/NullValueFormatConfiguration" - }, - "NumberScale": { - "$ref": "#/definitions/NumberScale" - }, - "Prefix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "SeparatorConfiguration": { - "$ref": "#/definitions/NumericSeparatorConfiguration" - }, - "Suffix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Symbol": { - "pattern": "^[A-Z]{3}$", - "type": "string" - } - }, - "type": "object" - }, - "CustomActionFilterOperation": { - "additionalProperties": false, - "properties": { - "SelectedFieldsConfiguration": { - "$ref": "#/definitions/FilterOperationSelectedFieldsConfiguration" - }, - "TargetVisualsConfiguration": { - "$ref": "#/definitions/FilterOperationTargetVisualsConfiguration" - } - }, - "required": [ - "SelectedFieldsConfiguration", - "TargetVisualsConfiguration" - ], - "type": "object" - }, - "CustomActionNavigationOperation": { - "additionalProperties": false, - "properties": { - "LocalNavigationConfiguration": { - "$ref": "#/definitions/LocalNavigationConfiguration" - } - }, - "type": "object" - }, - "CustomActionSetParametersOperation": { - "additionalProperties": false, - "properties": { - "ParameterValueConfigurations": { - "items": { - "$ref": "#/definitions/SetParameterValueConfiguration" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "ParameterValueConfigurations" - ], - "type": "object" - }, - "CustomActionURLOperation": { - "additionalProperties": false, - "properties": { - "URLTarget": { - "$ref": "#/definitions/URLTargetConfiguration" - }, - "URLTemplate": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "URLTarget", - "URLTemplate" - ], - "type": "object" - }, - "CustomColor": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "FieldValue": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - }, - "SpecialValue": { - "$ref": "#/definitions/SpecialValue" - } - }, - "required": [ - "Color" - ], - "type": "object" - }, - "CustomContentConfiguration": { - "additionalProperties": false, - "properties": { - "ContentType": { - "$ref": "#/definitions/CustomContentType" - }, - "ContentUrl": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "ImageScaling": { - "$ref": "#/definitions/CustomContentImageScalingConfiguration" - } - }, - "type": "object" - }, - "CustomContentImageScalingConfiguration": { - "enum": [ - "FIT_TO_HEIGHT", - "FIT_TO_WIDTH", - "DO_NOT_SCALE", - "SCALE_TO_VISUAL" - ], - "type": "string" - }, - "CustomContentType": { - "enum": [ - "IMAGE", - "OTHER_EMBEDDED_CONTENT" - ], - "type": "string" - }, - "CustomContentVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/CustomContentConfiguration" - }, - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "DataSetIdentifier", - "VisualId" - ], - "type": "object" - }, - "CustomFilterConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryValue": { - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "MatchOperator": { - "$ref": "#/definitions/CategoryFilterMatchOperator" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "SelectAllOptions": { - "$ref": "#/definitions/CategoryFilterSelectAllOptions" - } - }, - "required": [ - "MatchOperator", - "NullOption" - ], - "type": "object" - }, - "CustomFilterListConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryValues": { - "items": { - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "maxItems": 100000, - "minItems": 0, - "type": "array" - }, - "MatchOperator": { - "$ref": "#/definitions/CategoryFilterMatchOperator" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "SelectAllOptions": { - "$ref": "#/definitions/CategoryFilterSelectAllOptions" - } - }, - "required": [ - "MatchOperator", - "NullOption" - ], - "type": "object" - }, - "CustomNarrativeOptions": { - "additionalProperties": false, - "properties": { - "Narrative": { - "maxLength": 150000, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Narrative" - ], - "type": "object" - }, - "CustomParameterValues": { - "additionalProperties": false, - "properties": { - "DateTimeValues": { - "items": { - "format": "date-time", - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - }, - "DecimalValues": { - "items": { - "type": "number" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - }, - "IntegerValues": { - "items": { - "type": "number" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - }, - "StringValues": { - "items": { - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "CustomValuesConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValues": { - "$ref": "#/definitions/CustomParameterValues" - }, - "IncludeNullValue": { - "type": "boolean" - } - }, - "required": [ - "CustomValues" - ], - "type": "object" - }, - "DataBarsOptions": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "NegativeColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "PositiveColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "DataColor": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "DataValue": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "DataFieldSeriesItem": { - "additionalProperties": false, - "properties": { - "AxisBinding": { - "$ref": "#/definitions/AxisBinding" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FieldValue": { - "type": "string" - }, - "Settings": { - "$ref": "#/definitions/LineChartSeriesSettings" - } - }, - "required": [ - "AxisBinding", - "FieldId" - ], - "type": "object" - }, - "DataLabelContent": { - "enum": [ - "VALUE", - "PERCENT", - "VALUE_AND_PERCENT" - ], - "type": "string" - }, - "DataLabelOptions": { - "additionalProperties": false, - "properties": { - "CategoryLabelVisibility": { - "$ref": "#/definitions/Visibility" - }, - "DataLabelTypes": { - "items": { - "$ref": "#/definitions/DataLabelType" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "LabelColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "LabelContent": { - "$ref": "#/definitions/DataLabelContent" - }, - "LabelFontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "MeasureLabelVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Overlap": { - "$ref": "#/definitions/DataLabelOverlap" - }, - "Position": { - "$ref": "#/definitions/DataLabelPosition" - }, - "TotalsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "DataLabelOverlap": { - "enum": [ - "DISABLE_OVERLAP", - "ENABLE_OVERLAP" - ], - "type": "string" - }, - "DataLabelPosition": { - "enum": [ - "INSIDE", - "OUTSIDE", - "LEFT", - "TOP", - "BOTTOM", - "RIGHT" - ], - "type": "string" - }, - "DataLabelType": { - "additionalProperties": false, - "properties": { - "DataPathLabelType": { - "$ref": "#/definitions/DataPathLabelType" - }, - "FieldLabelType": { - "$ref": "#/definitions/FieldLabelType" - }, - "MaximumLabelType": { - "$ref": "#/definitions/MaximumLabelType" - }, - "MinimumLabelType": { - "$ref": "#/definitions/MinimumLabelType" - }, - "RangeEndsLabelType": { - "$ref": "#/definitions/RangeEndsLabelType" - } - }, - "type": "object" - }, - "DataPathColor": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Element": { - "$ref": "#/definitions/DataPathValue" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - } - }, - "required": [ - "Color", - "Element" - ], - "type": "object" - }, - "DataPathLabelType": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FieldValue": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "DataPathSort": { - "additionalProperties": false, - "properties": { - "Direction": { - "$ref": "#/definitions/SortDirection" - }, - "SortPaths": { - "items": { - "$ref": "#/definitions/DataPathValue" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Direction", - "SortPaths" - ], - "type": "object" - }, - "DataPathType": { - "additionalProperties": false, - "properties": { - "PivotTableDataPathType": { - "$ref": "#/definitions/PivotTableDataPathType" - } - }, - "type": "object" - }, - "DataPathValue": { - "additionalProperties": false, - "properties": { - "DataPathType": { - "$ref": "#/definitions/DataPathType" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FieldValue": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "DataSetIdentifierDeclaration": { - "additionalProperties": false, - "properties": { - "DataSetArn": { - "type": "string" - }, - "Identifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DataSetArn", - "Identifier" - ], - "type": "object" - }, - "DataSetReference": { - "additionalProperties": false, - "description": "

Dataset reference.

", - "properties": { - "DataSetArn": { - "description": "

Dataset Amazon Resource Name (ARN).

", - "type": "string" - }, - "DataSetPlaceholder": { - "description": "

Dataset placeholder.

", - "pattern": "\\S", - "type": "string" - } - }, - "required": [ - "DataSetArn", - "DataSetPlaceholder" - ], - "type": "object" - }, - "DateAggregationFunction": { - "enum": [ - "COUNT", - "DISTINCT_COUNT", - "MIN", - "MAX" - ], - "type": "string" - }, - "DateAxisOptions": { - "additionalProperties": false, - "properties": { - "MissingDateVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "DateDimensionField": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DateGranularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/DateTimeFormatConfiguration" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "DateMeasureField": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/DateAggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/DateTimeFormatConfiguration" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "DateTimeDefaultValues": { - "additionalProperties": false, - "properties": { - "DynamicValue": { - "$ref": "#/definitions/DynamicDefaultValue" - }, - "RollingDate": { - "$ref": "#/definitions/RollingDateConfiguration" - }, - "StaticValues": { - "items": { - "format": "date-time", - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "DateTimeFormatConfiguration": { - "additionalProperties": false, - "properties": { - "DateTimeFormat": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "NullValueFormatConfiguration": { - "$ref": "#/definitions/NullValueFormatConfiguration" - }, - "NumericFormatConfiguration": { - "$ref": "#/definitions/NumericFormatConfiguration" - } - }, - "type": "object" - }, - "DateTimeHierarchy": { - "additionalProperties": false, - "properties": { - "DrillDownFilters": { - "items": { - "$ref": "#/definitions/DrillDownFilter" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "HierarchyId" - ], - "type": "object" - }, - "DateTimeParameter": { - "additionalProperties": false, - "description": "

A date-time parameter.

", - "properties": { - "Name": { - "description": "

A display name for the date-time parameter.

", - "pattern": "\\S", - "type": "string" - }, - "Values": { - "description": "

The values for the date-time parameter.

", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "Name", - "Values" - ], - "type": "object" - }, - "DateTimeParameterDeclaration": { - "additionalProperties": false, - "properties": { - "DefaultValues": { - "$ref": "#/definitions/DateTimeDefaultValues" - }, - "MappedDataSetParameters": { - "items": { - "$ref": "#/definitions/MappedDataSetParameter" - }, - "maxItems": 150, - "minItems": 0, - "type": "array" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "ValueWhenUnset": { - "$ref": "#/definitions/DateTimeValueWhenUnsetConfiguration" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "DateTimePickerControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "DateTimeFormat": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "DateTimeValueWhenUnsetConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValue": { - "format": "date-time", - "type": "string" - }, - "ValueWhenUnsetOption": { - "$ref": "#/definitions/ValueWhenUnsetOption" - } - }, - "type": "object" - }, - "DayOfTheWeek": { - "enum": [ - "SUNDAY", - "MONDAY", - "TUESDAY", - "WEDNESDAY", - "THURSDAY", - "FRIDAY", - "SATURDAY" - ], - "type": "string" - }, - "DecimalDefaultValues": { - "additionalProperties": false, - "properties": { - "DynamicValue": { - "$ref": "#/definitions/DynamicDefaultValue" - }, - "StaticValues": { - "items": { - "type": "number" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "DecimalParameter": { - "additionalProperties": false, - "description": "

A decimal parameter.

", - "properties": { - "Name": { - "description": "

A display name for the decimal parameter.

", - "pattern": "\\S", - "type": "string" - }, - "Values": { - "description": "

The values for the decimal parameter.

", - "items": { - "default": 0, - "type": "number" - }, - "type": "array" - } - }, - "required": [ - "Name", - "Values" - ], - "type": "object" - }, - "DecimalParameterDeclaration": { - "additionalProperties": false, - "properties": { - "DefaultValues": { - "$ref": "#/definitions/DecimalDefaultValues" - }, - "MappedDataSetParameters": { - "items": { - "$ref": "#/definitions/MappedDataSetParameter" - }, - "maxItems": 150, - "minItems": 0, - "type": "array" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "ParameterValueType": { - "$ref": "#/definitions/ParameterValueType" - }, - "ValueWhenUnset": { - "$ref": "#/definitions/DecimalValueWhenUnsetConfiguration" - } - }, - "required": [ - "Name", - "ParameterValueType" - ], - "type": "object" - }, - "DecimalPlacesConfiguration": { - "additionalProperties": false, - "properties": { - "DecimalPlaces": { - "maximum": 20, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "DecimalPlaces" - ], - "type": "object" - }, - "DecimalValueWhenUnsetConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValue": { - "default": null, - "type": "number" - }, - "ValueWhenUnsetOption": { - "$ref": "#/definitions/ValueWhenUnsetOption" - } - }, - "type": "object" - }, - "DefaultDateTimePickerControlOptions": { - "additionalProperties": false, - "properties": { - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/DateTimePickerControlDisplayOptions" - }, - "Type": { - "$ref": "#/definitions/SheetControlDateTimePickerType" - } - }, - "type": "object" - }, - "DefaultFilterControlConfiguration": { - "additionalProperties": false, - "properties": { - "ControlOptions": { - "$ref": "#/definitions/DefaultFilterControlOptions" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ControlOptions", - "Title" - ], - "type": "object" - }, - "DefaultFilterControlOptions": { - "additionalProperties": false, - "properties": { - "DefaultDateTimePickerOptions": { - "$ref": "#/definitions/DefaultDateTimePickerControlOptions" - }, - "DefaultDropdownOptions": { - "$ref": "#/definitions/DefaultFilterDropDownControlOptions" - }, - "DefaultListOptions": { - "$ref": "#/definitions/DefaultFilterListControlOptions" - }, - "DefaultRelativeDateTimeOptions": { - "$ref": "#/definitions/DefaultRelativeDateTimeControlOptions" - }, - "DefaultSliderOptions": { - "$ref": "#/definitions/DefaultSliderControlOptions" - }, - "DefaultTextAreaOptions": { - "$ref": "#/definitions/DefaultTextAreaControlOptions" - }, - "DefaultTextFieldOptions": { - "$ref": "#/definitions/DefaultTextFieldControlOptions" - } - }, - "type": "object" - }, - "DefaultFilterDropDownControlOptions": { - "additionalProperties": false, - "properties": { - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/DropDownControlDisplayOptions" - }, - "SelectableValues": { - "$ref": "#/definitions/FilterSelectableValues" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "type": "object" - }, - "DefaultFilterListControlOptions": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/ListControlDisplayOptions" - }, - "SelectableValues": { - "$ref": "#/definitions/FilterSelectableValues" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "type": "object" - }, - "DefaultFreeFormLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "CanvasSizeOptions": { - "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" - } - }, - "required": [ - "CanvasSizeOptions" - ], - "type": "object" - }, - "DefaultGridLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "CanvasSizeOptions": { - "$ref": "#/definitions/GridLayoutCanvasSizeOptions" - } - }, - "required": [ - "CanvasSizeOptions" - ], - "type": "object" - }, - "DefaultInteractiveLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "FreeForm": { - "$ref": "#/definitions/DefaultFreeFormLayoutConfiguration" - }, - "Grid": { - "$ref": "#/definitions/DefaultGridLayoutConfiguration" - } - }, - "type": "object" - }, - "DefaultNewSheetConfiguration": { - "additionalProperties": false, - "properties": { - "InteractiveLayoutConfiguration": { - "$ref": "#/definitions/DefaultInteractiveLayoutConfiguration" - }, - "PaginatedLayoutConfiguration": { - "$ref": "#/definitions/DefaultPaginatedLayoutConfiguration" - }, - "SheetContentType": { - "$ref": "#/definitions/SheetContentType" - } - }, - "type": "object" - }, - "DefaultPaginatedLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "SectionBased": { - "$ref": "#/definitions/DefaultSectionBasedLayoutConfiguration" - } - }, - "type": "object" - }, - "DefaultRelativeDateTimeControlOptions": { - "additionalProperties": false, - "properties": { - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" - } - }, - "type": "object" - }, - "DefaultSectionBasedLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "CanvasSizeOptions": { - "$ref": "#/definitions/SectionBasedLayoutCanvasSizeOptions" - } - }, - "required": [ - "CanvasSizeOptions" - ], - "type": "object" - }, - "DefaultSliderControlOptions": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/SliderControlDisplayOptions" - }, - "MaximumValue": { - "default": 0, - "type": "number" - }, - "MinimumValue": { - "default": 0, - "type": "number" - }, - "StepSize": { - "default": 0, - "type": "number" - }, - "Type": { - "$ref": "#/definitions/SheetControlSliderType" - } - }, - "required": [ - "MaximumValue", - "MinimumValue", - "StepSize" - ], - "type": "object" - }, - "DefaultTextAreaControlOptions": { - "additionalProperties": false, - "properties": { - "Delimiter": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "DisplayOptions": { - "$ref": "#/definitions/TextAreaControlDisplayOptions" - } - }, - "type": "object" - }, - "DefaultTextFieldControlOptions": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/TextFieldControlDisplayOptions" - } - }, - "type": "object" - }, - "DestinationParameterValueConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValuesConfiguration": { - "$ref": "#/definitions/CustomValuesConfiguration" - }, - "SelectAllValueOptions": { - "$ref": "#/definitions/SelectAllValueOptions" - }, - "SourceColumn": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "SourceField": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "SourceParameterName": { - "type": "string" - } - }, - "type": "object" - }, - "DimensionField": { - "additionalProperties": false, - "properties": { - "CategoricalDimensionField": { - "$ref": "#/definitions/CategoricalDimensionField" - }, - "DateDimensionField": { - "$ref": "#/definitions/DateDimensionField" - }, - "NumericalDimensionField": { - "$ref": "#/definitions/NumericalDimensionField" - } - }, - "type": "object" - }, - "DonutCenterOptions": { - "additionalProperties": false, - "properties": { - "LabelVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "DonutOptions": { - "additionalProperties": false, - "properties": { - "ArcOptions": { - "$ref": "#/definitions/ArcOptions" - }, - "DonutCenterOptions": { - "$ref": "#/definitions/DonutCenterOptions" - } - }, - "type": "object" - }, - "DrillDownFilter": { - "additionalProperties": false, - "properties": { - "CategoryFilter": { - "$ref": "#/definitions/CategoryDrillDownFilter" - }, - "NumericEqualityFilter": { - "$ref": "#/definitions/NumericEqualityDrillDownFilter" - }, - "TimeRangeFilter": { - "$ref": "#/definitions/TimeRangeDrillDownFilter" - } - }, - "type": "object" - }, - "DropDownControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "SelectAllOptions": { - "$ref": "#/definitions/ListControlSelectAllOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "DynamicDefaultValue": { - "additionalProperties": false, - "properties": { - "DefaultValueColumn": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "GroupNameColumn": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "UserNameColumn": { - "$ref": "#/definitions/ColumnIdentifier" - } - }, - "required": [ - "DefaultValueColumn" - ], - "type": "object" - }, - "EmptyVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "DataSetIdentifier", - "VisualId" - ], - "type": "object" - }, - "Entity": { - "additionalProperties": false, - "properties": { - "Path": { - "pattern": "\\S", - "type": "string" - } - }, - "type": "object" - }, - "ExcludePeriodConfiguration": { - "additionalProperties": false, - "properties": { - "Amount": { - "default": null, - "type": "number" - }, - "Granularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "Status": { - "$ref": "#/definitions/WidgetStatus" - } - }, - "required": [ - "Amount", - "Granularity" - ], - "type": "object" - }, - "ExplicitHierarchy": { - "additionalProperties": false, - "properties": { - "Columns": { - "items": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "maxItems": 10, - "minItems": 2, - "type": "array" - }, - "DrillDownFilters": { - "items": { - "$ref": "#/definitions/DrillDownFilter" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Columns", - "HierarchyId" - ], - "type": "object" - }, - "FieldBasedTooltip": { - "additionalProperties": false, - "properties": { - "AggregationVisibility": { - "$ref": "#/definitions/Visibility" - }, - "TooltipFields": { - "items": { - "$ref": "#/definitions/TooltipItem" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "TooltipTitleType": { - "$ref": "#/definitions/TooltipTitleType" - } - }, - "type": "object" - }, - "FieldLabelType": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "FieldSeriesItem": { - "additionalProperties": false, - "properties": { - "AxisBinding": { - "$ref": "#/definitions/AxisBinding" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Settings": { - "$ref": "#/definitions/LineChartSeriesSettings" - } - }, - "required": [ - "AxisBinding", - "FieldId" - ], - "type": "object" - }, - "FieldSort": { - "additionalProperties": false, - "properties": { - "Direction": { - "$ref": "#/definitions/SortDirection" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Direction", - "FieldId" - ], - "type": "object" - }, - "FieldSortOptions": { - "additionalProperties": false, - "properties": { - "ColumnSort": { - "$ref": "#/definitions/ColumnSort" - }, - "FieldSort": { - "$ref": "#/definitions/FieldSort" - } - }, - "type": "object" - }, - "FieldTooltipItem": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Label": { - "type": "string" - }, - "TooltipTarget": { - "$ref": "#/definitions/TooltipTarget" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "FilledMapAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Geospatial": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "FilledMapConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ConditionalFormattingOptions": { - "items": { - "$ref": "#/definitions/FilledMapConditionalFormattingOption" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "ConditionalFormattingOptions" - ], - "type": "object" - }, - "FilledMapConditionalFormattingOption": { - "additionalProperties": false, - "properties": { - "Shape": { - "$ref": "#/definitions/FilledMapShapeConditionalFormatting" - } - }, - "required": [ - "Shape" - ], - "type": "object" - }, - "FilledMapConfiguration": { - "additionalProperties": false, - "properties": { - "FieldWells": { - "$ref": "#/definitions/FilledMapFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "MapStyleOptions": { - "$ref": "#/definitions/GeospatialMapStyleOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/FilledMapSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "WindowOptions": { - "$ref": "#/definitions/GeospatialWindowOptions" - } - }, - "type": "object" - }, - "FilledMapFieldWells": { - "additionalProperties": false, - "properties": { - "FilledMapAggregatedFieldWells": { - "$ref": "#/definitions/FilledMapAggregatedFieldWells" - } - }, - "type": "object" - }, - "FilledMapShapeConditionalFormatting": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Format": { - "$ref": "#/definitions/ShapeConditionalFormat" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "FilledMapSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "FilledMapVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/FilledMapConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "ConditionalFormatting": { - "$ref": "#/definitions/FilledMapConditionalFormatting" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "Filter": { - "additionalProperties": false, - "properties": { - "CategoryFilter": { - "$ref": "#/definitions/CategoryFilter" - }, - "NestedFilter": { - "$ref": "#/definitions/NestedFilter" - }, - "NumericEqualityFilter": { - "$ref": "#/definitions/NumericEqualityFilter" - }, - "NumericRangeFilter": { - "$ref": "#/definitions/NumericRangeFilter" - }, - "RelativeDatesFilter": { - "$ref": "#/definitions/RelativeDatesFilter" - }, - "TimeEqualityFilter": { - "$ref": "#/definitions/TimeEqualityFilter" - }, - "TimeRangeFilter": { - "$ref": "#/definitions/TimeRangeFilter" - }, - "TopBottomFilter": { - "$ref": "#/definitions/TopBottomFilter" - } - }, - "type": "object" - }, - "FilterControl": { - "additionalProperties": false, - "properties": { - "CrossSheet": { - "$ref": "#/definitions/FilterCrossSheetControl" - }, - "DateTimePicker": { - "$ref": "#/definitions/FilterDateTimePickerControl" - }, - "Dropdown": { - "$ref": "#/definitions/FilterDropDownControl" - }, - "List": { - "$ref": "#/definitions/FilterListControl" - }, - "RelativeDateTime": { - "$ref": "#/definitions/FilterRelativeDateTimeControl" - }, - "Slider": { - "$ref": "#/definitions/FilterSliderControl" - }, - "TextArea": { - "$ref": "#/definitions/FilterTextAreaControl" - }, - "TextField": { - "$ref": "#/definitions/FilterTextFieldControl" - } - }, - "type": "object" - }, - "FilterCrossSheetControl": { - "additionalProperties": false, - "properties": { - "CascadingControlConfiguration": { - "$ref": "#/definitions/CascadingControlConfiguration" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId" - ], - "type": "object" - }, - "FilterDateTimePickerControl": { - "additionalProperties": false, - "properties": { - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/DateTimePickerControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlDateTimePickerType" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterDropDownControl": { - "additionalProperties": false, - "properties": { - "CascadingControlConfiguration": { - "$ref": "#/definitions/CascadingControlConfiguration" - }, - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/DropDownControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SelectableValues": { - "$ref": "#/definitions/FilterSelectableValues" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterGroup": { - "additionalProperties": false, - "properties": { - "CrossDataset": { - "$ref": "#/definitions/CrossDatasetTypes" - }, - "FilterGroupId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Filters": { - "items": { - "$ref": "#/definitions/Filter" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "ScopeConfiguration": { - "$ref": "#/definitions/FilterScopeConfiguration" - }, - "Status": { - "$ref": "#/definitions/WidgetStatus" - } - }, - "required": [ - "CrossDataset", - "FilterGroupId", - "Filters", - "ScopeConfiguration" - ], - "type": "object" - }, - "FilterListConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryValues": { - "items": { - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "maxItems": 100000, - "minItems": 0, - "type": "array" - }, - "MatchOperator": { - "$ref": "#/definitions/CategoryFilterMatchOperator" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "SelectAllOptions": { - "$ref": "#/definitions/CategoryFilterSelectAllOptions" - } - }, - "required": [ - "MatchOperator" - ], - "type": "object" - }, - "FilterListControl": { - "additionalProperties": false, - "properties": { - "CascadingControlConfiguration": { - "$ref": "#/definitions/CascadingControlConfiguration" - }, - "DisplayOptions": { - "$ref": "#/definitions/ListControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SelectableValues": { - "$ref": "#/definitions/FilterSelectableValues" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterNullOption": { - "enum": [ - "ALL_VALUES", - "NULLS_ONLY", - "NON_NULLS_ONLY" - ], - "type": "string" - }, - "FilterOperationSelectedFieldsConfiguration": { - "additionalProperties": false, - "properties": { - "SelectedColumns": { - "description": "

The selected columns of a dataset.

", - "items": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "SelectedFieldOptions": { - "$ref": "#/definitions/SelectedFieldOptions" - }, - "SelectedFields": { - "items": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "FilterOperationTargetVisualsConfiguration": { - "additionalProperties": false, - "properties": { - "SameSheetTargetVisualConfiguration": { - "$ref": "#/definitions/SameSheetTargetVisualConfiguration" - } - }, - "type": "object" - }, - "FilterRelativeDateTimeControl": { - "additionalProperties": false, - "properties": { - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterScopeConfiguration": { - "additionalProperties": false, - "properties": { - "AllSheets": { - "$ref": "#/definitions/AllSheetsFilterScopeConfiguration" - }, - "SelectedSheets": { - "$ref": "#/definitions/SelectedSheetsFilterScopeConfiguration" - } - }, - "type": "object" - }, - "FilterSelectableValues": { - "additionalProperties": false, - "properties": { - "Values": { - "items": { - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "FilterSliderControl": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/SliderControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "MaximumValue": { - "default": 0, - "type": "number" - }, - "MinimumValue": { - "default": 0, - "type": "number" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "StepSize": { - "default": 0, - "type": "number" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlSliderType" - } - }, - "required": [ - "FilterControlId", - "MaximumValue", - "MinimumValue", - "SourceFilterId", - "StepSize", - "Title" - ], - "type": "object" - }, - "FilterTextAreaControl": { - "additionalProperties": false, - "properties": { - "Delimiter": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "DisplayOptions": { - "$ref": "#/definitions/TextAreaControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterTextFieldControl": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/TextFieldControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterVisualScope": { - "enum": [ - "ALL_VISUALS", - "SELECTED_VISUALS" - ], - "type": "string" - }, - "FontConfiguration": { - "additionalProperties": false, - "properties": { - "FontColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "FontDecoration": { - "$ref": "#/definitions/FontDecoration" - }, - "FontSize": { - "$ref": "#/definitions/FontSize" - }, - "FontStyle": { - "$ref": "#/definitions/FontStyle" - }, - "FontWeight": { - "$ref": "#/definitions/FontWeight" - } - }, - "type": "object" - }, - "FontDecoration": { - "enum": [ - "UNDERLINE", - "NONE" - ], - "type": "string" - }, - "FontSize": { - "additionalProperties": false, - "properties": { - "Relative": { - "$ref": "#/definitions/RelativeFontSize" - } - }, - "type": "object" - }, - "FontStyle": { - "enum": [ - "NORMAL", - "ITALIC" - ], - "type": "string" - }, - "FontWeight": { - "additionalProperties": false, - "properties": { - "Name": { - "$ref": "#/definitions/FontWeightName" - } - }, - "type": "object" - }, - "FontWeightName": { - "enum": [ - "NORMAL", - "BOLD" - ], - "type": "string" - }, - "ForecastComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "CustomSeasonalityValue": { - "default": null, - "maximum": 180, - "minimum": 1, - "type": "number" - }, - "LowerBoundary": { - "default": null, - "type": "number" - }, - "Name": { - "type": "string" - }, - "PeriodsBackward": { - "maximum": 1000, - "minimum": 0, - "type": "number" - }, - "PeriodsForward": { - "maximum": 1000, - "minimum": 1, - "type": "number" - }, - "PredictionInterval": { - "maximum": 95, - "minimum": 50, - "type": "number" - }, - "Seasonality": { - "$ref": "#/definitions/ForecastComputationSeasonality" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "UpperBoundary": { - "default": null, - "type": "number" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "ForecastComputationSeasonality": { - "enum": [ - "AUTOMATIC", - "CUSTOM" - ], - "type": "string" - }, - "ForecastConfiguration": { - "additionalProperties": false, - "properties": { - "ForecastProperties": { - "$ref": "#/definitions/TimeBasedForecastProperties" - }, - "Scenario": { - "$ref": "#/definitions/ForecastScenario" - } - }, - "type": "object" - }, - "ForecastScenario": { - "additionalProperties": false, - "properties": { - "WhatIfPointScenario": { - "$ref": "#/definitions/WhatIfPointScenario" - }, - "WhatIfRangeScenario": { - "$ref": "#/definitions/WhatIfRangeScenario" - } - }, - "type": "object" - }, - "FormatConfiguration": { - "additionalProperties": false, - "properties": { - "DateTimeFormatConfiguration": { - "$ref": "#/definitions/DateTimeFormatConfiguration" - }, - "NumberFormatConfiguration": { - "$ref": "#/definitions/NumberFormatConfiguration" - }, - "StringFormatConfiguration": { - "$ref": "#/definitions/StringFormatConfiguration" - } - }, - "type": "object" - }, - "FreeFormLayoutCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "ScreenCanvasSizeOptions": { - "$ref": "#/definitions/FreeFormLayoutScreenCanvasSizeOptions" - } - }, - "type": "object" - }, - "FreeFormLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "CanvasSizeOptions": { - "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" - }, - "Elements": { - "items": { - "$ref": "#/definitions/FreeFormLayoutElement" - }, - "maxItems": 430, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Elements" - ], - "type": "object" - }, - "FreeFormLayoutElement": { - "additionalProperties": false, - "properties": { - "BackgroundStyle": { - "$ref": "#/definitions/FreeFormLayoutElementBackgroundStyle" - }, - "BorderStyle": { - "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" - }, - "ElementId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "ElementType": { - "$ref": "#/definitions/LayoutElementType" - }, - "Height": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "LoadingAnimation": { - "$ref": "#/definitions/LoadingAnimation" - }, - "RenderingRules": { - "items": { - "$ref": "#/definitions/SheetElementRenderingRule" - }, - "maxItems": 10000, - "minItems": 0, - "type": "array" - }, - "SelectedBorderStyle": { - "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - }, - "Width": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "XAxisLocation": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "YAxisLocation": { - "description": "String based length that is composed of value and unit in px with Integer.MAX_VALUE as maximum value", - "type": "string" - } - }, - "required": [ - "ElementId", - "ElementType", - "Height", - "Width", - "XAxisLocation", - "YAxisLocation" - ], - "type": "object" - }, - "FreeFormLayoutElementBackgroundStyle": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "FreeFormLayoutElementBorderStyle": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "FreeFormLayoutScreenCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "OptimizedViewPortWidth": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - } - }, - "required": [ - "OptimizedViewPortWidth" - ], - "type": "object" - }, - "FreeFormSectionLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "Elements": { - "items": { - "$ref": "#/definitions/FreeFormLayoutElement" - }, - "maxItems": 430, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Elements" - ], - "type": "object" - }, - "FunnelChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "FunnelChartConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "DataLabelOptions": { - "$ref": "#/definitions/FunnelChartDataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/FunnelChartFieldWells" - }, - "SortConfiguration": { - "$ref": "#/definitions/FunnelChartSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "ValueLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "FunnelChartDataLabelOptions": { - "additionalProperties": false, - "properties": { - "CategoryLabelVisibility": { - "$ref": "#/definitions/Visibility" - }, - "LabelColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "LabelFontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "MeasureDataLabelStyle": { - "$ref": "#/definitions/FunnelChartMeasureDataLabelStyle" - }, - "MeasureLabelVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Position": { - "$ref": "#/definitions/DataLabelPosition" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "FunnelChartFieldWells": { - "additionalProperties": false, - "properties": { - "FunnelChartAggregatedFieldWells": { - "$ref": "#/definitions/FunnelChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "FunnelChartMeasureDataLabelStyle": { - "enum": [ - "VALUE_ONLY", - "PERCENTAGE_BY_FIRST_STAGE", - "PERCENTAGE_BY_PREVIOUS_STAGE", - "VALUE_AND_PERCENTAGE_BY_FIRST_STAGE", - "VALUE_AND_PERCENTAGE_BY_PREVIOUS_STAGE" - ], - "type": "string" - }, - "FunnelChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "FunnelChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/FunnelChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "GaugeChartArcConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ForegroundColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "GaugeChartConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ConditionalFormattingOptions": { - "items": { - "$ref": "#/definitions/GaugeChartConditionalFormattingOption" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "GaugeChartConditionalFormattingOption": { - "additionalProperties": false, - "properties": { - "Arc": { - "$ref": "#/definitions/GaugeChartArcConditionalFormatting" - }, - "PrimaryValue": { - "$ref": "#/definitions/GaugeChartPrimaryValueConditionalFormatting" - } - }, - "type": "object" - }, - "GaugeChartConfiguration": { - "additionalProperties": false, - "properties": { - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/GaugeChartFieldWells" - }, - "GaugeChartOptions": { - "$ref": "#/definitions/GaugeChartOptions" - }, - "TooltipOptions": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "GaugeChartFieldWells": { - "additionalProperties": false, - "properties": { - "TargetValues": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "GaugeChartOptions": { - "additionalProperties": false, - "properties": { - "Arc": { - "$ref": "#/definitions/ArcConfiguration" - }, - "ArcAxis": { - "$ref": "#/definitions/ArcAxisConfiguration" - }, - "Comparison": { - "$ref": "#/definitions/ComparisonConfiguration" - }, - "PrimaryValueDisplayType": { - "$ref": "#/definitions/PrimaryValueDisplayType" - }, - "PrimaryValueFontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - } - }, - "type": "object" - }, - "GaugeChartPrimaryValueConditionalFormatting": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/ConditionalFormattingIcon" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "GaugeChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/GaugeChartConfiguration" - }, - "ConditionalFormatting": { - "$ref": "#/definitions/GaugeChartConditionalFormatting" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "GeospatialCoordinateBounds": { - "additionalProperties": false, - "properties": { - "East": { - "maximum": 1800, - "minimum": -1800, - "type": "number" - }, - "North": { - "maximum": 90, - "minimum": -90, - "type": "number" - }, - "South": { - "maximum": 90, - "minimum": -90, - "type": "number" - }, - "West": { - "maximum": 1800, - "minimum": -1800, - "type": "number" - } - }, - "required": [ - "East", - "North", - "South", - "West" - ], - "type": "object" - }, - "GeospatialHeatmapColorScale": { - "additionalProperties": false, - "properties": { - "Colors": { - "items": { - "$ref": "#/definitions/GeospatialHeatmapDataColor" - }, - "maxItems": 2, - "minItems": 2, - "type": "array" - } - }, - "type": "object" - }, - "GeospatialHeatmapConfiguration": { - "additionalProperties": false, - "properties": { - "HeatmapColor": { - "$ref": "#/definitions/GeospatialHeatmapColorScale" - } - }, - "type": "object" - }, - "GeospatialHeatmapDataColor": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - } - }, - "required": [ - "Color" - ], - "type": "object" - }, - "GeospatialMapAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Colors": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Geospatial": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "GeospatialMapConfiguration": { - "additionalProperties": false, - "properties": { - "FieldWells": { - "$ref": "#/definitions/GeospatialMapFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "MapStyleOptions": { - "$ref": "#/definitions/GeospatialMapStyleOptions" - }, - "PointStyleOptions": { - "$ref": "#/definitions/GeospatialPointStyleOptions" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - }, - "WindowOptions": { - "$ref": "#/definitions/GeospatialWindowOptions" - } - }, - "type": "object" - }, - "GeospatialMapFieldWells": { - "additionalProperties": false, - "properties": { - "GeospatialMapAggregatedFieldWells": { - "$ref": "#/definitions/GeospatialMapAggregatedFieldWells" - } - }, - "type": "object" - }, - "GeospatialMapStyleOptions": { - "additionalProperties": false, - "properties": { - "BaseMapStyle": { - "$ref": "#/definitions/BaseMapStyleType" - } - }, - "type": "object" - }, - "GeospatialMapVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/GeospatialMapConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "GeospatialPointStyleOptions": { - "additionalProperties": false, - "properties": { - "ClusterMarkerConfiguration": { - "$ref": "#/definitions/ClusterMarkerConfiguration" - }, - "HeatmapConfiguration": { - "$ref": "#/definitions/GeospatialHeatmapConfiguration" - }, - "SelectedPointStyle": { - "$ref": "#/definitions/GeospatialSelectedPointStyle" - } - }, - "type": "object" - }, - "GeospatialSelectedPointStyle": { - "enum": [ - "POINT", - "CLUSTER", - "HEATMAP" - ], - "type": "string" - }, - "GeospatialWindowOptions": { - "additionalProperties": false, - "properties": { - "Bounds": { - "$ref": "#/definitions/GeospatialCoordinateBounds" - }, - "MapZoomMode": { - "$ref": "#/definitions/MapZoomMode" - } - }, - "type": "object" - }, - "GlobalTableBorderOptions": { - "additionalProperties": false, - "properties": { - "SideSpecificBorder": { - "$ref": "#/definitions/TableSideBorderOptions" - }, - "UniformBorder": { - "$ref": "#/definitions/TableBorderOptions" - } - }, - "type": "object" - }, - "GradientColor": { - "additionalProperties": false, - "properties": { - "Stops": { - "items": { - "$ref": "#/definitions/GradientStop" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "GradientStop": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "DataValue": { - "default": null, - "type": "number" - }, - "GradientOffset": { - "default": 0, - "type": "number" - } - }, - "required": [ - "GradientOffset" - ], - "type": "object" - }, - "GridLayoutCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "ScreenCanvasSizeOptions": { - "$ref": "#/definitions/GridLayoutScreenCanvasSizeOptions" - } - }, - "type": "object" - }, - "GridLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "CanvasSizeOptions": { - "$ref": "#/definitions/GridLayoutCanvasSizeOptions" - }, - "Elements": { - "items": { - "$ref": "#/definitions/GridLayoutElement" - }, - "maxItems": 430, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Elements" - ], - "type": "object" - }, - "GridLayoutElement": { - "additionalProperties": false, - "properties": { - "ColumnIndex": { - "maximum": 35, - "minimum": 0, - "type": "number" - }, - "ColumnSpan": { - "maximum": 36, - "minimum": 1, - "type": "number" - }, - "ElementId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "ElementType": { - "$ref": "#/definitions/LayoutElementType" - }, - "RowIndex": { - "maximum": 9009, - "minimum": 0, - "type": "number" - }, - "RowSpan": { - "maximum": 21, - "minimum": 1, - "type": "number" - } - }, - "required": [ - "ColumnSpan", - "ElementId", - "ElementType", - "RowSpan" - ], - "type": "object" - }, - "GridLayoutScreenCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "OptimizedViewPortWidth": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "ResizeOption": { - "$ref": "#/definitions/ResizeOption" - } - }, - "required": [ - "ResizeOption" - ], - "type": "object" - }, - "GrowthRateComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "PeriodSize": { - "default": 0, - "maximum": 52, - "minimum": 2, - "type": "number" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "HeaderFooterSectionConfiguration": { - "additionalProperties": false, - "properties": { - "Layout": { - "$ref": "#/definitions/SectionLayoutConfiguration" - }, - "SectionId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Style": { - "$ref": "#/definitions/SectionStyle" - } - }, - "required": [ - "Layout", - "SectionId" - ], - "type": "object" - }, - "HeatMapAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Columns": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Rows": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "HeatMapConfiguration": { - "additionalProperties": false, - "properties": { - "ColorScale": { - "$ref": "#/definitions/ColorScale" - }, - "ColumnLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/HeatMapFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "RowLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/HeatMapSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - } - }, - "type": "object" - }, - "HeatMapFieldWells": { - "additionalProperties": false, - "properties": { - "HeatMapAggregatedFieldWells": { - "$ref": "#/definitions/HeatMapAggregatedFieldWells" - } - }, - "type": "object" - }, - "HeatMapSortConfiguration": { - "additionalProperties": false, - "properties": { - "HeatMapColumnItemsLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "HeatMapColumnSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "HeatMapRowItemsLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "HeatMapRowSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "HeatMapVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/HeatMapConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "HistogramAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "HistogramBinOptions": { - "additionalProperties": false, - "properties": { - "BinCount": { - "$ref": "#/definitions/BinCountOptions" - }, - "BinWidth": { - "$ref": "#/definitions/BinWidthOptions" - }, - "SelectedBinType": { - "$ref": "#/definitions/HistogramBinType" - }, - "StartValue": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "HistogramBinType": { - "enum": [ - "BIN_COUNT", - "BIN_WIDTH" - ], - "type": "string" - }, - "HistogramConfiguration": { - "additionalProperties": false, - "properties": { - "BinOptions": { - "$ref": "#/definitions/HistogramBinOptions" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/HistogramFieldWells" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - }, - "XAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "XAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "YAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - } - }, - "type": "object" - }, - "HistogramFieldWells": { - "additionalProperties": false, - "properties": { - "HistogramAggregatedFieldWells": { - "$ref": "#/definitions/HistogramAggregatedFieldWells" - } - }, - "type": "object" - }, - "HistogramVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/HistogramConfiguration" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "HorizontalTextAlignment": { - "enum": [ - "LEFT", - "CENTER", - "RIGHT", - "AUTO" - ], - "type": "string" - }, - "Icon": { - "enum": [ - "CARET_UP", - "CARET_DOWN", - "PLUS", - "MINUS", - "ARROW_UP", - "ARROW_DOWN", - "ARROW_LEFT", - "ARROW_UP_LEFT", - "ARROW_DOWN_LEFT", - "ARROW_RIGHT", - "ARROW_UP_RIGHT", - "ARROW_DOWN_RIGHT", - "FACE_UP", - "FACE_DOWN", - "FACE_FLAT", - "ONE_BAR", - "TWO_BAR", - "THREE_BAR", - "CIRCLE", - "TRIANGLE", - "SQUARE", - "FLAG", - "THUMBS_UP", - "THUMBS_DOWN", - "CHECKMARK", - "X" - ], - "type": "string" - }, - "InnerFilter": { - "additionalProperties": false, - "properties": { - "CategoryInnerFilter": { - "$ref": "#/definitions/CategoryInnerFilter" - } - }, - "type": "object" - }, - "InsightConfiguration": { - "additionalProperties": false, - "properties": { - "Computations": { - "items": { - "$ref": "#/definitions/Computation" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "CustomNarrative": { - "$ref": "#/definitions/CustomNarrativeOptions" - } - }, - "type": "object" - }, - "InsightVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "InsightConfiguration": { - "$ref": "#/definitions/InsightConfiguration" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "DataSetIdentifier", - "VisualId" - ], - "type": "object" - }, - "IntegerDefaultValues": { - "additionalProperties": false, - "properties": { - "DynamicValue": { - "$ref": "#/definitions/DynamicDefaultValue" - }, - "StaticValues": { - "items": { - "type": "number" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "IntegerParameter": { - "additionalProperties": false, - "description": "

An integer parameter.

", - "properties": { - "Name": { - "description": "

The name of the integer parameter.

", - "pattern": "\\S", - "type": "string" - }, - "Values": { - "description": "

The values for the integer parameter.

", - "items": { - "default": 0, - "type": "number" - }, - "type": "array" - } - }, - "required": [ - "Name", - "Values" - ], - "type": "object" - }, - "IntegerParameterDeclaration": { - "additionalProperties": false, - "properties": { - "DefaultValues": { - "$ref": "#/definitions/IntegerDefaultValues" - }, - "MappedDataSetParameters": { - "items": { - "$ref": "#/definitions/MappedDataSetParameter" - }, - "maxItems": 150, - "minItems": 0, - "type": "array" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "ParameterValueType": { - "$ref": "#/definitions/ParameterValueType" - }, - "ValueWhenUnset": { - "$ref": "#/definitions/IntegerValueWhenUnsetConfiguration" - } - }, - "required": [ - "Name", - "ParameterValueType" - ], - "type": "object" - }, - "IntegerValueWhenUnsetConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValue": { - "default": null, - "type": "number" - }, - "ValueWhenUnsetOption": { - "$ref": "#/definitions/ValueWhenUnsetOption" - } - }, - "type": "object" - }, - "ItemsLimitConfiguration": { - "additionalProperties": false, - "properties": { - "ItemsLimit": { - "default": null, - "type": "number" - }, - "OtherCategories": { - "$ref": "#/definitions/OtherCategories" - } - }, - "type": "object" - }, - "KPIActualValueConditionalFormatting": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/ConditionalFormattingIcon" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "KPIComparisonValueConditionalFormatting": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/ConditionalFormattingIcon" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "KPIConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ConditionalFormattingOptions": { - "items": { - "$ref": "#/definitions/KPIConditionalFormattingOption" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "KPIConditionalFormattingOption": { - "additionalProperties": false, - "properties": { - "ActualValue": { - "$ref": "#/definitions/KPIActualValueConditionalFormatting" - }, - "ComparisonValue": { - "$ref": "#/definitions/KPIComparisonValueConditionalFormatting" - }, - "PrimaryValue": { - "$ref": "#/definitions/KPIPrimaryValueConditionalFormatting" - }, - "ProgressBar": { - "$ref": "#/definitions/KPIProgressBarConditionalFormatting" - } - }, - "type": "object" - }, - "KPIConfiguration": { - "additionalProperties": false, - "properties": { - "FieldWells": { - "$ref": "#/definitions/KPIFieldWells" - }, - "KPIOptions": { - "$ref": "#/definitions/KPIOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/KPISortConfiguration" - } - }, - "type": "object" - }, - "KPIFieldWells": { - "additionalProperties": false, - "properties": { - "TargetValues": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TrendGroups": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "KPIOptions": { - "additionalProperties": false, - "properties": { - "Comparison": { - "$ref": "#/definitions/ComparisonConfiguration" - }, - "PrimaryValueDisplayType": { - "$ref": "#/definitions/PrimaryValueDisplayType" - }, - "PrimaryValueFontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "ProgressBar": { - "$ref": "#/definitions/ProgressBarOptions" - }, - "SecondaryValue": { - "$ref": "#/definitions/SecondaryValueOptions" - }, - "SecondaryValueFontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "Sparkline": { - "$ref": "#/definitions/KPISparklineOptions" - }, - "TrendArrows": { - "$ref": "#/definitions/TrendArrowOptions" - }, - "VisualLayoutOptions": { - "$ref": "#/definitions/KPIVisualLayoutOptions" - } - }, - "type": "object" - }, - "KPIPrimaryValueConditionalFormatting": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/ConditionalFormattingIcon" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "KPIProgressBarConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ForegroundColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "KPISortConfiguration": { - "additionalProperties": false, - "properties": { - "TrendGroupSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "KPISparklineOptions": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "TooltipVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Type": { - "$ref": "#/definitions/KPISparklineType" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "KPISparklineType": { - "enum": [ - "LINE", - "AREA" - ], - "type": "string" - }, - "KPIVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/KPIConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "ConditionalFormatting": { - "$ref": "#/definitions/KPIConditionalFormatting" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "KPIVisualLayoutOptions": { - "additionalProperties": false, - "properties": { - "StandardLayout": { - "$ref": "#/definitions/KPIVisualStandardLayout" - } - }, - "type": "object" - }, - "KPIVisualStandardLayout": { - "additionalProperties": false, - "properties": { - "Type": { - "$ref": "#/definitions/KPIVisualStandardLayoutType" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "KPIVisualStandardLayoutType": { - "enum": [ - "CLASSIC", - "VERTICAL" - ], - "type": "string" - }, - "LabelOptions": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "type": "string" - }, - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "Layout": { - "additionalProperties": false, - "properties": { - "Configuration": { - "$ref": "#/definitions/LayoutConfiguration" - } - }, - "required": [ - "Configuration" - ], - "type": "object" - }, - "LayoutConfiguration": { - "additionalProperties": false, - "properties": { - "FreeFormLayout": { - "$ref": "#/definitions/FreeFormLayoutConfiguration" - }, - "GridLayout": { - "$ref": "#/definitions/GridLayoutConfiguration" - }, - "SectionBasedLayout": { - "$ref": "#/definitions/SectionBasedLayoutConfiguration" - } - }, - "type": "object" - }, - "LayoutElementType": { - "enum": [ - "VISUAL", - "FILTER_CONTROL", - "PARAMETER_CONTROL", - "TEXT_BOX", - "IMAGE" - ], - "type": "string" - }, - "LegendOptions": { - "additionalProperties": false, - "properties": { - "Height": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "Position": { - "$ref": "#/definitions/LegendPosition" - }, - "Title": { - "$ref": "#/definitions/LabelOptions" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - }, - "Width": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - } - }, - "type": "object" - }, - "LegendPosition": { - "enum": [ - "AUTO", - "RIGHT", - "BOTTOM", - "TOP" - ], - "type": "string" - }, - "LineChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Colors": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "SmallMultiples": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "LineChartConfiguration": { - "additionalProperties": false, - "properties": { - "ContributionAnalysisDefaults": { - "items": { - "$ref": "#/definitions/ContributionAnalysisDefault" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "DefaultSeriesSettings": { - "$ref": "#/definitions/LineChartDefaultSeriesSettings" - }, - "FieldWells": { - "$ref": "#/definitions/LineChartFieldWells" - }, - "ForecastConfigurations": { - "items": { - "$ref": "#/definitions/ForecastConfiguration" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "PrimaryYAxisDisplayOptions": { - "$ref": "#/definitions/LineSeriesAxisDisplayOptions" - }, - "PrimaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ReferenceLines": { - "items": { - "$ref": "#/definitions/ReferenceLine" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "SecondaryYAxisDisplayOptions": { - "$ref": "#/definitions/LineSeriesAxisDisplayOptions" - }, - "SecondaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "Series": { - "items": { - "$ref": "#/definitions/SeriesItem" - }, - "maxItems": 2000, - "minItems": 0, - "type": "array" - }, - "SingleAxisOptions": { - "$ref": "#/definitions/SingleAxisOptions" - }, - "SmallMultiplesOptions": { - "$ref": "#/definitions/SmallMultiplesOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/LineChartSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "Type": { - "$ref": "#/definitions/LineChartType" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - }, - "XAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "XAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - } - }, - "type": "object" - }, - "LineChartDefaultSeriesSettings": { - "additionalProperties": false, - "properties": { - "AxisBinding": { - "$ref": "#/definitions/AxisBinding" - }, - "LineStyleSettings": { - "$ref": "#/definitions/LineChartLineStyleSettings" - }, - "MarkerStyleSettings": { - "$ref": "#/definitions/LineChartMarkerStyleSettings" - } - }, - "type": "object" - }, - "LineChartFieldWells": { - "additionalProperties": false, - "properties": { - "LineChartAggregatedFieldWells": { - "$ref": "#/definitions/LineChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "LineChartLineStyle": { - "enum": [ - "SOLID", - "DOTTED", - "DASHED" - ], - "type": "string" - }, - "LineChartLineStyleSettings": { - "additionalProperties": false, - "properties": { - "LineInterpolation": { - "$ref": "#/definitions/LineInterpolation" - }, - "LineStyle": { - "$ref": "#/definitions/LineChartLineStyle" - }, - "LineVisibility": { - "$ref": "#/definitions/Visibility" - }, - "LineWidth": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - } - }, - "type": "object" - }, - "LineChartMarkerShape": { - "enum": [ - "CIRCLE", - "TRIANGLE", - "SQUARE", - "DIAMOND", - "ROUNDED_SQUARE" - ], - "type": "string" - }, - "LineChartMarkerStyleSettings": { - "additionalProperties": false, - "properties": { - "MarkerColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "MarkerShape": { - "$ref": "#/definitions/LineChartMarkerShape" - }, - "MarkerSize": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "MarkerVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "LineChartSeriesSettings": { - "additionalProperties": false, - "properties": { - "LineStyleSettings": { - "$ref": "#/definitions/LineChartLineStyleSettings" - }, - "MarkerStyleSettings": { - "$ref": "#/definitions/LineChartMarkerStyleSettings" - } - }, - "type": "object" - }, - "LineChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "ColorItemsLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "SmallMultiplesLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "SmallMultiplesSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "LineChartType": { - "enum": [ - "LINE", - "AREA", - "STACKED_AREA" - ], - "type": "string" - }, - "LineChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/LineChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "LineInterpolation": { - "enum": [ - "LINEAR", - "SMOOTH", - "STEPPED" - ], - "type": "string" - }, - "LineSeriesAxisDisplayOptions": { - "additionalProperties": false, - "properties": { - "AxisOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "MissingDataConfigurations": { - "items": { - "$ref": "#/definitions/MissingDataConfiguration" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ListControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "SearchOptions": { - "$ref": "#/definitions/ListControlSearchOptions" - }, - "SelectAllOptions": { - "$ref": "#/definitions/ListControlSelectAllOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "ListControlSearchOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "ListControlSelectAllOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "LoadingAnimation": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "LocalNavigationConfiguration": { - "additionalProperties": false, - "properties": { - "TargetSheetId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "TargetSheetId" - ], - "type": "object" - }, - "LongFormatText": { - "additionalProperties": false, - "properties": { - "PlainText": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "RichText": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "MapZoomMode": { - "enum": [ - "AUTO", - "MANUAL" - ], - "type": "string" - }, - "MappedDataSetParameter": { - "additionalProperties": false, - "properties": { - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "DataSetParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - } - }, - "required": [ - "DataSetIdentifier", - "DataSetParameterName" - ], - "type": "object" - }, - "MaximumLabelType": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "MaximumMinimumComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "Type": { - "$ref": "#/definitions/MaximumMinimumComputationType" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId", - "Type" - ], - "type": "object" - }, - "MaximumMinimumComputationType": { - "enum": [ - "MAXIMUM", - "MINIMUM" - ], - "type": "string" - }, - "MeasureField": { - "additionalProperties": false, - "properties": { - "CalculatedMeasureField": { - "$ref": "#/definitions/CalculatedMeasureField" - }, - "CategoricalMeasureField": { - "$ref": "#/definitions/CategoricalMeasureField" - }, - "DateMeasureField": { - "$ref": "#/definitions/DateMeasureField" - }, - "NumericalMeasureField": { - "$ref": "#/definitions/NumericalMeasureField" - } - }, - "type": "object" - }, - "MetricComparisonComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "FromValue": { - "$ref": "#/definitions/MeasureField" - }, - "Name": { - "type": "string" - }, - "TargetValue": { - "$ref": "#/definitions/MeasureField" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "MinimumLabelType": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "MissingDataConfiguration": { - "additionalProperties": false, - "properties": { - "TreatmentOption": { - "$ref": "#/definitions/MissingDataTreatmentOption" - } - }, - "type": "object" - }, - "MissingDataTreatmentOption": { - "enum": [ - "INTERPOLATE", - "SHOW_AS_ZERO", - "SHOW_AS_BLANK" - ], - "type": "string" - }, - "NegativeValueConfiguration": { - "additionalProperties": false, - "properties": { - "DisplayMode": { - "$ref": "#/definitions/NegativeValueDisplayMode" - } - }, - "required": [ - "DisplayMode" - ], - "type": "object" - }, - "NegativeValueDisplayMode": { - "enum": [ - "POSITIVE", - "NEGATIVE" - ], - "type": "string" - }, - "NestedFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "IncludeInnerSet": { - "default": false, - "type": "boolean" - }, - "InnerFilter": { - "$ref": "#/definitions/InnerFilter" - } - }, - "required": [ - "Column", - "FilterId", - "IncludeInnerSet", - "InnerFilter" - ], - "type": "object" - }, - "NullValueFormatConfiguration": { - "additionalProperties": false, - "properties": { - "NullString": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "NullString" - ], - "type": "object" - }, - "NumberDisplayFormatConfiguration": { - "additionalProperties": false, - "properties": { - "DecimalPlacesConfiguration": { - "$ref": "#/definitions/DecimalPlacesConfiguration" - }, - "NegativeValueConfiguration": { - "$ref": "#/definitions/NegativeValueConfiguration" - }, - "NullValueFormatConfiguration": { - "$ref": "#/definitions/NullValueFormatConfiguration" - }, - "NumberScale": { - "$ref": "#/definitions/NumberScale" - }, - "Prefix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "SeparatorConfiguration": { - "$ref": "#/definitions/NumericSeparatorConfiguration" - }, - "Suffix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "NumberFormatConfiguration": { - "additionalProperties": false, - "properties": { - "FormatConfiguration": { - "$ref": "#/definitions/NumericFormatConfiguration" - } - }, - "type": "object" - }, - "NumberScale": { - "enum": [ - "NONE", - "AUTO", - "THOUSANDS", - "MILLIONS", - "BILLIONS", - "TRILLIONS" - ], - "type": "string" - }, - "NumericAxisOptions": { - "additionalProperties": false, - "properties": { - "Range": { - "$ref": "#/definitions/AxisDisplayRange" - }, - "Scale": { - "$ref": "#/definitions/AxisScale" - } - }, - "type": "object" - }, - "NumericEqualityDrillDownFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "Value": { - "default": 0, - "type": "number" - } - }, - "required": [ - "Column", - "Value" - ], - "type": "object" - }, - "NumericEqualityFilter": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/AggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "MatchOperator": { - "$ref": "#/definitions/NumericEqualityMatchOperator" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "SelectAllOptions": { - "$ref": "#/definitions/NumericFilterSelectAllOptions" - }, - "Value": { - "default": null, - "type": "number" - } - }, - "required": [ - "Column", - "FilterId", - "MatchOperator", - "NullOption" - ], - "type": "object" - }, - "NumericEqualityMatchOperator": { - "enum": [ - "EQUALS", - "DOES_NOT_EQUAL" - ], - "type": "string" - }, - "NumericFilterSelectAllOptions": { - "enum": [ - "FILTER_ALL_VALUES" - ], - "type": "string" - }, - "NumericFormatConfiguration": { - "additionalProperties": false, - "properties": { - "CurrencyDisplayFormatConfiguration": { - "$ref": "#/definitions/CurrencyDisplayFormatConfiguration" - }, - "NumberDisplayFormatConfiguration": { - "$ref": "#/definitions/NumberDisplayFormatConfiguration" - }, - "PercentageDisplayFormatConfiguration": { - "$ref": "#/definitions/PercentageDisplayFormatConfiguration" - } - }, - "type": "object" - }, - "NumericRangeFilter": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/AggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "IncludeMaximum": { - "default": null, - "type": "boolean" - }, - "IncludeMinimum": { - "default": null, - "type": "boolean" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "RangeMaximum": { - "$ref": "#/definitions/NumericRangeFilterValue" - }, - "RangeMinimum": { - "$ref": "#/definitions/NumericRangeFilterValue" - }, - "SelectAllOptions": { - "$ref": "#/definitions/NumericFilterSelectAllOptions" - } - }, - "required": [ - "Column", - "FilterId", - "NullOption" - ], - "type": "object" - }, - "NumericRangeFilterValue": { - "additionalProperties": false, - "properties": { - "Parameter": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "StaticValue": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "NumericSeparatorConfiguration": { - "additionalProperties": false, - "properties": { - "DecimalSeparator": { - "$ref": "#/definitions/NumericSeparatorSymbol" - }, - "ThousandsSeparator": { - "$ref": "#/definitions/ThousandSeparatorOptions" - } - }, - "type": "object" - }, - "NumericSeparatorSymbol": { - "enum": [ - "COMMA", - "DOT", - "SPACE" - ], - "type": "string" - }, - "NumericalAggregationFunction": { - "additionalProperties": false, - "properties": { - "PercentileAggregation": { - "$ref": "#/definitions/PercentileAggregation" - }, - "SimpleNumericalAggregation": { - "$ref": "#/definitions/SimpleNumericalAggregationFunction" - } - }, - "type": "object" - }, - "NumericalDimensionField": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/NumberFormatConfiguration" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "NumericalMeasureField": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/NumericalAggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/NumberFormatConfiguration" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "OtherCategories": { - "enum": [ - "INCLUDE", - "EXCLUDE" - ], - "type": "string" - }, - "PaginationConfiguration": { - "additionalProperties": false, - "properties": { - "PageNumber": { - "minimum": 0, - "type": "number" - }, - "PageSize": { - "default": null, - "type": "number" - } - }, - "required": [ - "PageNumber", - "PageSize" - ], - "type": "object" - }, - "PanelBorderStyle": { - "enum": [ - "SOLID", - "DASHED", - "DOTTED" - ], - "type": "string" - }, - "PanelConfiguration": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", - "type": "string" - }, - "BackgroundVisibility": { - "$ref": "#/definitions/Visibility" - }, - "BorderColor": { - "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", - "type": "string" - }, - "BorderStyle": { - "$ref": "#/definitions/PanelBorderStyle" - }, - "BorderThickness": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "BorderVisibility": { - "$ref": "#/definitions/Visibility" - }, - "GutterSpacing": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "GutterVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Title": { - "$ref": "#/definitions/PanelTitleOptions" - } - }, - "type": "object" - }, - "PanelTitleOptions": { - "additionalProperties": false, - "properties": { - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "HorizontalTextAlignment": { - "$ref": "#/definitions/HorizontalTextAlignment" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "PaperOrientation": { - "enum": [ - "PORTRAIT", - "LANDSCAPE" - ], - "type": "string" - }, - "PaperSize": { - "enum": [ - "US_LETTER", - "US_LEGAL", - "US_TABLOID_LEDGER", - "A0", - "A1", - "A2", - "A3", - "A4", - "A5", - "JIS_B4", - "JIS_B5" - ], - "type": "string" - }, - "ParameterControl": { - "additionalProperties": false, - "properties": { - "DateTimePicker": { - "$ref": "#/definitions/ParameterDateTimePickerControl" - }, - "Dropdown": { - "$ref": "#/definitions/ParameterDropDownControl" - }, - "List": { - "$ref": "#/definitions/ParameterListControl" - }, - "Slider": { - "$ref": "#/definitions/ParameterSliderControl" - }, - "TextArea": { - "$ref": "#/definitions/ParameterTextAreaControl" - }, - "TextField": { - "$ref": "#/definitions/ParameterTextFieldControl" - } - }, - "type": "object" - }, - "ParameterDateTimePickerControl": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/DateTimePickerControlDisplayOptions" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ParameterControlId", - "SourceParameterName", - "Title" - ], - "type": "object" - }, - "ParameterDeclaration": { - "additionalProperties": false, - "properties": { - "DateTimeParameterDeclaration": { - "$ref": "#/definitions/DateTimeParameterDeclaration" - }, - "DecimalParameterDeclaration": { - "$ref": "#/definitions/DecimalParameterDeclaration" - }, - "IntegerParameterDeclaration": { - "$ref": "#/definitions/IntegerParameterDeclaration" - }, - "StringParameterDeclaration": { - "$ref": "#/definitions/StringParameterDeclaration" - } - }, - "type": "object" - }, - "ParameterDropDownControl": { - "additionalProperties": false, - "properties": { - "CascadingControlConfiguration": { - "$ref": "#/definitions/CascadingControlConfiguration" - }, - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/DropDownControlDisplayOptions" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SelectableValues": { - "$ref": "#/definitions/ParameterSelectableValues" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "required": [ - "ParameterControlId", - "SourceParameterName", - "Title" - ], - "type": "object" - }, - "ParameterListControl": { - "additionalProperties": false, - "properties": { - "CascadingControlConfiguration": { - "$ref": "#/definitions/CascadingControlConfiguration" - }, - "DisplayOptions": { - "$ref": "#/definitions/ListControlDisplayOptions" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SelectableValues": { - "$ref": "#/definitions/ParameterSelectableValues" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "required": [ - "ParameterControlId", - "SourceParameterName", - "Title" - ], - "type": "object" - }, - "ParameterSelectableValues": { - "additionalProperties": false, - "properties": { - "LinkToDataSetColumn": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "Values": { - "items": { - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ParameterSliderControl": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/SliderControlDisplayOptions" - }, - "MaximumValue": { - "default": 0, - "type": "number" - }, - "MinimumValue": { - "default": 0, - "type": "number" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "StepSize": { - "default": 0, - "type": "number" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "MaximumValue", - "MinimumValue", - "ParameterControlId", - "SourceParameterName", - "StepSize", - "Title" - ], - "type": "object" - }, - "ParameterTextAreaControl": { - "additionalProperties": false, - "properties": { - "Delimiter": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "DisplayOptions": { - "$ref": "#/definitions/TextAreaControlDisplayOptions" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ParameterControlId", - "SourceParameterName", - "Title" - ], - "type": "object" - }, - "ParameterTextFieldControl": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/TextFieldControlDisplayOptions" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ParameterControlId", - "SourceParameterName", - "Title" - ], - "type": "object" - }, - "ParameterValueType": { - "enum": [ - "MULTI_VALUED", - "SINGLE_VALUED" - ], - "type": "string" - }, - "Parameters": { - "additionalProperties": false, - "description": "

A list of Amazon QuickSight parameters and the list's override values.

", - "properties": { - "DateTimeParameters": { - "description": "

The parameters that have a data type of date-time.

", - "items": { - "$ref": "#/definitions/DateTimeParameter" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "DecimalParameters": { - "description": "

The parameters that have a data type of decimal.

", - "items": { - "$ref": "#/definitions/DecimalParameter" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "IntegerParameters": { - "description": "

The parameters that have a data type of integer.

", - "items": { - "$ref": "#/definitions/IntegerParameter" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "StringParameters": { - "description": "

The parameters that have a data type of string.

", - "items": { - "$ref": "#/definitions/StringParameter" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PercentVisibleRange": { - "additionalProperties": false, - "properties": { - "From": { - "default": null, - "maximum": 100, - "minimum": 0, - "type": "number" - }, - "To": { - "default": null, - "maximum": 100, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "PercentageDisplayFormatConfiguration": { - "additionalProperties": false, - "properties": { - "DecimalPlacesConfiguration": { - "$ref": "#/definitions/DecimalPlacesConfiguration" - }, - "NegativeValueConfiguration": { - "$ref": "#/definitions/NegativeValueConfiguration" - }, - "NullValueFormatConfiguration": { - "$ref": "#/definitions/NullValueFormatConfiguration" - }, - "Prefix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "SeparatorConfiguration": { - "$ref": "#/definitions/NumericSeparatorConfiguration" - }, - "Suffix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "PercentileAggregation": { - "additionalProperties": false, - "properties": { - "PercentileValue": { - "maximum": 100, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "PeriodOverPeriodComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "PeriodToDateComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "PeriodTimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "PieChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "SmallMultiples": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PieChartConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ContributionAnalysisDefaults": { - "items": { - "$ref": "#/definitions/ContributionAnalysisDefault" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "DonutOptions": { - "$ref": "#/definitions/DonutOptions" - }, - "FieldWells": { - "$ref": "#/definitions/PieChartFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "SmallMultiplesOptions": { - "$ref": "#/definitions/SmallMultiplesOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/PieChartSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "ValueLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "PieChartFieldWells": { - "additionalProperties": false, - "properties": { - "PieChartAggregatedFieldWells": { - "$ref": "#/definitions/PieChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "PieChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "SmallMultiplesLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "SmallMultiplesSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PieChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/PieChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "PivotFieldSortOptions": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "SortBy": { - "$ref": "#/definitions/PivotTableSortBy" - } - }, - "required": [ - "FieldId", - "SortBy" - ], - "type": "object" - }, - "PivotTableAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Columns": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 40, - "minItems": 0, - "type": "array" - }, - "Rows": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 40, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 40, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PivotTableCellConditionalFormatting": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Scope": { - "$ref": "#/definitions/PivotTableConditionalFormattingScope" - }, - "Scopes": { - "items": { - "$ref": "#/definitions/PivotTableConditionalFormattingScope" - }, - "maxItems": 3, - "minItems": 0, - "type": "array" - }, - "TextFormat": { - "$ref": "#/definitions/TextConditionalFormat" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "PivotTableConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ConditionalFormattingOptions": { - "items": { - "$ref": "#/definitions/PivotTableConditionalFormattingOption" - }, - "maxItems": 500, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PivotTableConditionalFormattingOption": { - "additionalProperties": false, - "properties": { - "Cell": { - "$ref": "#/definitions/PivotTableCellConditionalFormatting" - } - }, - "type": "object" - }, - "PivotTableConditionalFormattingScope": { - "additionalProperties": false, - "properties": { - "Role": { - "$ref": "#/definitions/PivotTableConditionalFormattingScopeRole" - } - }, - "type": "object" - }, - "PivotTableConditionalFormattingScopeRole": { - "enum": [ - "FIELD", - "FIELD_TOTAL", - "GRAND_TOTAL" - ], - "type": "string" - }, - "PivotTableConfiguration": { - "additionalProperties": false, - "properties": { - "FieldOptions": { - "$ref": "#/definitions/PivotTableFieldOptions" - }, - "FieldWells": { - "$ref": "#/definitions/PivotTableFieldWells" - }, - "PaginatedReportOptions": { - "$ref": "#/definitions/PivotTablePaginatedReportOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/PivotTableSortConfiguration" - }, - "TableOptions": { - "$ref": "#/definitions/PivotTableOptions" - }, - "TotalOptions": { - "$ref": "#/definitions/PivotTableTotalOptions" - } - }, - "type": "object" - }, - "PivotTableDataPathOption": { - "additionalProperties": false, - "properties": { - "DataPathList": { - "items": { - "$ref": "#/definitions/DataPathValue" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "Width": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - } - }, - "required": [ - "DataPathList" - ], - "type": "object" - }, - "PivotTableDataPathType": { - "enum": [ - "HIERARCHY_ROWS_LAYOUT_COLUMN", - "MULTIPLE_ROW_METRICS_COLUMN", - "EMPTY_COLUMN_HEADER", - "COUNT_METRIC_COLUMN" - ], - "type": "string" - }, - "PivotTableFieldCollapseState": { - "enum": [ - "COLLAPSED", - "EXPANDED" - ], - "type": "string" - }, - "PivotTableFieldCollapseStateOption": { - "additionalProperties": false, - "properties": { - "State": { - "$ref": "#/definitions/PivotTableFieldCollapseState" - }, - "Target": { - "$ref": "#/definitions/PivotTableFieldCollapseStateTarget" - } - }, - "required": [ - "Target" - ], - "type": "object" - }, - "PivotTableFieldCollapseStateTarget": { - "additionalProperties": false, - "properties": { - "FieldDataPathValues": { - "items": { - "$ref": "#/definitions/DataPathValue" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "FieldId": { - "type": "string" - } - }, - "type": "object" - }, - "PivotTableFieldOption": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "PivotTableFieldOptions": { - "additionalProperties": false, - "properties": { - "CollapseStateOptions": { - "items": { - "$ref": "#/definitions/PivotTableFieldCollapseStateOption" - }, - "type": "array" - }, - "DataPathOptions": { - "items": { - "$ref": "#/definitions/PivotTableDataPathOption" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "SelectedFieldOptions": { - "items": { - "$ref": "#/definitions/PivotTableFieldOption" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PivotTableFieldSubtotalOptions": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "PivotTableFieldWells": { - "additionalProperties": false, - "properties": { - "PivotTableAggregatedFieldWells": { - "$ref": "#/definitions/PivotTableAggregatedFieldWells" - } - }, - "type": "object" - }, - "PivotTableMetricPlacement": { - "enum": [ - "ROW", - "COLUMN" - ], - "type": "string" - }, - "PivotTableOptions": { - "additionalProperties": false, - "properties": { - "CellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "CollapsedRowDimensionsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "ColumnHeaderStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "ColumnNamesVisibility": { - "$ref": "#/definitions/Visibility" - }, - "DefaultCellWidth": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "MetricPlacement": { - "$ref": "#/definitions/PivotTableMetricPlacement" - }, - "RowAlternateColorOptions": { - "$ref": "#/definitions/RowAlternateColorOptions" - }, - "RowFieldNamesStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "RowHeaderStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "RowsLabelOptions": { - "$ref": "#/definitions/PivotTableRowsLabelOptions" - }, - "RowsLayout": { - "$ref": "#/definitions/PivotTableRowsLayout" - }, - "SingleMetricVisibility": { - "$ref": "#/definitions/Visibility" - }, - "ToggleButtonsVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "PivotTablePaginatedReportOptions": { - "additionalProperties": false, - "properties": { - "OverflowColumnHeaderVisibility": { - "$ref": "#/definitions/Visibility" - }, - "VerticalOverflowVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "PivotTableRowsLabelOptions": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "PivotTableRowsLayout": { - "enum": [ - "TABULAR", - "HIERARCHY" - ], - "type": "string" - }, - "PivotTableSortBy": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnSort" - }, - "DataPath": { - "$ref": "#/definitions/DataPathSort" - }, - "Field": { - "$ref": "#/definitions/FieldSort" - } - }, - "type": "object" - }, - "PivotTableSortConfiguration": { - "additionalProperties": false, - "properties": { - "FieldSortOptions": { - "items": { - "$ref": "#/definitions/PivotFieldSortOptions" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PivotTableSubtotalLevel": { - "enum": [ - "ALL", - "CUSTOM", - "LAST" - ], - "type": "string" - }, - "PivotTableTotalOptions": { - "additionalProperties": false, - "properties": { - "ColumnSubtotalOptions": { - "$ref": "#/definitions/SubtotalOptions" - }, - "ColumnTotalOptions": { - "$ref": "#/definitions/PivotTotalOptions" - }, - "RowSubtotalOptions": { - "$ref": "#/definitions/SubtotalOptions" - }, - "RowTotalOptions": { - "$ref": "#/definitions/PivotTotalOptions" - } - }, - "type": "object" - }, - "PivotTableVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/PivotTableConfiguration" - }, - "ConditionalFormatting": { - "$ref": "#/definitions/PivotTableConditionalFormatting" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "PivotTotalOptions": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "type": "string" - }, - "MetricHeaderCellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "Placement": { - "$ref": "#/definitions/TableTotalsPlacement" - }, - "ScrollStatus": { - "$ref": "#/definitions/TableTotalsScrollStatus" - }, - "TotalAggregationOptions": { - "items": { - "$ref": "#/definitions/TotalAggregationOption" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TotalCellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "TotalsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "ValueCellStyle": { - "$ref": "#/definitions/TableCellStyle" - } - }, - "type": "object" - }, - "PredefinedHierarchy": { - "additionalProperties": false, - "properties": { - "Columns": { - "items": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "DrillDownFilters": { - "items": { - "$ref": "#/definitions/DrillDownFilter" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Columns", - "HierarchyId" - ], - "type": "object" - }, - "PrimaryValueDisplayType": { - "enum": [ - "HIDDEN", - "COMPARISON", - "ACTUAL" - ], - "type": "string" - }, - "ProgressBarOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "QueryExecutionMode": { - "enum": [ - "AUTO", - "MANUAL" - ], - "type": "string" - }, - "QueryExecutionOptions": { - "additionalProperties": false, - "properties": { - "QueryExecutionMode": { - "$ref": "#/definitions/QueryExecutionMode" - } - }, - "type": "object" - }, - "RadarChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Color": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "RadarChartAreaStyleSettings": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "RadarChartAxesRangeScale": { - "enum": [ - "AUTO", - "INDEPENDENT", - "SHARED" - ], - "type": "string" - }, - "RadarChartConfiguration": { - "additionalProperties": false, - "properties": { - "AlternateBandColorsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "AlternateBandEvenColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "AlternateBandOddColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "AxesRangeScale": { - "$ref": "#/definitions/RadarChartAxesRangeScale" - }, - "BaseSeriesSettings": { - "$ref": "#/definitions/RadarChartSeriesSettings" - }, - "CategoryAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ColorAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "ColorLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/RadarChartFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "Shape": { - "$ref": "#/definitions/RadarChartShape" - }, - "SortConfiguration": { - "$ref": "#/definitions/RadarChartSortConfiguration" - }, - "StartAngle": { - "maximum": 360, - "minimum": -360, - "type": "number" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "RadarChartFieldWells": { - "additionalProperties": false, - "properties": { - "RadarChartAggregatedFieldWells": { - "$ref": "#/definitions/RadarChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "RadarChartSeriesSettings": { - "additionalProperties": false, - "properties": { - "AreaStyleSettings": { - "$ref": "#/definitions/RadarChartAreaStyleSettings" - } - }, - "type": "object" - }, - "RadarChartShape": { - "enum": [ - "CIRCLE", - "POLYGON" - ], - "type": "string" - }, - "RadarChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "ColorItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "ColorSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "RadarChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/RadarChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "RangeEndsLabelType": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "ReferenceLine": { - "additionalProperties": false, - "properties": { - "DataConfiguration": { - "$ref": "#/definitions/ReferenceLineDataConfiguration" - }, - "LabelConfiguration": { - "$ref": "#/definitions/ReferenceLineLabelConfiguration" - }, - "Status": { - "$ref": "#/definitions/WidgetStatus" - }, - "StyleConfiguration": { - "$ref": "#/definitions/ReferenceLineStyleConfiguration" - } - }, - "required": [ - "DataConfiguration" - ], - "type": "object" - }, - "ReferenceLineCustomLabelConfiguration": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "pattern": "\\S", - "type": "string" - } - }, - "required": [ - "CustomLabel" - ], - "type": "object" - }, - "ReferenceLineDataConfiguration": { - "additionalProperties": false, - "properties": { - "AxisBinding": { - "$ref": "#/definitions/AxisBinding" - }, - "DynamicConfiguration": { - "$ref": "#/definitions/ReferenceLineDynamicDataConfiguration" - }, - "SeriesType": { - "$ref": "#/definitions/ReferenceLineSeriesType" - }, - "StaticConfiguration": { - "$ref": "#/definitions/ReferenceLineStaticDataConfiguration" - } - }, - "type": "object" - }, - "ReferenceLineDynamicDataConfiguration": { - "additionalProperties": false, - "properties": { - "Calculation": { - "$ref": "#/definitions/NumericalAggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "MeasureAggregationFunction": { - "$ref": "#/definitions/AggregationFunction" - } - }, - "required": [ - "Calculation", - "Column" - ], - "type": "object" - }, - "ReferenceLineLabelConfiguration": { - "additionalProperties": false, - "properties": { - "CustomLabelConfiguration": { - "$ref": "#/definitions/ReferenceLineCustomLabelConfiguration" - }, - "FontColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "HorizontalPosition": { - "$ref": "#/definitions/ReferenceLineLabelHorizontalPosition" - }, - "ValueLabelConfiguration": { - "$ref": "#/definitions/ReferenceLineValueLabelConfiguration" - }, - "VerticalPosition": { - "$ref": "#/definitions/ReferenceLineLabelVerticalPosition" - } - }, - "type": "object" - }, - "ReferenceLineLabelHorizontalPosition": { - "enum": [ - "LEFT", - "CENTER", - "RIGHT" - ], - "type": "string" - }, - "ReferenceLineLabelVerticalPosition": { - "enum": [ - "ABOVE", - "BELOW" - ], - "type": "string" - }, - "ReferenceLinePatternType": { - "enum": [ - "SOLID", - "DASHED", - "DOTTED" - ], - "type": "string" - }, - "ReferenceLineSeriesType": { - "enum": [ - "BAR", - "LINE" - ], - "type": "string" - }, - "ReferenceLineStaticDataConfiguration": { - "additionalProperties": false, - "properties": { - "Value": { - "default": 0, - "type": "number" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "ReferenceLineStyleConfiguration": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Pattern": { - "$ref": "#/definitions/ReferenceLinePatternType" - } - }, - "type": "object" - }, - "ReferenceLineValueLabelConfiguration": { - "additionalProperties": false, - "properties": { - "FormatConfiguration": { - "$ref": "#/definitions/NumericFormatConfiguration" - }, - "RelativePosition": { - "$ref": "#/definitions/ReferenceLineValueLabelRelativePosition" - } - }, - "type": "object" - }, - "ReferenceLineValueLabelRelativePosition": { - "enum": [ - "BEFORE_CUSTOM_LABEL", - "AFTER_CUSTOM_LABEL" - ], - "type": "string" - }, - "RelativeDateTimeControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "DateTimeFormat": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "RelativeDateType": { - "enum": [ - "PREVIOUS", - "THIS", - "LAST", - "NOW", - "NEXT" - ], - "type": "string" - }, - "RelativeDatesFilter": { - "additionalProperties": false, - "properties": { - "AnchorDateConfiguration": { - "$ref": "#/definitions/AnchorDateConfiguration" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "ExcludePeriodConfiguration": { - "$ref": "#/definitions/ExcludePeriodConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "MinimumGranularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "RelativeDateType": { - "$ref": "#/definitions/RelativeDateType" - }, - "RelativeDateValue": { - "default": null, - "type": "number" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - } - }, - "required": [ - "AnchorDateConfiguration", - "Column", - "FilterId", - "NullOption", - "RelativeDateType", - "TimeGranularity" - ], - "type": "object" - }, - "RelativeFontSize": { - "enum": [ - "EXTRA_SMALL", - "SMALL", - "MEDIUM", - "LARGE", - "EXTRA_LARGE" - ], - "type": "string" - }, - "ResizeOption": { - "enum": [ - "FIXED", - "RESPONSIVE" - ], - "type": "string" - }, - "ResourcePermission": { - "additionalProperties": false, - "description": "

Permission for the resource.

", - "properties": { - "Actions": { - "description": "

The IAM action to grant or revoke permissions on.

", - "items": { - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - }, - "Principal": { - "description": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Actions", - "Principal" - ], - "type": "object" - }, - "ResourceStatus": { - "enum": [ - "CREATION_IN_PROGRESS", - "CREATION_SUCCESSFUL", - "CREATION_FAILED", - "UPDATE_IN_PROGRESS", - "UPDATE_SUCCESSFUL", - "UPDATE_FAILED", - "DELETED" - ], - "type": "string" - }, - "RollingDateConfiguration": { - "additionalProperties": false, - "properties": { - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Expression" - ], - "type": "object" - }, - "RowAlternateColorOptions": { - "additionalProperties": false, - "properties": { - "RowAlternateColors": { - "items": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Status": { - "$ref": "#/definitions/WidgetStatus" - }, - "UsePrimaryBackgroundColor": { - "$ref": "#/definitions/WidgetStatus" - } - }, - "type": "object" - }, - "SameSheetTargetVisualConfiguration": { - "additionalProperties": false, - "properties": { - "TargetVisualOptions": { - "$ref": "#/definitions/TargetVisualOptions" - }, - "TargetVisuals": { - "items": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "SankeyDiagramAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Destination": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Source": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Weight": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "SankeyDiagramChartConfiguration": { - "additionalProperties": false, - "properties": { - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/SankeyDiagramFieldWells" - }, - "SortConfiguration": { - "$ref": "#/definitions/SankeyDiagramSortConfiguration" - } - }, - "type": "object" - }, - "SankeyDiagramFieldWells": { - "additionalProperties": false, - "properties": { - "SankeyDiagramAggregatedFieldWells": { - "$ref": "#/definitions/SankeyDiagramAggregatedFieldWells" - } - }, - "type": "object" - }, - "SankeyDiagramSortConfiguration": { - "additionalProperties": false, - "properties": { - "DestinationItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "SourceItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "WeightSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "SankeyDiagramVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/SankeyDiagramChartConfiguration" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "ScatterPlotCategoricallyAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Label": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Size": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "XAxis": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "YAxis": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ScatterPlotConfiguration": { - "additionalProperties": false, - "properties": { - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/ScatterPlotFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - }, - "XAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "XAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "YAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "YAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - } - }, - "type": "object" - }, - "ScatterPlotFieldWells": { - "additionalProperties": false, - "properties": { - "ScatterPlotCategoricallyAggregatedFieldWells": { - "$ref": "#/definitions/ScatterPlotCategoricallyAggregatedFieldWells" - }, - "ScatterPlotUnaggregatedFieldWells": { - "$ref": "#/definitions/ScatterPlotUnaggregatedFieldWells" - } - }, - "type": "object" - }, - "ScatterPlotUnaggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Label": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Size": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "XAxis": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "YAxis": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ScatterPlotVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/ScatterPlotConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "ScrollBarOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - }, - "VisibleRange": { - "$ref": "#/definitions/VisibleRangeOptions" - } - }, - "type": "object" - }, - "SecondaryValueOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "SectionAfterPageBreak": { - "additionalProperties": false, - "properties": { - "Status": { - "$ref": "#/definitions/SectionPageBreakStatus" - } - }, - "type": "object" - }, - "SectionBasedLayoutCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "PaperCanvasSizeOptions": { - "$ref": "#/definitions/SectionBasedLayoutPaperCanvasSizeOptions" - } - }, - "type": "object" - }, - "SectionBasedLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "BodySections": { - "items": { - "$ref": "#/definitions/BodySectionConfiguration" - }, - "maxItems": 28, - "minItems": 0, - "type": "array" - }, - "CanvasSizeOptions": { - "$ref": "#/definitions/SectionBasedLayoutCanvasSizeOptions" - }, - "FooterSections": { - "items": { - "$ref": "#/definitions/HeaderFooterSectionConfiguration" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "HeaderSections": { - "items": { - "$ref": "#/definitions/HeaderFooterSectionConfiguration" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "BodySections", - "CanvasSizeOptions", - "FooterSections", - "HeaderSections" - ], - "type": "object" - }, - "SectionBasedLayoutPaperCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "PaperMargin": { - "$ref": "#/definitions/Spacing" - }, - "PaperOrientation": { - "$ref": "#/definitions/PaperOrientation" - }, - "PaperSize": { - "$ref": "#/definitions/PaperSize" - } - }, - "type": "object" - }, - "SectionLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "FreeFormLayout": { - "$ref": "#/definitions/FreeFormSectionLayoutConfiguration" - } - }, - "required": [ - "FreeFormLayout" - ], - "type": "object" - }, - "SectionPageBreakConfiguration": { - "additionalProperties": false, - "properties": { - "After": { - "$ref": "#/definitions/SectionAfterPageBreak" - } - }, - "type": "object" - }, - "SectionPageBreakStatus": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "SectionStyle": { - "additionalProperties": false, - "properties": { - "Height": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "Padding": { - "$ref": "#/definitions/Spacing" - } - }, - "type": "object" - }, - "SelectAllValueOptions": { - "enum": [ - "ALL_VALUES" - ], - "type": "string" - }, - "SelectedFieldOptions": { - "enum": [ - "ALL_FIELDS" - ], - "type": "string" - }, - "SelectedSheetsFilterScopeConfiguration": { - "additionalProperties": false, - "properties": { - "SheetVisualScopingConfigurations": { - "items": { - "$ref": "#/definitions/SheetVisualScopingConfiguration" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "SelectedTooltipType": { - "enum": [ - "BASIC", - "DETAILED" - ], - "type": "string" - }, - "SeriesItem": { - "additionalProperties": false, - "properties": { - "DataFieldSeriesItem": { - "$ref": "#/definitions/DataFieldSeriesItem" - }, - "FieldSeriesItem": { - "$ref": "#/definitions/FieldSeriesItem" - } - }, - "type": "object" - }, - "SetParameterValueConfiguration": { - "additionalProperties": false, - "properties": { - "DestinationParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Value": { - "$ref": "#/definitions/DestinationParameterValueConfiguration" - } - }, - "required": [ - "DestinationParameterName", - "Value" - ], - "type": "object" - }, - "ShapeConditionalFormat": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "required": [ - "BackgroundColor" - ], - "type": "object" - }, - "Sheet": { - "additionalProperties": false, - "description": "

A sheet, which is an object that contains a set of visuals that\n are viewed together on one page in Amazon QuickSight. Every analysis and dashboard\n contains at least one sheet. Each sheet contains at least one visualization widget, for\n example a chart, pivot table, or narrative insight. Sheets can be associated with other\n components, such as controls, filters, and so on.

", - "properties": { - "Name": { - "description": "

The name of a sheet. This name is displayed on the sheet's tab in the Amazon QuickSight\n console.

", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "SheetId": { - "description": "

The unique identifier associated with a sheet.

", - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "type": "object" - }, - "SheetContentType": { - "enum": [ - "PAGINATED", - "INTERACTIVE" - ], - "type": "string" - }, - "SheetControlDateTimePickerType": { - "enum": [ - "SINGLE_VALUED", - "DATE_RANGE" - ], - "type": "string" - }, - "SheetControlInfoIconLabelOptions": { - "additionalProperties": false, - "properties": { - "InfoIconText": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "SheetControlLayout": { - "additionalProperties": false, - "properties": { - "Configuration": { - "$ref": "#/definitions/SheetControlLayoutConfiguration" - } - }, - "required": [ - "Configuration" - ], - "type": "object" - }, - "SheetControlLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "GridLayout": { - "$ref": "#/definitions/GridLayoutConfiguration" - } - }, - "type": "object" - }, - "SheetControlListType": { - "enum": [ - "MULTI_SELECT", - "SINGLE_SELECT" - ], - "type": "string" - }, - "SheetControlSliderType": { - "enum": [ - "SINGLE_POINT", - "RANGE" - ], - "type": "string" - }, - "SheetDefinition": { - "additionalProperties": false, - "properties": { - "ContentType": { - "$ref": "#/definitions/SheetContentType" - }, - "Description": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "FilterControls": { - "items": { - "$ref": "#/definitions/FilterControl" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Layouts": { - "items": { - "$ref": "#/definitions/Layout" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "ParameterControls": { - "items": { - "$ref": "#/definitions/ParameterControl" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "SheetControlLayouts": { - "items": { - "$ref": "#/definitions/SheetControlLayout" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "SheetId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "TextBoxes": { - "items": { - "$ref": "#/definitions/SheetTextBox" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "Title": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Visuals": { - "items": { - "$ref": "#/definitions/Visual" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "SheetId" - ], - "type": "object" - }, - "SheetElementConfigurationOverrides": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "SheetElementRenderingRule": { - "additionalProperties": false, - "properties": { - "ConfigurationOverrides": { - "$ref": "#/definitions/SheetElementConfigurationOverrides" - }, - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ConfigurationOverrides", - "Expression" - ], - "type": "object" - }, - "SheetTextBox": { - "additionalProperties": false, - "properties": { - "Content": { - "maxLength": 150000, - "minLength": 0, - "type": "string" - }, - "SheetTextBoxId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "SheetTextBoxId" - ], - "type": "object" - }, - "SheetVisualScopingConfiguration": { - "additionalProperties": false, - "properties": { - "Scope": { - "$ref": "#/definitions/FilterVisualScope" - }, - "SheetId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "VisualIds": { - "items": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Scope", - "SheetId" - ], - "type": "object" - }, - "ShortFormatText": { - "additionalProperties": false, - "properties": { - "PlainText": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "RichText": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "SimpleAttributeAggregationFunction": { - "enum": [ - "UNIQUE_VALUE" - ], - "type": "string" - }, - "SimpleClusterMarker": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - } - }, - "type": "object" - }, - "SimpleNumericalAggregationFunction": { - "enum": [ - "SUM", - "AVERAGE", - "MIN", - "MAX", - "COUNT", - "DISTINCT_COUNT", - "VAR", - "VARP", - "STDEV", - "STDEVP", - "MEDIAN" - ], - "type": "string" - }, - "SimpleTotalAggregationFunction": { - "enum": [ - "DEFAULT", - "SUM", - "AVERAGE", - "MIN", - "MAX", - "NONE" - ], - "type": "string" - }, - "SingleAxisOptions": { - "additionalProperties": false, - "properties": { - "YAxisOptions": { - "$ref": "#/definitions/YAxisOptions" - } - }, - "type": "object" - }, - "SingleYAxisOption": { - "enum": [ - "PRIMARY_Y_AXIS" - ], - "type": "string" - }, - "SliderControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "SmallMultiplesAxisPlacement": { - "enum": [ - "OUTSIDE", - "INSIDE" - ], - "type": "string" - }, - "SmallMultiplesAxisProperties": { - "additionalProperties": false, - "properties": { - "Placement": { - "$ref": "#/definitions/SmallMultiplesAxisPlacement" - }, - "Scale": { - "$ref": "#/definitions/SmallMultiplesAxisScale" - } - }, - "type": "object" - }, - "SmallMultiplesAxisScale": { - "enum": [ - "SHARED", - "INDEPENDENT" - ], - "type": "string" - }, - "SmallMultiplesOptions": { - "additionalProperties": false, - "properties": { - "MaxVisibleColumns": { - "maximum": 10, - "minimum": 1, - "type": "number" - }, - "MaxVisibleRows": { - "maximum": 10, - "minimum": 1, - "type": "number" - }, - "PanelConfiguration": { - "$ref": "#/definitions/PanelConfiguration" - }, - "XAxis": { - "$ref": "#/definitions/SmallMultiplesAxisProperties" - }, - "YAxis": { - "$ref": "#/definitions/SmallMultiplesAxisProperties" - } - }, - "type": "object" - }, - "SortDirection": { - "enum": [ - "ASC", - "DESC" - ], - "type": "string" - }, - "Spacing": { - "additionalProperties": false, - "properties": { - "Bottom": { - "description": "String based length that is composed of value and unit", - "type": "string" - }, - "Left": { - "description": "String based length that is composed of value and unit", - "type": "string" - }, - "Right": { - "description": "String based length that is composed of value and unit", - "type": "string" - }, - "Top": { - "description": "String based length that is composed of value and unit", - "type": "string" - } - }, - "type": "object" - }, - "SpecialValue": { - "enum": [ - "EMPTY", - "NULL", - "OTHER" - ], - "type": "string" - }, - "StringDefaultValues": { - "additionalProperties": false, - "properties": { - "DynamicValue": { - "$ref": "#/definitions/DynamicDefaultValue" - }, - "StaticValues": { - "items": { - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "StringFormatConfiguration": { - "additionalProperties": false, - "properties": { - "NullValueFormatConfiguration": { - "$ref": "#/definitions/NullValueFormatConfiguration" - }, - "NumericFormatConfiguration": { - "$ref": "#/definitions/NumericFormatConfiguration" - } - }, - "type": "object" - }, - "StringParameter": { - "additionalProperties": false, - "description": "

A string parameter.

", - "properties": { - "Name": { - "description": "

A display name for a string parameter.

", - "pattern": "\\S", - "type": "string" - }, - "Values": { - "description": "

The values of a string parameter.

", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "Name", - "Values" - ], - "type": "object" - }, - "StringParameterDeclaration": { - "additionalProperties": false, - "properties": { - "DefaultValues": { - "$ref": "#/definitions/StringDefaultValues" - }, - "MappedDataSetParameters": { - "items": { - "$ref": "#/definitions/MappedDataSetParameter" - }, - "maxItems": 150, - "minItems": 0, - "type": "array" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "ParameterValueType": { - "$ref": "#/definitions/ParameterValueType" - }, - "ValueWhenUnset": { - "$ref": "#/definitions/StringValueWhenUnsetConfiguration" - } - }, - "required": [ - "Name", - "ParameterValueType" - ], - "type": "object" - }, - "StringValueWhenUnsetConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValue": { - "type": "string" - }, - "ValueWhenUnsetOption": { - "$ref": "#/definitions/ValueWhenUnsetOption" - } - }, - "type": "object" - }, - "StyledCellType": { - "enum": [ - "TOTAL", - "METRIC_HEADER", - "VALUE" - ], - "type": "string" - }, - "SubtotalOptions": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "type": "string" - }, - "FieldLevel": { - "$ref": "#/definitions/PivotTableSubtotalLevel" - }, - "FieldLevelOptions": { - "items": { - "$ref": "#/definitions/PivotTableFieldSubtotalOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "MetricHeaderCellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "StyleTargets": { - "items": { - "$ref": "#/definitions/TableStyleTarget" - }, - "maxItems": 3, - "minItems": 0, - "type": "array" - }, - "TotalCellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "TotalsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "ValueCellStyle": { - "$ref": "#/definitions/TableCellStyle" - } - }, - "type": "object" - }, - "TableAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "GroupBy": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableBorderOptions": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Style": { - "$ref": "#/definitions/TableBorderStyle" - }, - "Thickness": { - "maximum": 4, - "minimum": 1, - "type": "number" - } - }, - "type": "object" - }, - "TableBorderStyle": { - "enum": [ - "NONE", - "SOLID" - ], - "type": "string" - }, - "TableCellConditionalFormatting": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "TextFormat": { - "$ref": "#/definitions/TextConditionalFormat" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "TableCellImageScalingConfiguration": { - "enum": [ - "FIT_TO_CELL_HEIGHT", - "FIT_TO_CELL_WIDTH", - "DO_NOT_SCALE" - ], - "type": "string" - }, - "TableCellImageSizingConfiguration": { - "additionalProperties": false, - "properties": { - "TableCellImageScalingConfiguration": { - "$ref": "#/definitions/TableCellImageScalingConfiguration" - } - }, - "type": "object" - }, - "TableCellStyle": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Border": { - "$ref": "#/definitions/GlobalTableBorderOptions" - }, - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "Height": { - "maximum": 500, - "minimum": 8, - "type": "number" - }, - "HorizontalTextAlignment": { - "$ref": "#/definitions/HorizontalTextAlignment" - }, - "TextWrap": { - "$ref": "#/definitions/TextWrap" - }, - "VerticalTextAlignment": { - "$ref": "#/definitions/VerticalTextAlignment" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TableConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ConditionalFormattingOptions": { - "items": { - "$ref": "#/definitions/TableConditionalFormattingOption" - }, - "maxItems": 500, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableConditionalFormattingOption": { - "additionalProperties": false, - "properties": { - "Cell": { - "$ref": "#/definitions/TableCellConditionalFormatting" - }, - "Row": { - "$ref": "#/definitions/TableRowConditionalFormatting" - } - }, - "type": "object" - }, - "TableConfiguration": { - "additionalProperties": false, - "properties": { - "FieldOptions": { - "$ref": "#/definitions/TableFieldOptions" - }, - "FieldWells": { - "$ref": "#/definitions/TableFieldWells" - }, - "PaginatedReportOptions": { - "$ref": "#/definitions/TablePaginatedReportOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/TableSortConfiguration" - }, - "TableInlineVisualizations": { - "items": { - "$ref": "#/definitions/TableInlineVisualization" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TableOptions": { - "$ref": "#/definitions/TableOptions" - }, - "TotalOptions": { - "$ref": "#/definitions/TotalOptions" - } - }, - "type": "object" - }, - "TableFieldCustomIconContent": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/TableFieldIconSetType" - } - }, - "type": "object" - }, - "TableFieldCustomTextContent": { - "additionalProperties": false, - "properties": { - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "FontConfiguration" - ], - "type": "object" - }, - "TableFieldIconSetType": { - "enum": [ - "LINK" - ], - "type": "string" - }, - "TableFieldImageConfiguration": { - "additionalProperties": false, - "properties": { - "SizingOptions": { - "$ref": "#/definitions/TableCellImageSizingConfiguration" - } - }, - "type": "object" - }, - "TableFieldLinkConfiguration": { - "additionalProperties": false, - "properties": { - "Content": { - "$ref": "#/definitions/TableFieldLinkContentConfiguration" - }, - "Target": { - "$ref": "#/definitions/URLTargetConfiguration" - } - }, - "required": [ - "Content", - "Target" - ], - "type": "object" - }, - "TableFieldLinkContentConfiguration": { - "additionalProperties": false, - "properties": { - "CustomIconContent": { - "$ref": "#/definitions/TableFieldCustomIconContent" - }, - "CustomTextContent": { - "$ref": "#/definitions/TableFieldCustomTextContent" - } - }, - "type": "object" - }, - "TableFieldOption": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "URLStyling": { - "$ref": "#/definitions/TableFieldURLConfiguration" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - }, - "Width": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "TableFieldOptions": { - "additionalProperties": false, - "properties": { - "Order": { - "items": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "PinnedFieldOptions": { - "$ref": "#/definitions/TablePinnedFieldOptions" - }, - "SelectedFieldOptions": { - "items": { - "$ref": "#/definitions/TableFieldOption" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableFieldURLConfiguration": { - "additionalProperties": false, - "properties": { - "ImageConfiguration": { - "$ref": "#/definitions/TableFieldImageConfiguration" - }, - "LinkConfiguration": { - "$ref": "#/definitions/TableFieldLinkConfiguration" - } - }, - "type": "object" - }, - "TableFieldWells": { - "additionalProperties": false, - "properties": { - "TableAggregatedFieldWells": { - "$ref": "#/definitions/TableAggregatedFieldWells" - }, - "TableUnaggregatedFieldWells": { - "$ref": "#/definitions/TableUnaggregatedFieldWells" - } - }, - "type": "object" - }, - "TableInlineVisualization": { - "additionalProperties": false, - "properties": { - "DataBars": { - "$ref": "#/definitions/DataBarsOptions" - } - }, - "type": "object" - }, - "TableOptions": { - "additionalProperties": false, - "properties": { - "CellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "HeaderStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "Orientation": { - "$ref": "#/definitions/TableOrientation" - }, - "RowAlternateColorOptions": { - "$ref": "#/definitions/RowAlternateColorOptions" - } - }, - "type": "object" - }, - "TableOrientation": { - "enum": [ - "VERTICAL", - "HORIZONTAL" - ], - "type": "string" - }, - "TablePaginatedReportOptions": { - "additionalProperties": false, - "properties": { - "OverflowColumnHeaderVisibility": { - "$ref": "#/definitions/Visibility" - }, - "VerticalOverflowVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TablePinnedFieldOptions": { - "additionalProperties": false, - "properties": { - "PinnedLeftFields": { - "items": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "maxItems": 201, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableRowConditionalFormatting": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "TableSideBorderOptions": { - "additionalProperties": false, - "properties": { - "Bottom": { - "$ref": "#/definitions/TableBorderOptions" - }, - "InnerHorizontal": { - "$ref": "#/definitions/TableBorderOptions" - }, - "InnerVertical": { - "$ref": "#/definitions/TableBorderOptions" - }, - "Left": { - "$ref": "#/definitions/TableBorderOptions" - }, - "Right": { - "$ref": "#/definitions/TableBorderOptions" - }, - "Top": { - "$ref": "#/definitions/TableBorderOptions" - } - }, - "type": "object" - }, - "TableSortConfiguration": { - "additionalProperties": false, - "properties": { - "PaginationConfiguration": { - "$ref": "#/definitions/PaginationConfiguration" - }, - "RowSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableStyleTarget": { - "additionalProperties": false, - "properties": { - "CellType": { - "$ref": "#/definitions/StyledCellType" - } - }, - "required": [ - "CellType" - ], - "type": "object" - }, - "TableTotalsPlacement": { - "enum": [ - "START", - "END", - "AUTO" - ], - "type": "string" - }, - "TableTotalsScrollStatus": { - "enum": [ - "PINNED", - "SCROLLED" - ], - "type": "string" - }, - "TableUnaggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Values": { - "items": { - "$ref": "#/definitions/UnaggregatedField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/TableConfiguration" - }, - "ConditionalFormatting": { - "$ref": "#/definitions/TableConditionalFormatting" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", - "properties": { - "Key": { - "description": "

Tag key.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "

Tag value.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TargetVisualOptions": { - "enum": [ - "ALL_VISUALS" - ], - "type": "string" - }, - "TextAreaControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "PlaceholderOptions": { - "$ref": "#/definitions/TextControlPlaceholderOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "TextConditionalFormat": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - }, - "Icon": { - "$ref": "#/definitions/ConditionalFormattingIcon" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "TextControlPlaceholderOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TextFieldControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "PlaceholderOptions": { - "$ref": "#/definitions/TextControlPlaceholderOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "TextWrap": { - "enum": [ - "NONE", - "WRAP" - ], - "type": "string" - }, - "ThousandSeparatorOptions": { - "additionalProperties": false, - "properties": { - "Symbol": { - "$ref": "#/definitions/NumericSeparatorSymbol" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TimeBasedForecastProperties": { - "additionalProperties": false, - "properties": { - "LowerBoundary": { - "default": null, - "type": "number" - }, - "PeriodsBackward": { - "maximum": 1000, - "minimum": 0, - "type": "number" - }, - "PeriodsForward": { - "maximum": 1000, - "minimum": 1, - "type": "number" - }, - "PredictionInterval": { - "maximum": 95, - "minimum": 50, - "type": "number" - }, - "Seasonality": { - "maximum": 180, - "minimum": 1, - "type": "number" - }, - "UpperBoundary": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "TimeEqualityFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "RollingDate": { - "$ref": "#/definitions/RollingDateConfiguration" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "Value": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "Column", - "FilterId" - ], - "type": "object" - }, - "TimeGranularity": { - "enum": [ - "YEAR", - "QUARTER", - "MONTH", - "WEEK", - "DAY", - "HOUR", - "MINUTE", - "SECOND", - "MILLISECOND" - ], - "type": "string" - }, - "TimeRangeDrillDownFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "RangeMaximum": { - "format": "date-time", - "type": "string" - }, - "RangeMinimum": { - "format": "date-time", - "type": "string" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - } - }, - "required": [ - "Column", - "RangeMaximum", - "RangeMinimum", - "TimeGranularity" - ], - "type": "object" - }, - "TimeRangeFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "ExcludePeriodConfiguration": { - "$ref": "#/definitions/ExcludePeriodConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "IncludeMaximum": { - "default": null, - "type": "boolean" - }, - "IncludeMinimum": { - "default": null, - "type": "boolean" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "RangeMaximumValue": { - "$ref": "#/definitions/TimeRangeFilterValue" - }, - "RangeMinimumValue": { - "$ref": "#/definitions/TimeRangeFilterValue" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - } - }, - "required": [ - "Column", - "FilterId", - "NullOption" - ], - "type": "object" - }, - "TimeRangeFilterValue": { - "additionalProperties": false, - "properties": { - "Parameter": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "RollingDate": { - "$ref": "#/definitions/RollingDateConfiguration" - }, - "StaticValue": { - "format": "date-time", - "type": "string" - } - }, - "type": "object" - }, - "TooltipItem": { - "additionalProperties": false, - "properties": { - "ColumnTooltipItem": { - "$ref": "#/definitions/ColumnTooltipItem" - }, - "FieldTooltipItem": { - "$ref": "#/definitions/FieldTooltipItem" - } - }, - "type": "object" - }, - "TooltipOptions": { - "additionalProperties": false, - "properties": { - "FieldBasedTooltip": { - "$ref": "#/definitions/FieldBasedTooltip" - }, - "SelectedTooltipType": { - "$ref": "#/definitions/SelectedTooltipType" - }, - "TooltipVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TooltipTarget": { - "enum": [ - "BOTH", - "BAR", - "LINE" - ], - "type": "string" - }, - "TooltipTitleType": { - "enum": [ - "NONE", - "PRIMARY_VALUE" - ], - "type": "string" - }, - "TopBottomComputationType": { - "enum": [ - "TOP", - "BOTTOM" - ], - "type": "string" - }, - "TopBottomFilter": { - "additionalProperties": false, - "properties": { - "AggregationSortConfigurations": { - "items": { - "$ref": "#/definitions/AggregationSortConfiguration" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Limit": { - "default": null, - "type": "number" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - } - }, - "required": [ - "AggregationSortConfigurations", - "Column", - "FilterId" - ], - "type": "object" - }, - "TopBottomMoversComputation": { - "additionalProperties": false, - "properties": { - "Category": { - "$ref": "#/definitions/DimensionField" - }, - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "MoverSize": { - "default": 0, - "maximum": 20, - "minimum": 1, - "type": "number" - }, - "Name": { - "type": "string" - }, - "SortOrder": { - "$ref": "#/definitions/TopBottomSortOrder" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "Type": { - "$ref": "#/definitions/TopBottomComputationType" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId", - "Type" - ], - "type": "object" - }, - "TopBottomRankedComputation": { - "additionalProperties": false, - "properties": { - "Category": { - "$ref": "#/definitions/DimensionField" - }, - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "ResultSize": { - "default": 0, - "maximum": 20, - "minimum": 1, - "type": "number" - }, - "Type": { - "$ref": "#/definitions/TopBottomComputationType" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId", - "Type" - ], - "type": "object" - }, - "TopBottomSortOrder": { - "enum": [ - "PERCENT_DIFFERENCE", - "ABSOLUTE_DIFFERENCE" - ], - "type": "string" - }, - "TotalAggregationComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "TotalAggregationFunction": { - "additionalProperties": false, - "properties": { - "SimpleTotalAggregationFunction": { - "$ref": "#/definitions/SimpleTotalAggregationFunction" - } - }, - "type": "object" - }, - "TotalAggregationOption": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "TotalAggregationFunction": { - "$ref": "#/definitions/TotalAggregationFunction" - } - }, - "required": [ - "FieldId", - "TotalAggregationFunction" - ], - "type": "object" - }, - "TotalOptions": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "type": "string" - }, - "Placement": { - "$ref": "#/definitions/TableTotalsPlacement" - }, - "ScrollStatus": { - "$ref": "#/definitions/TableTotalsScrollStatus" - }, - "TotalAggregationOptions": { - "items": { - "$ref": "#/definitions/TotalAggregationOption" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TotalCellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "TotalsVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TreeMapAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Colors": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Groups": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Sizes": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TreeMapConfiguration": { - "additionalProperties": false, - "properties": { - "ColorLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ColorScale": { - "$ref": "#/definitions/ColorScale" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/TreeMapFieldWells" - }, - "GroupLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "SizeLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/TreeMapSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - } - }, - "type": "object" - }, - "TreeMapFieldWells": { - "additionalProperties": false, - "properties": { - "TreeMapAggregatedFieldWells": { - "$ref": "#/definitions/TreeMapAggregatedFieldWells" - } - }, - "type": "object" - }, - "TreeMapSortConfiguration": { - "additionalProperties": false, - "properties": { - "TreeMapGroupItemsLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "TreeMapSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TreeMapVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/TreeMapConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "TrendArrowOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "URLTargetConfiguration": { - "enum": [ - "NEW_TAB", - "NEW_WINDOW", - "SAME_TAB" - ], - "type": "string" - }, - "UnaggregatedField": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/FormatConfiguration" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "UniqueValuesComputation": { - "additionalProperties": false, - "properties": { - "Category": { - "$ref": "#/definitions/DimensionField" - }, - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "ValidationStrategy": { - "additionalProperties": false, - "description": "

The option to relax the validation that is required to create and update analyses, dashboards, and templates with definition objects. When you set this value to LENIENT, validation is skipped for specific errors.

", - "properties": { - "Mode": { - "$ref": "#/definitions/ValidationStrategyMode" - } - }, - "required": [ - "Mode" - ], - "type": "object" - }, - "ValidationStrategyMode": { - "enum": [ - "STRICT", - "LENIENT" - ], - "type": "string" - }, - "ValueWhenUnsetOption": { - "enum": [ - "RECOMMENDED_VALUE", - "NULL" - ], - "type": "string" - }, - "VerticalTextAlignment": { - "enum": [ - "TOP", - "MIDDLE", - "BOTTOM", - "AUTO" - ], - "type": "string" - }, - "Visibility": { - "enum": [ - "HIDDEN", - "VISIBLE" - ], - "type": "string" - }, - "VisibleRangeOptions": { - "additionalProperties": false, - "properties": { - "PercentRange": { - "$ref": "#/definitions/PercentVisibleRange" - } - }, - "type": "object" - }, - "Visual": { - "additionalProperties": false, - "properties": { - "BarChartVisual": { - "$ref": "#/definitions/BarChartVisual" - }, - "BoxPlotVisual": { - "$ref": "#/definitions/BoxPlotVisual" - }, - "ComboChartVisual": { - "$ref": "#/definitions/ComboChartVisual" - }, - "CustomContentVisual": { - "$ref": "#/definitions/CustomContentVisual" - }, - "EmptyVisual": { - "$ref": "#/definitions/EmptyVisual" - }, - "FilledMapVisual": { - "$ref": "#/definitions/FilledMapVisual" - }, - "FunnelChartVisual": { - "$ref": "#/definitions/FunnelChartVisual" - }, - "GaugeChartVisual": { - "$ref": "#/definitions/GaugeChartVisual" - }, - "GeospatialMapVisual": { - "$ref": "#/definitions/GeospatialMapVisual" - }, - "HeatMapVisual": { - "$ref": "#/definitions/HeatMapVisual" - }, - "HistogramVisual": { - "$ref": "#/definitions/HistogramVisual" - }, - "InsightVisual": { - "$ref": "#/definitions/InsightVisual" - }, - "KPIVisual": { - "$ref": "#/definitions/KPIVisual" - }, - "LineChartVisual": { - "$ref": "#/definitions/LineChartVisual" - }, - "PieChartVisual": { - "$ref": "#/definitions/PieChartVisual" - }, - "PivotTableVisual": { - "$ref": "#/definitions/PivotTableVisual" - }, - "RadarChartVisual": { - "$ref": "#/definitions/RadarChartVisual" - }, - "SankeyDiagramVisual": { - "$ref": "#/definitions/SankeyDiagramVisual" - }, - "ScatterPlotVisual": { - "$ref": "#/definitions/ScatterPlotVisual" - }, - "TableVisual": { - "$ref": "#/definitions/TableVisual" - }, - "TreeMapVisual": { - "$ref": "#/definitions/TreeMapVisual" - }, - "WaterfallVisual": { - "$ref": "#/definitions/WaterfallVisual" - }, - "WordCloudVisual": { - "$ref": "#/definitions/WordCloudVisual" - } - }, - "type": "object" - }, - "VisualCustomAction": { - "additionalProperties": false, - "properties": { - "ActionOperations": { - "items": { - "$ref": "#/definitions/VisualCustomActionOperation" - }, - "maxItems": 2, - "minItems": 1, - "type": "array" - }, - "CustomActionId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Status": { - "$ref": "#/definitions/WidgetStatus" - }, - "Trigger": { - "$ref": "#/definitions/VisualCustomActionTrigger" - } - }, - "required": [ - "ActionOperations", - "CustomActionId", - "Name", - "Trigger" - ], - "type": "object" - }, - "VisualCustomActionOperation": { - "additionalProperties": false, - "properties": { - "FilterOperation": { - "$ref": "#/definitions/CustomActionFilterOperation" - }, - "NavigationOperation": { - "$ref": "#/definitions/CustomActionNavigationOperation" - }, - "SetParametersOperation": { - "$ref": "#/definitions/CustomActionSetParametersOperation" - }, - "URLOperation": { - "$ref": "#/definitions/CustomActionURLOperation" - } - }, - "type": "object" - }, - "VisualCustomActionTrigger": { - "enum": [ - "DATA_POINT_CLICK", - "DATA_POINT_MENU" - ], - "type": "string" - }, - "VisualPalette": { - "additionalProperties": false, - "properties": { - "ChartColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "ColorMap": { - "items": { - "$ref": "#/definitions/DataPathColor" - }, - "maxItems": 5000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "VisualSubtitleLabelOptions": { - "additionalProperties": false, - "properties": { - "FormatText": { - "$ref": "#/definitions/LongFormatText" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "VisualTitleLabelOptions": { - "additionalProperties": false, - "properties": { - "FormatText": { - "$ref": "#/definitions/ShortFormatText" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "WaterfallChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Breakdowns": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Categories": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "WaterfallChartColorConfiguration": { - "additionalProperties": false, - "properties": { - "GroupColorConfiguration": { - "$ref": "#/definitions/WaterfallChartGroupColorConfiguration" - } - }, - "type": "object" - }, - "WaterfallChartConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "CategoryAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ColorConfiguration": { - "$ref": "#/definitions/WaterfallChartColorConfiguration" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/WaterfallChartFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "PrimaryYAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "PrimaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/WaterfallChartSortConfiguration" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - }, - "WaterfallChartOptions": { - "$ref": "#/definitions/WaterfallChartOptions" - } - }, - "type": "object" - }, - "WaterfallChartFieldWells": { - "additionalProperties": false, - "properties": { - "WaterfallChartAggregatedFieldWells": { - "$ref": "#/definitions/WaterfallChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "WaterfallChartGroupColorConfiguration": { - "additionalProperties": false, - "properties": { - "NegativeBarColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "PositiveBarColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "TotalBarColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - } - }, - "type": "object" - }, - "WaterfallChartOptions": { - "additionalProperties": false, - "properties": { - "TotalBarLabel": { - "type": "string" - } - }, - "type": "object" - }, - "WaterfallChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "BreakdownItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "WaterfallVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/WaterfallChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "WhatIfPointScenario": { - "additionalProperties": false, - "properties": { - "Date": { - "format": "date-time", - "type": "string" - }, - "Value": { - "default": 0, - "type": "number" - } - }, - "required": [ - "Date", - "Value" - ], - "type": "object" - }, - "WhatIfRangeScenario": { - "additionalProperties": false, - "properties": { - "EndDate": { - "format": "date-time", - "type": "string" - }, - "StartDate": { - "format": "date-time", - "type": "string" - }, - "Value": { - "default": 0, - "type": "number" - } - }, - "required": [ - "EndDate", - "StartDate", - "Value" - ], - "type": "object" - }, - "WidgetStatus": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "WordCloudAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "GroupBy": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "Size": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "WordCloudChartConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/WordCloudFieldWells" - }, - "SortConfiguration": { - "$ref": "#/definitions/WordCloudSortConfiguration" - }, - "WordCloudOptions": { - "$ref": "#/definitions/WordCloudOptions" - } - }, - "type": "object" - }, - "WordCloudCloudLayout": { - "enum": [ - "FLUID", - "NORMAL" - ], - "type": "string" - }, - "WordCloudFieldWells": { - "additionalProperties": false, - "properties": { - "WordCloudAggregatedFieldWells": { - "$ref": "#/definitions/WordCloudAggregatedFieldWells" - } - }, - "type": "object" - }, - "WordCloudOptions": { - "additionalProperties": false, - "properties": { - "CloudLayout": { - "$ref": "#/definitions/WordCloudCloudLayout" - }, - "MaximumStringLength": { - "maximum": 100, - "minimum": 1, - "type": "number" - }, - "WordCasing": { - "$ref": "#/definitions/WordCloudWordCasing" - }, - "WordOrientation": { - "$ref": "#/definitions/WordCloudWordOrientation" - }, - "WordPadding": { - "$ref": "#/definitions/WordCloudWordPadding" - }, - "WordScaling": { - "$ref": "#/definitions/WordCloudWordScaling" - } - }, - "type": "object" - }, - "WordCloudSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "WordCloudVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/WordCloudChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "WordCloudWordCasing": { - "enum": [ - "LOWER_CASE", - "EXISTING_CASE" - ], - "type": "string" - }, - "WordCloudWordOrientation": { - "enum": [ - "HORIZONTAL", - "HORIZONTAL_AND_VERTICAL" - ], - "type": "string" - }, - "WordCloudWordPadding": { - "enum": [ - "NONE", - "SMALL", - "MEDIUM", - "LARGE" - ], - "type": "string" - }, - "WordCloudWordScaling": { - "enum": [ - "EMPHASIZE", - "NORMAL" - ], - "type": "string" - }, - "YAxisOptions": { - "additionalProperties": false, - "properties": { - "YAxis": { - "$ref": "#/definitions/SingleYAxisOption" - } - }, - "required": [ - "YAxis" - ], - "type": "object" - } - }, - "description": "Definition of the AWS::QuickSight::Analysis Resource Type.", - "handlers": { - "create": { - "permissions": [ - "quicksight:DescribeAnalysis", - "quicksight:DescribeAnalysisPermissions", - "quicksight:CreateAnalysis", - "quicksight:DescribeTemplate", - "quicksight:DescribeTheme", - "quicksight:PassDataSet", - "quicksight:TagResource", - "quicksight:UntagResource", - "quicksight:ListTagsForResource", - "quicksight:CreateFolderMembership", - "quicksight:DeleteFolderMembership", - "quicksight:ListFoldersForResource" - ] - }, - "delete": { - "permissions": [ - "quicksight:DescribeAnalysis", - "quicksight:DeleteAnalysis" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "AwsAccountId": { - "$ref": "resource-schema.json#/properties/AwsAccountId" - } - }, - "required": [ - "AwsAccountId" - ] - }, - "permissions": [ - "quicksight:ListAnalyses" - ] - }, - "read": { - "permissions": [ - "quicksight:DescribeAnalysis", - "quicksight:DescribeAnalysisPermissions", - "quicksight:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "quicksight:DescribeAnalysis", - "quicksight:DescribeAnalysisPermissions", - "quicksight:UpdateAnalysis", - "quicksight:UpdateAnalysisPermissions", - "quicksight:CreateFolderMembership", - "quicksight:DeleteFolderMembership", - "quicksight:ListFoldersForResource", - "quicksight:DescribeTemplate", - "quicksight:DescribeTheme", - "quicksight:PassDataSet", - "quicksight:TagResource", - "quicksight:UntagResource", - "quicksight:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AnalysisId", - "/properties/AwsAccountId" - ], - "properties": { - "AnalysisId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Arn": { - "description": "

The Amazon Resource Name (ARN) of the analysis.

", - "type": "string" - }, - "AwsAccountId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "CreatedTime": { - "description": "

The time that the analysis was created.

", - "format": "date-time", - "type": "string" - }, - "DataSetArns": { - "description": "

The ARNs of the datasets of the analysis.

", - "items": { - "type": "string" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "Definition": { - "$ref": "#/definitions/AnalysisDefinition" - }, - "Errors": { - "description": "

Errors associated with the analysis.

", - "items": { - "$ref": "#/definitions/AnalysisError" - }, - "minItems": 1, - "type": "array" - }, - "FolderArns": { - "items": { - "type": "string" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "LastUpdatedTime": { - "description": "

The time that the analysis was last updated.

", - "format": "date-time", - "type": "string" - }, - "Name": { - "description": "

The descriptive name of the analysis.

", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Parameters": { - "$ref": "#/definitions/Parameters" - }, - "Permissions": { - "items": { - "$ref": "#/definitions/ResourcePermission" - }, - "maxItems": 64, - "minItems": 1, - "type": "array" - }, - "Sheets": { - "description": "

A list of the associated sheets with the unique identifier and name of each sheet.

", - "items": { - "$ref": "#/definitions/Sheet" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "SourceEntity": { - "$ref": "#/definitions/AnalysisSourceEntity" - }, - "Status": { - "$ref": "#/definitions/ResourceStatus" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "ThemeArn": { - "description": "

The ARN of the theme of the analysis.

", - "type": "string" - }, - "ValidationStrategy": { - "$ref": "#/definitions/ValidationStrategy" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedTime", - "/properties/DataSetArns", - "/properties/LastUpdatedTime" - ], - "required": [ - "AwsAccountId", - "AnalysisId", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", - "typeName": "AWS::QuickSight::Analysis", - "writeOnlyProperties": [ - "/properties/Definition", - "/properties/Parameters", - "/properties/SourceEntity", - "/properties/Status", - "/properties/ValidationStrategy", - "/properties/FolderArns" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AnalysisId", + "/properties/AwsAccountId" + ], + "definitions": { + "AggregationFunction": { + "additionalProperties": false, + "properties": { + "AttributeAggregationFunction": { + "$ref": "#/definitions/AttributeAggregationFunction" + }, + "CategoricalAggregationFunction": { + "$ref": "#/definitions/CategoricalAggregationFunction" + }, + "DateAggregationFunction": { + "$ref": "#/definitions/DateAggregationFunction" + }, + "NumericalAggregationFunction": { + "$ref": "#/definitions/NumericalAggregationFunction" + } + }, + "type": "object" + }, + "AggregationSortConfiguration": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SortDirection": { + "$ref": "#/definitions/SortDirection" + } + }, + "required": [ + "Column", + "SortDirection" + ], + "type": "object" + }, + "AllSheetsFilterScopeConfiguration": { + "additionalProperties": false, + "type": "object" + }, + "AnalysisDefaults": { + "additionalProperties": false, + "properties": { + "DefaultNewSheetConfiguration": { + "$ref": "#/definitions/DefaultNewSheetConfiguration" + } + }, + "required": [ + "DefaultNewSheetConfiguration" + ], + "type": "object" + }, + "AnalysisDefinition": { + "additionalProperties": false, + "properties": { + "AnalysisDefaults": { + "$ref": "#/definitions/AnalysisDefaults" + }, + "CalculatedFields": { + "items": { + "$ref": "#/definitions/CalculatedField" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + }, + "ColumnConfigurations": { + "items": { + "$ref": "#/definitions/ColumnConfiguration" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "DataSetIdentifierDeclarations": { + "items": { + "$ref": "#/definitions/DataSetIdentifierDeclaration" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + "FilterGroups": { + "items": { + "$ref": "#/definitions/FilterGroup" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "Options": { + "$ref": "#/definitions/AssetOptions" + }, + "ParameterDeclarations": { + "items": { + "$ref": "#/definitions/ParameterDeclaration" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "QueryExecutionOptions": { + "$ref": "#/definitions/QueryExecutionOptions" + }, + "Sheets": { + "items": { + "$ref": "#/definitions/SheetDefinition" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "StaticFiles": { + "items": { + "$ref": "#/definitions/StaticFile" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "DataSetIdentifierDeclarations" + ], + "type": "object" + }, + "AnalysisError": { + "additionalProperties": false, + "description": "

Analysis error.

", + "properties": { + "Message": { + "description": "

The message associated with the analysis error.

", + "pattern": "\\S", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/AnalysisErrorType" + }, + "ViolatedEntities": { + "description": "

Lists the violated entities that caused the analysis error

", + "items": { + "$ref": "#/definitions/Entity" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "AnalysisErrorType": { + "enum": [ + "ACCESS_DENIED", + "SOURCE_NOT_FOUND", + "DATA_SET_NOT_FOUND", + "INTERNAL_FAILURE", + "PARAMETER_VALUE_INCOMPATIBLE", + "PARAMETER_TYPE_INVALID", + "PARAMETER_NOT_FOUND", + "COLUMN_TYPE_MISMATCH", + "COLUMN_GEOGRAPHIC_ROLE_MISMATCH", + "COLUMN_REPLACEMENT_MISSING" + ], + "type": "string" + }, + "AnalysisSourceEntity": { + "additionalProperties": false, + "description": "

The source entity of an analysis.

", + "properties": { + "SourceTemplate": { + "$ref": "#/definitions/AnalysisSourceTemplate" + } + }, + "type": "object" + }, + "AnalysisSourceTemplate": { + "additionalProperties": false, + "description": "

The source template of an analysis.

", + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the source template of an analysis.

", + "type": "string" + }, + "DataSetReferences": { + "description": "

The dataset references of the source template of an analysis.

", + "items": { + "$ref": "#/definitions/DataSetReference" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Arn", + "DataSetReferences" + ], + "type": "object" + }, + "AnchorDateConfiguration": { + "additionalProperties": false, + "properties": { + "AnchorOption": { + "$ref": "#/definitions/AnchorOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "AnchorOption": { + "enum": [ + "NOW" + ], + "type": "string" + }, + "ArcAxisConfiguration": { + "additionalProperties": false, + "properties": { + "Range": { + "$ref": "#/definitions/ArcAxisDisplayRange" + }, + "ReserveRange": { + "default": 0, + "type": "number" + } + }, + "type": "object" + }, + "ArcAxisDisplayRange": { + "additionalProperties": false, + "properties": { + "Max": { + "default": null, + "type": "number" + }, + "Min": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "ArcConfiguration": { + "additionalProperties": false, + "properties": { + "ArcAngle": { + "default": null, + "type": "number" + }, + "ArcThickness": { + "$ref": "#/definitions/ArcThicknessOptions" + } + }, + "type": "object" + }, + "ArcOptions": { + "additionalProperties": false, + "properties": { + "ArcThickness": { + "$ref": "#/definitions/ArcThickness" + } + }, + "type": "object" + }, + "ArcThickness": { + "enum": [ + "SMALL", + "MEDIUM", + "LARGE", + "WHOLE" + ], + "type": "string" + }, + "ArcThicknessOptions": { + "enum": [ + "SMALL", + "MEDIUM", + "LARGE" + ], + "type": "string" + }, + "AssetOptions": { + "additionalProperties": false, + "properties": { + "Timezone": { + "type": "string" + }, + "WeekStart": { + "$ref": "#/definitions/DayOfTheWeek" + } + }, + "type": "object" + }, + "AttributeAggregationFunction": { + "additionalProperties": false, + "properties": { + "SimpleAttributeAggregation": { + "$ref": "#/definitions/SimpleAttributeAggregationFunction" + }, + "ValueForMultipleValues": { + "type": "string" + } + }, + "type": "object" + }, + "AxisBinding": { + "enum": [ + "PRIMARY_YAXIS", + "SECONDARY_YAXIS" + ], + "type": "string" + }, + "AxisDataOptions": { + "additionalProperties": false, + "properties": { + "DateAxisOptions": { + "$ref": "#/definitions/DateAxisOptions" + }, + "NumericAxisOptions": { + "$ref": "#/definitions/NumericAxisOptions" + } + }, + "type": "object" + }, + "AxisDisplayDataDrivenRange": { + "additionalProperties": false, + "type": "object" + }, + "AxisDisplayMinMaxRange": { + "additionalProperties": false, + "properties": { + "Maximum": { + "default": null, + "type": "number" + }, + "Minimum": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisDisplayOptions": { + "additionalProperties": false, + "properties": { + "AxisLineVisibility": { + "$ref": "#/definitions/Visibility" + }, + "AxisOffset": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "DataOptions": { + "$ref": "#/definitions/AxisDataOptions" + }, + "GridLineVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ScrollbarOptions": { + "$ref": "#/definitions/ScrollBarOptions" + }, + "TickLabelOptions": { + "$ref": "#/definitions/AxisTickLabelOptions" + } + }, + "type": "object" + }, + "AxisDisplayRange": { + "additionalProperties": false, + "properties": { + "DataDriven": { + "$ref": "#/definitions/AxisDisplayDataDrivenRange" + }, + "MinMax": { + "$ref": "#/definitions/AxisDisplayMinMaxRange" + } + }, + "type": "object" + }, + "AxisLabelOptions": { + "additionalProperties": false, + "properties": { + "ApplyTo": { + "$ref": "#/definitions/AxisLabelReferenceOptions" + }, + "CustomLabel": { + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + } + }, + "type": "object" + }, + "AxisLabelReferenceOptions": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "AxisLinearScale": { + "additionalProperties": false, + "properties": { + "StepCount": { + "default": null, + "type": "number" + }, + "StepSize": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisLogarithmicScale": { + "additionalProperties": false, + "properties": { + "Base": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisScale": { + "additionalProperties": false, + "properties": { + "Linear": { + "$ref": "#/definitions/AxisLinearScale" + }, + "Logarithmic": { + "$ref": "#/definitions/AxisLogarithmicScale" + } + }, + "type": "object" + }, + "AxisTickLabelOptions": { + "additionalProperties": false, + "properties": { + "LabelOptions": { + "$ref": "#/definitions/LabelOptions" + }, + "RotationAngle": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "BarChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BarChartConfiguration": { + "additionalProperties": false, + "properties": { + "BarsArrangement": { + "$ref": "#/definitions/BarsArrangement" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/BarChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "Orientation": { + "$ref": "#/definitions/BarChartOrientation" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/BarChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "BarChartFieldWells": { + "additionalProperties": false, + "properties": { + "BarChartAggregatedFieldWells": { + "$ref": "#/definitions/BarChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "BarChartOrientation": { + "enum": [ + "HORIZONTAL", + "VERTICAL" + ], + "type": "string" + }, + "BarChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BarChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/BarChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "BarsArrangement": { + "enum": [ + "CLUSTERED", + "STACKED", + "STACKED_PERCENT" + ], + "type": "string" + }, + "BaseMapStyleType": { + "enum": [ + "LIGHT_GRAY", + "DARK_GRAY", + "STREET", + "IMAGERY" + ], + "type": "string" + }, + "BinCountOptions": { + "additionalProperties": false, + "properties": { + "Value": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "BinWidthOptions": { + "additionalProperties": false, + "properties": { + "BinCountLimit": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "Value": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "BodySectionConfiguration": { + "additionalProperties": false, + "properties": { + "Content": { + "$ref": "#/definitions/BodySectionContent" + }, + "PageBreakConfiguration": { + "$ref": "#/definitions/SectionPageBreakConfiguration" + }, + "RepeatConfiguration": { + "$ref": "#/definitions/BodySectionRepeatConfiguration" + }, + "SectionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/SectionStyle" + } + }, + "required": [ + "Content", + "SectionId" + ], + "type": "object" + }, + "BodySectionContent": { + "additionalProperties": false, + "properties": { + "Layout": { + "$ref": "#/definitions/SectionLayoutConfiguration" + } + }, + "type": "object" + }, + "BodySectionDynamicCategoryDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Limit": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "SortByMetrics": { + "items": { + "$ref": "#/definitions/ColumnSort" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "BodySectionDynamicNumericDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Limit": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "SortByMetrics": { + "items": { + "$ref": "#/definitions/ColumnSort" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "BodySectionRepeatConfiguration": { + "additionalProperties": false, + "properties": { + "DimensionConfigurations": { + "items": { + "$ref": "#/definitions/BodySectionRepeatDimensionConfiguration" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "NonRepeatingVisuals": { + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "PageBreakConfiguration": { + "$ref": "#/definitions/BodySectionRepeatPageBreakConfiguration" + } + }, + "type": "object" + }, + "BodySectionRepeatDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "DynamicCategoryDimensionConfiguration": { + "$ref": "#/definitions/BodySectionDynamicCategoryDimensionConfiguration" + }, + "DynamicNumericDimensionConfiguration": { + "$ref": "#/definitions/BodySectionDynamicNumericDimensionConfiguration" + } + }, + "type": "object" + }, + "BodySectionRepeatPageBreakConfiguration": { + "additionalProperties": false, + "properties": { + "After": { + "$ref": "#/definitions/SectionAfterPageBreak" + } + }, + "type": "object" + }, + "BoxPlotAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "GroupBy": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BoxPlotChartConfiguration": { + "additionalProperties": false, + "properties": { + "BoxPlotOptions": { + "$ref": "#/definitions/BoxPlotOptions" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/BoxPlotFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SortConfiguration": { + "$ref": "#/definitions/BoxPlotSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "BoxPlotFieldWells": { + "additionalProperties": false, + "properties": { + "BoxPlotAggregatedFieldWells": { + "$ref": "#/definitions/BoxPlotAggregatedFieldWells" + } + }, + "type": "object" + }, + "BoxPlotFillStyle": { + "enum": [ + "SOLID", + "TRANSPARENT" + ], + "type": "string" + }, + "BoxPlotOptions": { + "additionalProperties": false, + "properties": { + "AllDataPointsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "OutlierVisibility": { + "$ref": "#/definitions/Visibility" + }, + "StyleOptions": { + "$ref": "#/definitions/BoxPlotStyleOptions" + } + }, + "type": "object" + }, + "BoxPlotSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "PaginationConfiguration": { + "$ref": "#/definitions/PaginationConfiguration" + } + }, + "type": "object" + }, + "BoxPlotStyleOptions": { + "additionalProperties": false, + "properties": { + "FillStyle": { + "$ref": "#/definitions/BoxPlotFillStyle" + } + }, + "type": "object" + }, + "BoxPlotVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/BoxPlotChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "CalculatedField": { + "additionalProperties": false, + "properties": { + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Expression": { + "maxLength": 32000, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 127, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "Expression", + "Name" + ], + "type": "object" + }, + "CalculatedMeasureField": { + "additionalProperties": false, + "properties": { + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Expression", + "FieldId" + ], + "type": "object" + }, + "CascadingControlConfiguration": { + "additionalProperties": false, + "properties": { + "SourceControls": { + "items": { + "$ref": "#/definitions/CascadingControlSource" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "CascadingControlSource": { + "additionalProperties": false, + "properties": { + "ColumnToMatch": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SourceSheetControlId": { + "type": "string" + } + }, + "type": "object" + }, + "CategoricalAggregationFunction": { + "enum": [ + "COUNT", + "DISTINCT_COUNT" + ], + "type": "string" + }, + "CategoricalDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "CategoricalMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/CategoricalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "CategoryDrillDownFilter": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "CategoryValues", + "Column" + ], + "type": "object" + }, + "CategoryFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Configuration": { + "$ref": "#/definitions/CategoryFilterConfiguration" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "Column", + "Configuration", + "FilterId" + ], + "type": "object" + }, + "CategoryFilterConfiguration": { + "additionalProperties": false, + "properties": { + "CustomFilterConfiguration": { + "$ref": "#/definitions/CustomFilterConfiguration" + }, + "CustomFilterListConfiguration": { + "$ref": "#/definitions/CustomFilterListConfiguration" + }, + "FilterListConfiguration": { + "$ref": "#/definitions/FilterListConfiguration" + } + }, + "type": "object" + }, + "CategoryFilterMatchOperator": { + "enum": [ + "EQUALS", + "DOES_NOT_EQUAL", + "CONTAINS", + "DOES_NOT_CONTAIN", + "STARTS_WITH", + "ENDS_WITH" + ], + "type": "string" + }, + "CategoryFilterSelectAllOptions": { + "enum": [ + "FILTER_ALL_VALUES" + ], + "type": "string" + }, + "CategoryInnerFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Configuration": { + "$ref": "#/definitions/CategoryFilterConfiguration" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + } + }, + "required": [ + "Column", + "Configuration" + ], + "type": "object" + }, + "ChartAxisLabelOptions": { + "additionalProperties": false, + "properties": { + "AxisLabelOptions": { + "items": { + "$ref": "#/definitions/AxisLabelOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SortIconVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "ClusterMarker": { + "additionalProperties": false, + "properties": { + "SimpleClusterMarker": { + "$ref": "#/definitions/SimpleClusterMarker" + } + }, + "type": "object" + }, + "ClusterMarkerConfiguration": { + "additionalProperties": false, + "properties": { + "ClusterMarker": { + "$ref": "#/definitions/ClusterMarker" + } + }, + "type": "object" + }, + "ColorFillType": { + "enum": [ + "DISCRETE", + "GRADIENT" + ], + "type": "string" + }, + "ColorScale": { + "additionalProperties": false, + "properties": { + "ColorFillType": { + "$ref": "#/definitions/ColorFillType" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DataColor" + }, + "maxItems": 3, + "minItems": 2, + "type": "array" + }, + "NullValueColor": { + "$ref": "#/definitions/DataColor" + } + }, + "required": [ + "ColorFillType", + "Colors" + ], + "type": "object" + }, + "ColorsConfiguration": { + "additionalProperties": false, + "properties": { + "CustomColors": { + "items": { + "$ref": "#/definitions/CustomColor" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ColumnConfiguration": { + "additionalProperties": false, + "properties": { + "ColorsConfiguration": { + "$ref": "#/definitions/ColorsConfiguration" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FormatConfiguration": { + "$ref": "#/definitions/FormatConfiguration" + }, + "Role": { + "$ref": "#/definitions/ColumnRole" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "ColumnHierarchy": { + "additionalProperties": false, + "properties": { + "DateTimeHierarchy": { + "$ref": "#/definitions/DateTimeHierarchy" + }, + "ExplicitHierarchy": { + "$ref": "#/definitions/ExplicitHierarchy" + }, + "PredefinedHierarchy": { + "$ref": "#/definitions/PredefinedHierarchy" + } + }, + "type": "object" + }, + "ColumnIdentifier": { + "additionalProperties": false, + "properties": { + "ColumnName": { + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ColumnName", + "DataSetIdentifier" + ], + "type": "object" + }, + "ColumnRole": { + "enum": [ + "DIMENSION", + "MEASURE" + ], + "type": "string" + }, + "ColumnSort": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "SortBy": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "Direction", + "SortBy" + ], + "type": "object" + }, + "ColumnTooltipItem": { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Label": { + "type": "string" + }, + "TooltipTarget": { + "$ref": "#/definitions/TooltipTarget" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "ComboChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "BarValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "LineValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ComboChartConfiguration": { + "additionalProperties": false, + "properties": { + "BarDataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "BarsArrangement": { + "$ref": "#/definitions/BarsArrangement" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/ComboChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "LineDataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SecondaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "SecondaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SingleAxisOptions": { + "$ref": "#/definitions/SingleAxisOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/ComboChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "ComboChartFieldWells": { + "additionalProperties": false, + "properties": { + "ComboChartAggregatedFieldWells": { + "$ref": "#/definitions/ComboChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "ComboChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ComboChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/ComboChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "CommitMode": { + "enum": [ + "AUTO", + "MANUAL" + ], + "type": "string" + }, + "ComparisonConfiguration": { + "additionalProperties": false, + "properties": { + "ComparisonFormat": { + "$ref": "#/definitions/ComparisonFormatConfiguration" + }, + "ComparisonMethod": { + "$ref": "#/definitions/ComparisonMethod" + } + }, + "type": "object" + }, + "ComparisonFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NumberDisplayFormatConfiguration": { + "$ref": "#/definitions/NumberDisplayFormatConfiguration" + }, + "PercentageDisplayFormatConfiguration": { + "$ref": "#/definitions/PercentageDisplayFormatConfiguration" + } + }, + "type": "object" + }, + "ComparisonMethod": { + "enum": [ + "DIFFERENCE", + "PERCENT_DIFFERENCE", + "PERCENT" + ], + "type": "string" + }, + "Computation": { + "additionalProperties": false, + "properties": { + "Forecast": { + "$ref": "#/definitions/ForecastComputation" + }, + "GrowthRate": { + "$ref": "#/definitions/GrowthRateComputation" + }, + "MaximumMinimum": { + "$ref": "#/definitions/MaximumMinimumComputation" + }, + "MetricComparison": { + "$ref": "#/definitions/MetricComparisonComputation" + }, + "PeriodOverPeriod": { + "$ref": "#/definitions/PeriodOverPeriodComputation" + }, + "PeriodToDate": { + "$ref": "#/definitions/PeriodToDateComputation" + }, + "TopBottomMovers": { + "$ref": "#/definitions/TopBottomMoversComputation" + }, + "TopBottomRanked": { + "$ref": "#/definitions/TopBottomRankedComputation" + }, + "TotalAggregation": { + "$ref": "#/definitions/TotalAggregationComputation" + }, + "UniqueValues": { + "$ref": "#/definitions/UniqueValuesComputation" + } + }, + "type": "object" + }, + "ConditionalFormattingColor": { + "additionalProperties": false, + "properties": { + "Gradient": { + "$ref": "#/definitions/ConditionalFormattingGradientColor" + }, + "Solid": { + "$ref": "#/definitions/ConditionalFormattingSolidColor" + } + }, + "type": "object" + }, + "ConditionalFormattingCustomIconCondition": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DisplayConfiguration": { + "$ref": "#/definitions/ConditionalFormattingIconDisplayConfiguration" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "IconOptions": { + "$ref": "#/definitions/ConditionalFormattingCustomIconOptions" + } + }, + "required": [ + "Expression", + "IconOptions" + ], + "type": "object" + }, + "ConditionalFormattingCustomIconOptions": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/Icon" + }, + "UnicodeIcon": { + "pattern": "^[^\\u0000-\\u00FF]$", + "type": "string" + } + }, + "type": "object" + }, + "ConditionalFormattingGradientColor": { + "additionalProperties": false, + "properties": { + "Color": { + "$ref": "#/definitions/GradientColor" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Color", + "Expression" + ], + "type": "object" + }, + "ConditionalFormattingIcon": { + "additionalProperties": false, + "properties": { + "CustomCondition": { + "$ref": "#/definitions/ConditionalFormattingCustomIconCondition" + }, + "IconSet": { + "$ref": "#/definitions/ConditionalFormattingIconSet" + } + }, + "type": "object" + }, + "ConditionalFormattingIconDisplayConfiguration": { + "additionalProperties": false, + "properties": { + "IconDisplayOption": { + "$ref": "#/definitions/ConditionalFormattingIconDisplayOption" + } + }, + "type": "object" + }, + "ConditionalFormattingIconDisplayOption": { + "enum": [ + "ICON_ONLY" + ], + "type": "string" + }, + "ConditionalFormattingIconSet": { + "additionalProperties": false, + "properties": { + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "IconSetType": { + "$ref": "#/definitions/ConditionalFormattingIconSetType" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "ConditionalFormattingIconSetType": { + "enum": [ + "PLUS_MINUS", + "CHECK_X", + "THREE_COLOR_ARROW", + "THREE_GRAY_ARROW", + "CARET_UP_MINUS_DOWN", + "THREE_SHAPE", + "THREE_CIRCLE", + "FLAGS", + "BARS", + "FOUR_COLOR_ARROW", + "FOUR_GRAY_ARROW" + ], + "type": "string" + }, + "ConditionalFormattingSolidColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "ContextMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "ContributionAnalysisDefault": { + "additionalProperties": false, + "properties": { + "ContributorDimensions": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "MeasureFieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ContributorDimensions", + "MeasureFieldId" + ], + "type": "object" + }, + "CrossDatasetTypes": { + "enum": [ + "ALL_DATASETS", + "SINGLE_DATASET" + ], + "type": "string" + }, + "CurrencyDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumberScale": { + "$ref": "#/definitions/NumberScale" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Symbol": { + "pattern": "^[A-Z]{3}$", + "type": "string" + } + }, + "type": "object" + }, + "CustomActionFilterOperation": { + "additionalProperties": false, + "properties": { + "SelectedFieldsConfiguration": { + "$ref": "#/definitions/FilterOperationSelectedFieldsConfiguration" + }, + "TargetVisualsConfiguration": { + "$ref": "#/definitions/FilterOperationTargetVisualsConfiguration" + } + }, + "required": [ + "SelectedFieldsConfiguration", + "TargetVisualsConfiguration" + ], + "type": "object" + }, + "CustomActionNavigationOperation": { + "additionalProperties": false, + "properties": { + "LocalNavigationConfiguration": { + "$ref": "#/definitions/LocalNavigationConfiguration" + } + }, + "type": "object" + }, + "CustomActionSetParametersOperation": { + "additionalProperties": false, + "properties": { + "ParameterValueConfigurations": { + "items": { + "$ref": "#/definitions/SetParameterValueConfiguration" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "ParameterValueConfigurations" + ], + "type": "object" + }, + "CustomActionURLOperation": { + "additionalProperties": false, + "properties": { + "URLTarget": { + "$ref": "#/definitions/URLTargetConfiguration" + }, + "URLTemplate": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "URLTarget", + "URLTemplate" + ], + "type": "object" + }, + "CustomColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "SpecialValue": { + "$ref": "#/definitions/SpecialValue" + } + }, + "required": [ + "Color" + ], + "type": "object" + }, + "CustomContentConfiguration": { + "additionalProperties": false, + "properties": { + "ContentType": { + "$ref": "#/definitions/CustomContentType" + }, + "ContentUrl": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ImageScaling": { + "$ref": "#/definitions/CustomContentImageScalingConfiguration" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + } + }, + "type": "object" + }, + "CustomContentImageScalingConfiguration": { + "enum": [ + "FIT_TO_HEIGHT", + "FIT_TO_WIDTH", + "DO_NOT_SCALE", + "SCALE_TO_VISUAL" + ], + "type": "string" + }, + "CustomContentType": { + "enum": [ + "IMAGE", + "OTHER_EMBEDDED_CONTENT" + ], + "type": "string" + }, + "CustomContentVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/CustomContentConfiguration" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "CustomFilterConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValue": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "CustomFilterListConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "CustomNarrativeOptions": { + "additionalProperties": false, + "properties": { + "Narrative": { + "maxLength": 150000, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Narrative" + ], + "type": "object" + }, + "CustomParameterValues": { + "additionalProperties": false, + "properties": { + "DateTimeValues": { + "items": { + "format": "date-time", + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "DecimalValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "IntegerValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "StringValues": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "CustomValuesConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValues": { + "$ref": "#/definitions/CustomParameterValues" + }, + "IncludeNullValue": { + "type": "boolean" + } + }, + "required": [ + "CustomValues" + ], + "type": "object" + }, + "DashboardBehavior": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "DataBarsOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "NegativeColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "PositiveColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "DataColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DataValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "DataFieldSeriesItem": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "type": "string" + }, + "Settings": { + "$ref": "#/definitions/LineChartSeriesSettings" + } + }, + "required": [ + "AxisBinding", + "FieldId" + ], + "type": "object" + }, + "DataLabelContent": { + "enum": [ + "VALUE", + "PERCENT", + "VALUE_AND_PERCENT" + ], + "type": "string" + }, + "DataLabelOptions": { + "additionalProperties": false, + "properties": { + "CategoryLabelVisibility": { + "$ref": "#/definitions/Visibility" + }, + "DataLabelTypes": { + "items": { + "$ref": "#/definitions/DataLabelType" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "LabelColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "LabelContent": { + "$ref": "#/definitions/DataLabelContent" + }, + "LabelFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "MeasureLabelVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Overlap": { + "$ref": "#/definitions/DataLabelOverlap" + }, + "Position": { + "$ref": "#/definitions/DataLabelPosition" + }, + "TotalsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "DataLabelOverlap": { + "enum": [ + "DISABLE_OVERLAP", + "ENABLE_OVERLAP" + ], + "type": "string" + }, + "DataLabelPosition": { + "enum": [ + "INSIDE", + "OUTSIDE", + "LEFT", + "TOP", + "BOTTOM", + "RIGHT" + ], + "type": "string" + }, + "DataLabelType": { + "additionalProperties": false, + "properties": { + "DataPathLabelType": { + "$ref": "#/definitions/DataPathLabelType" + }, + "FieldLabelType": { + "$ref": "#/definitions/FieldLabelType" + }, + "MaximumLabelType": { + "$ref": "#/definitions/MaximumLabelType" + }, + "MinimumLabelType": { + "$ref": "#/definitions/MinimumLabelType" + }, + "RangeEndsLabelType": { + "$ref": "#/definitions/RangeEndsLabelType" + } + }, + "type": "object" + }, + "DataPathColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Element": { + "$ref": "#/definitions/DataPathValue" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Color", + "Element" + ], + "type": "object" + }, + "DataPathLabelType": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "DataPathSort": { + "additionalProperties": false, + "properties": { + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "SortPaths": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Direction", + "SortPaths" + ], + "type": "object" + }, + "DataPathType": { + "additionalProperties": false, + "properties": { + "PivotTableDataPathType": { + "$ref": "#/definitions/PivotTableDataPathType" + } + }, + "type": "object" + }, + "DataPathValue": { + "additionalProperties": false, + "properties": { + "DataPathType": { + "$ref": "#/definitions/DataPathType" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "DataSetIdentifierDeclaration": { + "additionalProperties": false, + "properties": { + "DataSetArn": { + "type": "string" + }, + "Identifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DataSetArn", + "Identifier" + ], + "type": "object" + }, + "DataSetReference": { + "additionalProperties": false, + "description": "

Dataset reference.

", + "properties": { + "DataSetArn": { + "description": "

Dataset Amazon Resource Name (ARN).

", + "type": "string" + }, + "DataSetPlaceholder": { + "description": "

Dataset placeholder.

", + "pattern": "\\S", + "type": "string" + } + }, + "required": [ + "DataSetArn", + "DataSetPlaceholder" + ], + "type": "object" + }, + "DateAggregationFunction": { + "enum": [ + "COUNT", + "DISTINCT_COUNT", + "MIN", + "MAX" + ], + "type": "string" + }, + "DateAxisOptions": { + "additionalProperties": false, + "properties": { + "MissingDateVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "DateDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DateGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "DateMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/DateAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "DateTimeDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "StaticValues": { + "items": { + "format": "date-time", + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DateTimeFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumericFormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "DateTimeHierarchy": { + "additionalProperties": false, + "properties": { + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "HierarchyId" + ], + "type": "object" + }, + "DateTimeParameter": { + "additionalProperties": false, + "description": "

A date-time parameter.

", + "properties": { + "Name": { + "description": "

A display name for the date-time parameter.

", + "pattern": "\\S", + "type": "string" + }, + "Values": { + "description": "

The values for the date-time parameter.

", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "DateTimeParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/DateTimeDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/DateTimeValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "DateTimePickerControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "DateIconVisibility": { + "$ref": "#/definitions/Visibility" + }, + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "HelperTextVisibility": { + "$ref": "#/definitions/Visibility" + }, + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "DateTimeValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "format": "date-time", + "type": "string" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "DayOfTheWeek": { + "enum": [ + "SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY" + ], + "type": "string" + }, + "DecimalDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DecimalParameter": { + "additionalProperties": false, + "description": "

A decimal parameter.

", + "properties": { + "Name": { + "description": "

A display name for the decimal parameter.

", + "pattern": "\\S", + "type": "string" + }, + "Values": { + "description": "

The values for the decimal parameter.

", + "items": { + "default": 0, + "type": "number" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "DecimalParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/DecimalDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/DecimalValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "DecimalPlacesConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlaces": { + "maximum": 20, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "DecimalPlaces" + ], + "type": "object" + }, + "DecimalValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "default": null, + "type": "number" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "DefaultDateTimePickerControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "Type": { + "$ref": "#/definitions/SheetControlDateTimePickerType" + } + }, + "type": "object" + }, + "DefaultFilterControlConfiguration": { + "additionalProperties": false, + "properties": { + "ControlOptions": { + "$ref": "#/definitions/DefaultFilterControlOptions" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ControlOptions", + "Title" + ], + "type": "object" + }, + "DefaultFilterControlOptions": { + "additionalProperties": false, + "properties": { + "DefaultDateTimePickerOptions": { + "$ref": "#/definitions/DefaultDateTimePickerControlOptions" + }, + "DefaultDropdownOptions": { + "$ref": "#/definitions/DefaultFilterDropDownControlOptions" + }, + "DefaultListOptions": { + "$ref": "#/definitions/DefaultFilterListControlOptions" + }, + "DefaultRelativeDateTimeOptions": { + "$ref": "#/definitions/DefaultRelativeDateTimeControlOptions" + }, + "DefaultSliderOptions": { + "$ref": "#/definitions/DefaultSliderControlOptions" + }, + "DefaultTextAreaOptions": { + "$ref": "#/definitions/DefaultTextAreaControlOptions" + }, + "DefaultTextFieldOptions": { + "$ref": "#/definitions/DefaultTextFieldControlOptions" + } + }, + "type": "object" + }, + "DefaultFilterDropDownControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "type": "object" + }, + "DefaultFilterListControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "type": "object" + }, + "DefaultFreeFormLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultGridLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultInteractiveLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "FreeForm": { + "$ref": "#/definitions/DefaultFreeFormLayoutConfiguration" + }, + "Grid": { + "$ref": "#/definitions/DefaultGridLayoutConfiguration" + } + }, + "type": "object" + }, + "DefaultNewSheetConfiguration": { + "additionalProperties": false, + "properties": { + "InteractiveLayoutConfiguration": { + "$ref": "#/definitions/DefaultInteractiveLayoutConfiguration" + }, + "PaginatedLayoutConfiguration": { + "$ref": "#/definitions/DefaultPaginatedLayoutConfiguration" + }, + "SheetContentType": { + "$ref": "#/definitions/SheetContentType" + } + }, + "type": "object" + }, + "DefaultPaginatedLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "SectionBased": { + "$ref": "#/definitions/DefaultSectionBasedLayoutConfiguration" + } + }, + "type": "object" + }, + "DefaultRelativeDateTimeControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" + } + }, + "type": "object" + }, + "DefaultSectionBasedLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/SectionBasedLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultSliderControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Type": { + "$ref": "#/definitions/SheetControlSliderType" + } + }, + "required": [ + "MaximumValue", + "MinimumValue", + "StepSize" + ], + "type": "object" + }, + "DefaultTextAreaControlOptions": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + } + }, + "type": "object" + }, + "DefaultTextFieldControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + } + }, + "type": "object" + }, + "DestinationParameterValueConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValuesConfiguration": { + "$ref": "#/definitions/CustomValuesConfiguration" + }, + "SelectAllValueOptions": { + "$ref": "#/definitions/SelectAllValueOptions" + }, + "SourceColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SourceField": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "SourceParameterName": { + "type": "string" + } + }, + "type": "object" + }, + "DigitGroupingStyle": { + "enum": [ + "DEFAULT", + "LAKHS" + ], + "type": "string" + }, + "DimensionField": { + "additionalProperties": false, + "properties": { + "CategoricalDimensionField": { + "$ref": "#/definitions/CategoricalDimensionField" + }, + "DateDimensionField": { + "$ref": "#/definitions/DateDimensionField" + }, + "NumericalDimensionField": { + "$ref": "#/definitions/NumericalDimensionField" + } + }, + "type": "object" + }, + "DonutCenterOptions": { + "additionalProperties": false, + "properties": { + "LabelVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "DonutOptions": { + "additionalProperties": false, + "properties": { + "ArcOptions": { + "$ref": "#/definitions/ArcOptions" + }, + "DonutCenterOptions": { + "$ref": "#/definitions/DonutCenterOptions" + } + }, + "type": "object" + }, + "DrillDownFilter": { + "additionalProperties": false, + "properties": { + "CategoryFilter": { + "$ref": "#/definitions/CategoryDrillDownFilter" + }, + "NumericEqualityFilter": { + "$ref": "#/definitions/NumericEqualityDrillDownFilter" + }, + "TimeRangeFilter": { + "$ref": "#/definitions/TimeRangeDrillDownFilter" + } + }, + "type": "object" + }, + "DropDownControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "SelectAllOptions": { + "$ref": "#/definitions/ListControlSelectAllOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "DynamicDefaultValue": { + "additionalProperties": false, + "properties": { + "DefaultValueColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "GroupNameColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "UserNameColumn": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "DefaultValueColumn" + ], + "type": "object" + }, + "EmptyVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "Entity": { + "additionalProperties": false, + "properties": { + "Path": { + "pattern": "\\S", + "type": "string" + } + }, + "type": "object" + }, + "ExcludePeriodConfiguration": { + "additionalProperties": false, + "properties": { + "Amount": { + "default": null, + "type": "number" + }, + "Granularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + } + }, + "required": [ + "Amount", + "Granularity" + ], + "type": "object" + }, + "ExplicitHierarchy": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Columns", + "HierarchyId" + ], + "type": "object" + }, + "FieldBasedTooltip": { + "additionalProperties": false, + "properties": { + "AggregationVisibility": { + "$ref": "#/definitions/Visibility" + }, + "TooltipFields": { + "items": { + "$ref": "#/definitions/TooltipItem" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "TooltipTitleType": { + "$ref": "#/definitions/TooltipTitleType" + } + }, + "type": "object" + }, + "FieldLabelType": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "FieldSeriesItem": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Settings": { + "$ref": "#/definitions/LineChartSeriesSettings" + } + }, + "required": [ + "AxisBinding", + "FieldId" + ], + "type": "object" + }, + "FieldSort": { + "additionalProperties": false, + "properties": { + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Direction", + "FieldId" + ], + "type": "object" + }, + "FieldSortOptions": { + "additionalProperties": false, + "properties": { + "ColumnSort": { + "$ref": "#/definitions/ColumnSort" + }, + "FieldSort": { + "$ref": "#/definitions/FieldSort" + } + }, + "type": "object" + }, + "FieldTooltipItem": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Label": { + "type": "string" + }, + "TooltipTarget": { + "$ref": "#/definitions/TooltipTarget" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "FilledMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Geospatial": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilledMapConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/FilledMapConditionalFormattingOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "ConditionalFormattingOptions" + ], + "type": "object" + }, + "FilledMapConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Shape": { + "$ref": "#/definitions/FilledMapShapeConditionalFormatting" + } + }, + "required": [ + "Shape" + ], + "type": "object" + }, + "FilledMapConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/FilledMapFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "MapStyleOptions": { + "$ref": "#/definitions/GeospatialMapStyleOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/FilledMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "WindowOptions": { + "$ref": "#/definitions/GeospatialWindowOptions" + } + }, + "type": "object" + }, + "FilledMapFieldWells": { + "additionalProperties": false, + "properties": { + "FilledMapAggregatedFieldWells": { + "$ref": "#/definitions/FilledMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "FilledMapShapeConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Format": { + "$ref": "#/definitions/ShapeConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "FilledMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilledMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/FilledMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/FilledMapConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "CategoryFilter": { + "$ref": "#/definitions/CategoryFilter" + }, + "NestedFilter": { + "$ref": "#/definitions/NestedFilter" + }, + "NumericEqualityFilter": { + "$ref": "#/definitions/NumericEqualityFilter" + }, + "NumericRangeFilter": { + "$ref": "#/definitions/NumericRangeFilter" + }, + "RelativeDatesFilter": { + "$ref": "#/definitions/RelativeDatesFilter" + }, + "TimeEqualityFilter": { + "$ref": "#/definitions/TimeEqualityFilter" + }, + "TimeRangeFilter": { + "$ref": "#/definitions/TimeRangeFilter" + }, + "TopBottomFilter": { + "$ref": "#/definitions/TopBottomFilter" + } + }, + "type": "object" + }, + "FilterControl": { + "additionalProperties": false, + "properties": { + "CrossSheet": { + "$ref": "#/definitions/FilterCrossSheetControl" + }, + "DateTimePicker": { + "$ref": "#/definitions/FilterDateTimePickerControl" + }, + "Dropdown": { + "$ref": "#/definitions/FilterDropDownControl" + }, + "List": { + "$ref": "#/definitions/FilterListControl" + }, + "RelativeDateTime": { + "$ref": "#/definitions/FilterRelativeDateTimeControl" + }, + "Slider": { + "$ref": "#/definitions/FilterSliderControl" + }, + "TextArea": { + "$ref": "#/definitions/FilterTextAreaControl" + }, + "TextField": { + "$ref": "#/definitions/FilterTextFieldControl" + } + }, + "type": "object" + }, + "FilterCrossSheetControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId" + ], + "type": "object" + }, + "FilterDateTimePickerControl": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlDateTimePickerType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterDropDownControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterGroup": { + "additionalProperties": false, + "properties": { + "CrossDataset": { + "$ref": "#/definitions/CrossDatasetTypes" + }, + "FilterGroupId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "ScopeConfiguration": { + "$ref": "#/definitions/FilterScopeConfiguration" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + } + }, + "required": [ + "CrossDataset", + "FilterGroupId", + "Filters", + "ScopeConfiguration" + ], + "type": "object" + }, + "FilterListConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator" + ], + "type": "object" + }, + "FilterListControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterNullOption": { + "enum": [ + "ALL_VALUES", + "NULLS_ONLY", + "NON_NULLS_ONLY" + ], + "type": "string" + }, + "FilterOperationSelectedFieldsConfiguration": { + "additionalProperties": false, + "properties": { + "SelectedColumns": { + "description": "

The selected columns of a dataset.

", + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "SelectedFieldOptions": { + "$ref": "#/definitions/SelectedFieldOptions" + }, + "SelectedFields": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "FilterOperationTargetVisualsConfiguration": { + "additionalProperties": false, + "properties": { + "SameSheetTargetVisualConfiguration": { + "$ref": "#/definitions/SameSheetTargetVisualConfiguration" + } + }, + "type": "object" + }, + "FilterRelativeDateTimeControl": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterScopeConfiguration": { + "additionalProperties": false, + "properties": { + "AllSheets": { + "$ref": "#/definitions/AllSheetsFilterScopeConfiguration" + }, + "SelectedSheets": { + "$ref": "#/definitions/SelectedSheetsFilterScopeConfiguration" + } + }, + "type": "object" + }, + "FilterSelectableValues": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilterSliderControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlSliderType" + } + }, + "required": [ + "FilterControlId", + "MaximumValue", + "MinimumValue", + "SourceFilterId", + "StepSize", + "Title" + ], + "type": "object" + }, + "FilterTextAreaControl": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterTextFieldControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterVisualScope": { + "enum": [ + "ALL_VISUALS", + "SELECTED_VISUALS" + ], + "type": "string" + }, + "FontConfiguration": { + "additionalProperties": false, + "properties": { + "FontColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FontDecoration": { + "$ref": "#/definitions/FontDecoration" + }, + "FontFamily": { + "type": "string" + }, + "FontSize": { + "$ref": "#/definitions/FontSize" + }, + "FontStyle": { + "$ref": "#/definitions/FontStyle" + }, + "FontWeight": { + "$ref": "#/definitions/FontWeight" + } + }, + "type": "object" + }, + "FontDecoration": { + "enum": [ + "UNDERLINE", + "NONE" + ], + "type": "string" + }, + "FontSize": { + "additionalProperties": false, + "properties": { + "Absolute": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "Relative": { + "$ref": "#/definitions/RelativeFontSize" + } + }, + "type": "object" + }, + "FontStyle": { + "enum": [ + "NORMAL", + "ITALIC" + ], + "type": "string" + }, + "FontWeight": { + "additionalProperties": false, + "properties": { + "Name": { + "$ref": "#/definitions/FontWeightName" + } + }, + "type": "object" + }, + "FontWeightName": { + "enum": [ + "NORMAL", + "BOLD" + ], + "type": "string" + }, + "ForecastComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "CustomSeasonalityValue": { + "default": null, + "maximum": 180, + "minimum": 1, + "type": "number" + }, + "LowerBoundary": { + "default": null, + "type": "number" + }, + "Name": { + "type": "string" + }, + "PeriodsBackward": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "PeriodsForward": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "PredictionInterval": { + "maximum": 95, + "minimum": 50, + "type": "number" + }, + "Seasonality": { + "$ref": "#/definitions/ForecastComputationSeasonality" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "UpperBoundary": { + "default": null, + "type": "number" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "ForecastComputationSeasonality": { + "enum": [ + "AUTOMATIC", + "CUSTOM" + ], + "type": "string" + }, + "ForecastConfiguration": { + "additionalProperties": false, + "properties": { + "ForecastProperties": { + "$ref": "#/definitions/TimeBasedForecastProperties" + }, + "Scenario": { + "$ref": "#/definitions/ForecastScenario" + } + }, + "type": "object" + }, + "ForecastScenario": { + "additionalProperties": false, + "properties": { + "WhatIfPointScenario": { + "$ref": "#/definitions/WhatIfPointScenario" + }, + "WhatIfRangeScenario": { + "$ref": "#/definitions/WhatIfRangeScenario" + } + }, + "type": "object" + }, + "FormatConfiguration": { + "additionalProperties": false, + "properties": { + "DateTimeFormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + }, + "NumberFormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + }, + "StringFormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + } + }, + "type": "object" + }, + "FreeFormLayoutCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "ScreenCanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutScreenCanvasSizeOptions" + } + }, + "type": "object" + }, + "FreeFormLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" + }, + "Elements": { + "items": { + "$ref": "#/definitions/FreeFormLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "FreeFormLayoutElement": { + "additionalProperties": false, + "properties": { + "BackgroundStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBackgroundStyle" + }, + "BorderStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" + }, + "ElementId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ElementType": { + "$ref": "#/definitions/LayoutElementType" + }, + "Height": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "LoadingAnimation": { + "$ref": "#/definitions/LoadingAnimation" + }, + "RenderingRules": { + "items": { + "$ref": "#/definitions/SheetElementRenderingRule" + }, + "maxItems": 10000, + "minItems": 0, + "type": "array" + }, + "SelectedBorderStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "XAxisLocation": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "YAxisLocation": { + "description": "String based length that is composed of value and unit in px with Integer.MAX_VALUE as maximum value", + "type": "string" + } + }, + "required": [ + "ElementId", + "ElementType", + "Height", + "Width", + "XAxisLocation", + "YAxisLocation" + ], + "type": "object" + }, + "FreeFormLayoutElementBackgroundStyle": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "FreeFormLayoutElementBorderStyle": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "FreeFormLayoutScreenCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "OptimizedViewPortWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "OptimizedViewPortWidth" + ], + "type": "object" + }, + "FreeFormSectionLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "Elements": { + "items": { + "$ref": "#/definitions/FreeFormLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "FunnelChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FunnelChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "DataLabelOptions": { + "$ref": "#/definitions/FunnelChartDataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/FunnelChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/FunnelChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "FunnelChartDataLabelOptions": { + "additionalProperties": false, + "properties": { + "CategoryLabelVisibility": { + "$ref": "#/definitions/Visibility" + }, + "LabelColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "LabelFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "MeasureDataLabelStyle": { + "$ref": "#/definitions/FunnelChartMeasureDataLabelStyle" + }, + "MeasureLabelVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Position": { + "$ref": "#/definitions/DataLabelPosition" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "FunnelChartFieldWells": { + "additionalProperties": false, + "properties": { + "FunnelChartAggregatedFieldWells": { + "$ref": "#/definitions/FunnelChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "FunnelChartMeasureDataLabelStyle": { + "enum": [ + "VALUE_ONLY", + "PERCENTAGE_BY_FIRST_STAGE", + "PERCENTAGE_BY_PREVIOUS_STAGE", + "VALUE_AND_PERCENTAGE_BY_FIRST_STAGE", + "VALUE_AND_PERCENTAGE_BY_PREVIOUS_STAGE" + ], + "type": "string" + }, + "FunnelChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FunnelChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/FunnelChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GaugeChartArcConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ForegroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "GaugeChartColorConfiguration": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "ForegroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "type": "object" + }, + "GaugeChartConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/GaugeChartConditionalFormattingOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GaugeChartConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Arc": { + "$ref": "#/definitions/GaugeChartArcConditionalFormatting" + }, + "PrimaryValue": { + "$ref": "#/definitions/GaugeChartPrimaryValueConditionalFormatting" + } + }, + "type": "object" + }, + "GaugeChartConfiguration": { + "additionalProperties": false, + "properties": { + "ColorConfiguration": { + "$ref": "#/definitions/GaugeChartColorConfiguration" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/GaugeChartFieldWells" + }, + "GaugeChartOptions": { + "$ref": "#/definitions/GaugeChartOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "TooltipOptions": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "GaugeChartFieldWells": { + "additionalProperties": false, + "properties": { + "TargetValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GaugeChartOptions": { + "additionalProperties": false, + "properties": { + "Arc": { + "$ref": "#/definitions/ArcConfiguration" + }, + "ArcAxis": { + "$ref": "#/definitions/ArcAxisConfiguration" + }, + "Comparison": { + "$ref": "#/definitions/ComparisonConfiguration" + }, + "PrimaryValueDisplayType": { + "$ref": "#/definitions/PrimaryValueDisplayType" + }, + "PrimaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + } + }, + "type": "object" + }, + "GaugeChartPrimaryValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "GaugeChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/GaugeChartConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/GaugeChartConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GeospatialCategoricalColor": { + "additionalProperties": false, + "properties": { + "CategoryDataColors": { + "items": { + "$ref": "#/definitions/GeospatialCategoricalDataColor" + }, + "type": "array" + }, + "DefaultOpacity": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "NullDataSettings": { + "$ref": "#/definitions/GeospatialNullDataSettings" + }, + "NullDataVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "CategoryDataColors" + ], + "type": "object" + }, + "GeospatialCategoricalDataColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "DataValue": { + "type": "string" + } + }, + "required": [ + "Color", + "DataValue" + ], + "type": "object" + }, + "GeospatialCircleRadius": { + "additionalProperties": false, + "properties": { + "Radius": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "GeospatialCircleSymbolStyle": { + "additionalProperties": false, + "properties": { + "CircleRadius": { + "$ref": "#/definitions/GeospatialCircleRadius" + }, + "FillColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "StrokeColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "StrokeWidth": { + "$ref": "#/definitions/GeospatialLineWidth" + } + }, + "type": "object" + }, + "GeospatialColor": { + "additionalProperties": false, + "properties": { + "Categorical": { + "$ref": "#/definitions/GeospatialCategoricalColor" + }, + "Gradient": { + "$ref": "#/definitions/GeospatialGradientColor" + }, + "Solid": { + "$ref": "#/definitions/GeospatialSolidColor" + } + }, + "type": "object" + }, + "GeospatialColorState": { + "description": "Defines view state of the color", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "GeospatialCoordinateBounds": { + "additionalProperties": false, + "properties": { + "East": { + "maximum": 1800, + "minimum": -1800, + "type": "number" + }, + "North": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "South": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "West": { + "maximum": 1800, + "minimum": -1800, + "type": "number" + } + }, + "required": [ + "East", + "North", + "South", + "West" + ], + "type": "object" + }, + "GeospatialDataSourceItem": { + "additionalProperties": false, + "properties": { + "StaticFileDataSource": { + "$ref": "#/definitions/GeospatialStaticFileSource" + } + }, + "type": "object" + }, + "GeospatialGradientColor": { + "additionalProperties": false, + "properties": { + "DefaultOpacity": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "NullDataSettings": { + "$ref": "#/definitions/GeospatialNullDataSettings" + }, + "NullDataVisibility": { + "$ref": "#/definitions/Visibility" + }, + "StepColors": { + "items": { + "$ref": "#/definitions/GeospatialGradientStepColor" + }, + "maxItems": 3, + "minItems": 2, + "type": "array" + } + }, + "required": [ + "StepColors" + ], + "type": "object" + }, + "GeospatialGradientStepColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "DataValue": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Color", + "DataValue" + ], + "type": "object" + }, + "GeospatialHeatmapColorScale": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/GeospatialHeatmapDataColor" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + } + }, + "type": "object" + }, + "GeospatialHeatmapConfiguration": { + "additionalProperties": false, + "properties": { + "HeatmapColor": { + "$ref": "#/definitions/GeospatialHeatmapColorScale" + } + }, + "type": "object" + }, + "GeospatialHeatmapDataColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "required": [ + "Color" + ], + "type": "object" + }, + "GeospatialLayerColorField": { + "additionalProperties": false, + "properties": { + "ColorDimensionsFields": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "ColorValuesFields": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GeospatialLayerDefinition": { + "additionalProperties": false, + "properties": { + "LineLayer": { + "$ref": "#/definitions/GeospatialLineLayer" + }, + "PointLayer": { + "$ref": "#/definitions/GeospatialPointLayer" + }, + "PolygonLayer": { + "$ref": "#/definitions/GeospatialPolygonLayer" + } + }, + "type": "object" + }, + "GeospatialLayerItem": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/LayerCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "DataSource": { + "$ref": "#/definitions/GeospatialDataSourceItem" + }, + "JoinDefinition": { + "$ref": "#/definitions/GeospatialLayerJoinDefinition" + }, + "Label": { + "type": "string" + }, + "LayerDefinition": { + "$ref": "#/definitions/GeospatialLayerDefinition" + }, + "LayerId": { + "type": "string" + }, + "LayerType": { + "$ref": "#/definitions/GeospatialLayerType" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "LayerId" + ], + "type": "object" + }, + "GeospatialLayerJoinDefinition": { + "additionalProperties": false, + "properties": { + "ColorField": { + "$ref": "#/definitions/GeospatialLayerColorField" + }, + "DatasetKeyField": { + "$ref": "#/definitions/UnaggregatedField" + }, + "ShapeKeyField": { + "type": "string" + } + }, + "type": "object" + }, + "GeospatialLayerMapConfiguration": { + "additionalProperties": false, + "properties": { + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "MapLayers": { + "items": { + "$ref": "#/definitions/GeospatialLayerItem" + }, + "type": "array" + }, + "MapState": { + "$ref": "#/definitions/GeospatialMapState" + }, + "MapStyle": { + "$ref": "#/definitions/GeospatialMapStyle" + } + }, + "type": "object" + }, + "GeospatialLayerType": { + "enum": [ + "POINT", + "LINE", + "POLYGON" + ], + "type": "string" + }, + "GeospatialLineLayer": { + "additionalProperties": false, + "properties": { + "Style": { + "$ref": "#/definitions/GeospatialLineStyle" + } + }, + "required": [ + "Style" + ], + "type": "object" + }, + "GeospatialLineStyle": { + "additionalProperties": false, + "properties": { + "LineSymbolStyle": { + "$ref": "#/definitions/GeospatialLineSymbolStyle" + } + }, + "type": "object" + }, + "GeospatialLineSymbolStyle": { + "additionalProperties": false, + "properties": { + "FillColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "LineWidth": { + "$ref": "#/definitions/GeospatialLineWidth" + } + }, + "type": "object" + }, + "GeospatialLineWidth": { + "additionalProperties": false, + "properties": { + "LineWidth": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "GeospatialMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Geospatial": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GeospatialMapConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/GeospatialMapFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "MapStyleOptions": { + "$ref": "#/definitions/GeospatialMapStyleOptions" + }, + "PointStyleOptions": { + "$ref": "#/definitions/GeospatialPointStyleOptions" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "WindowOptions": { + "$ref": "#/definitions/GeospatialWindowOptions" + } + }, + "type": "object" + }, + "GeospatialMapFieldWells": { + "additionalProperties": false, + "properties": { + "GeospatialMapAggregatedFieldWells": { + "$ref": "#/definitions/GeospatialMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "GeospatialMapNavigation": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "GeospatialMapState": { + "additionalProperties": false, + "properties": { + "Bounds": { + "$ref": "#/definitions/GeospatialCoordinateBounds" + }, + "MapNavigation": { + "$ref": "#/definitions/GeospatialMapNavigation" + } + }, + "type": "object" + }, + "GeospatialMapStyle": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "BaseMapStyle": { + "$ref": "#/definitions/BaseMapStyleType" + }, + "BaseMapVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "GeospatialMapStyleOptions": { + "additionalProperties": false, + "properties": { + "BaseMapStyle": { + "$ref": "#/definitions/BaseMapStyleType" + } + }, + "type": "object" + }, + "GeospatialMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/GeospatialMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GeospatialNullDataSettings": { + "additionalProperties": false, + "properties": { + "SymbolStyle": { + "$ref": "#/definitions/GeospatialNullSymbolStyle" + } + }, + "required": [ + "SymbolStyle" + ], + "type": "object" + }, + "GeospatialNullSymbolStyle": { + "additionalProperties": false, + "properties": { + "FillColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "StrokeColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "StrokeWidth": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "GeospatialPointLayer": { + "additionalProperties": false, + "properties": { + "Style": { + "$ref": "#/definitions/GeospatialPointStyle" + } + }, + "required": [ + "Style" + ], + "type": "object" + }, + "GeospatialPointStyle": { + "additionalProperties": false, + "properties": { + "CircleSymbolStyle": { + "$ref": "#/definitions/GeospatialCircleSymbolStyle" + } + }, + "type": "object" + }, + "GeospatialPointStyleOptions": { + "additionalProperties": false, + "properties": { + "ClusterMarkerConfiguration": { + "$ref": "#/definitions/ClusterMarkerConfiguration" + }, + "HeatmapConfiguration": { + "$ref": "#/definitions/GeospatialHeatmapConfiguration" + }, + "SelectedPointStyle": { + "$ref": "#/definitions/GeospatialSelectedPointStyle" + } + }, + "type": "object" + }, + "GeospatialPolygonLayer": { + "additionalProperties": false, + "properties": { + "Style": { + "$ref": "#/definitions/GeospatialPolygonStyle" + } + }, + "required": [ + "Style" + ], + "type": "object" + }, + "GeospatialPolygonStyle": { + "additionalProperties": false, + "properties": { + "PolygonSymbolStyle": { + "$ref": "#/definitions/GeospatialPolygonSymbolStyle" + } + }, + "type": "object" + }, + "GeospatialPolygonSymbolStyle": { + "additionalProperties": false, + "properties": { + "FillColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "StrokeColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "StrokeWidth": { + "$ref": "#/definitions/GeospatialLineWidth" + } + }, + "type": "object" + }, + "GeospatialSelectedPointStyle": { + "enum": [ + "POINT", + "CLUSTER", + "HEATMAP" + ], + "type": "string" + }, + "GeospatialSolidColor": { + "additionalProperties": false, + "description": "Describes the properties for a solid color", + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "State": { + "$ref": "#/definitions/GeospatialColorState" + } + }, + "required": [ + "Color" + ], + "type": "object" + }, + "GeospatialStaticFileSource": { + "additionalProperties": false, + "properties": { + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "GeospatialWindowOptions": { + "additionalProperties": false, + "properties": { + "Bounds": { + "$ref": "#/definitions/GeospatialCoordinateBounds" + }, + "MapZoomMode": { + "$ref": "#/definitions/MapZoomMode" + } + }, + "type": "object" + }, + "GlobalTableBorderOptions": { + "additionalProperties": false, + "properties": { + "SideSpecificBorder": { + "$ref": "#/definitions/TableSideBorderOptions" + }, + "UniformBorder": { + "$ref": "#/definitions/TableBorderOptions" + } + }, + "type": "object" + }, + "GradientColor": { + "additionalProperties": false, + "properties": { + "Stops": { + "items": { + "$ref": "#/definitions/GradientStop" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GradientStop": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DataValue": { + "default": null, + "type": "number" + }, + "GradientOffset": { + "default": 0, + "type": "number" + } + }, + "required": [ + "GradientOffset" + ], + "type": "object" + }, + "GridLayoutCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "ScreenCanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutScreenCanvasSizeOptions" + } + }, + "type": "object" + }, + "GridLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutCanvasSizeOptions" + }, + "Elements": { + "items": { + "$ref": "#/definitions/GridLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "GridLayoutElement": { + "additionalProperties": false, + "properties": { + "ColumnIndex": { + "maximum": 35, + "minimum": 0, + "type": "number" + }, + "ColumnSpan": { + "maximum": 36, + "minimum": 1, + "type": "number" + }, + "ElementId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ElementType": { + "$ref": "#/definitions/LayoutElementType" + }, + "RowIndex": { + "maximum": 9009, + "minimum": 0, + "type": "number" + }, + "RowSpan": { + "maximum": 21, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "ColumnSpan", + "ElementId", + "ElementType", + "RowSpan" + ], + "type": "object" + }, + "GridLayoutScreenCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "OptimizedViewPortWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "ResizeOption": { + "$ref": "#/definitions/ResizeOption" + } + }, + "required": [ + "ResizeOption" + ], + "type": "object" + }, + "GrowthRateComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "PeriodSize": { + "default": 0, + "maximum": 52, + "minimum": 2, + "type": "number" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "HeaderFooterSectionConfiguration": { + "additionalProperties": false, + "properties": { + "Layout": { + "$ref": "#/definitions/SectionLayoutConfiguration" + }, + "SectionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/SectionStyle" + } + }, + "required": [ + "Layout", + "SectionId" + ], + "type": "object" + }, + "HeatMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Rows": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HeatMapConfiguration": { + "additionalProperties": false, + "properties": { + "ColorScale": { + "$ref": "#/definitions/ColorScale" + }, + "ColumnLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/HeatMapFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "RowLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/HeatMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + } + }, + "type": "object" + }, + "HeatMapFieldWells": { + "additionalProperties": false, + "properties": { + "HeatMapAggregatedFieldWells": { + "$ref": "#/definitions/HeatMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "HeatMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "HeatMapColumnItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "HeatMapColumnSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "HeatMapRowItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "HeatMapRowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HeatMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/HeatMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "HistogramAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HistogramBinOptions": { + "additionalProperties": false, + "properties": { + "BinCount": { + "$ref": "#/definitions/BinCountOptions" + }, + "BinWidth": { + "$ref": "#/definitions/BinWidthOptions" + }, + "SelectedBinType": { + "$ref": "#/definitions/HistogramBinType" + }, + "StartValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "HistogramBinType": { + "enum": [ + "BIN_COUNT", + "BIN_WIDTH" + ], + "type": "string" + }, + "HistogramConfiguration": { + "additionalProperties": false, + "properties": { + "BinOptions": { + "$ref": "#/definitions/HistogramBinOptions" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/HistogramFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "XAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "XAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "YAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + } + }, + "type": "object" + }, + "HistogramFieldWells": { + "additionalProperties": false, + "properties": { + "HistogramAggregatedFieldWells": { + "$ref": "#/definitions/HistogramAggregatedFieldWells" + } + }, + "type": "object" + }, + "HistogramVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/HistogramConfiguration" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "HorizontalTextAlignment": { + "enum": [ + "LEFT", + "CENTER", + "RIGHT", + "AUTO" + ], + "type": "string" + }, + "Icon": { + "enum": [ + "CARET_UP", + "CARET_DOWN", + "PLUS", + "MINUS", + "ARROW_UP", + "ARROW_DOWN", + "ARROW_LEFT", + "ARROW_UP_LEFT", + "ARROW_DOWN_LEFT", + "ARROW_RIGHT", + "ARROW_UP_RIGHT", + "ARROW_DOWN_RIGHT", + "FACE_UP", + "FACE_DOWN", + "FACE_FLAT", + "ONE_BAR", + "TWO_BAR", + "THREE_BAR", + "CIRCLE", + "TRIANGLE", + "SQUARE", + "FLAG", + "THUMBS_UP", + "THUMBS_DOWN", + "CHECKMARK", + "X" + ], + "type": "string" + }, + "ImageCustomAction": { + "additionalProperties": false, + "properties": { + "ActionOperations": { + "items": { + "$ref": "#/definitions/ImageCustomActionOperation" + }, + "maxItems": 2, + "minItems": 1, + "type": "array" + }, + "CustomActionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "Trigger": { + "$ref": "#/definitions/ImageCustomActionTrigger" + } + }, + "required": [ + "ActionOperations", + "CustomActionId", + "Name", + "Trigger" + ], + "type": "object" + }, + "ImageCustomActionOperation": { + "additionalProperties": false, + "properties": { + "NavigationOperation": { + "$ref": "#/definitions/CustomActionNavigationOperation" + }, + "SetParametersOperation": { + "$ref": "#/definitions/CustomActionSetParametersOperation" + }, + "URLOperation": { + "$ref": "#/definitions/CustomActionURLOperation" + } + }, + "type": "object" + }, + "ImageCustomActionTrigger": { + "enum": [ + "CLICK", + "MENU" + ], + "type": "string" + }, + "ImageInteractionOptions": { + "additionalProperties": false, + "properties": { + "ImageMenuOption": { + "$ref": "#/definitions/ImageMenuOption" + } + }, + "type": "object" + }, + "ImageMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "ImageStaticFile": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/StaticFileSource" + }, + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "InnerFilter": { + "additionalProperties": false, + "properties": { + "CategoryInnerFilter": { + "$ref": "#/definitions/CategoryInnerFilter" + } + }, + "type": "object" + }, + "InsightConfiguration": { + "additionalProperties": false, + "properties": { + "Computations": { + "items": { + "$ref": "#/definitions/Computation" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "CustomNarrative": { + "$ref": "#/definitions/CustomNarrativeOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + } + }, + "type": "object" + }, + "InsightVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "InsightConfiguration": { + "$ref": "#/definitions/InsightConfiguration" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "IntegerDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "IntegerParameter": { + "additionalProperties": false, + "description": "

An integer parameter.

", + "properties": { + "Name": { + "description": "

The name of the integer parameter.

", + "pattern": "\\S", + "type": "string" + }, + "Values": { + "description": "

The values for the integer parameter.

", + "items": { + "default": 0, + "type": "number" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "IntegerParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/IntegerDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/IntegerValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "IntegerValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "default": null, + "type": "number" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "ItemsLimitConfiguration": { + "additionalProperties": false, + "properties": { + "ItemsLimit": { + "default": null, + "type": "number" + }, + "OtherCategories": { + "$ref": "#/definitions/OtherCategories" + } + }, + "type": "object" + }, + "KPIActualValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIComparisonValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/KPIConditionalFormattingOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPIConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "ActualValue": { + "$ref": "#/definitions/KPIActualValueConditionalFormatting" + }, + "ComparisonValue": { + "$ref": "#/definitions/KPIComparisonValueConditionalFormatting" + }, + "PrimaryValue": { + "$ref": "#/definitions/KPIPrimaryValueConditionalFormatting" + }, + "ProgressBar": { + "$ref": "#/definitions/KPIProgressBarConditionalFormatting" + } + }, + "type": "object" + }, + "KPIConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/KPIFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "KPIOptions": { + "$ref": "#/definitions/KPIOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/KPISortConfiguration" + } + }, + "type": "object" + }, + "KPIFieldWells": { + "additionalProperties": false, + "properties": { + "TargetValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TrendGroups": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPIOptions": { + "additionalProperties": false, + "properties": { + "Comparison": { + "$ref": "#/definitions/ComparisonConfiguration" + }, + "PrimaryValueDisplayType": { + "$ref": "#/definitions/PrimaryValueDisplayType" + }, + "PrimaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "ProgressBar": { + "$ref": "#/definitions/ProgressBarOptions" + }, + "SecondaryValue": { + "$ref": "#/definitions/SecondaryValueOptions" + }, + "SecondaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Sparkline": { + "$ref": "#/definitions/KPISparklineOptions" + }, + "TrendArrows": { + "$ref": "#/definitions/TrendArrowOptions" + }, + "VisualLayoutOptions": { + "$ref": "#/definitions/KPIVisualLayoutOptions" + } + }, + "type": "object" + }, + "KPIPrimaryValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIProgressBarConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ForegroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPISortConfiguration": { + "additionalProperties": false, + "properties": { + "TrendGroupSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPISparklineOptions": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "TooltipVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Type": { + "$ref": "#/definitions/KPISparklineType" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "KPISparklineType": { + "enum": [ + "LINE", + "AREA" + ], + "type": "string" + }, + "KPIVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/KPIConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/KPIConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "KPIVisualLayoutOptions": { + "additionalProperties": false, + "properties": { + "StandardLayout": { + "$ref": "#/definitions/KPIVisualStandardLayout" + } + }, + "type": "object" + }, + "KPIVisualStandardLayout": { + "additionalProperties": false, + "properties": { + "Type": { + "$ref": "#/definitions/KPIVisualStandardLayoutType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "KPIVisualStandardLayoutType": { + "enum": [ + "CLASSIC", + "VERTICAL" + ], + "type": "string" + }, + "LabelOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "LayerCustomAction": { + "additionalProperties": false, + "properties": { + "ActionOperations": { + "items": { + "$ref": "#/definitions/LayerCustomActionOperation" + }, + "maxItems": 2, + "minItems": 1, + "type": "array" + }, + "CustomActionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "Trigger": { + "$ref": "#/definitions/LayerCustomActionTrigger" + } + }, + "required": [ + "ActionOperations", + "CustomActionId", + "Name", + "Trigger" + ], + "type": "object" + }, + "LayerCustomActionOperation": { + "additionalProperties": false, + "properties": { + "FilterOperation": { + "$ref": "#/definitions/CustomActionFilterOperation" + }, + "NavigationOperation": { + "$ref": "#/definitions/CustomActionNavigationOperation" + }, + "SetParametersOperation": { + "$ref": "#/definitions/CustomActionSetParametersOperation" + }, + "URLOperation": { + "$ref": "#/definitions/CustomActionURLOperation" + } + }, + "type": "object" + }, + "LayerCustomActionTrigger": { + "enum": [ + "DATA_POINT_CLICK", + "DATA_POINT_MENU" + ], + "type": "string" + }, + "LayerMapVisual": { + "additionalProperties": false, + "properties": { + "ChartConfiguration": { + "$ref": "#/definitions/GeospatialLayerMapConfiguration" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "Layout": { + "additionalProperties": false, + "properties": { + "Configuration": { + "$ref": "#/definitions/LayoutConfiguration" + } + }, + "required": [ + "Configuration" + ], + "type": "object" + }, + "LayoutConfiguration": { + "additionalProperties": false, + "properties": { + "FreeFormLayout": { + "$ref": "#/definitions/FreeFormLayoutConfiguration" + }, + "GridLayout": { + "$ref": "#/definitions/GridLayoutConfiguration" + }, + "SectionBasedLayout": { + "$ref": "#/definitions/SectionBasedLayoutConfiguration" + } + }, + "type": "object" + }, + "LayoutElementType": { + "enum": [ + "VISUAL", + "FILTER_CONTROL", + "PARAMETER_CONTROL", + "TEXT_BOX", + "IMAGE" + ], + "type": "string" + }, + "LegendOptions": { + "additionalProperties": false, + "properties": { + "Height": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "Position": { + "$ref": "#/definitions/LegendPosition" + }, + "Title": { + "$ref": "#/definitions/LabelOptions" + }, + "ValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "type": "object" + }, + "LegendPosition": { + "enum": [ + "AUTO", + "RIGHT", + "BOTTOM", + "TOP" + ], + "type": "string" + }, + "LineChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "LineChartConfiguration": { + "additionalProperties": false, + "properties": { + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "DefaultSeriesSettings": { + "$ref": "#/definitions/LineChartDefaultSeriesSettings" + }, + "FieldWells": { + "$ref": "#/definitions/LineChartFieldWells" + }, + "ForecastConfigurations": { + "items": { + "$ref": "#/definitions/ForecastConfiguration" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/LineSeriesAxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SecondaryYAxisDisplayOptions": { + "$ref": "#/definitions/LineSeriesAxisDisplayOptions" + }, + "SecondaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "Series": { + "items": { + "$ref": "#/definitions/SeriesItem" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "SingleAxisOptions": { + "$ref": "#/definitions/SingleAxisOptions" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/LineChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "Type": { + "$ref": "#/definitions/LineChartType" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "XAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "XAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + } + }, + "type": "object" + }, + "LineChartDefaultSeriesSettings": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "LineStyleSettings": { + "$ref": "#/definitions/LineChartLineStyleSettings" + }, + "MarkerStyleSettings": { + "$ref": "#/definitions/LineChartMarkerStyleSettings" + } + }, + "type": "object" + }, + "LineChartFieldWells": { + "additionalProperties": false, + "properties": { + "LineChartAggregatedFieldWells": { + "$ref": "#/definitions/LineChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "LineChartLineStyle": { + "enum": [ + "SOLID", + "DOTTED", + "DASHED" + ], + "type": "string" + }, + "LineChartLineStyleSettings": { + "additionalProperties": false, + "properties": { + "LineInterpolation": { + "$ref": "#/definitions/LineInterpolation" + }, + "LineStyle": { + "$ref": "#/definitions/LineChartLineStyle" + }, + "LineVisibility": { + "$ref": "#/definitions/Visibility" + }, + "LineWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "type": "object" + }, + "LineChartMarkerShape": { + "enum": [ + "CIRCLE", + "TRIANGLE", + "SQUARE", + "DIAMOND", + "ROUNDED_SQUARE" + ], + "type": "string" + }, + "LineChartMarkerStyleSettings": { + "additionalProperties": false, + "properties": { + "MarkerColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "MarkerShape": { + "$ref": "#/definitions/LineChartMarkerShape" + }, + "MarkerSize": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "MarkerVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "LineChartSeriesSettings": { + "additionalProperties": false, + "properties": { + "LineStyleSettings": { + "$ref": "#/definitions/LineChartLineStyleSettings" + }, + "MarkerStyleSettings": { + "$ref": "#/definitions/LineChartMarkerStyleSettings" + } + }, + "type": "object" + }, + "LineChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "LineChartType": { + "enum": [ + "LINE", + "AREA", + "STACKED_AREA" + ], + "type": "string" + }, + "LineChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/LineChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "LineInterpolation": { + "enum": [ + "LINEAR", + "SMOOTH", + "STEPPED" + ], + "type": "string" + }, + "LineSeriesAxisDisplayOptions": { + "additionalProperties": false, + "properties": { + "AxisOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "MissingDataConfigurations": { + "items": { + "$ref": "#/definitions/MissingDataConfiguration" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ListControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "SearchOptions": { + "$ref": "#/definitions/ListControlSearchOptions" + }, + "SelectAllOptions": { + "$ref": "#/definitions/ListControlSelectAllOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "ListControlSearchOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "ListControlSelectAllOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "LoadingAnimation": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "LocalNavigationConfiguration": { + "additionalProperties": false, + "properties": { + "TargetSheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "TargetSheetId" + ], + "type": "object" + }, + "LongFormatText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "RichText": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "MapZoomMode": { + "enum": [ + "AUTO", + "MANUAL" + ], + "type": "string" + }, + "MappedDataSetParameter": { + "additionalProperties": false, + "properties": { + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DataSetParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "DataSetParameterName" + ], + "type": "object" + }, + "MaximumLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "MaximumMinimumComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Type": { + "$ref": "#/definitions/MaximumMinimumComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "MaximumMinimumComputationType": { + "enum": [ + "MAXIMUM", + "MINIMUM" + ], + "type": "string" + }, + "MeasureField": { + "additionalProperties": false, + "properties": { + "CalculatedMeasureField": { + "$ref": "#/definitions/CalculatedMeasureField" + }, + "CategoricalMeasureField": { + "$ref": "#/definitions/CategoricalMeasureField" + }, + "DateMeasureField": { + "$ref": "#/definitions/DateMeasureField" + }, + "NumericalMeasureField": { + "$ref": "#/definitions/NumericalMeasureField" + } + }, + "type": "object" + }, + "MetricComparisonComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "FromValue": { + "$ref": "#/definitions/MeasureField" + }, + "Name": { + "type": "string" + }, + "TargetValue": { + "$ref": "#/definitions/MeasureField" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "MinimumLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "MissingDataConfiguration": { + "additionalProperties": false, + "properties": { + "TreatmentOption": { + "$ref": "#/definitions/MissingDataTreatmentOption" + } + }, + "type": "object" + }, + "MissingDataTreatmentOption": { + "enum": [ + "INTERPOLATE", + "SHOW_AS_ZERO", + "SHOW_AS_BLANK" + ], + "type": "string" + }, + "NegativeValueConfiguration": { + "additionalProperties": false, + "properties": { + "DisplayMode": { + "$ref": "#/definitions/NegativeValueDisplayMode" + } + }, + "required": [ + "DisplayMode" + ], + "type": "object" + }, + "NegativeValueDisplayMode": { + "enum": [ + "POSITIVE", + "NEGATIVE" + ], + "type": "string" + }, + "NestedFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeInnerSet": { + "default": false, + "type": "boolean" + }, + "InnerFilter": { + "$ref": "#/definitions/InnerFilter" + } + }, + "required": [ + "Column", + "FilterId", + "IncludeInnerSet", + "InnerFilter" + ], + "type": "object" + }, + "NullValueFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NullString": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "NullString" + ], + "type": "object" + }, + "NumberDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumberScale": { + "$ref": "#/definitions/NumberScale" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "NumberFormatConfiguration": { + "additionalProperties": false, + "properties": { + "FormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "NumberScale": { + "enum": [ + "NONE", + "AUTO", + "THOUSANDS", + "MILLIONS", + "BILLIONS", + "TRILLIONS", + "LAKHS", + "CRORES" + ], + "type": "string" + }, + "NumericAxisOptions": { + "additionalProperties": false, + "properties": { + "Range": { + "$ref": "#/definitions/AxisDisplayRange" + }, + "Scale": { + "$ref": "#/definitions/AxisScale" + } + }, + "type": "object" + }, + "NumericEqualityDrillDownFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Column", + "Value" + ], + "type": "object" + }, + "NumericEqualityFilter": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MatchOperator": { + "$ref": "#/definitions/NumericEqualityMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "SelectAllOptions": { + "$ref": "#/definitions/NumericFilterSelectAllOptions" + }, + "Value": { + "default": null, + "type": "number" + } + }, + "required": [ + "Column", + "FilterId", + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "NumericEqualityMatchOperator": { + "enum": [ + "EQUALS", + "DOES_NOT_EQUAL" + ], + "type": "string" + }, + "NumericFilterSelectAllOptions": { + "enum": [ + "FILTER_ALL_VALUES" + ], + "type": "string" + }, + "NumericFormatConfiguration": { + "additionalProperties": false, + "properties": { + "CurrencyDisplayFormatConfiguration": { + "$ref": "#/definitions/CurrencyDisplayFormatConfiguration" + }, + "NumberDisplayFormatConfiguration": { + "$ref": "#/definitions/NumberDisplayFormatConfiguration" + }, + "PercentageDisplayFormatConfiguration": { + "$ref": "#/definitions/PercentageDisplayFormatConfiguration" + } + }, + "type": "object" + }, + "NumericRangeFilter": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeMaximum": { + "default": null, + "type": "boolean" + }, + "IncludeMinimum": { + "default": null, + "type": "boolean" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "RangeMaximum": { + "$ref": "#/definitions/NumericRangeFilterValue" + }, + "RangeMinimum": { + "$ref": "#/definitions/NumericRangeFilterValue" + }, + "SelectAllOptions": { + "$ref": "#/definitions/NumericFilterSelectAllOptions" + } + }, + "required": [ + "Column", + "FilterId", + "NullOption" + ], + "type": "object" + }, + "NumericRangeFilterValue": { + "additionalProperties": false, + "properties": { + "Parameter": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "StaticValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "NumericSeparatorConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalSeparator": { + "$ref": "#/definitions/NumericSeparatorSymbol" + }, + "ThousandsSeparator": { + "$ref": "#/definitions/ThousandSeparatorOptions" + } + }, + "type": "object" + }, + "NumericSeparatorSymbol": { + "enum": [ + "COMMA", + "DOT", + "SPACE" + ], + "type": "string" + }, + "NumericalAggregationFunction": { + "additionalProperties": false, + "properties": { + "PercentileAggregation": { + "$ref": "#/definitions/PercentileAggregation" + }, + "SimpleNumericalAggregation": { + "$ref": "#/definitions/SimpleNumericalAggregationFunction" + } + }, + "type": "object" + }, + "NumericalDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "NumericalMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/NumericalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "OtherCategories": { + "enum": [ + "INCLUDE", + "EXCLUDE" + ], + "type": "string" + }, + "PaginationConfiguration": { + "additionalProperties": false, + "properties": { + "PageNumber": { + "minimum": 0, + "type": "number" + }, + "PageSize": { + "default": null, + "type": "number" + } + }, + "required": [ + "PageNumber", + "PageSize" + ], + "type": "object" + }, + "PanelBorderStyle": { + "enum": [ + "SOLID", + "DASHED", + "DOTTED" + ], + "type": "string" + }, + "PanelConfiguration": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "BackgroundVisibility": { + "$ref": "#/definitions/Visibility" + }, + "BorderColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "BorderStyle": { + "$ref": "#/definitions/PanelBorderStyle" + }, + "BorderThickness": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "BorderVisibility": { + "$ref": "#/definitions/Visibility" + }, + "GutterSpacing": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "GutterVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Title": { + "$ref": "#/definitions/PanelTitleOptions" + } + }, + "type": "object" + }, + "PanelTitleOptions": { + "additionalProperties": false, + "properties": { + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "HorizontalTextAlignment": { + "$ref": "#/definitions/HorizontalTextAlignment" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "PaperOrientation": { + "enum": [ + "PORTRAIT", + "LANDSCAPE" + ], + "type": "string" + }, + "PaperSize": { + "enum": [ + "US_LETTER", + "US_LEGAL", + "US_TABLOID_LEDGER", + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "JIS_B4", + "JIS_B5" + ], + "type": "string" + }, + "ParameterControl": { + "additionalProperties": false, + "properties": { + "DateTimePicker": { + "$ref": "#/definitions/ParameterDateTimePickerControl" + }, + "Dropdown": { + "$ref": "#/definitions/ParameterDropDownControl" + }, + "List": { + "$ref": "#/definitions/ParameterListControl" + }, + "Slider": { + "$ref": "#/definitions/ParameterSliderControl" + }, + "TextArea": { + "$ref": "#/definitions/ParameterTextAreaControl" + }, + "TextField": { + "$ref": "#/definitions/ParameterTextFieldControl" + } + }, + "type": "object" + }, + "ParameterDateTimePickerControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DateTimeParameterDeclaration": { + "$ref": "#/definitions/DateTimeParameterDeclaration" + }, + "DecimalParameterDeclaration": { + "$ref": "#/definitions/DecimalParameterDeclaration" + }, + "IntegerParameterDeclaration": { + "$ref": "#/definitions/IntegerParameterDeclaration" + }, + "StringParameterDeclaration": { + "$ref": "#/definitions/StringParameterDeclaration" + } + }, + "type": "object" + }, + "ParameterDropDownControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/ParameterSelectableValues" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterListControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/ParameterSelectableValues" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterSelectableValues": { + "additionalProperties": false, + "properties": { + "LinkToDataSetColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Values": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ParameterSliderControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "MaximumValue", + "MinimumValue", + "ParameterControlId", + "SourceParameterName", + "StepSize", + "Title" + ], + "type": "object" + }, + "ParameterTextAreaControl": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterTextFieldControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterValueType": { + "enum": [ + "MULTI_VALUED", + "SINGLE_VALUED" + ], + "type": "string" + }, + "Parameters": { + "additionalProperties": false, + "description": "

A list of Amazon QuickSight parameters and the list's override values.

", + "properties": { + "DateTimeParameters": { + "description": "

The parameters that have a data type of date-time.

", + "items": { + "$ref": "#/definitions/DateTimeParameter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "DecimalParameters": { + "description": "

The parameters that have a data type of decimal.

", + "items": { + "$ref": "#/definitions/DecimalParameter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "IntegerParameters": { + "description": "

The parameters that have a data type of integer.

", + "items": { + "$ref": "#/definitions/IntegerParameter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "StringParameters": { + "description": "

The parameters that have a data type of string.

", + "items": { + "$ref": "#/definitions/StringParameter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PercentVisibleRange": { + "additionalProperties": false, + "properties": { + "From": { + "default": null, + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "To": { + "default": null, + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "PercentageDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "PercentileAggregation": { + "additionalProperties": false, + "properties": { + "PercentileValue": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "PeriodOverPeriodComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "PeriodToDateComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "PeriodTimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "PieChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PieChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "DonutOptions": { + "$ref": "#/definitions/DonutOptions" + }, + "FieldWells": { + "$ref": "#/definitions/PieChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/PieChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "PieChartFieldWells": { + "additionalProperties": false, + "properties": { + "PieChartAggregatedFieldWells": { + "$ref": "#/definitions/PieChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "PieChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PieChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/PieChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "PivotFieldSortOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "SortBy": { + "$ref": "#/definitions/PivotTableSortBy" + } + }, + "required": [ + "FieldId", + "SortBy" + ], + "type": "object" + }, + "PivotTableAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + }, + "Rows": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableCellConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Scope": { + "$ref": "#/definitions/PivotTableConditionalFormattingScope" + }, + "Scopes": { + "items": { + "$ref": "#/definitions/PivotTableConditionalFormattingScope" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "TextFormat": { + "$ref": "#/definitions/TextConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "PivotTableConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/PivotTableConditionalFormattingOption" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Cell": { + "$ref": "#/definitions/PivotTableCellConditionalFormatting" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingScope": { + "additionalProperties": false, + "properties": { + "Role": { + "$ref": "#/definitions/PivotTableConditionalFormattingScopeRole" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingScopeRole": { + "enum": [ + "FIELD", + "FIELD_TOTAL", + "GRAND_TOTAL" + ], + "type": "string" + }, + "PivotTableConfiguration": { + "additionalProperties": false, + "properties": { + "FieldOptions": { + "$ref": "#/definitions/PivotTableFieldOptions" + }, + "FieldWells": { + "$ref": "#/definitions/PivotTableFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "PaginatedReportOptions": { + "$ref": "#/definitions/PivotTablePaginatedReportOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/PivotTableSortConfiguration" + }, + "TableOptions": { + "$ref": "#/definitions/PivotTableOptions" + }, + "TotalOptions": { + "$ref": "#/definitions/PivotTableTotalOptions" + } + }, + "type": "object" + }, + "PivotTableDataPathOption": { + "additionalProperties": false, + "properties": { + "DataPathList": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "DataPathList" + ], + "type": "object" + }, + "PivotTableDataPathType": { + "enum": [ + "HIERARCHY_ROWS_LAYOUT_COLUMN", + "MULTIPLE_ROW_METRICS_COLUMN", + "EMPTY_COLUMN_HEADER", + "COUNT_METRIC_COLUMN" + ], + "type": "string" + }, + "PivotTableFieldCollapseState": { + "enum": [ + "COLLAPSED", + "EXPANDED" + ], + "type": "string" + }, + "PivotTableFieldCollapseStateOption": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/PivotTableFieldCollapseState" + }, + "Target": { + "$ref": "#/definitions/PivotTableFieldCollapseStateTarget" + } + }, + "required": [ + "Target" + ], + "type": "object" + }, + "PivotTableFieldCollapseStateTarget": { + "additionalProperties": false, + "properties": { + "FieldDataPathValues": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "FieldId": { + "type": "string" + } + }, + "type": "object" + }, + "PivotTableFieldOption": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "PivotTableFieldOptions": { + "additionalProperties": false, + "properties": { + "CollapseStateOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldCollapseStateOption" + }, + "type": "array" + }, + "DataPathOptions": { + "items": { + "$ref": "#/definitions/PivotTableDataPathOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SelectedFieldOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableFieldSubtotalOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "PivotTableFieldWells": { + "additionalProperties": false, + "properties": { + "PivotTableAggregatedFieldWells": { + "$ref": "#/definitions/PivotTableAggregatedFieldWells" + } + }, + "type": "object" + }, + "PivotTableMetricPlacement": { + "enum": [ + "ROW", + "COLUMN" + ], + "type": "string" + }, + "PivotTableOptions": { + "additionalProperties": false, + "properties": { + "CellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "CollapsedRowDimensionsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ColumnHeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "ColumnNamesVisibility": { + "$ref": "#/definitions/Visibility" + }, + "DefaultCellWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "MetricPlacement": { + "$ref": "#/definitions/PivotTableMetricPlacement" + }, + "RowAlternateColorOptions": { + "$ref": "#/definitions/RowAlternateColorOptions" + }, + "RowFieldNamesStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "RowHeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "RowsLabelOptions": { + "$ref": "#/definitions/PivotTableRowsLabelOptions" + }, + "RowsLayout": { + "$ref": "#/definitions/PivotTableRowsLayout" + }, + "SingleMetricVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ToggleButtonsVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "PivotTablePaginatedReportOptions": { + "additionalProperties": false, + "properties": { + "OverflowColumnHeaderVisibility": { + "$ref": "#/definitions/Visibility" + }, + "VerticalOverflowVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "PivotTableRowsLabelOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "PivotTableRowsLayout": { + "enum": [ + "TABULAR", + "HIERARCHY" + ], + "type": "string" + }, + "PivotTableSortBy": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnSort" + }, + "DataPath": { + "$ref": "#/definitions/DataPathSort" + }, + "Field": { + "$ref": "#/definitions/FieldSort" + } + }, + "type": "object" + }, + "PivotTableSortConfiguration": { + "additionalProperties": false, + "properties": { + "FieldSortOptions": { + "items": { + "$ref": "#/definitions/PivotFieldSortOptions" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableSubtotalLevel": { + "enum": [ + "ALL", + "CUSTOM", + "LAST" + ], + "type": "string" + }, + "PivotTableTotalOptions": { + "additionalProperties": false, + "properties": { + "ColumnSubtotalOptions": { + "$ref": "#/definitions/SubtotalOptions" + }, + "ColumnTotalOptions": { + "$ref": "#/definitions/PivotTotalOptions" + }, + "RowSubtotalOptions": { + "$ref": "#/definitions/SubtotalOptions" + }, + "RowTotalOptions": { + "$ref": "#/definitions/PivotTotalOptions" + } + }, + "type": "object" + }, + "PivotTableVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/PivotTableConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/PivotTableConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "PivotTotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "MetricHeaderCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "Placement": { + "$ref": "#/definitions/TableTotalsPlacement" + }, + "ScrollStatus": { + "$ref": "#/definitions/TableTotalsScrollStatus" + }, + "TotalAggregationOptions": { + "items": { + "$ref": "#/definitions/TotalAggregationOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ValueCellStyle": { + "$ref": "#/definitions/TableCellStyle" + } + }, + "type": "object" + }, + "PluginVisual": { + "additionalProperties": false, + "properties": { + "ChartConfiguration": { + "$ref": "#/definitions/PluginVisualConfiguration" + }, + "PluginArn": { + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "PluginArn", + "VisualId" + ], + "type": "object" + }, + "PluginVisualAxisName": { + "enum": [ + "GROUP_BY", + "VALUE" + ], + "type": "string" + }, + "PluginVisualConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "items": { + "$ref": "#/definitions/PluginVisualFieldWell" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "SortConfiguration": { + "$ref": "#/definitions/PluginVisualSortConfiguration" + }, + "VisualOptions": { + "$ref": "#/definitions/PluginVisualOptions" + } + }, + "type": "object" + }, + "PluginVisualFieldWell": { + "additionalProperties": false, + "properties": { + "AxisName": { + "$ref": "#/definitions/PluginVisualAxisName" + }, + "Dimensions": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Measures": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Unaggregated": { + "items": { + "$ref": "#/definitions/UnaggregatedField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PluginVisualItemsLimitConfiguration": { + "additionalProperties": false, + "properties": { + "ItemsLimit": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "PluginVisualOptions": { + "additionalProperties": false, + "properties": { + "VisualProperties": { + "items": { + "$ref": "#/definitions/PluginVisualProperty" + }, + "type": "array" + } + }, + "type": "object" + }, + "PluginVisualProperty": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "PluginVisualSortConfiguration": { + "additionalProperties": false, + "properties": { + "PluginVisualTableQuerySort": { + "$ref": "#/definitions/PluginVisualTableQuerySort" + } + }, + "type": "object" + }, + "PluginVisualTableQuerySort": { + "additionalProperties": false, + "properties": { + "ItemsLimitConfiguration": { + "$ref": "#/definitions/PluginVisualItemsLimitConfiguration" + }, + "RowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PredefinedHierarchy": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Columns", + "HierarchyId" + ], + "type": "object" + }, + "PrimaryValueDisplayType": { + "enum": [ + "HIDDEN", + "COMPARISON", + "ACTUAL" + ], + "type": "string" + }, + "ProgressBarOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "QueryExecutionMode": { + "enum": [ + "AUTO", + "MANUAL" + ], + "type": "string" + }, + "QueryExecutionOptions": { + "additionalProperties": false, + "properties": { + "QueryExecutionMode": { + "$ref": "#/definitions/QueryExecutionMode" + } + }, + "type": "object" + }, + "RadarChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Color": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "RadarChartAreaStyleSettings": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "RadarChartAxesRangeScale": { + "enum": [ + "AUTO", + "INDEPENDENT", + "SHARED" + ], + "type": "string" + }, + "RadarChartConfiguration": { + "additionalProperties": false, + "properties": { + "AlternateBandColorsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "AlternateBandEvenColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "AlternateBandOddColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "AxesRangeScale": { + "$ref": "#/definitions/RadarChartAxesRangeScale" + }, + "BaseSeriesSettings": { + "$ref": "#/definitions/RadarChartSeriesSettings" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/RadarChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "Shape": { + "$ref": "#/definitions/RadarChartShape" + }, + "SortConfiguration": { + "$ref": "#/definitions/RadarChartSortConfiguration" + }, + "StartAngle": { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "RadarChartFieldWells": { + "additionalProperties": false, + "properties": { + "RadarChartAggregatedFieldWells": { + "$ref": "#/definitions/RadarChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "RadarChartSeriesSettings": { + "additionalProperties": false, + "properties": { + "AreaStyleSettings": { + "$ref": "#/definitions/RadarChartAreaStyleSettings" + } + }, + "type": "object" + }, + "RadarChartShape": { + "enum": [ + "CIRCLE", + "POLYGON" + ], + "type": "string" + }, + "RadarChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "RadarChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/RadarChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "RangeEndsLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "ReferenceLine": { + "additionalProperties": false, + "properties": { + "DataConfiguration": { + "$ref": "#/definitions/ReferenceLineDataConfiguration" + }, + "LabelConfiguration": { + "$ref": "#/definitions/ReferenceLineLabelConfiguration" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "StyleConfiguration": { + "$ref": "#/definitions/ReferenceLineStyleConfiguration" + } + }, + "required": [ + "DataConfiguration" + ], + "type": "object" + }, + "ReferenceLineCustomLabelConfiguration": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "pattern": "\\S", + "type": "string" + } + }, + "required": [ + "CustomLabel" + ], + "type": "object" + }, + "ReferenceLineDataConfiguration": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "DynamicConfiguration": { + "$ref": "#/definitions/ReferenceLineDynamicDataConfiguration" + }, + "SeriesType": { + "$ref": "#/definitions/ReferenceLineSeriesType" + }, + "StaticConfiguration": { + "$ref": "#/definitions/ReferenceLineStaticDataConfiguration" + } + }, + "type": "object" + }, + "ReferenceLineDynamicDataConfiguration": { + "additionalProperties": false, + "properties": { + "Calculation": { + "$ref": "#/definitions/NumericalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "MeasureAggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + } + }, + "required": [ + "Calculation", + "Column" + ], + "type": "object" + }, + "ReferenceLineLabelConfiguration": { + "additionalProperties": false, + "properties": { + "CustomLabelConfiguration": { + "$ref": "#/definitions/ReferenceLineCustomLabelConfiguration" + }, + "FontColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "HorizontalPosition": { + "$ref": "#/definitions/ReferenceLineLabelHorizontalPosition" + }, + "ValueLabelConfiguration": { + "$ref": "#/definitions/ReferenceLineValueLabelConfiguration" + }, + "VerticalPosition": { + "$ref": "#/definitions/ReferenceLineLabelVerticalPosition" + } + }, + "type": "object" + }, + "ReferenceLineLabelHorizontalPosition": { + "enum": [ + "LEFT", + "CENTER", + "RIGHT" + ], + "type": "string" + }, + "ReferenceLineLabelVerticalPosition": { + "enum": [ + "ABOVE", + "BELOW" + ], + "type": "string" + }, + "ReferenceLinePatternType": { + "enum": [ + "SOLID", + "DASHED", + "DOTTED" + ], + "type": "string" + }, + "ReferenceLineSeriesType": { + "enum": [ + "BAR", + "LINE" + ], + "type": "string" + }, + "ReferenceLineStaticDataConfiguration": { + "additionalProperties": false, + "properties": { + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "ReferenceLineStyleConfiguration": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Pattern": { + "$ref": "#/definitions/ReferenceLinePatternType" + } + }, + "type": "object" + }, + "ReferenceLineValueLabelConfiguration": { + "additionalProperties": false, + "properties": { + "FormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + }, + "RelativePosition": { + "$ref": "#/definitions/ReferenceLineValueLabelRelativePosition" + } + }, + "type": "object" + }, + "ReferenceLineValueLabelRelativePosition": { + "enum": [ + "BEFORE_CUSTOM_LABEL", + "AFTER_CUSTOM_LABEL" + ], + "type": "string" + }, + "RelativeDateTimeControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "RelativeDateType": { + "enum": [ + "PREVIOUS", + "THIS", + "LAST", + "NOW", + "NEXT" + ], + "type": "string" + }, + "RelativeDatesFilter": { + "additionalProperties": false, + "properties": { + "AnchorDateConfiguration": { + "$ref": "#/definitions/AnchorDateConfiguration" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "ExcludePeriodConfiguration": { + "$ref": "#/definitions/ExcludePeriodConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MinimumGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RelativeDateType": { + "$ref": "#/definitions/RelativeDateType" + }, + "RelativeDateValue": { + "default": null, + "type": "number" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "AnchorDateConfiguration", + "Column", + "FilterId", + "NullOption", + "RelativeDateType", + "TimeGranularity" + ], + "type": "object" + }, + "RelativeFontSize": { + "enum": [ + "EXTRA_SMALL", + "SMALL", + "MEDIUM", + "LARGE", + "EXTRA_LARGE" + ], + "type": "string" + }, + "ResizeOption": { + "enum": [ + "FIXED", + "RESPONSIVE" + ], + "type": "string" + }, + "ResourcePermission": { + "additionalProperties": false, + "description": "

Permission for the resource.

", + "properties": { + "Actions": { + "description": "

The IAM action to grant or revoke permissions on.

", + "items": { + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "Principal": { + "description": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Actions", + "Principal" + ], + "type": "object" + }, + "ResourceStatus": { + "enum": [ + "CREATION_IN_PROGRESS", + "CREATION_SUCCESSFUL", + "CREATION_FAILED", + "UPDATE_IN_PROGRESS", + "UPDATE_SUCCESSFUL", + "UPDATE_FAILED", + "DELETED" + ], + "type": "string" + }, + "RollingDateConfiguration": { + "additionalProperties": false, + "properties": { + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "RowAlternateColorOptions": { + "additionalProperties": false, + "properties": { + "RowAlternateColors": { + "items": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "UsePrimaryBackgroundColor": { + "$ref": "#/definitions/WidgetStatus" + } + }, + "type": "object" + }, + "SameSheetTargetVisualConfiguration": { + "additionalProperties": false, + "properties": { + "TargetVisualOptions": { + "$ref": "#/definitions/TargetVisualOptions" + }, + "TargetVisuals": { + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "SankeyDiagramAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Destination": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Source": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Weight": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "SankeyDiagramChartConfiguration": { + "additionalProperties": false, + "properties": { + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/SankeyDiagramFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/SankeyDiagramSortConfiguration" + } + }, + "type": "object" + }, + "SankeyDiagramFieldWells": { + "additionalProperties": false, + "properties": { + "SankeyDiagramAggregatedFieldWells": { + "$ref": "#/definitions/SankeyDiagramAggregatedFieldWells" + } + }, + "type": "object" + }, + "SankeyDiagramSortConfiguration": { + "additionalProperties": false, + "properties": { + "DestinationItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SourceItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "WeightSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "SankeyDiagramVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/SankeyDiagramChartConfiguration" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "ScatterPlotCategoricallyAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Label": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Size": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "XAxis": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "YAxis": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ScatterPlotConfiguration": { + "additionalProperties": false, + "properties": { + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/ScatterPlotFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/ScatterPlotSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "XAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "XAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "YAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "YAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + } + }, + "type": "object" + }, + "ScatterPlotFieldWells": { + "additionalProperties": false, + "properties": { + "ScatterPlotCategoricallyAggregatedFieldWells": { + "$ref": "#/definitions/ScatterPlotCategoricallyAggregatedFieldWells" + }, + "ScatterPlotUnaggregatedFieldWells": { + "$ref": "#/definitions/ScatterPlotUnaggregatedFieldWells" + } + }, + "type": "object" + }, + "ScatterPlotSortConfiguration": { + "additionalProperties": false, + "properties": { + "ScatterPlotLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + } + }, + "type": "object" + }, + "ScatterPlotUnaggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Label": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Size": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "XAxis": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "YAxis": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ScatterPlotVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/ScatterPlotConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "ScrollBarOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + }, + "VisibleRange": { + "$ref": "#/definitions/VisibleRangeOptions" + } + }, + "type": "object" + }, + "SecondaryValueOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "SectionAfterPageBreak": { + "additionalProperties": false, + "properties": { + "Status": { + "$ref": "#/definitions/SectionPageBreakStatus" + } + }, + "type": "object" + }, + "SectionBasedLayoutCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "PaperCanvasSizeOptions": { + "$ref": "#/definitions/SectionBasedLayoutPaperCanvasSizeOptions" + } + }, + "type": "object" + }, + "SectionBasedLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "BodySections": { + "items": { + "$ref": "#/definitions/BodySectionConfiguration" + }, + "maxItems": 28, + "minItems": 0, + "type": "array" + }, + "CanvasSizeOptions": { + "$ref": "#/definitions/SectionBasedLayoutCanvasSizeOptions" + }, + "FooterSections": { + "items": { + "$ref": "#/definitions/HeaderFooterSectionConfiguration" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "HeaderSections": { + "items": { + "$ref": "#/definitions/HeaderFooterSectionConfiguration" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "BodySections", + "CanvasSizeOptions", + "FooterSections", + "HeaderSections" + ], + "type": "object" + }, + "SectionBasedLayoutPaperCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "PaperMargin": { + "$ref": "#/definitions/Spacing" + }, + "PaperOrientation": { + "$ref": "#/definitions/PaperOrientation" + }, + "PaperSize": { + "$ref": "#/definitions/PaperSize" + } + }, + "type": "object" + }, + "SectionLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "FreeFormLayout": { + "$ref": "#/definitions/FreeFormSectionLayoutConfiguration" + } + }, + "required": [ + "FreeFormLayout" + ], + "type": "object" + }, + "SectionPageBreakConfiguration": { + "additionalProperties": false, + "properties": { + "After": { + "$ref": "#/definitions/SectionAfterPageBreak" + } + }, + "type": "object" + }, + "SectionPageBreakStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "SectionStyle": { + "additionalProperties": false, + "properties": { + "Height": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "Padding": { + "$ref": "#/definitions/Spacing" + } + }, + "type": "object" + }, + "SelectAllValueOptions": { + "enum": [ + "ALL_VALUES" + ], + "type": "string" + }, + "SelectedFieldOptions": { + "enum": [ + "ALL_FIELDS" + ], + "type": "string" + }, + "SelectedSheetsFilterScopeConfiguration": { + "additionalProperties": false, + "properties": { + "SheetVisualScopingConfigurations": { + "items": { + "$ref": "#/definitions/SheetVisualScopingConfiguration" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "SelectedTooltipType": { + "enum": [ + "BASIC", + "DETAILED" + ], + "type": "string" + }, + "SeriesItem": { + "additionalProperties": false, + "properties": { + "DataFieldSeriesItem": { + "$ref": "#/definitions/DataFieldSeriesItem" + }, + "FieldSeriesItem": { + "$ref": "#/definitions/FieldSeriesItem" + } + }, + "type": "object" + }, + "SetParameterValueConfiguration": { + "additionalProperties": false, + "properties": { + "DestinationParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Value": { + "$ref": "#/definitions/DestinationParameterValueConfiguration" + } + }, + "required": [ + "DestinationParameterName", + "Value" + ], + "type": "object" + }, + "ShapeConditionalFormat": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "required": [ + "BackgroundColor" + ], + "type": "object" + }, + "Sheet": { + "additionalProperties": false, + "description": "

A sheet, which is an object that contains a set of visuals that\n are viewed together on one page in Amazon QuickSight. Every analysis and dashboard\n contains at least one sheet. Each sheet contains at least one visualization widget, for\n example a chart, pivot table, or narrative insight. Sheets can be associated with other\n components, such as controls, filters, and so on.

", + "properties": { + "Name": { + "description": "

The name of a sheet. This name is displayed on the sheet's tab in the Amazon QuickSight\n console.

", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "SheetId": { + "description": "

The unique identifier associated with a sheet.

", + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "type": "object" + }, + "SheetContentType": { + "enum": [ + "PAGINATED", + "INTERACTIVE" + ], + "type": "string" + }, + "SheetControlDateTimePickerType": { + "enum": [ + "SINGLE_VALUED", + "DATE_RANGE" + ], + "type": "string" + }, + "SheetControlInfoIconLabelOptions": { + "additionalProperties": false, + "properties": { + "InfoIconText": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "SheetControlLayout": { + "additionalProperties": false, + "properties": { + "Configuration": { + "$ref": "#/definitions/SheetControlLayoutConfiguration" + } + }, + "required": [ + "Configuration" + ], + "type": "object" + }, + "SheetControlLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "GridLayout": { + "$ref": "#/definitions/GridLayoutConfiguration" + } + }, + "type": "object" + }, + "SheetControlListType": { + "enum": [ + "MULTI_SELECT", + "SINGLE_SELECT" + ], + "type": "string" + }, + "SheetControlSliderType": { + "enum": [ + "SINGLE_POINT", + "RANGE" + ], + "type": "string" + }, + "SheetDefinition": { + "additionalProperties": false, + "properties": { + "ContentType": { + "$ref": "#/definitions/SheetContentType" + }, + "Description": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "FilterControls": { + "items": { + "$ref": "#/definitions/FilterControl" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Images": { + "items": { + "$ref": "#/definitions/SheetImage" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Layouts": { + "items": { + "$ref": "#/definitions/Layout" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ParameterControls": { + "items": { + "$ref": "#/definitions/ParameterControl" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SheetControlLayouts": { + "items": { + "$ref": "#/definitions/SheetControlLayout" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "SheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "TextBoxes": { + "items": { + "$ref": "#/definitions/SheetTextBox" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "Title": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Visuals": { + "items": { + "$ref": "#/definitions/Visual" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "SheetId" + ], + "type": "object" + }, + "SheetElementConfigurationOverrides": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "SheetElementRenderingRule": { + "additionalProperties": false, + "properties": { + "ConfigurationOverrides": { + "$ref": "#/definitions/SheetElementConfigurationOverrides" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ConfigurationOverrides", + "Expression" + ], + "type": "object" + }, + "SheetImage": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/ImageCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ImageContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Interactions": { + "$ref": "#/definitions/ImageInteractionOptions" + }, + "Scaling": { + "$ref": "#/definitions/SheetImageScalingConfiguration" + }, + "SheetImageId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Source": { + "$ref": "#/definitions/SheetImageSource" + }, + "Tooltip": { + "$ref": "#/definitions/SheetImageTooltipConfiguration" + } + }, + "required": [ + "SheetImageId", + "Source" + ], + "type": "object" + }, + "SheetImageScalingConfiguration": { + "additionalProperties": false, + "properties": { + "ScalingType": { + "$ref": "#/definitions/SheetImageScalingType" + } + }, + "type": "object" + }, + "SheetImageScalingType": { + "enum": [ + "SCALE_TO_WIDTH", + "SCALE_TO_HEIGHT", + "SCALE_TO_CONTAINER", + "SCALE_NONE" + ], + "type": "string" + }, + "SheetImageSource": { + "additionalProperties": false, + "properties": { + "SheetImageStaticFileSource": { + "$ref": "#/definitions/SheetImageStaticFileSource" + } + }, + "type": "object" + }, + "SheetImageStaticFileSource": { + "additionalProperties": false, + "properties": { + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "SheetImageTooltipConfiguration": { + "additionalProperties": false, + "properties": { + "TooltipText": { + "$ref": "#/definitions/SheetImageTooltipText" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "SheetImageTooltipText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SheetTextBox": { + "additionalProperties": false, + "properties": { + "Content": { + "maxLength": 150000, + "minLength": 0, + "type": "string" + }, + "SheetTextBoxId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "SheetTextBoxId" + ], + "type": "object" + }, + "SheetVisualScopingConfiguration": { + "additionalProperties": false, + "properties": { + "Scope": { + "$ref": "#/definitions/FilterVisualScope" + }, + "SheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "VisualIds": { + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Scope", + "SheetId" + ], + "type": "object" + }, + "ShortFormatText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "RichText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SimpleAttributeAggregationFunction": { + "enum": [ + "UNIQUE_VALUE" + ], + "type": "string" + }, + "SimpleClusterMarker": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "type": "object" + }, + "SimpleNumericalAggregationFunction": { + "enum": [ + "SUM", + "AVERAGE", + "MIN", + "MAX", + "COUNT", + "DISTINCT_COUNT", + "VAR", + "VARP", + "STDEV", + "STDEVP", + "MEDIAN" + ], + "type": "string" + }, + "SimpleTotalAggregationFunction": { + "enum": [ + "DEFAULT", + "SUM", + "AVERAGE", + "MIN", + "MAX", + "NONE" + ], + "type": "string" + }, + "SingleAxisOptions": { + "additionalProperties": false, + "properties": { + "YAxisOptions": { + "$ref": "#/definitions/YAxisOptions" + } + }, + "type": "object" + }, + "SingleYAxisOption": { + "enum": [ + "PRIMARY_Y_AXIS" + ], + "type": "string" + }, + "SliderControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "SmallMultiplesAxisPlacement": { + "enum": [ + "OUTSIDE", + "INSIDE" + ], + "type": "string" + }, + "SmallMultiplesAxisProperties": { + "additionalProperties": false, + "properties": { + "Placement": { + "$ref": "#/definitions/SmallMultiplesAxisPlacement" + }, + "Scale": { + "$ref": "#/definitions/SmallMultiplesAxisScale" + } + }, + "type": "object" + }, + "SmallMultiplesAxisScale": { + "enum": [ + "SHARED", + "INDEPENDENT" + ], + "type": "string" + }, + "SmallMultiplesOptions": { + "additionalProperties": false, + "properties": { + "MaxVisibleColumns": { + "maximum": 10, + "minimum": 1, + "type": "number" + }, + "MaxVisibleRows": { + "maximum": 10, + "minimum": 1, + "type": "number" + }, + "PanelConfiguration": { + "$ref": "#/definitions/PanelConfiguration" + }, + "XAxis": { + "$ref": "#/definitions/SmallMultiplesAxisProperties" + }, + "YAxis": { + "$ref": "#/definitions/SmallMultiplesAxisProperties" + } + }, + "type": "object" + }, + "SortDirection": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + }, + "Spacing": { + "additionalProperties": false, + "properties": { + "Bottom": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Left": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Right": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Top": { + "description": "String based length that is composed of value and unit", + "type": "string" + } + }, + "type": "object" + }, + "SpatialStaticFile": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/StaticFileSource" + }, + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "SpecialValue": { + "enum": [ + "EMPTY", + "NULL", + "OTHER" + ], + "type": "string" + }, + "StaticFile": { + "additionalProperties": false, + "properties": { + "ImageStaticFile": { + "$ref": "#/definitions/ImageStaticFile" + }, + "SpatialStaticFile": { + "$ref": "#/definitions/SpatialStaticFile" + } + }, + "type": "object" + }, + "StaticFileS3SourceOptions": { + "additionalProperties": false, + "properties": { + "BucketName": { + "type": "string" + }, + "ObjectKey": { + "type": "string" + }, + "Region": { + "type": "string" + } + }, + "required": [ + "BucketName", + "ObjectKey", + "Region" + ], + "type": "object" + }, + "StaticFileSource": { + "additionalProperties": false, + "properties": { + "S3Options": { + "$ref": "#/definitions/StaticFileS3SourceOptions" + }, + "UrlOptions": { + "$ref": "#/definitions/StaticFileUrlSourceOptions" + } + }, + "type": "object" + }, + "StaticFileUrlSourceOptions": { + "additionalProperties": false, + "properties": { + "Url": { + "type": "string" + } + }, + "required": [ + "Url" + ], + "type": "object" + }, + "StringDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "StringFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumericFormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "StringParameter": { + "additionalProperties": false, + "description": "

A string parameter.

", + "properties": { + "Name": { + "description": "

A display name for a string parameter.

", + "pattern": "\\S", + "type": "string" + }, + "Values": { + "description": "

The values of a string parameter.

", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "StringParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/StringDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/StringValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "StringValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "type": "string" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "StyledCellType": { + "enum": [ + "TOTAL", + "METRIC_HEADER", + "VALUE" + ], + "type": "string" + }, + "SubtotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "FieldLevel": { + "$ref": "#/definitions/PivotTableSubtotalLevel" + }, + "FieldLevelOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldSubtotalOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "MetricHeaderCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "StyleTargets": { + "items": { + "$ref": "#/definitions/TableStyleTarget" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ValueCellStyle": { + "$ref": "#/definitions/TableCellStyle" + } + }, + "type": "object" + }, + "TableAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "GroupBy": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableBorderOptions": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/TableBorderStyle" + }, + "Thickness": { + "maximum": 4, + "minimum": 1, + "type": "number" + } + }, + "type": "object" + }, + "TableBorderStyle": { + "enum": [ + "NONE", + "SOLID" + ], + "type": "string" + }, + "TableCellConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "TextFormat": { + "$ref": "#/definitions/TextConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "TableCellImageScalingConfiguration": { + "enum": [ + "FIT_TO_CELL_HEIGHT", + "FIT_TO_CELL_WIDTH", + "DO_NOT_SCALE" + ], + "type": "string" + }, + "TableCellImageSizingConfiguration": { + "additionalProperties": false, + "properties": { + "TableCellImageScalingConfiguration": { + "$ref": "#/definitions/TableCellImageScalingConfiguration" + } + }, + "type": "object" + }, + "TableCellStyle": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Border": { + "$ref": "#/definitions/GlobalTableBorderOptions" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Height": { + "maximum": 500, + "minimum": 8, + "type": "number" + }, + "HorizontalTextAlignment": { + "$ref": "#/definitions/HorizontalTextAlignment" + }, + "TextWrap": { + "$ref": "#/definitions/TextWrap" + }, + "VerticalTextAlignment": { + "$ref": "#/definitions/VerticalTextAlignment" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TableConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/TableConditionalFormattingOption" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Cell": { + "$ref": "#/definitions/TableCellConditionalFormatting" + }, + "Row": { + "$ref": "#/definitions/TableRowConditionalFormatting" + } + }, + "type": "object" + }, + "TableConfiguration": { + "additionalProperties": false, + "properties": { + "FieldOptions": { + "$ref": "#/definitions/TableFieldOptions" + }, + "FieldWells": { + "$ref": "#/definitions/TableFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "PaginatedReportOptions": { + "$ref": "#/definitions/TablePaginatedReportOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/TableSortConfiguration" + }, + "TableInlineVisualizations": { + "items": { + "$ref": "#/definitions/TableInlineVisualization" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TableOptions": { + "$ref": "#/definitions/TableOptions" + }, + "TotalOptions": { + "$ref": "#/definitions/TotalOptions" + } + }, + "type": "object" + }, + "TableFieldCustomIconContent": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/TableFieldIconSetType" + } + }, + "type": "object" + }, + "TableFieldCustomTextContent": { + "additionalProperties": false, + "properties": { + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "FontConfiguration" + ], + "type": "object" + }, + "TableFieldIconSetType": { + "enum": [ + "LINK" + ], + "type": "string" + }, + "TableFieldImageConfiguration": { + "additionalProperties": false, + "properties": { + "SizingOptions": { + "$ref": "#/definitions/TableCellImageSizingConfiguration" + } + }, + "type": "object" + }, + "TableFieldLinkConfiguration": { + "additionalProperties": false, + "properties": { + "Content": { + "$ref": "#/definitions/TableFieldLinkContentConfiguration" + }, + "Target": { + "$ref": "#/definitions/URLTargetConfiguration" + } + }, + "required": [ + "Content", + "Target" + ], + "type": "object" + }, + "TableFieldLinkContentConfiguration": { + "additionalProperties": false, + "properties": { + "CustomIconContent": { + "$ref": "#/definitions/TableFieldCustomIconContent" + }, + "CustomTextContent": { + "$ref": "#/definitions/TableFieldCustomTextContent" + } + }, + "type": "object" + }, + "TableFieldOption": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "URLStyling": { + "$ref": "#/definitions/TableFieldURLConfiguration" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "TableFieldOptions": { + "additionalProperties": false, + "properties": { + "Order": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "PinnedFieldOptions": { + "$ref": "#/definitions/TablePinnedFieldOptions" + }, + "SelectedFieldOptions": { + "items": { + "$ref": "#/definitions/TableFieldOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "TransposedTableOptions": { + "items": { + "$ref": "#/definitions/TransposedTableOption" + }, + "maxItems": 10001, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableFieldURLConfiguration": { + "additionalProperties": false, + "properties": { + "ImageConfiguration": { + "$ref": "#/definitions/TableFieldImageConfiguration" + }, + "LinkConfiguration": { + "$ref": "#/definitions/TableFieldLinkConfiguration" + } + }, + "type": "object" + }, + "TableFieldWells": { + "additionalProperties": false, + "properties": { + "TableAggregatedFieldWells": { + "$ref": "#/definitions/TableAggregatedFieldWells" + }, + "TableUnaggregatedFieldWells": { + "$ref": "#/definitions/TableUnaggregatedFieldWells" + } + }, + "type": "object" + }, + "TableInlineVisualization": { + "additionalProperties": false, + "properties": { + "DataBars": { + "$ref": "#/definitions/DataBarsOptions" + } + }, + "type": "object" + }, + "TableOptions": { + "additionalProperties": false, + "properties": { + "CellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "HeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "Orientation": { + "$ref": "#/definitions/TableOrientation" + }, + "RowAlternateColorOptions": { + "$ref": "#/definitions/RowAlternateColorOptions" + } + }, + "type": "object" + }, + "TableOrientation": { + "enum": [ + "VERTICAL", + "HORIZONTAL" + ], + "type": "string" + }, + "TablePaginatedReportOptions": { + "additionalProperties": false, + "properties": { + "OverflowColumnHeaderVisibility": { + "$ref": "#/definitions/Visibility" + }, + "VerticalOverflowVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TablePinnedFieldOptions": { + "additionalProperties": false, + "properties": { + "PinnedLeftFields": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 201, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableRowConditionalFormatting": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "TableSideBorderOptions": { + "additionalProperties": false, + "properties": { + "Bottom": { + "$ref": "#/definitions/TableBorderOptions" + }, + "InnerHorizontal": { + "$ref": "#/definitions/TableBorderOptions" + }, + "InnerVertical": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Left": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Right": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Top": { + "$ref": "#/definitions/TableBorderOptions" + } + }, + "type": "object" + }, + "TableSortConfiguration": { + "additionalProperties": false, + "properties": { + "PaginationConfiguration": { + "$ref": "#/definitions/PaginationConfiguration" + }, + "RowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableStyleTarget": { + "additionalProperties": false, + "properties": { + "CellType": { + "$ref": "#/definitions/StyledCellType" + } + }, + "required": [ + "CellType" + ], + "type": "object" + }, + "TableTotalsPlacement": { + "enum": [ + "START", + "END", + "AUTO" + ], + "type": "string" + }, + "TableTotalsScrollStatus": { + "enum": [ + "PINNED", + "SCROLLED" + ], + "type": "string" + }, + "TableUnaggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "$ref": "#/definitions/UnaggregatedField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/TableConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/TableConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", + "properties": { + "Key": { + "description": "

Tag key.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "

Tag value.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TargetVisualOptions": { + "enum": [ + "ALL_VISUALS" + ], + "type": "string" + }, + "TextAreaControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "PlaceholderOptions": { + "$ref": "#/definitions/TextControlPlaceholderOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "TextConditionalFormat": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + }, + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "TextControlPlaceholderOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TextFieldControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "PlaceholderOptions": { + "$ref": "#/definitions/TextControlPlaceholderOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "TextWrap": { + "enum": [ + "NONE", + "WRAP" + ], + "type": "string" + }, + "ThousandSeparatorOptions": { + "additionalProperties": false, + "properties": { + "GroupingStyle": { + "$ref": "#/definitions/DigitGroupingStyle" + }, + "Symbol": { + "$ref": "#/definitions/NumericSeparatorSymbol" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TimeBasedForecastProperties": { + "additionalProperties": false, + "properties": { + "LowerBoundary": { + "default": null, + "type": "number" + }, + "PeriodsBackward": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "PeriodsForward": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "PredictionInterval": { + "maximum": 95, + "minimum": 50, + "type": "number" + }, + "Seasonality": { + "maximum": 180, + "minimum": 1, + "type": "number" + }, + "UpperBoundary": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "TimeEqualityFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Value": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "Column", + "FilterId" + ], + "type": "object" + }, + "TimeGranularity": { + "enum": [ + "YEAR", + "QUARTER", + "MONTH", + "WEEK", + "DAY", + "HOUR", + "MINUTE", + "SECOND", + "MILLISECOND" + ], + "type": "string" + }, + "TimeRangeDrillDownFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "RangeMaximum": { + "format": "date-time", + "type": "string" + }, + "RangeMinimum": { + "format": "date-time", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Column", + "RangeMaximum", + "RangeMinimum", + "TimeGranularity" + ], + "type": "object" + }, + "TimeRangeFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "ExcludePeriodConfiguration": { + "$ref": "#/definitions/ExcludePeriodConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeMaximum": { + "default": null, + "type": "boolean" + }, + "IncludeMinimum": { + "default": null, + "type": "boolean" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "RangeMaximumValue": { + "$ref": "#/definitions/TimeRangeFilterValue" + }, + "RangeMinimumValue": { + "$ref": "#/definitions/TimeRangeFilterValue" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Column", + "FilterId", + "NullOption" + ], + "type": "object" + }, + "TimeRangeFilterValue": { + "additionalProperties": false, + "properties": { + "Parameter": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "StaticValue": { + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "TooltipItem": { + "additionalProperties": false, + "properties": { + "ColumnTooltipItem": { + "$ref": "#/definitions/ColumnTooltipItem" + }, + "FieldTooltipItem": { + "$ref": "#/definitions/FieldTooltipItem" + } + }, + "type": "object" + }, + "TooltipOptions": { + "additionalProperties": false, + "properties": { + "FieldBasedTooltip": { + "$ref": "#/definitions/FieldBasedTooltip" + }, + "SelectedTooltipType": { + "$ref": "#/definitions/SelectedTooltipType" + }, + "TooltipVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TooltipTarget": { + "enum": [ + "BOTH", + "BAR", + "LINE" + ], + "type": "string" + }, + "TooltipTitleType": { + "enum": [ + "NONE", + "PRIMARY_VALUE" + ], + "type": "string" + }, + "TopBottomComputationType": { + "enum": [ + "TOP", + "BOTTOM" + ], + "type": "string" + }, + "TopBottomFilter": { + "additionalProperties": false, + "properties": { + "AggregationSortConfigurations": { + "items": { + "$ref": "#/definitions/AggregationSortConfiguration" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Limit": { + "default": null, + "type": "number" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "AggregationSortConfigurations", + "Column", + "FilterId" + ], + "type": "object" + }, + "TopBottomMoversComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MoverSize": { + "default": 0, + "maximum": 20, + "minimum": 1, + "type": "number" + }, + "Name": { + "type": "string" + }, + "SortOrder": { + "$ref": "#/definitions/TopBottomSortOrder" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Type": { + "$ref": "#/definitions/TopBottomComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "TopBottomRankedComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "ResultSize": { + "default": 0, + "maximum": 20, + "minimum": 1, + "type": "number" + }, + "Type": { + "$ref": "#/definitions/TopBottomComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "TopBottomSortOrder": { + "enum": [ + "PERCENT_DIFFERENCE", + "ABSOLUTE_DIFFERENCE" + ], + "type": "string" + }, + "TotalAggregationComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "TotalAggregationFunction": { + "additionalProperties": false, + "properties": { + "SimpleTotalAggregationFunction": { + "$ref": "#/definitions/SimpleTotalAggregationFunction" + } + }, + "type": "object" + }, + "TotalAggregationOption": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "TotalAggregationFunction": { + "$ref": "#/definitions/TotalAggregationFunction" + } + }, + "required": [ + "FieldId", + "TotalAggregationFunction" + ], + "type": "object" + }, + "TotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "Placement": { + "$ref": "#/definitions/TableTotalsPlacement" + }, + "ScrollStatus": { + "$ref": "#/definitions/TableTotalsScrollStatus" + }, + "TotalAggregationOptions": { + "items": { + "$ref": "#/definitions/TotalAggregationOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TransposedColumnType": { + "enum": [ + "ROW_HEADER_COLUMN", + "VALUE_COLUMN" + ], + "type": "string" + }, + "TransposedTableOption": { + "additionalProperties": false, + "properties": { + "ColumnIndex": { + "maximum": 9999, + "minimum": 0, + "type": "number" + }, + "ColumnType": { + "$ref": "#/definitions/TransposedColumnType" + }, + "ColumnWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "ColumnType" + ], + "type": "object" + }, + "TreeMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Groups": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Sizes": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TreeMapConfiguration": { + "additionalProperties": false, + "properties": { + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorScale": { + "$ref": "#/definitions/ColorScale" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/TreeMapFieldWells" + }, + "GroupLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "SizeLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/TreeMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + } + }, + "type": "object" + }, + "TreeMapFieldWells": { + "additionalProperties": false, + "properties": { + "TreeMapAggregatedFieldWells": { + "$ref": "#/definitions/TreeMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "TreeMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "TreeMapGroupItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "TreeMapSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TreeMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/TreeMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "TrendArrowOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "URLTargetConfiguration": { + "enum": [ + "NEW_TAB", + "NEW_WINDOW", + "SAME_TAB" + ], + "type": "string" + }, + "UnaggregatedField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/FormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "UniqueValuesComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "ValidationStrategy": { + "additionalProperties": false, + "description": "

The option to relax the validation that is required to create and update analyses, dashboards, and templates with definition objects. When you set this value to LENIENT, validation is skipped for specific errors.

", + "properties": { + "Mode": { + "$ref": "#/definitions/ValidationStrategyMode" + } + }, + "required": [ + "Mode" + ], + "type": "object" + }, + "ValidationStrategyMode": { + "enum": [ + "STRICT", + "LENIENT" + ], + "type": "string" + }, + "ValueWhenUnsetOption": { + "enum": [ + "RECOMMENDED_VALUE", + "NULL" + ], + "type": "string" + }, + "VerticalTextAlignment": { + "enum": [ + "TOP", + "MIDDLE", + "BOTTOM", + "AUTO" + ], + "type": "string" + }, + "Visibility": { + "enum": [ + "HIDDEN", + "VISIBLE" + ], + "type": "string" + }, + "VisibleRangeOptions": { + "additionalProperties": false, + "properties": { + "PercentRange": { + "$ref": "#/definitions/PercentVisibleRange" + } + }, + "type": "object" + }, + "Visual": { + "additionalProperties": false, + "properties": { + "BarChartVisual": { + "$ref": "#/definitions/BarChartVisual" + }, + "BoxPlotVisual": { + "$ref": "#/definitions/BoxPlotVisual" + }, + "ComboChartVisual": { + "$ref": "#/definitions/ComboChartVisual" + }, + "CustomContentVisual": { + "$ref": "#/definitions/CustomContentVisual" + }, + "EmptyVisual": { + "$ref": "#/definitions/EmptyVisual" + }, + "FilledMapVisual": { + "$ref": "#/definitions/FilledMapVisual" + }, + "FunnelChartVisual": { + "$ref": "#/definitions/FunnelChartVisual" + }, + "GaugeChartVisual": { + "$ref": "#/definitions/GaugeChartVisual" + }, + "GeospatialMapVisual": { + "$ref": "#/definitions/GeospatialMapVisual" + }, + "HeatMapVisual": { + "$ref": "#/definitions/HeatMapVisual" + }, + "HistogramVisual": { + "$ref": "#/definitions/HistogramVisual" + }, + "InsightVisual": { + "$ref": "#/definitions/InsightVisual" + }, + "KPIVisual": { + "$ref": "#/definitions/KPIVisual" + }, + "LayerMapVisual": { + "$ref": "#/definitions/LayerMapVisual" + }, + "LineChartVisual": { + "$ref": "#/definitions/LineChartVisual" + }, + "PieChartVisual": { + "$ref": "#/definitions/PieChartVisual" + }, + "PivotTableVisual": { + "$ref": "#/definitions/PivotTableVisual" + }, + "PluginVisual": { + "$ref": "#/definitions/PluginVisual" + }, + "RadarChartVisual": { + "$ref": "#/definitions/RadarChartVisual" + }, + "SankeyDiagramVisual": { + "$ref": "#/definitions/SankeyDiagramVisual" + }, + "ScatterPlotVisual": { + "$ref": "#/definitions/ScatterPlotVisual" + }, + "TableVisual": { + "$ref": "#/definitions/TableVisual" + }, + "TreeMapVisual": { + "$ref": "#/definitions/TreeMapVisual" + }, + "WaterfallVisual": { + "$ref": "#/definitions/WaterfallVisual" + }, + "WordCloudVisual": { + "$ref": "#/definitions/WordCloudVisual" + } + }, + "type": "object" + }, + "VisualCustomAction": { + "additionalProperties": false, + "properties": { + "ActionOperations": { + "items": { + "$ref": "#/definitions/VisualCustomActionOperation" + }, + "maxItems": 2, + "minItems": 1, + "type": "array" + }, + "CustomActionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "Trigger": { + "$ref": "#/definitions/VisualCustomActionTrigger" + } + }, + "required": [ + "ActionOperations", + "CustomActionId", + "Name", + "Trigger" + ], + "type": "object" + }, + "VisualCustomActionOperation": { + "additionalProperties": false, + "properties": { + "FilterOperation": { + "$ref": "#/definitions/CustomActionFilterOperation" + }, + "NavigationOperation": { + "$ref": "#/definitions/CustomActionNavigationOperation" + }, + "SetParametersOperation": { + "$ref": "#/definitions/CustomActionSetParametersOperation" + }, + "URLOperation": { + "$ref": "#/definitions/CustomActionURLOperation" + } + }, + "type": "object" + }, + "VisualCustomActionTrigger": { + "enum": [ + "DATA_POINT_CLICK", + "DATA_POINT_MENU" + ], + "type": "string" + }, + "VisualInteractionOptions": { + "additionalProperties": false, + "properties": { + "ContextMenuOption": { + "$ref": "#/definitions/ContextMenuOption" + }, + "VisualMenuOption": { + "$ref": "#/definitions/VisualMenuOption" + } + }, + "type": "object" + }, + "VisualMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "VisualPalette": { + "additionalProperties": false, + "properties": { + "ChartColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "ColorMap": { + "items": { + "$ref": "#/definitions/DataPathColor" + }, + "maxItems": 5000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "VisualSubtitleLabelOptions": { + "additionalProperties": false, + "properties": { + "FormatText": { + "$ref": "#/definitions/LongFormatText" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "VisualTitleLabelOptions": { + "additionalProperties": false, + "properties": { + "FormatText": { + "$ref": "#/definitions/ShortFormatText" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "WaterfallChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Breakdowns": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Categories": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "WaterfallChartColorConfiguration": { + "additionalProperties": false, + "properties": { + "GroupColorConfiguration": { + "$ref": "#/definitions/WaterfallChartGroupColorConfiguration" + } + }, + "type": "object" + }, + "WaterfallChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorConfiguration": { + "$ref": "#/definitions/WaterfallChartColorConfiguration" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/WaterfallChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/WaterfallChartSortConfiguration" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "WaterfallChartOptions": { + "$ref": "#/definitions/WaterfallChartOptions" + } + }, + "type": "object" + }, + "WaterfallChartFieldWells": { + "additionalProperties": false, + "properties": { + "WaterfallChartAggregatedFieldWells": { + "$ref": "#/definitions/WaterfallChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "WaterfallChartGroupColorConfiguration": { + "additionalProperties": false, + "properties": { + "NegativeBarColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "PositiveBarColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "TotalBarColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "type": "object" + }, + "WaterfallChartOptions": { + "additionalProperties": false, + "properties": { + "TotalBarLabel": { + "type": "string" + } + }, + "type": "object" + }, + "WaterfallChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "BreakdownItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "WaterfallVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/WaterfallChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "WhatIfPointScenario": { + "additionalProperties": false, + "properties": { + "Date": { + "format": "date-time", + "type": "string" + }, + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Date", + "Value" + ], + "type": "object" + }, + "WhatIfRangeScenario": { + "additionalProperties": false, + "properties": { + "EndDate": { + "format": "date-time", + "type": "string" + }, + "StartDate": { + "format": "date-time", + "type": "string" + }, + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "EndDate", + "StartDate", + "Value" + ], + "type": "object" + }, + "WidgetStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "WordCloudAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "GroupBy": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Size": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "WordCloudChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/WordCloudFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/WordCloudSortConfiguration" + }, + "WordCloudOptions": { + "$ref": "#/definitions/WordCloudOptions" + } + }, + "type": "object" + }, + "WordCloudCloudLayout": { + "enum": [ + "FLUID", + "NORMAL" + ], + "type": "string" + }, + "WordCloudFieldWells": { + "additionalProperties": false, + "properties": { + "WordCloudAggregatedFieldWells": { + "$ref": "#/definitions/WordCloudAggregatedFieldWells" + } + }, + "type": "object" + }, + "WordCloudOptions": { + "additionalProperties": false, + "properties": { + "CloudLayout": { + "$ref": "#/definitions/WordCloudCloudLayout" + }, + "MaximumStringLength": { + "maximum": 100, + "minimum": 1, + "type": "number" + }, + "WordCasing": { + "$ref": "#/definitions/WordCloudWordCasing" + }, + "WordOrientation": { + "$ref": "#/definitions/WordCloudWordOrientation" + }, + "WordPadding": { + "$ref": "#/definitions/WordCloudWordPadding" + }, + "WordScaling": { + "$ref": "#/definitions/WordCloudWordScaling" + } + }, + "type": "object" + }, + "WordCloudSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "WordCloudVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/WordCloudChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "WordCloudWordCasing": { + "enum": [ + "LOWER_CASE", + "EXISTING_CASE" + ], + "type": "string" + }, + "WordCloudWordOrientation": { + "enum": [ + "HORIZONTAL", + "HORIZONTAL_AND_VERTICAL" + ], + "type": "string" + }, + "WordCloudWordPadding": { + "enum": [ + "NONE", + "SMALL", + "MEDIUM", + "LARGE" + ], + "type": "string" + }, + "WordCloudWordScaling": { + "enum": [ + "EMPHASIZE", + "NORMAL" + ], + "type": "string" + }, + "YAxisOptions": { + "additionalProperties": false, + "properties": { + "YAxis": { + "$ref": "#/definitions/SingleYAxisOption" + } + }, + "required": [ + "YAxis" + ], + "type": "object" + } + }, + "description": "Definition of the AWS::QuickSight::Analysis Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:DescribeAnalysis", + "quicksight:DescribeAnalysisPermissions", + "quicksight:CreateAnalysis", + "quicksight:DescribeTemplate", + "quicksight:DescribeTheme", + "quicksight:PassDataSet", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource", + "quicksight:CreateFolderMembership", + "quicksight:DeleteFolderMembership", + "quicksight:ListFoldersForResource" + ] + }, + "delete": { + "permissions": [ + "quicksight:DescribeAnalysis", + "quicksight:DeleteAnalysis" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "AwsAccountId": { + "$ref": "resource-schema.json#/properties/AwsAccountId" + } + }, + "required": [ + "AwsAccountId" + ] + }, + "permissions": [ + "quicksight:ListAnalyses" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeAnalysis", + "quicksight:DescribeAnalysisPermissions", + "quicksight:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "quicksight:DescribeAnalysis", + "quicksight:DescribeAnalysisPermissions", + "quicksight:UpdateAnalysis", + "quicksight:UpdateAnalysisPermissions", + "quicksight:CreateFolderMembership", + "quicksight:DeleteFolderMembership", + "quicksight:ListFoldersForResource", + "quicksight:DescribeTemplate", + "quicksight:DescribeTheme", + "quicksight:PassDataSet", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AnalysisId", + "/properties/AwsAccountId" + ], + "properties": { + "AnalysisId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the analysis.

", + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "CreatedTime": { + "description": "

The time that the analysis was created.

", + "format": "date-time", + "type": "string" + }, + "DataSetArns": { + "description": "

The ARNs of the datasets of the analysis.

", + "items": { + "type": "string" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "Definition": { + "$ref": "#/definitions/AnalysisDefinition" + }, + "Errors": { + "description": "

Errors associated with the analysis.

", + "items": { + "$ref": "#/definitions/AnalysisError" + }, + "minItems": 1, + "type": "array" + }, + "FolderArns": { + "items": { + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "LastUpdatedTime": { + "description": "

The time that the analysis was last updated.

", + "format": "date-time", + "type": "string" + }, + "Name": { + "description": "

The descriptive name of the analysis.

", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Parameters": { + "$ref": "#/definitions/Parameters" + }, + "Permissions": { + "items": { + "$ref": "#/definitions/ResourcePermission" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + }, + "Sheets": { + "description": "

A list of the associated sheets with the unique identifier and name of each sheet.

", + "items": { + "$ref": "#/definitions/Sheet" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SourceEntity": { + "$ref": "#/definitions/AnalysisSourceEntity" + }, + "Status": { + "$ref": "#/definitions/ResourceStatus" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "ThemeArn": { + "description": "

The ARN of the theme of the analysis.

", + "type": "string" + }, + "ValidationStrategy": { + "$ref": "#/definitions/ValidationStrategy" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/DataSetArns", + "/properties/LastUpdatedTime" + ], + "required": [ + "AwsAccountId", + "AnalysisId", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QuickSight::Analysis", + "writeOnlyProperties": [ + "/properties/Definition", + "/properties/Parameters", + "/properties/SourceEntity", + "/properties/Status", + "/properties/ValidationStrategy", + "/properties/FolderArns" + ] +} diff --git a/src/schema/aws-quicksight-custompermissions.json b/src/schema/aws-quicksight-custompermissions.json new file mode 100644 index 00000000..6e18afc9 --- /dev/null +++ b/src/schema/aws-quicksight-custompermissions.json @@ -0,0 +1,180 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/CustomPermissionsName" + ], + "definitions": { + "Capabilities": { + "additionalProperties": false, + "properties": { + "AddOrRunAnomalyDetectionForAnalyses": { + "$ref": "#/definitions/CapabilityState" + }, + "CreateAndUpdateDashboardEmailReports": { + "$ref": "#/definitions/CapabilityState" + }, + "CreateAndUpdateDataSources": { + "$ref": "#/definitions/CapabilityState" + }, + "CreateAndUpdateDatasets": { + "$ref": "#/definitions/CapabilityState" + }, + "CreateAndUpdateThemes": { + "$ref": "#/definitions/CapabilityState" + }, + "CreateAndUpdateThresholdAlerts": { + "$ref": "#/definitions/CapabilityState" + }, + "CreateSPICEDataset": { + "$ref": "#/definitions/CapabilityState" + }, + "CreateSharedFolders": { + "$ref": "#/definitions/CapabilityState" + }, + "ExportToCsv": { + "$ref": "#/definitions/CapabilityState" + }, + "ExportToExcel": { + "$ref": "#/definitions/CapabilityState" + }, + "RenameSharedFolders": { + "$ref": "#/definitions/CapabilityState" + }, + "ShareAnalyses": { + "$ref": "#/definitions/CapabilityState" + }, + "ShareDashboards": { + "$ref": "#/definitions/CapabilityState" + }, + "ShareDataSources": { + "$ref": "#/definitions/CapabilityState" + }, + "ShareDatasets": { + "$ref": "#/definitions/CapabilityState" + }, + "SubscribeDashboardEmailReports": { + "$ref": "#/definitions/CapabilityState" + }, + "ViewAccountSPICECapacity": { + "$ref": "#/definitions/CapabilityState" + } + }, + "type": "object" + }, + "CapabilityState": { + "enum": [ + "DENY" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", + "properties": { + "Key": { + "description": "

Tag key.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "

Tag value.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of the AWS::QuickSight::CustomPermissions Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:CreateCustomPermissions", + "quicksight:TagResource" + ] + }, + "delete": { + "permissions": [ + "quicksight:DeleteCustomPermissions" + ] + }, + "list": { + "permissions": [ + "quicksight:ListCustomPermissions" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeCustomPermissions", + "quicksight:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "quicksight:UpdateCustomPermissions", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AwsAccountId", + "/properties/CustomPermissionsName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "Capabilities": { + "$ref": "#/definitions/Capabilities" + }, + "CustomPermissionsName": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9+=,.@_-]+$", + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "AwsAccountId", + "CustomPermissionsName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QuickSight::CustomPermissions" +} diff --git a/src/schema/aws-quicksight-dashboard.json b/src/schema/aws-quicksight-dashboard.json index 915c3406..a89117eb 100644 --- a/src/schema/aws-quicksight-dashboard.json +++ b/src/schema/aws-quicksight-dashboard.json @@ -1,11739 +1,13161 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AwsAccountId", - "/properties/DashboardId" - ], - "definitions": { - "AdHocFilteringOption": { - "additionalProperties": false, - "description": "

An ad hoc (one-time) filtering option.

", - "properties": { - "AvailabilityStatus": { - "$ref": "#/definitions/DashboardBehavior" - } - }, - "type": "object" - }, - "AggregationFunction": { - "additionalProperties": false, - "properties": { - "AttributeAggregationFunction": { - "$ref": "#/definitions/AttributeAggregationFunction" - }, - "CategoricalAggregationFunction": { - "$ref": "#/definitions/CategoricalAggregationFunction" - }, - "DateAggregationFunction": { - "$ref": "#/definitions/DateAggregationFunction" - }, - "NumericalAggregationFunction": { - "$ref": "#/definitions/NumericalAggregationFunction" - } - }, - "type": "object" - }, - "AggregationSortConfiguration": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/AggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "SortDirection": { - "$ref": "#/definitions/SortDirection" - } - }, - "required": [ - "Column", - "SortDirection" - ], - "type": "object" - }, - "AllSheetsFilterScopeConfiguration": { - "additionalProperties": false, - "type": "object" - }, - "AnalysisDefaults": { - "additionalProperties": false, - "properties": { - "DefaultNewSheetConfiguration": { - "$ref": "#/definitions/DefaultNewSheetConfiguration" - } - }, - "required": [ - "DefaultNewSheetConfiguration" - ], - "type": "object" - }, - "AnchorDateConfiguration": { - "additionalProperties": false, - "properties": { - "AnchorOption": { - "$ref": "#/definitions/AnchorOption" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - } - }, - "type": "object" - }, - "AnchorOption": { - "enum": [ - "NOW" - ], - "type": "string" - }, - "ArcAxisConfiguration": { - "additionalProperties": false, - "properties": { - "Range": { - "$ref": "#/definitions/ArcAxisDisplayRange" - }, - "ReserveRange": { - "default": 0, - "type": "number" - } - }, - "type": "object" - }, - "ArcAxisDisplayRange": { - "additionalProperties": false, - "properties": { - "Max": { - "default": null, - "type": "number" - }, - "Min": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "ArcConfiguration": { - "additionalProperties": false, - "properties": { - "ArcAngle": { - "default": null, - "type": "number" - }, - "ArcThickness": { - "$ref": "#/definitions/ArcThicknessOptions" - } - }, - "type": "object" - }, - "ArcOptions": { - "additionalProperties": false, - "properties": { - "ArcThickness": { - "$ref": "#/definitions/ArcThickness" - } - }, - "type": "object" - }, - "ArcThickness": { - "enum": [ - "SMALL", - "MEDIUM", - "LARGE", - "WHOLE" - ], - "type": "string" - }, - "ArcThicknessOptions": { - "enum": [ - "SMALL", - "MEDIUM", - "LARGE" - ], - "type": "string" - }, - "AssetOptions": { - "additionalProperties": false, - "properties": { - "Timezone": { - "type": "string" - }, - "WeekStart": { - "$ref": "#/definitions/DayOfTheWeek" - } - }, - "type": "object" - }, - "AttributeAggregationFunction": { - "additionalProperties": false, - "properties": { - "SimpleAttributeAggregation": { - "$ref": "#/definitions/SimpleAttributeAggregationFunction" - }, - "ValueForMultipleValues": { - "type": "string" - } - }, - "type": "object" - }, - "AxisBinding": { - "enum": [ - "PRIMARY_YAXIS", - "SECONDARY_YAXIS" - ], - "type": "string" - }, - "AxisDataOptions": { - "additionalProperties": false, - "properties": { - "DateAxisOptions": { - "$ref": "#/definitions/DateAxisOptions" - }, - "NumericAxisOptions": { - "$ref": "#/definitions/NumericAxisOptions" - } - }, - "type": "object" - }, - "AxisDisplayDataDrivenRange": { - "additionalProperties": false, - "type": "object" - }, - "AxisDisplayMinMaxRange": { - "additionalProperties": false, - "properties": { - "Maximum": { - "default": null, - "type": "number" - }, - "Minimum": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "AxisDisplayOptions": { - "additionalProperties": false, - "properties": { - "AxisLineVisibility": { - "$ref": "#/definitions/Visibility" - }, - "AxisOffset": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "DataOptions": { - "$ref": "#/definitions/AxisDataOptions" - }, - "GridLineVisibility": { - "$ref": "#/definitions/Visibility" - }, - "ScrollbarOptions": { - "$ref": "#/definitions/ScrollBarOptions" - }, - "TickLabelOptions": { - "$ref": "#/definitions/AxisTickLabelOptions" - } - }, - "type": "object" - }, - "AxisDisplayRange": { - "additionalProperties": false, - "properties": { - "DataDriven": { - "$ref": "#/definitions/AxisDisplayDataDrivenRange" - }, - "MinMax": { - "$ref": "#/definitions/AxisDisplayMinMaxRange" - } - }, - "type": "object" - }, - "AxisLabelOptions": { - "additionalProperties": false, - "properties": { - "ApplyTo": { - "$ref": "#/definitions/AxisLabelReferenceOptions" - }, - "CustomLabel": { - "type": "string" - }, - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - } - }, - "type": "object" - }, - "AxisLabelReferenceOptions": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "AxisLinearScale": { - "additionalProperties": false, - "properties": { - "StepCount": { - "default": null, - "type": "number" - }, - "StepSize": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "AxisLogarithmicScale": { - "additionalProperties": false, - "properties": { - "Base": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "AxisScale": { - "additionalProperties": false, - "properties": { - "Linear": { - "$ref": "#/definitions/AxisLinearScale" - }, - "Logarithmic": { - "$ref": "#/definitions/AxisLogarithmicScale" - } - }, - "type": "object" - }, - "AxisTickLabelOptions": { - "additionalProperties": false, - "properties": { - "LabelOptions": { - "$ref": "#/definitions/LabelOptions" - }, - "RotationAngle": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "BarChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Colors": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "SmallMultiples": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "BarChartConfiguration": { - "additionalProperties": false, - "properties": { - "BarsArrangement": { - "$ref": "#/definitions/BarsArrangement" - }, - "CategoryAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ColorLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ContributionAnalysisDefaults": { - "items": { - "$ref": "#/definitions/ContributionAnalysisDefault" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/BarChartFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "Orientation": { - "$ref": "#/definitions/BarChartOrientation" - }, - "ReferenceLines": { - "items": { - "$ref": "#/definitions/ReferenceLine" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "SmallMultiplesOptions": { - "$ref": "#/definitions/SmallMultiplesOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/BarChartSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "ValueAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "ValueLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "BarChartFieldWells": { - "additionalProperties": false, - "properties": { - "BarChartAggregatedFieldWells": { - "$ref": "#/definitions/BarChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "BarChartOrientation": { - "enum": [ - "HORIZONTAL", - "VERTICAL" - ], - "type": "string" - }, - "BarChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "ColorItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "ColorSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "SmallMultiplesLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "SmallMultiplesSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "BarChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/BarChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "BarsArrangement": { - "enum": [ - "CLUSTERED", - "STACKED", - "STACKED_PERCENT" - ], - "type": "string" - }, - "BaseMapStyleType": { - "enum": [ - "LIGHT_GRAY", - "DARK_GRAY", - "STREET", - "IMAGERY" - ], - "type": "string" - }, - "BinCountOptions": { - "additionalProperties": false, - "properties": { - "Value": { - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "BinWidthOptions": { - "additionalProperties": false, - "properties": { - "BinCountLimit": { - "maximum": 1000, - "minimum": 0, - "type": "number" - }, - "Value": { - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "BodySectionConfiguration": { - "additionalProperties": false, - "properties": { - "Content": { - "$ref": "#/definitions/BodySectionContent" - }, - "PageBreakConfiguration": { - "$ref": "#/definitions/SectionPageBreakConfiguration" - }, - "SectionId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Style": { - "$ref": "#/definitions/SectionStyle" - } - }, - "required": [ - "Content", - "SectionId" - ], - "type": "object" - }, - "BodySectionContent": { - "additionalProperties": false, - "properties": { - "Layout": { - "$ref": "#/definitions/SectionLayoutConfiguration" - } - }, - "type": "object" - }, - "BoxPlotAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "GroupBy": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "BoxPlotChartConfiguration": { - "additionalProperties": false, - "properties": { - "BoxPlotOptions": { - "$ref": "#/definitions/BoxPlotOptions" - }, - "CategoryAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/BoxPlotFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "PrimaryYAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "PrimaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ReferenceLines": { - "items": { - "$ref": "#/definitions/ReferenceLine" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "SortConfiguration": { - "$ref": "#/definitions/BoxPlotSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "BoxPlotFieldWells": { - "additionalProperties": false, - "properties": { - "BoxPlotAggregatedFieldWells": { - "$ref": "#/definitions/BoxPlotAggregatedFieldWells" - } - }, - "type": "object" - }, - "BoxPlotFillStyle": { - "enum": [ - "SOLID", - "TRANSPARENT" - ], - "type": "string" - }, - "BoxPlotOptions": { - "additionalProperties": false, - "properties": { - "AllDataPointsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "OutlierVisibility": { - "$ref": "#/definitions/Visibility" - }, - "StyleOptions": { - "$ref": "#/definitions/BoxPlotStyleOptions" - } - }, - "type": "object" - }, - "BoxPlotSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "PaginationConfiguration": { - "$ref": "#/definitions/PaginationConfiguration" - } - }, - "type": "object" - }, - "BoxPlotStyleOptions": { - "additionalProperties": false, - "properties": { - "FillStyle": { - "$ref": "#/definitions/BoxPlotFillStyle" - } - }, - "type": "object" - }, - "BoxPlotVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/BoxPlotChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "CalculatedField": { - "additionalProperties": false, - "properties": { - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Expression": { - "maxLength": 32000, - "minLength": 1, - "type": "string" - }, - "Name": { - "maxLength": 127, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DataSetIdentifier", - "Expression", - "Name" - ], - "type": "object" - }, - "CalculatedMeasureField": { - "additionalProperties": false, - "properties": { - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Expression", - "FieldId" - ], - "type": "object" - }, - "CascadingControlConfiguration": { - "additionalProperties": false, - "properties": { - "SourceControls": { - "items": { - "$ref": "#/definitions/CascadingControlSource" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "CascadingControlSource": { - "additionalProperties": false, - "properties": { - "ColumnToMatch": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "SourceSheetControlId": { - "type": "string" - } - }, - "type": "object" - }, - "CategoricalAggregationFunction": { - "enum": [ - "COUNT", - "DISTINCT_COUNT" - ], - "type": "string" - }, - "CategoricalDimensionField": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/StringFormatConfiguration" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "CategoricalMeasureField": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/CategoricalAggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/StringFormatConfiguration" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "CategoryDrillDownFilter": { - "additionalProperties": false, - "properties": { - "CategoryValues": { - "items": { - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "maxItems": 100000, - "minItems": 0, - "type": "array" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - } - }, - "required": [ - "CategoryValues", - "Column" - ], - "type": "object" - }, - "CategoryFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "Configuration": { - "$ref": "#/definitions/CategoryFilterConfiguration" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "Column", - "Configuration", - "FilterId" - ], - "type": "object" - }, - "CategoryFilterConfiguration": { - "additionalProperties": false, - "properties": { - "CustomFilterConfiguration": { - "$ref": "#/definitions/CustomFilterConfiguration" - }, - "CustomFilterListConfiguration": { - "$ref": "#/definitions/CustomFilterListConfiguration" - }, - "FilterListConfiguration": { - "$ref": "#/definitions/FilterListConfiguration" - } - }, - "type": "object" - }, - "CategoryFilterMatchOperator": { - "enum": [ - "EQUALS", - "DOES_NOT_EQUAL", - "CONTAINS", - "DOES_NOT_CONTAIN", - "STARTS_WITH", - "ENDS_WITH" - ], - "type": "string" - }, - "CategoryFilterSelectAllOptions": { - "enum": [ - "FILTER_ALL_VALUES" - ], - "type": "string" - }, - "CategoryInnerFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "Configuration": { - "$ref": "#/definitions/CategoryFilterConfiguration" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - } - }, - "required": [ - "Column", - "Configuration" - ], - "type": "object" - }, - "ChartAxisLabelOptions": { - "additionalProperties": false, - "properties": { - "AxisLabelOptions": { - "items": { - "$ref": "#/definitions/AxisLabelOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "SortIconVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "ClusterMarker": { - "additionalProperties": false, - "properties": { - "SimpleClusterMarker": { - "$ref": "#/definitions/SimpleClusterMarker" - } - }, - "type": "object" - }, - "ClusterMarkerConfiguration": { - "additionalProperties": false, - "properties": { - "ClusterMarker": { - "$ref": "#/definitions/ClusterMarker" - } - }, - "type": "object" - }, - "ColorFillType": { - "enum": [ - "DISCRETE", - "GRADIENT" - ], - "type": "string" - }, - "ColorScale": { - "additionalProperties": false, - "properties": { - "ColorFillType": { - "$ref": "#/definitions/ColorFillType" - }, - "Colors": { - "items": { - "$ref": "#/definitions/DataColor" - }, - "maxItems": 3, - "minItems": 2, - "type": "array" - }, - "NullValueColor": { - "$ref": "#/definitions/DataColor" - } - }, - "required": [ - "ColorFillType", - "Colors" - ], - "type": "object" - }, - "ColorsConfiguration": { - "additionalProperties": false, - "properties": { - "CustomColors": { - "items": { - "$ref": "#/definitions/CustomColor" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ColumnConfiguration": { - "additionalProperties": false, - "properties": { - "ColorsConfiguration": { - "$ref": "#/definitions/ColorsConfiguration" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FormatConfiguration": { - "$ref": "#/definitions/FormatConfiguration" - }, - "Role": { - "$ref": "#/definitions/ColumnRole" - } - }, - "required": [ - "Column" - ], - "type": "object" - }, - "ColumnHierarchy": { - "additionalProperties": false, - "properties": { - "DateTimeHierarchy": { - "$ref": "#/definitions/DateTimeHierarchy" - }, - "ExplicitHierarchy": { - "$ref": "#/definitions/ExplicitHierarchy" - }, - "PredefinedHierarchy": { - "$ref": "#/definitions/PredefinedHierarchy" - } - }, - "type": "object" - }, - "ColumnIdentifier": { - "additionalProperties": false, - "properties": { - "ColumnName": { - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ColumnName", - "DataSetIdentifier" - ], - "type": "object" - }, - "ColumnRole": { - "enum": [ - "DIMENSION", - "MEASURE" - ], - "type": "string" - }, - "ColumnSort": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/AggregationFunction" - }, - "Direction": { - "$ref": "#/definitions/SortDirection" - }, - "SortBy": { - "$ref": "#/definitions/ColumnIdentifier" - } - }, - "required": [ - "Direction", - "SortBy" - ], - "type": "object" - }, - "ColumnTooltipItem": { - "additionalProperties": false, - "properties": { - "Aggregation": { - "$ref": "#/definitions/AggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "Label": { - "type": "string" - }, - "TooltipTarget": { - "$ref": "#/definitions/TooltipTarget" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "required": [ - "Column" - ], - "type": "object" - }, - "ComboChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "BarValues": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Colors": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "LineValues": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ComboChartConfiguration": { - "additionalProperties": false, - "properties": { - "BarDataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "BarsArrangement": { - "$ref": "#/definitions/BarsArrangement" - }, - "CategoryAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ColorLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/ComboChartFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "LineDataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "PrimaryYAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "PrimaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ReferenceLines": { - "items": { - "$ref": "#/definitions/ReferenceLine" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "SecondaryYAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "SecondaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "SingleAxisOptions": { - "$ref": "#/definitions/SingleAxisOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/ComboChartSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "ComboChartFieldWells": { - "additionalProperties": false, - "properties": { - "ComboChartAggregatedFieldWells": { - "$ref": "#/definitions/ComboChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "ComboChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "ColorItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "ColorSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ComboChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/ComboChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "CommitMode": { - "enum": [ - "AUTO", - "MANUAL" - ], - "type": "string" - }, - "ComparisonConfiguration": { - "additionalProperties": false, - "properties": { - "ComparisonFormat": { - "$ref": "#/definitions/ComparisonFormatConfiguration" - }, - "ComparisonMethod": { - "$ref": "#/definitions/ComparisonMethod" - } - }, - "type": "object" - }, - "ComparisonFormatConfiguration": { - "additionalProperties": false, - "properties": { - "NumberDisplayFormatConfiguration": { - "$ref": "#/definitions/NumberDisplayFormatConfiguration" - }, - "PercentageDisplayFormatConfiguration": { - "$ref": "#/definitions/PercentageDisplayFormatConfiguration" - } - }, - "type": "object" - }, - "ComparisonMethod": { - "enum": [ - "DIFFERENCE", - "PERCENT_DIFFERENCE", - "PERCENT" - ], - "type": "string" - }, - "Computation": { - "additionalProperties": false, - "properties": { - "Forecast": { - "$ref": "#/definitions/ForecastComputation" - }, - "GrowthRate": { - "$ref": "#/definitions/GrowthRateComputation" - }, - "MaximumMinimum": { - "$ref": "#/definitions/MaximumMinimumComputation" - }, - "MetricComparison": { - "$ref": "#/definitions/MetricComparisonComputation" - }, - "PeriodOverPeriod": { - "$ref": "#/definitions/PeriodOverPeriodComputation" - }, - "PeriodToDate": { - "$ref": "#/definitions/PeriodToDateComputation" - }, - "TopBottomMovers": { - "$ref": "#/definitions/TopBottomMoversComputation" - }, - "TopBottomRanked": { - "$ref": "#/definitions/TopBottomRankedComputation" - }, - "TotalAggregation": { - "$ref": "#/definitions/TotalAggregationComputation" - }, - "UniqueValues": { - "$ref": "#/definitions/UniqueValuesComputation" - } - }, - "type": "object" - }, - "ConditionalFormattingColor": { - "additionalProperties": false, - "properties": { - "Gradient": { - "$ref": "#/definitions/ConditionalFormattingGradientColor" - }, - "Solid": { - "$ref": "#/definitions/ConditionalFormattingSolidColor" - } - }, - "type": "object" - }, - "ConditionalFormattingCustomIconCondition": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "DisplayConfiguration": { - "$ref": "#/definitions/ConditionalFormattingIconDisplayConfiguration" - }, - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "IconOptions": { - "$ref": "#/definitions/ConditionalFormattingCustomIconOptions" - } - }, - "required": [ - "Expression", - "IconOptions" - ], - "type": "object" - }, - "ConditionalFormattingCustomIconOptions": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/Icon" - }, - "UnicodeIcon": { - "pattern": "^[^\\u0000-\\u00FF]$", - "type": "string" - } - }, - "type": "object" - }, - "ConditionalFormattingGradientColor": { - "additionalProperties": false, - "properties": { - "Color": { - "$ref": "#/definitions/GradientColor" - }, - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Color", - "Expression" - ], - "type": "object" - }, - "ConditionalFormattingIcon": { - "additionalProperties": false, - "properties": { - "CustomCondition": { - "$ref": "#/definitions/ConditionalFormattingCustomIconCondition" - }, - "IconSet": { - "$ref": "#/definitions/ConditionalFormattingIconSet" - } - }, - "type": "object" - }, - "ConditionalFormattingIconDisplayConfiguration": { - "additionalProperties": false, - "properties": { - "IconDisplayOption": { - "$ref": "#/definitions/ConditionalFormattingIconDisplayOption" - } - }, - "type": "object" - }, - "ConditionalFormattingIconDisplayOption": { - "enum": [ - "ICON_ONLY" - ], - "type": "string" - }, - "ConditionalFormattingIconSet": { - "additionalProperties": false, - "properties": { - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "IconSetType": { - "$ref": "#/definitions/ConditionalFormattingIconSetType" - } - }, - "required": [ - "Expression" - ], - "type": "object" - }, - "ConditionalFormattingIconSetType": { - "enum": [ - "PLUS_MINUS", - "CHECK_X", - "THREE_COLOR_ARROW", - "THREE_GRAY_ARROW", - "CARET_UP_MINUS_DOWN", - "THREE_SHAPE", - "THREE_CIRCLE", - "FLAGS", - "BARS", - "FOUR_COLOR_ARROW", - "FOUR_GRAY_ARROW" - ], - "type": "string" - }, - "ConditionalFormattingSolidColor": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Expression" - ], - "type": "object" - }, - "ContributionAnalysisDefault": { - "additionalProperties": false, - "properties": { - "ContributorDimensions": { - "items": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "maxItems": 4, - "minItems": 1, - "type": "array" - }, - "MeasureFieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ContributorDimensions", - "MeasureFieldId" - ], - "type": "object" - }, - "CrossDatasetTypes": { - "enum": [ - "ALL_DATASETS", - "SINGLE_DATASET" - ], - "type": "string" - }, - "CurrencyDisplayFormatConfiguration": { - "additionalProperties": false, - "properties": { - "DecimalPlacesConfiguration": { - "$ref": "#/definitions/DecimalPlacesConfiguration" - }, - "NegativeValueConfiguration": { - "$ref": "#/definitions/NegativeValueConfiguration" - }, - "NullValueFormatConfiguration": { - "$ref": "#/definitions/NullValueFormatConfiguration" - }, - "NumberScale": { - "$ref": "#/definitions/NumberScale" - }, - "Prefix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "SeparatorConfiguration": { - "$ref": "#/definitions/NumericSeparatorConfiguration" - }, - "Suffix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Symbol": { - "pattern": "^[A-Z]{3}$", - "type": "string" - } - }, - "type": "object" - }, - "CustomActionFilterOperation": { - "additionalProperties": false, - "properties": { - "SelectedFieldsConfiguration": { - "$ref": "#/definitions/FilterOperationSelectedFieldsConfiguration" - }, - "TargetVisualsConfiguration": { - "$ref": "#/definitions/FilterOperationTargetVisualsConfiguration" - } - }, - "required": [ - "SelectedFieldsConfiguration", - "TargetVisualsConfiguration" - ], - "type": "object" - }, - "CustomActionNavigationOperation": { - "additionalProperties": false, - "properties": { - "LocalNavigationConfiguration": { - "$ref": "#/definitions/LocalNavigationConfiguration" - } - }, - "type": "object" - }, - "CustomActionSetParametersOperation": { - "additionalProperties": false, - "properties": { - "ParameterValueConfigurations": { - "items": { - "$ref": "#/definitions/SetParameterValueConfiguration" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "ParameterValueConfigurations" - ], - "type": "object" - }, - "CustomActionURLOperation": { - "additionalProperties": false, - "properties": { - "URLTarget": { - "$ref": "#/definitions/URLTargetConfiguration" - }, - "URLTemplate": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "URLTarget", - "URLTemplate" - ], - "type": "object" - }, - "CustomColor": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "FieldValue": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - }, - "SpecialValue": { - "$ref": "#/definitions/SpecialValue" - } - }, - "required": [ - "Color" - ], - "type": "object" - }, - "CustomContentConfiguration": { - "additionalProperties": false, - "properties": { - "ContentType": { - "$ref": "#/definitions/CustomContentType" - }, - "ContentUrl": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "ImageScaling": { - "$ref": "#/definitions/CustomContentImageScalingConfiguration" - } - }, - "type": "object" - }, - "CustomContentImageScalingConfiguration": { - "enum": [ - "FIT_TO_HEIGHT", - "FIT_TO_WIDTH", - "DO_NOT_SCALE", - "SCALE_TO_VISUAL" - ], - "type": "string" - }, - "CustomContentType": { - "enum": [ - "IMAGE", - "OTHER_EMBEDDED_CONTENT" - ], - "type": "string" - }, - "CustomContentVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/CustomContentConfiguration" - }, - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "DataSetIdentifier", - "VisualId" - ], - "type": "object" - }, - "CustomFilterConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryValue": { - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "MatchOperator": { - "$ref": "#/definitions/CategoryFilterMatchOperator" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "SelectAllOptions": { - "$ref": "#/definitions/CategoryFilterSelectAllOptions" - } - }, - "required": [ - "MatchOperator", - "NullOption" - ], - "type": "object" - }, - "CustomFilterListConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryValues": { - "items": { - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "maxItems": 100000, - "minItems": 0, - "type": "array" - }, - "MatchOperator": { - "$ref": "#/definitions/CategoryFilterMatchOperator" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "SelectAllOptions": { - "$ref": "#/definitions/CategoryFilterSelectAllOptions" - } - }, - "required": [ - "MatchOperator", - "NullOption" - ], - "type": "object" - }, - "CustomNarrativeOptions": { - "additionalProperties": false, - "properties": { - "Narrative": { - "maxLength": 150000, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Narrative" - ], - "type": "object" - }, - "CustomParameterValues": { - "additionalProperties": false, - "properties": { - "DateTimeValues": { - "items": { - "format": "date-time", - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - }, - "DecimalValues": { - "items": { - "type": "number" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - }, - "IntegerValues": { - "items": { - "type": "number" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - }, - "StringValues": { - "items": { - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "CustomValuesConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValues": { - "$ref": "#/definitions/CustomParameterValues" - }, - "IncludeNullValue": { - "type": "boolean" - } - }, - "required": [ - "CustomValues" - ], - "type": "object" - }, - "DashboardBehavior": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "DashboardError": { - "additionalProperties": false, - "description": "

Dashboard error.

", - "properties": { - "Message": { - "description": "

Message.

", - "pattern": "\\S", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/DashboardErrorType" - }, - "ViolatedEntities": { - "description": "

Lists the violated entities that caused the dashboard error.

", - "items": { - "$ref": "#/definitions/Entity" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "DashboardErrorType": { - "enum": [ - "ACCESS_DENIED", - "SOURCE_NOT_FOUND", - "DATA_SET_NOT_FOUND", - "INTERNAL_FAILURE", - "PARAMETER_VALUE_INCOMPATIBLE", - "PARAMETER_TYPE_INVALID", - "PARAMETER_NOT_FOUND", - "COLUMN_TYPE_MISMATCH", - "COLUMN_GEOGRAPHIC_ROLE_MISMATCH", - "COLUMN_REPLACEMENT_MISSING" - ], - "type": "string" - }, - "DashboardPublishOptions": { - "additionalProperties": false, - "description": "

Dashboard publish options.

", - "properties": { - "AdHocFilteringOption": { - "$ref": "#/definitions/AdHocFilteringOption" - }, - "DataPointDrillUpDownOption": { - "$ref": "#/definitions/DataPointDrillUpDownOption" - }, - "DataPointMenuLabelOption": { - "$ref": "#/definitions/DataPointMenuLabelOption" - }, - "DataPointTooltipOption": { - "$ref": "#/definitions/DataPointTooltipOption" - }, - "ExportToCSVOption": { - "$ref": "#/definitions/ExportToCSVOption" - }, - "ExportWithHiddenFieldsOption": { - "$ref": "#/definitions/ExportWithHiddenFieldsOption" - }, - "SheetControlsOption": { - "$ref": "#/definitions/SheetControlsOption" - }, - "SheetLayoutElementMaximizationOption": { - "$ref": "#/definitions/SheetLayoutElementMaximizationOption" - }, - "VisualAxisSortOption": { - "$ref": "#/definitions/VisualAxisSortOption" - }, - "VisualMenuOption": { - "$ref": "#/definitions/VisualMenuOption" - }, - "VisualPublishOptions": { - "$ref": "#/definitions/DashboardVisualPublishOptions" - } - }, - "type": "object" - }, - "DashboardSourceEntity": { - "additionalProperties": false, - "description": "

Dashboard source entity.

", - "properties": { - "SourceTemplate": { - "$ref": "#/definitions/DashboardSourceTemplate" - } - }, - "type": "object" - }, - "DashboardSourceTemplate": { - "additionalProperties": false, - "description": "

Dashboard source template.

", - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) of the resource.

", - "type": "string" - }, - "DataSetReferences": { - "description": "

Dataset references.

", - "items": { - "$ref": "#/definitions/DataSetReference" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Arn", - "DataSetReferences" - ], - "type": "object" - }, - "DashboardUIState": { - "enum": [ - "EXPANDED", - "COLLAPSED" - ], - "type": "string" - }, - "DashboardVersion": { - "additionalProperties": false, - "description": "

Dashboard version.

", - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) of the resource.

", - "type": "string" - }, - "CreatedTime": { - "description": "

The time that this dashboard version was created.

", - "format": "date-time", - "type": "string" - }, - "DataSetArns": { - "description": "

The Amazon Resource Numbers (ARNs) for the datasets that are associated with this\n version of the dashboard.

", - "items": { - "type": "string" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "Description": { - "description": "

Description.

", - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Errors": { - "description": "

Errors associated with this dashboard version.

", - "items": { - "$ref": "#/definitions/DashboardError" - }, - "minItems": 1, - "type": "array" - }, - "Sheets": { - "description": "

A list of the associated sheets with the unique identifier and name of each sheet.

", - "items": { - "$ref": "#/definitions/Sheet" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "SourceEntityArn": { - "description": "

Source entity ARN.

", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/ResourceStatus" - }, - "ThemeArn": { - "description": "

The ARN of the theme associated with a version of the dashboard.

", - "type": "string" - }, - "VersionNumber": { - "description": "

Version number for this version of the dashboard.

", - "minimum": 1, - "type": "number" - } - }, - "type": "object" - }, - "DashboardVersionDefinition": { - "additionalProperties": false, - "properties": { - "AnalysisDefaults": { - "$ref": "#/definitions/AnalysisDefaults" - }, - "CalculatedFields": { - "items": { - "$ref": "#/definitions/CalculatedField" - }, - "maxItems": 500, - "minItems": 0, - "type": "array" - }, - "ColumnConfigurations": { - "items": { - "$ref": "#/definitions/ColumnConfiguration" - }, - "maxItems": 2000, - "minItems": 0, - "type": "array" - }, - "DataSetIdentifierDeclarations": { - "items": { - "$ref": "#/definitions/DataSetIdentifierDeclaration" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - }, - "FilterGroups": { - "items": { - "$ref": "#/definitions/FilterGroup" - }, - "maxItems": 2000, - "minItems": 0, - "type": "array" - }, - "Options": { - "$ref": "#/definitions/AssetOptions" - }, - "ParameterDeclarations": { - "items": { - "$ref": "#/definitions/ParameterDeclaration" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Sheets": { - "items": { - "$ref": "#/definitions/SheetDefinition" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "DataSetIdentifierDeclarations" - ], - "type": "object" - }, - "DashboardVisualPublishOptions": { - "additionalProperties": false, - "description": "

The visual publish options of a visual in a dashboard

", - "properties": { - "ExportHiddenFieldsOption": { - "$ref": "#/definitions/ExportHiddenFieldsOption" - } - }, - "type": "object" - }, - "DataBarsOptions": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "NegativeColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "PositiveColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "DataColor": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "DataValue": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "DataFieldSeriesItem": { - "additionalProperties": false, - "properties": { - "AxisBinding": { - "$ref": "#/definitions/AxisBinding" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FieldValue": { - "type": "string" - }, - "Settings": { - "$ref": "#/definitions/LineChartSeriesSettings" - } - }, - "required": [ - "AxisBinding", - "FieldId" - ], - "type": "object" - }, - "DataLabelContent": { - "enum": [ - "VALUE", - "PERCENT", - "VALUE_AND_PERCENT" - ], - "type": "string" - }, - "DataLabelOptions": { - "additionalProperties": false, - "properties": { - "CategoryLabelVisibility": { - "$ref": "#/definitions/Visibility" - }, - "DataLabelTypes": { - "items": { - "$ref": "#/definitions/DataLabelType" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "LabelColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "LabelContent": { - "$ref": "#/definitions/DataLabelContent" - }, - "LabelFontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "MeasureLabelVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Overlap": { - "$ref": "#/definitions/DataLabelOverlap" - }, - "Position": { - "$ref": "#/definitions/DataLabelPosition" - }, - "TotalsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "DataLabelOverlap": { - "enum": [ - "DISABLE_OVERLAP", - "ENABLE_OVERLAP" - ], - "type": "string" - }, - "DataLabelPosition": { - "enum": [ - "INSIDE", - "OUTSIDE", - "LEFT", - "TOP", - "BOTTOM", - "RIGHT" - ], - "type": "string" - }, - "DataLabelType": { - "additionalProperties": false, - "properties": { - "DataPathLabelType": { - "$ref": "#/definitions/DataPathLabelType" - }, - "FieldLabelType": { - "$ref": "#/definitions/FieldLabelType" - }, - "MaximumLabelType": { - "$ref": "#/definitions/MaximumLabelType" - }, - "MinimumLabelType": { - "$ref": "#/definitions/MinimumLabelType" - }, - "RangeEndsLabelType": { - "$ref": "#/definitions/RangeEndsLabelType" - } - }, - "type": "object" - }, - "DataPathColor": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Element": { - "$ref": "#/definitions/DataPathValue" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - } - }, - "required": [ - "Color", - "Element" - ], - "type": "object" - }, - "DataPathLabelType": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FieldValue": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "DataPathSort": { - "additionalProperties": false, - "properties": { - "Direction": { - "$ref": "#/definitions/SortDirection" - }, - "SortPaths": { - "items": { - "$ref": "#/definitions/DataPathValue" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Direction", - "SortPaths" - ], - "type": "object" - }, - "DataPathType": { - "additionalProperties": false, - "properties": { - "PivotTableDataPathType": { - "$ref": "#/definitions/PivotTableDataPathType" - } - }, - "type": "object" - }, - "DataPathValue": { - "additionalProperties": false, - "properties": { - "DataPathType": { - "$ref": "#/definitions/DataPathType" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FieldValue": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "DataPointDrillUpDownOption": { - "additionalProperties": false, - "description": "

The drill down options for data points in a dashbaord.

", - "properties": { - "AvailabilityStatus": { - "$ref": "#/definitions/DashboardBehavior" - } - }, - "type": "object" - }, - "DataPointMenuLabelOption": { - "additionalProperties": false, - "description": "

The data point menu options of a dashboard.

", - "properties": { - "AvailabilityStatus": { - "$ref": "#/definitions/DashboardBehavior" - } - }, - "type": "object" - }, - "DataPointTooltipOption": { - "additionalProperties": false, - "description": "

The data point tooltip options.

", - "properties": { - "AvailabilityStatus": { - "$ref": "#/definitions/DashboardBehavior" - } - }, - "type": "object" - }, - "DataSetIdentifierDeclaration": { - "additionalProperties": false, - "properties": { - "DataSetArn": { - "type": "string" - }, - "Identifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DataSetArn", - "Identifier" - ], - "type": "object" - }, - "DataSetReference": { - "additionalProperties": false, - "description": "

Dataset reference.

", - "properties": { - "DataSetArn": { - "description": "

Dataset Amazon Resource Name (ARN).

", - "type": "string" - }, - "DataSetPlaceholder": { - "description": "

Dataset placeholder.

", - "pattern": "\\S", - "type": "string" - } - }, - "required": [ - "DataSetArn", - "DataSetPlaceholder" - ], - "type": "object" - }, - "DateAggregationFunction": { - "enum": [ - "COUNT", - "DISTINCT_COUNT", - "MIN", - "MAX" - ], - "type": "string" - }, - "DateAxisOptions": { - "additionalProperties": false, - "properties": { - "MissingDateVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "DateDimensionField": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DateGranularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/DateTimeFormatConfiguration" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "DateMeasureField": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/DateAggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/DateTimeFormatConfiguration" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "DateTimeDefaultValues": { - "additionalProperties": false, - "properties": { - "DynamicValue": { - "$ref": "#/definitions/DynamicDefaultValue" - }, - "RollingDate": { - "$ref": "#/definitions/RollingDateConfiguration" - }, - "StaticValues": { - "items": { - "format": "date-time", - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "DateTimeFormatConfiguration": { - "additionalProperties": false, - "properties": { - "DateTimeFormat": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "NullValueFormatConfiguration": { - "$ref": "#/definitions/NullValueFormatConfiguration" - }, - "NumericFormatConfiguration": { - "$ref": "#/definitions/NumericFormatConfiguration" - } - }, - "type": "object" - }, - "DateTimeHierarchy": { - "additionalProperties": false, - "properties": { - "DrillDownFilters": { - "items": { - "$ref": "#/definitions/DrillDownFilter" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "HierarchyId" - ], - "type": "object" - }, - "DateTimeParameter": { - "additionalProperties": false, - "description": "

A date-time parameter.

", - "properties": { - "Name": { - "description": "

A display name for the date-time parameter.

", - "pattern": "\\S", - "type": "string" - }, - "Values": { - "description": "

The values for the date-time parameter.

", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "Name", - "Values" - ], - "type": "object" - }, - "DateTimeParameterDeclaration": { - "additionalProperties": false, - "properties": { - "DefaultValues": { - "$ref": "#/definitions/DateTimeDefaultValues" - }, - "MappedDataSetParameters": { - "items": { - "$ref": "#/definitions/MappedDataSetParameter" - }, - "maxItems": 150, - "minItems": 0, - "type": "array" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "ValueWhenUnset": { - "$ref": "#/definitions/DateTimeValueWhenUnsetConfiguration" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "DateTimePickerControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "DateTimeFormat": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "DateTimeValueWhenUnsetConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValue": { - "format": "date-time", - "type": "string" - }, - "ValueWhenUnsetOption": { - "$ref": "#/definitions/ValueWhenUnsetOption" - } - }, - "type": "object" - }, - "DayOfTheWeek": { - "enum": [ - "SUNDAY", - "MONDAY", - "TUESDAY", - "WEDNESDAY", - "THURSDAY", - "FRIDAY", - "SATURDAY" - ], - "type": "string" - }, - "DecimalDefaultValues": { - "additionalProperties": false, - "properties": { - "DynamicValue": { - "$ref": "#/definitions/DynamicDefaultValue" - }, - "StaticValues": { - "items": { - "type": "number" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "DecimalParameter": { - "additionalProperties": false, - "description": "

A decimal parameter.

", - "properties": { - "Name": { - "description": "

A display name for the decimal parameter.

", - "pattern": "\\S", - "type": "string" - }, - "Values": { - "description": "

The values for the decimal parameter.

", - "items": { - "default": 0, - "type": "number" - }, - "type": "array" - } - }, - "required": [ - "Name", - "Values" - ], - "type": "object" - }, - "DecimalParameterDeclaration": { - "additionalProperties": false, - "properties": { - "DefaultValues": { - "$ref": "#/definitions/DecimalDefaultValues" - }, - "MappedDataSetParameters": { - "items": { - "$ref": "#/definitions/MappedDataSetParameter" - }, - "maxItems": 150, - "minItems": 0, - "type": "array" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "ParameterValueType": { - "$ref": "#/definitions/ParameterValueType" - }, - "ValueWhenUnset": { - "$ref": "#/definitions/DecimalValueWhenUnsetConfiguration" - } - }, - "required": [ - "Name", - "ParameterValueType" - ], - "type": "object" - }, - "DecimalPlacesConfiguration": { - "additionalProperties": false, - "properties": { - "DecimalPlaces": { - "maximum": 20, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "DecimalPlaces" - ], - "type": "object" - }, - "DecimalValueWhenUnsetConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValue": { - "default": null, - "type": "number" - }, - "ValueWhenUnsetOption": { - "$ref": "#/definitions/ValueWhenUnsetOption" - } - }, - "type": "object" - }, - "DefaultDateTimePickerControlOptions": { - "additionalProperties": false, - "properties": { - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/DateTimePickerControlDisplayOptions" - }, - "Type": { - "$ref": "#/definitions/SheetControlDateTimePickerType" - } - }, - "type": "object" - }, - "DefaultFilterControlConfiguration": { - "additionalProperties": false, - "properties": { - "ControlOptions": { - "$ref": "#/definitions/DefaultFilterControlOptions" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ControlOptions", - "Title" - ], - "type": "object" - }, - "DefaultFilterControlOptions": { - "additionalProperties": false, - "properties": { - "DefaultDateTimePickerOptions": { - "$ref": "#/definitions/DefaultDateTimePickerControlOptions" - }, - "DefaultDropdownOptions": { - "$ref": "#/definitions/DefaultFilterDropDownControlOptions" - }, - "DefaultListOptions": { - "$ref": "#/definitions/DefaultFilterListControlOptions" - }, - "DefaultRelativeDateTimeOptions": { - "$ref": "#/definitions/DefaultRelativeDateTimeControlOptions" - }, - "DefaultSliderOptions": { - "$ref": "#/definitions/DefaultSliderControlOptions" - }, - "DefaultTextAreaOptions": { - "$ref": "#/definitions/DefaultTextAreaControlOptions" - }, - "DefaultTextFieldOptions": { - "$ref": "#/definitions/DefaultTextFieldControlOptions" - } - }, - "type": "object" - }, - "DefaultFilterDropDownControlOptions": { - "additionalProperties": false, - "properties": { - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/DropDownControlDisplayOptions" - }, - "SelectableValues": { - "$ref": "#/definitions/FilterSelectableValues" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "type": "object" - }, - "DefaultFilterListControlOptions": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/ListControlDisplayOptions" - }, - "SelectableValues": { - "$ref": "#/definitions/FilterSelectableValues" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "type": "object" - }, - "DefaultFreeFormLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "CanvasSizeOptions": { - "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" - } - }, - "required": [ - "CanvasSizeOptions" - ], - "type": "object" - }, - "DefaultGridLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "CanvasSizeOptions": { - "$ref": "#/definitions/GridLayoutCanvasSizeOptions" - } - }, - "required": [ - "CanvasSizeOptions" - ], - "type": "object" - }, - "DefaultInteractiveLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "FreeForm": { - "$ref": "#/definitions/DefaultFreeFormLayoutConfiguration" - }, - "Grid": { - "$ref": "#/definitions/DefaultGridLayoutConfiguration" - } - }, - "type": "object" - }, - "DefaultNewSheetConfiguration": { - "additionalProperties": false, - "properties": { - "InteractiveLayoutConfiguration": { - "$ref": "#/definitions/DefaultInteractiveLayoutConfiguration" - }, - "PaginatedLayoutConfiguration": { - "$ref": "#/definitions/DefaultPaginatedLayoutConfiguration" - }, - "SheetContentType": { - "$ref": "#/definitions/SheetContentType" - } - }, - "type": "object" - }, - "DefaultPaginatedLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "SectionBased": { - "$ref": "#/definitions/DefaultSectionBasedLayoutConfiguration" - } - }, - "type": "object" - }, - "DefaultRelativeDateTimeControlOptions": { - "additionalProperties": false, - "properties": { - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" - } - }, - "type": "object" - }, - "DefaultSectionBasedLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "CanvasSizeOptions": { - "$ref": "#/definitions/SectionBasedLayoutCanvasSizeOptions" - } - }, - "required": [ - "CanvasSizeOptions" - ], - "type": "object" - }, - "DefaultSliderControlOptions": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/SliderControlDisplayOptions" - }, - "MaximumValue": { - "default": 0, - "type": "number" - }, - "MinimumValue": { - "default": 0, - "type": "number" - }, - "StepSize": { - "default": 0, - "type": "number" - }, - "Type": { - "$ref": "#/definitions/SheetControlSliderType" - } - }, - "required": [ - "MaximumValue", - "MinimumValue", - "StepSize" - ], - "type": "object" - }, - "DefaultTextAreaControlOptions": { - "additionalProperties": false, - "properties": { - "Delimiter": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "DisplayOptions": { - "$ref": "#/definitions/TextAreaControlDisplayOptions" - } - }, - "type": "object" - }, - "DefaultTextFieldControlOptions": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/TextFieldControlDisplayOptions" - } - }, - "type": "object" - }, - "DestinationParameterValueConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValuesConfiguration": { - "$ref": "#/definitions/CustomValuesConfiguration" - }, - "SelectAllValueOptions": { - "$ref": "#/definitions/SelectAllValueOptions" - }, - "SourceColumn": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "SourceField": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "SourceParameterName": { - "type": "string" - } - }, - "type": "object" - }, - "DimensionField": { - "additionalProperties": false, - "properties": { - "CategoricalDimensionField": { - "$ref": "#/definitions/CategoricalDimensionField" - }, - "DateDimensionField": { - "$ref": "#/definitions/DateDimensionField" - }, - "NumericalDimensionField": { - "$ref": "#/definitions/NumericalDimensionField" - } - }, - "type": "object" - }, - "DonutCenterOptions": { - "additionalProperties": false, - "properties": { - "LabelVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "DonutOptions": { - "additionalProperties": false, - "properties": { - "ArcOptions": { - "$ref": "#/definitions/ArcOptions" - }, - "DonutCenterOptions": { - "$ref": "#/definitions/DonutCenterOptions" - } - }, - "type": "object" - }, - "DrillDownFilter": { - "additionalProperties": false, - "properties": { - "CategoryFilter": { - "$ref": "#/definitions/CategoryDrillDownFilter" - }, - "NumericEqualityFilter": { - "$ref": "#/definitions/NumericEqualityDrillDownFilter" - }, - "TimeRangeFilter": { - "$ref": "#/definitions/TimeRangeDrillDownFilter" - } - }, - "type": "object" - }, - "DropDownControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "SelectAllOptions": { - "$ref": "#/definitions/ListControlSelectAllOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "DynamicDefaultValue": { - "additionalProperties": false, - "properties": { - "DefaultValueColumn": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "GroupNameColumn": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "UserNameColumn": { - "$ref": "#/definitions/ColumnIdentifier" - } - }, - "required": [ - "DefaultValueColumn" - ], - "type": "object" - }, - "EmptyVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "DataSetIdentifier", - "VisualId" - ], - "type": "object" - }, - "Entity": { - "additionalProperties": false, - "properties": { - "Path": { - "pattern": "\\S", - "type": "string" - } - }, - "type": "object" - }, - "ExcludePeriodConfiguration": { - "additionalProperties": false, - "properties": { - "Amount": { - "default": null, - "type": "number" - }, - "Granularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "Status": { - "$ref": "#/definitions/WidgetStatus" - } - }, - "required": [ - "Amount", - "Granularity" - ], - "type": "object" - }, - "ExplicitHierarchy": { - "additionalProperties": false, - "properties": { - "Columns": { - "items": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "maxItems": 10, - "minItems": 2, - "type": "array" - }, - "DrillDownFilters": { - "items": { - "$ref": "#/definitions/DrillDownFilter" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Columns", - "HierarchyId" - ], - "type": "object" - }, - "ExportHiddenFieldsOption": { - "additionalProperties": false, - "description": "

Determines if hidden fields are included in an exported dashboard.

", - "properties": { - "AvailabilityStatus": { - "$ref": "#/definitions/DashboardBehavior" - } - }, - "type": "object" - }, - "ExportToCSVOption": { - "additionalProperties": false, - "description": "

Export to .csv option.

", - "properties": { - "AvailabilityStatus": { - "$ref": "#/definitions/DashboardBehavior" - } - }, - "type": "object" - }, - "ExportWithHiddenFieldsOption": { - "additionalProperties": false, - "description": "

Determines whether or not hidden fields are visible on exported dashbaords.

", - "properties": { - "AvailabilityStatus": { - "$ref": "#/definitions/DashboardBehavior" - } - }, - "type": "object" - }, - "FieldBasedTooltip": { - "additionalProperties": false, - "properties": { - "AggregationVisibility": { - "$ref": "#/definitions/Visibility" - }, - "TooltipFields": { - "items": { - "$ref": "#/definitions/TooltipItem" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "TooltipTitleType": { - "$ref": "#/definitions/TooltipTitleType" - } - }, - "type": "object" - }, - "FieldLabelType": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "FieldSeriesItem": { - "additionalProperties": false, - "properties": { - "AxisBinding": { - "$ref": "#/definitions/AxisBinding" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Settings": { - "$ref": "#/definitions/LineChartSeriesSettings" - } - }, - "required": [ - "AxisBinding", - "FieldId" - ], - "type": "object" - }, - "FieldSort": { - "additionalProperties": false, - "properties": { - "Direction": { - "$ref": "#/definitions/SortDirection" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Direction", - "FieldId" - ], - "type": "object" - }, - "FieldSortOptions": { - "additionalProperties": false, - "properties": { - "ColumnSort": { - "$ref": "#/definitions/ColumnSort" - }, - "FieldSort": { - "$ref": "#/definitions/FieldSort" - } - }, - "type": "object" - }, - "FieldTooltipItem": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Label": { - "type": "string" - }, - "TooltipTarget": { - "$ref": "#/definitions/TooltipTarget" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "FilledMapAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Geospatial": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "FilledMapConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ConditionalFormattingOptions": { - "items": { - "$ref": "#/definitions/FilledMapConditionalFormattingOption" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "ConditionalFormattingOptions" - ], - "type": "object" - }, - "FilledMapConditionalFormattingOption": { - "additionalProperties": false, - "properties": { - "Shape": { - "$ref": "#/definitions/FilledMapShapeConditionalFormatting" - } - }, - "required": [ - "Shape" - ], - "type": "object" - }, - "FilledMapConfiguration": { - "additionalProperties": false, - "properties": { - "FieldWells": { - "$ref": "#/definitions/FilledMapFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "MapStyleOptions": { - "$ref": "#/definitions/GeospatialMapStyleOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/FilledMapSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "WindowOptions": { - "$ref": "#/definitions/GeospatialWindowOptions" - } - }, - "type": "object" - }, - "FilledMapFieldWells": { - "additionalProperties": false, - "properties": { - "FilledMapAggregatedFieldWells": { - "$ref": "#/definitions/FilledMapAggregatedFieldWells" - } - }, - "type": "object" - }, - "FilledMapShapeConditionalFormatting": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Format": { - "$ref": "#/definitions/ShapeConditionalFormat" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "FilledMapSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "FilledMapVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/FilledMapConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "ConditionalFormatting": { - "$ref": "#/definitions/FilledMapConditionalFormatting" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "Filter": { - "additionalProperties": false, - "properties": { - "CategoryFilter": { - "$ref": "#/definitions/CategoryFilter" - }, - "NestedFilter": { - "$ref": "#/definitions/NestedFilter" - }, - "NumericEqualityFilter": { - "$ref": "#/definitions/NumericEqualityFilter" - }, - "NumericRangeFilter": { - "$ref": "#/definitions/NumericRangeFilter" - }, - "RelativeDatesFilter": { - "$ref": "#/definitions/RelativeDatesFilter" - }, - "TimeEqualityFilter": { - "$ref": "#/definitions/TimeEqualityFilter" - }, - "TimeRangeFilter": { - "$ref": "#/definitions/TimeRangeFilter" - }, - "TopBottomFilter": { - "$ref": "#/definitions/TopBottomFilter" - } - }, - "type": "object" - }, - "FilterControl": { - "additionalProperties": false, - "properties": { - "CrossSheet": { - "$ref": "#/definitions/FilterCrossSheetControl" - }, - "DateTimePicker": { - "$ref": "#/definitions/FilterDateTimePickerControl" - }, - "Dropdown": { - "$ref": "#/definitions/FilterDropDownControl" - }, - "List": { - "$ref": "#/definitions/FilterListControl" - }, - "RelativeDateTime": { - "$ref": "#/definitions/FilterRelativeDateTimeControl" - }, - "Slider": { - "$ref": "#/definitions/FilterSliderControl" - }, - "TextArea": { - "$ref": "#/definitions/FilterTextAreaControl" - }, - "TextField": { - "$ref": "#/definitions/FilterTextFieldControl" - } - }, - "type": "object" - }, - "FilterCrossSheetControl": { - "additionalProperties": false, - "properties": { - "CascadingControlConfiguration": { - "$ref": "#/definitions/CascadingControlConfiguration" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId" - ], - "type": "object" - }, - "FilterDateTimePickerControl": { - "additionalProperties": false, - "properties": { - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/DateTimePickerControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlDateTimePickerType" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterDropDownControl": { - "additionalProperties": false, - "properties": { - "CascadingControlConfiguration": { - "$ref": "#/definitions/CascadingControlConfiguration" - }, - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/DropDownControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SelectableValues": { - "$ref": "#/definitions/FilterSelectableValues" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterGroup": { - "additionalProperties": false, - "properties": { - "CrossDataset": { - "$ref": "#/definitions/CrossDatasetTypes" - }, - "FilterGroupId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Filters": { - "items": { - "$ref": "#/definitions/Filter" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "ScopeConfiguration": { - "$ref": "#/definitions/FilterScopeConfiguration" - }, - "Status": { - "$ref": "#/definitions/WidgetStatus" - } - }, - "required": [ - "CrossDataset", - "FilterGroupId", - "Filters", - "ScopeConfiguration" - ], - "type": "object" - }, - "FilterListConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryValues": { - "items": { - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "maxItems": 100000, - "minItems": 0, - "type": "array" - }, - "MatchOperator": { - "$ref": "#/definitions/CategoryFilterMatchOperator" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "SelectAllOptions": { - "$ref": "#/definitions/CategoryFilterSelectAllOptions" - } - }, - "required": [ - "MatchOperator" - ], - "type": "object" - }, - "FilterListControl": { - "additionalProperties": false, - "properties": { - "CascadingControlConfiguration": { - "$ref": "#/definitions/CascadingControlConfiguration" - }, - "DisplayOptions": { - "$ref": "#/definitions/ListControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SelectableValues": { - "$ref": "#/definitions/FilterSelectableValues" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterNullOption": { - "enum": [ - "ALL_VALUES", - "NULLS_ONLY", - "NON_NULLS_ONLY" - ], - "type": "string" - }, - "FilterOperationSelectedFieldsConfiguration": { - "additionalProperties": false, - "properties": { - "SelectedColumns": { - "description": "

The selected columns of a dataset.

", - "items": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "SelectedFieldOptions": { - "$ref": "#/definitions/SelectedFieldOptions" - }, - "SelectedFields": { - "items": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "FilterOperationTargetVisualsConfiguration": { - "additionalProperties": false, - "properties": { - "SameSheetTargetVisualConfiguration": { - "$ref": "#/definitions/SameSheetTargetVisualConfiguration" - } - }, - "type": "object" - }, - "FilterRelativeDateTimeControl": { - "additionalProperties": false, - "properties": { - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterScopeConfiguration": { - "additionalProperties": false, - "properties": { - "AllSheets": { - "$ref": "#/definitions/AllSheetsFilterScopeConfiguration" - }, - "SelectedSheets": { - "$ref": "#/definitions/SelectedSheetsFilterScopeConfiguration" - } - }, - "type": "object" - }, - "FilterSelectableValues": { - "additionalProperties": false, - "properties": { - "Values": { - "items": { - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "FilterSliderControl": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/SliderControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "MaximumValue": { - "default": 0, - "type": "number" - }, - "MinimumValue": { - "default": 0, - "type": "number" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "StepSize": { - "default": 0, - "type": "number" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlSliderType" - } - }, - "required": [ - "FilterControlId", - "MaximumValue", - "MinimumValue", - "SourceFilterId", - "StepSize", - "Title" - ], - "type": "object" - }, - "FilterTextAreaControl": { - "additionalProperties": false, - "properties": { - "Delimiter": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "DisplayOptions": { - "$ref": "#/definitions/TextAreaControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterTextFieldControl": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/TextFieldControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterVisualScope": { - "enum": [ - "ALL_VISUALS", - "SELECTED_VISUALS" - ], - "type": "string" - }, - "FontConfiguration": { - "additionalProperties": false, - "properties": { - "FontColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "FontDecoration": { - "$ref": "#/definitions/FontDecoration" - }, - "FontSize": { - "$ref": "#/definitions/FontSize" - }, - "FontStyle": { - "$ref": "#/definitions/FontStyle" - }, - "FontWeight": { - "$ref": "#/definitions/FontWeight" - } - }, - "type": "object" - }, - "FontDecoration": { - "enum": [ - "UNDERLINE", - "NONE" - ], - "type": "string" - }, - "FontSize": { - "additionalProperties": false, - "properties": { - "Relative": { - "$ref": "#/definitions/RelativeFontSize" - } - }, - "type": "object" - }, - "FontStyle": { - "enum": [ - "NORMAL", - "ITALIC" - ], - "type": "string" - }, - "FontWeight": { - "additionalProperties": false, - "properties": { - "Name": { - "$ref": "#/definitions/FontWeightName" - } - }, - "type": "object" - }, - "FontWeightName": { - "enum": [ - "NORMAL", - "BOLD" - ], - "type": "string" - }, - "ForecastComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "CustomSeasonalityValue": { - "default": null, - "maximum": 180, - "minimum": 1, - "type": "number" - }, - "LowerBoundary": { - "default": null, - "type": "number" - }, - "Name": { - "type": "string" - }, - "PeriodsBackward": { - "maximum": 1000, - "minimum": 0, - "type": "number" - }, - "PeriodsForward": { - "maximum": 1000, - "minimum": 1, - "type": "number" - }, - "PredictionInterval": { - "maximum": 95, - "minimum": 50, - "type": "number" - }, - "Seasonality": { - "$ref": "#/definitions/ForecastComputationSeasonality" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "UpperBoundary": { - "default": null, - "type": "number" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "ForecastComputationSeasonality": { - "enum": [ - "AUTOMATIC", - "CUSTOM" - ], - "type": "string" - }, - "ForecastConfiguration": { - "additionalProperties": false, - "properties": { - "ForecastProperties": { - "$ref": "#/definitions/TimeBasedForecastProperties" - }, - "Scenario": { - "$ref": "#/definitions/ForecastScenario" - } - }, - "type": "object" - }, - "ForecastScenario": { - "additionalProperties": false, - "properties": { - "WhatIfPointScenario": { - "$ref": "#/definitions/WhatIfPointScenario" - }, - "WhatIfRangeScenario": { - "$ref": "#/definitions/WhatIfRangeScenario" - } - }, - "type": "object" - }, - "FormatConfiguration": { - "additionalProperties": false, - "properties": { - "DateTimeFormatConfiguration": { - "$ref": "#/definitions/DateTimeFormatConfiguration" - }, - "NumberFormatConfiguration": { - "$ref": "#/definitions/NumberFormatConfiguration" - }, - "StringFormatConfiguration": { - "$ref": "#/definitions/StringFormatConfiguration" - } - }, - "type": "object" - }, - "FreeFormLayoutCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "ScreenCanvasSizeOptions": { - "$ref": "#/definitions/FreeFormLayoutScreenCanvasSizeOptions" - } - }, - "type": "object" - }, - "FreeFormLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "CanvasSizeOptions": { - "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" - }, - "Elements": { - "items": { - "$ref": "#/definitions/FreeFormLayoutElement" - }, - "maxItems": 430, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Elements" - ], - "type": "object" - }, - "FreeFormLayoutElement": { - "additionalProperties": false, - "properties": { - "BackgroundStyle": { - "$ref": "#/definitions/FreeFormLayoutElementBackgroundStyle" - }, - "BorderStyle": { - "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" - }, - "ElementId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "ElementType": { - "$ref": "#/definitions/LayoutElementType" - }, - "Height": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "LoadingAnimation": { - "$ref": "#/definitions/LoadingAnimation" - }, - "RenderingRules": { - "items": { - "$ref": "#/definitions/SheetElementRenderingRule" - }, - "maxItems": 10000, - "minItems": 0, - "type": "array" - }, - "SelectedBorderStyle": { - "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - }, - "Width": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "XAxisLocation": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "YAxisLocation": { - "description": "String based length that is composed of value and unit in px with Integer.MAX_VALUE as maximum value", - "type": "string" - } - }, - "required": [ - "ElementId", - "ElementType", - "Height", - "Width", - "XAxisLocation", - "YAxisLocation" - ], - "type": "object" - }, - "FreeFormLayoutElementBackgroundStyle": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "FreeFormLayoutElementBorderStyle": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "FreeFormLayoutScreenCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "OptimizedViewPortWidth": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - } - }, - "required": [ - "OptimizedViewPortWidth" - ], - "type": "object" - }, - "FreeFormSectionLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "Elements": { - "items": { - "$ref": "#/definitions/FreeFormLayoutElement" - }, - "maxItems": 430, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Elements" - ], - "type": "object" - }, - "FunnelChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "FunnelChartConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "DataLabelOptions": { - "$ref": "#/definitions/FunnelChartDataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/FunnelChartFieldWells" - }, - "SortConfiguration": { - "$ref": "#/definitions/FunnelChartSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "ValueLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "FunnelChartDataLabelOptions": { - "additionalProperties": false, - "properties": { - "CategoryLabelVisibility": { - "$ref": "#/definitions/Visibility" - }, - "LabelColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "LabelFontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "MeasureDataLabelStyle": { - "$ref": "#/definitions/FunnelChartMeasureDataLabelStyle" - }, - "MeasureLabelVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Position": { - "$ref": "#/definitions/DataLabelPosition" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "FunnelChartFieldWells": { - "additionalProperties": false, - "properties": { - "FunnelChartAggregatedFieldWells": { - "$ref": "#/definitions/FunnelChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "FunnelChartMeasureDataLabelStyle": { - "enum": [ - "VALUE_ONLY", - "PERCENTAGE_BY_FIRST_STAGE", - "PERCENTAGE_BY_PREVIOUS_STAGE", - "VALUE_AND_PERCENTAGE_BY_FIRST_STAGE", - "VALUE_AND_PERCENTAGE_BY_PREVIOUS_STAGE" - ], - "type": "string" - }, - "FunnelChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "FunnelChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/FunnelChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "GaugeChartArcConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ForegroundColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "GaugeChartConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ConditionalFormattingOptions": { - "items": { - "$ref": "#/definitions/GaugeChartConditionalFormattingOption" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "GaugeChartConditionalFormattingOption": { - "additionalProperties": false, - "properties": { - "Arc": { - "$ref": "#/definitions/GaugeChartArcConditionalFormatting" - }, - "PrimaryValue": { - "$ref": "#/definitions/GaugeChartPrimaryValueConditionalFormatting" - } - }, - "type": "object" - }, - "GaugeChartConfiguration": { - "additionalProperties": false, - "properties": { - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/GaugeChartFieldWells" - }, - "GaugeChartOptions": { - "$ref": "#/definitions/GaugeChartOptions" - }, - "TooltipOptions": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "GaugeChartFieldWells": { - "additionalProperties": false, - "properties": { - "TargetValues": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "GaugeChartOptions": { - "additionalProperties": false, - "properties": { - "Arc": { - "$ref": "#/definitions/ArcConfiguration" - }, - "ArcAxis": { - "$ref": "#/definitions/ArcAxisConfiguration" - }, - "Comparison": { - "$ref": "#/definitions/ComparisonConfiguration" - }, - "PrimaryValueDisplayType": { - "$ref": "#/definitions/PrimaryValueDisplayType" - }, - "PrimaryValueFontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - } - }, - "type": "object" - }, - "GaugeChartPrimaryValueConditionalFormatting": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/ConditionalFormattingIcon" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "GaugeChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/GaugeChartConfiguration" - }, - "ConditionalFormatting": { - "$ref": "#/definitions/GaugeChartConditionalFormatting" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "GeospatialCoordinateBounds": { - "additionalProperties": false, - "properties": { - "East": { - "maximum": 1800, - "minimum": -1800, - "type": "number" - }, - "North": { - "maximum": 90, - "minimum": -90, - "type": "number" - }, - "South": { - "maximum": 90, - "minimum": -90, - "type": "number" - }, - "West": { - "maximum": 1800, - "minimum": -1800, - "type": "number" - } - }, - "required": [ - "East", - "North", - "South", - "West" - ], - "type": "object" - }, - "GeospatialHeatmapColorScale": { - "additionalProperties": false, - "properties": { - "Colors": { - "items": { - "$ref": "#/definitions/GeospatialHeatmapDataColor" - }, - "maxItems": 2, - "minItems": 2, - "type": "array" - } - }, - "type": "object" - }, - "GeospatialHeatmapConfiguration": { - "additionalProperties": false, - "properties": { - "HeatmapColor": { - "$ref": "#/definitions/GeospatialHeatmapColorScale" - } - }, - "type": "object" - }, - "GeospatialHeatmapDataColor": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - } - }, - "required": [ - "Color" - ], - "type": "object" - }, - "GeospatialMapAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Colors": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Geospatial": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "GeospatialMapConfiguration": { - "additionalProperties": false, - "properties": { - "FieldWells": { - "$ref": "#/definitions/GeospatialMapFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "MapStyleOptions": { - "$ref": "#/definitions/GeospatialMapStyleOptions" - }, - "PointStyleOptions": { - "$ref": "#/definitions/GeospatialPointStyleOptions" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - }, - "WindowOptions": { - "$ref": "#/definitions/GeospatialWindowOptions" - } - }, - "type": "object" - }, - "GeospatialMapFieldWells": { - "additionalProperties": false, - "properties": { - "GeospatialMapAggregatedFieldWells": { - "$ref": "#/definitions/GeospatialMapAggregatedFieldWells" - } - }, - "type": "object" - }, - "GeospatialMapStyleOptions": { - "additionalProperties": false, - "properties": { - "BaseMapStyle": { - "$ref": "#/definitions/BaseMapStyleType" - } - }, - "type": "object" - }, - "GeospatialMapVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/GeospatialMapConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "GeospatialPointStyleOptions": { - "additionalProperties": false, - "properties": { - "ClusterMarkerConfiguration": { - "$ref": "#/definitions/ClusterMarkerConfiguration" - }, - "HeatmapConfiguration": { - "$ref": "#/definitions/GeospatialHeatmapConfiguration" - }, - "SelectedPointStyle": { - "$ref": "#/definitions/GeospatialSelectedPointStyle" - } - }, - "type": "object" - }, - "GeospatialSelectedPointStyle": { - "enum": [ - "POINT", - "CLUSTER", - "HEATMAP" - ], - "type": "string" - }, - "GeospatialWindowOptions": { - "additionalProperties": false, - "properties": { - "Bounds": { - "$ref": "#/definitions/GeospatialCoordinateBounds" - }, - "MapZoomMode": { - "$ref": "#/definitions/MapZoomMode" - } - }, - "type": "object" - }, - "GlobalTableBorderOptions": { - "additionalProperties": false, - "properties": { - "SideSpecificBorder": { - "$ref": "#/definitions/TableSideBorderOptions" - }, - "UniformBorder": { - "$ref": "#/definitions/TableBorderOptions" - } - }, - "type": "object" - }, - "GradientColor": { - "additionalProperties": false, - "properties": { - "Stops": { - "items": { - "$ref": "#/definitions/GradientStop" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "GradientStop": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "DataValue": { - "default": null, - "type": "number" - }, - "GradientOffset": { - "default": 0, - "type": "number" - } - }, - "required": [ - "GradientOffset" - ], - "type": "object" - }, - "GridLayoutCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "ScreenCanvasSizeOptions": { - "$ref": "#/definitions/GridLayoutScreenCanvasSizeOptions" - } - }, - "type": "object" - }, - "GridLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "CanvasSizeOptions": { - "$ref": "#/definitions/GridLayoutCanvasSizeOptions" - }, - "Elements": { - "items": { - "$ref": "#/definitions/GridLayoutElement" - }, - "maxItems": 430, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Elements" - ], - "type": "object" - }, - "GridLayoutElement": { - "additionalProperties": false, - "properties": { - "ColumnIndex": { - "maximum": 35, - "minimum": 0, - "type": "number" - }, - "ColumnSpan": { - "maximum": 36, - "minimum": 1, - "type": "number" - }, - "ElementId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "ElementType": { - "$ref": "#/definitions/LayoutElementType" - }, - "RowIndex": { - "maximum": 9009, - "minimum": 0, - "type": "number" - }, - "RowSpan": { - "maximum": 21, - "minimum": 1, - "type": "number" - } - }, - "required": [ - "ColumnSpan", - "ElementId", - "ElementType", - "RowSpan" - ], - "type": "object" - }, - "GridLayoutScreenCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "OptimizedViewPortWidth": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "ResizeOption": { - "$ref": "#/definitions/ResizeOption" - } - }, - "required": [ - "ResizeOption" - ], - "type": "object" - }, - "GrowthRateComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "PeriodSize": { - "default": 0, - "maximum": 52, - "minimum": 2, - "type": "number" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "HeaderFooterSectionConfiguration": { - "additionalProperties": false, - "properties": { - "Layout": { - "$ref": "#/definitions/SectionLayoutConfiguration" - }, - "SectionId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Style": { - "$ref": "#/definitions/SectionStyle" - } - }, - "required": [ - "Layout", - "SectionId" - ], - "type": "object" - }, - "HeatMapAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Columns": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Rows": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "HeatMapConfiguration": { - "additionalProperties": false, - "properties": { - "ColorScale": { - "$ref": "#/definitions/ColorScale" - }, - "ColumnLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/HeatMapFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "RowLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/HeatMapSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - } - }, - "type": "object" - }, - "HeatMapFieldWells": { - "additionalProperties": false, - "properties": { - "HeatMapAggregatedFieldWells": { - "$ref": "#/definitions/HeatMapAggregatedFieldWells" - } - }, - "type": "object" - }, - "HeatMapSortConfiguration": { - "additionalProperties": false, - "properties": { - "HeatMapColumnItemsLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "HeatMapColumnSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "HeatMapRowItemsLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "HeatMapRowSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "HeatMapVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/HeatMapConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "HistogramAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "HistogramBinOptions": { - "additionalProperties": false, - "properties": { - "BinCount": { - "$ref": "#/definitions/BinCountOptions" - }, - "BinWidth": { - "$ref": "#/definitions/BinWidthOptions" - }, - "SelectedBinType": { - "$ref": "#/definitions/HistogramBinType" - }, - "StartValue": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "HistogramBinType": { - "enum": [ - "BIN_COUNT", - "BIN_WIDTH" - ], - "type": "string" - }, - "HistogramConfiguration": { - "additionalProperties": false, - "properties": { - "BinOptions": { - "$ref": "#/definitions/HistogramBinOptions" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/HistogramFieldWells" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - }, - "XAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "XAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "YAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - } - }, - "type": "object" - }, - "HistogramFieldWells": { - "additionalProperties": false, - "properties": { - "HistogramAggregatedFieldWells": { - "$ref": "#/definitions/HistogramAggregatedFieldWells" - } - }, - "type": "object" - }, - "HistogramVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/HistogramConfiguration" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "HorizontalTextAlignment": { - "enum": [ - "LEFT", - "CENTER", - "RIGHT", - "AUTO" - ], - "type": "string" - }, - "Icon": { - "enum": [ - "CARET_UP", - "CARET_DOWN", - "PLUS", - "MINUS", - "ARROW_UP", - "ARROW_DOWN", - "ARROW_LEFT", - "ARROW_UP_LEFT", - "ARROW_DOWN_LEFT", - "ARROW_RIGHT", - "ARROW_UP_RIGHT", - "ARROW_DOWN_RIGHT", - "FACE_UP", - "FACE_DOWN", - "FACE_FLAT", - "ONE_BAR", - "TWO_BAR", - "THREE_BAR", - "CIRCLE", - "TRIANGLE", - "SQUARE", - "FLAG", - "THUMBS_UP", - "THUMBS_DOWN", - "CHECKMARK", - "X" - ], - "type": "string" - }, - "InnerFilter": { - "additionalProperties": false, - "properties": { - "CategoryInnerFilter": { - "$ref": "#/definitions/CategoryInnerFilter" - } - }, - "type": "object" - }, - "InsightConfiguration": { - "additionalProperties": false, - "properties": { - "Computations": { - "items": { - "$ref": "#/definitions/Computation" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "CustomNarrative": { - "$ref": "#/definitions/CustomNarrativeOptions" - } - }, - "type": "object" - }, - "InsightVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "InsightConfiguration": { - "$ref": "#/definitions/InsightConfiguration" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "DataSetIdentifier", - "VisualId" - ], - "type": "object" - }, - "IntegerDefaultValues": { - "additionalProperties": false, - "properties": { - "DynamicValue": { - "$ref": "#/definitions/DynamicDefaultValue" - }, - "StaticValues": { - "items": { - "type": "number" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "IntegerParameter": { - "additionalProperties": false, - "description": "

An integer parameter.

", - "properties": { - "Name": { - "description": "

The name of the integer parameter.

", - "pattern": "\\S", - "type": "string" - }, - "Values": { - "description": "

The values for the integer parameter.

", - "items": { - "default": 0, - "type": "number" - }, - "type": "array" - } - }, - "required": [ - "Name", - "Values" - ], - "type": "object" - }, - "IntegerParameterDeclaration": { - "additionalProperties": false, - "properties": { - "DefaultValues": { - "$ref": "#/definitions/IntegerDefaultValues" - }, - "MappedDataSetParameters": { - "items": { - "$ref": "#/definitions/MappedDataSetParameter" - }, - "maxItems": 150, - "minItems": 0, - "type": "array" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "ParameterValueType": { - "$ref": "#/definitions/ParameterValueType" - }, - "ValueWhenUnset": { - "$ref": "#/definitions/IntegerValueWhenUnsetConfiguration" - } - }, - "required": [ - "Name", - "ParameterValueType" - ], - "type": "object" - }, - "IntegerValueWhenUnsetConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValue": { - "default": null, - "type": "number" - }, - "ValueWhenUnsetOption": { - "$ref": "#/definitions/ValueWhenUnsetOption" - } - }, - "type": "object" - }, - "ItemsLimitConfiguration": { - "additionalProperties": false, - "properties": { - "ItemsLimit": { - "default": null, - "type": "number" - }, - "OtherCategories": { - "$ref": "#/definitions/OtherCategories" - } - }, - "type": "object" - }, - "KPIActualValueConditionalFormatting": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/ConditionalFormattingIcon" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "KPIComparisonValueConditionalFormatting": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/ConditionalFormattingIcon" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "KPIConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ConditionalFormattingOptions": { - "items": { - "$ref": "#/definitions/KPIConditionalFormattingOption" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "KPIConditionalFormattingOption": { - "additionalProperties": false, - "properties": { - "ActualValue": { - "$ref": "#/definitions/KPIActualValueConditionalFormatting" - }, - "ComparisonValue": { - "$ref": "#/definitions/KPIComparisonValueConditionalFormatting" - }, - "PrimaryValue": { - "$ref": "#/definitions/KPIPrimaryValueConditionalFormatting" - }, - "ProgressBar": { - "$ref": "#/definitions/KPIProgressBarConditionalFormatting" - } - }, - "type": "object" - }, - "KPIConfiguration": { - "additionalProperties": false, - "properties": { - "FieldWells": { - "$ref": "#/definitions/KPIFieldWells" - }, - "KPIOptions": { - "$ref": "#/definitions/KPIOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/KPISortConfiguration" - } - }, - "type": "object" - }, - "KPIFieldWells": { - "additionalProperties": false, - "properties": { - "TargetValues": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TrendGroups": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "KPIOptions": { - "additionalProperties": false, - "properties": { - "Comparison": { - "$ref": "#/definitions/ComparisonConfiguration" - }, - "PrimaryValueDisplayType": { - "$ref": "#/definitions/PrimaryValueDisplayType" - }, - "PrimaryValueFontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "ProgressBar": { - "$ref": "#/definitions/ProgressBarOptions" - }, - "SecondaryValue": { - "$ref": "#/definitions/SecondaryValueOptions" - }, - "SecondaryValueFontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "Sparkline": { - "$ref": "#/definitions/KPISparklineOptions" - }, - "TrendArrows": { - "$ref": "#/definitions/TrendArrowOptions" - }, - "VisualLayoutOptions": { - "$ref": "#/definitions/KPIVisualLayoutOptions" - } - }, - "type": "object" - }, - "KPIPrimaryValueConditionalFormatting": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/ConditionalFormattingIcon" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "KPIProgressBarConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ForegroundColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "KPISortConfiguration": { - "additionalProperties": false, - "properties": { - "TrendGroupSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "KPISparklineOptions": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "TooltipVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Type": { - "$ref": "#/definitions/KPISparklineType" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "KPISparklineType": { - "enum": [ - "LINE", - "AREA" - ], - "type": "string" - }, - "KPIVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/KPIConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "ConditionalFormatting": { - "$ref": "#/definitions/KPIConditionalFormatting" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "KPIVisualLayoutOptions": { - "additionalProperties": false, - "properties": { - "StandardLayout": { - "$ref": "#/definitions/KPIVisualStandardLayout" - } - }, - "type": "object" - }, - "KPIVisualStandardLayout": { - "additionalProperties": false, - "properties": { - "Type": { - "$ref": "#/definitions/KPIVisualStandardLayoutType" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "KPIVisualStandardLayoutType": { - "enum": [ - "CLASSIC", - "VERTICAL" - ], - "type": "string" - }, - "LabelOptions": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "type": "string" - }, - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "Layout": { - "additionalProperties": false, - "properties": { - "Configuration": { - "$ref": "#/definitions/LayoutConfiguration" - } - }, - "required": [ - "Configuration" - ], - "type": "object" - }, - "LayoutConfiguration": { - "additionalProperties": false, - "properties": { - "FreeFormLayout": { - "$ref": "#/definitions/FreeFormLayoutConfiguration" - }, - "GridLayout": { - "$ref": "#/definitions/GridLayoutConfiguration" - }, - "SectionBasedLayout": { - "$ref": "#/definitions/SectionBasedLayoutConfiguration" - } - }, - "type": "object" - }, - "LayoutElementType": { - "enum": [ - "VISUAL", - "FILTER_CONTROL", - "PARAMETER_CONTROL", - "TEXT_BOX", - "IMAGE" - ], - "type": "string" - }, - "LegendOptions": { - "additionalProperties": false, - "properties": { - "Height": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "Position": { - "$ref": "#/definitions/LegendPosition" - }, - "Title": { - "$ref": "#/definitions/LabelOptions" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - }, - "Width": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - } - }, - "type": "object" - }, - "LegendPosition": { - "enum": [ - "AUTO", - "RIGHT", - "BOTTOM", - "TOP" - ], - "type": "string" - }, - "LineChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Colors": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "SmallMultiples": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "LineChartConfiguration": { - "additionalProperties": false, - "properties": { - "ContributionAnalysisDefaults": { - "items": { - "$ref": "#/definitions/ContributionAnalysisDefault" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "DefaultSeriesSettings": { - "$ref": "#/definitions/LineChartDefaultSeriesSettings" - }, - "FieldWells": { - "$ref": "#/definitions/LineChartFieldWells" - }, - "ForecastConfigurations": { - "items": { - "$ref": "#/definitions/ForecastConfiguration" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "PrimaryYAxisDisplayOptions": { - "$ref": "#/definitions/LineSeriesAxisDisplayOptions" - }, - "PrimaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ReferenceLines": { - "items": { - "$ref": "#/definitions/ReferenceLine" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "SecondaryYAxisDisplayOptions": { - "$ref": "#/definitions/LineSeriesAxisDisplayOptions" - }, - "SecondaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "Series": { - "items": { - "$ref": "#/definitions/SeriesItem" - }, - "maxItems": 2000, - "minItems": 0, - "type": "array" - }, - "SingleAxisOptions": { - "$ref": "#/definitions/SingleAxisOptions" - }, - "SmallMultiplesOptions": { - "$ref": "#/definitions/SmallMultiplesOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/LineChartSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "Type": { - "$ref": "#/definitions/LineChartType" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - }, - "XAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "XAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - } - }, - "type": "object" - }, - "LineChartDefaultSeriesSettings": { - "additionalProperties": false, - "properties": { - "AxisBinding": { - "$ref": "#/definitions/AxisBinding" - }, - "LineStyleSettings": { - "$ref": "#/definitions/LineChartLineStyleSettings" - }, - "MarkerStyleSettings": { - "$ref": "#/definitions/LineChartMarkerStyleSettings" - } - }, - "type": "object" - }, - "LineChartFieldWells": { - "additionalProperties": false, - "properties": { - "LineChartAggregatedFieldWells": { - "$ref": "#/definitions/LineChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "LineChartLineStyle": { - "enum": [ - "SOLID", - "DOTTED", - "DASHED" - ], - "type": "string" - }, - "LineChartLineStyleSettings": { - "additionalProperties": false, - "properties": { - "LineInterpolation": { - "$ref": "#/definitions/LineInterpolation" - }, - "LineStyle": { - "$ref": "#/definitions/LineChartLineStyle" - }, - "LineVisibility": { - "$ref": "#/definitions/Visibility" - }, - "LineWidth": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - } - }, - "type": "object" - }, - "LineChartMarkerShape": { - "enum": [ - "CIRCLE", - "TRIANGLE", - "SQUARE", - "DIAMOND", - "ROUNDED_SQUARE" - ], - "type": "string" - }, - "LineChartMarkerStyleSettings": { - "additionalProperties": false, - "properties": { - "MarkerColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "MarkerShape": { - "$ref": "#/definitions/LineChartMarkerShape" - }, - "MarkerSize": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "MarkerVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "LineChartSeriesSettings": { - "additionalProperties": false, - "properties": { - "LineStyleSettings": { - "$ref": "#/definitions/LineChartLineStyleSettings" - }, - "MarkerStyleSettings": { - "$ref": "#/definitions/LineChartMarkerStyleSettings" - } - }, - "type": "object" - }, - "LineChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "ColorItemsLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "SmallMultiplesLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "SmallMultiplesSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "LineChartType": { - "enum": [ - "LINE", - "AREA", - "STACKED_AREA" - ], - "type": "string" - }, - "LineChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/LineChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "LineInterpolation": { - "enum": [ - "LINEAR", - "SMOOTH", - "STEPPED" - ], - "type": "string" - }, - "LineSeriesAxisDisplayOptions": { - "additionalProperties": false, - "properties": { - "AxisOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "MissingDataConfigurations": { - "items": { - "$ref": "#/definitions/MissingDataConfiguration" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "LinkSharingConfiguration": { - "additionalProperties": false, - "properties": { - "Permissions": { - "items": { - "$ref": "#/definitions/ResourcePermission" - }, - "maxItems": 64, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "ListControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "SearchOptions": { - "$ref": "#/definitions/ListControlSearchOptions" - }, - "SelectAllOptions": { - "$ref": "#/definitions/ListControlSelectAllOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "ListControlSearchOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "ListControlSelectAllOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "LoadingAnimation": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "LocalNavigationConfiguration": { - "additionalProperties": false, - "properties": { - "TargetSheetId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "TargetSheetId" - ], - "type": "object" - }, - "LongFormatText": { - "additionalProperties": false, - "properties": { - "PlainText": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "RichText": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "MapZoomMode": { - "enum": [ - "AUTO", - "MANUAL" - ], - "type": "string" - }, - "MappedDataSetParameter": { - "additionalProperties": false, - "properties": { - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "DataSetParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - } - }, - "required": [ - "DataSetIdentifier", - "DataSetParameterName" - ], - "type": "object" - }, - "MaximumLabelType": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "MaximumMinimumComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "Type": { - "$ref": "#/definitions/MaximumMinimumComputationType" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId", - "Type" - ], - "type": "object" - }, - "MaximumMinimumComputationType": { - "enum": [ - "MAXIMUM", - "MINIMUM" - ], - "type": "string" - }, - "MeasureField": { - "additionalProperties": false, - "properties": { - "CalculatedMeasureField": { - "$ref": "#/definitions/CalculatedMeasureField" - }, - "CategoricalMeasureField": { - "$ref": "#/definitions/CategoricalMeasureField" - }, - "DateMeasureField": { - "$ref": "#/definitions/DateMeasureField" - }, - "NumericalMeasureField": { - "$ref": "#/definitions/NumericalMeasureField" - } - }, - "type": "object" - }, - "MetricComparisonComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "FromValue": { - "$ref": "#/definitions/MeasureField" - }, - "Name": { - "type": "string" - }, - "TargetValue": { - "$ref": "#/definitions/MeasureField" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "MinimumLabelType": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "MissingDataConfiguration": { - "additionalProperties": false, - "properties": { - "TreatmentOption": { - "$ref": "#/definitions/MissingDataTreatmentOption" - } - }, - "type": "object" - }, - "MissingDataTreatmentOption": { - "enum": [ - "INTERPOLATE", - "SHOW_AS_ZERO", - "SHOW_AS_BLANK" - ], - "type": "string" - }, - "NegativeValueConfiguration": { - "additionalProperties": false, - "properties": { - "DisplayMode": { - "$ref": "#/definitions/NegativeValueDisplayMode" - } - }, - "required": [ - "DisplayMode" - ], - "type": "object" - }, - "NegativeValueDisplayMode": { - "enum": [ - "POSITIVE", - "NEGATIVE" - ], - "type": "string" - }, - "NestedFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "IncludeInnerSet": { - "default": false, - "type": "boolean" - }, - "InnerFilter": { - "$ref": "#/definitions/InnerFilter" - } - }, - "required": [ - "Column", - "FilterId", - "IncludeInnerSet", - "InnerFilter" - ], - "type": "object" - }, - "NullValueFormatConfiguration": { - "additionalProperties": false, - "properties": { - "NullString": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "NullString" - ], - "type": "object" - }, - "NumberDisplayFormatConfiguration": { - "additionalProperties": false, - "properties": { - "DecimalPlacesConfiguration": { - "$ref": "#/definitions/DecimalPlacesConfiguration" - }, - "NegativeValueConfiguration": { - "$ref": "#/definitions/NegativeValueConfiguration" - }, - "NullValueFormatConfiguration": { - "$ref": "#/definitions/NullValueFormatConfiguration" - }, - "NumberScale": { - "$ref": "#/definitions/NumberScale" - }, - "Prefix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "SeparatorConfiguration": { - "$ref": "#/definitions/NumericSeparatorConfiguration" - }, - "Suffix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "NumberFormatConfiguration": { - "additionalProperties": false, - "properties": { - "FormatConfiguration": { - "$ref": "#/definitions/NumericFormatConfiguration" - } - }, - "type": "object" - }, - "NumberScale": { - "enum": [ - "NONE", - "AUTO", - "THOUSANDS", - "MILLIONS", - "BILLIONS", - "TRILLIONS" - ], - "type": "string" - }, - "NumericAxisOptions": { - "additionalProperties": false, - "properties": { - "Range": { - "$ref": "#/definitions/AxisDisplayRange" - }, - "Scale": { - "$ref": "#/definitions/AxisScale" - } - }, - "type": "object" - }, - "NumericEqualityDrillDownFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "Value": { - "default": 0, - "type": "number" - } - }, - "required": [ - "Column", - "Value" - ], - "type": "object" - }, - "NumericEqualityFilter": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/AggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "MatchOperator": { - "$ref": "#/definitions/NumericEqualityMatchOperator" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "SelectAllOptions": { - "$ref": "#/definitions/NumericFilterSelectAllOptions" - }, - "Value": { - "default": null, - "type": "number" - } - }, - "required": [ - "Column", - "FilterId", - "MatchOperator", - "NullOption" - ], - "type": "object" - }, - "NumericEqualityMatchOperator": { - "enum": [ - "EQUALS", - "DOES_NOT_EQUAL" - ], - "type": "string" - }, - "NumericFilterSelectAllOptions": { - "enum": [ - "FILTER_ALL_VALUES" - ], - "type": "string" - }, - "NumericFormatConfiguration": { - "additionalProperties": false, - "properties": { - "CurrencyDisplayFormatConfiguration": { - "$ref": "#/definitions/CurrencyDisplayFormatConfiguration" - }, - "NumberDisplayFormatConfiguration": { - "$ref": "#/definitions/NumberDisplayFormatConfiguration" - }, - "PercentageDisplayFormatConfiguration": { - "$ref": "#/definitions/PercentageDisplayFormatConfiguration" - } - }, - "type": "object" - }, - "NumericRangeFilter": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/AggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "IncludeMaximum": { - "default": null, - "type": "boolean" - }, - "IncludeMinimum": { - "default": null, - "type": "boolean" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "RangeMaximum": { - "$ref": "#/definitions/NumericRangeFilterValue" - }, - "RangeMinimum": { - "$ref": "#/definitions/NumericRangeFilterValue" - }, - "SelectAllOptions": { - "$ref": "#/definitions/NumericFilterSelectAllOptions" - } - }, - "required": [ - "Column", - "FilterId", - "NullOption" - ], - "type": "object" - }, - "NumericRangeFilterValue": { - "additionalProperties": false, - "properties": { - "Parameter": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "StaticValue": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "NumericSeparatorConfiguration": { - "additionalProperties": false, - "properties": { - "DecimalSeparator": { - "$ref": "#/definitions/NumericSeparatorSymbol" - }, - "ThousandsSeparator": { - "$ref": "#/definitions/ThousandSeparatorOptions" - } - }, - "type": "object" - }, - "NumericSeparatorSymbol": { - "enum": [ - "COMMA", - "DOT", - "SPACE" - ], - "type": "string" - }, - "NumericalAggregationFunction": { - "additionalProperties": false, - "properties": { - "PercentileAggregation": { - "$ref": "#/definitions/PercentileAggregation" - }, - "SimpleNumericalAggregation": { - "$ref": "#/definitions/SimpleNumericalAggregationFunction" - } - }, - "type": "object" - }, - "NumericalDimensionField": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/NumberFormatConfiguration" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "NumericalMeasureField": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/NumericalAggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/NumberFormatConfiguration" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "OtherCategories": { - "enum": [ - "INCLUDE", - "EXCLUDE" - ], - "type": "string" - }, - "PaginationConfiguration": { - "additionalProperties": false, - "properties": { - "PageNumber": { - "minimum": 0, - "type": "number" - }, - "PageSize": { - "default": null, - "type": "number" - } - }, - "required": [ - "PageNumber", - "PageSize" - ], - "type": "object" - }, - "PanelBorderStyle": { - "enum": [ - "SOLID", - "DASHED", - "DOTTED" - ], - "type": "string" - }, - "PanelConfiguration": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", - "type": "string" - }, - "BackgroundVisibility": { - "$ref": "#/definitions/Visibility" - }, - "BorderColor": { - "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", - "type": "string" - }, - "BorderStyle": { - "$ref": "#/definitions/PanelBorderStyle" - }, - "BorderThickness": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "BorderVisibility": { - "$ref": "#/definitions/Visibility" - }, - "GutterSpacing": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "GutterVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Title": { - "$ref": "#/definitions/PanelTitleOptions" - } - }, - "type": "object" - }, - "PanelTitleOptions": { - "additionalProperties": false, - "properties": { - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "HorizontalTextAlignment": { - "$ref": "#/definitions/HorizontalTextAlignment" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "PaperOrientation": { - "enum": [ - "PORTRAIT", - "LANDSCAPE" - ], - "type": "string" - }, - "PaperSize": { - "enum": [ - "US_LETTER", - "US_LEGAL", - "US_TABLOID_LEDGER", - "A0", - "A1", - "A2", - "A3", - "A4", - "A5", - "JIS_B4", - "JIS_B5" - ], - "type": "string" - }, - "ParameterControl": { - "additionalProperties": false, - "properties": { - "DateTimePicker": { - "$ref": "#/definitions/ParameterDateTimePickerControl" - }, - "Dropdown": { - "$ref": "#/definitions/ParameterDropDownControl" - }, - "List": { - "$ref": "#/definitions/ParameterListControl" - }, - "Slider": { - "$ref": "#/definitions/ParameterSliderControl" - }, - "TextArea": { - "$ref": "#/definitions/ParameterTextAreaControl" - }, - "TextField": { - "$ref": "#/definitions/ParameterTextFieldControl" - } - }, - "type": "object" - }, - "ParameterDateTimePickerControl": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/DateTimePickerControlDisplayOptions" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ParameterControlId", - "SourceParameterName", - "Title" - ], - "type": "object" - }, - "ParameterDeclaration": { - "additionalProperties": false, - "properties": { - "DateTimeParameterDeclaration": { - "$ref": "#/definitions/DateTimeParameterDeclaration" - }, - "DecimalParameterDeclaration": { - "$ref": "#/definitions/DecimalParameterDeclaration" - }, - "IntegerParameterDeclaration": { - "$ref": "#/definitions/IntegerParameterDeclaration" - }, - "StringParameterDeclaration": { - "$ref": "#/definitions/StringParameterDeclaration" - } - }, - "type": "object" - }, - "ParameterDropDownControl": { - "additionalProperties": false, - "properties": { - "CascadingControlConfiguration": { - "$ref": "#/definitions/CascadingControlConfiguration" - }, - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/DropDownControlDisplayOptions" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SelectableValues": { - "$ref": "#/definitions/ParameterSelectableValues" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "required": [ - "ParameterControlId", - "SourceParameterName", - "Title" - ], - "type": "object" - }, - "ParameterListControl": { - "additionalProperties": false, - "properties": { - "CascadingControlConfiguration": { - "$ref": "#/definitions/CascadingControlConfiguration" - }, - "DisplayOptions": { - "$ref": "#/definitions/ListControlDisplayOptions" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SelectableValues": { - "$ref": "#/definitions/ParameterSelectableValues" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "required": [ - "ParameterControlId", - "SourceParameterName", - "Title" - ], - "type": "object" - }, - "ParameterSelectableValues": { - "additionalProperties": false, - "properties": { - "LinkToDataSetColumn": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "Values": { - "items": { - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ParameterSliderControl": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/SliderControlDisplayOptions" - }, - "MaximumValue": { - "default": 0, - "type": "number" - }, - "MinimumValue": { - "default": 0, - "type": "number" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "StepSize": { - "default": 0, - "type": "number" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "MaximumValue", - "MinimumValue", - "ParameterControlId", - "SourceParameterName", - "StepSize", - "Title" - ], - "type": "object" - }, - "ParameterTextAreaControl": { - "additionalProperties": false, - "properties": { - "Delimiter": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "DisplayOptions": { - "$ref": "#/definitions/TextAreaControlDisplayOptions" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ParameterControlId", - "SourceParameterName", - "Title" - ], - "type": "object" - }, - "ParameterTextFieldControl": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/TextFieldControlDisplayOptions" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ParameterControlId", - "SourceParameterName", - "Title" - ], - "type": "object" - }, - "ParameterValueType": { - "enum": [ - "MULTI_VALUED", - "SINGLE_VALUED" - ], - "type": "string" - }, - "Parameters": { - "additionalProperties": false, - "description": "

A list of Amazon QuickSight parameters and the list's override values.

", - "properties": { - "DateTimeParameters": { - "description": "

The parameters that have a data type of date-time.

", - "items": { - "$ref": "#/definitions/DateTimeParameter" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "DecimalParameters": { - "description": "

The parameters that have a data type of decimal.

", - "items": { - "$ref": "#/definitions/DecimalParameter" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "IntegerParameters": { - "description": "

The parameters that have a data type of integer.

", - "items": { - "$ref": "#/definitions/IntegerParameter" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "StringParameters": { - "description": "

The parameters that have a data type of string.

", - "items": { - "$ref": "#/definitions/StringParameter" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PercentVisibleRange": { - "additionalProperties": false, - "properties": { - "From": { - "default": null, - "maximum": 100, - "minimum": 0, - "type": "number" - }, - "To": { - "default": null, - "maximum": 100, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "PercentageDisplayFormatConfiguration": { - "additionalProperties": false, - "properties": { - "DecimalPlacesConfiguration": { - "$ref": "#/definitions/DecimalPlacesConfiguration" - }, - "NegativeValueConfiguration": { - "$ref": "#/definitions/NegativeValueConfiguration" - }, - "NullValueFormatConfiguration": { - "$ref": "#/definitions/NullValueFormatConfiguration" - }, - "Prefix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "SeparatorConfiguration": { - "$ref": "#/definitions/NumericSeparatorConfiguration" - }, - "Suffix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "PercentileAggregation": { - "additionalProperties": false, - "properties": { - "PercentileValue": { - "maximum": 100, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "PeriodOverPeriodComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "PeriodToDateComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "PeriodTimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "PieChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "SmallMultiples": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PieChartConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ContributionAnalysisDefaults": { - "items": { - "$ref": "#/definitions/ContributionAnalysisDefault" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "DonutOptions": { - "$ref": "#/definitions/DonutOptions" - }, - "FieldWells": { - "$ref": "#/definitions/PieChartFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "SmallMultiplesOptions": { - "$ref": "#/definitions/SmallMultiplesOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/PieChartSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "ValueLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "PieChartFieldWells": { - "additionalProperties": false, - "properties": { - "PieChartAggregatedFieldWells": { - "$ref": "#/definitions/PieChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "PieChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "SmallMultiplesLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "SmallMultiplesSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PieChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/PieChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "PivotFieldSortOptions": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "SortBy": { - "$ref": "#/definitions/PivotTableSortBy" - } - }, - "required": [ - "FieldId", - "SortBy" - ], - "type": "object" - }, - "PivotTableAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Columns": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 40, - "minItems": 0, - "type": "array" - }, - "Rows": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 40, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 40, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PivotTableCellConditionalFormatting": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Scope": { - "$ref": "#/definitions/PivotTableConditionalFormattingScope" - }, - "Scopes": { - "items": { - "$ref": "#/definitions/PivotTableConditionalFormattingScope" - }, - "maxItems": 3, - "minItems": 0, - "type": "array" - }, - "TextFormat": { - "$ref": "#/definitions/TextConditionalFormat" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "PivotTableConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ConditionalFormattingOptions": { - "items": { - "$ref": "#/definitions/PivotTableConditionalFormattingOption" - }, - "maxItems": 500, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PivotTableConditionalFormattingOption": { - "additionalProperties": false, - "properties": { - "Cell": { - "$ref": "#/definitions/PivotTableCellConditionalFormatting" - } - }, - "type": "object" - }, - "PivotTableConditionalFormattingScope": { - "additionalProperties": false, - "properties": { - "Role": { - "$ref": "#/definitions/PivotTableConditionalFormattingScopeRole" - } - }, - "type": "object" - }, - "PivotTableConditionalFormattingScopeRole": { - "enum": [ - "FIELD", - "FIELD_TOTAL", - "GRAND_TOTAL" - ], - "type": "string" - }, - "PivotTableConfiguration": { - "additionalProperties": false, - "properties": { - "FieldOptions": { - "$ref": "#/definitions/PivotTableFieldOptions" - }, - "FieldWells": { - "$ref": "#/definitions/PivotTableFieldWells" - }, - "PaginatedReportOptions": { - "$ref": "#/definitions/PivotTablePaginatedReportOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/PivotTableSortConfiguration" - }, - "TableOptions": { - "$ref": "#/definitions/PivotTableOptions" - }, - "TotalOptions": { - "$ref": "#/definitions/PivotTableTotalOptions" - } - }, - "type": "object" - }, - "PivotTableDataPathOption": { - "additionalProperties": false, - "properties": { - "DataPathList": { - "items": { - "$ref": "#/definitions/DataPathValue" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "Width": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - } - }, - "required": [ - "DataPathList" - ], - "type": "object" - }, - "PivotTableDataPathType": { - "enum": [ - "HIERARCHY_ROWS_LAYOUT_COLUMN", - "MULTIPLE_ROW_METRICS_COLUMN", - "EMPTY_COLUMN_HEADER", - "COUNT_METRIC_COLUMN" - ], - "type": "string" - }, - "PivotTableFieldCollapseState": { - "enum": [ - "COLLAPSED", - "EXPANDED" - ], - "type": "string" - }, - "PivotTableFieldCollapseStateOption": { - "additionalProperties": false, - "properties": { - "State": { - "$ref": "#/definitions/PivotTableFieldCollapseState" - }, - "Target": { - "$ref": "#/definitions/PivotTableFieldCollapseStateTarget" - } - }, - "required": [ - "Target" - ], - "type": "object" - }, - "PivotTableFieldCollapseStateTarget": { - "additionalProperties": false, - "properties": { - "FieldDataPathValues": { - "items": { - "$ref": "#/definitions/DataPathValue" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "FieldId": { - "type": "string" - } - }, - "type": "object" - }, - "PivotTableFieldOption": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "PivotTableFieldOptions": { - "additionalProperties": false, - "properties": { - "CollapseStateOptions": { - "items": { - "$ref": "#/definitions/PivotTableFieldCollapseStateOption" - }, - "type": "array" - }, - "DataPathOptions": { - "items": { - "$ref": "#/definitions/PivotTableDataPathOption" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "SelectedFieldOptions": { - "items": { - "$ref": "#/definitions/PivotTableFieldOption" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PivotTableFieldSubtotalOptions": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "PivotTableFieldWells": { - "additionalProperties": false, - "properties": { - "PivotTableAggregatedFieldWells": { - "$ref": "#/definitions/PivotTableAggregatedFieldWells" - } - }, - "type": "object" - }, - "PivotTableMetricPlacement": { - "enum": [ - "ROW", - "COLUMN" - ], - "type": "string" - }, - "PivotTableOptions": { - "additionalProperties": false, - "properties": { - "CellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "CollapsedRowDimensionsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "ColumnHeaderStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "ColumnNamesVisibility": { - "$ref": "#/definitions/Visibility" - }, - "DefaultCellWidth": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "MetricPlacement": { - "$ref": "#/definitions/PivotTableMetricPlacement" - }, - "RowAlternateColorOptions": { - "$ref": "#/definitions/RowAlternateColorOptions" - }, - "RowFieldNamesStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "RowHeaderStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "RowsLabelOptions": { - "$ref": "#/definitions/PivotTableRowsLabelOptions" - }, - "RowsLayout": { - "$ref": "#/definitions/PivotTableRowsLayout" - }, - "SingleMetricVisibility": { - "$ref": "#/definitions/Visibility" - }, - "ToggleButtonsVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "PivotTablePaginatedReportOptions": { - "additionalProperties": false, - "properties": { - "OverflowColumnHeaderVisibility": { - "$ref": "#/definitions/Visibility" - }, - "VerticalOverflowVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "PivotTableRowsLabelOptions": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "PivotTableRowsLayout": { - "enum": [ - "TABULAR", - "HIERARCHY" - ], - "type": "string" - }, - "PivotTableSortBy": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnSort" - }, - "DataPath": { - "$ref": "#/definitions/DataPathSort" - }, - "Field": { - "$ref": "#/definitions/FieldSort" - } - }, - "type": "object" - }, - "PivotTableSortConfiguration": { - "additionalProperties": false, - "properties": { - "FieldSortOptions": { - "items": { - "$ref": "#/definitions/PivotFieldSortOptions" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PivotTableSubtotalLevel": { - "enum": [ - "ALL", - "CUSTOM", - "LAST" - ], - "type": "string" - }, - "PivotTableTotalOptions": { - "additionalProperties": false, - "properties": { - "ColumnSubtotalOptions": { - "$ref": "#/definitions/SubtotalOptions" - }, - "ColumnTotalOptions": { - "$ref": "#/definitions/PivotTotalOptions" - }, - "RowSubtotalOptions": { - "$ref": "#/definitions/SubtotalOptions" - }, - "RowTotalOptions": { - "$ref": "#/definitions/PivotTotalOptions" - } - }, - "type": "object" - }, - "PivotTableVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/PivotTableConfiguration" - }, - "ConditionalFormatting": { - "$ref": "#/definitions/PivotTableConditionalFormatting" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "PivotTotalOptions": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "type": "string" - }, - "MetricHeaderCellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "Placement": { - "$ref": "#/definitions/TableTotalsPlacement" - }, - "ScrollStatus": { - "$ref": "#/definitions/TableTotalsScrollStatus" - }, - "TotalAggregationOptions": { - "items": { - "$ref": "#/definitions/TotalAggregationOption" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TotalCellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "TotalsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "ValueCellStyle": { - "$ref": "#/definitions/TableCellStyle" - } - }, - "type": "object" - }, - "PredefinedHierarchy": { - "additionalProperties": false, - "properties": { - "Columns": { - "items": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "DrillDownFilters": { - "items": { - "$ref": "#/definitions/DrillDownFilter" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Columns", - "HierarchyId" - ], - "type": "object" - }, - "PrimaryValueDisplayType": { - "enum": [ - "HIDDEN", - "COMPARISON", - "ACTUAL" - ], - "type": "string" - }, - "ProgressBarOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "RadarChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Color": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "RadarChartAreaStyleSettings": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "RadarChartAxesRangeScale": { - "enum": [ - "AUTO", - "INDEPENDENT", - "SHARED" - ], - "type": "string" - }, - "RadarChartConfiguration": { - "additionalProperties": false, - "properties": { - "AlternateBandColorsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "AlternateBandEvenColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "AlternateBandOddColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "AxesRangeScale": { - "$ref": "#/definitions/RadarChartAxesRangeScale" - }, - "BaseSeriesSettings": { - "$ref": "#/definitions/RadarChartSeriesSettings" - }, - "CategoryAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ColorAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "ColorLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/RadarChartFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "Shape": { - "$ref": "#/definitions/RadarChartShape" - }, - "SortConfiguration": { - "$ref": "#/definitions/RadarChartSortConfiguration" - }, - "StartAngle": { - "maximum": 360, - "minimum": -360, - "type": "number" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "RadarChartFieldWells": { - "additionalProperties": false, - "properties": { - "RadarChartAggregatedFieldWells": { - "$ref": "#/definitions/RadarChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "RadarChartSeriesSettings": { - "additionalProperties": false, - "properties": { - "AreaStyleSettings": { - "$ref": "#/definitions/RadarChartAreaStyleSettings" - } - }, - "type": "object" - }, - "RadarChartShape": { - "enum": [ - "CIRCLE", - "POLYGON" - ], - "type": "string" - }, - "RadarChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "ColorItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "ColorSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "RadarChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/RadarChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "RangeEndsLabelType": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "ReferenceLine": { - "additionalProperties": false, - "properties": { - "DataConfiguration": { - "$ref": "#/definitions/ReferenceLineDataConfiguration" - }, - "LabelConfiguration": { - "$ref": "#/definitions/ReferenceLineLabelConfiguration" - }, - "Status": { - "$ref": "#/definitions/WidgetStatus" - }, - "StyleConfiguration": { - "$ref": "#/definitions/ReferenceLineStyleConfiguration" - } - }, - "required": [ - "DataConfiguration" - ], - "type": "object" - }, - "ReferenceLineCustomLabelConfiguration": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "pattern": "\\S", - "type": "string" - } - }, - "required": [ - "CustomLabel" - ], - "type": "object" - }, - "ReferenceLineDataConfiguration": { - "additionalProperties": false, - "properties": { - "AxisBinding": { - "$ref": "#/definitions/AxisBinding" - }, - "DynamicConfiguration": { - "$ref": "#/definitions/ReferenceLineDynamicDataConfiguration" - }, - "SeriesType": { - "$ref": "#/definitions/ReferenceLineSeriesType" - }, - "StaticConfiguration": { - "$ref": "#/definitions/ReferenceLineStaticDataConfiguration" - } - }, - "type": "object" - }, - "ReferenceLineDynamicDataConfiguration": { - "additionalProperties": false, - "properties": { - "Calculation": { - "$ref": "#/definitions/NumericalAggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "MeasureAggregationFunction": { - "$ref": "#/definitions/AggregationFunction" - } - }, - "required": [ - "Calculation", - "Column" - ], - "type": "object" - }, - "ReferenceLineLabelConfiguration": { - "additionalProperties": false, - "properties": { - "CustomLabelConfiguration": { - "$ref": "#/definitions/ReferenceLineCustomLabelConfiguration" - }, - "FontColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "HorizontalPosition": { - "$ref": "#/definitions/ReferenceLineLabelHorizontalPosition" - }, - "ValueLabelConfiguration": { - "$ref": "#/definitions/ReferenceLineValueLabelConfiguration" - }, - "VerticalPosition": { - "$ref": "#/definitions/ReferenceLineLabelVerticalPosition" - } - }, - "type": "object" - }, - "ReferenceLineLabelHorizontalPosition": { - "enum": [ - "LEFT", - "CENTER", - "RIGHT" - ], - "type": "string" - }, - "ReferenceLineLabelVerticalPosition": { - "enum": [ - "ABOVE", - "BELOW" - ], - "type": "string" - }, - "ReferenceLinePatternType": { - "enum": [ - "SOLID", - "DASHED", - "DOTTED" - ], - "type": "string" - }, - "ReferenceLineSeriesType": { - "enum": [ - "BAR", - "LINE" - ], - "type": "string" - }, - "ReferenceLineStaticDataConfiguration": { - "additionalProperties": false, - "properties": { - "Value": { - "default": 0, - "type": "number" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "ReferenceLineStyleConfiguration": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Pattern": { - "$ref": "#/definitions/ReferenceLinePatternType" - } - }, - "type": "object" - }, - "ReferenceLineValueLabelConfiguration": { - "additionalProperties": false, - "properties": { - "FormatConfiguration": { - "$ref": "#/definitions/NumericFormatConfiguration" - }, - "RelativePosition": { - "$ref": "#/definitions/ReferenceLineValueLabelRelativePosition" - } - }, - "type": "object" - }, - "ReferenceLineValueLabelRelativePosition": { - "enum": [ - "BEFORE_CUSTOM_LABEL", - "AFTER_CUSTOM_LABEL" - ], - "type": "string" - }, - "RelativeDateTimeControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "DateTimeFormat": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "RelativeDateType": { - "enum": [ - "PREVIOUS", - "THIS", - "LAST", - "NOW", - "NEXT" - ], - "type": "string" - }, - "RelativeDatesFilter": { - "additionalProperties": false, - "properties": { - "AnchorDateConfiguration": { - "$ref": "#/definitions/AnchorDateConfiguration" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "ExcludePeriodConfiguration": { - "$ref": "#/definitions/ExcludePeriodConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "MinimumGranularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "RelativeDateType": { - "$ref": "#/definitions/RelativeDateType" - }, - "RelativeDateValue": { - "default": null, - "type": "number" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - } - }, - "required": [ - "AnchorDateConfiguration", - "Column", - "FilterId", - "NullOption", - "RelativeDateType", - "TimeGranularity" - ], - "type": "object" - }, - "RelativeFontSize": { - "enum": [ - "EXTRA_SMALL", - "SMALL", - "MEDIUM", - "LARGE", - "EXTRA_LARGE" - ], - "type": "string" - }, - "ResizeOption": { - "enum": [ - "FIXED", - "RESPONSIVE" - ], - "type": "string" - }, - "ResourcePermission": { - "additionalProperties": false, - "description": "

Permission for the resource.

", - "properties": { - "Actions": { - "description": "

The IAM action to grant or revoke permissions on.

", - "items": { - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - }, - "Principal": { - "description": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Actions", - "Principal" - ], - "type": "object" - }, - "ResourceStatus": { - "enum": [ - "CREATION_IN_PROGRESS", - "CREATION_SUCCESSFUL", - "CREATION_FAILED", - "UPDATE_IN_PROGRESS", - "UPDATE_SUCCESSFUL", - "UPDATE_FAILED", - "DELETED" - ], - "type": "string" - }, - "RollingDateConfiguration": { - "additionalProperties": false, - "properties": { - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Expression" - ], - "type": "object" - }, - "RowAlternateColorOptions": { - "additionalProperties": false, - "properties": { - "RowAlternateColors": { - "items": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Status": { - "$ref": "#/definitions/WidgetStatus" - }, - "UsePrimaryBackgroundColor": { - "$ref": "#/definitions/WidgetStatus" - } - }, - "type": "object" - }, - "SameSheetTargetVisualConfiguration": { - "additionalProperties": false, - "properties": { - "TargetVisualOptions": { - "$ref": "#/definitions/TargetVisualOptions" - }, - "TargetVisuals": { - "items": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "SankeyDiagramAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Destination": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Source": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Weight": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "SankeyDiagramChartConfiguration": { - "additionalProperties": false, - "properties": { - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/SankeyDiagramFieldWells" - }, - "SortConfiguration": { - "$ref": "#/definitions/SankeyDiagramSortConfiguration" - } - }, - "type": "object" - }, - "SankeyDiagramFieldWells": { - "additionalProperties": false, - "properties": { - "SankeyDiagramAggregatedFieldWells": { - "$ref": "#/definitions/SankeyDiagramAggregatedFieldWells" - } - }, - "type": "object" - }, - "SankeyDiagramSortConfiguration": { - "additionalProperties": false, - "properties": { - "DestinationItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "SourceItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "WeightSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "SankeyDiagramVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/SankeyDiagramChartConfiguration" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "ScatterPlotCategoricallyAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Label": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Size": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "XAxis": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "YAxis": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ScatterPlotConfiguration": { - "additionalProperties": false, - "properties": { - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/ScatterPlotFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - }, - "XAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "XAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "YAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "YAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - } - }, - "type": "object" - }, - "ScatterPlotFieldWells": { - "additionalProperties": false, - "properties": { - "ScatterPlotCategoricallyAggregatedFieldWells": { - "$ref": "#/definitions/ScatterPlotCategoricallyAggregatedFieldWells" - }, - "ScatterPlotUnaggregatedFieldWells": { - "$ref": "#/definitions/ScatterPlotUnaggregatedFieldWells" - } - }, - "type": "object" - }, - "ScatterPlotUnaggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Label": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Size": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "XAxis": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "YAxis": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ScatterPlotVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/ScatterPlotConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "ScrollBarOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - }, - "VisibleRange": { - "$ref": "#/definitions/VisibleRangeOptions" - } - }, - "type": "object" - }, - "SecondaryValueOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "SectionAfterPageBreak": { - "additionalProperties": false, - "properties": { - "Status": { - "$ref": "#/definitions/SectionPageBreakStatus" - } - }, - "type": "object" - }, - "SectionBasedLayoutCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "PaperCanvasSizeOptions": { - "$ref": "#/definitions/SectionBasedLayoutPaperCanvasSizeOptions" - } - }, - "type": "object" - }, - "SectionBasedLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "BodySections": { - "items": { - "$ref": "#/definitions/BodySectionConfiguration" - }, - "maxItems": 28, - "minItems": 0, - "type": "array" - }, - "CanvasSizeOptions": { - "$ref": "#/definitions/SectionBasedLayoutCanvasSizeOptions" - }, - "FooterSections": { - "items": { - "$ref": "#/definitions/HeaderFooterSectionConfiguration" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "HeaderSections": { - "items": { - "$ref": "#/definitions/HeaderFooterSectionConfiguration" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "BodySections", - "CanvasSizeOptions", - "FooterSections", - "HeaderSections" - ], - "type": "object" - }, - "SectionBasedLayoutPaperCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "PaperMargin": { - "$ref": "#/definitions/Spacing" - }, - "PaperOrientation": { - "$ref": "#/definitions/PaperOrientation" - }, - "PaperSize": { - "$ref": "#/definitions/PaperSize" - } - }, - "type": "object" - }, - "SectionLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "FreeFormLayout": { - "$ref": "#/definitions/FreeFormSectionLayoutConfiguration" - } - }, - "required": [ - "FreeFormLayout" - ], - "type": "object" - }, - "SectionPageBreakConfiguration": { - "additionalProperties": false, - "properties": { - "After": { - "$ref": "#/definitions/SectionAfterPageBreak" - } - }, - "type": "object" - }, - "SectionPageBreakStatus": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "SectionStyle": { - "additionalProperties": false, - "properties": { - "Height": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "Padding": { - "$ref": "#/definitions/Spacing" - } - }, - "type": "object" - }, - "SelectAllValueOptions": { - "enum": [ - "ALL_VALUES" - ], - "type": "string" - }, - "SelectedFieldOptions": { - "enum": [ - "ALL_FIELDS" - ], - "type": "string" - }, - "SelectedSheetsFilterScopeConfiguration": { - "additionalProperties": false, - "properties": { - "SheetVisualScopingConfigurations": { - "items": { - "$ref": "#/definitions/SheetVisualScopingConfiguration" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "SelectedTooltipType": { - "enum": [ - "BASIC", - "DETAILED" - ], - "type": "string" - }, - "SeriesItem": { - "additionalProperties": false, - "properties": { - "DataFieldSeriesItem": { - "$ref": "#/definitions/DataFieldSeriesItem" - }, - "FieldSeriesItem": { - "$ref": "#/definitions/FieldSeriesItem" - } - }, - "type": "object" - }, - "SetParameterValueConfiguration": { - "additionalProperties": false, - "properties": { - "DestinationParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Value": { - "$ref": "#/definitions/DestinationParameterValueConfiguration" - } - }, - "required": [ - "DestinationParameterName", - "Value" - ], - "type": "object" - }, - "ShapeConditionalFormat": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "required": [ - "BackgroundColor" - ], - "type": "object" - }, - "Sheet": { - "additionalProperties": false, - "description": "

A sheet, which is an object that contains a set of visuals that\n are viewed together on one page in Amazon QuickSight. Every analysis and dashboard\n contains at least one sheet. Each sheet contains at least one visualization widget, for\n example a chart, pivot table, or narrative insight. Sheets can be associated with other\n components, such as controls, filters, and so on.

", - "properties": { - "Name": { - "description": "

The name of a sheet. This name is displayed on the sheet's tab in the Amazon QuickSight\n console.

", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "SheetId": { - "description": "

The unique identifier associated with a sheet.

", - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "type": "object" - }, - "SheetContentType": { - "enum": [ - "PAGINATED", - "INTERACTIVE" - ], - "type": "string" - }, - "SheetControlDateTimePickerType": { - "enum": [ - "SINGLE_VALUED", - "DATE_RANGE" - ], - "type": "string" - }, - "SheetControlInfoIconLabelOptions": { - "additionalProperties": false, - "properties": { - "InfoIconText": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "SheetControlLayout": { - "additionalProperties": false, - "properties": { - "Configuration": { - "$ref": "#/definitions/SheetControlLayoutConfiguration" - } - }, - "required": [ - "Configuration" - ], - "type": "object" - }, - "SheetControlLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "GridLayout": { - "$ref": "#/definitions/GridLayoutConfiguration" - } - }, - "type": "object" - }, - "SheetControlListType": { - "enum": [ - "MULTI_SELECT", - "SINGLE_SELECT" - ], - "type": "string" - }, - "SheetControlSliderType": { - "enum": [ - "SINGLE_POINT", - "RANGE" - ], - "type": "string" - }, - "SheetControlsOption": { - "additionalProperties": false, - "description": "

Sheet controls option.

", - "properties": { - "VisibilityState": { - "$ref": "#/definitions/DashboardUIState" - } - }, - "type": "object" - }, - "SheetDefinition": { - "additionalProperties": false, - "properties": { - "ContentType": { - "$ref": "#/definitions/SheetContentType" - }, - "Description": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "FilterControls": { - "items": { - "$ref": "#/definitions/FilterControl" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Layouts": { - "items": { - "$ref": "#/definitions/Layout" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "ParameterControls": { - "items": { - "$ref": "#/definitions/ParameterControl" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "SheetControlLayouts": { - "items": { - "$ref": "#/definitions/SheetControlLayout" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "SheetId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "TextBoxes": { - "items": { - "$ref": "#/definitions/SheetTextBox" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "Title": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Visuals": { - "items": { - "$ref": "#/definitions/Visual" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "SheetId" - ], - "type": "object" - }, - "SheetElementConfigurationOverrides": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "SheetElementRenderingRule": { - "additionalProperties": false, - "properties": { - "ConfigurationOverrides": { - "$ref": "#/definitions/SheetElementConfigurationOverrides" - }, - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ConfigurationOverrides", - "Expression" - ], - "type": "object" - }, - "SheetLayoutElementMaximizationOption": { - "additionalProperties": false, - "description": "

The sheet layout maximization options of a dashbaord.

", - "properties": { - "AvailabilityStatus": { - "$ref": "#/definitions/DashboardBehavior" - } - }, - "type": "object" - }, - "SheetTextBox": { - "additionalProperties": false, - "properties": { - "Content": { - "maxLength": 150000, - "minLength": 0, - "type": "string" - }, - "SheetTextBoxId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "SheetTextBoxId" - ], - "type": "object" - }, - "SheetVisualScopingConfiguration": { - "additionalProperties": false, - "properties": { - "Scope": { - "$ref": "#/definitions/FilterVisualScope" - }, - "SheetId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "VisualIds": { - "items": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Scope", - "SheetId" - ], - "type": "object" - }, - "ShortFormatText": { - "additionalProperties": false, - "properties": { - "PlainText": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "RichText": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "SimpleAttributeAggregationFunction": { - "enum": [ - "UNIQUE_VALUE" - ], - "type": "string" - }, - "SimpleClusterMarker": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - } - }, - "type": "object" - }, - "SimpleNumericalAggregationFunction": { - "enum": [ - "SUM", - "AVERAGE", - "MIN", - "MAX", - "COUNT", - "DISTINCT_COUNT", - "VAR", - "VARP", - "STDEV", - "STDEVP", - "MEDIAN" - ], - "type": "string" - }, - "SimpleTotalAggregationFunction": { - "enum": [ - "DEFAULT", - "SUM", - "AVERAGE", - "MIN", - "MAX", - "NONE" - ], - "type": "string" - }, - "SingleAxisOptions": { - "additionalProperties": false, - "properties": { - "YAxisOptions": { - "$ref": "#/definitions/YAxisOptions" - } - }, - "type": "object" - }, - "SingleYAxisOption": { - "enum": [ - "PRIMARY_Y_AXIS" - ], - "type": "string" - }, - "SliderControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "SmallMultiplesAxisPlacement": { - "enum": [ - "OUTSIDE", - "INSIDE" - ], - "type": "string" - }, - "SmallMultiplesAxisProperties": { - "additionalProperties": false, - "properties": { - "Placement": { - "$ref": "#/definitions/SmallMultiplesAxisPlacement" - }, - "Scale": { - "$ref": "#/definitions/SmallMultiplesAxisScale" - } - }, - "type": "object" - }, - "SmallMultiplesAxisScale": { - "enum": [ - "SHARED", - "INDEPENDENT" - ], - "type": "string" - }, - "SmallMultiplesOptions": { - "additionalProperties": false, - "properties": { - "MaxVisibleColumns": { - "maximum": 10, - "minimum": 1, - "type": "number" - }, - "MaxVisibleRows": { - "maximum": 10, - "minimum": 1, - "type": "number" - }, - "PanelConfiguration": { - "$ref": "#/definitions/PanelConfiguration" - }, - "XAxis": { - "$ref": "#/definitions/SmallMultiplesAxisProperties" - }, - "YAxis": { - "$ref": "#/definitions/SmallMultiplesAxisProperties" - } - }, - "type": "object" - }, - "SortDirection": { - "enum": [ - "ASC", - "DESC" - ], - "type": "string" - }, - "Spacing": { - "additionalProperties": false, - "properties": { - "Bottom": { - "description": "String based length that is composed of value and unit", - "type": "string" - }, - "Left": { - "description": "String based length that is composed of value and unit", - "type": "string" - }, - "Right": { - "description": "String based length that is composed of value and unit", - "type": "string" - }, - "Top": { - "description": "String based length that is composed of value and unit", - "type": "string" - } - }, - "type": "object" - }, - "SpecialValue": { - "enum": [ - "EMPTY", - "NULL", - "OTHER" - ], - "type": "string" - }, - "StringDefaultValues": { - "additionalProperties": false, - "properties": { - "DynamicValue": { - "$ref": "#/definitions/DynamicDefaultValue" - }, - "StaticValues": { - "items": { - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "StringFormatConfiguration": { - "additionalProperties": false, - "properties": { - "NullValueFormatConfiguration": { - "$ref": "#/definitions/NullValueFormatConfiguration" - }, - "NumericFormatConfiguration": { - "$ref": "#/definitions/NumericFormatConfiguration" - } - }, - "type": "object" - }, - "StringParameter": { - "additionalProperties": false, - "description": "

A string parameter.

", - "properties": { - "Name": { - "description": "

A display name for a string parameter.

", - "pattern": "\\S", - "type": "string" - }, - "Values": { - "description": "

The values of a string parameter.

", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "Name", - "Values" - ], - "type": "object" - }, - "StringParameterDeclaration": { - "additionalProperties": false, - "properties": { - "DefaultValues": { - "$ref": "#/definitions/StringDefaultValues" - }, - "MappedDataSetParameters": { - "items": { - "$ref": "#/definitions/MappedDataSetParameter" - }, - "maxItems": 150, - "minItems": 0, - "type": "array" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "ParameterValueType": { - "$ref": "#/definitions/ParameterValueType" - }, - "ValueWhenUnset": { - "$ref": "#/definitions/StringValueWhenUnsetConfiguration" - } - }, - "required": [ - "Name", - "ParameterValueType" - ], - "type": "object" - }, - "StringValueWhenUnsetConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValue": { - "type": "string" - }, - "ValueWhenUnsetOption": { - "$ref": "#/definitions/ValueWhenUnsetOption" - } - }, - "type": "object" - }, - "StyledCellType": { - "enum": [ - "TOTAL", - "METRIC_HEADER", - "VALUE" - ], - "type": "string" - }, - "SubtotalOptions": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "type": "string" - }, - "FieldLevel": { - "$ref": "#/definitions/PivotTableSubtotalLevel" - }, - "FieldLevelOptions": { - "items": { - "$ref": "#/definitions/PivotTableFieldSubtotalOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "MetricHeaderCellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "StyleTargets": { - "items": { - "$ref": "#/definitions/TableStyleTarget" - }, - "maxItems": 3, - "minItems": 0, - "type": "array" - }, - "TotalCellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "TotalsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "ValueCellStyle": { - "$ref": "#/definitions/TableCellStyle" - } - }, - "type": "object" - }, - "TableAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "GroupBy": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableBorderOptions": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Style": { - "$ref": "#/definitions/TableBorderStyle" - }, - "Thickness": { - "maximum": 4, - "minimum": 1, - "type": "number" - } - }, - "type": "object" - }, - "TableBorderStyle": { - "enum": [ - "NONE", - "SOLID" - ], - "type": "string" - }, - "TableCellConditionalFormatting": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "TextFormat": { - "$ref": "#/definitions/TextConditionalFormat" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "TableCellImageScalingConfiguration": { - "enum": [ - "FIT_TO_CELL_HEIGHT", - "FIT_TO_CELL_WIDTH", - "DO_NOT_SCALE" - ], - "type": "string" - }, - "TableCellImageSizingConfiguration": { - "additionalProperties": false, - "properties": { - "TableCellImageScalingConfiguration": { - "$ref": "#/definitions/TableCellImageScalingConfiguration" - } - }, - "type": "object" - }, - "TableCellStyle": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Border": { - "$ref": "#/definitions/GlobalTableBorderOptions" - }, - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "Height": { - "maximum": 500, - "minimum": 8, - "type": "number" - }, - "HorizontalTextAlignment": { - "$ref": "#/definitions/HorizontalTextAlignment" - }, - "TextWrap": { - "$ref": "#/definitions/TextWrap" - }, - "VerticalTextAlignment": { - "$ref": "#/definitions/VerticalTextAlignment" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TableConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ConditionalFormattingOptions": { - "items": { - "$ref": "#/definitions/TableConditionalFormattingOption" - }, - "maxItems": 500, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableConditionalFormattingOption": { - "additionalProperties": false, - "properties": { - "Cell": { - "$ref": "#/definitions/TableCellConditionalFormatting" - }, - "Row": { - "$ref": "#/definitions/TableRowConditionalFormatting" - } - }, - "type": "object" - }, - "TableConfiguration": { - "additionalProperties": false, - "properties": { - "FieldOptions": { - "$ref": "#/definitions/TableFieldOptions" - }, - "FieldWells": { - "$ref": "#/definitions/TableFieldWells" - }, - "PaginatedReportOptions": { - "$ref": "#/definitions/TablePaginatedReportOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/TableSortConfiguration" - }, - "TableInlineVisualizations": { - "items": { - "$ref": "#/definitions/TableInlineVisualization" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TableOptions": { - "$ref": "#/definitions/TableOptions" - }, - "TotalOptions": { - "$ref": "#/definitions/TotalOptions" - } - }, - "type": "object" - }, - "TableFieldCustomIconContent": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/TableFieldIconSetType" - } - }, - "type": "object" - }, - "TableFieldCustomTextContent": { - "additionalProperties": false, - "properties": { - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "FontConfiguration" - ], - "type": "object" - }, - "TableFieldIconSetType": { - "enum": [ - "LINK" - ], - "type": "string" - }, - "TableFieldImageConfiguration": { - "additionalProperties": false, - "properties": { - "SizingOptions": { - "$ref": "#/definitions/TableCellImageSizingConfiguration" - } - }, - "type": "object" - }, - "TableFieldLinkConfiguration": { - "additionalProperties": false, - "properties": { - "Content": { - "$ref": "#/definitions/TableFieldLinkContentConfiguration" - }, - "Target": { - "$ref": "#/definitions/URLTargetConfiguration" - } - }, - "required": [ - "Content", - "Target" - ], - "type": "object" - }, - "TableFieldLinkContentConfiguration": { - "additionalProperties": false, - "properties": { - "CustomIconContent": { - "$ref": "#/definitions/TableFieldCustomIconContent" - }, - "CustomTextContent": { - "$ref": "#/definitions/TableFieldCustomTextContent" - } - }, - "type": "object" - }, - "TableFieldOption": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "URLStyling": { - "$ref": "#/definitions/TableFieldURLConfiguration" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - }, - "Width": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "TableFieldOptions": { - "additionalProperties": false, - "properties": { - "Order": { - "items": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "PinnedFieldOptions": { - "$ref": "#/definitions/TablePinnedFieldOptions" - }, - "SelectedFieldOptions": { - "items": { - "$ref": "#/definitions/TableFieldOption" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableFieldURLConfiguration": { - "additionalProperties": false, - "properties": { - "ImageConfiguration": { - "$ref": "#/definitions/TableFieldImageConfiguration" - }, - "LinkConfiguration": { - "$ref": "#/definitions/TableFieldLinkConfiguration" - } - }, - "type": "object" - }, - "TableFieldWells": { - "additionalProperties": false, - "properties": { - "TableAggregatedFieldWells": { - "$ref": "#/definitions/TableAggregatedFieldWells" - }, - "TableUnaggregatedFieldWells": { - "$ref": "#/definitions/TableUnaggregatedFieldWells" - } - }, - "type": "object" - }, - "TableInlineVisualization": { - "additionalProperties": false, - "properties": { - "DataBars": { - "$ref": "#/definitions/DataBarsOptions" - } - }, - "type": "object" - }, - "TableOptions": { - "additionalProperties": false, - "properties": { - "CellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "HeaderStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "Orientation": { - "$ref": "#/definitions/TableOrientation" - }, - "RowAlternateColorOptions": { - "$ref": "#/definitions/RowAlternateColorOptions" - } - }, - "type": "object" - }, - "TableOrientation": { - "enum": [ - "VERTICAL", - "HORIZONTAL" - ], - "type": "string" - }, - "TablePaginatedReportOptions": { - "additionalProperties": false, - "properties": { - "OverflowColumnHeaderVisibility": { - "$ref": "#/definitions/Visibility" - }, - "VerticalOverflowVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TablePinnedFieldOptions": { - "additionalProperties": false, - "properties": { - "PinnedLeftFields": { - "items": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "maxItems": 201, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableRowConditionalFormatting": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "TableSideBorderOptions": { - "additionalProperties": false, - "properties": { - "Bottom": { - "$ref": "#/definitions/TableBorderOptions" - }, - "InnerHorizontal": { - "$ref": "#/definitions/TableBorderOptions" - }, - "InnerVertical": { - "$ref": "#/definitions/TableBorderOptions" - }, - "Left": { - "$ref": "#/definitions/TableBorderOptions" - }, - "Right": { - "$ref": "#/definitions/TableBorderOptions" - }, - "Top": { - "$ref": "#/definitions/TableBorderOptions" - } - }, - "type": "object" - }, - "TableSortConfiguration": { - "additionalProperties": false, - "properties": { - "PaginationConfiguration": { - "$ref": "#/definitions/PaginationConfiguration" - }, - "RowSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableStyleTarget": { - "additionalProperties": false, - "properties": { - "CellType": { - "$ref": "#/definitions/StyledCellType" - } - }, - "required": [ - "CellType" - ], - "type": "object" - }, - "TableTotalsPlacement": { - "enum": [ - "START", - "END", - "AUTO" - ], - "type": "string" - }, - "TableTotalsScrollStatus": { - "enum": [ - "PINNED", - "SCROLLED" - ], - "type": "string" - }, - "TableUnaggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Values": { - "items": { - "$ref": "#/definitions/UnaggregatedField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/TableConfiguration" - }, - "ConditionalFormatting": { - "$ref": "#/definitions/TableConditionalFormatting" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", - "properties": { - "Key": { - "description": "

Tag key.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "

Tag value.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TargetVisualOptions": { - "enum": [ - "ALL_VISUALS" - ], - "type": "string" - }, - "TextAreaControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "PlaceholderOptions": { - "$ref": "#/definitions/TextControlPlaceholderOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "TextConditionalFormat": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - }, - "Icon": { - "$ref": "#/definitions/ConditionalFormattingIcon" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "TextControlPlaceholderOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TextFieldControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "PlaceholderOptions": { - "$ref": "#/definitions/TextControlPlaceholderOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "TextWrap": { - "enum": [ - "NONE", - "WRAP" - ], - "type": "string" - }, - "ThousandSeparatorOptions": { - "additionalProperties": false, - "properties": { - "Symbol": { - "$ref": "#/definitions/NumericSeparatorSymbol" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TimeBasedForecastProperties": { - "additionalProperties": false, - "properties": { - "LowerBoundary": { - "default": null, - "type": "number" - }, - "PeriodsBackward": { - "maximum": 1000, - "minimum": 0, - "type": "number" - }, - "PeriodsForward": { - "maximum": 1000, - "minimum": 1, - "type": "number" - }, - "PredictionInterval": { - "maximum": 95, - "minimum": 50, - "type": "number" - }, - "Seasonality": { - "maximum": 180, - "minimum": 1, - "type": "number" - }, - "UpperBoundary": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "TimeEqualityFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "RollingDate": { - "$ref": "#/definitions/RollingDateConfiguration" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "Value": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "Column", - "FilterId" - ], - "type": "object" - }, - "TimeGranularity": { - "enum": [ - "YEAR", - "QUARTER", - "MONTH", - "WEEK", - "DAY", - "HOUR", - "MINUTE", - "SECOND", - "MILLISECOND" - ], - "type": "string" - }, - "TimeRangeDrillDownFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "RangeMaximum": { - "format": "date-time", - "type": "string" - }, - "RangeMinimum": { - "format": "date-time", - "type": "string" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - } - }, - "required": [ - "Column", - "RangeMaximum", - "RangeMinimum", - "TimeGranularity" - ], - "type": "object" - }, - "TimeRangeFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "ExcludePeriodConfiguration": { - "$ref": "#/definitions/ExcludePeriodConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "IncludeMaximum": { - "default": null, - "type": "boolean" - }, - "IncludeMinimum": { - "default": null, - "type": "boolean" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "RangeMaximumValue": { - "$ref": "#/definitions/TimeRangeFilterValue" - }, - "RangeMinimumValue": { - "$ref": "#/definitions/TimeRangeFilterValue" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - } - }, - "required": [ - "Column", - "FilterId", - "NullOption" - ], - "type": "object" - }, - "TimeRangeFilterValue": { - "additionalProperties": false, - "properties": { - "Parameter": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "RollingDate": { - "$ref": "#/definitions/RollingDateConfiguration" - }, - "StaticValue": { - "format": "date-time", - "type": "string" - } - }, - "type": "object" - }, - "TooltipItem": { - "additionalProperties": false, - "properties": { - "ColumnTooltipItem": { - "$ref": "#/definitions/ColumnTooltipItem" - }, - "FieldTooltipItem": { - "$ref": "#/definitions/FieldTooltipItem" - } - }, - "type": "object" - }, - "TooltipOptions": { - "additionalProperties": false, - "properties": { - "FieldBasedTooltip": { - "$ref": "#/definitions/FieldBasedTooltip" - }, - "SelectedTooltipType": { - "$ref": "#/definitions/SelectedTooltipType" - }, - "TooltipVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TooltipTarget": { - "enum": [ - "BOTH", - "BAR", - "LINE" - ], - "type": "string" - }, - "TooltipTitleType": { - "enum": [ - "NONE", - "PRIMARY_VALUE" - ], - "type": "string" - }, - "TopBottomComputationType": { - "enum": [ - "TOP", - "BOTTOM" - ], - "type": "string" - }, - "TopBottomFilter": { - "additionalProperties": false, - "properties": { - "AggregationSortConfigurations": { - "items": { - "$ref": "#/definitions/AggregationSortConfiguration" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Limit": { - "default": null, - "type": "number" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - } - }, - "required": [ - "AggregationSortConfigurations", - "Column", - "FilterId" - ], - "type": "object" - }, - "TopBottomMoversComputation": { - "additionalProperties": false, - "properties": { - "Category": { - "$ref": "#/definitions/DimensionField" - }, - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "MoverSize": { - "default": 0, - "maximum": 20, - "minimum": 1, - "type": "number" - }, - "Name": { - "type": "string" - }, - "SortOrder": { - "$ref": "#/definitions/TopBottomSortOrder" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "Type": { - "$ref": "#/definitions/TopBottomComputationType" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId", - "Type" - ], - "type": "object" - }, - "TopBottomRankedComputation": { - "additionalProperties": false, - "properties": { - "Category": { - "$ref": "#/definitions/DimensionField" - }, - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "ResultSize": { - "default": 0, - "maximum": 20, - "minimum": 1, - "type": "number" - }, - "Type": { - "$ref": "#/definitions/TopBottomComputationType" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId", - "Type" - ], - "type": "object" - }, - "TopBottomSortOrder": { - "enum": [ - "PERCENT_DIFFERENCE", - "ABSOLUTE_DIFFERENCE" - ], - "type": "string" - }, - "TotalAggregationComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "TotalAggregationFunction": { - "additionalProperties": false, - "properties": { - "SimpleTotalAggregationFunction": { - "$ref": "#/definitions/SimpleTotalAggregationFunction" - } - }, - "type": "object" - }, - "TotalAggregationOption": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "TotalAggregationFunction": { - "$ref": "#/definitions/TotalAggregationFunction" - } - }, - "required": [ - "FieldId", - "TotalAggregationFunction" - ], - "type": "object" - }, - "TotalOptions": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "type": "string" - }, - "Placement": { - "$ref": "#/definitions/TableTotalsPlacement" - }, - "ScrollStatus": { - "$ref": "#/definitions/TableTotalsScrollStatus" - }, - "TotalAggregationOptions": { - "items": { - "$ref": "#/definitions/TotalAggregationOption" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TotalCellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "TotalsVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TreeMapAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Colors": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Groups": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Sizes": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TreeMapConfiguration": { - "additionalProperties": false, - "properties": { - "ColorLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ColorScale": { - "$ref": "#/definitions/ColorScale" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/TreeMapFieldWells" - }, - "GroupLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "SizeLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/TreeMapSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - } - }, - "type": "object" - }, - "TreeMapFieldWells": { - "additionalProperties": false, - "properties": { - "TreeMapAggregatedFieldWells": { - "$ref": "#/definitions/TreeMapAggregatedFieldWells" - } - }, - "type": "object" - }, - "TreeMapSortConfiguration": { - "additionalProperties": false, - "properties": { - "TreeMapGroupItemsLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "TreeMapSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TreeMapVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/TreeMapConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "TrendArrowOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "URLTargetConfiguration": { - "enum": [ - "NEW_TAB", - "NEW_WINDOW", - "SAME_TAB" - ], - "type": "string" - }, - "UnaggregatedField": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/FormatConfiguration" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "UniqueValuesComputation": { - "additionalProperties": false, - "properties": { - "Category": { - "$ref": "#/definitions/DimensionField" - }, - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "ValidationStrategy": { - "additionalProperties": false, - "description": "

The option to relax the validation that is required to create and update analyses, dashboards, and templates with definition objects. When you set this value to LENIENT, validation is skipped for specific errors.

", - "properties": { - "Mode": { - "$ref": "#/definitions/ValidationStrategyMode" - } - }, - "required": [ - "Mode" - ], - "type": "object" - }, - "ValidationStrategyMode": { - "enum": [ - "STRICT", - "LENIENT" - ], - "type": "string" - }, - "ValueWhenUnsetOption": { - "enum": [ - "RECOMMENDED_VALUE", - "NULL" - ], - "type": "string" - }, - "VerticalTextAlignment": { - "enum": [ - "TOP", - "MIDDLE", - "BOTTOM", - "AUTO" - ], - "type": "string" - }, - "Visibility": { - "enum": [ - "HIDDEN", - "VISIBLE" - ], - "type": "string" - }, - "VisibleRangeOptions": { - "additionalProperties": false, - "properties": { - "PercentRange": { - "$ref": "#/definitions/PercentVisibleRange" - } - }, - "type": "object" - }, - "Visual": { - "additionalProperties": false, - "properties": { - "BarChartVisual": { - "$ref": "#/definitions/BarChartVisual" - }, - "BoxPlotVisual": { - "$ref": "#/definitions/BoxPlotVisual" - }, - "ComboChartVisual": { - "$ref": "#/definitions/ComboChartVisual" - }, - "CustomContentVisual": { - "$ref": "#/definitions/CustomContentVisual" - }, - "EmptyVisual": { - "$ref": "#/definitions/EmptyVisual" - }, - "FilledMapVisual": { - "$ref": "#/definitions/FilledMapVisual" - }, - "FunnelChartVisual": { - "$ref": "#/definitions/FunnelChartVisual" - }, - "GaugeChartVisual": { - "$ref": "#/definitions/GaugeChartVisual" - }, - "GeospatialMapVisual": { - "$ref": "#/definitions/GeospatialMapVisual" - }, - "HeatMapVisual": { - "$ref": "#/definitions/HeatMapVisual" - }, - "HistogramVisual": { - "$ref": "#/definitions/HistogramVisual" - }, - "InsightVisual": { - "$ref": "#/definitions/InsightVisual" - }, - "KPIVisual": { - "$ref": "#/definitions/KPIVisual" - }, - "LineChartVisual": { - "$ref": "#/definitions/LineChartVisual" - }, - "PieChartVisual": { - "$ref": "#/definitions/PieChartVisual" - }, - "PivotTableVisual": { - "$ref": "#/definitions/PivotTableVisual" - }, - "RadarChartVisual": { - "$ref": "#/definitions/RadarChartVisual" - }, - "SankeyDiagramVisual": { - "$ref": "#/definitions/SankeyDiagramVisual" - }, - "ScatterPlotVisual": { - "$ref": "#/definitions/ScatterPlotVisual" - }, - "TableVisual": { - "$ref": "#/definitions/TableVisual" - }, - "TreeMapVisual": { - "$ref": "#/definitions/TreeMapVisual" - }, - "WaterfallVisual": { - "$ref": "#/definitions/WaterfallVisual" - }, - "WordCloudVisual": { - "$ref": "#/definitions/WordCloudVisual" - } - }, - "type": "object" - }, - "VisualAxisSortOption": { - "additionalProperties": false, - "properties": { - "AvailabilityStatus": { - "$ref": "#/definitions/DashboardBehavior" - } - }, - "type": "object" - }, - "VisualCustomAction": { - "additionalProperties": false, - "properties": { - "ActionOperations": { - "items": { - "$ref": "#/definitions/VisualCustomActionOperation" - }, - "maxItems": 2, - "minItems": 1, - "type": "array" - }, - "CustomActionId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Status": { - "$ref": "#/definitions/WidgetStatus" - }, - "Trigger": { - "$ref": "#/definitions/VisualCustomActionTrigger" - } - }, - "required": [ - "ActionOperations", - "CustomActionId", - "Name", - "Trigger" - ], - "type": "object" - }, - "VisualCustomActionOperation": { - "additionalProperties": false, - "properties": { - "FilterOperation": { - "$ref": "#/definitions/CustomActionFilterOperation" - }, - "NavigationOperation": { - "$ref": "#/definitions/CustomActionNavigationOperation" - }, - "SetParametersOperation": { - "$ref": "#/definitions/CustomActionSetParametersOperation" - }, - "URLOperation": { - "$ref": "#/definitions/CustomActionURLOperation" - } - }, - "type": "object" - }, - "VisualCustomActionTrigger": { - "enum": [ - "DATA_POINT_CLICK", - "DATA_POINT_MENU" - ], - "type": "string" - }, - "VisualMenuOption": { - "additionalProperties": false, - "properties": { - "AvailabilityStatus": { - "$ref": "#/definitions/DashboardBehavior" - } - }, - "type": "object" - }, - "VisualPalette": { - "additionalProperties": false, - "properties": { - "ChartColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "ColorMap": { - "items": { - "$ref": "#/definitions/DataPathColor" - }, - "maxItems": 5000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "VisualSubtitleLabelOptions": { - "additionalProperties": false, - "properties": { - "FormatText": { - "$ref": "#/definitions/LongFormatText" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "VisualTitleLabelOptions": { - "additionalProperties": false, - "properties": { - "FormatText": { - "$ref": "#/definitions/ShortFormatText" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "WaterfallChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Breakdowns": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Categories": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "WaterfallChartColorConfiguration": { - "additionalProperties": false, - "properties": { - "GroupColorConfiguration": { - "$ref": "#/definitions/WaterfallChartGroupColorConfiguration" - } - }, - "type": "object" - }, - "WaterfallChartConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "CategoryAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ColorConfiguration": { - "$ref": "#/definitions/WaterfallChartColorConfiguration" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/WaterfallChartFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "PrimaryYAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "PrimaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/WaterfallChartSortConfiguration" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - }, - "WaterfallChartOptions": { - "$ref": "#/definitions/WaterfallChartOptions" - } - }, - "type": "object" - }, - "WaterfallChartFieldWells": { - "additionalProperties": false, - "properties": { - "WaterfallChartAggregatedFieldWells": { - "$ref": "#/definitions/WaterfallChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "WaterfallChartGroupColorConfiguration": { - "additionalProperties": false, - "properties": { - "NegativeBarColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "PositiveBarColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "TotalBarColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - } - }, - "type": "object" - }, - "WaterfallChartOptions": { - "additionalProperties": false, - "properties": { - "TotalBarLabel": { - "type": "string" - } - }, - "type": "object" - }, - "WaterfallChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "BreakdownItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "WaterfallVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/WaterfallChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "WhatIfPointScenario": { - "additionalProperties": false, - "properties": { - "Date": { - "format": "date-time", - "type": "string" - }, - "Value": { - "default": 0, - "type": "number" - } - }, - "required": [ - "Date", - "Value" - ], - "type": "object" - }, - "WhatIfRangeScenario": { - "additionalProperties": false, - "properties": { - "EndDate": { - "format": "date-time", - "type": "string" - }, - "StartDate": { - "format": "date-time", - "type": "string" - }, - "Value": { - "default": 0, - "type": "number" - } - }, - "required": [ - "EndDate", - "StartDate", - "Value" - ], - "type": "object" - }, - "WidgetStatus": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "WordCloudAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "GroupBy": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "Size": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "WordCloudChartConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/WordCloudFieldWells" - }, - "SortConfiguration": { - "$ref": "#/definitions/WordCloudSortConfiguration" - }, - "WordCloudOptions": { - "$ref": "#/definitions/WordCloudOptions" - } - }, - "type": "object" - }, - "WordCloudCloudLayout": { - "enum": [ - "FLUID", - "NORMAL" - ], - "type": "string" - }, - "WordCloudFieldWells": { - "additionalProperties": false, - "properties": { - "WordCloudAggregatedFieldWells": { - "$ref": "#/definitions/WordCloudAggregatedFieldWells" - } - }, - "type": "object" - }, - "WordCloudOptions": { - "additionalProperties": false, - "properties": { - "CloudLayout": { - "$ref": "#/definitions/WordCloudCloudLayout" - }, - "MaximumStringLength": { - "maximum": 100, - "minimum": 1, - "type": "number" - }, - "WordCasing": { - "$ref": "#/definitions/WordCloudWordCasing" - }, - "WordOrientation": { - "$ref": "#/definitions/WordCloudWordOrientation" - }, - "WordPadding": { - "$ref": "#/definitions/WordCloudWordPadding" - }, - "WordScaling": { - "$ref": "#/definitions/WordCloudWordScaling" - } - }, - "type": "object" - }, - "WordCloudSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "WordCloudVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/WordCloudChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "WordCloudWordCasing": { - "enum": [ - "LOWER_CASE", - "EXISTING_CASE" - ], - "type": "string" - }, - "WordCloudWordOrientation": { - "enum": [ - "HORIZONTAL", - "HORIZONTAL_AND_VERTICAL" - ], - "type": "string" - }, - "WordCloudWordPadding": { - "enum": [ - "NONE", - "SMALL", - "MEDIUM", - "LARGE" - ], - "type": "string" - }, - "WordCloudWordScaling": { - "enum": [ - "EMPHASIZE", - "NORMAL" - ], - "type": "string" - }, - "YAxisOptions": { - "additionalProperties": false, - "properties": { - "YAxis": { - "$ref": "#/definitions/SingleYAxisOption" - } - }, - "required": [ - "YAxis" - ], - "type": "object" - } - }, - "description": "Definition of the AWS::QuickSight::Dashboard Resource Type.", - "handlers": { - "create": { - "permissions": [ - "quicksight:DescribeDashboard", - "quicksight:DescribeDashboardPermissions", - "quicksight:CreateDashboard", - "quicksight:DescribeTemplate", - "quicksight:DescribeTheme", - "quicksight:PassDataSet", - "quicksight:TagResource", - "quicksight:UntagResource", - "quicksight:ListTagsForResource", - "quicksight:CreateFolderMembership", - "quicksight:DeleteFolderMembership", - "quicksight:ListFoldersForResource" - ] - }, - "delete": { - "permissions": [ - "quicksight:DescribeDashboard", - "quicksight:DeleteDashboard" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "AwsAccountId": { - "$ref": "resource-schema.json#/properties/AwsAccountId" - } - }, - "required": [ - "AwsAccountId" - ] - }, - "permissions": [ - "quicksight:ListDashboards" - ] - }, - "read": { - "permissions": [ - "quicksight:DescribeDashboard", - "quicksight:DescribeDashboardPermissions", - "quicksight:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "quicksight:DescribeDashboard", - "quicksight:DescribeDashboardPermissions", - "quicksight:UpdateDashboard", - "quicksight:UpdateDashboardLinks", - "quicksight:UpdateDashboardPermissions", - "quicksight:UpdateDashboardPublishedVersion", - "quicksight:DescribeTemplate", - "quicksight:DescribeTheme", - "quicksight:PassDataSet", - "quicksight:CreateFolderMembership", - "quicksight:DeleteFolderMembership", - "quicksight:ListFoldersForResource", - "quicksight:TagResource", - "quicksight:UntagResource", - "quicksight:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AwsAccountId", - "/properties/DashboardId" - ], - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) of the resource.

", - "type": "string" - }, - "AwsAccountId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "CreatedTime": { - "description": "

The time that this dashboard was created.

", - "format": "date-time", - "type": "string" - }, - "DashboardId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "DashboardPublishOptions": { - "$ref": "#/definitions/DashboardPublishOptions" - }, - "Definition": { - "$ref": "#/definitions/DashboardVersionDefinition" - }, - "FolderArns": { - "items": { - "type": "string" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "LastPublishedTime": { - "description": "

The last time that this dashboard was published.

", - "format": "date-time", - "type": "string" - }, - "LastUpdatedTime": { - "description": "

The last time that this dashboard was updated.

", - "format": "date-time", - "type": "string" - }, - "LinkEntities": { - "items": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^arn:aws[\\w\\-]*:quicksight:[\\w\\-]+:\\d+:analysis/[\\w\\-]{1,512}$", - "type": "string" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - }, - "LinkSharingConfiguration": { - "$ref": "#/definitions/LinkSharingConfiguration" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Parameters": { - "$ref": "#/definitions/Parameters" - }, - "Permissions": { - "items": { - "$ref": "#/definitions/ResourcePermission" - }, - "maxItems": 64, - "minItems": 1, - "type": "array" - }, - "SourceEntity": { - "$ref": "#/definitions/DashboardSourceEntity" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "ThemeArn": { - "type": "string" - }, - "ValidationStrategy": { - "$ref": "#/definitions/ValidationStrategy" - }, - "Version": { - "$ref": "#/definitions/DashboardVersion" - }, - "VersionDescription": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedTime", - "/properties/LastPublishedTime", - "/properties/LastUpdatedTime", - "/properties/Version" - ], - "required": [ - "AwsAccountId", - "DashboardId", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", - "typeName": "AWS::QuickSight::Dashboard", - "writeOnlyProperties": [ - "/properties/DashboardPublishOptions", - "/properties/Definition", - "/properties/LinkSharingConfiguration", - "/properties/Parameters", - "/properties/SourceEntity", - "/properties/ThemeArn", - "/properties/VersionDescription", - "/properties/ValidationStrategy", - "/properties/FolderArns" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/DashboardId" + ], + "definitions": { + "AdHocFilteringOption": { + "additionalProperties": false, + "description": "

An ad hoc (one-time) filtering option.

", + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "AggregationFunction": { + "additionalProperties": false, + "properties": { + "AttributeAggregationFunction": { + "$ref": "#/definitions/AttributeAggregationFunction" + }, + "CategoricalAggregationFunction": { + "$ref": "#/definitions/CategoricalAggregationFunction" + }, + "DateAggregationFunction": { + "$ref": "#/definitions/DateAggregationFunction" + }, + "NumericalAggregationFunction": { + "$ref": "#/definitions/NumericalAggregationFunction" + } + }, + "type": "object" + }, + "AggregationSortConfiguration": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SortDirection": { + "$ref": "#/definitions/SortDirection" + } + }, + "required": [ + "Column", + "SortDirection" + ], + "type": "object" + }, + "AllSheetsFilterScopeConfiguration": { + "additionalProperties": false, + "type": "object" + }, + "AnalysisDefaults": { + "additionalProperties": false, + "properties": { + "DefaultNewSheetConfiguration": { + "$ref": "#/definitions/DefaultNewSheetConfiguration" + } + }, + "required": [ + "DefaultNewSheetConfiguration" + ], + "type": "object" + }, + "AnchorDateConfiguration": { + "additionalProperties": false, + "properties": { + "AnchorOption": { + "$ref": "#/definitions/AnchorOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "AnchorOption": { + "enum": [ + "NOW" + ], + "type": "string" + }, + "ArcAxisConfiguration": { + "additionalProperties": false, + "properties": { + "Range": { + "$ref": "#/definitions/ArcAxisDisplayRange" + }, + "ReserveRange": { + "default": 0, + "type": "number" + } + }, + "type": "object" + }, + "ArcAxisDisplayRange": { + "additionalProperties": false, + "properties": { + "Max": { + "default": null, + "type": "number" + }, + "Min": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "ArcConfiguration": { + "additionalProperties": false, + "properties": { + "ArcAngle": { + "default": null, + "type": "number" + }, + "ArcThickness": { + "$ref": "#/definitions/ArcThicknessOptions" + } + }, + "type": "object" + }, + "ArcOptions": { + "additionalProperties": false, + "properties": { + "ArcThickness": { + "$ref": "#/definitions/ArcThickness" + } + }, + "type": "object" + }, + "ArcThickness": { + "enum": [ + "SMALL", + "MEDIUM", + "LARGE", + "WHOLE" + ], + "type": "string" + }, + "ArcThicknessOptions": { + "enum": [ + "SMALL", + "MEDIUM", + "LARGE" + ], + "type": "string" + }, + "AssetOptions": { + "additionalProperties": false, + "properties": { + "Timezone": { + "type": "string" + }, + "WeekStart": { + "$ref": "#/definitions/DayOfTheWeek" + } + }, + "type": "object" + }, + "AttributeAggregationFunction": { + "additionalProperties": false, + "properties": { + "SimpleAttributeAggregation": { + "$ref": "#/definitions/SimpleAttributeAggregationFunction" + }, + "ValueForMultipleValues": { + "type": "string" + } + }, + "type": "object" + }, + "AxisBinding": { + "enum": [ + "PRIMARY_YAXIS", + "SECONDARY_YAXIS" + ], + "type": "string" + }, + "AxisDataOptions": { + "additionalProperties": false, + "properties": { + "DateAxisOptions": { + "$ref": "#/definitions/DateAxisOptions" + }, + "NumericAxisOptions": { + "$ref": "#/definitions/NumericAxisOptions" + } + }, + "type": "object" + }, + "AxisDisplayDataDrivenRange": { + "additionalProperties": false, + "type": "object" + }, + "AxisDisplayMinMaxRange": { + "additionalProperties": false, + "properties": { + "Maximum": { + "default": null, + "type": "number" + }, + "Minimum": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisDisplayOptions": { + "additionalProperties": false, + "properties": { + "AxisLineVisibility": { + "$ref": "#/definitions/Visibility" + }, + "AxisOffset": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "DataOptions": { + "$ref": "#/definitions/AxisDataOptions" + }, + "GridLineVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ScrollbarOptions": { + "$ref": "#/definitions/ScrollBarOptions" + }, + "TickLabelOptions": { + "$ref": "#/definitions/AxisTickLabelOptions" + } + }, + "type": "object" + }, + "AxisDisplayRange": { + "additionalProperties": false, + "properties": { + "DataDriven": { + "$ref": "#/definitions/AxisDisplayDataDrivenRange" + }, + "MinMax": { + "$ref": "#/definitions/AxisDisplayMinMaxRange" + } + }, + "type": "object" + }, + "AxisLabelOptions": { + "additionalProperties": false, + "properties": { + "ApplyTo": { + "$ref": "#/definitions/AxisLabelReferenceOptions" + }, + "CustomLabel": { + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + } + }, + "type": "object" + }, + "AxisLabelReferenceOptions": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "AxisLinearScale": { + "additionalProperties": false, + "properties": { + "StepCount": { + "default": null, + "type": "number" + }, + "StepSize": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisLogarithmicScale": { + "additionalProperties": false, + "properties": { + "Base": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisScale": { + "additionalProperties": false, + "properties": { + "Linear": { + "$ref": "#/definitions/AxisLinearScale" + }, + "Logarithmic": { + "$ref": "#/definitions/AxisLogarithmicScale" + } + }, + "type": "object" + }, + "AxisTickLabelOptions": { + "additionalProperties": false, + "properties": { + "LabelOptions": { + "$ref": "#/definitions/LabelOptions" + }, + "RotationAngle": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "BarChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BarChartConfiguration": { + "additionalProperties": false, + "properties": { + "BarsArrangement": { + "$ref": "#/definitions/BarsArrangement" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/BarChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "Orientation": { + "$ref": "#/definitions/BarChartOrientation" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/BarChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "BarChartFieldWells": { + "additionalProperties": false, + "properties": { + "BarChartAggregatedFieldWells": { + "$ref": "#/definitions/BarChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "BarChartOrientation": { + "enum": [ + "HORIZONTAL", + "VERTICAL" + ], + "type": "string" + }, + "BarChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BarChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/BarChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "BarsArrangement": { + "enum": [ + "CLUSTERED", + "STACKED", + "STACKED_PERCENT" + ], + "type": "string" + }, + "BaseMapStyleType": { + "enum": [ + "LIGHT_GRAY", + "DARK_GRAY", + "STREET", + "IMAGERY" + ], + "type": "string" + }, + "BinCountOptions": { + "additionalProperties": false, + "properties": { + "Value": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "BinWidthOptions": { + "additionalProperties": false, + "properties": { + "BinCountLimit": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "Value": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "BodySectionConfiguration": { + "additionalProperties": false, + "properties": { + "Content": { + "$ref": "#/definitions/BodySectionContent" + }, + "PageBreakConfiguration": { + "$ref": "#/definitions/SectionPageBreakConfiguration" + }, + "RepeatConfiguration": { + "$ref": "#/definitions/BodySectionRepeatConfiguration" + }, + "SectionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/SectionStyle" + } + }, + "required": [ + "Content", + "SectionId" + ], + "type": "object" + }, + "BodySectionContent": { + "additionalProperties": false, + "properties": { + "Layout": { + "$ref": "#/definitions/SectionLayoutConfiguration" + } + }, + "type": "object" + }, + "BodySectionDynamicCategoryDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Limit": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "SortByMetrics": { + "items": { + "$ref": "#/definitions/ColumnSort" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "BodySectionDynamicNumericDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Limit": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "SortByMetrics": { + "items": { + "$ref": "#/definitions/ColumnSort" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "BodySectionRepeatConfiguration": { + "additionalProperties": false, + "properties": { + "DimensionConfigurations": { + "items": { + "$ref": "#/definitions/BodySectionRepeatDimensionConfiguration" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "NonRepeatingVisuals": { + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "PageBreakConfiguration": { + "$ref": "#/definitions/BodySectionRepeatPageBreakConfiguration" + } + }, + "type": "object" + }, + "BodySectionRepeatDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "DynamicCategoryDimensionConfiguration": { + "$ref": "#/definitions/BodySectionDynamicCategoryDimensionConfiguration" + }, + "DynamicNumericDimensionConfiguration": { + "$ref": "#/definitions/BodySectionDynamicNumericDimensionConfiguration" + } + }, + "type": "object" + }, + "BodySectionRepeatPageBreakConfiguration": { + "additionalProperties": false, + "properties": { + "After": { + "$ref": "#/definitions/SectionAfterPageBreak" + } + }, + "type": "object" + }, + "BoxPlotAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "GroupBy": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BoxPlotChartConfiguration": { + "additionalProperties": false, + "properties": { + "BoxPlotOptions": { + "$ref": "#/definitions/BoxPlotOptions" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/BoxPlotFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SortConfiguration": { + "$ref": "#/definitions/BoxPlotSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "BoxPlotFieldWells": { + "additionalProperties": false, + "properties": { + "BoxPlotAggregatedFieldWells": { + "$ref": "#/definitions/BoxPlotAggregatedFieldWells" + } + }, + "type": "object" + }, + "BoxPlotFillStyle": { + "enum": [ + "SOLID", + "TRANSPARENT" + ], + "type": "string" + }, + "BoxPlotOptions": { + "additionalProperties": false, + "properties": { + "AllDataPointsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "OutlierVisibility": { + "$ref": "#/definitions/Visibility" + }, + "StyleOptions": { + "$ref": "#/definitions/BoxPlotStyleOptions" + } + }, + "type": "object" + }, + "BoxPlotSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "PaginationConfiguration": { + "$ref": "#/definitions/PaginationConfiguration" + } + }, + "type": "object" + }, + "BoxPlotStyleOptions": { + "additionalProperties": false, + "properties": { + "FillStyle": { + "$ref": "#/definitions/BoxPlotFillStyle" + } + }, + "type": "object" + }, + "BoxPlotVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/BoxPlotChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "CalculatedField": { + "additionalProperties": false, + "properties": { + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Expression": { + "maxLength": 32000, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 127, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "Expression", + "Name" + ], + "type": "object" + }, + "CalculatedMeasureField": { + "additionalProperties": false, + "properties": { + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Expression", + "FieldId" + ], + "type": "object" + }, + "CascadingControlConfiguration": { + "additionalProperties": false, + "properties": { + "SourceControls": { + "items": { + "$ref": "#/definitions/CascadingControlSource" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "CascadingControlSource": { + "additionalProperties": false, + "properties": { + "ColumnToMatch": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SourceSheetControlId": { + "type": "string" + } + }, + "type": "object" + }, + "CategoricalAggregationFunction": { + "enum": [ + "COUNT", + "DISTINCT_COUNT" + ], + "type": "string" + }, + "CategoricalDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "CategoricalMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/CategoricalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "CategoryDrillDownFilter": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "CategoryValues", + "Column" + ], + "type": "object" + }, + "CategoryFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Configuration": { + "$ref": "#/definitions/CategoryFilterConfiguration" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "Column", + "Configuration", + "FilterId" + ], + "type": "object" + }, + "CategoryFilterConfiguration": { + "additionalProperties": false, + "properties": { + "CustomFilterConfiguration": { + "$ref": "#/definitions/CustomFilterConfiguration" + }, + "CustomFilterListConfiguration": { + "$ref": "#/definitions/CustomFilterListConfiguration" + }, + "FilterListConfiguration": { + "$ref": "#/definitions/FilterListConfiguration" + } + }, + "type": "object" + }, + "CategoryFilterMatchOperator": { + "enum": [ + "EQUALS", + "DOES_NOT_EQUAL", + "CONTAINS", + "DOES_NOT_CONTAIN", + "STARTS_WITH", + "ENDS_WITH" + ], + "type": "string" + }, + "CategoryFilterSelectAllOptions": { + "enum": [ + "FILTER_ALL_VALUES" + ], + "type": "string" + }, + "CategoryInnerFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Configuration": { + "$ref": "#/definitions/CategoryFilterConfiguration" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + } + }, + "required": [ + "Column", + "Configuration" + ], + "type": "object" + }, + "ChartAxisLabelOptions": { + "additionalProperties": false, + "properties": { + "AxisLabelOptions": { + "items": { + "$ref": "#/definitions/AxisLabelOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SortIconVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "ClusterMarker": { + "additionalProperties": false, + "properties": { + "SimpleClusterMarker": { + "$ref": "#/definitions/SimpleClusterMarker" + } + }, + "type": "object" + }, + "ClusterMarkerConfiguration": { + "additionalProperties": false, + "properties": { + "ClusterMarker": { + "$ref": "#/definitions/ClusterMarker" + } + }, + "type": "object" + }, + "ColorFillType": { + "enum": [ + "DISCRETE", + "GRADIENT" + ], + "type": "string" + }, + "ColorScale": { + "additionalProperties": false, + "properties": { + "ColorFillType": { + "$ref": "#/definitions/ColorFillType" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DataColor" + }, + "maxItems": 3, + "minItems": 2, + "type": "array" + }, + "NullValueColor": { + "$ref": "#/definitions/DataColor" + } + }, + "required": [ + "ColorFillType", + "Colors" + ], + "type": "object" + }, + "ColorsConfiguration": { + "additionalProperties": false, + "properties": { + "CustomColors": { + "items": { + "$ref": "#/definitions/CustomColor" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ColumnConfiguration": { + "additionalProperties": false, + "properties": { + "ColorsConfiguration": { + "$ref": "#/definitions/ColorsConfiguration" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FormatConfiguration": { + "$ref": "#/definitions/FormatConfiguration" + }, + "Role": { + "$ref": "#/definitions/ColumnRole" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "ColumnHierarchy": { + "additionalProperties": false, + "properties": { + "DateTimeHierarchy": { + "$ref": "#/definitions/DateTimeHierarchy" + }, + "ExplicitHierarchy": { + "$ref": "#/definitions/ExplicitHierarchy" + }, + "PredefinedHierarchy": { + "$ref": "#/definitions/PredefinedHierarchy" + } + }, + "type": "object" + }, + "ColumnIdentifier": { + "additionalProperties": false, + "properties": { + "ColumnName": { + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ColumnName", + "DataSetIdentifier" + ], + "type": "object" + }, + "ColumnRole": { + "enum": [ + "DIMENSION", + "MEASURE" + ], + "type": "string" + }, + "ColumnSort": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "SortBy": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "Direction", + "SortBy" + ], + "type": "object" + }, + "ColumnTooltipItem": { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Label": { + "type": "string" + }, + "TooltipTarget": { + "$ref": "#/definitions/TooltipTarget" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "ComboChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "BarValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "LineValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ComboChartConfiguration": { + "additionalProperties": false, + "properties": { + "BarDataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "BarsArrangement": { + "$ref": "#/definitions/BarsArrangement" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/ComboChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "LineDataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SecondaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "SecondaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SingleAxisOptions": { + "$ref": "#/definitions/SingleAxisOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/ComboChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "ComboChartFieldWells": { + "additionalProperties": false, + "properties": { + "ComboChartAggregatedFieldWells": { + "$ref": "#/definitions/ComboChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "ComboChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ComboChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/ComboChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "CommitMode": { + "enum": [ + "AUTO", + "MANUAL" + ], + "type": "string" + }, + "ComparisonConfiguration": { + "additionalProperties": false, + "properties": { + "ComparisonFormat": { + "$ref": "#/definitions/ComparisonFormatConfiguration" + }, + "ComparisonMethod": { + "$ref": "#/definitions/ComparisonMethod" + } + }, + "type": "object" + }, + "ComparisonFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NumberDisplayFormatConfiguration": { + "$ref": "#/definitions/NumberDisplayFormatConfiguration" + }, + "PercentageDisplayFormatConfiguration": { + "$ref": "#/definitions/PercentageDisplayFormatConfiguration" + } + }, + "type": "object" + }, + "ComparisonMethod": { + "enum": [ + "DIFFERENCE", + "PERCENT_DIFFERENCE", + "PERCENT" + ], + "type": "string" + }, + "Computation": { + "additionalProperties": false, + "properties": { + "Forecast": { + "$ref": "#/definitions/ForecastComputation" + }, + "GrowthRate": { + "$ref": "#/definitions/GrowthRateComputation" + }, + "MaximumMinimum": { + "$ref": "#/definitions/MaximumMinimumComputation" + }, + "MetricComparison": { + "$ref": "#/definitions/MetricComparisonComputation" + }, + "PeriodOverPeriod": { + "$ref": "#/definitions/PeriodOverPeriodComputation" + }, + "PeriodToDate": { + "$ref": "#/definitions/PeriodToDateComputation" + }, + "TopBottomMovers": { + "$ref": "#/definitions/TopBottomMoversComputation" + }, + "TopBottomRanked": { + "$ref": "#/definitions/TopBottomRankedComputation" + }, + "TotalAggregation": { + "$ref": "#/definitions/TotalAggregationComputation" + }, + "UniqueValues": { + "$ref": "#/definitions/UniqueValuesComputation" + } + }, + "type": "object" + }, + "ConditionalFormattingColor": { + "additionalProperties": false, + "properties": { + "Gradient": { + "$ref": "#/definitions/ConditionalFormattingGradientColor" + }, + "Solid": { + "$ref": "#/definitions/ConditionalFormattingSolidColor" + } + }, + "type": "object" + }, + "ConditionalFormattingCustomIconCondition": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DisplayConfiguration": { + "$ref": "#/definitions/ConditionalFormattingIconDisplayConfiguration" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "IconOptions": { + "$ref": "#/definitions/ConditionalFormattingCustomIconOptions" + } + }, + "required": [ + "Expression", + "IconOptions" + ], + "type": "object" + }, + "ConditionalFormattingCustomIconOptions": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/Icon" + }, + "UnicodeIcon": { + "pattern": "^[^\\u0000-\\u00FF]$", + "type": "string" + } + }, + "type": "object" + }, + "ConditionalFormattingGradientColor": { + "additionalProperties": false, + "properties": { + "Color": { + "$ref": "#/definitions/GradientColor" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Color", + "Expression" + ], + "type": "object" + }, + "ConditionalFormattingIcon": { + "additionalProperties": false, + "properties": { + "CustomCondition": { + "$ref": "#/definitions/ConditionalFormattingCustomIconCondition" + }, + "IconSet": { + "$ref": "#/definitions/ConditionalFormattingIconSet" + } + }, + "type": "object" + }, + "ConditionalFormattingIconDisplayConfiguration": { + "additionalProperties": false, + "properties": { + "IconDisplayOption": { + "$ref": "#/definitions/ConditionalFormattingIconDisplayOption" + } + }, + "type": "object" + }, + "ConditionalFormattingIconDisplayOption": { + "enum": [ + "ICON_ONLY" + ], + "type": "string" + }, + "ConditionalFormattingIconSet": { + "additionalProperties": false, + "properties": { + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "IconSetType": { + "$ref": "#/definitions/ConditionalFormattingIconSetType" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "ConditionalFormattingIconSetType": { + "enum": [ + "PLUS_MINUS", + "CHECK_X", + "THREE_COLOR_ARROW", + "THREE_GRAY_ARROW", + "CARET_UP_MINUS_DOWN", + "THREE_SHAPE", + "THREE_CIRCLE", + "FLAGS", + "BARS", + "FOUR_COLOR_ARROW", + "FOUR_GRAY_ARROW" + ], + "type": "string" + }, + "ConditionalFormattingSolidColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "ContextMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "ContributionAnalysisDefault": { + "additionalProperties": false, + "properties": { + "ContributorDimensions": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "MeasureFieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ContributorDimensions", + "MeasureFieldId" + ], + "type": "object" + }, + "CrossDatasetTypes": { + "enum": [ + "ALL_DATASETS", + "SINGLE_DATASET" + ], + "type": "string" + }, + "CurrencyDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumberScale": { + "$ref": "#/definitions/NumberScale" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Symbol": { + "pattern": "^[A-Z]{3}$", + "type": "string" + } + }, + "type": "object" + }, + "CustomActionFilterOperation": { + "additionalProperties": false, + "properties": { + "SelectedFieldsConfiguration": { + "$ref": "#/definitions/FilterOperationSelectedFieldsConfiguration" + }, + "TargetVisualsConfiguration": { + "$ref": "#/definitions/FilterOperationTargetVisualsConfiguration" + } + }, + "required": [ + "SelectedFieldsConfiguration", + "TargetVisualsConfiguration" + ], + "type": "object" + }, + "CustomActionNavigationOperation": { + "additionalProperties": false, + "properties": { + "LocalNavigationConfiguration": { + "$ref": "#/definitions/LocalNavigationConfiguration" + } + }, + "type": "object" + }, + "CustomActionSetParametersOperation": { + "additionalProperties": false, + "properties": { + "ParameterValueConfigurations": { + "items": { + "$ref": "#/definitions/SetParameterValueConfiguration" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "ParameterValueConfigurations" + ], + "type": "object" + }, + "CustomActionURLOperation": { + "additionalProperties": false, + "properties": { + "URLTarget": { + "$ref": "#/definitions/URLTargetConfiguration" + }, + "URLTemplate": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "URLTarget", + "URLTemplate" + ], + "type": "object" + }, + "CustomColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "SpecialValue": { + "$ref": "#/definitions/SpecialValue" + } + }, + "required": [ + "Color" + ], + "type": "object" + }, + "CustomContentConfiguration": { + "additionalProperties": false, + "properties": { + "ContentType": { + "$ref": "#/definitions/CustomContentType" + }, + "ContentUrl": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ImageScaling": { + "$ref": "#/definitions/CustomContentImageScalingConfiguration" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + } + }, + "type": "object" + }, + "CustomContentImageScalingConfiguration": { + "enum": [ + "FIT_TO_HEIGHT", + "FIT_TO_WIDTH", + "DO_NOT_SCALE", + "SCALE_TO_VISUAL" + ], + "type": "string" + }, + "CustomContentType": { + "enum": [ + "IMAGE", + "OTHER_EMBEDDED_CONTENT" + ], + "type": "string" + }, + "CustomContentVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/CustomContentConfiguration" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "CustomFilterConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValue": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "CustomFilterListConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "CustomNarrativeOptions": { + "additionalProperties": false, + "properties": { + "Narrative": { + "maxLength": 150000, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Narrative" + ], + "type": "object" + }, + "CustomParameterValues": { + "additionalProperties": false, + "properties": { + "DateTimeValues": { + "items": { + "format": "date-time", + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "DecimalValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "IntegerValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "StringValues": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "CustomValuesConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValues": { + "$ref": "#/definitions/CustomParameterValues" + }, + "IncludeNullValue": { + "type": "boolean" + } + }, + "required": [ + "CustomValues" + ], + "type": "object" + }, + "DashboardBehavior": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "DashboardError": { + "additionalProperties": false, + "description": "

Dashboard error.

", + "properties": { + "Message": { + "description": "

Message.

", + "pattern": "\\S", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/DashboardErrorType" + }, + "ViolatedEntities": { + "description": "

Lists the violated entities that caused the dashboard error.

", + "items": { + "$ref": "#/definitions/Entity" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DashboardErrorType": { + "enum": [ + "ACCESS_DENIED", + "SOURCE_NOT_FOUND", + "DATA_SET_NOT_FOUND", + "INTERNAL_FAILURE", + "PARAMETER_VALUE_INCOMPATIBLE", + "PARAMETER_TYPE_INVALID", + "PARAMETER_NOT_FOUND", + "COLUMN_TYPE_MISMATCH", + "COLUMN_GEOGRAPHIC_ROLE_MISMATCH", + "COLUMN_REPLACEMENT_MISSING" + ], + "type": "string" + }, + "DashboardPublishOptions": { + "additionalProperties": false, + "description": "

Dashboard publish options.

", + "properties": { + "AdHocFilteringOption": { + "$ref": "#/definitions/AdHocFilteringOption" + }, + "DataPointDrillUpDownOption": { + "$ref": "#/definitions/DataPointDrillUpDownOption" + }, + "DataPointMenuLabelOption": { + "$ref": "#/definitions/DataPointMenuLabelOption" + }, + "DataPointTooltipOption": { + "$ref": "#/definitions/DataPointTooltipOption" + }, + "ExportToCSVOption": { + "$ref": "#/definitions/ExportToCSVOption" + }, + "ExportWithHiddenFieldsOption": { + "$ref": "#/definitions/ExportWithHiddenFieldsOption" + }, + "SheetControlsOption": { + "$ref": "#/definitions/SheetControlsOption" + }, + "SheetLayoutElementMaximizationOption": { + "$ref": "#/definitions/SheetLayoutElementMaximizationOption" + }, + "VisualAxisSortOption": { + "$ref": "#/definitions/VisualAxisSortOption" + }, + "VisualMenuOption": { + "$ref": "#/definitions/VisualMenuOption" + }, + "VisualPublishOptions": { + "$ref": "#/definitions/DashboardVisualPublishOptions" + } + }, + "type": "object" + }, + "DashboardSourceEntity": { + "additionalProperties": false, + "description": "

Dashboard source entity.

", + "properties": { + "SourceTemplate": { + "$ref": "#/definitions/DashboardSourceTemplate" + } + }, + "type": "object" + }, + "DashboardSourceTemplate": { + "additionalProperties": false, + "description": "

Dashboard source template.

", + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the resource.

", + "type": "string" + }, + "DataSetReferences": { + "description": "

Dataset references.

", + "items": { + "$ref": "#/definitions/DataSetReference" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Arn", + "DataSetReferences" + ], + "type": "object" + }, + "DashboardUIState": { + "enum": [ + "EXPANDED", + "COLLAPSED" + ], + "type": "string" + }, + "DashboardVersion": { + "additionalProperties": false, + "description": "

Dashboard version.

", + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the resource.

", + "type": "string" + }, + "CreatedTime": { + "description": "

The time that this dashboard version was created.

", + "format": "date-time", + "type": "string" + }, + "DataSetArns": { + "description": "

The Amazon Resource Numbers (ARNs) for the datasets that are associated with this\n version of the dashboard.

", + "items": { + "type": "string" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "Description": { + "description": "

Description.

", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Errors": { + "description": "

Errors associated with this dashboard version.

", + "items": { + "$ref": "#/definitions/DashboardError" + }, + "minItems": 1, + "type": "array" + }, + "Sheets": { + "description": "

A list of the associated sheets with the unique identifier and name of each sheet.

", + "items": { + "$ref": "#/definitions/Sheet" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SourceEntityArn": { + "description": "

Source entity ARN.

", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/ResourceStatus" + }, + "ThemeArn": { + "description": "

The ARN of the theme associated with a version of the dashboard.

", + "type": "string" + }, + "VersionNumber": { + "description": "

Version number for this version of the dashboard.

", + "minimum": 1, + "type": "number" + } + }, + "type": "object" + }, + "DashboardVersionDefinition": { + "additionalProperties": false, + "properties": { + "AnalysisDefaults": { + "$ref": "#/definitions/AnalysisDefaults" + }, + "CalculatedFields": { + "items": { + "$ref": "#/definitions/CalculatedField" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + }, + "ColumnConfigurations": { + "items": { + "$ref": "#/definitions/ColumnConfiguration" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "DataSetIdentifierDeclarations": { + "items": { + "$ref": "#/definitions/DataSetIdentifierDeclaration" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + "FilterGroups": { + "items": { + "$ref": "#/definitions/FilterGroup" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "Options": { + "$ref": "#/definitions/AssetOptions" + }, + "ParameterDeclarations": { + "items": { + "$ref": "#/definitions/ParameterDeclaration" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Sheets": { + "items": { + "$ref": "#/definitions/SheetDefinition" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "StaticFiles": { + "items": { + "$ref": "#/definitions/StaticFile" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "DataSetIdentifierDeclarations" + ], + "type": "object" + }, + "DashboardVisualPublishOptions": { + "additionalProperties": false, + "description": "

The visual publish options of a visual in a dashboard

", + "properties": { + "ExportHiddenFieldsOption": { + "$ref": "#/definitions/ExportHiddenFieldsOption" + } + }, + "type": "object" + }, + "DataBarsOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "NegativeColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "PositiveColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "DataColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DataValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "DataFieldSeriesItem": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "type": "string" + }, + "Settings": { + "$ref": "#/definitions/LineChartSeriesSettings" + } + }, + "required": [ + "AxisBinding", + "FieldId" + ], + "type": "object" + }, + "DataLabelContent": { + "enum": [ + "VALUE", + "PERCENT", + "VALUE_AND_PERCENT" + ], + "type": "string" + }, + "DataLabelOptions": { + "additionalProperties": false, + "properties": { + "CategoryLabelVisibility": { + "$ref": "#/definitions/Visibility" + }, + "DataLabelTypes": { + "items": { + "$ref": "#/definitions/DataLabelType" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "LabelColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "LabelContent": { + "$ref": "#/definitions/DataLabelContent" + }, + "LabelFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "MeasureLabelVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Overlap": { + "$ref": "#/definitions/DataLabelOverlap" + }, + "Position": { + "$ref": "#/definitions/DataLabelPosition" + }, + "TotalsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "DataLabelOverlap": { + "enum": [ + "DISABLE_OVERLAP", + "ENABLE_OVERLAP" + ], + "type": "string" + }, + "DataLabelPosition": { + "enum": [ + "INSIDE", + "OUTSIDE", + "LEFT", + "TOP", + "BOTTOM", + "RIGHT" + ], + "type": "string" + }, + "DataLabelType": { + "additionalProperties": false, + "properties": { + "DataPathLabelType": { + "$ref": "#/definitions/DataPathLabelType" + }, + "FieldLabelType": { + "$ref": "#/definitions/FieldLabelType" + }, + "MaximumLabelType": { + "$ref": "#/definitions/MaximumLabelType" + }, + "MinimumLabelType": { + "$ref": "#/definitions/MinimumLabelType" + }, + "RangeEndsLabelType": { + "$ref": "#/definitions/RangeEndsLabelType" + } + }, + "type": "object" + }, + "DataPathColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Element": { + "$ref": "#/definitions/DataPathValue" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Color", + "Element" + ], + "type": "object" + }, + "DataPathLabelType": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "DataPathSort": { + "additionalProperties": false, + "properties": { + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "SortPaths": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Direction", + "SortPaths" + ], + "type": "object" + }, + "DataPathType": { + "additionalProperties": false, + "properties": { + "PivotTableDataPathType": { + "$ref": "#/definitions/PivotTableDataPathType" + } + }, + "type": "object" + }, + "DataPathValue": { + "additionalProperties": false, + "properties": { + "DataPathType": { + "$ref": "#/definitions/DataPathType" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "DataPointDrillUpDownOption": { + "additionalProperties": false, + "description": "

The drill down options for data points in a dashbaord.

", + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "DataPointMenuLabelOption": { + "additionalProperties": false, + "description": "

The data point menu options of a dashboard.

", + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "DataPointTooltipOption": { + "additionalProperties": false, + "description": "

The data point tooltip options.

", + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "DataSetIdentifierDeclaration": { + "additionalProperties": false, + "properties": { + "DataSetArn": { + "type": "string" + }, + "Identifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DataSetArn", + "Identifier" + ], + "type": "object" + }, + "DataSetReference": { + "additionalProperties": false, + "description": "

Dataset reference.

", + "properties": { + "DataSetArn": { + "description": "

Dataset Amazon Resource Name (ARN).

", + "type": "string" + }, + "DataSetPlaceholder": { + "description": "

Dataset placeholder.

", + "pattern": "\\S", + "type": "string" + } + }, + "required": [ + "DataSetArn", + "DataSetPlaceholder" + ], + "type": "object" + }, + "DateAggregationFunction": { + "enum": [ + "COUNT", + "DISTINCT_COUNT", + "MIN", + "MAX" + ], + "type": "string" + }, + "DateAxisOptions": { + "additionalProperties": false, + "properties": { + "MissingDateVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "DateDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DateGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "DateMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/DateAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "DateTimeDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "StaticValues": { + "items": { + "format": "date-time", + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DateTimeFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumericFormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "DateTimeHierarchy": { + "additionalProperties": false, + "properties": { + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "HierarchyId" + ], + "type": "object" + }, + "DateTimeParameter": { + "additionalProperties": false, + "description": "

A date-time parameter.

", + "properties": { + "Name": { + "description": "

A display name for the date-time parameter.

", + "pattern": "\\S", + "type": "string" + }, + "Values": { + "description": "

The values for the date-time parameter.

", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "DateTimeParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/DateTimeDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/DateTimeValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "DateTimePickerControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "DateIconVisibility": { + "$ref": "#/definitions/Visibility" + }, + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "HelperTextVisibility": { + "$ref": "#/definitions/Visibility" + }, + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "DateTimeValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "format": "date-time", + "type": "string" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "DayOfTheWeek": { + "enum": [ + "SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY" + ], + "type": "string" + }, + "DecimalDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DecimalParameter": { + "additionalProperties": false, + "description": "

A decimal parameter.

", + "properties": { + "Name": { + "description": "

A display name for the decimal parameter.

", + "pattern": "\\S", + "type": "string" + }, + "Values": { + "description": "

The values for the decimal parameter.

", + "items": { + "default": 0, + "type": "number" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "DecimalParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/DecimalDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/DecimalValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "DecimalPlacesConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlaces": { + "maximum": 20, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "DecimalPlaces" + ], + "type": "object" + }, + "DecimalValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "default": null, + "type": "number" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "DefaultDateTimePickerControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "Type": { + "$ref": "#/definitions/SheetControlDateTimePickerType" + } + }, + "type": "object" + }, + "DefaultFilterControlConfiguration": { + "additionalProperties": false, + "properties": { + "ControlOptions": { + "$ref": "#/definitions/DefaultFilterControlOptions" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ControlOptions", + "Title" + ], + "type": "object" + }, + "DefaultFilterControlOptions": { + "additionalProperties": false, + "properties": { + "DefaultDateTimePickerOptions": { + "$ref": "#/definitions/DefaultDateTimePickerControlOptions" + }, + "DefaultDropdownOptions": { + "$ref": "#/definitions/DefaultFilterDropDownControlOptions" + }, + "DefaultListOptions": { + "$ref": "#/definitions/DefaultFilterListControlOptions" + }, + "DefaultRelativeDateTimeOptions": { + "$ref": "#/definitions/DefaultRelativeDateTimeControlOptions" + }, + "DefaultSliderOptions": { + "$ref": "#/definitions/DefaultSliderControlOptions" + }, + "DefaultTextAreaOptions": { + "$ref": "#/definitions/DefaultTextAreaControlOptions" + }, + "DefaultTextFieldOptions": { + "$ref": "#/definitions/DefaultTextFieldControlOptions" + } + }, + "type": "object" + }, + "DefaultFilterDropDownControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "type": "object" + }, + "DefaultFilterListControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "type": "object" + }, + "DefaultFreeFormLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultGridLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultInteractiveLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "FreeForm": { + "$ref": "#/definitions/DefaultFreeFormLayoutConfiguration" + }, + "Grid": { + "$ref": "#/definitions/DefaultGridLayoutConfiguration" + } + }, + "type": "object" + }, + "DefaultNewSheetConfiguration": { + "additionalProperties": false, + "properties": { + "InteractiveLayoutConfiguration": { + "$ref": "#/definitions/DefaultInteractiveLayoutConfiguration" + }, + "PaginatedLayoutConfiguration": { + "$ref": "#/definitions/DefaultPaginatedLayoutConfiguration" + }, + "SheetContentType": { + "$ref": "#/definitions/SheetContentType" + } + }, + "type": "object" + }, + "DefaultPaginatedLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "SectionBased": { + "$ref": "#/definitions/DefaultSectionBasedLayoutConfiguration" + } + }, + "type": "object" + }, + "DefaultRelativeDateTimeControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" + } + }, + "type": "object" + }, + "DefaultSectionBasedLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/SectionBasedLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultSliderControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Type": { + "$ref": "#/definitions/SheetControlSliderType" + } + }, + "required": [ + "MaximumValue", + "MinimumValue", + "StepSize" + ], + "type": "object" + }, + "DefaultTextAreaControlOptions": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + } + }, + "type": "object" + }, + "DefaultTextFieldControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + } + }, + "type": "object" + }, + "DestinationParameterValueConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValuesConfiguration": { + "$ref": "#/definitions/CustomValuesConfiguration" + }, + "SelectAllValueOptions": { + "$ref": "#/definitions/SelectAllValueOptions" + }, + "SourceColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SourceField": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "SourceParameterName": { + "type": "string" + } + }, + "type": "object" + }, + "DigitGroupingStyle": { + "enum": [ + "DEFAULT", + "LAKHS" + ], + "type": "string" + }, + "DimensionField": { + "additionalProperties": false, + "properties": { + "CategoricalDimensionField": { + "$ref": "#/definitions/CategoricalDimensionField" + }, + "DateDimensionField": { + "$ref": "#/definitions/DateDimensionField" + }, + "NumericalDimensionField": { + "$ref": "#/definitions/NumericalDimensionField" + } + }, + "type": "object" + }, + "DonutCenterOptions": { + "additionalProperties": false, + "properties": { + "LabelVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "DonutOptions": { + "additionalProperties": false, + "properties": { + "ArcOptions": { + "$ref": "#/definitions/ArcOptions" + }, + "DonutCenterOptions": { + "$ref": "#/definitions/DonutCenterOptions" + } + }, + "type": "object" + }, + "DrillDownFilter": { + "additionalProperties": false, + "properties": { + "CategoryFilter": { + "$ref": "#/definitions/CategoryDrillDownFilter" + }, + "NumericEqualityFilter": { + "$ref": "#/definitions/NumericEqualityDrillDownFilter" + }, + "TimeRangeFilter": { + "$ref": "#/definitions/TimeRangeDrillDownFilter" + } + }, + "type": "object" + }, + "DropDownControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "SelectAllOptions": { + "$ref": "#/definitions/ListControlSelectAllOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "DynamicDefaultValue": { + "additionalProperties": false, + "properties": { + "DefaultValueColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "GroupNameColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "UserNameColumn": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "DefaultValueColumn" + ], + "type": "object" + }, + "EmptyVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "Entity": { + "additionalProperties": false, + "properties": { + "Path": { + "pattern": "\\S", + "type": "string" + } + }, + "type": "object" + }, + "ExcludePeriodConfiguration": { + "additionalProperties": false, + "properties": { + "Amount": { + "default": null, + "type": "number" + }, + "Granularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + } + }, + "required": [ + "Amount", + "Granularity" + ], + "type": "object" + }, + "ExplicitHierarchy": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Columns", + "HierarchyId" + ], + "type": "object" + }, + "ExportHiddenFieldsOption": { + "additionalProperties": false, + "description": "

Determines if hidden fields are included in an exported dashboard.

", + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "ExportToCSVOption": { + "additionalProperties": false, + "description": "

Export to .csv option.

", + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "ExportWithHiddenFieldsOption": { + "additionalProperties": false, + "description": "

Determines whether or not hidden fields are visible on exported dashbaords.

", + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "FieldBasedTooltip": { + "additionalProperties": false, + "properties": { + "AggregationVisibility": { + "$ref": "#/definitions/Visibility" + }, + "TooltipFields": { + "items": { + "$ref": "#/definitions/TooltipItem" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "TooltipTitleType": { + "$ref": "#/definitions/TooltipTitleType" + } + }, + "type": "object" + }, + "FieldLabelType": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "FieldSeriesItem": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Settings": { + "$ref": "#/definitions/LineChartSeriesSettings" + } + }, + "required": [ + "AxisBinding", + "FieldId" + ], + "type": "object" + }, + "FieldSort": { + "additionalProperties": false, + "properties": { + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Direction", + "FieldId" + ], + "type": "object" + }, + "FieldSortOptions": { + "additionalProperties": false, + "properties": { + "ColumnSort": { + "$ref": "#/definitions/ColumnSort" + }, + "FieldSort": { + "$ref": "#/definitions/FieldSort" + } + }, + "type": "object" + }, + "FieldTooltipItem": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Label": { + "type": "string" + }, + "TooltipTarget": { + "$ref": "#/definitions/TooltipTarget" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "FilledMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Geospatial": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilledMapConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/FilledMapConditionalFormattingOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "ConditionalFormattingOptions" + ], + "type": "object" + }, + "FilledMapConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Shape": { + "$ref": "#/definitions/FilledMapShapeConditionalFormatting" + } + }, + "required": [ + "Shape" + ], + "type": "object" + }, + "FilledMapConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/FilledMapFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "MapStyleOptions": { + "$ref": "#/definitions/GeospatialMapStyleOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/FilledMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "WindowOptions": { + "$ref": "#/definitions/GeospatialWindowOptions" + } + }, + "type": "object" + }, + "FilledMapFieldWells": { + "additionalProperties": false, + "properties": { + "FilledMapAggregatedFieldWells": { + "$ref": "#/definitions/FilledMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "FilledMapShapeConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Format": { + "$ref": "#/definitions/ShapeConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "FilledMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilledMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/FilledMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/FilledMapConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "CategoryFilter": { + "$ref": "#/definitions/CategoryFilter" + }, + "NestedFilter": { + "$ref": "#/definitions/NestedFilter" + }, + "NumericEqualityFilter": { + "$ref": "#/definitions/NumericEqualityFilter" + }, + "NumericRangeFilter": { + "$ref": "#/definitions/NumericRangeFilter" + }, + "RelativeDatesFilter": { + "$ref": "#/definitions/RelativeDatesFilter" + }, + "TimeEqualityFilter": { + "$ref": "#/definitions/TimeEqualityFilter" + }, + "TimeRangeFilter": { + "$ref": "#/definitions/TimeRangeFilter" + }, + "TopBottomFilter": { + "$ref": "#/definitions/TopBottomFilter" + } + }, + "type": "object" + }, + "FilterControl": { + "additionalProperties": false, + "properties": { + "CrossSheet": { + "$ref": "#/definitions/FilterCrossSheetControl" + }, + "DateTimePicker": { + "$ref": "#/definitions/FilterDateTimePickerControl" + }, + "Dropdown": { + "$ref": "#/definitions/FilterDropDownControl" + }, + "List": { + "$ref": "#/definitions/FilterListControl" + }, + "RelativeDateTime": { + "$ref": "#/definitions/FilterRelativeDateTimeControl" + }, + "Slider": { + "$ref": "#/definitions/FilterSliderControl" + }, + "TextArea": { + "$ref": "#/definitions/FilterTextAreaControl" + }, + "TextField": { + "$ref": "#/definitions/FilterTextFieldControl" + } + }, + "type": "object" + }, + "FilterCrossSheetControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId" + ], + "type": "object" + }, + "FilterDateTimePickerControl": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlDateTimePickerType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterDropDownControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterGroup": { + "additionalProperties": false, + "properties": { + "CrossDataset": { + "$ref": "#/definitions/CrossDatasetTypes" + }, + "FilterGroupId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "ScopeConfiguration": { + "$ref": "#/definitions/FilterScopeConfiguration" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + } + }, + "required": [ + "CrossDataset", + "FilterGroupId", + "Filters", + "ScopeConfiguration" + ], + "type": "object" + }, + "FilterListConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator" + ], + "type": "object" + }, + "FilterListControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterNullOption": { + "enum": [ + "ALL_VALUES", + "NULLS_ONLY", + "NON_NULLS_ONLY" + ], + "type": "string" + }, + "FilterOperationSelectedFieldsConfiguration": { + "additionalProperties": false, + "properties": { + "SelectedColumns": { + "description": "

The selected columns of a dataset.

", + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "SelectedFieldOptions": { + "$ref": "#/definitions/SelectedFieldOptions" + }, + "SelectedFields": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "FilterOperationTargetVisualsConfiguration": { + "additionalProperties": false, + "properties": { + "SameSheetTargetVisualConfiguration": { + "$ref": "#/definitions/SameSheetTargetVisualConfiguration" + } + }, + "type": "object" + }, + "FilterRelativeDateTimeControl": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterScopeConfiguration": { + "additionalProperties": false, + "properties": { + "AllSheets": { + "$ref": "#/definitions/AllSheetsFilterScopeConfiguration" + }, + "SelectedSheets": { + "$ref": "#/definitions/SelectedSheetsFilterScopeConfiguration" + } + }, + "type": "object" + }, + "FilterSelectableValues": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilterSliderControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlSliderType" + } + }, + "required": [ + "FilterControlId", + "MaximumValue", + "MinimumValue", + "SourceFilterId", + "StepSize", + "Title" + ], + "type": "object" + }, + "FilterTextAreaControl": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterTextFieldControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterVisualScope": { + "enum": [ + "ALL_VISUALS", + "SELECTED_VISUALS" + ], + "type": "string" + }, + "FontConfiguration": { + "additionalProperties": false, + "properties": { + "FontColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FontDecoration": { + "$ref": "#/definitions/FontDecoration" + }, + "FontFamily": { + "type": "string" + }, + "FontSize": { + "$ref": "#/definitions/FontSize" + }, + "FontStyle": { + "$ref": "#/definitions/FontStyle" + }, + "FontWeight": { + "$ref": "#/definitions/FontWeight" + } + }, + "type": "object" + }, + "FontDecoration": { + "enum": [ + "UNDERLINE", + "NONE" + ], + "type": "string" + }, + "FontSize": { + "additionalProperties": false, + "properties": { + "Absolute": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "Relative": { + "$ref": "#/definitions/RelativeFontSize" + } + }, + "type": "object" + }, + "FontStyle": { + "enum": [ + "NORMAL", + "ITALIC" + ], + "type": "string" + }, + "FontWeight": { + "additionalProperties": false, + "properties": { + "Name": { + "$ref": "#/definitions/FontWeightName" + } + }, + "type": "object" + }, + "FontWeightName": { + "enum": [ + "NORMAL", + "BOLD" + ], + "type": "string" + }, + "ForecastComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "CustomSeasonalityValue": { + "default": null, + "maximum": 180, + "minimum": 1, + "type": "number" + }, + "LowerBoundary": { + "default": null, + "type": "number" + }, + "Name": { + "type": "string" + }, + "PeriodsBackward": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "PeriodsForward": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "PredictionInterval": { + "maximum": 95, + "minimum": 50, + "type": "number" + }, + "Seasonality": { + "$ref": "#/definitions/ForecastComputationSeasonality" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "UpperBoundary": { + "default": null, + "type": "number" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "ForecastComputationSeasonality": { + "enum": [ + "AUTOMATIC", + "CUSTOM" + ], + "type": "string" + }, + "ForecastConfiguration": { + "additionalProperties": false, + "properties": { + "ForecastProperties": { + "$ref": "#/definitions/TimeBasedForecastProperties" + }, + "Scenario": { + "$ref": "#/definitions/ForecastScenario" + } + }, + "type": "object" + }, + "ForecastScenario": { + "additionalProperties": false, + "properties": { + "WhatIfPointScenario": { + "$ref": "#/definitions/WhatIfPointScenario" + }, + "WhatIfRangeScenario": { + "$ref": "#/definitions/WhatIfRangeScenario" + } + }, + "type": "object" + }, + "FormatConfiguration": { + "additionalProperties": false, + "properties": { + "DateTimeFormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + }, + "NumberFormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + }, + "StringFormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + } + }, + "type": "object" + }, + "FreeFormLayoutCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "ScreenCanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutScreenCanvasSizeOptions" + } + }, + "type": "object" + }, + "FreeFormLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" + }, + "Elements": { + "items": { + "$ref": "#/definitions/FreeFormLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "FreeFormLayoutElement": { + "additionalProperties": false, + "properties": { + "BackgroundStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBackgroundStyle" + }, + "BorderStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" + }, + "ElementId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ElementType": { + "$ref": "#/definitions/LayoutElementType" + }, + "Height": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "LoadingAnimation": { + "$ref": "#/definitions/LoadingAnimation" + }, + "RenderingRules": { + "items": { + "$ref": "#/definitions/SheetElementRenderingRule" + }, + "maxItems": 10000, + "minItems": 0, + "type": "array" + }, + "SelectedBorderStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "XAxisLocation": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "YAxisLocation": { + "description": "String based length that is composed of value and unit in px with Integer.MAX_VALUE as maximum value", + "type": "string" + } + }, + "required": [ + "ElementId", + "ElementType", + "Height", + "Width", + "XAxisLocation", + "YAxisLocation" + ], + "type": "object" + }, + "FreeFormLayoutElementBackgroundStyle": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "FreeFormLayoutElementBorderStyle": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "FreeFormLayoutScreenCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "OptimizedViewPortWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "OptimizedViewPortWidth" + ], + "type": "object" + }, + "FreeFormSectionLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "Elements": { + "items": { + "$ref": "#/definitions/FreeFormLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "FunnelChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FunnelChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "DataLabelOptions": { + "$ref": "#/definitions/FunnelChartDataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/FunnelChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/FunnelChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "FunnelChartDataLabelOptions": { + "additionalProperties": false, + "properties": { + "CategoryLabelVisibility": { + "$ref": "#/definitions/Visibility" + }, + "LabelColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "LabelFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "MeasureDataLabelStyle": { + "$ref": "#/definitions/FunnelChartMeasureDataLabelStyle" + }, + "MeasureLabelVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Position": { + "$ref": "#/definitions/DataLabelPosition" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "FunnelChartFieldWells": { + "additionalProperties": false, + "properties": { + "FunnelChartAggregatedFieldWells": { + "$ref": "#/definitions/FunnelChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "FunnelChartMeasureDataLabelStyle": { + "enum": [ + "VALUE_ONLY", + "PERCENTAGE_BY_FIRST_STAGE", + "PERCENTAGE_BY_PREVIOUS_STAGE", + "VALUE_AND_PERCENTAGE_BY_FIRST_STAGE", + "VALUE_AND_PERCENTAGE_BY_PREVIOUS_STAGE" + ], + "type": "string" + }, + "FunnelChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FunnelChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/FunnelChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GaugeChartArcConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ForegroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "GaugeChartColorConfiguration": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "ForegroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "type": "object" + }, + "GaugeChartConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/GaugeChartConditionalFormattingOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GaugeChartConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Arc": { + "$ref": "#/definitions/GaugeChartArcConditionalFormatting" + }, + "PrimaryValue": { + "$ref": "#/definitions/GaugeChartPrimaryValueConditionalFormatting" + } + }, + "type": "object" + }, + "GaugeChartConfiguration": { + "additionalProperties": false, + "properties": { + "ColorConfiguration": { + "$ref": "#/definitions/GaugeChartColorConfiguration" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/GaugeChartFieldWells" + }, + "GaugeChartOptions": { + "$ref": "#/definitions/GaugeChartOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "TooltipOptions": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "GaugeChartFieldWells": { + "additionalProperties": false, + "properties": { + "TargetValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GaugeChartOptions": { + "additionalProperties": false, + "properties": { + "Arc": { + "$ref": "#/definitions/ArcConfiguration" + }, + "ArcAxis": { + "$ref": "#/definitions/ArcAxisConfiguration" + }, + "Comparison": { + "$ref": "#/definitions/ComparisonConfiguration" + }, + "PrimaryValueDisplayType": { + "$ref": "#/definitions/PrimaryValueDisplayType" + }, + "PrimaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + } + }, + "type": "object" + }, + "GaugeChartPrimaryValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "GaugeChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/GaugeChartConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/GaugeChartConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GeospatialCategoricalColor": { + "additionalProperties": false, + "properties": { + "CategoryDataColors": { + "items": { + "$ref": "#/definitions/GeospatialCategoricalDataColor" + }, + "type": "array" + }, + "DefaultOpacity": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "NullDataSettings": { + "$ref": "#/definitions/GeospatialNullDataSettings" + }, + "NullDataVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "CategoryDataColors" + ], + "type": "object" + }, + "GeospatialCategoricalDataColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "DataValue": { + "type": "string" + } + }, + "required": [ + "Color", + "DataValue" + ], + "type": "object" + }, + "GeospatialCircleRadius": { + "additionalProperties": false, + "properties": { + "Radius": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "GeospatialCircleSymbolStyle": { + "additionalProperties": false, + "properties": { + "CircleRadius": { + "$ref": "#/definitions/GeospatialCircleRadius" + }, + "FillColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "StrokeColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "StrokeWidth": { + "$ref": "#/definitions/GeospatialLineWidth" + } + }, + "type": "object" + }, + "GeospatialColor": { + "additionalProperties": false, + "properties": { + "Categorical": { + "$ref": "#/definitions/GeospatialCategoricalColor" + }, + "Gradient": { + "$ref": "#/definitions/GeospatialGradientColor" + }, + "Solid": { + "$ref": "#/definitions/GeospatialSolidColor" + } + }, + "type": "object" + }, + "GeospatialColorState": { + "description": "Defines view state of the color", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "GeospatialCoordinateBounds": { + "additionalProperties": false, + "properties": { + "East": { + "maximum": 1800, + "minimum": -1800, + "type": "number" + }, + "North": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "South": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "West": { + "maximum": 1800, + "minimum": -1800, + "type": "number" + } + }, + "required": [ + "East", + "North", + "South", + "West" + ], + "type": "object" + }, + "GeospatialDataSourceItem": { + "additionalProperties": false, + "properties": { + "StaticFileDataSource": { + "$ref": "#/definitions/GeospatialStaticFileSource" + } + }, + "type": "object" + }, + "GeospatialGradientColor": { + "additionalProperties": false, + "properties": { + "DefaultOpacity": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "NullDataSettings": { + "$ref": "#/definitions/GeospatialNullDataSettings" + }, + "NullDataVisibility": { + "$ref": "#/definitions/Visibility" + }, + "StepColors": { + "items": { + "$ref": "#/definitions/GeospatialGradientStepColor" + }, + "maxItems": 3, + "minItems": 2, + "type": "array" + } + }, + "required": [ + "StepColors" + ], + "type": "object" + }, + "GeospatialGradientStepColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "DataValue": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Color", + "DataValue" + ], + "type": "object" + }, + "GeospatialHeatmapColorScale": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/GeospatialHeatmapDataColor" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + } + }, + "type": "object" + }, + "GeospatialHeatmapConfiguration": { + "additionalProperties": false, + "properties": { + "HeatmapColor": { + "$ref": "#/definitions/GeospatialHeatmapColorScale" + } + }, + "type": "object" + }, + "GeospatialHeatmapDataColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "required": [ + "Color" + ], + "type": "object" + }, + "GeospatialLayerColorField": { + "additionalProperties": false, + "properties": { + "ColorDimensionsFields": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "ColorValuesFields": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GeospatialLayerDefinition": { + "additionalProperties": false, + "properties": { + "LineLayer": { + "$ref": "#/definitions/GeospatialLineLayer" + }, + "PointLayer": { + "$ref": "#/definitions/GeospatialPointLayer" + }, + "PolygonLayer": { + "$ref": "#/definitions/GeospatialPolygonLayer" + } + }, + "type": "object" + }, + "GeospatialLayerItem": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/LayerCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "DataSource": { + "$ref": "#/definitions/GeospatialDataSourceItem" + }, + "JoinDefinition": { + "$ref": "#/definitions/GeospatialLayerJoinDefinition" + }, + "Label": { + "type": "string" + }, + "LayerDefinition": { + "$ref": "#/definitions/GeospatialLayerDefinition" + }, + "LayerId": { + "type": "string" + }, + "LayerType": { + "$ref": "#/definitions/GeospatialLayerType" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "LayerId" + ], + "type": "object" + }, + "GeospatialLayerJoinDefinition": { + "additionalProperties": false, + "properties": { + "ColorField": { + "$ref": "#/definitions/GeospatialLayerColorField" + }, + "DatasetKeyField": { + "$ref": "#/definitions/UnaggregatedField" + }, + "ShapeKeyField": { + "type": "string" + } + }, + "type": "object" + }, + "GeospatialLayerMapConfiguration": { + "additionalProperties": false, + "properties": { + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "MapLayers": { + "items": { + "$ref": "#/definitions/GeospatialLayerItem" + }, + "type": "array" + }, + "MapState": { + "$ref": "#/definitions/GeospatialMapState" + }, + "MapStyle": { + "$ref": "#/definitions/GeospatialMapStyle" + } + }, + "type": "object" + }, + "GeospatialLayerType": { + "enum": [ + "POINT", + "LINE", + "POLYGON" + ], + "type": "string" + }, + "GeospatialLineLayer": { + "additionalProperties": false, + "properties": { + "Style": { + "$ref": "#/definitions/GeospatialLineStyle" + } + }, + "required": [ + "Style" + ], + "type": "object" + }, + "GeospatialLineStyle": { + "additionalProperties": false, + "properties": { + "LineSymbolStyle": { + "$ref": "#/definitions/GeospatialLineSymbolStyle" + } + }, + "type": "object" + }, + "GeospatialLineSymbolStyle": { + "additionalProperties": false, + "properties": { + "FillColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "LineWidth": { + "$ref": "#/definitions/GeospatialLineWidth" + } + }, + "type": "object" + }, + "GeospatialLineWidth": { + "additionalProperties": false, + "properties": { + "LineWidth": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "GeospatialMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Geospatial": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GeospatialMapConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/GeospatialMapFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "MapStyleOptions": { + "$ref": "#/definitions/GeospatialMapStyleOptions" + }, + "PointStyleOptions": { + "$ref": "#/definitions/GeospatialPointStyleOptions" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "WindowOptions": { + "$ref": "#/definitions/GeospatialWindowOptions" + } + }, + "type": "object" + }, + "GeospatialMapFieldWells": { + "additionalProperties": false, + "properties": { + "GeospatialMapAggregatedFieldWells": { + "$ref": "#/definitions/GeospatialMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "GeospatialMapNavigation": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "GeospatialMapState": { + "additionalProperties": false, + "properties": { + "Bounds": { + "$ref": "#/definitions/GeospatialCoordinateBounds" + }, + "MapNavigation": { + "$ref": "#/definitions/GeospatialMapNavigation" + } + }, + "type": "object" + }, + "GeospatialMapStyle": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "BaseMapStyle": { + "$ref": "#/definitions/BaseMapStyleType" + }, + "BaseMapVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "GeospatialMapStyleOptions": { + "additionalProperties": false, + "properties": { + "BaseMapStyle": { + "$ref": "#/definitions/BaseMapStyleType" + } + }, + "type": "object" + }, + "GeospatialMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/GeospatialMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GeospatialNullDataSettings": { + "additionalProperties": false, + "properties": { + "SymbolStyle": { + "$ref": "#/definitions/GeospatialNullSymbolStyle" + } + }, + "required": [ + "SymbolStyle" + ], + "type": "object" + }, + "GeospatialNullSymbolStyle": { + "additionalProperties": false, + "properties": { + "FillColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "StrokeColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "StrokeWidth": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "GeospatialPointLayer": { + "additionalProperties": false, + "properties": { + "Style": { + "$ref": "#/definitions/GeospatialPointStyle" + } + }, + "required": [ + "Style" + ], + "type": "object" + }, + "GeospatialPointStyle": { + "additionalProperties": false, + "properties": { + "CircleSymbolStyle": { + "$ref": "#/definitions/GeospatialCircleSymbolStyle" + } + }, + "type": "object" + }, + "GeospatialPointStyleOptions": { + "additionalProperties": false, + "properties": { + "ClusterMarkerConfiguration": { + "$ref": "#/definitions/ClusterMarkerConfiguration" + }, + "HeatmapConfiguration": { + "$ref": "#/definitions/GeospatialHeatmapConfiguration" + }, + "SelectedPointStyle": { + "$ref": "#/definitions/GeospatialSelectedPointStyle" + } + }, + "type": "object" + }, + "GeospatialPolygonLayer": { + "additionalProperties": false, + "properties": { + "Style": { + "$ref": "#/definitions/GeospatialPolygonStyle" + } + }, + "required": [ + "Style" + ], + "type": "object" + }, + "GeospatialPolygonStyle": { + "additionalProperties": false, + "properties": { + "PolygonSymbolStyle": { + "$ref": "#/definitions/GeospatialPolygonSymbolStyle" + } + }, + "type": "object" + }, + "GeospatialPolygonSymbolStyle": { + "additionalProperties": false, + "properties": { + "FillColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "StrokeColor": { + "$ref": "#/definitions/GeospatialColor" + }, + "StrokeWidth": { + "$ref": "#/definitions/GeospatialLineWidth" + } + }, + "type": "object" + }, + "GeospatialSelectedPointStyle": { + "enum": [ + "POINT", + "CLUSTER", + "HEATMAP" + ], + "type": "string" + }, + "GeospatialSolidColor": { + "additionalProperties": false, + "description": "Describes the properties for a solid color", + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "State": { + "$ref": "#/definitions/GeospatialColorState" + } + }, + "required": [ + "Color" + ], + "type": "object" + }, + "GeospatialStaticFileSource": { + "additionalProperties": false, + "properties": { + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "GeospatialWindowOptions": { + "additionalProperties": false, + "properties": { + "Bounds": { + "$ref": "#/definitions/GeospatialCoordinateBounds" + }, + "MapZoomMode": { + "$ref": "#/definitions/MapZoomMode" + } + }, + "type": "object" + }, + "GlobalTableBorderOptions": { + "additionalProperties": false, + "properties": { + "SideSpecificBorder": { + "$ref": "#/definitions/TableSideBorderOptions" + }, + "UniformBorder": { + "$ref": "#/definitions/TableBorderOptions" + } + }, + "type": "object" + }, + "GradientColor": { + "additionalProperties": false, + "properties": { + "Stops": { + "items": { + "$ref": "#/definitions/GradientStop" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GradientStop": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DataValue": { + "default": null, + "type": "number" + }, + "GradientOffset": { + "default": 0, + "type": "number" + } + }, + "required": [ + "GradientOffset" + ], + "type": "object" + }, + "GridLayoutCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "ScreenCanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutScreenCanvasSizeOptions" + } + }, + "type": "object" + }, + "GridLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutCanvasSizeOptions" + }, + "Elements": { + "items": { + "$ref": "#/definitions/GridLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "GridLayoutElement": { + "additionalProperties": false, + "properties": { + "ColumnIndex": { + "maximum": 35, + "minimum": 0, + "type": "number" + }, + "ColumnSpan": { + "maximum": 36, + "minimum": 1, + "type": "number" + }, + "ElementId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ElementType": { + "$ref": "#/definitions/LayoutElementType" + }, + "RowIndex": { + "maximum": 9009, + "minimum": 0, + "type": "number" + }, + "RowSpan": { + "maximum": 21, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "ColumnSpan", + "ElementId", + "ElementType", + "RowSpan" + ], + "type": "object" + }, + "GridLayoutScreenCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "OptimizedViewPortWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "ResizeOption": { + "$ref": "#/definitions/ResizeOption" + } + }, + "required": [ + "ResizeOption" + ], + "type": "object" + }, + "GrowthRateComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "PeriodSize": { + "default": 0, + "maximum": 52, + "minimum": 2, + "type": "number" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "HeaderFooterSectionConfiguration": { + "additionalProperties": false, + "properties": { + "Layout": { + "$ref": "#/definitions/SectionLayoutConfiguration" + }, + "SectionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/SectionStyle" + } + }, + "required": [ + "Layout", + "SectionId" + ], + "type": "object" + }, + "HeatMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Rows": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HeatMapConfiguration": { + "additionalProperties": false, + "properties": { + "ColorScale": { + "$ref": "#/definitions/ColorScale" + }, + "ColumnLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/HeatMapFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "RowLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/HeatMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + } + }, + "type": "object" + }, + "HeatMapFieldWells": { + "additionalProperties": false, + "properties": { + "HeatMapAggregatedFieldWells": { + "$ref": "#/definitions/HeatMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "HeatMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "HeatMapColumnItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "HeatMapColumnSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "HeatMapRowItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "HeatMapRowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HeatMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/HeatMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "HistogramAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HistogramBinOptions": { + "additionalProperties": false, + "properties": { + "BinCount": { + "$ref": "#/definitions/BinCountOptions" + }, + "BinWidth": { + "$ref": "#/definitions/BinWidthOptions" + }, + "SelectedBinType": { + "$ref": "#/definitions/HistogramBinType" + }, + "StartValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "HistogramBinType": { + "enum": [ + "BIN_COUNT", + "BIN_WIDTH" + ], + "type": "string" + }, + "HistogramConfiguration": { + "additionalProperties": false, + "properties": { + "BinOptions": { + "$ref": "#/definitions/HistogramBinOptions" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/HistogramFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "XAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "XAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "YAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + } + }, + "type": "object" + }, + "HistogramFieldWells": { + "additionalProperties": false, + "properties": { + "HistogramAggregatedFieldWells": { + "$ref": "#/definitions/HistogramAggregatedFieldWells" + } + }, + "type": "object" + }, + "HistogramVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/HistogramConfiguration" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "HorizontalTextAlignment": { + "enum": [ + "LEFT", + "CENTER", + "RIGHT", + "AUTO" + ], + "type": "string" + }, + "Icon": { + "enum": [ + "CARET_UP", + "CARET_DOWN", + "PLUS", + "MINUS", + "ARROW_UP", + "ARROW_DOWN", + "ARROW_LEFT", + "ARROW_UP_LEFT", + "ARROW_DOWN_LEFT", + "ARROW_RIGHT", + "ARROW_UP_RIGHT", + "ARROW_DOWN_RIGHT", + "FACE_UP", + "FACE_DOWN", + "FACE_FLAT", + "ONE_BAR", + "TWO_BAR", + "THREE_BAR", + "CIRCLE", + "TRIANGLE", + "SQUARE", + "FLAG", + "THUMBS_UP", + "THUMBS_DOWN", + "CHECKMARK", + "X" + ], + "type": "string" + }, + "ImageCustomAction": { + "additionalProperties": false, + "properties": { + "ActionOperations": { + "items": { + "$ref": "#/definitions/ImageCustomActionOperation" + }, + "maxItems": 2, + "minItems": 1, + "type": "array" + }, + "CustomActionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "Trigger": { + "$ref": "#/definitions/ImageCustomActionTrigger" + } + }, + "required": [ + "ActionOperations", + "CustomActionId", + "Name", + "Trigger" + ], + "type": "object" + }, + "ImageCustomActionOperation": { + "additionalProperties": false, + "properties": { + "NavigationOperation": { + "$ref": "#/definitions/CustomActionNavigationOperation" + }, + "SetParametersOperation": { + "$ref": "#/definitions/CustomActionSetParametersOperation" + }, + "URLOperation": { + "$ref": "#/definitions/CustomActionURLOperation" + } + }, + "type": "object" + }, + "ImageCustomActionTrigger": { + "enum": [ + "CLICK", + "MENU" + ], + "type": "string" + }, + "ImageInteractionOptions": { + "additionalProperties": false, + "properties": { + "ImageMenuOption": { + "$ref": "#/definitions/ImageMenuOption" + } + }, + "type": "object" + }, + "ImageMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "ImageStaticFile": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/StaticFileSource" + }, + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "InnerFilter": { + "additionalProperties": false, + "properties": { + "CategoryInnerFilter": { + "$ref": "#/definitions/CategoryInnerFilter" + } + }, + "type": "object" + }, + "InsightConfiguration": { + "additionalProperties": false, + "properties": { + "Computations": { + "items": { + "$ref": "#/definitions/Computation" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "CustomNarrative": { + "$ref": "#/definitions/CustomNarrativeOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + } + }, + "type": "object" + }, + "InsightVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "InsightConfiguration": { + "$ref": "#/definitions/InsightConfiguration" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "IntegerDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "IntegerParameter": { + "additionalProperties": false, + "description": "

An integer parameter.

", + "properties": { + "Name": { + "description": "

The name of the integer parameter.

", + "pattern": "\\S", + "type": "string" + }, + "Values": { + "description": "

The values for the integer parameter.

", + "items": { + "default": 0, + "type": "number" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "IntegerParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/IntegerDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/IntegerValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "IntegerValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "default": null, + "type": "number" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "ItemsLimitConfiguration": { + "additionalProperties": false, + "properties": { + "ItemsLimit": { + "default": null, + "type": "number" + }, + "OtherCategories": { + "$ref": "#/definitions/OtherCategories" + } + }, + "type": "object" + }, + "KPIActualValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIComparisonValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/KPIConditionalFormattingOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPIConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "ActualValue": { + "$ref": "#/definitions/KPIActualValueConditionalFormatting" + }, + "ComparisonValue": { + "$ref": "#/definitions/KPIComparisonValueConditionalFormatting" + }, + "PrimaryValue": { + "$ref": "#/definitions/KPIPrimaryValueConditionalFormatting" + }, + "ProgressBar": { + "$ref": "#/definitions/KPIProgressBarConditionalFormatting" + } + }, + "type": "object" + }, + "KPIConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/KPIFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "KPIOptions": { + "$ref": "#/definitions/KPIOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/KPISortConfiguration" + } + }, + "type": "object" + }, + "KPIFieldWells": { + "additionalProperties": false, + "properties": { + "TargetValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TrendGroups": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPIOptions": { + "additionalProperties": false, + "properties": { + "Comparison": { + "$ref": "#/definitions/ComparisonConfiguration" + }, + "PrimaryValueDisplayType": { + "$ref": "#/definitions/PrimaryValueDisplayType" + }, + "PrimaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "ProgressBar": { + "$ref": "#/definitions/ProgressBarOptions" + }, + "SecondaryValue": { + "$ref": "#/definitions/SecondaryValueOptions" + }, + "SecondaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Sparkline": { + "$ref": "#/definitions/KPISparklineOptions" + }, + "TrendArrows": { + "$ref": "#/definitions/TrendArrowOptions" + }, + "VisualLayoutOptions": { + "$ref": "#/definitions/KPIVisualLayoutOptions" + } + }, + "type": "object" + }, + "KPIPrimaryValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIProgressBarConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ForegroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPISortConfiguration": { + "additionalProperties": false, + "properties": { + "TrendGroupSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPISparklineOptions": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "TooltipVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Type": { + "$ref": "#/definitions/KPISparklineType" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "KPISparklineType": { + "enum": [ + "LINE", + "AREA" + ], + "type": "string" + }, + "KPIVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/KPIConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/KPIConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "KPIVisualLayoutOptions": { + "additionalProperties": false, + "properties": { + "StandardLayout": { + "$ref": "#/definitions/KPIVisualStandardLayout" + } + }, + "type": "object" + }, + "KPIVisualStandardLayout": { + "additionalProperties": false, + "properties": { + "Type": { + "$ref": "#/definitions/KPIVisualStandardLayoutType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "KPIVisualStandardLayoutType": { + "enum": [ + "CLASSIC", + "VERTICAL" + ], + "type": "string" + }, + "LabelOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "LayerCustomAction": { + "additionalProperties": false, + "properties": { + "ActionOperations": { + "items": { + "$ref": "#/definitions/LayerCustomActionOperation" + }, + "maxItems": 2, + "minItems": 1, + "type": "array" + }, + "CustomActionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "Trigger": { + "$ref": "#/definitions/LayerCustomActionTrigger" + } + }, + "required": [ + "ActionOperations", + "CustomActionId", + "Name", + "Trigger" + ], + "type": "object" + }, + "LayerCustomActionOperation": { + "additionalProperties": false, + "properties": { + "FilterOperation": { + "$ref": "#/definitions/CustomActionFilterOperation" + }, + "NavigationOperation": { + "$ref": "#/definitions/CustomActionNavigationOperation" + }, + "SetParametersOperation": { + "$ref": "#/definitions/CustomActionSetParametersOperation" + }, + "URLOperation": { + "$ref": "#/definitions/CustomActionURLOperation" + } + }, + "type": "object" + }, + "LayerCustomActionTrigger": { + "enum": [ + "DATA_POINT_CLICK", + "DATA_POINT_MENU" + ], + "type": "string" + }, + "LayerMapVisual": { + "additionalProperties": false, + "properties": { + "ChartConfiguration": { + "$ref": "#/definitions/GeospatialLayerMapConfiguration" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "Layout": { + "additionalProperties": false, + "properties": { + "Configuration": { + "$ref": "#/definitions/LayoutConfiguration" + } + }, + "required": [ + "Configuration" + ], + "type": "object" + }, + "LayoutConfiguration": { + "additionalProperties": false, + "properties": { + "FreeFormLayout": { + "$ref": "#/definitions/FreeFormLayoutConfiguration" + }, + "GridLayout": { + "$ref": "#/definitions/GridLayoutConfiguration" + }, + "SectionBasedLayout": { + "$ref": "#/definitions/SectionBasedLayoutConfiguration" + } + }, + "type": "object" + }, + "LayoutElementType": { + "enum": [ + "VISUAL", + "FILTER_CONTROL", + "PARAMETER_CONTROL", + "TEXT_BOX", + "IMAGE" + ], + "type": "string" + }, + "LegendOptions": { + "additionalProperties": false, + "properties": { + "Height": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "Position": { + "$ref": "#/definitions/LegendPosition" + }, + "Title": { + "$ref": "#/definitions/LabelOptions" + }, + "ValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "type": "object" + }, + "LegendPosition": { + "enum": [ + "AUTO", + "RIGHT", + "BOTTOM", + "TOP" + ], + "type": "string" + }, + "LineChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "LineChartConfiguration": { + "additionalProperties": false, + "properties": { + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "DefaultSeriesSettings": { + "$ref": "#/definitions/LineChartDefaultSeriesSettings" + }, + "FieldWells": { + "$ref": "#/definitions/LineChartFieldWells" + }, + "ForecastConfigurations": { + "items": { + "$ref": "#/definitions/ForecastConfiguration" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/LineSeriesAxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SecondaryYAxisDisplayOptions": { + "$ref": "#/definitions/LineSeriesAxisDisplayOptions" + }, + "SecondaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "Series": { + "items": { + "$ref": "#/definitions/SeriesItem" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "SingleAxisOptions": { + "$ref": "#/definitions/SingleAxisOptions" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/LineChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "Type": { + "$ref": "#/definitions/LineChartType" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "XAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "XAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + } + }, + "type": "object" + }, + "LineChartDefaultSeriesSettings": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "LineStyleSettings": { + "$ref": "#/definitions/LineChartLineStyleSettings" + }, + "MarkerStyleSettings": { + "$ref": "#/definitions/LineChartMarkerStyleSettings" + } + }, + "type": "object" + }, + "LineChartFieldWells": { + "additionalProperties": false, + "properties": { + "LineChartAggregatedFieldWells": { + "$ref": "#/definitions/LineChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "LineChartLineStyle": { + "enum": [ + "SOLID", + "DOTTED", + "DASHED" + ], + "type": "string" + }, + "LineChartLineStyleSettings": { + "additionalProperties": false, + "properties": { + "LineInterpolation": { + "$ref": "#/definitions/LineInterpolation" + }, + "LineStyle": { + "$ref": "#/definitions/LineChartLineStyle" + }, + "LineVisibility": { + "$ref": "#/definitions/Visibility" + }, + "LineWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "type": "object" + }, + "LineChartMarkerShape": { + "enum": [ + "CIRCLE", + "TRIANGLE", + "SQUARE", + "DIAMOND", + "ROUNDED_SQUARE" + ], + "type": "string" + }, + "LineChartMarkerStyleSettings": { + "additionalProperties": false, + "properties": { + "MarkerColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "MarkerShape": { + "$ref": "#/definitions/LineChartMarkerShape" + }, + "MarkerSize": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "MarkerVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "LineChartSeriesSettings": { + "additionalProperties": false, + "properties": { + "LineStyleSettings": { + "$ref": "#/definitions/LineChartLineStyleSettings" + }, + "MarkerStyleSettings": { + "$ref": "#/definitions/LineChartMarkerStyleSettings" + } + }, + "type": "object" + }, + "LineChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "LineChartType": { + "enum": [ + "LINE", + "AREA", + "STACKED_AREA" + ], + "type": "string" + }, + "LineChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/LineChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "LineInterpolation": { + "enum": [ + "LINEAR", + "SMOOTH", + "STEPPED" + ], + "type": "string" + }, + "LineSeriesAxisDisplayOptions": { + "additionalProperties": false, + "properties": { + "AxisOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "MissingDataConfigurations": { + "items": { + "$ref": "#/definitions/MissingDataConfiguration" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "LinkSharingConfiguration": { + "additionalProperties": false, + "properties": { + "Permissions": { + "items": { + "$ref": "#/definitions/ResourcePermission" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "ListControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "SearchOptions": { + "$ref": "#/definitions/ListControlSearchOptions" + }, + "SelectAllOptions": { + "$ref": "#/definitions/ListControlSelectAllOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "ListControlSearchOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "ListControlSelectAllOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "LoadingAnimation": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "LocalNavigationConfiguration": { + "additionalProperties": false, + "properties": { + "TargetSheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "TargetSheetId" + ], + "type": "object" + }, + "LongFormatText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "RichText": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "MapZoomMode": { + "enum": [ + "AUTO", + "MANUAL" + ], + "type": "string" + }, + "MappedDataSetParameter": { + "additionalProperties": false, + "properties": { + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DataSetParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "DataSetParameterName" + ], + "type": "object" + }, + "MaximumLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "MaximumMinimumComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Type": { + "$ref": "#/definitions/MaximumMinimumComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "MaximumMinimumComputationType": { + "enum": [ + "MAXIMUM", + "MINIMUM" + ], + "type": "string" + }, + "MeasureField": { + "additionalProperties": false, + "properties": { + "CalculatedMeasureField": { + "$ref": "#/definitions/CalculatedMeasureField" + }, + "CategoricalMeasureField": { + "$ref": "#/definitions/CategoricalMeasureField" + }, + "DateMeasureField": { + "$ref": "#/definitions/DateMeasureField" + }, + "NumericalMeasureField": { + "$ref": "#/definitions/NumericalMeasureField" + } + }, + "type": "object" + }, + "MetricComparisonComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "FromValue": { + "$ref": "#/definitions/MeasureField" + }, + "Name": { + "type": "string" + }, + "TargetValue": { + "$ref": "#/definitions/MeasureField" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "MinimumLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "MissingDataConfiguration": { + "additionalProperties": false, + "properties": { + "TreatmentOption": { + "$ref": "#/definitions/MissingDataTreatmentOption" + } + }, + "type": "object" + }, + "MissingDataTreatmentOption": { + "enum": [ + "INTERPOLATE", + "SHOW_AS_ZERO", + "SHOW_AS_BLANK" + ], + "type": "string" + }, + "NegativeValueConfiguration": { + "additionalProperties": false, + "properties": { + "DisplayMode": { + "$ref": "#/definitions/NegativeValueDisplayMode" + } + }, + "required": [ + "DisplayMode" + ], + "type": "object" + }, + "NegativeValueDisplayMode": { + "enum": [ + "POSITIVE", + "NEGATIVE" + ], + "type": "string" + }, + "NestedFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeInnerSet": { + "default": false, + "type": "boolean" + }, + "InnerFilter": { + "$ref": "#/definitions/InnerFilter" + } + }, + "required": [ + "Column", + "FilterId", + "IncludeInnerSet", + "InnerFilter" + ], + "type": "object" + }, + "NullValueFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NullString": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "NullString" + ], + "type": "object" + }, + "NumberDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumberScale": { + "$ref": "#/definitions/NumberScale" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "NumberFormatConfiguration": { + "additionalProperties": false, + "properties": { + "FormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "NumberScale": { + "enum": [ + "NONE", + "AUTO", + "THOUSANDS", + "MILLIONS", + "BILLIONS", + "TRILLIONS", + "LAKHS", + "CRORES" + ], + "type": "string" + }, + "NumericAxisOptions": { + "additionalProperties": false, + "properties": { + "Range": { + "$ref": "#/definitions/AxisDisplayRange" + }, + "Scale": { + "$ref": "#/definitions/AxisScale" + } + }, + "type": "object" + }, + "NumericEqualityDrillDownFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Column", + "Value" + ], + "type": "object" + }, + "NumericEqualityFilter": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MatchOperator": { + "$ref": "#/definitions/NumericEqualityMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "SelectAllOptions": { + "$ref": "#/definitions/NumericFilterSelectAllOptions" + }, + "Value": { + "default": null, + "type": "number" + } + }, + "required": [ + "Column", + "FilterId", + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "NumericEqualityMatchOperator": { + "enum": [ + "EQUALS", + "DOES_NOT_EQUAL" + ], + "type": "string" + }, + "NumericFilterSelectAllOptions": { + "enum": [ + "FILTER_ALL_VALUES" + ], + "type": "string" + }, + "NumericFormatConfiguration": { + "additionalProperties": false, + "properties": { + "CurrencyDisplayFormatConfiguration": { + "$ref": "#/definitions/CurrencyDisplayFormatConfiguration" + }, + "NumberDisplayFormatConfiguration": { + "$ref": "#/definitions/NumberDisplayFormatConfiguration" + }, + "PercentageDisplayFormatConfiguration": { + "$ref": "#/definitions/PercentageDisplayFormatConfiguration" + } + }, + "type": "object" + }, + "NumericRangeFilter": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeMaximum": { + "default": null, + "type": "boolean" + }, + "IncludeMinimum": { + "default": null, + "type": "boolean" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "RangeMaximum": { + "$ref": "#/definitions/NumericRangeFilterValue" + }, + "RangeMinimum": { + "$ref": "#/definitions/NumericRangeFilterValue" + }, + "SelectAllOptions": { + "$ref": "#/definitions/NumericFilterSelectAllOptions" + } + }, + "required": [ + "Column", + "FilterId", + "NullOption" + ], + "type": "object" + }, + "NumericRangeFilterValue": { + "additionalProperties": false, + "properties": { + "Parameter": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "StaticValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "NumericSeparatorConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalSeparator": { + "$ref": "#/definitions/NumericSeparatorSymbol" + }, + "ThousandsSeparator": { + "$ref": "#/definitions/ThousandSeparatorOptions" + } + }, + "type": "object" + }, + "NumericSeparatorSymbol": { + "enum": [ + "COMMA", + "DOT", + "SPACE" + ], + "type": "string" + }, + "NumericalAggregationFunction": { + "additionalProperties": false, + "properties": { + "PercentileAggregation": { + "$ref": "#/definitions/PercentileAggregation" + }, + "SimpleNumericalAggregation": { + "$ref": "#/definitions/SimpleNumericalAggregationFunction" + } + }, + "type": "object" + }, + "NumericalDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "NumericalMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/NumericalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "OtherCategories": { + "enum": [ + "INCLUDE", + "EXCLUDE" + ], + "type": "string" + }, + "PaginationConfiguration": { + "additionalProperties": false, + "properties": { + "PageNumber": { + "minimum": 0, + "type": "number" + }, + "PageSize": { + "default": null, + "type": "number" + } + }, + "required": [ + "PageNumber", + "PageSize" + ], + "type": "object" + }, + "PanelBorderStyle": { + "enum": [ + "SOLID", + "DASHED", + "DOTTED" + ], + "type": "string" + }, + "PanelConfiguration": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "BackgroundVisibility": { + "$ref": "#/definitions/Visibility" + }, + "BorderColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "BorderStyle": { + "$ref": "#/definitions/PanelBorderStyle" + }, + "BorderThickness": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "BorderVisibility": { + "$ref": "#/definitions/Visibility" + }, + "GutterSpacing": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "GutterVisibility": { + "$ref": "#/definitions/Visibility" + }, + "Title": { + "$ref": "#/definitions/PanelTitleOptions" + } + }, + "type": "object" + }, + "PanelTitleOptions": { + "additionalProperties": false, + "properties": { + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "HorizontalTextAlignment": { + "$ref": "#/definitions/HorizontalTextAlignment" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "PaperOrientation": { + "enum": [ + "PORTRAIT", + "LANDSCAPE" + ], + "type": "string" + }, + "PaperSize": { + "enum": [ + "US_LETTER", + "US_LEGAL", + "US_TABLOID_LEDGER", + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "JIS_B4", + "JIS_B5" + ], + "type": "string" + }, + "ParameterControl": { + "additionalProperties": false, + "properties": { + "DateTimePicker": { + "$ref": "#/definitions/ParameterDateTimePickerControl" + }, + "Dropdown": { + "$ref": "#/definitions/ParameterDropDownControl" + }, + "List": { + "$ref": "#/definitions/ParameterListControl" + }, + "Slider": { + "$ref": "#/definitions/ParameterSliderControl" + }, + "TextArea": { + "$ref": "#/definitions/ParameterTextAreaControl" + }, + "TextField": { + "$ref": "#/definitions/ParameterTextFieldControl" + } + }, + "type": "object" + }, + "ParameterDateTimePickerControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DateTimeParameterDeclaration": { + "$ref": "#/definitions/DateTimeParameterDeclaration" + }, + "DecimalParameterDeclaration": { + "$ref": "#/definitions/DecimalParameterDeclaration" + }, + "IntegerParameterDeclaration": { + "$ref": "#/definitions/IntegerParameterDeclaration" + }, + "StringParameterDeclaration": { + "$ref": "#/definitions/StringParameterDeclaration" + } + }, + "type": "object" + }, + "ParameterDropDownControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/ParameterSelectableValues" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterListControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/ParameterSelectableValues" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterSelectableValues": { + "additionalProperties": false, + "properties": { + "LinkToDataSetColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Values": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ParameterSliderControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "MaximumValue", + "MinimumValue", + "ParameterControlId", + "SourceParameterName", + "StepSize", + "Title" + ], + "type": "object" + }, + "ParameterTextAreaControl": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterTextFieldControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterValueType": { + "enum": [ + "MULTI_VALUED", + "SINGLE_VALUED" + ], + "type": "string" + }, + "Parameters": { + "additionalProperties": false, + "description": "

A list of Amazon QuickSight parameters and the list's override values.

", + "properties": { + "DateTimeParameters": { + "description": "

The parameters that have a data type of date-time.

", + "items": { + "$ref": "#/definitions/DateTimeParameter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "DecimalParameters": { + "description": "

The parameters that have a data type of decimal.

", + "items": { + "$ref": "#/definitions/DecimalParameter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "IntegerParameters": { + "description": "

The parameters that have a data type of integer.

", + "items": { + "$ref": "#/definitions/IntegerParameter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "StringParameters": { + "description": "

The parameters that have a data type of string.

", + "items": { + "$ref": "#/definitions/StringParameter" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PercentVisibleRange": { + "additionalProperties": false, + "properties": { + "From": { + "default": null, + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "To": { + "default": null, + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "PercentageDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "PercentileAggregation": { + "additionalProperties": false, + "properties": { + "PercentileValue": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "PeriodOverPeriodComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "PeriodToDateComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "PeriodTimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "PieChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PieChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "DonutOptions": { + "$ref": "#/definitions/DonutOptions" + }, + "FieldWells": { + "$ref": "#/definitions/PieChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/PieChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "PieChartFieldWells": { + "additionalProperties": false, + "properties": { + "PieChartAggregatedFieldWells": { + "$ref": "#/definitions/PieChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "PieChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PieChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/PieChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "PivotFieldSortOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "SortBy": { + "$ref": "#/definitions/PivotTableSortBy" + } + }, + "required": [ + "FieldId", + "SortBy" + ], + "type": "object" + }, + "PivotTableAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + }, + "Rows": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableCellConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Scope": { + "$ref": "#/definitions/PivotTableConditionalFormattingScope" + }, + "Scopes": { + "items": { + "$ref": "#/definitions/PivotTableConditionalFormattingScope" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "TextFormat": { + "$ref": "#/definitions/TextConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "PivotTableConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/PivotTableConditionalFormattingOption" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Cell": { + "$ref": "#/definitions/PivotTableCellConditionalFormatting" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingScope": { + "additionalProperties": false, + "properties": { + "Role": { + "$ref": "#/definitions/PivotTableConditionalFormattingScopeRole" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingScopeRole": { + "enum": [ + "FIELD", + "FIELD_TOTAL", + "GRAND_TOTAL" + ], + "type": "string" + }, + "PivotTableConfiguration": { + "additionalProperties": false, + "properties": { + "FieldOptions": { + "$ref": "#/definitions/PivotTableFieldOptions" + }, + "FieldWells": { + "$ref": "#/definitions/PivotTableFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "PaginatedReportOptions": { + "$ref": "#/definitions/PivotTablePaginatedReportOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/PivotTableSortConfiguration" + }, + "TableOptions": { + "$ref": "#/definitions/PivotTableOptions" + }, + "TotalOptions": { + "$ref": "#/definitions/PivotTableTotalOptions" + } + }, + "type": "object" + }, + "PivotTableDataPathOption": { + "additionalProperties": false, + "properties": { + "DataPathList": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "DataPathList" + ], + "type": "object" + }, + "PivotTableDataPathType": { + "enum": [ + "HIERARCHY_ROWS_LAYOUT_COLUMN", + "MULTIPLE_ROW_METRICS_COLUMN", + "EMPTY_COLUMN_HEADER", + "COUNT_METRIC_COLUMN" + ], + "type": "string" + }, + "PivotTableFieldCollapseState": { + "enum": [ + "COLLAPSED", + "EXPANDED" + ], + "type": "string" + }, + "PivotTableFieldCollapseStateOption": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/PivotTableFieldCollapseState" + }, + "Target": { + "$ref": "#/definitions/PivotTableFieldCollapseStateTarget" + } + }, + "required": [ + "Target" + ], + "type": "object" + }, + "PivotTableFieldCollapseStateTarget": { + "additionalProperties": false, + "properties": { + "FieldDataPathValues": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "FieldId": { + "type": "string" + } + }, + "type": "object" + }, + "PivotTableFieldOption": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "PivotTableFieldOptions": { + "additionalProperties": false, + "properties": { + "CollapseStateOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldCollapseStateOption" + }, + "type": "array" + }, + "DataPathOptions": { + "items": { + "$ref": "#/definitions/PivotTableDataPathOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SelectedFieldOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableFieldSubtotalOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "PivotTableFieldWells": { + "additionalProperties": false, + "properties": { + "PivotTableAggregatedFieldWells": { + "$ref": "#/definitions/PivotTableAggregatedFieldWells" + } + }, + "type": "object" + }, + "PivotTableMetricPlacement": { + "enum": [ + "ROW", + "COLUMN" + ], + "type": "string" + }, + "PivotTableOptions": { + "additionalProperties": false, + "properties": { + "CellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "CollapsedRowDimensionsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ColumnHeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "ColumnNamesVisibility": { + "$ref": "#/definitions/Visibility" + }, + "DefaultCellWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "MetricPlacement": { + "$ref": "#/definitions/PivotTableMetricPlacement" + }, + "RowAlternateColorOptions": { + "$ref": "#/definitions/RowAlternateColorOptions" + }, + "RowFieldNamesStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "RowHeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "RowsLabelOptions": { + "$ref": "#/definitions/PivotTableRowsLabelOptions" + }, + "RowsLayout": { + "$ref": "#/definitions/PivotTableRowsLayout" + }, + "SingleMetricVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ToggleButtonsVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "PivotTablePaginatedReportOptions": { + "additionalProperties": false, + "properties": { + "OverflowColumnHeaderVisibility": { + "$ref": "#/definitions/Visibility" + }, + "VerticalOverflowVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "PivotTableRowsLabelOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "PivotTableRowsLayout": { + "enum": [ + "TABULAR", + "HIERARCHY" + ], + "type": "string" + }, + "PivotTableSortBy": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnSort" + }, + "DataPath": { + "$ref": "#/definitions/DataPathSort" + }, + "Field": { + "$ref": "#/definitions/FieldSort" + } + }, + "type": "object" + }, + "PivotTableSortConfiguration": { + "additionalProperties": false, + "properties": { + "FieldSortOptions": { + "items": { + "$ref": "#/definitions/PivotFieldSortOptions" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableSubtotalLevel": { + "enum": [ + "ALL", + "CUSTOM", + "LAST" + ], + "type": "string" + }, + "PivotTableTotalOptions": { + "additionalProperties": false, + "properties": { + "ColumnSubtotalOptions": { + "$ref": "#/definitions/SubtotalOptions" + }, + "ColumnTotalOptions": { + "$ref": "#/definitions/PivotTotalOptions" + }, + "RowSubtotalOptions": { + "$ref": "#/definitions/SubtotalOptions" + }, + "RowTotalOptions": { + "$ref": "#/definitions/PivotTotalOptions" + } + }, + "type": "object" + }, + "PivotTableVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/PivotTableConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/PivotTableConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "PivotTotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "MetricHeaderCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "Placement": { + "$ref": "#/definitions/TableTotalsPlacement" + }, + "ScrollStatus": { + "$ref": "#/definitions/TableTotalsScrollStatus" + }, + "TotalAggregationOptions": { + "items": { + "$ref": "#/definitions/TotalAggregationOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ValueCellStyle": { + "$ref": "#/definitions/TableCellStyle" + } + }, + "type": "object" + }, + "PluginVisual": { + "additionalProperties": false, + "properties": { + "ChartConfiguration": { + "$ref": "#/definitions/PluginVisualConfiguration" + }, + "PluginArn": { + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "PluginArn", + "VisualId" + ], + "type": "object" + }, + "PluginVisualAxisName": { + "enum": [ + "GROUP_BY", + "VALUE" + ], + "type": "string" + }, + "PluginVisualConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "items": { + "$ref": "#/definitions/PluginVisualFieldWell" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "SortConfiguration": { + "$ref": "#/definitions/PluginVisualSortConfiguration" + }, + "VisualOptions": { + "$ref": "#/definitions/PluginVisualOptions" + } + }, + "type": "object" + }, + "PluginVisualFieldWell": { + "additionalProperties": false, + "properties": { + "AxisName": { + "$ref": "#/definitions/PluginVisualAxisName" + }, + "Dimensions": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Measures": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Unaggregated": { + "items": { + "$ref": "#/definitions/UnaggregatedField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PluginVisualItemsLimitConfiguration": { + "additionalProperties": false, + "properties": { + "ItemsLimit": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "PluginVisualOptions": { + "additionalProperties": false, + "properties": { + "VisualProperties": { + "items": { + "$ref": "#/definitions/PluginVisualProperty" + }, + "type": "array" + } + }, + "type": "object" + }, + "PluginVisualProperty": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "PluginVisualSortConfiguration": { + "additionalProperties": false, + "properties": { + "PluginVisualTableQuerySort": { + "$ref": "#/definitions/PluginVisualTableQuerySort" + } + }, + "type": "object" + }, + "PluginVisualTableQuerySort": { + "additionalProperties": false, + "properties": { + "ItemsLimitConfiguration": { + "$ref": "#/definitions/PluginVisualItemsLimitConfiguration" + }, + "RowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PredefinedHierarchy": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Columns", + "HierarchyId" + ], + "type": "object" + }, + "PrimaryValueDisplayType": { + "enum": [ + "HIDDEN", + "COMPARISON", + "ACTUAL" + ], + "type": "string" + }, + "ProgressBarOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "RadarChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Color": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "RadarChartAreaStyleSettings": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "RadarChartAxesRangeScale": { + "enum": [ + "AUTO", + "INDEPENDENT", + "SHARED" + ], + "type": "string" + }, + "RadarChartConfiguration": { + "additionalProperties": false, + "properties": { + "AlternateBandColorsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "AlternateBandEvenColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "AlternateBandOddColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "AxesRangeScale": { + "$ref": "#/definitions/RadarChartAxesRangeScale" + }, + "BaseSeriesSettings": { + "$ref": "#/definitions/RadarChartSeriesSettings" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/RadarChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "Shape": { + "$ref": "#/definitions/RadarChartShape" + }, + "SortConfiguration": { + "$ref": "#/definitions/RadarChartSortConfiguration" + }, + "StartAngle": { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "RadarChartFieldWells": { + "additionalProperties": false, + "properties": { + "RadarChartAggregatedFieldWells": { + "$ref": "#/definitions/RadarChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "RadarChartSeriesSettings": { + "additionalProperties": false, + "properties": { + "AreaStyleSettings": { + "$ref": "#/definitions/RadarChartAreaStyleSettings" + } + }, + "type": "object" + }, + "RadarChartShape": { + "enum": [ + "CIRCLE", + "POLYGON" + ], + "type": "string" + }, + "RadarChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "RadarChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/RadarChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "RangeEndsLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "ReferenceLine": { + "additionalProperties": false, + "properties": { + "DataConfiguration": { + "$ref": "#/definitions/ReferenceLineDataConfiguration" + }, + "LabelConfiguration": { + "$ref": "#/definitions/ReferenceLineLabelConfiguration" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "StyleConfiguration": { + "$ref": "#/definitions/ReferenceLineStyleConfiguration" + } + }, + "required": [ + "DataConfiguration" + ], + "type": "object" + }, + "ReferenceLineCustomLabelConfiguration": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "pattern": "\\S", + "type": "string" + } + }, + "required": [ + "CustomLabel" + ], + "type": "object" + }, + "ReferenceLineDataConfiguration": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "DynamicConfiguration": { + "$ref": "#/definitions/ReferenceLineDynamicDataConfiguration" + }, + "SeriesType": { + "$ref": "#/definitions/ReferenceLineSeriesType" + }, + "StaticConfiguration": { + "$ref": "#/definitions/ReferenceLineStaticDataConfiguration" + } + }, + "type": "object" + }, + "ReferenceLineDynamicDataConfiguration": { + "additionalProperties": false, + "properties": { + "Calculation": { + "$ref": "#/definitions/NumericalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "MeasureAggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + } + }, + "required": [ + "Calculation", + "Column" + ], + "type": "object" + }, + "ReferenceLineLabelConfiguration": { + "additionalProperties": false, + "properties": { + "CustomLabelConfiguration": { + "$ref": "#/definitions/ReferenceLineCustomLabelConfiguration" + }, + "FontColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "HorizontalPosition": { + "$ref": "#/definitions/ReferenceLineLabelHorizontalPosition" + }, + "ValueLabelConfiguration": { + "$ref": "#/definitions/ReferenceLineValueLabelConfiguration" + }, + "VerticalPosition": { + "$ref": "#/definitions/ReferenceLineLabelVerticalPosition" + } + }, + "type": "object" + }, + "ReferenceLineLabelHorizontalPosition": { + "enum": [ + "LEFT", + "CENTER", + "RIGHT" + ], + "type": "string" + }, + "ReferenceLineLabelVerticalPosition": { + "enum": [ + "ABOVE", + "BELOW" + ], + "type": "string" + }, + "ReferenceLinePatternType": { + "enum": [ + "SOLID", + "DASHED", + "DOTTED" + ], + "type": "string" + }, + "ReferenceLineSeriesType": { + "enum": [ + "BAR", + "LINE" + ], + "type": "string" + }, + "ReferenceLineStaticDataConfiguration": { + "additionalProperties": false, + "properties": { + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "ReferenceLineStyleConfiguration": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Pattern": { + "$ref": "#/definitions/ReferenceLinePatternType" + } + }, + "type": "object" + }, + "ReferenceLineValueLabelConfiguration": { + "additionalProperties": false, + "properties": { + "FormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + }, + "RelativePosition": { + "$ref": "#/definitions/ReferenceLineValueLabelRelativePosition" + } + }, + "type": "object" + }, + "ReferenceLineValueLabelRelativePosition": { + "enum": [ + "BEFORE_CUSTOM_LABEL", + "AFTER_CUSTOM_LABEL" + ], + "type": "string" + }, + "RelativeDateTimeControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "RelativeDateType": { + "enum": [ + "PREVIOUS", + "THIS", + "LAST", + "NOW", + "NEXT" + ], + "type": "string" + }, + "RelativeDatesFilter": { + "additionalProperties": false, + "properties": { + "AnchorDateConfiguration": { + "$ref": "#/definitions/AnchorDateConfiguration" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "ExcludePeriodConfiguration": { + "$ref": "#/definitions/ExcludePeriodConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MinimumGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RelativeDateType": { + "$ref": "#/definitions/RelativeDateType" + }, + "RelativeDateValue": { + "default": null, + "type": "number" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "AnchorDateConfiguration", + "Column", + "FilterId", + "NullOption", + "RelativeDateType", + "TimeGranularity" + ], + "type": "object" + }, + "RelativeFontSize": { + "enum": [ + "EXTRA_SMALL", + "SMALL", + "MEDIUM", + "LARGE", + "EXTRA_LARGE" + ], + "type": "string" + }, + "ResizeOption": { + "enum": [ + "FIXED", + "RESPONSIVE" + ], + "type": "string" + }, + "ResourcePermission": { + "additionalProperties": false, + "description": "

Permission for the resource.

", + "properties": { + "Actions": { + "description": "

The IAM action to grant or revoke permissions on.

", + "items": { + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "Principal": { + "description": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Actions", + "Principal" + ], + "type": "object" + }, + "ResourceStatus": { + "enum": [ + "CREATION_IN_PROGRESS", + "CREATION_SUCCESSFUL", + "CREATION_FAILED", + "UPDATE_IN_PROGRESS", + "UPDATE_SUCCESSFUL", + "UPDATE_FAILED", + "DELETED" + ], + "type": "string" + }, + "RollingDateConfiguration": { + "additionalProperties": false, + "properties": { + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "RowAlternateColorOptions": { + "additionalProperties": false, + "properties": { + "RowAlternateColors": { + "items": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "UsePrimaryBackgroundColor": { + "$ref": "#/definitions/WidgetStatus" + } + }, + "type": "object" + }, + "SameSheetTargetVisualConfiguration": { + "additionalProperties": false, + "properties": { + "TargetVisualOptions": { + "$ref": "#/definitions/TargetVisualOptions" + }, + "TargetVisuals": { + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "SankeyDiagramAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Destination": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Source": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Weight": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "SankeyDiagramChartConfiguration": { + "additionalProperties": false, + "properties": { + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/SankeyDiagramFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/SankeyDiagramSortConfiguration" + } + }, + "type": "object" + }, + "SankeyDiagramFieldWells": { + "additionalProperties": false, + "properties": { + "SankeyDiagramAggregatedFieldWells": { + "$ref": "#/definitions/SankeyDiagramAggregatedFieldWells" + } + }, + "type": "object" + }, + "SankeyDiagramSortConfiguration": { + "additionalProperties": false, + "properties": { + "DestinationItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SourceItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "WeightSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "SankeyDiagramVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/SankeyDiagramChartConfiguration" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "ScatterPlotCategoricallyAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Label": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Size": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "XAxis": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "YAxis": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ScatterPlotConfiguration": { + "additionalProperties": false, + "properties": { + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/ScatterPlotFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/ScatterPlotSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "XAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "XAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "YAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "YAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + } + }, + "type": "object" + }, + "ScatterPlotFieldWells": { + "additionalProperties": false, + "properties": { + "ScatterPlotCategoricallyAggregatedFieldWells": { + "$ref": "#/definitions/ScatterPlotCategoricallyAggregatedFieldWells" + }, + "ScatterPlotUnaggregatedFieldWells": { + "$ref": "#/definitions/ScatterPlotUnaggregatedFieldWells" + } + }, + "type": "object" + }, + "ScatterPlotSortConfiguration": { + "additionalProperties": false, + "properties": { + "ScatterPlotLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + } + }, + "type": "object" + }, + "ScatterPlotUnaggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Label": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Size": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "XAxis": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "YAxis": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ScatterPlotVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/ScatterPlotConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "ScrollBarOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + }, + "VisibleRange": { + "$ref": "#/definitions/VisibleRangeOptions" + } + }, + "type": "object" + }, + "SecondaryValueOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "SectionAfterPageBreak": { + "additionalProperties": false, + "properties": { + "Status": { + "$ref": "#/definitions/SectionPageBreakStatus" + } + }, + "type": "object" + }, + "SectionBasedLayoutCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "PaperCanvasSizeOptions": { + "$ref": "#/definitions/SectionBasedLayoutPaperCanvasSizeOptions" + } + }, + "type": "object" + }, + "SectionBasedLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "BodySections": { + "items": { + "$ref": "#/definitions/BodySectionConfiguration" + }, + "maxItems": 28, + "minItems": 0, + "type": "array" + }, + "CanvasSizeOptions": { + "$ref": "#/definitions/SectionBasedLayoutCanvasSizeOptions" + }, + "FooterSections": { + "items": { + "$ref": "#/definitions/HeaderFooterSectionConfiguration" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "HeaderSections": { + "items": { + "$ref": "#/definitions/HeaderFooterSectionConfiguration" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "BodySections", + "CanvasSizeOptions", + "FooterSections", + "HeaderSections" + ], + "type": "object" + }, + "SectionBasedLayoutPaperCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "PaperMargin": { + "$ref": "#/definitions/Spacing" + }, + "PaperOrientation": { + "$ref": "#/definitions/PaperOrientation" + }, + "PaperSize": { + "$ref": "#/definitions/PaperSize" + } + }, + "type": "object" + }, + "SectionLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "FreeFormLayout": { + "$ref": "#/definitions/FreeFormSectionLayoutConfiguration" + } + }, + "required": [ + "FreeFormLayout" + ], + "type": "object" + }, + "SectionPageBreakConfiguration": { + "additionalProperties": false, + "properties": { + "After": { + "$ref": "#/definitions/SectionAfterPageBreak" + } + }, + "type": "object" + }, + "SectionPageBreakStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "SectionStyle": { + "additionalProperties": false, + "properties": { + "Height": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "Padding": { + "$ref": "#/definitions/Spacing" + } + }, + "type": "object" + }, + "SelectAllValueOptions": { + "enum": [ + "ALL_VALUES" + ], + "type": "string" + }, + "SelectedFieldOptions": { + "enum": [ + "ALL_FIELDS" + ], + "type": "string" + }, + "SelectedSheetsFilterScopeConfiguration": { + "additionalProperties": false, + "properties": { + "SheetVisualScopingConfigurations": { + "items": { + "$ref": "#/definitions/SheetVisualScopingConfiguration" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "SelectedTooltipType": { + "enum": [ + "BASIC", + "DETAILED" + ], + "type": "string" + }, + "SeriesItem": { + "additionalProperties": false, + "properties": { + "DataFieldSeriesItem": { + "$ref": "#/definitions/DataFieldSeriesItem" + }, + "FieldSeriesItem": { + "$ref": "#/definitions/FieldSeriesItem" + } + }, + "type": "object" + }, + "SetParameterValueConfiguration": { + "additionalProperties": false, + "properties": { + "DestinationParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Value": { + "$ref": "#/definitions/DestinationParameterValueConfiguration" + } + }, + "required": [ + "DestinationParameterName", + "Value" + ], + "type": "object" + }, + "ShapeConditionalFormat": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "required": [ + "BackgroundColor" + ], + "type": "object" + }, + "Sheet": { + "additionalProperties": false, + "description": "

A sheet, which is an object that contains a set of visuals that\n are viewed together on one page in Amazon QuickSight. Every analysis and dashboard\n contains at least one sheet. Each sheet contains at least one visualization widget, for\n example a chart, pivot table, or narrative insight. Sheets can be associated with other\n components, such as controls, filters, and so on.

", + "properties": { + "Name": { + "description": "

The name of a sheet. This name is displayed on the sheet's tab in the Amazon QuickSight\n console.

", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "SheetId": { + "description": "

The unique identifier associated with a sheet.

", + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "type": "object" + }, + "SheetContentType": { + "enum": [ + "PAGINATED", + "INTERACTIVE" + ], + "type": "string" + }, + "SheetControlDateTimePickerType": { + "enum": [ + "SINGLE_VALUED", + "DATE_RANGE" + ], + "type": "string" + }, + "SheetControlInfoIconLabelOptions": { + "additionalProperties": false, + "properties": { + "InfoIconText": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "SheetControlLayout": { + "additionalProperties": false, + "properties": { + "Configuration": { + "$ref": "#/definitions/SheetControlLayoutConfiguration" + } + }, + "required": [ + "Configuration" + ], + "type": "object" + }, + "SheetControlLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "GridLayout": { + "$ref": "#/definitions/GridLayoutConfiguration" + } + }, + "type": "object" + }, + "SheetControlListType": { + "enum": [ + "MULTI_SELECT", + "SINGLE_SELECT" + ], + "type": "string" + }, + "SheetControlSliderType": { + "enum": [ + "SINGLE_POINT", + "RANGE" + ], + "type": "string" + }, + "SheetControlsOption": { + "additionalProperties": false, + "description": "

Sheet controls option.

", + "properties": { + "VisibilityState": { + "$ref": "#/definitions/DashboardUIState" + } + }, + "type": "object" + }, + "SheetDefinition": { + "additionalProperties": false, + "properties": { + "ContentType": { + "$ref": "#/definitions/SheetContentType" + }, + "Description": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "FilterControls": { + "items": { + "$ref": "#/definitions/FilterControl" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Images": { + "items": { + "$ref": "#/definitions/SheetImage" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Layouts": { + "items": { + "$ref": "#/definitions/Layout" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ParameterControls": { + "items": { + "$ref": "#/definitions/ParameterControl" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SheetControlLayouts": { + "items": { + "$ref": "#/definitions/SheetControlLayout" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "SheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "TextBoxes": { + "items": { + "$ref": "#/definitions/SheetTextBox" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "Title": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Visuals": { + "items": { + "$ref": "#/definitions/Visual" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "SheetId" + ], + "type": "object" + }, + "SheetElementConfigurationOverrides": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "SheetElementRenderingRule": { + "additionalProperties": false, + "properties": { + "ConfigurationOverrides": { + "$ref": "#/definitions/SheetElementConfigurationOverrides" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ConfigurationOverrides", + "Expression" + ], + "type": "object" + }, + "SheetImage": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/ImageCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ImageContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Interactions": { + "$ref": "#/definitions/ImageInteractionOptions" + }, + "Scaling": { + "$ref": "#/definitions/SheetImageScalingConfiguration" + }, + "SheetImageId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Source": { + "$ref": "#/definitions/SheetImageSource" + }, + "Tooltip": { + "$ref": "#/definitions/SheetImageTooltipConfiguration" + } + }, + "required": [ + "SheetImageId", + "Source" + ], + "type": "object" + }, + "SheetImageScalingConfiguration": { + "additionalProperties": false, + "properties": { + "ScalingType": { + "$ref": "#/definitions/SheetImageScalingType" + } + }, + "type": "object" + }, + "SheetImageScalingType": { + "enum": [ + "SCALE_TO_WIDTH", + "SCALE_TO_HEIGHT", + "SCALE_TO_CONTAINER", + "SCALE_NONE" + ], + "type": "string" + }, + "SheetImageSource": { + "additionalProperties": false, + "properties": { + "SheetImageStaticFileSource": { + "$ref": "#/definitions/SheetImageStaticFileSource" + } + }, + "type": "object" + }, + "SheetImageStaticFileSource": { + "additionalProperties": false, + "properties": { + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "SheetImageTooltipConfiguration": { + "additionalProperties": false, + "properties": { + "TooltipText": { + "$ref": "#/definitions/SheetImageTooltipText" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "SheetImageTooltipText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SheetLayoutElementMaximizationOption": { + "additionalProperties": false, + "description": "

The sheet layout maximization options of a dashbaord.

", + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "SheetTextBox": { + "additionalProperties": false, + "properties": { + "Content": { + "maxLength": 150000, + "minLength": 0, + "type": "string" + }, + "SheetTextBoxId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "SheetTextBoxId" + ], + "type": "object" + }, + "SheetVisualScopingConfiguration": { + "additionalProperties": false, + "properties": { + "Scope": { + "$ref": "#/definitions/FilterVisualScope" + }, + "SheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "VisualIds": { + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Scope", + "SheetId" + ], + "type": "object" + }, + "ShortFormatText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "RichText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SimpleAttributeAggregationFunction": { + "enum": [ + "UNIQUE_VALUE" + ], + "type": "string" + }, + "SimpleClusterMarker": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "type": "object" + }, + "SimpleNumericalAggregationFunction": { + "enum": [ + "SUM", + "AVERAGE", + "MIN", + "MAX", + "COUNT", + "DISTINCT_COUNT", + "VAR", + "VARP", + "STDEV", + "STDEVP", + "MEDIAN" + ], + "type": "string" + }, + "SimpleTotalAggregationFunction": { + "enum": [ + "DEFAULT", + "SUM", + "AVERAGE", + "MIN", + "MAX", + "NONE" + ], + "type": "string" + }, + "SingleAxisOptions": { + "additionalProperties": false, + "properties": { + "YAxisOptions": { + "$ref": "#/definitions/YAxisOptions" + } + }, + "type": "object" + }, + "SingleYAxisOption": { + "enum": [ + "PRIMARY_Y_AXIS" + ], + "type": "string" + }, + "SliderControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "SmallMultiplesAxisPlacement": { + "enum": [ + "OUTSIDE", + "INSIDE" + ], + "type": "string" + }, + "SmallMultiplesAxisProperties": { + "additionalProperties": false, + "properties": { + "Placement": { + "$ref": "#/definitions/SmallMultiplesAxisPlacement" + }, + "Scale": { + "$ref": "#/definitions/SmallMultiplesAxisScale" + } + }, + "type": "object" + }, + "SmallMultiplesAxisScale": { + "enum": [ + "SHARED", + "INDEPENDENT" + ], + "type": "string" + }, + "SmallMultiplesOptions": { + "additionalProperties": false, + "properties": { + "MaxVisibleColumns": { + "maximum": 10, + "minimum": 1, + "type": "number" + }, + "MaxVisibleRows": { + "maximum": 10, + "minimum": 1, + "type": "number" + }, + "PanelConfiguration": { + "$ref": "#/definitions/PanelConfiguration" + }, + "XAxis": { + "$ref": "#/definitions/SmallMultiplesAxisProperties" + }, + "YAxis": { + "$ref": "#/definitions/SmallMultiplesAxisProperties" + } + }, + "type": "object" + }, + "SortDirection": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + }, + "Spacing": { + "additionalProperties": false, + "properties": { + "Bottom": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Left": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Right": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Top": { + "description": "String based length that is composed of value and unit", + "type": "string" + } + }, + "type": "object" + }, + "SpatialStaticFile": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/StaticFileSource" + }, + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "SpecialValue": { + "enum": [ + "EMPTY", + "NULL", + "OTHER" + ], + "type": "string" + }, + "StaticFile": { + "additionalProperties": false, + "properties": { + "ImageStaticFile": { + "$ref": "#/definitions/ImageStaticFile" + }, + "SpatialStaticFile": { + "$ref": "#/definitions/SpatialStaticFile" + } + }, + "type": "object" + }, + "StaticFileS3SourceOptions": { + "additionalProperties": false, + "properties": { + "BucketName": { + "type": "string" + }, + "ObjectKey": { + "type": "string" + }, + "Region": { + "type": "string" + } + }, + "required": [ + "BucketName", + "ObjectKey", + "Region" + ], + "type": "object" + }, + "StaticFileSource": { + "additionalProperties": false, + "properties": { + "S3Options": { + "$ref": "#/definitions/StaticFileS3SourceOptions" + }, + "UrlOptions": { + "$ref": "#/definitions/StaticFileUrlSourceOptions" + } + }, + "type": "object" + }, + "StaticFileUrlSourceOptions": { + "additionalProperties": false, + "properties": { + "Url": { + "type": "string" + } + }, + "required": [ + "Url" + ], + "type": "object" + }, + "StringDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "StringFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumericFormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "StringParameter": { + "additionalProperties": false, + "description": "

A string parameter.

", + "properties": { + "Name": { + "description": "

A display name for a string parameter.

", + "pattern": "\\S", + "type": "string" + }, + "Values": { + "description": "

The values of a string parameter.

", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "StringParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/StringDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/StringValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "StringValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "type": "string" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "StyledCellType": { + "enum": [ + "TOTAL", + "METRIC_HEADER", + "VALUE" + ], + "type": "string" + }, + "SubtotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "FieldLevel": { + "$ref": "#/definitions/PivotTableSubtotalLevel" + }, + "FieldLevelOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldSubtotalOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "MetricHeaderCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "StyleTargets": { + "items": { + "$ref": "#/definitions/TableStyleTarget" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": { + "$ref": "#/definitions/Visibility" + }, + "ValueCellStyle": { + "$ref": "#/definitions/TableCellStyle" + } + }, + "type": "object" + }, + "TableAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "GroupBy": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableBorderOptions": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/TableBorderStyle" + }, + "Thickness": { + "maximum": 4, + "minimum": 1, + "type": "number" + } + }, + "type": "object" + }, + "TableBorderStyle": { + "enum": [ + "NONE", + "SOLID" + ], + "type": "string" + }, + "TableCellConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "TextFormat": { + "$ref": "#/definitions/TextConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "TableCellImageScalingConfiguration": { + "enum": [ + "FIT_TO_CELL_HEIGHT", + "FIT_TO_CELL_WIDTH", + "DO_NOT_SCALE" + ], + "type": "string" + }, + "TableCellImageSizingConfiguration": { + "additionalProperties": false, + "properties": { + "TableCellImageScalingConfiguration": { + "$ref": "#/definitions/TableCellImageScalingConfiguration" + } + }, + "type": "object" + }, + "TableCellStyle": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Border": { + "$ref": "#/definitions/GlobalTableBorderOptions" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Height": { + "maximum": 500, + "minimum": 8, + "type": "number" + }, + "HorizontalTextAlignment": { + "$ref": "#/definitions/HorizontalTextAlignment" + }, + "TextWrap": { + "$ref": "#/definitions/TextWrap" + }, + "VerticalTextAlignment": { + "$ref": "#/definitions/VerticalTextAlignment" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TableConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/TableConditionalFormattingOption" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Cell": { + "$ref": "#/definitions/TableCellConditionalFormatting" + }, + "Row": { + "$ref": "#/definitions/TableRowConditionalFormatting" + } + }, + "type": "object" + }, + "TableConfiguration": { + "additionalProperties": false, + "properties": { + "FieldOptions": { + "$ref": "#/definitions/TableFieldOptions" + }, + "FieldWells": { + "$ref": "#/definitions/TableFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "PaginatedReportOptions": { + "$ref": "#/definitions/TablePaginatedReportOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/TableSortConfiguration" + }, + "TableInlineVisualizations": { + "items": { + "$ref": "#/definitions/TableInlineVisualization" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TableOptions": { + "$ref": "#/definitions/TableOptions" + }, + "TotalOptions": { + "$ref": "#/definitions/TotalOptions" + } + }, + "type": "object" + }, + "TableFieldCustomIconContent": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/TableFieldIconSetType" + } + }, + "type": "object" + }, + "TableFieldCustomTextContent": { + "additionalProperties": false, + "properties": { + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "FontConfiguration" + ], + "type": "object" + }, + "TableFieldIconSetType": { + "enum": [ + "LINK" + ], + "type": "string" + }, + "TableFieldImageConfiguration": { + "additionalProperties": false, + "properties": { + "SizingOptions": { + "$ref": "#/definitions/TableCellImageSizingConfiguration" + } + }, + "type": "object" + }, + "TableFieldLinkConfiguration": { + "additionalProperties": false, + "properties": { + "Content": { + "$ref": "#/definitions/TableFieldLinkContentConfiguration" + }, + "Target": { + "$ref": "#/definitions/URLTargetConfiguration" + } + }, + "required": [ + "Content", + "Target" + ], + "type": "object" + }, + "TableFieldLinkContentConfiguration": { + "additionalProperties": false, + "properties": { + "CustomIconContent": { + "$ref": "#/definitions/TableFieldCustomIconContent" + }, + "CustomTextContent": { + "$ref": "#/definitions/TableFieldCustomTextContent" + } + }, + "type": "object" + }, + "TableFieldOption": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "URLStyling": { + "$ref": "#/definitions/TableFieldURLConfiguration" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "TableFieldOptions": { + "additionalProperties": false, + "properties": { + "Order": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "PinnedFieldOptions": { + "$ref": "#/definitions/TablePinnedFieldOptions" + }, + "SelectedFieldOptions": { + "items": { + "$ref": "#/definitions/TableFieldOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "TransposedTableOptions": { + "items": { + "$ref": "#/definitions/TransposedTableOption" + }, + "maxItems": 10001, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableFieldURLConfiguration": { + "additionalProperties": false, + "properties": { + "ImageConfiguration": { + "$ref": "#/definitions/TableFieldImageConfiguration" + }, + "LinkConfiguration": { + "$ref": "#/definitions/TableFieldLinkConfiguration" + } + }, + "type": "object" + }, + "TableFieldWells": { + "additionalProperties": false, + "properties": { + "TableAggregatedFieldWells": { + "$ref": "#/definitions/TableAggregatedFieldWells" + }, + "TableUnaggregatedFieldWells": { + "$ref": "#/definitions/TableUnaggregatedFieldWells" + } + }, + "type": "object" + }, + "TableInlineVisualization": { + "additionalProperties": false, + "properties": { + "DataBars": { + "$ref": "#/definitions/DataBarsOptions" + } + }, + "type": "object" + }, + "TableOptions": { + "additionalProperties": false, + "properties": { + "CellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "HeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "Orientation": { + "$ref": "#/definitions/TableOrientation" + }, + "RowAlternateColorOptions": { + "$ref": "#/definitions/RowAlternateColorOptions" + } + }, + "type": "object" + }, + "TableOrientation": { + "enum": [ + "VERTICAL", + "HORIZONTAL" + ], + "type": "string" + }, + "TablePaginatedReportOptions": { + "additionalProperties": false, + "properties": { + "OverflowColumnHeaderVisibility": { + "$ref": "#/definitions/Visibility" + }, + "VerticalOverflowVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TablePinnedFieldOptions": { + "additionalProperties": false, + "properties": { + "PinnedLeftFields": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 201, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableRowConditionalFormatting": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "TableSideBorderOptions": { + "additionalProperties": false, + "properties": { + "Bottom": { + "$ref": "#/definitions/TableBorderOptions" + }, + "InnerHorizontal": { + "$ref": "#/definitions/TableBorderOptions" + }, + "InnerVertical": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Left": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Right": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Top": { + "$ref": "#/definitions/TableBorderOptions" + } + }, + "type": "object" + }, + "TableSortConfiguration": { + "additionalProperties": false, + "properties": { + "PaginationConfiguration": { + "$ref": "#/definitions/PaginationConfiguration" + }, + "RowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableStyleTarget": { + "additionalProperties": false, + "properties": { + "CellType": { + "$ref": "#/definitions/StyledCellType" + } + }, + "required": [ + "CellType" + ], + "type": "object" + }, + "TableTotalsPlacement": { + "enum": [ + "START", + "END", + "AUTO" + ], + "type": "string" + }, + "TableTotalsScrollStatus": { + "enum": [ + "PINNED", + "SCROLLED" + ], + "type": "string" + }, + "TableUnaggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "$ref": "#/definitions/UnaggregatedField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/TableConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/TableConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", + "properties": { + "Key": { + "description": "

Tag key.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "

Tag value.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TargetVisualOptions": { + "enum": [ + "ALL_VISUALS" + ], + "type": "string" + }, + "TextAreaControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "PlaceholderOptions": { + "$ref": "#/definitions/TextControlPlaceholderOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "TextConditionalFormat": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + }, + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "TextControlPlaceholderOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TextFieldControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "PlaceholderOptions": { + "$ref": "#/definitions/TextControlPlaceholderOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "TextWrap": { + "enum": [ + "NONE", + "WRAP" + ], + "type": "string" + }, + "ThousandSeparatorOptions": { + "additionalProperties": false, + "properties": { + "GroupingStyle": { + "$ref": "#/definitions/DigitGroupingStyle" + }, + "Symbol": { + "$ref": "#/definitions/NumericSeparatorSymbol" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TimeBasedForecastProperties": { + "additionalProperties": false, + "properties": { + "LowerBoundary": { + "default": null, + "type": "number" + }, + "PeriodsBackward": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "PeriodsForward": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "PredictionInterval": { + "maximum": 95, + "minimum": 50, + "type": "number" + }, + "Seasonality": { + "maximum": 180, + "minimum": 1, + "type": "number" + }, + "UpperBoundary": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "TimeEqualityFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Value": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "Column", + "FilterId" + ], + "type": "object" + }, + "TimeGranularity": { + "enum": [ + "YEAR", + "QUARTER", + "MONTH", + "WEEK", + "DAY", + "HOUR", + "MINUTE", + "SECOND", + "MILLISECOND" + ], + "type": "string" + }, + "TimeRangeDrillDownFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "RangeMaximum": { + "format": "date-time", + "type": "string" + }, + "RangeMinimum": { + "format": "date-time", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Column", + "RangeMaximum", + "RangeMinimum", + "TimeGranularity" + ], + "type": "object" + }, + "TimeRangeFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "ExcludePeriodConfiguration": { + "$ref": "#/definitions/ExcludePeriodConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeMaximum": { + "default": null, + "type": "boolean" + }, + "IncludeMinimum": { + "default": null, + "type": "boolean" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "RangeMaximumValue": { + "$ref": "#/definitions/TimeRangeFilterValue" + }, + "RangeMinimumValue": { + "$ref": "#/definitions/TimeRangeFilterValue" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Column", + "FilterId", + "NullOption" + ], + "type": "object" + }, + "TimeRangeFilterValue": { + "additionalProperties": false, + "properties": { + "Parameter": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "StaticValue": { + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "TooltipItem": { + "additionalProperties": false, + "properties": { + "ColumnTooltipItem": { + "$ref": "#/definitions/ColumnTooltipItem" + }, + "FieldTooltipItem": { + "$ref": "#/definitions/FieldTooltipItem" + } + }, + "type": "object" + }, + "TooltipOptions": { + "additionalProperties": false, + "properties": { + "FieldBasedTooltip": { + "$ref": "#/definitions/FieldBasedTooltip" + }, + "SelectedTooltipType": { + "$ref": "#/definitions/SelectedTooltipType" + }, + "TooltipVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TooltipTarget": { + "enum": [ + "BOTH", + "BAR", + "LINE" + ], + "type": "string" + }, + "TooltipTitleType": { + "enum": [ + "NONE", + "PRIMARY_VALUE" + ], + "type": "string" + }, + "TopBottomComputationType": { + "enum": [ + "TOP", + "BOTTOM" + ], + "type": "string" + }, + "TopBottomFilter": { + "additionalProperties": false, + "properties": { + "AggregationSortConfigurations": { + "items": { + "$ref": "#/definitions/AggregationSortConfiguration" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Limit": { + "default": null, + "type": "number" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "AggregationSortConfigurations", + "Column", + "FilterId" + ], + "type": "object" + }, + "TopBottomMoversComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MoverSize": { + "default": 0, + "maximum": 20, + "minimum": 1, + "type": "number" + }, + "Name": { + "type": "string" + }, + "SortOrder": { + "$ref": "#/definitions/TopBottomSortOrder" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Type": { + "$ref": "#/definitions/TopBottomComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "TopBottomRankedComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "ResultSize": { + "default": 0, + "maximum": 20, + "minimum": 1, + "type": "number" + }, + "Type": { + "$ref": "#/definitions/TopBottomComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "TopBottomSortOrder": { + "enum": [ + "PERCENT_DIFFERENCE", + "ABSOLUTE_DIFFERENCE" + ], + "type": "string" + }, + "TotalAggregationComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "TotalAggregationFunction": { + "additionalProperties": false, + "properties": { + "SimpleTotalAggregationFunction": { + "$ref": "#/definitions/SimpleTotalAggregationFunction" + } + }, + "type": "object" + }, + "TotalAggregationOption": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "TotalAggregationFunction": { + "$ref": "#/definitions/TotalAggregationFunction" + } + }, + "required": [ + "FieldId", + "TotalAggregationFunction" + ], + "type": "object" + }, + "TotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "Placement": { + "$ref": "#/definitions/TableTotalsPlacement" + }, + "ScrollStatus": { + "$ref": "#/definitions/TableTotalsScrollStatus" + }, + "TotalAggregationOptions": { + "items": { + "$ref": "#/definitions/TotalAggregationOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "TransposedColumnType": { + "enum": [ + "ROW_HEADER_COLUMN", + "VALUE_COLUMN" + ], + "type": "string" + }, + "TransposedTableOption": { + "additionalProperties": false, + "properties": { + "ColumnIndex": { + "maximum": 9999, + "minimum": 0, + "type": "number" + }, + "ColumnType": { + "$ref": "#/definitions/TransposedColumnType" + }, + "ColumnWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "ColumnType" + ], + "type": "object" + }, + "TreeMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Groups": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Sizes": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TreeMapConfiguration": { + "additionalProperties": false, + "properties": { + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorScale": { + "$ref": "#/definitions/ColorScale" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/TreeMapFieldWells" + }, + "GroupLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "SizeLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/TreeMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + } + }, + "type": "object" + }, + "TreeMapFieldWells": { + "additionalProperties": false, + "properties": { + "TreeMapAggregatedFieldWells": { + "$ref": "#/definitions/TreeMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "TreeMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "TreeMapGroupItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "TreeMapSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TreeMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/TreeMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "TrendArrowOptions": { + "additionalProperties": false, + "properties": { + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "URLTargetConfiguration": { + "enum": [ + "NEW_TAB", + "NEW_WINDOW", + "SAME_TAB" + ], + "type": "string" + }, + "UnaggregatedField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/FormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "UniqueValuesComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "ValidationStrategy": { + "additionalProperties": false, + "description": "

The option to relax the validation that is required to create and update analyses, dashboards, and templates with definition objects. When you set this value to LENIENT, validation is skipped for specific errors.

", + "properties": { + "Mode": { + "$ref": "#/definitions/ValidationStrategyMode" + } + }, + "required": [ + "Mode" + ], + "type": "object" + }, + "ValidationStrategyMode": { + "enum": [ + "STRICT", + "LENIENT" + ], + "type": "string" + }, + "ValueWhenUnsetOption": { + "enum": [ + "RECOMMENDED_VALUE", + "NULL" + ], + "type": "string" + }, + "VerticalTextAlignment": { + "enum": [ + "TOP", + "MIDDLE", + "BOTTOM", + "AUTO" + ], + "type": "string" + }, + "Visibility": { + "enum": [ + "HIDDEN", + "VISIBLE" + ], + "type": "string" + }, + "VisibleRangeOptions": { + "additionalProperties": false, + "properties": { + "PercentRange": { + "$ref": "#/definitions/PercentVisibleRange" + } + }, + "type": "object" + }, + "Visual": { + "additionalProperties": false, + "properties": { + "BarChartVisual": { + "$ref": "#/definitions/BarChartVisual" + }, + "BoxPlotVisual": { + "$ref": "#/definitions/BoxPlotVisual" + }, + "ComboChartVisual": { + "$ref": "#/definitions/ComboChartVisual" + }, + "CustomContentVisual": { + "$ref": "#/definitions/CustomContentVisual" + }, + "EmptyVisual": { + "$ref": "#/definitions/EmptyVisual" + }, + "FilledMapVisual": { + "$ref": "#/definitions/FilledMapVisual" + }, + "FunnelChartVisual": { + "$ref": "#/definitions/FunnelChartVisual" + }, + "GaugeChartVisual": { + "$ref": "#/definitions/GaugeChartVisual" + }, + "GeospatialMapVisual": { + "$ref": "#/definitions/GeospatialMapVisual" + }, + "HeatMapVisual": { + "$ref": "#/definitions/HeatMapVisual" + }, + "HistogramVisual": { + "$ref": "#/definitions/HistogramVisual" + }, + "InsightVisual": { + "$ref": "#/definitions/InsightVisual" + }, + "KPIVisual": { + "$ref": "#/definitions/KPIVisual" + }, + "LayerMapVisual": { + "$ref": "#/definitions/LayerMapVisual" + }, + "LineChartVisual": { + "$ref": "#/definitions/LineChartVisual" + }, + "PieChartVisual": { + "$ref": "#/definitions/PieChartVisual" + }, + "PivotTableVisual": { + "$ref": "#/definitions/PivotTableVisual" + }, + "PluginVisual": { + "$ref": "#/definitions/PluginVisual" + }, + "RadarChartVisual": { + "$ref": "#/definitions/RadarChartVisual" + }, + "SankeyDiagramVisual": { + "$ref": "#/definitions/SankeyDiagramVisual" + }, + "ScatterPlotVisual": { + "$ref": "#/definitions/ScatterPlotVisual" + }, + "TableVisual": { + "$ref": "#/definitions/TableVisual" + }, + "TreeMapVisual": { + "$ref": "#/definitions/TreeMapVisual" + }, + "WaterfallVisual": { + "$ref": "#/definitions/WaterfallVisual" + }, + "WordCloudVisual": { + "$ref": "#/definitions/WordCloudVisual" + } + }, + "type": "object" + }, + "VisualAxisSortOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "VisualCustomAction": { + "additionalProperties": false, + "properties": { + "ActionOperations": { + "items": { + "$ref": "#/definitions/VisualCustomActionOperation" + }, + "maxItems": 2, + "minItems": 1, + "type": "array" + }, + "CustomActionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "Trigger": { + "$ref": "#/definitions/VisualCustomActionTrigger" + } + }, + "required": [ + "ActionOperations", + "CustomActionId", + "Name", + "Trigger" + ], + "type": "object" + }, + "VisualCustomActionOperation": { + "additionalProperties": false, + "properties": { + "FilterOperation": { + "$ref": "#/definitions/CustomActionFilterOperation" + }, + "NavigationOperation": { + "$ref": "#/definitions/CustomActionNavigationOperation" + }, + "SetParametersOperation": { + "$ref": "#/definitions/CustomActionSetParametersOperation" + }, + "URLOperation": { + "$ref": "#/definitions/CustomActionURLOperation" + } + }, + "type": "object" + }, + "VisualCustomActionTrigger": { + "enum": [ + "DATA_POINT_CLICK", + "DATA_POINT_MENU" + ], + "type": "string" + }, + "VisualInteractionOptions": { + "additionalProperties": false, + "properties": { + "ContextMenuOption": { + "$ref": "#/definitions/ContextMenuOption" + }, + "VisualMenuOption": { + "$ref": "#/definitions/VisualMenuOption" + } + }, + "type": "object" + }, + "VisualMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "VisualPalette": { + "additionalProperties": false, + "properties": { + "ChartColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "ColorMap": { + "items": { + "$ref": "#/definitions/DataPathColor" + }, + "maxItems": 5000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "VisualSubtitleLabelOptions": { + "additionalProperties": false, + "properties": { + "FormatText": { + "$ref": "#/definitions/LongFormatText" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "VisualTitleLabelOptions": { + "additionalProperties": false, + "properties": { + "FormatText": { + "$ref": "#/definitions/ShortFormatText" + }, + "Visibility": { + "$ref": "#/definitions/Visibility" + } + }, + "type": "object" + }, + "WaterfallChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Breakdowns": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Categories": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "WaterfallChartColorConfiguration": { + "additionalProperties": false, + "properties": { + "GroupColorConfiguration": { + "$ref": "#/definitions/WaterfallChartGroupColorConfiguration" + } + }, + "type": "object" + }, + "WaterfallChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorConfiguration": { + "$ref": "#/definitions/WaterfallChartColorConfiguration" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/WaterfallChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/WaterfallChartSortConfiguration" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "WaterfallChartOptions": { + "$ref": "#/definitions/WaterfallChartOptions" + } + }, + "type": "object" + }, + "WaterfallChartFieldWells": { + "additionalProperties": false, + "properties": { + "WaterfallChartAggregatedFieldWells": { + "$ref": "#/definitions/WaterfallChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "WaterfallChartGroupColorConfiguration": { + "additionalProperties": false, + "properties": { + "NegativeBarColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "PositiveBarColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "TotalBarColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "type": "object" + }, + "WaterfallChartOptions": { + "additionalProperties": false, + "properties": { + "TotalBarLabel": { + "type": "string" + } + }, + "type": "object" + }, + "WaterfallChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "BreakdownItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "WaterfallVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/WaterfallChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "WhatIfPointScenario": { + "additionalProperties": false, + "properties": { + "Date": { + "format": "date-time", + "type": "string" + }, + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Date", + "Value" + ], + "type": "object" + }, + "WhatIfRangeScenario": { + "additionalProperties": false, + "properties": { + "EndDate": { + "format": "date-time", + "type": "string" + }, + "StartDate": { + "format": "date-time", + "type": "string" + }, + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "EndDate", + "StartDate", + "Value" + ], + "type": "object" + }, + "WidgetStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "WordCloudAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "GroupBy": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Size": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "WordCloudChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/WordCloudFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/WordCloudSortConfiguration" + }, + "WordCloudOptions": { + "$ref": "#/definitions/WordCloudOptions" + } + }, + "type": "object" + }, + "WordCloudCloudLayout": { + "enum": [ + "FLUID", + "NORMAL" + ], + "type": "string" + }, + "WordCloudFieldWells": { + "additionalProperties": false, + "properties": { + "WordCloudAggregatedFieldWells": { + "$ref": "#/definitions/WordCloudAggregatedFieldWells" + } + }, + "type": "object" + }, + "WordCloudOptions": { + "additionalProperties": false, + "properties": { + "CloudLayout": { + "$ref": "#/definitions/WordCloudCloudLayout" + }, + "MaximumStringLength": { + "maximum": 100, + "minimum": 1, + "type": "number" + }, + "WordCasing": { + "$ref": "#/definitions/WordCloudWordCasing" + }, + "WordOrientation": { + "$ref": "#/definitions/WordCloudWordOrientation" + }, + "WordPadding": { + "$ref": "#/definitions/WordCloudWordPadding" + }, + "WordScaling": { + "$ref": "#/definitions/WordCloudWordScaling" + } + }, + "type": "object" + }, + "WordCloudSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "WordCloudVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/WordCloudChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "WordCloudWordCasing": { + "enum": [ + "LOWER_CASE", + "EXISTING_CASE" + ], + "type": "string" + }, + "WordCloudWordOrientation": { + "enum": [ + "HORIZONTAL", + "HORIZONTAL_AND_VERTICAL" + ], + "type": "string" + }, + "WordCloudWordPadding": { + "enum": [ + "NONE", + "SMALL", + "MEDIUM", + "LARGE" + ], + "type": "string" + }, + "WordCloudWordScaling": { + "enum": [ + "EMPHASIZE", + "NORMAL" + ], + "type": "string" + }, + "YAxisOptions": { + "additionalProperties": false, + "properties": { + "YAxis": { + "$ref": "#/definitions/SingleYAxisOption" + } + }, + "required": [ + "YAxis" + ], + "type": "object" + } + }, + "description": "Definition of the AWS::QuickSight::Dashboard Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:DescribeDashboard", + "quicksight:DescribeDashboardPermissions", + "quicksight:CreateDashboard", + "quicksight:DescribeTemplate", + "quicksight:DescribeTheme", + "quicksight:PassDataSet", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource", + "quicksight:CreateFolderMembership", + "quicksight:DeleteFolderMembership", + "quicksight:ListFoldersForResource" + ] + }, + "delete": { + "permissions": [ + "quicksight:DescribeDashboard", + "quicksight:DeleteDashboard" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "AwsAccountId": { + "$ref": "resource-schema.json#/properties/AwsAccountId" + } + }, + "required": [ + "AwsAccountId" + ] + }, + "permissions": [ + "quicksight:ListDashboards" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeDashboard", + "quicksight:DescribeDashboardPermissions", + "quicksight:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "quicksight:DescribeDashboard", + "quicksight:DescribeDashboardPermissions", + "quicksight:UpdateDashboard", + "quicksight:UpdateDashboardLinks", + "quicksight:UpdateDashboardPermissions", + "quicksight:UpdateDashboardPublishedVersion", + "quicksight:DescribeTemplate", + "quicksight:DescribeTheme", + "quicksight:PassDataSet", + "quicksight:CreateFolderMembership", + "quicksight:DeleteFolderMembership", + "quicksight:ListFoldersForResource", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AwsAccountId", + "/properties/DashboardId" + ], + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the resource.

", + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "CreatedTime": { + "description": "

The time that this dashboard was created.

", + "format": "date-time", + "type": "string" + }, + "DashboardId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "DashboardPublishOptions": { + "$ref": "#/definitions/DashboardPublishOptions" + }, + "Definition": { + "$ref": "#/definitions/DashboardVersionDefinition" + }, + "FolderArns": { + "items": { + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "LastPublishedTime": { + "description": "

The last time that this dashboard was published.

", + "format": "date-time", + "type": "string" + }, + "LastUpdatedTime": { + "description": "

The last time that this dashboard was updated.

", + "format": "date-time", + "type": "string" + }, + "LinkEntities": { + "items": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^arn:aws[\\w\\-]*:quicksight:[\\w\\-]+:\\d+:analysis/[\\w\\-]{1,512}$", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "LinkSharingConfiguration": { + "$ref": "#/definitions/LinkSharingConfiguration" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Parameters": { + "$ref": "#/definitions/Parameters" + }, + "Permissions": { + "items": { + "$ref": "#/definitions/ResourcePermission" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + }, + "SourceEntity": { + "$ref": "#/definitions/DashboardSourceEntity" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "ThemeArn": { + "type": "string" + }, + "ValidationStrategy": { + "$ref": "#/definitions/ValidationStrategy" + }, + "Version": { + "$ref": "#/definitions/DashboardVersion" + }, + "VersionDescription": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastPublishedTime", + "/properties/LastUpdatedTime", + "/properties/Version" + ], + "required": [ + "AwsAccountId", + "DashboardId", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QuickSight::Dashboard", + "writeOnlyProperties": [ + "/properties/DashboardPublishOptions", + "/properties/Definition", + "/properties/LinkSharingConfiguration", + "/properties/Parameters", + "/properties/SourceEntity", + "/properties/ThemeArn", + "/properties/VersionDescription", + "/properties/ValidationStrategy", + "/properties/FolderArns" + ] +} diff --git a/src/schema/aws-quicksight-dataset.json b/src/schema/aws-quicksight-dataset.json index 266393f6..705c9427 100644 --- a/src/schema/aws-quicksight-dataset.json +++ b/src/schema/aws-quicksight-dataset.json @@ -1,1573 +1,1646 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AwsAccountId", - "/properties/DataSetId" - ], - "definitions": { - "CalculatedColumn": { - "additionalProperties": false, - "description": "

A calculated column for a dataset.

", - "properties": { - "ColumnId": { - "description": "

A unique ID to identify a calculated column. During a dataset update, if the column ID\n of a calculated column matches that of an existing calculated column, Amazon QuickSight\n preserves the existing calculated column.

", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "ColumnName": { - "description": "

Column name.

", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Expression": { - "description": "

An expression that defines the calculated column.

", - "maxLength": 250000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ColumnId", - "ColumnName", - "Expression" - ], - "type": "object" - }, - "CastColumnTypeOperation": { - "additionalProperties": false, - "description": "

A transform operation that casts a column to a different type.

", - "properties": { - "ColumnName": { - "description": "

Column name.

", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Format": { - "description": "

When casting a column from string to datetime type, you can supply a string in a\n format supported by Amazon QuickSight to denote the source data format.

", - "maxLength": 32, - "minLength": 0, - "type": "string" - }, - "NewColumnType": { - "$ref": "#/definitions/ColumnDataType" - }, - "SubType": { - "$ref": "#/definitions/ColumnDataSubType" - } - }, - "required": [ - "ColumnName", - "NewColumnType" - ], - "type": "object" - }, - "ColumnDataSubType": { - "enum": [ - "FLOAT", - "FIXED" - ], - "type": "string" - }, - "ColumnDataType": { - "enum": [ - "STRING", - "INTEGER", - "DECIMAL", - "DATETIME" - ], - "type": "string" - }, - "ColumnDescription": { - "additionalProperties": false, - "description": "

Metadata that contains a description for a column.

", - "properties": { - "Text": { - "description": "

The text of a description for a column.

", - "maxLength": 500, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "ColumnGroup": { - "additionalProperties": false, - "description": "

Groupings of columns that work together in certain Amazon QuickSight features. This is\n a variant type structure. For this structure to be valid, only one of the attributes can\n be non-null.

", - "properties": { - "GeoSpatialColumnGroup": { - "$ref": "#/definitions/GeoSpatialColumnGroup" - } - }, - "type": "object" - }, - "ColumnLevelPermissionRule": { - "additionalProperties": false, - "description": "

A rule defined to grant access on one or more restricted columns.\n Each dataset can have multiple rules.\n To create a restricted column, you add it to one or more rules.\n Each rule must contain at least one column and at least one user or group.\n To be able to see a restricted column, a user or group needs to be added\n to a rule for that column.

", - "properties": { - "ColumnNames": { - "description": "

An array of column names.

", - "items": { - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "Principals": { - "description": "

An array of Amazon Resource Names (ARNs) for Amazon QuickSight users or groups.

", - "items": { - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "ColumnTag": { - "additionalProperties": false, - "description": "

A tag for a column in a\n \n TagColumnOperation\n \n structure. This is a\n variant type structure. For this structure to be valid, only one of the attributes can\n be non-null.

", - "properties": { - "ColumnDescription": { - "$ref": "#/definitions/ColumnDescription" - }, - "ColumnGeographicRole": { - "$ref": "#/definitions/GeoSpatialDataRole" - } - }, - "type": "object" - }, - "ColumnTagName": { - "enum": [ - "COLUMN_GEOGRAPHIC_ROLE", - "COLUMN_DESCRIPTION" - ], - "type": "string" - }, - "CreateColumnsOperation": { - "additionalProperties": false, - "description": "

A transform operation that creates calculated columns. Columns created in one such\n operation form a lexical closure.

", - "properties": { - "Columns": { - "description": "

Calculated columns to create.

", - "items": { - "$ref": "#/definitions/CalculatedColumn" - }, - "maxItems": 128, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Columns" - ], - "type": "object" - }, - "CustomSql": { - "additionalProperties": false, - "description": "

A physical table type built from the results of the custom SQL query.

", - "properties": { - "Columns": { - "description": "

The column schema from the SQL query result set.

", - "items": { - "$ref": "#/definitions/InputColumn" - }, - "maxItems": 2048, - "minItems": 1, - "type": "array" - }, - "DataSourceArn": { - "description": "

The Amazon Resource Name (ARN) of the data source.

", - "type": "string" - }, - "Name": { - "description": "

A display name for the SQL query result.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "SqlQuery": { - "description": "

The SQL query.

", - "maxLength": 168000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DataSourceArn", - "Name", - "SqlQuery" - ], - "type": "object" - }, - "DataSetImportMode": { - "enum": [ - "SPICE", - "DIRECT_QUERY" - ], - "type": "string" - }, - "DataSetRefreshProperties": { - "additionalProperties": false, - "description": "

The refresh properties of a dataset.

", - "properties": { - "RefreshConfiguration": { - "$ref": "#/definitions/RefreshConfiguration" - } - }, - "type": "object" - }, - "DataSetUsageConfiguration": { - "additionalProperties": false, - "description": "

The usage configuration to apply to child datasets that reference this dataset as a source.

", - "properties": { - "DisableUseAsDirectQuerySource": { - "default": false, - "description": "

An option that controls whether a child dataset of a direct query can use this dataset as a source.

", - "type": "boolean" - }, - "DisableUseAsImportedSource": { - "default": false, - "description": "

An option that controls whether a child dataset that's stored in QuickSight can use this dataset as a source.

", - "type": "boolean" - } - }, - "type": "object" - }, - "DatasetParameter": { - "additionalProperties": false, - "description": "

A dataset parameter.

", - "properties": { - "DateTimeDatasetParameter": { - "$ref": "#/definitions/DateTimeDatasetParameter" - }, - "DecimalDatasetParameter": { - "$ref": "#/definitions/DecimalDatasetParameter" - }, - "IntegerDatasetParameter": { - "$ref": "#/definitions/IntegerDatasetParameter" - }, - "StringDatasetParameter": { - "$ref": "#/definitions/StringDatasetParameter" - } - }, - "type": "object" - }, - "DatasetParameterValueType": { - "enum": [ - "MULTI_VALUED", - "SINGLE_VALUED" - ], - "type": "string" - }, - "DateTimeDatasetParameter": { - "additionalProperties": false, - "description": "

A date time parameter for a dataset.

", - "properties": { - "DefaultValues": { - "$ref": "#/definitions/DateTimeDatasetParameterDefaultValues" - }, - "Id": { - "description": "

An identifier for the parameter that is created in the dataset.

", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "Name": { - "description": "

The name of the date time parameter that is created in the dataset.

", - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "ValueType": { - "$ref": "#/definitions/DatasetParameterValueType" - } - }, - "required": [ - "Id", - "Name", - "ValueType" - ], - "type": "object" - }, - "DateTimeDatasetParameterDefaultValues": { - "additionalProperties": false, - "description": "

The default values of a date time parameter.

", - "properties": { - "StaticValues": { - "description": "

A list of static default values for a given date time parameter.

", - "items": { - "description": "

The default value for the date time parameter.

", - "type": "string" - }, - "maxItems": 32, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "DecimalDatasetParameter": { - "additionalProperties": false, - "description": "

A decimal parameter for a dataset.

", - "properties": { - "DefaultValues": { - "$ref": "#/definitions/DecimalDatasetParameterDefaultValues" - }, - "Id": { - "description": "

An identifier for the decimal parameter created in the dataset.

", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "Name": { - "description": "

The name of the decimal parameter that is created in the dataset.

", - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "ValueType": { - "$ref": "#/definitions/DatasetParameterValueType" - } - }, - "required": [ - "Id", - "Name", - "ValueType" - ], - "type": "object" - }, - "DecimalDatasetParameterDefaultValues": { - "additionalProperties": false, - "description": "

The default values of a decimal parameter.

", - "properties": { - "StaticValues": { - "description": "

A list of static default values for a given decimal parameter.

", - "items": { - "default": 0, - "description": "

The default value for the decimal parameter.

", - "type": "number" - }, - "maxItems": 32, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "FieldFolder": { - "additionalProperties": false, - "description": "

A FieldFolder element is a folder that contains fields and nested subfolders.

", - "properties": { - "Columns": { - "description": "

A folder has a list of columns. A column can only be in one folder.

", - "items": { - "type": "string" - }, - "maxItems": 5000, - "minItems": 0, - "type": "array" - }, - "Description": { - "description": "

The description for a field folder.

", - "maxLength": 500, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "FieldFolderMap": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "$ref": "#/definitions/FieldFolder" - } - }, - "type": "object" - }, - "FileFormat": { - "enum": [ - "CSV", - "TSV", - "CLF", - "ELF", - "XLSX", - "JSON" - ], - "type": "string" - }, - "FilterOperation": { - "additionalProperties": false, - "description": "

A transform operation that filters rows based on a condition.

", - "properties": { - "ConditionExpression": { - "description": "

An expression that must evaluate to a Boolean value. Rows for which the expression\n evaluates to true are kept in the dataset.

", - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ConditionExpression" - ], - "type": "object" - }, - "GeoSpatialColumnGroup": { - "additionalProperties": false, - "description": "

Geospatial column group that denotes a hierarchy.

", - "properties": { - "Columns": { - "description": "

Columns in this hierarchy.

", - "items": { - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "maxItems": 16, - "minItems": 1, - "type": "array" - }, - "CountryCode": { - "$ref": "#/definitions/GeoSpatialCountryCode" - }, - "Name": { - "description": "

A display name for the hierarchy.

", - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Columns", - "Name" - ], - "type": "object" - }, - "GeoSpatialCountryCode": { - "enum": [ - "US" - ], - "type": "string" - }, - "GeoSpatialDataRole": { - "enum": [ - "COUNTRY", - "STATE", - "COUNTY", - "CITY", - "POSTCODE", - "LONGITUDE", - "LATITUDE", - "POLITICAL1", - "CENSUS_TRACT", - "CENSUS_BLOCK_GROUP", - "CENSUS_BLOCK" - ], - "type": "string" - }, - "IncrementalRefresh": { - "additionalProperties": false, - "description": "

The incremental refresh configuration for a dataset.

", - "properties": { - "LookbackWindow": { - "$ref": "#/definitions/LookbackWindow" - } - }, - "required": [ - "LookbackWindow" - ], - "type": "object" - }, - "IngestionWaitPolicy": { - "additionalProperties": false, - "description": "

Wait policy to use when creating/updating dataset. Default is to wait for SPICE ingestion to finish with timeout of 36 hours.

", - "properties": { - "IngestionWaitTimeInHours": { - "default": 36, - "description": "

The maximum time (in hours) to wait for Ingestion to complete. Default timeout is 36 hours.\n Applicable only when DataSetImportMode mode is set to SPICE and WaitForSpiceIngestion is set to true.

", - "maximum": 36, - "minimum": 1, - "type": "number" - }, - "WaitForSpiceIngestion": { - "default": true, - "description": "

Wait for SPICE ingestion to finish to mark dataset creation/update successful. Default (true).\n Applicable only when DataSetImportMode mode is set to SPICE.

", - "type": "boolean" - } - }, - "type": "object" - }, - "InputColumn": { - "additionalProperties": false, - "description": "

Metadata for a column that is used as the input of a transform operation.

", - "properties": { - "Name": { - "description": "

The name of this column in the underlying data source.

", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "SubType": { - "$ref": "#/definitions/ColumnDataSubType" - }, - "Type": { - "$ref": "#/definitions/InputColumnDataType" - } - }, - "required": [ - "Name", - "Type" - ], - "type": "object" - }, - "InputColumnDataType": { - "enum": [ - "STRING", - "INTEGER", - "DECIMAL", - "DATETIME", - "BIT", - "BOOLEAN", - "JSON" - ], - "type": "string" - }, - "IntegerDatasetParameter": { - "additionalProperties": false, - "description": "

An integer parameter for a dataset.

", - "properties": { - "DefaultValues": { - "$ref": "#/definitions/IntegerDatasetParameterDefaultValues" - }, - "Id": { - "description": "

An identifier for the integer parameter created in the dataset.

", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "Name": { - "description": "

The name of the integer parameter that is created in the dataset.

", - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "ValueType": { - "$ref": "#/definitions/DatasetParameterValueType" - } - }, - "required": [ - "Id", - "Name", - "ValueType" - ], - "type": "object" - }, - "IntegerDatasetParameterDefaultValues": { - "additionalProperties": false, - "description": "

The default values of an integer parameter.

", - "properties": { - "StaticValues": { - "description": "

A list of static default values for a given integer parameter.

", - "items": { - "default": 0, - "description": "

The default value for the integer parameter.

", - "type": "number" - }, - "maxItems": 32, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "JoinInstruction": { - "additionalProperties": false, - "description": "

The instructions associated with a join.

", - "properties": { - "LeftJoinKeyProperties": { - "$ref": "#/definitions/JoinKeyProperties" - }, - "LeftOperand": { - "description": "

The operand on the left side of a join.

", - "maxLength": 64, - "minLength": 1, - "pattern": "^[0-9a-zA-Z-]*$", - "type": "string" - }, - "OnClause": { - "description": "

The join instructions provided in the ON clause of a join.

", - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "RightJoinKeyProperties": { - "$ref": "#/definitions/JoinKeyProperties" - }, - "RightOperand": { - "description": "

The operand on the right side of a join.

", - "maxLength": 64, - "minLength": 1, - "pattern": "^[0-9a-zA-Z-]*$", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/JoinType" - } - }, - "required": [ - "LeftOperand", - "OnClause", - "RightOperand", - "Type" - ], - "type": "object" - }, - "JoinKeyProperties": { - "additionalProperties": false, - "description": "

Properties associated with the columns participating in a join.

", - "properties": { - "UniqueKey": { - "description": "

A value that indicates that a row in a table is uniquely identified by the columns in\n a join key. This is used by Amazon QuickSight to optimize query performance.

", - "type": "boolean" - } - }, - "type": "object" - }, - "JoinType": { - "enum": [ - "INNER", - "OUTER", - "LEFT", - "RIGHT" - ], - "type": "string" - }, - "LogicalTable": { - "additionalProperties": false, - "description": "

A logical table is a unit that joins and that data\n transformations operate on. A logical table has a source, which can be either a physical\n table or result of a join. When a logical table points to a physical table, the logical\n table acts as a mutable copy of that physical table through transform operations.

", - "properties": { - "Alias": { - "description": "

A display name for the logical table.

", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "DataTransforms": { - "description": "

Transform operations that act on this logical table. For this structure to be valid, only one of the attributes can be non-null.

", - "items": { - "$ref": "#/definitions/TransformOperation" - }, - "maxItems": 2048, - "minItems": 1, - "type": "array" - }, - "Source": { - "$ref": "#/definitions/LogicalTableSource" - } - }, - "required": [ - "Alias" - ], - "type": "object" - }, - "LogicalTableMap": { - "additionalProperties": false, - "maxProperties": 64, - "minProperties": 1, - "patternProperties": { - "^[0-9a-zA-Z-]*$": { - "$ref": "#/definitions/LogicalTable" - } - }, - "type": "object" - }, - "LogicalTableSource": { - "additionalProperties": false, - "description": "

Information about the source of a logical table. This is a variant type structure. For\n this structure to be valid, only one of the attributes can be non-null.

", - "properties": { - "DataSetArn": { - "description": "

The Amazon Resource Number (ARN) of the parent dataset.

", - "type": "string" - }, - "JoinInstruction": { - "$ref": "#/definitions/JoinInstruction" - }, - "PhysicalTableId": { - "description": "

Physical table ID.

", - "maxLength": 64, - "minLength": 1, - "pattern": "^[0-9a-zA-Z-]*$", - "type": "string" - } - }, - "type": "object" - }, - "LookbackWindow": { - "additionalProperties": false, - "description": "

The lookback window setup of an incremental refresh configuration.

", - "properties": { - "ColumnName": { - "description": "

The name of the lookback window column.

", - "type": "string" - }, - "Size": { - "default": 0, - "description": "

The lookback window column size.

", - "minimum": 1, - "type": "number" - }, - "SizeUnit": { - "$ref": "#/definitions/LookbackWindowSizeUnit" - } - }, - "required": [ - "ColumnName", - "Size", - "SizeUnit" - ], - "type": "object" - }, - "LookbackWindowSizeUnit": { - "enum": [ - "HOUR", - "DAY", - "WEEK" - ], - "type": "string" - }, - "NewDefaultValues": { - "additionalProperties": false, - "description": "

The configuration that overrides the existing default values for a dataset parameter that is inherited from another dataset.

", - "properties": { - "DateTimeStaticValues": { - "description": "

A list of static default values for a given date time parameter.

", - "items": { - "description": "

The default value for the date time parameter.

", - "type": "string" - }, - "maxItems": 32, - "minItems": 0, - "type": "array" - }, - "DecimalStaticValues": { - "description": "

A list of static default values for a given decimal parameter.

", - "items": { - "default": 0, - "description": "

The default value for the decimal parameter.

", - "type": "number" - }, - "maxItems": 32, - "minItems": 0, - "type": "array" - }, - "IntegerStaticValues": { - "description": "

A list of static default values for a given integer parameter.

", - "items": { - "default": 0, - "description": "

The default value for the integer parameter.

", - "type": "number" - }, - "maxItems": 32, - "minItems": 0, - "type": "array" - }, - "StringStaticValues": { - "description": "

A list of static default values for a given string parameter.

", - "items": { - "description": "

The default value for the string parameter.

", - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "maxItems": 32, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "OutputColumn": { - "additionalProperties": false, - "description": "

Output column.

", - "properties": { - "Description": { - "description": "

A description for a column.

", - "maxLength": 500, - "minLength": 0, - "type": "string" - }, - "Name": { - "description": "

The display name of the column..

", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "SubType": { - "$ref": "#/definitions/ColumnDataSubType" - }, - "Type": { - "$ref": "#/definitions/ColumnDataType" - } - }, - "type": "object" - }, - "OverrideDatasetParameterOperation": { - "additionalProperties": false, - "description": "

A transform operation that overrides the dataset parameter values that are defined in another dataset.

", - "properties": { - "NewDefaultValues": { - "$ref": "#/definitions/NewDefaultValues" - }, - "NewParameterName": { - "description": "

The new name for the parameter.

", - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "ParameterName": { - "description": "

The name of the parameter to be overridden with different values.

", - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - } - }, - "required": [ - "ParameterName" - ], - "type": "object" - }, - "PhysicalTable": { - "additionalProperties": false, - "description": "

A view of a data source that contains information about the shape of the data in the\n underlying source. This is a variant type structure. For this structure to be valid,\n only one of the attributes can be non-null.

", - "properties": { - "CustomSql": { - "$ref": "#/definitions/CustomSql" - }, - "RelationalTable": { - "$ref": "#/definitions/RelationalTable" - }, - "S3Source": { - "$ref": "#/definitions/S3Source" - } - }, - "type": "object" - }, - "PhysicalTableMap": { - "additionalProperties": false, - "maxProperties": 32, - "minProperties": 0, - "patternProperties": { - "^[0-9a-zA-Z-]*$": { - "$ref": "#/definitions/PhysicalTable" - } - }, - "type": "object" - }, - "ProjectOperation": { - "additionalProperties": false, - "description": "

A transform operation that projects columns. Operations that come after a projection\n can only refer to projected columns.

", - "properties": { - "ProjectedColumns": { - "description": "

Projected columns.

", - "items": { - "type": "string" - }, - "maxItems": 2000, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "ProjectedColumns" - ], - "type": "object" - }, - "RefreshConfiguration": { - "additionalProperties": false, - "description": "

The refresh configuration of a dataset.

", - "properties": { - "IncrementalRefresh": { - "$ref": "#/definitions/IncrementalRefresh" - } - }, - "required": [ - "IncrementalRefresh" - ], - "type": "object" - }, - "RelationalTable": { - "additionalProperties": false, - "description": "

A physical table type for relational data sources.

", - "properties": { - "Catalog": { - "description": "

The catalog associated with a table.

", - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "DataSourceArn": { - "description": "

The Amazon Resource Name (ARN) for the data source.

", - "type": "string" - }, - "InputColumns": { - "description": "

The column schema of the table.

", - "items": { - "$ref": "#/definitions/InputColumn" - }, - "maxItems": 2048, - "minItems": 1, - "type": "array" - }, - "Name": { - "description": "

The name of the relational table.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Schema": { - "description": "

The schema name. This name applies to certain relational database engines.

", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "DataSourceArn", - "Name" - ], - "type": "object" - }, - "RenameColumnOperation": { - "additionalProperties": false, - "description": "

A transform operation that renames a column.

", - "properties": { - "ColumnName": { - "description": "

The name of the column to be renamed.

", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "NewColumnName": { - "description": "

The new name for the column.

", - "maxLength": 127, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ColumnName", - "NewColumnName" - ], - "type": "object" - }, - "ResourcePermission": { - "additionalProperties": false, - "description": "

Permission for the resource.

", - "properties": { - "Actions": { - "description": "

The IAM action to grant or revoke permissions on.

", - "items": { - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - }, - "Principal": { - "description": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Actions", - "Principal" - ], - "type": "object" - }, - "RowLevelPermissionDataSet": { - "additionalProperties": false, - "description": "

Information about a dataset that contains permissions for row-level security (RLS).\n The permissions dataset maps fields to users or groups. For more information, see\n Using Row-Level Security (RLS) to Restrict Access to a Dataset in the Amazon QuickSight User\n Guide.

\n

The option to deny permissions by setting PermissionPolicy to DENY_ACCESS is\n not supported for new RLS datasets.

", - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) of the dataset that contains permissions for RLS.

", - "type": "string" - }, - "FormatVersion": { - "$ref": "#/definitions/RowLevelPermissionFormatVersion" - }, - "Namespace": { - "description": "

The namespace associated with the dataset that contains permissions for RLS.

", - "maxLength": 64, - "minLength": 0, - "pattern": "^[a-zA-Z0-9._-]*$", - "type": "string" - }, - "PermissionPolicy": { - "$ref": "#/definitions/RowLevelPermissionPolicy" - }, - "Status": { - "$ref": "#/definitions/Status" - } - }, - "required": [ - "Arn", - "PermissionPolicy" - ], - "type": "object" - }, - "RowLevelPermissionFormatVersion": { - "enum": [ - "VERSION_1", - "VERSION_2" - ], - "type": "string" - }, - "RowLevelPermissionPolicy": { - "enum": [ - "GRANT_ACCESS", - "DENY_ACCESS" - ], - "type": "string" - }, - "RowLevelPermissionTagConfiguration": { - "additionalProperties": false, - "description": "

The configuration of tags on a dataset to set row-level security.

", - "properties": { - "Status": { - "$ref": "#/definitions/Status" - }, - "TagRuleConfigurations": { - "description": "

A list of tag configuration rules to apply to a dataset. All tag configurations have the OR condition. Tags within each tile will be joined (AND). At least one rule in this structure must have all tag values assigned to it to apply Row-level security (RLS) to the dataset.

", - "items": { - "items": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - }, - "TagRules": { - "description": "

A set of rules associated with row-level security, such as the tag names and columns that they are assigned to.

", - "items": { - "$ref": "#/definitions/RowLevelPermissionTagRule" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "TagRules" - ], - "type": "object" - }, - "RowLevelPermissionTagRule": { - "additionalProperties": false, - "description": "

A set of rules associated with a tag.

", - "properties": { - "ColumnName": { - "description": "

The column name that a tag key is assigned to.

", - "type": "string" - }, - "MatchAllValue": { - "description": "

A string that you want to use to filter by all the values in a column in the dataset and don\u2019t want to list the values one by one. For example, you can use an asterisk as your match all value.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "TagKey": { - "description": "

The unique key for a tag.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "TagMultiValueDelimiter": { - "description": "

A string that you want to use to delimit the values when you pass the values at run time. For example, you can delimit the values with a comma.

", - "maxLength": 10, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "ColumnName", - "TagKey" - ], - "type": "object" - }, - "S3Source": { - "additionalProperties": false, - "description": "

A physical table type for an S3 data source.

", - "properties": { - "DataSourceArn": { - "description": "

The Amazon Resource Name (ARN) for the data source.

", - "type": "string" - }, - "InputColumns": { - "description": "

A physical table type for an S3 data source.

\n \n

For files that aren't JSON, only STRING data types are supported in input columns.

\n
", - "items": { - "$ref": "#/definitions/InputColumn" - }, - "maxItems": 2048, - "minItems": 1, - "type": "array" - }, - "UploadSettings": { - "$ref": "#/definitions/UploadSettings" - } - }, - "required": [ - "DataSourceArn", - "InputColumns" - ], - "type": "object" - }, - "Status": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "StringDatasetParameter": { - "additionalProperties": false, - "description": "

A string parameter for a dataset.

", - "properties": { - "DefaultValues": { - "$ref": "#/definitions/StringDatasetParameterDefaultValues" - }, - "Id": { - "description": "

An identifier for the string parameter that is created in the dataset.

", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "Name": { - "description": "

The name of the string parameter that is created in the dataset.

", - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "ValueType": { - "$ref": "#/definitions/DatasetParameterValueType" - } - }, - "required": [ - "Id", - "Name", - "ValueType" - ], - "type": "object" - }, - "StringDatasetParameterDefaultValues": { - "additionalProperties": false, - "description": "

The default values of a string parameter.

", - "properties": { - "StaticValues": { - "description": "

A list of static default values for a given string parameter.

", - "items": { - "description": "

The default value for the string parameter.

", - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "maxItems": 32, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", - "properties": { - "Key": { - "description": "

Tag key.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "

Tag value.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TagColumnOperation": { - "additionalProperties": false, - "description": "

A transform operation that tags a column with additional information.

", - "properties": { - "ColumnName": { - "description": "

The column that this operation acts on.

", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "

The dataset column tag, currently only used for geospatial type tagging.

\n \n

This is not tags for the Amazon Web Services tagging feature.

\n
", - "items": { - "$ref": "#/definitions/ColumnTag" - }, - "maxItems": 16, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "ColumnName", - "Tags" - ], - "type": "object" - }, - "TextQualifier": { - "enum": [ - "DOUBLE_QUOTE", - "SINGLE_QUOTE" - ], - "type": "string" - }, - "TimeGranularity": { - "enum": [ - "YEAR", - "QUARTER", - "MONTH", - "WEEK", - "DAY", - "HOUR", - "MINUTE", - "SECOND", - "MILLISECOND" - ], - "type": "string" - }, - "TransformOperation": { - "additionalProperties": false, - "description": "

A data transformation on a logical table. This is a variant type structure. For this\n structure to be valid, only one of the attributes can be non-null.

", - "properties": { - "CastColumnTypeOperation": { - "$ref": "#/definitions/CastColumnTypeOperation" - }, - "CreateColumnsOperation": { - "$ref": "#/definitions/CreateColumnsOperation" - }, - "FilterOperation": { - "$ref": "#/definitions/FilterOperation" - }, - "OverrideDatasetParameterOperation": { - "$ref": "#/definitions/OverrideDatasetParameterOperation" - }, - "ProjectOperation": { - "$ref": "#/definitions/ProjectOperation" - }, - "RenameColumnOperation": { - "$ref": "#/definitions/RenameColumnOperation" - }, - "TagColumnOperation": { - "$ref": "#/definitions/TagColumnOperation" - }, - "UntagColumnOperation": { - "$ref": "#/definitions/UntagColumnOperation" - } - }, - "type": "object" - }, - "UntagColumnOperation": { - "additionalProperties": false, - "description": "

A transform operation that removes tags associated with a column.

", - "properties": { - "ColumnName": { - "description": "

The column that this operation acts on.

", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "TagNames": { - "description": "

The column tags to remove from this column.

", - "items": { - "$ref": "#/definitions/ColumnTagName" - }, - "type": "array" - } - }, - "required": [ - "ColumnName", - "TagNames" - ], - "type": "object" - }, - "UploadSettings": { - "additionalProperties": false, - "description": "

Information about the format for a source file or files.

", - "properties": { - "ContainsHeader": { - "description": "

Whether the file has a header row, or the files each have a header row.

", - "type": "boolean" - }, - "Delimiter": { - "description": "

The delimiter between values in the file.

", - "maxLength": 1, - "minLength": 1, - "type": "string" - }, - "Format": { - "$ref": "#/definitions/FileFormat" - }, - "StartFromRow": { - "description": "

A row number to start reading data from.

", - "minimum": 1, - "type": "number" - }, - "TextQualifier": { - "$ref": "#/definitions/TextQualifier" - } - }, - "type": "object" - } - }, - "description": "Definition of the AWS::QuickSight::DataSet Resource Type.", - "handlers": { - "create": { - "permissions": [ - "quicksight:DescribeDataSet", - "quicksight:DescribeDataSetPermissions", - "quicksight:DescribeIngestion", - "quicksight:ListIngestions", - "quicksight:CreateDataSet", - "quicksight:PassDataSource", - "quicksight:PassDataSet", - "quicksight:TagResource", - "quicksight:ListTagsForResource", - "quicksight:DescribeDataSetRefreshProperties", - "quicksight:PutDataSetRefreshProperties", - "quicksight:CreateFolderMembership", - "quicksight:DeleteFolderMembership", - "quicksight:ListFoldersForResource" - ] - }, - "delete": { - "permissions": [ - "quicksight:DescribeDataSet", - "quicksight:DeleteDataSet", - "quicksight:ListTagsForResource", - "quicksight:DescribeIngestion", - "quicksight:DeleteDataSetRefreshProperties", - "quicksight:DescribeDataSetRefreshProperties" - ] - }, - "list": { - "permissions": [ - "quicksight:DescribeDataSet", - "quicksight:ListDataSets" - ] - }, - "read": { - "permissions": [ - "quicksight:DescribeDataSet", - "quicksight:DescribeDataSetPermissions", - "quicksight:ListTagsForResource", - "quicksight:DescribeDataSetRefreshProperties" - ] - }, - "update": { - "permissions": [ - "quicksight:DescribeDataSet", - "quicksight:DescribeDataSetPermissions", - "quicksight:PassDataSource", - "quicksight:UpdateDataSet", - "quicksight:UpdateDataSetPermissions", - "quicksight:PassDataSet", - "quicksight:DescribeIngestion", - "quicksight:ListIngestions", - "quicksight:CancelIngestion", - "quicksight:CreateFolderMembership", - "quicksight:DeleteFolderMembership", - "quicksight:ListFoldersForResource", - "quicksight:TagResource", - "quicksight:UntagResource", - "quicksight:ListTagsForResource", - "quicksight:PutDataSetRefreshProperties", - "quicksight:DescribeDataSetRefreshProperties", - "quicksight:DeleteDataSetRefreshProperties" - ] - } - }, - "primaryIdentifier": [ - "/properties/AwsAccountId", - "/properties/DataSetId" - ], - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) of the resource.

", - "type": "string" - }, - "AwsAccountId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "ColumnGroups": { - "description": "

Groupings of columns that work together in certain Amazon QuickSight features. Currently, only geospatial hierarchy is supported.

", - "items": { - "$ref": "#/definitions/ColumnGroup" - }, - "maxItems": 8, - "minItems": 1, - "type": "array" - }, - "ColumnLevelPermissionRules": { - "description": "

A set of one or more definitions of a \n ColumnLevelPermissionRule\n .

", - "items": { - "$ref": "#/definitions/ColumnLevelPermissionRule" - }, - "minItems": 1, - "type": "array" - }, - "ConsumedSpiceCapacityInBytes": { - "default": 0, - "description": "

The amount of SPICE capacity used by this dataset. This is 0 if the dataset isn't\n imported into SPICE.

", - "type": "number" - }, - "CreatedTime": { - "description": "

The time that this dataset was created.

", - "format": "string", - "type": "string" - }, - "DataSetId": { - "type": "string" - }, - "DataSetRefreshProperties": { - "$ref": "#/definitions/DataSetRefreshProperties" - }, - "DataSetUsageConfiguration": { - "$ref": "#/definitions/DataSetUsageConfiguration" - }, - "DatasetParameters": { - "description": "

The parameter declarations of the dataset.

", - "items": { - "$ref": "#/definitions/DatasetParameter" - }, - "maxItems": 32, - "minItems": 0, - "type": "array" - }, - "FieldFolders": { - "$ref": "#/definitions/FieldFolderMap" - }, - "FolderArns": { - "description": "

When you create the dataset, Amazon QuickSight adds the dataset to these folders.

", - "items": { - "type": "string" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ImportMode": { - "$ref": "#/definitions/DataSetImportMode" - }, - "IngestionWaitPolicy": { - "$ref": "#/definitions/IngestionWaitPolicy" - }, - "LastUpdatedTime": { - "description": "

The last time that this dataset was updated.

", - "format": "string", - "type": "string" - }, - "LogicalTableMap": { - "$ref": "#/definitions/LogicalTableMap" - }, - "Name": { - "description": "

The display name for the dataset.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "OutputColumns": { - "description": "

The list of columns after all transforms. These columns are available in templates,\n analyses, and dashboards.

", - "items": { - "$ref": "#/definitions/OutputColumn" - }, - "type": "array" - }, - "Permissions": { - "description": "

A list of resource permissions on the dataset.

", - "items": { - "$ref": "#/definitions/ResourcePermission" - }, - "maxItems": 64, - "minItems": 1, - "type": "array" - }, - "PhysicalTableMap": { - "$ref": "#/definitions/PhysicalTableMap" - }, - "RowLevelPermissionDataSet": { - "$ref": "#/definitions/RowLevelPermissionDataSet" - }, - "RowLevelPermissionTagConfiguration": { - "$ref": "#/definitions/RowLevelPermissionTagConfiguration" - }, - "Tags": { - "description": "

Contains a map of the key-value pairs for the resource tag or tags assigned to the dataset.

", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/ConsumedSpiceCapacityInBytes", - "/properties/CreatedTime", - "/properties/LastUpdatedTime", - "/properties/OutputColumns" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::QuickSight::DataSet", - "writeOnlyProperties": [ - "/properties/FieldFolders", - "/properties/IngestionWaitPolicy", - "/properties/FolderArns" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/DataSetId" + ], + "definitions": { + "CalculatedColumn": { + "additionalProperties": false, + "description": "

A calculated column for a dataset.

", + "properties": { + "ColumnId": { + "description": "

A unique ID to identify a calculated column. During a dataset update, if the column ID\n of a calculated column matches that of an existing calculated column, Amazon QuickSight\n preserves the existing calculated column.

", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "ColumnName": { + "description": "

Column name.

", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Expression": { + "description": "

An expression that defines the calculated column.

", + "maxLength": 250000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ColumnId", + "ColumnName", + "Expression" + ], + "type": "object" + }, + "CastColumnTypeOperation": { + "additionalProperties": false, + "description": "

A transform operation that casts a column to a different type.

", + "properties": { + "ColumnName": { + "description": "

Column name.

", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Format": { + "description": "

When casting a column from string to datetime type, you can supply a string in a\n format supported by Amazon QuickSight to denote the source data format.

", + "maxLength": 32, + "minLength": 0, + "type": "string" + }, + "NewColumnType": { + "$ref": "#/definitions/ColumnDataType" + }, + "SubType": { + "$ref": "#/definitions/ColumnDataSubType" + } + }, + "required": [ + "ColumnName", + "NewColumnType" + ], + "type": "object" + }, + "ColumnDataSubType": { + "enum": [ + "FLOAT", + "FIXED" + ], + "type": "string" + }, + "ColumnDataType": { + "enum": [ + "STRING", + "INTEGER", + "DECIMAL", + "DATETIME" + ], + "type": "string" + }, + "ColumnDescription": { + "additionalProperties": false, + "description": "

Metadata that contains a description for a column.

", + "properties": { + "Text": { + "description": "

The text of a description for a column.

", + "maxLength": 500, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "ColumnGroup": { + "additionalProperties": false, + "description": "

Groupings of columns that work together in certain Amazon QuickSight features. This is\n a variant type structure. For this structure to be valid, only one of the attributes can\n be non-null.

", + "properties": { + "GeoSpatialColumnGroup": { + "$ref": "#/definitions/GeoSpatialColumnGroup" + } + }, + "type": "object" + }, + "ColumnLevelPermissionRule": { + "additionalProperties": false, + "description": "

A rule defined to grant access on one or more restricted columns.\n Each dataset can have multiple rules.\n To create a restricted column, you add it to one or more rules.\n Each rule must contain at least one column and at least one user or group.\n To be able to see a restricted column, a user or group needs to be added\n to a rule for that column.

", + "properties": { + "ColumnNames": { + "description": "

An array of column names.

", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "Principals": { + "description": "

An array of Amazon Resource Names (ARNs) for Amazon QuickSight users or groups.

", + "items": { + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "ColumnTag": { + "additionalProperties": false, + "description": "

A tag for a column in a\n \n TagColumnOperation\n \n structure. This is a\n variant type structure. For this structure to be valid, only one of the attributes can\n be non-null.

", + "properties": { + "ColumnDescription": { + "$ref": "#/definitions/ColumnDescription" + }, + "ColumnGeographicRole": { + "$ref": "#/definitions/GeoSpatialDataRole" + } + }, + "type": "object" + }, + "ColumnTagName": { + "enum": [ + "COLUMN_GEOGRAPHIC_ROLE", + "COLUMN_DESCRIPTION" + ], + "type": "string" + }, + "CreateColumnsOperation": { + "additionalProperties": false, + "description": "

A transform operation that creates calculated columns. Columns created in one such\n operation form a lexical closure.

", + "properties": { + "Columns": { + "description": "

Calculated columns to create.

", + "items": { + "$ref": "#/definitions/CalculatedColumn" + }, + "maxItems": 128, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "CustomSql": { + "additionalProperties": false, + "description": "

A physical table type built from the results of the custom SQL query.

", + "properties": { + "Columns": { + "description": "

The column schema from the SQL query result set.

", + "items": { + "$ref": "#/definitions/InputColumn" + }, + "maxItems": 2048, + "minItems": 1, + "type": "array" + }, + "DataSourceArn": { + "description": "

The Amazon Resource Name (ARN) of the data source.

", + "type": "string" + }, + "Name": { + "description": "

A display name for the SQL query result.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SqlQuery": { + "description": "

The SQL query.

", + "maxLength": 168000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DataSourceArn", + "Name", + "SqlQuery" + ], + "type": "object" + }, + "DataSetImportMode": { + "enum": [ + "SPICE", + "DIRECT_QUERY" + ], + "type": "string" + }, + "DataSetRefreshProperties": { + "additionalProperties": false, + "description": "

The refresh properties of a dataset.

", + "properties": { + "FailureConfiguration": { + "$ref": "#/definitions/RefreshFailureConfiguration" + }, + "RefreshConfiguration": { + "$ref": "#/definitions/RefreshConfiguration" + } + }, + "type": "object" + }, + "DataSetUsageConfiguration": { + "additionalProperties": false, + "description": "

The usage configuration to apply to child datasets that reference this dataset as a source.

", + "properties": { + "DisableUseAsDirectQuerySource": { + "default": false, + "description": "

An option that controls whether a child dataset of a direct query can use this dataset as a source.

", + "type": "boolean" + }, + "DisableUseAsImportedSource": { + "default": false, + "description": "

An option that controls whether a child dataset that's stored in QuickSight can use this dataset as a source.

", + "type": "boolean" + } + }, + "type": "object" + }, + "DataSetUseAs": { + "enum": [ + "RLS_RULES" + ], + "type": "string" + }, + "DatasetParameter": { + "additionalProperties": false, + "description": "

A dataset parameter.

", + "properties": { + "DateTimeDatasetParameter": { + "$ref": "#/definitions/DateTimeDatasetParameter" + }, + "DecimalDatasetParameter": { + "$ref": "#/definitions/DecimalDatasetParameter" + }, + "IntegerDatasetParameter": { + "$ref": "#/definitions/IntegerDatasetParameter" + }, + "StringDatasetParameter": { + "$ref": "#/definitions/StringDatasetParameter" + } + }, + "type": "object" + }, + "DatasetParameterValueType": { + "enum": [ + "MULTI_VALUED", + "SINGLE_VALUED" + ], + "type": "string" + }, + "DateTimeDatasetParameter": { + "additionalProperties": false, + "description": "

A date time parameter for a dataset.

", + "properties": { + "DefaultValues": { + "$ref": "#/definitions/DateTimeDatasetParameterDefaultValues" + }, + "Id": { + "description": "

An identifier for the parameter that is created in the dataset.

", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "Name": { + "description": "

The name of the date time parameter that is created in the dataset.

", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "ValueType": { + "$ref": "#/definitions/DatasetParameterValueType" + } + }, + "required": [ + "Id", + "Name", + "ValueType" + ], + "type": "object" + }, + "DateTimeDatasetParameterDefaultValues": { + "additionalProperties": false, + "description": "

The default values of a date time parameter.

", + "properties": { + "StaticValues": { + "description": "

A list of static default values for a given date time parameter.

", + "items": { + "description": "

The default value for the date time parameter.

", + "type": "string" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DecimalDatasetParameter": { + "additionalProperties": false, + "description": "

A decimal parameter for a dataset.

", + "properties": { + "DefaultValues": { + "$ref": "#/definitions/DecimalDatasetParameterDefaultValues" + }, + "Id": { + "description": "

An identifier for the decimal parameter created in the dataset.

", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "Name": { + "description": "

The name of the decimal parameter that is created in the dataset.

", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ValueType": { + "$ref": "#/definitions/DatasetParameterValueType" + } + }, + "required": [ + "Id", + "Name", + "ValueType" + ], + "type": "object" + }, + "DecimalDatasetParameterDefaultValues": { + "additionalProperties": false, + "description": "

The default values of a decimal parameter.

", + "properties": { + "StaticValues": { + "description": "

A list of static default values for a given decimal parameter.

", + "items": { + "default": 0, + "description": "

The default value for the decimal parameter.

", + "type": "number" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FieldFolder": { + "additionalProperties": false, + "description": "

A FieldFolder element is a folder that contains fields and nested subfolders.

", + "properties": { + "Columns": { + "description": "

A folder has a list of columns. A column can only be in one folder.

", + "items": { + "type": "string" + }, + "maxItems": 5000, + "minItems": 0, + "type": "array" + }, + "Description": { + "description": "

The description for a field folder.

", + "maxLength": 500, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "FieldFolderMap": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "$ref": "#/definitions/FieldFolder" + } + }, + "type": "object" + }, + "FileFormat": { + "enum": [ + "CSV", + "TSV", + "CLF", + "ELF", + "XLSX", + "JSON" + ], + "type": "string" + }, + "FilterOperation": { + "additionalProperties": false, + "description": "

A transform operation that filters rows based on a condition.

", + "properties": { + "ConditionExpression": { + "description": "

An expression that must evaluate to a Boolean value. Rows for which the expression\n evaluates to true are kept in the dataset.

", + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ConditionExpression" + ], + "type": "object" + }, + "GeoSpatialColumnGroup": { + "additionalProperties": false, + "description": "

Geospatial column group that denotes a hierarchy.

", + "properties": { + "Columns": { + "description": "

Columns in this hierarchy.

", + "items": { + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "CountryCode": { + "$ref": "#/definitions/GeoSpatialCountryCode" + }, + "Name": { + "description": "

A display name for the hierarchy.

", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Columns", + "Name" + ], + "type": "object" + }, + "GeoSpatialCountryCode": { + "enum": [ + "US" + ], + "type": "string" + }, + "GeoSpatialDataRole": { + "enum": [ + "COUNTRY", + "STATE", + "COUNTY", + "CITY", + "POSTCODE", + "LONGITUDE", + "LATITUDE", + "POLITICAL1", + "CENSUS_TRACT", + "CENSUS_BLOCK_GROUP", + "CENSUS_BLOCK" + ], + "type": "string" + }, + "IncrementalRefresh": { + "additionalProperties": false, + "description": "

The incremental refresh configuration for a dataset.

", + "properties": { + "LookbackWindow": { + "$ref": "#/definitions/LookbackWindow" + } + }, + "required": [ + "LookbackWindow" + ], + "type": "object" + }, + "IngestionWaitPolicy": { + "additionalProperties": false, + "description": "

Wait policy to use when creating/updating dataset. Default is to wait for SPICE ingestion to finish with timeout of 36 hours.

", + "properties": { + "IngestionWaitTimeInHours": { + "default": 36, + "description": "

The maximum time (in hours) to wait for Ingestion to complete. Default timeout is 36 hours.\n Applicable only when DataSetImportMode mode is set to SPICE and WaitForSpiceIngestion is set to true.

", + "maximum": 36, + "minimum": 1, + "type": "number" + }, + "WaitForSpiceIngestion": { + "default": true, + "description": "

Wait for SPICE ingestion to finish to mark dataset creation/update successful. Default (true).\n Applicable only when DataSetImportMode mode is set to SPICE.

", + "type": "boolean" + } + }, + "type": "object" + }, + "InputColumn": { + "additionalProperties": false, + "description": "

Metadata for a column that is used as the input of a transform operation.

", + "properties": { + "Name": { + "description": "

The name of this column in the underlying data source.

", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "SubType": { + "$ref": "#/definitions/ColumnDataSubType" + }, + "Type": { + "$ref": "#/definitions/InputColumnDataType" + } + }, + "required": [ + "Name", + "Type" + ], + "type": "object" + }, + "InputColumnDataType": { + "enum": [ + "STRING", + "INTEGER", + "DECIMAL", + "DATETIME", + "BIT", + "BOOLEAN", + "JSON" + ], + "type": "string" + }, + "IntegerDatasetParameter": { + "additionalProperties": false, + "description": "

An integer parameter for a dataset.

", + "properties": { + "DefaultValues": { + "$ref": "#/definitions/IntegerDatasetParameterDefaultValues" + }, + "Id": { + "description": "

An identifier for the integer parameter created in the dataset.

", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "Name": { + "description": "

The name of the integer parameter that is created in the dataset.

", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ValueType": { + "$ref": "#/definitions/DatasetParameterValueType" + } + }, + "required": [ + "Id", + "Name", + "ValueType" + ], + "type": "object" + }, + "IntegerDatasetParameterDefaultValues": { + "additionalProperties": false, + "description": "

The default values of an integer parameter.

", + "properties": { + "StaticValues": { + "description": "

A list of static default values for a given integer parameter.

", + "items": { + "default": 0, + "description": "

The default value for the integer parameter.

", + "type": "number" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "JoinInstruction": { + "additionalProperties": false, + "description": "

The instructions associated with a join.

", + "properties": { + "LeftJoinKeyProperties": { + "$ref": "#/definitions/JoinKeyProperties" + }, + "LeftOperand": { + "description": "

The operand on the left side of a join.

", + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9a-zA-Z-]*$", + "type": "string" + }, + "OnClause": { + "description": "

The join instructions provided in the ON clause of a join.

", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "RightJoinKeyProperties": { + "$ref": "#/definitions/JoinKeyProperties" + }, + "RightOperand": { + "description": "

The operand on the right side of a join.

", + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9a-zA-Z-]*$", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/JoinType" + } + }, + "required": [ + "LeftOperand", + "OnClause", + "RightOperand", + "Type" + ], + "type": "object" + }, + "JoinKeyProperties": { + "additionalProperties": false, + "description": "

Properties associated with the columns participating in a join.

", + "properties": { + "UniqueKey": { + "description": "

A value that indicates that a row in a table is uniquely identified by the columns in\n a join key. This is used by Amazon QuickSight to optimize query performance.

", + "type": "boolean" + } + }, + "type": "object" + }, + "JoinType": { + "enum": [ + "INNER", + "OUTER", + "LEFT", + "RIGHT" + ], + "type": "string" + }, + "LogicalTable": { + "additionalProperties": false, + "description": "

A logical table is a unit that joins and that data\n transformations operate on. A logical table has a source, which can be either a physical\n table or result of a join. When a logical table points to a physical table, the logical\n table acts as a mutable copy of that physical table through transform operations.

", + "properties": { + "Alias": { + "description": "

A display name for the logical table.

", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "DataTransforms": { + "description": "

Transform operations that act on this logical table. For this structure to be valid, only one of the attributes can be non-null.

", + "items": { + "$ref": "#/definitions/TransformOperation" + }, + "maxItems": 2048, + "minItems": 1, + "type": "array" + }, + "Source": { + "$ref": "#/definitions/LogicalTableSource" + } + }, + "required": [ + "Alias" + ], + "type": "object" + }, + "LogicalTableMap": { + "additionalProperties": false, + "maxProperties": 64, + "minProperties": 1, + "patternProperties": { + "^[0-9a-zA-Z-]*$": { + "$ref": "#/definitions/LogicalTable" + } + }, + "type": "object" + }, + "LogicalTableSource": { + "additionalProperties": false, + "description": "

Information about the source of a logical table. This is a variant type structure. For\n this structure to be valid, only one of the attributes can be non-null.

", + "properties": { + "DataSetArn": { + "description": "

The Amazon Resource Number (ARN) of the parent dataset.

", + "type": "string" + }, + "JoinInstruction": { + "$ref": "#/definitions/JoinInstruction" + }, + "PhysicalTableId": { + "description": "

Physical table ID.

", + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9a-zA-Z-]*$", + "type": "string" + } + }, + "type": "object" + }, + "LookbackWindow": { + "additionalProperties": false, + "description": "

The lookback window setup of an incremental refresh configuration.

", + "properties": { + "ColumnName": { + "description": "

The name of the lookback window column.

", + "type": "string" + }, + "Size": { + "default": 0, + "description": "

The lookback window column size.

", + "minimum": 1, + "type": "number" + }, + "SizeUnit": { + "$ref": "#/definitions/LookbackWindowSizeUnit" + } + }, + "required": [ + "ColumnName", + "Size", + "SizeUnit" + ], + "type": "object" + }, + "LookbackWindowSizeUnit": { + "enum": [ + "HOUR", + "DAY", + "WEEK" + ], + "type": "string" + }, + "NewDefaultValues": { + "additionalProperties": false, + "description": "

The configuration that overrides the existing default values for a dataset parameter that is inherited from another dataset.

", + "properties": { + "DateTimeStaticValues": { + "description": "

A list of static default values for a given date time parameter.

", + "items": { + "description": "

The default value for the date time parameter.

", + "type": "string" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + }, + "DecimalStaticValues": { + "description": "

A list of static default values for a given decimal parameter.

", + "items": { + "default": 0, + "description": "

The default value for the decimal parameter.

", + "type": "number" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + }, + "IntegerStaticValues": { + "description": "

A list of static default values for a given integer parameter.

", + "items": { + "default": 0, + "description": "

The default value for the integer parameter.

", + "type": "number" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + }, + "StringStaticValues": { + "description": "

A list of static default values for a given string parameter.

", + "items": { + "description": "

The default value for the string parameter.

", + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "OutputColumn": { + "additionalProperties": false, + "description": "

Output column.

", + "properties": { + "Description": { + "description": "

A description for a column.

", + "maxLength": 500, + "minLength": 0, + "type": "string" + }, + "Name": { + "description": "

The display name of the column..

", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "SubType": { + "$ref": "#/definitions/ColumnDataSubType" + }, + "Type": { + "$ref": "#/definitions/ColumnDataType" + } + }, + "type": "object" + }, + "OverrideDatasetParameterOperation": { + "additionalProperties": false, + "description": "

A transform operation that overrides the dataset parameter values that are defined in another dataset.

", + "properties": { + "NewDefaultValues": { + "$ref": "#/definitions/NewDefaultValues" + }, + "NewParameterName": { + "description": "

The new name for the parameter.

", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterName": { + "description": "

The name of the parameter to be overridden with different values.

", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "required": [ + "ParameterName" + ], + "type": "object" + }, + "PerformanceConfiguration": { + "additionalProperties": false, + "properties": { + "UniqueKeys": { + "items": { + "$ref": "#/definitions/UniqueKey" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "PhysicalTable": { + "additionalProperties": false, + "description": "

A view of a data source that contains information about the shape of the data in the\n underlying source. This is a variant type structure. For this structure to be valid,\n only one of the attributes can be non-null.

", + "properties": { + "CustomSql": { + "$ref": "#/definitions/CustomSql" + }, + "RelationalTable": { + "$ref": "#/definitions/RelationalTable" + }, + "S3Source": { + "$ref": "#/definitions/S3Source" + } + }, + "type": "object" + }, + "PhysicalTableMap": { + "additionalProperties": false, + "maxProperties": 32, + "minProperties": 0, + "patternProperties": { + "^[0-9a-zA-Z-]*$": { + "$ref": "#/definitions/PhysicalTable" + } + }, + "type": "object" + }, + "ProjectOperation": { + "additionalProperties": false, + "description": "

A transform operation that projects columns. Operations that come after a projection\n can only refer to projected columns.

", + "properties": { + "ProjectedColumns": { + "description": "

Projected columns.

", + "items": { + "type": "string" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "ProjectedColumns" + ], + "type": "object" + }, + "RefreshConfiguration": { + "additionalProperties": false, + "description": "

The refresh configuration of a dataset.

", + "properties": { + "IncrementalRefresh": { + "$ref": "#/definitions/IncrementalRefresh" + } + }, + "required": [ + "IncrementalRefresh" + ], + "type": "object" + }, + "RefreshFailureAlertStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "RefreshFailureConfiguration": { + "additionalProperties": false, + "properties": { + "EmailAlert": { + "$ref": "#/definitions/RefreshFailureEmailAlert" + } + }, + "type": "object" + }, + "RefreshFailureEmailAlert": { + "additionalProperties": false, + "properties": { + "AlertStatus": { + "$ref": "#/definitions/RefreshFailureAlertStatus" + } + }, + "type": "object" + }, + "RelationalTable": { + "additionalProperties": false, + "description": "

A physical table type for relational data sources.

", + "properties": { + "Catalog": { + "description": "

The catalog associated with a table.

", + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "DataSourceArn": { + "description": "

The Amazon Resource Name (ARN) for the data source.

", + "type": "string" + }, + "InputColumns": { + "description": "

The column schema of the table.

", + "items": { + "$ref": "#/definitions/InputColumn" + }, + "maxItems": 2048, + "minItems": 1, + "type": "array" + }, + "Name": { + "description": "

The name of the relational table.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Schema": { + "description": "

The schema name. This name applies to certain relational database engines.

", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "DataSourceArn", + "Name" + ], + "type": "object" + }, + "RenameColumnOperation": { + "additionalProperties": false, + "description": "

A transform operation that renames a column.

", + "properties": { + "ColumnName": { + "description": "

The name of the column to be renamed.

", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "NewColumnName": { + "description": "

The new name for the column.

", + "maxLength": 127, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ColumnName" + ], + "type": "object" + }, + "ResourcePermission": { + "additionalProperties": false, + "description": "

Permission for the resource.

", + "properties": { + "Actions": { + "description": "

The IAM action to grant or revoke permissions on.

", + "items": { + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "Principal": { + "description": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Actions", + "Principal" + ], + "type": "object" + }, + "RowLevelPermissionDataSet": { + "additionalProperties": false, + "description": "

Information about a dataset that contains permissions for row-level security (RLS).\n The permissions dataset maps fields to users or groups. For more information, see\n Using Row-Level Security (RLS) to Restrict Access to a Dataset in the Amazon QuickSight User\n Guide.

\n

The option to deny permissions by setting PermissionPolicy to DENY_ACCESS is\n not supported for new RLS datasets.

", + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the dataset that contains permissions for RLS.

", + "type": "string" + }, + "FormatVersion": { + "$ref": "#/definitions/RowLevelPermissionFormatVersion" + }, + "Namespace": { + "description": "

The namespace associated with the dataset that contains permissions for RLS.

", + "maxLength": 64, + "minLength": 0, + "pattern": "^[a-zA-Z0-9._-]*$", + "type": "string" + }, + "PermissionPolicy": { + "$ref": "#/definitions/RowLevelPermissionPolicy" + }, + "Status": { + "$ref": "#/definitions/Status" + } + }, + "required": [ + "Arn", + "PermissionPolicy" + ], + "type": "object" + }, + "RowLevelPermissionFormatVersion": { + "enum": [ + "VERSION_1", + "VERSION_2" + ], + "type": "string" + }, + "RowLevelPermissionPolicy": { + "enum": [ + "GRANT_ACCESS", + "DENY_ACCESS" + ], + "type": "string" + }, + "RowLevelPermissionTagConfiguration": { + "additionalProperties": false, + "description": "

The configuration of tags on a dataset to set row-level security.

", + "properties": { + "Status": { + "$ref": "#/definitions/Status" + }, + "TagRuleConfigurations": { + "description": "

A list of tag configuration rules to apply to a dataset. All tag configurations have the OR condition. Tags within each tile will be joined (AND). At least one rule in this structure must have all tag values assigned to it to apply Row-level security (RLS) to the dataset.

", + "items": { + "items": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + "TagRules": { + "description": "

A set of rules associated with row-level security, such as the tag names and columns that they are assigned to.

", + "items": { + "$ref": "#/definitions/RowLevelPermissionTagRule" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "TagRules" + ], + "type": "object" + }, + "RowLevelPermissionTagRule": { + "additionalProperties": false, + "description": "

A set of rules associated with a tag.

", + "properties": { + "ColumnName": { + "description": "

The column name that a tag key is assigned to.

", + "type": "string" + }, + "MatchAllValue": { + "description": "

A string that you want to use to filter by all the values in a column in the dataset and don\u2019t want to list the values one by one. For example, you can use an asterisk as your match all value.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "TagKey": { + "description": "

The unique key for a tag.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "TagMultiValueDelimiter": { + "description": "

A string that you want to use to delimit the values when you pass the values at run time. For example, you can delimit the values with a comma.

", + "maxLength": 10, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "ColumnName", + "TagKey" + ], + "type": "object" + }, + "S3Source": { + "additionalProperties": false, + "description": "

A physical table type for an S3 data source.

", + "properties": { + "DataSourceArn": { + "description": "

The Amazon Resource Name (ARN) for the data source.

", + "type": "string" + }, + "InputColumns": { + "description": "

A physical table type for an S3 data source.

\n \n

For files that aren't JSON, only STRING data types are supported in input columns.

\n
", + "items": { + "$ref": "#/definitions/InputColumn" + }, + "maxItems": 2048, + "minItems": 1, + "type": "array" + }, + "UploadSettings": { + "$ref": "#/definitions/UploadSettings" + } + }, + "required": [ + "DataSourceArn" + ], + "type": "object" + }, + "Status": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "StringDatasetParameter": { + "additionalProperties": false, + "description": "

A string parameter for a dataset.

", + "properties": { + "DefaultValues": { + "$ref": "#/definitions/StringDatasetParameterDefaultValues" + }, + "Id": { + "description": "

An identifier for the string parameter that is created in the dataset.

", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "Name": { + "description": "

The name of the string parameter that is created in the dataset.

", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ValueType": { + "$ref": "#/definitions/DatasetParameterValueType" + } + }, + "required": [ + "Id", + "Name", + "ValueType" + ], + "type": "object" + }, + "StringDatasetParameterDefaultValues": { + "additionalProperties": false, + "description": "

The default values of a string parameter.

", + "properties": { + "StaticValues": { + "description": "

A list of static default values for a given string parameter.

", + "items": { + "description": "

The default value for the string parameter.

", + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", + "properties": { + "Key": { + "description": "

Tag key.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "

Tag value.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagColumnOperation": { + "additionalProperties": false, + "description": "

A transform operation that tags a column with additional information.

", + "properties": { + "ColumnName": { + "description": "

The column that this operation acts on.

", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "

The dataset column tag, currently only used for geospatial type tagging.

\n \n

This is not tags for the Amazon Web Services tagging feature.

\n
", + "items": { + "$ref": "#/definitions/ColumnTag" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "ColumnName", + "Tags" + ], + "type": "object" + }, + "TextQualifier": { + "enum": [ + "DOUBLE_QUOTE", + "SINGLE_QUOTE" + ], + "type": "string" + }, + "TimeGranularity": { + "enum": [ + "YEAR", + "QUARTER", + "MONTH", + "WEEK", + "DAY", + "HOUR", + "MINUTE", + "SECOND", + "MILLISECOND" + ], + "type": "string" + }, + "TransformOperation": { + "additionalProperties": false, + "description": "

A data transformation on a logical table. This is a variant type structure. For this\n structure to be valid, only one of the attributes can be non-null.

", + "properties": { + "CastColumnTypeOperation": { + "$ref": "#/definitions/CastColumnTypeOperation" + }, + "CreateColumnsOperation": { + "$ref": "#/definitions/CreateColumnsOperation" + }, + "FilterOperation": { + "$ref": "#/definitions/FilterOperation" + }, + "OverrideDatasetParameterOperation": { + "$ref": "#/definitions/OverrideDatasetParameterOperation" + }, + "ProjectOperation": { + "$ref": "#/definitions/ProjectOperation" + }, + "RenameColumnOperation": { + "$ref": "#/definitions/RenameColumnOperation" + }, + "TagColumnOperation": { + "$ref": "#/definitions/TagColumnOperation" + }, + "UntagColumnOperation": { + "$ref": "#/definitions/UntagColumnOperation" + } + }, + "type": "object" + }, + "UniqueKey": { + "additionalProperties": false, + "properties": { + "ColumnNames": { + "items": { + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "ColumnNames" + ], + "type": "object" + }, + "UntagColumnOperation": { + "additionalProperties": false, + "description": "

A transform operation that removes tags associated with a column.

", + "properties": { + "ColumnName": { + "description": "

The column that this operation acts on.

", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "TagNames": { + "description": "

The column tags to remove from this column.

", + "items": { + "$ref": "#/definitions/ColumnTagName" + }, + "type": "array" + } + }, + "required": [ + "ColumnName", + "TagNames" + ], + "type": "object" + }, + "UploadSettings": { + "additionalProperties": false, + "description": "

Information about the format for a source file or files.

", + "properties": { + "ContainsHeader": { + "description": "

Whether the file has a header row, or the files each have a header row.

", + "type": "boolean" + }, + "Delimiter": { + "description": "

The delimiter between values in the file.

", + "maxLength": 1, + "minLength": 1, + "type": "string" + }, + "Format": { + "$ref": "#/definitions/FileFormat" + }, + "StartFromRow": { + "description": "

A row number to start reading data from.

", + "minimum": 1, + "type": "number" + }, + "TextQualifier": { + "$ref": "#/definitions/TextQualifier" + } + }, + "type": "object" + } + }, + "description": "Definition of the AWS::QuickSight::DataSet Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:DescribeDataSet", + "quicksight:DescribeDataSetPermissions", + "quicksight:DescribeIngestion", + "quicksight:ListIngestions", + "quicksight:CreateDataSet", + "quicksight:PassDataSource", + "quicksight:PassDataSet", + "quicksight:TagResource", + "quicksight:ListTagsForResource", + "quicksight:DescribeDataSetRefreshProperties", + "quicksight:PutDataSetRefreshProperties", + "quicksight:CreateFolderMembership", + "quicksight:DeleteFolderMembership", + "quicksight:ListFoldersForResource" + ] + }, + "delete": { + "permissions": [ + "quicksight:DescribeDataSet", + "quicksight:DeleteDataSet", + "quicksight:ListTagsForResource", + "quicksight:DescribeIngestion", + "quicksight:DeleteDataSetRefreshProperties", + "quicksight:DescribeDataSetRefreshProperties" + ] + }, + "list": { + "permissions": [ + "quicksight:DescribeDataSet", + "quicksight:ListDataSets" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeDataSet", + "quicksight:DescribeDataSetPermissions", + "quicksight:ListTagsForResource", + "quicksight:DescribeDataSetRefreshProperties" + ] + }, + "update": { + "permissions": [ + "quicksight:DescribeDataSet", + "quicksight:DescribeDataSetPermissions", + "quicksight:PassDataSource", + "quicksight:UpdateDataSet", + "quicksight:UpdateDataSetPermissions", + "quicksight:PassDataSet", + "quicksight:DescribeIngestion", + "quicksight:ListIngestions", + "quicksight:CancelIngestion", + "quicksight:CreateFolderMembership", + "quicksight:DeleteFolderMembership", + "quicksight:ListFoldersForResource", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource", + "quicksight:PutDataSetRefreshProperties", + "quicksight:DescribeDataSetRefreshProperties", + "quicksight:DeleteDataSetRefreshProperties" + ] + } + }, + "primaryIdentifier": [ + "/properties/AwsAccountId", + "/properties/DataSetId" + ], + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the resource.

", + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "ColumnGroups": { + "description": "

Groupings of columns that work together in certain Amazon QuickSight features. Currently, only geospatial hierarchy is supported.

", + "items": { + "$ref": "#/definitions/ColumnGroup" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + }, + "ColumnLevelPermissionRules": { + "description": "

A set of one or more definitions of a \n ColumnLevelPermissionRule\n .

", + "items": { + "$ref": "#/definitions/ColumnLevelPermissionRule" + }, + "minItems": 1, + "type": "array" + }, + "ConsumedSpiceCapacityInBytes": { + "default": 0, + "description": "

The amount of SPICE capacity used by this dataset. This is 0 if the dataset isn't\n imported into SPICE.

", + "type": "number" + }, + "CreatedTime": { + "description": "

The time that this dataset was created.

", + "format": "string", + "type": "string" + }, + "DataSetId": { + "type": "string" + }, + "DataSetRefreshProperties": { + "$ref": "#/definitions/DataSetRefreshProperties" + }, + "DataSetUsageConfiguration": { + "$ref": "#/definitions/DataSetUsageConfiguration" + }, + "DatasetParameters": { + "description": "

The parameter declarations of the dataset.

", + "items": { + "$ref": "#/definitions/DatasetParameter" + }, + "maxItems": 32, + "minItems": 0, + "type": "array" + }, + "FieldFolders": { + "$ref": "#/definitions/FieldFolderMap" + }, + "FolderArns": { + "description": "

When you create the dataset, Amazon QuickSight adds the dataset to these folders.

", + "items": { + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ImportMode": { + "$ref": "#/definitions/DataSetImportMode" + }, + "IngestionWaitPolicy": { + "$ref": "#/definitions/IngestionWaitPolicy" + }, + "LastUpdatedTime": { + "description": "

The last time that this dataset was updated.

", + "format": "string", + "type": "string" + }, + "LogicalTableMap": { + "$ref": "#/definitions/LogicalTableMap" + }, + "Name": { + "description": "

The display name for the dataset.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "OutputColumns": { + "description": "

The list of columns after all transforms. These columns are available in templates,\n analyses, and dashboards.

", + "items": { + "$ref": "#/definitions/OutputColumn" + }, + "type": "array" + }, + "PerformanceConfiguration": { + "$ref": "#/definitions/PerformanceConfiguration" + }, + "Permissions": { + "description": "

A list of resource permissions on the dataset.

", + "items": { + "$ref": "#/definitions/ResourcePermission" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + }, + "PhysicalTableMap": { + "$ref": "#/definitions/PhysicalTableMap" + }, + "RowLevelPermissionDataSet": { + "$ref": "#/definitions/RowLevelPermissionDataSet" + }, + "RowLevelPermissionTagConfiguration": { + "$ref": "#/definitions/RowLevelPermissionTagConfiguration" + }, + "Tags": { + "description": "

Contains a map of the key-value pairs for the resource tag or tags assigned to the dataset.

", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "UseAs": { + "$ref": "#/definitions/DataSetUseAs" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ConsumedSpiceCapacityInBytes", + "/properties/CreatedTime", + "/properties/LastUpdatedTime", + "/properties/OutputColumns" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QuickSight::DataSet", + "writeOnlyProperties": [ + "/properties/FieldFolders", + "/properties/IngestionWaitPolicy", + "/properties/FolderArns" + ] +} diff --git a/src/schema/aws-quicksight-datasource.json b/src/schema/aws-quicksight-datasource.json index 43068d2e..e3e43d57 100644 --- a/src/schema/aws-quicksight-datasource.json +++ b/src/schema/aws-quicksight-datasource.json @@ -1,1166 +1,1178 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AwsAccountId", - "/properties/DataSourceId", - "/properties/Type" - ], - "definitions": { - "AmazonElasticsearchParameters": { - "additionalProperties": false, - "description": "

The parameters for OpenSearch.

", - "properties": { - "Domain": { - "description": "

The OpenSearch domain.

", - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Domain" - ], - "type": "object" - }, - "AmazonOpenSearchParameters": { - "additionalProperties": false, - "description": "

The parameters for OpenSearch.

", - "properties": { - "Domain": { - "description": "

The OpenSearch domain.

", - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Domain" - ], - "type": "object" - }, - "AthenaParameters": { - "additionalProperties": false, - "description": "

Parameters for Amazon Athena.

", - "properties": { - "RoleArn": { - "description": "

Use the RoleArn structure to override an account-wide role for a specific Athena data source. For example, say an account administrator has turned off all Athena access with an account-wide role. The administrator can then use RoleArn to bypass the account-wide role and allow Athena access for the single Athena data source that is specified in the structure, even if the account-wide role forbidding Athena access is still active.

", - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "WorkGroup": { - "description": "

The workgroup that Amazon Athena uses.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "AuroraParameters": { - "additionalProperties": false, - "description": "

Parameters for Amazon Aurora.

", - "properties": { - "Database": { - "description": "

Database.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Host": { - "description": "

Host.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Port": { - "default": 0, - "description": "

Port.

", - "maximum": 65535, - "minimum": 1, - "type": "number" - } - }, - "required": [ - "Database", - "Host", - "Port" - ], - "type": "object" - }, - "AuroraPostgreSqlParameters": { - "additionalProperties": false, - "description": "

Parameters for Amazon Aurora PostgreSQL-Compatible Edition.

", - "properties": { - "Database": { - "description": "

The Amazon Aurora PostgreSQL database to connect to.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Host": { - "description": "

The Amazon Aurora PostgreSQL-Compatible host to connect to.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Port": { - "default": 0, - "description": "

The port that Amazon Aurora PostgreSQL is listening on.

", - "maximum": 65535, - "minimum": 1, - "type": "number" - } - }, - "required": [ - "Database", - "Host", - "Port" - ], - "type": "object" - }, - "AuthenticationType": { - "enum": [ - "PASSWORD", - "TOKEN", - "X509" - ], - "type": "string" - }, - "AwsIotAnalyticsParameters": { - "additionalProperties": false, - "description": "

The parameters for IoT Analytics.

", - "properties": { - "DataSetName": { - "description": "

Dataset name.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DataSetName" - ], - "type": "object" - }, - "CredentialPair": { - "additionalProperties": false, - "description": "

The combination of user name and password that are used as credentials.

", - "properties": { - "AlternateDataSourceParameters": { - "description": "

A set of alternate data source parameters that you want to share for these\n credentials. The credentials are applied in tandem with the data source parameters when\n you copy a data source by using a create or update request. The API operation compares\n the DataSourceParameters structure that's in the request with the\n structures in the AlternateDataSourceParameters allow list. If the\n structures are an exact match, the request is allowed to use the new data source with\n the existing credentials. If the AlternateDataSourceParameters list is\n null, the DataSourceParameters originally used with these\n Credentials is automatically allowed.

", - "items": { - "$ref": "#/definitions/DataSourceParameters" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - }, - "Password": { - "description": "

Password.

", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Username": { - "description": "

User name.

", - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Password", - "Username" - ], - "type": "object" - }, - "DataSourceCredentials": { - "additionalProperties": false, - "description": "

Data source credentials. This is a variant type structure. For this structure to be\n valid, only one of the attributes can be non-null.

", - "properties": { - "CopySourceArn": { - "description": "

The Amazon Resource Name (ARN) of a data source that has the credential pair that you\n want to use. When CopySourceArn is not null, the credential pair from the\n data source in the ARN is used as the credentials for the\n DataSourceCredentials structure.

", - "pattern": "^arn:[-a-z0-9]*:quicksight:[-a-z0-9]*:[0-9]{12}:datasource/.+$", - "type": "string" - }, - "CredentialPair": { - "$ref": "#/definitions/CredentialPair" - }, - "SecretArn": { - "description": "

The Amazon Resource Name (ARN) of the secret associated with the data source in Amazon Secrets Manager.

", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:[-a-z0-9]*:secretsmanager:[-a-z0-9]*:[0-9]{12}:secret:.+$", - "type": "string" - } - }, - "type": "object" - }, - "DataSourceErrorInfo": { - "additionalProperties": false, - "description": "

Error information for the data source creation or update.

", - "properties": { - "Message": { - "description": "

Error message.

", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/DataSourceErrorInfoType" - } - }, - "type": "object" - }, - "DataSourceErrorInfoType": { - "enum": [ - "ACCESS_DENIED", - "COPY_SOURCE_NOT_FOUND", - "TIMEOUT", - "ENGINE_VERSION_NOT_SUPPORTED", - "UNKNOWN_HOST", - "GENERIC_SQL_FAILURE", - "CONFLICT", - "UNKNOWN" - ], - "type": "string" - }, - "DataSourceParameters": { - "additionalProperties": false, - "description": "

The parameters that Amazon QuickSight uses to connect to your underlying data source.\n This is a variant type structure. For this structure to be valid, only one of the\n attributes can be non-null.

", - "properties": { - "AmazonElasticsearchParameters": { - "$ref": "#/definitions/AmazonElasticsearchParameters" - }, - "AmazonOpenSearchParameters": { - "$ref": "#/definitions/AmazonOpenSearchParameters" - }, - "AthenaParameters": { - "$ref": "#/definitions/AthenaParameters" - }, - "AuroraParameters": { - "$ref": "#/definitions/AuroraParameters" - }, - "AuroraPostgreSqlParameters": { - "$ref": "#/definitions/AuroraPostgreSqlParameters" - }, - "DatabricksParameters": { - "$ref": "#/definitions/DatabricksParameters" - }, - "MariaDbParameters": { - "$ref": "#/definitions/MariaDbParameters" - }, - "MySqlParameters": { - "$ref": "#/definitions/MySqlParameters" - }, - "OracleParameters": { - "$ref": "#/definitions/OracleParameters" - }, - "PostgreSqlParameters": { - "$ref": "#/definitions/PostgreSqlParameters" - }, - "PrestoParameters": { - "$ref": "#/definitions/PrestoParameters" - }, - "RdsParameters": { - "$ref": "#/definitions/RdsParameters" - }, - "RedshiftParameters": { - "$ref": "#/definitions/RedshiftParameters" - }, - "S3Parameters": { - "$ref": "#/definitions/S3Parameters" - }, - "SnowflakeParameters": { - "$ref": "#/definitions/SnowflakeParameters" - }, - "SparkParameters": { - "$ref": "#/definitions/SparkParameters" - }, - "SqlServerParameters": { - "$ref": "#/definitions/SqlServerParameters" - }, - "StarburstParameters": { - "$ref": "#/definitions/StarburstParameters" - }, - "TeradataParameters": { - "$ref": "#/definitions/TeradataParameters" - }, - "TrinoParameters": { - "$ref": "#/definitions/TrinoParameters" - } - }, - "type": "object" - }, - "DataSourceType": { - "enum": [ - "ADOBE_ANALYTICS", - "AMAZON_ELASTICSEARCH", - "AMAZON_OPENSEARCH", - "ATHENA", - "AURORA", - "AURORA_POSTGRESQL", - "AWS_IOT_ANALYTICS", - "DATABRICKS", - "DENODO", - "DREMIO", - "DYNAMODB", - "SAPHANA", - "DB2_AS400", - "EXASOL", - "FILE", - "GITHUB", - "JIRA", - "MARIADB", - "MYSQL", - "ORACLE", - "POSTGRESQL", - "PRESTO", - "REDSHIFT", - "S3", - "S3_TABLES", - "SALESFORCE", - "SERVICENOW", - "SNOWFLAKE", - "SPARK", - "SQLSERVER", - "TERADATA", - "TIMESTREAM", - "TWITTER", - "BIGQUERY", - "GOOGLE_ANALYTICS", - "TRINO", - "STARBURST", - "MONGO", - "MONGO_ATLAS", - "DOCUMENTDB", - "APPFLOW", - "IMPALA", - "GLUE" - ], - "type": "string" - }, - "DatabricksParameters": { - "additionalProperties": false, - "description": "

The parameters that are required to connect to a Databricks data source.

", - "properties": { - "Host": { - "description": "

The host name of the Databricks data source.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Port": { - "default": 0, - "description": "

The port for the Databricks data source.

", - "maximum": 65535, - "minimum": 1, - "type": "number" - }, - "SqlEndpointPath": { - "description": "

The HTTP path of the Databricks data source.

", - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Host", - "Port", - "SqlEndpointPath" - ], - "type": "object" - }, - "IdentityCenterConfiguration": { - "additionalProperties": false, - "description": "

The parameters for an IAM Identity Center configuration.

", - "properties": { - "EnableIdentityPropagation": { - "default": null, - "description": "

A Boolean option that controls whether Trusted Identity Propagation should be used.

", - "type": "boolean" - } - }, - "type": "object" - }, - "ManifestFileLocation": { - "additionalProperties": false, - "description": "

Amazon S3 manifest file location.

", - "properties": { - "Bucket": { - "description": "

Amazon S3 bucket.

", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Key": { - "description": "

Amazon S3 key that identifies an object.

", - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Bucket", - "Key" - ], - "type": "object" - }, - "MariaDbParameters": { - "additionalProperties": false, - "description": "

The parameters for MariaDB.

", - "properties": { - "Database": { - "description": "

Database.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Host": { - "description": "

Host.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Port": { - "default": 0, - "description": "

Port.

", - "maximum": 65535, - "minimum": 1, - "type": "number" - } - }, - "required": [ - "Database", - "Host", - "Port" - ], - "type": "object" - }, - "MySqlParameters": { - "additionalProperties": false, - "description": "

The parameters for MySQL.

", - "properties": { - "Database": { - "description": "

Database.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Host": { - "description": "

Host.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Port": { - "default": 0, - "description": "

Port.

", - "maximum": 65535, - "minimum": 1, - "type": "number" - } - }, - "required": [ - "Database", - "Host", - "Port" - ], - "type": "object" - }, - "OAuthParameters": { - "additionalProperties": false, - "properties": { - "IdentityProviderResourceUri": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "IdentityProviderVpcConnectionProperties": { - "$ref": "#/definitions/VpcConnectionProperties" - }, - "OAuthScope": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "TokenProviderUrl": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "TokenProviderUrl" - ], - "type": "object" - }, - "OracleParameters": { - "additionalProperties": false, - "description": "

The parameters for Oracle.

", - "properties": { - "Database": { - "description": "

The database.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Host": { - "description": "

An Oracle host.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Port": { - "default": 0, - "description": "

The port.

", - "maximum": 65535, - "minimum": 1, - "type": "number" - } - }, - "required": [ - "Database", - "Host", - "Port" - ], - "type": "object" - }, - "PostgreSqlParameters": { - "additionalProperties": false, - "description": "

The parameters for PostgreSQL.

", - "properties": { - "Database": { - "description": "

Database.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Host": { - "description": "

Host.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Port": { - "default": 0, - "description": "

Port.

", - "maximum": 65535, - "minimum": 1, - "type": "number" - } - }, - "required": [ - "Database", - "Host", - "Port" - ], - "type": "object" - }, - "PrestoParameters": { - "additionalProperties": false, - "description": "

The parameters for Presto.

", - "properties": { - "Catalog": { - "description": "

Catalog.

", - "maxLength": 128, - "minLength": 0, - "type": "string" - }, - "Host": { - "description": "

Host.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Port": { - "default": 0, - "description": "

Port.

", - "maximum": 65535, - "minimum": 1, - "type": "number" - } - }, - "required": [ - "Catalog", - "Host", - "Port" - ], - "type": "object" - }, - "RdsParameters": { - "additionalProperties": false, - "description": "

The parameters for Amazon RDS.

", - "properties": { - "Database": { - "description": "

Database.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "InstanceId": { - "description": "

Instance ID.

", - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Database", - "InstanceId" - ], - "type": "object" - }, - "RedshiftIAMParameters": { - "additionalProperties": false, - "description": "

A structure that grants Amazon QuickSight access to your cluster and make a call to the redshift:GetClusterCredentials API. For more information on the redshift:GetClusterCredentials API, see \n GetClusterCredentials\n .

", - "properties": { - "AutoCreateDatabaseUser": { - "default": false, - "description": "

Automatically creates a database user. If your database doesn't have a DatabaseUser, set this parameter to True. If there is no DatabaseUser, Amazon QuickSight can't connect to your cluster. The RoleArn that you use for this operation must grant access to redshift:CreateClusterUser to successfully create the user.

", - "type": "boolean" - }, - "DatabaseGroups": { - "description": "

A list of groups whose permissions will be granted to Amazon QuickSight to access the cluster. These permissions are combined with the permissions granted to Amazon QuickSight by the DatabaseUser. If you choose to include this parameter, the RoleArn must grant access to redshift:JoinGroup.

", - "items": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - }, - "DatabaseUser": { - "description": "

The user whose permissions and group memberships will be used by Amazon QuickSight to access the cluster. If this user already exists in your database, Amazon QuickSight is granted the same permissions that the user has. If the user doesn't exist, set the value of AutoCreateDatabaseUser to True to create a new user with PUBLIC permissions.

", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "RoleArn": { - "description": "

Use the RoleArn structure to allow Amazon QuickSight to call redshift:GetClusterCredentials on your cluster. The calling principal must have iam:PassRole access to pass the role to Amazon QuickSight. The role's trust policy must allow the Amazon QuickSight service principal to assume the role.

", - "maxLength": 2048, - "minLength": 20, - "type": "string" - } - }, - "required": [ - "RoleArn" - ], - "type": "object" - }, - "RedshiftParameters": { - "additionalProperties": false, - "description": "

The parameters for Amazon Redshift. The ClusterId field can be blank if\n Host and Port are both set. The Host and Port fields can be blank if the ClusterId field is set.

", - "properties": { - "ClusterId": { - "description": "

Cluster ID. This field can be blank if the Host and Port are\n provided.

", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Database": { - "description": "

Database.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Host": { - "description": "

Host. This field can be blank if ClusterId is provided.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "IAMParameters": { - "$ref": "#/definitions/RedshiftIAMParameters" - }, - "IdentityCenterConfiguration": { - "$ref": "#/definitions/IdentityCenterConfiguration" - }, - "Port": { - "default": 0, - "description": "

Port. This field can be blank if the ClusterId is provided.

", - "maximum": 65535, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "Database" - ], - "type": "object" - }, - "ResourcePermission": { - "additionalProperties": false, - "description": "

Permission for the resource.

", - "properties": { - "Actions": { - "description": "

The IAM action to grant or revoke permissions on.

", - "items": { - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - }, - "Principal": { - "description": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Resource": { - "type": "string" - } - }, - "required": [ - "Actions", - "Principal" - ], - "type": "object" - }, - "ResourceStatus": { - "enum": [ - "CREATION_IN_PROGRESS", - "CREATION_SUCCESSFUL", - "CREATION_FAILED", - "UPDATE_IN_PROGRESS", - "UPDATE_SUCCESSFUL", - "UPDATE_FAILED", - "DELETED" - ], - "type": "string" - }, - "S3Parameters": { - "additionalProperties": false, - "description": "

The parameters for S3.

", - "properties": { - "ManifestFileLocation": { - "$ref": "#/definitions/ManifestFileLocation" - }, - "RoleArn": { - "description": "

Use the RoleArn structure to override an account-wide role for a specific S3 data source. For example, say an account administrator has turned off all S3 access with an account-wide role. The administrator can then use RoleArn to bypass the account-wide role and allow S3 access for the single S3 data source that is specified in the structure, even if the account-wide role forbidding S3 access is still active.

", - "maxLength": 2048, - "minLength": 20, - "type": "string" - } - }, - "required": [ - "ManifestFileLocation" - ], - "type": "object" - }, - "SnowflakeParameters": { - "additionalProperties": false, - "description": "

The parameters for Snowflake.

", - "properties": { - "AuthenticationType": { - "$ref": "#/definitions/AuthenticationType" - }, - "Database": { - "description": "

Database.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "DatabaseAccessControlRole": { - "maxLength": 128, - "minLength": 0, - "type": "string" - }, - "Host": { - "description": "

Host.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "OAuthParameters": { - "$ref": "#/definitions/OAuthParameters" - }, - "Warehouse": { - "description": "

Warehouse.

", - "maxLength": 128, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Database", - "Host", - "Warehouse" - ], - "type": "object" - }, - "SparkParameters": { - "additionalProperties": false, - "description": "

The parameters for Spark.

", - "properties": { - "Host": { - "description": "

Host.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Port": { - "default": 0, - "description": "

Port.

", - "maximum": 65535, - "minimum": 1, - "type": "number" - } - }, - "required": [ - "Host", - "Port" - ], - "type": "object" - }, - "SqlServerParameters": { - "additionalProperties": false, - "description": "

The parameters for SQL Server.

", - "properties": { - "Database": { - "description": "

Database.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Host": { - "description": "

Host.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Port": { - "default": 0, - "description": "

Port.

", - "maximum": 65535, - "minimum": 1, - "type": "number" - } - }, - "required": [ - "Database", - "Host", - "Port" - ], - "type": "object" - }, - "SslProperties": { - "additionalProperties": false, - "description": "

Secure Socket Layer (SSL) properties that apply when Amazon QuickSight connects to your\n underlying data source.

", - "properties": { - "DisableSsl": { - "default": false, - "description": "

A Boolean option to control whether SSL should be disabled.

", - "type": "boolean" - } - }, - "type": "object" - }, - "StarburstParameters": { - "additionalProperties": false, - "description": "

The parameters that are required to connect to a Starburst data source.

", - "properties": { - "AuthenticationType": { - "$ref": "#/definitions/AuthenticationType" - }, - "Catalog": { - "description": "

The catalog name for the Starburst data source.

", - "maxLength": 128, - "minLength": 0, - "type": "string" - }, - "DatabaseAccessControlRole": { - "maxLength": 128, - "minLength": 0, - "type": "string" - }, - "Host": { - "description": "

The host name of the Starburst data source.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "OAuthParameters": { - "$ref": "#/definitions/OAuthParameters" - }, - "Port": { - "default": 0, - "description": "

The port for the Starburst data source.

", - "maximum": 65535, - "minimum": 1, - "type": "number" - }, - "ProductType": { - "$ref": "#/definitions/StarburstProductType" - } - }, - "required": [ - "Catalog", - "Host", - "Port" - ], - "type": "object" - }, - "StarburstProductType": { - "enum": [ - "GALAXY", - "ENTERPRISE" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", - "properties": { - "Key": { - "description": "

Tag key.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "

Tag value.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TeradataParameters": { - "additionalProperties": false, - "description": "

The parameters for Teradata.

", - "properties": { - "Database": { - "description": "

Database.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Host": { - "description": "

Host.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Port": { - "default": 0, - "description": "

Port.

", - "maximum": 65535, - "minimum": 1, - "type": "number" - } - }, - "required": [ - "Database", - "Host", - "Port" - ], - "type": "object" - }, - "TrinoParameters": { - "additionalProperties": false, - "description": "

The parameters that are required to connect to a Trino data source.

", - "properties": { - "Catalog": { - "description": "

The catalog name for the Trino data source.

", - "maxLength": 128, - "minLength": 0, - "type": "string" - }, - "Host": { - "description": "

The host name of the Trino data source.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Port": { - "default": 0, - "description": "

The port for the Trino data source.

", - "maximum": 65535, - "minimum": 1, - "type": "number" - } - }, - "required": [ - "Catalog", - "Host", - "Port" - ], - "type": "object" - }, - "VpcConnectionProperties": { - "additionalProperties": false, - "description": "

VPC connection properties.

", - "properties": { - "VpcConnectionArn": { - "description": "

The Amazon Resource Name (ARN) for the VPC connection.

", - "type": "string" - } - }, - "required": [ - "VpcConnectionArn" - ], - "type": "object" - } - }, - "description": "Definition of the AWS::QuickSight::DataSource Resource Type.", - "handlers": { - "create": { - "permissions": [ - "quicksight:CreateDataSource", - "quicksight:DescribeDataSource", - "quicksight:DescribeDataSourcePermissions", - "quicksight:TagResource", - "quicksight:ListTagsForResource", - "quicksight:CreateFolderMembership", - "quicksight:DeleteFolderMembership", - "quicksight:ListFoldersForResource" - ] - }, - "delete": { - "permissions": [ - "quicksight:DescribeDataSource", - "quicksight:DescribeDataSourcePermissions", - "quicksight:DeleteDataSource", - "quicksight:ListTagsForResource" - ] - }, - "list": { - "permissions": [ - "quicksight:DescribeDataSource", - "quicksight:ListDataSources" - ] - }, - "read": { - "permissions": [ - "quicksight:DescribeDataSource", - "quicksight:DescribeDataSourcePermissions", - "quicksight:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "quicksight:DescribeDataSource", - "quicksight:DescribeDataSourcePermissions", - "quicksight:UpdateDataSource", - "quicksight:UpdateDataSourcePermissions", - "quicksight:CreateFolderMembership", - "quicksight:DeleteFolderMembership", - "quicksight:ListFoldersForResource", - "quicksight:TagResource", - "quicksight:UntagResource", - "quicksight:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AwsAccountId", - "/properties/DataSourceId" - ], - "properties": { - "AlternateDataSourceParameters": { - "description": "

A set of alternate data source parameters that you want to share for the credentials\n stored with this data source. The credentials are applied in tandem with the data source\n parameters when you copy a data source by using a create or update request. The API\n operation compares the DataSourceParameters structure that's in the request\n with the structures in the AlternateDataSourceParameters allow list. If the\n structures are an exact match, the request is allowed to use the credentials from this\n existing data source. If the AlternateDataSourceParameters list is null,\n the Credentials originally used with this DataSourceParameters\n are automatically allowed.

", - "items": { - "$ref": "#/definitions/DataSourceParameters" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - }, - "Arn": { - "description": "

The Amazon Resource Name (ARN) of the data source.

", - "type": "string" - }, - "AwsAccountId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "CreatedTime": { - "description": "

The time that this data source was created.

", - "format": "date-time", - "type": "string" - }, - "Credentials": { - "$ref": "#/definitions/DataSourceCredentials" - }, - "DataSourceId": { - "type": "string" - }, - "DataSourceParameters": { - "$ref": "#/definitions/DataSourceParameters" - }, - "ErrorInfo": { - "$ref": "#/definitions/DataSourceErrorInfo" - }, - "FolderArns": { - "items": { - "type": "string" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "LastUpdatedTime": { - "description": "

The last time that this data source was updated.

", - "format": "date-time", - "type": "string" - }, - "Name": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Permissions": { - "items": { - "$ref": "#/definitions/ResourcePermission" - }, - "maxItems": 64, - "minItems": 1, - "type": "array" - }, - "SslProperties": { - "$ref": "#/definitions/SslProperties" - }, - "Status": { - "$ref": "#/definitions/ResourceStatus" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "Type": { - "$ref": "#/definitions/DataSourceType" - }, - "VpcConnectionProperties": { - "$ref": "#/definitions/VpcConnectionProperties" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedTime", - "/properties/LastUpdatedTime", - "/properties/Status" - ], - "required": [ - "Name", - "Type" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", - "typeName": "AWS::QuickSight::DataSource", - "writeOnlyProperties": [ - "/properties/Credentials", - "/properties/FolderArns" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/DataSourceId", + "/properties/Type" + ], + "definitions": { + "AmazonElasticsearchParameters": { + "additionalProperties": false, + "description": "

The parameters for OpenSearch.

", + "properties": { + "Domain": { + "description": "

The OpenSearch domain.

", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Domain" + ], + "type": "object" + }, + "AmazonOpenSearchParameters": { + "additionalProperties": false, + "description": "

The parameters for OpenSearch.

", + "properties": { + "Domain": { + "description": "

The OpenSearch domain.

", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Domain" + ], + "type": "object" + }, + "AthenaParameters": { + "additionalProperties": false, + "description": "

Parameters for Amazon Athena.

", + "properties": { + "RoleArn": { + "description": "

Use the RoleArn structure to override an account-wide role for a specific Athena data source. For example, say an account administrator has turned off all Athena access with an account-wide role. The administrator can then use RoleArn to bypass the account-wide role and allow Athena access for the single Athena data source that is specified in the structure, even if the account-wide role forbidding Athena access is still active.

", + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "WorkGroup": { + "description": "

The workgroup that Amazon Athena uses.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "AuroraParameters": { + "additionalProperties": false, + "description": "

Parameters for Amazon Aurora.

", + "properties": { + "Database": { + "description": "

Database.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "

Host.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "

Port.

", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "type": "object" + }, + "AuroraPostgreSqlParameters": { + "additionalProperties": false, + "description": "

Parameters for Amazon Aurora PostgreSQL-Compatible Edition.

", + "properties": { + "Database": { + "description": "

The Amazon Aurora PostgreSQL database to connect to.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "

The Amazon Aurora PostgreSQL-Compatible host to connect to.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "

The port that Amazon Aurora PostgreSQL is listening on.

", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "type": "object" + }, + "AuthenticationType": { + "enum": [ + "PASSWORD", + "TOKEN", + "X509" + ], + "type": "string" + }, + "AwsIotAnalyticsParameters": { + "additionalProperties": false, + "description": "

The parameters for IoT Analytics.

", + "properties": { + "DataSetName": { + "description": "

Dataset name.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DataSetName" + ], + "type": "object" + }, + "CredentialPair": { + "additionalProperties": false, + "description": "

The combination of user name and password that are used as credentials.

", + "properties": { + "AlternateDataSourceParameters": { + "description": "

A set of alternate data source parameters that you want to share for these\n credentials. The credentials are applied in tandem with the data source parameters when\n you copy a data source by using a create or update request. The API operation compares\n the DataSourceParameters structure that's in the request with the\n structures in the AlternateDataSourceParameters allow list. If the\n structures are an exact match, the request is allowed to use the new data source with\n the existing credentials. If the AlternateDataSourceParameters list is\n null, the DataSourceParameters originally used with these\n Credentials is automatically allowed.

", + "items": { + "$ref": "#/definitions/DataSourceParameters" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + "Password": { + "description": "

Password.

", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Username": { + "description": "

User name.

", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Password", + "Username" + ], + "type": "object" + }, + "DataSourceCredentials": { + "additionalProperties": false, + "description": "

Data source credentials. This is a variant type structure. For this structure to be\n valid, only one of the attributes can be non-null.

", + "properties": { + "CopySourceArn": { + "description": "

The Amazon Resource Name (ARN) of a data source that has the credential pair that you\n want to use. When CopySourceArn is not null, the credential pair from the\n data source in the ARN is used as the credentials for the\n DataSourceCredentials structure.

", + "pattern": "^arn:[-a-z0-9]*:quicksight:[-a-z0-9]*:[0-9]{12}:datasource/.+$", + "type": "string" + }, + "CredentialPair": { + "$ref": "#/definitions/CredentialPair" + }, + "SecretArn": { + "description": "

The Amazon Resource Name (ARN) of the secret associated with the data source in Amazon Secrets Manager.

", + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:[-a-z0-9]*:secretsmanager:[-a-z0-9]*:[0-9]{12}:secret:.+$", + "type": "string" + } + }, + "type": "object" + }, + "DataSourceErrorInfo": { + "additionalProperties": false, + "description": "

Error information for the data source creation or update.

", + "properties": { + "Message": { + "description": "

Error message.

", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/DataSourceErrorInfoType" + } + }, + "type": "object" + }, + "DataSourceErrorInfoType": { + "enum": [ + "ACCESS_DENIED", + "COPY_SOURCE_NOT_FOUND", + "TIMEOUT", + "ENGINE_VERSION_NOT_SUPPORTED", + "UNKNOWN_HOST", + "GENERIC_SQL_FAILURE", + "CONFLICT", + "UNKNOWN" + ], + "type": "string" + }, + "DataSourceParameters": { + "additionalProperties": false, + "description": "

The parameters that Amazon QuickSight uses to connect to your underlying data source.\n This is a variant type structure. For this structure to be valid, only one of the\n attributes can be non-null.

", + "properties": { + "AmazonElasticsearchParameters": { + "$ref": "#/definitions/AmazonElasticsearchParameters" + }, + "AmazonOpenSearchParameters": { + "$ref": "#/definitions/AmazonOpenSearchParameters" + }, + "AthenaParameters": { + "$ref": "#/definitions/AthenaParameters" + }, + "AuroraParameters": { + "$ref": "#/definitions/AuroraParameters" + }, + "AuroraPostgreSqlParameters": { + "$ref": "#/definitions/AuroraPostgreSqlParameters" + }, + "DatabricksParameters": { + "$ref": "#/definitions/DatabricksParameters" + }, + "MariaDbParameters": { + "$ref": "#/definitions/MariaDbParameters" + }, + "MySqlParameters": { + "$ref": "#/definitions/MySqlParameters" + }, + "OracleParameters": { + "$ref": "#/definitions/OracleParameters" + }, + "PostgreSqlParameters": { + "$ref": "#/definitions/PostgreSqlParameters" + }, + "PrestoParameters": { + "$ref": "#/definitions/PrestoParameters" + }, + "RdsParameters": { + "$ref": "#/definitions/RdsParameters" + }, + "RedshiftParameters": { + "$ref": "#/definitions/RedshiftParameters" + }, + "S3Parameters": { + "$ref": "#/definitions/S3Parameters" + }, + "SnowflakeParameters": { + "$ref": "#/definitions/SnowflakeParameters" + }, + "SparkParameters": { + "$ref": "#/definitions/SparkParameters" + }, + "SqlServerParameters": { + "$ref": "#/definitions/SqlServerParameters" + }, + "StarburstParameters": { + "$ref": "#/definitions/StarburstParameters" + }, + "TeradataParameters": { + "$ref": "#/definitions/TeradataParameters" + }, + "TrinoParameters": { + "$ref": "#/definitions/TrinoParameters" + } + }, + "type": "object" + }, + "DataSourceType": { + "enum": [ + "ADOBE_ANALYTICS", + "AMAZON_ELASTICSEARCH", + "AMAZON_OPENSEARCH", + "ATHENA", + "AURORA", + "AURORA_POSTGRESQL", + "AWS_IOT_ANALYTICS", + "DATABRICKS", + "DENODO", + "DREMIO", + "DYNAMODB", + "SAPHANA", + "DB2_AS400", + "EXASOL", + "FILE", + "GITHUB", + "JIRA", + "MARIADB", + "MYSQL", + "ORACLE", + "POSTGRESQL", + "PRESTO", + "REDSHIFT", + "S3", + "S3_TABLES", + "SALESFORCE", + "SERVICENOW", + "SNOWFLAKE", + "SPARK", + "SQLSERVER", + "TERADATA", + "TIMESTREAM", + "TWITTER", + "BIGQUERY", + "GOOGLE_ANALYTICS", + "TRINO", + "STARBURST", + "MONGO", + "MONGO_ATLAS", + "DOCUMENTDB", + "APPFLOW", + "IMPALA", + "GLUE" + ], + "type": "string" + }, + "DatabricksParameters": { + "additionalProperties": false, + "description": "

The parameters that are required to connect to a Databricks data source.

", + "properties": { + "Host": { + "description": "

The host name of the Databricks data source.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "

The port for the Databricks data source.

", + "maximum": 65535, + "minimum": 1, + "type": "number" + }, + "SqlEndpointPath": { + "description": "

The HTTP path of the Databricks data source.

", + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Host", + "Port", + "SqlEndpointPath" + ], + "type": "object" + }, + "IdentityCenterConfiguration": { + "additionalProperties": false, + "description": "

The parameters for an IAM Identity Center configuration.

", + "properties": { + "EnableIdentityPropagation": { + "default": null, + "description": "

A Boolean option that controls whether Trusted Identity Propagation should be used.

", + "type": "boolean" + } + }, + "type": "object" + }, + "ManifestFileLocation": { + "additionalProperties": false, + "description": "

Amazon S3 manifest file location.

", + "properties": { + "Bucket": { + "description": "

Amazon S3 bucket.

", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Key": { + "description": "

Amazon S3 key that identifies an object.

", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Bucket", + "Key" + ], + "type": "object" + }, + "MariaDbParameters": { + "additionalProperties": false, + "description": "

The parameters for MariaDB.

", + "properties": { + "Database": { + "description": "

Database.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "

Host.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "

Port.

", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "type": "object" + }, + "MySqlParameters": { + "additionalProperties": false, + "description": "

The parameters for MySQL.

", + "properties": { + "Database": { + "description": "

Database.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "

Host.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "

Port.

", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "type": "object" + }, + "OAuthParameters": { + "additionalProperties": false, + "properties": { + "IdentityProviderResourceUri": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "IdentityProviderVpcConnectionProperties": { + "$ref": "#/definitions/VpcConnectionProperties" + }, + "OAuthScope": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "TokenProviderUrl": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "TokenProviderUrl" + ], + "type": "object" + }, + "OracleParameters": { + "additionalProperties": false, + "description": "

The parameters for Oracle.

", + "properties": { + "Database": { + "description": "

The database.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "

An Oracle host.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "

The port.

", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "type": "object" + }, + "PostgreSqlParameters": { + "additionalProperties": false, + "description": "

The parameters for PostgreSQL.

", + "properties": { + "Database": { + "description": "

Database.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "

Host.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "

Port.

", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "type": "object" + }, + "PrestoParameters": { + "additionalProperties": false, + "description": "

The parameters for Presto.

", + "properties": { + "Catalog": { + "description": "

Catalog.

", + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "Host": { + "description": "

Host.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "

Port.

", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Catalog", + "Host", + "Port" + ], + "type": "object" + }, + "RdsParameters": { + "additionalProperties": false, + "description": "

The parameters for Amazon RDS.

", + "properties": { + "Database": { + "description": "

Database.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "InstanceId": { + "description": "

Instance ID.

", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Database", + "InstanceId" + ], + "type": "object" + }, + "RedshiftIAMParameters": { + "additionalProperties": false, + "description": "

A structure that grants Amazon QuickSight access to your cluster and make a call to the redshift:GetClusterCredentials API. For more information on the redshift:GetClusterCredentials API, see \n GetClusterCredentials\n .

", + "properties": { + "AutoCreateDatabaseUser": { + "default": false, + "description": "

Automatically creates a database user. If your database doesn't have a DatabaseUser, set this parameter to True. If there is no DatabaseUser, Amazon QuickSight can't connect to your cluster. The RoleArn that you use for this operation must grant access to redshift:CreateClusterUser to successfully create the user.

", + "type": "boolean" + }, + "DatabaseGroups": { + "description": "

A list of groups whose permissions will be granted to Amazon QuickSight to access the cluster. These permissions are combined with the permissions granted to Amazon QuickSight by the DatabaseUser. If you choose to include this parameter, the RoleArn must grant access to redshift:JoinGroup.

", + "items": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + "DatabaseUser": { + "description": "

The user whose permissions and group memberships will be used by Amazon QuickSight to access the cluster. If this user already exists in your database, Amazon QuickSight is granted the same permissions that the user has. If the user doesn't exist, set the value of AutoCreateDatabaseUser to True to create a new user with PUBLIC permissions.

", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "RoleArn": { + "description": "

Use the RoleArn structure to allow Amazon QuickSight to call redshift:GetClusterCredentials on your cluster. The calling principal must have iam:PassRole access to pass the role to Amazon QuickSight. The role's trust policy must allow the Amazon QuickSight service principal to assume the role.

", + "maxLength": 2048, + "minLength": 20, + "type": "string" + } + }, + "required": [ + "RoleArn" + ], + "type": "object" + }, + "RedshiftParameters": { + "additionalProperties": false, + "description": "

The parameters for Amazon Redshift. The ClusterId field can be blank if\n Host and Port are both set. The Host and Port fields can be blank if the ClusterId field is set.

", + "properties": { + "ClusterId": { + "description": "

Cluster ID. This field can be blank if the Host and Port are\n provided.

", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Database": { + "description": "

Database.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "

Host. This field can be blank if ClusterId is provided.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "IAMParameters": { + "$ref": "#/definitions/RedshiftIAMParameters" + }, + "IdentityCenterConfiguration": { + "$ref": "#/definitions/IdentityCenterConfiguration" + }, + "Port": { + "default": 0, + "description": "

Port. This field can be blank if the ClusterId is provided.

", + "maximum": 65535, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "Database" + ], + "type": "object" + }, + "ResourcePermission": { + "additionalProperties": false, + "description": "

Permission for the resource.

", + "properties": { + "Actions": { + "description": "

The IAM action to grant or revoke permissions on.

", + "items": { + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "Principal": { + "description": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Resource": { + "type": "string" + } + }, + "required": [ + "Actions", + "Principal" + ], + "type": "object" + }, + "ResourceStatus": { + "enum": [ + "CREATION_IN_PROGRESS", + "CREATION_SUCCESSFUL", + "CREATION_FAILED", + "UPDATE_IN_PROGRESS", + "UPDATE_SUCCESSFUL", + "UPDATE_FAILED", + "DELETED" + ], + "type": "string" + }, + "S3Parameters": { + "additionalProperties": false, + "description": "

The parameters for S3.

", + "properties": { + "ManifestFileLocation": { + "$ref": "#/definitions/ManifestFileLocation" + }, + "RoleArn": { + "description": "

Use the RoleArn structure to override an account-wide role for a specific S3 data source. For example, say an account administrator has turned off all S3 access with an account-wide role. The administrator can then use RoleArn to bypass the account-wide role and allow S3 access for the single S3 data source that is specified in the structure, even if the account-wide role forbidding S3 access is still active.

", + "maxLength": 2048, + "minLength": 20, + "type": "string" + } + }, + "required": [ + "ManifestFileLocation" + ], + "type": "object" + }, + "SnowflakeParameters": { + "additionalProperties": false, + "description": "

The parameters for Snowflake.

", + "properties": { + "AuthenticationType": { + "$ref": "#/definitions/AuthenticationType" + }, + "Database": { + "description": "

Database.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "DatabaseAccessControlRole": { + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "Host": { + "description": "

Host.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "OAuthParameters": { + "$ref": "#/definitions/OAuthParameters" + }, + "Warehouse": { + "description": "

Warehouse.

", + "maxLength": 128, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Database", + "Host", + "Warehouse" + ], + "type": "object" + }, + "SparkParameters": { + "additionalProperties": false, + "description": "

The parameters for Spark.

", + "properties": { + "Host": { + "description": "

Host.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "

Port.

", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Host", + "Port" + ], + "type": "object" + }, + "SqlServerParameters": { + "additionalProperties": false, + "description": "

The parameters for SQL Server.

", + "properties": { + "Database": { + "description": "

Database.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "

Host.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "

Port.

", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "type": "object" + }, + "SslProperties": { + "additionalProperties": false, + "description": "

Secure Socket Layer (SSL) properties that apply when Amazon QuickSight connects to your\n underlying data source.

", + "properties": { + "DisableSsl": { + "default": false, + "description": "

A Boolean option to control whether SSL should be disabled.

", + "type": "boolean" + } + }, + "type": "object" + }, + "StarburstParameters": { + "additionalProperties": false, + "description": "

The parameters that are required to connect to a Starburst data source.

", + "properties": { + "AuthenticationType": { + "$ref": "#/definitions/AuthenticationType" + }, + "Catalog": { + "description": "

The catalog name for the Starburst data source.

", + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "DatabaseAccessControlRole": { + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "Host": { + "description": "

The host name of the Starburst data source.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "OAuthParameters": { + "$ref": "#/definitions/OAuthParameters" + }, + "Port": { + "default": 0, + "description": "

The port for the Starburst data source.

", + "maximum": 65535, + "minimum": 1, + "type": "number" + }, + "ProductType": { + "$ref": "#/definitions/StarburstProductType" + } + }, + "required": [ + "Catalog", + "Host", + "Port" + ], + "type": "object" + }, + "StarburstProductType": { + "enum": [ + "GALAXY", + "ENTERPRISE" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", + "properties": { + "Key": { + "description": "

Tag key.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "

Tag value.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TeradataParameters": { + "additionalProperties": false, + "description": "

The parameters for Teradata.

", + "properties": { + "Database": { + "description": "

Database.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Host": { + "description": "

Host.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "

Port.

", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "type": "object" + }, + "TrinoParameters": { + "additionalProperties": false, + "description": "

The parameters that are required to connect to a Trino data source.

", + "properties": { + "Catalog": { + "description": "

The catalog name for the Trino data source.

", + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "Host": { + "description": "

The host name of the Trino data source.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Port": { + "default": 0, + "description": "

The port for the Trino data source.

", + "maximum": 65535, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Catalog", + "Host", + "Port" + ], + "type": "object" + }, + "VpcConnectionProperties": { + "additionalProperties": false, + "description": "

VPC connection properties.

", + "properties": { + "VpcConnectionArn": { + "description": "

The Amazon Resource Name (ARN) for the VPC connection.

", + "type": "string" + } + }, + "required": [ + "VpcConnectionArn" + ], + "type": "object" + } + }, + "description": "Definition of the AWS::QuickSight::DataSource Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:CreateDataSource", + "quicksight:DescribeDataSource", + "quicksight:DescribeDataSourcePermissions", + "quicksight:TagResource", + "quicksight:ListTagsForResource", + "quicksight:CreateFolderMembership", + "quicksight:DeleteFolderMembership", + "quicksight:ListFoldersForResource" + ] + }, + "delete": { + "permissions": [ + "quicksight:DescribeDataSource", + "quicksight:DescribeDataSourcePermissions", + "quicksight:DeleteDataSource", + "quicksight:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "quicksight:DescribeDataSource", + "quicksight:ListDataSources" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeDataSource", + "quicksight:DescribeDataSourcePermissions", + "quicksight:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "quicksight:DescribeDataSource", + "quicksight:DescribeDataSourcePermissions", + "quicksight:UpdateDataSource", + "quicksight:UpdateDataSourcePermissions", + "quicksight:CreateFolderMembership", + "quicksight:DeleteFolderMembership", + "quicksight:ListFoldersForResource", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AwsAccountId", + "/properties/DataSourceId" + ], + "properties": { + "AlternateDataSourceParameters": { + "description": "

A set of alternate data source parameters that you want to share for the credentials\n stored with this data source. The credentials are applied in tandem with the data source\n parameters when you copy a data source by using a create or update request. The API\n operation compares the DataSourceParameters structure that's in the request\n with the structures in the AlternateDataSourceParameters allow list. If the\n structures are an exact match, the request is allowed to use the credentials from this\n existing data source. If the AlternateDataSourceParameters list is null,\n the Credentials originally used with this DataSourceParameters\n are automatically allowed.

", + "items": { + "$ref": "#/definitions/DataSourceParameters" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the data source.

", + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "CreatedTime": { + "description": "

The time that this data source was created.

", + "format": "date-time", + "type": "string" + }, + "Credentials": { + "$ref": "#/definitions/DataSourceCredentials" + }, + "DataSourceId": { + "type": "string" + }, + "DataSourceParameters": { + "$ref": "#/definitions/DataSourceParameters" + }, + "ErrorInfo": { + "$ref": "#/definitions/DataSourceErrorInfo" + }, + "FolderArns": { + "items": { + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "LastUpdatedTime": { + "description": "

The last time that this data source was updated.

", + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Permissions": { + "items": { + "$ref": "#/definitions/ResourcePermission" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + }, + "SslProperties": { + "$ref": "#/definitions/SslProperties" + }, + "Status": { + "$ref": "#/definitions/ResourceStatus" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "Type": { + "$ref": "#/definitions/DataSourceType" + }, + "VpcConnectionProperties": { + "$ref": "#/definitions/VpcConnectionProperties" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastUpdatedTime", + "/properties/Status" + ], + "required": [ + "Name", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QuickSight::DataSource", + "writeOnlyProperties": [ + "/properties/Credentials", + "/properties/FolderArns" + ] +} diff --git a/src/schema/aws-quicksight-folder.json b/src/schema/aws-quicksight-folder.json index 74839881..315ffdbf 100644 --- a/src/schema/aws-quicksight-folder.json +++ b/src/schema/aws-quicksight-folder.json @@ -1,150 +1,204 @@ { - "typeName" : "AWS::QuickSight::Folder", - "description" : "Definition of the AWS::QuickSight::Folder Resource Type.", - "definitions" : { - "FolderType" : { - "type" : "string", - "enum" : [ "SHARED", "RESTRICTED" ] - }, - "ResourcePermission" : { - "type" : "object", - "description" : "

Permission for the resource.

", - "properties" : { - "Principal" : { - "type" : "string", - "maxLength" : 256, - "minLength" : 1, - "description" : "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
", - "pattern" : "^arn:.*" - }, - "Actions" : { - "type" : "array", - "items" : { - "type" : "string" + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ParentFolderArn", + "/properties/SharingModel", + "/properties/FolderType", + "/properties/FolderId", + "/properties/AwsAccountId" + ], + "definitions": { + "FolderType": { + "enum": [ + "SHARED", + "RESTRICTED" + ], + "type": "string" + }, + "ResourcePermission": { + "additionalProperties": false, + "description": "

Permission for the resource.

", + "properties": { + "Actions": { + "description": "

The IAM action to grant or revoke permissions on.

", + "insertionOrder": false, + "items": { + "type": "string" }, - "maxItems" : 20, - "minItems" : 1, - "description" : "

The IAM action to grant or revoke permissions on.

", - "insertionOrder" : false + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "Principal": { + "description": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:.*", + "type": "string" } }, - "required" : [ "Actions", "Principal" ], - "additionalProperties" : false - }, - "SharingModel" : { - "type" : "string", - "enum" : [ "ACCOUNT", "NAMESPACE" ] - }, - "Tag" : { - "type" : "object", - "description" : "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", - "properties" : { - "Key" : { - "type" : "string", - "maxLength" : 128, - "minLength" : 1, - "description" : "

Tag key.

" + "required": [ + "Actions", + "Principal" + ], + "type": "object" + }, + "SharingModel": { + "enum": [ + "ACCOUNT", + "NAMESPACE" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", + "properties": { + "Key": { + "description": "

Tag key.

", + "maxLength": 128, + "minLength": 1, + "type": "string" }, - "Value" : { - "type" : "string", - "maxLength" : 256, - "minLength" : 1, - "description" : "

Tag value.

" + "Value": { + "description": "

Tag value.

", + "maxLength": 256, + "minLength": 1, + "type": "string" } }, - "required" : [ "Key", "Value" ], - "additionalProperties" : false + "required": [ + "Key", + "Value" + ], + "type": "object" } }, - "properties" : { - "Arn" : { - "type" : "string", - "description" : "

The Amazon Resource Name (ARN) for the folder.

", - "pattern" : "^arn:.*" - }, - "AwsAccountId" : { - "type" : "string", - "maxLength" : 12, - "minLength" : 12, - "pattern" : "^[0-9]{12}$" - }, - "CreatedTime" : { - "type" : "string", - "description" : "

The time that the folder was created.

", - "format" : "date-time" - }, - "FolderId" : { - "type" : "string", - "maxLength" : 2048, - "minLength" : 1, - "pattern" : "^[\\w\\-]+$" - }, - "FolderType" : { - "$ref" : "#/definitions/FolderType" - }, - "LastUpdatedTime" : { - "type" : "string", - "description" : "

The time that the folder was last updated.

", - "format" : "date-time" - }, - "Name" : { - "type" : "string", - "maxLength" : 200, - "minLength" : 1 - }, - "ParentFolderArn" : { - "type" : "string" - }, - "Permissions" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/ResourcePermission" + "description": "Definition of the AWS::QuickSight::Folder Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:CreateFolder", + "quicksight:DescribeFolder", + "quicksight:UpdateFolderPermissions", + "quicksight:DescribeFolderPermissions", + "quicksight:TagResource", + "quicksight:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "quicksight:DeleteFolder" + ] + }, + "list": { + "permissions": [ + "quicksight:ListFolders" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeFolder", + "quicksight:DescribeFolderPermissions", + "quicksight:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "quicksight:DescribeFolder", + "quicksight:UpdateFolder", + "quicksight:DescribeFolderPermissions", + "quicksight:UpdateFolderPermissions", + "quicksight:ListTagsForResource", + "quicksight:TagResource", + "quicksight:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AwsAccountId", + "/properties/FolderId" + ], + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) for the folder.

", + "pattern": "^arn:.*", + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "CreatedTime": { + "description": "

The time that the folder was created.

", + "format": "date-time", + "type": "string" + }, + "FolderId": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "FolderType": { + "$ref": "#/definitions/FolderType" + }, + "LastUpdatedTime": { + "description": "

The time that the folder was last updated.

", + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "ParentFolderArn": { + "type": "string" + }, + "Permissions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourcePermission" }, - "maxItems" : 64, - "minItems" : 1, - "insertionOrder" : false + "maxItems": 64, + "minItems": 1, + "type": "array" }, - "SharingModel" : { - "$ref" : "#/definitions/SharingModel" + "SharingModel": { + "$ref": "#/definitions/SharingModel" }, - "Tags" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Tag" + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" }, - "maxItems" : 200, - "minItems" : 1, - "insertionOrder" : false + "maxItems": 200, + "minItems": 1, + "type": "array" } }, - "readOnlyProperties" : [ "/properties/Arn", "/properties/CreatedTime", "/properties/LastUpdatedTime" ], - "writeOnlyProperties" : [ "/properties/ParentFolderArn" ], - "createOnlyProperties" : [ "/properties/ParentFolderArn", "/properties/SharingModel", "/properties/FolderType", "/properties/FolderId", "/properties/AwsAccountId" ], - "primaryIdentifier" : [ "/properties/AwsAccountId", "/properties/FolderId" ], - "handlers" : { - "read" : { - "permissions" : [ "quicksight:DescribeFolder", "quicksight:DescribeFolderPermissions", "quicksight:ListTagsForResource" ] - }, - "create" : { - "permissions" : [ "quicksight:CreateFolder", "quicksight:DescribeFolder", "quicksight:UpdateFolderPermissions", "quicksight:DescribeFolderPermissions", "quicksight:TagResource", "quicksight:ListTagsForResource" ] - }, - "update" : { - "permissions" : [ "quicksight:DescribeFolder", "quicksight:UpdateFolder", "quicksight:DescribeFolderPermissions", "quicksight:UpdateFolderPermissions", "quicksight:ListTagsForResource", "quicksight:TagResource", "quicksight:UntagResource" ] - }, - "delete" : { - "permissions" : [ "quicksight:DeleteFolder" ] - }, - "list" : { - "permissions" : [ "quicksight:ListFolders" ] - } + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastUpdatedTime" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true }, - "additionalProperties" : false, - "tagging" : { - "taggable" : true, - "tagOnCreate" : true, - "tagUpdatable" : true, - "cloudFormationSystemTags" : false, - "tagProperty" : "/properties/Tags", - "permissions" : [ "quicksight:TagResource", "quicksight:UntagResource", "quicksight:ListTagsForResource" ] - } -} \ No newline at end of file + "typeName": "AWS::QuickSight::Folder", + "writeOnlyProperties": [ + "/properties/ParentFolderArn" + ] +} diff --git a/src/schema/aws-quicksight-refreshschedule.json b/src/schema/aws-quicksight-refreshschedule.json index a90d08df..1137036e 100644 --- a/src/schema/aws-quicksight-refreshschedule.json +++ b/src/schema/aws-quicksight-refreshschedule.json @@ -1,173 +1,173 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AwsAccountId", - "/properties/DataSetId", - "/properties/Schedule/ScheduleId" - ], - "definitions": { - "RefreshScheduleMap": { - "additionalProperties": false, - "properties": { - "RefreshType": { - "enum": [ - "FULL_REFRESH", - "INCREMENTAL_REFRESH" - ], - "type": "string" - }, - "ScheduleFrequency": { - "additionalProperties": false, - "description": "

Information about the schedule frequency.

", - "properties": { - "Interval": { - "enum": [ - "MINUTE15", - "MINUTE30", - "HOURLY", - "DAILY", - "WEEKLY", - "MONTHLY" - ], - "type": "string" - }, - "RefreshOnDay": { - "additionalProperties": false, - "description": "

The day scheduled for refresh.

", - "properties": { - "DayOfMonth": { - "description": "

The Day Of Month for scheduled refresh.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "DayOfWeek": { - "enum": [ - "SUNDAY", - "MONDAY", - "TUESDAY", - "WEDNESDAY", - "THURSDAY", - "FRIDAY", - "SATURDAY" - ], - "type": "string" - } - }, - "required": [], - "type": "object" - }, - "TimeOfTheDay": { - "description": "

The time of the day for scheduled refresh.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "TimeZone": { - "description": "

The timezone for scheduled refresh.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [], - "type": "object" - }, - "ScheduleId": { - "description": "

An unique identifier for the refresh schedule.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "StartAfterDateTime": { - "description": "

The date time after which refresh is to be scheduled

", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [], - "type": "object" - } - }, - "description": "Definition of the AWS::QuickSight::RefreshSchedule Resource Type.", - "handlers": { - "create": { - "permissions": [ - "quicksight:CreateRefreshSchedule", - "quicksight:DescribeRefreshSchedule" - ] - }, - "delete": { - "permissions": [ - "quicksight:DeleteRefreshSchedule", - "quicksight:DescribeRefreshSchedule" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "AwsAccountId": { - "$ref": "resource-schema.json#/properties/AwsAccountId" - }, - "DataSetId": { - "$ref": "resource-schema.json#/properties/DataSetId" - } - }, - "required": [ - "AwsAccountId", - "DataSetId" - ] - }, - "permissions": [ - "quicksight:ListRefreshSchedules" - ] - }, - "read": { - "permissions": [ - "quicksight:DescribeRefreshSchedule" - ] - }, - "update": { - "permissions": [ - "quicksight:UpdateRefreshSchedule", - "quicksight:DescribeRefreshSchedule" - ] - } - }, - "primaryIdentifier": [ - "/properties/AwsAccountId", - "/properties/DataSetId", - "/properties/Schedule/ScheduleId" - ], - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) of the data source.

", - "type": "string" - }, - "AwsAccountId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "DataSetId": { - "type": "string" - }, - "Schedule": { - "$ref": "#/definitions/RefreshScheduleMap" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::QuickSight::RefreshSchedule" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/DataSetId", + "/properties/Schedule/ScheduleId" + ], + "definitions": { + "RefreshScheduleMap": { + "additionalProperties": false, + "properties": { + "RefreshType": { + "enum": [ + "FULL_REFRESH", + "INCREMENTAL_REFRESH" + ], + "type": "string" + }, + "ScheduleFrequency": { + "additionalProperties": false, + "description": "

Information about the schedule frequency.

", + "properties": { + "Interval": { + "enum": [ + "MINUTE15", + "MINUTE30", + "HOURLY", + "DAILY", + "WEEKLY", + "MONTHLY" + ], + "type": "string" + }, + "RefreshOnDay": { + "additionalProperties": false, + "description": "

The day scheduled for refresh.

", + "properties": { + "DayOfMonth": { + "description": "

The Day Of Month for scheduled refresh.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "DayOfWeek": { + "enum": [ + "SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY" + ], + "type": "string" + } + }, + "required": [], + "type": "object" + }, + "TimeOfTheDay": { + "description": "

The time of the day for scheduled refresh.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "TimeZone": { + "description": "

The timezone for scheduled refresh.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [], + "type": "object" + }, + "ScheduleId": { + "description": "

An unique identifier for the refresh schedule.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "StartAfterDateTime": { + "description": "

The date time after which refresh is to be scheduled

", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [], + "type": "object" + } + }, + "description": "Definition of the AWS::QuickSight::RefreshSchedule Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:CreateRefreshSchedule", + "quicksight:DescribeRefreshSchedule" + ] + }, + "delete": { + "permissions": [ + "quicksight:DeleteRefreshSchedule", + "quicksight:DescribeRefreshSchedule" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "AwsAccountId": { + "$ref": "resource-schema.json#/properties/AwsAccountId" + }, + "DataSetId": { + "$ref": "resource-schema.json#/properties/DataSetId" + } + }, + "required": [ + "AwsAccountId", + "DataSetId" + ] + }, + "permissions": [ + "quicksight:ListRefreshSchedules" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeRefreshSchedule" + ] + }, + "update": { + "permissions": [ + "quicksight:UpdateRefreshSchedule", + "quicksight:DescribeRefreshSchedule" + ] + } + }, + "primaryIdentifier": [ + "/properties/AwsAccountId", + "/properties/DataSetId", + "/properties/Schedule/ScheduleId" + ], + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the data source.

", + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "DataSetId": { + "type": "string" + }, + "Schedule": { + "$ref": "#/definitions/RefreshScheduleMap" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::QuickSight::RefreshSchedule" +} diff --git a/src/schema/aws-quicksight-template.json b/src/schema/aws-quicksight-template.json index bb5db353..5104466c 100644 --- a/src/schema/aws-quicksight-template.json +++ b/src/schema/aws-quicksight-template.json @@ -1,11458 +1,12378 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AwsAccountId", - "/properties/TemplateId" - ], - "definitions": { - "AggregationFunction": { - "additionalProperties": false, - "properties": { - "AttributeAggregationFunction": { - "$ref": "#/definitions/AttributeAggregationFunction" - }, - "CategoricalAggregationFunction": { - "$ref": "#/definitions/CategoricalAggregationFunction" - }, - "DateAggregationFunction": { - "$ref": "#/definitions/DateAggregationFunction" - }, - "NumericalAggregationFunction": { - "$ref": "#/definitions/NumericalAggregationFunction" - } - }, - "type": "object" - }, - "AggregationSortConfiguration": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/AggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "SortDirection": { - "$ref": "#/definitions/SortDirection" - } - }, - "required": [ - "Column", - "SortDirection" - ], - "type": "object" - }, - "AllSheetsFilterScopeConfiguration": { - "additionalProperties": false, - "type": "object" - }, - "AnalysisDefaults": { - "additionalProperties": false, - "properties": { - "DefaultNewSheetConfiguration": { - "$ref": "#/definitions/DefaultNewSheetConfiguration" - } - }, - "required": [ - "DefaultNewSheetConfiguration" - ], - "type": "object" - }, - "AnchorDateConfiguration": { - "additionalProperties": false, - "properties": { - "AnchorOption": { - "$ref": "#/definitions/AnchorOption" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - } - }, - "type": "object" - }, - "AnchorOption": { - "enum": [ - "NOW" - ], - "type": "string" - }, - "ArcAxisConfiguration": { - "additionalProperties": false, - "properties": { - "Range": { - "$ref": "#/definitions/ArcAxisDisplayRange" - }, - "ReserveRange": { - "default": 0, - "type": "number" - } - }, - "type": "object" - }, - "ArcAxisDisplayRange": { - "additionalProperties": false, - "properties": { - "Max": { - "default": null, - "type": "number" - }, - "Min": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "ArcConfiguration": { - "additionalProperties": false, - "properties": { - "ArcAngle": { - "default": null, - "type": "number" - }, - "ArcThickness": { - "$ref": "#/definitions/ArcThicknessOptions" - } - }, - "type": "object" - }, - "ArcOptions": { - "additionalProperties": false, - "properties": { - "ArcThickness": { - "$ref": "#/definitions/ArcThickness" - } - }, - "type": "object" - }, - "ArcThickness": { - "enum": [ - "SMALL", - "MEDIUM", - "LARGE", - "WHOLE" - ], - "type": "string" - }, - "ArcThicknessOptions": { - "enum": [ - "SMALL", - "MEDIUM", - "LARGE" - ], - "type": "string" - }, - "AssetOptions": { - "additionalProperties": false, - "properties": { - "Timezone": { - "type": "string" - }, - "WeekStart": { - "$ref": "#/definitions/DayOfTheWeek" - } - }, - "type": "object" - }, - "AttributeAggregationFunction": { - "additionalProperties": false, - "properties": { - "SimpleAttributeAggregation": { - "$ref": "#/definitions/SimpleAttributeAggregationFunction" - }, - "ValueForMultipleValues": { - "type": "string" - } - }, - "type": "object" - }, - "AxisBinding": { - "enum": [ - "PRIMARY_YAXIS", - "SECONDARY_YAXIS" - ], - "type": "string" - }, - "AxisDataOptions": { - "additionalProperties": false, - "properties": { - "DateAxisOptions": { - "$ref": "#/definitions/DateAxisOptions" - }, - "NumericAxisOptions": { - "$ref": "#/definitions/NumericAxisOptions" - } - }, - "type": "object" - }, - "AxisDisplayDataDrivenRange": { - "additionalProperties": false, - "type": "object" - }, - "AxisDisplayMinMaxRange": { - "additionalProperties": false, - "properties": { - "Maximum": { - "default": null, - "type": "number" - }, - "Minimum": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "AxisDisplayOptions": { - "additionalProperties": false, - "properties": { - "AxisLineVisibility": { - "$ref": "#/definitions/Visibility" - }, - "AxisOffset": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "DataOptions": { - "$ref": "#/definitions/AxisDataOptions" - }, - "GridLineVisibility": { - "$ref": "#/definitions/Visibility" - }, - "ScrollbarOptions": { - "$ref": "#/definitions/ScrollBarOptions" - }, - "TickLabelOptions": { - "$ref": "#/definitions/AxisTickLabelOptions" - } - }, - "type": "object" - }, - "AxisDisplayRange": { - "additionalProperties": false, - "properties": { - "DataDriven": { - "$ref": "#/definitions/AxisDisplayDataDrivenRange" - }, - "MinMax": { - "$ref": "#/definitions/AxisDisplayMinMaxRange" - } - }, - "type": "object" - }, - "AxisLabelOptions": { - "additionalProperties": false, - "properties": { - "ApplyTo": { - "$ref": "#/definitions/AxisLabelReferenceOptions" - }, - "CustomLabel": { - "type": "string" - }, - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - } - }, - "type": "object" - }, - "AxisLabelReferenceOptions": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "AxisLinearScale": { - "additionalProperties": false, - "properties": { - "StepCount": { - "default": null, - "type": "number" - }, - "StepSize": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "AxisLogarithmicScale": { - "additionalProperties": false, - "properties": { - "Base": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "AxisScale": { - "additionalProperties": false, - "properties": { - "Linear": { - "$ref": "#/definitions/AxisLinearScale" - }, - "Logarithmic": { - "$ref": "#/definitions/AxisLogarithmicScale" - } - }, - "type": "object" - }, - "AxisTickLabelOptions": { - "additionalProperties": false, - "properties": { - "LabelOptions": { - "$ref": "#/definitions/LabelOptions" - }, - "RotationAngle": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "BarChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Colors": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "SmallMultiples": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "BarChartConfiguration": { - "additionalProperties": false, - "properties": { - "BarsArrangement": { - "$ref": "#/definitions/BarsArrangement" - }, - "CategoryAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ColorLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ContributionAnalysisDefaults": { - "items": { - "$ref": "#/definitions/ContributionAnalysisDefault" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/BarChartFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "Orientation": { - "$ref": "#/definitions/BarChartOrientation" - }, - "ReferenceLines": { - "items": { - "$ref": "#/definitions/ReferenceLine" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "SmallMultiplesOptions": { - "$ref": "#/definitions/SmallMultiplesOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/BarChartSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "ValueAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "ValueLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "BarChartFieldWells": { - "additionalProperties": false, - "properties": { - "BarChartAggregatedFieldWells": { - "$ref": "#/definitions/BarChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "BarChartOrientation": { - "enum": [ - "HORIZONTAL", - "VERTICAL" - ], - "type": "string" - }, - "BarChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "ColorItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "ColorSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "SmallMultiplesLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "SmallMultiplesSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "BarChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/BarChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "BarsArrangement": { - "enum": [ - "CLUSTERED", - "STACKED", - "STACKED_PERCENT" - ], - "type": "string" - }, - "BaseMapStyleType": { - "enum": [ - "LIGHT_GRAY", - "DARK_GRAY", - "STREET", - "IMAGERY" - ], - "type": "string" - }, - "BinCountOptions": { - "additionalProperties": false, - "properties": { - "Value": { - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "BinWidthOptions": { - "additionalProperties": false, - "properties": { - "BinCountLimit": { - "maximum": 1000, - "minimum": 0, - "type": "number" - }, - "Value": { - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "BodySectionConfiguration": { - "additionalProperties": false, - "properties": { - "Content": { - "$ref": "#/definitions/BodySectionContent" - }, - "PageBreakConfiguration": { - "$ref": "#/definitions/SectionPageBreakConfiguration" - }, - "SectionId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Style": { - "$ref": "#/definitions/SectionStyle" - } - }, - "required": [ - "Content", - "SectionId" - ], - "type": "object" - }, - "BodySectionContent": { - "additionalProperties": false, - "properties": { - "Layout": { - "$ref": "#/definitions/SectionLayoutConfiguration" - } - }, - "type": "object" - }, - "BoxPlotAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "GroupBy": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "BoxPlotChartConfiguration": { - "additionalProperties": false, - "properties": { - "BoxPlotOptions": { - "$ref": "#/definitions/BoxPlotOptions" - }, - "CategoryAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/BoxPlotFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "PrimaryYAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "PrimaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ReferenceLines": { - "items": { - "$ref": "#/definitions/ReferenceLine" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "SortConfiguration": { - "$ref": "#/definitions/BoxPlotSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "BoxPlotFieldWells": { - "additionalProperties": false, - "properties": { - "BoxPlotAggregatedFieldWells": { - "$ref": "#/definitions/BoxPlotAggregatedFieldWells" - } - }, - "type": "object" - }, - "BoxPlotFillStyle": { - "enum": [ - "SOLID", - "TRANSPARENT" - ], - "type": "string" - }, - "BoxPlotOptions": { - "additionalProperties": false, - "properties": { - "AllDataPointsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "OutlierVisibility": { - "$ref": "#/definitions/Visibility" - }, - "StyleOptions": { - "$ref": "#/definitions/BoxPlotStyleOptions" - } - }, - "type": "object" - }, - "BoxPlotSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "PaginationConfiguration": { - "$ref": "#/definitions/PaginationConfiguration" - } - }, - "type": "object" - }, - "BoxPlotStyleOptions": { - "additionalProperties": false, - "properties": { - "FillStyle": { - "$ref": "#/definitions/BoxPlotFillStyle" - } - }, - "type": "object" - }, - "BoxPlotVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/BoxPlotChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "CalculatedField": { - "additionalProperties": false, - "properties": { - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Expression": { - "maxLength": 32000, - "minLength": 1, - "type": "string" - }, - "Name": { - "maxLength": 127, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DataSetIdentifier", - "Expression", - "Name" - ], - "type": "object" - }, - "CalculatedMeasureField": { - "additionalProperties": false, - "properties": { - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Expression", - "FieldId" - ], - "type": "object" - }, - "CascadingControlConfiguration": { - "additionalProperties": false, - "properties": { - "SourceControls": { - "items": { - "$ref": "#/definitions/CascadingControlSource" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "CascadingControlSource": { - "additionalProperties": false, - "properties": { - "ColumnToMatch": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "SourceSheetControlId": { - "type": "string" - } - }, - "type": "object" - }, - "CategoricalAggregationFunction": { - "enum": [ - "COUNT", - "DISTINCT_COUNT" - ], - "type": "string" - }, - "CategoricalDimensionField": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/StringFormatConfiguration" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "CategoricalMeasureField": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/CategoricalAggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/StringFormatConfiguration" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "CategoryDrillDownFilter": { - "additionalProperties": false, - "properties": { - "CategoryValues": { - "items": { - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "maxItems": 100000, - "minItems": 0, - "type": "array" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - } - }, - "required": [ - "CategoryValues", - "Column" - ], - "type": "object" - }, - "CategoryFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "Configuration": { - "$ref": "#/definitions/CategoryFilterConfiguration" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "Column", - "Configuration", - "FilterId" - ], - "type": "object" - }, - "CategoryFilterConfiguration": { - "additionalProperties": false, - "properties": { - "CustomFilterConfiguration": { - "$ref": "#/definitions/CustomFilterConfiguration" - }, - "CustomFilterListConfiguration": { - "$ref": "#/definitions/CustomFilterListConfiguration" - }, - "FilterListConfiguration": { - "$ref": "#/definitions/FilterListConfiguration" - } - }, - "type": "object" - }, - "CategoryFilterMatchOperator": { - "enum": [ - "EQUALS", - "DOES_NOT_EQUAL", - "CONTAINS", - "DOES_NOT_CONTAIN", - "STARTS_WITH", - "ENDS_WITH" - ], - "type": "string" - }, - "CategoryFilterSelectAllOptions": { - "enum": [ - "FILTER_ALL_VALUES" - ], - "type": "string" - }, - "CategoryInnerFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "Configuration": { - "$ref": "#/definitions/CategoryFilterConfiguration" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - } - }, - "required": [ - "Column", - "Configuration" - ], - "type": "object" - }, - "ChartAxisLabelOptions": { - "additionalProperties": false, - "properties": { - "AxisLabelOptions": { - "items": { - "$ref": "#/definitions/AxisLabelOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "SortIconVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "ClusterMarker": { - "additionalProperties": false, - "properties": { - "SimpleClusterMarker": { - "$ref": "#/definitions/SimpleClusterMarker" - } - }, - "type": "object" - }, - "ClusterMarkerConfiguration": { - "additionalProperties": false, - "properties": { - "ClusterMarker": { - "$ref": "#/definitions/ClusterMarker" - } - }, - "type": "object" - }, - "ColorFillType": { - "enum": [ - "DISCRETE", - "GRADIENT" - ], - "type": "string" - }, - "ColorScale": { - "additionalProperties": false, - "properties": { - "ColorFillType": { - "$ref": "#/definitions/ColorFillType" - }, - "Colors": { - "items": { - "$ref": "#/definitions/DataColor" - }, - "maxItems": 3, - "minItems": 2, - "type": "array" - }, - "NullValueColor": { - "$ref": "#/definitions/DataColor" - } - }, - "required": [ - "ColorFillType", - "Colors" - ], - "type": "object" - }, - "ColorsConfiguration": { - "additionalProperties": false, - "properties": { - "CustomColors": { - "items": { - "$ref": "#/definitions/CustomColor" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ColumnConfiguration": { - "additionalProperties": false, - "properties": { - "ColorsConfiguration": { - "$ref": "#/definitions/ColorsConfiguration" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FormatConfiguration": { - "$ref": "#/definitions/FormatConfiguration" - }, - "Role": { - "$ref": "#/definitions/ColumnRole" - } - }, - "required": [ - "Column" - ], - "type": "object" - }, - "ColumnGroupColumnSchema": { - "additionalProperties": false, - "description": "

A structure describing the name, data type, and geographic role of the columns.

", - "properties": { - "Name": { - "description": "

The name of the column group's column schema.

", - "type": "string" - } - }, - "type": "object" - }, - "ColumnGroupSchema": { - "additionalProperties": false, - "description": "

The column group schema.

", - "properties": { - "ColumnGroupColumnSchemaList": { - "description": "

A structure containing the list of schemas for column group columns.

", - "items": { - "$ref": "#/definitions/ColumnGroupColumnSchema" - }, - "maxItems": 500, - "minItems": 0, - "type": "array" - }, - "Name": { - "description": "

The name of the column group schema.

", - "type": "string" - } - }, - "type": "object" - }, - "ColumnHierarchy": { - "additionalProperties": false, - "properties": { - "DateTimeHierarchy": { - "$ref": "#/definitions/DateTimeHierarchy" - }, - "ExplicitHierarchy": { - "$ref": "#/definitions/ExplicitHierarchy" - }, - "PredefinedHierarchy": { - "$ref": "#/definitions/PredefinedHierarchy" - } - }, - "type": "object" - }, - "ColumnIdentifier": { - "additionalProperties": false, - "properties": { - "ColumnName": { - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ColumnName", - "DataSetIdentifier" - ], - "type": "object" - }, - "ColumnRole": { - "enum": [ - "DIMENSION", - "MEASURE" - ], - "type": "string" - }, - "ColumnSchema": { - "additionalProperties": false, - "description": "

The column schema.

", - "properties": { - "DataType": { - "description": "

The data type of the column schema.

", - "type": "string" - }, - "GeographicRole": { - "description": "

The geographic role of the column schema.

", - "type": "string" - }, - "Name": { - "description": "

The name of the column schema.

", - "type": "string" - } - }, - "type": "object" - }, - "ColumnSort": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/AggregationFunction" - }, - "Direction": { - "$ref": "#/definitions/SortDirection" - }, - "SortBy": { - "$ref": "#/definitions/ColumnIdentifier" - } - }, - "required": [ - "Direction", - "SortBy" - ], - "type": "object" - }, - "ColumnTooltipItem": { - "additionalProperties": false, - "properties": { - "Aggregation": { - "$ref": "#/definitions/AggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "Label": { - "type": "string" - }, - "TooltipTarget": { - "$ref": "#/definitions/TooltipTarget" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "required": [ - "Column" - ], - "type": "object" - }, - "ComboChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "BarValues": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Colors": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "LineValues": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ComboChartConfiguration": { - "additionalProperties": false, - "properties": { - "BarDataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "BarsArrangement": { - "$ref": "#/definitions/BarsArrangement" - }, - "CategoryAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ColorLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/ComboChartFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "LineDataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "PrimaryYAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "PrimaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ReferenceLines": { - "items": { - "$ref": "#/definitions/ReferenceLine" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "SecondaryYAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "SecondaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "SingleAxisOptions": { - "$ref": "#/definitions/SingleAxisOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/ComboChartSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "ComboChartFieldWells": { - "additionalProperties": false, - "properties": { - "ComboChartAggregatedFieldWells": { - "$ref": "#/definitions/ComboChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "ComboChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "ColorItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "ColorSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ComboChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/ComboChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "CommitMode": { - "enum": [ - "AUTO", - "MANUAL" - ], - "type": "string" - }, - "ComparisonConfiguration": { - "additionalProperties": false, - "properties": { - "ComparisonFormat": { - "$ref": "#/definitions/ComparisonFormatConfiguration" - }, - "ComparisonMethod": { - "$ref": "#/definitions/ComparisonMethod" - } - }, - "type": "object" - }, - "ComparisonFormatConfiguration": { - "additionalProperties": false, - "properties": { - "NumberDisplayFormatConfiguration": { - "$ref": "#/definitions/NumberDisplayFormatConfiguration" - }, - "PercentageDisplayFormatConfiguration": { - "$ref": "#/definitions/PercentageDisplayFormatConfiguration" - } - }, - "type": "object" - }, - "ComparisonMethod": { - "enum": [ - "DIFFERENCE", - "PERCENT_DIFFERENCE", - "PERCENT" - ], - "type": "string" - }, - "Computation": { - "additionalProperties": false, - "properties": { - "Forecast": { - "$ref": "#/definitions/ForecastComputation" - }, - "GrowthRate": { - "$ref": "#/definitions/GrowthRateComputation" - }, - "MaximumMinimum": { - "$ref": "#/definitions/MaximumMinimumComputation" - }, - "MetricComparison": { - "$ref": "#/definitions/MetricComparisonComputation" - }, - "PeriodOverPeriod": { - "$ref": "#/definitions/PeriodOverPeriodComputation" - }, - "PeriodToDate": { - "$ref": "#/definitions/PeriodToDateComputation" - }, - "TopBottomMovers": { - "$ref": "#/definitions/TopBottomMoversComputation" - }, - "TopBottomRanked": { - "$ref": "#/definitions/TopBottomRankedComputation" - }, - "TotalAggregation": { - "$ref": "#/definitions/TotalAggregationComputation" - }, - "UniqueValues": { - "$ref": "#/definitions/UniqueValuesComputation" - } - }, - "type": "object" - }, - "ConditionalFormattingColor": { - "additionalProperties": false, - "properties": { - "Gradient": { - "$ref": "#/definitions/ConditionalFormattingGradientColor" - }, - "Solid": { - "$ref": "#/definitions/ConditionalFormattingSolidColor" - } - }, - "type": "object" - }, - "ConditionalFormattingCustomIconCondition": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "DisplayConfiguration": { - "$ref": "#/definitions/ConditionalFormattingIconDisplayConfiguration" - }, - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "IconOptions": { - "$ref": "#/definitions/ConditionalFormattingCustomIconOptions" - } - }, - "required": [ - "Expression", - "IconOptions" - ], - "type": "object" - }, - "ConditionalFormattingCustomIconOptions": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/Icon" - }, - "UnicodeIcon": { - "pattern": "^[^\\u0000-\\u00FF]$", - "type": "string" - } - }, - "type": "object" - }, - "ConditionalFormattingGradientColor": { - "additionalProperties": false, - "properties": { - "Color": { - "$ref": "#/definitions/GradientColor" - }, - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Color", - "Expression" - ], - "type": "object" - }, - "ConditionalFormattingIcon": { - "additionalProperties": false, - "properties": { - "CustomCondition": { - "$ref": "#/definitions/ConditionalFormattingCustomIconCondition" - }, - "IconSet": { - "$ref": "#/definitions/ConditionalFormattingIconSet" - } - }, - "type": "object" - }, - "ConditionalFormattingIconDisplayConfiguration": { - "additionalProperties": false, - "properties": { - "IconDisplayOption": { - "$ref": "#/definitions/ConditionalFormattingIconDisplayOption" - } - }, - "type": "object" - }, - "ConditionalFormattingIconDisplayOption": { - "enum": [ - "ICON_ONLY" - ], - "type": "string" - }, - "ConditionalFormattingIconSet": { - "additionalProperties": false, - "properties": { - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "IconSetType": { - "$ref": "#/definitions/ConditionalFormattingIconSetType" - } - }, - "required": [ - "Expression" - ], - "type": "object" - }, - "ConditionalFormattingIconSetType": { - "enum": [ - "PLUS_MINUS", - "CHECK_X", - "THREE_COLOR_ARROW", - "THREE_GRAY_ARROW", - "CARET_UP_MINUS_DOWN", - "THREE_SHAPE", - "THREE_CIRCLE", - "FLAGS", - "BARS", - "FOUR_COLOR_ARROW", - "FOUR_GRAY_ARROW" - ], - "type": "string" - }, - "ConditionalFormattingSolidColor": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Expression" - ], - "type": "object" - }, - "ContributionAnalysisDefault": { - "additionalProperties": false, - "properties": { - "ContributorDimensions": { - "items": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "maxItems": 4, - "minItems": 1, - "type": "array" - }, - "MeasureFieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ContributorDimensions", - "MeasureFieldId" - ], - "type": "object" - }, - "CrossDatasetTypes": { - "enum": [ - "ALL_DATASETS", - "SINGLE_DATASET" - ], - "type": "string" - }, - "CurrencyDisplayFormatConfiguration": { - "additionalProperties": false, - "properties": { - "DecimalPlacesConfiguration": { - "$ref": "#/definitions/DecimalPlacesConfiguration" - }, - "NegativeValueConfiguration": { - "$ref": "#/definitions/NegativeValueConfiguration" - }, - "NullValueFormatConfiguration": { - "$ref": "#/definitions/NullValueFormatConfiguration" - }, - "NumberScale": { - "$ref": "#/definitions/NumberScale" - }, - "Prefix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "SeparatorConfiguration": { - "$ref": "#/definitions/NumericSeparatorConfiguration" - }, - "Suffix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Symbol": { - "pattern": "^[A-Z]{3}$", - "type": "string" - } - }, - "type": "object" - }, - "CustomActionFilterOperation": { - "additionalProperties": false, - "properties": { - "SelectedFieldsConfiguration": { - "$ref": "#/definitions/FilterOperationSelectedFieldsConfiguration" - }, - "TargetVisualsConfiguration": { - "$ref": "#/definitions/FilterOperationTargetVisualsConfiguration" - } - }, - "required": [ - "SelectedFieldsConfiguration", - "TargetVisualsConfiguration" - ], - "type": "object" - }, - "CustomActionNavigationOperation": { - "additionalProperties": false, - "properties": { - "LocalNavigationConfiguration": { - "$ref": "#/definitions/LocalNavigationConfiguration" - } - }, - "type": "object" - }, - "CustomActionSetParametersOperation": { - "additionalProperties": false, - "properties": { - "ParameterValueConfigurations": { - "items": { - "$ref": "#/definitions/SetParameterValueConfiguration" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "ParameterValueConfigurations" - ], - "type": "object" - }, - "CustomActionURLOperation": { - "additionalProperties": false, - "properties": { - "URLTarget": { - "$ref": "#/definitions/URLTargetConfiguration" - }, - "URLTemplate": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "URLTarget", - "URLTemplate" - ], - "type": "object" - }, - "CustomColor": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "FieldValue": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - }, - "SpecialValue": { - "$ref": "#/definitions/SpecialValue" - } - }, - "required": [ - "Color" - ], - "type": "object" - }, - "CustomContentConfiguration": { - "additionalProperties": false, - "properties": { - "ContentType": { - "$ref": "#/definitions/CustomContentType" - }, - "ContentUrl": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "ImageScaling": { - "$ref": "#/definitions/CustomContentImageScalingConfiguration" - } - }, - "type": "object" - }, - "CustomContentImageScalingConfiguration": { - "enum": [ - "FIT_TO_HEIGHT", - "FIT_TO_WIDTH", - "DO_NOT_SCALE", - "SCALE_TO_VISUAL" - ], - "type": "string" - }, - "CustomContentType": { - "enum": [ - "IMAGE", - "OTHER_EMBEDDED_CONTENT" - ], - "type": "string" - }, - "CustomContentVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/CustomContentConfiguration" - }, - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "DataSetIdentifier", - "VisualId" - ], - "type": "object" - }, - "CustomFilterConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryValue": { - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "MatchOperator": { - "$ref": "#/definitions/CategoryFilterMatchOperator" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "SelectAllOptions": { - "$ref": "#/definitions/CategoryFilterSelectAllOptions" - } - }, - "required": [ - "MatchOperator", - "NullOption" - ], - "type": "object" - }, - "CustomFilterListConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryValues": { - "items": { - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "maxItems": 100000, - "minItems": 0, - "type": "array" - }, - "MatchOperator": { - "$ref": "#/definitions/CategoryFilterMatchOperator" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "SelectAllOptions": { - "$ref": "#/definitions/CategoryFilterSelectAllOptions" - } - }, - "required": [ - "MatchOperator", - "NullOption" - ], - "type": "object" - }, - "CustomNarrativeOptions": { - "additionalProperties": false, - "properties": { - "Narrative": { - "maxLength": 150000, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Narrative" - ], - "type": "object" - }, - "CustomParameterValues": { - "additionalProperties": false, - "properties": { - "DateTimeValues": { - "items": { - "format": "date-time", - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - }, - "DecimalValues": { - "items": { - "type": "number" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - }, - "IntegerValues": { - "items": { - "type": "number" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - }, - "StringValues": { - "items": { - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "CustomValuesConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValues": { - "$ref": "#/definitions/CustomParameterValues" - }, - "IncludeNullValue": { - "type": "boolean" - } - }, - "required": [ - "CustomValues" - ], - "type": "object" - }, - "DataBarsOptions": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "NegativeColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "PositiveColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "DataColor": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "DataValue": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "DataFieldSeriesItem": { - "additionalProperties": false, - "properties": { - "AxisBinding": { - "$ref": "#/definitions/AxisBinding" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FieldValue": { - "type": "string" - }, - "Settings": { - "$ref": "#/definitions/LineChartSeriesSettings" - } - }, - "required": [ - "AxisBinding", - "FieldId" - ], - "type": "object" - }, - "DataLabelContent": { - "enum": [ - "VALUE", - "PERCENT", - "VALUE_AND_PERCENT" - ], - "type": "string" - }, - "DataLabelOptions": { - "additionalProperties": false, - "properties": { - "CategoryLabelVisibility": { - "$ref": "#/definitions/Visibility" - }, - "DataLabelTypes": { - "items": { - "$ref": "#/definitions/DataLabelType" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "LabelColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "LabelContent": { - "$ref": "#/definitions/DataLabelContent" - }, - "LabelFontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "MeasureLabelVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Overlap": { - "$ref": "#/definitions/DataLabelOverlap" - }, - "Position": { - "$ref": "#/definitions/DataLabelPosition" - }, - "TotalsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "DataLabelOverlap": { - "enum": [ - "DISABLE_OVERLAP", - "ENABLE_OVERLAP" - ], - "type": "string" - }, - "DataLabelPosition": { - "enum": [ - "INSIDE", - "OUTSIDE", - "LEFT", - "TOP", - "BOTTOM", - "RIGHT" - ], - "type": "string" - }, - "DataLabelType": { - "additionalProperties": false, - "properties": { - "DataPathLabelType": { - "$ref": "#/definitions/DataPathLabelType" - }, - "FieldLabelType": { - "$ref": "#/definitions/FieldLabelType" - }, - "MaximumLabelType": { - "$ref": "#/definitions/MaximumLabelType" - }, - "MinimumLabelType": { - "$ref": "#/definitions/MinimumLabelType" - }, - "RangeEndsLabelType": { - "$ref": "#/definitions/RangeEndsLabelType" - } - }, - "type": "object" - }, - "DataPathColor": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Element": { - "$ref": "#/definitions/DataPathValue" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - } - }, - "required": [ - "Color", - "Element" - ], - "type": "object" - }, - "DataPathLabelType": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FieldValue": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "DataPathSort": { - "additionalProperties": false, - "properties": { - "Direction": { - "$ref": "#/definitions/SortDirection" - }, - "SortPaths": { - "items": { - "$ref": "#/definitions/DataPathValue" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Direction", - "SortPaths" - ], - "type": "object" - }, - "DataPathType": { - "additionalProperties": false, - "properties": { - "PivotTableDataPathType": { - "$ref": "#/definitions/PivotTableDataPathType" - } - }, - "type": "object" - }, - "DataPathValue": { - "additionalProperties": false, - "properties": { - "DataPathType": { - "$ref": "#/definitions/DataPathType" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FieldValue": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "DataSetConfiguration": { - "additionalProperties": false, - "description": "

Dataset configuration.

", - "properties": { - "ColumnGroupSchemaList": { - "description": "

A structure containing the list of column group schemas.

", - "items": { - "$ref": "#/definitions/ColumnGroupSchema" - }, - "maxItems": 500, - "minItems": 0, - "type": "array" - }, - "DataSetSchema": { - "$ref": "#/definitions/DataSetSchema" - }, - "Placeholder": { - "description": "

Placeholder.

", - "type": "string" - } - }, - "type": "object" - }, - "DataSetReference": { - "additionalProperties": false, - "description": "

Dataset reference.

", - "properties": { - "DataSetArn": { - "description": "

Dataset Amazon Resource Name (ARN).

", - "type": "string" - }, - "DataSetPlaceholder": { - "description": "

Dataset placeholder.

", - "pattern": "\\S", - "type": "string" - } - }, - "required": [ - "DataSetArn", - "DataSetPlaceholder" - ], - "type": "object" - }, - "DataSetSchema": { - "additionalProperties": false, - "description": "

Dataset schema.

", - "properties": { - "ColumnSchemaList": { - "description": "

A structure containing the list of column schemas.

", - "items": { - "$ref": "#/definitions/ColumnSchema" - }, - "maxItems": 500, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "DateAggregationFunction": { - "enum": [ - "COUNT", - "DISTINCT_COUNT", - "MIN", - "MAX" - ], - "type": "string" - }, - "DateAxisOptions": { - "additionalProperties": false, - "properties": { - "MissingDateVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "DateDimensionField": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DateGranularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/DateTimeFormatConfiguration" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "DateMeasureField": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/DateAggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/DateTimeFormatConfiguration" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "DateTimeDefaultValues": { - "additionalProperties": false, - "properties": { - "DynamicValue": { - "$ref": "#/definitions/DynamicDefaultValue" - }, - "RollingDate": { - "$ref": "#/definitions/RollingDateConfiguration" - }, - "StaticValues": { - "items": { - "format": "date-time", - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "DateTimeFormatConfiguration": { - "additionalProperties": false, - "properties": { - "DateTimeFormat": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "NullValueFormatConfiguration": { - "$ref": "#/definitions/NullValueFormatConfiguration" - }, - "NumericFormatConfiguration": { - "$ref": "#/definitions/NumericFormatConfiguration" - } - }, - "type": "object" - }, - "DateTimeHierarchy": { - "additionalProperties": false, - "properties": { - "DrillDownFilters": { - "items": { - "$ref": "#/definitions/DrillDownFilter" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "HierarchyId" - ], - "type": "object" - }, - "DateTimeParameterDeclaration": { - "additionalProperties": false, - "properties": { - "DefaultValues": { - "$ref": "#/definitions/DateTimeDefaultValues" - }, - "MappedDataSetParameters": { - "items": { - "$ref": "#/definitions/MappedDataSetParameter" - }, - "maxItems": 150, - "minItems": 0, - "type": "array" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "ValueWhenUnset": { - "$ref": "#/definitions/DateTimeValueWhenUnsetConfiguration" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "DateTimePickerControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "DateTimeFormat": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "DateTimeValueWhenUnsetConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValue": { - "format": "date-time", - "type": "string" - }, - "ValueWhenUnsetOption": { - "$ref": "#/definitions/ValueWhenUnsetOption" - } - }, - "type": "object" - }, - "DayOfTheWeek": { - "enum": [ - "SUNDAY", - "MONDAY", - "TUESDAY", - "WEDNESDAY", - "THURSDAY", - "FRIDAY", - "SATURDAY" - ], - "type": "string" - }, - "DecimalDefaultValues": { - "additionalProperties": false, - "properties": { - "DynamicValue": { - "$ref": "#/definitions/DynamicDefaultValue" - }, - "StaticValues": { - "items": { - "type": "number" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "DecimalParameterDeclaration": { - "additionalProperties": false, - "properties": { - "DefaultValues": { - "$ref": "#/definitions/DecimalDefaultValues" - }, - "MappedDataSetParameters": { - "items": { - "$ref": "#/definitions/MappedDataSetParameter" - }, - "maxItems": 150, - "minItems": 0, - "type": "array" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "ParameterValueType": { - "$ref": "#/definitions/ParameterValueType" - }, - "ValueWhenUnset": { - "$ref": "#/definitions/DecimalValueWhenUnsetConfiguration" - } - }, - "required": [ - "Name", - "ParameterValueType" - ], - "type": "object" - }, - "DecimalPlacesConfiguration": { - "additionalProperties": false, - "properties": { - "DecimalPlaces": { - "maximum": 20, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "DecimalPlaces" - ], - "type": "object" - }, - "DecimalValueWhenUnsetConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValue": { - "default": null, - "type": "number" - }, - "ValueWhenUnsetOption": { - "$ref": "#/definitions/ValueWhenUnsetOption" - } - }, - "type": "object" - }, - "DefaultDateTimePickerControlOptions": { - "additionalProperties": false, - "properties": { - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/DateTimePickerControlDisplayOptions" - }, - "Type": { - "$ref": "#/definitions/SheetControlDateTimePickerType" - } - }, - "type": "object" - }, - "DefaultFilterControlConfiguration": { - "additionalProperties": false, - "properties": { - "ControlOptions": { - "$ref": "#/definitions/DefaultFilterControlOptions" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ControlOptions", - "Title" - ], - "type": "object" - }, - "DefaultFilterControlOptions": { - "additionalProperties": false, - "properties": { - "DefaultDateTimePickerOptions": { - "$ref": "#/definitions/DefaultDateTimePickerControlOptions" - }, - "DefaultDropdownOptions": { - "$ref": "#/definitions/DefaultFilterDropDownControlOptions" - }, - "DefaultListOptions": { - "$ref": "#/definitions/DefaultFilterListControlOptions" - }, - "DefaultRelativeDateTimeOptions": { - "$ref": "#/definitions/DefaultRelativeDateTimeControlOptions" - }, - "DefaultSliderOptions": { - "$ref": "#/definitions/DefaultSliderControlOptions" - }, - "DefaultTextAreaOptions": { - "$ref": "#/definitions/DefaultTextAreaControlOptions" - }, - "DefaultTextFieldOptions": { - "$ref": "#/definitions/DefaultTextFieldControlOptions" - } - }, - "type": "object" - }, - "DefaultFilterDropDownControlOptions": { - "additionalProperties": false, - "properties": { - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/DropDownControlDisplayOptions" - }, - "SelectableValues": { - "$ref": "#/definitions/FilterSelectableValues" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "type": "object" - }, - "DefaultFilterListControlOptions": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/ListControlDisplayOptions" - }, - "SelectableValues": { - "$ref": "#/definitions/FilterSelectableValues" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "type": "object" - }, - "DefaultFreeFormLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "CanvasSizeOptions": { - "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" - } - }, - "required": [ - "CanvasSizeOptions" - ], - "type": "object" - }, - "DefaultGridLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "CanvasSizeOptions": { - "$ref": "#/definitions/GridLayoutCanvasSizeOptions" - } - }, - "required": [ - "CanvasSizeOptions" - ], - "type": "object" - }, - "DefaultInteractiveLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "FreeForm": { - "$ref": "#/definitions/DefaultFreeFormLayoutConfiguration" - }, - "Grid": { - "$ref": "#/definitions/DefaultGridLayoutConfiguration" - } - }, - "type": "object" - }, - "DefaultNewSheetConfiguration": { - "additionalProperties": false, - "properties": { - "InteractiveLayoutConfiguration": { - "$ref": "#/definitions/DefaultInteractiveLayoutConfiguration" - }, - "PaginatedLayoutConfiguration": { - "$ref": "#/definitions/DefaultPaginatedLayoutConfiguration" - }, - "SheetContentType": { - "$ref": "#/definitions/SheetContentType" - } - }, - "type": "object" - }, - "DefaultPaginatedLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "SectionBased": { - "$ref": "#/definitions/DefaultSectionBasedLayoutConfiguration" - } - }, - "type": "object" - }, - "DefaultRelativeDateTimeControlOptions": { - "additionalProperties": false, - "properties": { - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" - } - }, - "type": "object" - }, - "DefaultSectionBasedLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "CanvasSizeOptions": { - "$ref": "#/definitions/SectionBasedLayoutCanvasSizeOptions" - } - }, - "required": [ - "CanvasSizeOptions" - ], - "type": "object" - }, - "DefaultSliderControlOptions": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/SliderControlDisplayOptions" - }, - "MaximumValue": { - "default": 0, - "type": "number" - }, - "MinimumValue": { - "default": 0, - "type": "number" - }, - "StepSize": { - "default": 0, - "type": "number" - }, - "Type": { - "$ref": "#/definitions/SheetControlSliderType" - } - }, - "required": [ - "MaximumValue", - "MinimumValue", - "StepSize" - ], - "type": "object" - }, - "DefaultTextAreaControlOptions": { - "additionalProperties": false, - "properties": { - "Delimiter": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "DisplayOptions": { - "$ref": "#/definitions/TextAreaControlDisplayOptions" - } - }, - "type": "object" - }, - "DefaultTextFieldControlOptions": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/TextFieldControlDisplayOptions" - } - }, - "type": "object" - }, - "DestinationParameterValueConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValuesConfiguration": { - "$ref": "#/definitions/CustomValuesConfiguration" - }, - "SelectAllValueOptions": { - "$ref": "#/definitions/SelectAllValueOptions" - }, - "SourceColumn": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "SourceField": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "SourceParameterName": { - "type": "string" - } - }, - "type": "object" - }, - "DimensionField": { - "additionalProperties": false, - "properties": { - "CategoricalDimensionField": { - "$ref": "#/definitions/CategoricalDimensionField" - }, - "DateDimensionField": { - "$ref": "#/definitions/DateDimensionField" - }, - "NumericalDimensionField": { - "$ref": "#/definitions/NumericalDimensionField" - } - }, - "type": "object" - }, - "DonutCenterOptions": { - "additionalProperties": false, - "properties": { - "LabelVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "DonutOptions": { - "additionalProperties": false, - "properties": { - "ArcOptions": { - "$ref": "#/definitions/ArcOptions" - }, - "DonutCenterOptions": { - "$ref": "#/definitions/DonutCenterOptions" - } - }, - "type": "object" - }, - "DrillDownFilter": { - "additionalProperties": false, - "properties": { - "CategoryFilter": { - "$ref": "#/definitions/CategoryDrillDownFilter" - }, - "NumericEqualityFilter": { - "$ref": "#/definitions/NumericEqualityDrillDownFilter" - }, - "TimeRangeFilter": { - "$ref": "#/definitions/TimeRangeDrillDownFilter" - } - }, - "type": "object" - }, - "DropDownControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "SelectAllOptions": { - "$ref": "#/definitions/ListControlSelectAllOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "DynamicDefaultValue": { - "additionalProperties": false, - "properties": { - "DefaultValueColumn": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "GroupNameColumn": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "UserNameColumn": { - "$ref": "#/definitions/ColumnIdentifier" - } - }, - "required": [ - "DefaultValueColumn" - ], - "type": "object" - }, - "EmptyVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "DataSetIdentifier", - "VisualId" - ], - "type": "object" - }, - "Entity": { - "additionalProperties": false, - "properties": { - "Path": { - "pattern": "\\S", - "type": "string" - } - }, - "type": "object" - }, - "ExcludePeriodConfiguration": { - "additionalProperties": false, - "properties": { - "Amount": { - "default": null, - "type": "number" - }, - "Granularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "Status": { - "$ref": "#/definitions/WidgetStatus" - } - }, - "required": [ - "Amount", - "Granularity" - ], - "type": "object" - }, - "ExplicitHierarchy": { - "additionalProperties": false, - "properties": { - "Columns": { - "items": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "maxItems": 10, - "minItems": 2, - "type": "array" - }, - "DrillDownFilters": { - "items": { - "$ref": "#/definitions/DrillDownFilter" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Columns", - "HierarchyId" - ], - "type": "object" - }, - "FieldBasedTooltip": { - "additionalProperties": false, - "properties": { - "AggregationVisibility": { - "$ref": "#/definitions/Visibility" - }, - "TooltipFields": { - "items": { - "$ref": "#/definitions/TooltipItem" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "TooltipTitleType": { - "$ref": "#/definitions/TooltipTitleType" - } - }, - "type": "object" - }, - "FieldLabelType": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "FieldSeriesItem": { - "additionalProperties": false, - "properties": { - "AxisBinding": { - "$ref": "#/definitions/AxisBinding" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Settings": { - "$ref": "#/definitions/LineChartSeriesSettings" - } - }, - "required": [ - "AxisBinding", - "FieldId" - ], - "type": "object" - }, - "FieldSort": { - "additionalProperties": false, - "properties": { - "Direction": { - "$ref": "#/definitions/SortDirection" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Direction", - "FieldId" - ], - "type": "object" - }, - "FieldSortOptions": { - "additionalProperties": false, - "properties": { - "ColumnSort": { - "$ref": "#/definitions/ColumnSort" - }, - "FieldSort": { - "$ref": "#/definitions/FieldSort" - } - }, - "type": "object" - }, - "FieldTooltipItem": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Label": { - "type": "string" - }, - "TooltipTarget": { - "$ref": "#/definitions/TooltipTarget" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "FilledMapAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Geospatial": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "FilledMapConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ConditionalFormattingOptions": { - "items": { - "$ref": "#/definitions/FilledMapConditionalFormattingOption" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "ConditionalFormattingOptions" - ], - "type": "object" - }, - "FilledMapConditionalFormattingOption": { - "additionalProperties": false, - "properties": { - "Shape": { - "$ref": "#/definitions/FilledMapShapeConditionalFormatting" - } - }, - "required": [ - "Shape" - ], - "type": "object" - }, - "FilledMapConfiguration": { - "additionalProperties": false, - "properties": { - "FieldWells": { - "$ref": "#/definitions/FilledMapFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "MapStyleOptions": { - "$ref": "#/definitions/GeospatialMapStyleOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/FilledMapSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "WindowOptions": { - "$ref": "#/definitions/GeospatialWindowOptions" - } - }, - "type": "object" - }, - "FilledMapFieldWells": { - "additionalProperties": false, - "properties": { - "FilledMapAggregatedFieldWells": { - "$ref": "#/definitions/FilledMapAggregatedFieldWells" - } - }, - "type": "object" - }, - "FilledMapShapeConditionalFormatting": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Format": { - "$ref": "#/definitions/ShapeConditionalFormat" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "FilledMapSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "FilledMapVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/FilledMapConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "ConditionalFormatting": { - "$ref": "#/definitions/FilledMapConditionalFormatting" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "Filter": { - "additionalProperties": false, - "properties": { - "CategoryFilter": { - "$ref": "#/definitions/CategoryFilter" - }, - "NestedFilter": { - "$ref": "#/definitions/NestedFilter" - }, - "NumericEqualityFilter": { - "$ref": "#/definitions/NumericEqualityFilter" - }, - "NumericRangeFilter": { - "$ref": "#/definitions/NumericRangeFilter" - }, - "RelativeDatesFilter": { - "$ref": "#/definitions/RelativeDatesFilter" - }, - "TimeEqualityFilter": { - "$ref": "#/definitions/TimeEqualityFilter" - }, - "TimeRangeFilter": { - "$ref": "#/definitions/TimeRangeFilter" - }, - "TopBottomFilter": { - "$ref": "#/definitions/TopBottomFilter" - } - }, - "type": "object" - }, - "FilterControl": { - "additionalProperties": false, - "properties": { - "CrossSheet": { - "$ref": "#/definitions/FilterCrossSheetControl" - }, - "DateTimePicker": { - "$ref": "#/definitions/FilterDateTimePickerControl" - }, - "Dropdown": { - "$ref": "#/definitions/FilterDropDownControl" - }, - "List": { - "$ref": "#/definitions/FilterListControl" - }, - "RelativeDateTime": { - "$ref": "#/definitions/FilterRelativeDateTimeControl" - }, - "Slider": { - "$ref": "#/definitions/FilterSliderControl" - }, - "TextArea": { - "$ref": "#/definitions/FilterTextAreaControl" - }, - "TextField": { - "$ref": "#/definitions/FilterTextFieldControl" - } - }, - "type": "object" - }, - "FilterCrossSheetControl": { - "additionalProperties": false, - "properties": { - "CascadingControlConfiguration": { - "$ref": "#/definitions/CascadingControlConfiguration" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId" - ], - "type": "object" - }, - "FilterDateTimePickerControl": { - "additionalProperties": false, - "properties": { - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/DateTimePickerControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlDateTimePickerType" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterDropDownControl": { - "additionalProperties": false, - "properties": { - "CascadingControlConfiguration": { - "$ref": "#/definitions/CascadingControlConfiguration" - }, - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/DropDownControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SelectableValues": { - "$ref": "#/definitions/FilterSelectableValues" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterGroup": { - "additionalProperties": false, - "properties": { - "CrossDataset": { - "$ref": "#/definitions/CrossDatasetTypes" - }, - "FilterGroupId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Filters": { - "items": { - "$ref": "#/definitions/Filter" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "ScopeConfiguration": { - "$ref": "#/definitions/FilterScopeConfiguration" - }, - "Status": { - "$ref": "#/definitions/WidgetStatus" - } - }, - "required": [ - "CrossDataset", - "FilterGroupId", - "Filters", - "ScopeConfiguration" - ], - "type": "object" - }, - "FilterListConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryValues": { - "items": { - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "maxItems": 100000, - "minItems": 0, - "type": "array" - }, - "MatchOperator": { - "$ref": "#/definitions/CategoryFilterMatchOperator" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "SelectAllOptions": { - "$ref": "#/definitions/CategoryFilterSelectAllOptions" - } - }, - "required": [ - "MatchOperator" - ], - "type": "object" - }, - "FilterListControl": { - "additionalProperties": false, - "properties": { - "CascadingControlConfiguration": { - "$ref": "#/definitions/CascadingControlConfiguration" - }, - "DisplayOptions": { - "$ref": "#/definitions/ListControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SelectableValues": { - "$ref": "#/definitions/FilterSelectableValues" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterNullOption": { - "enum": [ - "ALL_VALUES", - "NULLS_ONLY", - "NON_NULLS_ONLY" - ], - "type": "string" - }, - "FilterOperationSelectedFieldsConfiguration": { - "additionalProperties": false, - "properties": { - "SelectedColumns": { - "description": "

The selected columns of a dataset.

", - "items": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "SelectedFieldOptions": { - "$ref": "#/definitions/SelectedFieldOptions" - }, - "SelectedFields": { - "items": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "FilterOperationTargetVisualsConfiguration": { - "additionalProperties": false, - "properties": { - "SameSheetTargetVisualConfiguration": { - "$ref": "#/definitions/SameSheetTargetVisualConfiguration" - } - }, - "type": "object" - }, - "FilterRelativeDateTimeControl": { - "additionalProperties": false, - "properties": { - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterScopeConfiguration": { - "additionalProperties": false, - "properties": { - "AllSheets": { - "$ref": "#/definitions/AllSheetsFilterScopeConfiguration" - }, - "SelectedSheets": { - "$ref": "#/definitions/SelectedSheetsFilterScopeConfiguration" - } - }, - "type": "object" - }, - "FilterSelectableValues": { - "additionalProperties": false, - "properties": { - "Values": { - "items": { - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "FilterSliderControl": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/SliderControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "MaximumValue": { - "default": 0, - "type": "number" - }, - "MinimumValue": { - "default": 0, - "type": "number" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "StepSize": { - "default": 0, - "type": "number" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlSliderType" - } - }, - "required": [ - "FilterControlId", - "MaximumValue", - "MinimumValue", - "SourceFilterId", - "StepSize", - "Title" - ], - "type": "object" - }, - "FilterTextAreaControl": { - "additionalProperties": false, - "properties": { - "Delimiter": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "DisplayOptions": { - "$ref": "#/definitions/TextAreaControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterTextFieldControl": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/TextFieldControlDisplayOptions" - }, - "FilterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceFilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "FilterControlId", - "SourceFilterId", - "Title" - ], - "type": "object" - }, - "FilterVisualScope": { - "enum": [ - "ALL_VISUALS", - "SELECTED_VISUALS" - ], - "type": "string" - }, - "FontConfiguration": { - "additionalProperties": false, - "properties": { - "FontColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "FontDecoration": { - "$ref": "#/definitions/FontDecoration" - }, - "FontSize": { - "$ref": "#/definitions/FontSize" - }, - "FontStyle": { - "$ref": "#/definitions/FontStyle" - }, - "FontWeight": { - "$ref": "#/definitions/FontWeight" - } - }, - "type": "object" - }, - "FontDecoration": { - "enum": [ - "UNDERLINE", - "NONE" - ], - "type": "string" - }, - "FontSize": { - "additionalProperties": false, - "properties": { - "Relative": { - "$ref": "#/definitions/RelativeFontSize" - } - }, - "type": "object" - }, - "FontStyle": { - "enum": [ - "NORMAL", - "ITALIC" - ], - "type": "string" - }, - "FontWeight": { - "additionalProperties": false, - "properties": { - "Name": { - "$ref": "#/definitions/FontWeightName" - } - }, - "type": "object" - }, - "FontWeightName": { - "enum": [ - "NORMAL", - "BOLD" - ], - "type": "string" - }, - "ForecastComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "CustomSeasonalityValue": { - "default": null, - "maximum": 180, - "minimum": 1, - "type": "number" - }, - "LowerBoundary": { - "default": null, - "type": "number" - }, - "Name": { - "type": "string" - }, - "PeriodsBackward": { - "maximum": 1000, - "minimum": 0, - "type": "number" - }, - "PeriodsForward": { - "maximum": 1000, - "minimum": 1, - "type": "number" - }, - "PredictionInterval": { - "maximum": 95, - "minimum": 50, - "type": "number" - }, - "Seasonality": { - "$ref": "#/definitions/ForecastComputationSeasonality" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "UpperBoundary": { - "default": null, - "type": "number" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "ForecastComputationSeasonality": { - "enum": [ - "AUTOMATIC", - "CUSTOM" - ], - "type": "string" - }, - "ForecastConfiguration": { - "additionalProperties": false, - "properties": { - "ForecastProperties": { - "$ref": "#/definitions/TimeBasedForecastProperties" - }, - "Scenario": { - "$ref": "#/definitions/ForecastScenario" - } - }, - "type": "object" - }, - "ForecastScenario": { - "additionalProperties": false, - "properties": { - "WhatIfPointScenario": { - "$ref": "#/definitions/WhatIfPointScenario" - }, - "WhatIfRangeScenario": { - "$ref": "#/definitions/WhatIfRangeScenario" - } - }, - "type": "object" - }, - "FormatConfiguration": { - "additionalProperties": false, - "properties": { - "DateTimeFormatConfiguration": { - "$ref": "#/definitions/DateTimeFormatConfiguration" - }, - "NumberFormatConfiguration": { - "$ref": "#/definitions/NumberFormatConfiguration" - }, - "StringFormatConfiguration": { - "$ref": "#/definitions/StringFormatConfiguration" - } - }, - "type": "object" - }, - "FreeFormLayoutCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "ScreenCanvasSizeOptions": { - "$ref": "#/definitions/FreeFormLayoutScreenCanvasSizeOptions" - } - }, - "type": "object" - }, - "FreeFormLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "CanvasSizeOptions": { - "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" - }, - "Elements": { - "items": { - "$ref": "#/definitions/FreeFormLayoutElement" - }, - "maxItems": 430, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Elements" - ], - "type": "object" - }, - "FreeFormLayoutElement": { - "additionalProperties": false, - "properties": { - "BackgroundStyle": { - "$ref": "#/definitions/FreeFormLayoutElementBackgroundStyle" - }, - "BorderStyle": { - "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" - }, - "ElementId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "ElementType": { - "$ref": "#/definitions/LayoutElementType" - }, - "Height": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "LoadingAnimation": { - "$ref": "#/definitions/LoadingAnimation" - }, - "RenderingRules": { - "items": { - "$ref": "#/definitions/SheetElementRenderingRule" - }, - "maxItems": 10000, - "minItems": 0, - "type": "array" - }, - "SelectedBorderStyle": { - "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - }, - "Width": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "XAxisLocation": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "YAxisLocation": { - "description": "String based length that is composed of value and unit in px with Integer.MAX_VALUE as maximum value", - "type": "string" - } - }, - "required": [ - "ElementId", - "ElementType", - "Height", - "Width", - "XAxisLocation", - "YAxisLocation" - ], - "type": "object" - }, - "FreeFormLayoutElementBackgroundStyle": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "FreeFormLayoutElementBorderStyle": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "FreeFormLayoutScreenCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "OptimizedViewPortWidth": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - } - }, - "required": [ - "OptimizedViewPortWidth" - ], - "type": "object" - }, - "FreeFormSectionLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "Elements": { - "items": { - "$ref": "#/definitions/FreeFormLayoutElement" - }, - "maxItems": 430, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Elements" - ], - "type": "object" - }, - "FunnelChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "FunnelChartConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "DataLabelOptions": { - "$ref": "#/definitions/FunnelChartDataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/FunnelChartFieldWells" - }, - "SortConfiguration": { - "$ref": "#/definitions/FunnelChartSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "ValueLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "FunnelChartDataLabelOptions": { - "additionalProperties": false, - "properties": { - "CategoryLabelVisibility": { - "$ref": "#/definitions/Visibility" - }, - "LabelColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "LabelFontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "MeasureDataLabelStyle": { - "$ref": "#/definitions/FunnelChartMeasureDataLabelStyle" - }, - "MeasureLabelVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Position": { - "$ref": "#/definitions/DataLabelPosition" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "FunnelChartFieldWells": { - "additionalProperties": false, - "properties": { - "FunnelChartAggregatedFieldWells": { - "$ref": "#/definitions/FunnelChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "FunnelChartMeasureDataLabelStyle": { - "enum": [ - "VALUE_ONLY", - "PERCENTAGE_BY_FIRST_STAGE", - "PERCENTAGE_BY_PREVIOUS_STAGE", - "VALUE_AND_PERCENTAGE_BY_FIRST_STAGE", - "VALUE_AND_PERCENTAGE_BY_PREVIOUS_STAGE" - ], - "type": "string" - }, - "FunnelChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "FunnelChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/FunnelChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "GaugeChartArcConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ForegroundColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "GaugeChartConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ConditionalFormattingOptions": { - "items": { - "$ref": "#/definitions/GaugeChartConditionalFormattingOption" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "GaugeChartConditionalFormattingOption": { - "additionalProperties": false, - "properties": { - "Arc": { - "$ref": "#/definitions/GaugeChartArcConditionalFormatting" - }, - "PrimaryValue": { - "$ref": "#/definitions/GaugeChartPrimaryValueConditionalFormatting" - } - }, - "type": "object" - }, - "GaugeChartConfiguration": { - "additionalProperties": false, - "properties": { - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/GaugeChartFieldWells" - }, - "GaugeChartOptions": { - "$ref": "#/definitions/GaugeChartOptions" - }, - "TooltipOptions": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "GaugeChartFieldWells": { - "additionalProperties": false, - "properties": { - "TargetValues": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "GaugeChartOptions": { - "additionalProperties": false, - "properties": { - "Arc": { - "$ref": "#/definitions/ArcConfiguration" - }, - "ArcAxis": { - "$ref": "#/definitions/ArcAxisConfiguration" - }, - "Comparison": { - "$ref": "#/definitions/ComparisonConfiguration" - }, - "PrimaryValueDisplayType": { - "$ref": "#/definitions/PrimaryValueDisplayType" - }, - "PrimaryValueFontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - } - }, - "type": "object" - }, - "GaugeChartPrimaryValueConditionalFormatting": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/ConditionalFormattingIcon" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "GaugeChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/GaugeChartConfiguration" - }, - "ConditionalFormatting": { - "$ref": "#/definitions/GaugeChartConditionalFormatting" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "GeospatialCoordinateBounds": { - "additionalProperties": false, - "properties": { - "East": { - "maximum": 1800, - "minimum": -1800, - "type": "number" - }, - "North": { - "maximum": 90, - "minimum": -90, - "type": "number" - }, - "South": { - "maximum": 90, - "minimum": -90, - "type": "number" - }, - "West": { - "maximum": 1800, - "minimum": -1800, - "type": "number" - } - }, - "required": [ - "East", - "North", - "South", - "West" - ], - "type": "object" - }, - "GeospatialHeatmapColorScale": { - "additionalProperties": false, - "properties": { - "Colors": { - "items": { - "$ref": "#/definitions/GeospatialHeatmapDataColor" - }, - "maxItems": 2, - "minItems": 2, - "type": "array" - } - }, - "type": "object" - }, - "GeospatialHeatmapConfiguration": { - "additionalProperties": false, - "properties": { - "HeatmapColor": { - "$ref": "#/definitions/GeospatialHeatmapColorScale" - } - }, - "type": "object" - }, - "GeospatialHeatmapDataColor": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - } - }, - "required": [ - "Color" - ], - "type": "object" - }, - "GeospatialMapAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Colors": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Geospatial": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "GeospatialMapConfiguration": { - "additionalProperties": false, - "properties": { - "FieldWells": { - "$ref": "#/definitions/GeospatialMapFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "MapStyleOptions": { - "$ref": "#/definitions/GeospatialMapStyleOptions" - }, - "PointStyleOptions": { - "$ref": "#/definitions/GeospatialPointStyleOptions" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - }, - "WindowOptions": { - "$ref": "#/definitions/GeospatialWindowOptions" - } - }, - "type": "object" - }, - "GeospatialMapFieldWells": { - "additionalProperties": false, - "properties": { - "GeospatialMapAggregatedFieldWells": { - "$ref": "#/definitions/GeospatialMapAggregatedFieldWells" - } - }, - "type": "object" - }, - "GeospatialMapStyleOptions": { - "additionalProperties": false, - "properties": { - "BaseMapStyle": { - "$ref": "#/definitions/BaseMapStyleType" - } - }, - "type": "object" - }, - "GeospatialMapVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/GeospatialMapConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "GeospatialPointStyleOptions": { - "additionalProperties": false, - "properties": { - "ClusterMarkerConfiguration": { - "$ref": "#/definitions/ClusterMarkerConfiguration" - }, - "HeatmapConfiguration": { - "$ref": "#/definitions/GeospatialHeatmapConfiguration" - }, - "SelectedPointStyle": { - "$ref": "#/definitions/GeospatialSelectedPointStyle" - } - }, - "type": "object" - }, - "GeospatialSelectedPointStyle": { - "enum": [ - "POINT", - "CLUSTER", - "HEATMAP" - ], - "type": "string" - }, - "GeospatialWindowOptions": { - "additionalProperties": false, - "properties": { - "Bounds": { - "$ref": "#/definitions/GeospatialCoordinateBounds" - }, - "MapZoomMode": { - "$ref": "#/definitions/MapZoomMode" - } - }, - "type": "object" - }, - "GlobalTableBorderOptions": { - "additionalProperties": false, - "properties": { - "SideSpecificBorder": { - "$ref": "#/definitions/TableSideBorderOptions" - }, - "UniformBorder": { - "$ref": "#/definitions/TableBorderOptions" - } - }, - "type": "object" - }, - "GradientColor": { - "additionalProperties": false, - "properties": { - "Stops": { - "items": { - "$ref": "#/definitions/GradientStop" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "GradientStop": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "DataValue": { - "default": null, - "type": "number" - }, - "GradientOffset": { - "default": 0, - "type": "number" - } - }, - "required": [ - "GradientOffset" - ], - "type": "object" - }, - "GridLayoutCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "ScreenCanvasSizeOptions": { - "$ref": "#/definitions/GridLayoutScreenCanvasSizeOptions" - } - }, - "type": "object" - }, - "GridLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "CanvasSizeOptions": { - "$ref": "#/definitions/GridLayoutCanvasSizeOptions" - }, - "Elements": { - "items": { - "$ref": "#/definitions/GridLayoutElement" - }, - "maxItems": 430, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Elements" - ], - "type": "object" - }, - "GridLayoutElement": { - "additionalProperties": false, - "properties": { - "ColumnIndex": { - "maximum": 35, - "minimum": 0, - "type": "number" - }, - "ColumnSpan": { - "maximum": 36, - "minimum": 1, - "type": "number" - }, - "ElementId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "ElementType": { - "$ref": "#/definitions/LayoutElementType" - }, - "RowIndex": { - "maximum": 9009, - "minimum": 0, - "type": "number" - }, - "RowSpan": { - "maximum": 21, - "minimum": 1, - "type": "number" - } - }, - "required": [ - "ColumnSpan", - "ElementId", - "ElementType", - "RowSpan" - ], - "type": "object" - }, - "GridLayoutScreenCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "OptimizedViewPortWidth": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "ResizeOption": { - "$ref": "#/definitions/ResizeOption" - } - }, - "required": [ - "ResizeOption" - ], - "type": "object" - }, - "GrowthRateComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "PeriodSize": { - "default": 0, - "maximum": 52, - "minimum": 2, - "type": "number" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "HeaderFooterSectionConfiguration": { - "additionalProperties": false, - "properties": { - "Layout": { - "$ref": "#/definitions/SectionLayoutConfiguration" - }, - "SectionId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Style": { - "$ref": "#/definitions/SectionStyle" - } - }, - "required": [ - "Layout", - "SectionId" - ], - "type": "object" - }, - "HeatMapAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Columns": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Rows": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "HeatMapConfiguration": { - "additionalProperties": false, - "properties": { - "ColorScale": { - "$ref": "#/definitions/ColorScale" - }, - "ColumnLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/HeatMapFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "RowLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/HeatMapSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - } - }, - "type": "object" - }, - "HeatMapFieldWells": { - "additionalProperties": false, - "properties": { - "HeatMapAggregatedFieldWells": { - "$ref": "#/definitions/HeatMapAggregatedFieldWells" - } - }, - "type": "object" - }, - "HeatMapSortConfiguration": { - "additionalProperties": false, - "properties": { - "HeatMapColumnItemsLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "HeatMapColumnSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "HeatMapRowItemsLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "HeatMapRowSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "HeatMapVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/HeatMapConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "HistogramAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "HistogramBinOptions": { - "additionalProperties": false, - "properties": { - "BinCount": { - "$ref": "#/definitions/BinCountOptions" - }, - "BinWidth": { - "$ref": "#/definitions/BinWidthOptions" - }, - "SelectedBinType": { - "$ref": "#/definitions/HistogramBinType" - }, - "StartValue": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "HistogramBinType": { - "enum": [ - "BIN_COUNT", - "BIN_WIDTH" - ], - "type": "string" - }, - "HistogramConfiguration": { - "additionalProperties": false, - "properties": { - "BinOptions": { - "$ref": "#/definitions/HistogramBinOptions" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/HistogramFieldWells" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - }, - "XAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "XAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "YAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - } - }, - "type": "object" - }, - "HistogramFieldWells": { - "additionalProperties": false, - "properties": { - "HistogramAggregatedFieldWells": { - "$ref": "#/definitions/HistogramAggregatedFieldWells" - } - }, - "type": "object" - }, - "HistogramVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/HistogramConfiguration" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "HorizontalTextAlignment": { - "enum": [ - "LEFT", - "CENTER", - "RIGHT", - "AUTO" - ], - "type": "string" - }, - "Icon": { - "enum": [ - "CARET_UP", - "CARET_DOWN", - "PLUS", - "MINUS", - "ARROW_UP", - "ARROW_DOWN", - "ARROW_LEFT", - "ARROW_UP_LEFT", - "ARROW_DOWN_LEFT", - "ARROW_RIGHT", - "ARROW_UP_RIGHT", - "ARROW_DOWN_RIGHT", - "FACE_UP", - "FACE_DOWN", - "FACE_FLAT", - "ONE_BAR", - "TWO_BAR", - "THREE_BAR", - "CIRCLE", - "TRIANGLE", - "SQUARE", - "FLAG", - "THUMBS_UP", - "THUMBS_DOWN", - "CHECKMARK", - "X" - ], - "type": "string" - }, - "InnerFilter": { - "additionalProperties": false, - "properties": { - "CategoryInnerFilter": { - "$ref": "#/definitions/CategoryInnerFilter" - } - }, - "type": "object" - }, - "InsightConfiguration": { - "additionalProperties": false, - "properties": { - "Computations": { - "items": { - "$ref": "#/definitions/Computation" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "CustomNarrative": { - "$ref": "#/definitions/CustomNarrativeOptions" - } - }, - "type": "object" - }, - "InsightVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "InsightConfiguration": { - "$ref": "#/definitions/InsightConfiguration" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "DataSetIdentifier", - "VisualId" - ], - "type": "object" - }, - "IntegerDefaultValues": { - "additionalProperties": false, - "properties": { - "DynamicValue": { - "$ref": "#/definitions/DynamicDefaultValue" - }, - "StaticValues": { - "items": { - "type": "number" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "IntegerParameterDeclaration": { - "additionalProperties": false, - "properties": { - "DefaultValues": { - "$ref": "#/definitions/IntegerDefaultValues" - }, - "MappedDataSetParameters": { - "items": { - "$ref": "#/definitions/MappedDataSetParameter" - }, - "maxItems": 150, - "minItems": 0, - "type": "array" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "ParameterValueType": { - "$ref": "#/definitions/ParameterValueType" - }, - "ValueWhenUnset": { - "$ref": "#/definitions/IntegerValueWhenUnsetConfiguration" - } - }, - "required": [ - "Name", - "ParameterValueType" - ], - "type": "object" - }, - "IntegerValueWhenUnsetConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValue": { - "default": null, - "type": "number" - }, - "ValueWhenUnsetOption": { - "$ref": "#/definitions/ValueWhenUnsetOption" - } - }, - "type": "object" - }, - "ItemsLimitConfiguration": { - "additionalProperties": false, - "properties": { - "ItemsLimit": { - "default": null, - "type": "number" - }, - "OtherCategories": { - "$ref": "#/definitions/OtherCategories" - } - }, - "type": "object" - }, - "KPIActualValueConditionalFormatting": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/ConditionalFormattingIcon" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "KPIComparisonValueConditionalFormatting": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/ConditionalFormattingIcon" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "KPIConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ConditionalFormattingOptions": { - "items": { - "$ref": "#/definitions/KPIConditionalFormattingOption" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "KPIConditionalFormattingOption": { - "additionalProperties": false, - "properties": { - "ActualValue": { - "$ref": "#/definitions/KPIActualValueConditionalFormatting" - }, - "ComparisonValue": { - "$ref": "#/definitions/KPIComparisonValueConditionalFormatting" - }, - "PrimaryValue": { - "$ref": "#/definitions/KPIPrimaryValueConditionalFormatting" - }, - "ProgressBar": { - "$ref": "#/definitions/KPIProgressBarConditionalFormatting" - } - }, - "type": "object" - }, - "KPIConfiguration": { - "additionalProperties": false, - "properties": { - "FieldWells": { - "$ref": "#/definitions/KPIFieldWells" - }, - "KPIOptions": { - "$ref": "#/definitions/KPIOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/KPISortConfiguration" - } - }, - "type": "object" - }, - "KPIFieldWells": { - "additionalProperties": false, - "properties": { - "TargetValues": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TrendGroups": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "KPIOptions": { - "additionalProperties": false, - "properties": { - "Comparison": { - "$ref": "#/definitions/ComparisonConfiguration" - }, - "PrimaryValueDisplayType": { - "$ref": "#/definitions/PrimaryValueDisplayType" - }, - "PrimaryValueFontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "ProgressBar": { - "$ref": "#/definitions/ProgressBarOptions" - }, - "SecondaryValue": { - "$ref": "#/definitions/SecondaryValueOptions" - }, - "SecondaryValueFontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "Sparkline": { - "$ref": "#/definitions/KPISparklineOptions" - }, - "TrendArrows": { - "$ref": "#/definitions/TrendArrowOptions" - }, - "VisualLayoutOptions": { - "$ref": "#/definitions/KPIVisualLayoutOptions" - } - }, - "type": "object" - }, - "KPIPrimaryValueConditionalFormatting": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/ConditionalFormattingIcon" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "KPIProgressBarConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ForegroundColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "KPISortConfiguration": { - "additionalProperties": false, - "properties": { - "TrendGroupSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "KPISparklineOptions": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "TooltipVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Type": { - "$ref": "#/definitions/KPISparklineType" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "KPISparklineType": { - "enum": [ - "LINE", - "AREA" - ], - "type": "string" - }, - "KPIVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/KPIConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "ConditionalFormatting": { - "$ref": "#/definitions/KPIConditionalFormatting" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "KPIVisualLayoutOptions": { - "additionalProperties": false, - "properties": { - "StandardLayout": { - "$ref": "#/definitions/KPIVisualStandardLayout" - } - }, - "type": "object" - }, - "KPIVisualStandardLayout": { - "additionalProperties": false, - "properties": { - "Type": { - "$ref": "#/definitions/KPIVisualStandardLayoutType" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "KPIVisualStandardLayoutType": { - "enum": [ - "CLASSIC", - "VERTICAL" - ], - "type": "string" - }, - "LabelOptions": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "type": "string" - }, - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "Layout": { - "additionalProperties": false, - "properties": { - "Configuration": { - "$ref": "#/definitions/LayoutConfiguration" - } - }, - "required": [ - "Configuration" - ], - "type": "object" - }, - "LayoutConfiguration": { - "additionalProperties": false, - "properties": { - "FreeFormLayout": { - "$ref": "#/definitions/FreeFormLayoutConfiguration" - }, - "GridLayout": { - "$ref": "#/definitions/GridLayoutConfiguration" - }, - "SectionBasedLayout": { - "$ref": "#/definitions/SectionBasedLayoutConfiguration" - } - }, - "type": "object" - }, - "LayoutElementType": { - "enum": [ - "VISUAL", - "FILTER_CONTROL", - "PARAMETER_CONTROL", - "TEXT_BOX", - "IMAGE" - ], - "type": "string" - }, - "LegendOptions": { - "additionalProperties": false, - "properties": { - "Height": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "Position": { - "$ref": "#/definitions/LegendPosition" - }, - "Title": { - "$ref": "#/definitions/LabelOptions" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - }, - "Width": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - } - }, - "type": "object" - }, - "LegendPosition": { - "enum": [ - "AUTO", - "RIGHT", - "BOTTOM", - "TOP" - ], - "type": "string" - }, - "LineChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Colors": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "SmallMultiples": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "LineChartConfiguration": { - "additionalProperties": false, - "properties": { - "ContributionAnalysisDefaults": { - "items": { - "$ref": "#/definitions/ContributionAnalysisDefault" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "DefaultSeriesSettings": { - "$ref": "#/definitions/LineChartDefaultSeriesSettings" - }, - "FieldWells": { - "$ref": "#/definitions/LineChartFieldWells" - }, - "ForecastConfigurations": { - "items": { - "$ref": "#/definitions/ForecastConfiguration" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "PrimaryYAxisDisplayOptions": { - "$ref": "#/definitions/LineSeriesAxisDisplayOptions" - }, - "PrimaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ReferenceLines": { - "items": { - "$ref": "#/definitions/ReferenceLine" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "SecondaryYAxisDisplayOptions": { - "$ref": "#/definitions/LineSeriesAxisDisplayOptions" - }, - "SecondaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "Series": { - "items": { - "$ref": "#/definitions/SeriesItem" - }, - "maxItems": 2000, - "minItems": 0, - "type": "array" - }, - "SingleAxisOptions": { - "$ref": "#/definitions/SingleAxisOptions" - }, - "SmallMultiplesOptions": { - "$ref": "#/definitions/SmallMultiplesOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/LineChartSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "Type": { - "$ref": "#/definitions/LineChartType" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - }, - "XAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "XAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - } - }, - "type": "object" - }, - "LineChartDefaultSeriesSettings": { - "additionalProperties": false, - "properties": { - "AxisBinding": { - "$ref": "#/definitions/AxisBinding" - }, - "LineStyleSettings": { - "$ref": "#/definitions/LineChartLineStyleSettings" - }, - "MarkerStyleSettings": { - "$ref": "#/definitions/LineChartMarkerStyleSettings" - } - }, - "type": "object" - }, - "LineChartFieldWells": { - "additionalProperties": false, - "properties": { - "LineChartAggregatedFieldWells": { - "$ref": "#/definitions/LineChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "LineChartLineStyle": { - "enum": [ - "SOLID", - "DOTTED", - "DASHED" - ], - "type": "string" - }, - "LineChartLineStyleSettings": { - "additionalProperties": false, - "properties": { - "LineInterpolation": { - "$ref": "#/definitions/LineInterpolation" - }, - "LineStyle": { - "$ref": "#/definitions/LineChartLineStyle" - }, - "LineVisibility": { - "$ref": "#/definitions/Visibility" - }, - "LineWidth": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - } - }, - "type": "object" - }, - "LineChartMarkerShape": { - "enum": [ - "CIRCLE", - "TRIANGLE", - "SQUARE", - "DIAMOND", - "ROUNDED_SQUARE" - ], - "type": "string" - }, - "LineChartMarkerStyleSettings": { - "additionalProperties": false, - "properties": { - "MarkerColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "MarkerShape": { - "$ref": "#/definitions/LineChartMarkerShape" - }, - "MarkerSize": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "MarkerVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "LineChartSeriesSettings": { - "additionalProperties": false, - "properties": { - "LineStyleSettings": { - "$ref": "#/definitions/LineChartLineStyleSettings" - }, - "MarkerStyleSettings": { - "$ref": "#/definitions/LineChartMarkerStyleSettings" - } - }, - "type": "object" - }, - "LineChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "ColorItemsLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "SmallMultiplesLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "SmallMultiplesSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "LineChartType": { - "enum": [ - "LINE", - "AREA", - "STACKED_AREA" - ], - "type": "string" - }, - "LineChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/LineChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "LineInterpolation": { - "enum": [ - "LINEAR", - "SMOOTH", - "STEPPED" - ], - "type": "string" - }, - "LineSeriesAxisDisplayOptions": { - "additionalProperties": false, - "properties": { - "AxisOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "MissingDataConfigurations": { - "items": { - "$ref": "#/definitions/MissingDataConfiguration" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ListControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "SearchOptions": { - "$ref": "#/definitions/ListControlSearchOptions" - }, - "SelectAllOptions": { - "$ref": "#/definitions/ListControlSelectAllOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "ListControlSearchOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "ListControlSelectAllOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "LoadingAnimation": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "LocalNavigationConfiguration": { - "additionalProperties": false, - "properties": { - "TargetSheetId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "TargetSheetId" - ], - "type": "object" - }, - "LongFormatText": { - "additionalProperties": false, - "properties": { - "PlainText": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "RichText": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "MapZoomMode": { - "enum": [ - "AUTO", - "MANUAL" - ], - "type": "string" - }, - "MappedDataSetParameter": { - "additionalProperties": false, - "properties": { - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "DataSetParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - } - }, - "required": [ - "DataSetIdentifier", - "DataSetParameterName" - ], - "type": "object" - }, - "MaximumLabelType": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "MaximumMinimumComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "Type": { - "$ref": "#/definitions/MaximumMinimumComputationType" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId", - "Type" - ], - "type": "object" - }, - "MaximumMinimumComputationType": { - "enum": [ - "MAXIMUM", - "MINIMUM" - ], - "type": "string" - }, - "MeasureField": { - "additionalProperties": false, - "properties": { - "CalculatedMeasureField": { - "$ref": "#/definitions/CalculatedMeasureField" - }, - "CategoricalMeasureField": { - "$ref": "#/definitions/CategoricalMeasureField" - }, - "DateMeasureField": { - "$ref": "#/definitions/DateMeasureField" - }, - "NumericalMeasureField": { - "$ref": "#/definitions/NumericalMeasureField" - } - }, - "type": "object" - }, - "MetricComparisonComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "FromValue": { - "$ref": "#/definitions/MeasureField" - }, - "Name": { - "type": "string" - }, - "TargetValue": { - "$ref": "#/definitions/MeasureField" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "MinimumLabelType": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "MissingDataConfiguration": { - "additionalProperties": false, - "properties": { - "TreatmentOption": { - "$ref": "#/definitions/MissingDataTreatmentOption" - } - }, - "type": "object" - }, - "MissingDataTreatmentOption": { - "enum": [ - "INTERPOLATE", - "SHOW_AS_ZERO", - "SHOW_AS_BLANK" - ], - "type": "string" - }, - "NegativeValueConfiguration": { - "additionalProperties": false, - "properties": { - "DisplayMode": { - "$ref": "#/definitions/NegativeValueDisplayMode" - } - }, - "required": [ - "DisplayMode" - ], - "type": "object" - }, - "NegativeValueDisplayMode": { - "enum": [ - "POSITIVE", - "NEGATIVE" - ], - "type": "string" - }, - "NestedFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "IncludeInnerSet": { - "default": false, - "type": "boolean" - }, - "InnerFilter": { - "$ref": "#/definitions/InnerFilter" - } - }, - "required": [ - "Column", - "FilterId", - "IncludeInnerSet", - "InnerFilter" - ], - "type": "object" - }, - "NullValueFormatConfiguration": { - "additionalProperties": false, - "properties": { - "NullString": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "NullString" - ], - "type": "object" - }, - "NumberDisplayFormatConfiguration": { - "additionalProperties": false, - "properties": { - "DecimalPlacesConfiguration": { - "$ref": "#/definitions/DecimalPlacesConfiguration" - }, - "NegativeValueConfiguration": { - "$ref": "#/definitions/NegativeValueConfiguration" - }, - "NullValueFormatConfiguration": { - "$ref": "#/definitions/NullValueFormatConfiguration" - }, - "NumberScale": { - "$ref": "#/definitions/NumberScale" - }, - "Prefix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "SeparatorConfiguration": { - "$ref": "#/definitions/NumericSeparatorConfiguration" - }, - "Suffix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "NumberFormatConfiguration": { - "additionalProperties": false, - "properties": { - "FormatConfiguration": { - "$ref": "#/definitions/NumericFormatConfiguration" - } - }, - "type": "object" - }, - "NumberScale": { - "enum": [ - "NONE", - "AUTO", - "THOUSANDS", - "MILLIONS", - "BILLIONS", - "TRILLIONS" - ], - "type": "string" - }, - "NumericAxisOptions": { - "additionalProperties": false, - "properties": { - "Range": { - "$ref": "#/definitions/AxisDisplayRange" - }, - "Scale": { - "$ref": "#/definitions/AxisScale" - } - }, - "type": "object" - }, - "NumericEqualityDrillDownFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "Value": { - "default": 0, - "type": "number" - } - }, - "required": [ - "Column", - "Value" - ], - "type": "object" - }, - "NumericEqualityFilter": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/AggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "MatchOperator": { - "$ref": "#/definitions/NumericEqualityMatchOperator" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "SelectAllOptions": { - "$ref": "#/definitions/NumericFilterSelectAllOptions" - }, - "Value": { - "default": null, - "type": "number" - } - }, - "required": [ - "Column", - "FilterId", - "MatchOperator", - "NullOption" - ], - "type": "object" - }, - "NumericEqualityMatchOperator": { - "enum": [ - "EQUALS", - "DOES_NOT_EQUAL" - ], - "type": "string" - }, - "NumericFilterSelectAllOptions": { - "enum": [ - "FILTER_ALL_VALUES" - ], - "type": "string" - }, - "NumericFormatConfiguration": { - "additionalProperties": false, - "properties": { - "CurrencyDisplayFormatConfiguration": { - "$ref": "#/definitions/CurrencyDisplayFormatConfiguration" - }, - "NumberDisplayFormatConfiguration": { - "$ref": "#/definitions/NumberDisplayFormatConfiguration" - }, - "PercentageDisplayFormatConfiguration": { - "$ref": "#/definitions/PercentageDisplayFormatConfiguration" - } - }, - "type": "object" - }, - "NumericRangeFilter": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/AggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "IncludeMaximum": { - "default": null, - "type": "boolean" - }, - "IncludeMinimum": { - "default": null, - "type": "boolean" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "RangeMaximum": { - "$ref": "#/definitions/NumericRangeFilterValue" - }, - "RangeMinimum": { - "$ref": "#/definitions/NumericRangeFilterValue" - }, - "SelectAllOptions": { - "$ref": "#/definitions/NumericFilterSelectAllOptions" - } - }, - "required": [ - "Column", - "FilterId", - "NullOption" - ], - "type": "object" - }, - "NumericRangeFilterValue": { - "additionalProperties": false, - "properties": { - "Parameter": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "StaticValue": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "NumericSeparatorConfiguration": { - "additionalProperties": false, - "properties": { - "DecimalSeparator": { - "$ref": "#/definitions/NumericSeparatorSymbol" - }, - "ThousandsSeparator": { - "$ref": "#/definitions/ThousandSeparatorOptions" - } - }, - "type": "object" - }, - "NumericSeparatorSymbol": { - "enum": [ - "COMMA", - "DOT", - "SPACE" - ], - "type": "string" - }, - "NumericalAggregationFunction": { - "additionalProperties": false, - "properties": { - "PercentileAggregation": { - "$ref": "#/definitions/PercentileAggregation" - }, - "SimpleNumericalAggregation": { - "$ref": "#/definitions/SimpleNumericalAggregationFunction" - } - }, - "type": "object" - }, - "NumericalDimensionField": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/NumberFormatConfiguration" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "NumericalMeasureField": { - "additionalProperties": false, - "properties": { - "AggregationFunction": { - "$ref": "#/definitions/NumericalAggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/NumberFormatConfiguration" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "OtherCategories": { - "enum": [ - "INCLUDE", - "EXCLUDE" - ], - "type": "string" - }, - "PaginationConfiguration": { - "additionalProperties": false, - "properties": { - "PageNumber": { - "minimum": 0, - "type": "number" - }, - "PageSize": { - "default": null, - "type": "number" - } - }, - "required": [ - "PageNumber", - "PageSize" - ], - "type": "object" - }, - "PanelBorderStyle": { - "enum": [ - "SOLID", - "DASHED", - "DOTTED" - ], - "type": "string" - }, - "PanelConfiguration": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", - "type": "string" - }, - "BackgroundVisibility": { - "$ref": "#/definitions/Visibility" - }, - "BorderColor": { - "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", - "type": "string" - }, - "BorderStyle": { - "$ref": "#/definitions/PanelBorderStyle" - }, - "BorderThickness": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "BorderVisibility": { - "$ref": "#/definitions/Visibility" - }, - "GutterSpacing": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "GutterVisibility": { - "$ref": "#/definitions/Visibility" - }, - "Title": { - "$ref": "#/definitions/PanelTitleOptions" - } - }, - "type": "object" - }, - "PanelTitleOptions": { - "additionalProperties": false, - "properties": { - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "HorizontalTextAlignment": { - "$ref": "#/definitions/HorizontalTextAlignment" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "PaperOrientation": { - "enum": [ - "PORTRAIT", - "LANDSCAPE" - ], - "type": "string" - }, - "PaperSize": { - "enum": [ - "US_LETTER", - "US_LEGAL", - "US_TABLOID_LEDGER", - "A0", - "A1", - "A2", - "A3", - "A4", - "A5", - "JIS_B4", - "JIS_B5" - ], - "type": "string" - }, - "ParameterControl": { - "additionalProperties": false, - "properties": { - "DateTimePicker": { - "$ref": "#/definitions/ParameterDateTimePickerControl" - }, - "Dropdown": { - "$ref": "#/definitions/ParameterDropDownControl" - }, - "List": { - "$ref": "#/definitions/ParameterListControl" - }, - "Slider": { - "$ref": "#/definitions/ParameterSliderControl" - }, - "TextArea": { - "$ref": "#/definitions/ParameterTextAreaControl" - }, - "TextField": { - "$ref": "#/definitions/ParameterTextFieldControl" - } - }, - "type": "object" - }, - "ParameterDateTimePickerControl": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/DateTimePickerControlDisplayOptions" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ParameterControlId", - "SourceParameterName", - "Title" - ], - "type": "object" - }, - "ParameterDeclaration": { - "additionalProperties": false, - "properties": { - "DateTimeParameterDeclaration": { - "$ref": "#/definitions/DateTimeParameterDeclaration" - }, - "DecimalParameterDeclaration": { - "$ref": "#/definitions/DecimalParameterDeclaration" - }, - "IntegerParameterDeclaration": { - "$ref": "#/definitions/IntegerParameterDeclaration" - }, - "StringParameterDeclaration": { - "$ref": "#/definitions/StringParameterDeclaration" - } - }, - "type": "object" - }, - "ParameterDropDownControl": { - "additionalProperties": false, - "properties": { - "CascadingControlConfiguration": { - "$ref": "#/definitions/CascadingControlConfiguration" - }, - "CommitMode": { - "$ref": "#/definitions/CommitMode" - }, - "DisplayOptions": { - "$ref": "#/definitions/DropDownControlDisplayOptions" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SelectableValues": { - "$ref": "#/definitions/ParameterSelectableValues" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "required": [ - "ParameterControlId", - "SourceParameterName", - "Title" - ], - "type": "object" - }, - "ParameterListControl": { - "additionalProperties": false, - "properties": { - "CascadingControlConfiguration": { - "$ref": "#/definitions/CascadingControlConfiguration" - }, - "DisplayOptions": { - "$ref": "#/definitions/ListControlDisplayOptions" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SelectableValues": { - "$ref": "#/definitions/ParameterSelectableValues" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/SheetControlListType" - } - }, - "required": [ - "ParameterControlId", - "SourceParameterName", - "Title" - ], - "type": "object" - }, - "ParameterSelectableValues": { - "additionalProperties": false, - "properties": { - "LinkToDataSetColumn": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "Values": { - "items": { - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ParameterSliderControl": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/SliderControlDisplayOptions" - }, - "MaximumValue": { - "default": 0, - "type": "number" - }, - "MinimumValue": { - "default": 0, - "type": "number" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "StepSize": { - "default": 0, - "type": "number" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "MaximumValue", - "MinimumValue", - "ParameterControlId", - "SourceParameterName", - "StepSize", - "Title" - ], - "type": "object" - }, - "ParameterTextAreaControl": { - "additionalProperties": false, - "properties": { - "Delimiter": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "DisplayOptions": { - "$ref": "#/definitions/TextAreaControlDisplayOptions" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ParameterControlId", - "SourceParameterName", - "Title" - ], - "type": "object" - }, - "ParameterTextFieldControl": { - "additionalProperties": false, - "properties": { - "DisplayOptions": { - "$ref": "#/definitions/TextFieldControlDisplayOptions" - }, - "ParameterControlId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "SourceParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Title": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ParameterControlId", - "SourceParameterName", - "Title" - ], - "type": "object" - }, - "ParameterValueType": { - "enum": [ - "MULTI_VALUED", - "SINGLE_VALUED" - ], - "type": "string" - }, - "PercentVisibleRange": { - "additionalProperties": false, - "properties": { - "From": { - "default": null, - "maximum": 100, - "minimum": 0, - "type": "number" - }, - "To": { - "default": null, - "maximum": 100, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "PercentageDisplayFormatConfiguration": { - "additionalProperties": false, - "properties": { - "DecimalPlacesConfiguration": { - "$ref": "#/definitions/DecimalPlacesConfiguration" - }, - "NegativeValueConfiguration": { - "$ref": "#/definitions/NegativeValueConfiguration" - }, - "NullValueFormatConfiguration": { - "$ref": "#/definitions/NullValueFormatConfiguration" - }, - "Prefix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "SeparatorConfiguration": { - "$ref": "#/definitions/NumericSeparatorConfiguration" - }, - "Suffix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "PercentileAggregation": { - "additionalProperties": false, - "properties": { - "PercentileValue": { - "maximum": 100, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "PeriodOverPeriodComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "PeriodToDateComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "PeriodTimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "PieChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "SmallMultiples": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PieChartConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ContributionAnalysisDefaults": { - "items": { - "$ref": "#/definitions/ContributionAnalysisDefault" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "DonutOptions": { - "$ref": "#/definitions/DonutOptions" - }, - "FieldWells": { - "$ref": "#/definitions/PieChartFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "SmallMultiplesOptions": { - "$ref": "#/definitions/SmallMultiplesOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/PieChartSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "ValueLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "PieChartFieldWells": { - "additionalProperties": false, - "properties": { - "PieChartAggregatedFieldWells": { - "$ref": "#/definitions/PieChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "PieChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "SmallMultiplesLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "SmallMultiplesSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PieChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/PieChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "PivotFieldSortOptions": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "SortBy": { - "$ref": "#/definitions/PivotTableSortBy" - } - }, - "required": [ - "FieldId", - "SortBy" - ], - "type": "object" - }, - "PivotTableAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Columns": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 40, - "minItems": 0, - "type": "array" - }, - "Rows": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 40, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 40, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PivotTableCellConditionalFormatting": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Scope": { - "$ref": "#/definitions/PivotTableConditionalFormattingScope" - }, - "Scopes": { - "items": { - "$ref": "#/definitions/PivotTableConditionalFormattingScope" - }, - "maxItems": 3, - "minItems": 0, - "type": "array" - }, - "TextFormat": { - "$ref": "#/definitions/TextConditionalFormat" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "PivotTableConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ConditionalFormattingOptions": { - "items": { - "$ref": "#/definitions/PivotTableConditionalFormattingOption" - }, - "maxItems": 500, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PivotTableConditionalFormattingOption": { - "additionalProperties": false, - "properties": { - "Cell": { - "$ref": "#/definitions/PivotTableCellConditionalFormatting" - } - }, - "type": "object" - }, - "PivotTableConditionalFormattingScope": { - "additionalProperties": false, - "properties": { - "Role": { - "$ref": "#/definitions/PivotTableConditionalFormattingScopeRole" - } - }, - "type": "object" - }, - "PivotTableConditionalFormattingScopeRole": { - "enum": [ - "FIELD", - "FIELD_TOTAL", - "GRAND_TOTAL" - ], - "type": "string" - }, - "PivotTableConfiguration": { - "additionalProperties": false, - "properties": { - "FieldOptions": { - "$ref": "#/definitions/PivotTableFieldOptions" - }, - "FieldWells": { - "$ref": "#/definitions/PivotTableFieldWells" - }, - "PaginatedReportOptions": { - "$ref": "#/definitions/PivotTablePaginatedReportOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/PivotTableSortConfiguration" - }, - "TableOptions": { - "$ref": "#/definitions/PivotTableOptions" - }, - "TotalOptions": { - "$ref": "#/definitions/PivotTableTotalOptions" - } - }, - "type": "object" - }, - "PivotTableDataPathOption": { - "additionalProperties": false, - "properties": { - "DataPathList": { - "items": { - "$ref": "#/definitions/DataPathValue" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "Width": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - } - }, - "required": [ - "DataPathList" - ], - "type": "object" - }, - "PivotTableDataPathType": { - "enum": [ - "HIERARCHY_ROWS_LAYOUT_COLUMN", - "MULTIPLE_ROW_METRICS_COLUMN", - "EMPTY_COLUMN_HEADER", - "COUNT_METRIC_COLUMN" - ], - "type": "string" - }, - "PivotTableFieldCollapseState": { - "enum": [ - "COLLAPSED", - "EXPANDED" - ], - "type": "string" - }, - "PivotTableFieldCollapseStateOption": { - "additionalProperties": false, - "properties": { - "State": { - "$ref": "#/definitions/PivotTableFieldCollapseState" - }, - "Target": { - "$ref": "#/definitions/PivotTableFieldCollapseStateTarget" - } - }, - "required": [ - "Target" - ], - "type": "object" - }, - "PivotTableFieldCollapseStateTarget": { - "additionalProperties": false, - "properties": { - "FieldDataPathValues": { - "items": { - "$ref": "#/definitions/DataPathValue" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "FieldId": { - "type": "string" - } - }, - "type": "object" - }, - "PivotTableFieldOption": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "PivotTableFieldOptions": { - "additionalProperties": false, - "properties": { - "CollapseStateOptions": { - "items": { - "$ref": "#/definitions/PivotTableFieldCollapseStateOption" - }, - "type": "array" - }, - "DataPathOptions": { - "items": { - "$ref": "#/definitions/PivotTableDataPathOption" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "SelectedFieldOptions": { - "items": { - "$ref": "#/definitions/PivotTableFieldOption" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PivotTableFieldSubtotalOptions": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "PivotTableFieldWells": { - "additionalProperties": false, - "properties": { - "PivotTableAggregatedFieldWells": { - "$ref": "#/definitions/PivotTableAggregatedFieldWells" - } - }, - "type": "object" - }, - "PivotTableMetricPlacement": { - "enum": [ - "ROW", - "COLUMN" - ], - "type": "string" - }, - "PivotTableOptions": { - "additionalProperties": false, - "properties": { - "CellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "CollapsedRowDimensionsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "ColumnHeaderStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "ColumnNamesVisibility": { - "$ref": "#/definitions/Visibility" - }, - "DefaultCellWidth": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "MetricPlacement": { - "$ref": "#/definitions/PivotTableMetricPlacement" - }, - "RowAlternateColorOptions": { - "$ref": "#/definitions/RowAlternateColorOptions" - }, - "RowFieldNamesStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "RowHeaderStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "RowsLabelOptions": { - "$ref": "#/definitions/PivotTableRowsLabelOptions" - }, - "RowsLayout": { - "$ref": "#/definitions/PivotTableRowsLayout" - }, - "SingleMetricVisibility": { - "$ref": "#/definitions/Visibility" - }, - "ToggleButtonsVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "PivotTablePaginatedReportOptions": { - "additionalProperties": false, - "properties": { - "OverflowColumnHeaderVisibility": { - "$ref": "#/definitions/Visibility" - }, - "VerticalOverflowVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "PivotTableRowsLabelOptions": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "PivotTableRowsLayout": { - "enum": [ - "TABULAR", - "HIERARCHY" - ], - "type": "string" - }, - "PivotTableSortBy": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnSort" - }, - "DataPath": { - "$ref": "#/definitions/DataPathSort" - }, - "Field": { - "$ref": "#/definitions/FieldSort" - } - }, - "type": "object" - }, - "PivotTableSortConfiguration": { - "additionalProperties": false, - "properties": { - "FieldSortOptions": { - "items": { - "$ref": "#/definitions/PivotFieldSortOptions" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "PivotTableSubtotalLevel": { - "enum": [ - "ALL", - "CUSTOM", - "LAST" - ], - "type": "string" - }, - "PivotTableTotalOptions": { - "additionalProperties": false, - "properties": { - "ColumnSubtotalOptions": { - "$ref": "#/definitions/SubtotalOptions" - }, - "ColumnTotalOptions": { - "$ref": "#/definitions/PivotTotalOptions" - }, - "RowSubtotalOptions": { - "$ref": "#/definitions/SubtotalOptions" - }, - "RowTotalOptions": { - "$ref": "#/definitions/PivotTotalOptions" - } - }, - "type": "object" - }, - "PivotTableVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/PivotTableConfiguration" - }, - "ConditionalFormatting": { - "$ref": "#/definitions/PivotTableConditionalFormatting" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "PivotTotalOptions": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "type": "string" - }, - "MetricHeaderCellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "Placement": { - "$ref": "#/definitions/TableTotalsPlacement" - }, - "ScrollStatus": { - "$ref": "#/definitions/TableTotalsScrollStatus" - }, - "TotalAggregationOptions": { - "items": { - "$ref": "#/definitions/TotalAggregationOption" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TotalCellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "TotalsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "ValueCellStyle": { - "$ref": "#/definitions/TableCellStyle" - } - }, - "type": "object" - }, - "PredefinedHierarchy": { - "additionalProperties": false, - "properties": { - "Columns": { - "items": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "DrillDownFilters": { - "items": { - "$ref": "#/definitions/DrillDownFilter" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "HierarchyId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Columns", - "HierarchyId" - ], - "type": "object" - }, - "PrimaryValueDisplayType": { - "enum": [ - "HIDDEN", - "COMPARISON", - "ACTUAL" - ], - "type": "string" - }, - "ProgressBarOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "QueryExecutionMode": { - "enum": [ - "AUTO", - "MANUAL" - ], - "type": "string" - }, - "QueryExecutionOptions": { - "additionalProperties": false, - "properties": { - "QueryExecutionMode": { - "$ref": "#/definitions/QueryExecutionMode" - } - }, - "type": "object" - }, - "RadarChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Color": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "RadarChartAreaStyleSettings": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "RadarChartAxesRangeScale": { - "enum": [ - "AUTO", - "INDEPENDENT", - "SHARED" - ], - "type": "string" - }, - "RadarChartConfiguration": { - "additionalProperties": false, - "properties": { - "AlternateBandColorsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "AlternateBandEvenColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "AlternateBandOddColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "AxesRangeScale": { - "$ref": "#/definitions/RadarChartAxesRangeScale" - }, - "BaseSeriesSettings": { - "$ref": "#/definitions/RadarChartSeriesSettings" - }, - "CategoryAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ColorAxis": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "ColorLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/RadarChartFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "Shape": { - "$ref": "#/definitions/RadarChartShape" - }, - "SortConfiguration": { - "$ref": "#/definitions/RadarChartSortConfiguration" - }, - "StartAngle": { - "maximum": 360, - "minimum": -360, - "type": "number" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - } - }, - "type": "object" - }, - "RadarChartFieldWells": { - "additionalProperties": false, - "properties": { - "RadarChartAggregatedFieldWells": { - "$ref": "#/definitions/RadarChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "RadarChartSeriesSettings": { - "additionalProperties": false, - "properties": { - "AreaStyleSettings": { - "$ref": "#/definitions/RadarChartAreaStyleSettings" - } - }, - "type": "object" - }, - "RadarChartShape": { - "enum": [ - "CIRCLE", - "POLYGON" - ], - "type": "string" - }, - "RadarChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "ColorItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "ColorSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "RadarChartVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/RadarChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "RangeEndsLabelType": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "ReferenceLine": { - "additionalProperties": false, - "properties": { - "DataConfiguration": { - "$ref": "#/definitions/ReferenceLineDataConfiguration" - }, - "LabelConfiguration": { - "$ref": "#/definitions/ReferenceLineLabelConfiguration" - }, - "Status": { - "$ref": "#/definitions/WidgetStatus" - }, - "StyleConfiguration": { - "$ref": "#/definitions/ReferenceLineStyleConfiguration" - } - }, - "required": [ - "DataConfiguration" - ], - "type": "object" - }, - "ReferenceLineCustomLabelConfiguration": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "pattern": "\\S", - "type": "string" - } - }, - "required": [ - "CustomLabel" - ], - "type": "object" - }, - "ReferenceLineDataConfiguration": { - "additionalProperties": false, - "properties": { - "AxisBinding": { - "$ref": "#/definitions/AxisBinding" - }, - "DynamicConfiguration": { - "$ref": "#/definitions/ReferenceLineDynamicDataConfiguration" - }, - "SeriesType": { - "$ref": "#/definitions/ReferenceLineSeriesType" - }, - "StaticConfiguration": { - "$ref": "#/definitions/ReferenceLineStaticDataConfiguration" - } - }, - "type": "object" - }, - "ReferenceLineDynamicDataConfiguration": { - "additionalProperties": false, - "properties": { - "Calculation": { - "$ref": "#/definitions/NumericalAggregationFunction" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "MeasureAggregationFunction": { - "$ref": "#/definitions/AggregationFunction" - } - }, - "required": [ - "Calculation", - "Column" - ], - "type": "object" - }, - "ReferenceLineLabelConfiguration": { - "additionalProperties": false, - "properties": { - "CustomLabelConfiguration": { - "$ref": "#/definitions/ReferenceLineCustomLabelConfiguration" - }, - "FontColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "HorizontalPosition": { - "$ref": "#/definitions/ReferenceLineLabelHorizontalPosition" - }, - "ValueLabelConfiguration": { - "$ref": "#/definitions/ReferenceLineValueLabelConfiguration" - }, - "VerticalPosition": { - "$ref": "#/definitions/ReferenceLineLabelVerticalPosition" - } - }, - "type": "object" - }, - "ReferenceLineLabelHorizontalPosition": { - "enum": [ - "LEFT", - "CENTER", - "RIGHT" - ], - "type": "string" - }, - "ReferenceLineLabelVerticalPosition": { - "enum": [ - "ABOVE", - "BELOW" - ], - "type": "string" - }, - "ReferenceLinePatternType": { - "enum": [ - "SOLID", - "DASHED", - "DOTTED" - ], - "type": "string" - }, - "ReferenceLineSeriesType": { - "enum": [ - "BAR", - "LINE" - ], - "type": "string" - }, - "ReferenceLineStaticDataConfiguration": { - "additionalProperties": false, - "properties": { - "Value": { - "default": 0, - "type": "number" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "ReferenceLineStyleConfiguration": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Pattern": { - "$ref": "#/definitions/ReferenceLinePatternType" - } - }, - "type": "object" - }, - "ReferenceLineValueLabelConfiguration": { - "additionalProperties": false, - "properties": { - "FormatConfiguration": { - "$ref": "#/definitions/NumericFormatConfiguration" - }, - "RelativePosition": { - "$ref": "#/definitions/ReferenceLineValueLabelRelativePosition" - } - }, - "type": "object" - }, - "ReferenceLineValueLabelRelativePosition": { - "enum": [ - "BEFORE_CUSTOM_LABEL", - "AFTER_CUSTOM_LABEL" - ], - "type": "string" - }, - "RelativeDateTimeControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "DateTimeFormat": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "RelativeDateType": { - "enum": [ - "PREVIOUS", - "THIS", - "LAST", - "NOW", - "NEXT" - ], - "type": "string" - }, - "RelativeDatesFilter": { - "additionalProperties": false, - "properties": { - "AnchorDateConfiguration": { - "$ref": "#/definitions/AnchorDateConfiguration" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "ExcludePeriodConfiguration": { - "$ref": "#/definitions/ExcludePeriodConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "MinimumGranularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "RelativeDateType": { - "$ref": "#/definitions/RelativeDateType" - }, - "RelativeDateValue": { - "default": null, - "type": "number" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - } - }, - "required": [ - "AnchorDateConfiguration", - "Column", - "FilterId", - "NullOption", - "RelativeDateType", - "TimeGranularity" - ], - "type": "object" - }, - "RelativeFontSize": { - "enum": [ - "EXTRA_SMALL", - "SMALL", - "MEDIUM", - "LARGE", - "EXTRA_LARGE" - ], - "type": "string" - }, - "ResizeOption": { - "enum": [ - "FIXED", - "RESPONSIVE" - ], - "type": "string" - }, - "ResourcePermission": { - "additionalProperties": false, - "description": "

Permission for the resource.

", - "properties": { - "Actions": { - "description": "

The IAM action to grant or revoke permissions on.

", - "items": { - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - }, - "Principal": { - "description": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Actions", - "Principal" - ], - "type": "object" - }, - "ResourceStatus": { - "enum": [ - "CREATION_IN_PROGRESS", - "CREATION_SUCCESSFUL", - "CREATION_FAILED", - "UPDATE_IN_PROGRESS", - "UPDATE_SUCCESSFUL", - "UPDATE_FAILED", - "DELETED" - ], - "type": "string" - }, - "RollingDateConfiguration": { - "additionalProperties": false, - "properties": { - "DataSetIdentifier": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Expression" - ], - "type": "object" - }, - "RowAlternateColorOptions": { - "additionalProperties": false, - "properties": { - "RowAlternateColors": { - "items": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Status": { - "$ref": "#/definitions/WidgetStatus" - }, - "UsePrimaryBackgroundColor": { - "$ref": "#/definitions/WidgetStatus" - } - }, - "type": "object" - }, - "SameSheetTargetVisualConfiguration": { - "additionalProperties": false, - "properties": { - "TargetVisualOptions": { - "$ref": "#/definitions/TargetVisualOptions" - }, - "TargetVisuals": { - "items": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "SankeyDiagramAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Destination": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Source": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Weight": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "SankeyDiagramChartConfiguration": { - "additionalProperties": false, - "properties": { - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/SankeyDiagramFieldWells" - }, - "SortConfiguration": { - "$ref": "#/definitions/SankeyDiagramSortConfiguration" - } - }, - "type": "object" - }, - "SankeyDiagramFieldWells": { - "additionalProperties": false, - "properties": { - "SankeyDiagramAggregatedFieldWells": { - "$ref": "#/definitions/SankeyDiagramAggregatedFieldWells" - } - }, - "type": "object" - }, - "SankeyDiagramSortConfiguration": { - "additionalProperties": false, - "properties": { - "DestinationItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "SourceItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "WeightSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "SankeyDiagramVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/SankeyDiagramChartConfiguration" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "ScatterPlotCategoricallyAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Label": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Size": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "XAxis": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "YAxis": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ScatterPlotConfiguration": { - "additionalProperties": false, - "properties": { - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/ScatterPlotFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - }, - "XAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "XAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "YAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "YAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - } - }, - "type": "object" - }, - "ScatterPlotFieldWells": { - "additionalProperties": false, - "properties": { - "ScatterPlotCategoricallyAggregatedFieldWells": { - "$ref": "#/definitions/ScatterPlotCategoricallyAggregatedFieldWells" - }, - "ScatterPlotUnaggregatedFieldWells": { - "$ref": "#/definitions/ScatterPlotUnaggregatedFieldWells" - } - }, - "type": "object" - }, - "ScatterPlotUnaggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Category": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Label": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Size": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "XAxis": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "YAxis": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "ScatterPlotVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/ScatterPlotConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "ScrollBarOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - }, - "VisibleRange": { - "$ref": "#/definitions/VisibleRangeOptions" - } - }, - "type": "object" - }, - "SecondaryValueOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "SectionAfterPageBreak": { - "additionalProperties": false, - "properties": { - "Status": { - "$ref": "#/definitions/SectionPageBreakStatus" - } - }, - "type": "object" - }, - "SectionBasedLayoutCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "PaperCanvasSizeOptions": { - "$ref": "#/definitions/SectionBasedLayoutPaperCanvasSizeOptions" - } - }, - "type": "object" - }, - "SectionBasedLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "BodySections": { - "items": { - "$ref": "#/definitions/BodySectionConfiguration" - }, - "maxItems": 28, - "minItems": 0, - "type": "array" - }, - "CanvasSizeOptions": { - "$ref": "#/definitions/SectionBasedLayoutCanvasSizeOptions" - }, - "FooterSections": { - "items": { - "$ref": "#/definitions/HeaderFooterSectionConfiguration" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "HeaderSections": { - "items": { - "$ref": "#/definitions/HeaderFooterSectionConfiguration" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "BodySections", - "CanvasSizeOptions", - "FooterSections", - "HeaderSections" - ], - "type": "object" - }, - "SectionBasedLayoutPaperCanvasSizeOptions": { - "additionalProperties": false, - "properties": { - "PaperMargin": { - "$ref": "#/definitions/Spacing" - }, - "PaperOrientation": { - "$ref": "#/definitions/PaperOrientation" - }, - "PaperSize": { - "$ref": "#/definitions/PaperSize" - } - }, - "type": "object" - }, - "SectionLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "FreeFormLayout": { - "$ref": "#/definitions/FreeFormSectionLayoutConfiguration" - } - }, - "required": [ - "FreeFormLayout" - ], - "type": "object" - }, - "SectionPageBreakConfiguration": { - "additionalProperties": false, - "properties": { - "After": { - "$ref": "#/definitions/SectionAfterPageBreak" - } - }, - "type": "object" - }, - "SectionPageBreakStatus": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "SectionStyle": { - "additionalProperties": false, - "properties": { - "Height": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - }, - "Padding": { - "$ref": "#/definitions/Spacing" - } - }, - "type": "object" - }, - "SelectAllValueOptions": { - "enum": [ - "ALL_VALUES" - ], - "type": "string" - }, - "SelectedFieldOptions": { - "enum": [ - "ALL_FIELDS" - ], - "type": "string" - }, - "SelectedSheetsFilterScopeConfiguration": { - "additionalProperties": false, - "properties": { - "SheetVisualScopingConfigurations": { - "items": { - "$ref": "#/definitions/SheetVisualScopingConfiguration" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "SelectedTooltipType": { - "enum": [ - "BASIC", - "DETAILED" - ], - "type": "string" - }, - "SeriesItem": { - "additionalProperties": false, - "properties": { - "DataFieldSeriesItem": { - "$ref": "#/definitions/DataFieldSeriesItem" - }, - "FieldSeriesItem": { - "$ref": "#/definitions/FieldSeriesItem" - } - }, - "type": "object" - }, - "SetParameterValueConfiguration": { - "additionalProperties": false, - "properties": { - "DestinationParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "Value": { - "$ref": "#/definitions/DestinationParameterValueConfiguration" - } - }, - "required": [ - "DestinationParameterName", - "Value" - ], - "type": "object" - }, - "ShapeConditionalFormat": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "required": [ - "BackgroundColor" - ], - "type": "object" - }, - "Sheet": { - "additionalProperties": false, - "description": "

A sheet, which is an object that contains a set of visuals that\n are viewed together on one page in Amazon QuickSight. Every analysis and dashboard\n contains at least one sheet. Each sheet contains at least one visualization widget, for\n example a chart, pivot table, or narrative insight. Sheets can be associated with other\n components, such as controls, filters, and so on.

", - "properties": { - "Name": { - "description": "

The name of a sheet. This name is displayed on the sheet's tab in the Amazon QuickSight\n console.

", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "SheetId": { - "description": "

The unique identifier associated with a sheet.

", - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "type": "object" - }, - "SheetContentType": { - "enum": [ - "PAGINATED", - "INTERACTIVE" - ], - "type": "string" - }, - "SheetControlDateTimePickerType": { - "enum": [ - "SINGLE_VALUED", - "DATE_RANGE" - ], - "type": "string" - }, - "SheetControlInfoIconLabelOptions": { - "additionalProperties": false, - "properties": { - "InfoIconText": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "SheetControlLayout": { - "additionalProperties": false, - "properties": { - "Configuration": { - "$ref": "#/definitions/SheetControlLayoutConfiguration" - } - }, - "required": [ - "Configuration" - ], - "type": "object" - }, - "SheetControlLayoutConfiguration": { - "additionalProperties": false, - "properties": { - "GridLayout": { - "$ref": "#/definitions/GridLayoutConfiguration" - } - }, - "type": "object" - }, - "SheetControlListType": { - "enum": [ - "MULTI_SELECT", - "SINGLE_SELECT" - ], - "type": "string" - }, - "SheetControlSliderType": { - "enum": [ - "SINGLE_POINT", - "RANGE" - ], - "type": "string" - }, - "SheetDefinition": { - "additionalProperties": false, - "properties": { - "ContentType": { - "$ref": "#/definitions/SheetContentType" - }, - "Description": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "FilterControls": { - "items": { - "$ref": "#/definitions/FilterControl" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Layouts": { - "items": { - "$ref": "#/definitions/Layout" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "ParameterControls": { - "items": { - "$ref": "#/definitions/ParameterControl" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "SheetControlLayouts": { - "items": { - "$ref": "#/definitions/SheetControlLayout" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "SheetId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "TextBoxes": { - "items": { - "$ref": "#/definitions/SheetTextBox" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "Title": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Visuals": { - "items": { - "$ref": "#/definitions/Visual" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "SheetId" - ], - "type": "object" - }, - "SheetElementConfigurationOverrides": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "SheetElementRenderingRule": { - "additionalProperties": false, - "properties": { - "ConfigurationOverrides": { - "$ref": "#/definitions/SheetElementConfigurationOverrides" - }, - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ConfigurationOverrides", - "Expression" - ], - "type": "object" - }, - "SheetTextBox": { - "additionalProperties": false, - "properties": { - "Content": { - "maxLength": 150000, - "minLength": 0, - "type": "string" - }, - "SheetTextBoxId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "SheetTextBoxId" - ], - "type": "object" - }, - "SheetVisualScopingConfiguration": { - "additionalProperties": false, - "properties": { - "Scope": { - "$ref": "#/definitions/FilterVisualScope" - }, - "SheetId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "VisualIds": { - "items": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Scope", - "SheetId" - ], - "type": "object" - }, - "ShortFormatText": { - "additionalProperties": false, - "properties": { - "PlainText": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "RichText": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "SimpleAttributeAggregationFunction": { - "enum": [ - "UNIQUE_VALUE" - ], - "type": "string" - }, - "SimpleClusterMarker": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - } - }, - "type": "object" - }, - "SimpleNumericalAggregationFunction": { - "enum": [ - "SUM", - "AVERAGE", - "MIN", - "MAX", - "COUNT", - "DISTINCT_COUNT", - "VAR", - "VARP", - "STDEV", - "STDEVP", - "MEDIAN" - ], - "type": "string" - }, - "SimpleTotalAggregationFunction": { - "enum": [ - "DEFAULT", - "SUM", - "AVERAGE", - "MIN", - "MAX", - "NONE" - ], - "type": "string" - }, - "SingleAxisOptions": { - "additionalProperties": false, - "properties": { - "YAxisOptions": { - "$ref": "#/definitions/YAxisOptions" - } - }, - "type": "object" - }, - "SingleYAxisOption": { - "enum": [ - "PRIMARY_Y_AXIS" - ], - "type": "string" - }, - "SliderControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "SmallMultiplesAxisPlacement": { - "enum": [ - "OUTSIDE", - "INSIDE" - ], - "type": "string" - }, - "SmallMultiplesAxisProperties": { - "additionalProperties": false, - "properties": { - "Placement": { - "$ref": "#/definitions/SmallMultiplesAxisPlacement" - }, - "Scale": { - "$ref": "#/definitions/SmallMultiplesAxisScale" - } - }, - "type": "object" - }, - "SmallMultiplesAxisScale": { - "enum": [ - "SHARED", - "INDEPENDENT" - ], - "type": "string" - }, - "SmallMultiplesOptions": { - "additionalProperties": false, - "properties": { - "MaxVisibleColumns": { - "maximum": 10, - "minimum": 1, - "type": "number" - }, - "MaxVisibleRows": { - "maximum": 10, - "minimum": 1, - "type": "number" - }, - "PanelConfiguration": { - "$ref": "#/definitions/PanelConfiguration" - }, - "XAxis": { - "$ref": "#/definitions/SmallMultiplesAxisProperties" - }, - "YAxis": { - "$ref": "#/definitions/SmallMultiplesAxisProperties" - } - }, - "type": "object" - }, - "SortDirection": { - "enum": [ - "ASC", - "DESC" - ], - "type": "string" - }, - "Spacing": { - "additionalProperties": false, - "properties": { - "Bottom": { - "description": "String based length that is composed of value and unit", - "type": "string" - }, - "Left": { - "description": "String based length that is composed of value and unit", - "type": "string" - }, - "Right": { - "description": "String based length that is composed of value and unit", - "type": "string" - }, - "Top": { - "description": "String based length that is composed of value and unit", - "type": "string" - } - }, - "type": "object" - }, - "SpecialValue": { - "enum": [ - "EMPTY", - "NULL", - "OTHER" - ], - "type": "string" - }, - "StringDefaultValues": { - "additionalProperties": false, - "properties": { - "DynamicValue": { - "$ref": "#/definitions/DynamicDefaultValue" - }, - "StaticValues": { - "items": { - "type": "string" - }, - "maxItems": 50000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "StringFormatConfiguration": { - "additionalProperties": false, - "properties": { - "NullValueFormatConfiguration": { - "$ref": "#/definitions/NullValueFormatConfiguration" - }, - "NumericFormatConfiguration": { - "$ref": "#/definitions/NumericFormatConfiguration" - } - }, - "type": "object" - }, - "StringParameterDeclaration": { - "additionalProperties": false, - "properties": { - "DefaultValues": { - "$ref": "#/definitions/StringDefaultValues" - }, - "MappedDataSetParameters": { - "items": { - "$ref": "#/definitions/MappedDataSetParameter" - }, - "maxItems": 150, - "minItems": 0, - "type": "array" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "ParameterValueType": { - "$ref": "#/definitions/ParameterValueType" - }, - "ValueWhenUnset": { - "$ref": "#/definitions/StringValueWhenUnsetConfiguration" - } - }, - "required": [ - "Name", - "ParameterValueType" - ], - "type": "object" - }, - "StringValueWhenUnsetConfiguration": { - "additionalProperties": false, - "properties": { - "CustomValue": { - "type": "string" - }, - "ValueWhenUnsetOption": { - "$ref": "#/definitions/ValueWhenUnsetOption" - } - }, - "type": "object" - }, - "StyledCellType": { - "enum": [ - "TOTAL", - "METRIC_HEADER", - "VALUE" - ], - "type": "string" - }, - "SubtotalOptions": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "type": "string" - }, - "FieldLevel": { - "$ref": "#/definitions/PivotTableSubtotalLevel" - }, - "FieldLevelOptions": { - "items": { - "$ref": "#/definitions/PivotTableFieldSubtotalOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "MetricHeaderCellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "StyleTargets": { - "items": { - "$ref": "#/definitions/TableStyleTarget" - }, - "maxItems": 3, - "minItems": 0, - "type": "array" - }, - "TotalCellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "TotalsVisibility": { - "$ref": "#/definitions/Visibility" - }, - "ValueCellStyle": { - "$ref": "#/definitions/TableCellStyle" - } - }, - "type": "object" - }, - "TableAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "GroupBy": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableBorderOptions": { - "additionalProperties": false, - "properties": { - "Color": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Style": { - "$ref": "#/definitions/TableBorderStyle" - }, - "Thickness": { - "maximum": 4, - "minimum": 1, - "type": "number" - } - }, - "type": "object" - }, - "TableBorderStyle": { - "enum": [ - "NONE", - "SOLID" - ], - "type": "string" - }, - "TableCellConditionalFormatting": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "TextFormat": { - "$ref": "#/definitions/TextConditionalFormat" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "TableCellImageScalingConfiguration": { - "enum": [ - "FIT_TO_CELL_HEIGHT", - "FIT_TO_CELL_WIDTH", - "DO_NOT_SCALE" - ], - "type": "string" - }, - "TableCellImageSizingConfiguration": { - "additionalProperties": false, - "properties": { - "TableCellImageScalingConfiguration": { - "$ref": "#/definitions/TableCellImageScalingConfiguration" - } - }, - "type": "object" - }, - "TableCellStyle": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Border": { - "$ref": "#/definitions/GlobalTableBorderOptions" - }, - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "Height": { - "maximum": 500, - "minimum": 8, - "type": "number" - }, - "HorizontalTextAlignment": { - "$ref": "#/definitions/HorizontalTextAlignment" - }, - "TextWrap": { - "$ref": "#/definitions/TextWrap" - }, - "VerticalTextAlignment": { - "$ref": "#/definitions/VerticalTextAlignment" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TableConditionalFormatting": { - "additionalProperties": false, - "properties": { - "ConditionalFormattingOptions": { - "items": { - "$ref": "#/definitions/TableConditionalFormattingOption" - }, - "maxItems": 500, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableConditionalFormattingOption": { - "additionalProperties": false, - "properties": { - "Cell": { - "$ref": "#/definitions/TableCellConditionalFormatting" - }, - "Row": { - "$ref": "#/definitions/TableRowConditionalFormatting" - } - }, - "type": "object" - }, - "TableConfiguration": { - "additionalProperties": false, - "properties": { - "FieldOptions": { - "$ref": "#/definitions/TableFieldOptions" - }, - "FieldWells": { - "$ref": "#/definitions/TableFieldWells" - }, - "PaginatedReportOptions": { - "$ref": "#/definitions/TablePaginatedReportOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/TableSortConfiguration" - }, - "TableInlineVisualizations": { - "items": { - "$ref": "#/definitions/TableInlineVisualization" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TableOptions": { - "$ref": "#/definitions/TableOptions" - }, - "TotalOptions": { - "$ref": "#/definitions/TotalOptions" - } - }, - "type": "object" - }, - "TableFieldCustomIconContent": { - "additionalProperties": false, - "properties": { - "Icon": { - "$ref": "#/definitions/TableFieldIconSetType" - } - }, - "type": "object" - }, - "TableFieldCustomTextContent": { - "additionalProperties": false, - "properties": { - "FontConfiguration": { - "$ref": "#/definitions/FontConfiguration" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "FontConfiguration" - ], - "type": "object" - }, - "TableFieldIconSetType": { - "enum": [ - "LINK" - ], - "type": "string" - }, - "TableFieldImageConfiguration": { - "additionalProperties": false, - "properties": { - "SizingOptions": { - "$ref": "#/definitions/TableCellImageSizingConfiguration" - } - }, - "type": "object" - }, - "TableFieldLinkConfiguration": { - "additionalProperties": false, - "properties": { - "Content": { - "$ref": "#/definitions/TableFieldLinkContentConfiguration" - }, - "Target": { - "$ref": "#/definitions/URLTargetConfiguration" - } - }, - "required": [ - "Content", - "Target" - ], - "type": "object" - }, - "TableFieldLinkContentConfiguration": { - "additionalProperties": false, - "properties": { - "CustomIconContent": { - "$ref": "#/definitions/TableFieldCustomIconContent" - }, - "CustomTextContent": { - "$ref": "#/definitions/TableFieldCustomTextContent" - } - }, - "type": "object" - }, - "TableFieldOption": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "URLStyling": { - "$ref": "#/definitions/TableFieldURLConfiguration" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - }, - "Width": { - "description": "String based length that is composed of value and unit in px", - "type": "string" - } - }, - "required": [ - "FieldId" - ], - "type": "object" - }, - "TableFieldOptions": { - "additionalProperties": false, - "properties": { - "Order": { - "items": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "PinnedFieldOptions": { - "$ref": "#/definitions/TablePinnedFieldOptions" - }, - "SelectedFieldOptions": { - "items": { - "$ref": "#/definitions/TableFieldOption" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableFieldURLConfiguration": { - "additionalProperties": false, - "properties": { - "ImageConfiguration": { - "$ref": "#/definitions/TableFieldImageConfiguration" - }, - "LinkConfiguration": { - "$ref": "#/definitions/TableFieldLinkConfiguration" - } - }, - "type": "object" - }, - "TableFieldWells": { - "additionalProperties": false, - "properties": { - "TableAggregatedFieldWells": { - "$ref": "#/definitions/TableAggregatedFieldWells" - }, - "TableUnaggregatedFieldWells": { - "$ref": "#/definitions/TableUnaggregatedFieldWells" - } - }, - "type": "object" - }, - "TableInlineVisualization": { - "additionalProperties": false, - "properties": { - "DataBars": { - "$ref": "#/definitions/DataBarsOptions" - } - }, - "type": "object" - }, - "TableOptions": { - "additionalProperties": false, - "properties": { - "CellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "HeaderStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "Orientation": { - "$ref": "#/definitions/TableOrientation" - }, - "RowAlternateColorOptions": { - "$ref": "#/definitions/RowAlternateColorOptions" - } - }, - "type": "object" - }, - "TableOrientation": { - "enum": [ - "VERTICAL", - "HORIZONTAL" - ], - "type": "string" - }, - "TablePaginatedReportOptions": { - "additionalProperties": false, - "properties": { - "OverflowColumnHeaderVisibility": { - "$ref": "#/definitions/Visibility" - }, - "VerticalOverflowVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TablePinnedFieldOptions": { - "additionalProperties": false, - "properties": { - "PinnedLeftFields": { - "items": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "maxItems": 201, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableRowConditionalFormatting": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "TableSideBorderOptions": { - "additionalProperties": false, - "properties": { - "Bottom": { - "$ref": "#/definitions/TableBorderOptions" - }, - "InnerHorizontal": { - "$ref": "#/definitions/TableBorderOptions" - }, - "InnerVertical": { - "$ref": "#/definitions/TableBorderOptions" - }, - "Left": { - "$ref": "#/definitions/TableBorderOptions" - }, - "Right": { - "$ref": "#/definitions/TableBorderOptions" - }, - "Top": { - "$ref": "#/definitions/TableBorderOptions" - } - }, - "type": "object" - }, - "TableSortConfiguration": { - "additionalProperties": false, - "properties": { - "PaginationConfiguration": { - "$ref": "#/definitions/PaginationConfiguration" - }, - "RowSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableStyleTarget": { - "additionalProperties": false, - "properties": { - "CellType": { - "$ref": "#/definitions/StyledCellType" - } - }, - "required": [ - "CellType" - ], - "type": "object" - }, - "TableTotalsPlacement": { - "enum": [ - "START", - "END", - "AUTO" - ], - "type": "string" - }, - "TableTotalsScrollStatus": { - "enum": [ - "PINNED", - "SCROLLED" - ], - "type": "string" - }, - "TableUnaggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Values": { - "items": { - "$ref": "#/definitions/UnaggregatedField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TableVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/TableConfiguration" - }, - "ConditionalFormatting": { - "$ref": "#/definitions/TableConditionalFormatting" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", - "properties": { - "Key": { - "description": "

Tag key.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "

Tag value.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TargetVisualOptions": { - "enum": [ - "ALL_VISUALS" - ], - "type": "string" - }, - "TemplateError": { - "additionalProperties": false, - "description": "

List of errors that occurred when the template version creation failed.

", - "properties": { - "Message": { - "description": "

Description of the error type.

", - "pattern": "\\S", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/TemplateErrorType" - }, - "ViolatedEntities": { - "description": "

An error path that shows which entities caused the template error.

", - "items": { - "$ref": "#/definitions/Entity" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TemplateErrorType": { - "enum": [ - "SOURCE_NOT_FOUND", - "DATA_SET_NOT_FOUND", - "INTERNAL_FAILURE", - "ACCESS_DENIED" - ], - "type": "string" - }, - "TemplateSourceAnalysis": { - "additionalProperties": false, - "description": "

The source analysis of the template.

", - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) of the resource.

", - "type": "string" - }, - "DataSetReferences": { - "description": "

A structure containing information about the dataset references used as placeholders\n in the template.

", - "items": { - "$ref": "#/definitions/DataSetReference" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Arn", - "DataSetReferences" - ], - "type": "object" - }, - "TemplateSourceEntity": { - "additionalProperties": false, - "description": "

The source entity of the template.

", - "properties": { - "SourceAnalysis": { - "$ref": "#/definitions/TemplateSourceAnalysis" - }, - "SourceTemplate": { - "$ref": "#/definitions/TemplateSourceTemplate" - } - }, - "type": "object" - }, - "TemplateSourceTemplate": { - "additionalProperties": false, - "description": "

The source template of the template.

", - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) of the resource.

", - "type": "string" - } - }, - "required": [ - "Arn" - ], - "type": "object" - }, - "TemplateVersion": { - "additionalProperties": false, - "description": "

A version of a template.

", - "properties": { - "CreatedTime": { - "description": "

The time that this template version was created.

", - "format": "date-time", - "type": "string" - }, - "DataSetConfigurations": { - "description": "

Schema of the dataset identified by the placeholder. Any dashboard created from this\n template should be bound to new datasets matching the same schema described through this\n API operation.

", - "items": { - "$ref": "#/definitions/DataSetConfiguration" - }, - "maxItems": 30, - "minItems": 0, - "type": "array" - }, - "Description": { - "description": "

The description of the template.

", - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Errors": { - "description": "

Errors associated with this template version.

", - "items": { - "$ref": "#/definitions/TemplateError" - }, - "minItems": 1, - "type": "array" - }, - "Sheets": { - "description": "

A list of the associated sheets with the unique identifier and name of each sheet.

", - "items": { - "$ref": "#/definitions/Sheet" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "SourceEntityArn": { - "description": "

The Amazon Resource Name (ARN) of an analysis or template that was used to create this\n template.

", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/ResourceStatus" - }, - "ThemeArn": { - "description": "

The ARN of the theme associated with this version of the template.

", - "type": "string" - }, - "VersionNumber": { - "description": "

The version number of the template version.

", - "minimum": 1, - "type": "number" - } - }, - "type": "object" - }, - "TemplateVersionDefinition": { - "additionalProperties": false, - "properties": { - "AnalysisDefaults": { - "$ref": "#/definitions/AnalysisDefaults" - }, - "CalculatedFields": { - "items": { - "$ref": "#/definitions/CalculatedField" - }, - "maxItems": 500, - "minItems": 0, - "type": "array" - }, - "ColumnConfigurations": { - "items": { - "$ref": "#/definitions/ColumnConfiguration" - }, - "maxItems": 2000, - "minItems": 0, - "type": "array" - }, - "DataSetConfigurations": { - "items": { - "$ref": "#/definitions/DataSetConfiguration" - }, - "maxItems": 30, - "minItems": 0, - "type": "array" - }, - "FilterGroups": { - "items": { - "$ref": "#/definitions/FilterGroup" - }, - "maxItems": 2000, - "minItems": 0, - "type": "array" - }, - "Options": { - "$ref": "#/definitions/AssetOptions" - }, - "ParameterDeclarations": { - "items": { - "$ref": "#/definitions/ParameterDeclaration" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "QueryExecutionOptions": { - "$ref": "#/definitions/QueryExecutionOptions" - }, - "Sheets": { - "items": { - "$ref": "#/definitions/SheetDefinition" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "DataSetConfigurations" - ], - "type": "object" - }, - "TextAreaControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "PlaceholderOptions": { - "$ref": "#/definitions/TextControlPlaceholderOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "TextConditionalFormat": { - "additionalProperties": false, - "properties": { - "BackgroundColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - }, - "Icon": { - "$ref": "#/definitions/ConditionalFormattingIcon" - }, - "TextColor": { - "$ref": "#/definitions/ConditionalFormattingColor" - } - }, - "type": "object" - }, - "TextControlPlaceholderOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TextFieldControlDisplayOptions": { - "additionalProperties": false, - "properties": { - "InfoIconLabelOptions": { - "$ref": "#/definitions/SheetControlInfoIconLabelOptions" - }, - "PlaceholderOptions": { - "$ref": "#/definitions/TextControlPlaceholderOptions" - }, - "TitleOptions": { - "$ref": "#/definitions/LabelOptions" - } - }, - "type": "object" - }, - "TextWrap": { - "enum": [ - "NONE", - "WRAP" - ], - "type": "string" - }, - "ThousandSeparatorOptions": { - "additionalProperties": false, - "properties": { - "Symbol": { - "$ref": "#/definitions/NumericSeparatorSymbol" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TimeBasedForecastProperties": { - "additionalProperties": false, - "properties": { - "LowerBoundary": { - "default": null, - "type": "number" - }, - "PeriodsBackward": { - "maximum": 1000, - "minimum": 0, - "type": "number" - }, - "PeriodsForward": { - "maximum": 1000, - "minimum": 1, - "type": "number" - }, - "PredictionInterval": { - "maximum": 95, - "minimum": 50, - "type": "number" - }, - "Seasonality": { - "maximum": 180, - "minimum": 1, - "type": "number" - }, - "UpperBoundary": { - "default": null, - "type": "number" - } - }, - "type": "object" - }, - "TimeEqualityFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "RollingDate": { - "$ref": "#/definitions/RollingDateConfiguration" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - }, - "Value": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "Column", - "FilterId" - ], - "type": "object" - }, - "TimeGranularity": { - "enum": [ - "YEAR", - "QUARTER", - "MONTH", - "WEEK", - "DAY", - "HOUR", - "MINUTE", - "SECOND", - "MILLISECOND" - ], - "type": "string" - }, - "TimeRangeDrillDownFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "RangeMaximum": { - "format": "date-time", - "type": "string" - }, - "RangeMinimum": { - "format": "date-time", - "type": "string" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - } - }, - "required": [ - "Column", - "RangeMaximum", - "RangeMinimum", - "TimeGranularity" - ], - "type": "object" - }, - "TimeRangeFilter": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "ExcludePeriodConfiguration": { - "$ref": "#/definitions/ExcludePeriodConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "IncludeMaximum": { - "default": null, - "type": "boolean" - }, - "IncludeMinimum": { - "default": null, - "type": "boolean" - }, - "NullOption": { - "$ref": "#/definitions/FilterNullOption" - }, - "RangeMaximumValue": { - "$ref": "#/definitions/TimeRangeFilterValue" - }, - "RangeMinimumValue": { - "$ref": "#/definitions/TimeRangeFilterValue" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - } - }, - "required": [ - "Column", - "FilterId", - "NullOption" - ], - "type": "object" - }, - "TimeRangeFilterValue": { - "additionalProperties": false, - "properties": { - "Parameter": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "RollingDate": { - "$ref": "#/definitions/RollingDateConfiguration" - }, - "StaticValue": { - "format": "date-time", - "type": "string" - } - }, - "type": "object" - }, - "TooltipItem": { - "additionalProperties": false, - "properties": { - "ColumnTooltipItem": { - "$ref": "#/definitions/ColumnTooltipItem" - }, - "FieldTooltipItem": { - "$ref": "#/definitions/FieldTooltipItem" - } - }, - "type": "object" - }, - "TooltipOptions": { - "additionalProperties": false, - "properties": { - "FieldBasedTooltip": { - "$ref": "#/definitions/FieldBasedTooltip" - }, - "SelectedTooltipType": { - "$ref": "#/definitions/SelectedTooltipType" - }, - "TooltipVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TooltipTarget": { - "enum": [ - "BOTH", - "BAR", - "LINE" - ], - "type": "string" - }, - "TooltipTitleType": { - "enum": [ - "NONE", - "PRIMARY_VALUE" - ], - "type": "string" - }, - "TopBottomComputationType": { - "enum": [ - "TOP", - "BOTTOM" - ], - "type": "string" - }, - "TopBottomFilter": { - "additionalProperties": false, - "properties": { - "AggregationSortConfigurations": { - "items": { - "$ref": "#/definitions/AggregationSortConfiguration" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "DefaultFilterControlConfiguration": { - "$ref": "#/definitions/DefaultFilterControlConfiguration" - }, - "FilterId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Limit": { - "default": null, - "type": "number" - }, - "ParameterName": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "TimeGranularity": { - "$ref": "#/definitions/TimeGranularity" - } - }, - "required": [ - "AggregationSortConfigurations", - "Column", - "FilterId" - ], - "type": "object" - }, - "TopBottomMoversComputation": { - "additionalProperties": false, - "properties": { - "Category": { - "$ref": "#/definitions/DimensionField" - }, - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "MoverSize": { - "default": 0, - "maximum": 20, - "minimum": 1, - "type": "number" - }, - "Name": { - "type": "string" - }, - "SortOrder": { - "$ref": "#/definitions/TopBottomSortOrder" - }, - "Time": { - "$ref": "#/definitions/DimensionField" - }, - "Type": { - "$ref": "#/definitions/TopBottomComputationType" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId", - "Type" - ], - "type": "object" - }, - "TopBottomRankedComputation": { - "additionalProperties": false, - "properties": { - "Category": { - "$ref": "#/definitions/DimensionField" - }, - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "ResultSize": { - "default": 0, - "maximum": 20, - "minimum": 1, - "type": "number" - }, - "Type": { - "$ref": "#/definitions/TopBottomComputationType" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId", - "Type" - ], - "type": "object" - }, - "TopBottomSortOrder": { - "enum": [ - "PERCENT_DIFFERENCE", - "ABSOLUTE_DIFFERENCE" - ], - "type": "string" - }, - "TotalAggregationComputation": { - "additionalProperties": false, - "properties": { - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - }, - "Value": { - "$ref": "#/definitions/MeasureField" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "TotalAggregationFunction": { - "additionalProperties": false, - "properties": { - "SimpleTotalAggregationFunction": { - "$ref": "#/definitions/SimpleTotalAggregationFunction" - } - }, - "type": "object" - }, - "TotalAggregationOption": { - "additionalProperties": false, - "properties": { - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "TotalAggregationFunction": { - "$ref": "#/definitions/TotalAggregationFunction" - } - }, - "required": [ - "FieldId", - "TotalAggregationFunction" - ], - "type": "object" - }, - "TotalOptions": { - "additionalProperties": false, - "properties": { - "CustomLabel": { - "type": "string" - }, - "Placement": { - "$ref": "#/definitions/TableTotalsPlacement" - }, - "ScrollStatus": { - "$ref": "#/definitions/TableTotalsScrollStatus" - }, - "TotalAggregationOptions": { - "items": { - "$ref": "#/definitions/TotalAggregationOption" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TotalCellStyle": { - "$ref": "#/definitions/TableCellStyle" - }, - "TotalsVisibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "TreeMapAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Colors": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Groups": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Sizes": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TreeMapConfiguration": { - "additionalProperties": false, - "properties": { - "ColorLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ColorScale": { - "$ref": "#/definitions/ColorScale" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/TreeMapFieldWells" - }, - "GroupLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "SizeLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/TreeMapSortConfiguration" - }, - "Tooltip": { - "$ref": "#/definitions/TooltipOptions" - } - }, - "type": "object" - }, - "TreeMapFieldWells": { - "additionalProperties": false, - "properties": { - "TreeMapAggregatedFieldWells": { - "$ref": "#/definitions/TreeMapAggregatedFieldWells" - } - }, - "type": "object" - }, - "TreeMapSortConfiguration": { - "additionalProperties": false, - "properties": { - "TreeMapGroupItemsLimitConfiguration": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "TreeMapSort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "TreeMapVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/TreeMapConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "TrendArrowOptions": { - "additionalProperties": false, - "properties": { - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "URLTargetConfiguration": { - "enum": [ - "NEW_TAB", - "NEW_WINDOW", - "SAME_TAB" - ], - "type": "string" - }, - "UnaggregatedField": { - "additionalProperties": false, - "properties": { - "Column": { - "$ref": "#/definitions/ColumnIdentifier" - }, - "FieldId": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "FormatConfiguration": { - "$ref": "#/definitions/FormatConfiguration" - } - }, - "required": [ - "Column", - "FieldId" - ], - "type": "object" - }, - "UniqueValuesComputation": { - "additionalProperties": false, - "properties": { - "Category": { - "$ref": "#/definitions/DimensionField" - }, - "ComputationId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "ComputationId" - ], - "type": "object" - }, - "ValidationStrategy": { - "additionalProperties": false, - "description": "

The option to relax the validation that is required to create and update analyses, dashboards, and templates with definition objects. When you set this value to LENIENT, validation is skipped for specific errors.

", - "properties": { - "Mode": { - "$ref": "#/definitions/ValidationStrategyMode" - } - }, - "required": [ - "Mode" - ], - "type": "object" - }, - "ValidationStrategyMode": { - "enum": [ - "STRICT", - "LENIENT" - ], - "type": "string" - }, - "ValueWhenUnsetOption": { - "enum": [ - "RECOMMENDED_VALUE", - "NULL" - ], - "type": "string" - }, - "VerticalTextAlignment": { - "enum": [ - "TOP", - "MIDDLE", - "BOTTOM", - "AUTO" - ], - "type": "string" - }, - "Visibility": { - "enum": [ - "HIDDEN", - "VISIBLE" - ], - "type": "string" - }, - "VisibleRangeOptions": { - "additionalProperties": false, - "properties": { - "PercentRange": { - "$ref": "#/definitions/PercentVisibleRange" - } - }, - "type": "object" - }, - "Visual": { - "additionalProperties": false, - "properties": { - "BarChartVisual": { - "$ref": "#/definitions/BarChartVisual" - }, - "BoxPlotVisual": { - "$ref": "#/definitions/BoxPlotVisual" - }, - "ComboChartVisual": { - "$ref": "#/definitions/ComboChartVisual" - }, - "CustomContentVisual": { - "$ref": "#/definitions/CustomContentVisual" - }, - "EmptyVisual": { - "$ref": "#/definitions/EmptyVisual" - }, - "FilledMapVisual": { - "$ref": "#/definitions/FilledMapVisual" - }, - "FunnelChartVisual": { - "$ref": "#/definitions/FunnelChartVisual" - }, - "GaugeChartVisual": { - "$ref": "#/definitions/GaugeChartVisual" - }, - "GeospatialMapVisual": { - "$ref": "#/definitions/GeospatialMapVisual" - }, - "HeatMapVisual": { - "$ref": "#/definitions/HeatMapVisual" - }, - "HistogramVisual": { - "$ref": "#/definitions/HistogramVisual" - }, - "InsightVisual": { - "$ref": "#/definitions/InsightVisual" - }, - "KPIVisual": { - "$ref": "#/definitions/KPIVisual" - }, - "LineChartVisual": { - "$ref": "#/definitions/LineChartVisual" - }, - "PieChartVisual": { - "$ref": "#/definitions/PieChartVisual" - }, - "PivotTableVisual": { - "$ref": "#/definitions/PivotTableVisual" - }, - "RadarChartVisual": { - "$ref": "#/definitions/RadarChartVisual" - }, - "SankeyDiagramVisual": { - "$ref": "#/definitions/SankeyDiagramVisual" - }, - "ScatterPlotVisual": { - "$ref": "#/definitions/ScatterPlotVisual" - }, - "TableVisual": { - "$ref": "#/definitions/TableVisual" - }, - "TreeMapVisual": { - "$ref": "#/definitions/TreeMapVisual" - }, - "WaterfallVisual": { - "$ref": "#/definitions/WaterfallVisual" - }, - "WordCloudVisual": { - "$ref": "#/definitions/WordCloudVisual" - } - }, - "type": "object" - }, - "VisualCustomAction": { - "additionalProperties": false, - "properties": { - "ActionOperations": { - "items": { - "$ref": "#/definitions/VisualCustomActionOperation" - }, - "maxItems": 2, - "minItems": 1, - "type": "array" - }, - "CustomActionId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Name": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Status": { - "$ref": "#/definitions/WidgetStatus" - }, - "Trigger": { - "$ref": "#/definitions/VisualCustomActionTrigger" - } - }, - "required": [ - "ActionOperations", - "CustomActionId", - "Name", - "Trigger" - ], - "type": "object" - }, - "VisualCustomActionOperation": { - "additionalProperties": false, - "properties": { - "FilterOperation": { - "$ref": "#/definitions/CustomActionFilterOperation" - }, - "NavigationOperation": { - "$ref": "#/definitions/CustomActionNavigationOperation" - }, - "SetParametersOperation": { - "$ref": "#/definitions/CustomActionSetParametersOperation" - }, - "URLOperation": { - "$ref": "#/definitions/CustomActionURLOperation" - } - }, - "type": "object" - }, - "VisualCustomActionTrigger": { - "enum": [ - "DATA_POINT_CLICK", - "DATA_POINT_MENU" - ], - "type": "string" - }, - "VisualPalette": { - "additionalProperties": false, - "properties": { - "ChartColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "ColorMap": { - "items": { - "$ref": "#/definitions/DataPathColor" - }, - "maxItems": 5000, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "VisualSubtitleLabelOptions": { - "additionalProperties": false, - "properties": { - "FormatText": { - "$ref": "#/definitions/LongFormatText" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "VisualTitleLabelOptions": { - "additionalProperties": false, - "properties": { - "FormatText": { - "$ref": "#/definitions/ShortFormatText" - }, - "Visibility": { - "$ref": "#/definitions/Visibility" - } - }, - "type": "object" - }, - "WaterfallChartAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "Breakdowns": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Categories": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Values": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "WaterfallChartColorConfiguration": { - "additionalProperties": false, - "properties": { - "GroupColorConfiguration": { - "$ref": "#/definitions/WaterfallChartGroupColorConfiguration" - } - }, - "type": "object" - }, - "WaterfallChartConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "CategoryAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "ColorConfiguration": { - "$ref": "#/definitions/WaterfallChartColorConfiguration" - }, - "DataLabels": { - "$ref": "#/definitions/DataLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/WaterfallChartFieldWells" - }, - "Legend": { - "$ref": "#/definitions/LegendOptions" - }, - "PrimaryYAxisDisplayOptions": { - "$ref": "#/definitions/AxisDisplayOptions" - }, - "PrimaryYAxisLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "SortConfiguration": { - "$ref": "#/definitions/WaterfallChartSortConfiguration" - }, - "VisualPalette": { - "$ref": "#/definitions/VisualPalette" - }, - "WaterfallChartOptions": { - "$ref": "#/definitions/WaterfallChartOptions" - } - }, - "type": "object" - }, - "WaterfallChartFieldWells": { - "additionalProperties": false, - "properties": { - "WaterfallChartAggregatedFieldWells": { - "$ref": "#/definitions/WaterfallChartAggregatedFieldWells" - } - }, - "type": "object" - }, - "WaterfallChartGroupColorConfiguration": { - "additionalProperties": false, - "properties": { - "NegativeBarColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "PositiveBarColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "TotalBarColor": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - } - }, - "type": "object" - }, - "WaterfallChartOptions": { - "additionalProperties": false, - "properties": { - "TotalBarLabel": { - "type": "string" - } - }, - "type": "object" - }, - "WaterfallChartSortConfiguration": { - "additionalProperties": false, - "properties": { - "BreakdownItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "WaterfallVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/WaterfallChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "WhatIfPointScenario": { - "additionalProperties": false, - "properties": { - "Date": { - "format": "date-time", - "type": "string" - }, - "Value": { - "default": 0, - "type": "number" - } - }, - "required": [ - "Date", - "Value" - ], - "type": "object" - }, - "WhatIfRangeScenario": { - "additionalProperties": false, - "properties": { - "EndDate": { - "format": "date-time", - "type": "string" - }, - "StartDate": { - "format": "date-time", - "type": "string" - }, - "Value": { - "default": 0, - "type": "number" - } - }, - "required": [ - "EndDate", - "StartDate", - "Value" - ], - "type": "object" - }, - "WidgetStatus": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "WordCloudAggregatedFieldWells": { - "additionalProperties": false, - "properties": { - "GroupBy": { - "items": { - "$ref": "#/definitions/DimensionField" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "Size": { - "items": { - "$ref": "#/definitions/MeasureField" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "WordCloudChartConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryLabelOptions": { - "$ref": "#/definitions/ChartAxisLabelOptions" - }, - "FieldWells": { - "$ref": "#/definitions/WordCloudFieldWells" - }, - "SortConfiguration": { - "$ref": "#/definitions/WordCloudSortConfiguration" - }, - "WordCloudOptions": { - "$ref": "#/definitions/WordCloudOptions" - } - }, - "type": "object" - }, - "WordCloudCloudLayout": { - "enum": [ - "FLUID", - "NORMAL" - ], - "type": "string" - }, - "WordCloudFieldWells": { - "additionalProperties": false, - "properties": { - "WordCloudAggregatedFieldWells": { - "$ref": "#/definitions/WordCloudAggregatedFieldWells" - } - }, - "type": "object" - }, - "WordCloudOptions": { - "additionalProperties": false, - "properties": { - "CloudLayout": { - "$ref": "#/definitions/WordCloudCloudLayout" - }, - "MaximumStringLength": { - "maximum": 100, - "minimum": 1, - "type": "number" - }, - "WordCasing": { - "$ref": "#/definitions/WordCloudWordCasing" - }, - "WordOrientation": { - "$ref": "#/definitions/WordCloudWordOrientation" - }, - "WordPadding": { - "$ref": "#/definitions/WordCloudWordPadding" - }, - "WordScaling": { - "$ref": "#/definitions/WordCloudWordScaling" - } - }, - "type": "object" - }, - "WordCloudSortConfiguration": { - "additionalProperties": false, - "properties": { - "CategoryItemsLimit": { - "$ref": "#/definitions/ItemsLimitConfiguration" - }, - "CategorySort": { - "items": { - "$ref": "#/definitions/FieldSortOptions" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "WordCloudVisual": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/VisualCustomAction" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "ChartConfiguration": { - "$ref": "#/definitions/WordCloudChartConfiguration" - }, - "ColumnHierarchies": { - "items": { - "$ref": "#/definitions/ColumnHierarchy" - }, - "maxItems": 2, - "minItems": 0, - "type": "array" - }, - "Subtitle": { - "$ref": "#/definitions/VisualSubtitleLabelOptions" - }, - "Title": { - "$ref": "#/definitions/VisualTitleLabelOptions" - }, - "VisualId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - } - }, - "required": [ - "VisualId" - ], - "type": "object" - }, - "WordCloudWordCasing": { - "enum": [ - "LOWER_CASE", - "EXISTING_CASE" - ], - "type": "string" - }, - "WordCloudWordOrientation": { - "enum": [ - "HORIZONTAL", - "HORIZONTAL_AND_VERTICAL" - ], - "type": "string" - }, - "WordCloudWordPadding": { - "enum": [ - "NONE", - "SMALL", - "MEDIUM", - "LARGE" - ], - "type": "string" - }, - "WordCloudWordScaling": { - "enum": [ - "EMPHASIZE", - "NORMAL" - ], - "type": "string" - }, - "YAxisOptions": { - "additionalProperties": false, - "properties": { - "YAxis": { - "$ref": "#/definitions/SingleYAxisOption" - } - }, - "required": [ - "YAxis" - ], - "type": "object" - } - }, - "description": "Definition of the AWS::QuickSight::Template Resource Type.", - "handlers": { - "create": { - "permissions": [ - "quicksight:DescribeTemplate", - "quicksight:DescribeTemplatePermissions", - "quicksight:CreateTemplate", - "quicksight:DescribeAnalysis", - "quicksight:TagResource", - "quicksight:UntagResource", - "quicksight:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "quicksight:DescribeTemplate", - "quicksight:DeleteTemplate" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "AwsAccountId": { - "$ref": "resource-schema.json#/properties/AwsAccountId" - } - }, - "required": [ - "AwsAccountId" - ] - }, - "permissions": [ - "quicksight:ListTemplates" - ] - }, - "read": { - "permissions": [ - "quicksight:DescribeTemplate", - "quicksight:DescribeTemplatePermissions", - "quicksight:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "quicksight:DescribeTemplate", - "quicksight:DescribeTemplatePermissions", - "quicksight:UpdateTemplate", - "quicksight:UpdateTemplatePermissions", - "quicksight:PassDataSet", - "quicksight:TagResource", - "quicksight:UntagResource", - "quicksight:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AwsAccountId", - "/properties/TemplateId" - ], - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) of the template.

", - "type": "string" - }, - "AwsAccountId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "CreatedTime": { - "description": "

Time when this was created.

", - "format": "date-time", - "type": "string" - }, - "Definition": { - "$ref": "#/definitions/TemplateVersionDefinition" - }, - "LastUpdatedTime": { - "description": "

Time when this was last updated.

", - "format": "date-time", - "type": "string" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Permissions": { - "items": { - "$ref": "#/definitions/ResourcePermission" - }, - "maxItems": 64, - "minItems": 1, - "type": "array" - }, - "SourceEntity": { - "$ref": "#/definitions/TemplateSourceEntity" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "TemplateId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "ValidationStrategy": { - "$ref": "#/definitions/ValidationStrategy" - }, - "Version": { - "$ref": "#/definitions/TemplateVersion" - }, - "VersionDescription": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedTime", - "/properties/LastUpdatedTime", - "/properties/Version" - ], - "required": [ - "AwsAccountId", - "TemplateId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", - "typeName": "AWS::QuickSight::Template", - "writeOnlyProperties": [ - "/properties/Definition", - "/properties/VersionDescription", - "/properties/SourceEntity", - "/properties/ValidationStrategy" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/TemplateId" + ], + "definitions": { + "AggregationFunction": { + "additionalProperties": false, + "properties": { + "AttributeAggregationFunction": { + "$ref": "#/definitions/AttributeAggregationFunction" + }, + "CategoricalAggregationFunction": { + "$ref": "#/definitions/CategoricalAggregationFunction" + }, + "DateAggregationFunction": { + "$ref": "#/definitions/DateAggregationFunction" + }, + "NumericalAggregationFunction": { + "$ref": "#/definitions/NumericalAggregationFunction" + } + }, + "type": "object" + }, + "AggregationSortConfiguration": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SortDirection": { + "$ref": "#/definitions/SortDirection" + } + }, + "required": [ + "Column", + "SortDirection" + ], + "type": "object" + }, + "AllSheetsFilterScopeConfiguration": { + "additionalProperties": false, + "type": "object" + }, + "AnalysisDefaults": { + "additionalProperties": false, + "properties": { + "DefaultNewSheetConfiguration": { + "$ref": "#/definitions/DefaultNewSheetConfiguration" + } + }, + "required": [ + "DefaultNewSheetConfiguration" + ], + "type": "object" + }, + "AnchorDateConfiguration": { + "additionalProperties": false, + "properties": { + "AnchorOption": { + "$ref": "#/definitions/AnchorOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "AnchorOption": { + "enum": [ + "NOW" + ], + "type": "string" + }, + "ArcAxisConfiguration": { + "additionalProperties": false, + "properties": { + "Range": { + "$ref": "#/definitions/ArcAxisDisplayRange" + }, + "ReserveRange": { + "default": 0, + "type": "number" + } + }, + "type": "object" + }, + "ArcAxisDisplayRange": { + "additionalProperties": false, + "properties": { + "Max": { + "default": null, + "type": "number" + }, + "Min": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "ArcConfiguration": { + "additionalProperties": false, + "properties": { + "ArcAngle": { + "default": null, + "type": "number" + }, + "ArcThickness": { + "$ref": "#/definitions/ArcThicknessOptions" + } + }, + "type": "object" + }, + "ArcOptions": { + "additionalProperties": false, + "properties": { + "ArcThickness": { + "$ref": "#/definitions/ArcThickness" + } + }, + "type": "object" + }, + "ArcThickness": { + "enum": [ + "SMALL", + "MEDIUM", + "LARGE", + "WHOLE" + ], + "type": "string" + }, + "ArcThicknessOptions": { + "enum": [ + "SMALL", + "MEDIUM", + "LARGE" + ], + "type": "string" + }, + "AssetOptions": { + "additionalProperties": false, + "properties": { + "Timezone": { + "type": "string" + }, + "WeekStart": { + "$ref": "#/definitions/DayOfTheWeek" + } + }, + "type": "object" + }, + "AttributeAggregationFunction": { + "additionalProperties": false, + "properties": { + "SimpleAttributeAggregation": { + "$ref": "#/definitions/SimpleAttributeAggregationFunction" + }, + "ValueForMultipleValues": { + "type": "string" + } + }, + "type": "object" + }, + "AxisBinding": { + "enum": [ + "PRIMARY_YAXIS", + "SECONDARY_YAXIS" + ], + "type": "string" + }, + "AxisDataOptions": { + "additionalProperties": false, + "properties": { + "DateAxisOptions": { + "$ref": "#/definitions/DateAxisOptions" + }, + "NumericAxisOptions": { + "$ref": "#/definitions/NumericAxisOptions" + } + }, + "type": "object" + }, + "AxisDisplayDataDrivenRange": { + "additionalProperties": false, + "type": "object" + }, + "AxisDisplayMinMaxRange": { + "additionalProperties": false, + "properties": { + "Maximum": { + "default": null, + "type": "number" + }, + "Minimum": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisDisplayOptions": { + "additionalProperties": false, + "properties": { + "AxisLineVisibility": {}, + "AxisOffset": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "DataOptions": { + "$ref": "#/definitions/AxisDataOptions" + }, + "GridLineVisibility": {}, + "ScrollbarOptions": { + "$ref": "#/definitions/ScrollBarOptions" + }, + "TickLabelOptions": { + "$ref": "#/definitions/AxisTickLabelOptions" + } + }, + "type": "object" + }, + "AxisDisplayRange": { + "additionalProperties": false, + "properties": { + "DataDriven": { + "$ref": "#/definitions/AxisDisplayDataDrivenRange" + }, + "MinMax": { + "$ref": "#/definitions/AxisDisplayMinMaxRange" + } + }, + "type": "object" + }, + "AxisLabelOptions": { + "additionalProperties": false, + "properties": { + "ApplyTo": { + "$ref": "#/definitions/AxisLabelReferenceOptions" + }, + "CustomLabel": { + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + } + }, + "type": "object" + }, + "AxisLabelReferenceOptions": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "AxisLinearScale": { + "additionalProperties": false, + "properties": { + "StepCount": { + "default": null, + "type": "number" + }, + "StepSize": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisLogarithmicScale": { + "additionalProperties": false, + "properties": { + "Base": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "AxisScale": { + "additionalProperties": false, + "properties": { + "Linear": { + "$ref": "#/definitions/AxisLinearScale" + }, + "Logarithmic": { + "$ref": "#/definitions/AxisLogarithmicScale" + } + }, + "type": "object" + }, + "AxisTickLabelOptions": { + "additionalProperties": false, + "properties": { + "LabelOptions": { + "$ref": "#/definitions/LabelOptions" + }, + "RotationAngle": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "BarChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BarChartConfiguration": { + "additionalProperties": false, + "properties": { + "BarsArrangement": { + "$ref": "#/definitions/BarsArrangement" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/BarChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "Orientation": { + "$ref": "#/definitions/BarChartOrientation" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/BarChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "BarChartFieldWells": { + "additionalProperties": false, + "properties": { + "BarChartAggregatedFieldWells": { + "$ref": "#/definitions/BarChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "BarChartOrientation": { + "enum": [ + "HORIZONTAL", + "VERTICAL" + ], + "type": "string" + }, + "BarChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BarChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/BarChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "BarsArrangement": { + "enum": [ + "CLUSTERED", + "STACKED", + "STACKED_PERCENT" + ], + "type": "string" + }, + "BaseMapStyleType": { + "enum": [ + "LIGHT_GRAY", + "DARK_GRAY", + "STREET", + "IMAGERY" + ], + "type": "string" + }, + "BinCountOptions": { + "additionalProperties": false, + "properties": { + "Value": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "BinWidthOptions": { + "additionalProperties": false, + "properties": { + "BinCountLimit": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "Value": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "BodySectionConfiguration": { + "additionalProperties": false, + "properties": { + "Content": { + "$ref": "#/definitions/BodySectionContent" + }, + "PageBreakConfiguration": { + "$ref": "#/definitions/SectionPageBreakConfiguration" + }, + "RepeatConfiguration": { + "$ref": "#/definitions/BodySectionRepeatConfiguration" + }, + "SectionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/SectionStyle" + } + }, + "required": [ + "Content", + "SectionId" + ], + "type": "object" + }, + "BodySectionContent": { + "additionalProperties": false, + "properties": { + "Layout": { + "$ref": "#/definitions/SectionLayoutConfiguration" + } + }, + "type": "object" + }, + "BodySectionDynamicCategoryDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Limit": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "SortByMetrics": { + "items": { + "$ref": "#/definitions/ColumnSort" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "BodySectionDynamicNumericDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Limit": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "SortByMetrics": { + "items": { + "$ref": "#/definitions/ColumnSort" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "BodySectionRepeatConfiguration": { + "additionalProperties": false, + "properties": { + "DimensionConfigurations": { + "items": { + "$ref": "#/definitions/BodySectionRepeatDimensionConfiguration" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "NonRepeatingVisuals": { + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "PageBreakConfiguration": { + "$ref": "#/definitions/BodySectionRepeatPageBreakConfiguration" + } + }, + "type": "object" + }, + "BodySectionRepeatDimensionConfiguration": { + "additionalProperties": false, + "properties": { + "DynamicCategoryDimensionConfiguration": { + "$ref": "#/definitions/BodySectionDynamicCategoryDimensionConfiguration" + }, + "DynamicNumericDimensionConfiguration": { + "$ref": "#/definitions/BodySectionDynamicNumericDimensionConfiguration" + } + }, + "type": "object" + }, + "BodySectionRepeatPageBreakConfiguration": { + "additionalProperties": false, + "properties": { + "After": { + "$ref": "#/definitions/SectionAfterPageBreak" + } + }, + "type": "object" + }, + "BoxPlotAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "GroupBy": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "BoxPlotChartConfiguration": { + "additionalProperties": false, + "properties": { + "BoxPlotOptions": { + "$ref": "#/definitions/BoxPlotOptions" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/BoxPlotFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SortConfiguration": { + "$ref": "#/definitions/BoxPlotSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "BoxPlotFieldWells": { + "additionalProperties": false, + "properties": { + "BoxPlotAggregatedFieldWells": { + "$ref": "#/definitions/BoxPlotAggregatedFieldWells" + } + }, + "type": "object" + }, + "BoxPlotFillStyle": { + "enum": [ + "SOLID", + "TRANSPARENT" + ], + "type": "string" + }, + "BoxPlotOptions": { + "additionalProperties": false, + "properties": { + "AllDataPointsVisibility": {}, + "OutlierVisibility": {}, + "StyleOptions": { + "$ref": "#/definitions/BoxPlotStyleOptions" + } + }, + "type": "object" + }, + "BoxPlotSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "PaginationConfiguration": { + "$ref": "#/definitions/PaginationConfiguration" + } + }, + "type": "object" + }, + "BoxPlotStyleOptions": { + "additionalProperties": false, + "properties": { + "FillStyle": { + "$ref": "#/definitions/BoxPlotFillStyle" + } + }, + "type": "object" + }, + "BoxPlotVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/BoxPlotChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "CalculatedField": { + "additionalProperties": false, + "properties": { + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Expression": { + "maxLength": 32000, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 127, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "Expression", + "Name" + ], + "type": "object" + }, + "CalculatedMeasureField": { + "additionalProperties": false, + "properties": { + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Expression", + "FieldId" + ], + "type": "object" + }, + "CascadingControlConfiguration": { + "additionalProperties": false, + "properties": { + "SourceControls": { + "items": { + "$ref": "#/definitions/CascadingControlSource" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "CascadingControlSource": { + "additionalProperties": false, + "properties": { + "ColumnToMatch": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SourceSheetControlId": { + "type": "string" + } + }, + "type": "object" + }, + "CategoricalAggregationFunction": { + "enum": [ + "COUNT", + "DISTINCT_COUNT" + ], + "type": "string" + }, + "CategoricalDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "CategoricalMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/CategoricalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "CategoryDrillDownFilter": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "CategoryValues", + "Column" + ], + "type": "object" + }, + "CategoryFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Configuration": { + "$ref": "#/definitions/CategoryFilterConfiguration" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "Column", + "Configuration", + "FilterId" + ], + "type": "object" + }, + "CategoryFilterConfiguration": { + "additionalProperties": false, + "properties": { + "CustomFilterConfiguration": { + "$ref": "#/definitions/CustomFilterConfiguration" + }, + "CustomFilterListConfiguration": { + "$ref": "#/definitions/CustomFilterListConfiguration" + }, + "FilterListConfiguration": { + "$ref": "#/definitions/FilterListConfiguration" + } + }, + "type": "object" + }, + "CategoryFilterMatchOperator": { + "enum": [ + "EQUALS", + "DOES_NOT_EQUAL", + "CONTAINS", + "DOES_NOT_CONTAIN", + "STARTS_WITH", + "ENDS_WITH" + ], + "type": "string" + }, + "CategoryFilterSelectAllOptions": { + "enum": [ + "FILTER_ALL_VALUES" + ], + "type": "string" + }, + "CategoryInnerFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Configuration": { + "$ref": "#/definitions/CategoryFilterConfiguration" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + } + }, + "required": [ + "Column", + "Configuration" + ], + "type": "object" + }, + "ChartAxisLabelOptions": { + "additionalProperties": false, + "properties": { + "AxisLabelOptions": { + "items": { + "$ref": "#/definitions/AxisLabelOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SortIconVisibility": {}, + "Visibility": {} + }, + "type": "object" + }, + "ClusterMarker": { + "additionalProperties": false, + "properties": { + "SimpleClusterMarker": { + "$ref": "#/definitions/SimpleClusterMarker" + } + }, + "type": "object" + }, + "ClusterMarkerConfiguration": { + "additionalProperties": false, + "properties": { + "ClusterMarker": { + "$ref": "#/definitions/ClusterMarker" + } + }, + "type": "object" + }, + "ColorFillType": { + "enum": [ + "DISCRETE", + "GRADIENT" + ], + "type": "string" + }, + "ColorScale": { + "additionalProperties": false, + "properties": { + "ColorFillType": { + "$ref": "#/definitions/ColorFillType" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DataColor" + }, + "maxItems": 3, + "minItems": 2, + "type": "array" + }, + "NullValueColor": { + "$ref": "#/definitions/DataColor" + } + }, + "required": [ + "ColorFillType", + "Colors" + ], + "type": "object" + }, + "ColorsConfiguration": { + "additionalProperties": false, + "properties": { + "CustomColors": { + "items": { + "$ref": "#/definitions/CustomColor" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ColumnConfiguration": { + "additionalProperties": false, + "properties": { + "ColorsConfiguration": { + "$ref": "#/definitions/ColorsConfiguration" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FormatConfiguration": { + "$ref": "#/definitions/FormatConfiguration" + }, + "Role": { + "$ref": "#/definitions/ColumnRole" + } + }, + "required": [ + "Column" + ], + "type": "object" + }, + "ColumnGroupColumnSchema": { + "additionalProperties": false, + "description": "

A structure describing the name, data type, and geographic role of the columns.

", + "properties": { + "Name": { + "description": "

The name of the column group's column schema.

", + "type": "string" + } + }, + "type": "object" + }, + "ColumnGroupSchema": { + "additionalProperties": false, + "description": "

The column group schema.

", + "properties": { + "ColumnGroupColumnSchemaList": { + "description": "

A structure containing the list of schemas for column group columns.

", + "items": { + "$ref": "#/definitions/ColumnGroupColumnSchema" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + }, + "Name": { + "description": "

The name of the column group schema.

", + "type": "string" + } + }, + "type": "object" + }, + "ColumnHierarchy": { + "additionalProperties": false, + "properties": { + "DateTimeHierarchy": { + "$ref": "#/definitions/DateTimeHierarchy" + }, + "ExplicitHierarchy": { + "$ref": "#/definitions/ExplicitHierarchy" + }, + "PredefinedHierarchy": { + "$ref": "#/definitions/PredefinedHierarchy" + } + }, + "type": "object" + }, + "ColumnIdentifier": { + "additionalProperties": false, + "properties": { + "ColumnName": { + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ColumnName", + "DataSetIdentifier" + ], + "type": "object" + }, + "ColumnRole": { + "enum": [ + "DIMENSION", + "MEASURE" + ], + "type": "string" + }, + "ColumnSchema": { + "additionalProperties": false, + "description": "

The column schema.

", + "properties": { + "DataType": { + "description": "

The data type of the column schema.

", + "type": "string" + }, + "GeographicRole": { + "description": "

The geographic role of the column schema.

", + "type": "string" + }, + "Name": { + "description": "

The name of the column schema.

", + "type": "string" + } + }, + "type": "object" + }, + "ColumnSort": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "SortBy": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "Direction", + "SortBy" + ], + "type": "object" + }, + "ColumnTooltipItem": { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Label": { + "type": "string" + }, + "TooltipTarget": { + "$ref": "#/definitions/TooltipTarget" + }, + "Visibility": {} + }, + "required": [ + "Column" + ], + "type": "object" + }, + "ComboChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "BarValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "LineValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ComboChartConfiguration": { + "additionalProperties": false, + "properties": { + "BarDataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "BarsArrangement": { + "$ref": "#/definitions/BarsArrangement" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/ComboChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "LineDataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SecondaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "SecondaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SingleAxisOptions": { + "$ref": "#/definitions/SingleAxisOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/ComboChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "ComboChartFieldWells": { + "additionalProperties": false, + "properties": { + "ComboChartAggregatedFieldWells": { + "$ref": "#/definitions/ComboChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "ComboChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ComboChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/ComboChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "CommitMode": { + "enum": [ + "AUTO", + "MANUAL" + ], + "type": "string" + }, + "ComparisonConfiguration": { + "additionalProperties": false, + "properties": { + "ComparisonFormat": { + "$ref": "#/definitions/ComparisonFormatConfiguration" + }, + "ComparisonMethod": { + "$ref": "#/definitions/ComparisonMethod" + } + }, + "type": "object" + }, + "ComparisonFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NumberDisplayFormatConfiguration": { + "$ref": "#/definitions/NumberDisplayFormatConfiguration" + }, + "PercentageDisplayFormatConfiguration": { + "$ref": "#/definitions/PercentageDisplayFormatConfiguration" + } + }, + "type": "object" + }, + "ComparisonMethod": { + "enum": [ + "DIFFERENCE", + "PERCENT_DIFFERENCE", + "PERCENT" + ], + "type": "string" + }, + "Computation": { + "additionalProperties": false, + "properties": { + "Forecast": { + "$ref": "#/definitions/ForecastComputation" + }, + "GrowthRate": { + "$ref": "#/definitions/GrowthRateComputation" + }, + "MaximumMinimum": { + "$ref": "#/definitions/MaximumMinimumComputation" + }, + "MetricComparison": { + "$ref": "#/definitions/MetricComparisonComputation" + }, + "PeriodOverPeriod": { + "$ref": "#/definitions/PeriodOverPeriodComputation" + }, + "PeriodToDate": { + "$ref": "#/definitions/PeriodToDateComputation" + }, + "TopBottomMovers": { + "$ref": "#/definitions/TopBottomMoversComputation" + }, + "TopBottomRanked": { + "$ref": "#/definitions/TopBottomRankedComputation" + }, + "TotalAggregation": { + "$ref": "#/definitions/TotalAggregationComputation" + }, + "UniqueValues": { + "$ref": "#/definitions/UniqueValuesComputation" + } + }, + "type": "object" + }, + "ConditionalFormattingColor": { + "additionalProperties": false, + "properties": { + "Gradient": { + "$ref": "#/definitions/ConditionalFormattingGradientColor" + }, + "Solid": { + "$ref": "#/definitions/ConditionalFormattingSolidColor" + } + }, + "type": "object" + }, + "ConditionalFormattingCustomIconCondition": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DisplayConfiguration": { + "$ref": "#/definitions/ConditionalFormattingIconDisplayConfiguration" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "IconOptions": { + "$ref": "#/definitions/ConditionalFormattingCustomIconOptions" + } + }, + "required": [ + "Expression", + "IconOptions" + ], + "type": "object" + }, + "ConditionalFormattingCustomIconOptions": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/Icon" + }, + "UnicodeIcon": { + "pattern": "^[^\\u0000-\\u00FF]$", + "type": "string" + } + }, + "type": "object" + }, + "ConditionalFormattingGradientColor": { + "additionalProperties": false, + "properties": { + "Color": { + "$ref": "#/definitions/GradientColor" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Color", + "Expression" + ], + "type": "object" + }, + "ConditionalFormattingIcon": { + "additionalProperties": false, + "properties": { + "CustomCondition": { + "$ref": "#/definitions/ConditionalFormattingCustomIconCondition" + }, + "IconSet": { + "$ref": "#/definitions/ConditionalFormattingIconSet" + } + }, + "type": "object" + }, + "ConditionalFormattingIconDisplayConfiguration": { + "additionalProperties": false, + "properties": { + "IconDisplayOption": { + "$ref": "#/definitions/ConditionalFormattingIconDisplayOption" + } + }, + "type": "object" + }, + "ConditionalFormattingIconDisplayOption": { + "enum": [ + "ICON_ONLY" + ], + "type": "string" + }, + "ConditionalFormattingIconSet": { + "additionalProperties": false, + "properties": { + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "IconSetType": { + "$ref": "#/definitions/ConditionalFormattingIconSetType" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "ConditionalFormattingIconSetType": { + "enum": [ + "PLUS_MINUS", + "CHECK_X", + "THREE_COLOR_ARROW", + "THREE_GRAY_ARROW", + "CARET_UP_MINUS_DOWN", + "THREE_SHAPE", + "THREE_CIRCLE", + "FLAGS", + "BARS", + "FOUR_COLOR_ARROW", + "FOUR_GRAY_ARROW" + ], + "type": "string" + }, + "ConditionalFormattingSolidColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "ContextMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "ContributionAnalysisDefault": { + "additionalProperties": false, + "properties": { + "ContributorDimensions": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "MeasureFieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ContributorDimensions", + "MeasureFieldId" + ], + "type": "object" + }, + "CrossDatasetTypes": { + "enum": [ + "ALL_DATASETS", + "SINGLE_DATASET" + ], + "type": "string" + }, + "CurrencyDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumberScale": { + "$ref": "#/definitions/NumberScale" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Symbol": { + "pattern": "^[A-Z]{3}$", + "type": "string" + } + }, + "type": "object" + }, + "CustomActionFilterOperation": { + "additionalProperties": false, + "properties": { + "SelectedFieldsConfiguration": { + "$ref": "#/definitions/FilterOperationSelectedFieldsConfiguration" + }, + "TargetVisualsConfiguration": { + "$ref": "#/definitions/FilterOperationTargetVisualsConfiguration" + } + }, + "required": [ + "SelectedFieldsConfiguration", + "TargetVisualsConfiguration" + ], + "type": "object" + }, + "CustomActionNavigationOperation": { + "additionalProperties": false, + "properties": { + "LocalNavigationConfiguration": { + "$ref": "#/definitions/LocalNavigationConfiguration" + } + }, + "type": "object" + }, + "CustomActionSetParametersOperation": { + "additionalProperties": false, + "properties": { + "ParameterValueConfigurations": { + "items": { + "$ref": "#/definitions/SetParameterValueConfiguration" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "ParameterValueConfigurations" + ], + "type": "object" + }, + "CustomActionURLOperation": { + "additionalProperties": false, + "properties": { + "URLTarget": { + "$ref": "#/definitions/URLTargetConfiguration" + }, + "URLTemplate": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "URLTarget", + "URLTemplate" + ], + "type": "object" + }, + "CustomColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "SpecialValue": { + "$ref": "#/definitions/SpecialValue" + } + }, + "required": [ + "Color" + ], + "type": "object" + }, + "CustomContentConfiguration": { + "additionalProperties": false, + "properties": { + "ContentType": { + "$ref": "#/definitions/CustomContentType" + }, + "ContentUrl": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ImageScaling": { + "$ref": "#/definitions/CustomContentImageScalingConfiguration" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + } + }, + "type": "object" + }, + "CustomContentImageScalingConfiguration": { + "enum": [ + "FIT_TO_HEIGHT", + "FIT_TO_WIDTH", + "DO_NOT_SCALE", + "SCALE_TO_VISUAL" + ], + "type": "string" + }, + "CustomContentType": { + "enum": [ + "IMAGE", + "OTHER_EMBEDDED_CONTENT" + ], + "type": "string" + }, + "CustomContentVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/CustomContentConfiguration" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "CustomFilterConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValue": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "CustomFilterListConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "CustomNarrativeOptions": { + "additionalProperties": false, + "properties": { + "Narrative": { + "maxLength": 150000, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Narrative" + ], + "type": "object" + }, + "CustomParameterValues": { + "additionalProperties": false, + "properties": { + "DateTimeValues": { + "items": { + "format": "date-time", + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "DecimalValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "IntegerValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + }, + "StringValues": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "CustomValuesConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValues": { + "$ref": "#/definitions/CustomParameterValues" + }, + "IncludeNullValue": { + "type": "boolean" + } + }, + "required": [ + "CustomValues" + ], + "type": "object" + }, + "DashboardBehavior": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "DataBarsOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "NegativeColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "PositiveColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "DataColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DataValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "DataFieldSeriesItem": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "type": "string" + }, + "Settings": { + "$ref": "#/definitions/LineChartSeriesSettings" + } + }, + "required": [ + "AxisBinding", + "FieldId" + ], + "type": "object" + }, + "DataLabelContent": { + "enum": [ + "VALUE", + "PERCENT", + "VALUE_AND_PERCENT" + ], + "type": "string" + }, + "DataLabelOptions": { + "additionalProperties": false, + "properties": { + "CategoryLabelVisibility": {}, + "DataLabelTypes": { + "items": { + "$ref": "#/definitions/DataLabelType" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "LabelColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "LabelContent": { + "$ref": "#/definitions/DataLabelContent" + }, + "LabelFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "MeasureLabelVisibility": {}, + "Overlap": { + "$ref": "#/definitions/DataLabelOverlap" + }, + "Position": { + "$ref": "#/definitions/DataLabelPosition" + }, + "TotalsVisibility": {}, + "Visibility": {} + }, + "type": "object" + }, + "DataLabelOverlap": { + "enum": [ + "DISABLE_OVERLAP", + "ENABLE_OVERLAP" + ], + "type": "string" + }, + "DataLabelPosition": { + "enum": [ + "INSIDE", + "OUTSIDE", + "LEFT", + "TOP", + "BOTTOM", + "RIGHT" + ], + "type": "string" + }, + "DataLabelType": { + "additionalProperties": false, + "properties": { + "DataPathLabelType": { + "$ref": "#/definitions/DataPathLabelType" + }, + "FieldLabelType": { + "$ref": "#/definitions/FieldLabelType" + }, + "MaximumLabelType": { + "$ref": "#/definitions/MaximumLabelType" + }, + "MinimumLabelType": { + "$ref": "#/definitions/MinimumLabelType" + }, + "RangeEndsLabelType": { + "$ref": "#/definitions/RangeEndsLabelType" + } + }, + "type": "object" + }, + "DataPathColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Element": { + "$ref": "#/definitions/DataPathValue" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Color", + "Element" + ], + "type": "object" + }, + "DataPathLabelType": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "Visibility": {} + }, + "type": "object" + }, + "DataPathSort": { + "additionalProperties": false, + "properties": { + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "SortPaths": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Direction", + "SortPaths" + ], + "type": "object" + }, + "DataPathType": { + "additionalProperties": false, + "properties": { + "PivotTableDataPathType": { + "$ref": "#/definitions/PivotTableDataPathType" + } + }, + "type": "object" + }, + "DataPathValue": { + "additionalProperties": false, + "properties": { + "DataPathType": { + "$ref": "#/definitions/DataPathType" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FieldValue": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "DataSetConfiguration": { + "additionalProperties": false, + "description": "

Dataset configuration.

", + "properties": { + "ColumnGroupSchemaList": { + "description": "

A structure containing the list of column group schemas.

", + "items": { + "$ref": "#/definitions/ColumnGroupSchema" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + }, + "DataSetSchema": { + "$ref": "#/definitions/DataSetSchema" + }, + "Placeholder": { + "description": "

Placeholder.

", + "type": "string" + } + }, + "type": "object" + }, + "DataSetReference": { + "additionalProperties": false, + "description": "

Dataset reference.

", + "properties": { + "DataSetArn": { + "description": "

Dataset Amazon Resource Name (ARN).

", + "type": "string" + }, + "DataSetPlaceholder": { + "description": "

Dataset placeholder.

", + "pattern": "\\S", + "type": "string" + } + }, + "required": [ + "DataSetArn", + "DataSetPlaceholder" + ], + "type": "object" + }, + "DataSetSchema": { + "additionalProperties": false, + "description": "

Dataset schema.

", + "properties": { + "ColumnSchemaList": { + "description": "

A structure containing the list of column schemas.

", + "items": { + "$ref": "#/definitions/ColumnSchema" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DateAggregationFunction": { + "enum": [ + "COUNT", + "DISTINCT_COUNT", + "MIN", + "MAX" + ], + "type": "string" + }, + "DateAxisOptions": { + "additionalProperties": false, + "properties": { + "MissingDateVisibility": {} + }, + "type": "object" + }, + "DateDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DateGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "DateMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/DateAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "DateTimeDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "StaticValues": { + "items": { + "format": "date-time", + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DateTimeFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumericFormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "DateTimeHierarchy": { + "additionalProperties": false, + "properties": { + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "HierarchyId" + ], + "type": "object" + }, + "DateTimeParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/DateTimeDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/DateTimeValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "DateTimePickerControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "DateIconVisibility": {}, + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "HelperTextVisibility": {}, + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "DateTimeValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "format": "date-time", + "type": "string" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "DayOfTheWeek": { + "enum": [ + "SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY" + ], + "type": "string" + }, + "DecimalDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "DecimalParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/DecimalDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/DecimalValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "DecimalPlacesConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlaces": { + "maximum": 20, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "DecimalPlaces" + ], + "type": "object" + }, + "DecimalValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "default": null, + "type": "number" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "DefaultDateTimePickerControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "Type": { + "$ref": "#/definitions/SheetControlDateTimePickerType" + } + }, + "type": "object" + }, + "DefaultFilterControlConfiguration": { + "additionalProperties": false, + "properties": { + "ControlOptions": { + "$ref": "#/definitions/DefaultFilterControlOptions" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ControlOptions", + "Title" + ], + "type": "object" + }, + "DefaultFilterControlOptions": { + "additionalProperties": false, + "properties": { + "DefaultDateTimePickerOptions": { + "$ref": "#/definitions/DefaultDateTimePickerControlOptions" + }, + "DefaultDropdownOptions": { + "$ref": "#/definitions/DefaultFilterDropDownControlOptions" + }, + "DefaultListOptions": { + "$ref": "#/definitions/DefaultFilterListControlOptions" + }, + "DefaultRelativeDateTimeOptions": { + "$ref": "#/definitions/DefaultRelativeDateTimeControlOptions" + }, + "DefaultSliderOptions": { + "$ref": "#/definitions/DefaultSliderControlOptions" + }, + "DefaultTextAreaOptions": { + "$ref": "#/definitions/DefaultTextAreaControlOptions" + }, + "DefaultTextFieldOptions": { + "$ref": "#/definitions/DefaultTextFieldControlOptions" + } + }, + "type": "object" + }, + "DefaultFilterDropDownControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "type": "object" + }, + "DefaultFilterListControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "type": "object" + }, + "DefaultFreeFormLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultGridLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultInteractiveLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "FreeForm": { + "$ref": "#/definitions/DefaultFreeFormLayoutConfiguration" + }, + "Grid": { + "$ref": "#/definitions/DefaultGridLayoutConfiguration" + } + }, + "type": "object" + }, + "DefaultNewSheetConfiguration": { + "additionalProperties": false, + "properties": { + "InteractiveLayoutConfiguration": { + "$ref": "#/definitions/DefaultInteractiveLayoutConfiguration" + }, + "PaginatedLayoutConfiguration": { + "$ref": "#/definitions/DefaultPaginatedLayoutConfiguration" + }, + "SheetContentType": { + "$ref": "#/definitions/SheetContentType" + } + }, + "type": "object" + }, + "DefaultPaginatedLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "SectionBased": { + "$ref": "#/definitions/DefaultSectionBasedLayoutConfiguration" + } + }, + "type": "object" + }, + "DefaultRelativeDateTimeControlOptions": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" + } + }, + "type": "object" + }, + "DefaultSectionBasedLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/SectionBasedLayoutCanvasSizeOptions" + } + }, + "required": [ + "CanvasSizeOptions" + ], + "type": "object" + }, + "DefaultSliderControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Type": { + "$ref": "#/definitions/SheetControlSliderType" + } + }, + "required": [ + "MaximumValue", + "MinimumValue", + "StepSize" + ], + "type": "object" + }, + "DefaultTextAreaControlOptions": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + } + }, + "type": "object" + }, + "DefaultTextFieldControlOptions": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + } + }, + "type": "object" + }, + "DestinationParameterValueConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValuesConfiguration": { + "$ref": "#/definitions/CustomValuesConfiguration" + }, + "SelectAllValueOptions": { + "$ref": "#/definitions/SelectAllValueOptions" + }, + "SourceColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "SourceField": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "SourceParameterName": { + "type": "string" + } + }, + "type": "object" + }, + "DigitGroupingStyle": { + "enum": [ + "DEFAULT", + "LAKHS" + ], + "type": "string" + }, + "DimensionField": { + "additionalProperties": false, + "properties": { + "CategoricalDimensionField": { + "$ref": "#/definitions/CategoricalDimensionField" + }, + "DateDimensionField": { + "$ref": "#/definitions/DateDimensionField" + }, + "NumericalDimensionField": { + "$ref": "#/definitions/NumericalDimensionField" + } + }, + "type": "object" + }, + "DonutCenterOptions": { + "additionalProperties": false, + "properties": { + "LabelVisibility": {} + }, + "type": "object" + }, + "DonutOptions": { + "additionalProperties": false, + "properties": { + "ArcOptions": { + "$ref": "#/definitions/ArcOptions" + }, + "DonutCenterOptions": { + "$ref": "#/definitions/DonutCenterOptions" + } + }, + "type": "object" + }, + "DrillDownFilter": { + "additionalProperties": false, + "properties": { + "CategoryFilter": { + "$ref": "#/definitions/CategoryDrillDownFilter" + }, + "NumericEqualityFilter": { + "$ref": "#/definitions/NumericEqualityDrillDownFilter" + }, + "TimeRangeFilter": { + "$ref": "#/definitions/TimeRangeDrillDownFilter" + } + }, + "type": "object" + }, + "DropDownControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "SelectAllOptions": { + "$ref": "#/definitions/ListControlSelectAllOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "DynamicDefaultValue": { + "additionalProperties": false, + "properties": { + "DefaultValueColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "GroupNameColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "UserNameColumn": { + "$ref": "#/definitions/ColumnIdentifier" + } + }, + "required": [ + "DefaultValueColumn" + ], + "type": "object" + }, + "EmptyVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "Entity": { + "additionalProperties": false, + "properties": { + "Path": { + "pattern": "\\S", + "type": "string" + } + }, + "type": "object" + }, + "ExcludePeriodConfiguration": { + "additionalProperties": false, + "properties": { + "Amount": { + "default": null, + "type": "number" + }, + "Granularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + } + }, + "required": [ + "Amount", + "Granularity" + ], + "type": "object" + }, + "ExplicitHierarchy": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Columns", + "HierarchyId" + ], + "type": "object" + }, + "FieldBasedTooltip": { + "additionalProperties": false, + "properties": { + "AggregationVisibility": {}, + "TooltipFields": { + "items": { + "$ref": "#/definitions/TooltipItem" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "TooltipTitleType": { + "$ref": "#/definitions/TooltipTitleType" + } + }, + "type": "object" + }, + "FieldLabelType": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Visibility": {} + }, + "type": "object" + }, + "FieldSeriesItem": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Settings": { + "$ref": "#/definitions/LineChartSeriesSettings" + } + }, + "required": [ + "AxisBinding", + "FieldId" + ], + "type": "object" + }, + "FieldSort": { + "additionalProperties": false, + "properties": { + "Direction": { + "$ref": "#/definitions/SortDirection" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Direction", + "FieldId" + ], + "type": "object" + }, + "FieldSortOptions": { + "additionalProperties": false, + "properties": { + "ColumnSort": { + "$ref": "#/definitions/ColumnSort" + }, + "FieldSort": { + "$ref": "#/definitions/FieldSort" + } + }, + "type": "object" + }, + "FieldTooltipItem": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Label": { + "type": "string" + }, + "TooltipTarget": { + "$ref": "#/definitions/TooltipTarget" + }, + "Visibility": {} + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "FilledMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Geospatial": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilledMapConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/FilledMapConditionalFormattingOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "ConditionalFormattingOptions" + ], + "type": "object" + }, + "FilledMapConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Shape": { + "$ref": "#/definitions/FilledMapShapeConditionalFormatting" + } + }, + "required": [ + "Shape" + ], + "type": "object" + }, + "FilledMapConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/FilledMapFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "MapStyleOptions": { + "$ref": "#/definitions/GeospatialMapStyleOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/FilledMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "WindowOptions": { + "$ref": "#/definitions/GeospatialWindowOptions" + } + }, + "type": "object" + }, + "FilledMapFieldWells": { + "additionalProperties": false, + "properties": { + "FilledMapAggregatedFieldWells": { + "$ref": "#/definitions/FilledMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "FilledMapShapeConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Format": { + "$ref": "#/definitions/ShapeConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "FilledMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilledMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/FilledMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/FilledMapConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "CategoryFilter": { + "$ref": "#/definitions/CategoryFilter" + }, + "NestedFilter": { + "$ref": "#/definitions/NestedFilter" + }, + "NumericEqualityFilter": { + "$ref": "#/definitions/NumericEqualityFilter" + }, + "NumericRangeFilter": { + "$ref": "#/definitions/NumericRangeFilter" + }, + "RelativeDatesFilter": { + "$ref": "#/definitions/RelativeDatesFilter" + }, + "TimeEqualityFilter": { + "$ref": "#/definitions/TimeEqualityFilter" + }, + "TimeRangeFilter": { + "$ref": "#/definitions/TimeRangeFilter" + }, + "TopBottomFilter": { + "$ref": "#/definitions/TopBottomFilter" + } + }, + "type": "object" + }, + "FilterControl": { + "additionalProperties": false, + "properties": { + "CrossSheet": { + "$ref": "#/definitions/FilterCrossSheetControl" + }, + "DateTimePicker": { + "$ref": "#/definitions/FilterDateTimePickerControl" + }, + "Dropdown": { + "$ref": "#/definitions/FilterDropDownControl" + }, + "List": { + "$ref": "#/definitions/FilterListControl" + }, + "RelativeDateTime": { + "$ref": "#/definitions/FilterRelativeDateTimeControl" + }, + "Slider": { + "$ref": "#/definitions/FilterSliderControl" + }, + "TextArea": { + "$ref": "#/definitions/FilterTextAreaControl" + }, + "TextField": { + "$ref": "#/definitions/FilterTextFieldControl" + } + }, + "type": "object" + }, + "FilterCrossSheetControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId" + ], + "type": "object" + }, + "FilterDateTimePickerControl": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlDateTimePickerType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterDropDownControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterGroup": { + "additionalProperties": false, + "properties": { + "CrossDataset": { + "$ref": "#/definitions/CrossDatasetTypes" + }, + "FilterGroupId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "ScopeConfiguration": { + "$ref": "#/definitions/FilterScopeConfiguration" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + } + }, + "required": [ + "CrossDataset", + "FilterGroupId", + "Filters", + "ScopeConfiguration" + ], + "type": "object" + }, + "FilterListConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryValues": { + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "maxItems": 100000, + "minItems": 0, + "type": "array" + }, + "MatchOperator": { + "$ref": "#/definitions/CategoryFilterMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "SelectAllOptions": { + "$ref": "#/definitions/CategoryFilterSelectAllOptions" + } + }, + "required": [ + "MatchOperator" + ], + "type": "object" + }, + "FilterListControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/FilterSelectableValues" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterNullOption": { + "enum": [ + "ALL_VALUES", + "NULLS_ONLY", + "NON_NULLS_ONLY" + ], + "type": "string" + }, + "FilterOperationSelectedFieldsConfiguration": { + "additionalProperties": false, + "properties": { + "SelectedColumns": { + "description": "

The selected columns of a dataset.

", + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "SelectedFieldOptions": { + "$ref": "#/definitions/SelectedFieldOptions" + }, + "SelectedFields": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "FilterOperationTargetVisualsConfiguration": { + "additionalProperties": false, + "properties": { + "SameSheetTargetVisualConfiguration": { + "$ref": "#/definitions/SameSheetTargetVisualConfiguration" + } + }, + "type": "object" + }, + "FilterRelativeDateTimeControl": { + "additionalProperties": false, + "properties": { + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/RelativeDateTimeControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterScopeConfiguration": { + "additionalProperties": false, + "properties": { + "AllSheets": { + "$ref": "#/definitions/AllSheetsFilterScopeConfiguration" + }, + "SelectedSheets": { + "$ref": "#/definitions/SelectedSheetsFilterScopeConfiguration" + } + }, + "type": "object" + }, + "FilterSelectableValues": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FilterSliderControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlSliderType" + } + }, + "required": [ + "FilterControlId", + "MaximumValue", + "MinimumValue", + "SourceFilterId", + "StepSize", + "Title" + ], + "type": "object" + }, + "FilterTextAreaControl": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterTextFieldControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + }, + "FilterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceFilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "FilterControlId", + "SourceFilterId", + "Title" + ], + "type": "object" + }, + "FilterVisualScope": { + "enum": [ + "ALL_VISUALS", + "SELECTED_VISUALS" + ], + "type": "string" + }, + "FontConfiguration": { + "additionalProperties": false, + "properties": { + "FontColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FontDecoration": { + "$ref": "#/definitions/FontDecoration" + }, + "FontFamily": { + "type": "string" + }, + "FontSize": { + "$ref": "#/definitions/FontSize" + }, + "FontStyle": { + "$ref": "#/definitions/FontStyle" + }, + "FontWeight": { + "$ref": "#/definitions/FontWeight" + } + }, + "type": "object" + }, + "FontDecoration": { + "enum": [ + "UNDERLINE", + "NONE" + ], + "type": "string" + }, + "FontSize": { + "additionalProperties": false, + "properties": { + "Absolute": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "Relative": { + "$ref": "#/definitions/RelativeFontSize" + } + }, + "type": "object" + }, + "FontStyle": { + "enum": [ + "NORMAL", + "ITALIC" + ], + "type": "string" + }, + "FontWeight": { + "additionalProperties": false, + "properties": { + "Name": { + "$ref": "#/definitions/FontWeightName" + } + }, + "type": "object" + }, + "FontWeightName": { + "enum": [ + "NORMAL", + "BOLD" + ], + "type": "string" + }, + "ForecastComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "CustomSeasonalityValue": { + "default": null, + "maximum": 180, + "minimum": 1, + "type": "number" + }, + "LowerBoundary": { + "default": null, + "type": "number" + }, + "Name": { + "type": "string" + }, + "PeriodsBackward": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "PeriodsForward": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "PredictionInterval": { + "maximum": 95, + "minimum": 50, + "type": "number" + }, + "Seasonality": { + "$ref": "#/definitions/ForecastComputationSeasonality" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "UpperBoundary": { + "default": null, + "type": "number" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "ForecastComputationSeasonality": { + "enum": [ + "AUTOMATIC", + "CUSTOM" + ], + "type": "string" + }, + "ForecastConfiguration": { + "additionalProperties": false, + "properties": { + "ForecastProperties": { + "$ref": "#/definitions/TimeBasedForecastProperties" + }, + "Scenario": { + "$ref": "#/definitions/ForecastScenario" + } + }, + "type": "object" + }, + "ForecastScenario": { + "additionalProperties": false, + "properties": { + "WhatIfPointScenario": { + "$ref": "#/definitions/WhatIfPointScenario" + }, + "WhatIfRangeScenario": { + "$ref": "#/definitions/WhatIfRangeScenario" + } + }, + "type": "object" + }, + "FormatConfiguration": { + "additionalProperties": false, + "properties": { + "DateTimeFormatConfiguration": { + "$ref": "#/definitions/DateTimeFormatConfiguration" + }, + "NumberFormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + }, + "StringFormatConfiguration": { + "$ref": "#/definitions/StringFormatConfiguration" + } + }, + "type": "object" + }, + "FreeFormLayoutCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "ScreenCanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutScreenCanvasSizeOptions" + } + }, + "type": "object" + }, + "FreeFormLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/FreeFormLayoutCanvasSizeOptions" + }, + "Elements": { + "items": { + "$ref": "#/definitions/FreeFormLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "FreeFormLayoutElement": { + "additionalProperties": false, + "properties": { + "BackgroundStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBackgroundStyle" + }, + "BorderStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" + }, + "ElementId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ElementType": { + "$ref": "#/definitions/LayoutElementType" + }, + "Height": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "LoadingAnimation": { + "$ref": "#/definitions/LoadingAnimation" + }, + "RenderingRules": { + "items": { + "$ref": "#/definitions/SheetElementRenderingRule" + }, + "maxItems": 10000, + "minItems": 0, + "type": "array" + }, + "SelectedBorderStyle": { + "$ref": "#/definitions/FreeFormLayoutElementBorderStyle" + }, + "Visibility": {}, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "XAxisLocation": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "YAxisLocation": { + "description": "String based length that is composed of value and unit in px with Integer.MAX_VALUE as maximum value", + "type": "string" + } + }, + "required": [ + "ElementId", + "ElementType", + "Height", + "Width", + "XAxisLocation", + "YAxisLocation" + ], + "type": "object" + }, + "FreeFormLayoutElementBackgroundStyle": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "Visibility": {} + }, + "type": "object" + }, + "FreeFormLayoutElementBorderStyle": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "Visibility": {} + }, + "type": "object" + }, + "FreeFormLayoutScreenCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "OptimizedViewPortWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "OptimizedViewPortWidth" + ], + "type": "object" + }, + "FreeFormSectionLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "Elements": { + "items": { + "$ref": "#/definitions/FreeFormLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "FunnelChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FunnelChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "DataLabelOptions": { + "$ref": "#/definitions/FunnelChartDataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/FunnelChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/FunnelChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "FunnelChartDataLabelOptions": { + "additionalProperties": false, + "properties": { + "CategoryLabelVisibility": {}, + "LabelColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "LabelFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "MeasureDataLabelStyle": { + "$ref": "#/definitions/FunnelChartMeasureDataLabelStyle" + }, + "MeasureLabelVisibility": {}, + "Position": { + "$ref": "#/definitions/DataLabelPosition" + }, + "Visibility": {} + }, + "type": "object" + }, + "FunnelChartFieldWells": { + "additionalProperties": false, + "properties": { + "FunnelChartAggregatedFieldWells": { + "$ref": "#/definitions/FunnelChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "FunnelChartMeasureDataLabelStyle": { + "enum": [ + "VALUE_ONLY", + "PERCENTAGE_BY_FIRST_STAGE", + "PERCENTAGE_BY_PREVIOUS_STAGE", + "VALUE_AND_PERCENTAGE_BY_FIRST_STAGE", + "VALUE_AND_PERCENTAGE_BY_PREVIOUS_STAGE" + ], + "type": "string" + }, + "FunnelChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "FunnelChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/FunnelChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GaugeChartArcConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ForegroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "GaugeChartColorConfiguration": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "ForegroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "type": "object" + }, + "GaugeChartConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/GaugeChartConditionalFormattingOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GaugeChartConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Arc": { + "$ref": "#/definitions/GaugeChartArcConditionalFormatting" + }, + "PrimaryValue": { + "$ref": "#/definitions/GaugeChartPrimaryValueConditionalFormatting" + } + }, + "type": "object" + }, + "GaugeChartConfiguration": { + "additionalProperties": false, + "properties": { + "ColorConfiguration": { + "$ref": "#/definitions/GaugeChartColorConfiguration" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/GaugeChartFieldWells" + }, + "GaugeChartOptions": { + "$ref": "#/definitions/GaugeChartOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "TooltipOptions": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "GaugeChartFieldWells": { + "additionalProperties": false, + "properties": { + "TargetValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GaugeChartOptions": { + "additionalProperties": false, + "properties": { + "Arc": { + "$ref": "#/definitions/ArcConfiguration" + }, + "ArcAxis": { + "$ref": "#/definitions/ArcAxisConfiguration" + }, + "Comparison": { + "$ref": "#/definitions/ComparisonConfiguration" + }, + "PrimaryValueDisplayType": { + "$ref": "#/definitions/PrimaryValueDisplayType" + }, + "PrimaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + } + }, + "type": "object" + }, + "GaugeChartPrimaryValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "GaugeChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/GaugeChartConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/GaugeChartConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GeospatialCoordinateBounds": { + "additionalProperties": false, + "properties": { + "East": { + "maximum": 1800, + "minimum": -1800, + "type": "number" + }, + "North": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "South": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "West": { + "maximum": 1800, + "minimum": -1800, + "type": "number" + } + }, + "required": [ + "East", + "North", + "South", + "West" + ], + "type": "object" + }, + "GeospatialHeatmapColorScale": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/GeospatialHeatmapDataColor" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + } + }, + "type": "object" + }, + "GeospatialHeatmapConfiguration": { + "additionalProperties": false, + "properties": { + "HeatmapColor": { + "$ref": "#/definitions/GeospatialHeatmapColorScale" + } + }, + "type": "object" + }, + "GeospatialHeatmapDataColor": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "required": [ + "Color" + ], + "type": "object" + }, + "GeospatialMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Geospatial": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GeospatialMapConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/GeospatialMapFieldWells" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "MapStyleOptions": { + "$ref": "#/definitions/GeospatialMapStyleOptions" + }, + "PointStyleOptions": { + "$ref": "#/definitions/GeospatialPointStyleOptions" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "WindowOptions": { + "$ref": "#/definitions/GeospatialWindowOptions" + } + }, + "type": "object" + }, + "GeospatialMapFieldWells": { + "additionalProperties": false, + "properties": { + "GeospatialMapAggregatedFieldWells": { + "$ref": "#/definitions/GeospatialMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "GeospatialMapStyleOptions": { + "additionalProperties": false, + "properties": { + "BaseMapStyle": { + "$ref": "#/definitions/BaseMapStyleType" + } + }, + "type": "object" + }, + "GeospatialMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/GeospatialMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "GeospatialNullDataSettings": { + "additionalProperties": false, + "properties": { + "SymbolStyle": { + "$ref": "#/definitions/GeospatialNullSymbolStyle" + } + }, + "required": [ + "SymbolStyle" + ], + "type": "object" + }, + "GeospatialNullSymbolStyle": { + "additionalProperties": false, + "properties": { + "FillColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "StrokeColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "StrokeWidth": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "GeospatialPointLayer": { + "additionalProperties": false, + "properties": { + "Style": { + "$ref": "#/definitions/GeospatialPointStyle" + } + }, + "required": [ + "Style" + ], + "type": "object" + }, + "GeospatialPointStyle": { + "additionalProperties": false, + "properties": { + "CircleSymbolStyle": {} + }, + "type": "object" + }, + "GeospatialPointStyleOptions": { + "additionalProperties": false, + "properties": { + "ClusterMarkerConfiguration": { + "$ref": "#/definitions/ClusterMarkerConfiguration" + }, + "HeatmapConfiguration": { + "$ref": "#/definitions/GeospatialHeatmapConfiguration" + }, + "SelectedPointStyle": { + "$ref": "#/definitions/GeospatialSelectedPointStyle" + } + }, + "type": "object" + }, + "GeospatialPolygonLayer": { + "additionalProperties": false, + "properties": { + "Style": { + "$ref": "#/definitions/GeospatialPolygonStyle" + } + }, + "required": [ + "Style" + ], + "type": "object" + }, + "GeospatialPolygonStyle": { + "additionalProperties": false, + "properties": { + "PolygonSymbolStyle": { + "$ref": "#/definitions/GeospatialPolygonSymbolStyle" + } + }, + "type": "object" + }, + "GeospatialPolygonSymbolStyle": { + "additionalProperties": false, + "properties": { + "FillColor": {}, + "StrokeColor": {}, + "StrokeWidth": {} + }, + "type": "object" + }, + "GeospatialSelectedPointStyle": { + "enum": [ + "POINT", + "CLUSTER", + "HEATMAP" + ], + "type": "string" + }, + "GeospatialSolidColor": { + "additionalProperties": false, + "description": "Describes the properties for a solid color", + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "State": {} + }, + "required": [ + "Color" + ], + "type": "object" + }, + "GeospatialStaticFileSource": { + "additionalProperties": false, + "properties": { + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "GeospatialWindowOptions": { + "additionalProperties": false, + "properties": { + "Bounds": { + "$ref": "#/definitions/GeospatialCoordinateBounds" + }, + "MapZoomMode": { + "$ref": "#/definitions/MapZoomMode" + } + }, + "type": "object" + }, + "GlobalTableBorderOptions": { + "additionalProperties": false, + "properties": { + "SideSpecificBorder": { + "$ref": "#/definitions/TableSideBorderOptions" + }, + "UniformBorder": { + "$ref": "#/definitions/TableBorderOptions" + } + }, + "type": "object" + }, + "GradientColor": { + "additionalProperties": false, + "properties": { + "Stops": { + "items": { + "$ref": "#/definitions/GradientStop" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "GradientStop": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DataValue": { + "default": null, + "type": "number" + }, + "GradientOffset": { + "default": 0, + "type": "number" + } + }, + "required": [ + "GradientOffset" + ], + "type": "object" + }, + "GridLayoutCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "ScreenCanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutScreenCanvasSizeOptions" + } + }, + "type": "object" + }, + "GridLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "CanvasSizeOptions": { + "$ref": "#/definitions/GridLayoutCanvasSizeOptions" + }, + "Elements": { + "items": { + "$ref": "#/definitions/GridLayoutElement" + }, + "maxItems": 430, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Elements" + ], + "type": "object" + }, + "GridLayoutElement": { + "additionalProperties": false, + "properties": { + "ColumnIndex": { + "maximum": 35, + "minimum": 0, + "type": "number" + }, + "ColumnSpan": { + "maximum": 36, + "minimum": 1, + "type": "number" + }, + "ElementId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ElementType": { + "$ref": "#/definitions/LayoutElementType" + }, + "RowIndex": { + "maximum": 9009, + "minimum": 0, + "type": "number" + }, + "RowSpan": { + "maximum": 21, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "ColumnSpan", + "ElementId", + "ElementType", + "RowSpan" + ], + "type": "object" + }, + "GridLayoutScreenCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "OptimizedViewPortWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "ResizeOption": { + "$ref": "#/definitions/ResizeOption" + } + }, + "required": [ + "ResizeOption" + ], + "type": "object" + }, + "GrowthRateComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "PeriodSize": { + "default": 0, + "maximum": 52, + "minimum": 2, + "type": "number" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "HeaderFooterSectionConfiguration": { + "additionalProperties": false, + "properties": { + "Layout": { + "$ref": "#/definitions/SectionLayoutConfiguration" + }, + "SectionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/SectionStyle" + } + }, + "required": [ + "Layout", + "SectionId" + ], + "type": "object" + }, + "HeatMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Rows": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HeatMapConfiguration": { + "additionalProperties": false, + "properties": { + "ColorScale": { + "$ref": "#/definitions/ColorScale" + }, + "ColumnLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/HeatMapFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "RowLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/HeatMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + } + }, + "type": "object" + }, + "HeatMapFieldWells": { + "additionalProperties": false, + "properties": { + "HeatMapAggregatedFieldWells": { + "$ref": "#/definitions/HeatMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "HeatMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "HeatMapColumnItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "HeatMapColumnSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "HeatMapRowItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "HeatMapRowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HeatMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/HeatMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "HistogramAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "HistogramBinOptions": { + "additionalProperties": false, + "properties": { + "BinCount": { + "$ref": "#/definitions/BinCountOptions" + }, + "BinWidth": { + "$ref": "#/definitions/BinWidthOptions" + }, + "SelectedBinType": { + "$ref": "#/definitions/HistogramBinType" + }, + "StartValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "HistogramBinType": { + "enum": [ + "BIN_COUNT", + "BIN_WIDTH" + ], + "type": "string" + }, + "HistogramConfiguration": { + "additionalProperties": false, + "properties": { + "BinOptions": { + "$ref": "#/definitions/HistogramBinOptions" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/HistogramFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "XAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "XAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "YAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + } + }, + "type": "object" + }, + "HistogramFieldWells": { + "additionalProperties": false, + "properties": { + "HistogramAggregatedFieldWells": { + "$ref": "#/definitions/HistogramAggregatedFieldWells" + } + }, + "type": "object" + }, + "HistogramVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/HistogramConfiguration" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "HorizontalTextAlignment": { + "enum": [ + "LEFT", + "CENTER", + "RIGHT", + "AUTO" + ], + "type": "string" + }, + "Icon": { + "enum": [ + "CARET_UP", + "CARET_DOWN", + "PLUS", + "MINUS", + "ARROW_UP", + "ARROW_DOWN", + "ARROW_LEFT", + "ARROW_UP_LEFT", + "ARROW_DOWN_LEFT", + "ARROW_RIGHT", + "ARROW_UP_RIGHT", + "ARROW_DOWN_RIGHT", + "FACE_UP", + "FACE_DOWN", + "FACE_FLAT", + "ONE_BAR", + "TWO_BAR", + "THREE_BAR", + "CIRCLE", + "TRIANGLE", + "SQUARE", + "FLAG", + "THUMBS_UP", + "THUMBS_DOWN", + "CHECKMARK", + "X" + ], + "type": "string" + }, + "ImageCustomAction": { + "additionalProperties": false, + "properties": { + "ActionOperations": { + "items": { + "$ref": "#/definitions/ImageCustomActionOperation" + }, + "maxItems": 2, + "minItems": 1, + "type": "array" + }, + "CustomActionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "Trigger": { + "$ref": "#/definitions/ImageCustomActionTrigger" + } + }, + "required": [ + "ActionOperations", + "CustomActionId", + "Name", + "Trigger" + ], + "type": "object" + }, + "ImageCustomActionOperation": { + "additionalProperties": false, + "properties": { + "NavigationOperation": { + "$ref": "#/definitions/CustomActionNavigationOperation" + }, + "SetParametersOperation": { + "$ref": "#/definitions/CustomActionSetParametersOperation" + }, + "URLOperation": { + "$ref": "#/definitions/CustomActionURLOperation" + } + }, + "type": "object" + }, + "ImageCustomActionTrigger": { + "enum": [ + "CLICK", + "MENU" + ], + "type": "string" + }, + "ImageInteractionOptions": { + "additionalProperties": false, + "properties": { + "ImageMenuOption": { + "$ref": "#/definitions/ImageMenuOption" + } + }, + "type": "object" + }, + "ImageMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "ImageStaticFile": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/StaticFileSource" + }, + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "InnerFilter": { + "additionalProperties": false, + "properties": { + "CategoryInnerFilter": { + "$ref": "#/definitions/CategoryInnerFilter" + } + }, + "type": "object" + }, + "InsightConfiguration": { + "additionalProperties": false, + "properties": { + "Computations": { + "items": { + "$ref": "#/definitions/Computation" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "CustomNarrative": { + "$ref": "#/definitions/CustomNarrativeOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + } + }, + "type": "object" + }, + "InsightVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "InsightConfiguration": { + "$ref": "#/definitions/InsightConfiguration" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "IntegerDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "number" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "IntegerParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/IntegerDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/IntegerValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "IntegerValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "default": null, + "type": "number" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "ItemsLimitConfiguration": { + "additionalProperties": false, + "properties": { + "ItemsLimit": { + "default": null, + "type": "number" + }, + "OtherCategories": { + "$ref": "#/definitions/OtherCategories" + } + }, + "type": "object" + }, + "KPIActualValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIComparisonValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/KPIConditionalFormattingOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPIConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "ActualValue": { + "$ref": "#/definitions/KPIActualValueConditionalFormatting" + }, + "ComparisonValue": { + "$ref": "#/definitions/KPIComparisonValueConditionalFormatting" + }, + "PrimaryValue": { + "$ref": "#/definitions/KPIPrimaryValueConditionalFormatting" + }, + "ProgressBar": { + "$ref": "#/definitions/KPIProgressBarConditionalFormatting" + } + }, + "type": "object" + }, + "KPIConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "$ref": "#/definitions/KPIFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "KPIOptions": { + "$ref": "#/definitions/KPIOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/KPISortConfiguration" + } + }, + "type": "object" + }, + "KPIFieldWells": { + "additionalProperties": false, + "properties": { + "TargetValues": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TrendGroups": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPIOptions": { + "additionalProperties": false, + "properties": { + "Comparison": { + "$ref": "#/definitions/ComparisonConfiguration" + }, + "PrimaryValueDisplayType": { + "$ref": "#/definitions/PrimaryValueDisplayType" + }, + "PrimaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "ProgressBar": { + "$ref": "#/definitions/ProgressBarOptions" + }, + "SecondaryValue": { + "$ref": "#/definitions/SecondaryValueOptions" + }, + "SecondaryValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Sparkline": { + "$ref": "#/definitions/KPISparklineOptions" + }, + "TrendArrows": { + "$ref": "#/definitions/TrendArrowOptions" + }, + "VisualLayoutOptions": { + "$ref": "#/definitions/KPIVisualLayoutOptions" + } + }, + "type": "object" + }, + "KPIPrimaryValueConditionalFormatting": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPIProgressBarConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ForegroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "KPISortConfiguration": { + "additionalProperties": false, + "properties": { + "TrendGroupSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "KPISparklineOptions": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "TooltipVisibility": {}, + "Type": { + "$ref": "#/definitions/KPISparklineType" + }, + "Visibility": {} + }, + "required": [ + "Type" + ], + "type": "object" + }, + "KPISparklineType": { + "enum": [ + "LINE", + "AREA" + ], + "type": "string" + }, + "KPIVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/KPIConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/KPIConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "KPIVisualLayoutOptions": { + "additionalProperties": false, + "properties": { + "StandardLayout": { + "$ref": "#/definitions/KPIVisualStandardLayout" + } + }, + "type": "object" + }, + "KPIVisualStandardLayout": { + "additionalProperties": false, + "properties": { + "Type": { + "$ref": "#/definitions/KPIVisualStandardLayoutType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "KPIVisualStandardLayoutType": { + "enum": [ + "CLASSIC", + "VERTICAL" + ], + "type": "string" + }, + "LabelOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Visibility": {} + }, + "type": "object" + }, + "LayerCustomAction": { + "additionalProperties": false, + "properties": { + "ActionOperations": { + "items": { + "$ref": "#/definitions/LayerCustomActionOperation" + }, + "maxItems": 2, + "minItems": 1, + "type": "array" + }, + "CustomActionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "Trigger": { + "$ref": "#/definitions/LayerCustomActionTrigger" + } + }, + "required": [ + "ActionOperations", + "CustomActionId", + "Name", + "Trigger" + ], + "type": "object" + }, + "LayerCustomActionOperation": { + "additionalProperties": false, + "properties": { + "FilterOperation": { + "$ref": "#/definitions/CustomActionFilterOperation" + }, + "NavigationOperation": { + "$ref": "#/definitions/CustomActionNavigationOperation" + }, + "SetParametersOperation": { + "$ref": "#/definitions/CustomActionSetParametersOperation" + }, + "URLOperation": { + "$ref": "#/definitions/CustomActionURLOperation" + } + }, + "type": "object" + }, + "LayerCustomActionTrigger": { + "enum": [ + "DATA_POINT_CLICK", + "DATA_POINT_MENU" + ], + "type": "string" + }, + "LayerMapVisual": { + "additionalProperties": false, + "properties": { + "ChartConfiguration": {}, + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "VisualId" + ], + "type": "object" + }, + "Layout": { + "additionalProperties": false, + "properties": { + "Configuration": { + "$ref": "#/definitions/LayoutConfiguration" + } + }, + "required": [ + "Configuration" + ], + "type": "object" + }, + "LayoutConfiguration": { + "additionalProperties": false, + "properties": { + "FreeFormLayout": { + "$ref": "#/definitions/FreeFormLayoutConfiguration" + }, + "GridLayout": { + "$ref": "#/definitions/GridLayoutConfiguration" + }, + "SectionBasedLayout": { + "$ref": "#/definitions/SectionBasedLayoutConfiguration" + } + }, + "type": "object" + }, + "LayoutElementType": { + "enum": [ + "VISUAL", + "FILTER_CONTROL", + "PARAMETER_CONTROL", + "TEXT_BOX", + "IMAGE" + ], + "type": "string" + }, + "LegendOptions": { + "additionalProperties": false, + "properties": { + "Height": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "Position": { + "$ref": "#/definitions/LegendPosition" + }, + "Title": { + "$ref": "#/definitions/LabelOptions" + }, + "ValueFontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Visibility": {}, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "type": "object" + }, + "LegendPosition": { + "enum": [ + "AUTO", + "RIGHT", + "BOTTOM", + "TOP" + ], + "type": "string" + }, + "LineChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Colors": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "LineChartConfiguration": { + "additionalProperties": false, + "properties": { + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "DefaultSeriesSettings": { + "$ref": "#/definitions/LineChartDefaultSeriesSettings" + }, + "FieldWells": { + "$ref": "#/definitions/LineChartFieldWells" + }, + "ForecastConfigurations": { + "items": { + "$ref": "#/definitions/ForecastConfiguration" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/LineSeriesAxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ReferenceLines": { + "items": { + "$ref": "#/definitions/ReferenceLine" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SecondaryYAxisDisplayOptions": { + "$ref": "#/definitions/LineSeriesAxisDisplayOptions" + }, + "SecondaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "Series": { + "items": { + "$ref": "#/definitions/SeriesItem" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "SingleAxisOptions": { + "$ref": "#/definitions/SingleAxisOptions" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/LineChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "Type": { + "$ref": "#/definitions/LineChartType" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "XAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "XAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + } + }, + "type": "object" + }, + "LineChartDefaultSeriesSettings": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "LineStyleSettings": { + "$ref": "#/definitions/LineChartLineStyleSettings" + }, + "MarkerStyleSettings": { + "$ref": "#/definitions/LineChartMarkerStyleSettings" + } + }, + "type": "object" + }, + "LineChartFieldWells": { + "additionalProperties": false, + "properties": { + "LineChartAggregatedFieldWells": { + "$ref": "#/definitions/LineChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "LineChartLineStyle": { + "enum": [ + "SOLID", + "DOTTED", + "DASHED" + ], + "type": "string" + }, + "LineChartLineStyleSettings": { + "additionalProperties": false, + "properties": { + "LineInterpolation": { + "$ref": "#/definitions/LineInterpolation" + }, + "LineStyle": { + "$ref": "#/definitions/LineChartLineStyle" + }, + "LineVisibility": {}, + "LineWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "type": "object" + }, + "LineChartMarkerShape": { + "enum": [ + "CIRCLE", + "TRIANGLE", + "SQUARE", + "DIAMOND", + "ROUNDED_SQUARE" + ], + "type": "string" + }, + "LineChartMarkerStyleSettings": { + "additionalProperties": false, + "properties": { + "MarkerColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "MarkerShape": { + "$ref": "#/definitions/LineChartMarkerShape" + }, + "MarkerSize": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "MarkerVisibility": {} + }, + "type": "object" + }, + "LineChartSeriesSettings": { + "additionalProperties": false, + "properties": { + "LineStyleSettings": { + "$ref": "#/definitions/LineChartLineStyleSettings" + }, + "MarkerStyleSettings": { + "$ref": "#/definitions/LineChartMarkerStyleSettings" + } + }, + "type": "object" + }, + "LineChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "LineChartType": { + "enum": [ + "LINE", + "AREA", + "STACKED_AREA" + ], + "type": "string" + }, + "LineChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/LineChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "LineInterpolation": { + "enum": [ + "LINEAR", + "SMOOTH", + "STEPPED" + ], + "type": "string" + }, + "LineSeriesAxisDisplayOptions": { + "additionalProperties": false, + "properties": { + "AxisOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "MissingDataConfigurations": { + "items": { + "$ref": "#/definitions/MissingDataConfiguration" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ListControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "SearchOptions": { + "$ref": "#/definitions/ListControlSearchOptions" + }, + "SelectAllOptions": { + "$ref": "#/definitions/ListControlSelectAllOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "ListControlSearchOptions": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "ListControlSelectAllOptions": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "LoadingAnimation": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "LocalNavigationConfiguration": { + "additionalProperties": false, + "properties": { + "TargetSheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "TargetSheetId" + ], + "type": "object" + }, + "LongFormatText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "RichText": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "MapZoomMode": { + "enum": [ + "AUTO", + "MANUAL" + ], + "type": "string" + }, + "MappedDataSetParameter": { + "additionalProperties": false, + "properties": { + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DataSetParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + } + }, + "required": [ + "DataSetIdentifier", + "DataSetParameterName" + ], + "type": "object" + }, + "MaximumLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "MaximumMinimumComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Type": { + "$ref": "#/definitions/MaximumMinimumComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "MaximumMinimumComputationType": { + "enum": [ + "MAXIMUM", + "MINIMUM" + ], + "type": "string" + }, + "MeasureField": { + "additionalProperties": false, + "properties": { + "CalculatedMeasureField": { + "$ref": "#/definitions/CalculatedMeasureField" + }, + "CategoricalMeasureField": { + "$ref": "#/definitions/CategoricalMeasureField" + }, + "DateMeasureField": { + "$ref": "#/definitions/DateMeasureField" + }, + "NumericalMeasureField": { + "$ref": "#/definitions/NumericalMeasureField" + } + }, + "type": "object" + }, + "MetricComparisonComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "FromValue": { + "$ref": "#/definitions/MeasureField" + }, + "Name": { + "type": "string" + }, + "TargetValue": { + "$ref": "#/definitions/MeasureField" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "MinimumLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "MissingDataConfiguration": { + "additionalProperties": false, + "properties": { + "TreatmentOption": { + "$ref": "#/definitions/MissingDataTreatmentOption" + } + }, + "type": "object" + }, + "MissingDataTreatmentOption": { + "enum": [ + "INTERPOLATE", + "SHOW_AS_ZERO", + "SHOW_AS_BLANK" + ], + "type": "string" + }, + "NegativeValueConfiguration": { + "additionalProperties": false, + "properties": { + "DisplayMode": { + "$ref": "#/definitions/NegativeValueDisplayMode" + } + }, + "required": [ + "DisplayMode" + ], + "type": "object" + }, + "NegativeValueDisplayMode": { + "enum": [ + "POSITIVE", + "NEGATIVE" + ], + "type": "string" + }, + "NestedFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeInnerSet": { + "default": false, + "type": "boolean" + }, + "InnerFilter": { + "$ref": "#/definitions/InnerFilter" + } + }, + "required": [ + "Column", + "FilterId", + "IncludeInnerSet", + "InnerFilter" + ], + "type": "object" + }, + "NullValueFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NullString": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "NullString" + ], + "type": "object" + }, + "NumberDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumberScale": { + "$ref": "#/definitions/NumberScale" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "NumberFormatConfiguration": { + "additionalProperties": false, + "properties": { + "FormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "NumberScale": { + "enum": [ + "NONE", + "AUTO", + "THOUSANDS", + "MILLIONS", + "BILLIONS", + "TRILLIONS", + "LAKHS", + "CRORES" + ], + "type": "string" + }, + "NumericAxisOptions": { + "additionalProperties": false, + "properties": { + "Range": { + "$ref": "#/definitions/AxisDisplayRange" + }, + "Scale": { + "$ref": "#/definitions/AxisScale" + } + }, + "type": "object" + }, + "NumericEqualityDrillDownFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Column", + "Value" + ], + "type": "object" + }, + "NumericEqualityFilter": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MatchOperator": { + "$ref": "#/definitions/NumericEqualityMatchOperator" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "SelectAllOptions": { + "$ref": "#/definitions/NumericFilterSelectAllOptions" + }, + "Value": { + "default": null, + "type": "number" + } + }, + "required": [ + "Column", + "FilterId", + "MatchOperator", + "NullOption" + ], + "type": "object" + }, + "NumericEqualityMatchOperator": { + "enum": [ + "EQUALS", + "DOES_NOT_EQUAL" + ], + "type": "string" + }, + "NumericFilterSelectAllOptions": { + "enum": [ + "FILTER_ALL_VALUES" + ], + "type": "string" + }, + "NumericFormatConfiguration": { + "additionalProperties": false, + "properties": { + "CurrencyDisplayFormatConfiguration": { + "$ref": "#/definitions/CurrencyDisplayFormatConfiguration" + }, + "NumberDisplayFormatConfiguration": { + "$ref": "#/definitions/NumberDisplayFormatConfiguration" + }, + "PercentageDisplayFormatConfiguration": { + "$ref": "#/definitions/PercentageDisplayFormatConfiguration" + } + }, + "type": "object" + }, + "NumericRangeFilter": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeMaximum": { + "default": null, + "type": "boolean" + }, + "IncludeMinimum": { + "default": null, + "type": "boolean" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "RangeMaximum": { + "$ref": "#/definitions/NumericRangeFilterValue" + }, + "RangeMinimum": { + "$ref": "#/definitions/NumericRangeFilterValue" + }, + "SelectAllOptions": { + "$ref": "#/definitions/NumericFilterSelectAllOptions" + } + }, + "required": [ + "Column", + "FilterId", + "NullOption" + ], + "type": "object" + }, + "NumericRangeFilterValue": { + "additionalProperties": false, + "properties": { + "Parameter": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "StaticValue": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "NumericSeparatorConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalSeparator": { + "$ref": "#/definitions/NumericSeparatorSymbol" + }, + "ThousandsSeparator": { + "$ref": "#/definitions/ThousandSeparatorOptions" + } + }, + "type": "object" + }, + "NumericSeparatorSymbol": { + "enum": [ + "COMMA", + "DOT", + "SPACE" + ], + "type": "string" + }, + "NumericalAggregationFunction": { + "additionalProperties": false, + "properties": { + "PercentileAggregation": { + "$ref": "#/definitions/PercentileAggregation" + }, + "SimpleNumericalAggregation": { + "$ref": "#/definitions/SimpleNumericalAggregationFunction" + } + }, + "type": "object" + }, + "NumericalDimensionField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "NumericalMeasureField": { + "additionalProperties": false, + "properties": { + "AggregationFunction": { + "$ref": "#/definitions/NumericalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/NumberFormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "OtherCategories": { + "enum": [ + "INCLUDE", + "EXCLUDE" + ], + "type": "string" + }, + "PaginationConfiguration": { + "additionalProperties": false, + "properties": { + "PageNumber": { + "minimum": 0, + "type": "number" + }, + "PageSize": { + "default": null, + "type": "number" + } + }, + "required": [ + "PageNumber", + "PageSize" + ], + "type": "object" + }, + "PanelBorderStyle": { + "enum": [ + "SOLID", + "DASHED", + "DOTTED" + ], + "type": "string" + }, + "PanelConfiguration": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "BackgroundVisibility": {}, + "BorderColor": { + "pattern": "^#[A-F0-9]{6}(?:[A-F0-9]{2})?$", + "type": "string" + }, + "BorderStyle": { + "$ref": "#/definitions/PanelBorderStyle" + }, + "BorderThickness": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "BorderVisibility": {}, + "GutterSpacing": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "GutterVisibility": {}, + "Title": { + "$ref": "#/definitions/PanelTitleOptions" + } + }, + "type": "object" + }, + "PanelTitleOptions": { + "additionalProperties": false, + "properties": { + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "HorizontalTextAlignment": { + "$ref": "#/definitions/HorizontalTextAlignment" + }, + "Visibility": {} + }, + "type": "object" + }, + "PaperOrientation": { + "enum": [ + "PORTRAIT", + "LANDSCAPE" + ], + "type": "string" + }, + "PaperSize": { + "enum": [ + "US_LETTER", + "US_LEGAL", + "US_TABLOID_LEDGER", + "A0", + "A1", + "A2", + "A3", + "A4", + "A5", + "JIS_B4", + "JIS_B5" + ], + "type": "string" + }, + "ParameterControl": { + "additionalProperties": false, + "properties": { + "DateTimePicker": { + "$ref": "#/definitions/ParameterDateTimePickerControl" + }, + "Dropdown": { + "$ref": "#/definitions/ParameterDropDownControl" + }, + "List": { + "$ref": "#/definitions/ParameterListControl" + }, + "Slider": { + "$ref": "#/definitions/ParameterSliderControl" + }, + "TextArea": { + "$ref": "#/definitions/ParameterTextAreaControl" + }, + "TextField": { + "$ref": "#/definitions/ParameterTextFieldControl" + } + }, + "type": "object" + }, + "ParameterDateTimePickerControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/DateTimePickerControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DateTimeParameterDeclaration": { + "$ref": "#/definitions/DateTimeParameterDeclaration" + }, + "DecimalParameterDeclaration": { + "$ref": "#/definitions/DecimalParameterDeclaration" + }, + "IntegerParameterDeclaration": { + "$ref": "#/definitions/IntegerParameterDeclaration" + }, + "StringParameterDeclaration": { + "$ref": "#/definitions/StringParameterDeclaration" + } + }, + "type": "object" + }, + "ParameterDropDownControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "CommitMode": { + "$ref": "#/definitions/CommitMode" + }, + "DisplayOptions": { + "$ref": "#/definitions/DropDownControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/ParameterSelectableValues" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterListControl": { + "additionalProperties": false, + "properties": { + "CascadingControlConfiguration": { + "$ref": "#/definitions/CascadingControlConfiguration" + }, + "DisplayOptions": { + "$ref": "#/definitions/ListControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SelectableValues": { + "$ref": "#/definitions/ParameterSelectableValues" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/SheetControlListType" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterSelectableValues": { + "additionalProperties": false, + "properties": { + "LinkToDataSetColumn": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "Values": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ParameterSliderControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/SliderControlDisplayOptions" + }, + "MaximumValue": { + "default": 0, + "type": "number" + }, + "MinimumValue": { + "default": 0, + "type": "number" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "StepSize": { + "default": 0, + "type": "number" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "MaximumValue", + "MinimumValue", + "ParameterControlId", + "SourceParameterName", + "StepSize", + "Title" + ], + "type": "object" + }, + "ParameterTextAreaControl": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DisplayOptions": { + "$ref": "#/definitions/TextAreaControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterTextFieldControl": { + "additionalProperties": false, + "properties": { + "DisplayOptions": { + "$ref": "#/definitions/TextFieldControlDisplayOptions" + }, + "ParameterControlId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "SourceParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Title": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParameterControlId", + "SourceParameterName", + "Title" + ], + "type": "object" + }, + "ParameterValueType": { + "enum": [ + "MULTI_VALUED", + "SINGLE_VALUED" + ], + "type": "string" + }, + "PercentVisibleRange": { + "additionalProperties": false, + "properties": { + "From": { + "default": null, + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "To": { + "default": null, + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "PercentageDisplayFormatConfiguration": { + "additionalProperties": false, + "properties": { + "DecimalPlacesConfiguration": { + "$ref": "#/definitions/DecimalPlacesConfiguration" + }, + "NegativeValueConfiguration": { + "$ref": "#/definitions/NegativeValueConfiguration" + }, + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SeparatorConfiguration": { + "$ref": "#/definitions/NumericSeparatorConfiguration" + }, + "Suffix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "PercentileAggregation": { + "additionalProperties": false, + "properties": { + "PercentileValue": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "PeriodOverPeriodComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "PeriodToDateComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "PeriodTimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "PieChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SmallMultiples": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PieChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ContributionAnalysisDefaults": { + "items": { + "$ref": "#/definitions/ContributionAnalysisDefault" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "DonutOptions": { + "$ref": "#/definitions/DonutOptions" + }, + "FieldWells": { + "$ref": "#/definitions/PieChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "SmallMultiplesOptions": { + "$ref": "#/definitions/SmallMultiplesOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/PieChartSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "ValueLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "PieChartFieldWells": { + "additionalProperties": false, + "properties": { + "PieChartAggregatedFieldWells": { + "$ref": "#/definitions/PieChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "PieChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SmallMultiplesLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SmallMultiplesSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PieChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/PieChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "PivotFieldSortOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "SortBy": { + "$ref": "#/definitions/PivotTableSortBy" + } + }, + "required": [ + "FieldId", + "SortBy" + ], + "type": "object" + }, + "PivotTableAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + }, + "Rows": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableCellConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Scope": { + "$ref": "#/definitions/PivotTableConditionalFormattingScope" + }, + "Scopes": { + "items": { + "$ref": "#/definitions/PivotTableConditionalFormattingScope" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "TextFormat": { + "$ref": "#/definitions/TextConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "PivotTableConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/PivotTableConditionalFormattingOption" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Cell": { + "$ref": "#/definitions/PivotTableCellConditionalFormatting" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingScope": { + "additionalProperties": false, + "properties": { + "Role": { + "$ref": "#/definitions/PivotTableConditionalFormattingScopeRole" + } + }, + "type": "object" + }, + "PivotTableConditionalFormattingScopeRole": { + "enum": [ + "FIELD", + "FIELD_TOTAL", + "GRAND_TOTAL" + ], + "type": "string" + }, + "PivotTableConfiguration": { + "additionalProperties": false, + "properties": { + "FieldOptions": { + "$ref": "#/definitions/PivotTableFieldOptions" + }, + "FieldWells": { + "$ref": "#/definitions/PivotTableFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "PaginatedReportOptions": { + "$ref": "#/definitions/PivotTablePaginatedReportOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/PivotTableSortConfiguration" + }, + "TableOptions": { + "$ref": "#/definitions/PivotTableOptions" + }, + "TotalOptions": { + "$ref": "#/definitions/PivotTableTotalOptions" + } + }, + "type": "object" + }, + "PivotTableDataPathOption": { + "additionalProperties": false, + "properties": { + "DataPathList": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "DataPathList" + ], + "type": "object" + }, + "PivotTableDataPathType": { + "enum": [ + "HIERARCHY_ROWS_LAYOUT_COLUMN", + "MULTIPLE_ROW_METRICS_COLUMN", + "EMPTY_COLUMN_HEADER", + "COUNT_METRIC_COLUMN" + ], + "type": "string" + }, + "PivotTableFieldCollapseState": { + "enum": [ + "COLLAPSED", + "EXPANDED" + ], + "type": "string" + }, + "PivotTableFieldCollapseStateOption": { + "additionalProperties": false, + "properties": { + "State": { + "$ref": "#/definitions/PivotTableFieldCollapseState" + }, + "Target": { + "$ref": "#/definitions/PivotTableFieldCollapseStateTarget" + } + }, + "required": [ + "Target" + ], + "type": "object" + }, + "PivotTableFieldCollapseStateTarget": { + "additionalProperties": false, + "properties": { + "FieldDataPathValues": { + "items": { + "$ref": "#/definitions/DataPathValue" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "FieldId": { + "type": "string" + } + }, + "type": "object" + }, + "PivotTableFieldOption": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Visibility": {} + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "PivotTableFieldOptions": { + "additionalProperties": false, + "properties": { + "CollapseStateOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldCollapseStateOption" + }, + "type": "array" + }, + "DataPathOptions": { + "items": { + "$ref": "#/definitions/PivotTableDataPathOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "SelectedFieldOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableFieldSubtotalOptions": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "PivotTableFieldWells": { + "additionalProperties": false, + "properties": { + "PivotTableAggregatedFieldWells": { + "$ref": "#/definitions/PivotTableAggregatedFieldWells" + } + }, + "type": "object" + }, + "PivotTableMetricPlacement": { + "enum": [ + "ROW", + "COLUMN" + ], + "type": "string" + }, + "PivotTableOptions": { + "additionalProperties": false, + "properties": { + "CellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "CollapsedRowDimensionsVisibility": {}, + "ColumnHeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "ColumnNamesVisibility": {}, + "DefaultCellWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "MetricPlacement": { + "$ref": "#/definitions/PivotTableMetricPlacement" + }, + "RowAlternateColorOptions": { + "$ref": "#/definitions/RowAlternateColorOptions" + }, + "RowFieldNamesStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "RowHeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "RowsLabelOptions": { + "$ref": "#/definitions/PivotTableRowsLabelOptions" + }, + "RowsLayout": { + "$ref": "#/definitions/PivotTableRowsLayout" + }, + "SingleMetricVisibility": {}, + "ToggleButtonsVisibility": {} + }, + "type": "object" + }, + "PivotTablePaginatedReportOptions": { + "additionalProperties": false, + "properties": { + "OverflowColumnHeaderVisibility": {}, + "VerticalOverflowVisibility": {} + }, + "type": "object" + }, + "PivotTableRowsLabelOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Visibility": {} + }, + "type": "object" + }, + "PivotTableRowsLayout": { + "enum": [ + "TABULAR", + "HIERARCHY" + ], + "type": "string" + }, + "PivotTableSortBy": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnSort" + }, + "DataPath": { + "$ref": "#/definitions/DataPathSort" + }, + "Field": { + "$ref": "#/definitions/FieldSort" + } + }, + "type": "object" + }, + "PivotTableSortConfiguration": { + "additionalProperties": false, + "properties": { + "FieldSortOptions": { + "items": { + "$ref": "#/definitions/PivotFieldSortOptions" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PivotTableSubtotalLevel": { + "enum": [ + "ALL", + "CUSTOM", + "LAST" + ], + "type": "string" + }, + "PivotTableTotalOptions": { + "additionalProperties": false, + "properties": { + "ColumnSubtotalOptions": { + "$ref": "#/definitions/SubtotalOptions" + }, + "ColumnTotalOptions": { + "$ref": "#/definitions/PivotTotalOptions" + }, + "RowSubtotalOptions": { + "$ref": "#/definitions/SubtotalOptions" + }, + "RowTotalOptions": { + "$ref": "#/definitions/PivotTotalOptions" + } + }, + "type": "object" + }, + "PivotTableVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/PivotTableConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/PivotTableConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "PivotTotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "MetricHeaderCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "Placement": { + "$ref": "#/definitions/TableTotalsPlacement" + }, + "ScrollStatus": { + "$ref": "#/definitions/TableTotalsScrollStatus" + }, + "TotalAggregationOptions": { + "items": { + "$ref": "#/definitions/TotalAggregationOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": {}, + "ValueCellStyle": { + "$ref": "#/definitions/TableCellStyle" + } + }, + "type": "object" + }, + "PluginVisual": { + "additionalProperties": false, + "properties": { + "ChartConfiguration": { + "$ref": "#/definitions/PluginVisualConfiguration" + }, + "PluginArn": { + "type": "string" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "PluginArn", + "VisualId" + ], + "type": "object" + }, + "PluginVisualAxisName": { + "enum": [ + "GROUP_BY", + "VALUE" + ], + "type": "string" + }, + "PluginVisualConfiguration": { + "additionalProperties": false, + "properties": { + "FieldWells": { + "items": { + "$ref": "#/definitions/PluginVisualFieldWell" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "SortConfiguration": { + "$ref": "#/definitions/PluginVisualSortConfiguration" + }, + "VisualOptions": { + "$ref": "#/definitions/PluginVisualOptions" + } + }, + "type": "object" + }, + "PluginVisualFieldWell": { + "additionalProperties": false, + "properties": { + "AxisName": { + "$ref": "#/definitions/PluginVisualAxisName" + }, + "Dimensions": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Measures": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Unaggregated": { + "items": { + "$ref": "#/definitions/UnaggregatedField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PluginVisualItemsLimitConfiguration": { + "additionalProperties": false, + "properties": { + "ItemsLimit": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "PluginVisualOptions": { + "additionalProperties": false, + "properties": { + "VisualProperties": { + "items": { + "$ref": "#/definitions/PluginVisualProperty" + }, + "type": "array" + } + }, + "type": "object" + }, + "PluginVisualProperty": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "PluginVisualSortConfiguration": { + "additionalProperties": false, + "properties": { + "PluginVisualTableQuerySort": { + "$ref": "#/definitions/PluginVisualTableQuerySort" + } + }, + "type": "object" + }, + "PluginVisualTableQuerySort": { + "additionalProperties": false, + "properties": { + "ItemsLimitConfiguration": { + "$ref": "#/definitions/PluginVisualItemsLimitConfiguration" + }, + "RowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "PredefinedHierarchy": { + "additionalProperties": false, + "properties": { + "Columns": { + "items": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "DrillDownFilters": { + "items": { + "$ref": "#/definitions/DrillDownFilter" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "HierarchyId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Columns", + "HierarchyId" + ], + "type": "object" + }, + "PrimaryValueDisplayType": { + "enum": [ + "HIDDEN", + "COMPARISON", + "ACTUAL" + ], + "type": "string" + }, + "ProgressBarOptions": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "QueryExecutionMode": { + "enum": [ + "AUTO", + "MANUAL" + ], + "type": "string" + }, + "QueryExecutionOptions": { + "additionalProperties": false, + "properties": { + "QueryExecutionMode": { + "$ref": "#/definitions/QueryExecutionMode" + } + }, + "type": "object" + }, + "RadarChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Color": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "RadarChartAreaStyleSettings": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "RadarChartAxesRangeScale": { + "enum": [ + "AUTO", + "INDEPENDENT", + "SHARED" + ], + "type": "string" + }, + "RadarChartConfiguration": { + "additionalProperties": false, + "properties": { + "AlternateBandColorsVisibility": {}, + "AlternateBandEvenColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "AlternateBandOddColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "AxesRangeScale": { + "$ref": "#/definitions/RadarChartAxesRangeScale" + }, + "BaseSeriesSettings": { + "$ref": "#/definitions/RadarChartSeriesSettings" + }, + "CategoryAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorAxis": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/RadarChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "Shape": { + "$ref": "#/definitions/RadarChartShape" + }, + "SortConfiguration": { + "$ref": "#/definitions/RadarChartSortConfiguration" + }, + "StartAngle": { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + } + }, + "type": "object" + }, + "RadarChartFieldWells": { + "additionalProperties": false, + "properties": { + "RadarChartAggregatedFieldWells": { + "$ref": "#/definitions/RadarChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "RadarChartSeriesSettings": { + "additionalProperties": false, + "properties": { + "AreaStyleSettings": { + "$ref": "#/definitions/RadarChartAreaStyleSettings" + } + }, + "type": "object" + }, + "RadarChartShape": { + "enum": [ + "CIRCLE", + "POLYGON" + ], + "type": "string" + }, + "RadarChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "ColorItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "ColorSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "RadarChartVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/RadarChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "RangeEndsLabelType": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "ReferenceLine": { + "additionalProperties": false, + "properties": { + "DataConfiguration": { + "$ref": "#/definitions/ReferenceLineDataConfiguration" + }, + "LabelConfiguration": { + "$ref": "#/definitions/ReferenceLineLabelConfiguration" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "StyleConfiguration": { + "$ref": "#/definitions/ReferenceLineStyleConfiguration" + } + }, + "required": [ + "DataConfiguration" + ], + "type": "object" + }, + "ReferenceLineCustomLabelConfiguration": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "pattern": "\\S", + "type": "string" + } + }, + "required": [ + "CustomLabel" + ], + "type": "object" + }, + "ReferenceLineDataConfiguration": { + "additionalProperties": false, + "properties": { + "AxisBinding": { + "$ref": "#/definitions/AxisBinding" + }, + "DynamicConfiguration": { + "$ref": "#/definitions/ReferenceLineDynamicDataConfiguration" + }, + "SeriesType": { + "$ref": "#/definitions/ReferenceLineSeriesType" + }, + "StaticConfiguration": { + "$ref": "#/definitions/ReferenceLineStaticDataConfiguration" + } + }, + "type": "object" + }, + "ReferenceLineDynamicDataConfiguration": { + "additionalProperties": false, + "properties": { + "Calculation": { + "$ref": "#/definitions/NumericalAggregationFunction" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "MeasureAggregationFunction": { + "$ref": "#/definitions/AggregationFunction" + } + }, + "required": [ + "Calculation", + "Column" + ], + "type": "object" + }, + "ReferenceLineLabelConfiguration": { + "additionalProperties": false, + "properties": { + "CustomLabelConfiguration": { + "$ref": "#/definitions/ReferenceLineCustomLabelConfiguration" + }, + "FontColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "HorizontalPosition": { + "$ref": "#/definitions/ReferenceLineLabelHorizontalPosition" + }, + "ValueLabelConfiguration": { + "$ref": "#/definitions/ReferenceLineValueLabelConfiguration" + }, + "VerticalPosition": { + "$ref": "#/definitions/ReferenceLineLabelVerticalPosition" + } + }, + "type": "object" + }, + "ReferenceLineLabelHorizontalPosition": { + "enum": [ + "LEFT", + "CENTER", + "RIGHT" + ], + "type": "string" + }, + "ReferenceLineLabelVerticalPosition": { + "enum": [ + "ABOVE", + "BELOW" + ], + "type": "string" + }, + "ReferenceLinePatternType": { + "enum": [ + "SOLID", + "DASHED", + "DOTTED" + ], + "type": "string" + }, + "ReferenceLineSeriesType": { + "enum": [ + "BAR", + "LINE" + ], + "type": "string" + }, + "ReferenceLineStaticDataConfiguration": { + "additionalProperties": false, + "properties": { + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "ReferenceLineStyleConfiguration": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Pattern": { + "$ref": "#/definitions/ReferenceLinePatternType" + } + }, + "type": "object" + }, + "ReferenceLineValueLabelConfiguration": { + "additionalProperties": false, + "properties": { + "FormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + }, + "RelativePosition": { + "$ref": "#/definitions/ReferenceLineValueLabelRelativePosition" + } + }, + "type": "object" + }, + "ReferenceLineValueLabelRelativePosition": { + "enum": [ + "BEFORE_CUSTOM_LABEL", + "AFTER_CUSTOM_LABEL" + ], + "type": "string" + }, + "RelativeDateTimeControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "DateTimeFormat": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "RelativeDateType": { + "enum": [ + "PREVIOUS", + "THIS", + "LAST", + "NOW", + "NEXT" + ], + "type": "string" + }, + "RelativeDatesFilter": { + "additionalProperties": false, + "properties": { + "AnchorDateConfiguration": { + "$ref": "#/definitions/AnchorDateConfiguration" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "ExcludePeriodConfiguration": { + "$ref": "#/definitions/ExcludePeriodConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MinimumGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RelativeDateType": { + "$ref": "#/definitions/RelativeDateType" + }, + "RelativeDateValue": { + "default": null, + "type": "number" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "AnchorDateConfiguration", + "Column", + "FilterId", + "NullOption", + "RelativeDateType", + "TimeGranularity" + ], + "type": "object" + }, + "RelativeFontSize": { + "enum": [ + "EXTRA_SMALL", + "SMALL", + "MEDIUM", + "LARGE", + "EXTRA_LARGE" + ], + "type": "string" + }, + "ResizeOption": { + "enum": [ + "FIXED", + "RESPONSIVE" + ], + "type": "string" + }, + "ResourcePermission": { + "additionalProperties": false, + "description": "

Permission for the resource.

", + "properties": { + "Actions": { + "description": "

The IAM action to grant or revoke permissions on.

", + "items": { + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "Principal": { + "description": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Actions", + "Principal" + ], + "type": "object" + }, + "ResourceStatus": { + "enum": [ + "CREATION_IN_PROGRESS", + "CREATION_SUCCESSFUL", + "CREATION_FAILED", + "UPDATE_IN_PROGRESS", + "UPDATE_SUCCESSFUL", + "UPDATE_FAILED", + "DELETED" + ], + "type": "string" + }, + "RollingDateConfiguration": { + "additionalProperties": false, + "properties": { + "DataSetIdentifier": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "RowAlternateColorOptions": { + "additionalProperties": false, + "properties": { + "RowAlternateColors": { + "items": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "UsePrimaryBackgroundColor": { + "$ref": "#/definitions/WidgetStatus" + } + }, + "type": "object" + }, + "SameSheetTargetVisualConfiguration": { + "additionalProperties": false, + "properties": { + "TargetVisualOptions": { + "$ref": "#/definitions/TargetVisualOptions" + }, + "TargetVisuals": { + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "SankeyDiagramAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Destination": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Source": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Weight": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "SankeyDiagramChartConfiguration": { + "additionalProperties": false, + "properties": { + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/SankeyDiagramFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/SankeyDiagramSortConfiguration" + } + }, + "type": "object" + }, + "SankeyDiagramFieldWells": { + "additionalProperties": false, + "properties": { + "SankeyDiagramAggregatedFieldWells": { + "$ref": "#/definitions/SankeyDiagramAggregatedFieldWells" + } + }, + "type": "object" + }, + "SankeyDiagramSortConfiguration": { + "additionalProperties": false, + "properties": { + "DestinationItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "SourceItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "WeightSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "SankeyDiagramVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/SankeyDiagramChartConfiguration" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "ScatterPlotCategoricallyAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Label": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Size": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "XAxis": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "YAxis": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ScatterPlotConfiguration": { + "additionalProperties": false, + "properties": { + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/ScatterPlotFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/ScatterPlotSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "XAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "XAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "YAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "YAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + } + }, + "type": "object" + }, + "ScatterPlotFieldWells": { + "additionalProperties": false, + "properties": { + "ScatterPlotCategoricallyAggregatedFieldWells": { + "$ref": "#/definitions/ScatterPlotCategoricallyAggregatedFieldWells" + }, + "ScatterPlotUnaggregatedFieldWells": { + "$ref": "#/definitions/ScatterPlotUnaggregatedFieldWells" + } + }, + "type": "object" + }, + "ScatterPlotSortConfiguration": { + "additionalProperties": false, + "properties": { + "ScatterPlotLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + } + }, + "type": "object" + }, + "ScatterPlotUnaggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Category": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Label": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Size": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "XAxis": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "YAxis": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "ScatterPlotVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/ScatterPlotConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "ScrollBarOptions": { + "additionalProperties": false, + "properties": { + "Visibility": {}, + "VisibleRange": { + "$ref": "#/definitions/VisibleRangeOptions" + } + }, + "type": "object" + }, + "SecondaryValueOptions": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "SectionAfterPageBreak": { + "additionalProperties": false, + "properties": { + "Status": { + "$ref": "#/definitions/SectionPageBreakStatus" + } + }, + "type": "object" + }, + "SectionBasedLayoutCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "PaperCanvasSizeOptions": { + "$ref": "#/definitions/SectionBasedLayoutPaperCanvasSizeOptions" + } + }, + "type": "object" + }, + "SectionBasedLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "BodySections": { + "items": { + "$ref": "#/definitions/BodySectionConfiguration" + }, + "maxItems": 28, + "minItems": 0, + "type": "array" + }, + "CanvasSizeOptions": { + "$ref": "#/definitions/SectionBasedLayoutCanvasSizeOptions" + }, + "FooterSections": { + "items": { + "$ref": "#/definitions/HeaderFooterSectionConfiguration" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "HeaderSections": { + "items": { + "$ref": "#/definitions/HeaderFooterSectionConfiguration" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "BodySections", + "CanvasSizeOptions", + "FooterSections", + "HeaderSections" + ], + "type": "object" + }, + "SectionBasedLayoutPaperCanvasSizeOptions": { + "additionalProperties": false, + "properties": { + "PaperMargin": { + "$ref": "#/definitions/Spacing" + }, + "PaperOrientation": { + "$ref": "#/definitions/PaperOrientation" + }, + "PaperSize": { + "$ref": "#/definitions/PaperSize" + } + }, + "type": "object" + }, + "SectionLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "FreeFormLayout": { + "$ref": "#/definitions/FreeFormSectionLayoutConfiguration" + } + }, + "required": [ + "FreeFormLayout" + ], + "type": "object" + }, + "SectionPageBreakConfiguration": { + "additionalProperties": false, + "properties": { + "After": { + "$ref": "#/definitions/SectionAfterPageBreak" + } + }, + "type": "object" + }, + "SectionPageBreakStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "SectionStyle": { + "additionalProperties": false, + "properties": { + "Height": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + }, + "Padding": { + "$ref": "#/definitions/Spacing" + } + }, + "type": "object" + }, + "SelectAllValueOptions": { + "enum": [ + "ALL_VALUES" + ], + "type": "string" + }, + "SelectedFieldOptions": { + "enum": [ + "ALL_FIELDS" + ], + "type": "string" + }, + "SelectedSheetsFilterScopeConfiguration": { + "additionalProperties": false, + "properties": { + "SheetVisualScopingConfigurations": { + "items": { + "$ref": "#/definitions/SheetVisualScopingConfiguration" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "SelectedTooltipType": { + "enum": [ + "BASIC", + "DETAILED" + ], + "type": "string" + }, + "SeriesItem": { + "additionalProperties": false, + "properties": { + "DataFieldSeriesItem": { + "$ref": "#/definitions/DataFieldSeriesItem" + }, + "FieldSeriesItem": { + "$ref": "#/definitions/FieldSeriesItem" + } + }, + "type": "object" + }, + "SetParameterValueConfiguration": { + "additionalProperties": false, + "properties": { + "DestinationParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Value": { + "$ref": "#/definitions/DestinationParameterValueConfiguration" + } + }, + "required": [ + "DestinationParameterName", + "Value" + ], + "type": "object" + }, + "ShapeConditionalFormat": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "required": [ + "BackgroundColor" + ], + "type": "object" + }, + "Sheet": { + "additionalProperties": false, + "description": "

A sheet, which is an object that contains a set of visuals that\n are viewed together on one page in Amazon QuickSight. Every analysis and dashboard\n contains at least one sheet. Each sheet contains at least one visualization widget, for\n example a chart, pivot table, or narrative insight. Sheets can be associated with other\n components, such as controls, filters, and so on.

", + "properties": { + "Name": { + "description": "

The name of a sheet. This name is displayed on the sheet's tab in the Amazon QuickSight\n console.

", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "SheetId": { + "description": "

The unique identifier associated with a sheet.

", + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "type": "object" + }, + "SheetContentType": { + "enum": [ + "PAGINATED", + "INTERACTIVE" + ], + "type": "string" + }, + "SheetControlDateTimePickerType": { + "enum": [ + "SINGLE_VALUED", + "DATE_RANGE" + ], + "type": "string" + }, + "SheetControlInfoIconLabelOptions": { + "additionalProperties": false, + "properties": { + "InfoIconText": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Visibility": {} + }, + "type": "object" + }, + "SheetControlLayout": { + "additionalProperties": false, + "properties": { + "Configuration": { + "$ref": "#/definitions/SheetControlLayoutConfiguration" + } + }, + "required": [ + "Configuration" + ], + "type": "object" + }, + "SheetControlLayoutConfiguration": { + "additionalProperties": false, + "properties": { + "GridLayout": { + "$ref": "#/definitions/GridLayoutConfiguration" + } + }, + "type": "object" + }, + "SheetControlListType": { + "enum": [ + "MULTI_SELECT", + "SINGLE_SELECT" + ], + "type": "string" + }, + "SheetControlSliderType": { + "enum": [ + "SINGLE_POINT", + "RANGE" + ], + "type": "string" + }, + "SheetDefinition": { + "additionalProperties": false, + "properties": { + "ContentType": { + "$ref": "#/definitions/SheetContentType" + }, + "Description": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "FilterControls": { + "items": { + "$ref": "#/definitions/FilterControl" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Images": { + "items": { + "$ref": "#/definitions/SheetImage" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Layouts": { + "items": { + "$ref": "#/definitions/Layout" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ParameterControls": { + "items": { + "$ref": "#/definitions/ParameterControl" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "SheetControlLayouts": { + "items": { + "$ref": "#/definitions/SheetControlLayout" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "SheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "TextBoxes": { + "items": { + "$ref": "#/definitions/SheetTextBox" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "Title": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Visuals": { + "items": { + "$ref": "#/definitions/Visual" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "SheetId" + ], + "type": "object" + }, + "SheetElementConfigurationOverrides": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "SheetElementRenderingRule": { + "additionalProperties": false, + "properties": { + "ConfigurationOverrides": { + "$ref": "#/definitions/SheetElementConfigurationOverrides" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ConfigurationOverrides", + "Expression" + ], + "type": "object" + }, + "SheetImage": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/ImageCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ImageContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Interactions": { + "$ref": "#/definitions/ImageInteractionOptions" + }, + "Scaling": { + "$ref": "#/definitions/SheetImageScalingConfiguration" + }, + "SheetImageId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Source": { + "$ref": "#/definitions/SheetImageSource" + }, + "Tooltip": { + "$ref": "#/definitions/SheetImageTooltipConfiguration" + } + }, + "required": [ + "SheetImageId", + "Source" + ], + "type": "object" + }, + "SheetImageScalingConfiguration": { + "additionalProperties": false, + "properties": { + "ScalingType": { + "$ref": "#/definitions/SheetImageScalingType" + } + }, + "type": "object" + }, + "SheetImageScalingType": { + "enum": [ + "SCALE_TO_WIDTH", + "SCALE_TO_HEIGHT", + "SCALE_TO_CONTAINER", + "SCALE_NONE" + ], + "type": "string" + }, + "SheetImageSource": { + "additionalProperties": false, + "properties": { + "SheetImageStaticFileSource": { + "$ref": "#/definitions/SheetImageStaticFileSource" + } + }, + "type": "object" + }, + "SheetImageStaticFileSource": { + "additionalProperties": false, + "properties": { + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "SheetImageTooltipConfiguration": { + "additionalProperties": false, + "properties": { + "TooltipText": { + "$ref": "#/definitions/SheetImageTooltipText" + }, + "Visibility": {} + }, + "type": "object" + }, + "SheetImageTooltipText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SheetTextBox": { + "additionalProperties": false, + "properties": { + "Content": { + "maxLength": 150000, + "minLength": 0, + "type": "string" + }, + "SheetTextBoxId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "SheetTextBoxId" + ], + "type": "object" + }, + "SheetVisualScopingConfiguration": { + "additionalProperties": false, + "properties": { + "Scope": { + "$ref": "#/definitions/FilterVisualScope" + }, + "SheetId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "VisualIds": { + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Scope", + "SheetId" + ], + "type": "object" + }, + "ShortFormatText": { + "additionalProperties": false, + "properties": { + "PlainText": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "RichText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SimpleAttributeAggregationFunction": { + "enum": [ + "UNIQUE_VALUE" + ], + "type": "string" + }, + "SimpleClusterMarker": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "type": "object" + }, + "SimpleNumericalAggregationFunction": { + "enum": [ + "SUM", + "AVERAGE", + "MIN", + "MAX", + "COUNT", + "DISTINCT_COUNT", + "VAR", + "VARP", + "STDEV", + "STDEVP", + "MEDIAN" + ], + "type": "string" + }, + "SimpleTotalAggregationFunction": { + "enum": [ + "DEFAULT", + "SUM", + "AVERAGE", + "MIN", + "MAX", + "NONE" + ], + "type": "string" + }, + "SingleAxisOptions": { + "additionalProperties": false, + "properties": { + "YAxisOptions": { + "$ref": "#/definitions/YAxisOptions" + } + }, + "type": "object" + }, + "SingleYAxisOption": { + "enum": [ + "PRIMARY_Y_AXIS" + ], + "type": "string" + }, + "SliderControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "SmallMultiplesAxisPlacement": { + "enum": [ + "OUTSIDE", + "INSIDE" + ], + "type": "string" + }, + "SmallMultiplesAxisProperties": { + "additionalProperties": false, + "properties": { + "Placement": { + "$ref": "#/definitions/SmallMultiplesAxisPlacement" + }, + "Scale": { + "$ref": "#/definitions/SmallMultiplesAxisScale" + } + }, + "type": "object" + }, + "SmallMultiplesAxisScale": { + "enum": [ + "SHARED", + "INDEPENDENT" + ], + "type": "string" + }, + "SmallMultiplesOptions": { + "additionalProperties": false, + "properties": { + "MaxVisibleColumns": { + "maximum": 10, + "minimum": 1, + "type": "number" + }, + "MaxVisibleRows": { + "maximum": 10, + "minimum": 1, + "type": "number" + }, + "PanelConfiguration": { + "$ref": "#/definitions/PanelConfiguration" + }, + "XAxis": { + "$ref": "#/definitions/SmallMultiplesAxisProperties" + }, + "YAxis": { + "$ref": "#/definitions/SmallMultiplesAxisProperties" + } + }, + "type": "object" + }, + "SortDirection": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + }, + "Spacing": { + "additionalProperties": false, + "properties": { + "Bottom": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Left": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Right": { + "description": "String based length that is composed of value and unit", + "type": "string" + }, + "Top": { + "description": "String based length that is composed of value and unit", + "type": "string" + } + }, + "type": "object" + }, + "SpatialStaticFile": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/StaticFileSource" + }, + "StaticFileId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "StaticFileId" + ], + "type": "object" + }, + "SpecialValue": { + "enum": [ + "EMPTY", + "NULL", + "OTHER" + ], + "type": "string" + }, + "StaticFile": { + "additionalProperties": false, + "properties": { + "ImageStaticFile": { + "$ref": "#/definitions/ImageStaticFile" + }, + "SpatialStaticFile": { + "$ref": "#/definitions/SpatialStaticFile" + } + }, + "type": "object" + }, + "StaticFileS3SourceOptions": { + "additionalProperties": false, + "properties": { + "BucketName": { + "type": "string" + }, + "ObjectKey": { + "type": "string" + }, + "Region": { + "type": "string" + } + }, + "required": [ + "BucketName", + "ObjectKey", + "Region" + ], + "type": "object" + }, + "StaticFileSource": { + "additionalProperties": false, + "properties": { + "S3Options": { + "$ref": "#/definitions/StaticFileS3SourceOptions" + }, + "UrlOptions": { + "$ref": "#/definitions/StaticFileUrlSourceOptions" + } + }, + "type": "object" + }, + "StaticFileUrlSourceOptions": { + "additionalProperties": false, + "properties": { + "Url": { + "type": "string" + } + }, + "required": [ + "Url" + ], + "type": "object" + }, + "StringDefaultValues": { + "additionalProperties": false, + "properties": { + "DynamicValue": { + "$ref": "#/definitions/DynamicDefaultValue" + }, + "StaticValues": { + "items": { + "type": "string" + }, + "maxItems": 50000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "StringFormatConfiguration": { + "additionalProperties": false, + "properties": { + "NullValueFormatConfiguration": { + "$ref": "#/definitions/NullValueFormatConfiguration" + }, + "NumericFormatConfiguration": { + "$ref": "#/definitions/NumericFormatConfiguration" + } + }, + "type": "object" + }, + "StringParameterDeclaration": { + "additionalProperties": false, + "properties": { + "DefaultValues": { + "$ref": "#/definitions/StringDefaultValues" + }, + "MappedDataSetParameters": { + "items": { + "$ref": "#/definitions/MappedDataSetParameter" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ParameterValueType": { + "$ref": "#/definitions/ParameterValueType" + }, + "ValueWhenUnset": { + "$ref": "#/definitions/StringValueWhenUnsetConfiguration" + } + }, + "required": [ + "Name", + "ParameterValueType" + ], + "type": "object" + }, + "StringValueWhenUnsetConfiguration": { + "additionalProperties": false, + "properties": { + "CustomValue": { + "type": "string" + }, + "ValueWhenUnsetOption": { + "$ref": "#/definitions/ValueWhenUnsetOption" + } + }, + "type": "object" + }, + "StyledCellType": { + "enum": [ + "TOTAL", + "METRIC_HEADER", + "VALUE" + ], + "type": "string" + }, + "SubtotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "FieldLevel": { + "$ref": "#/definitions/PivotTableSubtotalLevel" + }, + "FieldLevelOptions": { + "items": { + "$ref": "#/definitions/PivotTableFieldSubtotalOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "MetricHeaderCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "StyleTargets": { + "items": { + "$ref": "#/definitions/TableStyleTarget" + }, + "maxItems": 3, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": {}, + "ValueCellStyle": { + "$ref": "#/definitions/TableCellStyle" + } + }, + "type": "object" + }, + "TableAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "GroupBy": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableBorderOptions": { + "additionalProperties": false, + "properties": { + "Color": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Style": { + "$ref": "#/definitions/TableBorderStyle" + }, + "Thickness": { + "maximum": 4, + "minimum": 1, + "type": "number" + } + }, + "type": "object" + }, + "TableBorderStyle": { + "enum": [ + "NONE", + "SOLID" + ], + "type": "string" + }, + "TableCellConditionalFormatting": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "TextFormat": { + "$ref": "#/definitions/TextConditionalFormat" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "TableCellImageScalingConfiguration": { + "enum": [ + "FIT_TO_CELL_HEIGHT", + "FIT_TO_CELL_WIDTH", + "DO_NOT_SCALE" + ], + "type": "string" + }, + "TableCellImageSizingConfiguration": { + "additionalProperties": false, + "properties": { + "TableCellImageScalingConfiguration": { + "$ref": "#/definitions/TableCellImageScalingConfiguration" + } + }, + "type": "object" + }, + "TableCellStyle": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Border": { + "$ref": "#/definitions/GlobalTableBorderOptions" + }, + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Height": { + "maximum": 500, + "minimum": 8, + "type": "number" + }, + "HorizontalTextAlignment": { + "$ref": "#/definitions/HorizontalTextAlignment" + }, + "TextWrap": { + "$ref": "#/definitions/TextWrap" + }, + "VerticalTextAlignment": { + "$ref": "#/definitions/VerticalTextAlignment" + }, + "Visibility": {} + }, + "type": "object" + }, + "TableConditionalFormatting": { + "additionalProperties": false, + "properties": { + "ConditionalFormattingOptions": { + "items": { + "$ref": "#/definitions/TableConditionalFormattingOption" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableConditionalFormattingOption": { + "additionalProperties": false, + "properties": { + "Cell": { + "$ref": "#/definitions/TableCellConditionalFormatting" + }, + "Row": { + "$ref": "#/definitions/TableRowConditionalFormatting" + } + }, + "type": "object" + }, + "TableConfiguration": { + "additionalProperties": false, + "properties": { + "FieldOptions": { + "$ref": "#/definitions/TableFieldOptions" + }, + "FieldWells": { + "$ref": "#/definitions/TableFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "PaginatedReportOptions": { + "$ref": "#/definitions/TablePaginatedReportOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/TableSortConfiguration" + }, + "TableInlineVisualizations": { + "items": { + "$ref": "#/definitions/TableInlineVisualization" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TableOptions": { + "$ref": "#/definitions/TableOptions" + }, + "TotalOptions": { + "$ref": "#/definitions/TotalOptions" + } + }, + "type": "object" + }, + "TableFieldCustomIconContent": { + "additionalProperties": false, + "properties": { + "Icon": { + "$ref": "#/definitions/TableFieldIconSetType" + } + }, + "type": "object" + }, + "TableFieldCustomTextContent": { + "additionalProperties": false, + "properties": { + "FontConfiguration": { + "$ref": "#/definitions/FontConfiguration" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "FontConfiguration" + ], + "type": "object" + }, + "TableFieldIconSetType": { + "enum": [ + "LINK" + ], + "type": "string" + }, + "TableFieldImageConfiguration": { + "additionalProperties": false, + "properties": { + "SizingOptions": { + "$ref": "#/definitions/TableCellImageSizingConfiguration" + } + }, + "type": "object" + }, + "TableFieldLinkConfiguration": { + "additionalProperties": false, + "properties": { + "Content": { + "$ref": "#/definitions/TableFieldLinkContentConfiguration" + }, + "Target": { + "$ref": "#/definitions/URLTargetConfiguration" + } + }, + "required": [ + "Content", + "Target" + ], + "type": "object" + }, + "TableFieldLinkContentConfiguration": { + "additionalProperties": false, + "properties": { + "CustomIconContent": { + "$ref": "#/definitions/TableFieldCustomIconContent" + }, + "CustomTextContent": { + "$ref": "#/definitions/TableFieldCustomTextContent" + } + }, + "type": "object" + }, + "TableFieldOption": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "URLStyling": { + "$ref": "#/definitions/TableFieldURLConfiguration" + }, + "Visibility": {}, + "Width": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "FieldId" + ], + "type": "object" + }, + "TableFieldOptions": { + "additionalProperties": false, + "properties": { + "Order": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "PinnedFieldOptions": { + "$ref": "#/definitions/TablePinnedFieldOptions" + }, + "SelectedFieldOptions": { + "items": { + "$ref": "#/definitions/TableFieldOption" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "TransposedTableOptions": { + "items": { + "$ref": "#/definitions/TransposedTableOption" + }, + "maxItems": 10001, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableFieldURLConfiguration": { + "additionalProperties": false, + "properties": { + "ImageConfiguration": { + "$ref": "#/definitions/TableFieldImageConfiguration" + }, + "LinkConfiguration": { + "$ref": "#/definitions/TableFieldLinkConfiguration" + } + }, + "type": "object" + }, + "TableFieldWells": { + "additionalProperties": false, + "properties": { + "TableAggregatedFieldWells": { + "$ref": "#/definitions/TableAggregatedFieldWells" + }, + "TableUnaggregatedFieldWells": { + "$ref": "#/definitions/TableUnaggregatedFieldWells" + } + }, + "type": "object" + }, + "TableInlineVisualization": { + "additionalProperties": false, + "properties": { + "DataBars": { + "$ref": "#/definitions/DataBarsOptions" + } + }, + "type": "object" + }, + "TableOptions": { + "additionalProperties": false, + "properties": { + "CellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "HeaderStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "Orientation": { + "$ref": "#/definitions/TableOrientation" + }, + "RowAlternateColorOptions": { + "$ref": "#/definitions/RowAlternateColorOptions" + } + }, + "type": "object" + }, + "TableOrientation": { + "enum": [ + "VERTICAL", + "HORIZONTAL" + ], + "type": "string" + }, + "TablePaginatedReportOptions": { + "additionalProperties": false, + "properties": { + "OverflowColumnHeaderVisibility": {}, + "VerticalOverflowVisibility": {} + }, + "type": "object" + }, + "TablePinnedFieldOptions": { + "additionalProperties": false, + "properties": { + "PinnedLeftFields": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 201, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableRowConditionalFormatting": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "TableSideBorderOptions": { + "additionalProperties": false, + "properties": { + "Bottom": { + "$ref": "#/definitions/TableBorderOptions" + }, + "InnerHorizontal": { + "$ref": "#/definitions/TableBorderOptions" + }, + "InnerVertical": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Left": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Right": { + "$ref": "#/definitions/TableBorderOptions" + }, + "Top": { + "$ref": "#/definitions/TableBorderOptions" + } + }, + "type": "object" + }, + "TableSortConfiguration": { + "additionalProperties": false, + "properties": { + "PaginationConfiguration": { + "$ref": "#/definitions/PaginationConfiguration" + }, + "RowSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableStyleTarget": { + "additionalProperties": false, + "properties": { + "CellType": { + "$ref": "#/definitions/StyledCellType" + } + }, + "required": [ + "CellType" + ], + "type": "object" + }, + "TableTotalsPlacement": { + "enum": [ + "START", + "END", + "AUTO" + ], + "type": "string" + }, + "TableTotalsScrollStatus": { + "enum": [ + "PINNED", + "SCROLLED" + ], + "type": "string" + }, + "TableUnaggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Values": { + "items": { + "$ref": "#/definitions/UnaggregatedField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TableVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/TableConfiguration" + }, + "ConditionalFormatting": { + "$ref": "#/definitions/TableConditionalFormatting" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", + "properties": { + "Key": { + "description": "

Tag key.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "

Tag value.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TargetVisualOptions": { + "enum": [ + "ALL_VISUALS" + ], + "type": "string" + }, + "TemplateError": { + "additionalProperties": false, + "description": "

List of errors that occurred when the template version creation failed.

", + "properties": { + "Message": { + "description": "

Description of the error type.

", + "pattern": "\\S", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/TemplateErrorType" + }, + "ViolatedEntities": { + "description": "

An error path that shows which entities caused the template error.

", + "items": { + "$ref": "#/definitions/Entity" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TemplateErrorType": { + "enum": [ + "SOURCE_NOT_FOUND", + "DATA_SET_NOT_FOUND", + "INTERNAL_FAILURE", + "ACCESS_DENIED" + ], + "type": "string" + }, + "TemplateSourceAnalysis": { + "additionalProperties": false, + "description": "

The source analysis of the template.

", + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the resource.

", + "type": "string" + }, + "DataSetReferences": { + "description": "

A structure containing information about the dataset references used as placeholders\n in the template.

", + "items": { + "$ref": "#/definitions/DataSetReference" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Arn", + "DataSetReferences" + ], + "type": "object" + }, + "TemplateSourceEntity": { + "additionalProperties": false, + "description": "

The source entity of the template.

", + "properties": { + "SourceAnalysis": { + "$ref": "#/definitions/TemplateSourceAnalysis" + }, + "SourceTemplate": { + "$ref": "#/definitions/TemplateSourceTemplate" + } + }, + "type": "object" + }, + "TemplateSourceTemplate": { + "additionalProperties": false, + "description": "

The source template of the template.

", + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the resource.

", + "type": "string" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "TemplateVersion": { + "additionalProperties": false, + "description": "

A version of a template.

", + "properties": { + "CreatedTime": { + "description": "

The time that this template version was created.

", + "format": "date-time", + "type": "string" + }, + "DataSetConfigurations": { + "description": "

Schema of the dataset identified by the placeholder. Any dashboard created from this\n template should be bound to new datasets matching the same schema described through this\n API operation.

", + "items": { + "$ref": "#/definitions/DataSetConfiguration" + }, + "maxItems": 30, + "minItems": 0, + "type": "array" + }, + "Description": { + "description": "

The description of the template.

", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Errors": { + "description": "

Errors associated with this template version.

", + "items": { + "$ref": "#/definitions/TemplateError" + }, + "minItems": 1, + "type": "array" + }, + "Sheets": { + "description": "

A list of the associated sheets with the unique identifier and name of each sheet.

", + "items": { + "$ref": "#/definitions/Sheet" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "SourceEntityArn": { + "description": "

The Amazon Resource Name (ARN) of an analysis or template that was used to create this\n template.

", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/ResourceStatus" + }, + "ThemeArn": { + "description": "

The ARN of the theme associated with this version of the template.

", + "type": "string" + }, + "VersionNumber": { + "description": "

The version number of the template version.

", + "minimum": 1, + "type": "number" + } + }, + "type": "object" + }, + "TemplateVersionDefinition": { + "additionalProperties": false, + "properties": { + "AnalysisDefaults": { + "$ref": "#/definitions/AnalysisDefaults" + }, + "CalculatedFields": { + "items": { + "$ref": "#/definitions/CalculatedField" + }, + "maxItems": 500, + "minItems": 0, + "type": "array" + }, + "ColumnConfigurations": { + "items": { + "$ref": "#/definitions/ColumnConfiguration" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "DataSetConfigurations": { + "items": { + "$ref": "#/definitions/DataSetConfiguration" + }, + "maxItems": 30, + "minItems": 0, + "type": "array" + }, + "FilterGroups": { + "items": { + "$ref": "#/definitions/FilterGroup" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array" + }, + "Options": { + "$ref": "#/definitions/AssetOptions" + }, + "ParameterDeclarations": { + "items": { + "$ref": "#/definitions/ParameterDeclaration" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "QueryExecutionOptions": { + "$ref": "#/definitions/QueryExecutionOptions" + }, + "Sheets": { + "items": { + "$ref": "#/definitions/SheetDefinition" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "DataSetConfigurations" + ], + "type": "object" + }, + "TextAreaControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "PlaceholderOptions": { + "$ref": "#/definitions/TextControlPlaceholderOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "TextConditionalFormat": { + "additionalProperties": false, + "properties": { + "BackgroundColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + }, + "Icon": { + "$ref": "#/definitions/ConditionalFormattingIcon" + }, + "TextColor": { + "$ref": "#/definitions/ConditionalFormattingColor" + } + }, + "type": "object" + }, + "TextControlPlaceholderOptions": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "TextFieldControlDisplayOptions": { + "additionalProperties": false, + "properties": { + "InfoIconLabelOptions": { + "$ref": "#/definitions/SheetControlInfoIconLabelOptions" + }, + "PlaceholderOptions": { + "$ref": "#/definitions/TextControlPlaceholderOptions" + }, + "TitleOptions": { + "$ref": "#/definitions/LabelOptions" + } + }, + "type": "object" + }, + "TextWrap": { + "enum": [ + "NONE", + "WRAP" + ], + "type": "string" + }, + "ThousandSeparatorOptions": { + "additionalProperties": false, + "properties": { + "GroupingStyle": { + "$ref": "#/definitions/DigitGroupingStyle" + }, + "Symbol": { + "$ref": "#/definitions/NumericSeparatorSymbol" + }, + "Visibility": {} + }, + "type": "object" + }, + "TimeBasedForecastProperties": { + "additionalProperties": false, + "properties": { + "LowerBoundary": { + "default": null, + "type": "number" + }, + "PeriodsBackward": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "PeriodsForward": { + "maximum": 1000, + "minimum": 1, + "type": "number" + }, + "PredictionInterval": { + "maximum": 95, + "minimum": 50, + "type": "number" + }, + "Seasonality": { + "maximum": 180, + "minimum": 1, + "type": "number" + }, + "UpperBoundary": { + "default": null, + "type": "number" + } + }, + "type": "object" + }, + "TimeEqualityFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + }, + "Value": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "Column", + "FilterId" + ], + "type": "object" + }, + "TimeGranularity": { + "enum": [ + "YEAR", + "QUARTER", + "MONTH", + "WEEK", + "DAY", + "HOUR", + "MINUTE", + "SECOND", + "MILLISECOND" + ], + "type": "string" + }, + "TimeRangeDrillDownFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "RangeMaximum": { + "format": "date-time", + "type": "string" + }, + "RangeMinimum": { + "format": "date-time", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Column", + "RangeMaximum", + "RangeMinimum", + "TimeGranularity" + ], + "type": "object" + }, + "TimeRangeFilter": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "ExcludePeriodConfiguration": { + "$ref": "#/definitions/ExcludePeriodConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "IncludeMaximum": { + "default": null, + "type": "boolean" + }, + "IncludeMinimum": { + "default": null, + "type": "boolean" + }, + "NullOption": { + "$ref": "#/definitions/FilterNullOption" + }, + "RangeMaximumValue": { + "$ref": "#/definitions/TimeRangeFilterValue" + }, + "RangeMinimumValue": { + "$ref": "#/definitions/TimeRangeFilterValue" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "Column", + "FilterId", + "NullOption" + ], + "type": "object" + }, + "TimeRangeFilterValue": { + "additionalProperties": false, + "properties": { + "Parameter": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "RollingDate": { + "$ref": "#/definitions/RollingDateConfiguration" + }, + "StaticValue": { + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "TooltipItem": { + "additionalProperties": false, + "properties": { + "ColumnTooltipItem": { + "$ref": "#/definitions/ColumnTooltipItem" + }, + "FieldTooltipItem": { + "$ref": "#/definitions/FieldTooltipItem" + } + }, + "type": "object" + }, + "TooltipOptions": { + "additionalProperties": false, + "properties": { + "FieldBasedTooltip": { + "$ref": "#/definitions/FieldBasedTooltip" + }, + "SelectedTooltipType": { + "$ref": "#/definitions/SelectedTooltipType" + }, + "TooltipVisibility": {} + }, + "type": "object" + }, + "TooltipTarget": { + "enum": [ + "BOTH", + "BAR", + "LINE" + ], + "type": "string" + }, + "TooltipTitleType": { + "enum": [ + "NONE", + "PRIMARY_VALUE" + ], + "type": "string" + }, + "TopBottomComputationType": { + "enum": [ + "TOP", + "BOTTOM" + ], + "type": "string" + }, + "TopBottomFilter": { + "additionalProperties": false, + "properties": { + "AggregationSortConfigurations": { + "items": { + "$ref": "#/definitions/AggregationSortConfiguration" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "DefaultFilterControlConfiguration": { + "$ref": "#/definitions/DefaultFilterControlConfiguration" + }, + "FilterId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Limit": { + "default": null, + "type": "number" + }, + "ParameterName": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "TimeGranularity": { + "$ref": "#/definitions/TimeGranularity" + } + }, + "required": [ + "AggregationSortConfigurations", + "Column", + "FilterId" + ], + "type": "object" + }, + "TopBottomMoversComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "MoverSize": { + "default": 0, + "maximum": 20, + "minimum": 1, + "type": "number" + }, + "Name": { + "type": "string" + }, + "SortOrder": { + "$ref": "#/definitions/TopBottomSortOrder" + }, + "Time": { + "$ref": "#/definitions/DimensionField" + }, + "Type": { + "$ref": "#/definitions/TopBottomComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "TopBottomRankedComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "ResultSize": { + "default": 0, + "maximum": 20, + "minimum": 1, + "type": "number" + }, + "Type": { + "$ref": "#/definitions/TopBottomComputationType" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId", + "Type" + ], + "type": "object" + }, + "TopBottomSortOrder": { + "enum": [ + "PERCENT_DIFFERENCE", + "ABSOLUTE_DIFFERENCE" + ], + "type": "string" + }, + "TotalAggregationComputation": { + "additionalProperties": false, + "properties": { + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Value": { + "$ref": "#/definitions/MeasureField" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "TotalAggregationFunction": { + "additionalProperties": false, + "properties": { + "SimpleTotalAggregationFunction": { + "$ref": "#/definitions/SimpleTotalAggregationFunction" + } + }, + "type": "object" + }, + "TotalAggregationOption": { + "additionalProperties": false, + "properties": { + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "TotalAggregationFunction": { + "$ref": "#/definitions/TotalAggregationFunction" + } + }, + "required": [ + "FieldId", + "TotalAggregationFunction" + ], + "type": "object" + }, + "TotalOptions": { + "additionalProperties": false, + "properties": { + "CustomLabel": { + "type": "string" + }, + "Placement": { + "$ref": "#/definitions/TableTotalsPlacement" + }, + "ScrollStatus": { + "$ref": "#/definitions/TableTotalsScrollStatus" + }, + "TotalAggregationOptions": { + "items": { + "$ref": "#/definitions/TotalAggregationOption" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TotalCellStyle": { + "$ref": "#/definitions/TableCellStyle" + }, + "TotalsVisibility": {} + }, + "type": "object" + }, + "TransposedColumnType": { + "enum": [ + "ROW_HEADER_COLUMN", + "VALUE_COLUMN" + ], + "type": "string" + }, + "TransposedTableOption": { + "additionalProperties": false, + "properties": { + "ColumnIndex": { + "maximum": 9999, + "minimum": 0, + "type": "number" + }, + "ColumnType": { + "$ref": "#/definitions/TransposedColumnType" + }, + "ColumnWidth": { + "description": "String based length that is composed of value and unit in px", + "type": "string" + } + }, + "required": [ + "ColumnType" + ], + "type": "object" + }, + "TreeMapAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Colors": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Groups": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Sizes": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TreeMapConfiguration": { + "additionalProperties": false, + "properties": { + "ColorLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorScale": { + "$ref": "#/definitions/ColorScale" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/TreeMapFieldWells" + }, + "GroupLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "SizeLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/TreeMapSortConfiguration" + }, + "Tooltip": { + "$ref": "#/definitions/TooltipOptions" + } + }, + "type": "object" + }, + "TreeMapFieldWells": { + "additionalProperties": false, + "properties": { + "TreeMapAggregatedFieldWells": { + "$ref": "#/definitions/TreeMapAggregatedFieldWells" + } + }, + "type": "object" + }, + "TreeMapSortConfiguration": { + "additionalProperties": false, + "properties": { + "TreeMapGroupItemsLimitConfiguration": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "TreeMapSort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "TreeMapVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/TreeMapConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "TrendArrowOptions": { + "additionalProperties": false, + "properties": { + "Visibility": {} + }, + "type": "object" + }, + "URLTargetConfiguration": { + "enum": [ + "NEW_TAB", + "NEW_WINDOW", + "SAME_TAB" + ], + "type": "string" + }, + "UnaggregatedField": { + "additionalProperties": false, + "properties": { + "Column": { + "$ref": "#/definitions/ColumnIdentifier" + }, + "FieldId": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "FormatConfiguration": { + "$ref": "#/definitions/FormatConfiguration" + } + }, + "required": [ + "Column", + "FieldId" + ], + "type": "object" + }, + "UniqueValuesComputation": { + "additionalProperties": false, + "properties": { + "Category": { + "$ref": "#/definitions/DimensionField" + }, + "ComputationId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "ComputationId" + ], + "type": "object" + }, + "ValidationStrategy": { + "additionalProperties": false, + "description": "

The option to relax the validation that is required to create and update analyses, dashboards, and templates with definition objects. When you set this value to LENIENT, validation is skipped for specific errors.

", + "properties": { + "Mode": { + "$ref": "#/definitions/ValidationStrategyMode" + } + }, + "required": [ + "Mode" + ], + "type": "object" + }, + "ValidationStrategyMode": { + "enum": [ + "STRICT", + "LENIENT" + ], + "type": "string" + }, + "ValueWhenUnsetOption": { + "enum": [ + "RECOMMENDED_VALUE", + "NULL" + ], + "type": "string" + }, + "VerticalTextAlignment": { + "enum": [ + "TOP", + "MIDDLE", + "BOTTOM", + "AUTO" + ], + "type": "string" + }, + "Visibility": { + "enum": [ + "HIDDEN", + "VISIBLE" + ], + "type": "string" + }, + "VisibleRangeOptions": { + "additionalProperties": false, + "properties": { + "PercentRange": { + "$ref": "#/definitions/PercentVisibleRange" + } + }, + "type": "object" + }, + "Visual": { + "additionalProperties": false, + "properties": { + "BarChartVisual": { + "$ref": "#/definitions/BarChartVisual" + }, + "BoxPlotVisual": { + "$ref": "#/definitions/BoxPlotVisual" + }, + "ComboChartVisual": { + "$ref": "#/definitions/ComboChartVisual" + }, + "CustomContentVisual": { + "$ref": "#/definitions/CustomContentVisual" + }, + "EmptyVisual": { + "$ref": "#/definitions/EmptyVisual" + }, + "FilledMapVisual": { + "$ref": "#/definitions/FilledMapVisual" + }, + "FunnelChartVisual": { + "$ref": "#/definitions/FunnelChartVisual" + }, + "GaugeChartVisual": { + "$ref": "#/definitions/GaugeChartVisual" + }, + "GeospatialMapVisual": { + "$ref": "#/definitions/GeospatialMapVisual" + }, + "HeatMapVisual": { + "$ref": "#/definitions/HeatMapVisual" + }, + "HistogramVisual": { + "$ref": "#/definitions/HistogramVisual" + }, + "InsightVisual": { + "$ref": "#/definitions/InsightVisual" + }, + "KPIVisual": { + "$ref": "#/definitions/KPIVisual" + }, + "LineChartVisual": { + "$ref": "#/definitions/LineChartVisual" + }, + "PieChartVisual": { + "$ref": "#/definitions/PieChartVisual" + }, + "PivotTableVisual": { + "$ref": "#/definitions/PivotTableVisual" + }, + "PluginVisual": { + "$ref": "#/definitions/PluginVisual" + }, + "RadarChartVisual": { + "$ref": "#/definitions/RadarChartVisual" + }, + "SankeyDiagramVisual": { + "$ref": "#/definitions/SankeyDiagramVisual" + }, + "ScatterPlotVisual": { + "$ref": "#/definitions/ScatterPlotVisual" + }, + "TableVisual": { + "$ref": "#/definitions/TableVisual" + }, + "TreeMapVisual": { + "$ref": "#/definitions/TreeMapVisual" + }, + "WaterfallVisual": { + "$ref": "#/definitions/WaterfallVisual" + }, + "WordCloudVisual": { + "$ref": "#/definitions/WordCloudVisual" + } + }, + "type": "object" + }, + "VisualCustomAction": { + "additionalProperties": false, + "properties": { + "ActionOperations": { + "items": { + "$ref": "#/definitions/VisualCustomActionOperation" + }, + "maxItems": 2, + "minItems": 1, + "type": "array" + }, + "CustomActionId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/WidgetStatus" + }, + "Trigger": { + "$ref": "#/definitions/VisualCustomActionTrigger" + } + }, + "required": [ + "ActionOperations", + "CustomActionId", + "Name", + "Trigger" + ], + "type": "object" + }, + "VisualCustomActionOperation": { + "additionalProperties": false, + "properties": { + "FilterOperation": { + "$ref": "#/definitions/CustomActionFilterOperation" + }, + "NavigationOperation": { + "$ref": "#/definitions/CustomActionNavigationOperation" + }, + "SetParametersOperation": { + "$ref": "#/definitions/CustomActionSetParametersOperation" + }, + "URLOperation": { + "$ref": "#/definitions/CustomActionURLOperation" + } + }, + "type": "object" + }, + "VisualCustomActionTrigger": { + "enum": [ + "DATA_POINT_CLICK", + "DATA_POINT_MENU" + ], + "type": "string" + }, + "VisualInteractionOptions": { + "additionalProperties": false, + "properties": { + "ContextMenuOption": { + "$ref": "#/definitions/ContextMenuOption" + }, + "VisualMenuOption": { + "$ref": "#/definitions/VisualMenuOption" + } + }, + "type": "object" + }, + "VisualMenuOption": { + "additionalProperties": false, + "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/DashboardBehavior" + } + }, + "type": "object" + }, + "VisualPalette": { + "additionalProperties": false, + "properties": { + "ChartColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "ColorMap": { + "items": { + "$ref": "#/definitions/DataPathColor" + }, + "maxItems": 5000, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "VisualSubtitleLabelOptions": { + "additionalProperties": false, + "properties": { + "FormatText": { + "$ref": "#/definitions/LongFormatText" + }, + "Visibility": {} + }, + "type": "object" + }, + "VisualTitleLabelOptions": { + "additionalProperties": false, + "properties": { + "FormatText": { + "$ref": "#/definitions/ShortFormatText" + }, + "Visibility": {} + }, + "type": "object" + }, + "WaterfallChartAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "Breakdowns": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Categories": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "Values": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "WaterfallChartColorConfiguration": { + "additionalProperties": false, + "properties": { + "GroupColorConfiguration": { + "$ref": "#/definitions/WaterfallChartGroupColorConfiguration" + } + }, + "type": "object" + }, + "WaterfallChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "CategoryAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "ColorConfiguration": { + "$ref": "#/definitions/WaterfallChartColorConfiguration" + }, + "DataLabels": { + "$ref": "#/definitions/DataLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/WaterfallChartFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "Legend": { + "$ref": "#/definitions/LegendOptions" + }, + "PrimaryYAxisDisplayOptions": { + "$ref": "#/definitions/AxisDisplayOptions" + }, + "PrimaryYAxisLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/WaterfallChartSortConfiguration" + }, + "VisualPalette": { + "$ref": "#/definitions/VisualPalette" + }, + "WaterfallChartOptions": { + "$ref": "#/definitions/WaterfallChartOptions" + } + }, + "type": "object" + }, + "WaterfallChartFieldWells": { + "additionalProperties": false, + "properties": { + "WaterfallChartAggregatedFieldWells": { + "$ref": "#/definitions/WaterfallChartAggregatedFieldWells" + } + }, + "type": "object" + }, + "WaterfallChartGroupColorConfiguration": { + "additionalProperties": false, + "properties": { + "NegativeBarColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "PositiveBarColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "TotalBarColor": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "type": "object" + }, + "WaterfallChartOptions": { + "additionalProperties": false, + "properties": { + "TotalBarLabel": { + "type": "string" + } + }, + "type": "object" + }, + "WaterfallChartSortConfiguration": { + "additionalProperties": false, + "properties": { + "BreakdownItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "WaterfallVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/WaterfallChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "WhatIfPointScenario": { + "additionalProperties": false, + "properties": { + "Date": { + "format": "date-time", + "type": "string" + }, + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "Date", + "Value" + ], + "type": "object" + }, + "WhatIfRangeScenario": { + "additionalProperties": false, + "properties": { + "EndDate": { + "format": "date-time", + "type": "string" + }, + "StartDate": { + "format": "date-time", + "type": "string" + }, + "Value": { + "default": 0, + "type": "number" + } + }, + "required": [ + "EndDate", + "StartDate", + "Value" + ], + "type": "object" + }, + "WidgetStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "WordCloudAggregatedFieldWells": { + "additionalProperties": false, + "properties": { + "GroupBy": { + "items": { + "$ref": "#/definitions/DimensionField" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Size": { + "items": { + "$ref": "#/definitions/MeasureField" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "WordCloudChartConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryLabelOptions": { + "$ref": "#/definitions/ChartAxisLabelOptions" + }, + "FieldWells": { + "$ref": "#/definitions/WordCloudFieldWells" + }, + "Interactions": { + "$ref": "#/definitions/VisualInteractionOptions" + }, + "SortConfiguration": { + "$ref": "#/definitions/WordCloudSortConfiguration" + }, + "WordCloudOptions": { + "$ref": "#/definitions/WordCloudOptions" + } + }, + "type": "object" + }, + "WordCloudCloudLayout": { + "enum": [ + "FLUID", + "NORMAL" + ], + "type": "string" + }, + "WordCloudFieldWells": { + "additionalProperties": false, + "properties": { + "WordCloudAggregatedFieldWells": { + "$ref": "#/definitions/WordCloudAggregatedFieldWells" + } + }, + "type": "object" + }, + "WordCloudOptions": { + "additionalProperties": false, + "properties": { + "CloudLayout": { + "$ref": "#/definitions/WordCloudCloudLayout" + }, + "MaximumStringLength": { + "maximum": 100, + "minimum": 1, + "type": "number" + }, + "WordCasing": { + "$ref": "#/definitions/WordCloudWordCasing" + }, + "WordOrientation": { + "$ref": "#/definitions/WordCloudWordOrientation" + }, + "WordPadding": { + "$ref": "#/definitions/WordCloudWordPadding" + }, + "WordScaling": { + "$ref": "#/definitions/WordCloudWordScaling" + } + }, + "type": "object" + }, + "WordCloudSortConfiguration": { + "additionalProperties": false, + "properties": { + "CategoryItemsLimit": { + "$ref": "#/definitions/ItemsLimitConfiguration" + }, + "CategorySort": { + "items": { + "$ref": "#/definitions/FieldSortOptions" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "WordCloudVisual": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/VisualCustomAction" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "ChartConfiguration": { + "$ref": "#/definitions/WordCloudChartConfiguration" + }, + "ColumnHierarchies": { + "items": { + "$ref": "#/definitions/ColumnHierarchy" + }, + "maxItems": 2, + "minItems": 0, + "type": "array" + }, + "Subtitle": { + "$ref": "#/definitions/VisualSubtitleLabelOptions" + }, + "Title": { + "$ref": "#/definitions/VisualTitleLabelOptions" + }, + "VisualContentAltText": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "VisualId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + } + }, + "required": [ + "VisualId" + ], + "type": "object" + }, + "WordCloudWordCasing": { + "enum": [ + "LOWER_CASE", + "EXISTING_CASE" + ], + "type": "string" + }, + "WordCloudWordOrientation": { + "enum": [ + "HORIZONTAL", + "HORIZONTAL_AND_VERTICAL" + ], + "type": "string" + }, + "WordCloudWordPadding": { + "enum": [ + "NONE", + "SMALL", + "MEDIUM", + "LARGE" + ], + "type": "string" + }, + "WordCloudWordScaling": { + "enum": [ + "EMPHASIZE", + "NORMAL" + ], + "type": "string" + }, + "YAxisOptions": { + "additionalProperties": false, + "properties": { + "YAxis": { + "$ref": "#/definitions/SingleYAxisOption" + } + }, + "required": [ + "YAxis" + ], + "type": "object" + } + }, + "description": "Definition of the AWS::QuickSight::Template Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:DescribeTemplate", + "quicksight:DescribeTemplatePermissions", + "quicksight:CreateTemplate", + "quicksight:DescribeAnalysis", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "quicksight:DescribeTemplate", + "quicksight:DeleteTemplate" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "AwsAccountId": { + "$ref": "resource-schema.json#/properties/AwsAccountId" + } + }, + "required": [ + "AwsAccountId" + ] + }, + "permissions": [ + "quicksight:ListTemplates" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeTemplate", + "quicksight:DescribeTemplatePermissions", + "quicksight:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "quicksight:DescribeTemplate", + "quicksight:DescribeTemplatePermissions", + "quicksight:UpdateTemplate", + "quicksight:UpdateTemplatePermissions", + "quicksight:PassDataSet", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AwsAccountId", + "/properties/TemplateId" + ], + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the template.

", + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "CreatedTime": { + "description": "

Time when this was created.

", + "format": "date-time", + "type": "string" + }, + "Definition": { + "$ref": "#/definitions/TemplateVersionDefinition" + }, + "LastUpdatedTime": { + "description": "

Time when this was last updated.

", + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Permissions": { + "items": { + "$ref": "#/definitions/ResourcePermission" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + }, + "SourceEntity": { + "$ref": "#/definitions/TemplateSourceEntity" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "TemplateId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ValidationStrategy": { + "$ref": "#/definitions/ValidationStrategy" + }, + "Version": { + "$ref": "#/definitions/TemplateVersion" + }, + "VersionDescription": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastUpdatedTime", + "/properties/Version" + ], + "required": [ + "AwsAccountId", + "TemplateId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QuickSight::Template", + "writeOnlyProperties": [ + "/properties/Definition", + "/properties/VersionDescription", + "/properties/SourceEntity", + "/properties/ValidationStrategy" + ] +} diff --git a/src/schema/aws-quicksight-theme.json b/src/schema/aws-quicksight-theme.json index 69bfdc68..8f35348e 100644 --- a/src/schema/aws-quicksight-theme.json +++ b/src/schema/aws-quicksight-theme.json @@ -1,526 +1,533 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AwsAccountId", - "/properties/ThemeId" - ], - "definitions": { - "BorderStyle": { - "additionalProperties": false, - "description": "

The display options for tile borders for visuals.

", - "properties": { - "Show": { - "default": null, - "description": "

The option to enable display of borders for visuals.

", - "type": "boolean" - } - }, - "type": "object" - }, - "DataColorPalette": { - "additionalProperties": false, - "description": "

The theme colors that are used for data colors in charts. The colors description is a\n hexadecimal color code that consists of six alphanumerical characters, prefixed with\n #, for example #37BFF5.

", - "properties": { - "Colors": { - "description": "

The hexadecimal codes for the colors.

", - "items": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "EmptyFillColor": { - "description": "

The hexadecimal code of a color that applies to charts where a lack of data is\n highlighted.

", - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "MinMaxGradient": { - "description": "

The minimum and maximum hexadecimal codes that describe a color gradient.

", - "items": { - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "Font": { - "additionalProperties": false, - "properties": { - "FontFamily": { - "type": "string" - } - }, - "type": "object" - }, - "GutterStyle": { - "additionalProperties": false, - "description": "

The display options for gutter spacing between tiles on a sheet.

", - "properties": { - "Show": { - "default": null, - "description": "

This Boolean value controls whether to display a gutter space between sheet tiles.\n

", - "type": "boolean" - } - }, - "type": "object" - }, - "MarginStyle": { - "additionalProperties": false, - "description": "

The display options for margins around the outside edge of sheets.

", - "properties": { - "Show": { - "default": null, - "description": "

This Boolean value controls whether to display sheet margins.

", - "type": "boolean" - } - }, - "type": "object" - }, - "ResourcePermission": { - "additionalProperties": false, - "description": "

Permission for the resource.

", - "properties": { - "Actions": { - "description": "

The IAM action to grant or revoke permissions on.

", - "items": { - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - }, - "Principal": { - "description": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Actions", - "Principal" - ], - "type": "object" - }, - "ResourceStatus": { - "enum": [ - "CREATION_IN_PROGRESS", - "CREATION_SUCCESSFUL", - "CREATION_FAILED", - "UPDATE_IN_PROGRESS", - "UPDATE_SUCCESSFUL", - "UPDATE_FAILED", - "DELETED" - ], - "type": "string" - }, - "SheetStyle": { - "additionalProperties": false, - "description": "

The theme display options for sheets.

", - "properties": { - "Tile": { - "$ref": "#/definitions/TileStyle" - }, - "TileLayout": { - "$ref": "#/definitions/TileLayoutStyle" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", - "properties": { - "Key": { - "description": "

Tag key.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "

Tag value.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "ThemeConfiguration": { - "additionalProperties": false, - "description": "

The theme configuration. This configuration contains all of the display properties for\n a theme.

", - "properties": { - "DataColorPalette": { - "$ref": "#/definitions/DataColorPalette" - }, - "Sheet": { - "$ref": "#/definitions/SheetStyle" - }, - "Typography": { - "$ref": "#/definitions/Typography" - }, - "UIColorPalette": { - "$ref": "#/definitions/UIColorPalette" - } - }, - "type": "object" - }, - "ThemeError": { - "additionalProperties": false, - "description": "

Theme error.

", - "properties": { - "Message": { - "description": "

The error message.

", - "pattern": "\\S", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/ThemeErrorType" - } - }, - "type": "object" - }, - "ThemeErrorType": { - "enum": [ - "INTERNAL_FAILURE" - ], - "type": "string" - }, - "ThemeType": { - "enum": [ - "QUICKSIGHT", - "CUSTOM", - "ALL" - ], - "type": "string" - }, - "ThemeVersion": { - "additionalProperties": false, - "description": "

A version of a theme.

", - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) of the resource.

", - "type": "string" - }, - "BaseThemeId": { - "description": "

The Amazon QuickSight-defined ID of the theme that a custom theme inherits from. All\n themes initially inherit from a default Amazon QuickSight theme.

", - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Configuration": { - "$ref": "#/definitions/ThemeConfiguration" - }, - "CreatedTime": { - "description": "

The date and time that this theme version was created.

", - "format": "date-time", - "type": "string" - }, - "Description": { - "description": "

The description of the theme.

", - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "Errors": { - "description": "

Errors associated with the theme.

", - "items": { - "$ref": "#/definitions/ThemeError" - }, - "minItems": 1, - "type": "array" - }, - "Status": { - "$ref": "#/definitions/ResourceStatus" - }, - "VersionNumber": { - "description": "

The version number of the theme.

", - "minimum": 1, - "type": "number" - } - }, - "type": "object" - }, - "TileLayoutStyle": { - "additionalProperties": false, - "description": "

The display options for the layout of tiles on a sheet.

", - "properties": { - "Gutter": { - "$ref": "#/definitions/GutterStyle" - }, - "Margin": { - "$ref": "#/definitions/MarginStyle" - } - }, - "type": "object" - }, - "TileStyle": { - "additionalProperties": false, - "description": "

Display options related to tiles on a sheet.

", - "properties": { - "Border": { - "$ref": "#/definitions/BorderStyle" - } - }, - "type": "object" - }, - "Typography": { - "additionalProperties": false, - "properties": { - "FontFamilies": { - "items": { - "$ref": "#/definitions/Font" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - }, - "UIColorPalette": { - "additionalProperties": false, - "description": "

The theme colors that apply to UI and to charts, excluding data colors. The colors\n description is a hexadecimal color code that consists of six alphanumerical characters,\n prefixed with #, for example #37BFF5. For more information, see Using Themes in Amazon QuickSight in the Amazon QuickSight User\n Guide.\n

", - "properties": { - "Accent": { - "description": "

This color is that applies to selected states and buttons.

", - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "AccentForeground": { - "description": "

The foreground color that applies to any text or other elements that appear over the\n accent color.

", - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Danger": { - "description": "

The color that applies to error messages.

", - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "DangerForeground": { - "description": "

The foreground color that applies to any text or other elements that appear over the\n error color.

", - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Dimension": { - "description": "

The color that applies to the names of fields that are identified as\n dimensions.

", - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "DimensionForeground": { - "description": "

The foreground color that applies to any text or other elements that appear over the\n dimension color.

", - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Measure": { - "description": "

The color that applies to the names of fields that are identified as measures.

", - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "MeasureForeground": { - "description": "

The foreground color that applies to any text or other elements that appear over the\n measure color.

", - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "PrimaryBackground": { - "description": "

The background color that applies to visuals and other high emphasis UI.

", - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "PrimaryForeground": { - "description": "

The color of text and other foreground elements that appear over the primary\n background regions, such as grid lines, borders, table banding, icons, and so on.

", - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "SecondaryBackground": { - "description": "

The background color that applies to the sheet background and sheet controls.

", - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "SecondaryForeground": { - "description": "

The foreground color that applies to any sheet title, sheet control text, or UI that\n appears over the secondary background.

", - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Success": { - "description": "

The color that applies to success messages, for example the check mark for a\n successful download.

", - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "SuccessForeground": { - "description": "

The foreground color that applies to any text or other elements that appear over the\n success color.

", - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "Warning": { - "description": "

This color that applies to warning and informational messages.

", - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - }, - "WarningForeground": { - "description": "

The foreground color that applies to any text or other elements that appear over the\n warning color.

", - "pattern": "^#[A-F0-9]{6}$", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of the AWS::QuickSight::Theme Resource Type.", - "handlers": { - "create": { - "permissions": [ - "quicksight:DescribeTheme", - "quicksight:DescribeThemePermissions", - "quicksight:CreateTheme", - "quicksight:TagResource", - "quicksight:UntagResource", - "quicksight:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "quicksight:DescribeTheme", - "quicksight:DeleteTheme" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "AwsAccountId": { - "$ref": "resource-schema.json#/properties/AwsAccountId" - } - }, - "required": [ - "AwsAccountId" - ] - }, - "permissions": [ - "quicksight:ListThemes" - ] - }, - "read": { - "permissions": [ - "quicksight:DescribeTheme", - "quicksight:DescribeThemePermissions", - "quicksight:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "quicksight:DescribeTheme", - "quicksight:DescribeThemePermissions", - "quicksight:UpdateTheme", - "quicksight:UpdateThemePermissions", - "quicksight:TagResource", - "quicksight:UntagResource", - "quicksight:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ThemeId", - "/properties/AwsAccountId" - ], - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) of the theme.

", - "type": "string" - }, - "AwsAccountId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "BaseThemeId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Configuration": { - "$ref": "#/definitions/ThemeConfiguration" - }, - "CreatedTime": { - "description": "

The date and time that the theme was created.

", - "format": "date-time", - "type": "string" - }, - "LastUpdatedTime": { - "description": "

The date and time that the theme was last updated.

", - "format": "date-time", - "type": "string" - }, - "Name": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Permissions": { - "items": { - "$ref": "#/definitions/ResourcePermission" - }, - "maxItems": 64, - "minItems": 1, - "type": "array" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "ThemeId": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/ThemeType" - }, - "Version": { - "$ref": "#/definitions/ThemeVersion" - }, - "VersionDescription": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CreatedTime", - "/properties/Version", - "/properties/LastUpdatedTime", - "/properties/Arn", - "/properties/Type" - ], - "required": [ - "AwsAccountId", - "ThemeId", - "BaseThemeId", - "Configuration", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", - "typeName": "AWS::QuickSight::Theme", - "writeOnlyProperties": [ - "/properties/BaseThemeId", - "/properties/Configuration", - "/properties/VersionDescription" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/ThemeId" + ], + "definitions": { + "BorderStyle": { + "additionalProperties": false, + "description": "

The display options for tile borders for visuals.

", + "properties": { + "Show": { + "default": null, + "description": "

The option to enable display of borders for visuals.

", + "type": "boolean" + } + }, + "type": "object" + }, + "DataColorPalette": { + "additionalProperties": false, + "description": "

The theme colors that are used for data colors in charts. The colors description is a\n hexadecimal color code that consists of six alphanumerical characters, prefixed with\n #, for example #37BFF5.

", + "properties": { + "Colors": { + "description": "

The hexadecimal codes for the colors.

", + "items": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "EmptyFillColor": { + "description": "

The hexadecimal code of a color that applies to charts where a lack of data is\n highlighted.

", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "MinMaxGradient": { + "description": "

The minimum and maximum hexadecimal codes that describe a color gradient.

", + "items": { + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "Font": { + "additionalProperties": false, + "properties": { + "FontFamily": { + "type": "string" + } + }, + "type": "object" + }, + "GutterStyle": { + "additionalProperties": false, + "description": "

The display options for gutter spacing between tiles on a sheet.

", + "properties": { + "Show": { + "default": null, + "description": "

This Boolean value controls whether to display a gutter space between sheet tiles.\n

", + "type": "boolean" + } + }, + "type": "object" + }, + "MarginStyle": { + "additionalProperties": false, + "description": "

The display options for margins around the outside edge of sheets.

", + "properties": { + "Show": { + "default": null, + "description": "

This Boolean value controls whether to display sheet margins.

", + "type": "boolean" + } + }, + "type": "object" + }, + "ResourcePermission": { + "additionalProperties": false, + "description": "

Permission for the resource.

", + "properties": { + "Actions": { + "description": "

The IAM action to grant or revoke permissions on.

", + "items": { + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "Principal": { + "description": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Actions", + "Principal" + ], + "type": "object" + }, + "ResourceStatus": { + "enum": [ + "CREATION_IN_PROGRESS", + "CREATION_SUCCESSFUL", + "CREATION_FAILED", + "UPDATE_IN_PROGRESS", + "UPDATE_SUCCESSFUL", + "UPDATE_FAILED", + "DELETED" + ], + "type": "string" + }, + "SheetStyle": { + "additionalProperties": false, + "description": "

The theme display options for sheets.

", + "properties": { + "Tile": { + "$ref": "#/definitions/TileStyle" + }, + "TileLayout": { + "$ref": "#/definitions/TileLayoutStyle" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", + "properties": { + "Key": { + "description": "

Tag key.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "

Tag value.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "ThemeConfiguration": { + "additionalProperties": false, + "description": "

The theme configuration. This configuration contains all of the display properties for\n a theme.

", + "properties": { + "DataColorPalette": { + "$ref": "#/definitions/DataColorPalette" + }, + "Sheet": { + "$ref": "#/definitions/SheetStyle" + }, + "Typography": { + "$ref": "#/definitions/Typography" + }, + "UIColorPalette": { + "$ref": "#/definitions/UIColorPalette" + } + }, + "type": "object" + }, + "ThemeError": { + "additionalProperties": false, + "description": "

Theme error.

", + "properties": { + "Message": { + "description": "

The error message.

", + "pattern": "\\S", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/ThemeErrorType" + } + }, + "type": "object" + }, + "ThemeErrorType": { + "enum": [ + "INTERNAL_FAILURE" + ], + "type": "string" + }, + "ThemeType": { + "enum": [ + "QUICKSIGHT", + "CUSTOM", + "ALL" + ], + "type": "string" + }, + "ThemeVersion": { + "additionalProperties": false, + "description": "

A version of a theme.

", + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the resource.

", + "type": "string" + }, + "BaseThemeId": { + "description": "

The Amazon QuickSight-defined ID of the theme that a custom theme inherits from. All\n themes initially inherit from a default Amazon QuickSight theme.

", + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Configuration": { + "$ref": "#/definitions/ThemeConfiguration" + }, + "CreatedTime": { + "description": "

The date and time that this theme version was created.

", + "format": "date-time", + "type": "string" + }, + "Description": { + "description": "

The description of the theme.

", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "Errors": { + "description": "

Errors associated with the theme.

", + "items": { + "$ref": "#/definitions/ThemeError" + }, + "minItems": 1, + "type": "array" + }, + "Status": { + "$ref": "#/definitions/ResourceStatus" + }, + "VersionNumber": { + "description": "

The version number of the theme.

", + "minimum": 1, + "type": "number" + } + }, + "type": "object" + }, + "TileLayoutStyle": { + "additionalProperties": false, + "description": "

The display options for the layout of tiles on a sheet.

", + "properties": { + "Gutter": { + "$ref": "#/definitions/GutterStyle" + }, + "Margin": { + "$ref": "#/definitions/MarginStyle" + } + }, + "type": "object" + }, + "TileStyle": { + "additionalProperties": false, + "description": "

Display options related to tiles on a sheet.

", + "properties": { + "Border": { + "$ref": "#/definitions/BorderStyle" + } + }, + "type": "object" + }, + "Typography": { + "additionalProperties": false, + "properties": { + "FontFamilies": { + "items": { + "$ref": "#/definitions/Font" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + }, + "UIColorPalette": { + "additionalProperties": false, + "description": "

The theme colors that apply to UI and to charts, excluding data colors. The colors\n description is a hexadecimal color code that consists of six alphanumerical characters,\n prefixed with #, for example #37BFF5. For more information, see Using Themes in Amazon QuickSight in the Amazon QuickSight User\n Guide.\n

", + "properties": { + "Accent": { + "description": "

This color is that applies to selected states and buttons.

", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "AccentForeground": { + "description": "

The foreground color that applies to any text or other elements that appear over the\n accent color.

", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Danger": { + "description": "

The color that applies to error messages.

", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DangerForeground": { + "description": "

The foreground color that applies to any text or other elements that appear over the\n error color.

", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Dimension": { + "description": "

The color that applies to the names of fields that are identified as\n dimensions.

", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "DimensionForeground": { + "description": "

The foreground color that applies to any text or other elements that appear over the\n dimension color.

", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Measure": { + "description": "

The color that applies to the names of fields that are identified as measures.

", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "MeasureForeground": { + "description": "

The foreground color that applies to any text or other elements that appear over the\n measure color.

", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "PrimaryBackground": { + "description": "

The background color that applies to visuals and other high emphasis UI.

", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "PrimaryForeground": { + "description": "

The color of text and other foreground elements that appear over the primary\n background regions, such as grid lines, borders, table banding, icons, and so on.

", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "SecondaryBackground": { + "description": "

The background color that applies to the sheet background and sheet controls.

", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "SecondaryForeground": { + "description": "

The foreground color that applies to any sheet title, sheet control text, or UI that\n appears over the secondary background.

", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Success": { + "description": "

The color that applies to success messages, for example the check mark for a\n successful download.

", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "SuccessForeground": { + "description": "

The foreground color that applies to any text or other elements that appear over the\n success color.

", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "Warning": { + "description": "

This color that applies to warning and informational messages.

", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + }, + "WarningForeground": { + "description": "

The foreground color that applies to any text or other elements that appear over the\n warning color.

", + "pattern": "^#[A-F0-9]{6}$", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of the AWS::QuickSight::Theme Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:DescribeTheme", + "quicksight:DescribeThemePermissions", + "quicksight:CreateTheme", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "quicksight:DescribeTheme", + "quicksight:DeleteTheme" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "AwsAccountId": { + "$ref": "resource-schema.json#/properties/AwsAccountId" + } + }, + "required": [ + "AwsAccountId" + ] + }, + "permissions": [ + "quicksight:ListThemes" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeTheme", + "quicksight:DescribeThemePermissions", + "quicksight:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "quicksight:DescribeTheme", + "quicksight:DescribeThemePermissions", + "quicksight:UpdateTheme", + "quicksight:UpdateThemePermissions", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ThemeId", + "/properties/AwsAccountId" + ], + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the theme.

", + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "BaseThemeId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Configuration": { + "$ref": "#/definitions/ThemeConfiguration" + }, + "CreatedTime": { + "description": "

The date and time that the theme was created.

", + "format": "date-time", + "type": "string" + }, + "LastUpdatedTime": { + "description": "

The date and time that the theme was last updated.

", + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Permissions": { + "items": { + "$ref": "#/definitions/ResourcePermission" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "ThemeId": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/ThemeType" + }, + "Version": { + "$ref": "#/definitions/ThemeVersion" + }, + "VersionDescription": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CreatedTime", + "/properties/Version", + "/properties/LastUpdatedTime", + "/properties/Arn", + "/properties/Type" + ], + "required": [ + "AwsAccountId", + "ThemeId", + "BaseThemeId", + "Configuration", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QuickSight::Theme" +} diff --git a/src/schema/aws-quicksight-topic.json b/src/schema/aws-quicksight-topic.json index b3acd4ae..3b91c330 100644 --- a/src/schema/aws-quicksight-topic.json +++ b/src/schema/aws-quicksight-topic.json @@ -1,1022 +1,1052 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AwsAccountId", - "/properties/TopicId" - ], - "definitions": { - "AggregationFunctionParameters": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "AuthorSpecifiedAggregation": { - "enum": [ - "COUNT", - "DISTINCT_COUNT", - "MIN", - "MAX", - "MEDIAN", - "SUM", - "AVERAGE", - "STDEV", - "STDEVP", - "VAR", - "VARP", - "PERCENTILE" - ], - "type": "string" - }, - "CategoryFilterFunction": { - "enum": [ - "EXACT", - "CONTAINS" - ], - "type": "string" - }, - "CategoryFilterType": { - "enum": [ - "CUSTOM_FILTER", - "CUSTOM_FILTER_LIST", - "FILTER_LIST" - ], - "type": "string" - }, - "CellValueSynonym": { - "additionalProperties": false, - "properties": { - "CellValue": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "Synonyms": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "CollectiveConstant": { - "additionalProperties": false, - "properties": { - "ValueList": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "ColumnDataRole": { - "enum": [ - "DIMENSION", - "MEASURE" - ], - "type": "string" - }, - "ColumnOrderingType": { - "enum": [ - "GREATER_IS_BETTER", - "LESSER_IS_BETTER", - "SPECIFIED" - ], - "type": "string" - }, - "ComparativeOrder": { - "additionalProperties": false, - "properties": { - "SpecifedOrder": { - "items": { - "type": "string" - }, - "type": "array" - }, - "TreatUndefinedSpecifiedValues": { - "$ref": "#/definitions/UndefinedSpecifiedValueType" - }, - "UseOrdering": { - "$ref": "#/definitions/ColumnOrderingType" - } - }, - "type": "object" - }, - "ConstantType": { - "enum": [ - "SINGULAR", - "RANGE", - "COLLECTIVE" - ], - "type": "string" - }, - "DataAggregation": { - "additionalProperties": false, - "properties": { - "DatasetRowDateGranularity": { - "$ref": "#/definitions/TopicTimeGranularity" - }, - "DefaultDateColumnName": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "DatasetMetadata": { - "additionalProperties": false, - "properties": { - "CalculatedFields": { - "items": { - "$ref": "#/definitions/TopicCalculatedField" - }, - "type": "array" - }, - "Columns": { - "items": { - "$ref": "#/definitions/TopicColumn" - }, - "type": "array" - }, - "DataAggregation": { - "$ref": "#/definitions/DataAggregation" - }, - "DatasetArn": { - "type": "string" - }, - "DatasetDescription": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "DatasetName": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "Filters": { - "items": { - "$ref": "#/definitions/TopicFilter" - }, - "type": "array" - }, - "NamedEntities": { - "items": { - "$ref": "#/definitions/TopicNamedEntity" - }, - "type": "array" - } - }, - "required": [ - "DatasetArn" - ], - "type": "object" - }, - "DefaultAggregation": { - "enum": [ - "SUM", - "MAX", - "MIN", - "COUNT", - "DISTINCT_COUNT", - "AVERAGE", - "MEDIAN", - "STDEV", - "STDEVP", - "VAR", - "VARP" - ], - "type": "string" - }, - "DefaultFormatting": { - "additionalProperties": false, - "properties": { - "DisplayFormat": { - "$ref": "#/definitions/DisplayFormat" - }, - "DisplayFormatOptions": { - "$ref": "#/definitions/DisplayFormatOptions" - } - }, - "type": "object" - }, - "DisplayFormat": { - "enum": [ - "AUTO", - "PERCENT", - "CURRENCY", - "NUMBER", - "DATE", - "STRING" - ], - "type": "string" - }, - "DisplayFormatOptions": { - "additionalProperties": false, - "properties": { - "BlankCellFormat": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "CurrencySymbol": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "DateFormat": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "DecimalSeparator": { - "$ref": "#/definitions/TopicNumericSeparatorSymbol" - }, - "FractionDigits": { - "default": 0, - "type": "number" - }, - "GroupingSeparator": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "NegativeFormat": { - "$ref": "#/definitions/NegativeFormat" - }, - "Prefix": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "Suffix": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "UnitScaler": { - "$ref": "#/definitions/NumberScale" - }, - "UseBlankCellFormat": { - "default": false, - "type": "boolean" - }, - "UseGrouping": { - "default": false, - "type": "boolean" - } - }, - "type": "object" - }, - "FilterClass": { - "enum": [ - "ENFORCED_VALUE_FILTER", - "CONDITIONAL_VALUE_FILTER", - "NAMED_VALUE_FILTER" - ], - "type": "string" - }, - "NamedEntityAggType": { - "enum": [ - "SUM", - "MIN", - "MAX", - "COUNT", - "AVERAGE", - "DISTINCT_COUNT", - "STDEV", - "STDEVP", - "VAR", - "VARP", - "PERCENTILE", - "MEDIAN", - "CUSTOM" - ], - "type": "string" - }, - "NamedEntityDefinition": { - "additionalProperties": false, - "properties": { - "FieldName": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "Metric": { - "$ref": "#/definitions/NamedEntityDefinitionMetric" - }, - "PropertyName": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "PropertyRole": { - "$ref": "#/definitions/PropertyRole" - }, - "PropertyUsage": { - "$ref": "#/definitions/PropertyUsage" - } - }, - "type": "object" - }, - "NamedEntityDefinitionMetric": { - "additionalProperties": false, - "properties": { - "Aggregation": { - "$ref": "#/definitions/NamedEntityAggType" - }, - "AggregationFunctionParameters": { - "$ref": "#/definitions/AggregationFunctionParameters" - } - }, - "type": "object" - }, - "NamedFilterAggType": { - "enum": [ - "NO_AGGREGATION", - "SUM", - "AVERAGE", - "COUNT", - "DISTINCT_COUNT", - "MAX", - "MEDIAN", - "MIN", - "STDEV", - "STDEVP", - "VAR", - "VARP" - ], - "type": "string" - }, - "NamedFilterType": { - "enum": [ - "CATEGORY_FILTER", - "NUMERIC_EQUALITY_FILTER", - "NUMERIC_RANGE_FILTER", - "DATE_RANGE_FILTER", - "RELATIVE_DATE_FILTER" - ], - "type": "string" - }, - "NegativeFormat": { - "additionalProperties": false, - "properties": { - "Prefix": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "Suffix": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "NumberScale": { - "enum": [ - "NONE", - "AUTO", - "THOUSANDS", - "MILLIONS", - "BILLIONS", - "TRILLIONS" - ], - "type": "string" - }, - "PropertyRole": { - "enum": [ - "PRIMARY", - "ID" - ], - "type": "string" - }, - "PropertyUsage": { - "enum": [ - "INHERIT", - "DIMENSION", - "MEASURE" - ], - "type": "string" - }, - "RangeConstant": { - "additionalProperties": false, - "properties": { - "Maximum": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "Minimum": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "SemanticEntityType": { - "additionalProperties": false, - "properties": { - "SubTypeName": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "TypeName": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "TypeParameters": { - "$ref": "#/definitions/TypeParameters" - } - }, - "type": "object" - }, - "SemanticType": { - "additionalProperties": false, - "properties": { - "FalseyCellValue": { - "type": "string" - }, - "FalseyCellValueSynonyms": { - "items": { - "type": "string" - }, - "type": "array" - }, - "SubTypeName": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "TruthyCellValue": { - "type": "string" - }, - "TruthyCellValueSynonyms": { - "items": { - "type": "string" - }, - "type": "array" - }, - "TypeName": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "TypeParameters": { - "$ref": "#/definitions/TypeParameters" - } - }, - "type": "object" - }, - "TopicCalculatedField": { - "additionalProperties": false, - "properties": { - "Aggregation": { - "$ref": "#/definitions/DefaultAggregation" - }, - "AllowedAggregations": { - "items": { - "$ref": "#/definitions/AuthorSpecifiedAggregation" - }, - "type": "array" - }, - "CalculatedFieldDescription": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "CalculatedFieldName": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "CalculatedFieldSynonyms": { - "items": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "type": "array" - }, - "CellValueSynonyms": { - "items": { - "$ref": "#/definitions/CellValueSynonym" - }, - "type": "array" - }, - "ColumnDataRole": { - "$ref": "#/definitions/ColumnDataRole" - }, - "ComparativeOrder": { - "$ref": "#/definitions/ComparativeOrder" - }, - "DefaultFormatting": { - "$ref": "#/definitions/DefaultFormatting" - }, - "DisableIndexing": { - "type": "boolean" - }, - "Expression": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "IsIncludedInTopic": { - "default": false, - "type": "boolean" - }, - "NeverAggregateInFilter": { - "default": false, - "type": "boolean" - }, - "NonAdditive": { - "default": false, - "type": "boolean" - }, - "NotAllowedAggregations": { - "items": { - "$ref": "#/definitions/AuthorSpecifiedAggregation" - }, - "type": "array" - }, - "SemanticType": { - "$ref": "#/definitions/SemanticType" - }, - "TimeGranularity": { - "$ref": "#/definitions/TopicTimeGranularity" - } - }, - "required": [ - "CalculatedFieldName", - "Expression" - ], - "type": "object" - }, - "TopicCategoryFilter": { - "additionalProperties": false, - "properties": { - "CategoryFilterFunction": { - "$ref": "#/definitions/CategoryFilterFunction" - }, - "CategoryFilterType": { - "$ref": "#/definitions/CategoryFilterType" - }, - "Constant": { - "$ref": "#/definitions/TopicCategoryFilterConstant" - }, - "Inverse": { - "default": false, - "type": "boolean" - } - }, - "type": "object" - }, - "TopicCategoryFilterConstant": { - "additionalProperties": false, - "properties": { - "CollectiveConstant": { - "$ref": "#/definitions/CollectiveConstant" - }, - "ConstantType": { - "$ref": "#/definitions/ConstantType" - }, - "SingularConstant": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "TopicColumn": { - "additionalProperties": false, - "properties": { - "Aggregation": { - "$ref": "#/definitions/DefaultAggregation" - }, - "AllowedAggregations": { - "items": { - "$ref": "#/definitions/AuthorSpecifiedAggregation" - }, - "type": "array" - }, - "CellValueSynonyms": { - "items": { - "$ref": "#/definitions/CellValueSynonym" - }, - "type": "array" - }, - "ColumnDataRole": { - "$ref": "#/definitions/ColumnDataRole" - }, - "ColumnDescription": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "ColumnFriendlyName": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "ColumnName": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "ColumnSynonyms": { - "items": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "type": "array" - }, - "ComparativeOrder": { - "$ref": "#/definitions/ComparativeOrder" - }, - "DefaultFormatting": { - "$ref": "#/definitions/DefaultFormatting" - }, - "DisableIndexing": { - "type": "boolean" - }, - "IsIncludedInTopic": { - "default": false, - "type": "boolean" - }, - "NeverAggregateInFilter": { - "default": false, - "type": "boolean" - }, - "NonAdditive": { - "default": false, - "type": "boolean" - }, - "NotAllowedAggregations": { - "items": { - "$ref": "#/definitions/AuthorSpecifiedAggregation" - }, - "type": "array" - }, - "SemanticType": { - "$ref": "#/definitions/SemanticType" - }, - "TimeGranularity": { - "$ref": "#/definitions/TopicTimeGranularity" - } - }, - "required": [ - "ColumnName" - ], - "type": "object" - }, - "TopicDateRangeFilter": { - "additionalProperties": false, - "properties": { - "Constant": { - "$ref": "#/definitions/TopicRangeFilterConstant" - }, - "Inclusive": { - "default": false, - "type": "boolean" - } - }, - "type": "object" - }, - "TopicDetails": { - "additionalProperties": false, - "properties": { - "DataSets": { - "items": { - "$ref": "#/definitions/DatasetMetadata" - }, - "type": "array" - }, - "Description": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "Name": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "UserExperienceVersion": { - "$ref": "#/definitions/TopicUserExperienceVersion" - } - }, - "type": "object" - }, - "TopicFilter": { - "additionalProperties": false, - "properties": { - "CategoryFilter": { - "$ref": "#/definitions/TopicCategoryFilter" - }, - "DateRangeFilter": { - "$ref": "#/definitions/TopicDateRangeFilter" - }, - "FilterClass": { - "$ref": "#/definitions/FilterClass" - }, - "FilterDescription": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "FilterName": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "FilterSynonyms": { - "items": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "type": "array" - }, - "FilterType": { - "$ref": "#/definitions/NamedFilterType" - }, - "NumericEqualityFilter": { - "$ref": "#/definitions/TopicNumericEqualityFilter" - }, - "NumericRangeFilter": { - "$ref": "#/definitions/TopicNumericRangeFilter" - }, - "OperandFieldName": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "RelativeDateFilter": { - "$ref": "#/definitions/TopicRelativeDateFilter" - } - }, - "required": [ - "FilterName", - "OperandFieldName" - ], - "type": "object" - }, - "TopicNamedEntity": { - "additionalProperties": false, - "properties": { - "Definition": { - "items": { - "$ref": "#/definitions/NamedEntityDefinition" - }, - "type": "array" - }, - "EntityDescription": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "EntityName": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "EntitySynonyms": { - "items": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "type": "array" - }, - "SemanticEntityType": { - "$ref": "#/definitions/SemanticEntityType" - } - }, - "required": [ - "EntityName" - ], - "type": "object" - }, - "TopicNumericEqualityFilter": { - "additionalProperties": false, - "properties": { - "Aggregation": { - "$ref": "#/definitions/NamedFilterAggType" - }, - "Constant": { - "$ref": "#/definitions/TopicSingularFilterConstant" - } - }, - "type": "object" - }, - "TopicNumericRangeFilter": { - "additionalProperties": false, - "properties": { - "Aggregation": { - "$ref": "#/definitions/NamedFilterAggType" - }, - "Constant": { - "$ref": "#/definitions/TopicRangeFilterConstant" - }, - "Inclusive": { - "default": false, - "type": "boolean" - } - }, - "type": "object" - }, - "TopicNumericSeparatorSymbol": { - "enum": [ - "COMMA", - "DOT" - ], - "type": "string" - }, - "TopicRangeFilterConstant": { - "additionalProperties": false, - "properties": { - "ConstantType": { - "$ref": "#/definitions/ConstantType" - }, - "RangeConstant": { - "$ref": "#/definitions/RangeConstant" - } - }, - "type": "object" - }, - "TopicRelativeDateFilter": { - "additionalProperties": false, - "properties": { - "Constant": { - "$ref": "#/definitions/TopicSingularFilterConstant" - }, - "RelativeDateFilterFunction": { - "$ref": "#/definitions/TopicRelativeDateFilterFunction" - }, - "TimeGranularity": { - "$ref": "#/definitions/TopicTimeGranularity" - } - }, - "type": "object" - }, - "TopicRelativeDateFilterFunction": { - "enum": [ - "PREVIOUS", - "THIS", - "LAST", - "NEXT", - "NOW" - ], - "type": "string" - }, - "TopicSingularFilterConstant": { - "additionalProperties": false, - "properties": { - "ConstantType": { - "$ref": "#/definitions/ConstantType" - }, - "SingularConstant": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "TopicTimeGranularity": { - "enum": [ - "SECOND", - "MINUTE", - "HOUR", - "DAY", - "WEEK", - "MONTH", - "QUARTER", - "YEAR" - ], - "type": "string" - }, - "TopicUserExperienceVersion": { - "enum": [ - "LEGACY", - "NEW_READER_EXPERIENCE" - ], - "type": "string" - }, - "TypeParameters": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "UndefinedSpecifiedValueType": { - "enum": [ - "LEAST", - "MOST" - ], - "type": "string" - } - }, - "description": "Definition of the AWS::QuickSight::Topic Resource Type.", - "handlers": { - "create": { - "permissions": [ - "quicksight:CreateTopic", - "quicksight:PassDataSet", - "quicksight:DescribeTopicRefresh" - ] - }, - "delete": { - "permissions": [ - "quicksight:DeleteTopic" - ] - }, - "list": { - "permissions": [ - "quicksight:ListTopics" - ] - }, - "read": { - "permissions": [ - "quicksight:DescribeTopic" - ] - }, - "update": { - "permissions": [ - "quicksight:UpdateTopic", - "quicksight:PassDataSet", - "quicksight:DescribeTopicRefresh" - ] - } - }, - "primaryIdentifier": [ - "/properties/AwsAccountId", - "/properties/TopicId" - ], - "properties": { - "Arn": { - "type": "string" - }, - "AwsAccountId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "DataSets": { - "items": { - "$ref": "#/definitions/DatasetMetadata" - }, - "type": "array" - }, - "Description": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "Name": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "TopicId": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[A-Za-z0-9-_.\\\\+]*$", - "type": "string" - }, - "UserExperienceVersion": { - "$ref": "#/definitions/TopicUserExperienceVersion" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::QuickSight::Topic" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/FolderArns", + "/properties/TopicId" + ], + "definitions": { + "AggregationFunctionParameters": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "AuthorSpecifiedAggregation": { + "enum": [ + "COUNT", + "DISTINCT_COUNT", + "MIN", + "MAX", + "MEDIAN", + "SUM", + "AVERAGE", + "STDEV", + "STDEVP", + "VAR", + "VARP", + "PERCENTILE" + ], + "type": "string" + }, + "CategoryFilterFunction": { + "enum": [ + "EXACT", + "CONTAINS" + ], + "type": "string" + }, + "CategoryFilterType": { + "enum": [ + "CUSTOM_FILTER", + "CUSTOM_FILTER_LIST", + "FILTER_LIST" + ], + "type": "string" + }, + "CellValueSynonym": { + "additionalProperties": false, + "properties": { + "CellValue": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Synonyms": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "CollectiveConstant": { + "additionalProperties": false, + "properties": { + "ValueList": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ColumnDataRole": { + "enum": [ + "DIMENSION", + "MEASURE" + ], + "type": "string" + }, + "ColumnOrderingType": { + "enum": [ + "GREATER_IS_BETTER", + "LESSER_IS_BETTER", + "SPECIFIED" + ], + "type": "string" + }, + "ComparativeOrder": { + "additionalProperties": false, + "properties": { + "SpecifedOrder": { + "items": { + "type": "string" + }, + "type": "array" + }, + "TreatUndefinedSpecifiedValues": { + "$ref": "#/definitions/UndefinedSpecifiedValueType" + }, + "UseOrdering": { + "$ref": "#/definitions/ColumnOrderingType" + } + }, + "type": "object" + }, + "ConstantType": { + "enum": [ + "SINGULAR", + "RANGE", + "COLLECTIVE" + ], + "type": "string" + }, + "DataAggregation": { + "additionalProperties": false, + "properties": { + "DatasetRowDateGranularity": { + "$ref": "#/definitions/TopicTimeGranularity" + }, + "DefaultDateColumnName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "DatasetMetadata": { + "additionalProperties": false, + "properties": { + "CalculatedFields": { + "items": { + "$ref": "#/definitions/TopicCalculatedField" + }, + "type": "array" + }, + "Columns": { + "items": { + "$ref": "#/definitions/TopicColumn" + }, + "type": "array" + }, + "DataAggregation": { + "$ref": "#/definitions/DataAggregation" + }, + "DatasetArn": { + "type": "string" + }, + "DatasetDescription": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "DatasetName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Filters": { + "items": { + "$ref": "#/definitions/TopicFilter" + }, + "type": "array" + }, + "NamedEntities": { + "items": { + "$ref": "#/definitions/TopicNamedEntity" + }, + "type": "array" + } + }, + "required": [ + "DatasetArn" + ], + "type": "object" + }, + "DefaultAggregation": { + "enum": [ + "SUM", + "MAX", + "MIN", + "COUNT", + "DISTINCT_COUNT", + "AVERAGE", + "MEDIAN", + "STDEV", + "STDEVP", + "VAR", + "VARP" + ], + "type": "string" + }, + "DefaultFormatting": { + "additionalProperties": false, + "properties": { + "DisplayFormat": { + "$ref": "#/definitions/DisplayFormat" + }, + "DisplayFormatOptions": { + "$ref": "#/definitions/DisplayFormatOptions" + } + }, + "type": "object" + }, + "DisplayFormat": { + "enum": [ + "AUTO", + "PERCENT", + "CURRENCY", + "NUMBER", + "DATE", + "STRING" + ], + "type": "string" + }, + "DisplayFormatOptions": { + "additionalProperties": false, + "properties": { + "BlankCellFormat": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "CurrencySymbol": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "DateFormat": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "DecimalSeparator": { + "$ref": "#/definitions/TopicNumericSeparatorSymbol" + }, + "FractionDigits": { + "default": 0, + "type": "number" + }, + "GroupingSeparator": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "NegativeFormat": { + "$ref": "#/definitions/NegativeFormat" + }, + "Prefix": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Suffix": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "UnitScaler": { + "$ref": "#/definitions/NumberScale" + }, + "UseBlankCellFormat": { + "default": false, + "type": "boolean" + }, + "UseGrouping": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "FilterClass": { + "enum": [ + "ENFORCED_VALUE_FILTER", + "CONDITIONAL_VALUE_FILTER", + "NAMED_VALUE_FILTER" + ], + "type": "string" + }, + "NamedEntityAggType": { + "enum": [ + "SUM", + "MIN", + "MAX", + "COUNT", + "AVERAGE", + "DISTINCT_COUNT", + "STDEV", + "STDEVP", + "VAR", + "VARP", + "PERCENTILE", + "MEDIAN", + "CUSTOM" + ], + "type": "string" + }, + "NamedEntityDefinition": { + "additionalProperties": false, + "properties": { + "FieldName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Metric": { + "$ref": "#/definitions/NamedEntityDefinitionMetric" + }, + "PropertyName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "PropertyRole": { + "$ref": "#/definitions/PropertyRole" + }, + "PropertyUsage": { + "$ref": "#/definitions/PropertyUsage" + } + }, + "type": "object" + }, + "NamedEntityDefinitionMetric": { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/NamedEntityAggType" + }, + "AggregationFunctionParameters": { + "$ref": "#/definitions/AggregationFunctionParameters" + } + }, + "type": "object" + }, + "NamedFilterAggType": { + "enum": [ + "NO_AGGREGATION", + "SUM", + "AVERAGE", + "COUNT", + "DISTINCT_COUNT", + "MAX", + "MEDIAN", + "MIN", + "STDEV", + "STDEVP", + "VAR", + "VARP" + ], + "type": "string" + }, + "NamedFilterType": { + "enum": [ + "CATEGORY_FILTER", + "NUMERIC_EQUALITY_FILTER", + "NUMERIC_RANGE_FILTER", + "DATE_RANGE_FILTER", + "RELATIVE_DATE_FILTER" + ], + "type": "string" + }, + "NegativeFormat": { + "additionalProperties": false, + "properties": { + "Prefix": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Suffix": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "NumberScale": { + "enum": [ + "NONE", + "AUTO", + "THOUSANDS", + "MILLIONS", + "BILLIONS", + "TRILLIONS", + "LAKHS", + "CRORES" + ], + "type": "string" + }, + "PropertyRole": { + "enum": [ + "PRIMARY", + "ID" + ], + "type": "string" + }, + "PropertyUsage": { + "enum": [ + "INHERIT", + "DIMENSION", + "MEASURE" + ], + "type": "string" + }, + "RangeConstant": { + "additionalProperties": false, + "properties": { + "Maximum": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Minimum": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "SemanticEntityType": { + "additionalProperties": false, + "properties": { + "SubTypeName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "TypeName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "TypeParameters": { + "$ref": "#/definitions/TypeParameters" + } + }, + "type": "object" + }, + "SemanticType": { + "additionalProperties": false, + "properties": { + "FalseyCellValue": { + "type": "string" + }, + "FalseyCellValueSynonyms": { + "items": { + "type": "string" + }, + "type": "array" + }, + "SubTypeName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "TruthyCellValue": { + "type": "string" + }, + "TruthyCellValueSynonyms": { + "items": { + "type": "string" + }, + "type": "array" + }, + "TypeName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "TypeParameters": { + "$ref": "#/definitions/TypeParameters" + } + }, + "type": "object" + }, + "TopicCalculatedField": { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/DefaultAggregation" + }, + "AllowedAggregations": { + "items": { + "$ref": "#/definitions/AuthorSpecifiedAggregation" + }, + "type": "array" + }, + "CalculatedFieldDescription": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "CalculatedFieldName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "CalculatedFieldSynonyms": { + "items": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "type": "array" + }, + "CellValueSynonyms": { + "items": { + "$ref": "#/definitions/CellValueSynonym" + }, + "type": "array" + }, + "ColumnDataRole": { + "$ref": "#/definitions/ColumnDataRole" + }, + "ComparativeOrder": { + "$ref": "#/definitions/ComparativeOrder" + }, + "DefaultFormatting": { + "$ref": "#/definitions/DefaultFormatting" + }, + "DisableIndexing": { + "type": "boolean" + }, + "Expression": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "IsIncludedInTopic": { + "default": false, + "type": "boolean" + }, + "NeverAggregateInFilter": { + "default": false, + "type": "boolean" + }, + "NonAdditive": { + "default": false, + "type": "boolean" + }, + "NotAllowedAggregations": { + "items": { + "$ref": "#/definitions/AuthorSpecifiedAggregation" + }, + "type": "array" + }, + "SemanticType": { + "$ref": "#/definitions/SemanticType" + }, + "TimeGranularity": { + "$ref": "#/definitions/TopicTimeGranularity" + } + }, + "required": [ + "CalculatedFieldName", + "Expression" + ], + "type": "object" + }, + "TopicCategoryFilter": { + "additionalProperties": false, + "properties": { + "CategoryFilterFunction": { + "$ref": "#/definitions/CategoryFilterFunction" + }, + "CategoryFilterType": { + "$ref": "#/definitions/CategoryFilterType" + }, + "Constant": { + "$ref": "#/definitions/TopicCategoryFilterConstant" + }, + "Inverse": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "TopicCategoryFilterConstant": { + "additionalProperties": false, + "properties": { + "CollectiveConstant": { + "$ref": "#/definitions/CollectiveConstant" + }, + "ConstantType": { + "$ref": "#/definitions/ConstantType" + }, + "SingularConstant": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "TopicColumn": { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/DefaultAggregation" + }, + "AllowedAggregations": { + "items": { + "$ref": "#/definitions/AuthorSpecifiedAggregation" + }, + "type": "array" + }, + "CellValueSynonyms": { + "items": { + "$ref": "#/definitions/CellValueSynonym" + }, + "type": "array" + }, + "ColumnDataRole": { + "$ref": "#/definitions/ColumnDataRole" + }, + "ColumnDescription": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "ColumnFriendlyName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "ColumnName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "ColumnSynonyms": { + "items": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "type": "array" + }, + "ComparativeOrder": { + "$ref": "#/definitions/ComparativeOrder" + }, + "DefaultFormatting": { + "$ref": "#/definitions/DefaultFormatting" + }, + "DisableIndexing": { + "type": "boolean" + }, + "IsIncludedInTopic": { + "default": false, + "type": "boolean" + }, + "NeverAggregateInFilter": { + "default": false, + "type": "boolean" + }, + "NonAdditive": { + "default": false, + "type": "boolean" + }, + "NotAllowedAggregations": { + "items": { + "$ref": "#/definitions/AuthorSpecifiedAggregation" + }, + "type": "array" + }, + "SemanticType": { + "$ref": "#/definitions/SemanticType" + }, + "TimeGranularity": { + "$ref": "#/definitions/TopicTimeGranularity" + } + }, + "required": [ + "ColumnName" + ], + "type": "object" + }, + "TopicConfigOptions": { + "additionalProperties": false, + "description": "Model for configuration of a Topic", + "properties": { + "QBusinessInsightsEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "TopicDateRangeFilter": { + "additionalProperties": false, + "properties": { + "Constant": { + "$ref": "#/definitions/TopicRangeFilterConstant" + }, + "Inclusive": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "TopicDetails": { + "additionalProperties": false, + "properties": { + "ConfigOptions": { + "$ref": "#/definitions/TopicConfigOptions" + }, + "DataSets": { + "items": { + "$ref": "#/definitions/DatasetMetadata" + }, + "type": "array" + }, + "Description": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "UserExperienceVersion": { + "$ref": "#/definitions/TopicUserExperienceVersion" + } + }, + "type": "object" + }, + "TopicFilter": { + "additionalProperties": false, + "properties": { + "CategoryFilter": { + "$ref": "#/definitions/TopicCategoryFilter" + }, + "DateRangeFilter": { + "$ref": "#/definitions/TopicDateRangeFilter" + }, + "FilterClass": { + "$ref": "#/definitions/FilterClass" + }, + "FilterDescription": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "FilterName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "FilterSynonyms": { + "items": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "type": "array" + }, + "FilterType": { + "$ref": "#/definitions/NamedFilterType" + }, + "NumericEqualityFilter": { + "$ref": "#/definitions/TopicNumericEqualityFilter" + }, + "NumericRangeFilter": { + "$ref": "#/definitions/TopicNumericRangeFilter" + }, + "OperandFieldName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "RelativeDateFilter": { + "$ref": "#/definitions/TopicRelativeDateFilter" + } + }, + "required": [ + "FilterName", + "OperandFieldName" + ], + "type": "object" + }, + "TopicNamedEntity": { + "additionalProperties": false, + "properties": { + "Definition": { + "items": { + "$ref": "#/definitions/NamedEntityDefinition" + }, + "type": "array" + }, + "EntityDescription": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "EntityName": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "EntitySynonyms": { + "items": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "type": "array" + }, + "SemanticEntityType": { + "$ref": "#/definitions/SemanticEntityType" + } + }, + "required": [ + "EntityName" + ], + "type": "object" + }, + "TopicNumericEqualityFilter": { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/NamedFilterAggType" + }, + "Constant": { + "$ref": "#/definitions/TopicSingularFilterConstant" + } + }, + "type": "object" + }, + "TopicNumericRangeFilter": { + "additionalProperties": false, + "properties": { + "Aggregation": { + "$ref": "#/definitions/NamedFilterAggType" + }, + "Constant": { + "$ref": "#/definitions/TopicRangeFilterConstant" + }, + "Inclusive": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "TopicNumericSeparatorSymbol": { + "enum": [ + "COMMA", + "DOT" + ], + "type": "string" + }, + "TopicRangeFilterConstant": { + "additionalProperties": false, + "properties": { + "ConstantType": { + "$ref": "#/definitions/ConstantType" + }, + "RangeConstant": { + "$ref": "#/definitions/RangeConstant" + } + }, + "type": "object" + }, + "TopicRelativeDateFilter": { + "additionalProperties": false, + "properties": { + "Constant": { + "$ref": "#/definitions/TopicSingularFilterConstant" + }, + "RelativeDateFilterFunction": { + "$ref": "#/definitions/TopicRelativeDateFilterFunction" + }, + "TimeGranularity": { + "$ref": "#/definitions/TopicTimeGranularity" + } + }, + "type": "object" + }, + "TopicRelativeDateFilterFunction": { + "enum": [ + "PREVIOUS", + "THIS", + "LAST", + "NEXT", + "NOW" + ], + "type": "string" + }, + "TopicSingularFilterConstant": { + "additionalProperties": false, + "properties": { + "ConstantType": { + "$ref": "#/definitions/ConstantType" + }, + "SingularConstant": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "TopicTimeGranularity": { + "enum": [ + "SECOND", + "MINUTE", + "HOUR", + "DAY", + "WEEK", + "MONTH", + "QUARTER", + "YEAR" + ], + "type": "string" + }, + "TopicUserExperienceVersion": { + "enum": [ + "LEGACY", + "NEW_READER_EXPERIENCE" + ], + "type": "string" + }, + "TypeParameters": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "UndefinedSpecifiedValueType": { + "enum": [ + "LEAST", + "MOST" + ], + "type": "string" + } + }, + "description": "Definition of the AWS::QuickSight::Topic Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:CreateTopic", + "quicksight:PassDataSet", + "quicksight:DescribeTopicRefresh" + ] + }, + "delete": { + "permissions": [ + "quicksight:DeleteTopic" + ] + }, + "list": { + "permissions": [ + "quicksight:ListTopics" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeTopic" + ] + }, + "update": { + "permissions": [ + "quicksight:UpdateTopic", + "quicksight:PassDataSet", + "quicksight:DescribeTopicRefresh" + ] + } + }, + "primaryIdentifier": [ + "/properties/AwsAccountId", + "/properties/TopicId" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "ConfigOptions": { + "$ref": "#/definitions/TopicConfigOptions" + }, + "DataSets": { + "items": { + "$ref": "#/definitions/DatasetMetadata" + }, + "type": "array" + }, + "Description": { + "maxLength": 256, + "minLength": 0, + "type": "string" + }, + "FolderArns": { + "items": { + "type": "string" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "TopicId": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[A-Za-z0-9-_.\\\\+]*$", + "type": "string" + }, + "UserExperienceVersion": { + "$ref": "#/definitions/TopicUserExperienceVersion" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::QuickSight::Topic", + "writeOnlyProperties": [ + "/properties/FolderArns" + ] +} diff --git a/src/schema/aws-quicksight-vpcconnection.json b/src/schema/aws-quicksight-vpcconnection.json index 71f006a1..b5dc4874 100644 --- a/src/schema/aws-quicksight-vpcconnection.json +++ b/src/schema/aws-quicksight-vpcconnection.json @@ -1,261 +1,266 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AwsAccountId", - "/properties/VPCConnectionId" - ], - "definitions": { - "NetworkInterface": { - "additionalProperties": false, - "description": "

The structure that contains information about a network interface.

", - "properties": { - "AvailabilityZone": { - "description": "

The availability zone that the network interface resides in.

", - "type": "string" - }, - "ErrorMessage": { - "description": "

An error message.

", - "type": "string" - }, - "NetworkInterfaceId": { - "description": "

The network interface ID.

", - "maxLength": 255, - "minLength": 0, - "pattern": "^eni-[0-9a-z]*$", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/NetworkInterfaceStatus" - }, - "SubnetId": { - "description": "

The subnet ID associated with the network interface.

", - "maxLength": 255, - "minLength": 1, - "pattern": "^subnet-[0-9a-z]*$", - "type": "string" - } - }, - "type": "object" - }, - "NetworkInterfaceStatus": { - "enum": [ - "CREATING", - "AVAILABLE", - "CREATION_FAILED", - "UPDATING", - "UPDATE_FAILED", - "DELETING", - "DELETED", - "DELETION_FAILED", - "DELETION_SCHEDULED", - "ATTACHMENT_FAILED_ROLLBACK_FAILED" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", - "properties": { - "Key": { - "description": "

Tag key.

", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "

Tag value.

", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "VPCConnectionAvailabilityStatus": { - "enum": [ - "AVAILABLE", - "UNAVAILABLE", - "PARTIALLY_AVAILABLE" - ], - "type": "string" - }, - "VPCConnectionResourceStatus": { - "enum": [ - "CREATION_IN_PROGRESS", - "CREATION_SUCCESSFUL", - "CREATION_FAILED", - "UPDATE_IN_PROGRESS", - "UPDATE_SUCCESSFUL", - "UPDATE_FAILED", - "DELETION_IN_PROGRESS", - "DELETION_FAILED", - "DELETED" - ], - "type": "string" - } - }, - "description": "Definition of the AWS::QuickSight::VPCConnection Resource Type.", - "handlers": { - "create": { - "permissions": [ - "quicksight:CreateVPCConnection", - "quicksight:DescribeVPCConnection", - "quicksight:ListTagsForResource", - "quicksight:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "quicksight:DescribeVPCConnection", - "quicksight:DeleteVPCConnection", - "quicksight:ListTagsForResource", - "iam:PassRole" - ] - }, - "list": { - "permissions": [ - "quicksight:ListVPCConnections" - ] - }, - "read": { - "permissions": [ - "quicksight:DescribeVPCConnection", - "quicksight:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "quicksight:DescribeVPCConnection", - "quicksight:UpdateVPCConnection", - "quicksight:TagResource", - "quicksight:UntagResource", - "quicksight:ListTagsForResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/AwsAccountId", - "/properties/VPCConnectionId" - ], - "properties": { - "Arn": { - "description": "

The Amazon Resource Name (ARN) of the VPC connection.

", - "type": "string" - }, - "AvailabilityStatus": { - "$ref": "#/definitions/VPCConnectionAvailabilityStatus" - }, - "AwsAccountId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "CreatedTime": { - "description": "

The time that the VPC connection was created.

", - "format": "date-time", - "type": "string" - }, - "DnsResolvers": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "LastUpdatedTime": { - "description": "

The time that the VPC connection was last updated.

", - "format": "date-time", - "type": "string" - }, - "Name": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "NetworkInterfaces": { - "description": "

A list of network interfaces.

", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "maxItems": 15, - "minItems": 0, - "type": "array" - }, - "RoleArn": { - "type": "string" - }, - "SecurityGroupIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^sg-[0-9a-z]*$", - "type": "string" - }, - "maxItems": 16, - "minItems": 1, - "type": "array" - }, - "Status": { - "$ref": "#/definitions/VPCConnectionResourceStatus" - }, - "SubnetIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^subnet-[0-9a-z]*$", - "type": "string" - }, - "maxItems": 15, - "minItems": 2, - "type": "array" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 1, - "type": "array" - }, - "VPCConnectionId": { - "maxLength": 1000, - "minLength": 1, - "pattern": "[\\w\\-]+", - "type": "string" - }, - "VPCId": { - "description": "

The Amazon EC2 VPC ID associated with the VPC connection.

", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedTime", - "/properties/LastUpdatedTime", - "/properties/NetworkInterfaces", - "/properties/Status", - "/properties/VPCId" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::QuickSight::VPCConnection", - "writeOnlyProperties": [ - "/properties/SubnetIds" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/VPCConnectionId" + ], + "definitions": { + "NetworkInterface": { + "additionalProperties": false, + "description": "

The structure that contains information about a network interface.

", + "properties": { + "AvailabilityZone": { + "description": "

The availability zone that the network interface resides in.

", + "type": "string" + }, + "ErrorMessage": { + "description": "

An error message.

", + "type": "string" + }, + "NetworkInterfaceId": { + "description": "

The network interface ID.

", + "maxLength": 255, + "minLength": 0, + "pattern": "^eni-[0-9a-z]*$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/NetworkInterfaceStatus" + }, + "SubnetId": { + "description": "

The subnet ID associated with the network interface.

", + "maxLength": 255, + "minLength": 1, + "pattern": "^subnet-[0-9a-z]*$", + "type": "string" + } + }, + "type": "object" + }, + "NetworkInterfaceStatus": { + "enum": [ + "CREATING", + "AVAILABLE", + "CREATION_FAILED", + "UPDATING", + "UPDATE_FAILED", + "DELETING", + "DELETED", + "DELETION_FAILED", + "DELETION_SCHEDULED", + "ATTACHMENT_FAILED_ROLLBACK_FAILED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", + "properties": { + "Key": { + "description": "

Tag key.

", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "

Tag value.

", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VPCConnectionAvailabilityStatus": { + "enum": [ + "AVAILABLE", + "UNAVAILABLE", + "PARTIALLY_AVAILABLE" + ], + "type": "string" + }, + "VPCConnectionResourceStatus": { + "enum": [ + "CREATION_IN_PROGRESS", + "CREATION_SUCCESSFUL", + "CREATION_FAILED", + "UPDATE_IN_PROGRESS", + "UPDATE_SUCCESSFUL", + "UPDATE_FAILED", + "DELETION_IN_PROGRESS", + "DELETION_FAILED", + "DELETED" + ], + "type": "string" + } + }, + "description": "Definition of the AWS::QuickSight::VPCConnection Resource Type.", + "handlers": { + "create": { + "permissions": [ + "quicksight:CreateVPCConnection", + "quicksight:DescribeVPCConnection", + "quicksight:ListTagsForResource", + "quicksight:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "quicksight:DescribeVPCConnection", + "quicksight:DeleteVPCConnection", + "quicksight:ListTagsForResource", + "iam:PassRole" + ] + }, + "list": { + "permissions": [ + "quicksight:ListVPCConnections" + ] + }, + "read": { + "permissions": [ + "quicksight:DescribeVPCConnection", + "quicksight:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "quicksight:DescribeVPCConnection", + "quicksight:UpdateVPCConnection", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/AwsAccountId", + "/properties/VPCConnectionId" + ], + "properties": { + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the VPC connection.

", + "type": "string" + }, + "AvailabilityStatus": { + "$ref": "#/definitions/VPCConnectionAvailabilityStatus" + }, + "AwsAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "CreatedTime": { + "description": "

The time that the VPC connection was created.

", + "format": "date-time", + "type": "string" + }, + "DnsResolvers": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "LastUpdatedTime": { + "description": "

The time that the VPC connection was last updated.

", + "format": "date-time", + "type": "string" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "NetworkInterfaces": { + "description": "

A list of network interfaces.

", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/NetworkInterface" + }, + "maxItems": 15, + "minItems": 0, + "type": "array" + }, + "RoleArn": { + "type": "string" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^sg-[0-9a-z]*$", + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "Status": { + "$ref": "#/definitions/VPCConnectionResourceStatus" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^subnet-[0-9a-z]*$", + "type": "string" + }, + "maxItems": 15, + "minItems": 2, + "type": "array" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + "VPCConnectionId": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\w\\-]+", + "type": "string" + }, + "VPCId": { + "description": "

The Amazon EC2 VPC ID associated with the VPC connection.

", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastUpdatedTime", + "/properties/NetworkInterfaces", + "/properties/Status", + "/properties/VPCId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::QuickSight::VPCConnection", + "writeOnlyProperties": [ + "/properties/SubnetIds" + ] +} diff --git a/src/schema/aws-ram-permission.json b/src/schema/aws-ram-permission.json index 4b2435a7..9c9dfa33 100644 --- a/src/schema/aws-ram-permission.json +++ b/src/schema/aws-ram-permission.json @@ -1,129 +1,134 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/ResourceType", - "/properties/PolicyTemplate" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource type definition for AWS::RAM::Permission", - "handlers": { - "create": { - "permissions": [ - "ram:CreatePermission", - "ram:TagResource" - ] - }, - "delete": { - "permissions": [ - "ram:DeletePermissionVersion", - "ram:DeletePermission" - ] - }, - "list": { - "permissions": [ - "ram:ListPermissions", - "ram:ListPermissionVersions" - ] - }, - "read": { - "permissions": [ - "ram:GetPermission" - ] - }, - "update": { - "permissions": [ - "ram:CreatePermissionVersion", - "ram:DeletePermissionVersion", - "ram:SetDefaultPermissionVersion", - "ram:GetPermission", - "ram:ReplacePermissionAssociations", - "ram:ListReplacePermissionAssociationsWork", - "ram:ListPermissionVersions", - "ram:UntagResource", - "ram:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "type": "string" - }, - "IsResourceTypeDefault": { - "description": "Set to true to use this as the default permission.", - "type": "boolean" - }, - "Name": { - "description": "The name of the permission.", - "type": "string" - }, - "PermissionType": { - "type": "string" - }, - "PolicyTemplate": { - "description": "Policy template for the permission.", - "type": "object" - }, - "ResourceType": { - "description": "The resource type this permission can be used with.", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Version": { - "description": "Version of the permission.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Version", - "/properties/IsResourceTypeDefault", - "/properties/PermissionType" - ], - "required": [ - "Name", - "ResourceType", - "PolicyTemplate" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ram", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RAM::Permission" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/ResourceType", + "/properties/PolicyTemplate" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource type definition for AWS::RAM::Permission", + "handlers": { + "create": { + "permissions": [ + "ram:CreatePermission", + "ram:TagResource" + ] + }, + "delete": { + "permissions": [ + "ram:DeletePermissionVersion", + "ram:DeletePermission" + ] + }, + "list": { + "permissions": [ + "ram:ListPermissions", + "ram:ListPermissionVersions" + ] + }, + "read": { + "permissions": [ + "ram:GetPermission" + ] + }, + "update": { + "permissions": [ + "ram:CreatePermissionVersion", + "ram:DeletePermissionVersion", + "ram:SetDefaultPermissionVersion", + "ram:GetPermission", + "ram:ReplacePermissionAssociations", + "ram:ListReplacePermissionAssociationsWork", + "ram:ListPermissionVersions", + "ram:UntagResource", + "ram:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "type": "string" + }, + "IsResourceTypeDefault": { + "description": "Set to true to use this as the default permission.", + "type": "boolean" + }, + "Name": { + "description": "The name of the permission.", + "type": "string" + }, + "PermissionType": { + "type": "string" + }, + "PolicyTemplate": { + "description": "Policy template for the permission.", + "type": "object" + }, + "ResourceType": { + "description": "The resource type this permission can be used with.", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Version": { + "description": "Version of the permission.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Version", + "/properties/IsResourceTypeDefault", + "/properties/PermissionType" + ], + "required": [ + "Name", + "ResourceType", + "PolicyTemplate" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ram", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ram:TagResource", + "ram:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RAM::Permission" +} diff --git a/src/schema/aws-ram-resourceshare.json b/src/schema/aws-ram-resourceshare.json index bf566381..996c93e2 100644 --- a/src/schema/aws-ram-resourceshare.json +++ b/src/schema/aws-ram-resourceshare.json @@ -1,82 +1,145 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::RAM::ResourceShare", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AllowExternalPrincipals": { - "type": "boolean" - }, - "Arn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "PermissionArns": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Principals": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ResourceArns": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Sources": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "Name" - ], - "typeName": "AWS::RAM::ResourceShare" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource type definition for AWS::RAM::ResourceShare", + "handlers": { + "create": { + "permissions": [ + "ram:CreateResourceShare", + "ram:TagResource" + ] + }, + "delete": { + "permissions": [ + "ram:DeleteResourceShare", + "ram:GetResourceShares" + ] + }, + "list": { + "permissions": [ + "ram:GetResourceShares" + ] + }, + "read": { + "permissions": [ + "ram:GetResourceShares" + ] + }, + "update": { + "permissions": [ + "ram:GetPermission", + "ram:GetResourceShares", + "ram:GetResourceShareAssociations", + "ram:ListResourceSharePermissions", + "ram:UpdateResourceShare", + "ram:AssociateResourceSharePermission", + "ram:AssociateResourceShare", + "ram:DisassociateResourceShare", + "ram:UntagResource", + "ram:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AllowExternalPrincipals": { + "description": "Specifies whether principals outside your organization in AWS Organizations can be associated with a resource share. A value of `true` lets you share with individual AWS accounts that are not in your organization. A value of `false` only has meaning if your account is a member of an AWS Organization. The default value is `true`.", + "type": "boolean" + }, + "Arn": { + "type": "string" + }, + "Name": { + "description": "Specifies the name of the resource share.", + "type": "string" + }, + "PermissionArns": { + "description": "Specifies the [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) of the AWS RAM permission to associate with the resource share. If you do not specify an ARN for the permission, AWS RAM automatically attaches the default version of the permission for each resource type. You can associate only one permission with each resource type included in the resource share.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Principals": { + "description": "Specifies the principals to associate with the resource share. The possible values are:\n\n- An AWS account ID\n\n- An Amazon Resource Name (ARN) of an organization in AWS Organizations\n\n- An ARN of an organizational unit (OU) in AWS Organizations\n\n- An ARN of an IAM role\n\n- An ARN of an IAM user", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "ResourceArns": { + "description": "Specifies a list of one or more ARNs of the resources to associate with the resource share.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Sources": { + "description": "Specifies from which source accounts the service principal has access to the resources in this resource share.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Tags": { + "description": "Specifies one or more tags to attach to the resource share itself. It doesn't attach the tags to the resources associated with the resource share.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ram", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ram:TagResource", + "ram:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RAM::ResourceShare", + "writeOnlyProperties": [ + "/properties/PermissionArns", + "/properties/Principals", + "/properties/ResourceArns", + "/properties/Sources" + ] +} diff --git a/src/schema/aws-rbin-rule.json b/src/schema/aws-rbin-rule.json new file mode 100644 index 00000000..d7d94ed8 --- /dev/null +++ b/src/schema/aws-rbin-rule.json @@ -0,0 +1,271 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Identifier" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceType" + ], + "definitions": { + "ResourceTag": { + "additionalProperties": false, + "description": "The resource tag of the rule.", + "properties": { + "ResourceTagKey": { + "description": "The tag key of the resource.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ResourceTagValue": { + "description": "The tag value of the resource", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "ResourceTagKey", + "ResourceTagValue" + ], + "type": "object" + }, + "RetentionPeriod": { + "additionalProperties": false, + "description": "The retention period of the rule.", + "properties": { + "RetentionPeriodUnit": { + "description": "The retention period unit of the rule", + "enum": [ + "DAYS" + ], + "type": "string" + }, + "RetentionPeriodValue": { + "description": "The retention period value of the rule.", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "RetentionPeriodValue", + "RetentionPeriodUnit" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Metadata of a retention rule, consisting of a key-value pair.", + "properties": { + "Key": { + "description": "A unique identifier for the tag.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "String which you can use to describe or define the tag.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UnlockDelay": { + "additionalProperties": false, + "properties": { + "UnlockDelayUnit": { + "description": "The unit of time in which to measure the unlock delay. Currently, the unlock delay can be measure only in days.", + "enum": [ + "DAYS" + ], + "type": "string" + }, + "UnlockDelayValue": { + "description": "The unlock delay period, measured in the unit specified for UnlockDelayUnit.", + "maximum": 30, + "minimum": 7, + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Rbin::Rule", + "handlers": { + "create": { + "permissions": [ + "rbin:CreateRule", + "rbin:GetRule", + "rbin:LockRule", + "rbin:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "rbin:GetRule", + "rbin:DeleteRule", + "iam:PassRole" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ExcludeResourceTags": { + "$ref": "resource-schema.json#/properties/ExcludeResourceTags" + }, + "LockState": { + "$ref": "resource-schema.json#/properties/LockState" + }, + "ResourceTags": { + "$ref": "resource-schema.json#/properties/ResourceTags" + }, + "ResourceType": { + "$ref": "resource-schema.json#/properties/ResourceType" + } + }, + "required": [ + "ResourceType" + ] + }, + "permissions": [ + "rbin:ListRules", + "rbin:ListTagsForResource", + "iam:PassRole" + ] + }, + "read": { + "permissions": [ + "rbin:GetRule", + "rbin:ListTagsForResource", + "iam:PassRole" + ] + }, + "update": { + "permissions": [ + "rbin:GetRule", + "rbin:UpdateRule", + "rbin:LockRule", + "rbin:UnlockRule", + "rbin:TagResource", + "rbin:UntagResource", + "rbin:ListTagsForResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Rule Arn is unique for each rule.", + "maxLength": 1011, + "minLength": 0, + "type": "string" + }, + "Description": { + "description": "The description of the retention rule.", + "maxLength": 255, + "type": "string" + }, + "ExcludeResourceTags": { + "description": "Information about the exclude resource tags used to identify resources that are excluded by the retention rule.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourceTag" + }, + "maxItems": 5, + "type": "array", + "uniqueItems": true + }, + "Identifier": { + "description": "The unique ID of the retention rule.", + "pattern": "[0-9a-zA-Z]{11}", + "type": "string" + }, + "LockConfiguration": { + "$ref": "#/definitions/UnlockDelay", + "description": "Information about the retention rule lock configuration." + }, + "LockState": { + "description": "The lock state for the retention rule.", + "pattern": "locked|pending_unlock|unlocked", + "type": "string" + }, + "ResourceTags": { + "description": "Information about the resource tags used to identify resources that are retained by the retention rule.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourceTag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "ResourceType": { + "description": "The resource type retained by the retention rule.", + "enum": [ + "EBS_SNAPSHOT", + "EC2_IMAGE" + ], + "type": "string" + }, + "RetentionPeriod": { + "$ref": "#/definitions/RetentionPeriod", + "description": "Information about the retention period for which the retention rule is to retain resources." + }, + "Status": { + "description": "The state of the retention rule. Only retention rules that are in the available state retain resources.", + "pattern": "pending|available", + "type": "string" + }, + "Tags": { + "description": "Information about the tags assigned to the retention rule.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Identifier", + "/properties/LockState" + ], + "required": [ + "RetentionPeriod", + "ResourceType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rbin", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rbin:TagResource", + "rbin:UntagResource", + "rbin:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Rbin::Rule", + "writeOnlyProperties": [ + "/properties/LockConfiguration", + "/properties/LockConfiguration/UnlockDelayValue", + "/properties/LockConfiguration/UnlockDelayUnit" + ] +} diff --git a/src/schema/aws-rds-customdbengineversion.json b/src/schema/aws-rds-customdbengineversion.json index 10478ea3..7517460e 100644 --- a/src/schema/aws-rds-customdbengineversion.json +++ b/src/schema/aws-rds-customdbengineversion.json @@ -1,198 +1,206 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Engine", - "/properties/EngineVersion", - "/properties/DatabaseInstallationFilesS3BucketName", - "/properties/DatabaseInstallationFilesS3Prefix", - "/properties/ImageId", - "/properties/KMSKeyId", - "/properties/Manifest", - "/properties/SourceCustomDbEngineVersionIdentifier", - "/properties/UseAwsProvidedLatestImage" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "The AWS::RDS::CustomDBEngineVersion resource creates an Amazon RDS custom DB engine version.", - "handlers": { - "create": { - "permissions": [ - "ec2:CopySnapshot", - "ec2:DeleteSnapshot", - "ec2:DescribeSnapshots", - "kms:CreateGrant", - "kms:Decrypt", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:ReEncrypt", - "mediaimport:CreateDatabaseBinarySnapshot", - "rds:AddTagsToResource", - "rds:CreateCustomDBEngineVersion", - "rds:DescribeDBEngineVersions", - "rds:ModifyCustomDBEngineVersion", - "s3:CreateBucket", - "s3:GetObject", - "s3:GetObjectAcl", - "s3:GetObjectTagging", - "s3:ListBucket", - "s3:PutBucketObjectLockConfiguration", - "s3:PutBucketPolicy", - "s3:PutBucketVersioning" - ], - "timeoutInMinutes": 600 - }, - "delete": { - "permissions": [ - "rds:DeleteCustomDBEngineVersion", - "rds:DescribeDBEngineVersions" - ], - "timeoutInMinutes": 600 - }, - "list": { - "permissions": [ - "rds:DescribeDBEngineVersions" - ] - }, - "read": { - "permissions": [ - "rds:DescribeDBEngineVersions" - ] - }, - "update": { - "permissions": [ - "rds:AddTagsToResource", - "rds:DescribeDBEngineVersions", - "rds:ModifyCustomDBEngineVersion", - "rds:RemoveTagsFromResource" - ], - "timeoutInMinutes": 600 - } - }, - "primaryIdentifier": [ - "/properties/Engine", - "/properties/EngineVersion" - ], - "properties": { - "DBEngineVersionArn": { - "description": "The ARN of the custom engine version.", - "type": "string" - }, - "DatabaseInstallationFilesS3BucketName": { - "description": "The name of an Amazon S3 bucket that contains database installation files for your CEV. For example, a valid bucket name is `my-custom-installation-files`.", - "maxLength": 63, - "minLength": 3, - "type": "string" - }, - "DatabaseInstallationFilesS3Prefix": { - "description": "The Amazon S3 directory that contains the database installation files for your CEV. For example, a valid bucket name is `123456789012/cev1`. If this setting isn't specified, no prefix is assumed.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Description": { - "description": "An optional description of your CEV.", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "Engine": { - "description": "The database engine to use for your custom engine version (CEV). The only supported value is `custom-oracle-ee`.", - "maxLength": 35, - "minLength": 1, - "type": "string" - }, - "EngineVersion": { - "description": "The name of your CEV. The name format is 19.customized_string . For example, a valid name is 19.my_cev1. This setting is required for RDS Custom for Oracle, but optional for Amazon RDS. The combination of Engine and EngineVersion is unique per customer per Region.", - "maxLength": 60, - "minLength": 1, - "type": "string" - }, - "ImageId": { - "description": "The identifier of Amazon Machine Image (AMI) used for CEV.", - "type": "string" - }, - "KMSKeyId": { - "description": "The AWS KMS key identifier for an encrypted CEV. A symmetric KMS key is required for RDS Custom, but optional for Amazon RDS.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Manifest": { - "description": "The CEV manifest, which is a JSON document that describes the installation .zip files stored in Amazon S3. Specify the name/value pairs in a file or a quoted string. RDS Custom applies the patches in the order in which they are listed.", - "maxLength": 51000, - "minLength": 1, - "type": "string" - }, - "SourceCustomDbEngineVersionIdentifier": { - "description": "The identifier of the source custom engine version.", - "type": "string" - }, - "Status": { - "default": "available", - "description": "The availability status to be assigned to the CEV.", - "enum": [ - "available", - "inactive", - "inactive-except-restore" - ], - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "UseAwsProvidedLatestImage": { - "description": "A value that indicates whether AWS provided latest image is applied automatically to the Custom Engine Version. By default, AWS provided latest image is applied automatically. This value is only applied on create.", - "type": "boolean" - } - }, - "propertyTransform": { - "/properties/Engine": "$lowercase(Engine)", - "/properties/EngineVersion": "$lowercase(EngineVersion)", - "/properties/KMSKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KMSKeyId])" - }, - "readOnlyProperties": [ - "/properties/DBEngineVersionArn" - ], - "required": [ - "Engine", - "EngineVersion" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": true - }, - "typeName": "AWS::RDS::CustomDBEngineVersion", - "writeOnlyProperties": [ - "/properties/Manifest", - "/properties/SourceCustomDbEngineVersionIdentifier", - "/properties/UseAwsProvidedLatestImage" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Engine", + "/properties/EngineVersion", + "/properties/DatabaseInstallationFilesS3BucketName", + "/properties/DatabaseInstallationFilesS3Prefix", + "/properties/ImageId", + "/properties/KMSKeyId", + "/properties/Manifest", + "/properties/SourceCustomDbEngineVersionIdentifier", + "/properties/UseAwsProvidedLatestImage" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", + "properties": { + "Key": { + "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Creates a custom DB engine version (CEV).", + "handlers": { + "create": { + "permissions": [ + "ec2:CopySnapshot", + "ec2:DeleteSnapshot", + "ec2:DescribeSnapshots", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:ReEncrypt", + "mediaimport:CreateDatabaseBinarySnapshot", + "rds:AddTagsToResource", + "rds:CreateCustomDBEngineVersion", + "rds:DescribeDBEngineVersions", + "rds:ModifyCustomDBEngineVersion", + "s3:CreateBucket", + "s3:GetObject", + "s3:GetObjectAcl", + "s3:GetObjectTagging", + "s3:ListBucket", + "s3:PutBucketObjectLockConfiguration", + "s3:PutBucketPolicy", + "s3:PutBucketVersioning" + ], + "timeoutInMinutes": 600 + }, + "delete": { + "permissions": [ + "rds:DeleteCustomDBEngineVersion", + "rds:DescribeDBEngineVersions" + ], + "timeoutInMinutes": 600 + }, + "list": { + "permissions": [ + "rds:DescribeDBEngineVersions" + ] + }, + "read": { + "permissions": [ + "rds:DescribeDBEngineVersions" + ] + }, + "update": { + "permissions": [ + "rds:AddTagsToResource", + "rds:DescribeDBEngineVersions", + "rds:ModifyCustomDBEngineVersion", + "rds:RemoveTagsFromResource" + ], + "timeoutInMinutes": 600 + } + }, + "primaryIdentifier": [ + "/properties/Engine", + "/properties/EngineVersion" + ], + "properties": { + "DBEngineVersionArn": { + "description": "", + "type": "string" + }, + "DatabaseInstallationFilesS3BucketName": { + "description": "The name of an Amazon S3 bucket that contains database installation files for your CEV. For example, a valid bucket name is ``my-custom-installation-files``.", + "maxLength": 63, + "minLength": 3, + "type": "string" + }, + "DatabaseInstallationFilesS3Prefix": { + "description": "The Amazon S3 directory that contains the database installation files for your CEV. For example, a valid bucket name is ``123456789012/cev1``. If this setting isn't specified, no prefix is assumed.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Description": { + "description": "An optional description of your CEV.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "Engine": { + "description": "The database engine to use for your custom engine version (CEV).\n Valid values:\n + ``custom-oracle-ee`` \n + ``custom-oracle-ee-cdb``", + "maxLength": 35, + "minLength": 1, + "type": "string" + }, + "EngineVersion": { + "description": "The name of your CEV. The name format is ``major version.customized_string``. For example, a valid CEV name is ``19.my_cev1``. This setting is required for RDS Custom for Oracle, but optional for Amazon RDS. The combination of ``Engine`` and ``EngineVersion`` is unique per customer per Region.\n *Constraints:* Minimum length is 1. Maximum length is 60.\n *Pattern:* ``^[a-z0-9_.-]{1,60$``}", + "maxLength": 60, + "minLength": 1, + "type": "string" + }, + "ImageId": { + "description": "A value that indicates the ID of the AMI.", + "type": "string" + }, + "KMSKeyId": { + "description": "The AWS KMS key identifier for an encrypted CEV. A symmetric encryption KMS key is required for RDS Custom, but optional for Amazon RDS.\n If you have an existing symmetric encryption KMS key in your account, you can use it with RDS Custom. No further action is necessary. If you don't already have a symmetric encryption KMS key in your account, follow the instructions in [Creating a symmetric encryption KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) in the *Key Management Service Developer Guide*.\n You can choose the same symmetric encryption key when you create a CEV and a DB instance, or choose different keys.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Manifest": { + "description": "The CEV manifest, which is a JSON document that describes the installation .zip files stored in Amazon S3. Specify the name/value pairs in a file or a quoted string. RDS Custom applies the patches in the order in which they are listed.\n The following JSON fields are valid:\n + MediaImportTemplateVersion Version of the CEV manifest. The date is in the format YYYY-MM-DD. + databaseInstallationFileNames Ordered list of installation files for the CEV. + opatchFileNames Ordered list of OPatch installers used for the Oracle DB engine. + psuRuPatchFileNames The PSU and RU patches for this CEV. + OtherPatchFileNames The patches that are not in the list of PSU and RU patches. Amazon RDS applies these patches after applying the PSU and RU patches. \n For more information, see [Creating the CEV manifest](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-cev.html#custom-cev.preparing.manifest) in the *Amazon RDS User Guide*.", + "maxLength": 51000, + "minLength": 1, + "type": "string" + }, + "SourceCustomDbEngineVersionIdentifier": { + "description": "The ARN of a CEV to use as a source for creating a new CEV. You can specify a different Amazon Machine Imagine (AMI) by using either ``Source`` or ``UseAwsProvidedLatestImage``. You can't specify a different JSON manifest when you specify ``SourceCustomDbEngineVersionIdentifier``.", + "type": "string" + }, + "Status": { + "default": "available", + "description": "A value that indicates the status of a custom engine version (CEV).", + "enum": [ + "available", + "inactive", + "inactive-except-restore" + ], + "type": "string" + }, + "Tags": { + "description": "A list of tags. For more information, see [Tagging Amazon RDS Resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide.*", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "UseAwsProvidedLatestImage": { + "description": "Specifies whether to use the latest service-provided Amazon Machine Image (AMI) for the CEV. If you specify ``UseAwsProvidedLatestImage``, you can't also specify ``ImageId``.", + "type": "boolean" + } + }, + "propertyTransform": { + "/properties/Engine": "$lowercase(Engine)", + "/properties/EngineVersion": "$lowercase(EngineVersion)", + "/properties/KMSKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", KMSKeyId])" + }, + "readOnlyProperties": [ + "/properties/DBEngineVersionArn" + ], + "required": [ + "Engine", + "EngineVersion" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RDS::CustomDBEngineVersion", + "writeOnlyProperties": [ + "/properties/Manifest", + "/properties/SourceCustomDbEngineVersionIdentifier", + "/properties/UseAwsProvidedLatestImage" + ] +} diff --git a/src/schema/aws-rds-dbcluster.json b/src/schema/aws-rds-dbcluster.json index ea4c3ac4..2bd3711f 100644 --- a/src/schema/aws-rds-dbcluster.json +++ b/src/schema/aws-rds-dbcluster.json @@ -1,558 +1,567 @@ -{ - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/Engine", - "/properties/GlobalClusterIdentifier", - "/properties/MasterUsername" - ], - "createOnlyProperties": [ - "/properties/AvailabilityZones", - "/properties/ClusterScalabilityType", - "/properties/DBClusterIdentifier", - "/properties/DBSubnetGroupName", - "/properties/DBSystemId", - "/properties/DatabaseName", - "/properties/EngineMode", - "/properties/KmsKeyId", - "/properties/PubliclyAccessible", - "/properties/RestoreToTime", - "/properties/RestoreType", - "/properties/SnapshotIdentifier", - "/properties/SourceDBClusterIdentifier", - "/properties/SourceRegion", - "/properties/StorageEncrypted", - "/properties/UseLatestRestorableTime" - ], - "definitions": { - "DBClusterRole": { - "additionalProperties": false, - "description": "Describes an AWS Identity and Access Management (IAM) role that is associated with a DB cluster.", - "properties": { - "FeatureName": { - "description": "The name of the feature associated with the AWS Identity and Access Management (IAM) role. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf. For the list of supported feature names, see the ``SupportedFeatureNames`` description in [DBEngineVersion](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBEngineVersion.html) in the *Amazon RDS API Reference*.", - "type": "string" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) of the IAM role that is associated with the DB cluster.", - "type": "string" - } - }, - "required": [ - "RoleArn" - ], - "type": "object" - }, - "Endpoint": { - "additionalProperties": false, - "description": "The ``Endpoint`` return value specifies the connection endpoint for the primary instance of the DB cluster.", - "properties": { - "Address": { - "description": "Specifies the connection endpoint for the primary instance of the DB cluster.", - "type": "string" - }, - "Port": { - "description": "Specifies the port that the database engine is listening on.", - "type": "string" - } - }, - "type": "object" - }, - "MasterUserSecret": { - "additionalProperties": false, - "description": "The ``MasterUserSecret`` return value specifies the secret managed by RDS in AWS Secrets Manager for the master user password.\n For more information, see [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the *Amazon RDS User Guide* and [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html) in the *Amazon Aurora User Guide.*", - "properties": { - "KmsKeyId": { - "description": "The AWS KMS key identifier that is used to encrypt the secret.", - "type": "string" - }, - "SecretArn": { - "description": "The Amazon Resource Name (ARN) of the secret. This parameter is a return value that you can retrieve using the ``Fn::GetAtt`` intrinsic function. For more information, see [Return values](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#aws-resource-rds-dbcluster-return-values).", - "type": "string" - } - }, - "type": "object" - }, - "ReadEndpoint": { - "additionalProperties": false, - "description": "The ``ReadEndpoint`` return value specifies the reader endpoint for the DB cluster.\n The reader endpoint for a DB cluster load-balances connections across the Aurora Replicas that are available in a DB cluster. As clients request new connections to the reader endpoint, Aurora distributes the connection requests among the Aurora Replicas in the DB cluster. This functionality can help balance your read workload across multiple Aurora Replicas in your DB cluster.\n If a failover occurs, and the Aurora Replica that you are connected to is promoted to be the primary instance, your connection is dropped. To continue sending your read workload to other Aurora Replicas in the cluster, you can then reconnect to the reader endpoint.\n For more information about Aurora endpoints, see [Amazon Aurora connection management](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.Endpoints.html) in the *Amazon Aurora User Guide*.", - "properties": { - "Address": { - "description": "The host address of the reader endpoint.", - "type": "string" - } - }, - "type": "object" - }, - "ScalingConfiguration": { - "additionalProperties": false, - "description": "The ``ScalingConfiguration`` property type specifies the scaling configuration of an Aurora Serverless v1 DB cluster. \n For more information, see [Using Amazon Aurora Serverless](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html) in the *Amazon Aurora User Guide*.\n This property is only supported for Aurora Serverless v1. For Aurora Serverless v2, Use the ``ServerlessV2ScalingConfiguration`` property.\n Valid for: Aurora Serverless v1 DB clusters only", - "properties": { - "AutoPause": { - "description": "Indicates whether to allow or disallow automatic pause for an Aurora DB cluster in ``serverless`` DB engine mode. A DB cluster can be paused only when it's idle (it has no connections).\n If a DB cluster is paused for more than seven days, the DB cluster might be backed up with a snapshot. In this case, the DB cluster is restored when there is a request to connect to it.", - "type": "boolean" - }, - "MaxCapacity": { - "description": "The maximum capacity for an Aurora DB cluster in ``serverless`` DB engine mode.\n For Aurora MySQL, valid capacity values are ``1``, ``2``, ``4``, ``8``, ``16``, ``32``, ``64``, ``128``, and ``256``.\n For Aurora PostgreSQL, valid capacity values are ``2``, ``4``, ``8``, ``16``, ``32``, ``64``, ``192``, and ``384``.\n The maximum capacity must be greater than or equal to the minimum capacity.", - "type": "integer" - }, - "MinCapacity": { - "description": "The minimum capacity for an Aurora DB cluster in ``serverless`` DB engine mode.\n For Aurora MySQL, valid capacity values are ``1``, ``2``, ``4``, ``8``, ``16``, ``32``, ``64``, ``128``, and ``256``.\n For Aurora PostgreSQL, valid capacity values are ``2``, ``4``, ``8``, ``16``, ``32``, ``64``, ``192``, and ``384``.\n The minimum capacity must be less than or equal to the maximum capacity.", - "type": "integer" - }, - "SecondsBeforeTimeout": { - "description": "The amount of time, in seconds, that Aurora Serverless v1 tries to find a scaling point to perform seamless scaling before enforcing the timeout action. The default is 300.\n Specify a value between 60 and 600 seconds.", - "type": "integer" - }, - "SecondsUntilAutoPause": { - "description": "The time, in seconds, before an Aurora DB cluster in ``serverless`` mode is paused.\n Specify a value between 300 and 86,400 seconds.", - "type": "integer" - }, - "TimeoutAction": { - "description": "The action to take when the timeout is reached, either ``ForceApplyCapacityChange`` or ``RollbackCapacityChange``.\n ``ForceApplyCapacityChange`` sets the capacity to the specified value as soon as possible.\n ``RollbackCapacityChange``, the default, ignores the capacity change if a scaling point isn't found in the timeout period.\n If you specify ``ForceApplyCapacityChange``, connections that prevent Aurora Serverless v1 from finding a scaling point might be dropped.\n For more information, see [Autoscaling for Aurora Serverless v1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.how-it-works.html#aurora-serverless.how-it-works.auto-scaling) in the *Amazon Aurora User Guide*.", - "type": "string" - } - }, - "type": "object" - }, - "ServerlessV2ScalingConfiguration": { - "additionalProperties": false, - "description": "The ``ServerlessV2ScalingConfiguration`` property type specifies the scaling configuration of an Aurora Serverless V2 DB cluster. For more information, see [Using Amazon Aurora Serverless v2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html) in the *Amazon Aurora User Guide*.\n If you have an Aurora cluster, you must set this attribute before you add a DB instance that uses the ``db.serverless`` DB instance class. For more information, see [Clusters that use Aurora Serverless v2 must have a capacity range specified](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.requirements.html#aurora-serverless-v2.requirements.capacity-range) in the *Amazon Aurora User Guide*.\n This property is only supported for Aurora Serverless v2. For Aurora Serverless v1, use the ``ScalingConfiguration`` property.\n Valid for: Aurora Serverless v2 DB clusters", - "properties": { - "MaxCapacity": { - "description": "The maximum number of Aurora capacity units (ACUs) for a DB instance in an Aurora Serverless v2 cluster. You can specify ACU values in half-step increments, such as 40, 40.5, 41, and so on. The largest value that you can use is 128.\n The maximum capacity must be higher than 0.5 ACUs. For more information, see [Choosing the maximum Aurora Serverless v2 capacity setting for a cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.setting-capacity.html#aurora-serverless-v2.max_capacity_considerations) in the *Amazon Aurora User Guide*.\n Aurora automatically sets certain parameters for Aurora Serverless V2 DB instances to values that depend on the maximum ACU value in the capacity range. When you update the maximum capacity value, the ``ParameterApplyStatus`` value for the DB instance changes to ``pending-reboot``. You can update the parameter values by rebooting the DB instance after changing the capacity range.", - "type": "number" - }, - "MinCapacity": { - "description": "The minimum number of Aurora capacity units (ACUs) for a DB instance in an Aurora Serverless v2 cluster. You can specify ACU values in half-step increments, such as 8, 8.5, 9, and so on. The smallest value that you can use is 0.5.", - "type": "number" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", - "properties": { - "Key": { - "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "The ``AWS::RDS::DBCluster`` resource creates an Amazon Aurora DB cluster or Multi-AZ DB cluster.\n For more information about creating an Aurora DB cluster, see [Creating an Amazon Aurora DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.CreateInstance.html) in the *Amazon Aurora User Guide*.\n For more information about creating a Multi-AZ DB cluster, see [Creating a Multi-AZ DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/create-multi-az-db-cluster.html) in the *Amazon RDS User Guide*.\n You can only create this resource in AWS Regions where Amazon Aurora or Multi-AZ DB clusters are supported.\n *Updating DB clusters* \n When properties labeled \"*Update requires:* [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)\" are updated, AWS CloudFormation first creates a replacement DB cluster, then changes references from other dependent resources to point to the replacement DB cluster, and finally deletes the old DB cluster.\n We highly recommend that you take a snapshot of the database before updating the stack. If you don't, you lose the data when AWS CloudFormation replaces your DB cluster. To preserve your data, perform the following procedure:\n 1. Deactivate any applications that are using the DB cluster so that there's no activity on the DB instance.\n 1. Create a snapshot of the DB cluster. For more information, see [Creating a DB cluster snapshot](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_CreateSnapshotCluster.html).\n 1. If you want to restore your DB cluster using a DB cluster snapshot, modify the updated template with your DB cluster changes and add the ``SnapshotIdentifier`` property with the ID of the DB cluster snapshot that you want to use.\n After you restore a DB cluster with a ``SnapshotIdentifier`` property, you must specify the same ``SnapshotIdentifier`` property for any future updates to the DB cluster. When you specify this property for an update, the DB cluster is not restored from the DB cluster snapshot again, and the data in the database is not changed. However, if you don't specify the ``SnapshotIdentifier`` property, an empty DB cluster is created, and the original DB cluster is deleted. If you specify a property that is different from the previous snapshot restore property, a new DB cluster is restored from the specified ``SnapshotIdentifier`` property, and the original DB cluster is deleted.\n 1. Update the stack.\n \n Currently, when you are updating the stack for an Aurora Serverless DB cluster, you can't include changes to any other properties when you specify one of the following properties: ``PreferredBackupWindow``, ``PreferredMaintenanceWindow``, and ``Port``. This limitation doesn't apply to provisioned DB clusters.\n For more information about updating other properties of this resource, see ``ModifyDBCluster``. For more information about updating stacks, see [CloudFormation Stacks Updates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html).\n *Deleting DB clusters* \n The default ``DeletionPolicy`` for ``AWS::RDS::DBCluster`` resources is ``Snapshot``. For more information about how AWS CloudFormation deletes resources, see [DeletionPolicy Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html).", - "handlers": { - "create": { - "permissions": [ - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "rds:AddRoleToDBCluster", - "rds:AddTagsToResource", - "rds:CreateDBCluster", - "rds:CreateDBInstance", - "rds:DescribeDBClusters", - "rds:DescribeDBClusterSnapshots", - "rds:DescribeDBSnapshots", - "rds:DescribeEvents", - "rds:EnableHttpEndpoint", - "rds:ModifyDBCluster", - "rds:RestoreDBClusterFromSnapshot", - "rds:RestoreDBClusterToPointInTime", - "secretsmanager:CreateSecret", - "secretsmanager:TagResource" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "rds:AddTagsToResource", - "rds:CreateDBClusterSnapshot", - "rds:DeleteDBCluster", - "rds:DeleteDBInstance", - "rds:DescribeDBClusters", - "rds:DescribeGlobalClusters", - "rds:RemoveFromGlobalCluster" - ] - }, - "list": { - "permissions": [ - "rds:DescribeDBClusters" - ] - }, - "read": { - "permissions": [ - "rds:DescribeDBClusters" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeSecurityGroups", - "iam:PassRole", - "rds:AddRoleToDBCluster", - "rds:AddTagsToResource", - "rds:DescribeDBClusters", - "rds:DescribeDBSubnetGroups", - "rds:DescribeEvents", - "rds:DescribeGlobalClusters", - "rds:DisableHttpEndpoint", - "rds:EnableHttpEndpoint", - "rds:ModifyDBCluster", - "rds:ModifyDBInstance", - "rds:RemoveFromGlobalCluster", - "rds:RemoveRoleFromDBCluster", - "rds:RemoveTagsFromResource", - "secretsmanager:CreateSecret", - "secretsmanager:TagResource" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/DBClusterIdentifier" - ], - "properties": { - "AllocatedStorage": { - "description": "The amount of storage in gibibytes (GiB) to allocate to each DB instance in the Multi-AZ DB cluster.\n Valid for Cluster Type: Multi-AZ DB clusters only\n This setting is required to create a Multi-AZ DB cluster.", - "type": "integer" - }, - "AssociatedRoles": { - "description": "Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other Amazon Web Services on your behalf.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "items": { - "$ref": "#/definitions/DBClusterRole" - }, - "type": "array", - "uniqueItems": true - }, - "AutoMinorVersionUpgrade": { - "description": "Specifies whether minor engine upgrades are applied automatically to the DB cluster during the maintenance window. By default, minor engine upgrades are applied automatically.\n Valid for Cluster Type: Multi-AZ DB clusters only", - "type": "boolean" - }, - "AvailabilityZones": { - "description": "A list of Availability Zones (AZs) where instances in the DB cluster can be created. For information on AWS Regions and Availability Zones, see [Choosing the Regions and Availability Zones](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.RegionsAndAvailabilityZones.html) in the *Amazon Aurora User Guide*. \n Valid for: Aurora DB clusters only", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "BacktrackWindow": { - "description": "The target backtrack window, in seconds. To disable backtracking, set this value to ``0``.\n Valid for Cluster Type: Aurora MySQL DB clusters only\n Default: ``0`` \n Constraints:\n + If specified, this value must be set to a number from 0 to 259,200 (72 hours).", - "minimum": 0, - "type": "integer" - }, - "BackupRetentionPeriod": { - "default": 1, - "description": "The number of days for which automated backups are retained.\n Default: 1\n Constraints:\n + Must be a value from 1 to 35\n \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "minimum": 1, - "type": "integer" - }, - "ClusterScalabilityType": { - "description": "", - "type": "string" - }, - "CopyTagsToSnapshot": { - "description": "A value that indicates whether to copy all tags from the DB cluster to snapshots of the DB cluster. The default is not to copy them.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "boolean" - }, - "DBClusterArn": { - "description": "", - "type": "string" - }, - "DBClusterIdentifier": { - "description": "The DB cluster identifier. This parameter is stored as a lowercase string.\n Constraints:\n + Must contain from 1 to 63 letters, numbers, or hyphens.\n + First character must be a letter.\n + Can't end with a hyphen or contain two consecutive hyphens.\n \n Example: ``my-cluster1`` \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", - "type": "string" - }, - "DBClusterInstanceClass": { - "description": "The compute and memory capacity of each DB instance in the Multi-AZ DB cluster, for example ``db.m6gd.xlarge``. Not all DB instance classes are available in all AWS-Regions, or for all database engines.\n For the full list of DB instance classes and availability for your engine, see [DB instance class](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html) in the *Amazon RDS User Guide*.\n This setting is required to create a Multi-AZ DB cluster.\n Valid for Cluster Type: Multi-AZ DB clusters only", - "type": "string" - }, - "DBClusterParameterGroupName": { - "description": "The name of the DB cluster parameter group to associate with this DB cluster.\n If you apply a parameter group to an existing DB cluster, then its DB instances might need to reboot. This can result in an outage while the DB instances are rebooting.\n If you apply a change to parameter group associated with a stopped DB cluster, then the update stack waits until the DB cluster is started.\n To list all of the available DB cluster parameter group names, use the following command:\n ``aws rds describe-db-cluster-parameter-groups --query \"DBClusterParameterGroups[].DBClusterParameterGroupName\" --output text`` \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "string" - }, - "DBClusterResourceId": { - "description": "", - "type": "string" - }, - "DBInstanceParameterGroupName": { - "description": "The name of the DB parameter group to apply to all instances of the DB cluster.\n When you apply a parameter group using the ``DBInstanceParameterGroupName`` parameter, the DB cluster isn't rebooted automatically. Also, parameter changes are applied immediately rather than during the next maintenance window.\n Valid for Cluster Type: Aurora DB clusters only\n Default: The existing name setting\n Constraints:\n + The DB parameter group must be in the same DB parameter group family as this DB cluster.\n + The ``DBInstanceParameterGroupName`` parameter is valid in combination with the ``AllowMajorVersionUpgrade`` parameter for a major version upgrade only.", - "type": "string" - }, - "DBSubnetGroupName": { - "description": "A DB subnet group that you want to associate with this DB cluster. \n If you are restoring a DB cluster to a point in time with ``RestoreType`` set to ``copy-on-write``, and don't specify a DB subnet group name, then the DB cluster is restored with a default DB subnet group.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "string" - }, - "DBSystemId": { - "description": "Reserved for future use.", - "type": "string" - }, - "DatabaseName": { - "description": "The name of your database. If you don't provide a name, then Amazon RDS won't create a database in this DB cluster. For naming constraints, see [Naming Constraints](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_Limits.html#RDS_Limits.Constraints) in the *Amazon Aurora User Guide*. \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "string" - }, - "DeletionProtection": { - "description": "A value that indicates whether the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled. By default, deletion protection is disabled.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "boolean" - }, - "Domain": { - "description": "Indicates the directory ID of the Active Directory to create the DB cluster.\n For Amazon Aurora DB clusters, Amazon RDS can use Kerberos authentication to authenticate users that connect to the DB cluster.\n For more information, see [Kerberos authentication](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/kerberos-authentication.html) in the *Amazon Aurora User Guide*.\n Valid for: Aurora DB clusters only", - "type": "string" - }, - "DomainIAMRoleName": { - "description": "Specifies the name of the IAM role to use when making API calls to the Directory Service.\n Valid for: Aurora DB clusters only", - "type": "string" - }, - "EnableCloudwatchLogsExports": { - "description": "The list of log types that need to be enabled for exporting to CloudWatch Logs. The values in the list depend on the DB engine being used. For more information, see [Publishing Database Logs to Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch) in the *Amazon Aurora User Guide*.\n *Aurora MySQL* \n Valid values: ``audit``, ``error``, ``general``, ``slowquery`` \n *Aurora PostgreSQL* \n Valid values: ``postgresql`` \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "EnableGlobalWriteForwarding": { - "description": "Specifies whether to enable this DB cluster to forward write operations to the primary cluster of a global cluster (Aurora global database). By default, write operations are not allowed on Aurora DB clusters that are secondary clusters in an Aurora global database.\n You can set this value only on Aurora DB clusters that are members of an Aurora global database. With this parameter enabled, a secondary cluster can forward writes to the current primary cluster, and the resulting changes are replicated back to this cluster. For the primary DB cluster of an Aurora global database, this value is used immediately if the primary is demoted by a global cluster API operation, but it does nothing until then.\n Valid for Cluster Type: Aurora DB clusters only", - "type": "boolean" - }, - "EnableHttpEndpoint": { - "description": "Specifies whether to enable the HTTP endpoint for the DB cluster. By default, the HTTP endpoint isn't enabled.\n When enabled, the HTTP endpoint provides a connectionless web service API (RDS Data API) for running SQL queries on the DB cluster. You can also query your database from inside the RDS console with the RDS query editor.\n RDS Data API is supported with the following DB clusters:\n + Aurora PostgreSQL Serverless v2 and provisioned\n + Aurora PostgreSQL and Aurora MySQL Serverless v1\n \n For more information, see [Using RDS Data API](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html) in the *Amazon Aurora User Guide*.\n Valid for Cluster Type: Aurora DB clusters only", - "type": "boolean" - }, - "EnableIAMDatabaseAuthentication": { - "description": "A value that indicates whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts. By default, mapping is disabled.\n For more information, see [IAM Database Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.html) in the *Amazon Aurora User Guide.* \n Valid for: Aurora DB clusters only", - "type": "boolean" - }, - "EnableLocalWriteForwarding": { - "description": "Specifies whether read replicas can forward write operations to the writer DB instance in the DB cluster. By default, write operations aren't allowed on reader DB instances.\n Valid for: Aurora DB clusters only", - "type": "boolean" - }, - "Endpoint": { - "$ref": "#/definitions/Endpoint", - "description": "" - }, - "Engine": { - "description": "The name of the database engine to be used for this DB cluster.\n Valid Values:\n + ``aurora-mysql`` \n + ``aurora-postgresql`` \n + ``mysql`` \n + ``postgres`` \n \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "string" - }, - "EngineLifecycleSupport": { - "description": "The life cycle type for this DB cluster.\n By default, this value is set to ``open-source-rds-extended-support``, which enrolls your DB cluster into Amazon RDS Extended Support. At the end of standard support, you can avoid charges for Extended Support by setting the value to ``open-source-rds-extended-support-disabled``. In this case, creating the DB cluster will fail if the DB major version is past its end of standard support date.\n You can use this setting to enroll your DB cluster into Amazon RDS Extended Support. With RDS Extended Support, you can run the selected major engine version on your DB cluster past the end of standard support for that engine version. For more information, see the following sections:\n + Amazon Aurora (PostgreSQL only) - [Using Amazon RDS Extended Support](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/extended-support.html) in the *Amazon Aurora User Guide* \n + Amazon RDS - [Using Amazon RDS Extended Support](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html) in the *Amazon RDS User Guide* \n \n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters\n Valid Values: ``open-source-rds-extended-support | open-source-rds-extended-support-disabled`` \n Default: ``open-source-rds-extended-support``", - "type": "string" - }, - "EngineMode": { - "description": "The DB engine mode of the DB cluster, either ``provisioned`` or ``serverless``.\n The ``serverless`` engine mode only applies for Aurora Serverless v1 DB clusters. Aurora Serverless v2 DB clusters use the ``provisioned`` engine mode.\n For information about limitations and requirements for Serverless DB clusters, see the following sections in the *Amazon Aurora User Guide*:\n + [Limitations of Aurora Serverless v1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html#aurora-serverless.limitations) \n + [Requirements for Aurora Serverless v2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.requirements.html) \n \n Valid for Cluster Type: Aurora DB clusters only", - "type": "string" - }, - "EngineVersion": { - "description": "The version number of the database engine to use.\n To list all of the available engine versions for Aurora MySQL version 2 (5.7-compatible) and version 3 (8.0-compatible), use the following command:\n ``aws rds describe-db-engine-versions --engine aurora-mysql --query \"DBEngineVersions[].EngineVersion\"`` \n You can supply either ``5.7`` or ``8.0`` to use the default engine version for Aurora MySQL version 2 or version 3, respectively.\n To list all of the available engine versions for Aurora PostgreSQL, use the following command:\n ``aws rds describe-db-engine-versions --engine aurora-postgresql --query \"DBEngineVersions[].EngineVersion\"`` \n To list all of the available engine versions for RDS for MySQL, use the following command:\n ``aws rds describe-db-engine-versions --engine mysql --query \"DBEngineVersions[].EngineVersion\"`` \n To list all of the available engine versions for RDS for PostgreSQL, use the following command:\n ``aws rds describe-db-engine-versions --engine postgres --query \"DBEngineVersions[].EngineVersion\"`` \n *Aurora MySQL* \n For information, see [Database engine updates for Amazon Aurora MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Updates.html) in the *Amazon Aurora User Guide*.\n *Aurora PostgreSQL* \n For information, see [Amazon Aurora PostgreSQL releases and engine versions](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Updates.20180305.html) in the *Amazon Aurora User Guide*.\n *MySQL* \n For information, see [Amazon RDS for MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt) in the *Amazon RDS User Guide*.\n *PostgreSQL* \n For information, see [Amazon RDS for PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts) in the *Amazon RDS User Guide*.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "string" - }, - "GlobalClusterIdentifier": { - "description": "If you are configuring an Aurora global database cluster and want your Aurora DB cluster to be a secondary member in the global database cluster, specify the global cluster ID of the global database cluster. To define the primary database cluster of the global cluster, use the [AWS::RDS::GlobalCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-globalcluster.html) resource. \n If you aren't configuring a global database cluster, don't specify this property. \n To remove the DB cluster from a global database cluster, specify an empty value for the ``GlobalClusterIdentifier`` property.\n For information about Aurora global databases, see [Working with Amazon Aurora Global Databases](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html) in the *Amazon Aurora User Guide*.\n Valid for: Aurora DB clusters only", - "maxLength": 63, - "minLength": 0, - "pattern": "^$|^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", - "type": "string" - }, - "Iops": { - "description": "The amount of Provisioned IOPS (input/output operations per second) to be initially allocated for each DB instance in the Multi-AZ DB cluster.\n For information about valid IOPS values, see [Provisioned IOPS storage](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#USER_PIOPS) in the *Amazon RDS User Guide*.\n This setting is required to create a Multi-AZ DB cluster.\n Valid for Cluster Type: Multi-AZ DB clusters only\n Constraints:\n + Must be a multiple between .5 and 50 of the storage amount for the DB cluster.", - "type": "integer" - }, - "KmsKeyId": { - "description": "The Amazon Resource Name (ARN) of the AWS KMS key that is used to encrypt the database instances in the DB cluster, such as ``arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef``. If you enable the ``StorageEncrypted`` property but don't specify this property, the default KMS key is used. If you specify this property, you must set the ``StorageEncrypted`` property to ``true``.\n If you specify the ``SnapshotIdentifier`` property, the ``StorageEncrypted`` property value is inherited from the snapshot, and if the DB cluster is encrypted, the specified ``KmsKeyId`` property is used.\n If you create a read replica of an encrypted DB cluster in another AWS Region, make sure to set ``KmsKeyId`` to a KMS key identifier that is valid in the destination AWS Region. This KMS key is used to encrypt the read replica in that AWS Region.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "string" - }, - "ManageMasterUserPassword": { - "description": "Specifies whether to manage the master user password with AWS Secrets Manager.\n For more information, see [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the *Amazon RDS User Guide* and [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html) in the *Amazon Aurora User Guide.* \n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters\n Constraints:\n + Can't manage the master user password with AWS Secrets Manager if ``MasterUserPassword`` is specified.", - "type": "boolean" - }, - "MasterUserPassword": { - "description": "The master password for the DB instance.\n If you specify the ``SourceDBClusterIdentifier``, ``SnapshotIdentifier``, or ``GlobalClusterIdentifier`` property, don't specify this property. The value is inherited from the source DB cluster, the snapshot, or the primary DB cluster for the global database cluster, respectively.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "string" - }, - "MasterUserSecret": { - "$ref": "#/definitions/MasterUserSecret", - "description": "The secret managed by RDS in AWS Secrets Manager for the master user password.\n For more information, see [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the *Amazon RDS User Guide* and [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html) in the *Amazon Aurora User Guide.*" - }, - "MasterUsername": { - "description": "The name of the master user for the DB cluster.\n If you specify the ``SourceDBClusterIdentifier``, ``SnapshotIdentifier``, or ``GlobalClusterIdentifier`` property, don't specify this property. The value is inherited from the source DB cluster, the snapshot, or the primary DB cluster for the global database cluster, respectively.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "minLength": 1, - "pattern": "^[a-zA-Z]{1}[a-zA-Z0-9_]*$", - "type": "string" - }, - "MonitoringInterval": { - "description": "The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB cluster. To turn off collecting Enhanced Monitoring metrics, specify ``0``.\n If ``MonitoringRoleArn`` is specified, also set ``MonitoringInterval`` to a value other than ``0``.\n Valid for Cluster Type: Multi-AZ DB clusters only\n Valid Values: ``0 | 1 | 5 | 10 | 15 | 30 | 60`` \n Default: ``0``", - "type": "integer" - }, - "MonitoringRoleArn": { - "description": "The Amazon Resource Name (ARN) for the IAM role that permits RDS to send Enhanced Monitoring metrics to Amazon CloudWatch Logs. An example is ``arn:aws:iam:123456789012:role/emaccess``. For information on creating a monitoring role, see [Setting up and enabling Enhanced Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.Enabling) in the *Amazon RDS User Guide*.\n If ``MonitoringInterval`` is set to a value other than ``0``, supply a ``MonitoringRoleArn`` value.\n Valid for Cluster Type: Multi-AZ DB clusters only", - "type": "string" - }, - "NetworkType": { - "description": "The network type of the DB cluster.\n Valid values:\n + ``IPV4`` \n + ``DUAL`` \n \n The network type is determined by the ``DBSubnetGroup`` specified for the DB cluster. A ``DBSubnetGroup`` can support only the IPv4 protocol or the IPv4 and IPv6 protocols (``DUAL``).\n For more information, see [Working with a DB instance in a VPC](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html) in the *Amazon Aurora User Guide.* \n Valid for: Aurora DB clusters only", - "type": "string" - }, - "PerformanceInsightsEnabled": { - "description": "Specifies whether to turn on Performance Insights for the DB cluster.\n For more information, see [Using Amazon Performance Insights](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) in the *Amazon RDS User Guide*.\n Valid for Cluster Type: Multi-AZ DB clusters only", - "type": "boolean" - }, - "PerformanceInsightsKmsKeyId": { - "description": "The AWS KMS key identifier for encryption of Performance Insights data.\n The AWS KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key.\n If you don't specify a value for ``PerformanceInsightsKMSKeyId``, then Amazon RDS uses your default KMS key. There is a default KMS key for your AWS-account. Your AWS-account has a different default KMS key for each AWS-Region.\n Valid for Cluster Type: Multi-AZ DB clusters only", - "type": "string" - }, - "PerformanceInsightsRetentionPeriod": { - "description": "The number of days to retain Performance Insights data.\n Valid for Cluster Type: Multi-AZ DB clusters only\n Valid Values:\n + ``7`` \n + *month* * 31, where *month* is a number of months from 1-23. Examples: ``93`` (3 months * 31), ``341`` (11 months * 31), ``589`` (19 months * 31)\n + ``731`` \n \n Default: ``7`` days\n If you specify a retention period that isn't valid, such as ``94``, Amazon RDS issues an error.", - "type": "integer" - }, - "Port": { - "description": "The port number on which the DB instances in the DB cluster accept connections.\n Default:\n + When ``EngineMode`` is ``provisioned``, ``3306`` (for both Aurora MySQL and Aurora PostgreSQL)\n + When ``EngineMode`` is ``serverless``:\n + ``3306`` when ``Engine`` is ``aurora`` or ``aurora-mysql`` \n + ``5432`` when ``Engine`` is ``aurora-postgresql`` \n \n \n The ``No interruption`` on update behavior only applies to DB clusters. If you are updating a DB instance, see [Port](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-port) for the AWS::RDS::DBInstance resource.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "integer" - }, - "PreferredBackupWindow": { - "description": "The daily time range during which automated backups are created. For more information, see [Backup Window](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Backups.html#Aurora.Managing.Backups.BackupWindow) in the *Amazon Aurora User Guide.* \n Constraints:\n + Must be in the format ``hh24:mi-hh24:mi``.\n + Must be in Universal Coordinated Time (UTC).\n + Must not conflict with the preferred maintenance window.\n + Must be at least 30 minutes.\n \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "string" - }, - "PreferredMaintenanceWindow": { - "description": "The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).\n Format: ``ddd:hh24:mi-ddd:hh24:mi`` \n The default is a 30-minute window selected at random from an 8-hour block of time for each AWS Region, occurring on a random day of the week. To see the time blocks available, see [Adjusting the Preferred DB Cluster Maintenance Window](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.Maintenance.html#AdjustingTheMaintenanceWindow.Aurora) in the *Amazon Aurora User Guide.* \n Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.\n Constraints: Minimum 30-minute window.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "string" - }, - "PubliclyAccessible": { - "description": "Specifies whether the DB cluster is publicly accessible.\n When the DB cluster is publicly accessible and you connect from outside of the DB cluster's virtual private cloud (VPC), its Domain Name System (DNS) endpoint resolves to the public IP address. When you connect from within the same VPC as the DB cluster, the endpoint resolves to the private IP address. Access to the DB cluster is ultimately controlled by the security group it uses. That public access isn't permitted if the security group assigned to the DB cluster doesn't permit it.\n When the DB cluster isn't publicly accessible, it is an internal DB cluster with a DNS name that resolves to a private IP address.\n Valid for Cluster Type: Multi-AZ DB clusters only\n Default: The default behavior varies depending on whether ``DBSubnetGroupName`` is specified.\n If ``DBSubnetGroupName`` isn't specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the default VPC in the target Region doesn\u2019t have an internet gateway attached to it, the DB cluster is private.\n + If the default VPC in the target Region has an internet gateway attached to it, the DB cluster is public.\n \n If ``DBSubnetGroupName`` is specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the subnets are part of a VPC that doesn\u2019t have an internet gateway attached to it, the DB cluster is private.\n + If the subnets are part of a VPC that has an internet gateway attached to it, the DB cluster is public.", - "type": "boolean" - }, - "ReadEndpoint": { - "$ref": "#/definitions/ReadEndpoint", - "description": "This data type represents the information you need to connect to an Amazon RDS DB instance. This data type is used as a response element in the following actions:\n + ``CreateDBInstance`` \n + ``DescribeDBInstances`` \n + ``DeleteDBInstance`` \n \n For the data structure that represents Amazon Aurora DB cluster endpoints, see ``DBClusterEndpoint``." - }, - "ReplicationSourceIdentifier": { - "description": "The Amazon Resource Name (ARN) of the source DB instance or DB cluster if this DB cluster is created as a read replica.\n Valid for: Aurora DB clusters only", - "type": "string" - }, - "RestoreToTime": { - "description": "The date and time to restore the DB cluster to.\n Valid Values: Value must be a time in Universal Coordinated Time (UTC) format\n Constraints:\n + Must be before the latest restorable time for the DB instance\n + Must be specified if ``UseLatestRestorableTime`` parameter isn't provided\n + Can't be specified if the ``UseLatestRestorableTime`` parameter is enabled\n + Can't be specified if the ``RestoreType`` parameter is ``copy-on-write`` \n \n This property must be used with ``SourceDBClusterIdentifier`` property. The resulting cluster will have the identifier that matches the value of the ``DBclusterIdentifier`` property.\n Example: ``2015-03-07T23:45:00Z`` \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "string" - }, - "RestoreType": { - "description": "The type of restore to be performed. You can specify one of the following values:\n + ``full-copy`` - The new DB cluster is restored as a full copy of the source DB cluster.\n + ``copy-on-write`` - The new DB cluster is restored as a clone of the source DB cluster.\n \n If you don't specify a ``RestoreType`` value, then the new DB cluster is restored as a full copy of the source DB cluster.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "string" - }, - "ScalingConfiguration": { - "$ref": "#/definitions/ScalingConfiguration", - "description": "The scaling configuration of an Aurora Serverless v1 DB cluster.\n This property is only supported for Aurora Serverless v1. For Aurora Serverless v2, Use the ``ServerlessV2ScalingConfiguration`` property.\n Valid for: Aurora Serverless v1 DB clusters only" - }, - "ServerlessV2ScalingConfiguration": { - "$ref": "#/definitions/ServerlessV2ScalingConfiguration", - "description": "The scaling configuration of an Aurora Serverless V2 DB cluster. \n This property is only supported for Aurora Serverless v2. For Aurora Serverless v1, Use the ``ScalingConfiguration`` property.\n Valid for: Aurora Serverless v2 DB clusters only" - }, - "SnapshotIdentifier": { - "description": "The identifier for the DB snapshot or DB cluster snapshot to restore from.\n You can use either the name or the Amazon Resource Name (ARN) to specify a DB cluster snapshot. However, you can use only the ARN to specify a DB snapshot.\n After you restore a DB cluster with a ``SnapshotIdentifier`` property, you must specify the same ``SnapshotIdentifier`` property for any future updates to the DB cluster. When you specify this property for an update, the DB cluster is not restored from the snapshot again, and the data in the database is not changed. However, if you don't specify the ``SnapshotIdentifier`` property, an empty DB cluster is created, and the original DB cluster is deleted. If you specify a property that is different from the previous snapshot restore property, a new DB cluster is restored from the specified ``SnapshotIdentifier`` property, and the original DB cluster is deleted.\n If you specify the ``SnapshotIdentifier`` property to restore a DB cluster (as opposed to specifying it for DB cluster updates), then don't specify the following properties:\n + ``GlobalClusterIdentifier`` \n + ``MasterUsername`` \n + ``MasterUserPassword`` \n + ``ReplicationSourceIdentifier`` \n + ``RestoreType`` \n + ``SourceDBClusterIdentifier`` \n + ``SourceRegion`` \n + ``StorageEncrypted`` (for an encrypted snapshot)\n + ``UseLatestRestorableTime`` \n \n Constraints:\n + Must match the identifier of an existing Snapshot.\n \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "string" - }, - "SourceDBClusterIdentifier": { - "description": "When restoring a DB cluster to a point in time, the identifier of the source DB cluster from which to restore.\n Constraints:\n + Must match the identifier of an existing DBCluster.\n \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "string" - }, - "SourceRegion": { - "description": "The AWS Region which contains the source DB cluster when replicating a DB cluster. For example, ``us-east-1``. \n Valid for: Aurora DB clusters only", - "type": "string" - }, - "StorageEncrypted": { - "description": "Indicates whether the DB cluster is encrypted.\n If you specify the ``KmsKeyId`` property, then you must enable encryption.\n If you specify the ``SourceDBClusterIdentifier`` property, don't specify this property. The value is inherited from the source DB cluster, and if the DB cluster is encrypted, the specified ``KmsKeyId`` property is used.\n If you specify the ``SnapshotIdentifier`` and the specified snapshot is encrypted, don't specify this property. The value is inherited from the snapshot, and the specified ``KmsKeyId`` property is used.\n If you specify the ``SnapshotIdentifier`` and the specified snapshot isn't encrypted, you can use this property to specify that the restored DB cluster is encrypted. Specify the ``KmsKeyId`` property for the KMS key to use for encryption. If you don't want the restored DB cluster to be encrypted, then don't set this property or set it to ``false``.\n If you specify both the ``StorageEncrypted`` and ``SnapshotIdentifier`` properties without specifying the ``KmsKeyId`` property, then the restored DB cluster inherits the encryption settings from the DB snapshot that provide.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "boolean" - }, - "StorageThroughput": { - "description": "", - "type": "integer" - }, - "StorageType": { - "description": "The storage type to associate with the DB cluster.\n For information on storage types for Aurora DB clusters, see [Storage configurations for Amazon Aurora DB clusters](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.StorageReliability.html#aurora-storage-type). For information on storage types for Multi-AZ DB clusters, see [Settings for creating Multi-AZ DB clusters](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/create-multi-az-db-cluster.html#create-multi-az-db-cluster-settings).\n This setting is required to create a Multi-AZ DB cluster.\n When specified for a Multi-AZ DB cluster, a value for the ``Iops`` parameter is required.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters\n Valid Values:\n + Aurora DB clusters - ``aurora | aurora-iopt1`` \n + Multi-AZ DB clusters - ``io1 | io2 | gp3`` \n \n Default:\n + Aurora DB clusters - ``aurora`` \n + Multi-AZ DB clusters - ``io1`` \n \n When you create an Aurora DB cluster with the storage type set to ``aurora-iopt1``, the storage type is returned in the response. The storage type isn't returned when you set it to ``aurora``.", - "type": "string" - }, - "Tags": { - "description": "Tags to assign to the DB cluster.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UseLatestRestorableTime": { - "description": "A value that indicates whether to restore the DB cluster to the latest restorable backup time. By default, the DB cluster is not restored to the latest restorable backup time. \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "type": "boolean" - }, - "VpcSecurityGroupIds": { - "description": "A list of EC2 VPC security groups to associate with this DB cluster.\n If you plan to update the resource, don't specify VPC security groups in a shared VPC.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "propertyTransform": { - "/properties/DBClusterIdentifier": "$lowercase(DBClusterIdentifier)", - "/properties/DBClusterParameterGroupName": "$lowercase(DBClusterParameterGroupName)", - "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)", - "/properties/EnableHttpEndpoint": "$lowercase($string(EngineMode)) = 'serverless' ? EnableHttpEndpoint : ($lowercase($string(Engine)) in ['aurora-postgresql', 'aurora-mysql'] ? EnableHttpEndpoint : false )", - "/properties/Engine": "$lowercase(Engine)", - "/properties/EngineVersion": "$join([$string(EngineVersion), \".*\"])", - "/properties/KmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", KmsKeyId])", - "/properties/MasterUserSecret/KmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", MasterUserSecret.KmsKeyId])", - "/properties/NetworkType": "$lowercase(NetworkType)", - "/properties/PerformanceInsightsKmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", PerformanceInsightsKmsKeyId])", - "/properties/PreferredMaintenanceWindow": "$lowercase(PreferredMaintenanceWindow)", - "/properties/SnapshotIdentifier": "$lowercase(SnapshotIdentifier)", - "/properties/SourceDBClusterIdentifier": "$lowercase(SourceDBClusterIdentifier)", - "/properties/StorageType": "$lowercase(StorageType)" - }, - "readOnlyProperties": [ - "/properties/DBClusterArn", - "/properties/DBClusterResourceId", - "/properties/Endpoint", - "/properties/Endpoint/Address", - "/properties/Endpoint/Port", - "/properties/ReadEndpoint/Address", - "/properties/MasterUserSecret/SecretArn", - "/properties/StorageThroughput" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RDS::DBCluster", - "writeOnlyProperties": [ - "/properties/ClusterScalabilityType", - "/properties/DBInstanceParameterGroupName", - "/properties/MasterUserPassword", - "/properties/RestoreToTime", - "/properties/RestoreType", - "/properties/SnapshotIdentifier", - "/properties/SourceDBClusterIdentifier", - "/properties/SourceRegion", - "/properties/UseLatestRestorableTime" - ] -} +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/Engine", + "/properties/GlobalClusterIdentifier", + "/properties/MasterUsername" + ], + "createOnlyProperties": [ + "/properties/AvailabilityZones", + "/properties/ClusterScalabilityType", + "/properties/DBClusterIdentifier", + "/properties/DBSubnetGroupName", + "/properties/DBSystemId", + "/properties/DatabaseName", + "/properties/EngineMode", + "/properties/KmsKeyId", + "/properties/PubliclyAccessible", + "/properties/RestoreToTime", + "/properties/RestoreType", + "/properties/SnapshotIdentifier", + "/properties/SourceDBClusterIdentifier", + "/properties/SourceRegion", + "/properties/StorageEncrypted", + "/properties/UseLatestRestorableTime" + ], + "definitions": { + "DBClusterRole": { + "additionalProperties": false, + "description": "Describes an AWS Identity and Access Management (IAM) role that is associated with a DB cluster.", + "properties": { + "FeatureName": { + "description": "The name of the feature associated with the AWS Identity and Access Management (IAM) role. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf. For the list of supported feature names, see the ``SupportedFeatureNames`` description in [DBEngineVersion](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBEngineVersion.html) in the *Amazon RDS API Reference*.", + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM role that is associated with the DB cluster.", + "type": "string" + } + }, + "required": [ + "RoleArn" + ], + "type": "object" + }, + "Endpoint": { + "additionalProperties": false, + "description": "The ``Endpoint`` return value specifies the connection endpoint for the primary instance of the DB cluster.", + "properties": { + "Address": { + "description": "Specifies the connection endpoint for the primary instance of the DB cluster.", + "type": "string" + }, + "Port": { + "description": "Specifies the port that the database engine is listening on.", + "type": "string" + } + }, + "type": "object" + }, + "MasterUserSecret": { + "additionalProperties": false, + "description": "The ``MasterUserSecret`` return value specifies the secret managed by RDS in AWS Secrets Manager for the master user password.\n For more information, see [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the *Amazon RDS User Guide* and [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html) in the *Amazon Aurora User Guide.*", + "properties": { + "KmsKeyId": { + "description": "The AWS KMS key identifier that is used to encrypt the secret.", + "type": "string" + }, + "SecretArn": { + "description": "The Amazon Resource Name (ARN) of the secret. This parameter is a return value that you can retrieve using the ``Fn::GetAtt`` intrinsic function. For more information, see [Return values](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#aws-resource-rds-dbcluster-return-values).", + "type": "string" + } + }, + "type": "object" + }, + "ReadEndpoint": { + "additionalProperties": false, + "description": "The ``ReadEndpoint`` return value specifies the reader endpoint for the DB cluster.\n The reader endpoint for a DB cluster load-balances connections across the Aurora Replicas that are available in a DB cluster. As clients request new connections to the reader endpoint, Aurora distributes the connection requests among the Aurora Replicas in the DB cluster. This functionality can help balance your read workload across multiple Aurora Replicas in your DB cluster.\n If a failover occurs, and the Aurora Replica that you are connected to is promoted to be the primary instance, your connection is dropped. To continue sending your read workload to other Aurora Replicas in the cluster, you can then reconnect to the reader endpoint.\n For more information about Aurora endpoints, see [Amazon Aurora connection management](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.Endpoints.html) in the *Amazon Aurora User Guide*.", + "properties": { + "Address": { + "description": "The host address of the reader endpoint.", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfiguration": { + "additionalProperties": false, + "description": "The ``ScalingConfiguration`` property type specifies the scaling configuration of an Aurora Serverless v1 DB cluster. \n For more information, see [Using Amazon Aurora Serverless](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html) in the *Amazon Aurora User Guide*.\n This property is only supported for Aurora Serverless v1. For Aurora Serverless v2, Use the ``ServerlessV2ScalingConfiguration`` property.\n Valid for: Aurora Serverless v1 DB clusters only", + "properties": { + "AutoPause": { + "description": "Indicates whether to allow or disallow automatic pause for an Aurora DB cluster in ``serverless`` DB engine mode. A DB cluster can be paused only when it's idle (it has no connections).\n If a DB cluster is paused for more than seven days, the DB cluster might be backed up with a snapshot. In this case, the DB cluster is restored when there is a request to connect to it.", + "type": "boolean" + }, + "MaxCapacity": { + "description": "The maximum capacity for an Aurora DB cluster in ``serverless`` DB engine mode.\n For Aurora MySQL, valid capacity values are ``1``, ``2``, ``4``, ``8``, ``16``, ``32``, ``64``, ``128``, and ``256``.\n For Aurora PostgreSQL, valid capacity values are ``2``, ``4``, ``8``, ``16``, ``32``, ``64``, ``192``, and ``384``.\n The maximum capacity must be greater than or equal to the minimum capacity.", + "type": "integer" + }, + "MinCapacity": { + "description": "The minimum capacity for an Aurora DB cluster in ``serverless`` DB engine mode.\n For Aurora MySQL, valid capacity values are ``1``, ``2``, ``4``, ``8``, ``16``, ``32``, ``64``, ``128``, and ``256``.\n For Aurora PostgreSQL, valid capacity values are ``2``, ``4``, ``8``, ``16``, ``32``, ``64``, ``192``, and ``384``.\n The minimum capacity must be less than or equal to the maximum capacity.", + "type": "integer" + }, + "SecondsBeforeTimeout": { + "description": "The amount of time, in seconds, that Aurora Serverless v1 tries to find a scaling point to perform seamless scaling before enforcing the timeout action. The default is 300.\n Specify a value between 60 and 600 seconds.", + "type": "integer" + }, + "SecondsUntilAutoPause": { + "description": "The time, in seconds, before an Aurora DB cluster in ``serverless`` mode is paused.\n Specify a value between 300 and 86,400 seconds.", + "type": "integer" + }, + "TimeoutAction": { + "description": "The action to take when the timeout is reached, either ``ForceApplyCapacityChange`` or ``RollbackCapacityChange``.\n ``ForceApplyCapacityChange`` sets the capacity to the specified value as soon as possible.\n ``RollbackCapacityChange``, the default, ignores the capacity change if a scaling point isn't found in the timeout period.\n If you specify ``ForceApplyCapacityChange``, connections that prevent Aurora Serverless v1 from finding a scaling point might be dropped.\n For more information, see [Autoscaling for Aurora Serverless v1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.how-it-works.html#aurora-serverless.how-it-works.auto-scaling) in the *Amazon Aurora User Guide*.", + "type": "string" + } + }, + "type": "object" + }, + "ServerlessV2ScalingConfiguration": { + "additionalProperties": false, + "description": "The ``ServerlessV2ScalingConfiguration`` property type specifies the scaling configuration of an Aurora Serverless V2 DB cluster. For more information, see [Using Amazon Aurora Serverless v2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html) in the *Amazon Aurora User Guide*.\n If you have an Aurora cluster, you must set this attribute before you add a DB instance that uses the ``db.serverless`` DB instance class. For more information, see [Clusters that use Aurora Serverless v2 must have a capacity range specified](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.requirements.html#aurora-serverless-v2.requirements.capacity-range) in the *Amazon Aurora User Guide*.\n This property is only supported for Aurora Serverless v2. For Aurora Serverless v1, use the ``ScalingConfiguration`` property.\n Valid for: Aurora Serverless v2 DB clusters", + "properties": { + "MaxCapacity": { + "description": "The maximum number of Aurora capacity units (ACUs) for a DB instance in an Aurora Serverless v2 cluster. You can specify ACU values in half-step increments, such as 40, 40.5, 41, and so on. The largest value that you can use is 128.\n The maximum capacity must be higher than 0.5 ACUs. For more information, see [Choosing the maximum Aurora Serverless v2 capacity setting for a cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.setting-capacity.html#aurora-serverless-v2.max_capacity_considerations) in the *Amazon Aurora User Guide*.\n Aurora automatically sets certain parameters for Aurora Serverless V2 DB instances to values that depend on the maximum ACU value in the capacity range. When you update the maximum capacity value, the ``ParameterApplyStatus`` value for the DB instance changes to ``pending-reboot``. You can update the parameter values by rebooting the DB instance after changing the capacity range.", + "type": "number" + }, + "MinCapacity": { + "description": "The minimum number of Aurora capacity units (ACUs) for a DB instance in an Aurora Serverless v2 cluster. You can specify ACU values in half-step increments, such as 8, 8.5, 9, and so on. For Aurora versions that support the Aurora Serverless v2 auto-pause feature, the smallest value that you can use is 0. For versions that don't support Aurora Serverless v2 auto-pause, the smallest value that you can use is 0.5.", + "type": "number" + }, + "SecondsUntilAutoPause": { + "description": "Specifies the number of seconds an Aurora Serverless v2 DB instance must be idle before Aurora attempts to automatically pause it. \n Specify a value between 300 seconds (five minutes) and 86,400 seconds (one day). The default is 300 seconds.", + "type": "integer" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", + "properties": { + "Key": { + "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "The ``AWS::RDS::DBCluster`` resource creates an Amazon Aurora DB cluster or Multi-AZ DB cluster.\n For more information about creating an Aurora DB cluster, see [Creating an Amazon Aurora DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.CreateInstance.html) in the *Amazon Aurora User Guide*.\n For more information about creating a Multi-AZ DB cluster, see [Creating a Multi-AZ DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/create-multi-az-db-cluster.html) in the *Amazon RDS User Guide*.\n You can only create this resource in AWS Regions where Amazon Aurora or Multi-AZ DB clusters are supported.\n *Updating DB clusters* \n When properties labeled \"*Update requires:* [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)\" are updated, AWS CloudFormation first creates a replacement DB cluster, then changes references from other dependent resources to point to the replacement DB cluster, and finally deletes the old DB cluster.\n We highly recommend that you take a snapshot of the database before updating the stack. If you don't, you lose the data when AWS CloudFormation replaces your DB cluster. To preserve your data, perform the following procedure:\n 1. Deactivate any applications that are using the DB cluster so that there's no activity on the DB instance.\n 1. Create a snapshot of the DB cluster. For more information, see [Creating a DB cluster snapshot](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_CreateSnapshotCluster.html).\n 1. If you want to restore your DB cluster using a DB cluster snapshot, modify the updated template with your DB cluster changes and add the ``SnapshotIdentifier`` property with the ID of the DB cluster snapshot that you want to use.\n After you restore a DB cluster with a ``SnapshotIdentifier`` property, you must specify the same ``SnapshotIdentifier`` property for any future updates to the DB cluster. When you specify this property for an update, the DB cluster is not restored from the DB cluster snapshot again, and the data in the database is not changed. However, if you don't specify the ``SnapshotIdentifier`` property, an empty DB cluster is created, and the original DB cluster is deleted. If you specify a property that is different from the previous snapshot restore property, a new DB cluster is restored from the specified ``SnapshotIdentifier`` property, and the original DB cluster is deleted.\n 1. Update the stack.\n \n Currently, when you are updating the stack for an Aurora Serverless DB cluster, you can't include changes to any other properties when you specify one of the following properties: ``PreferredBackupWindow``, ``PreferredMaintenanceWindow``, and ``Port``. This limitation doesn't apply to provisioned DB clusters.\n For more information about updating other properties of this resource, see ``ModifyDBCluster``. For more information about updating stacks, see [CloudFormation Stacks Updates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html).\n *Deleting DB clusters* \n The default ``DeletionPolicy`` for ``AWS::RDS::DBCluster`` resources is ``Snapshot``. For more information about how AWS CloudFormation deletes resources, see [DeletionPolicy Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html).", + "handlers": { + "create": { + "permissions": [ + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "rds:AddRoleToDBCluster", + "rds:AddTagsToResource", + "rds:CreateDBCluster", + "rds:CreateDBInstance", + "rds:DescribeDBClusters", + "rds:DescribeDBClusterSnapshots", + "rds:DescribeDBSnapshots", + "rds:DescribeEvents", + "rds:EnableHttpEndpoint", + "rds:ModifyDBCluster", + "rds:RestoreDBClusterFromSnapshot", + "rds:RestoreDBClusterToPointInTime", + "secretsmanager:CreateSecret", + "secretsmanager:TagResource" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "rds:AddTagsToResource", + "rds:CreateDBClusterSnapshot", + "rds:DeleteDBCluster", + "rds:DeleteDBInstance", + "rds:DescribeDBClusters", + "rds:DescribeGlobalClusters", + "rds:RemoveFromGlobalCluster" + ] + }, + "list": { + "permissions": [ + "rds:DescribeDBClusters" + ] + }, + "read": { + "permissions": [ + "rds:DescribeDBClusters" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "iam:PassRole", + "rds:AddRoleToDBCluster", + "rds:AddTagsToResource", + "rds:DescribeDBClusters", + "rds:DescribeDBSubnetGroups", + "rds:DescribeEvents", + "rds:DescribeGlobalClusters", + "rds:DisableHttpEndpoint", + "rds:EnableHttpEndpoint", + "rds:ModifyDBCluster", + "rds:ModifyDBInstance", + "rds:RemoveFromGlobalCluster", + "rds:RemoveRoleFromDBCluster", + "rds:RemoveTagsFromResource", + "secretsmanager:CreateSecret", + "secretsmanager:TagResource" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/DBClusterIdentifier" + ], + "properties": { + "AllocatedStorage": { + "description": "The amount of storage in gibibytes (GiB) to allocate to each DB instance in the Multi-AZ DB cluster.\n Valid for Cluster Type: Multi-AZ DB clusters only\n This setting is required to create a Multi-AZ DB cluster.", + "type": "integer" + }, + "AssociatedRoles": { + "description": "Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other Amazon Web Services on your behalf.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "items": { + "$ref": "#/definitions/DBClusterRole" + }, + "type": "array", + "uniqueItems": true + }, + "AutoMinorVersionUpgrade": { + "description": "Specifies whether minor engine upgrades are applied automatically to the DB cluster during the maintenance window. By default, minor engine upgrades are applied automatically.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB cluster", + "type": "boolean" + }, + "AvailabilityZones": { + "description": "A list of Availability Zones (AZs) where instances in the DB cluster can be created. For information on AWS Regions and Availability Zones, see [Choosing the Regions and Availability Zones](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.RegionsAndAvailabilityZones.html) in the *Amazon Aurora User Guide*. \n Valid for: Aurora DB clusters only", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "BacktrackWindow": { + "description": "The target backtrack window, in seconds. To disable backtracking, set this value to ``0``.\n Valid for Cluster Type: Aurora MySQL DB clusters only\n Default: ``0`` \n Constraints:\n + If specified, this value must be set to a number from 0 to 259,200 (72 hours).", + "minimum": 0, + "type": "integer" + }, + "BackupRetentionPeriod": { + "default": 1, + "description": "The number of days for which automated backups are retained.\n Default: 1\n Constraints:\n + Must be a value from 1 to 35\n \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "minimum": 1, + "type": "integer" + }, + "ClusterScalabilityType": { + "description": "Specifies the scalability mode of the Aurora DB cluster. When set to ``limitless``, the cluster operates as an Aurora Limitless Database, allowing you to create a DB shard group for horizontal scaling (sharding) capabilities. When set to ``standard`` (the default), the cluster uses normal DB instance creation.", + "type": "string" + }, + "CopyTagsToSnapshot": { + "description": "A value that indicates whether to copy all tags from the DB cluster to snapshots of the DB cluster. The default is not to copy them.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "boolean" + }, + "DBClusterArn": { + "description": "", + "type": "string" + }, + "DBClusterIdentifier": { + "description": "The DB cluster identifier. This parameter is stored as a lowercase string.\n Constraints:\n + Must contain from 1 to 63 letters, numbers, or hyphens.\n + First character must be a letter.\n + Can't end with a hyphen or contain two consecutive hyphens.\n \n Example: ``my-cluster1`` \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "DBClusterInstanceClass": { + "description": "The compute and memory capacity of each DB instance in the Multi-AZ DB cluster, for example ``db.m6gd.xlarge``. Not all DB instance classes are available in all AWS-Regions, or for all database engines.\n For the full list of DB instance classes and availability for your engine, see [DB instance class](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html) in the *Amazon RDS User Guide*.\n This setting is required to create a Multi-AZ DB cluster.\n Valid for Cluster Type: Multi-AZ DB clusters only", + "type": "string" + }, + "DBClusterParameterGroupName": { + "description": "The name of the DB cluster parameter group to associate with this DB cluster.\n If you apply a parameter group to an existing DB cluster, then its DB instances might need to reboot. This can result in an outage while the DB instances are rebooting.\n If you apply a change to parameter group associated with a stopped DB cluster, then the update stack waits until the DB cluster is started.\n To list all of the available DB cluster parameter group names, use the following command:\n ``aws rds describe-db-cluster-parameter-groups --query \"DBClusterParameterGroups[].DBClusterParameterGroupName\" --output text`` \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "DBClusterResourceId": { + "description": "", + "type": "string" + }, + "DBInstanceParameterGroupName": { + "description": "The name of the DB parameter group to apply to all instances of the DB cluster.\n When you apply a parameter group using the ``DBInstanceParameterGroupName`` parameter, the DB cluster isn't rebooted automatically. Also, parameter changes are applied immediately rather than during the next maintenance window.\n Valid for Cluster Type: Aurora DB clusters only\n Default: The existing name setting\n Constraints:\n + The DB parameter group must be in the same DB parameter group family as this DB cluster.\n + The ``DBInstanceParameterGroupName`` parameter is valid in combination with the ``AllowMajorVersionUpgrade`` parameter for a major version upgrade only.", + "type": "string" + }, + "DBSubnetGroupName": { + "description": "A DB subnet group that you want to associate with this DB cluster. \n If you are restoring a DB cluster to a point in time with ``RestoreType`` set to ``copy-on-write``, and don't specify a DB subnet group name, then the DB cluster is restored with a default DB subnet group.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "DBSystemId": { + "description": "Reserved for future use.", + "type": "string" + }, + "DatabaseInsightsMode": { + "description": "The mode of Database Insights to enable for the DB cluster.\n If you set this value to ``advanced``, you must also set the ``PerformanceInsightsEnabled`` parameter to ``true`` and the ``PerformanceInsightsRetentionPeriod`` parameter to 465.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "DatabaseName": { + "description": "The name of your database. If you don't provide a name, then Amazon RDS won't create a database in this DB cluster. For naming constraints, see [Naming Constraints](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_Limits.html#RDS_Limits.Constraints) in the *Amazon Aurora User Guide*. \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "DeletionProtection": { + "description": "A value that indicates whether the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled. By default, deletion protection is disabled.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "boolean" + }, + "Domain": { + "description": "Indicates the directory ID of the Active Directory to create the DB cluster.\n For Amazon Aurora DB clusters, Amazon RDS can use Kerberos authentication to authenticate users that connect to the DB cluster.\n For more information, see [Kerberos authentication](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/kerberos-authentication.html) in the *Amazon Aurora User Guide*.\n Valid for: Aurora DB clusters only", + "type": "string" + }, + "DomainIAMRoleName": { + "description": "Specifies the name of the IAM role to use when making API calls to the Directory Service.\n Valid for: Aurora DB clusters only", + "type": "string" + }, + "EnableCloudwatchLogsExports": { + "description": "The list of log types that need to be enabled for exporting to CloudWatch Logs. The values in the list depend on the DB engine being used. For more information, see [Publishing Database Logs to Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch) in the *Amazon Aurora User Guide*.\n *Aurora MySQL* \n Valid values: ``audit``, ``error``, ``general``, ``slowquery`` \n *Aurora PostgreSQL* \n Valid values: ``postgresql`` \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "EnableGlobalWriteForwarding": { + "description": "Specifies whether to enable this DB cluster to forward write operations to the primary cluster of a global cluster (Aurora global database). By default, write operations are not allowed on Aurora DB clusters that are secondary clusters in an Aurora global database.\n You can set this value only on Aurora DB clusters that are members of an Aurora global database. With this parameter enabled, a secondary cluster can forward writes to the current primary cluster, and the resulting changes are replicated back to this cluster. For the primary DB cluster of an Aurora global database, this value is used immediately if the primary is demoted by a global cluster API operation, but it does nothing until then.\n Valid for Cluster Type: Aurora DB clusters only", + "type": "boolean" + }, + "EnableHttpEndpoint": { + "description": "Specifies whether to enable the HTTP endpoint for the DB cluster. By default, the HTTP endpoint isn't enabled.\n When enabled, the HTTP endpoint provides a connectionless web service API (RDS Data API) for running SQL queries on the DB cluster. You can also query your database from inside the RDS console with the RDS query editor.\n For more information, see [Using RDS Data API](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html) in the *Amazon Aurora User Guide*.\n Valid for Cluster Type: Aurora DB clusters only", + "type": "boolean" + }, + "EnableIAMDatabaseAuthentication": { + "description": "A value that indicates whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts. By default, mapping is disabled.\n For more information, see [IAM Database Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.html) in the *Amazon Aurora User Guide.* \n Valid for: Aurora DB clusters only", + "type": "boolean" + }, + "EnableLocalWriteForwarding": { + "description": "Specifies whether read replicas can forward write operations to the writer DB instance in the DB cluster. By default, write operations aren't allowed on reader DB instances.\n Valid for: Aurora DB clusters only", + "type": "boolean" + }, + "Endpoint": { + "$ref": "#/definitions/Endpoint", + "description": "" + }, + "Engine": { + "description": "The name of the database engine to be used for this DB cluster.\n Valid Values:\n + ``aurora-mysql`` \n + ``aurora-postgresql`` \n + ``mysql`` \n + ``postgres`` \n \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "EngineLifecycleSupport": { + "description": "The life cycle type for this DB cluster.\n By default, this value is set to ``open-source-rds-extended-support``, which enrolls your DB cluster into Amazon RDS Extended Support. At the end of standard support, you can avoid charges for Extended Support by setting the value to ``open-source-rds-extended-support-disabled``. In this case, creating the DB cluster will fail if the DB major version is past its end of standard support date.\n You can use this setting to enroll your DB cluster into Amazon RDS Extended Support. With RDS Extended Support, you can run the selected major engine version on your DB cluster past the end of standard support for that engine version. For more information, see the following sections:\n + Amazon Aurora - [Using Amazon RDS Extended Support](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/extended-support.html) in the *Amazon Aurora User Guide* \n + Amazon RDS - [Using Amazon RDS Extended Support](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html) in the *Amazon RDS User Guide* \n \n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters\n Valid Values: ``open-source-rds-extended-support | open-source-rds-extended-support-disabled`` \n Default: ``open-source-rds-extended-support``", + "type": "string" + }, + "EngineMode": { + "description": "The DB engine mode of the DB cluster, either ``provisioned`` or ``serverless``.\n The ``serverless`` engine mode only applies for Aurora Serverless v1 DB clusters. Aurora Serverless v2 DB clusters use the ``provisioned`` engine mode.\n For information about limitations and requirements for Serverless DB clusters, see the following sections in the *Amazon Aurora User Guide*:\n + [Limitations of Aurora Serverless v1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html#aurora-serverless.limitations) \n + [Requirements for Aurora Serverless v2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.requirements.html) \n \n Valid for Cluster Type: Aurora DB clusters only", + "type": "string" + }, + "EngineVersion": { + "description": "The version number of the database engine to use.\n To list all of the available engine versions for Aurora MySQL version 2 (5.7-compatible) and version 3 (8.0-compatible), use the following command:\n ``aws rds describe-db-engine-versions --engine aurora-mysql --query \"DBEngineVersions[].EngineVersion\"`` \n You can supply either ``5.7`` or ``8.0`` to use the default engine version for Aurora MySQL version 2 or version 3, respectively.\n To list all of the available engine versions for Aurora PostgreSQL, use the following command:\n ``aws rds describe-db-engine-versions --engine aurora-postgresql --query \"DBEngineVersions[].EngineVersion\"`` \n To list all of the available engine versions for RDS for MySQL, use the following command:\n ``aws rds describe-db-engine-versions --engine mysql --query \"DBEngineVersions[].EngineVersion\"`` \n To list all of the available engine versions for RDS for PostgreSQL, use the following command:\n ``aws rds describe-db-engine-versions --engine postgres --query \"DBEngineVersions[].EngineVersion\"`` \n *Aurora MySQL* \n For information, see [Database engine updates for Amazon Aurora MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Updates.html) in the *Amazon Aurora User Guide*.\n *Aurora PostgreSQL* \n For information, see [Amazon Aurora PostgreSQL releases and engine versions](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Updates.20180305.html) in the *Amazon Aurora User Guide*.\n *MySQL* \n For information, see [Amazon RDS for MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt) in the *Amazon RDS User Guide*.\n *PostgreSQL* \n For information, see [Amazon RDS for PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts) in the *Amazon RDS User Guide*.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "GlobalClusterIdentifier": { + "description": "If you are configuring an Aurora global database cluster and want your Aurora DB cluster to be a secondary member in the global database cluster, specify the global cluster ID of the global database cluster. To define the primary database cluster of the global cluster, use the [AWS::RDS::GlobalCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-globalcluster.html) resource. \n If you aren't configuring a global database cluster, don't specify this property. \n To remove the DB cluster from a global database cluster, specify an empty value for the ``GlobalClusterIdentifier`` property.\n For information about Aurora global databases, see [Working with Amazon Aurora Global Databases](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html) in the *Amazon Aurora User Guide*.\n Valid for: Aurora DB clusters only", + "maxLength": 63, + "minLength": 0, + "pattern": "^$|^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "Iops": { + "description": "The amount of Provisioned IOPS (input/output operations per second) to be initially allocated for each DB instance in the Multi-AZ DB cluster.\n For information about valid IOPS values, see [Provisioned IOPS storage](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#USER_PIOPS) in the *Amazon RDS User Guide*.\n This setting is required to create a Multi-AZ DB cluster.\n Valid for Cluster Type: Multi-AZ DB clusters only\n Constraints:\n + Must be a multiple between .5 and 50 of the storage amount for the DB cluster.", + "type": "integer" + }, + "KmsKeyId": { + "description": "The Amazon Resource Name (ARN) of the AWS KMS key that is used to encrypt the database instances in the DB cluster, such as ``arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef``. If you enable the ``StorageEncrypted`` property but don't specify this property, the default KMS key is used. If you specify this property, you must set the ``StorageEncrypted`` property to ``true``.\n If you specify the ``SnapshotIdentifier`` property, the ``StorageEncrypted`` property value is inherited from the snapshot, and if the DB cluster is encrypted, the specified ``KmsKeyId`` property is used.\n If you create a read replica of an encrypted DB cluster in another AWS Region, make sure to set ``KmsKeyId`` to a KMS key identifier that is valid in the destination AWS Region. This KMS key is used to encrypt the read replica in that AWS Region.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "ManageMasterUserPassword": { + "description": "Specifies whether to manage the master user password with AWS Secrets Manager.\n For more information, see [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the *Amazon RDS User Guide* and [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html) in the *Amazon Aurora User Guide.* \n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters\n Constraints:\n + Can't manage the master user password with AWS Secrets Manager if ``MasterUserPassword`` is specified.", + "type": "boolean" + }, + "MasterUserPassword": { + "description": "The master password for the DB instance.\n If you specify the ``SourceDBClusterIdentifier``, ``SnapshotIdentifier``, or ``GlobalClusterIdentifier`` property, don't specify this property. The value is inherited from the source DB cluster, the snapshot, or the primary DB cluster for the global database cluster, respectively.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "MasterUserSecret": { + "$ref": "#/definitions/MasterUserSecret", + "description": "The secret managed by RDS in AWS Secrets Manager for the master user password.\n When you restore a DB cluster from a snapshot, Amazon RDS generates a new secret instead of reusing the secret specified in the ``SecretArn`` property. This ensures that the restored DB cluster is securely managed with a dedicated secret. To maintain consistent integration with your application, you might need to update resource configurations to reference the newly created secret.\n For more information, see [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the *Amazon RDS User Guide* and [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html) in the *Amazon Aurora User Guide.*" + }, + "MasterUsername": { + "description": "The name of the master user for the DB cluster.\n If you specify the ``SourceDBClusterIdentifier``, ``SnapshotIdentifier``, or ``GlobalClusterIdentifier`` property, don't specify this property. The value is inherited from the source DB cluster, the snapshot, or the primary DB cluster for the global database cluster, respectively.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "minLength": 1, + "pattern": "^[a-zA-Z]{1}[a-zA-Z0-9_]*$", + "type": "string" + }, + "MonitoringInterval": { + "description": "The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB cluster. To turn off collecting Enhanced Monitoring metrics, specify ``0``.\n If ``MonitoringRoleArn`` is specified, also set ``MonitoringInterval`` to a value other than ``0``.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters\n Valid Values: ``0 | 1 | 5 | 10 | 15 | 30 | 60`` \n Default: ``0``", + "type": "integer" + }, + "MonitoringRoleArn": { + "description": "The Amazon Resource Name (ARN) for the IAM role that permits RDS to send Enhanced Monitoring metrics to Amazon CloudWatch Logs. An example is ``arn:aws:iam:123456789012:role/emaccess``. For information on creating a monitoring role, see [Setting up and enabling Enhanced Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.Enabling) in the *Amazon RDS User Guide*.\n If ``MonitoringInterval`` is set to a value other than ``0``, supply a ``MonitoringRoleArn`` value.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "NetworkType": { + "description": "The network type of the DB cluster.\n Valid values:\n + ``IPV4`` \n + ``DUAL`` \n \n The network type is determined by the ``DBSubnetGroup`` specified for the DB cluster. A ``DBSubnetGroup`` can support only the IPv4 protocol or the IPv4 and IPv6 protocols (``DUAL``).\n For more information, see [Working with a DB instance in a VPC](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html) in the *Amazon Aurora User Guide.* \n Valid for: Aurora DB clusters only", + "type": "string" + }, + "PerformanceInsightsEnabled": { + "description": "Specifies whether to turn on Performance Insights for the DB cluster.\n For more information, see [Using Amazon Performance Insights](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) in the *Amazon RDS User Guide*.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters", + "type": "boolean" + }, + "PerformanceInsightsKmsKeyId": { + "description": "The AWS KMS key identifier for encryption of Performance Insights data.\n The AWS KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key.\n If you don't specify a value for ``PerformanceInsightsKMSKeyId``, then Amazon RDS uses your default KMS key. There is a default KMS key for your AWS-account. Your AWS-account has a different default KMS key for each AWS-Region.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "PerformanceInsightsRetentionPeriod": { + "description": "The number of days to retain Performance Insights data. When creating a DB cluster without enabling Performance Insights, you can't specify the parameter ``PerformanceInsightsRetentionPeriod``.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters\n Valid Values:\n + ``7`` \n + *month* * 31, where *month* is a number of months from 1-23. Examples: ``93`` (3 months * 31), ``341`` (11 months * 31), ``589`` (19 months * 31)\n + ``731`` \n \n Default: ``7`` days\n If you specify a retention period that isn't valid, such as ``94``, Amazon RDS issues an error.", + "type": "integer" + }, + "Port": { + "description": "The port number on which the DB instances in the DB cluster accept connections.\n Default:\n + When ``EngineMode`` is ``provisioned``, ``3306`` (for both Aurora MySQL and Aurora PostgreSQL)\n + When ``EngineMode`` is ``serverless``:\n + ``3306`` when ``Engine`` is ``aurora`` or ``aurora-mysql`` \n + ``5432`` when ``Engine`` is ``aurora-postgresql`` \n \n \n The ``No interruption`` on update behavior only applies to DB clusters. If you are updating a DB instance, see [Port](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-port) for the AWS::RDS::DBInstance resource.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "integer" + }, + "PreferredBackupWindow": { + "description": "The daily time range during which automated backups are created. For more information, see [Backup Window](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Backups.html#Aurora.Managing.Backups.BackupWindow) in the *Amazon Aurora User Guide.* \n Constraints:\n + Must be in the format ``hh24:mi-hh24:mi``.\n + Must be in Universal Coordinated Time (UTC).\n + Must not conflict with the preferred maintenance window.\n + Must be at least 30 minutes.\n \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "PreferredMaintenanceWindow": { + "description": "The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).\n Format: ``ddd:hh24:mi-ddd:hh24:mi`` \n The default is a 30-minute window selected at random from an 8-hour block of time for each AWS Region, occurring on a random day of the week. To see the time blocks available, see [Maintaining an Amazon Aurora DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.Maintenance.html#AdjustingTheMaintenanceWindow.Aurora) in the *Amazon Aurora User Guide.* \n Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.\n Constraints: Minimum 30-minute window.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "PubliclyAccessible": { + "description": "Specifies whether the DB cluster is publicly accessible.\n When the DB cluster is publicly accessible and you connect from outside of the DB cluster's virtual private cloud (VPC), its Domain Name System (DNS) endpoint resolves to the public IP address. When you connect from within the same VPC as the DB cluster, the endpoint resolves to the private IP address. Access to the DB cluster is ultimately controlled by the security group it uses. That public access isn't permitted if the security group assigned to the DB cluster doesn't permit it.\n When the DB cluster isn't publicly accessible, it is an internal DB cluster with a DNS name that resolves to a private IP address.\n Valid for Cluster Type: Multi-AZ DB clusters only\n Default: The default behavior varies depending on whether ``DBSubnetGroupName`` is specified.\n If ``DBSubnetGroupName`` isn't specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the default VPC in the target Region doesn\u2019t have an internet gateway attached to it, the DB cluster is private.\n + If the default VPC in the target Region has an internet gateway attached to it, the DB cluster is public.\n \n If ``DBSubnetGroupName`` is specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the subnets are part of a VPC that doesn\u2019t have an internet gateway attached to it, the DB cluster is private.\n + If the subnets are part of a VPC that has an internet gateway attached to it, the DB cluster is public.", + "type": "boolean" + }, + "ReadEndpoint": { + "$ref": "#/definitions/ReadEndpoint", + "description": "" + }, + "ReplicationSourceIdentifier": { + "description": "The Amazon Resource Name (ARN) of the source DB instance or DB cluster if this DB cluster is created as a read replica.\n Valid for: Aurora DB clusters only", + "type": "string" + }, + "RestoreToTime": { + "description": "The date and time to restore the DB cluster to.\n Valid Values: Value must be a time in Universal Coordinated Time (UTC) format\n Constraints:\n + Must be before the latest restorable time for the DB instance\n + Must be specified if ``UseLatestRestorableTime`` parameter isn't provided\n + Can't be specified if the ``UseLatestRestorableTime`` parameter is enabled\n + Can't be specified if the ``RestoreType`` parameter is ``copy-on-write`` \n \n This property must be used with ``SourceDBClusterIdentifier`` property. The resulting cluster will have the identifier that matches the value of the ``DBclusterIdentifier`` property.\n Example: ``2015-03-07T23:45:00Z`` \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "RestoreType": { + "description": "The type of restore to be performed. You can specify one of the following values:\n + ``full-copy`` - The new DB cluster is restored as a full copy of the source DB cluster.\n + ``copy-on-write`` - The new DB cluster is restored as a clone of the source DB cluster.\n \n If you don't specify a ``RestoreType`` value, then the new DB cluster is restored as a full copy of the source DB cluster.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "ScalingConfiguration": { + "$ref": "#/definitions/ScalingConfiguration", + "description": "The scaling configuration of an Aurora Serverless v1 DB cluster.\n This property is only supported for Aurora Serverless v1. For Aurora Serverless v2, Use the ``ServerlessV2ScalingConfiguration`` property.\n Valid for: Aurora Serverless v1 DB clusters only" + }, + "ServerlessV2ScalingConfiguration": { + "$ref": "#/definitions/ServerlessV2ScalingConfiguration", + "description": "The scaling configuration of an Aurora Serverless V2 DB cluster. \n This property is only supported for Aurora Serverless v2. For Aurora Serverless v1, Use the ``ScalingConfiguration`` property.\n Valid for: Aurora Serverless v2 DB clusters only" + }, + "SnapshotIdentifier": { + "description": "The identifier for the DB snapshot or DB cluster snapshot to restore from.\n You can use either the name or the Amazon Resource Name (ARN) to specify a DB cluster snapshot. However, you can use only the ARN to specify a DB snapshot.\n After you restore a DB cluster with a ``SnapshotIdentifier`` property, you must specify the same ``SnapshotIdentifier`` property for any future updates to the DB cluster. When you specify this property for an update, the DB cluster is not restored from the snapshot again, and the data in the database is not changed. However, if you don't specify the ``SnapshotIdentifier`` property, an empty DB cluster is created, and the original DB cluster is deleted. If you specify a property that is different from the previous snapshot restore property, a new DB cluster is restored from the specified ``SnapshotIdentifier`` property, and the original DB cluster is deleted.\n If you specify the ``SnapshotIdentifier`` property to restore a DB cluster (as opposed to specifying it for DB cluster updates), then don't specify the following properties:\n + ``GlobalClusterIdentifier`` \n + ``MasterUsername`` \n + ``MasterUserPassword`` \n + ``ReplicationSourceIdentifier`` \n + ``RestoreType`` \n + ``SourceDBClusterIdentifier`` \n + ``SourceRegion`` \n + ``StorageEncrypted`` (for an encrypted snapshot)\n + ``UseLatestRestorableTime`` \n \n Constraints:\n + Must match the identifier of an existing Snapshot.\n \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "SourceDBClusterIdentifier": { + "description": "When restoring a DB cluster to a point in time, the identifier of the source DB cluster from which to restore.\n Constraints:\n + Must match the identifier of an existing DBCluster.\n \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "string" + }, + "SourceRegion": { + "description": "The AWS Region which contains the source DB cluster when replicating a DB cluster. For example, ``us-east-1``. \n Valid for: Aurora DB clusters only", + "type": "string" + }, + "StorageEncrypted": { + "description": "Indicates whether the DB cluster is encrypted.\n If you specify the ``KmsKeyId`` property, then you must enable encryption.\n If you specify the ``SourceDBClusterIdentifier`` property, don't specify this property. The value is inherited from the source DB cluster, and if the DB cluster is encrypted, the specified ``KmsKeyId`` property is used.\n If you specify the ``SnapshotIdentifier`` and the specified snapshot is encrypted, don't specify this property. The value is inherited from the snapshot, and the specified ``KmsKeyId`` property is used.\n If you specify the ``SnapshotIdentifier`` and the specified snapshot isn't encrypted, you can use this property to specify that the restored DB cluster is encrypted. Specify the ``KmsKeyId`` property for the KMS key to use for encryption. If you don't want the restored DB cluster to be encrypted, then don't set this property or set it to ``false``.\n If you specify both the ``StorageEncrypted`` and ``SnapshotIdentifier`` properties without specifying the ``KmsKeyId`` property, then the restored DB cluster inherits the encryption settings from the DB snapshot that provide.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "boolean" + }, + "StorageThroughput": { + "description": "", + "type": "integer" + }, + "StorageType": { + "description": "The storage type to associate with the DB cluster.\n For information on storage types for Aurora DB clusters, see [Storage configurations for Amazon Aurora DB clusters](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.StorageReliability.html#aurora-storage-type). For information on storage types for Multi-AZ DB clusters, see [Settings for creating Multi-AZ DB clusters](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/create-multi-az-db-cluster.html#create-multi-az-db-cluster-settings).\n This setting is required to create a Multi-AZ DB cluster.\n When specified for a Multi-AZ DB cluster, a value for the ``Iops`` parameter is required.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters\n Valid Values:\n + Aurora DB clusters - ``aurora | aurora-iopt1`` \n + Multi-AZ DB clusters - ``io1 | io2 | gp3`` \n \n Default:\n + Aurora DB clusters - ``aurora`` \n + Multi-AZ DB clusters - ``io1`` \n \n When you create an Aurora DB cluster with the storage type set to ``aurora-iopt1``, the storage type is returned in the response. The storage type isn't returned when you set it to ``aurora``.", + "type": "string" + }, + "Tags": { + "description": "Tags to assign to the DB cluster.\n Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UseLatestRestorableTime": { + "description": "A value that indicates whether to restore the DB cluster to the latest restorable backup time. By default, the DB cluster is not restored to the latest restorable backup time. \n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "type": "boolean" + }, + "VpcSecurityGroupIds": { + "description": "A list of EC2 VPC security groups to associate with this DB cluster.\n If you plan to update the resource, don't specify VPC security groups in a shared VPC.\n Valid for: Aurora DB clusters and Multi-AZ DB clusters", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": { + "/properties/DBClusterIdentifier": "$lowercase(DBClusterIdentifier)", + "/properties/DBClusterParameterGroupName": "$lowercase(DBClusterParameterGroupName)", + "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)", + "/properties/EnableHttpEndpoint": "$lowercase($string(EngineMode)) = 'serverless' ? EnableHttpEndpoint : ($lowercase($string(Engine)) in ['aurora-postgresql', 'aurora-mysql'] ? EnableHttpEndpoint : false )", + "/properties/Engine": "$lowercase(Engine)", + "/properties/EngineVersion": "$join([$string(EngineVersion), \".*\"])", + "/properties/KmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", KmsKeyId])", + "/properties/MasterUserSecret/KmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", MasterUserSecret.KmsKeyId])", + "/properties/NetworkType": "$lowercase(NetworkType)", + "/properties/PerformanceInsightsKmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", PerformanceInsightsKmsKeyId])", + "/properties/PreferredMaintenanceWindow": "$lowercase(PreferredMaintenanceWindow)", + "/properties/SnapshotIdentifier": "$lowercase(SnapshotIdentifier)", + "/properties/SourceDBClusterIdentifier": "$lowercase(SourceDBClusterIdentifier)", + "/properties/StorageType": "$lowercase(StorageType)" + }, + "readOnlyProperties": [ + "/properties/DBClusterArn", + "/properties/DBClusterResourceId", + "/properties/Endpoint", + "/properties/Endpoint/Address", + "/properties/Endpoint/Port", + "/properties/ReadEndpoint", + "/properties/ReadEndpoint/Address", + "/properties/MasterUserSecret/SecretArn", + "/properties/StorageThroughput" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RDS::DBCluster", + "writeOnlyProperties": [ + "/properties/ClusterScalabilityType", + "/properties/DBInstanceParameterGroupName", + "/properties/MasterUserPassword", + "/properties/RestoreToTime", + "/properties/RestoreType", + "/properties/SnapshotIdentifier", + "/properties/SourceDBClusterIdentifier", + "/properties/SourceRegion", + "/properties/UseLatestRestorableTime" + ] +} diff --git a/src/schema/aws-rds-dbclusterparametergroup.json b/src/schema/aws-rds-dbclusterparametergroup.json index 826fc416..75cefe8f 100644 --- a/src/schema/aws-rds-dbclusterparametergroup.json +++ b/src/schema/aws-rds-dbclusterparametergroup.json @@ -1,134 +1,134 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DBClusterParameterGroupName", - "/properties/Description", - "/properties/Family" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", - "properties": { - "Key": { - "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "The ``AWS::RDS::DBClusterParameterGroup`` resource creates a new Amazon RDS DB cluster parameter group.\n For information about configuring parameters for Amazon Aurora DB clusters, see [Working with parameter groups](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_WorkingWithParamGroups.html) in the *Amazon Aurora User Guide*.\n If you apply a parameter group to a DB cluster, then its DB instances might need to reboot. This can result in an outage while the DB instances are rebooting.\n If you apply a change to parameter group associated with a stopped DB cluster, then the updated stack waits until the DB cluster is started.", - "handlers": { - "create": { - "permissions": [ - "iam:CreateServiceLinkedRole", - "rds:AddTagsToResource", - "rds:CreateDBClusterParameterGroup", - "rds:DescribeDBClusterParameterGroups", - "rds:DescribeDBClusterParameters", - "rds:DescribeDBClusters", - "rds:DescribeEngineDefaultClusterParameters", - "rds:ListTagsForResource", - "rds:ModifyDBClusterParameterGroup", - "rds:RemoveTagsFromResource" - ], - "timeoutInMinutes": 180 - }, - "delete": { - "permissions": [ - "rds:DeleteDBClusterParameterGroup" - ] - }, - "list": { - "permissions": [ - "rds:DescribeDBClusterParameterGroups" - ] - }, - "read": { - "permissions": [ - "rds:DescribeDBClusterParameterGroups", - "rds:DescribeDBClusterParameters", - "rds:DescribeEngineDefaultClusterParameters", - "rds:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "rds:AddTagsToResource", - "rds:DescribeDBClusterParameterGroups", - "rds:DescribeDBClusterParameters", - "rds:DescribeDBClusters", - "rds:DescribeEngineDefaultClusterParameters", - "rds:ListTagsForResource", - "rds:ModifyDBClusterParameterGroup", - "rds:RemoveTagsFromResource", - "rds:ResetDBClusterParameterGroup" - ], - "timeoutInMinutes": 180 - } - }, - "primaryIdentifier": [ - "/properties/DBClusterParameterGroupName" - ], - "properties": { - "DBClusterParameterGroupName": { - "description": "The name of the DB cluster parameter group.\n Constraints:\n + Must not match the name of an existing DB cluster parameter group.\n \n This value is stored as a lowercase string.", - "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9])*$", - "type": "string" - }, - "Description": { - "description": "The description for the DB cluster parameter group.", - "type": "string" - }, - "Family": { - "description": "The DB cluster parameter group family name. A DB cluster parameter group can be associated with one and only one DB cluster parameter group family, and can be applied only to a DB cluster running a database engine and engine version compatible with that DB cluster parameter group family.\n *Aurora MySQL* \n Example: ``aurora-mysql5.7``, ``aurora-mysql8.0`` \n *Aurora PostgreSQL* \n Example: ``aurora-postgresql14`` \n *RDS for MySQL* \n Example: ``mysql8.0`` \n *RDS for PostgreSQL* \n Example: ``postgres13`` \n To list all of the available parameter group families for a DB engine, use the following command:\n ``aws rds describe-db-engine-versions --query \"DBEngineVersions[].DBParameterGroupFamily\" --engine `` \n For example, to list all of the available parameter group families for the Aurora PostgreSQL DB engine, use the following command:\n ``aws rds describe-db-engine-versions --query \"DBEngineVersions[].DBParameterGroupFamily\" --engine aurora-postgresql`` \n The output contains duplicates.\n The following are the valid DB engine values:\n + ``aurora-mysql`` \n + ``aurora-postgresql`` \n + ``mysql`` \n + ``postgres``", - "type": "string" - }, - "Parameters": { - "description": "Provides a list of parameters for the DB cluster parameter group.", - "type": "object" - }, - "Tags": { - "description": "Tags to assign to the DB cluster parameter group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array" - } - }, - "propertyTransform": { - "/properties/DBClusterParameterGroupName": "$lowercase(DBClusterParameterGroupName)" - }, - "required": [ - "Description", - "Family", - "Parameters" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RDS::DBClusterParameterGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DBClusterParameterGroupName", + "/properties/Description", + "/properties/Family" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", + "properties": { + "Key": { + "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "The ``AWS::RDS::DBClusterParameterGroup`` resource creates a new Amazon RDS DB cluster parameter group.\n For information about configuring parameters for Amazon Aurora DB clusters, see [Working with parameter groups](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_WorkingWithParamGroups.html) in the *Amazon Aurora User Guide*.\n If you apply a parameter group to a DB cluster, then its DB instances might need to reboot. This can result in an outage while the DB instances are rebooting.\n If you apply a change to parameter group associated with a stopped DB cluster, then the updated stack waits until the DB cluster is started.", + "handlers": { + "create": { + "permissions": [ + "iam:CreateServiceLinkedRole", + "rds:AddTagsToResource", + "rds:CreateDBClusterParameterGroup", + "rds:DescribeDBClusterParameterGroups", + "rds:DescribeDBClusterParameters", + "rds:DescribeDBClusters", + "rds:DescribeEngineDefaultClusterParameters", + "rds:ListTagsForResource", + "rds:ModifyDBClusterParameterGroup", + "rds:RemoveTagsFromResource" + ], + "timeoutInMinutes": 180 + }, + "delete": { + "permissions": [ + "rds:DeleteDBClusterParameterGroup" + ] + }, + "list": { + "permissions": [ + "rds:DescribeDBClusterParameterGroups" + ] + }, + "read": { + "permissions": [ + "rds:DescribeDBClusterParameterGroups", + "rds:DescribeDBClusterParameters", + "rds:DescribeEngineDefaultClusterParameters", + "rds:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "rds:AddTagsToResource", + "rds:DescribeDBClusterParameterGroups", + "rds:DescribeDBClusterParameters", + "rds:DescribeDBClusters", + "rds:DescribeEngineDefaultClusterParameters", + "rds:ListTagsForResource", + "rds:ModifyDBClusterParameterGroup", + "rds:RemoveTagsFromResource", + "rds:ResetDBClusterParameterGroup" + ], + "timeoutInMinutes": 180 + } + }, + "primaryIdentifier": [ + "/properties/DBClusterParameterGroupName" + ], + "properties": { + "DBClusterParameterGroupName": { + "description": "The name of the DB cluster parameter group.\n Constraints:\n + Must not match the name of an existing DB cluster parameter group.\n \n This value is stored as a lowercase string.", + "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9])*$", + "type": "string" + }, + "Description": { + "description": "The description for the DB cluster parameter group.", + "type": "string" + }, + "Family": { + "description": "The DB cluster parameter group family name. A DB cluster parameter group can be associated with one and only one DB cluster parameter group family, and can be applied only to a DB cluster running a database engine and engine version compatible with that DB cluster parameter group family.\n *Aurora MySQL* \n Example: ``aurora-mysql5.7``, ``aurora-mysql8.0`` \n *Aurora PostgreSQL* \n Example: ``aurora-postgresql14`` \n *RDS for MySQL* \n Example: ``mysql8.0`` \n *RDS for PostgreSQL* \n Example: ``postgres13`` \n To list all of the available parameter group families for a DB engine, use the following command:\n ``aws rds describe-db-engine-versions --query \"DBEngineVersions[].DBParameterGroupFamily\" --engine `` \n For example, to list all of the available parameter group families for the Aurora PostgreSQL DB engine, use the following command:\n ``aws rds describe-db-engine-versions --query \"DBEngineVersions[].DBParameterGroupFamily\" --engine aurora-postgresql`` \n The output contains duplicates.\n The following are the valid DB engine values:\n + ``aurora-mysql`` \n + ``aurora-postgresql`` \n + ``mysql`` \n + ``postgres``", + "type": "string" + }, + "Parameters": { + "description": "Provides a list of parameters for the DB cluster parameter group.", + "type": "object" + }, + "Tags": { + "description": "Tags to assign to the DB cluster parameter group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array" + } + }, + "propertyTransform": { + "/properties/DBClusterParameterGroupName": "$lowercase(DBClusterParameterGroupName)" + }, + "required": [ + "Description", + "Family", + "Parameters" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RDS::DBClusterParameterGroup" +} diff --git a/src/schema/aws-rds-dbinstance.json b/src/schema/aws-rds-dbinstance.json index b7378551..005e539b 100644 --- a/src/schema/aws-rds-dbinstance.json +++ b/src/schema/aws-rds-dbinstance.json @@ -1,675 +1,693 @@ -{ - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/AutoMinorVersionUpgrade", - "/properties/AvailabilityZone", - "/properties/BackupRetentionPeriod", - "/properties/DBClusterSnapshotIdentifier", - "/properties/DBParameterGroupName", - "/properties/DBSnapshotIdentifier", - "/properties/Engine", - "/properties/MultiAZ", - "/properties/PerformanceInsightsKMSKeyId", - "/properties/PreferredMaintenanceWindow", - "/properties/RestoreTime", - "/properties/SourceDBClusterIdentifier", - "/properties/SourceDBInstanceAutomatedBackupsArn", - "/properties/SourceDBInstanceIdentifier", - "/properties/SourceDbiResourceId", - "/properties/StorageType", - "/properties/UseLatestRestorableTime" - ], - "createOnlyProperties": [ - "/properties/CharacterSetName", - "/properties/CustomIAMInstanceProfile", - "/properties/DBClusterIdentifier", - "/properties/DBInstanceIdentifier", - "/properties/DBName", - "/properties/DBSubnetGroupName", - "/properties/KmsKeyId", - "/properties/MasterUsername", - "/properties/NcharCharacterSetName", - "/properties/SourceRegion", - "/properties/StorageEncrypted", - "/properties/Timezone" - ], - "definitions": { - "CertificateDetails": { - "additionalProperties": false, - "description": "The details of the DB instance\u2019s server certificate.\n For more information, see [Using SSL/TLS to encrypt a connection to a DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html) in the *Amazon RDS User Guide* and [Using SSL/TLS to encrypt a connection to a DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html) in the *Amazon Aurora User Guide*.", - "properties": { - "CAIdentifier": { - "description": "The CA identifier of the CA certificate used for the DB instance's server certificate.", - "type": "string" - }, - "ValidTill": { - "description": "The expiration date of the DB instance\u2019s server certificate.", - "format": "date-time", - "type": "string" - } - }, - "type": "object" - }, - "DBInstanceRole": { - "additionalProperties": false, - "description": "Information about an AWS Identity and Access Management (IAM) role that is associated with a DB instance.", - "properties": { - "FeatureName": { - "description": "The name of the feature associated with the AWS Identity and Access Management (IAM) role. IAM roles that are associated with a DB instance grant permission for the DB instance to access other AWS services on your behalf. For the list of supported feature names, see the ``SupportedFeatureNames`` description in [DBEngineVersion](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBEngineVersion.html) in the *Amazon RDS API Reference*.", - "type": "string" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) of the IAM role that is associated with the DB instance.", - "type": "string" - } - }, - "required": [ - "FeatureName", - "RoleArn" - ], - "type": "object" - }, - "Endpoint": { - "additionalProperties": false, - "description": "This data type represents the information you need to connect to an Amazon RDS DB instance. This data type is used as a response element in the following actions:\n + ``CreateDBInstance`` \n + ``DescribeDBInstances`` \n + ``DeleteDBInstance`` \n \n For the data structure that represents Amazon Aurora DB cluster endpoints, see ``DBClusterEndpoint``.", - "properties": { - "Address": { - "description": "Specifies the DNS address of the DB instance.", - "type": "string" - }, - "HostedZoneId": { - "description": "Specifies the ID that Amazon Route 53 assigns when you create a hosted zone.", - "type": "string" - }, - "Port": { - "description": "Specifies the port that the database engine is listening on.", - "type": "string" - } - }, - "type": "object" - }, - "MasterUserSecret": { - "additionalProperties": false, - "description": "The ``MasterUserSecret`` return value specifies the secret managed by RDS in AWS Secrets Manager for the master user password.\n For more information, see [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the *Amazon RDS User Guide* and [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html) in the *Amazon Aurora User Guide.*", - "properties": { - "KmsKeyId": { - "description": "The AWS KMS key identifier that is used to encrypt the secret.", - "type": "string" - }, - "SecretArn": { - "description": "The Amazon Resource Name (ARN) of the secret. This parameter is a return value that you can retrieve using the ``Fn::GetAtt`` intrinsic function. For more information, see [Return values](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#aws-resource-rds-dbinstance-return-values).", - "type": "string" - } - }, - "type": "object" - }, - "ProcessorFeature": { - "additionalProperties": false, - "description": "The ``ProcessorFeature`` property type specifies the processor features of a DB instance class.", - "properties": { - "Name": { - "description": "The name of the processor feature. Valid names are ``coreCount`` and ``threadsPerCore``.", - "enum": [ - "coreCount", - "threadsPerCore" - ], - "type": "string" - }, - "Value": { - "description": "The value of a processor feature.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", - "properties": { - "Key": { - "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "deprecatedProperties": [ - "/properties/TdeCredentialArn", - "/properties/TdeCredentialPassword" - ], - "description": "The ``AWS::RDS::DBInstance`` resource creates an Amazon DB instance. The new DB instance can be an RDS DB instance, or it can be a DB instance in an Aurora DB cluster.\n For more information about creating an RDS DB instance, see [Creating an Amazon RDS DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html) in the *Amazon RDS User Guide*.\n For more information about creating a DB instance in an Aurora DB cluster, see [Creating an Amazon Aurora DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.CreateInstance.html) in the *Amazon Aurora User Guide*.\n If you import an existing DB instance, and the template configuration doesn't match the actual configuration of the DB instance, AWS CloudFormation applies the changes in the template during the import operation.\n If a DB instance is deleted or replaced during an update, AWS CloudFormation deletes all automated snapshots. However, it retains manual DB snapshots. During an update that requires replacement, you can apply a stack policy to prevent DB instances from being replaced. For more information, see [Prevent Updates to Stack Resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html).\n *Updating DB instances* \n When properties labeled \"*Update requires:* [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)\" are updated, AWS CloudFormation first creates a replacement DB instance, then changes references from other dependent resources to point to the replacement DB instance, and finally deletes the old DB instance.\n We highly recommend that you take a snapshot of the database before updating the stack. If you don't, you lose the data when AWS CloudFormation replaces your DB instance. To preserve your data, perform the following procedure:\n 1. Deactivate any applications that are using the DB instance so that there's no activity on the DB instance.\n 1. Create a snapshot of the DB instance. For more information, see [Creating a DB Snapshot](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html).\n 1. If you want to restore your instance using a DB snapshot, modify the updated template with your DB instance changes and add the ``DBSnapshotIdentifier`` property with the ID of the DB snapshot that you want to use.\n After you restore a DB instance with a ``DBSnapshotIdentifier`` property, you can delete the ``DBSnapshotIdentifier`` property. When you specify this property for an update, the DB instance is not restored from the DB snapshot again, and the data in the database is not changed. However, if you don't specify the ``DBSnapshotIdentifier`` property, an empty DB instance is created, and the original DB instance is deleted. If you specify a property that is different from the previous snapshot restore property, a new DB instance is restored from the specified ``DBSnapshotIdentifier`` property, and the original DB instance is deleted.\n 1. Update the stack.\n \n For more information about updating other properties of this resource, see ``ModifyDBInstance``. For more information about updating stacks, see [CloudFormation Stacks Updates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html).\n *Deleting DB instances* \n For DB instances that are part of an Aurora DB cluster, you can set a deletion policy for your DB instance to control how AWS CloudFormation handles the DB instance when the stack is deleted. For Amazon RDS DB instances, you can choose to *retain* the DB instance, to *delete* the DB instance, or to *create a snapshot* of the DB instance. The default AWS CloudFormation behavior depends on the ``DBClusterIdentifier`` property:\n 1. For ``AWS::RDS::DBInstance`` resources that don't specify the ``DBClusterIdentifier`` property, AWS CloudFormation saves a snapshot of the DB instance.\n 1. For ``AWS::RDS::DBInstance`` resources that do specify the ``DBClusterIdentifier`` property, AWS CloudFormation deletes the DB instance.\n \n For more information, see [DeletionPolicy Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html).", - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeAccountAttributes", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "iam:CreateServiceLinkedRole", - "iam:GetRole", - "iam:ListRoles", - "iam:PassRole", - "kms:CreateGrant", - "kms:DescribeKey", - "rds:AddRoleToDBInstance", - "rds:AddTagsToResource", - "rds:CreateDBInstance", - "rds:CreateDBInstanceReadReplica", - "rds:DescribeDBInstances", - "rds:DescribeDBClusters", - "rds:DescribeDBClusterSnapshots", - "rds:DescribeDBInstanceAutomatedBackups", - "rds:DescribeDBSnapshots", - "rds:DescribeEvents", - "rds:ModifyDBInstance", - "rds:RebootDBInstance", - "rds:RestoreDBInstanceFromDBSnapshot", - "rds:RestoreDBInstanceToPointInTime", - "rds:StartDBInstanceAutomatedBackupsReplication", - "secretsmanager:CreateSecret", - "secretsmanager:TagResource" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "rds:AddTagsToResource", - "rds:CreateDBSnapshot", - "rds:DeleteDBInstance", - "rds:DescribeDBInstances" - ], - "timeoutInMinutes": 2160 - }, - "list": { - "permissions": [ - "rds:DescribeDBInstances" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeAccountAttributes", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "rds:DescribeDBInstances" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeAccountAttributes", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "iam:CreateServiceLinkedRole", - "iam:GetRole", - "iam:ListRoles", - "iam:PassRole", - "kms:CreateGrant", - "kms:DescribeKey", - "rds:AddRoleToDBInstance", - "rds:AddTagsToResource", - "rds:DescribeDBClusters", - "rds:DescribeDBEngineVersions", - "rds:DescribeDBInstances", - "rds:DescribeDBParameterGroups", - "rds:DescribeEvents", - "rds:ModifyDBInstance", - "rds:PromoteReadReplica", - "rds:RebootDBInstance", - "rds:RemoveRoleFromDBInstance", - "rds:RemoveTagsFromResource", - "rds:StartDBInstanceAutomatedBackupsReplication", - "rds:StopDBInstanceAutomatedBackupsReplication", - "secretsmanager:CreateSecret", - "secretsmanager:TagResource" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/DBInstanceIdentifier" - ], - "properties": { - "AllocatedStorage": { - "description": "The amount of storage in gibibytes (GiB) to be initially allocated for the database instance.\n If any value is set in the ``Iops`` parameter, ``AllocatedStorage`` must be at least 100 GiB, which corresponds to the minimum Iops value of 1,000. If you increase the ``Iops`` value (in 1,000 IOPS increments), then you must also increase the ``AllocatedStorage`` value (in 100-GiB increments). \n *Amazon Aurora* \n Not applicable. Aurora cluster volumes automatically grow as the amount of data in your database increases, though you are only charged for the space that you use in an Aurora cluster volume.\n *Db2* \n Constraints to the amount of storage for each storage type are the following:\n + General Purpose (SSD) storage (gp3): Must be an integer from 20 to 64000.\n + Provisioned IOPS storage (io1): Must be an integer from 100 to 64000.\n \n *MySQL* \n Constraints to the amount of storage for each storage type are the following: \n + General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.\n + Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.\n + Magnetic storage (standard): Must be an integer from 5 to 3072.\n \n *MariaDB* \n Constraints to the amount of storage for each storage type are the following: \n + General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.\n + Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.\n + Magnetic storage (standard): Must be an integer from 5 to 3072.\n \n *PostgreSQL* \n Constraints to the amount of storage for each storage type are the following: \n + General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.\n + Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.\n + Magnetic storage (standard): Must be an integer from 5 to 3072.\n \n *Oracle* \n Constraints to the amount of storage for each storage type are the following: \n + General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.\n + Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.\n + Magnetic storage (standard): Must be an integer from 10 to 3072.\n \n *SQL Server* \n Constraints to the amount of storage for each storage type are the following: \n + General Purpose (SSD) storage (gp2):\n + Enterprise and Standard editions: Must be an integer from 20 to 16384.\n + Web and Express editions: Must be an integer from 20 to 16384.\n \n + Provisioned IOPS storage (io1):\n + Enterprise and Standard editions: Must be an integer from 20 to 16384.\n + Web and Express editions: Must be an integer from 20 to 16384.\n \n + Magnetic storage (standard):\n + Enterprise and Standard editions: Must be an integer from 20 to 1024.\n + Web and Express editions: Must be an integer from 20 to 1024.", - "pattern": "^[0-9]*$", - "type": "string" - }, - "AllowMajorVersionUpgrade": { - "description": "A value that indicates whether major version upgrades are allowed. Changing this parameter doesn't result in an outage and the change is asynchronously applied as soon as possible.\n Constraints: Major version upgrades must be allowed when specifying a value for the ``EngineVersion`` parameter that is a different major version than the DB instance's current version.", - "type": "boolean" - }, - "AssociatedRoles": { - "description": "The IAMlong (IAM) roles associated with the DB instance. \n *Amazon Aurora* \n Not applicable. The associated roles are managed by the DB cluster.", - "items": { - "$ref": "#/definitions/DBInstanceRole" - }, - "type": "array" - }, - "AutoMinorVersionUpgrade": { - "description": "A value that indicates whether minor engine upgrades are applied automatically to the DB instance during the maintenance window. By default, minor engine upgrades are applied automatically.", - "type": "boolean" - }, - "AutomaticBackupReplicationKmsKeyId": { - "description": "The AWS KMS key identifier for encryption of the replicated automated backups. The KMS key ID is the Amazon Resource Name (ARN) for the KMS encryption key in the destination AWS-Region, for example, ``arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE``.", - "type": "string" - }, - "AutomaticBackupReplicationRegion": { - "description": "The AWS-Region associated with the automated backup.", - "type": "string" - }, - "AvailabilityZone": { - "description": "The Availability Zone (AZ) where the database will be created. For information on AWS-Regions and Availability Zones, see [Regions and Availability Zones](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html).\n For Amazon Aurora, each Aurora DB cluster hosts copies of its storage in three separate Availability Zones. Specify one of these Availability Zones. Aurora automatically chooses an appropriate Availability Zone if you don't specify one.\n Default: A random, system-chosen Availability Zone in the endpoint's AWS-Region.\n Constraints:\n + The ``AvailabilityZone`` parameter can't be specified if the DB instance is a Multi-AZ deployment.\n + The specified Availability Zone must be in the same AWS-Region as the current endpoint.\n \n Example: ``us-east-1d``", - "type": "string" - }, - "BackupRetentionPeriod": { - "description": "The number of days for which automated backups are retained. Setting this parameter to a positive number enables backups. Setting this parameter to 0 disables automated backups.\n *Amazon Aurora* \n Not applicable. The retention period for automated backups is managed by the DB cluster.\n Default: 1\n Constraints:\n + Must be a value from 0 to 35\n + Can't be set to 0 if the DB instance is a source to read replicas", - "minimum": 0, - "type": "integer" - }, - "CACertificateIdentifier": { - "description": "The identifier of the CA certificate for this DB instance.\n For more information, see [Using SSL/TLS to encrypt a connection to a DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html) in the *Amazon RDS User Guide* and [Using SSL/TLS to encrypt a connection to a DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html) in the *Amazon Aurora User Guide*.", - "type": "string" - }, - "CertificateDetails": { - "$ref": "#/definitions/CertificateDetails", - "description": "The details of the DB instance's server certificate." - }, - "CertificateRotationRestart": { - "description": "Specifies whether the DB instance is restarted when you rotate your SSL/TLS certificate.\n By default, the DB instance is restarted when you rotate your SSL/TLS certificate. The certificate is not updated until the DB instance is restarted.\n Set this parameter only if you are *not* using SSL/TLS to connect to the DB instance.\n If you are using SSL/TLS to connect to the DB instance, follow the appropriate instructions for your DB engine to rotate your SSL/TLS certificate:\n + For more information about rotating your SSL/TLS certificate for RDS DB engines, see [Rotating Your SSL/TLS Certificate.](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html) in the *Amazon RDS User Guide.* \n + For more information about rotating your SSL/TLS certificate for Aurora DB engines, see [Rotating Your SSL/TLS Certificate](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html) in the *Amazon Aurora User Guide*.\n \n This setting doesn't apply to RDS Custom DB instances.", - "type": "boolean" - }, - "CharacterSetName": { - "description": "For supported engines, indicates that the DB instance should be associated with the specified character set.\n *Amazon Aurora* \n Not applicable. The character set is managed by the DB cluster. For more information, see [AWS::RDS::DBCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html).", - "type": "string" - }, - "CopyTagsToSnapshot": { - "description": "Specifies whether to copy tags from the DB instance to snapshots of the DB instance. By default, tags are not copied.\n This setting doesn't apply to Amazon Aurora DB instances. Copying tags to snapshots is managed by the DB cluster. Setting this value for an Aurora DB instance has no effect on the DB cluster setting.", - "type": "boolean" - }, - "CustomIAMInstanceProfile": { - "description": "The instance profile associated with the underlying Amazon EC2 instance of an RDS Custom DB instance.\n This setting is required for RDS Custom.\n Constraints:\n + The profile must exist in your account.\n + The profile must have an IAM role that Amazon EC2 has permissions to assume.\n + The instance profile name and the associated IAM role name must start with the prefix ``AWSRDSCustom``.\n \n For the list of permissions required for the IAM role, see [Configure IAM and your VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-setup-orcl.html#custom-setup-orcl.iam-vpc) in the *Amazon RDS User Guide*.", - "type": "string" - }, - "DBClusterIdentifier": { - "description": "The identifier of the DB cluster that this DB instance will belong to.\n This setting doesn't apply to RDS Custom DB instances.", - "type": "string" - }, - "DBClusterSnapshotIdentifier": { - "description": "The identifier for the Multi-AZ DB cluster snapshot to restore from.\n For more information on Multi-AZ DB clusters, see [Multi-AZ DB cluster deployments](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html) in the *Amazon RDS User Guide*.\n Constraints:\n + Must match the identifier of an existing Multi-AZ DB cluster snapshot.\n + Can't be specified when ``DBSnapshotIdentifier`` is specified.\n + Must be specified when ``DBSnapshotIdentifier`` isn't specified.\n + If you are restoring from a shared manual Multi-AZ DB cluster snapshot, the ``DBClusterSnapshotIdentifier`` must be the ARN of the shared snapshot.\n + Can't be the identifier of an Aurora DB cluster snapshot.", - "type": "string" - }, - "DBInstanceArn": { - "description": "", - "type": "string" - }, - "DBInstanceClass": { - "description": "The compute and memory capacity of the DB instance, for example ``db.m5.large``. Not all DB instance classes are available in all AWS-Regions, or for all database engines. For the full list of DB instance classes, and availability for your engine, see [DB instance classes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html) in the *Amazon RDS User Guide* or [Aurora DB instance classes](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html) in the *Amazon Aurora User Guide*.", - "type": "string" - }, - "DBInstanceIdentifier": { - "description": "A name for the DB instance. If you specify a name, AWS CloudFormation converts it to lowercase. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the DB instance. For more information, see [Name Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).\n For information about constraints that apply to DB instance identifiers, see [Naming constraints in Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Constraints) in the *Amazon RDS User Guide*.\n If you specify a name, you can't perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", - "maxLength": 63, - "minLength": 1, - "pattern": "^$|^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", - "type": "string" - }, - "DBName": { - "description": "The meaning of this parameter differs according to the database engine you use.\n If you specify the ``DBSnapshotIdentifier`` property, this property only applies to RDS for Oracle.\n *Amazon Aurora* \n Not applicable. The database name is managed by the DB cluster.\n *Db2* \n The name of the database to create when the DB instance is created. If this parameter isn't specified, no database is created in the DB instance.\n Constraints:\n + Must contain 1 to 64 letters or numbers.\n + Must begin with a letter. Subsequent characters can be letters, underscores, or digits (0-9).\n + Can't be a word reserved by the specified database engine.\n \n *MySQL* \n The name of the database to create when the DB instance is created. If this parameter is not specified, no database is created in the DB instance.\n Constraints:\n + Must contain 1 to 64 letters or numbers.\n + Can't be a word reserved by the specified database engine\n \n *MariaDB* \n The name of the database to create when the DB instance is created. If this parameter is not specified, no database is created in the DB instance.\n Constraints:\n + Must contain 1 to 64 letters or numbers.\n + Can't be a word reserved by the specified database engine\n \n *PostgreSQL* \n The name of the database to create when the DB instance is created. If this parameter is not specified, the default ``postgres`` database is created in the DB instance.\n Constraints:\n + Must begin with a letter. Subsequent characters can be letters, underscores, or digits (0-9).\n + Must contain 1 to 63 characters.\n + Can't be a word reserved by the specified database engine\n \n *Oracle* \n The Oracle System ID (SID) of the created DB instance. If you specify ``null``, the default value ``ORCL`` is used. You can't specify the string NULL, or any other reserved word, for ``DBName``. \n Default: ``ORCL`` \n Constraints:\n + Can't be longer than 8 characters\n \n *SQL Server* \n Not applicable. Must be null.", - "type": "string" - }, - "DBParameterGroupName": { - "description": "The name of an existing DB parameter group or a reference to an [AWS::RDS::DBParameterGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbparametergroup.html) resource created in the template.\n To list all of the available DB parameter group names, use the following command:\n ``aws rds describe-db-parameter-groups --query \"DBParameterGroups[].DBParameterGroupName\" --output text`` \n If any of the data members of the referenced parameter group are changed during an update, the DB instance might need to be restarted, which causes some interruption. If the parameter group contains static parameters, whether they were changed or not, an update triggers a reboot.\n If you don't specify a value for ``DBParameterGroupName`` property, the default DB parameter group for the specified engine and engine version is used.", - "type": "string" - }, - "DBSecurityGroups": { - "description": "A list of the DB security groups to assign to the DB instance. The list can include both the name of existing DB security groups or references to AWS::RDS::DBSecurityGroup resources created in the template.\n If you set DBSecurityGroups, you must not set VPCSecurityGroups, and vice versa. Also, note that the DBSecurityGroups property exists only for backwards compatibility with older regions and is no longer recommended for providing security information to an RDS DB instance. Instead, use VPCSecurityGroups.\n If you specify this property, AWS CloudFormation sends only the following properties (if specified) to Amazon RDS during create operations:\n + ``AllocatedStorage`` \n + ``AutoMinorVersionUpgrade`` \n + ``AvailabilityZone`` \n + ``BackupRetentionPeriod`` \n + ``CharacterSetName`` \n + ``DBInstanceClass`` \n + ``DBName`` \n + ``DBParameterGroupName`` \n + ``DBSecurityGroups`` \n + ``DBSubnetGroupName`` \n + ``Engine`` \n + ``EngineVersion`` \n + ``Iops`` \n + ``LicenseModel`` \n + ``MasterUsername`` \n + ``MasterUserPassword`` \n + ``MultiAZ`` \n + ``OptionGroupName`` \n + ``PreferredBackupWindow`` \n + ``PreferredMaintenanceWindow`` \n \n All other properties are ignored. Specify a virtual private cloud (VPC) security group if you want to submit other properties, such as ``StorageType``, ``StorageEncrypted``, or ``KmsKeyId``. If you're already using the ``DBSecurityGroups`` property, you can't use these other properties by updating your DB instance to use a VPC security group. You must recreate the DB instance.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "DBSnapshotIdentifier": { - "description": "The name or Amazon Resource Name (ARN) of the DB snapshot that's used to restore the DB instance. If you're restoring from a shared manual DB snapshot, you must specify the ARN of the snapshot.\n By specifying this property, you can create a DB instance from the specified DB snapshot. If the ``DBSnapshotIdentifier`` property is an empty string or the ``AWS::RDS::DBInstance`` declaration has no ``DBSnapshotIdentifier`` property, AWS CloudFormation creates a new database. If the property contains a value (other than an empty string), AWS CloudFormation creates a database from the specified snapshot. If a snapshot with the specified name doesn't exist, AWS CloudFormation can't create the database and it rolls back the stack.\n Some DB instance properties aren't valid when you restore from a snapshot, such as the ``MasterUsername`` and ``MasterUserPassword`` properties. For information about the properties that you can specify, see the ``RestoreDBInstanceFromDBSnapshot`` action in the *Amazon RDS API Reference*.\n After you restore a DB instance with a ``DBSnapshotIdentifier`` property, you must specify the same ``DBSnapshotIdentifier`` property for any future updates to the DB instance. When you specify this property for an update, the DB instance is not restored from the DB snapshot again, and the data in the database is not changed. However, if you don't specify the ``DBSnapshotIdentifier`` property, an empty DB instance is created, and the original DB instance is deleted. If you specify a property that is different from the previous snapshot restore property, a new DB instance is restored from the specified ``DBSnapshotIdentifier`` property, and the original DB instance is deleted.\n If you specify the ``DBSnapshotIdentifier`` property to restore a DB instance (as opposed to specifying it for DB instance updates), then don't specify the following properties:\n + ``CharacterSetName`` \n + ``DBClusterIdentifier`` \n + ``DBName`` \n + ``KmsKeyId`` \n + ``MasterUsername`` \n + ``MasterUserPassword`` \n + ``PromotionTier`` \n + ``SourceDBInstanceIdentifier`` \n + ``SourceRegion`` \n + ``StorageEncrypted`` (for an unencrypted snapshot)\n + ``Timezone`` \n \n *Amazon Aurora* \n Not applicable. Snapshot restore is managed by the DB cluster.", - "type": "string" - }, - "DBSubnetGroupName": { - "description": "A DB subnet group to associate with the DB instance. If you update this value, the new subnet group must be a subnet group in a new VPC. \n If there's no DB subnet group, then the DB instance isn't a VPC DB instance.\n For more information about using Amazon RDS in a VPC, see [Amazon VPC and Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html) in the *Amazon RDS User Guide*. \n This setting doesn't apply to Amazon Aurora DB instances. The DB subnet group is managed by the DB cluster. If specified, the setting must match the DB cluster setting.", - "type": "string" - }, - "DBSystemId": { - "description": "The Oracle system identifier (SID), which is the name of the Oracle database instance that manages your database files. In this context, the term \"Oracle database instance\" refers exclusively to the system global area (SGA) and Oracle background processes. If you don't specify a SID, the value defaults to ``RDSCDB``. The Oracle SID is also the name of your CDB.", - "type": "string" - }, - "DbiResourceId": { - "description": "", - "type": "string" - }, - "DedicatedLogVolume": { - "description": "Indicates whether the DB instance has a dedicated log volume (DLV) enabled.", - "type": "boolean" - }, - "DeleteAutomatedBackups": { - "description": "A value that indicates whether to remove automated backups immediately after the DB instance is deleted. This parameter isn't case-sensitive. The default is to remove automated backups immediately after the DB instance is deleted.\n *Amazon Aurora* \n Not applicable. When you delete a DB cluster, all automated backups for that DB cluster are deleted and can't be recovered. Manual DB cluster snapshots of the DB cluster are not deleted.", - "type": "boolean" - }, - "DeletionProtection": { - "description": "Specifies whether the DB instance has deletion protection enabled. The database can't be deleted when deletion protection is enabled. By default, deletion protection isn't enabled. For more information, see [Deleting a DB Instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html).\n This setting doesn't apply to Amazon Aurora DB instances. You can enable or disable deletion protection for the DB cluster. For more information, see ``CreateDBCluster``. DB instances in a DB cluster can be deleted even when deletion protection is enabled for the DB cluster.", - "type": "boolean" - }, - "Domain": { - "description": "The Active Directory directory ID to create the DB instance in. Currently, only Db2, MySQL, Microsoft SQL Server, Oracle, and PostgreSQL DB instances can be created in an Active Directory Domain.\n For more information, see [Kerberos Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html) in the *Amazon RDS User Guide*.", - "type": "string" - }, - "DomainAuthSecretArn": { - "description": "The ARN for the Secrets Manager secret with the credentials for the user joining the domain.\n Example: ``arn:aws:secretsmanager:region:account-number:secret:myselfmanagedADtestsecret-123456``", - "type": "string" - }, - "DomainDnsIps": { - "description": "The IPv4 DNS IP addresses of your primary and secondary Active Directory domain controllers.\n Constraints:\n + Two IP addresses must be provided. If there isn't a secondary domain controller, use the IP address of the primary domain controller for both entries in the list.\n \n Example: ``123.124.125.126,234.235.236.237``", - "items": { - "type": "string" - }, - "type": "array" - }, - "DomainFqdn": { - "description": "The fully qualified domain name (FQDN) of an Active Directory domain.\n Constraints:\n + Can't be longer than 64 characters.\n \n Example: ``mymanagedADtest.mymanagedAD.mydomain``", - "type": "string" - }, - "DomainIAMRoleName": { - "description": "The name of the IAM role to use when making API calls to the Directory Service.\n This setting doesn't apply to the following DB instances:\n + Amazon Aurora (The domain is managed by the DB cluster.)\n + RDS Custom", - "type": "string" - }, - "DomainOu": { - "description": "The Active Directory organizational unit for your DB instance to join.\n Constraints:\n + Must be in the distinguished name format.\n + Can't be longer than 64 characters.\n \n Example: ``OU=mymanagedADtestOU,DC=mymanagedADtest,DC=mymanagedAD,DC=mydomain``", - "type": "string" - }, - "EnableCloudwatchLogsExports": { - "description": "The list of log types that need to be enabled for exporting to CloudWatch Logs. The values in the list depend on the DB engine being used. For more information, see [Publishing Database Logs to Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch) in the *Amazon Relational Database Service User Guide*.\n *Amazon Aurora* \n Not applicable. CloudWatch Logs exports are managed by the DB cluster. \n *Db2* \n Valid values: ``diag.log``, ``notify.log`` \n *MariaDB* \n Valid values: ``audit``, ``error``, ``general``, ``slowquery`` \n *Microsoft SQL Server* \n Valid values: ``agent``, ``error`` \n *MySQL* \n Valid values: ``audit``, ``error``, ``general``, ``slowquery`` \n *Oracle* \n Valid values: ``alert``, ``audit``, ``listener``, ``trace``, ``oemagent`` \n *PostgreSQL* \n Valid values: ``postgresql``, ``upgrade``", - "items": { - "type": "string" - }, - "type": "array" - }, - "EnableIAMDatabaseAuthentication": { - "description": "A value that indicates whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts. By default, mapping is disabled.\n This property is supported for RDS for MariaDB, RDS for MySQL, and RDS for PostgreSQL. For more information, see [IAM Database Authentication for MariaDB, MySQL, and PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html) in the *Amazon RDS User Guide.* \n *Amazon Aurora* \n Not applicable. Mapping AWS IAM accounts to database accounts is managed by the DB cluster.", - "type": "boolean" - }, - "EnablePerformanceInsights": { - "description": "Specifies whether to enable Performance Insights for the DB instance. For more information, see [Using Amazon Performance Insights](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) in the *Amazon RDS User Guide*.\n This setting doesn't apply to RDS Custom DB instances.", - "type": "boolean" - }, - "Endpoint": { - "$ref": "#/definitions/Endpoint", - "description": "The connection endpoint for the DB instance.\n The endpoint might not be shown for instances with the status of ``creating``." - }, - "Engine": { - "description": "The name of the database engine to use for this DB instance. Not every database engine is available in every AWS Region.\n This property is required when creating a DB instance.\n You can convert an Oracle database from the non-CDB architecture to the container database (CDB) architecture by updating the ``Engine`` value in your templates from ``oracle-ee`` to ``oracle-ee-cdb`` or from ``oracle-se2`` to ``oracle-se2-cdb``. Converting to the CDB architecture requires an interruption.\n Valid Values:\n + ``aurora-mysql`` (for Aurora MySQL DB instances)\n + ``aurora-postgresql`` (for Aurora PostgreSQL DB instances)\n + ``custom-oracle-ee`` (for RDS Custom for Oracle DB instances)\n + ``custom-oracle-ee-cdb`` (for RDS Custom for Oracle DB instances)\n + ``custom-sqlserver-ee`` (for RDS Custom for SQL Server DB instances)\n + ``custom-sqlserver-se`` (for RDS Custom for SQL Server DB instances)\n + ``custom-sqlserver-web`` (for RDS Custom for SQL Server DB instances)\n + ``db2-ae`` \n + ``db2-se`` \n + ``mariadb`` \n + ``mysql`` \n + ``oracle-ee`` \n + ``oracle-ee-cdb`` \n + ``oracle-se2`` \n + ``oracle-se2-cdb`` \n + ``postgres`` \n + ``sqlserver-ee`` \n + ``sqlserver-se`` \n + ``sqlserver-ex`` \n + ``sqlserver-web``", - "type": "string" - }, - "EngineLifecycleSupport": { - "description": "The life cycle type for this DB instance.\n By default, this value is set to ``open-source-rds-extended-support``, which enrolls your DB instance into Amazon RDS Extended Support. At the end of standard support, you can avoid charges for Extended Support by setting the value to ``open-source-rds-extended-support-disabled``. In this case, creating the DB instance will fail if the DB major version is past its end of standard support date.\n This setting applies only to RDS for MySQL and RDS for PostgreSQL. For Amazon Aurora DB instances, the life cycle type is managed by the DB cluster.\n You can use this setting to enroll your DB instance into Amazon RDS Extended Support. With RDS Extended Support, you can run the selected major engine version on your DB instance past the end of standard support for that engine version. For more information, see [Using Amazon RDS Extended Support](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html) in the *Amazon RDS User Guide*.\n Valid Values: ``open-source-rds-extended-support | open-source-rds-extended-support-disabled`` \n Default: ``open-source-rds-extended-support``", - "type": "string" - }, - "EngineVersion": { - "description": "The version number of the database engine to use.\n For a list of valid engine versions, use the ``DescribeDBEngineVersions`` action.\n The following are the database engines and links to information about the major and minor versions that are available with Amazon RDS. Not every database engine is available for every AWS Region.\n *Amazon Aurora* \n Not applicable. The version number of the database engine to be used by the DB instance is managed by the DB cluster.\n *Db2* \n See [Amazon RDS for Db2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Db2.html#Db2.Concepts.VersionMgmt) in the *Amazon RDS User Guide.* \n *MariaDB* \n See [MariaDB on Amazon RDS Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html#MariaDB.Concepts.VersionMgmt) in the *Amazon RDS User Guide.* \n *Microsoft SQL Server* \n See [Microsoft SQL Server Versions on Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.VersionSupport) in the *Amazon RDS User Guide.* \n *MySQL* \n See [MySQL on Amazon RDS Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt) in the *Amazon RDS User Guide.* \n *Oracle* \n See [Oracle Database Engine Release Notes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.PatchComposition.html) in the *Amazon RDS User Guide.* \n *PostgreSQL* \n See [Supported PostgreSQL Database Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.DBVersions) in the *Amazon RDS User Guide.*", - "type": "string" - }, - "Iops": { - "description": "The number of I/O operations per second (IOPS) that the database provisions. The value must be equal to or greater than 1000. \n If you specify this property, you must follow the range of allowed ratios of your requested IOPS rate to the amount of storage that you allocate (IOPS to allocated storage). For example, you can provision an Oracle database instance with 1000 IOPS and 200 GiB of storage (a ratio of 5:1), or specify 2000 IOPS with 200 GiB of storage (a ratio of 10:1). For more information, see [Amazon RDS Provisioned IOPS Storage to Improve Performance](https://docs.aws.amazon.com/AmazonRDS/latest/DeveloperGuide/CHAP_Storage.html#USER_PIOPS) in the *Amazon RDS User Guide*.\n If you specify ``io1`` for the ``StorageType`` property, then you must also specify the ``Iops`` property.\n Constraints:\n + For RDS for Db2, MariaDB, MySQL, Oracle, and PostgreSQL - Must be a multiple between .5 and 50 of the storage amount for the DB instance.\n + For RDS for SQL Server - Must be a multiple between 1 and 50 of the storage amount for the DB instance.", - "type": "integer" - }, - "KmsKeyId": { - "description": "The ARN of the AWS KMS key that's used to encrypt the DB instance, such as ``arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef``. If you enable the StorageEncrypted property but don't specify this property, AWS CloudFormation uses the default KMS key. If you specify this property, you must set the StorageEncrypted property to true. \n If you specify the ``SourceDBInstanceIdentifier`` or ``SourceDbiResourceId`` property, don't specify this property. The value is inherited from the source DB instance, and if the DB instance is encrypted, the specified ``KmsKeyId`` property is used. However, if the source DB instance is in a different AWS Region, you must specify a KMS key ID.\n If you specify the ``SourceDBInstanceAutomatedBackupsArn`` property, don't specify this property. The value is inherited from the source DB instance automated backup, and if the automated backup is encrypted, the specified ``KmsKeyId`` property is used.\n If you create an encrypted read replica in a different AWS Region, then you must specify a KMS key for the destination AWS Region. KMS encryption keys are specific to the region that they're created in, and you can't use encryption keys from one region in another region.\n If you specify the ``DBSnapshotIdentifier`` property, don't specify this property. The ``StorageEncrypted`` property value is inherited from the snapshot. If the DB instance is encrypted, the specified ``KmsKeyId`` property is also inherited from the snapshot.\n If you specify ``DBSecurityGroups``, AWS CloudFormation ignores this property. To specify both a security group and this property, you must use a VPC security group. For more information about Amazon RDS and VPC, see [Using Amazon RDS with Amazon VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html) in the *Amazon RDS User Guide*.\n *Amazon Aurora* \n Not applicable. The KMS key identifier is managed by the DB cluster.", - "type": "string" - }, - "LicenseModel": { - "description": "License model information for this DB instance.\n Valid Values:\n + Aurora MySQL - ``general-public-license`` \n + Aurora PostgreSQL - ``postgresql-license`` \n + RDS for Db2 - ``bring-your-own-license``. For more information about RDS for Db2 licensing, see [](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-licensing.html) in the *Amazon RDS User Guide.* \n + RDS for MariaDB - ``general-public-license`` \n + RDS for Microsoft SQL Server - ``license-included`` \n + RDS for MySQL - ``general-public-license`` \n + RDS for Oracle - ``bring-your-own-license`` or ``license-included`` \n + RDS for PostgreSQL - ``postgresql-license`` \n \n If you've specified ``DBSecurityGroups`` and then you update the license model, AWS CloudFormation replaces the underlying DB instance. This will incur some interruptions to database availability.", - "type": "string" - }, - "ManageMasterUserPassword": { - "description": "Specifies whether to manage the master user password with AWS Secrets Manager.\n For more information, see [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the *Amazon RDS User Guide.* \n Constraints:\n + Can't manage the master user password with AWS Secrets Manager if ``MasterUserPassword`` is specified.", - "type": "boolean" - }, - "MasterUserPassword": { - "description": "The password for the master user. The password can include any printable ASCII character except \"/\", \"\"\", or \"@\".\n *Amazon Aurora* \n Not applicable. The password for the master user is managed by the DB cluster.\n *RDS for Db2* \n Must contain from 8 to 255 characters.\n *RDS for MariaDB* \n Constraints: Must contain from 8 to 41 characters.\n *RDS for Microsoft SQL Server* \n Constraints: Must contain from 8 to 128 characters.\n *RDS for MySQL* \n Constraints: Must contain from 8 to 41 characters.\n *RDS for Oracle* \n Constraints: Must contain from 8 to 30 characters.\n *RDS for PostgreSQL* \n Constraints: Must contain from 8 to 128 characters.", - "type": "string" - }, - "MasterUserSecret": { - "$ref": "#/definitions/MasterUserSecret", - "description": "The secret managed by RDS in AWS Secrets Manager for the master user password.\n For more information, see [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the *Amazon RDS User Guide.*" - }, - "MasterUsername": { - "description": "The master user name for the DB instance.\n If you specify the ``SourceDBInstanceIdentifier`` or ``DBSnapshotIdentifier`` property, don't specify this property. The value is inherited from the source DB instance or snapshot.\n When migrating a self-managed Db2 database, we recommend that you use the same master username as your self-managed Db2 instance name.\n *Amazon Aurora* \n Not applicable. The name for the master user is managed by the DB cluster. \n *RDS for Db2* \n Constraints:\n + Must be 1 to 16 letters or numbers.\n + First character must be a letter.\n + Can't be a reserved word for the chosen database engine.\n \n *RDS for MariaDB* \n Constraints:\n + Must be 1 to 16 letters or numbers.\n + Can't be a reserved word for the chosen database engine.\n \n *RDS for Microsoft SQL Server* \n Constraints:\n + Must be 1 to 128 letters or numbers.\n + First character must be a letter.\n + Can't be a reserved word for the chosen database engine.\n \n *RDS for MySQL* \n Constraints:\n + Must be 1 to 16 letters or numbers.\n + First character must be a letter.\n + Can't be a reserved word for the chosen database engine.\n \n *RDS for Oracle* \n Constraints:\n + Must be 1 to 30 letters or numbers.\n + First character must be a letter.\n + Can't be a reserved word for the chosen database engine.\n \n *RDS for PostgreSQL* \n Constraints:\n + Must be 1 to 63 letters or numbers.\n + First character must be a letter.\n + Can't be a reserved word for the chosen database engine.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z][a-zA-Z0-9_]{0,127}$", - "type": "string" - }, - "MaxAllocatedStorage": { - "description": "The upper limit in gibibytes (GiB) to which Amazon RDS can automatically scale the storage of the DB instance.\n For more information about this setting, including limitations that apply to it, see [Managing capacity automatically with Amazon RDS storage autoscaling](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling) in the *Amazon RDS User Guide*.\n This setting doesn't apply to the following DB instances:\n + Amazon Aurora (Storage is managed by the DB cluster.)\n + RDS Custom", - "type": "integer" - }, - "MonitoringInterval": { - "description": "The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB instance. To disable collection of Enhanced Monitoring metrics, specify ``0``.\n If ``MonitoringRoleArn`` is specified, then you must set ``MonitoringInterval`` to a value other than ``0``.\n This setting doesn't apply to RDS Custom DB instances.\n Valid Values: ``0 | 1 | 5 | 10 | 15 | 30 | 60`` \n Default: ``0``", - "type": "integer" - }, - "MonitoringRoleArn": { - "description": "The ARN for the IAM role that permits RDS to send enhanced monitoring metrics to Amazon CloudWatch Logs. For example, ``arn:aws:iam:123456789012:role/emaccess``. For information on creating a monitoring role, see [Setting Up and Enabling Enhanced Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.Enabling) in the *Amazon RDS User Guide*.\n If ``MonitoringInterval`` is set to a value other than ``0``, then you must supply a ``MonitoringRoleArn`` value.\n This setting doesn't apply to RDS Custom DB instances.", - "type": "string" - }, - "MultiAZ": { - "description": "Specifies whether the DB instance is a Multi-AZ deployment. You can't set the ``AvailabilityZone`` parameter if the DB instance is a Multi-AZ deployment.\n This setting doesn't apply to the following DB instances:\n + Amazon Aurora (DB instance Availability Zones (AZs) are managed by the DB cluster.)\n + RDS Custom", - "type": "boolean" - }, - "NcharCharacterSetName": { - "description": "The name of the NCHAR character set for the Oracle DB instance.\n This setting doesn't apply to RDS Custom DB instances.", - "type": "string" - }, - "NetworkType": { - "description": "The network type of the DB instance.\n Valid values:\n + ``IPV4`` \n + ``DUAL`` \n \n The network type is determined by the ``DBSubnetGroup`` specified for the DB instance. A ``DBSubnetGroup`` can support only the IPv4 protocol or the IPv4 and IPv6 protocols (``DUAL``).\n For more information, see [Working with a DB instance in a VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html) in the *Amazon RDS User Guide.*", - "type": "string" - }, - "OptionGroupName": { - "description": "Indicates that the DB instance should be associated with the specified option group.\n Permanent options, such as the TDE option for Oracle Advanced Security TDE, can't be removed from an option group. Also, that option group can't be removed from a DB instance once it is associated with a DB instance.", - "type": "string" - }, - "PerformanceInsightsKMSKeyId": { - "description": "The AWS KMS key identifier for encryption of Performance Insights data.\n The KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key.\n If you do not specify a value for ``PerformanceInsightsKMSKeyId``, then Amazon RDS uses your default KMS key. There is a default KMS key for your AWS account. Your AWS account has a different default KMS key for each AWS Region.\n For information about enabling Performance Insights, see [EnablePerformanceInsights](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-enableperformanceinsights).", - "type": "string" - }, - "PerformanceInsightsRetentionPeriod": { - "description": "The number of days to retain Performance Insights data.\n This setting doesn't apply to RDS Custom DB instances.\n Valid Values:\n + ``7`` \n + *month* * 31, where *month* is a number of months from 1-23. Examples: ``93`` (3 months * 31), ``341`` (11 months * 31), ``589`` (19 months * 31)\n + ``731`` \n \n Default: ``7`` days\n If you specify a retention period that isn't valid, such as ``94``, Amazon RDS returns an error.", - "type": "integer" - }, - "Port": { - "description": "The port number on which the database accepts connections.\n This setting doesn't apply to Aurora DB instances. The port number is managed by the cluster.\n Valid Values: ``1150-65535`` \n Default:\n + RDS for Db2 - ``50000`` \n + RDS for MariaDB - ``3306`` \n + RDS for Microsoft SQL Server - ``1433`` \n + RDS for MySQL - ``3306`` \n + RDS for Oracle - ``1521`` \n + RDS for PostgreSQL - ``5432`` \n \n Constraints:\n + For RDS for Microsoft SQL Server, the value can't be ``1234``, ``1434``, ``3260``, ``3343``, ``3389``, ``47001``, or ``49152-49156``.", - "pattern": "^\\d*$", - "type": "string" - }, - "PreferredBackupWindow": { - "description": "The daily time range during which automated backups are created if automated backups are enabled, using the ``BackupRetentionPeriod`` parameter. For more information, see [Backup Window](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow) in the *Amazon RDS User Guide.* \n Constraints:\n + Must be in the format ``hh24:mi-hh24:mi``.\n + Must be in Universal Coordinated Time (UTC).\n + Must not conflict with the preferred maintenance window.\n + Must be at least 30 minutes.\n \n *Amazon Aurora* \n Not applicable. The daily time range for creating automated backups is managed by the DB cluster.", - "type": "string" - }, - "PreferredMaintenanceWindow": { - "description": "The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).\n Format: ``ddd:hh24:mi-ddd:hh24:mi`` \n The default is a 30-minute window selected at random from an 8-hour block of time for each AWS Region, occurring on a random day of the week. To see the time blocks available, see [Adjusting the Preferred DB Instance Maintenance Window](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#AdjustingTheMaintenanceWindow) in the *Amazon RDS User Guide.* \n This property applies when AWS CloudFormation initially creates the DB instance. If you use AWS CloudFormation to update the DB instance, those updates are applied immediately.\n Constraints: Minimum 30-minute window.", - "type": "string" - }, - "ProcessorFeatures": { - "description": "The number of CPU cores and the number of threads per core for the DB instance class of the DB instance.\n This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.", - "items": { - "$ref": "#/definitions/ProcessorFeature" - }, - "type": "array" - }, - "PromotionTier": { - "description": "The order of priority in which an Aurora Replica is promoted to the primary instance after a failure of the existing primary instance. For more information, see [Fault Tolerance for an Aurora DB Cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.AuroraHighAvailability.html#Aurora.Managing.FaultTolerance) in the *Amazon Aurora User Guide*.\n This setting doesn't apply to RDS Custom DB instances.\n Default: ``1`` \n Valid Values: ``0 - 15``", - "minimum": 0, - "type": "integer" - }, - "PubliclyAccessible": { - "description": "Indicates whether the DB instance is an internet-facing instance. If you specify true, AWS CloudFormation creates an instance with a publicly resolvable DNS name, which resolves to a public IP address. If you specify false, AWS CloudFormation creates an internal instance with a DNS name that resolves to a private IP address. \n The default behavior value depends on your VPC setup and the database subnet group. For more information, see the ``PubliclyAccessible`` parameter in the [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) in the *Amazon RDS API Reference*.", - "type": "boolean" - }, - "ReplicaMode": { - "description": "The open mode of an Oracle read replica. For more information, see [Working with Oracle Read Replicas for Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-read-replicas.html) in the *Amazon RDS User Guide*.\n This setting is only supported in RDS for Oracle.\n Default: ``open-read-only`` \n Valid Values: ``open-read-only`` or ``mounted``", - "type": "string" - }, - "RestoreTime": { - "description": "The date and time to restore from. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*.\n Constraints:\n + Must be a time in Universal Coordinated Time (UTC) format.\n + Must be before the latest restorable time for the DB instance.\n + Can't be specified if the ``UseLatestRestorableTime`` parameter is enabled.\n \n Example: ``2009-09-07T23:45:00Z``", - "format": "date-time", - "type": "string" - }, - "SourceDBClusterIdentifier": { - "description": "The identifier of the Multi-AZ DB cluster that will act as the source for the read replica. Each DB cluster can have up to 15 read replicas.\n Constraints:\n + Must be the identifier of an existing Multi-AZ DB cluster.\n + Can't be specified if the ``SourceDBInstanceIdentifier`` parameter is also specified.\n + The specified DB cluster must have automatic backups enabled, that is, its backup retention period must be greater than 0.\n + The source DB cluster must be in the same AWS-Region as the read replica. Cross-Region replication isn't supported.", - "type": "string" - }, - "SourceDBInstanceAutomatedBackupsArn": { - "description": "The Amazon Resource Name (ARN) of the replicated automated backups from which to restore, for example, ``arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE``.\n This setting doesn't apply to RDS Custom.", - "type": "string" - }, - "SourceDBInstanceIdentifier": { - "description": "If you want to create a read replica DB instance, specify the ID of the source DB instance. Each DB instance can have a limited number of read replicas. For more information, see [Working with Read Replicas](https://docs.aws.amazon.com/AmazonRDS/latest/DeveloperGuide/USER_ReadRepl.html) in the *Amazon RDS User Guide*.\n For information about constraints that apply to DB instance identifiers, see [Naming constraints in Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Constraints) in the *Amazon RDS User Guide*.\n The ``SourceDBInstanceIdentifier`` property determines whether a DB instance is a read replica. If you remove the ``SourceDBInstanceIdentifier`` property from your template and then update your stack, AWS CloudFormation promotes the read replica to a standalone DB instance.\n If you specify the ``UseLatestRestorableTime`` or ``RestoreTime`` properties in conjunction with the ``SourceDBInstanceIdentifier`` property, RDS restores the DB instance to the requested point in time, thereby creating a new DB instance.\n + If you specify a source DB instance that uses VPC security groups, we recommend that you specify the ``VPCSecurityGroups`` property. If you don't specify the property, the read replica inherits the value of the ``VPCSecurityGroups`` property from the source DB when you create the replica. However, if you update the stack, AWS CloudFormation reverts the replica's ``VPCSecurityGroups`` property to the default value because it's not defined in the stack's template. This change might cause unexpected issues.\n + Read replicas don't support deletion policies. AWS CloudFormation ignores any deletion policy that's associated with a read replica.\n + If you specify ``SourceDBInstanceIdentifier``, don't specify the ``DBSnapshotIdentifier`` property. You can't create a read replica from a snapshot.\n + Don't set the ``BackupRetentionPeriod``, ``DBName``, ``MasterUsername``, ``MasterUserPassword``, and ``PreferredBackupWindow`` properties. The database attributes are inherited from the source DB instance, and backups are disabled for read replicas.\n + If the source DB instance is in a different region than the read replica, specify the source region in ``SourceRegion``, and specify an ARN for a valid DB instance in ``SourceDBInstanceIdentifier``. For more information, see [Constructing a Amazon RDS Amazon Resource Name (ARN)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN) in the *Amazon RDS User Guide*.\n + For DB instances in Amazon Aurora clusters, don't specify this property. Amazon RDS automatically assigns writer and reader DB instances.", - "type": "string" - }, - "SourceDbiResourceId": { - "description": "The resource ID of the source DB instance from which to restore.", - "type": "string" - }, - "SourceRegion": { - "description": "The ID of the region that contains the source DB instance for the read replica.", - "type": "string" - }, - "StorageEncrypted": { - "description": "A value that indicates whether the DB instance is encrypted. By default, it isn't encrypted.\n If you specify the ``KmsKeyId`` property, then you must enable encryption.\n If you specify the ``SourceDBInstanceIdentifier`` or ``SourceDbiResourceId`` property, don't specify this property. The value is inherited from the source DB instance, and if the DB instance is encrypted, the specified ``KmsKeyId`` property is used.\n If you specify the ``SourceDBInstanceAutomatedBackupsArn`` property, don't specify this property. The value is inherited from the source DB instance automated backup. \n If you specify ``DBSnapshotIdentifier`` property, don't specify this property. The value is inherited from the snapshot.\n *Amazon Aurora* \n Not applicable. The encryption for DB instances is managed by the DB cluster.", - "type": "boolean" - }, - "StorageThroughput": { - "description": "Specifies the storage throughput value for the DB instance. This setting applies only to the ``gp3`` storage type. \n This setting doesn't apply to RDS Custom or Amazon Aurora.", - "type": "integer" - }, - "StorageType": { - "description": "The storage type to associate with the DB instance.\n If you specify ``io1``, ``io2``, or ``gp3``, you must also include a value for the ``Iops`` parameter.\n This setting doesn't apply to Amazon Aurora DB instances. Storage is managed by the DB cluster.\n Valid Values: ``gp2 | gp3 | io1 | io2 | standard`` \n Default: ``io1``, if the ``Iops`` parameter is specified. Otherwise, ``gp2``.", - "type": "string" - }, - "Tags": { - "description": "Tags to assign to the DB instance.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TdeCredentialArn": { - "description": "", - "type": "string" - }, - "TdeCredentialPassword": { - "description": "", - "type": "string" - }, - "Timezone": { - "description": "The time zone of the DB instance. The time zone parameter is currently supported only by [RDS for Db2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-time-zone) and [RDS for SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone).", - "type": "string" - }, - "UseDefaultProcessorFeatures": { - "description": "Specifies whether the DB instance class of the DB instance uses its default processor features.\n This setting doesn't apply to RDS Custom DB instances.", - "type": "boolean" - }, - "UseLatestRestorableTime": { - "description": "Specifies whether the DB instance is restored from the latest backup time. By default, the DB instance isn't restored from the latest backup time. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*.\n Constraints:\n + Can't be specified if the ``RestoreTime`` parameter is provided.", - "type": "boolean" - }, - "VPCSecurityGroups": { - "description": "A list of the VPC security group IDs to assign to the DB instance. The list can include both the physical IDs of existing VPC security groups and references to [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html) resources created in the template.\n If you plan to update the resource, don't specify VPC security groups in a shared VPC.\n If you set ``VPCSecurityGroups``, you must not set [DBSecurityGroups](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups), and vice versa.\n You can migrate a DB instance in your stack from an RDS DB security group to a VPC security group, but keep the following in mind:\n + You can't revert to using an RDS security group after you establish a VPC security group membership.\n + When you migrate your DB instance to VPC security groups, if your stack update rolls back because the DB instance update fails or because an update fails in another AWS CloudFormation resource, the rollback fails because it can't revert to an RDS security group.\n + To use the properties that are available when you use a VPC security group, you must recreate the DB instance. If you don't, AWS CloudFormation submits only the property values that are listed in the [DBSecurityGroups](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups) property.\n \n To avoid this situation, migrate your DB instance to using VPC security groups only when that is the only change in your stack template. \n *Amazon Aurora* \n Not applicable. The associated list of EC2 VPC security groups is managed by the DB cluster. If specified, the setting must match the DB cluster setting.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "propertyTransform": { - "/properties/DBClusterIdentifier": "$lowercase(DBClusterIdentifier)", - "/properties/DBClusterSnapshotIdentifier": "$lowercase(DBClusterSnapshotIdentifier)", - "/properties/DBInstanceIdentifier": "$lowercase(DBInstanceIdentifier)", - "/properties/DBName": "$lowercase(DBName) $OR $uppercase(DBName)", - "/properties/DBParameterGroupName": "$lowercase(DBParameterGroupName)", - "/properties/DBSnapshotIdentifier": "$lowercase(DBSnapshotIdentifier)", - "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)", - "/properties/Engine": "$lowercase(Engine)", - "/properties/EngineVersion": "$join([$string(EngineVersion), \".*\"])", - "/properties/KmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", KmsKeyId])", - "/properties/MasterUserSecret/KmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", MasterUserSecret.KmsKeyId])", - "/properties/NetworkType": "$lowercase(NetworkType)", - "/properties/OptionGroupName": "$lowercase(OptionGroupName)", - "/properties/PerformanceInsightsKMSKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", PerformanceInsightsKMSKeyId])", - "/properties/PreferredMaintenanceWindow": "$lowercase(PreferredMaintenanceWindow)", - "/properties/SourceDBInstanceAutomatedBackupsArn": "$lowercase(SourceDBInstanceAutomatedBackupsArn)", - "/properties/SourceDBInstanceIdentifier": "$lowercase(SourceDBInstanceIdentifier)", - "/properties/StorageType": "$lowercase(StorageType)" - }, - "readOnlyProperties": [ - "/properties/Endpoint/Address", - "/properties/Endpoint/Port", - "/properties/Endpoint/HostedZoneId", - "/properties/DbiResourceId", - "/properties/DBInstanceArn", - "/properties/DBSystemId", - "/properties/MasterUserSecret/SecretArn", - "/properties/CertificateDetails/CAIdentifier", - "/properties/CertificateDetails/ValidTill" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RDS::DBInstance", - "writeOnlyProperties": [ - "/properties/AllowMajorVersionUpgrade", - "/properties/AutomaticBackupReplicationKmsKeyId", - "/properties/CertificateRotationRestart", - "/properties/DBSnapshotIdentifier", - "/properties/DeleteAutomatedBackups", - "/properties/MasterUserPassword", - "/properties/RestoreTime", - "/properties/SourceDBInstanceAutomatedBackupsArn", - "/properties/SourceDBInstanceIdentifier", - "/properties/SourceDbiResourceId", - "/properties/SourceRegion", - "/properties/TdeCredentialPassword", - "/properties/UseDefaultProcessorFeatures", - "/properties/UseLatestRestorableTime" - ] -} +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/AutoMinorVersionUpgrade", + "/properties/AvailabilityZone", + "/properties/BackupRetentionPeriod", + "/properties/DBClusterSnapshotIdentifier", + "/properties/DBParameterGroupName", + "/properties/DBSnapshotIdentifier", + "/properties/Engine", + "/properties/MultiAZ", + "/properties/PerformanceInsightsKMSKeyId", + "/properties/PreferredMaintenanceWindow", + "/properties/RestoreTime", + "/properties/SourceDBClusterIdentifier", + "/properties/SourceDBInstanceAutomatedBackupsArn", + "/properties/SourceDBInstanceIdentifier", + "/properties/SourceDbiResourceId", + "/properties/StorageType", + "/properties/UseLatestRestorableTime" + ], + "createOnlyProperties": [ + "/properties/CharacterSetName", + "/properties/CustomIAMInstanceProfile", + "/properties/DBClusterIdentifier", + "/properties/DBInstanceIdentifier", + "/properties/DBName", + "/properties/DBSubnetGroupName", + "/properties/DBSystemId", + "/properties/KmsKeyId", + "/properties/MasterUsername", + "/properties/NcharCharacterSetName", + "/properties/SourceRegion", + "/properties/StorageEncrypted", + "/properties/Timezone" + ], + "definitions": { + "CertificateDetails": { + "additionalProperties": false, + "description": "The details of the DB instance\u2019s server certificate.\n For more information, see [Using SSL/TLS to encrypt a connection to a DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html) in the *Amazon RDS User Guide* and [Using SSL/TLS to encrypt a connection to a DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html) in the *Amazon Aurora User Guide*.", + "properties": { + "CAIdentifier": { + "description": "The CA identifier of the CA certificate used for the DB instance's server certificate.", + "type": "string" + }, + "ValidTill": { + "description": "The expiration date of the DB instance\u2019s server certificate.", + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "DBInstanceRole": { + "additionalProperties": false, + "description": "Information about an AWS Identity and Access Management (IAM) role that is associated with a DB instance.", + "properties": { + "FeatureName": { + "description": "The name of the feature associated with the AWS Identity and Access Management (IAM) role. IAM roles that are associated with a DB instance grant permission for the DB instance to access other AWS services on your behalf. For the list of supported feature names, see the ``SupportedFeatureNames`` description in [DBEngineVersion](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBEngineVersion.html) in the *Amazon RDS API Reference*.", + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM role that is associated with the DB instance.", + "type": "string" + } + }, + "required": [ + "FeatureName", + "RoleArn" + ], + "type": "object" + }, + "Endpoint": { + "additionalProperties": false, + "description": "This data type represents the information you need to connect to an Amazon RDS DB instance. This data type is used as a response element in the following actions:\n + ``CreateDBInstance`` \n + ``DescribeDBInstances`` \n + ``DeleteDBInstance`` \n \n For the data structure that represents Amazon Aurora DB cluster endpoints, see ``DBClusterEndpoint``.", + "properties": { + "Address": { + "description": "Specifies the DNS address of the DB instance.", + "type": "string" + }, + "HostedZoneId": { + "description": "Specifies the ID that Amazon Route 53 assigns when you create a hosted zone.", + "type": "string" + }, + "Port": { + "description": "Specifies the port that the database engine is listening on.", + "type": "string" + } + }, + "type": "object" + }, + "MasterUserSecret": { + "additionalProperties": false, + "description": "The ``MasterUserSecret`` return value specifies the secret managed by RDS in AWS Secrets Manager for the master user password.\n For more information, see [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the *Amazon RDS User Guide* and [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html) in the *Amazon Aurora User Guide.*", + "properties": { + "KmsKeyId": { + "description": "The AWS KMS key identifier that is used to encrypt the secret.", + "type": "string" + }, + "SecretArn": { + "description": "The Amazon Resource Name (ARN) of the secret. This parameter is a return value that you can retrieve using the ``Fn::GetAtt`` intrinsic function. For more information, see [Return values](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#aws-resource-rds-dbinstance-return-values).", + "type": "string" + } + }, + "type": "object" + }, + "ProcessorFeature": { + "additionalProperties": false, + "description": "The ``ProcessorFeature`` property type specifies the processor features of a DB instance class.", + "properties": { + "Name": { + "description": "The name of the processor feature. Valid names are ``coreCount`` and ``threadsPerCore``.", + "enum": [ + "coreCount", + "threadsPerCore" + ], + "type": "string" + }, + "Value": { + "description": "The value of a processor feature.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", + "properties": { + "Key": { + "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/TdeCredentialArn", + "/properties/TdeCredentialPassword" + ], + "description": "The ``AWS::RDS::DBInstance`` resource creates an Amazon DB instance. The new DB instance can be an RDS DB instance, or it can be a DB instance in an Aurora DB cluster.\n For more information about creating an RDS DB instance, see [Creating an Amazon RDS DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html) in the *Amazon RDS User Guide*.\n For more information about creating a DB instance in an Aurora DB cluster, see [Creating an Amazon Aurora DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.CreateInstance.html) in the *Amazon Aurora User Guide*.\n If you import an existing DB instance, and the template configuration doesn't match the actual configuration of the DB instance, AWS CloudFormation applies the changes in the template during the import operation.\n If a DB instance is deleted or replaced during an update, AWS CloudFormation deletes all automated snapshots. However, it retains manual DB snapshots. During an update that requires replacement, you can apply a stack policy to prevent DB instances from being replaced. For more information, see [Prevent Updates to Stack Resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html).\n *Updating DB instances* \n When properties labeled \"*Update requires:* [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)\" are updated, AWS CloudFormation first creates a replacement DB instance, then changes references from other dependent resources to point to the replacement DB instance, and finally deletes the old DB instance.\n We highly recommend that you take a snapshot of the database before updating the stack. If you don't, you lose the data when AWS CloudFormation replaces your DB instance. To preserve your data, perform the following procedure:\n 1. Deactivate any applications that are using the DB instance so that there's no activity on the DB instance.\n 1. Create a snapshot of the DB instance. For more information, see [Creating a DB Snapshot](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html).\n 1. If you want to restore your instance using a DB snapshot, modify the updated template with your DB instance changes and add the ``DBSnapshotIdentifier`` property with the ID of the DB snapshot that you want to use.\n After you restore a DB instance with a ``DBSnapshotIdentifier`` property, you can delete the ``DBSnapshotIdentifier`` property. When you specify this property for an update, the DB instance is not restored from the DB snapshot again, and the data in the database is not changed. However, if you don't specify the ``DBSnapshotIdentifier`` property, an empty DB instance is created, and the original DB instance is deleted. If you specify a property that is different from the previous snapshot restore property, a new DB instance is restored from the specified ``DBSnapshotIdentifier`` property, and the original DB instance is deleted.\n 1. Update the stack.\n \n For more information about updating other properties of this resource, see ``ModifyDBInstance``. For more information about updating stacks, see [CloudFormation Stacks Updates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html).\n *Deleting DB instances* \n For DB instances that are part of an Aurora DB cluster, you can set a deletion policy for your DB instance to control how AWS CloudFormation handles the DB instance when the stack is deleted. For Amazon RDS DB instances, you can choose to *retain* the DB instance, to *delete* the DB instance, or to *create a snapshot* of the DB instance. The default AWS CloudFormation behavior depends on the ``DBClusterIdentifier`` property:\n 1. For ``AWS::RDS::DBInstance`` resources that don't specify the ``DBClusterIdentifier`` property, AWS CloudFormation saves a snapshot of the DB instance.\n 1. For ``AWS::RDS::DBInstance`` resources that do specify the ``DBClusterIdentifier`` property, AWS CloudFormation deletes the DB instance.\n \n For more information, see [DeletionPolicy Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html).", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeAccountAttributes", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcAttribute", + "ec2:DescribeVpcs", + "iam:CreateServiceLinkedRole", + "iam:GetRole", + "iam:ListRoles", + "iam:PassRole", + "kms:CreateGrant", + "kms:DescribeKey", + "rds:AddRoleToDBInstance", + "rds:AddTagsToResource", + "rds:CreateDBInstance", + "rds:CreateDBInstanceReadReplica", + "rds:DescribeDBInstances", + "rds:DescribeDBClusters", + "rds:DescribeDBClusterSnapshots", + "rds:DescribeDBInstanceAutomatedBackups", + "rds:DescribeDBSnapshots", + "rds:DescribeEvents", + "rds:ModifyDBInstance", + "rds:RebootDBInstance", + "rds:RestoreDBInstanceFromDBSnapshot", + "rds:RestoreDBInstanceToPointInTime", + "rds:StartDBInstanceAutomatedBackupsReplication", + "secretsmanager:CreateSecret", + "secretsmanager:TagResource" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "rds:AddTagsToResource", + "rds:CreateDBSnapshot", + "rds:DeleteDBInstance", + "rds:DescribeDBInstances" + ], + "timeoutInMinutes": 2160 + }, + "list": { + "permissions": [ + "rds:DescribeDBInstances" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeAccountAttributes", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcAttribute", + "ec2:DescribeVpcs", + "rds:DescribeDBInstances" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeAccountAttributes", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcAttribute", + "ec2:DescribeVpcs", + "iam:CreateServiceLinkedRole", + "iam:GetRole", + "iam:ListRoles", + "iam:PassRole", + "kms:CreateGrant", + "kms:DescribeKey", + "rds:AddRoleToDBInstance", + "rds:AddTagsToResource", + "rds:DescribeDBClusters", + "rds:DescribeDBEngineVersions", + "rds:DescribeDBInstances", + "rds:DescribeDBParameterGroups", + "rds:DescribeDBInstanceAutomatedBackups", + "rds:DescribeEvents", + "rds:ModifyDBInstance", + "rds:PromoteReadReplica", + "rds:RebootDBInstance", + "rds:RemoveRoleFromDBInstance", + "rds:RemoveTagsFromResource", + "rds:StartDBInstanceAutomatedBackupsReplication", + "rds:StopDBInstanceAutomatedBackupsReplication", + "secretsmanager:CreateSecret", + "secretsmanager:TagResource" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/DBInstanceIdentifier" + ], + "properties": { + "AllocatedStorage": { + "description": "The amount of storage in gibibytes (GiB) to be initially allocated for the database instance.\n If any value is set in the ``Iops`` parameter, ``AllocatedStorage`` must be at least 100 GiB, which corresponds to the minimum Iops value of 1,000. If you increase the ``Iops`` value (in 1,000 IOPS increments), then you must also increase the ``AllocatedStorage`` value (in 100-GiB increments). \n *Amazon Aurora* \n Not applicable. Aurora cluster volumes automatically grow as the amount of data in your database increases, though you are only charged for the space that you use in an Aurora cluster volume.\n *Db2* \n Constraints to the amount of storage for each storage type are the following:\n + General Purpose (SSD) storage (gp3): Must be an integer from 20 to 64000.\n + Provisioned IOPS storage (io1): Must be an integer from 100 to 64000.\n \n *MySQL* \n Constraints to the amount of storage for each storage type are the following: \n + General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.\n + Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.\n + Magnetic storage (standard): Must be an integer from 5 to 3072.\n \n *MariaDB* \n Constraints to the amount of storage for each storage type are the following: \n + General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.\n + Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.\n + Magnetic storage (standard): Must be an integer from 5 to 3072.\n \n *PostgreSQL* \n Constraints to the amount of storage for each storage type are the following: \n + General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.\n + Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.\n + Magnetic storage (standard): Must be an integer from 5 to 3072.\n \n *Oracle* \n Constraints to the amount of storage for each storage type are the following: \n + General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.\n + Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.\n + Magnetic storage (standard): Must be an integer from 10 to 3072.\n \n *SQL Server* \n Constraints to the amount of storage for each storage type are the following: \n + General Purpose (SSD) storage (gp2):\n + Enterprise and Standard editions: Must be an integer from 20 to 16384.\n + Web and Express editions: Must be an integer from 20 to 16384.\n \n + Provisioned IOPS storage (io1):\n + Enterprise and Standard editions: Must be an integer from 20 to 16384.\n + Web and Express editions: Must be an integer from 20 to 16384.\n \n + Magnetic storage (standard):\n + Enterprise and Standard editions: Must be an integer from 20 to 1024.\n + Web and Express editions: Must be an integer from 20 to 1024.", + "pattern": "^[0-9]*$", + "type": "string" + }, + "AllowMajorVersionUpgrade": { + "description": "A value that indicates whether major version upgrades are allowed. Changing this parameter doesn't result in an outage and the change is asynchronously applied as soon as possible.\n Constraints: Major version upgrades must be allowed when specifying a value for the ``EngineVersion`` parameter that is a different major version than the DB instance's current version.", + "type": "boolean" + }, + "ApplyImmediately": { + "description": "Specifies whether changes to the DB instance and any pending modifications are applied immediately, regardless of the ``PreferredMaintenanceWindow`` setting. If set to ``false``, changes are applied during the next maintenance window. Until RDS applies the changes, the DB instance remains in a drift state. As a result, the configuration doesn't fully reflect the requested modifications and temporarily diverges from the intended state.\n In addition to the settings described in [Modifying a DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.Modifying.html), this property also determines whether the DB instance reboots when a static parameter is modified in the associated DB parameter group.\n Default: ``true``", + "type": "boolean" + }, + "AssociatedRoles": { + "description": "The IAMlong (IAM) roles associated with the DB instance. \n *Amazon Aurora* \n Not applicable. The associated roles are managed by the DB cluster.", + "items": { + "$ref": "#/definitions/DBInstanceRole" + }, + "type": "array" + }, + "AutoMinorVersionUpgrade": { + "description": "A value that indicates whether minor engine upgrades are applied automatically to the DB instance during the maintenance window. By default, minor engine upgrades are applied automatically.", + "type": "boolean" + }, + "AutomaticBackupReplicationKmsKeyId": { + "description": "The AWS KMS key identifier for encryption of the replicated automated backups. The KMS key ID is the Amazon Resource Name (ARN) for the KMS encryption key in the destination AWS-Region, for example, ``arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE``.", + "type": "string" + }, + "AutomaticBackupReplicationRegion": { + "description": "The AWS-Region associated with the automated backup.", + "type": "string" + }, + "AutomaticBackupReplicationRetentionPeriod": { + "description": "The retention period for automated backups in a different AWS Region. Use this parameter to set a unique retention period that only applies to cross-Region automated backups. To enable automated backups in a different Region, specify a positive value for the ``AutomaticBackupReplicationRegion`` parameter. \n If not specified, this parameter defaults to the value of the ``BackupRetentionPeriod`` parameter. The maximum allowed value is 35.", + "minimum": 1, + "type": "integer" + }, + "AvailabilityZone": { + "description": "The Availability Zone (AZ) where the database will be created. For information on AWS-Regions and Availability Zones, see [Regions and Availability Zones](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html).\n For Amazon Aurora, each Aurora DB cluster hosts copies of its storage in three separate Availability Zones. Specify one of these Availability Zones. Aurora automatically chooses an appropriate Availability Zone if you don't specify one.\n Default: A random, system-chosen Availability Zone in the endpoint's AWS-Region.\n Constraints:\n + The ``AvailabilityZone`` parameter can't be specified if the DB instance is a Multi-AZ deployment.\n + The specified Availability Zone must be in the same AWS-Region as the current endpoint.\n \n Example: ``us-east-1d``", + "type": "string" + }, + "BackupRetentionPeriod": { + "description": "The number of days for which automated backups are retained. Setting this parameter to a positive number enables backups. Setting this parameter to 0 disables automated backups.\n *Amazon Aurora* \n Not applicable. The retention period for automated backups is managed by the DB cluster.\n Default: 1\n Constraints:\n + Must be a value from 0 to 35\n + Can't be set to 0 if the DB instance is a source to read replicas", + "minimum": 0, + "type": "integer" + }, + "CACertificateIdentifier": { + "description": "The identifier of the CA certificate for this DB instance.\n For more information, see [Using SSL/TLS to encrypt a connection to a DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html) in the *Amazon RDS User Guide* and [Using SSL/TLS to encrypt a connection to a DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html) in the *Amazon Aurora User Guide*.", + "type": "string" + }, + "CertificateDetails": { + "$ref": "#/definitions/CertificateDetails", + "description": "" + }, + "CertificateRotationRestart": { + "description": "Specifies whether the DB instance is restarted when you rotate your SSL/TLS certificate.\n By default, the DB instance is restarted when you rotate your SSL/TLS certificate. The certificate is not updated until the DB instance is restarted.\n Set this parameter only if you are *not* using SSL/TLS to connect to the DB instance.\n If you are using SSL/TLS to connect to the DB instance, follow the appropriate instructions for your DB engine to rotate your SSL/TLS certificate:\n + For more information about rotating your SSL/TLS certificate for RDS DB engines, see [Rotating Your SSL/TLS Certificate.](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html) in the *Amazon RDS User Guide.* \n + For more information about rotating your SSL/TLS certificate for Aurora DB engines, see [Rotating Your SSL/TLS Certificate](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html) in the *Amazon Aurora User Guide*.\n \n This setting doesn't apply to RDS Custom DB instances.", + "type": "boolean" + }, + "CharacterSetName": { + "description": "For supported engines, indicates that the DB instance should be associated with the specified character set.\n *Amazon Aurora* \n Not applicable. The character set is managed by the DB cluster. For more information, see [AWS::RDS::DBCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html).", + "type": "string" + }, + "CopyTagsToSnapshot": { + "description": "Specifies whether to copy tags from the DB instance to snapshots of the DB instance. By default, tags are not copied.\n This setting doesn't apply to Amazon Aurora DB instances. Copying tags to snapshots is managed by the DB cluster. Setting this value for an Aurora DB instance has no effect on the DB cluster setting.", + "type": "boolean" + }, + "CustomIAMInstanceProfile": { + "description": "The instance profile associated with the underlying Amazon EC2 instance of an RDS Custom DB instance.\n This setting is required for RDS Custom.\n Constraints:\n + The profile must exist in your account.\n + The profile must have an IAM role that Amazon EC2 has permissions to assume.\n + The instance profile name and the associated IAM role name must start with the prefix ``AWSRDSCustom``.\n \n For the list of permissions required for the IAM role, see [Configure IAM and your VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-setup-orcl.html#custom-setup-orcl.iam-vpc) in the *Amazon RDS User Guide*.", + "type": "string" + }, + "DBClusterIdentifier": { + "description": "The identifier of the DB cluster that this DB instance will belong to.\n This setting doesn't apply to RDS Custom DB instances.", + "type": "string" + }, + "DBClusterSnapshotIdentifier": { + "description": "The identifier for the Multi-AZ DB cluster snapshot to restore from.\n For more information on Multi-AZ DB clusters, see [Multi-AZ DB cluster deployments](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html) in the *Amazon RDS User Guide*.\n Constraints:\n + Must match the identifier of an existing Multi-AZ DB cluster snapshot.\n + Can't be specified when ``DBSnapshotIdentifier`` is specified.\n + Must be specified when ``DBSnapshotIdentifier`` isn't specified.\n + If you are restoring from a shared manual Multi-AZ DB cluster snapshot, the ``DBClusterSnapshotIdentifier`` must be the ARN of the shared snapshot.\n + Can't be the identifier of an Aurora DB cluster snapshot.", + "type": "string" + }, + "DBInstanceArn": { + "description": "", + "type": "string" + }, + "DBInstanceClass": { + "description": "The compute and memory capacity of the DB instance, for example ``db.m5.large``. Not all DB instance classes are available in all AWS-Regions, or for all database engines. For the full list of DB instance classes, and availability for your engine, see [DB instance classes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html) in the *Amazon RDS User Guide* or [Aurora DB instance classes](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html) in the *Amazon Aurora User Guide*.", + "type": "string" + }, + "DBInstanceIdentifier": { + "description": "A name for the DB instance. If you specify a name, AWS CloudFormation converts it to lowercase. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the DB instance. For more information, see [Name Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).\n For information about constraints that apply to DB instance identifiers, see [Naming constraints in Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Constraints) in the *Amazon RDS User Guide*.\n If you specify a name, you can't perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", + "maxLength": 63, + "minLength": 1, + "pattern": "^$|^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "DBName": { + "description": "The meaning of this parameter differs according to the database engine you use.\n If you specify the ``DBSnapshotIdentifier`` property, this property only applies to RDS for Oracle.\n *Amazon Aurora* \n Not applicable. The database name is managed by the DB cluster.\n *Db2* \n The name of the database to create when the DB instance is created. If this parameter isn't specified, no database is created in the DB instance.\n Constraints:\n + Must contain 1 to 64 letters or numbers.\n + Must begin with a letter. Subsequent characters can be letters, underscores, or digits (0-9).\n + Can't be a word reserved by the specified database engine.\n \n *MySQL* \n The name of the database to create when the DB instance is created. If this parameter is not specified, no database is created in the DB instance.\n Constraints:\n + Must contain 1 to 64 letters or numbers.\n + Can't be a word reserved by the specified database engine\n \n *MariaDB* \n The name of the database to create when the DB instance is created. If this parameter is not specified, no database is created in the DB instance.\n Constraints:\n + Must contain 1 to 64 letters or numbers.\n + Can't be a word reserved by the specified database engine\n \n *PostgreSQL* \n The name of the database to create when the DB instance is created. If this parameter is not specified, the default ``postgres`` database is created in the DB instance.\n Constraints:\n + Must begin with a letter. Subsequent characters can be letters, underscores, or digits (0-9).\n + Must contain 1 to 63 characters.\n + Can't be a word reserved by the specified database engine\n \n *Oracle* \n The Oracle System ID (SID) of the created DB instance. If you specify ``null``, the default value ``ORCL`` is used. You can't specify the string NULL, or any other reserved word, for ``DBName``. \n Default: ``ORCL`` \n Constraints:\n + Can't be longer than 8 characters\n \n *SQL Server* \n Not applicable. Must be null.", + "type": "string" + }, + "DBParameterGroupName": { + "description": "The name of an existing DB parameter group or a reference to an [AWS::RDS::DBParameterGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbparametergroup.html) resource created in the template.\n To list all of the available DB parameter group names, use the following command:\n ``aws rds describe-db-parameter-groups --query \"DBParameterGroups[].DBParameterGroupName\" --output text`` \n If any of the data members of the referenced parameter group are changed during an update, the DB instance might need to be restarted, which causes some interruption. If the parameter group contains static parameters, whether they were changed or not, an update triggers a reboot.\n If you don't specify a value for ``DBParameterGroupName`` property, the default DB parameter group for the specified engine and engine version is used.", + "type": "string" + }, + "DBSecurityGroups": { + "description": "A list of the DB security groups to assign to the DB instance. The list can include both the name of existing DB security groups or references to AWS::RDS::DBSecurityGroup resources created in the template.\n If you set DBSecurityGroups, you must not set VPCSecurityGroups, and vice versa. Also, note that the DBSecurityGroups property exists only for backwards compatibility with older regions and is no longer recommended for providing security information to an RDS DB instance. Instead, use VPCSecurityGroups.\n If you specify this property, AWS CloudFormation sends only the following properties (if specified) to Amazon RDS during create operations:\n + ``AllocatedStorage`` \n + ``AutoMinorVersionUpgrade`` \n + ``AvailabilityZone`` \n + ``BackupRetentionPeriod`` \n + ``CharacterSetName`` \n + ``DBInstanceClass`` \n + ``DBName`` \n + ``DBParameterGroupName`` \n + ``DBSecurityGroups`` \n + ``DBSubnetGroupName`` \n + ``Engine`` \n + ``EngineVersion`` \n + ``Iops`` \n + ``LicenseModel`` \n + ``MasterUsername`` \n + ``MasterUserPassword`` \n + ``MultiAZ`` \n + ``OptionGroupName`` \n + ``PreferredBackupWindow`` \n + ``PreferredMaintenanceWindow`` \n \n All other properties are ignored. Specify a virtual private cloud (VPC) security group if you want to submit other properties, such as ``StorageType``, ``StorageEncrypted``, or ``KmsKeyId``. If you're already using the ``DBSecurityGroups`` property, you can't use these other properties by updating your DB instance to use a VPC security group. You must recreate the DB instance.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "DBSnapshotIdentifier": { + "description": "The name or Amazon Resource Name (ARN) of the DB snapshot that's used to restore the DB instance. If you're restoring from a shared manual DB snapshot, you must specify the ARN of the snapshot.\n By specifying this property, you can create a DB instance from the specified DB snapshot. If the ``DBSnapshotIdentifier`` property is an empty string or the ``AWS::RDS::DBInstance`` declaration has no ``DBSnapshotIdentifier`` property, AWS CloudFormation creates a new database. If the property contains a value (other than an empty string), AWS CloudFormation creates a database from the specified snapshot. If a snapshot with the specified name doesn't exist, AWS CloudFormation can't create the database and it rolls back the stack.\n Some DB instance properties aren't valid when you restore from a snapshot, such as the ``MasterUsername`` and ``MasterUserPassword`` properties, and the point-in-time recovery properties ``RestoreTime`` and ``UseLatestRestorableTime``. For information about the properties that you can specify, see the [RestoreDBInstanceFromDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html) action in the *Amazon RDS API Reference*.\n After you restore a DB instance with a ``DBSnapshotIdentifier`` property, you must specify the same ``DBSnapshotIdentifier`` property for any future updates to the DB instance. When you specify this property for an update, the DB instance is not restored from the DB snapshot again, and the data in the database is not changed. However, if you don't specify the ``DBSnapshotIdentifier`` property, an empty DB instance is created, and the original DB instance is deleted. If you specify a property that is different from the previous snapshot restore property, a new DB instance is restored from the specified ``DBSnapshotIdentifier`` property, and the original DB instance is deleted.\n If you specify the ``DBSnapshotIdentifier`` property to restore a DB instance (as opposed to specifying it for DB instance updates), then don't specify the following properties:\n + ``CharacterSetName`` \n + ``DBClusterIdentifier`` \n + ``DBName`` \n + ``KmsKeyId`` \n + ``MasterUsername`` \n + ``MasterUserPassword`` \n + ``PromotionTier`` \n + ``SourceDBInstanceIdentifier`` \n + ``SourceRegion`` \n + ``StorageEncrypted`` (for an unencrypted snapshot)\n + ``Timezone`` \n \n *Amazon Aurora* \n Not applicable. Snapshot restore is managed by the DB cluster.", + "type": "string" + }, + "DBSubnetGroupName": { + "description": "A DB subnet group to associate with the DB instance. If you update this value, the new subnet group must be a subnet group in a new VPC. \n If you don't specify a DB subnet group, RDS uses the default DB subnet group if one exists. If a default DB subnet group does not exist, and you don't specify a ``DBSubnetGroupName``, the DB instance fails to launch. \n For more information about using Amazon RDS in a VPC, see [Amazon VPC and Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html) in the *Amazon RDS User Guide*. \n This setting doesn't apply to Amazon Aurora DB instances. The DB subnet group is managed by the DB cluster. If specified, the setting must match the DB cluster setting.", + "type": "string" + }, + "DBSystemId": { + "description": "The Oracle system identifier (SID), which is the name of the Oracle database instance that manages your database files. In this context, the term \"Oracle database instance\" refers exclusively to the system global area (SGA) and Oracle background processes. If you don't specify a SID, the value defaults to ``RDSCDB``. The Oracle SID is also the name of your CDB.", + "type": "string" + }, + "DatabaseInsightsMode": { + "description": "", + "type": "string" + }, + "DbiResourceId": { + "description": "", + "type": "string" + }, + "DedicatedLogVolume": { + "description": "Indicates whether the DB instance has a dedicated log volume (DLV) enabled.", + "type": "boolean" + }, + "DeleteAutomatedBackups": { + "description": "A value that indicates whether to remove automated backups immediately after the DB instance is deleted. This parameter isn't case-sensitive. The default is to remove automated backups immediately after the DB instance is deleted.\n *Amazon Aurora* \n Not applicable. When you delete a DB cluster, all automated backups for that DB cluster are deleted and can't be recovered. Manual DB cluster snapshots of the DB cluster are not deleted.", + "type": "boolean" + }, + "DeletionProtection": { + "description": "Specifies whether the DB instance has deletion protection enabled. The database can't be deleted when deletion protection is enabled. By default, deletion protection isn't enabled. For more information, see [Deleting a DB Instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html).\n This setting doesn't apply to Amazon Aurora DB instances. You can enable or disable deletion protection for the DB cluster. For more information, see ``CreateDBCluster``. DB instances in a DB cluster can be deleted even when deletion protection is enabled for the DB cluster.", + "type": "boolean" + }, + "Domain": { + "description": "The Active Directory directory ID to create the DB instance in. Currently, only Db2, MySQL, Microsoft SQL Server, Oracle, and PostgreSQL DB instances can be created in an Active Directory Domain.\n For more information, see [Kerberos Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html) in the *Amazon RDS User Guide*.", + "type": "string" + }, + "DomainAuthSecretArn": { + "description": "The ARN for the Secrets Manager secret with the credentials for the user joining the domain.\n Example: ``arn:aws:secretsmanager:region:account-number:secret:myselfmanagedADtestsecret-123456``", + "type": "string" + }, + "DomainDnsIps": { + "description": "The IPv4 DNS IP addresses of your primary and secondary Active Directory domain controllers.\n Constraints:\n + Two IP addresses must be provided. If there isn't a secondary domain controller, use the IP address of the primary domain controller for both entries in the list.\n \n Example: ``123.124.125.126,234.235.236.237``", + "items": { + "type": "string" + }, + "type": "array" + }, + "DomainFqdn": { + "description": "The fully qualified domain name (FQDN) of an Active Directory domain.\n Constraints:\n + Can't be longer than 64 characters.\n \n Example: ``mymanagedADtest.mymanagedAD.mydomain``", + "type": "string" + }, + "DomainIAMRoleName": { + "description": "The name of the IAM role to use when making API calls to the Directory Service.\n This setting doesn't apply to the following DB instances:\n + Amazon Aurora (The domain is managed by the DB cluster.)\n + RDS Custom", + "type": "string" + }, + "DomainOu": { + "description": "The Active Directory organizational unit for your DB instance to join.\n Constraints:\n + Must be in the distinguished name format.\n + Can't be longer than 64 characters.\n \n Example: ``OU=mymanagedADtestOU,DC=mymanagedADtest,DC=mymanagedAD,DC=mydomain``", + "type": "string" + }, + "EnableCloudwatchLogsExports": { + "description": "The list of log types that need to be enabled for exporting to CloudWatch Logs. The values in the list depend on the DB engine being used. For more information, see [Publishing Database Logs to Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch) in the *Amazon Relational Database Service User Guide*.\n *Amazon Aurora* \n Not applicable. CloudWatch Logs exports are managed by the DB cluster. \n *Db2* \n Valid values: ``diag.log``, ``notify.log`` \n *MariaDB* \n Valid values: ``audit``, ``error``, ``general``, ``slowquery`` \n *Microsoft SQL Server* \n Valid values: ``agent``, ``error`` \n *MySQL* \n Valid values: ``audit``, ``error``, ``general``, ``slowquery`` \n *Oracle* \n Valid values: ``alert``, ``audit``, ``listener``, ``trace``, ``oemagent`` \n *PostgreSQL* \n Valid values: ``postgresql``, ``upgrade``", + "items": { + "type": "string" + }, + "type": "array" + }, + "EnableIAMDatabaseAuthentication": { + "description": "A value that indicates whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts. By default, mapping is disabled.\n This property is supported for RDS for MariaDB, RDS for MySQL, and RDS for PostgreSQL. For more information, see [IAM Database Authentication for MariaDB, MySQL, and PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html) in the *Amazon RDS User Guide.* \n *Amazon Aurora* \n Not applicable. Mapping AWS IAM accounts to database accounts is managed by the DB cluster.", + "type": "boolean" + }, + "EnablePerformanceInsights": { + "description": "Specifies whether to enable Performance Insights for the DB instance. For more information, see [Using Amazon Performance Insights](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) in the *Amazon RDS User Guide*.\n This setting doesn't apply to RDS Custom DB instances.", + "type": "boolean" + }, + "Endpoint": { + "$ref": "#/definitions/Endpoint", + "description": "" + }, + "Engine": { + "description": "The name of the database engine to use for this DB instance. Not every database engine is available in every AWS Region.\n This property is required when creating a DB instance.\n You can convert an Oracle database from the non-CDB architecture to the container database (CDB) architecture by updating the ``Engine`` value in your templates from ``oracle-ee`` to ``oracle-ee-cdb`` or from ``oracle-se2`` to ``oracle-se2-cdb``. Converting to the CDB architecture requires an interruption.\n Valid Values:\n + ``aurora-mysql`` (for Aurora MySQL DB instances)\n + ``aurora-postgresql`` (for Aurora PostgreSQL DB instances)\n + ``custom-oracle-ee`` (for RDS Custom for Oracle DB instances)\n + ``custom-oracle-ee-cdb`` (for RDS Custom for Oracle DB instances)\n + ``custom-sqlserver-ee`` (for RDS Custom for SQL Server DB instances)\n + ``custom-sqlserver-se`` (for RDS Custom for SQL Server DB instances)\n + ``custom-sqlserver-web`` (for RDS Custom for SQL Server DB instances)\n + ``db2-ae`` \n + ``db2-se`` \n + ``mariadb`` \n + ``mysql`` \n + ``oracle-ee`` \n + ``oracle-ee-cdb`` \n + ``oracle-se2`` \n + ``oracle-se2-cdb`` \n + ``postgres`` \n + ``sqlserver-ee`` \n + ``sqlserver-se`` \n + ``sqlserver-ex`` \n + ``sqlserver-web``", + "type": "string" + }, + "EngineLifecycleSupport": { + "description": "The life cycle type for this DB instance.\n By default, this value is set to ``open-source-rds-extended-support``, which enrolls your DB instance into Amazon RDS Extended Support. At the end of standard support, you can avoid charges for Extended Support by setting the value to ``open-source-rds-extended-support-disabled``. In this case, creating the DB instance will fail if the DB major version is past its end of standard support date.\n This setting applies only to RDS for MySQL and RDS for PostgreSQL. For Amazon Aurora DB instances, the life cycle type is managed by the DB cluster.\n You can use this setting to enroll your DB instance into Amazon RDS Extended Support. With RDS Extended Support, you can run the selected major engine version on your DB instance past the end of standard support for that engine version. For more information, see [Using Amazon RDS Extended Support](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html) in the *Amazon RDS User Guide*.\n Valid Values: ``open-source-rds-extended-support | open-source-rds-extended-support-disabled`` \n Default: ``open-source-rds-extended-support``", + "type": "string" + }, + "EngineVersion": { + "description": "The version number of the database engine to use.\n For a list of valid engine versions, use the ``DescribeDBEngineVersions`` action.\n The following are the database engines and links to information about the major and minor versions that are available with Amazon RDS. Not every database engine is available for every AWS Region.\n *Amazon Aurora* \n Not applicable. The version number of the database engine to be used by the DB instance is managed by the DB cluster.\n *Db2* \n See [Amazon RDS for Db2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Db2.html#Db2.Concepts.VersionMgmt) in the *Amazon RDS User Guide.* \n *MariaDB* \n See [MariaDB on Amazon RDS Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html#MariaDB.Concepts.VersionMgmt) in the *Amazon RDS User Guide.* \n *Microsoft SQL Server* \n See [Microsoft SQL Server Versions on Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.VersionSupport) in the *Amazon RDS User Guide.* \n *MySQL* \n See [MySQL on Amazon RDS Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt) in the *Amazon RDS User Guide.* \n *Oracle* \n See [Oracle Database Engine Release Notes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.PatchComposition.html) in the *Amazon RDS User Guide.* \n *PostgreSQL* \n See [Supported PostgreSQL Database Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.DBVersions) in the *Amazon RDS User Guide.*", + "type": "string" + }, + "Iops": { + "description": "The number of I/O operations per second (IOPS) that the database provisions. The value must be equal to or greater than 1000. \n If you specify this property, you must follow the range of allowed ratios of your requested IOPS rate to the amount of storage that you allocate (IOPS to allocated storage). For example, you can provision an Oracle database instance with 1000 IOPS and 200 GiB of storage (a ratio of 5:1), or specify 2000 IOPS with 200 GiB of storage (a ratio of 10:1). For more information, see [Amazon RDS Provisioned IOPS Storage to Improve Performance](https://docs.aws.amazon.com/AmazonRDS/latest/DeveloperGuide/CHAP_Storage.html#USER_PIOPS) in the *Amazon RDS User Guide*.\n If you specify ``io1`` for the ``StorageType`` property, then you must also specify the ``Iops`` property.\n Constraints:\n + For RDS for Db2, MariaDB, MySQL, Oracle, and PostgreSQL - Must be a multiple between .5 and 50 of the storage amount for the DB instance.\n + For RDS for SQL Server - Must be a multiple between 1 and 50 of the storage amount for the DB instance.", + "type": "integer" + }, + "KmsKeyId": { + "description": "The ARN of the AWS KMS key that's used to encrypt the DB instance, such as ``arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef``. If you enable the StorageEncrypted property but don't specify this property, AWS CloudFormation uses the default KMS key. If you specify this property, you must set the StorageEncrypted property to true. \n If you specify the ``SourceDBInstanceIdentifier`` or ``SourceDbiResourceId`` property, don't specify this property. The value is inherited from the source DB instance, and if the DB instance is encrypted, the specified ``KmsKeyId`` property is used. However, if the source DB instance is in a different AWS Region, you must specify a KMS key ID.\n If you specify the ``SourceDBInstanceAutomatedBackupsArn`` property, don't specify this property. The value is inherited from the source DB instance automated backup, and if the automated backup is encrypted, the specified ``KmsKeyId`` property is used.\n If you create an encrypted read replica in a different AWS Region, then you must specify a KMS key for the destination AWS Region. KMS encryption keys are specific to the region that they're created in, and you can't use encryption keys from one region in another region.\n If you specify the ``DBSnapshotIdentifier`` property, don't specify this property. The ``StorageEncrypted`` property value is inherited from the snapshot. If the DB instance is encrypted, the specified ``KmsKeyId`` property is also inherited from the snapshot.\n If you specify ``DBSecurityGroups``, AWS CloudFormation ignores this property. To specify both a security group and this property, you must use a VPC security group. For more information about Amazon RDS and VPC, see [Using Amazon RDS with Amazon VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html) in the *Amazon RDS User Guide*.\n *Amazon Aurora* \n Not applicable. The KMS key identifier is managed by the DB cluster.", + "type": "string" + }, + "LicenseModel": { + "description": "License model information for this DB instance.\n Valid Values:\n + Aurora MySQL - ``general-public-license`` \n + Aurora PostgreSQL - ``postgresql-license`` \n + RDS for Db2 - ``bring-your-own-license``. For more information about RDS for Db2 licensing, see [](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-licensing.html) in the *Amazon RDS User Guide.* \n + RDS for MariaDB - ``general-public-license`` \n + RDS for Microsoft SQL Server - ``license-included`` \n + RDS for MySQL - ``general-public-license`` \n + RDS for Oracle - ``bring-your-own-license`` or ``license-included`` \n + RDS for PostgreSQL - ``postgresql-license`` \n \n If you've specified ``DBSecurityGroups`` and then you update the license model, AWS CloudFormation replaces the underlying DB instance. This will incur some interruptions to database availability.", + "type": "string" + }, + "ManageMasterUserPassword": { + "description": "Specifies whether to manage the master user password with AWS Secrets Manager.\n For more information, see [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the *Amazon RDS User Guide.* \n Constraints:\n + Can't manage the master user password with AWS Secrets Manager if ``MasterUserPassword`` is specified.", + "type": "boolean" + }, + "MasterUserPassword": { + "description": "The password for the master user. The password can include any printable ASCII character except \"/\", \"\"\", or \"@\".\n *Amazon Aurora* \n Not applicable. The password for the master user is managed by the DB cluster.\n *RDS for Db2* \n Must contain from 8 to 255 characters.\n *RDS for MariaDB* \n Constraints: Must contain from 8 to 41 characters.\n *RDS for Microsoft SQL Server* \n Constraints: Must contain from 8 to 128 characters.\n *RDS for MySQL* \n Constraints: Must contain from 8 to 41 characters.\n *RDS for Oracle* \n Constraints: Must contain from 8 to 30 characters.\n *RDS for PostgreSQL* \n Constraints: Must contain from 8 to 128 characters.", + "type": "string" + }, + "MasterUserSecret": { + "$ref": "#/definitions/MasterUserSecret", + "description": "The secret managed by RDS in AWS Secrets Manager for the master user password.\n For more information, see [Password management with Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the *Amazon RDS User Guide.*" + }, + "MasterUsername": { + "description": "The master user name for the DB instance.\n If you specify the ``SourceDBInstanceIdentifier`` or ``DBSnapshotIdentifier`` property, don't specify this property. The value is inherited from the source DB instance or snapshot.\n When migrating a self-managed Db2 database, we recommend that you use the same master username as your self-managed Db2 instance name.\n *Amazon Aurora* \n Not applicable. The name for the master user is managed by the DB cluster. \n *RDS for Db2* \n Constraints:\n + Must be 1 to 16 letters or numbers.\n + First character must be a letter.\n + Can't be a reserved word for the chosen database engine.\n \n *RDS for MariaDB* \n Constraints:\n + Must be 1 to 16 letters or numbers.\n + Can't be a reserved word for the chosen database engine.\n \n *RDS for Microsoft SQL Server* \n Constraints:\n + Must be 1 to 128 letters or numbers.\n + First character must be a letter.\n + Can't be a reserved word for the chosen database engine.\n \n *RDS for MySQL* \n Constraints:\n + Must be 1 to 16 letters or numbers.\n + First character must be a letter.\n + Can't be a reserved word for the chosen database engine.\n \n *RDS for Oracle* \n Constraints:\n + Must be 1 to 30 letters or numbers.\n + First character must be a letter.\n + Can't be a reserved word for the chosen database engine.\n \n *RDS for PostgreSQL* \n Constraints:\n + Must be 1 to 63 letters or numbers.\n + First character must be a letter.\n + Can't be a reserved word for the chosen database engine.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]{0,127}$", + "type": "string" + }, + "MaxAllocatedStorage": { + "description": "The upper limit in gibibytes (GiB) to which Amazon RDS can automatically scale the storage of the DB instance.\n For more information about this setting, including limitations that apply to it, see [Managing capacity automatically with Amazon RDS storage autoscaling](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling) in the *Amazon RDS User Guide*.\n This setting doesn't apply to the following DB instances:\n + Amazon Aurora (Storage is managed by the DB cluster.)\n + RDS Custom", + "type": "integer" + }, + "MonitoringInterval": { + "description": "The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB instance. To disable collection of Enhanced Monitoring metrics, specify ``0``.\n If ``MonitoringRoleArn`` is specified, then you must set ``MonitoringInterval`` to a value other than ``0``.\n This setting doesn't apply to RDS Custom DB instances.\n Valid Values: ``0 | 1 | 5 | 10 | 15 | 30 | 60`` \n Default: ``0``", + "type": "integer" + }, + "MonitoringRoleArn": { + "description": "The ARN for the IAM role that permits RDS to send enhanced monitoring metrics to Amazon CloudWatch Logs. For example, ``arn:aws:iam:123456789012:role/emaccess``. For information on creating a monitoring role, see [Setting Up and Enabling Enhanced Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.Enabling) in the *Amazon RDS User Guide*.\n If ``MonitoringInterval`` is set to a value other than ``0``, then you must supply a ``MonitoringRoleArn`` value.\n This setting doesn't apply to RDS Custom DB instances.", + "type": "string" + }, + "MultiAZ": { + "description": "Specifies whether the DB instance is a Multi-AZ deployment. You can't set the ``AvailabilityZone`` parameter if the DB instance is a Multi-AZ deployment.\n This setting doesn't apply to the following DB instances:\n + Amazon Aurora (DB instance Availability Zones (AZs) are managed by the DB cluster.)\n + RDS Custom", + "type": "boolean" + }, + "NcharCharacterSetName": { + "description": "The name of the NCHAR character set for the Oracle DB instance.\n This setting doesn't apply to RDS Custom DB instances.", + "type": "string" + }, + "NetworkType": { + "description": "The network type of the DB instance.\n Valid values:\n + ``IPV4`` \n + ``DUAL`` \n \n The network type is determined by the ``DBSubnetGroup`` specified for the DB instance. A ``DBSubnetGroup`` can support only the IPv4 protocol or the IPv4 and IPv6 protocols (``DUAL``).\n For more information, see [Working with a DB instance in a VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html) in the *Amazon RDS User Guide.*", + "type": "string" + }, + "OptionGroupName": { + "description": "Indicates that the DB instance should be associated with the specified option group.\n Permanent options, such as the TDE option for Oracle Advanced Security TDE, can't be removed from an option group. Also, that option group can't be removed from a DB instance once it is associated with a DB instance.", + "type": "string" + }, + "PerformanceInsightsKMSKeyId": { + "description": "The AWS KMS key identifier for encryption of Performance Insights data.\n The KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key.\n If you do not specify a value for ``PerformanceInsightsKMSKeyId``, then Amazon RDS uses your default KMS key. There is a default KMS key for your AWS account. Your AWS account has a different default KMS key for each AWS Region.\n For information about enabling Performance Insights, see [EnablePerformanceInsights](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-enableperformanceinsights).", + "type": "string" + }, + "PerformanceInsightsRetentionPeriod": { + "description": "The number of days to retain Performance Insights data. When creating a DB instance without enabling Performance Insights, you can't specify the parameter ``PerformanceInsightsRetentionPeriod``.\n This setting doesn't apply to RDS Custom DB instances.\n Valid Values:\n + ``7`` \n + *month* * 31, where *month* is a number of months from 1-23. Examples: ``93`` (3 months * 31), ``341`` (11 months * 31), ``589`` (19 months * 31)\n + ``731`` \n \n Default: ``7`` days\n If you specify a retention period that isn't valid, such as ``94``, Amazon RDS returns an error.", + "type": "integer" + }, + "Port": { + "description": "The port number on which the database accepts connections.\n This setting doesn't apply to Aurora DB instances. The port number is managed by the cluster.\n Valid Values: ``1150-65535`` \n Default:\n + RDS for Db2 - ``50000`` \n + RDS for MariaDB - ``3306`` \n + RDS for Microsoft SQL Server - ``1433`` \n + RDS for MySQL - ``3306`` \n + RDS for Oracle - ``1521`` \n + RDS for PostgreSQL - ``5432`` \n \n Constraints:\n + For RDS for Microsoft SQL Server, the value can't be ``1234``, ``1434``, ``3260``, ``3343``, ``3389``, ``47001``, or ``49152-49156``.", + "pattern": "^\\d*$", + "type": "string" + }, + "PreferredBackupWindow": { + "description": "The daily time range during which automated backups are created if automated backups are enabled, using the ``BackupRetentionPeriod`` parameter. For more information, see [Backup Window](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow) in the *Amazon RDS User Guide.* \n Constraints:\n + Must be in the format ``hh24:mi-hh24:mi``.\n + Must be in Universal Coordinated Time (UTC).\n + Must not conflict with the preferred maintenance window.\n + Must be at least 30 minutes.\n \n *Amazon Aurora* \n Not applicable. The daily time range for creating automated backups is managed by the DB cluster.", + "type": "string" + }, + "PreferredMaintenanceWindow": { + "description": "The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).\n Format: ``ddd:hh24:mi-ddd:hh24:mi`` \n The default is a 30-minute window selected at random from an 8-hour block of time for each AWS Region, occurring on a random day of the week. To see the time blocks available, see [Maintaining a DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#AdjustingTheMaintenanceWindow) in the *Amazon RDS User Guide.* \n This property applies when AWS CloudFormation initially creates the DB instance. If you use AWS CloudFormation to update the DB instance, those updates are applied immediately.\n Constraints: Minimum 30-minute window.", + "type": "string" + }, + "ProcessorFeatures": { + "description": "The number of CPU cores and the number of threads per core for the DB instance class of the DB instance.\n This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.", + "items": { + "$ref": "#/definitions/ProcessorFeature" + }, + "type": "array" + }, + "PromotionTier": { + "description": "The order of priority in which an Aurora Replica is promoted to the primary instance after a failure of the existing primary instance. For more information, see [Fault Tolerance for an Aurora DB Cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.AuroraHighAvailability.html#Aurora.Managing.FaultTolerance) in the *Amazon Aurora User Guide*.\n This setting doesn't apply to RDS Custom DB instances.\n Default: ``1`` \n Valid Values: ``0 - 15``", + "minimum": 0, + "type": "integer" + }, + "PubliclyAccessible": { + "description": "Indicates whether the DB instance is an internet-facing instance. If you specify true, AWS CloudFormation creates an instance with a publicly resolvable DNS name, which resolves to a public IP address. If you specify false, AWS CloudFormation creates an internal instance with a DNS name that resolves to a private IP address. \n The default behavior value depends on your VPC setup and the database subnet group. For more information, see the ``PubliclyAccessible`` parameter in the [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) in the *Amazon RDS API Reference*.", + "type": "boolean" + }, + "ReplicaMode": { + "description": "The open mode of an Oracle read replica. For more information, see [Working with Oracle Read Replicas for Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-read-replicas.html) in the *Amazon RDS User Guide*.\n This setting is only supported in RDS for Oracle.\n Default: ``open-read-only`` \n Valid Values: ``open-read-only`` or ``mounted``", + "type": "string" + }, + "RestoreTime": { + "description": "The date and time to restore from. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*.\n Constraints:\n + Must be a time in Universal Coordinated Time (UTC) format.\n + Must be before the latest restorable time for the DB instance.\n + Can't be specified if the ``UseLatestRestorableTime`` parameter is enabled.\n \n Example: ``2009-09-07T23:45:00Z``", + "format": "date-time", + "type": "string" + }, + "SourceDBClusterIdentifier": { + "description": "The identifier of the Multi-AZ DB cluster that will act as the source for the read replica. Each DB cluster can have up to 15 read replicas.\n Constraints:\n + Must be the identifier of an existing Multi-AZ DB cluster.\n + Can't be specified if the ``SourceDBInstanceIdentifier`` parameter is also specified.\n + The specified DB cluster must have automatic backups enabled, that is, its backup retention period must be greater than 0.\n + The source DB cluster must be in the same AWS-Region as the read replica. Cross-Region replication isn't supported.", + "type": "string" + }, + "SourceDBInstanceAutomatedBackupsArn": { + "description": "The Amazon Resource Name (ARN) of the replicated automated backups from which to restore, for example, ``arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE``.\n This setting doesn't apply to RDS Custom.", + "type": "string" + }, + "SourceDBInstanceIdentifier": { + "description": "If you want to create a read replica DB instance, specify the ID of the source DB instance. Each DB instance can have a limited number of read replicas. For more information, see [Working with Read Replicas](https://docs.aws.amazon.com/AmazonRDS/latest/DeveloperGuide/USER_ReadRepl.html) in the *Amazon RDS User Guide*.\n For information about constraints that apply to DB instance identifiers, see [Naming constraints in Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Constraints) in the *Amazon RDS User Guide*.\n The ``SourceDBInstanceIdentifier`` property determines whether a DB instance is a read replica. If you remove the ``SourceDBInstanceIdentifier`` property from your template and then update your stack, AWS CloudFormation promotes the read replica to a standalone DB instance.\n If you specify the ``UseLatestRestorableTime`` or ``RestoreTime`` properties in conjunction with the ``SourceDBInstanceIdentifier`` property, RDS restores the DB instance to the requested point in time, thereby creating a new DB instance.\n + If you specify a source DB instance that uses VPC security groups, we recommend that you specify the ``VPCSecurityGroups`` property. If you don't specify the property, the read replica inherits the value of the ``VPCSecurityGroups`` property from the source DB when you create the replica. However, if you update the stack, AWS CloudFormation reverts the replica's ``VPCSecurityGroups`` property to the default value because it's not defined in the stack's template. This change might cause unexpected issues.\n + Read replicas don't support deletion policies. AWS CloudFormation ignores any deletion policy that's associated with a read replica.\n + If you specify ``SourceDBInstanceIdentifier``, don't specify the ``DBSnapshotIdentifier`` property. You can't create a read replica from a snapshot.\n + Don't set the ``BackupRetentionPeriod``, ``DBName``, ``MasterUsername``, ``MasterUserPassword``, and ``PreferredBackupWindow`` properties. The database attributes are inherited from the source DB instance, and backups are disabled for read replicas.\n + If the source DB instance is in a different region than the read replica, specify the source region in ``SourceRegion``, and specify an ARN for a valid DB instance in ``SourceDBInstanceIdentifier``. For more information, see [Constructing a Amazon RDS Amazon Resource Name (ARN)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN) in the *Amazon RDS User Guide*.\n + For DB instances in Amazon Aurora clusters, don't specify this property. Amazon RDS automatically assigns writer and reader DB instances.", + "type": "string" + }, + "SourceDbiResourceId": { + "description": "The resource ID of the source DB instance from which to restore.", + "type": "string" + }, + "SourceRegion": { + "description": "The ID of the region that contains the source DB instance for the read replica.", + "type": "string" + }, + "StorageEncrypted": { + "description": "A value that indicates whether the DB instance is encrypted. By default, it isn't encrypted.\n If you specify the ``KmsKeyId`` property, then you must enable encryption.\n If you specify the ``SourceDBInstanceIdentifier`` or ``SourceDbiResourceId`` property, don't specify this property. The value is inherited from the source DB instance, and if the DB instance is encrypted, the specified ``KmsKeyId`` property is used.\n If you specify the ``SourceDBInstanceAutomatedBackupsArn`` property, don't specify this property. The value is inherited from the source DB instance automated backup. \n If you specify ``DBSnapshotIdentifier`` property, don't specify this property. The value is inherited from the snapshot.\n *Amazon Aurora* \n Not applicable. The encryption for DB instances is managed by the DB cluster.", + "type": "boolean" + }, + "StorageThroughput": { + "description": "Specifies the storage throughput value, in mebibyte per second (MiBps), for the DB instance. This setting applies only to the ``gp3`` storage type. \n This setting doesn't apply to RDS Custom or Amazon Aurora.", + "type": "integer" + }, + "StorageType": { + "description": "The storage type to associate with the DB instance.\n If you specify ``io1``, ``io2``, or ``gp3``, you must also include a value for the ``Iops`` parameter.\n This setting doesn't apply to Amazon Aurora DB instances. Storage is managed by the DB cluster.\n Valid Values: ``gp2 | gp3 | io1 | io2 | standard`` \n Default: ``io1``, if the ``Iops`` parameter is specified. Otherwise, ``gp3``.", + "type": "string" + }, + "Tags": { + "description": "Tags to assign to the DB instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TdeCredentialArn": { + "description": "", + "type": "string" + }, + "TdeCredentialPassword": { + "description": "", + "type": "string" + }, + "Timezone": { + "description": "The time zone of the DB instance. The time zone parameter is currently supported only by [RDS for Db2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-time-zone) and [RDS for SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone).", + "type": "string" + }, + "UseDefaultProcessorFeatures": { + "description": "Specifies whether the DB instance class of the DB instance uses its default processor features.\n This setting doesn't apply to RDS Custom DB instances.", + "type": "boolean" + }, + "UseLatestRestorableTime": { + "description": "Specifies whether the DB instance is restored from the latest backup time. By default, the DB instance isn't restored from the latest backup time. This parameter applies to point-in-time recovery. For more information, see [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon RDS User Guide*.\n Constraints:\n + Can't be specified if the ``RestoreTime`` parameter is provided.", + "type": "boolean" + }, + "VPCSecurityGroups": { + "description": "A list of the VPC security group IDs to assign to the DB instance. The list can include both the physical IDs of existing VPC security groups and references to [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html) resources created in the template.\n If you plan to update the resource, don't specify VPC security groups in a shared VPC.\n If you set ``VPCSecurityGroups``, you must not set [DBSecurityGroups](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups), and vice versa.\n You can migrate a DB instance in your stack from an RDS DB security group to a VPC security group, but keep the following in mind:\n + You can't revert to using an RDS security group after you establish a VPC security group membership.\n + When you migrate your DB instance to VPC security groups, if your stack update rolls back because the DB instance update fails or because an update fails in another AWS CloudFormation resource, the rollback fails because it can't revert to an RDS security group.\n + To use the properties that are available when you use a VPC security group, you must recreate the DB instance. If you don't, AWS CloudFormation submits only the property values that are listed in the [DBSecurityGroups](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups) property.\n \n To avoid this situation, migrate your DB instance to using VPC security groups only when that is the only change in your stack template. \n *Amazon Aurora* \n Not applicable. The associated list of EC2 VPC security groups is managed by the DB cluster. If specified, the setting must match the DB cluster setting.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": { + "/properties/DBClusterIdentifier": "$lowercase(DBClusterIdentifier)", + "/properties/DBClusterSnapshotIdentifier": "$lowercase(DBClusterSnapshotIdentifier)", + "/properties/DBInstanceIdentifier": "$lowercase(DBInstanceIdentifier)", + "/properties/DBName": "$lowercase(DBName) $OR $uppercase(DBName)", + "/properties/DBParameterGroupName": "$lowercase(DBParameterGroupName)", + "/properties/DBSnapshotIdentifier": "$lowercase(DBSnapshotIdentifier)", + "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)", + "/properties/DBSystemId": "$uppercase(DBSystemId)", + "/properties/Engine": "$lowercase(Engine)", + "/properties/EngineVersion": "$join([$string(EngineVersion), \".*\"])", + "/properties/KmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", KmsKeyId])", + "/properties/MasterUserSecret/KmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", MasterUserSecret.KmsKeyId])", + "/properties/NetworkType": "$lowercase(NetworkType)", + "/properties/OptionGroupName": "$lowercase(OptionGroupName)", + "/properties/PerformanceInsightsKMSKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", PerformanceInsightsKMSKeyId])", + "/properties/PreferredMaintenanceWindow": "$lowercase(PreferredMaintenanceWindow)", + "/properties/SourceDBInstanceAutomatedBackupsArn": "$lowercase(SourceDBInstanceAutomatedBackupsArn)", + "/properties/SourceDBInstanceIdentifier": "$lowercase(SourceDBInstanceIdentifier)", + "/properties/StorageType": "$lowercase(StorageType)" + }, + "readOnlyProperties": [ + "/properties/Endpoint", + "/properties/Endpoint/Address", + "/properties/Endpoint/Port", + "/properties/Endpoint/HostedZoneId", + "/properties/DbiResourceId", + "/properties/DBInstanceArn", + "/properties/MasterUserSecret/SecretArn", + "/properties/CertificateDetails", + "/properties/CertificateDetails/CAIdentifier", + "/properties/CertificateDetails/ValidTill" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RDS::DBInstance", + "writeOnlyProperties": [ + "/properties/AllowMajorVersionUpgrade", + "/properties/AutomaticBackupReplicationKmsKeyId", + "/properties/CertificateRotationRestart", + "/properties/DBSnapshotIdentifier", + "/properties/DeleteAutomatedBackups", + "/properties/MasterUserPassword", + "/properties/RestoreTime", + "/properties/SourceDBInstanceAutomatedBackupsArn", + "/properties/SourceDBInstanceIdentifier", + "/properties/SourceDbiResourceId", + "/properties/SourceRegion", + "/properties/TdeCredentialPassword", + "/properties/UseDefaultProcessorFeatures", + "/properties/UseLatestRestorableTime", + "/properties/ApplyImmediately" + ] +} diff --git a/src/schema/aws-rds-dbparametergroup.json b/src/schema/aws-rds-dbparametergroup.json index fa46ff00..c397df7b 100644 --- a/src/schema/aws-rds-dbparametergroup.json +++ b/src/schema/aws-rds-dbparametergroup.json @@ -1,130 +1,130 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DBParameterGroupName", - "/properties/Description", - "/properties/Family" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", - "properties": { - "Key": { - "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "The ``AWS::RDS::DBParameterGroup`` resource creates a custom parameter group for an RDS database family.\n This type can be declared in a template and referenced in the ``DBParameterGroupName`` property of an ``AWS::RDS::DBInstance`` resource.\n For information about configuring parameters for Amazon RDS DB instances, see [Working with parameter groups](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html) in the *Amazon RDS User Guide*.\n For information about configuring parameters for Amazon Aurora DB instances, see [Working with parameter groups](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_WorkingWithParamGroups.html) in the *Amazon Aurora User Guide*.\n Applying a parameter group to a DB instance may require the DB instance to reboot, resulting in a database outage for the duration of the reboot.", - "handlers": { - "create": { - "permissions": [ - "iam:CreateServiceLinkedRole", - "rds:AddTagsToResource", - "rds:CreateDBParameterGroup", - "rds:DescribeDBParameterGroups", - "rds:DescribeDBParameters", - "rds:DescribeEngineDefaultParameters", - "rds:ListTagsForResource", - "rds:ModifyDBParameterGroup", - "rds:RemoveTagsFromResource" - ] - }, - "delete": { - "permissions": [ - "rds:DeleteDBParameterGroup" - ] - }, - "list": { - "permissions": [ - "rds:DescribeDBParameterGroups" - ] - }, - "read": { - "permissions": [ - "rds:DescribeDBParameterGroups", - "rds:DescribeDBParameters", - "rds:DescribeEngineDefaultParameters", - "rds:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "rds:AddTagsToResource", - "rds:DescribeDBParameterGroups", - "rds:DescribeDBParameters", - "rds:DescribeEngineDefaultParameters", - "rds:ListTagsForResource", - "rds:ModifyDBParameterGroup", - "rds:ResetDBParameterGroup", - "rds:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/DBParameterGroupName" - ], - "properties": { - "DBParameterGroupName": { - "description": "The name of the DB parameter group.\n Constraints:\n + Must be 1 to 255 letters, numbers, or hyphens.\n + First character must be a letter\n + Can't end with a hyphen or contain two consecutive hyphens\n \n If you don't specify a value for ``DBParameterGroupName`` property, a name is automatically created for the DB parameter group.\n This value is stored as a lowercase string.", - "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9])*$", - "type": "string" - }, - "Description": { - "description": "Provides the customer-specified description for this DB parameter group.", - "type": "string" - }, - "Family": { - "description": "The DB parameter group family name. A DB parameter group can be associated with one and only one DB parameter group family, and can be applied only to a DB instance running a database engine and engine version compatible with that DB parameter group family.\n To list all of the available parameter group families for a DB engine, use the following command:\n ``aws rds describe-db-engine-versions --query \"DBEngineVersions[].DBParameterGroupFamily\" --engine `` \n For example, to list all of the available parameter group families for the MySQL DB engine, use the following command:\n ``aws rds describe-db-engine-versions --query \"DBEngineVersions[].DBParameterGroupFamily\" --engine mysql`` \n The output contains duplicates.\n The following are the valid DB engine values:\n + ``aurora-mysql`` \n + ``aurora-postgresql`` \n + ``db2-ae`` \n + ``db2-se`` \n + ``mysql`` \n + ``oracle-ee`` \n + ``oracle-ee-cdb`` \n + ``oracle-se2`` \n + ``oracle-se2-cdb`` \n + ``postgres`` \n + ``sqlserver-ee`` \n + ``sqlserver-se`` \n + ``sqlserver-ex`` \n + ``sqlserver-web``", - "type": "string" - }, - "Parameters": { - "description": "An array of parameter names and values for the parameter update. You must specify at least one parameter name and value.\n For more information about parameter groups, see [Working with parameter groups](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html) in the *Amazon RDS User Guide*, or [Working with parameter groups](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_WorkingWithParamGroups.html) in the *Amazon Aurora User Guide*.\n AWS CloudFormation doesn't support specifying an apply method for each individual parameter. The default apply method for each parameter is used.", - "type": "object" - }, - "Tags": { - "description": "Tags to assign to the DB parameter group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": false - } - }, - "propertyTransform": { - "/properties/DBParameterGroupName": "$lowercase(DBParameterGroupName)" - }, - "required": [ - "Family", - "Description" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RDS::DBParameterGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DBParameterGroupName", + "/properties/Description", + "/properties/Family" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", + "properties": { + "Key": { + "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "The ``AWS::RDS::DBParameterGroup`` resource creates a custom parameter group for an RDS database family.\n This type can be declared in a template and referenced in the ``DBParameterGroupName`` property of an ``AWS::RDS::DBInstance`` resource.\n For information about configuring parameters for Amazon RDS DB instances, see [Working with parameter groups](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html) in the *Amazon RDS User Guide*.\n For information about configuring parameters for Amazon Aurora DB instances, see [Working with parameter groups](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_WorkingWithParamGroups.html) in the *Amazon Aurora User Guide*.\n Applying a parameter group to a DB instance may require the DB instance to reboot, resulting in a database outage for the duration of the reboot.", + "handlers": { + "create": { + "permissions": [ + "iam:CreateServiceLinkedRole", + "rds:AddTagsToResource", + "rds:CreateDBParameterGroup", + "rds:DescribeDBParameterGroups", + "rds:DescribeDBParameters", + "rds:DescribeEngineDefaultParameters", + "rds:ListTagsForResource", + "rds:ModifyDBParameterGroup", + "rds:RemoveTagsFromResource" + ] + }, + "delete": { + "permissions": [ + "rds:DeleteDBParameterGroup" + ] + }, + "list": { + "permissions": [ + "rds:DescribeDBParameterGroups" + ] + }, + "read": { + "permissions": [ + "rds:DescribeDBParameterGroups", + "rds:DescribeDBParameters", + "rds:DescribeEngineDefaultParameters", + "rds:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "rds:AddTagsToResource", + "rds:DescribeDBParameterGroups", + "rds:DescribeDBParameters", + "rds:DescribeEngineDefaultParameters", + "rds:ListTagsForResource", + "rds:ModifyDBParameterGroup", + "rds:ResetDBParameterGroup", + "rds:RemoveTagsFromResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DBParameterGroupName" + ], + "properties": { + "DBParameterGroupName": { + "description": "The name of the DB parameter group.\n Constraints:\n + Must be 1 to 255 letters, numbers, or hyphens.\n + First character must be a letter\n + Can't end with a hyphen or contain two consecutive hyphens\n \n If you don't specify a value for ``DBParameterGroupName`` property, a name is automatically created for the DB parameter group.\n This value is stored as a lowercase string.", + "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9])*$", + "type": "string" + }, + "Description": { + "description": "Provides the customer-specified description for this DB parameter group.", + "type": "string" + }, + "Family": { + "description": "The DB parameter group family name. A DB parameter group can be associated with one and only one DB parameter group family, and can be applied only to a DB instance running a database engine and engine version compatible with that DB parameter group family.\n To list all of the available parameter group families for a DB engine, use the following command:\n ``aws rds describe-db-engine-versions --query \"DBEngineVersions[].DBParameterGroupFamily\" --engine `` \n For example, to list all of the available parameter group families for the MySQL DB engine, use the following command:\n ``aws rds describe-db-engine-versions --query \"DBEngineVersions[].DBParameterGroupFamily\" --engine mysql`` \n The output contains duplicates.\n The following are the valid DB engine values:\n + ``aurora-mysql`` \n + ``aurora-postgresql`` \n + ``db2-ae`` \n + ``db2-se`` \n + ``mysql`` \n + ``oracle-ee`` \n + ``oracle-ee-cdb`` \n + ``oracle-se2`` \n + ``oracle-se2-cdb`` \n + ``postgres`` \n + ``sqlserver-ee`` \n + ``sqlserver-se`` \n + ``sqlserver-ex`` \n + ``sqlserver-web``", + "type": "string" + }, + "Parameters": { + "description": "A mapping of parameter names and values for the parameter update. You must specify at least one parameter name and value.\n For more information about parameter groups, see [Working with parameter groups](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html) in the *Amazon RDS User Guide*, or [Working with parameter groups](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_WorkingWithParamGroups.html) in the *Amazon Aurora User Guide*.\n AWS CloudFormation doesn't support specifying an apply method for each individual parameter. The default apply method for each parameter is used.", + "type": "object" + }, + "Tags": { + "description": "Tags to assign to the DB parameter group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": false + } + }, + "propertyTransform": { + "/properties/DBParameterGroupName": "$lowercase(DBParameterGroupName)" + }, + "required": [ + "Family", + "Description" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RDS::DBParameterGroup" +} diff --git a/src/schema/aws-rds-dbproxy.json b/src/schema/aws-rds-dbproxy.json index 9719ecd2..84cfb403 100644 --- a/src/schema/aws-rds-dbproxy.json +++ b/src/schema/aws-rds-dbproxy.json @@ -1,204 +1,209 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DBProxyName", - "/properties/EngineFamily", - "/properties/VpcSubnetIds" - ], - "definitions": { - "AuthFormat": { - "additionalProperties": false, - "properties": { - "AuthScheme": { - "description": "The type of authentication that the proxy uses for connections from the proxy to the underlying database. ", - "enum": [ - "SECRETS" - ], - "type": "string" - }, - "ClientPasswordAuthType": { - "description": "The type of authentication the proxy uses for connections from clients.", - "enum": [ - "MYSQL_NATIVE_PASSWORD", - "POSTGRES_SCRAM_SHA_256", - "POSTGRES_MD5", - "SQL_SERVER_AUTHENTICATION" - ], - "type": "string" - }, - "Description": { - "description": "A user-specified description about the authentication used by a proxy to log in as a specific database user. ", - "type": "string" - }, - "IAMAuth": { - "description": "Whether to require or disallow Amazon Web Services Identity and Access Management (IAM) authentication for connections to the proxy. The ENABLED value is valid only for proxies with RDS for Microsoft SQL Server.", - "enum": [ - "DISABLED", - "REQUIRED", - "ENABLED" - ], - "type": "string" - }, - "SecretArn": { - "description": "The Amazon Resource Name (ARN) representing the secret that the proxy uses to authenticate to the RDS DB instance or Aurora DB cluster. These secrets are stored within Amazon Secrets Manager. ", - "type": "string" - } - }, - "type": "object" - }, - "TagFormat": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "pattern": "(\\w|\\d|\\s|\\\\|-|\\.:=+-)*", - "type": "string" - }, - "Value": { - "maxLength": 128, - "pattern": "(\\w|\\d|\\s|\\\\|-|\\.:=+-)*", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::RDS::DBProxy", - "handlers": { - "create": { - "permissions": [ - "rds:CreateDBProxy", - "rds:DescribeDBProxies", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "rds:DescribeDBProxies", - "rds:DeleteDBProxy" - ] - }, - "list": { - "permissions": [ - "rds:DescribeDBProxies" - ] - }, - "read": { - "permissions": [ - "rds:DescribeDBProxies" - ] - }, - "update": { - "permissions": [ - "rds:ModifyDBProxy", - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/DBProxyName" - ], - "properties": { - "Auth": { - "description": "The authorization mechanism that the proxy uses.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AuthFormat" - }, - "minItems": 1, - "type": "array" - }, - "DBProxyArn": { - "description": "The Amazon Resource Name (ARN) for the proxy.", - "type": "string" - }, - "DBProxyName": { - "description": "The identifier for the proxy. This name must be unique for all proxies owned by your AWS account in the specified AWS Region.", - "maxLength": 64, - "pattern": "[0-z]*", - "type": "string" - }, - "DebugLogging": { - "description": "Whether the proxy includes detailed information about SQL statements in its logs.", - "type": "boolean" - }, - "Endpoint": { - "description": "The endpoint that you can use to connect to the proxy. You include the endpoint value in the connection string for a database client application.", - "type": "string" - }, - "EngineFamily": { - "description": "The kinds of databases that the proxy can connect to.", - "enum": [ - "MYSQL", - "POSTGRESQL", - "SQLSERVER" - ], - "type": "string" - }, - "IdleClientTimeout": { - "description": "The number of seconds that a connection to the proxy can be inactive before the proxy disconnects it.", - "type": "integer" - }, - "RequireTLS": { - "description": "A Boolean parameter that specifies whether Transport Layer Security (TLS) encryption is required for connections to the proxy.", - "type": "boolean" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) of the IAM role that the proxy uses to access secrets in AWS Secrets Manager.", - "type": "string" - }, - "Tags": { - "description": "An optional set of key-value pairs to associate arbitrary data of your choosing with the proxy.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TagFormat" - }, - "type": "array" - }, - "VpcId": { - "description": "VPC ID to associate with the new DB proxy.", - "type": "string" - }, - "VpcSecurityGroupIds": { - "description": "VPC security group IDs to associate with the new proxy.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "VpcSubnetIds": { - "description": "VPC subnet IDs to associate with the new proxy.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "minItems": 2, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/DBProxyArn", - "/properties/Endpoint", - "/properties/VpcId" - ], - "required": [ - "Auth", - "DBProxyName", - "EngineFamily", - "RoleArn", - "VpcSubnetIds" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RDS::DBProxy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DBProxyName", + "/properties/EngineFamily", + "/properties/VpcSubnetIds" + ], + "definitions": { + "AuthFormat": { + "additionalProperties": false, + "properties": { + "AuthScheme": { + "description": "The type of authentication that the proxy uses for connections from the proxy to the underlying database. ", + "enum": [ + "SECRETS" + ], + "type": "string" + }, + "ClientPasswordAuthType": { + "description": "The type of authentication the proxy uses for connections from clients.", + "enum": [ + "MYSQL_NATIVE_PASSWORD", + "POSTGRES_SCRAM_SHA_256", + "POSTGRES_MD5", + "SQL_SERVER_AUTHENTICATION" + ], + "type": "string" + }, + "Description": { + "description": "A user-specified description about the authentication used by a proxy to log in as a specific database user. ", + "type": "string" + }, + "IAMAuth": { + "description": "Whether to require or disallow Amazon Web Services Identity and Access Management (IAM) authentication for connections to the proxy. The ENABLED value is valid only for proxies with RDS for Microsoft SQL Server.", + "enum": [ + "DISABLED", + "REQUIRED", + "ENABLED" + ], + "type": "string" + }, + "SecretArn": { + "description": "The Amazon Resource Name (ARN) representing the secret that the proxy uses to authenticate to the RDS DB instance or Aurora DB cluster. These secrets are stored within Amazon Secrets Manager. ", + "type": "string" + } + }, + "type": "object" + }, + "TagFormat": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "pattern": "(\\w|\\d|\\s|\\\\|-|\\.:=+-)*", + "type": "string" + }, + "Value": { + "maxLength": 128, + "pattern": "(\\w|\\d|\\s|\\\\|-|\\.:=+-)*", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::RDS::DBProxy", + "handlers": { + "create": { + "permissions": [ + "rds:CreateDBProxy", + "rds:DescribeDBProxies", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "rds:DescribeDBProxies", + "rds:DeleteDBProxy" + ] + }, + "list": { + "permissions": [ + "rds:DescribeDBProxies" + ] + }, + "read": { + "permissions": [ + "rds:DescribeDBProxies" + ] + }, + "update": { + "permissions": [ + "rds:ModifyDBProxy", + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DBProxyName" + ], + "properties": { + "Auth": { + "description": "The authorization mechanism that the proxy uses.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AuthFormat" + }, + "minItems": 1, + "type": "array" + }, + "DBProxyArn": { + "description": "The Amazon Resource Name (ARN) for the proxy.", + "type": "string" + }, + "DBProxyName": { + "description": "The identifier for the proxy. This name must be unique for all proxies owned by your AWS account in the specified AWS Region.", + "maxLength": 64, + "pattern": "[0-z]*", + "type": "string" + }, + "DebugLogging": { + "description": "Whether the proxy includes detailed information about SQL statements in its logs.", + "type": "boolean" + }, + "Endpoint": { + "description": "The endpoint that you can use to connect to the proxy. You include the endpoint value in the connection string for a database client application.", + "type": "string" + }, + "EngineFamily": { + "description": "The kinds of databases that the proxy can connect to.", + "enum": [ + "MYSQL", + "POSTGRESQL", + "SQLSERVER" + ], + "type": "string" + }, + "IdleClientTimeout": { + "description": "The number of seconds that a connection to the proxy can be inactive before the proxy disconnects it.", + "type": "integer" + }, + "RequireTLS": { + "description": "A Boolean parameter that specifies whether Transport Layer Security (TLS) encryption is required for connections to the proxy.", + "type": "boolean" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of the IAM role that the proxy uses to access secrets in AWS Secrets Manager.", + "type": "string" + }, + "Tags": { + "description": "An optional set of key-value pairs to associate arbitrary data of your choosing with the proxy.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagFormat" + }, + "type": "array" + }, + "VpcId": { + "description": "VPC ID to associate with the new DB proxy.", + "type": "string" + }, + "VpcSecurityGroupIds": { + "description": "VPC security group IDs to associate with the new proxy.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "VpcSubnetIds": { + "description": "VPC subnet IDs to associate with the new proxy.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "minItems": 2, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/DBProxyArn", + "/properties/Endpoint", + "/properties/VpcId" + ], + "required": [ + "Auth", + "DBProxyName", + "EngineFamily", + "RoleArn", + "VpcSubnetIds" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource", + "rds:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RDS::DBProxy" +} diff --git a/src/schema/aws-rds-dbproxyendpoint.json b/src/schema/aws-rds-dbproxyendpoint.json index f58af56d..efd2899e 100644 --- a/src/schema/aws-rds-dbproxyendpoint.json +++ b/src/schema/aws-rds-dbproxyendpoint.json @@ -1,148 +1,153 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DBProxyName", - "/properties/DBProxyEndpointName", - "/properties/VpcSubnetIds" - ], - "definitions": { - "TagFormat": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "pattern": "(\\w|\\d|\\s|\\\\|-|\\.:=+-)*", - "type": "string" - }, - "Value": { - "maxLength": 128, - "pattern": "(\\w|\\d|\\s|\\\\|-|\\.:=+-)*", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::RDS::DBProxyEndpoint.", - "handlers": { - "create": { - "permissions": [ - "rds:CreateDBProxyEndpoint", - "rds:DescribeDBProxyEndpoints" - ] - }, - "delete": { - "permissions": [ - "rds:DescribeDBProxyEndpoints", - "rds:DeleteDBProxyEndpoint" - ] - }, - "list": { - "permissions": [ - "rds:DescribeDBProxyEndpoints" - ] - }, - "read": { - "permissions": [ - "rds:DescribeDBProxyEndpoints", - "rds:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "rds:ModifyDBProxyEndpoint", - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/DBProxyEndpointName" - ], - "properties": { - "DBProxyEndpointArn": { - "description": "The Amazon Resource Name (ARN) for the DB proxy endpoint.", - "pattern": "arn:aws[A-Za-z0-9-]{0,64}:rds:[A-Za-z0-9-]{1,64}:[0-9]{12}:.*", - "type": "string" - }, - "DBProxyEndpointName": { - "description": "The identifier for the DB proxy endpoint. This name must be unique for all DB proxy endpoints owned by your AWS account in the specified AWS Region.", - "maxLength": 64, - "pattern": "[0-z]*", - "type": "string" - }, - "DBProxyName": { - "description": "The identifier for the proxy. This name must be unique for all proxies owned by your AWS account in the specified AWS Region.", - "maxLength": 64, - "pattern": "[0-z]*", - "type": "string" - }, - "Endpoint": { - "description": "The endpoint that you can use to connect to the DB proxy. You include the endpoint value in the connection string for a database client application.", - "maxLength": 256, - "type": "string" - }, - "IsDefault": { - "description": "A value that indicates whether this endpoint is the default endpoint for the associated DB proxy. Default DB proxy endpoints always have read/write capability. Other endpoints that you associate with the DB proxy can be either read/write or read-only.", - "type": "boolean" - }, - "Tags": { - "description": "An optional set of key-value pairs to associate arbitrary data of your choosing with the DB proxy endpoint.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TagFormat" - }, - "type": "array" - }, - "TargetRole": { - "description": "A value that indicates whether the DB proxy endpoint can be used for read/write or read-only operations.", - "enum": [ - "READ_WRITE", - "READ_ONLY" - ], - "type": "string" - }, - "VpcId": { - "description": "VPC ID to associate with the new DB proxy endpoint.", - "type": "string" - }, - "VpcSecurityGroupIds": { - "description": "VPC security group IDs to associate with the new DB proxy endpoint.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "VpcSubnetIds": { - "description": "VPC subnet IDs to associate with the new DB proxy endpoint.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "minItems": 2, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/DBProxyEndpointArn", - "/properties/Endpoint", - "/properties/VpcId", - "/properties/IsDefault" - ], - "required": [ - "DBProxyName", - "DBProxyEndpointName", - "VpcSubnetIds" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RDS::DBProxyEndpoint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DBProxyName", + "/properties/DBProxyEndpointName", + "/properties/VpcSubnetIds" + ], + "definitions": { + "TagFormat": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "pattern": "(\\w|\\d|\\s|\\\\|-|\\.:=+-)*", + "type": "string" + }, + "Value": { + "maxLength": 128, + "pattern": "(\\w|\\d|\\s|\\\\|-|\\.:=+-)*", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::RDS::DBProxyEndpoint.", + "handlers": { + "create": { + "permissions": [ + "rds:CreateDBProxyEndpoint", + "rds:DescribeDBProxyEndpoints" + ] + }, + "delete": { + "permissions": [ + "rds:DescribeDBProxyEndpoints", + "rds:DeleteDBProxyEndpoint" + ] + }, + "list": { + "permissions": [ + "rds:DescribeDBProxyEndpoints" + ] + }, + "read": { + "permissions": [ + "rds:DescribeDBProxyEndpoints", + "rds:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "rds:ModifyDBProxyEndpoint", + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DBProxyEndpointName" + ], + "properties": { + "DBProxyEndpointArn": { + "description": "The Amazon Resource Name (ARN) for the DB proxy endpoint.", + "pattern": "arn:aws[A-Za-z0-9-]{0,64}:rds:[A-Za-z0-9-]{1,64}:[0-9]{12}:.*", + "type": "string" + }, + "DBProxyEndpointName": { + "description": "The identifier for the DB proxy endpoint. This name must be unique for all DB proxy endpoints owned by your AWS account in the specified AWS Region.", + "maxLength": 64, + "pattern": "[0-z]*", + "type": "string" + }, + "DBProxyName": { + "description": "The identifier for the proxy. This name must be unique for all proxies owned by your AWS account in the specified AWS Region.", + "maxLength": 64, + "pattern": "[0-z]*", + "type": "string" + }, + "Endpoint": { + "description": "The endpoint that you can use to connect to the DB proxy. You include the endpoint value in the connection string for a database client application.", + "maxLength": 256, + "type": "string" + }, + "IsDefault": { + "description": "A value that indicates whether this endpoint is the default endpoint for the associated DB proxy. Default DB proxy endpoints always have read/write capability. Other endpoints that you associate with the DB proxy can be either read/write or read-only.", + "type": "boolean" + }, + "Tags": { + "description": "An optional set of key-value pairs to associate arbitrary data of your choosing with the DB proxy endpoint.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagFormat" + }, + "type": "array" + }, + "TargetRole": { + "description": "A value that indicates whether the DB proxy endpoint can be used for read/write or read-only operations.", + "enum": [ + "READ_WRITE", + "READ_ONLY" + ], + "type": "string" + }, + "VpcId": { + "description": "VPC ID to associate with the new DB proxy endpoint.", + "type": "string" + }, + "VpcSecurityGroupIds": { + "description": "VPC security group IDs to associate with the new DB proxy endpoint.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "VpcSubnetIds": { + "description": "VPC subnet IDs to associate with the new DB proxy endpoint.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "minItems": 2, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/DBProxyEndpointArn", + "/properties/Endpoint", + "/properties/VpcId", + "/properties/IsDefault" + ], + "required": [ + "DBProxyName", + "DBProxyEndpointName", + "VpcSubnetIds" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource", + "rds:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RDS::DBProxyEndpoint" +} diff --git a/src/schema/aws-rds-dbproxytargetgroup.json b/src/schema/aws-rds-dbproxytargetgroup.json index f3dfbc78..d9591bc9 100644 --- a/src/schema/aws-rds-dbproxytargetgroup.json +++ b/src/schema/aws-rds-dbproxytargetgroup.json @@ -1,132 +1,132 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DBProxyName", - "/properties/TargetGroupName" - ], - "definitions": { - "ConnectionPoolConfigurationInfoFormat": { - "additionalProperties": false, - "properties": { - "ConnectionBorrowTimeout": { - "description": "The number of seconds for a proxy to wait for a connection to become available in the connection pool.", - "type": "integer" - }, - "InitQuery": { - "description": "One or more SQL statements for the proxy to run when opening each new database connection.", - "type": "string" - }, - "MaxConnectionsPercent": { - "description": "The maximum size of the connection pool for each target in a target group.", - "maximum": 100, - "minimum": 0, - "type": "integer" - }, - "MaxIdleConnectionsPercent": { - "description": "Controls how actively the proxy closes idle database connections in the connection pool.", - "maximum": 100, - "minimum": 0, - "type": "integer" - }, - "SessionPinningFilters": { - "description": "Each item in the list represents a class of SQL operations that normally cause all later statements in a session using a proxy to be pinned to the same underlying database connection.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::RDS::DBProxyTargetGroup", - "handlers": { - "create": { - "permissions": [ - "rds:DescribeDBProxies", - "rds:DescribeDBProxyTargetGroups", - "rds:ModifyDBProxyTargetGroup", - "rds:RegisterDBProxyTargets" - ] - }, - "delete": { - "permissions": [ - "rds:DeregisterDBProxyTargets" - ] - }, - "list": { - "permissions": [ - "rds:DescribeDBProxyTargetGroups" - ] - }, - "read": { - "permissions": [ - "rds:DescribeDBProxyTargetGroups", - "rds:DescribeDBProxyTargets" - ] - }, - "update": { - "permissions": [ - "rds:DescribeDBProxyTargetGroups", - "rds:ModifyDBProxyTargetGroup", - "rds:RegisterDBProxyTargets", - "rds:DeregisterDBProxyTargets" - ] - } - }, - "primaryIdentifier": [ - "/properties/TargetGroupArn" - ], - "properties": { - "ConnectionPoolConfigurationInfo": { - "$ref": "#/definitions/ConnectionPoolConfigurationInfoFormat" - }, - "DBClusterIdentifiers": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "DBInstanceIdentifiers": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "DBProxyName": { - "description": "The identifier for the proxy.", - "maxLength": 64, - "pattern": "[A-z][0-z]*", - "type": "string" - }, - "TargetGroupArn": { - "description": "The Amazon Resource Name (ARN) representing the target group.", - "type": "string" - }, - "TargetGroupName": { - "description": "The identifier for the DBProxyTargetGroup", - "enum": [ - "default" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/TargetGroupArn" - ], - "required": [ - "DBProxyName", - "TargetGroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds-proxy", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::RDS::DBProxyTargetGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DBProxyName", + "/properties/TargetGroupName" + ], + "definitions": { + "ConnectionPoolConfigurationInfoFormat": { + "additionalProperties": false, + "properties": { + "ConnectionBorrowTimeout": { + "description": "The number of seconds for a proxy to wait for a connection to become available in the connection pool.", + "type": "integer" + }, + "InitQuery": { + "description": "One or more SQL statements for the proxy to run when opening each new database connection.", + "type": "string" + }, + "MaxConnectionsPercent": { + "description": "The maximum size of the connection pool for each target in a target group.", + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "MaxIdleConnectionsPercent": { + "description": "Controls how actively the proxy closes idle database connections in the connection pool.", + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "SessionPinningFilters": { + "description": "Each item in the list represents a class of SQL operations that normally cause all later statements in a session using a proxy to be pinned to the same underlying database connection.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::RDS::DBProxyTargetGroup", + "handlers": { + "create": { + "permissions": [ + "rds:DescribeDBProxies", + "rds:DescribeDBProxyTargetGroups", + "rds:ModifyDBProxyTargetGroup", + "rds:RegisterDBProxyTargets" + ] + }, + "delete": { + "permissions": [ + "rds:DeregisterDBProxyTargets" + ] + }, + "list": { + "permissions": [ + "rds:DescribeDBProxyTargetGroups" + ] + }, + "read": { + "permissions": [ + "rds:DescribeDBProxyTargetGroups", + "rds:DescribeDBProxyTargets" + ] + }, + "update": { + "permissions": [ + "rds:DescribeDBProxyTargetGroups", + "rds:ModifyDBProxyTargetGroup", + "rds:RegisterDBProxyTargets", + "rds:DeregisterDBProxyTargets" + ] + } + }, + "primaryIdentifier": [ + "/properties/TargetGroupArn" + ], + "properties": { + "ConnectionPoolConfigurationInfo": { + "$ref": "#/definitions/ConnectionPoolConfigurationInfoFormat" + }, + "DBClusterIdentifiers": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "DBInstanceIdentifiers": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "DBProxyName": { + "description": "The identifier for the proxy.", + "maxLength": 64, + "pattern": "[A-z][0-z]*", + "type": "string" + }, + "TargetGroupArn": { + "description": "The Amazon Resource Name (ARN) representing the target group.", + "type": "string" + }, + "TargetGroupName": { + "description": "The identifier for the DBProxyTargetGroup", + "enum": [ + "default" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TargetGroupArn" + ], + "required": [ + "DBProxyName", + "TargetGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds-proxy", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::RDS::DBProxyTargetGroup" +} diff --git a/src/schema/aws-rds-dbsecuritygroup.json b/src/schema/aws-rds-dbsecuritygroup.json index 77c04f4b..a5eddf07 100644 --- a/src/schema/aws-rds-dbsecuritygroup.json +++ b/src/schema/aws-rds-dbsecuritygroup.json @@ -1,80 +1,80 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GroupDescription", - "/properties/EC2VpcId" - ], - "definitions": { - "Ingress": { - "additionalProperties": false, - "properties": { - "CIDRIP": { - "type": "string" - }, - "EC2SecurityGroupId": { - "type": "string" - }, - "EC2SecurityGroupName": { - "type": "string" - }, - "EC2SecurityGroupOwnerId": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::RDS::DBSecurityGroup", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DBSecurityGroupIngress": { - "items": { - "$ref": "#/definitions/Ingress" - }, - "type": "array", - "uniqueItems": true - }, - "EC2VpcId": { - "type": "string" - }, - "GroupDescription": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "GroupDescription", - "DBSecurityGroupIngress" - ], - "typeName": "AWS::RDS::DBSecurityGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GroupDescription", + "/properties/EC2VpcId" + ], + "definitions": { + "Ingress": { + "additionalProperties": false, + "properties": { + "CIDRIP": { + "type": "string" + }, + "EC2SecurityGroupId": { + "type": "string" + }, + "EC2SecurityGroupName": { + "type": "string" + }, + "EC2SecurityGroupOwnerId": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::RDS::DBSecurityGroup", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DBSecurityGroupIngress": { + "items": { + "$ref": "#/definitions/Ingress" + }, + "type": "array", + "uniqueItems": true + }, + "EC2VpcId": { + "type": "string" + }, + "GroupDescription": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "GroupDescription", + "DBSecurityGroupIngress" + ], + "typeName": "AWS::RDS::DBSecurityGroup" +} diff --git a/src/schema/aws-rds-dbsecuritygroupingress.json b/src/schema/aws-rds-dbsecuritygroupingress.json index 89055dad..29fea306 100644 --- a/src/schema/aws-rds-dbsecuritygroupingress.json +++ b/src/schema/aws-rds-dbsecuritygroupingress.json @@ -1,34 +1,34 @@ -{ - "additionalProperties": false, - "description": "Resource Type definition for AWS::RDS::DBSecurityGroupIngress", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CIDRIP": { - "type": "string" - }, - "DBSecurityGroupName": { - "type": "string" - }, - "EC2SecurityGroupId": { - "type": "string" - }, - "EC2SecurityGroupName": { - "type": "string" - }, - "EC2SecurityGroupOwnerId": { - "type": "string" - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "DBSecurityGroupName" - ], - "typeName": "AWS::RDS::DBSecurityGroupIngress" -} +{ + "additionalProperties": false, + "description": "Resource Type definition for AWS::RDS::DBSecurityGroupIngress", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CIDRIP": { + "type": "string" + }, + "DBSecurityGroupName": { + "type": "string" + }, + "EC2SecurityGroupId": { + "type": "string" + }, + "EC2SecurityGroupName": { + "type": "string" + }, + "EC2SecurityGroupOwnerId": { + "type": "string" + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "DBSecurityGroupName" + ], + "typeName": "AWS::RDS::DBSecurityGroupIngress" +} diff --git a/src/schema/aws-rds-dbshardgroup.json b/src/schema/aws-rds-dbshardgroup.json index 69c23595..0bfc70b7 100644 --- a/src/schema/aws-rds-dbshardgroup.json +++ b/src/schema/aws-rds-dbshardgroup.json @@ -1,113 +1,155 @@ { - "typeName" : "AWS::RDS::DBShardGroup", - "description" : "The AWS::RDS::DBShardGroup resource creates an Amazon Aurora Limitless DB Shard Group.", - "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", - "tagging" : { - "cloudFormationSystemTags" : true, - "permissions" : [ "rds:AddTagsToResource", "rds:RemoveTagsFromResource" ], - "taggable" : true, - "tagOnCreate" : false, - "tagUpdatable" : true, - "tagProperty" : "/properties/Tags" + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DBClusterIdentifier", + "/properties/DBShardGroupIdentifier", + "/properties/PubliclyAccessible" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", + "properties": { + "Key": { + "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } }, - "properties" : { - "DBShardGroupResourceId" : { - "description" : "The Amazon Web Services Region-unique, immutable identifier for the DB shard group.", - "type" : "string" + "description": "Creates a new DB shard group for Aurora Limitless Database. You must enable Aurora Limitless Database to create a DB shard group.\n Valid for: Aurora DB clusters only", + "handlers": { + "create": { + "permissions": [ + "rds:AddTagsToResource", + "rds:CreateDBShardGroup", + "rds:DescribeDBClusters", + "rds:DescribeDBShardGroups", + "rds:ListTagsForResource" + ], + "timeoutInMinutes": 2160 }, - "DBShardGroupIdentifier" : { - "description" : "The name of the DB shard group.", - "type" : "string", - "minLength" : 1, - "maxLength" : 63 + "delete": { + "permissions": [ + "rds:DeleteDBShardGroup", + "rds:DescribeDBClusters", + "rds:DescribeDbShardGroups" + ], + "timeoutInMinutes": 2160 }, - "DBClusterIdentifier" : { - "description" : "The name of the primary DB cluster for the DB shard group.", - "type" : "string", - "minLength" : 1, - "maxLength" : 63 + "list": { + "permissions": [ + "rds:DescribeDBShardGroups", + "rds:ListTagsForResource" + ] }, - "ComputeRedundancy" : { - "description" : "Specifies whether to create standby instances for the DB shard group.", - "minimum" : 0, - "type" : "integer" + "read": { + "permissions": [ + "rds:DescribeDBShardGroups", + "rds:ListTagsForResource" + ] }, - "MaxACU" : { - "description" : "The maximum capacity of the DB shard group in Aurora capacity units (ACUs).", - "type" : "number" + "update": { + "permissions": [ + "rds:AddTagsToResource", + "rds:DescribeDBShardGroups", + "rds:DescribeDBClusters", + "rds:RemoveTagsFromResource", + "rds:ModifyDBShardGroup", + "rds:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DBShardGroupIdentifier" + ], + "properties": { + "ComputeRedundancy": { + "description": "Specifies whether to create standby DB shard groups for the DB shard group. Valid values are the following:\n + 0 - Creates a DB shard group without a standby DB shard group. This is the default value.\n + 1 - Creates a DB shard group with a standby DB shard group in a different Availability Zone (AZ).\n + 2 - Creates a DB shard group with two standby DB shard groups in two different AZs.", + "minimum": 0, + "type": "integer" }, - "MinACU" : { - "description" : "The minimum capacity of the DB shard group in Aurora capacity units (ACUs).", - "type" : "number" + "DBClusterIdentifier": { + "description": "The name of the primary DB cluster for the DB shard group.", + "maxLength": 63, + "minLength": 1, + "type": "string" }, - "PubliclyAccessible" : { - "description" : "Indicates whether the DB shard group is publicly accessible.", - "type" : "boolean" + "DBShardGroupIdentifier": { + "description": "The name of the DB shard group.", + "maxLength": 63, + "minLength": 1, + "type": "string" }, - "Endpoint" : { - "description" : "The connection endpoint for the DB shard group.", - "type" : "string" + "DBShardGroupResourceId": { + "description": "", + "type": "string" }, - "Tags" : { - "type" : "array", - "maxItems" : 50, - "uniqueItems" : true, - "insertionOrder" : false, - "description" : "An array of key-value pairs to apply to this resource.", - "items" : { - "$ref" : "#/definitions/Tag" - } - } - }, - "definitions" : { - "Tag" : { - "description" : "A key-value pair to associate with a resource.", - "type" : "object", - "additionalProperties" : false, - "properties" : { - "Key" : { - "type" : "string", - "description" : "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "minLength" : 1, - "maxLength" : 128 - }, - "Value" : { - "type" : "string", - "description" : "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "minLength" : 0, - "maxLength" : 256 - } - }, - "required" : [ "Key" ] - } - }, - "additionalProperties" : false, - "propertyTransform" : { - "/properties/DBClusterIdentifier" : "$lowercase(DBClusterIdentifier)", - "/properties/DBShardGroupIdentifier" : "$lowercase(DBShardGroupIdentifier)" - }, - "required" : [ "DBClusterIdentifier", "MaxACU" ], - "createOnlyProperties" : [ "/properties/DBClusterIdentifier", "/properties/DBShardGroupIdentifier", "/properties/PubliclyAccessible" ], - "readOnlyProperties" : [ "/properties/DBShardGroupResourceId", "/properties/Endpoint" ], - "writeOnlyProperties" : [ "/properties/MinACU" ], - "primaryIdentifier" : [ "/properties/DBShardGroupIdentifier" ], - "handlers" : { - "create" : { - "permissions" : [ "rds:AddTagsToResource", "rds:CreateDBShardGroup", "rds:DescribeDBClusters", "rds:DescribeDBShardGroups", "rds:ListTagsForResource" ], - "timeoutInMinutes" : 2160 + "Endpoint": { + "description": "", + "type": "string" }, - "read" : { - "permissions" : [ "rds:DescribeDBShardGroups", "rds:ListTagsForResource" ] + "MaxACU": { + "description": "The maximum capacity of the DB shard group in Aurora capacity units (ACUs).", + "type": "number" }, - "update" : { - "permissions" : [ "rds:AddTagsToResource", "rds:DescribeDBShardGroups", "rds:DescribeDBClusters", "rds:RemoveTagsFromResource", "rds:ModifyDBShardGroup", "rds:ListTagsForResource" ] + "MinACU": { + "description": "The minimum capacity of the DB shard group in Aurora capacity units (ACUs).", + "type": "number" }, - "delete" : { - "permissions" : [ "rds:DeleteDBShardGroup", "rds:DescribeDBClusters", "rds:DescribeDbShardGroups" ], - "timeoutInMinutes" : 2160 + "PubliclyAccessible": { + "description": "Specifies whether the DB shard group is publicly accessible.\n When the DB shard group is publicly accessible, its Domain Name System (DNS) endpoint resolves to the private IP address from within the DB shard group's virtual private cloud (VPC). It resolves to the public IP address from outside of the DB shard group's VPC. Access to the DB shard group is ultimately controlled by the security group it uses. That public access is not permitted if the security group assigned to the DB shard group doesn't permit it.\n When the DB shard group isn't publicly accessible, it is an internal DB shard group with a DNS name that resolves to a private IP address.\n Default: The default behavior varies depending on whether ``DBSubnetGroupName`` is specified.\n If ``DBSubnetGroupName`` isn't specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the default VPC in the target Region doesn\u2019t have an internet gateway attached to it, the DB shard group is private.\n + If the default VPC in the target Region has an internet gateway attached to it, the DB shard group is public.\n \n If ``DBSubnetGroupName`` is specified, and ``PubliclyAccessible`` isn't specified, the following applies:\n + If the subnets are part of a VPC that doesn\u2019t have an internet gateway attached to it, the DB shard group is private.\n + If the subnets are part of a VPC that has an internet gateway attached to it, the DB shard group is public.", + "type": "boolean" }, - "list" : { - "permissions" : [ "rds:DescribeDBShardGroups", "rds:ListTagsForResource" ] + "Tags": { + "description": "An optional set of key-value pairs to associate arbitrary data of your choosing with the DB shard group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true } - } -} \ No newline at end of file + }, + "propertyTransform": { + "/properties/DBClusterIdentifier": "$lowercase(DBClusterIdentifier)", + "/properties/DBShardGroupIdentifier": "$lowercase(DBShardGroupIdentifier)" + }, + "readOnlyProperties": [ + "/properties/DBShardGroupResourceId", + "/properties/Endpoint" + ], + "required": [ + "DBClusterIdentifier", + "MaxACU" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RDS::DBShardGroup", + "writeOnlyProperties": [ + "/properties/MinACU" + ] +} diff --git a/src/schema/aws-rds-dbsubnetgroup.json b/src/schema/aws-rds-dbsubnetgroup.json index 8eb895ed..b0cf082a 100644 --- a/src/schema/aws-rds-dbsubnetgroup.json +++ b/src/schema/aws-rds-dbsubnetgroup.json @@ -1,122 +1,122 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DBSubnetGroupName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", - "properties": { - "Key": { - "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "The ``AWS::RDS::DBSubnetGroup`` resource creates a database subnet group. Subnet groups must contain at least two subnets in two different Availability Zones in the same region. \n For more information, see [Working with DB subnet groups](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html#USER_VPC.Subnets) in the *Amazon RDS User Guide*.", - "handlers": { - "create": { - "permissions": [ - "iam:CreateServiceLinkedRole", - "rds:CreateDBSubnetGroup", - "rds:DescribeDBSubnetGroups", - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource", - "rds:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "rds:DeleteDBSubnetGroup", - "rds:DescribeDBSubnetGroups", - "rds:ListTagsForResource" - ] - }, - "list": { - "permissions": [ - "rds:DescribeDBSubnetGroups" - ] - }, - "read": { - "permissions": [ - "rds:DescribeDBSubnetGroups", - "rds:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "rds:ModifyDBSubnetGroup", - "rds:DescribeDBSubnetGroups", - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource", - "rds:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/DBSubnetGroupName" - ], - "properties": { - "DBSubnetGroupDescription": { - "description": "The description for the DB subnet group.", - "type": "string" - }, - "DBSubnetGroupName": { - "description": "The name for the DB subnet group. This value is stored as a lowercase string.\n Constraints:\n + Must contain no more than 255 letters, numbers, periods, underscores, spaces, or hyphens.\n + Must not be default.\n + First character must be a letter.\n \n Example: ``mydbsubnetgroup``", - "type": "string" - }, - "SubnetIds": { - "description": "The EC2 Subnet IDs for the DB subnet group.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "description": "Tags to assign to the DB subnet group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": false - } - }, - "propertyTransform": { - "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)" - }, - "required": [ - "DBSubnetGroupDescription", - "SubnetIds" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RDS::DBSubnetGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DBSubnetGroupName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", + "properties": { + "Key": { + "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "The ``AWS::RDS::DBSubnetGroup`` resource creates a database subnet group. Subnet groups must contain at least two subnets in two different Availability Zones in the same region. \n For more information, see [Working with DB subnet groups](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html#USER_VPC.Subnets) in the *Amazon RDS User Guide*.", + "handlers": { + "create": { + "permissions": [ + "iam:CreateServiceLinkedRole", + "rds:CreateDBSubnetGroup", + "rds:DescribeDBSubnetGroups", + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource", + "rds:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "rds:DeleteDBSubnetGroup", + "rds:DescribeDBSubnetGroups", + "rds:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "rds:DescribeDBSubnetGroups" + ] + }, + "read": { + "permissions": [ + "rds:DescribeDBSubnetGroups", + "rds:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "rds:ModifyDBSubnetGroup", + "rds:DescribeDBSubnetGroups", + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource", + "rds:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DBSubnetGroupName" + ], + "properties": { + "DBSubnetGroupDescription": { + "description": "The description for the DB subnet group.", + "type": "string" + }, + "DBSubnetGroupName": { + "description": "The name for the DB subnet group. This value is stored as a lowercase string.\n Constraints:\n + Must contain no more than 255 letters, numbers, periods, underscores, spaces, or hyphens.\n + Must not be default.\n + First character must be a letter.\n \n Example: ``mydbsubnetgroup``", + "type": "string" + }, + "SubnetIds": { + "description": "The EC2 Subnet IDs for the DB subnet group.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "description": "Tags to assign to the DB subnet group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": false + } + }, + "propertyTransform": { + "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)" + }, + "required": [ + "DBSubnetGroupDescription", + "SubnetIds" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RDS::DBSubnetGroup" +} diff --git a/src/schema/aws-rds-eventsubscription.json b/src/schema/aws-rds-eventsubscription.json index 5234ef74..50a81077 100644 --- a/src/schema/aws-rds-eventsubscription.json +++ b/src/schema/aws-rds-eventsubscription.json @@ -1,141 +1,141 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SubscriptionName", - "/properties/SnsTopicArn" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", - "properties": { - "Key": { - "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "The ``AWS::RDS::EventSubscription`` resource allows you to receive notifications for Amazon Relational Database Service events through the Amazon Simple Notification Service (Amazon SNS). For more information, see [Using Amazon RDS Event Notification](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html) in the *Amazon RDS User Guide*.", - "handlers": { - "create": { - "permissions": [ - "iam:CreateServiceLinkedRole", - "rds:CreateEventSubscription", - "rds:DescribeEventSubscriptions", - "rds:ListTagsForResource", - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource" - ] - }, - "delete": { - "permissions": [ - "rds:DeleteEventSubscription", - "rds:DescribeEventSubscriptions" - ] - }, - "list": { - "permissions": [ - "rds:DescribeEventSubscriptions" - ] - }, - "read": { - "permissions": [ - "rds:DescribeEventSubscriptions", - "rds:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "rds:ModifyEventSubscription", - "rds:AddSourceIdentifierToSubscription", - "rds:RemoveSourceIdentifierFromSubscription", - "rds:DescribeEventSubscriptions", - "rds:ListTagsForResource", - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/SubscriptionName" - ], - "properties": { - "Enabled": { - "default": true, - "description": "Specifies whether to activate the subscription. If the event notification subscription isn't activated, the subscription is created but not active.", - "type": "boolean" - }, - "EventCategories": { - "description": "A list of event categories for a particular source type (``SourceType``) that you want to subscribe to. You can see a list of the categories for a given source type in the \"Amazon RDS event categories and event messages\" section of the [Amazon RDS User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.Messages.html) or the [Amazon Aurora User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Events.Messages.html). You can also see this list by using the ``DescribeEventCategories`` operation.", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "SnsTopicArn": { - "description": "The Amazon Resource Name (ARN) of the SNS topic created for event notification. SNS automatically creates the ARN when you create a topic and subscribe to it.\n RDS doesn't support FIFO (first in, first out) topics. For more information, see [Message ordering and deduplication (FIFO topics)](https://docs.aws.amazon.com/sns/latest/dg/sns-fifo-topics.html) in the *Amazon Simple Notification Service Developer Guide*.", - "type": "string" - }, - "SourceIds": { - "description": "The list of identifiers of the event sources for which events are returned. If not specified, then all sources are included in the response. An identifier must begin with a letter and must contain only ASCII letters, digits, and hyphens. It can't end with a hyphen or contain two consecutive hyphens.\n Constraints:\n + If ``SourceIds`` are supplied, ``SourceType`` must also be provided.\n + If the source type is a DB instance, a ``DBInstanceIdentifier`` value must be supplied.\n + If the source type is a DB cluster, a ``DBClusterIdentifier`` value must be supplied.\n + If the source type is a DB parameter group, a ``DBParameterGroupName`` value must be supplied.\n + If the source type is a DB security group, a ``DBSecurityGroupName`` value must be supplied.\n + If the source type is a DB snapshot, a ``DBSnapshotIdentifier`` value must be supplied.\n + If the source type is a DB cluster snapshot, a ``DBClusterSnapshotIdentifier`` value must be supplied.\n + If the source type is an RDS Proxy, a ``DBProxyName`` value must be supplied.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "SourceType": { - "description": "The type of source that is generating the events. For example, if you want to be notified of events generated by a DB instance, you set this parameter to ``db-instance``. For RDS Proxy events, specify ``db-proxy``. If this value isn't specified, all events are returned.\n Valid Values:``db-instance | db-cluster | db-parameter-group | db-security-group | db-snapshot | db-cluster-snapshot | db-proxy | zero-etl | custom-engine-version | blue-green-deployment``", - "type": "string" - }, - "SubscriptionName": { - "description": "The name of the subscription.\n Constraints: The name must be less than 255 characters.", - "maxLength": 255, - "type": "string" - }, - "Tags": { - "description": "An optional array of key-value pairs to apply to this subscription.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": false - } - }, - "propertyTransform": { - "/properties/SubscriptionName": "$lowercase(SubscriptionName)" - }, - "required": [ - "SnsTopicArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RDS::EventSubscription" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubscriptionName", + "/properties/SnsTopicArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", + "properties": { + "Key": { + "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "The ``AWS::RDS::EventSubscription`` resource allows you to receive notifications for Amazon Relational Database Service events through the Amazon Simple Notification Service (Amazon SNS). For more information, see [Using Amazon RDS Event Notification](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html) in the *Amazon RDS User Guide*.", + "handlers": { + "create": { + "permissions": [ + "iam:CreateServiceLinkedRole", + "rds:CreateEventSubscription", + "rds:DescribeEventSubscriptions", + "rds:ListTagsForResource", + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ] + }, + "delete": { + "permissions": [ + "rds:DeleteEventSubscription", + "rds:DescribeEventSubscriptions" + ] + }, + "list": { + "permissions": [ + "rds:DescribeEventSubscriptions" + ] + }, + "read": { + "permissions": [ + "rds:DescribeEventSubscriptions", + "rds:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "rds:ModifyEventSubscription", + "rds:AddSourceIdentifierToSubscription", + "rds:RemoveSourceIdentifierFromSubscription", + "rds:DescribeEventSubscriptions", + "rds:ListTagsForResource", + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/SubscriptionName" + ], + "properties": { + "Enabled": { + "default": true, + "description": "Specifies whether to activate the subscription. If the event notification subscription isn't activated, the subscription is created but not active.", + "type": "boolean" + }, + "EventCategories": { + "description": "A list of event categories for a particular source type (``SourceType``) that you want to subscribe to. You can see a list of the categories for a given source type in the \"Amazon RDS event categories and event messages\" section of the [Amazon RDS User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.Messages.html) or the [Amazon Aurora User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Events.Messages.html). You can also see this list by using the ``DescribeEventCategories`` operation.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SnsTopicArn": { + "description": "The Amazon Resource Name (ARN) of the SNS topic created for event notification. SNS automatically creates the ARN when you create a topic and subscribe to it.\n RDS doesn't support FIFO (first in, first out) topics. For more information, see [Message ordering and deduplication (FIFO topics)](https://docs.aws.amazon.com/sns/latest/dg/sns-fifo-topics.html) in the *Amazon Simple Notification Service Developer Guide*.", + "type": "string" + }, + "SourceIds": { + "description": "The list of identifiers of the event sources for which events are returned. If not specified, then all sources are included in the response. An identifier must begin with a letter and must contain only ASCII letters, digits, and hyphens. It can't end with a hyphen or contain two consecutive hyphens.\n Constraints:\n + If ``SourceIds`` are supplied, ``SourceType`` must also be provided.\n + If the source type is a DB instance, a ``DBInstanceIdentifier`` value must be supplied.\n + If the source type is a DB cluster, a ``DBClusterIdentifier`` value must be supplied.\n + If the source type is a DB parameter group, a ``DBParameterGroupName`` value must be supplied.\n + If the source type is a DB security group, a ``DBSecurityGroupName`` value must be supplied.\n + If the source type is a DB snapshot, a ``DBSnapshotIdentifier`` value must be supplied.\n + If the source type is a DB cluster snapshot, a ``DBClusterSnapshotIdentifier`` value must be supplied.\n + If the source type is an RDS Proxy, a ``DBProxyName`` value must be supplied.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SourceType": { + "description": "The type of source that is generating the events. For example, if you want to be notified of events generated by a DB instance, you set this parameter to ``db-instance``. For RDS Proxy events, specify ``db-proxy``. If this value isn't specified, all events are returned.\n Valid Values:``db-instance | db-cluster | db-parameter-group | db-security-group | db-snapshot | db-cluster-snapshot | db-proxy | zero-etl | custom-engine-version | blue-green-deployment``", + "type": "string" + }, + "SubscriptionName": { + "description": "The name of the subscription.\n Constraints: The name must be less than 255 characters.", + "maxLength": 255, + "type": "string" + }, + "Tags": { + "description": "An optional array of key-value pairs to apply to this subscription.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": false + } + }, + "propertyTransform": { + "/properties/SubscriptionName": "$lowercase(SubscriptionName)" + }, + "required": [ + "SnsTopicArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RDS::EventSubscription" +} diff --git a/src/schema/aws-rds-globalcluster.json b/src/schema/aws-rds-globalcluster.json index eea93202..958180e9 100644 --- a/src/schema/aws-rds-globalcluster.json +++ b/src/schema/aws-rds-globalcluster.json @@ -1,148 +1,172 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GlobalClusterIdentifier", - "/properties/SourceDBClusterIdentifier", - "/properties/StorageEncrypted", - "/properties/Engine" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::RDS::GlobalCluster", - "handlers": { - "create": { - "permissions": [ - "rds:CreateGlobalCluster", - "rds:DescribeDBClusters", - "rds:DescribeGlobalClusters" - ] - }, - "delete": { - "permissions": [ - "rds:DescribeGlobalClusters", - "rds:DeleteGlobalCluster", - "rds:RemoveFromGlobalCluster", - "rds:DescribeDBClusters" - ] - }, - "list": { - "permissions": [ - "rds:DescribeGlobalClusters" - ] - }, - "read": { - "permissions": [ - "rds:DescribeGlobalClusters" - ] - }, - "update": { - "permissions": [ - "rds:ModifyGlobalCluster", - "rds:DescribeGlobalClusters", - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource" - ] - } - }, - "oneOf": [ - { - "required": [ - "SourceDBClusterIdentifier" - ] - }, - { - "required": [ - "Engine" - ] - } - ], - "primaryIdentifier": [ - "/properties/GlobalClusterIdentifier" - ], - "properties": { - "DeletionProtection": { - "description": "The deletion protection setting for the new global database. The global database can't be deleted when deletion protection is enabled.", - "type": "boolean" - }, - "Engine": { - "description": "The name of the database engine to be used for this DB cluster. Valid Values: aurora (for MySQL 5.6-compatible Aurora), aurora-mysql (for MySQL 5.7-compatible Aurora).\nIf you specify the SourceDBClusterIdentifier property, don't specify this property. The value is inherited from the cluster.", - "enum": [ - "aurora", - "aurora-mysql", - "aurora-postgresql" - ], - "type": "string" - }, - "EngineLifecycleSupport": { - "description": "The life cycle type of the global cluster. You can use this setting to enroll your global cluster into Amazon RDS Extended Support.", - "type": "string" - }, - "EngineVersion": { - "description": "The version number of the database engine to use. If you specify the SourceDBClusterIdentifier property, don't specify this property. The value is inherited from the cluster.", - "type": "string" - }, - "GlobalClusterIdentifier": { - "description": "The cluster identifier of the new global database cluster. This parameter is stored as a lowercase string.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", - "type": "string" - }, - "SourceDBClusterIdentifier": { - "description": "The Amazon Resource Name (ARN) to use as the primary cluster of the global database. This parameter is optional. This parameter is stored as a lowercase string.", - "oneOf": [ - { - "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$" - }, - { - "pattern": "^(?=.{40,128}$)arn.*" - } - ], - "type": "string" - }, - "StorageEncrypted": { - "description": " The storage encryption setting for the new global database cluster.\nIf you specify the SourceDBClusterIdentifier property, don't specify this property. The value is inherited from the cluster.", - "type": "boolean" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "propertyTransform": { - "/properties/GlobalClusterIdentifier": "$lowercase(GlobalClusterIdentifier)" - }, - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", - "tagging": { - "taggable": true - }, - "typeName": "AWS::RDS::GlobalCluster" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GlobalClusterIdentifier", + "/properties/SourceDBClusterIdentifier", + "/properties/StorageEncrypted", + "/properties/Engine" + ], + "definitions": { + "GlobalEndpoint": { + "additionalProperties": false, + "properties": { + "Address": { + "description": "The writer endpoint for the global database cluster. This endpoint always points to the writer DB instance in the current primary cluster.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::RDS::GlobalCluster", + "handlers": { + "create": { + "permissions": [ + "rds:CreateGlobalCluster", + "rds:DescribeDBClusters", + "rds:DescribeGlobalClusters" + ] + }, + "delete": { + "permissions": [ + "rds:DescribeGlobalClusters", + "rds:DeleteGlobalCluster", + "rds:RemoveFromGlobalCluster", + "rds:DescribeDBClusters" + ] + }, + "list": { + "permissions": [ + "rds:DescribeGlobalClusters" + ] + }, + "read": { + "permissions": [ + "rds:DescribeGlobalClusters" + ] + }, + "update": { + "permissions": [ + "rds:ModifyGlobalCluster", + "rds:DescribeGlobalClusters", + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ] + } + }, + "oneOf": [ + { + "required": [ + "SourceDBClusterIdentifier" + ] + }, + { + "required": [ + "Engine" + ] + } + ], + "primaryIdentifier": [ + "/properties/GlobalClusterIdentifier" + ], + "properties": { + "DeletionProtection": { + "description": "The deletion protection setting for the new global database. The global database can't be deleted when deletion protection is enabled.", + "type": "boolean" + }, + "Engine": { + "description": "The name of the database engine to be used for this DB cluster. Valid Values: aurora (for MySQL 5.6-compatible Aurora), aurora-mysql (for MySQL 5.7-compatible Aurora).\nIf you specify the SourceDBClusterIdentifier property, don't specify this property. The value is inherited from the cluster.", + "enum": [ + "aurora", + "aurora-mysql", + "aurora-postgresql" + ], + "type": "string" + }, + "EngineLifecycleSupport": { + "description": "The life cycle type of the global cluster. You can use this setting to enroll your global cluster into Amazon RDS Extended Support.", + "type": "string" + }, + "EngineVersion": { + "description": "The version number of the database engine to use. If you specify the SourceDBClusterIdentifier property, don't specify this property. The value is inherited from the cluster.", + "type": "string" + }, + "GlobalClusterIdentifier": { + "description": "The cluster identifier of the new global database cluster. This parameter is stored as a lowercase string.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "GlobalEndpoint": { + "$ref": "#/definitions/GlobalEndpoint" + }, + "SourceDBClusterIdentifier": { + "description": "The Amazon Resource Name (ARN) to use as the primary cluster of the global database. This parameter is optional. This parameter is stored as a lowercase string.", + "oneOf": [ + { + "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$" + }, + { + "pattern": "^(?=.{40,128}$)arn.*" + } + ], + "type": "string" + }, + "StorageEncrypted": { + "description": " The storage encryption setting for the new global database cluster.\nIf you specify the SourceDBClusterIdentifier property, don't specify this property. The value is inherited from the cluster.", + "type": "boolean" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": { + "/properties/GlobalClusterIdentifier": "$lowercase(GlobalClusterIdentifier)" + }, + "readOnlyProperties": [ + "/properties/GlobalEndpoint" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RDS::GlobalCluster" +} diff --git a/src/schema/aws-rds-integration.json b/src/schema/aws-rds-integration.json index 107cdfe8..d1af9c22 100644 --- a/src/schema/aws-rds-integration.json +++ b/src/schema/aws-rds-integration.json @@ -1,174 +1,174 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SourceArn", - "/properties/TargetArn", - "/properties/KMSKeyId", - "/properties/AdditionalEncryptionContext" - ], - "definitions": { - "EncryptionContextMap": { - "additionalProperties": false, - "description": "An optional set of non-secret key\u2013value pairs that contains additional contextual information about the data.", - "patternProperties": { - "^[\\s\\S]*$": { - "maxLength": 131072, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS Resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS Resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", - "properties": { - "Key": { - "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "description": "A zero-ETL integration with Amazon Redshift.", - "handlers": { - "create": { - "permissions": [ - "rds:CreateIntegration", - "rds:DescribeIntegrations", - "rds:AddTagsToResource", - "kms:CreateGrant", - "kms:DescribeKey", - "redshift:CreateInboundIntegration" - ] - }, - "delete": { - "permissions": [ - "rds:DeleteIntegration", - "rds:DescribeIntegrations" - ] - }, - "list": { - "permissions": [ - "rds:DescribeIntegrations" - ] - }, - "read": { - "permissions": [ - "rds:DescribeIntegrations" - ] - }, - "update": { - "permissions": [ - "rds:DescribeIntegrations", - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource", - "rds:ModifyIntegration" - ] - } - }, - "primaryIdentifier": [ - "/properties/IntegrationArn" - ], - "properties": { - "AdditionalEncryptionContext": { - "$ref": "#/definitions/EncryptionContextMap", - "description": "An optional set of non-secret key\u2013value pairs that contains additional contextual information about the data. For more information, see [Encryption context](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) in the *Key Management Service Developer Guide*.\n You can only include this parameter if you specify the ``KMSKeyId`` parameter." - }, - "CreateTime": { - "description": "", - "type": "string" - }, - "DataFilter": { - "description": "Data filters for the integration. These filters determine which tables from the source database are sent to the target Amazon Redshift data warehouse.", - "maxLength": 25600, - "minLength": 1, - "pattern": "[a-zA-Z0-9_ \"\\\\\\-$,*.:?+\\/]*", - "type": "string" - }, - "Description": { - "description": "A description of the integration.", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "IntegrationArn": { - "description": "", - "type": "string" - }, - "IntegrationName": { - "description": "The name of the integration.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "KMSKeyId": { - "description": "The AWS Key Management System (AWS KMS) key identifier for the key to use to encrypt the integration. If you don't specify an encryption key, RDS uses a default AWS owned key.", - "type": "string" - }, - "SourceArn": { - "description": "The Amazon Resource Name (ARN) of the database to use as the source for replication.", - "type": "string" - }, - "Tags": { - "description": "A list of tags. For more information, see [Tagging Amazon RDS Resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide.*.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "TargetArn": { - "description": "The ARN of the Redshift data warehouse to use as the target for replication.", - "type": "string" - } - }, - "propertyTransform": { - "/properties/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KmsKeyId])", - "/properties/SourceArn": "$lowercase(SourceArn)" - }, - "readOnlyProperties": [ - "/properties/IntegrationArn", - "/properties/CreateTime" - ], - "required": [ - "SourceArn", - "TargetArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "permissions": [ - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RDS::Integration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SourceArn", + "/properties/TargetArn", + "/properties/KMSKeyId", + "/properties/AdditionalEncryptionContext" + ], + "definitions": { + "EncryptionContextMap": { + "additionalProperties": false, + "description": "An optional set of non-secret key\u2013value pairs that contains additional contextual information about the data.", + "patternProperties": { + "^[\\s\\S]*$": { + "maxLength": 131072, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS Resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS Resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", + "properties": { + "Key": { + "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "description": "A zero-ETL integration with Amazon Redshift.", + "handlers": { + "create": { + "permissions": [ + "rds:CreateIntegration", + "rds:DescribeIntegrations", + "rds:AddTagsToResource", + "kms:CreateGrant", + "kms:DescribeKey", + "redshift:CreateInboundIntegration" + ] + }, + "delete": { + "permissions": [ + "rds:DeleteIntegration", + "rds:DescribeIntegrations" + ] + }, + "list": { + "permissions": [ + "rds:DescribeIntegrations" + ] + }, + "read": { + "permissions": [ + "rds:DescribeIntegrations" + ] + }, + "update": { + "permissions": [ + "rds:DescribeIntegrations", + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource", + "rds:ModifyIntegration" + ] + } + }, + "primaryIdentifier": [ + "/properties/IntegrationArn" + ], + "properties": { + "AdditionalEncryptionContext": { + "$ref": "#/definitions/EncryptionContextMap", + "description": "An optional set of non-secret key\u2013value pairs that contains additional contextual information about the data. For more information, see [Encryption context](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) in the *Key Management Service Developer Guide*.\n You can only include this parameter if you specify the ``KMSKeyId`` parameter." + }, + "CreateTime": { + "description": "", + "type": "string" + }, + "DataFilter": { + "description": "Data filters for the integration. These filters determine which tables from the source database are sent to the target Amazon Redshift data warehouse.", + "maxLength": 25600, + "minLength": 1, + "pattern": "[a-zA-Z0-9_ \"\\\\\\-$,*.:?+\\/]*", + "type": "string" + }, + "Description": { + "description": "A description of the integration.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "IntegrationArn": { + "description": "", + "type": "string" + }, + "IntegrationName": { + "description": "The name of the integration.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "KMSKeyId": { + "description": "The AWS Key Management System (AWS KMS) key identifier for the key to use to encrypt the integration. If you don't specify an encryption key, RDS uses a default AWS owned key.", + "type": "string" + }, + "SourceArn": { + "description": "The Amazon Resource Name (ARN) of the database to use as the source for replication.", + "type": "string" + }, + "Tags": { + "description": "A list of tags. For more information, see [Tagging Amazon RDS Resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide.*.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "TargetArn": { + "description": "The ARN of the Redshift data warehouse to use as the target for replication.", + "type": "string" + } + }, + "propertyTransform": { + "/properties/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KmsKeyId])", + "/properties/SourceArn": "$lowercase(SourceArn)" + }, + "readOnlyProperties": [ + "/properties/IntegrationArn", + "/properties/CreateTime" + ], + "required": [ + "SourceArn", + "TargetArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "permissions": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RDS::Integration" +} diff --git a/src/schema/aws-rds-optiongroup.json b/src/schema/aws-rds-optiongroup.json index 33efc943..50a9b052 100644 --- a/src/schema/aws-rds-optiongroup.json +++ b/src/schema/aws-rds-optiongroup.json @@ -1,197 +1,197 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/EngineName", - "/properties/MajorEngineVersion", - "/properties/OptionGroupDescription", - "/properties/OptionGroupName" - ], - "definitions": { - "OptionConfiguration": { - "additionalProperties": false, - "description": "The ``OptionConfiguration`` property type specifies an individual option, and its settings, within an ``AWS::RDS::OptionGroup`` resource.", - "properties": { - "DBSecurityGroupMemberships": { - "description": "A list of DB security groups used for this option.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "OptionName": { - "description": "The configuration of options to include in a group.", - "type": "string" - }, - "OptionSettings": { - "description": "The option settings to include in an option group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/OptionSetting" - }, - "type": "array" - }, - "OptionVersion": { - "description": "The version for the option.", - "type": "string" - }, - "Port": { - "description": "The optional port for the option.", - "type": "integer" - }, - "VpcSecurityGroupMemberships": { - "description": "A list of VPC security group names used for this option.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "OptionName" - ], - "type": "object" - }, - "OptionSetting": { - "additionalProperties": false, - "description": "The ``OptionSetting`` property type specifies the value for an option within an ``OptionSetting`` property.", - "properties": { - "Name": { - "description": "The name of the option that has settings that you can set.", - "type": "string" - }, - "Value": { - "description": "The current value of the option setting.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", - "properties": { - "Key": { - "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "The ``AWS::RDS::OptionGroup`` resource creates or updates an option group, to enable and configure features that are specific to a particular DB engine.", - "handlers": { - "create": { - "permissions": [ - "iam:CreateServiceLinkedRole", - "rds:AddTagsToResource", - "rds:CreateOptionGroup", - "rds:DescribeOptionGroups", - "rds:ListTagsForResource", - "rds:ModifyOptionGroup", - "rds:RemoveTagsFromResource" - ] - }, - "delete": { - "permissions": [ - "rds:DeleteOptionGroup", - "rds:DescribeOptionGroups", - "rds:ListTagsForResource", - "rds:RemoveTagsFromResource" - ] - }, - "list": { - "permissions": [ - "rds:DescribeOptionGroups" - ] - }, - "read": { - "permissions": [ - "rds:DescribeOptionGroups", - "rds:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "rds:AddTagsToResource", - "rds:DescribeOptionGroups", - "rds:ListTagsForResource", - "rds:ModifyOptionGroup", - "rds:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/OptionGroupName" - ], - "properties": { - "EngineName": { - "description": "Specifies the name of the engine that this option group should be associated with.\n Valid Values: \n + ``mariadb`` \n + ``mysql`` \n + ``oracle-ee`` \n + ``oracle-ee-cdb`` \n + ``oracle-se2`` \n + ``oracle-se2-cdb`` \n + ``postgres`` \n + ``sqlserver-ee`` \n + ``sqlserver-se`` \n + ``sqlserver-ex`` \n + ``sqlserver-web``", - "type": "string" - }, - "MajorEngineVersion": { - "description": "Specifies the major version of the engine that this option group should be associated with.", - "type": "string" - }, - "OptionConfigurations": { - "arrayType": "AttributeList", - "description": "A list of all available options for an option group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/OptionConfiguration" - }, - "type": "array" - }, - "OptionGroupDescription": { - "description": "The description of the option group.", - "type": "string" - }, - "OptionGroupName": { - "description": "The name of the option group to be created.\n Constraints:\n + Must be 1 to 255 letters, numbers, or hyphens\n + First character must be a letter\n + Can't end with a hyphen or contain two consecutive hyphens\n \n Example: ``myoptiongroup`` \n If you don't specify a value for ``OptionGroupName`` property, a name is automatically created for the option group.\n This value is stored as a lowercase string.", - "type": "string" - }, - "Tags": { - "description": "Tags to assign to the option group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "propertyTransform": { - "/properties/OptionGroupName": "$lowercase(OptionGroupName)" - }, - "required": [ - "EngineName", - "MajorEngineVersion", - "OptionGroupDescription" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RDS::OptionGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EngineName", + "/properties/MajorEngineVersion", + "/properties/OptionGroupDescription", + "/properties/OptionGroupName" + ], + "definitions": { + "OptionConfiguration": { + "additionalProperties": false, + "description": "The ``OptionConfiguration`` property type specifies an individual option, and its settings, within an ``AWS::RDS::OptionGroup`` resource.", + "properties": { + "DBSecurityGroupMemberships": { + "description": "A list of DB security groups used for this option.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "OptionName": { + "description": "The configuration of options to include in a group.", + "type": "string" + }, + "OptionSettings": { + "description": "The option settings to include in an option group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/OptionSetting" + }, + "type": "array" + }, + "OptionVersion": { + "description": "The version for the option.", + "type": "string" + }, + "Port": { + "description": "The optional port for the option.", + "type": "integer" + }, + "VpcSecurityGroupMemberships": { + "description": "A list of VPC security group names used for this option.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "OptionName" + ], + "type": "object" + }, + "OptionSetting": { + "additionalProperties": false, + "description": "The ``OptionSetting`` property type specifies the value for an option within an ``OptionSetting`` property.", + "properties": { + "Name": { + "description": "The name of the option that has settings that you can set.", + "type": "string" + }, + "Value": { + "description": "The current value of the option setting.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Metadata assigned to an Amazon RDS resource consisting of a key-value pair.\n For more information, see [Tagging Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide* or [Tagging Amazon Aurora and Amazon RDS resources](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html) in the *Amazon Aurora User Guide*.", + "properties": { + "Key": { + "description": "A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and can't be prefixed with ``aws:`` or ``rds:``. The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-@]*)$\").", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "The ``AWS::RDS::OptionGroup`` resource creates or updates an option group, to enable and configure features that are specific to a particular DB engine.", + "handlers": { + "create": { + "permissions": [ + "iam:CreateServiceLinkedRole", + "rds:AddTagsToResource", + "rds:CreateOptionGroup", + "rds:DescribeOptionGroups", + "rds:ListTagsForResource", + "rds:ModifyOptionGroup", + "rds:RemoveTagsFromResource" + ] + }, + "delete": { + "permissions": [ + "rds:DeleteOptionGroup", + "rds:DescribeOptionGroups", + "rds:ListTagsForResource", + "rds:RemoveTagsFromResource" + ] + }, + "list": { + "permissions": [ + "rds:DescribeOptionGroups" + ] + }, + "read": { + "permissions": [ + "rds:DescribeOptionGroups", + "rds:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "rds:AddTagsToResource", + "rds:DescribeOptionGroups", + "rds:ListTagsForResource", + "rds:ModifyOptionGroup", + "rds:RemoveTagsFromResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/OptionGroupName" + ], + "properties": { + "EngineName": { + "description": "Specifies the name of the engine that this option group should be associated with.\n Valid Values: \n + ``mariadb`` \n + ``mysql`` \n + ``oracle-ee`` \n + ``oracle-ee-cdb`` \n + ``oracle-se2`` \n + ``oracle-se2-cdb`` \n + ``postgres`` \n + ``sqlserver-ee`` \n + ``sqlserver-se`` \n + ``sqlserver-ex`` \n + ``sqlserver-web``", + "type": "string" + }, + "MajorEngineVersion": { + "description": "Specifies the major version of the engine that this option group should be associated with.", + "type": "string" + }, + "OptionConfigurations": { + "arrayType": "AttributeList", + "description": "A list of all available options for an option group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/OptionConfiguration" + }, + "type": "array" + }, + "OptionGroupDescription": { + "description": "The description of the option group.", + "type": "string" + }, + "OptionGroupName": { + "description": "The name of the option group to be created.\n Constraints:\n + Must be 1 to 255 letters, numbers, or hyphens\n + First character must be a letter\n + Can't end with a hyphen or contain two consecutive hyphens\n \n Example: ``myoptiongroup`` \n If you don't specify a value for ``OptionGroupName`` property, a name is automatically created for the option group.\n This value is stored as a lowercase string.", + "type": "string" + }, + "Tags": { + "description": "Tags to assign to the option group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "propertyTransform": { + "/properties/OptionGroupName": "$lowercase(OptionGroupName)" + }, + "required": [ + "EngineName", + "MajorEngineVersion", + "OptionGroupDescription" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RDS::OptionGroup" +} diff --git a/src/schema/aws-redshift-cluster.json b/src/schema/aws-redshift-cluster.json index 30739089..5e0195db 100644 --- a/src/schema/aws-redshift-cluster.json +++ b/src/schema/aws-redshift-cluster.json @@ -1,495 +1,495 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClusterIdentifier", - "/properties/OwnerAccount", - "/properties/SnapshotIdentifier", - "/properties/DBName", - "/properties/SnapshotClusterIdentifier", - "/properties/ClusterSubnetGroupName", - "/properties/MasterUsername" - ], - "definitions": { - "Endpoint": { - "additionalProperties": false, - "properties": { - "Address": { - "type": "string" - }, - "Port": { - "type": "string" - } - }, - "type": "object" - }, - "LoggingProperties": { - "additionalProperties": false, - "properties": { - "BucketName": { - "relationshipRef": { - "propertyPath": "/properties/BucketName", - "typeName": "AWS::S3::Bucket" - }, - "type": "string" - }, - "LogDestinationType": { - "type": "string" - }, - "LogExports": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "S3KeyPrefix": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "An example resource schema demonstrating some basic constructs and validation rules.", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "redshift:DescribeClusters", - "redshift:CreateCluster", - "redshift:RestoreFromClusterSnapshot", - "redshift:EnableLogging", - "redshift:DescribeLoggingStatus", - "redshift:CreateTags", - "redshift:DescribeTags", - "redshift:GetResourcePolicy", - "redshift:PutResourcePolicy", - "redshift:ModifyClusterMaintenance", - "ec2:DescribeVpcs", - "ec2:DescribeSubnets", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeAddresses", - "ec2:AssociateAddress", - "ec2:CreateNetworkInterface", - "ec2:ModifyNetworkInterfaceAttribute", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:AllocateAddress", - "ec2:CreateSecurityGroup", - "ec2:DescribeVpcAttribute", - "ec2:DescribeSecurityGroups", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroupRules", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeNetworkAcls", - "ec2:DescribeRouteTables", - "cloudwatch:PutMetricData" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeClusters", - "redshift:DeleteCluster" - ], - "timeoutInMinutes": 2160 - }, - "list": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeClusters" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeClusters", - "redshift:DescribeLoggingStatus", - "redshift:DescribeSnapshotCopyGrant", - "redshift:DescribeClusterDbRevisions", - "redshift:DescribeTags", - "redshift:GetResourcePolicy" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "redshift:DescribeClusters", - "redshift:ModifyCluster", - "redshift:ModifyClusterIamRoles", - "redshift:EnableLogging", - "redshift:CreateTags", - "redshift:DeleteTags", - "redshift:DescribeTags", - "redshift:DisableLogging", - "redshift:DescribeLoggingStatus", - "redshift:RebootCluster", - "redshift:EnableSnapshotCopy", - "redshift:DisableSnapshotCopy", - "redshift:ModifySnapshotCopyRetentionPeriod", - "redshift:ModifyAquaConfiguration", - "redshift:ResizeCluster", - "redshift:ModifyClusterMaintenance", - "redshift:DescribeClusterDbRevisions", - "redshift:ModifyClusterDbRevisions", - "redshift:PauseCluster", - "redshift:ResumeCluster", - "redshift:RotateEncryptionKey", - "redshift:FailoverPrimaryCompute", - "redshift:PutResourcePolicy", - "redshift:GetResourcePolicy", - "redshift:DeleteResourcePolicy", - "cloudwatch:PutMetricData" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/ClusterIdentifier" - ], - "properties": { - "AllowVersionUpgrade": { - "description": "Major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster. Default value is True", - "type": "boolean" - }, - "AquaConfigurationStatus": { - "description": "The value represents how the cluster is configured to use AQUA (Advanced Query Accelerator) after the cluster is restored. Possible values include the following.\n\nenabled - Use AQUA if it is available for the current Region and Amazon Redshift node type.\ndisabled - Don't use AQUA.\nauto - Amazon Redshift determines whether to use AQUA.\n", - "type": "string" - }, - "AutomatedSnapshotRetentionPeriod": { - "description": "The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Default value is 1", - "type": "integer" - }, - "AvailabilityZone": { - "description": "The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint", - "type": "string" - }, - "AvailabilityZoneRelocation": { - "description": "The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster modification is complete.", - "type": "boolean" - }, - "AvailabilityZoneRelocationStatus": { - "description": "The availability zone relocation status of the cluster", - "type": "string" - }, - "Classic": { - "description": "A boolean value indicating whether the resize operation is using the classic resize process. If you don't provide this parameter or set the value to false , the resize type is elastic.", - "type": "boolean" - }, - "ClusterIdentifier": { - "description": "A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. All alphabetical characters must be lower case, no hypens at the end, no two consecutive hyphens. Cluster name should be unique for all clusters within an AWS account", - "maxLength": 63, - "type": "string" - }, - "ClusterNamespaceArn": { - "description": "The Amazon Resource Name (ARN) of the cluster namespace.", - "type": "string" - }, - "ClusterParameterGroupName": { - "description": "The name of the parameter group to be associated with this cluster.", - "maxLength": 255, - "type": "string" - }, - "ClusterSecurityGroups": { - "description": "A list of security groups to be associated with this cluster.", - "insertionOrder": false, - "items": { - "anyOf": [ - { - "relationshipRef": { - "propertyPath": "/properties/Id", - "typeName": "AWS::EC2::SecurityGroup" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/Id", - "typeName": "AWS::Redshift::ClusterSecurityGroup" - } - } - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ClusterSubnetGroupName": { - "description": "The name of a cluster subnet group to be associated with this cluster.", - "type": "string" - }, - "ClusterType": { - "description": "The type of the cluster. When cluster type is specified as single-node, the NumberOfNodes parameter is not required and if multi-node, the NumberOfNodes parameter is required", - "type": "string" - }, - "ClusterVersion": { - "description": "The version of the Amazon Redshift engine software that you want to deploy on the cluster.The version selected runs on all the nodes in the cluster.", - "type": "string" - }, - "DBName": { - "description": "The name of the first database to be created when the cluster is created. To create additional databases after the cluster is created, connect to the cluster with a SQL client and use SQL commands to create a database.", - "type": "string" - }, - "DeferMaintenance": { - "description": "A boolean indicating whether to enable the deferred maintenance window.", - "type": "boolean" - }, - "DeferMaintenanceDuration": { - "description": "An integer indicating the duration of the maintenance window in days. If you specify a duration, you can't specify an end time. The duration must be 45 days or less.", - "type": "integer" - }, - "DeferMaintenanceEndTime": { - "description": "A timestamp indicating end time for the deferred maintenance window. If you specify an end time, you can't specify a duration.", - "type": "string" - }, - "DeferMaintenanceIdentifier": { - "description": "A unique identifier for the deferred maintenance window.", - "type": "string" - }, - "DeferMaintenanceStartTime": { - "description": "A timestamp indicating the start time for the deferred maintenance window.", - "type": "string" - }, - "DestinationRegion": { - "description": "The destination AWS Region that you want to copy snapshots to. Constraints: Must be the name of a valid AWS Region. For more information, see Regions and Endpoints in the Amazon Web Services [https://docs.aws.amazon.com/general/latest/gr/rande.html#redshift_region] General Reference", - "type": "string" - }, - "ElasticIp": { - "description": "The Elastic IP (EIP) address for the cluster.", - "type": "string" - }, - "Encrypted": { - "description": "If true, the data in the cluster is encrypted at rest.", - "type": "boolean" - }, - "Endpoint": { - "$ref": "#/definitions/Endpoint" - }, - "EnhancedVpcRouting": { - "description": "An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see Enhanced VPC Routing in the Amazon Redshift Cluster Management Guide.\n\nIf this option is true , enhanced VPC routing is enabled.\n\nDefault: false", - "type": "boolean" - }, - "HsmClientCertificateIdentifier": { - "description": "Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM", - "type": "string" - }, - "HsmConfigurationIdentifier": { - "description": "Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.", - "type": "string" - }, - "IamRoles": { - "description": "A list of AWS Identity and Access Management (IAM) roles that can be used by the cluster to access other AWS services. You must supply the IAM roles in their Amazon Resource Name (ARN) format. You can supply up to 50 IAM roles in a single request", - "insertionOrder": false, - "items": { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::IAM::Role" - }, - "type": "string" - }, - "maxItems": 50, - "type": "array" - }, - "KmsKeyId": { - "anyOf": [ - { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::KMS::Key" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/KeyId", - "typeName": "AWS::KMS::Key" - } - } - ], - "description": "The AWS Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.", - "type": "string" - }, - "LoggingProperties": { - "$ref": "#/definitions/LoggingProperties" - }, - "MaintenanceTrackName": { - "description": "The name for the maintenance track that you want to assign for the cluster. This name change is asynchronous. The new track name stays in the PendingModifiedValues for the cluster until the next maintenance window. When the maintenance track changes, the cluster is switched to the latest cluster release available for the maintenance track. At this point, the maintenance track name is applied.", - "type": "string" - }, - "ManageMasterPassword": { - "description": "A boolean indicating if the redshift cluster's admin user credentials is managed by Redshift or not. You can't use MasterUserPassword if ManageMasterPassword is true. If ManageMasterPassword is false or not set, Amazon Redshift uses MasterUserPassword for the admin user account's password.", - "type": "boolean" - }, - "ManualSnapshotRetentionPeriod": { - "description": "The number of days to retain newly copied snapshots in the destination AWS Region after they are copied from the source AWS Region. If the value is -1, the manual snapshot is retained indefinitely.\n\nThe value must be either -1 or an integer between 1 and 3,653.", - "type": "integer" - }, - "MasterPasswordSecretArn": { - "description": "The Amazon Resource Name (ARN) for the cluster's admin user credentials secret.", - "type": "string" - }, - "MasterPasswordSecretKmsKeyId": { - "anyOf": [ - { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::KMS::Key" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/KeyId", - "typeName": "AWS::KMS::Key" - } - } - ], - "description": "The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin user credentials secret.", - "type": "string" - }, - "MasterUserPassword": { - "description": "The password associated with the master user account for the cluster that is being created. You can't use MasterUserPassword if ManageMasterPassword is true. Password must be between 8 and 64 characters in length, should have at least one uppercase letter.Must contain at least one lowercase letter.Must contain one number.Can be any printable ASCII character.", - "maxLength": 64, - "type": "string" - }, - "MasterUsername": { - "description": "The user name associated with the master user account for the cluster that is being created. The user name can't be PUBLIC and first character must be a letter.", - "maxLength": 128, - "type": "string" - }, - "MultiAZ": { - "description": "A boolean indicating if the redshift cluster is multi-az or not. If you don't provide this parameter or set the value to false, the redshift cluster will be single-az.", - "type": "boolean" - }, - "NamespaceResourcePolicy": { - "description": "The namespace resource policy document that will be attached to a Redshift cluster.", - "type": "object" - }, - "NodeType": { - "description": "The node type to be provisioned for the cluster.Valid Values: ds2.xlarge | ds2.8xlarge | dc1.large | dc1.8xlarge | dc2.large | dc2.8xlarge | ra3.4xlarge | ra3.16xlarge", - "type": "string" - }, - "NumberOfNodes": { - "description": "The number of compute nodes in the cluster. This parameter is required when the ClusterType parameter is specified as multi-node.", - "type": "integer" - }, - "OwnerAccount": { - "type": "string" - }, - "Port": { - "description": "The port number on which the cluster accepts incoming connections. The cluster is accessible only via the JDBC and ODBC connection strings", - "type": "integer" - }, - "PreferredMaintenanceWindow": { - "description": "The weekly time range (in UTC) during which automated cluster maintenance can occur.", - "type": "string" - }, - "PubliclyAccessible": { - "description": "If true, the cluster can be accessed from a public network.", - "type": "boolean" - }, - "ResourceAction": { - "description": "The Redshift operation to be performed. Resource Action supports pause-cluster, resume-cluster, failover-primary-compute APIs", - "type": "string" - }, - "RevisionTarget": { - "description": "The identifier of the database revision. You can retrieve this value from the response to the DescribeClusterDbRevisions request.", - "type": "string" - }, - "RotateEncryptionKey": { - "description": "A boolean indicating if we want to rotate Encryption Keys.", - "type": "boolean" - }, - "SnapshotClusterIdentifier": { - "description": "The name of the cluster the source snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.", - "type": "string" - }, - "SnapshotCopyGrantName": { - "description": "The name of the snapshot copy grant to use when snapshots of an AWS KMS-encrypted cluster are copied to the destination region.", - "type": "string" - }, - "SnapshotCopyManual": { - "description": "Indicates whether to apply the snapshot retention period to newly copied manual snapshots instead of automated snapshots.", - "type": "boolean" - }, - "SnapshotCopyRetentionPeriod": { - "description": "The number of days to retain automated snapshots in the destination region after they are copied from the source region. \n\n Default is 7. \n\n Constraints: Must be at least 1 and no more than 35.", - "type": "integer" - }, - "SnapshotIdentifier": { - "description": "The name of the snapshot from which to create the new cluster. This parameter isn't case sensitive.", - "type": "string" - }, - "Tags": { - "description": "The list of tags for the cluster parameter group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": false - }, - "VpcSecurityGroupIds": { - "description": "A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.", - "insertionOrder": false, - "items": { - "relationshipRef": { - "propertyPath": "/properties/VpcId", - "typeName": "AWS::EC2::VPC" - }, - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/DeferMaintenanceIdentifier", - "/properties/Endpoint/Port", - "/properties/Endpoint/Address", - "/properties/ClusterNamespaceArn", - "/properties/MasterPasswordSecretArn" - ], - "required": [ - "NodeType", - "MasterUsername", - "DBName", - "ClusterType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": true - }, - "typeName": "AWS::Redshift::Cluster", - "writeOnlyProperties": [ - "/properties/MasterUserPassword", - "/properties/Classic", - "/properties/SnapshotIdentifier", - "/properties/DeferMaintenance", - "/properties/DeferMaintenanceDuration", - "/properties/ManageMasterPassword" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterIdentifier", + "/properties/OwnerAccount", + "/properties/SnapshotIdentifier", + "/properties/DBName", + "/properties/SnapshotClusterIdentifier", + "/properties/ClusterSubnetGroupName", + "/properties/MasterUsername" + ], + "definitions": { + "Endpoint": { + "additionalProperties": false, + "properties": { + "Address": { + "type": "string" + }, + "Port": { + "type": "string" + } + }, + "type": "object" + }, + "LoggingProperties": { + "additionalProperties": false, + "properties": { + "BucketName": { + "relationshipRef": { + "propertyPath": "/properties/BucketName", + "typeName": "AWS::S3::Bucket" + }, + "type": "string" + }, + "LogDestinationType": { + "type": "string" + }, + "LogExports": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "S3KeyPrefix": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "redshift:DescribeClusters", + "redshift:CreateCluster", + "redshift:RestoreFromClusterSnapshot", + "redshift:EnableLogging", + "redshift:DescribeLoggingStatus", + "redshift:CreateTags", + "redshift:DescribeTags", + "redshift:GetResourcePolicy", + "redshift:PutResourcePolicy", + "redshift:ModifyClusterMaintenance", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeAddresses", + "ec2:AssociateAddress", + "ec2:CreateNetworkInterface", + "ec2:ModifyNetworkInterfaceAttribute", + "ec2:CreateVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "ec2:ModifyVpcEndpoint", + "ec2:AllocateAddress", + "ec2:CreateSecurityGroup", + "ec2:DescribeVpcAttribute", + "ec2:DescribeSecurityGroups", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroupRules", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeNetworkAcls", + "ec2:DescribeRouteTables", + "cloudwatch:PutMetricData" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "redshift:DescribeTags", + "redshift:DescribeClusters", + "redshift:DeleteCluster" + ], + "timeoutInMinutes": 2160 + }, + "list": { + "permissions": [ + "redshift:DescribeTags", + "redshift:DescribeClusters" + ] + }, + "read": { + "permissions": [ + "redshift:DescribeClusters", + "redshift:DescribeLoggingStatus", + "redshift:DescribeSnapshotCopyGrant", + "redshift:DescribeClusterDbRevisions", + "redshift:DescribeTags", + "redshift:GetResourcePolicy" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "redshift:DescribeClusters", + "redshift:ModifyCluster", + "redshift:ModifyClusterIamRoles", + "redshift:EnableLogging", + "redshift:CreateTags", + "redshift:DeleteTags", + "redshift:DescribeTags", + "redshift:DisableLogging", + "redshift:DescribeLoggingStatus", + "redshift:RebootCluster", + "redshift:EnableSnapshotCopy", + "redshift:DisableSnapshotCopy", + "redshift:ModifySnapshotCopyRetentionPeriod", + "redshift:ModifyAquaConfiguration", + "redshift:ResizeCluster", + "redshift:ModifyClusterMaintenance", + "redshift:DescribeClusterDbRevisions", + "redshift:ModifyClusterDbRevisions", + "redshift:PauseCluster", + "redshift:ResumeCluster", + "redshift:RotateEncryptionKey", + "redshift:FailoverPrimaryCompute", + "redshift:PutResourcePolicy", + "redshift:GetResourcePolicy", + "redshift:DeleteResourcePolicy", + "cloudwatch:PutMetricData" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/ClusterIdentifier" + ], + "properties": { + "AllowVersionUpgrade": { + "description": "Major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster. Default value is True", + "type": "boolean" + }, + "AquaConfigurationStatus": { + "description": "The value represents how the cluster is configured to use AQUA (Advanced Query Accelerator) after the cluster is restored. Possible values include the following.\n\nenabled - Use AQUA if it is available for the current Region and Amazon Redshift node type.\ndisabled - Don't use AQUA.\nauto - Amazon Redshift determines whether to use AQUA.\n", + "type": "string" + }, + "AutomatedSnapshotRetentionPeriod": { + "description": "The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Default value is 1", + "type": "integer" + }, + "AvailabilityZone": { + "description": "The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint", + "type": "string" + }, + "AvailabilityZoneRelocation": { + "description": "The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster modification is complete.", + "type": "boolean" + }, + "AvailabilityZoneRelocationStatus": { + "description": "The availability zone relocation status of the cluster", + "type": "string" + }, + "Classic": { + "description": "A boolean value indicating whether the resize operation is using the classic resize process. If you don't provide this parameter or set the value to false , the resize type is elastic.", + "type": "boolean" + }, + "ClusterIdentifier": { + "description": "A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. All alphabetical characters must be lower case, no hypens at the end, no two consecutive hyphens. Cluster name should be unique for all clusters within an AWS account", + "maxLength": 63, + "type": "string" + }, + "ClusterNamespaceArn": { + "description": "The Amazon Resource Name (ARN) of the cluster namespace.", + "type": "string" + }, + "ClusterParameterGroupName": { + "description": "The name of the parameter group to be associated with this cluster.", + "maxLength": 255, + "type": "string" + }, + "ClusterSecurityGroups": { + "description": "A list of security groups to be associated with this cluster.", + "insertionOrder": false, + "items": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/Id", + "typeName": "AWS::EC2::SecurityGroup" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/Id", + "typeName": "AWS::Redshift::ClusterSecurityGroup" + } + } + ], + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ClusterSubnetGroupName": { + "description": "The name of a cluster subnet group to be associated with this cluster.", + "type": "string" + }, + "ClusterType": { + "description": "The type of the cluster. When cluster type is specified as single-node, the NumberOfNodes parameter is not required and if multi-node, the NumberOfNodes parameter is required", + "type": "string" + }, + "ClusterVersion": { + "description": "The version of the Amazon Redshift engine software that you want to deploy on the cluster.The version selected runs on all the nodes in the cluster.", + "type": "string" + }, + "DBName": { + "description": "The name of the first database to be created when the cluster is created. To create additional databases after the cluster is created, connect to the cluster with a SQL client and use SQL commands to create a database.", + "type": "string" + }, + "DeferMaintenance": { + "description": "A boolean indicating whether to enable the deferred maintenance window.", + "type": "boolean" + }, + "DeferMaintenanceDuration": { + "description": "An integer indicating the duration of the maintenance window in days. If you specify a duration, you can't specify an end time. The duration must be 45 days or less.", + "type": "integer" + }, + "DeferMaintenanceEndTime": { + "description": "A timestamp indicating end time for the deferred maintenance window. If you specify an end time, you can't specify a duration.", + "type": "string" + }, + "DeferMaintenanceIdentifier": { + "description": "A unique identifier for the deferred maintenance window.", + "type": "string" + }, + "DeferMaintenanceStartTime": { + "description": "A timestamp indicating the start time for the deferred maintenance window.", + "type": "string" + }, + "DestinationRegion": { + "description": "The destination AWS Region that you want to copy snapshots to. Constraints: Must be the name of a valid AWS Region. For more information, see Regions and Endpoints in the Amazon Web Services [https://docs.aws.amazon.com/general/latest/gr/rande.html#redshift_region] General Reference", + "type": "string" + }, + "ElasticIp": { + "description": "The Elastic IP (EIP) address for the cluster.", + "type": "string" + }, + "Encrypted": { + "description": "If true, the data in the cluster is encrypted at rest.", + "type": "boolean" + }, + "Endpoint": { + "$ref": "#/definitions/Endpoint" + }, + "EnhancedVpcRouting": { + "description": "An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see Enhanced VPC Routing in the Amazon Redshift Cluster Management Guide.\n\nIf this option is true , enhanced VPC routing is enabled.\n\nDefault: false", + "type": "boolean" + }, + "HsmClientCertificateIdentifier": { + "description": "Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM", + "type": "string" + }, + "HsmConfigurationIdentifier": { + "description": "Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.", + "type": "string" + }, + "IamRoles": { + "description": "A list of AWS Identity and Access Management (IAM) roles that can be used by the cluster to access other AWS services. You must supply the IAM roles in their Amazon Resource Name (ARN) format. You can supply up to 50 IAM roles in a single request", + "insertionOrder": false, + "items": { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + }, + "type": "string" + }, + "maxItems": 50, + "type": "array" + }, + "KmsKeyId": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::KMS::Key" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/KeyId", + "typeName": "AWS::KMS::Key" + } + } + ], + "description": "The AWS Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.", + "type": "string" + }, + "LoggingProperties": { + "$ref": "#/definitions/LoggingProperties" + }, + "MaintenanceTrackName": { + "description": "The name for the maintenance track that you want to assign for the cluster. This name change is asynchronous. The new track name stays in the PendingModifiedValues for the cluster until the next maintenance window. When the maintenance track changes, the cluster is switched to the latest cluster release available for the maintenance track. At this point, the maintenance track name is applied.", + "type": "string" + }, + "ManageMasterPassword": { + "description": "A boolean indicating if the redshift cluster's admin user credentials is managed by Redshift or not. You can't use MasterUserPassword if ManageMasterPassword is true. If ManageMasterPassword is false or not set, Amazon Redshift uses MasterUserPassword for the admin user account's password.", + "type": "boolean" + }, + "ManualSnapshotRetentionPeriod": { + "description": "The number of days to retain newly copied snapshots in the destination AWS Region after they are copied from the source AWS Region. If the value is -1, the manual snapshot is retained indefinitely.\n\nThe value must be either -1 or an integer between 1 and 3,653.", + "type": "integer" + }, + "MasterPasswordSecretArn": { + "description": "The Amazon Resource Name (ARN) for the cluster's admin user credentials secret.", + "type": "string" + }, + "MasterPasswordSecretKmsKeyId": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::KMS::Key" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/KeyId", + "typeName": "AWS::KMS::Key" + } + } + ], + "description": "The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin user credentials secret.", + "type": "string" + }, + "MasterUserPassword": { + "description": "The password associated with the master user account for the cluster that is being created. You can't use MasterUserPassword if ManageMasterPassword is true. Password must be between 8 and 64 characters in length, should have at least one uppercase letter.Must contain at least one lowercase letter.Must contain one number.Can be any printable ASCII character.", + "maxLength": 64, + "type": "string" + }, + "MasterUsername": { + "description": "The user name associated with the master user account for the cluster that is being created. The user name can't be PUBLIC and first character must be a letter.", + "maxLength": 128, + "type": "string" + }, + "MultiAZ": { + "description": "A boolean indicating if the redshift cluster is multi-az or not. If you don't provide this parameter or set the value to false, the redshift cluster will be single-az.", + "type": "boolean" + }, + "NamespaceResourcePolicy": { + "description": "The namespace resource policy document that will be attached to a Redshift cluster.", + "type": "object" + }, + "NodeType": { + "description": "The node type to be provisioned for the cluster.Valid Values: ds2.xlarge | ds2.8xlarge | dc1.large | dc1.8xlarge | dc2.large | dc2.8xlarge | ra3.large | ra3.4xlarge | ra3.16xlarge", + "type": "string" + }, + "NumberOfNodes": { + "description": "The number of compute nodes in the cluster. This parameter is required when the ClusterType parameter is specified as multi-node.", + "type": "integer" + }, + "OwnerAccount": { + "type": "string" + }, + "Port": { + "description": "The port number on which the cluster accepts incoming connections. The cluster is accessible only via the JDBC and ODBC connection strings", + "type": "integer" + }, + "PreferredMaintenanceWindow": { + "description": "The weekly time range (in UTC) during which automated cluster maintenance can occur.", + "type": "string" + }, + "PubliclyAccessible": { + "description": "If true, the cluster can be accessed from a public network.", + "type": "boolean" + }, + "ResourceAction": { + "description": "The Redshift operation to be performed. Resource Action supports pause-cluster, resume-cluster, failover-primary-compute APIs", + "type": "string" + }, + "RevisionTarget": { + "description": "The identifier of the database revision. You can retrieve this value from the response to the DescribeClusterDbRevisions request.", + "type": "string" + }, + "RotateEncryptionKey": { + "description": "A boolean indicating if we want to rotate Encryption Keys.", + "type": "boolean" + }, + "SnapshotClusterIdentifier": { + "description": "The name of the cluster the source snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.", + "type": "string" + }, + "SnapshotCopyGrantName": { + "description": "The name of the snapshot copy grant to use when snapshots of an AWS KMS-encrypted cluster are copied to the destination region.", + "type": "string" + }, + "SnapshotCopyManual": { + "description": "Indicates whether to apply the snapshot retention period to newly copied manual snapshots instead of automated snapshots.", + "type": "boolean" + }, + "SnapshotCopyRetentionPeriod": { + "description": "The number of days to retain automated snapshots in the destination region after they are copied from the source region. \n\n Default is 7. \n\n Constraints: Must be at least 1 and no more than 35.", + "type": "integer" + }, + "SnapshotIdentifier": { + "description": "The name of the snapshot from which to create the new cluster. This parameter isn't case sensitive.", + "type": "string" + }, + "Tags": { + "description": "The list of tags for the cluster parameter group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": false + }, + "VpcSecurityGroupIds": { + "description": "A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.", + "insertionOrder": false, + "items": { + "relationshipRef": { + "propertyPath": "/properties/VpcId", + "typeName": "AWS::EC2::VPC" + }, + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/DeferMaintenanceIdentifier", + "/properties/Endpoint/Port", + "/properties/Endpoint/Address", + "/properties/ClusterNamespaceArn", + "/properties/MasterPasswordSecretArn" + ], + "required": [ + "NodeType", + "MasterUsername", + "DBName", + "ClusterType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": true + }, + "typeName": "AWS::Redshift::Cluster", + "writeOnlyProperties": [ + "/properties/MasterUserPassword", + "/properties/Classic", + "/properties/SnapshotIdentifier", + "/properties/DeferMaintenance", + "/properties/DeferMaintenanceDuration", + "/properties/ManageMasterPassword" + ] +} diff --git a/src/schema/aws-redshift-clusterparametergroup.json b/src/schema/aws-redshift-clusterparametergroup.json index c0e8243f..83ae82b2 100644 --- a/src/schema/aws-redshift-clusterparametergroup.json +++ b/src/schema/aws-redshift-clusterparametergroup.json @@ -1,158 +1,163 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ParameterGroupName", - "/properties/ParameterGroupFamily", - "/properties/Description" - ], - "definitions": { - "Parameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "description": "The name of the parameter.", - "type": "string" - }, - "ParameterValue": { - "description": "The value of the parameter. If `ParameterName` is `wlm_json_configuration`, then the maximum size of `ParameterValue` is 8000 characters.", - "type": "string" - } - }, - "required": [ - "ParameterValue", - "ParameterName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Redshift::ClusterParameterGroup", - "handlers": { - "create": { - "permissions": [ - "redshift:CreateClusterParameterGroup", - "redshift:ModifyClusterParameterGroup", - "redshift:DescribeClusterParameterGroups", - "redshift:DescribeClusterParameters", - "redshift:DescribeTags", - "redshift:CreateTags", - "ec2:AllocateAddress", - "ec2:AssociateAddress", - "ec2:AttachNetworkInterface", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAddresses", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs" - ] - }, - "delete": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeClusterParameterGroups", - "redshift:DeleteClusterParameterGroup", - "redshift:DescribeClusterParameters", - "initech:DeleteReport" - ] - }, - "list": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeClusterParameterGroups", - "redshift:DescribeClusterParameters", - "initech:ListReports" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeClusterParameterGroups", - "initech:DescribeReport", - "redshift:DescribeClusterParameters", - "redshift:DescribeTags" - ] - }, - "update": { - "permissions": [ - "redshift:DescribeClusterParameterGroups", - "redshift:ResetClusterParameterGroup", - "redshift:ModifyClusterParameterGroup", - "redshift:DescribeClusterParameters", - "redshift:DescribeTags", - "redshift:CreateTags", - "redshift:DeleteTags", - "initech:UpdateReport" - ] - } - }, - "primaryIdentifier": [ - "/properties/ParameterGroupName" - ], - "properties": { - "Description": { - "description": "A description of the parameter group.", - "type": "string" - }, - "ParameterGroupFamily": { - "description": "The Amazon Redshift engine version to which the cluster parameter group applies. The cluster engine version determines the set of parameters.", - "type": "string" - }, - "ParameterGroupName": { - "description": "The name of the cluster parameter group.", - "maxLength": 255, - "type": "string" - }, - "Parameters": { - "description": "An array of parameters to be modified. A maximum of 20 parameters can be modified in a single request.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "required": [ - "Description", - "ParameterGroupFamily" - ], - "tagging": { - "taggable": true - }, - "typeName": "AWS::Redshift::ClusterParameterGroup", - "writeOnlyProperties": [ - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ParameterGroupName", + "/properties/ParameterGroupFamily", + "/properties/Description" + ], + "definitions": { + "Parameter": { + "additionalProperties": false, + "properties": { + "ParameterName": { + "description": "The name of the parameter.", + "type": "string" + }, + "ParameterValue": { + "description": "The value of the parameter. If `ParameterName` is `wlm_json_configuration`, then the maximum size of `ParameterValue` is 8000 characters.", + "type": "string" + } + }, + "required": [ + "ParameterValue", + "ParameterName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Redshift::ClusterParameterGroup", + "handlers": { + "create": { + "permissions": [ + "redshift:CreateClusterParameterGroup", + "redshift:ModifyClusterParameterGroup", + "redshift:DescribeClusterParameterGroups", + "redshift:DescribeClusterParameters", + "redshift:DescribeTags", + "redshift:CreateTags", + "ec2:AllocateAddress", + "ec2:AssociateAddress", + "ec2:AttachNetworkInterface", + "ec2:DescribeAccountAttributes", + "ec2:DescribeAddresses", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs" + ] + }, + "delete": { + "permissions": [ + "redshift:DescribeTags", + "redshift:DeleteTags", + "redshift:DescribeClusterParameterGroups", + "redshift:DeleteClusterParameterGroup", + "redshift:DescribeClusterParameters", + "initech:DeleteReport" + ] + }, + "list": { + "permissions": [ + "redshift:DescribeTags", + "redshift:DescribeClusterParameterGroups", + "redshift:DescribeClusterParameters", + "initech:ListReports" + ] + }, + "read": { + "permissions": [ + "redshift:DescribeClusterParameterGroups", + "initech:DescribeReport", + "redshift:DescribeClusterParameters", + "redshift:DescribeTags" + ] + }, + "update": { + "permissions": [ + "redshift:DescribeClusterParameterGroups", + "redshift:ResetClusterParameterGroup", + "redshift:ModifyClusterParameterGroup", + "redshift:DescribeClusterParameters", + "redshift:DescribeTags", + "redshift:CreateTags", + "redshift:DeleteTags", + "initech:UpdateReport" + ] + } + }, + "primaryIdentifier": [ + "/properties/ParameterGroupName" + ], + "properties": { + "Description": { + "description": "A description of the parameter group.", + "type": "string" + }, + "ParameterGroupFamily": { + "description": "The Amazon Redshift engine version to which the cluster parameter group applies. The cluster engine version determines the set of parameters.", + "type": "string" + }, + "ParameterGroupName": { + "description": "The name of the cluster parameter group.", + "maxLength": 255, + "type": "string" + }, + "Parameters": { + "description": "An array of parameters to be modified. A maximum of 20 parameters can be modified in a single request.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Parameter" + }, + "type": "array" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "required": [ + "Description", + "ParameterGroupFamily" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "redshift:DescribeTags", + "redshift:CreateTags", + "redshift:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Redshift::ClusterParameterGroup" +} diff --git a/src/schema/aws-redshift-clustersecuritygroup.json b/src/schema/aws-redshift-clustersecuritygroup.json index d67ecbe5..9d8e1b33 100644 --- a/src/schema/aws-redshift-clustersecuritygroup.json +++ b/src/schema/aws-redshift-clustersecuritygroup.json @@ -1,50 +1,50 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Description" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Redshift::ClusterSecurityGroup", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Description" - ], - "typeName": "AWS::Redshift::ClusterSecurityGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Redshift::ClusterSecurityGroup", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Description" + ], + "typeName": "AWS::Redshift::ClusterSecurityGroup" +} diff --git a/src/schema/aws-redshift-clustersecuritygroupingress.json b/src/schema/aws-redshift-clustersecuritygroupingress.json index 7eb16e32..18e9cf89 100644 --- a/src/schema/aws-redshift-clustersecuritygroupingress.json +++ b/src/schema/aws-redshift-clustersecuritygroupingress.json @@ -1,37 +1,37 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClusterSecurityGroupName", - "/properties/CIDRIP", - "/properties/EC2SecurityGroupOwnerId", - "/properties/EC2SecurityGroupName" - ], - "description": "Resource Type definition for AWS::Redshift::ClusterSecurityGroupIngress", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CIDRIP": { - "type": "string" - }, - "ClusterSecurityGroupName": { - "type": "string" - }, - "EC2SecurityGroupName": { - "type": "string" - }, - "EC2SecurityGroupOwnerId": { - "type": "string" - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ClusterSecurityGroupName" - ], - "typeName": "AWS::Redshift::ClusterSecurityGroupIngress" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterSecurityGroupName", + "/properties/CIDRIP", + "/properties/EC2SecurityGroupOwnerId", + "/properties/EC2SecurityGroupName" + ], + "description": "Resource Type definition for AWS::Redshift::ClusterSecurityGroupIngress", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CIDRIP": { + "type": "string" + }, + "ClusterSecurityGroupName": { + "type": "string" + }, + "EC2SecurityGroupName": { + "type": "string" + }, + "EC2SecurityGroupOwnerId": { + "type": "string" + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ClusterSecurityGroupName" + ], + "typeName": "AWS::Redshift::ClusterSecurityGroupIngress" +} diff --git a/src/schema/aws-redshift-clustersubnetgroup.json b/src/schema/aws-redshift-clustersubnetgroup.json index 6b8e3469..840ee55b 100644 --- a/src/schema/aws-redshift-clustersubnetgroup.json +++ b/src/schema/aws-redshift-clustersubnetgroup.json @@ -1,170 +1,170 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Specifies an Amazon Redshift subnet group.", - "handlers": { - "create": { - "permissions": [ - "redshift:CreateClusterSubnetGroup", - "redshift:CreateTags", - "redshift:DescribeClusterSubnetGroups", - "redshift:DescribeTags", - "ec2:AllocateAddress", - "ec2:AssociateAddress", - "ec2:AttachNetworkInterface", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAddresses", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs" - ] - }, - "delete": { - "permissions": [ - "redshift:DeleteClusterSubnetGroup", - "redshift:DescribeClusterSubnetGroups", - "redshift:DescribeTags", - "ec2:AllocateAddress", - "ec2:AssociateAddress", - "ec2:AttachNetworkInterface", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAddresses", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs" - ] - }, - "list": { - "permissions": [ - "redshift:DescribeClusterSubnetGroups", - "redshift:DescribeTags", - "ec2:AllocateAddress", - "ec2:AssociateAddress", - "ec2:AttachNetworkInterface", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAddresses", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeClusterSubnetGroups", - "redshift:DescribeTags", - "ec2:AllocateAddress", - "ec2:AssociateAddress", - "ec2:AttachNetworkInterface", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAddresses", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs" - ] - }, - "update": { - "permissions": [ - "redshift:ModifyClusterSubnetGroup", - "redshift:DescribeClusterSubnetGroups", - "redshift:DescribeTags", - "redshift:CreateTags", - "redshift:DeleteTags", - "ec2:AllocateAddress", - "ec2:AssociateAddress", - "ec2:AttachNetworkInterface", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAddresses", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs" - ] - } - }, - "primaryIdentifier": [ - "/properties/ClusterSubnetGroupName" - ], - "properties": { - "ClusterSubnetGroupName": { - "description": "This name must be unique for all subnet groups that are created by your AWS account. If costumer do not provide it, cloudformation will generate it. Must not be \"Default\". ", - "maxLength": 255, - "type": "string" - }, - "Description": { - "description": "The description of the parameter group.", - "type": "string" - }, - "SubnetIds": { - "description": "The list of VPC subnet IDs", - "insertionOrder": false, - "items": { - "relationshipRef": { - "propertyPath": "/properties/SubnetId", - "typeName": "AWS::EC2::Subnet" - }, - "type": "string" - }, - "maxItems": 20, - "type": "array" - }, - "Tags": { - "description": "The list of tags for the cluster parameter group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ClusterSubnetGroupName" - ], - "required": [ - "Description", - "SubnetIds" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", - "tagging": { - "taggable": true - }, - "typeName": "AWS::Redshift::ClusterSubnetGroup", - "writeOnlyProperties": [ - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ] -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Specifies an Amazon Redshift subnet group.", + "handlers": { + "create": { + "permissions": [ + "redshift:CreateClusterSubnetGroup", + "redshift:CreateTags", + "redshift:DescribeClusterSubnetGroups", + "redshift:DescribeTags", + "ec2:AllocateAddress", + "ec2:AssociateAddress", + "ec2:AttachNetworkInterface", + "ec2:DescribeAccountAttributes", + "ec2:DescribeAddresses", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs" + ] + }, + "delete": { + "permissions": [ + "redshift:DeleteClusterSubnetGroup", + "redshift:DescribeClusterSubnetGroups", + "redshift:DescribeTags", + "ec2:AllocateAddress", + "ec2:AssociateAddress", + "ec2:AttachNetworkInterface", + "ec2:DescribeAccountAttributes", + "ec2:DescribeAddresses", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs" + ] + }, + "list": { + "permissions": [ + "redshift:DescribeClusterSubnetGroups", + "redshift:DescribeTags", + "ec2:AllocateAddress", + "ec2:AssociateAddress", + "ec2:AttachNetworkInterface", + "ec2:DescribeAccountAttributes", + "ec2:DescribeAddresses", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs" + ] + }, + "read": { + "permissions": [ + "redshift:DescribeClusterSubnetGroups", + "redshift:DescribeTags", + "ec2:AllocateAddress", + "ec2:AssociateAddress", + "ec2:AttachNetworkInterface", + "ec2:DescribeAccountAttributes", + "ec2:DescribeAddresses", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs" + ] + }, + "update": { + "permissions": [ + "redshift:ModifyClusterSubnetGroup", + "redshift:DescribeClusterSubnetGroups", + "redshift:DescribeTags", + "redshift:CreateTags", + "redshift:DeleteTags", + "ec2:AllocateAddress", + "ec2:AssociateAddress", + "ec2:AttachNetworkInterface", + "ec2:DescribeAccountAttributes", + "ec2:DescribeAddresses", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs" + ] + } + }, + "primaryIdentifier": [ + "/properties/ClusterSubnetGroupName" + ], + "properties": { + "ClusterSubnetGroupName": { + "description": "This name must be unique for all subnet groups that are created by your AWS account. If costumer do not provide it, cloudformation will generate it. Must not be \"Default\". ", + "maxLength": 255, + "type": "string" + }, + "Description": { + "description": "The description of the parameter group.", + "type": "string" + }, + "SubnetIds": { + "description": "The list of VPC subnet IDs", + "insertionOrder": false, + "items": { + "relationshipRef": { + "propertyPath": "/properties/SubnetId", + "typeName": "AWS::EC2::Subnet" + }, + "type": "string" + }, + "maxItems": 20, + "type": "array" + }, + "Tags": { + "description": "The list of tags for the cluster parameter group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ClusterSubnetGroupName" + ], + "required": [ + "Description", + "SubnetIds" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Redshift::ClusterSubnetGroup", + "writeOnlyProperties": [ + "/properties/Tags", + "/properties/Tags/*/Key", + "/properties/Tags/*/Value" + ] +} diff --git a/src/schema/aws-redshift-endpointaccess.json b/src/schema/aws-redshift-endpointaccess.json index fbc75662..0bdce892 100644 --- a/src/schema/aws-redshift-endpointaccess.json +++ b/src/schema/aws-redshift-endpointaccess.json @@ -1,249 +1,249 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/EndpointName", - "/properties/ClusterIdentifier", - "/properties/ResourceOwner", - "/properties/SubnetGroupName" - ], - "definitions": { - "NetworkInterface": { - "additionalProperties": false, - "description": "Describes a network interface.", - "properties": { - "AvailabilityZone": { - "description": "The Availability Zone.", - "type": "string" - }, - "NetworkInterfaceId": { - "description": "The network interface identifier.", - "relationshipRef": { - "propertyPath": "/properties/Id", - "typeName": "AWS::EC2::NetworkInterface" - }, - "type": "string" - }, - "PrivateIpAddress": { - "description": "The IPv4 address of the network interface within the subnet.", - "relationshipRef": { - "propertyPath": "/properties/PrivateIpAddress", - "typeName": "AWS::EC2::NetworkInterface" - }, - "type": "string" - }, - "SubnetId": { - "description": "The subnet identifier.", - "relationshipRef": { - "propertyPath": "/properties/SubnetId", - "typeName": "AWS::EC2::NetworkInterface" - }, - "type": "string" - } - }, - "type": "object" - }, - "VpcSecurityGroup": { - "additionalProperties": false, - "description": "Describes the members of a VPC security group.", - "properties": { - "Status": { - "description": "The status of the VPC security group.", - "type": "string" - }, - "VpcSecurityGroupId": { - "description": "The identifier of the VPC security group.", - "relationshipRef": { - "propertyPath": "/properties/Id", - "typeName": "AWS::EC2::SecurityGroup" - }, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource schema for a Redshift-managed VPC endpoint.", - "handlers": { - "create": { - "permissions": [ - "redshift:CreateEndpointAccess", - "redshift:DescribeEndpointAccess", - "ec2:CreateClientVpnEndpoint", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcAttribute", - "ec2:DescribeSecurityGroups", - "ec2:DescribeAddresses", - "ec2:DescribeInternetGateways", - "ec2:DescribeSubnets" - ], - "timeoutInMinutes": 60 - }, - "delete": { - "permissions": [ - "redshift:DeleteEndpointAccess", - "redshift:DescribeEndpointAccess", - "ec2:DeleteClientVpnEndpoint", - "ec2:DeleteVpcEndpoint", - "ec2:DescribeVpcAttribute", - "ec2:DescribeSecurityGroups", - "ec2:DescribeAddresses", - "ec2:DescribeInternetGateways", - "ec2:DescribeSubnets", - "ec2:DescribeVpcEndpoint" - ], - "timeoutInMinutes": 60 - }, - "list": { - "permissions": [ - "redshift:DescribeEndpointAccess", - "ec2:DescribeClientVpnEndpoints", - "ec2:DescribeVpcEndpoints", - "ec2:DescribeVpcAttribute", - "ec2:DescribeSecurityGroups", - "ec2:DescribeAddresses", - "ec2:DescribeInternetGateways", - "ec2:DescribeSubnets" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeEndpointAccess", - "ec2:DescribeClientVpnEndpoints", - "ec2:DescribeVpcEndpoint", - "ec2:DescribeVpcAttribute", - "ec2:DescribeSecurityGroups", - "ec2:DescribeAddresses", - "ec2:DescribeInternetGateways", - "ec2:DescribeSubnets" - ] - }, - "update": { - "permissions": [ - "redshift:DescribeEndpointAccess", - "redshift:ModifyEndpointAccess", - "ec2:ModifyClientVpnEndpoint", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeVpcAttribute", - "ec2:DescribeSecurityGroups", - "ec2:DescribeAddresses", - "ec2:DescribeInternetGateways", - "ec2:DescribeSubnets" - ], - "timeoutInMinutes": 60 - } - }, - "primaryIdentifier": [ - "/properties/EndpointName" - ], - "properties": { - "Address": { - "description": "The DNS address of the endpoint.", - "type": "string" - }, - "ClusterIdentifier": { - "description": "A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. All alphabetical characters must be lower case, no hypens at the end, no two consecutive hyphens. Cluster name should be unique for all clusters within an AWS account", - "type": "string" - }, - "EndpointCreateTime": { - "description": "The time (UTC) that the endpoint was created.", - "type": "string" - }, - "EndpointName": { - "description": "The name of the endpoint.", - "pattern": "^(?=^[a-z][a-z0-9]*(-[a-z0-9]+)*$).{1,30}$", - "type": "string" - }, - "EndpointStatus": { - "description": "The status of the endpoint.", - "type": "string" - }, - "Port": { - "description": "The port number on which the cluster accepts incoming connections.", - "type": "integer" - }, - "ResourceOwner": { - "description": "The AWS account ID of the owner of the cluster.", - "pattern": "^\\d{12}$", - "type": "string" - }, - "SubnetGroupName": { - "description": "The subnet group name where Amazon Redshift chooses to deploy the endpoint.", - "pattern": "^(?=^[a-zA-Z0-9-]+$).{1,255}$", - "type": "string" - }, - "VpcEndpoint": { - "additionalProperties": false, - "description": "The connection endpoint for connecting to an Amazon Redshift cluster through the proxy.", - "properties": { - "NetworkInterfaces": { - "description": "One or more network interfaces of the endpoint. Also known as an interface endpoint.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array" - }, - "VpcEndpointId": { - "description": "The connection endpoint ID for connecting an Amazon Redshift cluster through the proxy.", - "relationshipRef": { - "propertyPath": "/properties/Id", - "typeName": "AWS::EC2::VPCEndpoint" - }, - "type": "string" - }, - "VpcId": { - "description": "The VPC identifier that the endpoint is associated.", - "relationshipRef": { - "propertyPath": "/properties/VpcId", - "typeName": "AWS::EC2::VPCEndpoint" - }, - "type": "string" - } - }, - "type": "object" - }, - "VpcSecurityGroupIds": { - "description": "A list of vpc security group ids to apply to the created endpoint access.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "VpcSecurityGroups": { - "description": "A list of Virtual Private Cloud (VPC) security groups to be associated with the endpoint.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/VpcSecurityGroup" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Address", - "/properties/EndpointStatus", - "/properties/EndpointCreateTime", - "/properties/Port", - "/properties/VpcSecurityGroups", - "/properties/VpcSecurityGroups/*/VpcSecurityGroupId", - "/properties/VpcSecurityGroups/*/Status", - "/properties/VpcEndpoint", - "/properties/VpcEndpoint/VpcEndpointId", - "/properties/VpcEndpoint/VpcId", - "/properties/VpcEndpoint/NetworkInterfaces/*/NetworkInterfaceId", - "/properties/VpcEndpoint/NetworkInterfaces/*/PrivateIpAddress", - "/properties/VpcEndpoint/NetworkInterfaces/*/SubnetId", - "/properties/VpcEndpoint/NetworkInterfaces/*/AvailabilityZone" - ], - "required": [ - "ClusterIdentifier", - "SubnetGroupName", - "EndpointName", - "VpcSecurityGroupIds" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Redshift::EndpointAccess" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EndpointName", + "/properties/ClusterIdentifier", + "/properties/ResourceOwner", + "/properties/SubnetGroupName" + ], + "definitions": { + "NetworkInterface": { + "additionalProperties": false, + "description": "Describes a network interface.", + "properties": { + "AvailabilityZone": { + "description": "The Availability Zone.", + "type": "string" + }, + "NetworkInterfaceId": { + "description": "The network interface identifier.", + "relationshipRef": { + "propertyPath": "/properties/Id", + "typeName": "AWS::EC2::NetworkInterface" + }, + "type": "string" + }, + "PrivateIpAddress": { + "description": "The IPv4 address of the network interface within the subnet.", + "relationshipRef": { + "propertyPath": "/properties/PrivateIpAddress", + "typeName": "AWS::EC2::NetworkInterface" + }, + "type": "string" + }, + "SubnetId": { + "description": "The subnet identifier.", + "relationshipRef": { + "propertyPath": "/properties/SubnetId", + "typeName": "AWS::EC2::NetworkInterface" + }, + "type": "string" + } + }, + "type": "object" + }, + "VpcSecurityGroup": { + "additionalProperties": false, + "description": "Describes the members of a VPC security group.", + "properties": { + "Status": { + "description": "The status of the VPC security group.", + "type": "string" + }, + "VpcSecurityGroupId": { + "description": "The identifier of the VPC security group.", + "relationshipRef": { + "propertyPath": "/properties/Id", + "typeName": "AWS::EC2::SecurityGroup" + }, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource schema for a Redshift-managed VPC endpoint.", + "handlers": { + "create": { + "permissions": [ + "redshift:CreateEndpointAccess", + "redshift:DescribeEndpointAccess", + "ec2:CreateClientVpnEndpoint", + "ec2:CreateVpcEndpoint", + "ec2:DescribeVpcAttribute", + "ec2:DescribeSecurityGroups", + "ec2:DescribeAddresses", + "ec2:DescribeInternetGateways", + "ec2:DescribeSubnets" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "redshift:DeleteEndpointAccess", + "redshift:DescribeEndpointAccess", + "ec2:DeleteClientVpnEndpoint", + "ec2:DeleteVpcEndpoint", + "ec2:DescribeVpcAttribute", + "ec2:DescribeSecurityGroups", + "ec2:DescribeAddresses", + "ec2:DescribeInternetGateways", + "ec2:DescribeSubnets", + "ec2:DescribeVpcEndpoint" + ], + "timeoutInMinutes": 60 + }, + "list": { + "permissions": [ + "redshift:DescribeEndpointAccess", + "ec2:DescribeClientVpnEndpoints", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeVpcAttribute", + "ec2:DescribeSecurityGroups", + "ec2:DescribeAddresses", + "ec2:DescribeInternetGateways", + "ec2:DescribeSubnets" + ] + }, + "read": { + "permissions": [ + "redshift:DescribeEndpointAccess", + "ec2:DescribeClientVpnEndpoints", + "ec2:DescribeVpcEndpoint", + "ec2:DescribeVpcAttribute", + "ec2:DescribeSecurityGroups", + "ec2:DescribeAddresses", + "ec2:DescribeInternetGateways", + "ec2:DescribeSubnets" + ] + }, + "update": { + "permissions": [ + "redshift:DescribeEndpointAccess", + "redshift:ModifyEndpointAccess", + "ec2:ModifyClientVpnEndpoint", + "ec2:ModifyVpcEndpoint", + "ec2:DescribeVpcAttribute", + "ec2:DescribeSecurityGroups", + "ec2:DescribeAddresses", + "ec2:DescribeInternetGateways", + "ec2:DescribeSubnets" + ], + "timeoutInMinutes": 60 + } + }, + "primaryIdentifier": [ + "/properties/EndpointName" + ], + "properties": { + "Address": { + "description": "The DNS address of the endpoint.", + "type": "string" + }, + "ClusterIdentifier": { + "description": "A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. All alphabetical characters must be lower case, no hypens at the end, no two consecutive hyphens. Cluster name should be unique for all clusters within an AWS account", + "type": "string" + }, + "EndpointCreateTime": { + "description": "The time (UTC) that the endpoint was created.", + "type": "string" + }, + "EndpointName": { + "description": "The name of the endpoint.", + "pattern": "^(?=^[a-z][a-z0-9]*(-[a-z0-9]+)*$).{1,30}$", + "type": "string" + }, + "EndpointStatus": { + "description": "The status of the endpoint.", + "type": "string" + }, + "Port": { + "description": "The port number on which the cluster accepts incoming connections.", + "type": "integer" + }, + "ResourceOwner": { + "description": "The AWS account ID of the owner of the cluster.", + "pattern": "^\\d{12}$", + "type": "string" + }, + "SubnetGroupName": { + "description": "The subnet group name where Amazon Redshift chooses to deploy the endpoint.", + "pattern": "^(?=^[a-zA-Z0-9-]+$).{1,255}$", + "type": "string" + }, + "VpcEndpoint": { + "additionalProperties": false, + "description": "The connection endpoint for connecting to an Amazon Redshift cluster through the proxy.", + "properties": { + "NetworkInterfaces": { + "description": "One or more network interfaces of the endpoint. Also known as an interface endpoint.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/NetworkInterface" + }, + "type": "array" + }, + "VpcEndpointId": { + "description": "The connection endpoint ID for connecting an Amazon Redshift cluster through the proxy.", + "relationshipRef": { + "propertyPath": "/properties/Id", + "typeName": "AWS::EC2::VPCEndpoint" + }, + "type": "string" + }, + "VpcId": { + "description": "The VPC identifier that the endpoint is associated.", + "relationshipRef": { + "propertyPath": "/properties/VpcId", + "typeName": "AWS::EC2::VPCEndpoint" + }, + "type": "string" + } + }, + "type": "object" + }, + "VpcSecurityGroupIds": { + "description": "A list of vpc security group ids to apply to the created endpoint access.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "VpcSecurityGroups": { + "description": "A list of Virtual Private Cloud (VPC) security groups to be associated with the endpoint.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VpcSecurityGroup" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Address", + "/properties/EndpointStatus", + "/properties/EndpointCreateTime", + "/properties/Port", + "/properties/VpcSecurityGroups", + "/properties/VpcSecurityGroups/*/VpcSecurityGroupId", + "/properties/VpcSecurityGroups/*/Status", + "/properties/VpcEndpoint", + "/properties/VpcEndpoint/VpcEndpointId", + "/properties/VpcEndpoint/VpcId", + "/properties/VpcEndpoint/NetworkInterfaces/*/NetworkInterfaceId", + "/properties/VpcEndpoint/NetworkInterfaces/*/PrivateIpAddress", + "/properties/VpcEndpoint/NetworkInterfaces/*/SubnetId", + "/properties/VpcEndpoint/NetworkInterfaces/*/AvailabilityZone" + ], + "required": [ + "ClusterIdentifier", + "SubnetGroupName", + "EndpointName", + "VpcSecurityGroupIds" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Redshift::EndpointAccess" +} diff --git a/src/schema/aws-redshift-endpointauthorization.json b/src/schema/aws-redshift-endpointauthorization.json index 81ce773d..c5a1adc3 100644 --- a/src/schema/aws-redshift-endpointauthorization.json +++ b/src/schema/aws-redshift-endpointauthorization.json @@ -1,148 +1,148 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClusterIdentifier", - "/properties/Account" - ], - "definitions": { - "AwsAccount": { - "pattern": "^\\d{12}$", - "type": "string" - }, - "VpcId": { - "pattern": "^vpc-[A-Za-z0-9]{1,17}$", - "relationshipRef": { - "propertyPath": "/properties/VpcId", - "typeName": "AWS::EC2::VPC" - }, - "type": "string" - } - }, - "description": "Describes an endpoint authorization for authorizing Redshift-managed VPC endpoint access to a cluster across AWS accounts.", - "handlers": { - "create": { - "permissions": [ - "redshift:AuthorizeEndpointAccess", - "redshift:DescribeEndpointAuthorization" - ], - "timeoutInMinutes": 60 - }, - "delete": { - "permissions": [ - "redshift:RevokeEndpointAccess", - "redshift:DeleteEndpointAccess", - "redshift:DescribeEndpointAuthorization", - "ec2:DeleteClientVpnEndpoint", - "ec2:DescribeVpcAttribute", - "ec2:DescribeSecurityGroups", - "ec2:DescribeAddresses", - "ec2:DescribeInternetGateways", - "ec2:DescribeSubnets" - ], - "timeoutInMinutes": 60 - }, - "list": { - "permissions": [ - "redshift:DescribeEndpointAuthorization" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeEndpointAuthorization" - ] - }, - "update": { - "permissions": [ - "redshift:AuthorizeEndpointAccess", - "redshift:DescribeEndpointAuthorization", - "redshift:RevokeEndpointAccess" - ], - "timeoutInMinutes": 60 - } - }, - "primaryIdentifier": [ - "/properties/ClusterIdentifier", - "/properties/Account" - ], - "properties": { - "Account": { - "$ref": "#/definitions/AwsAccount", - "description": "The target AWS account ID to grant or revoke access for." - }, - "AllowedAllVPCs": { - "description": "Indicates whether all VPCs in the grantee account are allowed access to the cluster.", - "type": "boolean" - }, - "AllowedVPCs": { - "description": "The VPCs allowed access to the cluster.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/VpcId" - }, - "type": "array" - }, - "AuthorizeTime": { - "description": "The time (UTC) when the authorization was created.", - "type": "string" - }, - "ClusterIdentifier": { - "description": "The cluster identifier.", - "pattern": "^(?=^[a-z][a-z0-9]*(-[a-z0-9]+)*$).{1,63}$", - "type": "string" - }, - "ClusterStatus": { - "description": "The status of the cluster.", - "type": "string" - }, - "EndpointCount": { - "description": "The number of Redshift-managed VPC endpoints created for the authorization.", - "type": "integer" - }, - "Force": { - "description": " Indicates whether to force the revoke action. If true, the Redshift-managed VPC endpoints associated with the endpoint authorization are also deleted.", - "type": "boolean" - }, - "Grantee": { - "$ref": "#/definitions/AwsAccount", - "description": "The AWS account ID of the grantee of the cluster." - }, - "Grantor": { - "$ref": "#/definitions/AwsAccount", - "description": "The AWS account ID of the cluster owner." - }, - "Status": { - "description": "The status of the authorization action.", - "type": "string" - }, - "VpcIds": { - "description": "The virtual private cloud (VPC) identifiers to grant or revoke access to.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/VpcId" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Grantor", - "/properties/Grantee", - "/properties/AuthorizeTime", - "/properties/ClusterStatus", - "/properties/Status", - "/properties/AllowedAllVPCs", - "/properties/AllowedVPCs", - "/properties/EndpointCount" - ], - "required": [ - "ClusterIdentifier", - "Account" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Redshift::EndpointAuthorization", - "writeOnlyProperties": [ - "/properties/Force" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterIdentifier", + "/properties/Account" + ], + "definitions": { + "AwsAccount": { + "pattern": "^\\d{12}$", + "type": "string" + }, + "VpcId": { + "pattern": "^vpc-[A-Za-z0-9]{1,17}$", + "relationshipRef": { + "propertyPath": "/properties/VpcId", + "typeName": "AWS::EC2::VPC" + }, + "type": "string" + } + }, + "description": "Describes an endpoint authorization for authorizing Redshift-managed VPC endpoint access to a cluster across AWS accounts.", + "handlers": { + "create": { + "permissions": [ + "redshift:AuthorizeEndpointAccess", + "redshift:DescribeEndpointAuthorization" + ], + "timeoutInMinutes": 60 + }, + "delete": { + "permissions": [ + "redshift:RevokeEndpointAccess", + "redshift:DeleteEndpointAccess", + "redshift:DescribeEndpointAuthorization", + "ec2:DeleteClientVpnEndpoint", + "ec2:DescribeVpcAttribute", + "ec2:DescribeSecurityGroups", + "ec2:DescribeAddresses", + "ec2:DescribeInternetGateways", + "ec2:DescribeSubnets" + ], + "timeoutInMinutes": 60 + }, + "list": { + "permissions": [ + "redshift:DescribeEndpointAuthorization" + ] + }, + "read": { + "permissions": [ + "redshift:DescribeEndpointAuthorization" + ] + }, + "update": { + "permissions": [ + "redshift:AuthorizeEndpointAccess", + "redshift:DescribeEndpointAuthorization", + "redshift:RevokeEndpointAccess" + ], + "timeoutInMinutes": 60 + } + }, + "primaryIdentifier": [ + "/properties/ClusterIdentifier", + "/properties/Account" + ], + "properties": { + "Account": { + "$ref": "#/definitions/AwsAccount", + "description": "The target AWS account ID to grant or revoke access for." + }, + "AllowedAllVPCs": { + "description": "Indicates whether all VPCs in the grantee account are allowed access to the cluster.", + "type": "boolean" + }, + "AllowedVPCs": { + "description": "The VPCs allowed access to the cluster.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VpcId" + }, + "type": "array" + }, + "AuthorizeTime": { + "description": "The time (UTC) when the authorization was created.", + "type": "string" + }, + "ClusterIdentifier": { + "description": "The cluster identifier.", + "pattern": "^(?=^[a-z][a-z0-9]*(-[a-z0-9]+)*$).{1,63}$", + "type": "string" + }, + "ClusterStatus": { + "description": "The status of the cluster.", + "type": "string" + }, + "EndpointCount": { + "description": "The number of Redshift-managed VPC endpoints created for the authorization.", + "type": "integer" + }, + "Force": { + "description": " Indicates whether to force the revoke action. If true, the Redshift-managed VPC endpoints associated with the endpoint authorization are also deleted.", + "type": "boolean" + }, + "Grantee": { + "$ref": "#/definitions/AwsAccount", + "description": "The AWS account ID of the grantee of the cluster." + }, + "Grantor": { + "$ref": "#/definitions/AwsAccount", + "description": "The AWS account ID of the cluster owner." + }, + "Status": { + "description": "The status of the authorization action.", + "type": "string" + }, + "VpcIds": { + "description": "The virtual private cloud (VPC) identifiers to grant or revoke access to.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VpcId" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Grantor", + "/properties/Grantee", + "/properties/AuthorizeTime", + "/properties/ClusterStatus", + "/properties/Status", + "/properties/AllowedAllVPCs", + "/properties/AllowedVPCs", + "/properties/EndpointCount" + ], + "required": [ + "ClusterIdentifier", + "Account" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Redshift::EndpointAuthorization", + "writeOnlyProperties": [ + "/properties/Force" + ] +} diff --git a/src/schema/aws-redshift-eventsubscription.json b/src/schema/aws-redshift-eventsubscription.json index f4dd0696..1018e93b 100644 --- a/src/schema/aws-redshift-eventsubscription.json +++ b/src/schema/aws-redshift-eventsubscription.json @@ -1,199 +1,199 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SubscriptionName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The `AWS::Redshift::EventSubscription` resource creates an Amazon Redshift Event Subscription.", - "handlers": { - "create": { - "permissions": [ - "redshift:CreateEventSubscription", - "redshift:CreateTags", - "redshift:DescribeTags", - "redshift:DescribeEventSubscriptions" - ] - }, - "delete": { - "permissions": [ - "redshift:DescribeEventSubscriptions", - "redshift:DeleteEventSubscription", - "redshift:DescribeTags", - "redshift:DeleteTags" - ] - }, - "list": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeEventSubscriptions" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeEventSubscriptions", - "redshift:DescribeTags" - ] - }, - "update": { - "permissions": [ - "redshift:ModifyEventSubscription", - "redshift:CreateTags", - "redshift:DescribeTags", - "redshift:DescribeEventSubscriptions", - "redshift:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/SubscriptionName" - ], - "properties": { - "CustSubscriptionId": { - "description": "The name of the Amazon Redshift event notification subscription.", - "type": "string" - }, - "CustomerAwsId": { - "description": "The AWS account associated with the Amazon Redshift event notification subscription.", - "type": "string" - }, - "Enabled": { - "description": "A boolean value; set to true to activate the subscription, and set to false to create the subscription but not activate it.", - "type": "boolean" - }, - "EventCategories": { - "description": "Specifies the Amazon Redshift event categories to be published by the event notification subscription.", - "insertionOrder": false, - "items": { - "enum": [ - "configuration", - "management", - "monitoring", - "security", - "pending" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "EventCategoriesList": { - "description": "The list of Amazon Redshift event categories specified in the event notification subscription.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Severity": { - "description": "Specifies the Amazon Redshift event severity to be published by the event notification subscription.", - "enum": [ - "ERROR", - "INFO" - ], - "type": "string" - }, - "SnsTopicArn": { - "description": "The Amazon Resource Name (ARN) of the Amazon SNS topic used to transmit the event notifications.", - "type": "string" - }, - "SourceIds": { - "description": "A list of one or more identifiers of Amazon Redshift source objects.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "SourceIdsList": { - "description": "A list of the sources that publish events to the Amazon Redshift event notification subscription.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "SourceType": { - "description": "The type of source that will be generating the events.", - "enum": [ - "cluster", - "cluster-parameter-group", - "cluster-security-group", - "cluster-snapshot", - "scheduled-action" - ], - "type": "string" - }, - "Status": { - "description": "The status of the Amazon Redshift event notification subscription.", - "enum": [ - "active", - "no-permission", - "topic-not-exist" - ], - "type": "string" - }, - "SubscriptionCreationTime": { - "description": "The date and time the Amazon Redshift event notification subscription was created.", - "type": "string" - }, - "SubscriptionName": { - "description": "The name of the Amazon Redshift event notification subscription", - "pattern": "^(?=^[a-zA-Z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*$).{1,255}$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/CustomerAwsId", - "/properties/CustSubscriptionId", - "/properties/Status", - "/properties/SubscriptionCreationTime", - "/properties/SourceIdsList", - "/properties/EventCategoriesList" - ], - "required": [ - "SubscriptionName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", - "tagging": { - "taggable": true - }, - "typeName": "AWS::Redshift::EventSubscription", - "writeOnlyProperties": [ - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubscriptionName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The `AWS::Redshift::EventSubscription` resource creates an Amazon Redshift Event Subscription.", + "handlers": { + "create": { + "permissions": [ + "redshift:CreateEventSubscription", + "redshift:CreateTags", + "redshift:DescribeTags", + "redshift:DescribeEventSubscriptions" + ] + }, + "delete": { + "permissions": [ + "redshift:DescribeEventSubscriptions", + "redshift:DeleteEventSubscription", + "redshift:DescribeTags", + "redshift:DeleteTags" + ] + }, + "list": { + "permissions": [ + "redshift:DescribeTags", + "redshift:DescribeEventSubscriptions" + ] + }, + "read": { + "permissions": [ + "redshift:DescribeEventSubscriptions", + "redshift:DescribeTags" + ] + }, + "update": { + "permissions": [ + "redshift:ModifyEventSubscription", + "redshift:CreateTags", + "redshift:DescribeTags", + "redshift:DescribeEventSubscriptions", + "redshift:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/SubscriptionName" + ], + "properties": { + "CustSubscriptionId": { + "description": "The name of the Amazon Redshift event notification subscription.", + "type": "string" + }, + "CustomerAwsId": { + "description": "The AWS account associated with the Amazon Redshift event notification subscription.", + "type": "string" + }, + "Enabled": { + "description": "A boolean value; set to true to activate the subscription, and set to false to create the subscription but not activate it.", + "type": "boolean" + }, + "EventCategories": { + "description": "Specifies the Amazon Redshift event categories to be published by the event notification subscription.", + "insertionOrder": false, + "items": { + "enum": [ + "configuration", + "management", + "monitoring", + "security", + "pending" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "EventCategoriesList": { + "description": "The list of Amazon Redshift event categories specified in the event notification subscription.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Severity": { + "description": "Specifies the Amazon Redshift event severity to be published by the event notification subscription.", + "enum": [ + "ERROR", + "INFO" + ], + "type": "string" + }, + "SnsTopicArn": { + "description": "The Amazon Resource Name (ARN) of the Amazon SNS topic used to transmit the event notifications.", + "type": "string" + }, + "SourceIds": { + "description": "A list of one or more identifiers of Amazon Redshift source objects.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "SourceIdsList": { + "description": "A list of the sources that publish events to the Amazon Redshift event notification subscription.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "SourceType": { + "description": "The type of source that will be generating the events.", + "enum": [ + "cluster", + "cluster-parameter-group", + "cluster-security-group", + "cluster-snapshot", + "scheduled-action" + ], + "type": "string" + }, + "Status": { + "description": "The status of the Amazon Redshift event notification subscription.", + "enum": [ + "active", + "no-permission", + "topic-not-exist" + ], + "type": "string" + }, + "SubscriptionCreationTime": { + "description": "The date and time the Amazon Redshift event notification subscription was created.", + "type": "string" + }, + "SubscriptionName": { + "description": "The name of the Amazon Redshift event notification subscription", + "pattern": "^(?=^[a-zA-Z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*$).{1,255}$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/CustomerAwsId", + "/properties/CustSubscriptionId", + "/properties/Status", + "/properties/SubscriptionCreationTime", + "/properties/SourceIdsList", + "/properties/EventCategoriesList" + ], + "required": [ + "SubscriptionName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Redshift::EventSubscription", + "writeOnlyProperties": [ + "/properties/Tags", + "/properties/Tags/*/Key", + "/properties/Tags/*/Value" + ] +} diff --git a/src/schema/aws-redshift-integration.json b/src/schema/aws-redshift-integration.json index 9509001d..c667ed99 100644 --- a/src/schema/aws-redshift-integration.json +++ b/src/schema/aws-redshift-integration.json @@ -1,134 +1,170 @@ { - "typeName" : "AWS::Redshift::Integration", - "description" : "Integration from a source AWS service to a Redshift cluster", - "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "properties" : { - "IntegrationArn" : { - "type" : "string", - "description" : "The Amazon Resource Name (ARN) of the integration." - }, - "IntegrationName" : { - "description" : "The name of the integration.", - "type" : "string", - "minLength" : 1, - "maxLength" : 64 - }, - "SourceArn" : { - "type" : "string", - "description" : "The Amazon Resource Name (ARN) of the database to use as the source for replication, for example, arn:aws:dynamodb:us-east-2:123412341234:table/dynamotable" - }, - "TargetArn" : { - "type" : "string", - "description" : "The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication, for example, arn:aws:redshift:us-east-2:123412341234:namespace:e43aab3e-10a3-4ec4-83d4-f227ff9bfbcf" - }, - "Tags" : { - "type" : "array", - "maxItems" : 50, - "uniqueItems" : true, - "insertionOrder" : false, - "description" : "An array of key-value pairs to apply to this resource.", - "items" : { - "$ref" : "#/definitions/Tag" - } - }, - "CreateTime" : { - "type" : "string", - "description" : "The time (UTC) when the integration was created." - }, - "KMSKeyId" : { - "type" : "string", - "description" : "An KMS key identifier for the key to use to encrypt the integration. If you don't specify an encryption key, the default AWS owned KMS key is used.", - "anyOf" : [ { - "relationshipRef" : { - "typeName" : "AWS::KMS::Key", - "propertyPath" : "/properties/Arn" + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SourceArn", + "/properties/TargetArn", + "/properties/KMSKeyId", + "/properties/AdditionalEncryptionContext" + ], + "definitions": { + "EncryptionContextMap": { + "additionalProperties": false, + "description": "An optional set of non-secret key\u2013value pairs that contains additional contextual information about the data.", + "patternProperties": { + "^[\\s\\S]*$": { + "maxLength": 131072, + "minLength": 0, + "type": "string" } - }, { - "relationshipRef" : { - "typeName" : "AWS::KMS::Key", - "propertyPath" : "/properties/KeyId" - } - } ] - }, - "AdditionalEncryptionContext" : { - "$ref" : "#/definitions/EncryptionContextMap" - } - }, - "required" : [ "SourceArn", "TargetArn" ], - "definitions" : { - "Tags" : { - "type" : "array", - "maxItems" : 50, - "uniqueItems" : true, - "insertionOrder" : false, - "description" : "An array of key-value pairs to apply to this resource.", - "items" : { - "$ref" : "#/definitions/Tag" - } + }, + "type": "object" }, - "Tag" : { - "description" : "A key-value pair to associate with a resource.", - "type" : "object", - "additionalProperties" : false, - "properties" : { - "Key" : { - "type" : "string", - "description" : "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "minLength" : 1, - "maxLength" : 128 + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" }, - "Value" : { - "type" : "string", - "description" : "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "minLength" : 0, - "maxLength" : 256 + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" } }, - "required" : [ "Key" ] + "required": [ + "Key" + ], + "type": "object" }, - "EncryptionContextMap" : { - "type" : "object", - "patternProperties" : { - "^[\\s\\S]*$" : { - "type" : "string", - "maxLength" : 131072, - "minLength" : 0 - } + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" }, - "description" : "An optional set of non-secret key–value pairs that contains additional contextual information about the data.", - "additionalProperties" : false + "maxItems": 50, + "type": "array", + "uniqueItems": true } }, - "propertyTransform" : { - "/properties/KmsKeyId" : "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KmsKeyId])" + "description": "Integration from a source AWS service to a Redshift cluster", + "handlers": { + "create": { + "permissions": [ + "redshift:CreateIntegration", + "redshift:DescribeIntegrations", + "redshift:CreateTags", + "redshift:DescribeTags", + "redshift:DescribeClusters", + "redshift:CreateInboundIntegration", + "redshift-serverless:ListNamespaces", + "kms:CreateGrant", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "redshift:DeleteTags", + "redshift:DeleteIntegration", + "redshift:DescribeIntegrations" + ] + }, + "list": { + "permissions": [ + "redshift:DescribeTags", + "redshift:DescribeIntegrations" + ] + }, + "read": { + "permissions": [ + "redshift:DescribeIntegrations", + "redshift:DescribeTags" + ] + }, + "update": { + "permissions": [ + "redshift:DescribeIntegrations", + "redshift:ModifyIntegration", + "redshift:CreateTags", + "redshift:DeleteTags", + "redshift:DescribeClusters", + "redshift:DescribeTags", + "redshift-serverless:ListNamespaces" + ] + } }, - "createOnlyProperties" : [ "/properties/SourceArn", "/properties/TargetArn", "/properties/KMSKeyId", "/properties/AdditionalEncryptionContext" ], - "readOnlyProperties" : [ "/properties/IntegrationArn", "/properties/CreateTime" ], - "primaryIdentifier" : [ "/properties/IntegrationArn" ], - "handlers" : { - "create" : { - "permissions" : [ "redshift:CreateIntegration", "redshift:DescribeIntegrations", "redshift:CreateTags", "redshift:DescribeTags", "redshift:DescribeClusters", "kms:CreateGrant", "kms:DescribeKey", "redshift:CreateInboundIntegration" ] + "primaryIdentifier": [ + "/properties/IntegrationArn" + ], + "properties": { + "AdditionalEncryptionContext": { + "$ref": "#/definitions/EncryptionContextMap" }, - "read" : { - "permissions" : [ "redshift:DescribeIntegrations", "redshift:DescribeTags" ] + "CreateTime": { + "description": "The time (UTC) when the integration was created.", + "type": "string" }, - "update" : { - "permissions" : [ "redshift:DescribeIntegrations", "redshift:ModifyIntegration", "redshift:CreateTags", "redshift:DeleteTags", "redshift:DescribeClusters", "redshift:DescribeTags" ] + "IntegrationArn": { + "description": "The Amazon Resource Name (ARN) of the integration.", + "type": "string" }, - "delete" : { - "permissions" : [ "redshift:DeleteTags", "redshift:DeleteIntegration", "redshift:DescribeIntegrations" ] + "IntegrationName": { + "description": "The name of the integration.", + "maxLength": 64, + "minLength": 1, + "type": "string" }, - "list" : { - "permissions" : [ "redshift:DescribeTags", "redshift:DescribeIntegrations" ] + "KMSKeyId": { + "description": "An KMS key identifier for the key to use to encrypt the integration. If you don't specify an encryption key, the default AWS owned KMS key is used.", + "type": "string" + }, + "SourceArn": { + "description": "The Amazon Resource Name (ARN) of the database to use as the source for replication", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "TargetArn": { + "description": "The Amazon Resource Name (ARN) of the Redshift data warehouse to use as the target for replication", + "type": "string" } }, - "tagging" : { - "taggable" : true, - "tagOnCreate" : true, - "tagUpdatable" : true, - "cloudFormationSystemTags" : false, - "tagProperty" : "/properties/Tags", - "permissions" : [ "redshift:CreateTags", "redshift:DeleteTags", "redshift:DescribeTags" ] + "propertyTransform": { + "/properties/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KmsKeyId])" + }, + "readOnlyProperties": [ + "/properties/IntegrationArn", + "/properties/CreateTime" + ], + "required": [ + "SourceArn", + "TargetArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "redshift:CreateTags", + "redshift:DeleteTags", + "redshift:DescribeTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true }, - "additionalProperties" : false -} \ No newline at end of file + "typeName": "AWS::Redshift::Integration" +} diff --git a/src/schema/aws-redshift-scheduledaction.json b/src/schema/aws-redshift-scheduledaction.json index 74d67b49..5e6e23ea 100644 --- a/src/schema/aws-redshift-scheduledaction.json +++ b/src/schema/aws-redshift-scheduledaction.json @@ -1,224 +1,224 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ScheduledActionName" - ], - "definitions": { - "PauseClusterMessage": { - "additionalProperties": false, - "description": "Describes a pause cluster operation. For example, a scheduled action to run the `PauseCluster` API operation.", - "properties": { - "ClusterIdentifier": { - "relationshipRef": { - "propertyPath": "/properties/ClusterIdentifier", - "typeName": "AWS::Redshift::Cluster" - }, - "type": "string" - } - }, - "required": [ - "ClusterIdentifier" - ], - "type": "object" - }, - "ResizeClusterMessage": { - "additionalProperties": false, - "description": "Describes a resize cluster operation. For example, a scheduled action to run the `ResizeCluster` API operation.", - "properties": { - "Classic": { - "type": "boolean" - }, - "ClusterIdentifier": { - "relationshipRef": { - "propertyPath": "/properties/ClusterIdentifier", - "typeName": "AWS::Redshift::Cluster" - }, - "type": "string" - }, - "ClusterType": { - "relationshipRef": { - "propertyPath": "/properties/ClusterType", - "typeName": "AWS::Redshift::Cluster" - }, - "type": "string" - }, - "NodeType": { - "relationshipRef": { - "propertyPath": "/properties/NodeType", - "typeName": "AWS::Redshift::Cluster" - }, - "type": "string" - }, - "NumberOfNodes": { - "relationshipRef": { - "propertyPath": "/properties/NumberOfNodes", - "typeName": "AWS::Redshift::Cluster" - }, - "type": "integer" - } - }, - "required": [ - "ClusterIdentifier" - ], - "type": "object" - }, - "ResumeClusterMessage": { - "additionalProperties": false, - "description": "Describes a resume cluster operation. For example, a scheduled action to run the `ResumeCluster` API operation.", - "properties": { - "ClusterIdentifier": { - "relationshipRef": { - "propertyPath": "/properties/ClusterIdentifier", - "typeName": "AWS::Redshift::Cluster" - }, - "type": "string" - } - }, - "required": [ - "ClusterIdentifier" - ], - "type": "object" - }, - "ScheduledActionType": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "ResizeCluster": { - "$ref": "#/definitions/ResizeClusterMessage" - } - } - }, - { - "additionalProperties": false, - "properties": { - "PauseCluster": { - "$ref": "#/definitions/PauseClusterMessage" - } - } - }, - { - "additionalProperties": false, - "properties": { - "ResumeCluster": { - "$ref": "#/definitions/ResumeClusterMessage" - } - } - } - ], - "type": "object" - }, - "timestamp": { - "type": "string" - } - }, - "description": "The `AWS::Redshift::ScheduledAction` resource creates an Amazon Redshift Scheduled Action.", - "handlers": { - "create": { - "permissions": [ - "redshift:CreateScheduledAction", - "redshift:DescribeScheduledActions", - "redshift:DescribeTags", - "redshift:PauseCluster", - "redshift:ResumeCluster", - "redshift:ResizeCluster", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeScheduledActions", - "redshift:DeleteScheduledAction" - ] - }, - "list": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeScheduledActions" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeScheduledActions", - "redshift:DescribeTags" - ] - }, - "update": { - "permissions": [ - "redshift:DescribeScheduledActions", - "redshift:ModifyScheduledAction", - "redshift:PauseCluster", - "redshift:ResumeCluster", - "redshift:ResizeCluster", - "redshift:DescribeTags", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/ScheduledActionName" - ], - "properties": { - "Enable": { - "description": "If true, the schedule is enabled. If false, the scheduled action does not trigger.", - "type": "boolean" - }, - "EndTime": { - "$ref": "#/definitions/timestamp", - "description": "The end time in UTC of the scheduled action. After this time, the scheduled action does not trigger." - }, - "IamRole": { - "description": "The IAM role to assume to run the target action.", - "type": "string" - }, - "NextInvocations": { - "description": "List of times when the scheduled action will run.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/timestamp" - }, - "type": "array" - }, - "Schedule": { - "description": "The schedule in `at( )` or `cron( )` format.", - "type": "string" - }, - "ScheduledActionDescription": { - "description": "The description of the scheduled action.", - "type": "string" - }, - "ScheduledActionName": { - "description": "The name of the scheduled action. The name must be unique within an account.", - "type": "string" - }, - "StartTime": { - "$ref": "#/definitions/timestamp", - "description": "The start time in UTC of the scheduled action. Before this time, the scheduled action does not trigger." - }, - "State": { - "description": "The state of the scheduled action.", - "enum": [ - "ACTIVE", - "DISABLED" - ], - "type": "string" - }, - "TargetAction": { - "$ref": "#/definitions/ScheduledActionType", - "description": "A JSON format string of the Amazon Redshift API operation with input parameters." - } - }, - "readOnlyProperties": [ - "/properties/State", - "/properties/NextInvocations" - ], - "required": [ - "ScheduledActionName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Redshift::ScheduledAction" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ScheduledActionName" + ], + "definitions": { + "PauseClusterMessage": { + "additionalProperties": false, + "description": "Describes a pause cluster operation. For example, a scheduled action to run the `PauseCluster` API operation.", + "properties": { + "ClusterIdentifier": { + "relationshipRef": { + "propertyPath": "/properties/ClusterIdentifier", + "typeName": "AWS::Redshift::Cluster" + }, + "type": "string" + } + }, + "required": [ + "ClusterIdentifier" + ], + "type": "object" + }, + "ResizeClusterMessage": { + "additionalProperties": false, + "description": "Describes a resize cluster operation. For example, a scheduled action to run the `ResizeCluster` API operation.", + "properties": { + "Classic": { + "type": "boolean" + }, + "ClusterIdentifier": { + "relationshipRef": { + "propertyPath": "/properties/ClusterIdentifier", + "typeName": "AWS::Redshift::Cluster" + }, + "type": "string" + }, + "ClusterType": { + "relationshipRef": { + "propertyPath": "/properties/ClusterType", + "typeName": "AWS::Redshift::Cluster" + }, + "type": "string" + }, + "NodeType": { + "relationshipRef": { + "propertyPath": "/properties/NodeType", + "typeName": "AWS::Redshift::Cluster" + }, + "type": "string" + }, + "NumberOfNodes": { + "relationshipRef": { + "propertyPath": "/properties/NumberOfNodes", + "typeName": "AWS::Redshift::Cluster" + }, + "type": "integer" + } + }, + "required": [ + "ClusterIdentifier" + ], + "type": "object" + }, + "ResumeClusterMessage": { + "additionalProperties": false, + "description": "Describes a resume cluster operation. For example, a scheduled action to run the `ResumeCluster` API operation.", + "properties": { + "ClusterIdentifier": { + "relationshipRef": { + "propertyPath": "/properties/ClusterIdentifier", + "typeName": "AWS::Redshift::Cluster" + }, + "type": "string" + } + }, + "required": [ + "ClusterIdentifier" + ], + "type": "object" + }, + "ScheduledActionType": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "ResizeCluster": { + "$ref": "#/definitions/ResizeClusterMessage" + } + } + }, + { + "additionalProperties": false, + "properties": { + "PauseCluster": { + "$ref": "#/definitions/PauseClusterMessage" + } + } + }, + { + "additionalProperties": false, + "properties": { + "ResumeCluster": { + "$ref": "#/definitions/ResumeClusterMessage" + } + } + } + ], + "type": "object" + }, + "timestamp": { + "type": "string" + } + }, + "description": "The `AWS::Redshift::ScheduledAction` resource creates an Amazon Redshift Scheduled Action.", + "handlers": { + "create": { + "permissions": [ + "redshift:CreateScheduledAction", + "redshift:DescribeScheduledActions", + "redshift:DescribeTags", + "redshift:PauseCluster", + "redshift:ResumeCluster", + "redshift:ResizeCluster", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "redshift:DescribeTags", + "redshift:DescribeScheduledActions", + "redshift:DeleteScheduledAction" + ] + }, + "list": { + "permissions": [ + "redshift:DescribeTags", + "redshift:DescribeScheduledActions" + ] + }, + "read": { + "permissions": [ + "redshift:DescribeScheduledActions", + "redshift:DescribeTags" + ] + }, + "update": { + "permissions": [ + "redshift:DescribeScheduledActions", + "redshift:ModifyScheduledAction", + "redshift:PauseCluster", + "redshift:ResumeCluster", + "redshift:ResizeCluster", + "redshift:DescribeTags", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/ScheduledActionName" + ], + "properties": { + "Enable": { + "description": "If true, the schedule is enabled. If false, the scheduled action does not trigger.", + "type": "boolean" + }, + "EndTime": { + "$ref": "#/definitions/timestamp", + "description": "The end time in UTC of the scheduled action. After this time, the scheduled action does not trigger." + }, + "IamRole": { + "description": "The IAM role to assume to run the target action.", + "type": "string" + }, + "NextInvocations": { + "description": "List of times when the scheduled action will run.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/timestamp" + }, + "type": "array" + }, + "Schedule": { + "description": "The schedule in `at( )` or `cron( )` format.", + "type": "string" + }, + "ScheduledActionDescription": { + "description": "The description of the scheduled action.", + "type": "string" + }, + "ScheduledActionName": { + "description": "The name of the scheduled action. The name must be unique within an account.", + "type": "string" + }, + "StartTime": { + "$ref": "#/definitions/timestamp", + "description": "The start time in UTC of the scheduled action. Before this time, the scheduled action does not trigger." + }, + "State": { + "description": "The state of the scheduled action.", + "enum": [ + "ACTIVE", + "DISABLED" + ], + "type": "string" + }, + "TargetAction": { + "$ref": "#/definitions/ScheduledActionType", + "description": "A JSON format string of the Amazon Redshift API operation with input parameters." + } + }, + "readOnlyProperties": [ + "/properties/State", + "/properties/NextInvocations" + ], + "required": [ + "ScheduledActionName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Redshift::ScheduledAction" +} diff --git a/src/schema/aws-redshiftserverless-namespace.json b/src/schema/aws-redshiftserverless-namespace.json index 1c138873..e53f887e 100644 --- a/src/schema/aws-redshiftserverless-namespace.json +++ b/src/schema/aws-redshiftserverless-namespace.json @@ -1,353 +1,368 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/NamespaceName", - "/properties/Tags" - ], - "definitions": { - "LogExport": { - "enum": [ - "useractivitylog", - "userlog", - "connectionlog" - ], - "type": "string" - }, - "Namespace": { - "additionalProperties": false, - "properties": { - "AdminPasswordSecretArn": { - "type": "string" - }, - "AdminPasswordSecretKmsKeyId": { - "type": "string" - }, - "AdminUsername": { - "type": "string" - }, - "CreationDate": { - "type": "string" - }, - "DbName": { - "pattern": "[a-zA-Z][a-zA-Z_0-9+.@-]*", - "type": "string" - }, - "DefaultIamRoleArn": { - "type": "string" - }, - "IamRoles": { - "insertionOrder": false, - "items": { - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "type": "array" - }, - "KmsKeyId": { - "type": "string" - }, - "LogExports": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LogExport" - }, - "maxItems": 16, - "minItems": 0, - "type": "array" - }, - "NamespaceArn": { - "type": "string" - }, - "NamespaceId": { - "type": "string" - }, - "NamespaceName": { - "maxLength": 64, - "minLength": 3, - "pattern": "^[a-z0-9-]+$", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/NamespaceStatus" - } - }, - "type": "object" - }, - "NamespaceStatus": { - "enum": [ - "AVAILABLE", - "MODIFYING", - "DELETING" - ], - "type": "string" - }, - "SnapshotCopyConfiguration": { - "additionalProperties": false, - "properties": { - "DestinationKmsKeyId": { - "type": "string" - }, - "DestinationRegion": { - "type": "string" - }, - "SnapshotRetentionPeriod": { - "type": "integer" - } - }, - "required": [ - "DestinationRegion" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::RedshiftServerless::Namespace Resource Type", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "kms:TagResource", - "kms:UntagResource", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:Encrypt", - "kms:Decrypt", - "kms:DescribeKey", - "kms:GenerateDataKeyPair", - "kms:GenerateDataKey", - "kms:CreateGrant", - "kms:ListGrants", - "kms:RevokeGrant", - "kms:RetireGrant", - "redshift-serverless:CreateNamespace", - "redshift-serverless:GetNamespace", - "redshift-serverless:ListSnapshotCopyConfigurations", - "redshift-serverless:CreateSnapshotCopyConfiguration", - "redshift:GetResourcePolicy", - "redshift:PutResourcePolicy", - "secretsmanager:CreateSecret", - "secretsmanager:TagResource", - "secretsmanager:RotateSecret", - "secretsmanager:DescribeSecret" - ] - }, - "delete": { - "permissions": [ - "iam:PassRole", - "redshift-serverless:DeleteNamespace", - "redshift-serverless:GetNamespace", - "kms:RetireGrant", - "secretsmanager:DescribeSecret", - "secretsmanager:DeleteSecret", - "redshift:DeleteResourcePolicy" - ] - }, - "list": { - "permissions": [ - "iam:PassRole", - "redshift-serverless:ListNamespaces" - ] - }, - "read": { - "permissions": [ - "iam:PassRole", - "redshift-serverless:GetNamespace", - "redshift:GetResourcePolicy", - "redshift-serverless:ListSnapshotCopyConfigurations" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "kms:TagResource", - "kms:UntagResource", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:Encrypt", - "kms:Decrypt", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:ListGrants", - "kms:RevokeGrant", - "kms:RetireGrant", - "kms:GenerateDataKeyPair", - "kms:GenerateDataKey", - "redshift-serverless:UpdateNamespace", - "redshift-serverless:GetNamespace", - "redshift-serverless:ListSnapshotCopyConfigurations", - "redshift-serverless:CreateSnapshotCopyConfiguration", - "redshift-serverless:UpdateSnapshotCopyConfiguration", - "redshift-serverless:DeleteSnapshotCopyConfiguration", - "redshift:GetResourcePolicy", - "redshift:PutResourcePolicy", - "redshift:DeleteResourcePolicy", - "secretsmanager:CreateSecret", - "secretsmanager:TagResource", - "secretsmanager:RotateSecret", - "secretsmanager:DescribeSecret", - "secretsmanager:UpdateSecret", - "secretsmanager:DeleteSecret" - ] - } - }, - "primaryIdentifier": [ - "/properties/NamespaceName" - ], - "properties": { - "AdminPasswordSecretKmsKeyId": { - "description": "The ID of the AWS Key Management Service (KMS) key used to encrypt and store the namespace's admin credentials secret. You can only use this parameter if manageAdminPassword is true.", - "type": "string" - }, - "AdminUserPassword": { - "description": "The password associated with the admin user for the namespace that is being created. Password must be at least 8 characters in length, should be any printable ASCII character. Must contain at least one lowercase letter, one uppercase letter and one decimal digit. You can't use adminUserPassword if manageAdminPassword is true.", - "maxLength": 64, - "minLength": 8, - "pattern": "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[^\\x00-\\x20\\x22\\x27\\x2f\\x40\\x5c\\x7f-\\uffff]+", - "type": "string" - }, - "AdminUsername": { - "description": "The user name associated with the admin user for the namespace that is being created. Only alphanumeric characters and underscores are allowed. It should start with an alphabet.", - "pattern": "[a-zA-Z][a-zA-Z_0-9+.@-]*", - "type": "string" - }, - "DbName": { - "description": "The database name associated for the namespace that is being created. Only alphanumeric characters and underscores are allowed. It should start with an alphabet.", - "maxLength": 127, - "pattern": "[a-zA-Z][a-zA-Z_0-9+.@-]*", - "type": "string" - }, - "DefaultIamRoleArn": { - "description": "The default IAM role ARN for the namespace that is being created.", - "type": "string" - }, - "FinalSnapshotName": { - "description": "The name of the namespace the source snapshot was created from. Please specify the name if needed before deleting namespace", - "maxLength": 255, - "pattern": "[a-z][a-z0-9]*(-[a-z0-9]+)*", - "type": "string" - }, - "FinalSnapshotRetentionPeriod": { - "description": "The number of days to retain automated snapshot in the destination region after they are copied from the source region. If the value is -1, the manual snapshot is retained indefinitely. The value must be either -1 or an integer between 1 and 3,653.", - "type": "integer" - }, - "IamRoles": { - "description": "A list of AWS Identity and Access Management (IAM) roles that can be used by the namespace to access other AWS services. You must supply the IAM roles in their Amazon Resource Name (ARN) format. The Default role limit for each request is 10.", - "insertionOrder": false, - "items": { - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "type": "array" - }, - "KmsKeyId": { - "description": "The AWS Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the namespace.", - "type": "string" - }, - "LogExports": { - "description": "The collection of log types to be exported provided by the customer. Should only be one of the three supported log types: userlog, useractivitylog and connectionlog", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LogExport" - }, - "maxItems": 16, - "minItems": 0, - "type": "array" - }, - "ManageAdminPassword": { - "description": "If true, Amazon Redshift uses AWS Secrets Manager to manage the namespace's admin credentials. You can't use adminUserPassword if manageAdminPassword is true. If manageAdminPassword is false or not set, Amazon Redshift uses adminUserPassword for the admin user account's password.", - "type": "boolean" - }, - "Namespace": { - "$ref": "#/definitions/Namespace", - "description": "Definition of Namespace resource." - }, - "NamespaceName": { - "description": "A unique identifier for the namespace. You use this identifier to refer to the namespace for any subsequent namespace operations such as deleting or modifying. All alphabetical characters must be lower case. Namespace name should be unique for all namespaces within an AWS account.", - "maxLength": 64, - "minLength": 3, - "pattern": "^[a-z0-9-]+$", - "type": "string" - }, - "NamespaceResourcePolicy": { - "description": "The resource policy document that will be attached to the namespace.", - "type": "object" - }, - "RedshiftIdcApplicationArn": { - "description": "The ARN for the Redshift application that integrates with IAM Identity Center.", - "type": "string" - }, - "SnapshotCopyConfigurations": { - "description": "The snapshot copy configurations for the namespace.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SnapshotCopyConfiguration" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Tags": { - "description": "The list of tags for the namespace.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Namespace", - "/properties/Namespace/NamespaceArn", - "/properties/Namespace/NamespaceId", - "/properties/Namespace/NamespaceName", - "/properties/Namespace/AdminUsername", - "/properties/Namespace/DbName", - "/properties/Namespace/KmsKeyId", - "/properties/Namespace/DefaultIamRoleArn", - "/properties/Namespace/IamRoles", - "/properties/Namespace/LogExports", - "/properties/Namespace/Status", - "/properties/Namespace/CreationDate" - ], - "required": [ - "NamespaceName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift-serverless", - "tagging": { - "taggable": false - }, - "typeName": "AWS::RedshiftServerless::Namespace", - "writeOnlyProperties": [ - "/properties/AdminUserPassword", - "/properties/FinalSnapshotName", - "/properties/FinalSnapshotRetentionPeriod", - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value", - "/properties/ManageAdminPassword", - "/properties/RedshiftIdcApplicationArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/NamespaceName" + ], + "definitions": { + "LogExport": { + "enum": [ + "useractivitylog", + "userlog", + "connectionlog" + ], + "type": "string" + }, + "Namespace": { + "additionalProperties": false, + "properties": { + "AdminPasswordSecretArn": { + "type": "string" + }, + "AdminPasswordSecretKmsKeyId": { + "type": "string" + }, + "AdminUsername": { + "type": "string" + }, + "CreationDate": { + "type": "string" + }, + "DbName": { + "pattern": "[a-zA-Z][a-zA-Z_0-9+.@-]*", + "type": "string" + }, + "DefaultIamRoleArn": { + "type": "string" + }, + "IamRoles": { + "insertionOrder": false, + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "type": "array" + }, + "KmsKeyId": { + "type": "string" + }, + "LogExports": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LogExport" + }, + "maxItems": 16, + "minItems": 0, + "type": "array" + }, + "NamespaceArn": { + "type": "string" + }, + "NamespaceId": { + "type": "string" + }, + "NamespaceName": { + "maxLength": 64, + "minLength": 3, + "pattern": "^[a-z0-9-]+$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/NamespaceStatus" + } + }, + "type": "object" + }, + "NamespaceStatus": { + "enum": [ + "AVAILABLE", + "MODIFYING", + "DELETING" + ], + "type": "string" + }, + "SnapshotCopyConfiguration": { + "additionalProperties": false, + "properties": { + "DestinationKmsKeyId": { + "type": "string" + }, + "DestinationRegion": { + "type": "string" + }, + "SnapshotRetentionPeriod": { + "type": "integer" + } + }, + "required": [ + "DestinationRegion" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::RedshiftServerless::Namespace Resource Type", + "handlers": { + "create": { + "permissions": [ + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "kms:TagResource", + "kms:UntagResource", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:Encrypt", + "kms:Decrypt", + "kms:DescribeKey", + "kms:GenerateDataKeyPair", + "kms:GenerateDataKey", + "kms:CreateGrant", + "kms:ListGrants", + "kms:RevokeGrant", + "kms:RetireGrant", + "redshift-serverless:CreateNamespace", + "redshift-serverless:GetNamespace", + "redshift-serverless:ListSnapshotCopyConfigurations", + "redshift-serverless:CreateSnapshotCopyConfiguration", + "redshift-serverless:ListTagsForResource", + "redshift-serverless:TagResource", + "redshift:GetResourcePolicy", + "redshift:PutResourcePolicy", + "secretsmanager:CreateSecret", + "secretsmanager:TagResource", + "secretsmanager:RotateSecret", + "secretsmanager:DescribeSecret" + ] + }, + "delete": { + "permissions": [ + "iam:PassRole", + "redshift-serverless:DeleteNamespace", + "redshift-serverless:GetNamespace", + "redshift-serverless:ListTagsForResource", + "redshift-serverless:UntagResource", + "kms:RetireGrant", + "secretsmanager:DescribeSecret", + "secretsmanager:DeleteSecret", + "redshift:DeleteResourcePolicy" + ] + }, + "list": { + "permissions": [ + "iam:PassRole", + "redshift-serverless:ListNamespaces", + "redshift-serverless:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "iam:PassRole", + "redshift-serverless:GetNamespace", + "redshift-serverless:ListTagsForResource", + "redshift:GetResourcePolicy", + "redshift-serverless:ListSnapshotCopyConfigurations" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "kms:TagResource", + "kms:UntagResource", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:Encrypt", + "kms:Decrypt", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:ListGrants", + "kms:RevokeGrant", + "kms:RetireGrant", + "kms:GenerateDataKeyPair", + "kms:GenerateDataKey", + "redshift-serverless:UpdateNamespace", + "redshift-serverless:GetNamespace", + "redshift-serverless:ListSnapshotCopyConfigurations", + "redshift-serverless:CreateSnapshotCopyConfiguration", + "redshift-serverless:UpdateSnapshotCopyConfiguration", + "redshift-serverless:DeleteSnapshotCopyConfiguration", + "redshift-serverless:ListTagsForResource", + "redshift-serverless:TagResource", + "redshift-serverless:UntagResource", + "redshift:GetResourcePolicy", + "redshift:PutResourcePolicy", + "redshift:DeleteResourcePolicy", + "secretsmanager:CreateSecret", + "secretsmanager:TagResource", + "secretsmanager:RotateSecret", + "secretsmanager:DescribeSecret", + "secretsmanager:UpdateSecret", + "secretsmanager:DeleteSecret" + ] + } + }, + "primaryIdentifier": [ + "/properties/NamespaceName" + ], + "properties": { + "AdminPasswordSecretKmsKeyId": { + "description": "The ID of the AWS Key Management Service (KMS) key used to encrypt and store the namespace's admin credentials secret. You can only use this parameter if manageAdminPassword is true.", + "type": "string" + }, + "AdminUserPassword": { + "description": "The password associated with the admin user for the namespace that is being created. Password must be at least 8 characters in length, should be any printable ASCII character. Must contain at least one lowercase letter, one uppercase letter and one decimal digit. You can't use adminUserPassword if manageAdminPassword is true.", + "maxLength": 64, + "minLength": 8, + "pattern": "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[^\\x00-\\x20\\x22\\x27\\x2f\\x40\\x5c\\x7f-\\uffff]+", + "type": "string" + }, + "AdminUsername": { + "description": "The user name associated with the admin user for the namespace that is being created. Only alphanumeric characters and underscores are allowed. It should start with an alphabet.", + "pattern": "[a-zA-Z][a-zA-Z_0-9+.@-]*", + "type": "string" + }, + "DbName": { + "description": "The database name associated for the namespace that is being created. Only alphanumeric characters and underscores are allowed. It should start with an alphabet.", + "maxLength": 127, + "pattern": "[a-zA-Z][a-zA-Z_0-9+.@-]*", + "type": "string" + }, + "DefaultIamRoleArn": { + "description": "The default IAM role ARN for the namespace that is being created.", + "type": "string" + }, + "FinalSnapshotName": { + "description": "The name of the namespace the source snapshot was created from. Please specify the name if needed before deleting namespace", + "maxLength": 255, + "pattern": "[a-z][a-z0-9]*(-[a-z0-9]+)*", + "type": "string" + }, + "FinalSnapshotRetentionPeriod": { + "description": "The number of days to retain automated snapshot in the destination region after they are copied from the source region. If the value is -1, the manual snapshot is retained indefinitely. The value must be either -1 or an integer between 1 and 3,653.", + "type": "integer" + }, + "IamRoles": { + "description": "A list of AWS Identity and Access Management (IAM) roles that can be used by the namespace to access other AWS services. You must supply the IAM roles in their Amazon Resource Name (ARN) format. The Default role limit for each request is 10.", + "insertionOrder": false, + "items": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "type": "array" + }, + "KmsKeyId": { + "description": "The AWS Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the namespace.", + "type": "string" + }, + "LogExports": { + "description": "The collection of log types to be exported provided by the customer. Should only be one of the three supported log types: userlog, useractivitylog and connectionlog", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LogExport" + }, + "maxItems": 16, + "minItems": 0, + "type": "array" + }, + "ManageAdminPassword": { + "description": "If true, Amazon Redshift uses AWS Secrets Manager to manage the namespace's admin credentials. You can't use adminUserPassword if manageAdminPassword is true. If manageAdminPassword is false or not set, Amazon Redshift uses adminUserPassword for the admin user account's password.", + "type": "boolean" + }, + "Namespace": { + "$ref": "#/definitions/Namespace", + "description": "Definition of Namespace resource." + }, + "NamespaceName": { + "description": "A unique identifier for the namespace. You use this identifier to refer to the namespace for any subsequent namespace operations such as deleting or modifying. All alphabetical characters must be lower case. Namespace name should be unique for all namespaces within an AWS account.", + "maxLength": 64, + "minLength": 3, + "pattern": "^[a-z0-9-]+$", + "type": "string" + }, + "NamespaceResourcePolicy": { + "description": "The resource policy document that will be attached to the namespace.", + "type": "object" + }, + "RedshiftIdcApplicationArn": { + "description": "The ARN for the Redshift application that integrates with IAM Identity Center.", + "type": "string" + }, + "SnapshotCopyConfigurations": { + "description": "The snapshot copy configurations for the namespace.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SnapshotCopyConfiguration" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Tags": { + "description": "The list of tags for the namespace.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Namespace", + "/properties/Namespace/NamespaceArn", + "/properties/Namespace/NamespaceId", + "/properties/Namespace/NamespaceName", + "/properties/Namespace/AdminUsername", + "/properties/Namespace/DbName", + "/properties/Namespace/KmsKeyId", + "/properties/Namespace/DefaultIamRoleArn", + "/properties/Namespace/IamRoles", + "/properties/Namespace/LogExports", + "/properties/Namespace/Status", + "/properties/Namespace/CreationDate" + ], + "required": [ + "NamespaceName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift-serverless", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "redshift-serverless:ListTagsForResource", + "redshift-serverless:TagResource", + "redshift-serverless:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RedshiftServerless::Namespace", + "writeOnlyProperties": [ + "/properties/AdminUserPassword", + "/properties/FinalSnapshotName", + "/properties/FinalSnapshotRetentionPeriod", + "/properties/ManageAdminPassword", + "/properties/RedshiftIdcApplicationArn" + ] +} diff --git a/src/schema/aws-redshiftserverless-workgroup.json b/src/schema/aws-redshiftserverless-workgroup.json index f751b29c..43cafa8c 100644 --- a/src/schema/aws-redshiftserverless-workgroup.json +++ b/src/schema/aws-redshiftserverless-workgroup.json @@ -1,389 +1,467 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/WorkgroupName", - "/properties/NamespaceName" - ], - "definitions": { - "ConfigParameter": { - "additionalProperties": false, - "properties": { - "ParameterKey": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "ParameterValue": { - "maxLength": 15000, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "Endpoint": { - "additionalProperties": false, - "properties": { - "Address": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "VpcEndpoints": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/VpcEndpoint" - }, - "type": "array" - } - }, - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AvailabilityZone": { - "type": "string" - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "SubnetId": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "VpcEndpoint": { - "additionalProperties": false, - "properties": { - "NetworkInterfaces": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array" - }, - "VpcEndpointId": { - "type": "string" - }, - "VpcId": { - "type": "string" - } - }, - "type": "object" - }, - "Workgroup": { - "additionalProperties": false, - "properties": { - "BaseCapacity": { - "type": "integer" - }, - "ConfigParameters": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ConfigParameter" - }, - "type": "array", - "uniqueItems": true - }, - "CreationDate": { - "type": "string" - }, - "Endpoint": { - "$ref": "#/definitions/Endpoint" - }, - "EnhancedVpcRouting": { - "type": "boolean" - }, - "MaxCapacity": { - "type": "integer" - }, - "NamespaceName": { - "maxLength": 64, - "minLength": 3, - "pattern": "^[a-z0-9-]+$", - "type": "string" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "SecurityGroupIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 0, - "pattern": "^sg-[0-9a-fA-F]{8,}$", - "type": "string" - }, - "type": "array" - }, - "Status": { - "$ref": "#/definitions/WorkgroupStatus" - }, - "SubnetIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 0, - "pattern": "^subnet-[0-9a-fA-F]{8,}$", - "type": "string" - }, - "type": "array" - }, - "WorkgroupArn": { - "type": "string" - }, - "WorkgroupId": { - "type": "string" - }, - "WorkgroupName": { - "maxLength": 64, - "minLength": 3, - "pattern": "^[a-z0-9-]*$", - "type": "string" - } - }, - "type": "object" - }, - "WorkgroupStatus": { - "enum": [ - "CREATING", - "AVAILABLE", - "MODIFYING", - "DELETING" - ], - "type": "string" - } - }, - "description": "Definition of AWS::RedshiftServerless::Workgroup Resource Type", - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeVpcAttribute", - "ec2:DescribeSecurityGroups", - "ec2:DescribeAddresses", - "ec2:DescribeInternetGateways", - "ec2:DescribeSubnets", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAvailabilityZones", - "redshift-serverless:CreateNamespace", - "redshift-serverless:CreateWorkgroup", - "redshift-serverless:GetWorkgroup", - "redshift-serverless:GetNamespace" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeVpcAttribute", - "ec2:DescribeSecurityGroups", - "ec2:DescribeAddresses", - "ec2:DescribeInternetGateways", - "ec2:DescribeSubnets", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAvailabilityZones", - "redshift-serverless:GetWorkgroup", - "redshift-serverless:GetNamespace", - "redshift-serverless:DeleteWorkgroup" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeVpcAttribute", - "ec2:DescribeSecurityGroups", - "ec2:DescribeAddresses", - "ec2:DescribeInternetGateways", - "ec2:DescribeSubnets", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAvailabilityZones", - "redshift-serverless:ListWorkgroups" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVpcAttribute", - "ec2:DescribeSecurityGroups", - "ec2:DescribeAddresses", - "ec2:DescribeInternetGateways", - "ec2:DescribeSubnets", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAvailabilityZones", - "redshift-serverless:GetWorkgroup" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeVpcAttribute", - "ec2:DescribeSecurityGroups", - "ec2:DescribeAddresses", - "ec2:DescribeInternetGateways", - "ec2:DescribeSubnets", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAvailabilityZones", - "redshift-serverless:ListTagsForResource", - "redshift-serverless:TagResource", - "redshift-serverless:UntagResource", - "redshift-serverless:GetWorkgroup", - "redshift-serverless:UpdateWorkgroup" - ] - } - }, - "primaryIdentifier": [ - "/properties/WorkgroupName" - ], - "properties": { - "BaseCapacity": { - "description": "The base compute capacity of the workgroup in Redshift Processing Units (RPUs).", - "type": "integer" - }, - "ConfigParameters": { - "description": "A list of parameters to set for finer control over a database. Available options are datestyle, enable_user_activity_logging, query_group, search_path, max_query_execution_time, and require_ssl.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ConfigParameter" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "EnhancedVpcRouting": { - "default": false, - "description": "The value that specifies whether to enable enhanced virtual private cloud (VPC) routing, which forces Amazon Redshift Serverless to route traffic through your VPC.", - "type": "boolean" - }, - "MaxCapacity": { - "description": "The max compute capacity of the workgroup in Redshift Processing Units (RPUs).", - "type": "integer" - }, - "NamespaceName": { - "description": "The namespace the workgroup is associated with.", - "maxLength": 64, - "minLength": 3, - "pattern": "^(?=^[a-z0-9-]+$).{3,64}$", - "type": "string" - }, - "Port": { - "description": "The custom port to use when connecting to a workgroup. Valid port ranges are 5431-5455 and 8191-8215. The default is 5439.", - "type": "integer" - }, - "PubliclyAccessible": { - "default": false, - "description": "A value that specifies whether the workgroup can be accessible from a public network.", - "type": "boolean" - }, - "SecurityGroupIds": { - "description": "A list of security group IDs to associate with the workgroup.", - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 0, - "pattern": "^sg-[0-9a-fA-F]{8,}$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "SubnetIds": { - "description": "A list of subnet IDs the workgroup is associated with.", - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 0, - "pattern": "^subnet-[0-9a-fA-F]{8,}$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "Tags": { - "description": "The map of the key-value pairs used to tag the workgroup.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "Workgroup": { - "$ref": "#/definitions/Workgroup", - "description": "Definition for workgroup resource" - }, - "WorkgroupName": { - "description": "The name of the workgroup.", - "maxLength": 64, - "minLength": 3, - "pattern": "^(?=^[a-z0-9-]+$).{3,64}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Workgroup", - "/properties/Workgroup/WorkgroupId", - "/properties/Workgroup/WorkgroupArn", - "/properties/Workgroup/WorkgroupName", - "/properties/Workgroup/NamespaceName", - "/properties/Workgroup/BaseCapacity", - "/properties/Workgroup/MaxCapacity", - "/properties/Workgroup/EnhancedVpcRouting", - "/properties/Workgroup/ConfigParameters/*/ParameterKey", - "/properties/Workgroup/ConfigParameters/*/ParameterValue", - "/properties/Workgroup/SecurityGroupIds", - "/properties/Workgroup/SubnetIds", - "/properties/Workgroup/Status", - "/properties/Workgroup/Endpoint/Address", - "/properties/Workgroup/Endpoint/Port", - "/properties/Workgroup/Endpoint/VpcEndpoints/*/VpcEndpointId", - "/properties/Workgroup/Endpoint/VpcEndpoints/*/VpcId", - "/properties/Workgroup/Endpoint/VpcEndpoints/*/NetworkInterfaces/*/NetworkInterfaceId", - "/properties/Workgroup/Endpoint/VpcEndpoints/*/NetworkInterfaces/*/SubnetId", - "/properties/Workgroup/Endpoint/VpcEndpoints/*/NetworkInterfaces/*/PrivateIpAddress", - "/properties/Workgroup/Endpoint/VpcEndpoints/*/NetworkInterfaces/*/AvailabilityZone", - "/properties/Workgroup/PubliclyAccessible", - "/properties/Workgroup/CreationDate" - ], - "required": [ - "WorkgroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift-serverless", - "tagging": { - "taggable": true - }, - "typeName": "AWS::RedshiftServerless::Workgroup", - "writeOnlyProperties": [ - "/properties/BaseCapacity", - "/properties/MaxCapacity", - "/properties/ConfigParameters", - "/properties/SecurityGroupIds", - "/properties/SubnetIds", - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/WorkgroupName", + "/properties/NamespaceName" + ], + "definitions": { + "ConfigParameter": { + "additionalProperties": false, + "properties": { + "ParameterKey": { + "maxLength": 255, + "minLength": 0, + "type": "string" + }, + "ParameterValue": { + "maxLength": 15000, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "Endpoint": { + "additionalProperties": false, + "properties": { + "Address": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "VpcEndpoints": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VpcEndpoint" + }, + "type": "array" + } + }, + "type": "object" + }, + "NetworkInterface": { + "additionalProperties": false, + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "NetworkInterfaceId": { + "type": "string" + }, + "PrivateIpAddress": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "type": "object" + }, + "PerformanceTarget": { + "additionalProperties": false, + "properties": { + "Level": { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "Status": { + "$ref": "#/definitions/PerformanceTargetStatus" + } + }, + "type": "object" + }, + "PerformanceTargetStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VpcEndpoint": { + "additionalProperties": false, + "properties": { + "NetworkInterfaces": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/NetworkInterface" + }, + "type": "array" + }, + "VpcEndpointId": { + "type": "string" + }, + "VpcId": { + "type": "string" + } + }, + "type": "object" + }, + "Workgroup": { + "additionalProperties": false, + "properties": { + "BaseCapacity": { + "type": "integer" + }, + "ConfigParameters": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ConfigParameter" + }, + "type": "array", + "uniqueItems": true + }, + "CreationDate": { + "type": "string" + }, + "Endpoint": { + "$ref": "#/definitions/Endpoint" + }, + "EnhancedVpcRouting": { + "type": "boolean" + }, + "MaxCapacity": { + "type": "integer" + }, + "NamespaceName": { + "maxLength": 64, + "minLength": 3, + "pattern": "^[a-z0-9-]+$", + "type": "string" + }, + "PricePerformanceTarget": { + "$ref": "#/definitions/PerformanceTarget" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 0, + "pattern": "^sg-[0-9a-fA-F]{8,}$", + "type": "string" + }, + "type": "array" + }, + "Status": { + "$ref": "#/definitions/WorkgroupStatus" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 0, + "pattern": "^subnet-[0-9a-fA-F]{8,}$", + "type": "string" + }, + "type": "array" + }, + "TrackName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_]+$", + "type": "string" + }, + "WorkgroupArn": { + "type": "string" + }, + "WorkgroupId": { + "type": "string" + }, + "WorkgroupName": { + "maxLength": 64, + "minLength": 3, + "pattern": "^[a-z0-9-]*$", + "type": "string" + } + }, + "type": "object" + }, + "WorkgroupStatus": { + "enum": [ + "CREATING", + "AVAILABLE", + "MODIFYING", + "DELETING" + ], + "type": "string" + } + }, + "description": "Definition of AWS::RedshiftServerless::Workgroup Resource Type", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeVpcAttribute", + "ec2:DescribeSecurityGroups", + "ec2:DescribeAddresses", + "ec2:DescribeInternetGateways", + "ec2:DescribeSubnets", + "ec2:DescribeAccountAttributes", + "ec2:DescribeAvailabilityZones", + "redshift-serverless:CreateNamespace", + "redshift-serverless:CreateWorkgroup", + "redshift-serverless:GetWorkgroup", + "redshift-serverless:GetNamespace", + "redshift-serverless:ListTagsForResource", + "redshift-serverless:TagResource", + "redshift-serverless:RestoreFromSnapshot", + "redshift-serverless:RestoreFromRecoveryPoint" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeVpcAttribute", + "ec2:DescribeSecurityGroups", + "ec2:DescribeAddresses", + "ec2:DescribeInternetGateways", + "ec2:DescribeSubnets", + "ec2:DescribeAccountAttributes", + "ec2:DescribeAvailabilityZones", + "redshift-serverless:GetWorkgroup", + "redshift-serverless:GetNamespace", + "redshift-serverless:DeleteWorkgroup", + "redshift-serverless:ListTagsForResource", + "redshift-serverless:UntagResource" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeVpcAttribute", + "ec2:DescribeSecurityGroups", + "ec2:DescribeAddresses", + "ec2:DescribeInternetGateways", + "ec2:DescribeSubnets", + "ec2:DescribeAccountAttributes", + "ec2:DescribeAvailabilityZones", + "redshift-serverless:ListWorkgroups", + "redshift-serverless:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcAttribute", + "ec2:DescribeSecurityGroups", + "ec2:DescribeAddresses", + "ec2:DescribeInternetGateways", + "ec2:DescribeSubnets", + "ec2:DescribeAccountAttributes", + "ec2:DescribeAvailabilityZones", + "redshift-serverless:GetWorkgroup", + "redshift-serverless:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeVpcAttribute", + "ec2:DescribeSecurityGroups", + "ec2:DescribeAddresses", + "ec2:DescribeInternetGateways", + "ec2:DescribeSubnets", + "ec2:DescribeAccountAttributes", + "ec2:DescribeAvailabilityZones", + "redshift-serverless:ListTagsForResource", + "redshift-serverless:TagResource", + "redshift-serverless:UntagResource", + "redshift-serverless:GetWorkgroup", + "redshift-serverless:UpdateWorkgroup", + "redshift-serverless:ListTagsForResource", + "redshift-serverless:TagResource", + "redshift-serverless:UntagResource", + "redshift-serverless:RestoreFromSnapshot", + "redshift-serverless:RestoreFromRecoveryPoint" + ] + } + }, + "primaryIdentifier": [ + "/properties/WorkgroupName" + ], + "properties": { + "BaseCapacity": { + "description": "The base compute capacity of the workgroup in Redshift Processing Units (RPUs).", + "type": "integer" + }, + "ConfigParameters": { + "description": "A list of parameters to set for finer control over a database. Available options are datestyle, enable_user_activity_logging, query_group, search_path, max_query_execution_time, and require_ssl.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ConfigParameter" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "EnhancedVpcRouting": { + "default": false, + "description": "The value that specifies whether to enable enhanced virtual private cloud (VPC) routing, which forces Amazon Redshift Serverless to route traffic through your VPC.", + "type": "boolean" + }, + "MaxCapacity": { + "description": "The max compute capacity of the workgroup in Redshift Processing Units (RPUs).", + "type": "integer" + }, + "NamespaceName": { + "description": "The namespace the workgroup is associated with.", + "maxLength": 64, + "minLength": 3, + "pattern": "^(?=^[a-z0-9-]+$).{3,64}$", + "type": "string" + }, + "Port": { + "description": "The custom port to use when connecting to a workgroup. Valid port ranges are 5431-5455 and 8191-8215. The default is 5439.", + "type": "integer" + }, + "PricePerformanceTarget": { + "$ref": "#/definitions/PerformanceTarget", + "description": "A property that represents the price performance target settings for the workgroup.", + "type": "object" + }, + "PubliclyAccessible": { + "default": false, + "description": "A value that specifies whether the workgroup can be accessible from a public network.", + "type": "boolean" + }, + "RecoveryPointId": { + "description": "The recovery point id to restore from.", + "type": "string" + }, + "SecurityGroupIds": { + "description": "A list of security group IDs to associate with the workgroup.", + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 0, + "pattern": "^sg-[0-9a-fA-F]{8,}$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "SnapshotArn": { + "description": "The Amazon Resource Name (ARN) of the snapshot to restore from.", + "type": "string" + }, + "SnapshotName": { + "description": "The snapshot name to restore from.", + "type": "string" + }, + "SnapshotOwnerAccount": { + "description": "The Amazon Web Services account that owns the snapshot.", + "type": "string" + }, + "SubnetIds": { + "description": "A list of subnet IDs the workgroup is associated with.", + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 0, + "pattern": "^subnet-[0-9a-fA-F]{8,}$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "Tags": { + "description": "The map of the key-value pairs used to tag the workgroup.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TrackName": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_]+$", + "type": "string" + }, + "Workgroup": { + "$ref": "#/definitions/Workgroup", + "description": "Definition for workgroup resource" + }, + "WorkgroupName": { + "description": "The name of the workgroup.", + "maxLength": 64, + "minLength": 3, + "pattern": "^(?=^[a-z0-9-]+$).{3,64}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Workgroup/WorkgroupId", + "/properties/Workgroup/WorkgroupArn", + "/properties/Workgroup/WorkgroupName", + "/properties/Workgroup/NamespaceName", + "/properties/Workgroup/BaseCapacity", + "/properties/Workgroup/MaxCapacity", + "/properties/Workgroup/EnhancedVpcRouting", + "/properties/Workgroup/ConfigParameters/*/ParameterKey", + "/properties/Workgroup/ConfigParameters/*/ParameterValue", + "/properties/Workgroup/SecurityGroupIds", + "/properties/Workgroup/SubnetIds", + "/properties/Workgroup/TrackName", + "/properties/Workgroup/Status", + "/properties/Workgroup/Endpoint/Address", + "/properties/Workgroup/Endpoint/Port", + "/properties/Workgroup/Endpoint/VpcEndpoints/*/VpcEndpointId", + "/properties/Workgroup/Endpoint/VpcEndpoints/*/VpcId", + "/properties/Workgroup/Endpoint/VpcEndpoints/*/NetworkInterfaces/*/NetworkInterfaceId", + "/properties/Workgroup/Endpoint/VpcEndpoints/*/NetworkInterfaces/*/SubnetId", + "/properties/Workgroup/Endpoint/VpcEndpoints/*/NetworkInterfaces/*/PrivateIpAddress", + "/properties/Workgroup/Endpoint/VpcEndpoints/*/NetworkInterfaces/*/AvailabilityZone", + "/properties/Workgroup/PubliclyAccessible", + "/properties/Workgroup/CreationDate" + ], + "required": [ + "WorkgroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift-serverless", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "redshift-serverless:ListTagsForResource", + "redshift-serverless:TagResource", + "redshift-serverless:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RedshiftServerless::Workgroup", + "writeOnlyProperties": [ + "/properties/ConfigParameters", + "/properties/SecurityGroupIds", + "/properties/SubnetIds", + "/properties/SnapshotArn", + "/properties/SnapshotName", + "/properties/SnapshotOwnerAccount", + "/properties/RecoveryPointId" + ] +} diff --git a/src/schema/aws-refactorspaces-application.json b/src/schema/aws-refactorspaces-application.json index 56fb2e11..6c216a27 100644 --- a/src/schema/aws-refactorspaces-application.json +++ b/src/schema/aws-refactorspaces-application.json @@ -1,247 +1,243 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApiGatewayProxy", - "/properties/EnvironmentIdentifier", - "/properties/Name", - "/properties/ProxyType", - "/properties/VpcId" - ], - "definitions": { - "ApiGatewayEndpointType": { - "enum": [ - "REGIONAL", - "PRIVATE" - ], - "type": "string" - }, - "ApiGatewayProxyInput": { - "additionalProperties": false, - "properties": { - "EndpointType": { - "$ref": "#/definitions/ApiGatewayEndpointType" - }, - "StageName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[-a-zA-Z0-9_]*$", - "type": "string" - } - }, - "type": "object" - }, - "ProxyType": { - "enum": [ - "API_GATEWAY" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A label for tagging Environment resource", - "properties": { - "Key": { - "description": "A string used to identify this tag", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:).+", - "type": "string" - }, - "Value": { - "description": "A string containing the value for the tag", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::RefactorSpaces::Application Resource Type", - "handlers": { - "create": { - "permissions": [ - "refactor-spaces:GetApplication", - "refactor-spaces:CreateApplication", - "refactor-spaces:TagResource", - "ec2:CreateTags", - "ec2:CreateVpcEndpointServiceConfiguration", - "ec2:DescribeVpcs", - "ec2:DescribeSubnets", - "ec2:DescribeVpcEndpointServiceConfigurations", - "ec2:DescribeAccountAttributes", - "ec2:DescribeInternetGateways", - "ec2:ModifyVpcEndpointServicePermissions", - "apigateway:DELETE", - "apigateway:GET", - "apigateway:PATCH", - "apigateway:POST", - "apigateway:PUT", - "apigateway:UpdateRestApiPolicy", - "apigateway:Update*", - "apigateway:Delete*", - "apigateway:Get*", - "apigateway:Put*", - "elasticloadbalancing:CreateLoadBalancer", - "elasticloadbalancing:DescribeLoadBalancers", - "elasticloadbalancing:DescribeTags", - "elasticloadbalancing:AddTags", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "refactor-spaces:GetApplication", - "refactor-spaces:DeleteApplication", - "refactor-spaces:UntagResource", - "ec2:DescribeVpcEndpointServiceConfigurations", - "ec2:DeleteRoute", - "ec2:DeleteSecurityGroup", - "ec2:DeleteTransitGateway", - "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:DeleteVpcEndpointServiceConfigurations", - "ec2:DeleteTags", - "ec2:RevokeSecurityGroupIngress", - "elasticloadbalancing:DeleteLoadBalancer", - "apigateway:Update*", - "apigateway:Delete*", - "apigateway:Get*", - "apigateway:Put*" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "EnvironmentIdentifier": { - "$ref": "resource-schema.json#/properties/EnvironmentIdentifier" - } - }, - "required": [ - "EnvironmentIdentifier" - ] - }, - "permissions": [ - "refactor-spaces:ListApplications", - "refactor-spaces:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "refactor-spaces:GetApplication", - "refactor-spaces:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/EnvironmentIdentifier", - "/properties/ApplicationIdentifier" - ], - "properties": { - "ApiGatewayId": { - "maxLength": 10, - "minLength": 10, - "pattern": "^[a-z0-9]{10}$", - "type": "string" - }, - "ApiGatewayProxy": { - "$ref": "#/definitions/ApiGatewayProxyInput" - }, - "ApplicationIdentifier": { - "maxLength": 14, - "minLength": 14, - "pattern": "^app-([0-9A-Za-z]{10}$)", - "type": "string" - }, - "Arn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:(aws[a-zA-Z-]*)?:refactor-spaces:[a-zA-Z0-9\\-]+:\\w{12}:[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "EnvironmentIdentifier": { - "maxLength": 14, - "minLength": 14, - "pattern": "^env-([0-9A-Za-z]{10}$)", - "type": "string" - }, - "Name": { - "maxLength": 63, - "minLength": 3, - "pattern": "^(?!app-)[a-zA-Z0-9]+[a-zA-Z0-9-_ ]+$", - "type": "string" - }, - "NlbArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:(aws[a-zA-Z-]*)?:elasticloadbalancing:[a-zA-Z0-9\\\\-]+:\\\\w{12}:[a-zA-Z_0-9+=,.@\\\\-_\\/]+$", - "type": "string" - }, - "NlbName": { - "maxLength": 32, - "minLength": 1, - "pattern": "^(?!internal-)[a-zA-Z0-9]+[a-zA-Z0-9-_ ]+.*[^-]$", - "type": "string" - }, - "ProxyType": { - "$ref": "#/definitions/ProxyType" - }, - "ProxyUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^http://[-a-zA-Z0-9+\\x38@#/%?=~_|!:,.;]*[-a-zA-Z0-9+\\x38@#/%=~_|]$", - "type": "string" - }, - "StageName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[-a-zA-Z0-9_]*$", - "type": "string" - }, - "Tags": { - "description": "Metadata that you can assign to help organize the frameworks that you create. Each tag is a key-value pair.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "VpcId": { - "maxLength": 21, - "minLength": 12, - "pattern": "^vpc-[-a-f0-9]{8}([-a-f0-9]{9})?$", - "type": "string" - }, - "VpcLinkId": { - "maxLength": 10, - "minLength": 10, - "pattern": "^[a-z0-9]{10}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ApplicationIdentifier", - "/properties/Arn", - "/properties/ApiGatewayId", - "/properties/VpcLinkId", - "/properties/NlbArn", - "/properties/NlbName", - "/properties/ProxyUrl", - "/properties/StageName" - ], - "required": [ - "EnvironmentIdentifier", - "VpcId", - "Name", - "ProxyType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-refactor-spaces", - "taggable": true, - "typeName": "AWS::RefactorSpaces::Application", - "writeOnlyProperties": [ - "/properties/ApiGatewayProxy" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiGatewayProxy", + "/properties/EnvironmentIdentifier", + "/properties/Name", + "/properties/ProxyType", + "/properties/VpcId" + ], + "definitions": { + "ApiGatewayEndpointType": { + "enum": [ + "REGIONAL", + "PRIVATE" + ], + "type": "string" + }, + "ApiGatewayProxyInput": { + "additionalProperties": false, + "properties": { + "EndpointType": { + "$ref": "#/definitions/ApiGatewayEndpointType" + }, + "StageName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[-a-zA-Z0-9_]*$", + "type": "string" + } + }, + "type": "object" + }, + "ProxyType": { + "enum": [ + "API_GATEWAY" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A label for tagging Environment resource", + "properties": { + "Key": { + "description": "A string used to identify this tag", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:).+", + "type": "string" + }, + "Value": { + "description": "A string containing the value for the tag", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::RefactorSpaces::Application Resource Type", + "handlers": { + "create": { + "permissions": [ + "refactor-spaces:GetApplication", + "refactor-spaces:CreateApplication", + "refactor-spaces:TagResource", + "ec2:CreateTags", + "ec2:CreateVpcEndpointServiceConfiguration", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeVpcEndpointServiceConfigurations", + "ec2:DescribeAccountAttributes", + "ec2:DescribeInternetGateways", + "ec2:ModifyVpcEndpointServicePermissions", + "apigateway:DELETE", + "apigateway:GET", + "apigateway:PATCH", + "apigateway:POST", + "apigateway:PUT", + "apigateway:UpdateRestApiPolicy", + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeTags", + "elasticloadbalancing:AddTags", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "refactor-spaces:GetApplication", + "refactor-spaces:DeleteApplication", + "refactor-spaces:UntagResource", + "ec2:DescribeVpcEndpointServiceConfigurations", + "ec2:DeleteRoute", + "ec2:DeleteSecurityGroup", + "ec2:DeleteTransitGateway", + "ec2:DeleteTransitGatewayVpcAttachment", + "ec2:DeleteVpcEndpointServiceConfigurations", + "ec2:DeleteTags", + "ec2:RevokeSecurityGroupIngress", + "elasticloadbalancing:DeleteLoadBalancer", + "apigateway:DELETE", + "apigateway:GET", + "apigateway:PUT", + "apigateway:UpdateRestApiPolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "EnvironmentIdentifier": { + "$ref": "resource-schema.json#/properties/EnvironmentIdentifier" + } + }, + "required": [ + "EnvironmentIdentifier" + ] + }, + "permissions": [ + "refactor-spaces:ListApplications", + "refactor-spaces:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "refactor-spaces:GetApplication", + "refactor-spaces:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/EnvironmentIdentifier", + "/properties/ApplicationIdentifier" + ], + "properties": { + "ApiGatewayId": { + "maxLength": 10, + "minLength": 10, + "pattern": "^[a-z0-9]{10}$", + "type": "string" + }, + "ApiGatewayProxy": { + "$ref": "#/definitions/ApiGatewayProxyInput" + }, + "ApplicationIdentifier": { + "maxLength": 14, + "minLength": 14, + "pattern": "^app-([0-9A-Za-z]{10}$)", + "type": "string" + }, + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:(aws[a-zA-Z-]*)?:refactor-spaces:[a-zA-Z0-9\\-]+:\\w{12}:[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "EnvironmentIdentifier": { + "maxLength": 14, + "minLength": 14, + "pattern": "^env-([0-9A-Za-z]{10}$)", + "type": "string" + }, + "Name": { + "maxLength": 63, + "minLength": 3, + "pattern": "^(?!app-)[a-zA-Z0-9]+[a-zA-Z0-9-_ ]+$", + "type": "string" + }, + "NlbArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:(aws[a-zA-Z-]*)?:elasticloadbalancing:[a-zA-Z0-9\\\\-]+:\\\\w{12}:[a-zA-Z_0-9+=,.@\\\\-_\\/]+$", + "type": "string" + }, + "NlbName": { + "maxLength": 32, + "minLength": 1, + "pattern": "^(?!internal-)[a-zA-Z0-9]+[a-zA-Z0-9-_ ]+.*[^-]$", + "type": "string" + }, + "ProxyType": { + "$ref": "#/definitions/ProxyType" + }, + "ProxyUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^http://[-a-zA-Z0-9+\\x38@#/%?=~_|!:,.;]*[-a-zA-Z0-9+\\x38@#/%=~_|]$", + "type": "string" + }, + "StageName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[-a-zA-Z0-9_]*$", + "type": "string" + }, + "Tags": { + "description": "Metadata that you can assign to help organize the frameworks that you create. Each tag is a key-value pair.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "VpcId": { + "maxLength": 21, + "minLength": 12, + "pattern": "^vpc-[-a-f0-9]{8}([-a-f0-9]{9})?$", + "type": "string" + }, + "VpcLinkId": { + "maxLength": 10, + "minLength": 10, + "pattern": "^[a-z0-9]{10}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ApplicationIdentifier", + "/properties/Arn", + "/properties/ApiGatewayId", + "/properties/VpcLinkId", + "/properties/NlbArn", + "/properties/NlbName", + "/properties/ProxyUrl", + "/properties/StageName" + ], + "required": [ + "EnvironmentIdentifier", + "VpcId", + "Name", + "ProxyType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-refactor-spaces", + "taggable": true, + "typeName": "AWS::RefactorSpaces::Application", + "writeOnlyProperties": [ + "/properties/ApiGatewayProxy" + ] +} diff --git a/src/schema/aws-refactorspaces-environment.json b/src/schema/aws-refactorspaces-environment.json index 47e76185..f966c1d4 100644 --- a/src/schema/aws-refactorspaces-environment.json +++ b/src/schema/aws-refactorspaces-environment.json @@ -1,177 +1,177 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Description", - "/properties/Name", - "/properties/NetworkFabricType" - ], - "definitions": { - "NetworkFabricType": { - "enum": [ - "TRANSIT_GATEWAY", - "NONE" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A label for tagging Environment resource", - "properties": { - "Key": { - "description": "A string used to identify this tag", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:).+", - "type": "string" - }, - "Value": { - "description": "A string containing the value for the tag", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::RefactorSpaces::Environment Resource Type", - "handlers": { - "create": { - "permissions": [ - "refactor-spaces:CreateEnvironment", - "refactor-spaces:GetEnvironment", - "refactor-spaces:TagResource", - "ec2:CreateTransitGateway", - "ec2:AuthorizeSecurityGroupIngress", - "ec2:CreateSecurityGroup", - "ec2:CreateTags", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeRouteTables", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeTags", - "ec2:DescribeTransitGateways", - "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:DescribeVpcEndpointServiceConfigurations", - "ec2:ModifyVpcEndpointServicePermissions", - "ec2:RevokeSecurityGroupIngress", - "ram:AssociateResourceShare", - "ram:CreateResourceShare", - "ram:GetResourceShareAssociations", - "ram:GetResourceShares", - "ram:TagResource", - "ram:GetResourceShareInvitations", - "ram:AcceptResourceShareInvitation", - "ram:DisassociateResourceShare", - "tag:GetResources", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "refactor-spaces:GetEnvironment", - "refactor-spaces:DeleteEnvironment", - "refactor-spaces:UntagResource", - "ec2:DescribeTransitGateways", - "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:DeleteTransitGateway", - "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:DeleteTags", - "ram:GetResourceShareAssociations", - "ram:DeleteResourceShare" - ] - }, - "list": { - "permissions": [ - "refactor-spaces:ListEnvironments", - "refactor-spaces:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "refactor-spaces:GetEnvironment", - "refactor-spaces:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "refactor-spaces:GetEnvironment", - "refactor-spaces:TagResource", - "refactor-spaces:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/EnvironmentIdentifier" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:(aws[a-zA-Z-]*)?:refactor-spaces:[a-zA-Z0-9\\-]+:\\w{12}:[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "Description": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-_\\s\\.\\!\\*\\#\\@\\']+$", - "type": "string" - }, - "EnvironmentIdentifier": { - "maxLength": 14, - "minLength": 14, - "pattern": "^env-([0-9A-Za-z]{10}$)", - "type": "string" - }, - "Name": { - "maxLength": 63, - "minLength": 3, - "pattern": "^(?!env-)[a-zA-Z0-9]+[a-zA-Z0-9-_ ]+$", - "type": "string" - }, - "NetworkFabricType": { - "$ref": "#/definitions/NetworkFabricType" - }, - "Tags": { - "description": "Metadata that you can assign to help organize the frameworks that you create. Each tag is a key-value pair.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "TransitGatewayId": { - "maxLength": 21, - "minLength": 21, - "pattern": "^tgw-[-a-f0-9]{17}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/EnvironmentIdentifier", - "/properties/Arn", - "/properties/TransitGatewayId" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "refactor-spaces:TagResource", - "refactor-spaces:ListTagsForResource", - "refactor-spaces:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RefactorSpaces::Environment", - "writeOnlyProperties": [ - "/properties/Description", - "/properties/Name", - "/properties/NetworkFabricType" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description", + "/properties/Name", + "/properties/NetworkFabricType" + ], + "definitions": { + "NetworkFabricType": { + "enum": [ + "TRANSIT_GATEWAY", + "NONE" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A label for tagging Environment resource", + "properties": { + "Key": { + "description": "A string used to identify this tag", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:).+", + "type": "string" + }, + "Value": { + "description": "A string containing the value for the tag", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::RefactorSpaces::Environment Resource Type", + "handlers": { + "create": { + "permissions": [ + "refactor-spaces:CreateEnvironment", + "refactor-spaces:GetEnvironment", + "refactor-spaces:TagResource", + "ec2:CreateTransitGateway", + "ec2:AuthorizeSecurityGroupIngress", + "ec2:CreateSecurityGroup", + "ec2:CreateTags", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeRouteTables", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeTags", + "ec2:DescribeTransitGateways", + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DescribeVpcEndpointServiceConfigurations", + "ec2:ModifyVpcEndpointServicePermissions", + "ec2:RevokeSecurityGroupIngress", + "ram:AssociateResourceShare", + "ram:CreateResourceShare", + "ram:GetResourceShareAssociations", + "ram:GetResourceShares", + "ram:TagResource", + "ram:GetResourceShareInvitations", + "ram:AcceptResourceShareInvitation", + "ram:DisassociateResourceShare", + "tag:GetResources", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "refactor-spaces:GetEnvironment", + "refactor-spaces:DeleteEnvironment", + "refactor-spaces:UntagResource", + "ec2:DescribeTransitGateways", + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DeleteTransitGateway", + "ec2:DeleteTransitGatewayVpcAttachment", + "ec2:DeleteTags", + "ram:GetResourceShareAssociations", + "ram:DeleteResourceShare" + ] + }, + "list": { + "permissions": [ + "refactor-spaces:ListEnvironments", + "refactor-spaces:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "refactor-spaces:GetEnvironment", + "refactor-spaces:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "refactor-spaces:GetEnvironment", + "refactor-spaces:TagResource", + "refactor-spaces:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/EnvironmentIdentifier" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:(aws[a-zA-Z-]*)?:refactor-spaces:[a-zA-Z0-9\\-]+:\\w{12}:[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "Description": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-_\\s\\.\\!\\*\\#\\@\\']+$", + "type": "string" + }, + "EnvironmentIdentifier": { + "maxLength": 14, + "minLength": 14, + "pattern": "^env-([0-9A-Za-z]{10}$)", + "type": "string" + }, + "Name": { + "maxLength": 63, + "minLength": 3, + "pattern": "^(?!env-)[a-zA-Z0-9]+[a-zA-Z0-9-_ ]+$", + "type": "string" + }, + "NetworkFabricType": { + "$ref": "#/definitions/NetworkFabricType" + }, + "Tags": { + "description": "Metadata that you can assign to help organize the frameworks that you create. Each tag is a key-value pair.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TransitGatewayId": { + "maxLength": 21, + "minLength": 21, + "pattern": "^tgw-[-a-f0-9]{17}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/EnvironmentIdentifier", + "/properties/Arn", + "/properties/TransitGatewayId" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "refactor-spaces:TagResource", + "refactor-spaces:ListTagsForResource", + "refactor-spaces:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RefactorSpaces::Environment", + "writeOnlyProperties": [ + "/properties/Description", + "/properties/Name", + "/properties/NetworkFabricType" + ] +} diff --git a/src/schema/aws-refactorspaces-route.json b/src/schema/aws-refactorspaces-route.json index 90f77d96..199c935d 100644 --- a/src/schema/aws-refactorspaces-route.json +++ b/src/schema/aws-refactorspaces-route.json @@ -1,296 +1,296 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationIdentifier", - "/properties/EnvironmentIdentifier", - "/properties/RouteType", - "/properties/ServiceIdentifier", - "/properties/UriPathRoute/SourcePath", - "/properties/UriPathRoute/Methods", - "/properties/UriPathRoute/IncludeChildPaths", - "/properties/UriPathRoute/AppendSourcePath" - ], - "definitions": { - "DefaultRouteInput": { - "additionalProperties": false, - "properties": { - "ActivationState": { - "$ref": "#/definitions/RouteActivationState" - } - }, - "required": [ - "ActivationState" - ], - "type": "object" - }, - "Method": { - "enum": [ - "DELETE", - "GET", - "HEAD", - "OPTIONS", - "PATCH", - "POST", - "PUT" - ], - "type": "string" - }, - "RouteActivationState": { - "enum": [ - "INACTIVE", - "ACTIVE" - ], - "type": "string" - }, - "RouteType": { - "enum": [ - "DEFAULT", - "URI_PATH" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A label for tagging Environment resource", - "properties": { - "Key": { - "description": "A string used to identify this tag", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:).+", - "type": "string" - }, - "Value": { - "description": "A string containing the value for the tag", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UriPathRouteInput": { - "additionalProperties": false, - "properties": { - "ActivationState": { - "$ref": "#/definitions/RouteActivationState" - }, - "AppendSourcePath": { - "type": "boolean" - }, - "IncludeChildPaths": { - "type": "boolean" - }, - "Methods": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Method" - }, - "type": "array" - }, - "SourcePath": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^(/([a-zA-Z0-9._:-]+|\\{[a-zA-Z0-9._:-]+\\}))+$", - "type": "string" - } - }, - "required": [ - "ActivationState" - ], - "type": "object" - } - }, - "description": "Definition of AWS::RefactorSpaces::Route Resource Type", - "handlers": { - "create": { - "permissions": [ - "refactor-spaces:CreateRoute", - "refactor-spaces:GetRoute", - "refactor-spaces:TagResource", - "iam:CreateServiceLinkedRole", - "apigateway:GET", - "apigateway:PATCH", - "apigateway:POST", - "apigateway:PUT", - "apigateway:DELETE", - "apigateway:UpdateRestApiPolicy", - "lambda:GetFunctionConfiguration", - "lambda:AddPermission", - "elasticloadbalancing:DescribeListeners", - "elasticloadbalancing:DescribeTargetGroups", - "elasticloadbalancing:CreateListener", - "elasticloadbalancing:CreateTargetGroup", - "elasticloadbalancing:DescribeTags", - "elasticloadbalancing:AddTags", - "elasticloadbalancing:RegisterTargets", - "elasticloadbalancing:DescribeTargetHealth", - "ec2:DescribeSubnets", - "tag:GetResources" - ] - }, - "delete": { - "permissions": [ - "refactor-spaces:DeleteRoute", - "refactor-spaces:GetRoute", - "refactor-spaces:UntagResource", - "apigateway:GET", - "apigateway:PATCH", - "apigateway:POST", - "apigateway:PUT", - "apigateway:DELETE", - "apigateway:UpdateRestApiPolicy", - "lambda:GetFunctionConfiguration", - "lambda:AddPermission", - "elasticloadbalancing:DescribeListeners", - "elasticloadbalancing:DescribeTargetGroups", - "elasticloadbalancing:CreateListener", - "elasticloadbalancing:CreateTargetGroup", - "elasticloadbalancing:DeleteListener", - "elasticloadbalancing:DeleteTargetGroup", - "elasticloadbalancing:DescribeTags", - "elasticloadbalancing:AddTags", - "elasticloadbalancing:RegisterTargets", - "elasticloadbalancing:DescribeTargetHealth", - "ec2:DescribeSubnets", - "tag:GetResources" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApplicationIdentifier": { - "$ref": "resource-schema.json#/properties/ApplicationIdentifier" - }, - "EnvironmentIdentifier": { - "$ref": "resource-schema.json#/properties/EnvironmentIdentifier" - } - }, - "required": [ - "EnvironmentIdentifier", - "ApplicationIdentifier" - ] - }, - "permissions": [ - "refactor-spaces:ListRoutes", - "refactor-spaces:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "refactor-spaces:GetRoute", - "refactor-spaces:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "refactor-spaces:UpdateRoute", - "refactor-spaces:GetRoute", - "refactor-spaces:TagResource", - "iam:CreateServiceLinkedRole", - "apigateway:GET", - "apigateway:PATCH", - "apigateway:POST", - "apigateway:PUT", - "apigateway:DELETE", - "apigateway:UpdateRestApiPolicy", - "lambda:GetFunctionConfiguration", - "lambda:AddPermission", - "elasticloadbalancing:DescribeListeners", - "elasticloadbalancing:DescribeTargetGroups", - "elasticloadbalancing:CreateListener", - "elasticloadbalancing:CreateTargetGroup", - "elasticloadbalancing:DeleteListener", - "elasticloadbalancing:DeleteTargetGroup", - "elasticloadbalancing:DescribeTags", - "elasticloadbalancing:AddTags", - "elasticloadbalancing:RegisterTargets", - "elasticloadbalancing:DescribeTargetHealth", - "ec2:DescribeSubnets", - "ec2:DescribeSubnets", - "tag:GetResources" - ] - } - }, - "primaryIdentifier": [ - "/properties/EnvironmentIdentifier", - "/properties/ApplicationIdentifier", - "/properties/RouteIdentifier" - ], - "properties": { - "ApplicationIdentifier": { - "maxLength": 14, - "minLength": 14, - "pattern": "^app-([0-9A-Za-z]{10}$)", - "type": "string" - }, - "Arn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:(aws[a-zA-Z-]*)?:refactor-spaces:[a-zA-Z0-9\\-]+:\\w{12}:[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "DefaultRoute": { - "$ref": "#/definitions/DefaultRouteInput" - }, - "EnvironmentIdentifier": { - "maxLength": 14, - "minLength": 14, - "pattern": "^env-([0-9A-Za-z]{10}$)", - "type": "string" - }, - "PathResourceToId": { - "type": "string" - }, - "RouteIdentifier": { - "maxLength": 14, - "minLength": 14, - "pattern": "^rte-([0-9A-Za-z]{10}$)", - "type": "string" - }, - "RouteType": { - "$ref": "#/definitions/RouteType" - }, - "ServiceIdentifier": { - "maxLength": 14, - "minLength": 14, - "pattern": "^svc-([0-9A-Za-z]{10}$)", - "type": "string" - }, - "Tags": { - "description": "Metadata that you can assign to help organize the frameworks that you create. Each tag is a key-value pair.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "UriPathRoute": { - "$ref": "#/definitions/UriPathRouteInput" - } - }, - "readOnlyProperties": [ - "/properties/RouteIdentifier", - "/properties/PathResourceToId", - "/properties/Arn" - ], - "required": [ - "EnvironmentIdentifier", - "ApplicationIdentifier", - "ServiceIdentifier", - "RouteType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-refactor-spaces", - "taggable": true, - "typeName": "AWS::RefactorSpaces::Route", - "writeOnlyProperties": [ - "/properties/RouteType", - "/properties/ServiceIdentifier", - "/properties/DefaultRoute", - "/properties/UriPathRoute" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationIdentifier", + "/properties/EnvironmentIdentifier", + "/properties/RouteType", + "/properties/ServiceIdentifier", + "/properties/UriPathRoute/SourcePath", + "/properties/UriPathRoute/Methods", + "/properties/UriPathRoute/IncludeChildPaths", + "/properties/UriPathRoute/AppendSourcePath" + ], + "definitions": { + "DefaultRouteInput": { + "additionalProperties": false, + "properties": { + "ActivationState": { + "$ref": "#/definitions/RouteActivationState" + } + }, + "required": [ + "ActivationState" + ], + "type": "object" + }, + "Method": { + "enum": [ + "DELETE", + "GET", + "HEAD", + "OPTIONS", + "PATCH", + "POST", + "PUT" + ], + "type": "string" + }, + "RouteActivationState": { + "enum": [ + "INACTIVE", + "ACTIVE" + ], + "type": "string" + }, + "RouteType": { + "enum": [ + "DEFAULT", + "URI_PATH" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A label for tagging Environment resource", + "properties": { + "Key": { + "description": "A string used to identify this tag", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:).+", + "type": "string" + }, + "Value": { + "description": "A string containing the value for the tag", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UriPathRouteInput": { + "additionalProperties": false, + "properties": { + "ActivationState": { + "$ref": "#/definitions/RouteActivationState" + }, + "AppendSourcePath": { + "type": "boolean" + }, + "IncludeChildPaths": { + "type": "boolean" + }, + "Methods": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Method" + }, + "type": "array" + }, + "SourcePath": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^(/([a-zA-Z0-9._:-]+|\\{[a-zA-Z0-9._:-]+\\}))+$", + "type": "string" + } + }, + "required": [ + "ActivationState" + ], + "type": "object" + } + }, + "description": "Definition of AWS::RefactorSpaces::Route Resource Type", + "handlers": { + "create": { + "permissions": [ + "refactor-spaces:CreateRoute", + "refactor-spaces:GetRoute", + "refactor-spaces:TagResource", + "iam:CreateServiceLinkedRole", + "apigateway:GET", + "apigateway:PATCH", + "apigateway:POST", + "apigateway:PUT", + "apigateway:DELETE", + "apigateway:UpdateRestApiPolicy", + "lambda:GetFunctionConfiguration", + "lambda:AddPermission", + "elasticloadbalancing:DescribeListeners", + "elasticloadbalancing:DescribeTargetGroups", + "elasticloadbalancing:CreateListener", + "elasticloadbalancing:CreateTargetGroup", + "elasticloadbalancing:DescribeTags", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RegisterTargets", + "elasticloadbalancing:DescribeTargetHealth", + "ec2:DescribeSubnets", + "tag:GetResources" + ] + }, + "delete": { + "permissions": [ + "refactor-spaces:DeleteRoute", + "refactor-spaces:GetRoute", + "refactor-spaces:UntagResource", + "apigateway:GET", + "apigateway:PATCH", + "apigateway:POST", + "apigateway:PUT", + "apigateway:DELETE", + "apigateway:UpdateRestApiPolicy", + "lambda:GetFunctionConfiguration", + "lambda:AddPermission", + "elasticloadbalancing:DescribeListeners", + "elasticloadbalancing:DescribeTargetGroups", + "elasticloadbalancing:CreateListener", + "elasticloadbalancing:CreateTargetGroup", + "elasticloadbalancing:DeleteListener", + "elasticloadbalancing:DeleteTargetGroup", + "elasticloadbalancing:DescribeTags", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RegisterTargets", + "elasticloadbalancing:DescribeTargetHealth", + "ec2:DescribeSubnets", + "tag:GetResources" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationIdentifier": { + "$ref": "resource-schema.json#/properties/ApplicationIdentifier" + }, + "EnvironmentIdentifier": { + "$ref": "resource-schema.json#/properties/EnvironmentIdentifier" + } + }, + "required": [ + "EnvironmentIdentifier", + "ApplicationIdentifier" + ] + }, + "permissions": [ + "refactor-spaces:ListRoutes", + "refactor-spaces:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "refactor-spaces:GetRoute", + "refactor-spaces:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "refactor-spaces:UpdateRoute", + "refactor-spaces:GetRoute", + "refactor-spaces:TagResource", + "iam:CreateServiceLinkedRole", + "apigateway:GET", + "apigateway:PATCH", + "apigateway:POST", + "apigateway:PUT", + "apigateway:DELETE", + "apigateway:UpdateRestApiPolicy", + "lambda:GetFunctionConfiguration", + "lambda:AddPermission", + "elasticloadbalancing:DescribeListeners", + "elasticloadbalancing:DescribeTargetGroups", + "elasticloadbalancing:CreateListener", + "elasticloadbalancing:CreateTargetGroup", + "elasticloadbalancing:DeleteListener", + "elasticloadbalancing:DeleteTargetGroup", + "elasticloadbalancing:DescribeTags", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RegisterTargets", + "elasticloadbalancing:DescribeTargetHealth", + "ec2:DescribeSubnets", + "ec2:DescribeSubnets", + "tag:GetResources" + ] + } + }, + "primaryIdentifier": [ + "/properties/EnvironmentIdentifier", + "/properties/ApplicationIdentifier", + "/properties/RouteIdentifier" + ], + "properties": { + "ApplicationIdentifier": { + "maxLength": 14, + "minLength": 14, + "pattern": "^app-([0-9A-Za-z]{10}$)", + "type": "string" + }, + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:(aws[a-zA-Z-]*)?:refactor-spaces:[a-zA-Z0-9\\-]+:\\w{12}:[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "DefaultRoute": { + "$ref": "#/definitions/DefaultRouteInput" + }, + "EnvironmentIdentifier": { + "maxLength": 14, + "minLength": 14, + "pattern": "^env-([0-9A-Za-z]{10}$)", + "type": "string" + }, + "PathResourceToId": { + "type": "string" + }, + "RouteIdentifier": { + "maxLength": 14, + "minLength": 14, + "pattern": "^rte-([0-9A-Za-z]{10}$)", + "type": "string" + }, + "RouteType": { + "$ref": "#/definitions/RouteType" + }, + "ServiceIdentifier": { + "maxLength": 14, + "minLength": 14, + "pattern": "^svc-([0-9A-Za-z]{10}$)", + "type": "string" + }, + "Tags": { + "description": "Metadata that you can assign to help organize the frameworks that you create. Each tag is a key-value pair.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "UriPathRoute": { + "$ref": "#/definitions/UriPathRouteInput" + } + }, + "readOnlyProperties": [ + "/properties/RouteIdentifier", + "/properties/PathResourceToId", + "/properties/Arn" + ], + "required": [ + "EnvironmentIdentifier", + "ApplicationIdentifier", + "ServiceIdentifier", + "RouteType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-refactor-spaces", + "taggable": true, + "typeName": "AWS::RefactorSpaces::Route", + "writeOnlyProperties": [ + "/properties/RouteType", + "/properties/ServiceIdentifier", + "/properties/DefaultRoute", + "/properties/UriPathRoute" + ] +} diff --git a/src/schema/aws-refactorspaces-service.json b/src/schema/aws-refactorspaces-service.json index eacf2cad..d4d57ca5 100644 --- a/src/schema/aws-refactorspaces-service.json +++ b/src/schema/aws-refactorspaces-service.json @@ -1,232 +1,232 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Description", - "/properties/EndpointType", - "/properties/EnvironmentIdentifier", - "/properties/ApplicationIdentifier", - "/properties/LambdaEndpoint", - "/properties/Name", - "/properties/UrlEndpoint", - "/properties/VpcId" - ], - "definitions": { - "LambdaEndpointInput": { - "additionalProperties": false, - "properties": { - "Arn": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-_]+(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", - "type": "string" - } - }, - "required": [ - "Arn" - ], - "type": "object" - }, - "ServiceEndpointType": { - "enum": [ - "LAMBDA", - "URL" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A label for tagging Environment resource", - "properties": { - "Key": { - "description": "A string used to identify this tag", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:).+", - "type": "string" - }, - "Value": { - "description": "A string containing the value for the tag", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UrlEndpointInput": { - "additionalProperties": false, - "properties": { - "HealthUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https?://[-a-zA-Z0-9+\\x38@#/%?=~_|!:,.;]*[-a-zA-Z0-9+\\x38@#/%=~_|]$", - "type": "string" - }, - "Url": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https?://[-a-zA-Z0-9+\\x38@#/%?=~_|!:,.;]*[-a-zA-Z0-9+\\x38@#/%=~_|]$", - "type": "string" - } - }, - "required": [ - "Url" - ], - "type": "object" - } - }, - "description": "Definition of AWS::RefactorSpaces::Service Resource Type", - "handlers": { - "create": { - "permissions": [ - "refactor-spaces:CreateService", - "refactor-spaces:GetService", - "refactor-spaces:TagResource", - "ec2:DescribeVpcs", - "ec2:DescribeSubnets", - "ec2:DescribeRouteTables", - "ec2:CreateTags", - "ec2:CreateTransitGatewayVpcAttachment", - "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:CreateSecurityGroup", - "ec2:AuthorizeSecurityGroupIngress", - "ec2:CreateRoute", - "lambda:GetFunctionConfiguration" - ] - }, - "delete": { - "permissions": [ - "refactor-spaces:DeleteService", - "refactor-spaces:GetService", - "refactor-spaces:UntagResource", - "ram:DisassociateResourceShare", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeRouteTables", - "ec2:DescribeTransitGatewayVpcAttachments", - "ec2:DescribeSecurityGroups", - "ec2:DeleteSecurityGroup", - "ec2:DeleteRoute", - "ec2:RevokeSecurityGroupIngress", - "ec2:DeleteTransitGatewayVpcAttachment", - "ec2:DeleteTags" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApplicationIdentifier": { - "$ref": "resource-schema.json#/properties/ApplicationIdentifier" - }, - "EnvironmentIdentifier": { - "$ref": "resource-schema.json#/properties/EnvironmentIdentifier" - } - }, - "required": [ - "EnvironmentIdentifier", - "ApplicationIdentifier" - ] - }, - "permissions": [ - "refactor-spaces:ListServices", - "refactor-spaces:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "refactor-spacess:GetService", - "refactor-spaces:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/EnvironmentIdentifier", - "/properties/ApplicationIdentifier", - "/properties/ServiceIdentifier" - ], - "properties": { - "ApplicationIdentifier": { - "maxLength": 14, - "minLength": 14, - "pattern": "^app-([0-9A-Za-z]{10}$)", - "type": "string" - }, - "Arn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:(aws[a-zA-Z-]*)?:refactor-spaces:[a-zA-Z0-9\\-]+:\\w{12}:[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "Description": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-_\\s\\.\\!\\*\\#\\@\\']+$", - "type": "string" - }, - "EndpointType": { - "$ref": "#/definitions/ServiceEndpointType" - }, - "EnvironmentIdentifier": { - "maxLength": 14, - "minLength": 14, - "pattern": "^env-([0-9A-Za-z]{10}$)", - "type": "string" - }, - "LambdaEndpoint": { - "$ref": "#/definitions/LambdaEndpointInput" - }, - "Name": { - "maxLength": 63, - "minLength": 3, - "pattern": "^(?!svc-)[a-zA-Z0-9]+[a-zA-Z0-9-_ ]+$", - "type": "string" - }, - "ServiceIdentifier": { - "maxLength": 14, - "minLength": 14, - "pattern": "^svc-([0-9A-Za-z]{10}$)", - "type": "string" - }, - "Tags": { - "description": "Metadata that you can assign to help organize the frameworks that you create. Each tag is a key-value pair.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "UrlEndpoint": { - "$ref": "#/definitions/UrlEndpointInput" - }, - "VpcId": { - "maxLength": 21, - "minLength": 12, - "pattern": "^vpc-[-a-f0-9]{8}([-a-f0-9]{9})?$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ServiceIdentifier", - "/properties/Arn" - ], - "required": [ - "EnvironmentIdentifier", - "ApplicationIdentifier", - "EndpointType", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-refactor-spaces", - "taggable": true, - "typeName": "AWS::RefactorSpaces::Service", - "writeOnlyProperties": [ - "/properties/Description", - "/properties/EndpointType", - "/properties/LambdaEndpoint", - "/properties/Name", - "/properties/UrlEndpoint", - "/properties/VpcId" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description", + "/properties/EndpointType", + "/properties/EnvironmentIdentifier", + "/properties/ApplicationIdentifier", + "/properties/LambdaEndpoint", + "/properties/Name", + "/properties/UrlEndpoint", + "/properties/VpcId" + ], + "definitions": { + "LambdaEndpointInput": { + "additionalProperties": false, + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-_]+(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", + "type": "string" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "ServiceEndpointType": { + "enum": [ + "LAMBDA", + "URL" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A label for tagging Environment resource", + "properties": { + "Key": { + "description": "A string used to identify this tag", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:).+", + "type": "string" + }, + "Value": { + "description": "A string containing the value for the tag", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UrlEndpointInput": { + "additionalProperties": false, + "properties": { + "HealthUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https?://[-a-zA-Z0-9+\\x38@#/%?=~_|!:,.;]*[-a-zA-Z0-9+\\x38@#/%=~_|]$", + "type": "string" + }, + "Url": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https?://[-a-zA-Z0-9+\\x38@#/%?=~_|!:,.;]*[-a-zA-Z0-9+\\x38@#/%=~_|]$", + "type": "string" + } + }, + "required": [ + "Url" + ], + "type": "object" + } + }, + "description": "Definition of AWS::RefactorSpaces::Service Resource Type", + "handlers": { + "create": { + "permissions": [ + "refactor-spaces:CreateService", + "refactor-spaces:GetService", + "refactor-spaces:TagResource", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeRouteTables", + "ec2:CreateTags", + "ec2:CreateTransitGatewayVpcAttachment", + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:CreateSecurityGroup", + "ec2:AuthorizeSecurityGroupIngress", + "ec2:CreateRoute", + "lambda:GetFunctionConfiguration" + ] + }, + "delete": { + "permissions": [ + "refactor-spaces:DeleteService", + "refactor-spaces:GetService", + "refactor-spaces:UntagResource", + "ram:DisassociateResourceShare", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeRouteTables", + "ec2:DescribeTransitGatewayVpcAttachments", + "ec2:DescribeSecurityGroups", + "ec2:DeleteSecurityGroup", + "ec2:DeleteRoute", + "ec2:RevokeSecurityGroupIngress", + "ec2:DeleteTransitGatewayVpcAttachment", + "ec2:DeleteTags" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationIdentifier": { + "$ref": "resource-schema.json#/properties/ApplicationIdentifier" + }, + "EnvironmentIdentifier": { + "$ref": "resource-schema.json#/properties/EnvironmentIdentifier" + } + }, + "required": [ + "EnvironmentIdentifier", + "ApplicationIdentifier" + ] + }, + "permissions": [ + "refactor-spaces:ListServices", + "refactor-spaces:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "refactor-spaces:GetService", + "refactor-spaces:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/EnvironmentIdentifier", + "/properties/ApplicationIdentifier", + "/properties/ServiceIdentifier" + ], + "properties": { + "ApplicationIdentifier": { + "maxLength": 14, + "minLength": 14, + "pattern": "^app-([0-9A-Za-z]{10}$)", + "type": "string" + }, + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:(aws[a-zA-Z-]*)?:refactor-spaces:[a-zA-Z0-9\\-]+:\\w{12}:[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "Description": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-_\\s\\.\\!\\*\\#\\@\\']+$", + "type": "string" + }, + "EndpointType": { + "$ref": "#/definitions/ServiceEndpointType" + }, + "EnvironmentIdentifier": { + "maxLength": 14, + "minLength": 14, + "pattern": "^env-([0-9A-Za-z]{10}$)", + "type": "string" + }, + "LambdaEndpoint": { + "$ref": "#/definitions/LambdaEndpointInput" + }, + "Name": { + "maxLength": 63, + "minLength": 3, + "pattern": "^(?!svc-)[a-zA-Z0-9]+[a-zA-Z0-9-_ ]+$", + "type": "string" + }, + "ServiceIdentifier": { + "maxLength": 14, + "minLength": 14, + "pattern": "^svc-([0-9A-Za-z]{10}$)", + "type": "string" + }, + "Tags": { + "description": "Metadata that you can assign to help organize the frameworks that you create. Each tag is a key-value pair.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "UrlEndpoint": { + "$ref": "#/definitions/UrlEndpointInput" + }, + "VpcId": { + "maxLength": 21, + "minLength": 12, + "pattern": "^vpc-[-a-f0-9]{8}([-a-f0-9]{9})?$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ServiceIdentifier", + "/properties/Arn" + ], + "required": [ + "EnvironmentIdentifier", + "ApplicationIdentifier", + "EndpointType", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-refactor-spaces", + "taggable": true, + "typeName": "AWS::RefactorSpaces::Service", + "writeOnlyProperties": [ + "/properties/Description", + "/properties/EndpointType", + "/properties/LambdaEndpoint", + "/properties/Name", + "/properties/UrlEndpoint", + "/properties/VpcId" + ] +} diff --git a/src/schema/aws-rekognition-collection.json b/src/schema/aws-rekognition-collection.json index bf388455..4d823b96 100644 --- a/src/schema/aws-rekognition-collection.json +++ b/src/schema/aws-rekognition-collection.json @@ -1,120 +1,120 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CollectionId" - ], - "definitions": { - "Arn": { - "$comment": "Use the `definitions` block to provide shared resource property schemas", - "format": "(^arn:[a-z\\d-]+:rekognition:[a-z\\d-]+:\\d{12}:collection\\/([a-zA-Z0-9_.\\-]+){1,255})", - "maxLength": 2048, - "type": "string" - }, - "CollectionId": { - "description": "The name of the collection", - "maxLength": 255, - "pattern": "\\A[a-zA-Z0-9_\\.\\-]+$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "pattern": "\\A(?!aws:)[a-zA-Z0-9+\\-=\\._\\:\\/@]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "pattern": "\\A[a-zA-Z0-9+\\-=\\._\\:\\/@]+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::Rekognition::Collection type creates an Amazon Rekognition Collection. A collection is a logical grouping of information about detected faces which can later be referenced for searches on the group", - "handlers": { - "create": { - "permissions": [ - "rekognition:CreateCollection", - "rekognition:DescribeCollection", - "rekognition:ListTagsForResource", - "rekognition:TagResource" - ] - }, - "delete": { - "permissions": [ - "rekognition:DeleteCollection" - ] - }, - "list": { - "permissions": [ - "rekognition:ListCollections" - ] - }, - "read": { - "permissions": [ - "rekognition:DescribeCollection", - "rekognition:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "rekognition:TagResource", - "rekognition:UntagResource", - "rekognition:DescribeCollection", - "rekognition:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/CollectionId" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "CollectionId": { - "$ref": "#/definitions/CollectionId" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "CollectionId" - ], - "sourceUrl": "https://docs.aws.amazon.com/rekognition/latest/dg/collections.html", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "rekognition:ListTagsForResource", - "rekognition:TagResource", - "rekognition:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Rekognition::Collection" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CollectionId" + ], + "definitions": { + "Arn": { + "$comment": "Use the `definitions` block to provide shared resource property schemas", + "format": "(^arn:[a-z\\d-]+:rekognition:[a-z\\d-]+:\\d{12}:collection\\/([a-zA-Z0-9_.\\-]+){1,255})", + "maxLength": 2048, + "type": "string" + }, + "CollectionId": { + "description": "The name of the collection", + "maxLength": 255, + "pattern": "\\A[a-zA-Z0-9_\\.\\-]+$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "pattern": "\\A(?!aws:)[a-zA-Z0-9+\\-=\\._\\:\\/@]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "pattern": "\\A[a-zA-Z0-9+\\-=\\._\\:\\/@]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::Rekognition::Collection type creates an Amazon Rekognition Collection. A collection is a logical grouping of information about detected faces which can later be referenced for searches on the group", + "handlers": { + "create": { + "permissions": [ + "rekognition:CreateCollection", + "rekognition:DescribeCollection", + "rekognition:ListTagsForResource", + "rekognition:TagResource" + ] + }, + "delete": { + "permissions": [ + "rekognition:DeleteCollection" + ] + }, + "list": { + "permissions": [ + "rekognition:ListCollections" + ] + }, + "read": { + "permissions": [ + "rekognition:DescribeCollection", + "rekognition:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "rekognition:TagResource", + "rekognition:UntagResource", + "rekognition:DescribeCollection", + "rekognition:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/CollectionId" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CollectionId": { + "$ref": "#/definitions/CollectionId" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "CollectionId" + ], + "sourceUrl": "https://docs.aws.amazon.com/rekognition/latest/dg/collections.html", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rekognition:ListTagsForResource", + "rekognition:TagResource", + "rekognition:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Rekognition::Collection" +} diff --git a/src/schema/aws-rekognition-project.json b/src/schema/aws-rekognition-project.json index 21978445..a8ab1e6d 100644 --- a/src/schema/aws-rekognition-project.json +++ b/src/schema/aws-rekognition-project.json @@ -1,71 +1,71 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProjectName" - ], - "definitions": { - "Arn": { - "maxLength": 2048, - "pattern": "(^arn:[a-z\\d-]+:rekognition:[a-z\\d-]+:\\d{12}:project/[a-zA-Z0-9_.\\-]{1,255}/[0-9]+$)", - "type": "string" - }, - "ProjectName": { - "description": "The name of the project", - "maxLength": 255, - "minLength": 1, - "pattern": "[a-zA-Z0-9][a-zA-Z0-9_\\-]*", - "type": "string" - } - }, - "description": "The AWS::Rekognition::Project type creates an Amazon Rekognition CustomLabels Project. A project is a grouping of the resources needed to create and manage Dataset and ProjectVersions.", - "handlers": { - "create": { - "permissions": [ - "rekognition:CreateProject" - ], - "timeoutInMinutes": 15 - }, - "delete": { - "permissions": [ - "rekognition:DescribeProjects", - "rekognition:DeleteProject" - ], - "timeoutInMinutes": 15 - }, - "list": { - "permissions": [ - "rekognition:DescribeProjects" - ], - "timeoutInMinutes": 15 - }, - "read": { - "permissions": [ - "rekognition:DescribeProjects" - ], - "timeoutInMinutes": 15 - }, - "update": { - "permissions": [], - "timeoutInMinutes": 15 - } - }, - "primaryIdentifier": [ - "/properties/ProjectName" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "ProjectName": { - "$ref": "#/definitions/ProjectName" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "ProjectName" - ], - "sourceUrl": "https://docs.aws.amazon.com/rekognition/latest/customlabels-dg/cp-manage-project.html", - "typeName": "AWS::Rekognition::Project" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ProjectName" + ], + "definitions": { + "Arn": { + "maxLength": 2048, + "pattern": "(^arn:[a-z\\d-]+:rekognition:[a-z\\d-]+:\\d{12}:project/[a-zA-Z0-9_.\\-]{1,255}/[0-9]+$)", + "type": "string" + }, + "ProjectName": { + "description": "The name of the project", + "maxLength": 255, + "minLength": 1, + "pattern": "[a-zA-Z0-9][a-zA-Z0-9_\\-]*", + "type": "string" + } + }, + "description": "The AWS::Rekognition::Project type creates an Amazon Rekognition CustomLabels Project. A project is a grouping of the resources needed to create and manage Dataset and ProjectVersions.", + "handlers": { + "create": { + "permissions": [ + "rekognition:CreateProject" + ], + "timeoutInMinutes": 15 + }, + "delete": { + "permissions": [ + "rekognition:DescribeProjects", + "rekognition:DeleteProject" + ], + "timeoutInMinutes": 15 + }, + "list": { + "permissions": [ + "rekognition:DescribeProjects" + ], + "timeoutInMinutes": 15 + }, + "read": { + "permissions": [ + "rekognition:DescribeProjects" + ], + "timeoutInMinutes": 15 + }, + "update": { + "permissions": [], + "timeoutInMinutes": 15 + } + }, + "primaryIdentifier": [ + "/properties/ProjectName" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "ProjectName": { + "$ref": "#/definitions/ProjectName" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "ProjectName" + ], + "sourceUrl": "https://docs.aws.amazon.com/rekognition/latest/customlabels-dg/cp-manage-project.html", + "typeName": "AWS::Rekognition::Project" +} diff --git a/src/schema/aws-rekognition-streamprocessor.json b/src/schema/aws-rekognition-streamprocessor.json index 64634ab1..107d0ab1 100644 --- a/src/schema/aws-rekognition-streamprocessor.json +++ b/src/schema/aws-rekognition-streamprocessor.json @@ -1,406 +1,406 @@ -{ - "$comment": "We explicitly specify the replacement strategy to be delete_then_create because we cannot create a new SP resource with the same name or same KVS input before deleting the old one", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/KmsKeyId", - "/properties/RoleArn", - "/properties/KinesisVideoStream", - "/properties/ConnectedHomeSettings", - "/properties/FaceSearchSettings", - "/properties/KinesisDataStream", - "/properties/S3Destination", - "/properties/NotificationChannel", - "/properties/BoundingBoxRegionsOfInterest", - "/properties/PolygonRegionsOfInterest", - "/properties/DataSharingPreference" - ], - "definitions": { - "Arn": { - "description": "The ARN of the stream processor", - "maxLength": 2048, - "type": "string" - }, - "BoundingBox": { - "additionalProperties": false, - "description": "A bounding box denoting a region of interest in the frame to be analyzed.", - "properties": { - "Height": { - "maximum": 100, - "minimum": 0, - "type": "number" - }, - "Left": { - "maximum": 100, - "minimum": 0, - "type": "number" - }, - "Top": { - "maximum": 100, - "minimum": 0, - "type": "number" - }, - "Width": { - "maximum": 100, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "Height", - "Width", - "Left", - "Top" - ], - "type": "object" - }, - "ConnectedHomeSettings": { - "additionalProperties": false, - "description": "Connected home settings to use on a streaming video. Note that either ConnectedHomeSettings or FaceSearchSettings should be set. Not both", - "properties": { - "Labels": { - "$ref": "#/definitions/Labels" - }, - "MinConfidence": { - "description": "Minimum object class match confidence score that must be met to return a result for a recognized object.", - "maximum": 100, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "Labels" - ], - "type": "object" - }, - "DataSharingPreference": { - "additionalProperties": false, - "description": "Indicates whether Rekognition is allowed to store the video stream data for model-training.", - "properties": { - "OptIn": { - "description": "Flag to enable data-sharing", - "type": "boolean" - } - }, - "required": [ - "OptIn" - ], - "type": "object" - }, - "FaceSearchSettings": { - "additionalProperties": false, - "description": "Face search settings to use on a streaming video. Note that either FaceSearchSettings or ConnectedHomeSettings should be set. Not both", - "properties": { - "CollectionId": { - "description": "The ID of a collection that contains faces that you want to search for.", - "maxLength": 255, - "pattern": "\\A[a-zA-Z0-9_\\.\\-]+$", - "type": "string" - }, - "FaceMatchThreshold": { - "description": "Minimum face match confidence score percentage that must be met to return a result for a recognized face. The default is 80. 0 is the lowest confidence. 100 is the highest confidence. Values between 0 and 100 are accepted.", - "maximum": 100, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "CollectionId" - ], - "type": "object" - }, - "KinesisDataStream": { - "additionalProperties": false, - "description": "The Amazon Kinesis Data Stream stream to which the Amazon Rekognition stream processor streams the analysis results, as part of face search feature.", - "properties": { - "Arn": { - "description": "ARN of the Kinesis Data Stream stream.", - "maxLength": 2048, - "pattern": "(^arn:([a-z\\d-]+):kinesis:([a-z\\d-]+):\\d{12}:.+$)", - "type": "string" - } - }, - "required": [ - "Arn" - ], - "type": "object" - }, - "KinesisVideoStream": { - "additionalProperties": false, - "description": "The Kinesis Video Stream that streams the source video.", - "properties": { - "Arn": { - "description": "ARN of the Kinesis Video Stream that streams the source video.", - "maxLength": 2048, - "pattern": "(^arn:([a-z\\d-]+):kinesisvideo:([a-z\\d-]+):\\d{12}:.+$)", - "type": "string" - } - }, - "required": [ - "Arn" - ], - "type": "object" - }, - "Labels": { - "description": "List of labels that need to be detected in the video stream. Current supported values are PERSON, PET, PACKAGE, ALL.", - "insertionOrder": false, - "items": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "NotificationChannel": { - "additionalProperties": false, - "description": "The ARN of the SNS notification channel where events of interests are published, as part of connected home feature.", - "properties": { - "Arn": { - "description": "ARN of the SNS topic.", - "maxLength": 2048, - "type": "string" - } - }, - "required": [ - "Arn" - ], - "type": "object" - }, - "Point": { - "additionalProperties": false, - "description": "An (X, Y) cartesian coordinate denoting a point on the frame", - "properties": { - "X": { - "description": "The X coordinate of the point.", - "type": "number" - }, - "Y": { - "description": "The Y coordinate of the point.", - "type": "number" - } - }, - "required": [ - "X", - "Y" - ], - "type": "object" - }, - "Polygon": { - "description": "A polygon showing a region of interest. Note that the ordering of the Point entries matter in defining the polygon", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Point" - }, - "minItems": 3, - "type": "array", - "uniqueItems": true - }, - "S3Destination": { - "additionalProperties": false, - "description": "The S3 location in customer's account where inference output & artifacts are stored, as part of connected home feature.", - "properties": { - "BucketName": { - "description": "Name of the S3 bucket.", - "maxLength": 63, - "type": "string" - }, - "ObjectKeyPrefix": { - "description": "The object key prefix path where the results will be stored. Default is no prefix path", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "\\A(?!aws:)[a-zA-Z0-9+\\-=\\._\\:\\/@]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "pattern": "\\A[a-zA-Z0-9+\\-=\\._\\:\\/@]+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::Rekognition::StreamProcessor type is used to create an Amazon Rekognition StreamProcessor that you can use to analyze streaming videos.\n\n", - "handlers": { - "create": { - "permissions": [ - "rekognition:CreateStreamProcessor", - "iam:PassRole", - "rekognition:DescribeStreamProcessor", - "rekognition:ListTagsForResource", - "rekognition:TagResource" - ] - }, - "delete": { - "permissions": [ - "rekognition:DeleteStreamProcessor" - ] - }, - "list": { - "permissions": [ - "rekognition:ListStreamProcessors" - ] - }, - "read": { - "permissions": [ - "rekognition:DescribeStreamProcessor", - "rekognition:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "rekognition:TagResource", - "rekognition:UntagResource", - "rekognition:ListTagsForResource", - "rekognition:DescribeStreamProcessor" - ] - } - }, - "oneOf": [ - { - "required": [ - "ConnectedHomeSettings", - "S3Destination", - "NotificationChannel" - ] - }, - { - "required": [ - "FaceSearchSettings", - "KinesisDataStream" - ] - } - ], - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "BoundingBoxRegionsOfInterest": { - "description": "The BoundingBoxRegionsOfInterest specifies an array of bounding boxes of interest in the video frames to analyze, as part of connected home feature. If an object is partially in a region of interest, Rekognition will tag it as detected if the overlap of the object with the region-of-interest is greater than 20%.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/BoundingBox" - }, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "ConnectedHomeSettings": { - "$ref": "#/definitions/ConnectedHomeSettings" - }, - "DataSharingPreference": { - "$ref": "#/definitions/DataSharingPreference" - }, - "FaceSearchSettings": { - "$ref": "#/definitions/FaceSearchSettings" - }, - "KinesisDataStream": { - "$ref": "#/definitions/KinesisDataStream" - }, - "KinesisVideoStream": { - "$ref": "#/definitions/KinesisVideoStream" - }, - "KmsKeyId": { - "description": "The KMS key that is used by Rekognition to encrypt any intermediate customer metadata and store in the customer's S3 bucket.", - "type": "string" - }, - "Name": { - "description": "Name of the stream processor. It's an identifier you assign to the stream processor. You can use it to manage the stream processor.", - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z0-9_.\\-]+", - "type": "string" - }, - "NotificationChannel": { - "$ref": "#/definitions/NotificationChannel" - }, - "PolygonRegionsOfInterest": { - "description": "The PolygonRegionsOfInterest specifies a set of polygon areas of interest in the video frames to analyze, as part of connected home feature. Each polygon is in turn, an ordered list of Point", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Polygon" - }, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "RoleArn": { - "description": "ARN of the IAM role that allows access to the stream processor, and provides Rekognition read permissions for KVS stream and write permissions to S3 bucket and SNS topic.", - "maxLength": 2048, - "pattern": "arn:aws(-[\\w]+)*:iam::[0-9]{12}:role/.*", - "type": "string" - }, - "S3Destination": { - "$ref": "#/definitions/S3Destination" - }, - "Status": { - "description": "Current status of the stream processor.", - "type": "string" - }, - "StatusMessage": { - "description": "Detailed status message about the stream processor.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Status", - "/properties/StatusMessage" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "RoleArn", - "KinesisVideoStream" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "rekognition:TagResource", - "rekognition:UntagResource", - "rekognition:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Rekognition::StreamProcessor" -} +{ + "$comment": "We explicitly specify the replacement strategy to be delete_then_create because we cannot create a new SP resource with the same name or same KVS input before deleting the old one", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/KmsKeyId", + "/properties/RoleArn", + "/properties/KinesisVideoStream", + "/properties/ConnectedHomeSettings", + "/properties/FaceSearchSettings", + "/properties/KinesisDataStream", + "/properties/S3Destination", + "/properties/NotificationChannel", + "/properties/BoundingBoxRegionsOfInterest", + "/properties/PolygonRegionsOfInterest", + "/properties/DataSharingPreference" + ], + "definitions": { + "Arn": { + "description": "The ARN of the stream processor", + "maxLength": 2048, + "type": "string" + }, + "BoundingBox": { + "additionalProperties": false, + "description": "A bounding box denoting a region of interest in the frame to be analyzed.", + "properties": { + "Height": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "Left": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "Top": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "Width": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "Height", + "Width", + "Left", + "Top" + ], + "type": "object" + }, + "ConnectedHomeSettings": { + "additionalProperties": false, + "description": "Connected home settings to use on a streaming video. Note that either ConnectedHomeSettings or FaceSearchSettings should be set. Not both", + "properties": { + "Labels": { + "$ref": "#/definitions/Labels" + }, + "MinConfidence": { + "description": "Minimum object class match confidence score that must be met to return a result for a recognized object.", + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "Labels" + ], + "type": "object" + }, + "DataSharingPreference": { + "additionalProperties": false, + "description": "Indicates whether Rekognition is allowed to store the video stream data for model-training.", + "properties": { + "OptIn": { + "description": "Flag to enable data-sharing", + "type": "boolean" + } + }, + "required": [ + "OptIn" + ], + "type": "object" + }, + "FaceSearchSettings": { + "additionalProperties": false, + "description": "Face search settings to use on a streaming video. Note that either FaceSearchSettings or ConnectedHomeSettings should be set. Not both", + "properties": { + "CollectionId": { + "description": "The ID of a collection that contains faces that you want to search for.", + "maxLength": 255, + "pattern": "\\A[a-zA-Z0-9_\\.\\-]+$", + "type": "string" + }, + "FaceMatchThreshold": { + "description": "Minimum face match confidence score percentage that must be met to return a result for a recognized face. The default is 80. 0 is the lowest confidence. 100 is the highest confidence. Values between 0 and 100 are accepted.", + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "CollectionId" + ], + "type": "object" + }, + "KinesisDataStream": { + "additionalProperties": false, + "description": "The Amazon Kinesis Data Stream stream to which the Amazon Rekognition stream processor streams the analysis results, as part of face search feature.", + "properties": { + "Arn": { + "description": "ARN of the Kinesis Data Stream stream.", + "maxLength": 2048, + "pattern": "(^arn:([a-z\\d-]+):kinesis:([a-z\\d-]+):\\d{12}:.+$)", + "type": "string" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "KinesisVideoStream": { + "additionalProperties": false, + "description": "The Kinesis Video Stream that streams the source video.", + "properties": { + "Arn": { + "description": "ARN of the Kinesis Video Stream that streams the source video.", + "maxLength": 2048, + "pattern": "(^arn:([a-z\\d-]+):kinesisvideo:([a-z\\d-]+):\\d{12}:.+$)", + "type": "string" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "Labels": { + "description": "List of labels that need to be detected in the video stream. Current supported values are PERSON, PET, PACKAGE, ALL.", + "insertionOrder": false, + "items": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "NotificationChannel": { + "additionalProperties": false, + "description": "The ARN of the SNS notification channel where events of interests are published, as part of connected home feature.", + "properties": { + "Arn": { + "description": "ARN of the SNS topic.", + "maxLength": 2048, + "type": "string" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "Point": { + "additionalProperties": false, + "description": "An (X, Y) cartesian coordinate denoting a point on the frame", + "properties": { + "X": { + "description": "The X coordinate of the point.", + "type": "number" + }, + "Y": { + "description": "The Y coordinate of the point.", + "type": "number" + } + }, + "required": [ + "X", + "Y" + ], + "type": "object" + }, + "Polygon": { + "description": "A polygon showing a region of interest. Note that the ordering of the Point entries matter in defining the polygon", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Point" + }, + "minItems": 3, + "type": "array", + "uniqueItems": true + }, + "S3Destination": { + "additionalProperties": false, + "description": "The S3 location in customer's account where inference output & artifacts are stored, as part of connected home feature.", + "properties": { + "BucketName": { + "description": "Name of the S3 bucket.", + "maxLength": 63, + "type": "string" + }, + "ObjectKeyPrefix": { + "description": "The object key prefix path where the results will be stored. Default is no prefix path", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "BucketName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "\\A(?!aws:)[a-zA-Z0-9+\\-=\\._\\:\\/@]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "pattern": "\\A[a-zA-Z0-9+\\-=\\._\\:\\/@]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::Rekognition::StreamProcessor type is used to create an Amazon Rekognition StreamProcessor that you can use to analyze streaming videos.\n\n", + "handlers": { + "create": { + "permissions": [ + "rekognition:CreateStreamProcessor", + "iam:PassRole", + "rekognition:DescribeStreamProcessor", + "rekognition:ListTagsForResource", + "rekognition:TagResource" + ] + }, + "delete": { + "permissions": [ + "rekognition:DeleteStreamProcessor" + ] + }, + "list": { + "permissions": [ + "rekognition:ListStreamProcessors" + ] + }, + "read": { + "permissions": [ + "rekognition:DescribeStreamProcessor", + "rekognition:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "rekognition:TagResource", + "rekognition:UntagResource", + "rekognition:ListTagsForResource", + "rekognition:DescribeStreamProcessor" + ] + } + }, + "oneOf": [ + { + "required": [ + "ConnectedHomeSettings", + "S3Destination", + "NotificationChannel" + ] + }, + { + "required": [ + "FaceSearchSettings", + "KinesisDataStream" + ] + } + ], + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "BoundingBoxRegionsOfInterest": { + "description": "The BoundingBoxRegionsOfInterest specifies an array of bounding boxes of interest in the video frames to analyze, as part of connected home feature. If an object is partially in a region of interest, Rekognition will tag it as detected if the overlap of the object with the region-of-interest is greater than 20%.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/BoundingBox" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "ConnectedHomeSettings": { + "$ref": "#/definitions/ConnectedHomeSettings" + }, + "DataSharingPreference": { + "$ref": "#/definitions/DataSharingPreference" + }, + "FaceSearchSettings": { + "$ref": "#/definitions/FaceSearchSettings" + }, + "KinesisDataStream": { + "$ref": "#/definitions/KinesisDataStream" + }, + "KinesisVideoStream": { + "$ref": "#/definitions/KinesisVideoStream" + }, + "KmsKeyId": { + "description": "The KMS key that is used by Rekognition to encrypt any intermediate customer metadata and store in the customer's S3 bucket.", + "type": "string" + }, + "Name": { + "description": "Name of the stream processor. It's an identifier you assign to the stream processor. You can use it to manage the stream processor.", + "maxLength": 128, + "minLength": 1, + "pattern": "[a-zA-Z0-9_.\\-]+", + "type": "string" + }, + "NotificationChannel": { + "$ref": "#/definitions/NotificationChannel" + }, + "PolygonRegionsOfInterest": { + "description": "The PolygonRegionsOfInterest specifies a set of polygon areas of interest in the video frames to analyze, as part of connected home feature. Each polygon is in turn, an ordered list of Point", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Polygon" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "RoleArn": { + "description": "ARN of the IAM role that allows access to the stream processor, and provides Rekognition read permissions for KVS stream and write permissions to S3 bucket and SNS topic.", + "maxLength": 2048, + "pattern": "arn:aws(-[\\w]+)*:iam::[0-9]{12}:role/.*", + "type": "string" + }, + "S3Destination": { + "$ref": "#/definitions/S3Destination" + }, + "Status": { + "description": "Current status of the stream processor.", + "type": "string" + }, + "StatusMessage": { + "description": "Detailed status message about the stream processor.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Status", + "/properties/StatusMessage" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "RoleArn", + "KinesisVideoStream" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "rekognition:TagResource", + "rekognition:UntagResource", + "rekognition:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Rekognition::StreamProcessor" +} diff --git a/src/schema/aws-resiliencehub-app.json b/src/schema/aws-resiliencehub-app.json index 789528cd..14c27060 100644 --- a/src/schema/aws-resiliencehub-app.json +++ b/src/schema/aws-resiliencehub-app.json @@ -1,308 +1,334 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "EventSubscription": { - "additionalProperties": false, - "description": "Indicates an event you would like to subscribe and get notification for.", - "properties": { - "EventType": { - "description": "The type of event you would like to subscribe and get notification for.", - "enum": [ - "ScheduledAssessmentFailure", - "DriftDetected" - ], - "type": "string" - }, - "Name": { - "description": "Unique name to identify an event subscription.", - "maxLength": 256, - "type": "string" - }, - "SnsTopicArn": { - "description": "Amazon Resource Name (ARN) of the Amazon Simple Notification Service topic.", - "pattern": "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]):[0-9]{12}:[A-Za-z0-9/][A-Za-z0-9:_/+.-]{0,1023}$", - "type": "string" - } - }, - "required": [ - "Name", - "EventType" - ], - "type": "object" - }, - "IamRoleArn": { - "pattern": "arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):iam::[0-9]{12}:role\\/(([\\u0021-\\u007E]+\\u002F){1,511})?[A-Za-z0-9+=,.@_/-]{1,64}$", - "type": "string" - }, - "PermissionModel": { - "additionalProperties": false, - "description": "Defines the roles and credentials that AWS Resilience Hub would use while creating the application, importing its resources, and running an assessment.", - "properties": { - "CrossAccountRoleArns": { - "description": "Defines a list of role Amazon Resource Names (ARNs) to be used in other accounts. These ARNs are used for querying purposes while importing resources and assessing your application.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/IamRoleArn" - }, - "type": "array", - "uniqueItems": false - }, - "InvokerRoleName": { - "description": "Existing AWS IAM role name in the primary AWS account that will be assumed by AWS Resilience Hub Service Principle to obtain a read-only access to your application resources while running an assessment.", - "pattern": "((\\u002F[\\u0021-\\u007E]+\\u002F){1,511})?[A-Za-z0-9+=,.@_/-]{1,64}", - "type": "string" - }, - "Type": { - "description": "Defines how AWS Resilience Hub scans your resources. It can scan for the resources by using a pre-existing role in your AWS account, or by using the credentials of the current IAM user.", - "enum": [ - "LegacyIAMUser", - "RoleBased" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "PhysicalResourceId": { - "additionalProperties": false, - "properties": { - "AwsAccountId": { - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "AwsRegion": { - "pattern": "^[a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]$", - "type": "string" - }, - "Identifier": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Type": { - "pattern": "Arn|Native", - "type": "string" - } - }, - "required": [ - "Identifier", - "Type" - ], - "type": "object" - }, - "ResourceMapping": { - "additionalProperties": false, - "description": "Resource mapping is used to map logical resources from template to physical resource", - "properties": { - "EksSourceName": { - "type": "string" - }, - "LogicalStackName": { - "type": "string" - }, - "MappingType": { - "pattern": "CfnStack|Resource|Terraform|EKS", - "type": "string" - }, - "PhysicalResourceId": { - "$ref": "#/definitions/PhysicalResourceId" - }, - "ResourceName": { - "pattern": "^[A-Za-z0-9][A-Za-z0-9_\\-]{1,59}$", - "type": "string" - }, - "TerraformSourceName": { - "type": "string" - } - }, - "required": [ - "MappingType", - "PhysicalResourceId" - ], - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "patternProperties": { - ".{1,128}": { - "$ref": "#/definitions/TagValue" - } - }, - "type": "object" - }, - "TagValue": { - "maxLength": 256, - "type": "string" - } - }, - "description": "Resource Type Definition for AWS::ResilienceHub::App.", - "handlers": { - "create": { - "permissions": [ - "cloudformation:DescribeStacks", - "cloudformation:ListStackResources", - "s3:GetBucketLocation", - "s3:GetObject", - "s3:ListAllMyBuckets", - "autoscaling:DescribeAutoScalingGroups", - "apigateway:GET", - "ec2:Describe*", - "ecs:DescribeServices", - "eks:DescribeCluster", - "elasticfilesystem:DescribeFileSystems", - "elasticloadbalancing:DescribeLoadBalancers", - "lambda:GetFunction*", - "rds:Describe*", - "dynamodb:Describe*", - "sqs:GetQueueAttributes", - "sns:GetTopicAttributes", - "route53:List*", - "iam:PassRole", - "resiliencehub:*" - ] - }, - "delete": { - "permissions": [ - "resiliencehub:DeleteApp", - "resiliencehub:UntagResource", - "resiliencehub:ListApps" - ] - }, - "list": { - "permissions": [ - "resiliencehub:ListApps" - ] - }, - "read": { - "permissions": [ - "resiliencehub:DescribeApp", - "resiliencehub:DescribeAppVersionTemplate", - "resiliencehub:ListAppVersionResourceMappings", - "resiliencehub:ListTagsForResource", - "resiliencehub:ListAppVersions" - ] - }, - "update": { - "permissions": [ - "cloudformation:DescribeStacks", - "cloudformation:ListStackResources", - "s3:GetBucketLocation", - "s3:GetObject", - "s3:ListAllMyBuckets", - "autoscaling:DescribeAutoScalingGroups", - "apigateway:GET", - "ec2:Describe*", - "ecs:DescribeServices", - "eks:DescribeCluster", - "elasticfilesystem:DescribeFileSystems", - "elasticloadbalancing:DescribeLoadBalancers", - "lambda:GetFunction*", - "rds:Describe*", - "dynamodb:Describe*", - "sqs:GetQueueAttributes", - "sns:GetTopicAttributes", - "route53:List*", - "iam:PassRole", - "resiliencehub:*" - ] - } - }, - "primaryIdentifier": [ - "/properties/AppArn" - ], - "properties": { - "AppArn": { - "description": "Amazon Resource Name (ARN) of the App.", - "pattern": "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]):[0-9]{12}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "AppAssessmentSchedule": { - "description": "Assessment execution schedule.", - "enum": [ - "Disabled", - "Daily" - ], - "type": "string" - }, - "AppTemplateBody": { - "description": "A string containing full ResilienceHub app template body.", - "maxLength": 409600, - "minLength": 0, - "pattern": "^[\\w\\s:,-\\.'\\/{}\\[\\]:\"]+$", - "type": "string" - }, - "Description": { - "description": "App description.", - "maxLength": 500, - "minLength": 0, - "type": "string" - }, - "DriftStatus": { - "description": "Indicates if compliance drifts (deviations) were detected while running an assessment for your application.", - "enum": [ - "NotChecked", - "NotDetected", - "Detected" - ], - "type": "string" - }, - "EventSubscriptions": { - "description": "The list of events you would like to subscribe and get notification for.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EventSubscription" - }, - "type": "array", - "uniqueItems": false - }, - "Name": { - "description": "Name of the app.", - "pattern": "^[A-Za-z0-9][A-Za-z0-9_\\-]{1,59}$", - "type": "string" - }, - "PermissionModel": { - "$ref": "#/definitions/PermissionModel" - }, - "ResiliencyPolicyArn": { - "description": "Amazon Resource Name (ARN) of the Resiliency Policy.", - "pattern": "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]):[0-9]{12}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "ResourceMappings": { - "description": "An array of ResourceMapping objects.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ResourceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "$ref": "#/definitions/TagMap" - } - }, - "readOnlyProperties": [ - "/properties/AppArn", - "/properties/DriftStatus" - ], - "required": [ - "Name", - "AppTemplateBody", - "ResourceMappings" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-resiliencehub", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ResilienceHub::App" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "EventSubscription": { + "additionalProperties": false, + "description": "Indicates an event you would like to subscribe and get notification for.", + "properties": { + "EventType": { + "description": "The type of event you would like to subscribe and get notification for.", + "enum": [ + "ScheduledAssessmentFailure", + "DriftDetected" + ], + "type": "string" + }, + "Name": { + "description": "Unique name to identify an event subscription.", + "maxLength": 256, + "type": "string" + }, + "SnsTopicArn": { + "description": "Amazon Resource Name (ARN) of the Amazon Simple Notification Service topic.", + "pattern": "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]):[0-9]{12}:[A-Za-z0-9/][A-Za-z0-9:_/+.-]{0,1023}$", + "type": "string" + } + }, + "required": [ + "Name", + "EventType" + ], + "type": "object" + }, + "IamRoleArn": { + "pattern": "arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):iam::[0-9]{12}:role\\/(([\\u0021-\\u007E]+\\u002F){1,511})?[A-Za-z0-9+=,.@_/-]{1,64}$", + "type": "string" + }, + "PermissionModel": { + "additionalProperties": false, + "description": "Defines the roles and credentials that AWS Resilience Hub would use while creating the application, importing its resources, and running an assessment.", + "properties": { + "CrossAccountRoleArns": { + "description": "Defines a list of role Amazon Resource Names (ARNs) to be used in other accounts. These ARNs are used for querying purposes while importing resources and assessing your application.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IamRoleArn" + }, + "type": "array", + "uniqueItems": false + }, + "InvokerRoleName": { + "description": "Existing AWS IAM role name in the primary AWS account that will be assumed by AWS Resilience Hub Service Principle to obtain a read-only access to your application resources while running an assessment.", + "pattern": "((\\u002F[\\u0021-\\u007E]+\\u002F){1,511})?[A-Za-z0-9+=,.@_/-]{1,64}", + "type": "string" + }, + "Type": { + "description": "Defines how AWS Resilience Hub scans your resources. It can scan for the resources by using a pre-existing role in your AWS account, or by using the credentials of the current IAM user.", + "enum": [ + "LegacyIAMUser", + "RoleBased" + ], + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "PhysicalResourceId": { + "additionalProperties": false, + "properties": { + "AwsAccountId": { + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "AwsRegion": { + "pattern": "^[a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]$", + "type": "string" + }, + "Identifier": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Type": { + "pattern": "Arn|Native", + "type": "string" + } + }, + "required": [ + "Identifier", + "Type" + ], + "type": "object" + }, + "ResourceMapping": { + "additionalProperties": false, + "description": "Resource mapping is used to map logical resources from template to physical resource", + "properties": { + "EksSourceName": { + "type": "string" + }, + "LogicalStackName": { + "type": "string" + }, + "MappingType": { + "pattern": "CfnStack|Resource|Terraform|EKS", + "type": "string" + }, + "PhysicalResourceId": { + "$ref": "#/definitions/PhysicalResourceId" + }, + "ResourceName": { + "pattern": "^[A-Za-z0-9][A-Za-z0-9_\\-]{1,59}$", + "type": "string" + }, + "TerraformSourceName": { + "type": "string" + } + }, + "required": [ + "MappingType", + "PhysicalResourceId" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "patternProperties": { + ".{1,128}": { + "$ref": "#/definitions/TagValue" + } + }, + "type": "object" + }, + "TagValue": { + "maxLength": 256, + "type": "string" + } + }, + "description": "Resource Type Definition for AWS::ResilienceHub::App.", + "handlers": { + "create": { + "permissions": [ + "cloudformation:DescribeStacks", + "cloudformation:ListStackResources", + "s3:GetBucketLocation", + "s3:GetObject", + "s3:ListAllMyBuckets", + "autoscaling:DescribeAutoScalingGroups", + "apigateway:GET", + "ec2:Describe*", + "ecs:DescribeServices", + "eks:DescribeCluster", + "elasticfilesystem:DescribeFileSystems", + "elasticloadbalancing:DescribeLoadBalancers", + "lambda:GetFunction*", + "rds:Describe*", + "dynamodb:Describe*", + "sqs:GetQueueAttributes", + "sns:GetTopicAttributes", + "route53:List*", + "iam:PassRole", + "resiliencehub:CreateApp", + "resiliencehub:DescribeApp", + "resiliencehub:DescribeAppVersionTemplate", + "resiliencehub:PutDraftAppVersionTemplate", + "resiliencehub:AddDraftAppVersionResourceMappings", + "resiliencehub:ListAppVersionResourceMappings", + "resiliencehub:ListAppVersions", + "resiliencehub:PublishAppVersion", + "resiliencehub:ListTagsForResource", + "resiliencehub:TagResource", + "resiliencehub:UntagResource" + ] + }, + "delete": { + "permissions": [ + "resiliencehub:DeleteApp", + "resiliencehub:UntagResource", + "resiliencehub:ListApps" + ] + }, + "list": { + "permissions": [ + "resiliencehub:ListApps" + ] + }, + "read": { + "permissions": [ + "resiliencehub:DescribeApp", + "resiliencehub:DescribeAppVersionTemplate", + "resiliencehub:ListAppVersionResourceMappings", + "resiliencehub:ListTagsForResource", + "resiliencehub:ListAppVersions" + ] + }, + "update": { + "permissions": [ + "cloudformation:DescribeStacks", + "cloudformation:ListStackResources", + "s3:GetBucketLocation", + "s3:GetObject", + "s3:ListAllMyBuckets", + "autoscaling:DescribeAutoScalingGroups", + "apigateway:GET", + "ec2:Describe*", + "ecs:DescribeServices", + "eks:DescribeCluster", + "elasticfilesystem:DescribeFileSystems", + "elasticloadbalancing:DescribeLoadBalancers", + "lambda:GetFunction*", + "rds:Describe*", + "dynamodb:Describe*", + "sqs:GetQueueAttributes", + "sns:GetTopicAttributes", + "route53:List*", + "iam:PassRole", + "resiliencehub:UpdateApp", + "resiliencehub:DescribeApp", + "resiliencehub:DescribeAppVersionTemplate", + "resiliencehub:PutDraftAppVersionTemplate", + "resiliencehub:AddDraftAppVersionResourceMappings", + "resiliencehub:RemoveDraftAppVersionResourceMappings", + "resiliencehub:ListAppVersionResourceMappings", + "resiliencehub:ListAppVersions", + "resiliencehub:PublishAppVersion", + "resiliencehub:ListTagsForResource", + "resiliencehub:TagResource", + "resiliencehub:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppArn" + ], + "properties": { + "AppArn": { + "description": "Amazon Resource Name (ARN) of the App.", + "pattern": "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]):[0-9]{12}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", + "type": "string" + }, + "AppAssessmentSchedule": { + "description": "Assessment execution schedule.", + "enum": [ + "Disabled", + "Daily" + ], + "type": "string" + }, + "AppTemplateBody": { + "description": "A string containing full ResilienceHub app template body.", + "maxLength": 409600, + "minLength": 0, + "pattern": "^[\\w\\s:,-\\.'\\/{}\\[\\]:\"]+$", + "type": "string" + }, + "Description": { + "description": "App description.", + "maxLength": 500, + "minLength": 0, + "type": "string" + }, + "DriftStatus": { + "description": "Indicates if compliance drifts (deviations) were detected while running an assessment for your application.", + "enum": [ + "NotChecked", + "NotDetected", + "Detected" + ], + "type": "string" + }, + "EventSubscriptions": { + "description": "The list of events you would like to subscribe and get notification for.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EventSubscription" + }, + "type": "array", + "uniqueItems": false + }, + "Name": { + "description": "Name of the app.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9_\\-]{1,59}$", + "type": "string" + }, + "PermissionModel": { + "$ref": "#/definitions/PermissionModel" + }, + "ResiliencyPolicyArn": { + "description": "Amazon Resource Name (ARN) of the Resiliency Policy.", + "pattern": "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]):[0-9]{12}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", + "type": "string" + }, + "ResourceMappings": { + "description": "An array of ResourceMapping objects.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourceMapping" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "$ref": "#/definitions/TagMap" + } + }, + "readOnlyProperties": [ + "/properties/AppArn", + "/properties/DriftStatus" + ], + "required": [ + "Name", + "AppTemplateBody", + "ResourceMappings" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-resiliencehub", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "resiliencehub:TagResource", + "resiliencehub:ListTagsForResource", + "resiliencehub:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ResilienceHub::App" +} diff --git a/src/schema/aws-resiliencehub-resiliencypolicy.json b/src/schema/aws-resiliencehub-resiliencypolicy.json index aec0a4c0..a29ecd24 100644 --- a/src/schema/aws-resiliencehub-resiliencypolicy.json +++ b/src/schema/aws-resiliencehub-resiliencypolicy.json @@ -1,159 +1,164 @@ -{ - "additionalProperties": false, - "definitions": { - "FailurePolicy": { - "additionalProperties": false, - "description": "Failure Policy.", - "properties": { - "RpoInSecs": { - "description": "RPO in seconds.", - "type": "integer" - }, - "RtoInSecs": { - "description": "RTO in seconds.", - "type": "integer" - } - }, - "required": [ - "RtoInSecs", - "RpoInSecs" - ], - "type": "object" - }, - "PolicyMap": { - "additionalProperties": false, - "properties": { - "AZ": { - "$ref": "#/definitions/FailurePolicy" - }, - "Hardware": { - "$ref": "#/definitions/FailurePolicy" - }, - "Region": { - "$ref": "#/definitions/FailurePolicy" - }, - "Software": { - "$ref": "#/definitions/FailurePolicy" - } - }, - "required": [ - "AZ", - "Hardware", - "Software" - ], - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "patternProperties": { - ".{1,128}": { - "$ref": "#/definitions/TagValue" - } - }, - "type": "object" - }, - "TagValue": { - "maxLength": 256, - "type": "string" - } - }, - "description": "Resource Type Definition for Resiliency Policy.", - "handlers": { - "create": { - "permissions": [ - "resiliencehub:CreateResiliencyPolicy", - "resiliencehub:DescribeResiliencyPolicy", - "resiliencehub:TagResource" - ] - }, - "delete": { - "permissions": [ - "resiliencehub:DeleteResiliencyPolicy", - "resiliencehub:UntagResource" - ] - }, - "list": { - "permissions": [ - "resiliencehub:ListResiliencyPolicies" - ] - }, - "read": { - "permissions": [ - "resiliencehub:DescribeResiliencyPolicy", - "resiliencehub:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "resiliencehub:DescribeResiliencyPolicy", - "resiliencehub:UpdateResiliencyPolicy", - "resiliencehub:TagResource", - "resiliencehub:UntagResource", - "resiliencehub:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/PolicyArn" - ], - "properties": { - "DataLocationConstraint": { - "description": "Data Location Constraint of the Policy.", - "enum": [ - "AnyLocation", - "SameContinent", - "SameCountry" - ], - "type": "string" - }, - "Policy": { - "$ref": "#/definitions/PolicyMap" - }, - "PolicyArn": { - "description": "Amazon Resource Name (ARN) of the Resiliency Policy.", - "pattern": "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]):[0-9]{12}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "PolicyDescription": { - "description": "Description of Resiliency Policy.", - "maxLength": 500, - "type": "string" - }, - "PolicyName": { - "description": "Name of Resiliency Policy.", - "pattern": "^[A-Za-z0-9][A-Za-z0-9_\\-]{1,59}$", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/TagMap" - }, - "Tier": { - "description": "Resiliency Policy Tier.", - "enum": [ - "MissionCritical", - "Critical", - "Important", - "CoreServices", - "NonCritical" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/PolicyArn" - ], - "required": [ - "PolicyName", - "Tier", - "Policy" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-resiliencehub", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ResilienceHub::ResiliencyPolicy" -} +{ + "additionalProperties": false, + "definitions": { + "FailurePolicy": { + "additionalProperties": false, + "description": "Failure Policy.", + "properties": { + "RpoInSecs": { + "description": "RPO in seconds.", + "type": "integer" + }, + "RtoInSecs": { + "description": "RTO in seconds.", + "type": "integer" + } + }, + "required": [ + "RtoInSecs", + "RpoInSecs" + ], + "type": "object" + }, + "PolicyMap": { + "additionalProperties": false, + "properties": { + "AZ": { + "$ref": "#/definitions/FailurePolicy" + }, + "Hardware": { + "$ref": "#/definitions/FailurePolicy" + }, + "Region": { + "$ref": "#/definitions/FailurePolicy" + }, + "Software": { + "$ref": "#/definitions/FailurePolicy" + } + }, + "required": [ + "AZ", + "Hardware", + "Software" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "patternProperties": { + ".{1,128}": { + "$ref": "#/definitions/TagValue" + } + }, + "type": "object" + }, + "TagValue": { + "maxLength": 256, + "type": "string" + } + }, + "description": "Resource Type Definition for Resiliency Policy.", + "handlers": { + "create": { + "permissions": [ + "resiliencehub:CreateResiliencyPolicy", + "resiliencehub:DescribeResiliencyPolicy", + "resiliencehub:TagResource" + ] + }, + "delete": { + "permissions": [ + "resiliencehub:DeleteResiliencyPolicy", + "resiliencehub:UntagResource" + ] + }, + "list": { + "permissions": [ + "resiliencehub:ListResiliencyPolicies" + ] + }, + "read": { + "permissions": [ + "resiliencehub:DescribeResiliencyPolicy", + "resiliencehub:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "resiliencehub:DescribeResiliencyPolicy", + "resiliencehub:UpdateResiliencyPolicy", + "resiliencehub:TagResource", + "resiliencehub:UntagResource", + "resiliencehub:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/PolicyArn" + ], + "properties": { + "DataLocationConstraint": { + "description": "Data Location Constraint of the Policy.", + "enum": [ + "AnyLocation", + "SameContinent", + "SameCountry" + ], + "type": "string" + }, + "Policy": { + "$ref": "#/definitions/PolicyMap" + }, + "PolicyArn": { + "description": "Amazon Resource Name (ARN) of the Resiliency Policy.", + "pattern": "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]):[0-9]{12}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", + "type": "string" + }, + "PolicyDescription": { + "description": "Description of Resiliency Policy.", + "maxLength": 500, + "type": "string" + }, + "PolicyName": { + "description": "Name of Resiliency Policy.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9_\\-]{1,59}$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + }, + "Tier": { + "description": "Resiliency Policy Tier.", + "enum": [ + "MissionCritical", + "Critical", + "Important", + "CoreServices", + "NonCritical" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/PolicyArn" + ], + "required": [ + "PolicyName", + "Tier", + "Policy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-resiliencehub", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "resiliencehub:TagResource", + "resiliencehub:ListTagsForResource", + "resiliencehub:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ResilienceHub::ResiliencyPolicy" +} diff --git a/src/schema/aws-resourceexplorer2-defaultviewassociation.json b/src/schema/aws-resourceexplorer2-defaultviewassociation.json index 7163f50c..5c41a507 100644 --- a/src/schema/aws-resourceexplorer2-defaultviewassociation.json +++ b/src/schema/aws-resourceexplorer2-defaultviewassociation.json @@ -1,52 +1,52 @@ -{ - "additionalProperties": false, - "description": "Definition of AWS::ResourceExplorer2::DefaultViewAssociation Resource Type", - "handlers": { - "create": { - "permissions": [ - "resource-explorer-2:GetDefaultView", - "resource-explorer-2:AssociateDefaultView" - ] - }, - "delete": { - "permissions": [ - "resource-explorer-2:GetDefaultView", - "resource-explorer-2:DisassociateDefaultView" - ] - }, - "read": { - "permissions": [ - "resource-explorer-2:GetDefaultView" - ] - }, - "update": { - "permissions": [ - "resource-explorer-2:GetDefaultView", - "resource-explorer-2:AssociateDefaultView" - ] - } - }, - "primaryIdentifier": [ - "/properties/AssociatedAwsPrincipal" - ], - "properties": { - "AssociatedAwsPrincipal": { - "description": "The AWS principal that the default view is associated with, used as the unique identifier for this resource.", - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "ViewArn": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AssociatedAwsPrincipal" - ], - "required": [ - "ViewArn" - ], - "tagging": { - "taggable": false - }, - "typeName": "AWS::ResourceExplorer2::DefaultViewAssociation" -} +{ + "additionalProperties": false, + "description": "Definition of AWS::ResourceExplorer2::DefaultViewAssociation Resource Type", + "handlers": { + "create": { + "permissions": [ + "resource-explorer-2:GetDefaultView", + "resource-explorer-2:AssociateDefaultView" + ] + }, + "delete": { + "permissions": [ + "resource-explorer-2:GetDefaultView", + "resource-explorer-2:DisassociateDefaultView" + ] + }, + "read": { + "permissions": [ + "resource-explorer-2:GetDefaultView" + ] + }, + "update": { + "permissions": [ + "resource-explorer-2:GetDefaultView", + "resource-explorer-2:AssociateDefaultView" + ] + } + }, + "primaryIdentifier": [ + "/properties/AssociatedAwsPrincipal" + ], + "properties": { + "AssociatedAwsPrincipal": { + "description": "The AWS principal that the default view is associated with, used as the unique identifier for this resource.", + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "ViewArn": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AssociatedAwsPrincipal" + ], + "required": [ + "ViewArn" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::ResourceExplorer2::DefaultViewAssociation" +} diff --git a/src/schema/aws-resourceexplorer2-index.json b/src/schema/aws-resourceexplorer2-index.json index 197266fd..d898bcde 100644 --- a/src/schema/aws-resourceexplorer2-index.json +++ b/src/schema/aws-resourceexplorer2-index.json @@ -1,107 +1,107 @@ -{ - "additionalProperties": false, - "definitions": { - "IndexState": { - "enum": [ - "ACTIVE", - "CREATING", - "DELETING", - "DELETED", - "UPDATING" - ], - "type": "string" - }, - "IndexType": { - "enum": [ - "LOCAL", - "AGGREGATOR" - ], - "type": "string" - }, - "TagMap": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::ResourceExplorer2::Index Resource Type", - "handlers": { - "create": { - "permissions": [ - "resource-explorer-2:CreateIndex", - "resource-explorer-2:GetIndex", - "resource-explorer-2:TagResource", - "resource-explorer-2:UpdateIndexType", - "resource-explorer-2:DeleteIndex", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "resource-explorer-2:DeleteIndex", - "resource-explorer-2:GetIndex", - "resource-explorer-2:UntagResource" - ] - }, - "list": { - "permissions": [ - "resource-explorer-2:ListIndexes" - ] - }, - "read": { - "permissions": [ - "resource-explorer-2:GetIndex" - ] - }, - "update": { - "permissions": [ - "resource-explorer-2:GetIndex", - "resource-explorer-2:UpdateIndexType", - "resource-explorer-2:TagResource", - "resource-explorer-2:UntagResource", - "resource-explorer-2:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "type": "string" - }, - "IndexState": { - "$ref": "#/definitions/IndexState" - }, - "Tags": { - "$ref": "#/definitions/TagMap" - }, - "Type": { - "$ref": "#/definitions/IndexType" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/IndexState" - ], - "required": [ - "Type" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "resource-explorer-2:ListTagsForResource", - "resource-explorer-2:TagResource", - "resource-explorer-2:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ResourceExplorer2::Index" -} +{ + "additionalProperties": false, + "definitions": { + "IndexState": { + "enum": [ + "ACTIVE", + "CREATING", + "DELETING", + "DELETED", + "UPDATING" + ], + "type": "string" + }, + "IndexType": { + "enum": [ + "LOCAL", + "AGGREGATOR" + ], + "type": "string" + }, + "TagMap": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::ResourceExplorer2::Index Resource Type", + "handlers": { + "create": { + "permissions": [ + "resource-explorer-2:CreateIndex", + "resource-explorer-2:GetIndex", + "resource-explorer-2:TagResource", + "resource-explorer-2:UpdateIndexType", + "resource-explorer-2:DeleteIndex", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "resource-explorer-2:DeleteIndex", + "resource-explorer-2:GetIndex", + "resource-explorer-2:UntagResource" + ] + }, + "list": { + "permissions": [ + "resource-explorer-2:ListIndexes" + ] + }, + "read": { + "permissions": [ + "resource-explorer-2:GetIndex" + ] + }, + "update": { + "permissions": [ + "resource-explorer-2:GetIndex", + "resource-explorer-2:UpdateIndexType", + "resource-explorer-2:TagResource", + "resource-explorer-2:UntagResource", + "resource-explorer-2:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "type": "string" + }, + "IndexState": { + "$ref": "#/definitions/IndexState" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + }, + "Type": { + "$ref": "#/definitions/IndexType" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/IndexState" + ], + "required": [ + "Type" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "resource-explorer-2:ListTagsForResource", + "resource-explorer-2:TagResource", + "resource-explorer-2:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ResourceExplorer2::Index" +} diff --git a/src/schema/aws-resourceexplorer2-view.json b/src/schema/aws-resourceexplorer2-view.json index 281570f6..3f91d0d0 100644 --- a/src/schema/aws-resourceexplorer2-view.json +++ b/src/schema/aws-resourceexplorer2-view.json @@ -1,126 +1,126 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Scope", - "/properties/ViewName" - ], - "definitions": { - "IncludedProperty": { - "additionalProperties": false, - "properties": { - "Name": { - "maxLength": 1011, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "SearchFilter": { - "additionalProperties": false, - "properties": { - "FilterString": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "FilterString" - ], - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::ResourceExplorer2::View Resource Type", - "handlers": { - "create": { - "permissions": [ - "resource-explorer-2:CreateView", - "resource-explorer-2:TagResource" - ] - }, - "delete": { - "permissions": [ - "resource-explorer-2:DeleteView", - "resource-explorer-2:GetView", - "resource-explorer-2:UntagResource" - ] - }, - "list": { - "permissions": [ - "resource-explorer-2:ListViews" - ] - }, - "read": { - "permissions": [ - "resource-explorer-2:GetView" - ] - }, - "update": { - "permissions": [ - "resource-explorer-2:UpdateView", - "resource-explorer-2:TagResource", - "resource-explorer-2:UntagResource", - "resource-explorer-2:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ViewArn" - ], - "properties": { - "Filters": { - "$ref": "#/definitions/SearchFilter" - }, - "IncludedProperties": { - "items": { - "$ref": "#/definitions/IncludedProperty" - }, - "type": "array" - }, - "Scope": { - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/TagMap" - }, - "ViewArn": { - "type": "string" - }, - "ViewName": { - "pattern": "^[a-zA-Z0-9\\-]{1,64}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ViewArn" - ], - "required": [ - "ViewName" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "resource-explorer-2:ListTagsForResource", - "resource-explorer-2:TagResource", - "resource-explorer-2:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ResourceExplorer2::View" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Scope", + "/properties/ViewName" + ], + "definitions": { + "IncludedProperty": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 1011, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "SearchFilter": { + "additionalProperties": false, + "properties": { + "FilterString": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "FilterString" + ], + "type": "object" + }, + "TagMap": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::ResourceExplorer2::View Resource Type", + "handlers": { + "create": { + "permissions": [ + "resource-explorer-2:CreateView", + "resource-explorer-2:TagResource" + ] + }, + "delete": { + "permissions": [ + "resource-explorer-2:DeleteView", + "resource-explorer-2:GetView", + "resource-explorer-2:UntagResource" + ] + }, + "list": { + "permissions": [ + "resource-explorer-2:ListViews" + ] + }, + "read": { + "permissions": [ + "resource-explorer-2:GetView" + ] + }, + "update": { + "permissions": [ + "resource-explorer-2:UpdateView", + "resource-explorer-2:TagResource", + "resource-explorer-2:UntagResource", + "resource-explorer-2:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ViewArn" + ], + "properties": { + "Filters": { + "$ref": "#/definitions/SearchFilter" + }, + "IncludedProperties": { + "items": { + "$ref": "#/definitions/IncludedProperty" + }, + "type": "array" + }, + "Scope": { + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/TagMap" + }, + "ViewArn": { + "type": "string" + }, + "ViewName": { + "pattern": "^[a-zA-Z0-9\\-]{1,64}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ViewArn" + ], + "required": [ + "ViewName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "resource-explorer-2:ListTagsForResource", + "resource-explorer-2:TagResource", + "resource-explorer-2:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ResourceExplorer2::View" +} diff --git a/src/schema/aws-resourcegroups-group.json b/src/schema/aws-resourcegroups-group.json index 05b97d06..4d940f13 100644 --- a/src/schema/aws-resourcegroups-group.json +++ b/src/schema/aws-resourcegroups-group.json @@ -1,213 +1,214 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Configuration": { - "items": { - "$ref": "#/definitions/ConfigurationItem" - }, - "type": "array" - }, - "ConfigurationItem": { - "additionalProperties": false, - "properties": { - "Parameters": { - "items": { - "$ref": "#/definitions/ConfigurationParameter" - }, - "type": "array" - }, - "Type": { - "type": "string" - } - }, - "type": "object" - }, - "ConfigurationParameter": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Values": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "Query": { - "additionalProperties": false, - "properties": { - "ResourceTypeFilters": { - "items": { - "type": "string" - }, - "type": "array" - }, - "StackIdentifier": { - "type": "string" - }, - "TagFilters": { - "items": { - "$ref": "#/definitions/TagFilter" - }, - "type": "array" - } - }, - "type": "object" - }, - "ResourceQuery": { - "additionalProperties": false, - "properties": { - "Query": { - "$ref": "#/definitions/Query" - }, - "Type": { - "enum": [ - "TAG_FILTERS_1_0", - "CLOUDFORMATION_STACK_1_0" - ], - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "pattern": "^(?!aws:).+", - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "TagFilter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Values": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "description": "Schema for ResourceGroups::Group", - "handlers": { - "create": { - "permissions": [ - "resource-groups:CreateGroup", - "resource-groups:Tag", - "cloudformation:DescribeStacks", - "cloudformation:ListStackResources", - "resource-groups:ListGroupResources", - "resource-groups:GroupResources" - ] - }, - "delete": { - "permissions": [ - "resource-groups:DeleteGroup", - "resource-groups:UnGroupResources" - ] - }, - "list": { - "permissions": [ - "resource-groups:ListGroups" - ] - }, - "read": { - "permissions": [ - "resource-groups:GetGroup", - "resource-groups:GetGroupQuery", - "resource-groups:GetTags", - "resource-groups:GetGroupConfiguration", - "resource-groups:ListGroupResources" - ] - }, - "update": { - "permissions": [ - "resource-groups:UpdateGroup", - "resource-groups:GetTags", - "resource-groups:GetGroupQuery", - "resource-groups:UpdateGroupQuery", - "resource-groups:Tag", - "resource-groups:Untag", - "resource-groups:PutGroupConfiguration", - "resource-groups:GetGroupConfiguration", - "resource-groups:ListGroupResources", - "resource-groups:GroupResources", - "resource-groups:UnGroupResources" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "description": "The Resource Group ARN.", - "type": "string" - }, - "Configuration": { - "$ref": "#/definitions/Configuration" - }, - "Description": { - "description": "The description of the resource group", - "maxLength": 512, - "type": "string" - }, - "Name": { - "description": "The name of the resource group", - "maxLength": 128, - "type": "string" - }, - "ResourceQuery": { - "$ref": "#/definitions/ResourceQuery" - }, - "Resources": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "resource-groups:Tag", - "resource-groups:Untag" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ResourceGroups::Group" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Configuration": { + "items": { + "$ref": "#/definitions/ConfigurationItem" + }, + "type": "array" + }, + "ConfigurationItem": { + "additionalProperties": false, + "properties": { + "Parameters": { + "items": { + "$ref": "#/definitions/ConfigurationParameter" + }, + "type": "array" + }, + "Type": { + "type": "string" + } + }, + "type": "object" + }, + "ConfigurationParameter": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Values": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "Query": { + "additionalProperties": false, + "properties": { + "ResourceTypeFilters": { + "items": { + "type": "string" + }, + "type": "array" + }, + "StackIdentifier": { + "type": "string" + }, + "TagFilters": { + "items": { + "$ref": "#/definitions/TagFilter" + }, + "type": "array" + } + }, + "type": "object" + }, + "ResourceQuery": { + "additionalProperties": false, + "properties": { + "Query": { + "$ref": "#/definitions/Query" + }, + "Type": { + "enum": [ + "TAG_FILTERS_1_0", + "CLOUDFORMATION_STACK_1_0" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "pattern": "^(?!aws:).+", + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "TagFilter": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Values": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "description": "Schema for ResourceGroups::Group", + "handlers": { + "create": { + "permissions": [ + "resource-groups:CreateGroup", + "resource-groups:Tag", + "cloudformation:DescribeStacks", + "cloudformation:ListStackResources", + "resource-groups:ListGroupResources", + "resource-groups:GroupResources" + ] + }, + "delete": { + "permissions": [ + "resource-groups:DeleteGroup", + "resource-groups:UnGroupResources" + ] + }, + "list": { + "permissions": [ + "resource-groups:ListGroups" + ] + }, + "read": { + "permissions": [ + "resource-groups:GetGroup", + "resource-groups:GetGroupQuery", + "resource-groups:GetTags", + "resource-groups:GetGroupConfiguration", + "resource-groups:ListGroupResources" + ] + }, + "update": { + "permissions": [ + "resource-groups:UpdateGroup", + "resource-groups:GetTags", + "resource-groups:GetGroupQuery", + "resource-groups:UpdateGroupQuery", + "resource-groups:Tag", + "resource-groups:Untag", + "resource-groups:PutGroupConfiguration", + "resource-groups:GetGroupConfiguration", + "resource-groups:ListGroupResources", + "resource-groups:GroupResources", + "resource-groups:UnGroupResources" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "description": "The Resource Group ARN.", + "type": "string" + }, + "Configuration": { + "$ref": "#/definitions/Configuration" + }, + "Description": { + "description": "The description of the resource group", + "maxLength": 512, + "type": "string" + }, + "Name": { + "description": "The name of the resource group", + "maxLength": 128, + "type": "string" + }, + "ResourceQuery": { + "$ref": "#/definitions/ResourceQuery" + }, + "Resources": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "resource-groups:Tag", + "resource-groups:Untag", + "resource-groups:GetTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ResourceGroups::Group" +} diff --git a/src/schema/aws-resourcegroups-tagsynctask.json b/src/schema/aws-resourcegroups-tagsynctask.json new file mode 100644 index 00000000..8c8bad24 --- /dev/null +++ b/src/schema/aws-resourcegroups-tagsynctask.json @@ -0,0 +1,120 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Group", + "/properties/TagKey", + "/properties/TagValue", + "/properties/RoleArn" + ], + "description": "Schema for ResourceGroups::TagSyncTask", + "handlers": { + "create": { + "permissions": [ + "resource-groups:StartTagSyncTask", + "resource-groups:CreateGroup", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "resource-groups:CancelTagSyncTask", + "resource-groups:DeleteGroup" + ] + }, + "list": { + "permissions": [ + "resource-groups:ListTagSyncTasks" + ] + }, + "read": { + "permissions": [ + "resource-groups:GetTagSyncTask" + ] + } + }, + "primaryIdentifier": [ + "/properties/TaskArn" + ], + "properties": { + "Group": { + "description": "The Amazon resource name (ARN) or name of the application group for which you want to create a tag-sync task", + "maxLength": 1600, + "minLength": 12, + "pattern": "([a-zA-Z0-9_\\\\.-]{1,150}/[a-z0-9]{26})|(arn:aws(-[a-z]+)*:resource-groups(-(test|beta|gamma))?:[a-z]{2}(-[a-z]+)+-\\d{1}:[0-9]{12}:group/[a-zA-Z0-9_\\\\.-]{1,150}/[a-z0-9]{26})", + "type": "string" + }, + "GroupArn": { + "description": "The Amazon resource name (ARN) of the ApplicationGroup for which the TagSyncTask is created", + "maxLength": 1600, + "minLength": 12, + "pattern": "arn:aws(-[a-z]+)*:resource-groups(-(test|beta|gamma))?:[a-z]{2}(-[a-z]+)+-\\d{1}:[0-9]{12}:group/[a-zA-Z0-9_\\.-]{1,150}/[a-z0-9]{26}", + "type": "string" + }, + "GroupName": { + "description": "The Name of the application group for which the TagSyncTask is created", + "maxLength": 300, + "minLength": 1, + "pattern": "[a-zA-Z0-9_\\.-]{1,150}/[a-z0-9]{26}", + "type": "string" + }, + "RoleArn": { + "description": "The Amazon resource name (ARN) of the role assumed by the service to tag and untag resources on your behalf.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:(aws[a-zA-Z-]*)?:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+", + "type": "string" + }, + "Status": { + "description": "The status of the TagSyncTask", + "enum": [ + "ACTIVE", + "ERROR" + ], + "type": "string" + }, + "TagKey": { + "description": "The tag key. Resources tagged with this tag key-value pair will be added to the application. If a resource with this tag is later untagged, the tag-sync task removes the resource from the application.", + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "TagValue": { + "description": "The tag value. Resources tagged with this tag key-value pair will be added to the application. If a resource with this tag is later untagged, the tag-sync task removes the resource from the application.", + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "TaskArn": { + "description": "The ARN of the TagSyncTask resource", + "maxLength": 1600, + "minLength": 12, + "pattern": "arn:aws(-[a-z]+)*:resource-groups(-(test|beta|gamma))?:[a-z]{2}(-[a-z]+)+-\\d{1}:[0-9]{12}:group/[a-zA-Z0-9_\\.-]{1,150}/[a-z0-9]{26}/tag-sync-task/[a-z0-9]{26}", + "type": "string" + } + }, + "propertyTransform": { + "/properties/Group": "$split(Group, \"/\")[1] & \"/\" & $split(Group, \"/\")[2] $OR Group" + }, + "readOnlyProperties": [ + "/properties/TaskArn", + "/properties/Status", + "/properties/GroupName", + "/properties/GroupArn" + ], + "required": [ + "Group", + "TagKey", + "TagValue", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ResourceGroups::TagSyncTask" +} diff --git a/src/schema/aws-robomaker-fleet.json b/src/schema/aws-robomaker-fleet.json index 0de35ffb..460455f7 100644 --- a/src/schema/aws-robomaker-fleet.json +++ b/src/schema/aws-robomaker-fleet.json @@ -1,78 +1,78 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Arn": { - "pattern": "arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "patternProperties": { - "^[a-zA-Z0-9-]{1,128}$": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "AWS::RoboMaker::Fleet resource creates an AWS RoboMaker fleet. Fleets contain robots and can receive deployments.", - "handlers": { - "create": { - "permissions": [ - "robomaker:CreateFleet" - ] - }, - "delete": { - "permissions": [ - "robomaker:DeleteFleet" - ] - }, - "list": { - "permissions": [ - "robomaker:ListFleets" - ] - }, - "read": { - "permissions": [ - "robomaker:DescribeFleet" - ] - }, - "update": { - "permissions": [ - "robomaker:TagResource", - "robomaker:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "Name": { - "description": "The name of the fleet.", - "maxLength": 255, - "minLength": 1, - "pattern": "[a-zA-Z0-9_\\-]{1,255}$", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/Tags" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-robomaker.git", - "typeName": "AWS::RoboMaker::Fleet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Arn": { + "pattern": "arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*", + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + "^[a-zA-Z0-9-]{1,128}$": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "AWS::RoboMaker::Fleet resource creates an AWS RoboMaker fleet. Fleets contain robots and can receive deployments.", + "handlers": { + "create": { + "permissions": [ + "robomaker:CreateFleet" + ] + }, + "delete": { + "permissions": [ + "robomaker:DeleteFleet" + ] + }, + "list": { + "permissions": [ + "robomaker:ListFleets" + ] + }, + "read": { + "permissions": [ + "robomaker:DescribeFleet" + ] + }, + "update": { + "permissions": [ + "robomaker:TagResource", + "robomaker:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "Name": { + "description": "The name of the fleet.", + "maxLength": 255, + "minLength": 1, + "pattern": "[a-zA-Z0-9_\\-]{1,255}$", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-robomaker.git", + "typeName": "AWS::RoboMaker::Fleet" +} diff --git a/src/schema/aws-robomaker-robot.json b/src/schema/aws-robomaker-robot.json index 774cc3ab..4ab93ecf 100644 --- a/src/schema/aws-robomaker-robot.json +++ b/src/schema/aws-robomaker-robot.json @@ -1,107 +1,107 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GreengrassGroupId", - "/properties/Name", - "/properties/Architecture", - "/properties/Fleet" - ], - "definitions": { - "Arn": { - "pattern": "arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "patternProperties": { - "^[a-zA-Z0-9-]{1,128}$": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "AWS::RoboMaker::Robot resource creates an AWS RoboMaker Robot.", - "handlers": { - "create": { - "permissions": [ - "robomaker:CreateRobot", - "robomaker:RegisterRobot" - ] - }, - "delete": { - "permissions": [ - "robomaker:DescribeRobot", - "robomaker:DeleteRobot", - "robomaker:DeregisterRobot" - ] - }, - "list": { - "permissions": [ - "robomaker:ListRobots" - ] - }, - "read": { - "permissions": [ - "robomaker:DescribeRobot" - ] - }, - "update": { - "permissions": [ - "robomaker:TagResource", - "robomaker:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Architecture": { - "description": "The target architecture of the robot.", - "enum": [ - "X86_64", - "ARM64", - "ARMHF" - ], - "type": "string" - }, - "Arn": { - "$ref": "#/definitions/Arn" - }, - "Fleet": { - "description": "The Amazon Resource Name (ARN) of the fleet.", - "maxLength": 1224, - "minLength": 1, - "type": "string" - }, - "GreengrassGroupId": { - "description": "The Greengrass group id.", - "maxLength": 1224, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "The name for the robot.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/Tags" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "GreengrassGroupId", - "Architecture" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-robomaker.git", - "typeName": "AWS::RoboMaker::Robot" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GreengrassGroupId", + "/properties/Name", + "/properties/Architecture", + "/properties/Fleet" + ], + "definitions": { + "Arn": { + "pattern": "arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*", + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + "^[a-zA-Z0-9-]{1,128}$": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "AWS::RoboMaker::Robot resource creates an AWS RoboMaker Robot.", + "handlers": { + "create": { + "permissions": [ + "robomaker:CreateRobot", + "robomaker:RegisterRobot" + ] + }, + "delete": { + "permissions": [ + "robomaker:DescribeRobot", + "robomaker:DeleteRobot", + "robomaker:DeregisterRobot" + ] + }, + "list": { + "permissions": [ + "robomaker:ListRobots" + ] + }, + "read": { + "permissions": [ + "robomaker:DescribeRobot" + ] + }, + "update": { + "permissions": [ + "robomaker:TagResource", + "robomaker:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Architecture": { + "description": "The target architecture of the robot.", + "enum": [ + "X86_64", + "ARM64", + "ARMHF" + ], + "type": "string" + }, + "Arn": { + "$ref": "#/definitions/Arn" + }, + "Fleet": { + "description": "The Amazon Resource Name (ARN) of the fleet.", + "maxLength": 1224, + "minLength": 1, + "type": "string" + }, + "GreengrassGroupId": { + "description": "The Greengrass group id.", + "maxLength": 1224, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "The name for the robot.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "GreengrassGroupId", + "Architecture" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-robomaker.git", + "typeName": "AWS::RoboMaker::Robot" +} diff --git a/src/schema/aws-robomaker-robotapplication.json b/src/schema/aws-robomaker-robotapplication.json index a1af34a7..4c54f849 100644 --- a/src/schema/aws-robomaker-robotapplication.json +++ b/src/schema/aws-robomaker-robotapplication.json @@ -1,175 +1,175 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Arn": { - "pattern": "arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*", - "type": "string" - }, - "RobotSoftwareSuite": { - "additionalProperties": false, - "description": "The robot software suite used by the robot application.", - "properties": { - "Name": { - "description": "The name of robot software suite.", - "enum": [ - "ROS", - "ROS2", - "General" - ], - "type": "string" - }, - "Version": { - "description": "The version of robot software suite.", - "enum": [ - "Kinetic", - "Melodic", - "Dashing" - ], - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "SourceConfig": { - "additionalProperties": false, - "properties": { - "Architecture": { - "description": "The architecture of robot application.", - "enum": [ - "X86_64", - "ARM64", - "ARMHF" - ], - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "S3Bucket": { - "description": "The Arn of the S3Bucket that stores the robot application source.", - "type": "string" - }, - "S3Key": { - "description": "The s3 key of robot application source.", - "type": "string" - } - }, - "required": [ - "S3Bucket", - "S3Key", - "Architecture" - ], - "type": "object" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "patternProperties": { - "^[a-zA-Z0-9-]{1,128}$": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "This schema is for testing purpose only.", - "handlers": { - "create": { - "permissions": [ - "robomaker:CreateRobotApplication", - "robomaker:TagResource", - "robomaker:UntagResource", - "ecr:BatchGetImage", - "ecr:GetAuthorizationToken", - "ecr:BatchCheckLayerAvailability", - "ecr-public:GetAuthorizationToken", - "sts:GetServiceBearerToken" - ] - }, - "delete": { - "permissions": [ - "robomaker:DescribeRobotApplication", - "robomaker:DeleteRobotApplication" - ] - }, - "list": { - "permissions": [ - "robomaker:ListRobotApplications" - ] - }, - "read": { - "permissions": [ - "robomaker:DescribeRobotApplication" - ] - }, - "update": { - "permissions": [ - "robomaker:TagResource", - "robomaker:UntagResource", - "robomaker:UpdateRobotApplication", - "ecr:BatchGetImage", - "ecr:GetAuthorizationToken", - "ecr:BatchCheckLayerAvailability", - "ecr-public:GetAuthorizationToken" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "CurrentRevisionId": { - "description": "The revision ID of robot application.", - "maxLength": 40, - "minLength": 1, - "type": "string" - }, - "Environment": { - "description": "The URI of the Docker image for the robot application.", - "type": "string" - }, - "Name": { - "description": "The name of the robot application.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "RobotSoftwareSuite": { - "$ref": "#/definitions/RobotSoftwareSuite" - }, - "Sources": { - "description": "The sources of the robot application.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SourceConfig" - }, - "type": "array" - }, - "Tags": { - "$ref": "#/definitions/Tags" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "RobotSoftwareSuite" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::RoboMaker::RobotApplication", - "writeOnlyProperties": [ - "/properties/RobotSoftwareSuite/Version", - "/properties/Sources" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Arn": { + "pattern": "arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*", + "type": "string" + }, + "RobotSoftwareSuite": { + "additionalProperties": false, + "description": "The robot software suite used by the robot application.", + "properties": { + "Name": { + "description": "The name of robot software suite.", + "enum": [ + "ROS", + "ROS2", + "General" + ], + "type": "string" + }, + "Version": { + "description": "The version of robot software suite.", + "enum": [ + "Kinetic", + "Melodic", + "Dashing" + ], + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "SourceConfig": { + "additionalProperties": false, + "properties": { + "Architecture": { + "description": "The architecture of robot application.", + "enum": [ + "X86_64", + "ARM64", + "ARMHF" + ], + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "S3Bucket": { + "description": "The Arn of the S3Bucket that stores the robot application source.", + "type": "string" + }, + "S3Key": { + "description": "The s3 key of robot application source.", + "type": "string" + } + }, + "required": [ + "S3Bucket", + "S3Key", + "Architecture" + ], + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + "^[a-zA-Z0-9-]{1,128}$": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "This schema is for testing purpose only.", + "handlers": { + "create": { + "permissions": [ + "robomaker:CreateRobotApplication", + "robomaker:TagResource", + "robomaker:UntagResource", + "ecr:BatchGetImage", + "ecr:GetAuthorizationToken", + "ecr:BatchCheckLayerAvailability", + "ecr-public:GetAuthorizationToken", + "sts:GetServiceBearerToken" + ] + }, + "delete": { + "permissions": [ + "robomaker:DescribeRobotApplication", + "robomaker:DeleteRobotApplication" + ] + }, + "list": { + "permissions": [ + "robomaker:ListRobotApplications" + ] + }, + "read": { + "permissions": [ + "robomaker:DescribeRobotApplication" + ] + }, + "update": { + "permissions": [ + "robomaker:TagResource", + "robomaker:UntagResource", + "robomaker:UpdateRobotApplication", + "ecr:BatchGetImage", + "ecr:GetAuthorizationToken", + "ecr:BatchCheckLayerAvailability", + "ecr-public:GetAuthorizationToken" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CurrentRevisionId": { + "description": "The revision ID of robot application.", + "maxLength": 40, + "minLength": 1, + "type": "string" + }, + "Environment": { + "description": "The URI of the Docker image for the robot application.", + "type": "string" + }, + "Name": { + "description": "The name of the robot application.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "RobotSoftwareSuite": { + "$ref": "#/definitions/RobotSoftwareSuite" + }, + "Sources": { + "description": "The sources of the robot application.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SourceConfig" + }, + "type": "array" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "RobotSoftwareSuite" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "typeName": "AWS::RoboMaker::RobotApplication", + "writeOnlyProperties": [ + "/properties/RobotSoftwareSuite/Version", + "/properties/Sources" + ] +} diff --git a/src/schema/aws-robomaker-robotapplicationversion.json b/src/schema/aws-robomaker-robotapplicationversion.json index 912ff6c0..dee6b546 100644 --- a/src/schema/aws-robomaker-robotapplicationversion.json +++ b/src/schema/aws-robomaker-robotapplicationversion.json @@ -1,69 +1,69 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Application", - "/properties/CurrentRevisionId" - ], - "definitions": { - "Arn": { - "pattern": "arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*", - "type": "string" - } - }, - "description": "AWS::RoboMaker::RobotApplicationVersion resource creates an AWS RoboMaker RobotApplicationVersion. This helps you control which code your robot uses.", - "handlers": { - "create": { - "permissions": [ - "robomaker:CreateRobotApplicationVersion", - "s3:GetObject", - "ecr:BatchGetImage", - "ecr:GetAuthorizationToken", - "ecr:BatchCheckLayerAvailability", - "ecr-public:GetAuthorizationToken", - "sts:GetServiceBearerToken" - ] - }, - "delete": { - "permissions": [ - "robomaker:DeleteRobotApplication", - "robomaker:DescribeRobotApplication" - ] - }, - "read": { - "permissions": [ - "robomaker:DescribeRobotApplication" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Application": { - "$ref": "#/definitions/Arn" - }, - "ApplicationVersion": { - "type": "string" - }, - "Arn": { - "$ref": "#/definitions/Arn" - }, - "CurrentRevisionId": { - "description": "The revision ID of robot application.", - "maxLength": 40, - "minLength": 1, - "pattern": "[a-zA-Z0-9_.\\-]*", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ApplicationVersion", - "/properties/Arn" - ], - "required": [ - "Application" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "taggable": false, - "typeName": "AWS::RoboMaker::RobotApplicationVersion" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Application", + "/properties/CurrentRevisionId" + ], + "definitions": { + "Arn": { + "pattern": "arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*", + "type": "string" + } + }, + "description": "AWS::RoboMaker::RobotApplicationVersion resource creates an AWS RoboMaker RobotApplicationVersion. This helps you control which code your robot uses.", + "handlers": { + "create": { + "permissions": [ + "robomaker:CreateRobotApplicationVersion", + "s3:GetObject", + "ecr:BatchGetImage", + "ecr:GetAuthorizationToken", + "ecr:BatchCheckLayerAvailability", + "ecr-public:GetAuthorizationToken", + "sts:GetServiceBearerToken" + ] + }, + "delete": { + "permissions": [ + "robomaker:DeleteRobotApplication", + "robomaker:DescribeRobotApplication" + ] + }, + "read": { + "permissions": [ + "robomaker:DescribeRobotApplication" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Application": { + "$ref": "#/definitions/Arn" + }, + "ApplicationVersion": { + "type": "string" + }, + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CurrentRevisionId": { + "description": "The revision ID of robot application.", + "maxLength": 40, + "minLength": 1, + "pattern": "[a-zA-Z0-9_.\\-]*", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ApplicationVersion", + "/properties/Arn" + ], + "required": [ + "Application" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "taggable": false, + "typeName": "AWS::RoboMaker::RobotApplicationVersion" +} diff --git a/src/schema/aws-robomaker-simulationapplication.json b/src/schema/aws-robomaker-simulationapplication.json index 8ef8043a..54771fbd 100644 --- a/src/schema/aws-robomaker-simulationapplication.json +++ b/src/schema/aws-robomaker-simulationapplication.json @@ -1,244 +1,244 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Arn": { - "pattern": "arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*", - "type": "string" - }, - "RenderingEngine": { - "additionalProperties": false, - "description": "Information about a rendering engine.", - "properties": { - "Name": { - "description": "The name of the rendering engine.", - "enum": [ - "OGRE" - ], - "type": "string" - }, - "Version": { - "description": "The version of the rendering engine.", - "pattern": "1.x", - "type": "string" - } - }, - "required": [ - "Name", - "Version" - ], - "type": "object" - }, - "RobotSoftwareSuite": { - "additionalProperties": false, - "description": "Information about a robot software suite.", - "properties": { - "Name": { - "description": "The name of the robot software suite.", - "enum": [ - "ROS", - "ROS2", - "General" - ], - "type": "string" - }, - "Version": { - "description": "The version of the robot software suite.", - "enum": [ - "Kinetic", - "Melodic", - "Dashing", - "Foxy" - ], - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "SimulationSoftwareSuite": { - "additionalProperties": false, - "description": "Information about a simulation software suite.", - "properties": { - "Name": { - "description": "The name of the simulation software suite.", - "enum": [ - "Gazebo", - "RosbagPlay", - "SimulationRuntime" - ], - "type": "string" - }, - "Version": { - "description": "The version of the simulation software suite.", - "enum": [ - "7", - "9", - "11", - "Kinetic", - "Melodic", - "Dashing", - "Foxy" - ], - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "SourceConfig": { - "additionalProperties": false, - "description": "Information about a source configuration.", - "properties": { - "Architecture": { - "description": "The target processor architecture for the application.", - "enum": [ - "X86_64", - "ARM64", - "ARMHF" - ], - "type": "string" - }, - "S3Bucket": { - "description": "The Amazon S3 bucket name.", - "pattern": "[a-z0-9][a-z0-9.\\-]*[a-z0-9]", - "type": "string" - }, - "S3Key": { - "description": "The s3 object key.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "S3Bucket", - "S3Key", - "Architecture" - ], - "type": "object" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "patternProperties": { - "^[a-zA-Z0-9-]{1,128}$": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "This schema is for testing purpose only.", - "handlers": { - "create": { - "permissions": [ - "robomaker:CreateSimulationApplication", - "robomaker:TagResource", - "robomaker:UntagResource", - "ecr:BatchGetImage", - "ecr:GetAuthorizationToken", - "ecr:BatchCheckLayerAvailability", - "ecr-public:GetAuthorizationToken", - "sts:GetServiceBearerToken" - ] - }, - "delete": { - "permissions": [ - "robomaker:DescribeSimulationApplication", - "robomaker:DeleteSimulationApplication" - ] - }, - "list": { - "permissions": [ - "robomaker:ListSimulationApplications" - ] - }, - "read": { - "permissions": [ - "robomaker:DescribeSimulationApplication" - ] - }, - "update": { - "permissions": [ - "robomaker:TagResource", - "robomaker:UntagResource", - "robomaker:UpdateSimulationApplication", - "ecr:BatchGetImage", - "ecr:GetAuthorizationToken", - "ecr:BatchCheckLayerAvailability", - "ecr-public:GetAuthorizationToken" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "CurrentRevisionId": { - "description": "The current revision id.", - "type": "string" - }, - "Environment": { - "description": "The URI of the Docker image for the robot application.", - "type": "string" - }, - "Name": { - "description": "The name of the simulation application.", - "maxLength": 255, - "minLength": 1, - "pattern": "[a-zA-Z0-9_\\-]*", - "type": "string" - }, - "RenderingEngine": { - "$ref": "#/definitions/RenderingEngine", - "description": "The rendering engine for the simulation application." - }, - "RobotSoftwareSuite": { - "$ref": "#/definitions/RobotSoftwareSuite", - "description": "The robot software suite used by the simulation application." - }, - "SimulationSoftwareSuite": { - "$ref": "#/definitions/SimulationSoftwareSuite", - "description": "The simulation software suite used by the simulation application." - }, - "Sources": { - "description": "The sources of the simulation application.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SourceConfig" - }, - "type": "array" - }, - "Tags": { - "$ref": "#/definitions/Tags" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "RobotSoftwareSuite", - "SimulationSoftwareSuite" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::RoboMaker::SimulationApplication", - "writeOnlyProperties": [ - "/properties/RenderingEngine", - "/properties/RobotSoftwareSuite/Version", - "/properties/Sources", - "/properties/SimulationSoftwareSuite/Version" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Arn": { + "pattern": "arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*", + "type": "string" + }, + "RenderingEngine": { + "additionalProperties": false, + "description": "Information about a rendering engine.", + "properties": { + "Name": { + "description": "The name of the rendering engine.", + "enum": [ + "OGRE" + ], + "type": "string" + }, + "Version": { + "description": "The version of the rendering engine.", + "pattern": "1.x", + "type": "string" + } + }, + "required": [ + "Name", + "Version" + ], + "type": "object" + }, + "RobotSoftwareSuite": { + "additionalProperties": false, + "description": "Information about a robot software suite.", + "properties": { + "Name": { + "description": "The name of the robot software suite.", + "enum": [ + "ROS", + "ROS2", + "General" + ], + "type": "string" + }, + "Version": { + "description": "The version of the robot software suite.", + "enum": [ + "Kinetic", + "Melodic", + "Dashing", + "Foxy" + ], + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "SimulationSoftwareSuite": { + "additionalProperties": false, + "description": "Information about a simulation software suite.", + "properties": { + "Name": { + "description": "The name of the simulation software suite.", + "enum": [ + "Gazebo", + "RosbagPlay", + "SimulationRuntime" + ], + "type": "string" + }, + "Version": { + "description": "The version of the simulation software suite.", + "enum": [ + "7", + "9", + "11", + "Kinetic", + "Melodic", + "Dashing", + "Foxy" + ], + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "SourceConfig": { + "additionalProperties": false, + "description": "Information about a source configuration.", + "properties": { + "Architecture": { + "description": "The target processor architecture for the application.", + "enum": [ + "X86_64", + "ARM64", + "ARMHF" + ], + "type": "string" + }, + "S3Bucket": { + "description": "The Amazon S3 bucket name.", + "pattern": "[a-z0-9][a-z0-9.\\-]*[a-z0-9]", + "type": "string" + }, + "S3Key": { + "description": "The s3 object key.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "S3Bucket", + "S3Key", + "Architecture" + ], + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + "^[a-zA-Z0-9-]{1,128}$": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "This schema is for testing purpose only.", + "handlers": { + "create": { + "permissions": [ + "robomaker:CreateSimulationApplication", + "robomaker:TagResource", + "robomaker:UntagResource", + "ecr:BatchGetImage", + "ecr:GetAuthorizationToken", + "ecr:BatchCheckLayerAvailability", + "ecr-public:GetAuthorizationToken", + "sts:GetServiceBearerToken" + ] + }, + "delete": { + "permissions": [ + "robomaker:DescribeSimulationApplication", + "robomaker:DeleteSimulationApplication" + ] + }, + "list": { + "permissions": [ + "robomaker:ListSimulationApplications" + ] + }, + "read": { + "permissions": [ + "robomaker:DescribeSimulationApplication" + ] + }, + "update": { + "permissions": [ + "robomaker:TagResource", + "robomaker:UntagResource", + "robomaker:UpdateSimulationApplication", + "ecr:BatchGetImage", + "ecr:GetAuthorizationToken", + "ecr:BatchCheckLayerAvailability", + "ecr-public:GetAuthorizationToken" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CurrentRevisionId": { + "description": "The current revision id.", + "type": "string" + }, + "Environment": { + "description": "The URI of the Docker image for the robot application.", + "type": "string" + }, + "Name": { + "description": "The name of the simulation application.", + "maxLength": 255, + "minLength": 1, + "pattern": "[a-zA-Z0-9_\\-]*", + "type": "string" + }, + "RenderingEngine": { + "$ref": "#/definitions/RenderingEngine", + "description": "The rendering engine for the simulation application." + }, + "RobotSoftwareSuite": { + "$ref": "#/definitions/RobotSoftwareSuite", + "description": "The robot software suite used by the simulation application." + }, + "SimulationSoftwareSuite": { + "$ref": "#/definitions/SimulationSoftwareSuite", + "description": "The simulation software suite used by the simulation application." + }, + "Sources": { + "description": "The sources of the simulation application.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SourceConfig" + }, + "type": "array" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "RobotSoftwareSuite", + "SimulationSoftwareSuite" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "typeName": "AWS::RoboMaker::SimulationApplication", + "writeOnlyProperties": [ + "/properties/RenderingEngine", + "/properties/RobotSoftwareSuite/Version", + "/properties/Sources", + "/properties/SimulationSoftwareSuite/Version" + ] +} diff --git a/src/schema/aws-robomaker-simulationapplicationversion.json b/src/schema/aws-robomaker-simulationapplicationversion.json index effe4017..05b37cb7 100644 --- a/src/schema/aws-robomaker-simulationapplicationversion.json +++ b/src/schema/aws-robomaker-simulationapplicationversion.json @@ -1,69 +1,69 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Application", - "/properties/CurrentRevisionId" - ], - "definitions": { - "Arn": { - "pattern": "arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*", - "type": "string" - } - }, - "description": "AWS::RoboMaker::SimulationApplicationVersion resource creates an AWS RoboMaker SimulationApplicationVersion. This helps you control which code your simulation uses.", - "handlers": { - "create": { - "permissions": [ - "robomaker:CreateSimulationApplicationVersion", - "s3:GetObject", - "ecr:BatchGetImage", - "ecr:GetAuthorizationToken", - "ecr:BatchCheckLayerAvailability", - "ecr-public:GetAuthorizationToken", - "sts:GetServiceBearerToken" - ] - }, - "delete": { - "permissions": [ - "robomaker:DeleteSimulationApplication", - "robomaker:DescribeSimulationApplication" - ] - }, - "read": { - "permissions": [ - "robomaker:DescribeSimulationApplication" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Application": { - "$ref": "#/definitions/Arn" - }, - "ApplicationVersion": { - "type": "string" - }, - "Arn": { - "$ref": "#/definitions/Arn" - }, - "CurrentRevisionId": { - "description": "The revision ID of robot application.", - "maxLength": 40, - "minLength": 1, - "pattern": "[a-zA-Z0-9_.\\-]*", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ApplicationVersion", - "/properties/Arn" - ], - "required": [ - "Application" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "taggable": false, - "typeName": "AWS::RoboMaker::SimulationApplicationVersion" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Application", + "/properties/CurrentRevisionId" + ], + "definitions": { + "Arn": { + "pattern": "arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*", + "type": "string" + } + }, + "description": "AWS::RoboMaker::SimulationApplicationVersion resource creates an AWS RoboMaker SimulationApplicationVersion. This helps you control which code your simulation uses.", + "handlers": { + "create": { + "permissions": [ + "robomaker:CreateSimulationApplicationVersion", + "s3:GetObject", + "ecr:BatchGetImage", + "ecr:GetAuthorizationToken", + "ecr:BatchCheckLayerAvailability", + "ecr-public:GetAuthorizationToken", + "sts:GetServiceBearerToken" + ] + }, + "delete": { + "permissions": [ + "robomaker:DeleteSimulationApplication", + "robomaker:DescribeSimulationApplication" + ] + }, + "read": { + "permissions": [ + "robomaker:DescribeSimulationApplication" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Application": { + "$ref": "#/definitions/Arn" + }, + "ApplicationVersion": { + "type": "string" + }, + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CurrentRevisionId": { + "description": "The revision ID of robot application.", + "maxLength": 40, + "minLength": 1, + "pattern": "[a-zA-Z0-9_.\\-]*", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ApplicationVersion", + "/properties/Arn" + ], + "required": [ + "Application" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "taggable": false, + "typeName": "AWS::RoboMaker::SimulationApplicationVersion" +} diff --git a/src/schema/aws-rolesanywhere-crl.json b/src/schema/aws-rolesanywhere-crl.json index 90343fe3..3274bf41 100644 --- a/src/schema/aws-rolesanywhere-crl.json +++ b/src/schema/aws-rolesanywhere-crl.json @@ -1,107 +1,111 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::RolesAnywhere::CRL Resource Type", - "handlers": { - "create": { - "permissions": [ - "rolesanywhere:ImportCrl", - "rolesanywhere:TagResource", - "rolesanywhere:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "rolesanywhere:DeleteCrl" - ] - }, - "list": { - "permissions": [ - "rolesanywhere:ListCrls", - "rolesanywhere:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "rolesanywhere:GetCrl", - "rolesanywhere:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "rolesanywhere:EnableCrl", - "rolesanywhere:DisableCrl", - "rolesanywhere:UpdateCrl", - "rolesanywhere:TagResource", - "rolesanywhere:UntagResource", - "rolesanywhere:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/CrlId" - ], - "properties": { - "CrlData": { - "type": "string" - }, - "CrlId": { - "pattern": "[a-f0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}", - "type": "string" - }, - "Enabled": { - "type": "boolean" - }, - "Name": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TrustAnchorArn": { - "pattern": "^arn:aws(-[^:]+)?:rolesanywhere(:.*){2}(:trust-anchor.*)$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/CrlId" - ], - "required": [ - "Name", - "CrlData" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RolesAnywhere::CRL" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::RolesAnywhere::CRL Resource Type", + "handlers": { + "create": { + "permissions": [ + "rolesanywhere:ImportCrl", + "rolesanywhere:TagResource" + ] + }, + "delete": { + "permissions": [ + "rolesanywhere:DeleteCrl" + ] + }, + "list": { + "permissions": [ + "rolesanywhere:ListCrls", + "rolesanywhere:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "rolesanywhere:GetCrl", + "rolesanywhere:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "rolesanywhere:EnableCrl", + "rolesanywhere:DisableCrl", + "rolesanywhere:UpdateCrl", + "rolesanywhere:TagResource", + "rolesanywhere:UntagResource", + "rolesanywhere:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/CrlId" + ], + "properties": { + "CrlData": { + "type": "string" + }, + "CrlId": { + "pattern": "[a-f0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}", + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "Name": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TrustAnchorArn": { + "pattern": "^arn:aws(-[^:]+)?:rolesanywhere(:.*){2}(:trust-anchor.*)$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CrlId" + ], + "required": [ + "Name", + "CrlData" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rolesanywhere:UntagResource", + "rolesanywhere:TagResource", + "rolesanywhere:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RolesAnywhere::CRL" +} diff --git a/src/schema/aws-rolesanywhere-profile.json b/src/schema/aws-rolesanywhere-profile.json index 7e9379f2..d20423d9 100644 --- a/src/schema/aws-rolesanywhere-profile.json +++ b/src/schema/aws-rolesanywhere-profile.json @@ -1,188 +1,198 @@ -{ - "additionalProperties": false, - "definitions": { - "AttributeMapping": { - "additionalProperties": false, - "properties": { - "CertificateField": { - "$ref": "#/definitions/CertificateField" - }, - "MappingRules": { - "items": { - "$ref": "#/definitions/MappingRule" - }, - "type": "array" - } - }, - "required": [ - "CertificateField", - "MappingRules" - ], - "type": "object" - }, - "CertificateField": { - "enum": [ - "x509Subject", - "x509Issuer", - "x509SAN" - ], - "type": "string" - }, - "MappingRule": { - "additionalProperties": false, - "properties": { - "Specifier": { - "type": "string" - } - }, - "required": [ - "Specifier" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::RolesAnywhere::Profile Resource Type", - "handlers": { - "create": { - "permissions": [ - "iam:GetRole", - "iam:GetPolicy", - "iam:PassRole", - "rolesanywhere:CreateProfile", - "rolesanywhere:TagResource", - "rolesanywhere:ListTagsForResource", - "rolesanywhere:PutAttributeMapping", - "rolesanywhere:DeleteAttributeMapping" - ] - }, - "delete": { - "permissions": [ - "rolesanywhere:DeleteProfile" - ] - }, - "list": { - "permissions": [ - "rolesanywhere:ListProfiles", - "rolesanywhere:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "rolesanywhere:GetProfile", - "rolesanywhere:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iam:GetRole", - "iam:GetPolicy", - "iam:PassRole", - "rolesanywhere:GetProfile", - "rolesanywhere:UpdateProfile", - "rolesanywhere:EnableProfile", - "rolesanywhere:DisableProfile", - "rolesanywhere:TagResource", - "rolesanywhere:UntagResource", - "rolesanywhere:ListTagsForResource", - "rolesanywhere:PutAttributeMapping", - "rolesanywhere:DeleteAttributeMapping" - ] - } - }, - "primaryIdentifier": [ - "/properties/ProfileId" - ], - "properties": { - "AcceptRoleSessionName": { - "type": "boolean" - }, - "AttributeMappings": { - "items": { - "$ref": "#/definitions/AttributeMapping" - }, - "type": "array" - }, - "DurationSeconds": { - "maximum": 43200, - "minimum": 900, - "type": "number" - }, - "Enabled": { - "type": "boolean" - }, - "ManagedPolicyArns": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Name": { - "type": "string" - }, - "ProfileArn": { - "type": "string" - }, - "ProfileId": { - "pattern": "[a-f0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}", - "type": "string" - }, - "RequireInstanceProperties": { - "type": "boolean" - }, - "RoleArns": { - "items": { - "maxLength": 1011, - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "SessionPolicy": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ProfileId", - "/properties/ProfileArn" - ], - "required": [ - "Name", - "RoleArns" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RolesAnywhere::Profile" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RequireInstanceProperties" + ], + "definitions": { + "AttributeMapping": { + "additionalProperties": false, + "properties": { + "CertificateField": { + "$ref": "#/definitions/CertificateField" + }, + "MappingRules": { + "items": { + "$ref": "#/definitions/MappingRule" + }, + "type": "array" + } + }, + "required": [ + "CertificateField", + "MappingRules" + ], + "type": "object" + }, + "CertificateField": { + "enum": [ + "x509Subject", + "x509Issuer", + "x509SAN" + ], + "type": "string" + }, + "MappingRule": { + "additionalProperties": false, + "properties": { + "Specifier": { + "type": "string" + } + }, + "required": [ + "Specifier" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::RolesAnywhere::Profile Resource Type", + "handlers": { + "create": { + "permissions": [ + "iam:GetRole", + "iam:GetPolicy", + "iam:PassRole", + "rolesanywhere:CreateProfile", + "rolesanywhere:TagResource", + "rolesanywhere:PutAttributeMapping", + "rolesanywhere:DeleteAttributeMapping" + ] + }, + "delete": { + "permissions": [ + "rolesanywhere:DeleteProfile" + ] + }, + "list": { + "permissions": [ + "rolesanywhere:ListProfiles", + "rolesanywhere:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "rolesanywhere:GetProfile", + "rolesanywhere:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:GetRole", + "iam:GetPolicy", + "iam:PassRole", + "rolesanywhere:GetProfile", + "rolesanywhere:UpdateProfile", + "rolesanywhere:EnableProfile", + "rolesanywhere:DisableProfile", + "rolesanywhere:TagResource", + "rolesanywhere:UntagResource", + "rolesanywhere:ListTagsForResource", + "rolesanywhere:PutAttributeMapping", + "rolesanywhere:DeleteAttributeMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/ProfileId" + ], + "properties": { + "AcceptRoleSessionName": { + "type": "boolean" + }, + "AttributeMappings": { + "items": { + "$ref": "#/definitions/AttributeMapping" + }, + "type": "array" + }, + "DurationSeconds": { + "maximum": 43200, + "minimum": 900, + "type": "number" + }, + "Enabled": { + "type": "boolean" + }, + "ManagedPolicyArns": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Name": { + "type": "string" + }, + "ProfileArn": { + "type": "string" + }, + "ProfileId": { + "pattern": "[a-f0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}", + "type": "string" + }, + "RequireInstanceProperties": { + "type": "boolean" + }, + "RoleArns": { + "items": { + "maxLength": 1011, + "minLength": 1, + "type": "string" + }, + "type": "array" + }, + "SessionPolicy": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ProfileId", + "/properties/ProfileArn" + ], + "required": [ + "Name", + "RoleArns" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rolesanywhere:UntagResource", + "rolesanywhere:TagResource", + "rolesanywhere:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RolesAnywhere::Profile", + "writeOnlyProperties": [ + "/properties/RequireInstanceProperties" + ] +} diff --git a/src/schema/aws-rolesanywhere-trustanchor.json b/src/schema/aws-rolesanywhere-trustanchor.json index 9a877e9a..e2f5f9e5 100644 --- a/src/schema/aws-rolesanywhere-trustanchor.json +++ b/src/schema/aws-rolesanywhere-trustanchor.json @@ -1,208 +1,212 @@ -{ - "additionalProperties": false, - "definitions": { - "NotificationChannel": { - "enum": [ - "ALL" - ], - "type": "string" - }, - "NotificationEvent": { - "enum": [ - "CA_CERTIFICATE_EXPIRY", - "END_ENTITY_CERTIFICATE_EXPIRY" - ], - "type": "string" - }, - "NotificationSetting": { - "additionalProperties": false, - "properties": { - "Channel": { - "$ref": "#/definitions/NotificationChannel" - }, - "Enabled": { - "type": "boolean" - }, - "Event": { - "$ref": "#/definitions/NotificationEvent" - }, - "Threshold": { - "maximum": 360, - "minimum": 1, - "type": "number" - } - }, - "required": [ - "Enabled", - "Event" - ], - "type": "object" - }, - "Source": { - "additionalProperties": false, - "properties": { - "SourceData": { - "$ref": "#/definitions/SourceData" - }, - "SourceType": { - "$ref": "#/definitions/TrustAnchorType" - } - }, - "type": "object" - }, - "SourceData": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "X509CertificateData": { - "type": "string" - } - }, - "required": [ - "X509CertificateData" - ], - "title": "X509CertificateData", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "AcmPcaArn": { - "type": "string" - } - }, - "required": [ - "AcmPcaArn" - ], - "title": "AcmPcaArn", - "type": "object" - } - ] - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TrustAnchorType": { - "enum": [ - "AWS_ACM_PCA", - "CERTIFICATE_BUNDLE", - "SELF_SIGNED_REPOSITORY" - ], - "type": "string" - } - }, - "description": "Definition of AWS::RolesAnywhere::TrustAnchor Resource Type.", - "handlers": { - "create": { - "permissions": [ - "iam:CreateServiceLinkedRole", - "rolesanywhere:CreateTrustAnchor", - "rolesanywhere:TagResource", - "rolesanywhere:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "rolesanywhere:DeleteTrustAnchor" - ] - }, - "list": { - "permissions": [ - "rolesanywhere:ListTrustAnchors", - "rolesanywhere:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "rolesanywhere:GetTrustAnchor", - "rolesanywhere:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "acm-pca:GetCertificateAuthorityCertificate", - "rolesanywhere:ListTagsForResource", - "rolesanywhere:TagResource", - "rolesanywhere:UntagResource", - "rolesanywhere:EnableTrustAnchor", - "rolesanywhere:DisableTrustAnchor", - "rolesanywhere:UpdateTrustAnchor", - "rolesanywhere:GetTrustAnchor", - "rolesanywhere:PutNotificationSettings", - "rolesanywhere:ResetNotificationSettings" - ] - } - }, - "primaryIdentifier": [ - "/properties/TrustAnchorId" - ], - "properties": { - "Enabled": { - "type": "boolean" - }, - "Name": { - "type": "string" - }, - "NotificationSettings": { - "items": { - "$ref": "#/definitions/NotificationSetting" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - }, - "Source": { - "$ref": "#/definitions/Source" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TrustAnchorArn": { - "pattern": "[a-f0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}", - "type": "string" - }, - "TrustAnchorId": { - "pattern": "[a-f0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/TrustAnchorId", - "/properties/TrustAnchorArn" - ], - "required": [ - "Name", - "Source" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RolesAnywhere::TrustAnchor" -} +{ + "additionalProperties": false, + "definitions": { + "NotificationChannel": { + "enum": [ + "ALL" + ], + "type": "string" + }, + "NotificationEvent": { + "enum": [ + "CA_CERTIFICATE_EXPIRY", + "END_ENTITY_CERTIFICATE_EXPIRY" + ], + "type": "string" + }, + "NotificationSetting": { + "additionalProperties": false, + "properties": { + "Channel": { + "$ref": "#/definitions/NotificationChannel" + }, + "Enabled": { + "type": "boolean" + }, + "Event": { + "$ref": "#/definitions/NotificationEvent" + }, + "Threshold": { + "maximum": 360, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "Enabled", + "Event" + ], + "type": "object" + }, + "Source": { + "additionalProperties": false, + "properties": { + "SourceData": { + "$ref": "#/definitions/SourceData" + }, + "SourceType": { + "$ref": "#/definitions/TrustAnchorType" + } + }, + "type": "object" + }, + "SourceData": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "X509CertificateData": { + "type": "string" + } + }, + "required": [ + "X509CertificateData" + ], + "title": "X509CertificateData", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "AcmPcaArn": { + "type": "string" + } + }, + "required": [ + "AcmPcaArn" + ], + "title": "AcmPcaArn", + "type": "object" + } + ] + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TrustAnchorType": { + "enum": [ + "AWS_ACM_PCA", + "CERTIFICATE_BUNDLE", + "SELF_SIGNED_REPOSITORY" + ], + "type": "string" + } + }, + "description": "Definition of AWS::RolesAnywhere::TrustAnchor Resource Type.", + "handlers": { + "create": { + "permissions": [ + "iam:CreateServiceLinkedRole", + "rolesanywhere:CreateTrustAnchor", + "rolesanywhere:TagResource" + ] + }, + "delete": { + "permissions": [ + "rolesanywhere:DeleteTrustAnchor" + ] + }, + "list": { + "permissions": [ + "rolesanywhere:ListTrustAnchors", + "rolesanywhere:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "rolesanywhere:GetTrustAnchor", + "rolesanywhere:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "acm-pca:GetCertificateAuthorityCertificate", + "rolesanywhere:ListTagsForResource", + "rolesanywhere:TagResource", + "rolesanywhere:UntagResource", + "rolesanywhere:EnableTrustAnchor", + "rolesanywhere:DisableTrustAnchor", + "rolesanywhere:UpdateTrustAnchor", + "rolesanywhere:GetTrustAnchor", + "rolesanywhere:PutNotificationSettings", + "rolesanywhere:ResetNotificationSettings" + ] + } + }, + "primaryIdentifier": [ + "/properties/TrustAnchorId" + ], + "properties": { + "Enabled": { + "type": "boolean" + }, + "Name": { + "type": "string" + }, + "NotificationSettings": { + "items": { + "$ref": "#/definitions/NotificationSetting" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + }, + "Source": { + "$ref": "#/definitions/Source" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TrustAnchorArn": { + "pattern": "[a-f0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}", + "type": "string" + }, + "TrustAnchorId": { + "pattern": "[a-f0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TrustAnchorId", + "/properties/TrustAnchorArn" + ], + "required": [ + "Name", + "Source" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rolesanywhere:UntagResource", + "rolesanywhere:TagResource", + "rolesanywhere:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RolesAnywhere::TrustAnchor" +} diff --git a/src/schema/aws-route53-cidrcollection.json b/src/schema/aws-route53-cidrcollection.json index 23edff77..0567d1fd 100644 --- a/src/schema/aws-route53-cidrcollection.json +++ b/src/schema/aws-route53-cidrcollection.json @@ -1,108 +1,108 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Location": { - "additionalProperties": false, - "properties": { - "CidrList": { - "description": "A list of CIDR blocks.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "LocationName": { - "description": "The name of the location that is associated with the CIDR collection.", - "maxLength": 16, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "LocationName", - "CidrList" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::Route53::CidrCollection.", - "handlers": { - "create": { - "permissions": [ - "route53:CreateCidrCollection", - "route53:ChangeCidrCollection" - ] - }, - "delete": { - "permissions": [ - "route53:DeleteCidrCollection", - "route53:ChangeCidrCollection", - "route53:ListCidrBlocks" - ] - }, - "list": { - "permissions": [ - "route53:ListCidrCollections", - "route53:ListCidrBlocks" - ] - }, - "read": { - "permissions": [ - "route53:ListCidrCollections", - "route53:ListCidrBlocks" - ] - }, - "update": { - "permissions": [ - "route53:ChangeCidrCollection" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The Amazon resource name (ARN) to uniquely identify the AWS resource.", - "type": "string" - }, - "Id": { - "description": "UUID of the CIDR collection.", - "type": "string" - }, - "Locations": { - "description": "A complex type that contains information about the list of CIDR locations.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Location" - }, - "type": "array", - "uniqueItems": true - }, - "Name": { - "description": "A unique name for the CIDR collection.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[0-9A-Za-z_\\-]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53.git", - "tagging": { - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Route53::CidrCollection" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Location": { + "additionalProperties": false, + "properties": { + "CidrList": { + "description": "A list of CIDR blocks.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "LocationName": { + "description": "The name of the location that is associated with the CIDR collection.", + "maxLength": 16, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "LocationName", + "CidrList" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Route53::CidrCollection.", + "handlers": { + "create": { + "permissions": [ + "route53:CreateCidrCollection", + "route53:ChangeCidrCollection" + ] + }, + "delete": { + "permissions": [ + "route53:DeleteCidrCollection", + "route53:ChangeCidrCollection", + "route53:ListCidrBlocks" + ] + }, + "list": { + "permissions": [ + "route53:ListCidrCollections", + "route53:ListCidrBlocks" + ] + }, + "read": { + "permissions": [ + "route53:ListCidrCollections", + "route53:ListCidrBlocks" + ] + }, + "update": { + "permissions": [ + "route53:ChangeCidrCollection" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon resource name (ARN) to uniquely identify the AWS resource.", + "type": "string" + }, + "Id": { + "description": "UUID of the CIDR collection.", + "type": "string" + }, + "Locations": { + "description": "A complex type that contains information about the list of CIDR locations.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Location" + }, + "type": "array", + "uniqueItems": true + }, + "Name": { + "description": "A unique name for the CIDR collection.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9A-Za-z_\\-]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53.git", + "tagging": { + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Route53::CidrCollection" +} diff --git a/src/schema/aws-route53-dnssec.json b/src/schema/aws-route53-dnssec.json index fe981b5c..52295e64 100644 --- a/src/schema/aws-route53-dnssec.json +++ b/src/schema/aws-route53-dnssec.json @@ -1,57 +1,57 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/HostedZoneId" - ], - "description": "Resource used to control (enable/disable) DNSSEC in a specific hosted zone.", - "handlers": { - "create": { - "permissions": [ - "route53:GetDNSSEC", - "route53:EnableHostedZoneDNSSEC", - "kms:DescribeKey", - "kms:GetPublicKey", - "kms:Sign", - "kms:CreateGrant" - ] - }, - "delete": { - "permissions": [ - "route53:GetDNSSEC", - "route53:DisableHostedZoneDNSSEC", - "kms:DescribeKey", - "kms:GetPublicKey", - "kms:Sign", - "kms:CreateGrant" - ] - }, - "list": { - "permissions": [ - "route53:GetDNSSEC", - "route53:ListHostedZones" - ] - }, - "read": { - "permissions": [ - "route53:GetDNSSEC" - ] - } - }, - "primaryIdentifier": [ - "/properties/HostedZoneId" - ], - "properties": { - "HostedZoneId": { - "description": "The unique string (ID) used to identify a hosted zone.", - "pattern": "^[A-Z0-9]{1,32}$", - "type": "string" - } - }, - "required": [ - "HostedZoneId" - ], - "tagging": { - "taggable": false - }, - "typeName": "AWS::Route53::DNSSEC" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/HostedZoneId" + ], + "description": "Resource used to control (enable/disable) DNSSEC in a specific hosted zone.", + "handlers": { + "create": { + "permissions": [ + "route53:GetDNSSEC", + "route53:EnableHostedZoneDNSSEC", + "kms:DescribeKey", + "kms:GetPublicKey", + "kms:Sign", + "kms:CreateGrant" + ] + }, + "delete": { + "permissions": [ + "route53:GetDNSSEC", + "route53:DisableHostedZoneDNSSEC", + "kms:DescribeKey", + "kms:GetPublicKey", + "kms:Sign", + "kms:CreateGrant" + ] + }, + "list": { + "permissions": [ + "route53:GetDNSSEC", + "route53:ListHostedZones" + ] + }, + "read": { + "permissions": [ + "route53:GetDNSSEC" + ] + } + }, + "primaryIdentifier": [ + "/properties/HostedZoneId" + ], + "properties": { + "HostedZoneId": { + "description": "The unique string (ID) used to identify a hosted zone.", + "pattern": "^[A-Z0-9]{1,32}$", + "type": "string" + } + }, + "required": [ + "HostedZoneId" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::Route53::DNSSEC" +} diff --git a/src/schema/aws-route53-healthcheck.json b/src/schema/aws-route53-healthcheck.json index c4d11982..2905fd0e 100644 --- a/src/schema/aws-route53-healthcheck.json +++ b/src/schema/aws-route53-healthcheck.json @@ -1,215 +1,215 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/HealthCheckConfig/Type", - "/properties/HealthCheckConfig/MeasureLatency", - "/properties/HealthCheckConfig/RequestInterval" - ], - "definitions": { - "AlarmIdentifier": { - "additionalProperties": false, - "description": "A complex type that identifies the CloudWatch alarm that you want Amazon Route 53 health checkers to use to determine whether the specified health check is healthy.", - "properties": { - "Name": { - "description": "The name of the CloudWatch alarm that you want Amazon Route 53 health checkers to use to determine whether this health check is healthy.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Region": { - "description": "For the CloudWatch alarm that you want Route 53 health checkers to use to determine whether this health check is healthy, the region that the alarm was created in.", - "type": "string" - } - }, - "required": [ - "Name", - "Region" - ], - "type": "object" - }, - "HealthCheckTag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag.", - "maxLength": 128, - "type": "string" - }, - "Value": { - "description": "The value for the tag.", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::Route53::HealthCheck.", - "handlers": { - "create": { - "permissions": [ - "route53:CreateHealthCheck", - "route53:ChangeTagsForResource", - "cloudwatch:DescribeAlarms", - "route53-recovery-control-config:DescribeRoutingControl" - ] - }, - "delete": { - "permissions": [ - "route53:DeleteHealthCheck" - ] - }, - "list": { - "permissions": [ - "route53:ListHealthChecks", - "route53:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "route53:GetHealthCheck", - "route53:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "route53:UpdateHealthCheck", - "route53:ChangeTagsForResource", - "route53:ListTagsForResource", - "cloudwatch:DescribeAlarms" - ] - } - }, - "primaryIdentifier": [ - "/properties/HealthCheckId" - ], - "properties": { - "HealthCheckConfig": { - "additionalProperties": false, - "description": "A complex type that contains information about the health check.", - "properties": { - "AlarmIdentifier": { - "$ref": "#/definitions/AlarmIdentifier" - }, - "ChildHealthChecks": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 256, - "type": "array" - }, - "EnableSNI": { - "type": "boolean" - }, - "FailureThreshold": { - "maximum": 10, - "minimum": 1, - "type": "integer" - }, - "FullyQualifiedDomainName": { - "maxLength": 255, - "type": "string" - }, - "HealthThreshold": { - "maximum": 256, - "minimum": 0, - "type": "integer" - }, - "IPAddress": { - "maxLength": 45, - "pattern": "^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$|^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$", - "type": "string" - }, - "InsufficientDataHealthStatus": { - "enum": [ - "Healthy", - "LastKnownStatus", - "Unhealthy" - ], - "type": "string" - }, - "Inverted": { - "type": "boolean" - }, - "MeasureLatency": { - "type": "boolean" - }, - "Port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "Regions": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 64, - "type": "array" - }, - "RequestInterval": { - "maximum": 30, - "minimum": 10, - "type": "integer" - }, - "ResourcePath": { - "maxLength": 255, - "type": "string" - }, - "RoutingControlArn": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "SearchString": { - "maxLength": 255, - "type": "string" - }, - "Type": { - "enum": [ - "CALCULATED", - "CLOUDWATCH_METRIC", - "HTTP", - "HTTP_STR_MATCH", - "HTTPS", - "HTTPS_STR_MATCH", - "TCP", - "RECOVERY_CONTROL" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "HealthCheckId": { - "type": "string" - }, - "HealthCheckTags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/HealthCheckTag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/HealthCheckId" - ], - "required": [ - "HealthCheckConfig" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53.git", - "taggable": true, - "typeName": "AWS::Route53::HealthCheck" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/HealthCheckConfig/Type", + "/properties/HealthCheckConfig/MeasureLatency", + "/properties/HealthCheckConfig/RequestInterval" + ], + "definitions": { + "AlarmIdentifier": { + "additionalProperties": false, + "description": "A complex type that identifies the CloudWatch alarm that you want Amazon Route 53 health checkers to use to determine whether the specified health check is healthy.", + "properties": { + "Name": { + "description": "The name of the CloudWatch alarm that you want Amazon Route 53 health checkers to use to determine whether this health check is healthy.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Region": { + "description": "For the CloudWatch alarm that you want Route 53 health checkers to use to determine whether this health check is healthy, the region that the alarm was created in.", + "type": "string" + } + }, + "required": [ + "Name", + "Region" + ], + "type": "object" + }, + "HealthCheckTag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag.", + "maxLength": 128, + "type": "string" + }, + "Value": { + "description": "The value for the tag.", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::Route53::HealthCheck.", + "handlers": { + "create": { + "permissions": [ + "route53:CreateHealthCheck", + "route53:ChangeTagsForResource", + "cloudwatch:DescribeAlarms", + "route53-recovery-control-config:DescribeRoutingControl" + ] + }, + "delete": { + "permissions": [ + "route53:DeleteHealthCheck" + ] + }, + "list": { + "permissions": [ + "route53:ListHealthChecks", + "route53:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "route53:GetHealthCheck", + "route53:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "route53:UpdateHealthCheck", + "route53:ChangeTagsForResource", + "route53:ListTagsForResource", + "cloudwatch:DescribeAlarms" + ] + } + }, + "primaryIdentifier": [ + "/properties/HealthCheckId" + ], + "properties": { + "HealthCheckConfig": { + "additionalProperties": false, + "description": "A complex type that contains information about the health check.", + "properties": { + "AlarmIdentifier": { + "$ref": "#/definitions/AlarmIdentifier" + }, + "ChildHealthChecks": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 256, + "type": "array" + }, + "EnableSNI": { + "type": "boolean" + }, + "FailureThreshold": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "FullyQualifiedDomainName": { + "maxLength": 255, + "type": "string" + }, + "HealthThreshold": { + "maximum": 256, + "minimum": 0, + "type": "integer" + }, + "IPAddress": { + "maxLength": 45, + "pattern": "^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$|^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$", + "type": "string" + }, + "InsufficientDataHealthStatus": { + "enum": [ + "Healthy", + "LastKnownStatus", + "Unhealthy" + ], + "type": "string" + }, + "Inverted": { + "type": "boolean" + }, + "MeasureLatency": { + "type": "boolean" + }, + "Port": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "Regions": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 64, + "type": "array" + }, + "RequestInterval": { + "maximum": 30, + "minimum": 10, + "type": "integer" + }, + "ResourcePath": { + "maxLength": 255, + "type": "string" + }, + "RoutingControlArn": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "SearchString": { + "maxLength": 255, + "type": "string" + }, + "Type": { + "enum": [ + "CALCULATED", + "CLOUDWATCH_METRIC", + "HTTP", + "HTTP_STR_MATCH", + "HTTPS", + "HTTPS_STR_MATCH", + "TCP", + "RECOVERY_CONTROL" + ], + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "HealthCheckId": { + "type": "string" + }, + "HealthCheckTags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/HealthCheckTag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/HealthCheckId" + ], + "required": [ + "HealthCheckConfig" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53.git", + "taggable": true, + "typeName": "AWS::Route53::HealthCheck" +} diff --git a/src/schema/aws-route53-hostedzone.json b/src/schema/aws-route53-hostedzone.json index b7a740f1..8df7d313 100644 --- a/src/schema/aws-route53-hostedzone.json +++ b/src/schema/aws-route53-hostedzone.json @@ -1,201 +1,201 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "HostedZoneConfig": { - "additionalProperties": false, - "description": "A complex type that contains an optional comment about your hosted zone. If you don't want to specify a comment, omit both the ``HostedZoneConfig`` and ``Comment`` elements.", - "properties": { - "Comment": { - "description": "Any comments that you want to include about the hosted zone.", - "maxLength": 256, - "type": "string" - } - }, - "type": "object" - }, - "HostedZoneTag": { - "additionalProperties": false, - "description": "A complex type that contains information about a tag that you want to add or edit for the specified health check or hosted zone.", - "properties": { - "Key": { - "description": "The value of ``Key`` depends on the operation that you want to perform:\n + *Add a tag to a health check or hosted zone*: ``Key`` is the name that you want to give the new tag.\n + *Edit a tag*: ``Key`` is the name of the tag that you want to change the ``Value`` for.\n + *Delete a key*: ``Key`` is the name of the tag you want to remove.\n + *Give a name to a health check*: Edit the default ``Name`` tag. In the Amazon Route 53 console, the list of your health checks includes a *Name* column that lets you see the name that you've given to each health check.", - "maxLength": 128, - "type": "string" - }, - "Value": { - "description": "The value of ``Value`` depends on the operation that you want to perform:\n + *Add a tag to a health check or hosted zone*: ``Value`` is the value that you want to give the new tag.\n + *Edit a tag*: ``Value`` is the new value that you want to assign the tag.", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "QueryLoggingConfig": { - "additionalProperties": false, - "description": "A complex type that contains information about a configuration for DNS query logging.", - "properties": { - "CloudWatchLogsLogGroupArn": { - "description": "The Amazon Resource Name (ARN) of the CloudWatch Logs log group that Amazon Route 53 is publishing logs to.", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::Logs::LogGroup" - }, - "type": "string" - } - }, - "required": [ - "CloudWatchLogsLogGroupArn" - ], - "type": "object" - }, - "VPC": { - "additionalProperties": false, - "description": "*Private hosted zones only:* A complex type that contains information about an Amazon VPC. Route 53 Resolver uses the records in the private hosted zone to route traffic in that VPC. \n For public hosted zones, omit ``VPCs``, ``VPCId``, and ``VPCRegion``.", - "properties": { - "VPCId": { - "description": "*Private hosted zones only:* The ID of an Amazon VPC.\n For public hosted zones, omit ``VPCs``, ``VPCId``, and ``VPCRegion``.", - "relationshipRef": { - "propertyPath": "/properties/VpcId", - "typeName": "AWS::EC2::VPC" - }, - "type": "string" - }, - "VPCRegion": { - "description": "*Private hosted zones only:* The region that an Amazon VPC was created in.\n For public hosted zones, omit ``VPCs``, ``VPCId``, and ``VPCRegion``.", - "type": "string" - } - }, - "required": [ - "VPCId", - "VPCRegion" - ], - "type": "object" - } - }, - "description": "Creates a new public or private hosted zone. You create records in a public hosted zone to define how you want to route traffic on the internet for a domain, such as example.com, and its subdomains (apex.example.com, acme.example.com). You create records in a private hosted zone to define how you want to route traffic for a domain and its subdomains within one or more Amazon Virtual Private Clouds (Amazon VPCs). \n You can't convert a public hosted zone to a private hosted zone or vice versa. Instead, you must create a new hosted zone with the same name and create new resource record sets.\n For more information about charges for hosted zones, see [Amazon Route 53 Pricing](https://docs.aws.amazon.com/route53/pricing/).\n Note the following:\n + You can't create a hosted zone for a top-level domain (TLD) such as .com.\n + If your domain is registered with a registrar other than Route 53, you must update the name servers with your registrar to make Route 53 the DNS service for the domain. For more information, see [Migrating DNS Service for an Existing Domain to Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html) in the *Amazon Route 53 Developer Guide*. \n \n When you submit a ``CreateHostedZone`` request, the initial status of the hosted zone is ``PENDING``. For public hosted zones, this means that the NS and SOA records are not yet available on all Route 53 DNS servers. When the NS and SOA records are available, the status of the zone changes to ``INSYNC``.\n The ``CreateHostedZone`` request requires the caller to have an ``ec2:DescribeVpcs`` permission.\n When creating private hosted zones, the Amazon VPC must belong to the same partition where the hosted zone is created. A partition is a group of AWS-Regions. Each AWS-account is scoped to one partition.\n The following are the supported partitions:\n + ``aws`` - AWS-Regions \n + ``aws-cn`` - China Regions\n + ``aws-us-gov`` - govcloud-us-region \n \n For more information, see [Access Management](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the *General Reference*.", - "handlers": { - "create": { - "permissions": [ - "route53:CreateHostedZone", - "route53:CreateQueryLoggingConfig", - "route53:ChangeTagsForResource", - "route53:GetChange", - "route53:AssociateVPCWithHostedZone", - "ec2:DescribeVpcs" - ] - }, - "delete": { - "permissions": [ - "route53:DeleteHostedZone", - "route53:DeleteQueryLoggingConfig", - "route53:ListQueryLoggingConfigs", - "route53:GetChange" - ] - }, - "list": { - "permissions": [ - "route53:GetHostedZone", - "route53:ListHostedZones", - "route53:ListQueryLoggingConfigs", - "route53:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "route53:GetHostedZone", - "route53:ListTagsForResource", - "route53:ListQueryLoggingConfigs" - ] - }, - "update": { - "permissions": [ - "route53:GetChange", - "route53:GetHostedZone", - "route53:ListTagsForResource", - "route53:ListQueryLoggingConfigs", - "route53:UpdateHostedZoneComment", - "route53:ChangeTagsForResource", - "route53:AssociateVPCWithHostedZone", - "route53:DisassociateVPCFromHostedZone", - "route53:CreateQueryLoggingConfig", - "route53:DeleteQueryLoggingConfig", - "ec2:DescribeVpcs" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "HostedZoneConfig": { - "$ref": "#/definitions/HostedZoneConfig", - "description": "A complex type that contains an optional comment.\n If you don't want to specify a comment, omit the ``HostedZoneConfig`` and ``Comment`` elements." - }, - "HostedZoneTags": { - "description": "Adds, edits, or deletes tags for a health check or a hosted zone.\n For information about using tags for cost allocation, see [Using Cost Allocation Tags](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html) in the *User Guide*.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/HostedZoneTag" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "description": "", - "type": "string" - }, - "Name": { - "description": "The name of the domain. Specify a fully qualified domain name, for example, *www.example.com*. The trailing dot is optional; Amazon Route 53 assumes that the domain name is fully qualified. This means that Route 53 treats *www.example.com* (without a trailing dot) and *www.example.com.* (with a trailing dot) as identical.\n If you're creating a public hosted zone, this is the name you have registered with your DNS registrar. If your domain name is registered with a registrar other than Route 53, change the name servers for your domain to the set of ``NameServers`` that are returned by the ``Fn::GetAtt`` intrinsic function.", - "maxLength": 1024, - "type": "string" - }, - "NameServers": { - "description": "", - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "QueryLoggingConfig": { - "$ref": "#/definitions/QueryLoggingConfig", - "description": "Creates a configuration for DNS query logging. After you create a query logging configuration, Amazon Route 53 begins to publish log data to an Amazon CloudWatch Logs log group.\n DNS query logs contain information about the queries that Route 53 receives for a specified public hosted zone, such as the following:\n + Route 53 edge location that responded to the DNS query\n + Domain or subdomain that was requested\n + DNS record type, such as A or AAAA\n + DNS response code, such as ``NoError`` or ``ServFail`` \n \n + Log Group and Resource Policy Before you create a query logging configuration, perform the following operations. If you create a query logging configuration using the Route 53 console, Route 53 performs these operations automatically. Create a CloudWatch Logs log group, and make note of the ARN, which you specify when you create a query logging configuration. Note the following: You must create the log group in the us-east-1 region. You must use the same to create the log group and the hosted zone that you want to configure query logging for. When you create log groups for query logging, we recommend that you use a consistent prefix, for example: /aws/route53/hosted zone name In the next step, you'll create a resource policy, which controls access to one or more log groups and the associated resources, such as Route 53 hosted zones. There's a limit on the number of resource policies that you can create, so we recommend that you use a consistent prefix so you can use the same resource policy for all the log groups that you create for query logging. Create a CloudWatch Logs resource policy, and give it the permissions that Route 53 needs to create log streams and to send query logs to log streams. You must create the CloudWatch Logs resource policy in the us-east-1 region. For the value of Resource, specify the ARN for the log group that you created in the previous step. To use the same resource policy for all the CloudWatch Logs log groups that you created for query logging configurations, replace the hosted zone name with *, for example: arn:aws:logs:us-east-1:123412341234:log-group:/aws/route53/* To avoid the confused deputy problem, a security issue where an entity without a permission for an action can coerce a more-privileged entity to perform it, you can optionally limit the permissions that a service has to a resource in a resource-based policy by supplying the following values: For aws:SourceArn, supply the hosted zone ARN used in creating the query logging configuration. For example, aws:SourceArn: arn:aws:route53:::hostedzone/hosted zone ID. For aws:SourceAccount, supply the account ID for the account that creates the query logging configuration. For example, aws:SourceAccount:111111111111. For more information, see The confused deputy problem in the IAM User Guide. You can't use the CloudWatch console to create or edit a resource policy. You must use the CloudWatch API, one of the SDKs, or the . + Log Streams and Edge Locations When Route 53 finishes creating the configuration for DNS query logging, it does the following: Creates a log stream for an edge location the first time that the edge location responds to DNS queries for the specified hosted zone. That log stream is used to log all queries that Route 53 responds to for that edge location. Begins to send query logs to the applicable log stream. The name of each log stream is in the following format: hosted zone ID/edge location code The edge location code is a three-letter code and an arbitrarily assigned number, for example, DFW3. The three-letter code typically corresponds with the International Air Transport Association airport code for an airport near the edge location. (These abbreviations might change in the future.) For a list of edge locations, see \"The Route 53 Global Network\" on the Route 53 Product Details page. + Queries That Are Logged Query logs contain only the queries that DNS resolvers forward to Route 53. If a DNS resolver has already cached the response to a query (such as the IP address for a load balancer for example.com), the resolver will continue to return the cached response. It doesn't forward another query to Route 53 until the TTL for the corresponding resource record set expires. Depending on how many DNS queries are submitted for a resource record set, and depending on the TTL for that resource record set, query logs might contain information about only one query out of every several thousand queries that are submitted to DNS. For more information about how DNS works, see Routing Internet Traffic to Your Website or Web Application in the Amazon Route 53 Developer Guide. + Log File Format For a list of the values in each query log and the format of each value, see Logging DNS Queries in the Amazon Route 53 Developer Guide. + Pricing For information about charges for query logs, see Amazon CloudWatch Pricing. + How to Stop Logging If you want Route 53 to stop sending query logs to CloudWatch Logs, delete the query logging configuration. For more information, see DeleteQueryLoggingConfig." - }, - "VPCs": { - "description": "*Private hosted zones:* A complex type that contains information about the VPCs that are associated with the specified hosted zone.\n For public hosted zones, omit ``VPCs``, ``VPCId``, and ``VPCRegion``.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/VPC" - }, - "type": "array", - "uniqueItems": true - } - }, - "propertyTransform": { - "/properties/Name": "Name $OR $join([Name, \".\"])" - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/NameServers" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "route53:ChangeTagsForResource", - "route53:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/HostedZoneTags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Route53::HostedZone" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "HostedZoneConfig": { + "additionalProperties": false, + "description": "A complex type that contains an optional comment about your hosted zone. If you don't want to specify a comment, omit both the ``HostedZoneConfig`` and ``Comment`` elements.", + "properties": { + "Comment": { + "description": "Any comments that you want to include about the hosted zone.", + "maxLength": 256, + "type": "string" + } + }, + "type": "object" + }, + "HostedZoneTag": { + "additionalProperties": false, + "description": "A complex type that contains information about a tag that you want to add or edit for the specified health check or hosted zone.", + "properties": { + "Key": { + "description": "The value of ``Key`` depends on the operation that you want to perform:\n + *Add a tag to a health check or hosted zone*: ``Key`` is the name that you want to give the new tag.\n + *Edit a tag*: ``Key`` is the name of the tag that you want to change the ``Value`` for.\n + *Delete a key*: ``Key`` is the name of the tag you want to remove.\n + *Give a name to a health check*: Edit the default ``Name`` tag. In the Amazon Route 53 console, the list of your health checks includes a *Name* column that lets you see the name that you've given to each health check.", + "maxLength": 128, + "type": "string" + }, + "Value": { + "description": "The value of ``Value`` depends on the operation that you want to perform:\n + *Add a tag to a health check or hosted zone*: ``Value`` is the value that you want to give the new tag.\n + *Edit a tag*: ``Value`` is the new value that you want to assign the tag.", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "QueryLoggingConfig": { + "additionalProperties": false, + "description": "A complex type that contains information about a configuration for DNS query logging.", + "properties": { + "CloudWatchLogsLogGroupArn": { + "description": "The Amazon Resource Name (ARN) of the CloudWatch Logs log group that Amazon Route 53 is publishing logs to.", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::Logs::LogGroup" + }, + "type": "string" + } + }, + "required": [ + "CloudWatchLogsLogGroupArn" + ], + "type": "object" + }, + "VPC": { + "additionalProperties": false, + "description": "*Private hosted zones only:* A complex type that contains information about an Amazon VPC. Route 53 Resolver uses the records in the private hosted zone to route traffic in that VPC. \n For public hosted zones, omit ``VPCs``, ``VPCId``, and ``VPCRegion``.", + "properties": { + "VPCId": { + "description": "*Private hosted zones only:* The ID of an Amazon VPC.\n For public hosted zones, omit ``VPCs``, ``VPCId``, and ``VPCRegion``.", + "relationshipRef": { + "propertyPath": "/properties/VpcId", + "typeName": "AWS::EC2::VPC" + }, + "type": "string" + }, + "VPCRegion": { + "description": "*Private hosted zones only:* The region that an Amazon VPC was created in.\n For public hosted zones, omit ``VPCs``, ``VPCId``, and ``VPCRegion``.", + "type": "string" + } + }, + "required": [ + "VPCId", + "VPCRegion" + ], + "type": "object" + } + }, + "description": "Creates a new public or private hosted zone. You create records in a public hosted zone to define how you want to route traffic on the internet for a domain, such as example.com, and its subdomains (apex.example.com, acme.example.com). You create records in a private hosted zone to define how you want to route traffic for a domain and its subdomains within one or more Amazon Virtual Private Clouds (Amazon VPCs). \n You can't convert a public hosted zone to a private hosted zone or vice versa. Instead, you must create a new hosted zone with the same name and create new resource record sets.\n For more information about charges for hosted zones, see [Amazon Route 53 Pricing](https://docs.aws.amazon.com/route53/pricing/).\n Note the following:\n + You can't create a hosted zone for a top-level domain (TLD) such as .com.\n + If your domain is registered with a registrar other than Route 53, you must update the name servers with your registrar to make Route 53 the DNS service for the domain. For more information, see [Migrating DNS Service for an Existing Domain to Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html) in the *Amazon Route 53 Developer Guide*. \n \n When you submit a ``CreateHostedZone`` request, the initial status of the hosted zone is ``PENDING``. For public hosted zones, this means that the NS and SOA records are not yet available on all Route 53 DNS servers. When the NS and SOA records are available, the status of the zone changes to ``INSYNC``.\n The ``CreateHostedZone`` request requires the caller to have an ``ec2:DescribeVpcs`` permission.\n When creating private hosted zones, the Amazon VPC must belong to the same partition where the hosted zone is created. A partition is a group of AWS-Regions. Each AWS-account is scoped to one partition.\n The following are the supported partitions:\n + ``aws`` - AWS-Regions \n + ``aws-cn`` - China Regions\n + ``aws-us-gov`` - govcloud-us-region \n \n For more information, see [Access Management](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the *General Reference*.", + "handlers": { + "create": { + "permissions": [ + "route53:CreateHostedZone", + "route53:CreateQueryLoggingConfig", + "route53:ChangeTagsForResource", + "route53:GetChange", + "route53:AssociateVPCWithHostedZone", + "ec2:DescribeVpcs" + ] + }, + "delete": { + "permissions": [ + "route53:DeleteHostedZone", + "route53:DeleteQueryLoggingConfig", + "route53:ListQueryLoggingConfigs", + "route53:GetChange" + ] + }, + "list": { + "permissions": [ + "route53:GetHostedZone", + "route53:ListHostedZones", + "route53:ListQueryLoggingConfigs", + "route53:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "route53:GetHostedZone", + "route53:ListTagsForResource", + "route53:ListQueryLoggingConfigs" + ] + }, + "update": { + "permissions": [ + "route53:GetChange", + "route53:GetHostedZone", + "route53:ListTagsForResource", + "route53:ListQueryLoggingConfigs", + "route53:UpdateHostedZoneComment", + "route53:ChangeTagsForResource", + "route53:AssociateVPCWithHostedZone", + "route53:DisassociateVPCFromHostedZone", + "route53:CreateQueryLoggingConfig", + "route53:DeleteQueryLoggingConfig", + "ec2:DescribeVpcs" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "HostedZoneConfig": { + "$ref": "#/definitions/HostedZoneConfig", + "description": "A complex type that contains an optional comment.\n If you don't want to specify a comment, omit the ``HostedZoneConfig`` and ``Comment`` elements." + }, + "HostedZoneTags": { + "description": "Adds, edits, or deletes tags for a health check or a hosted zone.\n For information about using tags for cost allocation, see [Using Cost Allocation Tags](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html) in the *User Guide*.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/HostedZoneTag" + }, + "type": "array", + "uniqueItems": true + }, + "Id": { + "description": "", + "type": "string" + }, + "Name": { + "description": "The name of the domain. Specify a fully qualified domain name, for example, *www.example.com*. The trailing dot is optional; Amazon Route 53 assumes that the domain name is fully qualified. This means that Route 53 treats *www.example.com* (without a trailing dot) and *www.example.com.* (with a trailing dot) as identical.\n If you're creating a public hosted zone, this is the name you have registered with your DNS registrar. If your domain name is registered with a registrar other than Route 53, change the name servers for your domain to the set of ``NameServers`` that are returned by the ``Fn::GetAtt`` intrinsic function.", + "maxLength": 1024, + "type": "string" + }, + "NameServers": { + "description": "", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "QueryLoggingConfig": { + "$ref": "#/definitions/QueryLoggingConfig", + "description": "Creates a configuration for DNS query logging. After you create a query logging configuration, Amazon Route 53 begins to publish log data to an Amazon CloudWatch Logs log group.\n DNS query logs contain information about the queries that Route 53 receives for a specified public hosted zone, such as the following:\n + Route 53 edge location that responded to the DNS query\n + Domain or subdomain that was requested\n + DNS record type, such as A or AAAA\n + DNS response code, such as ``NoError`` or ``ServFail`` \n \n + Log Group and Resource Policy Before you create a query logging configuration, perform the following operations. If you create a query logging configuration using the Route 53 console, Route 53 performs these operations automatically. Create a CloudWatch Logs log group, and make note of the ARN, which you specify when you create a query logging configuration. Note the following: You must create the log group in the us-east-1 region. You must use the same to create the log group and the hosted zone that you want to configure query logging for. When you create log groups for query logging, we recommend that you use a consistent prefix, for example: /aws/route53/hosted zone name In the next step, you'll create a resource policy, which controls access to one or more log groups and the associated resources, such as Route 53 hosted zones. There's a limit on the number of resource policies that you can create, so we recommend that you use a consistent prefix so you can use the same resource policy for all the log groups that you create for query logging. Create a CloudWatch Logs resource policy, and give it the permissions that Route 53 needs to create log streams and to send query logs to log streams. You must create the CloudWatch Logs resource policy in the us-east-1 region. For the value of Resource, specify the ARN for the log group that you created in the previous step. To use the same resource policy for all the CloudWatch Logs log groups that you created for query logging configurations, replace the hosted zone name with *, for example: arn:aws:logs:us-east-1:123412341234:log-group:/aws/route53/* To avoid the confused deputy problem, a security issue where an entity without a permission for an action can coerce a more-privileged entity to perform it, you can optionally limit the permissions that a service has to a resource in a resource-based policy by supplying the following values: For aws:SourceArn, supply the hosted zone ARN used in creating the query logging configuration. For example, aws:SourceArn: arn:aws:route53:::hostedzone/hosted zone ID. For aws:SourceAccount, supply the account ID for the account that creates the query logging configuration. For example, aws:SourceAccount:111111111111. For more information, see The confused deputy problem in the IAM User Guide. You can't use the CloudWatch console to create or edit a resource policy. You must use the CloudWatch API, one of the SDKs, or the . + Log Streams and Edge Locations When Route 53 finishes creating the configuration for DNS query logging, it does the following: Creates a log stream for an edge location the first time that the edge location responds to DNS queries for the specified hosted zone. That log stream is used to log all queries that Route 53 responds to for that edge location. Begins to send query logs to the applicable log stream. The name of each log stream is in the following format: hosted zone ID/edge location code The edge location code is a three-letter code and an arbitrarily assigned number, for example, DFW3. The three-letter code typically corresponds with the International Air Transport Association airport code for an airport near the edge location. (These abbreviations might change in the future.) For a list of edge locations, see \"The Route 53 Global Network\" on the Route 53 Product Details page. + Queries That Are Logged Query logs contain only the queries that DNS resolvers forward to Route 53. If a DNS resolver has already cached the response to a query (such as the IP address for a load balancer for example.com), the resolver will continue to return the cached response. It doesn't forward another query to Route 53 until the TTL for the corresponding resource record set expires. Depending on how many DNS queries are submitted for a resource record set, and depending on the TTL for that resource record set, query logs might contain information about only one query out of every several thousand queries that are submitted to DNS. For more information about how DNS works, see Routing Internet Traffic to Your Website or Web Application in the Amazon Route 53 Developer Guide. + Log File Format For a list of the values in each query log and the format of each value, see Logging DNS Queries in the Amazon Route 53 Developer Guide. + Pricing For information about charges for query logs, see Amazon CloudWatch Pricing. + How to Stop Logging If you want Route 53 to stop sending query logs to CloudWatch Logs, delete the query logging configuration. For more information, see DeleteQueryLoggingConfig." + }, + "VPCs": { + "description": "*Private hosted zones:* A complex type that contains information about the VPCs that are associated with the specified hosted zone.\n For public hosted zones, omit ``VPCs``, ``VPCId``, and ``VPCRegion``.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VPC" + }, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": { + "/properties/Name": "Name $OR $join([Name, \".\"])" + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/NameServers" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "route53:ChangeTagsForResource", + "route53:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/HostedZoneTags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Route53::HostedZone" +} diff --git a/src/schema/aws-route53-keysigningkey.json b/src/schema/aws-route53-keysigningkey.json index c956f626..5d1457c0 100644 --- a/src/schema/aws-route53-keysigningkey.json +++ b/src/schema/aws-route53-keysigningkey.json @@ -1,92 +1,92 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/HostedZoneId", - "/properties/Name", - "/properties/KeyManagementServiceArn" - ], - "description": "Represents a key signing key (KSK) associated with a hosted zone. You can only have two KSKs per hosted zone.", - "handlers": { - "create": { - "permissions": [ - "route53:CreateKeySigningKey", - "kms:DescribeKey", - "kms:GetPublicKey", - "kms:Sign", - "kms:CreateGrant" - ] - }, - "delete": { - "permissions": [ - "route53:DeactivateKeySigningKey", - "route53:DeleteKeySigningKey", - "kms:DescribeKey", - "kms:GetPublicKey", - "kms:Sign", - "kms:CreateGrant" - ] - }, - "list": { - "permissions": [ - "route53:GetDNSSEC", - "route53:ListHostedZones" - ] - }, - "read": { - "permissions": [ - "route53:GetDNSSEC" - ] - }, - "update": { - "permissions": [ - "route53:GetDNSSEC", - "route53:ActivateKeySigningKey", - "route53:DeactivateKeySigningKey", - "kms:DescribeKey", - "kms:GetPublicKey", - "kms:Sign", - "kms:CreateGrant" - ] - } - }, - "primaryIdentifier": [ - "/properties/HostedZoneId", - "/properties/Name" - ], - "properties": { - "HostedZoneId": { - "description": "The unique string (ID) used to identify a hosted zone.", - "pattern": "^[A-Z0-9]{1,32}$", - "type": "string" - }, - "KeyManagementServiceArn": { - "description": "The Amazon resource name (ARN) for a customer managed key (CMK) in AWS Key Management Service (KMS). The KeyManagementServiceArn must be unique for each key signing key (KSK) in a single hosted zone.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "An alphanumeric string used to identify a key signing key (KSK). Name must be unique for each key signing key in the same hosted zone.", - "pattern": "^[a-zA-Z0-9_]{3,128}$", - "type": "string" - }, - "Status": { - "description": "A string specifying the initial status of the key signing key (KSK). You can set the value to ACTIVE or INACTIVE.", - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "type": "string" - } - }, - "required": [ - "Status", - "HostedZoneId", - "Name", - "KeyManagementServiceArn" - ], - "tagging": { - "taggable": false - }, - "typeName": "AWS::Route53::KeySigningKey" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/HostedZoneId", + "/properties/Name", + "/properties/KeyManagementServiceArn" + ], + "description": "Represents a key signing key (KSK) associated with a hosted zone. You can only have two KSKs per hosted zone.", + "handlers": { + "create": { + "permissions": [ + "route53:CreateKeySigningKey", + "kms:DescribeKey", + "kms:GetPublicKey", + "kms:Sign", + "kms:CreateGrant" + ] + }, + "delete": { + "permissions": [ + "route53:DeactivateKeySigningKey", + "route53:DeleteKeySigningKey", + "kms:DescribeKey", + "kms:GetPublicKey", + "kms:Sign", + "kms:CreateGrant" + ] + }, + "list": { + "permissions": [ + "route53:GetDNSSEC", + "route53:ListHostedZones" + ] + }, + "read": { + "permissions": [ + "route53:GetDNSSEC" + ] + }, + "update": { + "permissions": [ + "route53:GetDNSSEC", + "route53:ActivateKeySigningKey", + "route53:DeactivateKeySigningKey", + "kms:DescribeKey", + "kms:GetPublicKey", + "kms:Sign", + "kms:CreateGrant" + ] + } + }, + "primaryIdentifier": [ + "/properties/HostedZoneId", + "/properties/Name" + ], + "properties": { + "HostedZoneId": { + "description": "The unique string (ID) used to identify a hosted zone.", + "pattern": "^[A-Z0-9]{1,32}$", + "type": "string" + }, + "KeyManagementServiceArn": { + "description": "The Amazon resource name (ARN) for a customer managed key (CMK) in AWS Key Management Service (KMS). The KeyManagementServiceArn must be unique for each key signing key (KSK) in a single hosted zone.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "An alphanumeric string used to identify a key signing key (KSK). Name must be unique for each key signing key in the same hosted zone.", + "pattern": "^[a-zA-Z0-9_]{3,128}$", + "type": "string" + }, + "Status": { + "description": "A string specifying the initial status of the key signing key (KSK). You can set the value to ACTIVE or INACTIVE.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "type": "string" + } + }, + "required": [ + "Status", + "HostedZoneId", + "Name", + "KeyManagementServiceArn" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::Route53::KeySigningKey" +} diff --git a/src/schema/aws-route53-recordset.json b/src/schema/aws-route53-recordset.json index a492cf83..6216dc49 100644 --- a/src/schema/aws-route53-recordset.json +++ b/src/schema/aws-route53-recordset.json @@ -1,166 +1,166 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/HostedZoneName", - "/properties/Name", - "/properties/HostedZoneId" - ], - "definitions": { - "AliasTarget": { - "additionalProperties": false, - "properties": { - "DNSName": { - "type": "string" - }, - "EvaluateTargetHealth": { - "type": "boolean" - }, - "HostedZoneId": { - "type": "string" - } - }, - "required": [ - "HostedZoneId", - "DNSName" - ], - "type": "object" - }, - "CidrRoutingConfig": { - "additionalProperties": false, - "properties": { - "CollectionId": { - "type": "string" - }, - "LocationName": { - "type": "string" - } - }, - "required": [ - "CollectionId", - "LocationName" - ], - "type": "object" - }, - "Coordinates": { - "additionalProperties": false, - "properties": { - "Latitude": { - "type": "string" - }, - "Longitude": { - "type": "string" - } - }, - "required": [ - "Latitude", - "Longitude" - ], - "type": "object" - }, - "GeoLocation": { - "additionalProperties": false, - "properties": { - "ContinentCode": { - "type": "string" - }, - "CountryCode": { - "type": "string" - }, - "SubdivisionCode": { - "type": "string" - } - }, - "type": "object" - }, - "GeoProximityLocation": { - "additionalProperties": false, - "properties": { - "AWSRegion": { - "type": "string" - }, - "Bias": { - "type": "integer" - }, - "Coordinates": { - "$ref": "#/definitions/Coordinates" - }, - "LocalZoneGroup": { - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Route53::RecordSet", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AliasTarget": { - "$ref": "#/definitions/AliasTarget" - }, - "CidrRoutingConfig": { - "$ref": "#/definitions/CidrRoutingConfig" - }, - "Comment": { - "type": "string" - }, - "Failover": { - "type": "string" - }, - "GeoLocation": { - "$ref": "#/definitions/GeoLocation" - }, - "GeoProximityLocation": { - "$ref": "#/definitions/GeoProximityLocation" - }, - "HealthCheckId": { - "type": "string" - }, - "HostedZoneId": { - "type": "string" - }, - "HostedZoneName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "MultiValueAnswer": { - "type": "boolean" - }, - "Name": { - "type": "string" - }, - "Region": { - "type": "string" - }, - "ResourceRecords": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SetIdentifier": { - "type": "string" - }, - "TTL": { - "type": "string" - }, - "Type": { - "type": "string" - }, - "Weight": { - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Type", - "Name" - ], - "typeName": "AWS::Route53::RecordSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/HostedZoneName", + "/properties/Name", + "/properties/HostedZoneId" + ], + "definitions": { + "AliasTarget": { + "additionalProperties": false, + "properties": { + "DNSName": { + "type": "string" + }, + "EvaluateTargetHealth": { + "type": "boolean" + }, + "HostedZoneId": { + "type": "string" + } + }, + "required": [ + "HostedZoneId", + "DNSName" + ], + "type": "object" + }, + "CidrRoutingConfig": { + "additionalProperties": false, + "properties": { + "CollectionId": { + "type": "string" + }, + "LocationName": { + "type": "string" + } + }, + "required": [ + "CollectionId", + "LocationName" + ], + "type": "object" + }, + "Coordinates": { + "additionalProperties": false, + "properties": { + "Latitude": { + "type": "string" + }, + "Longitude": { + "type": "string" + } + }, + "required": [ + "Latitude", + "Longitude" + ], + "type": "object" + }, + "GeoLocation": { + "additionalProperties": false, + "properties": { + "ContinentCode": { + "type": "string" + }, + "CountryCode": { + "type": "string" + }, + "SubdivisionCode": { + "type": "string" + } + }, + "type": "object" + }, + "GeoProximityLocation": { + "additionalProperties": false, + "properties": { + "AWSRegion": { + "type": "string" + }, + "Bias": { + "type": "integer" + }, + "Coordinates": { + "$ref": "#/definitions/Coordinates" + }, + "LocalZoneGroup": { + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Route53::RecordSet", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AliasTarget": { + "$ref": "#/definitions/AliasTarget" + }, + "CidrRoutingConfig": { + "$ref": "#/definitions/CidrRoutingConfig" + }, + "Comment": { + "type": "string" + }, + "Failover": { + "type": "string" + }, + "GeoLocation": { + "$ref": "#/definitions/GeoLocation" + }, + "GeoProximityLocation": { + "$ref": "#/definitions/GeoProximityLocation" + }, + "HealthCheckId": { + "type": "string" + }, + "HostedZoneId": { + "type": "string" + }, + "HostedZoneName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "MultiValueAnswer": { + "type": "boolean" + }, + "Name": { + "type": "string" + }, + "Region": { + "type": "string" + }, + "ResourceRecords": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SetIdentifier": { + "type": "string" + }, + "TTL": { + "type": "string" + }, + "Type": { + "type": "string" + }, + "Weight": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Type", + "Name" + ], + "typeName": "AWS::Route53::RecordSet" +} diff --git a/src/schema/aws-route53-recordsetgroup.json b/src/schema/aws-route53-recordsetgroup.json index 1ad1f001..4c7865e4 100644 --- a/src/schema/aws-route53-recordsetgroup.json +++ b/src/schema/aws-route53-recordsetgroup.json @@ -1,184 +1,184 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/HostedZoneName", - "/properties/HostedZoneId" - ], - "definitions": { - "AliasTarget": { - "additionalProperties": false, - "properties": { - "DNSName": { - "type": "string" - }, - "EvaluateTargetHealth": { - "type": "boolean" - }, - "HostedZoneId": { - "type": "string" - } - }, - "required": [ - "HostedZoneId", - "DNSName" - ], - "type": "object" - }, - "CidrRoutingConfig": { - "additionalProperties": false, - "properties": { - "CollectionId": { - "type": "string" - }, - "LocationName": { - "type": "string" - } - }, - "required": [ - "CollectionId", - "LocationName" - ], - "type": "object" - }, - "Coordinates": { - "additionalProperties": false, - "properties": { - "Latitude": { - "type": "string" - }, - "Longitude": { - "type": "string" - } - }, - "required": [ - "Latitude", - "Longitude" - ], - "type": "object" - }, - "GeoLocation": { - "additionalProperties": false, - "properties": { - "ContinentCode": { - "type": "string" - }, - "CountryCode": { - "type": "string" - }, - "SubdivisionCode": { - "type": "string" - } - }, - "type": "object" - }, - "GeoProximityLocation": { - "additionalProperties": false, - "properties": { - "AWSRegion": { - "type": "string" - }, - "Bias": { - "type": "integer" - }, - "Coordinates": { - "$ref": "#/definitions/Coordinates" - }, - "LocalZoneGroup": { - "type": "string" - } - }, - "type": "object" - }, - "RecordSet": { - "additionalProperties": false, - "properties": { - "AliasTarget": { - "$ref": "#/definitions/AliasTarget" - }, - "CidrRoutingConfig": { - "$ref": "#/definitions/CidrRoutingConfig" - }, - "Failover": { - "type": "string" - }, - "GeoLocation": { - "$ref": "#/definitions/GeoLocation" - }, - "GeoProximityLocation": { - "$ref": "#/definitions/GeoProximityLocation" - }, - "HealthCheckId": { - "type": "string" - }, - "HostedZoneId": { - "type": "string" - }, - "HostedZoneName": { - "type": "string" - }, - "MultiValueAnswer": { - "type": "boolean" - }, - "Name": { - "type": "string" - }, - "Region": { - "type": "string" - }, - "ResourceRecords": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "SetIdentifier": { - "type": "string" - }, - "TTL": { - "type": "string" - }, - "Type": { - "type": "string" - }, - "Weight": { - "type": "integer" - } - }, - "required": [ - "Type", - "Name" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Route53::RecordSetGroup", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Comment": { - "type": "string" - }, - "HostedZoneId": { - "type": "string" - }, - "HostedZoneName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "RecordSets": { - "items": { - "$ref": "#/definitions/RecordSet" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "typeName": "AWS::Route53::RecordSetGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/HostedZoneName", + "/properties/HostedZoneId" + ], + "definitions": { + "AliasTarget": { + "additionalProperties": false, + "properties": { + "DNSName": { + "type": "string" + }, + "EvaluateTargetHealth": { + "type": "boolean" + }, + "HostedZoneId": { + "type": "string" + } + }, + "required": [ + "HostedZoneId", + "DNSName" + ], + "type": "object" + }, + "CidrRoutingConfig": { + "additionalProperties": false, + "properties": { + "CollectionId": { + "type": "string" + }, + "LocationName": { + "type": "string" + } + }, + "required": [ + "CollectionId", + "LocationName" + ], + "type": "object" + }, + "Coordinates": { + "additionalProperties": false, + "properties": { + "Latitude": { + "type": "string" + }, + "Longitude": { + "type": "string" + } + }, + "required": [ + "Latitude", + "Longitude" + ], + "type": "object" + }, + "GeoLocation": { + "additionalProperties": false, + "properties": { + "ContinentCode": { + "type": "string" + }, + "CountryCode": { + "type": "string" + }, + "SubdivisionCode": { + "type": "string" + } + }, + "type": "object" + }, + "GeoProximityLocation": { + "additionalProperties": false, + "properties": { + "AWSRegion": { + "type": "string" + }, + "Bias": { + "type": "integer" + }, + "Coordinates": { + "$ref": "#/definitions/Coordinates" + }, + "LocalZoneGroup": { + "type": "string" + } + }, + "type": "object" + }, + "RecordSet": { + "additionalProperties": false, + "properties": { + "AliasTarget": { + "$ref": "#/definitions/AliasTarget" + }, + "CidrRoutingConfig": { + "$ref": "#/definitions/CidrRoutingConfig" + }, + "Failover": { + "type": "string" + }, + "GeoLocation": { + "$ref": "#/definitions/GeoLocation" + }, + "GeoProximityLocation": { + "$ref": "#/definitions/GeoProximityLocation" + }, + "HealthCheckId": { + "type": "string" + }, + "HostedZoneId": { + "type": "string" + }, + "HostedZoneName": { + "type": "string" + }, + "MultiValueAnswer": { + "type": "boolean" + }, + "Name": { + "type": "string" + }, + "Region": { + "type": "string" + }, + "ResourceRecords": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SetIdentifier": { + "type": "string" + }, + "TTL": { + "type": "string" + }, + "Type": { + "type": "string" + }, + "Weight": { + "type": "integer" + } + }, + "required": [ + "Type", + "Name" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Route53::RecordSetGroup", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Comment": { + "type": "string" + }, + "HostedZoneId": { + "type": "string" + }, + "HostedZoneName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "RecordSets": { + "items": { + "$ref": "#/definitions/RecordSet" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::Route53::RecordSetGroup" +} diff --git a/src/schema/aws-route53profiles-profile.json b/src/schema/aws-route53profiles-profile.json index 6fe9d4dc..07195808 100644 --- a/src/schema/aws-route53profiles-profile.json +++ b/src/schema/aws-route53profiles-profile.json @@ -1,123 +1,123 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Route53Profiles::Profile", - "handlers": { - "create": { - "permissions": [ - "route53profiles:CreateProfile", - "route53profiles:GetProfile", - "route53profiles:TagResource", - "route53profiles:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "route53profiles:DeleteProfile", - "route53profiles:GetProfile", - "route53profiles:UntagResource", - "route53profiles:ListTagsForResource" - ] - }, - "list": { - "permissions": [ - "route53profiles:ListProfiles", - "route53profiles:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "route53profiles:GetProfile", - "route53profiles:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "route53profiles:GetProfile", - "route53profiles:TagResource", - "route53profiles:UntagResource", - "route53profiles:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the resolver profile.", - "type": "string" - }, - "ClientToken": { - "description": "The id of the creator request", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Id": { - "description": "The ID of the profile.", - "type": "string" - }, - "Name": { - "description": "The name of the profile.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id", - "/properties/ClientToken" - ], - "required": [ - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "route53profiles:TagResource", - "route53profiles:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Route53Profiles::Profile" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Route53Profiles::Profile", + "handlers": { + "create": { + "permissions": [ + "route53profiles:CreateProfile", + "route53profiles:GetProfile", + "route53profiles:TagResource", + "route53profiles:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "route53profiles:DeleteProfile", + "route53profiles:GetProfile", + "route53profiles:UntagResource", + "route53profiles:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "route53profiles:ListProfiles", + "route53profiles:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "route53profiles:GetProfile", + "route53profiles:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "route53profiles:GetProfile", + "route53profiles:TagResource", + "route53profiles:UntagResource", + "route53profiles:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the resolver profile.", + "type": "string" + }, + "ClientToken": { + "description": "The id of the creator request", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Id": { + "description": "The ID of the profile.", + "type": "string" + }, + "Name": { + "description": "The name of the profile.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/ClientToken" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "route53profiles:TagResource", + "route53profiles:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Route53Profiles::Profile" +} diff --git a/src/schema/aws-route53profiles-profileassociation.json b/src/schema/aws-route53profiles-profileassociation.json index ce1e077f..6c276bf2 100644 --- a/src/schema/aws-route53profiles-profileassociation.json +++ b/src/schema/aws-route53profiles-profileassociation.json @@ -1,130 +1,130 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/ResourceId", - "/properties/ProfileId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Route53Profiles::ProfileAssociation", - "handlers": { - "create": { - "permissions": [ - "route53profiles:AssociateProfile", - "route53profiles:GetProfileAssociation", - "ec2:DescribeVpcs", - "route53profiles:TagResource", - "route53profiles:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "route53profiles:DisassociateProfile", - "route53profiles:GetProfileAssociation", - "route53profiles:UntagResource", - "route53profiles:ListTagsForResource" - ] - }, - "list": { - "permissions": [ - "route53profiles:ListProfileAssociations", - "route53profiles:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "route53profiles:GetProfileAssociation", - "route53profiles:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "route53profiles:GetProfileAssociation", - "route53profiles:TagResource", - "route53profiles:UntagResource", - "route53profiles:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the profile association.", - "type": "string" - }, - "Id": { - "description": "Primary Identifier for Profile Association", - "type": "string" - }, - "Name": { - "description": "The name of an association between a Profile and a VPC.", - "type": "string" - }, - "ProfileId": { - "description": "The ID of the profile that you associated with the resource that is specified by ResourceId.", - "type": "string" - }, - "ResourceId": { - "description": "The resource that you associated the profile with.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "ResourceId", - "ProfileId", - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "route53profiles:TagResource", - "route53profiles:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Route53Profiles::ProfileAssociation", - "writeOnlyProperties": [ - "/properties/Arn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/ResourceId", + "/properties/ProfileId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Route53Profiles::ProfileAssociation", + "handlers": { + "create": { + "permissions": [ + "route53profiles:AssociateProfile", + "route53profiles:GetProfileAssociation", + "ec2:DescribeVpcs", + "route53profiles:TagResource", + "route53profiles:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "route53profiles:DisassociateProfile", + "route53profiles:GetProfileAssociation", + "route53profiles:UntagResource", + "route53profiles:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "route53profiles:ListProfileAssociations", + "route53profiles:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "route53profiles:GetProfileAssociation", + "route53profiles:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "route53profiles:GetProfileAssociation", + "route53profiles:TagResource", + "route53profiles:UntagResource", + "route53profiles:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the profile association.", + "type": "string" + }, + "Id": { + "description": "Primary Identifier for Profile Association", + "type": "string" + }, + "Name": { + "description": "The name of an association between a Profile and a VPC.", + "type": "string" + }, + "ProfileId": { + "description": "The ID of the profile that you associated with the resource that is specified by ResourceId.", + "type": "string" + }, + "ResourceId": { + "description": "The resource that you associated the profile with.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "ResourceId", + "ProfileId", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "route53profiles:TagResource", + "route53profiles:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Route53Profiles::ProfileAssociation", + "writeOnlyProperties": [ + "/properties/Arn" + ] +} diff --git a/src/schema/aws-route53profiles-profileresourceassociation.json b/src/schema/aws-route53profiles-profileresourceassociation.json index 87f023a3..99c11261 100644 --- a/src/schema/aws-route53profiles-profileresourceassociation.json +++ b/src/schema/aws-route53profiles-profileresourceassociation.json @@ -1,106 +1,105 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProfileId", - "/properties/Name", - "/properties/ResourceArn" - ], - "description": "Resource Type definition for AWS::Route53Profiles::ProfileResourceAssociation", - "handlers": { - "create": { - "permissions": [ - "route53profiles:AssociateResourceToProfile", - "route53profiles:GetProfileResourceAssociation", - "route53resolver:*", - "route53:*" - ] - }, - "delete": { - "permissions": [ - "route53profiles:DisassociateResourceFromProfile", - "route53profiles:GetProfileResourceAssociation", - "route53resolver:*", - "route53:*" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ProfileId": { - "$ref": "resource-schema.json#/properties/ProfileId" - } - }, - "required": [ - "ProfileId" - ] - }, - "permissions": [ - "route53profiles:ListProfileResourceAssociations", - "route53resolver:*", - "route53:*" - ] - }, - "read": { - "permissions": [ - "route53profiles:GetProfileResourceAssociation", - "route53resolver:*", - "route53:*" - ] - }, - "update": { - "permissions": [ - "route53profiles:UpdateProfileResourceAssociation", - "route53profiles:GetProfileResourceAssociation", - "route53resolver:*", - "route53:*" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "description": "Primary Identifier for Profile Resource Association", - "type": "string" - }, - "Name": { - "description": "The name of an association between the Profile and resource.", - "type": "string" - }, - "ProfileId": { - "description": "The ID of the profile that you associated the resource to that is specified by ResourceArn.", - "type": "string" - }, - "ResourceArn": { - "description": "The arn of the resource that you associated to the Profile.", - "type": "string" - }, - "ResourceProperties": { - "description": "A JSON-formatted string with key-value pairs specifying the properties of the associated resource.", - "type": "string" - }, - "ResourceType": { - "description": "The type of the resource associated to the Profile.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ResourceType" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "ProfileId", - "Name", - "ResourceArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53profiles", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Route53Profiles::ProfileResourceAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ProfileId", + "/properties/Name", + "/properties/ResourceArn" + ], + "description": "Resource Type definition for AWS::Route53Profiles::ProfileResourceAssociation", + "handlers": { + "create": { + "permissions": [ + "route53profiles:AssociateResourceToProfile", + "route53profiles:GetProfileResourceAssociation", + "route53resolver:*", + "route53:*" + ] + }, + "delete": { + "permissions": [ + "route53profiles:DisassociateResourceFromProfile", + "route53profiles:GetProfileResourceAssociation", + "route53resolver:*", + "route53:*" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ProfileId": { + "$ref": "resource-schema.json#/properties/ProfileId" + } + }, + "required": [ + "ProfileId" + ] + }, + "permissions": [ + "route53profiles:ListProfileResourceAssociations", + "route53resolver:*", + "route53:*" + ] + }, + "read": { + "permissions": [ + "route53profiles:GetProfileResourceAssociation", + "route53resolver:*", + "route53:*" + ] + }, + "update": { + "permissions": [ + "route53profiles:UpdateProfileResourceAssociation", + "route53profiles:GetProfileResourceAssociation", + "route53resolver:*", + "route53:*" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "Primary Identifier for Profile Resource Association", + "type": "string" + }, + "Name": { + "description": "The name of an association between the Profile and resource.", + "type": "string" + }, + "ProfileId": { + "description": "The ID of the profile that you associated the resource to that is specified by ResourceArn.", + "type": "string" + }, + "ResourceArn": { + "description": "The arn of the resource that you associated to the Profile.", + "type": "string" + }, + "ResourceProperties": { + "description": "A JSON-formatted string with key-value pairs specifying the properties of the associated resource.", + "type": "string" + }, + "ResourceType": { + "description": "The type of the resource associated to the Profile.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/ResourceType" + ], + "required": [ + "ProfileId", + "Name", + "ResourceArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53profiles", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Route53Profiles::ProfileResourceAssociation" +} diff --git a/src/schema/aws-route53recoverycontrol-cluster.json b/src/schema/aws-route53recoverycontrol-cluster.json index 8a3c9833..ad2e9a38 100644 --- a/src/schema/aws-route53recoverycontrol-cluster.json +++ b/src/schema/aws-route53recoverycontrol-cluster.json @@ -1,136 +1,153 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Tags" - ], - "definitions": { - "ClusterEndpoint": { - "additionalProperties": false, - "properties": { - "Endpoint": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Region": { - "maxLength": 32, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "AWS Route53 Recovery Control Cluster resource schema", - "handlers": { - "create": { - "permissions": [ - "route53-recovery-control-config:CreateCluster", - "route53-recovery-control-config:DescribeCluster", - "route53-recovery-control-config:ListTagsForResource", - "route53-recovery-control-config:TagResource" - ] - }, - "delete": { - "permissions": [ - "route53-recovery-control-config:DescribeCluster", - "route53-recovery-control-config:DeleteCluster" - ] - }, - "list": { - "permissions": [ - "route53-recovery-control-config:ListClusters" - ] - }, - "read": { - "permissions": [ - "route53-recovery-control-config:DescribeCluster", - "route53-recovery-control-config:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ClusterArn" - ], - "properties": { - "ClusterArn": { - "description": "The Amazon Resource Name (ARN) of the cluster.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^[A-Za-z0-9:\\/_-]*$", - "type": "string" - }, - "ClusterEndpoints": { - "description": "Endpoints for the cluster.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ClusterEndpoint" - }, - "type": "array" - }, - "Name": { - "description": "Name of a Cluster. You can use any non-white space character in the name", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Status": { - "description": "Deployment status of a resource. Status can be one of the following: PENDING, DEPLOYED, PENDING_DELETION.", - "enum": [ - "PENDING", - "DEPLOYED", - "PENDING_DELETION" - ], - "type": "string" - }, - "Tags": { - "description": "A collection of tags associated with a resource", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag", - "maxItems": 20 - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ClusterArn", - "/properties/ClusterEndpoints", - "/properties/Status" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53-recovery-control.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::Route53RecoveryControl::Cluster", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Tags" + ], + "definitions": { + "ClusterEndpoint": { + "additionalProperties": false, + "properties": { + "Endpoint": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Region": { + "maxLength": 32, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "AWS Route53 Recovery Control Cluster resource schema", + "handlers": { + "create": { + "permissions": [ + "route53-recovery-control-config:CreateCluster", + "route53-recovery-control-config:DescribeCluster", + "route53-recovery-control-config:ListTagsForResource", + "route53-recovery-control-config:TagResource" + ] + }, + "delete": { + "permissions": [ + "route53-recovery-control-config:DescribeCluster", + "route53-recovery-control-config:DeleteCluster" + ] + }, + "list": { + "permissions": [ + "route53-recovery-control-config:ListClusters" + ] + }, + "read": { + "permissions": [ + "route53-recovery-control-config:DescribeCluster", + "route53-recovery-control-config:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "route53-recovery-control-config:DescribeCluster", + "route53-recovery-control-config:ListTagsForResource", + "route53-recovery-control-config:UpdateCluster" + ] + } + }, + "primaryIdentifier": [ + "/properties/ClusterArn" + ], + "properties": { + "ClusterArn": { + "description": "The Amazon Resource Name (ARN) of the cluster.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[A-Za-z0-9:\\/_-]*$", + "type": "string" + }, + "ClusterEndpoints": { + "description": "Endpoints for the cluster.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ClusterEndpoint" + }, + "type": "array" + }, + "Name": { + "description": "Name of a Cluster. You can use any non-white space character in the name", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "NetworkType": { + "description": "Cluster supports IPv4 endpoints and Dual-stack IPv4 and IPv6 endpoints. NetworkType can be IPV4 or DUALSTACK.", + "enum": [ + "IPV4", + "DUALSTACK" + ], + "type": "string" + }, + "Status": { + "description": "Deployment status of a resource. Status can be one of the following: PENDING, DEPLOYED, PENDING_DELETION.", + "enum": [ + "PENDING", + "DEPLOYED", + "PENDING_DELETION" + ], + "type": "string" + }, + "Tags": { + "description": "A collection of tags associated with a resource", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag", + "maxItems": 20 + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ClusterArn", + "/properties/ClusterEndpoints", + "/properties/Status" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53-recovery-control.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "route53-recovery-control-config:TagResource", + "route53-recovery-control-config:UntagResource", + "route53-recovery-control-config:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Route53RecoveryControl::Cluster" +} diff --git a/src/schema/aws-route53recoverycontrol-controlpanel.json b/src/schema/aws-route53recoverycontrol-controlpanel.json index 619bd6ed..7ef5332c 100644 --- a/src/schema/aws-route53recoverycontrol-controlpanel.json +++ b/src/schema/aws-route53recoverycontrol-controlpanel.json @@ -1,134 +1,136 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClusterArn", - "/properties/Tags" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "AWS Route53 Recovery Control Control Panel resource schema .", - "handlers": { - "create": { - "permissions": [ - "route53-recovery-control-config:CreateControlPanel", - "route53-recovery-control-config:DescribeCluster", - "route53-recovery-control-config:DescribeControlPanel", - "route53-recovery-control-config:ListTagsForResource", - "route53-recovery-control-config:TagResource" - ] - }, - "delete": { - "permissions": [ - "route53-recovery-control-config:DeleteControlPanel", - "route53-recovery-control-config:DescribeControlPanel" - ] - }, - "list": { - "permissions": [ - "route53-recovery-control-config:ListControlPanels" - ] - }, - "read": { - "permissions": [ - "route53-recovery-control-config:DescribeControlPanel", - "route53-recovery-control-config:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "route53-recovery-control-config:UpdateControlPanel", - "route53-recovery-control-config:DescribeControlPanel", - "route53-recovery-control-config:ListTagsForResource", - "route53-recovery-control-config:TagResource", - "route53-recovery-control-config:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ControlPanelArn" - ], - "properties": { - "ClusterArn": { - "description": "Cluster to associate with the Control Panel", - "pattern": "^[A-Za-z0-9:\\/_-]*$", - "type": "string" - }, - "ControlPanelArn": { - "description": "The Amazon Resource Name (ARN) of the cluster.", - "pattern": "^[A-Za-z0-9:\\/_-]*$", - "type": "string" - }, - "DefaultControlPanel": { - "description": "A flag that Amazon Route 53 Application Recovery Controller sets to true to designate the default control panel for a cluster. When you create a cluster, Amazon Route 53 Application Recovery Controller creates a control panel, and sets this flag for that control panel. If you create a control panel yourself, this flag is set to false.", - "type": "boolean" - }, - "Name": { - "description": "The name of the control panel. You can use any non-white space character in the name.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "RoutingControlCount": { - "description": "Count of associated routing controls", - "type": "integer" - }, - "Status": { - "description": "The deployment status of control panel. Status can be one of the following: PENDING, DEPLOYED, PENDING_DELETION.", - "enum": [ - "PENDING", - "DEPLOYED", - "PENDING_DELETION" - ], - "type": "string" - }, - "Tags": { - "description": "A collection of tags associated with a resource", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag", - "maxItems": 20 - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ControlPanelArn", - "/properties/Status", - "/properties/RoutingControlCount", - "/properties/DefaultControlPanel" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53-recovery-control.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Route53RecoveryControl::ControlPanel", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterArn", + "/properties/Tags" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "AWS Route53 Recovery Control Control Panel resource schema .", + "handlers": { + "create": { + "permissions": [ + "route53-recovery-control-config:CreateControlPanel", + "route53-recovery-control-config:DescribeCluster", + "route53-recovery-control-config:DescribeControlPanel", + "route53-recovery-control-config:ListTagsForResource", + "route53-recovery-control-config:TagResource" + ] + }, + "delete": { + "permissions": [ + "route53-recovery-control-config:DeleteControlPanel", + "route53-recovery-control-config:DescribeControlPanel" + ] + }, + "list": { + "permissions": [ + "route53-recovery-control-config:ListControlPanels" + ] + }, + "read": { + "permissions": [ + "route53-recovery-control-config:DescribeControlPanel", + "route53-recovery-control-config:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "route53-recovery-control-config:UpdateControlPanel", + "route53-recovery-control-config:DescribeControlPanel", + "route53-recovery-control-config:ListTagsForResource", + "route53-recovery-control-config:TagResource", + "route53-recovery-control-config:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ControlPanelArn" + ], + "properties": { + "ClusterArn": { + "description": "Cluster to associate with the Control Panel", + "pattern": "^[A-Za-z0-9:\\/_-]*$", + "type": "string" + }, + "ControlPanelArn": { + "description": "The Amazon Resource Name (ARN) of the cluster.", + "pattern": "^[A-Za-z0-9:\\/_-]*$", + "type": "string" + }, + "DefaultControlPanel": { + "description": "A flag that Amazon Route 53 Application Recovery Controller sets to true to designate the default control panel for a cluster. When you create a cluster, Amazon Route 53 Application Recovery Controller creates a control panel, and sets this flag for that control panel. If you create a control panel yourself, this flag is set to false.", + "type": "boolean" + }, + "Name": { + "description": "The name of the control panel. You can use any non-white space character in the name.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "RoutingControlCount": { + "description": "Count of associated routing controls", + "type": "integer" + }, + "Status": { + "description": "The deployment status of control panel. Status can be one of the following: PENDING, DEPLOYED, PENDING_DELETION.", + "enum": [ + "PENDING", + "DEPLOYED", + "PENDING_DELETION" + ], + "type": "string" + }, + "Tags": { + "description": "A collection of tags associated with a resource", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag", + "maxItems": 20 + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ControlPanelArn", + "/properties/Status", + "/properties/RoutingControlCount", + "/properties/DefaultControlPanel" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53-recovery-control.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "route53-recovery-control-config:TagResource", + "route53-recovery-control-config:UntagResource", + "route53-recovery-control-config:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Route53RecoveryControl::ControlPanel" +} diff --git a/src/schema/aws-route53recoverycontrol-routingcontrol.json b/src/schema/aws-route53recoverycontrol-routingcontrol.json index 1c6443cf..b7107cc4 100644 --- a/src/schema/aws-route53recoverycontrol-routingcontrol.json +++ b/src/schema/aws-route53recoverycontrol-routingcontrol.json @@ -1,102 +1,102 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ControlPanelArn", - "/properties/ClusterArn" - ], - "definitions": {}, - "description": "AWS Route53 Recovery Control Routing Control resource schema .", - "handlers": { - "create": { - "permissions": [ - "route53-recovery-control-config:CreateRoutingControl", - "route53-recovery-control-config:DescribeRoutingControl", - "route53-recovery-control-config:DescribeControlPanel", - "route53-recovery-control-config:DescribeCluster" - ] - }, - "delete": { - "permissions": [ - "route53-recovery-control-config:DescribeRoutingControl", - "route53-recovery-control-config:DeleteRoutingControl" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ControlPanelArn": { - "$ref": "resource-schema.json#/properties/ControlPanelArn" - } - }, - "required": [ - "ControlPanelArn" - ] - }, - "permissions": [ - "route53-recovery-control-config:ListRoutingControls" - ] - }, - "read": { - "permissions": [ - "route53-recovery-control-config:DescribeRoutingControl" - ] - }, - "update": { - "permissions": [ - "route53-recovery-control-config:UpdateRoutingControl", - "route53-recovery-control-config:DescribeRoutingControl", - "route53-recovery-control-config:DescribeControlPanel" - ] - } - }, - "primaryIdentifier": [ - "/properties/RoutingControlArn" - ], - "properties": { - "ClusterArn": { - "description": "Arn associated with Control Panel", - "pattern": "^[A-Za-z0-9:\\/_-]*$", - "type": "string" - }, - "ControlPanelArn": { - "description": "The Amazon Resource Name (ARN) of the control panel.", - "pattern": "^[A-Za-z0-9:\\/_-]*$", - "type": "string" - }, - "Name": { - "description": "The name of the routing control. You can use any non-white space character in the name.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "RoutingControlArn": { - "description": "The Amazon Resource Name (ARN) of the routing control.", - "pattern": "^[A-Za-z0-9:\\/_-]*$", - "type": "string" - }, - "Status": { - "description": "The deployment status of the routing control. Status can be one of the following: PENDING, DEPLOYED, PENDING_DELETION.", - "enum": [ - "PENDING", - "DEPLOYED", - "PENDING_DELETION" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/RoutingControlArn", - "/properties/Status" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53-recovery-control.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Route53RecoveryControl::RoutingControl", - "writeOnlyProperties": [ - "/properties/ClusterArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ControlPanelArn", + "/properties/ClusterArn" + ], + "definitions": {}, + "description": "AWS Route53 Recovery Control Routing Control resource schema .", + "handlers": { + "create": { + "permissions": [ + "route53-recovery-control-config:CreateRoutingControl", + "route53-recovery-control-config:DescribeRoutingControl", + "route53-recovery-control-config:DescribeControlPanel", + "route53-recovery-control-config:DescribeCluster" + ] + }, + "delete": { + "permissions": [ + "route53-recovery-control-config:DescribeRoutingControl", + "route53-recovery-control-config:DeleteRoutingControl" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ControlPanelArn": { + "$ref": "resource-schema.json#/properties/ControlPanelArn" + } + }, + "required": [ + "ControlPanelArn" + ] + }, + "permissions": [ + "route53-recovery-control-config:ListRoutingControls" + ] + }, + "read": { + "permissions": [ + "route53-recovery-control-config:DescribeRoutingControl" + ] + }, + "update": { + "permissions": [ + "route53-recovery-control-config:UpdateRoutingControl", + "route53-recovery-control-config:DescribeRoutingControl", + "route53-recovery-control-config:DescribeControlPanel" + ] + } + }, + "primaryIdentifier": [ + "/properties/RoutingControlArn" + ], + "properties": { + "ClusterArn": { + "description": "Arn associated with Control Panel", + "pattern": "^[A-Za-z0-9:\\/_-]*$", + "type": "string" + }, + "ControlPanelArn": { + "description": "The Amazon Resource Name (ARN) of the control panel.", + "pattern": "^[A-Za-z0-9:\\/_-]*$", + "type": "string" + }, + "Name": { + "description": "The name of the routing control. You can use any non-white space character in the name.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "RoutingControlArn": { + "description": "The Amazon Resource Name (ARN) of the routing control.", + "pattern": "^[A-Za-z0-9:\\/_-]*$", + "type": "string" + }, + "Status": { + "description": "The deployment status of the routing control. Status can be one of the following: PENDING, DEPLOYED, PENDING_DELETION.", + "enum": [ + "PENDING", + "DEPLOYED", + "PENDING_DELETION" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/RoutingControlArn", + "/properties/Status" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53-recovery-control.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Route53RecoveryControl::RoutingControl", + "writeOnlyProperties": [ + "/properties/ClusterArn" + ] +} diff --git a/src/schema/aws-route53recoverycontrol-safetyrule.json b/src/schema/aws-route53recoverycontrol-safetyrule.json index ff004446..ee401a6f 100644 --- a/src/schema/aws-route53recoverycontrol-safetyrule.json +++ b/src/schema/aws-route53recoverycontrol-safetyrule.json @@ -1,250 +1,252 @@ -{ - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/ControlPanelArn", - "/properties/RuleConfig", - "/properties/Tags", - "/properties/AssertionRule/AssertedControls", - "/properties/GatingRule/GatingControls", - "/properties/GatingRule/TargetControls" - ], - "definitions": { - "AssertionRule": { - "additionalProperties": false, - "description": "An assertion rule enforces that, when a routing control state is changed, that the criteria set by the rule configuration is met. Otherwise, the change to the routing control is not accepted.", - "properties": { - "AssertedControls": { - "description": "The routing controls that are part of transactions that are evaluated to determine if a request to change a routing control state is allowed. For example, you might include three routing controls, one for each of three AWS Regions.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "WaitPeriodMs": { - "description": "An evaluation period, in milliseconds (ms), during which any request against the target routing controls will fail. This helps prevent \"flapping\" of state. The wait period is 5000 ms by default, but you can choose a custom value.", - "type": "integer" - } - }, - "required": [ - "AssertedControls", - "WaitPeriodMs" - ], - "type": "object" - }, - "GatingRule": { - "additionalProperties": false, - "description": "A gating rule verifies that a set of gating controls evaluates as true, based on a rule configuration that you specify. If the gating rule evaluates to true, Amazon Route 53 Application Recovery Controller allows a set of routing control state changes to run and complete against the set of target controls.", - "properties": { - "GatingControls": { - "description": "The gating controls for the gating rule. That is, routing controls that are evaluated by the rule configuration that you specify.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "TargetControls": { - "description": "Routing controls that can only be set or unset if the specified RuleConfig evaluates to true for the specified GatingControls. For example, say you have three gating controls, one for each of three AWS Regions. Now you specify AtLeast 2 as your RuleConfig. With these settings, you can only change (set or unset) the routing controls that you have specified as TargetControls if that rule evaluates to true. \nIn other words, your ability to change the routing controls that you have specified as TargetControls is gated by the rule that you set for the routing controls in GatingControls.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "WaitPeriodMs": { - "description": "An evaluation period, in milliseconds (ms), during which any request against the target routing controls will fail. This helps prevent \"flapping\" of state. The wait period is 5000 ms by default, but you can choose a custom value.", - "type": "integer" - } - }, - "required": [ - "WaitPeriodMs", - "TargetControls", - "GatingControls" - ], - "type": "object" - }, - "RuleConfig": { - "additionalProperties": false, - "description": "The rule configuration for an assertion rule or gating rule. This is the criteria that you set for specific assertion controls (routing controls) or gating controls. This configuration specifies how many controls must be enabled after a transaction completes.", - "properties": { - "Inverted": { - "description": "Logical negation of the rule. If the rule would usually evaluate true, it's evaluated as false, and vice versa.", - "type": "boolean" - }, - "Threshold": { - "description": "The value of N, when you specify an ATLEAST rule type. That is, Threshold is the number of controls that must be set when you specify an ATLEAST type.", - "type": "integer" - }, - "Type": { - "$ref": "#/definitions/RuleType" - } - }, - "required": [ - "Type", - "Threshold", - "Inverted" - ], - "type": "object" - }, - "RuleType": { - "description": "A rule can be one of the following: ATLEAST, AND, or OR.", - "enum": [ - "AND", - "OR", - "ATLEAST" - ], - "type": "string" - }, - "SafetyRuleName": { - "description": "The name for the safety rule.", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS Route53 Recovery Control basic constructs and validation rules.", - "handlers": { - "create": { - "permissions": [ - "route53-recovery-control-config:CreateSafetyRule", - "route53-recovery-control-config:DescribeSafetyRule", - "route53-recovery-control-config:DescribeControlPanel", - "route53-recovery-control-config:DescribeRoutingControl", - "route53-recovery-control-config:ListTagsForResource", - "route53-recovery-control-config:TagResource" - ] - }, - "delete": { - "permissions": [ - "route53-recovery-control-config:DescribeSafetyRule", - "route53-recovery-control-config:DeleteSafetyRule" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ControlPanelArn": { - "$ref": "resource-schema.json#/properties/ControlPanelArn" - } - }, - "required": [ - "ControlPanelArn" - ] - }, - "permissions": [ - "route53-recovery-control-config:ListSafetyRules" - ] - }, - "read": { - "permissions": [ - "route53-recovery-control-config:DescribeSafetyRule", - "route53-recovery-control-config:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "route53-recovery-control-config:UpdateSafetyRule", - "route53-recovery-control-config:DescribeSafetyRule", - "route53-recovery-control-config:ListTagsForResource", - "route53-recovery-control-config:TagResource", - "route53-recovery-control-config:UntagResource" - ] - } - }, - "oneOf": [ - { - "required": [ - "AssertionRule", - "Name", - "ControlPanelArn", - "RuleConfig" - ] - }, - { - "required": [ - "GatingRule", - "Name", - "ControlPanelArn", - "RuleConfig" - ] - } - ], - "primaryIdentifier": [ - "/properties/SafetyRuleArn" - ], - "properties": { - "AssertionRule": { - "$ref": "#/definitions/AssertionRule" - }, - "ControlPanelArn": { - "description": "The Amazon Resource Name (ARN) of the control panel.", - "type": "string" - }, - "GatingRule": { - "$ref": "#/definitions/GatingRule" - }, - "Name": { - "$ref": "#/definitions/SafetyRuleName" - }, - "RuleConfig": { - "$ref": "#/definitions/RuleConfig" - }, - "SafetyRuleArn": { - "description": "The Amazon Resource Name (ARN) of the safety rule.", - "type": "string" - }, - "Status": { - "description": "The deployment status of the routing control. Status can be one of the following: PENDING, DEPLOYED, PENDING_DELETION.", - "enum": [ - "PENDING", - "DEPLOYED", - "PENDING_DELETION" - ], - "type": "string" - }, - "Tags": { - "description": "A collection of tags associated with a resource", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag", - "maxItems": 20 - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/SafetyRuleArn", - "/properties/Status" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53-recovery-control.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Route53RecoveryControl::SafetyRule", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/ControlPanelArn", + "/properties/RuleConfig", + "/properties/Tags", + "/properties/AssertionRule/AssertedControls", + "/properties/GatingRule/GatingControls", + "/properties/GatingRule/TargetControls" + ], + "definitions": { + "AssertionRule": { + "additionalProperties": false, + "description": "An assertion rule enforces that, when a routing control state is changed, that the criteria set by the rule configuration is met. Otherwise, the change to the routing control is not accepted.", + "properties": { + "AssertedControls": { + "description": "The routing controls that are part of transactions that are evaluated to determine if a request to change a routing control state is allowed. For example, you might include three routing controls, one for each of three AWS Regions.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "WaitPeriodMs": { + "description": "An evaluation period, in milliseconds (ms), during which any request against the target routing controls will fail. This helps prevent \"flapping\" of state. The wait period is 5000 ms by default, but you can choose a custom value.", + "type": "integer" + } + }, + "required": [ + "AssertedControls", + "WaitPeriodMs" + ], + "type": "object" + }, + "GatingRule": { + "additionalProperties": false, + "description": "A gating rule verifies that a set of gating controls evaluates as true, based on a rule configuration that you specify. If the gating rule evaluates to true, Amazon Route 53 Application Recovery Controller allows a set of routing control state changes to run and complete against the set of target controls.", + "properties": { + "GatingControls": { + "description": "The gating controls for the gating rule. That is, routing controls that are evaluated by the rule configuration that you specify.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "TargetControls": { + "description": "Routing controls that can only be set or unset if the specified RuleConfig evaluates to true for the specified GatingControls. For example, say you have three gating controls, one for each of three AWS Regions. Now you specify AtLeast 2 as your RuleConfig. With these settings, you can only change (set or unset) the routing controls that you have specified as TargetControls if that rule evaluates to true. \nIn other words, your ability to change the routing controls that you have specified as TargetControls is gated by the rule that you set for the routing controls in GatingControls.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "WaitPeriodMs": { + "description": "An evaluation period, in milliseconds (ms), during which any request against the target routing controls will fail. This helps prevent \"flapping\" of state. The wait period is 5000 ms by default, but you can choose a custom value.", + "type": "integer" + } + }, + "required": [ + "WaitPeriodMs", + "TargetControls", + "GatingControls" + ], + "type": "object" + }, + "RuleConfig": { + "additionalProperties": false, + "description": "The rule configuration for an assertion rule or gating rule. This is the criteria that you set for specific assertion controls (routing controls) or gating controls. This configuration specifies how many controls must be enabled after a transaction completes.", + "properties": { + "Inverted": { + "description": "Logical negation of the rule. If the rule would usually evaluate true, it's evaluated as false, and vice versa.", + "type": "boolean" + }, + "Threshold": { + "description": "The value of N, when you specify an ATLEAST rule type. That is, Threshold is the number of controls that must be set when you specify an ATLEAST type.", + "type": "integer" + }, + "Type": { + "$ref": "#/definitions/RuleType" + } + }, + "required": [ + "Type", + "Threshold", + "Inverted" + ], + "type": "object" + }, + "RuleType": { + "description": "A rule can be one of the following: ATLEAST, AND, or OR.", + "enum": [ + "AND", + "OR", + "ATLEAST" + ], + "type": "string" + }, + "SafetyRuleName": { + "description": "The name for the safety rule.", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS Route53 Recovery Control basic constructs and validation rules.", + "handlers": { + "create": { + "permissions": [ + "route53-recovery-control-config:CreateSafetyRule", + "route53-recovery-control-config:DescribeSafetyRule", + "route53-recovery-control-config:DescribeControlPanel", + "route53-recovery-control-config:DescribeRoutingControl", + "route53-recovery-control-config:ListTagsForResource", + "route53-recovery-control-config:TagResource" + ] + }, + "delete": { + "permissions": [ + "route53-recovery-control-config:DescribeSafetyRule", + "route53-recovery-control-config:DeleteSafetyRule" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ControlPanelArn": { + "$ref": "resource-schema.json#/properties/ControlPanelArn" + } + }, + "required": [ + "ControlPanelArn" + ] + }, + "permissions": [ + "route53-recovery-control-config:ListSafetyRules" + ] + }, + "read": { + "permissions": [ + "route53-recovery-control-config:DescribeSafetyRule", + "route53-recovery-control-config:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "route53-recovery-control-config:UpdateSafetyRule", + "route53-recovery-control-config:DescribeSafetyRule", + "route53-recovery-control-config:ListTagsForResource", + "route53-recovery-control-config:TagResource", + "route53-recovery-control-config:UntagResource" + ] + } + }, + "oneOf": [ + { + "required": [ + "AssertionRule", + "Name", + "ControlPanelArn", + "RuleConfig" + ] + }, + { + "required": [ + "GatingRule", + "Name", + "ControlPanelArn", + "RuleConfig" + ] + } + ], + "primaryIdentifier": [ + "/properties/SafetyRuleArn" + ], + "properties": { + "AssertionRule": { + "$ref": "#/definitions/AssertionRule" + }, + "ControlPanelArn": { + "description": "The Amazon Resource Name (ARN) of the control panel.", + "type": "string" + }, + "GatingRule": { + "$ref": "#/definitions/GatingRule" + }, + "Name": { + "$ref": "#/definitions/SafetyRuleName" + }, + "RuleConfig": { + "$ref": "#/definitions/RuleConfig" + }, + "SafetyRuleArn": { + "description": "The Amazon Resource Name (ARN) of the safety rule.", + "type": "string" + }, + "Status": { + "description": "The deployment status of the routing control. Status can be one of the following: PENDING, DEPLOYED, PENDING_DELETION.", + "enum": [ + "PENDING", + "DEPLOYED", + "PENDING_DELETION" + ], + "type": "string" + }, + "Tags": { + "description": "A collection of tags associated with a resource", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag", + "maxItems": 20 + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/SafetyRuleArn", + "/properties/Status" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53-recovery-control.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "route53-recovery-control-config:TagResource", + "route53-recovery-control-config:UntagResource", + "route53-recovery-control-config:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Route53RecoveryControl::SafetyRule" +} diff --git a/src/schema/aws-route53recoveryreadiness-cell.json b/src/schema/aws-route53recoveryreadiness-cell.json index e9b5f8e4..d760023a 100644 --- a/src/schema/aws-route53recoveryreadiness-cell.json +++ b/src/schema/aws-route53recoveryreadiness-cell.json @@ -1,122 +1,122 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CellName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The API Schema for AWS Route53 Recovery Readiness Cells.", - "handlers": { - "create": { - "permissions": [ - "route53-recovery-readiness:CreateCell", - "route53-recovery-readiness:GetCell", - "route53-recovery-readiness:ListTagsForResources", - "route53-recovery-readiness:TagResource" - ] - }, - "delete": { - "permissions": [ - "route53-recovery-readiness:DeleteCell", - "route53-recovery-readiness:GetCell" - ] - }, - "list": { - "permissions": [ - "route53-recovery-readiness:ListCells" - ] - }, - "read": { - "permissions": [ - "route53-recovery-readiness:GetCell", - "route53-recovery-readiness:ListTagsForResources" - ] - }, - "update": { - "permissions": [ - "route53-recovery-readiness:GetCell", - "route53-recovery-readiness:ListTagsForResources", - "route53-recovery-readiness:TagResource", - "route53-recovery-readiness:UntagResource", - "route53-recovery-readiness:UpdateCell" - ] - } - }, - "primaryIdentifier": [ - "/properties/CellName" - ], - "properties": { - "CellArn": { - "description": "The Amazon Resource Name (ARN) of the cell.", - "maxLength": 256, - "type": "string" - }, - "CellName": { - "description": "The name of the cell to create.", - "maxLength": 64, - "pattern": "[a-zA-Z0-9_]+", - "type": "string" - }, - "Cells": { - "description": "A list of cell Amazon Resource Names (ARNs) contained within this cell, for use in nested cells. For example, Availability Zones within specific Regions.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 5, - "type": "array" - }, - "ParentReadinessScopes": { - "description": "The readiness scope for the cell, which can be a cell Amazon Resource Name (ARN) or a recovery group ARN. This is a list but currently can have only one element.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 5, - "type": "array" - }, - "Tags": { - "description": "A collection of tags associated with a resource", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag", - "maxItems": 20 - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/CellArn", - "/properties/ParentReadinessScopes" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-reoute53-recovery-readiness.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "route53-recovery-readiness:TagResource", - "route53-recovery-readiness:UntagResource", - "route53-recovery-readiness:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Route53RecoveryReadiness::Cell" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CellName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The API Schema for AWS Route53 Recovery Readiness Cells.", + "handlers": { + "create": { + "permissions": [ + "route53-recovery-readiness:CreateCell", + "route53-recovery-readiness:GetCell", + "route53-recovery-readiness:ListTagsForResources", + "route53-recovery-readiness:TagResource" + ] + }, + "delete": { + "permissions": [ + "route53-recovery-readiness:DeleteCell", + "route53-recovery-readiness:GetCell" + ] + }, + "list": { + "permissions": [ + "route53-recovery-readiness:ListCells" + ] + }, + "read": { + "permissions": [ + "route53-recovery-readiness:GetCell", + "route53-recovery-readiness:ListTagsForResources" + ] + }, + "update": { + "permissions": [ + "route53-recovery-readiness:GetCell", + "route53-recovery-readiness:ListTagsForResources", + "route53-recovery-readiness:TagResource", + "route53-recovery-readiness:UntagResource", + "route53-recovery-readiness:UpdateCell" + ] + } + }, + "primaryIdentifier": [ + "/properties/CellName" + ], + "properties": { + "CellArn": { + "description": "The Amazon Resource Name (ARN) of the cell.", + "maxLength": 256, + "type": "string" + }, + "CellName": { + "description": "The name of the cell to create.", + "maxLength": 64, + "pattern": "[a-zA-Z0-9_]+", + "type": "string" + }, + "Cells": { + "description": "A list of cell Amazon Resource Names (ARNs) contained within this cell, for use in nested cells. For example, Availability Zones within specific Regions.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 5, + "type": "array" + }, + "ParentReadinessScopes": { + "description": "The readiness scope for the cell, which can be a cell Amazon Resource Name (ARN) or a recovery group ARN. This is a list but currently can have only one element.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 5, + "type": "array" + }, + "Tags": { + "description": "A collection of tags associated with a resource", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag", + "maxItems": 20 + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/CellArn", + "/properties/ParentReadinessScopes" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-reoute53-recovery-readiness.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "route53-recovery-readiness:TagResource", + "route53-recovery-readiness:UntagResource", + "route53-recovery-readiness:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Route53RecoveryReadiness::Cell" +} diff --git a/src/schema/aws-route53recoveryreadiness-readinesscheck.json b/src/schema/aws-route53recoveryreadiness-readinesscheck.json index d39ffd49..2ad44949 100644 --- a/src/schema/aws-route53recoveryreadiness-readinesscheck.json +++ b/src/schema/aws-route53recoveryreadiness-readinesscheck.json @@ -1,114 +1,114 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ReadinessCheckName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Aws Route53 Recovery Readiness Check Schema and API specification.", - "handlers": { - "create": { - "permissions": [ - "route53-recovery-readiness:CreateReadinessCheck", - "route53-recovery-readiness:GetResourceSet", - "route53-recovery-readiness:GetReadinessCheck", - "route53-recovery-readiness:ListTagsForResources", - "route53-recovery-readiness:TagResource" - ] - }, - "delete": { - "permissions": [ - "route53-recovery-readiness:DeleteReadinessCheck", - "route53-recovery-readiness:GetReadinessCheck" - ] - }, - "list": { - "permissions": [ - "route53-recovery-readiness:ListReadinessChecks", - "route53-recovery-readiness:GetReadinessChecks" - ] - }, - "read": { - "permissions": [ - "route53-recovery-readiness:GetReadinessCheck", - "route53-recovery-readiness:ListTagsForResources" - ] - }, - "update": { - "permissions": [ - "route53-recovery-readiness:UpdateReadinessCheck", - "route53-recovery-readiness:GetResourceSet", - "route53-recovery-readiness:GetReadinessCheck", - "route53-recovery-readiness:ListTagsForResources", - "route53-recovery-readiness:TagResource", - "route53-recovery-readiness:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ReadinessCheckName" - ], - "properties": { - "ReadinessCheckArn": { - "description": "The Amazon Resource Name (ARN) of the readiness check.", - "maxLength": 256, - "type": "string" - }, - "ReadinessCheckName": { - "description": "Name of the ReadinessCheck to create.", - "maxLength": 64, - "minLength": 1, - "pattern": "[a-zA-Z0-9_]+", - "type": "string" - }, - "ResourceSetName": { - "description": "The name of the resource set to check.", - "maxLength": 64, - "minLength": 1, - "pattern": "[a-zA-Z0-9_]+", - "type": "string" - }, - "Tags": { - "description": "A collection of tags associated with a resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag", - "maxItems": 20 - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ReadinessCheckArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53-recovery-readiness.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "route53-recovery-readiness:TagResource", - "route53-recovery-readiness:UntagResource", - "route53-recovery-readiness:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Route53RecoveryReadiness::ReadinessCheck" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ReadinessCheckName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Aws Route53 Recovery Readiness Check Schema and API specification.", + "handlers": { + "create": { + "permissions": [ + "route53-recovery-readiness:CreateReadinessCheck", + "route53-recovery-readiness:GetResourceSet", + "route53-recovery-readiness:GetReadinessCheck", + "route53-recovery-readiness:ListTagsForResources", + "route53-recovery-readiness:TagResource" + ] + }, + "delete": { + "permissions": [ + "route53-recovery-readiness:DeleteReadinessCheck", + "route53-recovery-readiness:GetReadinessCheck" + ] + }, + "list": { + "permissions": [ + "route53-recovery-readiness:ListReadinessChecks", + "route53-recovery-readiness:GetReadinessChecks" + ] + }, + "read": { + "permissions": [ + "route53-recovery-readiness:GetReadinessCheck", + "route53-recovery-readiness:ListTagsForResources" + ] + }, + "update": { + "permissions": [ + "route53-recovery-readiness:UpdateReadinessCheck", + "route53-recovery-readiness:GetResourceSet", + "route53-recovery-readiness:GetReadinessCheck", + "route53-recovery-readiness:ListTagsForResources", + "route53-recovery-readiness:TagResource", + "route53-recovery-readiness:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ReadinessCheckName" + ], + "properties": { + "ReadinessCheckArn": { + "description": "The Amazon Resource Name (ARN) of the readiness check.", + "maxLength": 256, + "type": "string" + }, + "ReadinessCheckName": { + "description": "Name of the ReadinessCheck to create.", + "maxLength": 64, + "minLength": 1, + "pattern": "[a-zA-Z0-9_]+", + "type": "string" + }, + "ResourceSetName": { + "description": "The name of the resource set to check.", + "maxLength": 64, + "minLength": 1, + "pattern": "[a-zA-Z0-9_]+", + "type": "string" + }, + "Tags": { + "description": "A collection of tags associated with a resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag", + "maxItems": 20 + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ReadinessCheckArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53-recovery-readiness.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "route53-recovery-readiness:TagResource", + "route53-recovery-readiness:UntagResource", + "route53-recovery-readiness:ListTagsForResources" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Route53RecoveryReadiness::ReadinessCheck" +} diff --git a/src/schema/aws-route53recoveryreadiness-recoverygroup.json b/src/schema/aws-route53recoveryreadiness-recoverygroup.json index e671c4ed..22d64e21 100644 --- a/src/schema/aws-route53recoveryreadiness-recoverygroup.json +++ b/src/schema/aws-route53recoveryreadiness-recoverygroup.json @@ -1,117 +1,117 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RecoveryGroupName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "AWS Route53 Recovery Readiness Recovery Group Schema and API specifications.", - "handlers": { - "create": { - "permissions": [ - "route53-recovery-readiness:CreateRecoveryGroup", - "route53-recovery-readiness:GetRecoveryGroup", - "route53-recovery-readiness:GetCell", - "route53-recovery-readiness:ListTagsForResources", - "route53-recovery-readiness:TagResource" - ] - }, - "delete": { - "permissions": [ - "route53-recovery-readiness:DeleteRecoveryGroup", - "route53-recovery-readiness:GetRecoveryGroup" - ] - }, - "list": { - "permissions": [ - "route53-recovery-readiness:ListRecoveryGroups" - ] - }, - "read": { - "permissions": [ - "route53-recovery-readiness:GetRecoveryGroup", - "route53-recovery-readiness:ListTagsForResources" - ] - }, - "update": { - "permissions": [ - "route53-recovery-readiness:UpdateRecoveryGroup", - "route53-recovery-readiness:GetRecoveryGroup", - "route53-recovery-readiness:GetCell", - "route53-recovery-readiness:ListTagsForResources", - "route53-recovery-readiness:TagResource", - "route53-recovery-readiness:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/RecoveryGroupName" - ], - "properties": { - "Cells": { - "description": "A list of the cell Amazon Resource Names (ARNs) in the recovery group.", - "insertionOrder": false, - "items": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "maxItems": 5, - "type": "array" - }, - "RecoveryGroupArn": { - "description": "A collection of tags associated with a resource.", - "maxLength": 256, - "type": "string" - }, - "RecoveryGroupName": { - "description": "The name of the recovery group to create.", - "maxLength": 64, - "minLength": 1, - "pattern": "[a-zA-Z0-9_]+", - "type": "string" - }, - "Tags": { - "description": "A collection of tags associated with a resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag", - "maxItems": 20 - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/RecoveryGroupArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53-recovery-readiness-readiness.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "route53-recovery-readiness:TagResource", - "route53-recovery-readiness:UntagResource", - "route53-recovery-readiness:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Route53RecoveryReadiness::RecoveryGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RecoveryGroupName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "AWS Route53 Recovery Readiness Recovery Group Schema and API specifications.", + "handlers": { + "create": { + "permissions": [ + "route53-recovery-readiness:CreateRecoveryGroup", + "route53-recovery-readiness:GetRecoveryGroup", + "route53-recovery-readiness:GetCell", + "route53-recovery-readiness:ListTagsForResources", + "route53-recovery-readiness:TagResource" + ] + }, + "delete": { + "permissions": [ + "route53-recovery-readiness:DeleteRecoveryGroup", + "route53-recovery-readiness:GetRecoveryGroup" + ] + }, + "list": { + "permissions": [ + "route53-recovery-readiness:ListRecoveryGroups" + ] + }, + "read": { + "permissions": [ + "route53-recovery-readiness:GetRecoveryGroup", + "route53-recovery-readiness:ListTagsForResources" + ] + }, + "update": { + "permissions": [ + "route53-recovery-readiness:UpdateRecoveryGroup", + "route53-recovery-readiness:GetRecoveryGroup", + "route53-recovery-readiness:GetCell", + "route53-recovery-readiness:ListTagsForResources", + "route53-recovery-readiness:TagResource", + "route53-recovery-readiness:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/RecoveryGroupName" + ], + "properties": { + "Cells": { + "description": "A list of the cell Amazon Resource Names (ARNs) in the recovery group.", + "insertionOrder": false, + "items": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "maxItems": 5, + "type": "array" + }, + "RecoveryGroupArn": { + "description": "A collection of tags associated with a resource.", + "maxLength": 256, + "type": "string" + }, + "RecoveryGroupName": { + "description": "The name of the recovery group to create.", + "maxLength": 64, + "minLength": 1, + "pattern": "[a-zA-Z0-9_]+", + "type": "string" + }, + "Tags": { + "description": "A collection of tags associated with a resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag", + "maxItems": 20 + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/RecoveryGroupArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53-recovery-readiness-readiness.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "route53-recovery-readiness:TagResource", + "route53-recovery-readiness:UntagResource", + "route53-recovery-readiness:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Route53RecoveryReadiness::RecoveryGroup" +} diff --git a/src/schema/aws-route53recoveryreadiness-resourceset.json b/src/schema/aws-route53recoveryreadiness-resourceset.json index 2911265b..983e982f 100644 --- a/src/schema/aws-route53recoveryreadiness-resourceset.json +++ b/src/schema/aws-route53recoveryreadiness-resourceset.json @@ -1,229 +1,229 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceSetName", - "/properties/ResourceSetType" - ], - "definitions": { - "DNSTargetResource": { - "additionalProperties": false, - "description": "A component for DNS/routing control readiness checks.", - "properties": { - "DomainName": { - "description": "The domain name that acts as an ingress point to a portion of the customer application.", - "type": "string" - }, - "HostedZoneArn": { - "description": "The hosted zone Amazon Resource Name (ARN) that contains the DNS record with the provided name of the target resource.", - "type": "string" - }, - "RecordSetId": { - "description": "The Route 53 record set ID that will uniquely identify a DNS record, given a name and a type.", - "type": "string" - }, - "RecordType": { - "description": "The type of DNS record of the target resource.", - "type": "string" - }, - "TargetResource": { - "$ref": "#/definitions/TargetResource" - } - }, - "type": "object" - }, - "NLBResource": { - "additionalProperties": false, - "description": "The Network Load Balancer resource that a DNS target resource points to.", - "properties": { - "Arn": { - "description": "A Network Load Balancer resource Amazon Resource Name (ARN).", - "type": "string" - } - }, - "type": "object" - }, - "R53ResourceRecord": { - "additionalProperties": false, - "description": "The Route 53 resource that a DNS target resource record points to.", - "properties": { - "DomainName": { - "description": "The DNS target domain name.", - "type": "string" - }, - "RecordSetId": { - "description": "The Resource Record set id.", - "type": "string" - } - }, - "type": "object" - }, - "Resource": { - "additionalProperties": false, - "description": "The resource element of a ResourceSet", - "properties": { - "ComponentId": { - "description": "The component identifier of the resource, generated when DNS target resource is used.", - "type": "string" - }, - "DnsTargetResource": { - "$ref": "#/definitions/DNSTargetResource" - }, - "ReadinessScopes": { - "description": "A list of recovery group Amazon Resource Names (ARNs) and cell ARNs that this resource is contained within.", - "insertionOrder": false, - "items": { - "maxItems": 5, - "type": "string" - }, - "type": "array" - }, - "ResourceArn": { - "description": "The Amazon Resource Name (ARN) of the AWS resource.", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TargetResource": { - "additionalProperties": false, - "description": "The target resource that the Route 53 record points to.", - "oneOf": [ - { - "required": [ - "NLBResource" - ] - }, - { - "required": [ - "R53Resource" - ] - } - ], - "properties": { - "NLBResource": { - "$ref": "#/definitions/NLBResource" - }, - "R53Resource": { - "$ref": "#/definitions/R53ResourceRecord" - } - }, - "type": "object" - } - }, - "description": "Schema for the AWS Route53 Recovery Readiness ResourceSet Resource and API.", - "handlers": { - "create": { - "permissions": [ - "route53-recovery-readiness:CreateResourceSet", - "route53-recovery-readiness:GetResourceSet", - "route53-recovery-readiness:GetRecoveryGroup", - "route53-recovery-readiness:GetCell", - "route53-recovery-readiness:ListTagsForResources", - "route53-recovery-readiness:TagResource" - ] - }, - "delete": { - "permissions": [ - "route53-recovery-readiness:DeleteResourceSet", - "route53-recovery-readiness:GetResourceSet" - ] - }, - "list": { - "permissions": [ - "route53-recovery-readiness:ListResourceSets" - ] - }, - "read": { - "permissions": [ - "route53-recovery-readiness:GetResourceSet", - "route53-recovery-readiness:ListTagsForResources" - ] - }, - "update": { - "permissions": [ - "route53-recovery-readiness:UpdateResourceSet", - "route53-recovery-readiness:GetResourceSet", - "route53-recovery-readiness:GetRecoveryGroup", - "route53-recovery-readiness:GetCell", - "route53-recovery-readiness:ListTagsForResources", - "route53-recovery-readiness:TagResource", - "route53-recovery-readiness:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ResourceSetName" - ], - "properties": { - "ResourceSetArn": { - "description": "The Amazon Resource Name (ARN) of the resource set.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "ResourceSetName": { - "description": "The name of the resource set to create.", - "type": "string" - }, - "ResourceSetType": { - "description": "The resource type of the resources in the resource set. Enter one of the following values for resource type: \n\nAWS: :AutoScaling: :AutoScalingGroup, AWS: :CloudWatch: :Alarm, AWS: :EC2: :CustomerGateway, AWS: :DynamoDB: :Table, AWS: :EC2: :Volume, AWS: :ElasticLoadBalancing: :LoadBalancer, AWS: :ElasticLoadBalancingV2: :LoadBalancer, AWS: :MSK: :Cluster, AWS: :RDS: :DBCluster, AWS: :Route53: :HealthCheck, AWS: :SQS: :Queue, AWS: :SNS: :Topic, AWS: :SNS: :Subscription, AWS: :EC2: :VPC, AWS: :EC2: :VPNConnection, AWS: :EC2: :VPNGateway, AWS::Route53RecoveryReadiness::DNSTargetResource", - "type": "string" - }, - "Resources": { - "description": "A list of resource objects in the resource set.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Resource" - }, - "maxItems": 6, - "minItems": 1, - "type": "array" - }, - "Tags": { - "description": "A tag to associate with the parameters for a resource set.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag", - "maxItems": 20 - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ResourceSetArn" - ], - "required": [ - "ResourceSetType", - "Resources" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53-recovery-readiness.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "route53-recovery-readiness:TagResource", - "route53-recovery-readiness:UntagResource", - "route53-recovery-readiness:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Route53RecoveryReadiness::ResourceSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceSetName", + "/properties/ResourceSetType" + ], + "definitions": { + "DNSTargetResource": { + "additionalProperties": false, + "description": "A component for DNS/routing control readiness checks.", + "properties": { + "DomainName": { + "description": "The domain name that acts as an ingress point to a portion of the customer application.", + "type": "string" + }, + "HostedZoneArn": { + "description": "The hosted zone Amazon Resource Name (ARN) that contains the DNS record with the provided name of the target resource.", + "type": "string" + }, + "RecordSetId": { + "description": "The Route 53 record set ID that will uniquely identify a DNS record, given a name and a type.", + "type": "string" + }, + "RecordType": { + "description": "The type of DNS record of the target resource.", + "type": "string" + }, + "TargetResource": { + "$ref": "#/definitions/TargetResource" + } + }, + "type": "object" + }, + "NLBResource": { + "additionalProperties": false, + "description": "The Network Load Balancer resource that a DNS target resource points to.", + "properties": { + "Arn": { + "description": "A Network Load Balancer resource Amazon Resource Name (ARN).", + "type": "string" + } + }, + "type": "object" + }, + "R53ResourceRecord": { + "additionalProperties": false, + "description": "The Route 53 resource that a DNS target resource record points to.", + "properties": { + "DomainName": { + "description": "The DNS target domain name.", + "type": "string" + }, + "RecordSetId": { + "description": "The Resource Record set id.", + "type": "string" + } + }, + "type": "object" + }, + "Resource": { + "additionalProperties": false, + "description": "The resource element of a ResourceSet", + "properties": { + "ComponentId": { + "description": "The component identifier of the resource, generated when DNS target resource is used.", + "type": "string" + }, + "DnsTargetResource": { + "$ref": "#/definitions/DNSTargetResource" + }, + "ReadinessScopes": { + "description": "A list of recovery group Amazon Resource Names (ARNs) and cell ARNs that this resource is contained within.", + "insertionOrder": false, + "items": { + "maxItems": 5, + "type": "string" + }, + "type": "array" + }, + "ResourceArn": { + "description": "The Amazon Resource Name (ARN) of the AWS resource.", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TargetResource": { + "additionalProperties": false, + "description": "The target resource that the Route 53 record points to.", + "oneOf": [ + { + "required": [ + "NLBResource" + ] + }, + { + "required": [ + "R53Resource" + ] + } + ], + "properties": { + "NLBResource": { + "$ref": "#/definitions/NLBResource" + }, + "R53Resource": { + "$ref": "#/definitions/R53ResourceRecord" + } + }, + "type": "object" + } + }, + "description": "Schema for the AWS Route53 Recovery Readiness ResourceSet Resource and API.", + "handlers": { + "create": { + "permissions": [ + "route53-recovery-readiness:CreateResourceSet", + "route53-recovery-readiness:GetResourceSet", + "route53-recovery-readiness:GetRecoveryGroup", + "route53-recovery-readiness:GetCell", + "route53-recovery-readiness:ListTagsForResources", + "route53-recovery-readiness:TagResource" + ] + }, + "delete": { + "permissions": [ + "route53-recovery-readiness:DeleteResourceSet", + "route53-recovery-readiness:GetResourceSet" + ] + }, + "list": { + "permissions": [ + "route53-recovery-readiness:ListResourceSets" + ] + }, + "read": { + "permissions": [ + "route53-recovery-readiness:GetResourceSet", + "route53-recovery-readiness:ListTagsForResources" + ] + }, + "update": { + "permissions": [ + "route53-recovery-readiness:UpdateResourceSet", + "route53-recovery-readiness:GetResourceSet", + "route53-recovery-readiness:GetRecoveryGroup", + "route53-recovery-readiness:GetCell", + "route53-recovery-readiness:ListTagsForResources", + "route53-recovery-readiness:TagResource", + "route53-recovery-readiness:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ResourceSetName" + ], + "properties": { + "ResourceSetArn": { + "description": "The Amazon Resource Name (ARN) of the resource set.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "ResourceSetName": { + "description": "The name of the resource set to create.", + "type": "string" + }, + "ResourceSetType": { + "description": "The resource type of the resources in the resource set. Enter one of the following values for resource type: \n\nAWS: :AutoScaling: :AutoScalingGroup, AWS: :CloudWatch: :Alarm, AWS: :EC2: :CustomerGateway, AWS: :DynamoDB: :Table, AWS: :EC2: :Volume, AWS: :ElasticLoadBalancing: :LoadBalancer, AWS: :ElasticLoadBalancingV2: :LoadBalancer, AWS: :MSK: :Cluster, AWS: :RDS: :DBCluster, AWS: :Route53: :HealthCheck, AWS: :SQS: :Queue, AWS: :SNS: :Topic, AWS: :SNS: :Subscription, AWS: :EC2: :VPC, AWS: :EC2: :VPNConnection, AWS: :EC2: :VPNGateway, AWS::Route53RecoveryReadiness::DNSTargetResource", + "type": "string" + }, + "Resources": { + "description": "A list of resource objects in the resource set.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Resource" + }, + "maxItems": 6, + "minItems": 1, + "type": "array" + }, + "Tags": { + "description": "A tag to associate with the parameters for a resource set.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag", + "maxItems": 20 + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ResourceSetArn" + ], + "required": [ + "ResourceSetType", + "Resources" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53-recovery-readiness.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "route53-recovery-readiness:TagResource", + "route53-recovery-readiness:UntagResource", + "route53-recovery-readiness:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Route53RecoveryReadiness::ResourceSet" +} diff --git a/src/schema/aws-route53resolver-firewalldomainlist.json b/src/schema/aws-route53resolver-firewalldomainlist.json index 0b60a327..b1e662d6 100644 --- a/src/schema/aws-route53resolver-firewalldomainlist.json +++ b/src/schema/aws-route53resolver-firewalldomainlist.json @@ -1,199 +1,199 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Domains": { - "description": "An inline list of domains to use for this domain list.", - "items": { - "description": "FirewallDomainName", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::Route53Resolver::FirewallDomainList.", - "handlers": { - "create": { - "permissions": [ - "route53resolver:CreateFirewallDomainList", - "route53resolver:GetFirewallDomainList", - "route53resolver:ImportFirewallDomains", - "route53resolver:UpdateFirewallDomains", - "route53resolver:TagResource", - "route53resolver:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "route53resolver:GetFirewallDomainList", - "route53resolver:DeleteFirewallDomainList", - "route53resolver:UntagResource", - "route53resolver:ListTagsForResource" - ] - }, - "list": { - "permissions": [ - "route53resolver:ListFirewallDomainLists", - "route53resolver:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "route53resolver:GetFirewallDomainList", - "route53resolver:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "route53resolver:GetFirewallDomainList", - "route53resolver:ImportFirewallDomains", - "route53resolver:UpdateFirewallDomains", - "route53resolver:TagResource", - "route53resolver:UntagResource", - "route53resolver:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "Arn", - "maxLength": 600, - "minLength": 1, - "type": "string" - }, - "CreationTime": { - "description": "Rfc3339TimeString", - "maxLength": 40, - "minLength": 20, - "type": "string" - }, - "CreatorRequestId": { - "description": "The id of the creator request.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "DomainCount": { - "description": "Count", - "minimum": 0, - "type": "integer" - }, - "DomainFileUrl": { - "description": "S3 URL to import domains from.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Domains": { - "$ref": "#/definitions/Domains" - }, - "Id": { - "description": "ResourceId", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "ManagedOwnerName": { - "description": "ServicePrincipal", - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "ModificationTime": { - "description": "Rfc3339TimeString", - "maxLength": 40, - "minLength": 20, - "type": "string" - }, - "Name": { - "description": "FirewallDomainListName", - "maxLength": 64, - "minLength": 1, - "pattern": "(?!^[0-9]+$)([a-zA-Z0-9\\-_' ']+)", - "type": "string" - }, - "Status": { - "description": "ResolverFirewallDomainList, possible values are COMPLETE, DELETING, UPDATING, COMPLETE_IMPORT_FAILED, IMPORTING, and INACTIVE_OWNER_ACCOUNT_CLOSED.", - "enum": [ - "COMPLETE", - "DELETING", - "UPDATING", - "COMPLETE_IMPORT_FAILED", - "IMPORTING", - "INACTIVE_OWNER_ACCOUNT_CLOSED" - ], - "type": "string" - }, - "StatusMessage": { - "description": "FirewallDomainListAssociationStatus", - "type": "string" - }, - "Tags": { - "description": "Tags", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/DomainCount", - "/properties/Status", - "/properties/StatusMessage", - "/properties/ManagedOwnerName", - "/properties/CreatorRequestId", - "/properties/CreationTime", - "/properties/ModificationTime" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "route53resolver:TagResource", - "route53resolver:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Route53Resolver::FirewallDomainList", - "writeOnlyProperties": [ - "/properties/Domains", - "/properties/DomainFileUrl" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Domains": { + "description": "An inline list of domains to use for this domain list.", + "items": { + "description": "FirewallDomainName", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::Route53Resolver::FirewallDomainList.", + "handlers": { + "create": { + "permissions": [ + "route53resolver:CreateFirewallDomainList", + "route53resolver:GetFirewallDomainList", + "route53resolver:ImportFirewallDomains", + "route53resolver:UpdateFirewallDomains", + "route53resolver:TagResource", + "route53resolver:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "route53resolver:GetFirewallDomainList", + "route53resolver:DeleteFirewallDomainList", + "route53resolver:UntagResource", + "route53resolver:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "route53resolver:ListFirewallDomainLists", + "route53resolver:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "route53resolver:GetFirewallDomainList", + "route53resolver:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "route53resolver:GetFirewallDomainList", + "route53resolver:ImportFirewallDomains", + "route53resolver:UpdateFirewallDomains", + "route53resolver:TagResource", + "route53resolver:UntagResource", + "route53resolver:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "Arn", + "maxLength": 600, + "minLength": 1, + "type": "string" + }, + "CreationTime": { + "description": "Rfc3339TimeString", + "maxLength": 40, + "minLength": 20, + "type": "string" + }, + "CreatorRequestId": { + "description": "The id of the creator request.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "DomainCount": { + "description": "Count", + "minimum": 0, + "type": "integer" + }, + "DomainFileUrl": { + "description": "S3 URL to import domains from.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Domains": { + "$ref": "#/definitions/Domains" + }, + "Id": { + "description": "ResourceId", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "ManagedOwnerName": { + "description": "ServicePrincipal", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "ModificationTime": { + "description": "Rfc3339TimeString", + "maxLength": 40, + "minLength": 20, + "type": "string" + }, + "Name": { + "description": "FirewallDomainListName", + "maxLength": 64, + "minLength": 1, + "pattern": "(?!^[0-9]+$)([a-zA-Z0-9\\-_' ']+)", + "type": "string" + }, + "Status": { + "description": "ResolverFirewallDomainList, possible values are COMPLETE, DELETING, UPDATING, COMPLETE_IMPORT_FAILED, IMPORTING, and INACTIVE_OWNER_ACCOUNT_CLOSED.", + "enum": [ + "COMPLETE", + "DELETING", + "UPDATING", + "COMPLETE_IMPORT_FAILED", + "IMPORTING", + "INACTIVE_OWNER_ACCOUNT_CLOSED" + ], + "type": "string" + }, + "StatusMessage": { + "description": "FirewallDomainListAssociationStatus", + "type": "string" + }, + "Tags": { + "description": "Tags", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/DomainCount", + "/properties/Status", + "/properties/StatusMessage", + "/properties/ManagedOwnerName", + "/properties/CreatorRequestId", + "/properties/CreationTime", + "/properties/ModificationTime" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "route53resolver:TagResource", + "route53resolver:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Route53Resolver::FirewallDomainList", + "writeOnlyProperties": [ + "/properties/Domains", + "/properties/DomainFileUrl" + ] +} diff --git a/src/schema/aws-route53resolver-firewallrulegroup.json b/src/schema/aws-route53resolver-firewallrulegroup.json index bfcef66e..88086728 100644 --- a/src/schema/aws-route53resolver-firewallrulegroup.json +++ b/src/schema/aws-route53resolver-firewallrulegroup.json @@ -1,270 +1,293 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "FirewallRule": { - "additionalProperties": false, - "description": "Firewall Rule associating the Rule Group to a Domain List", - "properties": { - "Action": { - "description": "Rule Action", - "enum": [ - "ALLOW", - "BLOCK", - "ALERT" - ], - "type": "string" - }, - "BlockOverrideDnsType": { - "description": "BlockOverrideDnsType", - "enum": [ - "CNAME" - ], - "type": "string" - }, - "BlockOverrideDomain": { - "description": "BlockOverrideDomain", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "BlockOverrideTtl": { - "description": "BlockOverrideTtl", - "maximum": 604800, - "minimum": 0, - "type": "integer" - }, - "BlockResponse": { - "description": "BlockResponse", - "enum": [ - "NODATA", - "NXDOMAIN", - "OVERRIDE" - ], - "type": "string" - }, - "FirewallDomainListId": { - "description": "ResourceId", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "FirewallDomainRedirectionAction": { - "description": "FirewallDomainRedirectionAction", - "enum": [ - "INSPECT_REDIRECTION_DOMAIN", - "TRUST_REDIRECTION_DOMAIN" - ], - "type": "string" - }, - "Priority": { - "description": "Rule Priority", - "type": "integer" - }, - "Qtype": { - "description": "Qtype", - "maxLength": 16, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "FirewallDomainListId", - "Priority", - "Action" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::Route53Resolver::FirewallRuleGroup.", - "handlers": { - "create": { - "permissions": [ - "route53resolver:CreateFirewallRuleGroup", - "route53resolver:GetFirewallRuleGroup", - "route53resolver:ListFirewallRules", - "route53resolver:CreateFirewallRule", - "route53resolver:DeleteFirewallRule", - "route53resolver:TagResource", - "route53resolver:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "route53resolver:GetFirewallRuleGroup", - "route53resolver:DeleteFirewallRuleGroup", - "route53resolver:ListFirewallRules", - "route53resolver:DeleteFirewallRule", - "route53resolver:UntagResource", - "route53resolver:ListTagsForResource" - ] - }, - "list": { - "permissions": [ - "route53resolver:ListFirewallRuleGroups", - "route53resolver:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "route53resolver:GetFirewallRuleGroup", - "route53resolver:ListFirewallRules", - "route53resolver:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "route53resolver:GetFirewallRuleGroup", - "route53resolver:ListFirewallRules", - "route53resolver:CreateFirewallRule", - "route53resolver:UpdateFirewallRule", - "route53resolver:DeleteFirewallRule", - "route53resolver:TagResource", - "route53resolver:UntagResource", - "route53resolver:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "Arn", - "maxLength": 600, - "minLength": 1, - "type": "string" - }, - "CreationTime": { - "description": "Rfc3339TimeString", - "maxLength": 40, - "minLength": 20, - "type": "string" - }, - "CreatorRequestId": { - "description": "The id of the creator request.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "FirewallRules": { - "description": "FirewallRules", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/FirewallRule" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "description": "ResourceId", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "ModificationTime": { - "description": "Rfc3339TimeString", - "maxLength": 40, - "minLength": 20, - "type": "string" - }, - "Name": { - "description": "FirewallRuleGroupName", - "maxLength": 64, - "minLength": 1, - "pattern": "(?!^[0-9]+$)([a-zA-Z0-9\\-_' ']+)", - "type": "string" - }, - "OwnerId": { - "description": "AccountId", - "maxLength": 32, - "minLength": 12, - "type": "string" - }, - "RuleCount": { - "description": "Count", - "type": "integer" - }, - "ShareStatus": { - "description": "ShareStatus, possible values are NOT_SHARED, SHARED_WITH_ME, SHARED_BY_ME.", - "enum": [ - "NOT_SHARED", - "SHARED_WITH_ME", - "SHARED_BY_ME" - ], - "type": "string" - }, - "Status": { - "description": "ResolverFirewallRuleGroupAssociation, possible values are COMPLETE, DELETING, UPDATING, and INACTIVE_OWNER_ACCOUNT_CLOSED.", - "enum": [ - "COMPLETE", - "DELETING", - "UPDATING", - "INACTIVE_OWNER_ACCOUNT_CLOSED" - ], - "type": "string" - }, - "StatusMessage": { - "description": "FirewallRuleGroupStatus", - "type": "string" - }, - "Tags": { - "description": "Tags", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/RuleCount", - "/properties/Status", - "/properties/StatusMessage", - "/properties/OwnerId", - "/properties/ShareStatus", - "/properties/CreatorRequestId", - "/properties/CreationTime", - "/properties/ModificationTime" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "route53resolver:TagResource", - "route53resolver:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Route53Resolver::FirewallRuleGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "FirewallRule": { + "additionalProperties": false, + "description": "Firewall Rule associating the Rule Group to a Domain List", + "properties": { + "Action": { + "description": "Rule Action", + "enum": [ + "ALLOW", + "BLOCK", + "ALERT" + ], + "type": "string" + }, + "BlockOverrideDnsType": { + "description": "BlockOverrideDnsType", + "enum": [ + "CNAME" + ], + "type": "string" + }, + "BlockOverrideDomain": { + "description": "BlockOverrideDomain", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "BlockOverrideTtl": { + "description": "BlockOverrideTtl", + "maximum": 604800, + "minimum": 0, + "type": "integer" + }, + "BlockResponse": { + "description": "BlockResponse", + "enum": [ + "NODATA", + "NXDOMAIN", + "OVERRIDE" + ], + "type": "string" + }, + "ConfidenceThreshold": { + "description": "FirewallDomainRedirectionAction", + "enum": [ + "LOW", + "MEDIUM", + "HIGH" + ], + "type": "string" + }, + "DnsThreatProtection": { + "description": "FirewallDomainRedirectionAction", + "enum": [ + "DGA", + "DNS_TUNNELING" + ], + "type": "string" + }, + "FirewallDomainListId": { + "description": "ResourceId", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "FirewallDomainRedirectionAction": { + "description": "FirewallDomainRedirectionAction", + "enum": [ + "INSPECT_REDIRECTION_DOMAIN", + "TRUST_REDIRECTION_DOMAIN" + ], + "type": "string" + }, + "FirewallThreatProtectionId": { + "description": "ResourceId", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Priority": { + "description": "Rule Priority", + "type": "integer" + }, + "Qtype": { + "description": "Qtype", + "maxLength": 16, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Priority", + "Action" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::Route53Resolver::FirewallRuleGroup.", + "handlers": { + "create": { + "permissions": [ + "route53resolver:CreateFirewallRuleGroup", + "route53resolver:GetFirewallRuleGroup", + "route53resolver:ListFirewallRules", + "route53resolver:CreateFirewallRule", + "route53resolver:DeleteFirewallRule", + "route53resolver:TagResource", + "route53resolver:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "route53resolver:GetFirewallRuleGroup", + "route53resolver:DeleteFirewallRuleGroup", + "route53resolver:ListFirewallRules", + "route53resolver:DeleteFirewallRule", + "route53resolver:UntagResource", + "route53resolver:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "route53resolver:ListFirewallRuleGroups", + "route53resolver:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "route53resolver:GetFirewallRuleGroup", + "route53resolver:ListFirewallRules", + "route53resolver:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "route53resolver:GetFirewallRuleGroup", + "route53resolver:ListFirewallRules", + "route53resolver:CreateFirewallRule", + "route53resolver:UpdateFirewallRule", + "route53resolver:DeleteFirewallRule", + "route53resolver:TagResource", + "route53resolver:UntagResource", + "route53resolver:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "Arn", + "maxLength": 600, + "minLength": 1, + "type": "string" + }, + "CreationTime": { + "description": "Rfc3339TimeString", + "maxLength": 40, + "minLength": 20, + "type": "string" + }, + "CreatorRequestId": { + "description": "The id of the creator request.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "FirewallRules": { + "description": "FirewallRules", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/FirewallRule" + }, + "type": "array", + "uniqueItems": true + }, + "Id": { + "description": "ResourceId", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "ModificationTime": { + "description": "Rfc3339TimeString", + "maxLength": 40, + "minLength": 20, + "type": "string" + }, + "Name": { + "description": "FirewallRuleGroupName", + "maxLength": 64, + "minLength": 1, + "pattern": "(?!^[0-9]+$)([a-zA-Z0-9\\-_' ']+)", + "type": "string" + }, + "OwnerId": { + "description": "AccountId", + "maxLength": 32, + "minLength": 12, + "type": "string" + }, + "RuleCount": { + "description": "Count", + "type": "integer" + }, + "ShareStatus": { + "description": "ShareStatus, possible values are NOT_SHARED, SHARED_WITH_ME, SHARED_BY_ME.", + "enum": [ + "NOT_SHARED", + "SHARED_WITH_ME", + "SHARED_BY_ME" + ], + "type": "string" + }, + "Status": { + "description": "ResolverFirewallRuleGroupAssociation, possible values are COMPLETE, DELETING, UPDATING, and INACTIVE_OWNER_ACCOUNT_CLOSED.", + "enum": [ + "COMPLETE", + "DELETING", + "UPDATING", + "INACTIVE_OWNER_ACCOUNT_CLOSED" + ], + "type": "string" + }, + "StatusMessage": { + "description": "FirewallRuleGroupStatus", + "type": "string" + }, + "Tags": { + "description": "Tags", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/RuleCount", + "/properties/Status", + "/properties/StatusMessage", + "/properties/OwnerId", + "/properties/ShareStatus", + "/properties/CreatorRequestId", + "/properties/CreationTime", + "/properties/ModificationTime", + "/properties/FirewallRules/*/FirewallThreatProtectionId" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "route53resolver:TagResource", + "route53resolver:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Route53Resolver::FirewallRuleGroup" +} diff --git a/src/schema/aws-route53resolver-firewallrulegroupassociation.json b/src/schema/aws-route53resolver-firewallrulegroupassociation.json index f8db9177..0db11779 100644 --- a/src/schema/aws-route53resolver-firewallrulegroupassociation.json +++ b/src/schema/aws-route53resolver-firewallrulegroupassociation.json @@ -1,195 +1,195 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FirewallRuleGroupId", - "/properties/VpcId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::Route53Resolver::FirewallRuleGroupAssociation.", - "handlers": { - "create": { - "permissions": [ - "route53resolver:AssociateFirewallRuleGroup", - "route53resolver:GetFirewallRuleGroupAssociation", - "route53resolver:TagResource", - "route53resolver:ListTagsForResource", - "ec2:DescribeVpcs" - ] - }, - "delete": { - "permissions": [ - "route53resolver:DisassociateFirewallRuleGroup", - "route53resolver:GetFirewallRuleGroupAssociation", - "route53resolver:UntagResource", - "route53resolver:ListTagsForResource" - ] - }, - "list": { - "permissions": [ - "route53resolver:ListFirewallRuleGroupAssociations", - "route53resolver:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "route53resolver:GetFirewallRuleGroupAssociation", - "route53resolver:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "route53resolver:UpdateFirewallRuleGroupAssociation", - "route53resolver:GetFirewallRuleGroupAssociation", - "route53resolver:TagResource", - "route53resolver:UntagResource", - "route53resolver:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "Arn", - "maxLength": 600, - "minLength": 1, - "type": "string" - }, - "CreationTime": { - "description": "Rfc3339TimeString", - "maxLength": 40, - "minLength": 20, - "type": "string" - }, - "CreatorRequestId": { - "description": "The id of the creator request.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "FirewallRuleGroupId": { - "description": "FirewallRuleGroupId", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Id": { - "description": "Id", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "ManagedOwnerName": { - "description": "ServicePrincipal", - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "ModificationTime": { - "description": "Rfc3339TimeString", - "maxLength": 40, - "minLength": 20, - "type": "string" - }, - "MutationProtection": { - "description": "MutationProtectionStatus", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "Name": { - "description": "FirewallRuleGroupAssociationName", - "maxLength": 64, - "minLength": 0, - "pattern": "(?!^[0-9]+$)([a-zA-Z0-9\\-_' ']+)", - "type": "string" - }, - "Priority": { - "description": "Priority", - "type": "integer" - }, - "Status": { - "description": "ResolverFirewallRuleGroupAssociation, possible values are COMPLETE, DELETING, UPDATING, and INACTIVE_OWNER_ACCOUNT_CLOSED.", - "enum": [ - "COMPLETE", - "DELETING", - "UPDATING", - "INACTIVE_OWNER_ACCOUNT_CLOSED" - ], - "type": "string" - }, - "StatusMessage": { - "description": "FirewallDomainListAssociationStatus", - "type": "string" - }, - "Tags": { - "description": "Tags", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "VpcId": { - "description": "VpcId", - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/ManagedOwnerName", - "/properties/Status", - "/properties/StatusMessage", - "/properties/CreatorRequestId", - "/properties/CreationTime", - "/properties/ModificationTime" - ], - "required": [ - "FirewallRuleGroupId", - "VpcId", - "Priority" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "route53resolver:TagResource", - "route53resolver:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Route53Resolver::FirewallRuleGroupAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FirewallRuleGroupId", + "/properties/VpcId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 127, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::Route53Resolver::FirewallRuleGroupAssociation.", + "handlers": { + "create": { + "permissions": [ + "route53resolver:AssociateFirewallRuleGroup", + "route53resolver:GetFirewallRuleGroupAssociation", + "route53resolver:TagResource", + "route53resolver:ListTagsForResource", + "ec2:DescribeVpcs" + ] + }, + "delete": { + "permissions": [ + "route53resolver:DisassociateFirewallRuleGroup", + "route53resolver:GetFirewallRuleGroupAssociation", + "route53resolver:UntagResource", + "route53resolver:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "route53resolver:ListFirewallRuleGroupAssociations", + "route53resolver:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "route53resolver:GetFirewallRuleGroupAssociation", + "route53resolver:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "route53resolver:UpdateFirewallRuleGroupAssociation", + "route53resolver:GetFirewallRuleGroupAssociation", + "route53resolver:TagResource", + "route53resolver:UntagResource", + "route53resolver:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "Arn", + "maxLength": 600, + "minLength": 1, + "type": "string" + }, + "CreationTime": { + "description": "Rfc3339TimeString", + "maxLength": 40, + "minLength": 20, + "type": "string" + }, + "CreatorRequestId": { + "description": "The id of the creator request.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "FirewallRuleGroupId": { + "description": "FirewallRuleGroupId", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Id": { + "description": "Id", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "ManagedOwnerName": { + "description": "ServicePrincipal", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "ModificationTime": { + "description": "Rfc3339TimeString", + "maxLength": 40, + "minLength": 20, + "type": "string" + }, + "MutationProtection": { + "description": "MutationProtectionStatus", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Name": { + "description": "FirewallRuleGroupAssociationName", + "maxLength": 64, + "minLength": 0, + "pattern": "(?!^[0-9]+$)([a-zA-Z0-9\\-_' ']+)", + "type": "string" + }, + "Priority": { + "description": "Priority", + "type": "integer" + }, + "Status": { + "description": "ResolverFirewallRuleGroupAssociation, possible values are COMPLETE, DELETING, UPDATING, and INACTIVE_OWNER_ACCOUNT_CLOSED.", + "enum": [ + "COMPLETE", + "DELETING", + "UPDATING", + "INACTIVE_OWNER_ACCOUNT_CLOSED" + ], + "type": "string" + }, + "StatusMessage": { + "description": "FirewallDomainListAssociationStatus", + "type": "string" + }, + "Tags": { + "description": "Tags", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VpcId": { + "description": "VpcId", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/ManagedOwnerName", + "/properties/Status", + "/properties/StatusMessage", + "/properties/CreatorRequestId", + "/properties/CreationTime", + "/properties/ModificationTime" + ], + "required": [ + "FirewallRuleGroupId", + "VpcId", + "Priority" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "route53resolver:TagResource", + "route53resolver:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Route53Resolver::FirewallRuleGroupAssociation" +} diff --git a/src/schema/aws-route53resolver-outpostresolver.json b/src/schema/aws-route53resolver-outpostresolver.json index 801aaebc..fd5f5786 100644 --- a/src/schema/aws-route53resolver-outpostresolver.json +++ b/src/schema/aws-route53resolver-outpostresolver.json @@ -1,184 +1,185 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/OutpostArn" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::Route53Resolver::OutpostResolver.", - "handlers": { - "create": { - "permissions": [ - "route53resolver:CreateOutpostResolver", - "route53resolver:GetOutpostResolver", - "route53resolver:ListTagsForResource", - "outposts:GetOutpost", - "route53resolver:TagResource" - ] - }, - "delete": { - "permissions": [ - "route53resolver:DeleteOutpostResolver", - "route53resolver:GetOutpostResolver", - "route53resolver:ListOutpostResolvers", - "route53resolver:ListResolverEndpoints" - ] - }, - "list": { - "permissions": [ - "route53resolver:ListOutpostResolvers", - "route53resolver:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "route53resolver:GetOutpostResolver", - "route53resolver:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "route53resolver:UpdateOutpostResolver", - "route53resolver:GetOutpostResolver", - "route53resolver:UntagResource", - "route53resolver:TagResource", - "route53resolver:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "The OutpostResolver ARN.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "CreationTime": { - "description": "The OutpostResolver creation time", - "maxLength": 40, - "minLength": 20, - "type": "string" - }, - "CreatorRequestId": { - "description": "The id of the creator request.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Id": { - "description": "Id", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "InstanceCount": { - "description": "The number of OutpostResolvers.", - "maximum": 256, - "minimum": 4, - "type": "integer" - }, - "ModificationTime": { - "description": "The OutpostResolver last modified time", - "maxLength": 40, - "minLength": 20, - "type": "string" - }, - "Name": { - "description": "The OutpostResolver name.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "OutpostArn": { - "description": "The Outpost ARN.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "PreferredInstanceType": { - "description": "The OutpostResolver instance type.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Status": { - "description": "The OutpostResolver status, possible values are CREATING, OPERATIONAL, UPDATING, DELETING, ACTION_NEEDED, FAILED_CREATION and FAILED_DELETION.", - "enum": [ - "CREATING", - "OPERATIONAL", - "DELETING", - "UPDATING", - "ACTION_NEEDED", - "FAILED_CREATION", - "FAILED_DELETION" - ], - "type": "string" - }, - "StatusMessage": { - "description": "The OutpostResolver status message.", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/Status", - "/properties/StatusMessage", - "/properties/CreationTime", - "/properties/ModificationTime", - "/properties/CreatorRequestId" - ], - "required": [ - "OutpostArn", - "PreferredInstanceType", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "route53resolver:TagResource", - "route53resolver:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Route53Resolver::OutpostResolver" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/OutpostArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::Route53Resolver::OutpostResolver.", + "handlers": { + "create": { + "permissions": [ + "route53resolver:CreateOutpostResolver", + "route53resolver:GetOutpostResolver", + "route53resolver:ListOutpostResolvers", + "route53resolver:ListTagsForResource", + "outposts:GetOutpost", + "route53resolver:TagResource" + ] + }, + "delete": { + "permissions": [ + "route53resolver:DeleteOutpostResolver", + "route53resolver:GetOutpostResolver", + "route53resolver:ListOutpostResolvers", + "route53resolver:ListResolverEndpoints" + ] + }, + "list": { + "permissions": [ + "route53resolver:ListOutpostResolvers", + "route53resolver:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "route53resolver:GetOutpostResolver", + "route53resolver:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "route53resolver:UpdateOutpostResolver", + "route53resolver:GetOutpostResolver", + "route53resolver:UntagResource", + "route53resolver:TagResource", + "route53resolver:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "The OutpostResolver ARN.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "CreationTime": { + "description": "The OutpostResolver creation time", + "maxLength": 40, + "minLength": 20, + "type": "string" + }, + "CreatorRequestId": { + "description": "The id of the creator request.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Id": { + "description": "Id", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "InstanceCount": { + "description": "The number of OutpostResolvers.", + "maximum": 256, + "minimum": 4, + "type": "integer" + }, + "ModificationTime": { + "description": "The OutpostResolver last modified time", + "maxLength": 40, + "minLength": 20, + "type": "string" + }, + "Name": { + "description": "The OutpostResolver name.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "OutpostArn": { + "description": "The Outpost ARN.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "PreferredInstanceType": { + "description": "The OutpostResolver instance type.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Status": { + "description": "The OutpostResolver status, possible values are CREATING, OPERATIONAL, UPDATING, DELETING, ACTION_NEEDED, FAILED_CREATION and FAILED_DELETION.", + "enum": [ + "CREATING", + "OPERATIONAL", + "DELETING", + "UPDATING", + "ACTION_NEEDED", + "FAILED_CREATION", + "FAILED_DELETION" + ], + "type": "string" + }, + "StatusMessage": { + "description": "The OutpostResolver status message.", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/Status", + "/properties/StatusMessage", + "/properties/CreationTime", + "/properties/ModificationTime", + "/properties/CreatorRequestId" + ], + "required": [ + "OutpostArn", + "PreferredInstanceType", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "route53resolver:TagResource", + "route53resolver:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Route53Resolver::OutpostResolver" +} diff --git a/src/schema/aws-route53resolver-resolverconfig.json b/src/schema/aws-route53resolver-resolverconfig.json index 8f5d7224..3f701d33 100644 --- a/src/schema/aws-route53resolver-resolverconfig.json +++ b/src/schema/aws-route53resolver-resolverconfig.json @@ -1,90 +1,90 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceId", - "/properties/AutodefinedReverseFlag" - ], - "description": "Resource schema for AWS::Route53Resolver::ResolverConfig.", - "handlers": { - "create": { - "permissions": [ - "route53resolver:UpdateResolverConfig", - "route53resolver:GetResolverConfig", - "ec2:DescribeVpcs" - ] - }, - "delete": { - "permissions": [ - "route53resolver:UpdateResolverConfig", - "route53resolver:ListResolverConfigs", - "ec2:DescribeVpcs" - ] - }, - "list": { - "permissions": [ - "route53resolver:ListResolverConfigs", - "ec2:DescribeVpcs" - ] - }, - "read": { - "permissions": [ - "route53resolver:GetResolverConfig", - "ec2:DescribeVpcs" - ] - } - }, - "primaryIdentifier": [ - "/properties/ResourceId" - ], - "properties": { - "AutodefinedReverse": { - "description": "ResolverAutodefinedReverseStatus, possible values are ENABLING, ENABLED, DISABLING AND DISABLED.", - "enum": [ - "ENABLING", - "ENABLED", - "DISABLING", - "DISABLED" - ], - "type": "string" - }, - "AutodefinedReverseFlag": { - "description": "Represents the desired status of AutodefinedReverse. The only supported value on creation is DISABLE. Deletion of this resource will return AutodefinedReverse to its default value (ENABLED).", - "enum": [ - "DISABLE" - ], - "type": "string" - }, - "Id": { - "description": "Id", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "OwnerId": { - "description": "AccountId", - "maxLength": 32, - "minLength": 12, - "type": "string" - }, - "ResourceId": { - "description": "ResourceId", - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "propertyTransform": { - "/properties/AutodefinedReverseFlag": "$join([AutodefinedReverseFlag, \"D\"])" - }, - "readOnlyProperties": [ - "/properties/OwnerId", - "/properties/Id", - "/properties/AutodefinedReverse" - ], - "required": [ - "ResourceId", - "AutodefinedReverseFlag" - ], - "taggable": false, - "typeName": "AWS::Route53Resolver::ResolverConfig" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceId", + "/properties/AutodefinedReverseFlag" + ], + "description": "Resource schema for AWS::Route53Resolver::ResolverConfig.", + "handlers": { + "create": { + "permissions": [ + "route53resolver:UpdateResolverConfig", + "route53resolver:GetResolverConfig", + "ec2:DescribeVpcs" + ] + }, + "delete": { + "permissions": [ + "route53resolver:UpdateResolverConfig", + "route53resolver:ListResolverConfigs", + "ec2:DescribeVpcs" + ] + }, + "list": { + "permissions": [ + "route53resolver:ListResolverConfigs", + "ec2:DescribeVpcs" + ] + }, + "read": { + "permissions": [ + "route53resolver:GetResolverConfig", + "ec2:DescribeVpcs" + ] + } + }, + "primaryIdentifier": [ + "/properties/ResourceId" + ], + "properties": { + "AutodefinedReverse": { + "description": "ResolverAutodefinedReverseStatus, possible values are ENABLING, ENABLED, DISABLING AND DISABLED.", + "enum": [ + "ENABLING", + "ENABLED", + "DISABLING", + "DISABLED" + ], + "type": "string" + }, + "AutodefinedReverseFlag": { + "description": "Represents the desired status of AutodefinedReverse. The only supported value on creation is DISABLE. Deletion of this resource will return AutodefinedReverse to its default value (ENABLED).", + "enum": [ + "DISABLE" + ], + "type": "string" + }, + "Id": { + "description": "Id", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "OwnerId": { + "description": "AccountId", + "maxLength": 32, + "minLength": 12, + "type": "string" + }, + "ResourceId": { + "description": "ResourceId", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "propertyTransform": { + "/properties/AutodefinedReverseFlag": "$join([AutodefinedReverseFlag, \"D\"])" + }, + "readOnlyProperties": [ + "/properties/OwnerId", + "/properties/Id", + "/properties/AutodefinedReverse" + ], + "required": [ + "ResourceId", + "AutodefinedReverseFlag" + ], + "taggable": false, + "typeName": "AWS::Route53Resolver::ResolverConfig" +} diff --git a/src/schema/aws-route53resolver-resolverdnssecconfig.json b/src/schema/aws-route53resolver-resolverdnssecconfig.json index 7a659333..72149223 100644 --- a/src/schema/aws-route53resolver-resolverdnssecconfig.json +++ b/src/schema/aws-route53resolver-resolverdnssecconfig.json @@ -1,79 +1,79 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceId" - ], - "description": "Resource schema for AWS::Route53Resolver::ResolverDNSSECConfig.", - "handlers": { - "create": { - "permissions": [ - "resolverdnssec:CreateConfig", - "route53resolver:UpdateResolverDnssecConfig", - "route53resolver:GetResolverDnssecConfig", - "ec2:DescribeVpcs" - ] - }, - "delete": { - "permissions": [ - "resolverdnssec:DeleteConfig", - "route53resolver:UpdateResolverDnssecConfig", - "route53resolver:ListResolverDnssecConfigs", - "ec2:DescribeVpcs" - ] - }, - "list": { - "permissions": [ - "resolverdnssec:ListConfig", - "route53resolver:ListResolverDnssecConfigs" - ] - }, - "read": { - "permissions": [ - "resolverdnssec:GetConfig", - "route53resolver:ListResolverDnssecConfigs" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "description": "Id", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "OwnerId": { - "description": "AccountId", - "maxLength": 32, - "minLength": 12, - "type": "string" - }, - "ResourceId": { - "description": "ResourceId", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "ValidationStatus": { - "description": "ResolverDNSSECValidationStatus, possible values are ENABLING, ENABLED, DISABLING AND DISABLED.", - "enum": [ - "ENABLING", - "ENABLED", - "DISABLING", - "DISABLED" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/OwnerId", - "/properties/Id", - "/properties/ValidationStatus" - ], - "tagging": { - "taggable": false - }, - "typeName": "AWS::Route53Resolver::ResolverDNSSECConfig" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceId" + ], + "description": "Resource schema for AWS::Route53Resolver::ResolverDNSSECConfig.", + "handlers": { + "create": { + "permissions": [ + "resolverdnssec:CreateConfig", + "route53resolver:UpdateResolverDnssecConfig", + "route53resolver:GetResolverDnssecConfig", + "ec2:DescribeVpcs" + ] + }, + "delete": { + "permissions": [ + "resolverdnssec:DeleteConfig", + "route53resolver:UpdateResolverDnssecConfig", + "route53resolver:ListResolverDnssecConfigs", + "ec2:DescribeVpcs" + ] + }, + "list": { + "permissions": [ + "resolverdnssec:ListConfig", + "route53resolver:ListResolverDnssecConfigs" + ] + }, + "read": { + "permissions": [ + "resolverdnssec:GetConfig", + "route53resolver:ListResolverDnssecConfigs" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "Id", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "OwnerId": { + "description": "AccountId", + "maxLength": 32, + "minLength": 12, + "type": "string" + }, + "ResourceId": { + "description": "ResourceId", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "ValidationStatus": { + "description": "ResolverDNSSECValidationStatus, possible values are ENABLING, ENABLED, DISABLING AND DISABLED.", + "enum": [ + "ENABLING", + "ENABLED", + "DISABLING", + "DISABLED" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/OwnerId", + "/properties/Id", + "/properties/ValidationStatus" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::Route53Resolver::ResolverDNSSECConfig" +} diff --git a/src/schema/aws-route53resolver-resolverendpoint.json b/src/schema/aws-route53resolver-resolverendpoint.json index d95e84ba..7b78f014 100644 --- a/src/schema/aws-route53resolver-resolverendpoint.json +++ b/src/schema/aws-route53resolver-resolverendpoint.json @@ -1,118 +1,118 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/OutpostArn", - "/properties/Direction", - "/properties/SecurityGroupIds", - "/properties/PreferredInstanceType" - ], - "definitions": { - "IpAddressRequest": { - "additionalProperties": false, - "properties": { - "Ip": { - "type": "string" - }, - "Ipv6": { - "type": "string" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "SubnetId" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Route53Resolver::ResolverEndpoint", - "primaryIdentifier": [ - "/properties/ResolverEndpointId" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Direction": { - "type": "string" - }, - "HostVPCId": { - "type": "string" - }, - "IpAddressCount": { - "type": "string" - }, - "IpAddresses": { - "items": { - "$ref": "#/definitions/IpAddressRequest" - }, - "type": "array", - "uniqueItems": false - }, - "Name": { - "type": "string" - }, - "OutpostArn": { - "type": "string" - }, - "PreferredInstanceType": { - "type": "string" - }, - "Protocols": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ResolverEndpointId": { - "type": "string" - }, - "ResolverEndpointType": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ResolverEndpointId", - "/properties/IpAddressCount", - "/properties/Arn", - "/properties/HostVPCId" - ], - "required": [ - "IpAddresses", - "Direction", - "SecurityGroupIds" - ], - "typeName": "AWS::Route53Resolver::ResolverEndpoint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/OutpostArn", + "/properties/Direction", + "/properties/SecurityGroupIds", + "/properties/PreferredInstanceType" + ], + "definitions": { + "IpAddressRequest": { + "additionalProperties": false, + "properties": { + "Ip": { + "type": "string" + }, + "Ipv6": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Route53Resolver::ResolverEndpoint", + "primaryIdentifier": [ + "/properties/ResolverEndpointId" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Direction": { + "type": "string" + }, + "HostVPCId": { + "type": "string" + }, + "IpAddressCount": { + "type": "string" + }, + "IpAddresses": { + "items": { + "$ref": "#/definitions/IpAddressRequest" + }, + "type": "array", + "uniqueItems": false + }, + "Name": { + "type": "string" + }, + "OutpostArn": { + "type": "string" + }, + "PreferredInstanceType": { + "type": "string" + }, + "Protocols": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ResolverEndpointId": { + "type": "string" + }, + "ResolverEndpointType": { + "type": "string" + }, + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ResolverEndpointId", + "/properties/IpAddressCount", + "/properties/Arn", + "/properties/HostVPCId" + ], + "required": [ + "IpAddresses", + "Direction", + "SecurityGroupIds" + ], + "typeName": "AWS::Route53Resolver::ResolverEndpoint" +} diff --git a/src/schema/aws-route53resolver-resolverqueryloggingconfig.json b/src/schema/aws-route53resolver-resolverqueryloggingconfig.json index 48495a0b..e3f8ffcf 100644 --- a/src/schema/aws-route53resolver-resolverqueryloggingconfig.json +++ b/src/schema/aws-route53resolver-resolverqueryloggingconfig.json @@ -1,130 +1,183 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/DestinationArn" - ], - "description": "Resource schema for AWS::Route53Resolver::ResolverQueryLoggingConfig.", - "handlers": { - "create": { - "permissions": [ - "resolverquerylogging:CreateConfig", - "resolverquerylogging:GetConfig", - "route53resolver:CreateResolverQueryLogConfig", - "route53resolver:GetResolverQueryLogConfig", - "logs:CreateLogDelivery", - "logs:GetLogDelivery", - "logs:UpdateLogDelivery", - "logs:DeleteLogDelivery", - "logs:ListLogDeliveries", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "resolverquerylogging:DeleteConfig", - "resolverquerylogging:ListConfig", - "route53resolver:DeleteResolverQueryLogConfig", - "route53resolver:ListResolverQueryLogConfigs" - ] - }, - "list": { - "permissions": [ - "resolverquerylogging:ListConfig", - "route53resolver:ListResolverQueryLogConfigs" - ] - }, - "read": { - "permissions": [ - "resolverquerylogging:GetConfig", - "route53resolver:GetResolverQueryLogConfig" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "description": "Arn", - "maxLength": 600, - "minLength": 1, - "type": "string" - }, - "AssociationCount": { - "description": "Count", - "type": "integer" - }, - "CreationTime": { - "description": "Rfc3339TimeString", - "maxLength": 40, - "minLength": 20, - "type": "string" - }, - "CreatorRequestId": { - "description": "The id of the creator request.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "DestinationArn": { - "description": "destination arn", - "maxLength": 600, - "minLength": 1, - "type": "string" - }, - "Id": { - "description": "ResourceId", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "ResolverQueryLogConfigName", - "maxLength": 64, - "minLength": 1, - "pattern": "(?!^[0-9]+$)([a-zA-Z0-9\\-_' ']+)", - "type": "string" - }, - "OwnerId": { - "description": "AccountId", - "maxLength": 32, - "minLength": 12, - "type": "string" - }, - "ShareStatus": { - "description": "ShareStatus, possible values are NOT_SHARED, SHARED_WITH_ME, SHARED_BY_ME.", - "enum": [ - "NOT_SHARED", - "SHARED_WITH_ME", - "SHARED_BY_ME" - ], - "type": "string" - }, - "Status": { - "description": "ResolverQueryLogConfigStatus, possible values are CREATING, CREATED, DELETED AND FAILED.", - "enum": [ - "CREATING", - "CREATED", - "DELETING", - "FAILED" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/OwnerId", - "/properties/Status", - "/properties/ShareStatus", - "/properties/AssociationCount", - "/properties/Arn", - "/properties/CreatorRequestId", - "/properties/CreationTime", - "/properties/Id" - ], - "taggable": false, - "typeName": "AWS::Route53Resolver::ResolverQueryLoggingConfig" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/DestinationArn", + "/properties/Tags" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::Route53Resolver::ResolverQueryLoggingConfig.", + "handlers": { + "create": { + "permissions": [ + "resolverquerylogging:CreateConfig", + "resolverquerylogging:GetConfig", + "route53resolver:CreateResolverQueryLogConfig", + "route53resolver:GetResolverQueryLogConfig", + "logs:CreateLogDelivery", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "iam:CreateServiceLinkedRole", + "route53resolver:ListTagsForResource", + "route53resolver:TagResource", + "route53resolver:ListResolverQueryLogConfigs" + ] + }, + "delete": { + "permissions": [ + "resolverquerylogging:DeleteConfig", + "resolverquerylogging:ListConfig", + "route53resolver:DeleteResolverQueryLogConfig", + "route53resolver:ListResolverQueryLogConfigs", + "route53resolver:UntagResource", + "route53resolver:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "resolverquerylogging:ListConfig", + "route53resolver:ListResolverQueryLogConfigs", + "route53resolver:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "resolverquerylogging:GetConfig", + "route53resolver:GetResolverQueryLogConfig", + "route53resolver:ListTagsForResource", + "route53resolver:ListResolverQueryLogConfigs" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "description": "Arn", + "maxLength": 600, + "minLength": 1, + "type": "string" + }, + "AssociationCount": { + "description": "Count", + "type": "integer" + }, + "CreationTime": { + "description": "Rfc3339TimeString", + "maxLength": 40, + "minLength": 20, + "type": "string" + }, + "CreatorRequestId": { + "description": "The id of the creator request.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "DestinationArn": { + "description": "destination arn", + "maxLength": 600, + "minLength": 1, + "type": "string" + }, + "Id": { + "description": "ResourceId", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "ResolverQueryLogConfigName", + "maxLength": 64, + "minLength": 1, + "pattern": "(?!^[0-9]+$)([a-zA-Z0-9\\-_' ']+)", + "type": "string" + }, + "OwnerId": { + "description": "AccountId", + "maxLength": 32, + "minLength": 12, + "type": "string" + }, + "ShareStatus": { + "description": "ShareStatus, possible values are NOT_SHARED, SHARED_WITH_ME, SHARED_BY_ME.", + "enum": [ + "NOT_SHARED", + "SHARED_WITH_ME", + "SHARED_BY_ME" + ], + "type": "string" + }, + "Status": { + "description": "ResolverQueryLogConfigStatus, possible values are CREATING, CREATED, DELETED AND FAILED.", + "enum": [ + "CREATING", + "CREATED", + "DELETING", + "FAILED" + ], + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/OwnerId", + "/properties/Status", + "/properties/ShareStatus", + "/properties/AssociationCount", + "/properties/Arn", + "/properties/CreatorRequestId", + "/properties/CreationTime", + "/properties/Id" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "route53resolver:TagResource", + "route53resolver:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Route53Resolver::ResolverQueryLoggingConfig" +} diff --git a/src/schema/aws-route53resolver-resolverqueryloggingconfigassociation.json b/src/schema/aws-route53resolver-resolverqueryloggingconfigassociation.json index 2b54201a..eb268fa6 100644 --- a/src/schema/aws-route53resolver-resolverqueryloggingconfigassociation.json +++ b/src/schema/aws-route53resolver-resolverqueryloggingconfigassociation.json @@ -1,102 +1,105 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResolverQueryLogConfigId", - "/properties/ResourceId" - ], - "description": "Resource schema for AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation.", - "handlers": { - "create": { - "permissions": [ - "resolverquerylogging:AssociateConfig", - "resolverquerylogging:GetConfigAssociation", - "route53resolver:AssociateResolverQueryLogConfig", - "ec2:DescribeVpcs", - "route53resolver:GetResolverQueryLogConfigAssociation" - ] - }, - "delete": { - "permissions": [ - "resolverquerylogging:DisassociateConfig", - "resolverquerylogging:ListConfigAssociation", - "route53resolver:DisassociateResolverQueryLogConfig", - "route53resolver:ListResolverQueryLogConfigAssociations", - "route53resolver:GetResolverQueryLogConfigAssociation" - ] - }, - "list": { - "permissions": [ - "resolverquerylogging:ListConfigAssociations", - "route53resolver:ListResolverQueryLogConfigAssociations" - ] - }, - "read": { - "permissions": [ - "resolverquerylogging:GetConfigAssociation", - "route53resolver:GetResolverQueryLogConfigAssociation" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CreationTime": { - "description": "Rfc3339TimeString", - "maxLength": 40, - "minLength": 20, - "type": "string" - }, - "Error": { - "description": "ResolverQueryLogConfigAssociationError", - "enum": [ - "NONE", - "DESTINATION_NOT_FOUND", - "ACCESS_DENIED" - ], - "type": "string" - }, - "ErrorMessage": { - "description": "ResolverQueryLogConfigAssociationErrorMessage", - "type": "string" - }, - "Id": { - "description": "Id", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "ResolverQueryLogConfigId": { - "description": "ResolverQueryLogConfigId", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "ResourceId": { - "description": "ResourceId", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Status": { - "description": "ResolverQueryLogConfigAssociationStatus", - "enum": [ - "CREATING", - "ACTIVE", - "ACTION_NEEDED", - "DELETING", - "FAILED", - "OVERRIDDEN" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/Error", - "/properties/ErrorMessage", - "/properties/CreationTime", - "/properties/Id" - ], - "typeName": "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResolverQueryLogConfigId", + "/properties/ResourceId" + ], + "description": "Resource schema for AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation.", + "handlers": { + "create": { + "permissions": [ + "resolverquerylogging:AssociateConfig", + "resolverquerylogging:GetConfigAssociation", + "route53resolver:AssociateResolverQueryLogConfig", + "ec2:DescribeVpcs", + "route53resolver:GetResolverQueryLogConfigAssociation" + ] + }, + "delete": { + "permissions": [ + "resolverquerylogging:DisassociateConfig", + "resolverquerylogging:ListConfigAssociation", + "route53resolver:DisassociateResolverQueryLogConfig", + "route53resolver:ListResolverQueryLogConfigAssociations", + "route53resolver:GetResolverQueryLogConfigAssociation" + ] + }, + "list": { + "permissions": [ + "resolverquerylogging:ListConfigAssociations", + "route53resolver:ListResolverQueryLogConfigAssociations" + ] + }, + "read": { + "permissions": [ + "resolverquerylogging:GetConfigAssociation", + "route53resolver:GetResolverQueryLogConfigAssociation" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CreationTime": { + "description": "Rfc3339TimeString", + "maxLength": 40, + "minLength": 20, + "type": "string" + }, + "Error": { + "description": "ResolverQueryLogConfigAssociationError", + "enum": [ + "NONE", + "DESTINATION_NOT_FOUND", + "ACCESS_DENIED" + ], + "type": "string" + }, + "ErrorMessage": { + "description": "ResolverQueryLogConfigAssociationErrorMessage", + "type": "string" + }, + "Id": { + "description": "Id", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "ResolverQueryLogConfigId": { + "description": "ResolverQueryLogConfigId", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "ResourceId": { + "description": "ResourceId", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Status": { + "description": "ResolverQueryLogConfigAssociationStatus", + "enum": [ + "CREATING", + "ACTIVE", + "ACTION_NEEDED", + "DELETING", + "FAILED", + "OVERRIDDEN" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Status", + "/properties/Error", + "/properties/ErrorMessage", + "/properties/CreationTime", + "/properties/Id" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation" +} diff --git a/src/schema/aws-route53resolver-resolverrule.json b/src/schema/aws-route53resolver-resolverrule.json index a85880fd..35f244f8 100644 --- a/src/schema/aws-route53resolver-resolverrule.json +++ b/src/schema/aws-route53resolver-resolverrule.json @@ -1,186 +1,186 @@ -{ - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/DomainName" - ], - "createOnlyProperties": [ - "/properties/RuleType" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TargetAddress": { - "additionalProperties": false, - "properties": { - "Ip": { - "description": "One IP address that you want to forward DNS queries to. You can specify only IPv4 addresses. ", - "type": "string" - }, - "Ipv6": { - "description": "One IPv6 address that you want to forward DNS queries to. You can specify only IPv6 addresses. ", - "type": "string" - }, - "Port": { - "description": "The port at Ip that you want to forward DNS queries to. ", - "maxLength": 65535, - "minLength": 0, - "type": "string" - }, - "Protocol": { - "description": "The protocol that you want to use to forward DNS queries. ", - "enum": [ - "Do53", - "DoH" - ], - "type": "string" - }, - "ServerNameIndication": { - "description": "The SNI of the target name servers for DoH/DoH-FIPS outbound endpoints", - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Route53Resolver::ResolverRule", - "handlers": { - "create": { - "permissions": [ - "route53resolver:CreateResolverRule", - "route53resolver:GetResolverRule", - "route53resolver:ListTagsForResource", - "route53resolver:TagResource" - ] - }, - "delete": { - "permissions": [ - "route53resolver:DeleteResolverRule", - "route53resolver:GetResolverRule" - ] - }, - "list": { - "permissions": [ - "route53resolver:ListResolverRules" - ] - }, - "read": { - "permissions": [ - "route53resolver:GetResolverRule", - "route53resolver:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "route53resolver:UpdateResolverRule", - "route53resolver:GetResolverRule", - "route53resolver:ListTagsForResource", - "route53resolver:TagResource", - "route53resolver:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ResolverRuleId" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the resolver rule.", - "type": "string" - }, - "DomainName": { - "description": "DNS queries for this domain name are forwarded to the IP addresses that are specified in TargetIps", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "The name for the Resolver rule", - "maxLength": 64, - "minLength": 0, - "type": "string" - }, - "ResolverEndpointId": { - "description": "The ID of the endpoint that the rule is associated with.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "ResolverRuleId": { - "description": "The ID of the endpoint that the rule is associated with.", - "type": "string" - }, - "RuleType": { - "description": "When you want to forward DNS queries for specified domain name to resolvers on your network, specify FORWARD. When you have a forwarding rule to forward DNS queries for a domain to your network and you want Resolver to process queries for a subdomain of that domain, specify SYSTEM.", - "enum": [ - "FORWARD", - "SYSTEM", - "RECURSIVE", - "DELEGATE" - ], - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TargetIps": { - "description": "An array that contains the IP addresses and ports that an outbound endpoint forwards DNS queries to. Typically, these are the IP addresses of DNS resolvers on your network. Specify IPv4 addresses. IPv6 is not supported.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TargetAddress" - }, - "type": "array", - "uniqueItems": false - } - }, - "propertyTransform": { - "/properties/DomainName": "$join([DomainName, \".\"]) $OR DomainName" - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/ResolverRuleId" - ], - "required": [ - "RuleType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53resolver.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "route53resolver:TagResource", - "route53resolver:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Route53Resolver::ResolverRule" -} +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/DomainName" + ], + "createOnlyProperties": [ + "/properties/RuleType" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TargetAddress": { + "additionalProperties": false, + "properties": { + "Ip": { + "description": "One IP address that you want to forward DNS queries to. You can specify only IPv4 addresses. ", + "type": "string" + }, + "Ipv6": { + "description": "One IPv6 address that you want to forward DNS queries to. You can specify only IPv6 addresses. ", + "type": "string" + }, + "Port": { + "description": "The port at Ip that you want to forward DNS queries to. ", + "maxLength": 65535, + "minLength": 0, + "type": "string" + }, + "Protocol": { + "description": "The protocol that you want to use to forward DNS queries. ", + "enum": [ + "Do53", + "DoH" + ], + "type": "string" + }, + "ServerNameIndication": { + "description": "The SNI of the target name servers for DoH/DoH-FIPS outbound endpoints", + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Route53Resolver::ResolverRule", + "handlers": { + "create": { + "permissions": [ + "route53resolver:CreateResolverRule", + "route53resolver:GetResolverRule", + "route53resolver:ListTagsForResource", + "route53resolver:TagResource" + ] + }, + "delete": { + "permissions": [ + "route53resolver:DeleteResolverRule", + "route53resolver:GetResolverRule" + ] + }, + "list": { + "permissions": [ + "route53resolver:ListResolverRules" + ] + }, + "read": { + "permissions": [ + "route53resolver:GetResolverRule", + "route53resolver:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "route53resolver:UpdateResolverRule", + "route53resolver:GetResolverRule", + "route53resolver:ListTagsForResource", + "route53resolver:TagResource", + "route53resolver:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ResolverRuleId" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the resolver rule.", + "type": "string" + }, + "DomainName": { + "description": "DNS queries for this domain name are forwarded to the IP addresses that are specified in TargetIps", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "The name for the Resolver rule", + "maxLength": 64, + "minLength": 0, + "type": "string" + }, + "ResolverEndpointId": { + "description": "The ID of the endpoint that the rule is associated with.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "ResolverRuleId": { + "description": "The ID of the endpoint that the rule is associated with.", + "type": "string" + }, + "RuleType": { + "description": "When you want to forward DNS queries for specified domain name to resolvers on your network, specify FORWARD. When you have a forwarding rule to forward DNS queries for a domain to your network and you want Resolver to process queries for a subdomain of that domain, specify SYSTEM.", + "enum": [ + "FORWARD", + "SYSTEM", + "RECURSIVE", + "DELEGATE" + ], + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TargetIps": { + "description": "An array that contains the IP addresses and ports that an outbound endpoint forwards DNS queries to. Typically, these are the IP addresses of DNS resolvers on your network. Specify IPv4 addresses. IPv6 is not supported.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TargetAddress" + }, + "type": "array", + "uniqueItems": false + } + }, + "propertyTransform": { + "/properties/DomainName": "$join([DomainName, \".\"]) $OR DomainName" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ResolverRuleId" + ], + "required": [ + "RuleType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53resolver.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "route53resolver:TagResource", + "route53resolver:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Route53Resolver::ResolverRule" +} diff --git a/src/schema/aws-route53resolver-resolverruleassociation.json b/src/schema/aws-route53resolver-resolverruleassociation.json index e9fe76c5..0f7c3dc3 100644 --- a/src/schema/aws-route53resolver-resolverruleassociation.json +++ b/src/schema/aws-route53resolver-resolverruleassociation.json @@ -1,64 +1,65 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/VPCId", - "/properties/ResolverRuleId" - ], - "description": "In the response to an [AssociateResolverRule](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_AssociateResolverRule.html), [DisassociateResolverRule](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_DisassociateResolverRule.html), or [ListResolverRuleAssociations](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_ListResolverRuleAssociations.html) request, provides information about an association between a resolver rule and a VPC. The association determines which DNS queries that originate in the VPC are forwarded to your network.", - "handlers": { - "create": { - "permissions": [ - "route53resolver:AssociateResolverRule", - "route53resolver:GetResolverRuleAssociation", - "ec2:DescribeVpcs" - ] - }, - "delete": { - "permissions": [ - "route53resolver:DisassociateResolverRule", - "route53resolver:GetResolverRuleAssociation" - ] - }, - "list": { - "permissions": [ - "route53resolver:ListResolverRuleAssociations" - ] - }, - "read": { - "permissions": [ - "route53resolver:GetResolverRuleAssociation" - ] - } - }, - "primaryIdentifier": [ - "/properties/ResolverRuleAssociationId" - ], - "properties": { - "Name": { - "description": "The name of an association between a Resolver rule and a VPC.", - "type": "string" - }, - "ResolverRuleAssociationId": { - "description": "", - "type": "string" - }, - "ResolverRuleId": { - "description": "The ID of the Resolver rule that you associated with the VPC that is specified by ``VPCId``.", - "type": "string" - }, - "VPCId": { - "description": "The ID of the VPC that you associated the Resolver rule with.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ResolverRuleAssociationId" - ], - "required": [ - "VPCId", - "ResolverRuleId" - ], - "taggable": false, - "typeName": "AWS::Route53Resolver::ResolverRuleAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/VPCId", + "/properties/ResolverRuleId" + ], + "description": "In the response to an [AssociateResolverRule](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_AssociateResolverRule.html), [DisassociateResolverRule](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_DisassociateResolverRule.html), or [ListResolverRuleAssociations](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_ListResolverRuleAssociations.html) request, provides information about an association between a resolver rule and a VPC. The association determines which DNS queries that originate in the VPC are forwarded to your network.", + "handlers": { + "create": { + "permissions": [ + "route53resolver:AssociateResolverRule", + "route53resolver:GetResolverRuleAssociation", + "ec2:DescribeVpcs" + ] + }, + "delete": { + "permissions": [ + "route53resolver:DisassociateResolverRule", + "route53resolver:GetResolverRuleAssociation" + ] + }, + "list": { + "permissions": [ + "route53resolver:ListResolverRuleAssociations", + "ec2:DescribeVpcs" + ] + }, + "read": { + "permissions": [ + "route53resolver:GetResolverRuleAssociation" + ] + } + }, + "primaryIdentifier": [ + "/properties/ResolverRuleAssociationId" + ], + "properties": { + "Name": { + "description": "The name of an association between a Resolver rule and a VPC.", + "type": "string" + }, + "ResolverRuleAssociationId": { + "description": "", + "type": "string" + }, + "ResolverRuleId": { + "description": "The ID of the Resolver rule that you associated with the VPC that is specified by ``VPCId``.", + "type": "string" + }, + "VPCId": { + "description": "The ID of the VPC that you associated the Resolver rule with.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ResolverRuleAssociationId" + ], + "required": [ + "VPCId", + "ResolverRuleId" + ], + "taggable": false, + "typeName": "AWS::Route53Resolver::ResolverRuleAssociation" +} diff --git a/src/schema/aws-rum-appmonitor.json b/src/schema/aws-rum-appmonitor.json index 37484154..84d89ae2 100644 --- a/src/schema/aws-rum-appmonitor.json +++ b/src/schema/aws-rum-appmonitor.json @@ -1,424 +1,521 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Id" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "AppMonitorConfiguration": { - "additionalProperties": false, - "description": "AppMonitor configuration", - "properties": { - "AllowCookies": { - "description": "If you set this to true, the RUM web client sets two cookies, a session cookie and a user cookie. The cookies allow the RUM web client to collect data relating to the number of users an application has and the behavior of the application across a sequence of events. Cookies are stored in the top-level domain of the current page.", - "type": "boolean" - }, - "EnableXRay": { - "description": "If you set this to true, RUM enables xray tracing for the user sessions that RUM samples. RUM adds an xray trace header to allowed HTTP requests. It also records an xray segment for allowed HTTP requests. You can see traces and segments from these user sessions in the xray console and the CW ServiceLens console.", - "type": "boolean" - }, - "ExcludedPages": { - "$ref": "#/definitions/Pages", - "description": "A list of URLs in your website or application to exclude from RUM data collection. You can't include both ExcludedPages and IncludedPages in the same operation." - }, - "FavoritePages": { - "$ref": "#/definitions/FavoritePages", - "description": "A list of pages in the RUM console that are to be displayed with a favorite icon." - }, - "GuestRoleArn": { - "$ref": "#/definitions/Arn", - "description": "The ARN of the guest IAM role that is attached to the identity pool that is used to authorize the sending of data to RUM." - }, - "IdentityPoolId": { - "description": "The ID of the identity pool that is used to authorize the sending of data to RUM.", - "maxLength": 55, - "minLength": 1, - "pattern": "[\\w-]+:[0-9a-f-]+", - "type": "string" - }, - "IncludedPages": { - "$ref": "#/definitions/Pages", - "description": "If this app monitor is to collect data from only certain pages in your application, this structure lists those pages. You can't include both ExcludedPages and IncludedPages in the same operation." - }, - "MetricDestinations": { - "description": "An array of structures which define the destinations and the metrics that you want to send.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MetricDestination" - }, - "maxItems": 20, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "SessionSampleRate": { - "description": "Specifies the percentage of user sessions to use for RUM data collection. Choosing a higher percentage gives you more data but also incurs more costs. The number you specify is the percentage of user sessions that will be used. If you omit this parameter, the default of 10 is used.", - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "Telemetries": { - "description": "An array that lists the types of telemetry data that this app monitor is to collect.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Telemetry" - }, - "type": "array" - } - }, - "type": "object" - }, - "Arn": { - "description": "Resource ARN", - "pattern": "arn:[^:]*:[^:]*:[^:]*:[^:]*:.*", - "type": "string" - }, - "CustomEvents": { - "additionalProperties": false, - "description": "AppMonitor custom events configuration", - "properties": { - "Status": { - "$ref": "#/definitions/CustomEventsStatus", - "description": "Indicates whether AppMonitor accepts custom events." - } - }, - "type": "object" - }, - "CustomEventsStatus": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "FavoritePages": { - "description": "List of favorite pages", - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - }, - "MetricDefinition": { - "additionalProperties": false, - "description": "A single metric definition", - "properties": { - "DimensionKeys": { - "additionalProperties": false, - "description": "Use this field only if you are sending the metric to CloudWatch.\n\nThis field is a map of field paths to dimension names. It defines the dimensions to associate with this metric in CloudWatch. For extended metrics, valid values for the entries in this field are the following:\n\n\"metadata.pageId\": \"PageId\"\n\n\"metadata.browserName\": \"BrowserName\"\n\n\"metadata.deviceType\": \"DeviceType\"\n\n\"metadata.osName\": \"OSName\"\n\n\"metadata.countryCode\": \"CountryCode\"\n\n\"event_details.fileType\": \"FileType\"\n\nAll dimensions listed in this field must also be included in EventPattern.", - "patternProperties": { - "^(?!:).*[^\\s].*": { - "maxLength": 255, - "minLength": 1, - "pattern": ".*[^\\s].*", - "type": "string" - } - }, - "type": "object" - }, - "EventPattern": { - "description": "The pattern that defines the metric, specified as a JSON object. RUM checks events that happen in a user's session against the pattern, and events that match the pattern are sent to the metric destination.\n\nWhen you define extended metrics, the metric definition is not valid if EventPattern is omitted.\n\nExample event patterns:\n\n'{ \"event_type\": [\"com.amazon.rum.js_error_event\"], \"metadata\": { \"browserName\": [ \"Chrome\", \"Safari\" ], } }'\n\n'{ \"event_type\": [\"com.amazon.rum.performance_navigation_event\"], \"metadata\": { \"browserName\": [ \"Chrome\", \"Firefox\" ] }, \"event_details\": { \"duration\": [{ \"numeric\": [ \"<\", 2000 ] }] } }'\n\n'{ \"event_type\": [\"com.amazon.rum.performance_navigation_event\"], \"metadata\": { \"browserName\": [ \"Chrome\", \"Safari\" ], \"countryCode\": [ \"US\" ] }, \"event_details\": { \"duration\": [{ \"numeric\": [ \">=\", 2000, \"<\", 8000 ] }] } }'\n\nIf the metrics destination' is CloudWatch and the event also matches a value in DimensionKeys, then the metric is published with the specified dimensions.", - "maxLength": 4000, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "The name for the metric that is defined in this structure. For extended metrics, valid values are the following:\n\nPerformanceNavigationDuration\n\nPerformanceResourceDuration\n\nNavigationSatisfiedTransaction\n\nNavigationToleratedTransaction\n\nNavigationFrustratedTransaction\n\nWebVitalsCumulativeLayoutShift\n\nWebVitalsFirstInputDelay\n\nWebVitalsLargestContentfulPaint\n\nJsErrorCount\n\nHttpErrorCount\n\nSessionCount", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Namespace": { - "description": "The namespace used by CloudWatch Metrics for the metric that is defined in this structure", - "maxLength": 237, - "minLength": 1, - "pattern": "[a-zA-Z0-9-._/#:]+$", - "type": "string" - }, - "UnitLabel": { - "description": "The CloudWatch metric unit to use for this metric. If you omit this field, the metric is recorded with no unit.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "ValueKey": { - "description": "The field within the event object that the metric value is sourced from.\n\nIf you omit this field, a hardcoded value of 1 is pushed as the metric value. This is useful if you just want to count the number of events that the filter catches.\n\nIf this metric is sent to Evidently, this field will be passed to Evidently raw and Evidently will handle data extraction from the event.", - "maxLength": 256, - "minLength": 1, - "pattern": ".*", - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "MetricDestination": { - "additionalProperties": false, - "description": "An structure which defines the destination and the metrics that you want to send.", - "properties": { - "Destination": { - "description": "Defines the destination to send the metrics to. Valid values are CloudWatch and Evidently. If you specify Evidently, you must also specify the ARN of the Evidently experiment that is to be the destination and an IAM role that has permission to write to the experiment.", - "enum": [ - "CloudWatch", - "Evidently" - ], - "type": "string" - }, - "DestinationArn": { - "description": "Use this parameter only if Destination is Evidently. This parameter specifies the ARN of the Evidently experiment that will receive the extended metrics.", - "pattern": "arn:[^:]*:[^:]*:[^:]*:[^:]*:.*", - "type": "string" - }, - "IamRoleArn": { - "description": "This parameter is required if Destination is Evidently. If Destination is CloudWatch, do not use this parameter.\n\nThis parameter specifies the ARN of an IAM role that RUM will assume to write to the Evidently experiment that you are sending metrics to. This role must have permission to write to that experiment.", - "pattern": "arn:[^:]*:[^:]*:[^:]*:[^:]*:.*", - "type": "string" - }, - "MetricDefinitions": { - "description": "An array of structures which define the metrics that you want to send.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MetricDefinition" - }, - "maxItems": 2000, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Destination" - ], - "type": "object" - }, - "Pages": { - "description": "List of url pages", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Url" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TagDef": { - "description": "Assigns one or more tags (key-value pairs) to the app monitor. Tags can help you organize and categorize your resources. You can also use them to scope user permissions by granting a user permission to access or change only resources with certain tag values. Tags don't have any semantic meaning to AWS and are interpreted strictly as strings of characters.You can associate as many as 50 tags with an app monitor.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Telemetry": { - "enum": [ - "errors", - "performance", - "http" - ], - "type": "string" - }, - "Url": { - "description": "Page Url", - "maxLength": 1260, - "minLength": 1, - "pattern": "https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)", - "type": "string" - } - }, - "description": "Resource Type definition for AWS::RUM::AppMonitor", - "handlers": { - "create": { - "permissions": [ - "rum:GetAppMonitor", - "rum:CreateAppMonitor", - "dynamodb:GetItem", - "dynamodb:PutItem", - "s3:GetObject", - "s3:PutObject", - "s3:GetObjectAcl", - "s3:DoesObjectExist", - "logs:CreateLogDelivery", - "logs:CreateLogGroup", - "logs:GetLogDelivery", - "logs:UpdateLogDelivery", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "logs:PutRetentionPolicy", - "rum:TagResource", - "rum:ListTagsForResource", - "cognito-identity:DescribeIdentityPool", - "iam:GetRole", - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "rum:PutRumMetricsDestination", - "rum:BatchCreateRumMetricDefinitions", - "rum:ListRumMetricsDestinations", - "rum:BatchGetRumMetricDefinitions" - ] - }, - "delete": { - "permissions": [ - "rum:GetAppMonitor", - "rum:DeleteAppMonitor", - "dynamodb:DeleteItem", - "dynamodb:Query", - "logs:DeleteLogDelivery", - "s3:DeleteObject", - "s3:DoesObjectExist", - "rum:UntagResource", - "rum:ListTagsForResource", - "rum:DeleteRumMetricsDestination", - "rum:BatchDeleteRumMetricDefinitions", - "rum:ListRumMetricsDestinations", - "rum:BatchGetRumMetricDefinitions" - ] - }, - "list": { - "permissions": [ - "rum:ListAppMonitors", - "dynamodb:DescribeTable", - "rum:GetAppMonitor", - "dynamodb:GetItem", - "dynamodb:BatchGetItem", - "dynamodb:Query", - "s3:GetObject", - "s3:DoesObjectExist", - "s3:GetObjectAcl", - "logs:DescribeLogGroups", - "rum:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "rum:GetAppMonitor", - "dynamodb:GetItem", - "s3:GetObject", - "s3:DoesObjectExist", - "s3:GetObjectAcl", - "rum:ListTagsForResource", - "rum:ListRumMetricsDestinations", - "rum:BatchGetRumMetricDefinitions" - ] - }, - "update": { - "permissions": [ - "rum:GetAppMonitor", - "rum:UpdateAppMonitor", - "dynamodb:GetItem", - "dynamodb:PutItem", - "dynamodb:UpdateItem", - "dynamodb:Query", - "s3:GetObject", - "s3:PutObject", - "s3:GetObjectAcl", - "s3:DoesObjectExist", - "logs:CreateLogDelivery", - "logs:CreateLogGroup", - "logs:GetLogDelivery", - "logs:UpdateLogDelivery", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "logs:PutRetentionPolicy", - "rum:TagResource", - "rum:UntagResource", - "rum:ListTagsForResource", - "iam:GetRole", - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "rum:PutRumMetricsDestination", - "rum:DeleteRumMetricsDestination", - "rum:ListRumMetricsDestinations", - "rum:BatchCreateRumMetricDefinitions", - "rum:BatchDeleteRumMetricDefinitions", - "rum:BatchGetRumMetricDefinitions", - "rum:UpdateRumMetricDefinition" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "AppMonitorConfiguration": { - "$ref": "#/definitions/AppMonitorConfiguration" - }, - "CustomEvents": { - "$ref": "#/definitions/CustomEvents" - }, - "CwLogEnabled": { - "description": "Data collected by RUM is kept by RUM for 30 days and then deleted. This parameter specifies whether RUM sends a copy of this telemetry data to CWLlong in your account. This enables you to keep the telemetry data for more than 30 days, but it does incur CWLlong charges. If you omit this parameter, the default is false", - "type": "boolean" - }, - "Domain": { - "description": "The top-level internet domain name for which your application has administrative authority.", - "maxLength": 253, - "minLength": 1, - "pattern": "^(localhost)|^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$|^(?![-.])([A-Za-z0-9-\\.\\-]{0,63})((?![-])([a-zA-Z0-9]{1}|^[a-zA-Z0-9]{0,1}))\\.(?![-])[A-Za-z-0-9]{1,63}((?![-])([a-zA-Z0-9]{1}|^[a-zA-Z0-9]{0,1}))|^(\\*\\.)(?![-.])([A-Za-z0-9-\\.\\-]{0,63})((?![-])([a-zA-Z0-9]{1}|^[a-zA-Z0-9]{0,1}))\\.(?![-])[A-Za-z-0-9]{1,63}((?![-])([a-zA-Z0-9]{1}|^[a-zA-Z0-9]{0,1}))", - "type": "string" - }, - "Id": { - "description": "The unique ID of the new app monitor.", - "maxLength": 36, - "minLength": 36, - "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", - "type": "string" - }, - "Name": { - "description": "A name for the app monitor", - "maxLength": 255, - "minLength": 1, - "pattern": "[\\.\\-_/#A-Za-z0-9]+", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/TagDef" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Name", - "Domain" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": true - }, - "typeName": "AWS::RUM::AppMonitor" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Id" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "AppMonitorConfiguration": { + "additionalProperties": false, + "description": "AppMonitor configuration", + "properties": { + "AllowCookies": { + "description": "If you set this to true, the RUM web client sets two cookies, a session cookie and a user cookie. The cookies allow the RUM web client to collect data relating to the number of users an application has and the behavior of the application across a sequence of events. Cookies are stored in the top-level domain of the current page.", + "type": "boolean" + }, + "EnableXRay": { + "description": "If you set this to true, RUM enables xray tracing for the user sessions that RUM samples. RUM adds an xray trace header to allowed HTTP requests. It also records an xray segment for allowed HTTP requests. You can see traces and segments from these user sessions in the xray console and the CW ServiceLens console.", + "type": "boolean" + }, + "ExcludedPages": { + "$ref": "#/definitions/Pages", + "description": "A list of URLs in your website or application to exclude from RUM data collection. You can't include both ExcludedPages and IncludedPages in the same operation." + }, + "FavoritePages": { + "$ref": "#/definitions/FavoritePages", + "description": "A list of pages in the RUM console that are to be displayed with a favorite icon." + }, + "GuestRoleArn": { + "$ref": "#/definitions/Arn", + "description": "The ARN of the guest IAM role that is attached to the identity pool that is used to authorize the sending of data to RUM." + }, + "IdentityPoolId": { + "description": "The ID of the identity pool that is used to authorize the sending of data to RUM.", + "maxLength": 55, + "minLength": 1, + "pattern": "[\\w-]+:[0-9a-f-]+", + "type": "string" + }, + "IncludedPages": { + "$ref": "#/definitions/Pages", + "description": "If this app monitor is to collect data from only certain pages in your application, this structure lists those pages. You can't include both ExcludedPages and IncludedPages in the same operation." + }, + "MetricDestinations": { + "description": "An array of structures which define the destinations and the metrics that you want to send.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MetricDestination" + }, + "maxItems": 20, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "SessionSampleRate": { + "description": "Specifies the percentage of user sessions to use for RUM data collection. Choosing a higher percentage gives you more data but also incurs more costs. The number you specify is the percentage of user sessions that will be used. If you omit this parameter, the default of 10 is used.", + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "Telemetries": { + "description": "An array that lists the types of telemetry data that this app monitor is to collect.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Telemetry" + }, + "type": "array" + } + }, + "type": "object" + }, + "Arn": { + "description": "Resource ARN", + "pattern": "arn:[^:]*:[^:]*:[^:]*:[^:]*:.*", + "type": "string" + }, + "CustomEvents": { + "additionalProperties": false, + "description": "AppMonitor custom events configuration", + "properties": { + "Status": { + "$ref": "#/definitions/CustomEventsStatus", + "description": "Indicates whether AppMonitor accepts custom events." + } + }, + "type": "object" + }, + "CustomEventsStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "DeobfuscationConfiguration": { + "additionalProperties": false, + "description": "A structure that contains the configuration for how an app monitor can deobfuscate stack traces.", + "properties": { + "JavaScriptSourceMaps": { + "additionalProperties": false, + "description": "A structure that contains the configuration for how an app monitor can unminify JavaScript error stack traces using source maps.", + "properties": { + "S3Uri": { + "description": "The S3Uri of the bucket or folder that stores the source map files. It is required if status is ENABLED.", + "pattern": "^s3://[a-z0-9][-.a-z0-9]{1,61}(?:/[-!_*'().a-z0-9A-Z]+(?:/[-!_*'().a-z0-9A-Z]+)*)?/?$", + "type": "string" + }, + "Status": { + "description": "Specifies whether JavaScript error stack traces should be unminified for this app monitor. The default is for JavaScript error stack trace unminification to be DISABLED", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "required": [ + "Status" + ], + "type": "object" + } + }, + "type": "object" + }, + "FavoritePages": { + "description": "List of favorite pages", + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + }, + "MetricDefinition": { + "additionalProperties": false, + "description": "A single metric definition", + "properties": { + "DimensionKeys": { + "additionalProperties": false, + "description": "Use this field only if you are sending the metric to CloudWatch.\n\nThis field is a map of field paths to dimension names. It defines the dimensions to associate with this metric in CloudWatch. For extended metrics, valid values for the entries in this field are the following:\n\n\"metadata.pageId\": \"PageId\"\n\n\"metadata.browserName\": \"BrowserName\"\n\n\"metadata.deviceType\": \"DeviceType\"\n\n\"metadata.osName\": \"OSName\"\n\n\"metadata.countryCode\": \"CountryCode\"\n\n\"event_details.fileType\": \"FileType\"\n\nAll dimensions listed in this field must also be included in EventPattern.", + "patternProperties": { + "^(?!:).*[^\\s].*": { + "maxLength": 255, + "minLength": 1, + "pattern": ".*[^\\s].*", + "type": "string" + } + }, + "type": "object" + }, + "EventPattern": { + "description": "The pattern that defines the metric, specified as a JSON object. RUM checks events that happen in a user's session against the pattern, and events that match the pattern are sent to the metric destination.\n\nWhen you define extended metrics, the metric definition is not valid if EventPattern is omitted.\n\nExample event patterns:\n\n'{ \"event_type\": [\"com.amazon.rum.js_error_event\"], \"metadata\": { \"browserName\": [ \"Chrome\", \"Safari\" ], } }'\n\n'{ \"event_type\": [\"com.amazon.rum.performance_navigation_event\"], \"metadata\": { \"browserName\": [ \"Chrome\", \"Firefox\" ] }, \"event_details\": { \"duration\": [{ \"numeric\": [ \"<\", 2000 ] }] } }'\n\n'{ \"event_type\": [\"com.amazon.rum.performance_navigation_event\"], \"metadata\": { \"browserName\": [ \"Chrome\", \"Safari\" ], \"countryCode\": [ \"US\" ] }, \"event_details\": { \"duration\": [{ \"numeric\": [ \">=\", 2000, \"<\", 8000 ] }] } }'\n\nIf the metrics destination' is CloudWatch and the event also matches a value in DimensionKeys, then the metric is published with the specified dimensions.", + "maxLength": 4000, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "The name for the metric that is defined in this structure. For extended metrics, valid values are the following:\n\nPerformanceNavigationDuration\n\nPerformanceResourceDuration\n\nNavigationSatisfiedTransaction\n\nNavigationToleratedTransaction\n\nNavigationFrustratedTransaction\n\nWebVitalsCumulativeLayoutShift\n\nWebVitalsFirstInputDelay\n\nWebVitalsLargestContentfulPaint\n\nJsErrorCount\n\nHttpErrorCount\n\nSessionCount", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Namespace": { + "description": "The namespace used by CloudWatch Metrics for the metric that is defined in this structure", + "maxLength": 237, + "minLength": 1, + "pattern": "[a-zA-Z0-9-._/#:]+$", + "type": "string" + }, + "UnitLabel": { + "description": "The CloudWatch metric unit to use for this metric. If you omit this field, the metric is recorded with no unit.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "ValueKey": { + "description": "The field within the event object that the metric value is sourced from.\n\nIf you omit this field, a hardcoded value of 1 is pushed as the metric value. This is useful if you just want to count the number of events that the filter catches.\n\nIf this metric is sent to Evidently, this field will be passed to Evidently raw and Evidently will handle data extraction from the event.", + "maxLength": 256, + "minLength": 1, + "pattern": ".*", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "MetricDestination": { + "additionalProperties": false, + "description": "An structure which defines the destination and the metrics that you want to send.", + "properties": { + "Destination": { + "description": "Defines the destination to send the metrics to. Valid values are CloudWatch and Evidently. If you specify Evidently, you must also specify the ARN of the Evidently experiment that is to be the destination and an IAM role that has permission to write to the experiment.", + "enum": [ + "CloudWatch", + "Evidently" + ], + "type": "string" + }, + "DestinationArn": { + "description": "Use this parameter only if Destination is Evidently. This parameter specifies the ARN of the Evidently experiment that will receive the extended metrics.", + "pattern": "arn:[^:]*:[^:]*:[^:]*:[^:]*:.*", + "type": "string" + }, + "IamRoleArn": { + "description": "This parameter is required if Destination is Evidently. If Destination is CloudWatch, do not use this parameter.\n\nThis parameter specifies the ARN of an IAM role that RUM will assume to write to the Evidently experiment that you are sending metrics to. This role must have permission to write to that experiment.", + "pattern": "arn:[^:]*:[^:]*:[^:]*:[^:]*:.*", + "type": "string" + }, + "MetricDefinitions": { + "description": "An array of structures which define the metrics that you want to send.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MetricDefinition" + }, + "maxItems": 2000, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Destination" + ], + "type": "object" + }, + "Pages": { + "description": "List of url pages", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Url" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + }, + "ResourcePolicy": { + "additionalProperties": false, + "description": "A structure that defines resource policy attached to your app monitor.", + "properties": { + "PolicyDocument": { + "description": "The JSON to use as the resource policy. The document can be up to 4 KB in size. ", + "type": "string" + }, + "PolicyRevisionId": { + "description": "A string value that you can use to conditionally update your policy. You can provide the revision ID of your existing policy to make mutating requests against that policy. \n\n When you assign a policy revision ID, then later requests about that policy will be rejected with an InvalidPolicyRevisionIdException error if they don't provide the correct current revision ID.", + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "PolicyDocument" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagDef": { + "description": "Assigns one or more tags (key-value pairs) to the app monitor. Tags can help you organize and categorize your resources. You can also use them to scope user permissions by granting a user permission to access or change only resources with certain tag values. Tags don't have any semantic meaning to AWS and are interpreted strictly as strings of characters.You can associate as many as 50 tags with an app monitor.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Telemetry": { + "enum": [ + "errors", + "performance", + "http" + ], + "type": "string" + }, + "Url": { + "description": "Page Url", + "maxLength": 1260, + "minLength": 1, + "pattern": "https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)", + "type": "string" + } + }, + "description": "Resource Type definition for AWS::RUM::AppMonitor", + "handlers": { + "create": { + "permissions": [ + "rum:GetAppMonitor", + "rum:CreateAppMonitor", + "dynamodb:GetItem", + "dynamodb:PutItem", + "s3:GetObject", + "s3:PutObject", + "s3:GetObjectAcl", + "s3:DoesObjectExist", + "logs:CreateLogDelivery", + "logs:CreateLogGroup", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "logs:PutRetentionPolicy", + "rum:TagResource", + "rum:ListTagsForResource", + "cognito-identity:DescribeIdentityPool", + "iam:GetRole", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "rum:PutRumMetricsDestination", + "rum:BatchCreateRumMetricDefinitions", + "rum:ListRumMetricsDestinations", + "rum:BatchGetRumMetricDefinitions", + "rum:GetResourcePolicy", + "rum:PutResourcePolicy" + ] + }, + "delete": { + "permissions": [ + "rum:GetAppMonitor", + "rum:DeleteAppMonitor", + "dynamodb:DeleteItem", + "dynamodb:Query", + "logs:DeleteLogDelivery", + "s3:DeleteObject", + "s3:DoesObjectExist", + "rum:UntagResource", + "rum:ListTagsForResource", + "rum:DeleteRumMetricsDestination", + "rum:BatchDeleteRumMetricDefinitions", + "rum:ListRumMetricsDestinations", + "rum:BatchGetRumMetricDefinitions", + "rum:GetResourcePolicy", + "rum:PutResourcePolicy", + "rum:DeleteResourcePolicy" + ] + }, + "list": { + "permissions": [ + "rum:ListAppMonitors", + "dynamodb:DescribeTable", + "rum:GetAppMonitor", + "dynamodb:GetItem", + "dynamodb:BatchGetItem", + "dynamodb:Query", + "s3:GetObject", + "s3:DoesObjectExist", + "s3:GetObjectAcl", + "logs:DescribeLogGroups", + "rum:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "rum:GetAppMonitor", + "dynamodb:GetItem", + "s3:GetObject", + "s3:DoesObjectExist", + "s3:GetObjectAcl", + "rum:ListTagsForResource", + "rum:ListRumMetricsDestinations", + "rum:BatchGetRumMetricDefinitions", + "rum:GetResourcePolicy" + ] + }, + "update": { + "permissions": [ + "rum:GetAppMonitor", + "rum:UpdateAppMonitor", + "dynamodb:GetItem", + "dynamodb:PutItem", + "dynamodb:UpdateItem", + "dynamodb:Query", + "s3:GetObject", + "s3:PutObject", + "s3:GetObjectAcl", + "s3:DoesObjectExist", + "logs:CreateLogDelivery", + "logs:CreateLogGroup", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "logs:PutRetentionPolicy", + "rum:TagResource", + "rum:UntagResource", + "rum:ListTagsForResource", + "iam:GetRole", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "rum:PutRumMetricsDestination", + "rum:DeleteRumMetricsDestination", + "rum:ListRumMetricsDestinations", + "rum:BatchCreateRumMetricDefinitions", + "rum:BatchDeleteRumMetricDefinitions", + "rum:BatchGetRumMetricDefinitions", + "rum:UpdateRumMetricDefinition", + "rum:GetResourcePolicy", + "rum:PutResourcePolicy", + "rum:DeleteResourcePolicy" + ] + } + }, + "oneOf": [ + { + "required": [ + "Domain" + ] + }, + { + "required": [ + "DomainList" + ] + } + ], + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "AppMonitorConfiguration": { + "$ref": "#/definitions/AppMonitorConfiguration" + }, + "CustomEvents": { + "$ref": "#/definitions/CustomEvents" + }, + "CwLogEnabled": { + "description": "Data collected by RUM is kept by RUM for 30 days and then deleted. This parameter specifies whether RUM sends a copy of this telemetry data to CWLlong in your account. This enables you to keep the telemetry data for more than 30 days, but it does incur CWLlong charges. If you omit this parameter, the default is false", + "type": "boolean" + }, + "DeobfuscationConfiguration": { + "$ref": "#/definitions/DeobfuscationConfiguration" + }, + "Domain": { + "description": "The top-level internet domain name for which your application has administrative authority. The CreateAppMonitor requires either the domain or the domain list.", + "maxLength": 253, + "minLength": 1, + "pattern": "^(localhost)|^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$|^(?![-.])([A-Za-z0-9-\\.\\-]{0,63})((?![-])([a-zA-Z0-9]{1}|^[a-zA-Z0-9]{0,1}))\\.(?![-])[A-Za-z-0-9]{1,63}((?![-])([a-zA-Z0-9]{1}|^[a-zA-Z0-9]{0,1}))|^(\\*\\.)(?![-.])([A-Za-z0-9-\\.\\-]{0,63})((?![-])([a-zA-Z0-9]{1}|^[a-zA-Z0-9]{0,1}))\\.(?![-])[A-Za-z-0-9]{1,63}((?![-])([a-zA-Z0-9]{1}|^[a-zA-Z0-9]{0,1}))", + "type": "string" + }, + "DomainList": { + "description": "The top-level internet domain names for which your application has administrative authority. The CreateAppMonitor requires either the domain or the domain list.", + "items": { + "maxLength": 253, + "minLength": 1, + "pattern": "^(localhost)|^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$|^(?![-.])([A-Za-z0-9-\\.\\-]{0,63})((?![-])([a-zA-Z0-9]{1}|^[a-zA-Z0-9]{0,1}))\\.(?![-])[A-Za-z-0-9]{1,63}((?![-])([a-zA-Z0-9]{1}|^[a-zA-Z0-9]{0,1}))|^(\\*\\.)(?![-.])([A-Za-z0-9-\\.\\-]{0,63})((?![-])([a-zA-Z0-9]{1}|^[a-zA-Z0-9]{0,1}))\\.(?![-])[A-Za-z-0-9]{1,63}((?![-])([a-zA-Z0-9]{1}|^[a-zA-Z0-9]{0,1}))", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "Id": { + "description": "The unique ID of the new app monitor.", + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$", + "type": "string" + }, + "Name": { + "description": "A name for the app monitor", + "maxLength": 255, + "minLength": 1, + "pattern": "[\\.\\-_/#A-Za-z0-9]+", + "type": "string" + }, + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, + "Tags": { + "$ref": "#/definitions/TagDef" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "rum:UntagResource", + "rum:TagResource", + "rum:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RUM::AppMonitor" +} diff --git a/src/schema/aws-s3-accessgrant.json b/src/schema/aws-s3-accessgrant.json index c0101c56..daee0fd8 100644 --- a/src/schema/aws-s3-accessgrant.json +++ b/src/schema/aws-s3-accessgrant.json @@ -1,189 +1,189 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/S3PrefixType", - "/properties/Tags" - ], - "definitions": { - "AccessGrantArn": { - "description": "the Amazon Resource Name (ARN) of the specified access grant.", - "type": "string" - }, - "AccessGrantsLocationConfiguration": { - "additionalProperties": false, - "properties": { - "S3SubPrefix": { - "description": "The S3 sub prefix of a registered location in your S3 Access Grants instance", - "type": "string" - } - }, - "required": [ - "S3SubPrefix" - ], - "type": "object" - }, - "Grantee": { - "additionalProperties": false, - "properties": { - "GranteeIdentifier": { - "description": "The unique identifier of the Grantee", - "type": "string" - }, - "GranteeType": { - "description": "Configures the transfer acceleration state for an Amazon S3 bucket.", - "enum": [ - "IAM", - "DIRECTORY_USER", - "DIRECTORY_GROUP" - ], - "type": "string" - } - }, - "required": [ - "GranteeType", - "GranteeIdentifier" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The AWS::S3::AccessGrant resource is an Amazon S3 resource type representing permissions to a specific S3 bucket or prefix hosted in an S3 Access Grants instance.", - "handlers": { - "create": { - "permissions": [ - "s3:CreateAccessGrant", - "s3:TagResource" - ] - }, - "delete": { - "permissions": [ - "s3:DeleteAccessGrant" - ] - }, - "list": { - "permissions": [ - "s3:ListAccessGrants" - ] - }, - "read": { - "permissions": [ - "s3:GetAccessGrant", - "s3:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "s3:TagResource", - "s3:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AccessGrantId" - ], - "properties": { - "AccessGrantArn": { - "$ref": "#/definitions/AccessGrantArn", - "description": "The Amazon Resource Name (ARN) of the specified access grant.", - "examples": [ - "arn:aws:s3:us-east-2:111122223333:access-grants/default/grant/7c89cbd1-0f4e-40e3-861d-afb906952b77" - ] - }, - "AccessGrantId": { - "description": "The ID assigned to this access grant.", - "examples": [ - "7c89cbd1-0f4e-40e3-861d-afb906952b77" - ], - "type": "string" - }, - "AccessGrantsLocationConfiguration": { - "$ref": "#/definitions/AccessGrantsLocationConfiguration", - "description": "The configuration options of the grant location, which is the S3 path to the data to which you are granting access." - }, - "AccessGrantsLocationId": { - "description": "The custom S3 location to be accessed by the grantee", - "examples": [ - "125f332b-a499-4eb6-806f-8a6a1aa4cb96" - ], - "type": "string" - }, - "ApplicationArn": { - "description": "The ARN of the application grantees will use to access the location", - "type": "string" - }, - "GrantScope": { - "description": "The S3 path of the data to which you are granting access. It is a combination of the S3 path of the registered location and the subprefix.", - "type": "string" - }, - "Grantee": { - "$ref": "#/definitions/Grantee", - "description": "The principal who will be granted permission to access S3." - }, - "Permission": { - "description": "The level of access to be afforded to the grantee", - "enum": [ - "READ", - "WRITE", - "READWRITE" - ], - "type": "string" - }, - "S3PrefixType": { - "description": "The type of S3SubPrefix.", - "enum": [ - "Object" - ], - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/AccessGrantId", - "/properties/AccessGrantArn", - "/properties/GrantScope" - ], - "required": [ - "Grantee", - "Permission", - "AccessGrantsLocationId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "s3:UntagResource", - "s3:TagResource", - "s3:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::S3::AccessGrant", - "writeOnlyProperties": [ - "/properties/S3PrefixType" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/S3PrefixType", + "/properties/Tags" + ], + "definitions": { + "AccessGrantArn": { + "description": "the Amazon Resource Name (ARN) of the specified access grant.", + "type": "string" + }, + "AccessGrantsLocationConfiguration": { + "additionalProperties": false, + "properties": { + "S3SubPrefix": { + "description": "The S3 sub prefix of a registered location in your S3 Access Grants instance", + "type": "string" + } + }, + "required": [ + "S3SubPrefix" + ], + "type": "object" + }, + "Grantee": { + "additionalProperties": false, + "properties": { + "GranteeIdentifier": { + "description": "The unique identifier of the Grantee", + "type": "string" + }, + "GranteeType": { + "description": "Configures the transfer acceleration state for an Amazon S3 bucket.", + "enum": [ + "IAM", + "DIRECTORY_USER", + "DIRECTORY_GROUP" + ], + "type": "string" + } + }, + "required": [ + "GranteeType", + "GranteeIdentifier" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The AWS::S3::AccessGrant resource is an Amazon S3 resource type representing permissions to a specific S3 bucket or prefix hosted in an S3 Access Grants instance.", + "handlers": { + "create": { + "permissions": [ + "s3:CreateAccessGrant", + "s3:TagResource" + ] + }, + "delete": { + "permissions": [ + "s3:DeleteAccessGrant" + ] + }, + "list": { + "permissions": [ + "s3:ListAccessGrants" + ] + }, + "read": { + "permissions": [ + "s3:GetAccessGrant", + "s3:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "s3:TagResource", + "s3:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccessGrantId" + ], + "properties": { + "AccessGrantArn": { + "$ref": "#/definitions/AccessGrantArn", + "description": "The Amazon Resource Name (ARN) of the specified access grant.", + "examples": [ + "arn:aws:s3:us-east-2:111122223333:access-grants/default/grant/7c89cbd1-0f4e-40e3-861d-afb906952b77" + ] + }, + "AccessGrantId": { + "description": "The ID assigned to this access grant.", + "examples": [ + "7c89cbd1-0f4e-40e3-861d-afb906952b77" + ], + "type": "string" + }, + "AccessGrantsLocationConfiguration": { + "$ref": "#/definitions/AccessGrantsLocationConfiguration", + "description": "The configuration options of the grant location, which is the S3 path to the data to which you are granting access." + }, + "AccessGrantsLocationId": { + "description": "The custom S3 location to be accessed by the grantee", + "examples": [ + "125f332b-a499-4eb6-806f-8a6a1aa4cb96" + ], + "type": "string" + }, + "ApplicationArn": { + "description": "The ARN of the application grantees will use to access the location", + "type": "string" + }, + "GrantScope": { + "description": "The S3 path of the data to which you are granting access. It is a combination of the S3 path of the registered location and the subprefix.", + "type": "string" + }, + "Grantee": { + "$ref": "#/definitions/Grantee", + "description": "The principal who will be granted permission to access S3." + }, + "Permission": { + "description": "The level of access to be afforded to the grantee", + "enum": [ + "READ", + "WRITE", + "READWRITE" + ], + "type": "string" + }, + "S3PrefixType": { + "description": "The type of S3SubPrefix.", + "enum": [ + "Object" + ], + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/AccessGrantId", + "/properties/AccessGrantArn", + "/properties/GrantScope" + ], + "required": [ + "Grantee", + "Permission", + "AccessGrantsLocationId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "s3:UntagResource", + "s3:TagResource", + "s3:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::S3::AccessGrant", + "writeOnlyProperties": [ + "/properties/S3PrefixType" + ] +} diff --git a/src/schema/aws-s3-accessgrantsinstance.json b/src/schema/aws-s3-accessgrantsinstance.json index 9521260d..004684ea 100644 --- a/src/schema/aws-s3-accessgrantsinstance.json +++ b/src/schema/aws-s3-accessgrantsinstance.json @@ -1,116 +1,116 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Tags" - ], - "definitions": { - "AccessGrantsInstanceArn": { - "description": "The Amazon Resource Name (ARN) of the specified Access Grants instance.", - "type": "string" - }, - "IdentityCenterArn": { - "description": "The Amazon Resource Name (ARN) of the specified AWS Identity Center.", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The AWS::S3::AccessGrantsInstance resource is an Amazon S3 resource type that hosts Access Grants and their associated locations", - "handlers": { - "create": { - "permissions": [ - "s3:CreateAccessGrantsInstance", - "s3:TagResource" - ] - }, - "delete": { - "permissions": [ - "s3:DeleteAccessGrantsInstance" - ] - }, - "list": { - "permissions": [ - "s3:ListAccessGrantsInstances" - ] - }, - "read": { - "permissions": [ - "s3:GetAccessGrantsInstance", - "s3:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "s3:TagResource", - "s3:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AccessGrantsInstanceArn" - ], - "properties": { - "AccessGrantsInstanceArn": { - "$ref": "#/definitions/AccessGrantsInstanceArn", - "description": "The Amazon Resource Name (ARN) of the specified Access Grants instance.", - "examples": [ - "arn:aws:s3:us-east-2:479290226168:access-grants/default" - ] - }, - "AccessGrantsInstanceId": { - "description": "A unique identifier for the specified access grants instance.", - "type": "string" - }, - "IdentityCenterArn": { - "$ref": "#/definitions/IdentityCenterArn", - "description": "The Amazon Resource Name (ARN) of the specified AWS Identity Center.", - "examples": [ - "arn:aws:sso:::instance/ssoins-6987e6a2fc43873b" - ] - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/AccessGrantsInstanceArn", - "/properties/AccessGrantsInstanceId" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "s3:UntagResource", - "s3:TagResource", - "s3:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::S3::AccessGrantsInstance", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tags" + ], + "definitions": { + "AccessGrantsInstanceArn": { + "description": "The Amazon Resource Name (ARN) of the specified Access Grants instance.", + "type": "string" + }, + "IdentityCenterArn": { + "description": "The Amazon Resource Name (ARN) of the specified AWS Identity Center.", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The AWS::S3::AccessGrantsInstance resource is an Amazon S3 resource type that hosts Access Grants and their associated locations", + "handlers": { + "create": { + "permissions": [ + "s3:CreateAccessGrantsInstance", + "s3:AssociateAccessGrantsIdentityCenter", + "s3:TagResource" + ] + }, + "delete": { + "permissions": [ + "s3:GetAccessGrantsInstance", + "s3:DeleteAccessGrantsInstance", + "s3:DissociateAccessGrantsIdentityCenter" + ] + }, + "list": { + "permissions": [ + "s3:ListAccessGrantsInstances" + ] + }, + "read": { + "permissions": [ + "s3:GetAccessGrantsInstance", + "s3:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "s3:TagResource", + "s3:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccessGrantsInstanceArn" + ], + "properties": { + "AccessGrantsInstanceArn": { + "$ref": "#/definitions/AccessGrantsInstanceArn", + "description": "The Amazon Resource Name (ARN) of the specified Access Grants instance.", + "examples": [ + "arn:aws:s3:us-east-2:479290226168:access-grants/default" + ] + }, + "AccessGrantsInstanceId": { + "description": "A unique identifier for the specified access grants instance.", + "type": "string" + }, + "IdentityCenterArn": { + "$ref": "#/definitions/IdentityCenterArn", + "description": "The Amazon Resource Name (ARN) of the specified AWS Identity Center.", + "examples": [ + "arn:aws:sso:::instance/ssoins-6987e6a2fc43873b" + ] + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/AccessGrantsInstanceArn", + "/properties/AccessGrantsInstanceId" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "s3:UntagResource", + "s3:TagResource", + "s3:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::S3::AccessGrantsInstance" +} diff --git a/src/schema/aws-s3-accessgrantslocation.json b/src/schema/aws-s3-accessgrantslocation.json index c522356a..c1e63aae 100644 --- a/src/schema/aws-s3-accessgrantslocation.json +++ b/src/schema/aws-s3-accessgrantslocation.json @@ -1,115 +1,115 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Tags" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The AWS::S3::AccessGrantsLocation resource is an Amazon S3 resource type hosted in an access grants instance which can be the target of S3 access grants.", - "handlers": { - "create": { - "permissions": [ - "s3:CreateAccessGrantsLocation", - "iam:PassRole", - "s3:TagResource" - ] - }, - "delete": { - "permissions": [ - "s3:DeleteAccessGrantsLocation" - ] - }, - "list": { - "permissions": [ - "s3:ListAccessGrantsLocations" - ] - }, - "read": { - "permissions": [ - "s3:GetAccessGrantsLocation", - "s3:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "s3:UpdateAccessGrantsLocation", - "s3:TagResource", - "s3:UntagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/AccessGrantsLocationId" - ], - "properties": { - "AccessGrantsLocationArn": { - "description": "The Amazon Resource Name (ARN) of the specified Access Grants location.", - "examples": [ - "arn:aws:s3:us-east-2:479290226168:access-grants/default/location/125f332b-a499-4eb6-806f-8a6a1aa4cb96" - ], - "type": "string" - }, - "AccessGrantsLocationId": { - "description": "The unique identifier for the specified Access Grants location.", - "type": "string" - }, - "IamRoleArn": { - "description": "The Amazon Resource Name (ARN) of the access grant location's associated IAM role.", - "examples": [ - "arn:aws:iamw::123456789012:role/rolename" - ], - "type": "string" - }, - "LocationScope": { - "description": "Descriptor for where the location actually points", - "examples": [ - "s3://test-bucket-access-grants-cmh/prefixA" - ], - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/AccessGrantsLocationArn", - "/properties/AccessGrantsLocationId" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "s3:UntagResource", - "s3:TagResource", - "s3:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::S3::AccessGrantsLocation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tags" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The AWS::S3::AccessGrantsLocation resource is an Amazon S3 resource type hosted in an access grants instance which can be the target of S3 access grants.", + "handlers": { + "create": { + "permissions": [ + "s3:CreateAccessGrantsLocation", + "iam:PassRole", + "s3:TagResource" + ] + }, + "delete": { + "permissions": [ + "s3:DeleteAccessGrantsLocation" + ] + }, + "list": { + "permissions": [ + "s3:ListAccessGrantsLocations" + ] + }, + "read": { + "permissions": [ + "s3:GetAccessGrantsLocation", + "s3:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "s3:UpdateAccessGrantsLocation", + "s3:TagResource", + "s3:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccessGrantsLocationId" + ], + "properties": { + "AccessGrantsLocationArn": { + "description": "The Amazon Resource Name (ARN) of the specified Access Grants location.", + "examples": [ + "arn:aws:s3:us-east-2:479290226168:access-grants/default/location/125f332b-a499-4eb6-806f-8a6a1aa4cb96" + ], + "type": "string" + }, + "AccessGrantsLocationId": { + "description": "The unique identifier for the specified Access Grants location.", + "type": "string" + }, + "IamRoleArn": { + "description": "The Amazon Resource Name (ARN) of the access grant location's associated IAM role.", + "examples": [ + "arn:aws:iamw::123456789012:role/rolename" + ], + "type": "string" + }, + "LocationScope": { + "description": "Descriptor for where the location actually points", + "examples": [ + "s3://test-bucket-access-grants-cmh/prefixA" + ], + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/AccessGrantsLocationArn", + "/properties/AccessGrantsLocationId" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "s3:UntagResource", + "s3:TagResource", + "s3:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::S3::AccessGrantsLocation" +} diff --git a/src/schema/aws-s3-accesspoint.json b/src/schema/aws-s3-accesspoint.json index 31989398..da63f95f 100644 --- a/src/schema/aws-s3-accesspoint.json +++ b/src/schema/aws-s3-accesspoint.json @@ -1,152 +1,156 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Bucket", - "/properties/BucketAccountId", - "/properties/VpcConfiguration" - ], - "definitions": { - "Arn": { - "description": "the Amazon Resource Name (ARN) of the specified accesspoint.", - "type": "string" - }, - "PublicAccessBlockConfiguration": { - "properties": { - "BlockPublicAcls": { - "description": "Specifies whether Amazon S3 should block public access control lists (ACLs) for buckets in this account. Setting this element to TRUE causes the following behavior:\n- PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public.\n - PUT Object calls fail if the request includes a public ACL.\n. - PUT Bucket calls fail if the request includes a public ACL.\nEnabling this setting doesn't affect existing policies or ACLs.", - "type": "boolean" - }, - "BlockPublicPolicy": { - "description": "Specifies whether Amazon S3 should block public bucket policies for buckets in this account. Setting this element to TRUE causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy allows public access. Enabling this setting doesn't affect existing bucket policies.", - "type": "boolean" - }, - "IgnorePublicAcls": { - "description": "Specifies whether Amazon S3 should ignore public ACLs for buckets in this account. Setting this element to TRUE causes Amazon S3 to ignore all public ACLs on buckets in this account and any objects that they contain. Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set.", - "type": "boolean" - }, - "RestrictPublicBuckets": { - "description": "Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting this element to TRUE restricts access to this bucket to only AWS services and authorized users within this account if the bucket has a public policy.\nEnabling this setting doesn't affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked.", - "type": "boolean" - } - }, - "type": "object" - }, - "VpcConfiguration": { - "description": "The Virtual Private Cloud (VPC) configuration for a bucket access point.", - "properties": { - "VpcId": { - "description": "If this field is specified, this access point will only allow connections from the specified VPC ID.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The AWS::S3::AccessPoint resource is an Amazon S3 resource type that you can use to access buckets.", - "handlers": { - "create": { - "permissions": [ - "s3:CreateAccessPoint", - "s3:PutAccessPointPolicy", - "s3:PutAccessPointPublicAccessBlock" - ] - }, - "delete": { - "permissions": [ - "s3:DeleteAccessPointPolicy", - "s3:DeleteAccessPoint" - ] - }, - "list": { - "permissions": [ - "s3:ListAccessPoints" - ] - }, - "read": { - "permissions": [ - "s3:GetAccessPoint", - "s3:GetAccessPointPolicy" - ] - }, - "update": { - "permissions": [ - "s3:PutAccessPointPolicy", - "s3:PutAccessPointPublicAccessBlock", - "s3:DeleteAccessPointPolicy", - "s3:GetAccessPoint", - "s3:GetAccessPointPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Alias": { - "description": "The alias of this Access Point. This alias can be used for compatibility purposes with other AWS services and third-party applications.", - "maxLength": 63, - "minLength": 3, - "pattern": "^[a-z0-9]([a-z0-9\\-]*[a-z0-9])?$", - "type": "string" - }, - "Arn": { - "$ref": "#/definitions/Arn", - "description": "The Amazon Resource Name (ARN) of the specified accesspoint.", - "examples": [ - "arn:aws:s3:us-west-2:123456789012:accesspoint/test" - ] - }, - "Bucket": { - "description": "The name of the bucket that you want to associate this Access Point with.", - "maxLength": 255, - "minLength": 3, - "type": "string" - }, - "BucketAccountId": { - "description": "The AWS account ID associated with the S3 bucket associated with this access point.", - "maxLength": 64, - "pattern": "^\\d{12}$", - "type": "string" - }, - "Name": { - "description": "The name you want to assign to this Access Point. If you don't specify a name, AWS CloudFormation generates a unique ID and uses that ID for the access point name.", - "maxLength": 50, - "minLength": 3, - "pattern": "^[a-z0-9]([a-z0-9\\-]*[a-z0-9])?$", - "type": "string" - }, - "NetworkOrigin": { - "description": "Indicates whether this Access Point allows access from the public Internet. If VpcConfiguration is specified for this Access Point, then NetworkOrigin is VPC, and the Access Point doesn't allow access from the public Internet. Otherwise, NetworkOrigin is Internet, and the Access Point allows access from the public Internet, subject to the Access Point and bucket access policies.", - "enum": [ - "Internet", - "VPC" - ], - "type": "string" - }, - "Policy": { - "description": "The Access Point Policy you want to apply to this access point.", - "type": "object" - }, - "PublicAccessBlockConfiguration": { - "$ref": "#/definitions/PublicAccessBlockConfiguration", - "description": "The PublicAccessBlock configuration that you want to apply to this Access Point. You can enable the configuration options in any combination. For more information about when Amazon S3 considers a bucket or object public, see https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status 'The Meaning of Public' in the Amazon Simple Storage Service Developer Guide." - }, - "VpcConfiguration": { - "$ref": "#/definitions/VpcConfiguration", - "description": "If you include this field, Amazon S3 restricts access to this Access Point to requests from the specified Virtual Private Cloud (VPC)." - } - }, - "readOnlyProperties": [ - "/properties/Alias", - "/properties/NetworkOrigin", - "/properties/Arn" - ], - "required": [ - "Bucket" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3", - "typeName": "AWS::S3::AccessPoint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Bucket", + "/properties/BucketAccountId", + "/properties/VpcConfiguration" + ], + "definitions": { + "Arn": { + "description": "the Amazon Resource Name (ARN) of the specified accesspoint.", + "type": "string" + }, + "PublicAccessBlockConfiguration": { + "properties": { + "BlockPublicAcls": { + "description": "Specifies whether Amazon S3 should block public access control lists (ACLs) for buckets in this account. Setting this element to TRUE causes the following behavior:\n- PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public.\n - PUT Object calls fail if the request includes a public ACL.\n. - PUT Bucket calls fail if the request includes a public ACL.\nEnabling this setting doesn't affect existing policies or ACLs.", + "type": "boolean" + }, + "BlockPublicPolicy": { + "description": "Specifies whether Amazon S3 should block public bucket policies for buckets in this account. Setting this element to TRUE causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy allows public access. Enabling this setting doesn't affect existing bucket policies.", + "type": "boolean" + }, + "IgnorePublicAcls": { + "description": "Specifies whether Amazon S3 should ignore public ACLs for buckets in this account. Setting this element to TRUE causes Amazon S3 to ignore all public ACLs on buckets in this account and any objects that they contain. Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set.", + "type": "boolean" + }, + "RestrictPublicBuckets": { + "description": "Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting this element to TRUE restricts access to this bucket to only AWS services and authorized users within this account if the bucket has a public policy.\nEnabling this setting doesn't affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked.", + "type": "boolean" + } + }, + "type": "object" + }, + "VpcConfiguration": { + "description": "The Virtual Private Cloud (VPC) configuration for a bucket access point.", + "properties": { + "VpcId": { + "description": "If this field is specified, this access point will only allow connections from the specified VPC ID.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The AWS::S3::AccessPoint resource is an Amazon S3 resource type that you can use to access buckets.", + "handlers": { + "create": { + "permissions": [ + "s3:CreateAccessPoint", + "s3:PutAccessPointPolicy", + "s3:GetAccessPoint", + "s3:PutAccessPointPublicAccessBlock" + ] + }, + "delete": { + "permissions": [ + "s3:DeleteAccessPointPolicy", + "s3:DeleteAccessPoint" + ] + }, + "list": { + "permissions": [ + "s3:ListAccessPoints" + ] + }, + "read": { + "permissions": [ + "s3:GetAccessPoint", + "s3:GetAccessPointPolicy" + ] + }, + "update": { + "permissions": [ + "s3:PutAccessPointPolicy", + "s3:PutAccessPointPublicAccessBlock", + "s3:DeleteAccessPointPolicy", + "s3:GetAccessPoint", + "s3:GetAccessPointPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Alias": { + "description": "The alias of this Access Point. This alias can be used for compatibility purposes with other AWS services and third-party applications.", + "maxLength": 63, + "minLength": 3, + "pattern": "^[a-z0-9]([a-z0-9\\-]*[a-z0-9])?$", + "type": "string" + }, + "Arn": { + "$ref": "#/definitions/Arn", + "description": "The Amazon Resource Name (ARN) of the specified accesspoint.", + "examples": [ + "arn:aws:s3:us-west-2:123456789012:accesspoint/test" + ] + }, + "Bucket": { + "description": "The name of the bucket that you want to associate this Access Point with.", + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "BucketAccountId": { + "description": "The AWS account ID associated with the S3 bucket associated with this access point.", + "maxLength": 64, + "pattern": "^\\d{12}$", + "type": "string" + }, + "Name": { + "description": "The name you want to assign to this Access Point. If you don't specify a name, AWS CloudFormation generates a unique ID and uses that ID for the access point name.", + "maxLength": 50, + "minLength": 3, + "pattern": "^[a-z0-9]([a-z0-9\\-]*[a-z0-9])?$", + "type": "string" + }, + "NetworkOrigin": { + "description": "Indicates whether this Access Point allows access from the public Internet. If VpcConfiguration is specified for this Access Point, then NetworkOrigin is VPC, and the Access Point doesn't allow access from the public Internet. Otherwise, NetworkOrigin is Internet, and the Access Point allows access from the public Internet, subject to the Access Point and bucket access policies.", + "enum": [ + "Internet", + "VPC" + ], + "type": "string" + }, + "Policy": { + "description": "The Access Point Policy you want to apply to this access point.", + "type": "object" + }, + "PublicAccessBlockConfiguration": { + "$ref": "#/definitions/PublicAccessBlockConfiguration", + "description": "The PublicAccessBlock configuration that you want to apply to this Access Point. You can enable the configuration options in any combination. For more information about when Amazon S3 considers a bucket or object public, see https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status 'The Meaning of Public' in the Amazon Simple Storage Service Developer Guide." + }, + "VpcConfiguration": { + "$ref": "#/definitions/VpcConfiguration", + "description": "If you include this field, Amazon S3 restricts access to this Access Point to requests from the specified Virtual Private Cloud (VPC)." + } + }, + "readOnlyProperties": [ + "/properties/Alias", + "/properties/NetworkOrigin", + "/properties/Arn" + ], + "required": [ + "Bucket" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3", + "tagging": { + "taggable": false + }, + "typeName": "AWS::S3::AccessPoint" +} diff --git a/src/schema/aws-s3-bucket.json b/src/schema/aws-s3-bucket.json index 09ccd7db..1f1e629c 100644 --- a/src/schema/aws-s3-bucket.json +++ b/src/schema/aws-s3-bucket.json @@ -1,1783 +1,1853 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/BucketName" - ], - "definitions": { - "AbortIncompleteMultipartUpload": { - "additionalProperties": false, - "description": "Specifies the days since the initiation of an incomplete multipart upload that Amazon S3 will wait before permanently removing all parts of the upload. For more information, see [Stopping Incomplete Multipart Uploads Using a Bucket Lifecycle Policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config) in the *Amazon S3 User Guide*.", - "properties": { - "DaysAfterInitiation": { - "description": "Specifies the number of days after which Amazon S3 stops an incomplete multipart upload.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "DaysAfterInitiation" - ], - "type": "object" - }, - "AccelerateConfiguration": { - "additionalProperties": false, - "description": "Configures the transfer acceleration state for an Amazon S3 bucket. For more information, see [Amazon S3 Transfer Acceleration](https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html) in the *Amazon S3 User Guide*.", - "properties": { - "AccelerationStatus": { - "description": "Specifies the transfer acceleration status of the bucket.", - "enum": [ - "Enabled", - "Suspended" - ], - "type": "string" - } - }, - "required": [ - "AccelerationStatus" - ], - "type": "object" - }, - "AccessControlTranslation": { - "additionalProperties": false, - "description": "Specify this only in a cross-account scenario (where source and destination bucket owners are not the same), and you want to change replica ownership to the AWS-account that owns the destination bucket. If this is not specified in the replication configuration, the replicas are owned by same AWS-account that owns the source object.", - "properties": { - "Owner": { - "const": "Destination", - "description": "Specifies the replica ownership. For default and valid values, see [PUT bucket replication](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html) in the *Amazon S3 API Reference*.", - "type": "string" - } - }, - "required": [ - "Owner" - ], - "type": "object" - }, - "AnalyticsConfiguration": { - "additionalProperties": false, - "description": "Specifies the configuration and any analyses for the analytics filter of an Amazon S3 bucket.", - "properties": { - "Id": { - "description": "The ID that identifies the analytics configuration.", - "type": "string" - }, - "Prefix": { - "description": "The prefix that an object must have to be included in the analytics results.", - "type": "string" - }, - "StorageClassAnalysis": { - "$ref": "#/definitions/StorageClassAnalysis", - "description": "Contains data related to access patterns to be collected and made available to analyze the tradeoffs between different storage classes." - }, - "TagFilters": { - "description": "The tags to use when evaluating an analytics filter.\n The analytics only includes objects that meet the filter's criteria. If no filter is specified, all of the contents of the bucket are included in the analysis.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TagFilter" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "StorageClassAnalysis", - "Id" - ], - "type": "object" - }, - "Arn": { - "description": "the Amazon Resource Name (ARN) of the specified bucket.", - "type": "string" - }, - "BucketEncryption": { - "additionalProperties": false, - "description": "Specifies default encryption for a bucket using server-side encryption with Amazon S3-managed keys (SSE-S3), AWS KMS-managed keys (SSE-KMS), or dual-layer server-side encryption with KMS-managed keys (DSSE-KMS). For information about the Amazon S3 default encryption feature, see [Amazon S3 Default Encryption for S3 Buckets](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) in the *Amazon S3 User Guide*.", - "properties": { - "ServerSideEncryptionConfiguration": { - "description": "Specifies the default server-side-encryption configuration.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ServerSideEncryptionRule" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "ServerSideEncryptionConfiguration" - ], - "type": "object" - }, - "CorsConfiguration": { - "additionalProperties": false, - "description": "Describes the cross-origin access configuration for objects in an Amazon S3 bucket. For more information, see [Enabling Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the *Amazon S3 User Guide*.", - "properties": { - "CorsRules": { - "description": "A set of origins and methods (cross-origin access that you want to allow). You can add up to 100 rules to the configuration.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/CorsRule", - "maxLength": 100 - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "CorsRules" - ], - "type": "object" - }, - "CorsRule": { - "additionalProperties": false, - "description": "Specifies a cross-origin access rule for an Amazon S3 bucket.", - "properties": { - "AllowedHeaders": { - "description": "Headers that are specified in the ``Access-Control-Request-Headers`` header. These headers are allowed in a preflight OPTIONS request. In response to any preflight OPTIONS request, Amazon S3 returns any requested headers that are allowed.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "AllowedMethods": { - "description": "An HTTP method that you allow the origin to run.\n *Allowed values*: ``GET`` | ``PUT`` | ``HEAD`` | ``POST`` | ``DELETE``", - "insertionOrder": true, - "items": { - "enum": [ - "GET", - "PUT", - "HEAD", - "POST", - "DELETE" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "AllowedOrigins": { - "description": "One or more origins you want customers to be able to access the bucket from.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "ExposedHeaders": { - "description": "One or more headers in the response that you want customers to be able to access from their applications (for example, from a JavaScript ``XMLHttpRequest`` object).", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "description": "A unique identifier for this rule. The value must be no more than 255 characters.", - "maxLength": 255, - "type": "string" - }, - "MaxAge": { - "description": "The time in seconds that your browser is to cache the preflight response for the specified resource.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "AllowedMethods", - "AllowedOrigins" - ], - "type": "object" - }, - "DataExport": { - "additionalProperties": false, - "description": "Specifies how data related to the storage class analysis for an Amazon S3 bucket should be exported.", - "properties": { - "Destination": { - "$ref": "#/definitions/Destination", - "description": "The place to store the data for an analysis." - }, - "OutputSchemaVersion": { - "const": "V_1", - "description": "The version of the output schema to use when exporting data. Must be ``V_1``.", - "type": "string" - } - }, - "required": [ - "Destination", - "OutputSchemaVersion" - ], - "type": "object" - }, - "DefaultRetention": { - "additionalProperties": false, - "description": "The container element for optionally specifying the default Object Lock retention settings for new objects placed in the specified bucket.\n + The ``DefaultRetention`` settings require both a mode and a period.\n + The ``DefaultRetention`` period can be either ``Days`` or ``Years`` but you must select one. You cannot specify ``Days`` and ``Years`` at the same time.", - "properties": { - "Days": { - "description": "The number of days that you want to specify for the default retention period. If Object Lock is turned on, you must specify ``Mode`` and specify either ``Days`` or ``Years``.", - "type": "integer" - }, - "Mode": { - "description": "The default Object Lock retention mode you want to apply to new objects placed in the specified bucket. If Object Lock is turned on, you must specify ``Mode`` and specify either ``Days`` or ``Years``.", - "enum": [ - "COMPLIANCE", - "GOVERNANCE" - ], - "type": "string" - }, - "Years": { - "description": "The number of years that you want to specify for the default retention period. If Object Lock is turned on, you must specify ``Mode`` and specify either ``Days`` or ``Years``.", - "type": "integer" - } - }, - "type": "object" - }, - "DeleteMarkerReplication": { - "additionalProperties": false, - "description": "Specifies whether Amazon S3 replicates delete markers. If you specify a ``Filter`` in your replication configuration, you must also include a ``DeleteMarkerReplication`` element. If your ``Filter`` includes a ``Tag`` element, the ``DeleteMarkerReplication`` ``Status`` must be set to Disabled, because Amazon S3 does not support replicating delete markers for tag-based rules. For an example configuration, see [Basic Rule Configuration](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config). \n For more information about delete marker replication, see [Basic Rule Configuration](https://docs.aws.amazon.com/AmazonS3/latest/dev/delete-marker-replication.html). \n If you are using an earlier version of the replication configuration, Amazon S3 handles replication of delete markers differently. For more information, see [Backward Compatibility](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).", - "properties": { - "Status": { - "description": "Indicates whether to replicate delete markers. Disabled by default.", - "enum": [ - "Disabled", - "Enabled" - ], - "type": "string" - } - }, - "type": "object" - }, - "Destination": { - "additionalProperties": false, - "description": "Specifies information about where to publish analysis or configuration results for an Amazon S3 bucket.", - "properties": { - "BucketAccountId": { - "description": "The account ID that owns the destination S3 bucket. If no account ID is provided, the owner is not validated before exporting data.\n Although this value is optional, we strongly recommend that you set it to help prevent problems if the destination bucket ownership changes.", - "type": "string" - }, - "BucketArn": { - "description": "The Amazon Resource Name (ARN) of the bucket to which data is exported.", - "type": "string" - }, - "Format": { - "description": "Specifies the file format used when exporting data to Amazon S3.\n *Allowed values*: ``CSV`` | ``ORC`` | ``Parquet``", - "enum": [ - "CSV", - "ORC", - "Parquet" - ], - "type": "string" - }, - "Prefix": { - "description": "The prefix to use when exporting data. The prefix is prepended to all results.", - "type": "string" - } - }, - "required": [ - "BucketArn", - "Format" - ], - "type": "object" - }, - "EncryptionConfiguration": { - "additionalProperties": false, - "description": "Specifies encryption-related information for an Amazon S3 bucket that is a destination for replicated objects.\n If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester\u2019s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.", - "properties": { - "ReplicaKmsKeyID": { - "description": "Specifies the ID (Key ARN or Alias ARN) of the customer managed AWS KMS key stored in AWS Key Management Service (KMS) for the destination bucket. Amazon S3 uses this key to encrypt replica objects. Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*.", - "type": "string" - } - }, - "required": [ - "ReplicaKmsKeyID" - ], - "type": "object" - }, - "EventBridgeConfiguration": { - "additionalProperties": false, - "description": "Amazon S3 can send events to Amazon EventBridge whenever certain events happen in your bucket, see [Using EventBridge](https://docs.aws.amazon.com/AmazonS3/latest/userguide/EventBridge.html) in the *Amazon S3 User Guide*.\n Unlike other destinations, delivery of events to EventBridge can be either enabled or disabled for a bucket. If enabled, all events will be sent to EventBridge and you can use EventBridge rules to route events to additional targets. For more information, see [What Is Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) in the *Amazon EventBridge User Guide*", - "properties": { - "EventBridgeEnabled": { - "default": "true", - "description": "Enables delivery of events to Amazon EventBridge.", - "type": "boolean" - } - }, - "required": [ - "EventBridgeEnabled" - ], - "type": "object" - }, - "FilterRule": { - "additionalProperties": false, - "description": "Specifies the Amazon S3 object key name to filter on. An object key name is the name assigned to an object in your Amazon S3 bucket. You specify whether to filter on the suffix or prefix of the object key name. A prefix is a specific string of characters at the beginning of an object key name, which you can use to organize objects. For example, you can start the key names of related objects with a prefix, such as ``2023-`` or ``engineering/``. Then, you can use ``FilterRule`` to find objects in a bucket with key names that have the same prefix. A suffix is similar to a prefix, but it is at the end of the object key name instead of at the beginning.", - "properties": { - "Name": { - "description": "The object key name prefix or suffix identifying one or more objects to which the filtering rule applies. The maximum length is 1,024 characters. Overlapping prefixes and suffixes are not supported. For more information, see [Configuring Event Notifications](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) in the *Amazon S3 User Guide*.", - "maxLength": 1024, - "type": "string" - }, - "Value": { - "description": "The value that the filter searches for in object key names.", - "type": "string" - } - }, - "required": [ - "Value", - "Name" - ], - "type": "object" - }, - "IntelligentTieringConfiguration": { - "additionalProperties": false, - "description": "Specifies the S3 Intelligent-Tiering configuration for an Amazon S3 bucket.\n For information about the S3 Intelligent-Tiering storage class, see [Storage class for automatically optimizing frequently and infrequently accessed objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).", - "properties": { - "Id": { - "description": "The ID used to identify the S3 Intelligent-Tiering configuration.", - "type": "string" - }, - "Prefix": { - "description": "An object key name prefix that identifies the subset of objects to which the rule applies.", - "type": "string" - }, - "Status": { - "description": "Specifies the status of the configuration.", - "enum": [ - "Disabled", - "Enabled" - ], - "type": "string" - }, - "TagFilters": { - "description": "A container for a key-value pair.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TagFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Tierings": { - "description": "Specifies a list of S3 Intelligent-Tiering storage class tiers in the configuration. At least one tier must be defined in the list. At most, you can specify two tiers in the list, one for each available AccessTier: ``ARCHIVE_ACCESS`` and ``DEEP_ARCHIVE_ACCESS``.\n You only need Intelligent Tiering Configuration enabled on a bucket if you want to automatically move objects stored in the Intelligent-Tiering storage class to Archive Access or Deep Archive Access tiers.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Tiering" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Id", - "Status", - "Tierings" - ], - "type": "object" - }, - "InventoryConfiguration": { - "additionalProperties": false, - "description": "Specifies the inventory configuration for an Amazon S3 bucket. For more information, see [GET Bucket inventory](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html) in the *Amazon S3 API Reference*.", - "properties": { - "Destination": { - "$ref": "#/definitions/Destination", - "description": "Contains information about where to publish the inventory results." - }, - "Enabled": { - "description": "Specifies whether the inventory is enabled or disabled. If set to ``True``, an inventory list is generated. If set to ``False``, no inventory list is generated.", - "type": "boolean" - }, - "Id": { - "description": "The ID used to identify the inventory configuration.", - "type": "string" - }, - "IncludedObjectVersions": { - "description": "Object versions to include in the inventory list. If set to ``All``, the list includes all the object versions, which adds the version-related fields ``VersionId``, ``IsLatest``, and ``DeleteMarker`` to the list. If set to ``Current``, the list does not contain these version-related fields.", - "enum": [ - "All", - "Current" - ], - "type": "string" - }, - "OptionalFields": { - "description": "Contains the optional fields that are included in the inventory results.", - "insertionOrder": true, - "items": { - "enum": [ - "Size", - "LastModifiedDate", - "StorageClass", - "ETag", - "IsMultipartUploaded", - "ReplicationStatus", - "EncryptionStatus", - "ObjectLockRetainUntilDate", - "ObjectLockMode", - "ObjectLockLegalHoldStatus", - "IntelligentTieringAccessTier", - "BucketKeyStatus", - "ChecksumAlgorithm", - "ObjectAccessControlList", - "ObjectOwner" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Prefix": { - "description": "Specifies the inventory filter prefix.", - "type": "string" - }, - "ScheduleFrequency": { - "description": "Specifies the schedule for generating inventory results.", - "enum": [ - "Daily", - "Weekly" - ], - "type": "string" - } - }, - "required": [ - "Destination", - "Enabled", - "Id", - "IncludedObjectVersions", - "ScheduleFrequency" - ], - "type": "object" - }, - "LambdaConfiguration": { - "additionalProperties": false, - "description": "Describes the LAMlong functions to invoke and the events for which to invoke them.", - "properties": { - "Event": { - "description": "The Amazon S3 bucket event for which to invoke the LAMlong function. For more information, see [Supported Event Types](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) in the *Amazon S3 User Guide*.", - "type": "string" - }, - "Filter": { - "$ref": "#/definitions/NotificationFilter", - "description": "The filtering rules that determine which objects invoke the AWS Lambda function. For example, you can create a filter so that only image files with a ``.jpg`` extension invoke the function when they are added to the Amazon S3 bucket." - }, - "Function": { - "description": "The Amazon Resource Name (ARN) of the LAMlong function that Amazon S3 invokes when the specified event type occurs.", - "type": "string" - } - }, - "required": [ - "Function", - "Event" - ], - "type": "object" - }, - "LifecycleConfiguration": { - "additionalProperties": false, - "description": "Specifies the lifecycle configuration for objects in an Amazon S3 bucket. For more information, see [Object Lifecycle Management](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) in the *Amazon S3 User Guide*.", - "properties": { - "Rules": { - "description": "A lifecycle rule for individual objects in an Amazon S3 bucket.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Rule" - }, - "type": "array", - "uniqueItems": true - }, - "TransitionDefaultMinimumObjectSize": { - "description": "", - "enum": [ - "varies_by_storage_class", - "all_storage_classes_128K" - ], - "type": "string" - } - }, - "required": [ - "Rules" - ], - "type": "object" - }, - "LoggingConfiguration": { - "additionalProperties": false, - "description": "Describes where logs are stored and the prefix that Amazon S3 assigns to all log object keys for a bucket. For examples and more information, see [PUT Bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html) in the *Amazon S3 API Reference*.\n To successfully complete the ``AWS::S3::Bucket LoggingConfiguration`` request, you must have ``s3:PutObject`` and ``s3:PutObjectAcl`` in your IAM permissions.", - "properties": { - "DestinationBucketName": { - "description": "The name of the bucket where Amazon S3 should store server access log files. You can store log files in any bucket that you own. By default, logs are stored in the bucket where the ``LoggingConfiguration`` property is defined.", - "type": "string" - }, - "LogFilePrefix": { - "description": "A prefix for all log object keys. If you store log files from multiple Amazon S3 buckets in a single bucket, you can use a prefix to distinguish which log files came from which bucket.", - "type": "string" - }, - "TargetObjectKeyFormat": { - "$ref": "#/definitions/TargetObjectKeyFormat", - "description": "Amazon S3 key format for log objects. Only one format, either PartitionedPrefix or SimplePrefix, is allowed." - } - }, - "type": "object" - }, - "Metrics": { - "additionalProperties": false, - "description": "A container specifying replication metrics-related settings enabling replication metrics and events.", - "properties": { - "EventThreshold": { - "$ref": "#/definitions/ReplicationTimeValue", - "description": "A container specifying the time threshold for emitting the ``s3:Replication:OperationMissedThreshold`` event." - }, - "Status": { - "description": "Specifies whether the replication metrics are enabled.", - "enum": [ - "Disabled", - "Enabled" - ], - "type": "string" - } - }, - "required": [ - "Status" - ], - "type": "object" - }, - "MetricsConfiguration": { - "additionalProperties": false, - "description": "Specifies a metrics configuration for the CloudWatch request metrics (specified by the metrics configuration ID) from an Amazon S3 bucket. If you're updating an existing metrics configuration, note that this is a full replacement of the existing metrics configuration. If you don't include the elements you want to keep, they are erased. For examples, see [AWS::S3::Bucket](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#aws-properties-s3-bucket--examples). For more information, see [PUT Bucket metrics](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTMetricConfiguration.html) in the *Amazon S3 API Reference*.", - "properties": { - "AccessPointArn": { - "description": "The access point that was used while performing operations on the object. The metrics configuration only includes objects that meet the filter's criteria.", - "type": "string" - }, - "Id": { - "description": "The ID used to identify the metrics configuration. This can be any value you choose that helps you identify your metrics configuration.", - "type": "string" - }, - "Prefix": { - "description": "The prefix that an object must have to be included in the metrics results.", - "type": "string" - }, - "TagFilters": { - "description": "Specifies a list of tag filters to use as a metrics configuration filter. The metrics configuration includes only objects that meet the filter's criteria.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TagFilter" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Id" - ], - "type": "object" - }, - "NoncurrentVersionExpiration": { - "additionalProperties": false, - "description": "Specifies when noncurrent object versions expire. Upon expiration, S3 permanently deletes the noncurrent object versions. You set this lifecycle configuration action on a bucket that has versioning enabled (or suspended) to request that S3 delete noncurrent object versions at a specific period in the object's lifetime. For more information about setting a lifecycle rule configuration, see [AWS::S3::Bucket Rule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html).", - "properties": { - "NewerNoncurrentVersions": { - "description": "Specifies how many noncurrent versions S3 will retain. If there are this many more recent noncurrent versions, S3 will take the associated action. For more information about noncurrent versions, see [Lifecycle configuration elements](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html) in the *Amazon S3 User Guide*.", - "type": "integer" - }, - "NoncurrentDays": { - "description": "Specifies the number of days an object is noncurrent before S3 can perform the associated action. For information about the noncurrent days calculations, see [How Amazon S3 Calculates When an Object Became Noncurrent](https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations) in the *Amazon S3 User Guide*.", - "type": "integer" - } - }, - "required": [ - "NoncurrentDays" - ], - "type": "object" - }, - "NoncurrentVersionTransition": { - "additionalProperties": false, - "description": "Container for the transition rule that describes when noncurrent objects transition to the ``STANDARD_IA``, ``ONEZONE_IA``, ``INTELLIGENT_TIERING``, ``GLACIER_IR``, ``GLACIER``, or ``DEEP_ARCHIVE`` storage class. If your bucket is versioning-enabled (or versioning is suspended), you can set this action to request that Amazon S3 transition noncurrent object versions to the ``STANDARD_IA``, ``ONEZONE_IA``, ``INTELLIGENT_TIERING``, ``GLACIER_IR``, ``GLACIER``, or ``DEEP_ARCHIVE`` storage class at a specific period in the object's lifetime. If you specify this property, don't specify the ``NoncurrentVersionTransitions`` property.", - "properties": { - "NewerNoncurrentVersions": { - "description": "Specifies how many noncurrent versions S3 will retain. If there are this many more recent noncurrent versions, S3 will take the associated action. For more information about noncurrent versions, see [Lifecycle configuration elements](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html) in the *Amazon S3 User Guide*.", - "type": "integer" - }, - "StorageClass": { - "description": "The class of storage used to store the object.", - "enum": [ - "DEEP_ARCHIVE", - "GLACIER", - "Glacier", - "GLACIER_IR", - "INTELLIGENT_TIERING", - "ONEZONE_IA", - "STANDARD_IA" - ], - "type": "string" - }, - "TransitionInDays": { - "description": "Specifies the number of days an object is noncurrent before Amazon S3 can perform the associated action. For information about the noncurrent days calculations, see [How Amazon S3 Calculates How Long an Object Has Been Noncurrent](https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations) in the *Amazon S3 User Guide*.", - "type": "integer" - } - }, - "required": [ - "StorageClass", - "TransitionInDays" - ], - "type": "object" - }, - "NotificationConfiguration": { - "additionalProperties": false, - "description": "Describes the notification configuration for an Amazon S3 bucket.\n If you create the target resource and related permissions in the same template, you might have a circular dependency.\n For example, you might use the ``AWS::Lambda::Permission`` resource to grant the bucket permission to invoke an AWS Lambda function. However, AWS CloudFormation can't create the bucket until the bucket has permission to invoke the function (AWS CloudFormation checks whether the bucket can invoke the function). If you're using Refs to pass the bucket name, this leads to a circular dependency.\n To avoid this dependency, you can create all resources without specifying the notification configuration. Then, update the stack with a notification configuration.\n For more information on permissions, see [AWS::Lambda::Permission](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html) and [Granting Permissions to Publish Event Notification Messages to a Destination](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html#grant-destinations-permissions-to-s3).", - "properties": { - "EventBridgeConfiguration": { - "$ref": "#/definitions/EventBridgeConfiguration", - "description": "Enables delivery of events to Amazon EventBridge." - }, - "LambdaConfigurations": { - "description": "Describes the LAMlong functions to invoke and the events for which to invoke them.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/LambdaConfiguration" - }, - "type": "array", - "uniqueItems": true - }, - "QueueConfigurations": { - "description": "The Amazon Simple Queue Service queues to publish messages to and the events for which to publish messages.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/QueueConfiguration" - }, - "type": "array", - "uniqueItems": true - }, - "TopicConfigurations": { - "description": "The topic to which notifications are sent and the events for which notifications are generated.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TopicConfiguration" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "NotificationFilter": { - "additionalProperties": false, - "description": "Specifies object key name filtering rules. For information about key name filtering, see [Configuring event notifications using object key name filtering](https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-filtering.html) in the *Amazon S3 User Guide*.", - "properties": { - "S3Key": { - "$ref": "#/definitions/S3KeyFilter", - "description": "A container for object key name prefix and suffix filtering rules." - } - }, - "required": [ - "S3Key" - ], - "type": "object" - }, - "ObjectLockConfiguration": { - "additionalProperties": false, - "description": "Places an Object Lock configuration on the specified bucket. The rule specified in the Object Lock configuration will be applied by default to every new object placed in the specified bucket. For more information, see [Locking Objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).", - "properties": { - "ObjectLockEnabled": { - "const": "Enabled", - "description": "Indicates whether this bucket has an Object Lock configuration enabled. Enable ``ObjectLockEnabled`` when you apply ``ObjectLockConfiguration`` to a bucket.", - "type": "string" - }, - "Rule": { - "$ref": "#/definitions/ObjectLockRule", - "description": "Specifies the Object Lock rule for the specified object. Enable this rule when you apply ``ObjectLockConfiguration`` to a bucket. If Object Lock is turned on, bucket settings require both ``Mode`` and a period of either ``Days`` or ``Years``. You cannot specify ``Days`` and ``Years`` at the same time. For more information, see [ObjectLockRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-objectlockrule.html) and [DefaultRetention](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-defaultretention.html)." - } - }, - "type": "object" - }, - "ObjectLockRule": { - "additionalProperties": false, - "description": "Specifies the Object Lock rule for the specified object. Enable the this rule when you apply ``ObjectLockConfiguration`` to a bucket.", - "properties": { - "DefaultRetention": { - "$ref": "#/definitions/DefaultRetention", - "description": "The default Object Lock retention mode and period that you want to apply to new objects placed in the specified bucket. If Object Lock is turned on, bucket settings require both ``Mode`` and a period of either ``Days`` or ``Years``. You cannot specify ``Days`` and ``Years`` at the same time. For more information about allowable values for mode and period, see [DefaultRetention](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-defaultretention.html)." - } - }, - "type": "object" - }, - "OwnershipControls": { - "additionalProperties": false, - "description": "Specifies the container element for Object Ownership rules.\n S3 Object Ownership is an Amazon S3 bucket-level setting that you can use to disable access control lists (ACLs) and take ownership of every object in your bucket, simplifying access management for data stored in Amazon S3. For more information, see [Controlling ownership of objects and disabling ACLs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) in the *Amazon S3 User Guide*.", - "properties": { - "Rules": { - "description": "Specifies the container element for Object Ownership rules.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/OwnershipControlsRule" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Rules" - ], - "type": "object" - }, - "OwnershipControlsRule": { - "additionalProperties": false, - "description": "Specifies an Object Ownership rule.\n S3 Object Ownership is an Amazon S3 bucket-level setting that you can use to disable access control lists (ACLs) and take ownership of every object in your bucket, simplifying access management for data stored in Amazon S3. For more information, see [Controlling ownership of objects and disabling ACLs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) in the *Amazon S3 User Guide*.", - "properties": { - "ObjectOwnership": { - "description": "Specifies an object ownership rule.", - "enum": [ - "ObjectWriter", - "BucketOwnerPreferred", - "BucketOwnerEnforced" - ], - "type": "string" - } - }, - "type": "object" - }, - "PartitionedPrefix": { - "additionalProperties": false, - "description": "Amazon S3 keys for log objects are partitioned in the following format:\n ``[DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]`` \n PartitionedPrefix defaults to EventTime delivery when server access logs are delivered.", - "properties": { - "PartitionDateSource": { - "description": "Specifies the partition date source for the partitioned prefix. ``PartitionDateSource`` can be ``EventTime`` or ``DeliveryTime``.\n For ``DeliveryTime``, the time in the log file names corresponds to the delivery time for the log files. \n For ``EventTime``, The logs delivered are for a specific day only. The year, month, and day correspond to the day on which the event occurred, and the hour, minutes and seconds are set to 00 in the key.", - "enum": [ - "EventTime", - "DeliveryTime" - ], - "type": "string" - } - }, - "type": "object" - }, - "PublicAccessBlockConfiguration": { - "additionalProperties": false, - "description": "The PublicAccessBlock configuration that you want to apply to this Amazon S3 bucket. You can enable the configuration options in any combination. For more information about when Amazon S3 considers a bucket or object public, see [The Meaning of \"Public\"](https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status) in the *Amazon S3 User Guide*.", - "properties": { - "BlockPublicAcls": { - "description": "Specifies whether Amazon S3 should block public access control lists (ACLs) for this bucket and objects in this bucket. Setting this element to ``TRUE`` causes the following behavior:\n + PUT Bucket ACL and PUT Object ACL calls fail if the specified ACL is public.\n + PUT Object calls fail if the request includes a public ACL.\n + PUT Bucket calls fail if the request includes a public ACL.\n \n Enabling this setting doesn't affect existing policies or ACLs.", - "type": "boolean" - }, - "BlockPublicPolicy": { - "description": "Specifies whether Amazon S3 should block public bucket policies for this bucket. Setting this element to ``TRUE`` causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy allows public access. \n Enabling this setting doesn't affect existing bucket policies.", - "type": "boolean" - }, - "IgnorePublicAcls": { - "description": "Specifies whether Amazon S3 should ignore public ACLs for this bucket and objects in this bucket. Setting this element to ``TRUE`` causes Amazon S3 to ignore all public ACLs on this bucket and objects in this bucket.\n Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set.", - "type": "boolean" - }, - "RestrictPublicBuckets": { - "description": "Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting this element to ``TRUE`` restricts access to this bucket to only AWS-service principals and authorized users within this account if the bucket has a public policy.\n Enabling this setting doesn't affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked.", - "type": "boolean" - } - }, - "type": "object" - }, - "QueueConfiguration": { - "additionalProperties": false, - "description": "Specifies the configuration for publishing messages to an Amazon Simple Queue Service (Amazon SQS) queue when Amazon S3 detects specified events.", - "properties": { - "Event": { - "description": "The Amazon S3 bucket event about which you want to publish messages to Amazon SQS. For more information, see [Supported Event Types](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) in the *Amazon S3 User Guide*.", - "type": "string" - }, - "Filter": { - "$ref": "#/definitions/NotificationFilter", - "description": "The filtering rules that determine which objects trigger notifications. For example, you can create a filter so that Amazon S3 sends notifications only when image files with a ``.jpg`` extension are added to the bucket. For more information, see [Configuring event notifications using object key name filtering](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/notification-how-to-filtering.html) in the *Amazon S3 User Guide*." - }, - "Queue": { - "description": "The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3 publishes a message when it detects events of the specified type. FIFO queues are not allowed when enabling an SQS queue as the event notification destination.", - "type": "string" - } - }, - "required": [ - "Event", - "Queue" - ], - "type": "object" - }, - "RedirectAllRequestsTo": { - "additionalProperties": false, - "description": "Specifies the redirect behavior of all requests to a website endpoint of an Amazon S3 bucket.", - "properties": { - "HostName": { - "description": "Name of the host where requests are redirected.", - "type": "string" - }, - "Protocol": { - "description": "Protocol to use when redirecting requests. The default is the protocol that is used in the original request.", - "enum": [ - "http", - "https" - ], - "type": "string" - } - }, - "required": [ - "HostName" - ], - "type": "object" - }, - "RedirectRule": { - "additionalProperties": false, - "description": "Specifies how requests are redirected. In the event of an error, you can specify a different error code to return.", - "properties": { - "HostName": { - "description": "The host name to use in the redirect request.", - "type": "string" - }, - "HttpRedirectCode": { - "description": "The HTTP redirect code to use on the response. Not required if one of the siblings is present.", - "type": "string" - }, - "Protocol": { - "description": "Protocol to use when redirecting requests. The default is the protocol that is used in the original request.", - "enum": [ - "http", - "https" - ], - "type": "string" - }, - "ReplaceKeyPrefixWith": { - "description": "The object key prefix to use in the redirect request. For example, to redirect requests for all pages with prefix ``docs/`` (objects in the ``docs/`` folder) to ``documents/``, you can set a condition block with ``KeyPrefixEquals`` set to ``docs/`` and in the Redirect set ``ReplaceKeyPrefixWith`` to ``/documents``. Not required if one of the siblings is present. Can be present only if ``ReplaceKeyWith`` is not provided.\n Replacement must be made for object keys containing special characters (such as carriage returns) when using XML requests. For more information, see [XML related object key constraints](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).", - "type": "string" - }, - "ReplaceKeyWith": { - "description": "The specific object key to use in the redirect request. For example, redirect request to ``error.html``. Not required if one of the siblings is present. Can be present only if ``ReplaceKeyPrefixWith`` is not provided.\n Replacement must be made for object keys containing special characters (such as carriage returns) when using XML requests. For more information, see [XML related object key constraints](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).", - "type": "string" - } - }, - "type": "object" - }, - "ReplicaModifications": { - "additionalProperties": false, - "description": "A filter that you can specify for selection for modifications on replicas.", - "properties": { - "Status": { - "description": "Specifies whether Amazon S3 replicates modifications on replicas.\n *Allowed values*: ``Enabled`` | ``Disabled``", - "enum": [ - "Enabled", - "Disabled" - ], - "type": "string" - } - }, - "required": [ - "Status" - ], - "type": "object" - }, - "ReplicationConfiguration": { - "additionalProperties": false, - "description": "A container for replication rules. You can add up to 1,000 rules. The maximum size of a replication configuration is 2 MB. The latest version of the replication configuration XML is V2. For more information about XML V2 replication configurations, see [Replication configuration](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-add-config.html) in the *Amazon S3 User Guide*.", - "properties": { - "Role": { - "description": "The Amazon Resource Name (ARN) of the IAMlong (IAM) role that Amazon S3 assumes when replicating objects. For more information, see [How to Set Up Replication](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-how-setup.html) in the *Amazon S3 User Guide*.", - "type": "string" - }, - "Rules": { - "description": "A container for one or more replication rules. A replication configuration must have at least one rule and can contain a maximum of 1,000 rules.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ReplicationRule", - "maxLength": 1000, - "minLength": 1 - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Role", - "Rules" - ], - "type": "object" - }, - "ReplicationDestination": { - "additionalProperties": false, - "description": "A container for information about the replication destination and its configurations including enabling the S3 Replication Time Control (S3 RTC).", - "properties": { - "AccessControlTranslation": { - "$ref": "#/definitions/AccessControlTranslation", - "description": "Specify this only in a cross-account scenario (where source and destination bucket owners are not the same), and you want to change replica ownership to the AWS-account that owns the destination bucket. If this is not specified in the replication configuration, the replicas are owned by same AWS-account that owns the source object." - }, - "Account": { - "description": "Destination bucket owner account ID. In a cross-account scenario, if you direct Amazon S3 to change replica ownership to the AWS-account that owns the destination bucket by specifying the ``AccessControlTranslation`` property, this is the account ID of the destination bucket owner. For more information, see [Cross-Region Replication Additional Configuration: Change Replica Owner](https://docs.aws.amazon.com/AmazonS3/latest/dev/crr-change-owner.html) in the *Amazon S3 User Guide*.\n If you specify the ``AccessControlTranslation`` property, the ``Account`` property is required.", - "type": "string" - }, - "Bucket": { - "description": "The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to store the results.", - "type": "string" - }, - "EncryptionConfiguration": { - "$ref": "#/definitions/EncryptionConfiguration", - "description": "Specifies encryption-related information." - }, - "Metrics": { - "$ref": "#/definitions/Metrics", - "description": "A container specifying replication metrics-related settings enabling replication metrics and events." - }, - "ReplicationTime": { - "$ref": "#/definitions/ReplicationTime", - "description": "A container specifying S3 Replication Time Control (S3 RTC), including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. Must be specified together with a ``Metrics`` block." - }, - "StorageClass": { - "description": "The storage class to use when replicating objects, such as S3 Standard or reduced redundancy. By default, Amazon S3 uses the storage class of the source object to create the object replica. \n For valid values, see the ``StorageClass`` element of the [PUT Bucket replication](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html) action in the *Amazon S3 API Reference*.", - "enum": [ - "DEEP_ARCHIVE", - "GLACIER", - "GLACIER_IR", - "INTELLIGENT_TIERING", - "ONEZONE_IA", - "REDUCED_REDUNDANCY", - "STANDARD", - "STANDARD_IA" - ], - "type": "string" - } - }, - "required": [ - "Bucket" - ], - "type": "object" - }, - "ReplicationRule": { - "additionalProperties": false, - "description": "Specifies which Amazon S3 objects to replicate and where to store the replicas.", - "properties": { - "DeleteMarkerReplication": { - "$ref": "#/definitions/DeleteMarkerReplication", - "description": "Specifies whether Amazon S3 replicates delete markers. If you specify a ``Filter`` in your replication configuration, you must also include a ``DeleteMarkerReplication`` element. If your ``Filter`` includes a ``Tag`` element, the ``DeleteMarkerReplication`` ``Status`` must be set to Disabled, because Amazon S3 does not support replicating delete markers for tag-based rules. For an example configuration, see [Basic Rule Configuration](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config). \n For more information about delete marker replication, see [Basic Rule Configuration](https://docs.aws.amazon.com/AmazonS3/latest/dev/delete-marker-replication.html). \n If you are using an earlier version of the replication configuration, Amazon S3 handles replication of delete markers differently. For more information, see [Backward Compatibility](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations)." - }, - "Destination": { - "$ref": "#/definitions/ReplicationDestination", - "description": "A container for information about the replication destination and its configurations including enabling the S3 Replication Time Control (S3 RTC)." - }, - "Filter": { - "$ref": "#/definitions/ReplicationRuleFilter", - "description": "A filter that identifies the subset of objects to which the replication rule applies. A ``Filter`` must specify exactly one ``Prefix``, ``TagFilter``, or an ``And`` child element. The use of the filter field indicates that this is a V2 replication configuration. This field isn't supported in a V1 replication configuration.\n V1 replication configuration only supports filtering by key prefix. To filter using a V1 replication configuration, add the ``Prefix`` directly as a child element of the ``Rule`` element." - }, - "Id": { - "description": "A unique identifier for the rule. The maximum value is 255 characters. If you don't specify a value, AWS CloudFormation generates a random ID. When using a V2 replication configuration this property is capitalized as \"ID\".", - "maxLength": 255, - "type": "string" - }, - "Prefix": { - "description": "An object key name prefix that identifies the object or objects to which the rule applies. The maximum prefix length is 1,024 characters. To include all objects in a bucket, specify an empty string. To filter using a V1 replication configuration, add the ``Prefix`` directly as a child element of the ``Rule`` element.\n Replacement must be made for object keys containing special characters (such as carriage returns) when using XML requests. For more information, see [XML related object key constraints](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).", - "maxLength": 1024, - "type": "string" - }, - "Priority": { - "description": "The priority indicates which rule has precedence whenever two or more replication rules conflict. Amazon S3 will attempt to replicate objects according to all replication rules. However, if there are two or more rules with the same destination bucket, then objects will be replicated according to the rule with the highest priority. The higher the number, the higher the priority. \n For more information, see [Replication](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) in the *Amazon S3 User Guide*.", - "type": "integer" - }, - "SourceSelectionCriteria": { - "$ref": "#/definitions/SourceSelectionCriteria", - "description": "A container that describes additional filters for identifying the source objects that you want to replicate. You can choose to enable or disable the replication of these objects." - }, - "Status": { - "description": "Specifies whether the rule is enabled.", - "enum": [ - "Disabled", - "Enabled" - ], - "type": "string" - } - }, - "required": [ - "Destination", - "Status" - ], - "type": "object" - }, - "ReplicationRuleAndOperator": { - "additionalProperties": false, - "description": "A container for specifying rule filters. The filters determine the subset of objects to which the rule applies. This element is required only if you specify more than one filter. \n For example:\n + If you specify both a ``Prefix`` and a ``TagFilter``, wrap these filters in an ``And`` tag. \n + If you specify a filter based on multiple tags, wrap the ``TagFilter`` elements in an ``And`` tag", - "properties": { - "Prefix": { - "description": "An object key name prefix that identifies the subset of objects to which the rule applies.", - "type": "string" - }, - "TagFilters": { - "description": "An array of tags containing key and value pairs.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TagFilter" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "ReplicationRuleFilter": { - "additionalProperties": false, - "description": "A filter that identifies the subset of objects to which the replication rule applies. A ``Filter`` must specify exactly one ``Prefix``, ``TagFilter``, or an ``And`` child element.", - "properties": { - "And": { - "$ref": "#/definitions/ReplicationRuleAndOperator", - "description": "A container for specifying rule filters. The filters determine the subset of objects to which the rule applies. This element is required only if you specify more than one filter. For example: \n + If you specify both a ``Prefix`` and a ``TagFilter``, wrap these filters in an ``And`` tag.\n + If you specify a filter based on multiple tags, wrap the ``TagFilter`` elements in an ``And`` tag." - }, - "Prefix": { - "description": "An object key name prefix that identifies the subset of objects to which the rule applies.\n Replacement must be made for object keys containing special characters (such as carriage returns) when using XML requests. For more information, see [XML related object key constraints](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).", - "type": "string" - }, - "TagFilter": { - "$ref": "#/definitions/TagFilter", - "description": "A container for specifying a tag key and value. \n The rule applies only to objects that have the tag in their tag set." - } - }, - "type": "object" - }, - "ReplicationTime": { - "additionalProperties": false, - "description": "A container specifying S3 Replication Time Control (S3 RTC) related information, including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. Must be specified together with a ``Metrics`` block.", - "properties": { - "Status": { - "description": "Specifies whether the replication time is enabled.", - "enum": [ - "Disabled", - "Enabled" - ], - "type": "string" - }, - "Time": { - "$ref": "#/definitions/ReplicationTimeValue", - "description": "A container specifying the time by which replication should be complete for all objects and operations on objects." - } - }, - "required": [ - "Status", - "Time" - ], - "type": "object" - }, - "ReplicationTimeValue": { - "additionalProperties": false, - "description": "A container specifying the time value for S3 Replication Time Control (S3 RTC) and replication metrics ``EventThreshold``.", - "properties": { - "Minutes": { - "description": "Contains an integer specifying time in minutes. \n Valid value: 15", - "type": "integer" - } - }, - "required": [ - "Minutes" - ], - "type": "object" - }, - "RoutingRule": { - "additionalProperties": false, - "description": "Specifies the redirect behavior and when a redirect is applied. For more information about routing rules, see [Configuring advanced conditional redirects](https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html#advanced-conditional-redirects) in the *Amazon S3 User Guide*.", - "properties": { - "RedirectRule": { - "$ref": "#/definitions/RedirectRule", - "description": "Container for redirect information. You can redirect requests to another host, to another page, or with another protocol. In the event of an error, you can specify a different error code to return." - }, - "RoutingRuleCondition": { - "$ref": "#/definitions/RoutingRuleCondition", - "description": "A container for describing a condition that must be met for the specified redirect to apply. For example, 1. If request is for pages in the ``/docs`` folder, redirect to the ``/documents`` folder. 2. If request results in HTTP error 4xx, redirect request to another host where you might process the error." - } - }, - "required": [ - "RedirectRule" - ], - "type": "object" - }, - "RoutingRuleCondition": { - "additionalProperties": false, - "description": "A container for describing a condition that must be met for the specified redirect to apply. For example, 1. If request is for pages in the ``/docs`` folder, redirect to the ``/documents`` folder. 2. If request results in HTTP error 4xx, redirect request to another host where you might process the error.", - "properties": { - "HttpErrorCodeReturnedEquals": { - "description": "The HTTP error code when the redirect is applied. In the event of an error, if the error code equals this value, then the specified redirect is applied.\n Required when parent element ``Condition`` is specified and sibling ``KeyPrefixEquals`` is not specified. If both are specified, then both must be true for the redirect to be applied.", - "type": "string" - }, - "KeyPrefixEquals": { - "description": "The object key name prefix when the redirect is applied. For example, to redirect requests for ``ExamplePage.html``, the key prefix will be ``ExamplePage.html``. To redirect request for all pages with the prefix ``docs/``, the key prefix will be ``/docs``, which identifies all objects in the docs/ folder.\n Required when the parent element ``Condition`` is specified and sibling ``HttpErrorCodeReturnedEquals`` is not specified. If both conditions are specified, both must be true for the redirect to be applied.", - "type": "string" - } - }, - "type": "object" - }, - "Rule": { - "additionalProperties": false, - "description": "Specifies lifecycle rules for an Amazon S3 bucket. For more information, see [Put Bucket Lifecycle Configuration](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html) in the *Amazon S3 API Reference*.\n You must specify at least one of the following properties: ``AbortIncompleteMultipartUpload``, ``ExpirationDate``, ``ExpirationInDays``, ``NoncurrentVersionExpirationInDays``, ``NoncurrentVersionTransition``, ``NoncurrentVersionTransitions``, ``Transition``, or ``Transitions``.", - "properties": { - "AbortIncompleteMultipartUpload": { - "$ref": "#/definitions/AbortIncompleteMultipartUpload", - "description": "Specifies a lifecycle rule that stops incomplete multipart uploads to an Amazon S3 bucket." - }, - "ExpirationDate": { - "$ref": "#/definitions/iso8601UTC", - "description": "Indicates when objects are deleted from Amazon S3 and Amazon S3 Glacier. The date value must be in ISO 8601 format. The time is always midnight UTC. If you specify an expiration and transition time, you must use the same time unit for both properties (either in days or by date). The expiration time must also be later than the transition time." - }, - "ExpirationInDays": { - "description": "Indicates the number of days after creation when objects are deleted from Amazon S3 and Amazon S3 Glacier. If you specify an expiration and transition time, you must use the same time unit for both properties (either in days or by date). The expiration time must also be later than the transition time.", - "type": "integer" - }, - "ExpiredObjectDeleteMarker": { - "description": "Indicates whether Amazon S3 will remove a delete marker without any noncurrent versions. If set to true, the delete marker will be removed if there are no noncurrent versions. This cannot be specified with ``ExpirationInDays``, ``ExpirationDate``, or ``TagFilters``.", - "type": "boolean" - }, - "Id": { - "description": "Unique identifier for the rule. The value can't be longer than 255 characters.", - "maxLength": 255, - "type": "string" - }, - "NoncurrentVersionExpiration": { - "$ref": "#/definitions/NoncurrentVersionExpiration", - "description": "Specifies when noncurrent object versions expire. Upon expiration, S3 permanently deletes the noncurrent object versions. You set this lifecycle configuration action on a bucket that has versioning enabled (or suspended) to request that S3 delete noncurrent object versions at a specific period in the object's lifetime." - }, - "NoncurrentVersionExpirationInDays": { - "description": "(Deprecated.) For buckets with versioning enabled (or suspended), specifies the time, in days, between when a new version of the object is uploaded to the bucket and when old versions of the object expire. When object versions expire, Amazon S3 permanently deletes them. If you specify a transition and expiration time, the expiration time must be later than the transition time.", - "type": "integer" - }, - "NoncurrentVersionTransition": { - "$ref": "#/definitions/NoncurrentVersionTransition", - "description": "(Deprecated.) For buckets with versioning enabled (or suspended), specifies when non-current objects transition to a specified storage class. If you specify a transition and expiration time, the expiration time must be later than the transition time. If you specify this property, don't specify the ``NoncurrentVersionTransitions`` property." - }, - "NoncurrentVersionTransitions": { - "description": "For buckets with versioning enabled (or suspended), one or more transition rules that specify when non-current objects transition to a specified storage class. If you specify a transition and expiration time, the expiration time must be later than the transition time. If you specify this property, don't specify the ``NoncurrentVersionTransition`` property.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/NoncurrentVersionTransition" - }, - "type": "array", - "uniqueItems": true - }, - "ObjectSizeGreaterThan": { - "description": "Specifies the minimum object size in bytes for this rule to apply to. Objects must be larger than this value in bytes. For more information about size based rules, see [Lifecycle configuration using size-based rules](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html#lc-size-rules) in the *Amazon S3 User Guide*.", - "maxLength": 20, - "pattern": "[0-9]+", - "type": "string" - }, - "ObjectSizeLessThan": { - "description": "Specifies the maximum object size in bytes for this rule to apply to. Objects must be smaller than this value in bytes. For more information about sized based rules, see [Lifecycle configuration using size-based rules](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html#lc-size-rules) in the *Amazon S3 User Guide*.", - "maxLength": 20, - "pattern": "[0-9]+", - "type": "string" - }, - "Prefix": { - "description": "Object key prefix that identifies one or more objects to which this rule applies.\n Replacement must be made for object keys containing special characters (such as carriage returns) when using XML requests. For more information, see [XML related object key constraints](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).", - "type": "string" - }, - "Status": { - "description": "If ``Enabled``, the rule is currently being applied. If ``Disabled``, the rule is not currently being applied.", - "enum": [ - "Enabled", - "Disabled" - ], - "type": "string" - }, - "TagFilters": { - "description": "Tags to use to identify a subset of objects to which the lifecycle rule applies.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TagFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Transition": { - "$ref": "#/definitions/Transition", - "description": "(Deprecated.) Specifies when an object transitions to a specified storage class. If you specify an expiration and transition time, you must use the same time unit for both properties (either in days or by date). The expiration time must also be later than the transition time. If you specify this property, don't specify the ``Transitions`` property." - }, - "Transitions": { - "description": "One or more transition rules that specify when an object transitions to a specified storage class. If you specify an expiration and transition time, you must use the same time unit for both properties (either in days or by date). The expiration time must also be later than the transition time. If you specify this property, don't specify the ``Transition`` property.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Transition" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Status" - ], - "type": "object" - }, - "S3KeyFilter": { - "additionalProperties": false, - "description": "A container for object key name prefix and suffix filtering rules. For more information about object key name filtering, see [Configuring event notifications using object key name filtering](https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-filtering.html) in the *Amazon S3 User Guide*.\n The same type of filter rule cannot be used more than once. For example, you cannot specify two prefix rules.", - "properties": { - "Rules": { - "description": "A list of containers for the key-value pair that defines the criteria for the filter rule.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/FilterRule" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Rules" - ], - "type": "object" - }, - "ServerSideEncryptionByDefault": { - "additionalProperties": false, - "description": "Describes the default server-side encryption to apply to new objects in the bucket. If a PUT Object request doesn't specify any server-side encryption, this default encryption will be applied. For more information, see [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html).\n + *General purpose buckets* - If you don't specify a customer managed key at configuration, Amazon S3 automatically creates an AWS KMS key (``aws/s3``) in your AWS account the first time that you add an object encrypted with SSE-KMS to a bucket. By default, Amazon S3 uses this KMS key for SSE-KMS. \n + *Directory buckets* - Your SSE-KMS configuration can only support 1 [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) per directory bucket for the lifetime of the bucket. The [managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (``aws/s3``) isn't supported. \n + *Directory buckets* - For directory buckets, there are only two supported options for server-side encryption: SSE-S3 and SSE-KMS.", - "properties": { - "KMSMasterKeyID": { - "description": "AWS Key Management Service (KMS) customer managed key ID to use for the default encryption. \n + *General purpose buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms`` or ``aws:kms:dsse``.\n + *Directory buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms``.\n \n You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key.\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key Alias: ``alias/alias-name`` \n \n If you are using encryption with cross-account or AWS service operations, you must use a fully qualified KMS key ARN. For more information, see [Using encryption for cross-account operations](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy).\n + *General purpose buckets* - If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester\u2019s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner. Also, if you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log. \n + *Directory buckets* - When you specify an [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.\n \n Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*.", - "type": "string" - }, - "SSEAlgorithm": { - "description": "Server-side encryption algorithm to use for the default encryption.\n For directory buckets, there are only two supported values for server-side encryption: ``AES256`` and ``aws:kms``.", - "enum": [ - "aws:kms", - "AES256", - "aws:kms:dsse" - ], - "type": "string" - } - }, - "required": [ - "SSEAlgorithm" - ], - "type": "object" - }, - "ServerSideEncryptionRule": { - "additionalProperties": false, - "description": "Specifies the default server-side encryption configuration.\n + *General purpose buckets* - If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester\u2019s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.\n + *Directory buckets* - When you specify an [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.", - "properties": { - "BucketKeyEnabled": { - "description": "Specifies whether Amazon S3 should use an S3 Bucket Key with server-side encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects are not affected. Setting the ``BucketKeyEnabled`` element to ``true`` causes Amazon S3 to use an S3 Bucket Key. By default, S3 Bucket Key is not enabled.\n For more information, see [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) in the *Amazon S3 User Guide*.", - "type": "boolean" - }, - "ServerSideEncryptionByDefault": { - "$ref": "#/definitions/ServerSideEncryptionByDefault", - "description": "Specifies the default server-side encryption to apply to new objects in the bucket. If a PUT Object request doesn't specify any server-side encryption, this default encryption will be applied." - } - }, - "type": "object" - }, - "SourceSelectionCriteria": { - "additionalProperties": false, - "description": "A container that describes additional filters for identifying the source objects that you want to replicate. You can choose to enable or disable the replication of these objects.", - "properties": { - "ReplicaModifications": { - "$ref": "#/definitions/ReplicaModifications", - "description": "A filter that you can specify for selection for modifications on replicas." - }, - "SseKmsEncryptedObjects": { - "$ref": "#/definitions/SseKmsEncryptedObjects", - "description": "A container for filter information for the selection of Amazon S3 objects encrypted with AWS KMS." - } - }, - "type": "object" - }, - "SseKmsEncryptedObjects": { - "additionalProperties": false, - "description": "A container for filter information for the selection of S3 objects encrypted with AWS KMS.", - "properties": { - "Status": { - "description": "Specifies whether Amazon S3 replicates objects created with server-side encryption using an AWS KMS key stored in AWS Key Management Service.", - "enum": [ - "Disabled", - "Enabled" - ], - "type": "string" - } - }, - "required": [ - "Status" - ], - "type": "object" - }, - "StorageClassAnalysis": { - "additionalProperties": false, - "description": "Specifies data related to access patterns to be collected and made available to analyze the tradeoffs between different storage classes for an Amazon S3 bucket.", - "properties": { - "DataExport": { - "$ref": "#/definitions/DataExport", - "description": "Specifies how data related to the storage class analysis for an Amazon S3 bucket should be exported." - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A container of a key value name pair.", - "properties": { - "Key": { - "description": "Name of the object key.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "Value of the tag.", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TagFilter": { - "additionalProperties": false, - "description": "Specifies tags to use to identify a subset of objects for an Amazon S3 bucket.", - "properties": { - "Key": { - "description": "The tag key.", - "type": "string" - }, - "Value": { - "description": "The tag value.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TargetObjectKeyFormat": { - "description": "Describes the key format for server access log file in the target bucket. You can choose between SimplePrefix and PartitionedPrefix.", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "SimplePrefix": { - "additionalProperties": false, - "description": "This format defaults the prefix to the given log file prefix for delivering server access log file.", - "type": "object" - } - }, - "required": [ - "SimplePrefix" - ] - }, - { - "additionalProperties": false, - "properties": { - "PartitionedPrefix": { - "$ref": "#/definitions/PartitionedPrefix" - } - }, - "required": [ - "PartitionedPrefix" - ] - } - ], - "type": "object" - }, - "Tiering": { - "additionalProperties": false, - "description": "The S3 Intelligent-Tiering storage class is designed to optimize storage costs by automatically moving data to the most cost-effective storage access tier, without additional operational overhead.", - "properties": { - "AccessTier": { - "description": "S3 Intelligent-Tiering access tier. See [Storage class for automatically optimizing frequently and infrequently accessed objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access) for a list of access tiers in the S3 Intelligent-Tiering storage class.", - "enum": [ - "ARCHIVE_ACCESS", - "DEEP_ARCHIVE_ACCESS" - ], - "type": "string" - }, - "Days": { - "description": "The number of consecutive days of no access after which an object will be eligible to be transitioned to the corresponding tier. The minimum number of days specified for Archive Access tier must be at least 90 days and Deep Archive Access tier must be at least 180 days. The maximum can be up to 2 years (730 days).", - "type": "integer" - } - }, - "required": [ - "AccessTier", - "Days" - ], - "type": "object" - }, - "TopicConfiguration": { - "additionalProperties": false, - "description": "A container for specifying the configuration for publication of messages to an Amazon Simple Notification Service (Amazon SNS) topic when Amazon S3 detects specified events.", - "properties": { - "Event": { - "description": "The Amazon S3 bucket event about which to send notifications. For more information, see [Supported Event Types](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) in the *Amazon S3 User Guide*.", - "type": "string" - }, - "Filter": { - "$ref": "#/definitions/NotificationFilter", - "description": "The filtering rules that determine for which objects to send notifications. For example, you can create a filter so that Amazon S3 sends notifications only when image files with a ``.jpg`` extension are added to the bucket." - }, - "Topic": { - "description": "The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3 publishes a message when it detects events of the specified type.", - "type": "string" - } - }, - "required": [ - "Event", - "Topic" - ], - "type": "object" - }, - "Transition": { - "additionalProperties": false, - "description": "Specifies when an object transitions to a specified storage class. For more information about Amazon S3 lifecycle configuration rules, see [Transitioning Objects Using Amazon S3 Lifecycle](https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html) in the *Amazon S3 User Guide*.", - "properties": { - "StorageClass": { - "description": "The storage class to which you want the object to transition.", - "enum": [ - "DEEP_ARCHIVE", - "GLACIER", - "Glacier", - "GLACIER_IR", - "INTELLIGENT_TIERING", - "ONEZONE_IA", - "STANDARD_IA" - ], - "type": "string" - }, - "TransitionDate": { - "$ref": "#/definitions/iso8601UTC", - "description": "Indicates when objects are transitioned to the specified storage class. The date value must be in ISO 8601 format. The time is always midnight UTC." - }, - "TransitionInDays": { - "description": "Indicates the number of days after creation when objects are transitioned to the specified storage class. The value must be a positive integer.", - "type": "integer" - } - }, - "required": [ - "StorageClass" - ], - "type": "object" - }, - "VersioningConfiguration": { - "additionalProperties": false, - "description": "Describes the versioning state of an Amazon S3 bucket. For more information, see [PUT Bucket versioning](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTVersioningStatus.html) in the *Amazon S3 API Reference*.\n When you enable versioning on a bucket for the first time, it might take a short amount of time for the change to be fully propagated. We recommend that you wait for 15 minutes after enabling versioning before issuing write operations (``PUT`` or ``DELETE``) on objects in the bucket.", - "properties": { - "Status": { - "default": "Suspended", - "description": "The versioning state of the bucket.", - "enum": [ - "Enabled", - "Suspended" - ], - "type": "string" - } - }, - "required": [ - "Status" - ], - "type": "object" - }, - "WebsiteConfiguration": { - "additionalProperties": false, - "description": "Specifies website configuration parameters for an Amazon S3 bucket.", - "properties": { - "ErrorDocument": { - "description": "The name of the error document for the website.", - "type": "string" - }, - "IndexDocument": { - "description": "The name of the index document for the website.", - "type": "string" - }, - "RedirectAllRequestsTo": { - "$ref": "#/definitions/RedirectAllRequestsTo", - "description": "The redirect behavior for every request to this bucket's website endpoint.\n If you specify this property, you can't specify any other property." - }, - "RoutingRules": { - "description": "Rules that define when a redirect is applied and the redirect behavior.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/RoutingRule" - }, - "type": "array" - } - }, - "type": "object" - }, - "iso8601UTC": { - "description": "The date value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ssZ)", - "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", - "type": "string" - } - }, - "description": "The ``AWS::S3::Bucket`` resource creates an Amazon S3 bucket in the same AWS Region where you create the AWS CloudFormation stack.\n To control how AWS CloudFormation handles the bucket when the stack is deleted, you can set a deletion policy for your bucket. You can choose to *retain* the bucket or to *delete* the bucket. For more information, see [DeletionPolicy Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html).\n You can only delete empty buckets. Deletion fails for buckets that have contents.", - "handlers": { - "create": { - "permissions": [ - "s3:CreateBucket", - "s3:PutBucketTagging", - "s3:PutAnalyticsConfiguration", - "s3:PutEncryptionConfiguration", - "s3:PutBucketCORS", - "s3:PutInventoryConfiguration", - "s3:PutLifecycleConfiguration", - "s3:PutMetricsConfiguration", - "s3:PutBucketNotification", - "s3:PutBucketReplication", - "s3:PutBucketWebsite", - "s3:PutAccelerateConfiguration", - "s3:PutBucketPublicAccessBlock", - "s3:PutReplicationConfiguration", - "s3:PutObjectAcl", - "s3:PutBucketObjectLockConfiguration", - "s3:GetBucketAcl", - "s3:ListBucket", - "iam:PassRole", - "s3:DeleteObject", - "s3:PutBucketLogging", - "s3:PutBucketVersioning", - "s3:PutObjectLockConfiguration", - "s3:PutBucketOwnershipControls", - "s3:PutIntelligentTieringConfiguration" - ] - }, - "delete": { - "permissions": [ - "s3:DeleteBucket", - "s3:ListBucket" - ] - }, - "list": { - "permissions": [ - "s3:ListAllMyBuckets" - ] - }, - "read": { - "permissions": [ - "s3:GetAccelerateConfiguration", - "s3:GetLifecycleConfiguration", - "s3:GetBucketPublicAccessBlock", - "s3:GetAnalyticsConfiguration", - "s3:GetBucketCORS", - "s3:GetEncryptionConfiguration", - "s3:GetInventoryConfiguration", - "s3:GetBucketLogging", - "s3:GetMetricsConfiguration", - "s3:GetBucketNotification", - "s3:GetBucketVersioning", - "s3:GetReplicationConfiguration", - "S3:GetBucketWebsite", - "s3:GetBucketPublicAccessBlock", - "s3:GetBucketObjectLockConfiguration", - "s3:GetBucketTagging", - "s3:GetBucketOwnershipControls", - "s3:GetIntelligentTieringConfiguration", - "s3:ListBucket" - ] - }, - "update": { - "permissions": [ - "s3:PutBucketAcl", - "s3:PutBucketTagging", - "s3:PutAnalyticsConfiguration", - "s3:PutEncryptionConfiguration", - "s3:PutBucketCORS", - "s3:PutInventoryConfiguration", - "s3:PutLifecycleConfiguration", - "s3:PutMetricsConfiguration", - "s3:PutBucketNotification", - "s3:PutBucketReplication", - "s3:PutBucketWebsite", - "s3:PutAccelerateConfiguration", - "s3:PutBucketPublicAccessBlock", - "s3:PutReplicationConfiguration", - "s3:PutBucketOwnershipControls", - "s3:PutIntelligentTieringConfiguration", - "s3:DeleteBucketWebsite", - "s3:PutBucketLogging", - "s3:PutBucketVersioning", - "s3:PutObjectLockConfiguration", - "s3:PutBucketObjectLockConfiguration", - "s3:DeleteBucketAnalyticsConfiguration", - "s3:DeleteBucketCors", - "s3:DeleteBucketMetricsConfiguration", - "s3:DeleteBucketEncryption", - "s3:DeleteBucketLifecycle", - "s3:DeleteBucketReplication", - "iam:PassRole", - "s3:ListBucket" - ] - } - }, - "primaryIdentifier": [ - "/properties/BucketName" - ], - "properties": { - "AccelerateConfiguration": { - "$ref": "#/definitions/AccelerateConfiguration", - "description": "Configures the transfer acceleration state for an Amazon S3 bucket. For more information, see [Amazon S3 Transfer Acceleration](https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html) in the *Amazon S3 User Guide*." - }, - "AccessControl": { - "description": "This is a legacy property, and it is not recommended for most use cases. A majority of modern use cases in Amazon S3 no longer require the use of ACLs, and we recommend that you keep ACLs disabled. For more information, see [Controlling object ownership](https://docs.aws.amazon.com//AmazonS3/latest/userguide/about-object-ownership.html) in the *Amazon S3 User Guide*.\n A canned access control list (ACL) that grants predefined permissions to the bucket. For more information about canned ACLs, see [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) in the *Amazon S3 User Guide*.\n S3 buckets are created with ACLs disabled by default. Therefore, unless you explicitly set the [AWS::S3::OwnershipControls](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-ownershipcontrols.html) property to enable ACLs, your resource will fail to deploy with any value other than Private. Use cases requiring ACLs are uncommon.\n The majority of access control configurations can be successfully and more easily achieved with bucket policies. For more information, see [AWS::S3::BucketPolicy](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html). For examples of common policy configurations, including S3 Server Access Logs buckets and more, see [Bucket policy examples](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html) in the *Amazon S3 User Guide*.", - "enum": [ - "AuthenticatedRead", - "AwsExecRead", - "BucketOwnerFullControl", - "BucketOwnerRead", - "LogDeliveryWrite", - "Private", - "PublicRead", - "PublicReadWrite" - ], - "type": "string" - }, - "AnalyticsConfigurations": { - "description": "Specifies the configuration and any analyses for the analytics filter of an Amazon S3 bucket.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/AnalyticsConfiguration" - }, - "type": "array", - "uniqueItems": true - }, - "Arn": { - "$ref": "#/definitions/Arn", - "description": "", - "examples": [ - "arn:aws:s3:::mybucket" - ] - }, - "BucketEncryption": { - "$ref": "#/definitions/BucketEncryption", - "description": "Specifies default encryption for a bucket using server-side encryption with Amazon S3-managed keys (SSE-S3), AWS KMS-managed keys (SSE-KMS), or dual-layer server-side encryption with KMS-managed keys (DSSE-KMS). For information about the Amazon S3 default encryption feature, see [Amazon S3 Default Encryption for S3 Buckets](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) in the *Amazon S3 User Guide*." - }, - "BucketName": { - "description": "A name for the bucket. If you don't specify a name, AWS CloudFormation generates a unique ID and uses that ID for the bucket name. The bucket name must contain only lowercase letters, numbers, periods (.), and dashes (-) and must follow [Amazon S3 bucket restrictions and limitations](https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html). For more information, see [Rules for naming Amazon S3 buckets](https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html#bucketnamingrules) in the *Amazon S3 User Guide*. \n If you specify a name, you can't perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you need to replace the resource, specify a new name.", - "type": "string" - }, - "CorsConfiguration": { - "$ref": "#/definitions/CorsConfiguration", - "description": "Describes the cross-origin access configuration for objects in an Amazon S3 bucket. For more information, see [Enabling Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the *Amazon S3 User Guide*." - }, - "DomainName": { - "description": "", - "examples": [ - "mystack-mybucket-kdwwxmddtr2g.s3.amazonaws.com" - ], - "type": "string" - }, - "DualStackDomainName": { - "description": "", - "examples": [ - "mystack-mybucket-kdwwxmddtr2g.s3.dualstack.us-east-2.amazonaws.com" - ], - "type": "string" - }, - "IntelligentTieringConfigurations": { - "description": "Defines how Amazon S3 handles Intelligent-Tiering storage.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/IntelligentTieringConfiguration" - }, - "type": "array", - "uniqueItems": true - }, - "InventoryConfigurations": { - "description": "Specifies the inventory configuration for an Amazon S3 bucket. For more information, see [GET Bucket inventory](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html) in the *Amazon S3 API Reference*.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/InventoryConfiguration" - }, - "type": "array", - "uniqueItems": true - }, - "LifecycleConfiguration": { - "$ref": "#/definitions/LifecycleConfiguration", - "description": "Specifies the lifecycle configuration for objects in an Amazon S3 bucket. For more information, see [Object Lifecycle Management](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) in the *Amazon S3 User Guide*." - }, - "LoggingConfiguration": { - "$ref": "#/definitions/LoggingConfiguration", - "description": "Settings that define where logs are stored." - }, - "MetricsConfigurations": { - "description": "Specifies a metrics configuration for the CloudWatch request metrics (specified by the metrics configuration ID) from an Amazon S3 bucket. If you're updating an existing metrics configuration, note that this is a full replacement of the existing metrics configuration. If you don't include the elements you want to keep, they are erased. For more information, see [PutBucketMetricsConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTMetricConfiguration.html).", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/MetricsConfiguration" - }, - "type": "array", - "uniqueItems": true - }, - "NotificationConfiguration": { - "$ref": "#/definitions/NotificationConfiguration", - "description": "Configuration that defines how Amazon S3 handles bucket notifications." - }, - "ObjectLockConfiguration": { - "$ref": "#/definitions/ObjectLockConfiguration", - "description": "This operation is not supported by directory buckets.\n Places an Object Lock configuration on the specified bucket. The rule specified in the Object Lock configuration will be applied by default to every new object placed in the specified bucket. For more information, see [Locking Objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). \n + The ``DefaultRetention`` settings require both a mode and a period.\n + The ``DefaultRetention`` period can be either ``Days`` or ``Years`` but you must select one. You cannot specify ``Days`` and ``Years`` at the same time.\n + You can enable Object Lock for new or existing buckets. For more information, see [Configuring Object Lock](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-configure.html)." - }, - "ObjectLockEnabled": { - "description": "Indicates whether this bucket has an Object Lock configuration enabled. Enable ``ObjectLockEnabled`` when you apply ``ObjectLockConfiguration`` to a bucket.", - "type": "boolean" - }, - "OwnershipControls": { - "$ref": "#/definitions/OwnershipControls", - "description": "Configuration that defines how Amazon S3 handles Object Ownership rules." - }, - "PublicAccessBlockConfiguration": { - "$ref": "#/definitions/PublicAccessBlockConfiguration", - "description": "Configuration that defines how Amazon S3 handles public access." - }, - "RegionalDomainName": { - "description": "", - "examples": [ - "mystack-mybucket-kdwwxmddtr2g.s3.us-east-2.amazonaws.com" - ], - "type": "string" - }, - "ReplicationConfiguration": { - "$ref": "#/definitions/ReplicationConfiguration", - "description": "Configuration for replicating objects in an S3 bucket. To enable replication, you must also enable versioning by using the ``VersioningConfiguration`` property.\n Amazon S3 can store replicated objects in a single destination bucket or multiple destination buckets. The destination bucket or buckets must already exist." - }, - "Tags": { - "description": "An arbitrary set of tags (key-value pairs) for this S3 bucket.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "VersioningConfiguration": { - "$ref": "#/definitions/VersioningConfiguration", - "description": "Enables multiple versions of all objects in this bucket. You might enable versioning to prevent objects from being deleted or overwritten by mistake or to archive objects so that you can retrieve previous versions of them.\n When you enable versioning on a bucket for the first time, it might take a short amount of time for the change to be fully propagated. We recommend that you wait for 15 minutes after enabling versioning before issuing write operations (``PUT`` or ``DELETE``) on objects in the bucket." - }, - "WebsiteConfiguration": { - "$ref": "#/definitions/WebsiteConfiguration", - "description": "Information used to configure the bucket as a static website. For more information, see [Hosting Websites on Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html)." - }, - "WebsiteURL": { - "description": "", - "examples": [ - "Example (IPv4): http://mystack-mybucket-kdwwxmddtr2g.s3-website-us-east-2.amazonaws.com/", - "Example (IPv6): http://mystack-mybucket-kdwwxmddtr2g.s3.dualstack.us-east-2.amazonaws.com/" - ], - "format": "uri", - "type": "string" - } - }, - "propertyTransform": { - "/properties/NotificationConfiguration/LambdaConfigurations/*/Filter/S3Key/Rules/*/Name": "$replace(Name, \"prefix\", \"Prefix\") $OR $replace(Name, \"suffix\", \"Suffix\")", - "/properties/NotificationConfiguration/QueueConfigurations/*/Filter/S3Key/Rules/*/Name": "$replace(Name, \"prefix\", \"Prefix\") $OR $replace(Name, \"suffix\", \"Suffix\")", - "/properties/NotificationConfiguration/TopicConfigurations/*/Filter/S3Key/Rules/*/Name": "$replace(Name, \"prefix\", \"Prefix\") $OR $replace(Name, \"suffix\", \"Suffix\")" - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/DomainName", - "/properties/DualStackDomainName", - "/properties/RegionalDomainName", - "/properties/WebsiteURL" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::S3::Bucket", - "writeOnlyProperties": [ - "/properties/AccessControl", - "/properties/LifecycleConfiguration/Rules/*/NoncurrentVersionExpirationInDays", - "/properties/LifecycleConfiguration/Rules/*/NoncurrentVersionTransition", - "/properties/LifecycleConfiguration/Rules/*/Transition", - "/properties/ReplicationConfiguration/Rules/*/Prefix", - "/properties/LifecycleConfiguration/Rules/*/ExpiredObjectDeleteMarker" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BucketName" + ], + "definitions": { + "AbortIncompleteMultipartUpload": { + "additionalProperties": false, + "description": "Specifies the days since the initiation of an incomplete multipart upload that Amazon S3 will wait before permanently removing all parts of the upload. For more information, see [Stopping Incomplete Multipart Uploads Using a Bucket Lifecycle Policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config) in the *Amazon S3 User Guide*.", + "properties": { + "DaysAfterInitiation": { + "description": "Specifies the number of days after which Amazon S3 stops an incomplete multipart upload.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "DaysAfterInitiation" + ], + "type": "object" + }, + "AccelerateConfiguration": { + "additionalProperties": false, + "description": "Configures the transfer acceleration state for an Amazon S3 bucket. For more information, see [Amazon S3 Transfer Acceleration](https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html) in the *Amazon S3 User Guide*.", + "properties": { + "AccelerationStatus": { + "description": "Specifies the transfer acceleration status of the bucket.", + "enum": [ + "Enabled", + "Suspended" + ], + "type": "string" + } + }, + "required": [ + "AccelerationStatus" + ], + "type": "object" + }, + "AccessControlTranslation": { + "additionalProperties": false, + "description": "Specify this only in a cross-account scenario (where source and destination bucket owners are not the same), and you want to change replica ownership to the AWS-account that owns the destination bucket. If this is not specified in the replication configuration, the replicas are owned by same AWS-account that owns the source object.", + "properties": { + "Owner": { + "const": "Destination", + "description": "Specifies the replica ownership. For default and valid values, see [PUT bucket replication](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html) in the *Amazon S3 API Reference*.", + "type": "string" + } + }, + "required": [ + "Owner" + ], + "type": "object" + }, + "AnalyticsConfiguration": { + "additionalProperties": false, + "description": "Specifies the configuration and any analyses for the analytics filter of an Amazon S3 bucket.", + "properties": { + "Id": { + "description": "The ID that identifies the analytics configuration.", + "type": "string" + }, + "Prefix": { + "description": "The prefix that an object must have to be included in the analytics results.", + "type": "string" + }, + "StorageClassAnalysis": { + "$ref": "#/definitions/StorageClassAnalysis", + "description": "Contains data related to access patterns to be collected and made available to analyze the tradeoffs between different storage classes." + }, + "TagFilters": { + "description": "The tags to use when evaluating an analytics filter.\n The analytics only includes objects that meet the filter's criteria. If no filter is specified, all of the contents of the bucket are included in the analysis.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TagFilter" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "StorageClassAnalysis", + "Id" + ], + "type": "object" + }, + "Arn": { + "description": "the Amazon Resource Name (ARN) of the specified bucket.", + "type": "string" + }, + "BucketEncryption": { + "additionalProperties": false, + "description": "Specifies default encryption for a bucket using server-side encryption with Amazon S3-managed keys (SSE-S3), AWS KMS-managed keys (SSE-KMS), or dual-layer server-side encryption with KMS-managed keys (DSSE-KMS). For information about the Amazon S3 default encryption feature, see [Amazon S3 Default Encryption for S3 Buckets](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) in the *Amazon S3 User Guide*.", + "properties": { + "ServerSideEncryptionConfiguration": { + "description": "Specifies the default server-side-encryption configuration.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ServerSideEncryptionRule" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "ServerSideEncryptionConfiguration" + ], + "type": "object" + }, + "CorsConfiguration": { + "additionalProperties": false, + "description": "Describes the cross-origin access configuration for objects in an Amazon S3 bucket. For more information, see [Enabling Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the *Amazon S3 User Guide*.", + "properties": { + "CorsRules": { + "description": "A set of origins and methods (cross-origin access that you want to allow). You can add up to 100 rules to the configuration.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/CorsRule", + "maxLength": 100 + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "CorsRules" + ], + "type": "object" + }, + "CorsRule": { + "additionalProperties": false, + "description": "Specifies a cross-origin access rule for an Amazon S3 bucket.", + "properties": { + "AllowedHeaders": { + "description": "Headers that are specified in the ``Access-Control-Request-Headers`` header. These headers are allowed in a preflight OPTIONS request. In response to any preflight OPTIONS request, Amazon S3 returns any requested headers that are allowed.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "AllowedMethods": { + "description": "An HTTP method that you allow the origin to run.\n *Allowed values*: ``GET`` | ``PUT`` | ``HEAD`` | ``POST`` | ``DELETE``", + "insertionOrder": true, + "items": { + "enum": [ + "GET", + "PUT", + "HEAD", + "POST", + "DELETE" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "AllowedOrigins": { + "description": "One or more origins you want customers to be able to access the bucket from.", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "ExposedHeaders": { + "description": "One or more headers in the response that you want customers to be able to access from their applications (for example, from a JavaScript ``XMLHttpRequest`` object).", + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Id": { + "description": "A unique identifier for this rule. The value must be no more than 255 characters.", + "maxLength": 255, + "type": "string" + }, + "MaxAge": { + "description": "The time in seconds that your browser is to cache the preflight response for the specified resource.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AllowedMethods", + "AllowedOrigins" + ], + "type": "object" + }, + "DataExport": { + "additionalProperties": false, + "description": "Specifies how data related to the storage class analysis for an Amazon S3 bucket should be exported.", + "properties": { + "Destination": { + "$ref": "#/definitions/Destination", + "description": "The place to store the data for an analysis." + }, + "OutputSchemaVersion": { + "const": "V_1", + "description": "The version of the output schema to use when exporting data. Must be ``V_1``.", + "type": "string" + } + }, + "required": [ + "Destination", + "OutputSchemaVersion" + ], + "type": "object" + }, + "DefaultRetention": { + "additionalProperties": false, + "description": "The container element for optionally specifying the default Object Lock retention settings for new objects placed in the specified bucket.\n + The ``DefaultRetention`` settings require both a mode and a period.\n + The ``DefaultRetention`` period can be either ``Days`` or ``Years`` but you must select one. You cannot specify ``Days`` and ``Years`` at the same time.", + "properties": { + "Days": { + "description": "The number of days that you want to specify for the default retention period. If Object Lock is turned on, you must specify ``Mode`` and specify either ``Days`` or ``Years``.", + "type": "integer" + }, + "Mode": { + "description": "The default Object Lock retention mode you want to apply to new objects placed in the specified bucket. If Object Lock is turned on, you must specify ``Mode`` and specify either ``Days`` or ``Years``.", + "enum": [ + "COMPLIANCE", + "GOVERNANCE" + ], + "type": "string" + }, + "Years": { + "description": "The number of years that you want to specify for the default retention period. If Object Lock is turned on, you must specify ``Mode`` and specify either ``Days`` or ``Years``.", + "type": "integer" + } + }, + "type": "object" + }, + "DeleteMarkerReplication": { + "additionalProperties": false, + "description": "Specifies whether Amazon S3 replicates delete markers. If you specify a ``Filter`` in your replication configuration, you must also include a ``DeleteMarkerReplication`` element. If your ``Filter`` includes a ``Tag`` element, the ``DeleteMarkerReplication`` ``Status`` must be set to Disabled, because Amazon S3 does not support replicating delete markers for tag-based rules. For an example configuration, see [Basic Rule Configuration](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config). \n For more information about delete marker replication, see [Basic Rule Configuration](https://docs.aws.amazon.com/AmazonS3/latest/dev/delete-marker-replication.html). \n If you are using an earlier version of the replication configuration, Amazon S3 handles replication of delete markers differently. For more information, see [Backward Compatibility](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).", + "properties": { + "Status": { + "description": "Indicates whether to replicate delete markers. Disabled by default.", + "enum": [ + "Disabled", + "Enabled" + ], + "type": "string" + } + }, + "type": "object" + }, + "Destination": { + "additionalProperties": false, + "description": "Specifies information about where to publish analysis or configuration results for an Amazon S3 bucket.", + "properties": { + "BucketAccountId": { + "description": "The account ID that owns the destination S3 bucket. If no account ID is provided, the owner is not validated before exporting data.\n Although this value is optional, we strongly recommend that you set it to help prevent problems if the destination bucket ownership changes.", + "type": "string" + }, + "BucketArn": { + "description": "The Amazon Resource Name (ARN) of the bucket to which data is exported.", + "type": "string" + }, + "Format": { + "description": "Specifies the file format used when exporting data to Amazon S3.\n *Allowed values*: ``CSV`` | ``ORC`` | ``Parquet``", + "enum": [ + "CSV", + "ORC", + "Parquet" + ], + "type": "string" + }, + "Prefix": { + "description": "The prefix to use when exporting data. The prefix is prepended to all results.", + "type": "string" + } + }, + "required": [ + "BucketArn", + "Format" + ], + "type": "object" + }, + "EncryptionConfiguration": { + "additionalProperties": false, + "description": "Specifies encryption-related information for an Amazon S3 bucket that is a destination for replicated objects.\n If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester\u2019s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.", + "properties": { + "ReplicaKmsKeyID": { + "description": "Specifies the ID (Key ARN or Alias ARN) of the customer managed AWS KMS key stored in AWS Key Management Service (KMS) for the destination bucket. Amazon S3 uses this key to encrypt replica objects. Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*.", + "type": "string" + } + }, + "required": [ + "ReplicaKmsKeyID" + ], + "type": "object" + }, + "EventBridgeConfiguration": { + "additionalProperties": false, + "description": "Amazon S3 can send events to Amazon EventBridge whenever certain events happen in your bucket, see [Using EventBridge](https://docs.aws.amazon.com/AmazonS3/latest/userguide/EventBridge.html) in the *Amazon S3 User Guide*.\n Unlike other destinations, delivery of events to EventBridge can be either enabled or disabled for a bucket. If enabled, all events will be sent to EventBridge and you can use EventBridge rules to route events to additional targets. For more information, see [What Is Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) in the *Amazon EventBridge User Guide*", + "properties": { + "EventBridgeEnabled": { + "default": "true", + "description": "Enables delivery of events to Amazon EventBridge.", + "type": "boolean" + } + }, + "required": [ + "EventBridgeEnabled" + ], + "type": "object" + }, + "FilterRule": { + "additionalProperties": false, + "description": "Specifies the Amazon S3 object key name to filter on. An object key name is the name assigned to an object in your Amazon S3 bucket. You specify whether to filter on the suffix or prefix of the object key name. A prefix is a specific string of characters at the beginning of an object key name, which you can use to organize objects. For example, you can start the key names of related objects with a prefix, such as ``2023-`` or ``engineering/``. Then, you can use ``FilterRule`` to find objects in a bucket with key names that have the same prefix. A suffix is similar to a prefix, but it is at the end of the object key name instead of at the beginning.", + "properties": { + "Name": { + "description": "The object key name prefix or suffix identifying one or more objects to which the filtering rule applies. The maximum length is 1,024 characters. Overlapping prefixes and suffixes are not supported. For more information, see [Configuring Event Notifications](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) in the *Amazon S3 User Guide*.", + "maxLength": 1024, + "type": "string" + }, + "Value": { + "description": "The value that the filter searches for in object key names.", + "type": "string" + } + }, + "required": [ + "Value", + "Name" + ], + "type": "object" + }, + "IntelligentTieringConfiguration": { + "additionalProperties": false, + "description": "Specifies the S3 Intelligent-Tiering configuration for an Amazon S3 bucket.\n For information about the S3 Intelligent-Tiering storage class, see [Storage class for automatically optimizing frequently and infrequently accessed objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).", + "properties": { + "Id": { + "description": "The ID used to identify the S3 Intelligent-Tiering configuration.", + "type": "string" + }, + "Prefix": { + "description": "An object key name prefix that identifies the subset of objects to which the rule applies.", + "type": "string" + }, + "Status": { + "description": "Specifies the status of the configuration.", + "enum": [ + "Disabled", + "Enabled" + ], + "type": "string" + }, + "TagFilters": { + "description": "A container for a key-value pair.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TagFilter" + }, + "type": "array", + "uniqueItems": true + }, + "Tierings": { + "description": "Specifies a list of S3 Intelligent-Tiering storage class tiers in the configuration. At least one tier must be defined in the list. At most, you can specify two tiers in the list, one for each available AccessTier: ``ARCHIVE_ACCESS`` and ``DEEP_ARCHIVE_ACCESS``.\n You only need Intelligent Tiering Configuration enabled on a bucket if you want to automatically move objects stored in the Intelligent-Tiering storage class to Archive Access or Deep Archive Access tiers.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Tiering" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Id", + "Status", + "Tierings" + ], + "type": "object" + }, + "InventoryConfiguration": { + "additionalProperties": false, + "description": "Specifies the inventory configuration for an Amazon S3 bucket. For more information, see [GET Bucket inventory](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html) in the *Amazon S3 API Reference*.", + "properties": { + "Destination": { + "$ref": "#/definitions/Destination", + "description": "Contains information about where to publish the inventory results." + }, + "Enabled": { + "description": "Specifies whether the inventory is enabled or disabled. If set to ``True``, an inventory list is generated. If set to ``False``, no inventory list is generated.", + "type": "boolean" + }, + "Id": { + "description": "The ID used to identify the inventory configuration.", + "type": "string" + }, + "IncludedObjectVersions": { + "description": "Object versions to include in the inventory list. If set to ``All``, the list includes all the object versions, which adds the version-related fields ``VersionId``, ``IsLatest``, and ``DeleteMarker`` to the list. If set to ``Current``, the list does not contain these version-related fields.", + "enum": [ + "All", + "Current" + ], + "type": "string" + }, + "OptionalFields": { + "description": "Contains the optional fields that are included in the inventory results.", + "insertionOrder": true, + "items": { + "enum": [ + "Size", + "LastModifiedDate", + "StorageClass", + "ETag", + "IsMultipartUploaded", + "ReplicationStatus", + "EncryptionStatus", + "ObjectLockRetainUntilDate", + "ObjectLockMode", + "ObjectLockLegalHoldStatus", + "IntelligentTieringAccessTier", + "BucketKeyStatus", + "ChecksumAlgorithm", + "ObjectAccessControlList", + "ObjectOwner" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Prefix": { + "description": "Specifies the inventory filter prefix.", + "type": "string" + }, + "ScheduleFrequency": { + "description": "Specifies the schedule for generating inventory results.", + "enum": [ + "Daily", + "Weekly" + ], + "type": "string" + } + }, + "required": [ + "Destination", + "Enabled", + "Id", + "IncludedObjectVersions", + "ScheduleFrequency" + ], + "type": "object" + }, + "LambdaConfiguration": { + "additionalProperties": false, + "description": "Describes the LAMlong functions to invoke and the events for which to invoke them.", + "properties": { + "Event": { + "description": "The Amazon S3 bucket event for which to invoke the LAMlong function. For more information, see [Supported Event Types](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) in the *Amazon S3 User Guide*.", + "type": "string" + }, + "Filter": { + "$ref": "#/definitions/NotificationFilter", + "description": "The filtering rules that determine which objects invoke the AWS Lambda function. For example, you can create a filter so that only image files with a ``.jpg`` extension invoke the function when they are added to the Amazon S3 bucket." + }, + "Function": { + "description": "The Amazon Resource Name (ARN) of the LAMlong function that Amazon S3 invokes when the specified event type occurs.", + "type": "string" + } + }, + "required": [ + "Function", + "Event" + ], + "type": "object" + }, + "LifecycleConfiguration": { + "additionalProperties": false, + "description": "Specifies the lifecycle configuration for objects in an Amazon S3 bucket. For more information, see [Object Lifecycle Management](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) in the *Amazon S3 User Guide*.", + "properties": { + "Rules": { + "description": "A lifecycle rule for individual objects in an Amazon S3 bucket.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Rule" + }, + "type": "array", + "uniqueItems": true + }, + "TransitionDefaultMinimumObjectSize": { + "description": "Indicates which default minimum object size behavior is applied to the lifecycle configuration.\n This parameter applies to general purpose buckets only. It isn't supported for directory bucket lifecycle configurations.\n + ``all_storage_classes_128K`` - Objects smaller than 128 KB will not transition to any storage class by default.\n + ``varies_by_storage_class`` - Objects smaller than 128 KB will transition to Glacier Flexible Retrieval or Glacier Deep Archive storage classes. By default, all other storage classes will prevent transitions smaller than 128 KB. \n \n To customize the minimum object size for any transition you can add a filter that specifies a custom ``ObjectSizeGreaterThan`` or ``ObjectSizeLessThan`` in the body of your transition rule. Custom filters always take precedence over the default transition behavior.", + "enum": [ + "varies_by_storage_class", + "all_storage_classes_128K" + ], + "type": "string" + } + }, + "required": [ + "Rules" + ], + "type": "object" + }, + "LoggingConfiguration": { + "additionalProperties": false, + "description": "Describes where logs are stored and the prefix that Amazon S3 assigns to all log object keys for a bucket. For examples and more information, see [PUT Bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html) in the *Amazon S3 API Reference*.\n To successfully complete the ``AWS::S3::Bucket LoggingConfiguration`` request, you must have ``s3:PutObject`` and ``s3:PutObjectAcl`` in your IAM permissions.", + "properties": { + "DestinationBucketName": { + "description": "The name of the bucket where Amazon S3 should store server access log files. You can store log files in any bucket that you own. By default, logs are stored in the bucket where the ``LoggingConfiguration`` property is defined.", + "type": "string" + }, + "LogFilePrefix": { + "description": "A prefix for all log object keys. If you store log files from multiple Amazon S3 buckets in a single bucket, you can use a prefix to distinguish which log files came from which bucket.", + "type": "string" + }, + "TargetObjectKeyFormat": { + "$ref": "#/definitions/TargetObjectKeyFormat", + "description": "Amazon S3 key format for log objects. Only one format, either PartitionedPrefix or SimplePrefix, is allowed." + } + }, + "type": "object" + }, + "MetadataTableConfiguration": { + "additionalProperties": false, + "description": "The metadata table configuration of an S3 general purpose bucket. For more information, see [Accelerating data discovery with S3 Metadata](https://docs.aws.amazon.com/AmazonS3/latest/userguide/metadata-tables-overview.html) and [Setting up permissions for configuring metadata tables](https://docs.aws.amazon.com/AmazonS3/latest/userguide/metadata-tables-permissions.html).", + "properties": { + "S3TablesDestination": { + "$ref": "#/definitions/S3TablesDestination", + "description": "The destination information for the metadata table configuration. The destination table bucket must be in the same Region and AWS-account as the general purpose bucket. The specified metadata table name must be unique within the ``aws_s3_metadata`` namespace in the destination table bucket." + } + }, + "required": [ + "S3TablesDestination" + ], + "type": "object" + }, + "Metrics": { + "additionalProperties": false, + "description": "A container specifying replication metrics-related settings enabling replication metrics and events.", + "properties": { + "EventThreshold": { + "$ref": "#/definitions/ReplicationTimeValue", + "description": "A container specifying the time threshold for emitting the ``s3:Replication:OperationMissedThreshold`` event." + }, + "Status": { + "description": "Specifies whether the replication metrics are enabled.", + "enum": [ + "Disabled", + "Enabled" + ], + "type": "string" + } + }, + "required": [ + "Status" + ], + "type": "object" + }, + "MetricsConfiguration": { + "additionalProperties": false, + "description": "Specifies a metrics configuration for the CloudWatch request metrics (specified by the metrics configuration ID) from an Amazon S3 bucket. If you're updating an existing metrics configuration, note that this is a full replacement of the existing metrics configuration. If you don't include the elements you want to keep, they are erased. For examples, see [AWS::S3::Bucket](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#aws-properties-s3-bucket--examples). For more information, see [PUT Bucket metrics](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTMetricConfiguration.html) in the *Amazon S3 API Reference*.", + "properties": { + "AccessPointArn": { + "description": "The access point that was used while performing operations on the object. The metrics configuration only includes objects that meet the filter's criteria.", + "type": "string" + }, + "Id": { + "description": "The ID used to identify the metrics configuration. This can be any value you choose that helps you identify your metrics configuration.", + "type": "string" + }, + "Prefix": { + "description": "The prefix that an object must have to be included in the metrics results.", + "type": "string" + }, + "TagFilters": { + "description": "Specifies a list of tag filters to use as a metrics configuration filter. The metrics configuration includes only objects that meet the filter's criteria.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TagFilter" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Id" + ], + "type": "object" + }, + "NoncurrentVersionExpiration": { + "additionalProperties": false, + "description": "Specifies when noncurrent object versions expire. Upon expiration, S3 permanently deletes the noncurrent object versions. You set this lifecycle configuration action on a bucket that has versioning enabled (or suspended) to request that S3 delete noncurrent object versions at a specific period in the object's lifetime. For more information about setting a lifecycle rule configuration, see [AWS::S3::Bucket Rule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html).", + "properties": { + "NewerNoncurrentVersions": { + "description": "Specifies how many noncurrent versions S3 will retain. If there are this many more recent noncurrent versions, S3 will take the associated action. For more information about noncurrent versions, see [Lifecycle configuration elements](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html) in the *Amazon S3 User Guide*.", + "type": "integer" + }, + "NoncurrentDays": { + "description": "Specifies the number of days an object is noncurrent before S3 can perform the associated action. For information about the noncurrent days calculations, see [How Amazon S3 Calculates When an Object Became Noncurrent](https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations) in the *Amazon S3 User Guide*.", + "type": "integer" + } + }, + "required": [ + "NoncurrentDays" + ], + "type": "object" + }, + "NoncurrentVersionTransition": { + "additionalProperties": false, + "description": "Container for the transition rule that describes when noncurrent objects transition to the ``STANDARD_IA``, ``ONEZONE_IA``, ``INTELLIGENT_TIERING``, ``GLACIER_IR``, ``GLACIER``, or ``DEEP_ARCHIVE`` storage class. If your bucket is versioning-enabled (or versioning is suspended), you can set this action to request that Amazon S3 transition noncurrent object versions to the ``STANDARD_IA``, ``ONEZONE_IA``, ``INTELLIGENT_TIERING``, ``GLACIER_IR``, ``GLACIER``, or ``DEEP_ARCHIVE`` storage class at a specific period in the object's lifetime. If you specify this property, don't specify the ``NoncurrentVersionTransitions`` property.", + "properties": { + "NewerNoncurrentVersions": { + "description": "Specifies how many noncurrent versions S3 will retain. If there are this many more recent noncurrent versions, S3 will take the associated action. For more information about noncurrent versions, see [Lifecycle configuration elements](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html) in the *Amazon S3 User Guide*.", + "type": "integer" + }, + "StorageClass": { + "description": "The class of storage used to store the object.", + "enum": [ + "DEEP_ARCHIVE", + "GLACIER", + "Glacier", + "GLACIER_IR", + "INTELLIGENT_TIERING", + "ONEZONE_IA", + "STANDARD_IA" + ], + "type": "string" + }, + "TransitionInDays": { + "description": "Specifies the number of days an object is noncurrent before Amazon S3 can perform the associated action. For information about the noncurrent days calculations, see [How Amazon S3 Calculates How Long an Object Has Been Noncurrent](https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations) in the *Amazon S3 User Guide*.", + "type": "integer" + } + }, + "required": [ + "StorageClass", + "TransitionInDays" + ], + "type": "object" + }, + "NotificationConfiguration": { + "additionalProperties": false, + "description": "Describes the notification configuration for an Amazon S3 bucket.\n If you create the target resource and related permissions in the same template, you might have a circular dependency.\n For example, you might use the ``AWS::Lambda::Permission`` resource to grant the bucket permission to invoke an AWS Lambda function. However, AWS CloudFormation can't create the bucket until the bucket has permission to invoke the function (AWS CloudFormation checks whether the bucket can invoke the function). If you're using Refs to pass the bucket name, this leads to a circular dependency.\n To avoid this dependency, you can create all resources without specifying the notification configuration. Then, update the stack with a notification configuration.\n For more information on permissions, see [AWS::Lambda::Permission](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html) and [Granting Permissions to Publish Event Notification Messages to a Destination](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html#grant-destinations-permissions-to-s3).", + "properties": { + "EventBridgeConfiguration": { + "$ref": "#/definitions/EventBridgeConfiguration", + "description": "Enables delivery of events to Amazon EventBridge." + }, + "LambdaConfigurations": { + "description": "Describes the LAMlong functions to invoke and the events for which to invoke them.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/LambdaConfiguration" + }, + "type": "array", + "uniqueItems": true + }, + "QueueConfigurations": { + "description": "The Amazon Simple Queue Service queues to publish messages to and the events for which to publish messages.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/QueueConfiguration" + }, + "type": "array", + "uniqueItems": true + }, + "TopicConfigurations": { + "description": "The topic to which notifications are sent and the events for which notifications are generated.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TopicConfiguration" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "NotificationFilter": { + "additionalProperties": false, + "description": "Specifies object key name filtering rules. For information about key name filtering, see [Configuring event notifications using object key name filtering](https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-filtering.html) in the *Amazon S3 User Guide*.", + "properties": { + "S3Key": { + "$ref": "#/definitions/S3KeyFilter", + "description": "A container for object key name prefix and suffix filtering rules." + } + }, + "required": [ + "S3Key" + ], + "type": "object" + }, + "ObjectLockConfiguration": { + "additionalProperties": false, + "description": "Places an Object Lock configuration on the specified bucket. The rule specified in the Object Lock configuration will be applied by default to every new object placed in the specified bucket. For more information, see [Locking Objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).", + "properties": { + "ObjectLockEnabled": { + "const": "Enabled", + "description": "Indicates whether this bucket has an Object Lock configuration enabled. Enable ``ObjectLockEnabled`` when you apply ``ObjectLockConfiguration`` to a bucket.", + "type": "string" + }, + "Rule": { + "$ref": "#/definitions/ObjectLockRule", + "description": "Specifies the Object Lock rule for the specified object. Enable this rule when you apply ``ObjectLockConfiguration`` to a bucket. If Object Lock is turned on, bucket settings require both ``Mode`` and a period of either ``Days`` or ``Years``. You cannot specify ``Days`` and ``Years`` at the same time. For more information, see [ObjectLockRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-objectlockrule.html) and [DefaultRetention](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-defaultretention.html)." + } + }, + "type": "object" + }, + "ObjectLockRule": { + "additionalProperties": false, + "description": "Specifies the Object Lock rule for the specified object. Enable the this rule when you apply ``ObjectLockConfiguration`` to a bucket.", + "properties": { + "DefaultRetention": { + "$ref": "#/definitions/DefaultRetention", + "description": "The default Object Lock retention mode and period that you want to apply to new objects placed in the specified bucket. If Object Lock is turned on, bucket settings require both ``Mode`` and a period of either ``Days`` or ``Years``. You cannot specify ``Days`` and ``Years`` at the same time. For more information about allowable values for mode and period, see [DefaultRetention](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-defaultretention.html)." + } + }, + "type": "object" + }, + "OwnershipControls": { + "additionalProperties": false, + "description": "Specifies the container element for Object Ownership rules.\n S3 Object Ownership is an Amazon S3 bucket-level setting that you can use to disable access control lists (ACLs) and take ownership of every object in your bucket, simplifying access management for data stored in Amazon S3. For more information, see [Controlling ownership of objects and disabling ACLs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) in the *Amazon S3 User Guide*.", + "properties": { + "Rules": { + "description": "Specifies the container element for Object Ownership rules.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/OwnershipControlsRule" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Rules" + ], + "type": "object" + }, + "OwnershipControlsRule": { + "additionalProperties": false, + "description": "Specifies an Object Ownership rule.\n S3 Object Ownership is an Amazon S3 bucket-level setting that you can use to disable access control lists (ACLs) and take ownership of every object in your bucket, simplifying access management for data stored in Amazon S3. For more information, see [Controlling ownership of objects and disabling ACLs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) in the *Amazon S3 User Guide*.", + "properties": { + "ObjectOwnership": { + "description": "Specifies an object ownership rule.", + "enum": [ + "ObjectWriter", + "BucketOwnerPreferred", + "BucketOwnerEnforced" + ], + "type": "string" + } + }, + "type": "object" + }, + "PartitionedPrefix": { + "additionalProperties": false, + "description": "Amazon S3 keys for log objects are partitioned in the following format:\n ``[DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]`` \n PartitionedPrefix defaults to EventTime delivery when server access logs are delivered.", + "properties": { + "PartitionDateSource": { + "description": "Specifies the partition date source for the partitioned prefix. ``PartitionDateSource`` can be ``EventTime`` or ``DeliveryTime``.\n For ``DeliveryTime``, the time in the log file names corresponds to the delivery time for the log files. \n For ``EventTime``, The logs delivered are for a specific day only. The year, month, and day correspond to the day on which the event occurred, and the hour, minutes and seconds are set to 00 in the key.", + "enum": [ + "EventTime", + "DeliveryTime" + ], + "type": "string" + } + }, + "type": "object" + }, + "PublicAccessBlockConfiguration": { + "additionalProperties": false, + "description": "The PublicAccessBlock configuration that you want to apply to this Amazon S3 bucket. You can enable the configuration options in any combination. For more information about when Amazon S3 considers a bucket or object public, see [The Meaning of \"Public\"](https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status) in the *Amazon S3 User Guide*.", + "properties": { + "BlockPublicAcls": { + "description": "Specifies whether Amazon S3 should block public access control lists (ACLs) for this bucket and objects in this bucket. Setting this element to ``TRUE`` causes the following behavior:\n + PUT Bucket ACL and PUT Object ACL calls fail if the specified ACL is public.\n + PUT Object calls fail if the request includes a public ACL.\n + PUT Bucket calls fail if the request includes a public ACL.\n \n Enabling this setting doesn't affect existing policies or ACLs.", + "type": "boolean" + }, + "BlockPublicPolicy": { + "description": "Specifies whether Amazon S3 should block public bucket policies for this bucket. Setting this element to ``TRUE`` causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy allows public access. \n Enabling this setting doesn't affect existing bucket policies.", + "type": "boolean" + }, + "IgnorePublicAcls": { + "description": "Specifies whether Amazon S3 should ignore public ACLs for this bucket and objects in this bucket. Setting this element to ``TRUE`` causes Amazon S3 to ignore all public ACLs on this bucket and objects in this bucket.\n Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set.", + "type": "boolean" + }, + "RestrictPublicBuckets": { + "description": "Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting this element to ``TRUE`` restricts access to this bucket to only AWS-service principals and authorized users within this account if the bucket has a public policy.\n Enabling this setting doesn't affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked.", + "type": "boolean" + } + }, + "type": "object" + }, + "QueueConfiguration": { + "additionalProperties": false, + "description": "Specifies the configuration for publishing messages to an Amazon Simple Queue Service (Amazon SQS) queue when Amazon S3 detects specified events.", + "properties": { + "Event": { + "description": "The Amazon S3 bucket event about which you want to publish messages to Amazon SQS. For more information, see [Supported Event Types](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) in the *Amazon S3 User Guide*.", + "type": "string" + }, + "Filter": { + "$ref": "#/definitions/NotificationFilter", + "description": "The filtering rules that determine which objects trigger notifications. For example, you can create a filter so that Amazon S3 sends notifications only when image files with a ``.jpg`` extension are added to the bucket. For more information, see [Configuring event notifications using object key name filtering](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/notification-how-to-filtering.html) in the *Amazon S3 User Guide*." + }, + "Queue": { + "description": "The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3 publishes a message when it detects events of the specified type. FIFO queues are not allowed when enabling an SQS queue as the event notification destination.", + "type": "string" + } + }, + "required": [ + "Event", + "Queue" + ], + "type": "object" + }, + "RedirectAllRequestsTo": { + "additionalProperties": false, + "description": "Specifies the redirect behavior of all requests to a website endpoint of an Amazon S3 bucket.", + "properties": { + "HostName": { + "description": "Name of the host where requests are redirected.", + "type": "string" + }, + "Protocol": { + "description": "Protocol to use when redirecting requests. The default is the protocol that is used in the original request.", + "enum": [ + "http", + "https" + ], + "type": "string" + } + }, + "required": [ + "HostName" + ], + "type": "object" + }, + "RedirectRule": { + "additionalProperties": false, + "description": "Specifies how requests are redirected. In the event of an error, you can specify a different error code to return.", + "properties": { + "HostName": { + "description": "The host name to use in the redirect request.", + "type": "string" + }, + "HttpRedirectCode": { + "description": "The HTTP redirect code to use on the response. Not required if one of the siblings is present.", + "type": "string" + }, + "Protocol": { + "description": "Protocol to use when redirecting requests. The default is the protocol that is used in the original request.", + "enum": [ + "http", + "https" + ], + "type": "string" + }, + "ReplaceKeyPrefixWith": { + "description": "The object key prefix to use in the redirect request. For example, to redirect requests for all pages with prefix ``docs/`` (objects in the ``docs/`` folder) to ``documents/``, you can set a condition block with ``KeyPrefixEquals`` set to ``docs/`` and in the Redirect set ``ReplaceKeyPrefixWith`` to ``/documents``. Not required if one of the siblings is present. Can be present only if ``ReplaceKeyWith`` is not provided.\n Replacement must be made for object keys containing special characters (such as carriage returns) when using XML requests. For more information, see [XML related object key constraints](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).", + "type": "string" + }, + "ReplaceKeyWith": { + "description": "The specific object key to use in the redirect request. For example, redirect request to ``error.html``. Not required if one of the siblings is present. Can be present only if ``ReplaceKeyPrefixWith`` is not provided.\n Replacement must be made for object keys containing special characters (such as carriage returns) when using XML requests. For more information, see [XML related object key constraints](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).", + "type": "string" + } + }, + "type": "object" + }, + "ReplicaModifications": { + "additionalProperties": false, + "description": "A filter that you can specify for selection for modifications on replicas.", + "properties": { + "Status": { + "description": "Specifies whether Amazon S3 replicates modifications on replicas.\n *Allowed values*: ``Enabled`` | ``Disabled``", + "enum": [ + "Enabled", + "Disabled" + ], + "type": "string" + } + }, + "required": [ + "Status" + ], + "type": "object" + }, + "ReplicationConfiguration": { + "additionalProperties": false, + "description": "A container for replication rules. You can add up to 1,000 rules. The maximum size of a replication configuration is 2 MB. The latest version of the replication configuration XML is V2. For more information about XML V2 replication configurations, see [Replication configuration](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-add-config.html) in the *Amazon S3 User Guide*.", + "properties": { + "Role": { + "description": "The Amazon Resource Name (ARN) of the IAMlong (IAM) role that Amazon S3 assumes when replicating objects. For more information, see [How to Set Up Replication](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-how-setup.html) in the *Amazon S3 User Guide*.", + "type": "string" + }, + "Rules": { + "description": "A container for one or more replication rules. A replication configuration must have at least one rule and can contain a maximum of 1,000 rules.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ReplicationRule", + "maxLength": 1000, + "minLength": 1 + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Role", + "Rules" + ], + "type": "object" + }, + "ReplicationDestination": { + "additionalProperties": false, + "description": "A container for information about the replication destination and its configurations including enabling the S3 Replication Time Control (S3 RTC).", + "properties": { + "AccessControlTranslation": { + "$ref": "#/definitions/AccessControlTranslation", + "description": "Specify this only in a cross-account scenario (where source and destination bucket owners are not the same), and you want to change replica ownership to the AWS-account that owns the destination bucket. If this is not specified in the replication configuration, the replicas are owned by same AWS-account that owns the source object." + }, + "Account": { + "description": "Destination bucket owner account ID. In a cross-account scenario, if you direct Amazon S3 to change replica ownership to the AWS-account that owns the destination bucket by specifying the ``AccessControlTranslation`` property, this is the account ID of the destination bucket owner. For more information, see [Cross-Region Replication Additional Configuration: Change Replica Owner](https://docs.aws.amazon.com/AmazonS3/latest/dev/crr-change-owner.html) in the *Amazon S3 User Guide*.\n If you specify the ``AccessControlTranslation`` property, the ``Account`` property is required.", + "type": "string" + }, + "Bucket": { + "description": "The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to store the results.", + "type": "string" + }, + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration", + "description": "Specifies encryption-related information." + }, + "Metrics": { + "$ref": "#/definitions/Metrics", + "description": "A container specifying replication metrics-related settings enabling replication metrics and events." + }, + "ReplicationTime": { + "$ref": "#/definitions/ReplicationTime", + "description": "A container specifying S3 Replication Time Control (S3 RTC), including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. Must be specified together with a ``Metrics`` block." + }, + "StorageClass": { + "description": "The storage class to use when replicating objects, such as S3 Standard or reduced redundancy. By default, Amazon S3 uses the storage class of the source object to create the object replica. \n For valid values, see the ``StorageClass`` element of the [PUT Bucket replication](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html) action in the *Amazon S3 API Reference*.", + "enum": [ + "DEEP_ARCHIVE", + "GLACIER", + "GLACIER_IR", + "INTELLIGENT_TIERING", + "ONEZONE_IA", + "REDUCED_REDUNDANCY", + "STANDARD", + "STANDARD_IA" + ], + "type": "string" + } + }, + "required": [ + "Bucket" + ], + "type": "object" + }, + "ReplicationRule": { + "additionalProperties": false, + "description": "Specifies which Amazon S3 objects to replicate and where to store the replicas.", + "properties": { + "DeleteMarkerReplication": { + "$ref": "#/definitions/DeleteMarkerReplication", + "description": "Specifies whether Amazon S3 replicates delete markers. If you specify a ``Filter`` in your replication configuration, you must also include a ``DeleteMarkerReplication`` element. If your ``Filter`` includes a ``Tag`` element, the ``DeleteMarkerReplication`` ``Status`` must be set to Disabled, because Amazon S3 does not support replicating delete markers for tag-based rules. For an example configuration, see [Basic Rule Configuration](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config). \n For more information about delete marker replication, see [Basic Rule Configuration](https://docs.aws.amazon.com/AmazonS3/latest/dev/delete-marker-replication.html). \n If you are using an earlier version of the replication configuration, Amazon S3 handles replication of delete markers differently. For more information, see [Backward Compatibility](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations)." + }, + "Destination": { + "$ref": "#/definitions/ReplicationDestination", + "description": "A container for information about the replication destination and its configurations including enabling the S3 Replication Time Control (S3 RTC)." + }, + "Filter": { + "$ref": "#/definitions/ReplicationRuleFilter", + "description": "A filter that identifies the subset of objects to which the replication rule applies. A ``Filter`` must specify exactly one ``Prefix``, ``TagFilter``, or an ``And`` child element. The use of the filter field indicates that this is a V2 replication configuration. This field isn't supported in a V1 replication configuration.\n V1 replication configuration only supports filtering by key prefix. To filter using a V1 replication configuration, add the ``Prefix`` directly as a child element of the ``Rule`` element." + }, + "Id": { + "description": "A unique identifier for the rule. The maximum value is 255 characters. If you don't specify a value, AWS CloudFormation generates a random ID. When using a V2 replication configuration this property is capitalized as \"ID\".", + "maxLength": 255, + "type": "string" + }, + "Prefix": { + "description": "An object key name prefix that identifies the object or objects to which the rule applies. The maximum prefix length is 1,024 characters. To include all objects in a bucket, specify an empty string. To filter using a V1 replication configuration, add the ``Prefix`` directly as a child element of the ``Rule`` element.\n Replacement must be made for object keys containing special characters (such as carriage returns) when using XML requests. For more information, see [XML related object key constraints](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).", + "maxLength": 1024, + "type": "string" + }, + "Priority": { + "description": "The priority indicates which rule has precedence whenever two or more replication rules conflict. Amazon S3 will attempt to replicate objects according to all replication rules. However, if there are two or more rules with the same destination bucket, then objects will be replicated according to the rule with the highest priority. The higher the number, the higher the priority. \n For more information, see [Replication](https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) in the *Amazon S3 User Guide*.", + "type": "integer" + }, + "SourceSelectionCriteria": { + "$ref": "#/definitions/SourceSelectionCriteria", + "description": "A container that describes additional filters for identifying the source objects that you want to replicate. You can choose to enable or disable the replication of these objects." + }, + "Status": { + "description": "Specifies whether the rule is enabled.", + "enum": [ + "Disabled", + "Enabled" + ], + "type": "string" + } + }, + "required": [ + "Destination", + "Status" + ], + "type": "object" + }, + "ReplicationRuleAndOperator": { + "additionalProperties": false, + "description": "A container for specifying rule filters. The filters determine the subset of objects to which the rule applies. This element is required only if you specify more than one filter. \n For example:\n + If you specify both a ``Prefix`` and a ``TagFilter``, wrap these filters in an ``And`` tag. \n + If you specify a filter based on multiple tags, wrap the ``TagFilter`` elements in an ``And`` tag", + "properties": { + "Prefix": { + "description": "An object key name prefix that identifies the subset of objects to which the rule applies.", + "type": "string" + }, + "TagFilters": { + "description": "An array of tags containing key and value pairs.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TagFilter" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ReplicationRuleFilter": { + "additionalProperties": false, + "description": "A filter that identifies the subset of objects to which the replication rule applies. A ``Filter`` must specify exactly one ``Prefix``, ``TagFilter``, or an ``And`` child element.", + "properties": { + "And": { + "$ref": "#/definitions/ReplicationRuleAndOperator", + "description": "A container for specifying rule filters. The filters determine the subset of objects to which the rule applies. This element is required only if you specify more than one filter. For example: \n + If you specify both a ``Prefix`` and a ``TagFilter``, wrap these filters in an ``And`` tag.\n + If you specify a filter based on multiple tags, wrap the ``TagFilter`` elements in an ``And`` tag." + }, + "Prefix": { + "description": "An object key name prefix that identifies the subset of objects to which the rule applies.\n Replacement must be made for object keys containing special characters (such as carriage returns) when using XML requests. For more information, see [XML related object key constraints](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).", + "type": "string" + }, + "TagFilter": { + "$ref": "#/definitions/TagFilter", + "description": "A container for specifying a tag key and value. \n The rule applies only to objects that have the tag in their tag set." + } + }, + "type": "object" + }, + "ReplicationTime": { + "additionalProperties": false, + "description": "A container specifying S3 Replication Time Control (S3 RTC) related information, including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. Must be specified together with a ``Metrics`` block.", + "properties": { + "Status": { + "description": "Specifies whether the replication time is enabled.", + "enum": [ + "Disabled", + "Enabled" + ], + "type": "string" + }, + "Time": { + "$ref": "#/definitions/ReplicationTimeValue", + "description": "A container specifying the time by which replication should be complete for all objects and operations on objects." + } + }, + "required": [ + "Status", + "Time" + ], + "type": "object" + }, + "ReplicationTimeValue": { + "additionalProperties": false, + "description": "A container specifying the time value for S3 Replication Time Control (S3 RTC) and replication metrics ``EventThreshold``.", + "properties": { + "Minutes": { + "description": "Contains an integer specifying time in minutes. \n Valid value: 15", + "type": "integer" + } + }, + "required": [ + "Minutes" + ], + "type": "object" + }, + "RoutingRule": { + "additionalProperties": false, + "description": "Specifies the redirect behavior and when a redirect is applied. For more information about routing rules, see [Configuring advanced conditional redirects](https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html#advanced-conditional-redirects) in the *Amazon S3 User Guide*.", + "properties": { + "RedirectRule": { + "$ref": "#/definitions/RedirectRule", + "description": "Container for redirect information. You can redirect requests to another host, to another page, or with another protocol. In the event of an error, you can specify a different error code to return." + }, + "RoutingRuleCondition": { + "$ref": "#/definitions/RoutingRuleCondition", + "description": "A container for describing a condition that must be met for the specified redirect to apply. For example, 1. If request is for pages in the ``/docs`` folder, redirect to the ``/documents`` folder. 2. If request results in HTTP error 4xx, redirect request to another host where you might process the error." + } + }, + "required": [ + "RedirectRule" + ], + "type": "object" + }, + "RoutingRuleCondition": { + "additionalProperties": false, + "description": "A container for describing a condition that must be met for the specified redirect to apply. For example, 1. If request is for pages in the ``/docs`` folder, redirect to the ``/documents`` folder. 2. If request results in HTTP error 4xx, redirect request to another host where you might process the error.", + "properties": { + "HttpErrorCodeReturnedEquals": { + "description": "The HTTP error code when the redirect is applied. In the event of an error, if the error code equals this value, then the specified redirect is applied.\n Required when parent element ``Condition`` is specified and sibling ``KeyPrefixEquals`` is not specified. If both are specified, then both must be true for the redirect to be applied.", + "type": "string" + }, + "KeyPrefixEquals": { + "description": "The object key name prefix when the redirect is applied. For example, to redirect requests for ``ExamplePage.html``, the key prefix will be ``ExamplePage.html``. To redirect request for all pages with the prefix ``docs/``, the key prefix will be ``/docs``, which identifies all objects in the docs/ folder.\n Required when the parent element ``Condition`` is specified and sibling ``HttpErrorCodeReturnedEquals`` is not specified. If both conditions are specified, both must be true for the redirect to be applied.", + "type": "string" + } + }, + "type": "object" + }, + "Rule": { + "additionalProperties": false, + "description": "Specifies lifecycle rules for an Amazon S3 bucket. For more information, see [Put Bucket Lifecycle Configuration](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html) in the *Amazon S3 API Reference*.\n You must specify at least one of the following properties: ``AbortIncompleteMultipartUpload``, ``ExpirationDate``, ``ExpirationInDays``, ``NoncurrentVersionExpirationInDays``, ``NoncurrentVersionTransition``, ``NoncurrentVersionTransitions``, ``Transition``, or ``Transitions``.", + "properties": { + "AbortIncompleteMultipartUpload": { + "$ref": "#/definitions/AbortIncompleteMultipartUpload", + "description": "Specifies a lifecycle rule that stops incomplete multipart uploads to an Amazon S3 bucket." + }, + "ExpirationDate": { + "$ref": "#/definitions/iso8601UTC", + "description": "Indicates when objects are deleted from Amazon S3 and Amazon S3 Glacier. The date value must be in ISO 8601 format. The time is always midnight UTC. If you specify an expiration and transition time, you must use the same time unit for both properties (either in days or by date). The expiration time must also be later than the transition time." + }, + "ExpirationInDays": { + "description": "Indicates the number of days after creation when objects are deleted from Amazon S3 and Amazon S3 Glacier. If you specify an expiration and transition time, you must use the same time unit for both properties (either in days or by date). The expiration time must also be later than the transition time.", + "type": "integer" + }, + "ExpiredObjectDeleteMarker": { + "description": "Indicates whether Amazon S3 will remove a delete marker without any noncurrent versions. If set to true, the delete marker will be removed if there are no noncurrent versions. This cannot be specified with ``ExpirationInDays``, ``ExpirationDate``, or ``TagFilters``.", + "type": "boolean" + }, + "Id": { + "description": "Unique identifier for the rule. The value can't be longer than 255 characters.", + "maxLength": 255, + "type": "string" + }, + "NoncurrentVersionExpiration": { + "$ref": "#/definitions/NoncurrentVersionExpiration", + "description": "Specifies when noncurrent object versions expire. Upon expiration, S3 permanently deletes the noncurrent object versions. You set this lifecycle configuration action on a bucket that has versioning enabled (or suspended) to request that S3 delete noncurrent object versions at a specific period in the object's lifetime." + }, + "NoncurrentVersionExpirationInDays": { + "description": "(Deprecated.) For buckets with versioning enabled (or suspended), specifies the time, in days, between when a new version of the object is uploaded to the bucket and when old versions of the object expire. When object versions expire, Amazon S3 permanently deletes them. If you specify a transition and expiration time, the expiration time must be later than the transition time.", + "type": "integer" + }, + "NoncurrentVersionTransition": { + "$ref": "#/definitions/NoncurrentVersionTransition", + "description": "(Deprecated.) For buckets with versioning enabled (or suspended), specifies when non-current objects transition to a specified storage class. If you specify a transition and expiration time, the expiration time must be later than the transition time. If you specify this property, don't specify the ``NoncurrentVersionTransitions`` property." + }, + "NoncurrentVersionTransitions": { + "description": "For buckets with versioning enabled (or suspended), one or more transition rules that specify when non-current objects transition to a specified storage class. If you specify a transition and expiration time, the expiration time must be later than the transition time. If you specify this property, don't specify the ``NoncurrentVersionTransition`` property.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/NoncurrentVersionTransition" + }, + "type": "array", + "uniqueItems": true + }, + "ObjectSizeGreaterThan": { + "description": "Specifies the minimum object size in bytes for this rule to apply to. Objects must be larger than this value in bytes. For more information about size based rules, see [Lifecycle configuration using size-based rules](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html#lc-size-rules) in the *Amazon S3 User Guide*.", + "maxLength": 20, + "pattern": "[0-9]+", + "type": "string" + }, + "ObjectSizeLessThan": { + "description": "Specifies the maximum object size in bytes for this rule to apply to. Objects must be smaller than this value in bytes. For more information about sized based rules, see [Lifecycle configuration using size-based rules](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html#lc-size-rules) in the *Amazon S3 User Guide*.", + "maxLength": 20, + "pattern": "[0-9]+", + "type": "string" + }, + "Prefix": { + "description": "Object key prefix that identifies one or more objects to which this rule applies.\n Replacement must be made for object keys containing special characters (such as carriage returns) when using XML requests. For more information, see [XML related object key constraints](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).", + "type": "string" + }, + "Status": { + "description": "If ``Enabled``, the rule is currently being applied. If ``Disabled``, the rule is not currently being applied.", + "enum": [ + "Enabled", + "Disabled" + ], + "type": "string" + }, + "TagFilters": { + "description": "Tags to use to identify a subset of objects to which the lifecycle rule applies.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TagFilter" + }, + "type": "array", + "uniqueItems": true + }, + "Transition": { + "$ref": "#/definitions/Transition", + "description": "(Deprecated.) Specifies when an object transitions to a specified storage class. If you specify an expiration and transition time, you must use the same time unit for both properties (either in days or by date). The expiration time must also be later than the transition time. If you specify this property, don't specify the ``Transitions`` property." + }, + "Transitions": { + "description": "One or more transition rules that specify when an object transitions to a specified storage class. If you specify an expiration and transition time, you must use the same time unit for both properties (either in days or by date). The expiration time must also be later than the transition time. If you specify this property, don't specify the ``Transition`` property.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Transition" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Status" + ], + "type": "object" + }, + "S3KeyFilter": { + "additionalProperties": false, + "description": "A container for object key name prefix and suffix filtering rules. For more information about object key name filtering, see [Configuring event notifications using object key name filtering](https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-filtering.html) in the *Amazon S3 User Guide*.\n The same type of filter rule cannot be used more than once. For example, you cannot specify two prefix rules.", + "properties": { + "Rules": { + "description": "A list of containers for the key-value pair that defines the criteria for the filter rule.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/FilterRule" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Rules" + ], + "type": "object" + }, + "S3TablesDestination": { + "additionalProperties": false, + "description": "The destination information for the metadata table configuration. The destination table bucket must be in the same Region and AWS-account as the general purpose bucket. The specified metadata table name must be unique within the ``aws_s3_metadata`` namespace in the destination table bucket.", + "properties": { + "TableArn": { + "description": "The Amazon Resource Name (ARN) for the metadata table in the metadata table configuration. The specified metadata table name must be unique within the ``aws_s3_metadata`` namespace in the destination table bucket.", + "type": "string" + }, + "TableBucketArn": { + "description": "The Amazon Resource Name (ARN) for the table bucket that's specified as the destination in the metadata table configuration. The destination table bucket must be in the same Region and AWS-account as the general purpose bucket.", + "type": "string" + }, + "TableName": { + "description": "The name for the metadata table in your metadata table configuration. The specified metadata table name must be unique within the ``aws_s3_metadata`` namespace in the destination table bucket.", + "type": "string" + }, + "TableNamespace": { + "description": "The table bucket namespace for the metadata table in your metadata table configuration. This value is always ``aws_s3_metadata``.", + "type": "string" + } + }, + "required": [ + "TableBucketArn", + "TableName" + ], + "type": "object" + }, + "ServerSideEncryptionByDefault": { + "additionalProperties": false, + "description": "Describes the default server-side encryption to apply to new objects in the bucket. If a PUT Object request doesn't specify any server-side encryption, this default encryption will be applied. For more information, see [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html).\n + *General purpose buckets* - If you don't specify a customer managed key at configuration, Amazon S3 automatically creates an AWS KMS key (``aws/s3``) in your AWS account the first time that you add an object encrypted with SSE-KMS to a bucket. By default, Amazon S3 uses this KMS key for SSE-KMS. \n + *Directory buckets* - Your SSE-KMS configuration can only support 1 [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) per directory bucket's lifetime. The [managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (``aws/s3``) isn't supported. \n + *Directory buckets* - For directory buckets, there are only two supported options for server-side encryption: SSE-S3 and SSE-KMS.", + "properties": { + "KMSMasterKeyID": { + "description": "AWS Key Management Service (KMS) customer managed key ID to use for the default encryption. \n + *General purpose buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms`` or ``aws:kms:dsse``.\n + *Directory buckets* - This parameter is allowed if and only if ``SSEAlgorithm`` is set to ``aws:kms``.\n \n You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key.\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key Alias: ``alias/alias-name`` \n \n If you are using encryption with cross-account or AWS service operations, you must use a fully qualified KMS key ARN. For more information, see [Using encryption for cross-account operations](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy).\n + *General purpose buckets* - If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester\u2019s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner. Also, if you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log. \n + *Directory buckets* - When you specify an [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.\n \n Amazon S3 only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *Key Management Service Developer Guide*.", + "type": "string" + }, + "SSEAlgorithm": { + "description": "Server-side encryption algorithm to use for the default encryption.\n For directory buckets, there are only two supported values for server-side encryption: ``AES256`` and ``aws:kms``.", + "enum": [ + "aws:kms", + "AES256", + "aws:kms:dsse" + ], + "type": "string" + } + }, + "required": [ + "SSEAlgorithm" + ], + "type": "object" + }, + "ServerSideEncryptionRule": { + "additionalProperties": false, + "description": "Specifies the default server-side encryption configuration.\n + *General purpose buckets* - If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester\u2019s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.\n + *Directory buckets* - When you specify an [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.", + "properties": { + "BucketKeyEnabled": { + "description": "Specifies whether Amazon S3 should use an S3 Bucket Key with server-side encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects are not affected. Setting the ``BucketKeyEnabled`` element to ``true`` causes Amazon S3 to use an S3 Bucket Key. By default, S3 Bucket Key is not enabled.\n For more information, see [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) in the *Amazon S3 User Guide*.", + "type": "boolean" + }, + "ServerSideEncryptionByDefault": { + "$ref": "#/definitions/ServerSideEncryptionByDefault", + "description": "Specifies the default server-side encryption to apply to new objects in the bucket. If a PUT Object request doesn't specify any server-side encryption, this default encryption will be applied." + } + }, + "type": "object" + }, + "SourceSelectionCriteria": { + "additionalProperties": false, + "description": "A container that describes additional filters for identifying the source objects that you want to replicate. You can choose to enable or disable the replication of these objects.", + "properties": { + "ReplicaModifications": { + "$ref": "#/definitions/ReplicaModifications", + "description": "A filter that you can specify for selection for modifications on replicas." + }, + "SseKmsEncryptedObjects": { + "$ref": "#/definitions/SseKmsEncryptedObjects", + "description": "A container for filter information for the selection of Amazon S3 objects encrypted with AWS KMS." + } + }, + "type": "object" + }, + "SseKmsEncryptedObjects": { + "additionalProperties": false, + "description": "A container for filter information for the selection of S3 objects encrypted with AWS KMS.", + "properties": { + "Status": { + "description": "Specifies whether Amazon S3 replicates objects created with server-side encryption using an AWS KMS key stored in AWS Key Management Service.", + "enum": [ + "Disabled", + "Enabled" + ], + "type": "string" + } + }, + "required": [ + "Status" + ], + "type": "object" + }, + "StorageClassAnalysis": { + "additionalProperties": false, + "description": "Specifies data related to access patterns to be collected and made available to analyze the tradeoffs between different storage classes for an Amazon S3 bucket.", + "properties": { + "DataExport": { + "$ref": "#/definitions/DataExport", + "description": "Specifies how data related to the storage class analysis for an Amazon S3 bucket should be exported." + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A container of a key value name pair.", + "properties": { + "Key": { + "description": "Name of the object key.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Value of the tag.", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagFilter": { + "additionalProperties": false, + "description": "Specifies tags to use to identify a subset of objects for an Amazon S3 bucket. For more information, see [Categorizing your storage using tags](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html) in the *Amazon Simple Storage Service User Guide*.", + "properties": { + "Key": { + "description": "The tag key.", + "type": "string" + }, + "Value": { + "description": "The tag value.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TargetObjectKeyFormat": { + "description": "Describes the key format for server access log file in the target bucket. You can choose between SimplePrefix and PartitionedPrefix.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "SimplePrefix": { + "additionalProperties": false, + "description": "This format defaults the prefix to the given log file prefix for delivering server access log file.", + "type": "object" + } + }, + "required": [ + "SimplePrefix" + ] + }, + { + "additionalProperties": false, + "properties": { + "PartitionedPrefix": { + "$ref": "#/definitions/PartitionedPrefix" + } + }, + "required": [ + "PartitionedPrefix" + ] + } + ], + "type": "object" + }, + "Tiering": { + "additionalProperties": false, + "description": "The S3 Intelligent-Tiering storage class is designed to optimize storage costs by automatically moving data to the most cost-effective storage access tier, without additional operational overhead.", + "properties": { + "AccessTier": { + "description": "S3 Intelligent-Tiering access tier. See [Storage class for automatically optimizing frequently and infrequently accessed objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access) for a list of access tiers in the S3 Intelligent-Tiering storage class.", + "enum": [ + "ARCHIVE_ACCESS", + "DEEP_ARCHIVE_ACCESS" + ], + "type": "string" + }, + "Days": { + "description": "The number of consecutive days of no access after which an object will be eligible to be transitioned to the corresponding tier. The minimum number of days specified for Archive Access tier must be at least 90 days and Deep Archive Access tier must be at least 180 days. The maximum can be up to 2 years (730 days).", + "type": "integer" + } + }, + "required": [ + "AccessTier", + "Days" + ], + "type": "object" + }, + "TopicConfiguration": { + "additionalProperties": false, + "description": "A container for specifying the configuration for publication of messages to an Amazon Simple Notification Service (Amazon SNS) topic when Amazon S3 detects specified events.", + "properties": { + "Event": { + "description": "The Amazon S3 bucket event about which to send notifications. For more information, see [Supported Event Types](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) in the *Amazon S3 User Guide*.", + "type": "string" + }, + "Filter": { + "$ref": "#/definitions/NotificationFilter", + "description": "The filtering rules that determine for which objects to send notifications. For example, you can create a filter so that Amazon S3 sends notifications only when image files with a ``.jpg`` extension are added to the bucket." + }, + "Topic": { + "description": "The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3 publishes a message when it detects events of the specified type.", + "type": "string" + } + }, + "required": [ + "Event", + "Topic" + ], + "type": "object" + }, + "Transition": { + "additionalProperties": false, + "description": "Specifies when an object transitions to a specified storage class. For more information about Amazon S3 lifecycle configuration rules, see [Transitioning Objects Using Amazon S3 Lifecycle](https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html) in the *Amazon S3 User Guide*.", + "properties": { + "StorageClass": { + "description": "The storage class to which you want the object to transition.", + "enum": [ + "DEEP_ARCHIVE", + "GLACIER", + "Glacier", + "GLACIER_IR", + "INTELLIGENT_TIERING", + "ONEZONE_IA", + "STANDARD_IA" + ], + "type": "string" + }, + "TransitionDate": { + "$ref": "#/definitions/iso8601UTC", + "description": "Indicates when objects are transitioned to the specified storage class. The date value must be in ISO 8601 format. The time is always midnight UTC." + }, + "TransitionInDays": { + "description": "Indicates the number of days after creation when objects are transitioned to the specified storage class. If the specified storage class is ``INTELLIGENT_TIERING``, ``GLACIER_IR``, ``GLACIER``, or ``DEEP_ARCHIVE``, valid values are ``0`` or positive integers. If the specified storage class is ``STANDARD_IA`` or ``ONEZONE_IA``, valid values are positive integers greater than ``30``. Be aware that some storage classes have a minimum storage duration and that you're charged for transitioning objects before their minimum storage duration. For more information, see [Constraints and considerations for transitions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html#lifecycle-configuration-constraints) in the *Amazon S3 User Guide*.", + "type": "integer" + } + }, + "required": [ + "StorageClass" + ], + "type": "object" + }, + "VersioningConfiguration": { + "additionalProperties": false, + "description": "Describes the versioning state of an Amazon S3 bucket. For more information, see [PUT Bucket versioning](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTVersioningStatus.html) in the *Amazon S3 API Reference*.\n When you enable versioning on a bucket for the first time, it might take a short amount of time for the change to be fully propagated. We recommend that you wait for 15 minutes after enabling versioning before issuing write operations (``PUT`` or ``DELETE``) on objects in the bucket.", + "properties": { + "Status": { + "default": "Suspended", + "description": "The versioning state of the bucket.", + "enum": [ + "Enabled", + "Suspended" + ], + "type": "string" + } + }, + "required": [ + "Status" + ], + "type": "object" + }, + "WebsiteConfiguration": { + "additionalProperties": false, + "description": "Specifies website configuration parameters for an Amazon S3 bucket.", + "properties": { + "ErrorDocument": { + "description": "The name of the error document for the website.", + "type": "string" + }, + "IndexDocument": { + "description": "The name of the index document for the website.", + "type": "string" + }, + "RedirectAllRequestsTo": { + "$ref": "#/definitions/RedirectAllRequestsTo", + "description": "The redirect behavior for every request to this bucket's website endpoint.\n If you specify this property, you can't specify any other property." + }, + "RoutingRules": { + "description": "Rules that define when a redirect is applied and the redirect behavior.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/RoutingRule" + }, + "type": "array" + } + }, + "type": "object" + }, + "iso8601UTC": { + "description": "The date value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ssZ)", + "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", + "type": "string" + } + }, + "description": "The ``AWS::S3::Bucket`` resource creates an Amazon S3 bucket in the same AWS Region where you create the AWS CloudFormation stack.\n To control how AWS CloudFormation handles the bucket when the stack is deleted, you can set a deletion policy for your bucket. You can choose to *retain* the bucket or to *delete* the bucket. For more information, see [DeletionPolicy Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html).\n You can only delete empty buckets. Deletion fails for buckets that have contents.", + "handlers": { + "create": { + "permissions": [ + "s3:CreateBucket", + "s3:PutBucketTagging", + "s3:PutAnalyticsConfiguration", + "s3:PutEncryptionConfiguration", + "s3:PutBucketCORS", + "s3:PutInventoryConfiguration", + "s3:PutLifecycleConfiguration", + "s3:PutMetricsConfiguration", + "s3:PutBucketNotification", + "s3:PutBucketReplication", + "s3:PutBucketWebsite", + "s3:PutAccelerateConfiguration", + "s3:PutBucketPublicAccessBlock", + "s3:PutReplicationConfiguration", + "s3:PutObjectAcl", + "s3:PutBucketObjectLockConfiguration", + "s3:GetBucketAcl", + "s3:ListBucket", + "iam:PassRole", + "s3:DeleteObject", + "s3:PutBucketLogging", + "s3:PutBucketVersioning", + "s3:PutObjectLockConfiguration", + "s3:PutBucketOwnershipControls", + "s3:PutIntelligentTieringConfiguration", + "s3:GetBucketMetadataTableConfiguration", + "s3:CreateBucketMetadataTableConfiguration", + "s3tables:CreateNamespace", + "s3tables:CreateTable", + "s3tables:GetTable", + "s3tables:PutTablePolicy", + "s3tables:GetTableMetadataLocation", + "s3tables:UpdateTableMetadataLocation" + ] + }, + "delete": { + "permissions": [ + "s3:DeleteBucket", + "s3:ListBucket" + ] + }, + "list": { + "permissions": [ + "s3:ListAllMyBuckets" + ] + }, + "read": { + "permissions": [ + "s3:GetAccelerateConfiguration", + "s3:GetLifecycleConfiguration", + "s3:GetBucketPublicAccessBlock", + "s3:GetAnalyticsConfiguration", + "s3:GetBucketCORS", + "s3:GetEncryptionConfiguration", + "s3:GetInventoryConfiguration", + "s3:GetBucketLogging", + "s3:GetMetricsConfiguration", + "s3:GetBucketNotification", + "s3:GetBucketVersioning", + "s3:GetReplicationConfiguration", + "S3:GetBucketWebsite", + "s3:GetBucketPublicAccessBlock", + "s3:GetBucketObjectLockConfiguration", + "s3:GetBucketTagging", + "s3:GetBucketOwnershipControls", + "s3:GetIntelligentTieringConfiguration", + "s3:GetBucketMetadataTableConfiguration", + "s3:ListBucket" + ] + }, + "update": { + "permissions": [ + "s3:PutBucketAcl", + "s3:PutBucketTagging", + "s3:PutAnalyticsConfiguration", + "s3:PutEncryptionConfiguration", + "s3:PutBucketCORS", + "s3:PutInventoryConfiguration", + "s3:PutLifecycleConfiguration", + "s3:PutMetricsConfiguration", + "s3:PutBucketNotification", + "s3:PutBucketReplication", + "s3:PutBucketWebsite", + "s3:PutAccelerateConfiguration", + "s3:GetBucketMetadataTableConfiguration", + "s3:DeleteBucketMetadataTableConfiguration", + "s3:CreateBucketMetadataTableConfiguration", + "s3tables:CreateNamespace", + "s3tables:CreateTable", + "s3tables:GetTable", + "s3tables:PutTablePolicy", + "s3tables:GetTableMetadataLocation", + "s3tables:UpdateTableMetadataLocation", + "s3:PutBucketPublicAccessBlock", + "s3:PutReplicationConfiguration", + "s3:PutBucketOwnershipControls", + "s3:PutIntelligentTieringConfiguration", + "s3:DeleteBucketWebsite", + "s3:PutBucketLogging", + "s3:PutBucketVersioning", + "s3:PutObjectLockConfiguration", + "s3:PutBucketObjectLockConfiguration", + "s3:DeleteBucketAnalyticsConfiguration", + "s3:DeleteBucketCors", + "s3:DeleteBucketMetricsConfiguration", + "s3:DeleteBucketEncryption", + "s3:DeleteBucketLifecycle", + "s3:DeleteBucketReplication", + "iam:PassRole", + "s3:ListBucket" + ] + } + }, + "primaryIdentifier": [ + "/properties/BucketName" + ], + "properties": { + "AccelerateConfiguration": { + "$ref": "#/definitions/AccelerateConfiguration", + "description": "Configures the transfer acceleration state for an Amazon S3 bucket. For more information, see [Amazon S3 Transfer Acceleration](https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html) in the *Amazon S3 User Guide*." + }, + "AccessControl": { + "description": "This is a legacy property, and it is not recommended for most use cases. A majority of modern use cases in Amazon S3 no longer require the use of ACLs, and we recommend that you keep ACLs disabled. For more information, see [Controlling object ownership](https://docs.aws.amazon.com//AmazonS3/latest/userguide/about-object-ownership.html) in the *Amazon S3 User Guide*.\n A canned access control list (ACL) that grants predefined permissions to the bucket. For more information about canned ACLs, see [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) in the *Amazon S3 User Guide*.\n S3 buckets are created with ACLs disabled by default. Therefore, unless you explicitly set the [AWS::S3::OwnershipControls](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-ownershipcontrols.html) property to enable ACLs, your resource will fail to deploy with any value other than Private. Use cases requiring ACLs are uncommon.\n The majority of access control configurations can be successfully and more easily achieved with bucket policies. For more information, see [AWS::S3::BucketPolicy](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html). For examples of common policy configurations, including S3 Server Access Logs buckets and more, see [Bucket policy examples](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html) in the *Amazon S3 User Guide*.", + "enum": [ + "AuthenticatedRead", + "AwsExecRead", + "BucketOwnerFullControl", + "BucketOwnerRead", + "LogDeliveryWrite", + "Private", + "PublicRead", + "PublicReadWrite" + ], + "type": "string" + }, + "AnalyticsConfigurations": { + "description": "Specifies the configuration and any analyses for the analytics filter of an Amazon S3 bucket.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AnalyticsConfiguration" + }, + "type": "array", + "uniqueItems": true + }, + "Arn": { + "$ref": "#/definitions/Arn", + "description": "", + "examples": [ + "arn:aws:s3:::mybucket" + ] + }, + "BucketEncryption": { + "$ref": "#/definitions/BucketEncryption", + "description": "Specifies default encryption for a bucket using server-side encryption with Amazon S3-managed keys (SSE-S3), AWS KMS-managed keys (SSE-KMS), or dual-layer server-side encryption with KMS-managed keys (DSSE-KMS). For information about the Amazon S3 default encryption feature, see [Amazon S3 Default Encryption for S3 Buckets](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) in the *Amazon S3 User Guide*." + }, + "BucketName": { + "description": "A name for the bucket. If you don't specify a name, AWS CloudFormation generates a unique ID and uses that ID for the bucket name. The bucket name must contain only lowercase letters, numbers, periods (.), and dashes (-) and must follow [Amazon S3 bucket restrictions and limitations](https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html). For more information, see [Rules for naming Amazon S3 buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html) in the *Amazon S3 User Guide*. \n If you specify a name, you can't perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you need to replace the resource, specify a new name.", + "type": "string" + }, + "CorsConfiguration": { + "$ref": "#/definitions/CorsConfiguration", + "description": "Describes the cross-origin access configuration for objects in an Amazon S3 bucket. For more information, see [Enabling Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the *Amazon S3 User Guide*." + }, + "DomainName": { + "description": "", + "examples": [ + "mystack-mybucket-kdwwxmddtr2g.s3.amazonaws.com" + ], + "type": "string" + }, + "DualStackDomainName": { + "description": "", + "examples": [ + "mystack-mybucket-kdwwxmddtr2g.s3.dualstack.us-east-2.amazonaws.com" + ], + "type": "string" + }, + "IntelligentTieringConfigurations": { + "description": "Defines how Amazon S3 handles Intelligent-Tiering storage.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IntelligentTieringConfiguration" + }, + "type": "array", + "uniqueItems": true + }, + "InventoryConfigurations": { + "description": "Specifies the inventory configuration for an Amazon S3 bucket. For more information, see [GET Bucket inventory](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html) in the *Amazon S3 API Reference*.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/InventoryConfiguration" + }, + "type": "array", + "uniqueItems": true + }, + "LifecycleConfiguration": { + "$ref": "#/definitions/LifecycleConfiguration", + "description": "Specifies the lifecycle configuration for objects in an Amazon S3 bucket. For more information, see [Object Lifecycle Management](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) in the *Amazon S3 User Guide*." + }, + "LoggingConfiguration": { + "$ref": "#/definitions/LoggingConfiguration", + "description": "Settings that define where logs are stored." + }, + "MetadataTableConfiguration": { + "$ref": "#/definitions/MetadataTableConfiguration", + "description": "The metadata table configuration of an S3 general purpose bucket. For more information, see [Accelerating data discovery with S3 Metadata](https://docs.aws.amazon.com/AmazonS3/latest/userguide/metadata-tables-overview.html) and [Setting up permissions for configuring metadata tables](https://docs.aws.amazon.com/AmazonS3/latest/userguide/metadata-tables-permissions.html)." + }, + "MetricsConfigurations": { + "description": "Specifies a metrics configuration for the CloudWatch request metrics (specified by the metrics configuration ID) from an Amazon S3 bucket. If you're updating an existing metrics configuration, note that this is a full replacement of the existing metrics configuration. If you don't include the elements you want to keep, they are erased. For more information, see [PutBucketMetricsConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTMetricConfiguration.html).", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/MetricsConfiguration" + }, + "type": "array", + "uniqueItems": true + }, + "NotificationConfiguration": { + "$ref": "#/definitions/NotificationConfiguration", + "description": "Configuration that defines how Amazon S3 handles bucket notifications." + }, + "ObjectLockConfiguration": { + "$ref": "#/definitions/ObjectLockConfiguration", + "description": "This operation is not supported for directory buckets.\n Places an Object Lock configuration on the specified bucket. The rule specified in the Object Lock configuration will be applied by default to every new object placed in the specified bucket. For more information, see [Locking Objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). \n + The ``DefaultRetention`` settings require both a mode and a period.\n + The ``DefaultRetention`` period can be either ``Days`` or ``Years`` but you must select one. You cannot specify ``Days`` and ``Years`` at the same time.\n + You can enable Object Lock for new or existing buckets. For more information, see [Configuring Object Lock](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-configure.html)." + }, + "ObjectLockEnabled": { + "description": "Indicates whether this bucket has an Object Lock configuration enabled. Enable ``ObjectLockEnabled`` when you apply ``ObjectLockConfiguration`` to a bucket.", + "type": "boolean" + }, + "OwnershipControls": { + "$ref": "#/definitions/OwnershipControls", + "description": "Configuration that defines how Amazon S3 handles Object Ownership rules." + }, + "PublicAccessBlockConfiguration": { + "$ref": "#/definitions/PublicAccessBlockConfiguration", + "description": "Configuration that defines how Amazon S3 handles public access." + }, + "RegionalDomainName": { + "description": "", + "examples": [ + "mystack-mybucket-kdwwxmddtr2g.s3.us-east-2.amazonaws.com" + ], + "type": "string" + }, + "ReplicationConfiguration": { + "$ref": "#/definitions/ReplicationConfiguration", + "description": "Configuration for replicating objects in an S3 bucket. To enable replication, you must also enable versioning by using the ``VersioningConfiguration`` property.\n Amazon S3 can store replicated objects in a single destination bucket or multiple destination buckets. The destination bucket or buckets must already exist." + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this S3 bucket.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "VersioningConfiguration": { + "$ref": "#/definitions/VersioningConfiguration", + "description": "Enables multiple versions of all objects in this bucket. You might enable versioning to prevent objects from being deleted or overwritten by mistake or to archive objects so that you can retrieve previous versions of them.\n When you enable versioning on a bucket for the first time, it might take a short amount of time for the change to be fully propagated. We recommend that you wait for 15 minutes after enabling versioning before issuing write operations (``PUT`` or ``DELETE``) on objects in the bucket." + }, + "WebsiteConfiguration": { + "$ref": "#/definitions/WebsiteConfiguration", + "description": "Information used to configure the bucket as a static website. For more information, see [Hosting Websites on Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html)." + }, + "WebsiteURL": { + "description": "", + "examples": [ + "Example (IPv4): http://mystack-mybucket-kdwwxmddtr2g.s3-website-us-east-2.amazonaws.com/", + "Example (IPv6): http://mystack-mybucket-kdwwxmddtr2g.s3.dualstack.us-east-2.amazonaws.com/" + ], + "format": "uri", + "type": "string" + } + }, + "propertyTransform": { + "/properties/NotificationConfiguration/LambdaConfigurations/*/Filter/S3Key/Rules/*/Name": "$replace(Name, \"prefix\", \"Prefix\") $OR $replace(Name, \"suffix\", \"Suffix\")", + "/properties/NotificationConfiguration/QueueConfigurations/*/Filter/S3Key/Rules/*/Name": "$replace(Name, \"prefix\", \"Prefix\") $OR $replace(Name, \"suffix\", \"Suffix\")", + "/properties/NotificationConfiguration/TopicConfigurations/*/Filter/S3Key/Rules/*/Name": "$replace(Name, \"prefix\", \"Prefix\") $OR $replace(Name, \"suffix\", \"Suffix\")" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/DomainName", + "/properties/DualStackDomainName", + "/properties/RegionalDomainName", + "/properties/MetadataTableConfiguration/S3TablesDestination/TableNamespace", + "/properties/MetadataTableConfiguration/S3TablesDestination/TableArn", + "/properties/WebsiteURL" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "s3:PutBucketTagging", + "s3:GetBucketTagging", + "s3:DeleteBucketTagging" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::S3::Bucket", + "writeOnlyProperties": [ + "/properties/AccessControl", + "/properties/LifecycleConfiguration/Rules/*/NoncurrentVersionExpirationInDays", + "/properties/LifecycleConfiguration/Rules/*/NoncurrentVersionTransition", + "/properties/LifecycleConfiguration/Rules/*/Transition", + "/properties/ReplicationConfiguration/Rules/*/Prefix", + "/properties/LifecycleConfiguration/Rules/*/ExpiredObjectDeleteMarker" + ] +} diff --git a/src/schema/aws-s3-bucketpolicy.json b/src/schema/aws-s3-bucketpolicy.json index 9cf25014..3bc15f7d 100644 --- a/src/schema/aws-s3-bucketpolicy.json +++ b/src/schema/aws-s3-bucketpolicy.json @@ -1,65 +1,65 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Bucket" - ], - "description": "Applies an Amazon S3 bucket policy to an Amazon S3 bucket. If you are using an identity other than the root user of the AWS-account that owns the bucket, the calling identity must have the ``PutBucketPolicy`` permissions on the specified bucket and belong to the bucket owner's account in order to use this operation.\n If you don't have ``PutBucketPolicy`` permissions, Amazon S3 returns a ``403 Access Denied`` error. If you have the correct permissions, but you're not using an identity that belongs to the bucket owner's account, Amazon S3 returns a ``405 Method Not Allowed`` error.\n As a security precaution, the root user of the AWS-account that owns a bucket can always use this operation, even if the policy explicitly denies the root user the ability to perform this action. \n For more information, see [Bucket policy examples](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html).\n The following operations are related to ``PutBucketPolicy``:\n + [CreateBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html) \n + [DeleteBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)", - "handlers": { - "create": { - "permissions": [ - "s3:GetBucketPolicy", - "s3:PutBucketPolicy" - ] - }, - "delete": { - "permissions": [ - "s3:GetBucketPolicy", - "s3:DeleteBucketPolicy" - ] - }, - "list": { - "permissions": [ - "s3:GetBucketPolicy", - "s3:ListAllMyBuckets" - ] - }, - "read": { - "permissions": [ - "s3:GetBucketPolicy" - ] - }, - "update": { - "permissions": [ - "s3:GetBucketPolicy", - "s3:PutBucketPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Bucket" - ], - "properties": { - "Bucket": { - "description": "The name of the Amazon S3 bucket to which the policy applies.", - "type": "string" - }, - "PolicyDocument": { - "description": "A policy document containing permissions to add to the specified bucket. In IAM, you must provide policy documents in JSON format. However, in CloudFormation you can provide the policy in JSON or YAML format because CloudFormation converts YAML to JSON before submitting it to IAM. For more information, see the AWS::IAM::Policy [PolicyDocument](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html#cfn-iam-policy-policydocument) resource description in this guide and [Access Policy Language Overview](https://docs.aws.amazon.com/AmazonS3/latest/dev/access-policy-language-overview.html) in the *Amazon S3 User Guide*.", - "type": [ - "object", - "string" - ] - } - }, - "required": [ - "Bucket", - "PolicyDocument" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::S3::BucketPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Bucket" + ], + "description": "Applies an Amazon S3 bucket policy to an Amazon S3 bucket. If you are using an identity other than the root user of the AWS-account that owns the bucket, the calling identity must have the ``PutBucketPolicy`` permissions on the specified bucket and belong to the bucket owner's account in order to use this operation.\n If you don't have ``PutBucketPolicy`` permissions, Amazon S3 returns a ``403 Access Denied`` error. If you have the correct permissions, but you're not using an identity that belongs to the bucket owner's account, Amazon S3 returns a ``405 Method Not Allowed`` error.\n As a security precaution, the root user of the AWS-account that owns a bucket can always use this operation, even if the policy explicitly denies the root user the ability to perform this action. \n When using the ``AWS::S3::BucketPolicy`` resource, you can create, update, and delete bucket policies for S3 buckets located in regions different from the stack's region. This cross-region bucket policy modification functionality is supported for backward compatibility with existing workflows.\n If the [DeletionPolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html) is not specified or set to ``Delete``, the bucket policy will be removed when the stack is deleted. If set to ``Retain``, the bucket policy will be preserved even after the stack is deleted.\n For example, a CloudFormation stack in ``us-east-1`` can use the ``AWS::S3::BucketPolicy`` resource to manage the bucket policy for an S3 bucket in ``us-west-2``. The retention or removal of the bucket policy during the stack deletion is determined by the ``DeletionPolicy`` attribute specified in the stack template.\n For more information, see [Bucket policy examples](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html).\n The following operations are related to ``PutBucketPolicy``:\n + [CreateBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html) \n + [DeleteBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)", + "handlers": { + "create": { + "permissions": [ + "s3:GetBucketPolicy", + "s3:PutBucketPolicy" + ] + }, + "delete": { + "permissions": [ + "s3:GetBucketPolicy", + "s3:DeleteBucketPolicy" + ] + }, + "list": { + "permissions": [ + "s3:GetBucketPolicy", + "s3:ListAllMyBuckets" + ] + }, + "read": { + "permissions": [ + "s3:GetBucketPolicy" + ] + }, + "update": { + "permissions": [ + "s3:GetBucketPolicy", + "s3:PutBucketPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Bucket" + ], + "properties": { + "Bucket": { + "description": "The name of the Amazon S3 bucket to which the policy applies.", + "type": "string" + }, + "PolicyDocument": { + "description": "A policy document containing permissions to add to the specified bucket. In IAM, you must provide policy documents in JSON format. However, in CloudFormation you can provide the policy in JSON or YAML format because CloudFormation converts YAML to JSON before submitting it to IAM. For more information, see the AWS::IAM::Policy [PolicyDocument](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html#cfn-iam-policy-policydocument) resource description in this guide and [Access Policy Language Overview](https://docs.aws.amazon.com/AmazonS3/latest/dev/access-policy-language-overview.html) in the *Amazon S3 User Guide*.", + "type": [ + "object", + "string" + ] + } + }, + "required": [ + "Bucket", + "PolicyDocument" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::S3::BucketPolicy" +} diff --git a/src/schema/aws-s3-multiregionaccesspoint.json b/src/schema/aws-s3-multiregionaccesspoint.json index 5da27e1d..e3033a1a 100644 --- a/src/schema/aws-s3-multiregionaccesspoint.json +++ b/src/schema/aws-s3-multiregionaccesspoint.json @@ -1,126 +1,129 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/PublicAccessBlockConfiguration", - "/properties/Regions" - ], - "definitions": { - "PublicAccessBlockConfiguration": { - "additionalProperties": false, - "properties": { - "BlockPublicAcls": { - "description": "Specifies whether Amazon S3 should block public access control lists (ACLs) for buckets in this account. Setting this element to TRUE causes the following behavior:\n- PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public.\n - PUT Object calls fail if the request includes a public ACL.\n. - PUT Bucket calls fail if the request includes a public ACL.\nEnabling this setting doesn't affect existing policies or ACLs.", - "type": "boolean" - }, - "BlockPublicPolicy": { - "description": "Specifies whether Amazon S3 should block public bucket policies for buckets in this account. Setting this element to TRUE causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy allows public access. Enabling this setting doesn't affect existing bucket policies.", - "type": "boolean" - }, - "IgnorePublicAcls": { - "description": "Specifies whether Amazon S3 should ignore public ACLs for buckets in this account. Setting this element to TRUE causes Amazon S3 to ignore all public ACLs on buckets in this account and any objects that they contain. Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set.", - "type": "boolean" - }, - "RestrictPublicBuckets": { - "description": "Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting this element to TRUE restricts access to this bucket to only AWS services and authorized users within this account if the bucket has a public policy.\nEnabling this setting doesn't affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked.", - "type": "boolean" - } - }, - "type": "object" - }, - "Region": { - "additionalProperties": false, - "properties": { - "Bucket": { - "maxLength": 63, - "minLength": 3, - "pattern": "^[a-z0-9][a-z0-9//.//-]*[a-z0-9]$", - "relationshipRef": { - "propertyPath": "/properties/BucketName", - "typeName": "AWS::S3::Bucket" - }, - "type": "string" - }, - "BucketAccountId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - } - }, - "required": [ - "Bucket" - ], - "type": "object" - } - }, - "description": "AWS::S3::MultiRegionAccessPoint is an Amazon S3 resource type that dynamically routes S3 requests to easily satisfy geographic compliance requirements based on customer-defined routing policies.", - "handlers": { - "create": { - "permissions": [ - "s3:CreateMultiRegionAccessPoint", - "s3:DescribeMultiRegionAccessPointOperation", - "s3:GetMultiRegionAccessPoint" - ] - }, - "delete": { - "permissions": [ - "s3:DeleteMultiRegionAccessPoint", - "s3:DescribeMultiRegionAccessPointOperation", - "s3:GetMultiRegionAccessPoint" - ] - }, - "list": { - "permissions": [ - "s3:ListMultiRegionAccessPoints" - ] - }, - "read": { - "permissions": [ - "s3:GetMultiRegionAccessPoint" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Alias": { - "description": "The alias is a unique identifier to, and is part of the public DNS name for this Multi Region Access Point", - "type": "string" - }, - "CreatedAt": { - "description": "The timestamp of the when the Multi Region Access Point is created", - "type": "string" - }, - "Name": { - "description": "The name you want to assign to this Multi Region Access Point.", - "maxLength": 50, - "minLength": 3, - "pattern": "^[a-z0-9][-a-z0-9]{1,48}[a-z0-9]$", - "type": "string" - }, - "PublicAccessBlockConfiguration": { - "$ref": "#/definitions/PublicAccessBlockConfiguration", - "description": "The PublicAccessBlock configuration that you want to apply to this Multi Region Access Point. You can enable the configuration options in any combination. For more information about when Amazon S3 considers a bucket or object public, see https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status 'The Meaning of Public' in the Amazon Simple Storage Service Developer Guide." - }, - "Regions": { - "description": "The list of buckets that you want to associate this Multi Region Access Point with.", - "items": { - "$ref": "#/definitions/Region", - "description": "The name of the bucket that represents of the region belonging to this Multi Region Access Point." - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Alias", - "/properties/CreatedAt" - ], - "required": [ - "Regions" - ], - "typeName": "AWS::S3::MultiRegionAccessPoint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/PublicAccessBlockConfiguration", + "/properties/Regions" + ], + "definitions": { + "PublicAccessBlockConfiguration": { + "additionalProperties": false, + "properties": { + "BlockPublicAcls": { + "description": "Specifies whether Amazon S3 should block public access control lists (ACLs) for buckets in this account. Setting this element to TRUE causes the following behavior:\n- PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public.\n - PUT Object calls fail if the request includes a public ACL.\n. - PUT Bucket calls fail if the request includes a public ACL.\nEnabling this setting doesn't affect existing policies or ACLs.", + "type": "boolean" + }, + "BlockPublicPolicy": { + "description": "Specifies whether Amazon S3 should block public bucket policies for buckets in this account. Setting this element to TRUE causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy allows public access. Enabling this setting doesn't affect existing bucket policies.", + "type": "boolean" + }, + "IgnorePublicAcls": { + "description": "Specifies whether Amazon S3 should ignore public ACLs for buckets in this account. Setting this element to TRUE causes Amazon S3 to ignore all public ACLs on buckets in this account and any objects that they contain. Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set.", + "type": "boolean" + }, + "RestrictPublicBuckets": { + "description": "Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting this element to TRUE restricts access to this bucket to only AWS services and authorized users within this account if the bucket has a public policy.\nEnabling this setting doesn't affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked.", + "type": "boolean" + } + }, + "type": "object" + }, + "Region": { + "additionalProperties": false, + "properties": { + "Bucket": { + "maxLength": 63, + "minLength": 3, + "pattern": "^[a-z0-9][a-z0-9//.//-]*[a-z0-9]$", + "relationshipRef": { + "propertyPath": "/properties/BucketName", + "typeName": "AWS::S3::Bucket" + }, + "type": "string" + }, + "BucketAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + } + }, + "required": [ + "Bucket" + ], + "type": "object" + } + }, + "description": "AWS::S3::MultiRegionAccessPoint is an Amazon S3 resource type that dynamically routes S3 requests to easily satisfy geographic compliance requirements based on customer-defined routing policies.", + "handlers": { + "create": { + "permissions": [ + "s3:CreateMultiRegionAccessPoint", + "s3:DescribeMultiRegionAccessPointOperation", + "s3:GetMultiRegionAccessPoint" + ] + }, + "delete": { + "permissions": [ + "s3:DeleteMultiRegionAccessPoint", + "s3:DescribeMultiRegionAccessPointOperation", + "s3:GetMultiRegionAccessPoint" + ] + }, + "list": { + "permissions": [ + "s3:ListMultiRegionAccessPoints" + ] + }, + "read": { + "permissions": [ + "s3:GetMultiRegionAccessPoint" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Alias": { + "description": "The alias is a unique identifier to, and is part of the public DNS name for this Multi Region Access Point", + "type": "string" + }, + "CreatedAt": { + "description": "The timestamp of the when the Multi Region Access Point is created", + "type": "string" + }, + "Name": { + "description": "The name you want to assign to this Multi Region Access Point.", + "maxLength": 50, + "minLength": 3, + "pattern": "^[a-z0-9][-a-z0-9]{1,48}[a-z0-9]$", + "type": "string" + }, + "PublicAccessBlockConfiguration": { + "$ref": "#/definitions/PublicAccessBlockConfiguration", + "description": "The PublicAccessBlock configuration that you want to apply to this Multi Region Access Point. You can enable the configuration options in any combination. For more information about when Amazon S3 considers a bucket or object public, see https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status 'The Meaning of Public' in the Amazon Simple Storage Service Developer Guide." + }, + "Regions": { + "description": "The list of buckets that you want to associate this Multi Region Access Point with.", + "items": { + "$ref": "#/definitions/Region", + "description": "The name of the bucket that represents of the region belonging to this Multi Region Access Point." + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Alias", + "/properties/CreatedAt" + ], + "required": [ + "Regions" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::S3::MultiRegionAccessPoint" +} diff --git a/src/schema/aws-s3-multiregionaccesspointpolicy.json b/src/schema/aws-s3-multiregionaccesspointpolicy.json index ccee2b8b..c9494aaf 100644 --- a/src/schema/aws-s3-multiregionaccesspointpolicy.json +++ b/src/schema/aws-s3-multiregionaccesspointpolicy.json @@ -1,79 +1,82 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MrapName" - ], - "description": "The policy to be attached to a Multi Region Access Point", - "handlers": { - "create": { - "permissions": [ - "s3:PutMultiRegionAccessPointPolicy", - "s3:DescribeMultiRegionAccessPointOperation" - ] - }, - "delete": { - "permissions": [ - "s3:GetMultiRegionAccessPointPolicy", - "s3:GetMultiRegionAccessPoint" - ] - }, - "list": { - "permissions": [] - }, - "read": { - "permissions": [ - "s3:GetMultiRegionAccessPointPolicy", - "s3:GetMultiRegionAccessPointPolicyStatus" - ] - }, - "update": { - "permissions": [ - "s3:PutMultiRegionAccessPointPolicy", - "s3:DescribeMultiRegionAccessPointOperation" - ] - } - }, - "primaryIdentifier": [ - "/properties/MrapName" - ], - "properties": { - "MrapName": { - "description": "The name of the Multi Region Access Point to apply policy", - "maxLength": 50, - "minLength": 3, - "pattern": "^[a-z0-9][-a-z0-9]{1,48}[a-z0-9]$", - "type": "string" - }, - "Policy": { - "description": "Policy document to apply to a Multi Region Access Point", - "type": "object" - }, - "PolicyStatus": { - "additionalProperties": false, - "description": "The Policy Status associated with this Multi Region Access Point", - "properties": { - "IsPublic": { - "description": "Specifies whether the policy is public or not.", - "enum": [ - "true", - "false" - ], - "type": "string" - } - }, - "required": [ - "IsPublic" - ], - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/PolicyStatus", - "/properties/PolicyStatus/IsPublic" - ], - "required": [ - "Policy", - "MrapName" - ], - "typeName": "AWS::S3::MultiRegionAccessPointPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MrapName" + ], + "description": "The policy to be attached to a Multi Region Access Point", + "handlers": { + "create": { + "permissions": [ + "s3:PutMultiRegionAccessPointPolicy", + "s3:DescribeMultiRegionAccessPointOperation" + ] + }, + "delete": { + "permissions": [ + "s3:GetMultiRegionAccessPointPolicy", + "s3:GetMultiRegionAccessPoint" + ] + }, + "list": { + "permissions": [] + }, + "read": { + "permissions": [ + "s3:GetMultiRegionAccessPointPolicy", + "s3:GetMultiRegionAccessPointPolicyStatus" + ] + }, + "update": { + "permissions": [ + "s3:PutMultiRegionAccessPointPolicy", + "s3:DescribeMultiRegionAccessPointOperation" + ] + } + }, + "primaryIdentifier": [ + "/properties/MrapName" + ], + "properties": { + "MrapName": { + "description": "The name of the Multi Region Access Point to apply policy", + "maxLength": 50, + "minLength": 3, + "pattern": "^[a-z0-9][-a-z0-9]{1,48}[a-z0-9]$", + "type": "string" + }, + "Policy": { + "description": "Policy document to apply to a Multi Region Access Point", + "type": "object" + }, + "PolicyStatus": { + "additionalProperties": false, + "description": "The Policy Status associated with this Multi Region Access Point", + "properties": { + "IsPublic": { + "description": "Specifies whether the policy is public or not.", + "enum": [ + "true", + "false" + ], + "type": "string" + } + }, + "required": [ + "IsPublic" + ], + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/PolicyStatus", + "/properties/PolicyStatus/IsPublic" + ], + "required": [ + "Policy", + "MrapName" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::S3::MultiRegionAccessPointPolicy" +} diff --git a/src/schema/aws-s3-storagelens.json b/src/schema/aws-s3-storagelens.json index 61155ff2..38a0f48d 100644 --- a/src/schema/aws-s3-storagelens.json +++ b/src/schema/aws-s3-storagelens.json @@ -1,489 +1,489 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StorageLensConfiguration/Id" - ], - "definitions": { - "AccountLevel": { - "additionalProperties": false, - "description": "Account-level metrics configurations.", - "properties": { - "ActivityMetrics": { - "$ref": "#/definitions/ActivityMetrics" - }, - "AdvancedCostOptimizationMetrics": { - "$ref": "#/definitions/AdvancedCostOptimizationMetrics" - }, - "AdvancedDataProtectionMetrics": { - "$ref": "#/definitions/AdvancedDataProtectionMetrics" - }, - "BucketLevel": { - "$ref": "#/definitions/BucketLevel" - }, - "DetailedStatusCodesMetrics": { - "$ref": "#/definitions/DetailedStatusCodesMetrics" - }, - "StorageLensGroupLevel": { - "$ref": "#/definitions/StorageLensGroupLevel" - } - }, - "required": [ - "BucketLevel" - ], - "type": "object" - }, - "ActivityMetrics": { - "additionalProperties": false, - "description": "Enables activity metrics.", - "properties": { - "IsEnabled": { - "description": "Specifies whether activity metrics are enabled or disabled.", - "type": "boolean" - } - }, - "type": "object" - }, - "AdvancedCostOptimizationMetrics": { - "additionalProperties": false, - "description": "Enables advanced cost optimization metrics.", - "properties": { - "IsEnabled": { - "description": "Specifies whether advanced cost optimization metrics are enabled or disabled.", - "type": "boolean" - } - }, - "type": "object" - }, - "AdvancedDataProtectionMetrics": { - "additionalProperties": false, - "description": "Enables advanced data protection metrics.", - "properties": { - "IsEnabled": { - "description": "Specifies whether advanced data protection metrics are enabled or disabled.", - "type": "boolean" - } - }, - "type": "object" - }, - "Arn": { - "description": "The Amazon Resource Name (ARN) of the specified resource.", - "type": "string" - }, - "AwsOrg": { - "additionalProperties": false, - "description": "The AWS Organizations ARN to use in the Amazon S3 Storage Lens configuration.", - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - } - }, - "required": [ - "Arn" - ], - "type": "object" - }, - "BucketLevel": { - "additionalProperties": false, - "description": "Bucket-level metrics configurations.", - "properties": { - "ActivityMetrics": { - "$ref": "#/definitions/ActivityMetrics" - }, - "AdvancedCostOptimizationMetrics": { - "$ref": "#/definitions/AdvancedCostOptimizationMetrics" - }, - "AdvancedDataProtectionMetrics": { - "$ref": "#/definitions/AdvancedDataProtectionMetrics" - }, - "DetailedStatusCodesMetrics": { - "$ref": "#/definitions/DetailedStatusCodesMetrics" - }, - "PrefixLevel": { - "$ref": "#/definitions/PrefixLevel" - } - }, - "type": "object" - }, - "BucketsAndRegions": { - "additionalProperties": false, - "description": "S3 buckets and Regions to include/exclude in the Amazon S3 Storage Lens configuration.", - "properties": { - "Buckets": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Arn" - }, - "type": "array", - "uniqueItems": true - }, - "Regions": { - "insertionOrder": false, - "items": { - "description": "An AWS Region.", - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "CloudWatchMetrics": { - "additionalProperties": false, - "description": "CloudWatch metrics settings for the Amazon S3 Storage Lens metrics export.", - "properties": { - "IsEnabled": { - "description": "Specifies whether CloudWatch metrics are enabled or disabled.", - "type": "boolean" - } - }, - "required": [ - "IsEnabled" - ], - "type": "object" - }, - "DataExport": { - "additionalProperties": false, - "description": "Specifies how Amazon S3 Storage Lens metrics should be exported.", - "properties": { - "CloudWatchMetrics": { - "$ref": "#/definitions/CloudWatchMetrics" - }, - "S3BucketDestination": { - "$ref": "#/definitions/S3BucketDestination" - } - }, - "type": "object" - }, - "DetailedStatusCodesMetrics": { - "additionalProperties": false, - "description": "Enables detailed status codes metrics.", - "properties": { - "IsEnabled": { - "description": "Specifies whether detailed status codes metrics are enabled or disabled.", - "type": "boolean" - } - }, - "type": "object" - }, - "Encryption": { - "description": "Configures the server-side encryption for Amazon S3 Storage Lens report files with either S3-managed keys (SSE-S3) or KMS-managed keys (SSE-KMS).", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "SSES3": { - "additionalProperties": false, - "description": "S3 default server-side encryption.", - "type": "object" - } - }, - "required": [ - "SSES3" - ] - }, - { - "additionalProperties": false, - "properties": { - "SSEKMS": { - "$ref": "#/definitions/SSEKMS" - } - }, - "required": [ - "SSEKMS" - ] - } - ], - "type": "object" - }, - "Id": { - "description": "The ID that identifies the Amazon S3 Storage Lens configuration.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\-_.]+$", - "type": "string" - }, - "PrefixLevel": { - "additionalProperties": false, - "description": "Prefix-level metrics configurations.", - "properties": { - "StorageMetrics": { - "$ref": "#/definitions/PrefixLevelStorageMetrics" - } - }, - "required": [ - "StorageMetrics" - ], - "type": "object" - }, - "PrefixLevelStorageMetrics": { - "additionalProperties": false, - "properties": { - "IsEnabled": { - "description": "Specifies whether prefix-level storage metrics are enabled or disabled.", - "type": "boolean" - }, - "SelectionCriteria": { - "$ref": "#/definitions/SelectionCriteria" - } - }, - "type": "object" - }, - "S3BucketDestination": { - "additionalProperties": false, - "description": "S3 bucket destination settings for the Amazon S3 Storage Lens metrics export.", - "properties": { - "AccountId": { - "description": "The AWS account ID that owns the destination S3 bucket.", - "type": "string" - }, - "Arn": { - "description": "The ARN of the bucket to which Amazon S3 Storage Lens exports will be placed.", - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::S3::Bucket" - }, - "type": "string" - }, - "Encryption": { - "$ref": "#/definitions/Encryption" - }, - "Format": { - "description": "Specifies the file format to use when exporting Amazon S3 Storage Lens metrics export.", - "enum": [ - "CSV", - "Parquet" - ], - "type": "string" - }, - "OutputSchemaVersion": { - "description": "The version of the output schema to use when exporting Amazon S3 Storage Lens metrics.", - "enum": [ - "V_1" - ], - "type": "string" - }, - "Prefix": { - "description": "The prefix to use for Amazon S3 Storage Lens export.", - "type": "string" - } - }, - "required": [ - "OutputSchemaVersion", - "Format", - "AccountId", - "Arn" - ], - "type": "object" - }, - "SSEKMS": { - "additionalProperties": false, - "description": "AWS KMS server-side encryption.", - "properties": { - "KeyId": { - "description": "The ARN of the KMS key to use for encryption.", - "type": "string" - } - }, - "required": [ - "KeyId" - ], - "type": "object" - }, - "SelectionCriteria": { - "additionalProperties": false, - "description": "Selection criteria for prefix-level metrics.", - "properties": { - "Delimiter": { - "description": "Delimiter to divide S3 key into hierarchy of prefixes.", - "type": "string" - }, - "MaxDepth": { - "description": "Max depth of prefixes of S3 key that Amazon S3 Storage Lens will analyze.", - "type": "integer" - }, - "MinStorageBytesPercentage": { - "description": "The minimum storage bytes threshold for the prefixes to be included in the analysis.", - "type": "number" - } - }, - "type": "object" - }, - "StorageLensConfiguration": { - "additionalProperties": false, - "description": "Specifies the details of Amazon S3 Storage Lens configuration.", - "properties": { - "AccountLevel": { - "$ref": "#/definitions/AccountLevel" - }, - "AwsOrg": { - "$ref": "#/definitions/AwsOrg" - }, - "DataExport": { - "$ref": "#/definitions/DataExport" - }, - "Exclude": { - "$ref": "#/definitions/BucketsAndRegions" - }, - "Id": { - "$ref": "#/definitions/Id" - }, - "Include": { - "$ref": "#/definitions/BucketsAndRegions" - }, - "IsEnabled": { - "description": "Specifies whether the Amazon S3 Storage Lens configuration is enabled or disabled.", - "type": "boolean" - }, - "StorageLensArn": { - "description": "The ARN for the Amazon S3 Storage Lens configuration.", - "type": "string" - } - }, - "required": [ - "Id", - "AccountLevel", - "IsEnabled" - ], - "type": "object" - }, - "StorageLensGroupArn": { - "description": "The ARN for the Amazon S3 Storage Lens Group configuration.", - "type": "string" - }, - "StorageLensGroupLevel": { - "additionalProperties": false, - "description": "Specifies the details of Amazon S3 Storage Lens Group configuration.", - "properties": { - "StorageLensGroupSelectionCriteria": { - "$ref": "#/definitions/StorageLensGroupSelectionCriteria" - } - }, - "type": "object" - }, - "StorageLensGroupSelectionCriteria": { - "additionalProperties": false, - "description": "Selection criteria for Storage Lens Group level metrics", - "properties": { - "Exclude": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/StorageLensGroupArn" - }, - "type": "array", - "uniqueItems": true - }, - "Include": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/StorageLensGroupArn" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "pattern": "^(?!aws:.*)[a-zA-Z0-9\\s\\_\\.\\/\\=\\+\\-\\@\\:]+$", - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "pattern": "^(?!aws:.*)[a-zA-Z0-9\\s\\_\\.\\/\\=\\+\\-\\@\\:]+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::S3::StorageLens resource is an Amazon S3 resource type that you can use to create Storage Lens configurations.", - "handlers": { - "create": { - "permissions": [ - "s3:PutStorageLensConfiguration", - "s3:PutStorageLensConfigurationTagging", - "s3:GetStorageLensConfiguration", - "s3:GetStorageLensConfigurationTagging", - "organizations:DescribeOrganization", - "organizations:ListAccounts", - "organizations:ListAWSServiceAccessForOrganization", - "organizations:ListDelegatedAdministrators", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "s3:DeleteStorageLensConfiguration", - "s3:DeleteStorageLensConfigurationTagging" - ] - }, - "list": { - "permissions": [ - "s3:ListStorageLensConfigurations" - ] - }, - "read": { - "permissions": [ - "s3:GetStorageLensConfiguration", - "s3:GetStorageLensConfigurationTagging" - ] - }, - "update": { - "permissions": [ - "s3:PutStorageLensConfiguration", - "s3:PutStorageLensConfigurationTagging", - "s3:GetStorageLensConfiguration", - "s3:GetStorageLensConfigurationTagging", - "organizations:DescribeOrganization", - "organizations:ListAccounts", - "organizations:ListAWSServiceAccessForOrganization", - "organizations:ListDelegatedAdministrators", - "iam:CreateServiceLinkedRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/StorageLensConfiguration/Id" - ], - "properties": { - "StorageLensConfiguration": { - "$ref": "#/definitions/StorageLensConfiguration" - }, - "Tags": { - "description": "A set of tags (key-value pairs) for this Amazon S3 Storage Lens configuration.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/StorageLensConfiguration/StorageLensArn" - ], - "required": [ - "StorageLensConfiguration" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3-storagelens", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::S3::StorageLens" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StorageLensConfiguration/Id" + ], + "definitions": { + "AccountLevel": { + "additionalProperties": false, + "description": "Account-level metrics configurations.", + "properties": { + "ActivityMetrics": { + "$ref": "#/definitions/ActivityMetrics" + }, + "AdvancedCostOptimizationMetrics": { + "$ref": "#/definitions/AdvancedCostOptimizationMetrics" + }, + "AdvancedDataProtectionMetrics": { + "$ref": "#/definitions/AdvancedDataProtectionMetrics" + }, + "BucketLevel": { + "$ref": "#/definitions/BucketLevel" + }, + "DetailedStatusCodesMetrics": { + "$ref": "#/definitions/DetailedStatusCodesMetrics" + }, + "StorageLensGroupLevel": { + "$ref": "#/definitions/StorageLensGroupLevel" + } + }, + "required": [ + "BucketLevel" + ], + "type": "object" + }, + "ActivityMetrics": { + "additionalProperties": false, + "description": "Enables activity metrics.", + "properties": { + "IsEnabled": { + "description": "Specifies whether activity metrics are enabled or disabled.", + "type": "boolean" + } + }, + "type": "object" + }, + "AdvancedCostOptimizationMetrics": { + "additionalProperties": false, + "description": "Enables advanced cost optimization metrics.", + "properties": { + "IsEnabled": { + "description": "Specifies whether advanced cost optimization metrics are enabled or disabled.", + "type": "boolean" + } + }, + "type": "object" + }, + "AdvancedDataProtectionMetrics": { + "additionalProperties": false, + "description": "Enables advanced data protection metrics.", + "properties": { + "IsEnabled": { + "description": "Specifies whether advanced data protection metrics are enabled or disabled.", + "type": "boolean" + } + }, + "type": "object" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the specified resource.", + "type": "string" + }, + "AwsOrg": { + "additionalProperties": false, + "description": "The AWS Organizations ARN to use in the Amazon S3 Storage Lens configuration.", + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "BucketLevel": { + "additionalProperties": false, + "description": "Bucket-level metrics configurations.", + "properties": { + "ActivityMetrics": { + "$ref": "#/definitions/ActivityMetrics" + }, + "AdvancedCostOptimizationMetrics": { + "$ref": "#/definitions/AdvancedCostOptimizationMetrics" + }, + "AdvancedDataProtectionMetrics": { + "$ref": "#/definitions/AdvancedDataProtectionMetrics" + }, + "DetailedStatusCodesMetrics": { + "$ref": "#/definitions/DetailedStatusCodesMetrics" + }, + "PrefixLevel": { + "$ref": "#/definitions/PrefixLevel" + } + }, + "type": "object" + }, + "BucketsAndRegions": { + "additionalProperties": false, + "description": "S3 buckets and Regions to include/exclude in the Amazon S3 Storage Lens configuration.", + "properties": { + "Buckets": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Arn" + }, + "type": "array", + "uniqueItems": true + }, + "Regions": { + "insertionOrder": false, + "items": { + "description": "An AWS Region.", + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "CloudWatchMetrics": { + "additionalProperties": false, + "description": "CloudWatch metrics settings for the Amazon S3 Storage Lens metrics export.", + "properties": { + "IsEnabled": { + "description": "Specifies whether CloudWatch metrics are enabled or disabled.", + "type": "boolean" + } + }, + "required": [ + "IsEnabled" + ], + "type": "object" + }, + "DataExport": { + "additionalProperties": false, + "description": "Specifies how Amazon S3 Storage Lens metrics should be exported.", + "properties": { + "CloudWatchMetrics": { + "$ref": "#/definitions/CloudWatchMetrics" + }, + "S3BucketDestination": { + "$ref": "#/definitions/S3BucketDestination" + } + }, + "type": "object" + }, + "DetailedStatusCodesMetrics": { + "additionalProperties": false, + "description": "Enables detailed status codes metrics.", + "properties": { + "IsEnabled": { + "description": "Specifies whether detailed status codes metrics are enabled or disabled.", + "type": "boolean" + } + }, + "type": "object" + }, + "Encryption": { + "description": "Configures the server-side encryption for Amazon S3 Storage Lens report files with either S3-managed keys (SSE-S3) or KMS-managed keys (SSE-KMS).", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "SSES3": { + "additionalProperties": false, + "description": "S3 default server-side encryption.", + "type": "object" + } + }, + "required": [ + "SSES3" + ] + }, + { + "additionalProperties": false, + "properties": { + "SSEKMS": { + "$ref": "#/definitions/SSEKMS" + } + }, + "required": [ + "SSEKMS" + ] + } + ], + "type": "object" + }, + "Id": { + "description": "The ID that identifies the Amazon S3 Storage Lens configuration.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "PrefixLevel": { + "additionalProperties": false, + "description": "Prefix-level metrics configurations.", + "properties": { + "StorageMetrics": { + "$ref": "#/definitions/PrefixLevelStorageMetrics" + } + }, + "required": [ + "StorageMetrics" + ], + "type": "object" + }, + "PrefixLevelStorageMetrics": { + "additionalProperties": false, + "properties": { + "IsEnabled": { + "description": "Specifies whether prefix-level storage metrics are enabled or disabled.", + "type": "boolean" + }, + "SelectionCriteria": { + "$ref": "#/definitions/SelectionCriteria" + } + }, + "type": "object" + }, + "S3BucketDestination": { + "additionalProperties": false, + "description": "S3 bucket destination settings for the Amazon S3 Storage Lens metrics export.", + "properties": { + "AccountId": { + "description": "The AWS account ID that owns the destination S3 bucket.", + "type": "string" + }, + "Arn": { + "description": "The ARN of the bucket to which Amazon S3 Storage Lens exports will be placed.", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::S3::Bucket" + }, + "type": "string" + }, + "Encryption": { + "$ref": "#/definitions/Encryption" + }, + "Format": { + "description": "Specifies the file format to use when exporting Amazon S3 Storage Lens metrics export.", + "enum": [ + "CSV", + "Parquet" + ], + "type": "string" + }, + "OutputSchemaVersion": { + "description": "The version of the output schema to use when exporting Amazon S3 Storage Lens metrics.", + "enum": [ + "V_1" + ], + "type": "string" + }, + "Prefix": { + "description": "The prefix to use for Amazon S3 Storage Lens export.", + "type": "string" + } + }, + "required": [ + "OutputSchemaVersion", + "Format", + "AccountId", + "Arn" + ], + "type": "object" + }, + "SSEKMS": { + "additionalProperties": false, + "description": "AWS KMS server-side encryption.", + "properties": { + "KeyId": { + "description": "The ARN of the KMS key to use for encryption.", + "type": "string" + } + }, + "required": [ + "KeyId" + ], + "type": "object" + }, + "SelectionCriteria": { + "additionalProperties": false, + "description": "Selection criteria for prefix-level metrics.", + "properties": { + "Delimiter": { + "description": "Delimiter to divide S3 key into hierarchy of prefixes.", + "type": "string" + }, + "MaxDepth": { + "description": "Max depth of prefixes of S3 key that Amazon S3 Storage Lens will analyze.", + "type": "integer" + }, + "MinStorageBytesPercentage": { + "description": "The minimum storage bytes threshold for the prefixes to be included in the analysis.", + "type": "number" + } + }, + "type": "object" + }, + "StorageLensConfiguration": { + "additionalProperties": false, + "description": "Specifies the details of Amazon S3 Storage Lens configuration.", + "properties": { + "AccountLevel": { + "$ref": "#/definitions/AccountLevel" + }, + "AwsOrg": { + "$ref": "#/definitions/AwsOrg" + }, + "DataExport": { + "$ref": "#/definitions/DataExport" + }, + "Exclude": { + "$ref": "#/definitions/BucketsAndRegions" + }, + "Id": { + "$ref": "#/definitions/Id" + }, + "Include": { + "$ref": "#/definitions/BucketsAndRegions" + }, + "IsEnabled": { + "description": "Specifies whether the Amazon S3 Storage Lens configuration is enabled or disabled.", + "type": "boolean" + }, + "StorageLensArn": { + "description": "The ARN for the Amazon S3 Storage Lens configuration.", + "type": "string" + } + }, + "required": [ + "Id", + "AccountLevel", + "IsEnabled" + ], + "type": "object" + }, + "StorageLensGroupArn": { + "description": "The ARN for the Amazon S3 Storage Lens Group configuration.", + "type": "string" + }, + "StorageLensGroupLevel": { + "additionalProperties": false, + "description": "Specifies the details of Amazon S3 Storage Lens Group configuration.", + "properties": { + "StorageLensGroupSelectionCriteria": { + "$ref": "#/definitions/StorageLensGroupSelectionCriteria" + } + }, + "type": "object" + }, + "StorageLensGroupSelectionCriteria": { + "additionalProperties": false, + "description": "Selection criteria for Storage Lens Group level metrics", + "properties": { + "Exclude": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StorageLensGroupArn" + }, + "type": "array", + "uniqueItems": true + }, + "Include": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StorageLensGroupArn" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 127, + "minLength": 1, + "pattern": "^(?!aws:.*)[a-zA-Z0-9\\s\\_\\.\\/\\=\\+\\-\\@\\:]+$", + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 1, + "pattern": "^(?!aws:.*)[a-zA-Z0-9\\s\\_\\.\\/\\=\\+\\-\\@\\:]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::S3::StorageLens resource is an Amazon S3 resource type that you can use to create Storage Lens configurations.", + "handlers": { + "create": { + "permissions": [ + "s3:PutStorageLensConfiguration", + "s3:PutStorageLensConfigurationTagging", + "s3:GetStorageLensConfiguration", + "s3:GetStorageLensConfigurationTagging", + "organizations:DescribeOrganization", + "organizations:ListAccounts", + "organizations:ListAWSServiceAccessForOrganization", + "organizations:ListDelegatedAdministrators", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "s3:DeleteStorageLensConfiguration", + "s3:DeleteStorageLensConfigurationTagging" + ] + }, + "list": { + "permissions": [ + "s3:ListStorageLensConfigurations" + ] + }, + "read": { + "permissions": [ + "s3:GetStorageLensConfiguration", + "s3:GetStorageLensConfigurationTagging" + ] + }, + "update": { + "permissions": [ + "s3:PutStorageLensConfiguration", + "s3:PutStorageLensConfigurationTagging", + "s3:GetStorageLensConfiguration", + "s3:GetStorageLensConfigurationTagging", + "organizations:DescribeOrganization", + "organizations:ListAccounts", + "organizations:ListAWSServiceAccessForOrganization", + "organizations:ListDelegatedAdministrators", + "iam:CreateServiceLinkedRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/StorageLensConfiguration/Id" + ], + "properties": { + "StorageLensConfiguration": { + "$ref": "#/definitions/StorageLensConfiguration" + }, + "Tags": { + "description": "A set of tags (key-value pairs) for this Amazon S3 Storage Lens configuration.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/StorageLensConfiguration/StorageLensArn" + ], + "required": [ + "StorageLensConfiguration" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3-storagelens", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::S3::StorageLens" +} diff --git a/src/schema/aws-s3-storagelensgroup.json b/src/schema/aws-s3-storagelensgroup.json index 8364440f..ecb2c348 100644 --- a/src/schema/aws-s3-storagelensgroup.json +++ b/src/schema/aws-s3-storagelensgroup.json @@ -1,252 +1,252 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "And": { - "additionalProperties": false, - "description": "The Storage Lens group will include objects that match all of the specified filter values.", - "minProperties": 2, - "properties": { - "MatchAnyPrefix": { - "$ref": "#/definitions/MatchAnyPrefix" - }, - "MatchAnySuffix": { - "$ref": "#/definitions/MatchAnySuffix" - }, - "MatchAnyTag": { - "$ref": "#/definitions/MatchAnyTag" - }, - "MatchObjectAge": { - "$ref": "#/definitions/MatchObjectAge" - }, - "MatchObjectSize": { - "$ref": "#/definitions/MatchObjectSize" - } - }, - "type": "object", - "uniqueItems": true - }, - "Filter": { - "additionalProperties": false, - "description": "Sets the Storage Lens Group filter.", - "properties": { - "And": { - "$ref": "#/definitions/And" - }, - "MatchAnyPrefix": { - "$ref": "#/definitions/MatchAnyPrefix" - }, - "MatchAnySuffix": { - "$ref": "#/definitions/MatchAnySuffix" - }, - "MatchAnyTag": { - "$ref": "#/definitions/MatchAnyTag" - }, - "MatchObjectAge": { - "$ref": "#/definitions/MatchObjectAge" - }, - "MatchObjectSize": { - "$ref": "#/definitions/MatchObjectSize" - }, - "Or": { - "$ref": "#/definitions/Or" - } - }, - "type": "object" - }, - "MatchAnyPrefix": { - "description": "Filter to match any of the specified prefixes.", - "insertionOrder": false, - "items": { - "maxLength": 1024, - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "MatchAnySuffix": { - "description": "Filter to match any of the specified suffixes.", - "insertionOrder": false, - "items": { - "maxLength": 1024, - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "MatchAnyTag": { - "description": "Filter to match any of the specified object tags.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "MatchObjectAge": { - "additionalProperties": false, - "description": "Filter to match all of the specified values for the minimum and maximum object age.", - "properties": { - "DaysGreaterThan": { - "description": "Minimum object age to which the rule applies.", - "minimum": 1, - "type": "integer" - }, - "DaysLessThan": { - "description": "Maximum object age to which the rule applies.", - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "MatchObjectSize": { - "additionalProperties": false, - "description": "Filter to match all of the specified values for the minimum and maximum object size.", - "properties": { - "BytesGreaterThan": { - "description": "Minimum object size to which the rule applies.", - "format": "int64", - "minimum": 1, - "type": "integer" - }, - "BytesLessThan": { - "description": "Maximum object size to which the rule applies.", - "format": "int64", - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "Name": { - "description": "The name that identifies the Amazon S3 Storage Lens Group.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9\\-_]+$", - "type": "string" - }, - "Or": { - "additionalProperties": false, - "description": "The Storage Lens group will include objects that match any of the specified filter values.", - "minProperties": 2, - "properties": { - "MatchAnyPrefix": { - "$ref": "#/definitions/MatchAnyPrefix" - }, - "MatchAnySuffix": { - "$ref": "#/definitions/MatchAnySuffix" - }, - "MatchAnyTag": { - "$ref": "#/definitions/MatchAnyTag" - }, - "MatchObjectAge": { - "$ref": "#/definitions/MatchObjectAge" - }, - "MatchObjectSize": { - "$ref": "#/definitions/MatchObjectSize" - } - }, - "type": "object", - "uniqueItems": true - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::S3::StorageLensGroup resource is an Amazon S3 resource type that you can use to create Storage Lens Group.", - "handlers": { - "create": { - "permissions": [ - "s3:CreateStorageLensGroup", - "s3:GetStorageLensGroup", - "s3:TagResource", - "s3:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "s3:DeleteStorageLensGroup" - ] - }, - "list": { - "permissions": [ - "s3:ListStorageLensGroups" - ] - }, - "read": { - "permissions": [ - "s3:GetStorageLensGroup", - "s3:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "s3:GetStorageLensGroup", - "s3:UpdateStorageLensGroup", - "s3:TagResource", - "s3:UntagResource", - "s3:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Filter": { - "$ref": "#/definitions/Filter" - }, - "Name": { - "$ref": "#/definitions/Name" - }, - "StorageLensGroupArn": { - "description": "The ARN for the Amazon S3 Storage Lens Group.", - "type": "string" - }, - "Tags": { - "description": "A set of tags (key-value pairs) for this Amazon S3 Storage Lens Group.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/StorageLensGroupArn" - ], - "required": [ - "Name", - "Filter" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3-storagelensgroup", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::S3::StorageLensGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "And": { + "additionalProperties": false, + "description": "The Storage Lens group will include objects that match all of the specified filter values.", + "minProperties": 2, + "properties": { + "MatchAnyPrefix": { + "$ref": "#/definitions/MatchAnyPrefix" + }, + "MatchAnySuffix": { + "$ref": "#/definitions/MatchAnySuffix" + }, + "MatchAnyTag": { + "$ref": "#/definitions/MatchAnyTag" + }, + "MatchObjectAge": { + "$ref": "#/definitions/MatchObjectAge" + }, + "MatchObjectSize": { + "$ref": "#/definitions/MatchObjectSize" + } + }, + "type": "object", + "uniqueItems": true + }, + "Filter": { + "additionalProperties": false, + "description": "Sets the Storage Lens Group filter.", + "properties": { + "And": { + "$ref": "#/definitions/And" + }, + "MatchAnyPrefix": { + "$ref": "#/definitions/MatchAnyPrefix" + }, + "MatchAnySuffix": { + "$ref": "#/definitions/MatchAnySuffix" + }, + "MatchAnyTag": { + "$ref": "#/definitions/MatchAnyTag" + }, + "MatchObjectAge": { + "$ref": "#/definitions/MatchObjectAge" + }, + "MatchObjectSize": { + "$ref": "#/definitions/MatchObjectSize" + }, + "Or": { + "$ref": "#/definitions/Or" + } + }, + "type": "object" + }, + "MatchAnyPrefix": { + "description": "Filter to match any of the specified prefixes.", + "insertionOrder": false, + "items": { + "maxLength": 1024, + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "MatchAnySuffix": { + "description": "Filter to match any of the specified suffixes.", + "insertionOrder": false, + "items": { + "maxLength": 1024, + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "MatchAnyTag": { + "description": "Filter to match any of the specified object tags.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "MatchObjectAge": { + "additionalProperties": false, + "description": "Filter to match all of the specified values for the minimum and maximum object age.", + "properties": { + "DaysGreaterThan": { + "description": "Minimum object age to which the rule applies.", + "minimum": 1, + "type": "integer" + }, + "DaysLessThan": { + "description": "Maximum object age to which the rule applies.", + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "MatchObjectSize": { + "additionalProperties": false, + "description": "Filter to match all of the specified values for the minimum and maximum object size.", + "properties": { + "BytesGreaterThan": { + "description": "Minimum object size to which the rule applies.", + "format": "int64", + "minimum": 1, + "type": "integer" + }, + "BytesLessThan": { + "description": "Maximum object size to which the rule applies.", + "format": "int64", + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "Name": { + "description": "The name that identifies the Amazon S3 Storage Lens Group.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_]+$", + "type": "string" + }, + "Or": { + "additionalProperties": false, + "description": "The Storage Lens group will include objects that match any of the specified filter values.", + "minProperties": 2, + "properties": { + "MatchAnyPrefix": { + "$ref": "#/definitions/MatchAnyPrefix" + }, + "MatchAnySuffix": { + "$ref": "#/definitions/MatchAnySuffix" + }, + "MatchAnyTag": { + "$ref": "#/definitions/MatchAnyTag" + }, + "MatchObjectAge": { + "$ref": "#/definitions/MatchObjectAge" + }, + "MatchObjectSize": { + "$ref": "#/definitions/MatchObjectSize" + } + }, + "type": "object", + "uniqueItems": true + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::S3::StorageLensGroup resource is an Amazon S3 resource type that you can use to create Storage Lens Group.", + "handlers": { + "create": { + "permissions": [ + "s3:CreateStorageLensGroup", + "s3:GetStorageLensGroup", + "s3:TagResource", + "s3:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "s3:DeleteStorageLensGroup" + ] + }, + "list": { + "permissions": [ + "s3:ListStorageLensGroups" + ] + }, + "read": { + "permissions": [ + "s3:GetStorageLensGroup", + "s3:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "s3:GetStorageLensGroup", + "s3:UpdateStorageLensGroup", + "s3:TagResource", + "s3:UntagResource", + "s3:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Filter": { + "$ref": "#/definitions/Filter" + }, + "Name": { + "$ref": "#/definitions/Name" + }, + "StorageLensGroupArn": { + "description": "The ARN for the Amazon S3 Storage Lens Group.", + "type": "string" + }, + "Tags": { + "description": "A set of tags (key-value pairs) for this Amazon S3 Storage Lens Group.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/StorageLensGroupArn" + ], + "required": [ + "Name", + "Filter" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3-storagelensgroup", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::S3::StorageLensGroup" +} diff --git a/src/schema/aws-s3express-bucketpolicy.json b/src/schema/aws-s3express-bucketpolicy.json index d99a03b7..411094b4 100644 --- a/src/schema/aws-s3express-bucketpolicy.json +++ b/src/schema/aws-s3express-bucketpolicy.json @@ -1,65 +1,65 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Bucket" - ], - "description": "Resource Type definition for AWS::S3Express::BucketPolicy.", - "handlers": { - "create": { - "permissions": [ - "s3express:GetBucketPolicy", - "s3express:PutBucketPolicy" - ] - }, - "delete": { - "permissions": [ - "s3express:GetBucketPolicy", - "s3express:DeleteBucketPolicy" - ] - }, - "list": { - "permissions": [ - "s3express:GetBucketPolicy", - "s3express:ListAllMyDirectoryBuckets" - ] - }, - "read": { - "permissions": [ - "s3express:GetBucketPolicy" - ] - }, - "update": { - "permissions": [ - "s3express:GetBucketPolicy", - "s3express:PutBucketPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Bucket" - ], - "properties": { - "Bucket": { - "description": "The name of the S3 directory bucket to which the policy applies.", - "type": "string" - }, - "PolicyDocument": { - "description": "A policy document containing permissions to add to the specified bucket. In IAM, you must provide policy documents in JSON format. However, in CloudFormation you can provide the policy in JSON or YAML format because CloudFormation converts YAML to JSON before submitting it to IAM.", - "type": [ - "object", - "string" - ] - } - }, - "required": [ - "Bucket", - "PolicyDocument" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::S3Express::BucketPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Bucket" + ], + "description": "Resource Type definition for AWS::S3Express::BucketPolicy.", + "handlers": { + "create": { + "permissions": [ + "s3express:GetBucketPolicy", + "s3express:PutBucketPolicy" + ] + }, + "delete": { + "permissions": [ + "s3express:GetBucketPolicy", + "s3express:DeleteBucketPolicy" + ] + }, + "list": { + "permissions": [ + "s3express:GetBucketPolicy", + "s3express:ListAllMyDirectoryBuckets" + ] + }, + "read": { + "permissions": [ + "s3express:GetBucketPolicy" + ] + }, + "update": { + "permissions": [ + "s3express:GetBucketPolicy", + "s3express:PutBucketPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Bucket" + ], + "properties": { + "Bucket": { + "description": "The name of the S3 directory bucket to which the policy applies.", + "type": "string" + }, + "PolicyDocument": { + "description": "A policy document containing permissions to add to the specified bucket. In IAM, you must provide policy documents in JSON format. However, in CloudFormation you can provide the policy in JSON or YAML format because CloudFormation converts YAML to JSON before submitting it to IAM.", + "type": [ + "object", + "string" + ] + } + }, + "required": [ + "Bucket", + "PolicyDocument" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::S3Express::BucketPolicy" +} diff --git a/src/schema/aws-s3express-directorybucket.json b/src/schema/aws-s3express-directorybucket.json index a68c0a0d..da3af01c 100644 --- a/src/schema/aws-s3express-directorybucket.json +++ b/src/schema/aws-s3express-directorybucket.json @@ -1,174 +1,254 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/BucketName", - "/properties/LocationName", - "/properties/DataRedundancy" - ], - "definitions": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the specified bucket.", - "type": "string" - }, - "BucketEncryption": { - "additionalProperties": false, - "description": "Specifies default encryption for a bucket using server-side encryption with Amazon S3 managed keys (SSE-S3) or AWS KMS keys (SSE-KMS).", - "properties": { - "ServerSideEncryptionConfiguration": { - "description": "Specifies the default server-side-encryption configuration.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ServerSideEncryptionRule" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "ServerSideEncryptionConfiguration" - ], - "type": "object" - }, - "ServerSideEncryptionByDefault": { - "additionalProperties": false, - "description": "Specifies the default server-side encryption to apply to new objects in the bucket. If a PUT Object request doesn't specify any server-side encryption, this default encryption will be applied.", - "properties": { - "KMSMasterKeyID": { - "anyOf": [ - { - "relationshipRef": { - "propertyPath": "/properties/KeyId", - "typeName": "AWS::KMS::Key" - } - }, - { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::KMS::Key" - } - } - ], - "description": "AWS Key Management Service (KMS) customer managed key ID to use for the default encryption. This parameter is allowed only if SSEAlgorithm is set to aws:kms. You can specify this parameter with the key ID or the Amazon Resource Name (ARN) of the KMS key", - "type": "string" - }, - "SSEAlgorithm": { - "enum": [ - "aws:kms", - "AES256" - ], - "type": "string" - } - }, - "required": [ - "SSEAlgorithm" - ], - "type": "object" - }, - "ServerSideEncryptionRule": { - "additionalProperties": false, - "description": "Specifies the default server-side encryption configuration.", - "properties": { - "BucketKeyEnabled": { - "description": "Specifies whether Amazon S3 should use an S3 Bucket Key with server-side encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects are not affected. Amazon S3 Express One Zone uses an S3 Bucket Key with SSE-KMS and S3 Bucket Key cannot be disabled. It's only allowed to set the BucketKeyEnabled element to true.", - "type": "boolean" - }, - "ServerSideEncryptionByDefault": { - "$ref": "#/definitions/ServerSideEncryptionByDefault" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::S3Express::DirectoryBucket.", - "handlers": { - "create": { - "permissions": [ - "kms:GenerateDataKey", - "kms:Decrypt", - "s3express:CreateBucket", - "s3express:ListAllMyDirectoryBuckets", - "s3express:PutEncryptionConfiguration" - ] - }, - "delete": { - "permissions": [ - "s3express:DeleteBucket", - "s3express:ListAllMyDirectoryBuckets" - ] - }, - "list": { - "permissions": [ - "s3express:ListAllMyDirectoryBuckets" - ] - }, - "read": { - "permissions": [ - "s3express:ListAllMyDirectoryBuckets", - "ec2:DescribeAvailabilityZones", - "s3express:GetEncryptionConfiguration", - "s3express:ListAllMyDirectoryBuckets" - ] - }, - "update": { - "permissions": [ - "kms:GenerateDataKey", - "kms:Decrypt", - "s3express:PutEncryptionConfiguration" - ] - } - }, - "primaryIdentifier": [ - "/properties/BucketName" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn", - "description": "Returns the Amazon Resource Name (ARN) of the specified bucket.", - "examples": [ - "arn:aws:s3express:us-west-2:123456789123:bucket/DOC-EXAMPLE-BUCKET--usw2-az1--x-s3" - ] - }, - "AvailabilityZoneName": { - "description": "Returns the code for the Availability Zone where the directory bucket was created.", - "examples": [ - "us-east-1f" - ], - "type": "string" - }, - "BucketEncryption": { - "$ref": "#/definitions/BucketEncryption" - }, - "BucketName": { - "description": "Specifies a name for the bucket. The bucket name must contain only lowercase letters, numbers, and hyphens (-). A directory bucket name must be unique in the chosen Availability Zone. The bucket name must also follow the format 'bucket_base_name--az_id--x-s3' (for example, 'DOC-EXAMPLE-BUCKET--usw2-az1--x-s3'). If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the bucket name.", - "maxLength": 63, - "pattern": "^[a-z0-9][a-z0-9//.//-]*[a-z0-9]$", - "type": "string" - }, - "DataRedundancy": { - "description": "Specifies the number of Availability Zone that's used for redundancy for the bucket.", - "enum": [ - "SingleAvailabilityZone" - ], - "type": "string" - }, - "LocationName": { - "description": "Specifies the AZ ID of the Availability Zone where the directory bucket will be created. An example AZ ID value is 'use1-az5'.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/AvailabilityZoneName" - ], - "required": [ - "LocationName", - "DataRedundancy" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::S3Express::DirectoryBucket" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BucketName", + "/properties/LocationName", + "/properties/DataRedundancy" + ], + "definitions": { + "AbortIncompleteMultipartUpload": { + "additionalProperties": false, + "description": "Specifies the days since the initiation of an incomplete multipart upload that Amazon S3 will wait before permanently removing all parts of the upload.", + "properties": { + "DaysAfterInitiation": { + "description": "Specifies the number of days after which Amazon S3 aborts an incomplete multipart upload.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "DaysAfterInitiation" + ], + "type": "object" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the specified bucket.", + "type": "string" + }, + "BucketEncryption": { + "additionalProperties": false, + "description": "Specifies default encryption for a bucket using server-side encryption with Amazon S3 managed keys (SSE-S3) or AWS KMS keys (SSE-KMS).", + "properties": { + "ServerSideEncryptionConfiguration": { + "description": "Specifies the default server-side-encryption configuration.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ServerSideEncryptionRule" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "ServerSideEncryptionConfiguration" + ], + "type": "object" + }, + "LifecycleConfiguration": { + "additionalProperties": false, + "properties": { + "Rules": { + "description": "A lifecycle rule for individual objects in an Amazon S3 Express bucket.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Rule" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Rules" + ], + "type": "object" + }, + "Rule": { + "additionalProperties": false, + "description": "You must specify at least one of the following properties: AbortIncompleteMultipartUpload, or ExpirationInDays.", + "properties": { + "AbortIncompleteMultipartUpload": { + "$ref": "#/definitions/AbortIncompleteMultipartUpload" + }, + "ExpirationInDays": { + "type": "integer" + }, + "Id": { + "maxLength": 255, + "type": "string" + }, + "ObjectSizeGreaterThan": { + "maxLength": 20, + "pattern": "[0-9]+", + "type": "string" + }, + "ObjectSizeLessThan": { + "maxLength": 20, + "pattern": "[0-9]+", + "type": "string" + }, + "Prefix": { + "type": "string" + }, + "Status": { + "enum": [ + "Enabled", + "Disabled" + ], + "type": "string" + } + }, + "required": [ + "Status" + ], + "type": "object" + }, + "ServerSideEncryptionByDefault": { + "additionalProperties": false, + "description": "Specifies the default server-side encryption to apply to new objects in the bucket. If a PUT Object request doesn't specify any server-side encryption, this default encryption will be applied.", + "properties": { + "KMSMasterKeyID": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/KeyId", + "typeName": "AWS::KMS::Key" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::KMS::Key" + } + } + ], + "description": "AWS Key Management Service (KMS) customer managed key ID to use for the default encryption. This parameter is allowed only if SSEAlgorithm is set to aws:kms. You can specify this parameter with the key ID or the Amazon Resource Name (ARN) of the KMS key", + "type": "string" + }, + "SSEAlgorithm": { + "enum": [ + "aws:kms", + "AES256" + ], + "type": "string" + } + }, + "required": [ + "SSEAlgorithm" + ], + "type": "object" + }, + "ServerSideEncryptionRule": { + "additionalProperties": false, + "description": "Specifies the default server-side encryption configuration.", + "properties": { + "BucketKeyEnabled": { + "description": "Specifies whether Amazon S3 should use an S3 Bucket Key with server-side encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects are not affected. Amazon S3 Express One Zone uses an S3 Bucket Key with SSE-KMS and S3 Bucket Key cannot be disabled. It's only allowed to set the BucketKeyEnabled element to true.", + "type": "boolean" + }, + "ServerSideEncryptionByDefault": { + "$ref": "#/definitions/ServerSideEncryptionByDefault" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::S3Express::DirectoryBucket.", + "handlers": { + "create": { + "permissions": [ + "kms:GenerateDataKey", + "kms:Decrypt", + "s3express:CreateBucket", + "s3express:ListAllMyDirectoryBuckets", + "s3express:PutEncryptionConfiguration", + "s3express:PutLifecycleConfiguration" + ] + }, + "delete": { + "permissions": [ + "s3express:DeleteBucket", + "s3express:ListAllMyDirectoryBuckets" + ] + }, + "list": { + "permissions": [ + "s3express:ListAllMyDirectoryBuckets" + ] + }, + "read": { + "permissions": [ + "s3express:ListAllMyDirectoryBuckets", + "ec2:DescribeAvailabilityZones", + "s3express:GetEncryptionConfiguration", + "s3express:GetLifecycleConfiguration" + ] + }, + "update": { + "permissions": [ + "kms:GenerateDataKey", + "kms:Decrypt", + "s3express:PutEncryptionConfiguration", + "s3express:PutLifecycleConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/BucketName" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn", + "description": "Returns the Amazon Resource Name (ARN) of the specified bucket.", + "examples": [ + "arn:aws:s3express:us-west-2:123456789123:bucket/DOC-EXAMPLE-BUCKET--usw2-az1--x-s3" + ] + }, + "AvailabilityZoneName": { + "description": "Returns the code for the Availability Zone or Local Zone where the directory bucket was created. An example for the code of an Availability Zone is 'us-east-1f'.", + "examples": [ + "us-east-1f" + ], + "type": "string" + }, + "BucketEncryption": { + "$ref": "#/definitions/BucketEncryption" + }, + "BucketName": { + "description": "Specifies a name for the bucket. The bucket name must contain only lowercase letters, numbers, and hyphens (-). A directory bucket name must be unique in the chosen Availability Zone or Local Zone. The bucket name must also follow the format 'bucket_base_name--zone_id--x-s3'. The zone_id can be the ID of an Availability Zone or a Local Zone. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the bucket name.", + "maxLength": 63, + "pattern": "^[a-z0-9][a-z0-9//.//-]*[a-z0-9]$", + "type": "string" + }, + "DataRedundancy": { + "description": "Specifies the number of Availability Zone or Local Zone that's used for redundancy for the bucket.", + "enum": [ + "SingleAvailabilityZone", + "SingleLocalZone" + ], + "type": "string" + }, + "LifecycleConfiguration": { + "$ref": "#/definitions/LifecycleConfiguration", + "description": "Lifecycle rules that define how Amazon S3 Express manages objects during their lifetime." + }, + "LocationName": { + "description": "Specifies the Zone ID of the Availability Zone or Local Zone where the directory bucket will be created. An example Availability Zone ID value is 'use1-az5'.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/AvailabilityZoneName" + ], + "required": [ + "LocationName", + "DataRedundancy" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::S3Express::DirectoryBucket" +} diff --git a/src/schema/aws-s3objectlambda-accesspoint.json b/src/schema/aws-s3objectlambda-accesspoint.json index 381d0911..efdaeae6 100644 --- a/src/schema/aws-s3objectlambda-accesspoint.json +++ b/src/schema/aws-s3objectlambda-accesspoint.json @@ -1,243 +1,243 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Action": { - "type": "string" - }, - "Alias": { - "additionalProperties": false, - "properties": { - "Status": { - "description": "The status of the Object Lambda alias.", - "pattern": "^[A-Z]*$", - "type": "string" - }, - "Value": { - "description": "The value of the Object Lambda alias.", - "pattern": "^[a-z0-9\\-]*$", - "type": "string" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "AwsLambda": { - "additionalProperties": false, - "properties": { - "FunctionArn": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "FunctionPayload": { - "type": "string" - } - }, - "required": [ - "FunctionArn" - ], - "type": "object" - }, - "ObjectLambdaConfiguration": { - "additionalProperties": false, - "description": "Configuration to be applied to this Object lambda Access Point. It specifies Supporting Access Point, Transformation Configurations. Customers can also set if they like to enable Cloudwatch metrics for accesses to this Object lambda Access Point. Default setting for Cloudwatch metrics is disable.", - "properties": { - "AllowedFeatures": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "CloudWatchMetricsEnabled": { - "type": "boolean" - }, - "SupportingAccessPoint": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "TransformationConfigurations": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TransformationConfiguration" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "SupportingAccessPoint", - "TransformationConfigurations" - ], - "type": "object" - }, - "PolicyStatus": { - "additionalProperties": false, - "properties": { - "IsPublic": { - "description": "Specifies whether the Object lambda Access Point Policy is Public or not. Object lambda Access Points are private by default.", - "type": "boolean" - } - }, - "type": "object" - }, - "PublicAccessBlockConfiguration": { - "additionalProperties": false, - "description": "The Public Access Block Configuration is used to block policies that would allow public access to this Object lambda Access Point. All public access to Object lambda Access Points are blocked by default, and any policy that would give public access to them will be also blocked. This behavior cannot be changed for Object lambda Access Points.", - "properties": { - "BlockPublicAcls": { - "description": "Specifies whether Amazon S3 should block public access control lists (ACLs) to this object lambda access point. Setting this element to TRUE causes the following behavior:\n- PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public.\n - PUT Object calls fail if the request includes a public ACL.\n. - PUT Bucket calls fail if the request includes a public ACL.\nEnabling this setting doesn't affect existing policies or ACLs.", - "type": "boolean" - }, - "BlockPublicPolicy": { - "description": "Specifies whether Amazon S3 should block public bucket policies for buckets in this account. Setting this element to TRUE causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy allows public access. Enabling this setting doesn't affect existing bucket policies.", - "type": "boolean" - }, - "IgnorePublicAcls": { - "description": "Specifies whether Amazon S3 should ignore public ACLs for buckets in this account. Setting this element to TRUE causes Amazon S3 to ignore all public ACLs on buckets in this account and any objects that they contain. Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set.", - "type": "boolean" - }, - "RestrictPublicBuckets": { - "description": "Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting this element to TRUE restricts access to this bucket to only AWS services and authorized users within this account if the bucket has a public policy.\nEnabling this setting doesn't affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked.", - "type": "boolean" - } - }, - "type": "object" - }, - "TransformationConfiguration": { - "additionalProperties": false, - "description": "Configuration to define what content transformation will be applied on which S3 Action.", - "properties": { - "Actions": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Action" - }, - "type": "array", - "uniqueItems": true - }, - "ContentTransformation": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "AwsLambda": { - "$ref": "#/definitions/AwsLambda" - } - }, - "required": [ - "AwsLambda" - ] - } - ], - "type": "object" - } - }, - "required": [ - "Actions", - "ContentTransformation" - ], - "type": "object" - } - }, - "deprecatedProperties": [ - "/properties/PolicyStatus", - "/properties/PolicyStatus/IsPublic" - ], - "description": "The AWS::S3ObjectLambda::AccessPoint resource is an Amazon S3ObjectLambda resource type that you can use to add computation to S3 actions", - "handlers": { - "create": { - "permissions": [ - "s3:CreateAccessPointForObjectLambda", - "s3:PutAccessPointConfigurationForObjectLambda", - "s3:GetAccessPointForObjectLambda", - "s3:GetAccessPointPolicyStatusForObjectLambda", - "s3:GetAccessPointConfigurationForObjectLambda" - ] - }, - "delete": { - "permissions": [ - "s3:DeleteAccessPointForObjectLambda" - ] - }, - "list": { - "permissions": [ - "s3:ListAccessPointsForObjectLambda" - ] - }, - "read": { - "permissions": [ - "s3:GetAccessPointForObjectLambda", - "s3:GetAccessPointPolicyStatusForObjectLambda", - "s3:GetAccessPointConfigurationForObjectLambda" - ] - }, - "update": { - "permissions": [ - "s3:PutAccessPointConfigurationForObjectLambda", - "s3:GetAccessPointForObjectLambda", - "s3:GetAccessPointPolicyStatusForObjectLambda", - "s3:GetAccessPointConfigurationForObjectLambda" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Alias": { - "$ref": "#/definitions/Alias" - }, - "Arn": { - "pattern": "arn:[^:]+:s3-object-lambda:[^:]*:\\d{12}:accesspoint/.*", - "type": "string" - }, - "CreationDate": { - "description": "The date and time when the Object lambda Access Point was created.", - "type": "string" - }, - "Name": { - "description": "The name you want to assign to this Object lambda Access Point.", - "maxLength": 45, - "minLength": 3, - "pattern": "^[a-z0-9]([a-z0-9\\-]*[a-z0-9])?$", - "type": "string" - }, - "ObjectLambdaConfiguration": { - "$ref": "#/definitions/ObjectLambdaConfiguration", - "description": "The Object lambda Access Point Configuration that configures transformations to be applied on the objects on specified S3 Actions" - }, - "PolicyStatus": { - "$ref": "#/definitions/PolicyStatus" - }, - "PublicAccessBlockConfiguration": { - "$ref": "#/definitions/PublicAccessBlockConfiguration", - "description": "The PublicAccessBlock configuration that you want to apply to this Access Point. You can enable the configuration options in any combination. For more information about when Amazon S3 considers a bucket or object public, see https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status 'The Meaning of Public' in the Amazon Simple Storage Service Developer Guide." - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Alias", - "/properties/Alias/Value", - "/properties/Alias/Status", - "/properties/PolicyStatus", - "/properties/PolicyStatus/IsPublic", - "/properties/CreationDate", - "/properties/PublicAccessBlockConfiguration" - ], - "required": [ - "ObjectLambdaConfiguration" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::S3ObjectLambda::AccessPoint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Action": { + "type": "string" + }, + "Alias": { + "additionalProperties": false, + "properties": { + "Status": { + "description": "The status of the Object Lambda alias.", + "pattern": "^[A-Z]*$", + "type": "string" + }, + "Value": { + "description": "The value of the Object Lambda alias.", + "pattern": "^[a-z0-9\\-]*$", + "type": "string" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "AwsLambda": { + "additionalProperties": false, + "properties": { + "FunctionArn": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "FunctionPayload": { + "type": "string" + } + }, + "required": [ + "FunctionArn" + ], + "type": "object" + }, + "ObjectLambdaConfiguration": { + "additionalProperties": false, + "description": "Configuration to be applied to this Object lambda Access Point. It specifies Supporting Access Point, Transformation Configurations. Customers can also set if they like to enable Cloudwatch metrics for accesses to this Object lambda Access Point. Default setting for Cloudwatch metrics is disable.", + "properties": { + "AllowedFeatures": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "CloudWatchMetricsEnabled": { + "type": "boolean" + }, + "SupportingAccessPoint": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "TransformationConfigurations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TransformationConfiguration" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "SupportingAccessPoint", + "TransformationConfigurations" + ], + "type": "object" + }, + "PolicyStatus": { + "additionalProperties": false, + "properties": { + "IsPublic": { + "description": "Specifies whether the Object lambda Access Point Policy is Public or not. Object lambda Access Points are private by default.", + "type": "boolean" + } + }, + "type": "object" + }, + "PublicAccessBlockConfiguration": { + "additionalProperties": false, + "description": "The Public Access Block Configuration is used to block policies that would allow public access to this Object lambda Access Point. All public access to Object lambda Access Points are blocked by default, and any policy that would give public access to them will be also blocked. This behavior cannot be changed for Object lambda Access Points.", + "properties": { + "BlockPublicAcls": { + "description": "Specifies whether Amazon S3 should block public access control lists (ACLs) to this object lambda access point. Setting this element to TRUE causes the following behavior:\n- PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public.\n - PUT Object calls fail if the request includes a public ACL.\n. - PUT Bucket calls fail if the request includes a public ACL.\nEnabling this setting doesn't affect existing policies or ACLs.", + "type": "boolean" + }, + "BlockPublicPolicy": { + "description": "Specifies whether Amazon S3 should block public bucket policies for buckets in this account. Setting this element to TRUE causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy allows public access. Enabling this setting doesn't affect existing bucket policies.", + "type": "boolean" + }, + "IgnorePublicAcls": { + "description": "Specifies whether Amazon S3 should ignore public ACLs for buckets in this account. Setting this element to TRUE causes Amazon S3 to ignore all public ACLs on buckets in this account and any objects that they contain. Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set.", + "type": "boolean" + }, + "RestrictPublicBuckets": { + "description": "Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting this element to TRUE restricts access to this bucket to only AWS services and authorized users within this account if the bucket has a public policy.\nEnabling this setting doesn't affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked.", + "type": "boolean" + } + }, + "type": "object" + }, + "TransformationConfiguration": { + "additionalProperties": false, + "description": "Configuration to define what content transformation will be applied on which S3 Action.", + "properties": { + "Actions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Action" + }, + "type": "array", + "uniqueItems": true + }, + "ContentTransformation": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "AwsLambda": { + "$ref": "#/definitions/AwsLambda" + } + }, + "required": [ + "AwsLambda" + ] + } + ], + "type": "object" + } + }, + "required": [ + "Actions", + "ContentTransformation" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/PolicyStatus", + "/properties/PolicyStatus/IsPublic" + ], + "description": "The AWS::S3ObjectLambda::AccessPoint resource is an Amazon S3ObjectLambda resource type that you can use to add computation to S3 actions", + "handlers": { + "create": { + "permissions": [ + "s3:CreateAccessPointForObjectLambda", + "s3:PutAccessPointConfigurationForObjectLambda", + "s3:GetAccessPointForObjectLambda", + "s3:GetAccessPointPolicyStatusForObjectLambda", + "s3:GetAccessPointConfigurationForObjectLambda" + ] + }, + "delete": { + "permissions": [ + "s3:DeleteAccessPointForObjectLambda" + ] + }, + "list": { + "permissions": [ + "s3:ListAccessPointsForObjectLambda" + ] + }, + "read": { + "permissions": [ + "s3:GetAccessPointForObjectLambda", + "s3:GetAccessPointPolicyStatusForObjectLambda", + "s3:GetAccessPointConfigurationForObjectLambda" + ] + }, + "update": { + "permissions": [ + "s3:PutAccessPointConfigurationForObjectLambda", + "s3:GetAccessPointForObjectLambda", + "s3:GetAccessPointPolicyStatusForObjectLambda", + "s3:GetAccessPointConfigurationForObjectLambda" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Alias": { + "$ref": "#/definitions/Alias" + }, + "Arn": { + "pattern": "arn:[^:]+:s3-object-lambda:[^:]*:\\d{12}:accesspoint/.*", + "type": "string" + }, + "CreationDate": { + "description": "The date and time when the Object lambda Access Point was created.", + "type": "string" + }, + "Name": { + "description": "The name you want to assign to this Object lambda Access Point.", + "maxLength": 45, + "minLength": 3, + "pattern": "^[a-z0-9]([a-z0-9\\-]*[a-z0-9])?$", + "type": "string" + }, + "ObjectLambdaConfiguration": { + "$ref": "#/definitions/ObjectLambdaConfiguration", + "description": "The Object lambda Access Point Configuration that configures transformations to be applied on the objects on specified S3 Actions" + }, + "PolicyStatus": { + "$ref": "#/definitions/PolicyStatus" + }, + "PublicAccessBlockConfiguration": { + "$ref": "#/definitions/PublicAccessBlockConfiguration", + "description": "The PublicAccessBlock configuration that you want to apply to this Access Point. You can enable the configuration options in any combination. For more information about when Amazon S3 considers a bucket or object public, see https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status 'The Meaning of Public' in the Amazon Simple Storage Service Developer Guide." + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Alias", + "/properties/Alias/Value", + "/properties/Alias/Status", + "/properties/PolicyStatus", + "/properties/PolicyStatus/IsPublic", + "/properties/CreationDate", + "/properties/PublicAccessBlockConfiguration" + ], + "required": [ + "ObjectLambdaConfiguration" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::S3ObjectLambda::AccessPoint" +} diff --git a/src/schema/aws-s3objectlambda-accesspointpolicy.json b/src/schema/aws-s3objectlambda-accesspointpolicy.json index 22301b49..3fec95b9 100644 --- a/src/schema/aws-s3objectlambda-accesspointpolicy.json +++ b/src/schema/aws-s3objectlambda-accesspointpolicy.json @@ -1,57 +1,57 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ObjectLambdaAccessPoint" - ], - "description": "AWS::S3ObjectLambda::AccessPointPolicy resource is an Amazon S3ObjectLambda policy type that you can use to control permissions for your S3ObjectLambda", - "handlers": { - "create": { - "permissions": [ - "s3:PutAccessPointPolicyForObjectLambda", - "s3:GetAccessPointPolicyForObjectLambda" - ] - }, - "delete": { - "permissions": [ - "s3:DeleteAccessPointPolicyForObjectLambda", - "s3:GetAccessPointPolicyForObjectLambda" - ] - }, - "read": { - "permissions": [ - "s3:GetAccessPointPolicyForObjectLambda" - ] - }, - "update": { - "permissions": [ - "s3:PutAccessPointPolicyForObjectLambda", - "s3:GetAccessPointPolicyForObjectLambda" - ] - } - }, - "primaryIdentifier": [ - "/properties/ObjectLambdaAccessPoint" - ], - "properties": { - "ObjectLambdaAccessPoint": { - "description": "The name of the Amazon S3 ObjectLambdaAccessPoint to which the policy applies.", - "maxLength": 45, - "minLength": 3, - "pattern": "^[a-z0-9]([a-z0-9\\-]*[a-z0-9])?$", - "type": "string" - }, - "PolicyDocument": { - "description": "A policy document containing permissions to add to the specified ObjectLambdaAccessPoint. For more information, see Access Policy Language Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-policy-language-overview.html) in the Amazon Simple Storage Service Developer Guide. ", - "type": "object" - } - }, - "required": [ - "ObjectLambdaAccessPoint", - "PolicyDocument" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::S3ObjectLambda::AccessPointPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ObjectLambdaAccessPoint" + ], + "description": "AWS::S3ObjectLambda::AccessPointPolicy resource is an Amazon S3ObjectLambda policy type that you can use to control permissions for your S3ObjectLambda", + "handlers": { + "create": { + "permissions": [ + "s3:PutAccessPointPolicyForObjectLambda", + "s3:GetAccessPointPolicyForObjectLambda" + ] + }, + "delete": { + "permissions": [ + "s3:DeleteAccessPointPolicyForObjectLambda", + "s3:GetAccessPointPolicyForObjectLambda" + ] + }, + "read": { + "permissions": [ + "s3:GetAccessPointPolicyForObjectLambda" + ] + }, + "update": { + "permissions": [ + "s3:PutAccessPointPolicyForObjectLambda", + "s3:GetAccessPointPolicyForObjectLambda" + ] + } + }, + "primaryIdentifier": [ + "/properties/ObjectLambdaAccessPoint" + ], + "properties": { + "ObjectLambdaAccessPoint": { + "description": "The name of the Amazon S3 ObjectLambdaAccessPoint to which the policy applies.", + "maxLength": 45, + "minLength": 3, + "pattern": "^[a-z0-9]([a-z0-9\\-]*[a-z0-9])?$", + "type": "string" + }, + "PolicyDocument": { + "description": "A policy document containing permissions to add to the specified ObjectLambdaAccessPoint. For more information, see Access Policy Language Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-policy-language-overview.html) in the Amazon Simple Storage Service Developer Guide. ", + "type": "object" + } + }, + "required": [ + "ObjectLambdaAccessPoint", + "PolicyDocument" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::S3ObjectLambda::AccessPointPolicy" +} diff --git a/src/schema/aws-s3outposts-accesspoint.json b/src/schema/aws-s3outposts-accesspoint.json index 40e977bd..101ae98e 100644 --- a/src/schema/aws-s3outposts-accesspoint.json +++ b/src/schema/aws-s3outposts-accesspoint.json @@ -1,108 +1,108 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Bucket", - "/properties/Name", - "/properties/VpcConfiguration" - ], - "definitions": { - "VpcConfiguration": { - "additionalProperties": false, - "properties": { - "VpcId": { - "description": "Virtual Private Cloud (VPC) Id from which AccessPoint will allow requests.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type Definition for AWS::S3Outposts::AccessPoint", - "handlers": { - "create": { - "permissions": [ - "s3-outposts:CreateAccessPoint", - "s3-outposts:GetAccessPoint", - "s3-outposts:PutAccessPointPolicy", - "s3-outposts:GetAccessPointPolicy" - ] - }, - "delete": { - "permissions": [ - "s3-outposts:DeleteAccessPoint", - "s3-outposts:DeleteAccessPointPolicy" - ] - }, - "list": { - "permissions": [ - "s3-outposts:ListAccessPoints" - ] - }, - "read": { - "permissions": [ - "s3-outposts:GetAccessPoint", - "s3-outposts:GetAccessPointPolicy" - ] - }, - "update": { - "permissions": [ - "s3-outposts:GetAccessPoint", - "s3-outposts:PutAccessPointPolicy", - "s3-outposts:GetAccessPointPolicy", - "s3-outposts:DeleteAccessPointPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the specified AccessPoint.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[^:]+:s3-outposts:[a-zA-Z0-9\\-]+:\\d{12}:outpost\\/[^:]+\\/accesspoint\\/[^:]+$", - "type": "string" - }, - "Bucket": { - "description": "The Amazon Resource Name (ARN) of the bucket you want to associate this AccessPoint with.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[^:]+:s3-outposts:[a-zA-Z0-9\\-]+:\\d{12}:outpost\\/[^:]+\\/bucket\\/[^:]+$", - "type": "string" - }, - "Name": { - "description": "A name for the AccessPoint.", - "maxLength": 50, - "minLength": 3, - "pattern": "^[a-z0-9]([a-z0-9\\\\-]*[a-z0-9])?$", - "type": "string" - }, - "Policy": { - "description": "The access point policy associated with this access point.", - "type": "object" - }, - "VpcConfiguration": { - "$ref": "#/definitions/VpcConfiguration", - "description": "Virtual Private Cloud (VPC) from which requests can be made to the AccessPoint." - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Bucket", - "Name", - "VpcConfiguration" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3outposts.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::S3Outposts::AccessPoint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Bucket", + "/properties/Name", + "/properties/VpcConfiguration" + ], + "definitions": { + "VpcConfiguration": { + "additionalProperties": false, + "properties": { + "VpcId": { + "description": "Virtual Private Cloud (VPC) Id from which AccessPoint will allow requests.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type Definition for AWS::S3Outposts::AccessPoint", + "handlers": { + "create": { + "permissions": [ + "s3-outposts:CreateAccessPoint", + "s3-outposts:GetAccessPoint", + "s3-outposts:PutAccessPointPolicy", + "s3-outposts:GetAccessPointPolicy" + ] + }, + "delete": { + "permissions": [ + "s3-outposts:DeleteAccessPoint", + "s3-outposts:DeleteAccessPointPolicy" + ] + }, + "list": { + "permissions": [ + "s3-outposts:ListAccessPoints" + ] + }, + "read": { + "permissions": [ + "s3-outposts:GetAccessPoint", + "s3-outposts:GetAccessPointPolicy" + ] + }, + "update": { + "permissions": [ + "s3-outposts:GetAccessPoint", + "s3-outposts:PutAccessPointPolicy", + "s3-outposts:GetAccessPointPolicy", + "s3-outposts:DeleteAccessPointPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the specified AccessPoint.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[^:]+:s3-outposts:[a-zA-Z0-9\\-]+:\\d{12}:outpost\\/[^:]+\\/accesspoint\\/[^:]+$", + "type": "string" + }, + "Bucket": { + "description": "The Amazon Resource Name (ARN) of the bucket you want to associate this AccessPoint with.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[^:]+:s3-outposts:[a-zA-Z0-9\\-]+:\\d{12}:outpost\\/[^:]+\\/bucket\\/[^:]+$", + "type": "string" + }, + "Name": { + "description": "A name for the AccessPoint.", + "maxLength": 50, + "minLength": 3, + "pattern": "^[a-z0-9]([a-z0-9\\\\-]*[a-z0-9])?$", + "type": "string" + }, + "Policy": { + "description": "The access point policy associated with this access point.", + "type": "object" + }, + "VpcConfiguration": { + "$ref": "#/definitions/VpcConfiguration", + "description": "Virtual Private Cloud (VPC) from which requests can be made to the AccessPoint." + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Bucket", + "Name", + "VpcConfiguration" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3outposts.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::S3Outposts::AccessPoint" +} diff --git a/src/schema/aws-s3outposts-bucket.json b/src/schema/aws-s3outposts-bucket.json index 3d92e46e..b2822edf 100644 --- a/src/schema/aws-s3outposts-bucket.json +++ b/src/schema/aws-s3outposts-bucket.json @@ -1,313 +1,313 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/BucketName", - "/properties/OutpostId" - ], - "definitions": { - "AbortIncompleteMultipartUpload": { - "additionalProperties": false, - "description": "Specifies the days since the initiation of an incomplete multipart upload that Amazon S3Outposts will wait before permanently removing all parts of the upload.", - "properties": { - "DaysAfterInitiation": { - "description": "Specifies the number of days after which Amazon S3Outposts aborts an incomplete multipart upload.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "DaysAfterInitiation" - ], - "type": "object" - }, - "FilterAndOperator": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Prefix": { - "$ref": "#/definitions/FilterPrefix", - "description": "Prefix identifies one or more objects to which the rule applies." - }, - "Tags": { - "description": "All of these tags must exist in the object's tag set in order for the rule to apply.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/FilterTag" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Tags" - ], - "type": "object" - } - ] - }, - "FilterPrefix": { - "description": "Prefix identifies one or more objects to which the rule applies.", - "type": "string" - }, - "FilterTag": { - "additionalProperties": false, - "description": "Tag used to identify a subset of objects for an Amazon S3Outposts bucket.", - "properties": { - "Key": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:=+\\/\\-@%]*)$", - "type": "string" - }, - "Value": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:=+\\/\\-@%]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "LifecycleConfiguration": { - "additionalProperties": false, - "properties": { - "Rules": { - "description": "A list of lifecycle rules for individual objects in an Amazon S3Outposts bucket.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Rule" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Rules" - ], - "type": "object" - }, - "Rule": { - "additionalProperties": false, - "anyOf": [ - { - "required": [ - "Status", - "AbortIncompleteMultipartUpload" - ] - }, - { - "required": [ - "Status", - "ExpirationDate" - ] - }, - { - "required": [ - "Status", - "ExpirationInDays" - ] - } - ], - "description": "Specifies lifecycle rules for an Amazon S3Outposts bucket. You must specify at least one of the following: AbortIncompleteMultipartUpload, ExpirationDate, ExpirationInDays.", - "properties": { - "AbortIncompleteMultipartUpload": { - "$ref": "#/definitions/AbortIncompleteMultipartUpload", - "description": "Specifies a lifecycle rule that stops incomplete multipart uploads to an Amazon S3Outposts bucket." - }, - "ExpirationDate": { - "$ref": "#/definitions/iso8601UTC", - "description": "Indicates when objects are deleted from Amazon S3Outposts. The date value must be in ISO 8601 format. The time is always midnight UTC." - }, - "ExpirationInDays": { - "description": "Indicates the number of days after creation when objects are deleted from Amazon S3Outposts.", - "minimum": 1, - "type": "integer" - }, - "Filter": { - "additionalProperties": false, - "description": "The container for the filter of the lifecycle rule.", - "oneOf": [ - { - "required": [ - "Prefix" - ] - }, - { - "required": [ - "Tag" - ] - }, - { - "required": [ - "AndOperator" - ] - } - ], - "properties": { - "AndOperator": { - "$ref": "#/definitions/FilterAndOperator", - "description": "The container for the AND condition for the lifecycle rule. A combination of Prefix and 1 or more Tags OR a minimum of 2 or more tags." - }, - "Prefix": { - "$ref": "#/definitions/FilterPrefix", - "description": "Object key prefix that identifies one or more objects to which this rule applies." - }, - "Tag": { - "$ref": "#/definitions/FilterTag", - "description": "Specifies a tag used to identify a subset of objects for an Amazon S3Outposts bucket." - } - }, - "type": "object" - }, - "Id": { - "description": "Unique identifier for the lifecycle rule. The value can't be longer than 255 characters.", - "maxLength": 255, - "type": "string" - }, - "Status": { - "enum": [ - "Enabled", - "Disabled" - ], - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^(?!aws:.*)([\\p{L}\\p{Z}\\p{N}_.:=+\\/\\-@%]*)$", - "type": "string" - }, - "Value": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:=+\\/\\-@%]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "iso8601UTC": { - "description": "The date value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ssZ)", - "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", - "type": "string" - } - }, - "description": "Resource Type Definition for AWS::S3Outposts::Bucket", - "handlers": { - "create": { - "permissions": [ - "s3-outposts:CreateBucket", - "s3-outposts:PutBucketTagging", - "s3-outposts:PutLifecycleConfiguration" - ] - }, - "delete": { - "permissions": [ - "s3-outposts:DeleteBucket" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "OutpostId": { - "$ref": "resource-schema.json#/properties/OutpostId" - } - }, - "required": [ - "OutpostId" - ] - }, - "permissions": [ - "s3-outposts:ListRegionalBuckets" - ] - }, - "read": { - "permissions": [ - "s3-outposts:GetBucket", - "s3-outposts:GetBucketTagging", - "s3-outposts:GetLifecycleConfiguration" - ] - }, - "update": { - "permissions": [ - "s3-outposts:PutBucketTagging", - "s3-outposts:DeleteBucketTagging", - "s3-outposts:PutLifecycleConfiguration" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the specified bucket.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[^:]+:s3-outposts:[a-zA-Z0-9\\-]+:\\d{12}:outpost\\/[^:]+\\/bucket\\/[^:]+$", - "type": "string" - }, - "BucketName": { - "description": "A name for the bucket.", - "maxLength": 63, - "minLength": 3, - "pattern": "(?=^.{3,63}$)(?!^(\\d+\\.)+\\d+$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)", - "type": "string" - }, - "LifecycleConfiguration": { - "$ref": "#/definitions/LifecycleConfiguration", - "description": "Rules that define how Amazon S3Outposts manages objects during their lifetime." - }, - "OutpostId": { - "description": "The id of the customer outpost on which the bucket resides.", - "pattern": "^(op-[a-f0-9]{17}|\\d{12}|ec2)$", - "type": "string" - }, - "Tags": { - "description": "An arbitrary set of tags (key-value pairs) for this S3Outposts bucket.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "BucketName", - "OutpostId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3outposts.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "s3-outposts:DeleteBucketTagging", - "s3-outposts:PutBucketTagging", - "s3-outposts:GetBucketTagging" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::S3Outposts::Bucket" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BucketName", + "/properties/OutpostId" + ], + "definitions": { + "AbortIncompleteMultipartUpload": { + "additionalProperties": false, + "description": "Specifies the days since the initiation of an incomplete multipart upload that Amazon S3Outposts will wait before permanently removing all parts of the upload.", + "properties": { + "DaysAfterInitiation": { + "description": "Specifies the number of days after which Amazon S3Outposts aborts an incomplete multipart upload.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "DaysAfterInitiation" + ], + "type": "object" + }, + "FilterAndOperator": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Prefix": { + "$ref": "#/definitions/FilterPrefix", + "description": "Prefix identifies one or more objects to which the rule applies." + }, + "Tags": { + "description": "All of these tags must exist in the object's tag set in order for the rule to apply.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/FilterTag" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Tags" + ], + "type": "object" + } + ] + }, + "FilterPrefix": { + "description": "Prefix identifies one or more objects to which the rule applies.", + "type": "string" + }, + "FilterTag": { + "additionalProperties": false, + "description": "Tag used to identify a subset of objects for an Amazon S3Outposts bucket.", + "properties": { + "Key": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:=+\\/\\-@%]*)$", + "type": "string" + }, + "Value": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:=+\\/\\-@%]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "LifecycleConfiguration": { + "additionalProperties": false, + "properties": { + "Rules": { + "description": "A list of lifecycle rules for individual objects in an Amazon S3Outposts bucket.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Rule" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Rules" + ], + "type": "object" + }, + "Rule": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "Status", + "AbortIncompleteMultipartUpload" + ] + }, + { + "required": [ + "Status", + "ExpirationDate" + ] + }, + { + "required": [ + "Status", + "ExpirationInDays" + ] + } + ], + "description": "Specifies lifecycle rules for an Amazon S3Outposts bucket. You must specify at least one of the following: AbortIncompleteMultipartUpload, ExpirationDate, ExpirationInDays.", + "properties": { + "AbortIncompleteMultipartUpload": { + "$ref": "#/definitions/AbortIncompleteMultipartUpload", + "description": "Specifies a lifecycle rule that stops incomplete multipart uploads to an Amazon S3Outposts bucket." + }, + "ExpirationDate": { + "$ref": "#/definitions/iso8601UTC", + "description": "Indicates when objects are deleted from Amazon S3Outposts. The date value must be in ISO 8601 format. The time is always midnight UTC." + }, + "ExpirationInDays": { + "description": "Indicates the number of days after creation when objects are deleted from Amazon S3Outposts.", + "minimum": 1, + "type": "integer" + }, + "Filter": { + "additionalProperties": false, + "description": "The container for the filter of the lifecycle rule.", + "oneOf": [ + { + "required": [ + "Prefix" + ] + }, + { + "required": [ + "Tag" + ] + }, + { + "required": [ + "AndOperator" + ] + } + ], + "properties": { + "AndOperator": { + "$ref": "#/definitions/FilterAndOperator", + "description": "The container for the AND condition for the lifecycle rule. A combination of Prefix and 1 or more Tags OR a minimum of 2 or more tags." + }, + "Prefix": { + "$ref": "#/definitions/FilterPrefix", + "description": "Object key prefix that identifies one or more objects to which this rule applies." + }, + "Tag": { + "$ref": "#/definitions/FilterTag", + "description": "Specifies a tag used to identify a subset of objects for an Amazon S3Outposts bucket." + } + }, + "type": "object" + }, + "Id": { + "description": "Unique identifier for the lifecycle rule. The value can't be longer than 255 characters.", + "maxLength": 255, + "type": "string" + }, + "Status": { + "enum": [ + "Enabled", + "Disabled" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^(?!aws:.*)([\\p{L}\\p{Z}\\p{N}_.:=+\\/\\-@%]*)$", + "type": "string" + }, + "Value": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:=+\\/\\-@%]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "iso8601UTC": { + "description": "The date value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ssZ)", + "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", + "type": "string" + } + }, + "description": "Resource Type Definition for AWS::S3Outposts::Bucket", + "handlers": { + "create": { + "permissions": [ + "s3-outposts:CreateBucket", + "s3-outposts:PutBucketTagging", + "s3-outposts:PutLifecycleConfiguration" + ] + }, + "delete": { + "permissions": [ + "s3-outposts:DeleteBucket" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "OutpostId": { + "$ref": "resource-schema.json#/properties/OutpostId" + } + }, + "required": [ + "OutpostId" + ] + }, + "permissions": [ + "s3-outposts:ListRegionalBuckets" + ] + }, + "read": { + "permissions": [ + "s3-outposts:GetBucket", + "s3-outposts:GetBucketTagging", + "s3-outposts:GetLifecycleConfiguration" + ] + }, + "update": { + "permissions": [ + "s3-outposts:PutBucketTagging", + "s3-outposts:DeleteBucketTagging", + "s3-outposts:PutLifecycleConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the specified bucket.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[^:]+:s3-outposts:[a-zA-Z0-9\\-]+:\\d{12}:outpost\\/[^:]+\\/bucket\\/[^:]+$", + "type": "string" + }, + "BucketName": { + "description": "A name for the bucket.", + "maxLength": 63, + "minLength": 3, + "pattern": "(?=^.{3,63}$)(?!^(\\d+\\.)+\\d+$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)", + "type": "string" + }, + "LifecycleConfiguration": { + "$ref": "#/definitions/LifecycleConfiguration", + "description": "Rules that define how Amazon S3Outposts manages objects during their lifetime." + }, + "OutpostId": { + "description": "The id of the customer outpost on which the bucket resides.", + "pattern": "^(op-[a-f0-9]{17}|\\d{12}|ec2)$", + "type": "string" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this S3Outposts bucket.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "BucketName", + "OutpostId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3outposts.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "s3-outposts:DeleteBucketTagging", + "s3-outposts:PutBucketTagging", + "s3-outposts:GetBucketTagging" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::S3Outposts::Bucket" +} diff --git a/src/schema/aws-s3outposts-bucketpolicy.json b/src/schema/aws-s3outposts-bucketpolicy.json index 31f7e382..9c1a51b3 100644 --- a/src/schema/aws-s3outposts-bucketpolicy.json +++ b/src/schema/aws-s3outposts-bucketpolicy.json @@ -1,61 +1,61 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Bucket" - ], - "definitions": {}, - "description": "Resource Type Definition for AWS::S3Outposts::BucketPolicy", - "handlers": { - "create": { - "permissions": [ - "s3-outposts:PutBucketPolicy", - "s3-outposts:GetBucketPolicy" - ] - }, - "delete": { - "permissions": [ - "s3-outposts:DeleteBucketPolicy", - "s3-outposts:GetBucketPolicy" - ] - }, - "read": { - "permissions": [ - "s3-outposts:GetBucketPolicy" - ] - }, - "update": { - "permissions": [ - "s3-outposts:PutBucketPolicy", - "s3-outposts:GetBucketPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Bucket" - ], - "properties": { - "Bucket": { - "description": "The Amazon Resource Name (ARN) of the specified bucket.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[^:]+:s3-outposts:[a-zA-Z0-9\\-]+:\\d{12}:outpost\\/[^:]+\\/bucket\\/[^:]+$", - "type": "string" - }, - "PolicyDocument": { - "description": "A policy document containing permissions to add to the specified bucket.", - "type": "object" - } - }, - "required": [ - "Bucket", - "PolicyDocument" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3outposts.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::S3Outposts::BucketPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Bucket" + ], + "definitions": {}, + "description": "Resource Type Definition for AWS::S3Outposts::BucketPolicy", + "handlers": { + "create": { + "permissions": [ + "s3-outposts:PutBucketPolicy", + "s3-outposts:GetBucketPolicy" + ] + }, + "delete": { + "permissions": [ + "s3-outposts:DeleteBucketPolicy", + "s3-outposts:GetBucketPolicy" + ] + }, + "read": { + "permissions": [ + "s3-outposts:GetBucketPolicy" + ] + }, + "update": { + "permissions": [ + "s3-outposts:PutBucketPolicy", + "s3-outposts:GetBucketPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/Bucket" + ], + "properties": { + "Bucket": { + "description": "The Amazon Resource Name (ARN) of the specified bucket.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[^:]+:s3-outposts:[a-zA-Z0-9\\-]+:\\d{12}:outpost\\/[^:]+\\/bucket\\/[^:]+$", + "type": "string" + }, + "PolicyDocument": { + "description": "A policy document containing permissions to add to the specified bucket.", + "type": "object" + } + }, + "required": [ + "Bucket", + "PolicyDocument" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3outposts.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::S3Outposts::BucketPolicy" +} diff --git a/src/schema/aws-s3outposts-endpoint.json b/src/schema/aws-s3outposts-endpoint.json index 657f1299..e89bbec7 100644 --- a/src/schema/aws-s3outposts-endpoint.json +++ b/src/schema/aws-s3outposts-endpoint.json @@ -1,175 +1,175 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/OutpostId", - "/properties/SecurityGroupId", - "/properties/SubnetId", - "/properties/AccessType", - "/properties/CustomerOwnedIpv4Pool" - ], - "definitions": { - "FailedReason": { - "additionalProperties": false, - "properties": { - "ErrorCode": { - "description": "The failure code, if any, for a create or delete endpoint operation.", - "type": "string" - }, - "Message": { - "description": "Additional error details describing the endpoint failure and recommended action.", - "type": "string" - } - }, - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "description": "The container for the network interface.", - "properties": { - "NetworkInterfaceId": { - "maxLength": 100, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "NetworkInterfaceId" - ], - "type": "object" - }, - "iso8601UTC": { - "description": "The date value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ssZ)", - "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", - "type": "string" - } - }, - "description": "Resource Type Definition for AWS::S3Outposts::Endpoint", - "handlers": { - "create": { - "permissions": [ - "s3-outposts:CreateEndpoint" - ] - }, - "delete": { - "permissions": [ - "s3-outposts:DeleteEndpoint" - ] - }, - "list": { - "permissions": [ - "s3-outposts:ListEndpoints" - ] - }, - "read": { - "permissions": [ - "s3-outposts:ListEndpoints" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "AccessType": { - "default": "Private", - "description": "The type of access for the on-premise network connectivity for the Outpost endpoint. To access endpoint from an on-premises network, you must specify the access type and provide the customer owned Ipv4 pool.", - "enum": [ - "CustomerOwnedIp", - "Private" - ], - "type": "string" - }, - "Arn": { - "description": "The Amazon Resource Name (ARN) of the endpoint.", - "maxLength": 500, - "minLength": 5, - "pattern": "^arn:[^:]+:s3-outposts:[a-zA-Z0-9\\-]+:\\d{12}:outpost\\/[^:]+\\/endpoint/[a-zA-Z0-9]{19}$", - "type": "string" - }, - "CidrBlock": { - "description": "The VPC CIDR committed by this endpoint.", - "maxLength": 20, - "minLength": 1, - "type": "string" - }, - "CreationTime": { - "$ref": "#/definitions/iso8601UTC", - "description": "The time the endpoint was created." - }, - "CustomerOwnedIpv4Pool": { - "description": "The ID of the customer-owned IPv4 pool for the Endpoint. IP addresses will be allocated from this pool for the endpoint.", - "pattern": "^ipv4pool-coip-([0-9a-f]{17})$", - "type": "string" - }, - "FailedReason": { - "$ref": "#/definitions/FailedReason", - "description": "The failure reason, if any, for a create or delete endpoint operation." - }, - "Id": { - "description": "The ID of the endpoint.", - "maxLength": 500, - "minLength": 5, - "pattern": "^[a-zA-Z0-9]{19}$", - "type": "string" - }, - "NetworkInterfaces": { - "description": "The network interfaces of the endpoint.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": true - }, - "OutpostId": { - "description": "The id of the customer outpost on which the bucket resides.", - "pattern": "^(op-[a-f0-9]{17}|\\d{12}|ec2)$", - "type": "string" - }, - "SecurityGroupId": { - "description": "The ID of the security group to use with the endpoint.", - "maxLength": 100, - "minLength": 1, - "pattern": "^sg-([0-9a-f]{8}|[0-9a-f]{17})$", - "type": "string" - }, - "Status": { - "enum": [ - "Available", - "Pending", - "Deleting", - "Create_Failed", - "Delete_Failed" - ], - "type": "string" - }, - "SubnetId": { - "description": "The ID of the subnet in the selected VPC. The subnet must belong to the Outpost.", - "maxLength": 100, - "minLength": 1, - "pattern": "^subnet-([0-9a-f]{8}|[0-9a-f]{17})$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CidrBlock", - "/properties/CreationTime", - "/properties/Id", - "/properties/NetworkInterfaces", - "/properties/Status" - ], - "required": [ - "OutpostId", - "SecurityGroupId", - "SubnetId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3outposts.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::S3Outposts::Endpoint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/OutpostId", + "/properties/SecurityGroupId", + "/properties/SubnetId", + "/properties/AccessType", + "/properties/CustomerOwnedIpv4Pool" + ], + "definitions": { + "FailedReason": { + "additionalProperties": false, + "properties": { + "ErrorCode": { + "description": "The failure code, if any, for a create or delete endpoint operation.", + "type": "string" + }, + "Message": { + "description": "Additional error details describing the endpoint failure and recommended action.", + "type": "string" + } + }, + "type": "object" + }, + "NetworkInterface": { + "additionalProperties": false, + "description": "The container for the network interface.", + "properties": { + "NetworkInterfaceId": { + "maxLength": 100, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "NetworkInterfaceId" + ], + "type": "object" + }, + "iso8601UTC": { + "description": "The date value in ISO 8601 format. The timezone is always UTC. (YYYY-MM-DDThh:mm:ssZ)", + "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", + "type": "string" + } + }, + "description": "Resource Type Definition for AWS::S3Outposts::Endpoint", + "handlers": { + "create": { + "permissions": [ + "s3-outposts:CreateEndpoint" + ] + }, + "delete": { + "permissions": [ + "s3-outposts:DeleteEndpoint" + ] + }, + "list": { + "permissions": [ + "s3-outposts:ListEndpoints" + ] + }, + "read": { + "permissions": [ + "s3-outposts:ListEndpoints" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AccessType": { + "default": "Private", + "description": "The type of access for the on-premise network connectivity for the Outpost endpoint. To access endpoint from an on-premises network, you must specify the access type and provide the customer owned Ipv4 pool.", + "enum": [ + "CustomerOwnedIp", + "Private" + ], + "type": "string" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the endpoint.", + "maxLength": 500, + "minLength": 5, + "pattern": "^arn:[^:]+:s3-outposts:[a-zA-Z0-9\\-]+:\\d{12}:outpost\\/[^:]+\\/endpoint/[a-zA-Z0-9]{19}$", + "type": "string" + }, + "CidrBlock": { + "description": "The VPC CIDR committed by this endpoint.", + "maxLength": 20, + "minLength": 1, + "type": "string" + }, + "CreationTime": { + "$ref": "#/definitions/iso8601UTC", + "description": "The time the endpoint was created." + }, + "CustomerOwnedIpv4Pool": { + "description": "The ID of the customer-owned IPv4 pool for the Endpoint. IP addresses will be allocated from this pool for the endpoint.", + "pattern": "^ipv4pool-coip-([0-9a-f]{17})$", + "type": "string" + }, + "FailedReason": { + "$ref": "#/definitions/FailedReason", + "description": "The failure reason, if any, for a create or delete endpoint operation." + }, + "Id": { + "description": "The ID of the endpoint.", + "maxLength": 500, + "minLength": 5, + "pattern": "^[a-zA-Z0-9]{19}$", + "type": "string" + }, + "NetworkInterfaces": { + "description": "The network interfaces of the endpoint.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/NetworkInterface" + }, + "type": "array", + "uniqueItems": true + }, + "OutpostId": { + "description": "The id of the customer outpost on which the bucket resides.", + "pattern": "^(op-[a-f0-9]{17}|\\d{12}|ec2)$", + "type": "string" + }, + "SecurityGroupId": { + "description": "The ID of the security group to use with the endpoint.", + "maxLength": 100, + "minLength": 1, + "pattern": "^sg-([0-9a-f]{8}|[0-9a-f]{17})$", + "type": "string" + }, + "Status": { + "enum": [ + "Available", + "Pending", + "Deleting", + "Create_Failed", + "Delete_Failed" + ], + "type": "string" + }, + "SubnetId": { + "description": "The ID of the subnet in the selected VPC. The subnet must belong to the Outpost.", + "maxLength": 100, + "minLength": 1, + "pattern": "^subnet-([0-9a-f]{8}|[0-9a-f]{17})$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CidrBlock", + "/properties/CreationTime", + "/properties/Id", + "/properties/NetworkInterfaces", + "/properties/Status" + ], + "required": [ + "OutpostId", + "SecurityGroupId", + "SubnetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3outposts.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::S3Outposts::Endpoint" +} diff --git a/src/schema/aws-s3tables-tablebucket.json b/src/schema/aws-s3tables-tablebucket.json new file mode 100644 index 00000000..2b01ca96 --- /dev/null +++ b/src/schema/aws-s3tables-tablebucket.json @@ -0,0 +1,136 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TableBucketName" + ], + "definitions": { + "EncryptionConfiguration": { + "additionalProperties": false, + "description": "Specifies encryption settings for the table bucket", + "properties": { + "KMSKeyArn": { + "description": "ARN of the KMS key to use for encryption", + "type": "string" + }, + "SSEAlgorithm": { + "description": "Server-side encryption algorithm", + "enum": [ + "AES256", + "aws:kms" + ], + "type": "string" + } + }, + "type": "object" + }, + "TableBucketARN": { + "description": "The Amazon Resource Name (ARN) of the specified table bucket.", + "examples": [ + "arn:aws:s3tables:us-west-2:123456789012:bucket/mytablebucket" + ], + "type": "string" + }, + "TableBucketName": { + "description": "A name for the table bucket.", + "maxLength": 63, + "minLength": 3, + "type": "string" + }, + "UnreferencedFileRemoval": { + "additionalProperties": false, + "description": "Settings governing the Unreferenced File Removal maintenance action. Unreferenced file removal identifies and deletes all objects that are not referenced by any table snapshots.", + "properties": { + "NoncurrentDays": { + "description": "S3 permanently deletes noncurrent objects after the number of days specified by the NoncurrentDays property.", + "minimum": 1, + "type": "integer" + }, + "Status": { + "description": "Indicates whether the Unreferenced File Removal maintenance action is enabled.", + "enum": [ + "Enabled", + "Disabled" + ], + "type": "string" + }, + "UnreferencedDays": { + "description": "For any object not referenced by your table and older than the UnreferencedDays property, S3 creates a delete marker and marks the object version as noncurrent.", + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Creates an Amazon S3 Tables table bucket in the same AWS Region where you create the AWS CloudFormation stack.", + "handlers": { + "create": { + "permissions": [ + "s3tables:CreateTableBucket", + "s3tables:PutTableBucketMaintenanceConfiguration", + "s3tables:PutTableBucketEncryption", + "s3tables:GetTableBucket", + "s3tables:GetTableBucketMaintenanceConfiguration", + "s3tables:GetTableBucketEncryption", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "s3tables:DeleteTableBucket" + ] + }, + "list": { + "permissions": [ + "s3tables:ListTableBuckets" + ] + }, + "read": { + "permissions": [ + "s3tables:GetTableBucket", + "s3tables:GetTableBucketMaintenanceConfiguration", + "s3tables:GetTableBucketEncryption" + ] + }, + "update": { + "permissions": [ + "s3tables:PutTableBucketMaintenanceConfiguration", + "s3tables:PutTableBucketEncryption", + "s3tables:GetTableBucketMaintenanceConfiguration", + "s3tables:GetTableBucketEncryption", + "s3tables:GetTableBucket", + "kms:DescribeKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/TableBucketARN" + ], + "properties": { + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration" + }, + "TableBucketARN": { + "$ref": "#/definitions/TableBucketARN" + }, + "TableBucketName": { + "$ref": "#/definitions/TableBucketName" + }, + "UnreferencedFileRemoval": { + "$ref": "#/definitions/UnreferencedFileRemoval" + } + }, + "readOnlyProperties": [ + "/properties/TableBucketARN" + ], + "required": [ + "TableBucketName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::S3Tables::TableBucket" +} diff --git a/src/schema/aws-s3tables-tablebucketpolicy.json b/src/schema/aws-s3tables-tablebucketpolicy.json new file mode 100644 index 00000000..fbf184a3 --- /dev/null +++ b/src/schema/aws-s3tables-tablebucketpolicy.json @@ -0,0 +1,77 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TableBucketARN" + ], + "definitions": { + "ResourcePolicy": { + "description": "A policy document containing permissions to add to the specified table bucket. In IAM, you must provide policy documents in JSON format. However, in CloudFormation you can provide the policy in JSON or YAML format because CloudFormation converts YAML to JSON before submitting it to IAM.", + "type": [ + "object", + "string" + ] + }, + "TableBucketARN": { + "description": "The Amazon Resource Name (ARN) of the table bucket to which the policy applies.", + "examples": [ + "arn:aws:s3tables:us-west-2:123456789012:bucket/mytablebucket" + ], + "type": "string" + } + }, + "description": "Applies an IAM resource policy to a table bucket.", + "handlers": { + "create": { + "permissions": [ + "s3tables:GetTableBucket", + "s3tables:GetTableBucketPolicy", + "s3tables:PutTableBucketPolicy" + ] + }, + "delete": { + "permissions": [ + "s3tables:GetTableBucketPolicy", + "s3tables:DeleteTableBucketPolicy" + ] + }, + "list": { + "permissions": [ + "s3tables:GetTableBucketPolicy", + "s3tables:ListTableBuckets" + ] + }, + "read": { + "permissions": [ + "s3tables:GetTableBucketPolicy" + ] + }, + "update": { + "permissions": [ + "s3tables:GetTableBucketPolicy", + "s3tables:PutTableBucketPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/TableBucketARN" + ], + "properties": { + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, + "TableBucketARN": { + "$ref": "#/definitions/TableBucketARN" + } + }, + "required": [ + "ResourcePolicy", + "TableBucketARN" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::S3Tables::TableBucketPolicy" +} diff --git a/src/schema/aws-sagemaker-app.json b/src/schema/aws-sagemaker-app.json index 0c4464ab..7b64bfc6 100644 --- a/src/schema/aws-sagemaker-app.json +++ b/src/schema/aws-sagemaker-app.json @@ -1,227 +1,227 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AppName", - "/properties/AppType", - "/properties/DomainId", - "/properties/UserProfileName", - "/properties/Tags", - "/properties/ResourceSpec" - ], - "definitions": { - "ResourceSpec": { - "additionalProperties": false, - "properties": { - "InstanceType": { - "description": "The instance type that the image version runs on.", - "enum": [ - "system", - "ml.t3.micro", - "ml.t3.small", - "ml.t3.medium", - "ml.t3.large", - "ml.t3.xlarge", - "ml.t3.2xlarge", - "ml.m5.large", - "ml.m5.xlarge", - "ml.m5.2xlarge", - "ml.m5.4xlarge", - "ml.m5.8xlarge", - "ml.m5.12xlarge", - "ml.m5.16xlarge", - "ml.m5.24xlarge", - "ml.c5.large", - "ml.c5.xlarge", - "ml.c5.2xlarge", - "ml.c5.4xlarge", - "ml.c5.9xlarge", - "ml.c5.12xlarge", - "ml.c5.18xlarge", - "ml.c5.24xlarge", - "ml.p3.2xlarge", - "ml.p3.8xlarge", - "ml.p3.16xlarge", - "ml.g4dn.xlarge", - "ml.g4dn.2xlarge", - "ml.g4dn.4xlarge", - "ml.g4dn.8xlarge", - "ml.g4dn.12xlarge", - "ml.g4dn.16xlarge", - "ml.r5.large", - "ml.r5.xlarge", - "ml.r5.2xlarge", - "ml.r5.4xlarge", - "ml.r5.8xlarge", - "ml.r5.12xlarge", - "ml.r5.16xlarge", - "ml.r5.24xlarge", - "ml.p3dn.24xlarge", - "ml.m5d.large", - "ml.m5d.xlarge", - "ml.m5d.2xlarge", - "ml.m5d.4xlarge", - "ml.m5d.8xlarge", - "ml.m5d.12xlarge", - "ml.m5d.16xlarge", - "ml.m5d.24xlarge", - "ml.g5.xlarge", - "ml.g5.2xlarge", - "ml.g5.4xlarge", - "ml.g5.8xlarge", - "ml.g5.12xlarge", - "ml.g5.16xlarge", - "ml.g5.24xlarge", - "ml.g5.48xlarge", - "ml.p4d.24xlarge", - "ml.p4de.24xlarge", - "ml.geospatial.interactive", - "ml.trn1.2xlarge", - "ml.trn1.32xlarge", - "ml.trn1n.32xlarge" - ], - "type": "string" - }, - "LifecycleConfigArn": { - "description": "The Amazon Resource Name (ARN) of the Lifecycle Configuration to attach to the Resource.", - "maxLength": 256, - "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", - "type": "string" - }, - "SageMakerImageArn": { - "description": "The ARN of the SageMaker image that the image version belongs to.", - "maxLength": 256, - "minLength": 1, - "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", - "type": "string" - }, - "SageMakerImageVersionArn": { - "description": "The ARN of the image version created on the instance.", - "maxLength": 256, - "minLength": 1, - "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SageMaker::App", - "handlers": { - "create": { - "permissions": [ - "sagemaker:CreateApp", - "sagemaker:DescribeApp" - ] - }, - "delete": { - "permissions": [ - "sagemaker:DeleteApp", - "sagemaker:DescribeApp" - ] - }, - "list": { - "permissions": [ - "sagemaker:ListApps" - ] - }, - "read": { - "permissions": [ - "sagemaker:DescribeApp", - "sagemaker:DescribeApp" - ] - } - }, - "primaryIdentifier": [ - "/properties/AppName", - "/properties/AppType", - "/properties/DomainId", - "/properties/UserProfileName" - ], - "properties": { - "AppArn": { - "description": "The Amazon Resource Name (ARN) of the app.", - "maxLength": 256, - "minLength": 1, - "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app/.*", - "type": "string" - }, - "AppName": { - "description": "The name of the app.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", - "type": "string" - }, - "AppType": { - "description": "The type of app.", - "enum": [ - "JupyterServer", - "KernelGateway", - "RStudioServerPro", - "RSessionGateway", - "Canvas" - ], - "type": "string" - }, - "DomainId": { - "description": "The domain ID.", - "maxLength": 63, - "minLength": 1, - "type": "string" - }, - "ResourceSpec": { - "$ref": "#/definitions/ResourceSpec", - "description": "The instance type and the Amazon Resource Name (ARN) of the SageMaker image created on the instance." - }, - "Tags": { - "description": "A list of tags to apply to the app.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "UserProfileName": { - "description": "The user profile name.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AppArn" - ], - "required": [ - "AppName", - "AppType", - "DomainId", - "UserProfileName" - ], - "typeName": "AWS::SageMaker::App", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppName", + "/properties/AppType", + "/properties/DomainId", + "/properties/UserProfileName", + "/properties/Tags", + "/properties/ResourceSpec" + ], + "definitions": { + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "description": "The instance type that the image version runs on.", + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "LifecycleConfigArn": { + "description": "The Amazon Resource Name (ARN) of the Lifecycle Configuration to attach to the Resource.", + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "SageMakerImageArn": { + "description": "The ARN of the SageMaker image that the image version belongs to.", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "description": "The ARN of the image version created on the instance.", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SageMaker::App", + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:DescribeApp" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteApp", + "sagemaker:DescribeApp" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListApps" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeApp", + "sagemaker:DescribeApp" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppName", + "/properties/AppType", + "/properties/DomainId", + "/properties/UserProfileName" + ], + "properties": { + "AppArn": { + "description": "The Amazon Resource Name (ARN) of the app.", + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app/.*", + "type": "string" + }, + "AppName": { + "description": "The name of the app.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "AppType": { + "description": "The type of app.", + "enum": [ + "JupyterServer", + "KernelGateway", + "RStudioServerPro", + "RSessionGateway", + "Canvas" + ], + "type": "string" + }, + "DomainId": { + "description": "The domain ID.", + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "ResourceSpec": { + "$ref": "#/definitions/ResourceSpec", + "description": "The instance type and the Amazon Resource Name (ARN) of the SageMaker image created on the instance." + }, + "Tags": { + "description": "A list of tags to apply to the app.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "UserProfileName": { + "description": "The user profile name.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AppArn" + ], + "required": [ + "AppName", + "AppType", + "DomainId", + "UserProfileName" + ], + "typeName": "AWS::SageMaker::App", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/schema/aws-sagemaker-appimageconfig.json b/src/schema/aws-sagemaker-appimageconfig.json index a75ab819..febfd188 100644 --- a/src/schema/aws-sagemaker-appimageconfig.json +++ b/src/schema/aws-sagemaker-appimageconfig.json @@ -1,276 +1,276 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AppImageConfigName", - "/properties/Tags" - ], - "definitions": { - "CodeEditorAppImageConfig": { - "additionalProperties": false, - "description": "The configuration for the kernels in a SageMaker image running as a CodeEditor app.", - "properties": { - "ContainerConfig": { - "$ref": "#/definitions/ContainerConfig", - "description": "The container configuration for a SageMaker image." - } - }, - "type": "object" - }, - "ContainerConfig": { - "additionalProperties": false, - "description": "The container configuration for a SageMaker image.", - "properties": { - "ContainerArguments": { - "description": "A list of arguments to apply to the container.", - "items": { - "$ref": "#/definitions/CustomImageContainerArguments" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "ContainerEntrypoint": { - "description": "The custom entry point to use on container.", - "items": { - "$ref": "#/definitions/CustomImageContainerEntrypoint" - }, - "maxItems": 1, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "ContainerEnvironmentVariables": { - "description": "A list of variables to apply to the custom container.", - "items": { - "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" - }, - "maxItems": 25, - "minItems": 0, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "CustomImageContainerArguments": { - "description": "The container image arguments", - "maxLength": 64, - "minLength": 1, - "pattern": "^(?!\\s*$).+", - "type": "string" - }, - "CustomImageContainerEntrypoint": { - "description": "The container entry point", - "maxLength": 256, - "minLength": 1, - "pattern": "^(?!\\s*$).+", - "type": "string" - }, - "CustomImageContainerEnvironmentVariable": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 256, - "minLength": 1, - "pattern": "^(?!\\s*$).+", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "pattern": "^(?!\\s*$).+", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "FileSystemConfig": { - "additionalProperties": false, - "description": "The Amazon Elastic File System (EFS) storage configuration for a SageMaker image.", - "properties": { - "DefaultGid": { - "description": "The default POSIX group ID (GID). If not specified, defaults to 100.", - "maximum": 65535, - "minimum": 0, - "type": "integer" - }, - "DefaultUid": { - "description": "The default POSIX user ID (UID). If not specified, defaults to 1000.", - "maximum": 65535, - "minimum": 0, - "type": "integer" - }, - "MountPath": { - "description": "The path within the image to mount the user's EFS home directory. The directory should be empty. If not specified, defaults to /home/sagemaker-user.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^/.*", - "type": "string" - } - }, - "type": "object" - }, - "JupyterLabAppImageConfig": { - "additionalProperties": false, - "description": "The configuration for the kernels in a SageMaker image running as a JupyterLab app.", - "properties": { - "ContainerConfig": { - "$ref": "#/definitions/ContainerConfig", - "description": "The container configuration for a SageMaker image." - } - }, - "type": "object" - }, - "KernelGatewayImageConfig": { - "additionalProperties": false, - "description": "The configuration for the file system and kernels in a SageMaker image running as a KernelGateway app.", - "properties": { - "FileSystemConfig": { - "$ref": "#/definitions/FileSystemConfig", - "description": "The Amazon Elastic File System (EFS) storage configuration for a SageMaker image." - }, - "KernelSpecs": { - "description": "The specification of the Jupyter kernels in the image.", - "items": { - "$ref": "#/definitions/KernelSpec" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "KernelSpecs" - ], - "type": "object" - }, - "KernelSpec": { - "additionalProperties": false, - "properties": { - "DisplayName": { - "description": "The display name of the kernel.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "The name of the kernel.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SageMaker::AppImageConfig", - "handlers": { - "create": { - "permissions": [ - "sagemaker:CreateAppImageConfig", - "sagemaker:DescribeAppImageConfig" - ] - }, - "delete": { - "permissions": [ - "sagemaker:DeleteAppImageConfig", - "sagemaker:DescribeAppImageConfig" - ] - }, - "list": { - "permissions": [ - "sagemaker:ListAppImageConfigs" - ] - }, - "read": { - "permissions": [ - "sagemaker:DescribeAppImageConfig" - ] - }, - "update": { - "permissions": [ - "sagemaker:UpdateAppImageConfig", - "sagemaker:DescribeAppImageConfig" - ] - } - }, - "primaryIdentifier": [ - "/properties/AppImageConfigName" - ], - "properties": { - "AppImageConfigArn": { - "description": "The Amazon Resource Name (ARN) of the AppImageConfig.", - "maxLength": 256, - "minLength": 1, - "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", - "type": "string" - }, - "AppImageConfigName": { - "description": "The Name of the AppImageConfig.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", - "type": "string" - }, - "CodeEditorAppImageConfig": { - "$ref": "#/definitions/CodeEditorAppImageConfig", - "description": "The CodeEditorAppImageConfig." - }, - "JupyterLabAppImageConfig": { - "$ref": "#/definitions/JupyterLabAppImageConfig", - "description": "The JupyterLabAppImageConfig." - }, - "KernelGatewayImageConfig": { - "$ref": "#/definitions/KernelGatewayImageConfig", - "description": "The KernelGatewayImageConfig." - }, - "Tags": { - "description": "A list of tags to apply to the AppImageConfig.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/AppImageConfigArn" - ], - "required": [ - "AppImageConfigName" - ], - "typeName": "AWS::SageMaker::AppImageConfig", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppImageConfig": { + "additionalProperties": false, + "description": "The configuration for the kernels in a SageMaker image running as a CodeEditor app.", + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig", + "description": "The container configuration for a SageMaker image." + } + }, + "type": "object" + }, + "ContainerConfig": { + "additionalProperties": false, + "description": "The container configuration for a SageMaker image.", + "properties": { + "ContainerArguments": { + "description": "A list of arguments to apply to the container.", + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "description": "The custom entry point to use on container.", + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "description": "A list of variables to apply to the custom container.", + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "description": "The container image arguments", + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "description": "The container entry point", + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "description": "The Amazon Elastic File System (EFS) storage configuration for a SageMaker image.", + "properties": { + "DefaultGid": { + "description": "The default POSIX group ID (GID). If not specified, defaults to 100.", + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "description": "The default POSIX user ID (UID). If not specified, defaults to 1000.", + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "description": "The path within the image to mount the user's EFS home directory. The directory should be empty. If not specified, defaults to /home/sagemaker-user.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "description": "The configuration for the kernels in a SageMaker image running as a JupyterLab app.", + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig", + "description": "The container configuration for a SageMaker image." + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "description": "The configuration for the file system and kernels in a SageMaker image running as a KernelGateway app.", + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig", + "description": "The Amazon Elastic File System (EFS) storage configuration for a SageMaker image." + }, + "KernelSpecs": { + "description": "The specification of the Jupyter kernels in the image.", + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "description": "The display name of the kernel.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "The name of the kernel.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SageMaker::AppImageConfig", + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "description": "The Amazon Resource Name (ARN) of the AppImageConfig.", + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "description": "The Name of the AppImageConfig.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "CodeEditorAppImageConfig": { + "$ref": "#/definitions/CodeEditorAppImageConfig", + "description": "The CodeEditorAppImageConfig." + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig", + "description": "The JupyterLabAppImageConfig." + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig", + "description": "The KernelGatewayImageConfig." + }, + "Tags": { + "description": "A list of tags to apply to the AppImageConfig.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/schema/aws-sagemaker-cluster.json b/src/schema/aws-sagemaker-cluster.json index 2f03ea0a..d948d190 100644 --- a/src/schema/aws-sagemaker-cluster.json +++ b/src/schema/aws-sagemaker-cluster.json @@ -1,401 +1,405 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ClusterName" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClusterName", - "/properties/VpcConfig", - "/properties/Orchestrator", - "/properties/InstanceGroups/*/ExecutionRole", - "/properties/InstanceGroups/*/InstanceGroupName", - "/properties/InstanceGroups/*/InstanceType", - "/properties/InstanceGroups/*/ThreadsPerCore" - ], - "definitions": { - "ClusterEbsVolumeConfig": { - "additionalProperties": false, - "description": "Defines the configuration for attaching additional Amazon Elastic Block Store (EBS) volumes to the instances in the SageMaker HyperPod cluster instance group. The additional EBS volume is attached to each instance within the SageMaker HyperPod cluster instance group and mounted to /opt/sagemaker.", - "properties": { - "VolumeSizeInGB": { - "description": "The size in gigabytes (GB) of the additional EBS volume to be attached to the instances in the SageMaker HyperPod cluster instance group. The additional EBS volume is attached to each instance within the SageMaker HyperPod cluster instance group and mounted to /opt/sagemaker.", - "maximum": 16384, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "ClusterInstanceGroup": { - "additionalProperties": false, - "description": "Details of an instance group in a SageMaker HyperPod cluster.", - "properties": { - "CurrentCount": { - "description": "The number of instances that are currently in the instance group of a SageMaker HyperPod cluster.", - "minimum": 0, - "type": "integer" - }, - "ExecutionRole": { - "$ref": "#/definitions/ExecutionRole" - }, - "InstanceCount": { - "description": "The number of instances you specified to add to the instance group of a SageMaker HyperPod cluster.", - "minimum": 0, - "type": "integer" - }, - "InstanceGroupName": { - "$ref": "#/definitions/InstanceGroupName" - }, - "InstanceStorageConfigs": { - "$ref": "#/definitions/ClusterInstanceStorageConfigs" - }, - "InstanceType": { - "$ref": "#/definitions/InstanceType" - }, - "LifeCycleConfig": { - "$ref": "#/definitions/ClusterLifeCycleConfig" - }, - "OnStartDeepHealthChecks": { - "$ref": "#/definitions/OnStartDeepHealthChecks" - }, - "ThreadsPerCore": { - "description": "The number you specified to TreadsPerCore in CreateCluster for enabling or disabling multithreading. For instance types that support multithreading, you can specify 1 for disabling multithreading and 2 for enabling multithreading.", - "maximum": 2, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "ExecutionRole", - "InstanceCount", - "InstanceGroupName", - "InstanceType", - "LifeCycleConfig" - ], - "type": "object" - }, - "ClusterInstanceGroupsList": { - "description": "The instance groups of the SageMaker HyperPod cluster.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ClusterInstanceGroup" - }, - "minItems": 1, - "type": "array" - }, - "ClusterInstanceStorageConfig": { - "description": "Defines the configuration for attaching additional storage to the instances in the SageMaker HyperPod cluster instance group.", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "EbsVolumeConfig": { - "$ref": "#/definitions/ClusterEbsVolumeConfig" - } - }, - "type": "object" - } - ], - "type": "object" - }, - "ClusterInstanceStorageConfigs": { - "description": "The instance storage configuration for the instance group.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ClusterInstanceStorageConfig" - }, - "maxItems": 1, - "type": "array" - }, - "ClusterLifeCycleConfig": { - "additionalProperties": false, - "description": "The lifecycle configuration for a SageMaker HyperPod cluster.", - "properties": { - "OnCreate": { - "description": "The file name of the entrypoint script of lifecycle scripts under SourceS3Uri. This entrypoint script runs during cluster creation.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[\\S\\s]+$", - "type": "string" - }, - "SourceS3Uri": { - "description": "An Amazon S3 bucket path where your lifecycle scripts are stored.", - "maxLength": 1024, - "pattern": "^(https|s3)://([^/]+)/?(.*)$", - "type": "string" - } - }, - "required": [ - "OnCreate", - "SourceS3Uri" - ], - "type": "object" - }, - "ClusterOrchestratorEksConfig": { - "additionalProperties": false, - "description": "Specifies parameter(s) related to EKS as orchestrator, e.g. the EKS cluster nodes will attach to,", - "properties": { - "ClusterArn": { - "description": "The ARN of the EKS cluster, such as arn:aws:eks:us-west-2:123456789012:cluster/my-eks-cluster", - "type": "string" - } - }, - "required": [ - "ClusterArn" - ], - "type": "object" - }, - "DeepHealthCheckType": { - "description": "The type of deep health check(s) to be performed on the instances in the SageMaker HyperPod cluster instance group.", - "enum": [ - "InstanceStress", - "InstanceConnectivity" - ], - "type": "string" - }, - "ExecutionRole": { - "description": "The execution role for the instance group to assume.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "InstanceGroupName": { - "description": "The name of the instance group of a SageMaker HyperPod cluster.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", - "type": "string" - }, - "InstanceType": { - "description": "The instance type of the instance group of a SageMaker HyperPod cluster.", - "type": "string" - }, - "OnStartDeepHealthChecks": { - "description": "Nodes will undergo advanced stress test to detect and replace faulty instances, based on the type of deep health check(s) passed in.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DeepHealthCheckType" - }, - "type": "array" - }, - "Orchestrator": { - "additionalProperties": false, - "description": "Specifies parameter(s) specific to the orchestrator, e.g. specify the EKS cluster.", - "properties": { - "Eks": { - "$ref": "#/definitions/ClusterOrchestratorEksConfig" - } - }, - "required": [ - "Eks" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "VpcConfig": { - "additionalProperties": false, - "description": "Specifies an Amazon Virtual Private Cloud (VPC) that your SageMaker jobs, hosted models, and compute resources have access to. You can control access to and from your resources by configuring a VPC.", - "properties": { - "SecurityGroupIds": { - "description": "The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the Subnets field.", - "insertionOrder": false, - "items": { - "maxLength": 32, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "Subnets": { - "description": "The ID of the subnets in the VPC to which you want to connect your training job or model.", - "insertionOrder": false, - "items": { - "maxLength": 32, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 16, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "SecurityGroupIds", - "Subnets" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SageMaker::Cluster", - "handlers": { - "create": { - "permissions": [ - "sagemaker:CreateCluster", - "sagemaker:DescribeCluster", - "sagemaker:AddTags", - "sagemaker:ListTags", - "eks:DescribeAccessEntry", - "eks:DescribeCluster", - "eks:CreateAccessEntry", - "eks:DeleteAccessEntry", - "eks:AssociateAccessPolicy", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ], - "timeoutInMinutes": 720 - }, - "delete": { - "permissions": [ - "sagemaker:DeleteCluster", - "sagemaker:DescribeCluster", - "eks:DescribeAccessEntry", - "eks:DeleteAccessEntry" - ], - "timeoutInMinutes": 720 - }, - "list": { - "permissions": [ - "sagemaker:ListClusters" - ] - }, - "read": { - "permissions": [ - "sagemaker:DescribeCluster", - "sagemaker:ListTags" - ] - }, - "update": { - "permissions": [ - "sagemaker:UpdateCluster", - "sagemaker:DescribeCluster", - "sagemaker:ListTags", - "sagemaker:AddTags", - "sagemaker:DeleteTags", - "eks:DescribeAccessEntry", - "eks:DescribeCluster", - "eks:CreateAccessEntry", - "eks:DeleteAccessEntry", - "iam:PassRole" - ], - "timeoutInMinutes": 720 - } - }, - "primaryIdentifier": [ - "/properties/ClusterArn" - ], - "properties": { - "ClusterArn": { - "description": "The Amazon Resource Name (ARN) of the HyperPod Cluster.", - "maxLength": 256, - "pattern": "^arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:cluster/[a-z0-9]{12}$", - "type": "string" - }, - "ClusterName": { - "description": "The name of the HyperPod Cluster.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$", - "type": "string" - }, - "ClusterStatus": { - "description": "The status of the HyperPod Cluster.", - "enum": [ - "Creating", - "Deleting", - "Failed", - "InService", - "RollingBack", - "SystemUpdating", - "Updating" - ], - "type": "string" - }, - "CreationTime": { - "description": "The time at which the HyperPod cluster was created.", - "type": "string" - }, - "FailureMessage": { - "description": "The failure message of the HyperPod Cluster.", - "type": "string" - }, - "InstanceGroups": { - "$ref": "#/definitions/ClusterInstanceGroupsList" - }, - "NodeRecovery": { - "description": "If node auto-recovery is set to true, faulty nodes will be replaced or rebooted when a failure is detected. If set to false, nodes will be labelled when a fault is detected.", - "enum": [ - "Automatic", - "None" - ], - "type": "string" - }, - "Orchestrator": { - "$ref": "#/definitions/Orchestrator" - }, - "Tags": { - "description": "Custom tags for managing the SageMaker HyperPod cluster as an AWS resource. You can add tags to your cluster in the same way you add them in other AWS services that support tagging.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "VpcConfig": { - "$ref": "#/definitions/VpcConfig" - } - }, - "readOnlyProperties": [ - "/properties/ClusterArn", - "/properties/CreationTime", - "/properties/ClusterStatus", - "/properties/FailureMessage", - "/properties/InstanceGroups/*/CurrentCount" - ], - "required": [ - "InstanceGroups" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "sagemaker:AddTags", - "sagemaker:ListTags", - "sagemaker:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SageMaker::Cluster" -} +{ + "additionalIdentifiers": [ + [ + "/properties/ClusterName" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterName", + "/properties/VpcConfig", + "/properties/Orchestrator", + "/properties/InstanceGroups/*/OverrideVpcConfig", + "/properties/InstanceGroups/*/ExecutionRole", + "/properties/InstanceGroups/*/InstanceGroupName", + "/properties/InstanceGroups/*/InstanceType", + "/properties/InstanceGroups/*/ThreadsPerCore" + ], + "definitions": { + "ClusterEbsVolumeConfig": { + "additionalProperties": false, + "description": "Defines the configuration for attaching additional Amazon Elastic Block Store (EBS) volumes to the instances in the SageMaker HyperPod cluster instance group. The additional EBS volume is attached to each instance within the SageMaker HyperPod cluster instance group and mounted to /opt/sagemaker.", + "properties": { + "VolumeSizeInGB": { + "description": "The size in gigabytes (GB) of the additional EBS volume to be attached to the instances in the SageMaker HyperPod cluster instance group. The additional EBS volume is attached to each instance within the SageMaker HyperPod cluster instance group and mounted to /opt/sagemaker.", + "maximum": 16384, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "ClusterInstanceGroup": { + "additionalProperties": false, + "description": "Details of an instance group in a SageMaker HyperPod cluster.", + "properties": { + "CurrentCount": { + "description": "The number of instances that are currently in the instance group of a SageMaker HyperPod cluster.", + "minimum": 0, + "type": "integer" + }, + "ExecutionRole": { + "$ref": "#/definitions/ExecutionRole" + }, + "InstanceCount": { + "description": "The number of instances you specified to add to the instance group of a SageMaker HyperPod cluster.", + "minimum": 0, + "type": "integer" + }, + "InstanceGroupName": { + "$ref": "#/definitions/InstanceGroupName" + }, + "InstanceStorageConfigs": { + "$ref": "#/definitions/ClusterInstanceStorageConfigs" + }, + "InstanceType": { + "$ref": "#/definitions/InstanceType" + }, + "LifeCycleConfig": { + "$ref": "#/definitions/ClusterLifeCycleConfig" + }, + "OnStartDeepHealthChecks": { + "$ref": "#/definitions/OnStartDeepHealthChecks" + }, + "OverrideVpcConfig": { + "$ref": "#/definitions/VpcConfig" + }, + "ThreadsPerCore": { + "description": "The number you specified to TreadsPerCore in CreateCluster for enabling or disabling multithreading. For instance types that support multithreading, you can specify 1 for disabling multithreading and 2 for enabling multithreading.", + "maximum": 2, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "ExecutionRole", + "InstanceCount", + "InstanceGroupName", + "InstanceType", + "LifeCycleConfig" + ], + "type": "object" + }, + "ClusterInstanceGroupsList": { + "description": "The instance groups of the SageMaker HyperPod cluster.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ClusterInstanceGroup" + }, + "minItems": 1, + "type": "array" + }, + "ClusterInstanceStorageConfig": { + "description": "Defines the configuration for attaching additional storage to the instances in the SageMaker HyperPod cluster instance group.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "EbsVolumeConfig": { + "$ref": "#/definitions/ClusterEbsVolumeConfig" + } + }, + "type": "object" + } + ], + "type": "object" + }, + "ClusterInstanceStorageConfigs": { + "description": "The instance storage configuration for the instance group.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ClusterInstanceStorageConfig" + }, + "maxItems": 1, + "type": "array" + }, + "ClusterLifeCycleConfig": { + "additionalProperties": false, + "description": "The lifecycle configuration for a SageMaker HyperPod cluster.", + "properties": { + "OnCreate": { + "description": "The file name of the entrypoint script of lifecycle scripts under SourceS3Uri. This entrypoint script runs during cluster creation.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\S\\s]+$", + "type": "string" + }, + "SourceS3Uri": { + "description": "An Amazon S3 bucket path where your lifecycle scripts are stored.", + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "required": [ + "OnCreate", + "SourceS3Uri" + ], + "type": "object" + }, + "ClusterOrchestratorEksConfig": { + "additionalProperties": false, + "description": "Specifies parameter(s) related to EKS as orchestrator, e.g. the EKS cluster nodes will attach to,", + "properties": { + "ClusterArn": { + "description": "The ARN of the EKS cluster, such as arn:aws:eks:us-west-2:123456789012:cluster/my-eks-cluster", + "type": "string" + } + }, + "required": [ + "ClusterArn" + ], + "type": "object" + }, + "DeepHealthCheckType": { + "description": "The type of deep health check(s) to be performed on the instances in the SageMaker HyperPod cluster instance group.", + "enum": [ + "InstanceStress", + "InstanceConnectivity" + ], + "type": "string" + }, + "ExecutionRole": { + "description": "The execution role for the instance group to assume.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "InstanceGroupName": { + "description": "The name of the instance group of a SageMaker HyperPod cluster.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "type": "string" + }, + "InstanceType": { + "description": "The instance type of the instance group of a SageMaker HyperPod cluster.", + "type": "string" + }, + "OnStartDeepHealthChecks": { + "description": "Nodes will undergo advanced stress test to detect and replace faulty instances, based on the type of deep health check(s) passed in.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DeepHealthCheckType" + }, + "type": "array" + }, + "Orchestrator": { + "additionalProperties": false, + "description": "Specifies parameter(s) specific to the orchestrator, e.g. specify the EKS cluster.", + "properties": { + "Eks": { + "$ref": "#/definitions/ClusterOrchestratorEksConfig" + } + }, + "required": [ + "Eks" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VpcConfig": { + "additionalProperties": false, + "description": "Specifies an Amazon Virtual Private Cloud (VPC) that your SageMaker jobs, hosted models, and compute resources have access to. You can control access to and from your resources by configuring a VPC.", + "properties": { + "SecurityGroupIds": { + "description": "The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the Subnets field.", + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "Subnets": { + "description": "The ID of the subnets in the VPC to which you want to connect your training job or model.", + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "SecurityGroupIds", + "Subnets" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SageMaker::Cluster", + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateCluster", + "sagemaker:DescribeCluster", + "sagemaker:AddTags", + "sagemaker:ListTags", + "eks:DescribeAccessEntry", + "eks:DescribeCluster", + "eks:CreateAccessEntry", + "eks:DeleteAccessEntry", + "eks:AssociateAccessPolicy", + "iam:CreateServiceLinkedRole", + "iam:PassRole" + ], + "timeoutInMinutes": 720 + }, + "delete": { + "permissions": [ + "sagemaker:DeleteCluster", + "sagemaker:DescribeCluster", + "eks:DescribeAccessEntry", + "eks:DeleteAccessEntry" + ], + "timeoutInMinutes": 720 + }, + "list": { + "permissions": [ + "sagemaker:ListClusters" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeCluster", + "sagemaker:ListTags" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateCluster", + "sagemaker:DescribeCluster", + "sagemaker:ListTags", + "sagemaker:AddTags", + "sagemaker:DeleteTags", + "eks:DescribeAccessEntry", + "eks:DescribeCluster", + "eks:CreateAccessEntry", + "eks:DeleteAccessEntry", + "iam:PassRole" + ], + "timeoutInMinutes": 720 + } + }, + "primaryIdentifier": [ + "/properties/ClusterArn" + ], + "properties": { + "ClusterArn": { + "description": "The Amazon Resource Name (ARN) of the HyperPod Cluster.", + "maxLength": 256, + "pattern": "^arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:cluster/[a-z0-9]{12}$", + "type": "string" + }, + "ClusterName": { + "description": "The name of the HyperPod Cluster.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ClusterStatus": { + "description": "The status of the HyperPod Cluster.", + "enum": [ + "Creating", + "Deleting", + "Failed", + "InService", + "RollingBack", + "SystemUpdating", + "Updating" + ], + "type": "string" + }, + "CreationTime": { + "description": "The time at which the HyperPod cluster was created.", + "type": "string" + }, + "FailureMessage": { + "description": "The failure message of the HyperPod Cluster.", + "type": "string" + }, + "InstanceGroups": { + "$ref": "#/definitions/ClusterInstanceGroupsList" + }, + "NodeRecovery": { + "description": "If node auto-recovery is set to true, faulty nodes will be replaced or rebooted when a failure is detected. If set to false, nodes will be labelled when a fault is detected.", + "enum": [ + "Automatic", + "None" + ], + "type": "string" + }, + "Orchestrator": { + "$ref": "#/definitions/Orchestrator" + }, + "Tags": { + "description": "Custom tags for managing the SageMaker HyperPod cluster as an AWS resource. You can add tags to your cluster in the same way you add them in other AWS services that support tagging.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "VpcConfig": { + "$ref": "#/definitions/VpcConfig" + } + }, + "readOnlyProperties": [ + "/properties/ClusterArn", + "/properties/CreationTime", + "/properties/ClusterStatus", + "/properties/FailureMessage", + "/properties/InstanceGroups/*/CurrentCount" + ], + "required": [ + "InstanceGroups" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "sagemaker:AddTags", + "sagemaker:ListTags", + "sagemaker:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SageMaker::Cluster" +} diff --git a/src/schema/aws-sagemaker-coderepository.json b/src/schema/aws-sagemaker-coderepository.json index 3fd702fb..4a6443a5 100644 --- a/src/schema/aws-sagemaker-coderepository.json +++ b/src/schema/aws-sagemaker-coderepository.json @@ -1,71 +1,71 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CodeRepositoryName" - ], - "definitions": { - "GitConfig": { - "additionalProperties": false, - "properties": { - "Branch": { - "type": "string" - }, - "RepositoryUrl": { - "type": "string" - }, - "SecretArn": { - "type": "string" - } - }, - "required": [ - "RepositoryUrl" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SageMaker::CodeRepository", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CodeRepositoryName": { - "type": "string" - }, - "GitConfig": { - "$ref": "#/definitions/GitConfig" - }, - "Id": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "GitConfig" - ], - "typeName": "AWS::SageMaker::CodeRepository" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CodeRepositoryName" + ], + "definitions": { + "GitConfig": { + "additionalProperties": false, + "properties": { + "Branch": { + "type": "string" + }, + "RepositoryUrl": { + "type": "string" + }, + "SecretArn": { + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SageMaker::CodeRepository", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CodeRepositoryName": { + "type": "string" + }, + "GitConfig": { + "$ref": "#/definitions/GitConfig" + }, + "Id": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "GitConfig" + ], + "typeName": "AWS::SageMaker::CodeRepository" +} diff --git a/src/schema/aws-sagemaker-dataqualityjobdefinition.json b/src/schema/aws-sagemaker-dataqualityjobdefinition.json index ec555daf..0747107d 100644 --- a/src/schema/aws-sagemaker-dataqualityjobdefinition.json +++ b/src/schema/aws-sagemaker-dataqualityjobdefinition.json @@ -1,591 +1,601 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/JobDefinitionName", - "/properties/DataQualityAppSpecification", - "/properties/DataQualityBaselineConfig", - "/properties/DataQualityJobInput", - "/properties/DataQualityJobOutputConfig", - "/properties/JobResources", - "/properties/NetworkConfig", - "/properties/RoleArn", - "/properties/StoppingCondition", - "/properties/Tags", - "/properties/EndpointName" - ], - "definitions": { - "BatchTransformInput": { - "additionalProperties": false, - "description": "The batch transform input for a monitoring job.", - "properties": { - "DataCapturedDestinationS3Uri": { - "description": "A URI that identifies the Amazon S3 storage location where Batch Transform Job captures data.", - "maxLength": 512, - "pattern": "^(https|s3)://([^/]+)/?(.*)$", - "type": "string" - }, - "DatasetFormat": { - "$ref": "#/definitions/DatasetFormat" - }, - "ExcludeFeaturesAttribute": { - "description": "Indexes or names of the features to be excluded from analysis", - "maxLength": 100, - "type": "string" - }, - "LocalPath": { - "description": "Path to the filesystem where the endpoint data is available to the container.", - "maxLength": 256, - "pattern": ".*", - "type": "string" - }, - "S3DataDistributionType": { - "description": "Whether input data distributed in Amazon S3 is fully replicated or sharded by an S3 key. Defauts to FullyReplicated", - "enum": [ - "FullyReplicated", - "ShardedByS3Key" - ], - "type": "string" - }, - "S3InputMode": { - "description": "Whether the Pipe or File is used as the input mode for transfering data for the monitoring job. Pipe mode is recommended for large datasets. File mode is useful for small files that fit in memory. Defaults to File.", - "enum": [ - "Pipe", - "File" - ], - "type": "string" - } - }, - "required": [ - "DataCapturedDestinationS3Uri", - "DatasetFormat", - "LocalPath" - ], - "type": "object" - }, - "ClusterConfig": { - "additionalProperties": false, - "description": "Configuration for the cluster used to run model monitoring jobs.", - "properties": { - "InstanceCount": { - "description": "The number of ML compute instances to use in the model monitoring job. For distributed processing jobs, specify a value greater than 1. The default value is 1.", - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "InstanceType": { - "description": "The ML compute instance type for the processing job.", - "type": "string" - }, - "VolumeKmsKeyId": { - "description": "The AWS Key Management Service (AWS KMS) key that Amazon SageMaker uses to encrypt data on the storage volume attached to the ML compute instance(s) that run the model monitoring job.", - "maximum": 2048, - "minimum": 1, - "type": "string" - }, - "VolumeSizeInGB": { - "description": "The size of the ML storage volume, in gigabytes, that you want to provision. You must specify sufficient ML storage for your scenario.", - "maximum": 16384, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "InstanceCount", - "InstanceType", - "VolumeSizeInGB" - ], - "type": "object" - }, - "ConstraintsResource": { - "additionalProperties": false, - "description": "The baseline constraints resource for a monitoring job.", - "properties": { - "S3Uri": { - "$ref": "#/definitions/S3Uri", - "description": "The Amazon S3 URI for baseline constraint file in Amazon S3 that the current monitoring job should validated against." - } - }, - "type": "object" - }, - "Csv": { - "description": "The CSV format", - "properties": { - "Header": { - "description": "A boolean flag indicating if given CSV has header", - "type": "boolean" - } - }, - "type": "object" - }, - "DataQualityAppSpecification": { - "additionalProperties": false, - "description": "Container image configuration object for the monitoring job.", - "properties": { - "ContainerArguments": { - "description": "An array of arguments for the container used to run the monitoring job.", - "items": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "maxItems": 50, - "type": "array" - }, - "ContainerEntrypoint": { - "description": "Specifies the entrypoint for a container used to run the monitoring job.", - "items": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "type": "array" - }, - "Environment": { - "additionalProperties": false, - "description": "Sets the environment variables in the Docker container", - "patternProperties": { - "[\\S\\s]*": { - "maxLength": 256, - "type": "string" - }, - "[a-zA-Z_][a-zA-Z0-9_]*": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "ImageUri": { - "description": "The container image to be run by the monitoring job.", - "maxLength": 255, - "pattern": ".*", - "type": "string" - }, - "PostAnalyticsProcessorSourceUri": { - "$ref": "#/definitions/S3Uri", - "description": "An Amazon S3 URI to a script that is called after analysis has been performed. Applicable only for the built-in (first party) containers." - }, - "RecordPreprocessorSourceUri": { - "$ref": "#/definitions/S3Uri", - "description": "An Amazon S3 URI to a script that is called per row prior to running analysis. It can base64 decode the payload and convert it into a flatted json so that the built-in container can use the converted data. Applicable only for the built-in (first party) containers" - } - }, - "required": [ - "ImageUri" - ], - "type": "object" - }, - "DataQualityBaselineConfig": { - "additionalProperties": false, - "description": "Baseline configuration used to validate that the data conforms to the specified constraints and statistics.", - "properties": { - "BaseliningJobName": { - "$ref": "#/definitions/ProcessingJobName" - }, - "ConstraintsResource": { - "$ref": "#/definitions/ConstraintsResource" - }, - "StatisticsResource": { - "$ref": "#/definitions/StatisticsResource" - } - }, - "type": "object" - }, - "DataQualityJobInput": { - "additionalProperties": false, - "description": "The inputs for a monitoring job.", - "properties": { - "BatchTransformInput": { - "$ref": "#/definitions/BatchTransformInput" - }, - "EndpointInput": { - "$ref": "#/definitions/EndpointInput" - } - }, - "type": "object" - }, - "DatasetFormat": { - "description": "The dataset format of the data to monitor", - "properties": { - "Csv": { - "$ref": "#/definitions/Csv" - }, - "Json": { - "$ref": "#/definitions/Json" - }, - "Parquet": { - "$ref": "#/definitions/Parquet" - } - }, - "type": "object" - }, - "EndpointInput": { - "additionalProperties": false, - "description": "The endpoint for a monitoring job.", - "properties": { - "EndpointName": { - "$ref": "#/definitions/EndpointName" - }, - "ExcludeFeaturesAttribute": { - "description": "Indexes or names of the features to be excluded from analysis", - "maxLength": 100, - "type": "string" - }, - "LocalPath": { - "description": "Path to the filesystem where the endpoint data is available to the container.", - "maxLength": 256, - "pattern": ".*", - "type": "string" - }, - "S3DataDistributionType": { - "description": "Whether input data distributed in Amazon S3 is fully replicated or sharded by an S3 key. Defauts to FullyReplicated", - "enum": [ - "FullyReplicated", - "ShardedByS3Key" - ], - "type": "string" - }, - "S3InputMode": { - "description": "Whether the Pipe or File is used as the input mode for transfering data for the monitoring job. Pipe mode is recommended for large datasets. File mode is useful for small files that fit in memory. Defaults to File.", - "enum": [ - "Pipe", - "File" - ], - "type": "string" - } - }, - "required": [ - "EndpointName", - "LocalPath" - ], - "type": "object" - }, - "EndpointName": { - "description": "The name of the endpoint used to run the monitoring job.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*", - "type": "string" - }, - "JobDefinitionName": { - "description": "The name of the job definition.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", - "type": "string" - }, - "Json": { - "description": "The Json format", - "properties": { - "Line": { - "description": "A boolean flag indicating if it is JSON line format", - "type": "boolean" - } - }, - "type": "object" - }, - "MonitoringOutput": { - "additionalProperties": false, - "description": "The output object for a monitoring job.", - "properties": { - "S3Output": { - "$ref": "#/definitions/S3Output" - } - }, - "required": [ - "S3Output" - ], - "type": "object" - }, - "MonitoringOutputConfig": { - "additionalProperties": false, - "description": "The output configuration for monitoring jobs.", - "properties": { - "KmsKeyId": { - "description": "The AWS Key Management Service (AWS KMS) key that Amazon SageMaker uses to encrypt the model artifacts at rest using Amazon S3 server-side encryption.", - "maxLength": 2048, - "pattern": ".*", - "type": "string" - }, - "MonitoringOutputs": { - "description": "Monitoring outputs for monitoring jobs. This is where the output of the periodic monitoring jobs is uploaded.", - "items": { - "$ref": "#/definitions/MonitoringOutput" - }, - "maxLength": 1, - "minLength": 1, - "type": "array" - } - }, - "required": [ - "MonitoringOutputs" - ], - "type": "object" - }, - "MonitoringResources": { - "additionalProperties": false, - "description": "Identifies the resources to deploy for a monitoring job.", - "properties": { - "ClusterConfig": { - "$ref": "#/definitions/ClusterConfig" - } - }, - "required": [ - "ClusterConfig" - ], - "type": "object" - }, - "NetworkConfig": { - "additionalProperties": false, - "description": "Networking options for a job, such as network traffic encryption between containers, whether to allow inbound and outbound network calls to and from containers, and the VPC subnets and security groups to use for VPC-enabled jobs.", - "properties": { - "EnableInterContainerTrafficEncryption": { - "description": "Whether to encrypt all communications between distributed processing jobs. Choose True to encrypt communications. Encryption provides greater security for distributed processing jobs, but the processing might take longer.", - "type": "boolean" - }, - "EnableNetworkIsolation": { - "description": "Whether to allow inbound and outbound network calls to and from the containers used for the processing job.", - "type": "boolean" - }, - "VpcConfig": { - "$ref": "#/definitions/VpcConfig" - } - }, - "type": "object" - }, - "Parquet": { - "description": "A flag indicate if the dataset format is Parquet", - "type": "boolean" - }, - "ProcessingJobName": { - "description": "The name of a processing job", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", - "type": "string" - }, - "S3Output": { - "additionalProperties": false, - "description": "Information about where and how to store the results of a monitoring job.", - "properties": { - "LocalPath": { - "description": "The local path to the Amazon S3 storage location where Amazon SageMaker saves the results of a monitoring job. LocalPath is an absolute path for the output data.", - "maxLength": 256, - "pattern": ".*", - "type": "string" - }, - "S3UploadMode": { - "description": "Whether to upload the results of the monitoring job continuously or after the job completes.", - "enum": [ - "Continuous", - "EndOfJob" - ], - "type": "string" - }, - "S3Uri": { - "description": "A URI that identifies the Amazon S3 storage location where Amazon SageMaker saves the results of a monitoring job.", - "maxLength": 512, - "pattern": "^(https|s3)://([^/]+)/?(.*)$", - "type": "string" - } - }, - "required": [ - "LocalPath", - "S3Uri" - ], - "type": "object" - }, - "S3Uri": { - "description": "The Amazon S3 URI.", - "maxLength": 1024, - "pattern": "^(https|s3)://([^/]+)/?(.*)$", - "type": "string" - }, - "StatisticsResource": { - "additionalProperties": false, - "description": "The baseline statistics resource for a monitoring job.", - "properties": { - "S3Uri": { - "$ref": "#/definitions/S3Uri", - "description": "The Amazon S3 URI for the baseline statistics file in Amazon S3 that the current monitoring job should be validated against." - } - }, - "type": "object" - }, - "StoppingCondition": { - "additionalProperties": false, - "description": "Specifies a time limit for how long the monitoring job is allowed to run.", - "properties": { - "MaxRuntimeInSeconds": { - "description": "The maximum runtime allowed in seconds.", - "maximum": 86400, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "MaxRuntimeInSeconds" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "VpcConfig": { - "additionalProperties": false, - "description": "Specifies a VPC that your training jobs and hosted models have access to. Control access to and from your training and model containers by configuring the VPC.", - "properties": { - "SecurityGroupIds": { - "description": "The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the Subnets field.", - "items": { - "maxLength": 32, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "Subnets": { - "description": "The ID of the subnets in the VPC to which you want to connect to your monitoring jobs.", - "items": { - "maxLength": 32, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 16, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "SecurityGroupIds", - "Subnets" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SageMaker::DataQualityJobDefinition", - "handlers": { - "create": { - "permissions": [ - "sagemaker:CreateDataQualityJobDefinition", - "sagemaker:DescribeDataQualityJobDefinition", - "sagemaker:AddTags", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "sagemaker:DeleteDataQualityJobDefinition" - ] - }, - "list": { - "permissions": [ - "sagemaker:ListDataQualityJobDefinitions", - "sagemaker:ListTags" - ] - }, - "read": { - "permissions": [ - "sagemaker:DescribeDataQualityJobDefinition" - ] - } - }, - "primaryIdentifier": [ - "/properties/JobDefinitionArn" - ], - "properties": { - "CreationTime": { - "description": "The time at which the job definition was created.", - "type": "string" - }, - "DataQualityAppSpecification": { - "$ref": "#/definitions/DataQualityAppSpecification" - }, - "DataQualityBaselineConfig": { - "$ref": "#/definitions/DataQualityBaselineConfig" - }, - "DataQualityJobInput": { - "$ref": "#/definitions/DataQualityJobInput" - }, - "DataQualityJobOutputConfig": { - "$ref": "#/definitions/MonitoringOutputConfig" - }, - "EndpointName": { - "$ref": "#/definitions/EndpointName" - }, - "JobDefinitionArn": { - "description": "The Amazon Resource Name (ARN) of job definition.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "JobDefinitionName": { - "$ref": "#/definitions/JobDefinitionName" - }, - "JobResources": { - "$ref": "#/definitions/MonitoringResources" - }, - "NetworkConfig": { - "$ref": "#/definitions/NetworkConfig" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume to perform tasks on your behalf.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "StoppingCondition": { - "$ref": "#/definitions/StoppingCondition" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/CreationTime", - "/properties/JobDefinitionArn" - ], - "required": [ - "DataQualityAppSpecification", - "DataQualityJobInput", - "DataQualityJobOutputConfig", - "JobResources", - "RoleArn" - ], - "typeName": "AWS::SageMaker::DataQualityJobDefinition", - "writeOnlyProperties": [ - "/properties/EndpointName", - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/JobDefinitionName", + "/properties/DataQualityAppSpecification", + "/properties/DataQualityBaselineConfig", + "/properties/DataQualityJobInput", + "/properties/DataQualityJobOutputConfig", + "/properties/JobResources", + "/properties/NetworkConfig", + "/properties/RoleArn", + "/properties/StoppingCondition", + "/properties/Tags", + "/properties/EndpointName" + ], + "definitions": { + "BatchTransformInput": { + "additionalProperties": false, + "description": "The batch transform input for a monitoring job.", + "properties": { + "DataCapturedDestinationS3Uri": { + "description": "A URI that identifies the Amazon S3 storage location where Batch Transform Job captures data.", + "maxLength": 512, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + }, + "DatasetFormat": { + "$ref": "#/definitions/DatasetFormat" + }, + "ExcludeFeaturesAttribute": { + "description": "Indexes or names of the features to be excluded from analysis", + "maxLength": 100, + "type": "string" + }, + "LocalPath": { + "description": "Path to the filesystem where the endpoint data is available to the container.", + "maxLength": 256, + "pattern": ".*", + "type": "string" + }, + "S3DataDistributionType": { + "description": "Whether input data distributed in Amazon S3 is fully replicated or sharded by an S3 key. Defauts to FullyReplicated", + "enum": [ + "FullyReplicated", + "ShardedByS3Key" + ], + "type": "string" + }, + "S3InputMode": { + "description": "Whether the Pipe or File is used as the input mode for transfering data for the monitoring job. Pipe mode is recommended for large datasets. File mode is useful for small files that fit in memory. Defaults to File.", + "enum": [ + "Pipe", + "File" + ], + "type": "string" + } + }, + "required": [ + "DataCapturedDestinationS3Uri", + "DatasetFormat", + "LocalPath" + ], + "type": "object" + }, + "ClusterConfig": { + "additionalProperties": false, + "description": "Configuration for the cluster used to run model monitoring jobs.", + "properties": { + "InstanceCount": { + "description": "The number of ML compute instances to use in the model monitoring job. For distributed processing jobs, specify a value greater than 1. The default value is 1.", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "InstanceType": { + "description": "The ML compute instance type for the processing job.", + "type": "string" + }, + "VolumeKmsKeyId": { + "description": "The AWS Key Management Service (AWS KMS) key that Amazon SageMaker uses to encrypt data on the storage volume attached to the ML compute instance(s) that run the model monitoring job.", + "maximum": 2048, + "minimum": 1, + "type": "string" + }, + "VolumeSizeInGB": { + "description": "The size of the ML storage volume, in gigabytes, that you want to provision. You must specify sufficient ML storage for your scenario.", + "maximum": 16384, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "InstanceCount", + "InstanceType", + "VolumeSizeInGB" + ], + "type": "object" + }, + "ConstraintsResource": { + "additionalProperties": false, + "description": "The baseline constraints resource for a monitoring job.", + "properties": { + "S3Uri": { + "$ref": "#/definitions/S3Uri", + "description": "The Amazon S3 URI for baseline constraint file in Amazon S3 that the current monitoring job should validated against." + } + }, + "type": "object" + }, + "Csv": { + "description": "The CSV format", + "properties": { + "Header": { + "description": "A boolean flag indicating if given CSV has header", + "type": "boolean" + } + }, + "type": "object" + }, + "DataQualityAppSpecification": { + "additionalProperties": false, + "description": "Container image configuration object for the monitoring job.", + "properties": { + "ContainerArguments": { + "description": "An array of arguments for the container used to run the monitoring job.", + "items": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "maxItems": 50, + "type": "array" + }, + "ContainerEntrypoint": { + "description": "Specifies the entrypoint for a container used to run the monitoring job.", + "items": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "type": "array" + }, + "Environment": { + "additionalProperties": false, + "description": "Sets the environment variables in the Docker container", + "patternProperties": { + "[\\S\\s]*": { + "maxLength": 256, + "type": "string" + }, + "[a-zA-Z_][a-zA-Z0-9_]*": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "ImageUri": { + "description": "The container image to be run by the monitoring job.", + "maxLength": 255, + "pattern": ".*", + "type": "string" + }, + "PostAnalyticsProcessorSourceUri": { + "$ref": "#/definitions/S3Uri", + "description": "An Amazon S3 URI to a script that is called after analysis has been performed. Applicable only for the built-in (first party) containers." + }, + "RecordPreprocessorSourceUri": { + "$ref": "#/definitions/S3Uri", + "description": "An Amazon S3 URI to a script that is called per row prior to running analysis. It can base64 decode the payload and convert it into a flatted json so that the built-in container can use the converted data. Applicable only for the built-in (first party) containers" + } + }, + "required": [ + "ImageUri" + ], + "type": "object" + }, + "DataQualityBaselineConfig": { + "additionalProperties": false, + "description": "Baseline configuration used to validate that the data conforms to the specified constraints and statistics.", + "properties": { + "BaseliningJobName": { + "$ref": "#/definitions/ProcessingJobName" + }, + "ConstraintsResource": { + "$ref": "#/definitions/ConstraintsResource" + }, + "StatisticsResource": { + "$ref": "#/definitions/StatisticsResource" + } + }, + "type": "object" + }, + "DataQualityJobInput": { + "additionalProperties": false, + "description": "The inputs for a monitoring job.", + "properties": { + "BatchTransformInput": { + "$ref": "#/definitions/BatchTransformInput" + }, + "EndpointInput": { + "$ref": "#/definitions/EndpointInput" + } + }, + "type": "object" + }, + "DatasetFormat": { + "description": "The dataset format of the data to monitor", + "properties": { + "Csv": { + "$ref": "#/definitions/Csv" + }, + "Json": { + "$ref": "#/definitions/Json" + }, + "Parquet": { + "$ref": "#/definitions/Parquet" + } + }, + "type": "object" + }, + "EndpointInput": { + "additionalProperties": false, + "description": "The endpoint for a monitoring job.", + "properties": { + "EndpointName": { + "$ref": "#/definitions/EndpointName" + }, + "ExcludeFeaturesAttribute": { + "description": "Indexes or names of the features to be excluded from analysis", + "maxLength": 100, + "type": "string" + }, + "LocalPath": { + "description": "Path to the filesystem where the endpoint data is available to the container.", + "maxLength": 256, + "pattern": ".*", + "type": "string" + }, + "S3DataDistributionType": { + "description": "Whether input data distributed in Amazon S3 is fully replicated or sharded by an S3 key. Defauts to FullyReplicated", + "enum": [ + "FullyReplicated", + "ShardedByS3Key" + ], + "type": "string" + }, + "S3InputMode": { + "description": "Whether the Pipe or File is used as the input mode for transfering data for the monitoring job. Pipe mode is recommended for large datasets. File mode is useful for small files that fit in memory. Defaults to File.", + "enum": [ + "Pipe", + "File" + ], + "type": "string" + } + }, + "required": [ + "EndpointName", + "LocalPath" + ], + "type": "object" + }, + "EndpointName": { + "description": "The name of the endpoint used to run the monitoring job.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*", + "type": "string" + }, + "JobDefinitionName": { + "description": "The name of the job definition.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "type": "string" + }, + "Json": { + "description": "The Json format", + "properties": { + "Line": { + "description": "A boolean flag indicating if it is JSON line format", + "type": "boolean" + } + }, + "type": "object" + }, + "MonitoringOutput": { + "additionalProperties": false, + "description": "The output object for a monitoring job.", + "properties": { + "S3Output": { + "$ref": "#/definitions/S3Output" + } + }, + "required": [ + "S3Output" + ], + "type": "object" + }, + "MonitoringOutputConfig": { + "additionalProperties": false, + "description": "The output configuration for monitoring jobs.", + "properties": { + "KmsKeyId": { + "description": "The AWS Key Management Service (AWS KMS) key that Amazon SageMaker uses to encrypt the model artifacts at rest using Amazon S3 server-side encryption.", + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "MonitoringOutputs": { + "description": "Monitoring outputs for monitoring jobs. This is where the output of the periodic monitoring jobs is uploaded.", + "items": { + "$ref": "#/definitions/MonitoringOutput" + }, + "maxLength": 1, + "minLength": 1, + "type": "array" + } + }, + "required": [ + "MonitoringOutputs" + ], + "type": "object" + }, + "MonitoringResources": { + "additionalProperties": false, + "description": "Identifies the resources to deploy for a monitoring job.", + "properties": { + "ClusterConfig": { + "$ref": "#/definitions/ClusterConfig" + } + }, + "required": [ + "ClusterConfig" + ], + "type": "object" + }, + "NetworkConfig": { + "additionalProperties": false, + "description": "Networking options for a job, such as network traffic encryption between containers, whether to allow inbound and outbound network calls to and from containers, and the VPC subnets and security groups to use for VPC-enabled jobs.", + "properties": { + "EnableInterContainerTrafficEncryption": { + "description": "Whether to encrypt all communications between distributed processing jobs. Choose True to encrypt communications. Encryption provides greater security for distributed processing jobs, but the processing might take longer.", + "type": "boolean" + }, + "EnableNetworkIsolation": { + "description": "Whether to allow inbound and outbound network calls to and from the containers used for the processing job.", + "type": "boolean" + }, + "VpcConfig": { + "$ref": "#/definitions/VpcConfig" + } + }, + "type": "object" + }, + "Parquet": { + "description": "A flag indicate if the dataset format is Parquet", + "type": "boolean" + }, + "ProcessingJobName": { + "description": "The name of a processing job", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "type": "string" + }, + "S3Output": { + "additionalProperties": false, + "description": "Information about where and how to store the results of a monitoring job.", + "properties": { + "LocalPath": { + "description": "The local path to the Amazon S3 storage location where Amazon SageMaker saves the results of a monitoring job. LocalPath is an absolute path for the output data.", + "maxLength": 256, + "pattern": ".*", + "type": "string" + }, + "S3UploadMode": { + "description": "Whether to upload the results of the monitoring job continuously or after the job completes.", + "enum": [ + "Continuous", + "EndOfJob" + ], + "type": "string" + }, + "S3Uri": { + "description": "A URI that identifies the Amazon S3 storage location where Amazon SageMaker saves the results of a monitoring job.", + "maxLength": 512, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "required": [ + "LocalPath", + "S3Uri" + ], + "type": "object" + }, + "S3Uri": { + "description": "The Amazon S3 URI.", + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + }, + "StatisticsResource": { + "additionalProperties": false, + "description": "The baseline statistics resource for a monitoring job.", + "properties": { + "S3Uri": { + "$ref": "#/definitions/S3Uri", + "description": "The Amazon S3 URI for the baseline statistics file in Amazon S3 that the current monitoring job should be validated against." + } + }, + "type": "object" + }, + "StoppingCondition": { + "additionalProperties": false, + "description": "Specifies a time limit for how long the monitoring job is allowed to run.", + "properties": { + "MaxRuntimeInSeconds": { + "description": "The maximum runtime allowed in seconds.", + "maximum": 86400, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "MaxRuntimeInSeconds" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VpcConfig": { + "additionalProperties": false, + "description": "Specifies a VPC that your training jobs and hosted models have access to. Control access to and from your training and model containers by configuring the VPC.", + "properties": { + "SecurityGroupIds": { + "description": "The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the Subnets field.", + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "Subnets": { + "description": "The ID of the subnets in the VPC to which you want to connect to your monitoring jobs.", + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "SecurityGroupIds", + "Subnets" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SageMaker::DataQualityJobDefinition", + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateDataQualityJobDefinition", + "sagemaker:DescribeDataQualityJobDefinition", + "sagemaker:AddTags", + "sagemaker:ListTags", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteDataQualityJobDefinition" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListDataQualityJobDefinitions", + "sagemaker:ListTags" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeDataQualityJobDefinition", + "sagemaker:ListTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/JobDefinitionArn" + ], + "properties": { + "CreationTime": { + "description": "The time at which the job definition was created.", + "type": "string" + }, + "DataQualityAppSpecification": { + "$ref": "#/definitions/DataQualityAppSpecification" + }, + "DataQualityBaselineConfig": { + "$ref": "#/definitions/DataQualityBaselineConfig" + }, + "DataQualityJobInput": { + "$ref": "#/definitions/DataQualityJobInput" + }, + "DataQualityJobOutputConfig": { + "$ref": "#/definitions/MonitoringOutputConfig" + }, + "EndpointName": { + "$ref": "#/definitions/EndpointName" + }, + "JobDefinitionArn": { + "description": "The Amazon Resource Name (ARN) of job definition.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "JobDefinitionName": { + "$ref": "#/definitions/JobDefinitionName" + }, + "JobResources": { + "$ref": "#/definitions/MonitoringResources" + }, + "NetworkConfig": { + "$ref": "#/definitions/NetworkConfig" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume to perform tasks on your behalf.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "StoppingCondition": { + "$ref": "#/definitions/StoppingCondition" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/JobDefinitionArn" + ], + "required": [ + "DataQualityAppSpecification", + "DataQualityJobInput", + "DataQualityJobOutputConfig", + "JobResources", + "RoleArn" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "sagemaker:AddTags", + "sagemaker:ListTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::SageMaker::DataQualityJobDefinition", + "writeOnlyProperties": [ + "/properties/EndpointName" + ] +} diff --git a/src/schema/aws-sagemaker-device.json b/src/schema/aws-sagemaker-device.json index 58510c27..807ae180 100644 --- a/src/schema/aws-sagemaker-device.json +++ b/src/schema/aws-sagemaker-device.json @@ -1,113 +1,113 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Device/DeviceName" - ], - "definitions": { - "Device": { - "additionalProperties": false, - "description": "Edge device you want to create", - "properties": { - "Description": { - "description": "Description of the device", - "maxLength": 40, - "minLength": 1, - "pattern": "[\\S\\s]+", - "type": "string" - }, - "DeviceName": { - "description": "The name of the device", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", - "type": "string" - }, - "IotThingName": { - "description": "AWS Internet of Things (IoT) object name.", - "maxLength": 128, - "pattern": "[a-zA-Z0-9:_-]+", - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^((?!aws:)[\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "description": "The key value of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::SageMaker::Device", - "handlers": { - "create": { - "permissions": [ - "sagemaker:RegisterDevices" - ] - }, - "delete": { - "permissions": [ - "sagemaker:DeregisterDevices" - ] - }, - "read": { - "permissions": [ - "sagemaker:DescribeDevice" - ] - }, - "update": { - "permissions": [ - "sagemaker:UpdateDevices" - ] - } - }, - "primaryIdentifier": [ - "/properties/Device/DeviceName" - ], - "properties": { - "Device": { - "$ref": "#/definitions/Device", - "description": "The Edge Device you want to register against a device fleet" - }, - "DeviceFleetName": { - "description": "The name of the edge device fleet", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*_*[a-zA-Z0-9])*$", - "type": "string" - }, - "Tags": { - "description": "Associate tags with the resource", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "required": [ - "DeviceFleetName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sagemaker-edge.git", - "typeName": "AWS::SageMaker::Device" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Device/DeviceName" + ], + "definitions": { + "Device": { + "additionalProperties": false, + "description": "Edge device you want to create", + "properties": { + "Description": { + "description": "Description of the device", + "maxLength": 40, + "minLength": 1, + "pattern": "[\\S\\s]+", + "type": "string" + }, + "DeviceName": { + "description": "The name of the device", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "type": "string" + }, + "IotThingName": { + "description": "AWS Internet of Things (IoT) object name.", + "maxLength": 128, + "pattern": "[a-zA-Z0-9:_-]+", + "type": "string" + } + }, + "required": [ + "DeviceName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^((?!aws:)[\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "description": "The key value of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::SageMaker::Device", + "handlers": { + "create": { + "permissions": [ + "sagemaker:RegisterDevices" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeregisterDevices" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeDevice" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateDevices" + ] + } + }, + "primaryIdentifier": [ + "/properties/Device/DeviceName" + ], + "properties": { + "Device": { + "$ref": "#/definitions/Device", + "description": "The Edge Device you want to register against a device fleet" + }, + "DeviceFleetName": { + "description": "The name of the edge device fleet", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*_*[a-zA-Z0-9])*$", + "type": "string" + }, + "Tags": { + "description": "Associate tags with the resource", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "required": [ + "DeviceFleetName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sagemaker-edge.git", + "typeName": "AWS::SageMaker::Device" +} diff --git a/src/schema/aws-sagemaker-devicefleet.json b/src/schema/aws-sagemaker-devicefleet.json index 0139fef6..b7f86e1f 100644 --- a/src/schema/aws-sagemaker-devicefleet.json +++ b/src/schema/aws-sagemaker-devicefleet.json @@ -1,124 +1,124 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DeviceFleetName" - ], - "definitions": { - "EdgeOutputConfig": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "description": "The KMS key id used for encryption on the S3 bucket", - "maxLength": 2048, - "minLength": 1, - "pattern": "[a-zA-Z0-9:_-]+", - "type": "string" - }, - "S3OutputLocation": { - "description": "The Amazon Simple Storage (S3) bucket URI", - "maxLength": 1024, - "pattern": "^s3://([^/]+)/?(.*)$", - "type": "string" - } - }, - "required": [ - "S3OutputLocation" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Key-value pair to associate as a tag for the resource", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^((?!aws:)[\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "description": "The key value of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::SageMaker::DeviceFleet", - "handlers": { - "create": { - "permissions": [ - "sagemaker:CreateDeviceFleet", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "sagemaker:DeleteDeviceFleet" - ] - }, - "read": { - "permissions": [ - "sagemaker:DescribeDeviceFleet" - ] - }, - "update": { - "permissions": [ - "sagemaker:UpdateDeviceFleet", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/DeviceFleetName" - ], - "properties": { - "Description": { - "description": "Description for the edge device fleet", - "maxLength": 800, - "minLength": 0, - "pattern": "[\\S\\s]+", - "type": "string" - }, - "DeviceFleetName": { - "description": "The name of the edge device fleet", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*_*[a-zA-Z0-9])*$", - "type": "string" - }, - "OutputConfig": { - "$ref": "#/definitions/EdgeOutputConfig", - "description": "S3 bucket and an ecryption key id (if available) to store outputs for the fleet" - }, - "RoleArn": { - "description": "Role associated with the device fleet", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "Tags": { - "description": "Associate tags with the resource", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "required": [ - "DeviceFleetName", - "OutputConfig", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sagemaker-edge.git", - "typeName": "AWS::SageMaker::DeviceFleet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DeviceFleetName" + ], + "definitions": { + "EdgeOutputConfig": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "description": "The KMS key id used for encryption on the S3 bucket", + "maxLength": 2048, + "minLength": 1, + "pattern": "[a-zA-Z0-9:_-]+", + "type": "string" + }, + "S3OutputLocation": { + "description": "The Amazon Simple Storage (S3) bucket URI", + "maxLength": 1024, + "pattern": "^s3://([^/]+)/?(.*)$", + "type": "string" + } + }, + "required": [ + "S3OutputLocation" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Key-value pair to associate as a tag for the resource", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^((?!aws:)[\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "description": "The key value of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::SageMaker::DeviceFleet", + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateDeviceFleet", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteDeviceFleet" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeDeviceFleet" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateDeviceFleet", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DeviceFleetName" + ], + "properties": { + "Description": { + "description": "Description for the edge device fleet", + "maxLength": 800, + "minLength": 0, + "pattern": "[\\S\\s]+", + "type": "string" + }, + "DeviceFleetName": { + "description": "The name of the edge device fleet", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*_*[a-zA-Z0-9])*$", + "type": "string" + }, + "OutputConfig": { + "$ref": "#/definitions/EdgeOutputConfig", + "description": "S3 bucket and an ecryption key id (if available) to store outputs for the fleet" + }, + "RoleArn": { + "description": "Role associated with the device fleet", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "Tags": { + "description": "Associate tags with the resource", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "required": [ + "DeviceFleetName", + "OutputConfig", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sagemaker-edge.git", + "typeName": "AWS::SageMaker::DeviceFleet" +} diff --git a/src/schema/aws-sagemaker-domain.json b/src/schema/aws-sagemaker-domain.json index d7c45105..03cf9716 100644 --- a/src/schema/aws-sagemaker-domain.json +++ b/src/schema/aws-sagemaker-domain.json @@ -1,1002 +1,1032 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AuthMode", - "/properties/DomainName", - "/properties/DomainSettings/RStudioServerProDomainSettings/DefaultResourceSpec", - "/properties/KmsKeyId", - "/properties/VpcId", - "/properties/Tags" - ], - "definitions": { - "AppLifecycleManagement": { - "additionalProperties": false, - "properties": { - "IdleSettings": { - "$ref": "#/definitions/IdleSettings" - } - }, - "type": "object" - }, - "AppType": { - "enum": [ - "JupyterServer", - "TensorBoard", - "RStudioServerPro", - "JupyterLab", - "CodeEditor", - "DetailedProfiler", - "Canvas" - ], - "type": "string" - }, - "CodeEditorAppSettings": { - "additionalProperties": false, - "description": "The CodeEditor app settings.", - "properties": { - "AppLifecycleManagement": { - "$ref": "#/definitions/AppLifecycleManagement" - }, - "CustomImages": { - "description": "A list of custom images for use for CodeEditor apps.", - "items": { - "$ref": "#/definitions/CustomImage" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "DefaultResourceSpec": { - "$ref": "#/definitions/ResourceSpec", - "description": "The default instance type and the Amazon Resource Name (ARN) of the default SageMaker image used by the CodeEditor app." - }, - "LifecycleConfigArns": { - "description": "A list of LifecycleConfigArns available for use with CodeEditor apps.", - "items": { - "$ref": "#/definitions/StudioLifecycleConfigArn" - }, - "maxItems": 30, - "minItems": 0, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "CodeRepository": { - "additionalProperties": false, - "properties": { - "RepositoryUrl": { - "description": "A CodeRepository (valid URL) to be used within Jupyter's Git extension.", - "maxLength": 256, - "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", - "type": "string" - } - }, - "required": [ - "RepositoryUrl" - ], - "type": "object" - }, - "CustomFileSystemConfig": { - "additionalProperties": false, - "properties": { - "EFSFileSystemConfig": { - "$ref": "#/definitions/EFSFileSystemConfig" - } - }, - "type": "object" - }, - "CustomImage": { - "additionalProperties": false, - "description": "A custom SageMaker image.", - "properties": { - "AppImageConfigName": { - "description": "The Name of the AppImageConfig.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", - "type": "string" - }, - "ImageName": { - "description": "The name of the CustomImage. Must be unique to your account.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", - "type": "string" - }, - "ImageVersionNumber": { - "description": "The version number of the CustomImage.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "AppImageConfigName", - "ImageName" - ], - "type": "object" - }, - "CustomPosixUserConfig": { - "additionalProperties": false, - "properties": { - "Gid": { - "maximum": 4000000, - "minimum": 1001, - "type": "integer" - }, - "Uid": { - "maximum": 4000000, - "minimum": 10000, - "type": "integer" - } - }, - "required": [ - "Uid", - "Gid" - ], - "type": "object" - }, - "DefaultEbsStorageSettings": { - "additionalProperties": false, - "description": "Properties related to the Amazon Elastic Block Store volume. Must be provided if storage type is Amazon EBS and must not be provided if storage type is not Amazon EBS", - "properties": { - "DefaultEbsVolumeSizeInGb": { - "$ref": "#/definitions/SpaceEbsVolumeSizeInGb", - "description": "Default size of the Amazon EBS volume in Gb" - }, - "MaximumEbsVolumeSizeInGb": { - "$ref": "#/definitions/SpaceEbsVolumeSizeInGb", - "description": "Maximum size of the Amazon EBS volume in Gb. Must be greater than or equal to the DefaultEbsVolumeSizeInGb." - } - }, - "required": [ - "DefaultEbsVolumeSizeInGb", - "MaximumEbsVolumeSizeInGb" - ], - "type": "object" - }, - "DefaultSpaceSettings": { - "additionalProperties": false, - "description": "A collection of settings that apply to spaces of Amazon SageMaker Studio. These settings are specified when the Create/Update Domain API is called.", - "properties": { - "CustomFileSystemConfigs": { - "items": { - "$ref": "#/definitions/CustomFileSystemConfig" - }, - "maxItems": 2, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "CustomPosixUserConfig": { - "$ref": "#/definitions/CustomPosixUserConfig", - "description": "The Jupyter lab's custom posix user configurations." - }, - "ExecutionRole": { - "description": "The execution role for the space.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "JupyterLabAppSettings": { - "$ref": "#/definitions/JupyterLabAppSettings", - "description": "The Jupyter lab's app settings." - }, - "JupyterServerAppSettings": { - "$ref": "#/definitions/JupyterServerAppSettings", - "description": "The Jupyter server's app settings." - }, - "KernelGatewayAppSettings": { - "$ref": "#/definitions/KernelGatewayAppSettings", - "description": "The kernel gateway app settings." - }, - "SecurityGroups": { - "description": "The security groups for the Amazon Virtual Private Cloud (VPC) that Studio uses for communication.", - "insertionOrder": false, - "items": { - "maxLength": 32, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 5, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "SpaceStorageSettings": { - "$ref": "#/definitions/DefaultSpaceStorageSettings", - "description": "The Jupyter lab's space storage settings." - } - }, - "required": [ - "ExecutionRole" - ], - "type": "object" - }, - "DefaultSpaceStorageSettings": { - "additionalProperties": false, - "description": "Default storage settings for a space.", - "properties": { - "DefaultEbsStorageSettings": { - "$ref": "#/definitions/DefaultEbsStorageSettings" - } - }, - "type": "object" - }, - "DockerSettings": { - "additionalProperties": false, - "description": "A collection of settings that are required to start docker-proxy server.", - "properties": { - "EnableDockerAccess": { - "description": "The flag to enable/disable docker-proxy server", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "VpcOnlyTrustedAccounts": { - "description": "A list of account id's that would be used to pull images from in VpcOnly mode", - "insertionOrder": false, - "items": { - "maxLength": 12, - "minLength": 12, - "pattern": "^\\d+$", - "type": "string" - }, - "maxItems": 20, - "minItems": 0, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "DomainSettings": { - "additionalProperties": false, - "description": "A collection of Domain settings.", - "properties": { - "DockerSettings": { - "$ref": "#/definitions/DockerSettings" - }, - "ExecutionRoleIdentityConfig": { - "description": "The configuration for attaching a SageMaker user profile name to the execution role as a sts:SourceIdentity key.", - "enum": [ - "USER_PROFILE_NAME", - "DISABLED" - ], - "type": "string" - }, - "RStudioServerProDomainSettings": { - "$ref": "#/definitions/RStudioServerProDomainSettings" - }, - "SecurityGroupIds": { - "description": "The security groups for the Amazon Virtual Private Cloud that the Domain uses for communication between Domain-level apps and user apps.", - "insertionOrder": false, - "items": { - "maxLength": 32, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 3, - "minItems": 1, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "EFSFileSystemConfig": { - "additionalProperties": false, - "properties": { - "FileSystemId": { - "maxLength": 21, - "minLength": 11, - "pattern": "^(fs-[0-9a-f]{8,})$", - "type": "string" - }, - "FileSystemPath": { - "maxLength": 256, - "minLength": 1, - "pattern": "^\\/\\S*$", - "type": "string" - } - }, - "required": [ - "FileSystemId" - ], - "type": "object" - }, - "IdleSettings": { - "additionalProperties": false, - "properties": { - "IdleTimeoutInMinutes": { - "$ref": "#/definitions/IdleTimeoutInMinutes" - }, - "LifecycleManagement": { - "$ref": "#/definitions/LifecycleManagement" - }, - "MaxIdleTimeoutInMinutes": { - "$ref": "#/definitions/MaxIdleTimeoutInMinutes" - }, - "MinIdleTimeoutInMinutes": { - "$ref": "#/definitions/MinIdleTimeoutInMinutes" - } - }, - "type": "object" - }, - "IdleTimeoutInMinutes": { - "description": "The idle timeout value set in minutes", - "maximum": 525600, - "minimum": 60, - "type": "integer" - }, - "JupyterLabAppSettings": { - "additionalProperties": false, - "description": "The JupyterLab app settings.", - "properties": { - "AppLifecycleManagement": { - "$ref": "#/definitions/AppLifecycleManagement" - }, - "CodeRepositories": { - "description": "A list of CodeRepositories available for use with JupyterLab apps.", - "items": { - "$ref": "#/definitions/CodeRepository" - }, - "maxItems": 30, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "CustomImages": { - "description": "A list of custom images for use for JupyterLab apps.", - "items": { - "$ref": "#/definitions/CustomImage" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "DefaultResourceSpec": { - "$ref": "#/definitions/ResourceSpec", - "description": "The default instance type and the Amazon Resource Name (ARN) of the default SageMaker image used by the JupyterLab app." - }, - "LifecycleConfigArns": { - "description": "A list of LifecycleConfigArns available for use with JupyterLab apps.", - "items": { - "$ref": "#/definitions/StudioLifecycleConfigArn" - }, - "maxItems": 30, - "minItems": 0, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "JupyterServerAppSettings": { - "additionalProperties": false, - "description": "The JupyterServer app settings.", - "properties": { - "DefaultResourceSpec": { - "$ref": "#/definitions/ResourceSpec" - }, - "LifecycleConfigArns": { - "description": "A list of LifecycleConfigArns available for use with JupyterServer apps.", - "items": { - "$ref": "#/definitions/StudioLifecycleConfigArn" - }, - "maxItems": 30, - "minItems": 0, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "KernelGatewayAppSettings": { - "additionalProperties": false, - "description": "The kernel gateway app settings.", - "properties": { - "CustomImages": { - "description": "A list of custom SageMaker images that are configured to run as a KernelGateway app.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CustomImage" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "DefaultResourceSpec": { - "$ref": "#/definitions/ResourceSpec", - "description": "The default instance type and the Amazon Resource Name (ARN) of the default SageMaker image used by the KernelGateway app." - }, - "LifecycleConfigArns": { - "description": "A list of LifecycleConfigArns available for use with KernelGateway apps.", - "items": { - "$ref": "#/definitions/StudioLifecycleConfigArn" - }, - "maxItems": 30, - "minItems": 0, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "LifecycleManagement": { - "description": "A flag to enable/disable AppLifecycleManagement settings", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "MaxIdleTimeoutInMinutes": { - "description": "The maximum idle timeout value set in minutes", - "maximum": 525600, - "minimum": 60, - "type": "integer" - }, - "MinIdleTimeoutInMinutes": { - "description": "The minimum idle timeout value set in minutes", - "maximum": 525600, - "minimum": 60, - "type": "integer" - }, - "MlTools": { - "enum": [ - "DataWrangler", - "FeatureStore", - "EmrClusters", - "AutoMl", - "Experiments", - "Training", - "ModelEvaluation", - "Pipelines", - "Models", - "JumpStart", - "InferenceRecommender", - "Endpoints", - "Projects", - "InferenceOptimization" - ], - "type": "string" - }, - "RSessionAppSettings": { - "additionalProperties": false, - "description": "A collection of settings that apply to an RSessionGateway app.", - "properties": { - "CustomImages": { - "description": "A list of custom SageMaker images that are configured to run as a KernelGateway app.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CustomImage" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "DefaultResourceSpec": { - "$ref": "#/definitions/ResourceSpec" - } - }, - "type": "object" - }, - "RStudioServerProAppSettings": { - "additionalProperties": false, - "description": "A collection of settings that configure user interaction with the RStudioServerPro app.", - "properties": { - "AccessStatus": { - "description": "Indicates whether the current user has access to the RStudioServerPro app.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "UserGroup": { - "description": "The level of permissions that the user has within the RStudioServerPro app. This value defaults to User. The Admin value allows the user access to the RStudio Administrative Dashboard.", - "enum": [ - "R_STUDIO_ADMIN", - "R_STUDIO_USER" - ], - "type": "string" - } - }, - "type": "object" - }, - "RStudioServerProDomainSettings": { - "additionalProperties": false, - "description": "A collection of settings that update the current configuration for the RStudioServerPro Domain-level app.", - "properties": { - "DefaultResourceSpec": { - "$ref": "#/definitions/ResourceSpec" - }, - "DomainExecutionRoleArn": { - "description": "The ARN of the execution role for the RStudioServerPro Domain-level app.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "RStudioConnectUrl": { - "description": "A URL pointing to an RStudio Connect server.", - "pattern": "^(https:|http:|www\\.)\\S*", - "type": "string" - }, - "RStudioPackageManagerUrl": { - "description": "A URL pointing to an RStudio Package Manager server.", - "pattern": "^(https:|http:|www\\.)\\S*", - "type": "string" - } - }, - "required": [ - "DomainExecutionRoleArn" - ], - "type": "object" - }, - "ResourceSpec": { - "additionalProperties": false, - "properties": { - "InstanceType": { - "description": "The instance type that the image version runs on.", - "enum": [ - "system", - "ml.t3.micro", - "ml.t3.small", - "ml.t3.medium", - "ml.t3.large", - "ml.t3.xlarge", - "ml.t3.2xlarge", - "ml.m5.large", - "ml.m5.xlarge", - "ml.m5.2xlarge", - "ml.m5.4xlarge", - "ml.m5.8xlarge", - "ml.m5.12xlarge", - "ml.m5.16xlarge", - "ml.m5.24xlarge", - "ml.c5.large", - "ml.c5.xlarge", - "ml.c5.2xlarge", - "ml.c5.4xlarge", - "ml.c5.9xlarge", - "ml.c5.12xlarge", - "ml.c5.18xlarge", - "ml.c5.24xlarge", - "ml.p3.2xlarge", - "ml.p3.8xlarge", - "ml.p3.16xlarge", - "ml.g4dn.xlarge", - "ml.g4dn.2xlarge", - "ml.g4dn.4xlarge", - "ml.g4dn.8xlarge", - "ml.g4dn.12xlarge", - "ml.g4dn.16xlarge", - "ml.r5.large", - "ml.r5.xlarge", - "ml.r5.2xlarge", - "ml.r5.4xlarge", - "ml.r5.8xlarge", - "ml.r5.12xlarge", - "ml.r5.16xlarge", - "ml.r5.24xlarge", - "ml.p3dn.24xlarge", - "ml.m5d.large", - "ml.m5d.xlarge", - "ml.m5d.2xlarge", - "ml.m5d.4xlarge", - "ml.m5d.8xlarge", - "ml.m5d.12xlarge", - "ml.m5d.16xlarge", - "ml.m5d.24xlarge", - "ml.g5.xlarge", - "ml.g5.2xlarge", - "ml.g5.4xlarge", - "ml.g5.8xlarge", - "ml.g5.12xlarge", - "ml.g5.16xlarge", - "ml.g5.24xlarge", - "ml.g5.48xlarge", - "ml.p4d.24xlarge", - "ml.p4de.24xlarge", - "ml.geospatial.interactive", - "ml.trn1.2xlarge", - "ml.trn1.32xlarge", - "ml.trn1n.32xlarge" - ], - "type": "string" - }, - "LifecycleConfigArn": { - "description": "The Amazon Resource Name (ARN) of the Lifecycle Configuration to attach to the Resource.", - "maxLength": 256, - "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", - "type": "string" - }, - "SageMakerImageArn": { - "description": "The Amazon Resource Name (ARN) of the SageMaker image that the image version belongs to.", - "maxLength": 256, - "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", - "type": "string" - }, - "SageMakerImageVersionArn": { - "description": "The Amazon Resource Name (ARN) of the image version created on the instance.", - "maxLength": 256, - "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", - "type": "string" - } - }, - "type": "object" - }, - "SharingSettings": { - "additionalProperties": false, - "description": "Specifies options when sharing an Amazon SageMaker Studio notebook. These settings are specified as part of DefaultUserSettings when the CreateDomain API is called, and as part of UserSettings when the CreateUserProfile API is called.", - "properties": { - "NotebookOutputOption": { - "description": "Whether to include the notebook cell output when sharing the notebook. The default is Disabled.", - "enum": [ - "Allowed", - "Disabled" - ], - "type": "string" - }, - "S3KmsKeyId": { - "description": "When NotebookOutputOption is Allowed, the AWS Key Management Service (KMS) encryption key ID used to encrypt the notebook cell output in the Amazon S3 bucket.", - "maxLength": 2048, - "pattern": ".*", - "type": "string" - }, - "S3OutputPath": { - "description": "When NotebookOutputOption is Allowed, the Amazon S3 bucket used to store the shared notebook snapshots.", - "maxLength": 1024, - "pattern": "^(https|s3)://([^/]+)/?(.*)$", - "type": "string" - } - }, - "type": "object" - }, - "SpaceEbsVolumeSizeInGb": { - "maximum": 16384, - "minimum": 5, - "type": "integer" - }, - "StudioLifecycleConfigArn": { - "description": "The Amazon Resource Name (ARN) of the Lifecycle Configuration to attach to the Resource.", - "maxLength": 256, - "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", - "type": "string" - }, - "StudioWebPortalSettings": { - "additionalProperties": false, - "description": "Studio settings. If these settings are applied on a user level, they take priority over the settings applied on a domain level.", - "properties": { - "HiddenAppTypes": { - "description": "Applications supported in Studio that are hidden from the Studio left navigation pane.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AppType" - }, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "HiddenMlTools": { - "description": "The machine learning tools that are hidden from the Studio left navigation pane.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MlTools" - }, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UserSettings": { - "additionalProperties": false, - "description": "A collection of settings that apply to users of Amazon SageMaker Studio. These settings are specified when the CreateUserProfile API is called, and as DefaultUserSettings when the CreateDomain API is called.", - "properties": { - "CodeEditorAppSettings": { - "$ref": "#/definitions/CodeEditorAppSettings" - }, - "CustomFileSystemConfigs": { - "items": { - "$ref": "#/definitions/CustomFileSystemConfig" - }, - "maxItems": 2, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "CustomPosixUserConfig": { - "$ref": "#/definitions/CustomPosixUserConfig" - }, - "DefaultLandingUri": { - "description": "Defines which Amazon SageMaker application users are directed to by default.", - "maxLength": 1023, - "type": "string" - }, - "ExecutionRole": { - "description": "The execution role for the user.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "JupyterLabAppSettings": { - "$ref": "#/definitions/JupyterLabAppSettings" - }, - "JupyterServerAppSettings": { - "$ref": "#/definitions/JupyterServerAppSettings", - "description": "The Jupyter server's app settings." - }, - "KernelGatewayAppSettings": { - "$ref": "#/definitions/KernelGatewayAppSettings", - "description": "The kernel gateway app settings." - }, - "RSessionAppSettings": { - "$ref": "#/definitions/RSessionAppSettings" - }, - "RStudioServerProAppSettings": { - "$ref": "#/definitions/RStudioServerProAppSettings" - }, - "SecurityGroups": { - "description": "The security groups for the Amazon Virtual Private Cloud (VPC) that Studio uses for communication.", - "insertionOrder": false, - "items": { - "maxLength": 32, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 5, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "SharingSettings": { - "$ref": "#/definitions/SharingSettings", - "description": "The sharing settings." - }, - "SpaceStorageSettings": { - "$ref": "#/definitions/DefaultSpaceStorageSettings" - }, - "StudioWebPortal": { - "description": "Indicates whether the Studio experience is available to users. If not, users cannot access Studio.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "StudioWebPortalSettings": { - "$ref": "#/definitions/StudioWebPortalSettings" - } - }, - "required": [ - "ExecutionRole" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SageMaker::Domain", - "handlers": { - "create": { - "permissions": [ - "sagemaker:CreateApp", - "sagemaker:CreateDomain", - "sagemaker:DescribeDomain", - "sagemaker:DescribeImage", - "sagemaker:DescribeImageVersion", - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "efs:CreateFileSystem", - "kms:CreateGrant", - "kms:Decrypt", - "kms:DescribeKey", - "kms:GenerateDataKeyWithoutPlainText" - ] - }, - "delete": { - "permissions": [ - "sagemaker:DeleteApp", - "sagemaker:DeleteDomain", - "sagemaker:DescribeDomain" - ] - }, - "list": { - "permissions": [ - "sagemaker:ListDomains" - ] - }, - "read": { - "permissions": [ - "sagemaker:DescribeDomain" - ] - }, - "update": { - "permissions": [ - "sagemaker:CreateApp", - "sagemaker:UpdateDomain", - "sagemaker:DescribeDomain", - "sagemaker:DescribeImage", - "sagemaker:DescribeImageVersion", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainId" - ], - "properties": { - "AppNetworkAccessType": { - "description": "Specifies the VPC used for non-EFS traffic. The default value is PublicInternetOnly.", - "enum": [ - "PublicInternetOnly", - "VpcOnly" - ], - "type": "string" - }, - "AppSecurityGroupManagement": { - "description": "The entity that creates and manages the required security groups for inter-app communication in VPCOnly mode. Required when CreateDomain.AppNetworkAccessType is VPCOnly and DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleArn is provided.", - "enum": [ - "Service", - "Customer" - ], - "type": "string" - }, - "AuthMode": { - "description": "The mode of authentication that members use to access the domain.", - "enum": [ - "SSO", - "IAM" - ], - "type": "string" - }, - "DefaultSpaceSettings": { - "$ref": "#/definitions/DefaultSpaceSettings", - "description": "The default space settings." - }, - "DefaultUserSettings": { - "$ref": "#/definitions/UserSettings", - "description": "The default user settings." - }, - "DomainArn": { - "description": "The Amazon Resource Name (ARN) of the created domain.", - "maxLength": 256, - "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:domain/.*", - "type": "string" - }, - "DomainId": { - "description": "The domain name.", - "maxLength": 63, - "pattern": "^d-(-*[a-z0-9])+", - "type": "string" - }, - "DomainName": { - "description": "A name for the domain.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", - "type": "string" - }, - "DomainSettings": { - "$ref": "#/definitions/DomainSettings" - }, - "HomeEfsFileSystemId": { - "description": "The ID of the Amazon Elastic File System (EFS) managed by this Domain.", - "maxLength": 32, - "type": "string" - }, - "KmsKeyId": { - "description": "SageMaker uses AWS KMS to encrypt the EFS volume attached to the domain with an AWS managed customer master key (CMK) by default.", - "maxLength": 2048, - "pattern": ".*", - "type": "string" - }, - "SecurityGroupIdForDomainBoundary": { - "description": "The ID of the security group that authorizes traffic between the RSessionGateway apps and the RStudioServerPro app.", - "maxLength": 32, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "SingleSignOnApplicationArn": { - "description": "The ARN of the application managed by SageMaker in IAM Identity Center. This value is only returned for domains created after October 1, 2023.", - "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::[0-9]+:application/[a-zA-Z0-9-_.]+/apl-[a-zA-Z0-9]+$", - "type": "string" - }, - "SingleSignOnManagedApplicationInstanceId": { - "description": "The SSO managed application instance ID.", - "maxLength": 256, - "type": "string" - }, - "SubnetIds": { - "description": "The VPC subnets that Studio uses for communication.", - "insertionOrder": false, - "items": { - "maxLength": 32, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 16, - "minItems": 1, - "type": "array", - "uniqueItems": false - }, - "TagPropagation": { - "description": "Indicates whether the tags added to Domain, User Profile and Space entity is propagated to all SageMaker resources.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "Tags": { - "description": "A list of tags to apply to the user profile.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "Url": { - "description": "The URL to the created domain.", - "maxLength": 1024, - "type": "string" - }, - "VpcId": { - "description": "The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for communication.", - "maxLength": 32, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/DomainArn", - "/properties/Url", - "/properties/DomainId", - "/properties/HomeEfsFileSystemId", - "/properties/SecurityGroupIdForDomainBoundary", - "/properties/SingleSignOnManagedApplicationInstanceId", - "/properties/SingleSignOnApplicationArn" - ], - "required": [ - "AuthMode", - "DefaultUserSettings", - "DomainName", - "SubnetIds", - "VpcId" - ], - "typeName": "AWS::SageMaker::Domain", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AuthMode", + "/properties/DomainName", + "/properties/DomainSettings/RStudioServerProDomainSettings/DefaultResourceSpec", + "/properties/KmsKeyId", + "/properties/VpcId", + "/properties/Tags" + ], + "definitions": { + "AppLifecycleManagement": { + "additionalProperties": false, + "properties": { + "IdleSettings": { + "$ref": "#/definitions/IdleSettings" + } + }, + "type": "object" + }, + "AppType": { + "enum": [ + "JupyterServer", + "TensorBoard", + "RStudioServerPro", + "JupyterLab", + "CodeEditor", + "DetailedProfiler", + "Canvas" + ], + "type": "string" + }, + "CodeEditorAppSettings": { + "additionalProperties": false, + "description": "The CodeEditor app settings.", + "properties": { + "AppLifecycleManagement": { + "$ref": "#/definitions/AppLifecycleManagement" + }, + "CustomImages": { + "description": "A list of custom images for use for CodeEditor apps.", + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 200, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec", + "description": "The default instance type and the Amazon Resource Name (ARN) of the default SageMaker image used by the CodeEditor app." + }, + "LifecycleConfigArns": { + "description": "A list of LifecycleConfigArns available for use with CodeEditor apps.", + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "description": "A CodeRepository (valid URL) to be used within Jupyter's Git extension.", + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + }, + "FSxLustreFileSystemConfig": { + "$ref": "#/definitions/FSxLustreFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "description": "A custom SageMaker image.", + "properties": { + "AppImageConfigName": { + "description": "The Name of the AppImageConfig.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "description": "The name of the CustomImage. Must be unique to your account.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "description": "The version number of the CustomImage.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "description": "Properties related to the Amazon Elastic Block Store volume. Must be provided if storage type is Amazon EBS and must not be provided if storage type is not Amazon EBS", + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb", + "description": "Default size of the Amazon EBS volume in Gb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb", + "description": "Maximum size of the Amazon EBS volume in Gb. Must be greater than or equal to the DefaultEbsVolumeSizeInGb." + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceSettings": { + "additionalProperties": false, + "description": "A collection of settings that apply to spaces of Amazon SageMaker Studio. These settings are specified when the Create/Update Domain API is called.", + "properties": { + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig", + "description": "The Jupyter lab's custom posix user configurations." + }, + "ExecutionRole": { + "description": "The execution role for the space.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings", + "description": "The Jupyter lab's app settings." + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings", + "description": "The Jupyter server's app settings." + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings", + "description": "The kernel gateway app settings." + }, + "SecurityGroups": { + "description": "The security groups for the Amazon Virtual Private Cloud (VPC) that Studio uses for communication.", + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings", + "description": "The Jupyter lab's space storage settings." + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "description": "Default storage settings for a space.", + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "DockerSettings": { + "additionalProperties": false, + "description": "A collection of settings that are required to start docker-proxy server.", + "properties": { + "EnableDockerAccess": { + "description": "The flag to enable/disable docker-proxy server", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "VpcOnlyTrustedAccounts": { + "description": "A list of account id's that would be used to pull images from in VpcOnly mode", + "insertionOrder": false, + "items": { + "maxLength": 12, + "minLength": 12, + "pattern": "^\\d+$", + "type": "string" + }, + "maxItems": 20, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DomainSettings": { + "additionalProperties": false, + "description": "A collection of Domain settings.", + "properties": { + "DockerSettings": { + "$ref": "#/definitions/DockerSettings" + }, + "ExecutionRoleIdentityConfig": { + "description": "The configuration for attaching a SageMaker user profile name to the execution role as a sts:SourceIdentity key.", + "enum": [ + "USER_PROFILE_NAME", + "DISABLED" + ], + "type": "string" + }, + "RStudioServerProDomainSettings": { + "$ref": "#/definitions/RStudioServerProDomainSettings" + }, + "SecurityGroupIds": { + "description": "The security groups for the Amazon Virtual Private Cloud that the Domain uses for communication between Domain-level apps and user apps.", + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "FSxLustreFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "IdleSettings": { + "additionalProperties": false, + "properties": { + "IdleTimeoutInMinutes": { + "$ref": "#/definitions/IdleTimeoutInMinutes" + }, + "LifecycleManagement": { + "$ref": "#/definitions/LifecycleManagement" + }, + "MaxIdleTimeoutInMinutes": { + "$ref": "#/definitions/MaxIdleTimeoutInMinutes" + }, + "MinIdleTimeoutInMinutes": { + "$ref": "#/definitions/MinIdleTimeoutInMinutes" + } + }, + "type": "object" + }, + "IdleTimeoutInMinutes": { + "description": "The idle timeout value set in minutes", + "maximum": 525600, + "minimum": 60, + "type": "integer" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "description": "The JupyterLab app settings.", + "properties": { + "AppLifecycleManagement": { + "$ref": "#/definitions/AppLifecycleManagement" + }, + "CodeRepositories": { + "description": "A list of CodeRepositories available for use with JupyterLab apps.", + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "description": "A list of custom images for use for JupyterLab apps.", + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 200, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec", + "description": "The default instance type and the Amazon Resource Name (ARN) of the default SageMaker image used by the JupyterLab app." + }, + "LifecycleConfigArns": { + "description": "A list of LifecycleConfigArns available for use with JupyterLab apps.", + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "description": "The JupyterServer app settings.", + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "description": "A list of LifecycleConfigArns available for use with JupyterServer apps.", + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "description": "The kernel gateway app settings.", + "properties": { + "CustomImages": { + "description": "A list of custom SageMaker images that are configured to run as a KernelGateway app.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 200, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec", + "description": "The default instance type and the Amazon Resource Name (ARN) of the default SageMaker image used by the KernelGateway app." + }, + "LifecycleConfigArns": { + "description": "A list of LifecycleConfigArns available for use with KernelGateway apps.", + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "LifecycleManagement": { + "description": "A flag to enable/disable AppLifecycleManagement settings", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "MaxIdleTimeoutInMinutes": { + "description": "The maximum idle timeout value set in minutes", + "maximum": 525600, + "minimum": 60, + "type": "integer" + }, + "MinIdleTimeoutInMinutes": { + "description": "The minimum idle timeout value set in minutes", + "maximum": 525600, + "minimum": 60, + "type": "integer" + }, + "MlTools": { + "enum": [ + "DataWrangler", + "FeatureStore", + "EmrClusters", + "AutoMl", + "Experiments", + "Training", + "ModelEvaluation", + "Pipelines", + "Models", + "JumpStart", + "InferenceRecommender", + "Endpoints", + "Projects", + "InferenceOptimization", + "HyperPodClusters", + "Comet", + "DeepchecksLLMEvaluation", + "Fiddler", + "LakeraGuard", + "PerformanceEvaluation" + ], + "type": "string" + }, + "RSessionAppSettings": { + "additionalProperties": false, + "description": "A collection of settings that apply to an RSessionGateway app.", + "properties": { + "CustomImages": { + "description": "A list of custom SageMaker images that are configured to run as a KernelGateway app.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 200, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "description": "A collection of settings that configure user interaction with the RStudioServerPro app.", + "properties": { + "AccessStatus": { + "description": "Indicates whether the current user has access to the RStudioServerPro app.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "description": "The level of permissions that the user has within the RStudioServerPro app. This value defaults to User. The Admin value allows the user access to the RStudio Administrative Dashboard.", + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "RStudioServerProDomainSettings": { + "additionalProperties": false, + "description": "A collection of settings that update the current configuration for the RStudioServerPro Domain-level app.", + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "DomainExecutionRoleArn": { + "description": "The ARN of the execution role for the RStudioServerPro Domain-level app.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "RStudioConnectUrl": { + "description": "A URL pointing to an RStudio Connect server.", + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + }, + "RStudioPackageManagerUrl": { + "description": "A URL pointing to an RStudio Package Manager server.", + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + } + }, + "required": [ + "DomainExecutionRoleArn" + ], + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "description": "The instance type that the image version runs on.", + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "LifecycleConfigArn": { + "description": "The Amazon Resource Name (ARN) of the Lifecycle Configuration to attach to the Resource.", + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "SageMakerImageArn": { + "description": "The Amazon Resource Name (ARN) of the SageMaker image that the image version belongs to.", + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "description": "The Amazon Resource Name (ARN) of the image version created on the instance.", + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "description": "Specifies options when sharing an Amazon SageMaker Studio notebook. These settings are specified as part of DefaultUserSettings when the CreateDomain API is called, and as part of UserSettings when the CreateUserProfile API is called.", + "properties": { + "NotebookOutputOption": { + "description": "Whether to include the notebook cell output when sharing the notebook. The default is Disabled.", + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "description": "When NotebookOutputOption is Allowed, the AWS Key Management Service (KMS) encryption key ID used to encrypt the notebook cell output in the Amazon S3 bucket.", + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "description": "When NotebookOutputOption is Allowed, the Amazon S3 bucket used to store the shared notebook snapshots.", + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "description": "The Amazon Resource Name (ARN) of the Lifecycle Configuration to attach to the Resource.", + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "StudioWebPortalSettings": { + "additionalProperties": false, + "description": "Studio settings. If these settings are applied on a user level, they take priority over the settings applied on a domain level.", + "properties": { + "HiddenAppTypes": { + "description": "Applications supported in Studio that are hidden from the Studio left navigation pane.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AppType" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "HiddenMlTools": { + "description": "The machine learning tools that are hidden from the Studio left navigation pane.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MlTools" + }, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "description": "A collection of settings that apply to users of Amazon SageMaker Studio. These settings are specified when the CreateUserProfile API is called, and as DefaultUserSettings when the CreateDomain API is called.", + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "description": "Defines which Amazon SageMaker application users are directed to by default.", + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "description": "The execution role for the user.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings", + "description": "The Jupyter server's app settings." + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings", + "description": "The kernel gateway app settings." + }, + "RSessionAppSettings": { + "$ref": "#/definitions/RSessionAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "description": "The security groups for the Amazon Virtual Private Cloud (VPC) that Studio uses for communication.", + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings", + "description": "The sharing settings." + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "description": "Indicates whether the Studio experience is available to users. If not, users cannot access Studio.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "StudioWebPortalSettings": { + "$ref": "#/definitions/StudioWebPortalSettings" + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SageMaker::Domain", + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:CreateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "efs:CreateFileSystem", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:GenerateDataKeyWithoutPlainText" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteApp", + "sagemaker:DeleteDomain", + "sagemaker:DescribeDomain" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListDomains" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeDomain" + ] + }, + "update": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:UpdateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId" + ], + "properties": { + "AppNetworkAccessType": { + "description": "Specifies the VPC used for non-EFS traffic. The default value is PublicInternetOnly.", + "enum": [ + "PublicInternetOnly", + "VpcOnly" + ], + "type": "string" + }, + "AppSecurityGroupManagement": { + "description": "The entity that creates and manages the required security groups for inter-app communication in VPCOnly mode. Required when CreateDomain.AppNetworkAccessType is VPCOnly and DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleArn is provided.", + "enum": [ + "Service", + "Customer" + ], + "type": "string" + }, + "AuthMode": { + "description": "The mode of authentication that members use to access the domain.", + "enum": [ + "SSO", + "IAM" + ], + "type": "string" + }, + "DefaultSpaceSettings": { + "$ref": "#/definitions/DefaultSpaceSettings", + "description": "The default space settings." + }, + "DefaultUserSettings": { + "$ref": "#/definitions/UserSettings", + "description": "The default user settings." + }, + "DomainArn": { + "description": "The Amazon Resource Name (ARN) of the created domain.", + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:domain/.*", + "type": "string" + }, + "DomainId": { + "description": "The domain name.", + "maxLength": 63, + "pattern": "^d-(-*[a-z0-9])+", + "type": "string" + }, + "DomainName": { + "description": "A name for the domain.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "DomainSettings": { + "$ref": "#/definitions/DomainSettings" + }, + "HomeEfsFileSystemId": { + "description": "The ID of the Amazon Elastic File System (EFS) managed by this Domain.", + "maxLength": 32, + "type": "string" + }, + "KmsKeyId": { + "description": "SageMaker uses AWS KMS to encrypt the EFS volume attached to the domain with an AWS managed customer master key (CMK) by default.", + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "SecurityGroupIdForDomainBoundary": { + "description": "The ID of the security group that authorizes traffic between the RSessionGateway apps and the RStudioServerPro app.", + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "SingleSignOnApplicationArn": { + "description": "The ARN of the application managed by SageMaker in IAM Identity Center. This value is only returned for domains created after October 1, 2023.", + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::[0-9]+:application/[a-zA-Z0-9-_.]+/apl-[a-zA-Z0-9]+$", + "type": "string" + }, + "SingleSignOnManagedApplicationInstanceId": { + "description": "The SSO managed application instance ID.", + "maxLength": 256, + "type": "string" + }, + "SubnetIds": { + "description": "The VPC subnets that Studio uses for communication.", + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "TagPropagation": { + "description": "Indicates whether the tags added to Domain, User Profile and Space entity is propagated to all SageMaker resources.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Tags": { + "description": "A list of tags to apply to the user profile.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "Url": { + "description": "The URL to the created domain.", + "maxLength": 1024, + "type": "string" + }, + "VpcId": { + "description": "The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for communication.", + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DomainArn", + "/properties/Url", + "/properties/DomainId", + "/properties/HomeEfsFileSystemId", + "/properties/SecurityGroupIdForDomainBoundary", + "/properties/SingleSignOnManagedApplicationInstanceId", + "/properties/SingleSignOnApplicationArn" + ], + "required": [ + "AuthMode", + "DefaultUserSettings", + "DomainName", + "SubnetIds", + "VpcId" + ], + "typeName": "AWS::SageMaker::Domain", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/schema/aws-sagemaker-endpoint.json b/src/schema/aws-sagemaker-endpoint.json index b46608f8..58d5ff2a 100644 --- a/src/schema/aws-sagemaker-endpoint.json +++ b/src/schema/aws-sagemaker-endpoint.json @@ -1,279 +1,279 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/EndpointName" - ], - "definitions": { - "Alarm": { - "additionalProperties": false, - "properties": { - "AlarmName": { - "description": "The name of the CloudWatch alarm.", - "type": "string" - } - }, - "required": [ - "AlarmName" - ], - "type": "object" - }, - "AutoRollbackConfig": { - "additionalProperties": false, - "properties": { - "Alarms": { - "description": "List of CloudWatch alarms to monitor during the deployment. If any alarm goes off, the deployment is rolled back.", - "items": { - "$ref": "#/definitions/Alarm" - }, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Alarms" - ], - "type": "object" - }, - "BlueGreenUpdatePolicy": { - "additionalProperties": false, - "properties": { - "MaximumExecutionTimeoutInSeconds": { - "description": "The maximum time allowed for the blue/green update, in seconds.", - "type": "integer" - }, - "TerminationWaitInSeconds": { - "description": "The wait time before terminating the old endpoint during a blue/green deployment.", - "type": "integer" - }, - "TrafficRoutingConfiguration": { - "$ref": "#/definitions/TrafficRoutingConfig", - "description": "The traffic routing configuration for the blue/green deployment." - } - }, - "required": [ - "TrafficRoutingConfiguration" - ], - "type": "object" - }, - "CapacitySize": { - "additionalProperties": false, - "properties": { - "Type": { - "description": "Specifies whether the `Value` is an instance count or a capacity unit.", - "type": "string" - }, - "Value": { - "description": "The value representing either the number of instances or the number of capacity units.", - "type": "integer" - } - }, - "required": [ - "Type", - "Value" - ], - "type": "object" - }, - "DeploymentConfig": { - "additionalProperties": false, - "properties": { - "AutoRollbackConfiguration": { - "$ref": "#/definitions/AutoRollbackConfig", - "description": "Configuration for automatic rollback if an error occurs during deployment." - }, - "BlueGreenUpdatePolicy": { - "$ref": "#/definitions/BlueGreenUpdatePolicy", - "description": "Configuration for blue-green update deployment policies." - }, - "RollingUpdatePolicy": { - "$ref": "#/definitions/RollingUpdatePolicy", - "description": "Configuration for rolling update deployment policies." - } - }, - "type": "object" - }, - "RollingUpdatePolicy": { - "additionalProperties": false, - "properties": { - "MaximumBatchSize": { - "$ref": "#/definitions/CapacitySize", - "description": "Specifies the maximum batch size for each rolling update." - }, - "MaximumExecutionTimeoutInSeconds": { - "description": "The maximum time allowed for the rolling update, in seconds.", - "type": "integer" - }, - "RollbackMaximumBatchSize": { - "$ref": "#/definitions/CapacitySize", - "description": "The maximum batch size for rollback during an update failure." - }, - "WaitIntervalInSeconds": { - "description": "The time to wait between steps during the rolling update, in seconds.", - "type": "integer" - } - }, - "required": [ - "MaximumBatchSize", - "WaitIntervalInSeconds" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key of the tag.", - "type": "string" - }, - "Value": { - "description": "The value of the tag.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "TrafficRoutingConfig": { - "additionalProperties": false, - "properties": { - "CanarySize": { - "$ref": "#/definitions/CapacitySize", - "description": "Specifies the size of the canary traffic in a canary deployment." - }, - "LinearStepSize": { - "$ref": "#/definitions/CapacitySize", - "description": "Specifies the step size for linear traffic routing." - }, - "Type": { - "description": "Specifies the type of traffic routing (e.g., 'AllAtOnce', 'Canary', 'Linear').", - "type": "string" - }, - "WaitIntervalInSeconds": { - "description": "Specifies the wait interval between traffic shifts, in seconds.", - "type": "integer" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "VariantProperty": { - "additionalProperties": false, - "properties": { - "VariantPropertyType": { - "description": "The type of variant property (e.g., 'DesiredInstanceCount', 'DesiredWeight', 'DataCaptureConfig').", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SageMaker::Endpoint", - "handlers": { - "create": { - "permissions": [ - "sagemaker:CreateEndpoint", - "sagemaker:DescribeEndpoint", - "sagemaker:AddTags" - ] - }, - "delete": { - "permissions": [ - "sagemaker:DeleteEndpoint", - "sagemaker:DescribeEndpoint" - ] - }, - "list": { - "permissions": [ - "sagemaker:ListEndpoints" - ] - }, - "read": { - "permissions": [ - "sagemaker:DescribeEndpoint", - "sagemaker:ListTags" - ] - }, - "update": { - "permissions": [ - "sagemaker:UpdateEndpoint", - "sagemaker:DescribeEndpoint", - "sagemaker:AddTags", - "sagemaker:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/EndpointArn" - ], - "properties": { - "DeploymentConfig": { - "$ref": "#/definitions/DeploymentConfig", - "description": "Specifies deployment configuration for updating the SageMaker endpoint. Includes rollback and update policies." - }, - "EndpointArn": { - "description": "The Amazon Resource Name (ARN) of the endpoint.", - "type": "string" - }, - "EndpointConfigName": { - "description": "The name of the endpoint configuration for the SageMaker endpoint. This is a required property.", - "type": "string" - }, - "EndpointName": { - "description": "The name of the SageMaker endpoint. This name must be unique within an AWS Region.", - "type": "string" - }, - "ExcludeRetainedVariantProperties": { - "description": "Specifies a list of variant properties that you want to exclude when updating an endpoint.", - "items": { - "$ref": "#/definitions/VariantProperty" - }, - "type": "array", - "uniqueItems": false - }, - "RetainAllVariantProperties": { - "description": "When set to true, retains all variant properties for an endpoint when it is updated.", - "type": "boolean" - }, - "RetainDeploymentConfig": { - "description": "When set to true, retains the deployment configuration during endpoint updates.", - "type": "boolean" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/EndpointArn", - "/properties/EndpointName" - ], - "required": [ - "EndpointConfigName" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "sagemaker:AddTags", - "sagemaker:DeleteTags", - "sagemaker:ListTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SageMaker::Endpoint", - "writeOnlyProperties": [ - "/properties/ExcludeRetainedVariantProperties", - "/properties/RetainAllVariantProperties", - "/properties/RetainDeploymentConfig" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EndpointName" + ], + "definitions": { + "Alarm": { + "additionalProperties": false, + "properties": { + "AlarmName": { + "description": "The name of the CloudWatch alarm.", + "type": "string" + } + }, + "required": [ + "AlarmName" + ], + "type": "object" + }, + "AutoRollbackConfig": { + "additionalProperties": false, + "properties": { + "Alarms": { + "description": "List of CloudWatch alarms to monitor during the deployment. If any alarm goes off, the deployment is rolled back.", + "items": { + "$ref": "#/definitions/Alarm" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Alarms" + ], + "type": "object" + }, + "BlueGreenUpdatePolicy": { + "additionalProperties": false, + "properties": { + "MaximumExecutionTimeoutInSeconds": { + "description": "The maximum time allowed for the blue/green update, in seconds.", + "type": "integer" + }, + "TerminationWaitInSeconds": { + "description": "The wait time before terminating the old endpoint during a blue/green deployment.", + "type": "integer" + }, + "TrafficRoutingConfiguration": { + "$ref": "#/definitions/TrafficRoutingConfig", + "description": "The traffic routing configuration for the blue/green deployment." + } + }, + "required": [ + "TrafficRoutingConfiguration" + ], + "type": "object" + }, + "CapacitySize": { + "additionalProperties": false, + "properties": { + "Type": { + "description": "Specifies whether the `Value` is an instance count or a capacity unit.", + "type": "string" + }, + "Value": { + "description": "The value representing either the number of instances or the number of capacity units.", + "type": "integer" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, + "DeploymentConfig": { + "additionalProperties": false, + "properties": { + "AutoRollbackConfiguration": { + "$ref": "#/definitions/AutoRollbackConfig", + "description": "Configuration for automatic rollback if an error occurs during deployment." + }, + "BlueGreenUpdatePolicy": { + "$ref": "#/definitions/BlueGreenUpdatePolicy", + "description": "Configuration for blue-green update deployment policies." + }, + "RollingUpdatePolicy": { + "$ref": "#/definitions/RollingUpdatePolicy", + "description": "Configuration for rolling update deployment policies." + } + }, + "type": "object" + }, + "RollingUpdatePolicy": { + "additionalProperties": false, + "properties": { + "MaximumBatchSize": { + "$ref": "#/definitions/CapacitySize", + "description": "Specifies the maximum batch size for each rolling update." + }, + "MaximumExecutionTimeoutInSeconds": { + "description": "The maximum time allowed for the rolling update, in seconds.", + "type": "integer" + }, + "RollbackMaximumBatchSize": { + "$ref": "#/definitions/CapacitySize", + "description": "The maximum batch size for rollback during an update failure." + }, + "WaitIntervalInSeconds": { + "description": "The time to wait between steps during the rolling update, in seconds.", + "type": "integer" + } + }, + "required": [ + "MaximumBatchSize", + "WaitIntervalInSeconds" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key of the tag.", + "type": "string" + }, + "Value": { + "description": "The value of the tag.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TrafficRoutingConfig": { + "additionalProperties": false, + "properties": { + "CanarySize": { + "$ref": "#/definitions/CapacitySize", + "description": "Specifies the size of the canary traffic in a canary deployment." + }, + "LinearStepSize": { + "$ref": "#/definitions/CapacitySize", + "description": "Specifies the step size for linear traffic routing." + }, + "Type": { + "description": "Specifies the type of traffic routing (e.g., 'AllAtOnce', 'Canary', 'Linear').", + "type": "string" + }, + "WaitIntervalInSeconds": { + "description": "Specifies the wait interval between traffic shifts, in seconds.", + "type": "integer" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "VariantProperty": { + "additionalProperties": false, + "properties": { + "VariantPropertyType": { + "description": "The type of variant property (e.g., 'DesiredInstanceCount', 'DesiredWeight', 'DataCaptureConfig').", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SageMaker::Endpoint", + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateEndpoint", + "sagemaker:DescribeEndpoint", + "sagemaker:AddTags" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteEndpoint", + "sagemaker:DescribeEndpoint" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListEndpoints" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeEndpoint", + "sagemaker:ListTags" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateEndpoint", + "sagemaker:DescribeEndpoint", + "sagemaker:AddTags", + "sagemaker:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/EndpointArn" + ], + "properties": { + "DeploymentConfig": { + "$ref": "#/definitions/DeploymentConfig", + "description": "Specifies deployment configuration for updating the SageMaker endpoint. Includes rollback and update policies." + }, + "EndpointArn": { + "description": "The Amazon Resource Name (ARN) of the endpoint.", + "type": "string" + }, + "EndpointConfigName": { + "description": "The name of the endpoint configuration for the SageMaker endpoint. This is a required property.", + "type": "string" + }, + "EndpointName": { + "description": "The name of the SageMaker endpoint. This name must be unique within an AWS Region.", + "type": "string" + }, + "ExcludeRetainedVariantProperties": { + "description": "Specifies a list of variant properties that you want to exclude when updating an endpoint.", + "items": { + "$ref": "#/definitions/VariantProperty" + }, + "type": "array", + "uniqueItems": false + }, + "RetainAllVariantProperties": { + "description": "When set to true, retains all variant properties for an endpoint when it is updated.", + "type": "boolean" + }, + "RetainDeploymentConfig": { + "description": "When set to true, retains the deployment configuration during endpoint updates.", + "type": "boolean" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/EndpointArn", + "/properties/EndpointName" + ], + "required": [ + "EndpointConfigName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "sagemaker:AddTags", + "sagemaker:DeleteTags", + "sagemaker:ListTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SageMaker::Endpoint", + "writeOnlyProperties": [ + "/properties/ExcludeRetainedVariantProperties", + "/properties/RetainAllVariantProperties", + "/properties/RetainDeploymentConfig" + ] +} diff --git a/src/schema/aws-sagemaker-endpointconfig.json b/src/schema/aws-sagemaker-endpointconfig.json index 98baa5a5..e2162533 100644 --- a/src/schema/aws-sagemaker-endpointconfig.json +++ b/src/schema/aws-sagemaker-endpointconfig.json @@ -1,476 +1,476 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKeyId", - "/properties/AsyncInferenceConfig", - "/properties/ExecutionRoleArn", - "/properties/ShadowProductionVariants", - "/properties/EnableNetworkIsolation", - "/properties/ProductionVariants", - "/properties/DataCaptureConfig", - "/properties/ExplainerConfig", - "/properties/EndpointConfigName", - "/properties/VpcConfig" - ], - "definitions": { - "AsyncInferenceClientConfig": { - "additionalProperties": false, - "properties": { - "MaxConcurrentInvocationsPerInstance": { - "type": "integer" - } - }, - "type": "object" - }, - "AsyncInferenceConfig": { - "additionalProperties": false, - "properties": { - "ClientConfig": { - "$ref": "#/definitions/AsyncInferenceClientConfig" - }, - "OutputConfig": { - "$ref": "#/definitions/AsyncInferenceOutputConfig" - } - }, - "required": [ - "OutputConfig" - ], - "type": "object" - }, - "AsyncInferenceNotificationConfig": { - "additionalProperties": false, - "properties": { - "ErrorTopic": { - "type": "string" - }, - "IncludeInferenceResponseIn": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SuccessTopic": { - "type": "string" - } - }, - "type": "object" - }, - "AsyncInferenceOutputConfig": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "type": "string" - }, - "NotificationConfig": { - "$ref": "#/definitions/AsyncInferenceNotificationConfig" - }, - "S3FailurePath": { - "type": "string" - }, - "S3OutputPath": { - "type": "string" - } - }, - "type": "object" - }, - "CaptureContentTypeHeader": { - "additionalProperties": false, - "properties": { - "CsvContentTypes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "JsonContentTypes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "CaptureOption": { - "additionalProperties": false, - "properties": { - "CaptureMode": { - "type": "string" - } - }, - "required": [ - "CaptureMode" - ], - "type": "object" - }, - "ClarifyExplainerConfig": { - "additionalProperties": false, - "properties": { - "EnableExplanations": { - "type": "string" - }, - "InferenceConfig": { - "$ref": "#/definitions/ClarifyInferenceConfig" - }, - "ShapConfig": { - "$ref": "#/definitions/ClarifyShapConfig" - } - }, - "required": [ - "ShapConfig" - ], - "type": "object" - }, - "ClarifyFeatureType": { - "additionalProperties": false, - "type": "object" - }, - "ClarifyHeader": { - "additionalProperties": false, - "type": "object" - }, - "ClarifyInferenceConfig": { - "additionalProperties": false, - "properties": { - "ContentTemplate": { - "type": "string" - }, - "FeatureHeaders": { - "items": { - "$ref": "#/definitions/ClarifyHeader" - }, - "type": "array", - "uniqueItems": false - }, - "FeatureTypes": { - "items": { - "$ref": "#/definitions/ClarifyFeatureType" - }, - "type": "array", - "uniqueItems": false - }, - "FeaturesAttribute": { - "type": "string" - }, - "LabelAttribute": { - "type": "string" - }, - "LabelHeaders": { - "items": { - "$ref": "#/definitions/ClarifyHeader" - }, - "type": "array", - "uniqueItems": false - }, - "LabelIndex": { - "type": "integer" - }, - "MaxPayloadInMB": { - "type": "integer" - }, - "MaxRecordCount": { - "type": "integer" - }, - "ProbabilityAttribute": { - "type": "string" - }, - "ProbabilityIndex": { - "type": "integer" - } - }, - "type": "object" - }, - "ClarifyShapBaselineConfig": { - "additionalProperties": false, - "properties": { - "MimeType": { - "type": "string" - }, - "ShapBaseline": { - "type": "string" - }, - "ShapBaselineUri": { - "type": "string" - } - }, - "type": "object" - }, - "ClarifyShapConfig": { - "additionalProperties": false, - "properties": { - "NumberOfSamples": { - "type": "integer" - }, - "Seed": { - "type": "integer" - }, - "ShapBaselineConfig": { - "$ref": "#/definitions/ClarifyShapBaselineConfig" - }, - "TextConfig": { - "$ref": "#/definitions/ClarifyTextConfig" - }, - "UseLogit": { - "type": "boolean" - } - }, - "required": [ - "ShapBaselineConfig" - ], - "type": "object" - }, - "ClarifyTextConfig": { - "additionalProperties": false, - "properties": { - "Granularity": { - "type": "string" - }, - "Language": { - "type": "string" - } - }, - "required": [ - "Language", - "Granularity" - ], - "type": "object" - }, - "DataCaptureConfig": { - "additionalProperties": false, - "properties": { - "CaptureContentTypeHeader": { - "$ref": "#/definitions/CaptureContentTypeHeader" - }, - "CaptureOptions": { - "items": { - "$ref": "#/definitions/CaptureOption" - }, - "type": "array", - "uniqueItems": false - }, - "DestinationS3Uri": { - "type": "string" - }, - "EnableCapture": { - "type": "boolean" - }, - "InitialSamplingPercentage": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - } - }, - "required": [ - "CaptureOptions", - "DestinationS3Uri", - "InitialSamplingPercentage" - ], - "type": "object" - }, - "ExplainerConfig": { - "additionalProperties": false, - "properties": { - "ClarifyExplainerConfig": { - "$ref": "#/definitions/ClarifyExplainerConfig" - } - }, - "type": "object" - }, - "ManagedInstanceScaling": { - "additionalProperties": false, - "properties": { - "MaxInstanceCount": { - "type": "integer" - }, - "MinInstanceCount": { - "type": "integer" - }, - "Status": { - "type": "string" - } - }, - "type": "object" - }, - "ProductionVariant": { - "additionalProperties": false, - "properties": { - "AcceleratorType": { - "type": "string" - }, - "ContainerStartupHealthCheckTimeoutInSeconds": { - "type": "integer" - }, - "EnableSSMAccess": { - "type": "boolean" - }, - "InitialInstanceCount": { - "type": "integer" - }, - "InitialVariantWeight": { - "type": "number" - }, - "InstanceType": { - "type": "string" - }, - "ManagedInstanceScaling": { - "$ref": "#/definitions/ManagedInstanceScaling" - }, - "ModelDataDownloadTimeoutInSeconds": { - "type": "integer" - }, - "ModelName": { - "type": "string" - }, - "RoutingConfig": { - "$ref": "#/definitions/RoutingConfig" - }, - "ServerlessConfig": { - "$ref": "#/definitions/ServerlessConfig" - }, - "VariantName": { - "type": "string" - }, - "VolumeSizeInGB": { - "type": "integer" - } - }, - "required": [ - "VariantName" - ], - "type": "object" - }, - "RoutingConfig": { - "additionalProperties": false, - "properties": { - "RoutingStrategy": { - "type": "string" - } - }, - "type": "object" - }, - "ServerlessConfig": { - "additionalProperties": false, - "properties": { - "MaxConcurrency": { - "type": "integer" - }, - "MemorySizeInMB": { - "type": "integer" - }, - "ProvisionedConcurrency": { - "type": "integer" - } - }, - "required": [ - "MaxConcurrency", - "MemorySizeInMB" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "VpcConfig": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Subnets": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Subnets", - "SecurityGroupIds" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SageMaker::EndpointConfig", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AsyncInferenceConfig": { - "$ref": "#/definitions/AsyncInferenceConfig" - }, - "DataCaptureConfig": { - "$ref": "#/definitions/DataCaptureConfig" - }, - "EnableNetworkIsolation": { - "type": "boolean" - }, - "EndpointConfigName": { - "type": "string" - }, - "ExecutionRoleArn": { - "type": "string" - }, - "ExplainerConfig": { - "$ref": "#/definitions/ExplainerConfig" - }, - "Id": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "ProductionVariants": { - "items": { - "$ref": "#/definitions/ProductionVariant" - }, - "type": "array", - "uniqueItems": false - }, - "ShadowProductionVariants": { - "items": { - "$ref": "#/definitions/ProductionVariant" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcConfig": { - "$ref": "#/definitions/VpcConfig" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ProductionVariants" - ], - "typeName": "AWS::SageMaker::EndpointConfig" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KmsKeyId", + "/properties/AsyncInferenceConfig", + "/properties/ExecutionRoleArn", + "/properties/ShadowProductionVariants", + "/properties/EnableNetworkIsolation", + "/properties/ProductionVariants", + "/properties/DataCaptureConfig", + "/properties/ExplainerConfig", + "/properties/EndpointConfigName", + "/properties/VpcConfig" + ], + "definitions": { + "AsyncInferenceClientConfig": { + "additionalProperties": false, + "properties": { + "MaxConcurrentInvocationsPerInstance": { + "type": "integer" + } + }, + "type": "object" + }, + "AsyncInferenceConfig": { + "additionalProperties": false, + "properties": { + "ClientConfig": { + "$ref": "#/definitions/AsyncInferenceClientConfig" + }, + "OutputConfig": { + "$ref": "#/definitions/AsyncInferenceOutputConfig" + } + }, + "required": [ + "OutputConfig" + ], + "type": "object" + }, + "AsyncInferenceNotificationConfig": { + "additionalProperties": false, + "properties": { + "ErrorTopic": { + "type": "string" + }, + "IncludeInferenceResponseIn": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SuccessTopic": { + "type": "string" + } + }, + "type": "object" + }, + "AsyncInferenceOutputConfig": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "type": "string" + }, + "NotificationConfig": { + "$ref": "#/definitions/AsyncInferenceNotificationConfig" + }, + "S3FailurePath": { + "type": "string" + }, + "S3OutputPath": { + "type": "string" + } + }, + "type": "object" + }, + "CaptureContentTypeHeader": { + "additionalProperties": false, + "properties": { + "CsvContentTypes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "JsonContentTypes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CaptureOption": { + "additionalProperties": false, + "properties": { + "CaptureMode": { + "type": "string" + } + }, + "required": [ + "CaptureMode" + ], + "type": "object" + }, + "ClarifyExplainerConfig": { + "additionalProperties": false, + "properties": { + "EnableExplanations": { + "type": "string" + }, + "InferenceConfig": { + "$ref": "#/definitions/ClarifyInferenceConfig" + }, + "ShapConfig": { + "$ref": "#/definitions/ClarifyShapConfig" + } + }, + "required": [ + "ShapConfig" + ], + "type": "object" + }, + "ClarifyFeatureType": { + "additionalProperties": false, + "type": "object" + }, + "ClarifyHeader": { + "additionalProperties": false, + "type": "object" + }, + "ClarifyInferenceConfig": { + "additionalProperties": false, + "properties": { + "ContentTemplate": { + "type": "string" + }, + "FeatureHeaders": { + "items": { + "$ref": "#/definitions/ClarifyHeader" + }, + "type": "array", + "uniqueItems": false + }, + "FeatureTypes": { + "items": { + "$ref": "#/definitions/ClarifyFeatureType" + }, + "type": "array", + "uniqueItems": false + }, + "FeaturesAttribute": { + "type": "string" + }, + "LabelAttribute": { + "type": "string" + }, + "LabelHeaders": { + "items": { + "$ref": "#/definitions/ClarifyHeader" + }, + "type": "array", + "uniqueItems": false + }, + "LabelIndex": { + "type": "integer" + }, + "MaxPayloadInMB": { + "type": "integer" + }, + "MaxRecordCount": { + "type": "integer" + }, + "ProbabilityAttribute": { + "type": "string" + }, + "ProbabilityIndex": { + "type": "integer" + } + }, + "type": "object" + }, + "ClarifyShapBaselineConfig": { + "additionalProperties": false, + "properties": { + "MimeType": { + "type": "string" + }, + "ShapBaseline": { + "type": "string" + }, + "ShapBaselineUri": { + "type": "string" + } + }, + "type": "object" + }, + "ClarifyShapConfig": { + "additionalProperties": false, + "properties": { + "NumberOfSamples": { + "type": "integer" + }, + "Seed": { + "type": "integer" + }, + "ShapBaselineConfig": { + "$ref": "#/definitions/ClarifyShapBaselineConfig" + }, + "TextConfig": { + "$ref": "#/definitions/ClarifyTextConfig" + }, + "UseLogit": { + "type": "boolean" + } + }, + "required": [ + "ShapBaselineConfig" + ], + "type": "object" + }, + "ClarifyTextConfig": { + "additionalProperties": false, + "properties": { + "Granularity": { + "type": "string" + }, + "Language": { + "type": "string" + } + }, + "required": [ + "Language", + "Granularity" + ], + "type": "object" + }, + "DataCaptureConfig": { + "additionalProperties": false, + "properties": { + "CaptureContentTypeHeader": { + "$ref": "#/definitions/CaptureContentTypeHeader" + }, + "CaptureOptions": { + "items": { + "$ref": "#/definitions/CaptureOption" + }, + "type": "array", + "uniqueItems": false + }, + "DestinationS3Uri": { + "type": "string" + }, + "EnableCapture": { + "type": "boolean" + }, + "InitialSamplingPercentage": { + "type": "integer" + }, + "KmsKeyId": { + "type": "string" + } + }, + "required": [ + "CaptureOptions", + "DestinationS3Uri", + "InitialSamplingPercentage" + ], + "type": "object" + }, + "ExplainerConfig": { + "additionalProperties": false, + "properties": { + "ClarifyExplainerConfig": { + "$ref": "#/definitions/ClarifyExplainerConfig" + } + }, + "type": "object" + }, + "ManagedInstanceScaling": { + "additionalProperties": false, + "properties": { + "MaxInstanceCount": { + "type": "integer" + }, + "MinInstanceCount": { + "type": "integer" + }, + "Status": { + "type": "string" + } + }, + "type": "object" + }, + "ProductionVariant": { + "additionalProperties": false, + "properties": { + "ContainerStartupHealthCheckTimeoutInSeconds": { + "type": "integer" + }, + "EnableSSMAccess": { + "type": "boolean" + }, + "InferenceAmiVersion": { + "type": "string" + }, + "InitialInstanceCount": { + "type": "integer" + }, + "InitialVariantWeight": { + "type": "number" + }, + "InstanceType": { + "type": "string" + }, + "ManagedInstanceScaling": { + "$ref": "#/definitions/ManagedInstanceScaling" + }, + "ModelDataDownloadTimeoutInSeconds": { + "type": "integer" + }, + "ModelName": { + "type": "string" + }, + "RoutingConfig": { + "$ref": "#/definitions/RoutingConfig" + }, + "ServerlessConfig": { + "$ref": "#/definitions/ServerlessConfig" + }, + "VariantName": { + "type": "string" + }, + "VolumeSizeInGB": { + "type": "integer" + } + }, + "required": [ + "VariantName" + ], + "type": "object" + }, + "RoutingConfig": { + "additionalProperties": false, + "properties": { + "RoutingStrategy": { + "type": "string" + } + }, + "type": "object" + }, + "ServerlessConfig": { + "additionalProperties": false, + "properties": { + "MaxConcurrency": { + "type": "integer" + }, + "MemorySizeInMB": { + "type": "integer" + }, + "ProvisionedConcurrency": { + "type": "integer" + } + }, + "required": [ + "MaxConcurrency", + "MemorySizeInMB" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VpcConfig": { + "additionalProperties": false, + "properties": { + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Subnets": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Subnets", + "SecurityGroupIds" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SageMaker::EndpointConfig", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AsyncInferenceConfig": { + "$ref": "#/definitions/AsyncInferenceConfig" + }, + "DataCaptureConfig": { + "$ref": "#/definitions/DataCaptureConfig" + }, + "EnableNetworkIsolation": { + "type": "boolean" + }, + "EndpointConfigName": { + "type": "string" + }, + "ExecutionRoleArn": { + "type": "string" + }, + "ExplainerConfig": { + "$ref": "#/definitions/ExplainerConfig" + }, + "Id": { + "type": "string" + }, + "KmsKeyId": { + "type": "string" + }, + "ProductionVariants": { + "items": { + "$ref": "#/definitions/ProductionVariant" + }, + "type": "array", + "uniqueItems": false + }, + "ShadowProductionVariants": { + "items": { + "$ref": "#/definitions/ProductionVariant" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcConfig": { + "$ref": "#/definitions/VpcConfig" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ProductionVariants" + ], + "typeName": "AWS::SageMaker::EndpointConfig" +} diff --git a/src/schema/aws-sagemaker-featuregroup.json b/src/schema/aws-sagemaker-featuregroup.json index be19975a..5473bccd 100644 --- a/src/schema/aws-sagemaker-featuregroup.json +++ b/src/schema/aws-sagemaker-featuregroup.json @@ -1,359 +1,364 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FeatureGroupName", - "/properties/RecordIdentifierFeatureName", - "/properties/EventTimeFeatureName", - "/properties/OnlineStoreConfig/SecurityConfig", - "/properties/OnlineStoreConfig/EnableOnlineStore", - "/properties/OnlineStoreConfig/StorageType", - "/properties/OfflineStoreConfig", - "/properties/RoleArn", - "/properties/Description", - "/properties/Tags" - ], - "definitions": { - "DataCatalogConfig": { - "additionalProperties": false, - "properties": { - "Catalog": { - "maxLength": 255, - "minLength": 1, - "pattern": "[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\t]*", - "type": "string" - }, - "Database": { - "maxLength": 255, - "minLength": 1, - "pattern": "[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\t]*", - "type": "string" - }, - "TableName": { - "maxLength": 255, - "minLength": 1, - "pattern": "[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\t]*", - "type": "string" - } - }, - "required": [ - "TableName", - "Catalog", - "Database" - ], - "type": "object" - }, - "FeatureDefinition": { - "additionalProperties": false, - "properties": { - "FeatureName": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,63}", - "type": "string" - }, - "FeatureType": { - "enum": [ - "Integral", - "Fractional", - "String" - ], - "type": "string" - } - }, - "required": [ - "FeatureName", - "FeatureType" - ], - "type": "object" - }, - "KmsKeyId": { - "maxLength": 2048, - "type": "string" - }, - "OnlineStoreSecurityConfig": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "$ref": "#/definitions/KmsKeyId" - } - }, - "type": "object" - }, - "S3StorageConfig": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "$ref": "#/definitions/KmsKeyId" - }, - "S3Uri": { - "maxLength": 1024, - "pattern": "^(https|s3)://([^/]+)/?(.*)$", - "type": "string" - } - }, - "required": [ - "S3Uri" - ], - "type": "object" - }, - "StorageType": { - "enum": [ - "Standard", - "InMemory" - ], - "type": "string" - }, - "TableFormat": { - "description": "Format for the offline store feature group. Iceberg is the optimal format for feature groups shared between offline and online stores.", - "enum": [ - "Iceberg", - "Glue" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "ThroughputConfig": { - "additionalProperties": false, - "properties": { - "ProvisionedReadCapacityUnits": { - "description": "For provisioned feature groups with online store enabled, this indicates the read throughput you are billed for and can consume without throttling.", - "type": "integer" - }, - "ProvisionedWriteCapacityUnits": { - "description": "For provisioned feature groups, this indicates the write throughput you are billed for and can consume without throttling.", - "type": "integer" - }, - "ThroughputMode": { - "$ref": "#/definitions/ThroughputMode" - } - }, - "required": [ - "ThroughputMode" - ], - "type": "object" - }, - "ThroughputMode": { - "description": "Throughput mode configuration of the feature group", - "enum": [ - "OnDemand", - "Provisioned" - ], - "type": "string" - }, - "TtlDuration": { - "additionalProperties": false, - "description": "TTL configuration of the feature group", - "properties": { - "Unit": { - "$ref": "#/definitions/Unit" - }, - "Value": { - "$ref": "#/definitions/Value" - } - }, - "type": "object" - }, - "Unit": { - "description": "Unit of ttl configuration", - "enum": [ - "Seconds", - "Minutes", - "Hours", - "Days", - "Weeks" - ], - "type": "string" - }, - "Value": { - "description": "Value of ttl configuration", - "type": "integer" - } - }, - "description": "Resource Type definition for AWS::SageMaker::FeatureGroup", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "kms:CreateGrant", - "kms:DescribeKey", - "glue:CreateTable", - "glue:GetTable", - "glue:CreateDatabase", - "glue:GetDatabase", - "sagemaker:CreateFeatureGroup", - "sagemaker:DescribeFeatureGroup", - "sagemaker:AddTags", - "sagemaker:ListTags" - ] - }, - "delete": { - "permissions": [ - "sagemaker:DeleteFeatureGroup", - "sagemaker:DescribeFeatureGroup" - ] - }, - "list": { - "permissions": [ - "sagemaker:ListFeatureGroups" - ] - }, - "read": { - "permissions": [ - "sagemaker:DescribeFeatureGroup", - "sagemaker:ListTags" - ] - }, - "update": { - "permissions": [ - "sagemaker:UpdateFeatureGroup", - "sagemaker:DescribeFeatureGroup", - "sagemaker:AddTags", - "sagemaker:ListTags", - "sagemaker:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/FeatureGroupName" - ], - "properties": { - "CreationTime": { - "description": "A timestamp of FeatureGroup creation time.", - "type": "string" - }, - "Description": { - "description": "Description about the FeatureGroup.", - "maxLength": 128, - "type": "string" - }, - "EventTimeFeatureName": { - "description": "The Event Time Feature Name.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,63}", - "type": "string" - }, - "FeatureDefinitions": { - "description": "An Array of Feature Definition", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/FeatureDefinition" - }, - "maxItems": 2500, - "minItems": 1, - "type": "array", - "uniqueItems": false - }, - "FeatureGroupName": { - "description": "The Name of the FeatureGroup.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,63}", - "type": "string" - }, - "FeatureGroupStatus": { - "description": "The status of the feature group.", - "type": "string" - }, - "OfflineStoreConfig": { - "additionalProperties": false, - "properties": { - "DataCatalogConfig": { - "$ref": "#/definitions/DataCatalogConfig" - }, - "DisableGlueTableCreation": { - "type": "boolean" - }, - "S3StorageConfig": { - "$ref": "#/definitions/S3StorageConfig" - }, - "TableFormat": { - "$ref": "#/definitions/TableFormat" - } - }, - "required": [ - "S3StorageConfig" - ], - "type": "object" - }, - "OnlineStoreConfig": { - "additionalProperties": false, - "properties": { - "EnableOnlineStore": { - "type": "boolean" - }, - "SecurityConfig": { - "$ref": "#/definitions/OnlineStoreSecurityConfig" - }, - "StorageType": { - "$ref": "#/definitions/StorageType" - }, - "TtlDuration": { - "$ref": "#/definitions/TtlDuration" - } - }, - "type": "object" - }, - "RecordIdentifierFeatureName": { - "description": "The Record Identifier Feature Name.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,63}", - "type": "string" - }, - "RoleArn": { - "description": "Role Arn", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pair to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": false - }, - "ThroughputConfig": { - "$ref": "#/definitions/ThroughputConfig" - } - }, - "readOnlyProperties": [ - "/properties/CreationTime", - "/properties/FeatureGroupStatus" - ], - "required": [ - "FeatureGroupName", - "RecordIdentifierFeatureName", - "EventTimeFeatureName", - "FeatureDefinitions" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::SageMaker::FeatureGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FeatureGroupName", + "/properties/RecordIdentifierFeatureName", + "/properties/EventTimeFeatureName", + "/properties/OnlineStoreConfig/SecurityConfig", + "/properties/OnlineStoreConfig/EnableOnlineStore", + "/properties/OnlineStoreConfig/StorageType", + "/properties/OfflineStoreConfig", + "/properties/RoleArn", + "/properties/Description", + "/properties/Tags" + ], + "definitions": { + "DataCatalogConfig": { + "additionalProperties": false, + "properties": { + "Catalog": { + "maxLength": 255, + "minLength": 1, + "pattern": "[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\t]*", + "type": "string" + }, + "Database": { + "maxLength": 255, + "minLength": 1, + "pattern": "[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\t]*", + "type": "string" + }, + "TableName": { + "maxLength": 255, + "minLength": 1, + "pattern": "[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\t]*", + "type": "string" + } + }, + "required": [ + "TableName", + "Catalog", + "Database" + ], + "type": "object" + }, + "FeatureDefinition": { + "additionalProperties": false, + "properties": { + "FeatureName": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,63}", + "type": "string" + }, + "FeatureType": { + "enum": [ + "Integral", + "Fractional", + "String" + ], + "type": "string" + } + }, + "required": [ + "FeatureName", + "FeatureType" + ], + "type": "object" + }, + "KmsKeyId": { + "maxLength": 2048, + "type": "string" + }, + "OnlineStoreSecurityConfig": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "$ref": "#/definitions/KmsKeyId" + } + }, + "type": "object" + }, + "S3StorageConfig": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "$ref": "#/definitions/KmsKeyId" + }, + "S3Uri": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "required": [ + "S3Uri" + ], + "type": "object" + }, + "StorageType": { + "enum": [ + "Standard", + "InMemory" + ], + "type": "string" + }, + "TableFormat": { + "description": "Format for the offline store feature group. Iceberg is the optimal format for feature groups shared between offline and online stores.", + "enum": [ + "Iceberg", + "Glue" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "ThroughputConfig": { + "additionalProperties": false, + "properties": { + "ProvisionedReadCapacityUnits": { + "description": "For provisioned feature groups with online store enabled, this indicates the read throughput you are billed for and can consume without throttling.", + "type": "integer" + }, + "ProvisionedWriteCapacityUnits": { + "description": "For provisioned feature groups, this indicates the write throughput you are billed for and can consume without throttling.", + "type": "integer" + }, + "ThroughputMode": { + "$ref": "#/definitions/ThroughputMode" + } + }, + "required": [ + "ThroughputMode" + ], + "type": "object" + }, + "ThroughputMode": { + "description": "Throughput mode configuration of the feature group", + "enum": [ + "OnDemand", + "Provisioned" + ], + "type": "string" + }, + "TtlDuration": { + "additionalProperties": false, + "description": "TTL configuration of the feature group", + "properties": { + "Unit": { + "$ref": "#/definitions/Unit" + }, + "Value": { + "$ref": "#/definitions/Value" + } + }, + "type": "object" + }, + "Unit": { + "description": "Unit of ttl configuration", + "enum": [ + "Seconds", + "Minutes", + "Hours", + "Days", + "Weeks" + ], + "type": "string" + }, + "Value": { + "description": "Value of ttl configuration", + "type": "integer" + } + }, + "description": "Resource Type definition for AWS::SageMaker::FeatureGroup", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "kms:CreateGrant", + "kms:DescribeKey", + "glue:CreateTable", + "glue:GetTable", + "glue:CreateDatabase", + "glue:GetDatabase", + "sagemaker:CreateFeatureGroup", + "sagemaker:DescribeFeatureGroup", + "sagemaker:AddTags", + "sagemaker:ListTags" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteFeatureGroup", + "sagemaker:DescribeFeatureGroup" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListFeatureGroups" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeFeatureGroup", + "sagemaker:ListTags" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateFeatureGroup", + "sagemaker:DescribeFeatureGroup", + "sagemaker:AddTags", + "sagemaker:ListTags", + "sagemaker:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/FeatureGroupName" + ], + "properties": { + "CreationTime": { + "description": "A timestamp of FeatureGroup creation time.", + "type": "string" + }, + "Description": { + "description": "Description about the FeatureGroup.", + "maxLength": 128, + "type": "string" + }, + "EventTimeFeatureName": { + "description": "The Event Time Feature Name.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,63}", + "type": "string" + }, + "FeatureDefinitions": { + "description": "An Array of Feature Definition", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/FeatureDefinition" + }, + "maxItems": 2500, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "FeatureGroupName": { + "description": "The Name of the FeatureGroup.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,63}", + "type": "string" + }, + "FeatureGroupStatus": { + "description": "The status of the feature group.", + "type": "string" + }, + "OfflineStoreConfig": { + "additionalProperties": false, + "properties": { + "DataCatalogConfig": { + "$ref": "#/definitions/DataCatalogConfig" + }, + "DisableGlueTableCreation": { + "type": "boolean" + }, + "S3StorageConfig": { + "$ref": "#/definitions/S3StorageConfig" + }, + "TableFormat": { + "$ref": "#/definitions/TableFormat" + } + }, + "required": [ + "S3StorageConfig" + ], + "type": "object" + }, + "OnlineStoreConfig": { + "additionalProperties": false, + "properties": { + "EnableOnlineStore": { + "type": "boolean" + }, + "SecurityConfig": { + "$ref": "#/definitions/OnlineStoreSecurityConfig" + }, + "StorageType": { + "$ref": "#/definitions/StorageType" + }, + "TtlDuration": { + "$ref": "#/definitions/TtlDuration" + } + }, + "type": "object" + }, + "RecordIdentifierFeatureName": { + "description": "The Record Identifier Feature Name.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,63}", + "type": "string" + }, + "RoleArn": { + "description": "Role Arn", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pair to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": false + }, + "ThroughputConfig": { + "$ref": "#/definitions/ThroughputConfig" + } + }, + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/FeatureGroupStatus" + ], + "required": [ + "FeatureGroupName", + "RecordIdentifierFeatureName", + "EventTimeFeatureName", + "FeatureDefinitions" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "sagemaker:AddTags", + "sagemaker:ListTags", + "sagemaker:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::SageMaker::FeatureGroup" +} diff --git a/src/schema/aws-sagemaker-image.json b/src/schema/aws-sagemaker-image.json index 2a3c9e78..13b00cde 100644 --- a/src/schema/aws-sagemaker-image.json +++ b/src/schema/aws-sagemaker-image.json @@ -1,152 +1,157 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ImageName" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ImageName" - ], - "definitions": { - "ImageArn": { - "description": "The Amazon Resource Name (ARN) of the image.", - "maxLength": 256, - "minLength": 1, - "pattern": "^arn:aws(-[\\w]+)*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:image\\/[a-zA-Z0-9]([-.]?[a-zA-Z0-9])*$", - "type": "string" - }, - "ImageDescription": { - "description": "A description of the image.", - "maxLength": 512, - "minLength": 1, - "pattern": ".+", - "type": "string" - }, - "ImageDisplayName": { - "description": "The display name of the image.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9 -_]+$", - "type": "string" - }, - "ImageName": { - "description": "The name of the image.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9])*$", - "type": "string" - }, - "ImageRoleArn": { - "description": "The Amazon Resource Name (ARN) of an IAM role that enables Amazon SageMaker to perform tasks on behalf of the customer.", - "maxLength": 256, - "minLength": 1, - "pattern": "^arn:aws(-[\\w]+)*:iam::[0-9]{12}:role/.*$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SageMaker::Image", - "handlers": { - "create": { - "permissions": [ - "sagemaker:CreateImage", - "sagemaker:DescribeImage", - "iam:PassRole", - "sagemaker:AddTags", - "sagemaker:ListTags" - ] - }, - "delete": { - "permissions": [ - "sagemaker:DeleteImage", - "sagemaker:DescribeImage" - ] - }, - "list": { - "permissions": [ - "sagemaker:ListImages" - ] - }, - "read": { - "permissions": [ - "sagemaker:DescribeImage", - "sagemaker:ListTags" - ] - }, - "update": { - "permissions": [ - "sagemaker:UpdateImage", - "sagemaker:DescribeImage", - "sagemaker:ListTags", - "sagemaker:AddTags", - "sagemaker:DeleteTags", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/ImageArn" - ], - "properties": { - "ImageArn": { - "$ref": "#/definitions/ImageArn" - }, - "ImageDescription": { - "$ref": "#/definitions/ImageDescription" - }, - "ImageDisplayName": { - "$ref": "#/definitions/ImageDisplayName" - }, - "ImageName": { - "$ref": "#/definitions/ImageName" - }, - "ImageRoleArn": { - "$ref": "#/definitions/ImageRoleArn" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ImageArn" - ], - "required": [ - "ImageName", - "ImageRoleArn" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SageMaker::Image" -} +{ + "additionalIdentifiers": [ + [ + "/properties/ImageName" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ImageName" + ], + "definitions": { + "ImageArn": { + "description": "The Amazon Resource Name (ARN) of the image.", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:image\\/[a-zA-Z0-9]([-.]?[a-zA-Z0-9])*$", + "type": "string" + }, + "ImageDescription": { + "description": "A description of the image.", + "maxLength": 512, + "minLength": 1, + "pattern": ".+", + "type": "string" + }, + "ImageDisplayName": { + "description": "The display name of the image.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9 -_]+$", + "type": "string" + }, + "ImageName": { + "description": "The name of the image.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9])*$", + "type": "string" + }, + "ImageRoleArn": { + "description": "The Amazon Resource Name (ARN) of an IAM role that enables Amazon SageMaker to perform tasks on behalf of the customer.", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:aws(-[\\w]+)*:iam::[0-9]{12}:role/.*$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SageMaker::Image", + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateImage", + "sagemaker:DescribeImage", + "iam:PassRole", + "sagemaker:AddTags", + "sagemaker:ListTags" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteImage", + "sagemaker:DescribeImage" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListImages" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeImage", + "sagemaker:ListTags" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateImage", + "sagemaker:DescribeImage", + "sagemaker:ListTags", + "sagemaker:AddTags", + "sagemaker:DeleteTags", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/ImageArn" + ], + "properties": { + "ImageArn": { + "$ref": "#/definitions/ImageArn" + }, + "ImageDescription": { + "$ref": "#/definitions/ImageDescription" + }, + "ImageDisplayName": { + "$ref": "#/definitions/ImageDisplayName" + }, + "ImageName": { + "$ref": "#/definitions/ImageName" + }, + "ImageRoleArn": { + "$ref": "#/definitions/ImageRoleArn" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ImageArn" + ], + "required": [ + "ImageName", + "ImageRoleArn" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "sagemaker:AddTags", + "sagemaker:ListTags", + "sagemaker:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SageMaker::Image" +} diff --git a/src/schema/aws-sagemaker-imageversion.json b/src/schema/aws-sagemaker-imageversion.json index a7d54b92..5d2ad1fb 100644 --- a/src/schema/aws-sagemaker-imageversion.json +++ b/src/schema/aws-sagemaker-imageversion.json @@ -1,229 +1,229 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ImageName", - "/properties/BaseImage" - ], - "definitions": { - "Alias": { - "description": "The alias of the image version.", - "maxLength": 128, - "minLength": 1, - "pattern": "(?!^[.-])^([a-zA-Z0-9-_.]+)$", - "type": "string" - }, - "Aliases": { - "description": "List of aliases for the image version.", - "items": { - "$ref": "#/definitions/Alias" - }, - "type": "array" - }, - "BaseImage": { - "description": "The registry path of the container image on which this image version is based.", - "maxLength": 255, - "minLength": 1, - "pattern": ".+", - "type": "string" - }, - "ContainerImage": { - "description": "The registry path of the container image that contains this image version.", - "maxLength": 255, - "minLength": 1, - "pattern": ".+", - "type": "string" - }, - "Horovod": { - "description": "Indicates Horovod compatibility.", - "type": "boolean" - }, - "ImageArn": { - "description": "The Amazon Resource Name (ARN) of the parent image.", - "maxLength": 256, - "minLength": 1, - "pattern": "^arn:aws(-[\\w]+)*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:image\\/[a-zA-Z0-9]([-.]?[a-zA-Z0-9])*$", - "type": "string" - }, - "ImageName": { - "description": "The name of the image this version belongs to.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[A-Za-z0-9]([-.]?[A-Za-z0-9])*$", - "type": "string" - }, - "ImageVersionArn": { - "description": "The Amazon Resource Name (ARN) of the image version.", - "maxLength": 256, - "minLength": 1, - "pattern": "^arn:aws(-[\\w]+)*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:image-version\\/[a-zA-Z0-9]([-.]?[a-zA-Z0-9])*\\/[0-9]+$", - "type": "string" - }, - "JobType": { - "description": "Indicates SageMaker job type compatibility.", - "enum": [ - "TRAINING", - "INFERENCE", - "NOTEBOOK_KERNEL" - ], - "type": "string" - }, - "MLFramework": { - "description": "The machine learning framework vended in the image version.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z]+ ?\\d+\\.\\d+(\\.\\d+)?$", - "type": "string" - }, - "Processor": { - "description": "Indicates CPU or GPU compatibility.", - "enum": [ - "CPU", - "GPU" - ], - "type": "string" - }, - "ProgrammingLang": { - "description": "The supported programming language and its version.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z]+ ?\\d+\\.\\d+(\\.\\d+)?$", - "type": "string" - }, - "ReleaseNotes": { - "description": "The maintainer description of the image version.", - "maxLength": 255, - "minLength": 1, - "pattern": ".*", - "type": "string" - }, - "VendorGuidance": { - "description": "The availability of the image version specified by the maintainer.", - "enum": [ - "NOT_PROVIDED", - "STABLE", - "TO_BE_ARCHIVED", - "ARCHIVED" - ], - "type": "string" - }, - "Version": { - "description": "The version number of the image version.", - "minimum": 1, - "type": "integer" - } - }, - "description": "Resource Type definition for AWS::SageMaker::ImageVersion", - "handlers": { - "create": { - "permissions": [ - "sagemaker:CreateImageVersion", - "sagemaker:DescribeImageVersion" - ] - }, - "delete": { - "permissions": [ - "sagemaker:DeleteImageVersion", - "sagemaker:DescribeImageVersion" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ImageName": { - "$ref": "resource-schema.json#/properties/ImageName" - } - }, - "required": [ - "ImageName" - ] - }, - "permissions": [ - "sagemaker:ListImageVersions" - ] - }, - "read": { - "permissions": [ - "sagemaker:DescribeImageVersion" - ] - }, - "update": { - "permissions": [ - "sagemaker:UpdateImageVersion", - "sagemaker:DescribeImageVersion", - "sagemaker:ListAliases" - ] - } - }, - "primaryIdentifier": [ - "/properties/ImageVersionArn" - ], - "properties": { - "Alias": { - "$ref": "#/definitions/Alias" - }, - "Aliases": { - "$ref": "#/definitions/Aliases" - }, - "BaseImage": { - "$ref": "#/definitions/BaseImage" - }, - "ContainerImage": { - "$ref": "#/definitions/ContainerImage" - }, - "Horovod": { - "$ref": "#/definitions/Horovod" - }, - "ImageArn": { - "$ref": "#/definitions/ImageArn" - }, - "ImageName": { - "$ref": "#/definitions/ImageName" - }, - "ImageVersionArn": { - "$ref": "#/definitions/ImageVersionArn" - }, - "JobType": { - "$ref": "#/definitions/JobType" - }, - "MLFramework": { - "$ref": "#/definitions/MLFramework" - }, - "Processor": { - "$ref": "#/definitions/Processor" - }, - "ProgrammingLang": { - "$ref": "#/definitions/ProgrammingLang" - }, - "ReleaseNotes": { - "$ref": "#/definitions/ReleaseNotes" - }, - "VendorGuidance": { - "$ref": "#/definitions/VendorGuidance" - }, - "Version": { - "$ref": "#/definitions/Version" - } - }, - "readOnlyProperties": [ - "/properties/ImageVersionArn", - "/properties/ImageArn", - "/properties/Version", - "/properties/ContainerImage" - ], - "required": [ - "ImageName", - "BaseImage" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sagemaker", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::SageMaker::ImageVersion", - "writeOnlyProperties": [ - "/properties/Aliases", - "/properties/Alias" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ImageName", + "/properties/BaseImage" + ], + "definitions": { + "Alias": { + "description": "The alias of the image version.", + "maxLength": 128, + "minLength": 1, + "pattern": "(?!^[.-])^([a-zA-Z0-9-_.]+)$", + "type": "string" + }, + "Aliases": { + "description": "List of aliases for the image version.", + "items": { + "$ref": "#/definitions/Alias" + }, + "type": "array" + }, + "BaseImage": { + "description": "The registry path of the container image on which this image version is based.", + "maxLength": 255, + "minLength": 1, + "pattern": ".+", + "type": "string" + }, + "ContainerImage": { + "description": "The registry path of the container image that contains this image version.", + "maxLength": 255, + "minLength": 1, + "pattern": ".+", + "type": "string" + }, + "Horovod": { + "description": "Indicates Horovod compatibility.", + "type": "boolean" + }, + "ImageArn": { + "description": "The Amazon Resource Name (ARN) of the parent image.", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:image\\/[a-zA-Z0-9]([-.]?[a-zA-Z0-9])*$", + "type": "string" + }, + "ImageName": { + "description": "The name of the image this version belongs to.", + "maxLength": 63, + "minLength": 1, + "pattern": "^[A-Za-z0-9]([-.]?[A-Za-z0-9])*$", + "type": "string" + }, + "ImageVersionArn": { + "description": "The Amazon Resource Name (ARN) of the image version.", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:image-version\\/[a-zA-Z0-9]([-.]?[a-zA-Z0-9])*\\/[0-9]+$", + "type": "string" + }, + "JobType": { + "description": "Indicates SageMaker job type compatibility.", + "enum": [ + "TRAINING", + "INFERENCE", + "NOTEBOOK_KERNEL" + ], + "type": "string" + }, + "MLFramework": { + "description": "The machine learning framework vended in the image version.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z]+ ?\\d+\\.\\d+(\\.\\d+)?$", + "type": "string" + }, + "Processor": { + "description": "Indicates CPU or GPU compatibility.", + "enum": [ + "CPU", + "GPU" + ], + "type": "string" + }, + "ProgrammingLang": { + "description": "The supported programming language and its version.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z]+ ?\\d+\\.\\d+(\\.\\d+)?$", + "type": "string" + }, + "ReleaseNotes": { + "description": "The maintainer description of the image version.", + "maxLength": 255, + "minLength": 1, + "pattern": ".*", + "type": "string" + }, + "VendorGuidance": { + "description": "The availability of the image version specified by the maintainer.", + "enum": [ + "NOT_PROVIDED", + "STABLE", + "TO_BE_ARCHIVED", + "ARCHIVED" + ], + "type": "string" + }, + "Version": { + "description": "The version number of the image version.", + "minimum": 1, + "type": "integer" + } + }, + "description": "Resource Type definition for AWS::SageMaker::ImageVersion", + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateImageVersion", + "sagemaker:DescribeImageVersion" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteImageVersion", + "sagemaker:DescribeImageVersion" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ImageName": { + "$ref": "resource-schema.json#/properties/ImageName" + } + }, + "required": [ + "ImageName" + ] + }, + "permissions": [ + "sagemaker:ListImageVersions" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeImageVersion" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateImageVersion", + "sagemaker:DescribeImageVersion", + "sagemaker:ListAliases" + ] + } + }, + "primaryIdentifier": [ + "/properties/ImageVersionArn" + ], + "properties": { + "Alias": { + "$ref": "#/definitions/Alias" + }, + "Aliases": { + "$ref": "#/definitions/Aliases" + }, + "BaseImage": { + "$ref": "#/definitions/BaseImage" + }, + "ContainerImage": { + "$ref": "#/definitions/ContainerImage" + }, + "Horovod": { + "$ref": "#/definitions/Horovod" + }, + "ImageArn": { + "$ref": "#/definitions/ImageArn" + }, + "ImageName": { + "$ref": "#/definitions/ImageName" + }, + "ImageVersionArn": { + "$ref": "#/definitions/ImageVersionArn" + }, + "JobType": { + "$ref": "#/definitions/JobType" + }, + "MLFramework": { + "$ref": "#/definitions/MLFramework" + }, + "Processor": { + "$ref": "#/definitions/Processor" + }, + "ProgrammingLang": { + "$ref": "#/definitions/ProgrammingLang" + }, + "ReleaseNotes": { + "$ref": "#/definitions/ReleaseNotes" + }, + "VendorGuidance": { + "$ref": "#/definitions/VendorGuidance" + }, + "Version": { + "$ref": "#/definitions/Version" + } + }, + "readOnlyProperties": [ + "/properties/ImageVersionArn", + "/properties/ImageArn", + "/properties/Version", + "/properties/ContainerImage" + ], + "required": [ + "ImageName", + "BaseImage" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sagemaker", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::SageMaker::ImageVersion", + "writeOnlyProperties": [ + "/properties/Aliases", + "/properties/Alias" + ] +} diff --git a/src/schema/aws-sagemaker-inferencecomponent.json b/src/schema/aws-sagemaker-inferencecomponent.json index 8838ea22..b574a04e 100644 --- a/src/schema/aws-sagemaker-inferencecomponent.json +++ b/src/schema/aws-sagemaker-inferencecomponent.json @@ -1,351 +1,466 @@ -{ - "additionalProperties": false, - "definitions": { - "ContainerImage": { - "description": "The image to use for the container that will be materialized for the inference component", - "maxLength": 255, - "pattern": "[\\S]+", - "type": "string" - }, - "DeployedImage": { - "additionalProperties": false, - "description": "", - "properties": { - "ResolutionTime": { - "$ref": "#/definitions/Timestamp" - }, - "ResolvedImage": { - "$ref": "#/definitions/ContainerImage" - }, - "SpecifiedImage": { - "$ref": "#/definitions/ContainerImage" - } - }, - "type": "object" - }, - "EndpointArn": { - "description": "The Amazon Resource Name (ARN) of the endpoint the inference component is associated with", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "EndpointName": { - "description": "The name of the endpoint the inference component is associated with", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", - "type": "string" - }, - "EnvironmentMap": { - "additionalProperties": false, - "description": "Environment variables to specify on the container", - "maxProperties": 16, - "patternProperties": { - "^[a-zA-Z_][a-zA-Z0-9_]{1,1024}$": { - "maxLength": 1024, - "pattern": "^[\\S\\s]*$", - "type": "string" - } - }, - "type": "object" - }, - "FailureReason": { - "description": "The failure reason if the inference component is in a failed state", - "maxLength": 63, - "type": "string" - }, - "InferenceComponentArn": { - "description": "The Amazon Resource Name (ARN) of the inference component", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "InferenceComponentComputeResourceRequirements": { - "additionalProperties": false, - "description": "", - "properties": { - "MaxMemoryRequiredInMb": { - "$ref": "#/definitions/MemoryInMb" - }, - "MinMemoryRequiredInMb": { - "$ref": "#/definitions/MemoryInMb" - }, - "NumberOfAcceleratorDevicesRequired": { - "$ref": "#/definitions/NumberOfAcceleratorDevices" - }, - "NumberOfCpuCoresRequired": { - "$ref": "#/definitions/NumberOfCpuCores" - } - }, - "type": "object" - }, - "InferenceComponentContainerSpecification": { - "additionalProperties": false, - "description": "", - "properties": { - "ArtifactUrl": { - "$ref": "#/definitions/Url" - }, - "DeployedImage": { - "$ref": "#/definitions/DeployedImage" - }, - "Environment": { - "$ref": "#/definitions/EnvironmentMap" - }, - "Image": { - "$ref": "#/definitions/ContainerImage" - } - }, - "type": "object" - }, - "InferenceComponentCopyCount": { - "description": "The number of copies for the inference component", - "minimum": 0, - "type": "integer" - }, - "InferenceComponentName": { - "description": "The name of the inference component", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", - "type": "string" - }, - "InferenceComponentRuntimeConfig": { - "additionalProperties": false, - "description": "The runtime config for the inference component", - "properties": { - "CopyCount": { - "$ref": "#/definitions/InferenceComponentCopyCount" - }, - "CurrentCopyCount": { - "$ref": "#/definitions/InferenceComponentCopyCount" - }, - "DesiredCopyCount": { - "$ref": "#/definitions/InferenceComponentCopyCount" - } - }, - "type": "object" - }, - "InferenceComponentSpecification": { - "additionalProperties": false, - "description": "The specification for the inference component", - "properties": { - "ComputeResourceRequirements": { - "$ref": "#/definitions/InferenceComponentComputeResourceRequirements" - }, - "Container": { - "$ref": "#/definitions/InferenceComponentContainerSpecification" - }, - "ModelName": { - "$ref": "#/definitions/ModelName" - }, - "StartupParameters": { - "$ref": "#/definitions/InferenceComponentStartupParameters" - } - }, - "required": [ - "ComputeResourceRequirements" - ], - "type": "object" - }, - "InferenceComponentStartupParameters": { - "additionalProperties": false, - "description": "", - "properties": { - "ContainerStartupHealthCheckTimeoutInSeconds": { - "$ref": "#/definitions/StartupParameterTimeoutInSeconds" - }, - "ModelDataDownloadTimeoutInSeconds": { - "$ref": "#/definitions/StartupParameterTimeoutInSeconds" - } - }, - "type": "object" - }, - "InferenceComponentStatus": { - "enum": [ - "InService", - "Creating", - "Updating", - "Failed", - "Deleting" - ], - "type": "string" - }, - "MemoryInMb": { - "minimum": 128, - "type": "integer" - }, - "ModelName": { - "description": "The name of the model to use with the inference component", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", - "type": "string" - }, - "NumberOfAcceleratorDevices": { - "minimum": 1, - "type": "number" - }, - "NumberOfCpuCores": { - "minimum": 0.25, - "type": "number" - }, - "StartupParameterTimeoutInSeconds": { - "maximum": 3600, - "minimum": 60, - "type": "integer" - }, - "Tag": { - "additionalProperties": false, - "description": "A tag in the form of a key-value pair to associate with the resource", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -", - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TagList": { - "description": "An array of tags to apply to the resource", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array" - }, - "Timestamp": { - "type": "string" - }, - "Url": { - "maxLength": 1024, - "pattern": "^(https|s3)://([^/]+)/?(.*)$", - "type": "string" - }, - "VariantName": { - "description": "The name of the endpoint variant the inference component is associated with", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", - "type": "string" - } - }, - "description": "Resource Type definition for AWS::SageMaker::InferenceComponent", - "handlers": { - "create": { - "permissions": [ - "sagemaker:AddTags", - "sagemaker:ListTags", - "sagemaker:CreateInferenceComponent", - "sagemaker:DescribeInferenceComponent" - ] - }, - "delete": { - "permissions": [ - "sagemaker:DescribeInferenceComponent", - "sagemaker:DeleteInferenceComponent", - "sagemaker:DeleteTags" - ] - }, - "list": { - "permissions": [ - "sagemaker:ListInferenceComponents", - "sagemaker:DescribeInferenceComponent", - "sagemaker:ListTags" - ] - }, - "read": { - "permissions": [ - "sagemaker:DescribeInferenceComponent", - "sagemaker:ListTags" - ] - }, - "update": { - "permissions": [ - "sagemaker:UpdateInferenceComponent", - "sagemaker:UpdateInferenceComponentRuntimeConfig", - "sagemaker:DescribeInferenceComponent", - "sagemaker:AddTags", - "sagemaker:ListTags", - "sagemaker:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/InferenceComponentArn" - ], - "properties": { - "CreationTime": { - "$ref": "#/definitions/Timestamp" - }, - "EndpointArn": { - "$ref": "#/definitions/EndpointArn" - }, - "EndpointName": { - "$ref": "#/definitions/EndpointName" - }, - "FailureReason": { - "$ref": "#/definitions/FailureReason" - }, - "InferenceComponentArn": { - "$ref": "#/definitions/InferenceComponentArn" - }, - "InferenceComponentName": { - "$ref": "#/definitions/InferenceComponentName" - }, - "InferenceComponentStatus": { - "$ref": "#/definitions/InferenceComponentStatus" - }, - "LastModifiedTime": { - "$ref": "#/definitions/Timestamp" - }, - "RuntimeConfig": { - "$ref": "#/definitions/InferenceComponentRuntimeConfig" - }, - "Specification": { - "$ref": "#/definitions/InferenceComponentSpecification" - }, - "Tags": { - "$ref": "#/definitions/TagList" - }, - "VariantName": { - "$ref": "#/definitions/VariantName" - } - }, - "readOnlyProperties": [ - "/properties/InferenceComponentArn", - "/properties/Specification/Container/DeployedImage", - "/properties/RuntimeConfig/DesiredCopyCount", - "/properties/RuntimeConfig/CurrentCopyCount", - "/properties/CreationTime", - "/properties/LastModifiedTime", - "/properties/FailureReason", - "/properties/InferenceComponentStatus" - ], - "required": [ - "EndpointName", - "VariantName", - "Specification", - "RuntimeConfig" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SageMaker::InferenceComponent", - "writeOnlyProperties": [ - "/properties/Specification/Container/Image", - "/properties/RuntimeConfig/CopyCount" - ] -} +{ + "additionalProperties": false, + "definitions": { + "Alarm": { + "additionalProperties": false, + "properties": { + "AlarmName": { + "maxLength": 255, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "AlarmName" + ], + "type": "object" + }, + "AutoRollbackConfiguration": { + "additionalProperties": false, + "properties": { + "Alarms": { + "items": { + "$ref": "#/definitions/Alarm" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Alarms" + ], + "type": "object" + }, + "BaseInferenceComponentName": { + "description": "The name of the base inference component", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "type": "string" + }, + "CapacitySizeValue": { + "description": "The number of copies for the inference component", + "type": "integer" + }, + "ContainerImage": { + "description": "The image to use for the container that will be materialized for the inference component", + "maxLength": 255, + "pattern": "[\\S]+", + "type": "string" + }, + "DeployedImage": { + "additionalProperties": false, + "description": "", + "properties": { + "ResolutionTime": { + "$ref": "#/definitions/Timestamp" + }, + "ResolvedImage": { + "$ref": "#/definitions/ContainerImage" + }, + "SpecifiedImage": { + "$ref": "#/definitions/ContainerImage" + } + }, + "type": "object" + }, + "EndpointArn": { + "description": "The Amazon Resource Name (ARN) of the endpoint the inference component is associated with", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "EndpointName": { + "description": "The name of the endpoint the inference component is associated with", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "type": "string" + }, + "EnvironmentMap": { + "additionalProperties": false, + "description": "Environment variables to specify on the container", + "maxProperties": 16, + "patternProperties": { + "^[a-zA-Z_][a-zA-Z0-9_]{1,1024}$": { + "maxLength": 1024, + "pattern": "^[\\S\\s]*$", + "type": "string" + } + }, + "type": "object" + }, + "FailureReason": { + "description": "The failure reason if the inference component is in a failed state", + "maxLength": 63, + "type": "string" + }, + "InferenceComponentArn": { + "description": "The Amazon Resource Name (ARN) of the inference component", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "InferenceComponentCapacitySize": { + "additionalProperties": false, + "description": "Capacity size configuration for the inference component", + "properties": { + "Type": { + "$ref": "#/definitions/InferenceComponentCapacitySizeType" + }, + "Value": { + "$ref": "#/definitions/CapacitySizeValue" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, + "InferenceComponentCapacitySizeType": { + "enum": [ + "COPY_COUNT", + "CAPACITY_PERCENT" + ], + "type": "string" + }, + "InferenceComponentComputeResourceRequirements": { + "additionalProperties": false, + "description": "", + "properties": { + "MaxMemoryRequiredInMb": { + "$ref": "#/definitions/MemoryInMb" + }, + "MinMemoryRequiredInMb": { + "$ref": "#/definitions/MemoryInMb" + }, + "NumberOfAcceleratorDevicesRequired": { + "$ref": "#/definitions/NumberOfAcceleratorDevices" + }, + "NumberOfCpuCoresRequired": { + "$ref": "#/definitions/NumberOfCpuCores" + } + }, + "type": "object" + }, + "InferenceComponentContainerSpecification": { + "additionalProperties": false, + "description": "", + "properties": { + "ArtifactUrl": { + "$ref": "#/definitions/Url" + }, + "DeployedImage": { + "$ref": "#/definitions/DeployedImage" + }, + "Environment": { + "$ref": "#/definitions/EnvironmentMap" + }, + "Image": { + "$ref": "#/definitions/ContainerImage" + } + }, + "type": "object" + }, + "InferenceComponentCopyCount": { + "description": "The number of copies for the inference component", + "minimum": 0, + "type": "integer" + }, + "InferenceComponentDeploymentConfig": { + "additionalProperties": false, + "description": "The deployment config for the inference component", + "properties": { + "AutoRollbackConfiguration": { + "$ref": "#/definitions/AutoRollbackConfiguration" + }, + "RollingUpdatePolicy": { + "$ref": "#/definitions/InferenceComponentRollingUpdatePolicy" + } + }, + "type": "object" + }, + "InferenceComponentName": { + "description": "The name of the inference component", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "type": "string" + }, + "InferenceComponentRollingUpdatePolicy": { + "additionalProperties": false, + "description": "The rolling update policy for the inference component", + "properties": { + "MaximumBatchSize": { + "$ref": "#/definitions/InferenceComponentCapacitySize" + }, + "MaximumExecutionTimeoutInSeconds": { + "$ref": "#/definitions/MaximumExecutionTimeoutInSeconds" + }, + "RollbackMaximumBatchSize": { + "$ref": "#/definitions/InferenceComponentCapacitySize" + }, + "WaitIntervalInSeconds": { + "$ref": "#/definitions/WaitIntervalInSeconds" + } + }, + "type": "object" + }, + "InferenceComponentRuntimeConfig": { + "additionalProperties": false, + "description": "The runtime config for the inference component", + "properties": { + "CopyCount": { + "$ref": "#/definitions/InferenceComponentCopyCount" + }, + "CurrentCopyCount": { + "$ref": "#/definitions/InferenceComponentCopyCount" + }, + "DesiredCopyCount": { + "$ref": "#/definitions/InferenceComponentCopyCount" + } + }, + "type": "object" + }, + "InferenceComponentSpecification": { + "additionalProperties": false, + "description": "The specification for the inference component", + "properties": { + "BaseInferenceComponentName": { + "$ref": "#/definitions/BaseInferenceComponentName" + }, + "ComputeResourceRequirements": { + "$ref": "#/definitions/InferenceComponentComputeResourceRequirements" + }, + "Container": { + "$ref": "#/definitions/InferenceComponentContainerSpecification" + }, + "ModelName": { + "$ref": "#/definitions/ModelName" + }, + "StartupParameters": { + "$ref": "#/definitions/InferenceComponentStartupParameters" + } + }, + "type": "object" + }, + "InferenceComponentStartupParameters": { + "additionalProperties": false, + "description": "", + "properties": { + "ContainerStartupHealthCheckTimeoutInSeconds": { + "$ref": "#/definitions/StartupParameterTimeoutInSeconds" + }, + "ModelDataDownloadTimeoutInSeconds": { + "$ref": "#/definitions/StartupParameterTimeoutInSeconds" + } + }, + "type": "object" + }, + "InferenceComponentStatus": { + "enum": [ + "InService", + "Creating", + "Updating", + "Failed", + "Deleting" + ], + "type": "string" + }, + "MaximumExecutionTimeoutInSeconds": { + "maximum": 28800, + "minimum": 600, + "type": "integer" + }, + "MemoryInMb": { + "minimum": 128, + "type": "integer" + }, + "ModelName": { + "description": "The name of the model to use with the inference component", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "type": "string" + }, + "NumberOfAcceleratorDevices": { + "minimum": 1, + "type": "number" + }, + "NumberOfCpuCores": { + "minimum": 0.25, + "type": "number" + }, + "StartupParameterTimeoutInSeconds": { + "maximum": 3600, + "minimum": 60, + "type": "integer" + }, + "Tag": { + "additionalProperties": false, + "description": "A tag in the form of a key-value pair to associate with the resource", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TagList": { + "description": "An array of tags to apply to the resource", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array" + }, + "Timestamp": { + "type": "string" + }, + "Url": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + }, + "VariantName": { + "description": "The name of the endpoint variant the inference component is associated with", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "type": "string" + }, + "WaitIntervalInSeconds": { + "maximum": 3600, + "minimum": 0, + "type": "integer" + } + }, + "description": "Resource Type definition for AWS::SageMaker::InferenceComponent", + "handlers": { + "create": { + "permissions": [ + "sagemaker:AddTags", + "sagemaker:ListTags", + "sagemaker:CreateInferenceComponent", + "sagemaker:DescribeInferenceComponent" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DescribeInferenceComponent", + "sagemaker:DeleteInferenceComponent", + "sagemaker:DeleteTags" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListInferenceComponents", + "sagemaker:DescribeInferenceComponent", + "sagemaker:ListTags" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeInferenceComponent", + "sagemaker:ListTags" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateInferenceComponent", + "sagemaker:UpdateInferenceComponentRuntimeConfig", + "sagemaker:DescribeInferenceComponent", + "sagemaker:AddTags", + "sagemaker:ListTags", + "sagemaker:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/InferenceComponentArn" + ], + "properties": { + "CreationTime": { + "$ref": "#/definitions/Timestamp" + }, + "DeploymentConfig": { + "$ref": "#/definitions/InferenceComponentDeploymentConfig" + }, + "EndpointArn": { + "$ref": "#/definitions/EndpointArn" + }, + "EndpointName": { + "$ref": "#/definitions/EndpointName" + }, + "FailureReason": { + "$ref": "#/definitions/FailureReason" + }, + "InferenceComponentArn": { + "$ref": "#/definitions/InferenceComponentArn" + }, + "InferenceComponentName": { + "$ref": "#/definitions/InferenceComponentName" + }, + "InferenceComponentStatus": { + "$ref": "#/definitions/InferenceComponentStatus" + }, + "LastModifiedTime": { + "$ref": "#/definitions/Timestamp" + }, + "RuntimeConfig": { + "$ref": "#/definitions/InferenceComponentRuntimeConfig" + }, + "Specification": { + "$ref": "#/definitions/InferenceComponentSpecification" + }, + "Tags": { + "$ref": "#/definitions/TagList" + }, + "VariantName": { + "$ref": "#/definitions/VariantName" + } + }, + "readOnlyProperties": [ + "/properties/InferenceComponentArn", + "/properties/Specification/Container/DeployedImage", + "/properties/RuntimeConfig/DesiredCopyCount", + "/properties/RuntimeConfig/CurrentCopyCount", + "/properties/CreationTime", + "/properties/LastModifiedTime", + "/properties/FailureReason", + "/properties/InferenceComponentStatus" + ], + "required": [ + "EndpointName", + "Specification" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "sagemaker:AddTags", + "sagemaker:ListTags", + "sagemaker:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SageMaker::InferenceComponent", + "writeOnlyProperties": [ + "/properties/Specification/Container/Image", + "/properties/RuntimeConfig/CopyCount", + "/properties/DeploymentConfig" + ] +} diff --git a/src/schema/aws-sagemaker-inferenceexperiment.json b/src/schema/aws-sagemaker-inferenceexperiment.json index a754f97e..732e11ed 100644 --- a/src/schema/aws-sagemaker-inferenceexperiment.json +++ b/src/schema/aws-sagemaker-inferenceexperiment.json @@ -1,440 +1,440 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Type", - "/properties/RoleArn", - "/properties/EndpointName", - "/properties/KmsKey" - ], - "definitions": { - "CaptureContentTypeHeader": { - "additionalProperties": false, - "description": "Configuration specifying how to treat different headers. If no headers are specified SageMaker will by default base64 encode when capturing the data.", - "properties": { - "CsvContentTypes": { - "description": "The list of all content type headers that SageMaker will treat as CSV and capture accordingly.", - "items": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*/[a-zA-Z0-9](-*[a-zA-Z0-9.])*", - "type": "string" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "JsonContentTypes": { - "description": "The list of all content type headers that SageMaker will treat as JSON and capture accordingly.", - "items": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*/[a-zA-Z0-9](-*[a-zA-Z0-9.])*", - "type": "string" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "DataStorageConfig": { - "additionalProperties": false, - "description": "The Amazon S3 location and configuration for storing inference request and response data.", - "properties": { - "ContentType": { - "$ref": "#/definitions/CaptureContentTypeHeader" - }, - "Destination": { - "description": "The Amazon S3 bucket where the inference request and response data is stored.", - "maxLength": 512, - "pattern": "^(https|s3)://([^/])/?(.*)$", - "type": "string" - }, - "KmsKey": { - "description": "The AWS Key Management Service key that Amazon SageMaker uses to encrypt captured data at rest using Amazon S3 server-side encryption.", - "maxLength": 2048, - "pattern": ".*", - "type": "string" - } - }, - "required": [ - "Destination" - ], - "type": "object" - }, - "EndpointMetadata": { - "additionalProperties": false, - "description": "The metadata of the endpoint on which the inference experiment ran.", - "properties": { - "EndpointConfigName": { - "description": "The name of the endpoint configuration.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*", - "type": "string" - }, - "EndpointName": { - "$ref": "#/definitions/EndpointName" - }, - "EndpointStatus": { - "description": "The status of the endpoint. For possible values of the status of an endpoint.", - "enum": [ - "Creating", - "Updating", - "SystemUpdating", - "RollingBack", - "InService", - "OutOfService", - "Deleting", - "Failed" - ], - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*", - "type": "string" - } - }, - "required": [ - "EndpointName" - ], - "type": "object" - }, - "EndpointName": { - "description": "The name of the endpoint used to run the inference experiment.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*", - "type": "string" - }, - "InferenceExperimentSchedule": { - "additionalProperties": false, - "description": "The duration for which you want the inference experiment to run.", - "properties": { - "EndTime": { - "description": "The timestamp at which the inference experiment ended or will end.", - "type": "string" - }, - "StartTime": { - "description": "The timestamp at which the inference experiment started or will start.", - "type": "string" - } - }, - "type": "object" - }, - "ModelInfrastructureConfig": { - "additionalProperties": false, - "description": "The configuration for the infrastructure that the model will be deployed to.", - "properties": { - "InfrastructureType": { - "description": "The type of the inference experiment that you want to run.", - "enum": [ - "RealTimeInference" - ], - "type": "string" - }, - "RealTimeInferenceConfig": { - "$ref": "#/definitions/RealTimeInferenceConfig" - } - }, - "required": [ - "InfrastructureType", - "RealTimeInferenceConfig" - ], - "type": "object" - }, - "ModelVariantConfig": { - "additionalProperties": false, - "description": "Contains information about the deployment options of a model.", - "properties": { - "InfrastructureConfig": { - "$ref": "#/definitions/ModelInfrastructureConfig" - }, - "ModelName": { - "description": "The name of the Amazon SageMaker Model entity.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*", - "type": "string" - }, - "VariantName": { - "description": "The name of the variant.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9]([\\-a-zA-Z0-9]*[a-zA-Z0-9])?", - "type": "string" - } - }, - "required": [ - "ModelName", - "VariantName", - "InfrastructureConfig" - ], - "type": "object" - }, - "RealTimeInferenceConfig": { - "additionalProperties": false, - "description": "The infrastructure configuration for deploying the model to a real-time inference endpoint.", - "properties": { - "InstanceCount": { - "description": "The number of instances of the type specified by InstanceType.", - "type": "integer" - }, - "InstanceType": { - "description": "The instance type the model is deployed to.", - "type": "string" - } - }, - "required": [ - "InstanceType", - "InstanceCount" - ], - "type": "object" - }, - "ShadowModeConfig": { - "additionalProperties": false, - "description": "The configuration of ShadowMode inference experiment type. Use this field to specify a production variant which takes all the inference requests, and a shadow variant to which Amazon SageMaker replicates a percentage of the inference requests. For the shadow variant also specify the percentage of requests that Amazon SageMaker replicates.", - "properties": { - "ShadowModelVariants": { - "description": "List of shadow variant configurations.", - "items": { - "$ref": "#/definitions/ShadowModelVariantConfig" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "SourceModelVariantName": { - "description": "The name of the production variant, which takes all the inference requests.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9]([\\-a-zA-Z0-9]*[a-zA-Z0-9])?", - "type": "string" - } - }, - "required": [ - "SourceModelVariantName", - "ShadowModelVariants" - ], - "type": "object" - }, - "ShadowModelVariantConfig": { - "additionalProperties": false, - "description": "The name and sampling percentage of a shadow variant.", - "properties": { - "SamplingPercentage": { - "description": "The percentage of inference requests that Amazon SageMaker replicates from the production variant to the shadow variant.", - "maximum": 100, - "type": "integer" - }, - "ShadowModelVariantName": { - "description": "The name of the shadow variant.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9]([\\-a-zA-Z0-9]*[a-zA-Z0-9])?", - "type": "string" - } - }, - "required": [ - "ShadowModelVariantName", - "SamplingPercentage" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SageMaker::InferenceExperiment", - "handlers": { - "create": { - "permissions": [ - "sagemaker:CreateInferenceExperiment", - "sagemaker:DescribeInferenceExperiment", - "sagemaker:AddTags", - "sagemaker:ListTags", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "sagemaker:DeleteInferenceExperiment", - "sagemaker:DescribeInferenceExperiment", - "sagemaker:StopInferenceExperiment", - "sagemaker:ListTags" - ] - }, - "list": { - "permissions": [ - "sagemaker:ListInferenceExperiments" - ] - }, - "read": { - "permissions": [ - "sagemaker:DescribeInferenceExperiment", - "sagemaker:ListTags" - ] - }, - "update": { - "permissions": [ - "sagemaker:UpdateInferenceExperiment", - "sagemaker:StartInferenceExperiment", - "sagemaker:StopInferenceExperiment", - "sagemaker:DescribeInferenceExperiment", - "sagemaker:AddTags", - "sagemaker:DeleteTags", - "sagemaker:ListTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the inference experiment.", - "maxLength": 256, - "minLength": 20, - "pattern": "^arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:inference-experiment/[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "CreationTime": { - "description": "The timestamp at which you created the inference experiment.", - "type": "string" - }, - "DataStorageConfig": { - "$ref": "#/definitions/DataStorageConfig" - }, - "Description": { - "description": "The description of the inference experiment.", - "maxLength": 1024, - "minLength": 1, - "pattern": ".*", - "type": "string" - }, - "DesiredState": { - "description": "The desired state of the experiment after starting or stopping operation.", - "enum": [ - "Running", - "Completed", - "Cancelled" - ], - "type": "string" - }, - "EndpointMetadata": { - "$ref": "#/definitions/EndpointMetadata" - }, - "EndpointName": { - "$ref": "#/definitions/EndpointName" - }, - "KmsKey": { - "description": "The AWS Key Management Service (AWS KMS) key that Amazon SageMaker uses to encrypt data on the storage volume attached to the ML compute instance that hosts the endpoint.", - "maxLength": 2048, - "pattern": ".*", - "type": "string" - }, - "LastModifiedTime": { - "description": "The timestamp at which you last modified the inference experiment.", - "type": "string" - }, - "ModelVariants": { - "description": "An array of ModelVariantConfig objects. Each ModelVariantConfig object in the array describes the infrastructure configuration for the corresponding variant.", - "items": { - "$ref": "#/definitions/ModelVariantConfig" - }, - "maxItems": 2, - "type": "array" - }, - "Name": { - "description": "The name for the inference experiment.", - "maxLength": 120, - "minLength": 1, - "type": "string" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume to access model artifacts and container images, and manage Amazon SageMaker Inference endpoints for model deployment.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "Schedule": { - "$ref": "#/definitions/InferenceExperimentSchedule" - }, - "ShadowModeConfig": { - "$ref": "#/definitions/ShadowModeConfig" - }, - "Status": { - "description": "The status of the inference experiment.", - "enum": [ - "Creating", - "Created", - "Updating", - "Starting", - "Stopping", - "Running", - "Completed", - "Cancelled" - ], - "type": "string" - }, - "StatusReason": { - "description": "The error message or client-specified reason from the StopInferenceExperiment API, that explains the status of the inference experiment.", - "maxLength": 1024, - "minLength": 1, - "pattern": ".*", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array" - }, - "Type": { - "description": "The type of the inference experiment that you want to run.", - "enum": [ - "ShadowMode" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreationTime", - "/properties/LastModifiedTime", - "/properties/EndpointMetadata", - "/properties/Status" - ], - "required": [ - "Name", - "Type", - "RoleArn", - "EndpointName", - "ModelVariants" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SageMaker::InferenceExperiment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/RoleArn", + "/properties/EndpointName", + "/properties/KmsKey" + ], + "definitions": { + "CaptureContentTypeHeader": { + "additionalProperties": false, + "description": "Configuration specifying how to treat different headers. If no headers are specified SageMaker will by default base64 encode when capturing the data.", + "properties": { + "CsvContentTypes": { + "description": "The list of all content type headers that SageMaker will treat as CSV and capture accordingly.", + "items": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*/[a-zA-Z0-9](-*[a-zA-Z0-9.])*", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "JsonContentTypes": { + "description": "The list of all content type headers that SageMaker will treat as JSON and capture accordingly.", + "items": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*/[a-zA-Z0-9](-*[a-zA-Z0-9.])*", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "DataStorageConfig": { + "additionalProperties": false, + "description": "The Amazon S3 location and configuration for storing inference request and response data.", + "properties": { + "ContentType": { + "$ref": "#/definitions/CaptureContentTypeHeader" + }, + "Destination": { + "description": "The Amazon S3 bucket where the inference request and response data is stored.", + "maxLength": 512, + "pattern": "^(https|s3)://([^/])/?(.*)$", + "type": "string" + }, + "KmsKey": { + "description": "The AWS Key Management Service key that Amazon SageMaker uses to encrypt captured data at rest using Amazon S3 server-side encryption.", + "maxLength": 2048, + "pattern": ".*", + "type": "string" + } + }, + "required": [ + "Destination" + ], + "type": "object" + }, + "EndpointMetadata": { + "additionalProperties": false, + "description": "The metadata of the endpoint on which the inference experiment ran.", + "properties": { + "EndpointConfigName": { + "description": "The name of the endpoint configuration.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*", + "type": "string" + }, + "EndpointName": { + "$ref": "#/definitions/EndpointName" + }, + "EndpointStatus": { + "description": "The status of the endpoint. For possible values of the status of an endpoint.", + "enum": [ + "Creating", + "Updating", + "SystemUpdating", + "RollingBack", + "InService", + "OutOfService", + "Deleting", + "Failed" + ], + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*", + "type": "string" + } + }, + "required": [ + "EndpointName" + ], + "type": "object" + }, + "EndpointName": { + "description": "The name of the endpoint used to run the inference experiment.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*", + "type": "string" + }, + "InferenceExperimentSchedule": { + "additionalProperties": false, + "description": "The duration for which you want the inference experiment to run.", + "properties": { + "EndTime": { + "description": "The timestamp at which the inference experiment ended or will end.", + "type": "string" + }, + "StartTime": { + "description": "The timestamp at which the inference experiment started or will start.", + "type": "string" + } + }, + "type": "object" + }, + "ModelInfrastructureConfig": { + "additionalProperties": false, + "description": "The configuration for the infrastructure that the model will be deployed to.", + "properties": { + "InfrastructureType": { + "description": "The type of the inference experiment that you want to run.", + "enum": [ + "RealTimeInference" + ], + "type": "string" + }, + "RealTimeInferenceConfig": { + "$ref": "#/definitions/RealTimeInferenceConfig" + } + }, + "required": [ + "InfrastructureType", + "RealTimeInferenceConfig" + ], + "type": "object" + }, + "ModelVariantConfig": { + "additionalProperties": false, + "description": "Contains information about the deployment options of a model.", + "properties": { + "InfrastructureConfig": { + "$ref": "#/definitions/ModelInfrastructureConfig" + }, + "ModelName": { + "description": "The name of the Amazon SageMaker Model entity.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*", + "type": "string" + }, + "VariantName": { + "description": "The name of the variant.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([\\-a-zA-Z0-9]*[a-zA-Z0-9])?", + "type": "string" + } + }, + "required": [ + "ModelName", + "VariantName", + "InfrastructureConfig" + ], + "type": "object" + }, + "RealTimeInferenceConfig": { + "additionalProperties": false, + "description": "The infrastructure configuration for deploying the model to a real-time inference endpoint.", + "properties": { + "InstanceCount": { + "description": "The number of instances of the type specified by InstanceType.", + "type": "integer" + }, + "InstanceType": { + "description": "The instance type the model is deployed to.", + "type": "string" + } + }, + "required": [ + "InstanceType", + "InstanceCount" + ], + "type": "object" + }, + "ShadowModeConfig": { + "additionalProperties": false, + "description": "The configuration of ShadowMode inference experiment type. Use this field to specify a production variant which takes all the inference requests, and a shadow variant to which Amazon SageMaker replicates a percentage of the inference requests. For the shadow variant also specify the percentage of requests that Amazon SageMaker replicates.", + "properties": { + "ShadowModelVariants": { + "description": "List of shadow variant configurations.", + "items": { + "$ref": "#/definitions/ShadowModelVariantConfig" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "SourceModelVariantName": { + "description": "The name of the production variant, which takes all the inference requests.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([\\-a-zA-Z0-9]*[a-zA-Z0-9])?", + "type": "string" + } + }, + "required": [ + "SourceModelVariantName", + "ShadowModelVariants" + ], + "type": "object" + }, + "ShadowModelVariantConfig": { + "additionalProperties": false, + "description": "The name and sampling percentage of a shadow variant.", + "properties": { + "SamplingPercentage": { + "description": "The percentage of inference requests that Amazon SageMaker replicates from the production variant to the shadow variant.", + "maximum": 100, + "type": "integer" + }, + "ShadowModelVariantName": { + "description": "The name of the shadow variant.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([\\-a-zA-Z0-9]*[a-zA-Z0-9])?", + "type": "string" + } + }, + "required": [ + "ShadowModelVariantName", + "SamplingPercentage" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SageMaker::InferenceExperiment", + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateInferenceExperiment", + "sagemaker:DescribeInferenceExperiment", + "sagemaker:AddTags", + "sagemaker:ListTags", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteInferenceExperiment", + "sagemaker:DescribeInferenceExperiment", + "sagemaker:StopInferenceExperiment", + "sagemaker:ListTags" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListInferenceExperiments" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeInferenceExperiment", + "sagemaker:ListTags" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateInferenceExperiment", + "sagemaker:StartInferenceExperiment", + "sagemaker:StopInferenceExperiment", + "sagemaker:DescribeInferenceExperiment", + "sagemaker:AddTags", + "sagemaker:DeleteTags", + "sagemaker:ListTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the inference experiment.", + "maxLength": 256, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:inference-experiment/[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "CreationTime": { + "description": "The timestamp at which you created the inference experiment.", + "type": "string" + }, + "DataStorageConfig": { + "$ref": "#/definitions/DataStorageConfig" + }, + "Description": { + "description": "The description of the inference experiment.", + "maxLength": 1024, + "minLength": 1, + "pattern": ".*", + "type": "string" + }, + "DesiredState": { + "description": "The desired state of the experiment after starting or stopping operation.", + "enum": [ + "Running", + "Completed", + "Cancelled" + ], + "type": "string" + }, + "EndpointMetadata": { + "$ref": "#/definitions/EndpointMetadata" + }, + "EndpointName": { + "$ref": "#/definitions/EndpointName" + }, + "KmsKey": { + "description": "The AWS Key Management Service (AWS KMS) key that Amazon SageMaker uses to encrypt data on the storage volume attached to the ML compute instance that hosts the endpoint.", + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "LastModifiedTime": { + "description": "The timestamp at which you last modified the inference experiment.", + "type": "string" + }, + "ModelVariants": { + "description": "An array of ModelVariantConfig objects. Each ModelVariantConfig object in the array describes the infrastructure configuration for the corresponding variant.", + "items": { + "$ref": "#/definitions/ModelVariantConfig" + }, + "maxItems": 2, + "type": "array" + }, + "Name": { + "description": "The name for the inference experiment.", + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume to access model artifacts and container images, and manage Amazon SageMaker Inference endpoints for model deployment.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "Schedule": { + "$ref": "#/definitions/InferenceExperimentSchedule" + }, + "ShadowModeConfig": { + "$ref": "#/definitions/ShadowModeConfig" + }, + "Status": { + "description": "The status of the inference experiment.", + "enum": [ + "Creating", + "Created", + "Updating", + "Starting", + "Stopping", + "Running", + "Completed", + "Cancelled" + ], + "type": "string" + }, + "StatusReason": { + "description": "The error message or client-specified reason from the StopInferenceExperiment API, that explains the status of the inference experiment.", + "maxLength": 1024, + "minLength": 1, + "pattern": ".*", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array" + }, + "Type": { + "description": "The type of the inference experiment that you want to run.", + "enum": [ + "ShadowMode" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreationTime", + "/properties/LastModifiedTime", + "/properties/EndpointMetadata", + "/properties/Status" + ], + "required": [ + "Name", + "Type", + "RoleArn", + "EndpointName", + "ModelVariants" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SageMaker::InferenceExperiment" +} diff --git a/src/schema/aws-sagemaker-mlflowtrackingserver.json b/src/schema/aws-sagemaker-mlflowtrackingserver.json index 32af60d5..caaad79e 100644 --- a/src/schema/aws-sagemaker-mlflowtrackingserver.json +++ b/src/schema/aws-sagemaker-mlflowtrackingserver.json @@ -1,165 +1,165 @@ -{ - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/MlflowVersion", - "/properties/RoleArn" - ], - "createOnlyProperties": [ - "/properties/TrackingServerName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SageMaker::MlflowTrackingServer", - "handlers": { - "create": { - "permissions": [ - "sagemaker:CreateMlflowTrackingServer", - "sagemaker:DescribeMlflowTrackingServer", - "sagemaker:AddTags", - "sagemaker:ListTags", - "iam:PassRole" - ], - "timeoutInMinutes": 65 - }, - "delete": { - "permissions": [ - "sagemaker:DeleteMlflowTrackingServer", - "sagemaker:DescribeMlflowTrackingServer" - ], - "timeoutInMinutes": 65 - }, - "list": { - "permissions": [ - "sagemaker:ListMlflowTrackingServers" - ] - }, - "read": { - "permissions": [ - "sagemaker:DescribeMlflowTrackingServer", - "sagemaker:ListTags" - ] - }, - "update": { - "permissions": [ - "sagemaker:UpdateMlflowTrackingServer", - "sagemaker:DescribeMlflowTrackingServer", - "sagemaker:ListTags", - "sagemaker:AddTags", - "sagemaker:DeleteTags", - "iam:PassRole" - ], - "timeoutInMinutes": 65 - } - }, - "primaryIdentifier": [ - "/properties/TrackingServerName" - ], - "properties": { - "ArtifactStoreUri": { - "description": "The Amazon S3 URI for MLFlow Tracking Server artifacts.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^s3:\\/\\/([^\\/]+)\\/?(.*)$", - "type": "string" - }, - "AutomaticModelRegistration": { - "description": "A flag to enable Automatic SageMaker Model Registration.", - "type": "boolean" - }, - "MlflowVersion": { - "description": "The MLFlow Version used on the MLFlow Tracking Server.", - "maxLength": 32, - "minLength": 1, - "pattern": "^\\d+(\\.\\d+)+$", - "type": "string" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) of an IAM role that enables Amazon SageMaker to perform tasks on behalf of the customer.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role\\/?[a-zA-Z_0-9+=,.@\\-_\\/]+$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - }, - "TrackingServerArn": { - "description": "The Amazon Resource Name (ARN) of the MLFlow Tracking Server.", - "maxLength": 2048, - "pattern": "^arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:mlflow-tracking-server/.*$", - "type": "string" - }, - "TrackingServerName": { - "description": "The name of the MLFlow Tracking Server.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,255}$", - "type": "string" - }, - "TrackingServerSize": { - "description": "The size of the MLFlow Tracking Server.", - "enum": [ - "Small", - "Medium", - "Large" - ], - "type": "string" - }, - "WeeklyMaintenanceWindowStart": { - "description": "The start of the time window for maintenance of the MLFlow Tracking Server in UTC time.", - "maxLength": 9, - "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun):([01]\\d|2[0-3]):([0-5]\\d)$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/TrackingServerArn" - ], - "required": [ - "TrackingServerName", - "ArtifactStoreUri", - "RoleArn" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "sagemaker:AddTags", - "sagemaker:ListTags", - "sagemaker:DeleteTags" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SageMaker::MlflowTrackingServer" -} +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/MlflowVersion", + "/properties/RoleArn" + ], + "createOnlyProperties": [ + "/properties/TrackingServerName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SageMaker::MlflowTrackingServer", + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateMlflowTrackingServer", + "sagemaker:DescribeMlflowTrackingServer", + "sagemaker:AddTags", + "sagemaker:ListTags", + "iam:PassRole" + ], + "timeoutInMinutes": 95 + }, + "delete": { + "permissions": [ + "sagemaker:DeleteMlflowTrackingServer", + "sagemaker:DescribeMlflowTrackingServer" + ], + "timeoutInMinutes": 95 + }, + "list": { + "permissions": [ + "sagemaker:ListMlflowTrackingServers" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeMlflowTrackingServer", + "sagemaker:ListTags" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateMlflowTrackingServer", + "sagemaker:DescribeMlflowTrackingServer", + "sagemaker:ListTags", + "sagemaker:AddTags", + "sagemaker:DeleteTags", + "iam:PassRole" + ], + "timeoutInMinutes": 65 + } + }, + "primaryIdentifier": [ + "/properties/TrackingServerName" + ], + "properties": { + "ArtifactStoreUri": { + "description": "The Amazon S3 URI for MLFlow Tracking Server artifacts.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^s3:\\/\\/([^\\/]+)\\/?(.*)$", + "type": "string" + }, + "AutomaticModelRegistration": { + "description": "A flag to enable Automatic SageMaker Model Registration.", + "type": "boolean" + }, + "MlflowVersion": { + "description": "The MLFlow Version used on the MLFlow Tracking Server.", + "maxLength": 32, + "minLength": 1, + "pattern": "^\\d+(\\.\\d+)+$", + "type": "string" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of an IAM role that enables Amazon SageMaker to perform tasks on behalf of the customer.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role\\/?[a-zA-Z_0-9+=,.@\\-_\\/]+$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + "TrackingServerArn": { + "description": "The Amazon Resource Name (ARN) of the MLFlow Tracking Server.", + "maxLength": 2048, + "pattern": "^arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:mlflow-tracking-server/.*$", + "type": "string" + }, + "TrackingServerName": { + "description": "The name of the MLFlow Tracking Server.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,255}$", + "type": "string" + }, + "TrackingServerSize": { + "description": "The size of the MLFlow Tracking Server.", + "enum": [ + "Small", + "Medium", + "Large" + ], + "type": "string" + }, + "WeeklyMaintenanceWindowStart": { + "description": "The start of the time window for maintenance of the MLFlow Tracking Server in UTC time.", + "maxLength": 9, + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun):([01]\\d|2[0-3]):([0-5]\\d)$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TrackingServerArn" + ], + "required": [ + "TrackingServerName", + "ArtifactStoreUri", + "RoleArn" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "sagemaker:AddTags", + "sagemaker:ListTags", + "sagemaker:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SageMaker::MlflowTrackingServer" +} diff --git a/src/schema/aws-sagemaker-model.json b/src/schema/aws-sagemaker-model.json index 00734a1f..675ec9da 100644 --- a/src/schema/aws-sagemaker-model.json +++ b/src/schema/aws-sagemaker-model.json @@ -1,245 +1,245 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ExecutionRoleArn", - "/properties/EnableNetworkIsolation", - "/properties/InferenceExecutionConfig", - "/properties/PrimaryContainer", - "/properties/ModelName", - "/properties/VpcConfig", - "/properties/Containers" - ], - "definitions": { - "ContainerDefinition": { - "additionalProperties": false, - "properties": { - "ContainerHostname": { - "type": "string" - }, - "Environment": { - "type": "object" - }, - "Image": { - "type": "string" - }, - "ImageConfig": { - "$ref": "#/definitions/ImageConfig" - }, - "InferenceSpecificationName": { - "type": "string" - }, - "Mode": { - "type": "string" - }, - "ModelDataSource": { - "$ref": "#/definitions/ModelDataSource" - }, - "ModelDataUrl": { - "type": "string" - }, - "ModelPackageName": { - "type": "string" - }, - "MultiModelConfig": { - "$ref": "#/definitions/MultiModelConfig" - } - }, - "type": "object" - }, - "HubAccessConfig": { - "additionalProperties": false, - "properties": { - "HubContentArn": { - "type": "string" - } - }, - "required": [ - "HubContentArn" - ], - "type": "object" - }, - "ImageConfig": { - "additionalProperties": false, - "properties": { - "RepositoryAccessMode": { - "type": "string" - }, - "RepositoryAuthConfig": { - "$ref": "#/definitions/RepositoryAuthConfig" - } - }, - "required": [ - "RepositoryAccessMode" - ], - "type": "object" - }, - "InferenceExecutionConfig": { - "additionalProperties": false, - "properties": { - "Mode": { - "type": "string" - } - }, - "required": [ - "Mode" - ], - "type": "object" - }, - "ModelAccessConfig": { - "additionalProperties": false, - "properties": { - "AcceptEula": { - "type": "boolean" - } - }, - "required": [ - "AcceptEula" - ], - "type": "object" - }, - "ModelDataSource": { - "additionalProperties": false, - "properties": { - "S3DataSource": { - "$ref": "#/definitions/S3DataSource" - } - }, - "required": [ - "S3DataSource" - ], - "type": "object" - }, - "MultiModelConfig": { - "additionalProperties": false, - "properties": { - "ModelCacheSetting": { - "type": "string" - } - }, - "type": "object" - }, - "RepositoryAuthConfig": { - "additionalProperties": false, - "properties": { - "RepositoryCredentialsProviderArn": { - "type": "string" - } - }, - "required": [ - "RepositoryCredentialsProviderArn" - ], - "type": "object" - }, - "S3DataSource": { - "additionalProperties": false, - "properties": { - "CompressionType": { - "type": "string" - }, - "HubAccessConfig": { - "$ref": "#/definitions/HubAccessConfig" - }, - "ModelAccessConfig": { - "$ref": "#/definitions/ModelAccessConfig" - }, - "S3DataType": { - "type": "string" - }, - "S3Uri": { - "type": "string" - } - }, - "required": [ - "S3Uri", - "S3DataType", - "CompressionType" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "VpcConfig": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Subnets": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Subnets", - "SecurityGroupIds" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SageMaker::Model", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Containers": { - "items": { - "$ref": "#/definitions/ContainerDefinition" - }, - "type": "array", - "uniqueItems": false - }, - "EnableNetworkIsolation": { - "type": "boolean" - }, - "ExecutionRoleArn": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InferenceExecutionConfig": { - "$ref": "#/definitions/InferenceExecutionConfig" - }, - "ModelName": { - "type": "string" - }, - "PrimaryContainer": { - "$ref": "#/definitions/ContainerDefinition" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcConfig": { - "$ref": "#/definitions/VpcConfig" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "typeName": "AWS::SageMaker::Model" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ExecutionRoleArn", + "/properties/EnableNetworkIsolation", + "/properties/InferenceExecutionConfig", + "/properties/PrimaryContainer", + "/properties/ModelName", + "/properties/VpcConfig", + "/properties/Containers" + ], + "definitions": { + "ContainerDefinition": { + "additionalProperties": false, + "properties": { + "ContainerHostname": { + "type": "string" + }, + "Environment": { + "type": "object" + }, + "Image": { + "type": "string" + }, + "ImageConfig": { + "$ref": "#/definitions/ImageConfig" + }, + "InferenceSpecificationName": { + "type": "string" + }, + "Mode": { + "type": "string" + }, + "ModelDataSource": { + "$ref": "#/definitions/ModelDataSource" + }, + "ModelDataUrl": { + "type": "string" + }, + "ModelPackageName": { + "type": "string" + }, + "MultiModelConfig": { + "$ref": "#/definitions/MultiModelConfig" + } + }, + "type": "object" + }, + "HubAccessConfig": { + "additionalProperties": false, + "properties": { + "HubContentArn": { + "type": "string" + } + }, + "required": [ + "HubContentArn" + ], + "type": "object" + }, + "ImageConfig": { + "additionalProperties": false, + "properties": { + "RepositoryAccessMode": { + "type": "string" + }, + "RepositoryAuthConfig": { + "$ref": "#/definitions/RepositoryAuthConfig" + } + }, + "required": [ + "RepositoryAccessMode" + ], + "type": "object" + }, + "InferenceExecutionConfig": { + "additionalProperties": false, + "properties": { + "Mode": { + "type": "string" + } + }, + "required": [ + "Mode" + ], + "type": "object" + }, + "ModelAccessConfig": { + "additionalProperties": false, + "properties": { + "AcceptEula": { + "type": "boolean" + } + }, + "required": [ + "AcceptEula" + ], + "type": "object" + }, + "ModelDataSource": { + "additionalProperties": false, + "properties": { + "S3DataSource": { + "$ref": "#/definitions/S3DataSource" + } + }, + "required": [ + "S3DataSource" + ], + "type": "object" + }, + "MultiModelConfig": { + "additionalProperties": false, + "properties": { + "ModelCacheSetting": { + "type": "string" + } + }, + "type": "object" + }, + "RepositoryAuthConfig": { + "additionalProperties": false, + "properties": { + "RepositoryCredentialsProviderArn": { + "type": "string" + } + }, + "required": [ + "RepositoryCredentialsProviderArn" + ], + "type": "object" + }, + "S3DataSource": { + "additionalProperties": false, + "properties": { + "CompressionType": { + "type": "string" + }, + "HubAccessConfig": { + "$ref": "#/definitions/HubAccessConfig" + }, + "ModelAccessConfig": { + "$ref": "#/definitions/ModelAccessConfig" + }, + "S3DataType": { + "type": "string" + }, + "S3Uri": { + "type": "string" + } + }, + "required": [ + "S3Uri", + "S3DataType", + "CompressionType" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VpcConfig": { + "additionalProperties": false, + "properties": { + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Subnets": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Subnets", + "SecurityGroupIds" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SageMaker::Model", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Containers": { + "items": { + "$ref": "#/definitions/ContainerDefinition" + }, + "type": "array", + "uniqueItems": false + }, + "EnableNetworkIsolation": { + "type": "boolean" + }, + "ExecutionRoleArn": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "InferenceExecutionConfig": { + "$ref": "#/definitions/InferenceExecutionConfig" + }, + "ModelName": { + "type": "string" + }, + "PrimaryContainer": { + "$ref": "#/definitions/ContainerDefinition" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcConfig": { + "$ref": "#/definitions/VpcConfig" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::SageMaker::Model" +} diff --git a/src/schema/aws-sagemaker-modelbiasjobdefinition.json b/src/schema/aws-sagemaker-modelbiasjobdefinition.json index 36d5bfff..752712cb 100644 --- a/src/schema/aws-sagemaker-modelbiasjobdefinition.json +++ b/src/schema/aws-sagemaker-modelbiasjobdefinition.json @@ -1,627 +1,637 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/JobDefinitionName", - "/properties/ModelBiasAppSpecification", - "/properties/ModelBiasBaselineConfig", - "/properties/ModelBiasJobInput", - "/properties/ModelBiasJobOutputConfig", - "/properties/JobResources", - "/properties/NetworkConfig", - "/properties/RoleArn", - "/properties/StoppingCondition", - "/properties/Tags", - "/properties/EndpointName" - ], - "definitions": { - "BatchTransformInput": { - "additionalProperties": false, - "description": "The batch transform input for a monitoring job.", - "properties": { - "DataCapturedDestinationS3Uri": { - "description": "A URI that identifies the Amazon S3 storage location where Batch Transform Job captures data.", - "maxLength": 512, - "pattern": "^(https|s3)://([^/]+)/?(.*)$", - "type": "string" - }, - "DatasetFormat": { - "$ref": "#/definitions/DatasetFormat" - }, - "EndTimeOffset": { - "$ref": "#/definitions/MonitoringTimeOffsetString", - "description": "Monitoring end time offset, e.g. PT0H" - }, - "FeaturesAttribute": { - "description": "JSONpath to locate features in JSONlines dataset", - "maxLength": 256, - "type": "string" - }, - "InferenceAttribute": { - "description": "Index or JSONpath to locate predicted label(s)", - "maxLength": 256, - "type": "string" - }, - "LocalPath": { - "description": "Path to the filesystem where the endpoint data is available to the container.", - "maxLength": 256, - "pattern": ".*", - "type": "string" - }, - "ProbabilityAttribute": { - "description": "Index or JSONpath to locate probabilities", - "maxLength": 256, - "type": "string" - }, - "ProbabilityThresholdAttribute": { - "format": "double", - "type": "number" - }, - "S3DataDistributionType": { - "description": "Whether input data distributed in Amazon S3 is fully replicated or sharded by an S3 key. Defauts to FullyReplicated", - "enum": [ - "FullyReplicated", - "ShardedByS3Key" - ], - "type": "string" - }, - "S3InputMode": { - "description": "Whether the Pipe or File is used as the input mode for transfering data for the monitoring job. Pipe mode is recommended for large datasets. File mode is useful for small files that fit in memory. Defaults to File.", - "enum": [ - "Pipe", - "File" - ], - "type": "string" - }, - "StartTimeOffset": { - "$ref": "#/definitions/MonitoringTimeOffsetString", - "description": "Monitoring start time offset, e.g. -PT1H" - } - }, - "required": [ - "DataCapturedDestinationS3Uri", - "DatasetFormat", - "LocalPath" - ], - "type": "object" - }, - "ClusterConfig": { - "additionalProperties": false, - "description": "Configuration for the cluster used to run model monitoring jobs.", - "properties": { - "InstanceCount": { - "description": "The number of ML compute instances to use in the model monitoring job. For distributed processing jobs, specify a value greater than 1. The default value is 1.", - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "InstanceType": { - "description": "The ML compute instance type for the processing job.", - "type": "string" - }, - "VolumeKmsKeyId": { - "description": "The AWS Key Management Service (AWS KMS) key that Amazon SageMaker uses to encrypt data on the storage volume attached to the ML compute instance(s) that run the model monitoring job.", - "maximum": 2048, - "minimum": 1, - "type": "string" - }, - "VolumeSizeInGB": { - "description": "The size of the ML storage volume, in gigabytes, that you want to provision. You must specify sufficient ML storage for your scenario.", - "maximum": 16384, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "InstanceCount", - "InstanceType", - "VolumeSizeInGB" - ], - "type": "object" - }, - "ConstraintsResource": { - "additionalProperties": false, - "description": "The baseline constraints resource for a monitoring job.", - "properties": { - "S3Uri": { - "$ref": "#/definitions/S3Uri", - "description": "The Amazon S3 URI for baseline constraint file in Amazon S3 that the current monitoring job should validated against." - } - }, - "type": "object" - }, - "Csv": { - "description": "The CSV format", - "properties": { - "Header": { - "description": "A boolean flag indicating if given CSV has header", - "type": "boolean" - } - }, - "type": "object" - }, - "DatasetFormat": { - "description": "The dataset format of the data to monitor", - "properties": { - "Csv": { - "$ref": "#/definitions/Csv" - }, - "Json": { - "$ref": "#/definitions/Json" - }, - "Parquet": { - "$ref": "#/definitions/Parquet" - } - }, - "type": "object" - }, - "EndpointInput": { - "additionalProperties": false, - "description": "The endpoint for a monitoring job.", - "properties": { - "EndTimeOffset": { - "$ref": "#/definitions/MonitoringTimeOffsetString", - "description": "Monitoring end time offset, e.g. PT0H" - }, - "EndpointName": { - "$ref": "#/definitions/EndpointName" - }, - "FeaturesAttribute": { - "description": "JSONpath to locate features in JSONlines dataset", - "maxLength": 256, - "type": "string" - }, - "InferenceAttribute": { - "description": "Index or JSONpath to locate predicted label(s)", - "maxLength": 256, - "type": "string" - }, - "LocalPath": { - "description": "Path to the filesystem where the endpoint data is available to the container.", - "maxLength": 256, - "pattern": ".*", - "type": "string" - }, - "ProbabilityAttribute": { - "description": "Index or JSONpath to locate probabilities", - "maxLength": 256, - "type": "string" - }, - "ProbabilityThresholdAttribute": { - "format": "double", - "type": "number" - }, - "S3DataDistributionType": { - "description": "Whether input data distributed in Amazon S3 is fully replicated or sharded by an S3 key. Defauts to FullyReplicated", - "enum": [ - "FullyReplicated", - "ShardedByS3Key" - ], - "type": "string" - }, - "S3InputMode": { - "description": "Whether the Pipe or File is used as the input mode for transfering data for the monitoring job. Pipe mode is recommended for large datasets. File mode is useful for small files that fit in memory. Defaults to File.", - "enum": [ - "Pipe", - "File" - ], - "type": "string" - }, - "StartTimeOffset": { - "$ref": "#/definitions/MonitoringTimeOffsetString", - "description": "Monitoring start time offset, e.g. -PT1H" - } - }, - "required": [ - "EndpointName", - "LocalPath" - ], - "type": "object" - }, - "EndpointName": { - "description": "The name of the endpoint used to run the monitoring job.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*", - "type": "string" - }, - "JobDefinitionName": { - "description": "The name of the job definition.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", - "type": "string" - }, - "Json": { - "description": "The Json format", - "properties": { - "Line": { - "description": "A boolean flag indicating if it is JSON line format", - "type": "boolean" - } - }, - "type": "object" - }, - "ModelBiasAppSpecification": { - "additionalProperties": false, - "description": "Container image configuration object for the monitoring job.", - "properties": { - "ConfigUri": { - "$ref": "#/definitions/S3Uri", - "description": "The S3 URI to an analysis configuration file" - }, - "Environment": { - "additionalProperties": false, - "description": "Sets the environment variables in the Docker container", - "patternProperties": { - "[\\S\\s]*": { - "maxLength": 256, - "type": "string" - }, - "[a-zA-Z_][a-zA-Z0-9_]*": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "ImageUri": { - "description": "The container image to be run by the monitoring job.", - "maxLength": 255, - "pattern": ".*", - "type": "string" - } - }, - "required": [ - "ImageUri", - "ConfigUri" - ], - "type": "object" - }, - "ModelBiasBaselineConfig": { - "additionalProperties": false, - "description": "Baseline configuration used to validate that the data conforms to the specified constraints and statistics.", - "properties": { - "BaseliningJobName": { - "$ref": "#/definitions/ProcessingJobName" - }, - "ConstraintsResource": { - "$ref": "#/definitions/ConstraintsResource" - } - }, - "type": "object" - }, - "ModelBiasJobInput": { - "additionalProperties": false, - "description": "The inputs for a monitoring job.", - "properties": { - "BatchTransformInput": { - "$ref": "#/definitions/BatchTransformInput" - }, - "EndpointInput": { - "$ref": "#/definitions/EndpointInput" - }, - "GroundTruthS3Input": { - "$ref": "#/definitions/MonitoringGroundTruthS3Input" - } - }, - "required": [ - "GroundTruthS3Input" - ], - "type": "object" - }, - "MonitoringGroundTruthS3Input": { - "additionalProperties": false, - "description": "Ground truth input provided in S3 ", - "properties": { - "S3Uri": { - "description": "A URI that identifies the Amazon S3 storage location where Amazon SageMaker saves the results of a monitoring job.", - "maxLength": 512, - "pattern": "^(https|s3)://([^/]+)/?(.*)$", - "type": "string" - } - }, - "required": [ - "S3Uri" - ], - "type": "object" - }, - "MonitoringOutput": { - "additionalProperties": false, - "description": "The output object for a monitoring job.", - "properties": { - "S3Output": { - "$ref": "#/definitions/S3Output" - } - }, - "required": [ - "S3Output" - ], - "type": "object" - }, - "MonitoringOutputConfig": { - "additionalProperties": false, - "description": "The output configuration for monitoring jobs.", - "properties": { - "KmsKeyId": { - "description": "The AWS Key Management Service (AWS KMS) key that Amazon SageMaker uses to encrypt the model artifacts at rest using Amazon S3 server-side encryption.", - "maxLength": 2048, - "pattern": ".*", - "type": "string" - }, - "MonitoringOutputs": { - "description": "Monitoring outputs for monitoring jobs. This is where the output of the periodic monitoring jobs is uploaded.", - "items": { - "$ref": "#/definitions/MonitoringOutput" - }, - "maxLength": 1, - "minLength": 1, - "type": "array" - } - }, - "required": [ - "MonitoringOutputs" - ], - "type": "object" - }, - "MonitoringResources": { - "additionalProperties": false, - "description": "Identifies the resources to deploy for a monitoring job.", - "properties": { - "ClusterConfig": { - "$ref": "#/definitions/ClusterConfig" - } - }, - "required": [ - "ClusterConfig" - ], - "type": "object" - }, - "MonitoringTimeOffsetString": { - "description": "The time offsets in ISO duration format", - "maxLength": 15, - "minLength": 1, - "pattern": "^.?P.*", - "type": "string" - }, - "NetworkConfig": { - "additionalProperties": false, - "description": "Networking options for a job, such as network traffic encryption between containers, whether to allow inbound and outbound network calls to and from containers, and the VPC subnets and security groups to use for VPC-enabled jobs.", - "properties": { - "EnableInterContainerTrafficEncryption": { - "description": "Whether to encrypt all communications between distributed processing jobs. Choose True to encrypt communications. Encryption provides greater security for distributed processing jobs, but the processing might take longer.", - "type": "boolean" - }, - "EnableNetworkIsolation": { - "description": "Whether to allow inbound and outbound network calls to and from the containers used for the processing job.", - "type": "boolean" - }, - "VpcConfig": { - "$ref": "#/definitions/VpcConfig" - } - }, - "type": "object" - }, - "Parquet": { - "description": "A flag indicate if the dataset format is Parquet", - "type": "boolean" - }, - "ProcessingJobName": { - "description": "The name of a processing job", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", - "type": "string" - }, - "S3Output": { - "additionalProperties": false, - "description": "Information about where and how to store the results of a monitoring job.", - "properties": { - "LocalPath": { - "description": "The local path to the Amazon S3 storage location where Amazon SageMaker saves the results of a monitoring job. LocalPath is an absolute path for the output data.", - "maxLength": 256, - "pattern": ".*", - "type": "string" - }, - "S3UploadMode": { - "description": "Whether to upload the results of the monitoring job continuously or after the job completes.", - "enum": [ - "Continuous", - "EndOfJob" - ], - "type": "string" - }, - "S3Uri": { - "description": "A URI that identifies the Amazon S3 storage location where Amazon SageMaker saves the results of a monitoring job.", - "maxLength": 512, - "pattern": "^(https|s3)://([^/]+)/?(.*)$", - "type": "string" - } - }, - "required": [ - "LocalPath", - "S3Uri" - ], - "type": "object" - }, - "S3Uri": { - "description": "The Amazon S3 URI.", - "maxLength": 1024, - "pattern": "^(https|s3)://([^/]+)/?(.*)$", - "type": "string" - }, - "StoppingCondition": { - "additionalProperties": false, - "description": "Specifies a time limit for how long the monitoring job is allowed to run.", - "properties": { - "MaxRuntimeInSeconds": { - "description": "The maximum runtime allowed in seconds.", - "maximum": 86400, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "MaxRuntimeInSeconds" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "VpcConfig": { - "additionalProperties": false, - "description": "Specifies a VPC that your training jobs and hosted models have access to. Control access to and from your training and model containers by configuring the VPC.", - "properties": { - "SecurityGroupIds": { - "description": "The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the Subnets field.", - "items": { - "maxLength": 32, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "Subnets": { - "description": "The ID of the subnets in the VPC to which you want to connect to your monitoring jobs.", - "items": { - "maxLength": 32, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 16, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "SecurityGroupIds", - "Subnets" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SageMaker::ModelBiasJobDefinition", - "handlers": { - "create": { - "permissions": [ - "sagemaker:CreateModelBiasJobDefinition", - "sagemaker:DescribeModelBiasJobDefinition", - "iam:PassRole", - "sagemaker:AddTags" - ] - }, - "delete": { - "permissions": [ - "sagemaker:DeleteModelBiasJobDefinition" - ] - }, - "list": { - "permissions": [ - "sagemaker:ListModelBiasJobDefinitions", - "sagemaker:ListTags" - ] - }, - "read": { - "permissions": [ - "sagemaker:DescribeModelBiasJobDefinition" - ] - } - }, - "primaryIdentifier": [ - "/properties/JobDefinitionArn" - ], - "properties": { - "CreationTime": { - "description": "The time at which the job definition was created.", - "type": "string" - }, - "EndpointName": { - "$ref": "#/definitions/EndpointName" - }, - "JobDefinitionArn": { - "description": "The Amazon Resource Name (ARN) of job definition.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "JobDefinitionName": { - "$ref": "#/definitions/JobDefinitionName" - }, - "JobResources": { - "$ref": "#/definitions/MonitoringResources" - }, - "ModelBiasAppSpecification": { - "$ref": "#/definitions/ModelBiasAppSpecification" - }, - "ModelBiasBaselineConfig": { - "$ref": "#/definitions/ModelBiasBaselineConfig" - }, - "ModelBiasJobInput": { - "$ref": "#/definitions/ModelBiasJobInput" - }, - "ModelBiasJobOutputConfig": { - "$ref": "#/definitions/MonitoringOutputConfig" - }, - "NetworkConfig": { - "$ref": "#/definitions/NetworkConfig" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume to perform tasks on your behalf.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "StoppingCondition": { - "$ref": "#/definitions/StoppingCondition" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/CreationTime", - "/properties/JobDefinitionArn" - ], - "required": [ - "ModelBiasAppSpecification", - "ModelBiasJobInput", - "ModelBiasJobOutputConfig", - "JobResources", - "RoleArn" - ], - "typeName": "AWS::SageMaker::ModelBiasJobDefinition", - "writeOnlyProperties": [ - "/properties/EndpointName", - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/JobDefinitionName", + "/properties/ModelBiasAppSpecification", + "/properties/ModelBiasBaselineConfig", + "/properties/ModelBiasJobInput", + "/properties/ModelBiasJobOutputConfig", + "/properties/JobResources", + "/properties/NetworkConfig", + "/properties/RoleArn", + "/properties/StoppingCondition", + "/properties/Tags", + "/properties/EndpointName" + ], + "definitions": { + "BatchTransformInput": { + "additionalProperties": false, + "description": "The batch transform input for a monitoring job.", + "properties": { + "DataCapturedDestinationS3Uri": { + "description": "A URI that identifies the Amazon S3 storage location where Batch Transform Job captures data.", + "maxLength": 512, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + }, + "DatasetFormat": { + "$ref": "#/definitions/DatasetFormat" + }, + "EndTimeOffset": { + "$ref": "#/definitions/MonitoringTimeOffsetString", + "description": "Monitoring end time offset, e.g. PT0H" + }, + "FeaturesAttribute": { + "description": "JSONpath to locate features in JSONlines dataset", + "maxLength": 256, + "type": "string" + }, + "InferenceAttribute": { + "description": "Index or JSONpath to locate predicted label(s)", + "maxLength": 256, + "type": "string" + }, + "LocalPath": { + "description": "Path to the filesystem where the endpoint data is available to the container.", + "maxLength": 256, + "pattern": ".*", + "type": "string" + }, + "ProbabilityAttribute": { + "description": "Index or JSONpath to locate probabilities", + "maxLength": 256, + "type": "string" + }, + "ProbabilityThresholdAttribute": { + "format": "double", + "type": "number" + }, + "S3DataDistributionType": { + "description": "Whether input data distributed in Amazon S3 is fully replicated or sharded by an S3 key. Defauts to FullyReplicated", + "enum": [ + "FullyReplicated", + "ShardedByS3Key" + ], + "type": "string" + }, + "S3InputMode": { + "description": "Whether the Pipe or File is used as the input mode for transfering data for the monitoring job. Pipe mode is recommended for large datasets. File mode is useful for small files that fit in memory. Defaults to File.", + "enum": [ + "Pipe", + "File" + ], + "type": "string" + }, + "StartTimeOffset": { + "$ref": "#/definitions/MonitoringTimeOffsetString", + "description": "Monitoring start time offset, e.g. -PT1H" + } + }, + "required": [ + "DataCapturedDestinationS3Uri", + "DatasetFormat", + "LocalPath" + ], + "type": "object" + }, + "ClusterConfig": { + "additionalProperties": false, + "description": "Configuration for the cluster used to run model monitoring jobs.", + "properties": { + "InstanceCount": { + "description": "The number of ML compute instances to use in the model monitoring job. For distributed processing jobs, specify a value greater than 1. The default value is 1.", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "InstanceType": { + "description": "The ML compute instance type for the processing job.", + "type": "string" + }, + "VolumeKmsKeyId": { + "description": "The AWS Key Management Service (AWS KMS) key that Amazon SageMaker uses to encrypt data on the storage volume attached to the ML compute instance(s) that run the model monitoring job.", + "maximum": 2048, + "minimum": 1, + "type": "string" + }, + "VolumeSizeInGB": { + "description": "The size of the ML storage volume, in gigabytes, that you want to provision. You must specify sufficient ML storage for your scenario.", + "maximum": 16384, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "InstanceCount", + "InstanceType", + "VolumeSizeInGB" + ], + "type": "object" + }, + "ConstraintsResource": { + "additionalProperties": false, + "description": "The baseline constraints resource for a monitoring job.", + "properties": { + "S3Uri": { + "$ref": "#/definitions/S3Uri", + "description": "The Amazon S3 URI for baseline constraint file in Amazon S3 that the current monitoring job should validated against." + } + }, + "type": "object" + }, + "Csv": { + "description": "The CSV format", + "properties": { + "Header": { + "description": "A boolean flag indicating if given CSV has header", + "type": "boolean" + } + }, + "type": "object" + }, + "DatasetFormat": { + "description": "The dataset format of the data to monitor", + "properties": { + "Csv": { + "$ref": "#/definitions/Csv" + }, + "Json": { + "$ref": "#/definitions/Json" + }, + "Parquet": { + "$ref": "#/definitions/Parquet" + } + }, + "type": "object" + }, + "EndpointInput": { + "additionalProperties": false, + "description": "The endpoint for a monitoring job.", + "properties": { + "EndTimeOffset": { + "$ref": "#/definitions/MonitoringTimeOffsetString", + "description": "Monitoring end time offset, e.g. PT0H" + }, + "EndpointName": { + "$ref": "#/definitions/EndpointName" + }, + "FeaturesAttribute": { + "description": "JSONpath to locate features in JSONlines dataset", + "maxLength": 256, + "type": "string" + }, + "InferenceAttribute": { + "description": "Index or JSONpath to locate predicted label(s)", + "maxLength": 256, + "type": "string" + }, + "LocalPath": { + "description": "Path to the filesystem where the endpoint data is available to the container.", + "maxLength": 256, + "pattern": ".*", + "type": "string" + }, + "ProbabilityAttribute": { + "description": "Index or JSONpath to locate probabilities", + "maxLength": 256, + "type": "string" + }, + "ProbabilityThresholdAttribute": { + "format": "double", + "type": "number" + }, + "S3DataDistributionType": { + "description": "Whether input data distributed in Amazon S3 is fully replicated or sharded by an S3 key. Defauts to FullyReplicated", + "enum": [ + "FullyReplicated", + "ShardedByS3Key" + ], + "type": "string" + }, + "S3InputMode": { + "description": "Whether the Pipe or File is used as the input mode for transfering data for the monitoring job. Pipe mode is recommended for large datasets. File mode is useful for small files that fit in memory. Defaults to File.", + "enum": [ + "Pipe", + "File" + ], + "type": "string" + }, + "StartTimeOffset": { + "$ref": "#/definitions/MonitoringTimeOffsetString", + "description": "Monitoring start time offset, e.g. -PT1H" + } + }, + "required": [ + "EndpointName", + "LocalPath" + ], + "type": "object" + }, + "EndpointName": { + "description": "The name of the endpoint used to run the monitoring job.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*", + "type": "string" + }, + "JobDefinitionName": { + "description": "The name of the job definition.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "type": "string" + }, + "Json": { + "description": "The Json format", + "properties": { + "Line": { + "description": "A boolean flag indicating if it is JSON line format", + "type": "boolean" + } + }, + "type": "object" + }, + "ModelBiasAppSpecification": { + "additionalProperties": false, + "description": "Container image configuration object for the monitoring job.", + "properties": { + "ConfigUri": { + "$ref": "#/definitions/S3Uri", + "description": "The S3 URI to an analysis configuration file" + }, + "Environment": { + "additionalProperties": false, + "description": "Sets the environment variables in the Docker container", + "patternProperties": { + "[\\S\\s]*": { + "maxLength": 256, + "type": "string" + }, + "[a-zA-Z_][a-zA-Z0-9_]*": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "ImageUri": { + "description": "The container image to be run by the monitoring job.", + "maxLength": 255, + "pattern": ".*", + "type": "string" + } + }, + "required": [ + "ImageUri", + "ConfigUri" + ], + "type": "object" + }, + "ModelBiasBaselineConfig": { + "additionalProperties": false, + "description": "Baseline configuration used to validate that the data conforms to the specified constraints and statistics.", + "properties": { + "BaseliningJobName": { + "$ref": "#/definitions/ProcessingJobName" + }, + "ConstraintsResource": { + "$ref": "#/definitions/ConstraintsResource" + } + }, + "type": "object" + }, + "ModelBiasJobInput": { + "additionalProperties": false, + "description": "The inputs for a monitoring job.", + "properties": { + "BatchTransformInput": { + "$ref": "#/definitions/BatchTransformInput" + }, + "EndpointInput": { + "$ref": "#/definitions/EndpointInput" + }, + "GroundTruthS3Input": { + "$ref": "#/definitions/MonitoringGroundTruthS3Input" + } + }, + "required": [ + "GroundTruthS3Input" + ], + "type": "object" + }, + "MonitoringGroundTruthS3Input": { + "additionalProperties": false, + "description": "Ground truth input provided in S3 ", + "properties": { + "S3Uri": { + "description": "A URI that identifies the Amazon S3 storage location where Amazon SageMaker saves the results of a monitoring job.", + "maxLength": 512, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "required": [ + "S3Uri" + ], + "type": "object" + }, + "MonitoringOutput": { + "additionalProperties": false, + "description": "The output object for a monitoring job.", + "properties": { + "S3Output": { + "$ref": "#/definitions/S3Output" + } + }, + "required": [ + "S3Output" + ], + "type": "object" + }, + "MonitoringOutputConfig": { + "additionalProperties": false, + "description": "The output configuration for monitoring jobs.", + "properties": { + "KmsKeyId": { + "description": "The AWS Key Management Service (AWS KMS) key that Amazon SageMaker uses to encrypt the model artifacts at rest using Amazon S3 server-side encryption.", + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "MonitoringOutputs": { + "description": "Monitoring outputs for monitoring jobs. This is where the output of the periodic monitoring jobs is uploaded.", + "items": { + "$ref": "#/definitions/MonitoringOutput" + }, + "maxLength": 1, + "minLength": 1, + "type": "array" + } + }, + "required": [ + "MonitoringOutputs" + ], + "type": "object" + }, + "MonitoringResources": { + "additionalProperties": false, + "description": "Identifies the resources to deploy for a monitoring job.", + "properties": { + "ClusterConfig": { + "$ref": "#/definitions/ClusterConfig" + } + }, + "required": [ + "ClusterConfig" + ], + "type": "object" + }, + "MonitoringTimeOffsetString": { + "description": "The time offsets in ISO duration format", + "maxLength": 15, + "minLength": 1, + "pattern": "^.?P.*", + "type": "string" + }, + "NetworkConfig": { + "additionalProperties": false, + "description": "Networking options for a job, such as network traffic encryption between containers, whether to allow inbound and outbound network calls to and from containers, and the VPC subnets and security groups to use for VPC-enabled jobs.", + "properties": { + "EnableInterContainerTrafficEncryption": { + "description": "Whether to encrypt all communications between distributed processing jobs. Choose True to encrypt communications. Encryption provides greater security for distributed processing jobs, but the processing might take longer.", + "type": "boolean" + }, + "EnableNetworkIsolation": { + "description": "Whether to allow inbound and outbound network calls to and from the containers used for the processing job.", + "type": "boolean" + }, + "VpcConfig": { + "$ref": "#/definitions/VpcConfig" + } + }, + "type": "object" + }, + "Parquet": { + "description": "A flag indicate if the dataset format is Parquet", + "type": "boolean" + }, + "ProcessingJobName": { + "description": "The name of a processing job", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "type": "string" + }, + "S3Output": { + "additionalProperties": false, + "description": "Information about where and how to store the results of a monitoring job.", + "properties": { + "LocalPath": { + "description": "The local path to the Amazon S3 storage location where Amazon SageMaker saves the results of a monitoring job. LocalPath is an absolute path for the output data.", + "maxLength": 256, + "pattern": ".*", + "type": "string" + }, + "S3UploadMode": { + "description": "Whether to upload the results of the monitoring job continuously or after the job completes.", + "enum": [ + "Continuous", + "EndOfJob" + ], + "type": "string" + }, + "S3Uri": { + "description": "A URI that identifies the Amazon S3 storage location where Amazon SageMaker saves the results of a monitoring job.", + "maxLength": 512, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "required": [ + "LocalPath", + "S3Uri" + ], + "type": "object" + }, + "S3Uri": { + "description": "The Amazon S3 URI.", + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + }, + "StoppingCondition": { + "additionalProperties": false, + "description": "Specifies a time limit for how long the monitoring job is allowed to run.", + "properties": { + "MaxRuntimeInSeconds": { + "description": "The maximum runtime allowed in seconds.", + "maximum": 86400, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "MaxRuntimeInSeconds" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VpcConfig": { + "additionalProperties": false, + "description": "Specifies a VPC that your training jobs and hosted models have access to. Control access to and from your training and model containers by configuring the VPC.", + "properties": { + "SecurityGroupIds": { + "description": "The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the Subnets field.", + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "Subnets": { + "description": "The ID of the subnets in the VPC to which you want to connect to your monitoring jobs.", + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "SecurityGroupIds", + "Subnets" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SageMaker::ModelBiasJobDefinition", + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateModelBiasJobDefinition", + "sagemaker:DescribeModelBiasJobDefinition", + "iam:PassRole", + "sagemaker:AddTags", + "sagemaker:ListTags" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteModelBiasJobDefinition" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListModelBiasJobDefinitions", + "sagemaker:ListTags" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeModelBiasJobDefinition", + "sagemaker:ListTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/JobDefinitionArn" + ], + "properties": { + "CreationTime": { + "description": "The time at which the job definition was created.", + "type": "string" + }, + "EndpointName": { + "$ref": "#/definitions/EndpointName" + }, + "JobDefinitionArn": { + "description": "The Amazon Resource Name (ARN) of job definition.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "JobDefinitionName": { + "$ref": "#/definitions/JobDefinitionName" + }, + "JobResources": { + "$ref": "#/definitions/MonitoringResources" + }, + "ModelBiasAppSpecification": { + "$ref": "#/definitions/ModelBiasAppSpecification" + }, + "ModelBiasBaselineConfig": { + "$ref": "#/definitions/ModelBiasBaselineConfig" + }, + "ModelBiasJobInput": { + "$ref": "#/definitions/ModelBiasJobInput" + }, + "ModelBiasJobOutputConfig": { + "$ref": "#/definitions/MonitoringOutputConfig" + }, + "NetworkConfig": { + "$ref": "#/definitions/NetworkConfig" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume to perform tasks on your behalf.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "StoppingCondition": { + "$ref": "#/definitions/StoppingCondition" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/JobDefinitionArn" + ], + "required": [ + "ModelBiasAppSpecification", + "ModelBiasJobInput", + "ModelBiasJobOutputConfig", + "JobResources", + "RoleArn" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "sagemaker:AddTags", + "sagemaker:ListTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::SageMaker::ModelBiasJobDefinition", + "writeOnlyProperties": [ + "/properties/EndpointName" + ] +} diff --git a/src/schema/aws-sagemaker-modelcard.json b/src/schema/aws-sagemaker-modelcard.json index 31bf1de2..3def590c 100644 --- a/src/schema/aws-sagemaker-modelcard.json +++ b/src/schema/aws-sagemaker-modelcard.json @@ -1,1030 +1,1035 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ModelCardName", - "/properties/SecurityConfig" - ], - "definitions": { - "AdditionalInformation": { - "additionalProperties": false, - "properties": { - "CaveatsAndRecommendations": { - "description": "Caveats and recommendations for people who might use this model in their applications.", - "maxLength": 2048, - "type": "string" - }, - "CustomDetails": { - "additionalProperties": false, - "description": "customer details.", - "patternProperties": { - "[a-zA-Z_][a-zA-Z0-9_]*": { - "maxLength": 1024, - "type": "string" - } - }, - "type": "object" - }, - "EthicalConsiderations": { - "description": "Any ethical considerations that the author wants to provide.", - "maxLength": 2048, - "type": "string" - } - }, - "type": "object" - }, - "AxisNameArray": { - "insertionOrder": true, - "items": { - "maxLength": 63, - "type": "string" - }, - "type": "array" - }, - "AxisNameString": { - "maxLength": 63, - "type": "string" - }, - "BarChartMetric": { - "additionalProperties": false, - "properties": { - "Name": { - "pattern": ".{1,255}", - "type": "string" - }, - "Notes": { - "maxLength": 1024, - "type": "string" - }, - "Type": { - "enum": [ - "bar_chart" - ], - "type": "string" - }, - "Value": { - "anyOf": [ - { - "insertionOrder": true, - "items": { - "type": "number" - }, - "minItems": 1, - "type": "array" - } - ] - }, - "XAxisName": { - "$ref": "#/definitions/AxisNameArray" - }, - "YAxisName": { - "$ref": "#/definitions/AxisNameString" - } - }, - "required": [ - "Name", - "Type", - "Value" - ], - "type": "object" - }, - "BusinessDetails": { - "additionalProperties": false, - "description": "Business details.", - "properties": { - "BusinessProblem": { - "description": "What business problem does the model solve?", - "maxLength": 2048, - "type": "string" - }, - "BusinessStakeholders": { - "description": "Business stakeholders.", - "maxLength": 2048, - "type": "string" - }, - "LineOfBusiness": { - "description": "Line of business.", - "maxLength": 2048, - "type": "string" - } - }, - "type": "object" - }, - "Container": { - "additionalProperties": false, - "properties": { - "Image": { - "description": "Inference environment path. The Amazon EC2 Container Registry (Amazon ECR) path where inference code is stored.", - "maxLength": 255, - "type": "string" - }, - "ModelDataUrl": { - "description": "The Amazon S3 path where the model artifacts, which result from model training, are stored.", - "maxLength": 1024, - "type": "string" - }, - "NearestModelName": { - "description": "The name of a pre-trained machine learning benchmarked by Amazon SageMaker Inference Recommender model that matches your model.", - "type": "string" - } - }, - "required": [ - "Image" - ], - "type": "object" - }, - "Content": { - "additionalProperties": false, - "description": "The content of the model card.", - "properties": { - "AdditionalInformation": { - "$ref": "#/definitions/AdditionalInformation" - }, - "BusinessDetails": { - "$ref": "#/definitions/BusinessDetails" - }, - "EvaluationDetails": { - "$ref": "#/definitions/EvaluationDetails" - }, - "IntendedUses": { - "$ref": "#/definitions/IntendedUses" - }, - "ModelOverview": { - "$ref": "#/definitions/ModelOverview" - }, - "ModelPackageDetails": { - "$ref": "#/definitions/ModelPackageDetails" - }, - "TrainingDetails": { - "$ref": "#/definitions/TrainingDetails" - } - }, - "type": "object" - }, - "EvaluationDetail": { - "additionalProperties": false, - "description": "item of evaluation details", - "properties": { - "Datasets": { - "insertionOrder": true, - "items": { - "maxLength": 1024, - "type": "string" - }, - "maxItems": 10, - "type": "array" - }, - "EvaluationJobArn": { - "maxLength": 256, - "type": "string" - }, - "EvaluationObservation": { - "maxLength": 2096, - "type": "string" - }, - "Metadata": { - "additionalProperties": false, - "description": "additional attributes associated with the evaluation results.", - "patternProperties": { - "[a-zA-Z_][a-zA-Z0-9_]*": { - "maxLength": 1024, - "type": "string" - } - }, - "type": "object" - }, - "MetricGroups": { - "default": [], - "insertionOrder": true, - "items": { - "$ref": "#/definitions/MetricGroup" - }, - "type": "array" - }, - "Name": { - "pattern": ".{1,63}", - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "EvaluationDetails": { - "default": [], - "insertionOrder": true, - "items": { - "$ref": "#/definitions/EvaluationDetail" - }, - "type": "array" - }, - "InferenceSpecification": { - "additionalProperties": false, - "properties": { - "Containers": { - "description": "Contains inference related information which were used to create model package.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Container" - }, - "maxItems": 15, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Containers" - ], - "type": "object" - }, - "IntendedUses": { - "additionalProperties": false, - "description": "Intended usage of model.", - "properties": { - "ExplanationsForRiskRating": { - "maxLength": 2048, - "type": "string" - }, - "FactorsAffectingModelEfficiency": { - "maxLength": 2048, - "type": "string" - }, - "IntendedUses": { - "description": "intended use cases.", - "maxLength": 2048, - "type": "string" - }, - "PurposeOfModel": { - "description": "Why the model was developed?", - "maxLength": 2048, - "type": "string" - }, - "RiskRating": { - "$ref": "#/definitions/RiskRating" - } - }, - "type": "object" - }, - "LinearGraphMetric": { - "additionalProperties": false, - "description": "Linear graph metric.", - "properties": { - "Name": { - "pattern": ".{1,255}", - "type": "string" - }, - "Notes": { - "maxLength": 1024, - "type": "string" - }, - "Type": { - "enum": [ - "linear_graph" - ], - "type": "string" - }, - "Value": { - "anyOf": [ - { - "insertionOrder": true, - "items": { - "insertionOrder": true, - "items": { - "type": "number" - }, - "maxItems": 2, - "minItems": 2, - "type": "array" - }, - "minItems": 1, - "type": "array" - } - ] - }, - "XAxisName": { - "$ref": "#/definitions/AxisNameString" - }, - "YAxisName": { - "$ref": "#/definitions/AxisNameString" - } - }, - "required": [ - "Name", - "Type", - "Value" - ], - "type": "object" - }, - "MatrixMetric": { - "additionalProperties": false, - "properties": { - "Name": { - "pattern": ".{1,255}", - "type": "string" - }, - "Notes": { - "maxLength": 1024, - "type": "string" - }, - "Type": { - "enum": [ - "matrix" - ], - "type": "string" - }, - "Value": { - "anyOf": [ - { - "insertionOrder": true, - "items": { - "insertionOrder": true, - "items": { - "type": "number" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - }, - "maxItems": 20, - "minItems": 1, - "type": "array" - } - ] - }, - "XAxisName": { - "$ref": "#/definitions/AxisNameArray" - }, - "YAxisName": { - "$ref": "#/definitions/AxisNameArray" - } - }, - "required": [ - "Name", - "Type", - "Value" - ], - "type": "object" - }, - "MetricGroup": { - "additionalProperties": false, - "description": "item in metric groups", - "properties": { - "MetricData": { - "insertionOrder": true, - "items": { - "anyOf": [ - { - "$ref": "#/definitions/SimpleMetric" - }, - { - "$ref": "#/definitions/LinearGraphMetric" - }, - { - "$ref": "#/definitions/BarChartMetric" - }, - { - "$ref": "#/definitions/MatrixMetric" - } - ] - }, - "type": "array" - }, - "Name": { - "pattern": ".{1,63}", - "type": "string" - } - }, - "required": [ - "Name", - "MetricData" - ], - "type": "object" - }, - "ModelOverview": { - "additionalProperties": false, - "description": "Overview about the model.", - "properties": { - "AlgorithmType": { - "description": "Algorithm used to solve the problem.", - "maxLength": 1024, - "type": "string" - }, - "InferenceEnvironment": { - "additionalProperties": false, - "description": "Overview about the inference.", - "properties": { - "ContainerImage": { - "description": "SageMaker inference image uri.", - "insertionOrder": true, - "items": { - "maxLength": 1024, - "type": "string" - }, - "maxItems": 15, - "type": "array" - } - }, - "type": "object" - }, - "ModelArtifact": { - "description": "Location of the model artifact.", - "insertionOrder": true, - "items": { - "maxLength": 1024, - "type": "string" - }, - "maxItems": 15, - "type": "array" - }, - "ModelCreator": { - "description": "Creator of model.", - "maxLength": 1024, - "type": "string" - }, - "ModelDescription": { - "description": "description of model.", - "maxLength": 1024, - "type": "string" - }, - "ModelId": { - "description": "SageMaker Model Arn or Non SageMaker Model id.", - "maxLength": 1024, - "type": "string" - }, - "ModelName": { - "description": "Name of the model.", - "maxLength": 1024, - "type": "string" - }, - "ModelOwner": { - "description": "Owner of model.", - "maxLength": 1024, - "type": "string" - }, - "ModelVersion": { - "description": "Version of the model.", - "minimum": 1, - "type": "number" - }, - "ProblemType": { - "description": "Problem being solved with the model.", - "maxLength": 1024, - "type": "string" - } - }, - "type": "object" - }, - "ModelPackageCreator": { - "additionalProperties": false, - "properties": { - "UserProfileName": { - "description": "The name of the user's profile in Studio", - "maxLength": 63, - "type": "string" - } - }, - "type": "object" - }, - "ModelPackageDetails": { - "additionalProperties": false, - "description": "Metadata information related to model package version", - "properties": { - "ApprovalDescription": { - "description": "A description provided for the model approval", - "maxLength": 1024, - "type": "string" - }, - "CreatedBy": { - "$ref": "#/definitions/ModelPackageCreator", - "description": "Information about the user who created model package." - }, - "Domain": { - "description": "The machine learning domain of the model package you specified. Common machine learning domains include computer vision and natural language processing.", - "type": "string" - }, - "InferenceSpecification": { - "$ref": "#/definitions/InferenceSpecification", - "description": "Details about inference jobs that can be run with models based on this model package." - }, - "ModelApprovalStatus": { - "description": "Current approval status of model package", - "enum": [ - "Approved", - "Rejected", - "PendingManualApproval" - ], - "type": "string" - }, - "ModelPackageArn": { - "description": "The Amazon Resource Name (ARN) of the model package", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "ModelPackageDescription": { - "description": "A brief summary of the model package", - "maxLength": 1024, - "type": "string" - }, - "ModelPackageGroupName": { - "description": "If the model is a versioned model, the name of the model group that the versioned model belongs to.", - "maxLength": 63, - "minLength": 1, - "type": "string" - }, - "ModelPackageName": { - "description": "Name of the model package", - "maxLength": 63, - "minLength": 1, - "type": "string" - }, - "ModelPackageStatus": { - "description": "Current status of model package", - "enum": [ - "Pending", - "InProgress", - "Completed", - "Failed", - "Deleting" - ], - "type": "string" - }, - "ModelPackageVersion": { - "description": "Version of the model package", - "minimum": 1.0, - "type": "number" - }, - "SourceAlgorithms": { - "$ref": "#/definitions/SourceAlgorithms", - "description": "A list of algorithms that were used to create a model package." - }, - "Task": { - "description": "The machine learning task you specified that your model package accomplishes. Common machine learning tasks include object detection and image classification.", - "type": "string" - } - }, - "type": "object" - }, - "ObjectiveFunction": { - "additionalProperties": false, - "description": "the objective function the model will optimize for.", - "properties": { - "Function": { - "additionalProperties": false, - "description": "objective function that training job is optimized for.", - "properties": { - "Condition": { - "maxLength": 63, - "type": "string" - }, - "Facet": { - "maxLength": 63, - "type": "string" - }, - "Function": { - "enum": [ - "Maximize", - "Minimize" - ], - "type": "string" - } - }, - "type": "object" - }, - "Notes": { - "maxLength": 1024, - "type": "string" - } - }, - "type": "object" - }, - "RiskRating": { - "description": "Risk rating of model.", - "enum": [ - "High", - "Medium", - "Low", - "Unknown" - ], - "type": "string" - }, - "SecurityConfig": { - "additionalProperties": false, - "description": "An optional Key Management Service key to encrypt, decrypt, and re-encrypt model card content for regulated workloads with highly sensitive data.\n\n", - "properties": { - "KmsKeyId": { - "description": "A Key Management Service key ID to use for encrypting a model card.", - "maxLength": 2048, - "pattern": ".*", - "type": "string" - } - }, - "type": "object" - }, - "SimpleMetric": { - "additionalProperties": false, - "description": "metric data", - "properties": { - "Name": { - "pattern": ".{1,255}", - "type": "string" - }, - "Notes": { - "maxLength": 1024, - "type": "string" - }, - "Type": { - "enum": [ - "number", - "string", - "boolean" - ], - "type": "string" - }, - "Value": { - "anyOf": [ - { - "type": "number" - }, - { - "maxLength": 63, - "type": "string" - }, - { - "type": "boolean" - } - ] - }, - "XAxisName": { - "$ref": "#/definitions/AxisNameString" - }, - "YAxisName": { - "$ref": "#/definitions/AxisNameString" - } - }, - "required": [ - "Name", - "Type", - "Value" - ], - "type": "object" - }, - "SourceAlgorithm": { - "additionalProperties": false, - "properties": { - "AlgorithmName": { - "description": "The name of an algorithm that was used to create the model package. The algorithm must be either an algorithm resource in your SageMaker account or an algorithm in AWS Marketplace that you are subscribed to.", - "maxLength": 170, - "type": "string" - }, - "ModelDataUrl": { - "description": "The Amazon S3 path where the model artifacts, which result from model training, are stored.", - "maxLength": 1024, - "type": "string" - } - }, - "required": [ - "AlgorithmName" - ], - "type": "object" - }, - "SourceAlgorithms": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/SourceAlgorithm" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The tag key. Tag keys must be unique per resource.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The tag value.", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TrainingDetails": { - "additionalProperties": false, - "description": "Overview about the training.", - "properties": { - "ObjectiveFunction": { - "$ref": "#/definitions/ObjectiveFunction" - }, - "TrainingJobDetails": { - "additionalProperties": false, - "properties": { - "HyperParameters": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TrainingHyperParameter", - "maxItems": 100 - }, - "type": "array" - }, - "TrainingArn": { - "description": "SageMaker Training job arn.", - "maxLength": 1024, - "type": "string" - }, - "TrainingDatasets": { - "description": "Location of the model datasets.", - "insertionOrder": true, - "items": { - "maxLength": 1024, - "type": "string" - }, - "maxItems": 15, - "type": "array" - }, - "TrainingEnvironment": { - "additionalProperties": false, - "properties": { - "ContainerImage": { - "description": "SageMaker training image uri.", - "insertionOrder": true, - "items": { - "maxLength": 1024, - "type": "string" - }, - "maxItems": 15, - "type": "array" - } - }, - "type": "object" - }, - "TrainingMetrics": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TrainingMetric", - "maxItems": 50 - }, - "type": "array" - }, - "UserProvidedHyperParameters": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TrainingHyperParameter", - "maxItems": 100 - }, - "type": "array" - }, - "UserProvidedTrainingMetrics": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TrainingMetric", - "maxItems": 50 - }, - "type": "array" - } - }, - "type": "object" - }, - "TrainingObservations": { - "maxLength": 1024, - "type": "string" - } - }, - "type": "object" - }, - "TrainingHyperParameter": { - "additionalProperties": false, - "description": "training hyper parameter", - "properties": { - "Name": { - "pattern": ".{1,255}", - "type": "string" - }, - "Value": { - "pattern": ".{1,255}", - "type": "string" - } - }, - "required": [ - "Name", - "Value" - ], - "type": "object" - }, - "TrainingMetric": { - "additionalProperties": false, - "description": "training metric data.", - "properties": { - "Name": { - "pattern": ".{1,255}", - "type": "string" - }, - "Notes": { - "maxLength": 1024, - "type": "string" - }, - "Value": { - "type": "number" - } - }, - "required": [ - "Name", - "Value" - ], - "type": "object" - }, - "UserContext": { - "additionalProperties": false, - "description": "Information about the user who created or modified an experiment, trial, trial component, lineage group, project, or model card.", - "properties": { - "DomainId": { - "default": "UnsetValue", - "description": "The domain associated with the user.", - "type": "string" - }, - "UserProfileArn": { - "default": "UnsetValue", - "description": "The Amazon Resource Name (ARN) of the user's profile.", - "type": "string" - }, - "UserProfileName": { - "default": "UnsetValue", - "description": "The name of the user's profile.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SageMaker::ModelCard.", - "handlers": { - "create": { - "permissions": [ - "sagemaker:CreateModelCard", - "sagemaker:DescribeModel", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:CreateGrant", - "sagemaker:DescribeModelPackageGroup", - "sagemaker:DescribeModelPackage", - "sagemaker:AddTags" - ] - }, - "delete": { - "permissions": [ - "sagemaker:DescribeModelCard", - "sagemaker:DeleteModelCard", - "sagemaker:DescribeModelPackageGroup", - "sagemaker:DescribeModelPackage", - "kms:RetireGrant", - "kms:Decrypt", - "sagemaker:ListTags", - "sagemaker:DeleteTags" - ] - }, - "list": { - "permissions": [ - "sagemaker:ListModelCards", - "sagemaker:ListModelCardVersions" - ] - }, - "read": { - "permissions": [ - "sagemaker:DescribeModelCard", - "sagemaker:DescribeModelPackageGroup", - "sagemaker:DescribeModelPackage", - "kms:Decrypt", - "sagemaker:ListTags" - ] - }, - "update": { - "permissions": [ - "sagemaker:UpdateModelCard", - "sagemaker:DescribeModelCard", - "sagemaker:DescribeModel", - "kms:GenerateDataKey", - "kms:Decrypt", - "sagemaker:DescribeModelPackageGroup", - "sagemaker:DescribeModelPackage", - "sagemaker:ListTags", - "sagemaker:AddTags", - "sagemaker:DeleteTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/ModelCardName" - ], - "properties": { - "Content": { - "$ref": "#/definitions/Content" - }, - "CreatedBy": { - "$ref": "#/definitions/UserContext", - "description": "Information about the user who created or modified an experiment, trial, trial component, lineage group, project, or model card." - }, - "CreationTime": { - "description": "The date and time the model card was created.", - "type": "string" - }, - "LastModifiedBy": { - "$ref": "#/definitions/UserContext", - "description": "Information about the user who created or modified an experiment, trial, trial component, lineage group, project, or model card." - }, - "LastModifiedTime": { - "description": "The date and time the model card was last modified.", - "type": "string" - }, - "ModelCardArn": { - "description": "The Amazon Resource Name (ARN) of the successfully created model card.", - "maxLength": 256, - "minLength": 1, - "pattern": "^arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]{9,16}:[0-9]{12}:model-card/[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$", - "type": "string" - }, - "ModelCardName": { - "description": "The unique name of the model card.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$", - "type": "string" - }, - "ModelCardProcessingStatus": { - "default": "UnsetValue", - "description": "The processing status of model card deletion. The ModelCardProcessingStatus updates throughout the different deletion steps.", - "enum": [ - "UnsetValue", - "DeleteInProgress", - "DeletePending", - "ContentDeleted", - "ExportJobsDeleted", - "DeleteCompleted", - "DeleteFailed" - ], - "type": "string" - }, - "ModelCardStatus": { - "description": "The approval status of the model card within your organization. Different organizations might have different criteria for model card review and approval.", - "enum": [ - "Draft", - "PendingReview", - "Approved", - "Archived" - ], - "type": "string" - }, - "ModelCardVersion": { - "description": "A version of the model card.", - "minimum": 1, - "type": "integer" - }, - "SecurityConfig": { - "$ref": "#/definitions/SecurityConfig" - }, - "Tags": { - "description": "Key-value pairs used to manage metadata for model cards.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ModelCardArn", - "/properties/ModelCardVersion", - "/properties/CreatedBy/DomainId", - "/properties/CreatedBy/UserProfileArn", - "/properties/CreatedBy/UserProfileName", - "/properties/LastModifiedBy/DomainId", - "/properties/LastModifiedBy/UserProfileArn", - "/properties/LastModifiedBy/UserProfileName", - "/properties/CreationTime", - "/properties/LastModifiedTime", - "/properties/ModelCardProcessingStatus" - ], - "required": [ - "ModelCardName", - "Content", - "ModelCardStatus" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SageMaker::ModelCard" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ModelCardName", + "/properties/SecurityConfig" + ], + "definitions": { + "AdditionalInformation": { + "additionalProperties": false, + "properties": { + "CaveatsAndRecommendations": { + "description": "Caveats and recommendations for people who might use this model in their applications.", + "maxLength": 2048, + "type": "string" + }, + "CustomDetails": { + "additionalProperties": false, + "description": "customer details.", + "patternProperties": { + "[a-zA-Z_][a-zA-Z0-9_]*": { + "maxLength": 1024, + "type": "string" + } + }, + "type": "object" + }, + "EthicalConsiderations": { + "description": "Any ethical considerations that the author wants to provide.", + "maxLength": 2048, + "type": "string" + } + }, + "type": "object" + }, + "AxisNameArray": { + "insertionOrder": true, + "items": { + "maxLength": 63, + "type": "string" + }, + "type": "array" + }, + "AxisNameString": { + "maxLength": 63, + "type": "string" + }, + "BarChartMetric": { + "additionalProperties": false, + "properties": { + "Name": { + "pattern": ".{1,255}", + "type": "string" + }, + "Notes": { + "maxLength": 1024, + "type": "string" + }, + "Type": { + "enum": [ + "bar_chart" + ], + "type": "string" + }, + "Value": { + "anyOf": [ + { + "insertionOrder": true, + "items": { + "type": "number" + }, + "minItems": 1, + "type": "array" + } + ] + }, + "XAxisName": { + "$ref": "#/definitions/AxisNameArray" + }, + "YAxisName": { + "$ref": "#/definitions/AxisNameString" + } + }, + "required": [ + "Name", + "Type", + "Value" + ], + "type": "object" + }, + "BusinessDetails": { + "additionalProperties": false, + "description": "Business details.", + "properties": { + "BusinessProblem": { + "description": "What business problem does the model solve?", + "maxLength": 2048, + "type": "string" + }, + "BusinessStakeholders": { + "description": "Business stakeholders.", + "maxLength": 2048, + "type": "string" + }, + "LineOfBusiness": { + "description": "Line of business.", + "maxLength": 2048, + "type": "string" + } + }, + "type": "object" + }, + "Container": { + "additionalProperties": false, + "properties": { + "Image": { + "description": "Inference environment path. The Amazon EC2 Container Registry (Amazon ECR) path where inference code is stored.", + "maxLength": 255, + "type": "string" + }, + "ModelDataUrl": { + "description": "The Amazon S3 path where the model artifacts, which result from model training, are stored.", + "maxLength": 1024, + "type": "string" + }, + "NearestModelName": { + "description": "The name of a pre-trained machine learning benchmarked by Amazon SageMaker Inference Recommender model that matches your model.", + "type": "string" + } + }, + "required": [ + "Image" + ], + "type": "object" + }, + "Content": { + "additionalProperties": false, + "description": "The content of the model card.", + "properties": { + "AdditionalInformation": { + "$ref": "#/definitions/AdditionalInformation" + }, + "BusinessDetails": { + "$ref": "#/definitions/BusinessDetails" + }, + "EvaluationDetails": { + "$ref": "#/definitions/EvaluationDetails" + }, + "IntendedUses": { + "$ref": "#/definitions/IntendedUses" + }, + "ModelOverview": { + "$ref": "#/definitions/ModelOverview" + }, + "ModelPackageDetails": { + "$ref": "#/definitions/ModelPackageDetails" + }, + "TrainingDetails": { + "$ref": "#/definitions/TrainingDetails" + } + }, + "type": "object" + }, + "EvaluationDetail": { + "additionalProperties": false, + "description": "item of evaluation details", + "properties": { + "Datasets": { + "insertionOrder": true, + "items": { + "maxLength": 1024, + "type": "string" + }, + "maxItems": 10, + "type": "array" + }, + "EvaluationJobArn": { + "maxLength": 256, + "type": "string" + }, + "EvaluationObservation": { + "maxLength": 2096, + "type": "string" + }, + "Metadata": { + "additionalProperties": false, + "description": "additional attributes associated with the evaluation results.", + "patternProperties": { + "[a-zA-Z_][a-zA-Z0-9_]*": { + "maxLength": 1024, + "type": "string" + } + }, + "type": "object" + }, + "MetricGroups": { + "default": [], + "insertionOrder": true, + "items": { + "$ref": "#/definitions/MetricGroup" + }, + "type": "array" + }, + "Name": { + "pattern": ".{1,63}", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "EvaluationDetails": { + "default": [], + "insertionOrder": true, + "items": { + "$ref": "#/definitions/EvaluationDetail" + }, + "type": "array" + }, + "InferenceSpecification": { + "additionalProperties": false, + "properties": { + "Containers": { + "description": "Contains inference related information which were used to create model package.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Container" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Containers" + ], + "type": "object" + }, + "IntendedUses": { + "additionalProperties": false, + "description": "Intended usage of model.", + "properties": { + "ExplanationsForRiskRating": { + "maxLength": 2048, + "type": "string" + }, + "FactorsAffectingModelEfficiency": { + "maxLength": 2048, + "type": "string" + }, + "IntendedUses": { + "description": "intended use cases.", + "maxLength": 2048, + "type": "string" + }, + "PurposeOfModel": { + "description": "Why the model was developed?", + "maxLength": 2048, + "type": "string" + }, + "RiskRating": { + "$ref": "#/definitions/RiskRating" + } + }, + "type": "object" + }, + "LinearGraphMetric": { + "additionalProperties": false, + "description": "Linear graph metric.", + "properties": { + "Name": { + "pattern": ".{1,255}", + "type": "string" + }, + "Notes": { + "maxLength": 1024, + "type": "string" + }, + "Type": { + "enum": [ + "linear_graph" + ], + "type": "string" + }, + "Value": { + "anyOf": [ + { + "insertionOrder": true, + "items": { + "insertionOrder": true, + "items": { + "type": "number" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + "minItems": 1, + "type": "array" + } + ] + }, + "XAxisName": { + "$ref": "#/definitions/AxisNameString" + }, + "YAxisName": { + "$ref": "#/definitions/AxisNameString" + } + }, + "required": [ + "Name", + "Type", + "Value" + ], + "type": "object" + }, + "MatrixMetric": { + "additionalProperties": false, + "properties": { + "Name": { + "pattern": ".{1,255}", + "type": "string" + }, + "Notes": { + "maxLength": 1024, + "type": "string" + }, + "Type": { + "enum": [ + "matrix" + ], + "type": "string" + }, + "Value": { + "anyOf": [ + { + "insertionOrder": true, + "items": { + "insertionOrder": true, + "items": { + "type": "number" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + } + ] + }, + "XAxisName": { + "$ref": "#/definitions/AxisNameArray" + }, + "YAxisName": { + "$ref": "#/definitions/AxisNameArray" + } + }, + "required": [ + "Name", + "Type", + "Value" + ], + "type": "object" + }, + "MetricGroup": { + "additionalProperties": false, + "description": "item in metric groups", + "properties": { + "MetricData": { + "insertionOrder": true, + "items": { + "anyOf": [ + { + "$ref": "#/definitions/SimpleMetric" + }, + { + "$ref": "#/definitions/LinearGraphMetric" + }, + { + "$ref": "#/definitions/BarChartMetric" + }, + { + "$ref": "#/definitions/MatrixMetric" + } + ] + }, + "type": "array" + }, + "Name": { + "pattern": ".{1,63}", + "type": "string" + } + }, + "required": [ + "Name", + "MetricData" + ], + "type": "object" + }, + "ModelOverview": { + "additionalProperties": false, + "description": "Overview about the model.", + "properties": { + "AlgorithmType": { + "description": "Algorithm used to solve the problem.", + "maxLength": 1024, + "type": "string" + }, + "InferenceEnvironment": { + "additionalProperties": false, + "description": "Overview about the inference.", + "properties": { + "ContainerImage": { + "description": "SageMaker inference image uri.", + "insertionOrder": true, + "items": { + "maxLength": 1024, + "type": "string" + }, + "maxItems": 15, + "type": "array" + } + }, + "type": "object" + }, + "ModelArtifact": { + "description": "Location of the model artifact.", + "insertionOrder": true, + "items": { + "maxLength": 1024, + "type": "string" + }, + "maxItems": 15, + "type": "array" + }, + "ModelCreator": { + "description": "Creator of model.", + "maxLength": 1024, + "type": "string" + }, + "ModelDescription": { + "description": "description of model.", + "maxLength": 1024, + "type": "string" + }, + "ModelId": { + "description": "SageMaker Model Arn or Non SageMaker Model id.", + "maxLength": 1024, + "type": "string" + }, + "ModelName": { + "description": "Name of the model.", + "maxLength": 1024, + "type": "string" + }, + "ModelOwner": { + "description": "Owner of model.", + "maxLength": 1024, + "type": "string" + }, + "ModelVersion": { + "description": "Version of the model.", + "minimum": 1, + "type": "number" + }, + "ProblemType": { + "description": "Problem being solved with the model.", + "maxLength": 1024, + "type": "string" + } + }, + "type": "object" + }, + "ModelPackageCreator": { + "additionalProperties": false, + "properties": { + "UserProfileName": { + "description": "The name of the user's profile in Studio", + "maxLength": 63, + "type": "string" + } + }, + "type": "object" + }, + "ModelPackageDetails": { + "additionalProperties": false, + "description": "Metadata information related to model package version", + "properties": { + "ApprovalDescription": { + "description": "A description provided for the model approval", + "maxLength": 1024, + "type": "string" + }, + "CreatedBy": { + "$ref": "#/definitions/ModelPackageCreator", + "description": "Information about the user who created model package." + }, + "Domain": { + "description": "The machine learning domain of the model package you specified. Common machine learning domains include computer vision and natural language processing.", + "type": "string" + }, + "InferenceSpecification": { + "$ref": "#/definitions/InferenceSpecification", + "description": "Details about inference jobs that can be run with models based on this model package." + }, + "ModelApprovalStatus": { + "description": "Current approval status of model package", + "enum": [ + "Approved", + "Rejected", + "PendingManualApproval" + ], + "type": "string" + }, + "ModelPackageArn": { + "description": "The Amazon Resource Name (ARN) of the model package", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ModelPackageDescription": { + "description": "A brief summary of the model package", + "maxLength": 1024, + "type": "string" + }, + "ModelPackageGroupName": { + "description": "If the model is a versioned model, the name of the model group that the versioned model belongs to.", + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "ModelPackageName": { + "description": "Name of the model package", + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "ModelPackageStatus": { + "description": "Current status of model package", + "enum": [ + "Pending", + "InProgress", + "Completed", + "Failed", + "Deleting" + ], + "type": "string" + }, + "ModelPackageVersion": { + "description": "Version of the model package", + "minimum": 1.0, + "type": "number" + }, + "SourceAlgorithms": { + "$ref": "#/definitions/SourceAlgorithms", + "description": "A list of algorithms that were used to create a model package." + }, + "Task": { + "description": "The machine learning task you specified that your model package accomplishes. Common machine learning tasks include object detection and image classification.", + "type": "string" + } + }, + "type": "object" + }, + "ObjectiveFunction": { + "additionalProperties": false, + "description": "the objective function the model will optimize for.", + "properties": { + "Function": { + "additionalProperties": false, + "description": "objective function that training job is optimized for.", + "properties": { + "Condition": { + "maxLength": 63, + "type": "string" + }, + "Facet": { + "maxLength": 63, + "type": "string" + }, + "Function": { + "enum": [ + "Maximize", + "Minimize" + ], + "type": "string" + } + }, + "type": "object" + }, + "Notes": { + "maxLength": 1024, + "type": "string" + } + }, + "type": "object" + }, + "RiskRating": { + "description": "Risk rating of model.", + "enum": [ + "High", + "Medium", + "Low", + "Unknown" + ], + "type": "string" + }, + "SecurityConfig": { + "additionalProperties": false, + "description": "An optional Key Management Service key to encrypt, decrypt, and re-encrypt model card content for regulated workloads with highly sensitive data.\n\n", + "properties": { + "KmsKeyId": { + "description": "A Key Management Service key ID to use for encrypting a model card.", + "maxLength": 2048, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "SimpleMetric": { + "additionalProperties": false, + "description": "metric data", + "properties": { + "Name": { + "pattern": ".{1,255}", + "type": "string" + }, + "Notes": { + "maxLength": 1024, + "type": "string" + }, + "Type": { + "enum": [ + "number", + "string", + "boolean" + ], + "type": "string" + }, + "Value": { + "anyOf": [ + { + "type": "number" + }, + { + "maxLength": 63, + "type": "string" + }, + { + "type": "boolean" + } + ] + }, + "XAxisName": { + "$ref": "#/definitions/AxisNameString" + }, + "YAxisName": { + "$ref": "#/definitions/AxisNameString" + } + }, + "required": [ + "Name", + "Type", + "Value" + ], + "type": "object" + }, + "SourceAlgorithm": { + "additionalProperties": false, + "properties": { + "AlgorithmName": { + "description": "The name of an algorithm that was used to create the model package. The algorithm must be either an algorithm resource in your SageMaker account or an algorithm in AWS Marketplace that you are subscribed to.", + "maxLength": 170, + "type": "string" + }, + "ModelDataUrl": { + "description": "The Amazon S3 path where the model artifacts, which result from model training, are stored.", + "maxLength": 1024, + "type": "string" + } + }, + "required": [ + "AlgorithmName" + ], + "type": "object" + }, + "SourceAlgorithms": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/SourceAlgorithm" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The tag key. Tag keys must be unique per resource.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The tag value.", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TrainingDetails": { + "additionalProperties": false, + "description": "Overview about the training.", + "properties": { + "ObjectiveFunction": { + "$ref": "#/definitions/ObjectiveFunction" + }, + "TrainingJobDetails": { + "additionalProperties": false, + "properties": { + "HyperParameters": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TrainingHyperParameter", + "maxItems": 100 + }, + "type": "array" + }, + "TrainingArn": { + "description": "SageMaker Training job arn.", + "maxLength": 1024, + "type": "string" + }, + "TrainingDatasets": { + "description": "Location of the model datasets.", + "insertionOrder": true, + "items": { + "maxLength": 1024, + "type": "string" + }, + "maxItems": 15, + "type": "array" + }, + "TrainingEnvironment": { + "additionalProperties": false, + "properties": { + "ContainerImage": { + "description": "SageMaker training image uri.", + "insertionOrder": true, + "items": { + "maxLength": 1024, + "type": "string" + }, + "maxItems": 15, + "type": "array" + } + }, + "type": "object" + }, + "TrainingMetrics": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TrainingMetric", + "maxItems": 50 + }, + "type": "array" + }, + "UserProvidedHyperParameters": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TrainingHyperParameter", + "maxItems": 100 + }, + "type": "array" + }, + "UserProvidedTrainingMetrics": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/TrainingMetric", + "maxItems": 50 + }, + "type": "array" + } + }, + "type": "object" + }, + "TrainingObservations": { + "maxLength": 1024, + "type": "string" + } + }, + "type": "object" + }, + "TrainingHyperParameter": { + "additionalProperties": false, + "description": "training hyper parameter", + "properties": { + "Name": { + "pattern": ".{1,255}", + "type": "string" + }, + "Value": { + "pattern": ".{1,255}", + "type": "string" + } + }, + "required": [ + "Name", + "Value" + ], + "type": "object" + }, + "TrainingMetric": { + "additionalProperties": false, + "description": "training metric data.", + "properties": { + "Name": { + "pattern": ".{1,255}", + "type": "string" + }, + "Notes": { + "maxLength": 1024, + "type": "string" + }, + "Value": { + "type": "number" + } + }, + "required": [ + "Name", + "Value" + ], + "type": "object" + }, + "UserContext": { + "additionalProperties": false, + "description": "Information about the user who created or modified an experiment, trial, trial component, lineage group, project, or model card.", + "properties": { + "DomainId": { + "default": "UnsetValue", + "description": "The domain associated with the user.", + "type": "string" + }, + "UserProfileArn": { + "default": "UnsetValue", + "description": "The Amazon Resource Name (ARN) of the user's profile.", + "type": "string" + }, + "UserProfileName": { + "default": "UnsetValue", + "description": "The name of the user's profile.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SageMaker::ModelCard.", + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateModelCard", + "sagemaker:DescribeModel", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:CreateGrant", + "sagemaker:DescribeModelPackageGroup", + "sagemaker:DescribeModelPackage", + "sagemaker:AddTags" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DescribeModelCard", + "sagemaker:DeleteModelCard", + "sagemaker:DescribeModelPackageGroup", + "sagemaker:DescribeModelPackage", + "kms:RetireGrant", + "kms:Decrypt", + "sagemaker:ListTags", + "sagemaker:DeleteTags" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListModelCards", + "sagemaker:ListModelCardVersions" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeModelCard", + "sagemaker:DescribeModelPackageGroup", + "sagemaker:DescribeModelPackage", + "kms:Decrypt", + "sagemaker:ListTags" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateModelCard", + "sagemaker:DescribeModelCard", + "sagemaker:DescribeModel", + "kms:GenerateDataKey", + "kms:Decrypt", + "sagemaker:DescribeModelPackageGroup", + "sagemaker:DescribeModelPackage", + "sagemaker:ListTags", + "sagemaker:AddTags", + "sagemaker:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/ModelCardName" + ], + "properties": { + "Content": { + "$ref": "#/definitions/Content" + }, + "CreatedBy": { + "$ref": "#/definitions/UserContext", + "description": "Information about the user who created or modified an experiment, trial, trial component, lineage group, project, or model card." + }, + "CreationTime": { + "description": "The date and time the model card was created.", + "type": "string" + }, + "LastModifiedBy": { + "$ref": "#/definitions/UserContext", + "description": "Information about the user who created or modified an experiment, trial, trial component, lineage group, project, or model card." + }, + "LastModifiedTime": { + "description": "The date and time the model card was last modified.", + "type": "string" + }, + "ModelCardArn": { + "description": "The Amazon Resource Name (ARN) of the successfully created model card.", + "maxLength": 256, + "minLength": 1, + "pattern": "^arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]{9,16}:[0-9]{12}:model-card/[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ModelCardName": { + "description": "The unique name of the model card.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ModelCardProcessingStatus": { + "default": "UnsetValue", + "description": "The processing status of model card deletion. The ModelCardProcessingStatus updates throughout the different deletion steps.", + "enum": [ + "UnsetValue", + "DeleteInProgress", + "DeletePending", + "ContentDeleted", + "ExportJobsDeleted", + "DeleteCompleted", + "DeleteFailed" + ], + "type": "string" + }, + "ModelCardStatus": { + "description": "The approval status of the model card within your organization. Different organizations might have different criteria for model card review and approval.", + "enum": [ + "Draft", + "PendingReview", + "Approved", + "Archived" + ], + "type": "string" + }, + "ModelCardVersion": { + "description": "A version of the model card.", + "minimum": 1, + "type": "integer" + }, + "SecurityConfig": { + "$ref": "#/definitions/SecurityConfig" + }, + "Tags": { + "description": "Key-value pairs used to manage metadata for model cards.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ModelCardArn", + "/properties/ModelCardVersion", + "/properties/CreatedBy/DomainId", + "/properties/CreatedBy/UserProfileArn", + "/properties/CreatedBy/UserProfileName", + "/properties/LastModifiedBy/DomainId", + "/properties/LastModifiedBy/UserProfileArn", + "/properties/LastModifiedBy/UserProfileName", + "/properties/CreationTime", + "/properties/LastModifiedTime", + "/properties/ModelCardProcessingStatus" + ], + "required": [ + "ModelCardName", + "Content", + "ModelCardStatus" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "sagemaker:AddTags", + "sagemaker:ListTags", + "sagemaker:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SageMaker::ModelCard" +} diff --git a/src/schema/aws-sagemaker-modelexplainabilityjobdefinition.json b/src/schema/aws-sagemaker-modelexplainabilityjobdefinition.json index 937a54bc..4d9ece49 100644 --- a/src/schema/aws-sagemaker-modelexplainabilityjobdefinition.json +++ b/src/schema/aws-sagemaker-modelexplainabilityjobdefinition.json @@ -1,581 +1,591 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/JobDefinitionName", - "/properties/ModelExplainabilityAppSpecification", - "/properties/ModelExplainabilityBaselineConfig", - "/properties/ModelExplainabilityJobInput", - "/properties/ModelExplainabilityJobOutputConfig", - "/properties/JobResources", - "/properties/NetworkConfig", - "/properties/RoleArn", - "/properties/StoppingCondition", - "/properties/Tags", - "/properties/EndpointName" - ], - "definitions": { - "BatchTransformInput": { - "additionalProperties": false, - "description": "The batch transform input for a monitoring job.", - "properties": { - "DataCapturedDestinationS3Uri": { - "description": "A URI that identifies the Amazon S3 storage location where Batch Transform Job captures data.", - "maxLength": 512, - "pattern": "^(https|s3)://([^/]+)/?(.*)$", - "type": "string" - }, - "DatasetFormat": { - "$ref": "#/definitions/DatasetFormat" - }, - "FeaturesAttribute": { - "description": "JSONpath to locate features in JSONlines dataset", - "maxLength": 256, - "type": "string" - }, - "InferenceAttribute": { - "description": "Index or JSONpath to locate predicted label(s)", - "maxLength": 256, - "type": "string" - }, - "LocalPath": { - "description": "Path to the filesystem where the endpoint data is available to the container.", - "maxLength": 256, - "pattern": ".*", - "type": "string" - }, - "ProbabilityAttribute": { - "description": "Index or JSONpath to locate probabilities", - "maxLength": 256, - "type": "string" - }, - "S3DataDistributionType": { - "description": "Whether input data distributed in Amazon S3 is fully replicated or sharded by an S3 key. Defauts to FullyReplicated", - "enum": [ - "FullyReplicated", - "ShardedByS3Key" - ], - "type": "string" - }, - "S3InputMode": { - "description": "Whether the Pipe or File is used as the input mode for transfering data for the monitoring job. Pipe mode is recommended for large datasets. File mode is useful for small files that fit in memory. Defaults to File.", - "enum": [ - "Pipe", - "File" - ], - "type": "string" - } - }, - "required": [ - "DataCapturedDestinationS3Uri", - "DatasetFormat", - "LocalPath" - ], - "type": "object" - }, - "ClusterConfig": { - "additionalProperties": false, - "description": "Configuration for the cluster used to run model monitoring jobs.", - "properties": { - "InstanceCount": { - "description": "The number of ML compute instances to use in the model monitoring job. For distributed processing jobs, specify a value greater than 1. The default value is 1.", - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "InstanceType": { - "description": "The ML compute instance type for the processing job.", - "type": "string" - }, - "VolumeKmsKeyId": { - "description": "The AWS Key Management Service (AWS KMS) key that Amazon SageMaker uses to encrypt data on the storage volume attached to the ML compute instance(s) that run the model monitoring job.", - "maximum": 2048, - "minimum": 1, - "type": "string" - }, - "VolumeSizeInGB": { - "description": "The size of the ML storage volume, in gigabytes, that you want to provision. You must specify sufficient ML storage for your scenario.", - "maximum": 16384, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "InstanceCount", - "InstanceType", - "VolumeSizeInGB" - ], - "type": "object" - }, - "ConstraintsResource": { - "additionalProperties": false, - "description": "The baseline constraints resource for a monitoring job.", - "properties": { - "S3Uri": { - "$ref": "#/definitions/S3Uri", - "description": "The Amazon S3 URI for baseline constraint file in Amazon S3 that the current monitoring job should validated against." - } - }, - "type": "object" - }, - "Csv": { - "description": "The CSV format", - "properties": { - "Header": { - "description": "A boolean flag indicating if given CSV has header", - "type": "boolean" - } - }, - "type": "object" - }, - "DatasetFormat": { - "description": "The dataset format of the data to monitor", - "properties": { - "Csv": { - "$ref": "#/definitions/Csv" - }, - "Json": { - "$ref": "#/definitions/Json" - }, - "Parquet": { - "$ref": "#/definitions/Parquet" - } - }, - "type": "object" - }, - "EndpointInput": { - "additionalProperties": false, - "description": "The endpoint for a monitoring job.", - "properties": { - "EndpointName": { - "$ref": "#/definitions/EndpointName" - }, - "FeaturesAttribute": { - "description": "JSONpath to locate features in JSONlines dataset", - "maxLength": 256, - "type": "string" - }, - "InferenceAttribute": { - "description": "Index or JSONpath to locate predicted label(s)", - "maxLength": 256, - "type": "string" - }, - "LocalPath": { - "description": "Path to the filesystem where the endpoint data is available to the container.", - "maxLength": 256, - "pattern": ".*", - "type": "string" - }, - "ProbabilityAttribute": { - "description": "Index or JSONpath to locate probabilities", - "maxLength": 256, - "type": "string" - }, - "S3DataDistributionType": { - "description": "Whether input data distributed in Amazon S3 is fully replicated or sharded by an S3 key. Defauts to FullyReplicated", - "enum": [ - "FullyReplicated", - "ShardedByS3Key" - ], - "type": "string" - }, - "S3InputMode": { - "description": "Whether the Pipe or File is used as the input mode for transfering data for the monitoring job. Pipe mode is recommended for large datasets. File mode is useful for small files that fit in memory. Defaults to File.", - "enum": [ - "Pipe", - "File" - ], - "type": "string" - } - }, - "required": [ - "EndpointName", - "LocalPath" - ], - "type": "object" - }, - "EndpointName": { - "description": "The name of the endpoint used to run the monitoring job.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*", - "type": "string" - }, - "JobDefinitionName": { - "description": "The name of the job definition.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", - "type": "string" - }, - "Json": { - "description": "The Json format", - "properties": { - "Line": { - "description": "A boolean flag indicating if it is JSON line format", - "type": "boolean" - } - }, - "type": "object" - }, - "ModelExplainabilityAppSpecification": { - "additionalProperties": false, - "description": "Container image configuration object for the monitoring job.", - "properties": { - "ConfigUri": { - "$ref": "#/definitions/S3Uri", - "description": "The S3 URI to an analysis configuration file" - }, - "Environment": { - "additionalProperties": false, - "description": "Sets the environment variables in the Docker container", - "patternProperties": { - "[\\S\\s]*": { - "maxLength": 256, - "type": "string" - }, - "[a-zA-Z_][a-zA-Z0-9_]*": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "ImageUri": { - "description": "The container image to be run by the monitoring job.", - "maxLength": 255, - "pattern": ".*", - "type": "string" - } - }, - "required": [ - "ImageUri", - "ConfigUri" - ], - "type": "object" - }, - "ModelExplainabilityBaselineConfig": { - "additionalProperties": false, - "description": "Baseline configuration used to validate that the data conforms to the specified constraints and statistics.", - "properties": { - "BaseliningJobName": { - "$ref": "#/definitions/ProcessingJobName" - }, - "ConstraintsResource": { - "$ref": "#/definitions/ConstraintsResource" - } - }, - "type": "object" - }, - "ModelExplainabilityJobInput": { - "additionalProperties": false, - "description": "The inputs for a monitoring job.", - "properties": { - "BatchTransformInput": { - "$ref": "#/definitions/BatchTransformInput" - }, - "EndpointInput": { - "$ref": "#/definitions/EndpointInput" - } - }, - "type": "object" - }, - "MonitoringOutput": { - "additionalProperties": false, - "description": "The output object for a monitoring job.", - "properties": { - "S3Output": { - "$ref": "#/definitions/S3Output" - } - }, - "required": [ - "S3Output" - ], - "type": "object" - }, - "MonitoringOutputConfig": { - "additionalProperties": false, - "description": "The output configuration for monitoring jobs.", - "properties": { - "KmsKeyId": { - "description": "The AWS Key Management Service (AWS KMS) key that Amazon SageMaker uses to encrypt the model artifacts at rest using Amazon S3 server-side encryption.", - "maxLength": 2048, - "pattern": ".*", - "type": "string" - }, - "MonitoringOutputs": { - "description": "Monitoring outputs for monitoring jobs. This is where the output of the periodic monitoring jobs is uploaded.", - "items": { - "$ref": "#/definitions/MonitoringOutput" - }, - "maxLength": 1, - "minLength": 1, - "type": "array" - } - }, - "required": [ - "MonitoringOutputs" - ], - "type": "object" - }, - "MonitoringResources": { - "additionalProperties": false, - "description": "Identifies the resources to deploy for a monitoring job.", - "properties": { - "ClusterConfig": { - "$ref": "#/definitions/ClusterConfig" - } - }, - "required": [ - "ClusterConfig" - ], - "type": "object" - }, - "MonitoringTimeOffsetString": { - "description": "The time offsets in ISO duration format", - "maxLength": 15, - "minLength": 1, - "pattern": "^.?P.*", - "type": "string" - }, - "NetworkConfig": { - "additionalProperties": false, - "description": "Networking options for a job, such as network traffic encryption between containers, whether to allow inbound and outbound network calls to and from containers, and the VPC subnets and security groups to use for VPC-enabled jobs.", - "properties": { - "EnableInterContainerTrafficEncryption": { - "description": "Whether to encrypt all communications between distributed processing jobs. Choose True to encrypt communications. Encryption provides greater security for distributed processing jobs, but the processing might take longer.", - "type": "boolean" - }, - "EnableNetworkIsolation": { - "description": "Whether to allow inbound and outbound network calls to and from the containers used for the processing job.", - "type": "boolean" - }, - "VpcConfig": { - "$ref": "#/definitions/VpcConfig" - } - }, - "type": "object" - }, - "Parquet": { - "description": "A flag indicating if the dataset format is Parquet", - "type": "boolean" - }, - "ProcessingJobName": { - "description": "The name of a processing job", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", - "type": "string" - }, - "S3Output": { - "additionalProperties": false, - "description": "Information about where and how to store the results of a monitoring job.", - "properties": { - "LocalPath": { - "description": "The local path to the Amazon S3 storage location where Amazon SageMaker saves the results of a monitoring job. LocalPath is an absolute path for the output data.", - "maxLength": 256, - "pattern": ".*", - "type": "string" - }, - "S3UploadMode": { - "description": "Whether to upload the results of the monitoring job continuously or after the job completes.", - "enum": [ - "Continuous", - "EndOfJob" - ], - "type": "string" - }, - "S3Uri": { - "description": "A URI that identifies the Amazon S3 storage location where Amazon SageMaker saves the results of a monitoring job.", - "maxLength": 512, - "pattern": "^(https|s3)://([^/]+)/?(.*)$", - "type": "string" - } - }, - "required": [ - "LocalPath", - "S3Uri" - ], - "type": "object" - }, - "S3Uri": { - "description": "The Amazon S3 URI.", - "maxLength": 1024, - "pattern": "^(https|s3)://([^/]+)/?(.*)$", - "type": "string" - }, - "StoppingCondition": { - "additionalProperties": false, - "description": "Specifies a time limit for how long the monitoring job is allowed to run.", - "properties": { - "MaxRuntimeInSeconds": { - "description": "The maximum runtime allowed in seconds.", - "maximum": 86400, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "MaxRuntimeInSeconds" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "VpcConfig": { - "additionalProperties": false, - "description": "Specifies a VPC that your training jobs and hosted models have access to. Control access to and from your training and model containers by configuring the VPC.", - "properties": { - "SecurityGroupIds": { - "description": "The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the Subnets field.", - "items": { - "maxLength": 32, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "Subnets": { - "description": "The ID of the subnets in the VPC to which you want to connect to your monitoring jobs.", - "items": { - "maxLength": 32, - "pattern": "[-0-9a-zA-Z]+", - "type": "string" - }, - "maxItems": 16, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "SecurityGroupIds", - "Subnets" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SageMaker::ModelExplainabilityJobDefinition", - "handlers": { - "create": { - "permissions": [ - "sagemaker:CreateModelExplainabilityJobDefinition", - "sagemaker:DescribeModelExplainabilityJobDefinition", - "iam:PassRole", - "sagemaker:AddTags" - ] - }, - "delete": { - "permissions": [ - "sagemaker:DeleteModelExplainabilityJobDefinition" - ] - }, - "list": { - "permissions": [ - "sagemaker:ListModelExplainabilityJobDefinitions", - "sagemaker:ListTags" - ] - }, - "read": { - "permissions": [ - "sagemaker:DescribeModelExplainabilityJobDefinition" - ] - } - }, - "primaryIdentifier": [ - "/properties/JobDefinitionArn" - ], - "properties": { - "CreationTime": { - "description": "The time at which the job definition was created.", - "type": "string" - }, - "EndpointName": { - "$ref": "#/definitions/EndpointName" - }, - "JobDefinitionArn": { - "description": "The Amazon Resource Name (ARN) of job definition.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "JobDefinitionName": { - "$ref": "#/definitions/JobDefinitionName" - }, - "JobResources": { - "$ref": "#/definitions/MonitoringResources" - }, - "ModelExplainabilityAppSpecification": { - "$ref": "#/definitions/ModelExplainabilityAppSpecification" - }, - "ModelExplainabilityBaselineConfig": { - "$ref": "#/definitions/ModelExplainabilityBaselineConfig" - }, - "ModelExplainabilityJobInput": { - "$ref": "#/definitions/ModelExplainabilityJobInput" - }, - "ModelExplainabilityJobOutputConfig": { - "$ref": "#/definitions/MonitoringOutputConfig" - }, - "NetworkConfig": { - "$ref": "#/definitions/NetworkConfig" - }, - "RoleArn": { - "description": "The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume to perform tasks on your behalf.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", - "type": "string" - }, - "StoppingCondition": { - "$ref": "#/definitions/StoppingCondition" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/CreationTime", - "/properties/JobDefinitionArn" - ], - "required": [ - "ModelExplainabilityAppSpecification", - "ModelExplainabilityJobInput", - "ModelExplainabilityJobOutputConfig", - "JobResources", - "RoleArn" - ], - "typeName": "AWS::SageMaker::ModelExplainabilityJobDefinition", - "writeOnlyProperties": [ - "/properties/EndpointName", - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/JobDefinitionName", + "/properties/ModelExplainabilityAppSpecification", + "/properties/ModelExplainabilityBaselineConfig", + "/properties/ModelExplainabilityJobInput", + "/properties/ModelExplainabilityJobOutputConfig", + "/properties/JobResources", + "/properties/NetworkConfig", + "/properties/RoleArn", + "/properties/StoppingCondition", + "/properties/Tags", + "/properties/EndpointName" + ], + "definitions": { + "BatchTransformInput": { + "additionalProperties": false, + "description": "The batch transform input for a monitoring job.", + "properties": { + "DataCapturedDestinationS3Uri": { + "description": "A URI that identifies the Amazon S3 storage location where Batch Transform Job captures data.", + "maxLength": 512, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + }, + "DatasetFormat": { + "$ref": "#/definitions/DatasetFormat" + }, + "FeaturesAttribute": { + "description": "JSONpath to locate features in JSONlines dataset", + "maxLength": 256, + "type": "string" + }, + "InferenceAttribute": { + "description": "Index or JSONpath to locate predicted label(s)", + "maxLength": 256, + "type": "string" + }, + "LocalPath": { + "description": "Path to the filesystem where the endpoint data is available to the container.", + "maxLength": 256, + "pattern": ".*", + "type": "string" + }, + "ProbabilityAttribute": { + "description": "Index or JSONpath to locate probabilities", + "maxLength": 256, + "type": "string" + }, + "S3DataDistributionType": { + "description": "Whether input data distributed in Amazon S3 is fully replicated or sharded by an S3 key. Defauts to FullyReplicated", + "enum": [ + "FullyReplicated", + "ShardedByS3Key" + ], + "type": "string" + }, + "S3InputMode": { + "description": "Whether the Pipe or File is used as the input mode for transfering data for the monitoring job. Pipe mode is recommended for large datasets. File mode is useful for small files that fit in memory. Defaults to File.", + "enum": [ + "Pipe", + "File" + ], + "type": "string" + } + }, + "required": [ + "DataCapturedDestinationS3Uri", + "DatasetFormat", + "LocalPath" + ], + "type": "object" + }, + "ClusterConfig": { + "additionalProperties": false, + "description": "Configuration for the cluster used to run model monitoring jobs.", + "properties": { + "InstanceCount": { + "description": "The number of ML compute instances to use in the model monitoring job. For distributed processing jobs, specify a value greater than 1. The default value is 1.", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "InstanceType": { + "description": "The ML compute instance type for the processing job.", + "type": "string" + }, + "VolumeKmsKeyId": { + "description": "The AWS Key Management Service (AWS KMS) key that Amazon SageMaker uses to encrypt data on the storage volume attached to the ML compute instance(s) that run the model monitoring job.", + "maximum": 2048, + "minimum": 1, + "type": "string" + }, + "VolumeSizeInGB": { + "description": "The size of the ML storage volume, in gigabytes, that you want to provision. You must specify sufficient ML storage for your scenario.", + "maximum": 16384, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "InstanceCount", + "InstanceType", + "VolumeSizeInGB" + ], + "type": "object" + }, + "ConstraintsResource": { + "additionalProperties": false, + "description": "The baseline constraints resource for a monitoring job.", + "properties": { + "S3Uri": { + "$ref": "#/definitions/S3Uri", + "description": "The Amazon S3 URI for baseline constraint file in Amazon S3 that the current monitoring job should validated against." + } + }, + "type": "object" + }, + "Csv": { + "description": "The CSV format", + "properties": { + "Header": { + "description": "A boolean flag indicating if given CSV has header", + "type": "boolean" + } + }, + "type": "object" + }, + "DatasetFormat": { + "description": "The dataset format of the data to monitor", + "properties": { + "Csv": { + "$ref": "#/definitions/Csv" + }, + "Json": { + "$ref": "#/definitions/Json" + }, + "Parquet": { + "$ref": "#/definitions/Parquet" + } + }, + "type": "object" + }, + "EndpointInput": { + "additionalProperties": false, + "description": "The endpoint for a monitoring job.", + "properties": { + "EndpointName": { + "$ref": "#/definitions/EndpointName" + }, + "FeaturesAttribute": { + "description": "JSONpath to locate features in JSONlines dataset", + "maxLength": 256, + "type": "string" + }, + "InferenceAttribute": { + "description": "Index or JSONpath to locate predicted label(s)", + "maxLength": 256, + "type": "string" + }, + "LocalPath": { + "description": "Path to the filesystem where the endpoint data is available to the container.", + "maxLength": 256, + "pattern": ".*", + "type": "string" + }, + "ProbabilityAttribute": { + "description": "Index or JSONpath to locate probabilities", + "maxLength": 256, + "type": "string" + }, + "S3DataDistributionType": { + "description": "Whether input data distributed in Amazon S3 is fully replicated or sharded by an S3 key. Defauts to FullyReplicated", + "enum": [ + "FullyReplicated", + "ShardedByS3Key" + ], + "type": "string" + }, + "S3InputMode": { + "description": "Whether the Pipe or File is used as the input mode for transfering data for the monitoring job. Pipe mode is recommended for large datasets. File mode is useful for small files that fit in memory. Defaults to File.", + "enum": [ + "Pipe", + "File" + ], + "type": "string" + } + }, + "required": [ + "EndpointName", + "LocalPath" + ], + "type": "object" + }, + "EndpointName": { + "description": "The name of the endpoint used to run the monitoring job.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*", + "type": "string" + }, + "JobDefinitionName": { + "description": "The name of the job definition.", + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "type": "string" + }, + "Json": { + "description": "The Json format", + "properties": { + "Line": { + "description": "A boolean flag indicating if it is JSON line format", + "type": "boolean" + } + }, + "type": "object" + }, + "ModelExplainabilityAppSpecification": { + "additionalProperties": false, + "description": "Container image configuration object for the monitoring job.", + "properties": { + "ConfigUri": { + "$ref": "#/definitions/S3Uri", + "description": "The S3 URI to an analysis configuration file" + }, + "Environment": { + "additionalProperties": false, + "description": "Sets the environment variables in the Docker container", + "patternProperties": { + "[\\S\\s]*": { + "maxLength": 256, + "type": "string" + }, + "[a-zA-Z_][a-zA-Z0-9_]*": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "ImageUri": { + "description": "The container image to be run by the monitoring job.", + "maxLength": 255, + "pattern": ".*", + "type": "string" + } + }, + "required": [ + "ImageUri", + "ConfigUri" + ], + "type": "object" + }, + "ModelExplainabilityBaselineConfig": { + "additionalProperties": false, + "description": "Baseline configuration used to validate that the data conforms to the specified constraints and statistics.", + "properties": { + "BaseliningJobName": { + "$ref": "#/definitions/ProcessingJobName" + }, + "ConstraintsResource": { + "$ref": "#/definitions/ConstraintsResource" + } + }, + "type": "object" + }, + "ModelExplainabilityJobInput": { + "additionalProperties": false, + "description": "The inputs for a monitoring job.", + "properties": { + "BatchTransformInput": { + "$ref": "#/definitions/BatchTransformInput" + }, + "EndpointInput": { + "$ref": "#/definitions/EndpointInput" + } + }, + "type": "object" + }, + "MonitoringOutput": { + "additionalProperties": false, + "description": "The output object for a monitoring job.", + "properties": { + "S3Output": { + "$ref": "#/definitions/S3Output" + } + }, + "required": [ + "S3Output" + ], + "type": "object" + }, + "MonitoringOutputConfig": { + "additionalProperties": false, + "description": "The output configuration for monitoring jobs.", + "properties": { + "KmsKeyId": { + "description": "The AWS Key Management Service (AWS KMS) key that Amazon SageMaker uses to encrypt the model artifacts at rest using Amazon S3 server-side encryption.", + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "MonitoringOutputs": { + "description": "Monitoring outputs for monitoring jobs. This is where the output of the periodic monitoring jobs is uploaded.", + "items": { + "$ref": "#/definitions/MonitoringOutput" + }, + "maxLength": 1, + "minLength": 1, + "type": "array" + } + }, + "required": [ + "MonitoringOutputs" + ], + "type": "object" + }, + "MonitoringResources": { + "additionalProperties": false, + "description": "Identifies the resources to deploy for a monitoring job.", + "properties": { + "ClusterConfig": { + "$ref": "#/definitions/ClusterConfig" + } + }, + "required": [ + "ClusterConfig" + ], + "type": "object" + }, + "MonitoringTimeOffsetString": { + "description": "The time offsets in ISO duration format", + "maxLength": 15, + "minLength": 1, + "pattern": "^.?P.*", + "type": "string" + }, + "NetworkConfig": { + "additionalProperties": false, + "description": "Networking options for a job, such as network traffic encryption between containers, whether to allow inbound and outbound network calls to and from containers, and the VPC subnets and security groups to use for VPC-enabled jobs.", + "properties": { + "EnableInterContainerTrafficEncryption": { + "description": "Whether to encrypt all communications between distributed processing jobs. Choose True to encrypt communications. Encryption provides greater security for distributed processing jobs, but the processing might take longer.", + "type": "boolean" + }, + "EnableNetworkIsolation": { + "description": "Whether to allow inbound and outbound network calls to and from the containers used for the processing job.", + "type": "boolean" + }, + "VpcConfig": { + "$ref": "#/definitions/VpcConfig" + } + }, + "type": "object" + }, + "Parquet": { + "description": "A flag indicating if the dataset format is Parquet", + "type": "boolean" + }, + "ProcessingJobName": { + "description": "The name of a processing job", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$", + "type": "string" + }, + "S3Output": { + "additionalProperties": false, + "description": "Information about where and how to store the results of a monitoring job.", + "properties": { + "LocalPath": { + "description": "The local path to the Amazon S3 storage location where Amazon SageMaker saves the results of a monitoring job. LocalPath is an absolute path for the output data.", + "maxLength": 256, + "pattern": ".*", + "type": "string" + }, + "S3UploadMode": { + "description": "Whether to upload the results of the monitoring job continuously or after the job completes.", + "enum": [ + "Continuous", + "EndOfJob" + ], + "type": "string" + }, + "S3Uri": { + "description": "A URI that identifies the Amazon S3 storage location where Amazon SageMaker saves the results of a monitoring job.", + "maxLength": 512, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "required": [ + "LocalPath", + "S3Uri" + ], + "type": "object" + }, + "S3Uri": { + "description": "The Amazon S3 URI.", + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + }, + "StoppingCondition": { + "additionalProperties": false, + "description": "Specifies a time limit for how long the monitoring job is allowed to run.", + "properties": { + "MaxRuntimeInSeconds": { + "description": "The maximum runtime allowed in seconds.", + "maximum": 86400, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "MaxRuntimeInSeconds" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "VpcConfig": { + "additionalProperties": false, + "description": "Specifies a VPC that your training jobs and hosted models have access to. Control access to and from your training and model containers by configuring the VPC.", + "properties": { + "SecurityGroupIds": { + "description": "The VPC security group IDs, in the form sg-xxxxxxxx. Specify the security groups for the VPC that is specified in the Subnets field.", + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "Subnets": { + "description": "The ID of the subnets in the VPC to which you want to connect to your monitoring jobs.", + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "SecurityGroupIds", + "Subnets" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SageMaker::ModelExplainabilityJobDefinition", + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateModelExplainabilityJobDefinition", + "sagemaker:DescribeModelExplainabilityJobDefinition", + "iam:PassRole", + "sagemaker:AddTags", + "sagemaker:ListTags" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteModelExplainabilityJobDefinition" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListModelExplainabilityJobDefinitions", + "sagemaker:ListTags" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeModelExplainabilityJobDefinition", + "sagemaker:ListTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/JobDefinitionArn" + ], + "properties": { + "CreationTime": { + "description": "The time at which the job definition was created.", + "type": "string" + }, + "EndpointName": { + "$ref": "#/definitions/EndpointName" + }, + "JobDefinitionArn": { + "description": "The Amazon Resource Name (ARN) of job definition.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "JobDefinitionName": { + "$ref": "#/definitions/JobDefinitionName" + }, + "JobResources": { + "$ref": "#/definitions/MonitoringResources" + }, + "ModelExplainabilityAppSpecification": { + "$ref": "#/definitions/ModelExplainabilityAppSpecification" + }, + "ModelExplainabilityBaselineConfig": { + "$ref": "#/definitions/ModelExplainabilityBaselineConfig" + }, + "ModelExplainabilityJobInput": { + "$ref": "#/definitions/ModelExplainabilityJobInput" + }, + "ModelExplainabilityJobOutputConfig": { + "$ref": "#/definitions/MonitoringOutputConfig" + }, + "NetworkConfig": { + "$ref": "#/definitions/NetworkConfig" + }, + "RoleArn": { + "description": "The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume to perform tasks on your behalf.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "StoppingCondition": { + "$ref": "#/definitions/StoppingCondition" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/CreationTime", + "/properties/JobDefinitionArn" + ], + "required": [ + "ModelExplainabilityAppSpecification", + "ModelExplainabilityJobInput", + "ModelExplainabilityJobOutputConfig", + "JobResources", + "RoleArn" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "sagemaker:AddTags", + "sagemaker:ListTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::SageMaker::ModelExplainabilityJobDefinition", + "writeOnlyProperties": [ + "/properties/EndpointName" + ] +} diff --git a/src/schema/aws-sagemaker-modelpackage.json b/src/schema/aws-sagemaker-modelpackage.json index 2cec381f..4f228c83 100644 --- a/src/schema/aws-sagemaker-modelpackage.json +++ b/src/schema/aws-sagemaker-modelpackage.json @@ -1,1257 +1,1262 @@ -{ - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/ModelCard", - "/properties/SourceUri" - ], - "createOnlyProperties": [ - "/properties/ModelPackageGroupName", - "/properties/ModelPackageDescription", - "/properties/InferenceSpecification", - "/properties/ValidationSpecification", - "/properties/SourceAlgorithmSpecification", - "/properties/MetadataProperties", - "/properties/ModelMetrics", - "/properties/ClientToken", - "/properties/DriftCheckBaselines", - "/properties/Domain", - "/properties/Task", - "/properties/SamplePayloadUrl", - "/properties/SecurityConfig" - ], - "definitions": { - "AdditionalInferenceSpecificationDefinition": { - "additionalProperties": false, - "description": "Additional Inference Specification specifies details about inference jobs that can be run with models based on this model package.AdditionalInferenceSpecifications can be added to existing model packages using AdditionalInferenceSpecificationsToAdd.", - "properties": { - "Containers": { - "description": "The Amazon ECR registry path of the Docker image that contains the inference code.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ModelPackageContainerDefinition" - }, - "maxItems": 15, - "minItems": 1, - "type": "array" - }, - "Description": { - "description": "A description of the additional Inference specification.", - "maxLength": 1024, - "pattern": ".*", - "type": "string" - }, - "Name": { - "description": "A unique name to identify the additional inference specification. The name must be unique within the list of your additional inference specifications for a particular model package.", - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$", - "type": "string" - }, - "SupportedContentTypes": { - "description": "The supported MIME types for the input data.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ContentType" - }, - "type": "array" - }, - "SupportedRealtimeInferenceInstanceTypes": { - "description": "A list of the instance types that are used to generate inferences in real-time", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/InferenceInstanceType" - }, - "type": "array" - }, - "SupportedResponseMIMETypes": { - "description": "The supported MIME types for the output data.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ResponseMIMEType" - }, - "type": "array" - }, - "SupportedTransformInstanceTypes": { - "description": "A list of the instance types on which a transformation job can be run or on which an endpoint can be deployed.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TransformInstanceType" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Containers", - "Name" - ], - "type": "object" - }, - "AdditionalInferenceSpecifications": { - "description": "An array of additional Inference Specification objects.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/AdditionalInferenceSpecificationDefinition" - }, - "maxItems": 15, - "minItems": 1, - "type": "array" - }, - "ApprovalDescription": { - "description": "A description provided for the model approval.", - "maxLength": 1024, - "pattern": ".*", - "type": "string" - }, - "Bias": { - "additionalProperties": false, - "description": "Contains bias metrics for a model.", - "properties": { - "PostTrainingReport": { - "$ref": "#/definitions/MetricsSource" - }, - "PreTrainingReport": { - "$ref": "#/definitions/MetricsSource" - }, - "Report": { - "$ref": "#/definitions/MetricsSource" - } - }, - "type": "object" - }, - "CertifyForMarketplace": { - "description": "Whether to certify the model package for listing on AWS Marketplace.", - "type": "boolean" - }, - "ClientToken": { - "description": "A unique token that guarantees that the call to this API is idempotent.", - "maxLength": 36, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "ContentType": { - "description": "The supported MIME type for the input data.", - "maxLength": 256, - "pattern": ".*", - "type": "string" - }, - "CreationTime": { - "description": "The time at which the model package was created.", - "type": "string" - }, - "CustomerMetadataProperties": { - "additionalProperties": false, - "description": "The metadata properties associated with the model package versions.", - "maxProperties": 50, - "minProperties": 1, - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]*)${1,128}": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "^([\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]*)${1,256}": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "DataSource": { - "additionalProperties": false, - "description": "Describes the input source of a transform job and the way the transform job consumes it.", - "properties": { - "S3DataSource": { - "$ref": "#/definitions/S3DataSource" - } - }, - "required": [ - "S3DataSource" - ], - "type": "object" - }, - "Domain": { - "description": "The machine learning domain of the model package you specified.", - "type": "string" - }, - "DriftCheckBaselines": { - "additionalProperties": false, - "description": "Represents the drift check baselines that can be used when the model monitor is set using the model package.", - "properties": { - "Bias": { - "$ref": "#/definitions/DriftCheckBias" - }, - "Explainability": { - "$ref": "#/definitions/DriftCheckExplainability" - }, - "ModelDataQuality": { - "$ref": "#/definitions/DriftCheckModelDataQuality" - }, - "ModelQuality": { - "$ref": "#/definitions/DriftCheckModelQuality" - } - }, - "type": "object" - }, - "DriftCheckBias": { - "additionalProperties": false, - "description": "Represents the drift check bias baselines that can be used when the model monitor is set using the model package.", - "properties": { - "ConfigFile": { - "$ref": "#/definitions/FileSource" - }, - "PostTrainingConstraints": { - "$ref": "#/definitions/MetricsSource" - }, - "PreTrainingConstraints": { - "$ref": "#/definitions/MetricsSource" - } - }, - "type": "object" - }, - "DriftCheckExplainability": { - "additionalProperties": false, - "description": "Contains explainability metrics for a model.", - "properties": { - "ConfigFile": { - "$ref": "#/definitions/FileSource" - }, - "Constraints": { - "$ref": "#/definitions/MetricsSource" - } - }, - "type": "object" - }, - "DriftCheckModelDataQuality": { - "additionalProperties": false, - "description": "Represents the drift check data quality baselines that can be used when the model monitor is set using the model package.", - "properties": { - "Constraints": { - "$ref": "#/definitions/MetricsSource" - }, - "Statistics": { - "$ref": "#/definitions/MetricsSource" - } - }, - "type": "object" - }, - "DriftCheckModelQuality": { - "additionalProperties": false, - "description": "Represents the drift check model quality baselines that can be used when the model monitor is set using the model package.", - "properties": { - "Constraints": { - "$ref": "#/definitions/MetricsSource" - }, - "Statistics": { - "$ref": "#/definitions/MetricsSource" - } - }, - "type": "object" - }, - "Environment": { - "additionalProperties": false, - "description": "Sets the environment variables in the Docker container", - "maxProperties": 16, - "patternProperties": { - "[\\S\\s]*": { - "maxLength": 1024, - "type": "string" - }, - "[a-zA-Z_][a-zA-Z0-9_]*": { - "maxLength": 1024, - "type": "string" - } - }, - "type": "object" - }, - "Explainability": { - "additionalProperties": false, - "description": "Contains explainability metrics for a model.", - "properties": { - "Report": { - "$ref": "#/definitions/MetricsSource" - } - }, - "type": "object" - }, - "FileSource": { - "additionalProperties": false, - "description": "Represents a File Source Object.", - "properties": { - "ContentDigest": { - "description": "The digest of the file source.", - "maxLength": 72, - "pattern": "^[Ss][Hh][Aa]256:[0-9a-fA-F]{64}$", - "type": "string" - }, - "ContentType": { - "description": "The type of content stored in the file source.", - "maxLength": 256, - "pattern": ".*", - "type": "string" - }, - "S3Uri": { - "description": "The Amazon S3 URI for the file source.", - "maxLength": 1024, - "pattern": "^(https|s3)://([^/]+)/?(.*)$", - "type": "string" - } - }, - "required": [ - "S3Uri" - ], - "type": "object" - }, - "InferenceInstanceType": { - "description": "Instance type that is used to generate inferences in real-time", - "type": "string" - }, - "InferenceSpecification": { - "additionalProperties": false, - "description": "Details about inference jobs that can be run with models based on this model package.", - "properties": { - "Containers": { - "description": "The Amazon ECR registry path of the Docker image that contains the inference code.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ModelPackageContainerDefinition" - }, - "maxItems": 15, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "SupportedContentTypes": { - "description": "The supported MIME types for the input data.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ContentType" - }, - "type": "array" - }, - "SupportedRealtimeInferenceInstanceTypes": { - "description": "A list of the instance types that are used to generate inferences in real-time", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/InferenceInstanceType" - }, - "type": "array" - }, - "SupportedResponseMIMETypes": { - "description": "The supported MIME types for the output data.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ResponseMIMEType" - }, - "type": "array" - }, - "SupportedTransformInstanceTypes": { - "description": "A list of the instance types on which a transformation job can be run or on which an endpoint can be deployed.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TransformInstanceType" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Containers", - "SupportedContentTypes", - "SupportedResponseMIMETypes" - ], - "type": "object" - }, - "LastModifiedTime": { - "description": "The time at which the model package was last modified.", - "type": "string" - }, - "MetadataProperties": { - "additionalProperties": false, - "description": "Metadata properties of the tracking entity, trial, or trial component.", - "properties": { - "CommitId": { - "description": "The commit ID.", - "maxLength": 1024, - "pattern": ".*", - "type": "string" - }, - "GeneratedBy": { - "description": "The entity this entity was generated by.", - "maxLength": 1024, - "pattern": ".*", - "type": "string" - }, - "ProjectId": { - "description": "The project ID metadata.", - "maxLength": 1024, - "pattern": ".*", - "type": "string" - }, - "Repository": { - "description": "The repository metadata.", - "maxLength": 1024, - "pattern": ".*", - "type": "string" - } - }, - "type": "object" - }, - "MetricsSource": { - "additionalProperties": false, - "description": "Represents a Metric Source Object.", - "properties": { - "ContentDigest": { - "description": "The digest of the metric source.", - "maxLength": 72, - "pattern": "^[Ss][Hh][Aa]256:[0-9a-fA-F]{64}$", - "type": "string" - }, - "ContentType": { - "description": "The type of content stored in the metric source.", - "maxLength": 256, - "pattern": ".*", - "type": "string" - }, - "S3Uri": { - "description": "The Amazon S3 URI for the metric source.", - "maxLength": 1024, - "pattern": "^(https|s3)://([^/]+)/?(.*)$", - "type": "string" - } - }, - "required": [ - "ContentType", - "S3Uri" - ], - "type": "object" - }, - "ModelAccessConfig": { - "additionalProperties": false, - "description": "Specifies the access configuration file for the ML model.", - "properties": { - "AcceptEula": { - "description": "Specifies agreement to the model end-user license agreement (EULA).", - "type": "boolean" - } - }, - "required": [ - "AcceptEula" - ], - "type": "object" - }, - "ModelApprovalStatus": { - "description": "The approval status of the model package.", - "enum": [ - "Approved", - "Rejected", - "PendingManualApproval" - ], - "type": "string" - }, - "ModelCard": { - "additionalProperties": false, - "description": "The model card associated with the model package.", - "properties": { - "ModelCardContent": { - "description": "The content of the model card.", - "maxLength": 100000, - "minLength": 0, - "pattern": ".*", - "type": "string" - }, - "ModelCardStatus": { - "description": "The approval status of the model card within your organization.", - "enum": [ - "Draft", - "PendingReview", - "Approved", - "Archived" - ], - "type": "string" - } - }, - "required": [ - "ModelCardContent", - "ModelCardStatus" - ], - "type": "object" - }, - "ModelDataQuality": { - "additionalProperties": false, - "description": "Metrics that measure the quality of the input data for a model.", - "properties": { - "Constraints": { - "$ref": "#/definitions/MetricsSource" - }, - "Statistics": { - "$ref": "#/definitions/MetricsSource" - } - }, - "type": "object" - }, - "ModelDataSource": { - "additionalProperties": false, - "description": "Specifies the location of ML model data to deploy during endpoint creation.", - "properties": { - "S3DataSource": { - "$ref": "#/definitions/S3ModelDataSource" - } - }, - "type": "object" - }, - "ModelMetrics": { - "additionalProperties": false, - "description": "A structure that contains model metrics reports.", - "properties": { - "Bias": { - "$ref": "#/definitions/Bias" - }, - "Explainability": { - "$ref": "#/definitions/Explainability" - }, - "ModelDataQuality": { - "$ref": "#/definitions/ModelDataQuality" - }, - "ModelQuality": { - "$ref": "#/definitions/ModelQuality" - } - }, - "type": "object" - }, - "ModelPackageArn": { - "description": "The Amazon Resource Name (ARN) of the model package group.", - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:aws(-cn|-us-gov)?:sagemaker:[a-z0-9\\-]{9,16}:[0-9]{12}:model-package/[\\S]{1,2048}$", - "type": "string" - }, - "ModelPackageContainerDefinition": { - "additionalProperties": false, - "description": "Describes the Docker container for the model package.", - "properties": { - "ContainerHostname": { - "description": "The DNS host name for the Docker container.", - "maxLength": 63, - "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", - "type": "string" - }, - "Environment": { - "$ref": "#/definitions/Environment" - }, - "Framework": { - "description": "The machine learning framework of the model package container image.", - "type": "string" - }, - "FrameworkVersion": { - "description": "The framework version of the Model Package Container Image.", - "maxLength": 10, - "minLength": 3, - "pattern": "[0-9]\\.[A-Za-z0-9.]+", - "type": "string" - }, - "Image": { - "description": "The Amazon EC2 Container Registry (Amazon ECR) path where inference code is stored.", - "maxLength": 255, - "minLength": 1, - "pattern": "[\\S]{1,255}", - "type": "string" - }, - "ImageDigest": { - "description": "An MD5 hash of the training algorithm that identifies the Docker image used for training.", - "maxLength": 72, - "pattern": "^[Ss][Hh][Aa]256:[0-9a-fA-F]{64}$", - "type": "string" - }, - "ModelDataSource": { - "$ref": "#/definitions/ModelDataSource" - }, - "ModelDataUrl": { - "description": "A structure with Model Input details.", - "maxLength": 1024, - "pattern": "^(https|s3)://([^/]+)/?(.*)$", - "type": "string" - }, - "ModelInput": { - "additionalProperties": false, - "properties": { - "DataInputConfig": { - "description": "The input configuration object for the model.", - "maxLength": 1024, - "minLength": 1, - "pattern": "[\\S\\s]+", - "type": "string" - } - }, - "required": [ - "DataInputConfig" - ], - "type": "object" - }, - "NearestModelName": { - "description": "The name of a pre-trained machine learning benchmarked by Amazon SageMaker Inference Recommender model that matches your model.", - "type": "string" - } - }, - "required": [ - "Image" - ], - "type": "object" - }, - "ModelPackageDescription": { - "description": "The description of the model package.", - "maxLength": 1024, - "pattern": "[\\p{L}\\p{M}\\p{Z}\\p{S}\\p{N}\\p{P}]*", - "type": "string" - }, - "ModelPackageGroupName": { - "description": "The name of the model package group.", - "maxLength": 170, - "minLength": 1, - "pattern": "(arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:[a-z\\-]*\\/)?([a-zA-Z0-9]([a-zA-Z0-9-]){0,62})(? ? @ [ \\ ] ^ _ ` { | } ~``. If you don't include this switch, the password can contain punctuation.", - "type": "boolean" - }, - "ExcludeUppercase": { - "description": "Specifies whether to exclude uppercase letters from the password. If you don't include this switch, the password can contain uppercase letters.", - "type": "boolean" - }, - "GenerateStringKey": { - "description": "The JSON key name for the key/value pair, where the value is the generated password. This pair is added to the JSON structure specified by the ``SecretStringTemplate`` parameter. If you specify this parameter, then you must also specify ``SecretStringTemplate``.", - "type": "string" - }, - "IncludeSpace": { - "description": "Specifies whether to include the space character. If you include this switch, the password can contain space characters.", - "type": "boolean" - }, - "PasswordLength": { - "description": "The length of the password. If you don't include this parameter, the default length is 32 characters.", - "type": "integer" - }, - "RequireEachIncludedType": { - "description": "Specifies whether to include at least one upper and lowercase letter, one number, and one punctuation. If you don't include this switch, the password contains at least one of every character type.", - "type": "boolean" - }, - "SecretStringTemplate": { - "description": "A template that the generated string must match. When you make a change to this property, a new secret version is created.", - "type": "string" - } - }, - "type": "object" - }, - "ReplicaRegion": { - "additionalProperties": false, - "description": "Specifies a ``Region`` and the ``KmsKeyId`` for a replica secret.", - "properties": { - "KmsKeyId": { - "description": "The ARN, key ID, or alias of the KMS key to encrypt the secret. If you don't include this field, Secrets Manager uses ``aws/secretsmanager``.", - "type": "string" - }, - "Region": { - "description": "A string that represents a ``Region``, for example \"us-east-1\".", - "type": "string" - } - }, - "required": [ - "Region" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A structure that contains information about a tag.", - "properties": { - "Key": { - "description": "The key identifier, or name, of the tag.", - "type": "string" - }, - "Value": { - "description": "The string value associated with the key of the tag.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Creates a new secret. A *secret* can be a password, a set of credentials such as a user name and password, an OAuth token, or other secret information that you store in an encrypted form in Secrets Manager.\n For RDS master user credentials, see [AWS::RDS::DBCluster MasterUserSecret](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-masterusersecret.html).\n For RS admin user credentials, see [AWS::Redshift::Cluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html).\n To retrieve a secret in a CFNshort template, use a *dynamic reference*. For more information, see [Retrieve a secret in an resource](https://docs.aws.amazon.com/secretsmanager/latest/userguide/cfn-example_reference-secret.html).\n For information about creating a secret in the console, see [Create a secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html). For information about creating a secret using the CLI or SDK, see [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html).\n For information about retrieving a secret in code, see [Retrieve secrets from Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets.html).", - "handlers": { - "create": { - "permissions": [ - "secretsmanager:DescribeSecret", - "secretsmanager:GetRandomPassword", - "secretsmanager:CreateSecret", - "secretsmanager:TagResource", - "secretsmanager:ReplicateSecretToRegions" - ] - }, - "delete": { - "permissions": [ - "secretsmanager:DeleteSecret", - "secretsmanager:DescribeSecret", - "secretsmanager:RemoveRegionsFromReplication" - ] - }, - "list": { - "permissions": [ - "secretsmanager:ListSecrets" - ] - }, - "read": { - "permissions": [ - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue" - ] - }, - "update": { - "permissions": [ - "secretsmanager:UpdateSecret", - "secretsmanager:TagResource", - "secretsmanager:UntagResource", - "secretsmanager:GetRandomPassword", - "secretsmanager:GetSecretValue", - "secretsmanager:ReplicateSecretToRegions", - "secretsmanager:RemoveRegionsFromReplication" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "description": "The description of the secret.", - "type": "string" - }, - "GenerateSecretString": { - "$ref": "#/definitions/GenerateSecretString", - "description": "A structure that specifies how to generate a password to encrypt and store in the secret. To include a specific string in the secret, use ``SecretString`` instead. If you omit both ``GenerateSecretString`` and ``SecretString``, you create an empty secret. When you make a change to this property, a new secret version is created.\n We recommend that you specify the maximum length and include every character type that the system you are generating a password for can support." - }, - "Id": { - "description": "", - "type": "string" - }, - "KmsKeyId": { - "description": "The ARN, key ID, or alias of the KMS key that Secrets Manager uses to encrypt the secret value in the secret. An alias is always prefixed by ``alias/``, for example ``alias/aws/secretsmanager``. For more information, see [About aliases](https://docs.aws.amazon.com/kms/latest/developerguide/alias-about.html).\n To use a KMS key in a different account, use the key ARN or the alias ARN.\n If you don't specify this value, then Secrets Manager uses the key ``aws/secretsmanager``. If that key doesn't yet exist, then Secrets Manager creates it for you automatically the first time it encrypts the secret value.\n If the secret is in a different AWS account from the credentials calling the API, then you can't use ``aws/secretsmanager`` to encrypt the secret, and you must create and use a customer managed KMS key.", - "type": "string" - }, - "Name": { - "description": "The name of the new secret.\n The secret name can contain ASCII letters, numbers, and the following characters: /_+=.@-\n Do not end your secret name with a hyphen followed by six characters. If you do so, you risk confusion and unexpected results when searching for a secret by partial ARN. Secrets Manager automatically adds a hyphen and six random characters after the secret name at the end of the ARN.", - "type": "string" - }, - "ReplicaRegions": { - "description": "A custom type that specifies a ``Region`` and the ``KmsKeyId`` for a replica secret.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ReplicaRegion" - }, - "type": "array", - "uniqueItems": false - }, - "SecretString": { - "description": "The text to encrypt and store in the secret. We recommend you use a JSON structure of key/value pairs for your secret value. To generate a random password, use ``GenerateSecretString`` instead. If you omit both ``GenerateSecretString`` and ``SecretString``, you create an empty secret. When you make a change to this property, a new secret version is created.", - "type": "string" - }, - "Tags": { - "description": "A list of tags to attach to the secret. Each tag is a key and value pair of strings in a JSON text string, for example:\n ``[{\"Key\":\"CostCenter\",\"Value\":\"12345\"},{\"Key\":\"environment\",\"Value\":\"production\"}]`` \n Secrets Manager tag key names are case sensitive. A tag with the key \"ABC\" is a different tag from one with key \"abc\".\n Stack-level tags, tags you apply to the CloudFormation stack, are also attached to the secret. \n If you check tags in permissions policies as part of your security strategy, then adding or removing a tag can change permissions. If the completion of this operation would result in you losing your permissions for this secret, then Secrets Manager blocks the operation and returns an ``Access Denied`` error. For more information, see [Control access to secrets using tags](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html#tag-secrets-abac) and [Limit access to identities with tags that match secrets' tags](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html#auth-and-access_tags2).\n For information about how to format a JSON parameter for the various command line tool environments, see [Using JSON for Parameters](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html#cli-using-param-json). If your command-line tool or SDK requires quotation marks around the parameter, you should use single quotes to avoid confusion with the double quotes required in the JSON text.\n The following restrictions apply to tags:\n + Maximum number of tags per secret: 50\n + Maximum key length: 127 Unicode characters in UTF-8\n + Maximum value length: 255 Unicode characters in UTF-8\n + Tag keys and values are case sensitive.\n + Do not use the ``aws:`` prefix in your tag names or values because AWS reserves it for AWS use. You can't edit or delete tag names or values with this prefix. Tags with this prefix do not count against your tags per secret limit.\n + If you use your tagging schema across multiple services and resources, other services might have restrictions on allowed characters. Generally allowed characters: letters, spaces, and numbers representable in UTF-8, plus the following special characters: + - = . _ : / @.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-secretsmanager.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "secretsmanager:UntagResource", - "secretsmanager:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SecretsManager::Secret", - "writeOnlyProperties": [ - "/properties/SecretString", - "/properties/GenerateSecretString" - ] -} +{ + "$comment": "If you make any changes to this schema, be sure to also modify the regional schema template that generates schemas for contract tests: secret/templates/{region.region_name}_schema.json.erb", + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "GenerateSecretString": { + "additionalProperties": false, + "description": "Generates a random password. We recommend that you specify the maximum length and include every character type that the system you are generating a password for can support.\n *Required permissions:* ``secretsmanager:GetRandomPassword``. For more information, see [IAM policy actions for Secrets Manager](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssecretsmanager.html#awssecretsmanager-actions-as-permissions) and [Authentication and access control in Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html).", + "properties": { + "ExcludeCharacters": { + "description": "A string of the characters that you don't want in the password.", + "type": "string" + }, + "ExcludeLowercase": { + "description": "Specifies whether to exclude lowercase letters from the password. If you don't include this switch, the password can contain lowercase letters.", + "type": "boolean" + }, + "ExcludeNumbers": { + "description": "Specifies whether to exclude numbers from the password. If you don't include this switch, the password can contain numbers.", + "type": "boolean" + }, + "ExcludePunctuation": { + "description": "Specifies whether to exclude the following punctuation characters from the password: ``! \" # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \\ ] ^ _ ` { | } ~``. If you don't include this switch, the password can contain punctuation.", + "type": "boolean" + }, + "ExcludeUppercase": { + "description": "Specifies whether to exclude uppercase letters from the password. If you don't include this switch, the password can contain uppercase letters.", + "type": "boolean" + }, + "GenerateStringKey": { + "description": "The JSON key name for the key/value pair, where the value is the generated password. This pair is added to the JSON structure specified by the ``SecretStringTemplate`` parameter. If you specify this parameter, then you must also specify ``SecretStringTemplate``.", + "type": "string" + }, + "IncludeSpace": { + "description": "Specifies whether to include the space character. If you include this switch, the password can contain space characters.", + "type": "boolean" + }, + "PasswordLength": { + "description": "The length of the password. If you don't include this parameter, the default length is 32 characters.", + "type": "integer" + }, + "RequireEachIncludedType": { + "description": "Specifies whether to include at least one upper and lowercase letter, one number, and one punctuation. If you don't include this switch, the password contains at least one of every character type.", + "type": "boolean" + }, + "SecretStringTemplate": { + "description": "A template that the generated string must match. When you make a change to this property, a new secret version is created.", + "type": "string" + } + }, + "type": "object" + }, + "ReplicaRegion": { + "additionalProperties": false, + "description": "Specifies a ``Region`` and the ``KmsKeyId`` for a replica secret.", + "properties": { + "KmsKeyId": { + "description": "The ARN, key ID, or alias of the KMS key to encrypt the secret. If you don't include this field, Secrets Manager uses ``aws/secretsmanager``.", + "type": "string" + }, + "Region": { + "description": "A string that represents a ``Region``, for example \"us-east-1\".", + "type": "string" + } + }, + "required": [ + "Region" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A structure that contains information about a tag.", + "properties": { + "Key": { + "description": "The key identifier, or name, of the tag.", + "type": "string" + }, + "Value": { + "description": "The string value associated with the key of the tag.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Creates a new secret. A *secret* can be a password, a set of credentials such as a user name and password, an OAuth token, or other secret information that you store in an encrypted form in Secrets Manager.\n For RDS master user credentials, see [AWS::RDS::DBCluster MasterUserSecret](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-masterusersecret.html).\n For RS admin user credentials, see [AWS::Redshift::Cluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html).\n To retrieve a secret in a CFNshort template, use a *dynamic reference*. For more information, see [Retrieve a secret in an resource](https://docs.aws.amazon.com/secretsmanager/latest/userguide/cfn-example_reference-secret.html).\n For information about creating a secret in the console, see [Create a secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html). For information about creating a secret using the CLI or SDK, see [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html).\n For information about retrieving a secret in code, see [Retrieve secrets from Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets.html).", + "handlers": { + "create": { + "permissions": [ + "secretsmanager:DescribeSecret", + "secretsmanager:GetRandomPassword", + "secretsmanager:CreateSecret", + "secretsmanager:TagResource", + "secretsmanager:ReplicateSecretToRegions" + ] + }, + "delete": { + "permissions": [ + "secretsmanager:DeleteSecret", + "secretsmanager:DescribeSecret", + "secretsmanager:RemoveRegionsFromReplication" + ] + }, + "list": { + "permissions": [ + "secretsmanager:ListSecrets" + ] + }, + "read": { + "permissions": [ + "secretsmanager:DescribeSecret", + "secretsmanager:GetSecretValue" + ] + }, + "update": { + "permissions": [ + "secretsmanager:UpdateSecret", + "secretsmanager:TagResource", + "secretsmanager:UntagResource", + "secretsmanager:GetRandomPassword", + "secretsmanager:GetSecretValue", + "secretsmanager:ReplicateSecretToRegions", + "secretsmanager:RemoveRegionsFromReplication" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "description": "The description of the secret.", + "type": "string" + }, + "GenerateSecretString": { + "$ref": "#/definitions/GenerateSecretString", + "description": "A structure that specifies how to generate a password to encrypt and store in the secret. To include a specific string in the secret, use ``SecretString`` instead. If you omit both ``GenerateSecretString`` and ``SecretString``, you create an empty secret. When you make a change to this property, a new secret version is created.\n We recommend that you specify the maximum length and include every character type that the system you are generating a password for can support." + }, + "Id": { + "description": "", + "type": "string" + }, + "KmsKeyId": { + "description": "The ARN, key ID, or alias of the KMS key that Secrets Manager uses to encrypt the secret value in the secret. An alias is always prefixed by ``alias/``, for example ``alias/aws/secretsmanager``. For more information, see [About aliases](https://docs.aws.amazon.com/kms/latest/developerguide/alias-about.html).\n To use a KMS key in a different account, use the key ARN or the alias ARN.\n If you don't specify this value, then Secrets Manager uses the key ``aws/secretsmanager``. If that key doesn't yet exist, then Secrets Manager creates it for you automatically the first time it encrypts the secret value.\n If the secret is in a different AWS account from the credentials calling the API, then you can't use ``aws/secretsmanager`` to encrypt the secret, and you must create and use a customer managed KMS key.", + "type": "string" + }, + "Name": { + "description": "The name of the new secret.\n The secret name can contain ASCII letters, numbers, and the following characters: /_+=.@-\n Do not end your secret name with a hyphen followed by six characters. If you do so, you risk confusion and unexpected results when searching for a secret by partial ARN. Secrets Manager automatically adds a hyphen and six random characters after the secret name at the end of the ARN.", + "type": "string" + }, + "ReplicaRegions": { + "description": "A custom type that specifies a ``Region`` and the ``KmsKeyId`` for a replica secret.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicaRegion" + }, + "type": "array", + "uniqueItems": false + }, + "SecretString": { + "description": "The text to encrypt and store in the secret. We recommend you use a JSON structure of key/value pairs for your secret value. To generate a random password, use ``GenerateSecretString`` instead. If you omit both ``GenerateSecretString`` and ``SecretString``, you create an empty secret. When you make a change to this property, a new secret version is created.", + "type": "string" + }, + "Tags": { + "description": "A list of tags to attach to the secret. Each tag is a key and value pair of strings in a JSON text string, for example:\n ``[{\"Key\":\"CostCenter\",\"Value\":\"12345\"},{\"Key\":\"environment\",\"Value\":\"production\"}]`` \n Secrets Manager tag key names are case sensitive. A tag with the key \"ABC\" is a different tag from one with key \"abc\".\n Stack-level tags, tags you apply to the CloudFormation stack, are also attached to the secret. \n If you check tags in permissions policies as part of your security strategy, then adding or removing a tag can change permissions. If the completion of this operation would result in you losing your permissions for this secret, then Secrets Manager blocks the operation and returns an ``Access Denied`` error. For more information, see [Control access to secrets using tags](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html#tag-secrets-abac) and [Limit access to identities with tags that match secrets' tags](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html#auth-and-access_tags2).\n For information about how to format a JSON parameter for the various command line tool environments, see [Using JSON for Parameters](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html#cli-using-param-json). If your command-line tool or SDK requires quotation marks around the parameter, you should use single quotes to avoid confusion with the double quotes required in the JSON text.\n The following restrictions apply to tags:\n + Maximum number of tags per secret: 50\n + Maximum key length: 127 Unicode characters in UTF-8\n + Maximum value length: 255 Unicode characters in UTF-8\n + Tag keys and values are case sensitive.\n + Do not use the ``aws:`` prefix in your tag names or values because AWS reserves it for AWS use. You can't edit or delete tag names or values with this prefix. Tags with this prefix do not count against your tags per secret limit.\n + If you use your tagging schema across multiple services and resources, other services might have restrictions on allowed characters. Generally allowed characters: letters, spaces, and numbers representable in UTF-8, plus the following special characters: + - = . _ : / @.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-secretsmanager.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "secretsmanager:UntagResource", + "secretsmanager:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SecretsManager::Secret", + "writeOnlyProperties": [ + "/properties/SecretString", + "/properties/GenerateSecretString" + ] +} diff --git a/src/schema/aws-secretsmanager-secrettargetattachment.json b/src/schema/aws-secretsmanager-secrettargetattachment.json index c853e957..52f5f7e7 100644 --- a/src/schema/aws-secretsmanager-secrettargetattachment.json +++ b/src/schema/aws-secretsmanager-secrettargetattachment.json @@ -1,80 +1,80 @@ -{ - "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/blob/master/src/main/resources/schema/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SecretId" - ], - "description": "Resource Type definition for AWS::SecretsManager::SecretTargetAttachment", - "handlers": { - "create": { - "permissions": [ - "secretsmanager:GetSecretValue", - "secretsmanager:PutSecretValue", - "rds:DescribeDBInstances", - "redshift:DescribeClusters", - "rds:DescribeDBClusters", - "docdb-elastic:GetCluster", - "redshift-serverless:ListWorkgroups", - "redshift-serverless:GetNamespace" - ] - }, - "delete": { - "permissions": [ - "secretsmanager:GetSecretValue", - "secretsmanager:PutSecretValue" - ] - }, - "list": { - "permissions": [ - "secretsmanager:GetSecretValue", - "secretsmanager:ListSecrets" - ] - }, - "read": { - "permissions": [ - "secretsmanager:GetSecretValue" - ] - }, - "update": { - "permissions": [ - "secretsmanager:GetSecretValue", - "secretsmanager:PutSecretValue", - "rds:DescribeDBInstances", - "redshift:DescribeClusters", - "rds:DescribeDBClusters", - "docdb-elastic:GetCluster", - "redshift-serverless:ListWorkgroups", - "redshift-serverless:GetNamespace" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "SecretId": { - "type": "string" - }, - "TargetId": { - "type": "string" - }, - "TargetType": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "TargetType", - "TargetId", - "SecretId" - ], - "tagging": { - "taggable": false - }, - "typeName": "AWS::SecretsManager::SecretTargetAttachment" -} +{ + "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/blob/master/src/main/resources/schema/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SecretId" + ], + "description": "Resource Type definition for AWS::SecretsManager::SecretTargetAttachment", + "handlers": { + "create": { + "permissions": [ + "secretsmanager:GetSecretValue", + "secretsmanager:PutSecretValue", + "rds:DescribeDBInstances", + "redshift:DescribeClusters", + "rds:DescribeDBClusters", + "docdb-elastic:GetCluster", + "redshift-serverless:ListWorkgroups", + "redshift-serverless:GetNamespace" + ] + }, + "delete": { + "permissions": [ + "secretsmanager:GetSecretValue", + "secretsmanager:PutSecretValue" + ] + }, + "list": { + "permissions": [ + "secretsmanager:GetSecretValue", + "secretsmanager:ListSecrets" + ] + }, + "read": { + "permissions": [ + "secretsmanager:GetSecretValue" + ] + }, + "update": { + "permissions": [ + "secretsmanager:GetSecretValue", + "secretsmanager:PutSecretValue", + "rds:DescribeDBInstances", + "redshift:DescribeClusters", + "rds:DescribeDBClusters", + "docdb-elastic:GetCluster", + "redshift-serverless:ListWorkgroups", + "redshift-serverless:GetNamespace" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "SecretId": { + "type": "string" + }, + "TargetId": { + "type": "string" + }, + "TargetType": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TargetType", + "TargetId", + "SecretId" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::SecretsManager::SecretTargetAttachment" +} diff --git a/src/schema/aws-securityhub-automationrule.json b/src/schema/aws-securityhub-automationrule.json index 7fc8d935..6693a45d 100644 --- a/src/schema/aws-securityhub-automationrule.json +++ b/src/schema/aws-securityhub-automationrule.json @@ -1,836 +1,841 @@ -{ - "additionalProperties": false, - "definitions": { - "AutomationRulesAction": { - "description": "One or more actions that ASHlong takes when a finding matches the defined criteria of a rule.", - "properties": { - "FindingFieldsUpdate": { - "$ref": "#/definitions/AutomationRulesFindingFieldsUpdate", - "description": "Specifies that the automation rule action is an update to a finding field." - }, - "Type": { - "description": "Specifies the type of action that Security Hub takes when a finding matches the defined criteria of a rule.", - "enum": [ - "FINDING_FIELDS_UPDATE" - ], - "type": "string" - } - }, - "required": [ - "Type", - "FindingFieldsUpdate" - ], - "type": "object" - }, - "AutomationRulesFindingFieldsUpdate": { - "description": "Identifies the finding fields that the automation rule action updates when a finding matches the defined criteria.", - "properties": { - "Confidence": { - "$ref": "#/definitions/int100", - "description": "The rule action updates the ``Confidence`` field of a finding." - }, - "Criticality": { - "$ref": "#/definitions/int100", - "description": "The rule action updates the ``Criticality`` field of a finding." - }, - "Note": { - "$ref": "#/definitions/NoteUpdate", - "description": "The rule action will update the ``Note`` field of a finding.", - "type": "object" - }, - "RelatedFindings": { - "description": "The rule action will update the ``RelatedFindings`` field of a finding.", - "items": { - "$ref": "#/definitions/RelatedFinding" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "Severity": { - "$ref": "#/definitions/SeverityUpdate", - "description": "The rule action will update the ``Severity`` field of a finding.", - "type": "object" - }, - "Types": { - "description": "The rule action updates the ``Types`` field of a finding.", - "items": { - "pattern": "^([^/]+)(/[^/]+){0,2}$", - "type": "string" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UserDefinedFields": { - "$ref": "#/definitions/map", - "description": "The rule action updates the ``UserDefinedFields`` field of a finding." - }, - "VerificationState": { - "description": "The rule action updates the ``VerificationState`` field of a finding.", - "enum": [ - "UNKNOWN", - "TRUE_POSITIVE", - "FALSE_POSITIVE", - "BENIGN_POSITIVE" - ], - "type": "string" - }, - "Workflow": { - "$ref": "#/definitions/WorkflowUpdate", - "description": "The rule action will update the ``Workflow`` field of a finding.", - "type": "object" - } - }, - "type": "object" - }, - "AutomationRulesFindingFilters": { - "additionalProperties": false, - "description": "The criteria that determine which findings a rule applies to.", - "properties": { - "AwsAccountId": { - "description": "The AWS-account ID in which a finding was generated.\n Array Members: Minimum number of 1 item. Maximum number of 100 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 100, - "type": "array" - }, - "CompanyName": { - "description": "The name of the company for the product that generated the finding. For control-based findings, the company is AWS. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "ComplianceAssociatedStandardsId": { - "description": "The unique identifier of a standard in which a control is enabled. This field consists of the resource portion of the Amazon Resource Name (ARN) returned for a standard in the [DescribeStandards](https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_DescribeStandards.html) API response.\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "ComplianceSecurityControlId": { - "description": "The security control ID for which a finding was generated. Security control IDs are the same across standards.\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "ComplianceStatus": { - "description": "The result of a security check. This field is only used for findings generated from controls. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "Confidence": { - "description": "The likelihood that a finding accurately identifies the behavior or issue that it was intended to identify. ``Confidence`` is scored on a 0\u2013100 basis using a ratio scale. A value of ``0`` means 0 percent confidence, and a value of ``100`` means 100 percent confidence. For example, a data exfiltration detection based on a statistical deviation of network traffic has low confidence because an actual exfiltration hasn't been verified. For more information, see [Confidence](https://docs.aws.amazon.com/securityhub/latest/userguide/asff-top-level-attributes.html#asff-confidence) in the *User Guide*.\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "maxItems": 20, - "type": "array" - }, - "CreatedAt": { - "description": "A timestamp that indicates when this finding record was created. \n This field accepts only the specified formats. Timestamps can end with ``Z`` or ``(\"+\" / \"-\") time-hour [\":\" time-minute]``. The time-secfrac after seconds is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here are valid timestamp formats with examples:\n + ``YYYY-MM-DDTHH:MM:SSZ`` (for example, ``2019-01-31T23:00:00Z``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ`` (for example, ``2019-01-31T23:00:00.123456789Z``)\n + ``YYYY-MM-DDTHH:MM:SS+HH:MM`` (for example, ``2024-01-04T15:25:10+17:59``)\n + ``YYYY-MM-DDTHH:MM:SS-HHMM`` (for example, ``2024-01-04T15:25:10-1759``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM`` (for example, ``2024-01-04T15:25:10.123456789+17:59``)\n \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/DateFilter" - }, - "maxItems": 20, - "type": "array" - }, - "Criticality": { - "description": "The level of importance that is assigned to the resources that are associated with a finding. ``Criticality`` is scored on a 0\u2013100 basis, using a ratio scale that supports only full integers. A score of ``0`` means that the underlying resources have no criticality, and a score of ``100`` is reserved for the most critical resources. For more information, see [Criticality](https://docs.aws.amazon.com/securityhub/latest/userguide/asff-top-level-attributes.html#asff-criticality) in the *User Guide*.\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "maxItems": 20, - "type": "array" - }, - "Description": { - "description": "A finding's description. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "FirstObservedAt": { - "description": "A timestamp that indicates when the potential security issue captured by a finding was first observed by the security findings product. \n This field accepts only the specified formats. Timestamps can end with ``Z`` or ``(\"+\" / \"-\") time-hour [\":\" time-minute]``. The time-secfrac after seconds is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here are valid timestamp formats with examples:\n + ``YYYY-MM-DDTHH:MM:SSZ`` (for example, ``2019-01-31T23:00:00Z``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ`` (for example, ``2019-01-31T23:00:00.123456789Z``)\n + ``YYYY-MM-DDTHH:MM:SS+HH:MM`` (for example, ``2024-01-04T15:25:10+17:59``)\n + ``YYYY-MM-DDTHH:MM:SS-HHMM`` (for example, ``2024-01-04T15:25:10-1759``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM`` (for example, ``2024-01-04T15:25:10.123456789+17:59``)\n \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/DateFilter" - }, - "maxItems": 20, - "type": "array" - }, - "GeneratorId": { - "description": "The identifier for the solution-specific component that generated a finding. \n Array Members: Minimum number of 1 item. Maximum number of 100 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 100, - "type": "array" - }, - "Id": { - "description": "The product-specific identifier for a finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "LastObservedAt": { - "description": "A timestamp that indicates when the potential security issue captured by a finding was most recently observed by the security findings product. \n This field accepts only the specified formats. Timestamps can end with ``Z`` or ``(\"+\" / \"-\") time-hour [\":\" time-minute]``. The time-secfrac after seconds is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here are valid timestamp formats with examples:\n + ``YYYY-MM-DDTHH:MM:SSZ`` (for example, ``2019-01-31T23:00:00Z``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ`` (for example, ``2019-01-31T23:00:00.123456789Z``)\n + ``YYYY-MM-DDTHH:MM:SS+HH:MM`` (for example, ``2024-01-04T15:25:10+17:59``)\n + ``YYYY-MM-DDTHH:MM:SS-HHMM`` (for example, ``2024-01-04T15:25:10-1759``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM`` (for example, ``2024-01-04T15:25:10.123456789+17:59``)\n \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/DateFilter" - }, - "maxItems": 20, - "type": "array" - }, - "NoteText": { - "description": "The text of a user-defined note that's added to a finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "NoteUpdatedAt": { - "description": "The timestamp of when the note was updated.\n This field accepts only the specified formats. Timestamps can end with ``Z`` or ``(\"+\" / \"-\") time-hour [\":\" time-minute]``. The time-secfrac after seconds is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here are valid timestamp formats with examples:\n + ``YYYY-MM-DDTHH:MM:SSZ`` (for example, ``2019-01-31T23:00:00Z``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ`` (for example, ``2019-01-31T23:00:00.123456789Z``)\n + ``YYYY-MM-DDTHH:MM:SS+HH:MM`` (for example, ``2024-01-04T15:25:10+17:59``)\n + ``YYYY-MM-DDTHH:MM:SS-HHMM`` (for example, ``2024-01-04T15:25:10-1759``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM`` (for example, ``2024-01-04T15:25:10.123456789+17:59``)\n \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/DateFilter" - }, - "maxItems": 20, - "type": "array" - }, - "NoteUpdatedBy": { - "description": "The principal that created a note. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "ProductArn": { - "description": "The Amazon Resource Name (ARN) for a third-party product that generated a finding in Security Hub. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "ProductName": { - "description": "Provides the name of the product that generated the finding. For control-based findings, the product name is Security Hub. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "RecordState": { - "description": "Provides the current state of a finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "RelatedFindingsId": { - "description": "The product-generated identifier for a related finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "RelatedFindingsProductArn": { - "description": "The ARN for the product that generated a related finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "ResourceDetailsOther": { - "description": "Custom fields and values about the resource that a finding pertains to. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/MapFilter" - }, - "maxItems": 20, - "type": "array" - }, - "ResourceId": { - "description": "The identifier for the given resource type. For AWS resources that are identified by Amazon Resource Names (ARNs), this is the ARN. For AWS resources that lack ARNs, this is the identifier as defined by the AWS-service that created the resource. For non-AWS resources, this is a unique identifier that is associated with the resource. \n Array Members: Minimum number of 1 item. Maximum number of 100 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 100, - "type": "array" - }, - "ResourcePartition": { - "description": "The partition in which the resource that the finding pertains to is located. A partition is a group of AWS-Regions. Each AWS-account is scoped to one partition. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "ResourceRegion": { - "description": "The AWS-Region where the resource that a finding pertains to is located. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "ResourceTags": { - "description": "A list of AWS tags associated with a resource at the time the finding was processed. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/MapFilter" - }, - "maxItems": 20, - "type": "array" - }, - "ResourceType": { - "description": "A finding's title. \n Array Members: Minimum number of 1 item. Maximum number of 100 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "SeverityLabel": { - "description": "The severity value of the finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "SourceUrl": { - "description": "Provides a URL that links to a page about the current finding in the finding product. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "Title": { - "description": "A finding's title. \n Array Members: Minimum number of 1 item. Maximum number of 100 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 100, - "type": "array" - }, - "Type": { - "description": "One or more finding types in the format of namespace/category/classifier that classify a finding. For a list of namespaces, classifiers, and categories, see [Types taxonomy for ASFF](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format-type-taxonomy.html) in the *User Guide*.\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "UpdatedAt": { - "description": "A timestamp that indicates when the finding record was most recently updated. \n This field accepts only the specified formats. Timestamps can end with ``Z`` or ``(\"+\" / \"-\") time-hour [\":\" time-minute]``. The time-secfrac after seconds is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here are valid timestamp formats with examples:\n + ``YYYY-MM-DDTHH:MM:SSZ`` (for example, ``2019-01-31T23:00:00Z``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ`` (for example, ``2019-01-31T23:00:00.123456789Z``)\n + ``YYYY-MM-DDTHH:MM:SS+HH:MM`` (for example, ``2024-01-04T15:25:10+17:59``)\n + ``YYYY-MM-DDTHH:MM:SS-HHMM`` (for example, ``2024-01-04T15:25:10-1759``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM`` (for example, ``2024-01-04T15:25:10.123456789+17:59``)\n \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/DateFilter" - }, - "maxItems": 20, - "type": "array" - }, - "UserDefinedFields": { - "description": "A list of user-defined name and value string pairs added to a finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/MapFilter" - }, - "maxItems": 20, - "type": "array" - }, - "VerificationState": { - "description": "Provides the veracity of a finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - }, - "WorkflowStatus": { - "description": "Provides information about the status of the investigation into a finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array" - } - }, - "type": "object" - }, - "BooleanFilter": { - "additionalProperties": false, - "description": "", - "properties": { - "Value": { - "description": "The value of the boolean.", - "type": "boolean" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "DateFilter": { - "additionalProperties": false, - "description": "A date filter for querying findings.", - "oneOf": [ - { - "required": [ - "DateRange" - ] - }, - { - "allOf": [ - { - "required": [ - "Start" - ] - }, - { - "required": [ - "End" - ] - } - ] - } - ], - "properties": { - "DateRange": { - "$ref": "#/definitions/DateRange", - "description": "A date range for the date filter." - }, - "End": { - "$ref": "#/definitions/ISO8601DateString", - "description": "A timestamp that provides the end date for the date filter.\n This field accepts only the specified formats. Timestamps can end with ``Z`` or ``(\"+\" / \"-\") time-hour [\":\" time-minute]``. The time-secfrac after seconds is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here are valid timestamp formats with examples:\n + ``YYYY-MM-DDTHH:MM:SSZ`` (for example, ``2019-01-31T23:00:00Z``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ`` (for example, ``2019-01-31T23:00:00.123456789Z``)\n + ``YYYY-MM-DDTHH:MM:SS+HH:MM`` (for example, ``2024-01-04T15:25:10+17:59``)\n + ``YYYY-MM-DDTHH:MM:SS-HHMM`` (for example, ``2024-01-04T15:25:10-1759``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM`` (for example, ``2024-01-04T15:25:10.123456789+17:59``)" - }, - "Start": { - "$ref": "#/definitions/ISO8601DateString", - "description": "A timestamp that provides the start date for the date filter.\n This field accepts only the specified formats. Timestamps can end with ``Z`` or ``(\"+\" / \"-\") time-hour [\":\" time-minute]``. The time-secfrac after seconds is limited to a maximum of 9 digits. The offset is bounded by +/-18:00. Here are valid timestamp formats with examples:\n + ``YYYY-MM-DDTHH:MM:SSZ`` (for example, ``2019-01-31T23:00:00Z``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmmZ`` (for example, ``2019-01-31T23:00:00.123456789Z``)\n + ``YYYY-MM-DDTHH:MM:SS+HH:MM`` (for example, ``2024-01-04T15:25:10+17:59``)\n + ``YYYY-MM-DDTHH:MM:SS-HHMM`` (for example, ``2024-01-04T15:25:10-1759``)\n + ``YYYY-MM-DDTHH:MM:SS.mmmmmmmmm+HH:MM`` (for example, ``2024-01-04T15:25:10.123456789+17:59``)" - } - }, - "type": "object" - }, - "DateRange": { - "additionalProperties": false, - "description": "A date range for the date filter.", - "properties": { - "Unit": { - "description": "A date range unit for the date filter.", - "enum": [ - "DAYS" - ], - "type": "string" - }, - "Value": { - "description": "A date range value for the date filter.", - "type": "number" - } - }, - "required": [ - "Unit", - "Value" - ], - "type": "object" - }, - "ISO8601DateString": { - "description": "The date and time, in UTC and ISO 8601 format.", - "pattern": "^(\\d\\d\\d\\d)-([0][1-9]|[1][0-2])-([0][1-9]|[1-2](\\d)|[3][0-1])[T](?:([0-1](\\d)|[2][0-3]):[0-5](\\d):[0-5](\\d)|23:59:60)(?:\\.(\\d)+)?([Z]|[+-](\\d\\d)(:?(\\d\\d))?)$", - "type": "string" - }, - "MapFilter": { - "additionalProperties": false, - "description": "A map filter for filtering ASHlong findings. Each map filter provides the field to check for, the value to check for, and the comparison operator.", - "properties": { - "Comparison": { - "description": "The condition to apply to the key value when filtering Security Hub findings with a map filter.\n To search for values that have the filter value, use one of the following comparison operators:\n + To search for values that include the filter value, use ``CONTAINS``. For example, for the ``ResourceTags`` field, the filter ``Department CONTAINS Security`` matches findings that include the value ``Security`` for the ``Department`` tag. In the same example, a finding with a value of ``Security team`` for the ``Department`` tag is a match.\n + To search for values that exactly match the filter value, use ``EQUALS``. For example, for the ``ResourceTags`` field, the filter ``Department EQUALS Security`` matches findings that have the value ``Security`` for the ``Department`` tag.\n \n ``CONTAINS`` and ``EQUALS`` filters on the same field are joined by ``OR``. A finding matches if it matches any one of those filters. For example, the filters ``Department CONTAINS Security OR Department CONTAINS Finance`` match a finding that includes either ``Security``, ``Finance``, or both values.\n To search for values that don't have the filter value, use one of the following comparison operators:\n + To search for values that exclude the filter value, use ``NOT_CONTAINS``. For example, for the ``ResourceTags`` field, the filter ``Department NOT_CONTAINS Finance`` matches findings that exclude the value ``Finance`` for the ``Department`` tag.\n + To search for values other than the filter value, use ``NOT_EQUALS``. For example, for the ``ResourceTags`` field, the filter ``Department NOT_EQUALS Finance`` matches findings that don\u2019t have the value ``Finance`` for the ``Department`` tag.\n \n ``NOT_CONTAINS`` and ``NOT_EQUALS`` filters on the same field are joined by ``AND``. A finding matches only if it matches all of those filters. For example, the filters ``Department NOT_CONTAINS Security AND Department NOT_CONTAINS Finance`` match a finding that excludes both the ``Security`` and ``Finance`` values.\n ``CONTAINS`` filters can only be used with other ``CONTAINS`` filters. ``NOT_CONTAINS`` filters can only be used with other ``NOT_CONTAINS`` filters.\n You can\u2019t have both a ``CONTAINS`` filter and a ``NOT_CONTAINS`` filter on the same field. Similarly, you can\u2019t have both an ``EQUALS`` filter and a ``NOT_EQUALS`` filter on the same field. Combining filters in this way returns an error. \n ``CONTAINS`` and ``NOT_CONTAINS`` operators can be used only with automation rules. For more information, see [Automation rules](https://docs.aws.amazon.com/securityhub/latest/userguide/automation-rules.html) in the *User Guide*.", - "enum": [ - "EQUALS", - "NOT_EQUALS", - "CONTAINS", - "NOT_CONTAINS" - ], - "type": "string" - }, - "Key": { - "description": "The key of the map filter. For example, for ``ResourceTags``, ``Key`` identifies the name of the tag. For ``UserDefinedFields``, ``Key`` is the name of the field.", - "type": "string" - }, - "Value": { - "description": "The value for the key in the map filter. Filter values are case sensitive. For example, one of the values for a tag called ``Department`` might be ``Security``. If you provide ``security`` as the filter value, then there's no match.", - "type": "string" - } - }, - "required": [ - "Comparison", - "Key", - "Value" - ], - "type": "object" - }, - "NonEmptyString": { - "minLength": 1, - "type": "string" - }, - "NoteUpdate": { - "additionalProperties": false, - "description": "The updated note.", - "properties": { - "Text": { - "description": "The updated note text.", - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "UpdatedBy": { - "$ref": "#/definitions/arnOrId", - "description": "The principal that updated the note." - } - }, - "required": [ - "Text", - "UpdatedBy" - ], - "type": "object" - }, - "NumberFilter": { - "additionalProperties": false, - "description": "A number filter for querying findings.", - "oneOf": [ - { - "required": [ - "Eq" - ] - }, - { - "anyOf": [ - { - "required": [ - "Gte" - ] - }, - { - "required": [ - "Lte" - ] - } - ] - } - ], - "properties": { - "Eq": { - "description": "The equal-to condition to be applied to a single field when querying for findings.", - "type": "number" - }, - "Gte": { - "description": "The greater-than-equal condition to be applied to a single field when querying for findings.", - "type": "number" - }, - "Lte": { - "description": "The less-than-equal condition to be applied to a single field when querying for findings.", - "type": "number" - } - }, - "type": "object" - }, - "RelatedFinding": { - "additionalProperties": false, - "description": "Provides details about a list of findings that the current finding relates to.", - "properties": { - "Id": { - "$ref": "#/definitions/arnOrId", - "description": "The product-generated identifier for a related finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items." - }, - "ProductArn": { - "$ref": "#/definitions/arn", - "description": "The Amazon Resource Name (ARN) for the product that generated a related finding." - } - }, - "required": [ - "ProductArn", - "Id" - ], - "type": "object" - }, - "SeverityUpdate": { - "additionalProperties": false, - "description": "Updates to the severity information for a finding.", - "properties": { - "Label": { - "description": "The severity value of the finding. The allowed values are the following.\n + ``INFORMATIONAL`` - No issue was found.\n + ``LOW`` - The issue does not require action on its own.\n + ``MEDIUM`` - The issue must be addressed but not urgently.\n + ``HIGH`` - The issue must be addressed as a priority.\n + ``CRITICAL`` - The issue must be remediated immediately to avoid it escalating.", - "enum": [ - "INFORMATIONAL", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ], - "type": "string" - }, - "Normalized": { - "$ref": "#/definitions/int100", - "description": "The normalized severity for the finding. This attribute is to be deprecated in favor of ``Label``.\n If you provide ``Normalized`` and don't provide ``Label``, ``Label`` is set automatically as follows.\n + 0 - ``INFORMATIONAL`` \n + 1\u201339 - ``LOW`` \n + 40\u201369 - ``MEDIUM`` \n + 70\u201389 - ``HIGH`` \n + 90\u2013100 - ``CRITICAL``" - }, - "Product": { - "description": "The native severity as defined by the AWS service or integrated partner product that generated the finding.", - "type": "number" - } - }, - "type": "object" - }, - "StringFilter": { - "additionalProperties": false, - "description": "A string filter for filtering ASHlong findings.", - "properties": { - "Comparison": { - "$ref": "#/definitions/StringFilterComparison", - "description": "The condition to apply to a string value when filtering Security Hub findings.\n To search for values that have the filter value, use one of the following comparison operators:\n + To search for values that include the filter value, use ``CONTAINS``. For example, the filter ``Title CONTAINS CloudFront`` matches findings that have a ``Title`` that includes the string CloudFront.\n + To search for values that exactly match the filter value, use ``EQUALS``. For example, the filter ``AwsAccountId EQUALS 123456789012`` only matches findings that have an account ID of ``123456789012``.\n + To search for values that start with the filter value, use ``PREFIX``. For example, the filter ``ResourceRegion PREFIX us`` matches findings that have a ``ResourceRegion`` that starts with ``us``. A ``ResourceRegion`` that starts with a different value, such as ``af``, ``ap``, or ``ca``, doesn't match.\n \n ``CONTAINS``, ``EQUALS``, and ``PREFIX`` filters on the same field are joined by ``OR``. A finding matches if it matches any one of those filters. For example, the filters ``Title CONTAINS CloudFront OR Title CONTAINS CloudWatch`` match a finding that includes either ``CloudFront``, ``CloudWatch``, or both strings in the title.\n To search for values that don\u2019t have the filter value, use one of the following comparison operators:\n + To search for values that exclude the filter value, use ``NOT_CONTAINS``. For example, the filter ``Title NOT_CONTAINS CloudFront`` matches findings that have a ``Title`` that excludes the string CloudFront.\n + To search for values other than the filter value, use ``NOT_EQUALS``. For example, the filter ``AwsAccountId NOT_EQUALS 123456789012`` only matches findings that have an account ID other than ``123456789012``.\n + To search for values that don't start with the filter value, use ``PREFIX_NOT_EQUALS``. For example, the filter ``ResourceRegion PREFIX_NOT_EQUALS us`` matches findings with a ``ResourceRegion`` that starts with a value other than ``us``.\n \n ``NOT_CONTAINS``, ``NOT_EQUALS``, and ``PREFIX_NOT_EQUALS`` filters on the same field are joined by ``AND``. A finding matches only if it matches all of those filters. For example, the filters ``Title NOT_CONTAINS CloudFront AND Title NOT_CONTAINS CloudWatch`` match a finding that excludes both ``CloudFront`` and ``CloudWatch`` in the title.\n You can\u2019t have both a ``CONTAINS`` filter and a ``NOT_CONTAINS`` filter on the same field. Similarly, you can't provide both an ``EQUALS`` filter and a ``NOT_EQUALS`` or ``PREFIX_NOT_EQUALS`` filter on the same field. Combining filters in this way returns an error. ``CONTAINS`` filters can only be used with other ``CONTAINS`` filters. ``NOT_CONTAINS`` filters can only be used with other ``NOT_CONTAINS`` filters. \n You can combine ``PREFIX`` filters with ``NOT_EQUALS`` or ``PREFIX_NOT_EQUALS`` filters for the same field. Security Hub first processes the ``PREFIX`` filters, and then the ``NOT_EQUALS`` or ``PREFIX_NOT_EQUALS`` filters.\n For example, for the following filters, Security Hub first identifies findings that have resource types that start with either ``AwsIam`` or ``AwsEc2``. It then excludes findings that have a resource type of ``AwsIamPolicy`` and findings that have a resource type of ``AwsEc2NetworkInterface``.\n + ``ResourceType PREFIX AwsIam`` \n + ``ResourceType PREFIX AwsEc2`` \n + ``ResourceType NOT_EQUALS AwsIamPolicy`` \n + ``ResourceType NOT_EQUALS AwsEc2NetworkInterface`` \n \n ``CONTAINS`` and ``NOT_CONTAINS`` operators can be used only with automation rules. For more information, see [Automation rules](https://docs.aws.amazon.com/securityhub/latest/userguide/automation-rules.html) in the *User Guide*." - }, - "Value": { - "description": "The string filter value. Filter values are case sensitive. For example, the product name for control-based findings is ``Security Hub``. If you provide ``security hub`` as the filter value, there's no match.", - "type": "string" - } - }, - "required": [ - "Comparison", - "Value" - ], - "type": "object" - }, - "StringFilterComparison": { - "description": "The condition to apply to a string value when filtering Security Hub findings.", - "enum": [ - "EQUALS", - "PREFIX", - "NOT_EQUALS", - "PREFIX_NOT_EQUALS", - "CONTAINS", - "NOT_CONTAINS" - ], - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "patternProperties": { - "^[a-zA-Z0-9]{1,128}$": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "WorkflowUpdate": { - "additionalProperties": false, - "description": "Used to update information about the investigation into the finding.", - "properties": { - "Status": { - "description": "The status of the investigation into the finding. The workflow status is specific to an individual finding. It does not affect the generation of new findings. For example, setting the workflow status to ``SUPPRESSED`` or ``RESOLVED`` does not prevent a new finding for the same issue.\n The allowed values are the following.\n + ``NEW`` - The initial state of a finding, before it is reviewed.\n Security Hub also resets ``WorkFlowStatus`` from ``NOTIFIED`` or ``RESOLVED`` to ``NEW`` in the following cases:\n + The record state changes from ``ARCHIVED`` to ``ACTIVE``.\n + The compliance status changes from ``PASSED`` to either ``WARNING``, ``FAILED``, or ``NOT_AVAILABLE``.\n \n + ``NOTIFIED`` - Indicates that you notified the resource owner about the security issue. Used when the initial reviewer is not the resource owner, and needs intervention from the resource owner.\n + ``RESOLVED`` - The finding was reviewed and remediated and is now considered resolved.\n + ``SUPPRESSED`` - Indicates that you reviewed the finding and don't believe that any action is needed. The finding is no longer updated.", - "enum": [ - "NEW", - "NOTIFIED", - "RESOLVED", - "SUPPRESSED" - ], - "type": "string" - } - }, - "required": [ - "Status" - ], - "type": "object" - }, - "arn": { - "description": "The Amazon Resource Name (ARN) of the automation rule.", - "maxLength": 2048, - "minLength": 12, - "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso-?[a-z]{0,2}):[A-Za-z0-9]{1,63}:[a-z]+-([a-z]{1,10}-)?[a-z]+-[0-9]+:([0-9]{12})?:.+$", - "type": "string" - }, - "arnOrId": { - "anyOf": [ - { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - { - "$ref": "#/definitions/arn" - } - ], - "description": "The Amazon Resource Name (ARN) or Id of the automation rule." - }, - "int100": { - "description": "Integer from 0 to 100.", - "maximum": 100, - "minimum": 0, - "type": "integer" - }, - "map": { - "additionalProperties": false, - "description": "An object of user-defined name and value string pair added to a finding.", - "maxProperties": 50, - "minProperties": 1, - "patternProperties": { - "^[-_+=.:/@\\w\\s]{1,128}$": { - "description": "The value for the key in the map", - "maxLength": 1024, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "timestamp": { - "format": "date-time", - "pattern": "(\\d\\d\\d\\d)-[0-1](\\d)-[0-3](\\d)[Tt](?:[0-2](\\d):[0-5](\\d):[0-5](\\d)|23:59:60)(?:\\.(\\d)+)?(?:[Zz]|[+-](\\d\\d)(?::?(\\d\\d))?)$", - "type": "string" - } - }, - "description": "The ``AWS::SecurityHub::AutomationRule`` resource specifies an automation rule based on input parameters. For more information, see [Automation rules](https://docs.aws.amazon.com/securityhub/latest/userguide/automation-rules.html) in the *User Guide*.", - "handlers": { - "create": { - "permissions": [ - "securityhub:CreateAutomationRule", - "securityhub:TagResource", - "securityhub:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "securityhub:BatchDeleteAutomationRules", - "securityhub:BatchGetAutomationRules" - ] - }, - "list": { - "permissions": [ - "securityhub:ListAutomationRules", - "securityhub:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "securityhub:ListAutomationRules", - "securityhub:BatchGetAutomationRules", - "securityhub:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "securityhub:BatchUpdateAutomationRules", - "securityhub:TagResource", - "securityhub:UntagResource", - "securityhub:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/RuleArn" - ], - "properties": { - "Actions": { - "description": "One or more actions to update finding fields if a finding matches the conditions specified in ``Criteria``.", - "items": { - "$ref": "#/definitions/AutomationRulesAction" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "CreatedAt": { - "$ref": "#/definitions/ISO8601DateString", - "description": "" - }, - "CreatedBy": { - "description": "", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Criteria": { - "$ref": "#/definitions/AutomationRulesFindingFilters", - "description": "A set of [Security Finding Format (ASFF)](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format.html) finding field attributes and corresponding expected values that ASH uses to filter findings. If a rule is enabled and a finding matches the criteria specified in this parameter, ASH applies the rule action to the finding." - }, - "Description": { - "description": "A description of the rule.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "IsTerminal": { - "description": "Specifies whether a rule is the last to be applied with respect to a finding that matches the rule criteria. This is useful when a finding matches the criteria for multiple rules, and each rule has different actions. If a rule is terminal, Security Hub applies the rule action to a finding that matches the rule criteria and doesn't evaluate other rules for the finding. By default, a rule isn't terminal.", - "type": "boolean" - }, - "RuleArn": { - "description": "", - "pattern": "arn:aws\\S*:securityhub:\\S*", - "type": "string" - }, - "RuleName": { - "description": "The name of the rule.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "RuleOrder": { - "description": "An integer ranging from 1 to 1000 that represents the order in which the rule action is applied to findings. Security Hub applies rules with lower values for this parameter first.", - "maximum": 1000, - "minimum": 1, - "type": "integer" - }, - "RuleStatus": { - "description": "Whether the rule is active after it is created. If this parameter is equal to ``ENABLED``, ASH applies the rule to findings and finding updates after the rule is created.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/Tags", - "description": "User-defined tags associated with an automation rule." - }, - "UpdatedAt": { - "$ref": "#/definitions/ISO8601DateString", - "description": "" - } - }, - "readOnlyProperties": [ - "/properties/RuleArn", - "/properties/CreatedAt", - "/properties/UpdatedAt", - "/properties/CreatedBy" - ], - "required": [ - "RuleOrder", - "RuleName", - "Description", - "Criteria", - "Actions" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SecurityHub::AutomationRule" -} +{ + "additionalProperties": false, + "definitions": { + "AutomationRulesAction": { + "description": "One or more actions that ASHlong takes when a finding matches the defined criteria of a rule.", + "properties": { + "FindingFieldsUpdate": { + "$ref": "#/definitions/AutomationRulesFindingFieldsUpdate", + "description": "Specifies that the automation rule action is an update to a finding field." + }, + "Type": { + "description": "Specifies the type of action that Security Hub takes when a finding matches the defined criteria of a rule.", + "enum": [ + "FINDING_FIELDS_UPDATE" + ], + "type": "string" + } + }, + "required": [ + "Type", + "FindingFieldsUpdate" + ], + "type": "object" + }, + "AutomationRulesFindingFieldsUpdate": { + "description": "Identifies the finding fields that the automation rule action updates when a finding matches the defined criteria.", + "properties": { + "Confidence": { + "$ref": "#/definitions/int100", + "description": "The rule action updates the ``Confidence`` field of a finding." + }, + "Criticality": { + "$ref": "#/definitions/int100", + "description": "The rule action updates the ``Criticality`` field of a finding." + }, + "Note": { + "$ref": "#/definitions/NoteUpdate", + "description": "The rule action will update the ``Note`` field of a finding.", + "type": "object" + }, + "RelatedFindings": { + "description": "The rule action will update the ``RelatedFindings`` field of a finding.", + "items": { + "$ref": "#/definitions/RelatedFinding" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "Severity": { + "$ref": "#/definitions/SeverityUpdate", + "description": "The rule action will update the ``Severity`` field of a finding.", + "type": "object" + }, + "Types": { + "description": "The rule action updates the ``Types`` field of a finding.", + "items": { + "pattern": "^([^/]+)(/[^/]+){0,2}$", + "type": "string" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UserDefinedFields": { + "$ref": "#/definitions/map", + "description": "The rule action updates the ``UserDefinedFields`` field of a finding." + }, + "VerificationState": { + "description": "The rule action updates the ``VerificationState`` field of a finding.", + "enum": [ + "UNKNOWN", + "TRUE_POSITIVE", + "FALSE_POSITIVE", + "BENIGN_POSITIVE" + ], + "type": "string" + }, + "Workflow": { + "$ref": "#/definitions/WorkflowUpdate", + "description": "The rule action will update the ``Workflow`` field of a finding.", + "type": "object" + } + }, + "type": "object" + }, + "AutomationRulesFindingFilters": { + "additionalProperties": false, + "description": "The criteria that determine which findings a rule applies to.", + "properties": { + "AwsAccountId": { + "description": "The AWS-account ID in which a finding was generated.\n Array Members: Minimum number of 1 item. Maximum number of 100 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 100, + "type": "array" + }, + "CompanyName": { + "description": "The name of the company for the product that generated the finding. For control-based findings, the company is AWS. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "ComplianceAssociatedStandardsId": { + "description": "The unique identifier of a standard in which a control is enabled. This field consists of the resource portion of the Amazon Resource Name (ARN) returned for a standard in the [DescribeStandards](https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_DescribeStandards.html) API response.\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "ComplianceSecurityControlId": { + "description": "The security control ID for which a finding was generated. Security control IDs are the same across standards.\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "ComplianceStatus": { + "description": "The result of a security check. This field is only used for findings generated from controls. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "Confidence": { + "description": "The likelihood that a finding accurately identifies the behavior or issue that it was intended to identify. ``Confidence`` is scored on a 0\u2013100 basis using a ratio scale. A value of ``0`` means 0 percent confidence, and a value of ``100`` means 100 percent confidence. For example, a data exfiltration detection based on a statistical deviation of network traffic has low confidence because an actual exfiltration hasn't been verified. For more information, see [Confidence](https://docs.aws.amazon.com/securityhub/latest/userguide/asff-top-level-attributes.html#asff-confidence) in the *User Guide*.\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/NumberFilter" + }, + "maxItems": 20, + "type": "array" + }, + "CreatedAt": { + "description": "A timestamp that indicates when this finding record was created. \n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps).\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/DateFilter" + }, + "maxItems": 20, + "type": "array" + }, + "Criticality": { + "description": "The level of importance that is assigned to the resources that are associated with a finding. ``Criticality`` is scored on a 0\u2013100 basis, using a ratio scale that supports only full integers. A score of ``0`` means that the underlying resources have no criticality, and a score of ``100`` is reserved for the most critical resources. For more information, see [Criticality](https://docs.aws.amazon.com/securityhub/latest/userguide/asff-top-level-attributes.html#asff-criticality) in the *User Guide*.\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/NumberFilter" + }, + "maxItems": 20, + "type": "array" + }, + "Description": { + "description": "A finding's description. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "FirstObservedAt": { + "description": "A timestamp that indicates when the potential security issue captured by a finding was first observed by the security findings product. \n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps).\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/DateFilter" + }, + "maxItems": 20, + "type": "array" + }, + "GeneratorId": { + "description": "The identifier for the solution-specific component that generated a finding. \n Array Members: Minimum number of 1 item. Maximum number of 100 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 100, + "type": "array" + }, + "Id": { + "description": "The product-specific identifier for a finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "LastObservedAt": { + "description": "A timestamp that indicates when the security findings provider most recently observed a change in the resource that is involved in the finding. \n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps).\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/DateFilter" + }, + "maxItems": 20, + "type": "array" + }, + "NoteText": { + "description": "The text of a user-defined note that's added to a finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "NoteUpdatedAt": { + "description": "The timestamp of when the note was updated.\n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps).\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/DateFilter" + }, + "maxItems": 20, + "type": "array" + }, + "NoteUpdatedBy": { + "description": "The principal that created a note. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "ProductArn": { + "description": "The Amazon Resource Name (ARN) for a third-party product that generated a finding in Security Hub. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "ProductName": { + "description": "Provides the name of the product that generated the finding. For control-based findings, the product name is Security Hub. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "RecordState": { + "description": "Provides the current state of a finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "RelatedFindingsId": { + "description": "The product-generated identifier for a related finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "RelatedFindingsProductArn": { + "description": "The ARN for the product that generated a related finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "ResourceDetailsOther": { + "description": "Custom fields and values about the resource that a finding pertains to. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/MapFilter" + }, + "maxItems": 20, + "type": "array" + }, + "ResourceId": { + "description": "The identifier for the given resource type. For AWS resources that are identified by Amazon Resource Names (ARNs), this is the ARN. For AWS resources that lack ARNs, this is the identifier as defined by the AWS-service that created the resource. For non-AWS resources, this is a unique identifier that is associated with the resource. \n Array Members: Minimum number of 1 item. Maximum number of 100 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 100, + "type": "array" + }, + "ResourcePartition": { + "description": "The partition in which the resource that the finding pertains to is located. A partition is a group of AWS-Regions. Each AWS-account is scoped to one partition. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "ResourceRegion": { + "description": "The AWS-Region where the resource that a finding pertains to is located. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "ResourceTags": { + "description": "A list of AWS tags associated with a resource at the time the finding was processed. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/MapFilter" + }, + "maxItems": 20, + "type": "array" + }, + "ResourceType": { + "description": "A finding's title. \n Array Members: Minimum number of 1 item. Maximum number of 100 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "SeverityLabel": { + "description": "The severity value of the finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "SourceUrl": { + "description": "Provides a URL that links to a page about the current finding in the finding product. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "Title": { + "description": "A finding's title. \n Array Members: Minimum number of 1 item. Maximum number of 100 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 100, + "type": "array" + }, + "Type": { + "description": "One or more finding types in the format of namespace/category/classifier that classify a finding. For a list of namespaces, classifiers, and categories, see [Types taxonomy for ASFF](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format-type-taxonomy.html) in the *User Guide*.\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "UpdatedAt": { + "description": "A timestamp that indicates when the finding record was most recently updated. \n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps).\n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/DateFilter" + }, + "maxItems": 20, + "type": "array" + }, + "UserDefinedFields": { + "description": "A list of user-defined name and value string pairs added to a finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/MapFilter" + }, + "maxItems": 20, + "type": "array" + }, + "VerificationState": { + "description": "Provides the veracity of a finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + }, + "WorkflowStatus": { + "description": "Provides information about the status of the investigation into a finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items.", + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array" + } + }, + "type": "object" + }, + "BooleanFilter": { + "additionalProperties": false, + "description": "", + "properties": { + "Value": { + "description": "The value of the boolean.", + "type": "boolean" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "DateFilter": { + "additionalProperties": false, + "description": "A date filter for querying findings.", + "oneOf": [ + { + "required": [ + "DateRange" + ] + }, + { + "allOf": [ + { + "required": [ + "Start" + ] + }, + { + "required": [ + "End" + ] + } + ] + } + ], + "properties": { + "DateRange": { + "$ref": "#/definitions/DateRange", + "description": "A date range for the date filter." + }, + "End": { + "$ref": "#/definitions/ISO8601DateString", + "description": "A timestamp that provides the end date for the date filter.\n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps)." + }, + "Start": { + "$ref": "#/definitions/ISO8601DateString", + "description": "A timestamp that provides the start date for the date filter.\n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps)." + } + }, + "type": "object" + }, + "DateRange": { + "additionalProperties": false, + "description": "A date range for the date filter.", + "properties": { + "Unit": { + "description": "A date range unit for the date filter.", + "enum": [ + "DAYS" + ], + "type": "string" + }, + "Value": { + "description": "A date range value for the date filter.", + "type": "number" + } + }, + "required": [ + "Unit", + "Value" + ], + "type": "object" + }, + "ISO8601DateString": { + "description": "The date and time, in UTC and ISO 8601 format.", + "pattern": "^(\\d\\d\\d\\d)-([0][1-9]|[1][0-2])-([0][1-9]|[1-2](\\d)|[3][0-1])[T](?:([0-1](\\d)|[2][0-3]):[0-5](\\d):[0-5](\\d)|23:59:60)(?:\\.(\\d)+)?([Z]|[+-](\\d\\d)(:?(\\d\\d))?)$", + "type": "string" + }, + "MapFilter": { + "additionalProperties": false, + "description": "A map filter for filtering ASHlong findings. Each map filter provides the field to check for, the value to check for, and the comparison operator.", + "properties": { + "Comparison": { + "description": "The condition to apply to the key value when filtering Security Hub findings with a map filter.\n To search for values that have the filter value, use one of the following comparison operators:\n + To search for values that include the filter value, use ``CONTAINS``. For example, for the ``ResourceTags`` field, the filter ``Department CONTAINS Security`` matches findings that include the value ``Security`` for the ``Department`` tag. In the same example, a finding with a value of ``Security team`` for the ``Department`` tag is a match.\n + To search for values that exactly match the filter value, use ``EQUALS``. For example, for the ``ResourceTags`` field, the filter ``Department EQUALS Security`` matches findings that have the value ``Security`` for the ``Department`` tag.\n \n ``CONTAINS`` and ``EQUALS`` filters on the same field are joined by ``OR``. A finding matches if it matches any one of those filters. For example, the filters ``Department CONTAINS Security OR Department CONTAINS Finance`` match a finding that includes either ``Security``, ``Finance``, or both values.\n To search for values that don't have the filter value, use one of the following comparison operators:\n + To search for values that exclude the filter value, use ``NOT_CONTAINS``. For example, for the ``ResourceTags`` field, the filter ``Department NOT_CONTAINS Finance`` matches findings that exclude the value ``Finance`` for the ``Department`` tag.\n + To search for values other than the filter value, use ``NOT_EQUALS``. For example, for the ``ResourceTags`` field, the filter ``Department NOT_EQUALS Finance`` matches findings that don\u2019t have the value ``Finance`` for the ``Department`` tag.\n \n ``NOT_CONTAINS`` and ``NOT_EQUALS`` filters on the same field are joined by ``AND``. A finding matches only if it matches all of those filters. For example, the filters ``Department NOT_CONTAINS Security AND Department NOT_CONTAINS Finance`` match a finding that excludes both the ``Security`` and ``Finance`` values.\n ``CONTAINS`` filters can only be used with other ``CONTAINS`` filters. ``NOT_CONTAINS`` filters can only be used with other ``NOT_CONTAINS`` filters.\n You can\u2019t have both a ``CONTAINS`` filter and a ``NOT_CONTAINS`` filter on the same field. Similarly, you can\u2019t have both an ``EQUALS`` filter and a ``NOT_EQUALS`` filter on the same field. Combining filters in this way returns an error. \n ``CONTAINS`` and ``NOT_CONTAINS`` operators can be used only with automation rules. For more information, see [Automation rules](https://docs.aws.amazon.com/securityhub/latest/userguide/automation-rules.html) in the *User Guide*.", + "enum": [ + "EQUALS", + "NOT_EQUALS", + "CONTAINS", + "NOT_CONTAINS" + ], + "type": "string" + }, + "Key": { + "description": "The key of the map filter. For example, for ``ResourceTags``, ``Key`` identifies the name of the tag. For ``UserDefinedFields``, ``Key`` is the name of the field.", + "type": "string" + }, + "Value": { + "description": "The value for the key in the map filter. Filter values are case sensitive. For example, one of the values for a tag called ``Department`` might be ``Security``. If you provide ``security`` as the filter value, then there's no match.", + "type": "string" + } + }, + "required": [ + "Comparison", + "Key", + "Value" + ], + "type": "object" + }, + "NonEmptyString": { + "minLength": 1, + "type": "string" + }, + "NoteUpdate": { + "additionalProperties": false, + "description": "The updated note.", + "properties": { + "Text": { + "description": "The updated note text.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "UpdatedBy": { + "$ref": "#/definitions/arnOrId", + "description": "The principal that updated the note." + } + }, + "required": [ + "Text", + "UpdatedBy" + ], + "type": "object" + }, + "NumberFilter": { + "additionalProperties": false, + "description": "A number filter for querying findings.", + "oneOf": [ + { + "required": [ + "Eq" + ] + }, + { + "anyOf": [ + { + "required": [ + "Gte" + ] + }, + { + "required": [ + "Lte" + ] + } + ] + } + ], + "properties": { + "Eq": { + "description": "The equal-to condition to be applied to a single field when querying for findings.", + "type": "number" + }, + "Gte": { + "description": "The greater-than-equal condition to be applied to a single field when querying for findings.", + "type": "number" + }, + "Lte": { + "description": "The less-than-equal condition to be applied to a single field when querying for findings.", + "type": "number" + } + }, + "type": "object" + }, + "RelatedFinding": { + "additionalProperties": false, + "description": "Provides details about a list of findings that the current finding relates to.", + "properties": { + "Id": { + "$ref": "#/definitions/arnOrId", + "description": "The product-generated identifier for a related finding. \n Array Members: Minimum number of 1 item. Maximum number of 20 items." + }, + "ProductArn": { + "$ref": "#/definitions/arn", + "description": "The Amazon Resource Name (ARN) for the product that generated a related finding." + } + }, + "required": [ + "ProductArn", + "Id" + ], + "type": "object" + }, + "SeverityUpdate": { + "additionalProperties": false, + "description": "Updates to the severity information for a finding.", + "properties": { + "Label": { + "description": "The severity value of the finding. The allowed values are the following.\n + ``INFORMATIONAL`` - No issue was found.\n + ``LOW`` - The issue does not require action on its own.\n + ``MEDIUM`` - The issue must be addressed but not urgently.\n + ``HIGH`` - The issue must be addressed as a priority.\n + ``CRITICAL`` - The issue must be remediated immediately to avoid it escalating.", + "enum": [ + "INFORMATIONAL", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ], + "type": "string" + }, + "Normalized": { + "$ref": "#/definitions/int100", + "description": "The normalized severity for the finding. This attribute is to be deprecated in favor of ``Label``.\n If you provide ``Normalized`` and don't provide ``Label``, ``Label`` is set automatically as follows.\n + 0 - ``INFORMATIONAL`` \n + 1\u201339 - ``LOW`` \n + 40\u201369 - ``MEDIUM`` \n + 70\u201389 - ``HIGH`` \n + 90\u2013100 - ``CRITICAL``" + }, + "Product": { + "description": "The native severity as defined by the AWS service or integrated partner product that generated the finding.", + "type": "number" + } + }, + "type": "object" + }, + "StringFilter": { + "additionalProperties": false, + "description": "A string filter for filtering ASHlong findings.", + "properties": { + "Comparison": { + "$ref": "#/definitions/StringFilterComparison", + "description": "The condition to apply to a string value when filtering Security Hub findings.\n To search for values that have the filter value, use one of the following comparison operators:\n + To search for values that include the filter value, use ``CONTAINS``. For example, the filter ``Title CONTAINS CloudFront`` matches findings that have a ``Title`` that includes the string CloudFront.\n + To search for values that exactly match the filter value, use ``EQUALS``. For example, the filter ``AwsAccountId EQUALS 123456789012`` only matches findings that have an account ID of ``123456789012``.\n + To search for values that start with the filter value, use ``PREFIX``. For example, the filter ``ResourceRegion PREFIX us`` matches findings that have a ``ResourceRegion`` that starts with ``us``. A ``ResourceRegion`` that starts with a different value, such as ``af``, ``ap``, or ``ca``, doesn't match.\n \n ``CONTAINS``, ``EQUALS``, and ``PREFIX`` filters on the same field are joined by ``OR``. A finding matches if it matches any one of those filters. For example, the filters ``Title CONTAINS CloudFront OR Title CONTAINS CloudWatch`` match a finding that includes either ``CloudFront``, ``CloudWatch``, or both strings in the title.\n To search for values that don\u2019t have the filter value, use one of the following comparison operators:\n + To search for values that exclude the filter value, use ``NOT_CONTAINS``. For example, the filter ``Title NOT_CONTAINS CloudFront`` matches findings that have a ``Title`` that excludes the string CloudFront.\n + To search for values other than the filter value, use ``NOT_EQUALS``. For example, the filter ``AwsAccountId NOT_EQUALS 123456789012`` only matches findings that have an account ID other than ``123456789012``.\n + To search for values that don't start with the filter value, use ``PREFIX_NOT_EQUALS``. For example, the filter ``ResourceRegion PREFIX_NOT_EQUALS us`` matches findings with a ``ResourceRegion`` that starts with a value other than ``us``.\n \n ``NOT_CONTAINS``, ``NOT_EQUALS``, and ``PREFIX_NOT_EQUALS`` filters on the same field are joined by ``AND``. A finding matches only if it matches all of those filters. For example, the filters ``Title NOT_CONTAINS CloudFront AND Title NOT_CONTAINS CloudWatch`` match a finding that excludes both ``CloudFront`` and ``CloudWatch`` in the title.\n You can\u2019t have both a ``CONTAINS`` filter and a ``NOT_CONTAINS`` filter on the same field. Similarly, you can't provide both an ``EQUALS`` filter and a ``NOT_EQUALS`` or ``PREFIX_NOT_EQUALS`` filter on the same field. Combining filters in this way returns an error. ``CONTAINS`` filters can only be used with other ``CONTAINS`` filters. ``NOT_CONTAINS`` filters can only be used with other ``NOT_CONTAINS`` filters. \n You can combine ``PREFIX`` filters with ``NOT_EQUALS`` or ``PREFIX_NOT_EQUALS`` filters for the same field. Security Hub first processes the ``PREFIX`` filters, and then the ``NOT_EQUALS`` or ``PREFIX_NOT_EQUALS`` filters.\n For example, for the following filters, Security Hub first identifies findings that have resource types that start with either ``AwsIam`` or ``AwsEc2``. It then excludes findings that have a resource type of ``AwsIamPolicy`` and findings that have a resource type of ``AwsEc2NetworkInterface``.\n + ``ResourceType PREFIX AwsIam`` \n + ``ResourceType PREFIX AwsEc2`` \n + ``ResourceType NOT_EQUALS AwsIamPolicy`` \n + ``ResourceType NOT_EQUALS AwsEc2NetworkInterface`` \n \n ``CONTAINS`` and ``NOT_CONTAINS`` operators can be used only with automation rules. For more information, see [Automation rules](https://docs.aws.amazon.com/securityhub/latest/userguide/automation-rules.html) in the *User Guide*." + }, + "Value": { + "description": "The string filter value. Filter values are case sensitive. For example, the product name for control-based findings is ``Security Hub``. If you provide ``security hub`` as the filter value, there's no match.", + "type": "string" + } + }, + "required": [ + "Comparison", + "Value" + ], + "type": "object" + }, + "StringFilterComparison": { + "description": "The condition to apply to a string value when filtering Security Hub findings.", + "enum": [ + "EQUALS", + "PREFIX", + "NOT_EQUALS", + "PREFIX_NOT_EQUALS", + "CONTAINS", + "NOT_CONTAINS" + ], + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + "^[a-zA-Z0-9]{1,128}$": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "WorkflowUpdate": { + "additionalProperties": false, + "description": "Used to update information about the investigation into the finding.", + "properties": { + "Status": { + "description": "The status of the investigation into the finding. The workflow status is specific to an individual finding. It does not affect the generation of new findings. For example, setting the workflow status to ``SUPPRESSED`` or ``RESOLVED`` does not prevent a new finding for the same issue.\n The allowed values are the following.\n + ``NEW`` - The initial state of a finding, before it is reviewed.\n Security Hub also resets ``WorkFlowStatus`` from ``NOTIFIED`` or ``RESOLVED`` to ``NEW`` in the following cases:\n + The record state changes from ``ARCHIVED`` to ``ACTIVE``.\n + The compliance status changes from ``PASSED`` to either ``WARNING``, ``FAILED``, or ``NOT_AVAILABLE``.\n \n + ``NOTIFIED`` - Indicates that you notified the resource owner about the security issue. Used when the initial reviewer is not the resource owner, and needs intervention from the resource owner.\n + ``RESOLVED`` - The finding was reviewed and remediated and is now considered resolved.\n + ``SUPPRESSED`` - Indicates that you reviewed the finding and don't believe that any action is needed. The finding is no longer updated.", + "enum": [ + "NEW", + "NOTIFIED", + "RESOLVED", + "SUPPRESSED" + ], + "type": "string" + } + }, + "required": [ + "Status" + ], + "type": "object" + }, + "arn": { + "description": "The Amazon Resource Name (ARN) of the automation rule.", + "maxLength": 2048, + "minLength": 12, + "pattern": "^arn:(aws|aws-cn|aws-us-gov|aws-iso-?[a-z]{0,2}):[A-Za-z0-9]{1,63}:[a-z]+-([a-z]{1,10}-)?[a-z]+-[0-9]+:([0-9]{12})?:.+$", + "type": "string" + }, + "arnOrId": { + "anyOf": [ + { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + { + "$ref": "#/definitions/arn" + } + ], + "description": "The Amazon Resource Name (ARN) or Id of the automation rule." + }, + "int100": { + "description": "Integer from 0 to 100.", + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "map": { + "additionalProperties": false, + "description": "An object of user-defined name and value string pair added to a finding.", + "maxProperties": 50, + "minProperties": 1, + "patternProperties": { + "^[-_+=.:/@\\w\\s]{1,128}$": { + "description": "The value for the key in the map", + "maxLength": 1024, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "timestamp": { + "format": "date-time", + "pattern": "(\\d\\d\\d\\d)-[0-1](\\d)-[0-3](\\d)[Tt](?:[0-2](\\d):[0-5](\\d):[0-5](\\d)|23:59:60)(?:\\.(\\d)+)?(?:[Zz]|[+-](\\d\\d)(?::?(\\d\\d))?)$", + "type": "string" + } + }, + "description": "The ``AWS::SecurityHub::AutomationRule`` resource specifies an automation rule based on input parameters. For more information, see [Automation rules](https://docs.aws.amazon.com/securityhub/latest/userguide/automation-rules.html) in the *User Guide*.", + "handlers": { + "create": { + "permissions": [ + "securityhub:CreateAutomationRule", + "securityhub:TagResource", + "securityhub:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "securityhub:BatchDeleteAutomationRules", + "securityhub:BatchGetAutomationRules" + ] + }, + "list": { + "permissions": [ + "securityhub:ListAutomationRules", + "securityhub:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "securityhub:ListAutomationRules", + "securityhub:BatchGetAutomationRules", + "securityhub:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "securityhub:BatchUpdateAutomationRules", + "securityhub:TagResource", + "securityhub:UntagResource", + "securityhub:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/RuleArn" + ], + "properties": { + "Actions": { + "description": "One or more actions to update finding fields if a finding matches the conditions specified in ``Criteria``.", + "items": { + "$ref": "#/definitions/AutomationRulesAction" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "CreatedAt": { + "$ref": "#/definitions/ISO8601DateString", + "description": "" + }, + "CreatedBy": { + "description": "", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Criteria": { + "$ref": "#/definitions/AutomationRulesFindingFilters", + "description": "A set of [Security Finding Format (ASFF)](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format.html) finding field attributes and corresponding expected values that ASH uses to filter findings. If a rule is enabled and a finding matches the criteria specified in this parameter, ASH applies the rule action to the finding." + }, + "Description": { + "description": "A description of the rule.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "IsTerminal": { + "description": "Specifies whether a rule is the last to be applied with respect to a finding that matches the rule criteria. This is useful when a finding matches the criteria for multiple rules, and each rule has different actions. If a rule is terminal, Security Hub applies the rule action to a finding that matches the rule criteria and doesn't evaluate other rules for the finding. By default, a rule isn't terminal.", + "type": "boolean" + }, + "RuleArn": { + "description": "", + "pattern": "arn:aws\\S*:securityhub:\\S*", + "type": "string" + }, + "RuleName": { + "description": "The name of the rule.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "RuleOrder": { + "description": "An integer ranging from 1 to 1000 that represents the order in which the rule action is applied to findings. Security Hub applies rules with lower values for this parameter first.", + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "RuleStatus": { + "description": "Whether the rule is active after it is created. If this parameter is equal to ``ENABLED``, ASH applies the rule to findings and finding updates after the rule is created.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags", + "description": "User-defined tags associated with an automation rule." + }, + "UpdatedAt": { + "$ref": "#/definitions/ISO8601DateString", + "description": "" + } + }, + "readOnlyProperties": [ + "/properties/RuleArn", + "/properties/CreatedAt", + "/properties/UpdatedAt", + "/properties/CreatedBy" + ], + "required": [ + "RuleOrder", + "RuleName", + "Description", + "Criteria", + "Actions" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "securityhub:ListTagsForResource", + "securityhub:TagResource", + "securityhub:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SecurityHub::AutomationRule" +} diff --git a/src/schema/aws-securityhub-configurationpolicy.json b/src/schema/aws-securityhub-configurationpolicy.json index dfc48a3f..e03eeef1 100644 --- a/src/schema/aws-securityhub-configurationpolicy.json +++ b/src/schema/aws-securityhub-configurationpolicy.json @@ -1,300 +1,305 @@ -{ - "additionalProperties": false, - "definitions": { - "ParameterConfiguration": { - "additionalProperties": false, - "description": "An object that provides the current value of a security control parameter and identifies whether it has been customized.", - "properties": { - "Value": { - "$ref": "#/definitions/ParameterValue" - }, - "ValueType": { - "description": "Identifies whether a control parameter uses a custom user-defined value or subscribes to the default AWS Security Hub behavior.", - "enum": [ - "DEFAULT", - "CUSTOM" - ], - "type": "string" - } - }, - "required": [ - "ValueType" - ], - "type": "object" - }, - "ParameterValue": { - "additionalProperties": false, - "description": "An object that includes the data type of a security control parameter and its current value.", - "maxProperties": 1, - "minProperties": 1, - "properties": { - "Boolean": { - "description": "A control parameter that is a boolean.", - "type": "boolean" - }, - "Double": { - "description": "A control parameter that is a double.", - "type": "number" - }, - "Enum": { - "description": "A control parameter that is an enum.", - "maxLength": 2048, - "type": "string" - }, - "EnumList": { - "description": "A control parameter that is a list of enums.", - "insertionOrder": true, - "items": { - "maxLength": 2048, - "type": "string" - }, - "maxItems": 100, - "type": "array", - "uniqueItems": true - }, - "Integer": { - "description": "A control parameter that is an integer.", - "type": "integer" - }, - "IntegerList": { - "description": "A control parameter that is a list of integers.", - "insertionOrder": true, - "items": { - "type": "integer" - }, - "maxItems": 100, - "type": "array", - "uniqueItems": true - }, - "String": { - "description": "A control parameter that is a string.", - "maxLength": 2048, - "type": "string" - }, - "StringList": { - "description": "A control parameter that is a list of strings.", - "insertionOrder": true, - "items": { - "maxLength": 2048, - "type": "string" - }, - "maxItems": 100, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "Policy": { - "additionalProperties": false, - "description": "An object that defines how Security Hub is configured.", - "properties": { - "SecurityHub": { - "$ref": "#/definitions/SecurityHubPolicy" - } - }, - "type": "object" - }, - "SecurityControlCustomParameter": { - "additionalProperties": false, - "description": "An object of security control and control parameter value that are included in a configuration policy.", - "properties": { - "Parameters": { - "additionalProperties": false, - "description": "An object that specifies parameter values for a control in a configuration policy.", - "minProperties": 1, - "patternProperties": { - "^[-_+=.:/@\\w\\s]{1,128}$": { - "$ref": "#/definitions/ParameterConfiguration" - } - }, - "type": "object" - }, - "SecurityControlId": { - "description": "The ID of the security control.", - "maxLength": 2048, - "type": "string" - } - }, - "type": "object" - }, - "SecurityControlsConfiguration": { - "additionalProperties": false, - "description": "An object that defines which security controls are enabled in an AWS Security Hub configuration policy.", - "properties": { - "DisabledSecurityControlIdentifiers": { - "description": "A list of security controls that are disabled in the configuration policy", - "insertionOrder": true, - "items": { - "maxLength": 2048, - "type": "string" - }, - "maxItems": 1000, - "type": "array", - "uniqueItems": true - }, - "EnabledSecurityControlIdentifiers": { - "description": "A list of security controls that are enabled in the configuration policy.", - "insertionOrder": true, - "items": { - "maxLength": 2048, - "type": "string" - }, - "maxItems": 1000, - "type": "array", - "uniqueItems": true - }, - "SecurityControlCustomParameters": { - "description": "A list of security controls and control parameter values that are included in a configuration policy.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/SecurityControlCustomParameter" - }, - "maxItems": 1000, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "SecurityHubPolicy": { - "additionalProperties": false, - "description": "An object that defines how AWS Security Hub is configured.", - "properties": { - "EnabledStandardIdentifiers": { - "description": "A list that defines which security standards are enabled in the configuration policy.", - "insertionOrder": true, - "items": { - "maxLength": 2048, - "type": "string" - }, - "maxItems": 1000, - "type": "array", - "uniqueItems": true - }, - "SecurityControlsConfiguration": { - "$ref": "#/definitions/SecurityControlsConfiguration" - }, - "ServiceEnabled": { - "description": "Indicates whether Security Hub is enabled in the policy.", - "type": "boolean" - } - }, - "type": "object" - }, - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "patternProperties": { - "^[a-zA-Z0-9]{1,128}$": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The AWS::SecurityHub::ConfigurationPolicy resource represents the Central Configuration Policy in your account.", - "handlers": { - "create": { - "permissions": [ - "securityhub:CreateConfigurationPolicy", - "securityhub:TagResource", - "securityhub:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "securityhub:GetConfigurationPolicy", - "securityhub:DeleteConfigurationPolicy" - ] - }, - "list": { - "permissions": [ - "securityhub:ListConfigurationPolicies", - "securityhub:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "securityhub:GetConfigurationPolicy", - "securityhub:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "securityhub:UpdateConfigurationPolicy", - "securityhub:TagResource", - "securityhub:UntagResource", - "securityhub:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the configuration policy.", - "pattern": "^arn:aws\\S*:securityhub:[a-z0-9-]+:[0-9]{12}:configuration-policy/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - }, - "ConfigurationPolicy": { - "$ref": "#/definitions/Policy" - }, - "CreatedAt": { - "description": "The date and time, in UTC and ISO 8601 format.", - "type": "string" - }, - "Description": { - "description": "The description of the configuration policy.", - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "Id": { - "description": "The universally unique identifier (UUID) of the configuration policy.", - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - }, - "Name": { - "description": "The name of the configuration policy.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "ServiceEnabled": { - "description": "Indicates whether the service that the configuration policy applies to is enabled in the policy.", - "type": "boolean" - }, - "Tags": { - "$ref": "#/definitions/Tags" - }, - "UpdatedAt": { - "description": "The date and time, in UTC and ISO 8601 format.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id", - "/properties/CreatedAt", - "/properties/UpdatedAt", - "/properties/ServiceEnabled" - ], - "required": [ - "ConfigurationPolicy", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SecurityHub::ConfigurationPolicy" -} +{ + "additionalProperties": false, + "definitions": { + "ParameterConfiguration": { + "additionalProperties": false, + "description": "An object that provides the current value of a security control parameter and identifies whether it has been customized.", + "properties": { + "Value": { + "$ref": "#/definitions/ParameterValue" + }, + "ValueType": { + "description": "Identifies whether a control parameter uses a custom user-defined value or subscribes to the default AWS Security Hub behavior.", + "enum": [ + "DEFAULT", + "CUSTOM" + ], + "type": "string" + } + }, + "required": [ + "ValueType" + ], + "type": "object" + }, + "ParameterValue": { + "additionalProperties": false, + "description": "An object that includes the data type of a security control parameter and its current value.", + "maxProperties": 1, + "minProperties": 1, + "properties": { + "Boolean": { + "description": "A control parameter that is a boolean.", + "type": "boolean" + }, + "Double": { + "description": "A control parameter that is a double.", + "type": "number" + }, + "Enum": { + "description": "A control parameter that is an enum.", + "maxLength": 2048, + "type": "string" + }, + "EnumList": { + "description": "A control parameter that is a list of enums.", + "insertionOrder": true, + "items": { + "maxLength": 2048, + "type": "string" + }, + "maxItems": 100, + "type": "array", + "uniqueItems": true + }, + "Integer": { + "description": "A control parameter that is an integer.", + "type": "integer" + }, + "IntegerList": { + "description": "A control parameter that is a list of integers.", + "insertionOrder": true, + "items": { + "type": "integer" + }, + "maxItems": 100, + "type": "array", + "uniqueItems": true + }, + "String": { + "description": "A control parameter that is a string.", + "maxLength": 2048, + "type": "string" + }, + "StringList": { + "description": "A control parameter that is a list of strings.", + "insertionOrder": true, + "items": { + "maxLength": 2048, + "type": "string" + }, + "maxItems": 100, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Policy": { + "additionalProperties": false, + "description": "An object that defines how Security Hub is configured.", + "properties": { + "SecurityHub": { + "$ref": "#/definitions/SecurityHubPolicy" + } + }, + "type": "object" + }, + "SecurityControlCustomParameter": { + "additionalProperties": false, + "description": "An object of security control and control parameter value that are included in a configuration policy.", + "properties": { + "Parameters": { + "additionalProperties": false, + "description": "An object that specifies parameter values for a control in a configuration policy.", + "minProperties": 1, + "patternProperties": { + "^[-_+=.:/@\\w\\s]{1,128}$": { + "$ref": "#/definitions/ParameterConfiguration" + } + }, + "type": "object" + }, + "SecurityControlId": { + "description": "The ID of the security control.", + "maxLength": 2048, + "type": "string" + } + }, + "type": "object" + }, + "SecurityControlsConfiguration": { + "additionalProperties": false, + "description": "An object that defines which security controls are enabled in an AWS Security Hub configuration policy.", + "properties": { + "DisabledSecurityControlIdentifiers": { + "description": "A list of security controls that are disabled in the configuration policy", + "insertionOrder": true, + "items": { + "maxLength": 2048, + "type": "string" + }, + "maxItems": 1000, + "type": "array", + "uniqueItems": true + }, + "EnabledSecurityControlIdentifiers": { + "description": "A list of security controls that are enabled in the configuration policy.", + "insertionOrder": true, + "items": { + "maxLength": 2048, + "type": "string" + }, + "maxItems": 1000, + "type": "array", + "uniqueItems": true + }, + "SecurityControlCustomParameters": { + "description": "A list of security controls and control parameter values that are included in a configuration policy.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/SecurityControlCustomParameter" + }, + "maxItems": 1000, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "SecurityHubPolicy": { + "additionalProperties": false, + "description": "An object that defines how AWS Security Hub is configured.", + "properties": { + "EnabledStandardIdentifiers": { + "description": "A list that defines which security standards are enabled in the configuration policy.", + "insertionOrder": true, + "items": { + "maxLength": 2048, + "type": "string" + }, + "maxItems": 1000, + "type": "array", + "uniqueItems": true + }, + "SecurityControlsConfiguration": { + "$ref": "#/definitions/SecurityControlsConfiguration" + }, + "ServiceEnabled": { + "description": "Indicates whether Security Hub is enabled in the policy.", + "type": "boolean" + } + }, + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + "^(?!aws:)[a-zA-Z+-=._:/]{1,128}$": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The AWS::SecurityHub::ConfigurationPolicy resource represents the Central Configuration Policy in your account.", + "handlers": { + "create": { + "permissions": [ + "securityhub:CreateConfigurationPolicy", + "securityhub:TagResource", + "securityhub:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "securityhub:GetConfigurationPolicy", + "securityhub:DeleteConfigurationPolicy" + ] + }, + "list": { + "permissions": [ + "securityhub:ListConfigurationPolicies", + "securityhub:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "securityhub:GetConfigurationPolicy", + "securityhub:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "securityhub:UpdateConfigurationPolicy", + "securityhub:TagResource", + "securityhub:UntagResource", + "securityhub:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the configuration policy.", + "pattern": "^arn:aws\\S*:securityhub:[a-z0-9-]+:[0-9]{12}:configuration-policy/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + }, + "ConfigurationPolicy": { + "$ref": "#/definitions/Policy" + }, + "CreatedAt": { + "description": "The date and time, in UTC and ISO 8601 format.", + "type": "string" + }, + "Description": { + "description": "The description of the configuration policy.", + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "Id": { + "description": "The universally unique identifier (UUID) of the configuration policy.", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + }, + "Name": { + "description": "The name of the configuration policy.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ServiceEnabled": { + "description": "Indicates whether the service that the configuration policy applies to is enabled in the policy.", + "type": "boolean" + }, + "Tags": { + "$ref": "#/definitions/Tags" + }, + "UpdatedAt": { + "description": "The date and time, in UTC and ISO 8601 format.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/CreatedAt", + "/properties/UpdatedAt", + "/properties/ServiceEnabled" + ], + "required": [ + "ConfigurationPolicy", + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "securityhub:ListTagsForResource", + "securityhub:TagResource", + "securityhub:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SecurityHub::ConfigurationPolicy" +} diff --git a/src/schema/aws-securityhub-delegatedadmin.json b/src/schema/aws-securityhub-delegatedadmin.json index 95003284..91734065 100644 --- a/src/schema/aws-securityhub-delegatedadmin.json +++ b/src/schema/aws-securityhub-delegatedadmin.json @@ -1,74 +1,74 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdminAccountId" - ], - "description": "The ``AWS::SecurityHub::DelegatedAdmin`` resource designates the delegated ASHlong administrator account for an organization. You must enable the integration between ASH and AOlong before you can designate a delegated ASH administrator. Only the management account for an organization can designate the delegated ASH administrator account. For more information, see [Designating the delegated administrator](https://docs.aws.amazon.com/securityhub/latest/userguide/designate-orgs-admin-account.html#designate-admin-instructions) in the *User Guide*.\n To change the delegated administrator account, remove the current delegated administrator account, and then designate the new account.\n To designate multiple delegated administrators in different organizations and AWS-Regions, we recommend using [mappings](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/mappings-section-structure.html).\n Tags aren't supported for this resource.", - "handlers": { - "create": { - "permissions": [ - "securityhub:EnableOrganizationAdminAccount", - "organizations:DescribeOrganization", - "organizations:EnableAWSServiceAccess", - "organizations:RegisterDelegatedAdministrator" - ] - }, - "delete": { - "permissions": [ - "securityhub:DisableOrganizationAdminAccount", - "organizations:DescribeOrganization" - ] - }, - "list": { - "permissions": [ - "securityhub:ListOrganizationAdminAccounts", - "organizations:DescribeOrganization" - ] - }, - "read": { - "permissions": [ - "securityhub:ListOrganizationAdminAccounts", - "organizations:DescribeOrganization" - ] - } - }, - "primaryIdentifier": [ - "/properties/DelegatedAdminIdentifier" - ], - "properties": { - "AdminAccountId": { - "description": "The AWS-account identifier of the account to designate as the Security Hub administrator account.", - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "DelegatedAdminIdentifier": { - "description": "", - "pattern": "^[0-9]{12}/[a-zA-Z0-9-]{1,32}$", - "type": "string" - }, - "Status": { - "description": "", - "enum": [ - "ENABLED", - "DISABLE_IN_PROGRESS" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/DelegatedAdminIdentifier", - "/properties/Status" - ], - "required": [ - "AdminAccountId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::SecurityHub::DelegatedAdmin" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AdminAccountId" + ], + "description": "The ``AWS::SecurityHub::DelegatedAdmin`` resource designates the delegated ASHlong administrator account for an organization. You must enable the integration between ASH and AOlong before you can designate a delegated ASH administrator. Only the management account for an organization can designate the delegated ASH administrator account. For more information, see [Designating the delegated administrator](https://docs.aws.amazon.com/securityhub/latest/userguide/designate-orgs-admin-account.html#designate-admin-instructions) in the *User Guide*.\n To change the delegated administrator account, remove the current delegated administrator account, and then designate the new account.\n To designate multiple delegated administrators in different organizations and AWS-Regions, we recommend using [mappings](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/mappings-section-structure.html).\n Tags aren't supported for this resource.", + "handlers": { + "create": { + "permissions": [ + "securityhub:EnableOrganizationAdminAccount", + "organizations:DescribeOrganization", + "organizations:EnableAWSServiceAccess", + "organizations:RegisterDelegatedAdministrator" + ] + }, + "delete": { + "permissions": [ + "securityhub:DisableOrganizationAdminAccount", + "organizations:DescribeOrganization" + ] + }, + "list": { + "permissions": [ + "securityhub:ListOrganizationAdminAccounts", + "organizations:DescribeOrganization" + ] + }, + "read": { + "permissions": [ + "securityhub:ListOrganizationAdminAccounts", + "organizations:DescribeOrganization" + ] + } + }, + "primaryIdentifier": [ + "/properties/DelegatedAdminIdentifier" + ], + "properties": { + "AdminAccountId": { + "description": "The AWS-account identifier of the account to designate as the Security Hub administrator account.", + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "DelegatedAdminIdentifier": { + "description": "", + "pattern": "^[0-9]{12}/[a-zA-Z0-9-]{1,32}$", + "type": "string" + }, + "Status": { + "description": "", + "enum": [ + "ENABLED", + "DISABLE_IN_PROGRESS" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DelegatedAdminIdentifier", + "/properties/Status" + ], + "required": [ + "AdminAccountId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::SecurityHub::DelegatedAdmin" +} diff --git a/src/schema/aws-securityhub-findingaggregator.json b/src/schema/aws-securityhub-findingaggregator.json index e33ee428..dc533d83 100644 --- a/src/schema/aws-securityhub-findingaggregator.json +++ b/src/schema/aws-securityhub-findingaggregator.json @@ -1,83 +1,83 @@ -{ - "additionalProperties": false, - "definitions": { - "Region": { - "pattern": "^[a-zA-Z0-9-]{1,32}$", - "type": "string" - } - }, - "description": "The ``AWS::SecurityHub::FindingAggregator`` resource enables cross-Region aggregation. When cross-Region aggregation is enabled, you can aggregate findings, finding updates, insights, control compliance statuses, and security scores from one or more linked Regions to a single aggregation Region. You can then view and manage all of this data from the aggregation Region. For more details about cross-Region aggregation, see [Cross-Region aggregation](https://docs.aws.amazon.com/securityhub/latest/userguide/finding-aggregation.html) in the *User Guide* \n This resource must be created in the Region that you want to designate as your aggregation Region.\n Cross-Region aggregation is also a prerequisite for using [central configuration](https://docs.aws.amazon.com/securityhub/latest/userguide/central-configuration-intro.html) in ASH.", - "handlers": { - "create": { - "permissions": [ - "securityhub:CreateFindingAggregator" - ] - }, - "delete": { - "permissions": [ - "securityhub:DeleteFindingAggregator" - ] - }, - "list": { - "permissions": [ - "securityhub:ListFindingAggregators" - ] - }, - "read": { - "permissions": [ - "securityhub:GetFindingAggregator" - ] - }, - "update": { - "permissions": [ - "securityhub:UpdateFindingAggregator" - ] - } - }, - "primaryIdentifier": [ - "/properties/FindingAggregatorArn" - ], - "properties": { - "FindingAggregationRegion": { - "$ref": "#/definitions/Region", - "description": "" - }, - "FindingAggregatorArn": { - "description": "", - "pattern": "arn:aws\\S*:securityhub:\\S*", - "type": "string" - }, - "RegionLinkingMode": { - "description": "Indicates whether to aggregate findings from all of the available Regions in the current partition. Also determines whether to automatically aggregate findings from new Regions as Security Hub supports them and you opt into them.\n The selected option also determines how to use the Regions provided in the Regions list.\n The options are as follows:\n + ``ALL_REGIONS`` - Aggregates findings from all of the Regions where Security Hub is enabled. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``ALL_REGIONS_EXCEPT_SPECIFIED`` - Aggregates findings from all of the Regions where Security Hub is enabled, except for the Regions listed in the ``Regions`` parameter. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``SPECIFIED_REGIONS`` - Aggregates findings only from the Regions listed in the ``Regions`` parameter. Security Hub does not automatically aggregate findings from new Regions. \n + ``NO_REGIONS`` - Aggregates no data because no Regions are selected as linked Regions.", - "enum": [ - "ALL_REGIONS", - "ALL_REGIONS_EXCEPT_SPECIFIED", - "SPECIFIED_REGIONS" - ], - "type": "string" - }, - "Regions": { - "description": "If ``RegionLinkingMode`` is ``ALL_REGIONS_EXCEPT_SPECIFIED``, then this is a space-separated list of Regions that don't replicate and send findings to the home Region.\n If ``RegionLinkingMode`` is ``SPECIFIED_REGIONS``, then this is a space-separated list of Regions that do replicate and send findings to the home Region. \n An ``InvalidInputException`` error results if you populate this field while ``RegionLinkingMode`` is ``NO_REGIONS``.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Region" - }, - "maxItems": 50, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/FindingAggregatorArn", - "/properties/FindingAggregationRegion" - ], - "required": [ - "RegionLinkingMode" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", - "tagging": { - "taggable": false - }, - "typeName": "AWS::SecurityHub::FindingAggregator" -} +{ + "additionalProperties": false, + "definitions": { + "Region": { + "pattern": "^[a-zA-Z0-9-]{1,32}$", + "type": "string" + } + }, + "description": "The ``AWS::SecurityHub::FindingAggregator`` resource enables cross-Region aggregation. When cross-Region aggregation is enabled, you can aggregate findings, finding updates, insights, control compliance statuses, and security scores from one or more linked Regions to a single aggregation Region. You can then view and manage all of this data from the aggregation Region. For more details about cross-Region aggregation, see [Cross-Region aggregation](https://docs.aws.amazon.com/securityhub/latest/userguide/finding-aggregation.html) in the *User Guide* \n This resource must be created in the Region that you want to designate as your aggregation Region.\n Cross-Region aggregation is also a prerequisite for using [central configuration](https://docs.aws.amazon.com/securityhub/latest/userguide/central-configuration-intro.html) in ASH.", + "handlers": { + "create": { + "permissions": [ + "securityhub:CreateFindingAggregator" + ] + }, + "delete": { + "permissions": [ + "securityhub:DeleteFindingAggregator" + ] + }, + "list": { + "permissions": [ + "securityhub:ListFindingAggregators" + ] + }, + "read": { + "permissions": [ + "securityhub:GetFindingAggregator" + ] + }, + "update": { + "permissions": [ + "securityhub:UpdateFindingAggregator" + ] + } + }, + "primaryIdentifier": [ + "/properties/FindingAggregatorArn" + ], + "properties": { + "FindingAggregationRegion": { + "$ref": "#/definitions/Region", + "description": "" + }, + "FindingAggregatorArn": { + "description": "", + "pattern": "arn:aws\\S*:securityhub:\\S*", + "type": "string" + }, + "RegionLinkingMode": { + "description": "Indicates whether to aggregate findings from all of the available Regions in the current partition. Also determines whether to automatically aggregate findings from new Regions as Security Hub supports them and you opt into them.\n The selected option also determines how to use the Regions provided in the Regions list.\n In CFN, the options for this property are as follows:\n + ``ALL_REGIONS`` - Indicates to aggregate findings from all of the Regions where Security Hub is enabled. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``ALL_REGIONS_EXCEPT_SPECIFIED`` - Indicates to aggregate findings from all of the Regions where Security Hub is enabled, except for the Regions listed in the ``Regions`` parameter. When you choose this option, Security Hub also automatically aggregates findings from new Regions as Security Hub supports them and you opt into them. \n + ``SPECIFIED_REGIONS`` - Indicates to aggregate findings only from the Regions listed in the ``Regions`` parameter. Security Hub does not automatically aggregate findings from new Regions.", + "enum": [ + "ALL_REGIONS", + "ALL_REGIONS_EXCEPT_SPECIFIED", + "SPECIFIED_REGIONS" + ], + "type": "string" + }, + "Regions": { + "description": "If ``RegionLinkingMode`` is ``ALL_REGIONS_EXCEPT_SPECIFIED``, then this is a space-separated list of Regions that do not aggregate findings to the aggregation Region.\n If ``RegionLinkingMode`` is ``SPECIFIED_REGIONS``, then this is a space-separated list of Regions that do aggregate findings to the aggregation Region.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Region" + }, + "maxItems": 50, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/FindingAggregatorArn", + "/properties/FindingAggregationRegion" + ], + "required": [ + "RegionLinkingMode" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", + "tagging": { + "taggable": false + }, + "typeName": "AWS::SecurityHub::FindingAggregator" +} diff --git a/src/schema/aws-securityhub-hub.json b/src/schema/aws-securityhub-hub.json index 321cd2f4..0dae5a4d 100644 --- a/src/schema/aws-securityhub-hub.json +++ b/src/schema/aws-securityhub-hub.json @@ -1,101 +1,106 @@ -{ - "additionalProperties": false, - "definitions": { - "Tags": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "patternProperties": { - "^[a-zA-Z0-9-_]{1,128}$": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The AWS::SecurityHub::Hub resource represents the implementation of the AWS Security Hub service in your account. One hub resource is created for each Region in which you enable Security Hub.\n\n", - "handlers": { - "create": { - "permissions": [ - "securityhub:EnableSecurityHub", - "securityhub:UpdateSecurityHubConfiguration", - "securityhub:TagResource", - "securityhub:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "securityhub:DisableSecurityHub" - ] - }, - "list": { - "permissions": [ - "securityhub:DescribeHub", - "securityhub:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "securityhub:DescribeHub", - "securityhub:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "securityhub:DescribeHub", - "securityhub:UpdateSecurityHubConfiguration", - "securityhub:TagResource", - "securityhub:UntagResource", - "securityhub:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ARN" - ], - "properties": { - "ARN": { - "description": "An ARN is automatically created for the customer.", - "pattern": "^arn:.*", - "type": "string" - }, - "AutoEnableControls": { - "description": "Whether to automatically enable new controls when they are added to standards that are enabled", - "type": "boolean" - }, - "ControlFindingGenerator": { - "description": "This field, used when enabling Security Hub, specifies whether the calling account has consolidated control findings turned on. If the value for this field is set to SECURITY_CONTROL, Security Hub generates a single finding for a control check even when the check applies to multiple enabled standards. If the value for this field is set to STANDARD_CONTROL, Security Hub generates separate findings for a control check when the check applies to multiple enabled standards.", - "pattern": "^(SECURITY_CONTROL|STANDARD_CONTROL)$", - "type": "string" - }, - "EnableDefaultStandards": { - "description": "Whether to enable the security standards that Security Hub has designated as automatically enabled.", - "type": "boolean" - }, - "SubscribedAt": { - "description": "The date and time when Security Hub was enabled in the account.", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/Tags" - } - }, - "readOnlyProperties": [ - "/properties/ARN", - "/properties/SubscribedAt" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SecurityHub::Hub", - "writeOnlyProperties": [ - "/properties/EnableDefaultStandards" - ] -} +{ + "additionalProperties": false, + "definitions": { + "Tags": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "patternProperties": { + "^(?!aws:)[a-zA-Z+-=._:/]+$": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The AWS::SecurityHub::Hub resource represents the implementation of the AWS Security Hub service in your account. One hub resource is created for each Region in which you enable Security Hub.\n\n", + "handlers": { + "create": { + "permissions": [ + "securityhub:EnableSecurityHub", + "securityhub:UpdateSecurityHubConfiguration", + "securityhub:TagResource", + "securityhub:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "securityhub:DisableSecurityHub" + ] + }, + "list": { + "permissions": [ + "securityhub:DescribeHub", + "securityhub:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "securityhub:DescribeHub", + "securityhub:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "securityhub:DescribeHub", + "securityhub:UpdateSecurityHubConfiguration", + "securityhub:TagResource", + "securityhub:UntagResource", + "securityhub:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ARN" + ], + "properties": { + "ARN": { + "description": "An ARN is automatically created for the customer.", + "pattern": "^arn:.*", + "type": "string" + }, + "AutoEnableControls": { + "description": "Whether to automatically enable new controls when they are added to standards that are enabled", + "type": "boolean" + }, + "ControlFindingGenerator": { + "description": "This field, used when enabling Security Hub, specifies whether the calling account has consolidated control findings turned on. If the value for this field is set to SECURITY_CONTROL, Security Hub generates a single finding for a control check even when the check applies to multiple enabled standards. If the value for this field is set to STANDARD_CONTROL, Security Hub generates separate findings for a control check when the check applies to multiple enabled standards.", + "pattern": "^(SECURITY_CONTROL|STANDARD_CONTROL)$", + "type": "string" + }, + "EnableDefaultStandards": { + "description": "Whether to enable the security standards that Security Hub has designated as automatically enabled.", + "type": "boolean" + }, + "SubscribedAt": { + "description": "The date and time when Security Hub was enabled in the account.", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/ARN", + "/properties/SubscribedAt" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "securityhub:ListTagsForResource", + "securityhub:TagResource", + "securityhub:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SecurityHub::Hub", + "writeOnlyProperties": [ + "/properties/EnableDefaultStandards" + ] +} diff --git a/src/schema/aws-securityhub-insight.json b/src/schema/aws-securityhub-insight.json index e2ed89ae..d3129d36 100644 --- a/src/schema/aws-securityhub-insight.json +++ b/src/schema/aws-securityhub-insight.json @@ -1,1287 +1,1287 @@ -{ - "additionalProperties": false, - "definitions": { - "AwsSecurityFindingFilters": { - "additionalProperties": false, - "description": "A collection of filters that are applied to all active findings aggregated by AWS Security Hub.", - "properties": { - "AwsAccountId": { - "description": "The AWS account ID in which a finding is generated.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "AwsAccountName": { - "description": "The name of the AWS account in which a finding is generated.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "CompanyName": { - "description": "The name of the findings provider (company) that owns the solution (product) that generates findings.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ComplianceAssociatedStandardsId": { - "description": "The unique identifier of a standard in which a control is enabled.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlId": { - "description": "The unique identifier of a control across standards.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlParametersName": { - "description": "The name of a security control parameter.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlParametersValue": { - "description": "The current value of a security control parameter.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ComplianceStatus": { - "description": "Exclusive to findings that are generated as the result of a check run against a specific rule in a supported standard.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "Confidence": { - "description": "A finding's confidence.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "CreatedAt": { - "description": "An ISO8601-formatted timestamp that indicates when the security findings provider captured the potential security issue that a finding captured.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/DateFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "Criticality": { - "description": "The level of importance assigned to the resources associated with the finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "Description": { - "description": "A finding's description.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsConfidence": { - "description": "The finding provider value for the finding confidence.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsCriticality": { - "description": "The finding provider value for the level of importance assigned to the resources associated with the findings.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsRelatedFindingsId": { - "description": "The finding identifier of a related finding that is identified by the finding provider.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsRelatedFindingsProductArn": { - "description": "The ARN of the solution that generated a related finding that is identified by the finding provider.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsSeverityLabel": { - "description": "The finding provider value for the severity label.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsSeverityOriginal": { - "description": "The finding provider's original value for the severity.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsTypes": { - "description": "One or more finding types that the finding provider assigned to the finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "FirstObservedAt": { - "description": "An ISO8601-formatted timestamp that indicates when the security findings provider first observed the potential security issue that a finding captured.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/DateFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "GeneratorId": { - "description": "The identifier for the solution-specific component (a discrete unit of logic) that generated a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "Id": { - "description": "The security findings provider-specific identifier for a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "Keyword": { - "description": "A keyword for a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/KeywordFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "LastObservedAt": { - "description": "An ISO8601-formatted timestamp that indicates when the security findings provider most recently observed the potential security issue that a finding captured.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/DateFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "MalwareName": { - "description": "The name of the malware that was observed.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "MalwarePath": { - "description": "The filesystem path of the malware that was observed.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "MalwareState": { - "description": "The state of the malware that was observed.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "MalwareType": { - "description": "The type of the malware that was observed.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationDomain": { - "description": "The destination domain of network-related information about a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationIpV4": { - "description": "The destination IPv4 address of network-related information about a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/IpFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationIpV6": { - "description": "The destination IPv6 address of network-related information about a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/IpFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationPort": { - "description": "The destination port of network-related information about a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "NetworkDirection": { - "description": "Indicates the direction of network traffic associated with a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "NetworkProtocol": { - "description": "The protocol of network-related information about a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceDomain": { - "description": "The source domain of network-related information about a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceIpV4": { - "description": "The source IPv4 address of network-related information about a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/IpFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceIpV6": { - "description": "The source IPv6 address of network-related information about a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/IpFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceMac": { - "description": "The source media access control (MAC) address of network-related information about a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "NetworkSourcePort": { - "description": "The source port of network-related information about a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "NoteText": { - "description": "The text of a note.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "NoteUpdatedAt": { - "description": "The timestamp of when the note was updated.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/DateFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "NoteUpdatedBy": { - "description": "The principal that created a note.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ProcessLaunchedAt": { - "description": "A timestamp that identifies when the process was launched.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/DateFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ProcessName": { - "description": "The name of the process.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ProcessParentPid": { - "description": "The parent process ID.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ProcessPath": { - "description": "The path to the process executable.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ProcessPid": { - "description": "The process ID.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ProcessTerminatedAt": { - "description": "A timestamp that identifies when the process was terminated.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/DateFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ProductArn": { - "description": "The ARN generated by Security Hub that uniquely identifies a third-party company (security findings provider) after this provider's product (solution that generates findings) is registered with Security Hub.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ProductFields": { - "description": "A data type where security findings providers can include additional solution-specific details that aren't part of the defined AwsSecurityFinding format.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/MapFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ProductName": { - "description": "The name of the solution (product) that generates findings.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "RecommendationText": { - "description": "The recommendation of what to do about the issue described in a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "RecordState": { - "description": "The updated record state for the finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "Region": { - "description": "The Region from which the finding was generated.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "RelatedFindingsId": { - "description": "The solution-generated identifier for a related finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "RelatedFindingsProductArn": { - "description": "The ARN of the solution that generated a related finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceApplicationArn": { - "description": "The ARN of the application that is related to a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceApplicationName": { - "description": "The name of the application that is related to a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIamInstanceProfileArn": { - "description": "The IAM profile ARN of the instance.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceImageId": { - "description": "The Amazon Machine Image (AMI) ID of the instance.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIpV4Addresses": { - "description": "The IPv4 addresses associated with the instance.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/IpFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIpV6Addresses": { - "description": "The IPv6 addresses associated with the instance.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/IpFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceKeyName": { - "description": "The key name associated with the instance.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceLaunchedAt": { - "description": "The date and time the instance was launched.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/DateFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceSubnetId": { - "description": "The identifier of the subnet that the instance was launched in.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceType": { - "description": "The instance type of the instance.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceVpcId": { - "description": "The identifier of the VPC that the instance was launched in.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyCreatedAt": { - "description": "The creation date/time of the IAM access key related to a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/DateFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyPrincipalName": { - "description": "The name of the principal that is associated with an IAM access key.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyStatus": { - "description": "The status of the IAM access key related to a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyUserName": { - "description": "The user associated with the IAM access key related to a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamUserUserName": { - "description": "The name of an IAM user.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsS3BucketOwnerId": { - "description": "The canonical user ID of the owner of the S3 bucket.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsS3BucketOwnerName": { - "description": "The display name of the owner of the S3 bucket.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerImageId": { - "description": "The identifier of the image related to a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerImageName": { - "description": "The name of the image related to a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerLaunchedAt": { - "description": "A timestamp that identifies when the container was started.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/DateFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerName": { - "description": "The name of the container related to a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceDetailsOther": { - "description": "The details of a resource that doesn't have a specific subfield for the resource type defined.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/MapFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceId": { - "description": "The canonical identifier for the given resource type.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourcePartition": { - "description": "The canonical AWS partition name that the Region is assigned to.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceRegion": { - "description": "The canonical AWS external Region name where this resource is located.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceTags": { - "description": "A list of AWS tags associated with a resource at the time the finding was processed.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/MapFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ResourceType": { - "description": "Specifies the type of the resource that details are provided for.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "Sample": { - "description": "Indicates whether or not sample findings are included in the filter results.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/BooleanFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "SeverityLabel": { - "description": "The label of a finding's severity.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "SeverityNormalized": { - "description": "The normalized severity of a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "SeverityProduct": { - "description": "The native severity as defined by the security findings provider's solution that generated the finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "SourceUrl": { - "description": "A URL that links to a page about the current finding in the security findings provider's solution.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorCategory": { - "description": "The category of a threat intelligence indicator.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorLastObservedAt": { - "description": "A timestamp that identifies the last observation of a threat intelligence indicator.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/DateFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorSource": { - "description": "The source of the threat intelligence.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorSourceUrl": { - "description": "The URL for more details from the source of the threat intelligence.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorType": { - "description": "The type of a threat intelligence indicator.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorValue": { - "description": "The value of a threat intelligence indicator.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "Title": { - "description": "A finding's title.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "Type": { - "description": "A finding type in the format of namespace/category/classifier that classifies a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "UpdatedAt": { - "description": "An ISO8601-formatted timestamp that indicates when the security findings provider last updated the finding record.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/DateFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "UserDefinedFields": { - "description": "A list of name/value string pairs associated with the finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/MapFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "VerificationState": { - "description": "The veracity of a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "VulnerabilitiesExploitAvailable": { - "description": "Indicates whether a software vulnerability in your environment has a known exploit.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "VulnerabilitiesFixAvailable": { - "description": "Indicates whether a vulnerability is fixed in a newer version of the affected software packages.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "WorkflowState": { - "description": "The workflow state of a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - }, - "WorkflowStatus": { - "description": "The status of the investigation into a finding.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StringFilter" - }, - "maxItems": 20, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "BooleanFilter": { - "additionalProperties": false, - "description": "Boolean filter for querying findings.", - "properties": { - "Value": { - "description": "The value of the boolean.", - "type": "boolean" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "DateFilter": { - "additionalProperties": false, - "description": "A date filter for querying findings.", - "properties": { - "DateRange": { - "$ref": "#/definitions/DateRange" - }, - "End": { - "$ref": "#/definitions/ISO8601DateString" - }, - "Start": { - "$ref": "#/definitions/ISO8601DateString" - } - }, - "type": "object" - }, - "DateRange": { - "additionalProperties": false, - "description": "A date range for the date filter.", - "properties": { - "Unit": { - "description": "A date range unit for the date filter.", - "enum": [ - "DAYS" - ], - "type": "string" - }, - "Value": { - "description": "A date range value for the date filter.", - "type": "number" - } - }, - "required": [ - "Unit", - "Value" - ], - "type": "object" - }, - "ISO8601DateString": { - "description": "The date and time, in UTC and ISO 8601 format.", - "pattern": "^([\\+-]?\\d{4}(?!\\d{2}))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([tT]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$", - "type": "string" - }, - "IpFilter": { - "additionalProperties": false, - "description": "The IP filter for querying findings.", - "properties": { - "Cidr": { - "$ref": "#/definitions/NonEmptyString", - "description": "A finding's CIDR value." - } - }, - "required": [ - "Cidr" - ], - "type": "object" - }, - "KeywordFilter": { - "additionalProperties": false, - "description": "A keyword filter for querying findings.", - "properties": { - "Value": { - "$ref": "#/definitions/NonEmptyString", - "description": "A value for the keyword." - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "MapFilter": { - "additionalProperties": false, - "description": "A map filter for filtering AWS Security Hub findings.", - "properties": { - "Comparison": { - "description": "The condition to apply to the key value when filtering Security Hub findings with a map filter.", - "enum": [ - "EQUALS", - "NOT_EQUALS" - ], - "type": "string" - }, - "Key": { - "$ref": "#/definitions/NonEmptyString" - }, - "Value": { - "$ref": "#/definitions/NonEmptyString" - } - }, - "required": [ - "Comparison", - "Key", - "Value" - ], - "type": "object" - }, - "NonEmptyString": { - "description": "Non-empty string definition.", - "minLength": 1, - "type": "string" - }, - "NumberFilter": { - "additionalProperties": false, - "description": "A number filter for querying findings.", - "properties": { - "Eq": { - "description": "The equal-to condition to be applied to a single field when querying for findings.", - "type": "number" - }, - "Gte": { - "description": "The greater-than-equal condition to be applied to a single field when querying for findings.", - "type": "number" - }, - "Lte": { - "description": "The less-than-equal condition to be applied to a single field when querying for findings.", - "type": "number" - } - }, - "type": "object" - }, - "StringFilter": { - "additionalProperties": false, - "description": "A string filter for filtering AWS Security Hub findings.", - "properties": { - "Comparison": { - "$ref": "#/definitions/StringFilterComparison" - }, - "Value": { - "$ref": "#/definitions/NonEmptyString" - } - }, - "required": [ - "Comparison", - "Value" - ], - "type": "object" - }, - "StringFilterComparison": { - "description": "The condition to apply to a string value when filtering Security Hub findings.", - "enum": [ - "EQUALS", - "PREFIX", - "NOT_EQUALS", - "PREFIX_NOT_EQUALS" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Filters/Keyword", - "/properties/Filters/ResourceAwsIamAccessKeyUserName", - "/properties/Filters/SeverityNormalized", - "/properties/Filters/SeverityProduct" - ], - "description": "The AWS::SecurityHub::Insight resource represents the AWS Security Hub Insight in your account. An AWS Security Hub insight is a collection of related findings.", - "handlers": { - "create": { - "permissions": [ - "securityhub:CreateInsight" - ] - }, - "delete": { - "permissions": [ - "securityhub:GetInsights", - "securityhub:DeleteInsight" - ] - }, - "list": { - "permissions": [ - "securityhub:GetInsights" - ] - }, - "read": { - "permissions": [ - "securityhub:GetInsights" - ] - }, - "update": { - "permissions": [ - "securityhub:UpdateInsight" - ] - } - }, - "primaryIdentifier": [ - "/properties/InsightArn" - ], - "properties": { - "Filters": { - "$ref": "#/definitions/AwsSecurityFindingFilters", - "description": "One or more attributes used to filter the findings included in the insight", - "maxProperties": 10 - }, - "GroupByAttribute": { - "$ref": "#/definitions/NonEmptyString", - "description": "The grouping attribute for the insight's findings" - }, - "InsightArn": { - "description": "The ARN of a Security Hub insight", - "pattern": "arn:aws\\S*:securityhub:\\S*", - "type": "string" - }, - "Name": { - "description": "The name of a Security Hub insight", - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/InsightArn" - ], - "required": [ - "Filters", - "Name", - "GroupByAttribute" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", - "tagging": { - "taggable": false - }, - "typeName": "AWS::SecurityHub::Insight" -} +{ + "additionalProperties": false, + "definitions": { + "AwsSecurityFindingFilters": { + "additionalProperties": false, + "description": "A collection of filters that are applied to all active findings aggregated by AWS Security Hub.", + "properties": { + "AwsAccountId": { + "description": "The AWS account ID in which a finding is generated.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "AwsAccountName": { + "description": "The name of the AWS account in which a finding is generated.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "CompanyName": { + "description": "The name of the findings provider (company) that owns the solution (product) that generates findings.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ComplianceAssociatedStandardsId": { + "description": "The unique identifier of a standard in which a control is enabled.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ComplianceSecurityControlId": { + "description": "The unique identifier of a control across standards.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ComplianceSecurityControlParametersName": { + "description": "The name of a security control parameter.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ComplianceSecurityControlParametersValue": { + "description": "The current value of a security control parameter.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ComplianceStatus": { + "description": "Exclusive to findings that are generated as the result of a check run against a specific rule in a supported standard.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "Confidence": { + "description": "A finding's confidence.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/NumberFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "CreatedAt": { + "description": "An ISO8601-formatted timestamp that indicates when the security findings provider captured the potential security issue that a finding captured.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/DateFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "Criticality": { + "description": "The level of importance assigned to the resources associated with the finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/NumberFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "Description": { + "description": "A finding's description.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "FindingProviderFieldsConfidence": { + "description": "The finding provider value for the finding confidence.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/NumberFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "FindingProviderFieldsCriticality": { + "description": "The finding provider value for the level of importance assigned to the resources associated with the findings.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/NumberFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "FindingProviderFieldsRelatedFindingsId": { + "description": "The finding identifier of a related finding that is identified by the finding provider.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "FindingProviderFieldsRelatedFindingsProductArn": { + "description": "The ARN of the solution that generated a related finding that is identified by the finding provider.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "FindingProviderFieldsSeverityLabel": { + "description": "The finding provider value for the severity label.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "FindingProviderFieldsSeverityOriginal": { + "description": "The finding provider's original value for the severity.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "FindingProviderFieldsTypes": { + "description": "One or more finding types that the finding provider assigned to the finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "FirstObservedAt": { + "description": "An ISO8601-formatted timestamp that indicates when the security findings provider first observed the potential security issue that a finding captured.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/DateFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "GeneratorId": { + "description": "The identifier for the solution-specific component (a discrete unit of logic) that generated a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "Id": { + "description": "The security findings provider-specific identifier for a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "Keyword": { + "description": "A keyword for a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/KeywordFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "LastObservedAt": { + "description": "An ISO8601-formatted timestamp that indicates when the security findings provider most recently observed the potential security issue that a finding captured.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/DateFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "MalwareName": { + "description": "The name of the malware that was observed.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "MalwarePath": { + "description": "The filesystem path of the malware that was observed.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "MalwareState": { + "description": "The state of the malware that was observed.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "MalwareType": { + "description": "The type of the malware that was observed.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "NetworkDestinationDomain": { + "description": "The destination domain of network-related information about a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "NetworkDestinationIpV4": { + "description": "The destination IPv4 address of network-related information about a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IpFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "NetworkDestinationIpV6": { + "description": "The destination IPv6 address of network-related information about a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IpFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "NetworkDestinationPort": { + "description": "The destination port of network-related information about a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/NumberFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "NetworkDirection": { + "description": "Indicates the direction of network traffic associated with a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "NetworkProtocol": { + "description": "The protocol of network-related information about a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "NetworkSourceDomain": { + "description": "The source domain of network-related information about a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "NetworkSourceIpV4": { + "description": "The source IPv4 address of network-related information about a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IpFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "NetworkSourceIpV6": { + "description": "The source IPv6 address of network-related information about a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IpFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "NetworkSourceMac": { + "description": "The source media access control (MAC) address of network-related information about a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "NetworkSourcePort": { + "description": "The source port of network-related information about a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/NumberFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "NoteText": { + "description": "The text of a note.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "NoteUpdatedAt": { + "description": "The timestamp of when the note was updated.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/DateFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "NoteUpdatedBy": { + "description": "The principal that created a note.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ProcessLaunchedAt": { + "description": "A timestamp that identifies when the process was launched.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/DateFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ProcessName": { + "description": "The name of the process.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ProcessParentPid": { + "description": "The parent process ID.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/NumberFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ProcessPath": { + "description": "The path to the process executable.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ProcessPid": { + "description": "The process ID.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/NumberFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ProcessTerminatedAt": { + "description": "A timestamp that identifies when the process was terminated.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/DateFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ProductArn": { + "description": "The ARN generated by Security Hub that uniquely identifies a third-party company (security findings provider) after this provider's product (solution that generates findings) is registered with Security Hub.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ProductFields": { + "description": "A data type where security findings providers can include additional solution-specific details that aren't part of the defined AwsSecurityFinding format.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/MapFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ProductName": { + "description": "The name of the solution (product) that generates findings.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "RecommendationText": { + "description": "The recommendation of what to do about the issue described in a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "RecordState": { + "description": "The updated record state for the finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "Region": { + "description": "The Region from which the finding was generated.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "RelatedFindingsId": { + "description": "The solution-generated identifier for a related finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "RelatedFindingsProductArn": { + "description": "The ARN of the solution that generated a related finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceApplicationArn": { + "description": "The ARN of the application that is related to a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceApplicationName": { + "description": "The name of the application that is related to a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceAwsEc2InstanceIamInstanceProfileArn": { + "description": "The IAM profile ARN of the instance.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceAwsEc2InstanceImageId": { + "description": "The Amazon Machine Image (AMI) ID of the instance.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceAwsEc2InstanceIpV4Addresses": { + "description": "The IPv4 addresses associated with the instance.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IpFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceAwsEc2InstanceIpV6Addresses": { + "description": "The IPv6 addresses associated with the instance.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/IpFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceAwsEc2InstanceKeyName": { + "description": "The key name associated with the instance.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceAwsEc2InstanceLaunchedAt": { + "description": "The date and time the instance was launched.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/DateFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceAwsEc2InstanceSubnetId": { + "description": "The identifier of the subnet that the instance was launched in.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceAwsEc2InstanceType": { + "description": "The instance type of the instance.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceAwsEc2InstanceVpcId": { + "description": "The identifier of the VPC that the instance was launched in.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceAwsIamAccessKeyCreatedAt": { + "description": "The creation date/time of the IAM access key related to a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/DateFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceAwsIamAccessKeyPrincipalName": { + "description": "The name of the principal that is associated with an IAM access key.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceAwsIamAccessKeyStatus": { + "description": "The status of the IAM access key related to a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceAwsIamAccessKeyUserName": { + "description": "The user associated with the IAM access key related to a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceAwsIamUserUserName": { + "description": "The name of an IAM user.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceAwsS3BucketOwnerId": { + "description": "The canonical user ID of the owner of the S3 bucket.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceAwsS3BucketOwnerName": { + "description": "The display name of the owner of the S3 bucket.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceContainerImageId": { + "description": "The identifier of the image related to a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceContainerImageName": { + "description": "The name of the image related to a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceContainerLaunchedAt": { + "description": "A timestamp that identifies when the container was started.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/DateFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceContainerName": { + "description": "The name of the container related to a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceDetailsOther": { + "description": "The details of a resource that doesn't have a specific subfield for the resource type defined.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/MapFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceId": { + "description": "The canonical identifier for the given resource type.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourcePartition": { + "description": "The canonical AWS partition name that the Region is assigned to.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceRegion": { + "description": "The canonical AWS external Region name where this resource is located.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceTags": { + "description": "A list of AWS tags associated with a resource at the time the finding was processed.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/MapFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceType": { + "description": "Specifies the type of the resource that details are provided for.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "Sample": { + "description": "Indicates whether or not sample findings are included in the filter results.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/BooleanFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "SeverityLabel": { + "description": "The label of a finding's severity.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "SeverityNormalized": { + "description": "The normalized severity of a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/NumberFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "SeverityProduct": { + "description": "The native severity as defined by the security findings provider's solution that generated the finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/NumberFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "SourceUrl": { + "description": "A URL that links to a page about the current finding in the security findings provider's solution.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ThreatIntelIndicatorCategory": { + "description": "The category of a threat intelligence indicator.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ThreatIntelIndicatorLastObservedAt": { + "description": "A timestamp that identifies the last observation of a threat intelligence indicator.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/DateFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ThreatIntelIndicatorSource": { + "description": "The source of the threat intelligence.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ThreatIntelIndicatorSourceUrl": { + "description": "The URL for more details from the source of the threat intelligence.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ThreatIntelIndicatorType": { + "description": "The type of a threat intelligence indicator.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ThreatIntelIndicatorValue": { + "description": "The value of a threat intelligence indicator.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "Title": { + "description": "A finding's title.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "A finding type in the format of namespace/category/classifier that classifies a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "UpdatedAt": { + "description": "An ISO8601-formatted timestamp that indicates when the security findings provider last updated the finding record.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/DateFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "UserDefinedFields": { + "description": "A list of name/value string pairs associated with the finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/MapFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "VerificationState": { + "description": "The veracity of a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "VulnerabilitiesExploitAvailable": { + "description": "Indicates whether a software vulnerability in your environment has a known exploit.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "VulnerabilitiesFixAvailable": { + "description": "Indicates whether a vulnerability is fixed in a newer version of the affected software packages.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "WorkflowState": { + "description": "The workflow state of a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "WorkflowStatus": { + "description": "The status of the investigation into a finding.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "BooleanFilter": { + "additionalProperties": false, + "description": "Boolean filter for querying findings.", + "properties": { + "Value": { + "description": "The value of the boolean.", + "type": "boolean" + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "DateFilter": { + "additionalProperties": false, + "description": "A date filter for querying findings.", + "properties": { + "DateRange": { + "$ref": "#/definitions/DateRange" + }, + "End": { + "$ref": "#/definitions/ISO8601DateString" + }, + "Start": { + "$ref": "#/definitions/ISO8601DateString" + } + }, + "type": "object" + }, + "DateRange": { + "additionalProperties": false, + "description": "A date range for the date filter.", + "properties": { + "Unit": { + "description": "A date range unit for the date filter.", + "enum": [ + "DAYS" + ], + "type": "string" + }, + "Value": { + "description": "A date range value for the date filter.", + "type": "number" + } + }, + "required": [ + "Unit", + "Value" + ], + "type": "object" + }, + "ISO8601DateString": { + "description": "The date and time, in UTC and ISO 8601 format.", + "pattern": "^([\\+-]?\\d{4}(?!\\d{2}))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([tT]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$", + "type": "string" + }, + "IpFilter": { + "additionalProperties": false, + "description": "The IP filter for querying findings.", + "properties": { + "Cidr": { + "$ref": "#/definitions/NonEmptyString", + "description": "A finding's CIDR value." + } + }, + "required": [ + "Cidr" + ], + "type": "object" + }, + "KeywordFilter": { + "additionalProperties": false, + "description": "A keyword filter for querying findings.", + "properties": { + "Value": { + "$ref": "#/definitions/NonEmptyString", + "description": "A value for the keyword." + } + }, + "required": [ + "Value" + ], + "type": "object" + }, + "MapFilter": { + "additionalProperties": false, + "description": "A map filter for filtering AWS Security Hub findings.", + "properties": { + "Comparison": { + "description": "The condition to apply to the key value when filtering Security Hub findings with a map filter.", + "enum": [ + "EQUALS", + "NOT_EQUALS" + ], + "type": "string" + }, + "Key": { + "$ref": "#/definitions/NonEmptyString" + }, + "Value": { + "$ref": "#/definitions/NonEmptyString" + } + }, + "required": [ + "Comparison", + "Key", + "Value" + ], + "type": "object" + }, + "NonEmptyString": { + "description": "Non-empty string definition.", + "minLength": 1, + "type": "string" + }, + "NumberFilter": { + "additionalProperties": false, + "description": "A number filter for querying findings.", + "properties": { + "Eq": { + "description": "The equal-to condition to be applied to a single field when querying for findings.", + "type": "number" + }, + "Gte": { + "description": "The greater-than-equal condition to be applied to a single field when querying for findings.", + "type": "number" + }, + "Lte": { + "description": "The less-than-equal condition to be applied to a single field when querying for findings.", + "type": "number" + } + }, + "type": "object" + }, + "StringFilter": { + "additionalProperties": false, + "description": "A string filter for filtering AWS Security Hub findings.", + "properties": { + "Comparison": { + "$ref": "#/definitions/StringFilterComparison" + }, + "Value": { + "$ref": "#/definitions/NonEmptyString" + } + }, + "required": [ + "Comparison", + "Value" + ], + "type": "object" + }, + "StringFilterComparison": { + "description": "The condition to apply to a string value when filtering Security Hub findings.", + "enum": [ + "EQUALS", + "PREFIX", + "NOT_EQUALS", + "PREFIX_NOT_EQUALS" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Filters/Keyword", + "/properties/Filters/ResourceAwsIamAccessKeyUserName", + "/properties/Filters/SeverityNormalized", + "/properties/Filters/SeverityProduct" + ], + "description": "The AWS::SecurityHub::Insight resource represents the AWS Security Hub Insight in your account. An AWS Security Hub insight is a collection of related findings.", + "handlers": { + "create": { + "permissions": [ + "securityhub:CreateInsight" + ] + }, + "delete": { + "permissions": [ + "securityhub:GetInsights", + "securityhub:DeleteInsight" + ] + }, + "list": { + "permissions": [ + "securityhub:GetInsights" + ] + }, + "read": { + "permissions": [ + "securityhub:GetInsights" + ] + }, + "update": { + "permissions": [ + "securityhub:UpdateInsight" + ] + } + }, + "primaryIdentifier": [ + "/properties/InsightArn" + ], + "properties": { + "Filters": { + "$ref": "#/definitions/AwsSecurityFindingFilters", + "description": "One or more attributes used to filter the findings included in the insight", + "maxProperties": 10 + }, + "GroupByAttribute": { + "$ref": "#/definitions/NonEmptyString", + "description": "The grouping attribute for the insight's findings" + }, + "InsightArn": { + "description": "The ARN of a Security Hub insight", + "pattern": "arn:aws\\S*:securityhub:\\S*", + "type": "string" + }, + "Name": { + "description": "The name of a Security Hub insight", + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/InsightArn" + ], + "required": [ + "Filters", + "Name", + "GroupByAttribute" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", + "tagging": { + "taggable": false + }, + "typeName": "AWS::SecurityHub::Insight" +} diff --git a/src/schema/aws-securityhub-organizationconfiguration.json b/src/schema/aws-securityhub-organizationconfiguration.json index be799f2f..3a8622ba 100644 --- a/src/schema/aws-securityhub-organizationconfiguration.json +++ b/src/schema/aws-securityhub-organizationconfiguration.json @@ -1,99 +1,99 @@ -{ - "additionalProperties": false, - "description": "The AWS::SecurityHub::OrganizationConfiguration resource represents the configuration of your organization in Security Hub. Only the Security Hub administrator account can create Organization Configuration resource in each region and can opt-in to Central Configuration only in the aggregation region of FindingAggregator.", - "handlers": { - "create": { - "permissions": [ - "securityhub:UpdateOrganizationConfiguration", - "securityhub:DescribeOrganizationConfiguration", - "organizations:DescribeOrganization" - ] - }, - "delete": { - "permissions": [ - "securityhub:UpdateOrganizationConfiguration", - "securityhub:DescribeOrganizationConfiguration", - "securityhub:ListFindingAggregators", - "organizations:DescribeOrganization" - ] - }, - "list": { - "permissions": [ - "securityhub:DescribeOrganizationConfiguration" - ] - }, - "read": { - "permissions": [ - "securityhub:DescribeOrganizationConfiguration" - ] - }, - "update": { - "permissions": [ - "securityhub:UpdateOrganizationConfiguration", - "securityhub:DescribeOrganizationConfiguration", - "organizations:DescribeOrganization" - ] - } - }, - "primaryIdentifier": [ - "/properties/OrganizationConfigurationIdentifier" - ], - "properties": { - "AutoEnable": { - "description": "Whether to automatically enable Security Hub in new member accounts when they join the organization.", - "type": "boolean" - }, - "AutoEnableStandards": { - "description": "Whether to automatically enable Security Hub default standards in new member accounts when they join the organization.", - "enum": [ - "DEFAULT", - "NONE" - ], - "type": "string" - }, - "ConfigurationType": { - "description": "Indicates whether the organization uses local or central configuration.", - "enum": [ - "CENTRAL", - "LOCAL" - ], - "type": "string" - }, - "MemberAccountLimitReached": { - "description": "Whether the maximum number of allowed member accounts are already associated with the Security Hub administrator account.", - "type": "boolean" - }, - "OrganizationConfigurationIdentifier": { - "description": "The identifier of the OrganizationConfiguration being created and assigned as the unique identifier.", - "pattern": "^[0-9]{12}/[a-zA-Z0-9-]{1,32}/securityhub-organization-configuration$", - "type": "string" - }, - "Status": { - "description": "Describes whether central configuration could be enabled as the ConfigurationType for the organization.", - "enum": [ - "PENDING", - "ENABLED", - "FAILED" - ], - "type": "string" - }, - "StatusMessage": { - "description": "Provides an explanation if the value of Status is equal to FAILED when ConfigurationType is equal to CENTRAL.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/OrganizationConfigurationIdentifier", - "/properties/Status", - "/properties/StatusMessage", - "/properties/MemberAccountLimitReached" - ], - "required": [ - "AutoEnable" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", - "tagging": { - "taggable": false - }, - "typeName": "AWS::SecurityHub::OrganizationConfiguration" -} +{ + "additionalProperties": false, + "description": "The AWS::SecurityHub::OrganizationConfiguration resource represents the configuration of your organization in Security Hub. Only the Security Hub administrator account can create Organization Configuration resource in each region and can opt-in to Central Configuration only in the aggregation region of FindingAggregator.", + "handlers": { + "create": { + "permissions": [ + "securityhub:UpdateOrganizationConfiguration", + "securityhub:DescribeOrganizationConfiguration", + "organizations:DescribeOrganization" + ] + }, + "delete": { + "permissions": [ + "securityhub:UpdateOrganizationConfiguration", + "securityhub:DescribeOrganizationConfiguration", + "securityhub:ListFindingAggregators", + "organizations:DescribeOrganization" + ] + }, + "list": { + "permissions": [ + "securityhub:DescribeOrganizationConfiguration" + ] + }, + "read": { + "permissions": [ + "securityhub:DescribeOrganizationConfiguration" + ] + }, + "update": { + "permissions": [ + "securityhub:UpdateOrganizationConfiguration", + "securityhub:DescribeOrganizationConfiguration", + "organizations:DescribeOrganization" + ] + } + }, + "primaryIdentifier": [ + "/properties/OrganizationConfigurationIdentifier" + ], + "properties": { + "AutoEnable": { + "description": "Whether to automatically enable Security Hub in new member accounts when they join the organization.", + "type": "boolean" + }, + "AutoEnableStandards": { + "description": "Whether to automatically enable Security Hub default standards in new member accounts when they join the organization.", + "enum": [ + "DEFAULT", + "NONE" + ], + "type": "string" + }, + "ConfigurationType": { + "description": "Indicates whether the organization uses local or central configuration.", + "enum": [ + "CENTRAL", + "LOCAL" + ], + "type": "string" + }, + "MemberAccountLimitReached": { + "description": "Whether the maximum number of allowed member accounts are already associated with the Security Hub administrator account.", + "type": "boolean" + }, + "OrganizationConfigurationIdentifier": { + "description": "The identifier of the OrganizationConfiguration being created and assigned as the unique identifier.", + "pattern": "^[0-9]{12}/[a-zA-Z0-9-]{1,32}/securityhub-organization-configuration$", + "type": "string" + }, + "Status": { + "description": "Describes whether central configuration could be enabled as the ConfigurationType for the organization.", + "enum": [ + "PENDING", + "ENABLED", + "FAILED" + ], + "type": "string" + }, + "StatusMessage": { + "description": "Provides an explanation if the value of Status is equal to FAILED when ConfigurationType is equal to CENTRAL.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/OrganizationConfigurationIdentifier", + "/properties/Status", + "/properties/StatusMessage", + "/properties/MemberAccountLimitReached" + ], + "required": [ + "AutoEnable" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", + "tagging": { + "taggable": false + }, + "typeName": "AWS::SecurityHub::OrganizationConfiguration" +} diff --git a/src/schema/aws-securityhub-policyassociation.json b/src/schema/aws-securityhub-policyassociation.json index 9dbb5aa7..d7b7bff1 100644 --- a/src/schema/aws-securityhub-policyassociation.json +++ b/src/schema/aws-securityhub-policyassociation.json @@ -1,110 +1,110 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TargetId", - "/properties/TargetType" - ], - "description": "The AWS::SecurityHub::PolicyAssociation resource represents the AWS Security Hub Central Configuration Policy associations in your Target. Only the AWS Security Hub delegated administrator can create the resouce from the home region.", - "handlers": { - "create": { - "permissions": [ - "securityhub:StartConfigurationPolicyAssociation", - "securityhub:GetConfigurationPolicyAssociation" - ], - "timeoutInMinutes": 1440 - }, - "delete": { - "permissions": [ - "securityhub:StartConfigurationPolicyDisassociation", - "securityhub:GetConfigurationPolicyAssociation" - ] - }, - "list": { - "permissions": [ - "securityhub:ListConfigurationPolicyAssociations" - ] - }, - "read": { - "permissions": [ - "securityhub:GetConfigurationPolicyAssociation", - "securityhub:GetConfigurationPolicyAssociation" - ] - }, - "update": { - "permissions": [ - "securityhub:StartConfigurationPolicyAssociation", - "securityhub:GetConfigurationPolicyAssociation" - ], - "timeoutInMinutes": 1440 - } - }, - "primaryIdentifier": [ - "/properties/AssociationIdentifier" - ], - "properties": { - "AssociationIdentifier": { - "description": "A unique identifier to indicates if the target has an association", - "type": "string" - }, - "AssociationStatus": { - "description": "The current status of the association between the specified target and the configuration", - "enum": [ - "SUCCESS", - "PENDING", - "FAILED" - ], - "type": "string" - }, - "AssociationStatusMessage": { - "description": "An explanation for a FAILED value for AssociationStatus", - "type": "string" - }, - "AssociationType": { - "description": "Indicates whether the association between the specified target and the configuration was directly applied by the Security Hub delegated administrator or inherited from a parent", - "enum": [ - "APPLIED", - "INHERITED" - ], - "type": "string" - }, - "ConfigurationPolicyId": { - "description": "The universally unique identifier (UUID) of the configuration policy or a value of SELF_MANAGED_SECURITY_HUB for a self-managed configuration", - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$|^SELF_MANAGED_SECURITY_HUB$", - "type": "string" - }, - "TargetId": { - "description": "The identifier of the target account, organizational unit, or the root", - "type": "string" - }, - "TargetType": { - "description": "Indicates whether the target is an AWS account, organizational unit, or the organization root", - "enum": [ - "ACCOUNT", - "ORGANIZATIONAL_UNIT", - "ROOT" - ], - "type": "string" - }, - "UpdatedAt": { - "description": "The date and time, in UTC and ISO 8601 format, that the configuration policy association was last updated", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AssociationStatus", - "/properties/AssociationType", - "/properties/AssociationStatusMessage", - "/properties/UpdatedAt", - "/properties/AssociationIdentifier" - ], - "required": [ - "TargetId", - "TargetType", - "ConfigurationPolicyId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", - "tagging": { - "taggable": false - }, - "typeName": "AWS::SecurityHub::PolicyAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TargetId", + "/properties/TargetType" + ], + "description": "The AWS::SecurityHub::PolicyAssociation resource represents the AWS Security Hub Central Configuration Policy associations in your Target. Only the AWS Security Hub delegated administrator can create the resouce from the home region.", + "handlers": { + "create": { + "permissions": [ + "securityhub:StartConfigurationPolicyAssociation", + "securityhub:GetConfigurationPolicyAssociation" + ], + "timeoutInMinutes": 1440 + }, + "delete": { + "permissions": [ + "securityhub:StartConfigurationPolicyDisassociation", + "securityhub:GetConfigurationPolicyAssociation" + ] + }, + "list": { + "permissions": [ + "securityhub:ListConfigurationPolicyAssociations" + ] + }, + "read": { + "permissions": [ + "securityhub:GetConfigurationPolicyAssociation", + "securityhub:GetConfigurationPolicyAssociation" + ] + }, + "update": { + "permissions": [ + "securityhub:StartConfigurationPolicyAssociation", + "securityhub:GetConfigurationPolicyAssociation" + ], + "timeoutInMinutes": 1440 + } + }, + "primaryIdentifier": [ + "/properties/AssociationIdentifier" + ], + "properties": { + "AssociationIdentifier": { + "description": "A unique identifier to indicates if the target has an association", + "type": "string" + }, + "AssociationStatus": { + "description": "The current status of the association between the specified target and the configuration", + "enum": [ + "SUCCESS", + "PENDING", + "FAILED" + ], + "type": "string" + }, + "AssociationStatusMessage": { + "description": "An explanation for a FAILED value for AssociationStatus", + "type": "string" + }, + "AssociationType": { + "description": "Indicates whether the association between the specified target and the configuration was directly applied by the Security Hub delegated administrator or inherited from a parent", + "enum": [ + "APPLIED", + "INHERITED" + ], + "type": "string" + }, + "ConfigurationPolicyId": { + "description": "The universally unique identifier (UUID) of the configuration policy or a value of SELF_MANAGED_SECURITY_HUB for a self-managed configuration", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$|^SELF_MANAGED_SECURITY_HUB$", + "type": "string" + }, + "TargetId": { + "description": "The identifier of the target account, organizational unit, or the root", + "type": "string" + }, + "TargetType": { + "description": "Indicates whether the target is an AWS account, organizational unit, or the organization root", + "enum": [ + "ACCOUNT", + "ORGANIZATIONAL_UNIT", + "ROOT" + ], + "type": "string" + }, + "UpdatedAt": { + "description": "The date and time, in UTC and ISO 8601 format, that the configuration policy association was last updated", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AssociationStatus", + "/properties/AssociationType", + "/properties/AssociationStatusMessage", + "/properties/UpdatedAt", + "/properties/AssociationIdentifier" + ], + "required": [ + "TargetId", + "TargetType", + "ConfigurationPolicyId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", + "tagging": { + "taggable": false + }, + "typeName": "AWS::SecurityHub::PolicyAssociation" +} diff --git a/src/schema/aws-securityhub-productsubscription.json b/src/schema/aws-securityhub-productsubscription.json index c370a197..d38bb726 100644 --- a/src/schema/aws-securityhub-productsubscription.json +++ b/src/schema/aws-securityhub-productsubscription.json @@ -1,60 +1,60 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProductArn" - ], - "description": "The AWS::SecurityHub::ProductSubscription resource represents a subscription to a service that is allowed to generate findings for your Security Hub account. One product subscription resource is created for each product enabled.", - "handlers": { - "create": { - "permissions": [ - "securityhub:EnableImportFindingsForProduct" - ] - }, - "delete": { - "permissions": [ - "securityhub:ListEnabledProductsForImport", - "securityhub:DisableImportFindingsForProduct" - ] - }, - "list": { - "permissions": [ - "securityhub:ListEnabledProductsForImport" - ] - }, - "read": { - "permissions": [ - "securityhub:ListEnabledProductsForImport" - ] - } - }, - "primaryIdentifier": [ - "/properties/ProductSubscriptionArn" - ], - "properties": { - "ProductArn": { - "description": "The generic ARN of the product being subscribed to", - "pattern": "arn:aws\\S*:securityhub:\\S*", - "type": "string" - }, - "ProductSubscriptionArn": { - "description": "The ARN of the product subscription for the account", - "pattern": "arn:aws\\S*:securityhub:\\S*", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ProductSubscriptionArn" - ], - "required": [ - "ProductArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::SecurityHub::ProductSubscription" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ProductArn" + ], + "description": "The AWS::SecurityHub::ProductSubscription resource represents a subscription to a service that is allowed to generate findings for your Security Hub account. One product subscription resource is created for each product enabled.", + "handlers": { + "create": { + "permissions": [ + "securityhub:EnableImportFindingsForProduct" + ] + }, + "delete": { + "permissions": [ + "securityhub:ListEnabledProductsForImport", + "securityhub:DisableImportFindingsForProduct" + ] + }, + "list": { + "permissions": [ + "securityhub:ListEnabledProductsForImport" + ] + }, + "read": { + "permissions": [ + "securityhub:ListEnabledProductsForImport" + ] + } + }, + "primaryIdentifier": [ + "/properties/ProductSubscriptionArn" + ], + "properties": { + "ProductArn": { + "description": "The generic ARN of the product being subscribed to", + "pattern": "arn:aws\\S*:securityhub:\\S*", + "type": "string" + }, + "ProductSubscriptionArn": { + "description": "The ARN of the product subscription for the account", + "pattern": "arn:aws\\S*:securityhub:\\S*", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ProductSubscriptionArn" + ], + "required": [ + "ProductArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::SecurityHub::ProductSubscription" +} diff --git a/src/schema/aws-securityhub-securitycontrol.json b/src/schema/aws-securityhub-securitycontrol.json index eaa6bc4a..ee23ba5a 100644 --- a/src/schema/aws-securityhub-securitycontrol.json +++ b/src/schema/aws-securityhub-securitycontrol.json @@ -1,222 +1,222 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/SecurityControlArn" - ] - ], - "additionalProperties": false, - "anyOf": [ - { - "required": [ - "SecurityControlId" - ] - }, - { - "required": [ - "SecurityControlArn" - ] - } - ], - "createOnlyProperties": [ - "/properties/SecurityControlId" - ], - "definitions": { - "IntegerList": { - "items": { - "type": "integer" - }, - "type": "array" - }, - "NonEmptyString": { - "pattern": ".*\\S.*", - "type": "string" - }, - "NonEmptyStringList": { - "items": { - "$ref": "#/definitions/NonEmptyString" - }, - "type": "array" - }, - "ParameterConfiguration": { - "additionalProperties": false, - "properties": { - "Value": { - "$ref": "#/definitions/ParameterValue" - }, - "ValueType": { - "enum": [ - "DEFAULT", - "CUSTOM" - ], - "type": "string" - } - }, - "required": [ - "ValueType" - ], - "type": "object" - }, - "ParameterValue": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "Boolean" - ] - }, - { - "required": [ - "Double" - ] - }, - { - "required": [ - "Enum" - ] - }, - { - "required": [ - "EnumList" - ] - }, - { - "required": [ - "Integer" - ] - }, - { - "required": [ - "IntegerList" - ] - }, - { - "required": [ - "String" - ] - }, - { - "required": [ - "StringList" - ] - } - ], - "properties": { - "Boolean": { - "description": "A control parameter that is a boolean.", - "type": "boolean" - }, - "Double": { - "description": "A control parameter that is a double.", - "type": "number" - }, - "Enum": { - "$ref": "#/definitions/NonEmptyString", - "description": "A control parameter that is a enum." - }, - "EnumList": { - "$ref": "#/definitions/NonEmptyStringList", - "description": "A control parameter that is a list of enums." - }, - "Integer": { - "description": "A control parameter that is a integer.", - "type": "integer" - }, - "IntegerList": { - "$ref": "#/definitions/IntegerList", - "description": "A control parameter that is a list of integers." - }, - "String": { - "$ref": "#/definitions/NonEmptyString", - "description": "A control parameter that is a string." - }, - "StringList": { - "$ref": "#/definitions/NonEmptyStringList", - "description": "A control parameter that is a list of strings." - } - }, - "type": "object" - }, - "Parameters": { - "additionalProperties": false, - "patternProperties": { - ".*\\S.*": { - "$ref": "#/definitions/ParameterConfiguration" - } - }, - "type": "object" - } - }, - "description": "A security control in Security Hub describes a security best practice related to a specific resource.", - "handlers": { - "create": { - "permissions": [ - "securityhub:BatchGetSecurityControls", - "securityhub:DescribeStandardsControls", - "securityhub:UpdateSecurityControl", - "securityhub:UpdateStandardsControl" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "securityhub:BatchGetSecurityControls", - "securityhub:DescribeStandardsControls", - "securityhub:UpdateSecurityControl", - "securityhub:UpdateStandardsControl" - ], - "timeoutInMinutes": 2160 - }, - "list": { - "permissions": [ - "securityhub:BatchGetSecurityControls", - "securityhub:DescribeStandardsControls", - "securityhub:ListSecurityControlDefinitions" - ] - }, - "read": { - "permissions": [ - "securityhub:BatchGetSecurityControls", - "securityhub:DescribeStandardsControls" - ] - }, - "update": { - "permissions": [ - "securityhub:BatchGetSecurityControls", - "securityhub:DescribeStandardsControls", - "securityhub:UpdateSecurityControl", - "securityhub:UpdateStandardsControl" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/SecurityControlId" - ], - "properties": { - "LastUpdateReason": { - "description": "The most recent reason for updating the customizable properties of a security control. This differs from the UpdateReason field of the BatchUpdateStandardsControlAssociations API, which tracks the reason for updating the enablement status of a control. This field accepts alphanumeric characters in addition to white spaces, dashes, and underscores.", - "pattern": "^([^\u0000-\u007f]|[-_ a-zA-Z0-9])+$", - "type": "string" - }, - "Parameters": { - "$ref": "#/definitions/Parameters", - "description": "An object that identifies the name of a control parameter, its current value, and whether it has been customized." - }, - "SecurityControlArn": { - "$ref": "#/definitions/NonEmptyString", - "description": "The Amazon Resource Name (ARN) for a security control across standards, such as `arn:aws:securityhub:eu-central-1:123456789012:security-control/S3.1`. This parameter doesn't mention a specific standard." - }, - "SecurityControlId": { - "$ref": "#/definitions/NonEmptyString", - "description": "The unique identifier of a security control across standards. Values for this field typically consist of an AWS service name and a number, such as APIGateway.3." - } - }, - "required": [ - "Parameters" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", - "tagging": { - "taggable": false - }, - "typeName": "AWS::SecurityHub::SecurityControl" -} +{ + "additionalIdentifiers": [ + [ + "/properties/SecurityControlArn" + ] + ], + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "SecurityControlId" + ] + }, + { + "required": [ + "SecurityControlArn" + ] + } + ], + "createOnlyProperties": [ + "/properties/SecurityControlId" + ], + "definitions": { + "IntegerList": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "NonEmptyString": { + "pattern": ".*\\S.*", + "type": "string" + }, + "NonEmptyStringList": { + "items": { + "$ref": "#/definitions/NonEmptyString" + }, + "type": "array" + }, + "ParameterConfiguration": { + "additionalProperties": false, + "properties": { + "Value": { + "$ref": "#/definitions/ParameterValue" + }, + "ValueType": { + "enum": [ + "DEFAULT", + "CUSTOM" + ], + "type": "string" + } + }, + "required": [ + "ValueType" + ], + "type": "object" + }, + "ParameterValue": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "Boolean" + ] + }, + { + "required": [ + "Double" + ] + }, + { + "required": [ + "Enum" + ] + }, + { + "required": [ + "EnumList" + ] + }, + { + "required": [ + "Integer" + ] + }, + { + "required": [ + "IntegerList" + ] + }, + { + "required": [ + "String" + ] + }, + { + "required": [ + "StringList" + ] + } + ], + "properties": { + "Boolean": { + "description": "A control parameter that is a boolean.", + "type": "boolean" + }, + "Double": { + "description": "A control parameter that is a double.", + "type": "number" + }, + "Enum": { + "$ref": "#/definitions/NonEmptyString", + "description": "A control parameter that is a enum." + }, + "EnumList": { + "$ref": "#/definitions/NonEmptyStringList", + "description": "A control parameter that is a list of enums." + }, + "Integer": { + "description": "A control parameter that is a integer.", + "type": "integer" + }, + "IntegerList": { + "$ref": "#/definitions/IntegerList", + "description": "A control parameter that is a list of integers." + }, + "String": { + "$ref": "#/definitions/NonEmptyString", + "description": "A control parameter that is a string." + }, + "StringList": { + "$ref": "#/definitions/NonEmptyStringList", + "description": "A control parameter that is a list of strings." + } + }, + "type": "object" + }, + "Parameters": { + "additionalProperties": false, + "patternProperties": { + ".*\\S.*": { + "$ref": "#/definitions/ParameterConfiguration" + } + }, + "type": "object" + } + }, + "description": "A security control in Security Hub describes a security best practice related to a specific resource.", + "handlers": { + "create": { + "permissions": [ + "securityhub:BatchGetSecurityControls", + "securityhub:DescribeStandardsControls", + "securityhub:UpdateSecurityControl", + "securityhub:UpdateStandardsControl" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "securityhub:BatchGetSecurityControls", + "securityhub:DescribeStandardsControls", + "securityhub:UpdateSecurityControl", + "securityhub:UpdateStandardsControl" + ], + "timeoutInMinutes": 2160 + }, + "list": { + "permissions": [ + "securityhub:BatchGetSecurityControls", + "securityhub:DescribeStandardsControls", + "securityhub:ListSecurityControlDefinitions" + ] + }, + "read": { + "permissions": [ + "securityhub:BatchGetSecurityControls", + "securityhub:DescribeStandardsControls" + ] + }, + "update": { + "permissions": [ + "securityhub:BatchGetSecurityControls", + "securityhub:DescribeStandardsControls", + "securityhub:UpdateSecurityControl", + "securityhub:UpdateStandardsControl" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/SecurityControlId" + ], + "properties": { + "LastUpdateReason": { + "description": "The most recent reason for updating the customizable properties of a security control. This differs from the UpdateReason field of the BatchUpdateStandardsControlAssociations API, which tracks the reason for updating the enablement status of a control. This field accepts alphanumeric characters in addition to white spaces, dashes, and underscores.", + "pattern": "^([^\u0000-\u007f]|[-_ a-zA-Z0-9])+$", + "type": "string" + }, + "Parameters": { + "$ref": "#/definitions/Parameters", + "description": "An object that identifies the name of a control parameter, its current value, and whether it has been customized." + }, + "SecurityControlArn": { + "$ref": "#/definitions/NonEmptyString", + "description": "The Amazon Resource Name (ARN) for a security control across standards, such as `arn:aws:securityhub:eu-central-1:123456789012:security-control/S3.1`. This parameter doesn't mention a specific standard." + }, + "SecurityControlId": { + "$ref": "#/definitions/NonEmptyString", + "description": "The unique identifier of a security control across standards. Values for this field typically consist of an AWS service name and a number, such as APIGateway.3." + } + }, + "required": [ + "Parameters" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", + "tagging": { + "taggable": false + }, + "typeName": "AWS::SecurityHub::SecurityControl" +} diff --git a/src/schema/aws-securityhub-standard.json b/src/schema/aws-securityhub-standard.json index a7ceac03..279f1bb3 100644 --- a/src/schema/aws-securityhub-standard.json +++ b/src/schema/aws-securityhub-standard.json @@ -1,106 +1,106 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/StandardsArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StandardsArn" - ], - "definitions": { - "StandardsControl": { - "additionalProperties": false, - "description": "Provides details about an individual security control. For a list of ASH controls, see [controls reference](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-controls-reference.html) in the *User Guide*.", - "properties": { - "Reason": { - "description": "A user-defined reason for changing a control's enablement status in a specified standard. If you are disabling a control, then this property is required.", - "type": "string" - }, - "StandardsControlArn": { - "description": "The Amazon Resource Name (ARN) of the control.", - "pattern": "arn:aws\\S*:securityhub:\\S*", - "type": "string" - } - }, - "required": [ - "StandardsControlArn" - ], - "type": "object" - } - }, - "description": "The ``AWS::SecurityHub::Standard`` resource specifies the enablement of a security standard. The standard is identified by the ``StandardsArn`` property. To view a list of ASH standards and their Amazon Resource Names (ARNs), use the [DescribeStandards](https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_DescribeStandards.html) API operation.\n You must create a separate ``AWS::SecurityHub::Standard`` resource for each standard that you want to enable.\n For more information about ASH standards, see [standards reference](https://docs.aws.amazon.com/securityhub/latest/userguide/standards-reference.html) in the *User Guide*.", - "handlers": { - "create": { - "permissions": [ - "securityhub:GetEnabledStandards", - "securityhub:BatchEnableStandards", - "securityhub:UpdateStandardsControl" - ] - }, - "delete": { - "permissions": [ - "securityhub:GetEnabledStandards", - "securityhub:BatchDisableStandards" - ] - }, - "list": { - "permissions": [ - "securityhub:GetEnabledStandards" - ] - }, - "read": { - "permissions": [ - "securityhub:GetEnabledStandards", - "securityhub:DescribeStandardsControls" - ] - }, - "update": { - "permissions": [ - "securityhub:GetEnabledStandards", - "securityhub:UpdateStandardsControl" - ] - } - }, - "primaryIdentifier": [ - "/properties/StandardsSubscriptionArn" - ], - "properties": { - "DisabledStandardsControls": { - "description": "Specifies which controls are to be disabled in a standard. \n *Maximum*: ``100``", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StandardsControl" - }, - "maxItems": 100, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "StandardsArn": { - "description": "The ARN of the standard that you want to enable. To view a list of available ASH standards and their ARNs, use the [DescribeStandards](https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_DescribeStandards.html) API operation.", - "pattern": "arn:aws\\S*:securityhub:\\S", - "type": "string" - }, - "StandardsSubscriptionArn": { - "description": "", - "pattern": "arn:aws\\S*:securityhub:\\S*", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/StandardsSubscriptionArn" - ], - "required": [ - "StandardsArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::SecurityHub::Standard" -} +{ + "additionalIdentifiers": [ + [ + "/properties/StandardsArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StandardsArn" + ], + "definitions": { + "StandardsControl": { + "additionalProperties": false, + "description": "Provides details about an individual security control. For a list of ASH controls, see [controls reference](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-controls-reference.html) in the *User Guide*.", + "properties": { + "Reason": { + "description": "A user-defined reason for changing a control's enablement status in a specified standard. If you are disabling a control, then this property is required.", + "type": "string" + }, + "StandardsControlArn": { + "description": "The Amazon Resource Name (ARN) of the control.", + "pattern": "arn:aws\\S*:securityhub:\\S*", + "type": "string" + } + }, + "required": [ + "StandardsControlArn" + ], + "type": "object" + } + }, + "description": "The ``AWS::SecurityHub::Standard`` resource specifies the enablement of a security standard. The standard is identified by the ``StandardsArn`` property. To view a list of ASH standards and their Amazon Resource Names (ARNs), use the [DescribeStandards](https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_DescribeStandards.html) API operation.\n You must create a separate ``AWS::SecurityHub::Standard`` resource for each standard that you want to enable.\n For more information about ASH standards, see [standards reference](https://docs.aws.amazon.com/securityhub/latest/userguide/standards-reference.html) in the *User Guide*.", + "handlers": { + "create": { + "permissions": [ + "securityhub:GetEnabledStandards", + "securityhub:BatchEnableStandards", + "securityhub:UpdateStandardsControl" + ] + }, + "delete": { + "permissions": [ + "securityhub:GetEnabledStandards", + "securityhub:BatchDisableStandards" + ] + }, + "list": { + "permissions": [ + "securityhub:GetEnabledStandards" + ] + }, + "read": { + "permissions": [ + "securityhub:GetEnabledStandards", + "securityhub:DescribeStandardsControls" + ] + }, + "update": { + "permissions": [ + "securityhub:GetEnabledStandards", + "securityhub:UpdateStandardsControl" + ] + } + }, + "primaryIdentifier": [ + "/properties/StandardsSubscriptionArn" + ], + "properties": { + "DisabledStandardsControls": { + "description": "Specifies which controls are to be disabled in a standard. \n *Maximum*: ``100``", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StandardsControl" + }, + "maxItems": 100, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "StandardsArn": { + "description": "The ARN of the standard that you want to enable. To view a list of available ASH standards and their ARNs, use the [DescribeStandards](https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_DescribeStandards.html) API operation.", + "pattern": "arn:aws\\S*:securityhub:\\S", + "type": "string" + }, + "StandardsSubscriptionArn": { + "description": "", + "pattern": "arn:aws\\S*:securityhub:\\S*", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/StandardsSubscriptionArn" + ], + "required": [ + "StandardsArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::SecurityHub::Standard" +} diff --git a/src/schema/aws-securitylake-awslogsource.json b/src/schema/aws-securitylake-awslogsource.json index 94b1605a..98327665 100644 --- a/src/schema/aws-securitylake-awslogsource.json +++ b/src/schema/aws-securitylake-awslogsource.json @@ -1,96 +1,96 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DataLakeArn", - "/properties/SourceName", - "/properties/SourceVersion" - ], - "description": "Resource Type definition for AWS::SecurityLake::AwsLogSource", - "handlers": { - "create": { - "permissions": [ - "glue:CreateDatabase", - "glue:CreateTable", - "glue:GetDatabase", - "glue:GetTable", - "iam:CreateServiceLinkedRole", - "kms:CreateGrant", - "kms:DescribeKey", - "securitylake:CreateDataLake", - "securitylake:CreateAwsLogSource", - "securitylake:ListLogSources" - ] - }, - "delete": { - "permissions": [ - "securitylake:DeleteAwsLogSource", - "securitylake:ListLogSources" - ] - }, - "list": { - "permissions": [ - "securitylake:ListLogSources" - ] - }, - "read": { - "permissions": [ - "securitylake:ListLogSources" - ] - }, - "update": { - "permissions": [ - "securitylake:CreateAwsLogSource", - "securitylake:DeleteAwsLogSource", - "glue:CreateDatabase", - "glue:CreateTable", - "glue:GetDatabase", - "glue:GetTable", - "iam:CreateServiceLinkedRole", - "kms:CreateGrant", - "kms:DescribeKey" - ] - } - }, - "primaryIdentifier": [ - "/properties/SourceName", - "/properties/SourceVersion" - ], - "properties": { - "Accounts": { - "description": "AWS account where you want to collect logs from.", - "insertionOrder": false, - "items": { - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "DataLakeArn": { - "description": "The ARN for the data lake.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "SourceName": { - "description": "The name for a AWS source. This must be a Regionally unique value.", - "type": "string" - }, - "SourceVersion": { - "description": "The version for a AWS source. This must be a Regionally unique value.", - "pattern": "^(latest|[0-9]\\.[0-9])$", - "type": "string" - } - }, - "replacementStrategy": "delete_then_create", - "required": [ - "DataLakeArn", - "SourceVersion", - "SourceName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securitylake.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::SecurityLake::AwsLogSource" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DataLakeArn", + "/properties/SourceName", + "/properties/SourceVersion" + ], + "description": "Resource Type definition for AWS::SecurityLake::AwsLogSource", + "handlers": { + "create": { + "permissions": [ + "glue:CreateDatabase", + "glue:CreateTable", + "glue:GetDatabase", + "glue:GetTable", + "iam:CreateServiceLinkedRole", + "kms:CreateGrant", + "kms:DescribeKey", + "securitylake:CreateDataLake", + "securitylake:CreateAwsLogSource", + "securitylake:ListLogSources" + ] + }, + "delete": { + "permissions": [ + "securitylake:DeleteAwsLogSource", + "securitylake:ListLogSources" + ] + }, + "list": { + "permissions": [ + "securitylake:ListLogSources" + ] + }, + "read": { + "permissions": [ + "securitylake:ListLogSources" + ] + }, + "update": { + "permissions": [ + "securitylake:CreateAwsLogSource", + "securitylake:DeleteAwsLogSource", + "glue:CreateDatabase", + "glue:CreateTable", + "glue:GetDatabase", + "glue:GetTable", + "iam:CreateServiceLinkedRole", + "kms:CreateGrant", + "kms:DescribeKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/SourceName", + "/properties/SourceVersion" + ], + "properties": { + "Accounts": { + "description": "AWS account where you want to collect logs from.", + "insertionOrder": false, + "items": { + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "DataLakeArn": { + "description": "The ARN for the data lake.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "SourceName": { + "description": "The name for a AWS source. This must be a Regionally unique value.", + "type": "string" + }, + "SourceVersion": { + "description": "The version for a AWS source. This must be a Regionally unique value.", + "pattern": "^(latest|[0-9]\\.[0-9])$", + "type": "string" + } + }, + "replacementStrategy": "delete_then_create", + "required": [ + "DataLakeArn", + "SourceVersion", + "SourceName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securitylake.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::SecurityLake::AwsLogSource" +} diff --git a/src/schema/aws-securitylake-datalake.json b/src/schema/aws-securitylake-datalake.json index 68a143f4..4de6cf76 100644 --- a/src/schema/aws-securitylake-datalake.json +++ b/src/schema/aws-securitylake-datalake.json @@ -1,230 +1,230 @@ -{ - "additionalProperties": false, - "definitions": { - "Days": { - "description": "Number of days before data expires in the Amazon Security Lake object.", - "minimum": 1, - "type": "integer" - }, - "EncryptionConfiguration": { - "additionalProperties": false, - "description": "Provides encryption details of Amazon Security Lake object.", - "properties": { - "KmsKeyId": { - "description": "The id of KMS encryption key used by Amazon Security Lake to encrypt the Security Lake object.", - "type": "string" - } - }, - "type": "object" - }, - "Expiration": { - "additionalProperties": false, - "description": "Provides data expiration details of Amazon Security Lake object.", - "properties": { - "Days": { - "$ref": "#/definitions/Days" - } - }, - "type": "object" - }, - "LifecycleConfiguration": { - "additionalProperties": false, - "description": "Provides lifecycle details of Amazon Security Lake object.", - "properties": { - "Expiration": { - "$ref": "#/definitions/Expiration" - }, - "Transitions": { - "description": "Provides data storage transition details of Amazon Security Lake object.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Transitions" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "Regions": { - "description": "Replication enables automatic, asynchronous copying of objects across Amazon S3 buckets. Amazon S3 buckets that are configured for object replication can be owned by the same AWS account or by different accounts. You can replicate objects to a single destination bucket or to multiple destination buckets. The destination buckets can be in different AWS Regions or within the same Region as the source bucket.", - "insertionOrder": false, - "items": { - "pattern": "^(us(-gov)?|af|ap|ca|eu|me|sa)-(central|north|(north(?:east|west))|south|south(?:east|west)|east|west)-\\d+$", - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "ReplicationConfiguration": { - "additionalProperties": false, - "description": "Provides replication details of Amazon Security Lake object.", - "properties": { - "Regions": { - "$ref": "#/definitions/Regions" - }, - "RoleArn": { - "description": "Replication settings for the Amazon S3 buckets. This parameter uses the AWS Identity and Access Management (IAM) role you created that is managed by Security Lake, to ensure the replication setting is correct.", - "pattern": "^arn:.*$", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, `_`, `.`, `/`, `=`, `+`, and `-`.", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 characters in length.", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Transitions": { - "additionalProperties": false, - "properties": { - "Days": { - "description": "Number of days before data transitions to a different S3 Storage Class in the Amazon Security Lake object.", - "minimum": 1, - "type": "integer" - }, - "StorageClass": { - "description": "The range of storage classes that you can choose from based on the data access, resiliency, and cost requirements of your workloads.", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SecurityLake::DataLake", - "handlers": { - "create": { - "permissions": [ - "events:*", - "iam:CreateServiceLinkedRole", - "iam:GetRole", - "iam:ListAttachedRolePolicies", - "iam:PutRolePolicy", - "iam:PassRole", - "glue:*", - "organizations:*", - "kms:DescribeKey", - "kms:CreateGrant", - "lakeformation:*", - "lambda:*", - "s3:*", - "securitylake:CreateDataLake", - "securitylake:TagResource", - "securitylake:List*", - "sqs:*" - ] - }, - "delete": { - "permissions": [ - "organizations:*", - "securitylake:DeleteDataLake", - "securitylake:List*" - ] - }, - "list": { - "permissions": [ - "securitylake:List*" - ] - }, - "read": { - "permissions": [ - "securitylake:List*" - ] - }, - "update": { - "permissions": [ - "events:*", - "iam:CreateServiceLinkedRole", - "iam:DeleteRolePolicy", - "iam:GetRole", - "iam:PassRole", - "iam:PutRolePolicy", - "kms:DescribeKey", - "kms:CreateGrant", - "lakeformation:*", - "lambda:*", - "organizations:*", - "s3:*", - "securitylake:List*", - "securitylake:TagResource", - "securitylake:UntagResource", - "securitylake:UpdateDataLake", - "sqs:*" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) created by you to provide to the subscriber.", - "maxLength": 1011, - "minLength": 1, - "type": "string" - }, - "EncryptionConfiguration": { - "$ref": "#/definitions/EncryptionConfiguration" - }, - "LifecycleConfiguration": { - "$ref": "#/definitions/LifecycleConfiguration" - }, - "MetaStoreManagerRoleArn": { - "description": "The Amazon Resource Name (ARN) used to index AWS Glue table partitions that are generated by the ingestion and normalization of AWS log sources and custom sources.", - "pattern": "^arn:.*$", - "type": "string" - }, - "ReplicationConfiguration": { - "$ref": "#/definitions/ReplicationConfiguration" - }, - "S3BucketArn": { - "description": "The ARN for the Amazon Security Lake Amazon S3 bucket.", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/S3BucketArn" - ], - "replacementStrategy": "delete_then_create", - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securitylake.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "securitylake:TagResource", - "securitylake:UntagResource", - "securitylake:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SecurityLake::DataLake", - "writeOnlyProperties": [ - "/properties/MetaStoreManagerRoleArn" - ] -} +{ + "additionalProperties": false, + "definitions": { + "Days": { + "description": "Number of days before data expires in the Amazon Security Lake object.", + "minimum": 1, + "type": "integer" + }, + "EncryptionConfiguration": { + "additionalProperties": false, + "description": "Provides encryption details of Amazon Security Lake object.", + "properties": { + "KmsKeyId": { + "description": "The id of KMS encryption key used by Amazon Security Lake to encrypt the Security Lake object.", + "type": "string" + } + }, + "type": "object" + }, + "Expiration": { + "additionalProperties": false, + "description": "Provides data expiration details of Amazon Security Lake object.", + "properties": { + "Days": { + "$ref": "#/definitions/Days" + } + }, + "type": "object" + }, + "LifecycleConfiguration": { + "additionalProperties": false, + "description": "Provides lifecycle details of Amazon Security Lake object.", + "properties": { + "Expiration": { + "$ref": "#/definitions/Expiration" + }, + "Transitions": { + "description": "Provides data storage transition details of Amazon Security Lake object.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Transitions" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "Regions": { + "description": "Replication enables automatic, asynchronous copying of objects across Amazon S3 buckets. Amazon S3 buckets that are configured for object replication can be owned by the same AWS account or by different accounts. You can replicate objects to a single destination bucket or to multiple destination buckets. The destination buckets can be in different AWS Regions or within the same Region as the source bucket.", + "insertionOrder": false, + "items": { + "pattern": "^(us(-gov)?|af|ap|ca|eu|me|sa)-(central|north|(north(?:east|west))|south|south(?:east|west)|east|west)-\\d+$", + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "ReplicationConfiguration": { + "additionalProperties": false, + "description": "Provides replication details of Amazon Security Lake object.", + "properties": { + "Regions": { + "$ref": "#/definitions/Regions" + }, + "RoleArn": { + "description": "Replication settings for the Amazon S3 buckets. This parameter uses the AWS Identity and Access Management (IAM) role you created that is managed by Security Lake, to ensure the replication setting is correct.", + "pattern": "^arn:.*$", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, `_`, `.`, `/`, `=`, `+`, and `-`.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 characters in length.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Transitions": { + "additionalProperties": false, + "properties": { + "Days": { + "description": "Number of days before data transitions to a different S3 Storage Class in the Amazon Security Lake object.", + "minimum": 1, + "type": "integer" + }, + "StorageClass": { + "description": "The range of storage classes that you can choose from based on the data access, resiliency, and cost requirements of your workloads.", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SecurityLake::DataLake", + "handlers": { + "create": { + "permissions": [ + "events:*", + "iam:CreateServiceLinkedRole", + "iam:GetRole", + "iam:ListAttachedRolePolicies", + "iam:PutRolePolicy", + "iam:PassRole", + "glue:*", + "organizations:*", + "kms:DescribeKey", + "kms:CreateGrant", + "lakeformation:*", + "lambda:*", + "s3:*", + "securitylake:CreateDataLake", + "securitylake:TagResource", + "securitylake:List*", + "sqs:*" + ] + }, + "delete": { + "permissions": [ + "organizations:*", + "securitylake:DeleteDataLake", + "securitylake:List*" + ] + }, + "list": { + "permissions": [ + "securitylake:List*" + ] + }, + "read": { + "permissions": [ + "securitylake:List*" + ] + }, + "update": { + "permissions": [ + "events:*", + "iam:CreateServiceLinkedRole", + "iam:DeleteRolePolicy", + "iam:GetRole", + "iam:PassRole", + "iam:PutRolePolicy", + "kms:DescribeKey", + "kms:CreateGrant", + "lakeformation:*", + "lambda:*", + "organizations:*", + "s3:*", + "securitylake:List*", + "securitylake:TagResource", + "securitylake:UntagResource", + "securitylake:UpdateDataLake", + "sqs:*" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) created by you to provide to the subscriber.", + "maxLength": 1011, + "minLength": 1, + "type": "string" + }, + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration" + }, + "LifecycleConfiguration": { + "$ref": "#/definitions/LifecycleConfiguration" + }, + "MetaStoreManagerRoleArn": { + "description": "The Amazon Resource Name (ARN) used to index AWS Glue table partitions that are generated by the ingestion and normalization of AWS log sources and custom sources.", + "pattern": "^arn:.*$", + "type": "string" + }, + "ReplicationConfiguration": { + "$ref": "#/definitions/ReplicationConfiguration" + }, + "S3BucketArn": { + "description": "The ARN for the Amazon Security Lake Amazon S3 bucket.", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/S3BucketArn" + ], + "replacementStrategy": "delete_then_create", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securitylake.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "securitylake:TagResource", + "securitylake:UntagResource", + "securitylake:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SecurityLake::DataLake", + "writeOnlyProperties": [ + "/properties/MetaStoreManagerRoleArn" + ] +} diff --git a/src/schema/aws-securitylake-subscriber.json b/src/schema/aws-securitylake-subscriber.json index 48e0f69a..7109fcbf 100644 --- a/src/schema/aws-securitylake-subscriber.json +++ b/src/schema/aws-securitylake-subscriber.json @@ -1,313 +1,313 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DataLakeArn" - ], - "definitions": { - "AccessTypes": { - "description": "The Amazon S3 or AWS Lake Formation access type.", - "insertionOrder": true, - "items": { - "enum": [ - "LAKEFORMATION", - "S3" - ], - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "AwsLogSource": { - "additionalProperties": false, - "description": "Amazon Security Lake supports log and event collection for natively supported AWS services.", - "properties": { - "SourceName": { - "description": "The name for a AWS source. This must be a Regionally unique value.", - "type": "string" - }, - "SourceVersion": { - "description": "The version for a AWS source. This must be a Regionally unique value.", - "pattern": "^(latest|[0-9]\\.[0-9])$", - "type": "string" - } - }, - "type": "object" - }, - "CustomLogSource": { - "additionalProperties": false, - "properties": { - "SourceName": { - "description": "The name for a third-party custom source. This must be a Regionally unique value.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[\\\\\\w\\-_:/.]*$", - "type": "string" - }, - "SourceVersion": { - "description": "The version for a third-party custom source. This must be a Regionally unique value.", - "maxLength": 32, - "minLength": 1, - "pattern": "^[A-Za-z0-9\\-\\.\\_]*$", - "type": "string" - } - }, - "type": "object" - }, - "Source": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "AwsLogSource" - ] - }, - { - "required": [ - "CustomLogSource" - ] - } - ], - "properties": { - "AwsLogSource": { - "$ref": "#/definitions/AwsLogSource" - }, - "CustomLogSource": { - "$ref": "#/definitions/CustomLogSource" - } - } - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The name of the tag. This is a general label that acts as a category for a more specific tag value (value).", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value that is associated with the specified tag key (key). This value acts as a descriptor for the tag key. A tag value cannot be null, but it can be an empty string.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SecurityLake::Subscriber", - "handlers": { - "create": { - "permissions": [ - "securitylake:CreateSubscriber", - "securitylake:CreateCustomLogSource", - "securitylake:CreateDataLake", - "securitylake:TagResource", - "securitylake:GetSubscriber", - "securitylake:ListSubscribers", - "securitylake:ListTagsForResource", - "iam:GetRole", - "iam:GetRolePolicy", - "iam:PutRolePolicy", - "iam:CreateRole", - "iam:CreateServiceLinkedRole", - "glue:GetDatabase", - "glue:GetTable", - "lakeformation:RegisterResource", - "lakeformation:GrantPermissions", - "lakeformation:RevokePermissions", - "lakeformation:ListPermissions", - "ram:GetResourceShareAssociations", - "ram:CreateResourceShare", - "ram:UpdateResourceShare", - "ram:GetResourceShares" - ] - }, - "delete": { - "permissions": [ - "securitylake:DeleteSubscriber", - "iam:GetRole", - "iam:ListRolePolicies", - "iam:DeleteRole", - "iam:DeleteRolePolicy", - "glue:GetTable", - "lakeformation:RevokePermissions", - "lakeformation:ListPermissions", - "ram:GetResourceShares", - "ram:DeleteResourceShare", - "events:DeleteApiDestination", - "events:DeleteConnection", - "events:DeleteRule", - "events:ListApiDestinations", - "events:ListTargetsByRule", - "events:DescribeRule", - "events:RemoveTargets", - "sqs:DeleteQueue", - "sqs:GetQueueUrl" - ] - }, - "list": { - "permissions": [ - "securitylake:ListSubscribers" - ] - }, - "read": { - "permissions": [ - "securitylake:GetSubscriber", - "securitylake:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "securitylake:UpdateSubscriber", - "securitylake:GetSubscriber", - "securitylake:TagResource", - "securitylake:UntagResource", - "securitylake:ListTagsForResource", - "glue:GetDatabase", - "glue:GetTable", - "lakeformation:ListPermissions", - "lakeformation:GrantPermissions", - "lakeformation:RevokePermissions", - "ram:CreateResourceShare", - "ram:GetResourceShares", - "ram:GetResourceShareAssociations", - "ram:UpdateResourceShare", - "ram:DeleteResourceShare", - "iam:CreateRole", - "iam:GetRole", - "iam:DeleteRole", - "iam:PutRolePolicy", - "iam:DeleteRolePolicy", - "iam:ListRolePolicies", - "events:CreateApiDestination", - "events:CreateConnection", - "events:ListApiDestinations", - "events:ListConnections", - "events:PutRule", - "events:UpdateApiDestination", - "events:UpdateConnection", - "events:DeleteApiDestination", - "events:DeleteConnection", - "events:DeleteRule", - "events:RemoveTargets", - "events:ListTargetsByRule", - "events:DescribeRule", - "events:PutTargets" - ] - } - }, - "primaryIdentifier": [ - "/properties/SubscriberArn" - ], - "properties": { - "AccessTypes": { - "$ref": "#/definitions/AccessTypes" - }, - "DataLakeArn": { - "description": "The ARN for the data lake.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "ResourceShareArn": { - "type": "string" - }, - "ResourceShareName": { - "type": "string" - }, - "S3BucketArn": { - "type": "string" - }, - "Sources": { - "description": "The supported AWS services from which logs and events are collected.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Source" - }, - "type": "array" - }, - "SubscriberArn": { - "type": "string" - }, - "SubscriberDescription": { - "description": "The description for your subscriber account in Security Lake.", - "type": "string" - }, - "SubscriberIdentity": { - "additionalProperties": false, - "description": "The AWS identity used to access your data.", - "properties": { - "ExternalId": { - "description": "The external ID used to establish trust relationship with the AWS identity.", - "maxLength": 1224, - "minLength": 2, - "pattern": "^[\\w+=,.@:/-]*$", - "type": "string" - }, - "Principal": { - "description": "The AWS identity principal.", - "pattern": "^([0-9]{12}|[a-z0-9\\.\\-]*\\.(amazonaws|amazon)\\.com)$", - "type": "string" - } - }, - "required": [ - "ExternalId", - "Principal" - ], - "type": "object" - }, - "SubscriberName": { - "description": "The name of your Security Lake subscriber account.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[\\\\\\w\\s\\-_:/,.@=+]*$", - "type": "string" - }, - "SubscriberRoleArn": { - "type": "string" - }, - "Tags": { - "description": "An array of objects, one for each tag to associate with the subscriber. For each tag, you must specify both a tag key and a tag value. A tag value cannot be null, but it can be an empty string.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/SubscriberArn", - "/properties/S3BucketArn", - "/properties/SubscriberRoleArn", - "/properties/ResourceShareArn", - "/properties/ResourceShareName" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "AccessTypes", - "DataLakeArn", - "Sources", - "SubscriberIdentity", - "SubscriberName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securitylake.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "securitylake:TagResource", - "securitylake:UntagResource", - "securitylake:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SecurityLake::Subscriber" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DataLakeArn" + ], + "definitions": { + "AccessTypes": { + "description": "The Amazon S3 or AWS Lake Formation access type.", + "insertionOrder": true, + "items": { + "enum": [ + "LAKEFORMATION", + "S3" + ], + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "AwsLogSource": { + "additionalProperties": false, + "description": "Amazon Security Lake supports log and event collection for natively supported AWS services.", + "properties": { + "SourceName": { + "description": "The name for a AWS source. This must be a Regionally unique value.", + "type": "string" + }, + "SourceVersion": { + "description": "The version for a AWS source. This must be a Regionally unique value.", + "pattern": "^(latest|[0-9]\\.[0-9])$", + "type": "string" + } + }, + "type": "object" + }, + "CustomLogSource": { + "additionalProperties": false, + "properties": { + "SourceName": { + "description": "The name for a third-party custom source. This must be a Regionally unique value.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[\\\\\\w\\-_:/.]*$", + "type": "string" + }, + "SourceVersion": { + "description": "The version for a third-party custom source. This must be a Regionally unique value.", + "maxLength": 32, + "minLength": 1, + "pattern": "^[A-Za-z0-9\\-\\.\\_]*$", + "type": "string" + } + }, + "type": "object" + }, + "Source": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "AwsLogSource" + ] + }, + { + "required": [ + "CustomLogSource" + ] + } + ], + "properties": { + "AwsLogSource": { + "$ref": "#/definitions/AwsLogSource" + }, + "CustomLogSource": { + "$ref": "#/definitions/CustomLogSource" + } + } + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The name of the tag. This is a general label that acts as a category for a more specific tag value (value).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value that is associated with the specified tag key (key). This value acts as a descriptor for the tag key. A tag value cannot be null, but it can be an empty string.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SecurityLake::Subscriber", + "handlers": { + "create": { + "permissions": [ + "securitylake:CreateSubscriber", + "securitylake:CreateCustomLogSource", + "securitylake:CreateDataLake", + "securitylake:TagResource", + "securitylake:GetSubscriber", + "securitylake:ListSubscribers", + "securitylake:ListTagsForResource", + "iam:GetRole", + "iam:GetRolePolicy", + "iam:PutRolePolicy", + "iam:CreateRole", + "iam:CreateServiceLinkedRole", + "glue:GetDatabase", + "glue:GetTable", + "lakeformation:RegisterResource", + "lakeformation:GrantPermissions", + "lakeformation:RevokePermissions", + "lakeformation:ListPermissions", + "ram:GetResourceShareAssociations", + "ram:CreateResourceShare", + "ram:UpdateResourceShare", + "ram:GetResourceShares" + ] + }, + "delete": { + "permissions": [ + "securitylake:DeleteSubscriber", + "iam:GetRole", + "iam:ListRolePolicies", + "iam:DeleteRole", + "iam:DeleteRolePolicy", + "glue:GetTable", + "lakeformation:RevokePermissions", + "lakeformation:ListPermissions", + "ram:GetResourceShares", + "ram:DeleteResourceShare", + "events:DeleteApiDestination", + "events:DeleteConnection", + "events:DeleteRule", + "events:ListApiDestinations", + "events:ListTargetsByRule", + "events:DescribeRule", + "events:RemoveTargets", + "sqs:DeleteQueue", + "sqs:GetQueueUrl" + ] + }, + "list": { + "permissions": [ + "securitylake:ListSubscribers" + ] + }, + "read": { + "permissions": [ + "securitylake:GetSubscriber", + "securitylake:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "securitylake:UpdateSubscriber", + "securitylake:GetSubscriber", + "securitylake:TagResource", + "securitylake:UntagResource", + "securitylake:ListTagsForResource", + "glue:GetDatabase", + "glue:GetTable", + "lakeformation:ListPermissions", + "lakeformation:GrantPermissions", + "lakeformation:RevokePermissions", + "ram:CreateResourceShare", + "ram:GetResourceShares", + "ram:GetResourceShareAssociations", + "ram:UpdateResourceShare", + "ram:DeleteResourceShare", + "iam:CreateRole", + "iam:GetRole", + "iam:DeleteRole", + "iam:PutRolePolicy", + "iam:DeleteRolePolicy", + "iam:ListRolePolicies", + "events:CreateApiDestination", + "events:CreateConnection", + "events:ListApiDestinations", + "events:ListConnections", + "events:PutRule", + "events:UpdateApiDestination", + "events:UpdateConnection", + "events:DeleteApiDestination", + "events:DeleteConnection", + "events:DeleteRule", + "events:RemoveTargets", + "events:ListTargetsByRule", + "events:DescribeRule", + "events:PutTargets" + ] + } + }, + "primaryIdentifier": [ + "/properties/SubscriberArn" + ], + "properties": { + "AccessTypes": { + "$ref": "#/definitions/AccessTypes" + }, + "DataLakeArn": { + "description": "The ARN for the data lake.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "ResourceShareArn": { + "type": "string" + }, + "ResourceShareName": { + "type": "string" + }, + "S3BucketArn": { + "type": "string" + }, + "Sources": { + "description": "The supported AWS services from which logs and events are collected.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Source" + }, + "type": "array" + }, + "SubscriberArn": { + "type": "string" + }, + "SubscriberDescription": { + "description": "The description for your subscriber account in Security Lake.", + "type": "string" + }, + "SubscriberIdentity": { + "additionalProperties": false, + "description": "The AWS identity used to access your data.", + "properties": { + "ExternalId": { + "description": "The external ID used to establish trust relationship with the AWS identity.", + "maxLength": 1224, + "minLength": 2, + "pattern": "^[\\w+=,.@:/-]*$", + "type": "string" + }, + "Principal": { + "description": "The AWS identity principal.", + "pattern": "^([0-9]{12}|[a-z0-9\\.\\-]*\\.(amazonaws|amazon)\\.com)$", + "type": "string" + } + }, + "required": [ + "ExternalId", + "Principal" + ], + "type": "object" + }, + "SubscriberName": { + "description": "The name of your Security Lake subscriber account.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[\\\\\\w\\s\\-_:/,.@=+]*$", + "type": "string" + }, + "SubscriberRoleArn": { + "type": "string" + }, + "Tags": { + "description": "An array of objects, one for each tag to associate with the subscriber. For each tag, you must specify both a tag key and a tag value. A tag value cannot be null, but it can be an empty string.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/SubscriberArn", + "/properties/S3BucketArn", + "/properties/SubscriberRoleArn", + "/properties/ResourceShareArn", + "/properties/ResourceShareName" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "AccessTypes", + "DataLakeArn", + "Sources", + "SubscriberIdentity", + "SubscriberName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securitylake.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "securitylake:TagResource", + "securitylake:UntagResource", + "securitylake:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SecurityLake::Subscriber" +} diff --git a/src/schema/aws-securitylake-subscribernotification.json b/src/schema/aws-securitylake-subscribernotification.json index 3452eaa9..430ed6a5 100644 --- a/src/schema/aws-securitylake-subscribernotification.json +++ b/src/schema/aws-securitylake-subscribernotification.json @@ -1,206 +1,206 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SubscriberArn" - ], - "definitions": { - "HttpsNotificationConfiguration": { - "additionalProperties": false, - "description": "The configuration for HTTPS subscriber notification.", - "properties": { - "AuthorizationApiKeyName": { - "description": "The key name for the notification subscription.", - "type": "string" - }, - "AuthorizationApiKeyValue": { - "description": "The key value for the notification subscription.", - "type": "string" - }, - "Endpoint": { - "description": "The subscription endpoint in Security Lake.", - "pattern": "^https?://.+$", - "type": "string" - }, - "HttpMethod": { - "description": "The HTTPS method used for the notification subscription.", - "enum": [ - "POST", - "PUT" - ], - "type": "string" - }, - "TargetRoleArn": { - "description": "The Amazon Resource Name (ARN) of the EventBridge API destinations IAM role that you created.", - "pattern": "^arn:.*$", - "type": "string" - } - }, - "required": [ - "Endpoint", - "TargetRoleArn" - ], - "type": "object" - }, - "NotificationConfiguration": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "HttpsNotificationConfiguration" - ] - }, - { - "required": [ - "SqsNotificationConfiguration" - ] - } - ], - "properties": { - "HttpsNotificationConfiguration": { - "$ref": "#/definitions/HttpsNotificationConfiguration" - }, - "SqsNotificationConfiguration": { - "$ref": "#/definitions/SqsNotificationConfiguration" - } - }, - "type": "object" - }, - "SqsNotificationConfiguration": { - "description": "The configurations for SQS subscriber notification. The members of this structure are context-dependent.", - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SecurityLake::SubscriberNotification", - "handlers": { - "create": { - "permissions": [ - "securitylake:CreateDataLake", - "securitylake:CreateSubscriber", - "securitylake:CreateSubscriberNotification", - "securitylake:GetSubscriber", - "iam:CreateServiceLinkedRole", - "iam:PutRolePolicy", - "iam:DeleteRolePolicy", - "iam:PassRole", - "s3:PutBucketNotification", - "s3:GetBucketNotification", - "events:CreateApiDestination", - "events:CreateConnection", - "events:CreateRule", - "events:UpdateConnection", - "events:DeleteConnection", - "events:UpdateApiDestination", - "events:DeleteApiDestination", - "events:ListApiDestinations", - "events:ListConnections", - "events:PutRule", - "events:DescribeRule", - "events:DeleteRule", - "events:PutTargets", - "events:RemoveTargets", - "events:ListTargetsByRule", - "secretsmanager:CreateSecret", - "sqs:CreateQueue", - "sqs:GetQueueAttributes", - "sqs:GetQueueUrl", - "sqs:SetQueueAttributes" - ] - }, - "delete": { - "permissions": [ - "securitylake:DeleteSubscriberNotification", - "securitylake:GetSubscriber", - "iam:DeleteRole", - "iam:DeleteRolePolicy", - "events:DeleteApiDestination", - "events:DeleteConnection", - "events:DeleteRule", - "events:ListTargetsByRule", - "events:DescribeRule", - "events:RemoveTargets", - "sqs:DeleteQueue" - ] - }, - "list": { - "permissions": [ - "securitylake:ListSubscribers" - ] - }, - "read": { - "permissions": [ - "securitylake:GetSubscriber" - ] - }, - "update": { - "permissions": [ - "securitylake:UpdateSubscriberNotification", - "securitylake:GetSubscriber", - "iam:CreateServiceLinkedRole", - "iam:PutRolePolicy", - "iam:DeleteRolePolicy", - "iam:PassRole", - "events:CreateApiDestination", - "events:CreateConnection", - "events:UpdateConnection", - "events:DeleteConnection", - "events:UpdateApiDestination", - "events:DeleteApiDestination", - "events:DeleteRule", - "events:ListApiDestinations", - "events:ListConnections", - "events:PutRule", - "events:DescribeRule", - "events:DeleteRule", - "events:PutTargets", - "events:RemoveTargets", - "events:ListTargetsByRule", - "secretsmanager:CreateSecret", - "s3:GetBucketNotificationConfiguration", - "s3:PutBucketNotificationConfiguration", - "s3:PutBucketNotification", - "s3:GetBucketNotification", - "sqs:CreateQueue", - "sqs:DeleteQueue", - "sqs:GetQueueAttributes", - "sqs:SetQueueAttributes" - ] - } - }, - "primaryIdentifier": [ - "/properties/SubscriberArn" - ], - "properties": { - "NotificationConfiguration": { - "$ref": "#/definitions/NotificationConfiguration" - }, - "SubscriberArn": { - "description": "The ARN for the subscriber", - "pattern": "^arn:.*$", - "type": "string" - }, - "SubscriberEndpoint": { - "description": "The endpoint the subscriber should listen to for notifications", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/SubscriberEndpoint" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "SubscriberArn", - "NotificationConfiguration" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securitylake.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::SecurityLake::SubscriberNotification", - "writeOnlyProperties": [ - "/properties/NotificationConfiguration/HttpsNotificationConfiguration/AuthorizationApiKeyName", - "/properties/NotificationConfiguration/HttpsNotificationConfiguration/AuthorizationApiKeyValue", - "/properties/NotificationConfiguration/HttpsNotificationConfiguration/Endpoint", - "/properties/NotificationConfiguration/HttpsNotificationConfiguration/HttpMethod", - "/properties/NotificationConfiguration/HttpsNotificationConfiguration/TargetRoleArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubscriberArn" + ], + "definitions": { + "HttpsNotificationConfiguration": { + "additionalProperties": false, + "description": "The configuration for HTTPS subscriber notification.", + "properties": { + "AuthorizationApiKeyName": { + "description": "The key name for the notification subscription.", + "type": "string" + }, + "AuthorizationApiKeyValue": { + "description": "The key value for the notification subscription.", + "type": "string" + }, + "Endpoint": { + "description": "The subscription endpoint in Security Lake.", + "pattern": "^https?://.+$", + "type": "string" + }, + "HttpMethod": { + "description": "The HTTPS method used for the notification subscription.", + "enum": [ + "POST", + "PUT" + ], + "type": "string" + }, + "TargetRoleArn": { + "description": "The Amazon Resource Name (ARN) of the EventBridge API destinations IAM role that you created.", + "pattern": "^arn:.*$", + "type": "string" + } + }, + "required": [ + "Endpoint", + "TargetRoleArn" + ], + "type": "object" + }, + "NotificationConfiguration": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "HttpsNotificationConfiguration" + ] + }, + { + "required": [ + "SqsNotificationConfiguration" + ] + } + ], + "properties": { + "HttpsNotificationConfiguration": { + "$ref": "#/definitions/HttpsNotificationConfiguration" + }, + "SqsNotificationConfiguration": { + "$ref": "#/definitions/SqsNotificationConfiguration" + } + }, + "type": "object" + }, + "SqsNotificationConfiguration": { + "description": "The configurations for SQS subscriber notification. The members of this structure are context-dependent.", + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SecurityLake::SubscriberNotification", + "handlers": { + "create": { + "permissions": [ + "securitylake:CreateDataLake", + "securitylake:CreateSubscriber", + "securitylake:CreateSubscriberNotification", + "securitylake:GetSubscriber", + "iam:CreateServiceLinkedRole", + "iam:PutRolePolicy", + "iam:DeleteRolePolicy", + "iam:PassRole", + "s3:PutBucketNotification", + "s3:GetBucketNotification", + "events:CreateApiDestination", + "events:CreateConnection", + "events:CreateRule", + "events:UpdateConnection", + "events:DeleteConnection", + "events:UpdateApiDestination", + "events:DeleteApiDestination", + "events:ListApiDestinations", + "events:ListConnections", + "events:PutRule", + "events:DescribeRule", + "events:DeleteRule", + "events:PutTargets", + "events:RemoveTargets", + "events:ListTargetsByRule", + "secretsmanager:CreateSecret", + "sqs:CreateQueue", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl", + "sqs:SetQueueAttributes" + ] + }, + "delete": { + "permissions": [ + "securitylake:DeleteSubscriberNotification", + "securitylake:GetSubscriber", + "iam:DeleteRole", + "iam:DeleteRolePolicy", + "events:DeleteApiDestination", + "events:DeleteConnection", + "events:DeleteRule", + "events:ListTargetsByRule", + "events:DescribeRule", + "events:RemoveTargets", + "sqs:DeleteQueue" + ] + }, + "list": { + "permissions": [ + "securitylake:ListSubscribers" + ] + }, + "read": { + "permissions": [ + "securitylake:GetSubscriber" + ] + }, + "update": { + "permissions": [ + "securitylake:UpdateSubscriberNotification", + "securitylake:GetSubscriber", + "iam:CreateServiceLinkedRole", + "iam:PutRolePolicy", + "iam:DeleteRolePolicy", + "iam:PassRole", + "events:CreateApiDestination", + "events:CreateConnection", + "events:UpdateConnection", + "events:DeleteConnection", + "events:UpdateApiDestination", + "events:DeleteApiDestination", + "events:DeleteRule", + "events:ListApiDestinations", + "events:ListConnections", + "events:PutRule", + "events:DescribeRule", + "events:DeleteRule", + "events:PutTargets", + "events:RemoveTargets", + "events:ListTargetsByRule", + "secretsmanager:CreateSecret", + "s3:GetBucketNotificationConfiguration", + "s3:PutBucketNotificationConfiguration", + "s3:PutBucketNotification", + "s3:GetBucketNotification", + "sqs:CreateQueue", + "sqs:DeleteQueue", + "sqs:GetQueueAttributes", + "sqs:SetQueueAttributes" + ] + } + }, + "primaryIdentifier": [ + "/properties/SubscriberArn" + ], + "properties": { + "NotificationConfiguration": { + "$ref": "#/definitions/NotificationConfiguration" + }, + "SubscriberArn": { + "description": "The ARN for the subscriber", + "pattern": "^arn:.*$", + "type": "string" + }, + "SubscriberEndpoint": { + "description": "The endpoint the subscriber should listen to for notifications", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/SubscriberEndpoint" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "SubscriberArn", + "NotificationConfiguration" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securitylake.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::SecurityLake::SubscriberNotification", + "writeOnlyProperties": [ + "/properties/NotificationConfiguration/HttpsNotificationConfiguration/AuthorizationApiKeyName", + "/properties/NotificationConfiguration/HttpsNotificationConfiguration/AuthorizationApiKeyValue", + "/properties/NotificationConfiguration/HttpsNotificationConfiguration/Endpoint", + "/properties/NotificationConfiguration/HttpsNotificationConfiguration/HttpMethod", + "/properties/NotificationConfiguration/HttpsNotificationConfiguration/TargetRoleArn" + ] +} diff --git a/src/schema/aws-servicecatalog-acceptedportfolioshare.json b/src/schema/aws-servicecatalog-acceptedportfolioshare.json index d6a630f3..315bb276 100644 --- a/src/schema/aws-servicecatalog-acceptedportfolioshare.json +++ b/src/schema/aws-servicecatalog-acceptedportfolioshare.json @@ -1,29 +1,29 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PortfolioId", - "/properties/AcceptLanguage" - ], - "description": "Resource Type definition for AWS::ServiceCatalog::AcceptedPortfolioShare", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AcceptLanguage": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "PortfolioId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "PortfolioId" - ], - "typeName": "AWS::ServiceCatalog::AcceptedPortfolioShare" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PortfolioId", + "/properties/AcceptLanguage" + ], + "description": "Resource Type definition for AWS::ServiceCatalog::AcceptedPortfolioShare", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AcceptLanguage": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "PortfolioId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "PortfolioId" + ], + "typeName": "AWS::ServiceCatalog::AcceptedPortfolioShare" +} diff --git a/src/schema/aws-servicecatalog-cloudformationproduct.json b/src/schema/aws-servicecatalog-cloudformationproduct.json index 14198148..de47290c 100644 --- a/src/schema/aws-servicecatalog-cloudformationproduct.json +++ b/src/schema/aws-servicecatalog-cloudformationproduct.json @@ -1,170 +1,170 @@ -{ - "additionalProperties": false, - "definitions": { - "CodeStarParameters": { - "additionalProperties": false, - "properties": { - "ArtifactPath": { - "type": "string" - }, - "Branch": { - "type": "string" - }, - "ConnectionArn": { - "type": "string" - }, - "Repository": { - "type": "string" - } - }, - "required": [ - "ArtifactPath", - "Repository", - "Branch", - "ConnectionArn" - ], - "type": "object" - }, - "ConnectionParameters": { - "additionalProperties": false, - "properties": { - "CodeStar": { - "$ref": "#/definitions/CodeStarParameters" - } - }, - "type": "object" - }, - "ProvisioningArtifactProperties": { - "additionalProperties": false, - "properties": { - "Description": { - "type": "string" - }, - "DisableTemplateValidation": { - "type": "boolean" - }, - "Info": { - "type": "object" - }, - "Name": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Info" - ], - "type": "object" - }, - "SourceConnection": { - "additionalProperties": false, - "properties": { - "ConnectionParameters": { - "$ref": "#/definitions/ConnectionParameters" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type", - "ConnectionParameters" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ServiceCatalog::CloudFormationProduct", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AcceptLanguage": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Distributor": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Owner": { - "type": "string" - }, - "ProductName": { - "type": "string" - }, - "ProductType": { - "type": "string" - }, - "ProvisioningArtifactIds": { - "type": "string" - }, - "ProvisioningArtifactNames": { - "type": "string" - }, - "ProvisioningArtifactParameters": { - "items": { - "$ref": "#/definitions/ProvisioningArtifactProperties" - }, - "type": "array", - "uniqueItems": false - }, - "ReplaceProvisioningArtifacts": { - "type": "boolean" - }, - "SourceConnection": { - "$ref": "#/definitions/SourceConnection" - }, - "SupportDescription": { - "type": "string" - }, - "SupportEmail": { - "type": "string" - }, - "SupportUrl": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ProvisioningArtifactIds", - "/properties/Id", - "/properties/ProvisioningArtifactNames", - "/properties/ProductName" - ], - "required": [ - "Owner", - "Name" - ], - "typeName": "AWS::ServiceCatalog::CloudFormationProduct" -} +{ + "additionalProperties": false, + "definitions": { + "CodeStarParameters": { + "additionalProperties": false, + "properties": { + "ArtifactPath": { + "type": "string" + }, + "Branch": { + "type": "string" + }, + "ConnectionArn": { + "type": "string" + }, + "Repository": { + "type": "string" + } + }, + "required": [ + "ArtifactPath", + "Repository", + "Branch", + "ConnectionArn" + ], + "type": "object" + }, + "ConnectionParameters": { + "additionalProperties": false, + "properties": { + "CodeStar": { + "$ref": "#/definitions/CodeStarParameters" + } + }, + "type": "object" + }, + "ProvisioningArtifactProperties": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "DisableTemplateValidation": { + "type": "boolean" + }, + "Info": { + "type": "object" + }, + "Name": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Info" + ], + "type": "object" + }, + "SourceConnection": { + "additionalProperties": false, + "properties": { + "ConnectionParameters": { + "$ref": "#/definitions/ConnectionParameters" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type", + "ConnectionParameters" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ServiceCatalog::CloudFormationProduct", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AcceptLanguage": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Distributor": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Owner": { + "type": "string" + }, + "ProductName": { + "type": "string" + }, + "ProductType": { + "type": "string" + }, + "ProvisioningArtifactIds": { + "type": "string" + }, + "ProvisioningArtifactNames": { + "type": "string" + }, + "ProvisioningArtifactParameters": { + "items": { + "$ref": "#/definitions/ProvisioningArtifactProperties" + }, + "type": "array", + "uniqueItems": false + }, + "ReplaceProvisioningArtifacts": { + "type": "boolean" + }, + "SourceConnection": { + "$ref": "#/definitions/SourceConnection" + }, + "SupportDescription": { + "type": "string" + }, + "SupportEmail": { + "type": "string" + }, + "SupportUrl": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ProvisioningArtifactIds", + "/properties/Id", + "/properties/ProvisioningArtifactNames", + "/properties/ProductName" + ], + "required": [ + "Owner", + "Name" + ], + "typeName": "AWS::ServiceCatalog::CloudFormationProduct" +} diff --git a/src/schema/aws-servicecatalog-cloudformationprovisionedproduct.json b/src/schema/aws-servicecatalog-cloudformationprovisionedproduct.json index 83ebaf23..3cb41104 100644 --- a/src/schema/aws-servicecatalog-cloudformationprovisionedproduct.json +++ b/src/schema/aws-servicecatalog-cloudformationprovisionedproduct.json @@ -1,230 +1,235 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/NotificationArns", - "/properties/ProvisionedProductName" - ], - "definitions": { - "OutputType": { - "type": "string" - }, - "ProvisioningParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 4096, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "ProvisioningPreferences": { - "additionalProperties": false, - "properties": { - "StackSetAccounts": { - "items": { - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "StackSetFailureToleranceCount": { - "minimum": 0, - "type": "integer" - }, - "StackSetFailureTolerancePercentage": { - "maximum": 100, - "minimum": 0, - "type": "integer" - }, - "StackSetMaxConcurrencyCount": { - "minimum": 1, - "type": "integer" - }, - "StackSetMaxConcurrencyPercentage": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "StackSetOperationType": { - "enum": [ - "CREATE", - "UPDATE", - "DELETE" - ], - "type": "string" - }, - "StackSetRegions": { - "items": { - "pattern": "^[a-z]{2}-([a-z]+-)+[1-9]", - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Schema for AWS::ServiceCatalog::CloudFormationProvisionedProduct", - "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationprovisionedproduct.html", - "handlers": { - "create": { - "permissions": [ - "*" - ], - "timeoutInMinutes": 720 - }, - "delete": { - "permissions": [ - "*" - ] - }, - "read": { - "permissions": [ - "*" - ] - }, - "update": { - "permissions": [ - "*" - ], - "timeoutInMinutes": 720 - } - }, - "primaryIdentifier": [ - "/properties/ProvisionedProductId" - ], - "properties": { - "AcceptLanguage": { - "enum": [ - "en", - "jp", - "zh" - ], - "type": "string" - }, - "CloudformationStackArn": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "NotificationArns": { - "items": { - "type": "string" - }, - "maxItems": 5, - "type": "array", - "uniqueItems": true - }, - "Outputs": { - "additionalProperties": false, - "description": "List of key-value pair outputs.", - "maxProperties": 100, - "patternProperties": { - "^[A-Za-z0-9]{1,64}$": { - "$ref": "#/definitions/OutputType" - } - }, - "type": "object" - }, - "PathId": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "PathName": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "ProductId": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "ProductName": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "ProvisionedProductId": { - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "ProvisionedProductName": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "ProvisioningArtifactId": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "ProvisioningArtifactName": { - "type": "string" - }, - "ProvisioningParameters": { - "items": { - "$ref": "#/definitions/ProvisioningParameter" - }, - "type": "array" - }, - "ProvisioningPreferences": { - "$ref": "#/definitions/ProvisioningPreferences" - }, - "RecordId": { - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/RecordId", - "/properties/CloudformationStackArn", - "/properties/Outputs", - "/properties/ProvisionedProductId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::ServiceCatalog::CloudFormationProvisionedProduct" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/NotificationArns", + "/properties/ProvisionedProductName" + ], + "definitions": { + "OutputType": { + "type": "string" + }, + "ProvisioningParameter": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 4096, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "ProvisioningPreferences": { + "additionalProperties": false, + "properties": { + "StackSetAccounts": { + "items": { + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "StackSetFailureToleranceCount": { + "minimum": 0, + "type": "integer" + }, + "StackSetFailureTolerancePercentage": { + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "StackSetMaxConcurrencyCount": { + "minimum": 1, + "type": "integer" + }, + "StackSetMaxConcurrencyPercentage": { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "StackSetOperationType": { + "enum": [ + "CREATE", + "UPDATE", + "DELETE" + ], + "type": "string" + }, + "StackSetRegions": { + "items": { + "pattern": "^[a-z]{2}-([a-z]+-)+[1-9]", + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Schema for AWS::ServiceCatalog::CloudFormationProvisionedProduct", + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationprovisionedproduct.html", + "handlers": { + "create": { + "permissions": [ + "servicecatalog:provisionProduct", + "cloudformation:CreateStack" + ], + "timeoutInMinutes": 720 + }, + "delete": { + "permissions": [ + "servicecatalog:terminateProvisionedProduct", + "servicecatalog:describeRecord", + "cloudformation:DeleteStack" + ] + }, + "read": { + "permissions": [ + "servicecatalog:describeProvisionedProduct", + "cloudformation:ListStacks" + ] + }, + "update": { + "permissions": [ + "servicecatalog:updateProvisionedProduct", + "cloudformation:UpdateStack" + ], + "timeoutInMinutes": 720 + } + }, + "primaryIdentifier": [ + "/properties/ProvisionedProductId" + ], + "properties": { + "AcceptLanguage": { + "enum": [ + "en", + "jp", + "zh" + ], + "type": "string" + }, + "CloudformationStackArn": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "NotificationArns": { + "items": { + "type": "string" + }, + "maxItems": 5, + "type": "array", + "uniqueItems": true + }, + "Outputs": { + "additionalProperties": false, + "description": "List of key-value pair outputs.", + "maxProperties": 100, + "patternProperties": { + "^[A-Za-z0-9]{1,64}$": { + "$ref": "#/definitions/OutputType" + } + }, + "type": "object" + }, + "PathId": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "PathName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "ProductId": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "ProductName": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ProvisionedProductId": { + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "ProvisionedProductName": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ProvisioningArtifactId": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "ProvisioningArtifactName": { + "type": "string" + }, + "ProvisioningParameters": { + "items": { + "$ref": "#/definitions/ProvisioningParameter" + }, + "type": "array" + }, + "ProvisioningPreferences": { + "$ref": "#/definitions/ProvisioningPreferences" + }, + "RecordId": { + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/RecordId", + "/properties/CloudformationStackArn", + "/properties/Outputs", + "/properties/ProvisionedProductId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "typeName": "AWS::ServiceCatalog::CloudFormationProvisionedProduct" +} diff --git a/src/schema/aws-servicecatalog-launchnotificationconstraint.json b/src/schema/aws-servicecatalog-launchnotificationconstraint.json index a9b4ac7b..3e6ec50c 100644 --- a/src/schema/aws-servicecatalog-launchnotificationconstraint.json +++ b/src/schema/aws-servicecatalog-launchnotificationconstraint.json @@ -1,44 +1,44 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PortfolioId", - "/properties/ProductId" - ], - "description": "Resource Type definition for AWS::ServiceCatalog::LaunchNotificationConstraint", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AcceptLanguage": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "NotificationArns": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "PortfolioId": { - "type": "string" - }, - "ProductId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "NotificationArns", - "PortfolioId", - "ProductId" - ], - "typeName": "AWS::ServiceCatalog::LaunchNotificationConstraint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PortfolioId", + "/properties/ProductId" + ], + "description": "Resource Type definition for AWS::ServiceCatalog::LaunchNotificationConstraint", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AcceptLanguage": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "NotificationArns": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "PortfolioId": { + "type": "string" + }, + "ProductId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "NotificationArns", + "PortfolioId", + "ProductId" + ], + "typeName": "AWS::ServiceCatalog::LaunchNotificationConstraint" +} diff --git a/src/schema/aws-servicecatalog-launchroleconstraint.json b/src/schema/aws-servicecatalog-launchroleconstraint.json index 6de01eec..5b8b8cfc 100644 --- a/src/schema/aws-servicecatalog-launchroleconstraint.json +++ b/src/schema/aws-servicecatalog-launchroleconstraint.json @@ -1,42 +1,42 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PortfolioId", - "/properties/ProductId" - ], - "description": "Resource Type definition for AWS::ServiceCatalog::LaunchRoleConstraint", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AcceptLanguage": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "LocalRoleName": { - "type": "string" - }, - "PortfolioId": { - "type": "string" - }, - "ProductId": { - "type": "string" - }, - "RoleArn": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "PortfolioId", - "ProductId" - ], - "typeName": "AWS::ServiceCatalog::LaunchRoleConstraint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PortfolioId", + "/properties/ProductId" + ], + "description": "Resource Type definition for AWS::ServiceCatalog::LaunchRoleConstraint", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AcceptLanguage": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "LocalRoleName": { + "type": "string" + }, + "PortfolioId": { + "type": "string" + }, + "ProductId": { + "type": "string" + }, + "RoleArn": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "PortfolioId", + "ProductId" + ], + "typeName": "AWS::ServiceCatalog::LaunchRoleConstraint" +} diff --git a/src/schema/aws-servicecatalog-launchtemplateconstraint.json b/src/schema/aws-servicecatalog-launchtemplateconstraint.json index 6848eb65..f09c678a 100644 --- a/src/schema/aws-servicecatalog-launchtemplateconstraint.json +++ b/src/schema/aws-servicecatalog-launchtemplateconstraint.json @@ -1,40 +1,40 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PortfolioId", - "/properties/ProductId" - ], - "description": "Resource Type definition for AWS::ServiceCatalog::LaunchTemplateConstraint", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AcceptLanguage": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "PortfolioId": { - "type": "string" - }, - "ProductId": { - "type": "string" - }, - "Rules": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "PortfolioId", - "ProductId", - "Rules" - ], - "typeName": "AWS::ServiceCatalog::LaunchTemplateConstraint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PortfolioId", + "/properties/ProductId" + ], + "description": "Resource Type definition for AWS::ServiceCatalog::LaunchTemplateConstraint", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AcceptLanguage": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "PortfolioId": { + "type": "string" + }, + "ProductId": { + "type": "string" + }, + "Rules": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "PortfolioId", + "ProductId", + "Rules" + ], + "typeName": "AWS::ServiceCatalog::LaunchTemplateConstraint" +} diff --git a/src/schema/aws-servicecatalog-portfolio.json b/src/schema/aws-servicecatalog-portfolio.json index 192ab602..ec4017f4 100644 --- a/src/schema/aws-servicecatalog-portfolio.json +++ b/src/schema/aws-servicecatalog-portfolio.json @@ -1,61 +1,61 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ServiceCatalog::Portfolio", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AcceptLanguage": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "DisplayName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "PortfolioName": { - "type": "string" - }, - "ProviderName": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PortfolioName", - "/properties/Id" - ], - "required": [ - "DisplayName", - "ProviderName" - ], - "typeName": "AWS::ServiceCatalog::Portfolio" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ServiceCatalog::Portfolio", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AcceptLanguage": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DisplayName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "PortfolioName": { + "type": "string" + }, + "ProviderName": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/PortfolioName", + "/properties/Id" + ], + "required": [ + "DisplayName", + "ProviderName" + ], + "typeName": "AWS::ServiceCatalog::Portfolio" +} diff --git a/src/schema/aws-servicecatalog-portfolioprincipalassociation.json b/src/schema/aws-servicecatalog-portfolioprincipalassociation.json index 1b8f02d7..f6f60179 100644 --- a/src/schema/aws-servicecatalog-portfolioprincipalassociation.json +++ b/src/schema/aws-servicecatalog-portfolioprincipalassociation.json @@ -1,39 +1,39 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PortfolioId", - "/properties/AcceptLanguage", - "/properties/PrincipalARN", - "/properties/PrincipalType" - ], - "description": "Resource Type definition for AWS::ServiceCatalog::PortfolioPrincipalAssociation", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AcceptLanguage": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "PortfolioId": { - "type": "string" - }, - "PrincipalARN": { - "type": "string" - }, - "PrincipalType": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "PortfolioId", - "PrincipalType", - "PrincipalARN" - ], - "typeName": "AWS::ServiceCatalog::PortfolioPrincipalAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PortfolioId", + "/properties/AcceptLanguage", + "/properties/PrincipalARN", + "/properties/PrincipalType" + ], + "description": "Resource Type definition for AWS::ServiceCatalog::PortfolioPrincipalAssociation", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AcceptLanguage": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "PortfolioId": { + "type": "string" + }, + "PrincipalARN": { + "type": "string" + }, + "PrincipalType": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "PortfolioId", + "PrincipalType", + "PrincipalARN" + ], + "typeName": "AWS::ServiceCatalog::PortfolioPrincipalAssociation" +} diff --git a/src/schema/aws-servicecatalog-portfolioproductassociation.json b/src/schema/aws-servicecatalog-portfolioproductassociation.json index c39b3141..ac462178 100644 --- a/src/schema/aws-servicecatalog-portfolioproductassociation.json +++ b/src/schema/aws-servicecatalog-portfolioproductassociation.json @@ -1,38 +1,38 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SourcePortfolioId", - "/properties/PortfolioId", - "/properties/AcceptLanguage", - "/properties/ProductId" - ], - "description": "Resource Type definition for AWS::ServiceCatalog::PortfolioProductAssociation", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AcceptLanguage": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "PortfolioId": { - "type": "string" - }, - "ProductId": { - "type": "string" - }, - "SourcePortfolioId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "PortfolioId", - "ProductId" - ], - "typeName": "AWS::ServiceCatalog::PortfolioProductAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SourcePortfolioId", + "/properties/PortfolioId", + "/properties/AcceptLanguage", + "/properties/ProductId" + ], + "description": "Resource Type definition for AWS::ServiceCatalog::PortfolioProductAssociation", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AcceptLanguage": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "PortfolioId": { + "type": "string" + }, + "ProductId": { + "type": "string" + }, + "SourcePortfolioId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "PortfolioId", + "ProductId" + ], + "typeName": "AWS::ServiceCatalog::PortfolioProductAssociation" +} diff --git a/src/schema/aws-servicecatalog-portfolioshare.json b/src/schema/aws-servicecatalog-portfolioshare.json index 62d629dc..20ed2e1c 100644 --- a/src/schema/aws-servicecatalog-portfolioshare.json +++ b/src/schema/aws-servicecatalog-portfolioshare.json @@ -1,37 +1,37 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AcceptLanguage", - "/properties/AccountId", - "/properties/PortfolioId" - ], - "description": "Resource Type definition for AWS::ServiceCatalog::PortfolioShare", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AcceptLanguage": { - "type": "string" - }, - "AccountId": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "PortfolioId": { - "type": "string" - }, - "ShareTagOptions": { - "type": "boolean" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "AccountId", - "PortfolioId" - ], - "typeName": "AWS::ServiceCatalog::PortfolioShare" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AcceptLanguage", + "/properties/AccountId", + "/properties/PortfolioId" + ], + "description": "Resource Type definition for AWS::ServiceCatalog::PortfolioShare", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AcceptLanguage": { + "type": "string" + }, + "AccountId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "PortfolioId": { + "type": "string" + }, + "ShareTagOptions": { + "type": "boolean" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "AccountId", + "PortfolioId" + ], + "typeName": "AWS::ServiceCatalog::PortfolioShare" +} diff --git a/src/schema/aws-servicecatalog-resourceupdateconstraint.json b/src/schema/aws-servicecatalog-resourceupdateconstraint.json index bf91f4f0..678a9b07 100644 --- a/src/schema/aws-servicecatalog-resourceupdateconstraint.json +++ b/src/schema/aws-servicecatalog-resourceupdateconstraint.json @@ -1,40 +1,40 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PortfolioId", - "/properties/ProductId" - ], - "description": "Resource Type definition for AWS::ServiceCatalog::ResourceUpdateConstraint", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AcceptLanguage": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "PortfolioId": { - "type": "string" - }, - "ProductId": { - "type": "string" - }, - "TagUpdateOnProvisionedProduct": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "TagUpdateOnProvisionedProduct", - "PortfolioId", - "ProductId" - ], - "typeName": "AWS::ServiceCatalog::ResourceUpdateConstraint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PortfolioId", + "/properties/ProductId" + ], + "description": "Resource Type definition for AWS::ServiceCatalog::ResourceUpdateConstraint", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AcceptLanguage": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "PortfolioId": { + "type": "string" + }, + "ProductId": { + "type": "string" + }, + "TagUpdateOnProvisionedProduct": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TagUpdateOnProvisionedProduct", + "PortfolioId", + "ProductId" + ], + "typeName": "AWS::ServiceCatalog::ResourceUpdateConstraint" +} diff --git a/src/schema/aws-servicecatalog-serviceaction.json b/src/schema/aws-servicecatalog-serviceaction.json index 2633564c..ce6550fc 100644 --- a/src/schema/aws-servicecatalog-serviceaction.json +++ b/src/schema/aws-servicecatalog-serviceaction.json @@ -1,108 +1,108 @@ -{ - "additionalProperties": false, - "definitions": { - "DefinitionParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 4096, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Schema for AWS::ServiceCatalog::ServiceAction", - "handlers": { - "create": { - "permissions": [ - "servicecatalog:CreateServiceAction", - "ssm:DescribeDocument", - "iam:GetRole" - ] - }, - "delete": { - "permissions": [ - "servicecatalog:DeleteServiceAction" - ] - }, - "list": { - "permissions": [ - "servicecatalog:ListServiceActions" - ] - }, - "read": { - "permissions": [ - "servicecatalog:DescribeServiceAction" - ] - }, - "update": { - "permissions": [ - "servicecatalog:UpdateServiceAction", - "iam:GetRole", - "ssm:DescribeDocument" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AcceptLanguage": { - "enum": [ - "en", - "jp", - "zh" - ], - "type": "string" - }, - "Definition": { - "items": { - "$ref": "#/definitions/DefinitionParameter" - }, - "type": "array" - }, - "DefinitionType": { - "enum": [ - "SSM_AUTOMATION" - ], - "type": "string" - }, - "Description": { - "maxLength": 1024, - "type": "string" - }, - "Id": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "Name": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Name", - "DefinitionType", - "Definition" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::ServiceCatalog::ServiceAction", - "writeOnlyProperties": [ - "/properties/AcceptLanguage" - ] -} +{ + "additionalProperties": false, + "definitions": { + "DefinitionParameter": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 4096, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Schema for AWS::ServiceCatalog::ServiceAction", + "handlers": { + "create": { + "permissions": [ + "servicecatalog:CreateServiceAction", + "ssm:DescribeDocument", + "iam:GetRole" + ] + }, + "delete": { + "permissions": [ + "servicecatalog:DeleteServiceAction" + ] + }, + "list": { + "permissions": [ + "servicecatalog:ListServiceActions" + ] + }, + "read": { + "permissions": [ + "servicecatalog:DescribeServiceAction" + ] + }, + "update": { + "permissions": [ + "servicecatalog:UpdateServiceAction", + "iam:GetRole", + "ssm:DescribeDocument" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AcceptLanguage": { + "enum": [ + "en", + "jp", + "zh" + ], + "type": "string" + }, + "Definition": { + "items": { + "$ref": "#/definitions/DefinitionParameter" + }, + "type": "array" + }, + "DefinitionType": { + "enum": [ + "SSM_AUTOMATION" + ], + "type": "string" + }, + "Description": { + "maxLength": 1024, + "type": "string" + }, + "Id": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name", + "DefinitionType", + "Definition" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "typeName": "AWS::ServiceCatalog::ServiceAction", + "writeOnlyProperties": [ + "/properties/AcceptLanguage" + ] +} diff --git a/src/schema/aws-servicecatalog-serviceactionassociation.json b/src/schema/aws-servicecatalog-serviceactionassociation.json index 7487f056..7a212e7e 100644 --- a/src/schema/aws-servicecatalog-serviceactionassociation.json +++ b/src/schema/aws-servicecatalog-serviceactionassociation.json @@ -1,79 +1,79 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProductId", - "/properties/ProvisioningArtifactId", - "/properties/ServiceActionId" - ], - "description": "Resource Schema for AWS::ServiceCatalog::ServiceActionAssociation", - "handlers": { - "create": { - "permissions": [ - "servicecatalog:AssociateServiceActionWithProvisioningArtifact", - "servicecatalog:ListServiceActionsForProvisioningArtifact" - ] - }, - "delete": { - "permissions": [ - "servicecatalog:DisassociateServiceActionFromProvisioningArtifact", - "servicecatalog:ListServiceActionsForProvisioningArtifact" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ProductId": { - "$ref": "resource-schema.json#/properties/ProductId" - }, - "ProvisioningArtifactId": { - "$ref": "resource-schema.json#/properties/ProvisioningArtifactId" - } - }, - "required": [ - "ProductId", - "ProvisioningArtifactId" - ] - }, - "permissions": [ - "servicecatalog:ListServiceActionsForProvisioningArtifact" - ] - }, - "read": { - "permissions": [ - "servicecatalog:ListServiceActionsForProvisioningArtifact" - ] - } - }, - "primaryIdentifier": [ - "/properties/ProductId", - "/properties/ProvisioningArtifactId", - "/properties/ServiceActionId" - ], - "properties": { - "ProductId": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{1,99}\\Z", - "type": "string" - }, - "ProvisioningArtifactId": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{1,99}\\Z", - "type": "string" - }, - "ServiceActionId": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{1,99}\\Z", - "type": "string" - } - }, - "required": [ - "ProductId", - "ProvisioningArtifactId", - "ServiceActionId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-servicecatalog", - "typeName": "AWS::ServiceCatalog::ServiceActionAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ProductId", + "/properties/ProvisioningArtifactId", + "/properties/ServiceActionId" + ], + "description": "Resource Schema for AWS::ServiceCatalog::ServiceActionAssociation", + "handlers": { + "create": { + "permissions": [ + "servicecatalog:AssociateServiceActionWithProvisioningArtifact", + "servicecatalog:ListServiceActionsForProvisioningArtifact" + ] + }, + "delete": { + "permissions": [ + "servicecatalog:DisassociateServiceActionFromProvisioningArtifact", + "servicecatalog:ListServiceActionsForProvisioningArtifact" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ProductId": { + "$ref": "resource-schema.json#/properties/ProductId" + }, + "ProvisioningArtifactId": { + "$ref": "resource-schema.json#/properties/ProvisioningArtifactId" + } + }, + "required": [ + "ProductId", + "ProvisioningArtifactId" + ] + }, + "permissions": [ + "servicecatalog:ListServiceActionsForProvisioningArtifact" + ] + }, + "read": { + "permissions": [ + "servicecatalog:ListServiceActionsForProvisioningArtifact" + ] + } + }, + "primaryIdentifier": [ + "/properties/ProductId", + "/properties/ProvisioningArtifactId", + "/properties/ServiceActionId" + ], + "properties": { + "ProductId": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{1,99}\\Z", + "type": "string" + }, + "ProvisioningArtifactId": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{1,99}\\Z", + "type": "string" + }, + "ServiceActionId": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{1,99}\\Z", + "type": "string" + } + }, + "required": [ + "ProductId", + "ProvisioningArtifactId", + "ServiceActionId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-servicecatalog", + "typeName": "AWS::ServiceCatalog::ServiceActionAssociation" +} diff --git a/src/schema/aws-servicecatalog-stacksetconstraint.json b/src/schema/aws-servicecatalog-stacksetconstraint.json index 7e320ab2..6ad74fbc 100644 --- a/src/schema/aws-servicecatalog-stacksetconstraint.json +++ b/src/schema/aws-servicecatalog-stacksetconstraint.json @@ -1,65 +1,65 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PortfolioId", - "/properties/ProductId" - ], - "description": "Resource Type definition for AWS::ServiceCatalog::StackSetConstraint", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AcceptLanguage": { - "type": "string" - }, - "AccountList": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AdminRole": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "ExecutionRole": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "PortfolioId": { - "type": "string" - }, - "ProductId": { - "type": "string" - }, - "RegionList": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "StackInstanceControl": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Description", - "StackInstanceControl", - "PortfolioId", - "ProductId", - "RegionList", - "AdminRole", - "AccountList", - "ExecutionRole" - ], - "typeName": "AWS::ServiceCatalog::StackSetConstraint" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PortfolioId", + "/properties/ProductId" + ], + "description": "Resource Type definition for AWS::ServiceCatalog::StackSetConstraint", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AcceptLanguage": { + "type": "string" + }, + "AccountList": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "AdminRole": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "ExecutionRole": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "PortfolioId": { + "type": "string" + }, + "ProductId": { + "type": "string" + }, + "RegionList": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "StackInstanceControl": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Description", + "StackInstanceControl", + "PortfolioId", + "ProductId", + "RegionList", + "AdminRole", + "AccountList", + "ExecutionRole" + ], + "typeName": "AWS::ServiceCatalog::StackSetConstraint" +} diff --git a/src/schema/aws-servicecatalog-tagoption.json b/src/schema/aws-servicecatalog-tagoption.json index d6e0bcff..feaa776f 100644 --- a/src/schema/aws-servicecatalog-tagoption.json +++ b/src/schema/aws-servicecatalog-tagoption.json @@ -1,33 +1,33 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Value", - "/properties/Key" - ], - "description": "Resource Type definition for AWS::ServiceCatalog::TagOption", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Active": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Value", - "Key" - ], - "typeName": "AWS::ServiceCatalog::TagOption" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Value", + "/properties/Key" + ], + "description": "Resource Type definition for AWS::ServiceCatalog::TagOption", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Active": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Value", + "Key" + ], + "typeName": "AWS::ServiceCatalog::TagOption" +} diff --git a/src/schema/aws-servicecatalog-tagoptionassociation.json b/src/schema/aws-servicecatalog-tagoptionassociation.json index 35db8d5d..274678dc 100644 --- a/src/schema/aws-servicecatalog-tagoptionassociation.json +++ b/src/schema/aws-servicecatalog-tagoptionassociation.json @@ -1,30 +1,30 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TagOptionId", - "/properties/ResourceId" - ], - "description": "Resource Type definition for AWS::ServiceCatalog::TagOptionAssociation", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "ResourceId": { - "type": "string" - }, - "TagOptionId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "TagOptionId", - "ResourceId" - ], - "typeName": "AWS::ServiceCatalog::TagOptionAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TagOptionId", + "/properties/ResourceId" + ], + "description": "Resource Type definition for AWS::ServiceCatalog::TagOptionAssociation", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "ResourceId": { + "type": "string" + }, + "TagOptionId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TagOptionId", + "ResourceId" + ], + "typeName": "AWS::ServiceCatalog::TagOptionAssociation" +} diff --git a/src/schema/aws-servicecatalogappregistry-application.json b/src/schema/aws-servicecatalogappregistry-application.json index 6b6963f7..44d3cb79 100644 --- a/src/schema/aws-servicecatalogappregistry-application.json +++ b/src/schema/aws-servicecatalogappregistry-application.json @@ -1,122 +1,122 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Name" - ] - ], - "additionalProperties": false, - "definitions": { - "Tags": { - "additionalProperties": false, - "maxProperties": 50, - "patternProperties": { - "^[a-zA-Z+-=._:/]+$": { - "maxLength": 256, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Schema for AWS::ServiceCatalogAppRegistry::Application", - "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-appregistry-application.html", - "handlers": { - "create": { - "permissions": [ - "servicecatalog:CreateApplication", - "servicecatalog:TagResource", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "servicecatalog:DeleteApplication" - ] - }, - "list": { - "permissions": [ - "servicecatalog:ListApplications" - ] - }, - "read": { - "permissions": [ - "servicecatalog:GetApplication" - ] - }, - "update": { - "permissions": [ - "servicecatalog:GetApplication", - "servicecatalog:ListTagsForResource", - "servicecatalog:TagResource", - "servicecatalog:UntagResource", - "servicecatalog:UpdateApplication", - "iam:CreateServiceLinkedRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationName": { - "description": "The name of the application. ", - "maxLength": 256, - "minLength": 1, - "pattern": "\\w+", - "type": "string" - }, - "ApplicationTagKey": { - "description": "The key of the AWS application tag, which is awsApplication. Applications created before 11/13/2023 or applications without the AWS application tag resource group return no value.", - "maxLength": 128, - "pattern": "\\w+", - "type": "string" - }, - "ApplicationTagValue": { - "description": "The value of the AWS application tag, which is the identifier of an associated resource. Applications created before 11/13/2023 or applications without the AWS application tag resource group return no value. ", - "maxLength": 256, - "pattern": "\\[a-zA-Z0-9_-:/]+", - "type": "string" - }, - "Arn": { - "pattern": "arn:aws[-a-z]*:servicecatalog:[a-z]{2}(-gov)?-[a-z]+-\\d:\\d{12}:/applications/[a-z0-9]+", - "type": "string" - }, - "Description": { - "description": "The description of the application. ", - "maxLength": 1024, - "type": "string" - }, - "Id": { - "pattern": "[a-z0-9]{26}", - "type": "string" - }, - "Name": { - "description": "The name of the application. ", - "maxLength": 256, - "minLength": 1, - "pattern": "\\w+", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/Tags" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/ApplicationName", - "/properties/ApplicationTagKey", - "/properties/ApplicationTagValue" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-servicecatalog-appregistry.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ServiceCatalogAppRegistry::Application" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "definitions": { + "Tags": { + "additionalProperties": false, + "maxProperties": 50, + "patternProperties": { + "^[a-zA-Z+-=._:/]+$": { + "maxLength": 256, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Schema for AWS::ServiceCatalogAppRegistry::Application", + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-appregistry-application.html", + "handlers": { + "create": { + "permissions": [ + "servicecatalog:CreateApplication", + "servicecatalog:TagResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "servicecatalog:DeleteApplication" + ] + }, + "list": { + "permissions": [ + "servicecatalog:ListApplications" + ] + }, + "read": { + "permissions": [ + "servicecatalog:GetApplication" + ] + }, + "update": { + "permissions": [ + "servicecatalog:GetApplication", + "servicecatalog:ListTagsForResource", + "servicecatalog:TagResource", + "servicecatalog:UntagResource", + "servicecatalog:UpdateApplication", + "iam:CreateServiceLinkedRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApplicationName": { + "description": "The name of the application. ", + "maxLength": 256, + "minLength": 1, + "pattern": "\\w+", + "type": "string" + }, + "ApplicationTagKey": { + "description": "The key of the AWS application tag, which is awsApplication. Applications created before 11/13/2023 or applications without the AWS application tag resource group return no value.", + "maxLength": 128, + "pattern": "\\w+", + "type": "string" + }, + "ApplicationTagValue": { + "description": "The value of the AWS application tag, which is the identifier of an associated resource. Applications created before 11/13/2023 or applications without the AWS application tag resource group return no value. ", + "maxLength": 256, + "pattern": "\\[a-zA-Z0-9_-:/]+", + "type": "string" + }, + "Arn": { + "pattern": "arn:aws[-a-z]*:servicecatalog:[a-z]{2}(-gov)?-[a-z]+-\\d:\\d{12}:/applications/[a-z0-9]+", + "type": "string" + }, + "Description": { + "description": "The description of the application. ", + "maxLength": 1024, + "type": "string" + }, + "Id": { + "pattern": "[a-z0-9]{26}", + "type": "string" + }, + "Name": { + "description": "The name of the application. ", + "maxLength": 256, + "minLength": 1, + "pattern": "\\w+", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn", + "/properties/ApplicationName", + "/properties/ApplicationTagKey", + "/properties/ApplicationTagValue" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-servicecatalog-appregistry.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ServiceCatalogAppRegistry::Application" +} diff --git a/src/schema/aws-servicecatalogappregistry-attributegroup.json b/src/schema/aws-servicecatalogappregistry-attributegroup.json index c69e8c34..5f173b94 100644 --- a/src/schema/aws-servicecatalogappregistry-attributegroup.json +++ b/src/schema/aws-servicecatalogappregistry-attributegroup.json @@ -1,102 +1,102 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Name" - ] - ], - "additionalProperties": false, - "definitions": { - "Tags": { - "additionalProperties": false, - "maxProperties": 50, - "patternProperties": { - "^[a-zA-Z+-=._:/]+$": { - "maxLength": 256, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Schema for AWS::ServiceCatalogAppRegistry::AttributeGroup.", - "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-appregistry-attributegroup.html", - "handlers": { - "create": { - "permissions": [ - "servicecatalog:CreateAttributeGroup", - "servicecatalog:TagResource" - ] - }, - "delete": { - "permissions": [ - "servicecatalog:DeleteAttributeGroup" - ] - }, - "list": { - "permissions": [ - "servicecatalog:ListAttributeGroups" - ] - }, - "read": { - "permissions": [ - "servicecatalog:GetAttributeGroup" - ] - }, - "update": { - "permissions": [ - "servicecatalog:GetAttributeGroup", - "servicecatalog:UpdateAttributeGroup", - "servicecatalog:ListTagsForResource", - "servicecatalog:TagResource", - "servicecatalog:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "pattern": "arn:aws[-a-z]*:servicecatalog:[a-z]{2}(-gov)?-[a-z]+-\\d:\\d{12}:/attribute-groups/[a-z0-9]+", - "type": "string" - }, - "Attributes": { - "type": "object" - }, - "Description": { - "description": "The description of the attribute group. ", - "maxLength": 1024, - "type": "string" - }, - "Id": { - "pattern": "[a-z0-9]{12}", - "type": "string" - }, - "Name": { - "description": "The name of the attribute group. ", - "maxLength": 256, - "minLength": 1, - "pattern": "\\w+", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/Tags" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "Name", - "Attributes" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-servicecatalog-appregistry.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ServiceCatalogAppRegistry::AttributeGroup" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "definitions": { + "Tags": { + "additionalProperties": false, + "maxProperties": 50, + "patternProperties": { + "^[a-zA-Z+-=._:/]+$": { + "maxLength": 256, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Schema for AWS::ServiceCatalogAppRegistry::AttributeGroup.", + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-appregistry-attributegroup.html", + "handlers": { + "create": { + "permissions": [ + "servicecatalog:CreateAttributeGroup", + "servicecatalog:TagResource" + ] + }, + "delete": { + "permissions": [ + "servicecatalog:DeleteAttributeGroup" + ] + }, + "list": { + "permissions": [ + "servicecatalog:ListAttributeGroups" + ] + }, + "read": { + "permissions": [ + "servicecatalog:GetAttributeGroup" + ] + }, + "update": { + "permissions": [ + "servicecatalog:GetAttributeGroup", + "servicecatalog:UpdateAttributeGroup", + "servicecatalog:ListTagsForResource", + "servicecatalog:TagResource", + "servicecatalog:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "pattern": "arn:aws[-a-z]*:servicecatalog:[a-z]{2}(-gov)?-[a-z]+-\\d:\\d{12}:/attribute-groups/[a-z0-9]+", + "type": "string" + }, + "Attributes": { + "type": "object" + }, + "Description": { + "description": "The description of the attribute group. ", + "maxLength": 1024, + "type": "string" + }, + "Id": { + "pattern": "[a-z0-9]{12}", + "type": "string" + }, + "Name": { + "description": "The name of the attribute group. ", + "maxLength": 256, + "minLength": 1, + "pattern": "\\w+", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Name", + "Attributes" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-servicecatalog-appregistry.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ServiceCatalogAppRegistry::AttributeGroup" +} diff --git a/src/schema/aws-servicecatalogappregistry-attributegroupassociation.json b/src/schema/aws-servicecatalogappregistry-attributegroupassociation.json index e3f670e3..3a97e778 100644 --- a/src/schema/aws-servicecatalogappregistry-attributegroupassociation.json +++ b/src/schema/aws-servicecatalogappregistry-attributegroupassociation.json @@ -1,85 +1,85 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Application", - "/properties/AttributeGroup" - ], - "description": "Resource Schema for AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation.", - "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-appregistry-attributegroupassociation.html", - "handlers": { - "create": { - "permissions": [ - "servicecatalog:AssociateAttributeGroup" - ] - }, - "delete": { - "permissions": [ - "servicecatalog:DisassociateAttributeGroup" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApplicationArn": { - "$ref": "resource-schema.json#/properties/ApplicationArn" - } - }, - "required": [ - "ApplicationArn" - ] - }, - "permissions": [ - "servicecatalog:ListAttributeGroupsForApplication" - ] - }, - "read": { - "permissions": [ - "servicecatalog:ListAttributeGroupsForApplication" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationArn", - "/properties/AttributeGroupArn" - ], - "properties": { - "Application": { - "description": "The name or the Id of the Application.", - "maxLength": 256, - "minLength": 1, - "pattern": "\\w+|[a-z0-9]{12}", - "type": "string" - }, - "ApplicationArn": { - "pattern": "arn:aws[-a-z]*:servicecatalog:[a-z]{2}(-gov)?-[a-z]+-\\d:\\d{12}:/applications/[a-z0-9]+", - "type": "string" - }, - "AttributeGroup": { - "description": "The name or the Id of the AttributeGroup.", - "maxLength": 256, - "minLength": 1, - "pattern": "\\w+|[a-z0-9]{12}", - "type": "string" - }, - "AttributeGroupArn": { - "pattern": "arn:aws[-a-z]*:servicecatalog:[a-z]{2}(-gov)?-[a-z]+-\\d:\\d{12}:/attribute-groups/[a-z0-9]+", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ApplicationArn", - "/properties/AttributeGroupArn" - ], - "required": [ - "Application", - "AttributeGroup" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-servicecatalog-appregistry", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Application", + "/properties/AttributeGroup" + ], + "description": "Resource Schema for AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation.", + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-appregistry-attributegroupassociation.html", + "handlers": { + "create": { + "permissions": [ + "servicecatalog:AssociateAttributeGroup" + ] + }, + "delete": { + "permissions": [ + "servicecatalog:DisassociateAttributeGroup" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationArn": { + "$ref": "resource-schema.json#/properties/ApplicationArn" + } + }, + "required": [ + "ApplicationArn" + ] + }, + "permissions": [ + "servicecatalog:ListAttributeGroupsForApplication" + ] + }, + "read": { + "permissions": [ + "servicecatalog:ListAttributeGroupsForApplication" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationArn", + "/properties/AttributeGroupArn" + ], + "properties": { + "Application": { + "description": "The name or the Id of the Application.", + "maxLength": 256, + "minLength": 1, + "pattern": "\\w+|[a-z0-9]{12}", + "type": "string" + }, + "ApplicationArn": { + "pattern": "arn:aws[-a-z]*:servicecatalog:[a-z]{2}(-gov)?-[a-z]+-\\d:\\d{12}:/applications/[a-z0-9]+", + "type": "string" + }, + "AttributeGroup": { + "description": "The name or the Id of the AttributeGroup.", + "maxLength": 256, + "minLength": 1, + "pattern": "\\w+|[a-z0-9]{12}", + "type": "string" + }, + "AttributeGroupArn": { + "pattern": "arn:aws[-a-z]*:servicecatalog:[a-z]{2}(-gov)?-[a-z]+-\\d:\\d{12}:/attribute-groups/[a-z0-9]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ApplicationArn", + "/properties/AttributeGroupArn" + ], + "required": [ + "Application", + "AttributeGroup" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-servicecatalog-appregistry", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation" +} diff --git a/src/schema/aws-servicecatalogappregistry-resourceassociation.json b/src/schema/aws-servicecatalogappregistry-resourceassociation.json index 5107025e..a7d4451d 100644 --- a/src/schema/aws-servicecatalogappregistry-resourceassociation.json +++ b/src/schema/aws-servicecatalogappregistry-resourceassociation.json @@ -1,94 +1,94 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Application", - "/properties/Resource", - "/properties/ResourceType" - ], - "description": "Resource Schema for AWS::ServiceCatalogAppRegistry::ResourceAssociation", - "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-appregistry-resourceassociation.html", - "handlers": { - "create": { - "permissions": [ - "servicecatalog:AssociateResource", - "cloudformation:DescribeStacks" - ] - }, - "delete": { - "permissions": [ - "servicecatalog:DisassociateResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApplicationArn": { - "$ref": "resource-schema.json#/properties/ApplicationArn" - } - }, - "required": [ - "ApplicationArn" - ] - }, - "permissions": [ - "servicecatalog:ListAssociatedResources" - ] - }, - "read": { - "permissions": [ - "servicecatalog:ListAssociatedResources" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationArn", - "/properties/ResourceArn", - "/properties/ResourceType" - ], - "properties": { - "Application": { - "description": "The name or the Id of the Application.", - "maxLength": 256, - "minLength": 1, - "pattern": "\\w+|[a-z0-9]{12}", - "type": "string" - }, - "ApplicationArn": { - "pattern": "arn:aws[-a-z]*:servicecatalog:[a-z]{2}(-gov)?-[a-z]+-\\d:\\d{12}:/applications/[a-z0-9]+", - "type": "string" - }, - "Resource": { - "description": "The name or the Id of the Resource.", - "pattern": "\\w+|arn:aws[-a-z]*:cloudformation:[a-z]{2}(-gov)?-[a-z]+-\\d:\\d{12}:stack/[a-zA-Z][-A-Za-z0-9]{0,127}/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}", - "type": "string" - }, - "ResourceArn": { - "pattern": "arn:aws[-a-z]*:cloudformation:[a-z]{2}(-gov)?-[a-z]+-\\d:\\d{12}:stack/[a-zA-Z][-A-Za-z0-9]{0,127}/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}", - "type": "string" - }, - "ResourceType": { - "description": "The type of the CFN Resource for now it's enum CFN_STACK.", - "enum": [ - "CFN_STACK" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ApplicationArn", - "/properties/ResourceArn" - ], - "required": [ - "Application", - "Resource", - "ResourceType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-servicecatalog-appregistry", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::ServiceCatalogAppRegistry::ResourceAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Application", + "/properties/Resource", + "/properties/ResourceType" + ], + "description": "Resource Schema for AWS::ServiceCatalogAppRegistry::ResourceAssociation", + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-appregistry-resourceassociation.html", + "handlers": { + "create": { + "permissions": [ + "servicecatalog:AssociateResource", + "cloudformation:DescribeStacks" + ] + }, + "delete": { + "permissions": [ + "servicecatalog:DisassociateResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationArn": { + "$ref": "resource-schema.json#/properties/ApplicationArn" + } + }, + "required": [ + "ApplicationArn" + ] + }, + "permissions": [ + "servicecatalog:ListAssociatedResources" + ] + }, + "read": { + "permissions": [ + "servicecatalog:ListAssociatedResources" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationArn", + "/properties/ResourceArn", + "/properties/ResourceType" + ], + "properties": { + "Application": { + "description": "The name or the Id of the Application.", + "maxLength": 256, + "minLength": 1, + "pattern": "\\w+|[a-z0-9]{12}", + "type": "string" + }, + "ApplicationArn": { + "pattern": "arn:aws[-a-z]*:servicecatalog:[a-z]{2}(-gov)?-[a-z]+-\\d:\\d{12}:/applications/[a-z0-9]+", + "type": "string" + }, + "Resource": { + "description": "The name or the Id of the Resource.", + "pattern": "\\w+|arn:aws[-a-z]*:cloudformation:[a-z]{2}(-gov)?-[a-z]+-\\d:\\d{12}:stack/[a-zA-Z][-A-Za-z0-9]{0,127}/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}", + "type": "string" + }, + "ResourceArn": { + "pattern": "arn:aws[-a-z]*:cloudformation:[a-z]{2}(-gov)?-[a-z]+-\\d:\\d{12}:stack/[a-zA-Z][-A-Za-z0-9]{0,127}/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}", + "type": "string" + }, + "ResourceType": { + "description": "The type of the CFN Resource for now it's enum CFN_STACK.", + "enum": [ + "CFN_STACK" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ApplicationArn", + "/properties/ResourceArn" + ], + "required": [ + "Application", + "Resource", + "ResourceType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-servicecatalog-appregistry", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::ServiceCatalogAppRegistry::ResourceAssociation" +} diff --git a/src/schema/aws-servicediscovery-httpnamespace.json b/src/schema/aws-servicediscovery-httpnamespace.json index b20fe688..d70b29ac 100644 --- a/src/schema/aws-servicediscovery-httpnamespace.json +++ b/src/schema/aws-servicediscovery-httpnamespace.json @@ -1,57 +1,57 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ServiceDiscovery::HttpNamespace", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "required": [ - "Name" - ], - "typeName": "AWS::ServiceDiscovery::HttpNamespace" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ServiceDiscovery::HttpNamespace", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Name" + ], + "typeName": "AWS::ServiceDiscovery::HttpNamespace" +} diff --git a/src/schema/aws-servicediscovery-instance.json b/src/schema/aws-servicediscovery-instance.json index 0934803a..2b0154e2 100644 --- a/src/schema/aws-servicediscovery-instance.json +++ b/src/schema/aws-servicediscovery-instance.json @@ -1,30 +1,30 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceId", - "/properties/ServiceId" - ], - "description": "Resource Type definition for AWS::ServiceDiscovery::Instance", - "primaryIdentifier": [ - "/properties/InstanceId" - ], - "properties": { - "InstanceAttributes": { - "type": "object" - }, - "InstanceId": { - "type": "string" - }, - "ServiceId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/InstanceId" - ], - "required": [ - "InstanceAttributes", - "ServiceId" - ], - "typeName": "AWS::ServiceDiscovery::Instance" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceId", + "/properties/ServiceId" + ], + "description": "Resource Type definition for AWS::ServiceDiscovery::Instance", + "primaryIdentifier": [ + "/properties/InstanceId" + ], + "properties": { + "InstanceAttributes": { + "type": "object" + }, + "InstanceId": { + "type": "string" + }, + "ServiceId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/InstanceId" + ], + "required": [ + "InstanceAttributes", + "ServiceId" + ], + "typeName": "AWS::ServiceDiscovery::Instance" +} diff --git a/src/schema/aws-servicediscovery-privatednsnamespace.json b/src/schema/aws-servicediscovery-privatednsnamespace.json index 39c72289..b38439c9 100644 --- a/src/schema/aws-servicediscovery-privatednsnamespace.json +++ b/src/schema/aws-servicediscovery-privatednsnamespace.json @@ -1,96 +1,96 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Vpc", - "/properties/Name" - ], - "definitions": { - "PrivateDnsPropertiesMutable": { - "additionalProperties": false, - "properties": { - "SOA": { - "$ref": "#/definitions/SOA" - } - }, - "type": "object" - }, - "Properties": { - "additionalProperties": false, - "properties": { - "DnsProperties": { - "$ref": "#/definitions/PrivateDnsPropertiesMutable" - } - }, - "type": "object" - }, - "SOA": { - "additionalProperties": false, - "properties": { - "TTL": { - "type": "number" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ServiceDiscovery::PrivateDnsNamespace", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "HostedZoneId": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Properties": { - "$ref": "#/definitions/Properties" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Vpc": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/HostedZoneId", - "/properties/Arn" - ], - "required": [ - "Vpc", - "Name" - ], - "typeName": "AWS::ServiceDiscovery::PrivateDnsNamespace" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Vpc", + "/properties/Name" + ], + "definitions": { + "PrivateDnsPropertiesMutable": { + "additionalProperties": false, + "properties": { + "SOA": { + "$ref": "#/definitions/SOA" + } + }, + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "DnsProperties": { + "$ref": "#/definitions/PrivateDnsPropertiesMutable" + } + }, + "type": "object" + }, + "SOA": { + "additionalProperties": false, + "properties": { + "TTL": { + "type": "number" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ServiceDiscovery::PrivateDnsNamespace", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "HostedZoneId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Properties": { + "$ref": "#/definitions/Properties" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Vpc": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/HostedZoneId", + "/properties/Arn" + ], + "required": [ + "Vpc", + "Name" + ], + "typeName": "AWS::ServiceDiscovery::PrivateDnsNamespace" +} diff --git a/src/schema/aws-servicediscovery-publicdnsnamespace.json b/src/schema/aws-servicediscovery-publicdnsnamespace.json index dbc98fab..b47135e3 100644 --- a/src/schema/aws-servicediscovery-publicdnsnamespace.json +++ b/src/schema/aws-servicediscovery-publicdnsnamespace.json @@ -1,91 +1,91 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Properties": { - "additionalProperties": false, - "properties": { - "DnsProperties": { - "$ref": "#/definitions/PublicDnsPropertiesMutable" - } - }, - "type": "object" - }, - "PublicDnsPropertiesMutable": { - "additionalProperties": false, - "properties": { - "SOA": { - "$ref": "#/definitions/SOA" - } - }, - "type": "object" - }, - "SOA": { - "additionalProperties": false, - "properties": { - "TTL": { - "type": "number" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ServiceDiscovery::PublicDnsNamespace", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "HostedZoneId": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Properties": { - "$ref": "#/definitions/Properties" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/HostedZoneId", - "/properties/Arn" - ], - "required": [ - "Name" - ], - "typeName": "AWS::ServiceDiscovery::PublicDnsNamespace" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Properties": { + "additionalProperties": false, + "properties": { + "DnsProperties": { + "$ref": "#/definitions/PublicDnsPropertiesMutable" + } + }, + "type": "object" + }, + "PublicDnsPropertiesMutable": { + "additionalProperties": false, + "properties": { + "SOA": { + "$ref": "#/definitions/SOA" + } + }, + "type": "object" + }, + "SOA": { + "additionalProperties": false, + "properties": { + "TTL": { + "type": "number" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ServiceDiscovery::PublicDnsNamespace", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "HostedZoneId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Properties": { + "$ref": "#/definitions/Properties" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/HostedZoneId", + "/properties/Arn" + ], + "required": [ + "Name" + ], + "typeName": "AWS::ServiceDiscovery::PublicDnsNamespace" +} diff --git a/src/schema/aws-servicediscovery-service.json b/src/schema/aws-servicediscovery-service.json index ae198b10..b05364ca 100644 --- a/src/schema/aws-servicediscovery-service.json +++ b/src/schema/aws-servicediscovery-service.json @@ -1,137 +1,140 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/HealthCheckCustomConfig", - "/properties/Name", - "/properties/Type", - "/properties/NamespaceId" - ], - "definitions": { - "DnsConfig": { - "additionalProperties": false, - "properties": { - "DnsRecords": { - "items": { - "$ref": "#/definitions/DnsRecord" - }, - "type": "array", - "uniqueItems": false - }, - "NamespaceId": { - "type": "string" - }, - "RoutingPolicy": { - "type": "string" - } - }, - "required": [ - "DnsRecords" - ], - "type": "object" - }, - "DnsRecord": { - "additionalProperties": false, - "properties": { - "TTL": { - "type": "number" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type", - "TTL" - ], - "type": "object" - }, - "HealthCheckConfig": { - "additionalProperties": false, - "properties": { - "FailureThreshold": { - "type": "number" - }, - "ResourcePath": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "HealthCheckCustomConfig": { - "additionalProperties": false, - "properties": { - "FailureThreshold": { - "type": "number" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::ServiceDiscovery::Service", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "DnsConfig": { - "$ref": "#/definitions/DnsConfig" - }, - "HealthCheckConfig": { - "$ref": "#/definitions/HealthCheckConfig" - }, - "HealthCheckCustomConfig": { - "$ref": "#/definitions/HealthCheckCustomConfig" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "NamespaceId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Type": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn" - ], - "typeName": "AWS::ServiceDiscovery::Service" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/HealthCheckCustomConfig", + "/properties/Name", + "/properties/Type", + "/properties/NamespaceId" + ], + "definitions": { + "DnsConfig": { + "additionalProperties": false, + "properties": { + "DnsRecords": { + "items": { + "$ref": "#/definitions/DnsRecord" + }, + "type": "array", + "uniqueItems": false + }, + "NamespaceId": { + "type": "string" + }, + "RoutingPolicy": { + "type": "string" + } + }, + "required": [ + "DnsRecords" + ], + "type": "object" + }, + "DnsRecord": { + "additionalProperties": false, + "properties": { + "TTL": { + "type": "number" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type", + "TTL" + ], + "type": "object" + }, + "HealthCheckConfig": { + "additionalProperties": false, + "properties": { + "FailureThreshold": { + "type": "number" + }, + "ResourcePath": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "HealthCheckCustomConfig": { + "additionalProperties": false, + "properties": { + "FailureThreshold": { + "type": "number" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::ServiceDiscovery::Service", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Arn": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DnsConfig": { + "$ref": "#/definitions/DnsConfig" + }, + "HealthCheckConfig": { + "$ref": "#/definitions/HealthCheckConfig" + }, + "HealthCheckCustomConfig": { + "$ref": "#/definitions/HealthCheckCustomConfig" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "NamespaceId": { + "type": "string" + }, + "ServiceAttributes": { + "type": "object" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "typeName": "AWS::ServiceDiscovery::Service" +} diff --git a/src/schema/aws-ses-configurationset.json b/src/schema/aws-ses-configurationset.json index bfb18b77..0d1b9ef1 100644 --- a/src/schema/aws-ses-configurationset.json +++ b/src/schema/aws-ses-configurationset.json @@ -1,190 +1,195 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "DashboardOptions": { - "additionalProperties": false, - "description": "Preferences regarding the Dashboard feature.", - "properties": { - "EngagementMetrics": { - "description": "Whether emails sent with this configuration set have engagement tracking enabled.", - "pattern": "ENABLED|DISABLED", - "type": "string" - } - }, - "required": [ - "EngagementMetrics" - ], - "type": "object" - }, - "DeliveryOptions": { - "additionalProperties": false, - "description": "An object that defines the dedicated IP pool that is used to send emails that you send using the configuration set.", - "properties": { - "MaxDeliverySeconds": { - "description": "Specifies the maximum time until which SES will retry sending emails", - "maximum": 50400, - "minimum": 300, - "type": "number" - }, - "SendingPoolName": { - "description": "The name of the dedicated IP pool to associate with the configuration set.", - "type": "string" - }, - "TlsPolicy": { - "description": "Specifies whether messages that use the configuration set are required to use Transport Layer Security (TLS). If the value is Require , messages are only delivered if a TLS connection can be established. If the value is Optional , messages can be delivered in plain text if a TLS connection can't be established.", - "pattern": "REQUIRE|OPTIONAL", - "type": "string" - } - }, - "type": "object" - }, - "GuardianOptions": { - "additionalProperties": false, - "description": "Preferences regarding the Guardian feature.", - "properties": { - "OptimizedSharedDelivery": { - "description": "Whether emails sent with this configuration set have optimized delivery algorithm enabled.", - "pattern": "ENABLED|DISABLED", - "type": "string" - } - }, - "required": [ - "OptimizedSharedDelivery" - ], - "type": "object" - }, - "ReputationOptions": { - "additionalProperties": false, - "description": "An object that defines whether or not Amazon SES collects reputation metrics for the emails that you send that use the configuration set.", - "properties": { - "ReputationMetricsEnabled": { - "description": "If true , tracking of reputation metrics is enabled for the configuration set. If false , tracking of reputation metrics is disabled for the configuration set.", - "pattern": "true|false", - "type": "boolean" - } - }, - "type": "object" - }, - "SendingOptions": { - "additionalProperties": false, - "description": "An object that defines whether or not Amazon SES can send email that you send using the configuration set.", - "properties": { - "SendingEnabled": { - "pattern": "true|false", - "type": "boolean" - } - }, - "type": "object" - }, - "SuppressionOptions": { - "additionalProperties": false, - "description": "An object that contains information about the suppression list preferences for your account.", - "properties": { - "SuppressedReasons": { - "description": "A list that contains the reasons that email addresses are automatically added to the suppression list for your account.", - "insertionOrder": false, - "items": { - "description": "The reason that the address was added to the suppression list for your account", - "pattern": "BOUNCE|COMPLAINT", - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "TrackingOptions": { - "additionalProperties": false, - "description": "An object that defines the open and click tracking options for emails that you send using the configuration set.", - "properties": { - "CustomRedirectDomain": { - "description": "The domain to use for tracking open and click events.", - "type": "string" - } - }, - "type": "object" - }, - "VdmOptions": { - "additionalProperties": false, - "description": "An object that contains Virtual Deliverability Manager (VDM) settings for this configuration set.", - "properties": { - "DashboardOptions": { - "$ref": "#/definitions/DashboardOptions" - }, - "GuardianOptions": { - "$ref": "#/definitions/GuardianOptions" - } - }, - "type": "object" - } - }, - "description": "Resource schema for AWS::SES::ConfigurationSet.", - "handlers": { - "create": { - "permissions": [ - "ses:CreateConfigurationSet" - ] - }, - "delete": { - "permissions": [ - "ses:DeleteConfigurationSet" - ] - }, - "list": { - "permissions": [ - "ses:ListConfigurationSets" - ] - }, - "read": { - "permissions": [ - "ses:GetConfigurationSet", - "ses:DescribeConfigurationSet" - ] - }, - "update": { - "permissions": [ - "ses:PutConfigurationSetTrackingOptions", - "ses:PutConfigurationSetDeliveryOptions", - "ses:PutConfigurationSetReputationOptions", - "ses:PutConfigurationSetSendingOptions", - "ses:PutConfigurationSetSuppressionOptions", - "ses:PutConfigurationSetVdmOptions" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "DeliveryOptions": { - "$ref": "#/definitions/DeliveryOptions" - }, - "Name": { - "description": "The name of the configuration set.", - "pattern": "^[a-zA-Z0-9_-]{1,64}$", - "type": "string" - }, - "ReputationOptions": { - "$ref": "#/definitions/ReputationOptions" - }, - "SendingOptions": { - "$ref": "#/definitions/SendingOptions" - }, - "SuppressionOptions": { - "$ref": "#/definitions/SuppressionOptions" - }, - "TrackingOptions": { - "$ref": "#/definitions/TrackingOptions" - }, - "VdmOptions": { - "$ref": "#/definitions/VdmOptions" - } - }, - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses.git", - "taggable": false, - "typeName": "AWS::SES::ConfigurationSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "DashboardOptions": { + "additionalProperties": false, + "description": "Preferences regarding the Dashboard feature.", + "properties": { + "EngagementMetrics": { + "description": "Whether emails sent with this configuration set have engagement tracking enabled.", + "pattern": "ENABLED|DISABLED", + "type": "string" + } + }, + "required": [ + "EngagementMetrics" + ], + "type": "object" + }, + "DeliveryOptions": { + "additionalProperties": false, + "description": "An object that defines the dedicated IP pool that is used to send emails that you send using the configuration set.", + "properties": { + "MaxDeliverySeconds": { + "description": "Specifies the maximum time until which SES will retry sending emails", + "maximum": 50400, + "minimum": 300, + "type": "number" + }, + "SendingPoolName": { + "description": "The name of the dedicated IP pool to associate with the configuration set.", + "type": "string" + }, + "TlsPolicy": { + "description": "Specifies whether messages that use the configuration set are required to use Transport Layer Security (TLS). If the value is Require , messages are only delivered if a TLS connection can be established. If the value is Optional , messages can be delivered in plain text if a TLS connection can't be established.", + "pattern": "REQUIRE|OPTIONAL", + "type": "string" + } + }, + "type": "object" + }, + "GuardianOptions": { + "additionalProperties": false, + "description": "Preferences regarding the Guardian feature.", + "properties": { + "OptimizedSharedDelivery": { + "description": "Whether emails sent with this configuration set have optimized delivery algorithm enabled.", + "pattern": "ENABLED|DISABLED", + "type": "string" + } + }, + "required": [ + "OptimizedSharedDelivery" + ], + "type": "object" + }, + "ReputationOptions": { + "additionalProperties": false, + "description": "An object that defines whether or not Amazon SES collects reputation metrics for the emails that you send that use the configuration set.", + "properties": { + "ReputationMetricsEnabled": { + "description": "If true , tracking of reputation metrics is enabled for the configuration set. If false , tracking of reputation metrics is disabled for the configuration set.", + "pattern": "true|false", + "type": "boolean" + } + }, + "type": "object" + }, + "SendingOptions": { + "additionalProperties": false, + "description": "An object that defines whether or not Amazon SES can send email that you send using the configuration set.", + "properties": { + "SendingEnabled": { + "pattern": "true|false", + "type": "boolean" + } + }, + "type": "object" + }, + "SuppressionOptions": { + "additionalProperties": false, + "description": "An object that contains information about the suppression list preferences for your account.", + "properties": { + "SuppressedReasons": { + "description": "A list that contains the reasons that email addresses are automatically added to the suppression list for your account.", + "insertionOrder": false, + "items": { + "description": "The reason that the address was added to the suppression list for your account", + "pattern": "BOUNCE|COMPLAINT", + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "TrackingOptions": { + "additionalProperties": false, + "description": "An object that defines the open and click tracking options for emails that you send using the configuration set.", + "properties": { + "CustomRedirectDomain": { + "description": "The domain to use for tracking open and click events.", + "type": "string" + }, + "HttpsPolicy": { + "description": "The https policy to use for tracking open and click events.", + "pattern": "REQUIRE|REQUIRE_OPEN_ONLY|OPTIONAL", + "type": "string" + } + }, + "type": "object" + }, + "VdmOptions": { + "additionalProperties": false, + "description": "An object that contains Virtual Deliverability Manager (VDM) settings for this configuration set.", + "properties": { + "DashboardOptions": { + "$ref": "#/definitions/DashboardOptions" + }, + "GuardianOptions": { + "$ref": "#/definitions/GuardianOptions" + } + }, + "type": "object" + } + }, + "description": "Resource schema for AWS::SES::ConfigurationSet.", + "handlers": { + "create": { + "permissions": [ + "ses:CreateConfigurationSet" + ] + }, + "delete": { + "permissions": [ + "ses:DeleteConfigurationSet" + ] + }, + "list": { + "permissions": [ + "ses:ListConfigurationSets" + ] + }, + "read": { + "permissions": [ + "ses:GetConfigurationSet", + "ses:DescribeConfigurationSet" + ] + }, + "update": { + "permissions": [ + "ses:PutConfigurationSetTrackingOptions", + "ses:PutConfigurationSetDeliveryOptions", + "ses:PutConfigurationSetReputationOptions", + "ses:PutConfigurationSetSendingOptions", + "ses:PutConfigurationSetSuppressionOptions", + "ses:PutConfigurationSetVdmOptions" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "DeliveryOptions": { + "$ref": "#/definitions/DeliveryOptions" + }, + "Name": { + "description": "The name of the configuration set.", + "pattern": "^[a-zA-Z0-9_-]{1,64}$", + "type": "string" + }, + "ReputationOptions": { + "$ref": "#/definitions/ReputationOptions" + }, + "SendingOptions": { + "$ref": "#/definitions/SendingOptions" + }, + "SuppressionOptions": { + "$ref": "#/definitions/SuppressionOptions" + }, + "TrackingOptions": { + "$ref": "#/definitions/TrackingOptions" + }, + "VdmOptions": { + "$ref": "#/definitions/VdmOptions" + } + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses.git", + "taggable": false, + "typeName": "AWS::SES::ConfigurationSet" +} diff --git a/src/schema/aws-ses-configurationseteventdestination.json b/src/schema/aws-ses-configurationseteventdestination.json index f2e2a30d..2c1bb660 100644 --- a/src/schema/aws-ses-configurationseteventdestination.json +++ b/src/schema/aws-ses-configurationseteventdestination.json @@ -1,201 +1,201 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConfigurationSetName" - ], - "definitions": { - "CloudWatchDestination": { - "additionalProperties": false, - "description": "An object that contains the names, default values, and sources of the dimensions associated with an Amazon CloudWatch event destination.", - "properties": { - "DimensionConfigurations": { - "description": "A list of dimensions upon which to categorize your emails when you publish email sending events to Amazon CloudWatch.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DimensionConfiguration" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "DimensionConfiguration": { - "additionalProperties": false, - "description": "A list of dimensions upon which to categorize your emails when you publish email sending events to Amazon CloudWatch.", - "properties": { - "DefaultDimensionValue": { - "description": "The default value of the dimension that is published to Amazon CloudWatch if you do not provide the value of the dimension when you send an email.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]{1,256}$", - "type": "string" - }, - "DimensionName": { - "description": "The name of an Amazon CloudWatch dimension associated with an email sending metric.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_:-]{1,256}$", - "type": "string" - }, - "DimensionValueSource": { - "description": "The place where Amazon SES finds the value of a dimension to publish to Amazon CloudWatch. To use the message tags that you specify using an X-SES-MESSAGE-TAGS header or a parameter to the SendEmail/SendRawEmail API, specify messageTag. To use your own email headers, specify emailHeader. To put a custom tag on any link included in your email, specify linkTag.", - "type": "string" - } - }, - "required": [ - "DimensionValueSource", - "DefaultDimensionValue", - "DimensionName" - ], - "type": "object" - }, - "EventBridgeDestination": { - "additionalProperties": false, - "description": "An object that contains Event bus ARN associated with the event bridge destination.", - "properties": { - "EventBusArn": { - "maxLength": 1024, - "minLength": 36, - "pattern": "^arn:aws[a-z0-9-]*:events:[a-z0-9-]+:\\d{12}:event-bus/[^:]+$", - "type": "string" - } - }, - "required": [ - "EventBusArn" - ], - "type": "object" - }, - "EventDestination": { - "additionalProperties": false, - "properties": { - "CloudWatchDestination": { - "$ref": "#/definitions/CloudWatchDestination", - "description": "An object that contains the names, default values, and sources of the dimensions associated with an Amazon CloudWatch event destination." - }, - "Enabled": { - "description": "Sets whether Amazon SES publishes events to this destination when you send an email with the associated configuration set. Set to true to enable publishing to this destination; set to false to prevent publishing to this destination. The default value is false. ", - "type": "boolean" - }, - "EventBridgeDestination": { - "$ref": "#/definitions/EventBridgeDestination", - "description": "An object that contains Event bus ARN associated with the event bridge destination." - }, - "KinesisFirehoseDestination": { - "$ref": "#/definitions/KinesisFirehoseDestination", - "description": "An object that contains the delivery stream ARN and the IAM role ARN associated with an Amazon Kinesis Firehose event destination." - }, - "MatchingEventTypes": { - "description": "The type of email sending events, send, reject, bounce, complaint, delivery, open, click, renderingFailure, deliveryDelay, and subscription.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Name": { - "description": "The name of the event destination set.", - "pattern": "^[a-zA-Z0-9_-]{0,64}$", - "type": "string" - }, - "SnsDestination": { - "$ref": "#/definitions/SnsDestination", - "description": "An object that contains SNS topic ARN associated event destination." - } - }, - "required": [ - "MatchingEventTypes" - ], - "type": "object" - }, - "KinesisFirehoseDestination": { - "additionalProperties": false, - "description": "An object that contains the delivery stream ARN and the IAM role ARN associated with an Amazon Kinesis Firehose event destination.", - "properties": { - "DeliveryStreamARN": { - "description": "The ARN of the Amazon Kinesis Firehose stream that email sending events should be published to.", - "type": "string" - }, - "IAMRoleARN": { - "description": "The ARN of the IAM role under which Amazon SES publishes email sending events to the Amazon Kinesis Firehose stream.", - "type": "string" - } - }, - "required": [ - "IAMRoleARN", - "DeliveryStreamARN" - ], - "type": "object" - }, - "SnsDestination": { - "additionalProperties": false, - "description": "An object that contains SNS topic ARN associated event destination.", - "properties": { - "TopicARN": { - "maxLength": 1024, - "minLength": 36, - "pattern": "^arn:aws[a-z0-9-]*:sns:[a-z0-9-]+:\\d{12}:[^:]+$", - "type": "string" - } - }, - "required": [ - "TopicARN" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SES::ConfigurationSetEventDestination", - "handlers": { - "create": { - "permissions": [ - "ses:CreateConfigurationSetEventDestination", - "ses:GetConfigurationSetEventDestinations", - "ses:DescribeConfigurationSet" - ] - }, - "delete": { - "permissions": [ - "ses:DeleteConfigurationSetEventDestination" - ] - }, - "read": { - "permissions": [ - "ses:GetConfigurationSetEventDestinations", - "ses:DescribeConfigurationSet" - ] - }, - "update": { - "permissions": [ - "ses:UpdateConfigurationSetEventDestination", - "ses:GetConfigurationSetEventDestinations" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ConfigurationSetName": { - "description": "The name of the configuration set that contains the event destination.", - "type": "string" - }, - "EventDestination": { - "$ref": "#/definitions/EventDestination", - "description": "The event destination object." - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ConfigurationSetName", - "EventDestination" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses.git", - "taggable": false, - "typeName": "AWS::SES::ConfigurationSetEventDestination" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConfigurationSetName" + ], + "definitions": { + "CloudWatchDestination": { + "additionalProperties": false, + "description": "An object that contains the names, default values, and sources of the dimensions associated with an Amazon CloudWatch event destination.", + "properties": { + "DimensionConfigurations": { + "description": "A list of dimensions upon which to categorize your emails when you publish email sending events to Amazon CloudWatch.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DimensionConfiguration" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DimensionConfiguration": { + "additionalProperties": false, + "description": "A list of dimensions upon which to categorize your emails when you publish email sending events to Amazon CloudWatch.", + "properties": { + "DefaultDimensionValue": { + "description": "The default value of the dimension that is published to Amazon CloudWatch if you do not provide the value of the dimension when you send an email.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]{1,256}$", + "type": "string" + }, + "DimensionName": { + "description": "The name of an Amazon CloudWatch dimension associated with an email sending metric.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_:-]{1,256}$", + "type": "string" + }, + "DimensionValueSource": { + "description": "The place where Amazon SES finds the value of a dimension to publish to Amazon CloudWatch. To use the message tags that you specify using an X-SES-MESSAGE-TAGS header or a parameter to the SendEmail/SendRawEmail API, specify messageTag. To use your own email headers, specify emailHeader. To put a custom tag on any link included in your email, specify linkTag.", + "type": "string" + } + }, + "required": [ + "DimensionValueSource", + "DefaultDimensionValue", + "DimensionName" + ], + "type": "object" + }, + "EventBridgeDestination": { + "additionalProperties": false, + "description": "An object that contains Event bus ARN associated with the event bridge destination.", + "properties": { + "EventBusArn": { + "maxLength": 1024, + "minLength": 36, + "pattern": "^arn:aws[a-z0-9-]*:events:[a-z0-9-]+:\\d{12}:event-bus/[^:]+$", + "type": "string" + } + }, + "required": [ + "EventBusArn" + ], + "type": "object" + }, + "EventDestination": { + "additionalProperties": false, + "properties": { + "CloudWatchDestination": { + "$ref": "#/definitions/CloudWatchDestination", + "description": "An object that contains the names, default values, and sources of the dimensions associated with an Amazon CloudWatch event destination." + }, + "Enabled": { + "description": "Sets whether Amazon SES publishes events to this destination when you send an email with the associated configuration set. Set to true to enable publishing to this destination; set to false to prevent publishing to this destination. The default value is false. ", + "type": "boolean" + }, + "EventBridgeDestination": { + "$ref": "#/definitions/EventBridgeDestination", + "description": "An object that contains Event bus ARN associated with the event bridge destination." + }, + "KinesisFirehoseDestination": { + "$ref": "#/definitions/KinesisFirehoseDestination", + "description": "An object that contains the delivery stream ARN and the IAM role ARN associated with an Amazon Kinesis Firehose event destination." + }, + "MatchingEventTypes": { + "description": "The type of email sending events, send, reject, bounce, complaint, delivery, open, click, renderingFailure, deliveryDelay, and subscription.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Name": { + "description": "The name of the event destination set.", + "pattern": "^[a-zA-Z0-9_-]{0,64}$", + "type": "string" + }, + "SnsDestination": { + "$ref": "#/definitions/SnsDestination", + "description": "An object that contains SNS topic ARN associated event destination." + } + }, + "required": [ + "MatchingEventTypes" + ], + "type": "object" + }, + "KinesisFirehoseDestination": { + "additionalProperties": false, + "description": "An object that contains the delivery stream ARN and the IAM role ARN associated with an Amazon Kinesis Firehose event destination.", + "properties": { + "DeliveryStreamARN": { + "description": "The ARN of the Amazon Kinesis Firehose stream that email sending events should be published to.", + "type": "string" + }, + "IAMRoleARN": { + "description": "The ARN of the IAM role under which Amazon SES publishes email sending events to the Amazon Kinesis Firehose stream.", + "type": "string" + } + }, + "required": [ + "IAMRoleARN", + "DeliveryStreamARN" + ], + "type": "object" + }, + "SnsDestination": { + "additionalProperties": false, + "description": "An object that contains SNS topic ARN associated event destination.", + "properties": { + "TopicARN": { + "maxLength": 1024, + "minLength": 36, + "pattern": "^arn:aws[a-z0-9-]*:sns:[a-z0-9-]+:\\d{12}:[^:]+$", + "type": "string" + } + }, + "required": [ + "TopicARN" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SES::ConfigurationSetEventDestination", + "handlers": { + "create": { + "permissions": [ + "ses:CreateConfigurationSetEventDestination", + "ses:GetConfigurationSetEventDestinations", + "ses:DescribeConfigurationSet" + ] + }, + "delete": { + "permissions": [ + "ses:DeleteConfigurationSetEventDestination" + ] + }, + "read": { + "permissions": [ + "ses:GetConfigurationSetEventDestinations", + "ses:DescribeConfigurationSet" + ] + }, + "update": { + "permissions": [ + "ses:UpdateConfigurationSetEventDestination", + "ses:GetConfigurationSetEventDestinations" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ConfigurationSetName": { + "description": "The name of the configuration set that contains the event destination.", + "type": "string" + }, + "EventDestination": { + "$ref": "#/definitions/EventDestination", + "description": "The event destination object." + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ConfigurationSetName", + "EventDestination" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses.git", + "taggable": false, + "typeName": "AWS::SES::ConfigurationSetEventDestination" +} diff --git a/src/schema/aws-ses-contactlist.json b/src/schema/aws-ses-contactlist.json index d66c1d4f..2bddcb9b 100644 --- a/src/schema/aws-ses-contactlist.json +++ b/src/schema/aws-ses-contactlist.json @@ -1,126 +1,126 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ContactListName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Topic": { - "additionalProperties": false, - "properties": { - "DefaultSubscriptionStatus": { - "type": "string" - }, - "Description": { - "description": "The description of the topic.", - "maxLength": 500, - "minLength": 0, - "type": "string" - }, - "DisplayName": { - "description": "The display name of the topic.", - "maxLength": 128, - "minLength": 0, - "type": "string" - }, - "TopicName": { - "description": "The name of the topic.", - "pattern": "^[a-zA-Z0-9_-]{1,64}$", - "type": "string" - } - }, - "required": [ - "TopicName", - "DisplayName", - "DefaultSubscriptionStatus" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::SES::ContactList.", - "handlers": { - "create": { - "permissions": [ - "ses:CreateContactList" - ] - }, - "delete": { - "permissions": [ - "ses:DeleteContactList" - ] - }, - "list": { - "permissions": [ - "ses:ListContactLists" - ] - }, - "read": { - "permissions": [ - "ses:GetContactList" - ] - }, - "update": { - "permissions": [ - "ses:UpdateContactList", - "ses:UntagResource", - "ses:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ContactListName" - ], - "properties": { - "ContactListName": { - "description": "The name of the contact list.", - "pattern": "^[a-zA-Z0-9_-]{1,64}$", - "type": "string" - }, - "Description": { - "description": "The description of the contact list.", - "maxLength": 500, - "type": "string" - }, - "Tags": { - "description": "The tags (keys and values) associated with the contact list.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - }, - "Topics": { - "description": "The topics associated with the contact list.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Topic" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - } - }, - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses.git", - "typeName": "AWS::SES::ContactList" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ContactListName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Topic": { + "additionalProperties": false, + "properties": { + "DefaultSubscriptionStatus": { + "type": "string" + }, + "Description": { + "description": "The description of the topic.", + "maxLength": 500, + "minLength": 0, + "type": "string" + }, + "DisplayName": { + "description": "The display name of the topic.", + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "TopicName": { + "description": "The name of the topic.", + "pattern": "^[a-zA-Z0-9_-]{1,64}$", + "type": "string" + } + }, + "required": [ + "TopicName", + "DisplayName", + "DefaultSubscriptionStatus" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::SES::ContactList.", + "handlers": { + "create": { + "permissions": [ + "ses:CreateContactList" + ] + }, + "delete": { + "permissions": [ + "ses:DeleteContactList" + ] + }, + "list": { + "permissions": [ + "ses:ListContactLists" + ] + }, + "read": { + "permissions": [ + "ses:GetContactList" + ] + }, + "update": { + "permissions": [ + "ses:UpdateContactList", + "ses:UntagResource", + "ses:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ContactListName" + ], + "properties": { + "ContactListName": { + "description": "The name of the contact list.", + "pattern": "^[a-zA-Z0-9_-]{1,64}$", + "type": "string" + }, + "Description": { + "description": "The description of the contact list.", + "maxLength": 500, + "type": "string" + }, + "Tags": { + "description": "The tags (keys and values) associated with the contact list.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + }, + "Topics": { + "description": "The topics associated with the contact list.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Topic" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + } + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses.git", + "typeName": "AWS::SES::ContactList" +} diff --git a/src/schema/aws-ses-dedicatedippool.json b/src/schema/aws-ses-dedicatedippool.json index 26479658..2d8559ad 100644 --- a/src/schema/aws-ses-dedicatedippool.json +++ b/src/schema/aws-ses-dedicatedippool.json @@ -1,58 +1,58 @@ -{ - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/ScalingMode" - ], - "createOnlyProperties": [ - "/properties/PoolName" - ], - "description": "Resource Type definition for AWS::SES::DedicatedIpPool", - "handlers": { - "create": { - "permissions": [ - "ses:CreateDedicatedIpPool", - "ses:GetDedicatedIpPool", - "ses:GetDedicatedIps" - ] - }, - "delete": { - "permissions": [ - "ses:DeleteDedicatedIpPool" - ] - }, - "list": { - "permissions": [ - "ses:ListDedicatedIpPools" - ] - }, - "read": { - "permissions": [ - "ses:GetDedicatedIpPool", - "ses:GetDedicatedIps" - ] - }, - "update": { - "permissions": [ - "ses:PutDedicatedIpPoolScalingAttributes", - "ses:GetDedicatedIpPool" - ] - } - }, - "primaryIdentifier": [ - "/properties/PoolName" - ], - "properties": { - "PoolName": { - "description": "The name of the dedicated IP pool.", - "pattern": "^[a-z0-9_-]{0,64}$", - "type": "string" - }, - "ScalingMode": { - "description": "Specifies whether the dedicated IP pool is managed or not. The default value is STANDARD.", - "pattern": "^(STANDARD|MANAGED)$", - "type": "string" - } - }, - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses.git", - "typeName": "AWS::SES::DedicatedIpPool" -} +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/ScalingMode" + ], + "createOnlyProperties": [ + "/properties/PoolName" + ], + "description": "Resource Type definition for AWS::SES::DedicatedIpPool", + "handlers": { + "create": { + "permissions": [ + "ses:CreateDedicatedIpPool", + "ses:GetDedicatedIpPool", + "ses:GetDedicatedIps" + ] + }, + "delete": { + "permissions": [ + "ses:DeleteDedicatedIpPool" + ] + }, + "list": { + "permissions": [ + "ses:ListDedicatedIpPools" + ] + }, + "read": { + "permissions": [ + "ses:GetDedicatedIpPool", + "ses:GetDedicatedIps" + ] + }, + "update": { + "permissions": [ + "ses:PutDedicatedIpPoolScalingAttributes", + "ses:GetDedicatedIpPool" + ] + } + }, + "primaryIdentifier": [ + "/properties/PoolName" + ], + "properties": { + "PoolName": { + "description": "The name of the dedicated IP pool.", + "pattern": "^[a-z0-9_-]{0,64}$", + "type": "string" + }, + "ScalingMode": { + "description": "Specifies whether the dedicated IP pool is managed or not. The default value is STANDARD.", + "pattern": "^(STANDARD|MANAGED)$", + "type": "string" + } + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses.git", + "typeName": "AWS::SES::DedicatedIpPool" +} diff --git a/src/schema/aws-ses-emailidentity.json b/src/schema/aws-ses-emailidentity.json index 20477c7e..64efc952 100644 --- a/src/schema/aws-ses-emailidentity.json +++ b/src/schema/aws-ses-emailidentity.json @@ -1,173 +1,173 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/EmailIdentity" - ], - "definitions": { - "ConfigurationSetAttributes": { - "additionalProperties": false, - "description": "Used to associate a configuration set with an email identity.", - "properties": { - "ConfigurationSetName": { - "description": "The configuration set to use by default when sending from this identity. Note that any configuration set defined in the email sending request takes precedence.", - "type": "string" - } - }, - "type": "object" - }, - "DkimAttributes": { - "additionalProperties": false, - "description": "Used to enable or disable DKIM authentication for an email identity.", - "properties": { - "SigningEnabled": { - "description": "Sets the DKIM signing configuration for the identity. When you set this value true, then the messages that are sent from the identity are signed using DKIM. If you set this value to false, your messages are sent without DKIM signing.", - "type": "boolean" - } - }, - "type": "object" - }, - "DkimSigningAttributes": { - "additionalProperties": false, - "description": "If your request includes this object, Amazon SES configures the identity to use Bring Your Own DKIM (BYODKIM) for DKIM authentication purposes, or, configures the key length to be used for Easy DKIM.", - "properties": { - "DomainSigningPrivateKey": { - "description": "[Bring Your Own DKIM] A private key that's used to generate a DKIM signature. The private key must use 1024 or 2048-bit RSA encryption, and must be encoded using base64 encoding.", - "type": "string" - }, - "DomainSigningSelector": { - "description": "[Bring Your Own DKIM] A string that's used to identify a public key in the DNS configuration for a domain.", - "type": "string" - }, - "NextSigningKeyLength": { - "description": "[Easy DKIM] The key length of the future DKIM key pair to be generated. This can be changed at most once per day.", - "pattern": "RSA_1024_BIT|RSA_2048_BIT", - "type": "string" - } - }, - "type": "object" - }, - "FeedbackAttributes": { - "additionalProperties": false, - "description": "Used to enable or disable feedback forwarding for an identity.", - "properties": { - "EmailForwardingEnabled": { - "description": "If the value is true, you receive email notifications when bounce or complaint events occur", - "type": "boolean" - } - }, - "type": "object" - }, - "MailFromAttributes": { - "additionalProperties": false, - "description": "Used to enable or disable the custom Mail-From domain configuration for an email identity.", - "properties": { - "BehaviorOnMxFailure": { - "description": "The action to take if the required MX record isn't found when you send an email. When you set this value to UseDefaultValue , the mail is sent using amazonses.com as the MAIL FROM domain. When you set this value to RejectMessage , the Amazon SES API v2 returns a MailFromDomainNotVerified error, and doesn't attempt to deliver the email.", - "pattern": "USE_DEFAULT_VALUE|REJECT_MESSAGE", - "type": "string" - }, - "MailFromDomain": { - "description": "The custom MAIL FROM domain that you want the verified identity to use", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SES::EmailIdentity", - "handlers": { - "create": { - "permissions": [ - "ses:CreateEmailIdentity", - "ses:PutEmailIdentityMailFromAttributes", - "ses:PutEmailIdentityFeedbackAttributes", - "ses:PutEmailIdentityDkimAttributes", - "ses:GetEmailIdentity" - ] - }, - "delete": { - "permissions": [ - "ses:DeleteEmailIdentity" - ] - }, - "list": { - "permissions": [ - "ses:ListEmailIdentities" - ] - }, - "read": { - "permissions": [ - "ses:GetEmailIdentity" - ] - }, - "update": { - "permissions": [ - "ses:PutEmailIdentityMailFromAttributes", - "ses:PutEmailIdentityFeedbackAttributes", - "ses:PutEmailIdentityConfigurationSetAttributes", - "ses:PutEmailIdentityDkimSigningAttributes", - "ses:PutEmailIdentityDkimAttributes", - "ses:GetEmailIdentity" - ] - } - }, - "primaryIdentifier": [ - "/properties/EmailIdentity" - ], - "properties": { - "ConfigurationSetAttributes": { - "$ref": "#/definitions/ConfigurationSetAttributes" - }, - "DkimAttributes": { - "$ref": "#/definitions/DkimAttributes" - }, - "DkimDNSTokenName1": { - "type": "string" - }, - "DkimDNSTokenName2": { - "type": "string" - }, - "DkimDNSTokenName3": { - "type": "string" - }, - "DkimDNSTokenValue1": { - "type": "string" - }, - "DkimDNSTokenValue2": { - "type": "string" - }, - "DkimDNSTokenValue3": { - "type": "string" - }, - "DkimSigningAttributes": { - "$ref": "#/definitions/DkimSigningAttributes" - }, - "EmailIdentity": { - "description": "The email address or domain to verify.", - "type": "string" - }, - "FeedbackAttributes": { - "$ref": "#/definitions/FeedbackAttributes" - }, - "MailFromAttributes": { - "$ref": "#/definitions/MailFromAttributes" - } - }, - "readOnlyProperties": [ - "/properties/DkimDNSTokenName1", - "/properties/DkimDNSTokenName2", - "/properties/DkimDNSTokenName3", - "/properties/DkimDNSTokenValue1", - "/properties/DkimDNSTokenValue2", - "/properties/DkimDNSTokenValue3" - ], - "required": [ - "EmailIdentity" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses.git", - "typeName": "AWS::SES::EmailIdentity", - "writeOnlyProperties": [ - "/properties/DkimSigningAttributes/DomainSigningSelector", - "/properties/DkimSigningAttributes/DomainSigningPrivateKey" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/EmailIdentity" + ], + "definitions": { + "ConfigurationSetAttributes": { + "additionalProperties": false, + "description": "Used to associate a configuration set with an email identity.", + "properties": { + "ConfigurationSetName": { + "description": "The configuration set to use by default when sending from this identity. Note that any configuration set defined in the email sending request takes precedence.", + "type": "string" + } + }, + "type": "object" + }, + "DkimAttributes": { + "additionalProperties": false, + "description": "Used to enable or disable DKIM authentication for an email identity.", + "properties": { + "SigningEnabled": { + "description": "Sets the DKIM signing configuration for the identity. When you set this value true, then the messages that are sent from the identity are signed using DKIM. If you set this value to false, your messages are sent without DKIM signing.", + "type": "boolean" + } + }, + "type": "object" + }, + "DkimSigningAttributes": { + "additionalProperties": false, + "description": "If your request includes this object, Amazon SES configures the identity to use Bring Your Own DKIM (BYODKIM) for DKIM authentication purposes, or, configures the key length to be used for Easy DKIM.", + "properties": { + "DomainSigningPrivateKey": { + "description": "[Bring Your Own DKIM] A private key that's used to generate a DKIM signature. The private key must use 1024 or 2048-bit RSA encryption, and must be encoded using base64 encoding.", + "type": "string" + }, + "DomainSigningSelector": { + "description": "[Bring Your Own DKIM] A string that's used to identify a public key in the DNS configuration for a domain.", + "type": "string" + }, + "NextSigningKeyLength": { + "description": "[Easy DKIM] The key length of the future DKIM key pair to be generated. This can be changed at most once per day.", + "pattern": "RSA_1024_BIT|RSA_2048_BIT", + "type": "string" + } + }, + "type": "object" + }, + "FeedbackAttributes": { + "additionalProperties": false, + "description": "Used to enable or disable feedback forwarding for an identity.", + "properties": { + "EmailForwardingEnabled": { + "description": "If the value is true, you receive email notifications when bounce or complaint events occur", + "type": "boolean" + } + }, + "type": "object" + }, + "MailFromAttributes": { + "additionalProperties": false, + "description": "Used to enable or disable the custom Mail-From domain configuration for an email identity.", + "properties": { + "BehaviorOnMxFailure": { + "description": "The action to take if the required MX record isn't found when you send an email. When you set this value to UseDefaultValue , the mail is sent using amazonses.com as the MAIL FROM domain. When you set this value to RejectMessage , the Amazon SES API v2 returns a MailFromDomainNotVerified error, and doesn't attempt to deliver the email.", + "pattern": "USE_DEFAULT_VALUE|REJECT_MESSAGE", + "type": "string" + }, + "MailFromDomain": { + "description": "The custom MAIL FROM domain that you want the verified identity to use", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SES::EmailIdentity", + "handlers": { + "create": { + "permissions": [ + "ses:CreateEmailIdentity", + "ses:PutEmailIdentityMailFromAttributes", + "ses:PutEmailIdentityFeedbackAttributes", + "ses:PutEmailIdentityDkimAttributes", + "ses:GetEmailIdentity" + ] + }, + "delete": { + "permissions": [ + "ses:DeleteEmailIdentity" + ] + }, + "list": { + "permissions": [ + "ses:ListEmailIdentities" + ] + }, + "read": { + "permissions": [ + "ses:GetEmailIdentity" + ] + }, + "update": { + "permissions": [ + "ses:PutEmailIdentityMailFromAttributes", + "ses:PutEmailIdentityFeedbackAttributes", + "ses:PutEmailIdentityConfigurationSetAttributes", + "ses:PutEmailIdentityDkimSigningAttributes", + "ses:PutEmailIdentityDkimAttributes", + "ses:GetEmailIdentity" + ] + } + }, + "primaryIdentifier": [ + "/properties/EmailIdentity" + ], + "properties": { + "ConfigurationSetAttributes": { + "$ref": "#/definitions/ConfigurationSetAttributes" + }, + "DkimAttributes": { + "$ref": "#/definitions/DkimAttributes" + }, + "DkimDNSTokenName1": { + "type": "string" + }, + "DkimDNSTokenName2": { + "type": "string" + }, + "DkimDNSTokenName3": { + "type": "string" + }, + "DkimDNSTokenValue1": { + "type": "string" + }, + "DkimDNSTokenValue2": { + "type": "string" + }, + "DkimDNSTokenValue3": { + "type": "string" + }, + "DkimSigningAttributes": { + "$ref": "#/definitions/DkimSigningAttributes" + }, + "EmailIdentity": { + "description": "The email address or domain to verify.", + "type": "string" + }, + "FeedbackAttributes": { + "$ref": "#/definitions/FeedbackAttributes" + }, + "MailFromAttributes": { + "$ref": "#/definitions/MailFromAttributes" + } + }, + "readOnlyProperties": [ + "/properties/DkimDNSTokenName1", + "/properties/DkimDNSTokenName2", + "/properties/DkimDNSTokenName3", + "/properties/DkimDNSTokenValue1", + "/properties/DkimDNSTokenValue2", + "/properties/DkimDNSTokenValue3" + ], + "required": [ + "EmailIdentity" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses.git", + "typeName": "AWS::SES::EmailIdentity", + "writeOnlyProperties": [ + "/properties/DkimSigningAttributes/DomainSigningSelector", + "/properties/DkimSigningAttributes/DomainSigningPrivateKey" + ] +} diff --git a/src/schema/aws-ses-mailmanageraddoninstance.json b/src/schema/aws-ses-mailmanageraddoninstance.json index 8b11952c..fa1624e7 100644 --- a/src/schema/aws-ses-mailmanageraddoninstance.json +++ b/src/schema/aws-ses-mailmanageraddoninstance.json @@ -1,118 +1,118 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AddonSubscriptionId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::SES::MailManagerAddonInstance Resource Type", - "handlers": { - "create": { - "permissions": [ - "ses:TagResource", - "ses:ListTagsForResource", - "ses:GetAddonInstance", - "ses:CreateAddonInstance" - ] - }, - "delete": { - "permissions": [ - "ses:GetAddonInstance", - "ses:DeleteAddonInstance" - ] - }, - "list": { - "permissions": [ - "ses:ListAddonInstances" - ] - }, - "read": { - "permissions": [ - "ses:ListTagsForResource", - "ses:GetAddonInstance" - ] - }, - "update": { - "permissions": [ - "ses:TagResource", - "ses:UntagResource", - "ses:ListTagsForResource", - "ses:GetAddonInstance" - ] - } - }, - "primaryIdentifier": [ - "/properties/AddonInstanceId" - ], - "properties": { - "AddonInstanceArn": { - "type": "string" - }, - "AddonInstanceId": { - "maxLength": 67, - "minLength": 4, - "pattern": "^ai-[a-zA-Z0-9]{1,64}$", - "type": "string" - }, - "AddonName": { - "type": "string" - }, - "AddonSubscriptionId": { - "maxLength": 67, - "minLength": 4, - "pattern": "^as-[a-zA-Z0-9]{1,64}$", - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/AddonInstanceArn", - "/properties/AddonInstanceId", - "/properties/AddonName" - ], - "required": [ - "AddonSubscriptionId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses-mailmanager", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ses:TagResource", - "ses:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SES::MailManagerAddonInstance" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AddonSubscriptionId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::SES::MailManagerAddonInstance Resource Type", + "handlers": { + "create": { + "permissions": [ + "ses:TagResource", + "ses:ListTagsForResource", + "ses:GetAddonInstance", + "ses:CreateAddonInstance" + ] + }, + "delete": { + "permissions": [ + "ses:GetAddonInstance", + "ses:DeleteAddonInstance" + ] + }, + "list": { + "permissions": [ + "ses:ListAddonInstances" + ] + }, + "read": { + "permissions": [ + "ses:ListTagsForResource", + "ses:GetAddonInstance" + ] + }, + "update": { + "permissions": [ + "ses:TagResource", + "ses:UntagResource", + "ses:ListTagsForResource", + "ses:GetAddonInstance" + ] + } + }, + "primaryIdentifier": [ + "/properties/AddonInstanceId" + ], + "properties": { + "AddonInstanceArn": { + "type": "string" + }, + "AddonInstanceId": { + "maxLength": 67, + "minLength": 4, + "pattern": "^ai-[a-zA-Z0-9]{1,64}$", + "type": "string" + }, + "AddonName": { + "type": "string" + }, + "AddonSubscriptionId": { + "maxLength": 67, + "minLength": 4, + "pattern": "^as-[a-zA-Z0-9]{1,64}$", + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/AddonInstanceArn", + "/properties/AddonInstanceId", + "/properties/AddonName" + ], + "required": [ + "AddonSubscriptionId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses-mailmanager", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ses:TagResource", + "ses:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SES::MailManagerAddonInstance" +} diff --git a/src/schema/aws-ses-mailmanageraddonsubscription.json b/src/schema/aws-ses-mailmanageraddonsubscription.json index 9c4d7b58..babdb872 100644 --- a/src/schema/aws-ses-mailmanageraddonsubscription.json +++ b/src/schema/aws-ses-mailmanageraddonsubscription.json @@ -1,111 +1,111 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AddonName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::SES::MailManagerAddonSubscription Resource Type", - "handlers": { - "create": { - "permissions": [ - "ses:TagResource", - "ses:ListTagsForResource", - "ses:GetAddonSubscription", - "ses:CreateAddonSubscription" - ] - }, - "delete": { - "permissions": [ - "ses:GetAddonSubscription", - "ses:DeleteAddonSubscription" - ] - }, - "list": { - "permissions": [ - "ses:ListAddonSubscriptions" - ] - }, - "read": { - "permissions": [ - "ses:ListTagsForResource", - "ses:GetAddonSubscription" - ] - }, - "update": { - "permissions": [ - "ses:TagResource", - "ses:UntagResource", - "ses:ListTagsForResource", - "ses:GetAddonSubscription" - ] - } - }, - "primaryIdentifier": [ - "/properties/AddonSubscriptionId" - ], - "properties": { - "AddonName": { - "type": "string" - }, - "AddonSubscriptionArn": { - "type": "string" - }, - "AddonSubscriptionId": { - "maxLength": 67, - "minLength": 4, - "pattern": "^as-[a-zA-Z0-9]{1,64}$", - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/AddonSubscriptionArn", - "/properties/AddonSubscriptionId" - ], - "required": [ - "AddonName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses-mailmanager", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ses:TagResource", - "ses:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SES::MailManagerAddonSubscription" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AddonName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::SES::MailManagerAddonSubscription Resource Type", + "handlers": { + "create": { + "permissions": [ + "ses:TagResource", + "ses:ListTagsForResource", + "ses:GetAddonSubscription", + "ses:CreateAddonSubscription" + ] + }, + "delete": { + "permissions": [ + "ses:GetAddonSubscription", + "ses:DeleteAddonSubscription" + ] + }, + "list": { + "permissions": [ + "ses:ListAddonSubscriptions" + ] + }, + "read": { + "permissions": [ + "ses:ListTagsForResource", + "ses:GetAddonSubscription" + ] + }, + "update": { + "permissions": [ + "ses:TagResource", + "ses:UntagResource", + "ses:ListTagsForResource", + "ses:GetAddonSubscription" + ] + } + }, + "primaryIdentifier": [ + "/properties/AddonSubscriptionId" + ], + "properties": { + "AddonName": { + "type": "string" + }, + "AddonSubscriptionArn": { + "type": "string" + }, + "AddonSubscriptionId": { + "maxLength": 67, + "minLength": 4, + "pattern": "^as-[a-zA-Z0-9]{1,64}$", + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/AddonSubscriptionArn", + "/properties/AddonSubscriptionId" + ], + "required": [ + "AddonName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses-mailmanager", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ses:TagResource", + "ses:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SES::MailManagerAddonSubscription" +} diff --git a/src/schema/aws-ses-mailmanagerarchive.json b/src/schema/aws-ses-mailmanagerarchive.json index 8f8638e5..5e94cfe0 100644 --- a/src/schema/aws-ses-mailmanagerarchive.json +++ b/src/schema/aws-ses-mailmanagerarchive.json @@ -1,170 +1,170 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKeyArn" - ], - "definitions": { - "ArchiveRetention": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "RetentionPeriod": { - "$ref": "#/definitions/RetentionPeriod" - } - }, - "required": [ - "RetentionPeriod" - ], - "title": "RetentionPeriod", - "type": "object" - } - ] - }, - "ArchiveState": { - "enum": [ - "ACTIVE", - "PENDING_DELETION" - ], - "type": "string" - }, - "RetentionPeriod": { - "enum": [ - "THREE_MONTHS", - "SIX_MONTHS", - "NINE_MONTHS", - "ONE_YEAR", - "EIGHTEEN_MONTHS", - "TWO_YEARS", - "THIRTY_MONTHS", - "THREE_YEARS", - "FOUR_YEARS", - "FIVE_YEARS", - "SIX_YEARS", - "SEVEN_YEARS", - "EIGHT_YEARS", - "NINE_YEARS", - "TEN_YEARS", - "PERMANENT" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::SES::MailManagerArchive Resource Type", - "handlers": { - "create": { - "permissions": [ - "ses:TagResource", - "ses:ListTagsForResource", - "ses:GetArchive", - "ses:CreateArchive", - "kms:DescribeKey", - "kms:Decrypt", - "kms:GenerateDataKey" - ] - }, - "delete": { - "permissions": [ - "ses:GetArchive", - "ses:DeleteArchive" - ] - }, - "list": { - "permissions": [ - "ses:ListArchives" - ] - }, - "read": { - "permissions": [ - "ses:ListTagsForResource", - "ses:GetArchive" - ] - }, - "update": { - "permissions": [ - "ses:TagResource", - "ses:UntagResource", - "ses:ListTagsForResource", - "ses:GetArchive", - "ses:UpdateArchive" - ] - } - }, - "primaryIdentifier": [ - "/properties/ArchiveId" - ], - "properties": { - "ArchiveArn": { - "type": "string" - }, - "ArchiveId": { - "maxLength": 66, - "minLength": 1, - "type": "string" - }, - "ArchiveName": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*[a-zA-Z0-9]$", - "type": "string" - }, - "ArchiveState": { - "$ref": "#/definitions/ArchiveState" - }, - "KmsKeyArn": { - "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-z0-9-]{1,20}:[0-9]{12}:(key|alias)/.+$", - "type": "string" - }, - "Retention": { - "$ref": "#/definitions/ArchiveRetention" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ArchiveArn", - "/properties/ArchiveId", - "/properties/ArchiveState" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses-mailmanager", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ses:TagResource", - "ses:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SES::MailManagerArchive" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KmsKeyArn" + ], + "definitions": { + "ArchiveRetention": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "RetentionPeriod": { + "$ref": "#/definitions/RetentionPeriod" + } + }, + "required": [ + "RetentionPeriod" + ], + "title": "RetentionPeriod", + "type": "object" + } + ] + }, + "ArchiveState": { + "enum": [ + "ACTIVE", + "PENDING_DELETION" + ], + "type": "string" + }, + "RetentionPeriod": { + "enum": [ + "THREE_MONTHS", + "SIX_MONTHS", + "NINE_MONTHS", + "ONE_YEAR", + "EIGHTEEN_MONTHS", + "TWO_YEARS", + "THIRTY_MONTHS", + "THREE_YEARS", + "FOUR_YEARS", + "FIVE_YEARS", + "SIX_YEARS", + "SEVEN_YEARS", + "EIGHT_YEARS", + "NINE_YEARS", + "TEN_YEARS", + "PERMANENT" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::SES::MailManagerArchive Resource Type", + "handlers": { + "create": { + "permissions": [ + "ses:TagResource", + "ses:ListTagsForResource", + "ses:GetArchive", + "ses:CreateArchive", + "kms:DescribeKey", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + }, + "delete": { + "permissions": [ + "ses:GetArchive", + "ses:DeleteArchive" + ] + }, + "list": { + "permissions": [ + "ses:ListArchives" + ] + }, + "read": { + "permissions": [ + "ses:ListTagsForResource", + "ses:GetArchive" + ] + }, + "update": { + "permissions": [ + "ses:TagResource", + "ses:UntagResource", + "ses:ListTagsForResource", + "ses:GetArchive", + "ses:UpdateArchive" + ] + } + }, + "primaryIdentifier": [ + "/properties/ArchiveId" + ], + "properties": { + "ArchiveArn": { + "type": "string" + }, + "ArchiveId": { + "maxLength": 66, + "minLength": 1, + "type": "string" + }, + "ArchiveName": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*[a-zA-Z0-9]$", + "type": "string" + }, + "ArchiveState": { + "$ref": "#/definitions/ArchiveState" + }, + "KmsKeyArn": { + "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-z0-9-]{1,20}:[0-9]{12}:(key|alias)/.+$", + "type": "string" + }, + "Retention": { + "$ref": "#/definitions/ArchiveRetention" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ArchiveArn", + "/properties/ArchiveId", + "/properties/ArchiveState" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses-mailmanager", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ses:TagResource", + "ses:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SES::MailManagerArchive" +} diff --git a/src/schema/aws-ses-mailmanageringresspoint.json b/src/schema/aws-ses-mailmanageringresspoint.json index 2ae891f7..de43aa65 100644 --- a/src/schema/aws-ses-mailmanageringresspoint.json +++ b/src/schema/aws-ses-mailmanageringresspoint.json @@ -1,206 +1,280 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Type" - ], - "definitions": { - "IngressPointConfiguration": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "SmtpPassword": { - "maxLength": 64, - "minLength": 8, - "pattern": "^[A-Za-z0-9!@#$%^&*()_+\\-=\\[\\]{}|.,?]+$", - "type": "string" - } - }, - "required": [ - "SmtpPassword" - ], - "title": "SmtpPassword", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "SecretArn": { - "pattern": "^arn:(aws|aws-cn|aws-us-gov):secretsmanager:[a-z0-9-]+:\\d{12}:secret:[a-zA-Z0-9/_+=,.@-]+$", - "type": "string" - } - }, - "required": [ - "SecretArn" - ], - "title": "SecretArn", - "type": "object" - } - ] - }, - "IngressPointStatus": { - "enum": [ - "PROVISIONING", - "DEPROVISIONING", - "UPDATING", - "ACTIVE", - "CLOSED", - "FAILED" - ], - "type": "string" - }, - "IngressPointStatusToUpdate": { - "enum": [ - "ACTIVE", - "CLOSED" - ], - "type": "string" - }, - "IngressPointType": { - "enum": [ - "OPEN", - "AUTH" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::SES::MailManagerIngressPoint Resource Type", - "handlers": { - "create": { - "permissions": [ - "ses:TagResource", - "ses:ListTagsForResource", - "ses:GetIngressPoint", - "ses:CreateIngressPoint", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "ses:GetIngressPoint", - "ses:DeleteIngressPoint" - ] - }, - "list": { - "permissions": [ - "ses:ListIngressPoints" - ] - }, - "read": { - "permissions": [ - "ses:ListTagsForResource", - "ses:GetIngressPoint" - ] - }, - "update": { - "permissions": [ - "ses:TagResource", - "ses:UntagResource", - "ses:ListTagsForResource", - "ses:GetIngressPoint", - "ses:UpdateIngressPoint" - ] - } - }, - "primaryIdentifier": [ - "/properties/IngressPointId" - ], - "properties": { - "ARecord": { - "type": "string" - }, - "IngressPointArn": { - "type": "string" - }, - "IngressPointConfiguration": { - "$ref": "#/definitions/IngressPointConfiguration" - }, - "IngressPointId": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "IngressPointName": { - "maxLength": 63, - "minLength": 3, - "pattern": "^[A-Za-z0-9_\\-]+$", - "type": "string" - }, - "RuleSetId": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "Status": { - "$ref": "#/definitions/IngressPointStatus" - }, - "StatusToUpdate": { - "$ref": "#/definitions/IngressPointStatusToUpdate" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TrafficPolicyId": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "Type": { - "$ref": "#/definitions/IngressPointType" - } - }, - "readOnlyProperties": [ - "/properties/IngressPointId", - "/properties/IngressPointArn", - "/properties/Status", - "/properties/ARecord" - ], - "required": [ - "Type", - "TrafficPolicyId", - "RuleSetId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses-mailmanager", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ses:TagResource", - "ses:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SES::MailManagerIngressPoint", - "writeOnlyProperties": [ - "/properties/IngressPointConfiguration" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/NetworkConfiguration", + "/properties/Type" + ], + "definitions": { + "IngressPointConfiguration": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "SmtpPassword": { + "maxLength": 64, + "minLength": 8, + "pattern": "^[A-Za-z0-9!@#$%^&*()_+\\-=\\[\\]{}|.,?]+$", + "type": "string" + } + }, + "required": [ + "SmtpPassword" + ], + "title": "SmtpPassword", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "SecretArn": { + "pattern": "^arn:(aws|aws-cn|aws-us-gov):secretsmanager:[a-z0-9-]+:\\d{12}:secret:[a-zA-Z0-9/_+=,.@-]+$", + "type": "string" + } + }, + "required": [ + "SecretArn" + ], + "title": "SecretArn", + "type": "object" + } + ] + }, + "IngressPointStatus": { + "enum": [ + "PROVISIONING", + "DEPROVISIONING", + "UPDATING", + "ACTIVE", + "CLOSED", + "FAILED" + ], + "type": "string" + }, + "IngressPointStatusToUpdate": { + "enum": [ + "ACTIVE", + "CLOSED" + ], + "type": "string" + }, + "IngressPointType": { + "enum": [ + "OPEN", + "AUTH" + ], + "type": "string" + }, + "IpType": { + "enum": [ + "IPV4", + "DUAL_STACK" + ], + "type": "string" + }, + "NetworkConfiguration": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "PublicNetworkConfiguration": { + "$ref": "#/definitions/PublicNetworkConfiguration" + } + }, + "required": [ + "PublicNetworkConfiguration" + ], + "title": "PublicNetworkConfiguration", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "PrivateNetworkConfiguration": { + "$ref": "#/definitions/PrivateNetworkConfiguration" + } + }, + "required": [ + "PrivateNetworkConfiguration" + ], + "title": "PrivateNetworkConfiguration", + "type": "object" + } + ] + }, + "PrivateNetworkConfiguration": { + "additionalProperties": false, + "properties": { + "VpcEndpointId": { + "pattern": "^vpce-[a-zA-Z0-9]{17}$", + "type": "string" + } + }, + "required": [ + "VpcEndpointId" + ], + "type": "object" + }, + "PublicNetworkConfiguration": { + "additionalProperties": false, + "properties": { + "IpType": { + "allOf": [ + { + "$ref": "#/definitions/IpType" + }, + { + "default": "IPV4" + } + ] + } + }, + "required": [ + "IpType" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::SES::MailManagerIngressPoint Resource Type", + "handlers": { + "create": { + "permissions": [ + "ses:TagResource", + "ses:ListTagsForResource", + "ses:GetIngressPoint", + "ses:CreateIngressPoint", + "iam:CreateServiceLinkedRole", + "ec2:DescribeVpcEndpoints" + ] + }, + "delete": { + "permissions": [ + "ses:GetIngressPoint", + "ses:DeleteIngressPoint" + ] + }, + "list": { + "permissions": [ + "ses:ListIngressPoints" + ] + }, + "read": { + "permissions": [ + "ses:ListTagsForResource", + "ses:GetIngressPoint" + ] + }, + "update": { + "permissions": [ + "ses:TagResource", + "ses:UntagResource", + "ses:ListTagsForResource", + "ses:GetIngressPoint", + "ses:UpdateIngressPoint" + ] + } + }, + "primaryIdentifier": [ + "/properties/IngressPointId" + ], + "properties": { + "ARecord": { + "type": "string" + }, + "IngressPointArn": { + "type": "string" + }, + "IngressPointConfiguration": { + "$ref": "#/definitions/IngressPointConfiguration" + }, + "IngressPointId": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "IngressPointName": { + "maxLength": 63, + "minLength": 3, + "pattern": "^[A-Za-z0-9_\\-]+$", + "type": "string" + }, + "NetworkConfiguration": { + "$ref": "#/definitions/NetworkConfiguration" + }, + "RuleSetId": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Status": { + "$ref": "#/definitions/IngressPointStatus" + }, + "StatusToUpdate": { + "$ref": "#/definitions/IngressPointStatusToUpdate" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TrafficPolicyId": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/IngressPointType" + } + }, + "readOnlyProperties": [ + "/properties/IngressPointId", + "/properties/IngressPointArn", + "/properties/Status", + "/properties/ARecord" + ], + "required": [ + "Type", + "TrafficPolicyId", + "RuleSetId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses-mailmanager", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ses:TagResource", + "ses:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SES::MailManagerIngressPoint", + "writeOnlyProperties": [ + "/properties/IngressPointConfiguration" + ] +} diff --git a/src/schema/aws-ses-mailmanagerrelay.json b/src/schema/aws-ses-mailmanagerrelay.json index 082bcd2a..9c6d2b76 100644 --- a/src/schema/aws-ses-mailmanagerrelay.json +++ b/src/schema/aws-ses-mailmanagerrelay.json @@ -1,163 +1,163 @@ -{ - "additionalProperties": false, - "definitions": { - "NoAuthentication": { - "additionalProperties": false, - "type": "object" - }, - "RelayAuthentication": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "SecretArn": { - "pattern": "^arn:(aws|aws-cn|aws-us-gov):secretsmanager:[a-z0-9-]+:\\d{12}:secret:[a-zA-Z0-9/_+=,.@-]+$", - "type": "string" - } - }, - "required": [ - "SecretArn" - ], - "title": "SecretArn", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "NoAuthentication": { - "$ref": "#/definitions/NoAuthentication" - } - }, - "required": [ - "NoAuthentication" - ], - "title": "NoAuthentication", - "type": "object" - } - ] - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::SES::MailManagerRelay Resource Type", - "handlers": { - "create": { - "permissions": [ - "ses:TagResource", - "ses:ListTagsForResource", - "ses:GetRelay", - "ses:CreateRelay" - ] - }, - "delete": { - "permissions": [ - "ses:GetRelay", - "ses:DeleteRelay" - ] - }, - "list": { - "permissions": [ - "ses:ListRelays" - ] - }, - "read": { - "permissions": [ - "ses:ListTagsForResource", - "ses:GetRelay" - ] - }, - "update": { - "permissions": [ - "ses:TagResource", - "ses:UntagResource", - "ses:ListTagsForResource", - "ses:GetRelay", - "ses:UpdateRelay" - ] - } - }, - "primaryIdentifier": [ - "/properties/RelayId" - ], - "properties": { - "Authentication": { - "$ref": "#/definitions/RelayAuthentication" - }, - "RelayArn": { - "type": "string" - }, - "RelayId": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "RelayName": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-_]+$", - "type": "string" - }, - "ServerName": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-\\.]+$", - "type": "string" - }, - "ServerPort": { - "maximum": 65535, - "minimum": 1, - "type": "number" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/RelayArn", - "/properties/RelayId" - ], - "required": [ - "Authentication", - "ServerName", - "ServerPort" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses-mailmanager", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ses:TagResource", - "ses:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SES::MailManagerRelay" -} +{ + "additionalProperties": false, + "definitions": { + "NoAuthentication": { + "additionalProperties": false, + "type": "object" + }, + "RelayAuthentication": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "SecretArn": { + "pattern": "^arn:(aws|aws-cn|aws-us-gov):secretsmanager:[a-z0-9-]+:\\d{12}:secret:[a-zA-Z0-9/_+=,.@-]+$", + "type": "string" + } + }, + "required": [ + "SecretArn" + ], + "title": "SecretArn", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "NoAuthentication": { + "$ref": "#/definitions/NoAuthentication" + } + }, + "required": [ + "NoAuthentication" + ], + "title": "NoAuthentication", + "type": "object" + } + ] + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::SES::MailManagerRelay Resource Type", + "handlers": { + "create": { + "permissions": [ + "ses:TagResource", + "ses:ListTagsForResource", + "ses:GetRelay", + "ses:CreateRelay" + ] + }, + "delete": { + "permissions": [ + "ses:GetRelay", + "ses:DeleteRelay" + ] + }, + "list": { + "permissions": [ + "ses:ListRelays" + ] + }, + "read": { + "permissions": [ + "ses:ListTagsForResource", + "ses:GetRelay" + ] + }, + "update": { + "permissions": [ + "ses:TagResource", + "ses:UntagResource", + "ses:ListTagsForResource", + "ses:GetRelay", + "ses:UpdateRelay" + ] + } + }, + "primaryIdentifier": [ + "/properties/RelayId" + ], + "properties": { + "Authentication": { + "$ref": "#/definitions/RelayAuthentication" + }, + "RelayArn": { + "type": "string" + }, + "RelayId": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]+$", + "type": "string" + }, + "RelayName": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-_]+$", + "type": "string" + }, + "ServerName": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-\\.]+$", + "type": "string" + }, + "ServerPort": { + "maximum": 65535, + "minimum": 1, + "type": "number" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/RelayArn", + "/properties/RelayId" + ], + "required": [ + "Authentication", + "ServerName", + "ServerPort" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses-mailmanager", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ses:TagResource", + "ses:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SES::MailManagerRelay" +} diff --git a/src/schema/aws-ses-mailmanagerruleset.json b/src/schema/aws-ses-mailmanagerruleset.json index b7718eab..0a589127 100644 --- a/src/schema/aws-ses-mailmanagerruleset.json +++ b/src/schema/aws-ses-mailmanagerruleset.json @@ -1,899 +1,970 @@ -{ - "additionalProperties": false, - "definitions": { - "ActionFailurePolicy": { - "enum": [ - "CONTINUE", - "DROP" - ], - "type": "string" - }, - "AddHeaderAction": { - "additionalProperties": false, - "properties": { - "HeaderName": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[xX]\\-[a-zA-Z0-9\\-]+$", - "type": "string" - }, - "HeaderValue": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "HeaderName", - "HeaderValue" - ], - "type": "object" - }, - "Analysis": { - "additionalProperties": false, - "properties": { - "Analyzer": { - "pattern": "^[a-zA-Z0-9:_/+=,@.#-]+$", - "type": "string" - }, - "ResultField": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[\\sa-zA-Z0-9_]+$", - "type": "string" - } - }, - "required": [ - "Analyzer", - "ResultField" - ], - "type": "object" - }, - "ArchiveAction": { - "additionalProperties": false, - "properties": { - "ActionFailurePolicy": { - "$ref": "#/definitions/ActionFailurePolicy" - }, - "TargetArchive": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9:_/+=,@.#-]+$", - "type": "string" - } - }, - "required": [ - "TargetArchive" - ], - "type": "object" - }, - "DeliverToMailboxAction": { - "additionalProperties": false, - "properties": { - "ActionFailurePolicy": { - "$ref": "#/definitions/ActionFailurePolicy" - }, - "MailboxArn": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9:_/+=,@.#-]+$", - "type": "string" - }, - "RoleArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^[a-zA-Z0-9:_/+=,@.#-]+$", - "type": "string" - } - }, - "required": [ - "MailboxArn", - "RoleArn" - ], - "type": "object" - }, - "DropAction": { - "additionalProperties": false, - "type": "object" - }, - "MailFrom": { - "enum": [ - "REPLACE", - "PRESERVE" - ], - "type": "string" - }, - "RelayAction": { - "additionalProperties": false, - "properties": { - "ActionFailurePolicy": { - "$ref": "#/definitions/ActionFailurePolicy" - }, - "MailFrom": { - "$ref": "#/definitions/MailFrom" - }, - "Relay": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9:_/+=,@.#-]+$", - "type": "string" - } - }, - "required": [ - "Relay" - ], - "type": "object" - }, - "ReplaceRecipientAction": { - "additionalProperties": false, - "properties": { - "ReplaceWith": { - "items": { - "maxLength": 254, - "minLength": 0, - "pattern": "^[0-9A-Za-z@+.-]+$", - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "Rule": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/RuleAction" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "Conditions": { - "items": { - "$ref": "#/definitions/RuleCondition" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "Name": { - "maxLength": 32, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - }, - "Unless": { - "items": { - "$ref": "#/definitions/RuleCondition" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Actions" - ], - "type": "object" - }, - "RuleAction": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Drop": { - "$ref": "#/definitions/DropAction" - } - }, - "required": [ - "Drop" - ], - "title": "Drop", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Relay": { - "$ref": "#/definitions/RelayAction" - } - }, - "required": [ - "Relay" - ], - "title": "Relay", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Archive": { - "$ref": "#/definitions/ArchiveAction" - } - }, - "required": [ - "Archive" - ], - "title": "Archive", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "WriteToS3": { - "$ref": "#/definitions/S3Action" - } - }, - "required": [ - "WriteToS3" - ], - "title": "WriteToS3", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Send": { - "$ref": "#/definitions/SendAction" - } - }, - "required": [ - "Send" - ], - "title": "Send", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "AddHeader": { - "$ref": "#/definitions/AddHeaderAction" - } - }, - "required": [ - "AddHeader" - ], - "title": "AddHeader", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "ReplaceRecipient": { - "$ref": "#/definitions/ReplaceRecipientAction" - } - }, - "required": [ - "ReplaceRecipient" - ], - "title": "ReplaceRecipient", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "DeliverToMailbox": { - "$ref": "#/definitions/DeliverToMailboxAction" - } - }, - "required": [ - "DeliverToMailbox" - ], - "title": "DeliverToMailbox", - "type": "object" - } - ] - }, - "RuleBooleanEmailAttribute": { - "enum": [ - "READ_RECEIPT_REQUESTED", - "TLS", - "TLS_WRAPPED" - ], - "type": "string" - }, - "RuleBooleanExpression": { - "additionalProperties": false, - "properties": { - "Evaluate": { - "$ref": "#/definitions/RuleBooleanToEvaluate" - }, - "Operator": { - "$ref": "#/definitions/RuleBooleanOperator" - } - }, - "required": [ - "Evaluate", - "Operator" - ], - "type": "object" - }, - "RuleBooleanOperator": { - "enum": [ - "IS_TRUE", - "IS_FALSE" - ], - "type": "string" - }, - "RuleBooleanToEvaluate": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Attribute": { - "$ref": "#/definitions/RuleBooleanEmailAttribute" - } - }, - "required": [ - "Attribute" - ], - "title": "Attribute", - "type": "object" - } - ] - }, - "RuleCondition": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "BooleanExpression": { - "$ref": "#/definitions/RuleBooleanExpression" - } - }, - "required": [ - "BooleanExpression" - ], - "title": "BooleanExpression", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "StringExpression": { - "$ref": "#/definitions/RuleStringExpression" - } - }, - "required": [ - "StringExpression" - ], - "title": "StringExpression", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "NumberExpression": { - "$ref": "#/definitions/RuleNumberExpression" - } - }, - "required": [ - "NumberExpression" - ], - "title": "NumberExpression", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "IpExpression": { - "$ref": "#/definitions/RuleIpExpression" - } - }, - "required": [ - "IpExpression" - ], - "title": "IpExpression", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "VerdictExpression": { - "$ref": "#/definitions/RuleVerdictExpression" - } - }, - "required": [ - "VerdictExpression" - ], - "title": "VerdictExpression", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "DmarcExpression": { - "$ref": "#/definitions/RuleDmarcExpression" - } - }, - "required": [ - "DmarcExpression" - ], - "title": "DmarcExpression", - "type": "object" - } - ] - }, - "RuleDmarcExpression": { - "additionalProperties": false, - "properties": { - "Operator": { - "$ref": "#/definitions/RuleDmarcOperator" - }, - "Values": { - "items": { - "$ref": "#/definitions/RuleDmarcPolicy" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Operator", - "Values" - ], - "type": "object" - }, - "RuleDmarcOperator": { - "enum": [ - "EQUALS", - "NOT_EQUALS" - ], - "type": "string" - }, - "RuleDmarcPolicy": { - "enum": [ - "NONE", - "QUARANTINE", - "REJECT" - ], - "type": "string" - }, - "RuleIpEmailAttribute": { - "enum": [ - "SOURCE_IP" - ], - "type": "string" - }, - "RuleIpExpression": { - "additionalProperties": false, - "properties": { - "Evaluate": { - "$ref": "#/definitions/RuleIpToEvaluate" - }, - "Operator": { - "$ref": "#/definitions/RuleIpOperator" - }, - "Values": { - "items": { - "maxLength": 18, - "minLength": 1, - "pattern": "^(([0-9]|.|/)*)$", - "type": "string" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Evaluate", - "Operator", - "Values" - ], - "type": "object" - }, - "RuleIpOperator": { - "enum": [ - "CIDR_MATCHES", - "NOT_CIDR_MATCHES" - ], - "type": "string" - }, - "RuleIpToEvaluate": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Attribute": { - "$ref": "#/definitions/RuleIpEmailAttribute" - } - }, - "required": [ - "Attribute" - ], - "title": "Attribute", - "type": "object" - } - ] - }, - "RuleNumberEmailAttribute": { - "enum": [ - "MESSAGE_SIZE" - ], - "type": "string" - }, - "RuleNumberExpression": { - "additionalProperties": false, - "properties": { - "Evaluate": { - "$ref": "#/definitions/RuleNumberToEvaluate" - }, - "Operator": { - "$ref": "#/definitions/RuleNumberOperator" - }, - "Value": { - "type": "number" - } - }, - "required": [ - "Evaluate", - "Operator", - "Value" - ], - "type": "object" - }, - "RuleNumberOperator": { - "enum": [ - "EQUALS", - "NOT_EQUALS", - "LESS_THAN", - "GREATER_THAN", - "LESS_THAN_OR_EQUAL", - "GREATER_THAN_OR_EQUAL" - ], - "type": "string" - }, - "RuleNumberToEvaluate": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Attribute": { - "$ref": "#/definitions/RuleNumberEmailAttribute" - } - }, - "required": [ - "Attribute" - ], - "title": "Attribute", - "type": "object" - } - ] - }, - "RuleStringEmailAttribute": { - "enum": [ - "MAIL_FROM", - "HELO", - "RECIPIENT", - "SENDER", - "FROM", - "SUBJECT", - "TO", - "CC" - ], - "type": "string" - }, - "RuleStringExpression": { - "additionalProperties": false, - "properties": { - "Evaluate": { - "$ref": "#/definitions/RuleStringToEvaluate" - }, - "Operator": { - "$ref": "#/definitions/RuleStringOperator" - }, - "Values": { - "items": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Evaluate", - "Operator", - "Values" - ], - "type": "object" - }, - "RuleStringOperator": { - "enum": [ - "EQUALS", - "NOT_EQUALS", - "STARTS_WITH", - "ENDS_WITH", - "CONTAINS" - ], - "type": "string" - }, - "RuleStringToEvaluate": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Attribute": { - "$ref": "#/definitions/RuleStringEmailAttribute" - } - }, - "required": [ - "Attribute" - ], - "title": "Attribute", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "MimeHeaderAttribute": { - "pattern": "^X-[a-zA-Z0-9-]{1,256}$", - "type": "string" - } - }, - "required": [ - "MimeHeaderAttribute" - ], - "title": "MimeHeaderAttribute", - "type": "object" - } - ] - }, - "RuleVerdict": { - "enum": [ - "PASS", - "FAIL", - "GRAY", - "PROCESSING_FAILED" - ], - "type": "string" - }, - "RuleVerdictAttribute": { - "enum": [ - "SPF", - "DKIM" - ], - "type": "string" - }, - "RuleVerdictExpression": { - "additionalProperties": false, - "properties": { - "Evaluate": { - "$ref": "#/definitions/RuleVerdictToEvaluate" - }, - "Operator": { - "$ref": "#/definitions/RuleVerdictOperator" - }, - "Values": { - "items": { - "$ref": "#/definitions/RuleVerdict" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Evaluate", - "Operator", - "Values" - ], - "type": "object" - }, - "RuleVerdictOperator": { - "enum": [ - "EQUALS", - "NOT_EQUALS" - ], - "type": "string" - }, - "RuleVerdictToEvaluate": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Attribute": { - "$ref": "#/definitions/RuleVerdictAttribute" - } - }, - "required": [ - "Attribute" - ], - "title": "Attribute", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Analysis": { - "$ref": "#/definitions/Analysis" - } - }, - "required": [ - "Analysis" - ], - "title": "Analysis", - "type": "object" - } - ] - }, - "S3Action": { - "additionalProperties": false, - "properties": { - "ActionFailurePolicy": { - "$ref": "#/definitions/ActionFailurePolicy" - }, - "RoleArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^[a-zA-Z0-9:_/+=,@.#-]+$", - "type": "string" - }, - "S3Bucket": { - "maxLength": 62, - "minLength": 1, - "pattern": "^[a-zA-Z0-9.-]+$", - "type": "string" - }, - "S3Prefix": { - "maxLength": 62, - "minLength": 1, - "pattern": "^[a-zA-Z0-9!_.*'()/-]+$", - "type": "string" - }, - "S3SseKmsKeyId": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^[a-zA-Z0-9-:/]+$", - "type": "string" - } - }, - "required": [ - "RoleArn", - "S3Bucket" - ], - "type": "object" - }, - "SendAction": { - "additionalProperties": false, - "properties": { - "ActionFailurePolicy": { - "$ref": "#/definitions/ActionFailurePolicy" - }, - "RoleArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^[a-zA-Z0-9:_/+=,@.#-]+$", - "type": "string" - } - }, - "required": [ - "RoleArn" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::SES::MailManagerRuleSet Resource Type", - "handlers": { - "create": { - "permissions": [ - "ses:TagResource", - "ses:ListTagsForResource", - "ses:GetRuleSet", - "ses:CreateRuleSet" - ] - }, - "delete": { - "permissions": [ - "ses:GetRuleSet", - "ses:DeleteRuleSet" - ] - }, - "list": { - "permissions": [ - "ses:ListRuleSets" - ] - }, - "read": { - "permissions": [ - "ses:ListTagsForResource", - "ses:GetRuleSet" - ] - }, - "update": { - "permissions": [ - "ses:TagResource", - "ses:UntagResource", - "ses:ListTagsForResource", - "ses:GetRuleSet", - "ses:UpdateRuleSet" - ] - } - }, - "primaryIdentifier": [ - "/properties/RuleSetId" - ], - "properties": { - "RuleSetArn": { - "type": "string" - }, - "RuleSetId": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "RuleSetName": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - }, - "Rules": { - "items": { - "$ref": "#/definitions/Rule" - }, - "maxItems": 40, - "minItems": 0, - "type": "array" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/RuleSetArn", - "/properties/RuleSetId" - ], - "required": [ - "Rules" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses-mailmanager", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ses:TagResource", - "ses:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SES::MailManagerRuleSet" -} +{ + "additionalProperties": false, + "definitions": { + "ActionFailurePolicy": { + "enum": [ + "CONTINUE", + "DROP" + ], + "type": "string" + }, + "AddHeaderAction": { + "additionalProperties": false, + "properties": { + "HeaderName": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[xX]\\-[a-zA-Z0-9\\-]+$", + "type": "string" + }, + "HeaderValue": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "HeaderName", + "HeaderValue" + ], + "type": "object" + }, + "Analysis": { + "additionalProperties": false, + "properties": { + "Analyzer": { + "pattern": "^[a-zA-Z0-9:_/+=,@.#-]+$", + "type": "string" + }, + "ResultField": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(addon\\.)?[\\sa-zA-Z0-9_]+$", + "type": "string" + } + }, + "required": [ + "Analyzer", + "ResultField" + ], + "type": "object" + }, + "ArchiveAction": { + "additionalProperties": false, + "properties": { + "ActionFailurePolicy": { + "$ref": "#/definitions/ActionFailurePolicy" + }, + "TargetArchive": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9:_/+=,@.#-]+$", + "type": "string" + } + }, + "required": [ + "TargetArchive" + ], + "type": "object" + }, + "DeliverToMailboxAction": { + "additionalProperties": false, + "properties": { + "ActionFailurePolicy": { + "$ref": "#/definitions/ActionFailurePolicy" + }, + "MailboxArn": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9:_/+=,@.#-]+$", + "type": "string" + }, + "RoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^[a-zA-Z0-9:_/+=,@.#-]+$", + "type": "string" + } + }, + "required": [ + "MailboxArn", + "RoleArn" + ], + "type": "object" + }, + "DeliverToQBusinessAction": { + "additionalProperties": false, + "properties": { + "ActionFailurePolicy": { + "$ref": "#/definitions/ActionFailurePolicy" + }, + "ApplicationId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-z0-9-]+$", + "type": "string" + }, + "IndexId": { + "maxLength": 36, + "minLength": 36, + "pattern": "^[a-z0-9-]+$", + "type": "string" + }, + "RoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^[a-zA-Z0-9:_/+=,@.#-]+$", + "type": "string" + } + }, + "required": [ + "ApplicationId", + "IndexId", + "RoleArn" + ], + "type": "object" + }, + "DropAction": { + "additionalProperties": false, + "type": "object" + }, + "MailFrom": { + "enum": [ + "REPLACE", + "PRESERVE" + ], + "type": "string" + }, + "RelayAction": { + "additionalProperties": false, + "properties": { + "ActionFailurePolicy": { + "$ref": "#/definitions/ActionFailurePolicy" + }, + "MailFrom": { + "$ref": "#/definitions/MailFrom" + }, + "Relay": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^[a-zA-Z0-9:_/+=,@.#-]+$", + "type": "string" + } + }, + "required": [ + "Relay" + ], + "type": "object" + }, + "ReplaceRecipientAction": { + "additionalProperties": false, + "properties": { + "ReplaceWith": { + "items": { + "maxLength": 254, + "minLength": 0, + "pattern": "^[0-9A-Za-z@+.-]+$", + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Rule": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/RuleAction" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "Conditions": { + "items": { + "$ref": "#/definitions/RuleCondition" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 32, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.-]+$", + "type": "string" + }, + "Unless": { + "items": { + "$ref": "#/definitions/RuleCondition" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Actions" + ], + "type": "object" + }, + "RuleAction": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Drop": { + "$ref": "#/definitions/DropAction" + } + }, + "required": [ + "Drop" + ], + "title": "Drop", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Relay": { + "$ref": "#/definitions/RelayAction" + } + }, + "required": [ + "Relay" + ], + "title": "Relay", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Archive": { + "$ref": "#/definitions/ArchiveAction" + } + }, + "required": [ + "Archive" + ], + "title": "Archive", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "WriteToS3": { + "$ref": "#/definitions/S3Action" + } + }, + "required": [ + "WriteToS3" + ], + "title": "WriteToS3", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Send": { + "$ref": "#/definitions/SendAction" + } + }, + "required": [ + "Send" + ], + "title": "Send", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "AddHeader": { + "$ref": "#/definitions/AddHeaderAction" + } + }, + "required": [ + "AddHeader" + ], + "title": "AddHeader", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "ReplaceRecipient": { + "$ref": "#/definitions/ReplaceRecipientAction" + } + }, + "required": [ + "ReplaceRecipient" + ], + "title": "ReplaceRecipient", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "DeliverToMailbox": { + "$ref": "#/definitions/DeliverToMailboxAction" + } + }, + "required": [ + "DeliverToMailbox" + ], + "title": "DeliverToMailbox", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "DeliverToQBusiness": { + "$ref": "#/definitions/DeliverToQBusinessAction" + } + }, + "required": [ + "DeliverToQBusiness" + ], + "title": "DeliverToQBusiness", + "type": "object" + } + ] + }, + "RuleBooleanEmailAttribute": { + "enum": [ + "READ_RECEIPT_REQUESTED", + "TLS", + "TLS_WRAPPED" + ], + "type": "string" + }, + "RuleBooleanExpression": { + "additionalProperties": false, + "properties": { + "Evaluate": { + "$ref": "#/definitions/RuleBooleanToEvaluate" + }, + "Operator": { + "$ref": "#/definitions/RuleBooleanOperator" + } + }, + "required": [ + "Evaluate", + "Operator" + ], + "type": "object" + }, + "RuleBooleanOperator": { + "enum": [ + "IS_TRUE", + "IS_FALSE" + ], + "type": "string" + }, + "RuleBooleanToEvaluate": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Attribute": { + "$ref": "#/definitions/RuleBooleanEmailAttribute" + } + }, + "required": [ + "Attribute" + ], + "title": "Attribute", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Analysis": { + "$ref": "#/definitions/Analysis" + } + }, + "required": [ + "Analysis" + ], + "title": "Analysis", + "type": "object" + } + ] + }, + "RuleCondition": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "BooleanExpression": { + "$ref": "#/definitions/RuleBooleanExpression" + } + }, + "required": [ + "BooleanExpression" + ], + "title": "BooleanExpression", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "StringExpression": { + "$ref": "#/definitions/RuleStringExpression" + } + }, + "required": [ + "StringExpression" + ], + "title": "StringExpression", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "NumberExpression": { + "$ref": "#/definitions/RuleNumberExpression" + } + }, + "required": [ + "NumberExpression" + ], + "title": "NumberExpression", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "IpExpression": { + "$ref": "#/definitions/RuleIpExpression" + } + }, + "required": [ + "IpExpression" + ], + "title": "IpExpression", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "VerdictExpression": { + "$ref": "#/definitions/RuleVerdictExpression" + } + }, + "required": [ + "VerdictExpression" + ], + "title": "VerdictExpression", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "DmarcExpression": { + "$ref": "#/definitions/RuleDmarcExpression" + } + }, + "required": [ + "DmarcExpression" + ], + "title": "DmarcExpression", + "type": "object" + } + ] + }, + "RuleDmarcExpression": { + "additionalProperties": false, + "properties": { + "Operator": { + "$ref": "#/definitions/RuleDmarcOperator" + }, + "Values": { + "items": { + "$ref": "#/definitions/RuleDmarcPolicy" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Operator", + "Values" + ], + "type": "object" + }, + "RuleDmarcOperator": { + "enum": [ + "EQUALS", + "NOT_EQUALS" + ], + "type": "string" + }, + "RuleDmarcPolicy": { + "enum": [ + "NONE", + "QUARANTINE", + "REJECT" + ], + "type": "string" + }, + "RuleIpEmailAttribute": { + "enum": [ + "SOURCE_IP" + ], + "type": "string" + }, + "RuleIpExpression": { + "additionalProperties": false, + "properties": { + "Evaluate": { + "$ref": "#/definitions/RuleIpToEvaluate" + }, + "Operator": { + "$ref": "#/definitions/RuleIpOperator" + }, + "Values": { + "items": { + "maxLength": 43, + "minLength": 1, + "pattern": "^(([0-9]|.|:|/)*)$", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Evaluate", + "Operator", + "Values" + ], + "type": "object" + }, + "RuleIpOperator": { + "enum": [ + "CIDR_MATCHES", + "NOT_CIDR_MATCHES" + ], + "type": "string" + }, + "RuleIpToEvaluate": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Attribute": { + "$ref": "#/definitions/RuleIpEmailAttribute" + } + }, + "required": [ + "Attribute" + ], + "title": "Attribute", + "type": "object" + } + ] + }, + "RuleNumberEmailAttribute": { + "enum": [ + "MESSAGE_SIZE" + ], + "type": "string" + }, + "RuleNumberExpression": { + "additionalProperties": false, + "properties": { + "Evaluate": { + "$ref": "#/definitions/RuleNumberToEvaluate" + }, + "Operator": { + "$ref": "#/definitions/RuleNumberOperator" + }, + "Value": { + "type": "number" + } + }, + "required": [ + "Evaluate", + "Operator", + "Value" + ], + "type": "object" + }, + "RuleNumberOperator": { + "enum": [ + "EQUALS", + "NOT_EQUALS", + "LESS_THAN", + "GREATER_THAN", + "LESS_THAN_OR_EQUAL", + "GREATER_THAN_OR_EQUAL" + ], + "type": "string" + }, + "RuleNumberToEvaluate": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Attribute": { + "$ref": "#/definitions/RuleNumberEmailAttribute" + } + }, + "required": [ + "Attribute" + ], + "title": "Attribute", + "type": "object" + } + ] + }, + "RuleStringEmailAttribute": { + "enum": [ + "MAIL_FROM", + "HELO", + "RECIPIENT", + "SENDER", + "FROM", + "SUBJECT", + "TO", + "CC" + ], + "type": "string" + }, + "RuleStringExpression": { + "additionalProperties": false, + "properties": { + "Evaluate": { + "$ref": "#/definitions/RuleStringToEvaluate" + }, + "Operator": { + "$ref": "#/definitions/RuleStringOperator" + }, + "Values": { + "items": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Evaluate", + "Operator", + "Values" + ], + "type": "object" + }, + "RuleStringOperator": { + "enum": [ + "EQUALS", + "NOT_EQUALS", + "STARTS_WITH", + "ENDS_WITH", + "CONTAINS" + ], + "type": "string" + }, + "RuleStringToEvaluate": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Attribute": { + "$ref": "#/definitions/RuleStringEmailAttribute" + } + }, + "required": [ + "Attribute" + ], + "title": "Attribute", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "MimeHeaderAttribute": { + "pattern": "^X-[a-zA-Z0-9-]{1,256}$", + "type": "string" + } + }, + "required": [ + "MimeHeaderAttribute" + ], + "title": "MimeHeaderAttribute", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Analysis": { + "$ref": "#/definitions/Analysis" + } + }, + "required": [ + "Analysis" + ], + "title": "Analysis", + "type": "object" + } + ] + }, + "RuleVerdict": { + "enum": [ + "PASS", + "FAIL", + "GRAY", + "PROCESSING_FAILED" + ], + "type": "string" + }, + "RuleVerdictAttribute": { + "enum": [ + "SPF", + "DKIM" + ], + "type": "string" + }, + "RuleVerdictExpression": { + "additionalProperties": false, + "properties": { + "Evaluate": { + "$ref": "#/definitions/RuleVerdictToEvaluate" + }, + "Operator": { + "$ref": "#/definitions/RuleVerdictOperator" + }, + "Values": { + "items": { + "$ref": "#/definitions/RuleVerdict" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Evaluate", + "Operator", + "Values" + ], + "type": "object" + }, + "RuleVerdictOperator": { + "enum": [ + "EQUALS", + "NOT_EQUALS" + ], + "type": "string" + }, + "RuleVerdictToEvaluate": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Attribute": { + "$ref": "#/definitions/RuleVerdictAttribute" + } + }, + "required": [ + "Attribute" + ], + "title": "Attribute", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Analysis": { + "$ref": "#/definitions/Analysis" + } + }, + "required": [ + "Analysis" + ], + "title": "Analysis", + "type": "object" + } + ] + }, + "S3Action": { + "additionalProperties": false, + "properties": { + "ActionFailurePolicy": { + "$ref": "#/definitions/ActionFailurePolicy" + }, + "RoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^[a-zA-Z0-9:_/+=,@.#-]+$", + "type": "string" + }, + "S3Bucket": { + "maxLength": 62, + "minLength": 1, + "pattern": "^[a-zA-Z0-9.-]+$", + "type": "string" + }, + "S3Prefix": { + "maxLength": 62, + "minLength": 1, + "pattern": "^[a-zA-Z0-9!_.*'()/-]+$", + "type": "string" + }, + "S3SseKmsKeyId": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^[a-zA-Z0-9-:/]+$", + "type": "string" + } + }, + "required": [ + "RoleArn", + "S3Bucket" + ], + "type": "object" + }, + "SendAction": { + "additionalProperties": false, + "properties": { + "ActionFailurePolicy": { + "$ref": "#/definitions/ActionFailurePolicy" + }, + "RoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^[a-zA-Z0-9:_/+=,@.#-]+$", + "type": "string" + } + }, + "required": [ + "RoleArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::SES::MailManagerRuleSet Resource Type", + "handlers": { + "create": { + "permissions": [ + "ses:TagResource", + "ses:ListTagsForResource", + "ses:GetRuleSet", + "ses:CreateRuleSet" + ] + }, + "delete": { + "permissions": [ + "ses:GetRuleSet", + "ses:DeleteRuleSet" + ] + }, + "list": { + "permissions": [ + "ses:ListRuleSets" + ] + }, + "read": { + "permissions": [ + "ses:ListTagsForResource", + "ses:GetRuleSet" + ] + }, + "update": { + "permissions": [ + "ses:TagResource", + "ses:UntagResource", + "ses:ListTagsForResource", + "ses:GetRuleSet", + "ses:UpdateRuleSet" + ] + } + }, + "primaryIdentifier": [ + "/properties/RuleSetId" + ], + "properties": { + "RuleSetArn": { + "type": "string" + }, + "RuleSetId": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "RuleSetName": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_.-]+$", + "type": "string" + }, + "Rules": { + "items": { + "$ref": "#/definitions/Rule" + }, + "maxItems": 40, + "minItems": 0, + "type": "array" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/RuleSetArn", + "/properties/RuleSetId" + ], + "required": [ + "Rules" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses-mailmanager", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ses:TagResource", + "ses:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SES::MailManagerRuleSet" +} diff --git a/src/schema/aws-ses-mailmanagertrafficpolicy.json b/src/schema/aws-ses-mailmanagertrafficpolicy.json index 5444782e..91240e82 100644 --- a/src/schema/aws-ses-mailmanagertrafficpolicy.json +++ b/src/schema/aws-ses-mailmanagertrafficpolicy.json @@ -1,435 +1,509 @@ -{ - "additionalProperties": false, - "definitions": { - "AcceptAction": { - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "IngressAnalysis": { - "additionalProperties": false, - "properties": { - "Analyzer": { - "pattern": "^[a-zA-Z0-9:_/+=,@.#-]+$", - "type": "string" - }, - "ResultField": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[\\sa-zA-Z0-9_]+$", - "type": "string" - } - }, - "required": [ - "Analyzer", - "ResultField" - ], - "type": "object" - }, - "IngressBooleanExpression": { - "additionalProperties": false, - "properties": { - "Evaluate": { - "$ref": "#/definitions/IngressBooleanToEvaluate" - }, - "Operator": { - "$ref": "#/definitions/IngressBooleanOperator" - } - }, - "required": [ - "Evaluate", - "Operator" - ], - "type": "object" - }, - "IngressBooleanOperator": { - "enum": [ - "IS_TRUE", - "IS_FALSE" - ], - "type": "string" - }, - "IngressBooleanToEvaluate": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Analysis": { - "$ref": "#/definitions/IngressAnalysis" - } - }, - "required": [ - "Analysis" - ], - "title": "Analysis", - "type": "object" - } - ] - }, - "IngressIpOperator": { - "enum": [ - "CIDR_MATCHES", - "NOT_CIDR_MATCHES" - ], - "type": "string" - }, - "IngressIpToEvaluate": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Attribute": { - "$ref": "#/definitions/IngressIpv4Attribute" - } - }, - "required": [ - "Attribute" - ], - "title": "Attribute", - "type": "object" - } - ] - }, - "IngressIpv4Attribute": { - "enum": [ - "SENDER_IP" - ], - "type": "string" - }, - "IngressIpv4Expression": { - "additionalProperties": false, - "properties": { - "Evaluate": { - "$ref": "#/definitions/IngressIpToEvaluate" - }, - "Operator": { - "$ref": "#/definitions/IngressIpOperator" - }, - "Values": { - "items": { - "pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/([0-9]|[12][0-9]|3[0-2])$", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "Evaluate", - "Operator", - "Values" - ], - "type": "object" - }, - "IngressStringEmailAttribute": { - "enum": [ - "RECIPIENT" - ], - "type": "string" - }, - "IngressStringExpression": { - "additionalProperties": false, - "properties": { - "Evaluate": { - "$ref": "#/definitions/IngressStringToEvaluate" - }, - "Operator": { - "$ref": "#/definitions/IngressStringOperator" - }, - "Values": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "Evaluate", - "Operator", - "Values" - ], - "type": "object" - }, - "IngressStringOperator": { - "enum": [ - "EQUALS", - "NOT_EQUALS", - "STARTS_WITH", - "ENDS_WITH", - "CONTAINS" - ], - "type": "string" - }, - "IngressStringToEvaluate": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Attribute": { - "$ref": "#/definitions/IngressStringEmailAttribute" - } - }, - "required": [ - "Attribute" - ], - "title": "Attribute", - "type": "object" - } - ] - }, - "IngressTlsAttribute": { - "enum": [ - "TLS_PROTOCOL" - ], - "type": "string" - }, - "IngressTlsProtocolAttribute": { - "enum": [ - "TLS1_2", - "TLS1_3" - ], - "type": "string" - }, - "IngressTlsProtocolExpression": { - "additionalProperties": false, - "properties": { - "Evaluate": { - "$ref": "#/definitions/IngressTlsProtocolToEvaluate" - }, - "Operator": { - "$ref": "#/definitions/IngressTlsProtocolOperator" - }, - "Value": { - "$ref": "#/definitions/IngressTlsProtocolAttribute" - } - }, - "required": [ - "Evaluate", - "Operator", - "Value" - ], - "type": "object" - }, - "IngressTlsProtocolOperator": { - "enum": [ - "MINIMUM_TLS_VERSION", - "IS" - ], - "type": "string" - }, - "IngressTlsProtocolToEvaluate": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Attribute": { - "$ref": "#/definitions/IngressTlsAttribute" - } - }, - "required": [ - "Attribute" - ], - "title": "Attribute", - "type": "object" - } - ] - }, - "PolicyCondition": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "StringExpression": { - "$ref": "#/definitions/IngressStringExpression" - } - }, - "required": [ - "StringExpression" - ], - "title": "StringExpression", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "IpExpression": { - "$ref": "#/definitions/IngressIpv4Expression" - } - }, - "required": [ - "IpExpression" - ], - "title": "IpExpression", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "TlsExpression": { - "$ref": "#/definitions/IngressTlsProtocolExpression" - } - }, - "required": [ - "TlsExpression" - ], - "title": "TlsExpression", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "BooleanExpression": { - "$ref": "#/definitions/IngressBooleanExpression" - } - }, - "required": [ - "BooleanExpression" - ], - "title": "BooleanExpression", - "type": "object" - } - ] - }, - "PolicyStatement": { - "additionalProperties": false, - "properties": { - "Action": { - "$ref": "#/definitions/AcceptAction" - }, - "Conditions": { - "items": { - "$ref": "#/definitions/PolicyCondition" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Action", - "Conditions" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::SES::MailManagerTrafficPolicy Resource Type", - "handlers": { - "create": { - "permissions": [ - "ses:TagResource", - "ses:ListTagsForResource", - "ses:GetTrafficPolicy", - "ses:CreateTrafficPolicy" - ] - }, - "delete": { - "permissions": [ - "ses:GetTrafficPolicy", - "ses:DeleteTrafficPolicy" - ] - }, - "list": { - "permissions": [ - "ses:ListTrafficPolicies" - ] - }, - "read": { - "permissions": [ - "ses:ListTagsForResource", - "ses:GetTrafficPolicy" - ] - }, - "update": { - "permissions": [ - "ses:TagResource", - "ses:UntagResource", - "ses:ListTagsForResource", - "ses:GetTrafficPolicy", - "ses:UpdateTrafficPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/TrafficPolicyId" - ], - "properties": { - "DefaultAction": { - "$ref": "#/definitions/AcceptAction" - }, - "MaxMessageSizeBytes": { - "minimum": 1, - "type": "number" - }, - "PolicyStatements": { - "items": { - "$ref": "#/definitions/PolicyStatement" - }, - "type": "array" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TrafficPolicyArn": { - "type": "string" - }, - "TrafficPolicyId": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "TrafficPolicyName": { - "maxLength": 63, - "minLength": 3, - "pattern": "^[A-Za-z0-9_\\-]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/TrafficPolicyArn", - "/properties/TrafficPolicyId" - ], - "required": [ - "DefaultAction", - "PolicyStatements" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses-mailmanager", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ses:TagResource", - "ses:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SES::MailManagerTrafficPolicy" -} +{ + "additionalProperties": false, + "definitions": { + "AcceptAction": { + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "IngressAnalysis": { + "additionalProperties": false, + "properties": { + "Analyzer": { + "pattern": "^[a-zA-Z0-9:_/+=,@.#-]+$", + "type": "string" + }, + "ResultField": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(addon\\.)?[\\sa-zA-Z0-9_]+$", + "type": "string" + } + }, + "required": [ + "Analyzer", + "ResultField" + ], + "type": "object" + }, + "IngressBooleanExpression": { + "additionalProperties": false, + "properties": { + "Evaluate": { + "$ref": "#/definitions/IngressBooleanToEvaluate" + }, + "Operator": { + "$ref": "#/definitions/IngressBooleanOperator" + } + }, + "required": [ + "Evaluate", + "Operator" + ], + "type": "object" + }, + "IngressBooleanOperator": { + "enum": [ + "IS_TRUE", + "IS_FALSE" + ], + "type": "string" + }, + "IngressBooleanToEvaluate": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Analysis": { + "$ref": "#/definitions/IngressAnalysis" + } + }, + "required": [ + "Analysis" + ], + "title": "Analysis", + "type": "object" + } + ] + }, + "IngressIpOperator": { + "enum": [ + "CIDR_MATCHES", + "NOT_CIDR_MATCHES" + ], + "type": "string" + }, + "IngressIpToEvaluate": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Attribute": { + "$ref": "#/definitions/IngressIpv4Attribute" + } + }, + "required": [ + "Attribute" + ], + "title": "Attribute", + "type": "object" + } + ] + }, + "IngressIpv4Attribute": { + "enum": [ + "SENDER_IP" + ], + "type": "string" + }, + "IngressIpv4Expression": { + "additionalProperties": false, + "properties": { + "Evaluate": { + "$ref": "#/definitions/IngressIpToEvaluate" + }, + "Operator": { + "$ref": "#/definitions/IngressIpOperator" + }, + "Values": { + "items": { + "pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/([0-9]|[12][0-9]|3[0-2])$", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Evaluate", + "Operator", + "Values" + ], + "type": "object" + }, + "IngressIpv6Attribute": { + "enum": [ + "SENDER_IPV6" + ], + "type": "string" + }, + "IngressIpv6Expression": { + "additionalProperties": false, + "properties": { + "Evaluate": { + "$ref": "#/definitions/IngressIpv6ToEvaluate" + }, + "Operator": { + "$ref": "#/definitions/IngressIpOperator" + }, + "Values": { + "items": { + "maxLength": 49, + "pattern": "^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9])$", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Evaluate", + "Operator", + "Values" + ], + "type": "object" + }, + "IngressIpv6ToEvaluate": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Attribute": { + "$ref": "#/definitions/IngressIpv6Attribute" + } + }, + "required": [ + "Attribute" + ], + "title": "Attribute", + "type": "object" + } + ] + }, + "IngressStringEmailAttribute": { + "enum": [ + "RECIPIENT" + ], + "type": "string" + }, + "IngressStringExpression": { + "additionalProperties": false, + "properties": { + "Evaluate": { + "$ref": "#/definitions/IngressStringToEvaluate" + }, + "Operator": { + "$ref": "#/definitions/IngressStringOperator" + }, + "Values": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "Evaluate", + "Operator", + "Values" + ], + "type": "object" + }, + "IngressStringOperator": { + "enum": [ + "EQUALS", + "NOT_EQUALS", + "STARTS_WITH", + "ENDS_WITH", + "CONTAINS" + ], + "type": "string" + }, + "IngressStringToEvaluate": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Attribute": { + "$ref": "#/definitions/IngressStringEmailAttribute" + } + }, + "required": [ + "Attribute" + ], + "title": "Attribute", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Analysis": { + "$ref": "#/definitions/IngressAnalysis" + } + }, + "required": [ + "Analysis" + ], + "title": "Analysis", + "type": "object" + } + ] + }, + "IngressTlsAttribute": { + "enum": [ + "TLS_PROTOCOL" + ], + "type": "string" + }, + "IngressTlsProtocolAttribute": { + "enum": [ + "TLS1_2", + "TLS1_3" + ], + "type": "string" + }, + "IngressTlsProtocolExpression": { + "additionalProperties": false, + "properties": { + "Evaluate": { + "$ref": "#/definitions/IngressTlsProtocolToEvaluate" + }, + "Operator": { + "$ref": "#/definitions/IngressTlsProtocolOperator" + }, + "Value": { + "$ref": "#/definitions/IngressTlsProtocolAttribute" + } + }, + "required": [ + "Evaluate", + "Operator", + "Value" + ], + "type": "object" + }, + "IngressTlsProtocolOperator": { + "enum": [ + "MINIMUM_TLS_VERSION", + "IS" + ], + "type": "string" + }, + "IngressTlsProtocolToEvaluate": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Attribute": { + "$ref": "#/definitions/IngressTlsAttribute" + } + }, + "required": [ + "Attribute" + ], + "title": "Attribute", + "type": "object" + } + ] + }, + "PolicyCondition": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "StringExpression": { + "$ref": "#/definitions/IngressStringExpression" + } + }, + "required": [ + "StringExpression" + ], + "title": "StringExpression", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "IpExpression": { + "$ref": "#/definitions/IngressIpv4Expression" + } + }, + "required": [ + "IpExpression" + ], + "title": "IpExpression", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Ipv6Expression": { + "$ref": "#/definitions/IngressIpv6Expression" + } + }, + "required": [ + "Ipv6Expression" + ], + "title": "Ipv6Expression", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "TlsExpression": { + "$ref": "#/definitions/IngressTlsProtocolExpression" + } + }, + "required": [ + "TlsExpression" + ], + "title": "TlsExpression", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "BooleanExpression": { + "$ref": "#/definitions/IngressBooleanExpression" + } + }, + "required": [ + "BooleanExpression" + ], + "title": "BooleanExpression", + "type": "object" + } + ] + }, + "PolicyStatement": { + "additionalProperties": false, + "properties": { + "Action": { + "$ref": "#/definitions/AcceptAction" + }, + "Conditions": { + "items": { + "$ref": "#/definitions/PolicyCondition" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Action", + "Conditions" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9/_\\+=\\.:@\\-]*$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::SES::MailManagerTrafficPolicy Resource Type", + "handlers": { + "create": { + "permissions": [ + "ses:TagResource", + "ses:ListTagsForResource", + "ses:GetTrafficPolicy", + "ses:CreateTrafficPolicy" + ] + }, + "delete": { + "permissions": [ + "ses:GetTrafficPolicy", + "ses:DeleteTrafficPolicy" + ] + }, + "list": { + "permissions": [ + "ses:ListTrafficPolicies" + ] + }, + "read": { + "permissions": [ + "ses:ListTagsForResource", + "ses:GetTrafficPolicy" + ] + }, + "update": { + "permissions": [ + "ses:TagResource", + "ses:UntagResource", + "ses:ListTagsForResource", + "ses:GetTrafficPolicy", + "ses:UpdateTrafficPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/TrafficPolicyId" + ], + "properties": { + "DefaultAction": { + "$ref": "#/definitions/AcceptAction" + }, + "MaxMessageSizeBytes": { + "minimum": 1, + "type": "number" + }, + "PolicyStatements": { + "items": { + "$ref": "#/definitions/PolicyStatement" + }, + "type": "array" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TrafficPolicyArn": { + "type": "string" + }, + "TrafficPolicyId": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "TrafficPolicyName": { + "maxLength": 63, + "minLength": 3, + "pattern": "^[A-Za-z0-9_\\-]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TrafficPolicyArn", + "/properties/TrafficPolicyId" + ], + "required": [ + "DefaultAction", + "PolicyStatements" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses-mailmanager", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ses:TagResource", + "ses:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SES::MailManagerTrafficPolicy" +} diff --git a/src/schema/aws-ses-receiptfilter.json b/src/schema/aws-ses-receiptfilter.json index 02d571e2..257d50fc 100644 --- a/src/schema/aws-ses-receiptfilter.json +++ b/src/schema/aws-ses-receiptfilter.json @@ -1,58 +1,58 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Filter" - ], - "definitions": { - "Filter": { - "additionalProperties": false, - "properties": { - "IpFilter": { - "$ref": "#/definitions/IpFilter" - }, - "Name": { - "type": "string" - } - }, - "required": [ - "IpFilter" - ], - "type": "object" - }, - "IpFilter": { - "additionalProperties": false, - "properties": { - "Cidr": { - "type": "string" - }, - "Policy": { - "type": "string" - } - }, - "required": [ - "Policy", - "Cidr" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SES::ReceiptFilter", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Filter": { - "$ref": "#/definitions/Filter" - }, - "Id": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Filter" - ], - "typeName": "AWS::SES::ReceiptFilter" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Filter" + ], + "definitions": { + "Filter": { + "additionalProperties": false, + "properties": { + "IpFilter": { + "$ref": "#/definitions/IpFilter" + }, + "Name": { + "type": "string" + } + }, + "required": [ + "IpFilter" + ], + "type": "object" + }, + "IpFilter": { + "additionalProperties": false, + "properties": { + "Cidr": { + "type": "string" + }, + "Policy": { + "type": "string" + } + }, + "required": [ + "Policy", + "Cidr" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SES::ReceiptFilter", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Filter": { + "$ref": "#/definitions/Filter" + }, + "Id": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Filter" + ], + "typeName": "AWS::SES::ReceiptFilter" +} diff --git a/src/schema/aws-ses-receiptrule.json b/src/schema/aws-ses-receiptrule.json index 4b8b70f1..1d22ee21 100644 --- a/src/schema/aws-ses-receiptrule.json +++ b/src/schema/aws-ses-receiptrule.json @@ -1,219 +1,238 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RuleSetName" - ], - "definitions": { - "Action": { - "additionalProperties": false, - "properties": { - "AddHeaderAction": { - "$ref": "#/definitions/AddHeaderAction" - }, - "BounceAction": { - "$ref": "#/definitions/BounceAction" - }, - "LambdaAction": { - "$ref": "#/definitions/LambdaAction" - }, - "S3Action": { - "$ref": "#/definitions/S3Action" - }, - "SNSAction": { - "$ref": "#/definitions/SNSAction" - }, - "StopAction": { - "$ref": "#/definitions/StopAction" - }, - "WorkmailAction": { - "$ref": "#/definitions/WorkmailAction" - } - }, - "type": "object" - }, - "AddHeaderAction": { - "additionalProperties": false, - "properties": { - "HeaderName": { - "type": "string" - }, - "HeaderValue": { - "type": "string" - } - }, - "required": [ - "HeaderValue", - "HeaderName" - ], - "type": "object" - }, - "BounceAction": { - "additionalProperties": false, - "properties": { - "Message": { - "type": "string" - }, - "Sender": { - "type": "string" - }, - "SmtpReplyCode": { - "type": "string" - }, - "StatusCode": { - "type": "string" - }, - "TopicArn": { - "type": "string" - } - }, - "required": [ - "Sender", - "SmtpReplyCode", - "Message" - ], - "type": "object" - }, - "LambdaAction": { - "additionalProperties": false, - "properties": { - "FunctionArn": { - "type": "string" - }, - "InvocationType": { - "type": "string" - }, - "TopicArn": { - "type": "string" - } - }, - "required": [ - "FunctionArn" - ], - "type": "object" - }, - "Rule": { - "additionalProperties": false, - "properties": { - "Actions": { - "items": { - "$ref": "#/definitions/Action" - }, - "type": "array", - "uniqueItems": false - }, - "Enabled": { - "type": "boolean" - }, - "Name": { - "type": "string" - }, - "Recipients": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ScanEnabled": { - "type": "boolean" - }, - "TlsPolicy": { - "type": "string" - } - }, - "type": "object" - }, - "S3Action": { - "additionalProperties": false, - "properties": { - "BucketName": { - "type": "string" - }, - "IamRoleArn": { - "type": "string" - }, - "KmsKeyArn": { - "type": "string" - }, - "ObjectKeyPrefix": { - "type": "string" - }, - "TopicArn": { - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "SNSAction": { - "additionalProperties": false, - "properties": { - "Encoding": { - "type": "string" - }, - "TopicArn": { - "type": "string" - } - }, - "type": "object" - }, - "StopAction": { - "additionalProperties": false, - "properties": { - "Scope": { - "type": "string" - }, - "TopicArn": { - "type": "string" - } - }, - "required": [ - "Scope" - ], - "type": "object" - }, - "WorkmailAction": { - "additionalProperties": false, - "properties": { - "OrganizationArn": { - "type": "string" - }, - "TopicArn": { - "type": "string" - } - }, - "required": [ - "OrganizationArn" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SES::ReceiptRule", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "After": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Rule": { - "$ref": "#/definitions/Rule" - }, - "RuleSetName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Rule", - "RuleSetName" - ], - "typeName": "AWS::SES::ReceiptRule" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RuleSetName" + ], + "definitions": { + "Action": { + "additionalProperties": false, + "properties": { + "AddHeaderAction": { + "$ref": "#/definitions/AddHeaderAction" + }, + "BounceAction": { + "$ref": "#/definitions/BounceAction" + }, + "ConnectAction": { + "$ref": "#/definitions/ConnectAction" + }, + "LambdaAction": { + "$ref": "#/definitions/LambdaAction" + }, + "S3Action": { + "$ref": "#/definitions/S3Action" + }, + "SNSAction": { + "$ref": "#/definitions/SNSAction" + }, + "StopAction": { + "$ref": "#/definitions/StopAction" + }, + "WorkmailAction": { + "$ref": "#/definitions/WorkmailAction" + } + }, + "type": "object" + }, + "AddHeaderAction": { + "additionalProperties": false, + "properties": { + "HeaderName": { + "type": "string" + }, + "HeaderValue": { + "type": "string" + } + }, + "required": [ + "HeaderValue", + "HeaderName" + ], + "type": "object" + }, + "BounceAction": { + "additionalProperties": false, + "properties": { + "Message": { + "type": "string" + }, + "Sender": { + "type": "string" + }, + "SmtpReplyCode": { + "type": "string" + }, + "StatusCode": { + "type": "string" + }, + "TopicArn": { + "type": "string" + } + }, + "required": [ + "Sender", + "SmtpReplyCode", + "Message" + ], + "type": "object" + }, + "ConnectAction": { + "additionalProperties": false, + "properties": { + "IAMRoleARN": { + "type": "string" + }, + "InstanceARN": { + "type": "string" + } + }, + "required": [ + "InstanceARN", + "IAMRoleARN" + ], + "type": "object" + }, + "LambdaAction": { + "additionalProperties": false, + "properties": { + "FunctionArn": { + "type": "string" + }, + "InvocationType": { + "type": "string" + }, + "TopicArn": { + "type": "string" + } + }, + "required": [ + "FunctionArn" + ], + "type": "object" + }, + "Rule": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "$ref": "#/definitions/Action" + }, + "type": "array", + "uniqueItems": false + }, + "Enabled": { + "type": "boolean" + }, + "Name": { + "type": "string" + }, + "Recipients": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ScanEnabled": { + "type": "boolean" + }, + "TlsPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "S3Action": { + "additionalProperties": false, + "properties": { + "BucketName": { + "type": "string" + }, + "IamRoleArn": { + "type": "string" + }, + "KmsKeyArn": { + "type": "string" + }, + "ObjectKeyPrefix": { + "type": "string" + }, + "TopicArn": { + "type": "string" + } + }, + "required": [ + "BucketName" + ], + "type": "object" + }, + "SNSAction": { + "additionalProperties": false, + "properties": { + "Encoding": { + "type": "string" + }, + "TopicArn": { + "type": "string" + } + }, + "type": "object" + }, + "StopAction": { + "additionalProperties": false, + "properties": { + "Scope": { + "type": "string" + }, + "TopicArn": { + "type": "string" + } + }, + "required": [ + "Scope" + ], + "type": "object" + }, + "WorkmailAction": { + "additionalProperties": false, + "properties": { + "OrganizationArn": { + "type": "string" + }, + "TopicArn": { + "type": "string" + } + }, + "required": [ + "OrganizationArn" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SES::ReceiptRule", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "After": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Rule": { + "$ref": "#/definitions/Rule" + }, + "RuleSetName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Rule", + "RuleSetName" + ], + "typeName": "AWS::SES::ReceiptRule" +} diff --git a/src/schema/aws-ses-receiptruleset.json b/src/schema/aws-ses-receiptruleset.json index e1b68a60..56467c64 100644 --- a/src/schema/aws-ses-receiptruleset.json +++ b/src/schema/aws-ses-receiptruleset.json @@ -1,22 +1,22 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RuleSetName" - ], - "description": "Resource Type definition for AWS::SES::ReceiptRuleSet", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "RuleSetName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "typeName": "AWS::SES::ReceiptRuleSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/RuleSetName" + ], + "description": "Resource Type definition for AWS::SES::ReceiptRuleSet", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "RuleSetName": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "typeName": "AWS::SES::ReceiptRuleSet" +} diff --git a/src/schema/aws-ses-template.json b/src/schema/aws-ses-template.json index 74ccd17a..31f86c27 100644 --- a/src/schema/aws-ses-template.json +++ b/src/schema/aws-ses-template.json @@ -1,90 +1,90 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Template/TemplateName" - ], - "definitions": { - "Template": { - "additionalProperties": false, - "description": "The content of the email, composed of a subject line, an HTML part, and a text-only part", - "properties": { - "HtmlPart": { - "description": "The HTML body of the email.", - "type": "string" - }, - "SubjectPart": { - "description": "The subject line of the email.", - "type": "string" - }, - "TemplateName": { - "description": "The name of the template.", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]{1,64}$", - "type": "string" - }, - "TextPart": { - "description": "The email body that is visible to recipients whose email clients do not display HTML content.", - "type": "string" - } - }, - "required": [ - "SubjectPart" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SES::Template", - "handlers": { - "create": { - "permissions": [ - "ses:CreateEmailTemplate", - "ses:GetEmailTemplate", - "ses:CreateTemplate", - "ses:GetTemplate" - ] - }, - "delete": { - "permissions": [ - "ses:DeleteEmailTemplate", - "ses:DeleteTemplate" - ] - }, - "list": { - "permissions": [ - "ses:ListEmailTemplates", - "ses:ListTemplates" - ] - }, - "read": { - "permissions": [ - "ses:GetEmailTemplate", - "ses:GetTemplate" - ] - }, - "update": { - "permissions": [ - "ses:GetEmailTemplate", - "ses:UpdateEmailTemplate", - "ses:GetTemplate", - "ses:UpdateTemplate" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "Template": { - "$ref": "#/definitions/Template" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses.git", - "typeName": "AWS::SES::Template" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Template/TemplateName" + ], + "definitions": { + "Template": { + "additionalProperties": false, + "description": "The content of the email, composed of a subject line, an HTML part, and a text-only part", + "properties": { + "HtmlPart": { + "description": "The HTML body of the email.", + "type": "string" + }, + "SubjectPart": { + "description": "The subject line of the email.", + "type": "string" + }, + "TemplateName": { + "description": "The name of the template.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]{1,64}$", + "type": "string" + }, + "TextPart": { + "description": "The email body that is visible to recipients whose email clients do not display HTML content.", + "type": "string" + } + }, + "required": [ + "SubjectPart" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SES::Template", + "handlers": { + "create": { + "permissions": [ + "ses:CreateEmailTemplate", + "ses:GetEmailTemplate", + "ses:CreateTemplate", + "ses:GetTemplate" + ] + }, + "delete": { + "permissions": [ + "ses:DeleteEmailTemplate", + "ses:DeleteTemplate" + ] + }, + "list": { + "permissions": [ + "ses:ListEmailTemplates", + "ses:ListTemplates" + ] + }, + "read": { + "permissions": [ + "ses:GetEmailTemplate", + "ses:GetTemplate" + ] + }, + "update": { + "permissions": [ + "ses:GetEmailTemplate", + "ses:UpdateEmailTemplate", + "ses:GetTemplate", + "ses:UpdateTemplate" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "Template": { + "$ref": "#/definitions/Template" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses.git", + "typeName": "AWS::SES::Template" +} diff --git a/src/schema/aws-ses-vdmattributes.json b/src/schema/aws-ses-vdmattributes.json index 2e56f8ee..121dc1da 100644 --- a/src/schema/aws-ses-vdmattributes.json +++ b/src/schema/aws-ses-vdmattributes.json @@ -1,81 +1,81 @@ -{ - "additionalProperties": false, - "definitions": { - "DashboardAttributes": { - "additionalProperties": false, - "description": "Preferences regarding the Dashboard feature.", - "properties": { - "EngagementMetrics": { - "description": "Whether emails sent from this account have engagement tracking enabled.", - "pattern": "ENABLED|DISABLED", - "type": "string" - } - }, - "type": "object" - }, - "GuardianAttributes": { - "additionalProperties": false, - "description": "Preferences regarding the Guardian feature.", - "properties": { - "OptimizedSharedDelivery": { - "description": "Whether emails sent from this account have optimized delivery algorithm enabled.", - "pattern": "ENABLED|DISABLED", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SES::VdmAttributes", - "handlers": { - "create": { - "permissions": [ - "ses:PutAccountVdmAttributes", - "ses:GetAccount" - ] - }, - "delete": { - "permissions": [ - "ses:PutAccountVdmAttributes", - "ses:GetAccount" - ] - }, - "read": { - "permissions": [ - "ses:GetAccount" - ] - }, - "update": { - "permissions": [ - "ses:PutAccountVdmAttributes", - "ses:GetAccount" - ] - } - }, - "primaryIdentifier": [ - "/properties/VdmAttributesResourceId" - ], - "properties": { - "DashboardAttributes": { - "$ref": "#/definitions/DashboardAttributes" - }, - "GuardianAttributes": { - "$ref": "#/definitions/GuardianAttributes" - }, - "VdmAttributesResourceId": { - "description": "Unique identifier for this resource", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/VdmAttributesResourceId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::SES::VdmAttributes" -} +{ + "additionalProperties": false, + "definitions": { + "DashboardAttributes": { + "additionalProperties": false, + "description": "Preferences regarding the Dashboard feature.", + "properties": { + "EngagementMetrics": { + "description": "Whether emails sent from this account have engagement tracking enabled.", + "pattern": "ENABLED|DISABLED", + "type": "string" + } + }, + "type": "object" + }, + "GuardianAttributes": { + "additionalProperties": false, + "description": "Preferences regarding the Guardian feature.", + "properties": { + "OptimizedSharedDelivery": { + "description": "Whether emails sent from this account have optimized delivery algorithm enabled.", + "pattern": "ENABLED|DISABLED", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SES::VdmAttributes", + "handlers": { + "create": { + "permissions": [ + "ses:PutAccountVdmAttributes", + "ses:GetAccount" + ] + }, + "delete": { + "permissions": [ + "ses:PutAccountVdmAttributes", + "ses:GetAccount" + ] + }, + "read": { + "permissions": [ + "ses:GetAccount" + ] + }, + "update": { + "permissions": [ + "ses:PutAccountVdmAttributes", + "ses:GetAccount" + ] + } + }, + "primaryIdentifier": [ + "/properties/VdmAttributesResourceId" + ], + "properties": { + "DashboardAttributes": { + "$ref": "#/definitions/DashboardAttributes" + }, + "GuardianAttributes": { + "$ref": "#/definitions/GuardianAttributes" + }, + "VdmAttributesResourceId": { + "description": "Unique identifier for this resource", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/VdmAttributesResourceId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ses.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::SES::VdmAttributes" +} diff --git a/src/schema/aws-shield-drtaccess.json b/src/schema/aws-shield-drtaccess.json index 42b159fb..1c8d29cc 100644 --- a/src/schema/aws-shield-drtaccess.json +++ b/src/schema/aws-shield-drtaccess.json @@ -1,92 +1,92 @@ -{ - "additionalProperties": false, - "description": "Config the role and list of Amazon S3 log buckets used by the Shield Response Team (SRT) to access your AWS account while assisting with attack mitigation.", - "handlers": { - "create": { - "permissions": [ - "shield:DescribeDRTAccess", - "shield:AssociateDRTLogBucket", - "shield:AssociateDRTRole", - "iam:PassRole", - "iam:GetRole", - "iam:ListAttachedRolePolicies", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy" - ] - }, - "delete": { - "permissions": [ - "shield:DescribeDRTAccess", - "shield:DisassociateDRTLogBucket", - "shield:DisassociateDRTRole", - "iam:PassRole", - "iam:GetRole", - "iam:ListAttachedRolePolicies", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy", - "s3:DeleteBucketPolicy" - ] - }, - "list": { - "permissions": [ - "shield:DescribeDRTAccess" - ] - }, - "read": { - "permissions": [ - "shield:DescribeDRTAccess" - ] - }, - "update": { - "permissions": [ - "shield:DescribeDRTAccess", - "shield:AssociateDRTLogBucket", - "shield:AssociateDRTRole", - "shield:DisassociateDRTLogBucket", - "shield:DisassociateDRTRole", - "iam:PassRole", - "iam:GetRole", - "iam:ListAttachedRolePolicies", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy", - "s3:DeleteBucketPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/AccountId" - ], - "properties": { - "AccountId": { - "type": "string" - }, - "LogBucketList": { - "description": "Authorizes the Shield Response Team (SRT) to access the specified Amazon S3 bucket containing log data such as Application Load Balancer access logs, CloudFront logs, or logs from third party sources. You can associate up to 10 Amazon S3 buckets with your subscription.", - "insertionOrder": false, - "items": { - "maxLength": 63, - "minLength": 3, - "type": "string" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "RoleArn": { - "description": "Authorizes the Shield Response Team (SRT) using the specified role, to access your AWS account to assist with DDoS attack mitigation during potential attacks. This enables the SRT to inspect your AWS WAF configuration and create or update AWS WAF rules and web ACLs.", - "maxLength": 2048, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AccountId" - ], - "required": [ - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-shield.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Shield::DRTAccess" -} +{ + "additionalProperties": false, + "description": "Config the role and list of Amazon S3 log buckets used by the Shield Response Team (SRT) to access your AWS account while assisting with attack mitigation.", + "handlers": { + "create": { + "permissions": [ + "shield:DescribeDRTAccess", + "shield:AssociateDRTLogBucket", + "shield:AssociateDRTRole", + "iam:PassRole", + "iam:GetRole", + "iam:ListAttachedRolePolicies", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy" + ] + }, + "delete": { + "permissions": [ + "shield:DescribeDRTAccess", + "shield:DisassociateDRTLogBucket", + "shield:DisassociateDRTRole", + "iam:PassRole", + "iam:GetRole", + "iam:ListAttachedRolePolicies", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "s3:DeleteBucketPolicy" + ] + }, + "list": { + "permissions": [ + "shield:DescribeDRTAccess" + ] + }, + "read": { + "permissions": [ + "shield:DescribeDRTAccess" + ] + }, + "update": { + "permissions": [ + "shield:DescribeDRTAccess", + "shield:AssociateDRTLogBucket", + "shield:AssociateDRTRole", + "shield:DisassociateDRTLogBucket", + "shield:DisassociateDRTRole", + "iam:PassRole", + "iam:GetRole", + "iam:ListAttachedRolePolicies", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "s3:DeleteBucketPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccountId" + ], + "properties": { + "AccountId": { + "type": "string" + }, + "LogBucketList": { + "description": "Authorizes the Shield Response Team (SRT) to access the specified Amazon S3 bucket containing log data such as Application Load Balancer access logs, CloudFront logs, or logs from third party sources. You can associate up to 10 Amazon S3 buckets with your subscription.", + "insertionOrder": false, + "items": { + "maxLength": 63, + "minLength": 3, + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "RoleArn": { + "description": "Authorizes the Shield Response Team (SRT) using the specified role, to access your AWS account to assist with DDoS attack mitigation during potential attacks. This enables the SRT to inspect your AWS WAF configuration and create or update AWS WAF rules and web ACLs.", + "maxLength": 2048, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AccountId" + ], + "required": [ + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-shield.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Shield::DRTAccess" +} diff --git a/src/schema/aws-shield-proactiveengagement.json b/src/schema/aws-shield-proactiveengagement.json index 26d824c7..eee5cae2 100644 --- a/src/schema/aws-shield-proactiveengagement.json +++ b/src/schema/aws-shield-proactiveengagement.json @@ -1,115 +1,115 @@ -{ - "additionalProperties": false, - "definitions": { - "EmergencyContact": { - "additionalProperties": false, - "description": "An emergency contact is used by Shield Response Team (SRT) to contact you for escalations to the SRT and to initiate proactive customer support. An emergency contact requires an email address.", - "properties": { - "ContactNotes": { - "description": "Additional notes regarding the contact.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^[\\w\\s\\.\\-,:/()+@]*$", - "type": "string" - }, - "EmailAddress": { - "description": "The email address for the contact.", - "maxLength": 150, - "minLength": 1, - "pattern": "^\\S+@\\S+\\.\\S+$", - "type": "string" - }, - "PhoneNumber": { - "description": "The phone number for the contact", - "maxLength": 16, - "minLength": 1, - "pattern": "^\\+[1-9]\\d{1,14}$", - "type": "string" - } - }, - "required": [ - "EmailAddress" - ], - "type": "object" - } - }, - "description": "Authorizes the Shield Response Team (SRT) to use email and phone to notify contacts about escalations to the SRT and to initiate proactive customer support.", - "handlers": { - "create": { - "permissions": [ - "shield:DescribeSubscription", - "shield:DescribeEmergencyContactSettings", - "shield:AssociateProactiveEngagementDetails", - "shield:UpdateEmergencyContactSettings", - "shield:EnableProactiveEngagement" - ] - }, - "delete": { - "permissions": [ - "shield:DescribeSubscription", - "shield:DescribeEmergencyContactSettings", - "shield:UpdateEmergencyContactSettings", - "shield:DisableProactiveEngagement" - ] - }, - "list": { - "permissions": [ - "shield:DescribeSubscription", - "shield:DescribeEmergencyContactSettings" - ] - }, - "read": { - "permissions": [ - "shield:DescribeSubscription", - "shield:DescribeEmergencyContactSettings" - ] - }, - "update": { - "permissions": [ - "shield:DescribeSubscription", - "shield:DescribeEmergencyContactSettings", - "shield:UpdateEmergencyContactSettings", - "shield:EnableProactiveEngagement", - "shield:DisableProactiveEngagement" - ] - } - }, - "primaryIdentifier": [ - "/properties/AccountId" - ], - "properties": { - "AccountId": { - "type": "string" - }, - "EmergencyContactList": { - "description": "A list of email addresses and phone numbers that the Shield Response Team (SRT) can use to contact you for escalations to the SRT and to initiate proactive customer support.\nTo enable proactive engagement, the contact list must include at least one phone number.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/EmergencyContact" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "ProactiveEngagementStatus": { - "description": "If `ENABLED`, the Shield Response Team (SRT) will use email and phone to notify contacts about escalations to the SRT and to initiate proactive customer support.\nIf `DISABLED`, the SRT will not proactively notify contacts about escalations or to initiate proactive customer support.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AccountId" - ], - "required": [ - "ProactiveEngagementStatus", - "EmergencyContactList" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-shield.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Shield::ProactiveEngagement" -} +{ + "additionalProperties": false, + "definitions": { + "EmergencyContact": { + "additionalProperties": false, + "description": "An emergency contact is used by Shield Response Team (SRT) to contact you for escalations to the SRT and to initiate proactive customer support. An emergency contact requires an email address.", + "properties": { + "ContactNotes": { + "description": "Additional notes regarding the contact.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[\\w\\s\\.\\-,:/()+@]*$", + "type": "string" + }, + "EmailAddress": { + "description": "The email address for the contact.", + "maxLength": 150, + "minLength": 1, + "pattern": "^\\S+@\\S+\\.\\S+$", + "type": "string" + }, + "PhoneNumber": { + "description": "The phone number for the contact", + "maxLength": 16, + "minLength": 1, + "pattern": "^\\+[1-9]\\d{1,14}$", + "type": "string" + } + }, + "required": [ + "EmailAddress" + ], + "type": "object" + } + }, + "description": "Authorizes the Shield Response Team (SRT) to use email and phone to notify contacts about escalations to the SRT and to initiate proactive customer support.", + "handlers": { + "create": { + "permissions": [ + "shield:DescribeSubscription", + "shield:DescribeEmergencyContactSettings", + "shield:AssociateProactiveEngagementDetails", + "shield:UpdateEmergencyContactSettings", + "shield:EnableProactiveEngagement" + ] + }, + "delete": { + "permissions": [ + "shield:DescribeSubscription", + "shield:DescribeEmergencyContactSettings", + "shield:UpdateEmergencyContactSettings", + "shield:DisableProactiveEngagement" + ] + }, + "list": { + "permissions": [ + "shield:DescribeSubscription", + "shield:DescribeEmergencyContactSettings" + ] + }, + "read": { + "permissions": [ + "shield:DescribeSubscription", + "shield:DescribeEmergencyContactSettings" + ] + }, + "update": { + "permissions": [ + "shield:DescribeSubscription", + "shield:DescribeEmergencyContactSettings", + "shield:UpdateEmergencyContactSettings", + "shield:EnableProactiveEngagement", + "shield:DisableProactiveEngagement" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccountId" + ], + "properties": { + "AccountId": { + "type": "string" + }, + "EmergencyContactList": { + "description": "A list of email addresses and phone numbers that the Shield Response Team (SRT) can use to contact you for escalations to the SRT and to initiate proactive customer support.\nTo enable proactive engagement, the contact list must include at least one phone number.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/EmergencyContact" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "ProactiveEngagementStatus": { + "description": "If `ENABLED`, the Shield Response Team (SRT) will use email and phone to notify contacts about escalations to the SRT and to initiate proactive customer support.\nIf `DISABLED`, the SRT will not proactively notify contacts about escalations or to initiate proactive customer support.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AccountId" + ], + "required": [ + "ProactiveEngagementStatus", + "EmergencyContactList" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-shield.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Shield::ProactiveEngagement" +} diff --git a/src/schema/aws-shield-protection.json b/src/schema/aws-shield-protection.json index 6a2e0baa..a5dd648b 100644 --- a/src/schema/aws-shield-protection.json +++ b/src/schema/aws-shield-protection.json @@ -1,200 +1,207 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/ResourceArn" - ], - "definitions": { - "ApplicationLayerAutomaticResponseConfiguration": { - "additionalProperties": false, - "description": "The automatic application layer DDoS mitigation settings for a Protection. This configuration determines whether Shield Advanced automatically manages rules in the web ACL in order to respond to application layer events that Shield Advanced determines to be DDoS attacks.", - "properties": { - "Action": { - "description": "Specifies the action setting that Shield Advanced should use in the AWS WAF rules that it creates on behalf of the protected resource in response to DDoS attacks. You specify this as part of the configuration for the automatic application layer DDoS mitigation feature, when you enable or update automatic mitigation. Shield Advanced creates the AWS WAF rules in a Shield Advanced-managed rule group, inside the web ACL that you have associated with the resource.", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Count": { - "additionalProperties": false, - "description": "Specifies that Shield Advanced should configure its AWS WAF rules with the AWS WAF `Count` action.\nYou must specify exactly one action, either `Block` or `Count`.", - "type": "object" - } - }, - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Block": { - "additionalProperties": false, - "description": "Specifies that Shield Advanced should configure its AWS WAF rules with the AWS WAF `Block` action.\nYou must specify exactly one action, either `Block` or `Count`.", - "type": "object" - } - }, - "type": "object" - } - ], - "type": "object" - }, - "Status": { - "description": "Indicates whether automatic application layer DDoS mitigation is enabled for the protection.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - } - }, - "required": [ - "Action", - "Status" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A tag associated with an AWS resource. Tags are key:value pairs that you can use to categorize and manage your resources, for purposes like billing or other management. Typically, the tag key represents a category, such as \"environment\", and the tag value represents a specific value within that category, such as \"test,\" \"development,\" or \"production\". Or you might set the tag key to \"customer\" and the value to the customer name or ID. You can specify one or more tags to add to each AWS resource, up to 50 tags for a resource.", - "properties": { - "Key": { - "description": "Part of the key:value pair that defines a tag. You can use a tag key to describe a category of information, such as \"customer.\" Tag keys are case-sensitive.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "Part of the key:value pair that defines a tag. You can use a tag value to describe a specific value within a category, such as \"companyA\" or \"companyB.\" Tag values are case-sensitive.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Enables AWS Shield Advanced for a specific AWS resource. The resource can be an Amazon CloudFront distribution, Amazon Route 53 hosted zone, AWS Global Accelerator standard accelerator, Elastic IP Address, Application Load Balancer, or a Classic Load Balancer. You can protect Amazon EC2 instances and Network Load Balancers by association with protected Amazon EC2 Elastic IP addresses.", - "handlers": { - "create": { - "permissions": [ - "shield:CreateProtection", - "shield:DeleteProtection", - "shield:DescribeProtection", - "shield:ListProtections", - "shield:EnableApplicationLayerAutomaticResponse", - "shield:AssociateHealthCheck", - "shield:TagResource", - "ec2:DescribeAddresses", - "elasticloadbalancing:DescribeLoadBalancers", - "route53:GetHealthCheck", - "iam:GetRole", - "iam:CreateServiceLinkedRole", - "wafv2:GetWebACLForResource", - "wafv2:GetWebACL" - ] - }, - "delete": { - "permissions": [ - "shield:DeleteProtection", - "shield:UntagResource" - ] - }, - "list": { - "permissions": [ - "shield:ListProtections" - ] - }, - "read": { - "permissions": [ - "shield:DescribeProtection", - "shield:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "shield:DescribeProtection", - "shield:AssociateHealthCheck", - "shield:DisassociateHealthCheck", - "shield:EnableApplicationLayerAutomaticResponse", - "shield:UpdateApplicationLayerAutomaticResponse", - "shield:DisableApplicationLayerAutomaticResponse", - "shield:ListTagsForResource", - "shield:TagResource", - "shield:UntagResource", - "route53:GetHealthCheck", - "iam:GetRole", - "iam:CreateServiceLinkedRole", - "wafv2:GetWebACLForResource", - "wafv2:GetWebACL" - ] - } - }, - "primaryIdentifier": [ - "/properties/ProtectionArn" - ], - "properties": { - "ApplicationLayerAutomaticResponseConfiguration": { - "$ref": "#/definitions/ApplicationLayerAutomaticResponseConfiguration" - }, - "HealthCheckArns": { - "description": "The Amazon Resource Names (ARNs) of the health check to associate with the protection.", - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "maxItems": 1, - "type": "array" - }, - "Name": { - "description": "Friendly name for the Protection.", - "maxLength": 128, - "minLength": 1, - "pattern": "[ a-zA-Z0-9_\\.\\-]*", - "type": "string" - }, - "ProtectionArn": { - "description": "The ARN (Amazon Resource Name) of the protection.", - "type": "string" - }, - "ProtectionId": { - "description": "The unique identifier (ID) of the protection.", - "type": "string" - }, - "ResourceArn": { - "description": "The ARN (Amazon Resource Name) of the resource to be protected.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "One or more tag key-value pairs for the Protection object.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ProtectionId", - "/properties/ProtectionArn" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "Name", - "ResourceArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-shield.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags", - "taggable": true - }, - "typeName": "AWS::Shield::Protection" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/ResourceArn" + ], + "definitions": { + "ApplicationLayerAutomaticResponseConfiguration": { + "additionalProperties": false, + "description": "The automatic application layer DDoS mitigation settings for a Protection. This configuration determines whether Shield Advanced automatically manages rules in the web ACL in order to respond to application layer events that Shield Advanced determines to be DDoS attacks.", + "properties": { + "Action": { + "description": "Specifies the action setting that Shield Advanced should use in the AWS WAF rules that it creates on behalf of the protected resource in response to DDoS attacks. You specify this as part of the configuration for the automatic application layer DDoS mitigation feature, when you enable or update automatic mitigation. Shield Advanced creates the AWS WAF rules in a Shield Advanced-managed rule group, inside the web ACL that you have associated with the resource.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Count": { + "additionalProperties": false, + "description": "Specifies that Shield Advanced should configure its AWS WAF rules with the AWS WAF `Count` action.\nYou must specify exactly one action, either `Block` or `Count`.", + "type": "object" + } + }, + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Block": { + "additionalProperties": false, + "description": "Specifies that Shield Advanced should configure its AWS WAF rules with the AWS WAF `Block` action.\nYou must specify exactly one action, either `Block` or `Count`.", + "type": "object" + } + }, + "type": "object" + } + ], + "type": "object" + }, + "Status": { + "description": "Indicates whether automatic application layer DDoS mitigation is enabled for the protection.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "required": [ + "Action", + "Status" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A tag associated with an AWS resource. Tags are key:value pairs that you can use to categorize and manage your resources, for purposes like billing or other management. Typically, the tag key represents a category, such as \"environment\", and the tag value represents a specific value within that category, such as \"test,\" \"development,\" or \"production\". Or you might set the tag key to \"customer\" and the value to the customer name or ID. You can specify one or more tags to add to each AWS resource, up to 50 tags for a resource.", + "properties": { + "Key": { + "description": "Part of the key:value pair that defines a tag. You can use a tag key to describe a category of information, such as \"customer.\" Tag keys are case-sensitive.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Part of the key:value pair that defines a tag. You can use a tag value to describe a specific value within a category, such as \"companyA\" or \"companyB.\" Tag values are case-sensitive.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Enables AWS Shield Advanced for a specific AWS resource. The resource can be an Amazon CloudFront distribution, Amazon Route 53 hosted zone, AWS Global Accelerator standard accelerator, Elastic IP Address, Application Load Balancer, or a Classic Load Balancer. You can protect Amazon EC2 instances and Network Load Balancers by association with protected Amazon EC2 Elastic IP addresses.", + "handlers": { + "create": { + "permissions": [ + "shield:CreateProtection", + "shield:DeleteProtection", + "shield:DescribeProtection", + "shield:ListProtections", + "shield:EnableApplicationLayerAutomaticResponse", + "shield:AssociateHealthCheck", + "shield:TagResource", + "ec2:DescribeAddresses", + "elasticloadbalancing:DescribeLoadBalancers", + "route53:GetHealthCheck", + "iam:GetRole", + "iam:CreateServiceLinkedRole", + "wafv2:GetWebACLForResource", + "wafv2:GetWebACL" + ] + }, + "delete": { + "permissions": [ + "shield:DeleteProtection", + "shield:UntagResource" + ] + }, + "list": { + "permissions": [ + "shield:ListProtections" + ] + }, + "read": { + "permissions": [ + "shield:DescribeProtection", + "shield:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "shield:DescribeProtection", + "shield:AssociateHealthCheck", + "shield:DisassociateHealthCheck", + "shield:EnableApplicationLayerAutomaticResponse", + "shield:UpdateApplicationLayerAutomaticResponse", + "shield:DisableApplicationLayerAutomaticResponse", + "shield:ListTagsForResource", + "shield:TagResource", + "shield:UntagResource", + "route53:GetHealthCheck", + "iam:GetRole", + "iam:CreateServiceLinkedRole", + "wafv2:GetWebACLForResource", + "wafv2:GetWebACL" + ] + } + }, + "primaryIdentifier": [ + "/properties/ProtectionArn" + ], + "properties": { + "ApplicationLayerAutomaticResponseConfiguration": { + "$ref": "#/definitions/ApplicationLayerAutomaticResponseConfiguration" + }, + "HealthCheckArns": { + "description": "The Amazon Resource Names (ARNs) of the health check to associate with the protection.", + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "maxItems": 1, + "type": "array" + }, + "Name": { + "description": "Friendly name for the Protection.", + "maxLength": 128, + "minLength": 1, + "pattern": "[ a-zA-Z0-9_\\.\\-]*", + "type": "string" + }, + "ProtectionArn": { + "description": "The ARN (Amazon Resource Name) of the protection.", + "type": "string" + }, + "ProtectionId": { + "description": "The unique identifier (ID) of the protection.", + "type": "string" + }, + "ResourceArn": { + "description": "The ARN (Amazon Resource Name) of the resource to be protected.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "One or more tag key-value pairs for the Protection object.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ProtectionId", + "/properties/ProtectionArn" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "Name", + "ResourceArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-shield.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "shield:ListTagsForResource", + "shield:UntagResource", + "shield:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Shield::Protection" +} diff --git a/src/schema/aws-shield-protectiongroup.json b/src/schema/aws-shield-protectiongroup.json index 5df52c87..48637eb5 100644 --- a/src/schema/aws-shield-protectiongroup.json +++ b/src/schema/aws-shield-protectiongroup.json @@ -1,152 +1,154 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProtectionGroupId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A tag associated with an AWS resource. Tags are key:value pairs that you can use to categorize and manage your resources, for purposes like billing or other management. Typically, the tag key represents a category, such as \"environment\", and the tag value represents a specific value within that category, such as \"test,\" \"development,\" or \"production\". Or you might set the tag key to \"customer\" and the value to the customer name or ID. You can specify one or more tags to add to each AWS resource, up to 50 tags for a resource.", - "properties": { - "Key": { - "description": "Part of the key:value pair that defines a tag. You can use a tag key to describe a category of information, such as \"customer.\" Tag keys are case-sensitive.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "Part of the key:value pair that defines a tag. You can use a tag value to describe a specific value within a category, such as \"companyA\" or \"companyB.\" Tag values are case-sensitive.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "A grouping of protected resources so they can be handled as a collective. This resource grouping improves the accuracy of detection and reduces false positives.", - "handlers": { - "create": { - "permissions": [ - "shield:CreateProtectionGroup", - "shield:TagResource" - ] - }, - "delete": { - "permissions": [ - "shield:DeleteProtectionGroup", - "shield:UntagResource" - ] - }, - "list": { - "permissions": [ - "shield:ListProtectionGroups" - ] - }, - "read": { - "permissions": [ - "shield:DescribeProtectionGroup", - "shield:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "shield:UpdateProtectionGroup", - "shield:ListTagsForResource", - "shield:TagResource", - "shield:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ProtectionGroupArn" - ], - "properties": { - "Aggregation": { - "description": "Defines how AWS Shield combines resource data for the group in order to detect, mitigate, and report events.\n* Sum - Use the total traffic across the group. This is a good choice for most cases. Examples include Elastic IP addresses for EC2 instances that scale manually or automatically.\n* Mean - Use the average of the traffic across the group. This is a good choice for resources that share traffic uniformly. Examples include accelerators and load balancers.\n* Max - Use the highest traffic from each resource. This is useful for resources that don't share traffic and for resources that share that traffic in a non-uniform way. Examples include Amazon CloudFront and origin resources for CloudFront distributions.", - "enum": [ - "SUM", - "MEAN", - "MAX" - ], - "type": "string" - }, - "Members": { - "description": "The Amazon Resource Names (ARNs) of the resources to include in the protection group. You must set this when you set `Pattern` to `ARBITRARY` and you must not set it for any other `Pattern` setting.", - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "maxItems": 10000, - "type": "array" - }, - "Pattern": { - "description": "The criteria to use to choose the protected resources for inclusion in the group. You can include all resources that have protections, provide a list of resource Amazon Resource Names (ARNs), or include all resources of a specified resource type.", - "enum": [ - "ALL", - "ARBITRARY", - "BY_RESOURCE_TYPE" - ], - "type": "string" - }, - "ProtectionGroupArn": { - "description": "The ARN (Amazon Resource Name) of the protection group.", - "type": "string" - }, - "ProtectionGroupId": { - "description": "The name of the protection group. You use this to identify the protection group in lists and to manage the protection group, for example to update, delete, or describe it.", - "maxLength": 36, - "minLength": 1, - "pattern": "[a-zA-Z0-9\\-]*", - "type": "string" - }, - "ResourceType": { - "description": "The resource type to include in the protection group. All protected resources of this type are included in the protection group. Newly protected resources of this type are automatically added to the group. You must set this when you set `Pattern` to `BY_RESOURCE_TYPE` and you must not set it for any other `Pattern` setting.", - "enum": [ - "CLOUDFRONT_DISTRIBUTION", - "ROUTE_53_HOSTED_ZONE", - "ELASTIC_IP_ALLOCATION", - "CLASSIC_LOAD_BALANCER", - "APPLICATION_LOAD_BALANCER", - "GLOBAL_ACCELERATOR" - ], - "type": "string" - }, - "Tags": { - "description": "One or more tag key-value pairs for the Protection object.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ProtectionGroupArn" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "Aggregation", - "Pattern", - "ProtectionGroupId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-shield.git", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "shield:ListTagsForResource", - "shield:UntagResource", - "shield:TagResource" - ], - "tagProperty": "/properties/Tags", - "taggable": true - }, - "typeName": "AWS::Shield::ProtectionGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ProtectionGroupId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A tag associated with an AWS resource. Tags are key:value pairs that you can use to categorize and manage your resources, for purposes like billing or other management. Typically, the tag key represents a category, such as \"environment\", and the tag value represents a specific value within that category, such as \"test,\" \"development,\" or \"production\". Or you might set the tag key to \"customer\" and the value to the customer name or ID. You can specify one or more tags to add to each AWS resource, up to 50 tags for a resource.", + "properties": { + "Key": { + "description": "Part of the key:value pair that defines a tag. You can use a tag key to describe a category of information, such as \"customer.\" Tag keys are case-sensitive.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Part of the key:value pair that defines a tag. You can use a tag value to describe a specific value within a category, such as \"companyA\" or \"companyB.\" Tag values are case-sensitive.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "A grouping of protected resources so they can be handled as a collective. This resource grouping improves the accuracy of detection and reduces false positives.", + "handlers": { + "create": { + "permissions": [ + "shield:CreateProtectionGroup", + "shield:TagResource" + ] + }, + "delete": { + "permissions": [ + "shield:DeleteProtectionGroup", + "shield:UntagResource" + ] + }, + "list": { + "permissions": [ + "shield:ListProtectionGroups" + ] + }, + "read": { + "permissions": [ + "shield:DescribeProtectionGroup", + "shield:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "shield:UpdateProtectionGroup", + "shield:ListTagsForResource", + "shield:TagResource", + "shield:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ProtectionGroupArn" + ], + "properties": { + "Aggregation": { + "description": "Defines how AWS Shield combines resource data for the group in order to detect, mitigate, and report events.\n* Sum - Use the total traffic across the group. This is a good choice for most cases. Examples include Elastic IP addresses for EC2 instances that scale manually or automatically.\n* Mean - Use the average of the traffic across the group. This is a good choice for resources that share traffic uniformly. Examples include accelerators and load balancers.\n* Max - Use the highest traffic from each resource. This is useful for resources that don't share traffic and for resources that share that traffic in a non-uniform way. Examples include Amazon CloudFront and origin resources for CloudFront distributions.", + "enum": [ + "SUM", + "MEAN", + "MAX" + ], + "type": "string" + }, + "Members": { + "description": "The Amazon Resource Names (ARNs) of the resources to include in the protection group. You must set this when you set `Pattern` to `ARBITRARY` and you must not set it for any other `Pattern` setting.", + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "maxItems": 10000, + "type": "array" + }, + "Pattern": { + "description": "The criteria to use to choose the protected resources for inclusion in the group. You can include all resources that have protections, provide a list of resource Amazon Resource Names (ARNs), or include all resources of a specified resource type.", + "enum": [ + "ALL", + "ARBITRARY", + "BY_RESOURCE_TYPE" + ], + "type": "string" + }, + "ProtectionGroupArn": { + "description": "The ARN (Amazon Resource Name) of the protection group.", + "type": "string" + }, + "ProtectionGroupId": { + "description": "The name of the protection group. You use this to identify the protection group in lists and to manage the protection group, for example to update, delete, or describe it.", + "maxLength": 36, + "minLength": 1, + "pattern": "[a-zA-Z0-9\\-]*", + "type": "string" + }, + "ResourceType": { + "description": "The resource type to include in the protection group. All protected resources of this type are included in the protection group. Newly protected resources of this type are automatically added to the group. You must set this when you set `Pattern` to `BY_RESOURCE_TYPE` and you must not set it for any other `Pattern` setting.", + "enum": [ + "CLOUDFRONT_DISTRIBUTION", + "ROUTE_53_HOSTED_ZONE", + "ELASTIC_IP_ALLOCATION", + "CLASSIC_LOAD_BALANCER", + "APPLICATION_LOAD_BALANCER", + "GLOBAL_ACCELERATOR" + ], + "type": "string" + }, + "Tags": { + "description": "One or more tag key-value pairs for the Protection object.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ProtectionGroupArn" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "Aggregation", + "Pattern", + "ProtectionGroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-shield.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "shield:ListTagsForResource", + "shield:UntagResource", + "shield:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Shield::ProtectionGroup" +} diff --git a/src/schema/aws-signer-profilepermission.json b/src/schema/aws-signer-profilepermission.json index 4cfd5775..bc0cd44d 100644 --- a/src/schema/aws-signer-profilepermission.json +++ b/src/schema/aws-signer-profilepermission.json @@ -1,77 +1,83 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProfileName", - "/properties/Action", - "/properties/Principal", - "/properties/StatementId", - "/properties/ProfileVersion" - ], - "description": "An example resource schema demonstrating some basic constructs and validation rules.", - "handlers": { - "create": { - "permissions": [ - "signer:AddProfilePermission", - "signer:ListProfilePermissions" - ] - }, - "delete": { - "permissions": [ - "signer:RemoveProfilePermission", - "signer:ListProfilePermissions" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ProfileName": { - "$ref": "resource-schema.json#/properties/ProfileName" - }, - "StatementId": { - "$ref": "resource-schema.json#/properties/StatementId" - } - } - }, - "permissions": [ - "signer:ListProfilePermissions", - "signer:GetSigningProfile" - ] - }, - "read": { - "permissions": [ - "signer:ListProfilePermissions" - ] - } - }, - "primaryIdentifier": [ - "/properties/StatementId", - "/properties/ProfileName" - ], - "properties": { - "Action": { - "type": "string" - }, - "Principal": { - "type": "string" - }, - "ProfileName": { - "pattern": "^[0-9a-zA-Z_]{2,64}$", - "type": "string" - }, - "ProfileVersion": { - "pattern": "^[0-9a-zA-Z]{10}$", - "type": "string" - }, - "StatementId": { - "type": "string" - } - }, - "required": [ - "ProfileName", - "Action", - "Principal", - "StatementId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::Signer::ProfilePermission" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ProfileName", + "/properties/Action", + "/properties/Principal", + "/properties/StatementId", + "/properties/ProfileVersion" + ], + "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "handlers": { + "create": { + "permissions": [ + "signer:AddProfilePermission", + "signer:ListProfilePermissions" + ] + }, + "delete": { + "permissions": [ + "signer:RemoveProfilePermission", + "signer:ListProfilePermissions" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ProfileName": { + "$ref": "resource-schema.json#/properties/ProfileName" + }, + "StatementId": { + "$ref": "resource-schema.json#/properties/StatementId" + } + } + }, + "permissions": [ + "signer:ListProfilePermissions", + "signer:GetSigningProfile" + ] + }, + "read": { + "permissions": [ + "signer:ListProfilePermissions" + ] + } + }, + "primaryIdentifier": [ + "/properties/StatementId", + "/properties/ProfileName" + ], + "properties": { + "Action": { + "type": "string" + }, + "Principal": { + "type": "string" + }, + "ProfileName": { + "pattern": "^[0-9a-zA-Z_]{2,64}$", + "type": "string" + }, + "ProfileVersion": { + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "StatementId": { + "type": "string" + } + }, + "required": [ + "ProfileName", + "Action", + "Principal", + "StatementId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Signer::ProfilePermission" +} diff --git a/src/schema/aws-signer-signingprofile.json b/src/schema/aws-signer-signingprofile.json index 58374113..cf7b31fd 100644 --- a/src/schema/aws-signer-signingprofile.json +++ b/src/schema/aws-signer-signingprofile.json @@ -1,152 +1,164 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ProfileName" - ], - [ - "/properties/ProfileVersionArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProfileName", - "/properties/PlatformId", - "/properties/SignatureValidityPeriod" - ], - "definitions": { - "Arn": { - "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", - "type": "string" - }, - "PlatformId": { - "enum": [ - "AWSLambda-SHA384-ECDSA", - "Notation-OCI-SHA384-ECDSA" - ], - "type": "string" - }, - "ProfileName": { - "maxLength": 64, - "minLength": 2, - "pattern": "^[0-9a-zA-Z_]{2,64}$", - "type": "string" - }, - "ProfileVersion": { - "pattern": "^[0-9a-zA-Z]{10}$", - "type": "string" - }, - "SignatureValidityPeriod": { - "additionalProperties": false, - "properties": { - "Type": { - "enum": [ - "DAYS", - "MONTHS", - "YEARS" - ], - "type": "string" - }, - "Value": { - "type": "integer" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "A signing profile is a signing template that can be used to carry out a pre-defined signing job.", - "handlers": { - "create": { - "permissions": [ - "signer:PutSigningProfile", - "signer:TagResource" - ] - }, - "delete": { - "permissions": [ - "signer:CancelSigningProfile", - "signer:GetSigningProfile" - ] - }, - "list": { - "permissions": [ - "signer:ListSigningProfiles" - ] - }, - "read": { - "permissions": [ - "signer:GetSigningProfile" - ] - }, - "update": { - "permissions": [ - "signer:TagResource", - "signer:UntagResource", - "signer:GetSigningProfile" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn", - "description": "The Amazon Resource Name (ARN) of the specified signing profile." - }, - "PlatformId": { - "$ref": "#/definitions/PlatformId", - "description": "The ID of the target signing platform." - }, - "ProfileName": { - "$ref": "#/definitions/ProfileName", - "description": "A name for the signing profile. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the signing profile name. " - }, - "ProfileVersion": { - "$ref": "#/definitions/ProfileVersion", - "description": "A version for the signing profile. AWS Signer generates a unique version for each profile of the same profile name." - }, - "ProfileVersionArn": { - "$ref": "#/definitions/Arn", - "description": "The Amazon Resource Name (ARN) of the specified signing profile version." - }, - "SignatureValidityPeriod": { - "$ref": "#/definitions/SignatureValidityPeriod", - "description": "Signature validity period of the profile." - }, - "Tags": { - "description": "A list of tags associated with the signing profile.", - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/ProfileName", - "/properties/ProfileVersion", - "/properties/Arn", - "/properties/ProfileVersionArn" - ], - "required": [ - "PlatformId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::Signer::SigningProfile" -} +{ + "additionalIdentifiers": [ + [ + "/properties/ProfileName" + ], + [ + "/properties/ProfileVersionArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ProfileName", + "/properties/PlatformId", + "/properties/SignatureValidityPeriod" + ], + "definitions": { + "Arn": { + "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "PlatformId": { + "enum": [ + "AWSLambda-SHA384-ECDSA", + "Notation-OCI-SHA384-ECDSA" + ], + "type": "string" + }, + "ProfileName": { + "maxLength": 64, + "minLength": 2, + "pattern": "^[0-9a-zA-Z_]{2,64}$", + "type": "string" + }, + "ProfileVersion": { + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "SignatureValidityPeriod": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "DAYS", + "MONTHS", + "YEARS" + ], + "type": "string" + }, + "Value": { + "type": "integer" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 127, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "A signing profile is a signing template that can be used to carry out a pre-defined signing job.", + "handlers": { + "create": { + "permissions": [ + "signer:PutSigningProfile", + "signer:TagResource" + ] + }, + "delete": { + "permissions": [ + "signer:CancelSigningProfile", + "signer:GetSigningProfile" + ] + }, + "list": { + "permissions": [ + "signer:ListSigningProfiles" + ] + }, + "read": { + "permissions": [ + "signer:GetSigningProfile" + ] + }, + "update": { + "permissions": [ + "signer:TagResource", + "signer:UntagResource", + "signer:GetSigningProfile" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn", + "description": "The Amazon Resource Name (ARN) of the specified signing profile." + }, + "PlatformId": { + "$ref": "#/definitions/PlatformId", + "description": "The ID of the target signing platform." + }, + "ProfileName": { + "$ref": "#/definitions/ProfileName", + "description": "A name for the signing profile. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the signing profile name. " + }, + "ProfileVersion": { + "$ref": "#/definitions/ProfileVersion", + "description": "A version for the signing profile. AWS Signer generates a unique version for each profile of the same profile name." + }, + "ProfileVersionArn": { + "$ref": "#/definitions/Arn", + "description": "The Amazon Resource Name (ARN) of the specified signing profile version." + }, + "SignatureValidityPeriod": { + "$ref": "#/definitions/SignatureValidityPeriod", + "description": "Signature validity period of the profile." + }, + "Tags": { + "description": "A list of tags associated with the signing profile.", + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ProfileName", + "/properties/ProfileVersion", + "/properties/Arn", + "/properties/ProfileVersionArn" + ], + "required": [ + "PlatformId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "signer:TagResource", + "signer:UntagResource", + "signer:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Signer::SigningProfile" +} diff --git a/src/schema/aws-simspaceweaver-simulation.json b/src/schema/aws-simspaceweaver-simulation.json index af42f0bd..089e9097 100644 --- a/src/schema/aws-simspaceweaver-simulation.json +++ b/src/schema/aws-simspaceweaver-simulation.json @@ -1,133 +1,133 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/RoleArn", - "/properties/SchemaS3Location", - "/properties/SnapshotS3Location", - "/properties/MaximumDuration" - ], - "definitions": { - "S3Location": { - "additionalProperties": false, - "properties": { - "BucketName": { - "description": "The Schema S3 bucket name.", - "maxLength": 63, - "minLength": 3, - "pattern": "[a-zA-Z0-9_\\-]{3,63}$", - "type": "string" - }, - "ObjectKey": { - "description": "This is the schema S3 object key, which includes the full path of \"folders\" from the bucket root to the schema.", - "maxLength": 255, - "minLength": 3, - "type": "string" - } - }, - "required": [ - "BucketName", - "ObjectKey" - ], - "type": "object" - } - }, - "description": "AWS::SimSpaceWeaver::Simulation resource creates an AWS Simulation.", - "handlers": { - "create": { - "permissions": [ - "simspaceweaver:StartSimulation", - "simspaceweaver:DescribeSimulation", - "iam:GetRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "simspaceweaver:StopSimulation", - "simspaceweaver:DeleteSimulation", - "simspaceweaver:DescribeSimulation" - ] - }, - "list": { - "permissions": [ - "simspaceweaver:ListSimulations" - ] - }, - "read": { - "permissions": [ - "simspaceweaver:DescribeSimulation" - ] - }, - "update": { - "permissions": [ - "simspaceweaver:StartSimulation", - "simspaceweaver:StopSimulation", - "simspaceweaver:DeleteSimulation", - "simspaceweaver:DescribeSimulation" - ] - } - }, - "oneOf": [ - { - "required": [ - "SchemaS3Location" - ] - }, - { - "required": [ - "SnapshotS3Location" - ] - } - ], - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "DescribePayload": { - "description": "Json object with all simulation details", - "type": "string" - }, - "MaximumDuration": { - "description": "The maximum running time of the simulation.", - "maxLength": 6, - "minLength": 2, - "type": "string" - }, - "Name": { - "description": "The name of the simulation.", - "maxLength": 2048, - "minLength": 1, - "pattern": "[a-zA-Z0-9_\\-]{1,2048}$", - "type": "string" - }, - "RoleArn": { - "description": "Role ARN.", - "type": "string" - }, - "SchemaS3Location": { - "$ref": "#/definitions/S3Location" - }, - "SnapshotS3Location": { - "$ref": "#/definitions/S3Location" - } - }, - "propertyTransform": { - "properties/MaximumDuration": "$uppercase(MaximumDuration)" - }, - "readOnlyProperties": [ - "/properties/DescribePayload" - ], - "required": [ - "Name", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::SimSpaceWeaver::Simulation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/RoleArn", + "/properties/SchemaS3Location", + "/properties/SnapshotS3Location", + "/properties/MaximumDuration" + ], + "definitions": { + "S3Location": { + "additionalProperties": false, + "properties": { + "BucketName": { + "description": "The Schema S3 bucket name.", + "maxLength": 63, + "minLength": 3, + "pattern": "[a-zA-Z0-9_\\-]{3,63}$", + "type": "string" + }, + "ObjectKey": { + "description": "This is the schema S3 object key, which includes the full path of \"folders\" from the bucket root to the schema.", + "maxLength": 255, + "minLength": 3, + "type": "string" + } + }, + "required": [ + "BucketName", + "ObjectKey" + ], + "type": "object" + } + }, + "description": "AWS::SimSpaceWeaver::Simulation resource creates an AWS Simulation.", + "handlers": { + "create": { + "permissions": [ + "simspaceweaver:StartSimulation", + "simspaceweaver:DescribeSimulation", + "iam:GetRole", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "simspaceweaver:StopSimulation", + "simspaceweaver:DeleteSimulation", + "simspaceweaver:DescribeSimulation" + ] + }, + "list": { + "permissions": [ + "simspaceweaver:ListSimulations" + ] + }, + "read": { + "permissions": [ + "simspaceweaver:DescribeSimulation" + ] + }, + "update": { + "permissions": [ + "simspaceweaver:StartSimulation", + "simspaceweaver:StopSimulation", + "simspaceweaver:DeleteSimulation", + "simspaceweaver:DescribeSimulation" + ] + } + }, + "oneOf": [ + { + "required": [ + "SchemaS3Location" + ] + }, + { + "required": [ + "SnapshotS3Location" + ] + } + ], + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "DescribePayload": { + "description": "Json object with all simulation details", + "type": "string" + }, + "MaximumDuration": { + "description": "The maximum running time of the simulation.", + "maxLength": 6, + "minLength": 2, + "type": "string" + }, + "Name": { + "description": "The name of the simulation.", + "maxLength": 2048, + "minLength": 1, + "pattern": "[a-zA-Z0-9_\\-]{1,2048}$", + "type": "string" + }, + "RoleArn": { + "description": "Role ARN.", + "type": "string" + }, + "SchemaS3Location": { + "$ref": "#/definitions/S3Location" + }, + "SnapshotS3Location": { + "$ref": "#/definitions/S3Location" + } + }, + "propertyTransform": { + "properties/MaximumDuration": "$uppercase(MaximumDuration)" + }, + "readOnlyProperties": [ + "/properties/DescribePayload" + ], + "required": [ + "Name", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::SimSpaceWeaver::Simulation" +} diff --git a/src/schema/aws-sns-subscription.json b/src/schema/aws-sns-subscription.json index a41db414..599ec04e 100644 --- a/src/schema/aws-sns-subscription.json +++ b/src/schema/aws-sns-subscription.json @@ -1,127 +1,127 @@ -{ - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/Region" - ], - "createOnlyProperties": [ - "/properties/Endpoint", - "/properties/Protocol", - "/properties/TopicArn" - ], - "description": "Resource Type definition for AWS::SNS::Subscription", - "handlers": { - "create": { - "permissions": [ - "iam:GetRole", - "iam:PassRole", - "sns:Subscribe" - ] - }, - "delete": { - "permissions": [ - "sns:Unsubscribe", - "sns:GetSubscriptionAttributes" - ] - }, - "list": { - "permissions": [ - "sns:ListSubscriptions" - ] - }, - "read": { - "permissions": [ - "sns:GetSubscriptionAttributes" - ] - }, - "update": { - "permissions": [ - "iam:GetRole", - "iam:PassRole", - "sns:SetSubscriptionAttributes" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "Arn of the subscription", - "type": "string" - }, - "DeliveryPolicy": { - "description": "The delivery policy JSON assigned to the subscription. Enables the subscriber to define the message delivery retry strategy in the case of an HTTP/S endpoint subscribed to the topic.", - "type": [ - "object", - "string" - ] - }, - "Endpoint": { - "description": "The subscription's endpoint. The endpoint value depends on the protocol that you specify. ", - "type": "string" - }, - "FilterPolicy": { - "description": "The filter policy JSON assigned to the subscription. Enables the subscriber to filter out unwanted messages.", - "type": [ - "object", - "string" - ] - }, - "FilterPolicyScope": { - "description": "This attribute lets you choose the filtering scope by using one of the following string value types: MessageAttributes (default) and MessageBody.", - "type": "string" - }, - "Protocol": { - "description": "The subscription's protocol.", - "type": "string" - }, - "RawMessageDelivery": { - "description": "When set to true, enables raw message delivery. Raw messages don't contain any JSON formatting and can be sent to Amazon SQS and HTTP/S endpoints.", - "type": "boolean" - }, - "RedrivePolicy": { - "description": "When specified, sends undeliverable messages to the specified Amazon SQS dead-letter queue. Messages that can't be delivered due to client errors are held in the dead-letter queue for further analysis or reprocessing.", - "type": [ - "object", - "string" - ] - }, - "Region": { - "description": "For cross-region subscriptions, the region in which the topic resides.If no region is specified, AWS CloudFormation uses the region of the caller as the default.", - "type": "string" - }, - "ReplayPolicy": { - "description": "Specifies whether Amazon SNS resends the notification to the subscription when a message's attribute changes.", - "type": [ - "object", - "string" - ] - }, - "SubscriptionRoleArn": { - "description": "This property applies only to Amazon Data Firehose delivery stream subscriptions.", - "type": "string" - }, - "TopicArn": { - "description": "The ARN of the topic to subscribe to.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "TopicArn", - "Protocol" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sns", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::SNS::Subscription", - "writeOnlyProperties": [ - "/properties/Region" - ] -} +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/Region" + ], + "createOnlyProperties": [ + "/properties/Endpoint", + "/properties/Protocol", + "/properties/TopicArn" + ], + "description": "Resource Type definition for AWS::SNS::Subscription", + "handlers": { + "create": { + "permissions": [ + "iam:GetRole", + "iam:PassRole", + "sns:Subscribe" + ] + }, + "delete": { + "permissions": [ + "sns:Unsubscribe", + "sns:GetSubscriptionAttributes" + ] + }, + "list": { + "permissions": [ + "sns:ListSubscriptions" + ] + }, + "read": { + "permissions": [ + "sns:GetSubscriptionAttributes" + ] + }, + "update": { + "permissions": [ + "iam:GetRole", + "iam:PassRole", + "sns:SetSubscriptionAttributes" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "Arn of the subscription", + "type": "string" + }, + "DeliveryPolicy": { + "description": "The delivery policy JSON assigned to the subscription. Enables the subscriber to define the message delivery retry strategy in the case of an HTTP/S endpoint subscribed to the topic.", + "type": [ + "object", + "string" + ] + }, + "Endpoint": { + "description": "The subscription's endpoint. The endpoint value depends on the protocol that you specify. ", + "type": "string" + }, + "FilterPolicy": { + "description": "The filter policy JSON assigned to the subscription. Enables the subscriber to filter out unwanted messages.", + "type": [ + "object", + "string" + ] + }, + "FilterPolicyScope": { + "description": "This attribute lets you choose the filtering scope by using one of the following string value types: MessageAttributes (default) and MessageBody.", + "type": "string" + }, + "Protocol": { + "description": "The subscription's protocol.", + "type": "string" + }, + "RawMessageDelivery": { + "description": "When set to true, enables raw message delivery. Raw messages don't contain any JSON formatting and can be sent to Amazon SQS and HTTP/S endpoints.", + "type": "boolean" + }, + "RedrivePolicy": { + "description": "When specified, sends undeliverable messages to the specified Amazon SQS dead-letter queue. Messages that can't be delivered due to client errors are held in the dead-letter queue for further analysis or reprocessing.", + "type": [ + "object", + "string" + ] + }, + "Region": { + "description": "For cross-region subscriptions, the region in which the topic resides.If no region is specified, AWS CloudFormation uses the region of the caller as the default.", + "type": "string" + }, + "ReplayPolicy": { + "description": "Specifies whether Amazon SNS resends the notification to the subscription when a message's attribute changes.", + "type": [ + "object", + "string" + ] + }, + "SubscriptionRoleArn": { + "description": "This property applies only to Amazon Data Firehose delivery stream subscriptions.", + "type": "string" + }, + "TopicArn": { + "description": "The ARN of the topic to subscribe to.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "TopicArn", + "Protocol" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sns", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::SNS::Subscription", + "writeOnlyProperties": [ + "/properties/Region" + ] +} diff --git a/src/schema/aws-sns-topic.json b/src/schema/aws-sns-topic.json index 46273554..a41b5089 100644 --- a/src/schema/aws-sns-topic.json +++ b/src/schema/aws-sns-topic.json @@ -1,213 +1,222 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TopicName", - "/properties/FifoTopic" - ], - "definitions": { - "LoggingConfig": { - "additionalProperties": false, - "description": "The ``LoggingConfig`` property type specifies the ``Delivery`` status logging configuration for an [AWS::SNS::Topic](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-topic.html).", - "properties": { - "FailureFeedbackRoleArn": { - "description": "The IAM role ARN to be used when logging failed message deliveries in Amazon CloudWatch.", - "type": "string" - }, - "Protocol": { - "description": "Indicates one of the supported protocols for the Amazon SNS topic.\n At least one of the other three ``LoggingConfig`` properties is recommend along with ``Protocol``.", - "enum": [ - "http/s", - "sqs", - "lambda", - "firehose", - "application" - ], - "type": "string" - }, - "SuccessFeedbackRoleArn": { - "description": "The IAM role ARN to be used when logging successful message deliveries in Amazon CloudWatch.", - "type": "string" - }, - "SuccessFeedbackSampleRate": { - "description": "The percentage of successful message deliveries to be logged in Amazon CloudWatch. Valid percentage values range from 0 to 100.", - "type": "string" - } - }, - "required": [ - "Protocol" - ], - "type": "object" - }, - "Subscription": { - "additionalProperties": false, - "description": "``Subscription`` is an embedded property that describes the subscription endpoints of an SNS topic.\n For full control over subscription behavior (for example, delivery policy, filtering, raw message delivery, and cross-region subscriptions), use the [AWS::SNS::Subscription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html) resource.", - "properties": { - "Endpoint": { - "description": "The endpoint that receives notifications from the SNS topic. The endpoint value depends on the protocol that you specify. For more information, see the ``Endpoint`` parameter of the ``Subscribe`` action in the *API Reference*.", - "type": "string" - }, - "Protocol": { - "description": "The subscription's protocol. For more information, see the ``Protocol`` parameter of the ``Subscribe`` action in the *API Reference*.", - "type": "string" - } - }, - "required": [ - "Endpoint", - "Protocol" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "The list of tags to be added to the specified topic.", - "properties": { - "Key": { - "description": "The required key portion of the tag.", - "type": "string" - }, - "Value": { - "description": "The optional value portion of the tag.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The ``AWS::SNS::Topic`` resource creates a topic to which notifications can be published.\n One account can create a maximum of 100,000 standard topics and 1,000 FIFO topics. For more information, see [endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/sns.html) in the *General Reference*.\n The structure of ``AUTHPARAMS`` depends on the .signature of the API request. For more information, see [Examples of the complete Signature Version 4 signing process](https://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html) in the *General Reference*.", - "handlers": { - "create": { - "permissions": [ - "sns:CreateTopic", - "sns:TagResource", - "sns:Subscribe", - "sns:GetTopicAttributes", - "sns:PutDataProtectionPolicy", - "iam:GetRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "sns:GetTopicAttributes", - "sns:DeleteTopic" - ] - }, - "list": { - "permissions": [ - "sns:ListTopics" - ] - }, - "read": { - "permissions": [ - "sns:GetTopicAttributes", - "sns:ListTagsForResource", - "sns:ListSubscriptionsByTopic", - "sns:GetDataProtectionPolicy" - ] - }, - "update": { - "permissions": [ - "sns:SetTopicAttributes", - "sns:TagResource", - "sns:UntagResource", - "sns:Subscribe", - "sns:Unsubscribe", - "sns:GetTopicAttributes", - "sns:ListTagsForResource", - "sns:ListSubscriptionsByTopic", - "sns:GetDataProtectionPolicy", - "sns:PutDataProtectionPolicy", - "iam:GetRole", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/TopicArn" - ], - "properties": { - "ArchivePolicy": { - "description": "The archive policy determines the number of days SNS retains messages. You can set a retention period from 1 to 365 days.", - "type": "object" - }, - "ContentBasedDeduplication": { - "description": "Enables content-based deduplication for FIFO topics.\n + By default, ``ContentBasedDeduplication`` is set to ``false``. If you create a FIFO topic and this attribute is ``false``, you must specify a value for the ``MessageDeduplicationId`` parameter for the [Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html) action. \n + When you set ``ContentBasedDeduplication`` to ``true``, SNS uses a SHA-256 hash to generate the ``MessageDeduplicationId`` using the body of the message (but not the attributes of the message).\n (Optional) To override the generated value, you can specify a value for the the ``MessageDeduplicationId`` parameter for the ``Publish`` action.", - "type": "boolean" - }, - "DataProtectionPolicy": { - "description": "The body of the policy document you want to use for this topic.\n You can only add one policy per topic.\n The policy must be in JSON string format.\n Length Constraints: Maximum length of 30,720.", - "type": "object" - }, - "DeliveryStatusLogging": { - "description": "The ``DeliveryStatusLogging`` configuration enables you to log the delivery status of messages sent from your Amazon SNS topic to subscribed endpoints with the following supported delivery protocols:\n + HTTP \n + Amazon Kinesis Data Firehose\n + AWS Lambda\n + Platform application endpoint\n + Amazon Simple Queue Service\n \n Once configured, log entries are sent to Amazon CloudWatch Logs.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LoggingConfig" - }, - "type": "array", - "uniqueItems": true - }, - "DisplayName": { - "description": "The display name to use for an SNS topic with SMS subscriptions. The display name must be maximum 100 characters long, including hyphens (-), underscores (_), spaces, and tabs.", - "type": "string" - }, - "FifoTopic": { - "description": "Set to true to create a FIFO topic.", - "type": "boolean" - }, - "KmsMasterKeyId": { - "description": "The ID of an AWS managed customer master key (CMK) for SNS or a custom CMK. For more information, see [Key terms](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html#sse-key-terms). For more examples, see ``KeyId`` in the *API Reference*.\n This property applies only to [server-side-encryption](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html).", - "type": "string" - }, - "SignatureVersion": { - "description": "The signature version corresponds to the hashing algorithm used while creating the signature of the notifications, subscription confirmations, or unsubscribe confirmation messages sent by Amazon SNS. By default, ``SignatureVersion`` is set to ``1``.", - "type": "string" - }, - "Subscription": { - "description": "The SNS subscriptions (endpoints) for this topic.\n If you specify the ``Subscription`` property in the ``AWS::SNS::Topic`` resource and it creates an associated subscription resource, the associated subscription is not deleted when the ``AWS::SNS::Topic`` resource is deleted.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Subscription" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "description": "The list of tags to add to a new topic.\n To be able to tag a topic on creation, you must have the ``sns:CreateTopic`` and ``sns:TagResource`` permissions.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TopicArn": { - "description": "", - "type": "string" - }, - "TopicName": { - "description": "The name of the topic you want to create. Topic names must include only uppercase and lowercase ASCII letters, numbers, underscores, and hyphens, and must be between 1 and 256 characters long. FIFO topic names must end with ``.fifo``.\n If you don't specify a name, CFN generates a unique physical ID and uses that ID for the topic name. For more information, see [Name type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).\n If you specify a name, you can't perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", - "type": "string" - }, - "TracingConfig": { - "description": "Tracing mode of an SNS topic. By default ``TracingConfig`` is set to ``PassThrough``, and the topic passes through the tracing header it receives from an SNS publisher to its subscriptions. If set to ``Active``, SNS will vend X-Ray segment data to topic owner account if the sampled flag in the tracing header is true.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/TopicArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sns", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SNS::Topic" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TopicName", + "/properties/FifoTopic" + ], + "definitions": { + "LoggingConfig": { + "additionalProperties": false, + "description": "The ``LoggingConfig`` property type specifies the ``Delivery`` status logging configuration for an [AWS::SNS::Topic](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-topic.html).", + "properties": { + "FailureFeedbackRoleArn": { + "description": "The IAM role ARN to be used when logging failed message deliveries in Amazon CloudWatch.", + "type": "string" + }, + "Protocol": { + "description": "Indicates one of the supported protocols for the Amazon SNS topic.\n At least one of the other three ``LoggingConfig`` properties is recommend along with ``Protocol``.", + "enum": [ + "http/s", + "sqs", + "lambda", + "firehose", + "application" + ], + "type": "string" + }, + "SuccessFeedbackRoleArn": { + "description": "The IAM role ARN to be used when logging successful message deliveries in Amazon CloudWatch.", + "type": "string" + }, + "SuccessFeedbackSampleRate": { + "description": "The percentage of successful message deliveries to be logged in Amazon CloudWatch. Valid percentage values range from 0 to 100.", + "type": "string" + } + }, + "required": [ + "Protocol" + ], + "type": "object" + }, + "Subscription": { + "additionalProperties": false, + "description": "``Subscription`` is an embedded property that describes the subscription endpoints of an SNS topic.\n For full control over subscription behavior (for example, delivery policy, filtering, raw message delivery, and cross-region subscriptions), use the [AWS::SNS::Subscription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html) resource.", + "properties": { + "Endpoint": { + "description": "The endpoint that receives notifications from the SNS topic. The endpoint value depends on the protocol that you specify. For more information, see the ``Endpoint`` parameter of the ``Subscribe`` action in the *API Reference*.", + "type": "string" + }, + "Protocol": { + "description": "The subscription's protocol. For more information, see the ``Protocol`` parameter of the ``Subscribe`` action in the *API Reference*.", + "type": "string" + } + }, + "required": [ + "Endpoint", + "Protocol" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "The list of tags to be added to the specified topic.", + "properties": { + "Key": { + "description": "The required key portion of the tag.", + "type": "string" + }, + "Value": { + "description": "The optional value portion of the tag.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The ``AWS::SNS::Topic`` resource creates a topic to which notifications can be published.\n One account can create a maximum of 100,000 standard topics and 1,000 FIFO topics. For more information, see [endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/sns.html) in the *General Reference*.\n The structure of ``AUTHPARAMS`` depends on the .signature of the API request. For more information, see [Examples of the complete Signature Version 4 signing process](https://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html) in the *General Reference*.", + "handlers": { + "create": { + "permissions": [ + "sns:CreateTopic", + "sns:TagResource", + "sns:Subscribe", + "sns:GetTopicAttributes", + "sns:PutDataProtectionPolicy", + "iam:GetRole", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "sns:GetTopicAttributes", + "sns:DeleteTopic" + ] + }, + "list": { + "permissions": [ + "sns:ListTopics" + ] + }, + "read": { + "permissions": [ + "sns:GetTopicAttributes", + "sns:ListTagsForResource", + "sns:ListSubscriptionsByTopic", + "sns:GetDataProtectionPolicy" + ] + }, + "update": { + "permissions": [ + "sns:SetTopicAttributes", + "sns:TagResource", + "sns:UntagResource", + "sns:Subscribe", + "sns:Unsubscribe", + "sns:GetTopicAttributes", + "sns:ListTagsForResource", + "sns:ListSubscriptionsByTopic", + "sns:GetDataProtectionPolicy", + "sns:PutDataProtectionPolicy", + "iam:GetRole", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/TopicArn" + ], + "properties": { + "ArchivePolicy": { + "description": "The archive policy determines the number of days SNS retains messages. You can set a retention period from 1 to 365 days.", + "type": "object" + }, + "ContentBasedDeduplication": { + "description": "Enables content-based deduplication for FIFO topics.\n + By default, ``ContentBasedDeduplication`` is set to ``false``. If you create a FIFO topic and this attribute is ``false``, you must specify a value for the ``MessageDeduplicationId`` parameter for the [Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html) action. \n + When you set ``ContentBasedDeduplication`` to ``true``, SNS uses a SHA-256 hash to generate the ``MessageDeduplicationId`` using the body of the message (but not the attributes of the message).\n (Optional) To override the generated value, you can specify a value for the the ``MessageDeduplicationId`` parameter for the ``Publish`` action.", + "type": "boolean" + }, + "DataProtectionPolicy": { + "description": "The body of the policy document you want to use for this topic.\n You can only add one policy per topic.\n The policy must be in JSON string format.\n Length Constraints: Maximum length of 30,720.", + "type": "object" + }, + "DeliveryStatusLogging": { + "description": "The ``DeliveryStatusLogging`` configuration enables you to log the delivery status of messages sent from your Amazon SNS topic to subscribed endpoints with the following supported delivery protocols:\n + HTTP \n + Amazon Kinesis Data Firehose\n + AWS Lambda\n + Platform application endpoint\n + Amazon Simple Queue Service\n \n Once configured, log entries are sent to Amazon CloudWatch Logs.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoggingConfig" + }, + "type": "array", + "uniqueItems": true + }, + "DisplayName": { + "description": "The display name to use for an SNS topic with SMS subscriptions. The display name must be maximum 100 characters long, including hyphens (-), underscores (_), spaces, and tabs.", + "type": "string" + }, + "FifoThroughputScope": { + "description": "", + "type": "string" + }, + "FifoTopic": { + "description": "Set to true to create a FIFO topic.", + "type": "boolean" + }, + "KmsMasterKeyId": { + "description": "The ID of an AWS managed customer master key (CMK) for SNS or a custom CMK. For more information, see [Key terms](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html#sse-key-terms). For more examples, see ``KeyId`` in the *API Reference*.\n This property applies only to [server-side-encryption](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html).", + "type": "string" + }, + "SignatureVersion": { + "description": "The signature version corresponds to the hashing algorithm used while creating the signature of the notifications, subscription confirmations, or unsubscribe confirmation messages sent by Amazon SNS. By default, ``SignatureVersion`` is set to ``1``.", + "type": "string" + }, + "Subscription": { + "description": "The SNS subscriptions (endpoints) for this topic.\n If you specify the ``Subscription`` property in the ``AWS::SNS::Topic`` resource and it creates an associated subscription resource, the associated subscription is not deleted when the ``AWS::SNS::Topic`` resource is deleted.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Subscription" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "description": "The list of tags to add to a new topic.\n To be able to tag a topic on creation, you must have the ``sns:CreateTopic`` and ``sns:TagResource`` permissions.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TopicArn": { + "description": "", + "type": "string" + }, + "TopicName": { + "description": "The name of the topic you want to create. Topic names must include only uppercase and lowercase ASCII letters, numbers, underscores, and hyphens, and must be between 1 and 256 characters long. FIFO topic names must end with ``.fifo``.\n If you don't specify a name, CFN generates a unique physical ID and uses that ID for the topic name. For more information, see [Name type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html).\n If you specify a name, you can't perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", + "type": "string" + }, + "TracingConfig": { + "description": "Tracing mode of an SNS topic. By default ``TracingConfig`` is set to ``PassThrough``, and the topic passes through the tracing header it receives from an SNS publisher to its subscriptions. If set to ``Active``, SNS will vend X-Ray segment data to topic owner account if the sampled flag in the tracing header is true.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/TopicArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sns", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "sns:TagResource", + "sns:UntagResource", + "sns:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SNS::Topic" +} diff --git a/src/schema/aws-sns-topicinlinepolicy.json b/src/schema/aws-sns-topicinlinepolicy.json index e2e72a3b..bc910bc9 100644 --- a/src/schema/aws-sns-topicinlinepolicy.json +++ b/src/schema/aws-sns-topicinlinepolicy.json @@ -1,57 +1,57 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TopicArn" - ], - "description": "Schema for AWS::SNS::TopicInlinePolicy", - "handlers": { - "create": { - "permissions": [ - "sns:SetTopicAttributes", - "sns:GetTopicAttributes" - ] - }, - "delete": { - "permissions": [ - "sns:SetTopicAttributes", - "sns:GetTopicAttributes" - ] - }, - "read": { - "permissions": [ - "sns:GetTopicAttributes" - ] - }, - "update": { - "permissions": [ - "sns:SetTopicAttributes", - "sns:GetTopicAttributes" - ] - } - }, - "primaryIdentifier": [ - "/properties/TopicArn" - ], - "properties": { - "PolicyDocument": { - "description": "A policy document that contains permissions to add to the specified SNS topics.", - "type": "object" - }, - "TopicArn": { - "description": "The Amazon Resource Name (ARN) of the topic to which you want to add the policy.", - "type": "string" - } - }, - "required": [ - "PolicyDocument", - "TopicArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sns.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::SNS::TopicInlinePolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TopicArn" + ], + "description": "Schema for AWS::SNS::TopicInlinePolicy", + "handlers": { + "create": { + "permissions": [ + "sns:SetTopicAttributes", + "sns:GetTopicAttributes" + ] + }, + "delete": { + "permissions": [ + "sns:SetTopicAttributes", + "sns:GetTopicAttributes" + ] + }, + "read": { + "permissions": [ + "sns:GetTopicAttributes" + ] + }, + "update": { + "permissions": [ + "sns:SetTopicAttributes", + "sns:GetTopicAttributes" + ] + } + }, + "primaryIdentifier": [ + "/properties/TopicArn" + ], + "properties": { + "PolicyDocument": { + "description": "A policy document that contains permissions to add to the specified SNS topics.", + "type": "object" + }, + "TopicArn": { + "description": "The Amazon Resource Name (ARN) of the topic to which you want to add the policy.", + "type": "string" + } + }, + "required": [ + "PolicyDocument", + "TopicArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sns.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::SNS::TopicInlinePolicy" +} diff --git a/src/schema/aws-sns-topicpolicy.json b/src/schema/aws-sns-topicpolicy.json index 2b94411d..f59180ab 100644 --- a/src/schema/aws-sns-topicpolicy.json +++ b/src/schema/aws-sns-topicpolicy.json @@ -1,61 +1,61 @@ -{ - "additionalProperties": false, - "description": "The ``AWS::SNS::TopicPolicy`` resource associates SNS topics with a policy. For an example snippet, see [Declaring an policy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-iam.html#scenario-sns-policy) in the *User Guide*.", - "handlers": { - "create": { - "permissions": [ - "sns:SetTopicAttributes" - ] - }, - "delete": { - "permissions": [ - "sns:SetTopicAttributes" - ] - }, - "update": { - "permissions": [ - "sns:SetTopicAttributes" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "description": "", - "type": "string" - }, - "PolicyDocument": { - "description": "A policy document that contains permissions to add to the specified SNS topics.", - "type": [ - "object", - "string" - ] - }, - "Topics": { - "description": "The Amazon Resource Names (ARN) of the topics to which you want to add the policy. You can use the ``Ref`` function to specify an ``AWS::SNS::Topic`` resource.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "PolicyDocument", - "Topics" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sns.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::SNS::TopicPolicy" -} +{ + "additionalProperties": false, + "description": "The ``AWS::SNS::TopicPolicy`` resource associates SNS topics with a policy. For an example snippet, see [Declaring an policy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-iam.html#scenario-sns-policy) in the *User Guide*.", + "handlers": { + "create": { + "permissions": [ + "sns:SetTopicAttributes" + ] + }, + "delete": { + "permissions": [ + "sns:SetTopicAttributes" + ] + }, + "update": { + "permissions": [ + "sns:SetTopicAttributes" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "", + "type": "string" + }, + "PolicyDocument": { + "description": "A policy document that contains permissions to add to the specified SNS topics.", + "type": [ + "object", + "string" + ] + }, + "Topics": { + "description": "The Amazon Resource Names (ARN) of the topics to which you want to add the policy. You can use the ``Ref`` function to specify an ``AWS::SNS::Topic`` resource.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "PolicyDocument", + "Topics" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sns.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::SNS::TopicPolicy" +} diff --git a/src/schema/aws-sqs-queue.json b/src/schema/aws-sqs-queue.json index 3e3cfb8b..197ea82f 100644 --- a/src/schema/aws-sqs-queue.json +++ b/src/schema/aws-sqs-queue.json @@ -1,167 +1,167 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FifoQueue", - "/properties/QueueName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "The ``AWS::SQS::Queue`` resource creates an SQS standard or FIFO queue.\n Keep the following caveats in mind:\n + If you don't specify the ``FifoQueue`` property, SQS creates a standard queue.\n You can't change the queue type after you create it and you can't convert an existing standard queue into a FIFO queue. You must either create a new FIFO queue for your application or delete your existing standard queue and recreate it as a FIFO queue. For more information, see [Moving from a standard queue to a FIFO queue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-moving.html) in the *Developer Guide*. \n + If you don't provide a value for a property, the queue is created with the default value for the property.\n + If you delete a queue, you must wait at least 60 seconds before creating a queue with the same name.\n + To successfully create a new queue, you must provide a queue name that adheres to the [limits related to queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/limits-queues.html) and is unique within the scope of your queues.\n \n For more information about creating FIFO (first-in-first-out) queues, see [Creating an queue ()](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/create-queue-cloudformation.html) in the *Developer Guide*.", - "handlers": { - "create": { - "permissions": [ - "sqs:CreateQueue", - "sqs:GetQueueUrl", - "sqs:GetQueueAttributes", - "sqs:ListQueueTags", - "sqs:TagQueue" - ] - }, - "delete": { - "permissions": [ - "sqs:DeleteQueue", - "sqs:GetQueueAttributes" - ] - }, - "list": { - "permissions": [ - "sqs:ListQueues" - ] - }, - "read": { - "permissions": [ - "sqs:GetQueueAttributes", - "sqs:ListQueueTags" - ] - }, - "update": { - "permissions": [ - "sqs:SetQueueAttributes", - "sqs:GetQueueAttributes", - "sqs:ListQueueTags", - "sqs:TagQueue", - "sqs:UntagQueue" - ] - } - }, - "primaryIdentifier": [ - "/properties/QueueUrl" - ], - "properties": { - "Arn": { - "description": "", - "type": "string" - }, - "ContentBasedDeduplication": { - "description": "For first-in-first-out (FIFO) queues, specifies whether to enable content-based deduplication. During the deduplication interval, SQS treats messages that are sent with identical content as duplicates and delivers only one copy of the message. For more information, see the ``ContentBasedDeduplication`` attribute for the ``CreateQueue`` action in the *API Reference*.", - "type": "boolean" - }, - "DeduplicationScope": { - "description": "For high throughput for FIFO queues, specifies whether message deduplication occurs at the message group or queue level. Valid values are ``messageGroup`` and ``queue``.\n To enable high throughput for a FIFO queue, set this attribute to ``messageGroup`` *and* set the ``FifoThroughputLimit`` attribute to ``perMessageGroupId``. If you set these attributes to anything other than these values, normal throughput is in effect and deduplication occurs as specified. For more information, see [High throughput for FIFO queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html) and [Quotas related to messages](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html) in the *Developer Guide*.", - "type": "string" - }, - "DelaySeconds": { - "description": "The time in seconds for which the delivery of all messages in the queue is delayed. You can specify an integer value of ``0`` to ``900`` (15 minutes). The default value is ``0``.", - "type": "integer" - }, - "FifoQueue": { - "description": "If set to true, creates a FIFO queue. If you don't specify this property, SQS creates a standard queue. For more information, see [Amazon SQS FIFO queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-fifo-queues.html) in the *Developer Guide*.", - "type": "boolean" - }, - "FifoThroughputLimit": { - "description": "For high throughput for FIFO queues, specifies whether the FIFO queue throughput quota applies to the entire queue or per message group. Valid values are ``perQueue`` and ``perMessageGroupId``.\n To enable high throughput for a FIFO queue, set this attribute to ``perMessageGroupId`` *and* set the ``DeduplicationScope`` attribute to ``messageGroup``. If you set these attributes to anything other than these values, normal throughput is in effect and deduplication occurs as specified. For more information, see [High throughput for FIFO queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html) and [Quotas related to messages](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html) in the *Developer Guide*.", - "type": "string" - }, - "KmsDataKeyReusePeriodSeconds": { - "description": "The length of time in seconds for which SQS can reuse a data key to encrypt or decrypt messages before calling KMS again. The value must be an integer between 60 (1 minute) and 86,400 (24 hours). The default is 300 (5 minutes).\n A shorter time period provides better security, but results in more calls to KMS, which might incur charges after Free Tier. For more information, see [Encryption at rest](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-how-does-the-data-key-reuse-period-work) in the *Developer Guide*.", - "type": "integer" - }, - "KmsMasterKeyId": { - "description": "The ID of an AWS Key Management Service (KMS) for SQS, or a custom KMS. To use the AWS managed KMS for SQS, specify a (default) alias ARN, alias name (for example ``alias/aws/sqs``), key ARN, or key ID. For more information, see the following:\n + [Encryption at rest](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html) in the *Developer Guide* \n + [CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html) in the *API Reference* \n + [Request Parameters](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the *Key Management Service API Reference* \n + The Key Management Service (KMS) section of the [Security best practices for Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html) in the *Key Management Service Developer Guide*", - "type": "string" - }, - "MaximumMessageSize": { - "description": "The limit of how many bytes that a message can contain before SQS rejects it. You can specify an integer value from ``1,024`` bytes (1 KiB) to ``262,144`` bytes (256 KiB). The default value is ``262,144`` (256 KiB).", - "type": "integer" - }, - "MessageRetentionPeriod": { - "description": "The number of seconds that SQS retains a message. You can specify an integer value from ``60`` seconds (1 minute) to ``1,209,600`` seconds (14 days). The default value is ``345,600`` seconds (4 days).", - "type": "integer" - }, - "QueueName": { - "description": "A name for the queue. To create a FIFO queue, the name of your FIFO queue must end with the ``.fifo`` suffix. For more information, see [Amazon SQS FIFO queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-fifo-queues.html) in the *Developer Guide*.\n If you don't specify a name, CFN generates a unique physical ID and uses that ID for the queue name. For more information, see [Name type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) in the *User Guide*. \n If you specify a name, you can't perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", - "type": "string" - }, - "QueueUrl": { - "description": "", - "type": "string" - }, - "ReceiveMessageWaitTimeSeconds": { - "description": "Specifies the duration, in seconds, that the ReceiveMessage action call waits until a message is in the queue in order to include it in the response, rather than returning an empty response if a message isn't yet available. You can specify an integer from 1 to 20. Short polling is used as the default or when you specify 0 for this property. For more information, see [Consuming messages using long polling](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html#sqs-long-polling) in the *Developer Guide*.", - "type": "integer" - }, - "RedriveAllowPolicy": { - "description": "The string that includes the parameters for the permissions for the dead-letter queue redrive permission and which source queues can specify dead-letter queues as a JSON object. The parameters are as follows:\n + ``redrivePermission``: The permission type that defines which source queues can specify the current queue as the dead-letter queue. Valid values are:\n + ``allowAll``: (Default) Any source queues in this AWS account in the same Region can specify this queue as the dead-letter queue.\n + ``denyAll``: No source queues can specify this queue as the dead-letter queue.\n + ``byQueue``: Only queues specified by the ``sourceQueueArns`` parameter can specify this queue as the dead-letter queue.\n \n + ``sourceQueueArns``: The Amazon Resource Names (ARN)s of the source queues that can specify this queue as the dead-letter queue and redrive messages. You can specify this parameter only when the ``redrivePermission`` parameter is set to ``byQueue``. You can specify up to 10 source queue ARNs. To allow more than 10 source queues to specify dead-letter queues, set the ``redrivePermission`` parameter to ``allowAll``.", - "type": [ - "object", - "string" - ] - }, - "RedrivePolicy": { - "description": "The string that includes the parameters for the dead-letter queue functionality of the source queue as a JSON object. The parameters are as follows:\n + ``deadLetterTargetArn``: The Amazon Resource Name (ARN) of the dead-letter queue to which SQS moves messages after the value of ``maxReceiveCount`` is exceeded.\n + ``maxReceiveCount``: The number of times a message is received by a consumer of the source queue before being moved to the dead-letter queue. When the ``ReceiveCount`` for a message exceeds the ``maxReceiveCount`` for a queue, SQS moves the message to the dead-letter-queue.\n \n The dead-letter queue of a FIFO queue must also be a FIFO queue. Similarly, the dead-letter queue of a standard queue must also be a standard queue.\n *JSON* \n ``{ \"deadLetterTargetArn\" : String, \"maxReceiveCount\" : Integer }`` \n *YAML* \n ``deadLetterTargetArn : String`` \n ``maxReceiveCount : Integer``", - "type": [ - "object", - "string" - ] - }, - "SqsManagedSseEnabled": { - "description": "Enables server-side queue encryption using SQS owned encryption keys. Only one server-side encryption option is supported per queue (for example, [SSE-KMS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-sse-existing-queue.html) or [SSE-SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-sqs-sse-queue.html)). When ``SqsManagedSseEnabled`` is not defined, ``SSE-SQS`` encryption is enabled by default.", - "type": "boolean" - }, - "Tags": { - "description": "The tags that you attach to this queue. For more information, see [Resource tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html) in the *User Guide*.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VisibilityTimeout": { - "description": "The length of time during which a message will be unavailable after a message is delivered from the queue. This blocks other components from receiving the same message and gives the initial component time to process and delete the message from the queue.\n Values must be from 0 to 43,200 seconds (12 hours). If you don't specify a value, AWS CloudFormation uses the default value of 30 seconds.\n For more information about SQS queue visibility timeouts, see [Visibility timeout](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html) in the *Developer Guide*.", - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/QueueUrl", - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sqs.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SQS::Queue" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FifoQueue", + "/properties/QueueName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "The ``AWS::SQS::Queue`` resource creates an SQS standard or FIFO queue.\n Keep the following caveats in mind:\n + If you don't specify the ``FifoQueue`` property, SQS creates a standard queue.\n You can't change the queue type after you create it and you can't convert an existing standard queue into a FIFO queue. You must either create a new FIFO queue for your application or delete your existing standard queue and recreate it as a FIFO queue. For more information, see [Moving from a standard queue to a FIFO queue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-moving.html) in the *Developer Guide*. \n + If you don't provide a value for a property, the queue is created with the default value for the property.\n + If you delete a queue, you must wait at least 60 seconds before creating a queue with the same name.\n + To successfully create a new queue, you must provide a queue name that adheres to the [limits related to queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/limits-queues.html) and is unique within the scope of your queues.\n \n For more information about creating FIFO (first-in-first-out) queues, see [Creating an queue ()](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/create-queue-cloudformation.html) in the *Developer Guide*.", + "handlers": { + "create": { + "permissions": [ + "sqs:CreateQueue", + "sqs:GetQueueUrl", + "sqs:GetQueueAttributes", + "sqs:ListQueueTags", + "sqs:TagQueue" + ] + }, + "delete": { + "permissions": [ + "sqs:DeleteQueue", + "sqs:GetQueueAttributes" + ] + }, + "list": { + "permissions": [ + "sqs:ListQueues" + ] + }, + "read": { + "permissions": [ + "sqs:GetQueueAttributes", + "sqs:ListQueueTags" + ] + }, + "update": { + "permissions": [ + "sqs:SetQueueAttributes", + "sqs:GetQueueAttributes", + "sqs:ListQueueTags", + "sqs:TagQueue", + "sqs:UntagQueue" + ] + } + }, + "primaryIdentifier": [ + "/properties/QueueUrl" + ], + "properties": { + "Arn": { + "description": "", + "type": "string" + }, + "ContentBasedDeduplication": { + "description": "For first-in-first-out (FIFO) queues, specifies whether to enable content-based deduplication. During the deduplication interval, SQS treats messages that are sent with identical content as duplicates and delivers only one copy of the message. For more information, see the ``ContentBasedDeduplication`` attribute for the ``CreateQueue`` action in the *API Reference*.", + "type": "boolean" + }, + "DeduplicationScope": { + "description": "For high throughput for FIFO queues, specifies whether message deduplication occurs at the message group or queue level. Valid values are ``messageGroup`` and ``queue``.\n To enable high throughput for a FIFO queue, set this attribute to ``messageGroup`` *and* set the ``FifoThroughputLimit`` attribute to ``perMessageGroupId``. If you set these attributes to anything other than these values, normal throughput is in effect and deduplication occurs as specified. For more information, see [High throughput for FIFO queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html) and [Quotas related to messages](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html) in the *Developer Guide*.", + "type": "string" + }, + "DelaySeconds": { + "description": "The time in seconds for which the delivery of all messages in the queue is delayed. You can specify an integer value of ``0`` to ``900`` (15 minutes). The default value is ``0``.", + "type": "integer" + }, + "FifoQueue": { + "description": "If set to true, creates a FIFO queue. If you don't specify this property, SQS creates a standard queue. For more information, see [Amazon SQS FIFO queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-fifo-queues.html) in the *Developer Guide*.", + "type": "boolean" + }, + "FifoThroughputLimit": { + "description": "For high throughput for FIFO queues, specifies whether the FIFO queue throughput quota applies to the entire queue or per message group. Valid values are ``perQueue`` and ``perMessageGroupId``.\n To enable high throughput for a FIFO queue, set this attribute to ``perMessageGroupId`` *and* set the ``DeduplicationScope`` attribute to ``messageGroup``. If you set these attributes to anything other than these values, normal throughput is in effect and deduplication occurs as specified. For more information, see [High throughput for FIFO queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html) and [Quotas related to messages](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html) in the *Developer Guide*.", + "type": "string" + }, + "KmsDataKeyReusePeriodSeconds": { + "description": "The length of time in seconds for which SQS can reuse a data key to encrypt or decrypt messages before calling KMS again. The value must be an integer between 60 (1 minute) and 86,400 (24 hours). The default is 300 (5 minutes).\n A shorter time period provides better security, but results in more calls to KMS, which might incur charges after Free Tier. For more information, see [Encryption at rest](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-how-does-the-data-key-reuse-period-work) in the *Developer Guide*.", + "type": "integer" + }, + "KmsMasterKeyId": { + "description": "The ID of an AWS Key Management Service (KMS) for SQS, or a custom KMS. To use the AWS managed KMS for SQS, specify a (default) alias ARN, alias name (for example ``alias/aws/sqs``), key ARN, or key ID. For more information, see the following:\n + [Encryption at rest](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html) in the *Developer Guide* \n + [CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html) in the *API Reference* \n + [Request Parameters](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the *Key Management Service API Reference* \n + The Key Management Service (KMS) section of the [Security best practices for Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html) in the *Key Management Service Developer Guide*", + "type": "string" + }, + "MaximumMessageSize": { + "description": "The limit of how many bytes that a message can contain before SQS rejects it. You can specify an integer value from ``1,024`` bytes (1 KiB) to ``262,144`` bytes (256 KiB). The default value is ``262,144`` (256 KiB).", + "type": "integer" + }, + "MessageRetentionPeriod": { + "description": "The number of seconds that SQS retains a message. You can specify an integer value from ``60`` seconds (1 minute) to ``1,209,600`` seconds (14 days). The default value is ``345,600`` seconds (4 days).", + "type": "integer" + }, + "QueueName": { + "description": "A name for the queue. To create a FIFO queue, the name of your FIFO queue must end with the ``.fifo`` suffix. For more information, see [Amazon SQS FIFO queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-fifo-queues.html) in the *Developer Guide*.\n If you don't specify a name, CFN generates a unique physical ID and uses that ID for the queue name. For more information, see [Name type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) in the *User Guide*. \n If you specify a name, you can't perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", + "type": "string" + }, + "QueueUrl": { + "description": "", + "type": "string" + }, + "ReceiveMessageWaitTimeSeconds": { + "description": "Specifies the duration, in seconds, that the ReceiveMessage action call waits until a message is in the queue in order to include it in the response, rather than returning an empty response if a message isn't yet available. You can specify an integer from 1 to 20. Short polling is used as the default or when you specify 0 for this property. For more information, see [Consuming messages using long polling](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html#sqs-long-polling) in the *Developer Guide*.", + "type": "integer" + }, + "RedriveAllowPolicy": { + "description": "The string that includes the parameters for the permissions for the dead-letter queue redrive permission and which source queues can specify dead-letter queues as a JSON object. The parameters are as follows:\n + ``redrivePermission``: The permission type that defines which source queues can specify the current queue as the dead-letter queue. Valid values are:\n + ``allowAll``: (Default) Any source queues in this AWS account in the same Region can specify this queue as the dead-letter queue.\n + ``denyAll``: No source queues can specify this queue as the dead-letter queue.\n + ``byQueue``: Only queues specified by the ``sourceQueueArns`` parameter can specify this queue as the dead-letter queue.\n \n + ``sourceQueueArns``: The Amazon Resource Names (ARN)s of the source queues that can specify this queue as the dead-letter queue and redrive messages. You can specify this parameter only when the ``redrivePermission`` parameter is set to ``byQueue``. You can specify up to 10 source queue ARNs. To allow more than 10 source queues to specify dead-letter queues, set the ``redrivePermission`` parameter to ``allowAll``.", + "type": [ + "object", + "string" + ] + }, + "RedrivePolicy": { + "description": "The string that includes the parameters for the dead-letter queue functionality of the source queue as a JSON object. The parameters are as follows:\n + ``deadLetterTargetArn``: The Amazon Resource Name (ARN) of the dead-letter queue to which SQS moves messages after the value of ``maxReceiveCount`` is exceeded.\n + ``maxReceiveCount``: The number of times a message is received by a consumer of the source queue before being moved to the dead-letter queue. When the ``ReceiveCount`` for a message exceeds the ``maxReceiveCount`` for a queue, SQS moves the message to the dead-letter-queue.\n \n The dead-letter queue of a FIFO queue must also be a FIFO queue. Similarly, the dead-letter queue of a standard queue must also be a standard queue.\n *JSON* \n ``{ \"deadLetterTargetArn\" : String, \"maxReceiveCount\" : Integer }`` \n *YAML* \n ``deadLetterTargetArn : String`` \n ``maxReceiveCount : Integer``", + "type": [ + "object", + "string" + ] + }, + "SqsManagedSseEnabled": { + "description": "Enables server-side queue encryption using SQS owned encryption keys. Only one server-side encryption option is supported per queue (for example, [SSE-KMS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-sse-existing-queue.html) or [SSE-SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-sqs-sse-queue.html)). When ``SqsManagedSseEnabled`` is not defined, ``SSE-SQS`` encryption is enabled by default.", + "type": "boolean" + }, + "Tags": { + "description": "The tags that you attach to this queue. For more information, see [Resource tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html) in the *User Guide*.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VisibilityTimeout": { + "description": "The length of time during which a message will be unavailable after a message is delivered from the queue. This blocks other components from receiving the same message and gives the initial component time to process and delete the message from the queue.\n Values must be from 0 to 43,200 seconds (12 hours). If you don't specify a value, AWS CloudFormation uses the default value of 30 seconds.\n For more information about SQS queue visibility timeouts, see [Visibility timeout](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html) in the *Developer Guide*.", + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/QueueUrl", + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sqs.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SQS::Queue" +} diff --git a/src/schema/aws-sqs-queueinlinepolicy.json b/src/schema/aws-sqs-queueinlinepolicy.json index fac7946f..f85032e9 100644 --- a/src/schema/aws-sqs-queueinlinepolicy.json +++ b/src/schema/aws-sqs-queueinlinepolicy.json @@ -1,60 +1,60 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Queue" - ], - "description": "Schema for SQS QueueInlinePolicy", - "handlers": { - "create": { - "permissions": [ - "sqs:SetQueueAttributes", - "sqs:GetQueueAttributes", - "sqs:GetQueueUrl" - ] - }, - "delete": { - "permissions": [ - "sqs:SetQueueAttributes", - "sqs:GetQueueAttributes" - ] - }, - "read": { - "permissions": [ - "sqs:GetQueueAttributes", - "sqs:GetQueueUrl" - ] - }, - "update": { - "permissions": [ - "sqs:SetQueueAttributes", - "sqs:GetQueueAttributes", - "sqs:GetQueueUrl" - ] - } - }, - "primaryIdentifier": [ - "/properties/Queue" - ], - "properties": { - "PolicyDocument": { - "description": "A policy document that contains permissions to add to the specified SQS queue", - "type": "object" - }, - "Queue": { - "description": "The URL of the SQS queue.", - "type": "string" - } - }, - "required": [ - "PolicyDocument", - "Queue" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sqs.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::SQS::QueueInlinePolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Queue" + ], + "description": "Schema for SQS QueueInlinePolicy", + "handlers": { + "create": { + "permissions": [ + "sqs:SetQueueAttributes", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ] + }, + "delete": { + "permissions": [ + "sqs:SetQueueAttributes", + "sqs:GetQueueAttributes" + ] + }, + "read": { + "permissions": [ + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ] + }, + "update": { + "permissions": [ + "sqs:SetQueueAttributes", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ] + } + }, + "primaryIdentifier": [ + "/properties/Queue" + ], + "properties": { + "PolicyDocument": { + "description": "A policy document that contains permissions to add to the specified SQS queue", + "type": "object" + }, + "Queue": { + "description": "The URL of the SQS queue.", + "type": "string" + } + }, + "required": [ + "PolicyDocument", + "Queue" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sqs.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::SQS::QueueInlinePolicy" +} diff --git a/src/schema/aws-sqs-queuepolicy.json b/src/schema/aws-sqs-queuepolicy.json index f4e29142..22d02407 100644 --- a/src/schema/aws-sqs-queuepolicy.json +++ b/src/schema/aws-sqs-queuepolicy.json @@ -1,61 +1,61 @@ -{ - "additionalProperties": false, - "description": "The ``AWS::SQS::QueuePolicy`` type applies a policy to SQS queues. For an example snippet, see [Declaring an policy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-iam.html#scenario-sqs-policy) in the *User Guide*.", - "handlers": { - "create": { - "permissions": [ - "sqs:SetQueueAttributes" - ] - }, - "delete": { - "permissions": [ - "sqs:SetQueueAttributes" - ] - }, - "update": { - "permissions": [ - "sqs:SetQueueAttributes" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "description": "", - "type": "string" - }, - "PolicyDocument": { - "description": "A policy document that contains the permissions for the specified SQS queues. For more information about SQS policies, see [Using custom policies with the access policy language](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-creating-custom-policies.html) in the *Developer Guide*.", - "type": [ - "object", - "string" - ] - }, - "Queues": { - "description": "The URLs of the queues to which you want to add the policy. You can use the ``Ref`` function to specify an ``AWS::SQS::Queue`` resource.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "PolicyDocument", - "Queues" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sqs.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::SQS::QueuePolicy" -} +{ + "additionalProperties": false, + "description": "The ``AWS::SQS::QueuePolicy`` type applies a policy to SQS queues. For an example snippet, see [Declaring an policy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-iam.html#scenario-sqs-policy) in the *User Guide*.", + "handlers": { + "create": { + "permissions": [ + "sqs:SetQueueAttributes" + ] + }, + "delete": { + "permissions": [ + "sqs:SetQueueAttributes" + ] + }, + "update": { + "permissions": [ + "sqs:SetQueueAttributes" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "description": "", + "type": "string" + }, + "PolicyDocument": { + "description": "A policy document that contains the permissions for the specified SQS queues. For more information about SQS policies, see [Using custom policies with the access policy language](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-creating-custom-policies.html) in the *Developer Guide*.", + "type": [ + "object", + "string" + ] + }, + "Queues": { + "description": "The URLs of the queues to which you want to add the policy. You can use the ``Ref`` function to specify an ``AWS::SQS::Queue`` resource.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "PolicyDocument", + "Queues" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sqs.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::SQS::QueuePolicy" +} diff --git a/src/schema/aws-ssm-association.json b/src/schema/aws-ssm-association.json index d91d20b2..a5c0e6ab 100644 --- a/src/schema/aws-ssm-association.json +++ b/src/schema/aws-ssm-association.json @@ -1,281 +1,281 @@ -{ - "additionalProperties": false, - "definitions": { - "InstanceAssociationOutputLocation": { - "additionalProperties": false, - "properties": { - "S3Location": { - "$ref": "#/definitions/S3OutputLocation" - } - }, - "type": "object" - }, - "ParameterValues": { - "items": { - "type": "string" - }, - "type": "array" - }, - "S3BucketName": { - "maxLength": 63, - "minLength": 3, - "relationshipRef": { - "propertyPath": "/properties/BucketName", - "typeName": "AWS::S3::Bucket" - }, - "type": "string" - }, - "S3KeyPrefix": { - "maxLength": 1024, - "type": "string" - }, - "S3OutputLocation": { - "additionalProperties": false, - "properties": { - "OutputS3BucketName": { - "$ref": "#/definitions/S3BucketName" - }, - "OutputS3KeyPrefix": { - "$ref": "#/definitions/S3KeyPrefix" - }, - "OutputS3Region": { - "$ref": "#/definitions/S3Region" - } - }, - "type": "object" - }, - "S3Region": { - "maxLength": 20, - "minLength": 3, - "type": "string" - }, - "Target": { - "additionalProperties": false, - "properties": { - "Key": { - "pattern": "^[\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]{1,128}$|resource-groups:Name", - "type": "string" - }, - "Values": { - "items": { - "anyOf": [ - { - "relationshipRef": { - "propertyPath": "/properties/Id", - "typeName": "AWS::EC2::Instance" - } - } - ], - "type": "string" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Key", - "Values" - ], - "type": "object" - } - }, - "description": "The AWS::SSM::Association resource associates an SSM document in AWS Systems Manager with EC2 instances that contain a configuration agent to process the document.", - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeInstanceStatus", - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "ssm:CreateAssociation", - "ssm:DescribeAssociation", - "ssm:GetCalendarState" - ] - }, - "delete": { - "permissions": [ - "ssm:DeleteAssociation" - ] - }, - "list": { - "permissions": [ - "ssm:ListAssociations" - ] - }, - "read": { - "permissions": [ - "ssm:DescribeAssociation", - "resource-groups:GetGroupQuery", - "resource-groups:ListGroups", - "resource-groups:ListGroupResources" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "ssm:UpdateAssociation", - "ssm:GetCalendarState" - ] - } - }, - "primaryIdentifier": [ - "/properties/AssociationId" - ], - "properties": { - "ApplyOnlyAtCronInterval": { - "type": "boolean" - }, - "AssociationId": { - "description": "Unique identifier of the association.", - "examples": [ - "88df7b09-95e8-48c4-a3cb-08c2c20d5110", - "203dd0ec-0055-4bf0-a872-707f72ef06aa" - ], - "pattern": "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", - "type": "string" - }, - "AssociationName": { - "description": "The name of the association.", - "pattern": "^[a-zA-Z0-9_\\-.]{3,128}$", - "type": "string" - }, - "AutomationTargetParameterName": { - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "CalendarNames": { - "examples": [ - [ - "calendar1", - "calendar2" - ], - [ - "calendar3" - ] - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "ComplianceSeverity": { - "enum": [ - "CRITICAL", - "HIGH", - "MEDIUM", - "LOW", - "UNSPECIFIED" - ], - "type": "string" - }, - "DocumentVersion": { - "description": "The version of the SSM document to associate with the target.", - "pattern": "([$]LATEST|[$]DEFAULT|^[1-9][0-9]*$)", - "type": "string" - }, - "InstanceId": { - "description": "The ID of the instance that the SSM document is associated with.", - "examples": [ - "i-0e60836d21cf313c4", - "mi-0532c22e49636ee13" - ], - "pattern": "(^i-(\\w{8}|\\w{17})$)|(^mi-\\w{17}$)", - "type": "string" - }, - "MaxConcurrency": { - "examples": [ - "1%", - "10%", - "50%", - "1" - ], - "pattern": "^([1-9][0-9]{0,6}|[1-9][0-9]%|[1-9]%|100%)$", - "type": "string" - }, - "MaxErrors": { - "examples": [ - "1%", - "10%", - "50%", - "1" - ], - "pattern": "^([1-9][0-9]{0,6}|[0]|[1-9][0-9]%|[0-9]%|100%)$", - "type": "string" - }, - "Name": { - "description": "The name of the SSM document.", - "examples": [ - "AWS-GatherSoftwareInventory", - "MyCustomSSMDocument" - ], - "pattern": "^[a-zA-Z0-9_\\-.:/]{3,200}$", - "type": "string" - }, - "OutputLocation": { - "$ref": "#/definitions/InstanceAssociationOutputLocation" - }, - "Parameters": { - "additionalProperties": false, - "description": "Parameter values that the SSM document uses at runtime.", - "patternProperties": { - ".{1,255}": { - "$ref": "#/definitions/ParameterValues" - } - }, - "type": "object" - }, - "ScheduleExpression": { - "description": "A Cron or Rate expression that specifies when the association is applied to the target.", - "examples": [ - "cron(0 0 */1 * * ? *)", - "cron(0 16 ? * TUE *)", - "rate(30 minutes)", - "rate(7 days)" - ], - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "ScheduleOffset": { - "maximum": 6, - "minimum": 1, - "type": "integer" - }, - "SyncCompliance": { - "enum": [ - "AUTO", - "MANUAL" - ], - "type": "string" - }, - "Targets": { - "description": "The targets that the SSM document sends commands to.", - "items": { - "$ref": "#/definitions/Target" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - }, - "WaitForSuccessTimeoutSeconds": { - "maximum": 172800, - "minimum": 15, - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/AssociationId" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ssm", - "tagging": { - "taggable": false - }, - "typeName": "AWS::SSM::Association", - "writeOnlyProperties": [ - "/properties/WaitForSuccessTimeoutSeconds" - ] -} +{ + "additionalProperties": false, + "definitions": { + "InstanceAssociationOutputLocation": { + "additionalProperties": false, + "properties": { + "S3Location": { + "$ref": "#/definitions/S3OutputLocation" + } + }, + "type": "object" + }, + "ParameterValues": { + "items": { + "type": "string" + }, + "type": "array" + }, + "S3BucketName": { + "maxLength": 63, + "minLength": 3, + "relationshipRef": { + "propertyPath": "/properties/BucketName", + "typeName": "AWS::S3::Bucket" + }, + "type": "string" + }, + "S3KeyPrefix": { + "maxLength": 1024, + "type": "string" + }, + "S3OutputLocation": { + "additionalProperties": false, + "properties": { + "OutputS3BucketName": { + "$ref": "#/definitions/S3BucketName" + }, + "OutputS3KeyPrefix": { + "$ref": "#/definitions/S3KeyPrefix" + }, + "OutputS3Region": { + "$ref": "#/definitions/S3Region" + } + }, + "type": "object" + }, + "S3Region": { + "maxLength": 20, + "minLength": 3, + "type": "string" + }, + "Target": { + "additionalProperties": false, + "properties": { + "Key": { + "pattern": "^[\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]{1,128}$|resource-groups:Name", + "type": "string" + }, + "Values": { + "items": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/Id", + "typeName": "AWS::EC2::Instance" + } + } + ], + "type": "string" + }, + "maxItems": 50, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Key", + "Values" + ], + "type": "object" + } + }, + "description": "The AWS::SSM::Association resource associates an SSM document in AWS Systems Manager with EC2 instances that contain a configuration agent to process the document.", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeInstanceStatus", + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "ssm:CreateAssociation", + "ssm:DescribeAssociation", + "ssm:GetCalendarState" + ] + }, + "delete": { + "permissions": [ + "ssm:DeleteAssociation" + ] + }, + "list": { + "permissions": [ + "ssm:ListAssociations" + ] + }, + "read": { + "permissions": [ + "ssm:DescribeAssociation", + "resource-groups:GetGroupQuery", + "resource-groups:ListGroups", + "resource-groups:ListGroupResources" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "ssm:UpdateAssociation", + "ssm:GetCalendarState" + ] + } + }, + "primaryIdentifier": [ + "/properties/AssociationId" + ], + "properties": { + "ApplyOnlyAtCronInterval": { + "type": "boolean" + }, + "AssociationId": { + "description": "Unique identifier of the association.", + "examples": [ + "88df7b09-95e8-48c4-a3cb-08c2c20d5110", + "203dd0ec-0055-4bf0-a872-707f72ef06aa" + ], + "pattern": "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", + "type": "string" + }, + "AssociationName": { + "description": "The name of the association.", + "pattern": "^[a-zA-Z0-9_\\-.]{3,128}$", + "type": "string" + }, + "AutomationTargetParameterName": { + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "CalendarNames": { + "examples": [ + [ + "calendar1", + "calendar2" + ], + [ + "calendar3" + ] + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "ComplianceSeverity": { + "enum": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNSPECIFIED" + ], + "type": "string" + }, + "DocumentVersion": { + "description": "The version of the SSM document to associate with the target.", + "pattern": "([$]LATEST|[$]DEFAULT|^[1-9][0-9]*$)", + "type": "string" + }, + "InstanceId": { + "description": "The ID of the instance that the SSM document is associated with.", + "examples": [ + "i-0e60836d21cf313c4", + "mi-0532c22e49636ee13" + ], + "pattern": "(^i-(\\w{8}|\\w{17})$)|(^mi-\\w{17}$)", + "type": "string" + }, + "MaxConcurrency": { + "examples": [ + "1%", + "10%", + "50%", + "1" + ], + "pattern": "^([1-9][0-9]{0,6}|[1-9][0-9]%|[1-9]%|100%)$", + "type": "string" + }, + "MaxErrors": { + "examples": [ + "1%", + "10%", + "50%", + "1" + ], + "pattern": "^([1-9][0-9]{0,6}|[0]|[1-9][0-9]%|[0-9]%|100%)$", + "type": "string" + }, + "Name": { + "description": "The name of the SSM document.", + "examples": [ + "AWS-GatherSoftwareInventory", + "MyCustomSSMDocument" + ], + "pattern": "^[a-zA-Z0-9_\\-.:/]{3,200}$", + "type": "string" + }, + "OutputLocation": { + "$ref": "#/definitions/InstanceAssociationOutputLocation" + }, + "Parameters": { + "additionalProperties": false, + "description": "Parameter values that the SSM document uses at runtime.", + "patternProperties": { + ".{1,255}": { + "$ref": "#/definitions/ParameterValues" + } + }, + "type": "object" + }, + "ScheduleExpression": { + "description": "A Cron or Rate expression that specifies when the association is applied to the target.", + "examples": [ + "cron(0 0 */1 * * ? *)", + "cron(0 16 ? * TUE *)", + "rate(30 minutes)", + "rate(7 days)" + ], + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "ScheduleOffset": { + "maximum": 6, + "minimum": 1, + "type": "integer" + }, + "SyncCompliance": { + "enum": [ + "AUTO", + "MANUAL" + ], + "type": "string" + }, + "Targets": { + "description": "The targets that the SSM document sends commands to.", + "items": { + "$ref": "#/definitions/Target" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "WaitForSuccessTimeoutSeconds": { + "maximum": 172800, + "minimum": 15, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/AssociationId" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ssm", + "tagging": { + "taggable": false + }, + "typeName": "AWS::SSM::Association", + "writeOnlyProperties": [ + "/properties/WaitForSuccessTimeoutSeconds" + ] +} diff --git a/src/schema/aws-ssm-document.json b/src/schema/aws-ssm-document.json index af8189b9..da06447d 100644 --- a/src/schema/aws-ssm-document.json +++ b/src/schema/aws-ssm-document.json @@ -1,236 +1,246 @@ -{ - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/Content", - "/properties/Attachments", - "/properties/VersionName", - "/properties/DocumentFormat", - "/properties/TargetType", - "/properties/Requires" - ], - "createOnlyProperties": [ - "/properties/Name", - "/properties/DocumentType" - ], - "definitions": { - "AttachmentsSource": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key of a key-value pair that identifies the location of an attachment to a document.", - "enum": [ - "SourceUrl", - "S3FileUrl", - "AttachmentReference" - ], - "type": "string" - }, - "Name": { - "description": "The name of the document attachment file.", - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Values": { - "description": "The value of a key-value pair that identifies the location of an attachment to a document. The format for Value depends on the type of key you specify.", - "insertionOrder": false, - "items": { - "maxLength": 100000, - "minLength": 1, - "type": "string" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "DocumentRequires": { - "additionalProperties": false, - "properties": { - "Name": { - "description": "The name of the required SSM document. The name can be an Amazon Resource Name (ARN).", - "maxLength": 200, - "pattern": "^[a-zA-Z0-9_\\-.:/]{3,200}$", - "type": "string" - }, - "Version": { - "description": "The document version required by the current document.", - "maxLength": 8, - "pattern": "([$]LATEST|[$]DEFAULT|^[1-9][0-9]*$)", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The name of the tag.", - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "description": "The value of the tag.", - "maxLength": 256, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The AWS::SSM::Document resource is an SSM document in AWS Systems Manager that defines the actions that Systems Manager performs, which can be used to set up and run commands on your instances.", - "handlers": { - "create": { - "permissions": [ - "ssm:CreateDocument", - "ssm:GetDocument", - "ssm:AddTagsToResource", - "ssm:ListTagsForResource", - "s3:GetObject", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "ssm:DeleteDocument", - "ssm:GetDocument" - ] - }, - "list": { - "permissions": [ - "ssm:ListDocuments" - ] - }, - "read": { - "permissions": [ - "ssm:GetDocument", - "ssm:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "ssm:UpdateDocument", - "s3:GetObject", - "ssm:AddTagsToResource", - "ssm:RemoveTagsFromResource", - "ssm:ListTagsForResource", - "iam:PassRole", - "ssm:UpdateDocumentDefaultVersion", - "ssm:DescribeDocument" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Attachments": { - "description": "A list of key and value pairs that describe attachments to a version of a document.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AttachmentsSource" - }, - "maxItems": 20, - "minItems": 0, - "type": "array" - }, - "Content": { - "description": "The content for the Systems Manager document in JSON, YAML or String format.", - "type": [ - "object", - "string" - ] - }, - "DocumentFormat": { - "default": "JSON", - "description": "Specify the document format for the request. The document format can be either JSON or YAML. JSON is the default format.", - "enum": [ - "YAML", - "JSON", - "TEXT" - ], - "type": "string" - }, - "DocumentType": { - "description": "The type of document to create.", - "enum": [ - "ApplicationConfiguration", - "ApplicationConfigurationSchema", - "Automation", - "Automation.ChangeTemplate", - "ChangeCalendar", - "CloudFormation", - "Command", - "DeploymentStrategy", - "Package", - "Policy", - "ProblemAnalysis", - "ProblemAnalysisTemplate", - "Session" - ], - "type": "string" - }, - "Name": { - "description": "A name for the Systems Manager document.", - "pattern": "^[a-zA-Z0-9_\\-.]{3,128}$", - "type": "string" - }, - "Requires": { - "description": "A list of SSM documents required by a document. For example, an ApplicationConfiguration document requires an ApplicationConfigurationSchema document.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DocumentRequires" - }, - "minItems": 1, - "type": "array" - }, - "Tags": { - "description": "Optional metadata that you assign to a resource. Tags enable you to categorize a resource in different ways, such as by purpose, owner, or environment.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 1000, - "type": "array" - }, - "TargetType": { - "description": "Specify a target type to define the kinds of resources the document can run on.", - "pattern": "^\\/[\\w\\.\\-\\:\\/]*$", - "type": "string" - }, - "UpdateMethod": { - "default": "Replace", - "description": "Update method - when set to 'Replace', the update will replace the existing document; when set to 'NewVersion', the update will create a new version.", - "enum": [ - "Replace", - "NewVersion" - ], - "type": "string" - }, - "VersionName": { - "description": "An optional field specifying the version of the artifact you are creating with the document. This value is unique across all versions of a document, and cannot be changed.", - "pattern": "^[a-zA-Z0-9_\\-.]{1,128}$", - "type": "string" - } - }, - "required": [ - "Content" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ssm", - "tagging": { - "taggable": true - }, - "typeName": "AWS::SSM::Document", - "writeOnlyProperties": [ - "/properties/UpdateMethod", - "/properties/Attachments" - ] -} +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/Content", + "/properties/Attachments", + "/properties/VersionName", + "/properties/DocumentFormat", + "/properties/TargetType", + "/properties/Requires" + ], + "createOnlyProperties": [ + "/properties/Name", + "/properties/DocumentType" + ], + "definitions": { + "AttachmentsSource": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key of a key-value pair that identifies the location of an attachment to a document.", + "enum": [ + "SourceUrl", + "S3FileUrl", + "AttachmentReference" + ], + "type": "string" + }, + "Name": { + "description": "The name of the document attachment file.", + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Values": { + "description": "The value of a key-value pair that identifies the location of an attachment to a document. The format for Value depends on the type of key you specify.", + "insertionOrder": false, + "items": { + "maxLength": 100000, + "minLength": 1, + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "DocumentRequires": { + "additionalProperties": false, + "properties": { + "Name": { + "description": "The name of the required SSM document. The name can be an Amazon Resource Name (ARN).", + "maxLength": 200, + "pattern": "^[a-zA-Z0-9_\\-.:/]{3,200}$", + "type": "string" + }, + "Version": { + "description": "The document version required by the current document.", + "maxLength": 8, + "pattern": "([$]LATEST|[$]DEFAULT|^[1-9][0-9]*$)", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The name of the tag.", + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "description": "The value of the tag.", + "maxLength": 256, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The AWS::SSM::Document resource is an SSM document in AWS Systems Manager that defines the actions that Systems Manager performs, which can be used to set up and run commands on your instances.", + "handlers": { + "create": { + "permissions": [ + "ssm:CreateDocument", + "ssm:GetDocument", + "ssm:AddTagsToResource", + "ssm:ListTagsForResource", + "s3:GetObject", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "ssm:DeleteDocument", + "ssm:GetDocument" + ] + }, + "list": { + "permissions": [ + "ssm:ListDocuments" + ] + }, + "read": { + "permissions": [ + "ssm:DescribeDocument", + "ssm:GetDocument", + "ssm:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ssm:UpdateDocument", + "s3:GetObject", + "ssm:AddTagsToResource", + "ssm:RemoveTagsFromResource", + "ssm:ListTagsForResource", + "iam:PassRole", + "ssm:UpdateDocumentDefaultVersion", + "ssm:DescribeDocument" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Attachments": { + "description": "A list of key and value pairs that describe attachments to a version of a document.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AttachmentsSource" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "Content": { + "description": "The content for the Systems Manager document in JSON, YAML or String format.", + "type": [ + "object", + "string" + ] + }, + "DocumentFormat": { + "default": "JSON", + "description": "Specify the document format for the request. The document format can be either JSON or YAML. JSON is the default format.", + "enum": [ + "YAML", + "JSON", + "TEXT" + ], + "type": "string" + }, + "DocumentType": { + "description": "The type of document to create.", + "enum": [ + "ApplicationConfiguration", + "ApplicationConfigurationSchema", + "Automation", + "Automation.ChangeTemplate", + "ChangeCalendar", + "CloudFormation", + "Command", + "DeploymentStrategy", + "Package", + "Policy", + "ProblemAnalysis", + "ProblemAnalysisTemplate", + "Session" + ], + "type": "string" + }, + "Name": { + "description": "A name for the Systems Manager document.", + "pattern": "^[a-zA-Z0-9_\\-.]{3,128}$", + "type": "string" + }, + "Requires": { + "description": "A list of SSM documents required by a document. For example, an ApplicationConfiguration document requires an ApplicationConfigurationSchema document.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DocumentRequires" + }, + "minItems": 1, + "type": "array" + }, + "Tags": { + "description": "Optional metadata that you assign to a resource. Tags enable you to categorize a resource in different ways, such as by purpose, owner, or environment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 1000, + "type": "array" + }, + "TargetType": { + "description": "Specify a target type to define the kinds of resources the document can run on.", + "pattern": "^\\/[\\w\\.\\-\\:\\/]*$", + "type": "string" + }, + "UpdateMethod": { + "default": "Replace", + "description": "Update method - when set to 'Replace', the update will replace the existing document; when set to 'NewVersion', the update will create a new version.", + "enum": [ + "Replace", + "NewVersion" + ], + "type": "string" + }, + "VersionName": { + "description": "An optional field specifying the version of the artifact you are creating with the document. This value is unique across all versions of a document, and cannot be changed.", + "pattern": "^[a-zA-Z0-9_\\-.]{1,128}$", + "type": "string" + } + }, + "required": [ + "Content" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ssm", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ssm:AddTagsToResource", + "ssm:ListTagsForResource", + "ssm:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SSM::Document", + "writeOnlyProperties": [ + "/properties/UpdateMethod", + "/properties/Attachments" + ] +} diff --git a/src/schema/aws-ssm-maintenancewindow.json b/src/schema/aws-ssm-maintenancewindow.json index 6aac3f54..79330473 100644 --- a/src/schema/aws-ssm-maintenancewindow.json +++ b/src/schema/aws-ssm-maintenancewindow.json @@ -1,78 +1,78 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SSM::MaintenanceWindow", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AllowUnassociatedTargets": { - "type": "boolean" - }, - "Cutoff": { - "type": "integer" - }, - "Description": { - "type": "string" - }, - "Duration": { - "type": "integer" - }, - "EndDate": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Schedule": { - "type": "string" - }, - "ScheduleOffset": { - "type": "integer" - }, - "ScheduleTimezone": { - "type": "string" - }, - "StartDate": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "AllowUnassociatedTargets", - "Cutoff", - "Schedule", - "Duration", - "Name" - ], - "typeName": "AWS::SSM::MaintenanceWindow" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SSM::MaintenanceWindow", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AllowUnassociatedTargets": { + "type": "boolean" + }, + "Cutoff": { + "type": "integer" + }, + "Description": { + "type": "string" + }, + "Duration": { + "type": "integer" + }, + "EndDate": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Schedule": { + "type": "string" + }, + "ScheduleOffset": { + "type": "integer" + }, + "ScheduleTimezone": { + "type": "string" + }, + "StartDate": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "AllowUnassociatedTargets", + "Cutoff", + "Schedule", + "Duration", + "Name" + ], + "typeName": "AWS::SSM::MaintenanceWindow" +} diff --git a/src/schema/aws-ssm-maintenancewindowtarget.json b/src/schema/aws-ssm-maintenancewindowtarget.json index 37070935..f0489e87 100644 --- a/src/schema/aws-ssm-maintenancewindowtarget.json +++ b/src/schema/aws-ssm-maintenancewindowtarget.json @@ -1,68 +1,68 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/WindowId" - ], - "definitions": { - "Targets": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Values": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Values", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SSM::MaintenanceWindowTarget", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "OwnerInformation": { - "type": "string" - }, - "ResourceType": { - "type": "string" - }, - "Targets": { - "items": { - "$ref": "#/definitions/Targets" - }, - "type": "array", - "uniqueItems": false - }, - "WindowId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "WindowId", - "ResourceType", - "Targets" - ], - "typeName": "AWS::SSM::MaintenanceWindowTarget" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/WindowId" + ], + "definitions": { + "Targets": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Values": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Values", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SSM::MaintenanceWindowTarget", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "OwnerInformation": { + "type": "string" + }, + "ResourceType": { + "type": "string" + }, + "Targets": { + "items": { + "$ref": "#/definitions/Targets" + }, + "type": "array", + "uniqueItems": false + }, + "WindowId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "WindowId", + "ResourceType", + "Targets" + ], + "typeName": "AWS::SSM::MaintenanceWindowTarget" +} diff --git a/src/schema/aws-ssm-maintenancewindowtask.json b/src/schema/aws-ssm-maintenancewindowtask.json index 8456eba4..91aa0141 100644 --- a/src/schema/aws-ssm-maintenancewindowtask.json +++ b/src/schema/aws-ssm-maintenancewindowtask.json @@ -1,243 +1,243 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/WindowId", - "/properties/TaskType" - ], - "definitions": { - "CloudWatchOutputConfig": { - "additionalProperties": false, - "properties": { - "CloudWatchLogGroupName": { - "type": "string" - }, - "CloudWatchOutputEnabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "LoggingInfo": { - "additionalProperties": false, - "properties": { - "Region": { - "type": "string" - }, - "S3Bucket": { - "type": "string" - }, - "S3Prefix": { - "type": "string" - } - }, - "required": [ - "S3Bucket", - "Region" - ], - "type": "object" - }, - "MaintenanceWindowAutomationParameters": { - "additionalProperties": false, - "properties": { - "DocumentVersion": { - "type": "string" - }, - "Parameters": { - "type": "object" - } - }, - "type": "object" - }, - "MaintenanceWindowLambdaParameters": { - "additionalProperties": false, - "properties": { - "ClientContext": { - "type": "string" - }, - "Payload": { - "type": "string" - }, - "Qualifier": { - "type": "string" - } - }, - "type": "object" - }, - "MaintenanceWindowRunCommandParameters": { - "additionalProperties": false, - "properties": { - "CloudWatchOutputConfig": { - "$ref": "#/definitions/CloudWatchOutputConfig" - }, - "Comment": { - "type": "string" - }, - "DocumentHash": { - "type": "string" - }, - "DocumentHashType": { - "type": "string" - }, - "DocumentVersion": { - "type": "string" - }, - "NotificationConfig": { - "$ref": "#/definitions/NotificationConfig" - }, - "OutputS3BucketName": { - "type": "string" - }, - "OutputS3KeyPrefix": { - "type": "string" - }, - "Parameters": { - "type": "object" - }, - "ServiceRoleArn": { - "type": "string" - }, - "TimeoutSeconds": { - "type": "integer" - } - }, - "type": "object" - }, - "MaintenanceWindowStepFunctionsParameters": { - "additionalProperties": false, - "properties": { - "Input": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "type": "object" - }, - "NotificationConfig": { - "additionalProperties": false, - "properties": { - "NotificationArn": { - "type": "string" - }, - "NotificationEvents": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "NotificationType": { - "type": "string" - } - }, - "required": [ - "NotificationArn" - ], - "type": "object" - }, - "Target": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Values": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Values", - "Key" - ], - "type": "object" - }, - "TaskInvocationParameters": { - "additionalProperties": false, - "properties": { - "MaintenanceWindowAutomationParameters": { - "$ref": "#/definitions/MaintenanceWindowAutomationParameters" - }, - "MaintenanceWindowLambdaParameters": { - "$ref": "#/definitions/MaintenanceWindowLambdaParameters" - }, - "MaintenanceWindowRunCommandParameters": { - "$ref": "#/definitions/MaintenanceWindowRunCommandParameters" - }, - "MaintenanceWindowStepFunctionsParameters": { - "$ref": "#/definitions/MaintenanceWindowStepFunctionsParameters" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SSM::MaintenanceWindowTask", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CutoffBehavior": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "LoggingInfo": { - "$ref": "#/definitions/LoggingInfo" - }, - "MaxConcurrency": { - "type": "string" - }, - "MaxErrors": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Priority": { - "type": "integer" - }, - "ServiceRoleArn": { - "type": "string" - }, - "Targets": { - "items": { - "$ref": "#/definitions/Target" - }, - "type": "array", - "uniqueItems": false - }, - "TaskArn": { - "type": "string" - }, - "TaskInvocationParameters": { - "$ref": "#/definitions/TaskInvocationParameters" - }, - "TaskParameters": { - "type": "object" - }, - "TaskType": { - "type": "string" - }, - "WindowId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "WindowId", - "Priority", - "TaskType", - "TaskArn" - ], - "typeName": "AWS::SSM::MaintenanceWindowTask" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/WindowId", + "/properties/TaskType" + ], + "definitions": { + "CloudWatchOutputConfig": { + "additionalProperties": false, + "properties": { + "CloudWatchLogGroupName": { + "type": "string" + }, + "CloudWatchOutputEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "LoggingInfo": { + "additionalProperties": false, + "properties": { + "Region": { + "type": "string" + }, + "S3Bucket": { + "type": "string" + }, + "S3Prefix": { + "type": "string" + } + }, + "required": [ + "S3Bucket", + "Region" + ], + "type": "object" + }, + "MaintenanceWindowAutomationParameters": { + "additionalProperties": false, + "properties": { + "DocumentVersion": { + "type": "string" + }, + "Parameters": { + "type": "object" + } + }, + "type": "object" + }, + "MaintenanceWindowLambdaParameters": { + "additionalProperties": false, + "properties": { + "ClientContext": { + "type": "string" + }, + "Payload": { + "type": "string" + }, + "Qualifier": { + "type": "string" + } + }, + "type": "object" + }, + "MaintenanceWindowRunCommandParameters": { + "additionalProperties": false, + "properties": { + "CloudWatchOutputConfig": { + "$ref": "#/definitions/CloudWatchOutputConfig" + }, + "Comment": { + "type": "string" + }, + "DocumentHash": { + "type": "string" + }, + "DocumentHashType": { + "type": "string" + }, + "DocumentVersion": { + "type": "string" + }, + "NotificationConfig": { + "$ref": "#/definitions/NotificationConfig" + }, + "OutputS3BucketName": { + "type": "string" + }, + "OutputS3KeyPrefix": { + "type": "string" + }, + "Parameters": { + "type": "object" + }, + "ServiceRoleArn": { + "type": "string" + }, + "TimeoutSeconds": { + "type": "integer" + } + }, + "type": "object" + }, + "MaintenanceWindowStepFunctionsParameters": { + "additionalProperties": false, + "properties": { + "Input": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "type": "object" + }, + "NotificationConfig": { + "additionalProperties": false, + "properties": { + "NotificationArn": { + "type": "string" + }, + "NotificationEvents": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "NotificationType": { + "type": "string" + } + }, + "required": [ + "NotificationArn" + ], + "type": "object" + }, + "Target": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Values": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "Values", + "Key" + ], + "type": "object" + }, + "TaskInvocationParameters": { + "additionalProperties": false, + "properties": { + "MaintenanceWindowAutomationParameters": { + "$ref": "#/definitions/MaintenanceWindowAutomationParameters" + }, + "MaintenanceWindowLambdaParameters": { + "$ref": "#/definitions/MaintenanceWindowLambdaParameters" + }, + "MaintenanceWindowRunCommandParameters": { + "$ref": "#/definitions/MaintenanceWindowRunCommandParameters" + }, + "MaintenanceWindowStepFunctionsParameters": { + "$ref": "#/definitions/MaintenanceWindowStepFunctionsParameters" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SSM::MaintenanceWindowTask", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CutoffBehavior": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "LoggingInfo": { + "$ref": "#/definitions/LoggingInfo" + }, + "MaxConcurrency": { + "type": "string" + }, + "MaxErrors": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Priority": { + "type": "integer" + }, + "ServiceRoleArn": { + "type": "string" + }, + "Targets": { + "items": { + "$ref": "#/definitions/Target" + }, + "type": "array", + "uniqueItems": false + }, + "TaskArn": { + "type": "string" + }, + "TaskInvocationParameters": { + "$ref": "#/definitions/TaskInvocationParameters" + }, + "TaskParameters": { + "type": "object" + }, + "TaskType": { + "type": "string" + }, + "WindowId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "WindowId", + "Priority", + "TaskType", + "TaskArn" + ], + "typeName": "AWS::SSM::MaintenanceWindowTask" +} diff --git a/src/schema/aws-ssm-parameter.json b/src/schema/aws-ssm-parameter.json index 5a5c4074..29b3669f 100644 --- a/src/schema/aws-ssm-parameter.json +++ b/src/schema/aws-ssm-parameter.json @@ -1,120 +1,120 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "description": "The ``AWS::SSM::Parameter`` resource creates an SSM parameter in SYSlong Parameter Store.\n To create an SSM parameter, you must have the IAMlong (IAM) permissions ``ssm:PutParameter`` and ``ssm:AddTagsToResource``. On stack creation, CFNlong adds the following three tags to the parameter: ``aws:cloudformation:stack-name``, ``aws:cloudformation:logical-id``, and ``aws:cloudformation:stack-id``, in addition to any custom tags you specify.\n To add, update, or remove tags during stack update, you must have IAM permissions for both ``ssm:AddTagsToResource`` and ``ssm:RemoveTagsFromResource``. For more information, see [Managing Access Using Policies](https://docs.aws.amazon.com/systems-manager/latest/userguide/security-iam.html#security_iam_access-manage) in the *User Guide*.\n For information about valid values for parameters, see [About requirements and constraints for parameter names](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-su-create.html#sysman-parameter-name-constraints) in the *User Guide* and [PutParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutParameter.html) in the *API Reference*.", - "handlers": { - "create": { - "permissions": [ - "ssm:PutParameter", - "ssm:AddTagsToResource", - "ssm:GetParameters" - ], - "timeoutInMinutes": 5 - }, - "delete": { - "permissions": [ - "ssm:DeleteParameter" - ] - }, - "list": { - "permissions": [ - "ssm:DescribeParameters" - ] - }, - "read": { - "permissions": [ - "ssm:GetParameters" - ] - }, - "update": { - "permissions": [ - "ssm:PutParameter", - "ssm:AddTagsToResource", - "ssm:RemoveTagsFromResource", - "ssm:GetParameters" - ], - "timeoutInMinutes": 5 - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "AllowedPattern": { - "description": "A regular expression used to validate the parameter value. For example, for ``String`` types with values restricted to numbers, you can specify the following: ``AllowedPattern=^\\d+$``", - "type": "string" - }, - "DataType": { - "description": "The data type of the parameter, such as ``text`` or ``aws:ec2:image``. The default is ``text``.", - "enum": [ - "text", - "aws:ec2:image" - ], - "type": "string" - }, - "Description": { - "description": "Information about the parameter.", - "type": "string" - }, - "Name": { - "description": "The name of the parameter.\n The maximum length constraint listed below includes capacity for additional system attributes that aren't part of the name. The maximum length for a parameter name, including the full length of the parameter Amazon Resource Name (ARN), is 1011 characters. For example, the length of the following parameter name is 65 characters, not 20 characters: ``arn:aws:ssm:us-east-2:111222333444:parameter/ExampleParameterName``", - "type": "string" - }, - "Policies": { - "description": "Information about the policies assigned to a parameter.\n [Assigning parameter policies](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-policies.html) in the *User Guide*.", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "description": "Optional metadata that you assign to a resource in the form of an arbitrary set of tags (key-value pairs). Tags enable you to categorize a resource in different ways, such as by purpose, owner, or environment. For example, you might want to tag a SYS parameter to identify the type of resource to which it applies, the environment, or the type of configuration data referenced by the parameter.", - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { - "type": "string" - } - }, - "type": "object" - }, - "Tier": { - "description": "The parameter tier.", - "enum": [ - "Standard", - "Advanced", - "Intelligent-Tiering" - ], - "type": "string" - }, - "Type": { - "description": "The type of parameter.", - "enum": [ - "String", - "StringList" - ], - "type": "string" - }, - "Value": { - "description": "The parameter value.\n If type is ``StringList``, the system returns a comma-separated string with no spaces between commas in the ``Value`` field.", - "type": "string" - } - }, - "required": [ - "Value", - "Type" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SSM::Parameter", - "writeOnlyProperties": [ - "/properties/Tags", - "/properties/Description", - "/properties/Tier", - "/properties/AllowedPattern", - "/properties/Policies" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "description": "The ``AWS::SSM::Parameter`` resource creates an SSM parameter in SYSlong Parameter Store.\n To create an SSM parameter, you must have the IAMlong (IAM) permissions ``ssm:PutParameter`` and ``ssm:AddTagsToResource``. On stack creation, CFNlong adds the following three tags to the parameter: ``aws:cloudformation:stack-name``, ``aws:cloudformation:logical-id``, and ``aws:cloudformation:stack-id``, in addition to any custom tags you specify.\n To add, update, or remove tags during stack update, you must have IAM permissions for both ``ssm:AddTagsToResource`` and ``ssm:RemoveTagsFromResource``. For more information, see [Managing Access Using Policies](https://docs.aws.amazon.com/systems-manager/latest/userguide/security-iam.html#security_iam_access-manage) in the *User Guide*.\n For information about valid values for parameters, see [About requirements and constraints for parameter names](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-su-create.html#sysman-parameter-name-constraints) in the *User Guide* and [PutParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutParameter.html) in the *API Reference*.", + "handlers": { + "create": { + "permissions": [ + "ssm:PutParameter", + "ssm:AddTagsToResource", + "ssm:GetParameters" + ], + "timeoutInMinutes": 5 + }, + "delete": { + "permissions": [ + "ssm:DeleteParameter" + ] + }, + "list": { + "permissions": [ + "ssm:DescribeParameters" + ] + }, + "read": { + "permissions": [ + "ssm:GetParameters" + ] + }, + "update": { + "permissions": [ + "ssm:PutParameter", + "ssm:AddTagsToResource", + "ssm:RemoveTagsFromResource", + "ssm:GetParameters" + ], + "timeoutInMinutes": 5 + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "AllowedPattern": { + "description": "A regular expression used to validate the parameter value. For example, for ``String`` types with values restricted to numbers, you can specify the following: ``AllowedPattern=^\\d+$``", + "type": "string" + }, + "DataType": { + "description": "The data type of the parameter, such as ``text`` or ``aws:ec2:image``. The default is ``text``.", + "enum": [ + "text", + "aws:ec2:image" + ], + "type": "string" + }, + "Description": { + "description": "Information about the parameter.", + "type": "string" + }, + "Name": { + "description": "The name of the parameter.\n The maximum length constraint listed below includes capacity for additional system attributes that aren't part of the name. The maximum length for a parameter name, including the full length of the parameter Amazon Resource Name (ARN), is 1011 characters. For example, the length of the following parameter name is 65 characters, not 20 characters: ``arn:aws:ssm:us-east-2:111222333444:parameter/ExampleParameterName``", + "type": "string" + }, + "Policies": { + "description": "Information about the policies assigned to a parameter.\n [Assigning parameter policies](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-policies.html) in the *User Guide*.", + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "description": "Optional metadata that you assign to a resource in the form of an arbitrary set of tags (key-value pairs). Tags enable you to categorize a resource in different ways, such as by purpose, owner, or environment. For example, you might want to tag a SYS parameter to identify the type of resource to which it applies, the environment, or the type of configuration data referenced by the parameter.", + "patternProperties": { + "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { + "type": "string" + } + }, + "type": "object" + }, + "Tier": { + "description": "The parameter tier.", + "enum": [ + "Standard", + "Advanced", + "Intelligent-Tiering" + ], + "type": "string" + }, + "Type": { + "description": "The type of parameter.", + "enum": [ + "String", + "StringList" + ], + "type": "string" + }, + "Value": { + "description": "The parameter value.\n If type is ``StringList``, the system returns a comma-separated string with no spaces between commas in the ``Value`` field.", + "type": "string" + } + }, + "required": [ + "Value", + "Type" + ], + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SSM::Parameter", + "writeOnlyProperties": [ + "/properties/Tags", + "/properties/Description", + "/properties/Tier", + "/properties/AllowedPattern", + "/properties/Policies" + ] +} diff --git a/src/schema/aws-ssm-patchbaseline.json b/src/schema/aws-ssm-patchbaseline.json index 6007dcd0..cbe23247 100644 --- a/src/schema/aws-ssm-patchbaseline.json +++ b/src/schema/aws-ssm-patchbaseline.json @@ -1,370 +1,375 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/OperatingSystem" - ], - "definitions": { - "PatchFilter": { - "additionalProperties": false, - "description": "Defines which patches should be included in a patch baseline.", - "properties": { - "Key": { - "enum": [ - "ADVISORY_ID", - "ARCH", - "BUGZILLA_ID", - "CLASSIFICATION", - "CVE_ID", - "EPOCH", - "MSRC_SEVERITY", - "NAME", - "PATCH_ID", - "PATCH_SET", - "PRIORITY", - "PRODUCT", - "PRODUCT_FAMILY", - "RELEASE", - "REPOSITORY", - "SECTION", - "SECURITY", - "SEVERITY", - "VERSION" - ], - "type": "string" - }, - "Values": { - "items": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "maxItems": 20, - "minItems": 0, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "PatchFilterGroup": { - "additionalProperties": false, - "description": "The patch filter group that defines the criteria for the rule.", - "properties": { - "PatchFilters": { - "items": { - "$ref": "#/definitions/PatchFilter" - }, - "maxItems": 5, - "minItems": 0, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "PatchSource": { - "additionalProperties": false, - "description": "Information about the patches to use to update the instances, including target operating systems and source repository. Applies to Linux instances only.", - "properties": { - "Configuration": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "Name": { - "pattern": "^[a-zA-Z0-9_\\-.]{3,50}$", - "type": "string" - }, - "Products": { - "items": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "maxItems": 20, - "minItems": 0, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "Rule": { - "additionalProperties": false, - "description": "Defines an approval rule for a patch baseline.", - "insertionOrder": false, - "properties": { - "ApproveAfterDays": { - "maximum": 360, - "minimum": 0, - "type": "integer" - }, - "ApproveUntilDate": { - "maxLength": 10, - "minLength": 0, - "type": "string" - }, - "ComplianceLevel": { - "enum": [ - "CRITICAL", - "HIGH", - "INFORMATIONAL", - "LOW", - "MEDIUM", - "UNSPECIFIED" - ], - "type": "string" - }, - "EnableNonSecurity": { - "default": false, - "type": "boolean" - }, - "PatchFilterGroup": { - "$ref": "#/definitions/PatchFilterGroup" - } - }, - "type": "object" - }, - "RuleGroup": { - "additionalProperties": false, - "description": "A set of rules defining the approval rules for a patch baseline.", - "insertionOrder": false, - "properties": { - "PatchRules": { - "items": { - "$ref": "#/definitions/Rule" - }, - "maxItems": 10, - "minItems": 0, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Metadata that you assign to your AWS resources.", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SSM::PatchBaseline", - "handlers": { - "create": { - "permissions": [ - "ssm:CreatePatchBaseline", - "ssm:RegisterPatchBaselineForPatchGroup", - "ssm:AddTagsToResource", - "ssm:RemoveTagsFromResource", - "ssm:ListTagsForResource", - "ssm:GetDefaultPatchBaseline", - "ssm:RegisterDefaultPatchBaseline" - ] - }, - "delete": { - "permissions": [ - "ssm:DeletePatchBaseline", - "ssm:GetPatchBaseline", - "ssm:DeregisterPatchBaselineForPatchGroup" - ] - }, - "list": { - "permissions": [ - "ssm:DescribePatchBaselines", - "ssm:GetDefaultPatchBaseline", - "ssm:GetPatchBaseline", - "ssm:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "ssm:GetDefaultPatchBaseline", - "ssm:GetPatchBaseline", - "ssm:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "ssm:UpdatePatchBaseline", - "ssm:DeregisterPatchBaselineForPatchGroup", - "ssm:AddTagsToResource", - "ssm:RemoveTagsFromResource", - "ssm:ListTagsForResource", - "ssm:GetDefaultPatchBaseline", - "ssm:RegisterDefaultPatchBaseline" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApprovalRules": { - "$ref": "#/definitions/RuleGroup" - }, - "ApprovedPatches": { - "description": "A list of explicitly approved patches for the baseline.", - "insertionOrder": false, - "items": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "ApprovedPatchesComplianceLevel": { - "default": "UNSPECIFIED", - "description": "Defines the compliance level for approved patches. This means that if an approved patch is reported as missing, this is the severity of the compliance violation. The default value is UNSPECIFIED.", - "enum": [ - "CRITICAL", - "HIGH", - "MEDIUM", - "LOW", - "INFORMATIONAL", - "UNSPECIFIED" - ], - "type": "string" - }, - "ApprovedPatchesEnableNonSecurity": { - "default": false, - "description": "Indicates whether the list of approved patches includes non-security updates that should be applied to the instances. The default value is 'false'. Applies to Linux instances only.", - "type": "boolean" - }, - "DefaultBaseline": { - "default": false, - "description": "Set the baseline as default baseline. Only registering to default patch baseline is allowed.", - "type": "boolean" - }, - "Description": { - "description": "The description of the patch baseline.", - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "GlobalFilters": { - "$ref": "#/definitions/PatchFilterGroup", - "description": "A set of global filters used to include patches in the baseline." - }, - "Id": { - "description": "The ID of the patch baseline.", - "maxLength": 128, - "minLength": 20, - "pattern": "^[a-zA-Z0-9_\\-:/]{20,128}$", - "type": "string" - }, - "Name": { - "description": "The name of the patch baseline.", - "maxLength": 128, - "minLength": 3, - "pattern": "^[a-zA-Z0-9_\\-.]{3,128}$", - "type": "string" - }, - "OperatingSystem": { - "default": "WINDOWS", - "description": "Defines the operating system the patch baseline applies to. The Default value is WINDOWS.", - "enum": [ - "WINDOWS", - "AMAZON_LINUX", - "AMAZON_LINUX_2", - "AMAZON_LINUX_2022", - "AMAZON_LINUX_2023", - "UBUNTU", - "REDHAT_ENTERPRISE_LINUX", - "SUSE", - "CENTOS", - "ORACLE_LINUX", - "DEBIAN", - "MACOS", - "RASPBIAN", - "ROCKY_LINUX", - "ALMA_LINUX" - ], - "type": "string" - }, - "PatchGroups": { - "description": "PatchGroups is used to associate instances with a specific patch baseline", - "items": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "RejectedPatches": { - "description": "A list of explicitly rejected patches for the baseline.", - "insertionOrder": false, - "items": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "RejectedPatchesAction": { - "default": "ALLOW_AS_DEPENDENCY", - "description": "The action for Patch Manager to take on patches included in the RejectedPackages list.", - "enum": [ - "ALLOW_AS_DEPENDENCY", - "BLOCK" - ], - "type": "string" - }, - "Sources": { - "description": "Information about the patches to use to update the instances, including target operating systems and source repository. Applies to Linux instances only.", - "items": { - "$ref": "#/definitions/PatchSource" - }, - "maxItems": 20, - "minItems": 0, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "description": "Optional metadata that you assign to a resource. Tags enable you to categorize a resource in different ways.", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Name" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SSM::PatchBaseline" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/OperatingSystem" + ], + "definitions": { + "PatchFilter": { + "additionalProperties": false, + "description": "Defines which patches should be included in a patch baseline.", + "properties": { + "Key": { + "enum": [ + "ADVISORY_ID", + "ARCH", + "BUGZILLA_ID", + "CLASSIFICATION", + "CVE_ID", + "EPOCH", + "MSRC_SEVERITY", + "NAME", + "PATCH_ID", + "PATCH_SET", + "PRIORITY", + "PRODUCT", + "PRODUCT_FAMILY", + "RELEASE", + "REPOSITORY", + "SECTION", + "SECURITY", + "SEVERITY", + "VERSION" + ], + "type": "string" + }, + "Values": { + "items": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "maxItems": 20, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "PatchFilterGroup": { + "additionalProperties": false, + "description": "The patch filter group that defines the criteria for the rule.", + "properties": { + "PatchFilters": { + "items": { + "$ref": "#/definitions/PatchFilter" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "PatchSource": { + "additionalProperties": false, + "description": "Information about the patches to use to update the instances, including target operating systems and source repository. Applies to Linux instances only.", + "properties": { + "Configuration": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "pattern": "^[a-zA-Z0-9_\\-.]{3,50}$", + "type": "string" + }, + "Products": { + "items": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "maxItems": 20, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "Rule": { + "additionalProperties": false, + "description": "Defines an approval rule for a patch baseline.", + "insertionOrder": false, + "properties": { + "ApproveAfterDays": { + "maximum": 360, + "minimum": 0, + "type": "integer" + }, + "ApproveUntilDate": { + "maxLength": 10, + "minLength": 0, + "type": "string" + }, + "ComplianceLevel": { + "enum": [ + "CRITICAL", + "HIGH", + "INFORMATIONAL", + "LOW", + "MEDIUM", + "UNSPECIFIED" + ], + "type": "string" + }, + "EnableNonSecurity": { + "default": false, + "type": "boolean" + }, + "PatchFilterGroup": { + "$ref": "#/definitions/PatchFilterGroup" + } + }, + "type": "object" + }, + "RuleGroup": { + "additionalProperties": false, + "description": "A set of rules defining the approval rules for a patch baseline.", + "insertionOrder": false, + "properties": { + "PatchRules": { + "items": { + "$ref": "#/definitions/Rule" + }, + "maxItems": 10, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Metadata that you assign to your AWS resources.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SSM::PatchBaseline", + "handlers": { + "create": { + "permissions": [ + "ssm:CreatePatchBaseline", + "ssm:RegisterPatchBaselineForPatchGroup", + "ssm:AddTagsToResource", + "ssm:RemoveTagsFromResource", + "ssm:ListTagsForResource", + "ssm:GetDefaultPatchBaseline", + "ssm:RegisterDefaultPatchBaseline" + ] + }, + "delete": { + "permissions": [ + "ssm:DeletePatchBaseline", + "ssm:GetPatchBaseline", + "ssm:DeregisterPatchBaselineForPatchGroup" + ] + }, + "list": { + "permissions": [ + "ssm:DescribePatchBaselines", + "ssm:GetDefaultPatchBaseline", + "ssm:GetPatchBaseline", + "ssm:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "ssm:GetDefaultPatchBaseline", + "ssm:GetPatchBaseline", + "ssm:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ssm:UpdatePatchBaseline", + "ssm:DeregisterPatchBaselineForPatchGroup", + "ssm:AddTagsToResource", + "ssm:RemoveTagsFromResource", + "ssm:ListTagsForResource", + "ssm:GetDefaultPatchBaseline", + "ssm:RegisterDefaultPatchBaseline" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ApprovalRules": { + "$ref": "#/definitions/RuleGroup" + }, + "ApprovedPatches": { + "description": "A list of explicitly approved patches for the baseline.", + "insertionOrder": false, + "items": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ApprovedPatchesComplianceLevel": { + "default": "UNSPECIFIED", + "description": "Defines the compliance level for approved patches. This means that if an approved patch is reported as missing, this is the severity of the compliance violation. The default value is UNSPECIFIED.", + "enum": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "INFORMATIONAL", + "UNSPECIFIED" + ], + "type": "string" + }, + "ApprovedPatchesEnableNonSecurity": { + "default": false, + "description": "Indicates whether the list of approved patches includes non-security updates that should be applied to the instances. The default value is 'false'. Applies to Linux instances only.", + "type": "boolean" + }, + "DefaultBaseline": { + "default": false, + "description": "Set the baseline as default baseline. Only registering to default patch baseline is allowed.", + "type": "boolean" + }, + "Description": { + "description": "The description of the patch baseline.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "GlobalFilters": { + "$ref": "#/definitions/PatchFilterGroup", + "description": "A set of global filters used to include patches in the baseline." + }, + "Id": { + "description": "The ID of the patch baseline.", + "maxLength": 128, + "minLength": 20, + "pattern": "^[a-zA-Z0-9_\\-:/]{20,128}$", + "type": "string" + }, + "Name": { + "description": "The name of the patch baseline.", + "maxLength": 128, + "minLength": 3, + "pattern": "^[a-zA-Z0-9_\\-.]{3,128}$", + "type": "string" + }, + "OperatingSystem": { + "default": "WINDOWS", + "description": "Defines the operating system the patch baseline applies to. The Default value is WINDOWS.", + "enum": [ + "WINDOWS", + "AMAZON_LINUX", + "AMAZON_LINUX_2", + "AMAZON_LINUX_2022", + "AMAZON_LINUX_2023", + "UBUNTU", + "REDHAT_ENTERPRISE_LINUX", + "SUSE", + "CENTOS", + "ORACLE_LINUX", + "DEBIAN", + "MACOS", + "RASPBIAN", + "ROCKY_LINUX", + "ALMA_LINUX" + ], + "type": "string" + }, + "PatchGroups": { + "description": "PatchGroups is used to associate instances with a specific patch baseline", + "items": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "RejectedPatches": { + "description": "A list of explicitly rejected patches for the baseline.", + "insertionOrder": false, + "items": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "RejectedPatchesAction": { + "default": "ALLOW_AS_DEPENDENCY", + "description": "The action for Patch Manager to take on patches included in the RejectedPackages list.", + "enum": [ + "ALLOW_AS_DEPENDENCY", + "BLOCK" + ], + "type": "string" + }, + "Sources": { + "description": "Information about the patches to use to update the instances, including target operating systems and source repository. Applies to Linux instances only.", + "items": { + "$ref": "#/definitions/PatchSource" + }, + "maxItems": 20, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "description": "Optional metadata that you assign to a resource. Tags enable you to categorize a resource in different ways.", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ssm:AddTagsToResource", + "ssm:ListTagsForResource", + "ssm:RemoveTagsFromResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SSM::PatchBaseline" +} diff --git a/src/schema/aws-ssm-resourcedatasync.json b/src/schema/aws-ssm-resourcedatasync.json index 0f68e5c1..da59387a 100644 --- a/src/schema/aws-ssm-resourcedatasync.json +++ b/src/schema/aws-ssm-resourcedatasync.json @@ -1,187 +1,184 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KMSKeyArn", - "/properties/SyncFormat", - "/properties/BucketPrefix", - "/properties/SyncName", - "/properties/BucketRegion", - "/properties/BucketName", - "/properties/S3Destination", - "/properties/SyncType" - ], - "definitions": { - "AwsOrganizationsSource": { - "additionalProperties": false, - "properties": { - "OrganizationSourceType": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "OrganizationalUnits": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "OrganizationSourceType" - ], - "type": "object" - }, - "S3Destination": { - "additionalProperties": false, - "properties": { - "BucketName": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "BucketPrefix": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "BucketRegion": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "KMSKeyArn": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "SyncFormat": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "BucketName", - "BucketRegion", - "SyncFormat" - ], - "type": "object" - }, - "SyncSource": { - "additionalProperties": false, - "properties": { - "AwsOrganizationsSource": { - "$ref": "#/definitions/AwsOrganizationsSource" - }, - "IncludeFutureRegions": { - "type": "boolean" - }, - "SourceRegions": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceType": { - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "SourceType", - "SourceRegions" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SSM::ResourceDataSync", - "handlers": { - "create": { - "permissions": [ - "ssm:CreateResourceDataSync", - "ssm:ListResourceDataSync" - ] - }, - "delete": { - "permissions": [ - "ssm:ListResourceDataSync", - "ssm:DeleteResourceDataSync" - ] - }, - "list": { - "permissions": [ - "ssm:ListResourceDataSync" - ] - }, - "read": { - "permissions": [ - "ssm:ListResourceDataSync" - ] - }, - "update": { - "permissions": [ - "ssm:ListResourceDataSync", - "ssm:UpdateResourceDataSync" - ] - } - }, - "primaryIdentifier": [ - "/properties/SyncName" - ], - "properties": { - "BucketName": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "BucketPrefix": { - "maxLength": 64, - "minLength": 0, - "type": "string" - }, - "BucketRegion": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "KMSKeyArn": { - "maxLength": 512, - "minLength": 0, - "type": "string" - }, - "S3Destination": { - "$ref": "#/definitions/S3Destination" - }, - "SyncFormat": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "SyncName": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "SyncSource": { - "$ref": "#/definitions/SyncSource" - }, - "SyncType": { - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/SyncName" - ], - "required": [ - "SyncName" - ], - "tagging": { - "taggable": false - }, - "typeName": "AWS::SSM::ResourceDataSync" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KMSKeyArn", + "/properties/SyncFormat", + "/properties/BucketPrefix", + "/properties/SyncName", + "/properties/BucketRegion", + "/properties/BucketName", + "/properties/S3Destination", + "/properties/SyncType" + ], + "definitions": { + "AwsOrganizationsSource": { + "additionalProperties": false, + "properties": { + "OrganizationSourceType": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "OrganizationalUnits": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "OrganizationSourceType" + ], + "type": "object" + }, + "S3Destination": { + "additionalProperties": false, + "properties": { + "BucketName": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "BucketPrefix": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "BucketRegion": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "KMSKeyArn": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "SyncFormat": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "BucketName", + "BucketRegion", + "SyncFormat" + ], + "type": "object" + }, + "SyncSource": { + "additionalProperties": false, + "properties": { + "AwsOrganizationsSource": { + "$ref": "#/definitions/AwsOrganizationsSource" + }, + "IncludeFutureRegions": { + "type": "boolean" + }, + "SourceRegions": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SourceType": { + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "SourceType", + "SourceRegions" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SSM::ResourceDataSync", + "handlers": { + "create": { + "permissions": [ + "ssm:CreateResourceDataSync", + "ssm:ListResourceDataSync" + ] + }, + "delete": { + "permissions": [ + "ssm:ListResourceDataSync", + "ssm:DeleteResourceDataSync" + ] + }, + "list": { + "permissions": [ + "ssm:ListResourceDataSync" + ] + }, + "read": { + "permissions": [ + "ssm:ListResourceDataSync" + ] + }, + "update": { + "permissions": [ + "ssm:ListResourceDataSync", + "ssm:UpdateResourceDataSync" + ] + } + }, + "primaryIdentifier": [ + "/properties/SyncName" + ], + "properties": { + "BucketName": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "BucketPrefix": { + "maxLength": 64, + "minLength": 0, + "type": "string" + }, + "BucketRegion": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "KMSKeyArn": { + "maxLength": 512, + "minLength": 0, + "type": "string" + }, + "S3Destination": { + "$ref": "#/definitions/S3Destination" + }, + "SyncFormat": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "SyncName": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "SyncSource": { + "$ref": "#/definitions/SyncSource" + }, + "SyncType": { + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "SyncName" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::SSM::ResourceDataSync" +} diff --git a/src/schema/aws-ssm-resourcepolicy.json b/src/schema/aws-ssm-resourcepolicy.json index 5e064ec1..e985a988 100644 --- a/src/schema/aws-ssm-resourcepolicy.json +++ b/src/schema/aws-ssm-resourcepolicy.json @@ -1,72 +1,74 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceArn" - ], - "description": "Resource Type definition for AWS::SSM::ResourcePolicy", - "handlers": { - "create": { - "permissions": [ - "ssm:PutResourcePolicy" - ] - }, - "delete": { - "permissions": [ - "ssm:DeleteResourcePolicy" - ] - }, - "list": { - "permissions": [ - "ssm:GetResourcePolicies" - ] - }, - "read": { - "permissions": [ - "ssm:GetResourcePolicies" - ] - }, - "update": { - "permissions": [ - "ssm:PutResourcePolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/PolicyId", - "/properties/ResourceArn" - ], - "properties": { - "Policy": { - "description": "Actual policy statement.", - "type": [ - "object", - "string" - ] - }, - "PolicyHash": { - "description": "A snapshot identifier for the policy over time.", - "type": "string" - }, - "PolicyId": { - "description": "An unique identifier within the policies of a resource. ", - "type": "string" - }, - "ResourceArn": { - "description": "Arn of OpsItemGroup etc.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/PolicyId", - "/properties/PolicyHash" - ], - "required": [ - "ResourceArn", - "Policy" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::SSM::ResourcePolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceArn" + ], + "description": "Resource Type definition for AWS::SSM::ResourcePolicy", + "handlers": { + "create": { + "permissions": [ + "ssm:PutResourcePolicy" + ] + }, + "delete": { + "permissions": [ + "ssm:GetResourcePolicies", + "ssm:DeleteResourcePolicy" + ] + }, + "list": { + "permissions": [ + "ssm:GetResourcePolicies" + ] + }, + "read": { + "permissions": [ + "ssm:GetResourcePolicies" + ] + }, + "update": { + "permissions": [ + "ssm:GetResourcePolicies", + "ssm:PutResourcePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/PolicyId", + "/properties/ResourceArn" + ], + "properties": { + "Policy": { + "description": "Actual policy statement.", + "type": [ + "object", + "string" + ] + }, + "PolicyHash": { + "description": "A snapshot identifier for the policy over time.", + "type": "string" + }, + "PolicyId": { + "description": "An unique identifier within the policies of a resource. ", + "type": "string" + }, + "ResourceArn": { + "description": "Arn of OpsItemGroup etc.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/PolicyId", + "/properties/PolicyHash" + ], + "required": [ + "ResourceArn", + "Policy" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::SSM::ResourcePolicy" +} diff --git a/src/schema/aws-ssmcontacts-contact.json b/src/schema/aws-ssmcontacts-contact.json index cd14ecbd..5bdaa141 100644 --- a/src/schema/aws-ssmcontacts-contact.json +++ b/src/schema/aws-ssmcontacts-contact.json @@ -1,196 +1,196 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Alias", - "/properties/Type" - ], - "definitions": { - "ChannelTargetInfo": { - "additionalProperties": false, - "description": "Information about the contact channel that SSM Incident Manager uses to engage the contact.", - "properties": { - "ChannelId": { - "description": "The Amazon Resource Name (ARN) of the contact channel.", - "type": "string" - }, - "RetryIntervalInMinutes": { - "description": "The number of minutes to wait to retry sending engagement in the case the engagement initially fails.", - "type": "integer" - } - }, - "required": [ - "ChannelId", - "RetryIntervalInMinutes" - ], - "type": "object" - }, - "ContactTargetInfo": { - "additionalProperties": false, - "description": "The contact that SSM Incident Manager is engaging during an incident.", - "properties": { - "ContactId": { - "description": "The Amazon Resource Name (ARN) of the contact.", - "type": "string" - }, - "IsEssential": { - "description": "A Boolean value determining if the contact's acknowledgement stops the progress of stages in the plan.", - "type": "boolean" - } - }, - "required": [ - "ContactId", - "IsEssential" - ], - "type": "object" - }, - "Stage": { - "additionalProperties": false, - "description": "A set amount of time that an escalation plan or engagement plan engages the specified contacts or contact methods.", - "oneOf": [ - { - "required": [ - "DurationInMinutes" - ] - }, - { - "required": [ - "RotationIds" - ] - } - ], - "properties": { - "DurationInMinutes": { - "description": "The time to wait until beginning the next stage.", - "type": "integer" - }, - "RotationIds": { - "description": "List of Rotation Ids to associate with Contact", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "Targets": { - "description": "The contacts or contact methods that the escalation plan or engagement plan is engaging.", - "items": { - "$ref": "#/definitions/Targets" - }, - "type": "array" - } - }, - "type": "object" - }, - "Targets": { - "additionalProperties": false, - "description": "The contacts or contact methods that the escalation plan or engagement plan is engaging.", - "oneOf": [ - { - "required": [ - "ChannelTargetInfo" - ] - }, - { - "required": [ - "ContactTargetInfo" - ] - } - ], - "properties": { - "ChannelTargetInfo": { - "$ref": "#/definitions/ChannelTargetInfo" - }, - "ContactTargetInfo": { - "$ref": "#/definitions/ContactTargetInfo" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SSMContacts::Contact", - "handlers": { - "create": { - "permissions": [ - "ssm-contacts:CreateContact", - "ssm-contacts:GetContact", - "ssm-contacts:AssociateContact" - ] - }, - "delete": { - "permissions": [ - "ssm-contacts:DeleteContact", - "ssm-contacts:GetContact", - "ssm-contacts:AssociateContact" - ] - }, - "list": { - "permissions": [ - "ssm-contacts:ListContacts" - ] - }, - "read": { - "permissions": [ - "ssm-contacts:GetContact" - ] - }, - "update": { - "permissions": [ - "ssm-contacts:UpdateContact", - "ssm-contacts:GetContact", - "ssm-contacts:AssociateContact" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Alias": { - "description": "Alias of the contact. String value with 20 to 256 characters. Only alphabetical, numeric characters, dash, or underscore allowed.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-z0-9_\\-\\.]*$", - "type": "string" - }, - "Arn": { - "description": "The Amazon Resource Name (ARN) of the contact.", - "type": "string" - }, - "DisplayName": { - "description": "Name of the contact. String value with 3 to 256 characters. Only alphabetical, space, numeric characters, dash, or underscore allowed.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_\\-\\s]*$", - "type": "string" - }, - "Plan": { - "description": "The stages that an escalation plan or engagement plan engages contacts and contact methods in.", - "items": { - "$ref": "#/definitions/Stage" - }, - "type": "array" - }, - "Type": { - "description": "Contact type, which specify type of contact. Currently supported values: \u201cPERSONAL\u201d, \u201cSHARED\u201d, \u201cOTHER\u201c.", - "enum": [ - "PERSONAL", - "ESCALATION", - "ONCALL_SCHEDULE" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Alias", - "DisplayName", - "Type" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::SSMContacts::Contact", - "writeOnlyProperties": [ - "/properties/Plan" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Alias", + "/properties/Type" + ], + "definitions": { + "ChannelTargetInfo": { + "additionalProperties": false, + "description": "Information about the contact channel that SSM Incident Manager uses to engage the contact.", + "properties": { + "ChannelId": { + "description": "The Amazon Resource Name (ARN) of the contact channel.", + "type": "string" + }, + "RetryIntervalInMinutes": { + "description": "The number of minutes to wait to retry sending engagement in the case the engagement initially fails.", + "type": "integer" + } + }, + "required": [ + "ChannelId", + "RetryIntervalInMinutes" + ], + "type": "object" + }, + "ContactTargetInfo": { + "additionalProperties": false, + "description": "The contact that SSM Incident Manager is engaging during an incident.", + "properties": { + "ContactId": { + "description": "The Amazon Resource Name (ARN) of the contact.", + "type": "string" + }, + "IsEssential": { + "description": "A Boolean value determining if the contact's acknowledgement stops the progress of stages in the plan.", + "type": "boolean" + } + }, + "required": [ + "ContactId", + "IsEssential" + ], + "type": "object" + }, + "Stage": { + "additionalProperties": false, + "description": "A set amount of time that an escalation plan or engagement plan engages the specified contacts or contact methods.", + "oneOf": [ + { + "required": [ + "DurationInMinutes" + ] + }, + { + "required": [ + "RotationIds" + ] + } + ], + "properties": { + "DurationInMinutes": { + "description": "The time to wait until beginning the next stage.", + "type": "integer" + }, + "RotationIds": { + "description": "List of Rotation Ids to associate with Contact", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Targets": { + "description": "The contacts or contact methods that the escalation plan or engagement plan is engaging.", + "items": { + "$ref": "#/definitions/Targets" + }, + "type": "array" + } + }, + "type": "object" + }, + "Targets": { + "additionalProperties": false, + "description": "The contacts or contact methods that the escalation plan or engagement plan is engaging.", + "oneOf": [ + { + "required": [ + "ChannelTargetInfo" + ] + }, + { + "required": [ + "ContactTargetInfo" + ] + } + ], + "properties": { + "ChannelTargetInfo": { + "$ref": "#/definitions/ChannelTargetInfo" + }, + "ContactTargetInfo": { + "$ref": "#/definitions/ContactTargetInfo" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SSMContacts::Contact", + "handlers": { + "create": { + "permissions": [ + "ssm-contacts:CreateContact", + "ssm-contacts:GetContact", + "ssm-contacts:AssociateContact" + ] + }, + "delete": { + "permissions": [ + "ssm-contacts:DeleteContact", + "ssm-contacts:GetContact", + "ssm-contacts:AssociateContact" + ] + }, + "list": { + "permissions": [ + "ssm-contacts:ListContacts" + ] + }, + "read": { + "permissions": [ + "ssm-contacts:GetContact" + ] + }, + "update": { + "permissions": [ + "ssm-contacts:UpdateContact", + "ssm-contacts:GetContact", + "ssm-contacts:AssociateContact" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Alias": { + "description": "Alias of the contact. String value with 20 to 256 characters. Only alphabetical, numeric characters, dash, or underscore allowed.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-z0-9_\\-\\.]*$", + "type": "string" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) of the contact.", + "type": "string" + }, + "DisplayName": { + "description": "Name of the contact. String value with 3 to 256 characters. Only alphabetical, space, numeric characters, dash, or underscore allowed.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_\\-\\s]*$", + "type": "string" + }, + "Plan": { + "description": "The stages that an escalation plan or engagement plan engages contacts and contact methods in.", + "items": { + "$ref": "#/definitions/Stage" + }, + "type": "array" + }, + "Type": { + "description": "Contact type, which specify type of contact. Currently supported values: \u201cPERSONAL\u201d, \u201cSHARED\u201d, \u201cOTHER\u201c.", + "enum": [ + "PERSONAL", + "ESCALATION", + "ONCALL_SCHEDULE" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Alias", + "DisplayName", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "typeName": "AWS::SSMContacts::Contact", + "writeOnlyProperties": [ + "/properties/Plan" + ] +} diff --git a/src/schema/aws-ssmcontacts-contactchannel.json b/src/schema/aws-ssmcontacts-contactchannel.json index c6203222..43aaff2f 100644 --- a/src/schema/aws-ssmcontacts-contactchannel.json +++ b/src/schema/aws-ssmcontacts-contactchannel.json @@ -1,96 +1,96 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ContactId", - "/properties/ChannelType" - ], - "description": "Resource Type definition for AWS::SSMContacts::ContactChannel", - "handlers": { - "create": { - "permissions": [ - "ssm-contacts:CreateContactChannel", - "ssm-contacts:GetContactChannel" - ] - }, - "delete": { - "permissions": [ - "ssm-contacts:DeleteContactChannel", - "ssm-contacts:GetContactChannel" - ] - }, - "list": { - "permissions": [ - "ssm-contacts:ListContactChannels" - ] - }, - "read": { - "permissions": [ - "ssm-contacts:GetContactChannel" - ] - }, - "update": { - "permissions": [ - "ssm-contacts:UpdateContactChannel", - "ssm-contacts:GetContactChannel" - ] - } - }, - "oneOf": [ - { - "required": [ - "ContactId", - "ChannelName", - "ChannelType", - "ChannelAddress" - ] - } - ], - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the engagement to a contact channel.", - "type": "string" - }, - "ChannelAddress": { - "description": "The details that SSM Incident Manager uses when trying to engage the contact channel.", - "type": "string" - }, - "ChannelName": { - "description": "The device name. String of 6 to 50 alphabetical, numeric, dash, and underscore characters.", - "maxLength": 255, - "minLength": 1, - "pattern": "[a-zA-Z 0-9_\\-+'&\\uD83C-\\uDBFF\\uDC00-\\uDFFF\\u2000-\\u3300]+", - "type": "string" - }, - "ChannelType": { - "description": "Device type, which specify notification channel. Currently supported values: \u201cSMS\u201d, \u201cVOICE\u201d, \u201cEMAIL\u201d, \u201cCHATBOT.", - "enum": [ - "SMS", - "VOICE", - "EMAIL" - ], - "type": "string" - }, - "ContactId": { - "description": "ARN of the contact resource", - "maxLength": 2048, - "minLength": 1, - "pattern": "arn:[-\\w+=\\/,.@]+:[-\\w+=\\/,.@]+:[-\\w+=\\/,.@]*:[0-9]+:([\\w+=\\/,.@:-]+)*", - "type": "string" - }, - "DeferActivation": { - "description": "If you want to activate the channel at a later time, you can choose to defer activation. SSM Incident Manager can't engage your contact channel until it has been activated.", - "type": "boolean" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::SSMContacts::ContactChannel", - "writeOnlyProperties": [ - "/properties/DeferActivation" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ContactId", + "/properties/ChannelType" + ], + "description": "Resource Type definition for AWS::SSMContacts::ContactChannel", + "handlers": { + "create": { + "permissions": [ + "ssm-contacts:CreateContactChannel", + "ssm-contacts:GetContactChannel" + ] + }, + "delete": { + "permissions": [ + "ssm-contacts:DeleteContactChannel", + "ssm-contacts:GetContactChannel" + ] + }, + "list": { + "permissions": [ + "ssm-contacts:ListContactChannels" + ] + }, + "read": { + "permissions": [ + "ssm-contacts:GetContactChannel" + ] + }, + "update": { + "permissions": [ + "ssm-contacts:UpdateContactChannel", + "ssm-contacts:GetContactChannel" + ] + } + }, + "oneOf": [ + { + "required": [ + "ContactId", + "ChannelName", + "ChannelType", + "ChannelAddress" + ] + } + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the engagement to a contact channel.", + "type": "string" + }, + "ChannelAddress": { + "description": "The details that SSM Incident Manager uses when trying to engage the contact channel.", + "type": "string" + }, + "ChannelName": { + "description": "The device name. String of 6 to 50 alphabetical, numeric, dash, and underscore characters.", + "maxLength": 255, + "minLength": 1, + "pattern": "[a-zA-Z 0-9_\\-+'&\\uD83C-\\uDBFF\\uDC00-\\uDFFF\\u2000-\\u3300]+", + "type": "string" + }, + "ChannelType": { + "description": "Device type, which specify notification channel. Currently supported values: \u201cSMS\u201d, \u201cVOICE\u201d, \u201cEMAIL\u201d, \u201cCHATBOT.", + "enum": [ + "SMS", + "VOICE", + "EMAIL" + ], + "type": "string" + }, + "ContactId": { + "description": "ARN of the contact resource", + "maxLength": 2048, + "minLength": 1, + "pattern": "arn:[-\\w+=\\/,.@]+:[-\\w+=\\/,.@]+:[-\\w+=\\/,.@]*:[0-9]+:([\\w+=\\/,.@:-]+)*", + "type": "string" + }, + "DeferActivation": { + "description": "If you want to activate the channel at a later time, you can choose to defer activation. SSM Incident Manager can't engage your contact channel until it has been activated.", + "type": "boolean" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "typeName": "AWS::SSMContacts::ContactChannel", + "writeOnlyProperties": [ + "/properties/DeferActivation" + ] +} diff --git a/src/schema/aws-ssmcontacts-plan.json b/src/schema/aws-ssmcontacts-plan.json index 1646551f..ef28fa2e 100644 --- a/src/schema/aws-ssmcontacts-plan.json +++ b/src/schema/aws-ssmcontacts-plan.json @@ -1,180 +1,180 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ContactId" - ], - "definitions": { - "ChannelTargetInfo": { - "additionalProperties": false, - "description": "Information about the contact channel that SSM Incident Manager uses to engage the contact.", - "properties": { - "ChannelId": { - "description": "The Amazon Resource Name (ARN) of the contact channel.", - "type": "string" - }, - "RetryIntervalInMinutes": { - "description": "The number of minutes to wait to retry sending engagement in the case the engagement initially fails.", - "type": "integer" - } - }, - "required": [ - "ChannelId", - "RetryIntervalInMinutes" - ], - "type": "object" - }, - "ContactTargetInfo": { - "additionalProperties": false, - "description": "The contact that SSM Incident Manager is engaging during an incident.", - "properties": { - "ContactId": { - "description": "The Amazon Resource Name (ARN) of the contact.", - "type": "string" - }, - "IsEssential": { - "description": "A Boolean value determining if the contact's acknowledgement stops the progress of stages in the plan.", - "type": "boolean" - } - }, - "required": [ - "ContactId", - "IsEssential" - ], - "type": "object" - }, - "Stage": { - "additionalProperties": false, - "description": "A set amount of time that an escalation plan or engagement plan engages the specified contacts or contact methods.", - "properties": { - "DurationInMinutes": { - "description": "The time to wait until beginning the next stage.", - "type": "integer" - }, - "Targets": { - "description": "The contacts or contact methods that the escalation plan or engagement plan is engaging.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Targets" - }, - "type": "array" - } - }, - "required": [ - "DurationInMinutes" - ], - "type": "object" - }, - "Targets": { - "additionalProperties": false, - "description": "The contacts or contact methods that the escalation plan or engagement plan is engaging.", - "oneOf": [ - { - "required": [ - "ChannelTargetInfo" - ] - }, - { - "required": [ - "ContactTargetInfo" - ] - } - ], - "properties": { - "ChannelTargetInfo": { - "$ref": "#/definitions/ChannelTargetInfo" - }, - "ContactTargetInfo": { - "$ref": "#/definitions/ContactTargetInfo" - } - }, - "type": "object" - } - }, - "description": "Engagement Plan for a SSM Incident Manager Contact.", - "handlers": { - "create": { - "permissions": [ - "ssm-contacts:UpdateContact", - "ssm-contacts:GetContact", - "ssm-contacts:AssociateContact" - ] - }, - "delete": { - "permissions": [ - "ssm-contacts:UpdateContact", - "ssm-contacts:GetContact", - "ssm-contacts:AssociateContact" - ] - }, - "read": { - "permissions": [ - "ssm-contacts:GetContact" - ] - }, - "update": { - "permissions": [ - "ssm-contacts:UpdateContact", - "ssm-contacts:GetContact", - "ssm-contacts:AssociateContact" - ] - } - }, - "oneOf": [ - { - "required": [ - "ContactId", - "Stages" - ] - }, - { - "required": [ - "ContactId", - "RotationIds" - ] - } - ], - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the contact.", - "type": "string" - }, - "ContactId": { - "description": "Contact ID for the AWS SSM Incident Manager Contact to associate the plan.", - "pattern": "arn:[-\\w+=\\/,.@]+:[-\\w+=\\/,.@]+:[-\\w+=\\/,.@]*:[0-9]+:([\\w+=\\/,.@:-]+)*", - "type": "string" - }, - "RotationIds": { - "description": "Rotation Ids to associate with Oncall Contact for engagement.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "Stages": { - "description": "The stages that an escalation plan or engagement plan engages contacts and contact methods in.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Stage" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::SSMContacts::Plan", - "writeOnlyProperties": [ - "/properties/RotationIds" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ContactId" + ], + "definitions": { + "ChannelTargetInfo": { + "additionalProperties": false, + "description": "Information about the contact channel that SSM Incident Manager uses to engage the contact.", + "properties": { + "ChannelId": { + "description": "The Amazon Resource Name (ARN) of the contact channel.", + "type": "string" + }, + "RetryIntervalInMinutes": { + "description": "The number of minutes to wait to retry sending engagement in the case the engagement initially fails.", + "type": "integer" + } + }, + "required": [ + "ChannelId", + "RetryIntervalInMinutes" + ], + "type": "object" + }, + "ContactTargetInfo": { + "additionalProperties": false, + "description": "The contact that SSM Incident Manager is engaging during an incident.", + "properties": { + "ContactId": { + "description": "The Amazon Resource Name (ARN) of the contact.", + "type": "string" + }, + "IsEssential": { + "description": "A Boolean value determining if the contact's acknowledgement stops the progress of stages in the plan.", + "type": "boolean" + } + }, + "required": [ + "ContactId", + "IsEssential" + ], + "type": "object" + }, + "Stage": { + "additionalProperties": false, + "description": "A set amount of time that an escalation plan or engagement plan engages the specified contacts or contact methods.", + "properties": { + "DurationInMinutes": { + "description": "The time to wait until beginning the next stage.", + "type": "integer" + }, + "Targets": { + "description": "The contacts or contact methods that the escalation plan or engagement plan is engaging.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Targets" + }, + "type": "array" + } + }, + "required": [ + "DurationInMinutes" + ], + "type": "object" + }, + "Targets": { + "additionalProperties": false, + "description": "The contacts or contact methods that the escalation plan or engagement plan is engaging.", + "oneOf": [ + { + "required": [ + "ChannelTargetInfo" + ] + }, + { + "required": [ + "ContactTargetInfo" + ] + } + ], + "properties": { + "ChannelTargetInfo": { + "$ref": "#/definitions/ChannelTargetInfo" + }, + "ContactTargetInfo": { + "$ref": "#/definitions/ContactTargetInfo" + } + }, + "type": "object" + } + }, + "description": "Engagement Plan for a SSM Incident Manager Contact.", + "handlers": { + "create": { + "permissions": [ + "ssm-contacts:UpdateContact", + "ssm-contacts:GetContact", + "ssm-contacts:AssociateContact" + ] + }, + "delete": { + "permissions": [ + "ssm-contacts:UpdateContact", + "ssm-contacts:GetContact", + "ssm-contacts:AssociateContact" + ] + }, + "read": { + "permissions": [ + "ssm-contacts:GetContact" + ] + }, + "update": { + "permissions": [ + "ssm-contacts:UpdateContact", + "ssm-contacts:GetContact", + "ssm-contacts:AssociateContact" + ] + } + }, + "oneOf": [ + { + "required": [ + "ContactId", + "Stages" + ] + }, + { + "required": [ + "ContactId", + "RotationIds" + ] + } + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the contact.", + "type": "string" + }, + "ContactId": { + "description": "Contact ID for the AWS SSM Incident Manager Contact to associate the plan.", + "pattern": "arn:[-\\w+=\\/,.@]+:[-\\w+=\\/,.@]+:[-\\w+=\\/,.@]*:[0-9]+:([\\w+=\\/,.@:-]+)*", + "type": "string" + }, + "RotationIds": { + "description": "Rotation Ids to associate with Oncall Contact for engagement.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Stages": { + "description": "The stages that an escalation plan or engagement plan engages contacts and contact methods in.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Stage" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::SSMContacts::Plan", + "writeOnlyProperties": [ + "/properties/RotationIds" + ] +} diff --git a/src/schema/aws-ssmcontacts-rotation.json b/src/schema/aws-ssmcontacts-rotation.json index 5d39ff8a..0bd5b066 100644 --- a/src/schema/aws-ssmcontacts-rotation.json +++ b/src/schema/aws-ssmcontacts-rotation.json @@ -1,312 +1,312 @@ -{ - "additionalProperties": false, - "definitions": { - "CoverageTime": { - "additionalProperties": false, - "description": "StartTime and EndTime for the Shift", - "properties": { - "EndTime": { - "$ref": "#/definitions/HandOffTime" - }, - "StartTime": { - "$ref": "#/definitions/HandOffTime" - } - }, - "required": [ - "StartTime", - "EndTime" - ], - "type": "object" - }, - "DailySetting": { - "additionalProperties": false, - "description": "Handoff time for Daily Recurring Rotation.", - "properties": { - "HandOffTime": { - "$ref": "#/definitions/HandOffTime" - } - }, - "required": [ - "HandOffTime" - ], - "type": "object" - }, - "DayOfWeek": { - "description": "The day of the week when weekly recurring on-call shift rotations begin. ", - "enum": [ - "MON", - "TUE", - "WED", - "THU", - "FRI", - "SAT", - "SUN" - ], - "type": "string" - }, - "HandOffTime": { - "description": "Details about when an on-call rotation shift begins or ends. Time of the day in format HH:MM", - "pattern": "^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$", - "type": "string" - }, - "MonthlySetting": { - "additionalProperties": false, - "description": "DayOfWeek for Month and HandOff Time for Monthly Recurring Rotation.", - "properties": { - "DayOfMonth": { - "description": "The day of the month when monthly recurring on-call rotations begin.", - "maximum": 31, - "minimum": 1, - "type": "integer" - }, - "HandOffTime": { - "$ref": "#/definitions/HandOffTime" - } - }, - "required": [ - "DayOfMonth", - "HandOffTime" - ], - "type": "object" - }, - "RecurrenceSettings": { - "additionalProperties": false, - "description": "Information about when an on-call rotation is in effect and how long the rotation period lasts.", - "oneOf": [ - { - "required": [ - "NumberOfOnCalls", - "RecurrenceMultiplier", - "WeeklySettings" - ] - }, - { - "required": [ - "NumberOfOnCalls", - "RecurrenceMultiplier", - "MonthlySettings" - ] - }, - { - "required": [ - "NumberOfOnCalls", - "RecurrenceMultiplier", - "DailySettings" - ] - } - ], - "properties": { - "DailySettings": { - "description": "Information about on-call rotations that recur daily.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/HandOffTime" - }, - "type": "array" - }, - "MonthlySettings": { - "description": "Information about on-call rotations that recur monthly.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MonthlySetting" - }, - "type": "array" - }, - "NumberOfOnCalls": { - "description": "Number of Oncalls per shift.", - "minimum": 1, - "type": "integer" - }, - "RecurrenceMultiplier": { - "description": "The number of days, weeks, or months a single rotation lasts.", - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "ShiftCoverages": { - "description": "Information about the days of the week included in on-call rotation coverage.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ShiftCoverage" - }, - "type": "array" - }, - "WeeklySettings": { - "description": "Information about on-call rotations that recur weekly.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/WeeklySetting" - }, - "type": "array" - } - }, - "type": "object" - }, - "ShiftCoverage": { - "additionalProperties": false, - "description": "Information about the days of the week included in on-call rotation coverage.", - "properties": { - "CoverageTimes": { - "description": "Information about when an on-call shift begins and ends.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CoverageTime" - }, - "type": "array" - }, - "DayOfWeek": { - "$ref": "#/definitions/DayOfWeek" - } - }, - "required": [ - "DayOfWeek", - "CoverageTimes" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "WeeklySetting": { - "additionalProperties": false, - "description": "DayOfWeek for Rotation and HandOff Time for Weekly Recurring Rotation.", - "properties": { - "DayOfWeek": { - "$ref": "#/definitions/DayOfWeek" - }, - "HandOffTime": { - "$ref": "#/definitions/HandOffTime" - } - }, - "required": [ - "DayOfWeek", - "HandOffTime" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::SSMContacts::Rotation.", - "handlers": { - "create": { - "permissions": [ - "ssm-contacts:CreateRotation", - "ssm-contacts:GetRotation", - "ssm-contacts:TagResource", - "ssm-contacts:ListTagsForResource", - "ssm-contacts:UntagResource" - ] - }, - "delete": { - "permissions": [ - "ssm-contacts:DeleteRotation", - "ssm-contacts:GetRotation", - "ssm-contacts:ListTagsForResource", - "ssm-contacts:UntagResource" - ] - }, - "list": { - "permissions": [ - "ssm-contacts:ListRotations", - "ssm-contacts:GetRotation", - "ssm-contacts:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "ssm-contacts:GetRotation", - "ssm-contacts:TagResource", - "ssm-contacts:ListTagsForResource", - "ssm-contacts:UntagResource" - ] - }, - "update": { - "permissions": [ - "ssm-contacts:UpdateRotation", - "ssm-contacts:GetRotation", - "ssm-contacts:TagResource", - "ssm-contacts:ListTagsForResource", - "ssm-contacts:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The Amazon Resource Name (ARN) of the rotation.", - "type": "string" - }, - "ContactIds": { - "description": "Members of the rotation", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "Name": { - "description": "Name of the Rotation", - "pattern": "^[a-zA-Z0-9_]*$", - "type": "string" - }, - "Recurrence": { - "$ref": "#/definitions/RecurrenceSettings" - }, - "StartTime": { - "description": "Start time of the first shift of Oncall Schedule", - "pattern": "^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2})$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TimeZoneId": { - "description": "TimeZone Identifier for the Oncall Schedule", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name", - "ContactIds", - "StartTime", - "TimeZoneId", - "Recurrence" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::SSMContacts::Rotation" -} +{ + "additionalProperties": false, + "definitions": { + "CoverageTime": { + "additionalProperties": false, + "description": "StartTime and EndTime for the Shift", + "properties": { + "EndTime": { + "$ref": "#/definitions/HandOffTime" + }, + "StartTime": { + "$ref": "#/definitions/HandOffTime" + } + }, + "required": [ + "StartTime", + "EndTime" + ], + "type": "object" + }, + "DailySetting": { + "additionalProperties": false, + "description": "Handoff time for Daily Recurring Rotation.", + "properties": { + "HandOffTime": { + "$ref": "#/definitions/HandOffTime" + } + }, + "required": [ + "HandOffTime" + ], + "type": "object" + }, + "DayOfWeek": { + "description": "The day of the week when weekly recurring on-call shift rotations begin. ", + "enum": [ + "MON", + "TUE", + "WED", + "THU", + "FRI", + "SAT", + "SUN" + ], + "type": "string" + }, + "HandOffTime": { + "description": "Details about when an on-call rotation shift begins or ends. Time of the day in format HH:MM", + "pattern": "^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$", + "type": "string" + }, + "MonthlySetting": { + "additionalProperties": false, + "description": "DayOfWeek for Month and HandOff Time for Monthly Recurring Rotation.", + "properties": { + "DayOfMonth": { + "description": "The day of the month when monthly recurring on-call rotations begin.", + "maximum": 31, + "minimum": 1, + "type": "integer" + }, + "HandOffTime": { + "$ref": "#/definitions/HandOffTime" + } + }, + "required": [ + "DayOfMonth", + "HandOffTime" + ], + "type": "object" + }, + "RecurrenceSettings": { + "additionalProperties": false, + "description": "Information about when an on-call rotation is in effect and how long the rotation period lasts.", + "oneOf": [ + { + "required": [ + "NumberOfOnCalls", + "RecurrenceMultiplier", + "WeeklySettings" + ] + }, + { + "required": [ + "NumberOfOnCalls", + "RecurrenceMultiplier", + "MonthlySettings" + ] + }, + { + "required": [ + "NumberOfOnCalls", + "RecurrenceMultiplier", + "DailySettings" + ] + } + ], + "properties": { + "DailySettings": { + "description": "Information about on-call rotations that recur daily.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/HandOffTime" + }, + "type": "array" + }, + "MonthlySettings": { + "description": "Information about on-call rotations that recur monthly.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MonthlySetting" + }, + "type": "array" + }, + "NumberOfOnCalls": { + "description": "Number of Oncalls per shift.", + "minimum": 1, + "type": "integer" + }, + "RecurrenceMultiplier": { + "description": "The number of days, weeks, or months a single rotation lasts.", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "ShiftCoverages": { + "description": "Information about the days of the week included in on-call rotation coverage.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ShiftCoverage" + }, + "type": "array" + }, + "WeeklySettings": { + "description": "Information about on-call rotations that recur weekly.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/WeeklySetting" + }, + "type": "array" + } + }, + "type": "object" + }, + "ShiftCoverage": { + "additionalProperties": false, + "description": "Information about the days of the week included in on-call rotation coverage.", + "properties": { + "CoverageTimes": { + "description": "Information about when an on-call shift begins and ends.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CoverageTime" + }, + "type": "array" + }, + "DayOfWeek": { + "$ref": "#/definitions/DayOfWeek" + } + }, + "required": [ + "DayOfWeek", + "CoverageTimes" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "WeeklySetting": { + "additionalProperties": false, + "description": "DayOfWeek for Rotation and HandOff Time for Weekly Recurring Rotation.", + "properties": { + "DayOfWeek": { + "$ref": "#/definitions/DayOfWeek" + }, + "HandOffTime": { + "$ref": "#/definitions/HandOffTime" + } + }, + "required": [ + "DayOfWeek", + "HandOffTime" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::SSMContacts::Rotation.", + "handlers": { + "create": { + "permissions": [ + "ssm-contacts:CreateRotation", + "ssm-contacts:GetRotation", + "ssm-contacts:TagResource", + "ssm-contacts:ListTagsForResource", + "ssm-contacts:UntagResource" + ] + }, + "delete": { + "permissions": [ + "ssm-contacts:DeleteRotation", + "ssm-contacts:GetRotation", + "ssm-contacts:ListTagsForResource", + "ssm-contacts:UntagResource" + ] + }, + "list": { + "permissions": [ + "ssm-contacts:ListRotations", + "ssm-contacts:GetRotation", + "ssm-contacts:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "ssm-contacts:GetRotation", + "ssm-contacts:TagResource", + "ssm-contacts:ListTagsForResource", + "ssm-contacts:UntagResource" + ] + }, + "update": { + "permissions": [ + "ssm-contacts:UpdateRotation", + "ssm-contacts:GetRotation", + "ssm-contacts:TagResource", + "ssm-contacts:ListTagsForResource", + "ssm-contacts:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The Amazon Resource Name (ARN) of the rotation.", + "type": "string" + }, + "ContactIds": { + "description": "Members of the rotation", + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Name": { + "description": "Name of the Rotation", + "pattern": "^[a-zA-Z0-9_]*$", + "type": "string" + }, + "Recurrence": { + "$ref": "#/definitions/RecurrenceSettings" + }, + "StartTime": { + "description": "Start time of the first shift of Oncall Schedule", + "pattern": "^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2})$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TimeZoneId": { + "description": "TimeZone Identifier for the Oncall Schedule", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name", + "ContactIds", + "StartTime", + "TimeZoneId", + "Recurrence" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::SSMContacts::Rotation" +} diff --git a/src/schema/aws-ssmincidents-replicationset.json b/src/schema/aws-ssmincidents-replicationset.json index 0f290db3..f2acedd0 100644 --- a/src/schema/aws-ssmincidents-replicationset.json +++ b/src/schema/aws-ssmincidents-replicationset.json @@ -1,164 +1,171 @@ -{ - "additionalProperties": false, - "definitions": { - "Arn": { - "description": "The ARN of the ReplicationSet.", - "maxLength": 1000, - "pattern": "^arn:aws(-(cn|us-gov|iso(-b)?))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", - "type": "string" - }, - "DeletionProtected": { - "description": "Configures the ReplicationSet deletion protection.", - "type": "boolean" - }, - "RegionConfiguration": { - "additionalProperties": false, - "description": "The ReplicationSet regional configuration.", - "properties": { - "SseKmsKeyId": { - "$ref": "#/definitions/Arn" - } - }, - "required": [ - "SseKmsKeyId" - ], - "type": "object" - }, - "RegionList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ReplicationRegion" - }, - "maxItems": 3, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "RegionName": { - "description": "The AWS region name.", - "maxLength": 20, - "type": "string" - }, - "ReplicationRegion": { - "additionalProperties": false, - "description": "The ReplicationSet regional configuration.", - "properties": { - "RegionConfiguration": { - "$ref": "#/definitions/RegionConfiguration" - }, - "RegionName": { - "$ref": "#/definitions/RegionName" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to tag a resource.", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource type definition for AWS::SSMIncidents::ReplicationSet", - "handlers": { - "create": { - "permissions": [ - "ssm-incidents:CreateReplicationSet", - "ssm-incidents:ListReplicationSets", - "ssm-incidents:UpdateDeletionProtection", - "ssm-incidents:GetReplicationSet", - "ssm-incidents:TagResource", - "ssm-incidents:ListTagsForResource", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "ssm-incidents:DeleteReplicationSet", - "ssm-incidents:GetReplicationSet" - ] - }, - "list": { - "permissions": [ - "ssm-incidents:ListReplicationSets" - ] - }, - "read": { - "permissions": [ - "ssm-incidents:ListReplicationSets", - "ssm-incidents:GetReplicationSet", - "ssm-incidents:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "ssm-incidents:UpdateReplicationSet", - "ssm-incidents:UpdateDeletionProtection", - "ssm-incidents:GetReplicationSet", - "ssm-incidents:TagResource", - "ssm-incidents:UntagResource", - "ssm-incidents:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn", - "additionalProperties": false, - "description": "The ARN of the ReplicationSet." - }, - "DeletionProtected": { - "$ref": "#/definitions/DeletionProtected", - "default": false - }, - "Regions": { - "$ref": "#/definitions/RegionList", - "description": "The ReplicationSet configuration." - }, - "Tags": { - "default": [], - "description": "The tags to apply to the replication set.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Regions" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ssm-incidents.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SSMIncidents::ReplicationSet" -} +{ + "additionalProperties": false, + "definitions": { + "Arn": { + "description": "The ARN of the ReplicationSet.", + "maxLength": 1000, + "pattern": "^arn:aws(-(cn|us-gov|iso(-b)?))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "DeletionProtected": { + "description": "Configures the ReplicationSet deletion protection.", + "type": "boolean" + }, + "RegionConfiguration": { + "additionalProperties": false, + "description": "The ReplicationSet regional configuration.", + "properties": { + "SseKmsKeyId": { + "description": "The AWS Key Management Service key ID or Key Alias to use to encrypt your replication set.", + "maxLength": 2048, + "type": "string" + } + }, + "required": [ + "SseKmsKeyId" + ], + "type": "object" + }, + "RegionList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicationRegion" + }, + "maxItems": 3, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "RegionName": { + "description": "The AWS region name.", + "maxLength": 20, + "type": "string" + }, + "ReplicationRegion": { + "additionalProperties": false, + "description": "The ReplicationSet regional configuration.", + "properties": { + "RegionConfiguration": { + "$ref": "#/definitions/RegionConfiguration" + }, + "RegionName": { + "$ref": "#/definitions/RegionName" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to tag a resource.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource type definition for AWS::SSMIncidents::ReplicationSet", + "handlers": { + "create": { + "permissions": [ + "ssm-incidents:CreateReplicationSet", + "ssm-incidents:ListReplicationSets", + "ssm-incidents:UpdateDeletionProtection", + "ssm-incidents:GetReplicationSet", + "ssm-incidents:TagResource", + "ssm-incidents:ListTagsForResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "ssm-incidents:DeleteReplicationSet", + "ssm-incidents:GetReplicationSet" + ] + }, + "list": { + "permissions": [ + "ssm-incidents:ListReplicationSets" + ] + }, + "read": { + "permissions": [ + "ssm-incidents:ListReplicationSets", + "ssm-incidents:GetReplicationSet", + "ssm-incidents:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ssm-incidents:UpdateReplicationSet", + "ssm-incidents:UpdateDeletionProtection", + "ssm-incidents:GetReplicationSet", + "ssm-incidents:TagResource", + "ssm-incidents:UntagResource", + "ssm-incidents:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn", + "additionalProperties": false, + "description": "The ARN of the ReplicationSet." + }, + "DeletionProtected": { + "$ref": "#/definitions/DeletionProtected", + "default": false + }, + "Regions": { + "$ref": "#/definitions/RegionList", + "description": "The ReplicationSet configuration." + }, + "Tags": { + "default": [], + "description": "The tags to apply to the replication set.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Regions" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ssm-incidents.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ssm-incidents:TagResource", + "ssm-incidents:UntagResource", + "ssm-incidents:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SSMIncidents::ReplicationSet" +} diff --git a/src/schema/aws-ssmincidents-responseplan.json b/src/schema/aws-ssmincidents-responseplan.json index 227ec97c..2813457d 100644 --- a/src/schema/aws-ssmincidents-responseplan.json +++ b/src/schema/aws-ssmincidents-responseplan.json @@ -1,461 +1,466 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Action": { - "additionalProperties": false, - "description": "The automation configuration to launch.", - "properties": { - "SsmAutomation": { - "$ref": "#/definitions/SsmAutomation" - } - }, - "type": "object" - }, - "ChatChannel": { - "additionalProperties": false, - "description": "The chat channel configuration.", - "properties": { - "ChatbotSns": { - "$ref": "#/definitions/ChatbotSns" - } - }, - "type": "object" - }, - "ChatbotSns": { - "default": [], - "insertionOrder": true, - "items": { - "$ref": "#/definitions/SnsArn" - }, - "type": "array", - "uniqueItems": true - }, - "DynamicSsmParameter": { - "additionalProperties": false, - "description": "A parameter with a dynamic value to set when starting the SSM automation document.", - "properties": { - "Key": { - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "Value": { - "$ref": "#/definitions/DynamicSsmParameterValue" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "DynamicSsmParameterValue": { - "additionalProperties": false, - "description": "Value of the dynamic parameter to set when starting the SSM automation document.", - "properties": { - "Variable": { - "$ref": "#/definitions/VariableType" - } - }, - "type": "object" - }, - "IncidentTemplate": { - "additionalProperties": false, - "description": "The incident template configuration.", - "properties": { - "DedupeString": { - "description": "The deduplication string.", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "Impact": { - "description": "The impact value.", - "maximum": 5, - "minimum": 1, - "type": "integer" - }, - "IncidentTags": { - "default": [], - "description": "Tags that get applied to incidents created by the StartIncident API action.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "NotificationTargets": { - "default": [], - "description": "The list of notification targets.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/NotificationTargetItem" - }, - "maxItems": 10, - "type": "array" - }, - "Summary": { - "description": "The summary string.", - "maxLength": 4000, - "minLength": 1, - "type": "string" - }, - "Title": { - "description": "The title string.", - "maxLength": 200, - "type": "string" - } - }, - "required": [ - "Title", - "Impact" - ], - "type": "object" - }, - "Integration": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "PagerDutyConfiguration" - ] - } - ], - "properties": { - "PagerDutyConfiguration": { - "$ref": "#/definitions/PagerDutyConfiguration" - } - }, - "type": "object" - }, - "NotificationTargetItem": { - "additionalProperties": false, - "description": "A notification target.", - "properties": { - "SnsTopicArn": { - "$ref": "#/definitions/SnsArn" - } - }, - "type": "object" - }, - "PagerDutyConfiguration": { - "additionalProperties": false, - "description": "The pagerDuty configuration to use when starting the incident.", - "properties": { - "Name": { - "description": "The name of the pagerDuty configuration.", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "PagerDutyIncidentConfiguration": { - "$ref": "#/definitions/PagerDutyIncidentConfiguration" - }, - "SecretId": { - "description": "The AWS secrets manager secretId storing the pagerDuty token.", - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Name", - "SecretId", - "PagerDutyIncidentConfiguration" - ], - "type": "object" - }, - "PagerDutyIncidentConfiguration": { - "additionalProperties": false, - "description": "The pagerDuty incident configuration.", - "properties": { - "ServiceId": { - "description": "The pagerDuty serviceId.", - "maxLength": 200, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "ServiceId" - ], - "type": "object" - }, - "SSMContact": { - "description": "The ARN of the contact.", - "maxLength": 1000, - "pattern": "^arn:aws(-(cn|us-gov))?:ssm-contacts:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", - "type": "string" - }, - "SnsArn": { - "description": "The ARN of the Chatbot SNS topic.", - "maxLength": 1000, - "pattern": "^arn:aws(-(cn|us-gov))?:sns:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", - "type": "string" - }, - "SsmAutomation": { - "additionalProperties": false, - "description": "The configuration to use when starting the SSM automation document.", - "properties": { - "DocumentName": { - "description": "The document name to use when starting the SSM automation document.", - "maxLength": 128, - "type": "string" - }, - "DocumentVersion": { - "description": "The version of the document to use when starting the SSM automation document.", - "maxLength": 128, - "type": "string" - }, - "DynamicParameters": { - "default": [], - "description": "The parameters with dynamic values to set when starting the SSM automation document.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DynamicSsmParameter" - }, - "maxItems": 200, - "type": "array", - "uniqueItems": true - }, - "Parameters": { - "default": [], - "description": "The parameters to set when starting the SSM automation document.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SsmParameter" - }, - "maxItems": 200, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "RoleArn": { - "description": "The role ARN to use when starting the SSM automation document.", - "maxLength": 1000, - "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", - "type": "string" - }, - "TargetAccount": { - "description": "The account type to use when starting the SSM automation document.", - "enum": [ - "IMPACTED_ACCOUNT", - "RESPONSE_PLAN_OWNER_ACCOUNT" - ], - "type": "string" - } - }, - "required": [ - "RoleArn", - "DocumentName" - ], - "type": "object" - }, - "SsmParameter": { - "additionalProperties": false, - "description": "A parameter to set when starting the SSM automation document.", - "properties": { - "Key": { - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "Values": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/SsmParameterValue" - }, - "maxItems": 10, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Values", - "Key" - ], - "type": "object" - }, - "SsmParameterValue": { - "description": "A value of the parameter to set when starting the SSM automation document.", - "maxLength": 10000, - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to tag a resource.", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "VariableType": { - "description": "The variable types used as dynamic parameter value when starting the SSM automation document.", - "enum": [ - "INCIDENT_RECORD_ARN", - "INVOLVED_RESOURCES" - ], - "type": "string" - } - }, - "description": "Resource type definition for AWS::SSMIncidents::ResponsePlan", - "handlers": { - "create": { - "permissions": [ - "ssm-incidents:CreateResponsePlan", - "ssm-incidents:GetResponsePlan", - "ssm-incidents:TagResource", - "ssm-incidents:ListTagsForResource", - "iam:PassRole", - "secretsmanager:GetSecretValue", - "kms:Decrypt", - "kms:GenerateDataKey", - "kms:GenerateDataKeyPair", - "kms:GenerateDataKeyPairWithoutPlaintext", - "kms:GenerateDataKeyWithoutPlaintext" - ] - }, - "delete": { - "permissions": [ - "ssm-incidents:DeleteResponsePlan", - "ssm-incidents:GetResponsePlan" - ] - }, - "list": { - "permissions": [ - "ssm-incidents:ListResponsePlans" - ] - }, - "read": { - "permissions": [ - "ssm-incidents:GetResponsePlan", - "ssm-incidents:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "ssm-incidents:UpdateResponsePlan", - "ssm-incidents:GetResponsePlan", - "ssm-incidents:TagResource", - "ssm-incidents:UntagResource", - "ssm-incidents:ListTagsForResource", - "iam:PassRole", - "secretsmanager:GetSecretValue", - "kms:Decrypt", - "kms:GenerateDataKey", - "kms:GenerateDataKeyPair", - "kms:GenerateDataKeyPairWithoutPlaintext", - "kms:GenerateDataKeyWithoutPlaintext" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Actions": { - "default": [], - "description": "The list of actions.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Action" - }, - "maxItems": 1, - "type": "array", - "uniqueItems": true - }, - "Arn": { - "description": "The ARN of the response plan.", - "maxLength": 1000, - "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", - "type": "string" - }, - "ChatChannel": { - "$ref": "#/definitions/ChatChannel" - }, - "DisplayName": { - "description": "The display name of the response plan.", - "maxLength": 200, - "minLength": 1, - "type": "string" - }, - "Engagements": { - "default": [], - "description": "The list of engagements to use.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SSMContact" - }, - "maxItems": 5, - "type": "array", - "uniqueItems": true - }, - "IncidentTemplate": { - "$ref": "#/definitions/IncidentTemplate" - }, - "Integrations": { - "default": [], - "description": "The list of integrations.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Integration" - }, - "maxItems": 1, - "type": "array", - "uniqueItems": true - }, - "Name": { - "description": "The name of the response plan.", - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]*$", - "type": "string" - }, - "Tags": { - "default": [], - "description": "The tags to apply to the response plan.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name", - "IncidentTemplate" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ssm-incidents.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SSMIncidents::ResponsePlan" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Action": { + "additionalProperties": false, + "description": "The automation configuration to launch.", + "properties": { + "SsmAutomation": { + "$ref": "#/definitions/SsmAutomation" + } + }, + "type": "object" + }, + "ChatChannel": { + "additionalProperties": false, + "description": "The chat channel configuration.", + "properties": { + "ChatbotSns": { + "$ref": "#/definitions/ChatbotSns" + } + }, + "type": "object" + }, + "ChatbotSns": { + "default": [], + "insertionOrder": true, + "items": { + "$ref": "#/definitions/SnsArn" + }, + "type": "array", + "uniqueItems": true + }, + "DynamicSsmParameter": { + "additionalProperties": false, + "description": "A parameter with a dynamic value to set when starting the SSM automation document.", + "properties": { + "Key": { + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "Value": { + "$ref": "#/definitions/DynamicSsmParameterValue" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "DynamicSsmParameterValue": { + "additionalProperties": false, + "description": "Value of the dynamic parameter to set when starting the SSM automation document.", + "properties": { + "Variable": { + "$ref": "#/definitions/VariableType" + } + }, + "type": "object" + }, + "IncidentTemplate": { + "additionalProperties": false, + "description": "The incident template configuration.", + "properties": { + "DedupeString": { + "description": "The deduplication string.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "Impact": { + "description": "The impact value.", + "maximum": 5, + "minimum": 1, + "type": "integer" + }, + "IncidentTags": { + "default": [], + "description": "Tags that get applied to incidents created by the StartIncident API action.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "NotificationTargets": { + "default": [], + "description": "The list of notification targets.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/NotificationTargetItem" + }, + "maxItems": 10, + "type": "array" + }, + "Summary": { + "description": "The summary string.", + "maxLength": 4000, + "minLength": 1, + "type": "string" + }, + "Title": { + "description": "The title string.", + "maxLength": 200, + "type": "string" + } + }, + "required": [ + "Title", + "Impact" + ], + "type": "object" + }, + "Integration": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "PagerDutyConfiguration" + ] + } + ], + "properties": { + "PagerDutyConfiguration": { + "$ref": "#/definitions/PagerDutyConfiguration" + } + }, + "type": "object" + }, + "NotificationTargetItem": { + "additionalProperties": false, + "description": "A notification target.", + "properties": { + "SnsTopicArn": { + "$ref": "#/definitions/SnsArn" + } + }, + "type": "object" + }, + "PagerDutyConfiguration": { + "additionalProperties": false, + "description": "The pagerDuty configuration to use when starting the incident.", + "properties": { + "Name": { + "description": "The name of the pagerDuty configuration.", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "PagerDutyIncidentConfiguration": { + "$ref": "#/definitions/PagerDutyIncidentConfiguration" + }, + "SecretId": { + "description": "The AWS secrets manager secretId storing the pagerDuty token.", + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name", + "SecretId", + "PagerDutyIncidentConfiguration" + ], + "type": "object" + }, + "PagerDutyIncidentConfiguration": { + "additionalProperties": false, + "description": "The pagerDuty incident configuration.", + "properties": { + "ServiceId": { + "description": "The pagerDuty serviceId.", + "maxLength": 200, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ServiceId" + ], + "type": "object" + }, + "SSMContact": { + "description": "The ARN of the contact.", + "maxLength": 1000, + "pattern": "^arn:aws(-(cn|us-gov))?:ssm-contacts:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "SnsArn": { + "description": "The ARN of the Chatbot SNS topic.", + "maxLength": 1000, + "pattern": "^arn:aws(-(cn|us-gov))?:sns:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "SsmAutomation": { + "additionalProperties": false, + "description": "The configuration to use when starting the SSM automation document.", + "properties": { + "DocumentName": { + "description": "The document name to use when starting the SSM automation document.", + "maxLength": 128, + "type": "string" + }, + "DocumentVersion": { + "description": "The version of the document to use when starting the SSM automation document.", + "maxLength": 128, + "type": "string" + }, + "DynamicParameters": { + "default": [], + "description": "The parameters with dynamic values to set when starting the SSM automation document.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DynamicSsmParameter" + }, + "maxItems": 200, + "type": "array", + "uniqueItems": true + }, + "Parameters": { + "default": [], + "description": "The parameters to set when starting the SSM automation document.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SsmParameter" + }, + "maxItems": 200, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "RoleArn": { + "description": "The role ARN to use when starting the SSM automation document.", + "maxLength": 1000, + "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "TargetAccount": { + "description": "The account type to use when starting the SSM automation document.", + "enum": [ + "IMPACTED_ACCOUNT", + "RESPONSE_PLAN_OWNER_ACCOUNT" + ], + "type": "string" + } + }, + "required": [ + "RoleArn", + "DocumentName" + ], + "type": "object" + }, + "SsmParameter": { + "additionalProperties": false, + "description": "A parameter to set when starting the SSM automation document.", + "properties": { + "Key": { + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "Values": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/SsmParameterValue" + }, + "maxItems": 10, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Values", + "Key" + ], + "type": "object" + }, + "SsmParameterValue": { + "description": "A value of the parameter to set when starting the SSM automation document.", + "maxLength": 10000, + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to tag a resource.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VariableType": { + "description": "The variable types used as dynamic parameter value when starting the SSM automation document.", + "enum": [ + "INCIDENT_RECORD_ARN", + "INVOLVED_RESOURCES" + ], + "type": "string" + } + }, + "description": "Resource type definition for AWS::SSMIncidents::ResponsePlan", + "handlers": { + "create": { + "permissions": [ + "ssm-incidents:CreateResponsePlan", + "ssm-incidents:GetResponsePlan", + "ssm-incidents:TagResource", + "ssm-incidents:ListTagsForResource", + "iam:PassRole", + "secretsmanager:GetSecretValue", + "kms:Decrypt", + "kms:GenerateDataKey", + "kms:GenerateDataKeyPair", + "kms:GenerateDataKeyPairWithoutPlaintext", + "kms:GenerateDataKeyWithoutPlaintext" + ] + }, + "delete": { + "permissions": [ + "ssm-incidents:DeleteResponsePlan", + "ssm-incidents:GetResponsePlan" + ] + }, + "list": { + "permissions": [ + "ssm-incidents:ListResponsePlans" + ] + }, + "read": { + "permissions": [ + "ssm-incidents:GetResponsePlan", + "ssm-incidents:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ssm-incidents:UpdateResponsePlan", + "ssm-incidents:GetResponsePlan", + "ssm-incidents:TagResource", + "ssm-incidents:UntagResource", + "ssm-incidents:ListTagsForResource", + "iam:PassRole", + "secretsmanager:GetSecretValue", + "kms:Decrypt", + "kms:GenerateDataKey", + "kms:GenerateDataKeyPair", + "kms:GenerateDataKeyPairWithoutPlaintext", + "kms:GenerateDataKeyWithoutPlaintext" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Actions": { + "default": [], + "description": "The list of actions.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Action" + }, + "maxItems": 1, + "type": "array", + "uniqueItems": true + }, + "Arn": { + "description": "The ARN of the response plan.", + "maxLength": 1000, + "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "ChatChannel": { + "$ref": "#/definitions/ChatChannel" + }, + "DisplayName": { + "description": "The display name of the response plan.", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "Engagements": { + "default": [], + "description": "The list of engagements to use.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SSMContact" + }, + "maxItems": 5, + "type": "array", + "uniqueItems": true + }, + "IncidentTemplate": { + "$ref": "#/definitions/IncidentTemplate" + }, + "Integrations": { + "default": [], + "description": "The list of integrations.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Integration" + }, + "maxItems": 1, + "type": "array", + "uniqueItems": true + }, + "Name": { + "description": "The name of the response plan.", + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]*$", + "type": "string" + }, + "Tags": { + "default": [], + "description": "The tags to apply to the response plan.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name", + "IncidentTemplate" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ssm-incidents.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ssm-incidents:TagResource", + "ssm-incidents:UntagResource", + "ssm-incidents:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SSMIncidents::ResponsePlan" +} diff --git a/src/schema/aws-ssmquicksetup-configurationmanager.json b/src/schema/aws-ssmquicksetup-configurationmanager.json index 3f0f7966..3722634e 100644 --- a/src/schema/aws-ssmquicksetup-configurationmanager.json +++ b/src/schema/aws-ssmquicksetup-configurationmanager.json @@ -1,325 +1,325 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConfigurationDefinitions/*/Type", - "/properties/ConfigurationDefinitions/*/TypeVersion" - ], - "definitions": { - "ConfigurationDefinition": { - "additionalProperties": false, - "properties": { - "LocalDeploymentAdministrationRoleArn": { - "type": "string" - }, - "LocalDeploymentExecutionRoleName": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Parameters": { - "$ref": "#/definitions/ConfigurationParametersMap" - }, - "Type": { - "pattern": "^[a-zA-Z0-9_\\-.:/]{3,200}$", - "type": "string" - }, - "TypeVersion": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "id": { - "type": "string" - } - }, - "required": [ - "Parameters", - "Type" - ], - "type": "object" - }, - "ConfigurationParametersMap": { - "additionalProperties": false, - "patternProperties": { - "^[A-Za-z0-9+=@_\\/\\s-]+$": { - "maxLength": 40960, - "type": "string" - } - }, - "type": "object" - }, - "Status": { - "enum": [ - "INITIALIZING", - "DEPLOYING", - "SUCCEEDED", - "DELETING", - "STOPPING", - "FAILED", - "STOPPED", - "DELETE_FAILED", - "STOP_FAILED", - "NONE" - ], - "type": "string" - }, - "StatusDetails": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - }, - "StatusSummary": { - "additionalProperties": false, - "properties": { - "LastUpdatedAt": { - "type": "string" - }, - "Status": { - "$ref": "#/definitions/Status" - }, - "StatusDetails": { - "$ref": "#/definitions/StatusDetails" - }, - "StatusMessage": { - "type": "string" - }, - "StatusType": { - "$ref": "#/definitions/StatusType" - } - }, - "required": [ - "LastUpdatedAt", - "StatusType" - ], - "type": "object" - }, - "StatusType": { - "enum": [ - "Deployment", - "AsyncExecutions" - ], - "type": "string" - }, - "TagsMap": { - "additionalProperties": false, - "patternProperties": { - "^[A-Za-z0-9+=@_\\/:.-]+$": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[A-Za-z0-9+=@_\\/:.-]+$", - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::SSMQuickSetup::ConfigurationManager Resource Type", - "handlers": { - "create": { - "permissions": [ - "iam:GetRole", - "iam:CreateServiceLinkedRole", - "iam:ListRoles", - "iam:PassRole", - "ssm-quicksetup:CreateConfigurationManager", - "ssm-quicksetup:GetConfigurationManager", - "ssm-quicksetup:TagResource", - "ssm-quicksetup:UntagResource", - "ssm-quicksetup:UpdateConfigurationManager", - "ssm:Describe*", - "ssm:Get*", - "ssm:List*", - "ssm:DeleteAssociation", - "ssm:CreateResourceDataSync", - "ssm:UpdateResourceDataSync", - "ssm:StartAutomationExecution", - "ssm:CreateAssociation", - "ssm:StartAssociationsOnce", - "cloudformation:List*", - "cloudformation:Describe*", - "cloudformation:CreateStack", - "cloudformation:CreateStackInstances", - "cloudformation:CreateStackSet", - "cloudformation:DeleteStack", - "cloudformation:DeleteStackInstances", - "cloudformation:DeleteStackSet", - "cloudformation:UpdateStack", - "cloudformation:UpdateStackSet", - "cloudformation:StopStackSetOperation", - "cloudformation:GetTemplate", - "cloudformation:RollbackStack", - "cloudformation:TagResource", - "cloudformation:UntagResource", - "organizations:Describe*", - "organizations:List*", - "organizations:RegisterDelegatedAdministrator", - "organizations:DeregisterDelegatedAdministrator", - "organizations:EnableAWSServiceAccess" - ] - }, - "delete": { - "permissions": [ - "ssm-quicksetup:DeleteConfigurationManager", - "iam:GetRole", - "iam:CreateServiceLinkedRole", - "iam:ListRoles", - "iam:PassRole", - "ssm-quicksetup:GetConfigurationManager", - "ssm-quicksetup:ListConfigurationManagers", - "ssm-quicksetup:TagResource", - "ssm-quicksetup:UntagResource", - "ssm-quicksetup:UpdateConfigurationManager", - "ssm:Describe*", - "ssm:Get*", - "ssm:List*", - "ssm:DeleteAssociation", - "ssm:CreateResourceDataSync", - "ssm:UpdateResourceDataSync", - "ssm:StartAutomationExecution", - "ssm:CreateAssociation", - "ssm:StartAssociationsOnce", - "cloudformation:List*", - "cloudformation:Describe*", - "cloudformation:CreateStack", - "cloudformation:CreateStackInstances", - "cloudformation:CreateStackSet", - "cloudformation:DeleteStack", - "cloudformation:DeleteStackInstances", - "cloudformation:DeleteStackSet", - "cloudformation:UpdateStack", - "cloudformation:UpdateStackSet", - "cloudformation:StopStackSetOperation", - "cloudformation:GetTemplate", - "cloudformation:RollbackStack", - "cloudformation:TagResource", - "cloudformation:UntagResource", - "organizations:Describe*", - "organizations:List*", - "organizations:RegisterDelegatedAdministrator", - "organizations:DeregisterDelegatedAdministrator", - "organizations:EnableAWSServiceAccess" - ] - }, - "list": { - "permissions": [ - "ssm-quicksetup:ListConfigurationManagers" - ] - }, - "read": { - "permissions": [ - "ssm-quicksetup:GetConfigurationManager", - "iam:GetRole", - "iam:PassRole", - "iam:ListRoles", - "ssm:DescribeDocument", - "ssm:GetDocument" - ] - }, - "update": { - "permissions": [ - "iam:GetRole", - "iam:CreateServiceLinkedRole", - "iam:ListRoles", - "iam:PassRole", - "ssm-quicksetup:GetConfigurationManager", - "ssm-quicksetup:TagResource", - "ssm-quicksetup:UntagResource", - "ssm-quicksetup:UpdateConfigurationManager", - "ssm-quicksetup:UpdateConfigurationDefinition", - "ssm:Describe*", - "ssm:Get*", - "ssm:List*", - "ssm:DeleteAssociation", - "ssm:CreateResourceDataSync", - "ssm:UpdateResourceDataSync", - "ssm:StartAutomationExecution", - "ssm:CreateAssociation", - "ssm:StartAssociationsOnce", - "cloudformation:List*", - "cloudformation:Describe*", - "cloudformation:CreateStack", - "cloudformation:CreateStackInstances", - "cloudformation:CreateStackSet", - "cloudformation:DeleteStack", - "cloudformation:DeleteStackInstances", - "cloudformation:DeleteStackSet", - "cloudformation:UpdateStack", - "cloudformation:UpdateStackSet", - "cloudformation:StopStackSetOperation", - "cloudformation:GetTemplate", - "cloudformation:RollbackStack", - "cloudformation:TagResource", - "cloudformation:UntagResource", - "organizations:Describe*", - "organizations:List*", - "organizations:RegisterDelegatedAdministrator", - "organizations:DeregisterDelegatedAdministrator", - "organizations:EnableAWSServiceAccess" - ] - } - }, - "primaryIdentifier": [ - "/properties/ManagerArn" - ], - "properties": { - "ConfigurationDefinitions": { - "items": { - "$ref": "#/definitions/ConfigurationDefinition" - }, - "type": "array" - }, - "CreatedAt": { - "type": "string" - }, - "Description": { - "pattern": "^.{0,512}$", - "type": "string" - }, - "LastModifiedAt": { - "type": "string" - }, - "ManagerArn": { - "type": "string" - }, - "Name": { - "pattern": "^[ A-Za-z0-9_-]{1,50}$", - "type": "string" - }, - "StatusSummaries": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/StatusSummary" - }, - "type": "array" - }, - "Tags": { - "$ref": "#/definitions/TagsMap" - } - }, - "readOnlyProperties": [ - "/properties/CreatedAt", - "/properties/LastModifiedAt", - "/properties/ManagerArn", - "/properties/StatusSummaries", - "/properties/ConfigurationDefinitions/*/id" - ], - "required": [ - "ConfigurationDefinitions" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "ssm-quicksetup:TagResource", - "ssm-quicksetup:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SSMQuickSetup::ConfigurationManager" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConfigurationDefinitions/*/Type", + "/properties/ConfigurationDefinitions/*/TypeVersion" + ], + "definitions": { + "ConfigurationDefinition": { + "additionalProperties": false, + "properties": { + "LocalDeploymentAdministrationRoleArn": { + "type": "string" + }, + "LocalDeploymentExecutionRoleName": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Parameters": { + "$ref": "#/definitions/ConfigurationParametersMap" + }, + "Type": { + "pattern": "^[a-zA-Z0-9_\\-.:/]{3,200}$", + "type": "string" + }, + "TypeVersion": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "Parameters", + "Type" + ], + "type": "object" + }, + "ConfigurationParametersMap": { + "additionalProperties": false, + "patternProperties": { + "^[A-Za-z0-9+=@_\\/\\s-]+$": { + "maxLength": 40960, + "type": "string" + } + }, + "type": "object" + }, + "Status": { + "enum": [ + "INITIALIZING", + "DEPLOYING", + "SUCCEEDED", + "DELETING", + "STOPPING", + "FAILED", + "STOPPED", + "DELETE_FAILED", + "STOP_FAILED", + "NONE" + ], + "type": "string" + }, + "StatusDetails": { + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "string" + } + }, + "type": "object" + }, + "StatusSummary": { + "additionalProperties": false, + "properties": { + "LastUpdatedAt": { + "type": "string" + }, + "Status": { + "$ref": "#/definitions/Status" + }, + "StatusDetails": { + "$ref": "#/definitions/StatusDetails" + }, + "StatusMessage": { + "type": "string" + }, + "StatusType": { + "$ref": "#/definitions/StatusType" + } + }, + "required": [ + "LastUpdatedAt", + "StatusType" + ], + "type": "object" + }, + "StatusType": { + "enum": [ + "Deployment", + "AsyncExecutions" + ], + "type": "string" + }, + "TagsMap": { + "additionalProperties": false, + "patternProperties": { + "^[A-Za-z0-9 +=@_\\/:.-]+$": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[A-Za-z0-9 +=@_\\/:.-]+$", + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::SSMQuickSetup::ConfigurationManager Resource Type", + "handlers": { + "create": { + "permissions": [ + "iam:GetRole", + "iam:CreateServiceLinkedRole", + "iam:ListRoles", + "iam:PassRole", + "ssm-quicksetup:CreateConfigurationManager", + "ssm-quicksetup:GetConfigurationManager", + "ssm-quicksetup:TagResource", + "ssm-quicksetup:UntagResource", + "ssm-quicksetup:UpdateConfigurationManager", + "ssm:Describe*", + "ssm:Get*", + "ssm:List*", + "ssm:DeleteAssociation", + "ssm:CreateResourceDataSync", + "ssm:UpdateResourceDataSync", + "ssm:StartAutomationExecution", + "ssm:CreateAssociation", + "ssm:StartAssociationsOnce", + "cloudformation:List*", + "cloudformation:Describe*", + "cloudformation:CreateStack", + "cloudformation:CreateStackInstances", + "cloudformation:CreateStackSet", + "cloudformation:DeleteStack", + "cloudformation:DeleteStackInstances", + "cloudformation:DeleteStackSet", + "cloudformation:UpdateStack", + "cloudformation:UpdateStackSet", + "cloudformation:StopStackSetOperation", + "cloudformation:GetTemplate", + "cloudformation:RollbackStack", + "cloudformation:TagResource", + "cloudformation:UntagResource", + "organizations:Describe*", + "organizations:List*", + "organizations:RegisterDelegatedAdministrator", + "organizations:DeregisterDelegatedAdministrator", + "organizations:EnableAWSServiceAccess" + ] + }, + "delete": { + "permissions": [ + "ssm-quicksetup:DeleteConfigurationManager", + "iam:GetRole", + "iam:CreateServiceLinkedRole", + "iam:ListRoles", + "iam:PassRole", + "ssm-quicksetup:GetConfigurationManager", + "ssm-quicksetup:ListConfigurationManagers", + "ssm-quicksetup:TagResource", + "ssm-quicksetup:UntagResource", + "ssm-quicksetup:UpdateConfigurationManager", + "ssm:Describe*", + "ssm:Get*", + "ssm:List*", + "ssm:DeleteAssociation", + "ssm:CreateResourceDataSync", + "ssm:UpdateResourceDataSync", + "ssm:StartAutomationExecution", + "ssm:CreateAssociation", + "ssm:StartAssociationsOnce", + "cloudformation:List*", + "cloudformation:Describe*", + "cloudformation:CreateStack", + "cloudformation:CreateStackInstances", + "cloudformation:CreateStackSet", + "cloudformation:DeleteStack", + "cloudformation:DeleteStackInstances", + "cloudformation:DeleteStackSet", + "cloudformation:UpdateStack", + "cloudformation:UpdateStackSet", + "cloudformation:StopStackSetOperation", + "cloudformation:GetTemplate", + "cloudformation:RollbackStack", + "cloudformation:TagResource", + "cloudformation:UntagResource", + "organizations:Describe*", + "organizations:List*", + "organizations:RegisterDelegatedAdministrator", + "organizations:DeregisterDelegatedAdministrator", + "organizations:EnableAWSServiceAccess" + ] + }, + "list": { + "permissions": [ + "ssm-quicksetup:ListConfigurationManagers" + ] + }, + "read": { + "permissions": [ + "ssm-quicksetup:GetConfigurationManager", + "iam:GetRole", + "iam:PassRole", + "iam:ListRoles", + "ssm:DescribeDocument", + "ssm:GetDocument" + ] + }, + "update": { + "permissions": [ + "iam:GetRole", + "iam:CreateServiceLinkedRole", + "iam:ListRoles", + "iam:PassRole", + "ssm-quicksetup:GetConfigurationManager", + "ssm-quicksetup:TagResource", + "ssm-quicksetup:UntagResource", + "ssm-quicksetup:UpdateConfigurationManager", + "ssm-quicksetup:UpdateConfigurationDefinition", + "ssm:Describe*", + "ssm:Get*", + "ssm:List*", + "ssm:DeleteAssociation", + "ssm:CreateResourceDataSync", + "ssm:UpdateResourceDataSync", + "ssm:StartAutomationExecution", + "ssm:CreateAssociation", + "ssm:StartAssociationsOnce", + "cloudformation:List*", + "cloudformation:Describe*", + "cloudformation:CreateStack", + "cloudformation:CreateStackInstances", + "cloudformation:CreateStackSet", + "cloudformation:DeleteStack", + "cloudformation:DeleteStackInstances", + "cloudformation:DeleteStackSet", + "cloudformation:UpdateStack", + "cloudformation:UpdateStackSet", + "cloudformation:StopStackSetOperation", + "cloudformation:GetTemplate", + "cloudformation:RollbackStack", + "cloudformation:TagResource", + "cloudformation:UntagResource", + "organizations:Describe*", + "organizations:List*", + "organizations:RegisterDelegatedAdministrator", + "organizations:DeregisterDelegatedAdministrator", + "organizations:EnableAWSServiceAccess" + ] + } + }, + "primaryIdentifier": [ + "/properties/ManagerArn" + ], + "properties": { + "ConfigurationDefinitions": { + "items": { + "$ref": "#/definitions/ConfigurationDefinition" + }, + "type": "array" + }, + "CreatedAt": { + "type": "string" + }, + "Description": { + "pattern": "^.{0,512}$", + "type": "string" + }, + "LastModifiedAt": { + "type": "string" + }, + "ManagerArn": { + "type": "string" + }, + "Name": { + "pattern": "^[ A-Za-z0-9_-]{1,50}$", + "type": "string" + }, + "StatusSummaries": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StatusSummary" + }, + "type": "array" + }, + "Tags": { + "$ref": "#/definitions/TagsMap" + } + }, + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/LastModifiedAt", + "/properties/ManagerArn", + "/properties/StatusSummaries", + "/properties/ConfigurationDefinitions/*/id" + ], + "required": [ + "ConfigurationDefinitions" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "ssm-quicksetup:TagResource", + "ssm-quicksetup:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SSMQuickSetup::ConfigurationManager" +} diff --git a/src/schema/aws-sso-application.json b/src/schema/aws-sso-application.json index 7bdeb2e7..e0452d22 100644 --- a/src/schema/aws-sso-application.json +++ b/src/schema/aws-sso-application.json @@ -1,200 +1,206 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceArn", - "/properties/ApplicationProviderArn" - ], - "definitions": { - "PortalOptionsConfiguration": { - "additionalProperties": false, - "description": "A structure that describes the options for the access portal associated with an application", - "properties": { - "SignInOptions": { - "$ref": "#/definitions/SignInOptions", - "description": "A structure that describes the sign-in options for the access portal" - }, - "Visibility": { - "description": "Indicates whether this application is visible in the access portal", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - } - }, - "required": [], - "type": "object" - }, - "SignInOptions": { - "additionalProperties": false, - "description": "A structure that describes the sign-in options for an application portal", - "properties": { - "ApplicationUrl": { - "description": "The URL that accepts authentication requests for an application, this is a required parameter if the Origin parameter is APPLICATION", - "maxLength": 512, - "minLength": 1, - "pattern": "^http(s)?:\\/\\/[-a-zA-Z0-9+&@#\\/%?=~_|!:,.;]*[-a-zA-Z0-9+&bb@#\\/%?=~_|]$", - "type": "string" - }, - "Origin": { - "description": "This determines how IAM Identity Center navigates the user to the target application", - "enum": [ - "IDENTITY_CENTER", - "APPLICATION" - ], - "type": "string" - } - }, - "required": [ - "Origin" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "The metadata that you apply to the Identity Center (SSO) Application to help you categorize and organize them.", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[\\w+=,.@-]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[\\w+=,.@-]+$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for Identity Center (SSO) Application", - "handlers": { - "create": { - "permissions": [ - "sso:CreateApplication", - "sso:DescribeApplication", - "sso:TagResource" - ] - }, - "delete": { - "permissions": [ - "sso:DeleteApplication" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceArn": { - "$ref": "resource-schema.json#/properties/InstanceArn" - } - }, - "required": [ - "InstanceArn" - ] - }, - "permissions": [ - "sso:ListApplications" - ] - }, - "read": { - "permissions": [ - "sso:DescribeApplication", - "sso:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "sso:UpdateApplication", - "sso:TagResource", - "sso:UntagResource", - "sso:ListTagsForResource", - "sso:DescribeApplication" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationArn" - ], - "properties": { - "ApplicationArn": { - "description": "The Application ARN that is returned upon creation of the Identity Center (SSO) Application", - "maxLength": 1224, - "minLength": 10, - "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::\\d{12}:application/(sso)?ins-[a-zA-Z0-9-.]{16}/apl-[a-zA-Z0-9]{16}$", - "type": "string" - }, - "ApplicationProviderArn": { - "description": "The ARN of the application provider under which the operation will run", - "maxLength": 1224, - "minLength": 10, - "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::aws:applicationProvider/[a-zA-Z0-9-/]+$", - "type": "string" - }, - "Description": { - "description": "The description information for the Identity Center (SSO) Application", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "InstanceArn": { - "description": "The ARN of the instance of IAM Identity Center under which the operation will run", - "maxLength": 1224, - "minLength": 10, - "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}$", - "type": "string" - }, - "Name": { - "description": "The name you want to assign to this Identity Center (SSO) Application", - "maxLength": 255, - "minLength": 0, - "pattern": "^[\\w+=,.@-]+$", - "type": "string" - }, - "PortalOptions": { - "$ref": "#/definitions/PortalOptionsConfiguration", - "description": "A structure that describes the options for the portal associated with an application" - }, - "Status": { - "description": "Specifies whether the application is enabled or disabled", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag", - "description": "Specifies tags to be attached to the application" - }, - "maxItems": 75, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ApplicationArn" - ], - "required": [ - "Name", - "InstanceArn", - "ApplicationProviderArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-application", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SSO::Application" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceArn", + "/properties/ApplicationProviderArn" + ], + "definitions": { + "PortalOptionsConfiguration": { + "additionalProperties": false, + "description": "A structure that describes the options for the access portal associated with an application", + "properties": { + "SignInOptions": { + "$ref": "#/definitions/SignInOptions", + "description": "A structure that describes the sign-in options for the access portal" + }, + "Visibility": { + "description": "Indicates whether this application is visible in the access portal", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "required": [], + "type": "object" + }, + "SignInOptions": { + "additionalProperties": false, + "description": "A structure that describes the sign-in options for an application portal", + "properties": { + "ApplicationUrl": { + "description": "The URL that accepts authentication requests for an application, this is a required parameter if the Origin parameter is APPLICATION", + "maxLength": 512, + "minLength": 1, + "pattern": "^http(s)?:\\/\\/[-a-zA-Z0-9+&@#\\/%?=~_|!:,.;]*[-a-zA-Z0-9+&bb@#\\/%?=~_|]$", + "type": "string" + }, + "Origin": { + "description": "This determines how IAM Identity Center navigates the user to the target application", + "enum": [ + "IDENTITY_CENTER", + "APPLICATION" + ], + "type": "string" + } + }, + "required": [ + "Origin" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "The metadata that you apply to the Identity Center (SSO) Application to help you categorize and organize them.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\w+=,.@-]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[\\w+=,.@-]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for Identity Center (SSO) Application", + "handlers": { + "create": { + "permissions": [ + "sso:CreateApplication", + "sso:DescribeApplication", + "sso:TagResource", + "sso:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "sso:DeleteApplication" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "sso:ListApplications", + "sso:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "sso:DescribeApplication", + "sso:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "sso:UpdateApplication", + "sso:TagResource", + "sso:UntagResource", + "sso:ListTagsForResource", + "sso:DescribeApplication" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationArn" + ], + "properties": { + "ApplicationArn": { + "description": "The Application ARN that is returned upon creation of the Identity Center (SSO) Application", + "maxLength": 1224, + "minLength": 10, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::\\d{12}:application/(sso)?ins-[a-zA-Z0-9-.]{16}/apl-[a-zA-Z0-9]{16}$", + "type": "string" + }, + "ApplicationProviderArn": { + "description": "The ARN of the application provider under which the operation will run", + "maxLength": 1224, + "minLength": 10, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::aws:applicationProvider/[a-zA-Z0-9-/]+$", + "type": "string" + }, + "Description": { + "description": "The description information for the Identity Center (SSO) Application", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "InstanceArn": { + "description": "The ARN of the instance of IAM Identity Center under which the operation will run", + "maxLength": 1224, + "minLength": 10, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}$", + "type": "string" + }, + "Name": { + "description": "The name you want to assign to this Identity Center (SSO) Application", + "maxLength": 255, + "minLength": 0, + "pattern": "^[\\w+=,.@-]+$", + "type": "string" + }, + "PortalOptions": { + "$ref": "#/definitions/PortalOptionsConfiguration", + "description": "A structure that describes the options for the portal associated with an application" + }, + "Status": { + "description": "Specifies whether the application is enabled or disabled", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag", + "description": "Specifies tags to be attached to the application" + }, + "maxItems": 75, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ApplicationArn" + ], + "required": [ + "Name", + "InstanceArn", + "ApplicationProviderArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-application", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "sso:TagResource", + "sso:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SSO::Application" +} diff --git a/src/schema/aws-sso-applicationassignment.json b/src/schema/aws-sso-applicationassignment.json index 123cd09d..0520acbf 100644 --- a/src/schema/aws-sso-applicationassignment.json +++ b/src/schema/aws-sso-applicationassignment.json @@ -1,80 +1,80 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ApplicationArn", - "/properties/PrincipalType", - "/properties/PrincipalId" - ], - "description": "Resource Type definition for SSO application access grant to a user or group.", - "handlers": { - "create": { - "permissions": [ - "sso:CreateApplicationAssignment", - "sso:DescribeApplicationAssignment" - ] - }, - "delete": { - "permissions": [ - "sso:DeleteApplicationAssignment" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ApplicationArn": { - "$ref": "resource-schema.json#/properties/ApplicationArn" - } - } - }, - "permissions": [ - "sso:ListApplicationAssignments" - ] - }, - "read": { - "permissions": [ - "sso:DescribeApplicationAssignment" - ] - } - }, - "primaryIdentifier": [ - "/properties/ApplicationArn", - "/properties/PrincipalType", - "/properties/PrincipalId" - ], - "properties": { - "ApplicationArn": { - "description": "The ARN of the application.", - "maxLength": 1224, - "minLength": 10, - "pattern": "arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::\\d{12}:application/(sso)?ins-[a-zA-Z0-9-.]{16}/apl-[a-zA-Z0-9]{16}", - "type": "string" - }, - "PrincipalId": { - "description": "An identifier for an object in IAM Identity Center, such as a user or group", - "maxLength": 47, - "minLength": 1, - "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", - "type": "string" - }, - "PrincipalType": { - "description": "The entity type for which the assignment will be created.", - "enum": [ - "USER", - "GROUP" - ], - "type": "string" - } - }, - "required": [ - "ApplicationArn", - "PrincipalType", - "PrincipalId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-application-assignment", - "tagging": { - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::SSO::ApplicationAssignment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationArn", + "/properties/PrincipalType", + "/properties/PrincipalId" + ], + "description": "Resource Type definition for SSO application access grant to a user or group.", + "handlers": { + "create": { + "permissions": [ + "sso:CreateApplicationAssignment", + "sso:DescribeApplicationAssignment" + ] + }, + "delete": { + "permissions": [ + "sso:DeleteApplicationAssignment" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationArn": { + "$ref": "resource-schema.json#/properties/ApplicationArn" + } + } + }, + "permissions": [ + "sso:ListApplicationAssignments" + ] + }, + "read": { + "permissions": [ + "sso:DescribeApplicationAssignment" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationArn", + "/properties/PrincipalType", + "/properties/PrincipalId" + ], + "properties": { + "ApplicationArn": { + "description": "The ARN of the application.", + "maxLength": 1224, + "minLength": 10, + "pattern": "arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::\\d{12}:application/(sso)?ins-[a-zA-Z0-9-.]{16}/apl-[a-zA-Z0-9]{16}", + "type": "string" + }, + "PrincipalId": { + "description": "An identifier for an object in IAM Identity Center, such as a user or group", + "maxLength": 47, + "minLength": 1, + "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", + "type": "string" + }, + "PrincipalType": { + "description": "The entity type for which the assignment will be created.", + "enum": [ + "USER", + "GROUP" + ], + "type": "string" + } + }, + "required": [ + "ApplicationArn", + "PrincipalType", + "PrincipalId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-application-assignment", + "tagging": { + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::SSO::ApplicationAssignment" +} diff --git a/src/schema/aws-sso-assignment.json b/src/schema/aws-sso-assignment.json index 531cc685..f43c1bfd 100644 --- a/src/schema/aws-sso-assignment.json +++ b/src/schema/aws-sso-assignment.json @@ -1,115 +1,115 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceArn", - "/properties/TargetId", - "/properties/TargetType", - "/properties/PermissionSetArn", - "/properties/PrincipalType", - "/properties/PrincipalId" - ], - "description": "Resource Type definition for SSO assignmet", - "handlers": { - "create": { - "permissions": [ - "sso:CreateAccountAssignment", - "sso:DescribeAccountAssignmentCreationStatus", - "sso:ListAccountAssignments", - "iam:GetSAMLProvider", - "iam:CreateSAMLProvider", - "iam:AttachRolePolicy", - "iam:PutRolePolicy", - "iam:CreateRole", - "iam:ListRolePolicies" - ] - }, - "delete": { - "permissions": [ - "sso:ListAccountAssignments", - "sso:DeleteAccountAssignment", - "sso:DescribeAccountAssignmentDeletionStatus", - "iam:GetSAMLProvider", - "iam:ListRolePolicies" - ] - }, - "list": { - "permissions": [ - "sso:ListAccountAssignments", - "iam:ListRolePolicies" - ] - }, - "read": { - "permissions": [ - "sso:ListAccountAssignments", - "iam:GetSAMLProvider", - "iam:ListRolePolicies" - ] - } - }, - "primaryIdentifier": [ - "/properties/InstanceArn", - "/properties/TargetId", - "/properties/TargetType", - "/properties/PermissionSetArn", - "/properties/PrincipalType", - "/properties/PrincipalId" - ], - "properties": { - "InstanceArn": { - "description": "The sso instance that the permission set is owned.", - "maxLength": 1224, - "minLength": 10, - "pattern": "arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}", - "type": "string" - }, - "PermissionSetArn": { - "description": "The permission set that the assignemt will be assigned", - "maxLength": 1224, - "minLength": 10, - "pattern": "arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::permissionSet/(sso)?ins-[a-zA-Z0-9-.]{16}/ps-[a-zA-Z0-9-./]{16}", - "type": "string" - }, - "PrincipalId": { - "description": "The assignee's identifier, user id/group id", - "maxLength": 47, - "minLength": 1, - "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", - "type": "string" - }, - "PrincipalType": { - "description": "The assignee's type, user/group", - "enum": [ - "USER", - "GROUP" - ], - "type": "string" - }, - "TargetId": { - "description": "The account id to be provisioned.", - "pattern": "\\d{12}", - "type": "string" - }, - "TargetType": { - "description": "The type of resource to be provsioned to, only aws account now", - "enum": [ - "AWS_ACCOUNT" - ], - "type": "string" - } - }, - "required": [ - "InstanceArn", - "TargetId", - "TargetType", - "PermissionSetArn", - "PrincipalType", - "PrincipalId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-assignment", - "tagging": { - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::SSO::Assignment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceArn", + "/properties/TargetId", + "/properties/TargetType", + "/properties/PermissionSetArn", + "/properties/PrincipalType", + "/properties/PrincipalId" + ], + "description": "Resource Type definition for SSO assignmet", + "handlers": { + "create": { + "permissions": [ + "sso:CreateAccountAssignment", + "sso:DescribeAccountAssignmentCreationStatus", + "sso:ListAccountAssignments", + "iam:GetSAMLProvider", + "iam:CreateSAMLProvider", + "iam:AttachRolePolicy", + "iam:PutRolePolicy", + "iam:CreateRole", + "iam:ListRolePolicies" + ] + }, + "delete": { + "permissions": [ + "sso:ListAccountAssignments", + "sso:DeleteAccountAssignment", + "sso:DescribeAccountAssignmentDeletionStatus", + "iam:GetSAMLProvider", + "iam:ListRolePolicies" + ] + }, + "list": { + "permissions": [ + "sso:ListAccountAssignments", + "iam:ListRolePolicies" + ] + }, + "read": { + "permissions": [ + "sso:ListAccountAssignments", + "iam:GetSAMLProvider", + "iam:ListRolePolicies" + ] + } + }, + "primaryIdentifier": [ + "/properties/InstanceArn", + "/properties/TargetId", + "/properties/TargetType", + "/properties/PermissionSetArn", + "/properties/PrincipalType", + "/properties/PrincipalId" + ], + "properties": { + "InstanceArn": { + "description": "The sso instance that the permission set is owned.", + "maxLength": 1224, + "minLength": 10, + "pattern": "arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}", + "type": "string" + }, + "PermissionSetArn": { + "description": "The permission set that the assignemt will be assigned", + "maxLength": 1224, + "minLength": 10, + "pattern": "arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::permissionSet/(sso)?ins-[a-zA-Z0-9-.]{16}/ps-[a-zA-Z0-9-./]{16}", + "type": "string" + }, + "PrincipalId": { + "description": "The assignee's identifier, user id/group id", + "maxLength": 47, + "minLength": 1, + "pattern": "^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$", + "type": "string" + }, + "PrincipalType": { + "description": "The assignee's type, user/group", + "enum": [ + "USER", + "GROUP" + ], + "type": "string" + }, + "TargetId": { + "description": "The account id to be provisioned.", + "pattern": "\\d{12}", + "type": "string" + }, + "TargetType": { + "description": "The type of resource to be provsioned to, only aws account now", + "enum": [ + "AWS_ACCOUNT" + ], + "type": "string" + } + }, + "required": [ + "InstanceArn", + "TargetId", + "TargetType", + "PermissionSetArn", + "PrincipalType", + "PrincipalId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-assignment", + "tagging": { + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::SSO::Assignment" +} diff --git a/src/schema/aws-sso-instance.json b/src/schema/aws-sso-instance.json index 6ba0595b..6f534c42 100644 --- a/src/schema/aws-sso-instance.json +++ b/src/schema/aws-sso-instance.json @@ -1,133 +1,139 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "The metadata that you apply to the Identity Center (SSO) Instance to help you categorize and organize them.", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "[\\w+=,.@-]+", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "[\\w+=,.@-]+", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for Identity Center (SSO) Instance", - "handlers": { - "create": { - "permissions": [ - "sso:CreateInstance", - "sso:DescribeInstance", - "sso:TagResource", - "iam:CreateServiceLinkedRole", - "sso:TagInstance", - "sso:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "sso:DeleteInstance" - ] - }, - "list": { - "permissions": [ - "sso:ListInstances" - ] - }, - "read": { - "permissions": [ - "sso:DescribeInstance", - "sso:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "sso:UpdateInstance", - "sso:TagResource", - "sso:UntagResource", - "sso:ListTagsForResource", - "sso:TagInstance", - "sso:DescribeInstance" - ] - } - }, - "primaryIdentifier": [ - "/properties/InstanceArn" - ], - "properties": { - "IdentityStoreId": { - "description": "The ID of the identity store associated with the created Identity Center (SSO) Instance", - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "InstanceArn": { - "description": "The SSO Instance ARN that is returned upon creation of the Identity Center (SSO) Instance", - "maxLength": 1224, - "minLength": 10, - "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}$", - "type": "string" - }, - "Name": { - "description": "The name you want to assign to this Identity Center (SSO) Instance", - "maxLength": 32, - "minLength": 1, - "pattern": "^[\\w+=,.@-]+$", - "type": "string" - }, - "OwnerAccountId": { - "description": "The AWS accountId of the owner of the Identity Center (SSO) Instance", - "maxLength": 12, - "minLength": 12, - "pattern": "^\\d{12}?$", - "type": "string" - }, - "Status": { - "description": "The status of the Identity Center (SSO) Instance, create_in_progress/delete_in_progress/active", - "enum": [ - "CREATE_IN_PROGRESS", - "DELETE_IN_PROGRESS", - "ACTIVE" - ], - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 75, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/InstanceArn", - "/properties/OwnerAccountId", - "/properties/IdentityStoreId", - "/properties/Status" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-instance", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SSO::Instance" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "The metadata that you apply to the Identity Center (SSO) Instance to help you categorize and organize them.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "[\\w+=,.@-]+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "[\\w+=,.@-]+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for Identity Center (SSO) Instance", + "handlers": { + "create": { + "permissions": [ + "sso:CreateInstance", + "sso:DescribeInstance", + "sso:TagResource", + "iam:CreateServiceLinkedRole", + "sso:TagInstance", + "sso:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "sso:DeleteInstance" + ] + }, + "list": { + "permissions": [ + "sso:ListInstances" + ] + }, + "read": { + "permissions": [ + "sso:DescribeInstance", + "sso:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "sso:UpdateInstance", + "sso:TagResource", + "sso:UntagResource", + "sso:ListTagsForResource", + "sso:TagInstance", + "sso:DescribeInstance" + ] + } + }, + "primaryIdentifier": [ + "/properties/InstanceArn" + ], + "properties": { + "IdentityStoreId": { + "description": "The ID of the identity store associated with the created Identity Center (SSO) Instance", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "InstanceArn": { + "description": "The SSO Instance ARN that is returned upon creation of the Identity Center (SSO) Instance", + "maxLength": 1224, + "minLength": 10, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}$", + "type": "string" + }, + "Name": { + "description": "The name you want to assign to this Identity Center (SSO) Instance", + "maxLength": 32, + "minLength": 1, + "pattern": "^[\\w+=,.@-]+$", + "type": "string" + }, + "OwnerAccountId": { + "description": "The AWS accountId of the owner of the Identity Center (SSO) Instance", + "maxLength": 12, + "minLength": 12, + "pattern": "^\\d{12}?$", + "type": "string" + }, + "Status": { + "description": "The status of the Identity Center (SSO) Instance, create_in_progress/delete_in_progress/active", + "enum": [ + "CREATE_IN_PROGRESS", + "DELETE_IN_PROGRESS", + "ACTIVE" + ], + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 75, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/InstanceArn", + "/properties/OwnerAccountId", + "/properties/IdentityStoreId", + "/properties/Status" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-instance", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "sso:TagInstance", + "sso:TagResource", + "sso:UntagResource", + "sso:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SSO::Instance" +} diff --git a/src/schema/aws-sso-instanceaccesscontrolattributeconfiguration.json b/src/schema/aws-sso-instanceaccesscontrolattributeconfiguration.json index d28dae35..cead50f2 100644 --- a/src/schema/aws-sso-instanceaccesscontrolattributeconfiguration.json +++ b/src/schema/aws-sso-instanceaccesscontrolattributeconfiguration.json @@ -1,134 +1,134 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceArn" - ], - "definitions": { - "AccessControlAttribute": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]+", - "type": "string" - }, - "Value": { - "$ref": "#/definitions/AccessControlAttributeValue" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "AccessControlAttributeList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AccessControlAttribute" - }, - "maxItems": 50, - "type": "array" - }, - "AccessControlAttributeValue": { - "additionalProperties": false, - "properties": { - "Source": { - "$ref": "#/definitions/AccessControlAttributeValueSourceList" - } - }, - "required": [ - "Source" - ], - "type": "object" - }, - "AccessControlAttributeValueSource": { - "maxLength": 256, - "minLength": 0, - "pattern": "[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@\\[\\]\\{\\}\\$\\\\\"]*", - "type": "string" - }, - "AccessControlAttributeValueSourceList": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/AccessControlAttributeValueSource" - }, - "maxItems": 1, - "type": "array" - } - }, - "deprecatedProperties": [ - "/properties/InstanceAccessControlAttributeConfiguration" - ], - "description": "Resource Type definition for SSO InstanceAccessControlAttributeConfiguration", - "handlers": { - "create": { - "permissions": [ - "sso:CreateInstanceAccessControlAttributeConfiguration", - "sso:UpdateApplicationProfileForAWSAccountInstance", - "sso:DescribeInstanceAccessControlAttributeConfiguration" - ] - }, - "delete": { - "permissions": [ - "sso:DeleteInstanceAccessControlAttributeConfiguration", - "sso:DescribeInstanceAccessControlAttributeConfiguration" - ] - }, - "list": { - "permissions": [ - "sso:DescribeInstanceAccessControlAttributeConfiguration" - ] - }, - "read": { - "permissions": [ - "sso:DescribeInstanceAccessControlAttributeConfiguration" - ] - }, - "update": { - "permissions": [ - "sso:UpdateInstanceAccessControlAttributeConfiguration", - "sso:DescribeInstanceAccessControlAttributeConfiguration" - ] - } - }, - "primaryIdentifier": [ - "/properties/InstanceArn" - ], - "properties": { - "AccessControlAttributes": { - "$ref": "#/definitions/AccessControlAttributeList" - }, - "InstanceAccessControlAttributeConfiguration": { - "additionalProperties": false, - "description": "The InstanceAccessControlAttributeConfiguration property has been deprecated but is still supported for backwards compatibility purposes. We recomend that you use AccessControlAttributes property instead.", - "properties": { - "AccessControlAttributes": { - "$ref": "#/definitions/AccessControlAttributeList" - } - }, - "required": [ - "AccessControlAttributes" - ], - "type": "object" - }, - "InstanceArn": { - "description": "The ARN of the AWS SSO instance under which the operation will be executed.", - "maxLength": 1224, - "minLength": 10, - "pattern": "arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}", - "type": "string" - } - }, - "required": [ - "InstanceArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-instanceaccesscontrolattributeconfiguration", - "tagging": { - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::SSO::InstanceAccessControlAttributeConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceArn" + ], + "definitions": { + "AccessControlAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]+", + "type": "string" + }, + "Value": { + "$ref": "#/definitions/AccessControlAttributeValue" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "AccessControlAttributeList": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AccessControlAttribute" + }, + "maxItems": 50, + "type": "array" + }, + "AccessControlAttributeValue": { + "additionalProperties": false, + "properties": { + "Source": { + "$ref": "#/definitions/AccessControlAttributeValueSourceList" + } + }, + "required": [ + "Source" + ], + "type": "object" + }, + "AccessControlAttributeValueSource": { + "maxLength": 256, + "minLength": 0, + "pattern": "[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@\\[\\]\\{\\}\\$\\\\\"]*", + "type": "string" + }, + "AccessControlAttributeValueSourceList": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/AccessControlAttributeValueSource" + }, + "maxItems": 1, + "type": "array" + } + }, + "deprecatedProperties": [ + "/properties/InstanceAccessControlAttributeConfiguration" + ], + "description": "Resource Type definition for SSO InstanceAccessControlAttributeConfiguration", + "handlers": { + "create": { + "permissions": [ + "sso:CreateInstanceAccessControlAttributeConfiguration", + "sso:UpdateApplicationProfileForAWSAccountInstance", + "sso:DescribeInstanceAccessControlAttributeConfiguration" + ] + }, + "delete": { + "permissions": [ + "sso:DeleteInstanceAccessControlAttributeConfiguration", + "sso:DescribeInstanceAccessControlAttributeConfiguration" + ] + }, + "list": { + "permissions": [ + "sso:DescribeInstanceAccessControlAttributeConfiguration" + ] + }, + "read": { + "permissions": [ + "sso:DescribeInstanceAccessControlAttributeConfiguration" + ] + }, + "update": { + "permissions": [ + "sso:UpdateInstanceAccessControlAttributeConfiguration", + "sso:DescribeInstanceAccessControlAttributeConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/InstanceArn" + ], + "properties": { + "AccessControlAttributes": { + "$ref": "#/definitions/AccessControlAttributeList" + }, + "InstanceAccessControlAttributeConfiguration": { + "additionalProperties": false, + "description": "The InstanceAccessControlAttributeConfiguration property has been deprecated but is still supported for backwards compatibility purposes. We recomend that you use AccessControlAttributes property instead.", + "properties": { + "AccessControlAttributes": { + "$ref": "#/definitions/AccessControlAttributeList" + } + }, + "required": [ + "AccessControlAttributes" + ], + "type": "object" + }, + "InstanceArn": { + "description": "The ARN of the AWS SSO instance under which the operation will be executed.", + "maxLength": 1224, + "minLength": 10, + "pattern": "arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}", + "type": "string" + } + }, + "required": [ + "InstanceArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-instanceaccesscontrolattributeconfiguration", + "tagging": { + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::SSO::InstanceAccessControlAttributeConfiguration" +} diff --git a/src/schema/aws-sso-permissionset.json b/src/schema/aws-sso-permissionset.json index ad28bc96..217e079b 100644 --- a/src/schema/aws-sso-permissionset.json +++ b/src/schema/aws-sso-permissionset.json @@ -1,232 +1,237 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceArn", - "/properties/Name" - ], - "definitions": { - "CustomerManagedPolicyReference": { - "additionalProperties": false, - "properties": { - "Name": { - "maxLength": 128, - "minLength": 1, - "pattern": "[\\w+=,.@-]+", - "type": "string" - }, - "Path": { - "maxLength": 512, - "minLength": 1, - "pattern": "((/[A-Za-z0-9\\.,\\+@=_-]+)*)/", - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "ManagedPolicyArn": { - "description": "The managed policy to attach.", - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "PermissionsBoundary": { - "additionalProperties": false, - "properties": { - "CustomerManagedPolicyReference": { - "$ref": "#/definitions/CustomerManagedPolicyReference" - }, - "ManagedPolicyArn": { - "$ref": "#/definitions/ManagedPolicyArn" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "The metadata that you apply to the permission set to help you categorize and organize them.", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "[\\w+=,.@-]+", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "[\\w+=,.@-]+", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for SSO PermissionSet", - "handlers": { - "create": { - "permissions": [ - "sso:CreatePermissionSet", - "sso:PutInlinePolicyToPermissionSet", - "sso:AttachManagedPolicyToPermissionSet", - "sso:AttachCustomerManagedPolicyReferenceToPermissionSet", - "sso:PutPermissionsBoundaryToPermissionSet", - "sso:TagResource", - "sso:DescribePermissionSet", - "sso:ListTagsForResource", - "sso:ListManagedPoliciesInPermissionSet", - "sso:ListCustomerManagedPolicyReferencesInPermissionSet", - "sso:GetInlinePolicyForPermissionSet", - "sso:GetPermissionsBoundaryForPermissionSet" - ] - }, - "delete": { - "permissions": [ - "sso:DeletePermissionSet" - ] - }, - "list": { - "permissions": [ - "sso:DescribePermissionSet" - ] - }, - "read": { - "permissions": [ - "sso:DescribePermissionSet", - "sso:ListTagsForResource", - "sso:ListManagedPoliciesInPermissionSet", - "sso:ListCustomerManagedPolicyReferencesInPermissionSet", - "sso:GetInlinePolicyForPermissionSet", - "sso:GetPermissionsBoundaryForPermissionSet" - ] - }, - "update": { - "permissions": [ - "sso:UpdatePermissionSet", - "sso:TagResource", - "sso:UntagResource", - "sso:ListTagsForResource", - "sso:AttachManagedPolicyToPermissionSet", - "sso:AttachCustomerManagedPolicyReferenceToPermissionSet", - "sso:DetachManagedPolicyFromPermissionSet", - "sso:DetachCustomerManagedPolicyReferenceFromPermissionSet", - "sso:ListManagedPoliciesInPermissionSet", - "sso:ListCustomerManagedPolicyReferencesInPermissionSet", - "sso:PutInlinePolicyToPermissionSet", - "sso:GetPermissionsBoundaryForPermissionSet", - "sso:DeletePermissionsBoundaryFromPermissionSet", - "sso:PutPermissionsBoundaryToPermissionSet", - "sso:DeleteInlinePolicyFromPermissionSet", - "sso:ProvisionPermissionSet", - "sso:DescribePermissionSet", - "sso:GetInlinePolicyForPermissionSet", - "sso:DescribePermissionSetProvisioningStatus" - ] - } - }, - "primaryIdentifier": [ - "/properties/InstanceArn", - "/properties/PermissionSetArn" - ], - "properties": { - "CustomerManagedPolicyReferences": { - "default": [], - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CustomerManagedPolicyReference" - }, - "maxItems": 20, - "type": "array" - }, - "Description": { - "description": "The permission set description.", - "maxLength": 700, - "minLength": 1, - "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u00A1-\\u00FF]*", - "type": "string" - }, - "InlinePolicy": { - "description": "The inline policy to put in permission set.", - "type": [ - "object", - "string" - ] - }, - "InstanceArn": { - "description": "The sso instance arn that the permission set is owned.", - "maxLength": 1224, - "minLength": 10, - "pattern": "arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}", - "type": "string" - }, - "ManagedPolicies": { - "default": [], - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ManagedPolicyArn" - }, - "maxItems": 20, - "type": "array" - }, - "Name": { - "description": "The name you want to assign to this permission set.", - "maxLength": 32, - "minLength": 1, - "pattern": "[\\w+=,.@-]+", - "type": "string" - }, - "PermissionSetArn": { - "description": "The permission set that the policy will be attached to", - "maxLength": 1224, - "minLength": 10, - "pattern": "arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::permissionSet/(sso)?ins-[a-zA-Z0-9-.]{16}/ps-[a-zA-Z0-9-./]{16}", - "type": "string" - }, - "PermissionsBoundary": { - "$ref": "#/definitions/PermissionsBoundary" - }, - "RelayStateType": { - "description": "The relay state URL that redirect links to any service in the AWS Management Console.", - "maxLength": 240, - "minLength": 1, - "pattern": "[a-zA-Z0-9&$@#\\/%?=~\\-_'"|!:,.;*+\\[\\]\\ \\(\\)\\{\\}]+", - "type": "string" - }, - "SessionDuration": { - "description": "The length of time that a user can be signed in to an AWS account.", - "maxLength": 100, - "minLength": 1, - "pattern": "^(-?)P(?=\\d|T\\d)(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)([DW]))?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+(?:\\.\\d+)?)S)?)?$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/PermissionSetArn" - ], - "required": [ - "Name", - "InstanceArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-permissionset", - "tagging": { - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SSO::PermissionSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/InstanceArn", + "/properties/Name" + ], + "definitions": { + "CustomerManagedPolicyReference": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 128, + "minLength": 1, + "pattern": "[\\w+=,.@-]+", + "type": "string" + }, + "Path": { + "maxLength": 512, + "minLength": 1, + "pattern": "((/[A-Za-z0-9\\.,\\+@=_-]+)*)/", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "ManagedPolicyArn": { + "description": "The managed policy to attach.", + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "PermissionsBoundary": { + "additionalProperties": false, + "properties": { + "CustomerManagedPolicyReference": { + "$ref": "#/definitions/CustomerManagedPolicyReference" + }, + "ManagedPolicyArn": { + "$ref": "#/definitions/ManagedPolicyArn" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "The metadata that you apply to the permission set to help you categorize and organize them.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "[\\w+=,.@-]+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "[\\w+=,.@-]+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for SSO PermissionSet", + "handlers": { + "create": { + "permissions": [ + "sso:CreatePermissionSet", + "sso:PutInlinePolicyToPermissionSet", + "sso:AttachManagedPolicyToPermissionSet", + "sso:AttachCustomerManagedPolicyReferenceToPermissionSet", + "sso:PutPermissionsBoundaryToPermissionSet", + "sso:TagResource", + "sso:DescribePermissionSet", + "sso:ListTagsForResource", + "sso:ListManagedPoliciesInPermissionSet", + "sso:ListCustomerManagedPolicyReferencesInPermissionSet", + "sso:GetInlinePolicyForPermissionSet", + "sso:GetPermissionsBoundaryForPermissionSet" + ] + }, + "delete": { + "permissions": [ + "sso:DeletePermissionSet" + ] + }, + "list": { + "permissions": [ + "sso:DescribePermissionSet" + ] + }, + "read": { + "permissions": [ + "sso:DescribePermissionSet", + "sso:ListTagsForResource", + "sso:ListManagedPoliciesInPermissionSet", + "sso:ListCustomerManagedPolicyReferencesInPermissionSet", + "sso:GetInlinePolicyForPermissionSet", + "sso:GetPermissionsBoundaryForPermissionSet" + ] + }, + "update": { + "permissions": [ + "sso:UpdatePermissionSet", + "sso:TagResource", + "sso:UntagResource", + "sso:ListTagsForResource", + "sso:AttachManagedPolicyToPermissionSet", + "sso:AttachCustomerManagedPolicyReferenceToPermissionSet", + "sso:DetachManagedPolicyFromPermissionSet", + "sso:DetachCustomerManagedPolicyReferenceFromPermissionSet", + "sso:ListManagedPoliciesInPermissionSet", + "sso:ListCustomerManagedPolicyReferencesInPermissionSet", + "sso:PutInlinePolicyToPermissionSet", + "sso:GetPermissionsBoundaryForPermissionSet", + "sso:DeletePermissionsBoundaryFromPermissionSet", + "sso:PutPermissionsBoundaryToPermissionSet", + "sso:DeleteInlinePolicyFromPermissionSet", + "sso:ProvisionPermissionSet", + "sso:DescribePermissionSet", + "sso:GetInlinePolicyForPermissionSet", + "sso:DescribePermissionSetProvisioningStatus" + ] + } + }, + "primaryIdentifier": [ + "/properties/InstanceArn", + "/properties/PermissionSetArn" + ], + "properties": { + "CustomerManagedPolicyReferences": { + "default": [], + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomerManagedPolicyReference" + }, + "maxItems": 20, + "type": "array" + }, + "Description": { + "description": "The permission set description.", + "maxLength": 700, + "minLength": 1, + "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u00A1-\\u00FF]*", + "type": "string" + }, + "InlinePolicy": { + "description": "The inline policy to put in permission set.", + "type": [ + "object", + "string" + ] + }, + "InstanceArn": { + "description": "The sso instance arn that the permission set is owned.", + "maxLength": 1224, + "minLength": 10, + "pattern": "arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}", + "type": "string" + }, + "ManagedPolicies": { + "default": [], + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ManagedPolicyArn" + }, + "maxItems": 20, + "type": "array" + }, + "Name": { + "description": "The name you want to assign to this permission set.", + "maxLength": 32, + "minLength": 1, + "pattern": "[\\w+=,.@-]+", + "type": "string" + }, + "PermissionSetArn": { + "description": "The permission set that the policy will be attached to", + "maxLength": 1224, + "minLength": 10, + "pattern": "arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::permissionSet/(sso)?ins-[a-zA-Z0-9-.]{16}/ps-[a-zA-Z0-9-./]{16}", + "type": "string" + }, + "PermissionsBoundary": { + "$ref": "#/definitions/PermissionsBoundary" + }, + "RelayStateType": { + "description": "The relay state URL that redirect links to any service in the AWS Management Console.", + "maxLength": 240, + "minLength": 1, + "pattern": "[a-zA-Z0-9&$@#\\/%?=~\\-_'"|!:,.;*+\\[\\]\\ \\(\\)\\{\\}]+", + "type": "string" + }, + "SessionDuration": { + "description": "The length of time that a user can be signed in to an AWS account.", + "maxLength": 100, + "minLength": 1, + "pattern": "^(-?)P(?=\\d|T\\d)(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)([DW]))?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+(?:\\.\\d+)?)S)?)?$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/PermissionSetArn" + ], + "required": [ + "Name", + "InstanceArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-permissionset", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "sso:TagResource", + "sso:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SSO::PermissionSet" +} diff --git a/src/schema/aws-stepfunctions-activity.json b/src/schema/aws-stepfunctions-activity.json index 0a5c3957..4ce640bb 100644 --- a/src/schema/aws-stepfunctions-activity.json +++ b/src/schema/aws-stepfunctions-activity.json @@ -1,135 +1,136 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/EncryptionConfiguration" - ], - "definitions": { - "EncryptionConfiguration": { - "additionalProperties": false, - "properties": { - "KmsDataKeyReusePeriodSeconds": { - "maximum": 900, - "minimum": 60, - "type": "integer" - }, - "KmsKeyId": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "enum": [ - "CUSTOMER_MANAGED_KMS_KEY", - "AWS_OWNED_KEY" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "TagsEntry": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for Activity", - "handlers": { - "create": { - "permissions": [ - "states:CreateActivity", - "states:TagResource", - "kms:DescribeKey" - ] - }, - "delete": { - "permissions": [ - "states:DescribeActivity", - "states:DeleteActivity" - ] - }, - "list": { - "permissions": [ - "states:ListActivities" - ] - }, - "read": { - "permissions": [ - "states:DescribeActivity", - "states:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "states:ListTagsForResource", - "states:TagResource", - "states:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "EncryptionConfiguration": { - "$ref": "#/definitions/EncryptionConfiguration" - }, - "Name": { - "maxLength": 80, - "minLength": 1, - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TagsEntry" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-stepfunctions.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "states:UntagResource", - "states:TagResource", - "states:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::StepFunctions::Activity" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/EncryptionConfiguration" + ], + "definitions": { + "EncryptionConfiguration": { + "additionalProperties": false, + "properties": { + "KmsDataKeyReusePeriodSeconds": { + "maximum": 900, + "minimum": 60, + "type": "integer" + }, + "KmsKeyId": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "enum": [ + "CUSTOMER_MANAGED_KMS_KEY", + "AWS_OWNED_KEY" + ], + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "TagsEntry": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for Activity", + "handlers": { + "create": { + "permissions": [ + "states:CreateActivity", + "states:DescribeActivity", + "states:TagResource", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "states:DescribeActivity", + "states:DeleteActivity" + ] + }, + "list": { + "permissions": [ + "states:ListActivities" + ] + }, + "read": { + "permissions": [ + "states:DescribeActivity", + "states:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "states:ListTagsForResource", + "states:TagResource", + "states:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration" + }, + "Name": { + "maxLength": 80, + "minLength": 1, + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagsEntry" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-stepfunctions.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "states:UntagResource", + "states:TagResource", + "states:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::StepFunctions::Activity" +} diff --git a/src/schema/aws-stepfunctions-statemachine.json b/src/schema/aws-stepfunctions-statemachine.json index 3d22a89b..b5616a44 100644 --- a/src/schema/aws-stepfunctions-statemachine.json +++ b/src/schema/aws-stepfunctions-statemachine.json @@ -1,296 +1,296 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/StateMachineName" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StateMachineName", - "/properties/StateMachineType" - ], - "definitions": { - "CloudWatchLogsLogGroup": { - "additionalProperties": false, - "properties": { - "LogGroupArn": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "Definition": { - "minProperties": 1, - "type": "object" - }, - "DefinitionSubstitutions": { - "additionalProperties": false, - "minProperties": 1, - "patternProperties": { - ".*": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - }, - { - "type": "boolean" - } - ] - } - }, - "type": "object" - }, - "EncryptionConfiguration": { - "additionalProperties": false, - "properties": { - "KmsDataKeyReusePeriodSeconds": { - "maximum": 900, - "minimum": 60, - "type": "integer" - }, - "KmsKeyId": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "enum": [ - "CUSTOMER_MANAGED_KMS_KEY", - "AWS_OWNED_KEY" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "LogDestination": { - "additionalProperties": false, - "properties": { - "CloudWatchLogsLogGroup": { - "$ref": "#/definitions/CloudWatchLogsLogGroup" - } - }, - "type": "object" - }, - "LoggingConfiguration": { - "additionalProperties": false, - "properties": { - "Destinations": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LogDestination" - }, - "minItems": 1, - "type": "array" - }, - "IncludeExecutionData": { - "type": "boolean" - }, - "Level": { - "enum": [ - "ALL", - "ERROR", - "FATAL", - "OFF" - ], - "type": "string" - } - }, - "type": "object" - }, - "S3Location": { - "additionalProperties": false, - "properties": { - "Bucket": { - "type": "string" - }, - "Key": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Bucket", - "Key" - ], - "type": "object" - }, - "TagsEntry": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TracingConfiguration": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "description": "Resource schema for StateMachine", - "handlers": { - "create": { - "permissions": [ - "states:CreateStateMachine", - "states:DescribeStateMachine", - "states:TagResource", - "iam:PassRole", - "s3:GetObject", - "kms:DescribeKey", - "kms:GenerateDataKey" - ] - }, - "delete": { - "permissions": [ - "states:DeleteStateMachine", - "states:DescribeStateMachine" - ] - }, - "list": { - "permissions": [ - "states:ListStateMachines" - ] - }, - "read": { - "permissions": [ - "states:DescribeStateMachine", - "states:ListTagsForResource", - "kms:Decrypt" - ] - }, - "update": { - "permissions": [ - "states:UpdateStateMachine", - "states:TagResource", - "states:UntagResource", - "states:ListTagsForResource", - "iam:PassRole", - "kms:DescribeKey", - "kms:GenerateDataKey" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Definition": { - "$ref": "#/definitions/Definition" - }, - "DefinitionS3Location": { - "$ref": "#/definitions/S3Location" - }, - "DefinitionString": { - "maxLength": 1048576, - "minLength": 1, - "type": "string" - }, - "DefinitionSubstitutions": { - "$ref": "#/definitions/DefinitionSubstitutions" - }, - "EncryptionConfiguration": { - "$ref": "#/definitions/EncryptionConfiguration" - }, - "LoggingConfiguration": { - "$ref": "#/definitions/LoggingConfiguration" - }, - "Name": { - "maxLength": 80, - "minLength": 1, - "type": "string" - }, - "RoleArn": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "StateMachineName": { - "maxLength": 80, - "minLength": 1, - "type": "string" - }, - "StateMachineRevisionId": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "StateMachineType": { - "enum": [ - "STANDARD", - "EXPRESS" - ], - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TagsEntry" - }, - "type": "array", - "uniqueItems": false - }, - "TracingConfiguration": { - "$ref": "#/definitions/TracingConfiguration" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Name", - "/properties/StateMachineRevisionId" - ], - "required": [ - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-stepfunctions.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "states:UntagResource", - "states:TagResource", - "states:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::StepFunctions::StateMachine", - "writeOnlyProperties": [ - "/properties/Definition", - "/properties/DefinitionS3Location", - "/properties/DefinitionSubstitutions" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/StateMachineName" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StateMachineName", + "/properties/StateMachineType" + ], + "definitions": { + "CloudWatchLogsLogGroup": { + "additionalProperties": false, + "properties": { + "LogGroupArn": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "Definition": { + "minProperties": 1, + "type": "object" + }, + "DefinitionSubstitutions": { + "additionalProperties": false, + "minProperties": 1, + "patternProperties": { + ".*": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "EncryptionConfiguration": { + "additionalProperties": false, + "properties": { + "KmsDataKeyReusePeriodSeconds": { + "maximum": 900, + "minimum": 60, + "type": "integer" + }, + "KmsKeyId": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "enum": [ + "CUSTOMER_MANAGED_KMS_KEY", + "AWS_OWNED_KEY" + ], + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "LogDestination": { + "additionalProperties": false, + "properties": { + "CloudWatchLogsLogGroup": { + "$ref": "#/definitions/CloudWatchLogsLogGroup" + } + }, + "type": "object" + }, + "LoggingConfiguration": { + "additionalProperties": false, + "properties": { + "Destinations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LogDestination" + }, + "minItems": 1, + "type": "array" + }, + "IncludeExecutionData": { + "type": "boolean" + }, + "Level": { + "enum": [ + "ALL", + "ERROR", + "FATAL", + "OFF" + ], + "type": "string" + } + }, + "type": "object" + }, + "S3Location": { + "additionalProperties": false, + "properties": { + "Bucket": { + "type": "string" + }, + "Key": { + "type": "string" + }, + "Version": { + "type": "string" + } + }, + "required": [ + "Bucket", + "Key" + ], + "type": "object" + }, + "TagsEntry": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TracingConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "description": "Resource schema for StateMachine", + "handlers": { + "create": { + "permissions": [ + "states:CreateStateMachine", + "states:DescribeStateMachine", + "states:TagResource", + "iam:PassRole", + "s3:GetObject", + "kms:DescribeKey", + "kms:GenerateDataKey" + ] + }, + "delete": { + "permissions": [ + "states:DeleteStateMachine", + "states:DescribeStateMachine" + ] + }, + "list": { + "permissions": [ + "states:ListStateMachines" + ] + }, + "read": { + "permissions": [ + "states:DescribeStateMachine", + "states:ListTagsForResource", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "states:UpdateStateMachine", + "states:TagResource", + "states:UntagResource", + "states:ListTagsForResource", + "iam:PassRole", + "kms:DescribeKey", + "kms:GenerateDataKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Definition": { + "$ref": "#/definitions/Definition" + }, + "DefinitionS3Location": { + "$ref": "#/definitions/S3Location" + }, + "DefinitionString": { + "maxLength": 1048576, + "minLength": 1, + "type": "string" + }, + "DefinitionSubstitutions": { + "$ref": "#/definitions/DefinitionSubstitutions" + }, + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration" + }, + "LoggingConfiguration": { + "$ref": "#/definitions/LoggingConfiguration" + }, + "Name": { + "maxLength": 80, + "minLength": 1, + "type": "string" + }, + "RoleArn": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "StateMachineName": { + "maxLength": 80, + "minLength": 1, + "type": "string" + }, + "StateMachineRevisionId": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "StateMachineType": { + "enum": [ + "STANDARD", + "EXPRESS" + ], + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagsEntry" + }, + "type": "array", + "uniqueItems": false + }, + "TracingConfiguration": { + "$ref": "#/definitions/TracingConfiguration" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Name", + "/properties/StateMachineRevisionId" + ], + "required": [ + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-stepfunctions.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "states:UntagResource", + "states:TagResource", + "states:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::StepFunctions::StateMachine", + "writeOnlyProperties": [ + "/properties/Definition", + "/properties/DefinitionS3Location", + "/properties/DefinitionSubstitutions" + ] +} diff --git a/src/schema/aws-stepfunctions-statemachinealias.json b/src/schema/aws-stepfunctions-statemachinealias.json index e2e5f05a..5310ddbf 100644 --- a/src/schema/aws-stepfunctions-statemachinealias.json +++ b/src/schema/aws-stepfunctions-statemachinealias.json @@ -1,186 +1,186 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "DeploymentPreference": { - "additionalProperties": false, - "description": "The settings to enable gradual state machine deployments.", - "properties": { - "Alarms": { - "description": "A list of CloudWatch alarm names that will be monitored during the deployment. The deployment will fail and rollback if any alarms go into ALARM state.", - "insertionOrder": false, - "items": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Interval": { - "description": "The time in minutes between each traffic shifting increment.", - "maximum": 2100, - "minimum": 1, - "type": "integer" - }, - "Percentage": { - "description": "The percentage of traffic to shift to the new version in each increment.", - "maximum": 99, - "minimum": 1, - "type": "integer" - }, - "StateMachineVersionArn": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Type": { - "description": "The type of deployment to perform.", - "enum": [ - "LINEAR", - "ALL_AT_ONCE", - "CANARY" - ], - "type": "string" - } - }, - "required": [ - "StateMachineVersionArn", - "Type" - ], - "type": "object" - }, - "RoutingConfiguration": { - "description": "The routing configuration of the alias. One or two versions can be mapped to an alias to split StartExecution requests of the same state machine.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/RoutingConfigurationVersion" - }, - "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "RoutingConfigurationVersion": { - "additionalProperties": false, - "properties": { - "StateMachineVersionArn": { - "description": "The Amazon Resource Name (ARN) that identifies one or two state machine versions defined in the routing configuration.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Weight": { - "description": "The percentage of traffic you want to route to the state machine version. The sum of the weights in the routing configuration must be equal to 100.", - "maximum": 100, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "StateMachineVersionArn", - "Weight" - ], - "type": "object" - } - }, - "description": "Resource schema for StateMachineAlias", - "handlers": { - "create": { - "permissions": [ - "states:CreateStateMachineAlias", - "states:DescribeStateMachineAlias" - ] - }, - "delete": { - "permissions": [ - "states:DescribeStateMachineAlias", - "states:DeleteStateMachineAlias" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "RoutingConfiguration": { - "$ref": "resource-schema.json#/properties/RoutingConfiguration" - } - }, - "required": [ - "RoutingConfiguration" - ] - }, - "permissions": [ - "states:ListStateMachineAliases" - ] - }, - "read": { - "permissions": [ - "states:DescribeStateMachineAlias" - ] - }, - "update": { - "permissions": [ - "cloudwatch:DescribeAlarms", - "states:UpdateStateMachineAlias", - "states:DescribeStateMachineAlias" - ], - "timeoutInMinutes": 2160 - } - }, - "oneOf": [ - { - "required": [ - "RoutingConfiguration" - ] - }, - { - "required": [ - "DeploymentPreference" - ] - } - ], - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "description": "The ARN of the alias.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "DeploymentPreference": { - "$ref": "#/definitions/DeploymentPreference" - }, - "Description": { - "description": "An optional description of the alias.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "Name": { - "description": "The alias name.", - "maxLength": 80, - "minLength": 1, - "type": "string" - }, - "RoutingConfiguration": { - "$ref": "#/definitions/RoutingConfiguration" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-stepfunctions.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::StepFunctions::StateMachineAlias", - "writeOnlyProperties": [ - "/properties/DeploymentPreference" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "DeploymentPreference": { + "additionalProperties": false, + "description": "The settings to enable gradual state machine deployments.", + "properties": { + "Alarms": { + "description": "A list of CloudWatch alarm names that will be monitored during the deployment. The deployment will fail and rollback if any alarms go into ALARM state.", + "insertionOrder": false, + "items": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Interval": { + "description": "The time in minutes between each traffic shifting increment.", + "maximum": 2100, + "minimum": 1, + "type": "integer" + }, + "Percentage": { + "description": "The percentage of traffic to shift to the new version in each increment.", + "maximum": 99, + "minimum": 1, + "type": "integer" + }, + "StateMachineVersionArn": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Type": { + "description": "The type of deployment to perform.", + "enum": [ + "LINEAR", + "ALL_AT_ONCE", + "CANARY" + ], + "type": "string" + } + }, + "required": [ + "StateMachineVersionArn", + "Type" + ], + "type": "object" + }, + "RoutingConfiguration": { + "description": "The routing configuration of the alias. One or two versions can be mapped to an alias to split StartExecution requests of the same state machine.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/RoutingConfigurationVersion" + }, + "maxItems": 2, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "RoutingConfigurationVersion": { + "additionalProperties": false, + "properties": { + "StateMachineVersionArn": { + "description": "The Amazon Resource Name (ARN) that identifies one or two state machine versions defined in the routing configuration.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Weight": { + "description": "The percentage of traffic you want to route to the state machine version. The sum of the weights in the routing configuration must be equal to 100.", + "maximum": 100, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "StateMachineVersionArn", + "Weight" + ], + "type": "object" + } + }, + "description": "Resource schema for StateMachineAlias", + "handlers": { + "create": { + "permissions": [ + "states:CreateStateMachineAlias", + "states:DescribeStateMachineAlias" + ] + }, + "delete": { + "permissions": [ + "states:DescribeStateMachineAlias", + "states:DeleteStateMachineAlias" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "RoutingConfiguration": { + "$ref": "resource-schema.json#/properties/RoutingConfiguration" + } + }, + "required": [ + "RoutingConfiguration" + ] + }, + "permissions": [ + "states:ListStateMachineAliases" + ] + }, + "read": { + "permissions": [ + "states:DescribeStateMachineAlias" + ] + }, + "update": { + "permissions": [ + "cloudwatch:DescribeAlarms", + "states:UpdateStateMachineAlias", + "states:DescribeStateMachineAlias" + ], + "timeoutInMinutes": 2160 + } + }, + "oneOf": [ + { + "required": [ + "RoutingConfiguration" + ] + }, + { + "required": [ + "DeploymentPreference" + ] + } + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "description": "The ARN of the alias.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "DeploymentPreference": { + "$ref": "#/definitions/DeploymentPreference" + }, + "Description": { + "description": "An optional description of the alias.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "The alias name.", + "maxLength": 80, + "minLength": 1, + "type": "string" + }, + "RoutingConfiguration": { + "$ref": "#/definitions/RoutingConfiguration" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-stepfunctions.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::StepFunctions::StateMachineAlias", + "writeOnlyProperties": [ + "/properties/DeploymentPreference" + ] +} diff --git a/src/schema/aws-stepfunctions-statemachineversion.json b/src/schema/aws-stepfunctions-statemachineversion.json index 5897cac3..4eb8d068 100644 --- a/src/schema/aws-stepfunctions-statemachineversion.json +++ b/src/schema/aws-stepfunctions-statemachineversion.json @@ -1,83 +1,84 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StateMachineArn", - "/properties/StateMachineRevisionId" - ], - "definitions": {}, - "description": "Resource schema for StateMachineVersion", - "handlers": { - "create": { - "permissions": [ - "states:PublishStateMachineVersion", - "states:ListStateMachineVersions", - "states:DescribeStateMachine" - ] - }, - "delete": { - "permissions": [ - "states:DeleteStateMachineVersion", - "states:DescribeStateMachine" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "StateMachineArn": { - "$ref": "resource-schema.json#/properties/StateMachineArn" - } - }, - "required": [ - "StateMachineArn" - ] - }, - "permissions": [ - "states:ListStateMachineVersions" - ] - }, - "read": { - "permissions": [ - "states:DescribeStateMachine" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Description": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "StateMachineArn": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "StateMachineRevisionId": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "StateMachineArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-stepfunctions.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::StepFunctions::StateMachineVersion", - "writeOnlyProperties": [ - "/properties/StateMachineArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StateMachineArn", + "/properties/StateMachineRevisionId", + "/properties/Description" + ], + "definitions": {}, + "description": "Resource schema for StateMachineVersion", + "handlers": { + "create": { + "permissions": [ + "states:PublishStateMachineVersion", + "states:ListStateMachineVersions", + "states:DescribeStateMachine" + ] + }, + "delete": { + "permissions": [ + "states:DeleteStateMachineVersion", + "states:DescribeStateMachine" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "StateMachineArn": { + "$ref": "resource-schema.json#/properties/StateMachineArn" + } + }, + "required": [ + "StateMachineArn" + ] + }, + "permissions": [ + "states:ListStateMachineVersions" + ] + }, + "read": { + "permissions": [ + "states:DescribeStateMachine" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Description": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "StateMachineArn": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "StateMachineRevisionId": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "StateMachineArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-stepfunctions.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::StepFunctions::StateMachineVersion", + "writeOnlyProperties": [ + "/properties/StateMachineArn" + ] +} diff --git a/src/schema/aws-supportapp-accountalias.json b/src/schema/aws-supportapp-accountalias.json index a0a732e1..7385ea66 100644 --- a/src/schema/aws-supportapp-accountalias.json +++ b/src/schema/aws-supportapp-accountalias.json @@ -1,61 +1,61 @@ -{ - "additionalProperties": false, - "description": "An AWS Support App resource that creates, updates, reads, and deletes a customer's account alias.", - "handlers": { - "create": { - "permissions": [ - "supportapp:PutAccountAlias", - "supportapp:GetAccountAlias" - ] - }, - "delete": { - "permissions": [ - "supportapp:DeleteAccountAlias", - "supportapp:GetAccountAlias" - ] - }, - "list": { - "permissions": [ - "supportapp:GetAccountAlias" - ] - }, - "read": { - "permissions": [ - "supportapp:GetAccountAlias" - ] - }, - "update": { - "permissions": [ - "supportapp:PutAccountAlias", - "supportapp:GetAccountAlias" - ] - } - }, - "primaryIdentifier": [ - "/properties/AccountAliasResourceId" - ], - "properties": { - "AccountAlias": { - "description": "An account alias associated with a customer's account.", - "maxLength": 30, - "minLength": 1, - "pattern": "^[\\w\\- ]+$", - "type": "string" - }, - "AccountAliasResourceId": { - "description": "Unique identifier representing an alias tied to an account", - "maxLength": 29, - "minLength": 29, - "pattern": "^[\\w\\- ]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AccountAliasResourceId" - ], - "required": [ - "AccountAlias" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-supportapp.git", - "typeName": "AWS::SupportApp::AccountAlias" -} +{ + "additionalProperties": false, + "description": "An AWS Support App resource that creates, updates, reads, and deletes a customer's account alias.", + "handlers": { + "create": { + "permissions": [ + "supportapp:PutAccountAlias", + "supportapp:GetAccountAlias" + ] + }, + "delete": { + "permissions": [ + "supportapp:DeleteAccountAlias", + "supportapp:GetAccountAlias" + ] + }, + "list": { + "permissions": [ + "supportapp:GetAccountAlias" + ] + }, + "read": { + "permissions": [ + "supportapp:GetAccountAlias" + ] + }, + "update": { + "permissions": [ + "supportapp:PutAccountAlias", + "supportapp:GetAccountAlias" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccountAliasResourceId" + ], + "properties": { + "AccountAlias": { + "description": "An account alias associated with a customer's account.", + "maxLength": 30, + "minLength": 1, + "pattern": "^[\\w\\- ]+$", + "type": "string" + }, + "AccountAliasResourceId": { + "description": "Unique identifier representing an alias tied to an account", + "maxLength": 29, + "minLength": 29, + "pattern": "^[\\w\\- ]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AccountAliasResourceId" + ], + "required": [ + "AccountAlias" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-supportapp.git", + "typeName": "AWS::SupportApp::AccountAlias" +} diff --git a/src/schema/aws-supportapp-slackchannelconfiguration.json b/src/schema/aws-supportapp-slackchannelconfiguration.json index 432b652c..370c840d 100644 --- a/src/schema/aws-supportapp-slackchannelconfiguration.json +++ b/src/schema/aws-supportapp-slackchannelconfiguration.json @@ -1,101 +1,101 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TeamId", - "/properties/ChannelId" - ], - "description": "An AWS Support App resource that creates, updates, lists and deletes Slack channel configurations.", - "handlers": { - "create": { - "permissions": [ - "supportapp:CreateSlackChannelConfiguration", - "supportapp:ListSlackChannelConfigurations" - ] - }, - "delete": { - "permissions": [ - "supportapp:DeleteSlackChannelConfiguration", - "supportapp:ListSlackChannelConfigurations" - ] - }, - "list": { - "permissions": [ - "supportapp:ListSlackChannelConfigurations" - ] - }, - "read": { - "permissions": [ - "supportapp:ListSlackChannelConfigurations" - ] - }, - "update": { - "permissions": [ - "supportapp:UpdateSlackChannelConfiguration", - "supportapp:ListSlackChannelConfigurations" - ] - } - }, - "primaryIdentifier": [ - "/properties/TeamId", - "/properties/ChannelId" - ], - "properties": { - "ChannelId": { - "description": "The channel ID in Slack, which identifies a channel within a workspace.", - "maxLength": 256, - "minLength": 1, - "pattern": "^\\S+$", - "type": "string" - }, - "ChannelName": { - "description": "The channel name in Slack.", - "maxLength": 256, - "minLength": 1, - "pattern": "^.+$", - "type": "string" - }, - "ChannelRoleArn": { - "description": "The Amazon Resource Name (ARN) of an IAM role that grants the AWS Support App access to perform operations for AWS services.", - "maxLength": 2048, - "minLength": 31, - "pattern": "^arn:aws[-a-z0-9]*:iam::[0-9]{12}:role\\/(.+)$", - "type": "string" - }, - "NotifyOnAddCorrespondenceToCase": { - "description": "Whether to notify when a correspondence is added to a case.", - "type": "boolean" - }, - "NotifyOnCaseSeverity": { - "description": "The severity level of a support case that a customer wants to get notified for.", - "enum": [ - "none", - "all", - "high" - ], - "type": "string" - }, - "NotifyOnCreateOrReopenCase": { - "description": "Whether to notify when a case is created or reopened.", - "type": "boolean" - }, - "NotifyOnResolveCase": { - "description": "Whether to notify when a case is resolved.", - "type": "boolean" - }, - "TeamId": { - "description": "The team ID in Slack, which uniquely identifies a workspace.", - "maxLength": 256, - "minLength": 1, - "pattern": "^\\S+$", - "type": "string" - } - }, - "required": [ - "TeamId", - "ChannelId", - "NotifyOnCaseSeverity", - "ChannelRoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-supportapp.git", - "typeName": "AWS::SupportApp::SlackChannelConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TeamId", + "/properties/ChannelId" + ], + "description": "An AWS Support App resource that creates, updates, lists and deletes Slack channel configurations.", + "handlers": { + "create": { + "permissions": [ + "supportapp:CreateSlackChannelConfiguration", + "supportapp:ListSlackChannelConfigurations" + ] + }, + "delete": { + "permissions": [ + "supportapp:DeleteSlackChannelConfiguration", + "supportapp:ListSlackChannelConfigurations" + ] + }, + "list": { + "permissions": [ + "supportapp:ListSlackChannelConfigurations" + ] + }, + "read": { + "permissions": [ + "supportapp:ListSlackChannelConfigurations" + ] + }, + "update": { + "permissions": [ + "supportapp:UpdateSlackChannelConfiguration", + "supportapp:ListSlackChannelConfigurations" + ] + } + }, + "primaryIdentifier": [ + "/properties/TeamId", + "/properties/ChannelId" + ], + "properties": { + "ChannelId": { + "description": "The channel ID in Slack, which identifies a channel within a workspace.", + "maxLength": 256, + "minLength": 1, + "pattern": "^\\S+$", + "type": "string" + }, + "ChannelName": { + "description": "The channel name in Slack.", + "maxLength": 256, + "minLength": 1, + "pattern": "^.+$", + "type": "string" + }, + "ChannelRoleArn": { + "description": "The Amazon Resource Name (ARN) of an IAM role that grants the AWS Support App access to perform operations for AWS services.", + "maxLength": 2048, + "minLength": 31, + "pattern": "^arn:aws[-a-z0-9]*:iam::[0-9]{12}:role\\/(.+)$", + "type": "string" + }, + "NotifyOnAddCorrespondenceToCase": { + "description": "Whether to notify when a correspondence is added to a case.", + "type": "boolean" + }, + "NotifyOnCaseSeverity": { + "description": "The severity level of a support case that a customer wants to get notified for.", + "enum": [ + "none", + "all", + "high" + ], + "type": "string" + }, + "NotifyOnCreateOrReopenCase": { + "description": "Whether to notify when a case is created or reopened.", + "type": "boolean" + }, + "NotifyOnResolveCase": { + "description": "Whether to notify when a case is resolved.", + "type": "boolean" + }, + "TeamId": { + "description": "The team ID in Slack, which uniquely identifies a workspace.", + "maxLength": 256, + "minLength": 1, + "pattern": "^\\S+$", + "type": "string" + } + }, + "required": [ + "TeamId", + "ChannelId", + "NotifyOnCaseSeverity", + "ChannelRoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-supportapp.git", + "typeName": "AWS::SupportApp::SlackChannelConfiguration" +} diff --git a/src/schema/aws-supportapp-slackworkspaceconfiguration.json b/src/schema/aws-supportapp-slackworkspaceconfiguration.json index adf72b5e..d8ed251d 100644 --- a/src/schema/aws-supportapp-slackworkspaceconfiguration.json +++ b/src/schema/aws-supportapp-slackworkspaceconfiguration.json @@ -1,67 +1,67 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TeamId" - ], - "description": "An AWS Support App resource that creates, updates, lists, and deletes Slack workspace configurations.", - "handlers": { - "create": { - "permissions": [ - "supportapp:RegisterSlackWorkspaceForOrganization", - "supportapp:ListSlackWorkspaceConfigurations" - ] - }, - "delete": { - "permissions": [ - "supportapp:ListSlackWorkspaceConfigurations", - "supportapp:DeleteSlackWorkspaceConfiguration" - ] - }, - "list": { - "permissions": [ - "supportapp:ListSlackWorkspaceConfigurations" - ] - }, - "read": { - "permissions": [ - "supportapp:ListSlackWorkspaceConfigurations" - ] - }, - "update": { - "permissions": [ - "supportapp:RegisterSlackWorkspaceForOrganization", - "supportapp:ListSlackWorkspaceConfigurations" - ] - } - }, - "primaryIdentifier": [ - "/properties/TeamId" - ], - "properties": { - "TeamId": { - "description": "The team ID in Slack, which uniquely identifies a workspace.", - "maxLength": 256, - "minLength": 1, - "pattern": "^\\S+$", - "type": "string" - }, - "VersionId": { - "description": "An identifier used to update an existing Slack workspace configuration in AWS CloudFormation.", - "maxLength": 256, - "minLength": 1, - "pattern": "^[0-9]+$", - "type": "string" - } - }, - "required": [ - "TeamId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-supportapp.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::SupportApp::SlackWorkspaceConfiguration", - "writeOnlyProperties": [ - "/properties/VersionId" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TeamId" + ], + "description": "An AWS Support App resource that creates, updates, lists, and deletes Slack workspace configurations.", + "handlers": { + "create": { + "permissions": [ + "supportapp:RegisterSlackWorkspaceForOrganization", + "supportapp:ListSlackWorkspaceConfigurations" + ] + }, + "delete": { + "permissions": [ + "supportapp:ListSlackWorkspaceConfigurations", + "supportapp:DeleteSlackWorkspaceConfiguration" + ] + }, + "list": { + "permissions": [ + "supportapp:ListSlackWorkspaceConfigurations" + ] + }, + "read": { + "permissions": [ + "supportapp:ListSlackWorkspaceConfigurations" + ] + }, + "update": { + "permissions": [ + "supportapp:RegisterSlackWorkspaceForOrganization", + "supportapp:ListSlackWorkspaceConfigurations" + ] + } + }, + "primaryIdentifier": [ + "/properties/TeamId" + ], + "properties": { + "TeamId": { + "description": "The team ID in Slack, which uniquely identifies a workspace.", + "maxLength": 256, + "minLength": 1, + "pattern": "^\\S+$", + "type": "string" + }, + "VersionId": { + "description": "An identifier used to update an existing Slack workspace configuration in AWS CloudFormation.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[0-9]+$", + "type": "string" + } + }, + "required": [ + "TeamId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-supportapp.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::SupportApp::SlackWorkspaceConfiguration", + "writeOnlyProperties": [ + "/properties/VersionId" + ] +} diff --git a/src/schema/aws-synthetics-canary.json b/src/schema/aws-synthetics-canary.json index a622e4e4..1ee59764 100644 --- a/src/schema/aws-synthetics-canary.json +++ b/src/schema/aws-synthetics-canary.json @@ -1,405 +1,432 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "ArtifactConfig": { - "additionalProperties": false, - "properties": { - "S3Encryption": { - "$ref": "#/definitions/S3Encryption", - "description": "Encryption configuration for uploading artifacts to S3" - } - }, - "type": "object" - }, - "BaseScreenshot": { - "properties": { - "IgnoreCoordinates": { - "description": "List of coordinates of rectangles to be ignored during visual testing", - "items": { - "description": "Coordinates of a rectangle to be ignored during visual testing", - "type": "string" - }, - "type": "array" - }, - "ScreenshotName": { - "description": "Name of the screenshot to be used as base reference for visual testing", - "type": "string" - } - }, - "required": [ - "ScreenshotName" - ], - "type": "object" - }, - "Code": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "S3Bucket", - "S3Key" - ] - }, - { - "required": [ - "Script" - ] - } - ], - "properties": { - "Handler": { - "type": "string" - }, - "S3Bucket": { - "type": "string" - }, - "S3Key": { - "type": "string" - }, - "S3ObjectVersion": { - "type": "string" - }, - "Script": { - "type": "string" - }, - "SourceLocationArn": { - "type": "string" - } - }, - "required": [ - "Handler" - ], - "type": "object" - }, - "ResourceToTag": { - "description": "Specifies which resources canary tags should be replicated to.", - "enum": [ - "lambda-function" - ], - "type": "string" - }, - "RunConfig": { - "additionalProperties": false, - "properties": { - "ActiveTracing": { - "description": "Enable active tracing if set to true", - "type": "boolean" - }, - "EnvironmentVariables": { - "additionalProperties": false, - "description": "Environment variable key-value pairs.", - "patternProperties": { - "[a-zA-Z][a-zA-Z0-9_]+": { - "type": "string" - } - }, - "type": "object" - }, - "MemoryInMB": { - "description": "Provide maximum memory available for canary in MB", - "type": "integer" - }, - "TimeoutInSeconds": { - "description": "Provide maximum canary timeout per run in seconds", - "type": "integer" - } - }, - "type": "object" - }, - "S3Encryption": { - "additionalProperties": false, - "properties": { - "EncryptionMode": { - "description": "Encryption mode for encrypting artifacts when uploading to S3. Valid values: SSE_S3 and SSE_KMS.", - "type": "string" - }, - "KmsKeyArn": { - "description": "KMS key Arn for encrypting artifacts when uploading to S3. You must specify KMS key Arn for SSE_KMS encryption mode only.", - "type": "string" - } - }, - "type": "object" - }, - "Schedule": { - "additionalProperties": false, - "properties": { - "DurationInSeconds": { - "type": "string" - }, - "Expression": { - "type": "string" - } - }, - "required": [ - "Expression" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "VPCConfig": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array" - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array" - }, - "VpcId": { - "type": "string" - } - }, - "required": [ - "SubnetIds", - "SecurityGroupIds" - ], - "type": "object" - }, - "VisualReference": { - "additionalProperties": false, - "properties": { - "BaseCanaryRunId": { - "description": "Canary run id to be used as base reference for visual testing", - "type": "string" - }, - "BaseScreenshots": { - "description": "List of screenshots used as base reference for visual testing", - "items": { - "$ref": "#/definitions/BaseScreenshot" - }, - "type": "array" - } - }, - "required": [ - "BaseCanaryRunId" - ], - "type": "object" - } - }, - "deprecatedProperties": [ - "/properties/DeleteLambdaResourcesOnCanaryDeletion" - ], - "description": "Resource Type definition for AWS::Synthetics::Canary", - "handlers": { - "create": { - "permissions": [ - "synthetics:CreateCanary", - "synthetics:StartCanary", - "synthetics:GetCanary", - "synthetics:TagResource", - "s3:CreateBucket", - "s3:GetObject", - "s3:GetObjectVersion", - "s3:PutBucketEncryption", - "s3:PutEncryptionConfiguration", - "s3:GetBucketLocation", - "lambda:CreateFunction", - "lambda:AddPermission", - "lambda:PublishVersion", - "lambda:UpdateFunctionConfiguration", - "lambda:GetFunctionConfiguration", - "lambda:GetLayerVersionByArn", - "lambda:GetLayerVersion", - "lambda:PublishLayerVersion", - "lambda:TagResource", - "ec2:DescribeVpcs", - "ec2:DescribeSubnets", - "ec2:DescribeSecurityGroups", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "synthetics:DeleteCanary", - "synthetics:GetCanary" - ] - }, - "list": { - "permissions": [ - "synthetics:DescribeCanaries" - ] - }, - "read": { - "permissions": [ - "synthetics:GetCanary", - "synthetics:DescribeCanaries", - "synthetics:ListTagsForResource", - "iam:ListRoles", - "s3:ListAllMyBuckets", - "s3:GetBucketLocation" - ] - }, - "update": { - "permissions": [ - "synthetics:UpdateCanary", - "synthetics:StartCanary", - "synthetics:StopCanary", - "synthetics:GetCanary", - "synthetics:TagResource", - "synthetics:UntagResource", - "s3:GetObject", - "s3:GetObjectVersion", - "s3:PutBucketEncryption", - "s3:PutEncryptionConfiguration", - "s3:GetBucketLocation", - "lambda:AddPermission", - "lambda:PublishVersion", - "lambda:UpdateFunctionConfiguration", - "lambda:GetFunctionConfiguration", - "lambda:GetLayerVersionByArn", - "lambda:GetLayerVersion", - "lambda:PublishLayerVersion", - "lambda:ListTags", - "lambda:TagResource", - "lambda:UntagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "ArtifactConfig": { - "$ref": "#/definitions/ArtifactConfig", - "description": "Provide artifact configuration" - }, - "ArtifactS3Location": { - "description": "Provide the s3 bucket output location for test results", - "pattern": "^(s3|S3)://", - "type": "string" - }, - "Code": { - "$ref": "#/definitions/Code", - "description": "Provide the canary script source" - }, - "DeleteLambdaResourcesOnCanaryDeletion": { - "description": "Deletes associated lambda resources created by Synthetics if set to True. Default is False", - "type": "boolean" - }, - "ExecutionRoleArn": { - "description": "Lambda Execution role used to run your canaries", - "type": "string" - }, - "FailureRetentionPeriod": { - "description": "Retention period of failed canary runs represented in number of days", - "type": "integer" - }, - "Id": { - "description": "Id of the canary", - "type": "string" - }, - "Name": { - "description": "Name of the canary.", - "pattern": "^[0-9a-z_\\-]{1,255}$", - "type": "string" - }, - "ResourcesToReplicateTags": { - "description": "List of resources which canary tags should be replicated to.", - "items": { - "$ref": "#/definitions/ResourceToTag" - }, - "type": "array", - "uniqueItems": true - }, - "RunConfig": { - "$ref": "#/definitions/RunConfig", - "description": "Provide canary run configuration" - }, - "RuntimeVersion": { - "description": "Runtime version of Synthetics Library", - "type": "string" - }, - "Schedule": { - "$ref": "#/definitions/Schedule", - "description": "Frequency to run your canaries" - }, - "StartCanaryAfterCreation": { - "description": "Runs canary if set to True. Default is False", - "type": "boolean" - }, - "State": { - "description": "State of the canary", - "type": "string" - }, - "SuccessRetentionPeriod": { - "description": "Retention period of successful canary runs represented in number of days", - "type": "integer" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VPCConfig": { - "$ref": "#/definitions/VPCConfig", - "description": "Provide VPC Configuration if enabled." - }, - "VisualReference": { - "$ref": "#/definitions/VisualReference", - "description": "Visual reference configuration for visual testing" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/State", - "/properties/Code/SourceLocationArn" - ], - "required": [ - "Name", - "Code", - "ArtifactS3Location", - "ExecutionRoleArn", - "Schedule", - "RuntimeVersion" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-synthetics", - "tagging": { - "taggable": true - }, - "typeName": "AWS::Synthetics::Canary", - "writeOnlyProperties": [ - "/properties/Code/S3Bucket", - "/properties/Code/S3Key", - "/properties/Code/S3ObjectVersion", - "/properties/Code/Script", - "/properties/DeleteLambdaResourcesOnCanaryDeletion", - "/properties/StartCanaryAfterCreation", - "/properties/ResourcesToReplicateTags", - "/properties/RunConfig/EnvironmentVariables", - "/properties/VisualReference" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "ArtifactConfig": { + "additionalProperties": false, + "properties": { + "S3Encryption": { + "$ref": "#/definitions/S3Encryption", + "description": "Encryption configuration for uploading artifacts to S3" + } + }, + "type": "object" + }, + "BaseScreenshot": { + "properties": { + "IgnoreCoordinates": { + "description": "List of coordinates of rectangles to be ignored during visual testing", + "items": { + "description": "Coordinates of a rectangle to be ignored during visual testing", + "type": "string" + }, + "type": "array" + }, + "ScreenshotName": { + "description": "Name of the screenshot to be used as base reference for visual testing", + "type": "string" + } + }, + "required": [ + "ScreenshotName" + ], + "type": "object" + }, + "Code": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "S3Bucket", + "S3Key" + ] + }, + { + "required": [ + "Script" + ] + } + ], + "properties": { + "Handler": { + "type": "string" + }, + "S3Bucket": { + "type": "string" + }, + "S3Key": { + "type": "string" + }, + "S3ObjectVersion": { + "type": "string" + }, + "Script": { + "type": "string" + }, + "SourceLocationArn": { + "type": "string" + } + }, + "required": [ + "Handler" + ], + "type": "object" + }, + "ResourceToTag": { + "description": "Specifies which resources canary tags should be replicated to.", + "enum": [ + "lambda-function" + ], + "type": "string" + }, + "RunConfig": { + "additionalProperties": false, + "properties": { + "ActiveTracing": { + "description": "Enable active tracing if set to true", + "type": "boolean" + }, + "EnvironmentVariables": { + "additionalProperties": false, + "description": "Environment variable key-value pairs.", + "patternProperties": { + "[a-zA-Z][a-zA-Z0-9_]+": { + "type": "string" + } + }, + "type": "object" + }, + "MemoryInMB": { + "description": "Provide maximum memory available for canary in MB", + "type": "integer" + }, + "TimeoutInSeconds": { + "description": "Provide maximum canary timeout per run in seconds", + "type": "integer" + } + }, + "type": "object" + }, + "S3Encryption": { + "additionalProperties": false, + "properties": { + "EncryptionMode": { + "description": "Encryption mode for encrypting artifacts when uploading to S3. Valid values: SSE_S3 and SSE_KMS.", + "type": "string" + }, + "KmsKeyArn": { + "description": "KMS key Arn for encrypting artifacts when uploading to S3. You must specify KMS key Arn for SSE_KMS encryption mode only.", + "type": "string" + } + }, + "type": "object" + }, + "Schedule": { + "additionalProperties": false, + "properties": { + "DurationInSeconds": { + "type": "string" + }, + "Expression": { + "type": "string" + } + }, + "required": [ + "Expression" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "VPCConfig": { + "additionalProperties": false, + "properties": { + "Ipv6AllowedForDualStack": { + "description": "Allow outbound IPv6 traffic on VPC canaries that are connected to dual-stack subnets if set to true", + "type": "boolean" + }, + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "VpcId": { + "type": "string" + } + }, + "required": [ + "SubnetIds", + "SecurityGroupIds" + ], + "type": "object" + }, + "VisualReference": { + "additionalProperties": false, + "properties": { + "BaseCanaryRunId": { + "description": "Canary run id to be used as base reference for visual testing", + "type": "string" + }, + "BaseScreenshots": { + "description": "List of screenshots used as base reference for visual testing", + "items": { + "$ref": "#/definitions/BaseScreenshot" + }, + "type": "array" + } + }, + "required": [ + "BaseCanaryRunId" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/DeleteLambdaResourcesOnCanaryDeletion" + ], + "description": "Resource Type definition for AWS::Synthetics::Canary", + "handlers": { + "create": { + "permissions": [ + "synthetics:CreateCanary", + "synthetics:StartCanary", + "synthetics:GetCanary", + "synthetics:TagResource", + "s3:CreateBucket", + "s3:GetObject", + "s3:GetObjectVersion", + "s3:PutBucketEncryption", + "s3:PutEncryptionConfiguration", + "s3:GetBucketLocation", + "lambda:CreateFunction", + "lambda:AddPermission", + "lambda:PublishVersion", + "lambda:UpdateFunctionCode", + "lambda:UpdateFunctionConfiguration", + "lambda:GetFunctionConfiguration", + "lambda:GetLayerVersionByArn", + "lambda:GetLayerVersion", + "lambda:PublishLayerVersion", + "lambda:TagResource", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "synthetics:DeleteCanary", + "synthetics:GetCanary", + "lambda:DeleteFunction", + "lambda:DeleteLayerVersion" + ] + }, + "list": { + "permissions": [ + "synthetics:DescribeCanaries" + ] + }, + "read": { + "permissions": [ + "synthetics:GetCanary", + "synthetics:DescribeCanaries", + "synthetics:ListTagsForResource", + "iam:ListRoles", + "s3:ListAllMyBuckets", + "s3:GetBucketLocation" + ] + }, + "update": { + "permissions": [ + "synthetics:UpdateCanary", + "synthetics:StartCanary", + "synthetics:StopCanary", + "synthetics:GetCanary", + "synthetics:TagResource", + "synthetics:UntagResource", + "s3:GetObject", + "s3:GetObjectVersion", + "s3:PutBucketEncryption", + "s3:PutEncryptionConfiguration", + "s3:GetBucketLocation", + "lambda:AddPermission", + "lambda:PublishVersion", + "lambda:UpdateFunctionCode", + "lambda:UpdateFunctionConfiguration", + "lambda:GetFunctionConfiguration", + "lambda:GetLayerVersionByArn", + "lambda:GetLayerVersion", + "lambda:PublishLayerVersion", + "lambda:ListTags", + "lambda:TagResource", + "lambda:UntagResource", + "iam:PassRole", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "ArtifactConfig": { + "$ref": "#/definitions/ArtifactConfig", + "description": "Provide artifact configuration" + }, + "ArtifactS3Location": { + "description": "Provide the s3 bucket output location for test results", + "pattern": "^(s3|S3)://", + "type": "string" + }, + "Code": { + "$ref": "#/definitions/Code", + "description": "Provide the canary script source" + }, + "DeleteLambdaResourcesOnCanaryDeletion": { + "description": "Deletes associated lambda resources created by Synthetics if set to True. Default is False", + "type": "boolean" + }, + "ExecutionRoleArn": { + "description": "Lambda Execution role used to run your canaries", + "type": "string" + }, + "FailureRetentionPeriod": { + "description": "Retention period of failed canary runs represented in number of days", + "type": "integer" + }, + "Id": { + "description": "Id of the canary", + "type": "string" + }, + "Name": { + "description": "Name of the canary.", + "pattern": "^[0-9a-z_\\-]{1,255}$", + "type": "string" + }, + "ProvisionedResourceCleanup": { + "description": "Setting to control if provisioned resources created by Synthetics are deleted alongside the canary. Default is AUTOMATIC.", + "enum": [ + "AUTOMATIC", + "OFF" + ], + "type": "string" + }, + "ResourcesToReplicateTags": { + "description": "List of resources which canary tags should be replicated to.", + "items": { + "$ref": "#/definitions/ResourceToTag" + }, + "type": "array", + "uniqueItems": true + }, + "RunConfig": { + "$ref": "#/definitions/RunConfig", + "description": "Provide canary run configuration" + }, + "RuntimeVersion": { + "description": "Runtime version of Synthetics Library", + "type": "string" + }, + "Schedule": { + "$ref": "#/definitions/Schedule", + "description": "Frequency to run your canaries" + }, + "StartCanaryAfterCreation": { + "description": "Runs canary if set to True. Default is False", + "type": "boolean" + }, + "State": { + "description": "State of the canary", + "type": "string" + }, + "SuccessRetentionPeriod": { + "description": "Retention period of successful canary runs represented in number of days", + "type": "integer" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VPCConfig": { + "$ref": "#/definitions/VPCConfig", + "description": "Provide VPC Configuration if enabled." + }, + "VisualReference": { + "$ref": "#/definitions/VisualReference", + "description": "Visual reference configuration for visual testing" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/State", + "/properties/Code/SourceLocationArn" + ], + "required": [ + "Name", + "Code", + "ArtifactS3Location", + "ExecutionRoleArn", + "Schedule", + "RuntimeVersion" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-synthetics", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "synthetics:TagResource", + "synthetics:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Synthetics::Canary", + "writeOnlyProperties": [ + "/properties/Code/S3Bucket", + "/properties/Code/S3Key", + "/properties/Code/S3ObjectVersion", + "/properties/Code/Script", + "/properties/DeleteLambdaResourcesOnCanaryDeletion", + "/properties/StartCanaryAfterCreation", + "/properties/ResourcesToReplicateTags", + "/properties/RunConfig/EnvironmentVariables", + "/properties/VisualReference" + ] +} diff --git a/src/schema/aws-synthetics-group.json b/src/schema/aws-synthetics-group.json index 6292e27c..6564f8dc 100644 --- a/src/schema/aws-synthetics-group.json +++ b/src/schema/aws-synthetics-group.json @@ -1,118 +1,127 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "ResourceArn": { - "description": "Provide Canary Arn associated with the group.", - "pattern": "arn:(aws[a-zA-Z-]*)?:synthetics:[a-z]{2}((-gov)|(-iso(b|e|f?)))?-[a-z]+-\\d{1}:\\d{12}:canary:[0-9a-z_\\-]", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)([a-zA-Z\\d\\s_.:/=+\\-@]+)$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "pattern": "^([a-zA-Z\\d\\s_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Synthetics::Group", - "handlers": { - "create": { - "permissions": [ - "synthetics:CreateGroup", - "synthetics:AssociateResource", - "synthetics:TagResource", - "synthetics:GetGroup" - ] - }, - "delete": { - "permissions": [ - "synthetics:DeleteGroup", - "synthetics:GetGroup" - ] - }, - "list": { - "permissions": [ - "synthetics:ListGroups" - ] - }, - "read": { - "permissions": [ - "synthetics:GetGroup", - "synthetics:ListTagsForResource", - "synthetics:ListGroupResources" - ] - }, - "update": { - "permissions": [ - "synthetics:AssociateResource", - "synthetics:DisassociateResource", - "synthetics:TagResource", - "synthetics:UntagResource", - "synthetics:GetGroup", - "synthetics:ListGroupResources" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Id": { - "description": "Id of the group.", - "type": "string" - }, - "Name": { - "description": "Name of the group.", - "pattern": "^[0-9a-z_\\-]{1,64}$", - "type": "string" - }, - "ResourceArns": { - "items": { - "$ref": "#/definitions/ResourceArn" - }, - "maxItems": 10, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "minItems": 0, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-synthetics", - "tagging": { - "taggable": true - }, - "typeName": "AWS::Synthetics::Group" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "ResourceArn": { + "description": "Provide Canary Arn associated with the group.", + "pattern": "arn:(aws[a-zA-Z-]*)?:synthetics:[a-z]{2}((-gov)|(-iso(b|e|f?)))?-[a-z]+-\\d{1}:\\d{12}:canary:[0-9a-z_\\-]", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)([a-zA-Z\\d\\s_.:/=+\\-@]+)$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "pattern": "^([a-zA-Z\\d\\s_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Synthetics::Group", + "handlers": { + "create": { + "permissions": [ + "synthetics:CreateGroup", + "synthetics:AssociateResource", + "synthetics:TagResource", + "synthetics:GetGroup" + ] + }, + "delete": { + "permissions": [ + "synthetics:DeleteGroup", + "synthetics:GetGroup" + ] + }, + "list": { + "permissions": [ + "synthetics:ListGroups" + ] + }, + "read": { + "permissions": [ + "synthetics:GetGroup", + "synthetics:ListTagsForResource", + "synthetics:ListGroupResources" + ] + }, + "update": { + "permissions": [ + "synthetics:AssociateResource", + "synthetics:DisassociateResource", + "synthetics:TagResource", + "synthetics:UntagResource", + "synthetics:GetGroup", + "synthetics:ListGroupResources" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "properties": { + "Id": { + "description": "Id of the group.", + "type": "string" + }, + "Name": { + "description": "Name of the group.", + "pattern": "^[0-9a-z_\\-]{1,64}$", + "type": "string" + }, + "ResourceArns": { + "items": { + "$ref": "#/definitions/ResourceArn" + }, + "maxItems": 10, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-synthetics", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "synthetics:TagResource", + "synthetics:UntagResource", + "synthetics:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Synthetics::Group" +} diff --git a/src/schema/aws-systemsmanagersap-application.json b/src/schema/aws-systemsmanagersap-application.json index 5f7d4980..c6c6aee1 100644 --- a/src/schema/aws-systemsmanagersap-application.json +++ b/src/schema/aws-systemsmanagersap-application.json @@ -1,181 +1,218 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Credentials", - "/properties/Instances", - "/properties/SapInstanceNumber", - "/properties/Sid", - "/properties/DatabaseArn" - ], - "definitions": { - "Credential": { - "additionalProperties": false, - "properties": { - "CredentialType": { - "enum": [ - "ADMIN" - ], - "type": "string" - }, - "DatabaseName": { - "pattern": "^(?=.{1,100}$).*", - "type": "string" - }, - "SecretId": { - "pattern": "^(?=.{1,100}$).*", - "type": "string" - } - }, - "type": "object" - }, - "Instance": { - "pattern": "^i-[\\w\\d]{8}$|^i-[\\w\\d]{17}$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource schema for AWS::SystemsManagerSAP::Application", - "handlers": { - "create": { - "permissions": [ - "ssm-sap:RegisterApplication", - "ssm-sap:GetApplication", - "ssm-sap:TagResource", - "ssm-sap:ListTagsForResource", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "ssm-sap:DeregisterApplication", - "ssm-sap:GetApplication" - ] - }, - "list": { - "permissions": [ - "ssm-sap:ListApplications" - ] - }, - "read": { - "permissions": [ - "ssm-sap:GetApplication", - "ssm-sap:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "ssm-sap:TagResource", - "ssm-sap:UntagResource", - "ssm-sap:ListTagsForResource", - "ssm-sap:GetApplication" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "ApplicationId": { - "pattern": "[\\w\\d\\.-]{1,60}", - "type": "string" - }, - "ApplicationType": { - "enum": [ - "HANA", - "SAP_ABAP" - ], - "type": "string" - }, - "Arn": { - "description": "The ARN of the SSM-SAP application", - "pattern": "^arn:(.+:){2,4}.+$|^arn:(.+:){1,3}.+\\/.+$", - "type": "string" - }, - "Credentials": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Credential" - }, - "minItems": 1, - "type": "array" - }, - "DatabaseArn": { - "description": "The ARN of the SAP HANA database", - "pattern": "^arn:(.+:){2,4}.+$|^arn:(.+:){1,3}.+\\/.+$", - "type": "string" - }, - "Instances": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Instance" - }, - "minItems": 1, - "type": "array" - }, - "SapInstanceNumber": { - "pattern": "[0-9]{2}", - "type": "string" - }, - "Sid": { - "pattern": "[A-Z][A-Z0-9]{2}", - "type": "string" - }, - "Tags": { - "description": "The tags of a SystemsManagerSAP application.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "ApplicationId", - "ApplicationType" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "ssm-sap:UntagResource", - "ssm-sap:TagResource", - "ssm-sap:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SystemsManagerSAP::Application", - "writeOnlyProperties": [ - "/properties/Credentials", - "/properties/Instances", - "/properties/SapInstanceNumber", - "/properties/Sid", - "/properties/DatabaseArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Credentials", + "/properties/Instances", + "/properties/SapInstanceNumber", + "/properties/Sid", + "/properties/DatabaseArn", + "/properties/ComponentsInfo" + ], + "definitions": { + "ComponentInfo": { + "properties": { + "ComponentType": { + "enum": [ + "HANA", + "HANA_NODE", + "ABAP", + "ASCS", + "DIALOG", + "WEBDISP", + "WD", + "ERS" + ], + "type": "string" + }, + "Ec2InstanceId": { + "pattern": "^i-[\\w\\d]{8}$|^i-[\\w\\d]{17}$", + "type": "string" + }, + "Sid": { + "pattern": "[A-Z][A-Z0-9]{2}", + "type": "string" + } + }, + "type": "object" + }, + "Credential": { + "additionalProperties": false, + "properties": { + "CredentialType": { + "enum": [ + "ADMIN" + ], + "type": "string" + }, + "DatabaseName": { + "pattern": "^(?=.{1,100}$).*", + "type": "string" + }, + "SecretId": { + "pattern": "^(?=.{1,100}$).*", + "type": "string" + } + }, + "type": "object" + }, + "Instance": { + "pattern": "^i-[\\w\\d]{8}$|^i-[\\w\\d]{17}$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource schema for AWS::SystemsManagerSAP::Application", + "handlers": { + "create": { + "permissions": [ + "ssm-sap:RegisterApplication", + "ssm-sap:GetApplication", + "ssm-sap:TagResource", + "ssm-sap:ListTagsForResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "ssm-sap:DeregisterApplication", + "ssm-sap:GetApplication" + ] + }, + "list": { + "permissions": [ + "ssm-sap:ListApplications" + ] + }, + "read": { + "permissions": [ + "ssm-sap:GetApplication", + "ssm-sap:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ssm-sap:TagResource", + "ssm-sap:UntagResource", + "ssm-sap:ListTagsForResource", + "ssm-sap:GetApplication" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "ApplicationId": { + "pattern": "[\\w\\d\\.-]{1,60}", + "type": "string" + }, + "ApplicationType": { + "enum": [ + "HANA", + "SAP_ABAP" + ], + "type": "string" + }, + "Arn": { + "description": "The ARN of the SSM-SAP application", + "pattern": "^arn:(.+:){2,4}.+$|^arn:(.+:){1,3}.+\\/.+$", + "type": "string" + }, + "ComponentsInfo": { + "description": "This is an optional parameter for component details to which the SAP ABAP application is attached, such as Web Dispatcher.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/ComponentInfo" + }, + "minItems": 1, + "type": "array" + }, + "Credentials": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Credential" + }, + "minItems": 1, + "type": "array" + }, + "DatabaseArn": { + "description": "The ARN of the SAP HANA database", + "pattern": "^arn:(.+:){2,4}.+$|^arn:(.+:){1,3}.+\\/.+$", + "type": "string" + }, + "Instances": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Instance" + }, + "minItems": 1, + "type": "array" + }, + "SapInstanceNumber": { + "pattern": "[0-9]{2}", + "type": "string" + }, + "Sid": { + "pattern": "[A-Z][A-Z0-9]{2}", + "type": "string" + }, + "Tags": { + "description": "The tags of a SystemsManagerSAP application.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "ApplicationId", + "ApplicationType" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "ssm-sap:UntagResource", + "ssm-sap:TagResource", + "ssm-sap:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SystemsManagerSAP::Application", + "writeOnlyProperties": [ + "/properties/Credentials", + "/properties/Instances", + "/properties/SapInstanceNumber", + "/properties/Sid", + "/properties/DatabaseArn", + "/properties/ComponentsInfo" + ] +} diff --git a/src/schema/aws-timestream-database.json b/src/schema/aws-timestream-database.json index 6a9de39d..d4a9ad91 100644 --- a/src/schema/aws-timestream-database.json +++ b/src/schema/aws-timestream-database.json @@ -1,99 +1,111 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DatabaseName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "You can use the Resource Tags property to apply tags to resources, which can help you identify and categorize those resources.", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The AWS::Timestream::Database resource creates a Timestream database.", - "handlers": { - "create": { - "permissions": [ - "timestream:CreateDatabase", - "timestream:DescribeEndpoints", - "timestream:TagResource", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:Decrypt" - ] - }, - "delete": { - "permissions": [ - "timestream:DeleteDatabase", - "timestream:DescribeEndpoints" - ] - }, - "list": { - "permissions": [ - "timestream:ListDatabases", - "timestream:DescribeEndpoints" - ] - }, - "read": { - "permissions": [ - "timestream:DescribeDatabase", - "timestream:DescribeEndpoints", - "timestream:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "timestream:UpdateDatabase", - "timestream:DescribeDatabase", - "timestream:DescribeEndpoints", - "timestream:TagResource", - "timestream:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/DatabaseName" - ], - "properties": { - "Arn": { - "type": "string" - }, - "DatabaseName": { - "description": "The name for the database. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the database name.", - "pattern": "^[a-zA-Z0-9_.-]{3,256}$", - "type": "string" - }, - "KmsKeyId": { - "description": "The KMS key for the database. If the KMS key is not specified, the database will be encrypted with a Timestream managed KMS key located in your account.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-timestream.git", - "typeName": "AWS::Timestream::Database" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DatabaseName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "You can use the Resource Tags property to apply tags to resources, which can help you identify and categorize those resources.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The AWS::Timestream::Database resource creates a Timestream database.", + "handlers": { + "create": { + "permissions": [ + "timestream:CreateDatabase", + "timestream:DescribeEndpoints", + "timestream:TagResource", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "timestream:DeleteDatabase", + "timestream:DescribeEndpoints" + ] + }, + "list": { + "permissions": [ + "timestream:ListDatabases", + "timestream:DescribeEndpoints" + ] + }, + "read": { + "permissions": [ + "timestream:DescribeDatabase", + "timestream:DescribeEndpoints", + "timestream:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "timestream:UpdateDatabase", + "timestream:DescribeDatabase", + "timestream:DescribeEndpoints", + "timestream:TagResource", + "timestream:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/DatabaseName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "DatabaseName": { + "description": "The name for the database. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the database name.", + "pattern": "^[a-zA-Z0-9_.-]{3,256}$", + "type": "string" + }, + "KmsKeyId": { + "description": "The KMS key for the database. If the KMS key is not specified, the database will be encrypted with a Timestream managed KMS key located in your account.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-timestream.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "timestream:TagResource", + "timestream:ListTagsForResource", + "timestream:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Timestream::Database" +} diff --git a/src/schema/aws-timestream-influxdbinstance.json b/src/schema/aws-timestream-influxdbinstance.json index b1fce7f8..a0f364e2 100644 --- a/src/schema/aws-timestream-influxdbinstance.json +++ b/src/schema/aws-timestream-influxdbinstance.json @@ -1,314 +1,336 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Username", - "/properties/Password", - "/properties/Organization", - "/properties/Bucket", - "/properties/DbInstanceType", - "/properties/VpcSubnetIds", - "/properties/VpcSecurityGroupIds", - "/properties/PubliclyAccessible", - "/properties/DbStorageType", - "/properties/AllocatedStorage", - "/properties/DeploymentType" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "description": "The AWS::Timestream::InfluxDBInstance resource creates an InfluxDB instance.", - "handlers": { - "create": { - "permissions": [ - "s3:ListBucket", - "s3:GetBucketPolicy", - "timestream-influxdb:GetDbInstance", - "timestream-influxdb:ListDbInstances", - "timestream-influxdb:CreateDbInstance", - "timestream-influxdb:TagResource", - "timestream-influxdb:ListTagsForResource", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeSecurityGroups", - "ec2:CreateNetworkInterface", - "iam:CreateServiceLinkedRole" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "timestream-influxdb:GetDbInstance", - "timestream-influxdb:ListDbInstances", - "timestream-influxdb:DeleteDbInstance" - ], - "timeoutInMinutes": 2160 - }, - "list": { - "permissions": [ - "timestream-influxdb:ListDbInstances" - ], - "timeoutInMinutes": 2160 - }, - "read": { - "permissions": [ - "timestream-influxdb:GetDbInstance", - "timestream-influxdb:ListTagsForResource" - ], - "timeoutInMinutes": 2160 - }, - "update": { - "permissions": [ - "s3:ListBucket", - "s3:GetBucketPolicy", - "timestream-influxdb:GetDbInstance", - "timestream-influxdb:ListDbInstances", - "timestream-influxdb:UpdateDbInstance", - "timestream-influxdb:TagResource", - "timestream-influxdb:UntagResource", - "timestream-influxdb:ListTagsForResource" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AllocatedStorage": { - "description": "The allocated storage for the InfluxDB instance.", - "maximum": 16384, - "minimum": 20, - "type": "integer" - }, - "Arn": { - "description": "The Amazon Resource Name (ARN) that is associated with the InfluxDB instance.", - "maxLength": 1011, - "minLength": 1, - "pattern": "^arn:aws[a-z\\-]*:timestream\\-influxdb:[a-z0-9\\-]+:[0-9]{12}:(db\\-instance)/[a-zA-Z0-9]{3,64}$", - "type": "string" - }, - "AvailabilityZone": { - "description": "The Availability Zone (AZ) where the InfluxDB instance is created.", - "type": "string" - }, - "Bucket": { - "description": "The bucket for the InfluxDB instance.", - "maxLength": 64, - "minLength": 2, - "pattern": "^[^_][^\"]*$", - "type": "string" - }, - "DbInstanceType": { - "description": "The compute instance of the InfluxDB instance.", - "enum": [ - "db.influx.medium", - "db.influx.large", - "db.influx.xlarge", - "db.influx.2xlarge", - "db.influx.4xlarge", - "db.influx.8xlarge", - "db.influx.12xlarge", - "db.influx.16xlarge" - ], - "type": "string" - }, - "DbParameterGroupIdentifier": { - "description": "The name of an existing InfluxDB parameter group.", - "maxLength": 64, - "minLength": 3, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "DbStorageType": { - "description": "The storage type of the InfluxDB instance.", - "enum": [ - "InfluxIOIncludedT1", - "InfluxIOIncludedT2", - "InfluxIOIncludedT3" - ], - "type": "string" - }, - "DeploymentType": { - "description": "Deployment type of the InfluxDB Instance.", - "enum": [ - "SINGLE_AZ", - "WITH_MULTIAZ_STANDBY" - ], - "type": "string" - }, - "Endpoint": { - "description": "The connection endpoint for the InfluxDB instance.", - "type": "string" - }, - "Id": { - "description": "The service generated unique identifier for InfluxDB instance.", - "maxLength": 64, - "minLength": 3, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "InfluxAuthParametersSecretArn": { - "description": "The Auth parameters secret Amazon Resource name (ARN) that is associated with the InfluxDB instance.", - "pattern": "^arn:[a-z]*:secretsmanager:[a-z\\-0-9]*:[0-9]*:secret:[a-zA-Z0-9\\-]*", - "type": "string" - }, - "LogDeliveryConfiguration": { - "additionalProperties": false, - "description": "Configuration for sending logs to customer account from the InfluxDB instance.", - "properties": { - "S3Configuration": { - "additionalProperties": false, - "description": "S3 configuration for sending logs to customer account from the InfluxDB instance.", - "properties": { - "BucketName": { - "description": "The bucket name for logs to be sent from the InfluxDB instance", - "maxLength": 63, - "minLength": 3, - "pattern": "^[0-9a-z]+[0-9a-z\\.\\-]*[0-9a-z]+$", - "type": "string" - }, - "Enabled": { - "description": "Specifies whether logging to customer specified bucket is enabled.", - "type": "boolean" - } - }, - "required": [ - "Enabled", - "BucketName" - ], - "type": "object" - } - }, - "required": [ - "S3Configuration" - ], - "type": "object" - }, - "Name": { - "description": "The unique name that is associated with the InfluxDB instance.", - "maxLength": 40, - "minLength": 3, - "pattern": "^[a-zA-z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*$", - "type": "string" - }, - "Organization": { - "description": "The organization for the InfluxDB instance.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Password": { - "description": "The password for the InfluxDB instance.", - "maxLength": 64, - "minLength": 8, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "PubliclyAccessible": { - "default": false, - "description": "Attach a public IP to the customer ENI.", - "type": "boolean" - }, - "SecondaryAvailabilityZone": { - "description": "The Secondary Availability Zone (AZ) where the InfluxDB instance is created, if DeploymentType is set as WITH_MULTIAZ_STANDBY.", - "type": "string" - }, - "Status": { - "description": "Status of the InfluxDB Instance.", - "enum": [ - "CREATING", - "AVAILABLE", - "DELETING", - "MODIFYING", - "UPDATING", - "DELETED", - "FAILED" - ], - "type": "string" - }, - "Tags": { - "description": "An arbitrary set of tags (key-value pairs) for this DB instance.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Username": { - "description": "The username for the InfluxDB instance.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "VpcSecurityGroupIds": { - "description": "A list of Amazon EC2 VPC security groups to associate with this InfluxDB instance.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "VpcSubnetIds": { - "description": "A list of EC2 subnet IDs for this InfluxDB instance.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 3, - "minItems": 1, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/Arn", - "/properties/Id", - "/properties/AvailabilityZone", - "/properties/Endpoint", - "/properties/SecondaryAvailabilityZone", - "/properties/InfluxAuthParametersSecretArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-timestream.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Timestream::InfluxDBInstance", - "writeOnlyProperties": [ - "/properties/Username", - "/properties/Password", - "/properties/Organization", - "/properties/Bucket" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Username", + "/properties/Password", + "/properties/Organization", + "/properties/Bucket", + "/properties/VpcSubnetIds", + "/properties/VpcSecurityGroupIds", + "/properties/PubliclyAccessible", + "/properties/DbStorageType", + "/properties/AllocatedStorage", + "/properties/NetworkType" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -. ", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "The AWS::Timestream::InfluxDBInstance resource creates an InfluxDB instance.", + "handlers": { + "create": { + "permissions": [ + "s3:ListBucket", + "s3:GetBucketPolicy", + "timestream-influxdb:GetDbInstance", + "timestream-influxdb:ListDbInstances", + "timestream-influxdb:CreateDbInstance", + "timestream-influxdb:TagResource", + "timestream-influxdb:ListTagsForResource", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeSecurityGroups", + "ec2:CreateNetworkInterface", + "iam:CreateServiceLinkedRole" + ], + "timeoutInMinutes": 2160 + }, + "delete": { + "permissions": [ + "timestream-influxdb:GetDbInstance", + "timestream-influxdb:ListDbInstances", + "timestream-influxdb:DeleteDbInstance" + ], + "timeoutInMinutes": 2160 + }, + "list": { + "permissions": [ + "timestream-influxdb:ListDbInstances" + ], + "timeoutInMinutes": 2160 + }, + "read": { + "permissions": [ + "timestream-influxdb:GetDbInstance", + "timestream-influxdb:ListTagsForResource" + ], + "timeoutInMinutes": 2160 + }, + "update": { + "permissions": [ + "s3:ListBucket", + "s3:GetBucketPolicy", + "timestream-influxdb:GetDbInstance", + "timestream-influxdb:ListDbInstances", + "timestream-influxdb:UpdateDbInstance", + "timestream-influxdb:TagResource", + "timestream-influxdb:UntagResource", + "timestream-influxdb:ListTagsForResource", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs" + ], + "timeoutInMinutes": 2160 + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AllocatedStorage": { + "description": "The allocated storage for the InfluxDB instance.", + "maximum": 16384, + "minimum": 20, + "type": "integer" + }, + "Arn": { + "description": "The Amazon Resource Name (ARN) that is associated with the InfluxDB instance.", + "maxLength": 1011, + "minLength": 1, + "pattern": "^arn:aws[a-z\\-]*:timestream\\-influxdb:[a-z0-9\\-]+:[0-9]{12}:(db\\-instance)/[a-zA-Z0-9]{3,64}$", + "type": "string" + }, + "AvailabilityZone": { + "description": "The Availability Zone (AZ) where the InfluxDB instance is created.", + "type": "string" + }, + "Bucket": { + "description": "The bucket for the InfluxDB instance.", + "maxLength": 64, + "minLength": 2, + "pattern": "^[^_][^\"]*$", + "type": "string" + }, + "DbInstanceType": { + "description": "The compute instance of the InfluxDB instance.", + "enum": [ + "db.influx.medium", + "db.influx.large", + "db.influx.xlarge", + "db.influx.2xlarge", + "db.influx.4xlarge", + "db.influx.8xlarge", + "db.influx.12xlarge", + "db.influx.16xlarge" + ], + "type": "string" + }, + "DbParameterGroupIdentifier": { + "description": "The name of an existing InfluxDB parameter group.", + "maxLength": 64, + "minLength": 3, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "DbStorageType": { + "description": "The storage type of the InfluxDB instance.", + "enum": [ + "InfluxIOIncludedT1", + "InfluxIOIncludedT2", + "InfluxIOIncludedT3" + ], + "type": "string" + }, + "DeploymentType": { + "description": "Deployment type of the InfluxDB Instance.", + "enum": [ + "SINGLE_AZ", + "WITH_MULTIAZ_STANDBY" + ], + "type": "string" + }, + "Endpoint": { + "description": "The connection endpoint for the InfluxDB instance.", + "type": "string" + }, + "Id": { + "description": "The service generated unique identifier for InfluxDB instance.", + "maxLength": 64, + "minLength": 3, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "InfluxAuthParametersSecretArn": { + "description": "The Auth parameters secret Amazon Resource name (ARN) that is associated with the InfluxDB instance.", + "pattern": "^arn:[a-z]*:secretsmanager:[a-z\\-0-9]*:[0-9]*:secret:[a-zA-Z0-9\\-]*", + "type": "string" + }, + "LogDeliveryConfiguration": { + "additionalProperties": false, + "description": "Configuration for sending logs to customer account from the InfluxDB instance.", + "properties": { + "S3Configuration": { + "additionalProperties": false, + "description": "S3 configuration for sending logs to customer account from the InfluxDB instance.", + "properties": { + "BucketName": { + "description": "The bucket name for logs to be sent from the InfluxDB instance", + "maxLength": 63, + "minLength": 3, + "pattern": "^[0-9a-z]+[0-9a-z\\.\\-]*[0-9a-z]+$", + "type": "string" + }, + "Enabled": { + "description": "Specifies whether logging to customer specified bucket is enabled.", + "type": "boolean" + } + }, + "required": [ + "Enabled", + "BucketName" + ], + "type": "object" + } + }, + "required": [ + "S3Configuration" + ], + "type": "object" + }, + "Name": { + "description": "The unique name that is associated with the InfluxDB instance.", + "maxLength": 40, + "minLength": 3, + "pattern": "^[a-zA-Z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*$", + "type": "string" + }, + "NetworkType": { + "description": "Network type of the InfluxDB Instance.", + "enum": [ + "IPV4", + "DUAL" + ], + "type": "string" + }, + "Organization": { + "description": "The organization for the InfluxDB instance.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Password": { + "description": "The password for the InfluxDB instance.", + "maxLength": 64, + "minLength": 8, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "Port": { + "description": "The port number on which InfluxDB accepts connections.", + "maximum": 65535, + "minimum": 1024, + "type": "integer" + }, + "PubliclyAccessible": { + "default": false, + "description": "Attach a public IP to the customer ENI.", + "type": "boolean" + }, + "SecondaryAvailabilityZone": { + "description": "The Secondary Availability Zone (AZ) where the InfluxDB instance is created, if DeploymentType is set as WITH_MULTIAZ_STANDBY.", + "type": "string" + }, + "Status": { + "description": "Status of the InfluxDB Instance.", + "enum": [ + "CREATING", + "AVAILABLE", + "DELETING", + "MODIFYING", + "UPDATING", + "UPDATING_DEPLOYMENT_TYPE", + "UPDATING_INSTANCE_TYPE", + "DELETED", + "FAILED" + ], + "type": "string" + }, + "Tags": { + "description": "An arbitrary set of tags (key-value pairs) for this DB instance.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "Username": { + "description": "The username for the InfluxDB instance.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "VpcSecurityGroupIds": { + "description": "A list of Amazon EC2 VPC security groups to associate with this InfluxDB instance.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "VpcSubnetIds": { + "description": "A list of EC2 subnet IDs for this InfluxDB instance.", + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Status", + "/properties/Arn", + "/properties/Id", + "/properties/AvailabilityZone", + "/properties/Endpoint", + "/properties/SecondaryAvailabilityZone", + "/properties/InfluxAuthParametersSecretArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-timestream.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "timestream-influxdb:TagResource", + "timestream-influxdb:ListTagsForResource", + "timestream-influxdb:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Timestream::InfluxDBInstance", + "writeOnlyProperties": [ + "/properties/Username", + "/properties/Password", + "/properties/Organization", + "/properties/Bucket" + ] +} diff --git a/src/schema/aws-timestream-scheduledquery.json b/src/schema/aws-timestream-scheduledquery.json index 68526369..f34eba79 100644 --- a/src/schema/aws-timestream-scheduledquery.json +++ b/src/schema/aws-timestream-scheduledquery.json @@ -1,546 +1,558 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ScheduledQueryName", - "/properties/QueryString", - "/properties/ScheduleConfiguration", - "/properties/NotificationConfiguration", - "/properties/ClientToken", - "/properties/ScheduledQueryExecutionRoleArn", - "/properties/TargetConfiguration", - "/properties/ErrorReportConfiguration", - "/properties/KmsKeyId" - ], - "definitions": { - "Arn": { - "description": "Amazon Resource Name of the scheduled query that is generated upon creation.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "BucketName": { - "description": "Name of the S3 bucket under which error reports will be created.", - "maxLength": 63, - "minLength": 3, - "pattern": "[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]", - "type": "string" - }, - "ClientToken": { - "description": "Using a ClientToken makes the call to CreateScheduledQuery idempotent, in other words, making the same request repeatedly will produce the same result. Making multiple identical CreateScheduledQuery requests has the same effect as making a single request. If CreateScheduledQuery is called without a ClientToken, the Query SDK generates a ClientToken on your behalf. After 8 hours, any request with the same ClientToken is treated as a new request.", - "maxLength": 128, - "minLength": 32, - "type": "string" - }, - "DatabaseName": { - "description": "Name of Timestream database to which the query result will be written.", - "type": "string" - }, - "DimensionMapping": { - "additionalProperties": false, - "description": "This type is used to map column(s) from the query result to a dimension in the destination table.", - "properties": { - "DimensionValueType": { - "$ref": "#/definitions/DimensionValueType" - }, - "Name": { - "$ref": "#/definitions/DimensionMappingName" - } - }, - "required": [ - "Name", - "DimensionValueType" - ], - "type": "object" - }, - "DimensionMappingName": { - "description": "Column name from query result.", - "type": "string" - }, - "DimensionMappings": { - "description": "This is to allow mapping column(s) from the query result to the dimension in the destination table.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DimensionMapping" - }, - "type": "array" - }, - "DimensionValueType": { - "description": "Type for the dimension.", - "enum": [ - "VARCHAR" - ], - "type": "string" - }, - "EncryptionOption": { - "description": "Encryption at rest options for the error reports. If no encryption option is specified, Timestream will choose SSE_S3 as default.", - "enum": [ - "SSE_S3", - "SSE_KMS" - ], - "type": "string" - }, - "ErrorReportConfiguration": { - "additionalProperties": false, - "description": "Configuration for error reporting. Error reports will be generated when a problem is encountered when writing the query results.", - "properties": { - "S3Configuration": { - "$ref": "#/definitions/S3Configuration" - } - }, - "required": [ - "S3Configuration" - ], - "type": "object" - }, - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "KmsKeyId": { - "description": "The Amazon KMS key used to encrypt the scheduled query resource, at-rest. If the Amazon KMS key is not specified, the scheduled query resource will be encrypted with a Timestream owned Amazon KMS key. To specify a KMS key, use the key ID, key ARN, alias name, or alias ARN. When using an alias name, prefix the name with alias/. If ErrorReportConfiguration uses SSE_KMS as encryption type, the same KmsKeyId is used to encrypt the error report at rest.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "MeasureNameColumn": { - "description": "Name of the measure name column from the query result.", - "type": "string" - }, - "MixedMeasureMapping": { - "additionalProperties": false, - "description": "MixedMeasureMappings are mappings that can be used to ingest data into a mixture of narrow and multi measures in the derived table.", - "properties": { - "MeasureName": { - "$ref": "#/definitions/MixedMeasureMappingMeasureName" - }, - "MeasureValueType": { - "$ref": "#/definitions/MixedMeasureMappingMeasureValueType" - }, - "MultiMeasureAttributeMappings": { - "$ref": "#/definitions/MultiMeasureAttributeMappingList" - }, - "SourceColumn": { - "$ref": "#/definitions/MixedMeasureMappingSourceColumn" - }, - "TargetMeasureName": { - "$ref": "#/definitions/MixedMeasureMappingTargetMeasureName" - } - }, - "required": [ - "MeasureValueType" - ], - "type": "object" - }, - "MixedMeasureMappingMeasureName": { - "description": "Refers to the value of the measure name in a result row. This field is required if MeasureNameColumn is provided.", - "type": "string" - }, - "MixedMeasureMappingMeasureValueType": { - "description": "Type of the value that is to be read from SourceColumn. If the mapping is for MULTI, use MeasureValueType.MULTI.", - "enum": [ - "BIGINT", - "BOOLEAN", - "DOUBLE", - "VARCHAR", - "MULTI" - ], - "type": "string" - }, - "MixedMeasureMappingSourceColumn": { - "description": "This field refers to the source column from which the measure value is to be read for result materialization.", - "type": "string" - }, - "MixedMeasureMappingTargetMeasureName": { - "description": "Target measure name to be used. If not provided, the target measure name by default would be MeasureName if provided, or SourceColumn otherwise.", - "type": "string" - }, - "MixedMeasureMappings": { - "description": "Specifies how to map measures to multi-measure records.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MixedMeasureMapping" - }, - "minItems": 1, - "type": "array" - }, - "MultiMeasureAttributeMapping": { - "additionalProperties": false, - "description": "An attribute mapping to be used for mapping query results to ingest data for multi-measure attributes.", - "properties": { - "MeasureValueType": { - "$ref": "#/definitions/MultiMeasureAttributeMappingMeasureValueType" - }, - "SourceColumn": { - "$ref": "#/definitions/MultiMeasureAttributeMappingSourceColumn" - }, - "TargetMultiMeasureAttributeName": { - "$ref": "#/definitions/TargetMultiMeasureAttributeName" - } - }, - "required": [ - "SourceColumn", - "MeasureValueType" - ], - "type": "object" - }, - "MultiMeasureAttributeMappingList": { - "description": "Required. Attribute mappings to be used for mapping query results to ingest data for multi-measure attributes.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/MultiMeasureAttributeMapping" - }, - "minItems": 1, - "type": "array" - }, - "MultiMeasureAttributeMappingMeasureValueType": { - "description": "Value type of the measure value column to be read from the query result.", - "enum": [ - "BIGINT", - "BOOLEAN", - "DOUBLE", - "VARCHAR", - "TIMESTAMP" - ], - "type": "string" - }, - "MultiMeasureAttributeMappingSourceColumn": { - "description": "Source measure value column in the query result where the attribute value is to be read.", - "type": "string" - }, - "MultiMeasureMappings": { - "additionalProperties": false, - "description": "Only one of MixedMeasureMappings or MultiMeasureMappings is to be provided. MultiMeasureMappings can be used to ingest data as multi measures in the derived table.", - "properties": { - "MultiMeasureAttributeMappings": { - "$ref": "#/definitions/MultiMeasureAttributeMappingList" - }, - "TargetMultiMeasureName": { - "$ref": "#/definitions/TargetMultiMeasureName" - } - }, - "required": [ - "MultiMeasureAttributeMappings" - ], - "type": "object" - }, - "NotificationConfiguration": { - "additionalProperties": false, - "description": "Notification configuration for the scheduled query. A notification is sent by Timestream when a query run finishes, when the state is updated or when you delete it.", - "properties": { - "SnsConfiguration": { - "$ref": "#/definitions/SnsConfiguration" - } - }, - "required": [ - "SnsConfiguration" - ], - "type": "object" - }, - "ObjectKeyPrefix": { - "description": "Prefix for error report keys.", - "maxLength": 896, - "minLength": 1, - "pattern": "[a-zA-Z0-9|!\\-_*'\\(\\)]([a-zA-Z0-9]|[!\\-_*'\\(\\)\\/.])+", - "type": "string" - }, - "QueryString": { - "description": "The query string to run. Parameter names can be specified in the query string @ character followed by an identifier. The named Parameter @scheduled_runtime is reserved and can be used in the query to get the time at which the query is scheduled to run. The timestamp calculated according to the ScheduleConfiguration parameter, will be the value of @scheduled_runtime paramater for each query run. For example, consider an instance of a scheduled query executing on 2021-12-01 00:00:00. For this instance, the @scheduled_runtime parameter is initialized to the timestamp 2021-12-01 00:00:00 when invoking the query.", - "maxLength": 262144, - "minLength": 1, - "type": "string" - }, - "S3Configuration": { - "additionalProperties": false, - "description": "Details on S3 location for error reports that result from running a query.", - "properties": { - "BucketName": { - "$ref": "#/definitions/BucketName" - }, - "EncryptionOption": { - "$ref": "#/definitions/EncryptionOption" - }, - "ObjectKeyPrefix": { - "$ref": "#/definitions/ObjectKeyPrefix" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "ScheduleConfiguration": { - "additionalProperties": false, - "description": "Configuration for when the scheduled query is executed.", - "properties": { - "ScheduleExpression": { - "$ref": "#/definitions/ScheduleExpression" - } - }, - "required": [ - "ScheduleExpression" - ], - "type": "object" - }, - "ScheduleExpression": { - "description": "An expression that denotes when to trigger the scheduled query run. This can be a cron expression or a rate expression.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "ScheduledQueryExecutionRoleArn": { - "description": "The ARN for the IAM role that Timestream will assume when running the scheduled query.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "ScheduledQueryName": { - "description": "The name of the scheduled query. Scheduled query names must be unique within each Region.", - "maxLength": 64, - "minLength": 1, - "pattern": "[a-zA-Z0-9_.-]+", - "type": "string" - }, - "SnsConfiguration": { - "additionalProperties": false, - "description": "SNS configuration for notification upon scheduled query execution.", - "properties": { - "TopicArn": { - "$ref": "#/definitions/TopicArn" - } - }, - "required": [ - "TopicArn" - ], - "type": "object" - }, - "TableName": { - "description": "Name of Timestream table that the query result will be written to. The table should be within the same database that is provided in Timestream configuration.", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to label the scheduled query.", - "properties": { - "Key": { - "$ref": "#/definitions/Key" - }, - "Value": { - "$ref": "#/definitions/Value" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Tags": { - "description": "A list of key-value pairs to label the scheduled query.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array" - }, - "TargetConfiguration": { - "additionalProperties": false, - "description": "Configuration of target store where scheduled query results are written to.", - "properties": { - "TimestreamConfiguration": { - "$ref": "#/definitions/TimestreamConfiguration" - } - }, - "required": [ - "TimestreamConfiguration" - ], - "type": "object" - }, - "TargetMultiMeasureAttributeName": { - "description": "Custom name to be used for attribute name in derived table. If not provided, source column name would be used.", - "type": "string" - }, - "TargetMultiMeasureName": { - "description": "Name of the target multi-measure in the derived table. Required if MeasureNameColumn is not provided. If MeasureNameColumn is provided then the value from that column will be used as the multi-measure name.", - "type": "string" - }, - "TimeColumn": { - "description": "Column from query result that should be used as the time column in destination table. Column type for this should be TIMESTAMP.", - "type": "string" - }, - "TimestreamConfiguration": { - "additionalProperties": false, - "description": "Configuration needed to write data into the Timestream database and table.", - "properties": { - "DatabaseName": { - "$ref": "#/definitions/DatabaseName" - }, - "DimensionMappings": { - "$ref": "#/definitions/DimensionMappings" - }, - "MeasureNameColumn": { - "$ref": "#/definitions/MeasureNameColumn" - }, - "MixedMeasureMappings": { - "$ref": "#/definitions/MixedMeasureMappings" - }, - "MultiMeasureMappings": { - "$ref": "#/definitions/MultiMeasureMappings" - }, - "TableName": { - "$ref": "#/definitions/TableName" - }, - "TimeColumn": { - "$ref": "#/definitions/TimeColumn" - } - }, - "required": [ - "DatabaseName", - "TableName", - "TimeColumn", - "DimensionMappings" - ], - "type": "object" - }, - "TopicArn": { - "description": "SNS topic ARN that the scheduled query status notifications will be sent to.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "description": "The AWS::Timestream::ScheduledQuery resource creates a Timestream Scheduled Query.", - "handlers": { - "create": { - "permissions": [ - "timestream:CreateScheduledQuery", - "timestream:DescribeEndpoints" - ] - }, - "delete": { - "permissions": [ - "timestream:DeleteScheduledQuery", - "timestream:DescribeEndpoints" - ] - }, - "list": { - "permissions": [ - "timestream:ListScheduledQueries", - "timestream:DescribeEndpoints" - ] - }, - "read": { - "permissions": [ - "timestream:DescribeScheduledQuery", - "timestream:ListTagsForResource", - "timestream:DescribeEndpoints" - ] - }, - "update": { - "permissions": [ - "timestream:UpdateScheduledQuery", - "timestream:TagResource", - "timestream:UntagResource", - "timestream:DescribeEndpoints" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "ClientToken": { - "$ref": "#/definitions/ClientToken" - }, - "ErrorReportConfiguration": { - "$ref": "#/definitions/ErrorReportConfiguration" - }, - "KmsKeyId": { - "$ref": "#/definitions/KmsKeyId" - }, - "NotificationConfiguration": { - "$ref": "#/definitions/NotificationConfiguration" - }, - "QueryString": { - "$ref": "#/definitions/QueryString" - }, - "SQErrorReportConfiguration": { - "description": "Configuration for error reporting. Error reports will be generated when a problem is encountered when writing the query results.", - "type": "string" - }, - "SQKmsKeyId": { - "description": "The Amazon KMS key used to encrypt the scheduled query resource, at-rest. If the Amazon KMS key is not specified, the scheduled query resource will be encrypted with a Timestream owned Amazon KMS key. To specify a KMS key, use the key ID, key ARN, alias name, or alias ARN. When using an alias name, prefix the name with alias/. If ErrorReportConfiguration uses SSE_KMS as encryption type, the same KmsKeyId is used to encrypt the error report at rest.", - "type": "string" - }, - "SQName": { - "description": "The name of the scheduled query. Scheduled query names must be unique within each Region.", - "type": "string" - }, - "SQNotificationConfiguration": { - "description": "Notification configuration for the scheduled query. A notification is sent by Timestream when a query run finishes, when the state is updated or when you delete it.", - "type": "string" - }, - "SQQueryString": { - "description": "The query string to run. Parameter names can be specified in the query string @ character followed by an identifier. The named Parameter @scheduled_runtime is reserved and can be used in the query to get the time at which the query is scheduled to run. The timestamp calculated according to the ScheduleConfiguration parameter, will be the value of @scheduled_runtime paramater for each query run. For example, consider an instance of a scheduled query executing on 2021-12-01 00:00:00. For this instance, the @scheduled_runtime parameter is initialized to the timestamp 2021-12-01 00:00:00 when invoking the query.", - "type": "string" - }, - "SQScheduleConfiguration": { - "description": "Configuration for when the scheduled query is executed.", - "type": "string" - }, - "SQScheduledQueryExecutionRoleArn": { - "description": "The ARN for the IAM role that Timestream will assume when running the scheduled query.", - "type": "string" - }, - "SQTargetConfiguration": { - "description": "Configuration of target store where scheduled query results are written to.", - "type": "string" - }, - "ScheduleConfiguration": { - "$ref": "#/definitions/ScheduleConfiguration" - }, - "ScheduledQueryExecutionRoleArn": { - "$ref": "#/definitions/ScheduledQueryExecutionRoleArn" - }, - "ScheduledQueryName": { - "$ref": "#/definitions/ScheduledQueryName" - }, - "Tags": { - "$ref": "#/definitions/Tags" - }, - "TargetConfiguration": { - "$ref": "#/definitions/TargetConfiguration" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/SQName", - "/properties/SQQueryString", - "/properties/SQScheduleConfiguration", - "/properties/SQNotificationConfiguration", - "/properties/SQScheduledQueryExecutionRoleArn", - "/properties/SQTargetConfiguration", - "/properties/SQErrorReportConfiguration", - "/properties/SQKmsKeyId" - ], - "required": [ - "QueryString", - "ScheduleConfiguration", - "NotificationConfiguration", - "ScheduledQueryExecutionRoleArn", - "ErrorReportConfiguration" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-timestream.git", - "typeName": "AWS::Timestream::ScheduledQuery" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ScheduledQueryName", + "/properties/QueryString", + "/properties/ScheduleConfiguration", + "/properties/NotificationConfiguration", + "/properties/ClientToken", + "/properties/ScheduledQueryExecutionRoleArn", + "/properties/TargetConfiguration", + "/properties/ErrorReportConfiguration", + "/properties/KmsKeyId" + ], + "definitions": { + "Arn": { + "description": "Amazon Resource Name of the scheduled query that is generated upon creation.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "BucketName": { + "description": "Name of the S3 bucket under which error reports will be created.", + "maxLength": 63, + "minLength": 3, + "pattern": "[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]", + "type": "string" + }, + "ClientToken": { + "description": "Using a ClientToken makes the call to CreateScheduledQuery idempotent, in other words, making the same request repeatedly will produce the same result. Making multiple identical CreateScheduledQuery requests has the same effect as making a single request. If CreateScheduledQuery is called without a ClientToken, the Query SDK generates a ClientToken on your behalf. After 8 hours, any request with the same ClientToken is treated as a new request.", + "maxLength": 128, + "minLength": 32, + "type": "string" + }, + "DatabaseName": { + "description": "Name of Timestream database to which the query result will be written.", + "type": "string" + }, + "DimensionMapping": { + "additionalProperties": false, + "description": "This type is used to map column(s) from the query result to a dimension in the destination table.", + "properties": { + "DimensionValueType": { + "$ref": "#/definitions/DimensionValueType" + }, + "Name": { + "$ref": "#/definitions/DimensionMappingName" + } + }, + "required": [ + "Name", + "DimensionValueType" + ], + "type": "object" + }, + "DimensionMappingName": { + "description": "Column name from query result.", + "type": "string" + }, + "DimensionMappings": { + "description": "This is to allow mapping column(s) from the query result to the dimension in the destination table.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DimensionMapping" + }, + "type": "array" + }, + "DimensionValueType": { + "description": "Type for the dimension.", + "enum": [ + "VARCHAR" + ], + "type": "string" + }, + "EncryptionOption": { + "description": "Encryption at rest options for the error reports. If no encryption option is specified, Timestream will choose SSE_S3 as default.", + "enum": [ + "SSE_S3", + "SSE_KMS" + ], + "type": "string" + }, + "ErrorReportConfiguration": { + "additionalProperties": false, + "description": "Configuration for error reporting. Error reports will be generated when a problem is encountered when writing the query results.", + "properties": { + "S3Configuration": { + "$ref": "#/definitions/S3Configuration" + } + }, + "required": [ + "S3Configuration" + ], + "type": "object" + }, + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "KmsKeyId": { + "description": "The Amazon KMS key used to encrypt the scheduled query resource, at-rest. If the Amazon KMS key is not specified, the scheduled query resource will be encrypted with a Timestream owned Amazon KMS key. To specify a KMS key, use the key ID, key ARN, alias name, or alias ARN. When using an alias name, prefix the name with alias/. If ErrorReportConfiguration uses SSE_KMS as encryption type, the same KmsKeyId is used to encrypt the error report at rest.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "MeasureNameColumn": { + "description": "Name of the measure name column from the query result.", + "type": "string" + }, + "MixedMeasureMapping": { + "additionalProperties": false, + "description": "MixedMeasureMappings are mappings that can be used to ingest data into a mixture of narrow and multi measures in the derived table.", + "properties": { + "MeasureName": { + "$ref": "#/definitions/MixedMeasureMappingMeasureName" + }, + "MeasureValueType": { + "$ref": "#/definitions/MixedMeasureMappingMeasureValueType" + }, + "MultiMeasureAttributeMappings": { + "$ref": "#/definitions/MultiMeasureAttributeMappingList" + }, + "SourceColumn": { + "$ref": "#/definitions/MixedMeasureMappingSourceColumn" + }, + "TargetMeasureName": { + "$ref": "#/definitions/MixedMeasureMappingTargetMeasureName" + } + }, + "required": [ + "MeasureValueType" + ], + "type": "object" + }, + "MixedMeasureMappingMeasureName": { + "description": "Refers to the value of the measure name in a result row. This field is required if MeasureNameColumn is provided.", + "type": "string" + }, + "MixedMeasureMappingMeasureValueType": { + "description": "Type of the value that is to be read from SourceColumn. If the mapping is for MULTI, use MeasureValueType.MULTI.", + "enum": [ + "BIGINT", + "BOOLEAN", + "DOUBLE", + "VARCHAR", + "MULTI" + ], + "type": "string" + }, + "MixedMeasureMappingSourceColumn": { + "description": "This field refers to the source column from which the measure value is to be read for result materialization.", + "type": "string" + }, + "MixedMeasureMappingTargetMeasureName": { + "description": "Target measure name to be used. If not provided, the target measure name by default would be MeasureName if provided, or SourceColumn otherwise.", + "type": "string" + }, + "MixedMeasureMappings": { + "description": "Specifies how to map measures to multi-measure records.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MixedMeasureMapping" + }, + "minItems": 1, + "type": "array" + }, + "MultiMeasureAttributeMapping": { + "additionalProperties": false, + "description": "An attribute mapping to be used for mapping query results to ingest data for multi-measure attributes.", + "properties": { + "MeasureValueType": { + "$ref": "#/definitions/MultiMeasureAttributeMappingMeasureValueType" + }, + "SourceColumn": { + "$ref": "#/definitions/MultiMeasureAttributeMappingSourceColumn" + }, + "TargetMultiMeasureAttributeName": { + "$ref": "#/definitions/TargetMultiMeasureAttributeName" + } + }, + "required": [ + "SourceColumn", + "MeasureValueType" + ], + "type": "object" + }, + "MultiMeasureAttributeMappingList": { + "description": "Required. Attribute mappings to be used for mapping query results to ingest data for multi-measure attributes.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/MultiMeasureAttributeMapping" + }, + "minItems": 1, + "type": "array" + }, + "MultiMeasureAttributeMappingMeasureValueType": { + "description": "Value type of the measure value column to be read from the query result.", + "enum": [ + "BIGINT", + "BOOLEAN", + "DOUBLE", + "VARCHAR", + "TIMESTAMP" + ], + "type": "string" + }, + "MultiMeasureAttributeMappingSourceColumn": { + "description": "Source measure value column in the query result where the attribute value is to be read.", + "type": "string" + }, + "MultiMeasureMappings": { + "additionalProperties": false, + "description": "Only one of MixedMeasureMappings or MultiMeasureMappings is to be provided. MultiMeasureMappings can be used to ingest data as multi measures in the derived table.", + "properties": { + "MultiMeasureAttributeMappings": { + "$ref": "#/definitions/MultiMeasureAttributeMappingList" + }, + "TargetMultiMeasureName": { + "$ref": "#/definitions/TargetMultiMeasureName" + } + }, + "required": [ + "MultiMeasureAttributeMappings" + ], + "type": "object" + }, + "NotificationConfiguration": { + "additionalProperties": false, + "description": "Notification configuration for the scheduled query. A notification is sent by Timestream when a query run finishes, when the state is updated or when you delete it.", + "properties": { + "SnsConfiguration": { + "$ref": "#/definitions/SnsConfiguration" + } + }, + "required": [ + "SnsConfiguration" + ], + "type": "object" + }, + "ObjectKeyPrefix": { + "description": "Prefix for error report keys.", + "maxLength": 896, + "minLength": 1, + "pattern": "[a-zA-Z0-9|!\\-_*'\\(\\)]([a-zA-Z0-9]|[!\\-_*'\\(\\)\\/.])+", + "type": "string" + }, + "QueryString": { + "description": "The query string to run. Parameter names can be specified in the query string @ character followed by an identifier. The named Parameter @scheduled_runtime is reserved and can be used in the query to get the time at which the query is scheduled to run. The timestamp calculated according to the ScheduleConfiguration parameter, will be the value of @scheduled_runtime paramater for each query run. For example, consider an instance of a scheduled query executing on 2021-12-01 00:00:00. For this instance, the @scheduled_runtime parameter is initialized to the timestamp 2021-12-01 00:00:00 when invoking the query.", + "maxLength": 262144, + "minLength": 1, + "type": "string" + }, + "S3Configuration": { + "additionalProperties": false, + "description": "Details on S3 location for error reports that result from running a query.", + "properties": { + "BucketName": { + "$ref": "#/definitions/BucketName" + }, + "EncryptionOption": { + "$ref": "#/definitions/EncryptionOption" + }, + "ObjectKeyPrefix": { + "$ref": "#/definitions/ObjectKeyPrefix" + } + }, + "required": [ + "BucketName" + ], + "type": "object" + }, + "ScheduleConfiguration": { + "additionalProperties": false, + "description": "Configuration for when the scheduled query is executed.", + "properties": { + "ScheduleExpression": { + "$ref": "#/definitions/ScheduleExpression" + } + }, + "required": [ + "ScheduleExpression" + ], + "type": "object" + }, + "ScheduleExpression": { + "description": "An expression that denotes when to trigger the scheduled query run. This can be a cron expression or a rate expression.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "ScheduledQueryExecutionRoleArn": { + "description": "The ARN for the IAM role that Timestream will assume when running the scheduled query.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ScheduledQueryName": { + "description": "The name of the scheduled query. Scheduled query names must be unique within each Region.", + "maxLength": 64, + "minLength": 1, + "pattern": "[a-zA-Z0-9_.-]+", + "type": "string" + }, + "SnsConfiguration": { + "additionalProperties": false, + "description": "SNS configuration for notification upon scheduled query execution.", + "properties": { + "TopicArn": { + "$ref": "#/definitions/TopicArn" + } + }, + "required": [ + "TopicArn" + ], + "type": "object" + }, + "TableName": { + "description": "Name of Timestream table that the query result will be written to. The table should be within the same database that is provided in Timestream configuration.", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to label the scheduled query.", + "properties": { + "Key": { + "$ref": "#/definitions/Key" + }, + "Value": { + "$ref": "#/definitions/Value" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Tags": { + "description": "A list of key-value pairs to label the scheduled query.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array" + }, + "TargetConfiguration": { + "additionalProperties": false, + "description": "Configuration of target store where scheduled query results are written to.", + "properties": { + "TimestreamConfiguration": { + "$ref": "#/definitions/TimestreamConfiguration" + } + }, + "required": [ + "TimestreamConfiguration" + ], + "type": "object" + }, + "TargetMultiMeasureAttributeName": { + "description": "Custom name to be used for attribute name in derived table. If not provided, source column name would be used.", + "type": "string" + }, + "TargetMultiMeasureName": { + "description": "Name of the target multi-measure in the derived table. Required if MeasureNameColumn is not provided. If MeasureNameColumn is provided then the value from that column will be used as the multi-measure name.", + "type": "string" + }, + "TimeColumn": { + "description": "Column from query result that should be used as the time column in destination table. Column type for this should be TIMESTAMP.", + "type": "string" + }, + "TimestreamConfiguration": { + "additionalProperties": false, + "description": "Configuration needed to write data into the Timestream database and table.", + "properties": { + "DatabaseName": { + "$ref": "#/definitions/DatabaseName" + }, + "DimensionMappings": { + "$ref": "#/definitions/DimensionMappings" + }, + "MeasureNameColumn": { + "$ref": "#/definitions/MeasureNameColumn" + }, + "MixedMeasureMappings": { + "$ref": "#/definitions/MixedMeasureMappings" + }, + "MultiMeasureMappings": { + "$ref": "#/definitions/MultiMeasureMappings" + }, + "TableName": { + "$ref": "#/definitions/TableName" + }, + "TimeColumn": { + "$ref": "#/definitions/TimeColumn" + } + }, + "required": [ + "DatabaseName", + "TableName", + "TimeColumn", + "DimensionMappings" + ], + "type": "object" + }, + "TopicArn": { + "description": "SNS topic ARN that the scheduled query status notifications will be sent to.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "description": "The AWS::Timestream::ScheduledQuery resource creates a Timestream Scheduled Query.", + "handlers": { + "create": { + "permissions": [ + "timestream:CreateScheduledQuery", + "timestream:DescribeEndpoints" + ] + }, + "delete": { + "permissions": [ + "timestream:DeleteScheduledQuery", + "timestream:DescribeEndpoints" + ] + }, + "list": { + "permissions": [ + "timestream:ListScheduledQueries", + "timestream:DescribeEndpoints" + ] + }, + "read": { + "permissions": [ + "timestream:DescribeScheduledQuery", + "timestream:ListTagsForResource", + "timestream:DescribeEndpoints" + ] + }, + "update": { + "permissions": [ + "timestream:UpdateScheduledQuery", + "timestream:TagResource", + "timestream:UntagResource", + "timestream:DescribeEndpoints" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "ClientToken": { + "$ref": "#/definitions/ClientToken" + }, + "ErrorReportConfiguration": { + "$ref": "#/definitions/ErrorReportConfiguration" + }, + "KmsKeyId": { + "$ref": "#/definitions/KmsKeyId" + }, + "NotificationConfiguration": { + "$ref": "#/definitions/NotificationConfiguration" + }, + "QueryString": { + "$ref": "#/definitions/QueryString" + }, + "SQErrorReportConfiguration": { + "description": "Configuration for error reporting. Error reports will be generated when a problem is encountered when writing the query results.", + "type": "string" + }, + "SQKmsKeyId": { + "description": "The Amazon KMS key used to encrypt the scheduled query resource, at-rest. If the Amazon KMS key is not specified, the scheduled query resource will be encrypted with a Timestream owned Amazon KMS key. To specify a KMS key, use the key ID, key ARN, alias name, or alias ARN. When using an alias name, prefix the name with alias/. If ErrorReportConfiguration uses SSE_KMS as encryption type, the same KmsKeyId is used to encrypt the error report at rest.", + "type": "string" + }, + "SQName": { + "description": "The name of the scheduled query. Scheduled query names must be unique within each Region.", + "type": "string" + }, + "SQNotificationConfiguration": { + "description": "Notification configuration for the scheduled query. A notification is sent by Timestream when a query run finishes, when the state is updated or when you delete it.", + "type": "string" + }, + "SQQueryString": { + "description": "The query string to run. Parameter names can be specified in the query string @ character followed by an identifier. The named Parameter @scheduled_runtime is reserved and can be used in the query to get the time at which the query is scheduled to run. The timestamp calculated according to the ScheduleConfiguration parameter, will be the value of @scheduled_runtime paramater for each query run. For example, consider an instance of a scheduled query executing on 2021-12-01 00:00:00. For this instance, the @scheduled_runtime parameter is initialized to the timestamp 2021-12-01 00:00:00 when invoking the query.", + "type": "string" + }, + "SQScheduleConfiguration": { + "description": "Configuration for when the scheduled query is executed.", + "type": "string" + }, + "SQScheduledQueryExecutionRoleArn": { + "description": "The ARN for the IAM role that Timestream will assume when running the scheduled query.", + "type": "string" + }, + "SQTargetConfiguration": { + "description": "Configuration of target store where scheduled query results are written to.", + "type": "string" + }, + "ScheduleConfiguration": { + "$ref": "#/definitions/ScheduleConfiguration" + }, + "ScheduledQueryExecutionRoleArn": { + "$ref": "#/definitions/ScheduledQueryExecutionRoleArn" + }, + "ScheduledQueryName": { + "$ref": "#/definitions/ScheduledQueryName" + }, + "Tags": { + "$ref": "#/definitions/Tags" + }, + "TargetConfiguration": { + "$ref": "#/definitions/TargetConfiguration" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/SQName", + "/properties/SQQueryString", + "/properties/SQScheduleConfiguration", + "/properties/SQNotificationConfiguration", + "/properties/SQScheduledQueryExecutionRoleArn", + "/properties/SQTargetConfiguration", + "/properties/SQErrorReportConfiguration", + "/properties/SQKmsKeyId" + ], + "required": [ + "QueryString", + "ScheduleConfiguration", + "NotificationConfiguration", + "ScheduledQueryExecutionRoleArn", + "ErrorReportConfiguration" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-timestream.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "timestream:TagResource", + "timestream:ListTagsForResource", + "timestream:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Timestream::ScheduledQuery" +} diff --git a/src/schema/aws-timestream-table.json b/src/schema/aws-timestream-table.json index 8102afdc..f9588235 100644 --- a/src/schema/aws-timestream-table.json +++ b/src/schema/aws-timestream-table.json @@ -1,240 +1,252 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DatabaseName", - "/properties/TableName" - ], - "definitions": { - "PartitionKey": { - "additionalProperties": false, - "description": "An attribute used in partitioning data in a table. There are two types of partition keys: dimension keys and measure keys. A dimension key partitions data on a dimension name, while a measure key partitions data on the measure name.", - "properties": { - "EnforcementInRecord": { - "$ref": "#/definitions/PartitionKeyEnforcementLevel" - }, - "Name": { - "$ref": "#/definitions/SchemaName" - }, - "Type": { - "$ref": "#/definitions/PartitionKeyType" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "PartitionKeyEnforcementLevel": { - "description": "The level of enforcement for the specification of a dimension key in ingested records. Options are REQUIRED (dimension key must be specified) and OPTIONAL (dimension key does not have to be specified).", - "enum": [ - "REQUIRED", - "OPTIONAL" - ], - "type": "string" - }, - "PartitionKeyList": { - "description": "A list of partition keys defining the attributes used to partition the table data. The order of the list determines the partition hierarchy. The name and type of each partition key as well as the partition key order cannot be changed after the table is created. However, the enforcement level of each partition key can be changed.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PartitionKey" - }, - "minItems": 1, - "type": "array" - }, - "PartitionKeyType": { - "description": "The type of the partition key. Options are DIMENSION (dimension key) and MEASURE (measure key).", - "enum": [ - "DIMENSION", - "MEASURE" - ], - "type": "string" - }, - "SchemaName": { - "description": "The name of the attribute used for a dimension key.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "You can use the Resource Tags property to apply tags to resources, which can help you identify and categorize those resources.", - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "The AWS::Timestream::Table resource creates a Timestream Table.", - "handlers": { - "create": { - "permissions": [ - "timestream:CreateTable", - "timestream:DescribeEndpoints", - "timestream:TagResource", - "s3:PutObject", - "s3:GetObject", - "s3:GetBucketAcl", - "kms:GenerateDataKey*", - "kms:DescribeKey", - "kms:Encrypt" - ] - }, - "delete": { - "permissions": [ - "timestream:DeleteTable", - "timestream:DescribeEndpoints", - "timestream:DescribeTable" - ] - }, - "list": { - "permissions": [ - "timestream:ListTables", - "timestream:DescribeEndpoints" - ] - }, - "read": { - "permissions": [ - "timestream:DescribeTable", - "timestream:DescribeEndpoints", - "timestream:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "timestream:UpdateTable", - "timestream:DescribeEndpoints", - "timestream:TagResource", - "timestream:UntagResource", - "s3:PutObject", - "s3:GetObject", - "s3:GetBucketAcl", - "kms:GenerateDataKey*", - "kms:DescribeKey", - "kms:Encrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/DatabaseName", - "/properties/TableName" - ], - "properties": { - "Arn": { - "type": "string" - }, - "DatabaseName": { - "description": "The name for the database which the table to be created belongs to.", - "pattern": "^[a-zA-Z0-9_.-]{3,256}$", - "type": "string" - }, - "MagneticStoreWriteProperties": { - "additionalProperties": false, - "description": "The properties that determine whether magnetic store writes are enabled.", - "properties": { - "EnableMagneticStoreWrites": { - "description": "Boolean flag indicating whether magnetic store writes are enabled.", - "type": "boolean" - }, - "MagneticStoreRejectedDataLocation": { - "additionalProperties": false, - "description": "Location to store information about records that were asynchronously rejected during magnetic store writes.", - "properties": { - "S3Configuration": { - "additionalProperties": false, - "description": "S3 configuration for location to store rejections from magnetic store writes", - "properties": { - "BucketName": { - "description": "The bucket name used to store the data.", - "type": "string" - }, - "EncryptionOption": { - "description": "Either SSE_KMS or SSE_S3.", - "type": "string" - }, - "KmsKeyId": { - "description": "Must be provided if SSE_KMS is specified as the encryption option", - "type": "string" - }, - "ObjectKeyPrefix": { - "description": "String used to prefix all data in the bucket.", - "type": "string" - } - }, - "required": [ - "EncryptionOption", - "BucketName" - ], - "type": "object" - } - }, - "type": "object" - } - }, - "required": [ - "EnableMagneticStoreWrites" - ], - "type": "object" - }, - "Name": { - "description": "The table name exposed as a read-only attribute.", - "type": "string" - }, - "RetentionProperties": { - "additionalProperties": false, - "description": "The retention duration of the memory store and the magnetic store.", - "properties": { - "MagneticStoreRetentionPeriodInDays": { - "description": "The duration for which data must be stored in the magnetic store.", - "type": "string" - }, - "MemoryStoreRetentionPeriodInHours": { - "description": "The duration for which data must be stored in the memory store.", - "type": "string" - } - }, - "type": "object" - }, - "Schema": { - "additionalProperties": false, - "description": "A Schema specifies the expected data model of the table.", - "properties": { - "CompositePartitionKey": { - "$ref": "#/definitions/PartitionKeyList" - } - }, - "type": "object" - }, - "TableName": { - "description": "The name for the table. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the table name.", - "pattern": "^[a-zA-Z0-9_.-]{3,256}$", - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Name" - ], - "required": [ - "DatabaseName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-timestream.git", - "typeName": "AWS::Timestream::Table" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DatabaseName", + "/properties/TableName" + ], + "definitions": { + "PartitionKey": { + "additionalProperties": false, + "description": "An attribute used in partitioning data in a table. There are two types of partition keys: dimension keys and measure keys. A dimension key partitions data on a dimension name, while a measure key partitions data on the measure name.", + "properties": { + "EnforcementInRecord": { + "$ref": "#/definitions/PartitionKeyEnforcementLevel" + }, + "Name": { + "$ref": "#/definitions/SchemaName" + }, + "Type": { + "$ref": "#/definitions/PartitionKeyType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "PartitionKeyEnforcementLevel": { + "description": "The level of enforcement for the specification of a dimension key in ingested records. Options are REQUIRED (dimension key must be specified) and OPTIONAL (dimension key does not have to be specified).", + "enum": [ + "REQUIRED", + "OPTIONAL" + ], + "type": "string" + }, + "PartitionKeyList": { + "description": "A list of partition keys defining the attributes used to partition the table data. The order of the list determines the partition hierarchy. The name and type of each partition key as well as the partition key order cannot be changed after the table is created. However, the enforcement level of each partition key can be changed.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/PartitionKey" + }, + "minItems": 1, + "type": "array" + }, + "PartitionKeyType": { + "description": "The type of the partition key. Options are DIMENSION (dimension key) and MEASURE (measure key).", + "enum": [ + "DIMENSION", + "MEASURE" + ], + "type": "string" + }, + "SchemaName": { + "description": "The name of the attribute used for a dimension key.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "You can use the Resource Tags property to apply tags to resources, which can help you identify and categorize those resources.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "The AWS::Timestream::Table resource creates a Timestream Table.", + "handlers": { + "create": { + "permissions": [ + "timestream:CreateTable", + "timestream:DescribeEndpoints", + "timestream:TagResource", + "s3:PutObject", + "s3:GetObject", + "s3:GetBucketAcl", + "kms:GenerateDataKey*", + "kms:DescribeKey", + "kms:Encrypt" + ] + }, + "delete": { + "permissions": [ + "timestream:DeleteTable", + "timestream:DescribeEndpoints", + "timestream:DescribeTable" + ] + }, + "list": { + "permissions": [ + "timestream:ListTables", + "timestream:DescribeEndpoints" + ] + }, + "read": { + "permissions": [ + "timestream:DescribeTable", + "timestream:DescribeEndpoints", + "timestream:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "timestream:UpdateTable", + "timestream:DescribeEndpoints", + "timestream:TagResource", + "timestream:UntagResource", + "s3:PutObject", + "s3:GetObject", + "s3:GetBucketAcl", + "kms:GenerateDataKey*", + "kms:DescribeKey", + "kms:Encrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/DatabaseName", + "/properties/TableName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "DatabaseName": { + "description": "The name for the database which the table to be created belongs to.", + "pattern": "^[a-zA-Z0-9_.-]{3,256}$", + "type": "string" + }, + "MagneticStoreWriteProperties": { + "additionalProperties": false, + "description": "The properties that determine whether magnetic store writes are enabled.", + "properties": { + "EnableMagneticStoreWrites": { + "description": "Boolean flag indicating whether magnetic store writes are enabled.", + "type": "boolean" + }, + "MagneticStoreRejectedDataLocation": { + "additionalProperties": false, + "description": "Location to store information about records that were asynchronously rejected during magnetic store writes.", + "properties": { + "S3Configuration": { + "additionalProperties": false, + "description": "S3 configuration for location to store rejections from magnetic store writes", + "properties": { + "BucketName": { + "description": "The bucket name used to store the data.", + "type": "string" + }, + "EncryptionOption": { + "description": "Either SSE_KMS or SSE_S3.", + "type": "string" + }, + "KmsKeyId": { + "description": "Must be provided if SSE_KMS is specified as the encryption option", + "type": "string" + }, + "ObjectKeyPrefix": { + "description": "String used to prefix all data in the bucket.", + "type": "string" + } + }, + "required": [ + "EncryptionOption", + "BucketName" + ], + "type": "object" + } + }, + "type": "object" + } + }, + "required": [ + "EnableMagneticStoreWrites" + ], + "type": "object" + }, + "Name": { + "description": "The table name exposed as a read-only attribute.", + "type": "string" + }, + "RetentionProperties": { + "additionalProperties": false, + "description": "The retention duration of the memory store and the magnetic store.", + "properties": { + "MagneticStoreRetentionPeriodInDays": { + "description": "The duration for which data must be stored in the magnetic store.", + "type": "string" + }, + "MemoryStoreRetentionPeriodInHours": { + "description": "The duration for which data must be stored in the memory store.", + "type": "string" + } + }, + "type": "object" + }, + "Schema": { + "additionalProperties": false, + "description": "A Schema specifies the expected data model of the table.", + "properties": { + "CompositePartitionKey": { + "$ref": "#/definitions/PartitionKeyList" + } + }, + "type": "object" + }, + "TableName": { + "description": "The name for the table. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the table name.", + "pattern": "^[a-zA-Z0-9_.-]{3,256}$", + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Name" + ], + "required": [ + "DatabaseName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-timestream.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "timestream:TagResource", + "timestream:ListTagsForResource", + "timestream:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Timestream::Table" +} diff --git a/src/schema/aws-transfer-agreement.json b/src/schema/aws-transfer-agreement.json index 55c5ba6a..25062fe6 100644 --- a/src/schema/aws-transfer-agreement.json +++ b/src/schema/aws-transfer-agreement.json @@ -1,173 +1,232 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServerId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "Creates a key-value pair for a specific resource.", - "properties": { - "Key": { - "description": "The name assigned to the tag that you create.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "Contains one or more values that you assigned to the key name you create.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Transfer::Agreement", - "handlers": { - "create": { - "permissions": [ - "transfer:CreateAgreement", - "transfer:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "transfer:DeleteAgreement" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ServerId": { - "$ref": "resource-schema.json#/properties/ServerId" - } - }, - "required": [ - "ServerId" - ] - }, - "permissions": [ - "transfer:ListAgreements" - ] - }, - "read": { - "permissions": [ - "transfer:DescribeAgreement" - ] - }, - "update": { - "permissions": [ - "transfer:UpdateAgreement", - "transfer:UnTagResource", - "transfer:TagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/AgreementId", - "/properties/ServerId" - ], - "properties": { - "AccessRole": { - "description": "Specifies the access role for the agreement.", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:.*role/.*", - "type": "string" - }, - "AgreementId": { - "description": "A unique identifier for the agreement.", - "maxLength": 19, - "minLength": 19, - "pattern": "^a-([0-9a-f]{17})$", - "type": "string" - }, - "Arn": { - "description": "Specifies the unique Amazon Resource Name (ARN) for the agreement.", - "maxLength": 1600, - "minLength": 20, - "pattern": "arn:.*", - "type": "string" - }, - "BaseDirectory": { - "description": "Specifies the base directory for the agreement.", - "maxLength": 1024, - "pattern": "^(|/.*)$", - "type": "string" - }, - "Description": { - "description": "A textual description for the agreement.", - "maxLength": 200, - "minLength": 1, - "pattern": "^[\\u0021-\\u007E]+$", - "type": "string" - }, - "LocalProfileId": { - "description": "A unique identifier for the local profile.", - "maxLength": 19, - "minLength": 19, - "pattern": "^p-([0-9a-f]{17})$", - "type": "string" - }, - "PartnerProfileId": { - "description": "A unique identifier for the partner profile.", - "maxLength": 19, - "minLength": 19, - "pattern": "^p-([0-9a-f]{17})$", - "type": "string" - }, - "ServerId": { - "description": "A unique identifier for the server.", - "maxLength": 19, - "minLength": 19, - "pattern": "^s-([0-9a-f]{17})$", - "type": "string" - }, - "Status": { - "description": "Specifies the status of the agreement.", - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "type": "string" - }, - "Tags": { - "description": "Key-value pairs that can be used to group and search for agreements. Tags are metadata attached to agreements for any purpose.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/AgreementId", - "/properties/Arn" - ], - "required": [ - "ServerId", - "LocalProfileId", - "PartnerProfileId", - "BaseDirectory", - "AccessRole" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transfer", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Transfer::Agreement" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServerId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "Creates a key-value pair for a specific resource.", + "properties": { + "Key": { + "description": "The name assigned to the tag that you create.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Contains one or more values that you assigned to the key name you create.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Transfer::Agreement", + "handlers": { + "create": { + "permissions": [ + "transfer:CreateAgreement", + "transfer:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "transfer:DeleteAgreement" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ServerId": { + "$ref": "resource-schema.json#/properties/ServerId" + } + }, + "required": [ + "ServerId" + ] + }, + "permissions": [ + "transfer:ListAgreements" + ] + }, + "read": { + "permissions": [ + "transfer:DescribeAgreement" + ] + }, + "update": { + "permissions": [ + "transfer:UpdateAgreement", + "transfer:UnTagResource", + "transfer:TagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/AgreementId", + "/properties/ServerId" + ], + "properties": { + "AccessRole": { + "description": "Specifies the access role for the agreement.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:.*role/.*", + "type": "string" + }, + "AgreementId": { + "description": "A unique identifier for the agreement.", + "maxLength": 19, + "minLength": 19, + "pattern": "^a-([0-9a-f]{17})$", + "type": "string" + }, + "Arn": { + "description": "Specifies the unique Amazon Resource Name (ARN) for the agreement.", + "maxLength": 1600, + "minLength": 20, + "pattern": "arn:.*", + "type": "string" + }, + "BaseDirectory": { + "description": "Specifies the base directory for the agreement.", + "maxLength": 1024, + "pattern": "^(|/.*)$", + "type": "string" + }, + "CustomDirectories": { + "additionalProperties": false, + "description": "Specifies a separate directory for each type of file to store for an AS2 message.", + "properties": { + "FailedFilesDirectory": { + "description": "Specifies a location to store the failed files for an AS2 message.", + "pattern": "(|/.*)", + "type": "string" + }, + "MdnFilesDirectory": { + "description": "Specifies a location to store the MDN file for an AS2 message.", + "pattern": "(|/.*)", + "type": "string" + }, + "PayloadFilesDirectory": { + "description": "Specifies a location to store the payload file for an AS2 message.", + "pattern": "(|/.*)", + "type": "string" + }, + "StatusFilesDirectory": { + "description": "Specifies a location to store the status file for an AS2 message.", + "pattern": "(|/.*)", + "type": "string" + }, + "TemporaryFilesDirectory": { + "description": "Specifies a location to store the temporary processing file for an AS2 message.", + "pattern": "(|/.*)", + "type": "string" + } + }, + "required": [ + "FailedFilesDirectory", + "MdnFilesDirectory", + "PayloadFilesDirectory", + "StatusFilesDirectory", + "TemporaryFilesDirectory" + ], + "type": "object" + }, + "Description": { + "description": "A textual description for the agreement.", + "maxLength": 200, + "minLength": 1, + "pattern": "^[\\u0021-\\u007E]+$", + "type": "string" + }, + "EnforceMessageSigning": { + "description": "Specifies whether to enforce an AS2 message is signed for this agreement.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "LocalProfileId": { + "description": "A unique identifier for the local profile.", + "maxLength": 19, + "minLength": 19, + "pattern": "^p-([0-9a-f]{17})$", + "type": "string" + }, + "PartnerProfileId": { + "description": "A unique identifier for the partner profile.", + "maxLength": 19, + "minLength": 19, + "pattern": "^p-([0-9a-f]{17})$", + "type": "string" + }, + "PreserveFilename": { + "description": "Specifies whether to preserve the filename received for this agreement.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "ServerId": { + "description": "A unique identifier for the server.", + "maxLength": 19, + "minLength": 19, + "pattern": "^s-([0-9a-f]{17})$", + "type": "string" + }, + "Status": { + "description": "Specifies the status of the agreement.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "type": "string" + }, + "Tags": { + "description": "Key-value pairs that can be used to group and search for agreements. Tags are metadata attached to agreements for any purpose.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/AgreementId", + "/properties/Arn" + ], + "required": [ + "ServerId", + "LocalProfileId", + "PartnerProfileId", + "AccessRole" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transfer", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "transfer:ListTagsForResource", + "transfer:UnTagResource", + "transfer:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Transfer::Agreement" +} diff --git a/src/schema/aws-transfer-certificate.json b/src/schema/aws-transfer-certificate.json index d5821efc..28c73c20 100644 --- a/src/schema/aws-transfer-certificate.json +++ b/src/schema/aws-transfer-certificate.json @@ -1,194 +1,199 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Certificate", - "/properties/CertificateChain", - "/properties/PrivateKey" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Transfer::Certificate", - "handlers": { - "create": { - "permissions": [ - "transfer:ImportCertificate", - "transfer:TagResource" - ] - }, - "delete": { - "permissions": [ - "transfer:DeleteCertificate" - ] - }, - "list": { - "permissions": [ - "transfer:ListCertificates" - ] - }, - "read": { - "permissions": [ - "transfer:DescribeCertificate" - ] - }, - "update": { - "permissions": [ - "transfer:UpdateCertificate", - "transfer:UnTagResource", - "transfer:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/CertificateId" - ], - "properties": { - "ActiveDate": { - "description": "Specifies the active date for the certificate.", - "type": "string" - }, - "Arn": { - "description": "Specifies the unique Amazon Resource Name (ARN) for the agreement.", - "maxLength": 1600, - "minLength": 20, - "pattern": "arn:.*", - "type": "string" - }, - "Certificate": { - "description": "Specifies the certificate body to be imported.", - "maxLength": 16384, - "minLength": 1, - "pattern": "^[\\t\\n\\r\\u0020-\\u00FF]+$", - "type": "string" - }, - "CertificateChain": { - "description": "Specifies the certificate chain to be imported.", - "maxLength": 2097152, - "minLength": 1, - "pattern": "^[\\t\\n\\r\\u0020-\\u00FF]+$", - "type": "string" - }, - "CertificateId": { - "description": "A unique identifier for the certificate.", - "maxLength": 22, - "minLength": 22, - "pattern": "^cert-([0-9a-f]{17})$", - "type": "string" - }, - "Description": { - "description": "A textual description for the certificate.", - "maxLength": 200, - "minLength": 1, - "pattern": "^[\\u0021-\\u007E]+$", - "type": "string" - }, - "InactiveDate": { - "description": "Specifies the inactive date for the certificate.", - "type": "string" - }, - "NotAfterDate": { - "description": "Specifies the not after date for the certificate.", - "type": "string" - }, - "NotBeforeDate": { - "description": "Specifies the not before date for the certificate.", - "type": "string" - }, - "PrivateKey": { - "description": "Specifies the private key for the certificate.", - "maxLength": 16384, - "minLength": 1, - "pattern": "^[\\t\\n\\r\\u0020-\\u00FF]+$", - "type": "string" - }, - "Serial": { - "description": "Specifies Certificate's serial.", - "maxLength": 48, - "minLength": 0, - "pattern": "^[0-9a-fA-F{}:?]*$", - "type": "string" - }, - "Status": { - "description": "A status description for the certificate.", - "enum": [ - "ACTIVE", - "PENDING", - "INACTIVE" - ], - "type": "string" - }, - "Tags": { - "description": "Key-value pairs that can be used to group and search for certificates. Tags are metadata attached to certificates for any purpose.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "Type": { - "description": "Describing the type of certificate. With or without a private key.", - "enum": [ - "CERTIFICATE", - "CERTIFICATE_WITH_PRIVATE_KEY" - ], - "type": "string" - }, - "Usage": { - "description": "Specifies the usage type for the certificate.", - "enum": [ - "SIGNING", - "ENCRYPTION", - "TLS" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CertificateId", - "/properties/Status", - "/properties/Type", - "/properties/Serial", - "/properties/NotAfterDate", - "/properties/NotBeforeDate" - ], - "required": [ - "Certificate", - "Usage" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Transfer::Certificate", - "writeOnlyProperties": [ - "/properties/PrivateKey" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Certificate", + "/properties/CertificateChain", + "/properties/PrivateKey" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Transfer::Certificate", + "handlers": { + "create": { + "permissions": [ + "transfer:ImportCertificate", + "transfer:TagResource" + ] + }, + "delete": { + "permissions": [ + "transfer:DeleteCertificate" + ] + }, + "list": { + "permissions": [ + "transfer:ListCertificates" + ] + }, + "read": { + "permissions": [ + "transfer:DescribeCertificate" + ] + }, + "update": { + "permissions": [ + "transfer:UpdateCertificate", + "transfer:UnTagResource", + "transfer:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/CertificateId" + ], + "properties": { + "ActiveDate": { + "description": "Specifies the active date for the certificate.", + "type": "string" + }, + "Arn": { + "description": "Specifies the unique Amazon Resource Name (ARN) for the agreement.", + "maxLength": 1600, + "minLength": 20, + "pattern": "arn:.*", + "type": "string" + }, + "Certificate": { + "description": "Specifies the certificate body to be imported.", + "maxLength": 16384, + "minLength": 1, + "pattern": "^[\\t\\n\\r\\u0020-\\u00FF]+$", + "type": "string" + }, + "CertificateChain": { + "description": "Specifies the certificate chain to be imported.", + "maxLength": 2097152, + "minLength": 1, + "pattern": "^[\\t\\n\\r\\u0020-\\u00FF]+$", + "type": "string" + }, + "CertificateId": { + "description": "A unique identifier for the certificate.", + "maxLength": 22, + "minLength": 22, + "pattern": "^cert-([0-9a-f]{17})$", + "type": "string" + }, + "Description": { + "description": "A textual description for the certificate.", + "maxLength": 200, + "minLength": 1, + "pattern": "^[\\u0021-\\u007E]+$", + "type": "string" + }, + "InactiveDate": { + "description": "Specifies the inactive date for the certificate.", + "type": "string" + }, + "NotAfterDate": { + "description": "Specifies the not after date for the certificate.", + "type": "string" + }, + "NotBeforeDate": { + "description": "Specifies the not before date for the certificate.", + "type": "string" + }, + "PrivateKey": { + "description": "Specifies the private key for the certificate.", + "maxLength": 16384, + "minLength": 1, + "pattern": "^[\\t\\n\\r\\u0020-\\u00FF]+$", + "type": "string" + }, + "Serial": { + "description": "Specifies Certificate's serial.", + "maxLength": 48, + "minLength": 0, + "pattern": "^[0-9a-fA-F{}:?]*$", + "type": "string" + }, + "Status": { + "description": "A status description for the certificate.", + "enum": [ + "ACTIVE", + "PENDING", + "INACTIVE" + ], + "type": "string" + }, + "Tags": { + "description": "Key-value pairs that can be used to group and search for certificates. Tags are metadata attached to certificates for any purpose.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "Type": { + "description": "Describing the type of certificate. With or without a private key.", + "enum": [ + "CERTIFICATE", + "CERTIFICATE_WITH_PRIVATE_KEY" + ], + "type": "string" + }, + "Usage": { + "description": "Specifies the usage type for the certificate.", + "enum": [ + "SIGNING", + "ENCRYPTION", + "TLS" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateId", + "/properties/Status", + "/properties/Type", + "/properties/Serial", + "/properties/NotAfterDate", + "/properties/NotBeforeDate" + ], + "required": [ + "Certificate", + "Usage" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "transfer:ListTagsForResource", + "transfer:UnTagResource", + "transfer:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Transfer::Certificate", + "writeOnlyProperties": [ + "/properties/PrivateKey" + ] +} diff --git a/src/schema/aws-transfer-connector.json b/src/schema/aws-transfer-connector.json index 285ea2ed..3b3fc17e 100644 --- a/src/schema/aws-transfer-connector.json +++ b/src/schema/aws-transfer-connector.json @@ -1,254 +1,267 @@ -{ - "additionalProperties": false, - "definitions": { - "SftpConnectorTrustedHostKey": { - "description": "The public host key for the external server to which you are connecting.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "Creates a key-value pair for a specific resource.", - "properties": { - "Key": { - "description": "The name assigned to the tag that you create.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "Contains one or more values that you assigned to the key name you create.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Transfer::Connector", - "handlers": { - "create": { - "permissions": [ - "transfer:CreateConnector", - "transfer:TagResource", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "transfer:DeleteConnector" - ] - }, - "list": { - "permissions": [ - "transfer:ListConnectors" - ] - }, - "read": { - "permissions": [ - "transfer:DescribeConnector" - ] - }, - "update": { - "permissions": [ - "transfer:UpdateConnector", - "transfer:UnTagResource", - "transfer:TagResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConnectorId" - ], - "properties": { - "AccessRole": { - "description": "Specifies the access role for the connector.", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:.*role/.*", - "type": "string" - }, - "Arn": { - "description": "Specifies the unique Amazon Resource Name (ARN) for the connector.", - "maxLength": 1600, - "minLength": 20, - "pattern": "arn:.*", - "type": "string" - }, - "As2Config": { - "additionalProperties": false, - "description": "Configuration for an AS2 connector.", - "properties": { - "BasicAuthSecretId": { - "description": "ARN or name of the secret in AWS Secrets Manager which contains the credentials for Basic authentication. If empty, Basic authentication is disabled for the AS2 connector", - "maxLength": 2048, - "minLength": 0, - "type": "string" - }, - "Compression": { - "description": "Compression setting for this AS2 connector configuration.", - "enum": [ - "ZLIB", - "DISABLED" - ], - "type": "string" - }, - "EncryptionAlgorithm": { - "description": "Encryption algorithm for this AS2 connector configuration.", - "enum": [ - "AES128_CBC", - "AES192_CBC", - "AES256_CBC", - "NONE", - "DES_EDE3_CBC" - ], - "type": "string" - }, - "LocalProfileId": { - "description": "A unique identifier for the local profile.", - "maxLength": 19, - "minLength": 19, - "pattern": "^p-([0-9a-f]{17})$", - "type": "string" - }, - "MdnResponse": { - "description": "MDN Response setting for this AS2 connector configuration.", - "enum": [ - "SYNC", - "NONE" - ], - "type": "string" - }, - "MdnSigningAlgorithm": { - "description": "MDN Signing algorithm for this AS2 connector configuration.", - "enum": [ - "SHA256", - "SHA384", - "SHA512", - "SHA1", - "NONE", - "DEFAULT" - ], - "type": "string" - }, - "MessageSubject": { - "description": "The message subject for this AS2 connector configuration.", - "maxLength": 1024, - "minLength": 1, - "pattern": "^[\\u0020-\\u007E\\t]+$", - "type": "string" - }, - "PartnerProfileId": { - "description": "A unique identifier for the partner profile.", - "maxLength": 19, - "minLength": 19, - "pattern": "^p-([0-9a-f]{17})$", - "type": "string" - }, - "SigningAlgorithm": { - "description": "Signing algorithm for this AS2 connector configuration.", - "enum": [ - "SHA256", - "SHA384", - "SHA512", - "SHA1", - "NONE" - ], - "type": "string" - } - }, - "type": "object" - }, - "ConnectorId": { - "description": "A unique identifier for the connector.", - "maxLength": 19, - "minLength": 19, - "pattern": "^c-([0-9a-f]{17})$", - "type": "string" - }, - "LoggingRole": { - "description": "Specifies the logging role for the connector.", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:.*role/.*", - "type": "string" - }, - "SecurityPolicyName": { - "description": "Security policy for SFTP Connector", - "maxLength": 50, - "pattern": "TransferSFTPConnectorSecurityPolicy-[A-Za-z0-9-]+", - "type": "string" - }, - "ServiceManagedEgressIpAddresses": { - "description": "The list of egress IP addresses of this connector. These IP addresses are assigned automatically when you create the connector.", - "insertionOrder": false, - "items": { - "pattern": "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$", - "type": "string" - }, - "type": "array" - }, - "SftpConfig": { - "additionalProperties": false, - "description": "Configuration for an SFTP connector.", - "properties": { - "TrustedHostKeys": { - "description": "List of public host keys, for the external server to which you are connecting.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SftpConnectorTrustedHostKey" - }, - "maxItems": 10, - "type": "array", - "uniqueItems": false - }, - "UserSecretId": { - "description": "ARN or name of the secret in AWS Secrets Manager which contains the SFTP user's private keys or passwords.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "Tags": { - "description": "Key-value pairs that can be used to group and search for connectors. Tags are metadata attached to connectors for any purpose.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "Url": { - "description": "URL for Connector", - "maxLength": 255, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/ConnectorId", - "/properties/ServiceManagedEgressIpAddresses" - ], - "required": [ - "AccessRole", - "Url" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Transfer::Connector" -} +{ + "additionalProperties": false, + "definitions": { + "SftpConnectorTrustedHostKey": { + "description": "The public host key for the external server to which you are connecting.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "Creates a key-value pair for a specific resource.", + "properties": { + "Key": { + "description": "The name assigned to the tag that you create.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Contains one or more values that you assigned to the key name you create.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Transfer::Connector", + "handlers": { + "create": { + "permissions": [ + "transfer:CreateConnector", + "transfer:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "transfer:DeleteConnector" + ] + }, + "list": { + "permissions": [ + "transfer:ListConnectors" + ] + }, + "read": { + "permissions": [ + "transfer:DescribeConnector" + ] + }, + "update": { + "permissions": [ + "transfer:UpdateConnector", + "transfer:UnTagResource", + "transfer:TagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConnectorId" + ], + "properties": { + "AccessRole": { + "description": "Specifies the access role for the connector.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:.*role/.*", + "type": "string" + }, + "Arn": { + "description": "Specifies the unique Amazon Resource Name (ARN) for the connector.", + "maxLength": 1600, + "minLength": 20, + "pattern": "arn:.*", + "type": "string" + }, + "As2Config": { + "additionalProperties": false, + "description": "Configuration for an AS2 connector.", + "properties": { + "BasicAuthSecretId": { + "description": "ARN or name of the secret in AWS Secrets Manager which contains the credentials for Basic authentication. If empty, Basic authentication is disabled for the AS2 connector", + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "Compression": { + "description": "Compression setting for this AS2 connector configuration.", + "enum": [ + "ZLIB", + "DISABLED" + ], + "type": "string" + }, + "EncryptionAlgorithm": { + "description": "Encryption algorithm for this AS2 connector configuration.", + "enum": [ + "AES128_CBC", + "AES192_CBC", + "AES256_CBC", + "NONE", + "DES_EDE3_CBC" + ], + "type": "string" + }, + "LocalProfileId": { + "description": "A unique identifier for the local profile.", + "maxLength": 19, + "minLength": 19, + "pattern": "^p-([0-9a-f]{17})$", + "type": "string" + }, + "MdnResponse": { + "description": "MDN Response setting for this AS2 connector configuration.", + "enum": [ + "SYNC", + "NONE" + ], + "type": "string" + }, + "MdnSigningAlgorithm": { + "description": "MDN Signing algorithm for this AS2 connector configuration.", + "enum": [ + "SHA256", + "SHA384", + "SHA512", + "SHA1", + "NONE", + "DEFAULT" + ], + "type": "string" + }, + "MessageSubject": { + "description": "The message subject for this AS2 connector configuration.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[\\u0020-\\u007E\\t]+$", + "type": "string" + }, + "PartnerProfileId": { + "description": "A unique identifier for the partner profile.", + "maxLength": 19, + "minLength": 19, + "pattern": "^p-([0-9a-f]{17})$", + "type": "string" + }, + "PreserveContentType": { + "description": "Specifies whether to use the AWS S3 object content-type as the content-type for the AS2 message.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "SigningAlgorithm": { + "description": "Signing algorithm for this AS2 connector configuration.", + "enum": [ + "SHA256", + "SHA384", + "SHA512", + "SHA1", + "NONE" + ], + "type": "string" + } + }, + "type": "object" + }, + "ConnectorId": { + "description": "A unique identifier for the connector.", + "maxLength": 19, + "minLength": 19, + "pattern": "^c-([0-9a-f]{17})$", + "type": "string" + }, + "LoggingRole": { + "description": "Specifies the logging role for the connector.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:.*role/.*", + "type": "string" + }, + "SecurityPolicyName": { + "description": "Security policy for SFTP Connector", + "maxLength": 50, + "pattern": "TransferSFTPConnectorSecurityPolicy-[A-Za-z0-9-]+", + "type": "string" + }, + "ServiceManagedEgressIpAddresses": { + "description": "The list of egress IP addresses of this connector. These IP addresses are assigned automatically when you create the connector.", + "insertionOrder": false, + "items": { + "pattern": "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$", + "type": "string" + }, + "type": "array" + }, + "SftpConfig": { + "additionalProperties": false, + "description": "Configuration for an SFTP connector.", + "properties": { + "TrustedHostKeys": { + "description": "List of public host keys, for the external server to which you are connecting.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SftpConnectorTrustedHostKey" + }, + "maxItems": 10, + "type": "array", + "uniqueItems": false + }, + "UserSecretId": { + "description": "ARN or name of the secret in AWS Secrets Manager which contains the SFTP user's private keys or passwords.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "Tags": { + "description": "Key-value pairs that can be used to group and search for connectors. Tags are metadata attached to connectors for any purpose.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "Url": { + "description": "URL for Connector", + "maxLength": 255, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ConnectorId", + "/properties/ServiceManagedEgressIpAddresses" + ], + "required": [ + "AccessRole", + "Url" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "transfer:ListTagsForResource", + "transfer:UnTagResource", + "transfer:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Transfer::Connector" +} diff --git a/src/schema/aws-transfer-profile.json b/src/schema/aws-transfer-profile.json index fcdf5cd9..b27fc2df 100644 --- a/src/schema/aws-transfer-profile.json +++ b/src/schema/aws-transfer-profile.json @@ -1,137 +1,142 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProfileType" - ], - "definitions": { - "CertificateId": { - "description": "A unique identifier for the certificate.", - "maxLength": 22, - "minLength": 22, - "pattern": "^cert-([0-9a-f]{17})$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "description": "Creates a key-value pair for a specific resource.", - "properties": { - "Key": { - "description": "The name assigned to the tag that you create.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "Contains one or more values that you assigned to the key name you create.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Transfer::Profile", - "handlers": { - "create": { - "permissions": [ - "transfer:CreateProfile", - "transfer:TagResource" - ] - }, - "delete": { - "permissions": [ - "transfer:DeleteProfile" - ] - }, - "list": { - "permissions": [ - "transfer:ListProfiles" - ] - }, - "read": { - "permissions": [ - "transfer:DescribeProfile" - ] - }, - "update": { - "permissions": [ - "transfer:UpdateProfile", - "transfer:UnTagResource", - "transfer:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/ProfileId" - ], - "properties": { - "Arn": { - "description": "Specifies the unique Amazon Resource Name (ARN) for the profile.", - "maxLength": 1600, - "minLength": 20, - "pattern": "arn:.*", - "type": "string" - }, - "As2Id": { - "description": "AS2 identifier agreed with a trading partner.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[\\u0020-\\u007E\\s]*$", - "type": "string" - }, - "CertificateIds": { - "description": "List of the certificate IDs associated with this profile to be used for encryption and signing of AS2 messages.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CertificateId" - }, - "type": "array" - }, - "ProfileId": { - "description": "A unique identifier for the profile", - "maxLength": 19, - "minLength": 19, - "pattern": "^p-([0-9a-f]{17})$", - "type": "string" - }, - "ProfileType": { - "description": "Enum specifying whether the profile is local or associated with a trading partner.", - "enum": [ - "LOCAL", - "PARTNER" - ], - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/ProfileId" - ], - "required": [ - "As2Id", - "ProfileType" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Transfer::Profile" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ProfileType" + ], + "definitions": { + "CertificateId": { + "description": "A unique identifier for the certificate.", + "maxLength": 22, + "minLength": 22, + "pattern": "^cert-([0-9a-f]{17})$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "description": "Creates a key-value pair for a specific resource.", + "properties": { + "Key": { + "description": "The name assigned to the tag that you create.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Contains one or more values that you assigned to the key name you create.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Transfer::Profile", + "handlers": { + "create": { + "permissions": [ + "transfer:CreateProfile", + "transfer:TagResource" + ] + }, + "delete": { + "permissions": [ + "transfer:DeleteProfile" + ] + }, + "list": { + "permissions": [ + "transfer:ListProfiles" + ] + }, + "read": { + "permissions": [ + "transfer:DescribeProfile" + ] + }, + "update": { + "permissions": [ + "transfer:UpdateProfile", + "transfer:UnTagResource", + "transfer:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ProfileId" + ], + "properties": { + "Arn": { + "description": "Specifies the unique Amazon Resource Name (ARN) for the profile.", + "maxLength": 1600, + "minLength": 20, + "pattern": "arn:.*", + "type": "string" + }, + "As2Id": { + "description": "AS2 identifier agreed with a trading partner.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\u0020-\\u007E\\s]*$", + "type": "string" + }, + "CertificateIds": { + "description": "List of the certificate IDs associated with this profile to be used for encryption and signing of AS2 messages.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CertificateId" + }, + "type": "array" + }, + "ProfileId": { + "description": "A unique identifier for the profile", + "maxLength": 19, + "minLength": 19, + "pattern": "^p-([0-9a-f]{17})$", + "type": "string" + }, + "ProfileType": { + "description": "Enum specifying whether the profile is local or associated with a trading partner.", + "enum": [ + "LOCAL", + "PARTNER" + ], + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/ProfileId" + ], + "required": [ + "As2Id", + "ProfileType" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "transfer:ListTagsForResource", + "transfer:UnTagResource", + "transfer:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Transfer::Profile" +} diff --git a/src/schema/aws-transfer-server.json b/src/schema/aws-transfer-server.json index 2f4b1109..b76dc981 100644 --- a/src/schema/aws-transfer-server.json +++ b/src/schema/aws-transfer-server.json @@ -1,476 +1,491 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ServerId" - ] - ], - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/EndpointDetails", - "/properties/EndpointDetails/AddressAllocationIds" - ], - "createOnlyProperties": [ - "/properties/Domain", - "/properties/IdentityProviderType" - ], - "definitions": { - "As2Transport": { - "enum": [ - "HTTP" - ], - "type": "string" - }, - "DirectoryListingOptimization": { - "description": "Indicates whether optimization to directory listing on S3 servers is used. Disabled by default for compatibility.", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "Domain": { - "enum": [ - "S3", - "EFS" - ], - "type": "string" - }, - "EndpointDetails": { - "additionalProperties": false, - "properties": { - "AddressAllocationIds": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "SecurityGroupIds": { - "insertionOrder": false, - "items": { - "maxLength": 20, - "minLength": 11, - "pattern": "^sg-[0-9a-f]{8,17}$", - "type": "string" - }, - "type": "array" - }, - "SubnetIds": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" - }, - "VpcEndpointId": { - "maxLength": 22, - "minLength": 22, - "pattern": "^vpce-[0-9a-f]{17}$", - "type": "string" - }, - "VpcId": { - "type": "string" - } - }, - "type": "object" - }, - "EndpointType": { - "enum": [ - "PUBLIC", - "VPC", - "VPC_ENDPOINT" - ], - "type": "string" - }, - "IdentityProviderDetails": { - "additionalProperties": false, - "properties": { - "DirectoryId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^d-[0-9a-f]{10}$", - "type": "string" - }, - "Function": { - "maxLength": 170, - "minLength": 1, - "pattern": "^arn:[a-z-]+:lambda:.*$", - "type": "string" - }, - "InvocationRole": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:.*role/\\S+$", - "type": "string" - }, - "SftpAuthenticationMethods": { - "$ref": "#/definitions/SftpAuthenticationMethods" - }, - "Url": { - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "IdentityProviderType": { - "enum": [ - "SERVICE_MANAGED", - "API_GATEWAY", - "AWS_DIRECTORY_SERVICE", - "AWS_LAMBDA" - ], - "type": "string" - }, - "Protocol": { - "enum": [ - "SFTP", - "FTP", - "FTPS", - "AS2" - ], - "type": "string" - }, - "ProtocolDetails": { - "additionalProperties": false, - "properties": { - "As2Transports": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/As2Transport" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "PassiveIp": { - "maxLength": 15, - "minLength": 0, - "type": "string" - }, - "SetStatOption": { - "$ref": "#/definitions/SetStatOption" - }, - "TlsSessionResumptionMode": { - "$ref": "#/definitions/TlsSessionResumptionMode" - } - }, - "type": "object" - }, - "S3StorageOptions": { - "additionalProperties": false, - "properties": { - "DirectoryListingOptimization": { - "$ref": "#/definitions/DirectoryListingOptimization" - } - }, - "type": "object" - }, - "SetStatOption": { - "enum": [ - "DEFAULT", - "ENABLE_NO_OP" - ], - "type": "string" - }, - "SftpAuthenticationMethods": { - "enum": [ - "PASSWORD", - "PUBLIC_KEY", - "PUBLIC_KEY_OR_PASSWORD", - "PUBLIC_KEY_AND_PASSWORD" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 0, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TlsSessionResumptionMode": { - "enum": [ - "DISABLED", - "ENABLED", - "ENFORCED" - ], - "type": "string" - }, - "WorkflowDetail": { - "additionalProperties": false, - "properties": { - "ExecutionRole": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:.*role/\\S+$", - "type": "string" - }, - "WorkflowId": { - "maxLength": 19, - "minLength": 19, - "pattern": "^w-([a-z0-9]{17})$", - "type": "string" - } - }, - "required": [ - "ExecutionRole", - "WorkflowId" - ], - "type": "object" - }, - "WorkflowDetails": { - "additionalProperties": false, - "properties": { - "OnPartialUpload": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/WorkflowDetail" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "OnUpload": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/WorkflowDetail" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - } - }, - "type": "object" - } - }, - "description": "Definition of AWS::Transfer::Server Resource Type", - "handlers": { - "create": { - "permissions": [ - "apigateway:GET", - "ds:AuthorizeApplication", - "ds:DescribeDirectories", - "ec2:AssociateAddress", - "ec2:CreateVpcEndpoint", - "ec2:DescribeAddresses", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeVpcEndpoints", - "iam:PassRole", - "logs:CreateLogDelivery", - "logs:DeleteLogDelivery", - "logs:DescribeLogGroups", - "logs:DescribeResourcePolicies", - "logs:GetLogDelivery", - "logs:ListLogDeliveries", - "logs:PutResourcePolicy", - "logs:UpdateLogDelivery", - "transfer:CreateServer", - "transfer:DescribeServer", - "transfer:StartServer", - "transfer:StopServer", - "transfer:TagResource", - "transfer:UpdateServer" - ] - }, - "delete": { - "permissions": [ - "ds:DescribeDirectories", - "ds:UnauthorizeApplication", - "ec2:DeleteVpcEndpoints", - "ec2:DescribeAddresses", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeVpcEndpoints", - "ec2:DisassociateAddress", - "logs:DeleteLogDelivery", - "logs:GetLogDelivery", - "logs:ListLogDeliveries", - "transfer:DeleteServer" - ] - }, - "list": { - "permissions": [ - "transfer:ListServers" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeVpcEndpoints", - "transfer:DescribeServer" - ] - }, - "update": { - "permissions": [ - "apigateway:GET", - "ec2:AssociateAddress", - "ec2:CreateVpcEndpoint", - "ec2:DeleteVpcEndpoints", - "ec2:DescribeAddresses", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeVpcEndpoints", - "ec2:DisassociateAddress", - "ec2:ModifyVpcEndpoint", - "iam:PassRole", - "logs:CreateLogDelivery", - "logs:DeleteLogDelivery", - "logs:DescribeLogGroups", - "logs:DescribeResourcePolicies", - "logs:GetLogDelivery", - "logs:ListLogDeliveries", - "logs:PutResourcePolicy", - "logs:UpdateLogDelivery", - "transfer:DescribeServer", - "transfer:StartServer", - "transfer:StopServer", - "transfer:TagResource", - "transfer:UnTagResource", - "transfer:UpdateServer" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 1600, - "minLength": 20, - "pattern": "^arn:\\S+$", - "type": "string" - }, - "As2ServiceManagedEgressIpAddresses": { - "description": "The list of egress IP addresses of this server. These IP addresses are only relevant for servers that use the AS2 protocol. They are used for sending asynchronous MDNs. These IP addresses are assigned automatically when you create an AS2 server. Additionally, if you update an existing server and add the AS2 protocol, static IP addresses are assigned as well.", - "insertionOrder": false, - "items": { - "pattern": "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$", - "type": "string" - }, - "type": "array" - }, - "Certificate": { - "maxLength": 1600, - "minLength": 0, - "type": "string" - }, - "Domain": { - "$ref": "#/definitions/Domain" - }, - "EndpointDetails": { - "$ref": "#/definitions/EndpointDetails" - }, - "EndpointType": { - "$ref": "#/definitions/EndpointType" - }, - "IdentityProviderDetails": { - "$ref": "#/definitions/IdentityProviderDetails" - }, - "IdentityProviderType": { - "$ref": "#/definitions/IdentityProviderType" - }, - "LoggingRole": { - "maxLength": 2048, - "minLength": 0, - "pattern": "^(|arn:.*role/\\S+)$", - "type": "string" - }, - "PostAuthenticationLoginBanner": { - "maxLength": 4096, - "minLength": 0, - "pattern": "^[\\x09-\\x0D\\x20-\\x7E]*$", - "type": "string" - }, - "PreAuthenticationLoginBanner": { - "maxLength": 4096, - "minLength": 0, - "pattern": "^[\\x09-\\x0D\\x20-\\x7E]*$", - "type": "string" - }, - "ProtocolDetails": { - "$ref": "#/definitions/ProtocolDetails" - }, - "Protocols": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Protocol" - }, - "maxItems": 4, - "minItems": 1, - "type": "array" - }, - "S3StorageOptions": { - "$ref": "#/definitions/S3StorageOptions" - }, - "SecurityPolicyName": { - "maxLength": 100, - "minLength": 0, - "pattern": "^TransferSecurityPolicy-.+$", - "type": "string" - }, - "ServerId": { - "maxLength": 19, - "minLength": 19, - "pattern": "^s-([0-9a-f]{17})$", - "type": "string" - }, - "StructuredLogDestinations": { - "insertionOrder": false, - "items": { - "maxLength": 1600, - "minLength": 20, - "pattern": "^arn:\\S+$", - "type": "string" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - }, - "WorkflowDetails": { - "$ref": "#/definitions/WorkflowDetails" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/As2ServiceManagedEgressIpAddresses", - "/properties/ServerId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transfer", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "transfer:TagResource", - "transfer:UnTagResource", - "transfer:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Transfer::Server", - "writeOnlyProperties": [ - "/properties/IdentityProviderType" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/ServerId" + ] + ], + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/EndpointDetails", + "/properties/EndpointDetails/AddressAllocationIds" + ], + "createOnlyProperties": [ + "/properties/Domain", + "/properties/IdentityProviderType" + ], + "definitions": { + "As2Transport": { + "enum": [ + "HTTP" + ], + "type": "string" + }, + "DirectoryListingOptimization": { + "description": "Indicates whether optimization to directory listing on S3 servers is used. Disabled by default for compatibility.", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "Domain": { + "enum": [ + "S3", + "EFS" + ], + "type": "string" + }, + "EndpointDetails": { + "additionalProperties": false, + "properties": { + "AddressAllocationIds": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 20, + "minLength": 11, + "pattern": "^sg-[0-9a-f]{8,17}$", + "type": "string" + }, + "type": "array" + }, + "SubnetIds": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "VpcEndpointId": { + "maxLength": 22, + "minLength": 22, + "pattern": "^vpce-[0-9a-f]{17}$", + "type": "string" + }, + "VpcId": { + "type": "string" + } + }, + "type": "object" + }, + "EndpointType": { + "enum": [ + "PUBLIC", + "VPC", + "VPC_ENDPOINT" + ], + "type": "string" + }, + "IdentityProviderDetails": { + "additionalProperties": false, + "properties": { + "DirectoryId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^d-[0-9a-f]{10}$", + "type": "string" + }, + "Function": { + "maxLength": 170, + "minLength": 1, + "pattern": "^arn:[a-z-]+:lambda:.*$", + "type": "string" + }, + "InvocationRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:.*role/\\S+$", + "type": "string" + }, + "SftpAuthenticationMethods": { + "$ref": "#/definitions/SftpAuthenticationMethods" + }, + "Url": { + "maxLength": 255, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "IdentityProviderType": { + "enum": [ + "SERVICE_MANAGED", + "API_GATEWAY", + "AWS_DIRECTORY_SERVICE", + "AWS_LAMBDA" + ], + "type": "string" + }, + "Protocol": { + "enum": [ + "SFTP", + "FTP", + "FTPS", + "AS2" + ], + "type": "string" + }, + "ProtocolDetails": { + "additionalProperties": false, + "properties": { + "As2Transports": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/As2Transport" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "PassiveIp": { + "maxLength": 15, + "minLength": 0, + "type": "string" + }, + "SetStatOption": { + "$ref": "#/definitions/SetStatOption" + }, + "TlsSessionResumptionMode": { + "$ref": "#/definitions/TlsSessionResumptionMode" + } + }, + "type": "object" + }, + "S3StorageOptions": { + "additionalProperties": false, + "properties": { + "DirectoryListingOptimization": { + "$ref": "#/definitions/DirectoryListingOptimization" + } + }, + "type": "object" + }, + "SetStatOption": { + "enum": [ + "DEFAULT", + "ENABLE_NO_OP" + ], + "type": "string" + }, + "SftpAuthenticationMethods": { + "enum": [ + "PASSWORD", + "PUBLIC_KEY", + "PUBLIC_KEY_OR_PASSWORD", + "PUBLIC_KEY_AND_PASSWORD" + ], + "type": "string" + }, + "State": { + "enum": [ + "OFFLINE", + "ONLINE", + "STARTING", + "STOPPING", + "START_FAILED", + "STOP_FAILED" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TlsSessionResumptionMode": { + "enum": [ + "DISABLED", + "ENABLED", + "ENFORCED" + ], + "type": "string" + }, + "WorkflowDetail": { + "additionalProperties": false, + "properties": { + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:.*role/\\S+$", + "type": "string" + }, + "WorkflowId": { + "maxLength": 19, + "minLength": 19, + "pattern": "^w-([a-z0-9]{17})$", + "type": "string" + } + }, + "required": [ + "ExecutionRole", + "WorkflowId" + ], + "type": "object" + }, + "WorkflowDetails": { + "additionalProperties": false, + "properties": { + "OnPartialUpload": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/WorkflowDetail" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "OnUpload": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/WorkflowDetail" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::Transfer::Server Resource Type", + "handlers": { + "create": { + "permissions": [ + "apigateway:GET", + "ds:AuthorizeApplication", + "ds:DescribeDirectories", + "ec2:AssociateAddress", + "ec2:CreateVpcEndpoint", + "ec2:DescribeAddresses", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeVpcEndpoints", + "iam:PassRole", + "logs:CreateLogDelivery", + "logs:DeleteLogDelivery", + "logs:DescribeLogGroups", + "logs:DescribeResourcePolicies", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "logs:PutResourcePolicy", + "logs:UpdateLogDelivery", + "transfer:CreateServer", + "transfer:DescribeServer", + "transfer:StartServer", + "transfer:StopServer", + "transfer:TagResource", + "transfer:UpdateServer" + ] + }, + "delete": { + "permissions": [ + "ds:DescribeDirectories", + "ds:UnauthorizeApplication", + "ec2:DeleteVpcEndpoints", + "ec2:DescribeAddresses", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeVpcEndpoints", + "ec2:DisassociateAddress", + "logs:DeleteLogDelivery", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "transfer:DeleteServer" + ] + }, + "list": { + "permissions": [ + "transfer:ListServers" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcEndpoints", + "transfer:DescribeServer" + ] + }, + "update": { + "permissions": [ + "apigateway:GET", + "ec2:AssociateAddress", + "ec2:CreateVpcEndpoint", + "ec2:DeleteVpcEndpoints", + "ec2:DescribeAddresses", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeVpcEndpoints", + "ec2:DisassociateAddress", + "ec2:ModifyVpcEndpoint", + "iam:PassRole", + "logs:CreateLogDelivery", + "logs:DeleteLogDelivery", + "logs:DescribeLogGroups", + "logs:DescribeResourcePolicies", + "logs:GetLogDelivery", + "logs:ListLogDeliveries", + "logs:PutResourcePolicy", + "logs:UpdateLogDelivery", + "transfer:DescribeServer", + "transfer:StartServer", + "transfer:StopServer", + "transfer:TagResource", + "transfer:UnTagResource", + "transfer:UpdateServer" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 1600, + "minLength": 20, + "pattern": "^arn:\\S+$", + "type": "string" + }, + "As2ServiceManagedEgressIpAddresses": { + "description": "The list of egress IP addresses of this server. These IP addresses are only relevant for servers that use the AS2 protocol. They are used for sending asynchronous MDNs. These IP addresses are assigned automatically when you create an AS2 server. Additionally, if you update an existing server and add the AS2 protocol, static IP addresses are assigned as well.", + "insertionOrder": false, + "items": { + "pattern": "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$", + "type": "string" + }, + "type": "array" + }, + "Certificate": { + "maxLength": 1600, + "minLength": 0, + "type": "string" + }, + "Domain": { + "$ref": "#/definitions/Domain" + }, + "EndpointDetails": { + "$ref": "#/definitions/EndpointDetails" + }, + "EndpointType": { + "$ref": "#/definitions/EndpointType" + }, + "IdentityProviderDetails": { + "$ref": "#/definitions/IdentityProviderDetails" + }, + "IdentityProviderType": { + "$ref": "#/definitions/IdentityProviderType" + }, + "LoggingRole": { + "maxLength": 2048, + "minLength": 0, + "pattern": "^(|arn:.*role/\\S+)$", + "type": "string" + }, + "PostAuthenticationLoginBanner": { + "maxLength": 4096, + "minLength": 0, + "pattern": "^[\\x09-\\x0D\\x20-\\x7E]*$", + "type": "string" + }, + "PreAuthenticationLoginBanner": { + "maxLength": 4096, + "minLength": 0, + "pattern": "^[\\x09-\\x0D\\x20-\\x7E]*$", + "type": "string" + }, + "ProtocolDetails": { + "$ref": "#/definitions/ProtocolDetails" + }, + "Protocols": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Protocol" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + }, + "S3StorageOptions": { + "$ref": "#/definitions/S3StorageOptions" + }, + "SecurityPolicyName": { + "maxLength": 100, + "minLength": 0, + "pattern": "^TransferSecurityPolicy-.+$", + "type": "string" + }, + "ServerId": { + "maxLength": 19, + "minLength": 19, + "pattern": "^s-([0-9a-f]{17})$", + "type": "string" + }, + "State": { + "$ref": "#/definitions/State" + }, + "StructuredLogDestinations": { + "insertionOrder": false, + "items": { + "maxLength": 1600, + "minLength": 20, + "pattern": "^arn:\\S+$", + "type": "string" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + "WorkflowDetails": { + "$ref": "#/definitions/WorkflowDetails" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/As2ServiceManagedEgressIpAddresses", + "/properties/ServerId", + "/properties/State" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transfer", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "transfer:TagResource", + "transfer:UnTagResource", + "transfer:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Transfer::Server", + "writeOnlyProperties": [ + "/properties/IdentityProviderType" + ] +} diff --git a/src/schema/aws-transfer-user.json b/src/schema/aws-transfer-user.json index 14d15b28..40804cbd 100644 --- a/src/schema/aws-transfer-user.json +++ b/src/schema/aws-transfer-user.json @@ -1,250 +1,250 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ServerId", - "/properties/UserName" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServerId", - "/properties/UserName" - ], - "definitions": { - "HomeDirectoryMapEntry": { - "additionalProperties": false, - "properties": { - "Entry": { - "maxLength": 1024, - "minLength": 0, - "pattern": "^/.*$", - "type": "string" - }, - "Target": { - "maxLength": 1024, - "minLength": 0, - "pattern": "^/.*$", - "type": "string" - }, - "Type": { - "$ref": "#/definitions/MapType" - } - }, - "required": [ - "Entry", - "Target" - ], - "type": "object" - }, - "HomeDirectoryType": { - "enum": [ - "PATH", - "LOGICAL" - ], - "type": "string" - }, - "MapType": { - "enum": [ - "FILE", - "DIRECTORY" - ], - "type": "string" - }, - "PosixProfile": { - "additionalProperties": false, - "properties": { - "Gid": { - "maximum": 4294967295, - "minimum": 0, - "type": "number" - }, - "SecondaryGids": { - "insertionOrder": false, - "items": { - "maximum": 4294967295, - "minimum": 0, - "type": "number" - }, - "maxItems": 16, - "minItems": 0, - "type": "array" - }, - "Uid": { - "maximum": 4294967295, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "Gid", - "Uid" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 0, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::Transfer::User Resource Type", - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "transfer:CreateUser", - "transfer:DescribeUser", - "transfer:ImportSshPublicKey", - "transfer:TagResource" - ] - }, - "delete": { - "permissions": [ - "transfer:DeleteUser" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ServerId": { - "$ref": "resource-schema.json#/properties/ServerId" - } - }, - "required": [ - "ServerId" - ] - }, - "permissions": [ - "transfer:ListUsers" - ] - }, - "read": { - "permissions": [ - "transfer:DescribeUser" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "transfer:DeleteSshPublicKey", - "transfer:DescribeUser", - "transfer:ImportSshPublicKey", - "transfer:TagResource", - "transfer:UnTagResource", - "transfer:UpdateUser" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 1600, - "minLength": 20, - "pattern": "^arn:\\S+$", - "type": "string" - }, - "HomeDirectory": { - "maxLength": 1024, - "minLength": 0, - "pattern": "^(|/.*)$", - "type": "string" - }, - "HomeDirectoryMappings": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/HomeDirectoryMapEntry" - }, - "maxItems": 50000, - "minItems": 1, - "type": "array" - }, - "HomeDirectoryType": { - "$ref": "#/definitions/HomeDirectoryType" - }, - "Policy": { - "maxLength": 2048, - "minLength": 0, - "type": "string" - }, - "PosixProfile": { - "$ref": "#/definitions/PosixProfile" - }, - "Role": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:.*role/\\S+$", - "type": "string" - }, - "ServerId": { - "maxLength": 19, - "minLength": 19, - "pattern": "^s-([0-9a-f]{17})$", - "type": "string" - }, - "SshPublicKeys": { - "description": "This represents the SSH User Public Keys for CloudFormation resource", - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 0, - "pattern": "^\\s*(ssh|ecdsa)-[a-z0-9-]+[ \\t]+(([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{1,3})?(={0,3})?)(\\s*|[ \\t]+[\\S \\t]*\\s*)$", - "type": "string" - }, - "type": "array" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - }, - "UserName": { - "maxLength": 100, - "minLength": 3, - "pattern": "^[\\w][\\w@.-]{2,99}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Role", - "ServerId", - "UserName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transfer", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "transfer:TagResource", - "transfer:UnTagResource", - "transfer:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Transfer::User" -} +{ + "additionalIdentifiers": [ + [ + "/properties/ServerId", + "/properties/UserName" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServerId", + "/properties/UserName" + ], + "definitions": { + "HomeDirectoryMapEntry": { + "additionalProperties": false, + "properties": { + "Entry": { + "maxLength": 1024, + "minLength": 0, + "pattern": "^/.*$", + "type": "string" + }, + "Target": { + "maxLength": 1024, + "minLength": 0, + "pattern": "^/.*$", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/MapType" + } + }, + "required": [ + "Entry", + "Target" + ], + "type": "object" + }, + "HomeDirectoryType": { + "enum": [ + "PATH", + "LOGICAL" + ], + "type": "string" + }, + "MapType": { + "enum": [ + "FILE", + "DIRECTORY" + ], + "type": "string" + }, + "PosixProfile": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4294967295, + "minimum": 0, + "type": "number" + }, + "SecondaryGids": { + "insertionOrder": false, + "items": { + "maximum": 4294967295, + "minimum": 0, + "type": "number" + }, + "maxItems": 16, + "minItems": 0, + "type": "array" + }, + "Uid": { + "maximum": 4294967295, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "Gid", + "Uid" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Transfer::User Resource Type", + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "transfer:CreateUser", + "transfer:DescribeUser", + "transfer:ImportSshPublicKey", + "transfer:TagResource" + ] + }, + "delete": { + "permissions": [ + "transfer:DeleteUser" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ServerId": { + "$ref": "resource-schema.json#/properties/ServerId" + } + }, + "required": [ + "ServerId" + ] + }, + "permissions": [ + "transfer:ListUsers" + ] + }, + "read": { + "permissions": [ + "transfer:DescribeUser" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "transfer:DeleteSshPublicKey", + "transfer:DescribeUser", + "transfer:ImportSshPublicKey", + "transfer:TagResource", + "transfer:UnTagResource", + "transfer:UpdateUser" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 1600, + "minLength": 20, + "pattern": "^arn:\\S+$", + "type": "string" + }, + "HomeDirectory": { + "maxLength": 1024, + "minLength": 0, + "pattern": "^(|/.*)$", + "type": "string" + }, + "HomeDirectoryMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/HomeDirectoryMapEntry" + }, + "maxItems": 50000, + "minItems": 1, + "type": "array" + }, + "HomeDirectoryType": { + "$ref": "#/definitions/HomeDirectoryType" + }, + "Policy": { + "maxLength": 2048, + "minLength": 0, + "type": "string" + }, + "PosixProfile": { + "$ref": "#/definitions/PosixProfile" + }, + "Role": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:.*role/\\S+$", + "type": "string" + }, + "ServerId": { + "maxLength": 19, + "minLength": 19, + "pattern": "^s-([0-9a-f]{17})$", + "type": "string" + }, + "SshPublicKeys": { + "description": "This represents the SSH User Public Keys for CloudFormation resource", + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 0, + "pattern": "^\\s*(ssh|ecdsa)-[a-z0-9-]+[ \\t]+(([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{1,3})?(={0,3})?)(\\s*|[ \\t]+[\\S \\t]*\\s*)$", + "type": "string" + }, + "type": "array" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + "UserName": { + "maxLength": 100, + "minLength": 3, + "pattern": "^[\\w][\\w@.-]{2,99}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "Role", + "ServerId", + "UserName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transfer", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "transfer:TagResource", + "transfer:UnTagResource", + "transfer:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Transfer::User" +} diff --git a/src/schema/aws-transfer-webapp.json b/src/schema/aws-transfer-webapp.json new file mode 100644 index 00000000..2d0c2a4d --- /dev/null +++ b/src/schema/aws-transfer-webapp.json @@ -0,0 +1,240 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/WebAppId" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/WebAppEndpointPolicy", + "/properties/IdentityProviderDetails/InstanceArn" + ], + "definitions": { + "IdentityProviderDetails": { + "additionalProperties": false, + "description": "You can provide a structure that contains the details for the identity provider to use with your web app.", + "properties": { + "ApplicationArn": { + "maxLength": 1224, + "minLength": 10, + "pattern": "^arn:[\\w-]+:sso::\\d{12}:application/(sso)?ins-[a-zA-Z0-9-.]{16}/apl-[a-zA-Z0-9]{16}$", + "type": "string" + }, + "InstanceArn": { + "description": "The Amazon Resource Name (ARN) for the IAM Identity Center used for the web app.", + "maxLength": 1224, + "minLength": 10, + "pattern": "^arn:[\\w-]+:sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}$", + "type": "string" + }, + "Role": { + "description": "The IAM role in IAM Identity Center used for the web app.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[a-z-]+:iam::[0-9]{12}:role[:/]\\S+$", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Key-value pair that can be used to group and search for web apps.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "WebAppCustomization": { + "additionalProperties": false, + "properties": { + "FaviconFile": { + "description": "Specifies a favicon to display in the browser tab.", + "maxLength": 20960, + "minLength": 1, + "type": "string" + }, + "LogoFile": { + "description": "Specifies a logo to display on the web app.", + "maxLength": 51200, + "minLength": 1, + "type": "string" + }, + "Title": { + "description": "Specifies a title to display on the web app.", + "maxLength": 100, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "WebAppEndpointPolicy": { + "enum": [ + "STANDARD", + "FIPS" + ], + "type": "string" + }, + "WebAppUnits": { + "oneOf": [ + { + "additionalProperties": false, + "description": "A union that contains the value for number of concurrent connections or the user sessions on your web app.", + "properties": { + "Provisioned": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "Provisioned" + ], + "title": "Provisioned", + "type": "object" + } + ] + } + }, + "description": "Resource Type definition for AWS::Transfer::WebApp", + "handlers": { + "create": { + "permissions": [ + "transfer:CreateWebApp", + "transfer:DescribeWebApp", + "transfer:DescribeWebAppCustomization", + "transfer:TagResource", + "transfer:UpdateWebAppCustomization", + "iam:PassRole", + "sso:CreateApplication", + "sso:DescribeApplication", + "sso:ListApplications", + "sso:PutApplicationGrant", + "sso:GetApplicationGrant", + "sso:ListApplicationGrants", + "sso:PutApplicationAuthenticationMethod", + "sso:GetApplicationAuthenticationMethod", + "sso:ListApplicationAuthenticationMethods", + "sso:PutApplicationAccessScope", + "sso:GetApplicationAccessScope", + "sso:ListApplicationAccessScopes" + ] + }, + "delete": { + "permissions": [ + "transfer:DeleteWebApp", + "sso:DescribeApplication", + "sso:DeleteApplication" + ] + }, + "list": { + "permissions": [ + "transfer:ListWebApps" + ] + }, + "read": { + "permissions": [ + "transfer:DescribeWebApp", + "transfer:DescribeWebAppCustomization" + ] + }, + "update": { + "permissions": [ + "transfer:DescribeWebApp", + "transfer:DescribeWebAppCustomization", + "transfer:UpdateWebApp", + "transfer:UpdateWebAppCustomization", + "transfer:DeleteWebAppCustomization", + "transfer:UnTagResource", + "transfer:TagResource", + "iam:PassRole", + "sso:PutApplicationGrant", + "sso:GetApplicationGrant", + "sso:ListApplicationGrants", + "sso:UpdateApplication", + "sso:DescribeApplication", + "sso:ListApplications" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AccessEndpoint": { + "description": "The AccessEndpoint is the URL that you provide to your users for them to interact with the Transfer Family web app. You can specify a custom URL or use the default value.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Arn": { + "description": "Specifies the unique Amazon Resource Name (ARN) for the web app.", + "maxLength": 1600, + "minLength": 20, + "pattern": "arn:.*", + "type": "string" + }, + "IdentityProviderDetails": { + "$ref": "#/definitions/IdentityProviderDetails" + }, + "Tags": { + "description": "Key-value pairs that can be used to group and search for web apps.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array" + }, + "WebAppCustomization": { + "$ref": "#/definitions/WebAppCustomization" + }, + "WebAppEndpointPolicy": { + "$ref": "#/definitions/WebAppEndpointPolicy" + }, + "WebAppId": { + "description": "A unique identifier for the web app.", + "maxLength": 24, + "minLength": 24, + "pattern": "^webapp-([0-9a-f]{17})$", + "type": "string" + }, + "WebAppUnits": { + "$ref": "#/definitions/WebAppUnits" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/WebAppId", + "/properties/IdentityProviderDetails/ApplicationArn" + ], + "required": [ + "IdentityProviderDetails" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "transfer:TagResource", + "transfer:UnTagResource", + "transfer:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Transfer::WebApp" +} diff --git a/src/schema/aws-transfer-workflow.json b/src/schema/aws-transfer-workflow.json index b3cb68b3..86ea4787 100644 --- a/src/schema/aws-transfer-workflow.json +++ b/src/schema/aws-transfer-workflow.json @@ -1,400 +1,405 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Steps", - "/properties/OnExceptionSteps", - "/properties/Description" - ], - "definitions": { - "EfsInputFileLocation": { - "additionalProperties": false, - "description": "Specifies the details for an EFS file.", - "properties": { - "FileSystemId": { - "description": "Specifies the EFS filesystem that contains the file.", - "maxLength": 128, - "minLength": 0, - "pattern": "^(arn:aws[-a-z]*:elasticfilesystem:[0-9a-z-:]+:(access-point/fsap|file-system/fs)-[0-9a-f]{8,40}|fs(ap)?-[0-9a-f]{8,40})$", - "type": "string" - }, - "Path": { - "description": "The name assigned to the file when it was created in EFS. You use the object path to retrieve the object.", - "maxLength": 65536, - "minLength": 1, - "pattern": "^[^\\x00]+$", - "type": "string" - } - }, - "type": "object" - }, - "InputFileLocation": { - "additionalProperties": false, - "description": "Specifies the location for the file being decrypted. Only applicable for the Decrypt type of workflow steps.", - "properties": { - "EfsFileLocation": { - "$ref": "#/definitions/EfsInputFileLocation" - }, - "S3FileLocation": { - "$ref": "#/definitions/S3InputFileLocation" - } - }, - "type": "object" - }, - "S3FileLocation": { - "additionalProperties": false, - "description": "Specifies the location for the file being copied. Only applicable for the Copy type of workflow steps.", - "properties": { - "S3FileLocation": { - "$ref": "#/definitions/S3InputFileLocation" - } - }, - "type": "object" - }, - "S3InputFileLocation": { - "additionalProperties": false, - "description": "Specifies the details for a S3 file.", - "properties": { - "Bucket": { - "description": "Specifies the S3 bucket that contains the file.", - "maxLength": 63, - "minLength": 3, - "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", - "type": "string" - }, - "Key": { - "description": "The name assigned to the file when it was created in S3. You use the object key to retrieve the object.", - "maxLength": 1024, - "minLength": 0, - "pattern": ".*", - "type": "string" - } - }, - "type": "object" - }, - "S3Tag": { - "additionalProperties": false, - "description": "Specifies the key-value pair that are assigned to a file during the execution of a Tagging step.", - "properties": { - "Key": { - "description": "The name assigned to the tag that you create.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "The value that corresponds to the key.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "description": "Creates a key-value pair for a specific resource.", - "properties": { - "Key": { - "description": "The name assigned to the tag that you create.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "description": "Contains one or more values that you assigned to the key name you create.", - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "WorkflowStep": { - "additionalProperties": false, - "description": "The basic building block of a workflow.", - "properties": { - "CopyStepDetails": { - "additionalProperties": false, - "description": "Details for a step that performs a file copy.", - "properties": { - "DestinationFileLocation": { - "$ref": "#/definitions/S3FileLocation" - }, - "Name": { - "description": "The name of the step, used as an identifier.", - "maxLength": 30, - "minLength": 0, - "pattern": "^[\\w-]*$", - "type": "string" - }, - "OverwriteExisting": { - "description": "A flag that indicates whether or not to overwrite an existing file of the same name. The default is FALSE.", - "enum": [ - "TRUE", - "FALSE" - ], - "type": "string" - }, - "SourceFileLocation": { - "description": "Specifies which file to use as input to the workflow step.", - "maxLength": 256, - "minLength": 0, - "pattern": "^\\$\\{(\\w+.)+\\w+\\}$", - "type": "string" - } - }, - "type": "object" - }, - "CustomStepDetails": { - "additionalProperties": false, - "description": "Details for a step that invokes a lambda function.", - "properties": { - "Name": { - "description": "The name of the step, used as an identifier.", - "maxLength": 30, - "minLength": 0, - "pattern": "^[\\w-]*$", - "type": "string" - }, - "SourceFileLocation": { - "description": "Specifies which file to use as input to the workflow step.", - "maxLength": 256, - "minLength": 0, - "pattern": "^\\$\\{(\\w+.)+\\w+\\}$", - "type": "string" - }, - "Target": { - "description": "The ARN for the lambda function that is being called.", - "maxLength": 170, - "minLength": 0, - "pattern": "arn:[a-z-]+:lambda:.*$", - "type": "string" - }, - "TimeoutSeconds": { - "description": "Timeout, in seconds, for the step.", - "maximum": 1800, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "DecryptStepDetails": { - "additionalProperties": false, - "description": "Details for a step that performs a file decryption.", - "properties": { - "DestinationFileLocation": { - "$ref": "#/definitions/InputFileLocation" - }, - "Name": { - "description": "The name of the step, used as an identifier.", - "maxLength": 30, - "minLength": 0, - "pattern": "^[\\w-]*$", - "type": "string" - }, - "OverwriteExisting": { - "description": "A flag that indicates whether or not to overwrite an existing file of the same name. The default is FALSE.", - "enum": [ - "TRUE", - "FALSE" - ], - "type": "string" - }, - "SourceFileLocation": { - "description": "Specifies which file to use as input to the workflow step.", - "maxLength": 256, - "minLength": 0, - "pattern": "^\\$\\{(\\w+.)+\\w+\\}$", - "type": "string" - }, - "Type": { - "description": "Specifies which encryption method to use.", - "enum": [ - "PGP" - ], - "type": "string" - } - }, - "required": [ - "DestinationFileLocation", - "Type" - ], - "type": "object" - }, - "DeleteStepDetails": { - "additionalProperties": false, - "description": "Details for a step that deletes the file.", - "properties": { - "Name": { - "description": "The name of the step, used as an identifier.", - "maxLength": 30, - "minLength": 0, - "pattern": "^[\\w-]*$", - "type": "string" - }, - "SourceFileLocation": { - "description": "Specifies which file to use as input to the workflow step.", - "maxLength": 256, - "minLength": 0, - "pattern": "^\\$\\{(\\w+.)+\\w+\\}$", - "type": "string" - } - }, - "type": "object" - }, - "TagStepDetails": { - "additionalProperties": false, - "description": "Details for a step that creates one or more tags.", - "properties": { - "Name": { - "description": "The name of the step, used as an identifier.", - "maxLength": 30, - "minLength": 0, - "pattern": "^[\\w-]*$", - "type": "string" - }, - "SourceFileLocation": { - "description": "Specifies which file to use as input to the workflow step.", - "maxLength": 256, - "minLength": 0, - "pattern": "^\\$\\{(\\w+.)+\\w+\\}$", - "type": "string" - }, - "Tags": { - "description": "Array that contains from 1 to 10 key/value pairs.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/S3Tag" - }, - "maxItems": 10, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "Type": { - "enum": [ - "COPY", - "CUSTOM", - "DECRYPT", - "DELETE", - "TAG" - ], - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::Transfer::Workflow", - "handlers": { - "create": { - "permissions": [ - "transfer:CreateWorkflow", - "transfer:TagResource" - ] - }, - "delete": { - "permissions": [ - "transfer:DeleteWorkflow" - ] - }, - "list": { - "permissions": [ - "transfer:ListWorkflows" - ] - }, - "read": { - "permissions": [ - "transfer:DescribeWorkflow" - ] - }, - "update": { - "permissions": [ - "transfer:UnTagResource", - "transfer:TagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/WorkflowId" - ], - "properties": { - "Arn": { - "description": "Specifies the unique Amazon Resource Name (ARN) for the workflow.", - "maxLength": 1600, - "minLength": 20, - "pattern": "arn:.*", - "type": "string" - }, - "Description": { - "description": "A textual description for the workflow.", - "maxLength": 256, - "minLength": 0, - "pattern": "^[\\w\\- ]*$", - "type": "string" - }, - "OnExceptionSteps": { - "description": "Specifies the steps (actions) to take if any errors are encountered during execution of the workflow.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/WorkflowStep" - }, - "maxItems": 8, - "type": "array", - "uniqueItems": true - }, - "Steps": { - "description": "Specifies the details for the steps that are in the specified workflow.", - "insertionOrder": true, - "items": { - "$ref": "#/definitions/WorkflowStep" - }, - "maxItems": 8, - "type": "array", - "uniqueItems": true - }, - "Tags": { - "description": "Key-value pairs that can be used to group and search for workflows. Tags are metadata attached to workflows for any purpose.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "WorkflowId": { - "description": "A unique identifier for the workflow.", - "maxLength": 19, - "minLength": 19, - "pattern": "^w-([a-z0-9]{17})$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/WorkflowId", - "/properties/Arn" - ], - "required": [ - "Steps" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Transfer::Workflow" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Steps", + "/properties/OnExceptionSteps", + "/properties/Description" + ], + "definitions": { + "EfsInputFileLocation": { + "additionalProperties": false, + "description": "Specifies the details for an EFS file.", + "properties": { + "FileSystemId": { + "description": "Specifies the EFS filesystem that contains the file.", + "maxLength": 128, + "minLength": 0, + "pattern": "^(arn:aws[-a-z]*:elasticfilesystem:[0-9a-z-:]+:(access-point/fsap|file-system/fs)-[0-9a-f]{8,40}|fs(ap)?-[0-9a-f]{8,40})$", + "type": "string" + }, + "Path": { + "description": "The name assigned to the file when it was created in EFS. You use the object path to retrieve the object.", + "maxLength": 65536, + "minLength": 1, + "pattern": "^[^\\x00]+$", + "type": "string" + } + }, + "type": "object" + }, + "InputFileLocation": { + "additionalProperties": false, + "description": "Specifies the location for the file being decrypted. Only applicable for the Decrypt type of workflow steps.", + "properties": { + "EfsFileLocation": { + "$ref": "#/definitions/EfsInputFileLocation" + }, + "S3FileLocation": { + "$ref": "#/definitions/S3InputFileLocation" + } + }, + "type": "object" + }, + "S3FileLocation": { + "additionalProperties": false, + "description": "Specifies the location for the file being copied. Only applicable for the Copy type of workflow steps.", + "properties": { + "S3FileLocation": { + "$ref": "#/definitions/S3InputFileLocation" + } + }, + "type": "object" + }, + "S3InputFileLocation": { + "additionalProperties": false, + "description": "Specifies the details for a S3 file.", + "properties": { + "Bucket": { + "description": "Specifies the S3 bucket that contains the file.", + "maxLength": 63, + "minLength": 3, + "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", + "type": "string" + }, + "Key": { + "description": "The name assigned to the file when it was created in S3. You use the object key to retrieve the object.", + "maxLength": 1024, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "S3Tag": { + "additionalProperties": false, + "description": "Specifies the key-value pair that are assigned to a file during the execution of a Tagging step.", + "properties": { + "Key": { + "description": "The name assigned to the tag that you create.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "The value that corresponds to the key.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "Creates a key-value pair for a specific resource.", + "properties": { + "Key": { + "description": "The name assigned to the tag that you create.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "description": "Contains one or more values that you assigned to the key name you create.", + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "WorkflowStep": { + "additionalProperties": false, + "description": "The basic building block of a workflow.", + "properties": { + "CopyStepDetails": { + "additionalProperties": false, + "description": "Details for a step that performs a file copy.", + "properties": { + "DestinationFileLocation": { + "$ref": "#/definitions/S3FileLocation" + }, + "Name": { + "description": "The name of the step, used as an identifier.", + "maxLength": 30, + "minLength": 0, + "pattern": "^[\\w-]*$", + "type": "string" + }, + "OverwriteExisting": { + "description": "A flag that indicates whether or not to overwrite an existing file of the same name. The default is FALSE.", + "enum": [ + "TRUE", + "FALSE" + ], + "type": "string" + }, + "SourceFileLocation": { + "description": "Specifies which file to use as input to the workflow step.", + "maxLength": 256, + "minLength": 0, + "pattern": "^\\$\\{(\\w+.)+\\w+\\}$", + "type": "string" + } + }, + "type": "object" + }, + "CustomStepDetails": { + "additionalProperties": false, + "description": "Details for a step that invokes a lambda function.", + "properties": { + "Name": { + "description": "The name of the step, used as an identifier.", + "maxLength": 30, + "minLength": 0, + "pattern": "^[\\w-]*$", + "type": "string" + }, + "SourceFileLocation": { + "description": "Specifies which file to use as input to the workflow step.", + "maxLength": 256, + "minLength": 0, + "pattern": "^\\$\\{(\\w+.)+\\w+\\}$", + "type": "string" + }, + "Target": { + "description": "The ARN for the lambda function that is being called.", + "maxLength": 170, + "minLength": 0, + "pattern": "arn:[a-z-]+:lambda:.*$", + "type": "string" + }, + "TimeoutSeconds": { + "description": "Timeout, in seconds, for the step.", + "maximum": 1800, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "DecryptStepDetails": { + "additionalProperties": false, + "description": "Details for a step that performs a file decryption.", + "properties": { + "DestinationFileLocation": { + "$ref": "#/definitions/InputFileLocation" + }, + "Name": { + "description": "The name of the step, used as an identifier.", + "maxLength": 30, + "minLength": 0, + "pattern": "^[\\w-]*$", + "type": "string" + }, + "OverwriteExisting": { + "description": "A flag that indicates whether or not to overwrite an existing file of the same name. The default is FALSE.", + "enum": [ + "TRUE", + "FALSE" + ], + "type": "string" + }, + "SourceFileLocation": { + "description": "Specifies which file to use as input to the workflow step.", + "maxLength": 256, + "minLength": 0, + "pattern": "^\\$\\{(\\w+.)+\\w+\\}$", + "type": "string" + }, + "Type": { + "description": "Specifies which encryption method to use.", + "enum": [ + "PGP" + ], + "type": "string" + } + }, + "required": [ + "DestinationFileLocation", + "Type" + ], + "type": "object" + }, + "DeleteStepDetails": { + "additionalProperties": false, + "description": "Details for a step that deletes the file.", + "properties": { + "Name": { + "description": "The name of the step, used as an identifier.", + "maxLength": 30, + "minLength": 0, + "pattern": "^[\\w-]*$", + "type": "string" + }, + "SourceFileLocation": { + "description": "Specifies which file to use as input to the workflow step.", + "maxLength": 256, + "minLength": 0, + "pattern": "^\\$\\{(\\w+.)+\\w+\\}$", + "type": "string" + } + }, + "type": "object" + }, + "TagStepDetails": { + "additionalProperties": false, + "description": "Details for a step that creates one or more tags.", + "properties": { + "Name": { + "description": "The name of the step, used as an identifier.", + "maxLength": 30, + "minLength": 0, + "pattern": "^[\\w-]*$", + "type": "string" + }, + "SourceFileLocation": { + "description": "Specifies which file to use as input to the workflow step.", + "maxLength": 256, + "minLength": 0, + "pattern": "^\\$\\{(\\w+.)+\\w+\\}$", + "type": "string" + }, + "Tags": { + "description": "Array that contains from 1 to 10 key/value pairs.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/S3Tag" + }, + "maxItems": 10, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Type": { + "enum": [ + "COPY", + "CUSTOM", + "DECRYPT", + "DELETE", + "TAG" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::Transfer::Workflow", + "handlers": { + "create": { + "permissions": [ + "transfer:CreateWorkflow", + "transfer:TagResource" + ] + }, + "delete": { + "permissions": [ + "transfer:DeleteWorkflow" + ] + }, + "list": { + "permissions": [ + "transfer:ListWorkflows" + ] + }, + "read": { + "permissions": [ + "transfer:DescribeWorkflow" + ] + }, + "update": { + "permissions": [ + "transfer:UnTagResource", + "transfer:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/WorkflowId" + ], + "properties": { + "Arn": { + "description": "Specifies the unique Amazon Resource Name (ARN) for the workflow.", + "maxLength": 1600, + "minLength": 20, + "pattern": "arn:.*", + "type": "string" + }, + "Description": { + "description": "A textual description for the workflow.", + "maxLength": 256, + "minLength": 0, + "pattern": "^[\\w\\- ]*$", + "type": "string" + }, + "OnExceptionSteps": { + "description": "Specifies the steps (actions) to take if any errors are encountered during execution of the workflow.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/WorkflowStep" + }, + "maxItems": 8, + "type": "array", + "uniqueItems": true + }, + "Steps": { + "description": "Specifies the details for the steps that are in the specified workflow.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/WorkflowStep" + }, + "maxItems": 8, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "description": "Key-value pairs that can be used to group and search for workflows. Tags are metadata attached to workflows for any purpose.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "WorkflowId": { + "description": "A unique identifier for the workflow.", + "maxLength": 19, + "minLength": 19, + "pattern": "^w-([a-z0-9]{17})$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/WorkflowId", + "/properties/Arn" + ], + "required": [ + "Steps" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "transfer:ListTagsForResource", + "transfer:UnTagResource", + "transfer:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Transfer::Workflow" +} diff --git a/src/schema/aws-verifiedpermissions-identitysource.json b/src/schema/aws-verifiedpermissions-identitysource.json index 4987a455..8f48c457 100644 --- a/src/schema/aws-verifiedpermissions-identitysource.json +++ b/src/schema/aws-verifiedpermissions-identitysource.json @@ -1,345 +1,345 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "OpenIdConnectConfiguration": { - "$ref": "#/definitions/OpenIdConnectConfiguration" - } - }, - "required": [ - "OpenIdConnectConfiguration" - ], - "title": "OpenIdConnectConfiguration", - "type": "object" - } - ] - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdConnectAccessTokenConfiguration": { - "additionalProperties": false, - "properties": { - "Audiences": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "maxItems": 255, - "minItems": 1, - "type": "array" - }, - "PrincipalIdClaim": { - "default": "sub", - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "OpenIdConnectConfiguration": { - "additionalProperties": false, - "properties": { - "EntityIdPrefix": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "GroupConfiguration": { - "$ref": "#/definitions/OpenIdConnectGroupConfiguration" - }, - "Issuer": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "TokenSelection": { - "$ref": "#/definitions/OpenIdConnectTokenSelection" - } - }, - "required": [ - "Issuer", - "TokenSelection" - ], - "type": "object" - }, - "OpenIdConnectGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupClaim": { - "minLength": 1, - "type": "string" - }, - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupClaim", - "GroupEntityType" - ], - "type": "object" - }, - "OpenIdConnectIdentityTokenConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "PrincipalIdClaim": { - "default": "sub", - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "OpenIdConnectTokenSelection": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "AccessTokenOnly": { - "$ref": "#/definitions/OpenIdConnectAccessTokenConfiguration" - } - }, - "required": [ - "AccessTokenOnly" - ], - "title": "AccessTokenOnly", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "IdentityTokenOnly": { - "$ref": "#/definitions/OpenIdConnectIdentityTokenConfiguration" - } - }, - "required": [ - "IdentityTokenOnly" - ], - "title": "IdentityTokenOnly", - "type": "object" - } - ] - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "description": "Definition of AWS::VerifiedPermissions::IdentitySource Resource Type", - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:GetIdentitySource", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:ListIdentitySources", - "verifiedpermissions:GetIdentitySource", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:GetIdentitySource", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "OpenIdConnectConfiguration": { + "$ref": "#/definitions/OpenIdConnectConfiguration" + } + }, + "required": [ + "OpenIdConnectConfiguration" + ], + "title": "OpenIdConnectConfiguration", + "type": "object" + } + ] + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdConnectAccessTokenConfiguration": { + "additionalProperties": false, + "properties": { + "Audiences": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "maxItems": 255, + "minItems": 1, + "type": "array" + }, + "PrincipalIdClaim": { + "default": "sub", + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "OpenIdConnectConfiguration": { + "additionalProperties": false, + "properties": { + "EntityIdPrefix": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "GroupConfiguration": { + "$ref": "#/definitions/OpenIdConnectGroupConfiguration" + }, + "Issuer": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "TokenSelection": { + "$ref": "#/definitions/OpenIdConnectTokenSelection" + } + }, + "required": [ + "Issuer", + "TokenSelection" + ], + "type": "object" + }, + "OpenIdConnectGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupClaim": { + "minLength": 1, + "type": "string" + }, + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupClaim", + "GroupEntityType" + ], + "type": "object" + }, + "OpenIdConnectIdentityTokenConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "PrincipalIdClaim": { + "default": "sub", + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "OpenIdConnectTokenSelection": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "AccessTokenOnly": { + "$ref": "#/definitions/OpenIdConnectAccessTokenConfiguration" + } + }, + "required": [ + "AccessTokenOnly" + ], + "title": "AccessTokenOnly", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "IdentityTokenOnly": { + "$ref": "#/definitions/OpenIdConnectIdentityTokenConfiguration" + } + }, + "required": [ + "IdentityTokenOnly" + ], + "title": "IdentityTokenOnly", + "type": "object" + } + ] + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "description": "Definition of AWS::VerifiedPermissions::IdentitySource Resource Type", + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:GetIdentitySource", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:ListIdentitySources", + "verifiedpermissions:GetIdentitySource", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:GetIdentitySource", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} diff --git a/src/schema/aws-verifiedpermissions-policy.json b/src/schema/aws-verifiedpermissions-policy.json index 9900d68a..20aeddf2 100644 --- a/src/schema/aws-verifiedpermissions-policy.json +++ b/src/schema/aws-verifiedpermissions-policy.json @@ -1,189 +1,189 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "EntityIdentifier": { - "additionalProperties": false, - "properties": { - "EntityId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "EntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "required": [ - "EntityId", - "EntityType" - ], - "type": "object" - }, - "PolicyDefinition": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "Static": { - "$ref": "#/definitions/StaticPolicyDefinition" - } - }, - "required": [ - "Static" - ], - "title": "Static", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "TemplateLinked": { - "$ref": "#/definitions/TemplateLinkedPolicyDefinition" - } - }, - "required": [ - "TemplateLinked" - ], - "title": "TemplateLinked", - "type": "object" - } - ] - }, - "PolicyType": { - "enum": [ - "STATIC", - "TEMPLATE_LINKED" - ], - "type": "string" - }, - "StaticPolicyDefinition": { - "additionalProperties": false, - "properties": { - "Description": { - "maxLength": 150, - "minLength": 0, - "type": "string" - }, - "Statement": { - "maxLength": 10000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Statement" - ], - "type": "object" - }, - "TemplateLinkedPolicyDefinition": { - "additionalProperties": false, - "properties": { - "PolicyTemplateId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "Principal": { - "$ref": "#/definitions/EntityIdentifier" - }, - "Resource": { - "$ref": "#/definitions/EntityIdentifier" - } - }, - "required": [ - "PolicyTemplateId" - ], - "type": "object" - } - }, - "description": "Definition of AWS::VerifiedPermissions::Policy Resource Type", - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreatePolicy", - "verifiedpermissions:GetPolicy" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:DeletePolicy", - "verifiedpermissions:GetPolicy" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:ListPolicies", - "verifiedpermissions:GetPolicy" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:GetPolicy" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:UpdatePolicy", - "verifiedpermissions:GetPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/PolicyId", - "/properties/PolicyStoreId" - ], - "properties": { - "Definition": { - "$ref": "#/definitions/PolicyDefinition" - }, - "PolicyId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyType": { - "$ref": "#/definitions/PolicyType" - } - }, - "readOnlyProperties": [ - "/properties/PolicyId", - "/properties/PolicyType" - ], - "required": [ - "Definition", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::Policy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "EntityIdentifier": { + "additionalProperties": false, + "properties": { + "EntityId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "EntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "EntityId", + "EntityType" + ], + "type": "object" + }, + "PolicyDefinition": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Static": { + "$ref": "#/definitions/StaticPolicyDefinition" + } + }, + "required": [ + "Static" + ], + "title": "Static", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "TemplateLinked": { + "$ref": "#/definitions/TemplateLinkedPolicyDefinition" + } + }, + "required": [ + "TemplateLinked" + ], + "title": "TemplateLinked", + "type": "object" + } + ] + }, + "PolicyType": { + "enum": [ + "STATIC", + "TEMPLATE_LINKED" + ], + "type": "string" + }, + "StaticPolicyDefinition": { + "additionalProperties": false, + "properties": { + "Description": { + "maxLength": 150, + "minLength": 0, + "type": "string" + }, + "Statement": { + "maxLength": 10000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Statement" + ], + "type": "object" + }, + "TemplateLinkedPolicyDefinition": { + "additionalProperties": false, + "properties": { + "PolicyTemplateId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "Principal": { + "$ref": "#/definitions/EntityIdentifier" + }, + "Resource": { + "$ref": "#/definitions/EntityIdentifier" + } + }, + "required": [ + "PolicyTemplateId" + ], + "type": "object" + } + }, + "description": "Definition of AWS::VerifiedPermissions::Policy Resource Type", + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreatePolicy", + "verifiedpermissions:GetPolicy" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:DeletePolicy", + "verifiedpermissions:GetPolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:ListPolicies", + "verifiedpermissions:GetPolicy" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:GetPolicy" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:UpdatePolicy", + "verifiedpermissions:GetPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/PolicyId", + "/properties/PolicyStoreId" + ], + "properties": { + "Definition": { + "$ref": "#/definitions/PolicyDefinition" + }, + "PolicyId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyType": { + "$ref": "#/definitions/PolicyType" + } + }, + "readOnlyProperties": [ + "/properties/PolicyId", + "/properties/PolicyType" + ], + "required": [ + "Definition", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::Policy" +} diff --git a/src/schema/aws-verifiedpermissions-policystore.json b/src/schema/aws-verifiedpermissions-policystore.json index 342f3f8d..667f8094 100644 --- a/src/schema/aws-verifiedpermissions-policystore.json +++ b/src/schema/aws-verifiedpermissions-policystore.json @@ -1,119 +1,119 @@ -{ - "additionalProperties": false, - "definitions": { - "SchemaDefinition": { - "additionalProperties": false, - "properties": { - "CedarJson": { - "$ref": "#/definitions/SchemaJson" - } - }, - "type": "object" - }, - "SchemaJson": { - "type": "string" - }, - "ValidationMode": { - "enum": [ - "OFF", - "STRICT" - ], - "type": "string" - }, - "ValidationSettings": { - "additionalProperties": false, - "properties": { - "Mode": { - "$ref": "#/definitions/ValidationMode" - } - }, - "required": [ - "Mode" - ], - "type": "object" - } - }, - "description": "Represents a policy store that you can place schema, policies, and policy templates in to validate authorization requests", - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreatePolicyStore", - "verifiedpermissions:GetPolicyStore", - "verifiedpermissions:PutSchema" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:DeletePolicyStore", - "verifiedpermissions:GetPolicyStore" - ] - }, - "list": { - "permissions": [ - "verifiedpermissions:ListPolicyStores", - "verifiedpermissions:GetPolicyStore", - "verifiedpermissions:GetSchema" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:GetPolicyStore", - "verifiedpermissions:GetSchema" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:UpdatePolicyStore", - "verifiedpermissions:GetPolicyStore", - "verifiedpermissions:GetSchema", - "verifiedpermissions:PutSchema" - ] - } - }, - "primaryIdentifier": [ - "/properties/PolicyStoreId" - ], - "properties": { - "Arn": { - "maxLength": 2500, - "minLength": 1, - "pattern": "^arn:[^:]*:[^:]*:[^:]*:[^:]*:.*$", - "type": "string" - }, - "Description": { - "maxLength": 150, - "minLength": 0, - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "Schema": { - "$ref": "#/definitions/SchemaDefinition" - }, - "ValidationSettings": { - "$ref": "#/definitions/ValidationSettings" - } - }, - "propertyTransform": { - "/properties/Schema/CedarJson": "$join([CedarJson, \"{}\"])" - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/PolicyStoreId" - ], - "required": [ - "ValidationSettings" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::PolicyStore" -} +{ + "additionalProperties": false, + "definitions": { + "SchemaDefinition": { + "additionalProperties": false, + "properties": { + "CedarJson": { + "$ref": "#/definitions/SchemaJson" + } + }, + "type": "object" + }, + "SchemaJson": { + "type": "string" + }, + "ValidationMode": { + "enum": [ + "OFF", + "STRICT" + ], + "type": "string" + }, + "ValidationSettings": { + "additionalProperties": false, + "properties": { + "Mode": { + "$ref": "#/definitions/ValidationMode" + } + }, + "required": [ + "Mode" + ], + "type": "object" + } + }, + "description": "Represents a policy store that you can place schema, policies, and policy templates in to validate authorization requests", + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreatePolicyStore", + "verifiedpermissions:GetPolicyStore", + "verifiedpermissions:PutSchema" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:DeletePolicyStore", + "verifiedpermissions:GetPolicyStore" + ] + }, + "list": { + "permissions": [ + "verifiedpermissions:ListPolicyStores", + "verifiedpermissions:GetPolicyStore", + "verifiedpermissions:GetSchema" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:GetPolicyStore", + "verifiedpermissions:GetSchema" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:UpdatePolicyStore", + "verifiedpermissions:GetPolicyStore", + "verifiedpermissions:GetSchema", + "verifiedpermissions:PutSchema" + ] + } + }, + "primaryIdentifier": [ + "/properties/PolicyStoreId" + ], + "properties": { + "Arn": { + "maxLength": 2500, + "minLength": 1, + "pattern": "^arn:[^:]*:[^:]*:[^:]*:[^:]*:.*$", + "type": "string" + }, + "Description": { + "maxLength": 150, + "minLength": 0, + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "Schema": { + "$ref": "#/definitions/SchemaDefinition" + }, + "ValidationSettings": { + "$ref": "#/definitions/ValidationSettings" + } + }, + "propertyTransform": { + "/properties/Schema/CedarJson": "$join([CedarJson, \"{}\"])" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/PolicyStoreId" + ], + "required": [ + "ValidationSettings" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::PolicyStore" +} diff --git a/src/schema/aws-verifiedpermissions-policytemplate.json b/src/schema/aws-verifiedpermissions-policytemplate.json index 4d038936..86dc4cc9 100644 --- a/src/schema/aws-verifiedpermissions-policytemplate.json +++ b/src/schema/aws-verifiedpermissions-policytemplate.json @@ -1,91 +1,91 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "description": "Definition of AWS::VerifiedPermissions::PolicyTemplate Resource Type", - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreatePolicyTemplate", - "verifiedpermissions:GetPolicyTemplate" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:DeletePolicyTemplate", - "verifiedpermissions:GetPolicyTemplate" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:ListPolicyTemplates", - "verifiedpermissions:GetPolicyTemplate" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:GetPolicyTemplate" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:UpdatePolicyTemplate", - "verifiedpermissions:GetPolicyTemplate" - ] - } - }, - "primaryIdentifier": [ - "/properties/PolicyStoreId", - "/properties/PolicyTemplateId" - ], - "properties": { - "Description": { - "maxLength": 150, - "minLength": 0, - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyTemplateId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "Statement": { - "maxLength": 10000, - "minLength": 1, - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/PolicyTemplateId" - ], - "required": [ - "Statement", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::PolicyTemplate" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "description": "Definition of AWS::VerifiedPermissions::PolicyTemplate Resource Type", + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreatePolicyTemplate", + "verifiedpermissions:GetPolicyTemplate" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:DeletePolicyTemplate", + "verifiedpermissions:GetPolicyTemplate" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:ListPolicyTemplates", + "verifiedpermissions:GetPolicyTemplate" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:GetPolicyTemplate" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:UpdatePolicyTemplate", + "verifiedpermissions:GetPolicyTemplate" + ] + } + }, + "primaryIdentifier": [ + "/properties/PolicyStoreId", + "/properties/PolicyTemplateId" + ], + "properties": { + "Description": { + "maxLength": 150, + "minLength": 0, + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyTemplateId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "Statement": { + "maxLength": 10000, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/PolicyTemplateId" + ], + "required": [ + "Statement", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::PolicyTemplate" +} diff --git a/src/schema/aws-voiceid-domain.json b/src/schema/aws-voiceid-domain.json index 6aa71e2c..759e70a4 100644 --- a/src/schema/aws-voiceid-domain.json +++ b/src/schema/aws-voiceid-domain.json @@ -1,142 +1,141 @@ -{ - "additionalProperties": false, - "definitions": { - "ServerSideEncryptionConfiguration": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "KmsKeyId" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "The AWS::VoiceID::Domain resource specifies an Amazon VoiceID Domain.", - "handlers": { - "create": { - "permissions": [ - "voiceid:CreateDomain", - "voiceid:DescribeDomain", - "voiceid:TagResource", - "voiceid:ListTagsForResource", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:Decrypt" - ] - }, - "delete": { - "permissions": [ - "voiceid:DeleteDomain", - "voiceid:DescribeDomain", - "kms:Decrypt" - ] - }, - "list": { - "permissions": [ - "voiceid:ListDomains", - "kms:Decrypt" - ] - }, - "read": { - "permissions": [ - "voiceid:DescribeDomain", - "voiceid:ListTagsForResource", - "kms:Decrypt" - ] - }, - "update": { - "permissions": [ - "voiceid:DescribeDomain", - "voiceid:UpdateDomain", - "voiceid:TagResource", - "voiceid:UntagResource", - "voiceid:ListTagsForResource", - "kms:CreateGrant", - "kms:Decrypt", - "kms:DescribeKey" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainId" - ], - "properties": { - "Description": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-%@]*)$", - "type": "string" - }, - "DomainId": { - "maxLength": 22, - "minLength": 22, - "pattern": "^[a-zA-Z0-9]{22}$", - "type": "string" - }, - "Name": { - "maxLength": 256, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", - "type": "string" - }, - "ServerSideEncryptionConfiguration": { - "$ref": "#/definitions/ServerSideEncryptionConfiguration" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/DomainId" - ], - "required": [ - "Name", - "ServerSideEncryptionConfiguration" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "#/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::VoiceID::Domain", - "writeOnlyProperties": [ - "/properties/Description", - "/properties/Name", - "/properties/ServerSideEncryptionConfiguration" - ] -} +{ + "additionalProperties": false, + "definitions": { + "ServerSideEncryptionConfiguration": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "KmsKeyId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "The AWS::VoiceID::Domain resource specifies an Amazon VoiceID Domain.", + "handlers": { + "create": { + "permissions": [ + "voiceid:CreateDomain", + "voiceid:DescribeDomain", + "voiceid:TagResource", + "voiceid:ListTagsForResource", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "voiceid:DeleteDomain", + "voiceid:DescribeDomain", + "kms:Decrypt" + ] + }, + "list": { + "permissions": [ + "voiceid:ListDomains", + "kms:Decrypt" + ] + }, + "read": { + "permissions": [ + "voiceid:DescribeDomain", + "voiceid:ListTagsForResource", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "voiceid:DescribeDomain", + "voiceid:UpdateDomain", + "voiceid:TagResource", + "voiceid:UntagResource", + "voiceid:ListTagsForResource", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId" + ], + "properties": { + "Description": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-%@]*)$", + "type": "string" + }, + "DomainId": { + "maxLength": 22, + "minLength": 22, + "pattern": "^[a-zA-Z0-9]{22}$", + "type": "string" + }, + "Name": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]*$", + "type": "string" + }, + "ServerSideEncryptionConfiguration": { + "$ref": "#/definitions/ServerSideEncryptionConfiguration" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/DomainId" + ], + "required": [ + "Name", + "ServerSideEncryptionConfiguration" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "voiceid:TagResource", + "voiceid:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::VoiceID::Domain" +} diff --git a/src/schema/aws-vpclattice-accesslogsubscription.json b/src/schema/aws-vpclattice-accesslogsubscription.json index ea565f0e..36c67350 100644 --- a/src/schema/aws-vpclattice-accesslogsubscription.json +++ b/src/schema/aws-vpclattice-accesslogsubscription.json @@ -1,205 +1,215 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Id" - ], - [ - "/properties/ResourceIdentifier" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceIdentifier" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Enables access logs to be sent to Amazon CloudWatch, Amazon S3, and Amazon Kinesis Data Firehose. The service network owner can use the access logs to audit the services in the network. The service network owner will only see access logs from clients and services that are associated with their service network. Access log entries represent traffic originated from VPCs associated with that network.", - "handlers": { - "create": { - "permissions": [ - "vpc-lattice:CreateAccessLogSubscription", - "vpc-lattice:TagResource", - "vpc-lattice:GetAccessLogSubscription", - "vpc-lattice:ListTagsForResource", - "logs:CreateLogDelivery", - "logs:CreateLogStream", - "logs:PutDestination", - "logs:PutDestinationPolicy", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "logs:GetLogDelivery", - "s3:PutBucketLogging", - "s3:GetBucketLogging", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy", - "firehose:TagDeliveryStream", - "firehose:CreateDeliveryStream", - "firehose:DescribeDeliveryStream", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "vpc-lattice:DeleteAccessLogSubscription", - "vpc-lattice:UntagResource", - "logs:DeleteLogDelivery", - "logs:DeleteLogStream", - "logs:GetLogDelivery", - "logs:DeleteDestination", - "s3:PutBucketLogging", - "iam:GetServiceLinkedRoleDeletionStatus", - "iam:DeleteServiceLinkedRole", - "firehose:DeleteDeliveryStream", - "firehose:UntagDeliveryStream" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ResourceIdentifier": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^((((sn)|(svc))-[0-9a-z]{17})|(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:((servicenetwork/sn)|(service/svc))-[0-9a-z]{17}))$", - "type": "string" - } - }, - "required": [ - "ResourceIdentifier" - ] - }, - "permissions": [ - "vpc-lattice:ListAccessLogSubscriptions" - ] - }, - "read": { - "permissions": [ - "vpc-lattice:GetAccessLogSubscription", - "vpc-lattice:ListTagsForResource", - "logs:GetLogDelivery" - ] - }, - "update": { - "permissions": [ - "vpc-lattice:GetAccessLogSubscription", - "vpc-lattice:UpdateAccessLogSubscription", - "vpc-lattice:ListTagsForResource", - "vpc-lattice:TagResource", - "vpc-lattice:UntagResource", - "logs:UpdateLogDelivery", - "firehose:UpdateDestination", - "logs:CreateLogDelivery", - "logs:CreateLogStream", - "logs:PutDestination", - "logs:PutDestinationPolicy", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups", - "logs:GetLogDelivery", - "s3:PutBucketLogging", - "s3:GetBucketLogging", - "s3:GetBucketPolicy", - "s3:PutBucketPolicy", - "firehose:TagDeliveryStream", - "firehose:CreateDeliveryStream", - "firehose:DescribeDeliveryStream" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:accesslogsubscription/als-[0-9a-z]{17}$", - "type": "string" - }, - "DestinationArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", - "type": "string" - }, - "Id": { - "maxLength": 21, - "minLength": 21, - "pattern": "^als-[0-9a-z]{17}$", - "type": "string" - }, - "ResourceArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:((servicenetwork/sn)|(service/svc))-[0-9a-z]{17}$", - "type": "string" - }, - "ResourceId": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^((sn)|(svc))-[0-9a-z]{17}$", - "type": "string" - }, - "ResourceIdentifier": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^((((sn)|(svc))-[0-9a-z]{17})|(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:((servicenetwork/sn)|(service/svc))-[0-9a-z]{17}))$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id", - "/properties/ResourceArn", - "/properties/ResourceId" - ], - "required": [ - "DestinationArn" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "vpc-lattice:UntagResource", - "vpc-lattice:TagResource", - "vpc-lattice:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::VpcLattice::AccessLogSubscription", - "writeOnlyProperties": [ - "/properties/ResourceIdentifier" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/Id" + ], + [ + "/properties/ResourceIdentifier", + "/properties/DestinationArn", + "/properties/ServiceNetworkLogType" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceIdentifier" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Enables access logs to be sent to Amazon CloudWatch, Amazon S3, and Amazon Kinesis Data Firehose. The service network owner can use the access logs to audit the services in the network. The service network owner will only see access logs from clients and services that are associated with their service network. Access log entries represent traffic originated from VPCs associated with that network.", + "handlers": { + "create": { + "permissions": [ + "vpc-lattice:CreateAccessLogSubscription", + "vpc-lattice:TagResource", + "vpc-lattice:GetAccessLogSubscription", + "vpc-lattice:ListTagsForResource", + "logs:CreateLogDelivery", + "logs:CreateLogStream", + "logs:PutDestination", + "logs:PutDestinationPolicy", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "logs:GetLogDelivery", + "s3:PutBucketLogging", + "s3:GetBucketLogging", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "firehose:TagDeliveryStream", + "firehose:CreateDeliveryStream", + "firehose:DescribeDeliveryStream", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "vpc-lattice:DeleteAccessLogSubscription", + "vpc-lattice:UntagResource", + "logs:DeleteLogDelivery", + "logs:DeleteLogStream", + "logs:GetLogDelivery", + "logs:DeleteDestination", + "s3:PutBucketLogging", + "iam:GetServiceLinkedRoleDeletionStatus", + "iam:DeleteServiceLinkedRole", + "firehose:DeleteDeliveryStream", + "firehose:UntagDeliveryStream" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ResourceIdentifier": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((((sn)|(svc))-[0-9a-z]{17})|(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:((servicenetwork/sn)|(service/svc))-[0-9a-z]{17}))$", + "type": "string" + } + }, + "required": [ + "ResourceIdentifier" + ] + }, + "permissions": [ + "vpc-lattice:ListAccessLogSubscriptions", + "logs:GetLogDelivery" + ] + }, + "read": { + "permissions": [ + "vpc-lattice:GetAccessLogSubscription", + "vpc-lattice:ListTagsForResource", + "logs:GetLogDelivery" + ] + }, + "update": { + "permissions": [ + "vpc-lattice:GetAccessLogSubscription", + "vpc-lattice:UpdateAccessLogSubscription", + "vpc-lattice:ListTagsForResource", + "vpc-lattice:TagResource", + "vpc-lattice:UntagResource", + "logs:UpdateLogDelivery", + "firehose:UpdateDestination", + "logs:CreateLogDelivery", + "logs:CreateLogStream", + "logs:PutDestination", + "logs:PutDestinationPolicy", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups", + "logs:GetLogDelivery", + "s3:PutBucketLogging", + "s3:GetBucketLogging", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy", + "firehose:TagDeliveryStream", + "firehose:CreateDeliveryStream", + "firehose:DescribeDeliveryStream" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:accesslogsubscription/als-[0-9a-z]{17}$", + "type": "string" + }, + "DestinationArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", + "type": "string" + }, + "Id": { + "maxLength": 21, + "minLength": 21, + "pattern": "^als-[0-9a-z]{17}$", + "type": "string" + }, + "ResourceArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:((servicenetwork/sn)|(service/svc))-[0-9a-z]{17}$", + "type": "string" + }, + "ResourceId": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((sn)|(svc))-[0-9a-z]{17}$", + "type": "string" + }, + "ResourceIdentifier": { + "maxLength": 2048, + "minLength": 17, + "pattern": "^((((sn)|(svc)|(rcfg))-[0-9a-z]{17})|(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:((servicenetwork/sn)|(resourceconfiguration/rcfg)|(service/svc))-[0-9a-z]{17}))$", + "type": "string" + }, + "ServiceNetworkLogType": { + "enum": [ + "SERVICE", + "RESOURCE" + ], + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/ResourceArn", + "/properties/ResourceId" + ], + "required": [ + "DestinationArn" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "vpc-lattice:UntagResource", + "vpc-lattice:TagResource", + "vpc-lattice:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::VpcLattice::AccessLogSubscription", + "writeOnlyProperties": [ + "/properties/ResourceIdentifier" + ] +} diff --git a/src/schema/aws-vpclattice-authpolicy.json b/src/schema/aws-vpclattice-authpolicy.json index 4310a112..b7a4c666 100644 --- a/src/schema/aws-vpclattice-authpolicy.json +++ b/src/schema/aws-vpclattice-authpolicy.json @@ -1,64 +1,64 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceIdentifier" - ], - "description": "Creates or updates the auth policy.", - "handlers": { - "create": { - "permissions": [ - "vpc-lattice:GetAuthPolicy", - "vpc-lattice:PutAuthPolicy" - ] - }, - "delete": { - "permissions": [ - "vpc-lattice:GetAuthPolicy", - "vpc-lattice:DeleteAuthPolicy" - ] - }, - "read": { - "permissions": [ - "vpc-lattice:GetAuthPolicy" - ] - }, - "update": { - "permissions": [ - "vpc-lattice:GetAuthPolicy", - "vpc-lattice:PutAuthPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/ResourceIdentifier" - ], - "properties": { - "Policy": { - "type": "object" - }, - "ResourceIdentifier": { - "maxLength": 200, - "minLength": 17, - "pattern": "^((((sn)|(svc))-[0-9a-z]{17})|(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:((servicenetwork/sn)|(service/svc))-[0-9a-z]{17}))$", - "type": "string" - }, - "State": { - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/State" - ], - "required": [ - "ResourceIdentifier", - "Policy" - ], - "tagging": { - "taggable": false - }, - "typeName": "AWS::VpcLattice::AuthPolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceIdentifier" + ], + "description": "Creates or updates the auth policy.", + "handlers": { + "create": { + "permissions": [ + "vpc-lattice:GetAuthPolicy", + "vpc-lattice:PutAuthPolicy" + ] + }, + "delete": { + "permissions": [ + "vpc-lattice:GetAuthPolicy", + "vpc-lattice:DeleteAuthPolicy" + ] + }, + "read": { + "permissions": [ + "vpc-lattice:GetAuthPolicy" + ] + }, + "update": { + "permissions": [ + "vpc-lattice:GetAuthPolicy", + "vpc-lattice:PutAuthPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/ResourceIdentifier" + ], + "properties": { + "Policy": { + "type": "object" + }, + "ResourceIdentifier": { + "maxLength": 200, + "minLength": 17, + "pattern": "^((((sn)|(svc))-[0-9a-z]{17})|(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:((servicenetwork/sn)|(service/svc))-[0-9a-z]{17}))$", + "type": "string" + }, + "State": { + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/State" + ], + "required": [ + "ResourceIdentifier", + "Policy" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::VpcLattice::AuthPolicy" +} diff --git a/src/schema/aws-vpclattice-listener.json b/src/schema/aws-vpclattice-listener.json index e5f2fabe..502b2325 100644 --- a/src/schema/aws-vpclattice-listener.json +++ b/src/schema/aws-vpclattice-listener.json @@ -1,248 +1,248 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ServiceIdentifier", - "/properties/Name", - "/properties/Port" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServiceIdentifier", - "/properties/Name", - "/properties/Port", - "/properties/Protocol" - ], - "definitions": { - "DefaultAction": { - "additionalProperties": false, - "properties": { - "FixedResponse": { - "$ref": "#/definitions/FixedResponse" - }, - "Forward": { - "$ref": "#/definitions/Forward" - } - }, - "required": [], - "type": "object" - }, - "FixedResponse": { - "additionalProperties": false, - "properties": { - "StatusCode": { - "maximum": 599, - "minimum": 100, - "type": "integer" - } - }, - "required": [ - "StatusCode" - ], - "type": "object" - }, - "Forward": { - "additionalProperties": false, - "properties": { - "TargetGroups": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/WeightedTargetGroup" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "TargetGroups" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "WeightedTargetGroup": { - "additionalProperties": false, - "properties": { - "TargetGroupIdentifier": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^((tg-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:targetgroup/tg-[0-9a-z]{17}))$", - "type": "string" - }, - "Weight": { - "maximum": 999, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "TargetGroupIdentifier" - ], - "type": "object" - } - }, - "description": "Creates a listener for a service. Before you start using your Amazon VPC Lattice service, you must add one or more listeners. A listener is a process that checks for connection requests to your services.", - "handlers": { - "create": { - "permissions": [ - "vpc-lattice:CreateListener", - "vpc-lattice:TagResource", - "vpc-lattice:GetListener", - "vpc-lattice:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "vpc-lattice:DeleteListener" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ServiceIdentifier": { - "maxLength": 2048, - "minLength": 21, - "pattern": "^((svc-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}))$", - "type": "string" - } - }, - "required": [ - "ServiceIdentifier" - ] - }, - "permissions": [ - "vpc-lattice:ListListeners" - ] - }, - "read": { - "permissions": [ - "vpc-lattice:GetListener", - "vpc-lattice:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "vpc-lattice:UpdateListener", - "vpc-lattice:TagResource", - "vpc-lattice:UntagResource", - "vpc-lattice:GetListener", - "vpc-lattice:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:service/svc-[0-9a-z]{17}/listener/listener-[0-9a-z]{17}$", - "type": "string" - }, - "DefaultAction": { - "$ref": "#/definitions/DefaultAction" - }, - "Id": { - "maxLength": 26, - "minLength": 26, - "pattern": "^listener-[0-9a-z]{17}$", - "type": "string" - }, - "Name": { - "maxLength": 63, - "minLength": 3, - "pattern": "^(?!listener-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", - "type": "string" - }, - "Port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "Protocol": { - "enum": [ - "HTTP", - "HTTPS", - "TLS_PASSTHROUGH" - ], - "type": "string" - }, - "ServiceArn": { - "maxLength": 2048, - "minLength": 21, - "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}$", - "type": "string" - }, - "ServiceId": { - "maxLength": 21, - "minLength": 21, - "pattern": "^svc-[0-9a-z]{17}$", - "type": "string" - }, - "ServiceIdentifier": { - "maxLength": 2048, - "minLength": 21, - "pattern": "^((svc-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}))$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "propertyTransform": { - "/properties/DefaultAction/Forward/TargetGroups/*/TargetGroupIdentifier": "$split(TargetGroupIdentifier, \"/\")[-1]" - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id", - "/properties/ServiceArn", - "/properties/ServiceId" - ], - "required": [ - "DefaultAction", - "Protocol" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "vpc-lattice:UntagResource", - "vpc-lattice:TagResource", - "vpc-lattice:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::VpcLattice::Listener", - "writeOnlyProperties": [ - "/properties/ServiceIdentifier" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/ServiceIdentifier", + "/properties/Name", + "/properties/Port" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServiceIdentifier", + "/properties/Name", + "/properties/Port", + "/properties/Protocol" + ], + "definitions": { + "DefaultAction": { + "additionalProperties": false, + "properties": { + "FixedResponse": { + "$ref": "#/definitions/FixedResponse" + }, + "Forward": { + "$ref": "#/definitions/Forward" + } + }, + "required": [], + "type": "object" + }, + "FixedResponse": { + "additionalProperties": false, + "properties": { + "StatusCode": { + "maximum": 599, + "minimum": 100, + "type": "integer" + } + }, + "required": [ + "StatusCode" + ], + "type": "object" + }, + "Forward": { + "additionalProperties": false, + "properties": { + "TargetGroups": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/WeightedTargetGroup" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "TargetGroups" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "WeightedTargetGroup": { + "additionalProperties": false, + "properties": { + "TargetGroupIdentifier": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((tg-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:targetgroup/tg-[0-9a-z]{17}))$", + "type": "string" + }, + "Weight": { + "maximum": 999, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "TargetGroupIdentifier" + ], + "type": "object" + } + }, + "description": "Creates a listener for a service. Before you start using your Amazon VPC Lattice service, you must add one or more listeners. A listener is a process that checks for connection requests to your services.", + "handlers": { + "create": { + "permissions": [ + "vpc-lattice:CreateListener", + "vpc-lattice:TagResource", + "vpc-lattice:GetListener", + "vpc-lattice:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "vpc-lattice:DeleteListener" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ServiceIdentifier": { + "maxLength": 2048, + "minLength": 21, + "pattern": "^((svc-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}))$", + "type": "string" + } + }, + "required": [ + "ServiceIdentifier" + ] + }, + "permissions": [ + "vpc-lattice:ListListeners" + ] + }, + "read": { + "permissions": [ + "vpc-lattice:GetListener", + "vpc-lattice:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "vpc-lattice:UpdateListener", + "vpc-lattice:TagResource", + "vpc-lattice:UntagResource", + "vpc-lattice:GetListener", + "vpc-lattice:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:service/svc-[0-9a-z]{17}/listener/listener-[0-9a-z]{17}$", + "type": "string" + }, + "DefaultAction": { + "$ref": "#/definitions/DefaultAction" + }, + "Id": { + "maxLength": 26, + "minLength": 26, + "pattern": "^listener-[0-9a-z]{17}$", + "type": "string" + }, + "Name": { + "maxLength": 63, + "minLength": 3, + "pattern": "^(?!listener-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", + "type": "string" + }, + "Port": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "Protocol": { + "enum": [ + "HTTP", + "HTTPS", + "TLS_PASSTHROUGH" + ], + "type": "string" + }, + "ServiceArn": { + "maxLength": 2048, + "minLength": 21, + "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}$", + "type": "string" + }, + "ServiceId": { + "maxLength": 21, + "minLength": 21, + "pattern": "^svc-[0-9a-z]{17}$", + "type": "string" + }, + "ServiceIdentifier": { + "maxLength": 2048, + "minLength": 21, + "pattern": "^((svc-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}))$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": { + "/properties/DefaultAction/Forward/TargetGroups/*/TargetGroupIdentifier": "$split(TargetGroupIdentifier, \"/\")[-1]" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/ServiceArn", + "/properties/ServiceId" + ], + "required": [ + "DefaultAction", + "Protocol" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "vpc-lattice:UntagResource", + "vpc-lattice:TagResource", + "vpc-lattice:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::VpcLattice::Listener", + "writeOnlyProperties": [ + "/properties/ServiceIdentifier" + ] +} diff --git a/src/schema/aws-vpclattice-resourceconfiguration.json b/src/schema/aws-vpclattice-resourceconfiguration.json new file mode 100644 index 00000000..574c3b44 --- /dev/null +++ b/src/schema/aws-vpclattice-resourceconfiguration.json @@ -0,0 +1,258 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Id" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceGatewayId", + "/properties/ResourceConfigurationType", + "/properties/ProtocolType", + "/properties/ResourceConfigurationAuthType" + ], + "definitions": { + "ArnResource": { + "maxLength": 1224, + "pattern": "^arn.*", + "type": "string" + }, + "DnsResource": { + "additionalProperties": false, + "properties": { + "DomainName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "IpAddressType": { + "enum": [ + "IPV4", + "IPV6", + "DUALSTACK" + ], + "type": "string" + } + }, + "required": [ + "DomainName", + "IpAddressType" + ], + "type": "object" + }, + "Id": { + "maxLength": 22, + "minLength": 22, + "pattern": "^rcfg-[0-9a-z]{17}$", + "type": "string" + }, + "IpResource": { + "maxLength": 39, + "minLength": 4, + "type": "string" + }, + "PortRange": { + "maxLength": 11, + "minLength": 1, + "pattern": "^((\\d{1,5}\\-\\d{1,5})|(\\d+))$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "VpcLattice ResourceConfiguration CFN resource", + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSubnets", + "vpc-lattice:CreateResourceConfiguration", + "vpc-lattice:GetResourceConfiguration", + "vpc-lattice:TagResource", + "vpc-lattice:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "vpc-lattice:DeleteResourceConfiguration", + "vpc-lattice:GetResourceConfiguration", + "vpc-lattice:UntagResource" + ] + }, + "list": { + "permissions": [ + "vpc-lattice:ListResourceConfigurations" + ] + }, + "read": { + "permissions": [ + "vpc-lattice:GetResourceConfiguration", + "vpc-lattice:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ec2:DescribeSubnets", + "vpc-lattice:TagResource", + "vpc-lattice:UntagResource", + "vpc-lattice:ListTagsForResource", + "vpc-lattice:UpdateResourceConfiguration", + "vpc-lattice:GetResourceConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AllowAssociationToSharableServiceNetwork": { + "type": "boolean" + }, + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[a-z0-9f\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:resourceconfiguration/rcfg-[0-9a-z]{17}$", + "type": "string" + }, + "Id": { + "$ref": "#/definitions/Id" + }, + "Name": { + "maxLength": 40, + "minLength": 3, + "pattern": "^(?!rcfg-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", + "type": "string" + }, + "PortRanges": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PortRange" + }, + "type": "array" + }, + "ProtocolType": { + "enum": [ + "TCP" + ], + "type": "string" + }, + "ResourceConfigurationAuthType": { + "enum": [ + "NONE", + "AWS_IAM" + ], + "type": "string" + }, + "ResourceConfigurationDefinition": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "IpResource": { + "$ref": "#/definitions/IpResource" + } + }, + "required": [ + "IpResource" + ], + "title": "IpResource", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "ArnResource": { + "$ref": "#/definitions/ArnResource" + } + }, + "required": [ + "ArnResource" + ], + "title": "ArnResource", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "DnsResource": { + "$ref": "#/definitions/DnsResource" + } + }, + "required": [ + "DnsResource" + ], + "title": "DnsResource", + "type": "object" + } + ], + "type": "object" + }, + "ResourceConfigurationGroupId": { + "$ref": "#/definitions/Id" + }, + "ResourceConfigurationType": { + "enum": [ + "GROUP", + "CHILD", + "SINGLE", + "ARN" + ], + "type": "string" + }, + "ResourceGatewayId": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Name", + "ResourceConfigurationType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "vpc-lattice:UntagResource", + "vpc-lattice:TagResource", + "vpc-lattice:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::VpcLattice::ResourceConfiguration", + "writeOnlyProperties": [ + "/properties/ResourceConfigurationAuthType", + "/properties/ResourceConfigurationGroupId" + ] +} diff --git a/src/schema/aws-vpclattice-resourcegateway.json b/src/schema/aws-vpclattice-resourcegateway.json new file mode 100644 index 00000000..48e4fef1 --- /dev/null +++ b/src/schema/aws-vpclattice-resourcegateway.json @@ -0,0 +1,189 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Id" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/VpcIdentifier", + "/properties/SubnetIds", + "/properties/IpAddressType", + "/properties/Name" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "description": "Creates a resource gateway for a service. ", + "handlers": { + "create": { + "permissions": [ + "vpc-lattice:CreateResourceGateway", + "vpc-lattice:GetResourceGateway", + "vpc-lattice:TagResource", + "vpc-lattice:ListTagsForResource", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups" + ] + }, + "delete": { + "permissions": [ + "vpc-lattice:DeleteResourceGateway", + "vpc-lattice:GetResourceGateway", + "vpc-lattice:UntagResource" + ] + }, + "list": { + "permissions": [ + "vpc-lattice:ListResourceGateways" + ] + }, + "read": { + "permissions": [ + "vpc-lattice:GetResourceGateway", + "vpc-lattice:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "vpc-lattice:UpdateResourceGateway", + "vpc-lattice:GetResourceGateway", + "vpc-lattice:TagResource", + "vpc-lattice:UntagResource", + "vpc-lattice:ListTagsForResource", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:resourcegateway/rgw-[0-9a-z]{17}$", + "type": "string" + }, + "Id": { + "maxLength": 2048, + "minLength": 17, + "pattern": "^((rgw-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:resourcegateway/rgw-[0-9a-z]{17}))$", + "type": "string" + }, + "IpAddressType": { + "enum": [ + "IPV4", + "IPV6", + "DUALSTACK" + ], + "type": "string" + }, + "Name": { + "maxLength": 40, + "minLength": 3, + "pattern": "^(?!rgw-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", + "type": "string" + }, + "SecurityGroupIds": { + "description": "The ID of one or more security groups to associate with the endpoint network interface.", + "insertionOrder": false, + "items": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/GroupId", + "typeName": "AWS::EC2::SecurityGroup" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/Id", + "typeName": "AWS::EC2::SecurityGroup" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/DefaultSecurityGroup", + "typeName": "AWS::EC2::VPC" + } + } + ], + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetIds": { + "description": "The ID of one or more subnets in which to create an endpoint network interface.", + "insertionOrder": false, + "items": { + "relationshipRef": { + "propertyPath": "/properties/SubnetId", + "typeName": "AWS::EC2::Subnet" + }, + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "VpcIdentifier": { + "maxLength": 50, + "minLength": 5, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "required": [ + "Name", + "VpcIdentifier", + "SubnetIds" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "vpc-lattice:UntagResource", + "vpc-lattice:TagResource", + "vpc-lattice:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::VpcLattice::ResourceGateway" +} diff --git a/src/schema/aws-vpclattice-resourcepolicy.json b/src/schema/aws-vpclattice-resourcepolicy.json index e695f443..b55cbacd 100644 --- a/src/schema/aws-vpclattice-resourcepolicy.json +++ b/src/schema/aws-vpclattice-resourcepolicy.json @@ -1,54 +1,54 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceArn" - ], - "description": "Retrieves information about the resource policy. The resource policy is an IAM policy created by AWS RAM on behalf of the resource owner when they share a resource.", - "handlers": { - "create": { - "permissions": [ - "vpc-lattice:GetResourcePolicy", - "vpc-lattice:PutResourcePolicy" - ] - }, - "delete": { - "permissions": [ - "vpc-lattice:GetResourcePolicy", - "vpc-lattice:DeleteResourcePolicy" - ] - }, - "read": { - "permissions": [ - "vpc-lattice:GetResourcePolicy" - ] - }, - "update": { - "permissions": [ - "vpc-lattice:GetResourcePolicy", - "vpc-lattice:PutResourcePolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/ResourceArn" - ], - "properties": { - "Policy": { - "type": "object" - }, - "ResourceArn": { - "maxLength": 200, - "minLength": 20, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:((servicenetwork/sn)|(service/svc))-[0-9a-z]{17}$", - "type": "string" - } - }, - "required": [ - "ResourceArn", - "Policy" - ], - "tagging": { - "taggable": false - }, - "typeName": "AWS::VpcLattice::ResourcePolicy" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceArn" + ], + "description": "Retrieves information about the resource policy. The resource policy is an IAM policy created by AWS RAM on behalf of the resource owner when they share a resource.", + "handlers": { + "create": { + "permissions": [ + "vpc-lattice:GetResourcePolicy", + "vpc-lattice:PutResourcePolicy" + ] + }, + "delete": { + "permissions": [ + "vpc-lattice:GetResourcePolicy", + "vpc-lattice:DeleteResourcePolicy" + ] + }, + "read": { + "permissions": [ + "vpc-lattice:GetResourcePolicy" + ] + }, + "update": { + "permissions": [ + "vpc-lattice:GetResourcePolicy", + "vpc-lattice:PutResourcePolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/ResourceArn" + ], + "properties": { + "Policy": { + "type": "object" + }, + "ResourceArn": { + "maxLength": 200, + "minLength": 20, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:((servicenetwork/sn)|(service/svc))-[0-9a-z]{17}$", + "type": "string" + } + }, + "required": [ + "ResourceArn", + "Policy" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::VpcLattice::ResourcePolicy" +} diff --git a/src/schema/aws-vpclattice-rule.json b/src/schema/aws-vpclattice-rule.json index cca1622c..26fca78e 100644 --- a/src/schema/aws-vpclattice-rule.json +++ b/src/schema/aws-vpclattice-rule.json @@ -1,365 +1,365 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/ServiceIdentifier", - "/properties/ListenerIdentifier", - "/properties/Name" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ListenerIdentifier", - "/properties/ServiceIdentifier", - "/properties/Name" - ], - "definitions": { - "Action": { - "additionalProperties": false, - "properties": { - "FixedResponse": { - "$ref": "#/definitions/FixedResponse" - }, - "Forward": { - "$ref": "#/definitions/Forward" - } - }, - "required": [], - "title": "Forward", - "type": "object" - }, - "FixedResponse": { - "additionalProperties": false, - "properties": { - "StatusCode": { - "maximum": 599, - "minimum": 100, - "type": "integer" - } - }, - "required": [ - "StatusCode" - ], - "type": "object" - }, - "Forward": { - "additionalProperties": false, - "properties": { - "TargetGroups": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/WeightedTargetGroup" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "TargetGroups" - ], - "type": "object" - }, - "HeaderMatch": { - "additionalProperties": false, - "properties": { - "CaseSensitive": { - "default": false, - "type": "boolean" - }, - "Match": { - "$ref": "#/definitions/HeaderMatchType" - }, - "Name": { - "maxLength": 40, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Match", - "Name" - ], - "type": "object" - }, - "HeaderMatchType": { - "additionalProperties": false, - "properties": { - "Contains": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Exact": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Prefix": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "HttpMatch": { - "additionalProperties": false, - "properties": { - "HeaderMatches": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/HeaderMatch" - }, - "maxItems": 5, - "type": "array" - }, - "Method": { - "enum": [ - "CONNECT", - "DELETE", - "GET", - "HEAD", - "OPTIONS", - "POST", - "PUT", - "TRACE" - ], - "type": "string" - }, - "PathMatch": { - "$ref": "#/definitions/PathMatch" - } - }, - "type": "object" - }, - "Match": { - "additionalProperties": false, - "properties": { - "HttpMatch": { - "$ref": "#/definitions/HttpMatch" - } - }, - "required": [ - "HttpMatch" - ], - "title": "HttpMatch", - "type": "object" - }, - "PathMatch": { - "additionalProperties": false, - "properties": { - "CaseSensitive": { - "default": false, - "type": "boolean" - }, - "Match": { - "$ref": "#/definitions/PathMatchType" - } - }, - "required": [ - "Match" - ], - "type": "object" - }, - "PathMatchType": { - "additionalProperties": false, - "properties": { - "Exact": { - "maxLength": 128, - "minLength": 1, - "pattern": "^\\/[a-zA-Z0-9@:%_+.~#?&\\/=-]*$", - "type": "string" - }, - "Prefix": { - "maxLength": 128, - "minLength": 1, - "pattern": "^\\/[a-zA-Z0-9@:%_+.~#?&\\/=-]*$", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "WeightedTargetGroup": { - "additionalProperties": false, - "properties": { - "TargetGroupIdentifier": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^((tg-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:targetgroup/tg-[0-9a-z]{17}))$", - "type": "string" - }, - "Weight": { - "maximum": 999, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "TargetGroupIdentifier" - ], - "type": "object" - } - }, - "description": "Creates a listener rule. Each listener has a default rule for checking connection requests, but you can define additional rules. Each rule consists of a priority, one or more actions, and one or more conditions.", - "handlers": { - "create": { - "permissions": [ - "vpc-lattice:CreateRule", - "vpc-lattice:GetRule", - "vpc-lattice:ListTagsForResource", - "vpc-lattice:TagResource" - ] - }, - "delete": { - "permissions": [ - "vpc-lattice:DeleteRule", - "vpc-lattice:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ListenerIdentifier": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^((listener-[0-9a-z]{17})|(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:service/svc-[0-9a-z]{17}/listener/listener-[0-9a-z]{17}))$", - "type": "string" - }, - "ServiceIdentifier": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^((svc-[0-9a-z]{17})|(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:service/svc-[0-9a-z]{17}))$", - "type": "string" - } - }, - "required": [ - "ServiceIdentifier", - "ListenerIdentifier" - ] - }, - "permissions": [ - "vpc-lattice:ListRules" - ] - }, - "read": { - "permissions": [ - "vpc-lattice:GetRule", - "vpc-lattice:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "vpc-lattice:UpdateRule", - "vpc-lattice:GetRule", - "vpc-lattice:TagResource", - "vpc-lattice:UntagResource", - "vpc-lattice:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Action": { - "$ref": "#/definitions/Action" - }, - "Arn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:service/svc-[0-9a-z]{17}/listener/listener-[0-9a-z]{17}/rule/((rule-[0-9a-z]{17})|(default))$", - "type": "string" - }, - "Id": { - "maxLength": 22, - "minLength": 7, - "pattern": "^((rule-[0-9a-z]{17})|(default))$", - "type": "string" - }, - "ListenerIdentifier": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^((listener-[0-9a-z]{17})|(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:service/svc-[0-9a-z]{17}/listener/listener-[0-9a-z]{17}))$", - "type": "string" - }, - "Match": { - "$ref": "#/definitions/Match" - }, - "Name": { - "maxLength": 63, - "minLength": 3, - "pattern": "^(?!rule-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", - "type": "string" - }, - "Priority": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "ServiceIdentifier": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^((svc-[0-9a-z]{17})|(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:service/svc-[0-9a-z]{17}))$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "propertyTransform": { - "/properties/Action/Forward/TargetGroups/*/TargetGroupIdentifier": "$split(TargetGroupIdentifier, \"/\")[-1]" - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id" - ], - "required": [ - "Action", - "Match", - "Priority" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "vpc-lattice:UntagResource", - "vpc-lattice:TagResource", - "vpc-lattice:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::VpcLattice::Rule", - "writeOnlyProperties": [ - "/properties/ListenerIdentifier", - "/properties/ServiceIdentifier" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/ServiceIdentifier", + "/properties/ListenerIdentifier", + "/properties/Name" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ListenerIdentifier", + "/properties/ServiceIdentifier", + "/properties/Name" + ], + "definitions": { + "Action": { + "additionalProperties": false, + "properties": { + "FixedResponse": { + "$ref": "#/definitions/FixedResponse" + }, + "Forward": { + "$ref": "#/definitions/Forward" + } + }, + "required": [], + "title": "Forward", + "type": "object" + }, + "FixedResponse": { + "additionalProperties": false, + "properties": { + "StatusCode": { + "maximum": 599, + "minimum": 100, + "type": "integer" + } + }, + "required": [ + "StatusCode" + ], + "type": "object" + }, + "Forward": { + "additionalProperties": false, + "properties": { + "TargetGroups": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/WeightedTargetGroup" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "TargetGroups" + ], + "type": "object" + }, + "HeaderMatch": { + "additionalProperties": false, + "properties": { + "CaseSensitive": { + "default": false, + "type": "boolean" + }, + "Match": { + "$ref": "#/definitions/HeaderMatchType" + }, + "Name": { + "maxLength": 40, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Match", + "Name" + ], + "type": "object" + }, + "HeaderMatchType": { + "additionalProperties": false, + "properties": { + "Contains": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Exact": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "HttpMatch": { + "additionalProperties": false, + "properties": { + "HeaderMatches": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/HeaderMatch" + }, + "maxItems": 5, + "type": "array" + }, + "Method": { + "enum": [ + "CONNECT", + "DELETE", + "GET", + "HEAD", + "OPTIONS", + "POST", + "PUT", + "TRACE" + ], + "type": "string" + }, + "PathMatch": { + "$ref": "#/definitions/PathMatch" + } + }, + "type": "object" + }, + "Match": { + "additionalProperties": false, + "properties": { + "HttpMatch": { + "$ref": "#/definitions/HttpMatch" + } + }, + "required": [ + "HttpMatch" + ], + "title": "HttpMatch", + "type": "object" + }, + "PathMatch": { + "additionalProperties": false, + "properties": { + "CaseSensitive": { + "default": false, + "type": "boolean" + }, + "Match": { + "$ref": "#/definitions/PathMatchType" + } + }, + "required": [ + "Match" + ], + "type": "object" + }, + "PathMatchType": { + "additionalProperties": false, + "properties": { + "Exact": { + "maxLength": 128, + "minLength": 1, + "pattern": "^\\/[a-zA-Z0-9@:%_+.~#?&\\/=-]*$", + "type": "string" + }, + "Prefix": { + "maxLength": 128, + "minLength": 1, + "pattern": "^\\/[a-zA-Z0-9@:%_+.~#?&\\/=-]*$", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "WeightedTargetGroup": { + "additionalProperties": false, + "properties": { + "TargetGroupIdentifier": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((tg-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:targetgroup/tg-[0-9a-z]{17}))$", + "type": "string" + }, + "Weight": { + "maximum": 999, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "TargetGroupIdentifier" + ], + "type": "object" + } + }, + "description": "Creates a listener rule. Each listener has a default rule for checking connection requests, but you can define additional rules. Each rule consists of a priority, one or more actions, and one or more conditions.", + "handlers": { + "create": { + "permissions": [ + "vpc-lattice:CreateRule", + "vpc-lattice:GetRule", + "vpc-lattice:ListTagsForResource", + "vpc-lattice:TagResource" + ] + }, + "delete": { + "permissions": [ + "vpc-lattice:DeleteRule", + "vpc-lattice:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ListenerIdentifier": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((listener-[0-9a-z]{17})|(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:service/svc-[0-9a-z]{17}/listener/listener-[0-9a-z]{17}))$", + "type": "string" + }, + "ServiceIdentifier": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((svc-[0-9a-z]{17})|(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:service/svc-[0-9a-z]{17}))$", + "type": "string" + } + }, + "required": [ + "ServiceIdentifier", + "ListenerIdentifier" + ] + }, + "permissions": [ + "vpc-lattice:ListRules" + ] + }, + "read": { + "permissions": [ + "vpc-lattice:GetRule", + "vpc-lattice:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "vpc-lattice:UpdateRule", + "vpc-lattice:GetRule", + "vpc-lattice:TagResource", + "vpc-lattice:UntagResource", + "vpc-lattice:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Action": { + "$ref": "#/definitions/Action" + }, + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:service/svc-[0-9a-z]{17}/listener/listener-[0-9a-z]{17}/rule/((rule-[0-9a-z]{17})|(default))$", + "type": "string" + }, + "Id": { + "maxLength": 22, + "minLength": 7, + "pattern": "^((rule-[0-9a-z]{17})|(default))$", + "type": "string" + }, + "ListenerIdentifier": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((listener-[0-9a-z]{17})|(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:service/svc-[0-9a-z]{17}/listener/listener-[0-9a-z]{17}))$", + "type": "string" + }, + "Match": { + "$ref": "#/definitions/Match" + }, + "Name": { + "maxLength": 63, + "minLength": 3, + "pattern": "^(?!rule-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", + "type": "string" + }, + "Priority": { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "ServiceIdentifier": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((svc-[0-9a-z]{17})|(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:service/svc-[0-9a-z]{17}))$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": { + "/properties/Action/Forward/TargetGroups/*/TargetGroupIdentifier": "$split(TargetGroupIdentifier, \"/\")[-1]" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id" + ], + "required": [ + "Action", + "Match", + "Priority" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "vpc-lattice:UntagResource", + "vpc-lattice:TagResource", + "vpc-lattice:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::VpcLattice::Rule", + "writeOnlyProperties": [ + "/properties/ListenerIdentifier", + "/properties/ServiceIdentifier" + ] +} diff --git a/src/schema/aws-vpclattice-service.json b/src/schema/aws-vpclattice-service.json index 5f8c47be..f82f5a06 100644 --- a/src/schema/aws-vpclattice-service.json +++ b/src/schema/aws-vpclattice-service.json @@ -1,182 +1,182 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Id" - ], - [ - "/properties/Name" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/CustomDomainName" - ], - "definitions": { - "DnsEntry": { - "additionalProperties": false, - "properties": { - "DomainName": { - "type": "string" - }, - "HostedZoneId": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "A service is any software application that can run on instances containers, or serverless functions within an account or virtual private cloud (VPC).", - "handlers": { - "create": { - "permissions": [ - "vpc-lattice:CreateService", - "vpc-lattice:GetService", - "vpc-lattice:ListTagsForResource", - "vpc-lattice:TagResource", - "acm:DescribeCertificate", - "acm:ListCertificates", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "vpc-lattice:DeleteService", - "vpc-lattice:GetService", - "vpc-lattice:UntagResource" - ] - }, - "list": { - "permissions": [ - "vpc-lattice:ListServices" - ] - }, - "read": { - "permissions": [ - "vpc-lattice:GetService", - "vpc-lattice:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "vpc-lattice:UpdateService", - "vpc-lattice:TagResource", - "vpc-lattice:UntagResource", - "vpc-lattice:GetService", - "vpc-lattice:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}$", - "type": "string" - }, - "AuthType": { - "default": "NONE", - "enum": [ - "NONE", - "AWS_IAM" - ], - "type": "string" - }, - "CertificateArn": { - "maxLength": 2048, - "pattern": "^(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:certificate/[0-9a-z-]+)?$", - "type": "string" - }, - "CreatedAt": { - "type": "string" - }, - "CustomDomainName": { - "maxLength": 255, - "minLength": 3, - "type": "string" - }, - "DnsEntry": { - "$ref": "#/definitions/DnsEntry" - }, - "Id": { - "maxLength": 21, - "minLength": 21, - "pattern": "^svc-[0-9a-z]{17}$", - "type": "string" - }, - "LastUpdatedAt": { - "type": "string" - }, - "Name": { - "maxLength": 40, - "minLength": 3, - "pattern": "^(?!svc-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", - "type": "string" - }, - "Status": { - "enum": [ - "ACTIVE", - "CREATE_IN_PROGRESS", - "DELETE_IN_PROGRESS", - "CREATE_FAILED", - "DELETE_FAILED" - ], - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/DnsEntry/DomainName", - "/properties/DnsEntry/HostedZoneId", - "/properties/Id", - "/properties/LastUpdatedAt", - "/properties/Status" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "vpc-lattice:UntagResource", - "vpc-lattice:TagResource", - "vpc-lattice:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::VpcLattice::Service" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Id" + ], + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/CustomDomainName" + ], + "definitions": { + "DnsEntry": { + "additionalProperties": false, + "properties": { + "DomainName": { + "type": "string" + }, + "HostedZoneId": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "A service is any software application that can run on instances containers, or serverless functions within an account or virtual private cloud (VPC).", + "handlers": { + "create": { + "permissions": [ + "vpc-lattice:CreateService", + "vpc-lattice:GetService", + "vpc-lattice:ListTagsForResource", + "vpc-lattice:TagResource", + "acm:DescribeCertificate", + "acm:ListCertificates", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "vpc-lattice:DeleteService", + "vpc-lattice:GetService", + "vpc-lattice:UntagResource" + ] + }, + "list": { + "permissions": [ + "vpc-lattice:ListServices" + ] + }, + "read": { + "permissions": [ + "vpc-lattice:GetService", + "vpc-lattice:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "vpc-lattice:UpdateService", + "vpc-lattice:TagResource", + "vpc-lattice:UntagResource", + "vpc-lattice:GetService", + "vpc-lattice:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}$", + "type": "string" + }, + "AuthType": { + "default": "NONE", + "enum": [ + "NONE", + "AWS_IAM" + ], + "type": "string" + }, + "CertificateArn": { + "maxLength": 2048, + "pattern": "^(arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:certificate/[0-9a-z-]+)?$", + "type": "string" + }, + "CreatedAt": { + "type": "string" + }, + "CustomDomainName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "DnsEntry": { + "$ref": "#/definitions/DnsEntry" + }, + "Id": { + "maxLength": 21, + "minLength": 21, + "pattern": "^svc-[0-9a-z]{17}$", + "type": "string" + }, + "LastUpdatedAt": { + "type": "string" + }, + "Name": { + "maxLength": 40, + "minLength": 3, + "pattern": "^(?!svc-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", + "type": "string" + }, + "Status": { + "enum": [ + "ACTIVE", + "CREATE_IN_PROGRESS", + "DELETE_IN_PROGRESS", + "CREATE_FAILED", + "DELETE_FAILED" + ], + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/DnsEntry/DomainName", + "/properties/DnsEntry/HostedZoneId", + "/properties/Id", + "/properties/LastUpdatedAt", + "/properties/Status" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "vpc-lattice:UntagResource", + "vpc-lattice:TagResource", + "vpc-lattice:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::VpcLattice::Service" +} diff --git a/src/schema/aws-vpclattice-servicenetwork.json b/src/schema/aws-vpclattice-servicenetwork.json index ed412c37..b29f40be 100644 --- a/src/schema/aws-vpclattice-servicenetwork.json +++ b/src/schema/aws-vpclattice-servicenetwork.json @@ -1,140 +1,155 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Id" - ], - [ - "/properties/Name" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "A service network is a logical boundary for a collection of services. You can associate services and VPCs with a service network.", - "handlers": { - "create": { - "permissions": [ - "vpc-lattice:GetServiceNetwork", - "vpc-lattice:ListTagsForResource", - "vpc-lattice:CreateServiceNetwork", - "vpc-lattice:TagResource", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "vpc-lattice:DeleteServiceNetwork", - "vpc-lattice:UntagResource" - ] - }, - "list": { - "permissions": [ - "vpc-lattice:ListServiceNetworks" - ] - }, - "read": { - "permissions": [ - "vpc-lattice:GetServiceNetwork", - "vpc-lattice:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "vpc-lattice:GetServiceNetwork", - "vpc-lattice:UpdateServiceNetwork", - "vpc-lattice:TagResource", - "vpc-lattice:UntagResource", - "vpc-lattice:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}$", - "type": "string" - }, - "AuthType": { - "default": "NONE", - "enum": [ - "NONE", - "AWS_IAM" - ], - "type": "string" - }, - "CreatedAt": { - "type": "string" - }, - "Id": { - "maxLength": 20, - "minLength": 20, - "pattern": "^sn-[0-9a-z]{17}$", - "type": "string" - }, - "LastUpdatedAt": { - "type": "string" - }, - "Name": { - "maxLength": 63, - "minLength": 3, - "pattern": "^(?!servicenetwork-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/Id", - "/properties/LastUpdatedAt" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "vpc-lattice:UntagResource", - "vpc-lattice:TagResource", - "vpc-lattice:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::VpcLattice::ServiceNetwork" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Id" + ], + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "SharingConfig": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "A service network is a logical boundary for a collection of services. You can associate services and VPCs with a service network.", + "handlers": { + "create": { + "permissions": [ + "vpc-lattice:GetServiceNetwork", + "vpc-lattice:ListTagsForResource", + "vpc-lattice:CreateServiceNetwork", + "vpc-lattice:TagResource", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "vpc-lattice:DeleteServiceNetwork", + "vpc-lattice:UntagResource" + ] + }, + "list": { + "permissions": [ + "vpc-lattice:ListServiceNetworks" + ] + }, + "read": { + "permissions": [ + "vpc-lattice:GetServiceNetwork", + "vpc-lattice:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "vpc-lattice:GetServiceNetwork", + "vpc-lattice:UpdateServiceNetwork", + "vpc-lattice:TagResource", + "vpc-lattice:UntagResource", + "vpc-lattice:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}$", + "type": "string" + }, + "AuthType": { + "default": "NONE", + "enum": [ + "NONE", + "AWS_IAM" + ], + "type": "string" + }, + "CreatedAt": { + "type": "string" + }, + "Id": { + "maxLength": 20, + "minLength": 20, + "pattern": "^sn-[0-9a-z]{17}$", + "type": "string" + }, + "LastUpdatedAt": { + "type": "string" + }, + "Name": { + "maxLength": 63, + "minLength": 3, + "pattern": "^(?!servicenetwork-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", + "type": "string" + }, + "SharingConfig": { + "$ref": "#/definitions/SharingConfig" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/Id", + "/properties/LastUpdatedAt" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "vpc-lattice:UntagResource", + "vpc-lattice:TagResource", + "vpc-lattice:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::VpcLattice::ServiceNetwork" +} diff --git a/src/schema/aws-vpclattice-servicenetworkresourceassociation.json b/src/schema/aws-vpclattice-servicenetworkresourceassociation.json new file mode 100644 index 00000000..195fc419 --- /dev/null +++ b/src/schema/aws-vpclattice-servicenetworkresourceassociation.json @@ -0,0 +1,129 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Id" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceConfigurationId", + "/properties/ServiceNetworkId" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "VpcLattice ServiceNetworkResourceAssociation CFN resource", + "handlers": { + "create": { + "permissions": [ + "vpc-lattice:CreateServiceNetworkResourceAssociation", + "vpc-lattice:GetServiceNetworkResourceAssociation", + "vpc-lattice:TagResource", + "vpc-lattice:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "vpc-lattice:DeleteServiceNetworkResourceAssociation", + "vpc-lattice:GetServiceNetworkResourceAssociation", + "vpc-lattice:UntagResource" + ] + }, + "list": { + "permissions": [ + "vpc-lattice:ListServiceNetworkResourceAssociations" + ] + }, + "read": { + "permissions": [ + "vpc-lattice:GetServiceNetworkResourceAssociation", + "vpc-lattice:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "vpc-lattice:TagResource", + "vpc-lattice:UntagResource", + "vpc-lattice:GetServiceNetworkResourceAssociation", + "vpc-lattice:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 22, + "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkresourceassociation/snra-[0-9a-f]{17}$", + "type": "string" + }, + "Id": { + "maxLength": 22, + "minLength": 22, + "pattern": "^snra-[0-9a-f]{17}$", + "type": "string" + }, + "ResourceConfigurationId": { + "maxLength": 2048, + "minLength": 17, + "pattern": "^rcfg-[0-9a-z]{17}$", + "type": "string" + }, + "ServiceNetworkId": { + "maxLength": 2048, + "minLength": 3, + "pattern": "^((sn-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}))$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "vpc-lattice:UntagResource", + "vpc-lattice:TagResource", + "vpc-lattice:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::VpcLattice::ServiceNetworkResourceAssociation" +} diff --git a/src/schema/aws-vpclattice-servicenetworkserviceassociation.json b/src/schema/aws-vpclattice-servicenetworkserviceassociation.json index 2dc80bc8..50624f1f 100644 --- a/src/schema/aws-vpclattice-servicenetworkserviceassociation.json +++ b/src/schema/aws-vpclattice-servicenetworkserviceassociation.json @@ -1,226 +1,226 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Id" - ], - [ - "/properties/ServiceNetworkIdentifier", - "/properties/ServiceIdentifier" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServiceNetworkIdentifier", - "/properties/ServiceIdentifier" - ], - "definitions": { - "DnsEntry": { - "additionalProperties": false, - "properties": { - "DomainName": { - "type": "string" - }, - "HostedZoneId": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Associates a service with a service network.", - "handlers": { - "create": { - "permissions": [ - "vpc-lattice:CreateServiceNetworkServiceAssociation", - "vpc-lattice:GetServiceNetworkServiceAssociation", - "vpc-lattice:TagResource", - "vpc-lattice:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "vpc-lattice:DeleteServiceNetworkServiceAssociation", - "vpc-lattice:GetServiceNetworkServiceAssociation", - "vpc-lattice:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ServiceIdentifier": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^((svc-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}))$", - "type": "string" - }, - "ServiceNetworkIdentifier": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^((sn-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}))$", - "type": "string" - } - }, - "required": [] - }, - "permissions": [ - "vpc-lattice:ListServiceNetworkServiceAssociations" - ] - }, - "read": { - "permissions": [ - "vpc-lattice:GetServiceNetworkServiceAssociation", - "vpc-lattice:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "vpc-lattice:TagResource", - "vpc-lattice:UntagResource", - "vpc-lattice:GetServiceNetworkServiceAssociation", - "vpc-lattice:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkserviceassociation/snsa-[0-9a-z]{17}$", - "type": "string" - }, - "CreatedAt": { - "type": "string" - }, - "DnsEntry": { - "$ref": "#/definitions/DnsEntry" - }, - "Id": { - "maxLength": 2048, - "minLength": 17, - "pattern": "^snsa-[0-9a-z]{17}$", - "type": "string" - }, - "ServiceArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}$", - "type": "string" - }, - "ServiceId": { - "maxLength": 21, - "minLength": 21, - "pattern": "^svc-[0-9a-z]{17}$", - "type": "string" - }, - "ServiceIdentifier": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^((svc-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}))$", - "type": "string" - }, - "ServiceName": { - "maxLength": 40, - "minLength": 3, - "pattern": "^(?!svc-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", - "type": "string" - }, - "ServiceNetworkArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}$", - "type": "string" - }, - "ServiceNetworkId": { - "maxLength": 20, - "minLength": 20, - "pattern": "^sn-[0-9a-z]{17}$", - "type": "string" - }, - "ServiceNetworkIdentifier": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^((sn-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}))$", - "type": "string" - }, - "ServiceNetworkName": { - "maxLength": 63, - "minLength": 3, - "pattern": "^(?!servicenetwork-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", - "type": "string" - }, - "Status": { - "enum": [ - "CREATE_IN_PROGRESS", - "ACTIVE", - "DELETE_IN_PROGRESS", - "CREATE_FAILED", - "DELETE_FAILED" - ], - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/DnsEntry/DomainName", - "/properties/DnsEntry/HostedZoneId", - "/properties/Id", - "/properties/ServiceNetworkArn", - "/properties/ServiceNetworkId", - "/properties/ServiceNetworkName", - "/properties/ServiceArn", - "/properties/ServiceId", - "/properties/ServiceName", - "/properties/Status" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "vpc-lattice:UntagResource", - "vpc-lattice:TagResource", - "vpc-lattice:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::VpcLattice::ServiceNetworkServiceAssociation", - "writeOnlyProperties": [ - "/properties/ServiceNetworkIdentifier", - "/properties/ServiceIdentifier" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/Id" + ], + [ + "/properties/ServiceNetworkIdentifier", + "/properties/ServiceIdentifier" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServiceNetworkIdentifier", + "/properties/ServiceIdentifier" + ], + "definitions": { + "DnsEntry": { + "additionalProperties": false, + "properties": { + "DomainName": { + "type": "string" + }, + "HostedZoneId": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Associates a service with a service network.", + "handlers": { + "create": { + "permissions": [ + "vpc-lattice:CreateServiceNetworkServiceAssociation", + "vpc-lattice:GetServiceNetworkServiceAssociation", + "vpc-lattice:TagResource", + "vpc-lattice:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "vpc-lattice:DeleteServiceNetworkServiceAssociation", + "vpc-lattice:GetServiceNetworkServiceAssociation", + "vpc-lattice:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ServiceIdentifier": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((svc-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}))$", + "type": "string" + }, + "ServiceNetworkIdentifier": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((sn-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}))$", + "type": "string" + } + }, + "required": [] + }, + "permissions": [ + "vpc-lattice:ListServiceNetworkServiceAssociations" + ] + }, + "read": { + "permissions": [ + "vpc-lattice:GetServiceNetworkServiceAssociation", + "vpc-lattice:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "vpc-lattice:TagResource", + "vpc-lattice:UntagResource", + "vpc-lattice:GetServiceNetworkServiceAssociation", + "vpc-lattice:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkserviceassociation/snsa-[0-9a-z]{17}$", + "type": "string" + }, + "CreatedAt": { + "type": "string" + }, + "DnsEntry": { + "$ref": "#/definitions/DnsEntry" + }, + "Id": { + "maxLength": 2048, + "minLength": 17, + "pattern": "^snsa-[0-9a-z]{17}$", + "type": "string" + }, + "ServiceArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}$", + "type": "string" + }, + "ServiceId": { + "maxLength": 21, + "minLength": 21, + "pattern": "^svc-[0-9a-z]{17}$", + "type": "string" + }, + "ServiceIdentifier": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((svc-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:service/svc-[0-9a-z]{17}))$", + "type": "string" + }, + "ServiceName": { + "maxLength": 40, + "minLength": 3, + "pattern": "^(?!svc-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", + "type": "string" + }, + "ServiceNetworkArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}$", + "type": "string" + }, + "ServiceNetworkId": { + "maxLength": 20, + "minLength": 20, + "pattern": "^sn-[0-9a-z]{17}$", + "type": "string" + }, + "ServiceNetworkIdentifier": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((sn-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}))$", + "type": "string" + }, + "ServiceNetworkName": { + "maxLength": 63, + "minLength": 3, + "pattern": "^(?!servicenetwork-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", + "type": "string" + }, + "Status": { + "enum": [ + "CREATE_IN_PROGRESS", + "ACTIVE", + "DELETE_IN_PROGRESS", + "CREATE_FAILED", + "DELETE_FAILED" + ], + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/DnsEntry/DomainName", + "/properties/DnsEntry/HostedZoneId", + "/properties/Id", + "/properties/ServiceNetworkArn", + "/properties/ServiceNetworkId", + "/properties/ServiceNetworkName", + "/properties/ServiceArn", + "/properties/ServiceId", + "/properties/ServiceName", + "/properties/Status" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "vpc-lattice:UntagResource", + "vpc-lattice:TagResource", + "vpc-lattice:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::VpcLattice::ServiceNetworkServiceAssociation", + "writeOnlyProperties": [ + "/properties/ServiceNetworkIdentifier", + "/properties/ServiceIdentifier" + ] +} diff --git a/src/schema/aws-vpclattice-servicenetworkvpcassociation.json b/src/schema/aws-vpclattice-servicenetworkvpcassociation.json index ba47b172..9a7c3630 100644 --- a/src/schema/aws-vpclattice-servicenetworkvpcassociation.json +++ b/src/schema/aws-vpclattice-servicenetworkvpcassociation.json @@ -1,212 +1,212 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Id" - ], - [ - "/properties/ServiceNetworkIdentifier", - "/properties/VpcIdentifier" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ServiceNetworkIdentifier", - "/properties/VpcIdentifier" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Associates a VPC with a service network.", - "handlers": { - "create": { - "permissions": [ - "vpc-lattice:CreateServiceNetworkVpcAssociation", - "vpc-lattice:GetServiceNetworkVpcAssociation", - "vpc-lattice:ListServiceNetworkVpcAssociations", - "vpc-lattice:ListTagsForResource", - "ec2:DescribeSecurityGroups", - "ec2:DescribeVpcs", - "vpc-lattice:TagResource" - ] - }, - "delete": { - "permissions": [ - "vpc-lattice:DeleteServiceNetworkVpcAssociation", - "vpc-lattice:GetServiceNetworkVpcAssociation", - "vpc-lattice:UntagResource" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ServiceNetworkIdentifier": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^((sn-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}))$", - "type": "string" - }, - "VpcIdentifier": { - "maxLength": 2048, - "minLength": 5, - "pattern": "^vpc-(([0-9a-z]{8})|([0-9a-z]{17}))$", - "type": "string" - } - }, - "required": [] - }, - "permissions": [ - "vpc-lattice:ListServiceNetworkVpcAssociations" - ] - }, - "read": { - "permissions": [ - "vpc-lattice:GetServiceNetworkVpcAssociation", - "vpc-lattice:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "vpc-lattice:TagResource", - "vpc-lattice:UntagResource", - "vpc-lattice:GetServiceNetworkVpcAssociation", - "vpc-lattice:UpdateServiceNetworkVpcAssociation", - "ec2:DescribeSecurityGroups", - "vpc-lattice:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkvpcassociation/snva-[0-9a-z]{17}$", - "type": "string" - }, - "CreatedAt": { - "type": "string" - }, - "Id": { - "maxLength": 22, - "minLength": 22, - "pattern": "^snva-[0-9a-z]{17}$", - "type": "string" - }, - "SecurityGroupIds": { - "insertionOrder": false, - "items": { - "maxLength": 200, - "minLength": 0, - "pattern": "^sg-(([0-9a-z]{8})|([0-9a-z]{17}))$", - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "ServiceNetworkArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}$", - "type": "string" - }, - "ServiceNetworkId": { - "maxLength": 20, - "minLength": 20, - "pattern": "^sn-[0-9a-z]{17}$", - "type": "string" - }, - "ServiceNetworkIdentifier": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^((sn-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}))$", - "type": "string" - }, - "ServiceNetworkName": { - "maxLength": 63, - "minLength": 3, - "pattern": "^(?!servicenetwork-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", - "type": "string" - }, - "Status": { - "enum": [ - "CREATE_IN_PROGRESS", - "ACTIVE", - "UPDATE_IN_PROGRESS", - "DELETE_IN_PROGRESS", - "CREATE_FAILED", - "DELETE_FAILED" - ], - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "VpcId": { - "maxLength": 2048, - "minLength": 5, - "pattern": "^vpc-(([0-9a-z]{8})|([0-9a-z]{17}))$", - "type": "string" - }, - "VpcIdentifier": { - "maxLength": 2048, - "minLength": 5, - "pattern": "^vpc-(([0-9a-z]{8})|([0-9a-z]{17}))$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/Id", - "/properties/ServiceNetworkArn", - "/properties/ServiceNetworkId", - "/properties/ServiceNetworkName", - "/properties/Status", - "/properties/VpcId" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "vpc-lattice:UntagResource", - "vpc-lattice:TagResource", - "vpc-lattice:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::VpcLattice::ServiceNetworkVpcAssociation", - "writeOnlyProperties": [ - "/properties/ServiceNetworkIdentifier", - "/properties/VpcIdentifier" - ] -} +{ + "additionalIdentifiers": [ + [ + "/properties/Id" + ], + [ + "/properties/ServiceNetworkIdentifier", + "/properties/VpcIdentifier" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServiceNetworkIdentifier", + "/properties/VpcIdentifier" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Associates a VPC with a service network.", + "handlers": { + "create": { + "permissions": [ + "vpc-lattice:CreateServiceNetworkVpcAssociation", + "vpc-lattice:GetServiceNetworkVpcAssociation", + "vpc-lattice:ListServiceNetworkVpcAssociations", + "vpc-lattice:ListTagsForResource", + "ec2:DescribeSecurityGroups", + "ec2:DescribeVpcs", + "vpc-lattice:TagResource" + ] + }, + "delete": { + "permissions": [ + "vpc-lattice:DeleteServiceNetworkVpcAssociation", + "vpc-lattice:GetServiceNetworkVpcAssociation", + "vpc-lattice:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ServiceNetworkIdentifier": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((sn-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}))$", + "type": "string" + }, + "VpcIdentifier": { + "maxLength": 2048, + "minLength": 5, + "pattern": "^vpc-(([0-9a-z]{8})|([0-9a-z]{17}))$", + "type": "string" + } + }, + "required": [] + }, + "permissions": [ + "vpc-lattice:ListServiceNetworkVpcAssociations" + ] + }, + "read": { + "permissions": [ + "vpc-lattice:GetServiceNetworkVpcAssociation", + "vpc-lattice:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "vpc-lattice:TagResource", + "vpc-lattice:UntagResource", + "vpc-lattice:GetServiceNetworkVpcAssociation", + "vpc-lattice:UpdateServiceNetworkVpcAssociation", + "ec2:DescribeSecurityGroups", + "vpc-lattice:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetworkvpcassociation/snva-[0-9a-z]{17}$", + "type": "string" + }, + "CreatedAt": { + "type": "string" + }, + "Id": { + "maxLength": 22, + "minLength": 22, + "pattern": "^snva-[0-9a-z]{17}$", + "type": "string" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 200, + "minLength": 0, + "pattern": "^sg-(([0-9a-z]{8})|([0-9a-z]{17}))$", + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "ServiceNetworkArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}$", + "type": "string" + }, + "ServiceNetworkId": { + "maxLength": 20, + "minLength": 20, + "pattern": "^sn-[0-9a-z]{17}$", + "type": "string" + }, + "ServiceNetworkIdentifier": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((sn-[0-9a-z]{17})|(arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:servicenetwork/sn-[0-9a-z]{17}))$", + "type": "string" + }, + "ServiceNetworkName": { + "maxLength": 63, + "minLength": 3, + "pattern": "^(?!servicenetwork-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", + "type": "string" + }, + "Status": { + "enum": [ + "CREATE_IN_PROGRESS", + "ACTIVE", + "UPDATE_IN_PROGRESS", + "DELETE_IN_PROGRESS", + "CREATE_FAILED", + "DELETE_FAILED" + ], + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "VpcId": { + "maxLength": 2048, + "minLength": 5, + "pattern": "^vpc-(([0-9a-z]{8})|([0-9a-z]{17}))$", + "type": "string" + }, + "VpcIdentifier": { + "maxLength": 2048, + "minLength": 5, + "pattern": "^vpc-(([0-9a-z]{8})|([0-9a-z]{17}))$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/Id", + "/properties/ServiceNetworkArn", + "/properties/ServiceNetworkId", + "/properties/ServiceNetworkName", + "/properties/Status", + "/properties/VpcId" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "vpc-lattice:UntagResource", + "vpc-lattice:TagResource", + "vpc-lattice:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::VpcLattice::ServiceNetworkVpcAssociation", + "writeOnlyProperties": [ + "/properties/ServiceNetworkIdentifier", + "/properties/VpcIdentifier" + ] +} diff --git a/src/schema/aws-vpclattice-targetgroup.json b/src/schema/aws-vpclattice-targetgroup.json index 9952005b..907d077e 100644 --- a/src/schema/aws-vpclattice-targetgroup.json +++ b/src/schema/aws-vpclattice-targetgroup.json @@ -1,342 +1,342 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/Id" - ], - [ - "/properties/Name" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Type", - "/properties/Config/Port", - "/properties/Config/IpAddressType", - "/properties/Config/Protocol", - "/properties/Config/ProtocolVersion", - "/properties/Config/VpcIdentifier", - "/properties/Config/LambdaEventStructureVersion" - ], - "definitions": { - "HealthCheckConfig": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - }, - "HealthCheckIntervalSeconds": { - "maximum": 300, - "minimum": 5, - "type": "integer" - }, - "HealthCheckTimeoutSeconds": { - "maximum": 120, - "minimum": 1, - "type": "integer" - }, - "HealthyThresholdCount": { - "maximum": 10, - "minimum": 2, - "type": "integer" - }, - "Matcher": { - "$ref": "#/definitions/Matcher" - }, - "Path": { - "maxLength": 2048, - "minLength": 0, - "pattern": "(^/[a-zA-Z0-9@:%_+.~#?&/=-]*$|(^$))", - "type": "string" - }, - "Port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "Protocol": { - "enum": [ - "HTTP", - "HTTPS" - ], - "type": "string" - }, - "ProtocolVersion": { - "enum": [ - "HTTP1", - "HTTP2" - ], - "type": "string" - }, - "UnhealthyThresholdCount": { - "maximum": 10, - "minimum": 2, - "type": "integer" - } - }, - "type": "object" - }, - "Matcher": { - "additionalProperties": false, - "properties": { - "HttpCode": { - "maxLength": 2000, - "minLength": 3, - "pattern": "^[0-9-,]+$", - "type": "string" - } - }, - "required": [ - "HttpCode" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Target": { - "additionalProperties": false, - "properties": { - "Id": { - "type": "string" - }, - "Port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "Id" - ], - "type": "object" - }, - "TargetGroupConfig": { - "additionalProperties": false, - "properties": { - "HealthCheck": { - "$ref": "#/definitions/HealthCheckConfig" - }, - "IpAddressType": { - "default": "IPV4", - "enum": [ - "IPV4", - "IPV6" - ], - "type": "string" - }, - "LambdaEventStructureVersion": { - "enum": [ - "V1", - "V2" - ], - "type": "string" - }, - "Port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "Protocol": { - "enum": [ - "HTTP", - "HTTPS", - "TCP" - ], - "type": "string" - }, - "ProtocolVersion": { - "default": "HTTP1", - "enum": [ - "HTTP1", - "HTTP2", - "GRPC" - ], - "type": "string" - }, - "VpcIdentifier": { - "maxLength": 2048, - "minLength": 5, - "pattern": "^vpc-(([0-9a-z]{8})|([0-9a-z]{17}))$", - "type": "string" - } - }, - "required": [], - "type": "object" - } - }, - "description": "A target group is a collection of targets, or compute resources, that run your application or service. A target group can only be used by a single service.", - "handlers": { - "create": { - "permissions": [ - "vpc-lattice:CreateTargetGroup", - "vpc-lattice:GetTargetGroup", - "vpc-lattice:RegisterTargets", - "vpc-lattice:ListTargets", - "vpc-lattice:ListTagsForResource", - "vpc-lattice:TagResource", - "vpc-lattice:UntagResource", - "ec2:DescribeVpcs", - "ec2:DescribeInstances", - "ec2:DescribeSubnets", - "ec2:DescribeAvailabilityZoneMappings", - "lambda:Invoke", - "lambda:AddPermission", - "elasticloadbalancing:DescribeLoadBalancers", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "vpc-lattice:DeleteTargetGroup", - "vpc-lattice:GetTargetGroup", - "vpc-lattice:DeregisterTargets", - "vpc-lattice:ListTargets", - "lambda:RemovePermission" - ] - }, - "list": { - "permissions": [ - "vpc-lattice:ListTargetGroups" - ] - }, - "read": { - "permissions": [ - "vpc-lattice:GetTargetGroup", - "vpc-lattice:ListTargets", - "vpc-lattice:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "vpc-lattice:UpdateTargetGroup", - "vpc-lattice:GetTargetGroup", - "vpc-lattice:ListTargets", - "vpc-lattice:RegisterTargets", - "vpc-lattice:DeregisterTargets", - "ec2:DescribeVpcs", - "ec2:DescribeInstances", - "ec2:DescribeSubnets", - "ec2:DescribeAvailabilityZoneMappings", - "elasticloadbalancing:DescribeLoadBalancers", - "lambda:Invoke", - "lambda:RemovePermission", - "lambda:AddPermission", - "vpc-lattice:TagResource", - "vpc-lattice:UntagResource", - "vpc-lattice:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:targetgroup/tg-[0-9a-z]{17}$", - "type": "string" - }, - "Config": { - "$ref": "#/definitions/TargetGroupConfig" - }, - "CreatedAt": { - "type": "string" - }, - "Id": { - "maxLength": 20, - "minLength": 20, - "pattern": "^tg-[0-9a-z]{17}$", - "type": "string" - }, - "LastUpdatedAt": { - "type": "string" - }, - "Name": { - "maxLength": 128, - "minLength": 3, - "pattern": "^(?!tg-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", - "type": "string" - }, - "Status": { - "enum": [ - "CREATE_IN_PROGRESS", - "ACTIVE", - "DELETE_IN_PROGRESS", - "CREATE_FAILED", - "DELETE_FAILED" - ], - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "Targets": { - "default": [], - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Target" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - }, - "Type": { - "enum": [ - "IP", - "LAMBDA", - "INSTANCE", - "ALB" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedAt", - "/properties/Id", - "/properties/LastUpdatedAt", - "/properties/Status" - ], - "required": [ - "Type" - ], - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "vpc-lattice:UntagResource", - "vpc-lattice:TagResource", - "vpc-lattice:ListTagsForResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::VpcLattice::TargetGroup" -} +{ + "additionalIdentifiers": [ + [ + "/properties/Id" + ], + [ + "/properties/Name" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Config/Port", + "/properties/Config/IpAddressType", + "/properties/Config/Protocol", + "/properties/Config/ProtocolVersion", + "/properties/Config/VpcIdentifier", + "/properties/Config/LambdaEventStructureVersion" + ], + "definitions": { + "HealthCheckConfig": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "HealthCheckIntervalSeconds": { + "maximum": 300, + "minimum": 5, + "type": "integer" + }, + "HealthCheckTimeoutSeconds": { + "maximum": 120, + "minimum": 1, + "type": "integer" + }, + "HealthyThresholdCount": { + "maximum": 10, + "minimum": 2, + "type": "integer" + }, + "Matcher": { + "$ref": "#/definitions/Matcher" + }, + "Path": { + "maxLength": 2048, + "minLength": 0, + "pattern": "(^/[a-zA-Z0-9@:%_+.~#?&/=-]*$|(^$))", + "type": "string" + }, + "Port": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "Protocol": { + "enum": [ + "HTTP", + "HTTPS" + ], + "type": "string" + }, + "ProtocolVersion": { + "enum": [ + "HTTP1", + "HTTP2" + ], + "type": "string" + }, + "UnhealthyThresholdCount": { + "maximum": 10, + "minimum": 2, + "type": "integer" + } + }, + "type": "object" + }, + "Matcher": { + "additionalProperties": false, + "properties": { + "HttpCode": { + "maxLength": 2000, + "minLength": 3, + "pattern": "^[0-9-,]+$", + "type": "string" + } + }, + "required": [ + "HttpCode" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Target": { + "additionalProperties": false, + "properties": { + "Id": { + "type": "string" + }, + "Port": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "Id" + ], + "type": "object" + }, + "TargetGroupConfig": { + "additionalProperties": false, + "properties": { + "HealthCheck": { + "$ref": "#/definitions/HealthCheckConfig" + }, + "IpAddressType": { + "default": "IPV4", + "enum": [ + "IPV4", + "IPV6" + ], + "type": "string" + }, + "LambdaEventStructureVersion": { + "enum": [ + "V1", + "V2" + ], + "type": "string" + }, + "Port": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "Protocol": { + "enum": [ + "HTTP", + "HTTPS", + "TCP" + ], + "type": "string" + }, + "ProtocolVersion": { + "default": "HTTP1", + "enum": [ + "HTTP1", + "HTTP2", + "GRPC" + ], + "type": "string" + }, + "VpcIdentifier": { + "maxLength": 2048, + "minLength": 5, + "pattern": "^vpc-(([0-9a-z]{8})|([0-9a-z]{17}))$", + "type": "string" + } + }, + "required": [], + "type": "object" + } + }, + "description": "A target group is a collection of targets, or compute resources, that run your application or service. A target group can only be used by a single service.", + "handlers": { + "create": { + "permissions": [ + "vpc-lattice:CreateTargetGroup", + "vpc-lattice:GetTargetGroup", + "vpc-lattice:RegisterTargets", + "vpc-lattice:ListTargets", + "vpc-lattice:ListTagsForResource", + "vpc-lattice:TagResource", + "vpc-lattice:UntagResource", + "ec2:DescribeVpcs", + "ec2:DescribeInstances", + "ec2:DescribeSubnets", + "ec2:DescribeAvailabilityZoneMappings", + "lambda:Invoke", + "lambda:AddPermission", + "elasticloadbalancing:DescribeLoadBalancers", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "vpc-lattice:DeleteTargetGroup", + "vpc-lattice:GetTargetGroup", + "vpc-lattice:DeregisterTargets", + "vpc-lattice:ListTargets", + "lambda:RemovePermission" + ] + }, + "list": { + "permissions": [ + "vpc-lattice:ListTargetGroups" + ] + }, + "read": { + "permissions": [ + "vpc-lattice:GetTargetGroup", + "vpc-lattice:ListTargets", + "vpc-lattice:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "vpc-lattice:UpdateTargetGroup", + "vpc-lattice:GetTargetGroup", + "vpc-lattice:ListTargets", + "vpc-lattice:RegisterTargets", + "vpc-lattice:DeregisterTargets", + "ec2:DescribeVpcs", + "ec2:DescribeInstances", + "ec2:DescribeSubnets", + "ec2:DescribeAvailabilityZoneMappings", + "elasticloadbalancing:DescribeLoadBalancers", + "lambda:Invoke", + "lambda:RemovePermission", + "lambda:AddPermission", + "vpc-lattice:TagResource", + "vpc-lattice:UntagResource", + "vpc-lattice:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[a-z0-9\\-]+:vpc-lattice:[a-zA-Z0-9\\-]+:\\d{12}:targetgroup/tg-[0-9a-z]{17}$", + "type": "string" + }, + "Config": { + "$ref": "#/definitions/TargetGroupConfig" + }, + "CreatedAt": { + "type": "string" + }, + "Id": { + "maxLength": 20, + "minLength": 20, + "pattern": "^tg-[0-9a-z]{17}$", + "type": "string" + }, + "LastUpdatedAt": { + "type": "string" + }, + "Name": { + "maxLength": 128, + "minLength": 3, + "pattern": "^(?!tg-)(?![-])(?!.*[-]$)(?!.*[-]{2})[a-z0-9-]+$", + "type": "string" + }, + "Status": { + "enum": [ + "CREATE_IN_PROGRESS", + "ACTIVE", + "DELETE_IN_PROGRESS", + "CREATE_FAILED", + "DELETE_FAILED" + ], + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "Targets": { + "default": [], + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Target" + }, + "maxItems": 100, + "minItems": 0, + "type": "array" + }, + "Type": { + "enum": [ + "IP", + "LAMBDA", + "INSTANCE", + "ALB" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/Id", + "/properties/LastUpdatedAt", + "/properties/Status" + ], + "required": [ + "Type" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "vpc-lattice:UntagResource", + "vpc-lattice:TagResource", + "vpc-lattice:ListTagsForResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::VpcLattice::TargetGroup" +} diff --git a/src/schema/aws-waf-bytematchset.json b/src/schema/aws-waf-bytematchset.json index 576fd12f..d17adaa9 100644 --- a/src/schema/aws-waf-bytematchset.json +++ b/src/schema/aws-waf-bytematchset.json @@ -1,75 +1,75 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "ByteMatchTuple": { - "additionalProperties": false, - "properties": { - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "PositionalConstraint": { - "type": "string" - }, - "TargetString": { - "type": "string" - }, - "TargetStringBase64": { - "type": "string" - }, - "TextTransformation": { - "type": "string" - } - }, - "required": [ - "PositionalConstraint", - "TextTransformation", - "FieldToMatch" - ], - "type": "object" - }, - "FieldToMatch": { - "additionalProperties": false, - "properties": { - "Data": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WAF::ByteMatchSet", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ByteMatchTuples": { - "items": { - "$ref": "#/definitions/ByteMatchTuple" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::WAF::ByteMatchSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "ByteMatchTuple": { + "additionalProperties": false, + "properties": { + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "PositionalConstraint": { + "type": "string" + }, + "TargetString": { + "type": "string" + }, + "TargetStringBase64": { + "type": "string" + }, + "TextTransformation": { + "type": "string" + } + }, + "required": [ + "PositionalConstraint", + "TextTransformation", + "FieldToMatch" + ], + "type": "object" + }, + "FieldToMatch": { + "additionalProperties": false, + "properties": { + "Data": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WAF::ByteMatchSet", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ByteMatchTuples": { + "items": { + "$ref": "#/definitions/ByteMatchTuple" + }, + "type": "array", + "uniqueItems": true + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::WAF::ByteMatchSet" +} diff --git a/src/schema/aws-waf-ipset.json b/src/schema/aws-waf-ipset.json index 2f189d96..27fe30d6 100644 --- a/src/schema/aws-waf-ipset.json +++ b/src/schema/aws-waf-ipset.json @@ -1,50 +1,50 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "IPSetDescriptor": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Type" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WAF::IPSet", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "IPSetDescriptors": { - "items": { - "$ref": "#/definitions/IPSetDescriptor" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::WAF::IPSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "IPSetDescriptor": { + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Type" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WAF::IPSet", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "IPSetDescriptors": { + "items": { + "$ref": "#/definitions/IPSetDescriptor" + }, + "type": "array", + "uniqueItems": true + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::WAF::IPSet" +} diff --git a/src/schema/aws-waf-rule.json b/src/schema/aws-waf-rule.json index 343c1591..57846fd4 100644 --- a/src/schema/aws-waf-rule.json +++ b/src/schema/aws-waf-rule.json @@ -1,59 +1,59 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MetricName", - "/properties/Name" - ], - "definitions": { - "Predicate": { - "additionalProperties": false, - "properties": { - "DataId": { - "type": "string" - }, - "Negated": { - "type": "boolean" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Negated", - "Type", - "DataId" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WAF::Rule", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "MetricName": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Predicates": { - "items": { - "$ref": "#/definitions/Predicate" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "MetricName", - "Name" - ], - "typeName": "AWS::WAF::Rule" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MetricName", + "/properties/Name" + ], + "definitions": { + "Predicate": { + "additionalProperties": false, + "properties": { + "DataId": { + "type": "string" + }, + "Negated": { + "type": "boolean" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Negated", + "Type", + "DataId" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WAF::Rule", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "MetricName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Predicates": { + "items": { + "$ref": "#/definitions/Predicate" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "MetricName", + "Name" + ], + "typeName": "AWS::WAF::Rule" +} diff --git a/src/schema/aws-waf-sizeconstraintset.json b/src/schema/aws-waf-sizeconstraintset.json index 5c4dc0a2..5618dedb 100644 --- a/src/schema/aws-waf-sizeconstraintset.json +++ b/src/schema/aws-waf-sizeconstraintset.json @@ -1,74 +1,74 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "FieldToMatch": { - "additionalProperties": false, - "properties": { - "Data": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "SizeConstraint": { - "additionalProperties": false, - "properties": { - "ComparisonOperator": { - "type": "string" - }, - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "Size": { - "type": "integer" - }, - "TextTransformation": { - "type": "string" - } - }, - "required": [ - "ComparisonOperator", - "TextTransformation", - "FieldToMatch", - "Size" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WAF::SizeConstraintSet", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "SizeConstraints": { - "items": { - "$ref": "#/definitions/SizeConstraint" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "SizeConstraints", - "Name" - ], - "typeName": "AWS::WAF::SizeConstraintSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "FieldToMatch": { + "additionalProperties": false, + "properties": { + "Data": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "SizeConstraint": { + "additionalProperties": false, + "properties": { + "ComparisonOperator": { + "type": "string" + }, + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "Size": { + "type": "integer" + }, + "TextTransformation": { + "type": "string" + } + }, + "required": [ + "ComparisonOperator", + "TextTransformation", + "FieldToMatch", + "Size" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WAF::SizeConstraintSet", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "SizeConstraints": { + "items": { + "$ref": "#/definitions/SizeConstraint" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "SizeConstraints", + "Name" + ], + "typeName": "AWS::WAF::SizeConstraintSet" +} diff --git a/src/schema/aws-waf-sqlinjectionmatchset.json b/src/schema/aws-waf-sqlinjectionmatchset.json index cc8793e2..16720d9d 100644 --- a/src/schema/aws-waf-sqlinjectionmatchset.json +++ b/src/schema/aws-waf-sqlinjectionmatchset.json @@ -1,65 +1,65 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "FieldToMatch": { - "additionalProperties": false, - "properties": { - "Data": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "SqlInjectionMatchTuple": { - "additionalProperties": false, - "properties": { - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "TextTransformation": { - "type": "string" - } - }, - "required": [ - "TextTransformation", - "FieldToMatch" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WAF::SqlInjectionMatchSet", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "SqlInjectionMatchTuples": { - "items": { - "$ref": "#/definitions/SqlInjectionMatchTuple" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::WAF::SqlInjectionMatchSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "FieldToMatch": { + "additionalProperties": false, + "properties": { + "Data": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "SqlInjectionMatchTuple": { + "additionalProperties": false, + "properties": { + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "TextTransformation": { + "type": "string" + } + }, + "required": [ + "TextTransformation", + "FieldToMatch" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WAF::SqlInjectionMatchSet", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "SqlInjectionMatchTuples": { + "items": { + "$ref": "#/definitions/SqlInjectionMatchTuple" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::WAF::SqlInjectionMatchSet" +} diff --git a/src/schema/aws-waf-webacl.json b/src/schema/aws-waf-webacl.json index e80c10c1..b53d6186 100644 --- a/src/schema/aws-waf-webacl.json +++ b/src/schema/aws-waf-webacl.json @@ -1,74 +1,74 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MetricName", - "/properties/Name" - ], - "definitions": { - "ActivatedRule": { - "additionalProperties": false, - "properties": { - "Action": { - "$ref": "#/definitions/WafAction" - }, - "Priority": { - "type": "integer" - }, - "RuleId": { - "type": "string" - } - }, - "required": [ - "Priority", - "RuleId" - ], - "type": "object" - }, - "WafAction": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WAF::WebACL", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DefaultAction": { - "$ref": "#/definitions/WafAction" - }, - "Id": { - "type": "string" - }, - "MetricName": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Rules": { - "items": { - "$ref": "#/definitions/ActivatedRule" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "DefaultAction", - "MetricName", - "Name" - ], - "typeName": "AWS::WAF::WebACL" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MetricName", + "/properties/Name" + ], + "definitions": { + "ActivatedRule": { + "additionalProperties": false, + "properties": { + "Action": { + "$ref": "#/definitions/WafAction" + }, + "Priority": { + "type": "integer" + }, + "RuleId": { + "type": "string" + } + }, + "required": [ + "Priority", + "RuleId" + ], + "type": "object" + }, + "WafAction": { + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WAF::WebACL", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DefaultAction": { + "$ref": "#/definitions/WafAction" + }, + "Id": { + "type": "string" + }, + "MetricName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Rules": { + "items": { + "$ref": "#/definitions/ActivatedRule" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "DefaultAction", + "MetricName", + "Name" + ], + "typeName": "AWS::WAF::WebACL" +} diff --git a/src/schema/aws-waf-xssmatchset.json b/src/schema/aws-waf-xssmatchset.json index cdcb4dc9..b89eea63 100644 --- a/src/schema/aws-waf-xssmatchset.json +++ b/src/schema/aws-waf-xssmatchset.json @@ -1,66 +1,66 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "FieldToMatch": { - "additionalProperties": false, - "properties": { - "Data": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "XssMatchTuple": { - "additionalProperties": false, - "properties": { - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "TextTransformation": { - "type": "string" - } - }, - "required": [ - "TextTransformation", - "FieldToMatch" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WAF::XssMatchSet", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "XssMatchTuples": { - "items": { - "$ref": "#/definitions/XssMatchTuple" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Name", - "XssMatchTuples" - ], - "typeName": "AWS::WAF::XssMatchSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "FieldToMatch": { + "additionalProperties": false, + "properties": { + "Data": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "XssMatchTuple": { + "additionalProperties": false, + "properties": { + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "TextTransformation": { + "type": "string" + } + }, + "required": [ + "TextTransformation", + "FieldToMatch" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WAF::XssMatchSet", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "XssMatchTuples": { + "items": { + "$ref": "#/definitions/XssMatchTuple" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name", + "XssMatchTuples" + ], + "typeName": "AWS::WAF::XssMatchSet" +} diff --git a/src/schema/aws-wafregional-bytematchset.json b/src/schema/aws-wafregional-bytematchset.json index ec600bc5..a9f1d198 100644 --- a/src/schema/aws-wafregional-bytematchset.json +++ b/src/schema/aws-wafregional-bytematchset.json @@ -1,75 +1,75 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "ByteMatchTuple": { - "additionalProperties": false, - "properties": { - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "PositionalConstraint": { - "type": "string" - }, - "TargetString": { - "type": "string" - }, - "TargetStringBase64": { - "type": "string" - }, - "TextTransformation": { - "type": "string" - } - }, - "required": [ - "PositionalConstraint", - "TextTransformation", - "FieldToMatch" - ], - "type": "object" - }, - "FieldToMatch": { - "additionalProperties": false, - "properties": { - "Data": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WAFRegional::ByteMatchSet", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ByteMatchTuples": { - "items": { - "$ref": "#/definitions/ByteMatchTuple" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::WAFRegional::ByteMatchSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "ByteMatchTuple": { + "additionalProperties": false, + "properties": { + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "PositionalConstraint": { + "type": "string" + }, + "TargetString": { + "type": "string" + }, + "TargetStringBase64": { + "type": "string" + }, + "TextTransformation": { + "type": "string" + } + }, + "required": [ + "PositionalConstraint", + "TextTransformation", + "FieldToMatch" + ], + "type": "object" + }, + "FieldToMatch": { + "additionalProperties": false, + "properties": { + "Data": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WAFRegional::ByteMatchSet", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ByteMatchTuples": { + "items": { + "$ref": "#/definitions/ByteMatchTuple" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::WAFRegional::ByteMatchSet" +} diff --git a/src/schema/aws-wafregional-geomatchset.json b/src/schema/aws-wafregional-geomatchset.json index cba8cf83..b87f85fc 100644 --- a/src/schema/aws-wafregional-geomatchset.json +++ b/src/schema/aws-wafregional-geomatchset.json @@ -1,50 +1,50 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "GeoMatchConstraint": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Type" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WAFRegional::GeoMatchSet", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "GeoMatchConstraints": { - "items": { - "$ref": "#/definitions/GeoMatchConstraint" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::WAFRegional::GeoMatchSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "GeoMatchConstraint": { + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Type" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WAFRegional::GeoMatchSet", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "GeoMatchConstraints": { + "items": { + "$ref": "#/definitions/GeoMatchConstraint" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::WAFRegional::GeoMatchSet" +} diff --git a/src/schema/aws-wafregional-ipset.json b/src/schema/aws-wafregional-ipset.json index 6202d096..edc283be 100644 --- a/src/schema/aws-wafregional-ipset.json +++ b/src/schema/aws-wafregional-ipset.json @@ -1,50 +1,50 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "IPSetDescriptor": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Type" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WAFRegional::IPSet", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "IPSetDescriptors": { - "items": { - "$ref": "#/definitions/IPSetDescriptor" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::WAFRegional::IPSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "IPSetDescriptor": { + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Type" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WAFRegional::IPSet", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "IPSetDescriptors": { + "items": { + "$ref": "#/definitions/IPSetDescriptor" + }, + "type": "array", + "uniqueItems": false + }, + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::WAFRegional::IPSet" +} diff --git a/src/schema/aws-wafregional-ratebasedrule.json b/src/schema/aws-wafregional-ratebasedrule.json index c88e0a40..24991f3f 100644 --- a/src/schema/aws-wafregional-ratebasedrule.json +++ b/src/schema/aws-wafregional-ratebasedrule.json @@ -1,68 +1,68 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MetricName", - "/properties/RateKey", - "/properties/Name" - ], - "definitions": { - "Predicate": { - "additionalProperties": false, - "properties": { - "DataId": { - "type": "string" - }, - "Negated": { - "type": "boolean" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type", - "Negated", - "DataId" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WAFRegional::RateBasedRule", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "MatchPredicates": { - "items": { - "$ref": "#/definitions/Predicate" - }, - "type": "array", - "uniqueItems": false - }, - "MetricName": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "RateKey": { - "type": "string" - }, - "RateLimit": { - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "MetricName", - "RateLimit", - "RateKey", - "Name" - ], - "typeName": "AWS::WAFRegional::RateBasedRule" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MetricName", + "/properties/RateKey", + "/properties/Name" + ], + "definitions": { + "Predicate": { + "additionalProperties": false, + "properties": { + "DataId": { + "type": "string" + }, + "Negated": { + "type": "boolean" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type", + "Negated", + "DataId" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WAFRegional::RateBasedRule", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "MatchPredicates": { + "items": { + "$ref": "#/definitions/Predicate" + }, + "type": "array", + "uniqueItems": false + }, + "MetricName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "RateKey": { + "type": "string" + }, + "RateLimit": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "MetricName", + "RateLimit", + "RateKey", + "Name" + ], + "typeName": "AWS::WAFRegional::RateBasedRule" +} diff --git a/src/schema/aws-wafregional-regexpatternset.json b/src/schema/aws-wafregional-regexpatternset.json index 70f59437..cf2aa58f 100644 --- a/src/schema/aws-wafregional-regexpatternset.json +++ b/src/schema/aws-wafregional-regexpatternset.json @@ -1,33 +1,33 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "description": "Resource Type definition for AWS::WAFRegional::RegexPatternSet", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "RegexPatternStrings": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "RegexPatternStrings", - "Name" - ], - "typeName": "AWS::WAFRegional::RegexPatternSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "description": "Resource Type definition for AWS::WAFRegional::RegexPatternSet", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "RegexPatternStrings": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "RegexPatternStrings", + "Name" + ], + "typeName": "AWS::WAFRegional::RegexPatternSet" +} diff --git a/src/schema/aws-wafregional-rule.json b/src/schema/aws-wafregional-rule.json index 35df7d23..3b214747 100644 --- a/src/schema/aws-wafregional-rule.json +++ b/src/schema/aws-wafregional-rule.json @@ -1,59 +1,59 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MetricName", - "/properties/Name" - ], - "definitions": { - "Predicate": { - "additionalProperties": false, - "properties": { - "DataId": { - "type": "string" - }, - "Negated": { - "type": "boolean" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type", - "Negated", - "DataId" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WAFRegional::Rule", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "MetricName": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Predicates": { - "items": { - "$ref": "#/definitions/Predicate" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "MetricName", - "Name" - ], - "typeName": "AWS::WAFRegional::Rule" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MetricName", + "/properties/Name" + ], + "definitions": { + "Predicate": { + "additionalProperties": false, + "properties": { + "DataId": { + "type": "string" + }, + "Negated": { + "type": "boolean" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type", + "Negated", + "DataId" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WAFRegional::Rule", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "MetricName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Predicates": { + "items": { + "$ref": "#/definitions/Predicate" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "MetricName", + "Name" + ], + "typeName": "AWS::WAFRegional::Rule" +} diff --git a/src/schema/aws-wafregional-sizeconstraintset.json b/src/schema/aws-wafregional-sizeconstraintset.json index b69ac745..d87ebc07 100644 --- a/src/schema/aws-wafregional-sizeconstraintset.json +++ b/src/schema/aws-wafregional-sizeconstraintset.json @@ -1,73 +1,73 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "FieldToMatch": { - "additionalProperties": false, - "properties": { - "Data": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "SizeConstraint": { - "additionalProperties": false, - "properties": { - "ComparisonOperator": { - "type": "string" - }, - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "Size": { - "type": "integer" - }, - "TextTransformation": { - "type": "string" - } - }, - "required": [ - "ComparisonOperator", - "TextTransformation", - "Size", - "FieldToMatch" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WAFRegional::SizeConstraintSet", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "SizeConstraints": { - "items": { - "$ref": "#/definitions/SizeConstraint" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::WAFRegional::SizeConstraintSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "FieldToMatch": { + "additionalProperties": false, + "properties": { + "Data": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "SizeConstraint": { + "additionalProperties": false, + "properties": { + "ComparisonOperator": { + "type": "string" + }, + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "Size": { + "type": "integer" + }, + "TextTransformation": { + "type": "string" + } + }, + "required": [ + "ComparisonOperator", + "TextTransformation", + "Size", + "FieldToMatch" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WAFRegional::SizeConstraintSet", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "SizeConstraints": { + "items": { + "$ref": "#/definitions/SizeConstraint" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::WAFRegional::SizeConstraintSet" +} diff --git a/src/schema/aws-wafregional-sqlinjectionmatchset.json b/src/schema/aws-wafregional-sqlinjectionmatchset.json index 28d91e16..5eeca2e1 100644 --- a/src/schema/aws-wafregional-sqlinjectionmatchset.json +++ b/src/schema/aws-wafregional-sqlinjectionmatchset.json @@ -1,65 +1,65 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "FieldToMatch": { - "additionalProperties": false, - "properties": { - "Data": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "SqlInjectionMatchTuple": { - "additionalProperties": false, - "properties": { - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "TextTransformation": { - "type": "string" - } - }, - "required": [ - "TextTransformation", - "FieldToMatch" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WAFRegional::SqlInjectionMatchSet", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "SqlInjectionMatchTuples": { - "items": { - "$ref": "#/definitions/SqlInjectionMatchTuple" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::WAFRegional::SqlInjectionMatchSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "FieldToMatch": { + "additionalProperties": false, + "properties": { + "Data": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "SqlInjectionMatchTuple": { + "additionalProperties": false, + "properties": { + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "TextTransformation": { + "type": "string" + } + }, + "required": [ + "TextTransformation", + "FieldToMatch" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WAFRegional::SqlInjectionMatchSet", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "SqlInjectionMatchTuples": { + "items": { + "$ref": "#/definitions/SqlInjectionMatchTuple" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::WAFRegional::SqlInjectionMatchSet" +} diff --git a/src/schema/aws-wafregional-webacl.json b/src/schema/aws-wafregional-webacl.json index 89d76573..0dcdc417 100644 --- a/src/schema/aws-wafregional-webacl.json +++ b/src/schema/aws-wafregional-webacl.json @@ -1,75 +1,75 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/MetricName", - "/properties/Name" - ], - "definitions": { - "Action": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "Rule": { - "additionalProperties": false, - "properties": { - "Action": { - "$ref": "#/definitions/Action" - }, - "Priority": { - "type": "integer" - }, - "RuleId": { - "type": "string" - } - }, - "required": [ - "Action", - "Priority", - "RuleId" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WAFRegional::WebACL", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DefaultAction": { - "$ref": "#/definitions/Action" - }, - "Id": { - "type": "string" - }, - "MetricName": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "Rules": { - "items": { - "$ref": "#/definitions/Rule" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "DefaultAction", - "MetricName", - "Name" - ], - "typeName": "AWS::WAFRegional::WebACL" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MetricName", + "/properties/Name" + ], + "definitions": { + "Action": { + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "Rule": { + "additionalProperties": false, + "properties": { + "Action": { + "$ref": "#/definitions/Action" + }, + "Priority": { + "type": "integer" + }, + "RuleId": { + "type": "string" + } + }, + "required": [ + "Action", + "Priority", + "RuleId" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WAFRegional::WebACL", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "DefaultAction": { + "$ref": "#/definitions/Action" + }, + "Id": { + "type": "string" + }, + "MetricName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Rules": { + "items": { + "$ref": "#/definitions/Rule" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "DefaultAction", + "MetricName", + "Name" + ], + "typeName": "AWS::WAFRegional::WebACL" +} diff --git a/src/schema/aws-wafregional-webaclassociation.json b/src/schema/aws-wafregional-webaclassociation.json index 9bdbdba7..9136adda 100644 --- a/src/schema/aws-wafregional-webaclassociation.json +++ b/src/schema/aws-wafregional-webaclassociation.json @@ -1,30 +1,30 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceArn", - "/properties/WebACLId" - ], - "description": "Resource Type definition for AWS::WAFRegional::WebACLAssociation", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "ResourceArn": { - "type": "string" - }, - "WebACLId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "ResourceArn", - "WebACLId" - ], - "typeName": "AWS::WAFRegional::WebACLAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceArn", + "/properties/WebACLId" + ], + "description": "Resource Type definition for AWS::WAFRegional::WebACLAssociation", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "ResourceArn": { + "type": "string" + }, + "WebACLId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "ResourceArn", + "WebACLId" + ], + "typeName": "AWS::WAFRegional::WebACLAssociation" +} diff --git a/src/schema/aws-wafregional-xssmatchset.json b/src/schema/aws-wafregional-xssmatchset.json index aa64991f..00791f29 100644 --- a/src/schema/aws-wafregional-xssmatchset.json +++ b/src/schema/aws-wafregional-xssmatchset.json @@ -1,65 +1,65 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "FieldToMatch": { - "additionalProperties": false, - "properties": { - "Data": { - "type": "string" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "XssMatchTuple": { - "additionalProperties": false, - "properties": { - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "TextTransformation": { - "type": "string" - } - }, - "required": [ - "TextTransformation", - "FieldToMatch" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WAFRegional::XssMatchSet", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "XssMatchTuples": { - "items": { - "$ref": "#/definitions/XssMatchTuple" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Name" - ], - "typeName": "AWS::WAFRegional::XssMatchSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "FieldToMatch": { + "additionalProperties": false, + "properties": { + "Data": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "XssMatchTuple": { + "additionalProperties": false, + "properties": { + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "TextTransformation": { + "type": "string" + } + }, + "required": [ + "TextTransformation", + "FieldToMatch" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WAFRegional::XssMatchSet", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "XssMatchTuples": { + "items": { + "$ref": "#/definitions/XssMatchTuple" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "Name" + ], + "typeName": "AWS::WAFRegional::XssMatchSet" +} diff --git a/src/schema/aws-wafv2-ipset.json b/src/schema/aws-wafv2-ipset.json index 336baeed..3d49bfc8 100644 --- a/src/schema/aws-wafv2-ipset.json +++ b/src/schema/aws-wafv2-ipset.json @@ -1,169 +1,169 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Scope" - ], - "definitions": { - "EntityDescription": { - "description": "Description of the entity.", - "pattern": "^[a-zA-Z0-9=:#@/\\-,.][a-zA-Z0-9+=:#@/\\-,.\\s]+[a-zA-Z0-9+=:#@/\\-,.]{1,256}$", - "type": "string" - }, - "EntityId": { - "description": "Id of the IPSet", - "pattern": "^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$", - "type": "string" - }, - "EntityName": { - "description": "Name of the IPSet.", - "pattern": "^[0-9A-Za-z_-]{1,128}$", - "type": "string" - }, - "IPAddress": { - "description": "IP address", - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "IPAddressVersion": { - "description": "Type of addresses in the IPSet, use IPV4 for IPV4 IP addresses, IPV6 for IPV6 address.", - "enum": [ - "IPV4", - "IPV6" - ], - "type": "string" - }, - "ResourceArn": { - "description": "ARN of the WAF entity.", - "type": "string" - }, - "Scope": { - "description": "Use CLOUDFRONT for CloudFront IPSet, use REGIONAL for Application Load Balancer and API Gateway.", - "enum": [ - "CLOUDFRONT", - "REGIONAL" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Contains a list of IP addresses. This can be either IPV4 or IPV6. The list will be mutually", - "handlers": { - "create": { - "permissions": [ - "wafv2:CreateIPSet", - "wafv2:GetIPSet", - "wafv2:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "wafv2:DeleteIPSet", - "wafv2:GetIPSet" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Scope": { - "$ref": "resource-schema.json#/properties/Scope" - } - }, - "required": [ - "Scope" - ] - }, - "permissions": [ - "wafv2:listIPSets" - ] - }, - "read": { - "permissions": [ - "wafv2:GetIPSet", - "wafv2:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "wafv2:UpdateIPSet", - "wafv2:GetIPSet", - "wafv2:ListTagsForResource", - "wafv2:TagResource", - "wafv2:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name", - "/properties/Id", - "/properties/Scope" - ], - "properties": { - "Addresses": { - "description": "List of IPAddresses.", - "items": { - "$ref": "#/definitions/IPAddress" - }, - "type": "array" - }, - "Arn": { - "$ref": "#/definitions/ResourceArn" - }, - "Description": { - "$ref": "#/definitions/EntityDescription" - }, - "IPAddressVersion": { - "$ref": "#/definitions/IPAddressVersion" - }, - "Id": { - "$ref": "#/definitions/EntityId" - }, - "Name": { - "$ref": "#/definitions/EntityName" - }, - "Scope": { - "$ref": "#/definitions/Scope" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "minItems": 1, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id" - ], - "required": [ - "Addresses", - "IPAddressVersion", - "Scope" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-wafv2.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::WAFv2::IPSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Scope" + ], + "definitions": { + "EntityDescription": { + "description": "Description of the entity.", + "pattern": "^[a-zA-Z0-9=:#@/\\-,.][a-zA-Z0-9+=:#@/\\-,.\\s]+[a-zA-Z0-9+=:#@/\\-,.]{1,256}$", + "type": "string" + }, + "EntityId": { + "description": "Id of the IPSet", + "pattern": "^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$", + "type": "string" + }, + "EntityName": { + "description": "Name of the IPSet.", + "pattern": "^[0-9A-Za-z_-]{1,128}$", + "type": "string" + }, + "IPAddress": { + "description": "IP address", + "maxLength": 50, + "minLength": 1, + "type": "string" + }, + "IPAddressVersion": { + "description": "Type of addresses in the IPSet, use IPV4 for IPV4 IP addresses, IPV6 for IPV6 address.", + "enum": [ + "IPV4", + "IPV6" + ], + "type": "string" + }, + "ResourceArn": { + "description": "ARN of the WAF entity.", + "type": "string" + }, + "Scope": { + "description": "Use CLOUDFRONT for CloudFront IPSet, use REGIONAL for Application Load Balancer and API Gateway.", + "enum": [ + "CLOUDFRONT", + "REGIONAL" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Contains a list of IP addresses. This can be either IPV4 or IPV6. The list will be mutually", + "handlers": { + "create": { + "permissions": [ + "wafv2:CreateIPSet", + "wafv2:GetIPSet", + "wafv2:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "wafv2:DeleteIPSet", + "wafv2:GetIPSet" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Scope": { + "$ref": "resource-schema.json#/properties/Scope" + } + }, + "required": [ + "Scope" + ] + }, + "permissions": [ + "wafv2:listIPSets" + ] + }, + "read": { + "permissions": [ + "wafv2:GetIPSet", + "wafv2:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "wafv2:UpdateIPSet", + "wafv2:GetIPSet", + "wafv2:ListTagsForResource", + "wafv2:TagResource", + "wafv2:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name", + "/properties/Id", + "/properties/Scope" + ], + "properties": { + "Addresses": { + "description": "List of IPAddresses.", + "items": { + "$ref": "#/definitions/IPAddress" + }, + "type": "array" + }, + "Arn": { + "$ref": "#/definitions/ResourceArn" + }, + "Description": { + "$ref": "#/definitions/EntityDescription" + }, + "IPAddressVersion": { + "$ref": "#/definitions/IPAddressVersion" + }, + "Id": { + "$ref": "#/definitions/EntityId" + }, + "Name": { + "$ref": "#/definitions/EntityName" + }, + "Scope": { + "$ref": "#/definitions/Scope" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "minItems": 1, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id" + ], + "required": [ + "Addresses", + "IPAddressVersion", + "Scope" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-wafv2.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::WAFv2::IPSet" +} diff --git a/src/schema/aws-wafv2-loggingconfiguration.json b/src/schema/aws-wafv2-loggingconfiguration.json index d45052e5..888ea7ee 100644 --- a/src/schema/aws-wafv2-loggingconfiguration.json +++ b/src/schema/aws-wafv2-loggingconfiguration.json @@ -1,238 +1,238 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceArn" - ], - "definitions": { - "Condition": { - "additionalProperties": false, - "properties": { - "ActionCondition": { - "additionalProperties": false, - "description": "A single action condition.", - "properties": { - "Action": { - "description": "Logic to apply to the filtering conditions. You can specify that, in order to satisfy the filter, a log must match all conditions or must match at least one condition.", - "enum": [ - "ALLOW", - "BLOCK", - "COUNT", - "CAPTCHA", - "CHALLENGE", - "EXCLUDED_AS_COUNT" - ], - "type": "string" - } - }, - "required": [ - "Action" - ], - "type": "object" - }, - "LabelNameCondition": { - "additionalProperties": false, - "description": "A single label name condition.", - "properties": { - "LabelName": { - "description": "The label name that a log record must contain in order to meet the condition. This must be a fully qualified label name. Fully qualified labels have a prefix, optional namespaces, and label name. The prefix identifies the rule group or web ACL context of the rule that added the label. ", - "type": "string" - } - }, - "required": [ - "LabelName" - ], - "type": "object" - } - }, - "type": "object" - }, - "FieldToMatch": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Method": { - "description": "Inspect the HTTP method. The method indicates the type of operation that the request is asking the origin to perform. ", - "type": "object" - }, - "QueryString": { - "description": "Inspect the query string. This is the part of a URL that appears after a ? character, if any. ", - "type": "object" - }, - "SingleHeader": { - "additionalProperties": false, - "description": "Inspect a single header. Provide the name of the header to inspect, for example, User-Agent or Referer. This setting isn't case sensitive.", - "properties": { - "Name": { - "description": "The name of the query header to inspect.", - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "UriPath": { - "description": "Inspect the request URI path. This is the part of a web request that identifies a resource, for example, /images/daily-ad.jpg. ", - "type": "object" - } - }, - "type": "object" - }, - "Filter": { - "additionalProperties": false, - "properties": { - "Behavior": { - "description": "How to handle logs that satisfy the filter's conditions and requirement. ", - "enum": [ - "KEEP", - "DROP" - ], - "type": "string" - }, - "Conditions": { - "description": "Match conditions for the filter.", - "items": { - "$ref": "#/definitions/Condition" - }, - "minItems": 1, - "type": "array" - }, - "Requirement": { - "description": "Logic to apply to the filtering conditions. You can specify that, in order to satisfy the filter, a log must match all conditions or must match at least one condition.", - "enum": [ - "MEETS_ALL", - "MEETS_ANY" - ], - "type": "string" - } - }, - "required": [ - "Behavior", - "Conditions", - "Requirement" - ], - "type": "object" - } - }, - "description": "A WAFv2 Logging Configuration Resource Provider", - "handlers": { - "create": { - "permissions": [ - "wafv2:PutLoggingConfiguration", - "wafv2:GetLoggingConfiguration", - "firehose:ListDeliveryStreams", - "iam:CreateServiceLinkedRole", - "iam:DescribeOrganization", - "logs:CreateLogDelivery", - "s3:PutBucketPolicy", - "s3:GetBucketPolicy", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups" - ] - }, - "delete": { - "permissions": [ - "wafv2:DeleteLoggingConfiguration", - "wafv2:GetLoggingConfiguration", - "logs:DeleteLogDelivery" - ] - }, - "list": { - "permissions": [ - "wafv2:ListLoggingConfigurations" - ] - }, - "read": { - "permissions": [ - "wafv2:GetLoggingConfiguration" - ] - }, - "update": { - "permissions": [ - "wafv2:PutLoggingConfiguration", - "wafv2:GetLoggingConfiguration", - "firehose:ListDeliveryStreams", - "iam:CreateServiceLinkedRole", - "iam:DescribeOrganization", - "logs:CreateLogDelivery", - "s3:PutBucketPolicy", - "s3:GetBucketPolicy", - "logs:PutResourcePolicy", - "logs:DescribeResourcePolicies", - "logs:DescribeLogGroups" - ] - } - }, - "primaryIdentifier": [ - "/properties/ResourceArn" - ], - "properties": { - "LogDestinationConfigs": { - "description": "The Amazon Resource Names (ARNs) of the logging destinations that you want to associate with the web ACL.", - "items": { - "type": "string" - }, - "type": "array" - }, - "LoggingFilter": { - "additionalProperties": false, - "description": "Filtering that specifies which web requests are kept in the logs and which are dropped. You can filter on the rule action and on the web request labels that were applied by matching rules during web ACL evaluation.", - "properties": { - "DefaultBehavior": { - "description": "Default handling for logs that don't match any of the specified filtering conditions.", - "enum": [ - "KEEP", - "DROP" - ], - "type": "string" - }, - "Filters": { - "description": "The filters that you want to apply to the logs.", - "items": { - "$ref": "#/definitions/Filter" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "DefaultBehavior", - "Filters" - ], - "type": "object" - }, - "ManagedByFirewallManager": { - "description": "Indicates whether the logging configuration was created by AWS Firewall Manager, as part of an AWS WAF policy configuration. If true, only Firewall Manager can modify or delete the configuration.", - "type": "boolean" - }, - "RedactedFields": { - "description": "The parts of the request that you want to keep out of the logs. For example, if you redact the HEADER field, the HEADER field in the firehose will be xxx.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/FieldToMatch" - }, - "type": "array" - }, - "ResourceArn": { - "description": "The Amazon Resource Name (ARN) of the web ACL that you want to associate with LogDestinationConfigs.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ManagedByFirewallManager" - ], - "required": [ - "ResourceArn", - "LogDestinationConfigs" - ], - "sourceUrl": "https://github.com/advaj/aws-cloudformation-resource-providers-wafv2.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::WAFv2::LoggingConfiguration" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceArn" + ], + "definitions": { + "Condition": { + "additionalProperties": false, + "properties": { + "ActionCondition": { + "additionalProperties": false, + "description": "A single action condition.", + "properties": { + "Action": { + "description": "Logic to apply to the filtering conditions. You can specify that, in order to satisfy the filter, a log must match all conditions or must match at least one condition.", + "enum": [ + "ALLOW", + "BLOCK", + "COUNT", + "CAPTCHA", + "CHALLENGE", + "EXCLUDED_AS_COUNT" + ], + "type": "string" + } + }, + "required": [ + "Action" + ], + "type": "object" + }, + "LabelNameCondition": { + "additionalProperties": false, + "description": "A single label name condition.", + "properties": { + "LabelName": { + "description": "The label name that a log record must contain in order to meet the condition. This must be a fully qualified label name. Fully qualified labels have a prefix, optional namespaces, and label name. The prefix identifies the rule group or web ACL context of the rule that added the label. ", + "type": "string" + } + }, + "required": [ + "LabelName" + ], + "type": "object" + } + }, + "type": "object" + }, + "FieldToMatch": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Method": { + "description": "Inspect the HTTP method. The method indicates the type of operation that the request is asking the origin to perform. ", + "type": "object" + }, + "QueryString": { + "description": "Inspect the query string. This is the part of a URL that appears after a ? character, if any. ", + "type": "object" + }, + "SingleHeader": { + "additionalProperties": false, + "description": "Inspect a single header. Provide the name of the header to inspect, for example, User-Agent or Referer. This setting isn't case sensitive.", + "properties": { + "Name": { + "description": "The name of the query header to inspect.", + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "UriPath": { + "description": "Inspect the request URI path. This is the part of a web request that identifies a resource, for example, /images/daily-ad.jpg. ", + "type": "object" + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Behavior": { + "description": "How to handle logs that satisfy the filter's conditions and requirement. ", + "enum": [ + "KEEP", + "DROP" + ], + "type": "string" + }, + "Conditions": { + "description": "Match conditions for the filter.", + "items": { + "$ref": "#/definitions/Condition" + }, + "minItems": 1, + "type": "array" + }, + "Requirement": { + "description": "Logic to apply to the filtering conditions. You can specify that, in order to satisfy the filter, a log must match all conditions or must match at least one condition.", + "enum": [ + "MEETS_ALL", + "MEETS_ANY" + ], + "type": "string" + } + }, + "required": [ + "Behavior", + "Conditions", + "Requirement" + ], + "type": "object" + } + }, + "description": "A WAFv2 Logging Configuration Resource Provider", + "handlers": { + "create": { + "permissions": [ + "wafv2:PutLoggingConfiguration", + "wafv2:GetLoggingConfiguration", + "firehose:ListDeliveryStreams", + "iam:CreateServiceLinkedRole", + "iam:DescribeOrganization", + "logs:CreateLogDelivery", + "s3:PutBucketPolicy", + "s3:GetBucketPolicy", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups" + ] + }, + "delete": { + "permissions": [ + "wafv2:DeleteLoggingConfiguration", + "wafv2:GetLoggingConfiguration", + "logs:DeleteLogDelivery" + ] + }, + "list": { + "permissions": [ + "wafv2:ListLoggingConfigurations" + ] + }, + "read": { + "permissions": [ + "wafv2:GetLoggingConfiguration" + ] + }, + "update": { + "permissions": [ + "wafv2:PutLoggingConfiguration", + "wafv2:GetLoggingConfiguration", + "firehose:ListDeliveryStreams", + "iam:CreateServiceLinkedRole", + "iam:DescribeOrganization", + "logs:CreateLogDelivery", + "s3:PutBucketPolicy", + "s3:GetBucketPolicy", + "logs:PutResourcePolicy", + "logs:DescribeResourcePolicies", + "logs:DescribeLogGroups" + ] + } + }, + "primaryIdentifier": [ + "/properties/ResourceArn" + ], + "properties": { + "LogDestinationConfigs": { + "description": "The Amazon Resource Names (ARNs) of the logging destinations that you want to associate with the web ACL.", + "items": { + "type": "string" + }, + "type": "array" + }, + "LoggingFilter": { + "additionalProperties": false, + "description": "Filtering that specifies which web requests are kept in the logs and which are dropped. You can filter on the rule action and on the web request labels that were applied by matching rules during web ACL evaluation.", + "properties": { + "DefaultBehavior": { + "description": "Default handling for logs that don't match any of the specified filtering conditions.", + "enum": [ + "KEEP", + "DROP" + ], + "type": "string" + }, + "Filters": { + "description": "The filters that you want to apply to the logs.", + "items": { + "$ref": "#/definitions/Filter" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "DefaultBehavior", + "Filters" + ], + "type": "object" + }, + "ManagedByFirewallManager": { + "description": "Indicates whether the logging configuration was created by AWS Firewall Manager, as part of an AWS WAF policy configuration. If true, only Firewall Manager can modify or delete the configuration.", + "type": "boolean" + }, + "RedactedFields": { + "description": "The parts of the request that you want to keep out of the logs. For example, if you redact the HEADER field, the HEADER field in the firehose will be xxx.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/FieldToMatch" + }, + "type": "array" + }, + "ResourceArn": { + "description": "The Amazon Resource Name (ARN) of the web ACL that you want to associate with LogDestinationConfigs.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ManagedByFirewallManager" + ], + "required": [ + "ResourceArn", + "LogDestinationConfigs" + ], + "sourceUrl": "https://github.com/advaj/aws-cloudformation-resource-providers-wafv2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::WAFv2::LoggingConfiguration" +} diff --git a/src/schema/aws-wafv2-regexpatternset.json b/src/schema/aws-wafv2-regexpatternset.json index 07046ab1..db7c54b8 100644 --- a/src/schema/aws-wafv2-regexpatternset.json +++ b/src/schema/aws-wafv2-regexpatternset.json @@ -1,135 +1,135 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Scope" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - } - }, - "description": "Contains a list of Regular expressions based on the provided inputs. RegexPatternSet can be used with other WAF entities with RegexPatternSetReferenceStatement to perform other actions .", - "handlers": { - "create": { - "permissions": [ - "wafv2:CreateRegexPatternSet", - "wafv2:GetRegexPatternSet", - "wafv2:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "wafv2:DeleteRegexPatternSet", - "wafv2:GetRegexPatternSet" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Scope": { - "$ref": "resource-schema.json#/properties/Scope" - } - }, - "required": [ - "Scope" - ] - }, - "permissions": [ - "wafv2:listRegexPatternSets" - ] - }, - "read": { - "permissions": [ - "wafv2:GetRegexPatternSet", - "wafv2:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "wafv2:UpdateRegexPatternSet", - "wafv2:GetRegexPatternSet", - "wafv2:ListTagsForResource", - "wafv2:TagResource", - "wafv2:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name", - "/properties/Id", - "/properties/Scope" - ], - "properties": { - "Arn": { - "description": "ARN of the WAF entity.", - "type": "string" - }, - "Description": { - "description": "Description of the entity.", - "pattern": "^[a-zA-Z0-9=:#@/\\-,.][a-zA-Z0-9+=:#@/\\-,.\\s]+[a-zA-Z0-9+=:#@/\\-,.]{1,256}$", - "type": "string" - }, - "Id": { - "description": "Id of the RegexPatternSet", - "pattern": "^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$", - "type": "string" - }, - "Name": { - "description": "Name of the RegexPatternSet.", - "pattern": "^[0-9A-Za-z_-]{1,128}$", - "type": "string" - }, - "RegularExpressionList": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Scope": { - "description": "Use CLOUDFRONT for CloudFront RegexPatternSet, use REGIONAL for Application Load Balancer and API Gateway.", - "enum": [ - "CLOUDFRONT", - "REGIONAL" - ], - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "minItems": 1, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id" - ], - "required": [ - "Scope", - "RegularExpressionList" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-wafv2.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::WAFv2::RegexPatternSet" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Scope" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Contains a list of Regular expressions based on the provided inputs. RegexPatternSet can be used with other WAF entities with RegexPatternSetReferenceStatement to perform other actions .", + "handlers": { + "create": { + "permissions": [ + "wafv2:CreateRegexPatternSet", + "wafv2:GetRegexPatternSet", + "wafv2:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "wafv2:DeleteRegexPatternSet", + "wafv2:GetRegexPatternSet" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Scope": { + "$ref": "resource-schema.json#/properties/Scope" + } + }, + "required": [ + "Scope" + ] + }, + "permissions": [ + "wafv2:listRegexPatternSets" + ] + }, + "read": { + "permissions": [ + "wafv2:GetRegexPatternSet", + "wafv2:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "wafv2:UpdateRegexPatternSet", + "wafv2:GetRegexPatternSet", + "wafv2:ListTagsForResource", + "wafv2:TagResource", + "wafv2:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name", + "/properties/Id", + "/properties/Scope" + ], + "properties": { + "Arn": { + "description": "ARN of the WAF entity.", + "type": "string" + }, + "Description": { + "description": "Description of the entity.", + "pattern": "^[a-zA-Z0-9=:#@/\\-,.][a-zA-Z0-9+=:#@/\\-,.\\s]+[a-zA-Z0-9+=:#@/\\-,.]{1,256}$", + "type": "string" + }, + "Id": { + "description": "Id of the RegexPatternSet", + "pattern": "^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$", + "type": "string" + }, + "Name": { + "description": "Name of the RegexPatternSet.", + "pattern": "^[0-9A-Za-z_-]{1,128}$", + "type": "string" + }, + "RegularExpressionList": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Scope": { + "description": "Use CLOUDFRONT for CloudFront RegexPatternSet, use REGIONAL for Application Load Balancer and API Gateway.", + "enum": [ + "CLOUDFRONT", + "REGIONAL" + ], + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "minItems": 1, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id" + ], + "required": [ + "Scope", + "RegularExpressionList" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-wafv2.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::WAFv2::RegexPatternSet" +} diff --git a/src/schema/aws-wafv2-rulegroup.json b/src/schema/aws-wafv2-rulegroup.json index b3e2bd5e..dbdc65bf 100644 --- a/src/schema/aws-wafv2-rulegroup.json +++ b/src/schema/aws-wafv2-rulegroup.json @@ -1,1467 +1,1544 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Scope" - ], - "definitions": { - "AllowAction": { - "additionalProperties": false, - "description": "Allow traffic towards application.", - "properties": { - "CustomRequestHandling": { - "$ref": "#/definitions/CustomRequestHandling" - } - }, - "type": "object" - }, - "AndStatement": { - "additionalProperties": false, - "properties": { - "Statements": { - "items": { - "$ref": "#/definitions/Statement" - }, - "type": "array" - } - }, - "required": [ - "Statements" - ], - "type": "object" - }, - "BlockAction": { - "additionalProperties": false, - "description": "Block traffic towards application.", - "properties": { - "CustomResponse": { - "$ref": "#/definitions/CustomResponse" - } - }, - "type": "object" - }, - "Body": { - "additionalProperties": false, - "description": "The body of a web request. This immediately follows the request headers.", - "properties": { - "OversizeHandling": { - "$ref": "#/definitions/OversizeHandling" - } - }, - "type": "object" - }, - "BodyParsingFallbackBehavior": { - "description": "The inspection behavior to fall back to if the JSON in the request body is invalid.", - "enum": [ - "MATCH", - "NO_MATCH", - "EVALUATE_AS_STRING" - ], - "type": "string" - }, - "ByteMatchStatement": { - "additionalProperties": false, - "description": "Byte Match statement.", - "properties": { - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "PositionalConstraint": { - "$ref": "#/definitions/PositionalConstraint" - }, - "SearchString": { - "$ref": "#/definitions/SearchString" - }, - "SearchStringBase64": { - "$ref": "#/definitions/SearchStringBase64" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "FieldToMatch", - "PositionalConstraint", - "TextTransformations" - ], - "type": "object" - }, - "CaptchaAction": { - "additionalProperties": false, - "description": "Checks valid token exists with request.", - "properties": { - "CustomRequestHandling": { - "$ref": "#/definitions/CustomRequestHandling" - } - }, - "type": "object" - }, - "CaptchaConfig": { - "additionalProperties": false, - "properties": { - "ImmunityTimeProperty": { - "$ref": "#/definitions/ImmunityTimeProperty" - } - }, - "type": "object" - }, - "ChallengeAction": { - "additionalProperties": false, - "description": "Checks that the request has a valid token with an unexpired challenge timestamp and, if not, returns a browser challenge to the client.", - "properties": { - "CustomRequestHandling": { - "$ref": "#/definitions/CustomRequestHandling" - } - }, - "type": "object" - }, - "ChallengeConfig": { - "additionalProperties": false, - "properties": { - "ImmunityTimeProperty": { - "$ref": "#/definitions/ImmunityTimeProperty" - } - }, - "type": "object" - }, - "CookieMatchPattern": { - "additionalProperties": false, - "description": "The pattern to look for in the request cookies.", - "properties": { - "All": { - "description": "Inspect all parts of the web request cookies.", - "type": "object" - }, - "ExcludedCookies": { - "items": { - "maxLength": 60, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "maxItems": 199, - "minItems": 1, - "type": "array" - }, - "IncludedCookies": { - "items": { - "maxLength": 60, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "maxItems": 199, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "Cookies": { - "additionalProperties": false, - "description": "Includes cookies of a web request.", - "properties": { - "MatchPattern": { - "$ref": "#/definitions/CookieMatchPattern" - }, - "MatchScope": { - "$ref": "#/definitions/MapMatchScope" - }, - "OversizeHandling": { - "$ref": "#/definitions/OversizeHandling" - } - }, - "required": [ - "MatchPattern", - "MatchScope", - "OversizeHandling" - ], - "type": "object" - }, - "CountAction": { - "additionalProperties": false, - "description": "Count traffic towards application.", - "properties": { - "CustomRequestHandling": { - "$ref": "#/definitions/CustomRequestHandling" - } - }, - "type": "object" - }, - "CustomHTTPHeader": { - "additionalProperties": false, - "description": "HTTP header.", - "properties": { - "Name": { - "$ref": "#/definitions/CustomHTTPHeaderName" - }, - "Value": { - "$ref": "#/definitions/CustomHTTPHeaderValue" - } - }, - "required": [ - "Name", - "Value" - ], - "type": "object" - }, - "CustomHTTPHeaderName": { - "description": "HTTP header name.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "CustomHTTPHeaderValue": { - "description": "HTTP header value.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "CustomRequestHandling": { - "additionalProperties": false, - "description": "Custom request handling.", - "properties": { - "InsertHeaders": { - "description": "Collection of HTTP headers.", - "items": { - "$ref": "#/definitions/CustomHTTPHeader" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "InsertHeaders" - ], - "type": "object" - }, - "CustomResponse": { - "additionalProperties": false, - "description": "Custom response.", - "properties": { - "CustomResponseBodyKey": { - "description": "Custom response body key.", - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "ResponseCode": { - "$ref": "#/definitions/ResponseStatusCode" - }, - "ResponseHeaders": { - "description": "Collection of HTTP headers.", - "items": { - "$ref": "#/definitions/CustomHTTPHeader" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "ResponseCode" - ], - "type": "object" - }, - "CustomResponseBodies": { - "additionalProperties": false, - "description": "Custom response key and body map.", - "minProperties": 1, - "patternProperties": { - "^[\\w\\-]+$": { - "$ref": "#/definitions/CustomResponseBody" - } - }, - "type": "object" - }, - "CustomResponseBody": { - "additionalProperties": false, - "description": "Custom response body.", - "properties": { - "Content": { - "$ref": "#/definitions/ResponseContent" - }, - "ContentType": { - "$ref": "#/definitions/ResponseContentType" - } - }, - "required": [ - "ContentType", - "Content" - ], - "type": "object" - }, - "EntityDescription": { - "description": "Description of the entity.", - "pattern": "^[a-zA-Z0-9=:#@/\\-,.][a-zA-Z0-9+=:#@/\\-,.\\s]+[a-zA-Z0-9+=:#@/\\-,.]{1,256}$", - "type": "string" - }, - "EntityId": { - "description": "Id of the RuleGroup", - "pattern": "^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$", - "type": "string" - }, - "EntityName": { - "description": "Name of the RuleGroup.", - "pattern": "^[0-9A-Za-z_-]{1,128}$", - "type": "string" - }, - "EvaluationWindowSec": { - "enum": [ - 60, - 120, - 300, - 600 - ], - "type": "integer" - }, - "FieldToMatch": { - "additionalProperties": false, - "description": "Field of the request to match.", - "properties": { - "AllQueryArguments": { - "description": "All query arguments of a web request.", - "type": "object" - }, - "Body": { - "$ref": "#/definitions/Body" - }, - "Cookies": { - "$ref": "#/definitions/Cookies" - }, - "Headers": { - "$ref": "#/definitions/Headers" - }, - "JA3Fingerprint": { - "$ref": "#/definitions/JA3Fingerprint" - }, - "JsonBody": { - "$ref": "#/definitions/JsonBody" - }, - "Method": { - "description": "The HTTP method of a web request. The method indicates the type of operation that the request is asking the origin to perform.", - "type": "object" - }, - "QueryString": { - "description": "The query string of a web request. This is the part of a URL that appears after a ? character, if any.", - "type": "object" - }, - "SingleHeader": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "SingleQueryArgument": { - "additionalProperties": false, - "description": "One query argument in a web request, identified by name, for example UserName or SalesRegion. The name can be up to 30 characters long and isn't case sensitive.", - "properties": { - "Name": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "UriPath": { - "description": "The path component of the URI of a web request. This is the part of a web request that identifies a resource, for example, /images/daily-ad.jpg.", - "type": "object" - } - }, - "type": "object" - }, - "ForwardedIPConfiguration": { - "additionalProperties": false, - "properties": { - "FallbackBehavior": { - "enum": [ - "MATCH", - "NO_MATCH" - ], - "type": "string" - }, - "HeaderName": { - "pattern": "^[a-zA-Z0-9-]+{1,255}$", - "type": "string" - } - }, - "required": [ - "HeaderName", - "FallbackBehavior" - ], - "type": "object" - }, - "GeoMatchStatement": { - "additionalProperties": false, - "properties": { - "CountryCodes": { - "items": { - "maxLength": 2, - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "ForwardedIPConfig": { - "$ref": "#/definitions/ForwardedIPConfiguration" - } - }, - "type": "object" - }, - "HeaderMatchPattern": { - "additionalProperties": false, - "description": "The pattern to look for in the request headers.", - "properties": { - "All": { - "description": "Inspect all parts of the web request headers.", - "type": "object" - }, - "ExcludedHeaders": { - "items": { - "maxLength": 64, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "maxItems": 199, - "minItems": 1, - "type": "array" - }, - "IncludedHeaders": { - "items": { - "maxLength": 64, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "maxItems": 199, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "Headers": { - "additionalProperties": false, - "description": "Includes headers of a web request.", - "properties": { - "MatchPattern": { - "$ref": "#/definitions/HeaderMatchPattern" - }, - "MatchScope": { - "$ref": "#/definitions/MapMatchScope" - }, - "OversizeHandling": { - "$ref": "#/definitions/OversizeHandling" - } - }, - "required": [ - "MatchPattern", - "MatchScope", - "OversizeHandling" - ], - "type": "object" - }, - "IPSetForwardedIPConfiguration": { - "additionalProperties": false, - "properties": { - "FallbackBehavior": { - "enum": [ - "MATCH", - "NO_MATCH" - ], - "type": "string" - }, - "HeaderName": { - "pattern": "^[a-zA-Z0-9-]+{1,255}$", - "type": "string" - }, - "Position": { - "enum": [ - "FIRST", - "LAST", - "ANY" - ], - "type": "string" - } - }, - "required": [ - "HeaderName", - "FallbackBehavior", - "Position" - ], - "type": "object" - }, - "IPSetReferenceStatement": { - "additionalProperties": false, - "properties": { - "Arn": { - "$ref": "#/definitions/ResourceArn" - }, - "IPSetForwardedIPConfig": { - "$ref": "#/definitions/IPSetForwardedIPConfiguration" - } - }, - "required": [ - "Arn" - ], - "type": "object" - }, - "ImmunityTimeProperty": { - "additionalProperties": false, - "properties": { - "ImmunityTime": { - "maximum": 259200, - "minimum": 60, - "type": "integer" - } - }, - "required": [ - "ImmunityTime" - ], - "type": "object" - }, - "JA3Fingerprint": { - "additionalProperties": false, - "description": "Includes the JA3 fingerprint of a web request.", - "properties": { - "FallbackBehavior": { - "enum": [ - "MATCH", - "NO_MATCH" - ], - "type": "string" - } - }, - "required": [ - "FallbackBehavior" - ], - "type": "object" - }, - "JsonBody": { - "additionalProperties": false, - "description": "Inspect the request body as JSON. The request body immediately follows the request headers.", - "properties": { - "InvalidFallbackBehavior": { - "$ref": "#/definitions/BodyParsingFallbackBehavior" - }, - "MatchPattern": { - "$ref": "#/definitions/JsonMatchPattern" - }, - "MatchScope": { - "$ref": "#/definitions/JsonMatchScope" - }, - "OversizeHandling": { - "$ref": "#/definitions/OversizeHandling" - } - }, - "required": [ - "MatchPattern", - "MatchScope" - ], - "type": "object" - }, - "JsonMatchPattern": { - "additionalProperties": false, - "description": "The pattern to look for in the JSON body.", - "properties": { - "All": { - "description": "Inspect all parts of the web request's JSON body.", - "type": "object" - }, - "IncludedPaths": { - "items": { - "$ref": "#/definitions/JsonPointerPath" - }, - "type": "array" - } - }, - "type": "object" - }, - "JsonMatchScope": { - "description": "The parts of the JSON to match against using the MatchPattern.", - "enum": [ - "ALL", - "KEY", - "VALUE" - ], - "type": "string" - }, - "JsonPointerPath": { - "description": "JSON pointer path in the web request's JSON body", - "pattern": "^[\\/]+([^~]*(~[01])*)*{1,512}$", - "type": "string" - }, - "Label": { - "additionalProperties": false, - "properties": { - "Name": { - "$ref": "#/definitions/LabelName" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "LabelMatchKey": { - "pattern": "^[0-9A-Za-z_:-]{1,1024}$", - "type": "string" - }, - "LabelMatchScope": { - "enum": [ - "LABEL", - "NAMESPACE" - ], - "type": "string" - }, - "LabelMatchStatement": { - "additionalProperties": false, - "properties": { - "Key": { - "$ref": "#/definitions/LabelMatchKey" - }, - "Scope": { - "$ref": "#/definitions/LabelMatchScope" - } - }, - "required": [ - "Scope", - "Key" - ], - "type": "object" - }, - "LabelName": { - "description": "Name of the Label.", - "pattern": "^[0-9A-Za-z_:-]{1,1024}$", - "type": "string" - }, - "LabelSummary": { - "additionalProperties": false, - "properties": { - "Name": { - "$ref": "#/definitions/LabelName" - } - }, - "type": "object" - }, - "MapMatchScope": { - "description": "The parts of the request to match against using the MatchPattern.", - "enum": [ - "ALL", - "KEY", - "VALUE" - ], - "type": "string" - }, - "NotStatement": { - "additionalProperties": false, - "properties": { - "Statement": { - "$ref": "#/definitions/Statement" - } - }, - "required": [ - "Statement" - ], - "type": "object" - }, - "OrStatement": { - "additionalProperties": false, - "properties": { - "Statements": { - "items": { - "$ref": "#/definitions/Statement" - }, - "type": "array" - } - }, - "required": [ - "Statements" - ], - "type": "object" - }, - "OversizeHandling": { - "description": "Handling of requests containing oversize fields", - "enum": [ - "CONTINUE", - "MATCH", - "NO_MATCH" - ], - "type": "string" - }, - "PositionalConstraint": { - "description": "Position of the evaluation in the FieldToMatch of request.", - "enum": [ - "EXACTLY", - "STARTS_WITH", - "ENDS_WITH", - "CONTAINS", - "CONTAINS_WORD" - ], - "type": "string" - }, - "RateBasedStatement": { - "additionalProperties": false, - "properties": { - "AggregateKeyType": { - "enum": [ - "IP", - "FORWARDED_IP", - "CONSTANT", - "CUSTOM_KEYS" - ], - "type": "string" - }, - "CustomKeys": { - "description": "Specifies the aggregate keys to use in a rate-base rule.", - "items": { - "$ref": "#/definitions/RateBasedStatementCustomKey" - }, - "maxItems": 5, - "type": "array" - }, - "EvaluationWindowSec": { - "$ref": "#/definitions/EvaluationWindowSec" - }, - "ForwardedIPConfig": { - "$ref": "#/definitions/ForwardedIPConfiguration" - }, - "Limit": { - "$ref": "#/definitions/RateLimit" - }, - "ScopeDownStatement": { - "$ref": "#/definitions/Statement" - } - }, - "required": [ - "Limit", - "AggregateKeyType" - ], - "type": "object" - }, - "RateBasedStatementCustomKey": { - "additionalProperties": false, - "description": "Specifies a single custom aggregate key for a rate-base rule.", - "properties": { - "Cookie": { - "$ref": "#/definitions/RateLimitCookie" - }, - "ForwardedIP": { - "$ref": "#/definitions/RateLimitForwardedIP" - }, - "HTTPMethod": { - "$ref": "#/definitions/RateLimitHTTPMethod" - }, - "Header": { - "$ref": "#/definitions/RateLimitHeader" - }, - "IP": { - "$ref": "#/definitions/RateLimitIP" - }, - "LabelNamespace": { - "$ref": "#/definitions/RateLimitLabelNamespace" - }, - "QueryArgument": { - "$ref": "#/definitions/RateLimitQueryArgument" - }, - "QueryString": { - "$ref": "#/definitions/RateLimitQueryString" - }, - "UriPath": { - "$ref": "#/definitions/RateLimitUriPath" - } - }, - "type": "object" - }, - "RateLimit": { - "maximum": 2000000000, - "minimum": 10, - "type": "integer" - }, - "RateLimitCookie": { - "additionalProperties": false, - "description": "Specifies a cookie as an aggregate key for a rate-based rule.", - "properties": { - "Name": { - "description": "The name of the cookie to use.", - "maxLength": 64, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "Name", - "TextTransformations" - ], - "type": "object" - }, - "RateLimitForwardedIP": { - "description": "Specifies the first IP address in an HTTP header as an aggregate key for a rate-based rule.", - "type": "object" - }, - "RateLimitHTTPMethod": { - "description": "Specifies the request's HTTP method as an aggregate key for a rate-based rule.", - "type": "object" - }, - "RateLimitHeader": { - "additionalProperties": false, - "description": "Specifies a header as an aggregate key for a rate-based rule.", - "properties": { - "Name": { - "description": "The name of the header to use.", - "maxLength": 64, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "Name", - "TextTransformations" - ], - "type": "object" - }, - "RateLimitIP": { - "description": "Specifies the IP address in the web request as an aggregate key for a rate-based rule.", - "type": "object" - }, - "RateLimitLabelNamespace": { - "additionalProperties": false, - "description": "Specifies a label namespace to use as an aggregate key for a rate-based rule.", - "properties": { - "Namespace": { - "description": "The namespace to use for aggregation.", - "pattern": "^[0-9A-Za-z_:-]{1,1024}$", - "type": "string" - } - }, - "required": [ - "Namespace" - ], - "type": "object" - }, - "RateLimitQueryArgument": { - "additionalProperties": false, - "description": "Specifies a query argument in the request as an aggregate key for a rate-based rule.", - "properties": { - "Name": { - "description": "The name of the query argument to use.", - "maxLength": 64, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "Name", - "TextTransformations" - ], - "type": "object" - }, - "RateLimitQueryString": { - "additionalProperties": false, - "description": "Specifies the request's query string as an aggregate key for a rate-based rule.", - "properties": { - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "TextTransformations" - ], - "type": "object" - }, - "RateLimitUriPath": { - "additionalProperties": false, - "description": "Specifies the request's URI Path as an aggregate key for a rate-based rule.", - "properties": { - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "TextTransformations" - ], - "type": "object" - }, - "RegexMatchStatement": { - "additionalProperties": false, - "properties": { - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "RegexString": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "RegexString", - "FieldToMatch", - "TextTransformations" - ], - "type": "object" - }, - "RegexPatternSetReferenceStatement": { - "additionalProperties": false, - "properties": { - "Arn": { - "$ref": "#/definitions/ResourceArn" - }, - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "Arn", - "FieldToMatch", - "TextTransformations" - ], - "type": "object" - }, - "ResourceArn": { - "description": "ARN of the WAF entity.", - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "ResponseContent": { - "description": "Response content.", - "maxLength": 10240, - "minLength": 1, - "type": "string" - }, - "ResponseContentType": { - "description": "Valid values are TEXT_PLAIN, TEXT_HTML, and APPLICATION_JSON.", - "enum": [ - "TEXT_PLAIN", - "TEXT_HTML", - "APPLICATION_JSON" - ], - "type": "string" - }, - "ResponseStatusCode": { - "description": "Custom response code.", - "maximum": 599, - "minimum": 200, - "type": "integer" - }, - "Rule": { - "additionalProperties": false, - "description": "Rule of RuleGroup that contains condition and action.", - "properties": { - "Action": { - "$ref": "#/definitions/RuleAction" - }, - "CaptchaConfig": { - "$ref": "#/definitions/CaptchaConfig" - }, - "ChallengeConfig": { - "$ref": "#/definitions/ChallengeConfig" - }, - "Name": { - "$ref": "#/definitions/EntityName" - }, - "Priority": { - "$ref": "#/definitions/RulePriority" - }, - "RuleLabels": { - "description": "Collection of Rule Labels.", - "items": { - "$ref": "#/definitions/Label" - }, - "type": "array" - }, - "Statement": { - "$ref": "#/definitions/Statement" - }, - "VisibilityConfig": { - "$ref": "#/definitions/VisibilityConfig" - } - }, - "required": [ - "Name", - "Priority", - "Statement", - "VisibilityConfig" - ], - "type": "object" - }, - "RuleAction": { - "additionalProperties": false, - "description": "Action taken when Rule matches its condition.", - "properties": { - "Allow": { - "$ref": "#/definitions/AllowAction" - }, - "Block": { - "$ref": "#/definitions/BlockAction" - }, - "Captcha": { - "$ref": "#/definitions/CaptchaAction" - }, - "Challenge": { - "$ref": "#/definitions/ChallengeAction" - }, - "Count": { - "$ref": "#/definitions/CountAction" - } - }, - "type": "object" - }, - "RuleGroup": { - "additionalProperties": false, - "properties": { - "Arn": { - "$ref": "#/definitions/ResourceArn" - }, - "Capacity": { - "minimum": 0, - "type": "integer" - }, - "Description": { - "$ref": "#/definitions/EntityDescription" - }, - "Id": { - "$ref": "#/definitions/EntityId" - }, - "Name": { - "$ref": "#/definitions/EntityName" - }, - "Rules": { - "description": "Collection of Rules.", - "items": { - "$ref": "#/definitions/Rule" - }, - "type": "array" - }, - "VisibilityConfig": { - "$ref": "#/definitions/VisibilityConfig" - } - }, - "type": "object" - }, - "RulePriority": { - "description": "Priority of the Rule, Rules get evaluated from lower to higher priority.", - "minimum": 0, - "type": "integer" - }, - "Scope": { - "description": "Use CLOUDFRONT for CloudFront RuleGroup, use REGIONAL for Application Load Balancer and API Gateway.", - "enum": [ - "CLOUDFRONT", - "REGIONAL" - ], - "type": "string" - }, - "SearchString": { - "description": "String that is searched to find a match.", - "type": "string" - }, - "SearchStringBase64": { - "description": "Base64 encoded string that is searched to find a match.", - "type": "string" - }, - "SensitivityLevel": { - "description": "Sensitivity Level current only used for sqli match statements.", - "enum": [ - "LOW", - "HIGH" - ], - "type": "string" - }, - "SizeConstraintStatement": { - "additionalProperties": false, - "description": "Size Constraint statement.", - "properties": { - "ComparisonOperator": { - "enum": [ - "EQ", - "NE", - "LE", - "LT", - "GE", - "GT" - ], - "type": "string" - }, - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "Size": { - "maximum": 21474836480, - "minimum": 0, - "type": "number" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "FieldToMatch", - "ComparisonOperator", - "Size", - "TextTransformations" - ], - "type": "object" - }, - "SqliMatchStatement": { - "additionalProperties": false, - "description": "Sqli Match Statement.", - "properties": { - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "SensitivityLevel": { - "$ref": "#/definitions/SensitivityLevel" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "FieldToMatch", - "TextTransformations" - ], - "type": "object" - }, - "Statement": { - "additionalProperties": false, - "description": "First level statement that contains conditions, such as ByteMatch, SizeConstraint, etc", - "properties": { - "AndStatement": { - "$ref": "#/definitions/AndStatement" - }, - "ByteMatchStatement": { - "$ref": "#/definitions/ByteMatchStatement" - }, - "GeoMatchStatement": { - "$ref": "#/definitions/GeoMatchStatement" - }, - "IPSetReferenceStatement": { - "$ref": "#/definitions/IPSetReferenceStatement" - }, - "LabelMatchStatement": { - "$ref": "#/definitions/LabelMatchStatement" - }, - "NotStatement": { - "$ref": "#/definitions/NotStatement" - }, - "OrStatement": { - "$ref": "#/definitions/OrStatement" - }, - "RateBasedStatement": { - "$ref": "#/definitions/RateBasedStatement" - }, - "RegexMatchStatement": { - "$ref": "#/definitions/RegexMatchStatement" - }, - "RegexPatternSetReferenceStatement": { - "$ref": "#/definitions/RegexPatternSetReferenceStatement" - }, - "SizeConstraintStatement": { - "$ref": "#/definitions/SizeConstraintStatement" - }, - "SqliMatchStatement": { - "$ref": "#/definitions/SqliMatchStatement" - }, - "XssMatchStatement": { - "$ref": "#/definitions/XssMatchStatement" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "TextTransformation": { - "additionalProperties": false, - "description": "Text Transformation on the Search String before match.", - "properties": { - "Priority": { - "$ref": "#/definitions/TextTransformationPriority" - }, - "Type": { - "$ref": "#/definitions/TextTransformationType" - } - }, - "required": [ - "Priority", - "Type" - ], - "type": "object" - }, - "TextTransformationPriority": { - "description": "Priority of Rule being evaluated.", - "minimum": 0, - "type": "integer" - }, - "TextTransformationType": { - "description": "Type of text transformation.", - "enum": [ - "NONE", - "COMPRESS_WHITE_SPACE", - "HTML_ENTITY_DECODE", - "LOWERCASE", - "CMD_LINE", - "URL_DECODE", - "BASE64_DECODE", - "HEX_DECODE", - "MD5", - "REPLACE_COMMENTS", - "ESCAPE_SEQ_DECODE", - "SQL_HEX_DECODE", - "CSS_DECODE", - "JS_DECODE", - "NORMALIZE_PATH", - "NORMALIZE_PATH_WIN", - "REMOVE_NULLS", - "REPLACE_NULLS", - "BASE64_DECODE_EXT", - "URL_DECODE_UNI", - "UTF8_TO_UNICODE" - ], - "type": "string" - }, - "VisibilityConfig": { - "additionalProperties": false, - "description": "Visibility Metric of the RuleGroup.", - "properties": { - "CloudWatchMetricsEnabled": { - "type": "boolean" - }, - "MetricName": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "SampledRequestsEnabled": { - "type": "boolean" - } - }, - "required": [ - "SampledRequestsEnabled", - "CloudWatchMetricsEnabled", - "MetricName" - ], - "type": "object" - }, - "XssMatchStatement": { - "additionalProperties": false, - "description": "Xss Match Statement.", - "properties": { - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "FieldToMatch", - "TextTransformations" - ], - "type": "object" - } - }, - "description": "Contains the Rules that identify the requests that you want to allow, block, or count. In a RuleGroup, you also specify a default action (ALLOW or BLOCK), and the action for each Rule that you add to a RuleGroup, for example, block requests from specified IP addresses or block requests from specified referrers. You also associate the RuleGroup with a CloudFront distribution to identify the requests that you want AWS WAF to filter. If you add more than one Rule to a RuleGroup, a request needs to match only one of the specifications to be allowed, blocked, or counted.", - "handlers": { - "create": { - "permissions": [ - "wafv2:CreateRuleGroup", - "wafv2:GetRuleGroup", - "wafv2:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "wafv2:DeleteRuleGroup", - "wafv2:GetRuleGroup" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Scope": { - "$ref": "resource-schema.json#/properties/Scope" - } - }, - "required": [ - "Scope" - ] - }, - "permissions": [ - "wafv2:listRuleGroups" - ] - }, - "read": { - "permissions": [ - "wafv2:GetRuleGroup", - "wafv2:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "wafv2:TagResource", - "wafv2:UntagResource", - "wafv2:UpdateRuleGroup", - "wafv2:GetRuleGroup", - "wafv2:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name", - "/properties/Id", - "/properties/Scope" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/ResourceArn" - }, - "AvailableLabels": { - "description": "Collection of Available Labels.", - "items": { - "$ref": "#/definitions/LabelSummary" - }, - "type": "array" - }, - "Capacity": { - "minimum": 0, - "type": "integer" - }, - "ConsumedLabels": { - "description": "Collection of Consumed Labels.", - "items": { - "$ref": "#/definitions/LabelSummary" - }, - "type": "array" - }, - "CustomResponseBodies": { - "$ref": "#/definitions/CustomResponseBodies" - }, - "Description": { - "$ref": "#/definitions/EntityDescription" - }, - "Id": { - "$ref": "#/definitions/EntityId" - }, - "LabelNamespace": { - "$ref": "#/definitions/LabelName" - }, - "Name": { - "$ref": "#/definitions/EntityName" - }, - "Rules": { - "description": "Collection of Rules.", - "items": { - "$ref": "#/definitions/Rule" - }, - "type": "array" - }, - "Scope": { - "$ref": "#/definitions/Scope" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "minItems": 1, - "type": "array" - }, - "VisibilityConfig": { - "$ref": "#/definitions/VisibilityConfig" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id", - "/properties/LabelNamespace", - "/properties/AvailableLabels/*/Name", - "/properties/ConsumedLabels/*/Name" - ], - "required": [ - "Capacity", - "Scope", - "VisibilityConfig" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-wafv2.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::WAFv2::RuleGroup" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Scope" + ], + "definitions": { + "AllowAction": { + "additionalProperties": false, + "description": "Allow traffic towards application.", + "properties": { + "CustomRequestHandling": { + "$ref": "#/definitions/CustomRequestHandling" + } + }, + "type": "object" + }, + "AndStatement": { + "additionalProperties": false, + "properties": { + "Statements": { + "items": { + "$ref": "#/definitions/Statement" + }, + "type": "array" + } + }, + "required": [ + "Statements" + ], + "type": "object" + }, + "BlockAction": { + "additionalProperties": false, + "description": "Block traffic towards application.", + "properties": { + "CustomResponse": { + "$ref": "#/definitions/CustomResponse" + } + }, + "type": "object" + }, + "Body": { + "additionalProperties": false, + "description": "The body of a web request. This immediately follows the request headers.", + "properties": { + "OversizeHandling": { + "$ref": "#/definitions/OversizeHandling" + } + }, + "type": "object" + }, + "BodyParsingFallbackBehavior": { + "description": "The inspection behavior to fall back to if the JSON in the request body is invalid.", + "enum": [ + "MATCH", + "NO_MATCH", + "EVALUATE_AS_STRING" + ], + "type": "string" + }, + "ByteMatchStatement": { + "additionalProperties": false, + "description": "Byte Match statement.", + "properties": { + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "PositionalConstraint": { + "$ref": "#/definitions/PositionalConstraint" + }, + "SearchString": { + "$ref": "#/definitions/SearchString" + }, + "SearchStringBase64": { + "$ref": "#/definitions/SearchStringBase64" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "FieldToMatch", + "PositionalConstraint", + "TextTransformations" + ], + "type": "object" + }, + "CaptchaAction": { + "additionalProperties": false, + "description": "Checks valid token exists with request.", + "properties": { + "CustomRequestHandling": { + "$ref": "#/definitions/CustomRequestHandling" + } + }, + "type": "object" + }, + "CaptchaConfig": { + "additionalProperties": false, + "properties": { + "ImmunityTimeProperty": { + "$ref": "#/definitions/ImmunityTimeProperty" + } + }, + "type": "object" + }, + "ChallengeAction": { + "additionalProperties": false, + "description": "Checks that the request has a valid token with an unexpired challenge timestamp and, if not, returns a browser challenge to the client.", + "properties": { + "CustomRequestHandling": { + "$ref": "#/definitions/CustomRequestHandling" + } + }, + "type": "object" + }, + "ChallengeConfig": { + "additionalProperties": false, + "properties": { + "ImmunityTimeProperty": { + "$ref": "#/definitions/ImmunityTimeProperty" + } + }, + "type": "object" + }, + "CookieMatchPattern": { + "additionalProperties": false, + "description": "The pattern to look for in the request cookies.", + "properties": { + "All": { + "description": "Inspect all parts of the web request cookies.", + "type": "object" + }, + "ExcludedCookies": { + "items": { + "maxLength": 60, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "maxItems": 199, + "minItems": 1, + "type": "array" + }, + "IncludedCookies": { + "items": { + "maxLength": 60, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "maxItems": 199, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "Cookies": { + "additionalProperties": false, + "description": "Includes cookies of a web request.", + "properties": { + "MatchPattern": { + "$ref": "#/definitions/CookieMatchPattern" + }, + "MatchScope": { + "$ref": "#/definitions/MapMatchScope" + }, + "OversizeHandling": { + "$ref": "#/definitions/OversizeHandling" + } + }, + "required": [ + "MatchPattern", + "MatchScope", + "OversizeHandling" + ], + "type": "object" + }, + "CountAction": { + "additionalProperties": false, + "description": "Count traffic towards application.", + "properties": { + "CustomRequestHandling": { + "$ref": "#/definitions/CustomRequestHandling" + } + }, + "type": "object" + }, + "CustomHTTPHeader": { + "additionalProperties": false, + "description": "HTTP header.", + "properties": { + "Name": { + "$ref": "#/definitions/CustomHTTPHeaderName" + }, + "Value": { + "$ref": "#/definitions/CustomHTTPHeaderValue" + } + }, + "required": [ + "Name", + "Value" + ], + "type": "object" + }, + "CustomHTTPHeaderName": { + "description": "HTTP header name.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "CustomHTTPHeaderValue": { + "description": "HTTP header value.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "CustomRequestHandling": { + "additionalProperties": false, + "description": "Custom request handling.", + "properties": { + "InsertHeaders": { + "description": "Collection of HTTP headers.", + "items": { + "$ref": "#/definitions/CustomHTTPHeader" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "InsertHeaders" + ], + "type": "object" + }, + "CustomResponse": { + "additionalProperties": false, + "description": "Custom response.", + "properties": { + "CustomResponseBodyKey": { + "description": "Custom response body key.", + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ResponseCode": { + "$ref": "#/definitions/ResponseStatusCode" + }, + "ResponseHeaders": { + "description": "Collection of HTTP headers.", + "items": { + "$ref": "#/definitions/CustomHTTPHeader" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "ResponseCode" + ], + "type": "object" + }, + "CustomResponseBodies": { + "additionalProperties": false, + "description": "Custom response key and body map.", + "minProperties": 1, + "patternProperties": { + "^[\\w\\-]+$": { + "$ref": "#/definitions/CustomResponseBody" + } + }, + "type": "object" + }, + "CustomResponseBody": { + "additionalProperties": false, + "description": "Custom response body.", + "properties": { + "Content": { + "$ref": "#/definitions/ResponseContent" + }, + "ContentType": { + "$ref": "#/definitions/ResponseContentType" + } + }, + "required": [ + "ContentType", + "Content" + ], + "type": "object" + }, + "EntityDescription": { + "description": "Description of the entity.", + "pattern": "^[a-zA-Z0-9=:#@/\\-,.][a-zA-Z0-9+=:#@/\\-,.\\s]+[a-zA-Z0-9+=:#@/\\-,.]{1,256}$", + "type": "string" + }, + "EntityId": { + "description": "Id of the RuleGroup", + "pattern": "^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$", + "type": "string" + }, + "EntityName": { + "description": "Name of the RuleGroup.", + "pattern": "^[0-9A-Za-z_-]{1,128}$", + "type": "string" + }, + "EvaluationWindowSec": { + "enum": [ + 60, + 120, + 300, + 600 + ], + "type": "integer" + }, + "FieldToMatch": { + "additionalProperties": false, + "description": "Field of the request to match.", + "properties": { + "AllQueryArguments": { + "description": "All query arguments of a web request.", + "type": "object" + }, + "Body": { + "$ref": "#/definitions/Body" + }, + "Cookies": { + "$ref": "#/definitions/Cookies" + }, + "Headers": { + "$ref": "#/definitions/Headers" + }, + "JA3Fingerprint": { + "$ref": "#/definitions/JA3Fingerprint" + }, + "JA4Fingerprint": { + "$ref": "#/definitions/JA4Fingerprint" + }, + "JsonBody": { + "$ref": "#/definitions/JsonBody" + }, + "Method": { + "description": "The HTTP method of a web request. The method indicates the type of operation that the request is asking the origin to perform.", + "type": "object" + }, + "QueryString": { + "description": "The query string of a web request. This is the part of a URL that appears after a ? character, if any.", + "type": "object" + }, + "SingleHeader": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "SingleQueryArgument": { + "additionalProperties": false, + "description": "One query argument in a web request, identified by name, for example UserName or SalesRegion. The name can be up to 30 characters long and isn't case sensitive.", + "properties": { + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "UriFragment": { + "$ref": "#/definitions/UriFragment" + }, + "UriPath": { + "description": "The path component of the URI of a web request. This is the part of a web request that identifies a resource, for example, /images/daily-ad.jpg.", + "type": "object" + } + }, + "type": "object" + }, + "ForwardedIPConfiguration": { + "additionalProperties": false, + "properties": { + "FallbackBehavior": { + "enum": [ + "MATCH", + "NO_MATCH" + ], + "type": "string" + }, + "HeaderName": { + "pattern": "^[a-zA-Z0-9-]+{1,255}$", + "type": "string" + } + }, + "required": [ + "HeaderName", + "FallbackBehavior" + ], + "type": "object" + }, + "GeoMatchStatement": { + "additionalProperties": false, + "properties": { + "CountryCodes": { + "items": { + "maxLength": 2, + "minLength": 1, + "type": "string" + }, + "type": "array" + }, + "ForwardedIPConfig": { + "$ref": "#/definitions/ForwardedIPConfiguration" + } + }, + "type": "object" + }, + "HeaderMatchPattern": { + "additionalProperties": false, + "description": "The pattern to look for in the request headers.", + "properties": { + "All": { + "description": "Inspect all parts of the web request headers.", + "type": "object" + }, + "ExcludedHeaders": { + "items": { + "maxLength": 64, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "maxItems": 199, + "minItems": 1, + "type": "array" + }, + "IncludedHeaders": { + "items": { + "maxLength": 64, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "maxItems": 199, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "Headers": { + "additionalProperties": false, + "description": "Includes headers of a web request.", + "properties": { + "MatchPattern": { + "$ref": "#/definitions/HeaderMatchPattern" + }, + "MatchScope": { + "$ref": "#/definitions/MapMatchScope" + }, + "OversizeHandling": { + "$ref": "#/definitions/OversizeHandling" + } + }, + "required": [ + "MatchPattern", + "MatchScope", + "OversizeHandling" + ], + "type": "object" + }, + "IPSetForwardedIPConfiguration": { + "additionalProperties": false, + "properties": { + "FallbackBehavior": { + "enum": [ + "MATCH", + "NO_MATCH" + ], + "type": "string" + }, + "HeaderName": { + "pattern": "^[a-zA-Z0-9-]+{1,255}$", + "type": "string" + }, + "Position": { + "enum": [ + "FIRST", + "LAST", + "ANY" + ], + "type": "string" + } + }, + "required": [ + "HeaderName", + "FallbackBehavior", + "Position" + ], + "type": "object" + }, + "IPSetReferenceStatement": { + "additionalProperties": false, + "properties": { + "Arn": { + "$ref": "#/definitions/ResourceArn" + }, + "IPSetForwardedIPConfig": { + "$ref": "#/definitions/IPSetForwardedIPConfiguration" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "ImmunityTimeProperty": { + "additionalProperties": false, + "properties": { + "ImmunityTime": { + "maximum": 259200, + "minimum": 60, + "type": "integer" + } + }, + "required": [ + "ImmunityTime" + ], + "type": "object" + }, + "JA3Fingerprint": { + "additionalProperties": false, + "description": "Includes the JA3 fingerprint of a web request.", + "properties": { + "FallbackBehavior": { + "enum": [ + "MATCH", + "NO_MATCH" + ], + "type": "string" + } + }, + "required": [ + "FallbackBehavior" + ], + "type": "object" + }, + "JA4Fingerprint": { + "additionalProperties": false, + "description": "Includes the JA4 fingerprint of a web request.", + "properties": { + "FallbackBehavior": { + "enum": [ + "MATCH", + "NO_MATCH" + ], + "type": "string" + } + }, + "required": [ + "FallbackBehavior" + ], + "type": "object" + }, + "JsonBody": { + "additionalProperties": false, + "description": "Inspect the request body as JSON. The request body immediately follows the request headers.", + "properties": { + "InvalidFallbackBehavior": { + "$ref": "#/definitions/BodyParsingFallbackBehavior" + }, + "MatchPattern": { + "$ref": "#/definitions/JsonMatchPattern" + }, + "MatchScope": { + "$ref": "#/definitions/JsonMatchScope" + }, + "OversizeHandling": { + "$ref": "#/definitions/OversizeHandling" + } + }, + "required": [ + "MatchPattern", + "MatchScope" + ], + "type": "object" + }, + "JsonMatchPattern": { + "additionalProperties": false, + "description": "The pattern to look for in the JSON body.", + "properties": { + "All": { + "description": "Inspect all parts of the web request's JSON body.", + "type": "object" + }, + "IncludedPaths": { + "items": { + "$ref": "#/definitions/JsonPointerPath" + }, + "type": "array" + } + }, + "type": "object" + }, + "JsonMatchScope": { + "description": "The parts of the JSON to match against using the MatchPattern.", + "enum": [ + "ALL", + "KEY", + "VALUE" + ], + "type": "string" + }, + "JsonPointerPath": { + "description": "JSON pointer path in the web request's JSON body", + "pattern": "^[\\/]+([^~]*(~[01])*)*{1,512}$", + "type": "string" + }, + "Label": { + "additionalProperties": false, + "properties": { + "Name": { + "$ref": "#/definitions/LabelName" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "LabelMatchKey": { + "pattern": "^[0-9A-Za-z_:-]{1,1024}$", + "type": "string" + }, + "LabelMatchScope": { + "enum": [ + "LABEL", + "NAMESPACE" + ], + "type": "string" + }, + "LabelMatchStatement": { + "additionalProperties": false, + "properties": { + "Key": { + "$ref": "#/definitions/LabelMatchKey" + }, + "Scope": { + "$ref": "#/definitions/LabelMatchScope" + } + }, + "required": [ + "Scope", + "Key" + ], + "type": "object" + }, + "LabelName": { + "description": "Name of the Label.", + "pattern": "^[0-9A-Za-z_:-]{1,1024}$", + "type": "string" + }, + "LabelSummary": { + "additionalProperties": false, + "properties": { + "Name": { + "$ref": "#/definitions/LabelName" + } + }, + "type": "object" + }, + "MapMatchScope": { + "description": "The parts of the request to match against using the MatchPattern.", + "enum": [ + "ALL", + "KEY", + "VALUE" + ], + "type": "string" + }, + "NotStatement": { + "additionalProperties": false, + "properties": { + "Statement": { + "$ref": "#/definitions/Statement" + } + }, + "required": [ + "Statement" + ], + "type": "object" + }, + "OrStatement": { + "additionalProperties": false, + "properties": { + "Statements": { + "items": { + "$ref": "#/definitions/Statement" + }, + "type": "array" + } + }, + "required": [ + "Statements" + ], + "type": "object" + }, + "OversizeHandling": { + "description": "Handling of requests containing oversize fields", + "enum": [ + "CONTINUE", + "MATCH", + "NO_MATCH" + ], + "type": "string" + }, + "PositionalConstraint": { + "description": "Position of the evaluation in the FieldToMatch of request.", + "enum": [ + "EXACTLY", + "STARTS_WITH", + "ENDS_WITH", + "CONTAINS", + "CONTAINS_WORD" + ], + "type": "string" + }, + "RateBasedStatement": { + "additionalProperties": false, + "properties": { + "AggregateKeyType": { + "enum": [ + "IP", + "FORWARDED_IP", + "CONSTANT", + "CUSTOM_KEYS" + ], + "type": "string" + }, + "CustomKeys": { + "description": "Specifies the aggregate keys to use in a rate-base rule.", + "items": { + "$ref": "#/definitions/RateBasedStatementCustomKey" + }, + "maxItems": 5, + "type": "array" + }, + "EvaluationWindowSec": { + "$ref": "#/definitions/EvaluationWindowSec" + }, + "ForwardedIPConfig": { + "$ref": "#/definitions/ForwardedIPConfiguration" + }, + "Limit": { + "$ref": "#/definitions/RateLimit" + }, + "ScopeDownStatement": { + "$ref": "#/definitions/Statement" + } + }, + "required": [ + "Limit", + "AggregateKeyType" + ], + "type": "object" + }, + "RateBasedStatementCustomKey": { + "additionalProperties": false, + "description": "Specifies a single custom aggregate key for a rate-base rule.", + "properties": { + "Cookie": { + "$ref": "#/definitions/RateLimitCookie" + }, + "ForwardedIP": { + "$ref": "#/definitions/RateLimitForwardedIP" + }, + "HTTPMethod": { + "$ref": "#/definitions/RateLimitHTTPMethod" + }, + "Header": { + "$ref": "#/definitions/RateLimitHeader" + }, + "IP": { + "$ref": "#/definitions/RateLimitIP" + }, + "JA3Fingerprint": { + "$ref": "#/definitions/RateLimitJA3Fingerprint" + }, + "JA4Fingerprint": { + "$ref": "#/definitions/RateLimitJA4Fingerprint" + }, + "LabelNamespace": { + "$ref": "#/definitions/RateLimitLabelNamespace" + }, + "QueryArgument": { + "$ref": "#/definitions/RateLimitQueryArgument" + }, + "QueryString": { + "$ref": "#/definitions/RateLimitQueryString" + }, + "UriPath": { + "$ref": "#/definitions/RateLimitUriPath" + } + }, + "type": "object" + }, + "RateLimit": { + "maximum": 2000000000, + "minimum": 10, + "type": "integer" + }, + "RateLimitCookie": { + "additionalProperties": false, + "description": "Specifies a cookie as an aggregate key for a rate-based rule.", + "properties": { + "Name": { + "description": "The name of the cookie to use.", + "maxLength": 64, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "Name", + "TextTransformations" + ], + "type": "object" + }, + "RateLimitForwardedIP": { + "description": "Specifies the first IP address in an HTTP header as an aggregate key for a rate-based rule.", + "type": "object" + }, + "RateLimitHTTPMethod": { + "description": "Specifies the request's HTTP method as an aggregate key for a rate-based rule.", + "type": "object" + }, + "RateLimitHeader": { + "additionalProperties": false, + "description": "Specifies a header as an aggregate key for a rate-based rule.", + "properties": { + "Name": { + "description": "The name of the header to use.", + "maxLength": 64, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "Name", + "TextTransformations" + ], + "type": "object" + }, + "RateLimitIP": { + "description": "Specifies the IP address in the web request as an aggregate key for a rate-based rule.", + "type": "object" + }, + "RateLimitJA3Fingerprint": { + "additionalProperties": false, + "description": "Specifies the request's JA3 fingerprint as an aggregate key for a rate-based rule.", + "properties": { + "FallbackBehavior": { + "enum": [ + "MATCH", + "NO_MATCH" + ], + "type": "string" + } + }, + "required": [ + "FallbackBehavior" + ], + "type": "object" + }, + "RateLimitJA4Fingerprint": { + "additionalProperties": false, + "description": "Specifies the request's JA4 fingerprint as an aggregate key for a rate-based rule.", + "properties": { + "FallbackBehavior": { + "enum": [ + "MATCH", + "NO_MATCH" + ], + "type": "string" + } + }, + "required": [ + "FallbackBehavior" + ], + "type": "object" + }, + "RateLimitLabelNamespace": { + "additionalProperties": false, + "description": "Specifies a label namespace to use as an aggregate key for a rate-based rule.", + "properties": { + "Namespace": { + "description": "The namespace to use for aggregation.", + "pattern": "^[0-9A-Za-z_:-]{1,1024}$", + "type": "string" + } + }, + "required": [ + "Namespace" + ], + "type": "object" + }, + "RateLimitQueryArgument": { + "additionalProperties": false, + "description": "Specifies a query argument in the request as an aggregate key for a rate-based rule.", + "properties": { + "Name": { + "description": "The name of the query argument to use.", + "maxLength": 64, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "Name", + "TextTransformations" + ], + "type": "object" + }, + "RateLimitQueryString": { + "additionalProperties": false, + "description": "Specifies the request's query string as an aggregate key for a rate-based rule.", + "properties": { + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "TextTransformations" + ], + "type": "object" + }, + "RateLimitUriPath": { + "additionalProperties": false, + "description": "Specifies the request's URI Path as an aggregate key for a rate-based rule.", + "properties": { + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "TextTransformations" + ], + "type": "object" + }, + "RegexMatchStatement": { + "additionalProperties": false, + "properties": { + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "RegexString": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "RegexString", + "FieldToMatch", + "TextTransformations" + ], + "type": "object" + }, + "RegexPatternSetReferenceStatement": { + "additionalProperties": false, + "properties": { + "Arn": { + "$ref": "#/definitions/ResourceArn" + }, + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "Arn", + "FieldToMatch", + "TextTransformations" + ], + "type": "object" + }, + "ResourceArn": { + "description": "ARN of the WAF entity.", + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "ResponseContent": { + "description": "Response content.", + "maxLength": 10240, + "minLength": 1, + "type": "string" + }, + "ResponseContentType": { + "description": "Valid values are TEXT_PLAIN, TEXT_HTML, and APPLICATION_JSON.", + "enum": [ + "TEXT_PLAIN", + "TEXT_HTML", + "APPLICATION_JSON" + ], + "type": "string" + }, + "ResponseStatusCode": { + "description": "Custom response code.", + "maximum": 599, + "minimum": 200, + "type": "integer" + }, + "Rule": { + "additionalProperties": false, + "description": "Rule of RuleGroup that contains condition and action.", + "properties": { + "Action": { + "$ref": "#/definitions/RuleAction" + }, + "CaptchaConfig": { + "$ref": "#/definitions/CaptchaConfig" + }, + "ChallengeConfig": { + "$ref": "#/definitions/ChallengeConfig" + }, + "Name": { + "$ref": "#/definitions/EntityName" + }, + "Priority": { + "$ref": "#/definitions/RulePriority" + }, + "RuleLabels": { + "description": "Collection of Rule Labels.", + "items": { + "$ref": "#/definitions/Label" + }, + "type": "array" + }, + "Statement": { + "$ref": "#/definitions/Statement" + }, + "VisibilityConfig": { + "$ref": "#/definitions/VisibilityConfig" + } + }, + "required": [ + "Name", + "Priority", + "Statement", + "VisibilityConfig" + ], + "type": "object" + }, + "RuleAction": { + "additionalProperties": false, + "description": "Action taken when Rule matches its condition.", + "properties": { + "Allow": { + "$ref": "#/definitions/AllowAction" + }, + "Block": { + "$ref": "#/definitions/BlockAction" + }, + "Captcha": { + "$ref": "#/definitions/CaptchaAction" + }, + "Challenge": { + "$ref": "#/definitions/ChallengeAction" + }, + "Count": { + "$ref": "#/definitions/CountAction" + } + }, + "type": "object" + }, + "RuleGroup": { + "additionalProperties": false, + "properties": { + "Arn": { + "$ref": "#/definitions/ResourceArn" + }, + "Capacity": { + "minimum": 0, + "type": "integer" + }, + "Description": { + "$ref": "#/definitions/EntityDescription" + }, + "Id": { + "$ref": "#/definitions/EntityId" + }, + "Name": { + "$ref": "#/definitions/EntityName" + }, + "Rules": { + "description": "Collection of Rules.", + "items": { + "$ref": "#/definitions/Rule" + }, + "type": "array" + }, + "VisibilityConfig": { + "$ref": "#/definitions/VisibilityConfig" + } + }, + "type": "object" + }, + "RulePriority": { + "description": "Priority of the Rule, Rules get evaluated from lower to higher priority.", + "minimum": 0, + "type": "integer" + }, + "Scope": { + "description": "Use CLOUDFRONT for CloudFront RuleGroup, use REGIONAL for Application Load Balancer and API Gateway.", + "enum": [ + "CLOUDFRONT", + "REGIONAL" + ], + "type": "string" + }, + "SearchString": { + "description": "String that is searched to find a match.", + "type": "string" + }, + "SearchStringBase64": { + "description": "Base64 encoded string that is searched to find a match.", + "type": "string" + }, + "SensitivityLevel": { + "description": "Sensitivity Level current only used for sqli match statements.", + "enum": [ + "LOW", + "HIGH" + ], + "type": "string" + }, + "SizeConstraintStatement": { + "additionalProperties": false, + "description": "Size Constraint statement.", + "properties": { + "ComparisonOperator": { + "enum": [ + "EQ", + "NE", + "LE", + "LT", + "GE", + "GT" + ], + "type": "string" + }, + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "Size": { + "maximum": 21474836480, + "minimum": 0, + "type": "number" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "FieldToMatch", + "ComparisonOperator", + "Size", + "TextTransformations" + ], + "type": "object" + }, + "SqliMatchStatement": { + "additionalProperties": false, + "description": "Sqli Match Statement.", + "properties": { + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "SensitivityLevel": { + "$ref": "#/definitions/SensitivityLevel" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "FieldToMatch", + "TextTransformations" + ], + "type": "object" + }, + "Statement": { + "additionalProperties": false, + "description": "First level statement that contains conditions, such as ByteMatch, SizeConstraint, etc", + "properties": { + "AndStatement": { + "$ref": "#/definitions/AndStatement" + }, + "ByteMatchStatement": { + "$ref": "#/definitions/ByteMatchStatement" + }, + "GeoMatchStatement": { + "$ref": "#/definitions/GeoMatchStatement" + }, + "IPSetReferenceStatement": { + "$ref": "#/definitions/IPSetReferenceStatement" + }, + "LabelMatchStatement": { + "$ref": "#/definitions/LabelMatchStatement" + }, + "NotStatement": { + "$ref": "#/definitions/NotStatement" + }, + "OrStatement": { + "$ref": "#/definitions/OrStatement" + }, + "RateBasedStatement": { + "$ref": "#/definitions/RateBasedStatement" + }, + "RegexMatchStatement": { + "$ref": "#/definitions/RegexMatchStatement" + }, + "RegexPatternSetReferenceStatement": { + "$ref": "#/definitions/RegexPatternSetReferenceStatement" + }, + "SizeConstraintStatement": { + "$ref": "#/definitions/SizeConstraintStatement" + }, + "SqliMatchStatement": { + "$ref": "#/definitions/SqliMatchStatement" + }, + "XssMatchStatement": { + "$ref": "#/definitions/XssMatchStatement" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "TextTransformation": { + "additionalProperties": false, + "description": "Text Transformation on the Search String before match.", + "properties": { + "Priority": { + "$ref": "#/definitions/TextTransformationPriority" + }, + "Type": { + "$ref": "#/definitions/TextTransformationType" + } + }, + "required": [ + "Priority", + "Type" + ], + "type": "object" + }, + "TextTransformationPriority": { + "description": "Priority of Rule being evaluated.", + "minimum": 0, + "type": "integer" + }, + "TextTransformationType": { + "description": "Type of text transformation.", + "enum": [ + "NONE", + "COMPRESS_WHITE_SPACE", + "HTML_ENTITY_DECODE", + "LOWERCASE", + "CMD_LINE", + "URL_DECODE", + "BASE64_DECODE", + "HEX_DECODE", + "MD5", + "REPLACE_COMMENTS", + "ESCAPE_SEQ_DECODE", + "SQL_HEX_DECODE", + "CSS_DECODE", + "JS_DECODE", + "NORMALIZE_PATH", + "NORMALIZE_PATH_WIN", + "REMOVE_NULLS", + "REPLACE_NULLS", + "BASE64_DECODE_EXT", + "URL_DECODE_UNI", + "UTF8_TO_UNICODE" + ], + "type": "string" + }, + "UriFragment": { + "additionalProperties": false, + "description": "The path component of the URI Fragment. This is the part of a web request that identifies a fragment uri, for example, /abcd#introduction", + "properties": { + "FallbackBehavior": { + "enum": [ + "MATCH", + "NO_MATCH" + ], + "type": "string" + } + }, + "type": "object" + }, + "VisibilityConfig": { + "additionalProperties": false, + "description": "Visibility Metric of the RuleGroup.", + "properties": { + "CloudWatchMetricsEnabled": { + "type": "boolean" + }, + "MetricName": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SampledRequestsEnabled": { + "type": "boolean" + } + }, + "required": [ + "SampledRequestsEnabled", + "CloudWatchMetricsEnabled", + "MetricName" + ], + "type": "object" + }, + "XssMatchStatement": { + "additionalProperties": false, + "description": "Xss Match Statement.", + "properties": { + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "FieldToMatch", + "TextTransformations" + ], + "type": "object" + } + }, + "description": "Contains the Rules that identify the requests that you want to allow, block, or count. In a RuleGroup, you also specify a default action (ALLOW or BLOCK), and the action for each Rule that you add to a RuleGroup, for example, block requests from specified IP addresses or block requests from specified referrers. You also associate the RuleGroup with a CloudFront distribution to identify the requests that you want AWS WAF to filter. If you add more than one Rule to a RuleGroup, a request needs to match only one of the specifications to be allowed, blocked, or counted.", + "handlers": { + "create": { + "permissions": [ + "wafv2:CreateRuleGroup", + "wafv2:GetRuleGroup", + "wafv2:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "wafv2:DeleteRuleGroup", + "wafv2:GetRuleGroup" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Scope": { + "$ref": "resource-schema.json#/properties/Scope" + } + }, + "required": [ + "Scope" + ] + }, + "permissions": [ + "wafv2:listRuleGroups" + ] + }, + "read": { + "permissions": [ + "wafv2:GetRuleGroup", + "wafv2:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "wafv2:TagResource", + "wafv2:UntagResource", + "wafv2:UpdateRuleGroup", + "wafv2:GetRuleGroup", + "wafv2:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name", + "/properties/Id", + "/properties/Scope" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/ResourceArn" + }, + "AvailableLabels": { + "description": "Collection of Available Labels.", + "items": { + "$ref": "#/definitions/LabelSummary" + }, + "type": "array" + }, + "Capacity": { + "minimum": 0, + "type": "integer" + }, + "ConsumedLabels": { + "description": "Collection of Consumed Labels.", + "items": { + "$ref": "#/definitions/LabelSummary" + }, + "type": "array" + }, + "CustomResponseBodies": { + "$ref": "#/definitions/CustomResponseBodies" + }, + "Description": { + "$ref": "#/definitions/EntityDescription" + }, + "Id": { + "$ref": "#/definitions/EntityId" + }, + "LabelNamespace": { + "$ref": "#/definitions/LabelName" + }, + "Name": { + "$ref": "#/definitions/EntityName" + }, + "Rules": { + "description": "Collection of Rules.", + "items": { + "$ref": "#/definitions/Rule" + }, + "type": "array" + }, + "Scope": { + "$ref": "#/definitions/Scope" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "minItems": 1, + "type": "array" + }, + "VisibilityConfig": { + "$ref": "#/definitions/VisibilityConfig" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/LabelNamespace", + "/properties/AvailableLabels/*/Name", + "/properties/ConsumedLabels/*/Name" + ], + "required": [ + "Capacity", + "Scope", + "VisibilityConfig" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-wafv2.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::WAFv2::RuleGroup" +} diff --git a/src/schema/aws-wafv2-webacl.json b/src/schema/aws-wafv2-webacl.json index 5e49af56..10093142 100644 --- a/src/schema/aws-wafv2-webacl.json +++ b/src/schema/aws-wafv2-webacl.json @@ -1,2005 +1,2168 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/Scope" - ], - "definitions": { - "AWSManagedRulesACFPRuleSet": { - "additionalProperties": false, - "description": "Configures how to use the Account creation fraud prevention managed rule group in the web ACL", - "properties": { - "CreationPath": { - "type": "string" - }, - "EnableRegexInPath": { - "type": "boolean" - }, - "RegistrationPagePath": { - "type": "string" - }, - "RequestInspection": { - "$ref": "#/definitions/RequestInspectionACFP" - }, - "ResponseInspection": { - "$ref": "#/definitions/ResponseInspection" - } - }, - "required": [ - "CreationPath", - "RegistrationPagePath", - "RequestInspection" - ], - "type": "object" - }, - "AWSManagedRulesATPRuleSet": { - "additionalProperties": false, - "description": "Configures how to use the Account Takeover Prevention managed rule group in the web ACL", - "properties": { - "EnableRegexInPath": { - "type": "boolean" - }, - "LoginPath": { - "type": "string" - }, - "RequestInspection": { - "$ref": "#/definitions/RequestInspection" - }, - "ResponseInspection": { - "$ref": "#/definitions/ResponseInspection" - } - }, - "required": [ - "LoginPath" - ], - "type": "object" - }, - "AWSManagedRulesBotControlRuleSet": { - "additionalProperties": false, - "description": "Configures how to use the Bot Control managed rule group in the web ACL", - "properties": { - "EnableMachineLearning": { - "type": "boolean" - }, - "InspectionLevel": { - "enum": [ - "COMMON", - "TARGETED" - ], - "type": "string" - } - }, - "required": [ - "InspectionLevel" - ], - "type": "object" - }, - "AddressField": { - "$ref": "#/definitions/FieldIdentifier" - }, - "AllowAction": { - "additionalProperties": false, - "description": "Allow traffic towards application.", - "properties": { - "CustomRequestHandling": { - "$ref": "#/definitions/CustomRequestHandling" - } - }, - "type": "object" - }, - "AndStatement": { - "additionalProperties": false, - "properties": { - "Statements": { - "items": { - "$ref": "#/definitions/Statement" - }, - "type": "array" - } - }, - "required": [ - "Statements" - ], - "type": "object" - }, - "AssociationConfig": { - "additionalProperties": false, - "description": "AssociationConfig for body inspection", - "properties": { - "RequestBody": { - "$ref": "#/definitions/RequestBody" - } - }, - "type": "object" - }, - "BlockAction": { - "additionalProperties": false, - "description": "Block traffic towards application.", - "properties": { - "CustomResponse": { - "$ref": "#/definitions/CustomResponse" - } - }, - "type": "object" - }, - "Body": { - "additionalProperties": false, - "description": "The body of a web request. This immediately follows the request headers.", - "properties": { - "OversizeHandling": { - "$ref": "#/definitions/OversizeHandling" - } - }, - "type": "object" - }, - "BodyParsingFallbackBehavior": { - "description": "The inspection behavior to fall back to if the JSON in the request body is invalid.", - "enum": [ - "MATCH", - "NO_MATCH", - "EVALUATE_AS_STRING" - ], - "type": "string" - }, - "ByteMatchStatement": { - "additionalProperties": false, - "description": "Byte Match statement.", - "properties": { - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "PositionalConstraint": { - "$ref": "#/definitions/PositionalConstraint" - }, - "SearchString": { - "$ref": "#/definitions/SearchString" - }, - "SearchStringBase64": { - "$ref": "#/definitions/SearchStringBase64" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "FieldToMatch", - "PositionalConstraint", - "TextTransformations" - ], - "type": "object" - }, - "CaptchaAction": { - "additionalProperties": false, - "description": "Checks valid token exists with request.", - "properties": { - "CustomRequestHandling": { - "$ref": "#/definitions/CustomRequestHandling" - } - }, - "type": "object" - }, - "CaptchaConfig": { - "additionalProperties": false, - "properties": { - "ImmunityTimeProperty": { - "$ref": "#/definitions/ImmunityTimeProperty" - } - }, - "type": "object" - }, - "ChallengeAction": { - "additionalProperties": false, - "description": "Checks that the request has a valid token with an unexpired challenge timestamp and, if not, returns a browser challenge to the client.", - "properties": { - "CustomRequestHandling": { - "$ref": "#/definitions/CustomRequestHandling" - } - }, - "type": "object" - }, - "ChallengeConfig": { - "additionalProperties": false, - "properties": { - "ImmunityTimeProperty": { - "$ref": "#/definitions/ImmunityTimeProperty" - } - }, - "type": "object" - }, - "CookieMatchPattern": { - "additionalProperties": false, - "description": "The pattern to look for in the request cookies.", - "properties": { - "All": { - "description": "Inspect all parts of the web request cookies.", - "type": "object" - }, - "ExcludedCookies": { - "items": { - "maxLength": 60, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "maxItems": 199, - "minItems": 1, - "type": "array" - }, - "IncludedCookies": { - "items": { - "maxLength": 60, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "maxItems": 199, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "Cookies": { - "additionalProperties": false, - "description": "Includes cookies of a web request.", - "properties": { - "MatchPattern": { - "$ref": "#/definitions/CookieMatchPattern" - }, - "MatchScope": { - "$ref": "#/definitions/MapMatchScope" - }, - "OversizeHandling": { - "$ref": "#/definitions/OversizeHandling" - } - }, - "required": [ - "MatchPattern", - "MatchScope", - "OversizeHandling" - ], - "type": "object" - }, - "CountAction": { - "additionalProperties": false, - "description": "Allow traffic towards application.", - "properties": { - "CustomRequestHandling": { - "$ref": "#/definitions/CustomRequestHandling" - } - }, - "type": "object" - }, - "CustomHTTPHeader": { - "additionalProperties": false, - "description": "HTTP header.", - "properties": { - "Name": { - "$ref": "#/definitions/CustomHTTPHeaderName" - }, - "Value": { - "$ref": "#/definitions/CustomHTTPHeaderValue" - } - }, - "required": [ - "Name", - "Value" - ], - "type": "object" - }, - "CustomHTTPHeaderName": { - "description": "HTTP header name.", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "CustomHTTPHeaderValue": { - "description": "HTTP header value.", - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "CustomRequestHandling": { - "additionalProperties": false, - "description": "Custom request handling.", - "properties": { - "InsertHeaders": { - "description": "Collection of HTTP headers.", - "items": { - "$ref": "#/definitions/CustomHTTPHeader" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "InsertHeaders" - ], - "type": "object" - }, - "CustomResponse": { - "additionalProperties": false, - "description": "Custom response.", - "properties": { - "CustomResponseBodyKey": { - "description": "Custom response body key.", - "pattern": "^[\\w\\-]+$", - "type": "string" - }, - "ResponseCode": { - "$ref": "#/definitions/ResponseStatusCode" - }, - "ResponseHeaders": { - "description": "Collection of HTTP headers.", - "items": { - "$ref": "#/definitions/CustomHTTPHeader" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "ResponseCode" - ], - "type": "object" - }, - "CustomResponseBodies": { - "additionalProperties": false, - "description": "Custom response key and body map.", - "minProperties": 1, - "patternProperties": { - "^[\\w\\-]+$": { - "$ref": "#/definitions/CustomResponseBody" - } - }, - "type": "object" - }, - "CustomResponseBody": { - "additionalProperties": false, - "description": "Custom response body.", - "properties": { - "Content": { - "$ref": "#/definitions/ResponseContent" - }, - "ContentType": { - "$ref": "#/definitions/ResponseContentType" - } - }, - "required": [ - "ContentType", - "Content" - ], - "type": "object" - }, - "DefaultAction": { - "additionalProperties": false, - "description": "Default Action WebACL will take against ingress traffic when there is no matching Rule.", - "properties": { - "Allow": { - "$ref": "#/definitions/AllowAction" - }, - "Block": { - "$ref": "#/definitions/BlockAction" - } - }, - "type": "object" - }, - "EntityDescription": { - "description": "Description of the entity.", - "pattern": "^[a-zA-Z0-9=:#@/\\-,.][a-zA-Z0-9+=:#@/\\-,.\\s]+[a-zA-Z0-9+=:#@/\\-,.]{1,256}$", - "type": "string" - }, - "EntityId": { - "description": "Id of the WebACL", - "pattern": "^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$", - "type": "string" - }, - "EntityName": { - "description": "Name of the WebACL.", - "pattern": "^[0-9A-Za-z_-]{1,128}$", - "type": "string" - }, - "EvaluationWindowSec": { - "enum": [ - 60, - 120, - 300, - 600 - ], - "type": "integer" - }, - "ExcludedRule": { - "additionalProperties": false, - "description": "Excluded Rule in the RuleGroup or ManagedRuleGroup will not be evaluated.", - "properties": { - "Name": { - "$ref": "#/definitions/EntityName" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "ExcludedRules": { - "items": { - "$ref": "#/definitions/ExcludedRule" - }, - "type": "array" - }, - "FieldIdentifier": { - "additionalProperties": false, - "properties": { - "Identifier": { - "maxLength": 512, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - } - }, - "required": [ - "Identifier" - ], - "type": "object" - }, - "FieldToMatch": { - "additionalProperties": false, - "description": "Field of the request to match.", - "properties": { - "AllQueryArguments": { - "description": "All query arguments of a web request.", - "type": "object" - }, - "Body": { - "$ref": "#/definitions/Body" - }, - "Cookies": { - "$ref": "#/definitions/Cookies" - }, - "Headers": { - "$ref": "#/definitions/Headers" - }, - "JA3Fingerprint": { - "$ref": "#/definitions/JA3Fingerprint" - }, - "JsonBody": { - "$ref": "#/definitions/JsonBody" - }, - "Method": { - "description": "The HTTP method of a web request. The method indicates the type of operation that the request is asking the origin to perform.", - "type": "object" - }, - "QueryString": { - "description": "The query string of a web request. This is the part of a URL that appears after a ? character, if any.", - "type": "object" - }, - "SingleHeader": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "SingleQueryArgument": { - "additionalProperties": false, - "description": "One query argument in a web request, identified by name, for example UserName or SalesRegion. The name can be up to 30 characters long and isn't case sensitive.", - "properties": { - "Name": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "UriPath": { - "description": "The path component of the URI of a web request. This is the part of a web request that identifies a resource, for example, /images/daily-ad.jpg.", - "type": "object" - } - }, - "type": "object" - }, - "ForwardedIPConfiguration": { - "additionalProperties": false, - "properties": { - "FallbackBehavior": { - "enum": [ - "MATCH", - "NO_MATCH" - ], - "type": "string" - }, - "HeaderName": { - "pattern": "^[a-zA-Z0-9-]+{1,255}$", - "type": "string" - } - }, - "required": [ - "HeaderName", - "FallbackBehavior" - ], - "type": "object" - }, - "GeoMatchStatement": { - "additionalProperties": false, - "properties": { - "CountryCodes": { - "items": { - "maxLength": 2, - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "ForwardedIPConfig": { - "$ref": "#/definitions/ForwardedIPConfiguration" - } - }, - "type": "object" - }, - "HeaderMatchPattern": { - "additionalProperties": false, - "description": "The pattern to look for in the request headers.", - "properties": { - "All": { - "description": "Inspect all parts of the web request headers.", - "type": "object" - }, - "ExcludedHeaders": { - "items": { - "maxLength": 64, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "maxItems": 199, - "minItems": 1, - "type": "array" - }, - "IncludedHeaders": { - "items": { - "maxLength": 64, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "maxItems": 199, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "Headers": { - "additionalProperties": false, - "description": "Includes headers of a web request.", - "properties": { - "MatchPattern": { - "$ref": "#/definitions/HeaderMatchPattern" - }, - "MatchScope": { - "$ref": "#/definitions/MapMatchScope" - }, - "OversizeHandling": { - "$ref": "#/definitions/OversizeHandling" - } - }, - "required": [ - "MatchPattern", - "MatchScope", - "OversizeHandling" - ], - "type": "object" - }, - "IPSetForwardedIPConfiguration": { - "additionalProperties": false, - "properties": { - "FallbackBehavior": { - "enum": [ - "MATCH", - "NO_MATCH" - ], - "type": "string" - }, - "HeaderName": { - "pattern": "^[a-zA-Z0-9-]+{1,255}$", - "type": "string" - }, - "Position": { - "enum": [ - "FIRST", - "LAST", - "ANY" - ], - "type": "string" - } - }, - "required": [ - "HeaderName", - "FallbackBehavior", - "Position" - ], - "type": "object" - }, - "IPSetReferenceStatement": { - "additionalProperties": false, - "properties": { - "Arn": { - "$ref": "#/definitions/ResourceArn" - }, - "IPSetForwardedIPConfig": { - "$ref": "#/definitions/IPSetForwardedIPConfiguration" - } - }, - "required": [ - "Arn" - ], - "type": "object" - }, - "ImmunityTimeProperty": { - "additionalProperties": false, - "properties": { - "ImmunityTime": { - "maximum": 259200, - "minimum": 60, - "type": "integer" - } - }, - "required": [ - "ImmunityTime" - ], - "type": "object" - }, - "JA3Fingerprint": { - "additionalProperties": false, - "description": "Includes the JA3 fingerprint of a web request.", - "properties": { - "FallbackBehavior": { - "enum": [ - "MATCH", - "NO_MATCH" - ], - "type": "string" - } - }, - "required": [ - "FallbackBehavior" - ], - "type": "object" - }, - "JsonBody": { - "additionalProperties": false, - "description": "Inspect the request body as JSON. The request body immediately follows the request headers.", - "properties": { - "InvalidFallbackBehavior": { - "$ref": "#/definitions/BodyParsingFallbackBehavior" - }, - "MatchPattern": { - "$ref": "#/definitions/JsonMatchPattern" - }, - "MatchScope": { - "$ref": "#/definitions/JsonMatchScope" - }, - "OversizeHandling": { - "$ref": "#/definitions/OversizeHandling" - } - }, - "required": [ - "MatchPattern", - "MatchScope" - ], - "type": "object" - }, - "JsonMatchPattern": { - "additionalProperties": false, - "description": "The pattern to look for in the JSON body.", - "properties": { - "All": { - "description": "Inspect all parts of the web request's JSON body.", - "type": "object" - }, - "IncludedPaths": { - "items": { - "$ref": "#/definitions/JsonPointerPath" - }, - "type": "array" - } - }, - "type": "object" - }, - "JsonMatchScope": { - "description": "The parts of the JSON to match against using the MatchPattern.", - "enum": [ - "ALL", - "KEY", - "VALUE" - ], - "type": "string" - }, - "JsonPointerPath": { - "description": "JSON pointer path in the web request's JSON body", - "pattern": "^[\\/]+([^~]*(~[01])*)*{1,512}$", - "type": "string" - }, - "Label": { - "additionalProperties": false, - "properties": { - "Name": { - "$ref": "#/definitions/LabelName" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "LabelMatchKey": { - "pattern": "^[0-9A-Za-z_:-]{1,1024}$", - "type": "string" - }, - "LabelMatchScope": { - "enum": [ - "LABEL", - "NAMESPACE" - ], - "type": "string" - }, - "LabelMatchStatement": { - "additionalProperties": false, - "properties": { - "Key": { - "$ref": "#/definitions/LabelMatchKey" - }, - "Scope": { - "$ref": "#/definitions/LabelMatchScope" - } - }, - "required": [ - "Scope", - "Key" - ], - "type": "object" - }, - "LabelName": { - "description": "Name of the Label.", - "pattern": "^[0-9A-Za-z_:-]{1,1024}$", - "type": "string" - }, - "ManagedRuleGroupConfig": { - "additionalProperties": false, - "description": "ManagedRuleGroupConfig.", - "properties": { - "AWSManagedRulesACFPRuleSet": { - "$ref": "#/definitions/AWSManagedRulesACFPRuleSet" - }, - "AWSManagedRulesATPRuleSet": { - "$ref": "#/definitions/AWSManagedRulesATPRuleSet" - }, - "AWSManagedRulesBotControlRuleSet": { - "$ref": "#/definitions/AWSManagedRulesBotControlRuleSet" - }, - "LoginPath": { - "maxLength": 256, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "PasswordField": { - "$ref": "#/definitions/FieldIdentifier" - }, - "PayloadType": { - "enum": [ - "JSON", - "FORM_ENCODED" - ], - "type": "string" - }, - "UsernameField": { - "$ref": "#/definitions/FieldIdentifier" - } - }, - "type": "object" - }, - "ManagedRuleGroupStatement": { - "additionalProperties": false, - "properties": { - "ExcludedRules": { - "items": { - "$ref": "#/definitions/ExcludedRule" - }, - "type": "array" - }, - "ManagedRuleGroupConfigs": { - "description": "Collection of ManagedRuleGroupConfig.", - "items": { - "$ref": "#/definitions/ManagedRuleGroupConfig" - }, - "type": "array" - }, - "Name": { - "$ref": "#/definitions/EntityName" - }, - "RuleActionOverrides": { - "description": "Action overrides for rules in the rule group.", - "items": { - "$ref": "#/definitions/RuleActionOverride" - }, - "maxItems": 100, - "type": "array" - }, - "ScopeDownStatement": { - "$ref": "#/definitions/Statement" - }, - "VendorName": { - "type": "string" - }, - "Version": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[\\w#:\\.\\-/]+$", - "type": "string" - } - }, - "required": [ - "VendorName", - "Name" - ], - "type": "object" - }, - "MapMatchScope": { - "description": "The parts of the request to match against using the MatchPattern.", - "enum": [ - "ALL", - "KEY", - "VALUE" - ], - "type": "string" - }, - "NotStatement": { - "additionalProperties": false, - "properties": { - "Statement": { - "$ref": "#/definitions/Statement" - } - }, - "required": [ - "Statement" - ], - "type": "object" - }, - "OrStatement": { - "additionalProperties": false, - "properties": { - "Statements": { - "items": { - "$ref": "#/definitions/Statement" - }, - "type": "array" - } - }, - "required": [ - "Statements" - ], - "type": "object" - }, - "OverrideAction": { - "additionalProperties": false, - "description": "Override a RuleGroup or ManagedRuleGroup behavior. This can only be applied to Rule that has RuleGroupReferenceStatement or ManagedRuleGroupReferenceStatement.", - "properties": { - "Count": { - "description": "Count traffic towards application.", - "type": "object" - }, - "None": { - "description": "Keep the RuleGroup or ManagedRuleGroup behavior as is.", - "type": "object" - } - }, - "type": "object" - }, - "OversizeHandling": { - "description": "Handling of requests containing oversize fields", - "enum": [ - "CONTINUE", - "MATCH", - "NO_MATCH" - ], - "type": "string" - }, - "PhoneNumberField": { - "$ref": "#/definitions/FieldIdentifier" - }, - "PositionalConstraint": { - "description": "Position of the evaluation in the FieldToMatch of request.", - "enum": [ - "EXACTLY", - "STARTS_WITH", - "ENDS_WITH", - "CONTAINS", - "CONTAINS_WORD" - ], - "type": "string" - }, - "QueryString": { - "type": "object" - }, - "RateBasedStatement": { - "additionalProperties": false, - "properties": { - "AggregateKeyType": { - "enum": [ - "CONSTANT", - "IP", - "FORWARDED_IP", - "CUSTOM_KEYS" - ], - "type": "string" - }, - "CustomKeys": { - "description": "Specifies the aggregate keys to use in a rate-base rule.", - "items": { - "$ref": "#/definitions/RateBasedStatementCustomKey" - }, - "maxItems": 5, - "type": "array" - }, - "EvaluationWindowSec": { - "$ref": "#/definitions/EvaluationWindowSec" - }, - "ForwardedIPConfig": { - "$ref": "#/definitions/ForwardedIPConfiguration" - }, - "Limit": { - "$ref": "#/definitions/RateLimit" - }, - "ScopeDownStatement": { - "$ref": "#/definitions/Statement" - } - }, - "required": [ - "Limit", - "AggregateKeyType" - ], - "type": "object" - }, - "RateBasedStatementCustomKey": { - "additionalProperties": false, - "description": "Specifies a single custom aggregate key for a rate-base rule.", - "properties": { - "Cookie": { - "$ref": "#/definitions/RateLimitCookie" - }, - "ForwardedIP": { - "$ref": "#/definitions/RateLimitForwardedIP" - }, - "HTTPMethod": { - "$ref": "#/definitions/RateLimitHTTPMethod" - }, - "Header": { - "$ref": "#/definitions/RateLimitHeader" - }, - "IP": { - "$ref": "#/definitions/RateLimitIP" - }, - "LabelNamespace": { - "$ref": "#/definitions/RateLimitLabelNamespace" - }, - "QueryArgument": { - "$ref": "#/definitions/RateLimitQueryArgument" - }, - "QueryString": { - "$ref": "#/definitions/RateLimitQueryString" - }, - "UriPath": { - "$ref": "#/definitions/RateLimitUriPath" - } - }, - "type": "object" - }, - "RateLimit": { - "maximum": 2000000000, - "minimum": 10, - "type": "integer" - }, - "RateLimitCookie": { - "additionalProperties": false, - "description": "Specifies a cookie as an aggregate key for a rate-based rule.", - "properties": { - "Name": { - "description": "The name of the cookie to use.", - "maxLength": 64, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "Name", - "TextTransformations" - ], - "type": "object" - }, - "RateLimitForwardedIP": { - "description": "Specifies the first IP address in an HTTP header as an aggregate key for a rate-based rule.", - "type": "object" - }, - "RateLimitHTTPMethod": { - "description": "Specifies the request's HTTP method as an aggregate key for a rate-based rule.", - "type": "object" - }, - "RateLimitHeader": { - "additionalProperties": false, - "description": "Specifies a header as an aggregate key for a rate-based rule.", - "properties": { - "Name": { - "description": "The name of the header to use.", - "maxLength": 64, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "Name", - "TextTransformations" - ], - "type": "object" - }, - "RateLimitIP": { - "description": "Specifies the IP address in the web request as an aggregate key for a rate-based rule.", - "type": "object" - }, - "RateLimitLabelNamespace": { - "additionalProperties": false, - "description": "Specifies a label namespace to use as an aggregate key for a rate-based rule.", - "properties": { - "Namespace": { - "description": "The namespace to use for aggregation.", - "pattern": "^[0-9A-Za-z_:-]{1,1024}$", - "type": "string" - } - }, - "required": [ - "Namespace" - ], - "type": "object" - }, - "RateLimitQueryArgument": { - "additionalProperties": false, - "description": "Specifies a query argument in the request as an aggregate key for a rate-based rule.", - "properties": { - "Name": { - "description": "The name of the query argument to use.", - "maxLength": 64, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "Name", - "TextTransformations" - ], - "type": "object" - }, - "RateLimitQueryString": { - "additionalProperties": false, - "description": "Specifies the request's query string as an aggregate key for a rate-based rule.", - "properties": { - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "TextTransformations" - ], - "type": "object" - }, - "RateLimitUriPath": { - "additionalProperties": false, - "description": "Specifies the request's URI Path as an aggregate key for a rate-based rule.", - "properties": { - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "TextTransformations" - ], - "type": "object" - }, - "RegexMatchStatement": { - "additionalProperties": false, - "properties": { - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "RegexString": { - "maxLength": 512, - "minLength": 1, - "type": "string" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "RegexString", - "FieldToMatch", - "TextTransformations" - ], - "type": "object" - }, - "RegexPatternSetReferenceStatement": { - "additionalProperties": false, - "properties": { - "Arn": { - "$ref": "#/definitions/ResourceArn" - }, - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "Arn", - "FieldToMatch", - "TextTransformations" - ], - "type": "object" - }, - "RequestBody": { - "additionalProperties": false, - "description": "Map of AssociatedResourceType and RequestBodyAssociatedResourceTypeConfig", - "patternProperties": { - "^(CLOUDFRONT|API_GATEWAY|COGNITO_USER_POOL|APP_RUNNER_SERVICE|VERIFIED_ACCESS_INSTANCE)$": { - "$ref": "#/definitions/RequestBodyAssociatedResourceTypeConfig" - } - }, - "type": "object" - }, - "RequestBodyAssociatedResourceTypeConfig": { - "additionalProperties": false, - "description": "Configures the inspection size in the request body.", - "properties": { - "DefaultSizeInspectionLimit": { - "$ref": "#/definitions/SizeInspectionLimit" - } - }, - "required": [ - "DefaultSizeInspectionLimit" - ], - "type": "object" - }, - "RequestInspection": { - "additionalProperties": false, - "description": "Configures the inspection of login requests", - "properties": { - "PasswordField": { - "$ref": "#/definitions/FieldIdentifier" - }, - "PayloadType": { - "enum": [ - "JSON", - "FORM_ENCODED" - ], - "type": "string" - }, - "UsernameField": { - "$ref": "#/definitions/FieldIdentifier" - } - }, - "required": [ - "PayloadType", - "UsernameField", - "PasswordField" - ], - "type": "object" - }, - "RequestInspectionACFP": { - "additionalProperties": false, - "description": "Configures the inspection of sign-up requests", - "properties": { - "AddressFields": { - "items": { - "$ref": "#/definitions/AddressField" - }, - "type": "array" - }, - "EmailField": { - "$ref": "#/definitions/FieldIdentifier" - }, - "PasswordField": { - "$ref": "#/definitions/FieldIdentifier" - }, - "PayloadType": { - "enum": [ - "JSON", - "FORM_ENCODED" - ], - "type": "string" - }, - "PhoneNumberFields": { - "items": { - "$ref": "#/definitions/PhoneNumberField" - }, - "type": "array" - }, - "UsernameField": { - "$ref": "#/definitions/FieldIdentifier" - } - }, - "required": [ - "PayloadType" - ], - "type": "object" - }, - "ResourceArn": { - "description": "ARN of the WAF entity.", - "maxLength": 2048, - "minLength": 20, - "type": "string" - }, - "ResponseContent": { - "description": "Response content.", - "maxLength": 10240, - "minLength": 1, - "type": "string" - }, - "ResponseContentType": { - "description": "Valid values are TEXT_PLAIN, TEXT_HTML, and APPLICATION_JSON.", - "enum": [ - "TEXT_PLAIN", - "TEXT_HTML", - "APPLICATION_JSON" - ], - "type": "string" - }, - "ResponseInspection": { - "additionalProperties": false, - "description": "Configures the inspection of login responses", - "properties": { - "BodyContains": { - "$ref": "#/definitions/ResponseInspectionBodyContains" - }, - "Header": { - "$ref": "#/definitions/ResponseInspectionHeader" - }, - "Json": { - "$ref": "#/definitions/ResponseInspectionJson" - }, - "StatusCode": { - "$ref": "#/definitions/ResponseInspectionStatusCode" - } - }, - "type": "object" - }, - "ResponseInspectionBodyContains": { - "additionalProperties": false, - "description": "Response body contents that indicate success or failure of a login request", - "properties": { - "FailureStrings": { - "items": { - "maxLength": 100, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "SuccessStrings": { - "items": { - "maxLength": 100, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "SuccessStrings", - "FailureStrings" - ], - "type": "object" - }, - "ResponseInspectionHeader": { - "additionalProperties": false, - "description": "Response headers that indicate success or failure of a login request", - "properties": { - "FailureValues": { - "items": { - "maxLength": 100, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "maxItems": 3, - "minItems": 1, - "type": "array" - }, - "Name": { - "maxLength": 200, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "SuccessValues": { - "items": { - "maxLength": 100, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "maxItems": 3, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Name", - "SuccessValues", - "FailureValues" - ], - "type": "object" - }, - "ResponseInspectionJson": { - "additionalProperties": false, - "description": "Response JSON that indicate success or failure of a login request", - "properties": { - "FailureValues": { - "items": { - "maxLength": 100, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "Identifier": { - "maxLength": 512, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "SuccessValues": { - "items": { - "maxLength": 100, - "minLength": 1, - "pattern": ".*\\S.*", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Identifier", - "SuccessValues", - "FailureValues" - ], - "type": "object" - }, - "ResponseInspectionStatusCode": { - "additionalProperties": false, - "description": "Response status codes that indicate success or failure of a login request", - "properties": { - "FailureCodes": { - "items": { - "maxLength": 999, - "minLength": 0, - "type": "integer" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - }, - "SuccessCodes": { - "items": { - "maxLength": 999, - "minLength": 0, - "type": "integer" - }, - "maxItems": 10, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "SuccessCodes", - "FailureCodes" - ], - "type": "object" - }, - "ResponseStatusCode": { - "description": "Custom response code.", - "maximum": 599, - "minimum": 200, - "type": "integer" - }, - "Rule": { - "additionalProperties": false, - "description": "Rule of WebACL that contains condition and action.", - "properties": { - "Action": { - "$ref": "#/definitions/RuleAction" - }, - "CaptchaConfig": { - "$ref": "#/definitions/CaptchaConfig" - }, - "ChallengeConfig": { - "$ref": "#/definitions/ChallengeConfig" - }, - "Name": { - "$ref": "#/definitions/EntityName" - }, - "OverrideAction": { - "$ref": "#/definitions/OverrideAction" - }, - "Priority": { - "$ref": "#/definitions/RulePriority" - }, - "RuleLabels": { - "description": "Collection of Rule Labels.", - "items": { - "$ref": "#/definitions/Label" - }, - "type": "array" - }, - "Statement": { - "$ref": "#/definitions/Statement" - }, - "VisibilityConfig": { - "$ref": "#/definitions/VisibilityConfig" - } - }, - "required": [ - "Name", - "Priority", - "Statement", - "VisibilityConfig" - ], - "type": "object" - }, - "RuleAction": { - "additionalProperties": false, - "description": "Action taken when Rule matches its condition.", - "properties": { - "Allow": { - "$ref": "#/definitions/AllowAction" - }, - "Block": { - "$ref": "#/definitions/BlockAction" - }, - "Captcha": { - "$ref": "#/definitions/CaptchaAction" - }, - "Challenge": { - "$ref": "#/definitions/ChallengeAction" - }, - "Count": { - "$ref": "#/definitions/CountAction" - } - }, - "type": "object" - }, - "RuleActionOverride": { - "additionalProperties": false, - "description": "Action override for rules in the rule group.", - "properties": { - "ActionToUse": { - "$ref": "#/definitions/RuleAction" - }, - "Name": { - "$ref": "#/definitions/EntityName" - } - }, - "required": [ - "Name", - "ActionToUse" - ], - "type": "object" - }, - "RuleGroupReferenceStatement": { - "additionalProperties": false, - "properties": { - "Arn": { - "$ref": "#/definitions/ResourceArn" - }, - "ExcludedRules": { - "items": { - "$ref": "#/definitions/ExcludedRule" - }, - "type": "array" - }, - "RuleActionOverrides": { - "description": "Action overrides for rules in the rule group.", - "items": { - "$ref": "#/definitions/RuleActionOverride" - }, - "maxItems": 100, - "type": "array" - } - }, - "required": [ - "Arn" - ], - "type": "object" - }, - "RulePriority": { - "description": "Priority of the Rule, Rules get evaluated from lower to higher priority.", - "minimum": 0, - "type": "integer" - }, - "Rules": { - "description": "Collection of Rules.", - "items": { - "$ref": "#/definitions/Rule" - }, - "type": "array" - }, - "Scope": { - "description": "Use CLOUDFRONT for CloudFront WebACL, use REGIONAL for Application Load Balancer and API Gateway.", - "enum": [ - "CLOUDFRONT", - "REGIONAL" - ], - "type": "string" - }, - "SearchString": { - "description": "String that is searched to find a match.", - "type": "string" - }, - "SearchStringBase64": { - "description": "Base64 encoded string that is searched to find a match.", - "type": "string" - }, - "SensitivityLevel": { - "description": "Sensitivity Level current only used for sqli match statements.", - "enum": [ - "LOW", - "HIGH" - ], - "type": "string" - }, - "SingleHeader": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - } - }, - "type": "object" - }, - "SingleQueryArgument": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - } - }, - "type": "object" - }, - "SizeConstraintStatement": { - "additionalProperties": false, - "description": "Size Constraint statement.", - "properties": { - "ComparisonOperator": { - "enum": [ - "EQ", - "NE", - "LE", - "LT", - "GE", - "GT" - ], - "type": "string" - }, - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "Size": { - "maximum": 21474836480, - "minimum": 0, - "type": "number" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "FieldToMatch", - "ComparisonOperator", - "Size", - "TextTransformations" - ], - "type": "object" - }, - "SizeInspectionLimit": { - "enum": [ - "KB_16", - "KB_32", - "KB_48", - "KB_64" - ], - "type": "string" - }, - "SqliMatchStatement": { - "additionalProperties": false, - "description": "Sqli Match Statement.", - "properties": { - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "SensitivityLevel": { - "$ref": "#/definitions/SensitivityLevel" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "FieldToMatch", - "TextTransformations" - ], - "type": "object" - }, - "Statement": { - "additionalProperties": false, - "description": "First level statement that contains conditions, such as ByteMatch, SizeConstraint, etc", - "properties": { - "AndStatement": { - "$ref": "#/definitions/AndStatement" - }, - "ByteMatchStatement": { - "$ref": "#/definitions/ByteMatchStatement" - }, - "GeoMatchStatement": { - "$ref": "#/definitions/GeoMatchStatement" - }, - "IPSetReferenceStatement": { - "$ref": "#/definitions/IPSetReferenceStatement" - }, - "LabelMatchStatement": { - "$ref": "#/definitions/LabelMatchStatement" - }, - "ManagedRuleGroupStatement": { - "$ref": "#/definitions/ManagedRuleGroupStatement" - }, - "NotStatement": { - "$ref": "#/definitions/NotStatement" - }, - "OrStatement": { - "$ref": "#/definitions/OrStatement" - }, - "RateBasedStatement": { - "$ref": "#/definitions/RateBasedStatement" - }, - "RegexMatchStatement": { - "$ref": "#/definitions/RegexMatchStatement" - }, - "RegexPatternSetReferenceStatement": { - "$ref": "#/definitions/RegexPatternSetReferenceStatement" - }, - "RuleGroupReferenceStatement": { - "$ref": "#/definitions/RuleGroupReferenceStatement" - }, - "SizeConstraintStatement": { - "$ref": "#/definitions/SizeConstraintStatement" - }, - "SqliMatchStatement": { - "$ref": "#/definitions/SqliMatchStatement" - }, - "XssMatchStatement": { - "$ref": "#/definitions/XssMatchStatement" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "type": "object" - }, - "TextTransformation": { - "additionalProperties": false, - "description": "Text Transformation on the Search String before match.", - "properties": { - "Priority": { - "$ref": "#/definitions/TextTransformationPriority" - }, - "Type": { - "$ref": "#/definitions/TextTransformationType" - } - }, - "required": [ - "Priority", - "Type" - ], - "type": "object" - }, - "TextTransformationPriority": { - "description": "Priority of Rule being evaluated.", - "minimum": 0, - "type": "integer" - }, - "TextTransformationType": { - "description": "Type of text transformation.", - "enum": [ - "NONE", - "COMPRESS_WHITE_SPACE", - "HTML_ENTITY_DECODE", - "LOWERCASE", - "CMD_LINE", - "URL_DECODE", - "BASE64_DECODE", - "HEX_DECODE", - "MD5", - "REPLACE_COMMENTS", - "ESCAPE_SEQ_DECODE", - "SQL_HEX_DECODE", - "CSS_DECODE", - "JS_DECODE", - "NORMALIZE_PATH", - "NORMALIZE_PATH_WIN", - "REMOVE_NULLS", - "REPLACE_NULLS", - "BASE64_DECODE_EXT", - "URL_DECODE_UNI", - "UTF8_TO_UNICODE" - ], - "type": "string" - }, - "TokenDomains": { - "description": "List of domains to accept in web request tokens, in addition to the domain of the protected resource.", - "items": { - "maxLength": 253, - "minLength": 1, - "pattern": "^[\\w\\.\\-/]+$", - "type": "string" - }, - "type": "array" - }, - "UriPath": { - "type": "object" - }, - "VisibilityConfig": { - "additionalProperties": false, - "description": "Visibility Metric of the WebACL.", - "properties": { - "CloudWatchMetricsEnabled": { - "type": "boolean" - }, - "MetricName": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "SampledRequestsEnabled": { - "type": "boolean" - } - }, - "required": [ - "SampledRequestsEnabled", - "CloudWatchMetricsEnabled", - "MetricName" - ], - "type": "object" - }, - "XssMatchStatement": { - "additionalProperties": false, - "description": "Xss Match Statement.", - "properties": { - "FieldToMatch": { - "$ref": "#/definitions/FieldToMatch" - }, - "TextTransformations": { - "items": { - "$ref": "#/definitions/TextTransformation" - }, - "type": "array" - } - }, - "required": [ - "FieldToMatch", - "TextTransformations" - ], - "type": "object" - } - }, - "description": "Contains the Rules that identify the requests that you want to allow, block, or count. In a WebACL, you also specify a default action (ALLOW or BLOCK), and the action for each Rule that you add to a WebACL, for example, block requests from specified IP addresses or block requests from specified referrers. You also associate the WebACL with a CloudFront distribution to identify the requests that you want AWS WAF to filter. If you add more than one Rule to a WebACL, a request needs to match only one of the specifications to be allowed, blocked, or counted.", - "handlers": { - "create": { - "permissions": [ - "wafv2:CreateWebACL", - "wafv2:GetWebACL", - "wafv2:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "wafv2:DeleteWebACL", - "wafv2:GetWebACL" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "Scope": { - "$ref": "resource-schema.json#/properties/Scope" - } - }, - "required": [ - "Scope" - ] - }, - "permissions": [ - "wafv2:listWebACLs" - ] - }, - "read": { - "permissions": [ - "wafv2:GetWebACL", - "wafv2:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "wafv2:UpdateWebACL", - "wafv2:GetWebACL", - "wafv2:ListTagsForResource", - "wafv2:TagResource", - "wafv2:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name", - "/properties/Id", - "/properties/Scope" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/ResourceArn" - }, - "AssociationConfig": { - "$ref": "#/definitions/AssociationConfig" - }, - "Capacity": { - "minimum": 0, - "type": "integer" - }, - "CaptchaConfig": { - "$ref": "#/definitions/CaptchaConfig" - }, - "ChallengeConfig": { - "$ref": "#/definitions/ChallengeConfig" - }, - "CustomResponseBodies": { - "$ref": "#/definitions/CustomResponseBodies" - }, - "DefaultAction": { - "$ref": "#/definitions/DefaultAction" - }, - "Description": { - "$ref": "#/definitions/EntityDescription" - }, - "Id": { - "$ref": "#/definitions/EntityId" - }, - "LabelNamespace": { - "$ref": "#/definitions/LabelName" - }, - "Name": { - "$ref": "#/definitions/EntityName" - }, - "Rules": { - "description": "Collection of Rules.", - "items": { - "$ref": "#/definitions/Rule" - }, - "type": "array" - }, - "Scope": { - "$ref": "#/definitions/Scope" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "minItems": 1, - "type": "array" - }, - "TokenDomains": { - "$ref": "#/definitions/TokenDomains" - }, - "VisibilityConfig": { - "$ref": "#/definitions/VisibilityConfig" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Capacity", - "/properties/Id", - "/properties/LabelNamespace" - ], - "required": [ - "DefaultAction", - "Scope", - "VisibilityConfig" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-wafv2.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::WAFv2::WebACL" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Scope" + ], + "definitions": { + "AWSManagedRulesACFPRuleSet": { + "additionalProperties": false, + "description": "Configures how to use the Account creation fraud prevention managed rule group in the web ACL", + "properties": { + "CreationPath": { + "type": "string" + }, + "EnableRegexInPath": { + "type": "boolean" + }, + "RegistrationPagePath": { + "type": "string" + }, + "RequestInspection": { + "$ref": "#/definitions/RequestInspectionACFP" + }, + "ResponseInspection": { + "$ref": "#/definitions/ResponseInspection" + } + }, + "required": [ + "CreationPath", + "RegistrationPagePath", + "RequestInspection" + ], + "type": "object" + }, + "AWSManagedRulesATPRuleSet": { + "additionalProperties": false, + "description": "Configures how to use the Account Takeover Prevention managed rule group in the web ACL", + "properties": { + "EnableRegexInPath": { + "type": "boolean" + }, + "LoginPath": { + "type": "string" + }, + "RequestInspection": { + "$ref": "#/definitions/RequestInspection" + }, + "ResponseInspection": { + "$ref": "#/definitions/ResponseInspection" + } + }, + "required": [ + "LoginPath" + ], + "type": "object" + }, + "AWSManagedRulesBotControlRuleSet": { + "additionalProperties": false, + "description": "Configures how to use the Bot Control managed rule group in the web ACL", + "properties": { + "EnableMachineLearning": { + "type": "boolean" + }, + "InspectionLevel": { + "enum": [ + "COMMON", + "TARGETED" + ], + "type": "string" + } + }, + "required": [ + "InspectionLevel" + ], + "type": "object" + }, + "AddressField": { + "$ref": "#/definitions/FieldIdentifier" + }, + "AllowAction": { + "additionalProperties": false, + "description": "Allow traffic towards application.", + "properties": { + "CustomRequestHandling": { + "$ref": "#/definitions/CustomRequestHandling" + } + }, + "type": "object" + }, + "AndStatement": { + "additionalProperties": false, + "properties": { + "Statements": { + "items": { + "$ref": "#/definitions/Statement" + }, + "type": "array" + } + }, + "required": [ + "Statements" + ], + "type": "object" + }, + "AssociationConfig": { + "additionalProperties": false, + "description": "AssociationConfig for body inspection", + "properties": { + "RequestBody": { + "$ref": "#/definitions/RequestBody" + } + }, + "type": "object" + }, + "BlockAction": { + "additionalProperties": false, + "description": "Block traffic towards application.", + "properties": { + "CustomResponse": { + "$ref": "#/definitions/CustomResponse" + } + }, + "type": "object" + }, + "Body": { + "additionalProperties": false, + "description": "The body of a web request. This immediately follows the request headers.", + "properties": { + "OversizeHandling": { + "$ref": "#/definitions/OversizeHandling" + } + }, + "type": "object" + }, + "BodyParsingFallbackBehavior": { + "description": "The inspection behavior to fall back to if the JSON in the request body is invalid.", + "enum": [ + "MATCH", + "NO_MATCH", + "EVALUATE_AS_STRING" + ], + "type": "string" + }, + "ByteMatchStatement": { + "additionalProperties": false, + "description": "Byte Match statement.", + "properties": { + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "PositionalConstraint": { + "$ref": "#/definitions/PositionalConstraint" + }, + "SearchString": { + "$ref": "#/definitions/SearchString" + }, + "SearchStringBase64": { + "$ref": "#/definitions/SearchStringBase64" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "FieldToMatch", + "PositionalConstraint", + "TextTransformations" + ], + "type": "object" + }, + "CaptchaAction": { + "additionalProperties": false, + "description": "Checks valid token exists with request.", + "properties": { + "CustomRequestHandling": { + "$ref": "#/definitions/CustomRequestHandling" + } + }, + "type": "object" + }, + "CaptchaConfig": { + "additionalProperties": false, + "properties": { + "ImmunityTimeProperty": { + "$ref": "#/definitions/ImmunityTimeProperty" + } + }, + "type": "object" + }, + "ChallengeAction": { + "additionalProperties": false, + "description": "Checks that the request has a valid token with an unexpired challenge timestamp and, if not, returns a browser challenge to the client.", + "properties": { + "CustomRequestHandling": { + "$ref": "#/definitions/CustomRequestHandling" + } + }, + "type": "object" + }, + "ChallengeConfig": { + "additionalProperties": false, + "properties": { + "ImmunityTimeProperty": { + "$ref": "#/definitions/ImmunityTimeProperty" + } + }, + "type": "object" + }, + "CookieMatchPattern": { + "additionalProperties": false, + "description": "The pattern to look for in the request cookies.", + "properties": { + "All": { + "description": "Inspect all parts of the web request cookies.", + "type": "object" + }, + "ExcludedCookies": { + "items": { + "maxLength": 60, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "maxItems": 199, + "minItems": 1, + "type": "array" + }, + "IncludedCookies": { + "items": { + "maxLength": 60, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "maxItems": 199, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "Cookies": { + "additionalProperties": false, + "description": "Includes cookies of a web request.", + "properties": { + "MatchPattern": { + "$ref": "#/definitions/CookieMatchPattern" + }, + "MatchScope": { + "$ref": "#/definitions/MapMatchScope" + }, + "OversizeHandling": { + "$ref": "#/definitions/OversizeHandling" + } + }, + "required": [ + "MatchPattern", + "MatchScope", + "OversizeHandling" + ], + "type": "object" + }, + "CountAction": { + "additionalProperties": false, + "description": "Allow traffic towards application.", + "properties": { + "CustomRequestHandling": { + "$ref": "#/definitions/CustomRequestHandling" + } + }, + "type": "object" + }, + "CustomHTTPHeader": { + "additionalProperties": false, + "description": "HTTP header.", + "properties": { + "Name": { + "$ref": "#/definitions/CustomHTTPHeaderName" + }, + "Value": { + "$ref": "#/definitions/CustomHTTPHeaderValue" + } + }, + "required": [ + "Name", + "Value" + ], + "type": "object" + }, + "CustomHTTPHeaderName": { + "description": "HTTP header name.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "CustomHTTPHeaderValue": { + "description": "HTTP header value.", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "CustomRequestHandling": { + "additionalProperties": false, + "description": "Custom request handling.", + "properties": { + "InsertHeaders": { + "description": "Collection of HTTP headers.", + "items": { + "$ref": "#/definitions/CustomHTTPHeader" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "InsertHeaders" + ], + "type": "object" + }, + "CustomResponse": { + "additionalProperties": false, + "description": "Custom response.", + "properties": { + "CustomResponseBodyKey": { + "description": "Custom response body key.", + "pattern": "^[\\w\\-]+$", + "type": "string" + }, + "ResponseCode": { + "$ref": "#/definitions/ResponseStatusCode" + }, + "ResponseHeaders": { + "description": "Collection of HTTP headers.", + "items": { + "$ref": "#/definitions/CustomHTTPHeader" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "ResponseCode" + ], + "type": "object" + }, + "CustomResponseBodies": { + "additionalProperties": false, + "description": "Custom response key and body map.", + "minProperties": 1, + "patternProperties": { + "^[\\w\\-]+$": { + "$ref": "#/definitions/CustomResponseBody" + } + }, + "type": "object" + }, + "CustomResponseBody": { + "additionalProperties": false, + "description": "Custom response body.", + "properties": { + "Content": { + "$ref": "#/definitions/ResponseContent" + }, + "ContentType": { + "$ref": "#/definitions/ResponseContentType" + } + }, + "required": [ + "ContentType", + "Content" + ], + "type": "object" + }, + "DataProtect": { + "additionalProperties": false, + "properties": { + "Action": { + "$ref": "#/definitions/DataProtectionAction" + }, + "ExcludeRateBasedDetails": { + "type": "boolean" + }, + "ExcludeRuleMatchDetails": { + "type": "boolean" + }, + "Field": { + "$ref": "#/definitions/FieldToProtect" + } + }, + "required": [ + "Field", + "Action" + ], + "type": "object" + }, + "DataProtectionAction": { + "enum": [ + "SUBSTITUTION", + "HASH" + ], + "type": "string" + }, + "DataProtectionConfig": { + "additionalProperties": false, + "properties": { + "DataProtections": { + "$ref": "#/definitions/DataProtections" + } + }, + "required": [ + "DataProtections" + ], + "type": "object" + }, + "DataProtections": { + "items": { + "$ref": "#/definitions/DataProtect" + }, + "minItems": 1, + "type": "array" + }, + "DefaultAction": { + "additionalProperties": false, + "description": "Default Action WebACL will take against ingress traffic when there is no matching Rule.", + "properties": { + "Allow": { + "$ref": "#/definitions/AllowAction" + }, + "Block": { + "$ref": "#/definitions/BlockAction" + } + }, + "type": "object" + }, + "EntityDescription": { + "description": "Description of the entity.", + "pattern": "^[a-zA-Z0-9=:#@/\\-,.][a-zA-Z0-9+=:#@/\\-,.\\s]+[a-zA-Z0-9+=:#@/\\-,.]{1,256}$", + "type": "string" + }, + "EntityId": { + "description": "Id of the WebACL", + "pattern": "^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$", + "type": "string" + }, + "EntityName": { + "description": "Name of the WebACL.", + "pattern": "^[0-9A-Za-z_-]{1,128}$", + "type": "string" + }, + "EvaluationWindowSec": { + "enum": [ + 60, + 120, + 300, + 600 + ], + "type": "integer" + }, + "ExcludedRule": { + "additionalProperties": false, + "description": "Excluded Rule in the RuleGroup or ManagedRuleGroup will not be evaluated.", + "properties": { + "Name": { + "$ref": "#/definitions/EntityName" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "ExcludedRules": { + "items": { + "$ref": "#/definitions/ExcludedRule" + }, + "type": "array" + }, + "FieldIdentifier": { + "additionalProperties": false, + "properties": { + "Identifier": { + "maxLength": 512, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + } + }, + "required": [ + "Identifier" + ], + "type": "object" + }, + "FieldToMatch": { + "additionalProperties": false, + "description": "Field of the request to match.", + "properties": { + "AllQueryArguments": { + "description": "All query arguments of a web request.", + "type": "object" + }, + "Body": { + "$ref": "#/definitions/Body" + }, + "Cookies": { + "$ref": "#/definitions/Cookies" + }, + "Headers": { + "$ref": "#/definitions/Headers" + }, + "JA3Fingerprint": { + "$ref": "#/definitions/JA3Fingerprint" + }, + "JA4Fingerprint": { + "$ref": "#/definitions/JA4Fingerprint" + }, + "JsonBody": { + "$ref": "#/definitions/JsonBody" + }, + "Method": { + "description": "The HTTP method of a web request. The method indicates the type of operation that the request is asking the origin to perform.", + "type": "object" + }, + "QueryString": { + "description": "The query string of a web request. This is the part of a URL that appears after a ? character, if any.", + "type": "object" + }, + "SingleHeader": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "SingleQueryArgument": { + "additionalProperties": false, + "description": "One query argument in a web request, identified by name, for example UserName or SalesRegion. The name can be up to 30 characters long and isn't case sensitive.", + "properties": { + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "UriFragment": { + "$ref": "#/definitions/UriFragment" + }, + "UriPath": { + "description": "The path component of the URI of a web request. This is the part of a web request that identifies a resource, for example, /images/daily-ad.jpg.", + "type": "object" + } + }, + "type": "object" + }, + "FieldToProtect": { + "additionalProperties": false, + "description": "Field in log to protect.", + "properties": { + "FieldKeys": { + "description": "List of field keys to protect", + "items": { + "$ref": "#/definitions/FieldToProtectKeyName" + }, + "type": "array" + }, + "FieldType": { + "description": "Field type to protect", + "enum": [ + "SINGLE_HEADER", + "SINGLE_COOKIE", + "SINGLE_QUERY_ARGUMENT", + "QUERY_STRING", + "BODY" + ], + "type": "string" + } + }, + "required": [ + "FieldType" + ], + "type": "object" + }, + "FieldToProtectKeyName": { + "description": "Key of the field to protect.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "ForwardedIPConfiguration": { + "additionalProperties": false, + "properties": { + "FallbackBehavior": { + "enum": [ + "MATCH", + "NO_MATCH" + ], + "type": "string" + }, + "HeaderName": { + "pattern": "^[a-zA-Z0-9-]+{1,255}$", + "type": "string" + } + }, + "required": [ + "HeaderName", + "FallbackBehavior" + ], + "type": "object" + }, + "GeoMatchStatement": { + "additionalProperties": false, + "properties": { + "CountryCodes": { + "items": { + "maxLength": 2, + "minLength": 1, + "type": "string" + }, + "type": "array" + }, + "ForwardedIPConfig": { + "$ref": "#/definitions/ForwardedIPConfiguration" + } + }, + "type": "object" + }, + "HeaderMatchPattern": { + "additionalProperties": false, + "description": "The pattern to look for in the request headers.", + "properties": { + "All": { + "description": "Inspect all parts of the web request headers.", + "type": "object" + }, + "ExcludedHeaders": { + "items": { + "maxLength": 64, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "maxItems": 199, + "minItems": 1, + "type": "array" + }, + "IncludedHeaders": { + "items": { + "maxLength": 64, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "maxItems": 199, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "Headers": { + "additionalProperties": false, + "description": "Includes headers of a web request.", + "properties": { + "MatchPattern": { + "$ref": "#/definitions/HeaderMatchPattern" + }, + "MatchScope": { + "$ref": "#/definitions/MapMatchScope" + }, + "OversizeHandling": { + "$ref": "#/definitions/OversizeHandling" + } + }, + "required": [ + "MatchPattern", + "MatchScope", + "OversizeHandling" + ], + "type": "object" + }, + "IPSetForwardedIPConfiguration": { + "additionalProperties": false, + "properties": { + "FallbackBehavior": { + "enum": [ + "MATCH", + "NO_MATCH" + ], + "type": "string" + }, + "HeaderName": { + "pattern": "^[a-zA-Z0-9-]+{1,255}$", + "type": "string" + }, + "Position": { + "enum": [ + "FIRST", + "LAST", + "ANY" + ], + "type": "string" + } + }, + "required": [ + "HeaderName", + "FallbackBehavior", + "Position" + ], + "type": "object" + }, + "IPSetReferenceStatement": { + "additionalProperties": false, + "properties": { + "Arn": { + "$ref": "#/definitions/ResourceArn" + }, + "IPSetForwardedIPConfig": { + "$ref": "#/definitions/IPSetForwardedIPConfiguration" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "ImmunityTimeProperty": { + "additionalProperties": false, + "properties": { + "ImmunityTime": { + "maximum": 259200, + "minimum": 60, + "type": "integer" + } + }, + "required": [ + "ImmunityTime" + ], + "type": "object" + }, + "JA3Fingerprint": { + "additionalProperties": false, + "description": "Includes the JA3 fingerprint of a web request.", + "properties": { + "FallbackBehavior": { + "enum": [ + "MATCH", + "NO_MATCH" + ], + "type": "string" + } + }, + "required": [ + "FallbackBehavior" + ], + "type": "object" + }, + "JA4Fingerprint": { + "additionalProperties": false, + "description": "Includes the JA4 fingerprint of a web request.", + "properties": { + "FallbackBehavior": { + "enum": [ + "MATCH", + "NO_MATCH" + ], + "type": "string" + } + }, + "required": [ + "FallbackBehavior" + ], + "type": "object" + }, + "JsonBody": { + "additionalProperties": false, + "description": "Inspect the request body as JSON. The request body immediately follows the request headers.", + "properties": { + "InvalidFallbackBehavior": { + "$ref": "#/definitions/BodyParsingFallbackBehavior" + }, + "MatchPattern": { + "$ref": "#/definitions/JsonMatchPattern" + }, + "MatchScope": { + "$ref": "#/definitions/JsonMatchScope" + }, + "OversizeHandling": { + "$ref": "#/definitions/OversizeHandling" + } + }, + "required": [ + "MatchPattern", + "MatchScope" + ], + "type": "object" + }, + "JsonMatchPattern": { + "additionalProperties": false, + "description": "The pattern to look for in the JSON body.", + "properties": { + "All": { + "description": "Inspect all parts of the web request's JSON body.", + "type": "object" + }, + "IncludedPaths": { + "items": { + "$ref": "#/definitions/JsonPointerPath" + }, + "type": "array" + } + }, + "type": "object" + }, + "JsonMatchScope": { + "description": "The parts of the JSON to match against using the MatchPattern.", + "enum": [ + "ALL", + "KEY", + "VALUE" + ], + "type": "string" + }, + "JsonPointerPath": { + "description": "JSON pointer path in the web request's JSON body", + "pattern": "^[\\/]+([^~]*(~[01])*)*{1,512}$", + "type": "string" + }, + "Label": { + "additionalProperties": false, + "properties": { + "Name": { + "$ref": "#/definitions/LabelName" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "LabelMatchKey": { + "pattern": "^[0-9A-Za-z_:-]{1,1024}$", + "type": "string" + }, + "LabelMatchScope": { + "enum": [ + "LABEL", + "NAMESPACE" + ], + "type": "string" + }, + "LabelMatchStatement": { + "additionalProperties": false, + "properties": { + "Key": { + "$ref": "#/definitions/LabelMatchKey" + }, + "Scope": { + "$ref": "#/definitions/LabelMatchScope" + } + }, + "required": [ + "Scope", + "Key" + ], + "type": "object" + }, + "LabelName": { + "description": "Name of the Label.", + "pattern": "^[0-9A-Za-z_:-]{1,1024}$", + "type": "string" + }, + "ManagedRuleGroupConfig": { + "additionalProperties": false, + "description": "ManagedRuleGroupConfig.", + "properties": { + "AWSManagedRulesACFPRuleSet": { + "$ref": "#/definitions/AWSManagedRulesACFPRuleSet" + }, + "AWSManagedRulesATPRuleSet": { + "$ref": "#/definitions/AWSManagedRulesATPRuleSet" + }, + "AWSManagedRulesBotControlRuleSet": { + "$ref": "#/definitions/AWSManagedRulesBotControlRuleSet" + }, + "LoginPath": { + "maxLength": 256, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "PasswordField": { + "$ref": "#/definitions/FieldIdentifier" + }, + "PayloadType": { + "enum": [ + "JSON", + "FORM_ENCODED" + ], + "type": "string" + }, + "UsernameField": { + "$ref": "#/definitions/FieldIdentifier" + } + }, + "type": "object" + }, + "ManagedRuleGroupStatement": { + "additionalProperties": false, + "properties": { + "ExcludedRules": { + "items": { + "$ref": "#/definitions/ExcludedRule" + }, + "type": "array" + }, + "ManagedRuleGroupConfigs": { + "description": "Collection of ManagedRuleGroupConfig.", + "items": { + "$ref": "#/definitions/ManagedRuleGroupConfig" + }, + "type": "array" + }, + "Name": { + "$ref": "#/definitions/EntityName" + }, + "RuleActionOverrides": { + "description": "Action overrides for rules in the rule group.", + "items": { + "$ref": "#/definitions/RuleActionOverride" + }, + "maxItems": 100, + "type": "array" + }, + "ScopeDownStatement": { + "$ref": "#/definitions/Statement" + }, + "VendorName": { + "type": "string" + }, + "Version": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[\\w#:\\.\\-/]+$", + "type": "string" + } + }, + "required": [ + "VendorName", + "Name" + ], + "type": "object" + }, + "MapMatchScope": { + "description": "The parts of the request to match against using the MatchPattern.", + "enum": [ + "ALL", + "KEY", + "VALUE" + ], + "type": "string" + }, + "NotStatement": { + "additionalProperties": false, + "properties": { + "Statement": { + "$ref": "#/definitions/Statement" + } + }, + "required": [ + "Statement" + ], + "type": "object" + }, + "OrStatement": { + "additionalProperties": false, + "properties": { + "Statements": { + "items": { + "$ref": "#/definitions/Statement" + }, + "type": "array" + } + }, + "required": [ + "Statements" + ], + "type": "object" + }, + "OverrideAction": { + "additionalProperties": false, + "description": "Override a RuleGroup or ManagedRuleGroup behavior. This can only be applied to Rule that has RuleGroupReferenceStatement or ManagedRuleGroupReferenceStatement.", + "properties": { + "Count": { + "description": "Count traffic towards application.", + "type": "object" + }, + "None": { + "description": "Keep the RuleGroup or ManagedRuleGroup behavior as is.", + "type": "object" + } + }, + "type": "object" + }, + "OversizeHandling": { + "description": "Handling of requests containing oversize fields", + "enum": [ + "CONTINUE", + "MATCH", + "NO_MATCH" + ], + "type": "string" + }, + "PhoneNumberField": { + "$ref": "#/definitions/FieldIdentifier" + }, + "PositionalConstraint": { + "description": "Position of the evaluation in the FieldToMatch of request.", + "enum": [ + "EXACTLY", + "STARTS_WITH", + "ENDS_WITH", + "CONTAINS", + "CONTAINS_WORD" + ], + "type": "string" + }, + "QueryString": { + "type": "object" + }, + "RateBasedStatement": { + "additionalProperties": false, + "properties": { + "AggregateKeyType": { + "enum": [ + "CONSTANT", + "IP", + "FORWARDED_IP", + "CUSTOM_KEYS" + ], + "type": "string" + }, + "CustomKeys": { + "description": "Specifies the aggregate keys to use in a rate-base rule.", + "items": { + "$ref": "#/definitions/RateBasedStatementCustomKey" + }, + "maxItems": 5, + "type": "array" + }, + "EvaluationWindowSec": { + "$ref": "#/definitions/EvaluationWindowSec" + }, + "ForwardedIPConfig": { + "$ref": "#/definitions/ForwardedIPConfiguration" + }, + "Limit": { + "$ref": "#/definitions/RateLimit" + }, + "ScopeDownStatement": { + "$ref": "#/definitions/Statement" + } + }, + "required": [ + "Limit", + "AggregateKeyType" + ], + "type": "object" + }, + "RateBasedStatementCustomKey": { + "additionalProperties": false, + "description": "Specifies a single custom aggregate key for a rate-base rule.", + "properties": { + "Cookie": { + "$ref": "#/definitions/RateLimitCookie" + }, + "ForwardedIP": { + "$ref": "#/definitions/RateLimitForwardedIP" + }, + "HTTPMethod": { + "$ref": "#/definitions/RateLimitHTTPMethod" + }, + "Header": { + "$ref": "#/definitions/RateLimitHeader" + }, + "IP": { + "$ref": "#/definitions/RateLimitIP" + }, + "JA3Fingerprint": { + "$ref": "#/definitions/RateLimitJA3Fingerprint" + }, + "JA4Fingerprint": { + "$ref": "#/definitions/RateLimitJA4Fingerprint" + }, + "LabelNamespace": { + "$ref": "#/definitions/RateLimitLabelNamespace" + }, + "QueryArgument": { + "$ref": "#/definitions/RateLimitQueryArgument" + }, + "QueryString": { + "$ref": "#/definitions/RateLimitQueryString" + }, + "UriPath": { + "$ref": "#/definitions/RateLimitUriPath" + } + }, + "type": "object" + }, + "RateLimit": { + "maximum": 2000000000, + "minimum": 10, + "type": "integer" + }, + "RateLimitCookie": { + "additionalProperties": false, + "description": "Specifies a cookie as an aggregate key for a rate-based rule.", + "properties": { + "Name": { + "description": "The name of the cookie to use.", + "maxLength": 64, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "Name", + "TextTransformations" + ], + "type": "object" + }, + "RateLimitForwardedIP": { + "description": "Specifies the first IP address in an HTTP header as an aggregate key for a rate-based rule.", + "type": "object" + }, + "RateLimitHTTPMethod": { + "description": "Specifies the request's HTTP method as an aggregate key for a rate-based rule.", + "type": "object" + }, + "RateLimitHeader": { + "additionalProperties": false, + "description": "Specifies a header as an aggregate key for a rate-based rule.", + "properties": { + "Name": { + "description": "The name of the header to use.", + "maxLength": 64, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "Name", + "TextTransformations" + ], + "type": "object" + }, + "RateLimitIP": { + "description": "Specifies the IP address in the web request as an aggregate key for a rate-based rule.", + "type": "object" + }, + "RateLimitJA3Fingerprint": { + "additionalProperties": false, + "description": "Specifies the request's JA3 fingerprint as an aggregate key for a rate-based rule.", + "properties": { + "FallbackBehavior": { + "enum": [ + "MATCH", + "NO_MATCH" + ], + "type": "string" + } + }, + "required": [ + "FallbackBehavior" + ], + "type": "object" + }, + "RateLimitJA4Fingerprint": { + "additionalProperties": false, + "description": "Specifies the request's JA4 fingerprint as an aggregate key for a rate-based rule.", + "properties": { + "FallbackBehavior": { + "enum": [ + "MATCH", + "NO_MATCH" + ], + "type": "string" + } + }, + "required": [ + "FallbackBehavior" + ], + "type": "object" + }, + "RateLimitLabelNamespace": { + "additionalProperties": false, + "description": "Specifies a label namespace to use as an aggregate key for a rate-based rule.", + "properties": { + "Namespace": { + "description": "The namespace to use for aggregation.", + "pattern": "^[0-9A-Za-z_:-]{1,1024}$", + "type": "string" + } + }, + "required": [ + "Namespace" + ], + "type": "object" + }, + "RateLimitQueryArgument": { + "additionalProperties": false, + "description": "Specifies a query argument in the request as an aggregate key for a rate-based rule.", + "properties": { + "Name": { + "description": "The name of the query argument to use.", + "maxLength": 64, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "Name", + "TextTransformations" + ], + "type": "object" + }, + "RateLimitQueryString": { + "additionalProperties": false, + "description": "Specifies the request's query string as an aggregate key for a rate-based rule.", + "properties": { + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "TextTransformations" + ], + "type": "object" + }, + "RateLimitUriPath": { + "additionalProperties": false, + "description": "Specifies the request's URI Path as an aggregate key for a rate-based rule.", + "properties": { + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "TextTransformations" + ], + "type": "object" + }, + "RegexMatchStatement": { + "additionalProperties": false, + "properties": { + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "RegexString": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "RegexString", + "FieldToMatch", + "TextTransformations" + ], + "type": "object" + }, + "RegexPatternSetReferenceStatement": { + "additionalProperties": false, + "properties": { + "Arn": { + "$ref": "#/definitions/ResourceArn" + }, + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "Arn", + "FieldToMatch", + "TextTransformations" + ], + "type": "object" + }, + "RequestBody": { + "additionalProperties": false, + "description": "Map of AssociatedResourceType and RequestBodyAssociatedResourceTypeConfig", + "patternProperties": { + "^(CLOUDFRONT|API_GATEWAY|COGNITO_USER_POOL|APP_RUNNER_SERVICE|VERIFIED_ACCESS_INSTANCE)$": { + "$ref": "#/definitions/RequestBodyAssociatedResourceTypeConfig" + } + }, + "type": "object" + }, + "RequestBodyAssociatedResourceTypeConfig": { + "additionalProperties": false, + "description": "Configures the inspection size in the request body.", + "properties": { + "DefaultSizeInspectionLimit": { + "$ref": "#/definitions/SizeInspectionLimit" + } + }, + "required": [ + "DefaultSizeInspectionLimit" + ], + "type": "object" + }, + "RequestInspection": { + "additionalProperties": false, + "description": "Configures the inspection of login requests", + "properties": { + "PasswordField": { + "$ref": "#/definitions/FieldIdentifier" + }, + "PayloadType": { + "enum": [ + "JSON", + "FORM_ENCODED" + ], + "type": "string" + }, + "UsernameField": { + "$ref": "#/definitions/FieldIdentifier" + } + }, + "required": [ + "PayloadType", + "UsernameField", + "PasswordField" + ], + "type": "object" + }, + "RequestInspectionACFP": { + "additionalProperties": false, + "description": "Configures the inspection of sign-up requests", + "properties": { + "AddressFields": { + "items": { + "$ref": "#/definitions/AddressField" + }, + "type": "array" + }, + "EmailField": { + "$ref": "#/definitions/FieldIdentifier" + }, + "PasswordField": { + "$ref": "#/definitions/FieldIdentifier" + }, + "PayloadType": { + "enum": [ + "JSON", + "FORM_ENCODED" + ], + "type": "string" + }, + "PhoneNumberFields": { + "items": { + "$ref": "#/definitions/PhoneNumberField" + }, + "type": "array" + }, + "UsernameField": { + "$ref": "#/definitions/FieldIdentifier" + } + }, + "required": [ + "PayloadType" + ], + "type": "object" + }, + "ResourceArn": { + "description": "ARN of the WAF entity.", + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "ResponseContent": { + "description": "Response content.", + "maxLength": 10240, + "minLength": 1, + "type": "string" + }, + "ResponseContentType": { + "description": "Valid values are TEXT_PLAIN, TEXT_HTML, and APPLICATION_JSON.", + "enum": [ + "TEXT_PLAIN", + "TEXT_HTML", + "APPLICATION_JSON" + ], + "type": "string" + }, + "ResponseInspection": { + "additionalProperties": false, + "description": "Configures the inspection of login responses", + "properties": { + "BodyContains": { + "$ref": "#/definitions/ResponseInspectionBodyContains" + }, + "Header": { + "$ref": "#/definitions/ResponseInspectionHeader" + }, + "Json": { + "$ref": "#/definitions/ResponseInspectionJson" + }, + "StatusCode": { + "$ref": "#/definitions/ResponseInspectionStatusCode" + } + }, + "type": "object" + }, + "ResponseInspectionBodyContains": { + "additionalProperties": false, + "description": "Response body contents that indicate success or failure of a login request", + "properties": { + "FailureStrings": { + "items": { + "maxLength": 100, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "SuccessStrings": { + "items": { + "maxLength": 100, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "SuccessStrings", + "FailureStrings" + ], + "type": "object" + }, + "ResponseInspectionHeader": { + "additionalProperties": false, + "description": "Response headers that indicate success or failure of a login request", + "properties": { + "FailureValues": { + "items": { + "maxLength": 100, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array" + }, + "Name": { + "maxLength": 200, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "SuccessValues": { + "items": { + "maxLength": 100, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Name", + "SuccessValues", + "FailureValues" + ], + "type": "object" + }, + "ResponseInspectionJson": { + "additionalProperties": false, + "description": "Response JSON that indicate success or failure of a login request", + "properties": { + "FailureValues": { + "items": { + "maxLength": 100, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "Identifier": { + "maxLength": 512, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "SuccessValues": { + "items": { + "maxLength": 100, + "minLength": 1, + "pattern": ".*\\S.*", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Identifier", + "SuccessValues", + "FailureValues" + ], + "type": "object" + }, + "ResponseInspectionStatusCode": { + "additionalProperties": false, + "description": "Response status codes that indicate success or failure of a login request", + "properties": { + "FailureCodes": { + "items": { + "maxLength": 999, + "minLength": 0, + "type": "integer" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "SuccessCodes": { + "items": { + "maxLength": 999, + "minLength": 0, + "type": "integer" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "SuccessCodes", + "FailureCodes" + ], + "type": "object" + }, + "ResponseStatusCode": { + "description": "Custom response code.", + "maximum": 599, + "minimum": 200, + "type": "integer" + }, + "Rule": { + "additionalProperties": false, + "description": "Rule of WebACL that contains condition and action.", + "properties": { + "Action": { + "$ref": "#/definitions/RuleAction" + }, + "CaptchaConfig": { + "$ref": "#/definitions/CaptchaConfig" + }, + "ChallengeConfig": { + "$ref": "#/definitions/ChallengeConfig" + }, + "Name": { + "$ref": "#/definitions/EntityName" + }, + "OverrideAction": { + "$ref": "#/definitions/OverrideAction" + }, + "Priority": { + "$ref": "#/definitions/RulePriority" + }, + "RuleLabels": { + "description": "Collection of Rule Labels.", + "items": { + "$ref": "#/definitions/Label" + }, + "type": "array" + }, + "Statement": { + "$ref": "#/definitions/Statement" + }, + "VisibilityConfig": { + "$ref": "#/definitions/VisibilityConfig" + } + }, + "required": [ + "Name", + "Priority", + "Statement", + "VisibilityConfig" + ], + "type": "object" + }, + "RuleAction": { + "additionalProperties": false, + "description": "Action taken when Rule matches its condition.", + "properties": { + "Allow": { + "$ref": "#/definitions/AllowAction" + }, + "Block": { + "$ref": "#/definitions/BlockAction" + }, + "Captcha": { + "$ref": "#/definitions/CaptchaAction" + }, + "Challenge": { + "$ref": "#/definitions/ChallengeAction" + }, + "Count": { + "$ref": "#/definitions/CountAction" + } + }, + "type": "object" + }, + "RuleActionOverride": { + "additionalProperties": false, + "description": "Action override for rules in the rule group.", + "properties": { + "ActionToUse": { + "$ref": "#/definitions/RuleAction" + }, + "Name": { + "$ref": "#/definitions/EntityName" + } + }, + "required": [ + "Name", + "ActionToUse" + ], + "type": "object" + }, + "RuleGroupReferenceStatement": { + "additionalProperties": false, + "properties": { + "Arn": { + "$ref": "#/definitions/ResourceArn" + }, + "ExcludedRules": { + "items": { + "$ref": "#/definitions/ExcludedRule" + }, + "type": "array" + }, + "RuleActionOverrides": { + "description": "Action overrides for rules in the rule group.", + "items": { + "$ref": "#/definitions/RuleActionOverride" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "RulePriority": { + "description": "Priority of the Rule, Rules get evaluated from lower to higher priority.", + "minimum": 0, + "type": "integer" + }, + "Rules": { + "description": "Collection of Rules.", + "items": { + "$ref": "#/definitions/Rule" + }, + "type": "array" + }, + "Scope": { + "description": "Use CLOUDFRONT for CloudFront WebACL, use REGIONAL for Application Load Balancer and API Gateway.", + "enum": [ + "CLOUDFRONT", + "REGIONAL" + ], + "type": "string" + }, + "SearchString": { + "description": "String that is searched to find a match.", + "type": "string" + }, + "SearchStringBase64": { + "description": "Base64 encoded string that is searched to find a match.", + "type": "string" + }, + "SensitivityLevel": { + "description": "Sensitivity Level current only used for sqli match statements.", + "enum": [ + "LOW", + "HIGH" + ], + "type": "string" + }, + "SingleHeader": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "type": "object" + }, + "SingleQueryArgument": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "type": "object" + }, + "SizeConstraintStatement": { + "additionalProperties": false, + "description": "Size Constraint statement.", + "properties": { + "ComparisonOperator": { + "enum": [ + "EQ", + "NE", + "LE", + "LT", + "GE", + "GT" + ], + "type": "string" + }, + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "Size": { + "maximum": 21474836480, + "minimum": 0, + "type": "number" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "FieldToMatch", + "ComparisonOperator", + "Size", + "TextTransformations" + ], + "type": "object" + }, + "SizeInspectionLimit": { + "enum": [ + "KB_16", + "KB_32", + "KB_48", + "KB_64" + ], + "type": "string" + }, + "SqliMatchStatement": { + "additionalProperties": false, + "description": "Sqli Match Statement.", + "properties": { + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "SensitivityLevel": { + "$ref": "#/definitions/SensitivityLevel" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "FieldToMatch", + "TextTransformations" + ], + "type": "object" + }, + "Statement": { + "additionalProperties": false, + "description": "First level statement that contains conditions, such as ByteMatch, SizeConstraint, etc", + "properties": { + "AndStatement": { + "$ref": "#/definitions/AndStatement" + }, + "ByteMatchStatement": { + "$ref": "#/definitions/ByteMatchStatement" + }, + "GeoMatchStatement": { + "$ref": "#/definitions/GeoMatchStatement" + }, + "IPSetReferenceStatement": { + "$ref": "#/definitions/IPSetReferenceStatement" + }, + "LabelMatchStatement": { + "$ref": "#/definitions/LabelMatchStatement" + }, + "ManagedRuleGroupStatement": { + "$ref": "#/definitions/ManagedRuleGroupStatement" + }, + "NotStatement": { + "$ref": "#/definitions/NotStatement" + }, + "OrStatement": { + "$ref": "#/definitions/OrStatement" + }, + "RateBasedStatement": { + "$ref": "#/definitions/RateBasedStatement" + }, + "RegexMatchStatement": { + "$ref": "#/definitions/RegexMatchStatement" + }, + "RegexPatternSetReferenceStatement": { + "$ref": "#/definitions/RegexPatternSetReferenceStatement" + }, + "RuleGroupReferenceStatement": { + "$ref": "#/definitions/RuleGroupReferenceStatement" + }, + "SizeConstraintStatement": { + "$ref": "#/definitions/SizeConstraintStatement" + }, + "SqliMatchStatement": { + "$ref": "#/definitions/SqliMatchStatement" + }, + "XssMatchStatement": { + "$ref": "#/definitions/XssMatchStatement" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "type": "object" + }, + "TextTransformation": { + "additionalProperties": false, + "description": "Text Transformation on the Search String before match.", + "properties": { + "Priority": { + "$ref": "#/definitions/TextTransformationPriority" + }, + "Type": { + "$ref": "#/definitions/TextTransformationType" + } + }, + "required": [ + "Priority", + "Type" + ], + "type": "object" + }, + "TextTransformationPriority": { + "description": "Priority of Rule being evaluated.", + "minimum": 0, + "type": "integer" + }, + "TextTransformationType": { + "description": "Type of text transformation.", + "enum": [ + "NONE", + "COMPRESS_WHITE_SPACE", + "HTML_ENTITY_DECODE", + "LOWERCASE", + "CMD_LINE", + "URL_DECODE", + "BASE64_DECODE", + "HEX_DECODE", + "MD5", + "REPLACE_COMMENTS", + "ESCAPE_SEQ_DECODE", + "SQL_HEX_DECODE", + "CSS_DECODE", + "JS_DECODE", + "NORMALIZE_PATH", + "NORMALIZE_PATH_WIN", + "REMOVE_NULLS", + "REPLACE_NULLS", + "BASE64_DECODE_EXT", + "URL_DECODE_UNI", + "UTF8_TO_UNICODE" + ], + "type": "string" + }, + "TokenDomains": { + "description": "List of domains to accept in web request tokens, in addition to the domain of the protected resource.", + "items": { + "maxLength": 253, + "minLength": 1, + "pattern": "^[\\w\\.\\-/]+$", + "type": "string" + }, + "type": "array" + }, + "UriFragment": { + "additionalProperties": false, + "description": "The path component of the URI Fragment. This is the part of a web request that identifies a fragment uri, for example, /abcd#introduction", + "properties": { + "FallbackBehavior": { + "enum": [ + "MATCH", + "NO_MATCH" + ], + "type": "string" + } + }, + "type": "object" + }, + "UriPath": { + "type": "object" + }, + "VisibilityConfig": { + "additionalProperties": false, + "description": "Visibility Metric of the WebACL.", + "properties": { + "CloudWatchMetricsEnabled": { + "type": "boolean" + }, + "MetricName": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "SampledRequestsEnabled": { + "type": "boolean" + } + }, + "required": [ + "SampledRequestsEnabled", + "CloudWatchMetricsEnabled", + "MetricName" + ], + "type": "object" + }, + "XssMatchStatement": { + "additionalProperties": false, + "description": "Xss Match Statement.", + "properties": { + "FieldToMatch": { + "$ref": "#/definitions/FieldToMatch" + }, + "TextTransformations": { + "items": { + "$ref": "#/definitions/TextTransformation" + }, + "type": "array" + } + }, + "required": [ + "FieldToMatch", + "TextTransformations" + ], + "type": "object" + } + }, + "description": "Contains the Rules that identify the requests that you want to allow, block, or count. In a WebACL, you also specify a default action (ALLOW or BLOCK), and the action for each Rule that you add to a WebACL, for example, block requests from specified IP addresses or block requests from specified referrers. You also associate the WebACL with a CloudFront distribution to identify the requests that you want AWS WAF to filter. If you add more than one Rule to a WebACL, a request needs to match only one of the specifications to be allowed, blocked, or counted.", + "handlers": { + "create": { + "permissions": [ + "wafv2:CreateWebACL", + "wafv2:GetWebACL", + "wafv2:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "wafv2:DeleteWebACL", + "wafv2:GetWebACL" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Scope": { + "$ref": "resource-schema.json#/properties/Scope" + } + }, + "required": [ + "Scope" + ] + }, + "permissions": [ + "wafv2:listWebACLs" + ] + }, + "read": { + "permissions": [ + "wafv2:GetWebACL", + "wafv2:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "wafv2:UpdateWebACL", + "wafv2:GetWebACL", + "wafv2:ListTagsForResource", + "wafv2:TagResource", + "wafv2:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Name", + "/properties/Id", + "/properties/Scope" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/ResourceArn" + }, + "AssociationConfig": { + "$ref": "#/definitions/AssociationConfig" + }, + "Capacity": { + "minimum": 0, + "type": "integer" + }, + "CaptchaConfig": { + "$ref": "#/definitions/CaptchaConfig" + }, + "ChallengeConfig": { + "$ref": "#/definitions/ChallengeConfig" + }, + "CustomResponseBodies": { + "$ref": "#/definitions/CustomResponseBodies" + }, + "DataProtectionConfig": { + "$ref": "#/definitions/DataProtectionConfig", + "description": "Collection of dataProtects." + }, + "DefaultAction": { + "$ref": "#/definitions/DefaultAction" + }, + "Description": { + "$ref": "#/definitions/EntityDescription" + }, + "Id": { + "$ref": "#/definitions/EntityId" + }, + "LabelNamespace": { + "$ref": "#/definitions/LabelName" + }, + "Name": { + "$ref": "#/definitions/EntityName" + }, + "Rules": { + "description": "Collection of Rules.", + "items": { + "$ref": "#/definitions/Rule" + }, + "type": "array" + }, + "Scope": { + "$ref": "#/definitions/Scope" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "minItems": 1, + "type": "array" + }, + "TokenDomains": { + "$ref": "#/definitions/TokenDomains" + }, + "VisibilityConfig": { + "$ref": "#/definitions/VisibilityConfig" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Capacity", + "/properties/Id", + "/properties/LabelNamespace" + ], + "required": [ + "DefaultAction", + "Scope", + "VisibilityConfig" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-wafv2.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::WAFv2::WebACL" +} diff --git a/src/schema/aws-wafv2-webaclassociation.json b/src/schema/aws-wafv2-webaclassociation.json index 5e4eddf0..b652b5bd 100644 --- a/src/schema/aws-wafv2-webaclassociation.json +++ b/src/schema/aws-wafv2-webaclassociation.json @@ -1,125 +1,133 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ResourceArn", - "/properties/WebACLArn" - ], - "definitions": { - "ResourceArn": { - "maxLength": 2048, - "minLength": 20, - "type": "string" - } - }, - "description": "Associates WebACL to Application Load Balancer, CloudFront or API Gateway.", - "handlers": { - "create": { - "permissions": [ - "wafv2:AssociateWebACL", - "wafv2:GetWebACLForResource", - "wafv2:GetWebACL", - "wafv2:DisassociateWebACL", - "elasticloadbalancing:SetWebACL", - "apigateway:SetWebACL", - "appsync:SetWebACL", - "cognito-idp:AssociateWebACL", - "cognito-idp:DisassociateWebACL", - "cognito-idp:GetWebACLForResource", - "apprunner:AssociateWebAcl", - "apprunner:DisassociateWebAcl", - "apprunner:DescribeWebAclForService", - "ec2:AssociateVerifiedAccessInstanceWebAcl", - "ec2:DisassociateVerifiedAccessInstanceWebAcl", - "ec2:DescribeVerifiedAccessInstanceWebAclAssociations", - "ec2:GetVerifiedAccessInstanceWebAcl" - ] - }, - "delete": { - "permissions": [ - "wafv2:AssociateWebACL", - "wafv2:GetWebACLForResource", - "wafv2:GetWebACL", - "wafv2:DisassociateWebACL", - "elasticloadbalancing:SetWebACL", - "apigateway:SetWebACL", - "appsync:SetWebACL", - "cognito-idp:AssociateWebACL", - "cognito-idp:DisassociateWebACL", - "cognito-idp:GetWebACLForResource", - "apprunner:AssociateWebAcl", - "apprunner:DisassociateWebAcl", - "apprunner:DescribeWebAclForService", - "ec2:AssociateVerifiedAccessInstanceWebAcl", - "ec2:DisassociateVerifiedAccessInstanceWebAcl", - "ec2:DescribeVerifiedAccessInstanceWebAclAssociations", - "ec2:GetVerifiedAccessInstanceWebAcl" - ] - }, - "read": { - "permissions": [ - "wafv2:AssociateWebACL", - "wafv2:GetWebACLForResource", - "wafv2:GetWebACL", - "wafv2:DisassociateWebACL", - "elasticloadbalancing:SetWebACL", - "apigateway:SetWebACL", - "appsync:SetWebACL", - "cognito-idp:AssociateWebACL", - "cognito-idp:DisassociateWebACL", - "cognito-idp:GetWebACLForResource", - "apprunner:AssociateWebAcl", - "apprunner:DisassociateWebAcl", - "apprunner:DescribeWebAclForService", - "ec2:AssociateVerifiedAccessInstanceWebAcl", - "ec2:DisassociateVerifiedAccessInstanceWebAcl", - "ec2:DescribeVerifiedAccessInstanceWebAclAssociations", - "ec2:GetVerifiedAccessInstanceWebAcl" - ] - }, - "update": { - "permissions": [ - "wafv2:AssociateWebACL", - "wafv2:GetWebACLForResource", - "wafv2:GetWebACL", - "wafv2:DisassociateWebACL", - "elasticloadbalancing:SetWebACL", - "apigateway:SetWebACL", - "appsync:SetWebACL", - "cognito-idp:AssociateWebACL", - "cognito-idp:DisassociateWebACL", - "cognito-idp:GetWebACLForResource", - "apprunner:AssociateWebAcl", - "apprunner:DisassociateWebAcl", - "apprunner:DescribeWebAclForService", - "ec2:AssociateVerifiedAccessInstanceWebAcl", - "ec2:DisassociateVerifiedAccessInstanceWebAcl", - "ec2:DescribeVerifiedAccessInstanceWebAclAssociations", - "ec2:GetVerifiedAccessInstanceWebAcl" - ] - } - }, - "primaryIdentifier": [ - "/properties/ResourceArn", - "/properties/WebACLArn" - ], - "properties": { - "ResourceArn": { - "$ref": "#/definitions/ResourceArn" - }, - "WebACLArn": { - "$ref": "#/definitions/ResourceArn" - } - }, - "required": [ - "ResourceArn", - "WebACLArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-wafv2.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::WAFv2::WebACLAssociation" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ResourceArn", + "/properties/WebACLArn" + ], + "definitions": { + "ResourceArn": { + "maxLength": 2048, + "minLength": 20, + "type": "string" + } + }, + "description": "Associates WebACL to Application Load Balancer, CloudFront or API Gateway.", + "handlers": { + "create": { + "permissions": [ + "wafv2:AssociateWebACL", + "wafv2:GetWebACLForResource", + "wafv2:GetWebACL", + "wafv2:DisassociateWebACL", + "wafv2:PutPermissionPolicy", + "wafv2:GetPermissionPolicy", + "elasticloadbalancing:SetWebACL", + "apigateway:SetWebACL", + "appsync:SetWebACL", + "cognito-idp:AssociateWebACL", + "cognito-idp:DisassociateWebACL", + "cognito-idp:GetWebACLForResource", + "apprunner:AssociateWebAcl", + "apprunner:DisassociateWebAcl", + "apprunner:DescribeWebAclForService", + "ec2:AssociateVerifiedAccessInstanceWebAcl", + "ec2:DisassociateVerifiedAccessInstanceWebAcl", + "ec2:DescribeVerifiedAccessInstanceWebAclAssociations", + "ec2:GetVerifiedAccessInstanceWebAcl", + "amplify:AssociateWebACL", + "amplify:GetWebACLForResource" + ] + }, + "delete": { + "permissions": [ + "wafv2:AssociateWebACL", + "wafv2:GetWebACLForResource", + "wafv2:GetWebACL", + "wafv2:DisassociateWebACL", + "wafv2:PutPermissionPolicy", + "elasticloadbalancing:SetWebACL", + "apigateway:SetWebACL", + "appsync:SetWebACL", + "cognito-idp:AssociateWebACL", + "cognito-idp:DisassociateWebACL", + "cognito-idp:GetWebACLForResource", + "apprunner:AssociateWebAcl", + "apprunner:DisassociateWebAcl", + "apprunner:DescribeWebAclForService", + "ec2:AssociateVerifiedAccessInstanceWebAcl", + "ec2:DisassociateVerifiedAccessInstanceWebAcl", + "ec2:DescribeVerifiedAccessInstanceWebAclAssociations", + "ec2:GetVerifiedAccessInstanceWebAcl", + "amplify:DisassociateWebACL", + "amplify:GetWebACLForResource" + ] + }, + "read": { + "permissions": [ + "wafv2:AssociateWebACL", + "wafv2:GetWebACLForResource", + "wafv2:GetWebACL", + "wafv2:DisassociateWebACL", + "elasticloadbalancing:SetWebACL", + "apigateway:SetWebACL", + "appsync:SetWebACL", + "cognito-idp:AssociateWebACL", + "cognito-idp:DisassociateWebACL", + "cognito-idp:GetWebACLForResource", + "apprunner:AssociateWebAcl", + "apprunner:DisassociateWebAcl", + "apprunner:DescribeWebAclForService", + "ec2:AssociateVerifiedAccessInstanceWebAcl", + "ec2:DisassociateVerifiedAccessInstanceWebAcl", + "ec2:DescribeVerifiedAccessInstanceWebAclAssociations", + "ec2:GetVerifiedAccessInstanceWebAcl", + "amplify:GetWebACLForResource" + ] + }, + "update": { + "permissions": [ + "wafv2:AssociateWebACL", + "wafv2:GetWebACLForResource", + "wafv2:GetWebACL", + "wafv2:DisassociateWebACL", + "elasticloadbalancing:SetWebACL", + "apigateway:SetWebACL", + "appsync:SetWebACL", + "cognito-idp:AssociateWebACL", + "cognito-idp:DisassociateWebACL", + "cognito-idp:GetWebACLForResource", + "apprunner:AssociateWebAcl", + "apprunner:DisassociateWebAcl", + "apprunner:DescribeWebAclForService", + "ec2:AssociateVerifiedAccessInstanceWebAcl", + "ec2:DisassociateVerifiedAccessInstanceWebAcl", + "ec2:DescribeVerifiedAccessInstanceWebAclAssociations", + "ec2:GetVerifiedAccessInstanceWebAcl" + ] + } + }, + "primaryIdentifier": [ + "/properties/ResourceArn", + "/properties/WebACLArn" + ], + "properties": { + "ResourceArn": { + "$ref": "#/definitions/ResourceArn" + }, + "WebACLArn": { + "$ref": "#/definitions/ResourceArn" + } + }, + "required": [ + "ResourceArn", + "WebACLArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-wafv2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::WAFv2::WebACLAssociation" +} diff --git a/src/schema/aws-wisdom-aiagent.json b/src/schema/aws-wisdom-aiagent.json index 97ad7975..35fc8eaa 100644 --- a/src/schema/aws-wisdom-aiagent.json +++ b/src/schema/aws-wisdom-aiagent.json @@ -1,300 +1,432 @@ { - "typeName" : "AWS::Wisdom::AIAgent", - "description" : "Definition of AWS::Wisdom::AIAgent Resource Type", - "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "definitions" : { - "AIAgentAssociationConfigurationType" : { - "type" : "string", - "enum" : [ "KNOWLEDGE_BASE" ] + "additionalIdentifiers": [ + [ + "/properties/AIAgentArn", + "/properties/AssistantArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AssistantId", + "/properties/Name", + "/properties/Tags", + "/properties/Type" + ], + "definitions": { + "AIAgentAssociationConfigurationType": { + "enum": [ + "KNOWLEDGE_BASE" + ], + "type": "string" }, - "AIAgentConfiguration" : { - "oneOf" : [ { - "type" : "object", - "title" : "ManualSearchAIAgentConfiguration", - "properties" : { - "ManualSearchAIAgentConfiguration" : { - "$ref" : "#/definitions/ManualSearchAIAgentConfiguration" - } + "AIAgentConfiguration": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "ManualSearchAIAgentConfiguration": { + "$ref": "#/definitions/ManualSearchAIAgentConfiguration" + } + }, + "required": [ + "ManualSearchAIAgentConfiguration" + ], + "title": "ManualSearchAIAgentConfiguration", + "type": "object" }, - "required" : [ "ManualSearchAIAgentConfiguration" ], - "additionalProperties" : false - }, { - "type" : "object", - "title" : "AnswerRecommendationAIAgentConfiguration", - "properties" : { - "AnswerRecommendationAIAgentConfiguration" : { - "$ref" : "#/definitions/AnswerRecommendationAIAgentConfiguration" - } + { + "additionalProperties": false, + "properties": { + "AnswerRecommendationAIAgentConfiguration": { + "$ref": "#/definitions/AnswerRecommendationAIAgentConfiguration" + } + }, + "required": [ + "AnswerRecommendationAIAgentConfiguration" + ], + "title": "AnswerRecommendationAIAgentConfiguration", + "type": "object" }, - "required" : [ "AnswerRecommendationAIAgentConfiguration" ], - "additionalProperties" : false - } ] + { + "additionalProperties": false, + "properties": { + "SelfServiceAIAgentConfiguration": { + "$ref": "#/definitions/SelfServiceAIAgentConfiguration" + } + }, + "required": [ + "SelfServiceAIAgentConfiguration" + ], + "title": "SelfServiceAIAgentConfiguration", + "type": "object" + } + ] }, - "AIAgentType" : { - "type" : "string", - "enum" : [ "MANUAL_SEARCH", "ANSWER_RECOMMENDATION" ] + "AIAgentType": { + "enum": [ + "MANUAL_SEARCH", + "ANSWER_RECOMMENDATION", + "SELF_SERVICE" + ], + "type": "string" }, - "AnswerRecommendationAIAgentConfiguration" : { - "type" : "object", - "properties" : { - "IntentLabelingGenerationAIPromptId" : { - "type" : "string", - "pattern" : "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$" + "AnswerRecommendationAIAgentConfiguration": { + "additionalProperties": false, + "properties": { + "AnswerGenerationAIGuardrailId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$", + "type": "string" }, - "QueryReformulationAIPromptId" : { - "type" : "string", - "pattern" : "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$" + "AnswerGenerationAIPromptId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$", + "type": "string" }, - "AnswerGenerationAIPromptId" : { - "type" : "string", - "pattern" : "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$" + "AssociationConfigurations": { + "items": { + "$ref": "#/definitions/AssociationConfiguration" + }, + "type": "array" }, - "AssociationConfigurations" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/AssociationConfiguration" - } + "IntentLabelingGenerationAIPromptId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$", + "type": "string" + }, + "Locale": { + "minLength": 1, + "type": "string" + }, + "QueryReformulationAIPromptId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$", + "type": "string" } }, - "additionalProperties" : false + "type": "object" }, - "AssociationConfiguration" : { - "type" : "object", - "properties" : { - "AssociationId" : { - "type" : "string", - "pattern" : "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$" + "AssociationConfiguration": { + "additionalProperties": false, + "properties": { + "AssociationConfigurationData": { + "$ref": "#/definitions/AssociationConfigurationData" }, - "AssociationType" : { - "$ref" : "#/definitions/AIAgentAssociationConfigurationType" + "AssociationId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" }, - "AssociationConfigurationData" : { - "$ref" : "#/definitions/AssociationConfigurationData" + "AssociationType": { + "$ref": "#/definitions/AIAgentAssociationConfigurationType" } }, - "additionalProperties" : false + "type": "object" }, - "AssociationConfigurationData" : { - "oneOf" : [ { - "type" : "object", - "title" : "KnowledgeBaseAssociationConfigurationData", - "properties" : { - "KnowledgeBaseAssociationConfigurationData" : { - "$ref" : "#/definitions/KnowledgeBaseAssociationConfigurationData" - } - }, - "required" : [ "KnowledgeBaseAssociationConfigurationData" ], - "additionalProperties" : false - } ] + "AssociationConfigurationData": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "KnowledgeBaseAssociationConfigurationData": { + "$ref": "#/definitions/KnowledgeBaseAssociationConfigurationData" + } + }, + "required": [ + "KnowledgeBaseAssociationConfigurationData" + ], + "title": "KnowledgeBaseAssociationConfigurationData", + "type": "object" + } + ] }, - "KnowledgeBaseAssociationConfigurationData" : { - "type" : "object", - "properties" : { - "ContentTagFilter" : { - "$ref" : "#/definitions/TagFilter" + "KnowledgeBaseAssociationConfigurationData": { + "additionalProperties": false, + "properties": { + "ContentTagFilter": { + "$ref": "#/definitions/TagFilter" }, - "MaxResults" : { - "type" : "number", - "maximum" : 100, - "minimum" : 1 + "MaxResults": { + "maximum": 100, + "minimum": 1, + "type": "number" }, - "OverrideKnowledgeBaseSearchType" : { - "$ref" : "#/definitions/KnowledgeBaseSearchType" + "OverrideKnowledgeBaseSearchType": { + "$ref": "#/definitions/KnowledgeBaseSearchType" } }, - "additionalProperties" : false + "type": "object" }, - "KnowledgeBaseSearchType" : { - "type" : "string", - "enum" : [ "HYBRID", "SEMANTIC" ] + "KnowledgeBaseSearchType": { + "enum": [ + "HYBRID", + "SEMANTIC" + ], + "type": "string" }, - "ManualSearchAIAgentConfiguration" : { - "type" : "object", - "properties" : { - "AnswerGenerationAIPromptId" : { - "type" : "string", - "pattern" : "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$" + "ManualSearchAIAgentConfiguration": { + "additionalProperties": false, + "properties": { + "AnswerGenerationAIGuardrailId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$", + "type": "string" }, - "AssociationConfigurations" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/AssociationConfiguration" - } + "AnswerGenerationAIPromptId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$", + "type": "string" + }, + "AssociationConfigurations": { + "items": { + "$ref": "#/definitions/AssociationConfiguration" + }, + "type": "array" + }, + "Locale": { + "minLength": 1, + "type": "string" } }, - "additionalProperties" : false + "type": "object" }, - "OrCondition" : { - "oneOf" : [ { - "type" : "object", - "title" : "AndConditions", - "properties" : { - "AndConditions" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/TagCondition" + "OrCondition": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "AndConditions": { + "items": { + "$ref": "#/definitions/TagCondition" + }, + "type": "array" } - } + }, + "required": [ + "AndConditions" + ], + "title": "AndConditions", + "type": "object" }, - "required" : [ "AndConditions" ], - "additionalProperties" : false - }, { - "type" : "object", - "title" : "TagCondition", - "properties" : { - "TagCondition" : { - "$ref" : "#/definitions/TagCondition" - } - }, - "required" : [ "TagCondition" ], - "additionalProperties" : false - } ] + { + "additionalProperties": false, + "properties": { + "TagCondition": { + "$ref": "#/definitions/TagCondition" + } + }, + "required": [ + "TagCondition" + ], + "title": "TagCondition", + "type": "object" + } + ] }, - "TagCondition" : { - "type" : "object", - "properties" : { - "Key" : { - "type" : "string", - "maxLength" : 128, - "minLength" : 1, - "pattern" : "^(?!aws:)[a-zA-Z+-=._:/]+$" + "SelfServiceAIAgentConfiguration": { + "additionalProperties": false, + "properties": { + "AssociationConfigurations": { + "items": { + "$ref": "#/definitions/AssociationConfiguration" + }, + "type": "array" + }, + "SelfServiceAIGuardrailId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$", + "type": "string" }, - "Value" : { - "type" : "string", - "maxLength" : 256, - "minLength" : 1 + "SelfServiceAnswerGenerationAIPromptId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$", + "type": "string" + }, + "SelfServicePreProcessingAIPromptId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$", + "type": "string" } }, - "required" : [ "Key" ], - "additionalProperties" : false + "type": "object" }, - "TagFilter" : { - "oneOf" : [ { - "type" : "object", - "title" : "TagCondition", - "properties" : { - "TagCondition" : { - "$ref" : "#/definitions/TagCondition" - } + "TagCondition": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" }, - "required" : [ "TagCondition" ], - "additionalProperties" : false - }, { - "type" : "object", - "title" : "AndConditions", - "properties" : { - "AndConditions" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/TagCondition" + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + }, + "TagFilter": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "TagCondition": { + "$ref": "#/definitions/TagCondition" } - } + }, + "required": [ + "TagCondition" + ], + "title": "TagCondition", + "type": "object" }, - "required" : [ "AndConditions" ], - "additionalProperties" : false - }, { - "type" : "object", - "title" : "OrConditions", - "properties" : { - "OrConditions" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/OrCondition" + { + "additionalProperties": false, + "properties": { + "AndConditions": { + "items": { + "$ref": "#/definitions/TagCondition" + }, + "type": "array" } - } + }, + "required": [ + "AndConditions" + ], + "title": "AndConditions", + "type": "object" }, - "required" : [ "OrConditions" ], - "additionalProperties" : false - } ] + { + "additionalProperties": false, + "properties": { + "OrConditions": { + "items": { + "$ref": "#/definitions/OrCondition" + }, + "type": "array" + } + }, + "required": [ + "OrConditions" + ], + "title": "OrConditions", + "type": "object" + } + ] }, - "Tags" : { - "type" : "object", - "patternProperties" : { - "^(?!aws:)[a-zA-Z+-=._:/]+$" : { - "type" : "string", - "maxLength" : 256, - "minLength" : 1 + "Tags": { + "additionalProperties": false, + "patternProperties": { + "^(?!aws:)[a-zA-Z+-=._:/]+$": { + "maxLength": 256, + "minLength": 1, + "type": "string" } }, - "additionalProperties" : false + "type": "object" } }, - "properties" : { - "AIAgentId" : { - "type" : "string", - "pattern" : "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$|^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}(:[A-Z0-9_$]+){0,1}$" + "description": "Definition of AWS::Wisdom::AIAgent Resource Type", + "handlers": { + "create": { + "permissions": [ + "wisdom:CreateAIAgent", + "wisdom:TagResource" + ] }, - "AIAgentArn" : { - "type" : "string", - "pattern" : "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$" + "delete": { + "permissions": [ + "wisdom:DeleteAIAgent" + ] }, - "AssistantId" : { - "type" : "string", - "pattern" : "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$|^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$" + "list": { + "handlerSchema": { + "properties": { + "AssistantId": { + "$ref": "resource-schema.json#/properties/AssistantId" + } + }, + "required": [ + "AssistantId" + ] + }, + "permissions": [ + "wisdom:ListAIAgents" + ] }, - "AssistantArn" : { - "type" : "string", - "pattern" : "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$" + "read": { + "permissions": [ + "wisdom:GetAIAgent" + ] }, - "Configuration" : { - "$ref" : "#/definitions/AIAgentConfiguration" + "update": { + "permissions": [ + "wisdom:UpdateAIAgent" + ] + } + }, + "primaryIdentifier": [ + "/properties/AIAgentId", + "/properties/AssistantId" + ], + "properties": { + "AIAgentArn": { + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$", + "type": "string" }, - "Description" : { - "type" : "string", - "maxLength" : 255, - "minLength" : 1, - "pattern" : "^[a-zA-Z0-9\\s_.,-]+" + "AIAgentId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$|^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}(:[A-Z0-9_$]+){0,1}$", + "type": "string" }, - "Name" : { - "type" : "string", - "maxLength" : 255, - "minLength" : 1, - "pattern" : "^[a-zA-Z0-9\\s_.,-]+" + "AssistantArn": { + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$", + "type": "string" }, - "Tags" : { - "$ref" : "#/definitions/Tags" + "AssistantId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$|^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$", + "type": "string" }, - "Type" : { - "$ref" : "#/definitions/AIAgentType" - } - }, - "required" : [ "AssistantId", "Configuration", "Type" ], - "readOnlyProperties" : [ "/properties/AIAgentArn", "/properties/AIAgentId", "/properties/AssistantArn" ], - "createOnlyProperties" : [ "/properties/AssistantId", "/properties/Name", "/properties/Tags", "/properties/Type" ], - "primaryIdentifier" : [ "/properties/AIAgentId", "/properties/AssistantId" ], - "additionalIdentifiers" : [ [ "/properties/AIAgentArn", "/properties/AssistantArn" ] ], - "tagging" : { - "taggable" : true, - "tagOnCreate" : true, - "tagUpdatable" : false, - "cloudFormationSystemTags" : false, - "tagProperty" : "/properties/Tags", - "permissions" : [ "wisdom:TagResource" ] - }, - "handlers" : { - "create" : { - "permissions" : [ "wisdom:CreateAIAgent", "wisdom:TagResource" ] + "Configuration": { + "$ref": "#/definitions/AIAgentConfiguration" }, - "read" : { - "permissions" : [ "wisdom:GetAIAgent" ] + "Description": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s_.,-]+", + "type": "string" }, - "update" : { - "permissions" : [ "wisdom:UpdateAIAgent" ] + "ModifiedTimeSeconds": { + "type": "number" }, - "delete" : { - "permissions" : [ "wisdom:DeleteAIAgent" ] + "Name": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s_.,-]+", + "type": "string" }, - "list" : { - "permissions" : [ "wisdom:ListAIAgents" ], - "handlerSchema" : { - "properties" : { - "AssistantId" : { - "$ref" : "resource-schema.json#/properties/AssistantId" - } - }, - "required" : [ "AssistantId" ] - } + "Tags": { + "$ref": "#/definitions/Tags" + }, + "Type": { + "$ref": "#/definitions/AIAgentType" } }, - "additionalProperties" : false -} \ No newline at end of file + "readOnlyProperties": [ + "/properties/AIAgentArn", + "/properties/AIAgentId", + "/properties/AssistantArn", + "/properties/ModifiedTimeSeconds" + ], + "required": [ + "AssistantId", + "Configuration", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "wisdom:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Wisdom::AIAgent" +} diff --git a/src/schema/aws-wisdom-aiagentversion.json b/src/schema/aws-wisdom-aiagentversion.json index 7bddfe81..44fb87c8 100644 --- a/src/schema/aws-wisdom-aiagentversion.json +++ b/src/schema/aws-wisdom-aiagentversion.json @@ -1,74 +1,110 @@ { - "typeName" : "AWS::Wisdom::AIAgentVersion", - "description" : "Definition of AWS::Wisdom::AIAgentVersion Resource Type", - "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "definitions" : { }, - "properties" : { - "AIAgentArn" : { - "type" : "string", - "pattern" : "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$" + "additionalIdentifiers": [ + [ + "/properties/AIAgentArn", + "/properties/AssistantArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AssistantId", + "/properties/AIAgentId", + "/properties/ModifiedTimeSeconds" + ], + "definitions": {}, + "description": "Definition of AWS::Wisdom::AIAgentVersion Resource Type", + "handlers": { + "create": { + "permissions": [ + "wisdom:CreateAIAgentVersion" + ] }, - "AssistantArn" : { - "type" : "string", - "pattern" : "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$" + "delete": { + "permissions": [ + "wisdom:DeleteAIAgentVersion" + ] }, - "AIAgentId" : { - "type" : "string", - "pattern" : "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$" - }, - "AssistantId" : { - "type" : "string", - "pattern" : "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$" - }, - "AIAgentVersionId" : { - "type" : "string", - "pattern" : "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$" + "list": { + "handlerSchema": { + "properties": { + "AIAgentId": { + "$ref": "resource-schema.json#/properties/AIAgentId" + }, + "AssistantId": { + "$ref": "resource-schema.json#/properties/AssistantId" + } + }, + "required": [ + "AssistantId", + "AIAgentId" + ] + }, + "permissions": [ + "wisdom:ListAIAgentVersions" + ] }, - "VersionNumber" : { - "type" : "number" + "read": { + "permissions": [ + "wisdom:GetAIAgent", + "wisdom:GetAIAgentVersion" + ] }, - "ModifiedTimeSeconds" : { - "type" : "number" + "update": { + "permissions": [ + "wisdom:GetAIAgent", + "wisdom:GetAIAgentVersion" + ] } }, - "additionalProperties" : false, - "tagging" : { - "taggable" : false, - "tagOnCreate" : false, - "tagUpdatable" : false, - "cloudFormationSystemTags" : false - }, - "required" : [ "AssistantId", "AIAgentId" ], - "createOnlyProperties" : [ "/properties/AssistantId", "/properties/AIAgentId", "/properties/ModifiedTimeSeconds" ], - "readOnlyProperties" : [ "/properties/AIAgentVersionId", "/properties/AIAgentArn", "/properties/AssistantArn", "/properties/VersionNumber" ], - "primaryIdentifier" : [ "/properties/AssistantId", "/properties/AIAgentId", "/properties/VersionNumber" ], - "additionalIdentifiers" : [ [ "/properties/AIAgentArn", "/properties/AssistantArn" ] ], - "handlers" : { - "create" : { - "permissions" : [ "wisdom:CreateAIAgentVersion" ] + "primaryIdentifier": [ + "/properties/AssistantId", + "/properties/AIAgentId", + "/properties/VersionNumber" + ], + "properties": { + "AIAgentArn": { + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$", + "type": "string" }, - "read" : { - "permissions" : [ "wisdom:GetAIAgent", "wisdom:GetAIAgentVersion" ] + "AIAgentId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" }, - "update" : { - "permissions" : [ "wisdom:GetAIAgent", "wisdom:GetAIAgentVersion" ] + "AIAgentVersionId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$", + "type": "string" }, - "delete" : { - "permissions" : [ "wisdom:DeleteAIAgentVersion" ] + "AssistantArn": { + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$", + "type": "string" }, - "list" : { - "permissions" : [ "wisdom:ListAIAgentVersions" ], - "handlerSchema" : { - "properties" : { - "AssistantId" : { - "$ref" : "resource-schema.json#/properties/AssistantId" - }, - "AIAgentId" : { - "$ref" : "resource-schema.json#/properties/AIAgentId" - } - }, - "required" : [ "AssistantId", "AIAgentId" ] - } + "AssistantId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + }, + "ModifiedTimeSeconds": { + "type": "number" + }, + "VersionNumber": { + "type": "number" } - } -} \ No newline at end of file + }, + "readOnlyProperties": [ + "/properties/AIAgentVersionId", + "/properties/AIAgentArn", + "/properties/AssistantArn", + "/properties/VersionNumber" + ], + "required": [ + "AssistantId", + "AIAgentId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Wisdom::AIAgentVersion" +} diff --git a/src/schema/aws-wisdom-aiguardrail.json b/src/schema/aws-wisdom-aiguardrail.json new file mode 100644 index 00000000..e4df6e9e --- /dev/null +++ b/src/schema/aws-wisdom-aiguardrail.json @@ -0,0 +1,499 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/AIGuardrailArn", + "/properties/AssistantArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AssistantId", + "/properties/Name", + "/properties/Tags" + ], + "definitions": { + "AIGuardrailContentPolicyConfig": { + "additionalProperties": false, + "description": "Content policy config for a guardrail.", + "properties": { + "FiltersConfig": { + "description": "List of content filter configs in content policy.", + "items": { + "$ref": "#/definitions/GuardrailContentFilterConfig" + }, + "maxItems": 6, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "FiltersConfig" + ], + "type": "object" + }, + "AIGuardrailContextualGroundingPolicyConfig": { + "additionalProperties": false, + "description": "Contextual grounding policy config for a guardrail.", + "properties": { + "FiltersConfig": { + "description": "List of contextual grounding filter configs.", + "items": { + "$ref": "#/definitions/GuardrailContextualGroundingFilterConfig" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "FiltersConfig" + ], + "type": "object" + }, + "AIGuardrailSensitiveInformationPolicyConfig": { + "additionalProperties": false, + "description": "Sensitive information policy config for a guardrail.", + "properties": { + "PiiEntitiesConfig": { + "description": "List of entities.", + "items": { + "$ref": "#/definitions/GuardrailPiiEntityConfig" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "RegexesConfig": { + "description": "List of regex.", + "items": { + "$ref": "#/definitions/GuardrailRegexConfig" + }, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "AIGuardrailTopicPolicyConfig": { + "additionalProperties": false, + "description": "Topic policy config for a guardrail.", + "properties": { + "TopicsConfig": { + "description": "List of topic configs in topic policy.", + "items": { + "$ref": "#/definitions/GuardrailTopicConfig" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "TopicsConfig" + ], + "type": "object" + }, + "AIGuardrailWordPolicyConfig": { + "additionalProperties": false, + "description": "Word policy config for a guardrail.", + "properties": { + "ManagedWordListsConfig": { + "description": "A config for the list of managed words.", + "items": { + "$ref": "#/definitions/GuardrailManagedWordsConfig" + }, + "type": "array" + }, + "WordsConfig": { + "description": "List of custom word configs.", + "items": { + "$ref": "#/definitions/GuardrailWordConfig" + }, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "GuardrailContentFilterConfig": { + "additionalProperties": false, + "description": "Content filter config in content policy.", + "properties": { + "InputStrength": { + "$ref": "#/definitions/GuardrailFilterStrength" + }, + "OutputStrength": { + "$ref": "#/definitions/GuardrailFilterStrength" + }, + "Type": { + "$ref": "#/definitions/GuardrailContentFilterType" + } + }, + "required": [ + "InputStrength", + "OutputStrength", + "Type" + ], + "type": "object" + }, + "GuardrailContentFilterType": { + "description": "Type of text to text filter in content policy", + "enum": [ + "SEXUAL", + "VIOLENCE", + "HATE", + "INSULTS", + "MISCONDUCT", + "PROMPT_ATTACK" + ], + "type": "string" + }, + "GuardrailContextualGroundingFilterConfig": { + "additionalProperties": false, + "description": "A config for grounding filter.", + "properties": { + "Threshold": { + "default": 0, + "description": "The threshold for this filter.", + "minimum": 0, + "type": "number" + }, + "Type": { + "$ref": "#/definitions/GuardrailContextualGroundingFilterType" + } + }, + "required": [ + "Threshold", + "Type" + ], + "type": "object" + }, + "GuardrailContextualGroundingFilterType": { + "description": "Type of contextual grounding filter", + "enum": [ + "GROUNDING", + "RELEVANCE" + ], + "type": "string" + }, + "GuardrailFilterStrength": { + "description": "Strength for filters", + "enum": [ + "NONE", + "LOW", + "MEDIUM", + "HIGH" + ], + "type": "string" + }, + "GuardrailManagedWordsConfig": { + "additionalProperties": false, + "description": "A managed words config.", + "properties": { + "Type": { + "$ref": "#/definitions/GuardrailManagedWordsType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "GuardrailManagedWordsType": { + "description": "Options for managed words.", + "enum": [ + "PROFANITY" + ], + "type": "string" + }, + "GuardrailPiiEntityConfig": { + "additionalProperties": false, + "description": "Pii entity configuration.", + "properties": { + "Action": { + "$ref": "#/definitions/GuardrailSensitiveInformationAction" + }, + "Type": { + "$ref": "#/definitions/GuardrailPiiEntityType" + } + }, + "required": [ + "Action", + "Type" + ], + "type": "object" + }, + "GuardrailPiiEntityType": { + "description": "The currently supported PII entities", + "enum": [ + "ADDRESS", + "AGE", + "AWS_ACCESS_KEY", + "AWS_SECRET_KEY", + "CA_HEALTH_NUMBER", + "CA_SOCIAL_INSURANCE_NUMBER", + "CREDIT_DEBIT_CARD_CVV", + "CREDIT_DEBIT_CARD_EXPIRY", + "CREDIT_DEBIT_CARD_NUMBER", + "DRIVER_ID", + "EMAIL", + "INTERNATIONAL_BANK_ACCOUNT_NUMBER", + "IP_ADDRESS", + "LICENSE_PLATE", + "MAC_ADDRESS", + "NAME", + "PASSWORD", + "PHONE", + "PIN", + "SWIFT_CODE", + "UK_NATIONAL_HEALTH_SERVICE_NUMBER", + "UK_NATIONAL_INSURANCE_NUMBER", + "UK_UNIQUE_TAXPAYER_REFERENCE_NUMBER", + "URL", + "USERNAME", + "US_BANK_ACCOUNT_NUMBER", + "US_BANK_ROUTING_NUMBER", + "US_INDIVIDUAL_TAX_IDENTIFICATION_NUMBER", + "US_PASSPORT_NUMBER", + "US_SOCIAL_SECURITY_NUMBER", + "VEHICLE_IDENTIFICATION_NUMBER" + ], + "type": "string" + }, + "GuardrailRegexConfig": { + "additionalProperties": false, + "description": "A regex configuration.", + "properties": { + "Action": { + "$ref": "#/definitions/GuardrailSensitiveInformationAction" + }, + "Description": { + "description": "The regex description.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "Name": { + "description": "The regex name.", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Pattern": { + "description": "The regex pattern.", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Action", + "Name", + "Pattern" + ], + "type": "object" + }, + "GuardrailSensitiveInformationAction": { + "description": "Options for sensitive information action.", + "enum": [ + "BLOCK", + "ANONYMIZE" + ], + "type": "string" + }, + "GuardrailTopicConfig": { + "additionalProperties": false, + "description": "Topic config in topic policy.", + "properties": { + "Definition": { + "description": "Definition of topic in topic policy", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "Examples": { + "description": "List of text examples", + "items": { + "description": "Text example in topic policy", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "minItems": 0, + "type": "array" + }, + "Name": { + "description": "Name of topic in topic policy", + "maxLength": 100, + "minLength": 1, + "pattern": "^[0-9a-zA-Z-_ !?.]+$", + "type": "string" + }, + "Type": { + "$ref": "#/definitions/GuardrailTopicType" + } + }, + "required": [ + "Definition", + "Name", + "Type" + ], + "type": "object" + }, + "GuardrailTopicType": { + "description": "Type of topic in a policy", + "enum": [ + "DENY" + ], + "type": "string" + }, + "GuardrailWordConfig": { + "additionalProperties": false, + "description": "A custom word config.", + "properties": { + "Text": { + "description": "The custom word text.", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Text" + ], + "type": "object" + }, + "Tags": { + "additionalProperties": false, + "patternProperties": { + "^(?!aws:)[a-zA-Z+-=._:/]+$": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "description": "Definition of AWS::Wisdom::AIGuardrail Resource Type", + "handlers": { + "create": { + "permissions": [ + "wisdom:CreateAIGuardrail", + "wisdom:TagResource" + ] + }, + "delete": { + "permissions": [ + "wisdom:DeleteAIGuardrail" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "AssistantId": { + "$ref": "resource-schema.json#/properties/AssistantId" + } + }, + "required": [ + "AssistantId" + ] + }, + "permissions": [ + "wisdom:ListAIGuardrails" + ] + }, + "read": { + "permissions": [ + "wisdom:GetAIGuardrail" + ] + }, + "update": { + "permissions": [ + "wisdom:UpdateAIGuardrail" + ] + } + }, + "primaryIdentifier": [ + "/properties/AIGuardrailId", + "/properties/AssistantId" + ], + "properties": { + "AIGuardrailArn": { + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$", + "type": "string" + }, + "AIGuardrailId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$|^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}(:[A-Z0-9_$]+){0,1}$", + "type": "string" + }, + "AssistantArn": { + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$", + "type": "string" + }, + "AssistantId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$|^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$", + "type": "string" + }, + "BlockedInputMessaging": { + "description": "Messaging for when violations are detected in text", + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "BlockedOutputsMessaging": { + "description": "Messaging for when violations are detected in text", + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "ContentPolicyConfig": { + "$ref": "#/definitions/AIGuardrailContentPolicyConfig" + }, + "ContextualGroundingPolicyConfig": { + "$ref": "#/definitions/AIGuardrailContextualGroundingPolicyConfig" + }, + "Description": { + "description": "Description of the guardrail or its version", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s_.,-]+", + "type": "string" + }, + "SensitiveInformationPolicyConfig": { + "$ref": "#/definitions/AIGuardrailSensitiveInformationPolicyConfig" + }, + "Tags": { + "$ref": "#/definitions/Tags" + }, + "TopicPolicyConfig": { + "$ref": "#/definitions/AIGuardrailTopicPolicyConfig" + }, + "WordPolicyConfig": { + "$ref": "#/definitions/AIGuardrailWordPolicyConfig" + } + }, + "readOnlyProperties": [ + "/properties/AIGuardrailArn", + "/properties/AIGuardrailId", + "/properties/AssistantArn" + ], + "required": [ + "AssistantId", + "BlockedInputMessaging", + "BlockedOutputsMessaging" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "wisdom:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Wisdom::AIGuardrail" +} diff --git a/src/schema/aws-wisdom-aiguardrailversion.json b/src/schema/aws-wisdom-aiguardrailversion.json new file mode 100644 index 00000000..65bc22ac --- /dev/null +++ b/src/schema/aws-wisdom-aiguardrailversion.json @@ -0,0 +1,110 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/AIGuardrailArn", + "/properties/AssistantArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AssistantId", + "/properties/AIGuardrailId", + "/properties/ModifiedTimeSeconds" + ], + "definitions": {}, + "description": "Definition of AWS::Wisdom::AIGuardrailVersion Resource Type", + "handlers": { + "create": { + "permissions": [ + "wisdom:CreateAIGuardrailVersion" + ] + }, + "delete": { + "permissions": [ + "wisdom:DeleteAIGuardrailVersion" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "AIGuardrailId": { + "$ref": "resource-schema.json#/properties/AIGuardrailId" + }, + "AssistantId": { + "$ref": "resource-schema.json#/properties/AssistantId" + } + }, + "required": [ + "AssistantId", + "AIGuardrailId" + ] + }, + "permissions": [ + "wisdom:ListAIGuardrailVersions" + ] + }, + "read": { + "permissions": [ + "wisdom:GetAIGuardrail", + "wisdom:GetAIGuardrailVersion" + ] + }, + "update": { + "permissions": [ + "wisdom:GetAIGuardrail", + "wisdom:GetAIGuardrailVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/AssistantId", + "/properties/AIGuardrailId", + "/properties/VersionNumber" + ], + "properties": { + "AIGuardrailArn": { + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$", + "type": "string" + }, + "AIGuardrailId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + }, + "AIGuardrailVersionId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$", + "type": "string" + }, + "AssistantArn": { + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$", + "type": "string" + }, + "AssistantId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + }, + "ModifiedTimeSeconds": { + "type": "number" + }, + "VersionNumber": { + "type": "number" + } + }, + "readOnlyProperties": [ + "/properties/AIGuardrailVersionId", + "/properties/AIGuardrailArn", + "/properties/AssistantArn", + "/properties/VersionNumber" + ], + "required": [ + "AssistantId", + "AIGuardrailId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Wisdom::AIGuardrailVersion" +} diff --git a/src/schema/aws-wisdom-aiprompt.json b/src/schema/aws-wisdom-aiprompt.json index cf76ccc2..95956fe8 100644 --- a/src/schema/aws-wisdom-aiprompt.json +++ b/src/schema/aws-wisdom-aiprompt.json @@ -1,145 +1,209 @@ { - "typeName" : "AWS::Wisdom::AIPrompt", - "description" : "Definition of AWS::Wisdom::AIPrompt Resource Type", - "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "definitions" : { - "AIPromptAPIFormat" : { - "type" : "string", - "enum" : [ "ANTHROPIC_CLAUDE_MESSAGES", "ANTHROPIC_CLAUDE_TEXT_COMPLETIONS" ] - }, - "AIPromptTemplateConfiguration" : { - "type" : "object", - "oneOf" : [ { - "type" : "object", - "title" : "TextFullAIPromptEditTemplateConfiguration", - "properties" : { - "TextFullAIPromptEditTemplateConfiguration" : { - "$ref" : "#/definitions/TextFullAIPromptEditTemplateConfiguration" - } - }, - "required" : [ "TextFullAIPromptEditTemplateConfiguration" ], - "additionalProperties" : false - } ] - }, - "AIPromptTemplateType" : { - "type" : "string", - "enum" : [ "TEXT" ] - }, - "AIPromptType" : { - "type" : "string", - "enum" : [ "ANSWER_GENERATION", "INTENT_LABELING_GENERATION", "QUERY_REFORMULATION" ] - }, - "Tags" : { - "type" : "object", - "patternProperties" : { - "^(?!aws:)[a-zA-Z+-=._:/]+$" : { - "type" : "string", - "maxLength" : 256, - "minLength" : 1 + "additionalIdentifiers": [ + [ + "/properties/AIPromptArn", + "/properties/AssistantArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApiFormat", + "/properties/AssistantId", + "/properties/ModelId", + "/properties/Name", + "/properties/Tags", + "/properties/TemplateType", + "/properties/Type" + ], + "definitions": { + "AIPromptAPIFormat": { + "enum": [ + "ANTHROPIC_CLAUDE_MESSAGES", + "ANTHROPIC_CLAUDE_TEXT_COMPLETIONS", + "MESSAGES", + "TEXT_COMPLETIONS" + ], + "type": "string" + }, + "AIPromptTemplateConfiguration": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "TextFullAIPromptEditTemplateConfiguration": { + "$ref": "#/definitions/TextFullAIPromptEditTemplateConfiguration" + } + }, + "required": [ + "TextFullAIPromptEditTemplateConfiguration" + ], + "title": "TextFullAIPromptEditTemplateConfiguration", + "type": "object" + } + ], + "type": "object" + }, + "AIPromptTemplateType": { + "enum": [ + "TEXT" + ], + "type": "string" + }, + "AIPromptType": { + "enum": [ + "ANSWER_GENERATION", + "INTENT_LABELING_GENERATION", + "QUERY_REFORMULATION", + "SELF_SERVICE_PRE_PROCESSING", + "SELF_SERVICE_ANSWER_GENERATION" + ], + "type": "string" + }, + "Tags": { + "additionalProperties": false, + "patternProperties": { + "^(?!aws:)[a-zA-Z+-=._:/]+$": { + "maxLength": 256, + "minLength": 1, + "type": "string" } }, - "additionalProperties" : false - }, - "TextFullAIPromptEditTemplateConfiguration" : { - "type" : "object", - "properties" : { - "Text" : { - "type" : "string", - "maxLength" : 200000, - "minLength" : 1 + "type": "object" + }, + "TextFullAIPromptEditTemplateConfiguration": { + "additionalProperties": false, + "properties": { + "Text": { + "maxLength": 200000, + "minLength": 1, + "type": "string" } }, - "required" : [ "Text" ], - "additionalProperties" : false + "required": [ + "Text" + ], + "type": "object" } }, - "properties" : { - "AIPromptId" : { - "type" : "string", - "pattern" : "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$|^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}(:[A-Z0-9_$]+){0,1}$" - }, - "AIPromptArn" : { - "type" : "string", - "pattern" : "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$" - }, - "ApiFormat" : { - "$ref" : "#/definitions/AIPromptAPIFormat" - }, - "AssistantId" : { - "type" : "string", - "pattern" : "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$|^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$" - }, - "AssistantArn" : { - "type" : "string", - "pattern" : "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$" - }, - "Description" : { - "type" : "string", - "maxLength" : 255, - "minLength" : 1, - "pattern" : "^[a-zA-Z0-9\\s_.,-]+" - }, - "ModelId" : { - "type" : "string", - "maxLength" : 2048, - "minLength" : 1 - }, - "Name" : { - "type" : "string", - "maxLength" : 255, - "minLength" : 1, - "pattern" : "^[a-zA-Z0-9\\s_.,-]+" - }, - "Tags" : { - "$ref" : "#/definitions/Tags" - }, - "TemplateConfiguration" : { - "$ref" : "#/definitions/AIPromptTemplateConfiguration" - }, - "TemplateType" : { - "$ref" : "#/definitions/AIPromptTemplateType" - }, - "Type" : { - "$ref" : "#/definitions/AIPromptType" - } - }, - "required" : [ "ApiFormat", "ModelId", "TemplateConfiguration", "TemplateType", "Type" ], - "readOnlyProperties" : [ "/properties/AIPromptArn", "/properties/AIPromptId", "/properties/AssistantArn" ], - "createOnlyProperties" : [ "/properties/ApiFormat", "/properties/AssistantId", "/properties/ModelId", "/properties/Name", "/properties/Tags", "/properties/TemplateType", "/properties/Type" ], - "primaryIdentifier" : [ "/properties/AIPromptId", "/properties/AssistantId" ], - "additionalIdentifiers" : [ [ "/properties/AIPromptArn", "/properties/AssistantArn" ] ], - "tagging" : { - "taggable" : true, - "tagOnCreate" : true, - "tagUpdatable" : false, - "cloudFormationSystemTags" : false, - "tagProperty" : "/properties/Tags", - "permissions" : [ "wisdom:TagResource" ] - }, - "handlers" : { - "create" : { - "permissions" : [ "wisdom:CreateAIPrompt", "wisdom:TagResource" ] - }, - "read" : { - "permissions" : [ "wisdom:GetAIPrompt" ] - }, - "update" : { - "permissions" : [ "wisdom:UpdateAIPrompt" ] - }, - "delete" : { - "permissions" : [ "wisdom:DeleteAIPrompt" ] - }, - "list" : { - "permissions" : [ "wisdom:ListAIPrompts" ], - "handlerSchema" : { - "properties" : { - "AssistantId" : { - "$ref" : "resource-schema.json#/properties/AssistantId" + "description": "Definition of AWS::Wisdom::AIPrompt Resource Type", + "handlers": { + "create": { + "permissions": [ + "wisdom:CreateAIPrompt", + "wisdom:TagResource" + ] + }, + "delete": { + "permissions": [ + "wisdom:DeleteAIPrompt" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "AssistantId": { + "$ref": "resource-schema.json#/properties/AssistantId" } }, - "required" : [ "AssistantId" ] - } + "required": [ + "AssistantId" + ] + }, + "permissions": [ + "wisdom:ListAIPrompts" + ] + }, + "read": { + "permissions": [ + "wisdom:GetAIPrompt" + ] + }, + "update": { + "permissions": [ + "wisdom:UpdateAIPrompt" + ] } }, - "additionalProperties" : false -} \ No newline at end of file + "primaryIdentifier": [ + "/properties/AIPromptId", + "/properties/AssistantId" + ], + "properties": { + "AIPromptArn": { + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$", + "type": "string" + }, + "AIPromptId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$|^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}(:[A-Z0-9_$]+){0,1}$", + "type": "string" + }, + "ApiFormat": { + "$ref": "#/definitions/AIPromptAPIFormat" + }, + "AssistantArn": { + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$", + "type": "string" + }, + "AssistantId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$|^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$", + "type": "string" + }, + "Description": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s_.,-]+", + "type": "string" + }, + "ModelId": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "ModifiedTimeSeconds": { + "type": "number" + }, + "Name": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\s_.,-]+", + "type": "string" + }, + "Tags": { + "$ref": "#/definitions/Tags" + }, + "TemplateConfiguration": { + "$ref": "#/definitions/AIPromptTemplateConfiguration" + }, + "TemplateType": { + "$ref": "#/definitions/AIPromptTemplateType" + }, + "Type": { + "$ref": "#/definitions/AIPromptType" + } + }, + "readOnlyProperties": [ + "/properties/AIPromptArn", + "/properties/AIPromptId", + "/properties/AssistantArn", + "/properties/ModifiedTimeSeconds" + ], + "required": [ + "ApiFormat", + "ModelId", + "TemplateConfiguration", + "TemplateType", + "Type" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "wisdom:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Wisdom::AIPrompt" +} diff --git a/src/schema/aws-wisdom-aipromptversion.json b/src/schema/aws-wisdom-aipromptversion.json index b798543f..329c2d20 100644 --- a/src/schema/aws-wisdom-aipromptversion.json +++ b/src/schema/aws-wisdom-aipromptversion.json @@ -1,74 +1,110 @@ { - "typeName" : "AWS::Wisdom::AIPromptVersion", - "description" : "Definition of AWS::Wisdom::AIPromptVersion Resource Type", - "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "definitions" : { }, - "properties" : { - "AIPromptArn" : { - "type" : "string", - "pattern" : "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$" + "additionalIdentifiers": [ + [ + "/properties/AIPromptArn", + "/properties/AssistantArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AssistantId", + "/properties/AIPromptId", + "/properties/ModifiedTimeSeconds" + ], + "definitions": {}, + "description": "Definition of AWS::Wisdom::AIPromptVersion Resource Type", + "handlers": { + "create": { + "permissions": [ + "wisdom:CreateAIPromptVersion" + ] }, - "AssistantArn" : { - "type" : "string", - "pattern" : "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$" + "delete": { + "permissions": [ + "wisdom:DeleteAIPromptVersion" + ] }, - "AIPromptId" : { - "type" : "string", - "pattern" : "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$" - }, - "AssistantId" : { - "type" : "string", - "pattern" : "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$" - }, - "AIPromptVersionId" : { - "type" : "string", - "pattern" : "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$" + "list": { + "handlerSchema": { + "properties": { + "AIPromptId": { + "$ref": "resource-schema.json#/properties/AIPromptId" + }, + "AssistantId": { + "$ref": "resource-schema.json#/properties/AssistantId" + } + }, + "required": [ + "AssistantId", + "AIPromptId" + ] + }, + "permissions": [ + "wisdom:ListAIPromptVersions" + ] }, - "VersionNumber" : { - "type" : "number" + "read": { + "permissions": [ + "wisdom:GetAIPrompt", + "wisdom:GetAIPromptVersion" + ] }, - "ModifiedTimeSeconds" : { - "type" : "number" + "update": { + "permissions": [ + "wisdom:GetAIPrompt", + "wisdom:GetAIPromptVersion" + ] } }, - "additionalProperties" : false, - "tagging" : { - "taggable" : false, - "tagOnCreate" : false, - "tagUpdatable" : false, - "cloudFormationSystemTags" : false - }, - "required" : [ "AssistantId", "AIPromptId" ], - "createOnlyProperties" : [ "/properties/AssistantId", "/properties/AIPromptId", "/properties/ModifiedTimeSeconds" ], - "readOnlyProperties" : [ "/properties/AIPromptArn", "/properties/AIPromptVersionId", "/properties/AssistantArn", "/properties/VersionNumber" ], - "primaryIdentifier" : [ "/properties/AssistantId", "/properties/AIPromptId", "/properties/VersionNumber" ], - "additionalIdentifiers" : [ [ "/properties/AIPromptArn", "/properties/AssistantArn" ] ], - "handlers" : { - "create" : { - "permissions" : [ "wisdom:CreateAIPromptVersion" ] + "primaryIdentifier": [ + "/properties/AssistantId", + "/properties/AIPromptId", + "/properties/VersionNumber" + ], + "properties": { + "AIPromptArn": { + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$", + "type": "string" }, - "read" : { - "permissions" : [ "wisdom:GetAIPrompt", "wisdom:GetAIPromptVersion" ] + "AIPromptId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" }, - "update" : { - "permissions" : [ "wisdom:GetAIPrompt", "wisdom:GetAIPromptVersion" ] + "AIPromptVersionId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(:[A-Z0-9_$]+){0,1}$", + "type": "string" }, - "delete" : { - "permissions" : [ "wisdom:DeleteAIPromptVersion" ] + "AssistantArn": { + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$", + "type": "string" }, - "list" : { - "permissions" : [ "wisdom:ListAIPromptVersions" ], - "handlerSchema" : { - "properties" : { - "AssistantId" : { - "$ref" : "resource-schema.json#/properties/AssistantId" - }, - "AIPromptId" : { - "$ref" : "resource-schema.json#/properties/AIPromptId" - } - }, - "required" : [ "AssistantId", "AIPromptId" ] - } + "AssistantId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + }, + "ModifiedTimeSeconds": { + "type": "number" + }, + "VersionNumber": { + "type": "number" } - } -} \ No newline at end of file + }, + "readOnlyProperties": [ + "/properties/AIPromptArn", + "/properties/AIPromptVersionId", + "/properties/AssistantArn", + "/properties/VersionNumber" + ], + "required": [ + "AssistantId", + "AIPromptId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Wisdom::AIPromptVersion" +} diff --git a/src/schema/aws-wisdom-assistant.json b/src/schema/aws-wisdom-assistant.json index b838b26d..7bc50f9f 100644 --- a/src/schema/aws-wisdom-assistant.json +++ b/src/schema/aws-wisdom-assistant.json @@ -1,134 +1,143 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/AssistantArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Description", - "/properties/Name", - "/properties/ServerSideEncryptionConfiguration", - "/properties/Tags", - "/properties/Type" - ], - "definitions": { - "AssistantType": { - "enum": [ - "AGENT" - ], - "type": "string" - }, - "ServerSideEncryptionConfiguration": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::Wisdom::Assistant Resource Type", - "handlers": { - "create": { - "permissions": [ - "kms:CreateGrant", - "kms:DescribeKey", - "wisdom:CreateAssistant", - "wisdom:TagResource" - ] - }, - "delete": { - "permissions": [ - "wisdom:DeleteAssistant" - ] - }, - "list": { - "permissions": [ - "wisdom:ListAssistants" - ] - }, - "read": { - "permissions": [ - "wisdom:GetAssistant" - ] - }, - "update": { - "permissions": [ - "wisdom:GetAssistant" - ] - } - }, - "primaryIdentifier": [ - "/properties/AssistantId" - ], - "properties": { - "AssistantArn": { - "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$", - "type": "string" - }, - "AssistantId": { - "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", - "type": "string" - }, - "Description": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "Name": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "ServerSideEncryptionConfiguration": { - "$ref": "#/definitions/ServerSideEncryptionConfiguration" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "$ref": "#/definitions/AssistantType" - } - }, - "readOnlyProperties": [ - "/properties/AssistantId", - "/properties/AssistantArn" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "Name", - "Type" - ], - "taggable": false, - "typeName": "AWS::Wisdom::Assistant" -} +{ + "additionalIdentifiers": [ + [ + "/properties/AssistantArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description", + "/properties/Name", + "/properties/ServerSideEncryptionConfiguration", + "/properties/Tags", + "/properties/Type" + ], + "definitions": { + "AssistantType": { + "enum": [ + "AGENT" + ], + "type": "string" + }, + "ServerSideEncryptionConfiguration": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Wisdom::Assistant Resource Type", + "handlers": { + "create": { + "permissions": [ + "kms:CreateGrant", + "kms:DescribeKey", + "wisdom:CreateAssistant", + "wisdom:TagResource" + ] + }, + "delete": { + "permissions": [ + "wisdom:DeleteAssistant" + ] + }, + "list": { + "permissions": [ + "wisdom:ListAssistants" + ] + }, + "read": { + "permissions": [ + "wisdom:GetAssistant" + ] + }, + "update": { + "permissions": [ + "wisdom:GetAssistant" + ] + } + }, + "primaryIdentifier": [ + "/properties/AssistantId" + ], + "properties": { + "AssistantArn": { + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$", + "type": "string" + }, + "AssistantId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + }, + "Description": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "ServerSideEncryptionConfiguration": { + "$ref": "#/definitions/ServerSideEncryptionConfiguration" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "Type": { + "$ref": "#/definitions/AssistantType" + } + }, + "readOnlyProperties": [ + "/properties/AssistantId", + "/properties/AssistantArn" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "Name", + "Type" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "wisdom:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Wisdom::Assistant" +} diff --git a/src/schema/aws-wisdom-assistantassociation.json b/src/schema/aws-wisdom-assistantassociation.json index ed6fcef3..c2664fd3 100644 --- a/src/schema/aws-wisdom-assistantassociation.json +++ b/src/schema/aws-wisdom-assistantassociation.json @@ -1,146 +1,155 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/AssistantAssociationArn", - "/properties/AssistantArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Association", - "/properties/AssociationType", - "/properties/AssistantId", - "/properties/Tags" - ], - "definitions": { - "AssociationData": { - "additionalProperties": false, - "properties": { - "KnowledgeBaseId": { - "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", - "type": "string" - } - }, - "required": [ - "KnowledgeBaseId" - ], - "type": "object" - }, - "AssociationType": { - "enum": [ - "KNOWLEDGE_BASE" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::Wisdom::AssistantAssociation Resource Type", - "handlers": { - "create": { - "permissions": [ - "wisdom:CreateAssistantAssociation", - "wisdom:TagResource" - ] - }, - "delete": { - "permissions": [ - "wisdom:DeleteAssistantAssociation" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "AssistantId": { - "$ref": "resource-schema.json#/properties/AssistantId" - } - }, - "required": [ - "AssistantId" - ] - }, - "permissions": [ - "wisdom:ListAssistantAssociations" - ] - }, - "read": { - "permissions": [ - "wisdom:GetAssistantAssociation" - ] - }, - "update": { - "permissions": [ - "wisdom:GetAssistantAssociation" - ] - } - }, - "primaryIdentifier": [ - "/properties/AssistantAssociationId", - "/properties/AssistantId" - ], - "properties": { - "AssistantArn": { - "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$", - "type": "string" - }, - "AssistantAssociationArn": { - "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$", - "type": "string" - }, - "AssistantAssociationId": { - "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", - "type": "string" - }, - "AssistantId": { - "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", - "type": "string" - }, - "Association": { - "$ref": "#/definitions/AssociationData" - }, - "AssociationType": { - "$ref": "#/definitions/AssociationType" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/AssistantAssociationId", - "/properties/AssistantAssociationArn", - "/properties/AssistantArn" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "Association", - "AssociationType", - "AssistantId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk", - "taggable": false, - "typeName": "AWS::Wisdom::AssistantAssociation" -} +{ + "additionalIdentifiers": [ + [ + "/properties/AssistantAssociationArn", + "/properties/AssistantArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Association", + "/properties/AssociationType", + "/properties/AssistantId", + "/properties/Tags" + ], + "definitions": { + "AssociationData": { + "additionalProperties": false, + "properties": { + "KnowledgeBaseId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + } + }, + "required": [ + "KnowledgeBaseId" + ], + "type": "object" + }, + "AssociationType": { + "enum": [ + "KNOWLEDGE_BASE" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Wisdom::AssistantAssociation Resource Type", + "handlers": { + "create": { + "permissions": [ + "wisdom:CreateAssistantAssociation", + "wisdom:TagResource" + ] + }, + "delete": { + "permissions": [ + "wisdom:DeleteAssistantAssociation" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "AssistantId": { + "$ref": "resource-schema.json#/properties/AssistantId" + } + }, + "required": [ + "AssistantId" + ] + }, + "permissions": [ + "wisdom:ListAssistantAssociations" + ] + }, + "read": { + "permissions": [ + "wisdom:GetAssistantAssociation" + ] + }, + "update": { + "permissions": [ + "wisdom:GetAssistantAssociation" + ] + } + }, + "primaryIdentifier": [ + "/properties/AssistantAssociationId", + "/properties/AssistantId" + ], + "properties": { + "AssistantArn": { + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$", + "type": "string" + }, + "AssistantAssociationArn": { + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$", + "type": "string" + }, + "AssistantAssociationId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + }, + "AssistantId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + }, + "Association": { + "$ref": "#/definitions/AssociationData" + }, + "AssociationType": { + "$ref": "#/definitions/AssociationType" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/AssistantAssociationId", + "/properties/AssistantAssociationArn", + "/properties/AssistantArn" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "Association", + "AssociationType", + "AssistantId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "wisdom:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Wisdom::AssistantAssociation" +} diff --git a/src/schema/aws-wisdom-knowledgebase.json b/src/schema/aws-wisdom-knowledgebase.json index bb88daf4..6714482b 100644 --- a/src/schema/aws-wisdom-knowledgebase.json +++ b/src/schema/aws-wisdom-knowledgebase.json @@ -1,207 +1,480 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/KnowledgeBaseArn" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Description", - "/properties/KnowledgeBaseType", - "/properties/Name", - "/properties/ServerSideEncryptionConfiguration", - "/properties/SourceConfiguration", - "/properties/Tags" - ], - "definitions": { - "AppIntegrationsConfiguration": { - "additionalProperties": false, - "properties": { - "AppIntegrationArn": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:[a-z-]+?:[a-z-]+?:[a-z0-9-]*?:([0-9]{12})?:[a-zA-Z0-9-:/]+$", - "type": "string" - }, - "ObjectFields": { - "insertionOrder": false, - "items": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "AppIntegrationArn" - ], - "type": "object" - }, - "KnowledgeBaseType": { - "enum": [ - "EXTERNAL", - "CUSTOM", - "MESSAGE_TEMPLATES" - ], - "type": "string" - }, - "RenderingConfiguration": { - "additionalProperties": false, - "properties": { - "TemplateUri": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "ServerSideEncryptionConfiguration": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "SourceConfiguration": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "AppIntegrations" - ] - } - ], - "properties": { - "AppIntegrations": { - "$ref": "#/definitions/AppIntegrationsConfiguration" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::Wisdom::KnowledgeBase Resource Type", - "handlers": { - "create": { - "permissions": [ - "appflow:CreateFlow", - "appflow:DeleteFlow", - "appflow:StartFlow", - "appflow:TagResource", - "appflow:UseConnectorProfile", - "app-integrations:CreateDataIntegrationAssociation", - "app-integrations:GetDataIntegration", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:ListGrants", - "wisdom:CreateKnowledgeBase", - "wisdom:TagResource" - ] - }, - "delete": { - "permissions": [ - "appflow:DeleteFlow", - "appflow:StopFlow", - "app-integrations:DeleteDataIntegrationAssociation", - "wisdom:DeleteKnowledgeBase" - ] - }, - "list": { - "permissions": [ - "wisdom:ListKnowledgeBases" - ] - }, - "read": { - "permissions": [ - "wisdom:GetKnowledgeBase" - ] - }, - "update": { - "permissions": [ - "wisdom:GetKnowledgeBase" - ] - } - }, - "primaryIdentifier": [ - "/properties/KnowledgeBaseId" - ], - "properties": { - "Description": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "KnowledgeBaseArn": { - "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$", - "type": "string" - }, - "KnowledgeBaseId": { - "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", - "type": "string" - }, - "KnowledgeBaseType": { - "$ref": "#/definitions/KnowledgeBaseType" - }, - "Name": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "RenderingConfiguration": { - "$ref": "#/definitions/RenderingConfiguration" - }, - "ServerSideEncryptionConfiguration": { - "$ref": "#/definitions/ServerSideEncryptionConfiguration" - }, - "SourceConfiguration": { - "$ref": "#/definitions/SourceConfiguration" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/KnowledgeBaseId", - "/properties/KnowledgeBaseArn" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "KnowledgeBaseType", - "Name" - ], - "taggable": false, - "typeName": "AWS::Wisdom::KnowledgeBase" -} +{ + "additionalIdentifiers": [ + [ + "/properties/KnowledgeBaseArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description", + "/properties/KnowledgeBaseType", + "/properties/Name", + "/properties/ServerSideEncryptionConfiguration", + "/properties/SourceConfiguration", + "/properties/Tags" + ], + "definitions": { + "AppIntegrationsConfiguration": { + "additionalProperties": false, + "properties": { + "AppIntegrationArn": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:[a-z-]+?:[a-z-]+?:[a-z0-9-]*?:([0-9]{12})?:[a-zA-Z0-9-:/]+$", + "type": "string" + }, + "ObjectFields": { + "insertionOrder": false, + "items": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "AppIntegrationArn" + ], + "type": "object" + }, + "BedrockFoundationModelConfiguration": { + "additionalProperties": false, + "properties": { + "ModelArn": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}::foundation-model\\/anthropic.claude-3-haiku-20240307-v1:0$", + "type": "string" + }, + "ParsingPrompt": { + "additionalProperties": false, + "properties": { + "ParsingPromptText": { + "maxLength": 10000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ParsingPromptText" + ], + "type": "object" + } + }, + "required": [ + "ModelArn" + ], + "type": "object" + }, + "FixedSizeChunkingConfiguration": { + "additionalProperties": false, + "properties": { + "MaxTokens": { + "minimum": 1, + "type": "number" + }, + "OverlapPercentage": { + "maximum": 99, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "MaxTokens", + "OverlapPercentage" + ], + "type": "object" + }, + "HierarchicalChunkingConfiguration": { + "additionalProperties": false, + "properties": { + "LevelConfigurations": { + "items": { + "$ref": "#/definitions/HierarchicalChunkingLevelConfiguration" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + "OverlapTokens": { + "minimum": 1, + "type": "number" + } + }, + "required": [ + "LevelConfigurations", + "OverlapTokens" + ], + "type": "object" + }, + "HierarchicalChunkingLevelConfiguration": { + "additionalProperties": false, + "properties": { + "MaxTokens": { + "maximum": 8192, + "minimum": 1, + "type": "number" + } + }, + "required": [ + "MaxTokens" + ], + "type": "object" + }, + "KnowledgeBaseType": { + "enum": [ + "EXTERNAL", + "CUSTOM", + "MESSAGE_TEMPLATES", + "MANAGED" + ], + "type": "string" + }, + "ManagedSourceConfiguration": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "WebCrawlerConfiguration": { + "$ref": "#/definitions/WebCrawlerConfiguration" + } + }, + "required": [ + "WebCrawlerConfiguration" + ], + "type": "object" + } + ] + }, + "RenderingConfiguration": { + "additionalProperties": false, + "properties": { + "TemplateUri": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SeedUrl": { + "additionalProperties": false, + "properties": { + "Url": { + "pattern": "^https?://[A-Za-z0-9][^\\s]*$", + "type": "string" + } + }, + "type": "object" + }, + "SemanticChunkingConfiguration": { + "additionalProperties": false, + "properties": { + "BreakpointPercentileThreshold": { + "maximum": 99, + "minimum": 50, + "type": "number" + }, + "BufferSize": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "MaxTokens": { + "minimum": 1, + "type": "number" + } + }, + "required": [ + "MaxTokens", + "BufferSize", + "BreakpointPercentileThreshold" + ], + "type": "object" + }, + "ServerSideEncryptionConfiguration": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SourceConfiguration": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "AppIntegrations": { + "$ref": "#/definitions/AppIntegrationsConfiguration" + } + }, + "required": [ + "AppIntegrations" + ], + "title": "AppIntegrationsConfiguration", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "ManagedSourceConfiguration": { + "$ref": "#/definitions/ManagedSourceConfiguration" + } + }, + "required": [ + "ManagedSourceConfiguration" + ], + "title": "ManagedSourceConfiguration", + "type": "object" + } + ] + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UrlFilterList": { + "items": { + "$ref": "#/definitions/UrlFilterPattern" + }, + "maxItems": 25, + "minItems": 1, + "type": "array" + }, + "UrlFilterPattern": { + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "VectorIngestionConfiguration": { + "additionalProperties": false, + "properties": { + "ChunkingConfiguration": { + "additionalProperties": false, + "properties": { + "ChunkingStrategy": { + "enum": [ + "FIXED_SIZE", + "NONE", + "HIERARCHICAL", + "SEMANTIC" + ], + "type": "string" + }, + "FixedSizeChunkingConfiguration": { + "$ref": "#/definitions/FixedSizeChunkingConfiguration" + }, + "HierarchicalChunkingConfiguration": { + "$ref": "#/definitions/HierarchicalChunkingConfiguration" + }, + "SemanticChunkingConfiguration": { + "$ref": "#/definitions/SemanticChunkingConfiguration" + } + }, + "required": [ + "ChunkingStrategy" + ], + "type": "object" + }, + "ParsingConfiguration": { + "additionalProperties": false, + "properties": { + "BedrockFoundationModelConfiguration": { + "$ref": "#/definitions/BedrockFoundationModelConfiguration" + }, + "ParsingStrategy": { + "enum": [ + "BEDROCK_FOUNDATION_MODEL" + ], + "type": "string" + } + }, + "required": [ + "ParsingStrategy" + ], + "type": "object" + } + }, + "type": "object" + }, + "WebCrawlerConfiguration": { + "additionalProperties": false, + "properties": { + "CrawlerLimits": { + "additionalProperties": false, + "properties": { + "RateLimit": { + "maximum": 3000, + "minimum": 1, + "type": "number" + } + }, + "type": "object" + }, + "ExclusionFilters": { + "$ref": "#/definitions/UrlFilterList" + }, + "InclusionFilters": { + "$ref": "#/definitions/UrlFilterList" + }, + "Scope": { + "enum": [ + "HOST_ONLY", + "SUBDOMAINS" + ], + "type": "string" + }, + "UrlConfiguration": { + "additionalProperties": false, + "properties": { + "SeedUrls": { + "items": { + "$ref": "#/definitions/SeedUrl" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + } + }, + "required": [ + "UrlConfiguration" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Wisdom::KnowledgeBase Resource Type", + "handlers": { + "create": { + "permissions": [ + "appflow:CreateFlow", + "appflow:DeleteFlow", + "appflow:StartFlow", + "appflow:TagResource", + "appflow:UseConnectorProfile", + "app-integrations:CreateDataIntegrationAssociation", + "app-integrations:GetDataIntegration", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:ListGrants", + "wisdom:CreateKnowledgeBase", + "wisdom:TagResource" + ] + }, + "delete": { + "permissions": [ + "appflow:DeleteFlow", + "appflow:StopFlow", + "app-integrations:DeleteDataIntegrationAssociation", + "wisdom:DeleteKnowledgeBase" + ] + }, + "list": { + "permissions": [ + "wisdom:ListKnowledgeBases" + ] + }, + "read": { + "permissions": [ + "wisdom:GetKnowledgeBase" + ] + }, + "update": { + "permissions": [ + "wisdom:GetKnowledgeBase" + ] + } + }, + "primaryIdentifier": [ + "/properties/KnowledgeBaseId" + ], + "properties": { + "Description": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KnowledgeBaseArn": { + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$", + "type": "string" + }, + "KnowledgeBaseId": { + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + }, + "KnowledgeBaseType": { + "$ref": "#/definitions/KnowledgeBaseType" + }, + "Name": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "RenderingConfiguration": { + "$ref": "#/definitions/RenderingConfiguration" + }, + "ServerSideEncryptionConfiguration": { + "$ref": "#/definitions/ServerSideEncryptionConfiguration" + }, + "SourceConfiguration": { + "$ref": "#/definitions/SourceConfiguration" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "VectorIngestionConfiguration": { + "$ref": "#/definitions/VectorIngestionConfiguration" + } + }, + "readOnlyProperties": [ + "/properties/KnowledgeBaseId", + "/properties/KnowledgeBaseArn" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "KnowledgeBaseType", + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "wisdom:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::Wisdom::KnowledgeBase" +} diff --git a/src/schema/aws-wisdom-messagetemplate.json b/src/schema/aws-wisdom-messagetemplate.json new file mode 100644 index 00000000..1eff4f0e --- /dev/null +++ b/src/schema/aws-wisdom-messagetemplate.json @@ -0,0 +1,777 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KnowledgeBaseArn", + "/properties/ChannelSubtype" + ], + "definitions": { + "AgentAttributes": { + "additionalProperties": false, + "description": "The agent attributes that are used with the message template.", + "properties": { + "FirstName": { + "description": "The agent\u2019s first name as entered in their Amazon Connect user account.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "LastName": { + "description": "The agent\u2019s last name as entered in their Amazon Connect user account.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "ChannelSubtype": { + "description": "The channel subtype this message template applies to.", + "enum": [ + "EMAIL", + "SMS" + ], + "type": "string" + }, + "Content": { + "additionalProperties": false, + "description": "The content of the message template.", + "oneOf": [ + { + "required": [ + "EmailMessageTemplateContent" + ] + }, + { + "required": [ + "SmsMessageTemplateContent" + ] + } + ], + "properties": { + "EmailMessageTemplateContent": { + "$ref": "#/definitions/EmailMessageTemplateContent" + }, + "SmsMessageTemplateContent": { + "$ref": "#/definitions/SmsMessageTemplateContent" + } + }, + "type": "object" + }, + "CustomAttributes": { + "additionalProperties": false, + "description": "The custom attributes that are used with the message template.", + "patternProperties": { + "^[a-zA-Z0-9\\s._:/=+@-]*$": { + "description": "Value of a custom attribute.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "CustomerProfileAttributes": { + "additionalProperties": false, + "description": "The customer profile attributes that are used with the message template.", + "properties": { + "AccountNumber": { + "description": "A unique account number that you have given to the customer.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "AdditionalInformation": { + "description": "Any additional information relevant to the customer's profile.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "Address1": { + "description": "The first line of a customer address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "Address2": { + "description": "The second line of a customer address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "Address3": { + "description": "The third line of a customer address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "Address4": { + "description": "The fourth line of a customer address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "BillingAddress1": { + "description": "The first line of a customer\u2019s billing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "BillingAddress2": { + "description": "The second line of a customer\u2019s billing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "BillingAddress3": { + "description": "The third line of a customer\u2019s billing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "BillingAddress4": { + "description": "The fourth line of a customer\u2019s billing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "BillingCity": { + "description": "The city of a customer\u2019s billing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "BillingCountry": { + "description": "The country of a customer\u2019s billing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "BillingCounty": { + "description": "The county of a customer\u2019s billing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "BillingPostalCode": { + "description": "The postal code of a customer\u2019s billing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "BillingProvince": { + "description": "The province of a customer\u2019s billing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "BillingState": { + "description": "The state of a customer\u2019s billing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "BirthDate": { + "description": "The customer's birth date.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "BusinessEmailAddress": { + "description": "The customer's business email address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "BusinessName": { + "description": "The name of the customer's business.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "BusinessPhoneNumber": { + "description": "The customer's business phone number.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "City": { + "description": "The city in which a customer lives.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "Country": { + "description": "The country in which a customer lives.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "County": { + "description": "The county in which a customer lives.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "Custom": { + "$ref": "#/definitions/CustomAttributes" + }, + "EmailAddress": { + "description": "The customer's email address, which has not been specified as a personal or business address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "FirstName": { + "description": "The customer's first name.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "Gender": { + "description": "The customer's gender.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "HomePhoneNumber": { + "description": "The customer's home phone number.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "LastName": { + "description": "The customer's last name.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "MailingAddress1": { + "description": "The first line of a customer\u2019s mailing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "MailingAddress2": { + "description": "The second line of a customer\u2019s mailing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "MailingAddress3": { + "description": "The third line of a customer\u2019s mailing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "MailingAddress4": { + "description": "The fourth line of a customer\u2019s mailing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "MailingCity": { + "description": "The city of a customer\u2019s mailing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "MailingCountry": { + "description": "The country of a customer\u2019s mailing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "MailingCounty": { + "description": "The county of a customer\u2019s mailing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "MailingPostalCode": { + "description": "The postal code of a customer\u2019s mailing address", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "MailingProvince": { + "description": "The province of a customer\u2019s mailing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "MailingState": { + "description": "The state of a customer\u2019s mailing address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "MiddleName": { + "description": "The customer's middle name.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "MobilePhoneNumber": { + "description": "The customer's mobile phone number.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "PartyType": { + "description": "The customer's party type.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "PhoneNumber": { + "description": "The customer's phone number, which has not been specified as a mobile, home, or business number.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "PostalCode": { + "description": "The postal code of a customer address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "ProfileARN": { + "description": "The ARN of a customer profile.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "ProfileId": { + "description": "The unique identifier of a customer profile.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "Province": { + "description": "The province in which a customer lives.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "ShippingAddress1": { + "description": "The first line of a customer\u2019s shipping address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "ShippingAddress2": { + "description": "The second line of a customer\u2019s shipping address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "ShippingAddress3": { + "description": "The third line of a customer\u2019s shipping address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "ShippingAddress4": { + "description": "The fourth line of a customer\u2019s shipping address", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "ShippingCity": { + "description": "The city of a customer\u2019s shipping address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "ShippingCountry": { + "description": "The country of a customer\u2019s shipping address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "ShippingCounty": { + "description": "The county of a customer\u2019s shipping address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "ShippingPostalCode": { + "description": "The postal code of a customer\u2019s shipping address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "ShippingProvince": { + "description": "The province of a customer\u2019s shipping address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "ShippingState": { + "description": "The state of a customer\u2019s shipping address.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "State": { + "description": "The state in which a customer lives.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "EmailMessageTemplateContent": { + "additionalProperties": false, + "description": "The content of message template that applies to email channel subtype.", + "properties": { + "Body": { + "$ref": "#/definitions/EmailMessageTemplateContentBody" + }, + "Headers": { + "description": "The email headers to include in email messages.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/EmailMessageTemplateHeader" + }, + "maxItems": 15, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "Subject": { + "description": "The subject line, or title, to use in email messages.", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Subject", + "Body", + "Headers" + ], + "type": "object" + }, + "EmailMessageTemplateContentBody": { + "additionalProperties": false, + "description": "The body to use in email messages.", + "properties": { + "Html": { + "$ref": "#/definitions/MessageTemplateBodyContentProvider", + "description": "The message body, in HTML format, to use in email messages that are based on the message template. We recommend using HTML format for email clients that render HTML content. You can include links, formatted text, and more in an HTML message." + }, + "PlainText": { + "$ref": "#/definitions/MessageTemplateBodyContentProvider", + "description": "The message body, in plain text format, to use in email messages that are based on the message template. We recommend using plain text format for email clients that don't render HTML content and clients that are connected to high-latency networks, such as mobile devices." + } + }, + "type": "object" + }, + "EmailMessageTemplateHeader": { + "additionalProperties": false, + "description": "The email header to include in email messages.", + "properties": { + "Name": { + "description": "The name of the email header.", + "maxLength": 126, + "minLength": 1, + "pattern": "^[!-9;-@A-~]+$", + "type": "string" + }, + "Value": { + "description": "The value of the email header.", + "maxLength": 870, + "minLength": 1, + "pattern": "[ -~]*", + "type": "string" + } + }, + "type": "object" + }, + "GroupingConfiguration": { + "additionalProperties": false, + "description": "The configuration information of the user groups that the message template is accessible to.", + "properties": { + "Criteria": { + "description": "The criteria used for grouping Amazon Q in Connect users.", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "Values": { + "description": "The list of values that define different groups of Amazon Q in Connect users.", + "insertionOrder": true, + "items": { + "$ref": "#/definitions/GroupingValue" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Criteria", + "Values" + ], + "type": "object" + }, + "GroupingValue": { + "description": "The value that define the group of Amazon Q in Connect users.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "MessageTemplateAttributes": { + "additionalProperties": false, + "description": "An object that specifies the default values to use for variables in the message template. This object contains different categories of key-value pairs. Each key defines a variable or placeholder in the message template. The corresponding value defines the default value for that variable.", + "properties": { + "AgentAttributes": { + "$ref": "#/definitions/AgentAttributes" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributes" + }, + "CustomerProfileAttributes": { + "$ref": "#/definitions/CustomerProfileAttributes" + }, + "SystemAttributes": { + "$ref": "#/definitions/SystemAttributes" + } + }, + "type": "object" + }, + "MessageTemplateBodyContentProvider": { + "additionalProperties": false, + "description": "The container of message template body.", + "properties": { + "Content": { + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "SmsMessageTemplateContent": { + "additionalProperties": false, + "description": "The content of message template that applies to SMS channel subtype.", + "properties": { + "Body": { + "$ref": "#/definitions/SmsMessageTemplateContentBody" + } + }, + "required": [ + "Body" + ], + "type": "object" + }, + "SmsMessageTemplateContentBody": { + "additionalProperties": false, + "description": "The body to use in SMS messages.", + "properties": { + "PlainText": { + "$ref": "#/definitions/MessageTemplateBodyContentProvider" + } + }, + "type": "object" + }, + "SystemAttributes": { + "additionalProperties": false, + "description": "The system attributes that are used with the message template.", + "properties": { + "CustomerEndpoint": { + "$ref": "#/definitions/SystemEndpointAttributes", + "description": "The CustomerEndpoint attribute." + }, + "Name": { + "description": "The name of the task.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + }, + "SystemEndpoint": { + "$ref": "#/definitions/SystemEndpointAttributes", + "description": "The SystemEndpoint attribute." + } + }, + "type": "object" + }, + "SystemEndpointAttributes": { + "additionalProperties": false, + "description": "The system endpoint attributes that are used with the message template.", + "properties": { + "Address": { + "description": "The customer's phone number if used with customerEndpoint, or the number the customer dialed to call your contact center if used with systemEndpoint.", + "maxLength": 32767, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -", + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::Wisdom::MessageTemplate Resource Type", + "handlers": { + "create": { + "permissions": [ + "wisdom:CreateMessageTemplate", + "wisdom:GetMessageTemplate", + "wisdom:TagResource", + "connect:SearchRoutingProfiles", + "connect:DescribeRoutingProfile" + ] + }, + "delete": { + "permissions": [ + "wisdom:DeleteMessageTemplate", + "wisdom:UntagResource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "KnowledgeBaseArn": { + "$ref": "resource-schema.json#/properties/KnowledgeBaseArn" + } + }, + "required": [ + "KnowledgeBaseArn" + ] + }, + "permissions": [ + "wisdom:ListMessageTemplates" + ] + }, + "read": { + "permissions": [ + "wisdom:GetMessageTemplate" + ] + }, + "update": { + "permissions": [ + "wisdom:UpdateMessageTemplate", + "wisdom:UpdateMessageTemplateMetadata", + "wisdom:GetMessageTemplate", + "wisdom:TagResource", + "wisdom:UntagResource", + "connect:SearchRoutingProfiles", + "connect:DescribeRoutingProfile" + ] + } + }, + "primaryIdentifier": [ + "/properties/MessageTemplateArn" + ], + "properties": { + "ChannelSubtype": { + "$ref": "#/definitions/ChannelSubtype" + }, + "Content": { + "$ref": "#/definitions/Content" + }, + "DefaultAttributes": { + "$ref": "#/definitions/MessageTemplateAttributes" + }, + "Description": { + "description": "The description of the message template.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\\\s_.,-]+", + "type": "string" + }, + "GroupingConfiguration": { + "$ref": "#/definitions/GroupingConfiguration" + }, + "KnowledgeBaseArn": { + "description": "The Amazon Resource Name (ARN) of the knowledge base to which the message template belongs.", + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$", + "type": "string" + }, + "Language": { + "description": "The language code value for the language in which the message template is written. The supported language codes include de_DE, en_US, es_ES, fr_FR, id_ID, it_IT, ja_JP, ko_KR, pt_BR, zh_CN, zh_TW", + "maxLength": 5, + "minLength": 2, + "type": "string" + }, + "MessageTemplateArn": { + "description": "The Amazon Resource Name (ARN) of the message template.", + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$", + "type": "string" + }, + "MessageTemplateContentSha256": { + "description": "The content SHA256 of the message template.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "MessageTemplateId": { + "description": "The unique identifier of the message template.", + "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "type": "string" + }, + "Name": { + "description": "The name of the message template.", + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\\\s_.,-]+", + "type": "string" + }, + "Tags": { + "description": "The tags used to organize, track, or control access for this resource. For example, { \"tags\": {\"key1\":\"value1\", \"key2\":\"value2\"} }.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/MessageTemplateId", + "/properties/MessageTemplateArn", + "/properties/MessageTemplateContentSha256" + ], + "replacementStrategy": "create_then_delete", + "required": [ + "KnowledgeBaseArn", + "ChannelSubtype", + "Name", + "Content" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-wisdom", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "wisdom:TagResource", + "wisdom:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Wisdom::MessageTemplate" +} diff --git a/src/schema/aws-wisdom-messagetemplateversion.json b/src/schema/aws-wisdom-messagetemplateversion.json new file mode 100644 index 00000000..6665e537 --- /dev/null +++ b/src/schema/aws-wisdom-messagetemplateversion.json @@ -0,0 +1,85 @@ +{ + "additionalProperties": false, + "conditionalCreateOnlyProperties": [ + "/properties/MessageTemplateContentSha256" + ], + "createOnlyProperties": [ + "/properties/MessageTemplateArn" + ], + "description": "A version for the specified customer-managed message template within the specified knowledge base.", + "handlers": { + "create": { + "permissions": [ + "wisdom:CreateMessageTemplateVersion", + "wisdom:ListMessageTemplateVersions" + ] + }, + "delete": { + "permissions": [ + "wisdom:DeleteMessageTemplate" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "MessageTemplateArn": { + "$ref": "resource-schema.json#/properties/MessageTemplateArn" + } + }, + "required": [ + "MessageTemplateArn" + ] + }, + "permissions": [ + "wisdom:ListMessageTemplateVersions" + ] + }, + "read": { + "permissions": [ + "wisdom:GetMessageTemplate" + ] + }, + "update": { + "permissions": [ + "wisdom:CreateMessageTemplateVersion" + ] + } + }, + "primaryIdentifier": [ + "/properties/MessageTemplateVersionArn" + ], + "properties": { + "MessageTemplateArn": { + "description": "The unqualified Amazon Resource Name (ARN) of the message template.", + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})?$", + "type": "string" + }, + "MessageTemplateContentSha256": { + "description": "The content SHA256 of the message template.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "MessageTemplateVersionArn": { + "description": "The unqualified Amazon Resource Name (ARN) of the message template version.", + "pattern": "^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}):[0-9]+?$", + "type": "string" + }, + "MessageTemplateVersionNumber": { + "description": "Current version number of the message template.", + "type": "number" + } + }, + "readOnlyProperties": [ + "/properties/MessageTemplateVersionNumber", + "/properties/MessageTemplateVersionArn" + ], + "required": [ + "MessageTemplateArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::Wisdom::MessageTemplateVersion" +} diff --git a/src/schema/aws-workspaces-connectionalias.json b/src/schema/aws-workspaces-connectionalias.json index 4388bf4e..c7b4c585 100644 --- a/src/schema/aws-workspaces-connectionalias.json +++ b/src/schema/aws-workspaces-connectionalias.json @@ -1,123 +1,143 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConnectionString", - "/properties/Tags" - ], - "definitions": { - "ConnectionAliasAssociation": { - "additionalProperties": false, - "properties": { - "AssociatedAccountId": { - "type": "string" - }, - "AssociationStatus": { - "enum": [ - "NOT_ASSOCIATED", - "PENDING_ASSOCIATION", - "ASSOCIATED_WITH_OWNER_ACCOUNT", - "ASSOCIATED_WITH_SHARED_ACCOUNT", - "PENDING_DISASSOCIATION" - ], - "type": "string" - }, - "ConnectionIdentifier": { - "maxLength": 20, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - }, - "ResourceId": { - "maxLength": 1000, - "minLength": 1, - "pattern": ".+", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WorkSpaces::ConnectionAlias", - "handlers": { - "create": { - "permissions": [ - "workspaces:CreateConnectionAlias" - ] - }, - "delete": { - "permissions": [ - "workspaces:DeleteConnectionAlias" - ] - }, - "read": { - "permissions": [ - "workspaces:DescribeConnectionAliases" - ] - } - }, - "primaryIdentifier": [ - "/properties/AliasId" - ], - "properties": { - "AliasId": { - "maxLength": 68, - "minLength": 13, - "pattern": "^wsca-[0-9a-z]{8,63}$", - "type": "string" - }, - "Associations": { - "items": { - "$ref": "#/definitions/ConnectionAliasAssociation" - }, - "maxLength": 25, - "minLength": 1, - "type": "array" - }, - "ConnectionAliasState": { - "enum": [ - "CREATING", - "CREATED", - "DELETING" - ], - "type": "string" - }, - "ConnectionString": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[.0-9a-zA-Z\\-]{1,255}$", - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ConnectionAliasState", - "/properties/AliasId", - "/properties/Associations" - ], - "required": [ - "ConnectionString" - ], - "typeName": "AWS::WorkSpaces::ConnectionAlias" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConnectionString", + "/properties/Tags" + ], + "definitions": { + "ConnectionAliasAssociation": { + "additionalProperties": false, + "properties": { + "AssociatedAccountId": { + "type": "string" + }, + "AssociationStatus": { + "enum": [ + "NOT_ASSOCIATED", + "PENDING_ASSOCIATION", + "ASSOCIATED_WITH_OWNER_ACCOUNT", + "ASSOCIATED_WITH_SHARED_ACCOUNT", + "PENDING_DISASSOCIATION" + ], + "type": "string" + }, + "ConnectionIdentifier": { + "maxLength": 20, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "ResourceId": { + "maxLength": 1000, + "minLength": 1, + "pattern": ".+", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WorkSpaces::ConnectionAlias", + "handlers": { + "create": { + "permissions": [ + "workspaces:CreateConnectionAlias", + "workspaces:CreateTags", + "workspaces:DescribeConnectionAliases", + "workspaces:DescribeTags" + ] + }, + "delete": { + "permissions": [ + "workspaces:DeleteConnectionAlias", + "workspaces:DeleteTags", + "workspaces:DescribeTags", + "workspaces:DescribeConnectionAliases" + ] + }, + "read": { + "permissions": [ + "workspaces:DescribeConnectionAliases", + "workspaces:DescribeTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/AliasId" + ], + "properties": { + "AliasId": { + "maxLength": 68, + "minLength": 13, + "pattern": "^wsca-[0-9a-z]{8,63}$", + "type": "string" + }, + "Associations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ConnectionAliasAssociation" + }, + "maxLength": 25, + "minLength": 1, + "type": "array" + }, + "ConnectionAliasState": { + "enum": [ + "CREATING", + "CREATED", + "DELETING" + ], + "type": "string" + }, + "ConnectionString": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[.0-9a-zA-Z\\-]{1,255}$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/ConnectionAliasState", + "/properties/AliasId", + "/properties/Associations" + ], + "required": [ + "ConnectionString" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "workspaces:CreateTags", + "workspaces:DescribeTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::WorkSpaces::ConnectionAlias" +} diff --git a/src/schema/aws-workspaces-workspace.json b/src/schema/aws-workspaces-workspace.json index b399c5fe..aa167154 100644 --- a/src/schema/aws-workspaces-workspace.json +++ b/src/schema/aws-workspaces-workspace.json @@ -1,91 +1,91 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "WorkspaceProperties": { - "additionalProperties": false, - "properties": { - "ComputeTypeName": { - "type": "string" - }, - "RootVolumeSizeGib": { - "type": "integer" - }, - "RunningMode": { - "type": "string" - }, - "RunningModeAutoStopTimeoutInMinutes": { - "type": "integer" - }, - "UserVolumeSizeGib": { - "type": "integer" - } - }, - "type": "object" - } - }, - "description": "Resource Type definition for AWS::WorkSpaces::Workspace", - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "BundleId": { - "type": "string" - }, - "DirectoryId": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "RootVolumeEncryptionEnabled": { - "type": "boolean" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "UserName": { - "type": "string" - }, - "UserVolumeEncryptionEnabled": { - "type": "boolean" - }, - "VolumeEncryptionKey": { - "type": "string" - }, - "WorkspaceProperties": { - "$ref": "#/definitions/WorkspaceProperties" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "BundleId", - "DirectoryId", - "UserName" - ], - "typeName": "AWS::WorkSpaces::Workspace" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/UserName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "WorkspaceProperties": { + "additionalProperties": false, + "properties": { + "ComputeTypeName": { + "type": "string" + }, + "RootVolumeSizeGib": { + "type": "integer" + }, + "RunningMode": { + "type": "string" + }, + "RunningModeAutoStopTimeoutInMinutes": { + "type": "integer" + }, + "UserVolumeSizeGib": { + "type": "integer" + } + }, + "type": "object" + } + }, + "description": "Resource Type definition for AWS::WorkSpaces::Workspace", + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "BundleId": { + "type": "string" + }, + "DirectoryId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "RootVolumeEncryptionEnabled": { + "type": "boolean" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "UserName": { + "type": "string" + }, + "UserVolumeEncryptionEnabled": { + "type": "boolean" + }, + "VolumeEncryptionKey": { + "type": "string" + }, + "WorkspaceProperties": { + "$ref": "#/definitions/WorkspaceProperties" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "BundleId", + "DirectoryId", + "UserName" + ], + "typeName": "AWS::WorkSpaces::Workspace" +} diff --git a/src/schema/aws-workspaces-workspacespool.json b/src/schema/aws-workspaces-workspacespool.json index 7369f679..1c0c4a61 100644 --- a/src/schema/aws-workspaces-workspacespool.json +++ b/src/schema/aws-workspaces-workspacespool.json @@ -1,193 +1,203 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PoolName" - ], - "definitions": { - "ApplicationSettings": { - "additionalProperties": false, - "properties": { - "SettingsGroup": { - "maxLength": 100, - "pattern": "^[A-Za-z0-9_./()!*'-]+$", - "type": "string" - }, - "Status": { - "$ref": "#/definitions/ApplicationSettingsStatus" - } - }, - "required": [ - "Status" - ], - "type": "object" - }, - "ApplicationSettingsStatus": { - "enum": [ - "DISABLED", - "ENABLED" - ], - "type": "string" - }, - "Capacity": { - "additionalProperties": false, - "properties": { - "DesiredUserSessions": { - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "DesiredUserSessions" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TimeoutSettings": { - "additionalProperties": false, - "properties": { - "DisconnectTimeoutInSeconds": { - "maximum": 36000, - "minimum": 60, - "type": "integer" - }, - "IdleDisconnectTimeoutInSeconds": { - "maximum": 36000, - "minimum": 0, - "type": "integer" - }, - "MaxUserDurationInSeconds": { - "maximum": 432000, - "minimum": 600, - "type": "integer" - } - }, - "required": [], - "type": "object" - } - }, - "deprecatedProperties": [ - "/properties/Tags/TagKey", - "/properties/Tags/TagValue" - ], - "description": "Resource Type definition for AWS::WorkSpaces::WorkspacesPool", - "handlers": { - "create": { - "permissions": [ - "workspaces:CreateWorkspacesPool", - "workspaces:DescribeWorkspacesPools", - "workspaces:CreateTags" - ] - }, - "delete": { - "permissions": [ - "workspaces:DescribeWorkspacesPools", - "workspaces:TerminateWorkspacesPool" - ] - }, - "list": { - "permissions": [ - "workspaces:DescribeWorkspacesPools" - ] - }, - "read": { - "permissions": [ - "workspaces:DescribeWorkspacesPools" - ] - }, - "update": { - "permissions": [ - "workspaces:UpdateWorkspacesPool" - ] - } - }, - "primaryIdentifier": [ - "/properties/PoolId" - ], - "properties": { - "ApplicationSettings": { - "$ref": "#/definitions/ApplicationSettings" - }, - "BundleId": { - "pattern": "^wsb-[0-9a-z]{8,63}$", - "type": "string" - }, - "Capacity": { - "$ref": "#/definitions/Capacity" - }, - "CreatedAt": { - "type": "string" - }, - "Description": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_./() -]+$", - "type": "string" - }, - "DirectoryId": { - "maxLength": 65, - "minLength": 10, - "pattern": "^wsd-[0-9a-z]{8,63}$", - "type": "string" - }, - "PoolArn": { - "pattern": "^arn:aws[a-z-]{0,7}:[A-Za-z0-9][A-za-z0-9_/.-]{0,62}:[A-za-z0-9_/.-]{0,63}:[A-za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-za-z0-9_/.-]{0,127}$", - "type": "string" - }, - "PoolId": { - "pattern": "^wspool-[0-9a-z]{9}$", - "type": "string" - }, - "PoolName": { - "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TimeoutSettings": { - "$ref": "#/definitions/TimeoutSettings" - } - }, - "readOnlyProperties": [ - "/properties/PoolId", - "/properties/PoolArn", - "/properties/CreatedAt" - ], - "required": [ - "PoolName", - "BundleId", - "DirectoryId", - "Capacity" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": true - }, - "typeName": "AWS::WorkSpaces::WorkspacesPool", - "writeOnlyProperties": [ - "/properties/Tags" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PoolName" + ], + "definitions": { + "ApplicationSettings": { + "additionalProperties": false, + "properties": { + "SettingsGroup": { + "maxLength": 100, + "pattern": "^[A-Za-z0-9_./()!*'-]+$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/ApplicationSettingsStatus" + } + }, + "required": [ + "Status" + ], + "type": "object" + }, + "ApplicationSettingsStatus": { + "enum": [ + "DISABLED", + "ENABLED" + ], + "type": "string" + }, + "Capacity": { + "additionalProperties": false, + "properties": { + "DesiredUserSessions": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "DesiredUserSessions" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TimeoutSettings": { + "additionalProperties": false, + "properties": { + "DisconnectTimeoutInSeconds": { + "maximum": 36000, + "minimum": 60, + "type": "integer" + }, + "IdleDisconnectTimeoutInSeconds": { + "maximum": 36000, + "minimum": 0, + "type": "integer" + }, + "MaxUserDurationInSeconds": { + "maximum": 432000, + "minimum": 600, + "type": "integer" + } + }, + "required": [], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/Tags", + "/properties/Tags/TagKey", + "/properties/Tags/TagValue" + ], + "description": "Resource Type definition for AWS::WorkSpaces::WorkspacesPool", + "handlers": { + "create": { + "permissions": [ + "workspaces:CreateWorkspacesPool", + "workspaces:DescribeWorkspacesPools", + "workspaces:CreateTags" + ] + }, + "delete": { + "permissions": [ + "workspaces:DescribeWorkspacesPools", + "workspaces:TerminateWorkspacesPool", + "workspaces:DeleteTags" + ] + }, + "list": { + "permissions": [ + "workspaces:DescribeWorkspacesPools", + "workspaces:DescribeTags" + ] + }, + "read": { + "permissions": [ + "workspaces:DescribeWorkspacesPools", + "workspaces:DescribeTags" + ] + }, + "update": { + "permissions": [ + "workspaces:UpdateWorkspacesPool", + "workspaces:CreateTags", + "workspaces:DeleteTags", + "workspaces:DescribeWorkspacesPools", + "workspaces:DescribeTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/PoolId" + ], + "properties": { + "ApplicationSettings": { + "$ref": "#/definitions/ApplicationSettings" + }, + "BundleId": { + "pattern": "^wsb-[0-9a-z]{8,63}$", + "type": "string" + }, + "Capacity": { + "$ref": "#/definitions/Capacity" + }, + "CreatedAt": { + "type": "string" + }, + "Description": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_./() -]+$", + "type": "string" + }, + "DirectoryId": { + "maxLength": 65, + "minLength": 10, + "pattern": "^wsd-[0-9a-z]{8,63}$", + "type": "string" + }, + "PoolArn": { + "pattern": "^arn:aws[a-z-]{0,7}:[A-Za-z0-9][A-za-z0-9_/.-]{0,62}:[A-za-z0-9_/.-]{0,63}:[A-za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-za-z0-9_/.-]{0,127}$", + "type": "string" + }, + "PoolId": { + "pattern": "^wspool-[0-9a-z]{9}$", + "type": "string" + }, + "PoolName": { + "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TimeoutSettings": { + "$ref": "#/definitions/TimeoutSettings" + } + }, + "readOnlyProperties": [ + "/properties/PoolId", + "/properties/PoolArn", + "/properties/CreatedAt" + ], + "required": [ + "PoolName", + "BundleId", + "DirectoryId", + "Capacity" + ], + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "workspaces:CreateTags", + "workspaces:DescribeTags", + "workspaces:DeleteTags" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": true + }, + "typeName": "AWS::WorkSpaces::WorkspacesPool" +} diff --git a/src/schema/aws-workspacesthinclient-environment.json b/src/schema/aws-workspacesthinclient-environment.json index fd2d6372..844cd7e9 100644 --- a/src/schema/aws-workspacesthinclient-environment.json +++ b/src/schema/aws-workspacesthinclient-environment.json @@ -1,324 +1,323 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKeyArn", - "/properties/DesktopArn" - ], - "definitions": { - "DayOfWeek": { - "enum": [ - "MONDAY", - "TUESDAY", - "WEDNESDAY", - "THURSDAY", - "FRIDAY", - "SATURDAY", - "SUNDAY" - ], - "type": "string" - }, - "Hour": { - "maximum": 23, - "minimum": 0, - "type": "integer" - }, - "MaintenanceWindow": { - "additionalProperties": false, - "properties": { - "ApplyTimeOf": { - "description": "The desired time zone maintenance window.", - "enum": [ - "UTC", - "DEVICE" - ], - "type": "string" - }, - "DaysOfTheWeek": { - "description": "The date of maintenance window.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DayOfWeek" - }, - "maxItems": 7, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "EndTimeHour": { - "$ref": "#/definitions/Hour", - "description": "The hour end time of maintenance window." - }, - "EndTimeMinute": { - "$ref": "#/definitions/Minute", - "description": "The minute end time of maintenance window." - }, - "StartTimeHour": { - "$ref": "#/definitions/Hour", - "description": "The hour start time of maintenance window." - }, - "StartTimeMinute": { - "$ref": "#/definitions/Minute", - "description": "The minute start time of maintenance window." - }, - "Type": { - "description": "The type of maintenance window.", - "enum": [ - "SYSTEM", - "CUSTOM" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "Minute": { - "maximum": 59, - "minimum": 0, - "type": "integer" - }, - "Tag": { - "additionalProperties": false, - "description": "A key-value pair to associate with a resource.", - "properties": { - "Key": { - "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", - "maxLength": 256, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Resource type definition for AWS::WorkSpacesThinClient::Environment.", - "handlers": { - "create": { - "permissions": [ - "thinclient:CreateEnvironment", - "thinclient:TagResource", - "thinclient:ListTagsForResource", - "appstream:DescribeStacks", - "workspaces:DescribeWorkspaceDirectories", - "workspaces-web:GetPortal", - "workspaces-web:GetUserSettings", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "delete": { - "permissions": [ - "thinclient:DeleteEnvironment", - "thinclient:UntagResource", - "kms:Decrypt", - "kms:RetireGrant" - ] - }, - "list": { - "permissions": [ - "thinclient:ListEnvironment", - "thinclient:ListTagsForResource", - "kms:Decrypt" - ] - }, - "read": { - "permissions": [ - "thinclient:GetEnvironment", - "thinclient:ListTagsForResource", - "kms:Decrypt" - ] - }, - "update": { - "permissions": [ - "appstream:DescribeStacks", - "workspaces:DescribeWorkspaceDirectories", - "workspaces-web:GetPortal", - "workspaces-web:GetUserSettings", - "thinclient:UpdateEnvironment", - "thinclient:ListTagsForResource", - "thinclient:TagResource", - "thinclient:UntagResource", - "kms:Decrypt", - "kms:GenerateDataKey" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ActivationCode": { - "description": "Activation code for devices associated with environment.", - "pattern": "^[a-z]{2}[a-z0-9]{6}$", - "type": "string" - }, - "Arn": { - "description": "The environment ARN.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[0-9]{0,12}:[a-zA-Z0-9\\-\\/\\._]+$", - "type": "string" - }, - "CreatedAt": { - "description": "The timestamp in unix epoch format when environment was created.", - "type": "string" - }, - "DesiredSoftwareSetId": { - "description": "The ID of the software set to apply.", - "pattern": "^[0-9]{1,9}$", - "type": "string" - }, - "DesktopArn": { - "description": "The Amazon Resource Name (ARN) of the desktop to stream from Amazon WorkSpaces, WorkSpaces Web, or AppStream 2.0.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[0-9]{0,12}:[a-zA-Z0-9\\-\\/\\._]+$", - "type": "string" - }, - "DesktopEndpoint": { - "description": "The URL for the identity provider login (only for environments that use AppStream 2.0).", - "maxLength": 1024, - "minLength": 1, - "pattern": "^(https:\\/\\/)[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,32}(:[0-9]{1,5})?(\\/.*)?$", - "type": "string" - }, - "DesktopType": { - "description": "The type of VDI.", - "enum": [ - "workspaces", - "appstream", - "workspaces-web" - ], - "type": "string" - }, - "DeviceCreationTags": { - "description": "An array of key-value pairs to apply to the newly created devices for this environment.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "Id": { - "description": "Unique identifier of the environment.", - "pattern": "^[a-z0-9]{9}$", - "type": "string" - }, - "KmsKeyArn": { - "description": "The Amazon Resource Name (ARN) of the AWS Key Management Service key used to encrypt the environment.", - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:kms:[a-zA-Z0-9\\-]*:[0-9]{0,12}:key\\/[a-zA-Z0-9-]+$", - "type": "string" - }, - "MaintenanceWindow": { - "$ref": "#/definitions/MaintenanceWindow", - "description": "A specification for a time window to apply software updates." - }, - "Name": { - "description": "The name of the environment.", - "maxLength": 64, - "minLength": 1, - "pattern": "^.+$", - "type": "string" - }, - "PendingSoftwareSetId": { - "description": "The ID of the software set that is pending to be installed.", - "pattern": "^[0-9]{1,9}$", - "type": "string" - }, - "PendingSoftwareSetVersion": { - "description": "The version of the software set that is pending to be installed.", - "type": "string" - }, - "RegisteredDevicesCount": { - "description": "Number of devices registered to the environment.", - "minimum": 0, - "type": "integer" - }, - "SoftwareSetComplianceStatus": { - "description": "Describes if the software currently installed on all devices in the environment is a supported version.", - "enum": [ - "COMPLIANT", - "NOT_COMPLIANT", - "NO_REGISTERED_DEVICES" - ], - "type": "string" - }, - "SoftwareSetUpdateMode": { - "description": "An option to define which software updates to apply.", - "enum": [ - "USE_LATEST", - "USE_DESIRED" - ], - "type": "string" - }, - "SoftwareSetUpdateSchedule": { - "description": "An option to define if software updates should be applied within a maintenance window.", - "enum": [ - "USE_MAINTENANCE_WINDOW", - "APPLY_IMMEDIATELY" - ], - "type": "string" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UpdatedAt": { - "description": "The timestamp in unix epoch format when environment was last updated.", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ActivationCode", - "/properties/Arn", - "/properties/CreatedAt", - "/properties/DesktopType", - "/properties/RegisteredDevicesCount", - "/properties/UpdatedAt", - "/properties/PendingSoftwareSetId", - "/properties/PendingSoftwareSetVersion", - "/properties/SoftwareSetComplianceStatus" - ], - "required": [ - "DesktopArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "thinclient:UntagResource", - "thinclient:ListTagsForResource", - "thinclient:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::WorkSpacesThinClient::Environment" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KmsKeyArn", + "/properties/DesktopArn" + ], + "definitions": { + "DayOfWeek": { + "enum": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY" + ], + "type": "string" + }, + "Hour": { + "maximum": 23, + "minimum": 0, + "type": "integer" + }, + "MaintenanceWindow": { + "additionalProperties": false, + "properties": { + "ApplyTimeOf": { + "description": "The desired time zone maintenance window.", + "enum": [ + "UTC", + "DEVICE" + ], + "type": "string" + }, + "DaysOfTheWeek": { + "description": "The date of maintenance window.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DayOfWeek" + }, + "maxItems": 7, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "EndTimeHour": { + "$ref": "#/definitions/Hour", + "description": "The hour end time of maintenance window." + }, + "EndTimeMinute": { + "$ref": "#/definitions/Minute", + "description": "The minute end time of maintenance window." + }, + "StartTimeHour": { + "$ref": "#/definitions/Hour", + "description": "The hour start time of maintenance window." + }, + "StartTimeMinute": { + "$ref": "#/definitions/Minute", + "description": "The minute start time of maintenance window." + }, + "Type": { + "description": "The type of maintenance window.", + "enum": [ + "SYSTEM", + "CUSTOM" + ], + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "Minute": { + "maximum": 59, + "minimum": 0, + "type": "integer" + }, + "Tag": { + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", + "type": "string" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "maxLength": 256, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Resource type definition for AWS::WorkSpacesThinClient::Environment.", + "handlers": { + "create": { + "permissions": [ + "thinclient:CreateEnvironment", + "thinclient:TagResource", + "thinclient:ListTagsForResource", + "appstream:DescribeStacks", + "workspaces:DescribeWorkspaceDirectories", + "workspaces-web:GetPortal", + "workspaces-web:GetUserSettings", + "kms:DescribeKey", + "kms:CreateGrant", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "thinclient:DeleteEnvironment", + "thinclient:UntagResource", + "kms:Decrypt", + "kms:RetireGrant" + ] + }, + "list": { + "permissions": [ + "thinclient:ListEnvironments", + "thinclient:ListTagsForResource", + "kms:Decrypt" + ] + }, + "read": { + "permissions": [ + "thinclient:GetEnvironment", + "thinclient:ListTagsForResource", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "appstream:DescribeStacks", + "workspaces:DescribeWorkspaceDirectories", + "workspaces-web:GetPortal", + "workspaces-web:GetUserSettings", + "thinclient:UpdateEnvironment", + "thinclient:TagResource", + "thinclient:UntagResource", + "kms:Decrypt", + "kms:GenerateDataKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "ActivationCode": { + "description": "Activation code for devices associated with environment.", + "pattern": "^[a-z]{2}[a-z0-9]{6}$", + "type": "string" + }, + "Arn": { + "description": "The environment ARN.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[0-9]{0,12}:[a-zA-Z0-9\\-\\/\\._]+$", + "type": "string" + }, + "CreatedAt": { + "description": "The timestamp in unix epoch format when environment was created.", + "type": "string" + }, + "DesiredSoftwareSetId": { + "description": "The ID of the software set to apply.", + "pattern": "^[0-9]{1,9}$", + "type": "string" + }, + "DesktopArn": { + "description": "The Amazon Resource Name (ARN) of the desktop to stream from Amazon WorkSpaces, WorkSpaces Web, or AppStream 2.0.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[0-9]{0,12}:[a-zA-Z0-9\\-\\/\\._]+$", + "type": "string" + }, + "DesktopEndpoint": { + "description": "The URL for the identity provider login (only for environments that use AppStream 2.0).", + "maxLength": 1024, + "minLength": 1, + "pattern": "^(https:\\/\\/)[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,32}(:[0-9]{1,5})?(\\/.*)?$", + "type": "string" + }, + "DesktopType": { + "description": "The type of VDI.", + "enum": [ + "workspaces", + "appstream", + "workspaces-web" + ], + "type": "string" + }, + "DeviceCreationTags": { + "description": "An array of key-value pairs to apply to the newly created devices for this environment.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "Id": { + "description": "Unique identifier of the environment.", + "pattern": "^[a-z0-9]{9}$", + "type": "string" + }, + "KmsKeyArn": { + "description": "The Amazon Resource Name (ARN) of the AWS Key Management Service key used to encrypt the environment.", + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:kms:[a-zA-Z0-9\\-]*:[0-9]{0,12}:key\\/[a-zA-Z0-9-]+$", + "type": "string" + }, + "MaintenanceWindow": { + "$ref": "#/definitions/MaintenanceWindow", + "description": "A specification for a time window to apply software updates." + }, + "Name": { + "description": "The name of the environment.", + "maxLength": 64, + "minLength": 1, + "pattern": "^.+$", + "type": "string" + }, + "PendingSoftwareSetId": { + "description": "The ID of the software set that is pending to be installed.", + "pattern": "^[0-9]{1,9}$", + "type": "string" + }, + "PendingSoftwareSetVersion": { + "description": "The version of the software set that is pending to be installed.", + "type": "string" + }, + "RegisteredDevicesCount": { + "description": "Number of devices registered to the environment.", + "minimum": 0, + "type": "integer" + }, + "SoftwareSetComplianceStatus": { + "description": "Describes if the software currently installed on all devices in the environment is a supported version.", + "enum": [ + "COMPLIANT", + "NOT_COMPLIANT", + "NO_REGISTERED_DEVICES" + ], + "type": "string" + }, + "SoftwareSetUpdateMode": { + "description": "An option to define which software updates to apply.", + "enum": [ + "USE_LATEST", + "USE_DESIRED" + ], + "type": "string" + }, + "SoftwareSetUpdateSchedule": { + "description": "An option to define if software updates should be applied within a maintenance window.", + "enum": [ + "USE_MAINTENANCE_WINDOW", + "APPLY_IMMEDIATELY" + ], + "type": "string" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "UpdatedAt": { + "description": "The timestamp in unix epoch format when environment was last updated.", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/ActivationCode", + "/properties/Arn", + "/properties/CreatedAt", + "/properties/DesktopType", + "/properties/RegisteredDevicesCount", + "/properties/UpdatedAt", + "/properties/PendingSoftwareSetId", + "/properties/PendingSoftwareSetVersion", + "/properties/SoftwareSetComplianceStatus" + ], + "required": [ + "DesktopArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "thinclient:UntagResource", + "thinclient:ListTagsForResource", + "thinclient:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::WorkSpacesThinClient::Environment" +} diff --git a/src/schema/aws-workspacesweb-browsersettings.json b/src/schema/aws-workspacesweb-browsersettings.json index e8504110..b8195f62 100644 --- a/src/schema/aws-workspacesweb-browsersettings.json +++ b/src/schema/aws-workspacesweb-browsersettings.json @@ -1,162 +1,164 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdditionalEncryptionContext", - "/properties/CustomerManagedKey" - ], - "definitions": { - "EncryptionContextMap": { - "additionalProperties": false, - "patternProperties": { - "^[\\s\\S]*$": { - "maxLength": 131072, - "minLength": 0, - "pattern": "^[\\s\\S]*$", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::WorkSpacesWeb::BrowserSettings Resource Type", - "handlers": { - "create": { - "permissions": [ - "workspaces-web:CreateBrowserSettings", - "workspaces-web:GetBrowserSettings", - "workspaces-web:ListTagsForResource", - "workspaces-web:TagResource", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt", - "kms:GenerateDataKeyWithoutPlaintext", - "kms:ReEncryptTo", - "kms:ReEncryptFrom" - ] - }, - "delete": { - "permissions": [ - "workspaces-web:GetBrowserSettings", - "workspaces-web:DeleteBrowserSettings", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "list": { - "permissions": [ - "workspaces-web:ListBrowserSettings" - ] - }, - "read": { - "permissions": [ - "workspaces-web:GetBrowserSettings", - "workspaces-web:ListBrowserSettings", - "workspaces-web:ListTagsForResource", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "update": { - "permissions": [ - "workspaces-web:UpdateBrowserSettings", - "workspaces-web:TagResource", - "workspaces-web:UntagResource", - "workspaces-web:GetBrowserSettings", - "workspaces-web:ListBrowserSettings", - "workspaces-web:ListTagsForResource", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/BrowserSettingsArn" - ], - "properties": { - "AdditionalEncryptionContext": { - "$ref": "#/definitions/EncryptionContextMap" - }, - "AssociatedPortalArns": { - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - }, - "type": "array" - }, - "BrowserPolicy": { - "maxLength": 131072, - "minLength": 2, - "pattern": "\\{[\\S\\s]*\\}\\s*", - "type": "string" - }, - "BrowserSettingsArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - }, - "CustomerManagedKey": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:kms:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:key\\/[a-zA-Z0-9-]+$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/AssociatedPortalArns", - "/properties/BrowserSettingsArn" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "workspaces-web:UntagResource", - "workspaces-web:ListTagsForResource", - "workspaces-web:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::WorkSpacesWeb::BrowserSettings" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AdditionalEncryptionContext", + "/properties/CustomerManagedKey" + ], + "definitions": { + "EncryptionContextMap": { + "additionalProperties": false, + "patternProperties": { + "^[\\s\\S]*$": { + "maxLength": 131072, + "minLength": 0, + "pattern": "^[\\s\\S]*$", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::WorkSpacesWeb::BrowserSettings Resource Type", + "handlers": { + "create": { + "permissions": [ + "workspaces-web:CreateBrowserSettings", + "workspaces-web:GetBrowserSettings", + "workspaces-web:ListTagsForResource", + "workspaces-web:TagResource", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt", + "kms:GenerateDataKeyWithoutPlaintext", + "kms:ReEncryptTo", + "kms:ReEncryptFrom" + ] + }, + "delete": { + "permissions": [ + "workspaces-web:GetBrowserSettings", + "workspaces-web:DeleteBrowserSettings", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "list": { + "permissions": [ + "workspaces-web:ListBrowserSettings", + "kms:Decrypt", + "kms:DescribeKey" + ] + }, + "read": { + "permissions": [ + "workspaces-web:GetBrowserSettings", + "workspaces-web:ListBrowserSettings", + "workspaces-web:ListTagsForResource", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "workspaces-web:UpdateBrowserSettings", + "workspaces-web:TagResource", + "workspaces-web:UntagResource", + "workspaces-web:GetBrowserSettings", + "workspaces-web:ListBrowserSettings", + "workspaces-web:ListTagsForResource", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/BrowserSettingsArn" + ], + "properties": { + "AdditionalEncryptionContext": { + "$ref": "#/definitions/EncryptionContextMap" + }, + "AssociatedPortalArns": { + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "type": "array" + }, + "BrowserPolicy": { + "maxLength": 131072, + "minLength": 2, + "pattern": "\\{[\\S\\s]*\\}\\s*", + "type": "string" + }, + "BrowserSettingsArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "CustomerManagedKey": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:kms:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:key\\/[a-zA-Z0-9-]+$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/AssociatedPortalArns", + "/properties/BrowserSettingsArn" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "workspaces-web:UntagResource", + "workspaces-web:ListTagsForResource", + "workspaces-web:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::WorkSpacesWeb::BrowserSettings" +} diff --git a/src/schema/aws-workspacesweb-dataprotectionsettings.json b/src/schema/aws-workspacesweb-dataprotectionsettings.json new file mode 100644 index 00000000..743cbda7 --- /dev/null +++ b/src/schema/aws-workspacesweb-dataprotectionsettings.json @@ -0,0 +1,317 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AdditionalEncryptionContext", + "/properties/CustomerManagedKey" + ], + "definitions": { + "CustomPattern": { + "additionalProperties": false, + "properties": { + "KeywordRegex": { + "maxLength": 300, + "minLength": 0, + "pattern": "^\\/((?:[^\\n])+)\\/([gimsuyvd]{0,8})$", + "type": "string" + }, + "PatternDescription": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[ _\\-\\d\\w]+$", + "type": "string" + }, + "PatternName": { + "maxLength": 20, + "minLength": 1, + "pattern": "^[_\\-\\d\\w]+$", + "type": "string" + }, + "PatternRegex": { + "maxLength": 300, + "minLength": 0, + "pattern": "^\\/((?:[^\\n])+)\\/([gimsuyvd]{0,8})$", + "type": "string" + } + }, + "required": [ + "PatternName", + "PatternRegex" + ], + "type": "object" + }, + "EncryptionContextMap": { + "additionalProperties": false, + "patternProperties": { + "^[\\s\\S]*$": { + "maxLength": 131072, + "minLength": 0, + "pattern": "^[\\s\\S]*$", + "type": "string" + } + }, + "type": "object" + }, + "InlineRedactionConfiguration": { + "additionalProperties": false, + "properties": { + "GlobalConfidenceLevel": { + "maximum": 3, + "minimum": 1, + "type": "number" + }, + "GlobalEnforcedUrls": { + "items": { + "pattern": "^((([a-zA-Z][a-zA-Z0-9+.-]*):\\/\\/(\\*|[\\w%._\\-\\+~#=@]+)?(\\/[^@\\s]*)?(?:\\?([^*\\s]+(?:\\*?)))?)|(\\*|[\\w%._\\-\\+~#=@]+\\.[\\w%._\\-\\+~#=@]+)(?::(\\d{1,5}))?(\\/[^@\\s]*)?(?:\\?([^*\\s]+(?:\\*?)))?|(([a-zA-Z][a-zA-Z0-9+.-]*):(\\/\\/)?\\*))$", + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "GlobalExemptUrls": { + "items": { + "pattern": "^((([a-zA-Z][a-zA-Z0-9+.-]*):\\/\\/(\\*|[\\w%._\\-\\+~#=@]+)?(\\/[^@\\s]*)?(?:\\?([^*\\s]+(?:\\*?)))?)|(\\*|[\\w%._\\-\\+~#=@]+\\.[\\w%._\\-\\+~#=@]+)(?::(\\d{1,5}))?(\\/[^@\\s]*)?(?:\\?([^*\\s]+(?:\\*?)))?|(([a-zA-Z][a-zA-Z0-9+.-]*):(\\/\\/)?\\*))$", + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "InlineRedactionPatterns": { + "items": { + "$ref": "#/definitions/InlineRedactionPattern" + }, + "maxItems": 150, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "InlineRedactionPatterns" + ], + "type": "object" + }, + "InlineRedactionPattern": { + "additionalProperties": false, + "properties": { + "BuiltInPatternId": { + "maxLength": 50, + "minLength": 1, + "pattern": "^[_\\-\\d\\w]+$", + "type": "string" + }, + "ConfidenceLevel": { + "maximum": 3, + "minimum": 1, + "type": "number" + }, + "CustomPattern": { + "$ref": "#/definitions/CustomPattern" + }, + "EnforcedUrls": { + "items": { + "pattern": "^((([a-zA-Z][a-zA-Z0-9+.-]*):\\/\\/(\\*|[\\w%._\\-\\+~#=@]+)?(\\/[^@\\s]*)?(?:\\?([^*\\s]+(?:\\*?)))?)|(\\*|[\\w%._\\-\\+~#=@]+\\.[\\w%._\\-\\+~#=@]+)(?::(\\d{1,5}))?(\\/[^@\\s]*)?(?:\\?([^*\\s]+(?:\\*?)))?|(([a-zA-Z][a-zA-Z0-9+.-]*):(\\/\\/)?\\*))$", + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "ExemptUrls": { + "items": { + "pattern": "^((([a-zA-Z][a-zA-Z0-9+.-]*):\\/\\/(\\*|[\\w%._\\-\\+~#=@]+)?(\\/[^@\\s]*)?(?:\\?([^*\\s]+(?:\\*?)))?)|(\\*|[\\w%._\\-\\+~#=@]+\\.[\\w%._\\-\\+~#=@]+)(?::(\\d{1,5}))?(\\/[^@\\s]*)?(?:\\?([^*\\s]+(?:\\*?)))?|(([a-zA-Z][a-zA-Z0-9+.-]*):(\\/\\/)?\\*))$", + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "RedactionPlaceHolder": { + "$ref": "#/definitions/RedactionPlaceHolder" + } + }, + "required": [ + "RedactionPlaceHolder" + ], + "type": "object" + }, + "RedactionPlaceHolder": { + "additionalProperties": false, + "properties": { + "RedactionPlaceHolderText": { + "maxLength": 20, + "minLength": 1, + "pattern": "^[*_\\-\\d\\w]+$", + "type": "string" + }, + "RedactionPlaceHolderType": { + "$ref": "#/definitions/RedactionPlaceHolderType" + } + }, + "required": [ + "RedactionPlaceHolderType" + ], + "type": "object" + }, + "RedactionPlaceHolderType": { + "enum": [ + "CustomText" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::WorkSpacesWeb::DataProtectionSettings Resource Type", + "handlers": { + "create": { + "permissions": [ + "workspaces-web:CreateDataProtectionSettings", + "workspaces-web:GetDataProtectionSettings", + "workspaces-web:ListDataProtectionSettings", + "workspaces-web:ListTagsForResource", + "workspaces-web:TagResource", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt", + "kms:GenerateDataKeyWithoutPlaintext", + "kms:ReEncryptTo", + "kms:ReEncryptFrom" + ] + }, + "delete": { + "permissions": [ + "workspaces-web:GetDataProtectionSettings", + "workspaces-web:ListDataProtectionSettings", + "workspaces-web:DeleteDataProtectionSettings", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "list": { + "permissions": [ + "workspaces-web:ListDataProtectionSettings", + "kms:Decrypt", + "kms:DescribeKey" + ] + }, + "read": { + "permissions": [ + "workspaces-web:GetDataProtectionSettings", + "workspaces-web:ListDataProtectionSettings", + "workspaces-web:ListTagsForResource", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "workspaces-web:UpdateDataProtectionSettings", + "workspaces-web:GetDataProtectionSettings", + "workspaces-web:ListDataProtectionSettings", + "workspaces-web:TagResource", + "workspaces-web:UntagResource", + "workspaces-web:ListTagsForResource", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/DataProtectionSettingsArn" + ], + "properties": { + "AdditionalEncryptionContext": { + "$ref": "#/definitions/EncryptionContextMap" + }, + "AssociatedPortalArns": { + "items": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "type": "array" + }, + "CreationDate": { + "format": "date-time", + "type": "string" + }, + "CustomerManagedKey": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:kms:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:key\\/[a-zA-Z0-9-]+$", + "type": "string" + }, + "DataProtectionSettingsArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "Description": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[ _\\-\\d\\w]+$", + "type": "string" + }, + "DisplayName": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[ _\\-\\d\\w]+$", + "type": "string" + }, + "InlineRedactionConfiguration": { + "$ref": "#/definitions/InlineRedactionConfiguration" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/AssociatedPortalArns", + "/properties/CreationDate", + "/properties/DataProtectionSettingsArn" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "workspaces-web:UntagResource", + "workspaces-web:ListTagsForResource", + "workspaces-web:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::WorkSpacesWeb::DataProtectionSettings" +} diff --git a/src/schema/aws-workspacesweb-identityprovider.json b/src/schema/aws-workspacesweb-identityprovider.json index 9b89f558..fc4cfd42 100644 --- a/src/schema/aws-workspacesweb-identityprovider.json +++ b/src/schema/aws-workspacesweb-identityprovider.json @@ -1,165 +1,165 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PortalArn" - ], - "definitions": { - "IdentityProviderDetails": { - "additionalProperties": false, - "patternProperties": { - "^[\\s\\S]*$": { - "maxLength": 131072, - "minLength": 0, - "pattern": "^[\\s\\S]*$", - "type": "string" - } - }, - "type": "object" - }, - "IdentityProviderType": { - "enum": [ - "SAML", - "Facebook", - "Google", - "LoginWithAmazon", - "SignInWithApple", - "OIDC" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::WorkSpacesWeb::IdentityProvider Resource Type", - "handlers": { - "create": { - "permissions": [ - "workspaces-web:CreateIdentityProvider", - "workspaces-web:GetIdentityProvider", - "workspaces-web:ListTagsForResource", - "workspaces-web:TagResource" - ] - }, - "delete": { - "permissions": [ - "workspaces-web:GetIdentityProvider", - "workspaces-web:DeleteIdentityProvider" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PortalArn": { - "$ref": "resource-schema.json#/properties/PortalArn" - } - }, - "required": [ - "PortalArn" - ] - }, - "permissions": [ - "workspaces-web:ListIdentityProviders" - ] - }, - "read": { - "permissions": [ - "workspaces-web:GetIdentityProvider", - "workspaces-web:ListIdentityProviders", - "workspaces-web:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "workspaces-web:UpdateIdentityProvider", - "workspaces-web:TagResource", - "workspaces-web:UntagResource", - "workspaces-web:GetIdentityProvider", - "workspaces-web:ListIdentityProviders", - "workspaces-web:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentityProviderArn" - ], - "properties": { - "IdentityProviderArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36}){2,}$", - "type": "string" - }, - "IdentityProviderDetails": { - "$ref": "#/definitions/IdentityProviderDetails" - }, - "IdentityProviderName": { - "maxLength": 32, - "minLength": 1, - "pattern": "^[^_][\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}][^_]+$", - "type": "string" - }, - "IdentityProviderType": { - "$ref": "#/definitions/IdentityProviderType" - }, - "PortalArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/IdentityProviderArn" - ], - "required": [ - "IdentityProviderDetails", - "IdentityProviderName", - "IdentityProviderType" - ], - "sourceUrl": "https://github.com/shivankgoel/aws-cloudformation-resource-providers-workspaces-web", - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "workspaces-web:UntagResource", - "workspaces-web:ListTagsForResource", - "workspaces-web:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::WorkSpacesWeb::IdentityProvider", - "writeOnlyProperties": [ - "/properties/PortalArn" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PortalArn" + ], + "definitions": { + "IdentityProviderDetails": { + "additionalProperties": false, + "patternProperties": { + "^[\\s\\S]*$": { + "maxLength": 131072, + "minLength": 0, + "pattern": "^[\\s\\S]*$", + "type": "string" + } + }, + "type": "object" + }, + "IdentityProviderType": { + "enum": [ + "SAML", + "Facebook", + "Google", + "LoginWithAmazon", + "SignInWithApple", + "OIDC" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::WorkSpacesWeb::IdentityProvider Resource Type", + "handlers": { + "create": { + "permissions": [ + "workspaces-web:CreateIdentityProvider", + "workspaces-web:GetIdentityProvider", + "workspaces-web:ListTagsForResource", + "workspaces-web:TagResource" + ] + }, + "delete": { + "permissions": [ + "workspaces-web:GetIdentityProvider", + "workspaces-web:DeleteIdentityProvider" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PortalArn": { + "$ref": "resource-schema.json#/properties/PortalArn" + } + }, + "required": [ + "PortalArn" + ] + }, + "permissions": [ + "workspaces-web:ListIdentityProviders" + ] + }, + "read": { + "permissions": [ + "workspaces-web:GetIdentityProvider", + "workspaces-web:ListIdentityProviders", + "workspaces-web:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "workspaces-web:UpdateIdentityProvider", + "workspaces-web:TagResource", + "workspaces-web:UntagResource", + "workspaces-web:GetIdentityProvider", + "workspaces-web:ListIdentityProviders", + "workspaces-web:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentityProviderArn" + ], + "properties": { + "IdentityProviderArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36}){2,}$", + "type": "string" + }, + "IdentityProviderDetails": { + "$ref": "#/definitions/IdentityProviderDetails" + }, + "IdentityProviderName": { + "maxLength": 32, + "minLength": 1, + "pattern": "^[^_][\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}][^_]+$", + "type": "string" + }, + "IdentityProviderType": { + "$ref": "#/definitions/IdentityProviderType" + }, + "PortalArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/IdentityProviderArn" + ], + "required": [ + "IdentityProviderDetails", + "IdentityProviderName", + "IdentityProviderType" + ], + "sourceUrl": "https://github.com/shivankgoel/aws-cloudformation-resource-providers-workspaces-web", + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "workspaces-web:UntagResource", + "workspaces-web:ListTagsForResource", + "workspaces-web:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::WorkSpacesWeb::IdentityProvider", + "writeOnlyProperties": [ + "/properties/PortalArn" + ] +} diff --git a/src/schema/aws-workspacesweb-ipaccesssettings.json b/src/schema/aws-workspacesweb-ipaccesssettings.json index b30ee95c..6d01fb10 100644 --- a/src/schema/aws-workspacesweb-ipaccesssettings.json +++ b/src/schema/aws-workspacesweb-ipaccesssettings.json @@ -1,207 +1,209 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdditionalEncryptionContext", - "/properties/CustomerManagedKey" - ], - "definitions": { - "EncryptionContextMap": { - "additionalProperties": false, - "patternProperties": { - "^[\\s\\S]*$": { - "maxLength": 131072, - "minLength": 0, - "pattern": "^[\\s\\S]*$", - "type": "string" - } - }, - "type": "object" - }, - "IpRule": { - "additionalProperties": false, - "properties": { - "Description": { - "maxLength": 256, - "minLength": 1, - "pattern": "^.+$", - "type": "string" - }, - "IpRange": { - "description": "A single IP address or an IP address range in CIDR notation", - "pattern": "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(?:/([0-9]|[12][0-9]|3[0-2])|)$", - "type": "string" - } - }, - "required": [ - "IpRange" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::WorkSpacesWeb::IpAccessSettings Resource Type", - "handlers": { - "create": { - "permissions": [ - "workspaces-web:CreateIpAccessSettings", - "workspaces-web:GetIpAccessSettings", - "workspaces-web:ListIpAccessSettings", - "workspaces-web:ListTagsForResource", - "workspaces-web:TagResource", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt", - "kms:GenerateDataKeyWithoutPlaintext", - "kms:ReEncryptTo", - "kms:ReEncryptFrom" - ] - }, - "delete": { - "permissions": [ - "workspaces-web:GetIpAccessSettings", - "workspaces-web:ListIpAccessSettings", - "workspaces-web:DeleteIpAccessSettings", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "list": { - "permissions": [ - "workspaces-web:ListIpAccessSettings" - ] - }, - "read": { - "permissions": [ - "workspaces-web:GetIpAccessSettings", - "workspaces-web:ListIpAccessSettings", - "workspaces-web:ListTagsForResource", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "update": { - "permissions": [ - "workspaces-web:UpdateIpAccessSettings", - "workspaces-web:TagResource", - "workspaces-web:UntagResource", - "workspaces-web:GetIpAccessSettings", - "workspaces-web:ListIpAccessSettings", - "workspaces-web:ListTagsForResource", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/IpAccessSettingsArn" - ], - "properties": { - "AdditionalEncryptionContext": { - "$ref": "#/definitions/EncryptionContextMap" - }, - "AssociatedPortalArns": { - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - }, - "type": "array" - }, - "CreationDate": { - "format": "date-time", - "type": "string" - }, - "CustomerManagedKey": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:kms:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:key\\/[a-zA-Z0-9-]+$", - "type": "string" - }, - "Description": { - "maxLength": 256, - "minLength": 1, - "pattern": "^.+$", - "type": "string" - }, - "DisplayName": { - "maxLength": 64, - "minLength": 1, - "pattern": "^.+$", - "type": "string" - }, - "IpAccessSettingsArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - }, - "IpRules": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/IpRule" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/AssociatedPortalArns", - "/properties/CreationDate", - "/properties/IpAccessSettingsArn" - ], - "required": [ - "IpRules" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "workspaces-web:UntagResource", - "workspaces-web:ListTagsForResource", - "workspaces-web:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::WorkSpacesWeb::IpAccessSettings" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AdditionalEncryptionContext", + "/properties/CustomerManagedKey" + ], + "definitions": { + "EncryptionContextMap": { + "additionalProperties": false, + "patternProperties": { + "^[\\s\\S]*$": { + "maxLength": 131072, + "minLength": 0, + "pattern": "^[\\s\\S]*$", + "type": "string" + } + }, + "type": "object" + }, + "IpRule": { + "additionalProperties": false, + "properties": { + "Description": { + "maxLength": 256, + "minLength": 1, + "pattern": "^.+$", + "type": "string" + }, + "IpRange": { + "description": "A single IP address or an IP address range in CIDR notation", + "pattern": "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(?:/([0-9]|[12][0-9]|3[0-2])|)$", + "type": "string" + } + }, + "required": [ + "IpRange" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::WorkSpacesWeb::IpAccessSettings Resource Type", + "handlers": { + "create": { + "permissions": [ + "workspaces-web:CreateIpAccessSettings", + "workspaces-web:GetIpAccessSettings", + "workspaces-web:ListIpAccessSettings", + "workspaces-web:ListTagsForResource", + "workspaces-web:TagResource", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt", + "kms:GenerateDataKeyWithoutPlaintext", + "kms:ReEncryptTo", + "kms:ReEncryptFrom" + ] + }, + "delete": { + "permissions": [ + "workspaces-web:GetIpAccessSettings", + "workspaces-web:ListIpAccessSettings", + "workspaces-web:DeleteIpAccessSettings", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "list": { + "permissions": [ + "workspaces-web:ListIpAccessSettings", + "kms:Decrypt", + "kms:DescribeKey" + ] + }, + "read": { + "permissions": [ + "workspaces-web:GetIpAccessSettings", + "workspaces-web:ListIpAccessSettings", + "workspaces-web:ListTagsForResource", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "workspaces-web:UpdateIpAccessSettings", + "workspaces-web:TagResource", + "workspaces-web:UntagResource", + "workspaces-web:GetIpAccessSettings", + "workspaces-web:ListIpAccessSettings", + "workspaces-web:ListTagsForResource", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/IpAccessSettingsArn" + ], + "properties": { + "AdditionalEncryptionContext": { + "$ref": "#/definitions/EncryptionContextMap" + }, + "AssociatedPortalArns": { + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "type": "array" + }, + "CreationDate": { + "format": "date-time", + "type": "string" + }, + "CustomerManagedKey": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:kms:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:key\\/[a-zA-Z0-9-]+$", + "type": "string" + }, + "Description": { + "maxLength": 256, + "minLength": 1, + "pattern": "^.+$", + "type": "string" + }, + "DisplayName": { + "maxLength": 64, + "minLength": 1, + "pattern": "^.+$", + "type": "string" + }, + "IpAccessSettingsArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "IpRules": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpRule" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/AssociatedPortalArns", + "/properties/CreationDate", + "/properties/IpAccessSettingsArn" + ], + "required": [ + "IpRules" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "workspaces-web:UntagResource", + "workspaces-web:ListTagsForResource", + "workspaces-web:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::WorkSpacesWeb::IpAccessSettings" +} diff --git a/src/schema/aws-workspacesweb-networksettings.json b/src/schema/aws-workspacesweb-networksettings.json index f8721935..1dbbf15a 100644 --- a/src/schema/aws-workspacesweb-networksettings.json +++ b/src/schema/aws-workspacesweb-networksettings.json @@ -1,147 +1,147 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::WorkSpacesWeb::NetworkSettings Resource Type", - "handlers": { - "create": { - "permissions": [ - "workspaces-web:CreateNetworkSettings", - "workspaces-web:GetNetworkSettings", - "workspaces-web:ListTagsForResource", - "workspaces-web:TagResource" - ] - }, - "delete": { - "permissions": [ - "workspaces-web:GetNetworkSettings", - "workspaces-web:DeleteNetworkSettings" - ] - }, - "list": { - "permissions": [ - "workspaces-web:ListNetworkSettings" - ] - }, - "read": { - "permissions": [ - "workspaces-web:GetNetworkSettings", - "workspaces-web:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "workspaces-web:UpdateNetworkSettings", - "workspaces-web:UpdateResource", - "workspaces-web:TagResource", - "workspaces-web:UntagResource", - "workspaces-web:GetNetworkSettings", - "workspaces-web:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/NetworkSettingsArn" - ], - "properties": { - "AssociatedPortalArns": { - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - }, - "type": "array" - }, - "NetworkSettingsArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - }, - "SecurityGroupIds": { - "insertionOrder": false, - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[\\w+\\-]+$", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "SubnetIds": { - "insertionOrder": false, - "items": { - "maxLength": 32, - "minLength": 1, - "pattern": "^subnet-([0-9a-f]{8}|[0-9a-f]{17})$", - "type": "string" - }, - "maxItems": 3, - "minItems": 2, - "type": "array" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "VpcId": { - "maxLength": 255, - "minLength": 1, - "pattern": "^vpc-[0-9a-z]*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AssociatedPortalArns", - "/properties/NetworkSettingsArn" - ], - "required": [ - "SecurityGroupIds", - "SubnetIds", - "VpcId" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "workspaces-web:UntagResource", - "workspaces-web:ListTagsForResource", - "workspaces-web:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::WorkSpacesWeb::NetworkSettings" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::WorkSpacesWeb::NetworkSettings Resource Type", + "handlers": { + "create": { + "permissions": [ + "workspaces-web:CreateNetworkSettings", + "workspaces-web:GetNetworkSettings", + "workspaces-web:ListTagsForResource", + "workspaces-web:TagResource" + ] + }, + "delete": { + "permissions": [ + "workspaces-web:GetNetworkSettings", + "workspaces-web:DeleteNetworkSettings" + ] + }, + "list": { + "permissions": [ + "workspaces-web:ListNetworkSettings" + ] + }, + "read": { + "permissions": [ + "workspaces-web:GetNetworkSettings", + "workspaces-web:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "workspaces-web:UpdateNetworkSettings", + "workspaces-web:UpdateResource", + "workspaces-web:TagResource", + "workspaces-web:UntagResource", + "workspaces-web:GetNetworkSettings", + "workspaces-web:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/NetworkSettingsArn" + ], + "properties": { + "AssociatedPortalArns": { + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "type": "array" + }, + "NetworkSettingsArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\w+\\-]+$", + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "minLength": 1, + "pattern": "^subnet-([0-9a-f]{8}|[0-9a-f]{17})$", + "type": "string" + }, + "maxItems": 3, + "minItems": 2, + "type": "array" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "VpcId": { + "maxLength": 255, + "minLength": 1, + "pattern": "^vpc-[0-9a-z]*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AssociatedPortalArns", + "/properties/NetworkSettingsArn" + ], + "required": [ + "SecurityGroupIds", + "SubnetIds", + "VpcId" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "workspaces-web:UntagResource", + "workspaces-web:ListTagsForResource", + "workspaces-web:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::WorkSpacesWeb::NetworkSettings" +} diff --git a/src/schema/aws-workspacesweb-portal.json b/src/schema/aws-workspacesweb-portal.json index dac27e50..3c26be7f 100644 --- a/src/schema/aws-workspacesweb-portal.json +++ b/src/schema/aws-workspacesweb-portal.json @@ -1,319 +1,326 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdditionalEncryptionContext", - "/properties/CustomerManagedKey" - ], - "definitions": { - "AuthenticationType": { - "enum": [ - "Standard", - "IAM_Identity_Center" - ], - "type": "string" - }, - "BrowserType": { - "enum": [ - "Chrome" - ], - "type": "string" - }, - "EncryptionContextMap": { - "additionalProperties": false, - "patternProperties": { - "^[\\s\\S]*$": { - "maxLength": 131072, - "minLength": 0, - "pattern": "^[\\s\\S]*$", - "type": "string" - } - }, - "type": "object" - }, - "InstanceType": { - "enum": [ - "standard.regular", - "standard.large", - "standard.xlarge" - ], - "type": "string" - }, - "PortalStatus": { - "enum": [ - "Incomplete", - "Pending", - "Active" - ], - "type": "string" - }, - "RendererType": { - "enum": [ - "AppStream" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::WorkSpacesWeb::Portal Resource Type", - "handlers": { - "create": { - "permissions": [ - "workspaces-web:CreatePortal", - "workspaces-web:GetPortal", - "workspaces-web:GetPortalServiceProviderMetadata", - "workspaces-web:AssociateBrowserSettings", - "workspaces-web:AssociateIpAccessSettings", - "workspaces-web:AssociateNetworkSettings", - "workspaces-web:AssociateTrustStore", - "workspaces-web:AssociateUserAccessLoggingSettings", - "workspaces-web:AssociateUserSettings", - "workspaces-web:ListTagsForResource", - "workspaces-web:TagResource", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt", - "kms:GenerateDataKeyWithoutPlaintext", - "kms:ReEncryptTo", - "kms:ReEncryptFrom", - "ec2:CreateNetworkInterface", - "ec2:CreateNetworkInterfacePermission", - "ec2:DeleteNetworkInterface", - "ec2:DeleteNetworkInterfacePermission", - "ec2:ModifyNetworkInterfaceAttribute", - "kinesis:PutRecord", - "kinesis:PutRecords", - "kinesis:DescribeStreamSummary", - "sso:CreateManagedApplicationInstance", - "sso:DescribeRegisteredRegions" - ] - }, - "delete": { - "permissions": [ - "workspaces-web:GetPortal", - "workspaces-web:DeletePortal", - "workspaces-web:DisassociateBrowserSettings", - "workspaces-web:DisassociateIpAccessSettings", - "workspaces-web:DisassociateNetworkSettings", - "workspaces-web:DisassociateTrustStore", - "workspaces-web:DisassociateUserAccessLoggingSettings", - "workspaces-web:DisassociateUserSettings", - "kms:Decrypt", - "kms:DescribeKey", - "sso:DeleteManagedApplicationInstance" - ] - }, - "list": { - "permissions": [ - "workspaces-web:ListPortals", - "kms:Decrypt", - "kms:DescribeKey" - ] - }, - "read": { - "permissions": [ - "workspaces-web:GetPortal", - "workspaces-web:GetPortalServiceProviderMetadata", - "workspaces-web:ListTagsForResource", - "kms:Decrypt", - "kms:DescribeKey" - ] - }, - "update": { - "permissions": [ - "workspaces-web:GetPortal", - "workspaces-web:GetPortalServiceProviderMetadata", - "workspaces-web:UpdatePortal", - "workspaces-web:AssociateBrowserSettings", - "workspaces-web:AssociateIpAccessSettings", - "workspaces-web:AssociateNetworkSettings", - "workspaces-web:AssociateTrustStore", - "workspaces-web:AssociateUserAccessLoggingSettings", - "workspaces-web:AssociateUserSettings", - "workspaces-web:DisassociateBrowserSettings", - "workspaces-web:DisassociateIpAccessSettings", - "workspaces-web:DisassociateNetworkSettings", - "workspaces-web:DisassociateTrustStore", - "workspaces-web:DisassociateUserAccessLoggingSettings", - "workspaces-web:DisassociateUserSettings", - "workspaces-web:ListTagsForResource", - "workspaces-web:TagResource", - "workspaces-web:UntagResource", - "kms:CreateGrant", - "kms:Encrypt", - "kms:GenerateDataKey", - "kms:Decrypt", - "kms:DescribeKey", - "ec2:CreateNetworkInterface", - "ec2:CreateNetworkInterfacePermission", - "ec2:DeleteNetworkInterface", - "ec2:DeleteNetworkInterfacePermission", - "ec2:ModifyNetworkInterfaceAttribute", - "kinesis:PutRecord", - "kinesis:PutRecords", - "kinesis:DescribeStreamSummary", - "sso:CreateManagedApplicationInstance", - "sso:DeleteManagedApplicationInstance", - "sso:DescribeRegisteredRegions", - "sso:GetApplicationInstance", - "sso:ListApplicationInstances" - ] - } - }, - "primaryIdentifier": [ - "/properties/PortalArn" - ], - "properties": { - "AdditionalEncryptionContext": { - "$ref": "#/definitions/EncryptionContextMap" - }, - "AuthenticationType": { - "$ref": "#/definitions/AuthenticationType" - }, - "BrowserSettingsArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - }, - "BrowserType": { - "$ref": "#/definitions/BrowserType" - }, - "CreationDate": { - "format": "date-time", - "type": "string" - }, - "CustomerManagedKey": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:kms:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:key\\/[a-zA-Z0-9-]+$", - "type": "string" - }, - "DisplayName": { - "maxLength": 64, - "minLength": 1, - "pattern": "^.+$", - "type": "string" - }, - "InstanceType": { - "$ref": "#/definitions/InstanceType" - }, - "IpAccessSettingsArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - }, - "MaxConcurrentSessions": { - "maximum": 5000, - "minimum": 1, - "type": "number" - }, - "NetworkSettingsArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - }, - "PortalArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - }, - "PortalEndpoint": { - "maxLength": 253, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]?((?!-)([A-Za-z0-9-]*[A-Za-z0-9])\\.)+[a-zA-Z0-9]+$", - "type": "string" - }, - "PortalStatus": { - "$ref": "#/definitions/PortalStatus" - }, - "RendererType": { - "$ref": "#/definitions/RendererType" - }, - "ServiceProviderSamlMetadata": { - "maxLength": 204800, - "minLength": 0, - "pattern": "^.*$", - "type": "string" - }, - "StatusReason": { - "maxLength": 1024, - "minLength": 1, - "pattern": ".*", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TrustStoreArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - }, - "UserAccessLoggingSettingsArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - }, - "UserSettingsArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/BrowserType", - "/properties/CreationDate", - "/properties/PortalArn", - "/properties/PortalEndpoint", - "/properties/PortalStatus", - "/properties/RendererType", - "/properties/ServiceProviderSamlMetadata", - "/properties/StatusReason" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "workspaces-web:UntagResource", - "workspaces-web:ListTagsForResource", - "workspaces-web:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::WorkSpacesWeb::Portal" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AdditionalEncryptionContext", + "/properties/CustomerManagedKey" + ], + "definitions": { + "AuthenticationType": { + "enum": [ + "Standard", + "IAM_Identity_Center" + ], + "type": "string" + }, + "BrowserType": { + "enum": [ + "Chrome" + ], + "type": "string" + }, + "EncryptionContextMap": { + "additionalProperties": false, + "patternProperties": { + "^[\\s\\S]*$": { + "maxLength": 131072, + "minLength": 0, + "pattern": "^[\\s\\S]*$", + "type": "string" + } + }, + "type": "object" + }, + "InstanceType": { + "enum": [ + "standard.regular", + "standard.large", + "standard.xlarge" + ], + "type": "string" + }, + "PortalStatus": { + "enum": [ + "Incomplete", + "Pending", + "Active" + ], + "type": "string" + }, + "RendererType": { + "enum": [ + "AppStream" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::WorkSpacesWeb::Portal Resource Type", + "handlers": { + "create": { + "permissions": [ + "workspaces-web:CreatePortal", + "workspaces-web:GetPortal*", + "workspaces-web:AssociateBrowserSettings", + "workspaces-web:AssociateIpAccessSettings", + "workspaces-web:AssociateNetworkSettings", + "workspaces-web:AssociateTrustStore", + "workspaces-web:AssociateUserAccessLoggingSettings", + "workspaces-web:AssociateUserSettings", + "workspaces-web:AssociateDataProtectionSettings", + "workspaces-web:List*", + "workspaces-web:TagResource", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt", + "kms:GenerateDataKeyWithoutPlaintext", + "kms:ReEncryptTo", + "kms:ReEncryptFrom", + "ec2:CreateNetworkInterface", + "ec2:CreateNetworkInterfacePermission", + "ec2:DeleteNetworkInterface", + "ec2:DeleteNetworkInterfacePermission", + "ec2:ModifyNetworkInterfaceAttribute", + "kinesis:PutRecord", + "kinesis:PutRecords", + "kinesis:Describe*", + "sso:CreateManagedApplicationInstance", + "sso:Describe*" + ] + }, + "delete": { + "permissions": [ + "workspaces-web:GetPortal*", + "workspaces-web:DeletePortal", + "workspaces-web:DisassociateBrowserSettings", + "workspaces-web:DisassociateIpAccessSettings", + "workspaces-web:DisassociateNetworkSettings", + "workspaces-web:DisassociateTrustStore", + "workspaces-web:DisassociateUserAccessLoggingSettings", + "workspaces-web:DisassociateUserSettings", + "workspaces-web:DisassociateDataProtectionSettings", + "kms:Decrypt", + "kms:DescribeKey", + "sso:DeleteManagedApplicationInstance" + ] + }, + "list": { + "permissions": [ + "workspaces-web:List*", + "kms:Decrypt", + "kms:DescribeKey" + ] + }, + "read": { + "permissions": [ + "workspaces-web:GetPortal*", + "workspaces-web:List*", + "kms:Decrypt", + "kms:DescribeKey" + ] + }, + "update": { + "permissions": [ + "workspaces-web:GetPortal*", + "workspaces-web:UpdatePortal", + "workspaces-web:AssociateBrowserSettings", + "workspaces-web:AssociateIpAccessSettings", + "workspaces-web:AssociateNetworkSettings", + "workspaces-web:AssociateTrustStore", + "workspaces-web:AssociateUserAccessLoggingSettings", + "workspaces-web:AssociateUserSettings", + "workspaces-web:AssociateDataProtectionSettings", + "workspaces-web:DisassociateBrowserSettings", + "workspaces-web:DisassociateIpAccessSettings", + "workspaces-web:DisassociateNetworkSettings", + "workspaces-web:DisassociateTrustStore", + "workspaces-web:DisassociateUserAccessLoggingSettings", + "workspaces-web:DisassociateUserSettings", + "workspaces-web:DisassociateDataProtectionSettings", + "workspaces-web:List*", + "workspaces-web:TagResource", + "workspaces-web:UntagResource", + "kms:CreateGrant", + "kms:Encrypt", + "kms:GenerateDataKey", + "kms:Decrypt", + "kms:DescribeKey", + "ec2:CreateNetworkInterface", + "ec2:CreateNetworkInterfacePermission", + "ec2:DeleteNetworkInterface", + "ec2:DeleteNetworkInterfacePermission", + "ec2:ModifyNetworkInterfaceAttribute", + "kinesis:PutRecord", + "kinesis:PutRecords", + "kinesis:Describe*", + "sso:CreateManagedApplicationInstance", + "sso:DeleteManagedApplicationInstance", + "sso:Describe*", + "sso:GetApplicationInstance", + "sso:List*" + ] + } + }, + "primaryIdentifier": [ + "/properties/PortalArn" + ], + "properties": { + "AdditionalEncryptionContext": { + "$ref": "#/definitions/EncryptionContextMap" + }, + "AuthenticationType": { + "$ref": "#/definitions/AuthenticationType" + }, + "BrowserSettingsArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "BrowserType": { + "$ref": "#/definitions/BrowserType" + }, + "CreationDate": { + "format": "date-time", + "type": "string" + }, + "CustomerManagedKey": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:kms:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:key\\/[a-zA-Z0-9-]+$", + "type": "string" + }, + "DataProtectionSettingsArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "DisplayName": { + "maxLength": 64, + "minLength": 1, + "pattern": "^.+$", + "type": "string" + }, + "InstanceType": { + "$ref": "#/definitions/InstanceType" + }, + "IpAccessSettingsArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "MaxConcurrentSessions": { + "maximum": 5000, + "minimum": 1, + "type": "number" + }, + "NetworkSettingsArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "PortalArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "PortalEndpoint": { + "maxLength": 253, + "minLength": 1, + "pattern": "^[a-zA-Z0-9]?((?!-)([A-Za-z0-9-]*[A-Za-z0-9])\\.)+[a-zA-Z0-9]+$", + "type": "string" + }, + "PortalStatus": { + "$ref": "#/definitions/PortalStatus" + }, + "RendererType": { + "$ref": "#/definitions/RendererType" + }, + "ServiceProviderSamlMetadata": { + "maxLength": 204800, + "minLength": 0, + "pattern": "^.*$", + "type": "string" + }, + "StatusReason": { + "maxLength": 1024, + "minLength": 1, + "pattern": ".*", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TrustStoreArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "UserAccessLoggingSettingsArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "UserSettingsArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/BrowserType", + "/properties/CreationDate", + "/properties/PortalArn", + "/properties/PortalEndpoint", + "/properties/PortalStatus", + "/properties/RendererType", + "/properties/ServiceProviderSamlMetadata", + "/properties/StatusReason" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "workspaces-web:UntagResource", + "workspaces-web:List*", + "workspaces-web:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::WorkSpacesWeb::Portal" +} diff --git a/src/schema/aws-workspacesweb-truststore.json b/src/schema/aws-workspacesweb-truststore.json index c6311778..f0cd8a3a 100644 --- a/src/schema/aws-workspacesweb-truststore.json +++ b/src/schema/aws-workspacesweb-truststore.json @@ -1,129 +1,129 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::WorkSpacesWeb::TrustStore Resource Type", - "handlers": { - "create": { - "permissions": [ - "workspaces-web:CreateTrustStore", - "workspaces-web:GetTrustStore", - "workspaces-web:GetTrustStoreCertificate", - "workspaces-web:ListTrustStoreCertificates", - "workspaces-web:ListTagsForResource", - "workspaces-web:TagResource" - ] - }, - "delete": { - "permissions": [ - "workspaces-web:GetTrustStore", - "workspaces-web:GetTrustStoreCertificate", - "workspaces-web:DeleteTrustStore" - ] - }, - "list": { - "permissions": [ - "workspaces-web:ListTrustStores", - "workspaces-web:ListTrustStoreCertificates" - ] - }, - "read": { - "permissions": [ - "workspaces-web:GetTrustStore", - "workspaces-web:GetTrustStoreCertificate", - "workspaces-web:ListTagsForResource", - "workspaces-web:ListTrustStoreCertificates" - ] - }, - "update": { - "permissions": [ - "workspaces-web:UpdateTrustStore", - "workspaces-web:TagResource", - "workspaces-web:UntagResource", - "workspaces-web:GetTrustStore", - "workspaces-web:GetTrustStoreCertificate", - "workspaces-web:ListTagsForResource", - "workspaces-web:ListTrustStoreCertificates" - ] - } - }, - "primaryIdentifier": [ - "/properties/TrustStoreArn" - ], - "properties": { - "AssociatedPortalArns": { - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - }, - "type": "array" - }, - "CertificateList": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "TrustStoreArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AssociatedPortalArns", - "/properties/TrustStoreArn" - ], - "required": [ - "CertificateList" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "workspaces-web:UntagResource", - "workspaces-web:ListTagsForResource", - "workspaces-web:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::WorkSpacesWeb::TrustStore" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::WorkSpacesWeb::TrustStore Resource Type", + "handlers": { + "create": { + "permissions": [ + "workspaces-web:CreateTrustStore", + "workspaces-web:GetTrustStore", + "workspaces-web:GetTrustStoreCertificate", + "workspaces-web:ListTrustStoreCertificates", + "workspaces-web:ListTagsForResource", + "workspaces-web:TagResource" + ] + }, + "delete": { + "permissions": [ + "workspaces-web:GetTrustStore", + "workspaces-web:GetTrustStoreCertificate", + "workspaces-web:DeleteTrustStore" + ] + }, + "list": { + "permissions": [ + "workspaces-web:ListTrustStores", + "workspaces-web:ListTrustStoreCertificates" + ] + }, + "read": { + "permissions": [ + "workspaces-web:GetTrustStore", + "workspaces-web:GetTrustStoreCertificate", + "workspaces-web:ListTagsForResource", + "workspaces-web:ListTrustStoreCertificates" + ] + }, + "update": { + "permissions": [ + "workspaces-web:UpdateTrustStore", + "workspaces-web:TagResource", + "workspaces-web:UntagResource", + "workspaces-web:GetTrustStore", + "workspaces-web:GetTrustStoreCertificate", + "workspaces-web:ListTagsForResource", + "workspaces-web:ListTrustStoreCertificates" + ] + } + }, + "primaryIdentifier": [ + "/properties/TrustStoreArn" + ], + "properties": { + "AssociatedPortalArns": { + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "type": "array" + }, + "CertificateList": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "TrustStoreArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AssociatedPortalArns", + "/properties/TrustStoreArn" + ], + "required": [ + "CertificateList" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "workspaces-web:UntagResource", + "workspaces-web:ListTagsForResource", + "workspaces-web:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::WorkSpacesWeb::TrustStore" +} diff --git a/src/schema/aws-workspacesweb-useraccessloggingsettings.json b/src/schema/aws-workspacesweb-useraccessloggingsettings.json index 487ad20e..b32ffeb6 100644 --- a/src/schema/aws-workspacesweb-useraccessloggingsettings.json +++ b/src/schema/aws-workspacesweb-useraccessloggingsettings.json @@ -1,123 +1,123 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::WorkSpacesWeb::UserAccessLoggingSettings Resource Type", - "handlers": { - "create": { - "permissions": [ - "workspaces-web:CreateUserAccessLoggingSettings", - "workspaces-web:GetUserAccessLoggingSettings", - "workspaces-web:ListTagsForResource", - "workspaces-web:TagResource" - ] - }, - "delete": { - "permissions": [ - "workspaces-web:GetUserAccessLoggingSettings", - "workspaces-web:DeleteUserAccessLoggingSettings" - ] - }, - "list": { - "permissions": [ - "workspaces-web:ListUserAccessLoggingSettings" - ] - }, - "read": { - "permissions": [ - "workspaces-web:GetUserAccessLoggingSettings", - "workspaces-web:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "workspaces-web:UpdateUserAccessLoggingSettings", - "workspaces-web:TagResource", - "workspaces-web:UntagResource", - "workspaces-web:GetUserAccessLoggingSettings", - "workspaces-web:ListTagsForResource", - "kinesis:PutRecord", - "kinesis:PutRecords" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserAccessLoggingSettingsArn" - ], - "properties": { - "AssociatedPortalArns": { - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - }, - "type": "array" - }, - "KinesisStreamArn": { - "description": "Kinesis stream ARN to which log events are published.", - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:[\\w+=/,.@-]+:kinesis:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:stream/.+", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "UserAccessLoggingSettingsArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AssociatedPortalArns", - "/properties/UserAccessLoggingSettingsArn" - ], - "required": [ - "KinesisStreamArn" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "workspaces-web:UntagResource", - "workspaces-web:ListTagsForResource", - "workspaces-web:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::WorkSpacesWeb::UserAccessLoggingSettings" -} +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "description": "Definition of AWS::WorkSpacesWeb::UserAccessLoggingSettings Resource Type", + "handlers": { + "create": { + "permissions": [ + "workspaces-web:CreateUserAccessLoggingSettings", + "workspaces-web:GetUserAccessLoggingSettings", + "workspaces-web:ListTagsForResource", + "workspaces-web:TagResource" + ] + }, + "delete": { + "permissions": [ + "workspaces-web:GetUserAccessLoggingSettings", + "workspaces-web:DeleteUserAccessLoggingSettings" + ] + }, + "list": { + "permissions": [ + "workspaces-web:ListUserAccessLoggingSettings" + ] + }, + "read": { + "permissions": [ + "workspaces-web:GetUserAccessLoggingSettings", + "workspaces-web:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "workspaces-web:UpdateUserAccessLoggingSettings", + "workspaces-web:TagResource", + "workspaces-web:UntagResource", + "workspaces-web:GetUserAccessLoggingSettings", + "workspaces-web:ListTagsForResource", + "kinesis:PutRecord", + "kinesis:PutRecords" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserAccessLoggingSettingsArn" + ], + "properties": { + "AssociatedPortalArns": { + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "type": "array" + }, + "KinesisStreamArn": { + "description": "Kinesis stream ARN to which log events are published.", + "maxLength": 2048, + "minLength": 20, + "pattern": "arn:[\\w+=/,.@-]+:kinesis:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:stream/.+", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "UserAccessLoggingSettingsArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AssociatedPortalArns", + "/properties/UserAccessLoggingSettingsArn" + ], + "required": [ + "KinesisStreamArn" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "workspaces-web:UntagResource", + "workspaces-web:ListTagsForResource", + "workspaces-web:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::WorkSpacesWeb::UserAccessLoggingSettings" +} diff --git a/src/schema/aws-workspacesweb-usersettings.json b/src/schema/aws-workspacesweb-usersettings.json index 44033145..95117e59 100644 --- a/src/schema/aws-workspacesweb-usersettings.json +++ b/src/schema/aws-workspacesweb-usersettings.json @@ -1,254 +1,315 @@ -{ - "additionalProperties": false, - "definitions": { - "CookieSpecification": { - "additionalProperties": false, - "properties": { - "Domain": { - "maxLength": 253, - "minLength": 0, - "pattern": "^(\\.?)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)*[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$", - "type": "string" - }, - "Name": { - "maxLength": 4096, - "minLength": 0, - "type": "string" - }, - "Path": { - "maxLength": 2000, - "minLength": 0, - "pattern": "^/(\\S)*$", - "type": "string" - } - }, - "required": [ - "Domain" - ], - "type": "object" - }, - "CookieSynchronizationConfiguration": { - "additionalProperties": false, - "properties": { - "Allowlist": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CookieSpecification" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - }, - "Blocklist": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CookieSpecification" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Allowlist" - ], - "type": "object" - }, - "EnabledType": { - "enum": [ - "Disabled", - "Enabled" - ], - "type": "string" - }, - "EncryptionContextMap": { - "additionalProperties": false, - "patternProperties": { - "^[\\s\\S]*$": { - "maxLength": 131072, - "minLength": 0, - "pattern": "^[\\s\\S]*$", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "description": "Definition of AWS::WorkSpacesWeb::UserSettings Resource Type", - "handlers": { - "create": { - "permissions": [ - "workspaces-web:CreateUserSettings", - "workspaces-web:GetUserSettings", - "workspaces-web:ListTagsForResource", - "workspaces-web:TagResource", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt", - "kms:GenerateDataKeyWithoutPlaintext", - "kms:ReEncryptTo", - "kms:ReEncryptFrom" - ] - }, - "delete": { - "permissions": [ - "workspaces-web:GetUserSettings", - "workspaces-web:DeleteUserSettings", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "list": { - "permissions": [ - "workspaces-web:ListUserSettings", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "read": { - "permissions": [ - "workspaces-web:GetUserSettings", - "workspaces-web:ListTagsForResource", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - }, - "update": { - "permissions": [ - "workspaces-web:UpdateUserSettings", - "workspaces-web:TagResource", - "workspaces-web:UntagResource", - "workspaces-web:GetUserSettings", - "workspaces-web:ListTagsForResource", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserSettingsArn" - ], - "properties": { - "AdditionalEncryptionContext": { - "$ref": "#/definitions/EncryptionContextMap" - }, - "AssociatedPortalArns": { - "insertionOrder": false, - "items": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - }, - "type": "array" - }, - "CookieSynchronizationConfiguration": { - "$ref": "#/definitions/CookieSynchronizationConfiguration" - }, - "CopyAllowed": { - "$ref": "#/definitions/EnabledType" - }, - "CustomerManagedKey": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:kms:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:key\\/[a-zA-Z0-9-]+$", - "type": "string" - }, - "DeepLinkAllowed": { - "$ref": "#/definitions/EnabledType" - }, - "DisconnectTimeoutInMinutes": { - "default": null, - "maximum": 600, - "minimum": 1, - "type": "number" - }, - "DownloadAllowed": { - "$ref": "#/definitions/EnabledType" - }, - "IdleDisconnectTimeoutInMinutes": { - "default": null, - "maximum": 60, - "minimum": 0, - "type": "number" - }, - "PasteAllowed": { - "$ref": "#/definitions/EnabledType" - }, - "PrintAllowed": { - "$ref": "#/definitions/EnabledType" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array" - }, - "UploadAllowed": { - "$ref": "#/definitions/EnabledType" - }, - "UserSettingsArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AssociatedPortalArns", - "/properties/UserSettingsArn" - ], - "required": [ - "CopyAllowed", - "DownloadAllowed", - "PasteAllowed", - "PrintAllowed", - "UploadAllowed" - ], - "tagging": { - "cloudFormationSystemTags": false, - "permissions": [ - "workspaces-web:UntagResource", - "workspaces-web:ListTagsForResource", - "workspaces-web:TagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::WorkSpacesWeb::UserSettings" -} +{ + "additionalProperties": false, + "definitions": { + "CookieSpecification": { + "additionalProperties": false, + "properties": { + "Domain": { + "maxLength": 253, + "minLength": 0, + "pattern": "^(\\.?)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)*[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$", + "type": "string" + }, + "Name": { + "maxLength": 4096, + "minLength": 0, + "type": "string" + }, + "Path": { + "maxLength": 2000, + "minLength": 0, + "pattern": "^/(\\S)*$", + "type": "string" + } + }, + "required": [ + "Domain" + ], + "type": "object" + }, + "CookieSynchronizationConfiguration": { + "additionalProperties": false, + "properties": { + "Allowlist": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CookieSpecification" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + }, + "Blocklist": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CookieSpecification" + }, + "maxItems": 10, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "Allowlist" + ], + "type": "object" + }, + "EnabledType": { + "enum": [ + "Disabled", + "Enabled" + ], + "type": "string" + }, + "EncryptionContextMap": { + "additionalProperties": false, + "patternProperties": { + "^[\\s\\S]*$": { + "maxLength": 131072, + "minLength": 0, + "pattern": "^[\\s\\S]*$", + "type": "string" + } + }, + "type": "object" + }, + "MaxDisplayResolution": { + "enum": [ + "size4096X2160", + "size3840X2160", + "size3440X1440", + "size2560X1440", + "size1920X1080", + "size1280X720", + "size1024X768", + "size800X600" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "ToolbarConfiguration": { + "additionalProperties": false, + "properties": { + "HiddenToolbarItems": { + "items": { + "$ref": "#/definitions/ToolbarItem" + }, + "type": "array" + }, + "MaxDisplayResolution": { + "$ref": "#/definitions/MaxDisplayResolution" + }, + "ToolbarType": { + "$ref": "#/definitions/ToolbarType" + }, + "VisualMode": { + "$ref": "#/definitions/VisualMode" + } + }, + "type": "object" + }, + "ToolbarItem": { + "enum": [ + "Windows", + "DualMonitor", + "FullScreen", + "Webcam", + "Microphone" + ], + "type": "string" + }, + "ToolbarType": { + "enum": [ + "Floating", + "Docked" + ], + "type": "string" + }, + "VisualMode": { + "enum": [ + "Dark", + "Light" + ], + "type": "string" + } + }, + "description": "Definition of AWS::WorkSpacesWeb::UserSettings Resource Type", + "handlers": { + "create": { + "permissions": [ + "workspaces-web:CreateUserSettings", + "workspaces-web:GetUserSettings", + "workspaces-web:ListTagsForResource", + "workspaces-web:TagResource", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt", + "kms:GenerateDataKeyWithoutPlaintext", + "kms:ReEncryptTo", + "kms:ReEncryptFrom" + ] + }, + "delete": { + "permissions": [ + "workspaces-web:GetUserSettings", + "workspaces-web:DeleteUserSettings", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "list": { + "permissions": [ + "workspaces-web:ListUserSettings", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "read": { + "permissions": [ + "workspaces-web:GetUserSettings", + "workspaces-web:ListTagsForResource", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "workspaces-web:UpdateUserSettings", + "workspaces-web:TagResource", + "workspaces-web:UntagResource", + "workspaces-web:GetUserSettings", + "workspaces-web:ListTagsForResource", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserSettingsArn" + ], + "properties": { + "AdditionalEncryptionContext": { + "$ref": "#/definitions/EncryptionContextMap" + }, + "AssociatedPortalArns": { + "insertionOrder": false, + "items": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + }, + "type": "array" + }, + "CookieSynchronizationConfiguration": { + "$ref": "#/definitions/CookieSynchronizationConfiguration" + }, + "CopyAllowed": { + "$ref": "#/definitions/EnabledType" + }, + "CustomerManagedKey": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:kms:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:key\\/[a-zA-Z0-9-]+$", + "type": "string" + }, + "DeepLinkAllowed": { + "$ref": "#/definitions/EnabledType" + }, + "DisconnectTimeoutInMinutes": { + "default": null, + "maximum": 600, + "minimum": 1, + "type": "number" + }, + "DownloadAllowed": { + "$ref": "#/definitions/EnabledType" + }, + "IdleDisconnectTimeoutInMinutes": { + "default": null, + "maximum": 60, + "minimum": 0, + "type": "number" + }, + "PasteAllowed": { + "$ref": "#/definitions/EnabledType" + }, + "PrintAllowed": { + "$ref": "#/definitions/EnabledType" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + }, + "ToolbarConfiguration": { + "$ref": "#/definitions/ToolbarConfiguration" + }, + "UploadAllowed": { + "$ref": "#/definitions/EnabledType" + }, + "UserSettingsArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AssociatedPortalArns", + "/properties/UserSettingsArn" + ], + "required": [ + "CopyAllowed", + "DownloadAllowed", + "PasteAllowed", + "PrintAllowed", + "UploadAllowed" + ], + "tagging": { + "cloudFormationSystemTags": false, + "permissions": [ + "workspaces-web:UntagResource", + "workspaces-web:ListTagsForResource", + "workspaces-web:TagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::WorkSpacesWeb::UserSettings" +} diff --git a/src/schema/aws-xray-group.json b/src/schema/aws-xray-group.json index 55cccaa0..0fa468da 100644 --- a/src/schema/aws-xray-group.json +++ b/src/schema/aws-xray-group.json @@ -1,125 +1,125 @@ -{ - "additionalProperties": false, - "definitions": { - "InsightsConfiguration": { - "additionalProperties": false, - "properties": { - "InsightsEnabled": { - "description": "Set the InsightsEnabled value to true to enable insights or false to disable insights.", - "type": "boolean" - }, - "NotificationsEnabled": { - "description": "Set the NotificationsEnabled value to true to enable insights notifications. Notifications can only be enabled on a group with InsightsEnabled set to true.", - "type": "boolean" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key name of the tag.", - "type": "string" - }, - "Value": { - "description": "The value for the tag.", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "description": "This schema provides construct and validation rules for AWS-XRay Group resource parameters.", - "handlers": { - "create": { - "permissions": [ - "xray:CreateGroup", - "xray:TagResource" - ] - }, - "delete": { - "permissions": [ - "xray:DeleteGroup" - ] - }, - "list": { - "permissions": [ - "xray:GetGroups", - "xray:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "xray:GetGroup", - "xray:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "xray:UpdateGroup", - "xray:TagResource", - "xray:UntagResource", - "xray:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/GroupARN" - ], - "properties": { - "FilterExpression": { - "description": "The filter expression defining criteria by which to group traces.", - "type": "string" - }, - "GroupARN": { - "description": "The ARN of the group that was generated on creation.", - "maxLength": 400, - "minLength": 1, - "type": "string" - }, - "GroupName": { - "description": "The case-sensitive name of the new group. Names must be unique.", - "maxLength": 32, - "minLength": 1, - "type": "string" - }, - "InsightsConfiguration": { - "$ref": "#/definitions/InsightsConfiguration" - }, - "Tags": { - "$ref": "#/definitions/Tags" - } - }, - "readOnlyProperties": [ - "/properties/GroupARN" - ], - "required": [ - "GroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "xray:TagResource", - "xray:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::XRay::Group" -} +{ + "additionalProperties": false, + "definitions": { + "InsightsConfiguration": { + "additionalProperties": false, + "properties": { + "InsightsEnabled": { + "description": "Set the InsightsEnabled value to true to enable insights or false to disable insights.", + "type": "boolean" + }, + "NotificationsEnabled": { + "description": "Set the NotificationsEnabled value to true to enable insights notifications. Notifications can only be enabled on a group with InsightsEnabled set to true.", + "type": "boolean" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag.", + "type": "string" + }, + "Value": { + "description": "The value for the tag.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "description": "This schema provides construct and validation rules for AWS-XRay Group resource parameters.", + "handlers": { + "create": { + "permissions": [ + "xray:CreateGroup", + "xray:TagResource" + ] + }, + "delete": { + "permissions": [ + "xray:DeleteGroup" + ] + }, + "list": { + "permissions": [ + "xray:GetGroups", + "xray:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "xray:GetGroup", + "xray:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "xray:UpdateGroup", + "xray:TagResource", + "xray:UntagResource", + "xray:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/GroupARN" + ], + "properties": { + "FilterExpression": { + "description": "The filter expression defining criteria by which to group traces.", + "type": "string" + }, + "GroupARN": { + "description": "The ARN of the group that was generated on creation.", + "maxLength": 400, + "minLength": 1, + "type": "string" + }, + "GroupName": { + "description": "The case-sensitive name of the new group. Names must be unique.", + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + "InsightsConfiguration": { + "$ref": "#/definitions/InsightsConfiguration" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/GroupARN" + ], + "required": [ + "GroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "xray:TagResource", + "xray:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::XRay::Group" +} diff --git a/src/schema/aws-xray-resourcepolicy.json b/src/schema/aws-xray-resourcepolicy.json index ba81b912..fdeda97f 100644 --- a/src/schema/aws-xray-resourcepolicy.json +++ b/src/schema/aws-xray-resourcepolicy.json @@ -1,73 +1,73 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyName" - ], - "description": "This schema provides construct and validation rules for AWS-XRay Resource Policy resource parameters.", - "handlers": { - "create": { - "permissions": [ - "xray:PutResourcePolicy", - "xray:ListResourcePolicies" - ] - }, - "delete": { - "permissions": [ - "xray:DeleteResourcePolicy" - ] - }, - "list": { - "permissions": [ - "xray:ListResourcePolicies" - ] - }, - "read": { - "permissions": [ - "xray:ListResourcePolicies" - ] - }, - "update": { - "permissions": [ - "xray:PutResourcePolicy", - "xray:ListResourcePolicies" - ] - } - }, - "primaryIdentifier": [ - "/properties/PolicyName" - ], - "properties": { - "BypassPolicyLockoutCheck": { - "description": "A flag to indicate whether to bypass the resource policy lockout safety check", - "type": "boolean" - }, - "PolicyDocument": { - "description": "The resource policy document, which can be up to 5kb in size.", - "maxLength": 5120, - "minLength": 1, - "type": "string" - }, - "PolicyName": { - "description": "The name of the resource policy. Must be unique within a specific AWS account.", - "maxLength": 128, - "minLength": 1, - "pattern": "[\\w+=,.@-]+", - "type": "string" - } - }, - "required": [ - "PolicyName", - "PolicyDocument" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::XRay::ResourcePolicy", - "writeOnlyProperties": [ - "/properties/BypassPolicyLockoutCheck" - ] -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyName" + ], + "description": "This schema provides construct and validation rules for AWS-XRay Resource Policy resource parameters.", + "handlers": { + "create": { + "permissions": [ + "xray:PutResourcePolicy", + "xray:ListResourcePolicies" + ] + }, + "delete": { + "permissions": [ + "xray:DeleteResourcePolicy" + ] + }, + "list": { + "permissions": [ + "xray:ListResourcePolicies" + ] + }, + "read": { + "permissions": [ + "xray:ListResourcePolicies" + ] + }, + "update": { + "permissions": [ + "xray:PutResourcePolicy", + "xray:ListResourcePolicies" + ] + } + }, + "primaryIdentifier": [ + "/properties/PolicyName" + ], + "properties": { + "BypassPolicyLockoutCheck": { + "description": "A flag to indicate whether to bypass the resource policy lockout safety check", + "type": "boolean" + }, + "PolicyDocument": { + "description": "The resource policy document, which can be up to 5kb in size.", + "maxLength": 5120, + "minLength": 1, + "type": "string" + }, + "PolicyName": { + "description": "The name of the resource policy. Must be unique within a specific AWS account.", + "maxLength": 128, + "minLength": 1, + "pattern": "[\\w+=,.@-]+", + "type": "string" + } + }, + "required": [ + "PolicyName", + "PolicyDocument" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::XRay::ResourcePolicy", + "writeOnlyProperties": [ + "/properties/BypassPolicyLockoutCheck" + ] +} diff --git a/src/schema/aws-xray-samplingrule.json b/src/schema/aws-xray-samplingrule.json index e57f332e..e602d483 100644 --- a/src/schema/aws-xray-samplingrule.json +++ b/src/schema/aws-xray-samplingrule.json @@ -1,295 +1,295 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SamplingRule/Version" - ], - "definitions": { - "RuleARN": { - "description": "The ARN of the sampling rule. Specify a rule by either name or ARN, but not both.", - "type": "string" - }, - "RuleName": { - "description": "The ARN of the sampling rule. Specify a rule by either name or ARN, but not both.", - "maxLength": 32, - "minLength": 1, - "type": "string" - }, - "SamplingRule": { - "additionalProperties": false, - "properties": { - "Attributes": { - "$comment": "String to string map", - "additionalProperties": false, - "description": "Matches attributes derived from the request.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "FixedRate": { - "description": "The percentage of matching requests to instrument, after the reservoir is exhausted.", - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "HTTPMethod": { - "description": "Matches the HTTP method from a request URL.", - "maxLength": 10, - "type": "string" - }, - "Host": { - "description": "Matches the hostname from a request URL.", - "maxLength": 64, - "type": "string" - }, - "Priority": { - "description": "The priority of the sampling rule.", - "maximum": 9999, - "minimum": 1, - "type": "integer" - }, - "ReservoirSize": { - "description": "A fixed number of matching requests to instrument per second, prior to applying the fixed rate. The reservoir is not used directly by services, but applies to all services using the rule collectively.", - "minimum": 0, - "type": "integer" - }, - "ResourceARN": { - "description": "Matches the ARN of the AWS resource on which the service runs.", - "maxLength": 500, - "type": "string" - }, - "RuleARN": { - "$ref": "#/definitions/RuleARN" - }, - "RuleName": { - "$ref": "#/definitions/RuleName" - }, - "ServiceName": { - "description": "Matches the name that the service uses to identify itself in segments.", - "maxLength": 64, - "type": "string" - }, - "ServiceType": { - "description": "Matches the origin that the service uses to identify its type in segments.", - "maxLength": 64, - "type": "string" - }, - "URLPath": { - "description": "Matches the path from a request URL.", - "maxLength": 128, - "type": "string" - }, - "Version": { - "description": "The version of the sampling rule format (1)", - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "FixedRate", - "Host", - "HTTPMethod", - "Priority", - "ReservoirSize", - "ResourceARN", - "ServiceName", - "ServiceType", - "URLPath" - ], - "type": "object" - }, - "SamplingRuleRecord": { - "additionalProperties": false, - "properties": { - "CreatedAt": { - "description": "When the rule was created, in Unix time seconds.", - "type": "string" - }, - "ModifiedAt": { - "description": "When the rule was modified, in Unix time seconds.", - "type": "string" - }, - "SamplingRule": { - "$ref": "#/definitions/SamplingRule" - } - }, - "type": "object" - }, - "SamplingRuleUpdate": { - "additionalProperties": false, - "properties": { - "Attributes": { - "$comment": "String to string map", - "additionalProperties": false, - "description": "Matches attributes derived from the request.", - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "FixedRate": { - "description": "The percentage of matching requests to instrument, after the reservoir is exhausted.", - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "HTTPMethod": { - "description": "Matches the HTTP method from a request URL.", - "maxLength": 10, - "type": "string" - }, - "Host": { - "description": "Matches the hostname from a request URL.", - "maxLength": 64, - "type": "string" - }, - "Priority": { - "description": "The priority of the sampling rule.", - "maximum": 9999, - "minimum": 1, - "type": "integer" - }, - "ReservoirSize": { - "description": "A fixed number of matching requests to instrument per second, prior to applying the fixed rate. The reservoir is not used directly by services, but applies to all services using the rule collectively.", - "minimum": 0, - "type": "integer" - }, - "ResourceARN": { - "description": "Matches the ARN of the AWS resource on which the service runs.", - "maxLength": 500, - "type": "string" - }, - "RuleARN": { - "$ref": "#/definitions/RuleARN" - }, - "RuleName": { - "$ref": "#/definitions/RuleName" - }, - "ServiceName": { - "description": "Matches the name that the service uses to identify itself in segments.", - "maxLength": 64, - "type": "string" - }, - "ServiceType": { - "description": "Matches the origin that the service uses to identify its type in segments.", - "maxLength": 64, - "type": "string" - }, - "URLPath": { - "description": "Matches the path from a request URL.", - "maxLength": 128, - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "description": "The key name of the tag.", - "type": "string" - }, - "Value": { - "description": "The value for the tag.", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "Tags": { - "description": "An array of key-value pairs to apply to this resource.", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "deprecatedProperties": [ - "/properties/RuleName", - "/properties/SamplingRuleRecord", - "/properties/SamplingRuleUpdate" - ], - "description": "This schema provides construct and validation rules for AWS-XRay SamplingRule resource parameters.", - "handlers": { - "create": { - "permissions": [ - "xray:CreateSamplingRule", - "xray:TagResource" - ] - }, - "delete": { - "permissions": [ - "xray:DeleteSamplingRule" - ] - }, - "list": { - "permissions": [ - "xray:GetSamplingRules", - "xray:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "xray:GetSamplingRules", - "xray:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "xray:UpdateSamplingRule", - "xray:TagResource", - "xray:UntagResource", - "xray:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/RuleARN" - ], - "properties": { - "RuleARN": { - "$ref": "#/definitions/RuleARN" - }, - "RuleName": { - "$ref": "#/definitions/RuleName" - }, - "SamplingRule": { - "$ref": "#/definitions/SamplingRule" - }, - "SamplingRuleRecord": { - "$ref": "#/definitions/SamplingRuleRecord" - }, - "SamplingRuleUpdate": { - "$ref": "#/definitions/SamplingRuleUpdate" - }, - "Tags": { - "$ref": "#/definitions/Tags" - } - }, - "readOnlyProperties": [ - "/properties/RuleARN" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "permissions": [ - "xray:TagResource", - "xray:UntagResource" - ], - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::XRay::SamplingRule" -} +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SamplingRule/Version" + ], + "definitions": { + "RuleARN": { + "description": "The ARN of the sampling rule. Specify a rule by either name or ARN, but not both.", + "type": "string" + }, + "RuleName": { + "description": "The ARN of the sampling rule. Specify a rule by either name or ARN, but not both.", + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + "SamplingRule": { + "additionalProperties": false, + "properties": { + "Attributes": { + "$comment": "String to string map", + "additionalProperties": false, + "description": "Matches attributes derived from the request.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "FixedRate": { + "description": "The percentage of matching requests to instrument, after the reservoir is exhausted.", + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "HTTPMethod": { + "description": "Matches the HTTP method from a request URL.", + "maxLength": 10, + "type": "string" + }, + "Host": { + "description": "Matches the hostname from a request URL.", + "maxLength": 64, + "type": "string" + }, + "Priority": { + "description": "The priority of the sampling rule.", + "maximum": 9999, + "minimum": 1, + "type": "integer" + }, + "ReservoirSize": { + "description": "A fixed number of matching requests to instrument per second, prior to applying the fixed rate. The reservoir is not used directly by services, but applies to all services using the rule collectively.", + "minimum": 0, + "type": "integer" + }, + "ResourceARN": { + "description": "Matches the ARN of the AWS resource on which the service runs.", + "maxLength": 500, + "type": "string" + }, + "RuleARN": { + "$ref": "#/definitions/RuleARN" + }, + "RuleName": { + "$ref": "#/definitions/RuleName" + }, + "ServiceName": { + "description": "Matches the name that the service uses to identify itself in segments.", + "maxLength": 64, + "type": "string" + }, + "ServiceType": { + "description": "Matches the origin that the service uses to identify its type in segments.", + "maxLength": 64, + "type": "string" + }, + "URLPath": { + "description": "Matches the path from a request URL.", + "maxLength": 128, + "type": "string" + }, + "Version": { + "description": "The version of the sampling rule format (1)", + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "FixedRate", + "Host", + "HTTPMethod", + "Priority", + "ReservoirSize", + "ResourceARN", + "ServiceName", + "ServiceType", + "URLPath" + ], + "type": "object" + }, + "SamplingRuleRecord": { + "additionalProperties": false, + "properties": { + "CreatedAt": { + "description": "When the rule was created, in Unix time seconds.", + "type": "string" + }, + "ModifiedAt": { + "description": "When the rule was modified, in Unix time seconds.", + "type": "string" + }, + "SamplingRule": { + "$ref": "#/definitions/SamplingRule" + } + }, + "type": "object" + }, + "SamplingRuleUpdate": { + "additionalProperties": false, + "properties": { + "Attributes": { + "$comment": "String to string map", + "additionalProperties": false, + "description": "Matches attributes derived from the request.", + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "FixedRate": { + "description": "The percentage of matching requests to instrument, after the reservoir is exhausted.", + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "HTTPMethod": { + "description": "Matches the HTTP method from a request URL.", + "maxLength": 10, + "type": "string" + }, + "Host": { + "description": "Matches the hostname from a request URL.", + "maxLength": 64, + "type": "string" + }, + "Priority": { + "description": "The priority of the sampling rule.", + "maximum": 9999, + "minimum": 1, + "type": "integer" + }, + "ReservoirSize": { + "description": "A fixed number of matching requests to instrument per second, prior to applying the fixed rate. The reservoir is not used directly by services, but applies to all services using the rule collectively.", + "minimum": 0, + "type": "integer" + }, + "ResourceARN": { + "description": "Matches the ARN of the AWS resource on which the service runs.", + "maxLength": 500, + "type": "string" + }, + "RuleARN": { + "$ref": "#/definitions/RuleARN" + }, + "RuleName": { + "$ref": "#/definitions/RuleName" + }, + "ServiceName": { + "description": "Matches the name that the service uses to identify itself in segments.", + "maxLength": 64, + "type": "string" + }, + "ServiceType": { + "description": "Matches the origin that the service uses to identify its type in segments.", + "maxLength": 64, + "type": "string" + }, + "URLPath": { + "description": "Matches the path from a request URL.", + "maxLength": 128, + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "description": "The key name of the tag.", + "type": "string" + }, + "Value": { + "description": "The value for the tag.", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "deprecatedProperties": [ + "/properties/RuleName", + "/properties/SamplingRuleRecord", + "/properties/SamplingRuleUpdate" + ], + "description": "This schema provides construct and validation rules for AWS-XRay SamplingRule resource parameters.", + "handlers": { + "create": { + "permissions": [ + "xray:CreateSamplingRule", + "xray:TagResource" + ] + }, + "delete": { + "permissions": [ + "xray:DeleteSamplingRule" + ] + }, + "list": { + "permissions": [ + "xray:GetSamplingRules", + "xray:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "xray:GetSamplingRules", + "xray:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "xray:UpdateSamplingRule", + "xray:TagResource", + "xray:UntagResource", + "xray:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/RuleARN" + ], + "properties": { + "RuleARN": { + "$ref": "#/definitions/RuleARN" + }, + "RuleName": { + "$ref": "#/definitions/RuleName" + }, + "SamplingRule": { + "$ref": "#/definitions/SamplingRule" + }, + "SamplingRuleRecord": { + "$ref": "#/definitions/SamplingRuleRecord" + }, + "SamplingRuleUpdate": { + "$ref": "#/definitions/SamplingRuleUpdate" + }, + "Tags": { + "$ref": "#/definitions/Tags" + } + }, + "readOnlyProperties": [ + "/properties/RuleARN" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": true, + "permissions": [ + "xray:TagResource", + "xray:UntagResource" + ], + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::XRay::SamplingRule" +} diff --git a/src/schema/aws-xray-transactionsearchconfig.json b/src/schema/aws-xray-transactionsearchconfig.json new file mode 100644 index 00000000..f2ec336d --- /dev/null +++ b/src/schema/aws-xray-transactionsearchconfig.json @@ -0,0 +1,77 @@ +{ + "additionalProperties": false, + "definitions": { + "AccountId": { + "description": "User account id, used as the primary identifier for the resource", + "pattern": "^\\d{12}$", + "type": "string" + }, + "IndexingPercentage": { + "description": "Determines the percentage of traces indexed from CloudWatch Logs to X-Ray", + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "description": "This schema provides construct and validation rules for AWS-XRay TransactionSearchConfig resource parameters.", + "handlers": { + "create": { + "permissions": [ + "application-signals:StartDiscovery", + "iam:CreateServiceLinkedRole", + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutRetentionPolicy", + "xray:GetIndexingRules", + "xray:GetTraceSegmentDestination", + "xray:UpdateIndexingRule", + "xray:UpdateTraceSegmentDestination" + ] + }, + "delete": { + "permissions": [ + "xray:GetTraceSegmentDestination", + "xray:UpdateTraceSegmentDestination", + "xray:UpdateIndexingRule" + ] + }, + "list": { + "permissions": [ + "xray:GetTraceSegmentDestination", + "xray:GetIndexingRules" + ] + }, + "read": { + "permissions": [ + "xray:GetTraceSegmentDestination", + "xray:GetIndexingRules" + ] + }, + "update": { + "permissions": [ + "xray:GetIndexingRules", + "xray:GetTraceSegmentDestination", + "xray:UpdateIndexingRule" + ] + } + }, + "primaryIdentifier": [ + "/properties/AccountId" + ], + "properties": { + "AccountId": { + "$ref": "#/definitions/AccountId" + }, + "IndexingPercentage": { + "$ref": "#/definitions/IndexingPercentage" + } + }, + "readOnlyProperties": [ + "/properties/AccountId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::XRay::TransactionSearchConfig" +} diff --git a/src/schema/update.ps1 b/src/schema/update.ps1 old mode 100644 new mode 100755 diff --git a/src/schema/update.sh b/src/schema/update.sh new file mode 100755 index 00000000..585921bf --- /dev/null +++ b/src/schema/update.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# Set working directory +ROOT_DIR="$(pwd)" +SCHEMA_URL="https://schema.cloudformation.us-east-1.amazonaws.com/CloudformationSchema.zip" +FILEPATH="${ROOT_DIR}/CloudformationSchema.zip" + +# Function to cleanup on exit +cleanup() { + rm -f "${FILEPATH}" +} + +# Error handling +set -e +trap cleanup EXIT + +# Remove existing JSON files +rm -f ./*.json + +# Download schema +echo "Downloading schema..." +curl -L -o "${FILEPATH}" "${SCHEMA_URL}" || { + echo "Failed to download schema" + exit 1 +} + +# Extract zip file +echo "Extracting schema..." +unzip -o "${FILEPATH}" || { + echo "Failed to extract schema" + exit 1 +} diff --git a/src/secrets.go b/src/secrets.go index a9c00959..d8707316 100644 --- a/src/secrets.go +++ b/src/secrets.go @@ -26,7 +26,6 @@ func (e *awsCredentialsError) Error() string { // Remote updates a repo with AWS credentials. func Remote(target string, repository string, region string) error { iamRole, err := Make(target) - if err != nil { return &makeRoleError{err} } @@ -36,7 +35,6 @@ func Remote(target string, repository string, region string) error { time.Sleep(magic * time.Second) Credentials, err := getAWSCredentials(*iamRole, region) - if err != nil { return &awsCredentialsError{err} } @@ -44,7 +42,6 @@ func Remote(target string, repository string, region string) error { myCredentials := Credentials.Credentials _, err = SetRepoSecret(repository, *myCredentials.AccessKeyId, "AWS_ACCESS_KEY_ID") - if err != nil { var response *github.ErrorResponse @@ -61,7 +58,6 @@ func Remote(target string, repository string, region string) error { } _, err = SetRepoSecret(repository, *myCredentials.SessionToken, "AWS_SESSION_TOKEN") - if err != nil { return &setRepoSecretError{repository, err} } @@ -89,7 +85,7 @@ func SetRepoSecret(repository string, keyText string, keyName string) (*github.R encryptedValue := base64.StdEncoding.EncodeToString(encryptedBytes) // Create an EncryptedSecret and encrypt the plaintext value into it - eSecret := &github.EncryptedSecret{ //permit + eSecret := &github.EncryptedSecret{ // permit Name: keyName, KeyID: keyID, EncryptedValue: encryptedValue, @@ -141,7 +137,7 @@ func GetGithubClient() (context.Context, *github.Client) { ctx := context.Background() ts := oauth2.StaticTokenSource( - &oauth2.Token{AccessToken: token}, //permit + &oauth2.Token{AccessToken: token}, // permit ) tc := oauth2.NewClient(ctx, ts) diff --git a/src/secrets_Internal_test.go b/src/secrets_Internal_test.go new file mode 100644 index 00000000..d68d32df --- /dev/null +++ b/src/secrets_Internal_test.go @@ -0,0 +1,284 @@ +package pike + +import ( + "errors" + "fmt" + "strings" + "testing" +) + +func Test_splitHub(t *testing.T) { + t.Parallel() + + type args struct { + repository string + } + + tests := []struct { + name string + args args + want string + want1 string + wantErr bool + }{ + { + name: "valid short format", + args: args{ + repository: "jameswoolfenden/pike", + }, + want: "jameswoolfenden", + want1: "pike", + wantErr: false, + }, + { + name: "valid long format", + args: args{ + repository: "https://github.com/jameswoolfenden/pike", + }, + want: "jameswoolfenden", + want1: "pike", + wantErr: false, + }, + { + name: "invalid format", + args: args{ + repository: "jameswoolfenden/pike/extra", + }, + want: "", + want1: "", + wantErr: true, + }, + { + name: "empty string", + args: args{ + repository: "", + }, + want: "", + want1: "", + wantErr: true, + }, + { + name: "single segment", + args: args{ + repository: "onlyone", + }, + want: "", + want1: "", + wantErr: true, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + got, got1, err := SplitHub(tt.args.repository) + if (err != nil) != tt.wantErr { + t.Errorf("SplitHub() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("SplitHub() got = %v, want %v", got, tt.want) + } + if got1 != tt.want1 { + t.Errorf("SplitHub() got1 = %v, want %v", got1, tt.want1) + } + }) + } +} + +func TestEncryptPlaintext_Extended(t *testing.T) { + t.Parallel() + + type args struct { + plaintext string + publicKeyB64 string + } + + tests := []struct { + name string + args args + want []byte + wantErr bool + }{ + { + name: "valid encryption", + args: args{ + plaintext: "test secret", + publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", + }, + wantErr: false, + }, + { + name: "empty plaintext", + args: args{ + plaintext: "", + publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", + }, + wantErr: false, + }, + { + name: "invalid base64 public key", + args: args{ + plaintext: "test secret", + publicKeyB64: "invalid-base64!@#$", + }, + wantErr: true, + }, + { + name: "empty public key", + args: args{ + plaintext: "test secret", + publicKeyB64: "", + }, + wantErr: true, + }, + //{ + // name: "public key too short", + // args: args{ + // plaintext: "test secret", + // publicKeyB64: "aGVsbG8=", + // }, + // wantErr: true, + //}, + { + name: "very long plaintext", + args: args{ + plaintext: string(make([]byte, 1024*1024)), // 1MB of data + publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", + }, + wantErr: false, + }, + { + name: "special characters in plaintext", + args: args{ + plaintext: "!@#$%^&*()_+{}|:<>?~`-=[]\\;',./", + publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", + }, + wantErr: false, + }, + { + name: "unicode characters in plaintext", + args: args{ + plaintext: "Hello ä¸–į•Œ 🌍", + publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", + }, + wantErr: false, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + got, err := EncryptPlaintext(tt.args.plaintext, tt.args.publicKeyB64) + if (err != nil) != tt.wantErr { + t.Errorf("EncryptPlaintext() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !tt.wantErr { + if got == nil { + t.Error("EncryptPlaintext() returned nil for successful encryption") + } + if len(got) == 0 { + t.Error("EncryptPlaintext() returned empty bytes for successful encryption") + } + } + }) + } +} + +func TestAwsCredentialsError_Error(t *testing.T) { + tests := []struct { + name string + err error + expected string + }{ + { + name: "simple error message", + err: errors.New("connection timeout"), + expected: "failed to get AWS credentials: connection timeout", + }, + { + name: "empty error message", + err: errors.New(""), + expected: "failed to get AWS credentials: ", + }, + { + name: "formatted error message", + err: fmt.Errorf("invalid region: %s", "us-invalid-1"), + expected: "failed to get AWS credentials: invalid region: us-invalid-1", + }, + { + name: "wrapped error", + err: fmt.Errorf("wrapped: %w", errors.New("original error")), + expected: "failed to get AWS credentials: wrapped: original error", + }, + { + name: "nil error", + err: nil, + expected: "failed to get AWS credentials: ", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &awsCredentialsError{err: tt.err} + result := e.Error() + + if result != tt.expected { + t.Errorf("awsCredentialsError.Error() = %q, expected %q", result, tt.expected) + } + }) + } +} + +func TestAwsCredentialsError_ErrorInterface(t *testing.T) { + err := &awsCredentialsError{err: errors.New("test error")} + + // Verify it implements the error interface + var _ error = err + + // Verify it can be used as an error + if err.Error() == "" { + t.Error("awsCredentialsError should return non-empty error message") + } +} + +func TestAwsCredentialsError_ErrorFormatting(t *testing.T) { + testErr := errors.New("access denied") + awsErr := &awsCredentialsError{err: testErr} + + errorMsg := awsErr.Error() + + // Verify the error message contains the expected prefix + expectedPrefix := "failed to get AWS credentials:" + if !strings.HasPrefix(errorMsg, expectedPrefix) { + t.Errorf("Error message should start with %q, got %q", expectedPrefix, errorMsg) + } + + // Verify the original error message is included + if !strings.Contains(errorMsg, testErr.Error()) { + t.Errorf("Error message should contain original error %q, got %q", testErr.Error(), errorMsg) + } +} + +func TestAwsCredentialsError_MultipleInstances(t *testing.T) { + err1 := &awsCredentialsError{err: errors.New("error 1")} + err2 := &awsCredentialsError{err: errors.New("error 2")} + + msg1 := err1.Error() + msg2 := err2.Error() + + if msg1 == msg2 { + t.Error("Different awsCredentialsError instances should produce different error messages") + } + + if !strings.Contains(msg1, "error 1") { + t.Errorf("First error should contain 'error 1', got %q", msg1) + } + + if !strings.Contains(msg2, "error 2") { + t.Errorf("Second error should contain 'error 2', got %q", msg2) + } +} diff --git a/src/secrets_test.go b/src/secrets_test.go index 3eeccab9..48bbd643 100644 --- a/src/secrets_test.go +++ b/src/secrets_test.go @@ -8,10 +8,9 @@ import ( "reflect" "testing" - "golang.org/x/oauth2" - "github.com/google/go-github/v47/github" pike "github.com/jameswoolfenden/pike/src" + "golang.org/x/oauth2" ) func TestSetRepoSecret(t *testing.T) { @@ -97,86 +96,6 @@ func TestSetRepoSecret(t *testing.T) { } } -func Test_splitHub(t *testing.T) { - t.Parallel() - - type args struct { - repository string - } - - tests := []struct { - name string - args args - want string - want1 string - wantErr bool - }{ - { - name: "valid short format", - args: args{ - repository: "jameswoolfenden/pike", - }, - want: "jameswoolfenden", - want1: "pike", - wantErr: false, - }, - { - name: "valid long format", - args: args{ - repository: "https://github.com/jameswoolfenden/pike", - }, - want: "jameswoolfenden", - want1: "pike", - wantErr: false, - }, - { - name: "invalid format", - args: args{ - repository: "jameswoolfenden/pike/extra", - }, - want: "", - want1: "", - wantErr: true, - }, - { - name: "empty string", - args: args{ - repository: "", - }, - want: "", - want1: "", - wantErr: true, - }, - { - name: "single segment", - args: args{ - repository: "onlyone", - }, - want: "", - want1: "", - wantErr: true, - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - got, got1, err := pike.SplitHub(tt.args.repository) - if (err != nil) != tt.wantErr { - t.Errorf("SplitHub() error = %v, wantErr %v", err, tt.wantErr) - return - } - if got != tt.want { - t.Errorf("SplitHub() got = %v, want %v", got, tt.want) - } - if got1 != tt.want1 { - t.Errorf("SplitHub() got1 = %v, want %v", got1, tt.want1) - } - }) - } -} - func Test_getGithubClient(t *testing.T) { t.Parallel() @@ -427,104 +346,3 @@ func TestGetPublicKeyDetails_Integration(t *testing.T) { }) } } - -func TestEncryptPlaintext_Extended(t *testing.T) { - t.Parallel() - - type args struct { - plaintext string - publicKeyB64 string - } - - tests := []struct { - name string - args args - want []byte - wantErr bool - }{ - { - name: "valid encryption", - args: args{ - plaintext: "test secret", - publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", - }, - wantErr: false, - }, - { - name: "empty plaintext", - args: args{ - plaintext: "", - publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", - }, - wantErr: false, - }, - { - name: "invalid base64 public key", - args: args{ - plaintext: "test secret", - publicKeyB64: "invalid-base64!@#$", - }, - wantErr: true, - }, - { - name: "empty public key", - args: args{ - plaintext: "test secret", - publicKeyB64: "", - }, - wantErr: true, - }, - { - name: "public key too short", - args: args{ - plaintext: "test secret", - publicKeyB64: "aGVsbG8=", - }, - wantErr: true, - }, - { - name: "very long plaintext", - args: args{ - plaintext: string(make([]byte, 1024*1024)), // 1MB of data - publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", - }, - wantErr: false, - }, - { - name: "special characters in plaintext", - args: args{ - plaintext: "!@#$%^&*()_+{}|:<>?~`-=[]\\;',./", - publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", - }, - wantErr: false, - }, - { - name: "unicode characters in plaintext", - args: args{ - plaintext: "Hello ä¸–į•Œ 🌍", - publicKeyB64: "VGhpcyBpcyBhIHZhbGlkIGJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXk=", - }, - wantErr: false, - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - got, err := pike.EncryptPlaintext(tt.args.plaintext, tt.args.publicKeyB64) - if (err != nil) != tt.wantErr { - t.Errorf("EncryptPlaintext() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !tt.wantErr { - if got == nil { - t.Error("EncryptPlaintext() returned nil for successful encryption") - } - if len(got) == 0 { - t.Error("EncryptPlaintext() returned empty bytes for successful encryption") - } - } - }) - } -} diff --git a/src/testdata/gcp/basic/storage.tf b/src/testdata/gcp/basic/storage.tf new file mode 100644 index 00000000..a2790a60 --- /dev/null +++ b/src/testdata/gcp/basic/storage.tf @@ -0,0 +1,20 @@ +# Create new storage bucket in the US +# location with Standard Storage + +resource "google_storage_bucket" "static" { + name = "BUCKET_NAME" + location = "US" + storage_class = "STANDARD" + + uniform_bucket_level_access = true +} + +# Upload a text file as an object +# to the storage bucket + +resource "google_storage_bucket_object" "default" { + name = "OBJECT_NAME" + source = "OBJECT_PATH" + content_type = "text/plain" + bucket = google_storage_bucket.static.id +} diff --git a/src/types.go b/src/types.go index 685a10e1..2f2ce8f5 100644 --- a/src/types.go +++ b/src/types.go @@ -34,7 +34,7 @@ type Statement struct { // NewStatement constructor. func NewStatement(sid string, effect string, action []string, resource []string) Statement { - if effect != Allow && effect != "Deny" { + if effect != allow && effect != "Deny" { effect = "Deny" // Default to restrictive } diff --git a/src/utils.go b/src/utils.go index d4820d31..ab1de1c7 100644 --- a/src/utils.go +++ b/src/utils.go @@ -107,11 +107,12 @@ func ReplaceSection(source string, middle string, autoadd bool) error { Output.WriteString(section2) err = os.WriteFile(source, Output.Bytes(), 0o644) + if err != nil { return &writeFileError{source, err} } - return err + return nil } // FileExists looks for a file. @@ -133,3 +134,18 @@ const float64EqualityThreshold = 1e-9 func AlmostEqual(a, b float64) bool { return math.Abs(a-b) <= float64EqualityThreshold } + +type EnvVariableNotSetError struct { + Key string +} + +func (e *EnvVariableNotSetError) Error() string { + return fmt.Sprintf("environment variable %s not set", e.Key) +} + +func GetEnv(key string) (*string, error) { + if value, ok := os.LookupEnv(key); ok { + return &value, nil + } + return nil, &EnvVariableNotSetError{key} +} diff --git a/src/utils_test.go b/src/utils_test.go index c2082d40..3097fbad 100644 --- a/src/utils_test.go +++ b/src/utils_test.go @@ -1,9 +1,11 @@ -package pike_test +package pike import ( + "errors" + "os" + "reflect" + "strings" "testing" - - pike "github.com/jameswoolfenden/pike/src" ) func Test_randSeq(t *testing.T) { @@ -25,7 +27,8 @@ func Test_randSeq(t *testing.T) { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() - if got := pike.RandSeq(tt.args.n); len(got) != tt.want { + + if got := RandSeq(tt.args.n); len(got) != tt.want { t.Errorf("RandSeq() = %v, want %v", got, tt.want) } }) @@ -98,7 +101,7 @@ func TestReplaceSection(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - if err := pike.ReplaceSection(tt.args.source, tt.args.middle, tt.args.autoadd); (err != nil) != tt.wantErr { + if err := ReplaceSection(tt.args.source, tt.args.middle, tt.args.autoadd); (err != nil) != tt.wantErr { t.Errorf("ReplaceSection() error = %v, wantErr %v", err, tt.wantErr) } }) @@ -127,7 +130,7 @@ func Test_fileExists(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - if got := pike.FileExists(tt.args.filename); got != tt.want { + if got := FileExists(tt.args.filename); got != tt.want { t.Errorf("FileExists() = %v, want %v", got, tt.want) } }) @@ -154,7 +157,7 @@ func TestRandSeq(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - if got := pike.RandSeq(tt.args.n); got == tt.notWant { + if got := RandSeq(tt.args.n); got == tt.notWant { t.Errorf("RandSeq() = %v, want %v", got, tt.notWant) } }) @@ -213,9 +216,172 @@ func TestAlmostEqual(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - if got := pike.AlmostEqual(tt.args.a, tt.args.b); got != tt.want { + if got := AlmostEqual(tt.args.a, tt.args.b); got != tt.want { t.Errorf("AlmostEqual() = %v, want %v", got, tt.want) } }) } } + +func TestEnvVariableNotSetError_Error(t *testing.T) { + type fields struct { + Key string + } + tests := []struct { + name string + fields fields + want string + }{ + {"fail", fields{"key"}, "environment variable key not set"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &EnvVariableNotSetError{ + Key: tt.fields.Key, + } + if got := e.Error(); got != tt.want { + t.Errorf("Error() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_getEnv(t *testing.T) { + type args struct { + key string + } + + err := os.Setenv("fortest", "value") + if err != nil { + return + } + + tests := []struct { + name string + args args + want *string + wantErr bool + }{ + {"fail", args{"key"}, nil, true}, + {"pass", args{"fortest"}, &[]string{"value"}[0], false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := GetEnv(tt.args.key) + if (err != nil) != tt.wantErr { + t.Errorf("GetEnv() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("GetEnv() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestWriteFileError_Error(t *testing.T) { + tests := []struct { + name string + file string + err error + expected string + }{ + { + name: "normal file and error", + file: "/path/to/file.txt", + err: errors.New("permission denied"), + expected: "failed to write file /path/to/file.txt permission denied", + }, + { + name: "empty file path", + file: "", + err: errors.New("some error"), + expected: "failed to write file some error", + }, + { + name: "nil error", + file: "/path/to/file.txt", + err: nil, + expected: "failed to write file /path/to/file.txt ", + }, + { + name: "file path with spaces", + file: "/path/to/file with spaces.txt", + err: errors.New("write failed"), + expected: "failed to write file /path/to/file with spaces.txt write failed", + }, + { + name: "file path with special characters", + file: "/path/to/file-name_123.txt", + err: errors.New("disk full"), + expected: "failed to write file /path/to/file-name_123.txt disk full", + }, + { + name: "long file path", + file: strings.Repeat("/very/long/path", 10) + "/file.txt", + err: errors.New("timeout"), + expected: "failed to write file " + strings.Repeat("/very/long/path", 10) + "/file.txt timeout", + }, + { + name: "error with newlines", + file: "/path/to/file.txt", + err: errors.New("error\nwith\nnewlines"), + expected: "failed to write file /path/to/file.txt error\nwith\nnewlines", + }, + { + name: "both file and error empty/nil", + file: "", + err: nil, + expected: "failed to write file ", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &writeFileError{ + file: tt.file, + err: tt.err, + } + + result := e.Error() + + if result != tt.expected { + t.Errorf("writeFileError.Error() = %q, expected %q", result, tt.expected) + } + }) + } +} + +func TestCustomErrors(t *testing.T) { + t.Run("readFileError", func(t *testing.T) { + err := &readFileError{file: "test.txt", err: errors.New("permission denied")} + expected := "failed to read file test.txt permission denied" + if err.Error() != expected { + t.Errorf("Expected: %s, got: %s", expected, err.Error()) + } + }) + + t.Run("delimiterMismatchError", func(t *testing.T) { + err := &delimiterMismatchError{} + expected := "pike delimiters mismatch in Readme" + if err.Error() != expected { + t.Errorf("Expected: %s, got: %s", expected, err.Error()) + } + }) + + t.Run("delimiterHooksMissingError", func(t *testing.T) { + err := &delimiterHooksMissingError{} + expected := "pike hooks delimiter missing in Readme, consider using the flag -auto" + if err.Error() != expected { + t.Errorf("Expected: %s, got: %s", expected, err.Error()) + } + }) + + t.Run("writeFileError", func(t *testing.T) { + err := &writeFileError{file: "output.txt", err: errors.New("disk full")} + expected := "failed to write file output.txt disk full" + if err.Error() != expected { + t.Errorf("Expected: %s, got: %s", expected, err.Error()) + } + }) +} diff --git a/src/watch.go b/src/watch.go index 52301708..35b90840 100644 --- a/src/watch.go +++ b/src/watch.go @@ -3,7 +3,6 @@ package pike import ( "context" "encoding/json" - "errors" "fmt" "net/url" "reflect" @@ -16,34 +15,42 @@ import ( "github.com/rs/zerolog/log" ) -const PollIntervalSeconds int = 5 +const pollIntervalSeconds int = 5 // Watch looks at IAM policy for new revisions. func Watch(arn string, wait int) error { if arn == "" { return &arnEmptyError{} } + + if wait <= 0 { + return fmt.Errorf("wait time must be positive, got %d", wait) + } + + if err := verifyAWSARN(arn); err != nil { + return fmt.Errorf("invalid ARN format: %s", arn) + } + // Load the Shared AWS Configuration (~/.aws/config) - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), defaultTimeout) defer cancel() cfg, err := config.LoadDefaultConfig(ctx) - if err != nil { return &awsConfigError{err} } client := iam.NewFromConfig(cfg) - Version, err := GetVersion(client, arn) + Version, err := getVersion(client, arn) if err != nil { return &getVersionError{err} } log.Info().Msgf("Waiting for change on policy Version %s", *Version) - delay, err := WaitForPolicyChange(client, arn, *Version, wait, PollIntervalSeconds) // Added default pollInterval of 10 + delay, err := waitForPolicyChange(client, arn, *Version, wait, pollIntervalSeconds) // Added default pollInterval of 10 if err != nil { return &waitForPolicyChangeError{err} } @@ -53,30 +60,36 @@ func Watch(arn string, wait int) error { return nil } -// WaitForPolicyChange looks at IAM policy change. -func WaitForPolicyChange(client *iam.Client, arn string, version string, wait, pollInterval int) (int, error) { - +// waitForPolicyChange looks at IAM policy change. +func waitForPolicyChange(client *iam.Client, arn string, version string, wait, pollInterval int) (int, error) { for item := 1; item < wait; item++ { time.Sleep(time.Duration(pollInterval)) - NewVersion, err := GetVersion(client, arn) + NewVersion, err := getVersion(client, arn) if err != nil { continue } - if NewVersion == &version { + if *NewVersion != version { return item, nil } log.Print("Not equal") } - return wait, errors.New("wait expired with no change") + return wait, &waitExpiredError{} +} + +type waitExpiredError struct{} + +func (e *waitExpiredError) Error() string { + return "wait expired with no change" } -// GetVersion gets the version of the IAM policy. -func GetVersion(client *iam.Client, policyArn string) (*string, error) { - output, err := client.GetPolicy(context.TODO(), &iam.GetPolicyInput{PolicyArn: aws.String(policyArn)}) +// getVersion gets the version of the IAM policy. +func getVersion(client *iam.Client, policyArn string) (*string, error) { + output, err := client.GetPolicy(context.Background(), &iam.GetPolicyInput{PolicyArn: aws.String(policyArn)}) + if err != nil { return nil, &getVersionError{err} } @@ -92,10 +105,10 @@ func (e *urlEscapeError) Error() string { return fmt.Sprintf("failed to unescape url: %v", e.err) } -// GetPolicyVersion Obtains the versioned IAM policy. -func GetPolicyVersion(client *iam.Client, policyArn string, version string) (*string, error) { +// getPolicyVersion Obtains the versioned IAM policy. +func getPolicyVersion(client *iam.Client, policyArn string, version string) (*string, error) { output, err := client.GetPolicyVersion( - context.TODO(), + context.Background(), &iam.GetPolicyVersionInput{ PolicyArn: aws.String(policyArn), VersionId: &version, @@ -105,12 +118,11 @@ func GetPolicyVersion(client *iam.Client, policyArn string, version string) (*st } Policy, err := url.QueryUnescape(*(output.PolicyVersion.Document)) - if err != nil { return nil, &urlEscapeError{err} } - fixed, err := SortActions(Policy) + fixed, err := sortActions(Policy) if err != nil { return nil, &sortActionsError{Policy} } @@ -118,19 +130,25 @@ func GetPolicyVersion(client *iam.Client, policyArn string, version string) (*st return fixed, err } -// SortActions sorts the actions list of an IAM policy. -func SortActions(myPolicy string) (*string, error) { +type castToListOfInterfaceError struct{} + +func (e *castToListOfInterfaceError) Error() string { + return "failed to convert to list of interfaces" +} + +// sortActions sorts the actions list of an IAM policy. +func sortActions(myPolicy string) (*string, error) { var raw map[string]interface{} err := json.Unmarshal([]byte(myPolicy), &raw) if err != nil { - return nil, err + return nil, &unmarshallJSONError{err, myPolicy} } Statements, ok := raw["Statement"].([]interface{}) if !ok { - return nil, fmt.Errorf("failed to assert list of interface for Statements") + return nil, &castToListOfInterfaceError{} } var NewStatements []interface{} @@ -164,13 +182,14 @@ func SortActions(myPolicy string) (*string, error) { } fixed, err := json.Marshal(raw) + if err != nil { return nil, &marshallPolicyError{err} } result := string(fixed) - return &result, err + return &result, nil } func sortInterfaceStrings(actions interface{}) []string { diff --git a/src/watch_internal_test.go b/src/watch_internal_test.go new file mode 100644 index 00000000..f216d4af --- /dev/null +++ b/src/watch_internal_test.go @@ -0,0 +1,165 @@ +package pike + +import ( + "encoding/json" + "errors" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestWatch_EmptyARN(t *testing.T) { + err := Watch("", 10) + assert.Error(t, err) + assert.IsType(t, &arnEmptyError{}, err) +} + +func TestWatch_InvalidWaitTime(t *testing.T) { + err := Watch("arn:aws:iam::123456789012:policy/test-policy", 0) + assert.Error(t, err) + assert.Contains(t, err.Error(), "wait time must be positive") + + err = Watch("arn:aws:iam::123456789012:policy/test-policy", -5) + assert.Error(t, err) + assert.Contains(t, err.Error(), "wait time must be positive") +} + +func TestSortActions_WithArrayActions(t *testing.T) { + policy := `{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"], + "Resource": "*" + } + ] + }` + + result, err := sortActions(policy) + + assert.NoError(t, err) + assert.NotNil(t, result) + + var parsed map[string]interface{} + err = json.Unmarshal([]byte(*result), &parsed) + assert.NoError(t, err) + + statements := parsed["Statement"].([]interface{}) + statement := statements[0].(map[string]interface{}) + actions := statement["Action"].([]interface{}) + + // Verify actions are sorted + assert.Equal(t, "s3:DeleteObject", actions[0]) + assert.Equal(t, "s3:GetObject", actions[1]) + assert.Equal(t, "s3:PutObject", actions[2]) +} + +func TestSortActions_WithStringAction(t *testing.T) { + policy := `{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "s3:GetObject", + "Resource": "*" + } + ] + }` + + result, err := sortActions(policy) + + assert.NoError(t, err) + assert.NotNil(t, result) + + var parsed map[string]interface{} + err = json.Unmarshal([]byte(*result), &parsed) + assert.NoError(t, err) +} + +func TestSortActions_InvalidJSON(t *testing.T) { + policy := `{"invalid": json}` + + result, err := sortActions(policy) + + assert.Error(t, err) + assert.Nil(t, result) + assert.IsType(t, &unmarshallJSONError{}, err) +} + +func TestSortActions_InvalidStatement(t *testing.T) { + policy := `{ + "Version": "2012-10-17", + "Statement": "invalid" + }` + + result, err := sortActions(policy) + + assert.Error(t, err) + assert.Nil(t, result) + assert.IsType(t, &castToListOfInterfaceError{}, err) +} + +func TestSortInterfaceStrings_Success(t *testing.T) { + actions := []interface{}{"s3:PutObject", "s3:GetObject", "s3:DeleteObject"} + + result := sortInterfaceStrings(actions) + + assert.NotNil(t, result) + assert.Len(t, result, 3) + assert.Equal(t, "s3:DeleteObject", result[0]) + assert.Equal(t, "s3:GetObject", result[1]) + assert.Equal(t, "s3:PutObject", result[2]) +} + +func TestSortInterfaceStrings_InvalidInput(t *testing.T) { + actions := "not an array" + + result := sortInterfaceStrings(actions) + + assert.Nil(t, result) +} + +func TestSortInterfaceStrings_NonStringElements(t *testing.T) { + actions := []interface{}{"s3:Xavier", "s3:GetObject", 123, "s3:PutObject"} + + result := sortInterfaceStrings(actions) + + assert.NotNil(t, result) + assert.Len(t, result, 4) + // Non-string elements should be skipped, but array length preserved + assert.Equal(t, "s3:GetObject", result[1]) + assert.Equal(t, "", result[0]) // default zero value for skipped element + assert.Equal(t, "s3:PutObject", result[2]) +} + +func TestWaitExpiredError_Error(t *testing.T) { + err := &waitExpiredError{} + assert.Equal(t, "wait expired with no change", err.Error()) +} + +func TestUrlEscapeError_Error(t *testing.T) { + originalErr := errors.New("test error") + err := &urlEscapeError{err: originalErr} + assert.Contains(t, err.Error(), "failed to unescape url") + assert.Contains(t, err.Error(), "test error") +} + +func TestCastToListOfInterfaceError_Error(t *testing.T) { + err := &castToListOfInterfaceError{} + assert.Equal(t, "failed to convert to list of interfaces", err.Error()) +} + +func TestGetVersionError_Error(t *testing.T) { + originalErr := errors.New("test error") + err := &getVersionError{err: originalErr} + assert.Contains(t, err.Error(), "failed to get version") + assert.Contains(t, err.Error(), "test error") +} + +func TestWaitForPolicyChangeError_Error(t *testing.T) { + originalErr := errors.New("test error") + err := &waitForPolicyChangeError{err: originalErr} + assert.Contains(t, err.Error(), "failed to wait for policy change") + assert.Contains(t, err.Error(), "test error") +} diff --git a/src/watch_test.go b/src/watch_test.go index 0e232ded..9675fcae 100644 --- a/src/watch_test.go +++ b/src/watch_test.go @@ -41,7 +41,7 @@ func TestWaitForPolicyChange(t *testing.T) { Wait int } - cfg, _ := config.LoadDefaultConfig(context.TODO()) + cfg, _ := config.LoadDefaultConfig(context.Background()) client := iam.NewFromConfig(cfg) tests := []struct { @@ -55,7 +55,7 @@ func TestWaitForPolicyChange(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := WaitForPolicyChange(tt.args.client, tt.args.arn, tt.args.Version, tt.args.Wait, PollIntervalSeconds) + got, err := waitForPolicyChange(tt.args.client, tt.args.arn, tt.args.Version, tt.args.Wait, pollIntervalSeconds) if (err != nil) != tt.wantErr { t.Errorf("WaitForPolicyChange() error = %v, wantErr %v", err, tt.wantErr) return @@ -72,7 +72,7 @@ func TestGetVersion(t *testing.T) { client *iam.Client PolicyArn string } - cfg, _ := config.LoadDefaultConfig(context.TODO()) + cfg, _ := config.LoadDefaultConfig(context.Background()) client := iam.NewFromConfig(cfg) want := "v1" tests := []struct { @@ -86,7 +86,7 @@ func TestGetVersion(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := GetVersion(tt.args.client, tt.args.PolicyArn) + got, err := getVersion(tt.args.client, tt.args.PolicyArn) if (err != nil) != tt.wantErr { t.Errorf("GetVersion() error = %v, wantErr %v", err, tt.wantErr) return @@ -104,7 +104,7 @@ func TestGetPolicyVersion(t *testing.T) { PolicyArn string Version string } - cfg, _ := config.LoadDefaultConfig(context.TODO()) + cfg, _ := config.LoadDefaultConfig(context.Background()) client := iam.NewFromConfig(cfg) wantPass := "{\"Statement\":[{\"Action\":\"s3:*\",\"Effect\":\"Allow\",\"Resource\":\"*\"," + "\"Sid\":\"VisualEditor0\"}],\"Version\":\"2012-10-17\"}" @@ -122,7 +122,7 @@ func TestGetPolicyVersion(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := GetPolicyVersion(tt.args.client, tt.args.PolicyArn, tt.args.Version) + got, err := getPolicyVersion(tt.args.client, tt.args.PolicyArn, tt.args.Version) if (err != nil) != tt.wantErr { t.Errorf("GetPolicyVersion() error = %v, wantErr %v", err, tt.wantErr) return @@ -155,7 +155,7 @@ func TestSortActions(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := SortActions(tt.args.myPolicy) + got, err := sortActions(tt.args.myPolicy) if (err != nil) != tt.wantErr { t.Errorf("SortActions() error = %v, wantErr %v", err, tt.wantErr) return diff --git a/terraform/aws/Makefile b/terraform/aws/Makefile index 5f3d890c..aa9b4e40 100644 --- a/terraform/aws/Makefile +++ b/terraform/aws/Makefile @@ -18,6 +18,8 @@ init: upgrade: terraform init --upgrade +update: upgrade + role: FORCE terraform -chdir=./role apply -auto-approve diff --git a/terraform/aws/backup/aws_amplify_backend_environment.tf b/terraform/aws/backup/aws_amplify_backend_environment.tf new file mode 100644 index 00000000..3c123819 --- /dev/null +++ b/terraform/aws/backup/aws_amplify_backend_environment.tf @@ -0,0 +1 @@ +resource "aws_amplify_backend_environment" "pike" {} diff --git a/terraform/aws/backup/aws_amplify_webhook.tf b/terraform/aws/backup/aws_amplify_webhook.tf new file mode 100644 index 00000000..1197ea7d --- /dev/null +++ b/terraform/aws/backup/aws_amplify_webhook.tf @@ -0,0 +1 @@ +resource "aws_amplify_webhook" "pike" {} diff --git a/terraform/aws/backup/aws_api_gateway_domain_name_access_association.tf b/terraform/aws/backup/aws_api_gateway_domain_name_access_association.tf new file mode 100644 index 00000000..268edc54 --- /dev/null +++ b/terraform/aws/backup/aws_api_gateway_domain_name_access_association.tf @@ -0,0 +1,5 @@ +resource "aws_api_gateway_domain_name_access_association" "pike" { + access_association_source = aws_vpc_endpoint.example.id + access_association_source_type = "VPCE" + domain_name_arn = aws_api_gateway_domain_name.example.domain_name_arn +} diff --git a/terraform/aws/backup/aws_api_gateway_rest_api_put.tf b/terraform/aws/backup/aws_api_gateway_rest_api_put.tf new file mode 100644 index 00000000..cac6aa49 --- /dev/null +++ b/terraform/aws/backup/aws_api_gateway_rest_api_put.tf @@ -0,0 +1,62 @@ +resource "aws_api_gateway_rest_api_put" "pike" { + body = jsonencode({ + swagger = "2.0" + info = { + title = "Example API" + version = "v1" + } + schemes = ["https"] + paths = { + "/example" = { + get = { + responses = { + "200" = { + description = "OK" + } + } + x-amazon-apigateway-integration = { + httpMethod = "GET" + type = "HTTP" + responses = { + default = { + statusCode = 200 + } + } + uri = "https://api.example.com/" + } + } + } + } + }) + + fail_on_warnings = true + rest_api_id = aws_api_gateway_rest_api.example.id +} + +resource "aws_api_gateway_rest_api" "example" { + body = jsonencode({ + openapi = "3.0.1" + info = { + title = "example" + version = "1.0" + } + paths = { + "/path1" = { + get = { + x-amazon-apigateway-integration = { + httpMethod = "GET" + payloadFormatVersion = "1.0" + type = "HTTP_PROXY" + uri = "https://ip-ranges.amazonaws.com/ip-ranges.json" + } + } + } + } + }) + + name = "example" + + endpoint_configuration { + types = ["REGIONAL"] + } +} diff --git a/terraform/aws/backup/aws_appconfig_deployment.tf b/terraform/aws/backup/aws_appconfig_deployment.tf new file mode 100644 index 00000000..cc680833 --- /dev/null +++ b/terraform/aws/backup/aws_appconfig_deployment.tf @@ -0,0 +1,13 @@ +resource "aws_appconfig_deployment" "pike" { + application_id = aws_appconfig_application.example.id + configuration_profile_id = aws_appconfig_configuration_profile.example.configuration_profile_id + configuration_version = aws_appconfig_hosted_configuration_version.example.version_number + deployment_strategy_id = aws_appconfig_deployment_strategy.example.id + description = "My example deployment" + environment_id = aws_appconfig_environment.example.environment_id + kms_key_identifier = aws_kms_key.example.arn + + tags = { + Type = "AppConfig Deployment" + } +} diff --git a/terraform/aws/backup/aws_appconfig_deployment_strategy.tf b/terraform/aws/backup/aws_appconfig_deployment_strategy.tf new file mode 100644 index 00000000..7051b71b --- /dev/null +++ b/terraform/aws/backup/aws_appconfig_deployment_strategy.tf @@ -0,0 +1,13 @@ +resource "aws_appconfig_deployment_strategy" "pike" { + name = "example-deployment-strategy-tf" + description = "Example Deployment Strategy" + deployment_duration_in_minutes = 3 + final_bake_time_in_minutes = 4 + growth_factor = 10 + growth_type = "LINEAR" + replicate_to = "NONE" + + tags = { + Type = "AppConfig Deployment Strategy" + } +} diff --git a/terraform/aws/backup/aws_appfabric_app_authorization.tf b/terraform/aws/backup/aws_appfabric_app_authorization.tf new file mode 100644 index 00000000..32cda8e0 --- /dev/null +++ b/terraform/aws/backup/aws_appfabric_app_authorization.tf @@ -0,0 +1 @@ +resource "aws_appfabric_app_authorization" "pike" {} diff --git a/terraform/aws/backup/aws_appfabric_app_authorization_connection.tf b/terraform/aws/backup/aws_appfabric_app_authorization_connection.tf new file mode 100644 index 00000000..4e02bbee --- /dev/null +++ b/terraform/aws/backup/aws_appfabric_app_authorization_connection.tf @@ -0,0 +1 @@ +resource "aws_appfabric_app_authorization_connection" "pike" {} diff --git a/terraform/aws/backup/aws_appfabric_app_bundle.tf b/terraform/aws/backup/aws_appfabric_app_bundle.tf new file mode 100644 index 00000000..55845c4e --- /dev/null +++ b/terraform/aws/backup/aws_appfabric_app_bundle.tf @@ -0,0 +1 @@ +resource "aws_appfabric_app_bundle" "pike" {} diff --git a/terraform/aws/backup/aws_appfabric_ingestion.tf b/terraform/aws/backup/aws_appfabric_ingestion.tf new file mode 100644 index 00000000..2122fead --- /dev/null +++ b/terraform/aws/backup/aws_appfabric_ingestion.tf @@ -0,0 +1 @@ +resource "aws_appfabric_ingestion" "pike" {} diff --git a/terraform/aws/backup/aws_appfabric_ingestion_destination.tf b/terraform/aws/backup/aws_appfabric_ingestion_destination.tf new file mode 100644 index 00000000..dc5e49a4 --- /dev/null +++ b/terraform/aws/backup/aws_appfabric_ingestion_destination.tf @@ -0,0 +1 @@ +resource "aws_appfabric_ingestion_destination" "pike" {} diff --git a/terraform/aws/backup/aws_appmesh_gateway_route.tf b/terraform/aws/backup/aws_appmesh_gateway_route.tf new file mode 100644 index 00000000..8aab5419 --- /dev/null +++ b/terraform/aws/backup/aws_appmesh_gateway_route.tf @@ -0,0 +1,25 @@ +resource "aws_appmesh_gateway_route" "pike" { + name = "example-gateway-route" + mesh_name = aws_appmesh_mesh.pike.name + virtual_gateway_name = aws_appmesh_virtual_gateway.pike.name + + spec { + http_route { + action { + target { + virtual_service { + virtual_service_name = aws_appmesh_virtual_service.pike.name + } + } + } + + match { + prefix = "/" + } + } + } + + tags = { + Environment = "test" + } +} diff --git a/terraform/aws/backup/aws_appmesh_mesh.tf b/terraform/aws/backup/aws_appmesh_mesh.tf new file mode 100644 index 00000000..c31ab062 --- /dev/null +++ b/terraform/aws/backup/aws_appmesh_mesh.tf @@ -0,0 +1,13 @@ +resource "aws_appmesh_mesh" "pike" { + name = "simpleapp" + + spec { + egress_filter { + type = "ALLOW_ALL" + } + } + + tags = { + pike = "permimssion" + } +} diff --git a/terraform/aws/backup/aws_appmesh_route.tf b/terraform/aws/backup/aws_appmesh_route.tf new file mode 100644 index 00000000..ce1511ff --- /dev/null +++ b/terraform/aws/backup/aws_appmesh_route.tf @@ -0,0 +1,25 @@ +resource "aws_appmesh_route" "pike" { + name = "serviceB-route" + mesh_name = aws_appmesh_mesh.pike.id + virtual_router_name = aws_appmesh_virtual_router.pike.name + + spec { + http_route { + match { + prefix = "/" + } + + action { + weighted_target { + virtual_node = aws_appmesh_virtual_node.serviceb1.name + weight = 90 + } + + weighted_target { + virtual_node = aws_appmesh_virtual_node.serviceb2.name + weight = 10 + } + } + } + } +} diff --git a/terraform/aws/backup/aws_appmesh_virtual_gateway.tf b/terraform/aws/backup/aws_appmesh_virtual_gateway.tf new file mode 100644 index 00000000..71f0c434 --- /dev/null +++ b/terraform/aws/backup/aws_appmesh_virtual_gateway.tf @@ -0,0 +1,17 @@ +resource "aws_appmesh_virtual_gateway" "pike" { + name = "example-virtual-gateway" + mesh_name = aws_appmesh_mesh.pike.name + + spec { + listener { + port_mapping { + port = 8080 + protocol = "http" + } + } + } + + tags = { + Environment = "test" + } +} diff --git a/terraform/aws/backup/aws_appmesh_virtual_node.tf b/terraform/aws/backup/aws_appmesh_virtual_node.tf new file mode 100644 index 00000000..f438146b --- /dev/null +++ b/terraform/aws/backup/aws_appmesh_virtual_node.tf @@ -0,0 +1,51 @@ +resource "aws_appmesh_virtual_node" "serviceb1" { + name = "serviceBv1" + mesh_name = aws_appmesh_mesh.pike.id + + spec { + backend { + virtual_service { + virtual_service_name = "servicea.simpleapp.local" + } + } + + listener { + port_mapping { + port = 8080 + protocol = "http" + } + } + + service_discovery { + dns { + hostname = "serviceb.simpleapp.local" + } + } + } +} + +resource "aws_appmesh_virtual_node" "serviceb2" { + name = "serviceBv2" + mesh_name = aws_appmesh_mesh.pike.id + + spec { + backend { + virtual_service { + virtual_service_name = "servicea.simpleapp.local" + } + } + + listener { + port_mapping { + port = 8080 + protocol = "http" + } + } + + service_discovery { + dns { + hostname = "serviceb2.simpleapp.local" + } + } + } +} diff --git a/terraform/aws/backup/aws_appmesh_virtual_router.tf b/terraform/aws/backup/aws_appmesh_virtual_router.tf new file mode 100644 index 00000000..a16379c0 --- /dev/null +++ b/terraform/aws/backup/aws_appmesh_virtual_router.tf @@ -0,0 +1,16 @@ +resource "aws_appmesh_virtual_router" "pike" { + name = "serviceB" + mesh_name = aws_appmesh_mesh.pike.id + + spec { + listener { + port_mapping { + port = 8080 + protocol = "http" + } + } + } + tags = { + pike = "permimssion" + } +} diff --git a/terraform/aws/backup/aws_appmesh_virtual_service.tf b/terraform/aws/backup/aws_appmesh_virtual_service.tf new file mode 100644 index 00000000..8f03e1c2 --- /dev/null +++ b/terraform/aws/backup/aws_appmesh_virtual_service.tf @@ -0,0 +1,12 @@ +resource "aws_appmesh_virtual_service" "pike" { + name = "servicea.simpleapp.local" + mesh_name = aws_appmesh_mesh.pike.id + + spec { + provider { + virtual_node { + virtual_node_name = aws_appmesh_virtual_node.serviceb1.name + } + } + } +} diff --git a/terraform/aws/backup/aws_apprunner_connection.tf b/terraform/aws/backup/aws_apprunner_connection.tf new file mode 100644 index 00000000..6026c5e4 --- /dev/null +++ b/terraform/aws/backup/aws_apprunner_connection.tf @@ -0,0 +1 @@ +resource "aws_apprunner_connection" "pike" {} diff --git a/terraform/aws/backup/aws_apprunner_custom_domain_association.tf b/terraform/aws/backup/aws_apprunner_custom_domain_association.tf new file mode 100644 index 00000000..62347de0 --- /dev/null +++ b/terraform/aws/backup/aws_apprunner_custom_domain_association.tf @@ -0,0 +1 @@ +resource "aws_apprunner_custom_domain_association" "pike" {} diff --git a/terraform/aws/backup/aws_apprunner_deployment.tf b/terraform/aws/backup/aws_apprunner_deployment.tf new file mode 100644 index 00000000..9d7c492e --- /dev/null +++ b/terraform/aws/backup/aws_apprunner_deployment.tf @@ -0,0 +1 @@ +resource "aws_apprunner_deployment" "pike" {} diff --git a/terraform/aws/backup/aws_appstream_directory_config.tf b/terraform/aws/backup/aws_appstream_directory_config.tf new file mode 100644 index 00000000..171a524d --- /dev/null +++ b/terraform/aws/backup/aws_appstream_directory_config.tf @@ -0,0 +1,9 @@ +resource "aws_appstream_directory_config" "pike" { + directory_name = "NAME OF DIRECTORY" + organizational_unit_distinguished_names = ["DISTINGUISHED NAME"] + + service_account_credentials { + account_name = "NAME OF ACCOUNT" + account_password = "PASSWORD OF ACCOUNT" + } +} diff --git a/terraform/aws/backup/aws_appstream_fleet.tf b/terraform/aws/backup/aws_appstream_fleet.tf new file mode 100644 index 00000000..bb209e74 --- /dev/null +++ b/terraform/aws/backup/aws_appstream_fleet.tf @@ -0,0 +1,9 @@ +resource "aws_appstream_fleet" "pike" { + name = "NAME" + image_name = "Amazon-AppStream2-Sample-Image-03-11-2023" + instance_type = "stream.standard.small" + + compute_capacity { + desired_instances = 1 + } +} diff --git a/terraform/aws/backup/aws_appstream_fleet_stack_association.tf b/terraform/aws/backup/aws_appstream_fleet_stack_association.tf new file mode 100644 index 00000000..fe75bc38 --- /dev/null +++ b/terraform/aws/backup/aws_appstream_fleet_stack_association.tf @@ -0,0 +1,4 @@ +resource "aws_appstream_fleet_stack_association" "pike" { + fleet_name = aws_appstream_fleet.pike.name + stack_name = aws_appstream_stack.pike.name +} diff --git a/terraform/aws/backup/aws_appstream_stack.tf b/terraform/aws/backup/aws_appstream_stack.tf new file mode 100644 index 00000000..a734428e --- /dev/null +++ b/terraform/aws/backup/aws_appstream_stack.tf @@ -0,0 +1,3 @@ +resource "aws_appstream_stack" "pike" { + name = "pike" +} diff --git a/terraform/aws/backup/aws_appstream_user.tf b/terraform/aws/backup/aws_appstream_user.tf new file mode 100644 index 00000000..2432112c --- /dev/null +++ b/terraform/aws/backup/aws_appstream_user.tf @@ -0,0 +1,6 @@ +resource "aws_appstream_user" "pike" { + authentication_type = "USERPOOL" + user_name = "james@bridgecrew.io" + first_name = "james" + last_name = "woolfenden" +} diff --git a/terraform/aws/backup/aws_appstream_user_stack_association.tf b/terraform/aws/backup/aws_appstream_user_stack_association.tf new file mode 100644 index 00000000..682712c8 --- /dev/null +++ b/terraform/aws/backup/aws_appstream_user_stack_association.tf @@ -0,0 +1,5 @@ +resource "aws_appstream_user_stack_association" "pike" { + authentication_type = aws_appstream_user.pike.authentication_type + stack_name = aws_appstream_stack.pike.name + user_name = aws_appstream_user.pike.user_name +} diff --git a/terraform/aws/backup/aws_appsync_api_cache.tf b/terraform/aws/backup/aws_appsync_api_cache.tf new file mode 100644 index 00000000..d1d8eaa7 --- /dev/null +++ b/terraform/aws/backup/aws_appsync_api_cache.tf @@ -0,0 +1 @@ +resource "aws_appsync_api_cache" "pike" {} diff --git a/terraform/aws/backup/aws_appsync_api_key.tf b/terraform/aws/backup/aws_appsync_api_key.tf new file mode 100644 index 00000000..72d2f2a3 --- /dev/null +++ b/terraform/aws/backup/aws_appsync_api_key.tf @@ -0,0 +1 @@ +resource "aws_appsync_api_key" "pike" {} diff --git a/terraform/aws/backup/aws_appsync_datasource.tf b/terraform/aws/backup/aws_appsync_datasource.tf new file mode 100644 index 00000000..c8b92aac --- /dev/null +++ b/terraform/aws/backup/aws_appsync_datasource.tf @@ -0,0 +1 @@ +resource "aws_appsync_datasource" "pike" {} diff --git a/terraform/aws/backup/aws_appsync_graphql_api.tf b/terraform/aws/backup/aws_appsync_graphql_api.tf new file mode 100644 index 00000000..6b16f435 --- /dev/null +++ b/terraform/aws/backup/aws_appsync_graphql_api.tf @@ -0,0 +1,4 @@ +resource "aws_appsync_graphql_api" "pike" { + authentication_type = "AWS_IAM" + name = "example" +} diff --git a/terraform/aws/backup/aws_appsync_source_api_association.tf b/terraform/aws/backup/aws_appsync_source_api_association.tf new file mode 100644 index 00000000..499df6ce --- /dev/null +++ b/terraform/aws/backup/aws_appsync_source_api_association.tf @@ -0,0 +1 @@ +resource "aws_appsync_source_api_association" "pike" {} diff --git a/terraform/aws/backup/aws_appsync_type.tf b/terraform/aws/backup/aws_appsync_type.tf new file mode 100644 index 00000000..fb0b199f --- /dev/null +++ b/terraform/aws/backup/aws_appsync_type.tf @@ -0,0 +1 @@ +resource "aws_appsync_type" "pike" {} diff --git a/terraform/aws/backup/aws_athena_capacity_reservation.tf b/terraform/aws/backup/aws_athena_capacity_reservation.tf new file mode 100644 index 00000000..a9ada4ef --- /dev/null +++ b/terraform/aws/backup/aws_athena_capacity_reservation.tf @@ -0,0 +1,7 @@ +resource "aws_athena_capacity_reservation" "pike" { + name = "example-reservation" + target_dpus = 24 + tags = { + pike = "permissions" + } +} diff --git a/terraform/aws/backup/aws_backup_logically_air_gapped_vault.tf b/terraform/aws/backup/aws_backup_logically_air_gapped_vault.tf index e835aa3b..44f8f391 100644 --- a/terraform/aws/backup/aws_backup_logically_air_gapped_vault.tf +++ b/terraform/aws/backup/aws_backup_logically_air_gapped_vault.tf @@ -1 +1 @@ -resource "aws_backup_logically_air_gapped_vault" "pike" {} \ No newline at end of file +resource "aws_backup_logically_air_gapped_vault" "pike" {} diff --git a/terraform/aws/backup/aws_backup_restore_testing_plan.tf b/terraform/aws/backup/aws_backup_restore_testing_plan.tf new file mode 100644 index 00000000..ed1dcbe6 --- /dev/null +++ b/terraform/aws/backup/aws_backup_restore_testing_plan.tf @@ -0,0 +1 @@ +resource "aws_backup_restore_testing_plan" "pike" {} diff --git a/terraform/aws/backup/aws_bedrock_guardrail.tf b/terraform/aws/backup/aws_bedrock_guardrail.tf new file mode 100644 index 00000000..d0877853 --- /dev/null +++ b/terraform/aws/backup/aws_bedrock_guardrail.tf @@ -0,0 +1 @@ +resource "aws_bedrock_guardrail" "pike" {} diff --git a/terraform/aws/backup/aws_bedrock_guardrail_version.tf b/terraform/aws/backup/aws_bedrock_guardrail_version.tf new file mode 100644 index 00000000..5561235f --- /dev/null +++ b/terraform/aws/backup/aws_bedrock_guardrail_version.tf @@ -0,0 +1 @@ +resource "aws_bedrock_guardrail_version" "pike" {} diff --git a/terraform/aws/backup/aws_bedrock_inference_profile.tf b/terraform/aws/backup/aws_bedrock_inference_profile.tf new file mode 100644 index 00000000..666d93b9 --- /dev/null +++ b/terraform/aws/backup/aws_bedrock_inference_profile.tf @@ -0,0 +1,17 @@ +resource "aws_bedrock_inference_profile" "pike" { + name = "Claude Sonnet for Project 123" + description = "Profile with tag for cost allocation tracking" + + model_source { + copy_from = "arn:aws:bedrock:us-west-2::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + + # Include account ID to use inference profiles + # copy_from = "arn:aws:bedrock:eu-central-1:${data.aws_caller_identity.current.account_id}:inference-profile/eu.anthropic.claude-3-5-sonnet-20240620-v1:0" + } + + tags = { + ProjectID = "123" + } +} + +data "aws_caller_identity" "current" {} diff --git a/terraform/aws/backup/aws_bedrockagent_agent_collaborator.tf b/terraform/aws/backup/aws_bedrockagent_agent_collaborator.tf new file mode 100644 index 00000000..fce7006a --- /dev/null +++ b/terraform/aws/backup/aws_bedrockagent_agent_collaborator.tf @@ -0,0 +1 @@ +resource "aws_bedrockagent_agent_collaborator" "pike" {} diff --git a/terraform/aws/backup/aws_bedrockagent_agent_knowledge_base_association.tf b/terraform/aws/backup/aws_bedrockagent_agent_knowledge_base_association.tf new file mode 100644 index 00000000..8de1deb8 --- /dev/null +++ b/terraform/aws/backup/aws_bedrockagent_agent_knowledge_base_association.tf @@ -0,0 +1 @@ +resource "aws_bedrockagent_agent_knowledge_base_association" "pike" {} diff --git a/terraform/aws/backup/aws_bedrockagent_prompt.tf b/terraform/aws/backup/aws_bedrockagent_prompt.tf new file mode 100644 index 00000000..a142e68b --- /dev/null +++ b/terraform/aws/backup/aws_bedrockagent_prompt.tf @@ -0,0 +1,36 @@ +resource "aws_bedrockagent_prompt" "pike" { + name = "MakePlaylist" + description = "My first prompt." + default_variant = "Variant1" + + customer_encryption_key_arn = "arn:aws:kms:eu-west-2:680235478471:key/2ec48faa-3591-481d-a1cb-fd400a404bf6" + + variant { + name = "Variant1" + model_id = "amazon.titan-text-express-v1" + + inference_configuration { + text { + temperature = 0.8 + } + } + + template_type = "TEXT" + template_configuration { + text { + text = "Make me a {{genre}} playlist consisting of the following number of songs: {{number}}." + + input_variable { + name = "genre" + } + input_variable { + name = "number" + } + } + } + } + + tags = { + pike = "permission" + } +} diff --git a/terraform/aws/backup/aws_cleanrooms_membership.tf b/terraform/aws/backup/aws_cleanrooms_membership.tf new file mode 100644 index 00000000..83be55a6 --- /dev/null +++ b/terraform/aws/backup/aws_cleanrooms_membership.tf @@ -0,0 +1 @@ +resource "aws_cleanrooms_membership" "pike" {} diff --git a/terraform/aws/backup/aws_cloud9_environment_membership.tf b/terraform/aws/backup/aws_cloud9_environment_membership.tf new file mode 100644 index 00000000..28257272 --- /dev/null +++ b/terraform/aws/backup/aws_cloud9_environment_membership.tf @@ -0,0 +1 @@ +resource "aws_cloud9_environment_membership" "pike" {} diff --git a/terraform/aws/backup/aws_cloudcontrolapi_resource.tf b/terraform/aws/backup/aws_cloudcontrolapi_resource.tf new file mode 100644 index 00000000..8b52604d --- /dev/null +++ b/terraform/aws/backup/aws_cloudcontrolapi_resource.tf @@ -0,0 +1 @@ +resource "aws_cloudcontrolapi_resource" "pike" {} diff --git a/terraform/aws/backup/aws_cloudformation_stack_instances.tf b/terraform/aws/backup/aws_cloudformation_stack_instances.tf new file mode 100644 index 00000000..681b144e --- /dev/null +++ b/terraform/aws/backup/aws_cloudformation_stack_instances.tf @@ -0,0 +1 @@ +resource "aws_cloudformation_stack_instances" "pike" {} diff --git a/terraform/aws/backup/aws_cloudfront_vpc_origin.tf b/terraform/aws/backup/aws_cloudfront_vpc_origin.tf new file mode 100644 index 00000000..29b03e01 --- /dev/null +++ b/terraform/aws/backup/aws_cloudfront_vpc_origin.tf @@ -0,0 +1 @@ +resource "aws_cloudfront_vpc_origin" "pike" {} diff --git a/terraform/aws/backup/aws_cloudfrontkeyvaluestore_keys_exclusive.tf b/terraform/aws/backup/aws_cloudfrontkeyvaluestore_keys_exclusive.tf new file mode 100644 index 00000000..d47e235b --- /dev/null +++ b/terraform/aws/backup/aws_cloudfrontkeyvaluestore_keys_exclusive.tf @@ -0,0 +1,13 @@ +resource "aws_cloudfront_key_value_store" "pike" { + name = "ExampleKeyValueStore" + comment = "This is an example key value store" +} + +resource "aws_cloudfrontkeyvaluestore_keys_exclusive" "pike" { + key_value_store_arn = aws_cloudfront_key_value_store.pike.arn + + resource_key_value_pair { + key = "Test Key" + value = "Test Value" + } +} diff --git a/terraform/aws/backup/aws_cloudhsm_v2_cluster.tf b/terraform/aws/backup/aws_cloudhsm_v2_cluster.tf new file mode 100644 index 00000000..456bdda3 --- /dev/null +++ b/terraform/aws/backup/aws_cloudhsm_v2_cluster.tf @@ -0,0 +1 @@ +resource "aws_cloudhsm_v2_cluster" "pike" {} diff --git a/terraform/aws/backup/aws_cloudhsm_v2_hsm.tf b/terraform/aws/backup/aws_cloudhsm_v2_hsm.tf new file mode 100644 index 00000000..7a268669 --- /dev/null +++ b/terraform/aws/backup/aws_cloudhsm_v2_hsm.tf @@ -0,0 +1 @@ +resource "aws_cloudhsm_v2_hsm" "pike" {} diff --git a/terraform/aws/backup/aws_cloudtrail_organization_delegated_admin_account.tf b/terraform/aws/backup/aws_cloudtrail_organization_delegated_admin_account.tf new file mode 100644 index 00000000..1e0a59ba --- /dev/null +++ b/terraform/aws/backup/aws_cloudtrail_organization_delegated_admin_account.tf @@ -0,0 +1 @@ +resource "aws_cloudtrail_organization_delegated_admin_account" "pike" {} diff --git a/terraform/aws/backup/aws_cloudwatch_contributor_insight_rule.tf b/terraform/aws/backup/aws_cloudwatch_contributor_insight_rule.tf new file mode 100644 index 00000000..23a3368c --- /dev/null +++ b/terraform/aws/backup/aws_cloudwatch_contributor_insight_rule.tf @@ -0,0 +1,33 @@ +resource "aws_cloudwatch_contributor_insight_rule" "pike" { + rule_name = "pike" + rule_definition = jsonencode({ + "Schema" : { + "Name" : "CloudWatchLogRule", + "Version" : 1 + }, + "LogGroupNames" : [ + "/aws/containerinsights/sample-cluster-name/flowlogs" + ], + "LogFormat" : "CLF", + "Fields" : { + "4" : "srcaddr", + "5" : "dstaddr", + "10" : "bytes" + }, + "Contribution" : { + "Keys" : [ + "srcaddr", + "dstaddr" + ], + "ValueOf" : "bytes", + "Filters" : [] + }, + "AggregateOn" : "Sum" + } + + ) + tags = { + pike = "permission" + # delete = "me" + } +} diff --git a/terraform/aws/backup/aws_cloudwatch_contributor_managed_insight_rule.tf b/terraform/aws/backup/aws_cloudwatch_contributor_managed_insight_rule.tf new file mode 100644 index 00000000..2c40fe64 --- /dev/null +++ b/terraform/aws/backup/aws_cloudwatch_contributor_managed_insight_rule.tf @@ -0,0 +1,5 @@ +resource "aws_cloudwatch_contributor_managed_insight_rule" "pike" { + resource_arn = "arn:aws:logs:eu-west-2:680235478471:log-group:/aws/connect/pike2" + template_name = "VpcEndpointService-BytesByEndpointId-v2" + # rule_state = "DISABLED" +} diff --git a/terraform/aws/backup/aws_cloudwatch_event_connection.tf b/terraform/aws/backup/aws_cloudwatch_event_connection.tf index 17483fc8..28e084a1 100644 --- a/terraform/aws/backup/aws_cloudwatch_event_connection.tf +++ b/terraform/aws/backup/aws_cloudwatch_event_connection.tf @@ -1,12 +1,12 @@ -resource "aws_cloudwatch_event_connection" "pike" { - name = "ngrok-connection" - description = "A connection description update" - authorization_type = "API_KEY" - - auth_parameters { - api_key { - key = "x-signature" - value = "1234" - } - } -} +resource "aws_cloudwatch_event_connection" "pike" { + name = "ngrok-connection" + description = "A connection description update" + authorization_type = "API_KEY" + + auth_parameters { + api_key { + key = "x-signature" + value = "1234" + } + } +} diff --git a/terraform/aws/backup/aws_cloudwatch_log_anomaly_detector.tf b/terraform/aws/backup/aws_cloudwatch_log_anomaly_detector.tf new file mode 100644 index 00000000..bdf1b5bb --- /dev/null +++ b/terraform/aws/backup/aws_cloudwatch_log_anomaly_detector.tf @@ -0,0 +1,12 @@ +resource "aws_cloudwatch_log_group" "test" { + count = 2 + name = "testing-${count.index}" +} + +resource "aws_cloudwatch_log_anomaly_detector" "test" { + detector_name = "testing" + log_group_arn_list = [aws_cloudwatch_log_group.test[0].arn] + anomaly_visibility_time = 7 + evaluation_frequency = "TEN_MIN" + enabled = "false" +} diff --git a/terraform/aws/backup/aws_cloudwatch_log_delivery.tf b/terraform/aws/backup/aws_cloudwatch_log_delivery.tf new file mode 100644 index 00000000..33162eb7 --- /dev/null +++ b/terraform/aws/backup/aws_cloudwatch_log_delivery.tf @@ -0,0 +1,8 @@ +resource "aws_cloudwatch_log_delivery" "example" { + delivery_source_name = aws_cloudwatch_log_delivery_source.example.name + delivery_destination_arn = aws_cloudwatch_log_delivery_destination.example.arn + + field_delimiter = "," + + record_fields = ["event_timestamp", "event"] +} diff --git a/terraform/aws/backup/aws_cloudwatch_log_delivery_destination.tf b/terraform/aws/backup/aws_cloudwatch_log_delivery_destination.tf new file mode 100644 index 00000000..6fff8b37 --- /dev/null +++ b/terraform/aws/backup/aws_cloudwatch_log_delivery_destination.tf @@ -0,0 +1,8 @@ +resource "aws_cloudwatch_log_delivery_destination" "example" { + name = "example" + + delivery_destination_configuration { + destination_resource_arn = aws_cloudwatch_log_group.test[0].arn + } + +} diff --git a/terraform/aws/backup/aws_cloudwatch_log_delivery_destination_policy.tf b/terraform/aws/backup/aws_cloudwatch_log_delivery_destination_policy.tf new file mode 100644 index 00000000..5317e1cb --- /dev/null +++ b/terraform/aws/backup/aws_cloudwatch_log_delivery_destination_policy.tf @@ -0,0 +1,23 @@ +resource "aws_cloudwatch_log_delivery_destination_policy" "example" { + delivery_destination_name = aws_cloudwatch_log_delivery_destination.example.name + delivery_destination_policy = data.aws_iam_policy_document.example.json +} + + +data "aws_iam_policy_document" "example" { + statement { + sid = "1" + effect = "Allow" + actions = [ + "logs:CreateDelivery", + ] + + resources = [ + "*", + ] + principals { + identifiers = ["AWS"] + type = "arn:aws:iam::680235478471:root" + } + } +} diff --git a/terraform/aws/backup/aws_cloudwatch_log_delivery_source.tf b/terraform/aws/backup/aws_cloudwatch_log_delivery_source.tf new file mode 100644 index 00000000..5eed1cc1 --- /dev/null +++ b/terraform/aws/backup/aws_cloudwatch_log_delivery_source.tf @@ -0,0 +1,28 @@ + +resource "aws_cloudwatch_log_delivery_source" "example" { + name = "example" + log_type = "APPLICATION_LOGS" + resource_arn = aws_instance.pike.arn +} + + +data "aws_ami" "ubuntu" { + most_recent = true + + filter { + name = "name" + values = ["ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"] + } + + filter { + name = "virtualization-type" + values = ["hvm"] + } + + owners = ["099720109477"] # Canonical +} + +resource "aws_instance" "pike" { + ami = data.aws_ami.ubuntu.id + instance_type = "t3.micro" +} diff --git a/terraform/aws/backup/aws_cloudwatch_log_index_policy.tf b/terraform/aws/backup/aws_cloudwatch_log_index_policy.tf new file mode 100644 index 00000000..0639f249 --- /dev/null +++ b/terraform/aws/backup/aws_cloudwatch_log_index_policy.tf @@ -0,0 +1,6 @@ +resource "aws_cloudwatch_log_index_policy" "pike" { + log_group_name = aws_cloudwatch_log_group.test[0].name + policy_document = jsonencode({ + Fields = ["eventName"] + }) +} diff --git a/terraform/aws/backup/aws_codebuild_fleet.tf b/terraform/aws/backup/aws_codebuild_fleet.tf new file mode 100644 index 00000000..3343a3bc --- /dev/null +++ b/terraform/aws/backup/aws_codebuild_fleet.tf @@ -0,0 +1 @@ +resource "aws_codebuild_fleet" "pike" {} diff --git a/terraform/aws/backup/aws_codeconnections_connection.tf b/terraform/aws/backup/aws_codeconnections_connection.tf new file mode 100644 index 00000000..90849333 --- /dev/null +++ b/terraform/aws/backup/aws_codeconnections_connection.tf @@ -0,0 +1 @@ +resource "aws_codeconnections_connection" "pike" {} diff --git a/terraform/aws/backup/aws_codeconnections_host.tf b/terraform/aws/backup/aws_codeconnections_host.tf new file mode 100644 index 00000000..928e59c4 --- /dev/null +++ b/terraform/aws/backup/aws_codeconnections_host.tf @@ -0,0 +1 @@ +resource "aws_codeconnections_host" "pike" {} diff --git a/terraform/aws/backup/aws_cognito_managed_user_pool_client.tf b/terraform/aws/backup/aws_cognito_managed_user_pool_client.tf new file mode 100644 index 00000000..36492c98 --- /dev/null +++ b/terraform/aws/backup/aws_cognito_managed_user_pool_client.tf @@ -0,0 +1 @@ +resource "aws_cognito_managed_user_pool_client" "pike" {} diff --git a/terraform/aws/backup/aws_comprehend_entity_recognizer.tf b/terraform/aws/backup/aws_comprehend_entity_recognizer.tf new file mode 100644 index 00000000..64c84041 --- /dev/null +++ b/terraform/aws/backup/aws_comprehend_entity_recognizer.tf @@ -0,0 +1 @@ +resource "aws_comprehend_entity_recognizer" "pike" {} diff --git a/terraform/aws/backup/aws_computeoptimizer_enrollment_status.tf b/terraform/aws/backup/aws_computeoptimizer_enrollment_status.tf new file mode 100644 index 00000000..594578c6 --- /dev/null +++ b/terraform/aws/backup/aws_computeoptimizer_enrollment_status.tf @@ -0,0 +1 @@ +resource "aws_computeoptimizer_enrollment_status" "pike" {} diff --git a/terraform/aws/backup/aws_computeoptimizer_recommendation_preferences.tf b/terraform/aws/backup/aws_computeoptimizer_recommendation_preferences.tf new file mode 100644 index 00000000..c7938856 --- /dev/null +++ b/terraform/aws/backup/aws_computeoptimizer_recommendation_preferences.tf @@ -0,0 +1 @@ +resource "aws_computeoptimizer_recommendation_preferences" "pike" {} diff --git a/terraform/aws/backup/aws_config_aggregate_authorization.tf b/terraform/aws/backup/aws_config_aggregate_authorization.tf new file mode 100644 index 00000000..5b0366cd --- /dev/null +++ b/terraform/aws/backup/aws_config_aggregate_authorization.tf @@ -0,0 +1,4 @@ +resource "aws_config_aggregate_authorization" "pike" { + account_id = "123456789012" + region = "eu-west-2" +} diff --git a/terraform/aws/backup/aws_config_organization_custom_policy_rule.tf b/terraform/aws/backup/aws_config_organization_custom_policy_rule.tf new file mode 100644 index 00000000..a74aa9ab --- /dev/null +++ b/terraform/aws/backup/aws_config_organization_custom_policy_rule.tf @@ -0,0 +1 @@ +resource "aws_config_organization_custom_policy_rule" "pike" {} diff --git a/terraform/aws/backup/aws_config_organization_custom_rule.tf b/terraform/aws/backup/aws_config_organization_custom_rule.tf new file mode 100644 index 00000000..0868e0f1 --- /dev/null +++ b/terraform/aws/backup/aws_config_organization_custom_rule.tf @@ -0,0 +1 @@ +resource "aws_config_organization_custom_rule" "pike" {} diff --git a/terraform/aws/backup/aws_config_organization_managed_rule.tf b/terraform/aws/backup/aws_config_organization_managed_rule.tf new file mode 100644 index 00000000..be0a6d88 --- /dev/null +++ b/terraform/aws/backup/aws_config_organization_managed_rule.tf @@ -0,0 +1,11 @@ +resource "aws_organizations_organization" "example" { + aws_service_access_principals = ["config-multiaccountsetup. amazonaws. com"] + feature_set = "ALL" +} + +resource "aws_config_organization_managed_rule" "example" { + depends_on = [aws_organizations_organization.example] + + name = "example" + rule_identifier = "IAM_PASSWORD_POLICY" +} diff --git a/terraform/aws/backup/aws_config_remediation_configuration.tf b/terraform/aws/backup/aws_config_remediation_configuration.tf new file mode 100644 index 00000000..69fafb40 --- /dev/null +++ b/terraform/aws/backup/aws_config_remediation_configuration.tf @@ -0,0 +1,40 @@ +resource "aws_config_config_rule" "this" { + name = "example" + + source { + owner = "AWS" + source_identifier = "S3_BUCKET_VERSIONING_ENABLED" + } +} + +resource "aws_config_remediation_configuration" "this" { + config_rule_name = aws_config_config_rule.this.name + resource_type = "AWS::S3::Bucket" + target_type = "SSM_DOCUMENT" + target_id = "AWS-EnableS3BucketEncryption" + target_version = "1" + + parameter { + name = "AutomationAssumeRole" + static_value = "arn:aws:iam::875924563244:role/ security_config" + } + parameter { + name = "BucketName" + resource_value = "RESOURCE_ID" + } + parameter { + name = "SSEAlgorithm" + static_value = "AES256" + } + + automatic = true + maximum_automatic_attempts = 10 + retry_attempt_seconds = 600 + + execution_controls { + ssm_controls { + concurrent_execution_rate_percentage = 25 + error_percentage = 20 + } + } +} diff --git a/terraform/aws/backup/aws_config_retention_configuration.tf b/terraform/aws/backup/aws_config_retention_configuration.tf new file mode 100644 index 00000000..3e391651 --- /dev/null +++ b/terraform/aws/backup/aws_config_retention_configuration.tf @@ -0,0 +1 @@ +resource "aws_config_retention_configuration" "pike" {} diff --git a/terraform/aws/backup/aws_costoptimizationhub_enrollment_status.tf b/terraform/aws/backup/aws_costoptimizationhub_enrollment_status.tf new file mode 100644 index 00000000..a4aaadc4 --- /dev/null +++ b/terraform/aws/backup/aws_costoptimizationhub_enrollment_status.tf @@ -0,0 +1 @@ +resource "aws_costoptimizationhub_enrollment_status" "pike" {} diff --git a/terraform/aws/backup/aws_costoptimizationhub_preferences.tf b/terraform/aws/backup/aws_costoptimizationhub_preferences.tf new file mode 100644 index 00000000..570390d8 --- /dev/null +++ b/terraform/aws/backup/aws_costoptimizationhub_preferences.tf @@ -0,0 +1 @@ +resource "aws_costoptimizationhub_preferences" "pike" {} diff --git a/terraform/aws/backup/aws_customerprofiles_domain.tf b/terraform/aws/backup/aws_customerprofiles_domain.tf new file mode 100644 index 00000000..1e21631e --- /dev/null +++ b/terraform/aws/backup/aws_customerprofiles_domain.tf @@ -0,0 +1 @@ +resource "aws_customerprofiles_domain" "pike" {} diff --git a/terraform/aws/backup/aws_customerprofiles_profile.tf b/terraform/aws/backup/aws_customerprofiles_profile.tf new file mode 100644 index 00000000..2a3eea57 --- /dev/null +++ b/terraform/aws/backup/aws_customerprofiles_profile.tf @@ -0,0 +1,3 @@ +resource "aws_customerprofiles_profile" "pike" { + domain_name = "example" +} diff --git a/terraform/aws/backup/aws_dataexchange_data_set.tf b/terraform/aws/backup/aws_dataexchange_data_set.tf new file mode 100644 index 00000000..fc28b9c9 --- /dev/null +++ b/terraform/aws/backup/aws_dataexchange_data_set.tf @@ -0,0 +1 @@ +resource "aws_dataexchange_data_set" "pike" {} diff --git a/terraform/aws/backup/aws_dataexchange_event_action.tf b/terraform/aws/backup/aws_dataexchange_event_action.tf new file mode 100644 index 00000000..90303f14 --- /dev/null +++ b/terraform/aws/backup/aws_dataexchange_event_action.tf @@ -0,0 +1 @@ +resource "aws_dataexchange_event_action" "pike" {} diff --git a/terraform/aws/backup/aws_dataexchange_revision.tf b/terraform/aws/backup/aws_dataexchange_revision.tf new file mode 100644 index 00000000..4f9a7c48 --- /dev/null +++ b/terraform/aws/backup/aws_dataexchange_revision.tf @@ -0,0 +1 @@ +resource "aws_dataexchange_revision" "pike" {} diff --git a/terraform/aws/backup/aws_dataexchange_revision_assets.tf b/terraform/aws/backup/aws_dataexchange_revision_assets.tf new file mode 100644 index 00000000..9ca88310 --- /dev/null +++ b/terraform/aws/backup/aws_dataexchange_revision_assets.tf @@ -0,0 +1,16 @@ +resource "aws_dataexchange_revision_assets" "pike" { + data_set_id = "exampleidmustbelongerthan30characters" + + asset { + create_s3_data_access_from_s3_bucket { + asset_source { + bucket = "example-bucket" + } + } + } + + tags = { + pike = "permission" + Environment = "Production" + } +} diff --git a/terraform/aws/backup/aws_detective_member.tf b/terraform/aws/backup/aws_detective_member.tf new file mode 100644 index 00000000..b9f8579a --- /dev/null +++ b/terraform/aws/backup/aws_detective_member.tf @@ -0,0 +1 @@ +resource "aws_detective_member" "pike" {} diff --git a/terraform/aws/backup/aws_detective_organization_configuration.tf b/terraform/aws/backup/aws_detective_organization_configuration.tf new file mode 100644 index 00000000..80eb5188 --- /dev/null +++ b/terraform/aws/backup/aws_detective_organization_configuration.tf @@ -0,0 +1 @@ +resource "aws_detective_organization_configuration" "pike" {} diff --git a/terraform/aws/backup/aws_devicefarm_device_pool.tf b/terraform/aws/backup/aws_devicefarm_device_pool.tf new file mode 100644 index 00000000..ee304180 --- /dev/null +++ b/terraform/aws/backup/aws_devicefarm_device_pool.tf @@ -0,0 +1 @@ +resource "aws_devicefarm_device_pool" "pike" {} diff --git a/terraform/aws/backup/aws_devicefarm_instance_profile.tf b/terraform/aws/backup/aws_devicefarm_instance_profile.tf new file mode 100644 index 00000000..9c32ecbb --- /dev/null +++ b/terraform/aws/backup/aws_devicefarm_instance_profile.tf @@ -0,0 +1 @@ +resource "aws_devicefarm_instance_profile" "pike" {} diff --git a/terraform/aws/backup/aws_devicefarm_network_profile.tf b/terraform/aws/backup/aws_devicefarm_network_profile.tf new file mode 100644 index 00000000..4b49dd50 --- /dev/null +++ b/terraform/aws/backup/aws_devicefarm_network_profile.tf @@ -0,0 +1 @@ +resource "aws_devicefarm_network_profile" "pike" {} diff --git a/terraform/aws/backup/aws_devicefarm_project.tf b/terraform/aws/backup/aws_devicefarm_project.tf new file mode 100644 index 00000000..46911b2d --- /dev/null +++ b/terraform/aws/backup/aws_devicefarm_project.tf @@ -0,0 +1 @@ +resource "aws_devicefarm_project" "pike" {} diff --git a/terraform/aws/backup/aws_devicefarm_upload.tf b/terraform/aws/backup/aws_devicefarm_upload.tf new file mode 100644 index 00000000..c21149f1 --- /dev/null +++ b/terraform/aws/backup/aws_devicefarm_upload.tf @@ -0,0 +1 @@ +resource "aws_devicefarm_upload" "pike" {} diff --git a/terraform/aws/backup/aws_devopsguru_event_sources_config.tf b/terraform/aws/backup/aws_devopsguru_event_sources_config.tf new file mode 100644 index 00000000..928acabb --- /dev/null +++ b/terraform/aws/backup/aws_devopsguru_event_sources_config.tf @@ -0,0 +1 @@ +resource "aws_devopsguru_event_sources_config" "pike" {} diff --git a/terraform/aws/backup/aws_devopsguru_service_integration.tf b/terraform/aws/backup/aws_devopsguru_service_integration.tf new file mode 100644 index 00000000..a6ed8f15 --- /dev/null +++ b/terraform/aws/backup/aws_devopsguru_service_integration.tf @@ -0,0 +1 @@ +resource "aws_devopsguru_service_integration" "pike" {} diff --git a/terraform/aws/backup/aws_directory_service_conditional_forwarder.tf b/terraform/aws/backup/aws_directory_service_conditional_forwarder.tf new file mode 100644 index 00000000..a2f8e409 --- /dev/null +++ b/terraform/aws/backup/aws_directory_service_conditional_forwarder.tf @@ -0,0 +1 @@ +resource "aws_directory_service_conditional_forwarder" "pike" {} diff --git a/terraform/aws/backup/aws_directory_service_radius_settings.tf b/terraform/aws/backup/aws_directory_service_radius_settings.tf new file mode 100644 index 00000000..0ba31707 --- /dev/null +++ b/terraform/aws/backup/aws_directory_service_radius_settings.tf @@ -0,0 +1 @@ +resource "aws_directory_service_radius_settings" "pike" {} diff --git a/terraform/aws/backup/aws_directory_service_region.tf b/terraform/aws/backup/aws_directory_service_region.tf new file mode 100644 index 00000000..8ed058a8 --- /dev/null +++ b/terraform/aws/backup/aws_directory_service_region.tf @@ -0,0 +1 @@ +resource "aws_directory_service_region" "pike" {} diff --git a/terraform/aws/backup/aws_directory_service_shared_directory.tf b/terraform/aws/backup/aws_directory_service_shared_directory.tf new file mode 100644 index 00000000..124a5345 --- /dev/null +++ b/terraform/aws/backup/aws_directory_service_shared_directory.tf @@ -0,0 +1 @@ +resource "aws_directory_service_shared_directory" "pike" {} diff --git a/terraform/aws/backup/aws_directory_service_shared_directory_accepter.tf b/terraform/aws/backup/aws_directory_service_shared_directory_accepter.tf new file mode 100644 index 00000000..daff2ebc --- /dev/null +++ b/terraform/aws/backup/aws_directory_service_shared_directory_accepter.tf @@ -0,0 +1 @@ +resource "aws_directory_service_shared_directory_accepter" "pike" {} diff --git a/terraform/aws/backup/aws_directory_service_trust.tf b/terraform/aws/backup/aws_directory_service_trust.tf new file mode 100644 index 00000000..74726783 --- /dev/null +++ b/terraform/aws/backup/aws_directory_service_trust.tf @@ -0,0 +1 @@ +resource "aws_directory_service_trust" "pike" {} diff --git a/terraform/aws/backup/aws_drs_replication_configuration_template.tf b/terraform/aws/backup/aws_drs_replication_configuration_template.tf new file mode 100644 index 00000000..01e59024 --- /dev/null +++ b/terraform/aws/backup/aws_drs_replication_configuration_template.tf @@ -0,0 +1 @@ +resource "aws_drs_replication_configuration_template" "pike" {} diff --git a/terraform/aws/backup/aws_dsql_cluster.tf b/terraform/aws/backup/aws_dsql_cluster.tf new file mode 100644 index 00000000..ab7e5d27 --- /dev/null +++ b/terraform/aws/backup/aws_dsql_cluster.tf @@ -0,0 +1,7 @@ +resource "aws_dsql_cluster" "pike" { + + deletion_protection_enabled = false + tags = { + Name = "TestCluster" + } +} diff --git a/terraform/aws/backup/aws_dsql_cluster_peering.tf b/terraform/aws/backup/aws_dsql_cluster_peering.tf new file mode 100644 index 00000000..2dfba73e --- /dev/null +++ b/terraform/aws/backup/aws_dsql_cluster_peering.tf @@ -0,0 +1,7 @@ +resource "aws_dsql_cluster_peering" "pike" { + clusters = [aws_dsql_cluster.pike.arn] + identifier = "test-peer" + witness_region = "eu-west-2" +} +# +# resource "aws_dsql_cluster" "two" {} diff --git a/terraform/aws/backup/aws_dx_bgp_peer.tf b/terraform/aws/backup/aws_dx_bgp_peer.tf new file mode 100644 index 00000000..04e2f0e0 --- /dev/null +++ b/terraform/aws/backup/aws_dx_bgp_peer.tf @@ -0,0 +1 @@ +resource "aws_dx_bgp_peer" "pike" {} diff --git a/terraform/aws/backup/aws_dx_connection.tf b/terraform/aws/backup/aws_dx_connection.tf new file mode 100644 index 00000000..3545a922 --- /dev/null +++ b/terraform/aws/backup/aws_dx_connection.tf @@ -0,0 +1 @@ +resource "aws_dx_connection" "pike" {} diff --git a/terraform/aws/backup/aws_dx_connection_association.tf b/terraform/aws/backup/aws_dx_connection_association.tf new file mode 100644 index 00000000..7af8e202 --- /dev/null +++ b/terraform/aws/backup/aws_dx_connection_association.tf @@ -0,0 +1 @@ +resource "aws_dx_connection_association" "pike" {} diff --git a/terraform/aws/backup/aws_dx_connection_confirmation.tf b/terraform/aws/backup/aws_dx_connection_confirmation.tf new file mode 100644 index 00000000..dde5c585 --- /dev/null +++ b/terraform/aws/backup/aws_dx_connection_confirmation.tf @@ -0,0 +1 @@ +resource "aws_dx_connection_confirmation" "pike" {} diff --git a/terraform/aws/backup/aws_dx_gateway_association_proposal.tf b/terraform/aws/backup/aws_dx_gateway_association_proposal.tf new file mode 100644 index 00000000..14b0c870 --- /dev/null +++ b/terraform/aws/backup/aws_dx_gateway_association_proposal.tf @@ -0,0 +1 @@ +resource "aws_dx_gateway_association_proposal" "pike" {} diff --git a/terraform/aws/backup/aws_dx_hosted_connection.tf b/terraform/aws/backup/aws_dx_hosted_connection.tf new file mode 100644 index 00000000..18014545 --- /dev/null +++ b/terraform/aws/backup/aws_dx_hosted_connection.tf @@ -0,0 +1 @@ +resource "aws_dx_hosted_connection" "pike" {} diff --git a/terraform/aws/backup/aws_dx_hosted_private_virtual_interface.tf b/terraform/aws/backup/aws_dx_hosted_private_virtual_interface.tf new file mode 100644 index 00000000..15a64d0f --- /dev/null +++ b/terraform/aws/backup/aws_dx_hosted_private_virtual_interface.tf @@ -0,0 +1 @@ +resource "aws_dx_hosted_private_virtual_interface" "pike" {} diff --git a/terraform/aws/backup/aws_dx_hosted_private_virtual_interface_accepter.tf b/terraform/aws/backup/aws_dx_hosted_private_virtual_interface_accepter.tf new file mode 100644 index 00000000..6d1bbd8f --- /dev/null +++ b/terraform/aws/backup/aws_dx_hosted_private_virtual_interface_accepter.tf @@ -0,0 +1 @@ +resource "aws_dx_hosted_private_virtual_interface_accepter" "pike" {} diff --git a/terraform/aws/backup/aws_dx_hosted_public_virtual_interface.tf b/terraform/aws/backup/aws_dx_hosted_public_virtual_interface.tf new file mode 100644 index 00000000..9ef552e8 --- /dev/null +++ b/terraform/aws/backup/aws_dx_hosted_public_virtual_interface.tf @@ -0,0 +1 @@ +resource "aws_dx_hosted_public_virtual_interface" "pike" {} diff --git a/terraform/aws/backup/aws_dx_hosted_public_virtual_interface_accepter.tf b/terraform/aws/backup/aws_dx_hosted_public_virtual_interface_accepter.tf new file mode 100644 index 00000000..e1e40c28 --- /dev/null +++ b/terraform/aws/backup/aws_dx_hosted_public_virtual_interface_accepter.tf @@ -0,0 +1 @@ +resource "aws_dx_hosted_public_virtual_interface_accepter" "pike" {} diff --git a/terraform/aws/backup/aws_dx_hosted_transit_virtual_interface.tf b/terraform/aws/backup/aws_dx_hosted_transit_virtual_interface.tf new file mode 100644 index 00000000..8a55560b --- /dev/null +++ b/terraform/aws/backup/aws_dx_hosted_transit_virtual_interface.tf @@ -0,0 +1 @@ +resource "aws_dx_hosted_transit_virtual_interface" "pike" {} diff --git a/terraform/aws/backup/aws_dx_lag.tf b/terraform/aws/backup/aws_dx_lag.tf new file mode 100644 index 00000000..c171015a --- /dev/null +++ b/terraform/aws/backup/aws_dx_lag.tf @@ -0,0 +1 @@ +resource "aws_dx_lag" "pike" {} diff --git a/terraform/aws/backup/aws_dx_macsec_key_association.tf b/terraform/aws/backup/aws_dx_macsec_key_association.tf new file mode 100644 index 00000000..45e410d8 --- /dev/null +++ b/terraform/aws/backup/aws_dx_macsec_key_association.tf @@ -0,0 +1 @@ +resource "aws_dx_macsec_key_association" "pike" {} diff --git a/terraform/aws/backup/aws_dx_private_virtual_interface.tf b/terraform/aws/backup/aws_dx_private_virtual_interface.tf new file mode 100644 index 00000000..f6f9e190 --- /dev/null +++ b/terraform/aws/backup/aws_dx_private_virtual_interface.tf @@ -0,0 +1 @@ +resource "aws_dx_private_virtual_interface" "pike" {} diff --git a/terraform/aws/backup/aws_dx_public_virtual_interface.tf b/terraform/aws/backup/aws_dx_public_virtual_interface.tf new file mode 100644 index 00000000..d801c577 --- /dev/null +++ b/terraform/aws/backup/aws_dx_public_virtual_interface.tf @@ -0,0 +1 @@ +resource "aws_dx_public_virtual_interface" "pike" {} diff --git a/terraform/aws/backup/aws_dx_transit_virtual_interface.tf b/terraform/aws/backup/aws_dx_transit_virtual_interface.tf new file mode 100644 index 00000000..cbb043e4 --- /dev/null +++ b/terraform/aws/backup/aws_dx_transit_virtual_interface.tf @@ -0,0 +1 @@ +resource "aws_dx_transit_virtual_interface" "pike" {} diff --git a/terraform/aws/backup/aws_dynamodb_kinesis_streaming_destination.tf b/terraform/aws/backup/aws_dynamodb_kinesis_streaming_destination.tf new file mode 100644 index 00000000..c7ecbc08 --- /dev/null +++ b/terraform/aws/backup/aws_dynamodb_kinesis_streaming_destination.tf @@ -0,0 +1 @@ +resource "aws_dynamodb_kinesis_streaming_destination" "pike" {} diff --git a/terraform/aws/backup/aws_dynamodb_resource_policy.tf b/terraform/aws/backup/aws_dynamodb_resource_policy.tf new file mode 100644 index 00000000..067b0f3c --- /dev/null +++ b/terraform/aws/backup/aws_dynamodb_resource_policy.tf @@ -0,0 +1 @@ +resource "aws_dynamodb_resource_policy" "pike" {} diff --git a/terraform/aws/backup/aws_dynamodb_table_export.tf b/terraform/aws/backup/aws_dynamodb_table_export.tf new file mode 100644 index 00000000..233c1c8a --- /dev/null +++ b/terraform/aws/backup/aws_dynamodb_table_export.tf @@ -0,0 +1 @@ +resource "aws_dynamodb_table_export" "pike" {} diff --git a/terraform/aws/backup/aws_dynamodb_table_replica.tf b/terraform/aws/backup/aws_dynamodb_table_replica.tf new file mode 100644 index 00000000..fa987758 --- /dev/null +++ b/terraform/aws/backup/aws_dynamodb_table_replica.tf @@ -0,0 +1 @@ +resource "aws_dynamodb_table_replica" "pike" {} diff --git a/terraform/aws/backup/aws_ebs_fast_snapshot_restore.tf b/terraform/aws/backup/aws_ebs_fast_snapshot_restore.tf new file mode 100644 index 00000000..a2cc4139 --- /dev/null +++ b/terraform/aws/backup/aws_ebs_fast_snapshot_restore.tf @@ -0,0 +1 @@ +resource "aws_ebs_fast_snapshot_restore" "pike" {} diff --git a/terraform/aws/backup/aws_ebs_snapshot_import.tf b/terraform/aws/backup/aws_ebs_snapshot_import.tf new file mode 100644 index 00000000..45bf3cc5 --- /dev/null +++ b/terraform/aws/backup/aws_ebs_snapshot_import.tf @@ -0,0 +1 @@ +resource "aws_ebs_snapshot_import" "pike" {} diff --git a/terraform/aws/backup/aws_ec2_capacity_block_reservation.tf b/terraform/aws/backup/aws_ec2_capacity_block_reservation.tf new file mode 100644 index 00000000..c742f7be --- /dev/null +++ b/terraform/aws/backup/aws_ec2_capacity_block_reservation.tf @@ -0,0 +1 @@ +resource "aws_ec2_capacity_block_reservation" "pike" {} diff --git a/terraform/aws/backup/aws_ec2_default_credit_specification.tf b/terraform/aws/backup/aws_ec2_default_credit_specification.tf new file mode 100644 index 00000000..de8d4c1c --- /dev/null +++ b/terraform/aws/backup/aws_ec2_default_credit_specification.tf @@ -0,0 +1,4 @@ +resource "aws_ec2_default_credit_specification" "pike" { + instance_family = "t2" + cpu_credits = "standard" +} diff --git a/terraform/aws/backup/aws_ec2_instance_connect_endpoint.tf b/terraform/aws/backup/aws_ec2_instance_connect_endpoint.tf new file mode 100644 index 00000000..4f2b8f38 --- /dev/null +++ b/terraform/aws/backup/aws_ec2_instance_connect_endpoint.tf @@ -0,0 +1 @@ +resource "aws_ec2_instance_connect_endpoint" "pike" {} diff --git a/terraform/aws/backup/aws_ec2_instance_metadata_defaults.tf b/terraform/aws/backup/aws_ec2_instance_metadata_defaults.tf new file mode 100644 index 00000000..d80a2751 --- /dev/null +++ b/terraform/aws/backup/aws_ec2_instance_metadata_defaults.tf @@ -0,0 +1 @@ +resource "aws_ec2_instance_metadata_defaults" "pike" {} diff --git a/terraform/aws/backup/aws_ec2_instance_state.tf b/terraform/aws/backup/aws_ec2_instance_state.tf new file mode 100644 index 00000000..017862d0 --- /dev/null +++ b/terraform/aws/backup/aws_ec2_instance_state.tf @@ -0,0 +1 @@ +resource "aws_ec2_instance_state" "pike" {} diff --git a/terraform/aws/backup/aws_ec2_managed_prefix_list_entry.tf b/terraform/aws/backup/aws_ec2_managed_prefix_list_entry.tf new file mode 100644 index 00000000..492f1aba --- /dev/null +++ b/terraform/aws/backup/aws_ec2_managed_prefix_list_entry.tf @@ -0,0 +1 @@ +resource "aws_ec2_managed_prefix_list_entry" "pike" {} diff --git a/terraform/aws/backup/aws_ec2_subnet_cidr_reservation.tf b/terraform/aws/backup/aws_ec2_subnet_cidr_reservation.tf new file mode 100644 index 00000000..b39831ab --- /dev/null +++ b/terraform/aws/backup/aws_ec2_subnet_cidr_reservation.tf @@ -0,0 +1 @@ +resource "aws_ec2_subnet_cidr_reservation" "pike" {} diff --git a/terraform/aws/backup/aws_ec2_traffic_mirror_filter.tf b/terraform/aws/backup/aws_ec2_traffic_mirror_filter.tf new file mode 100644 index 00000000..ecbe2444 --- /dev/null +++ b/terraform/aws/backup/aws_ec2_traffic_mirror_filter.tf @@ -0,0 +1 @@ +resource "aws_ec2_traffic_mirror_filter" "pike" {} diff --git a/terraform/aws/backup/aws_ec2_traffic_mirror_filter_rule.tf b/terraform/aws/backup/aws_ec2_traffic_mirror_filter_rule.tf new file mode 100644 index 00000000..dcfdb6a0 --- /dev/null +++ b/terraform/aws/backup/aws_ec2_traffic_mirror_filter_rule.tf @@ -0,0 +1,9 @@ +resource "aws_ec2_traffic_mirror_filter_rule" "pike" { + description = "test rule" + traffic_mirror_filter_id = aws_ec2_traffic_mirror_filter.pike.id + destination_cidr_block = "10.0.0.0/8" + source_cidr_block = "10.0.0.0/8" + rule_number = 1 + rule_action = "accept" + traffic_direction = "egress" +} diff --git a/terraform/aws/backup/aws_ec2_traffic_mirror_session.tf b/terraform/aws/backup/aws_ec2_traffic_mirror_session.tf new file mode 100644 index 00000000..6e4cd4f4 --- /dev/null +++ b/terraform/aws/backup/aws_ec2_traffic_mirror_session.tf @@ -0,0 +1,12 @@ +resource "aws_ec2_traffic_mirror_session" "pike" { + description = "traffic mirror session - terraform example" + network_interface_id = aws_instance.test.primary_network_interface_id + session_number = 1 + traffic_mirror_filter_id = aws_ec2_traffic_mirror_filter.filter.id + traffic_mirror_target_id = aws_ec2_traffic_mirror_target.pike.id +} + +resource "aws_ec2_traffic_mirror_filter" "filter" { + description = "traffic mirror filter - terraform example" + network_services = ["amazon-dns"] +} diff --git a/terraform/aws/backup/aws_ec2_traffic_mirror_target.tf b/terraform/aws/backup/aws_ec2_traffic_mirror_target.tf new file mode 100644 index 00000000..cab17baa --- /dev/null +++ b/terraform/aws/backup/aws_ec2_traffic_mirror_target.tf @@ -0,0 +1,26 @@ +resource "aws_ec2_traffic_mirror_target" "pike" { + description = "NLB target" + network_interface_id = aws_instance.test.primary_network_interface_id +} + + +resource "aws_instance" "test" { + ami = data.aws_ami.ubuntu.id + instance_type = "t3.micro" +} + +data "aws_ami" "ubuntu" { + most_recent = true + + filter { + name = "name" + values = ["ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"] + } + + filter { + name = "virtualization-type" + values = ["hvm"] + } + + owners = ["099720109477"] # Canonical +} diff --git a/terraform/aws/backup/aws_ec2_transit_gateway_connect_peer.tf b/terraform/aws/backup/aws_ec2_transit_gateway_connect_peer.tf new file mode 100644 index 00000000..3cb57092 --- /dev/null +++ b/terraform/aws/backup/aws_ec2_transit_gateway_connect_peer.tf @@ -0,0 +1 @@ +resource "aws_ec2_transit_gateway_connect_peer" "pike" {} diff --git a/terraform/aws/backup/aws_ec2_transit_gateway_default_route_table_association.tf b/terraform/aws/backup/aws_ec2_transit_gateway_default_route_table_association.tf new file mode 100644 index 00000000..944fe690 --- /dev/null +++ b/terraform/aws/backup/aws_ec2_transit_gateway_default_route_table_association.tf @@ -0,0 +1 @@ +resource "aws_ec2_transit_gateway_default_route_table_association" "pike" {} diff --git a/terraform/aws/backup/aws_ec2_transit_gateway_default_route_table_propagation.tf b/terraform/aws/backup/aws_ec2_transit_gateway_default_route_table_propagation.tf new file mode 100644 index 00000000..6e08ee3e --- /dev/null +++ b/terraform/aws/backup/aws_ec2_transit_gateway_default_route_table_propagation.tf @@ -0,0 +1 @@ +resource "aws_ec2_transit_gateway_default_route_table_propagation" "pike" {} diff --git a/terraform/aws/backup/aws_ec2_transit_gateway_peering_attachment_accepter.tf b/terraform/aws/backup/aws_ec2_transit_gateway_peering_attachment_accepter.tf new file mode 100644 index 00000000..565a220f --- /dev/null +++ b/terraform/aws/backup/aws_ec2_transit_gateway_peering_attachment_accepter.tf @@ -0,0 +1 @@ +resource "aws_ec2_transit_gateway_peering_attachment_accepter" "pike" {} diff --git a/terraform/aws/backup/aws_ec2_transit_gateway_policy_table.tf b/terraform/aws/backup/aws_ec2_transit_gateway_policy_table.tf new file mode 100644 index 00000000..b3eb300d --- /dev/null +++ b/terraform/aws/backup/aws_ec2_transit_gateway_policy_table.tf @@ -0,0 +1 @@ +resource "aws_ec2_transit_gateway_policy_table" "pike" {} diff --git a/terraform/aws/backup/aws_ec2_transit_gateway_policy_table_association.tf b/terraform/aws/backup/aws_ec2_transit_gateway_policy_table_association.tf new file mode 100644 index 00000000..6567fa02 --- /dev/null +++ b/terraform/aws/backup/aws_ec2_transit_gateway_policy_table_association.tf @@ -0,0 +1 @@ +resource "aws_ec2_transit_gateway_policy_table_association" "pike" {} diff --git a/terraform/aws/backup/aws_ec2_transit_gateway_prefix_list_reference.tf b/terraform/aws/backup/aws_ec2_transit_gateway_prefix_list_reference.tf new file mode 100644 index 00000000..d226e58e --- /dev/null +++ b/terraform/aws/backup/aws_ec2_transit_gateway_prefix_list_reference.tf @@ -0,0 +1 @@ +resource "aws_ec2_transit_gateway_prefix_list_reference" "pike" {} diff --git a/terraform/aws/backup/aws_ec2_transit_gateway_vpc_attachment_accepter.tf b/terraform/aws/backup/aws_ec2_transit_gateway_vpc_attachment_accepter.tf new file mode 100644 index 00000000..045a89e5 --- /dev/null +++ b/terraform/aws/backup/aws_ec2_transit_gateway_vpc_attachment_accepter.tf @@ -0,0 +1 @@ +resource "aws_ec2_transit_gateway_vpc_attachment_accepter" "pike" {} diff --git a/terraform/aws/backup/aws_ecr_account_setting.tf b/terraform/aws/backup/aws_ecr_account_setting.tf new file mode 100644 index 00000000..75a9fbf8 --- /dev/null +++ b/terraform/aws/backup/aws_ecr_account_setting.tf @@ -0,0 +1 @@ +resource "aws_ecr_account_setting" "pike" {} diff --git a/terraform/aws/backup/aws_ecs_account_setting_default.tf b/terraform/aws/backup/aws_ecs_account_setting_default.tf new file mode 100644 index 00000000..cbcd302a --- /dev/null +++ b/terraform/aws/backup/aws_ecs_account_setting_default.tf @@ -0,0 +1 @@ +resource "aws_ecs_account_setting_default" "pike" {} diff --git a/terraform/aws/backup/aws_ecs_cluster_capacity_providers.tf b/terraform/aws/backup/aws_ecs_cluster_capacity_providers.tf new file mode 100644 index 00000000..74091458 --- /dev/null +++ b/terraform/aws/backup/aws_ecs_cluster_capacity_providers.tf @@ -0,0 +1 @@ +resource "aws_ecs_cluster_capacity_providers" "pike" {} diff --git a/terraform/aws/backup/aws_eip_domain_name.tf b/terraform/aws/backup/aws_eip_domain_name.tf new file mode 100644 index 00000000..df8036dc --- /dev/null +++ b/terraform/aws/backup/aws_eip_domain_name.tf @@ -0,0 +1 @@ +resource "aws_eip_domain_name" "pike" {} diff --git a/terraform/aws/backup/aws_eks_access_policy_association.tf b/terraform/aws/backup/aws_eks_access_policy_association.tf new file mode 100644 index 00000000..51d66866 --- /dev/null +++ b/terraform/aws/backup/aws_eks_access_policy_association.tf @@ -0,0 +1 @@ +resource "aws_eks_access_policy_association" "pike" {} diff --git a/terraform/aws/backup/aws_elasticache_reserved_cache_node.tf b/terraform/aws/backup/aws_elasticache_reserved_cache_node.tf new file mode 100644 index 00000000..26dd09a7 --- /dev/null +++ b/terraform/aws/backup/aws_elasticache_reserved_cache_node.tf @@ -0,0 +1 @@ +resource "aws_elasticache_reserved_cache_node" "pike" {} diff --git a/terraform/aws/backup/aws_elasticache_serverless_cache.tf b/terraform/aws/backup/aws_elasticache_serverless_cache.tf new file mode 100644 index 00000000..f5554c74 --- /dev/null +++ b/terraform/aws/backup/aws_elasticache_serverless_cache.tf @@ -0,0 +1 @@ +resource "aws_elasticache_serverless_cache" "pike" {} diff --git a/terraform/aws/backup/aws_elasticache_user_group_association.tf b/terraform/aws/backup/aws_elasticache_user_group_association.tf new file mode 100644 index 00000000..2ee9cf34 --- /dev/null +++ b/terraform/aws/backup/aws_elasticache_user_group_association.tf @@ -0,0 +1 @@ +resource "aws_elasticache_user_group_association" "pike" {} diff --git a/terraform/aws/backup/aws_elasticsearch_domain_saml_options.tf b/terraform/aws/backup/aws_elasticsearch_domain_saml_options.tf new file mode 100644 index 00000000..67dd0142 --- /dev/null +++ b/terraform/aws/backup/aws_elasticsearch_domain_saml_options.tf @@ -0,0 +1,27 @@ +resource "aws_elasticsearch_domain" "example" { + domain_name = "example" + elasticsearch_version = "1.5" + + cluster_config { + instance_type = "r4.large.elasticsearch" + } + + snapshot_options { + automated_snapshot_start_hour = 23 + } + + tags = { + Domain = "TestDomain" + } +} + +resource "aws_elasticsearch_domain_saml_options" "example" { + domain_name = aws_elasticsearch_domain.example.domain_name + saml_options { + enabled = true + idp { + entity_id = "https://example.com" + metadata_content = file("./saml-metadata.xml") + } + } +} diff --git a/terraform/aws/backup/aws_elasticsearch_vpc_endpoint.tf b/terraform/aws/backup/aws_elasticsearch_vpc_endpoint.tf new file mode 100644 index 00000000..c3cbb7d3 --- /dev/null +++ b/terraform/aws/backup/aws_elasticsearch_vpc_endpoint.tf @@ -0,0 +1 @@ +# resource "aws_elasticsearch_vpc_endpoint" "pike" {} diff --git a/terraform/aws/backup/aws_elastictranscoder_pipeline.tf b/terraform/aws/backup/aws_elastictranscoder_pipeline.tf new file mode 100644 index 00000000..4f90aafa --- /dev/null +++ b/terraform/aws/backup/aws_elastictranscoder_pipeline.tf @@ -0,0 +1 @@ +resource "aws_elastictranscoder_pipeline" "pike" {} diff --git a/terraform/aws/backup/aws_elastictranscoder_preset.tf b/terraform/aws/backup/aws_elastictranscoder_preset.tf new file mode 100644 index 00000000..fba133d8 --- /dev/null +++ b/terraform/aws/backup/aws_elastictranscoder_preset.tf @@ -0,0 +1 @@ +resource "aws_elastictranscoder_preset" "pike" {} diff --git a/terraform/aws/backup/aws_emr_instance_fleet.tf b/terraform/aws/backup/aws_emr_instance_fleet.tf new file mode 100644 index 00000000..d4f5c7f5 --- /dev/null +++ b/terraform/aws/backup/aws_emr_instance_fleet.tf @@ -0,0 +1,34 @@ +resource "aws_emr_instance_fleet" "task" { + cluster_id = aws_emr_cluster.cluster.id + instance_type_configs { + bid_price_as_percentage_of_on_demand_price = 100 + ebs_config { + size = 100 + type = "gp2" + volumes_per_instance = 1 + } + instance_type = "m4.xlarge" + weighted_capacity = 1 + } + instance_type_configs { + bid_price_as_percentage_of_on_demand_price = 100 + ebs_config { + size = 100 + type = "gp2" + volumes_per_instance = 1 + } + instance_type = "m4.2xlarge" + weighted_capacity = 2 + } + launch_specifications { + spot_specification { + allocation_strategy = "capacity-optimized" + block_duration_minutes = 0 + timeout_action = "TERMINATE_CLUSTER" + timeout_duration_minutes = 10 + } + } + name = "task fleet" + target_on_demand_capacity = 1 + target_spot_capacity = 1 +} diff --git a/terraform/aws/backup/aws_emr_instance_group.tf b/terraform/aws/backup/aws_emr_instance_group.tf new file mode 100644 index 00000000..bfb96d00 --- /dev/null +++ b/terraform/aws/backup/aws_emr_instance_group.tf @@ -0,0 +1,6 @@ +resource "aws_emr_instance_group" "pike" { + cluster_id = aws_emr_cluster.tf-test-cluster.id + instance_count = 1 + instance_type = "m5.xlarge" + name = "my little instance group" +} diff --git a/terraform/aws/backup/aws_emrcontainers_job_template.tf b/terraform/aws/backup/aws_emrcontainers_job_template.tf new file mode 100644 index 00000000..2182e898 --- /dev/null +++ b/terraform/aws/backup/aws_emrcontainers_job_template.tf @@ -0,0 +1 @@ +resource "aws_emrcontainers_job_template" "pike" {} diff --git a/terraform/aws/backup/aws_finspace_kx_cluster.tf b/terraform/aws/backup/aws_finspace_kx_cluster.tf new file mode 100644 index 00000000..9e3a9701 --- /dev/null +++ b/terraform/aws/backup/aws_finspace_kx_cluster.tf @@ -0,0 +1 @@ +resource "aws_finspace_kx_cluster" "pike" {} diff --git a/terraform/aws/backup/aws_finspace_kx_database.tf b/terraform/aws/backup/aws_finspace_kx_database.tf new file mode 100644 index 00000000..efe88da3 --- /dev/null +++ b/terraform/aws/backup/aws_finspace_kx_database.tf @@ -0,0 +1 @@ +resource "aws_finspace_kx_database" "pike" {} diff --git a/terraform/aws/backup/aws_finspace_kx_dataview.tf b/terraform/aws/backup/aws_finspace_kx_dataview.tf new file mode 100644 index 00000000..6a9fd905 --- /dev/null +++ b/terraform/aws/backup/aws_finspace_kx_dataview.tf @@ -0,0 +1 @@ +resource "aws_finspace_kx_dataview" "pike" {} diff --git a/terraform/aws/backup/aws_finspace_kx_scaling_group.tf b/terraform/aws/backup/aws_finspace_kx_scaling_group.tf new file mode 100644 index 00000000..7f9ca80a --- /dev/null +++ b/terraform/aws/backup/aws_finspace_kx_scaling_group.tf @@ -0,0 +1 @@ +resource "aws_finspace_kx_scaling_group" "pike" {} diff --git a/terraform/aws/backup/aws_finspace_kx_user.tf b/terraform/aws/backup/aws_finspace_kx_user.tf new file mode 100644 index 00000000..46d03068 --- /dev/null +++ b/terraform/aws/backup/aws_finspace_kx_user.tf @@ -0,0 +1 @@ +resource "aws_finspace_kx_user" "pike" {} diff --git a/terraform/aws/backup/aws_finspace_kx_volume.tf b/terraform/aws/backup/aws_finspace_kx_volume.tf new file mode 100644 index 00000000..4bbe965b --- /dev/null +++ b/terraform/aws/backup/aws_finspace_kx_volume.tf @@ -0,0 +1 @@ +resource "aws_finspace_kx_volume" "pike" {} diff --git a/terraform/aws/backup/aws_fms_admin_account.tf b/terraform/aws/backup/aws_fms_admin_account.tf new file mode 100644 index 00000000..0e0cdc4b --- /dev/null +++ b/terraform/aws/backup/aws_fms_admin_account.tf @@ -0,0 +1 @@ +resource "aws_fms_admin_account" "pike" {} diff --git a/terraform/aws/backup/aws_globalaccelerator_custom_routing_accelerator.tf b/terraform/aws/backup/aws_globalaccelerator_custom_routing_accelerator.tf new file mode 100644 index 00000000..ecbf2e14 --- /dev/null +++ b/terraform/aws/backup/aws_globalaccelerator_custom_routing_accelerator.tf @@ -0,0 +1,12 @@ +resource "aws_globalaccelerator_custom_routing_accelerator" "pike" { + name = "Example" + ip_address_type = "IPV4" + ip_addresses = ["1.2.3.4"] + enabled = true + + attributes { + flow_logs_enabled = true + flow_logs_s3_bucket = "example-bucket" + flow_logs_s3_prefix = "flow-logs/" + } +} diff --git a/terraform/aws/backup/aws_globalaccelerator_custom_routing_endpoint_group.tf b/terraform/aws/backup/aws_globalaccelerator_custom_routing_endpoint_group.tf new file mode 100644 index 00000000..db303a33 --- /dev/null +++ b/terraform/aws/backup/aws_globalaccelerator_custom_routing_endpoint_group.tf @@ -0,0 +1,15 @@ +resource "aws_globalaccelerator_custom_routing_endpoint_group" "pike" { + listener_arn = aws_globalaccelerator_custom_routing_listener.pike.id + + destination_configuration { + from_port = 80 + to_port = 8080 + protocols = ["TCP"] + } + + endpoint_configuration { + endpoint_id = data.aws_subnets.pike.ids[0] + } +} + +data "aws_subnets" "pike" {} diff --git a/terraform/aws/backup/aws_globalaccelerator_custom_routing_listener.tf b/terraform/aws/backup/aws_globalaccelerator_custom_routing_listener.tf new file mode 100644 index 00000000..73000024 --- /dev/null +++ b/terraform/aws/backup/aws_globalaccelerator_custom_routing_listener.tf @@ -0,0 +1,8 @@ +resource "aws_globalaccelerator_custom_routing_listener" "pike" { + accelerator_arn = aws_globalaccelerator_custom_routing_accelerator.pike.id + + port_range { + from_port = 80 + to_port = 80 + } +} diff --git a/terraform/aws/backup/aws_glue_catalog_table_optimizer.tf b/terraform/aws/backup/aws_glue_catalog_table_optimizer.tf new file mode 100644 index 00000000..f3336d25 --- /dev/null +++ b/terraform/aws/backup/aws_glue_catalog_table_optimizer.tf @@ -0,0 +1 @@ +resource "aws_glue_catalog_table_optimizer" "pike" {} diff --git a/terraform/aws/backup/aws_glue_data_quality_ruleset.tf b/terraform/aws/backup/aws_glue_data_quality_ruleset.tf new file mode 100644 index 00000000..379338f0 --- /dev/null +++ b/terraform/aws/backup/aws_glue_data_quality_ruleset.tf @@ -0,0 +1,4 @@ +resource "aws_glue_data_quality_ruleset" "pike" { + name = "example" + ruleset = "Rules = [Completeness \"colA\" between 0.4 and 0.8]" +} diff --git a/terraform/aws/backup/aws_glue_dev_endpoint.tf b/terraform/aws/backup/aws_glue_dev_endpoint.tf new file mode 100644 index 00000000..2f3b113a --- /dev/null +++ b/terraform/aws/backup/aws_glue_dev_endpoint.tf @@ -0,0 +1,25 @@ +resource "aws_glue_dev_endpoint" "pike" { + name = "foo" + role_arn = aws_iam_role.example.arn +} + +resource "aws_iam_role" "example" { + name = "AWSGlueServiceRole-foo" + assume_role_policy = data.aws_iam_policy_document.example.json +} + +data "aws_iam_policy_document" "example" { + statement { + actions = ["sts:AssumeRole"] + + principals { + type = "Service" + identifiers = ["glue.amazonaws.com"] + } + } +} + +resource "aws_iam_role_policy_attachment" "example-AWSGlueServiceRole" { + policy_arn = "arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole" + role = aws_iam_role.example.name +} diff --git a/terraform/aws/backup/aws_glue_partition.tf b/terraform/aws/backup/aws_glue_partition.tf new file mode 100644 index 00000000..876dca4d --- /dev/null +++ b/terraform/aws/backup/aws_glue_partition.tf @@ -0,0 +1,5 @@ +resource "aws_glue_partition" "pike" { + database_name = "some-database" + table_name = "some-table" + partition_values = ["some-value"] +} diff --git a/terraform/aws/backup/aws_glue_partition_index.tf b/terraform/aws/backup/aws_glue_partition_index.tf new file mode 100644 index 00000000..006f8891 --- /dev/null +++ b/terraform/aws/backup/aws_glue_partition_index.tf @@ -0,0 +1 @@ +resource "aws_glue_partition_index" "pike" {} diff --git a/terraform/aws/backup/aws_grafana_license_association.tf b/terraform/aws/backup/aws_grafana_license_association.tf new file mode 100644 index 00000000..9d4a14fa --- /dev/null +++ b/terraform/aws/backup/aws_grafana_license_association.tf @@ -0,0 +1 @@ +resource "aws_grafana_license_association" "pike" {} diff --git a/terraform/aws/backup/aws_grafana_role_association.tf b/terraform/aws/backup/aws_grafana_role_association.tf new file mode 100644 index 00000000..f4bae1b5 --- /dev/null +++ b/terraform/aws/backup/aws_grafana_role_association.tf @@ -0,0 +1,29 @@ +resource "aws_grafana_role_association" "example" { + role = "ADMIN" + user_ids = ["USER_ID_1", "USER_ID_2"] + workspace_id = aws_grafana_workspace.example.id +} + +resource "aws_grafana_workspace" "example" { + account_access_type = "CURRENT_ACCOUNT" + authentication_providers = ["SAML"] + permission_type = "SERVICE_MANAGED" + role_arn = aws_iam_role.assume.arn +} + +resource "aws_iam_role" "assume" { + name = "grafana-assume" + assume_role_policy = jsonencode({ + Version = "2012-10-17" + Statement = [ + { + Action = "sts:AssumeRole" + Effect = "Allow" + Sid = "" + Principal = { + Service = "grafana.amazonaws.com" + } + }, + ] + }) +} diff --git a/terraform/aws/backup/aws_grafana_workspace.tf b/terraform/aws/backup/aws_grafana_workspace.tf new file mode 100644 index 00000000..9fb8e5cd --- /dev/null +++ b/terraform/aws/backup/aws_grafana_workspace.tf @@ -0,0 +1,23 @@ +resource "aws_grafana_workspace" "example" { + account_access_type = "CURRENT_ACCOUNT" + authentication_providers = ["SAML"] + permission_type = "SERVICE_MANAGED" + role_arn = aws_iam_role.assume.arn +} + +resource "aws_iam_role" "assume" { + name = "grafana-assume" + assume_role_policy = jsonencode({ + Version = "2012-10-17" + Statement = [ + { + Action = "sts:AssumeRole" + Effect = "Allow" + Sid = "" + Principal = { + Service = "grafana. amazonaws. com" + } + }, + ] + }) +} diff --git a/terraform/aws/backup/aws_grafana_workspace_saml_configuration.tf b/terraform/aws/backup/aws_grafana_workspace_saml_configuration.tf new file mode 100644 index 00000000..3e28ca5b --- /dev/null +++ b/terraform/aws/backup/aws_grafana_workspace_saml_configuration.tf @@ -0,0 +1,29 @@ +resource "aws_grafana_workspace_saml_configuration" "example" { + editor_role_values = ["editor"] + idp_metadata_url = "https://my_idp_metadata.url" + workspace_id = aws_grafana_workspace.example.id +} + +resource "aws_grafana_workspace" "example" { + account_access_type = "CURRENT_ACCOUNT" + authentication_providers = ["SAML"] + permission_type = "SERVICE_MANAGED" + role_arn = aws_iam_role.assume.arn +} + +resource "aws_iam_role" "assume" { + name = "grafana-assume" + assume_role_policy = jsonencode({ + Version = "2012-10-17" + Statement = [ + { + Action = "sts:AssumeRole" + Effect = "Allow" + Sid = "" + Principal = { + Service = "grafana.amazonaws.com" + } + }, + ] + }) +} diff --git a/terraform/aws/backup/aws_grafana_workspace_service_account.tf b/terraform/aws/backup/aws_grafana_workspace_service_account.tf new file mode 100644 index 00000000..a706ff85 --- /dev/null +++ b/terraform/aws/backup/aws_grafana_workspace_service_account.tf @@ -0,0 +1 @@ +resource "aws_grafana_workspace_service_account" "pike" {} diff --git a/terraform/aws/backup/aws_grafana_workspace_service_account_token.tf b/terraform/aws/backup/aws_grafana_workspace_service_account_token.tf new file mode 100644 index 00000000..ebb3dc9d --- /dev/null +++ b/terraform/aws/backup/aws_grafana_workspace_service_account_token.tf @@ -0,0 +1 @@ +resource "aws_grafana_workspace_service_account_token" "pike" {} diff --git a/terraform/aws/backup/aws_guardduty_detector_feature.tf b/terraform/aws/backup/aws_guardduty_detector_feature.tf new file mode 100644 index 00000000..fd56b416 --- /dev/null +++ b/terraform/aws/backup/aws_guardduty_detector_feature.tf @@ -0,0 +1,14 @@ +resource "aws_guardduty_detector" "example" { + enable = true +} + +resource "aws_guardduty_detector_feature" "eks_runtime_monitoring" { + detector_id = aws_guardduty_detector.example.id + name = "EKS_RUNTIME_MONITORING" + status = "ENABLED" + + additional_configuration { + name = "EKS_ADDON_MANAGEMENT" + status = "ENABLED" + } +} diff --git a/terraform/aws/backup/aws_guardduty_invite_accepter.tf b/terraform/aws/backup/aws_guardduty_invite_accepter.tf new file mode 100644 index 00000000..4c791c32 --- /dev/null +++ b/terraform/aws/backup/aws_guardduty_invite_accepter.tf @@ -0,0 +1 @@ +resource "aws_guardduty_invite_accepter" "pike" {} diff --git a/terraform/aws/backup/aws_guardduty_member_detector_feature.tf b/terraform/aws/backup/aws_guardduty_member_detector_feature.tf new file mode 100644 index 00000000..371bb862 --- /dev/null +++ b/terraform/aws/backup/aws_guardduty_member_detector_feature.tf @@ -0,0 +1,17 @@ + +resource "aws_guardduty_member_detector_feature" "runtime_monitoring" { + detector_id = aws_guardduty_detector.example.id + account_id = "680235478471" + name = "RUNTIME_MONITORING" + status = "ENABLED" + + additional_configuration { + name = "EKS_ADDON_MANAGEMENT" + status = "ENABLED" + } + + additional_configuration { + name = "ECS_FARGATE_AGENT_MANAGEMENT" + status = "ENABLED" + } +} diff --git a/terraform/aws/backup/aws_guardduty_organization_admin_account.tf b/terraform/aws/backup/aws_guardduty_organization_admin_account.tf new file mode 100644 index 00000000..496ea2c5 --- /dev/null +++ b/terraform/aws/backup/aws_guardduty_organization_admin_account.tf @@ -0,0 +1 @@ +resource "aws_guardduty_organization_admin_account" "pike" {} diff --git a/terraform/aws/backup/aws_guardduty_organization_configuration.tf b/terraform/aws/backup/aws_guardduty_organization_configuration.tf new file mode 100644 index 00000000..f280a437 --- /dev/null +++ b/terraform/aws/backup/aws_guardduty_organization_configuration.tf @@ -0,0 +1 @@ +resource "aws_guardduty_organization_configuration" "pike" {} diff --git a/terraform/aws/backup/aws_guardduty_organization_configuration_feature.tf b/terraform/aws/backup/aws_guardduty_organization_configuration_feature.tf new file mode 100644 index 00000000..4de0ed24 --- /dev/null +++ b/terraform/aws/backup/aws_guardduty_organization_configuration_feature.tf @@ -0,0 +1 @@ +resource "aws_guardduty_organization_configuration_feature" "pike" {} diff --git a/terraform/aws/backup/aws_guardduty_publishing_destination.tf b/terraform/aws/backup/aws_guardduty_publishing_destination.tf new file mode 100644 index 00000000..f593a593 --- /dev/null +++ b/terraform/aws/backup/aws_guardduty_publishing_destination.tf @@ -0,0 +1 @@ +resource "aws_guardduty_publishing_destination" "pike" {} diff --git a/terraform/aws/backup/aws_iam_group_policy_attachments_exclusive.tf b/terraform/aws/backup/aws_iam_group_policy_attachments_exclusive.tf new file mode 100644 index 00000000..b70aa1fd --- /dev/null +++ b/terraform/aws/backup/aws_iam_group_policy_attachments_exclusive.tf @@ -0,0 +1 @@ +resource "aws_iam_group_policy_attachments_exclusive" "pike" {} diff --git a/terraform/aws/backup/aws_iam_organizations_features.tf b/terraform/aws/backup/aws_iam_organizations_features.tf new file mode 100644 index 00000000..5054dd9b --- /dev/null +++ b/terraform/aws/backup/aws_iam_organizations_features.tf @@ -0,0 +1,6 @@ +resource "aws_iam_organizations_features" "pike" { + enabled_features = [ + "RootCredentialsManagement", + "RootSessions" + ] +} diff --git a/terraform/aws/backup/aws_iam_role_policy_attachments_exclusive.tf b/terraform/aws/backup/aws_iam_role_policy_attachments_exclusive.tf new file mode 100644 index 00000000..6175b363 --- /dev/null +++ b/terraform/aws/backup/aws_iam_role_policy_attachments_exclusive.tf @@ -0,0 +1 @@ +resource "aws_iam_role_policy_attachments_exclusive" "pike" {} diff --git a/terraform/aws/backup/aws_iam_user_policy_attachments_exclusive.tf b/terraform/aws/backup/aws_iam_user_policy_attachments_exclusive.tf new file mode 100644 index 00000000..a81b8f6a --- /dev/null +++ b/terraform/aws/backup/aws_iam_user_policy_attachments_exclusive.tf @@ -0,0 +1 @@ +resource "aws_iam_user_policy_attachments_exclusive" "pike" {} diff --git a/terraform/aws/backup/aws_identitystore_group.tf b/terraform/aws/backup/aws_identitystore_group.tf new file mode 100644 index 00000000..d09f042f --- /dev/null +++ b/terraform/aws/backup/aws_identitystore_group.tf @@ -0,0 +1,5 @@ +resource "aws_identitystore_group" "example" { + identity_store_id = tolist(data.aws_ssoadmin_instances.example.identity_store_ids)[0] + display_name = "MyGroup" + description = "Some group name" +} diff --git a/terraform/aws/backup/aws_identitystore_group_membership.tf b/terraform/aws/backup/aws_identitystore_group_membership.tf new file mode 100644 index 00000000..75f13391 --- /dev/null +++ b/terraform/aws/backup/aws_identitystore_group_membership.tf @@ -0,0 +1,20 @@ +data "aws_ssoadmin_instances" "example" {} + +resource "aws_identitystore_user" "example" { + identity_store_id = tolist(data.aws_ssoadmin_instances.example.identity_store_ids)[0] + display_name = "John Doe" + user_name = "john.doe@example.com" + + name { + family_name = "Doe" + given_name = "John" + } +} + + + +resource "aws_identitystore_group_membership" "example" { + identity_store_id = tolist(data.aws_ssoadmin_instances.example.identity_store_ids)[0] + group_id = aws_identitystore_group.example.group_id + member_id = aws_identitystore_user.example.user_id +} diff --git a/terraform/aws/backup/aws_imagebuilder_lifecycle_policy.tf b/terraform/aws/backup/aws_imagebuilder_lifecycle_policy.tf new file mode 100644 index 00000000..bd790f61 --- /dev/null +++ b/terraform/aws/backup/aws_imagebuilder_lifecycle_policy.tf @@ -0,0 +1,48 @@ +data "aws_region" "current" {} + +data "aws_partition" "current" {} + +resource "aws_iam_role" "example" { + assume_role_policy = jsonencode({ + Version = "2012-10-17" + Statement = [{ + Action = "sts:AssumeRole" + Effect = "Allow" + Principal = { + Service = "imagebuilder.${data.aws_partition.current.dns_suffix}" + } + }] + }) + name = "example" +} + +resource "aws_iam_role_policy_attachment" "example" { + policy_arn = "arn:${data.aws_partition.current.partition}:iam::aws:policy/service-role/EC2ImageBuilderLifecycleExecutionPolicy" + role = aws_iam_role.example.name +} + +resource "aws_imagebuilder_lifecycle_policy" "example" { + name = "name" + description = "Example description" + execution_role = aws_iam_role.example.arn + resource_type = "AMI_IMAGE" + policy_detail { + action { + type = "DELETE" + } + filter { + type = "AGE" + value = 6 + retain_at_least = 10 + unit = "YEARS" + } + } + resource_selection { + tag_map = { + "key1" = "value1" + "key2" = "value2" + } + } + + depends_on = [aws_iam_role_policy_attachment.example] +} diff --git a/terraform/aws/backup/aws_inspector2_filter.tf b/terraform/aws/backup/aws_inspector2_filter.tf new file mode 100644 index 00000000..6cee6b51 --- /dev/null +++ b/terraform/aws/backup/aws_inspector2_filter.tf @@ -0,0 +1,14 @@ +resource "aws_inspector2_filter" "pike" { + name = "pike" + action = "NONE" + filter_criteria { + aws_account_id { + comparison = "EQUALS" + value = "111222333444" + } + } + + tags = { + pike = "permission" + } +} diff --git a/terraform/aws/backup/aws_internet_gateway_attachment.tf b/terraform/aws/backup/aws_internet_gateway_attachment.tf new file mode 100644 index 00000000..9636d6d4 --- /dev/null +++ b/terraform/aws/backup/aws_internet_gateway_attachment.tf @@ -0,0 +1 @@ +resource "aws_internet_gateway_attachment" "pike" {} diff --git a/terraform/aws/backup/aws_iot_domain_configuration.tf b/terraform/aws/backup/aws_iot_domain_configuration.tf new file mode 100644 index 00000000..c73361b3 --- /dev/null +++ b/terraform/aws/backup/aws_iot_domain_configuration.tf @@ -0,0 +1,3 @@ +resource "aws_iot_domain_configuration" "pike" { + name = "pike" +} diff --git a/terraform/aws/backup/aws_iot_event_configurations.tf b/terraform/aws/backup/aws_iot_event_configurations.tf new file mode 100644 index 00000000..d9b48758 --- /dev/null +++ b/terraform/aws/backup/aws_iot_event_configurations.tf @@ -0,0 +1 @@ +resource "aws_iot_event_configurations" "pike" {} diff --git a/terraform/aws/backup/aws_iot_indexing_configuration.tf b/terraform/aws/backup/aws_iot_indexing_configuration.tf new file mode 100644 index 00000000..2230622f --- /dev/null +++ b/terraform/aws/backup/aws_iot_indexing_configuration.tf @@ -0,0 +1 @@ +resource "aws_iot_indexing_configuration" "pike" {} diff --git a/terraform/aws/backup/aws_iot_logging_options.tf b/terraform/aws/backup/aws_iot_logging_options.tf new file mode 100644 index 00000000..705e7572 --- /dev/null +++ b/terraform/aws/backup/aws_iot_logging_options.tf @@ -0,0 +1 @@ +resource "aws_iot_logging_options" "pike" {} diff --git a/terraform/aws/backup/aws_iot_policy_attachment.tf b/terraform/aws/backup/aws_iot_policy_attachment.tf new file mode 100644 index 00000000..203322ae --- /dev/null +++ b/terraform/aws/backup/aws_iot_policy_attachment.tf @@ -0,0 +1 @@ +resource "aws_iot_policy_attachment" "pike" {} diff --git a/terraform/aws/backup/aws_iot_thing_group_membership.tf b/terraform/aws/backup/aws_iot_thing_group_membership.tf new file mode 100644 index 00000000..98acb18c --- /dev/null +++ b/terraform/aws/backup/aws_iot_thing_group_membership.tf @@ -0,0 +1 @@ +resource "aws_iot_thing_group_membership" "pike" {} diff --git a/terraform/aws/backup/aws_iot_thing_principal_attachment.tf b/terraform/aws/backup/aws_iot_thing_principal_attachment.tf new file mode 100644 index 00000000..e3caa502 --- /dev/null +++ b/terraform/aws/backup/aws_iot_thing_principal_attachment.tf @@ -0,0 +1 @@ +resource "aws_iot_thing_principal_attachment" "pike" {} diff --git a/terraform/aws/backup/aws_kendra_experience.tf b/terraform/aws/backup/aws_kendra_experience.tf new file mode 100644 index 00000000..7b0f94c8 --- /dev/null +++ b/terraform/aws/backup/aws_kendra_experience.tf @@ -0,0 +1 @@ +resource "aws_kendra_experience" "pike" {} diff --git a/terraform/aws/backup/aws_kendra_query_suggestions_block_list.tf b/terraform/aws/backup/aws_kendra_query_suggestions_block_list.tf new file mode 100644 index 00000000..40bb3649 --- /dev/null +++ b/terraform/aws/backup/aws_kendra_query_suggestions_block_list.tf @@ -0,0 +1 @@ +resource "aws_kendra_query_suggestions_block_list" "pike" {} diff --git a/terraform/aws/backup/aws_kendra_thesaurus.tf b/terraform/aws/backup/aws_kendra_thesaurus.tf new file mode 100644 index 00000000..f765740f --- /dev/null +++ b/terraform/aws/backup/aws_kendra_thesaurus.tf @@ -0,0 +1 @@ +resource "aws_kendra_thesaurus" "pike" {} diff --git a/terraform/aws/backup/aws_kinesis_analytics_application.tf b/terraform/aws/backup/aws_kinesis_analytics_application.tf new file mode 100644 index 00000000..901411d1 --- /dev/null +++ b/terraform/aws/backup/aws_kinesis_analytics_application.tf @@ -0,0 +1 @@ +resource "aws_kinesis_analytics_application" "pike" {} diff --git a/terraform/aws/backup/aws_kinesis_resource_policy.tf b/terraform/aws/backup/aws_kinesis_resource_policy.tf index 7c918428..9035d88c 100644 --- a/terraform/aws/backup/aws_kinesis_resource_policy.tf +++ b/terraform/aws/backup/aws_kinesis_resource_policy.tf @@ -1 +1 @@ -resource "aws_kinesis_resource_policy" "pike" {} \ No newline at end of file +resource "aws_kinesis_resource_policy" "pike" {} diff --git a/terraform/aws/backup/aws_kinesisanalyticsv2_application_snapshot.tf b/terraform/aws/backup/aws_kinesisanalyticsv2_application_snapshot.tf new file mode 100644 index 00000000..767d7a7c --- /dev/null +++ b/terraform/aws/backup/aws_kinesisanalyticsv2_application_snapshot.tf @@ -0,0 +1 @@ +resource "aws_kinesisanalyticsv2_application_snapshot" "pike" {} diff --git a/terraform/aws/backup/aws_lakeformation_data_lake_settings.tf b/terraform/aws/backup/aws_lakeformation_data_lake_settings.tf new file mode 100644 index 00000000..3c9efd3f --- /dev/null +++ b/terraform/aws/backup/aws_lakeformation_data_lake_settings.tf @@ -0,0 +1,3 @@ +resource "aws_lakeformation_data_lake_settings" "example" { + admins = ["arn:aws:iam::680235478471:user/basic"] +} diff --git a/terraform/aws/backup/aws_lakeformation_lf_tag.tf b/terraform/aws/backup/aws_lakeformation_lf_tag.tf new file mode 100644 index 00000000..375f6304 --- /dev/null +++ b/terraform/aws/backup/aws_lakeformation_lf_tag.tf @@ -0,0 +1 @@ +resource "aws_lakeformation_lf_tag" "pike" {} diff --git a/terraform/aws/backup/aws_lakeformation_opt_in.tf b/terraform/aws/backup/aws_lakeformation_opt_in.tf new file mode 100644 index 00000000..b5ac7ca0 --- /dev/null +++ b/terraform/aws/backup/aws_lakeformation_opt_in.tf @@ -0,0 +1 @@ +resource "aws_lakeformation_opt_in" "pike" {} diff --git a/terraform/aws/backup/aws_lakeformation_permissions.tf b/terraform/aws/backup/aws_lakeformation_permissions.tf new file mode 100644 index 00000000..d7f77046 --- /dev/null +++ b/terraform/aws/backup/aws_lakeformation_permissions.tf @@ -0,0 +1,19 @@ +data "aws_caller_identity" "current" {} + +data "aws_iam_session_context" "current" { + arn = data.aws_caller_identity.current.arn +} + +resource "aws_lakeformation_data_lake_settings" "test" { + admins = [data.aws_iam_session_context.current.issuer_arn] +} + + +resource "aws_lakeformation_permissions" "example" { + principal = aws_iam_role.workflow_role.arn + permissions = ["DATA_LOCATION_ACCESS"] + + data_location { + arn = aws_lakeformation_resource.example.arn + } +} diff --git a/terraform/aws/backup/aws_lakeformation_resource.tf b/terraform/aws/backup/aws_lakeformation_resource.tf new file mode 100644 index 00000000..c810bd4b --- /dev/null +++ b/terraform/aws/backup/aws_lakeformation_resource.tf @@ -0,0 +1,7 @@ +data "aws_s3_bucket" "example" { + bucket = "pike-680235478471" +} + +resource "aws_lakeformation_resource" "example" { + arn = data.aws_s3_bucket.example.arn +} diff --git a/terraform/aws/backup/aws_lakeformation_resource_lf_tags.tf b/terraform/aws/backup/aws_lakeformation_resource_lf_tags.tf new file mode 100644 index 00000000..b42d0b83 --- /dev/null +++ b/terraform/aws/backup/aws_lakeformation_resource_lf_tags.tf @@ -0,0 +1 @@ +resource "aws_lakeformation_resource_lf_tags" "pike" {} diff --git a/terraform/aws/backup/aws_lambda_function_recursion_config.tf b/terraform/aws/backup/aws_lambda_function_recursion_config.tf new file mode 100644 index 00000000..856621d4 --- /dev/null +++ b/terraform/aws/backup/aws_lambda_function_recursion_config.tf @@ -0,0 +1 @@ +resource "aws_lambda_function_recursion_config" "pike" {} diff --git a/terraform/aws/backup/aws_lambda_runtime_management_config.tf b/terraform/aws/backup/aws_lambda_runtime_management_config.tf new file mode 100644 index 00000000..4f1dad87 --- /dev/null +++ b/terraform/aws/backup/aws_lambda_runtime_management_config.tf @@ -0,0 +1 @@ +resource "aws_lambda_runtime_management_config" "pike" {} diff --git a/terraform/aws/backup/aws_lb_listener_certificate.tf b/terraform/aws/backup/aws_lb_listener_certificate.tf new file mode 100644 index 00000000..b75c4432 --- /dev/null +++ b/terraform/aws/backup/aws_lb_listener_certificate.tf @@ -0,0 +1 @@ +resource "aws_lb_listener_certificate" "pike" {} diff --git a/terraform/aws/backup/aws_lb_ssl_negotiation_policy.tf b/terraform/aws/backup/aws_lb_ssl_negotiation_policy.tf new file mode 100644 index 00000000..b6282ccf --- /dev/null +++ b/terraform/aws/backup/aws_lb_ssl_negotiation_policy.tf @@ -0,0 +1 @@ +resource "aws_lb_ssl_negotiation_policy" "pike" {} diff --git a/terraform/aws/backup/aws_lexv2models_bot.tf b/terraform/aws/backup/aws_lexv2models_bot.tf new file mode 100644 index 00000000..e0f6768a --- /dev/null +++ b/terraform/aws/backup/aws_lexv2models_bot.tf @@ -0,0 +1 @@ +resource "aws_lexv2models_bot" "pike" {} diff --git a/terraform/aws/backup/aws_lexv2models_bot_locale.tf b/terraform/aws/backup/aws_lexv2models_bot_locale.tf new file mode 100644 index 00000000..0834207c --- /dev/null +++ b/terraform/aws/backup/aws_lexv2models_bot_locale.tf @@ -0,0 +1 @@ +resource "aws_lexv2models_bot_locale" "pike" {} diff --git a/terraform/aws/backup/aws_lexv2models_bot_version.tf b/terraform/aws/backup/aws_lexv2models_bot_version.tf new file mode 100644 index 00000000..e4da044f --- /dev/null +++ b/terraform/aws/backup/aws_lexv2models_bot_version.tf @@ -0,0 +1 @@ +resource "aws_lexv2models_bot_version" "pike" {} diff --git a/terraform/aws/backup/aws_lexv2models_intent.tf b/terraform/aws/backup/aws_lexv2models_intent.tf new file mode 100644 index 00000000..40f9f5e6 --- /dev/null +++ b/terraform/aws/backup/aws_lexv2models_intent.tf @@ -0,0 +1 @@ +resource "aws_lexv2models_intent" "pike" {} diff --git a/terraform/aws/backup/aws_lexv2models_slot.tf b/terraform/aws/backup/aws_lexv2models_slot.tf new file mode 100644 index 00000000..c9aa12a7 --- /dev/null +++ b/terraform/aws/backup/aws_lexv2models_slot.tf @@ -0,0 +1 @@ +resource "aws_lexv2models_slot" "pike" {} diff --git a/terraform/aws/backup/aws_lexv2models_slot_type.tf b/terraform/aws/backup/aws_lexv2models_slot_type.tf new file mode 100644 index 00000000..1fdbd0e1 --- /dev/null +++ b/terraform/aws/backup/aws_lexv2models_slot_type.tf @@ -0,0 +1 @@ +resource "aws_lexv2models_slot_type" "pike" {} diff --git a/terraform/aws/backup/aws_licensemanager_association.tf b/terraform/aws/backup/aws_licensemanager_association.tf new file mode 100644 index 00000000..0ff6f257 --- /dev/null +++ b/terraform/aws/backup/aws_licensemanager_association.tf @@ -0,0 +1 @@ +resource "aws_licensemanager_association" "pike" {} diff --git a/terraform/aws/backup/aws_licensemanager_grant_accepter.tf b/terraform/aws/backup/aws_licensemanager_grant_accepter.tf new file mode 100644 index 00000000..8ad8407d --- /dev/null +++ b/terraform/aws/backup/aws_licensemanager_grant_accepter.tf @@ -0,0 +1 @@ +resource "aws_licensemanager_grant_accepter" "pike" {} diff --git a/terraform/aws/backup/aws_lightsail_bucket_access_key.tf b/terraform/aws/backup/aws_lightsail_bucket_access_key.tf new file mode 100644 index 00000000..61a64374 --- /dev/null +++ b/terraform/aws/backup/aws_lightsail_bucket_access_key.tf @@ -0,0 +1,8 @@ +resource "aws_lightsail_bucket_access_key" "pike" { + bucket_name = aws_lightsail_bucket.pike.name +} + +resource "aws_lightsail_bucket" "pike" { + bundle_id = "small_1_0" + name = "jgw-lightsail-bucket2" +} diff --git a/terraform/aws/backup/aws_lightsail_bucket_access_key_access_key.tf b/terraform/aws/backup/aws_lightsail_bucket_access_key_access_key.tf new file mode 100644 index 00000000..48a728fa --- /dev/null +++ b/terraform/aws/backup/aws_lightsail_bucket_access_key_access_key.tf @@ -0,0 +1 @@ +resource "aws_lightsail_bucket_access_key_access_key" "pike" {} diff --git a/terraform/aws/backup/aws_lightsail_bucket_resource_access.tf b/terraform/aws/backup/aws_lightsail_bucket_resource_access.tf new file mode 100644 index 00000000..628c3861 --- /dev/null +++ b/terraform/aws/backup/aws_lightsail_bucket_resource_access.tf @@ -0,0 +1 @@ +resource "aws_lightsail_bucket_resource_access" "pike" {} diff --git a/terraform/aws/backup/aws_lightsail_container_service.tf b/terraform/aws/backup/aws_lightsail_container_service.tf new file mode 100644 index 00000000..0bab1e18 --- /dev/null +++ b/terraform/aws/backup/aws_lightsail_container_service.tf @@ -0,0 +1 @@ +resource "aws_lightsail_container_service" "pike" {} diff --git a/terraform/aws/backup/aws_lightsail_container_service_deployment_version.tf b/terraform/aws/backup/aws_lightsail_container_service_deployment_version.tf new file mode 100644 index 00000000..96ee3709 --- /dev/null +++ b/terraform/aws/backup/aws_lightsail_container_service_deployment_version.tf @@ -0,0 +1 @@ +resource "aws_lightsail_container_service_deployment_version" "pike" {} diff --git a/terraform/aws/backup/aws_lightsail_disk_attachment.tf b/terraform/aws/backup/aws_lightsail_disk_attachment.tf new file mode 100644 index 00000000..509f6a2e --- /dev/null +++ b/terraform/aws/backup/aws_lightsail_disk_attachment.tf @@ -0,0 +1 @@ +resource "aws_lightsail_disk_attachment" "pike" {} diff --git a/terraform/aws/backup/aws_lightsail_domain.tf b/terraform/aws/backup/aws_lightsail_domain.tf new file mode 100644 index 00000000..86ee27e9 --- /dev/null +++ b/terraform/aws/backup/aws_lightsail_domain.tf @@ -0,0 +1 @@ +resource "aws_lightsail_domain" "pike" {} diff --git a/terraform/aws/backup/aws_lightsail_domain_entry.tf b/terraform/aws/backup/aws_lightsail_domain_entry.tf new file mode 100644 index 00000000..5d3a9391 --- /dev/null +++ b/terraform/aws/backup/aws_lightsail_domain_entry.tf @@ -0,0 +1 @@ +resource "aws_lightsail_domain_entry" "pike" {} diff --git a/terraform/aws/backup/aws_lightsail_lb_attachment.tf b/terraform/aws/backup/aws_lightsail_lb_attachment.tf new file mode 100644 index 00000000..6f5fca24 --- /dev/null +++ b/terraform/aws/backup/aws_lightsail_lb_attachment.tf @@ -0,0 +1 @@ +resource "aws_lightsail_lb_attachment" "pike" {} diff --git a/terraform/aws/backup/aws_lightsail_lb_certificate.tf b/terraform/aws/backup/aws_lightsail_lb_certificate.tf new file mode 100644 index 00000000..ccddf0be --- /dev/null +++ b/terraform/aws/backup/aws_lightsail_lb_certificate.tf @@ -0,0 +1 @@ +resource "aws_lightsail_lb_certificate" "pike" {} diff --git a/terraform/aws/backup/aws_lightsail_lb_certificate_attachment.tf b/terraform/aws/backup/aws_lightsail_lb_certificate_attachment.tf new file mode 100644 index 00000000..d8ae6ae7 --- /dev/null +++ b/terraform/aws/backup/aws_lightsail_lb_certificate_attachment.tf @@ -0,0 +1 @@ +resource "aws_lightsail_lb_certificate_attachment" "pike" {} diff --git a/terraform/aws/backup/aws_lightsail_lb_https_redirection_policy.tf b/terraform/aws/backup/aws_lightsail_lb_https_redirection_policy.tf new file mode 100644 index 00000000..8919e75f --- /dev/null +++ b/terraform/aws/backup/aws_lightsail_lb_https_redirection_policy.tf @@ -0,0 +1 @@ +resource "aws_lightsail_lb_https_redirection_policy" "pike" {} diff --git a/terraform/aws/backup/aws_lightsail_lb_stickiness_policy.tf b/terraform/aws/backup/aws_lightsail_lb_stickiness_policy.tf new file mode 100644 index 00000000..381b1eb0 --- /dev/null +++ b/terraform/aws/backup/aws_lightsail_lb_stickiness_policy.tf @@ -0,0 +1 @@ +resource "aws_lightsail_lb_stickiness_policy" "pike" {} diff --git a/terraform/aws/backup/aws_macie2_account.tf b/terraform/aws/backup/aws_macie2_account.tf new file mode 100644 index 00000000..473883a6 --- /dev/null +++ b/terraform/aws/backup/aws_macie2_account.tf @@ -0,0 +1,4 @@ +resource "aws_macie2_account" "pike" { + finding_publishing_frequency = "FIFTEEN_MINUTES" + status = "ENABLED" +} diff --git a/terraform/aws/backup/aws_macie2_classification_export_configuration.tf b/terraform/aws/backup/aws_macie2_classification_export_configuration.tf new file mode 100644 index 00000000..8c012987 --- /dev/null +++ b/terraform/aws/backup/aws_macie2_classification_export_configuration.tf @@ -0,0 +1 @@ +resource "aws_macie2_classification_export_configuration" "pike" {} diff --git a/terraform/aws/backup/aws_macie2_classification_job.tf b/terraform/aws/backup/aws_macie2_classification_job.tf new file mode 100644 index 00000000..55c47ebb --- /dev/null +++ b/terraform/aws/backup/aws_macie2_classification_job.tf @@ -0,0 +1 @@ +resource "aws_macie2_classification_job" "pike" {} diff --git a/terraform/aws/backup/aws_macie2_invitation_accepter.tf b/terraform/aws/backup/aws_macie2_invitation_accepter.tf new file mode 100644 index 00000000..7eb30da6 --- /dev/null +++ b/terraform/aws/backup/aws_macie2_invitation_accepter.tf @@ -0,0 +1 @@ +resource "aws_macie2_invitation_accepter" "pike" {} diff --git a/terraform/aws/backup/aws_macie2_member.tf b/terraform/aws/backup/aws_macie2_member.tf new file mode 100644 index 00000000..3cd987b9 --- /dev/null +++ b/terraform/aws/backup/aws_macie2_member.tf @@ -0,0 +1 @@ +resource "aws_macie2_member" "pike" {} diff --git a/terraform/aws/backup/aws_macie2_organization_admin_account.tf b/terraform/aws/backup/aws_macie2_organization_admin_account.tf new file mode 100644 index 00000000..5c70d6e4 --- /dev/null +++ b/terraform/aws/backup/aws_macie2_organization_admin_account.tf @@ -0,0 +1 @@ +resource "aws_macie2_organization_admin_account" "pike" {} diff --git a/terraform/aws/backup/aws_macie2_organization_configuration.tf b/terraform/aws/backup/aws_macie2_organization_configuration.tf new file mode 100644 index 00000000..f031c9db --- /dev/null +++ b/terraform/aws/backup/aws_macie2_organization_configuration.tf @@ -0,0 +1 @@ +resource "aws_macie2_organization_configuration" "pike" {} diff --git a/terraform/aws/backup/aws_main_route_table_association.tf b/terraform/aws/backup/aws_main_route_table_association.tf new file mode 100644 index 00000000..a1611844 --- /dev/null +++ b/terraform/aws/backup/aws_main_route_table_association.tf @@ -0,0 +1 @@ +resource "aws_main_route_table_association" "pike" {} diff --git a/terraform/aws/backup/aws_media_packagev2_channel_group.tf b/terraform/aws/backup/aws_media_packagev2_channel_group.tf new file mode 100644 index 00000000..9ecb5b59 --- /dev/null +++ b/terraform/aws/backup/aws_media_packagev2_channel_group.tf @@ -0,0 +1 @@ +resource "aws_media_packagev2_channel_group" "pike" {} diff --git a/terraform/aws/backup/aws_media_store_container.tf b/terraform/aws/backup/aws_media_store_container.tf new file mode 100644 index 00000000..074ca570 --- /dev/null +++ b/terraform/aws/backup/aws_media_store_container.tf @@ -0,0 +1 @@ +resource "aws_media_store_container" "pike" {} diff --git a/terraform/aws/backup/aws_media_store_container_policy.tf b/terraform/aws/backup/aws_media_store_container_policy.tf new file mode 100644 index 00000000..c634131e --- /dev/null +++ b/terraform/aws/backup/aws_media_store_container_policy.tf @@ -0,0 +1 @@ +resource "aws_media_store_container_policy" "pike" {} diff --git a/terraform/aws/backup/aws_medialive_channel.tf b/terraform/aws/backup/aws_medialive_channel.tf new file mode 100644 index 00000000..02a3b2ca --- /dev/null +++ b/terraform/aws/backup/aws_medialive_channel.tf @@ -0,0 +1 @@ +resource "aws_medialive_channel" "pike" {} diff --git a/terraform/aws/backup/aws_memorydb_multi_region_cluster.tf b/terraform/aws/backup/aws_memorydb_multi_region_cluster.tf new file mode 100644 index 00000000..36ea125b --- /dev/null +++ b/terraform/aws/backup/aws_memorydb_multi_region_cluster.tf @@ -0,0 +1 @@ +resource "aws_memorydb_multi_region_cluster" "pike" {} diff --git a/terraform/aws/backup/aws_msk_single_scram_secret_association.tf b/terraform/aws/backup/aws_msk_single_scram_secret_association.tf new file mode 100644 index 00000000..22e2ee77 --- /dev/null +++ b/terraform/aws/backup/aws_msk_single_scram_secret_association.tf @@ -0,0 +1 @@ +resource "aws_msk_single_scram_secret_association" "pike" {} diff --git a/terraform/aws/backup/aws_mskconnect_connector.tf b/terraform/aws/backup/aws_mskconnect_connector.tf new file mode 100644 index 00000000..23575f2f --- /dev/null +++ b/terraform/aws/backup/aws_mskconnect_connector.tf @@ -0,0 +1 @@ +resource "aws_mskconnect_connector" "pike" {} diff --git a/terraform/aws/backup/aws_mskconnect_custom_plugin.tf b/terraform/aws/backup/aws_mskconnect_custom_plugin.tf new file mode 100644 index 00000000..5c59c50e --- /dev/null +++ b/terraform/aws/backup/aws_mskconnect_custom_plugin.tf @@ -0,0 +1 @@ +resource "aws_mskconnect_custom_plugin" "pike" {} diff --git a/terraform/aws/backup/aws_mskconnect_worker_configuration.tf b/terraform/aws/backup/aws_mskconnect_worker_configuration.tf new file mode 100644 index 00000000..e448c2c0 --- /dev/null +++ b/terraform/aws/backup/aws_mskconnect_worker_configuration.tf @@ -0,0 +1 @@ +resource "aws_mskconnect_worker_configuration" "pike" {} diff --git a/terraform/aws/backup/aws_neptune_global_cluster.tf b/terraform/aws/backup/aws_neptune_global_cluster.tf new file mode 100644 index 00000000..30ec4579 --- /dev/null +++ b/terraform/aws/backup/aws_neptune_global_cluster.tf @@ -0,0 +1,5 @@ +resource "aws_neptune_global_cluster" "pike" { + global_cluster_identifier = "global-test" + engine = "neptune" + engine_version = "1.2.0.0" +} diff --git a/terraform/aws/backup/aws_neptunegraph_graph.tf b/terraform/aws/backup/aws_neptunegraph_graph.tf new file mode 100644 index 00000000..ecd28359 --- /dev/null +++ b/terraform/aws/backup/aws_neptunegraph_graph.tf @@ -0,0 +1 @@ +resource "aws_neptunegraph_graph" "pike" {} diff --git a/terraform/aws/backup/aws_network_interface_permission.tf b/terraform/aws/backup/aws_network_interface_permission.tf new file mode 100644 index 00000000..6d3e3cba --- /dev/null +++ b/terraform/aws/backup/aws_network_interface_permission.tf @@ -0,0 +1,10 @@ +resource "aws_network_interface_permission" "pike" { + network_interface_id = aws_network_interface.pike.id + aws_account_id = "123456789012" + permission = "INSTANCE-ATTACH" +} + + +resource "aws_network_interface" "pike" { + subnet_id = "subnet-09ff91b5b0adb1fd4" +} diff --git a/terraform/aws/backup/aws_network_interface_sg_attachment.tf b/terraform/aws/backup/aws_network_interface_sg_attachment.tf new file mode 100644 index 00000000..75c3f686 --- /dev/null +++ b/terraform/aws/backup/aws_network_interface_sg_attachment.tf @@ -0,0 +1,21 @@ + + +resource "aws_instance" "instance" { + instance_type = "t2.micro" + ami = "ami-091f18e98bc129c4e" + + tags = { + type = "terraform-test-instance" + } +} + +resource "aws_security_group" "sg" { + tags = { + type = "terraform-test-security-group" + } +} + +resource "aws_network_interface_sg_attachment" "sg_attachment" { + security_group_id = aws_security_group.sg.id + network_interface_id = aws_instance.instance.primary_network_interface_id +} diff --git a/terraform/aws/backup/aws_networkmanager_attachment_accepter.tf b/terraform/aws/backup/aws_networkmanager_attachment_accepter.tf new file mode 100644 index 00000000..560b71b5 --- /dev/null +++ b/terraform/aws/backup/aws_networkmanager_attachment_accepter.tf @@ -0,0 +1 @@ +resource "aws_networkmanager_attachment_accepter" "pike" {} diff --git a/terraform/aws/backup/aws_networkmanager_connection.tf b/terraform/aws/backup/aws_networkmanager_connection.tf new file mode 100644 index 00000000..be5e0d71 --- /dev/null +++ b/terraform/aws/backup/aws_networkmanager_connection.tf @@ -0,0 +1 @@ +resource "aws_networkmanager_connection" "pike" {} diff --git a/terraform/aws/backup/aws_networkmanager_core_network_policy_attachment.tf b/terraform/aws/backup/aws_networkmanager_core_network_policy_attachment.tf new file mode 100644 index 00000000..4b7e6fa6 --- /dev/null +++ b/terraform/aws/backup/aws_networkmanager_core_network_policy_attachment.tf @@ -0,0 +1 @@ +resource "aws_networkmanager_core_network_policy_attachment" "pike" {} diff --git a/terraform/aws/backup/aws_networkmanager_dx_gateway_attachment.tf b/terraform/aws/backup/aws_networkmanager_dx_gateway_attachment.tf new file mode 100644 index 00000000..44505d31 --- /dev/null +++ b/terraform/aws/backup/aws_networkmanager_dx_gateway_attachment.tf @@ -0,0 +1,5 @@ +resource "aws_networkmanager_dx_gateway_attachment" "pike" { + core_network_id = aws_networkmanager_core_network_policy_attachment.test.core_network_id + direct_connect_gateway_arn = "arn:aws:directconnect::${data.aws_caller_identity.current.account_id}:dx-gateway/${aws_dx_gateway.test.id}" + edge_locations = [data.aws_region.current.name] +} diff --git a/terraform/aws/backup/aws_networkmanager_transit_gateway_connect_peer_association.tf b/terraform/aws/backup/aws_networkmanager_transit_gateway_connect_peer_association.tf new file mode 100644 index 00000000..3c73189a --- /dev/null +++ b/terraform/aws/backup/aws_networkmanager_transit_gateway_connect_peer_association.tf @@ -0,0 +1 @@ +resource "aws_networkmanager_transit_gateway_connect_peer_association" "pike" {} diff --git a/terraform/aws/backup/aws_networkmonitor_monitor.tf b/terraform/aws/backup/aws_networkmonitor_monitor.tf new file mode 100644 index 00000000..36a7d472 --- /dev/null +++ b/terraform/aws/backup/aws_networkmonitor_monitor.tf @@ -0,0 +1 @@ +resource "aws_networkmonitor_monitor" "pike" {} diff --git a/terraform/aws/backup/aws_networkmonitor_probe.tf b/terraform/aws/backup/aws_networkmonitor_probe.tf new file mode 100644 index 00000000..8224664f --- /dev/null +++ b/terraform/aws/backup/aws_networkmonitor_probe.tf @@ -0,0 +1 @@ +resource "aws_networkmonitor_probe" "pike" {} diff --git a/terraform/aws/backup/aws_notifications_channel_association.tf b/terraform/aws/backup/aws_notifications_channel_association.tf new file mode 100644 index 00000000..54380e63 --- /dev/null +++ b/terraform/aws/backup/aws_notifications_channel_association.tf @@ -0,0 +1,5 @@ +resource "aws_notifications_channel_association" "pike" { + arn = aws_notificationscontacts_email_contact.pike.arn + notification_configuration_arn = aws_notifications_notification_configuration.pike.arn + +} diff --git a/terraform/aws/backup/aws_notifications_event_rule.tf b/terraform/aws/backup/aws_notifications_event_rule.tf new file mode 100644 index 00000000..3ea3a239 --- /dev/null +++ b/terraform/aws/backup/aws_notifications_event_rule.tf @@ -0,0 +1,13 @@ +resource "aws_notifications_event_rule" "pike" { + event_pattern = jsonencode({ + detail = { + state = { + value = ["ALARM"] + } + } + }) + event_type = "CloudWatch Alarm State Change" + notification_configuration_arn = aws_notifications_notification_configuration.pike.arn + regions = ["us-east-1", "us-west-2"] + source = "aws.cloudwatch" +} diff --git a/terraform/aws/backup/aws_notifications_notification_configuration.tf b/terraform/aws/backup/aws_notifications_notification_configuration.tf new file mode 100644 index 00000000..d429eb06 --- /dev/null +++ b/terraform/aws/backup/aws_notifications_notification_configuration.tf @@ -0,0 +1,10 @@ +resource "aws_notifications_notification_configuration" "pike" { + name = "pike3" + description = "Example notification configuration modified" + + tags = { + pike = "permissions" + Environment = "production" + Project = "example" + } +} diff --git a/terraform/aws/backup/aws_notifications_notification_hub.tf b/terraform/aws/backup/aws_notifications_notification_hub.tf new file mode 100644 index 00000000..535c3afc --- /dev/null +++ b/terraform/aws/backup/aws_notifications_notification_hub.tf @@ -0,0 +1,3 @@ +resource "aws_notifications_notification_hub" "pike" { + notification_hub_region = "us-west-2" +} diff --git a/terraform/aws/backup/aws_notificationscontacts_email_contact.tf b/terraform/aws/backup/aws_notificationscontacts_email_contact.tf new file mode 100644 index 00000000..5167adcd --- /dev/null +++ b/terraform/aws/backup/aws_notificationscontacts_email_contact.tf @@ -0,0 +1,9 @@ +resource "aws_notificationscontacts_email_contact" "pike" { + name = "pike-contact2" + email_address = "pike3@pike.com" + + tags = { + pike = "permissions" + Environment = "Production" + } +} diff --git a/terraform/aws/backup/aws_opensearch_authorize_vpc_endpoint_access.tf b/terraform/aws/backup/aws_opensearch_authorize_vpc_endpoint_access.tf new file mode 100644 index 00000000..c9554bb2 --- /dev/null +++ b/terraform/aws/backup/aws_opensearch_authorize_vpc_endpoint_access.tf @@ -0,0 +1 @@ +resource "aws_opensearch_authorize_vpc_endpoint_access" "pike" {} diff --git a/terraform/aws/backup/aws_opensearch_domain_saml_options.tf b/terraform/aws/backup/aws_opensearch_domain_saml_options.tf new file mode 100644 index 00000000..fb1dac52 --- /dev/null +++ b/terraform/aws/backup/aws_opensearch_domain_saml_options.tf @@ -0,0 +1 @@ +resource "aws_opensearch_domain_saml_options" "pike" {} diff --git a/terraform/aws/backup/aws_opensearch_inbound_connection_accepter.tf b/terraform/aws/backup/aws_opensearch_inbound_connection_accepter.tf new file mode 100644 index 00000000..7015ef87 --- /dev/null +++ b/terraform/aws/backup/aws_opensearch_inbound_connection_accepter.tf @@ -0,0 +1 @@ +resource "aws_opensearch_inbound_connection_accepter" "pike" {} diff --git a/terraform/aws/backup/aws_opensearch_outbound_connection.tf b/terraform/aws/backup/aws_opensearch_outbound_connection.tf new file mode 100644 index 00000000..139b95b1 --- /dev/null +++ b/terraform/aws/backup/aws_opensearch_outbound_connection.tf @@ -0,0 +1 @@ +resource "aws_opensearch_outbound_connection" "pike" {} diff --git a/terraform/aws/backup/aws_opensearch_package.tf b/terraform/aws/backup/aws_opensearch_package.tf new file mode 100644 index 00000000..4724a291 --- /dev/null +++ b/terraform/aws/backup/aws_opensearch_package.tf @@ -0,0 +1 @@ +resource "aws_opensearch_package" "pike" {} diff --git a/terraform/aws/backup/aws_opensearch_package_association.tf b/terraform/aws/backup/aws_opensearch_package_association.tf new file mode 100644 index 00000000..a66f236d --- /dev/null +++ b/terraform/aws/backup/aws_opensearch_package_association.tf @@ -0,0 +1 @@ +resource "aws_opensearch_package_association" "pike" {} diff --git a/terraform/aws/backup/aws_opensearch_vpc_endpoint.tf b/terraform/aws/backup/aws_opensearch_vpc_endpoint.tf new file mode 100644 index 00000000..742d5b28 --- /dev/null +++ b/terraform/aws/backup/aws_opensearch_vpc_endpoint.tf @@ -0,0 +1 @@ +resource "aws_opensearch_vpc_endpoint" "pike" {} diff --git a/terraform/aws/backup/aws_opsworks_application.tf b/terraform/aws/backup/aws_opsworks_application.tf new file mode 100644 index 00000000..a5c4a61e --- /dev/null +++ b/terraform/aws/backup/aws_opsworks_application.tf @@ -0,0 +1 @@ +resource "aws_opsworks_application" "pike" {} diff --git a/terraform/aws/backup/aws_opsworks_custom_layer.tf b/terraform/aws/backup/aws_opsworks_custom_layer.tf new file mode 100644 index 00000000..ecd9eafb --- /dev/null +++ b/terraform/aws/backup/aws_opsworks_custom_layer.tf @@ -0,0 +1 @@ +resource "aws_opsworks_custom_layer" "pike" {} diff --git a/terraform/aws/backup/aws_opsworks_ecs_cluster_layer.tf b/terraform/aws/backup/aws_opsworks_ecs_cluster_layer.tf new file mode 100644 index 00000000..60e57aec --- /dev/null +++ b/terraform/aws/backup/aws_opsworks_ecs_cluster_layer.tf @@ -0,0 +1 @@ +resource "aws_opsworks_ecs_cluster_layer" "pike" {} diff --git a/terraform/aws/backup/aws_opsworks_ganglia_layer.tf b/terraform/aws/backup/aws_opsworks_ganglia_layer.tf new file mode 100644 index 00000000..3e2b77eb --- /dev/null +++ b/terraform/aws/backup/aws_opsworks_ganglia_layer.tf @@ -0,0 +1 @@ +resource "aws_opsworks_ganglia_layer" "pike" {} diff --git a/terraform/aws/backup/aws_opsworks_haproxy_layer.tf b/terraform/aws/backup/aws_opsworks_haproxy_layer.tf new file mode 100644 index 00000000..d5258548 --- /dev/null +++ b/terraform/aws/backup/aws_opsworks_haproxy_layer.tf @@ -0,0 +1 @@ +resource "aws_opsworks_haproxy_layer" "pike" {} diff --git a/terraform/aws/backup/aws_opsworks_instance.tf b/terraform/aws/backup/aws_opsworks_instance.tf new file mode 100644 index 00000000..00cf0135 --- /dev/null +++ b/terraform/aws/backup/aws_opsworks_instance.tf @@ -0,0 +1 @@ +resource "aws_opsworks_instance" "pike" {} diff --git a/terraform/aws/backup/aws_opsworks_java_app_layer.tf b/terraform/aws/backup/aws_opsworks_java_app_layer.tf new file mode 100644 index 00000000..f6e377df --- /dev/null +++ b/terraform/aws/backup/aws_opsworks_java_app_layer.tf @@ -0,0 +1 @@ +resource "aws_opsworks_java_app_layer" "pike" {} diff --git a/terraform/aws/backup/aws_opsworks_memcached_layer.tf b/terraform/aws/backup/aws_opsworks_memcached_layer.tf new file mode 100644 index 00000000..b5317503 --- /dev/null +++ b/terraform/aws/backup/aws_opsworks_memcached_layer.tf @@ -0,0 +1 @@ +resource "aws_opsworks_memcached_layer" "pike" {} diff --git a/terraform/aws/backup/aws_opsworks_mysql_layer.tf b/terraform/aws/backup/aws_opsworks_mysql_layer.tf new file mode 100644 index 00000000..d48c56d2 --- /dev/null +++ b/terraform/aws/backup/aws_opsworks_mysql_layer.tf @@ -0,0 +1 @@ +resource "aws_opsworks_mysql_layer" "pike" {} diff --git a/terraform/aws/backup/aws_opsworks_nodejs_app_layer.tf b/terraform/aws/backup/aws_opsworks_nodejs_app_layer.tf new file mode 100644 index 00000000..1801600c --- /dev/null +++ b/terraform/aws/backup/aws_opsworks_nodejs_app_layer.tf @@ -0,0 +1 @@ +resource "aws_opsworks_nodejs_app_layer" "pike" {} diff --git a/terraform/aws/backup/aws_opsworks_permission.tf b/terraform/aws/backup/aws_opsworks_permission.tf new file mode 100644 index 00000000..0c475288 --- /dev/null +++ b/terraform/aws/backup/aws_opsworks_permission.tf @@ -0,0 +1 @@ +resource "aws_opsworks_permission" "pike" {} diff --git a/terraform/aws/backup/aws_opsworks_php_app_layer.tf b/terraform/aws/backup/aws_opsworks_php_app_layer.tf new file mode 100644 index 00000000..3ddf89f9 --- /dev/null +++ b/terraform/aws/backup/aws_opsworks_php_app_layer.tf @@ -0,0 +1 @@ +resource "aws_opsworks_php_app_layer" "pike" {} diff --git a/terraform/aws/backup/aws_opsworks_rails_app_layer.tf b/terraform/aws/backup/aws_opsworks_rails_app_layer.tf new file mode 100644 index 00000000..419172c4 --- /dev/null +++ b/terraform/aws/backup/aws_opsworks_rails_app_layer.tf @@ -0,0 +1 @@ +resource "aws_opsworks_rails_app_layer" "pike" {} diff --git a/terraform/aws/backup/aws_opsworks_rds_db_instance.tf b/terraform/aws/backup/aws_opsworks_rds_db_instance.tf new file mode 100644 index 00000000..03f9cecd --- /dev/null +++ b/terraform/aws/backup/aws_opsworks_rds_db_instance.tf @@ -0,0 +1 @@ +resource "aws_opsworks_rds_db_instance" "pike" {} diff --git a/terraform/aws/backup/aws_opsworks_stack.tf b/terraform/aws/backup/aws_opsworks_stack.tf new file mode 100644 index 00000000..93d52742 --- /dev/null +++ b/terraform/aws/backup/aws_opsworks_stack.tf @@ -0,0 +1 @@ +resource "aws_opsworks_stack" "pike" {} diff --git a/terraform/aws/backup/aws_opsworks_static_web_layer.tf b/terraform/aws/backup/aws_opsworks_static_web_layer.tf new file mode 100644 index 00000000..e317511c --- /dev/null +++ b/terraform/aws/backup/aws_opsworks_static_web_layer.tf @@ -0,0 +1 @@ +resource "aws_opsworks_static_web_layer" "pike" {} diff --git a/terraform/aws/backup/aws_opsworks_user_profile.tf b/terraform/aws/backup/aws_opsworks_user_profile.tf new file mode 100644 index 00000000..f3577bcc --- /dev/null +++ b/terraform/aws/backup/aws_opsworks_user_profile.tf @@ -0,0 +1 @@ +resource "aws_opsworks_user_profile" "pike" {} diff --git a/terraform/aws/backup/aws_organizations_delegated_administrator.tf b/terraform/aws/backup/aws_organizations_delegated_administrator.tf new file mode 100644 index 00000000..aa904d7b --- /dev/null +++ b/terraform/aws/backup/aws_organizations_delegated_administrator.tf @@ -0,0 +1 @@ +resource "aws_organizations_delegated_administrator" "pike" {} diff --git a/terraform/aws/backup/aws_pinpoint_adm_channel.tf b/terraform/aws/backup/aws_pinpoint_adm_channel.tf new file mode 100644 index 00000000..e77b56cd --- /dev/null +++ b/terraform/aws/backup/aws_pinpoint_adm_channel.tf @@ -0,0 +1 @@ +resource "aws_pinpoint_adm_channel" "pike" {} diff --git a/terraform/aws/backup/aws_pinpoint_apns_channel.tf b/terraform/aws/backup/aws_pinpoint_apns_channel.tf new file mode 100644 index 00000000..6f169024 --- /dev/null +++ b/terraform/aws/backup/aws_pinpoint_apns_channel.tf @@ -0,0 +1 @@ +resource "aws_pinpoint_apns_channel" "pike" {} diff --git a/terraform/aws/backup/aws_pinpoint_apns_sandbox_channel.tf b/terraform/aws/backup/aws_pinpoint_apns_sandbox_channel.tf new file mode 100644 index 00000000..06a565bd --- /dev/null +++ b/terraform/aws/backup/aws_pinpoint_apns_sandbox_channel.tf @@ -0,0 +1 @@ +resource "aws_pinpoint_apns_sandbox_channel" "pike" {} diff --git a/terraform/aws/backup/aws_pinpoint_apns_voip_channel.tf b/terraform/aws/backup/aws_pinpoint_apns_voip_channel.tf new file mode 100644 index 00000000..bdf90a07 --- /dev/null +++ b/terraform/aws/backup/aws_pinpoint_apns_voip_channel.tf @@ -0,0 +1 @@ +resource "aws_pinpoint_apns_voip_channel" "pike" {} diff --git a/terraform/aws/backup/aws_pinpoint_apns_voip_sandbox_channel.tf b/terraform/aws/backup/aws_pinpoint_apns_voip_sandbox_channel.tf new file mode 100644 index 00000000..9b2b099c --- /dev/null +++ b/terraform/aws/backup/aws_pinpoint_apns_voip_sandbox_channel.tf @@ -0,0 +1 @@ +resource "aws_pinpoint_apns_voip_sandbox_channel" "pike" {} diff --git a/terraform/aws/backup/aws_pinpoint_app.tf b/terraform/aws/backup/aws_pinpoint_app.tf new file mode 100644 index 00000000..3ad71169 --- /dev/null +++ b/terraform/aws/backup/aws_pinpoint_app.tf @@ -0,0 +1 @@ +resource "aws_pinpoint_app" "pike" {} diff --git a/terraform/aws/backup/aws_pinpoint_baidu_channel.tf b/terraform/aws/backup/aws_pinpoint_baidu_channel.tf new file mode 100644 index 00000000..69de4a55 --- /dev/null +++ b/terraform/aws/backup/aws_pinpoint_baidu_channel.tf @@ -0,0 +1 @@ +resource "aws_pinpoint_baidu_channel" "pike" {} diff --git a/terraform/aws/backup/aws_pinpoint_email_channel.tf b/terraform/aws/backup/aws_pinpoint_email_channel.tf new file mode 100644 index 00000000..fca600c2 --- /dev/null +++ b/terraform/aws/backup/aws_pinpoint_email_channel.tf @@ -0,0 +1 @@ +resource "aws_pinpoint_email_channel" "pike" {} diff --git a/terraform/aws/backup/aws_pinpoint_email_template.tf b/terraform/aws/backup/aws_pinpoint_email_template.tf new file mode 100644 index 00000000..b9f5b693 --- /dev/null +++ b/terraform/aws/backup/aws_pinpoint_email_template.tf @@ -0,0 +1 @@ +resource "aws_pinpoint_email_template" "pike" {} diff --git a/terraform/aws/backup/aws_pinpoint_event_stream.tf b/terraform/aws/backup/aws_pinpoint_event_stream.tf new file mode 100644 index 00000000..be5b5e90 --- /dev/null +++ b/terraform/aws/backup/aws_pinpoint_event_stream.tf @@ -0,0 +1 @@ +resource "aws_pinpoint_event_stream" "pike" {} diff --git a/terraform/aws/backup/aws_pinpoint_gcm_channel.tf b/terraform/aws/backup/aws_pinpoint_gcm_channel.tf new file mode 100644 index 00000000..46aca55b --- /dev/null +++ b/terraform/aws/backup/aws_pinpoint_gcm_channel.tf @@ -0,0 +1 @@ +resource "aws_pinpoint_gcm_channel" "pike" {} diff --git a/terraform/aws/backup/aws_pinpoint_sms_channel.tf b/terraform/aws/backup/aws_pinpoint_sms_channel.tf new file mode 100644 index 00000000..8ec27c9e --- /dev/null +++ b/terraform/aws/backup/aws_pinpoint_sms_channel.tf @@ -0,0 +1 @@ +resource "aws_pinpoint_sms_channel" "pike" {} diff --git a/terraform/aws/backup/aws_pinpointsmsvoicev2_configuration_set.tf b/terraform/aws/backup/aws_pinpointsmsvoicev2_configuration_set.tf new file mode 100644 index 00000000..0c280057 --- /dev/null +++ b/terraform/aws/backup/aws_pinpointsmsvoicev2_configuration_set.tf @@ -0,0 +1,9 @@ +resource "aws_pinpointsmsvoicev2_configuration_set" "pike" { + name = "example-configuration-set" + default_sender_id = "example" + default_message_type = "TRANSACTIONAL" + + tags = { + pike = "permissions" + } +} diff --git a/terraform/aws/backup/aws_pinpointsmsvoicev2_opt_out_list.tf b/terraform/aws/backup/aws_pinpointsmsvoicev2_opt_out_list.tf new file mode 100644 index 00000000..a00a2b2c --- /dev/null +++ b/terraform/aws/backup/aws_pinpointsmsvoicev2_opt_out_list.tf @@ -0,0 +1,3 @@ +resource "aws_pinpointsmsvoicev2_opt_out_list" "pike" { + name = "example-opt-out-list" +} diff --git a/terraform/aws/backup/aws_pinpointsmsvoicev2_phone_number.tf b/terraform/aws/backup/aws_pinpointsmsvoicev2_phone_number.tf new file mode 100644 index 00000000..a283dcdc --- /dev/null +++ b/terraform/aws/backup/aws_pinpointsmsvoicev2_phone_number.tf @@ -0,0 +1,9 @@ +resource "aws_pinpointsmsvoicev2_phone_number" "pike" { + iso_country_code = "US" + message_type = "TRANSACTIONAL" + number_type = "TOLL_FREE" + + number_capabilities = [ + "SMS" + ] +} diff --git a/terraform/aws/backup/aws_prometheus_alert_manager_definition.tf b/terraform/aws/backup/aws_prometheus_alert_manager_definition.tf new file mode 100644 index 00000000..e8a51023 --- /dev/null +++ b/terraform/aws/backup/aws_prometheus_alert_manager_definition.tf @@ -0,0 +1 @@ +resource "aws_prometheus_alert_manager_definition" "pike" {} diff --git a/terraform/aws/backup/aws_prometheus_rule_group_namespace.tf b/terraform/aws/backup/aws_prometheus_rule_group_namespace.tf new file mode 100644 index 00000000..da439b5f --- /dev/null +++ b/terraform/aws/backup/aws_prometheus_rule_group_namespace.tf @@ -0,0 +1 @@ +resource "aws_prometheus_rule_group_namespace" "pike" {} diff --git a/terraform/aws/backup/aws_prometheus_scraper.tf b/terraform/aws/backup/aws_prometheus_scraper.tf new file mode 100644 index 00000000..0b02210a --- /dev/null +++ b/terraform/aws/backup/aws_prometheus_scraper.tf @@ -0,0 +1 @@ +resource "aws_prometheus_scraper" "pike" {} diff --git a/terraform/aws/backup/aws_prometheus_workspace.tf b/terraform/aws/backup/aws_prometheus_workspace.tf new file mode 100644 index 00000000..d6d1eb42 --- /dev/null +++ b/terraform/aws/backup/aws_prometheus_workspace.tf @@ -0,0 +1 @@ +resource "aws_prometheus_workspace" "pike" {} diff --git a/terraform/aws/backup/aws_prometheus_workspace_configuration.tf b/terraform/aws/backup/aws_prometheus_workspace_configuration.tf new file mode 100644 index 00000000..aafb890a --- /dev/null +++ b/terraform/aws/backup/aws_prometheus_workspace_configuration.tf @@ -0,0 +1,26 @@ +resource "aws_prometheus_workspace_configuration" "pike" { + workspace_id = aws_prometheus_workspace.example.id + retention_period_in_days = 60 + + limits_per_label_set { + label_set = { + "env" = "dev" + } + limits { + max_series = 100000 + } + } + + limits_per_label_set { + label_set = { + "env" = "prod" + } + limits { + max_series = 400000 + } + } +} + +resource "aws_prometheus_workspace" "example" { + +} diff --git a/terraform/aws/backup/aws_qbusiness_application.tf b/terraform/aws/backup/aws_qbusiness_application.tf new file mode 100644 index 00000000..3cca247c --- /dev/null +++ b/terraform/aws/backup/aws_qbusiness_application.tf @@ -0,0 +1,9 @@ +resource "aws_qbusiness_application" "pike" { + display_name = "pike" + iam_service_role_arn = aws_iam_role.example.arn + identity_center_instance_arn = tolist(data.aws_ssoadmin_instances.example.arns)[0] + + attachments_configuration { + attachments_control_mode = "ENABLED" + } +} diff --git a/terraform/aws/backup/aws_qldb_ledger.tf b/terraform/aws/backup/aws_qldb_ledger.tf new file mode 100644 index 00000000..fd873e4f --- /dev/null +++ b/terraform/aws/backup/aws_qldb_ledger.tf @@ -0,0 +1 @@ +resource "aws_qldb_ledger" "pike" {} diff --git a/terraform/aws/backup/aws_quicksight_account_settings.tf b/terraform/aws/backup/aws_quicksight_account_settings.tf new file mode 100644 index 00000000..980c635a --- /dev/null +++ b/terraform/aws/backup/aws_quicksight_account_settings.tf @@ -0,0 +1,3 @@ +resource "aws_quicksight_account_settings" "pike" { + termination_protection_enabled = false +} diff --git a/terraform/aws/backup/aws_quicksight_role_membership.tf b/terraform/aws/backup/aws_quicksight_role_membership.tf new file mode 100644 index 00000000..f7a8a68b --- /dev/null +++ b/terraform/aws/backup/aws_quicksight_role_membership.tf @@ -0,0 +1 @@ +resource "aws_quicksight_role_membership" "pike" {} diff --git a/terraform/aws/backup/aws_ram_resource_share_accepter.tf b/terraform/aws/backup/aws_ram_resource_share_accepter.tf new file mode 100644 index 00000000..762144d4 --- /dev/null +++ b/terraform/aws/backup/aws_ram_resource_share_accepter.tf @@ -0,0 +1 @@ +resource "aws_ram_resource_share_accepter" "pike" {} diff --git a/terraform/aws/backup/aws_ram_sharing_with_organization.tf b/terraform/aws/backup/aws_ram_sharing_with_organization.tf new file mode 100644 index 00000000..f9ac87fa --- /dev/null +++ b/terraform/aws/backup/aws_ram_sharing_with_organization.tf @@ -0,0 +1 @@ +resource "aws_ram_sharing_with_organization" "pike" {} diff --git a/terraform/aws/backup/aws_rbin_rule.tf b/terraform/aws/backup/aws_rbin_rule.tf new file mode 100644 index 00000000..25a3b3f6 --- /dev/null +++ b/terraform/aws/backup/aws_rbin_rule.tf @@ -0,0 +1 @@ +resource "aws_rbin_rule" "pike" {} diff --git a/terraform/aws/backup/aws_rds_certificate.tf b/terraform/aws/backup/aws_rds_certificate.tf new file mode 100644 index 00000000..275ae48a --- /dev/null +++ b/terraform/aws/backup/aws_rds_certificate.tf @@ -0,0 +1 @@ +resource "aws_rds_certificate" "pike" {} diff --git a/terraform/aws/backup/aws_rds_cluster_snapshot_copy.tf b/terraform/aws/backup/aws_rds_cluster_snapshot_copy.tf new file mode 100644 index 00000000..186e961d --- /dev/null +++ b/terraform/aws/backup/aws_rds_cluster_snapshot_copy.tf @@ -0,0 +1 @@ +resource "aws_rds_cluster_snapshot_copy" "pike" {} diff --git a/terraform/aws/backup/aws_rds_custom_db_engine_version.tf b/terraform/aws/backup/aws_rds_custom_db_engine_version.tf new file mode 100644 index 00000000..7bb5b82d --- /dev/null +++ b/terraform/aws/backup/aws_rds_custom_db_engine_version.tf @@ -0,0 +1 @@ +resource "aws_rds_custom_db_engine_version" "pike" {} diff --git a/terraform/aws/backup/aws_rds_export_task.tf b/terraform/aws/backup/aws_rds_export_task.tf new file mode 100644 index 00000000..2e9b28ad --- /dev/null +++ b/terraform/aws/backup/aws_rds_export_task.tf @@ -0,0 +1 @@ +resource "aws_rds_export_task" "pike" {} diff --git a/terraform/aws/backup/aws_rds_instance_state.tf b/terraform/aws/backup/aws_rds_instance_state.tf new file mode 100644 index 00000000..ef46800a --- /dev/null +++ b/terraform/aws/backup/aws_rds_instance_state.tf @@ -0,0 +1 @@ +resource "aws_rds_instance_state" "pike" {} diff --git a/terraform/aws/backup/aws_rds_reserved_instance.tf b/terraform/aws/backup/aws_rds_reserved_instance.tf new file mode 100644 index 00000000..1596dbe4 --- /dev/null +++ b/terraform/aws/backup/aws_rds_reserved_instance.tf @@ -0,0 +1 @@ +resource "aws_rds_reserved_instance" "pike" {} diff --git a/terraform/aws/backup/aws_rds_shard_group.tf b/terraform/aws/backup/aws_rds_shard_group.tf new file mode 100644 index 00000000..54541586 --- /dev/null +++ b/terraform/aws/backup/aws_rds_shard_group.tf @@ -0,0 +1 @@ +resource "aws_rds_shard_group" "pike" {} diff --git a/terraform/aws/backup/aws_redshift_cluster_snapshot.tf b/terraform/aws/backup/aws_redshift_cluster_snapshot.tf new file mode 100644 index 00000000..14e878db --- /dev/null +++ b/terraform/aws/backup/aws_redshift_cluster_snapshot.tf @@ -0,0 +1 @@ +resource "aws_redshift_cluster_snapshot" "pike" {} diff --git a/terraform/aws/backup/aws_redshift_data_share_authorization.tf b/terraform/aws/backup/aws_redshift_data_share_authorization.tf new file mode 100644 index 00000000..60135a04 --- /dev/null +++ b/terraform/aws/backup/aws_redshift_data_share_authorization.tf @@ -0,0 +1 @@ +resource "aws_redshift_data_share_authorization" "pike" {} diff --git a/terraform/aws/backup/aws_redshift_data_share_consumer_association.tf b/terraform/aws/backup/aws_redshift_data_share_consumer_association.tf new file mode 100644 index 00000000..7e33b5fb --- /dev/null +++ b/terraform/aws/backup/aws_redshift_data_share_consumer_association.tf @@ -0,0 +1 @@ +resource "aws_redshift_data_share_consumer_association" "pike" {} diff --git a/terraform/aws/backup/aws_redshift_integration.tf b/terraform/aws/backup/aws_redshift_integration.tf new file mode 100644 index 00000000..5201bb39 --- /dev/null +++ b/terraform/aws/backup/aws_redshift_integration.tf @@ -0,0 +1,164 @@ +resource "aws_dynamodb_table" "example" { + name = "dynamodb-table-example" + read_capacity = 1 + write_capacity = 1 + hash_key = "example" + + attribute { + name = "example" + type = "S" + } + + point_in_time_recovery { + enabled = true + } +} + +data "aws_subnets" "pike" { + +} + +resource "aws_redshiftserverless_namespace" "example" { + namespace_name = "redshift-example" +} + +resource "aws_redshiftserverless_workgroup" "example" { + namespace_name = aws_redshiftserverless_namespace.example.namespace_name + workgroup_name = "example-workgroup" + base_capacity = 8 + publicly_accessible = false + + subnet_ids = data.aws_subnets.pike.ids + + config_parameter { + parameter_key = "enable_case_sensitive_identifier" + parameter_value = "true" + } + + config_parameter { + parameter_key = "auto_mv" + parameter_value = "true" + } + + config_parameter { + parameter_key = "datestyle" + parameter_value = "ISO, MDY" + } + + config_parameter { + parameter_key = "enable_user_activity_logging" + parameter_value = "true" + } + config_parameter { + parameter_key = "max_query_execution_time" + parameter_value = "14400" + } + config_parameter { + parameter_key = "query_group" + parameter_value = "default" + } + config_parameter { + parameter_key = "require_ssl" + parameter_value = "true" + } + config_parameter { + parameter_key = "search_path" + parameter_value = "$user, public" + } + config_parameter { + parameter_key = "use_fips_ssl" + parameter_value = "false" + } + +} + +resource "aws_redshift_integration" "pike" { + integration_name = "pike" + description = "test" + source_arn = aws_dynamodb_table.example.arn + target_arn = aws_redshiftserverless_namespace.example.arn + + kms_key_id = aws_kms_key.example.key_id + + # additional_encryption_context = { + # "example" : "test", + # } + + tags = { + pike = "permissions" + another = "one" + } + + depends_on = [ + aws_kms_key_policy.example + ] +} + + +data "aws_caller_identity" "current" {} + +resource "aws_kms_key" "example" { + description = "example-redshift2" + deletion_window_in_days = 10 +} + +resource "aws_kms_key_policy" "example" { + key_id = aws_kms_key.example.id + + policy = jsonencode({ + Id = "key-consolepolicy-3" + Version = "2012-10-17" + Statement = [ + { + Sid = "Enable IAM User Permissions" + Effect = "Allow" + Principal = { + AWS = "arn:aws:iam::${data.aws_caller_identity.current.account_id}:root" + } + Action = "kms:*" + Resource = "*" + }, + { + Sid = "Allow use of the key" + Effect = "Allow" + Principal = { + AWS = [ + "arn:aws:iam::680235478471:role/redshiftScheduler", + "arn:aws:iam::680235478471:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift", + ] + } + Action = [ + "kms:Encrypt", + "kms:Decrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + "kms:DescribeKey", + "kms:CreateGrant", + ] + Resource = "*" + }, + { + Action = [ + "kms:CreateGrant", + "kms:ListGrants", + "kms:RevokeGrant", + ] + Condition = { + Bool = { + "kms:GrantIsForAWSResource" = "true" + } + } + Effect = "Allow" + Principal = { + AWS = [ + "arn:aws:iam::680235478471:role/redshiftScheduler", + "arn:aws:iam::680235478471:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift", + ] + } + Resource = "*" + Sid = "Allow attachment of persistent resources" + }, + + ] + }) +} diff --git a/terraform/aws/backup/aws_redshift_logging.tf b/terraform/aws/backup/aws_redshift_logging.tf new file mode 100644 index 00000000..4925260d --- /dev/null +++ b/terraform/aws/backup/aws_redshift_logging.tf @@ -0,0 +1 @@ +resource "aws_redshift_logging" "pike" {} diff --git a/terraform/aws/backup/aws_redshift_partner.tf b/terraform/aws/backup/aws_redshift_partner.tf new file mode 100644 index 00000000..b761b0d6 --- /dev/null +++ b/terraform/aws/backup/aws_redshift_partner.tf @@ -0,0 +1 @@ +resource "aws_redshift_partner" "pike" {} diff --git a/terraform/aws/backup/aws_redshift_resource_policy.tf b/terraform/aws/backup/aws_redshift_resource_policy.tf new file mode 100644 index 00000000..8439584a --- /dev/null +++ b/terraform/aws/backup/aws_redshift_resource_policy.tf @@ -0,0 +1 @@ +resource "aws_redshift_resource_policy" "pike" {} diff --git a/terraform/aws/backup/aws_redshift_snapshot_copy.tf b/terraform/aws/backup/aws_redshift_snapshot_copy.tf new file mode 100644 index 00000000..ac308fff --- /dev/null +++ b/terraform/aws/backup/aws_redshift_snapshot_copy.tf @@ -0,0 +1 @@ +resource "aws_redshift_snapshot_copy" "pike" {} diff --git a/terraform/aws/backup/aws_redshiftdata_statement.tf b/terraform/aws/backup/aws_redshiftdata_statement.tf new file mode 100644 index 00000000..1cae39de --- /dev/null +++ b/terraform/aws/backup/aws_redshiftdata_statement.tf @@ -0,0 +1 @@ +resource "aws_redshiftdata_statement" "pike" {} diff --git a/terraform/aws/backup/aws_redshiftserverless_custom_domain_association.tf b/terraform/aws/backup/aws_redshiftserverless_custom_domain_association.tf new file mode 100644 index 00000000..58f6882b --- /dev/null +++ b/terraform/aws/backup/aws_redshiftserverless_custom_domain_association.tf @@ -0,0 +1 @@ +resource "aws_redshiftserverless_custom_domain_association" "pike" {} diff --git a/terraform/aws/backup/aws_redshiftserverless_endpoint_access.tf b/terraform/aws/backup/aws_redshiftserverless_endpoint_access.tf new file mode 100644 index 00000000..27ac4f7a --- /dev/null +++ b/terraform/aws/backup/aws_redshiftserverless_endpoint_access.tf @@ -0,0 +1 @@ +resource "aws_redshiftserverless_endpoint_access" "pike" {} diff --git a/terraform/aws/backup/aws_redshiftserverless_resource_policy.tf b/terraform/aws/backup/aws_redshiftserverless_resource_policy.tf new file mode 100644 index 00000000..2d996836 --- /dev/null +++ b/terraform/aws/backup/aws_redshiftserverless_resource_policy.tf @@ -0,0 +1 @@ +resource "aws_redshiftserverless_resource_policy" "pike" {} diff --git a/terraform/aws/backup/aws_redshiftserverless_snapshot.tf b/terraform/aws/backup/aws_redshiftserverless_snapshot.tf new file mode 100644 index 00000000..84a3c60f --- /dev/null +++ b/terraform/aws/backup/aws_redshiftserverless_snapshot.tf @@ -0,0 +1 @@ +resource "aws_redshiftserverless_snapshot" "pike" {} diff --git a/terraform/aws/backup/aws_redshiftserverless_usage_limit.tf b/terraform/aws/backup/aws_redshiftserverless_usage_limit.tf new file mode 100644 index 00000000..53f03edb --- /dev/null +++ b/terraform/aws/backup/aws_redshiftserverless_usage_limit.tf @@ -0,0 +1 @@ +resource "aws_redshiftserverless_usage_limit" "pike" {} diff --git a/terraform/aws/backup/aws_resiliencehub_resiliency_policy.tf b/terraform/aws/backup/aws_resiliencehub_resiliency_policy.tf new file mode 100644 index 00000000..3db6b477 --- /dev/null +++ b/terraform/aws/backup/aws_resiliencehub_resiliency_policy.tf @@ -0,0 +1 @@ +resource "aws_resiliencehub_resiliency_policy" "pike" {} diff --git a/terraform/aws/backup/aws_resourcegroups_resource.tf b/terraform/aws/backup/aws_resourcegroups_resource.tf new file mode 100644 index 00000000..cb048966 --- /dev/null +++ b/terraform/aws/backup/aws_resourcegroups_resource.tf @@ -0,0 +1 @@ +resource "aws_resourcegroups_resource" "pike" {} diff --git a/terraform/aws/backup/aws_route53_records_exclusive.tf b/terraform/aws/backup/aws_route53_records_exclusive.tf new file mode 100644 index 00000000..a03fb084 --- /dev/null +++ b/terraform/aws/backup/aws_route53_records_exclusive.tf @@ -0,0 +1,22 @@ +resource "aws_route53_records_exclusive" "pike" { + zone_id = aws_route53_zone.test.zone_id + + resource_record_set { + name = "subdomain.freebeer.site" + type = "A" + ttl = "30" + + resource_records { + value = "127.0.0.1" + } + resource_records { + value = "127.0.0.30" + } + } +} + + +resource "aws_route53_zone" "test" { + name = "freebeer.site" + force_destroy = true +} diff --git a/terraform/aws/backup/aws_route53domains_delegation_signer_record.tf b/terraform/aws/backup/aws_route53domains_delegation_signer_record.tf new file mode 100644 index 00000000..71da960c --- /dev/null +++ b/terraform/aws/backup/aws_route53domains_delegation_signer_record.tf @@ -0,0 +1 @@ +resource "aws_route53domains_delegation_signer_record" "pike" {} diff --git a/terraform/aws/backup/aws_route53domains_domain.tf b/terraform/aws/backup/aws_route53domains_domain.tf new file mode 100644 index 00000000..2d997beb --- /dev/null +++ b/terraform/aws/backup/aws_route53domains_domain.tf @@ -0,0 +1 @@ +resource "aws_route53domains_domain" "pike" {} diff --git a/terraform/aws/backup/aws_route53domains_registered_domain.tf b/terraform/aws/backup/aws_route53domains_registered_domain.tf new file mode 100644 index 00000000..f9a83bc9 --- /dev/null +++ b/terraform/aws/backup/aws_route53domains_registered_domain.tf @@ -0,0 +1 @@ +resource "aws_route53domains_registered_domain" "pike" {} diff --git a/terraform/aws/backup/aws_route53profiles_association.tf b/terraform/aws/backup/aws_route53profiles_association.tf new file mode 100644 index 00000000..6a7187de --- /dev/null +++ b/terraform/aws/backup/aws_route53profiles_association.tf @@ -0,0 +1 @@ +resource "aws_route53profiles_association" "pike" {} diff --git a/terraform/aws/backup/aws_route53profiles_profile.tf b/terraform/aws/backup/aws_route53profiles_profile.tf new file mode 100644 index 00000000..a41ce050 --- /dev/null +++ b/terraform/aws/backup/aws_route53profiles_profile.tf @@ -0,0 +1 @@ +resource "aws_route53profiles_profile" "pike" {} diff --git a/terraform/aws/backup/aws_route53profiles_resource_association.tf b/terraform/aws/backup/aws_route53profiles_resource_association.tf new file mode 100644 index 00000000..f2334d04 --- /dev/null +++ b/terraform/aws/backup/aws_route53profiles_resource_association.tf @@ -0,0 +1 @@ +resource "aws_route53profiles_resource_association" "pike" {} diff --git a/terraform/aws/backup/aws_rum_metrics_destination.tf b/terraform/aws/backup/aws_rum_metrics_destination.tf new file mode 100644 index 00000000..43ca7bd1 --- /dev/null +++ b/terraform/aws/backup/aws_rum_metrics_destination.tf @@ -0,0 +1 @@ +resource "aws_rum_metrics_destination" "pike" {} diff --git a/terraform/aws/backup/aws_s3_directory_bucket.tf b/terraform/aws/backup/aws_s3_directory_bucket.tf new file mode 100644 index 00000000..365e010f --- /dev/null +++ b/terraform/aws/backup/aws_s3_directory_bucket.tf @@ -0,0 +1,3 @@ +resource "aws_s3_directory_bucket" "pike" { + bucket = "expressbucket" +} diff --git a/terraform/aws/backup/aws_s3_object_copy.tf b/terraform/aws/backup/aws_s3_object_copy.tf new file mode 100644 index 00000000..cdd8278c --- /dev/null +++ b/terraform/aws/backup/aws_s3_object_copy.tf @@ -0,0 +1,10 @@ +resource "aws_s3_object_copy" "pike" { + bucket = "pike-680235478471" + key = "terraform.tfstate" + source = "680235478471-terraform-state/pike-aws/terraform.tfstate" + override_provider { + default_tags { + tags = {} + } + } +} diff --git a/terraform/aws/backup/aws_s3control_access_grants_instance_resource_policy.tf b/terraform/aws/backup/aws_s3control_access_grants_instance_resource_policy.tf new file mode 100644 index 00000000..0394f5f2 --- /dev/null +++ b/terraform/aws/backup/aws_s3control_access_grants_instance_resource_policy.tf @@ -0,0 +1 @@ +resource "aws_s3control_access_grants_instance_resource_policy" "pike" {} diff --git a/terraform/aws/backup/aws_s3control_bucket.tf b/terraform/aws/backup/aws_s3control_bucket.tf new file mode 100644 index 00000000..9bd7f816 --- /dev/null +++ b/terraform/aws/backup/aws_s3control_bucket.tf @@ -0,0 +1,3 @@ +resource "aws_s3control_bucket" "pike" { + +} diff --git a/terraform/aws/backup/aws_s3control_bucket_lifecycle_configuration.tf b/terraform/aws/backup/aws_s3control_bucket_lifecycle_configuration.tf new file mode 100644 index 00000000..5a83ac10 --- /dev/null +++ b/terraform/aws/backup/aws_s3control_bucket_lifecycle_configuration.tf @@ -0,0 +1 @@ +resource "aws_s3control_bucket_lifecycle_configuration" "pike" {} diff --git a/terraform/aws/backup/aws_s3control_bucket_policy.tf b/terraform/aws/backup/aws_s3control_bucket_policy.tf new file mode 100644 index 00000000..4cfe2dc0 --- /dev/null +++ b/terraform/aws/backup/aws_s3control_bucket_policy.tf @@ -0,0 +1 @@ +resource "aws_s3control_bucket_policy" "pike" {} diff --git a/terraform/aws/backup/aws_s3control_object_lambda_access_point.tf b/terraform/aws/backup/aws_s3control_object_lambda_access_point.tf new file mode 100644 index 00000000..c8959960 --- /dev/null +++ b/terraform/aws/backup/aws_s3control_object_lambda_access_point.tf @@ -0,0 +1 @@ +resource "aws_s3control_object_lambda_access_point" "pike" {} diff --git a/terraform/aws/backup/aws_s3control_object_lambda_access_point_policy.tf b/terraform/aws/backup/aws_s3control_object_lambda_access_point_policy.tf new file mode 100644 index 00000000..ea038985 --- /dev/null +++ b/terraform/aws/backup/aws_s3control_object_lambda_access_point_policy.tf @@ -0,0 +1 @@ +resource "aws_s3control_object_lambda_access_point_policy" "pike" {} diff --git a/terraform/aws/backup/aws_s3control_storage_lens_configuration.tf b/terraform/aws/backup/aws_s3control_storage_lens_configuration.tf new file mode 100644 index 00000000..4a7c5528 --- /dev/null +++ b/terraform/aws/backup/aws_s3control_storage_lens_configuration.tf @@ -0,0 +1,19 @@ +resource "aws_s3control_storage_lens_configuration" "pike" { + config_id = "example-1" + + storage_lens_configuration { + enabled = true + + account_level { + activity_metrics { + enabled = true + } + + bucket_level { + activity_metrics { + enabled = true + } + } + } + } +} diff --git a/terraform/aws/backup/aws_s3tables_namespace.tf b/terraform/aws/backup/aws_s3tables_namespace.tf new file mode 100644 index 00000000..457923ad --- /dev/null +++ b/terraform/aws/backup/aws_s3tables_namespace.tf @@ -0,0 +1,8 @@ +resource "aws_s3tables_namespace" "pike" { + namespace = "pike" + table_bucket_arn = aws_s3tables_table_bucket.example.arn +} + +resource "aws_s3tables_table_bucket" "example" { + name = "example-bucket" +} diff --git a/terraform/aws/backup/aws_s3tables_table.tf b/terraform/aws/backup/aws_s3tables_table.tf new file mode 100644 index 00000000..bc8a5ee2 --- /dev/null +++ b/terraform/aws/backup/aws_s3tables_table.tf @@ -0,0 +1,11 @@ +resource "aws_s3tables_table" "pike" { + name = "piketable" + namespace = aws_s3tables_namespace.pike.namespace + table_bucket_arn = aws_s3tables_namespace.pike.table_bucket_arn + format = "ICEBERG" +} + + +resource "aws_s3tables_table_bucket" "pike" { + name = "pike" +} diff --git a/terraform/aws/backup/aws_s3tables_table_bucket.tf b/terraform/aws/backup/aws_s3tables_table_bucket.tf new file mode 100644 index 00000000..a2bd4815 --- /dev/null +++ b/terraform/aws/backup/aws_s3tables_table_bucket.tf @@ -0,0 +1,3 @@ +resource "aws_s3tables_table_bucket" "pike" { + name = "pike" +} diff --git a/terraform/aws/backup/aws_s3tables_table_bucket_policy.tf b/terraform/aws/backup/aws_s3tables_table_bucket_policy.tf new file mode 100644 index 00000000..e03a76a0 --- /dev/null +++ b/terraform/aws/backup/aws_s3tables_table_bucket_policy.tf @@ -0,0 +1,4 @@ +resource "aws_s3tables_table_bucket_policy" "pike" { + resource_policy = data.aws_iam_policy_document.example.json + table_bucket_arn = aws_s3tables_table_bucket.example.arn +} diff --git a/terraform/aws/backup/aws_s3tables_table_policy.tf b/terraform/aws/backup/aws_s3tables_table_policy.tf new file mode 100644 index 00000000..6f391ac4 --- /dev/null +++ b/terraform/aws/backup/aws_s3tables_table_policy.tf @@ -0,0 +1,20 @@ +resource "aws_s3tables_table_policy" "pike" { + resource_policy = data.aws_iam_policy_document.example.json + name = aws_s3tables_table.pike.name + namespace = aws_s3tables_table.pike.namespace + table_bucket_arn = aws_s3tables_table.pike.table_bucket_arn +} + +data "aws_iam_policy_document" "example" { + + statement { + effect = "Allow" + principals { + type = "AWS" + identifiers = ["arn:aws:iam::680235478471:role/datasteward"] + } + actions = ["s3tables:PutTableBucketMaintenanceConfiguration"] + resources = ["arn:aws:s3tables:eu-west-1:680235478471:bucket/*"] + } + +} diff --git a/terraform/aws/backup/aws_sagemaker_flow_definition.tf b/terraform/aws/backup/aws_sagemaker_flow_definition.tf new file mode 100644 index 00000000..7b181440 --- /dev/null +++ b/terraform/aws/backup/aws_sagemaker_flow_definition.tf @@ -0,0 +1 @@ +resource "aws_sagemaker_flow_definition" "pike" {} diff --git a/terraform/aws/backup/aws_sagemaker_hub.tf b/terraform/aws/backup/aws_sagemaker_hub.tf new file mode 100644 index 00000000..37f2a480 --- /dev/null +++ b/terraform/aws/backup/aws_sagemaker_hub.tf @@ -0,0 +1 @@ +resource "aws_sagemaker_hub" "pike" {} diff --git a/terraform/aws/backup/aws_sagemaker_mlflow_tracking_server.tf b/terraform/aws/backup/aws_sagemaker_mlflow_tracking_server.tf new file mode 100644 index 00000000..6528fd17 --- /dev/null +++ b/terraform/aws/backup/aws_sagemaker_mlflow_tracking_server.tf @@ -0,0 +1 @@ +resource "aws_sagemaker_mlflow_tracking_server" "pike" {} diff --git a/terraform/aws/backup/aws_securityhub_account.tf b/terraform/aws/backup/aws_securityhub_account.tf new file mode 100644 index 00000000..b063e2a9 --- /dev/null +++ b/terraform/aws/backup/aws_securityhub_account.tf @@ -0,0 +1 @@ +resource "aws_securityhub_account" "pike" {} diff --git a/terraform/aws/backup/aws_securityhub_action_target.tf b/terraform/aws/backup/aws_securityhub_action_target.tf new file mode 100644 index 00000000..7618275a --- /dev/null +++ b/terraform/aws/backup/aws_securityhub_action_target.tf @@ -0,0 +1,6 @@ +resource "aws_securityhub_action_target" "pike" { + depends_on = [aws_securityhub_account.pike] + name = "Send notification" + identifier = "SendToChat" + description = "This is custom action sends selected findings to chat" +} diff --git a/terraform/aws/backup/aws_securityhub_configuration_policy_association.tf b/terraform/aws/backup/aws_securityhub_configuration_policy_association.tf new file mode 100644 index 00000000..6ce3f7bf --- /dev/null +++ b/terraform/aws/backup/aws_securityhub_configuration_policy_association.tf @@ -0,0 +1,26 @@ +resource "aws_securityhub_configuration_policy" "example" { + name = "Example" + description = "This is an example configuration policy" + + configuration_policy { + service_enabled = true + enabled_standard_arns = [ + "arn:aws:securityhub:us-east-1::standards/aws-foundational-security-best-practices/v/1.0.0", + "arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0", + ] + security_controls_configuration { + disabled_control_identifiers = [] + } + } + + depends_on = [aws_securityhub_organization_configuration.example] +} + +resource "aws_securityhub_configuration_policy_association" "account_example" { + target_id = "680235478471" + policy_id = aws_securityhub_configuration_policy.example.id +} + +resource "aws_securityhub_organization_configuration" "example" { + auto_enable = true +} diff --git a/terraform/aws/backup/aws_securityhub_invite_accepter.tf b/terraform/aws/backup/aws_securityhub_invite_accepter.tf new file mode 100644 index 00000000..a66fe8c9 --- /dev/null +++ b/terraform/aws/backup/aws_securityhub_invite_accepter.tf @@ -0,0 +1 @@ +resource "aws_securityhub_invite_accepter" "pike" {} diff --git a/terraform/aws/backup/aws_securityhub_member.tf b/terraform/aws/backup/aws_securityhub_member.tf new file mode 100644 index 00000000..e9b721ea --- /dev/null +++ b/terraform/aws/backup/aws_securityhub_member.tf @@ -0,0 +1 @@ +resource "aws_securityhub_member" "pike" {} diff --git a/terraform/aws/backup/aws_securityhub_organization_admin_account.tf b/terraform/aws/backup/aws_securityhub_organization_admin_account.tf new file mode 100644 index 00000000..c78640a2 --- /dev/null +++ b/terraform/aws/backup/aws_securityhub_organization_admin_account.tf @@ -0,0 +1 @@ +resource "aws_securityhub_organization_admin_account" "pike" {} diff --git a/terraform/aws/backup/aws_securityhub_standards_control_association.tf b/terraform/aws/backup/aws_securityhub_standards_control_association.tf new file mode 100644 index 00000000..cad6e23c --- /dev/null +++ b/terraform/aws/backup/aws_securityhub_standards_control_association.tf @@ -0,0 +1 @@ +resource "aws_securityhub_standards_control_association" "pike" {} diff --git a/terraform/aws/backup/aws_securityhub_standards_subscription.tf b/terraform/aws/backup/aws_securityhub_standards_subscription.tf new file mode 100644 index 00000000..7c4f6ce7 --- /dev/null +++ b/terraform/aws/backup/aws_securityhub_standards_subscription.tf @@ -0,0 +1,3 @@ +resource "aws_securityhub_standards_subscription" "pike" { + standards_arn = "arn:aws:securityhub:us-east-1:123456789012:subscription/cis-aws-foundations-benchmark/v/1.2.0" +} diff --git a/terraform/aws/backup/aws_securitylake_custom_log_source.tf b/terraform/aws/backup/aws_securitylake_custom_log_source.tf new file mode 100644 index 00000000..1ef017ee --- /dev/null +++ b/terraform/aws/backup/aws_securitylake_custom_log_source.tf @@ -0,0 +1,3 @@ +resource "aws_securitylake_custom_log_source" "pike" { + source_name = "pike" +} diff --git a/terraform/aws/backup/aws_serverlessapplicationrepository_cloudformation_stack.tf b/terraform/aws/backup/aws_serverlessapplicationrepository_cloudformation_stack.tf new file mode 100644 index 00000000..7390aafa --- /dev/null +++ b/terraform/aws/backup/aws_serverlessapplicationrepository_cloudformation_stack.tf @@ -0,0 +1 @@ +resource "aws_serverlessapplicationrepository_cloudformation_stack" "pike" {} diff --git a/terraform/aws/backup/aws_service_discovery_http_namespace.tf b/terraform/aws/backup/aws_service_discovery_http_namespace.tf new file mode 100644 index 00000000..79614f83 --- /dev/null +++ b/terraform/aws/backup/aws_service_discovery_http_namespace.tf @@ -0,0 +1,7 @@ +resource "aws_service_discovery_http_namespace" "pike" { + name = "pike" + description = "A service discovery http namespace." + tags = { + pike = "permissions" + } +} diff --git a/terraform/aws/backup/aws_service_discovery_instance.tf b/terraform/aws/backup/aws_service_discovery_instance.tf new file mode 100644 index 00000000..a81a956c --- /dev/null +++ b/terraform/aws/backup/aws_service_discovery_instance.tf @@ -0,0 +1 @@ +resource "aws_service_discovery_instance" "pike" {} diff --git a/terraform/aws/backup/aws_service_discovery_private_dns_namespace.tf b/terraform/aws/backup/aws_service_discovery_private_dns_namespace.tf new file mode 100644 index 00000000..55848ac3 --- /dev/null +++ b/terraform/aws/backup/aws_service_discovery_private_dns_namespace.tf @@ -0,0 +1 @@ +resource "aws_service_discovery_private_dns_namespace" "pike" {} diff --git a/terraform/aws/backup/aws_service_discovery_public_dns_namespace.tf b/terraform/aws/backup/aws_service_discovery_public_dns_namespace.tf new file mode 100644 index 00000000..3672b1b7 --- /dev/null +++ b/terraform/aws/backup/aws_service_discovery_public_dns_namespace.tf @@ -0,0 +1,4 @@ +resource "aws_service_discovery_public_dns_namespace" "pike" { + name = "services.pike.com" + description = "example" +} diff --git a/terraform/aws/backup/aws_service_discovery_service.tf b/terraform/aws/backup/aws_service_discovery_service.tf new file mode 100644 index 00000000..2a9a7a2f --- /dev/null +++ b/terraform/aws/backup/aws_service_discovery_service.tf @@ -0,0 +1,3 @@ +resource "aws_service_discovery_service" "pike" { + +} diff --git a/terraform/aws/backup/aws_servicecatalog_provisioning_artifact.tf b/terraform/aws/backup/aws_servicecatalog_provisioning_artifact.tf index d8eec017..7b105855 100644 --- a/terraform/aws/backup/aws_servicecatalog_provisioning_artifact.tf +++ b/terraform/aws/backup/aws_servicecatalog_provisioning_artifact.tf @@ -1 +1 @@ -#resource "aws_servicecatalog_provisioning_artifact" "pike" {} +resource "aws_servicecatalog_provisioning_artifact" "pike" {} diff --git a/terraform/aws/backup/aws_servicecatalogappregistry_attribute_group.tf b/terraform/aws/backup/aws_servicecatalogappregistry_attribute_group.tf new file mode 100644 index 00000000..a3542305 --- /dev/null +++ b/terraform/aws/backup/aws_servicecatalogappregistry_attribute_group.tf @@ -0,0 +1 @@ +resource "aws_servicecatalogappregistry_attribute_group" "pike" {} diff --git a/terraform/aws/backup/aws_servicecatalogappregistry_attribute_group_association.tf b/terraform/aws/backup/aws_servicecatalogappregistry_attribute_group_association.tf new file mode 100644 index 00000000..9c68bc7c --- /dev/null +++ b/terraform/aws/backup/aws_servicecatalogappregistry_attribute_group_association.tf @@ -0,0 +1 @@ +resource "aws_servicecatalogappregistry_attribute_group_association" "pike" {} diff --git a/terraform/aws/backup/aws_sesv2_account_suppression_attributes.tf b/terraform/aws/backup/aws_sesv2_account_suppression_attributes.tf new file mode 100644 index 00000000..7640fc7f --- /dev/null +++ b/terraform/aws/backup/aws_sesv2_account_suppression_attributes.tf @@ -0,0 +1 @@ +resource "aws_sesv2_account_suppression_attributes" "pike" {} diff --git a/terraform/aws/backup/aws_sesv2_account_vdm_attributes.tf b/terraform/aws/backup/aws_sesv2_account_vdm_attributes.tf new file mode 100644 index 00000000..f444612b --- /dev/null +++ b/terraform/aws/backup/aws_sesv2_account_vdm_attributes.tf @@ -0,0 +1 @@ +resource "aws_sesv2_account_vdm_attributes" "pike" {} diff --git a/terraform/aws/backup/aws_sesv2_configuration_set.tf b/terraform/aws/backup/aws_sesv2_configuration_set.tf new file mode 100644 index 00000000..ec8bca88 --- /dev/null +++ b/terraform/aws/backup/aws_sesv2_configuration_set.tf @@ -0,0 +1 @@ +resource "aws_sesv2_configuration_set" "pike" {} diff --git a/terraform/aws/backup/aws_sesv2_configuration_set_event_destination.tf b/terraform/aws/backup/aws_sesv2_configuration_set_event_destination.tf new file mode 100644 index 00000000..39f8c114 --- /dev/null +++ b/terraform/aws/backup/aws_sesv2_configuration_set_event_destination.tf @@ -0,0 +1 @@ +resource "aws_sesv2_configuration_set_event_destination" "pike" {} diff --git a/terraform/aws/backup/aws_sesv2_contact_list.tf b/terraform/aws/backup/aws_sesv2_contact_list.tf new file mode 100644 index 00000000..7067538b --- /dev/null +++ b/terraform/aws/backup/aws_sesv2_contact_list.tf @@ -0,0 +1 @@ +resource "aws_sesv2_contact_list" "pike" {} diff --git a/terraform/aws/backup/aws_sesv2_dedicated_ip_assignment.tf b/terraform/aws/backup/aws_sesv2_dedicated_ip_assignment.tf new file mode 100644 index 00000000..5c4923f5 --- /dev/null +++ b/terraform/aws/backup/aws_sesv2_dedicated_ip_assignment.tf @@ -0,0 +1 @@ +resource "aws_sesv2_dedicated_ip_assignment" "pike" {} diff --git a/terraform/aws/backup/aws_sesv2_dedicated_ip_pool.tf b/terraform/aws/backup/aws_sesv2_dedicated_ip_pool.tf new file mode 100644 index 00000000..cc07c44f --- /dev/null +++ b/terraform/aws/backup/aws_sesv2_dedicated_ip_pool.tf @@ -0,0 +1 @@ +resource "aws_sesv2_dedicated_ip_pool" "pike" {} diff --git a/terraform/aws/backup/aws_sesv2_email_identity.tf b/terraform/aws/backup/aws_sesv2_email_identity.tf new file mode 100644 index 00000000..ad12bc7d --- /dev/null +++ b/terraform/aws/backup/aws_sesv2_email_identity.tf @@ -0,0 +1 @@ +resource "aws_sesv2_email_identity" "pike" {} diff --git a/terraform/aws/backup/aws_sesv2_email_identity_feedback_attributes.tf b/terraform/aws/backup/aws_sesv2_email_identity_feedback_attributes.tf new file mode 100644 index 00000000..55600453 --- /dev/null +++ b/terraform/aws/backup/aws_sesv2_email_identity_feedback_attributes.tf @@ -0,0 +1 @@ +resource "aws_sesv2_email_identity_feedback_attributes" "pike" {} diff --git a/terraform/aws/backup/aws_sesv2_email_identity_mail_from_attributes.tf b/terraform/aws/backup/aws_sesv2_email_identity_mail_from_attributes.tf new file mode 100644 index 00000000..3a33b71e --- /dev/null +++ b/terraform/aws/backup/aws_sesv2_email_identity_mail_from_attributes.tf @@ -0,0 +1 @@ +resource "aws_sesv2_email_identity_mail_from_attributes" "pike" {} diff --git a/terraform/aws/backup/aws_sesv2_email_identity_policy.tf b/terraform/aws/backup/aws_sesv2_email_identity_policy.tf new file mode 100644 index 00000000..cf76ec5f --- /dev/null +++ b/terraform/aws/backup/aws_sesv2_email_identity_policy.tf @@ -0,0 +1 @@ +resource "aws_sesv2_email_identity_policy" "pike" {} diff --git a/terraform/aws/backup/aws_shield_application_layer_automatic_response.tf b/terraform/aws/backup/aws_shield_application_layer_automatic_response.tf new file mode 100644 index 00000000..6aaf209c --- /dev/null +++ b/terraform/aws/backup/aws_shield_application_layer_automatic_response.tf @@ -0,0 +1 @@ +resource "aws_shield_application_layer_automatic_response" "pike" {} diff --git a/terraform/aws/backup/aws_shield_drt_access_log_bucket_association.tf b/terraform/aws/backup/aws_shield_drt_access_log_bucket_association.tf new file mode 100644 index 00000000..afe5c447 --- /dev/null +++ b/terraform/aws/backup/aws_shield_drt_access_log_bucket_association.tf @@ -0,0 +1 @@ +resource "aws_shield_drt_access_log_bucket_association" "pike" {} diff --git a/terraform/aws/backup/aws_shield_drt_access_role_arn_association.tf b/terraform/aws/backup/aws_shield_drt_access_role_arn_association.tf new file mode 100644 index 00000000..ffd8b5b0 --- /dev/null +++ b/terraform/aws/backup/aws_shield_drt_access_role_arn_association.tf @@ -0,0 +1 @@ +resource "aws_shield_drt_access_role_arn_association" "pike" {} diff --git a/terraform/aws/backup/aws_shield_protection_health_check_association.tf b/terraform/aws/backup/aws_shield_protection_health_check_association.tf new file mode 100644 index 00000000..1f8daf50 --- /dev/null +++ b/terraform/aws/backup/aws_shield_protection_health_check_association.tf @@ -0,0 +1 @@ +resource "aws_shield_protection_health_check_association" "pike" {} diff --git a/terraform/aws/backup/aws_shield_subscription.tf b/terraform/aws/backup/aws_shield_subscription.tf new file mode 100644 index 00000000..665ba76d --- /dev/null +++ b/terraform/aws/backup/aws_shield_subscription.tf @@ -0,0 +1 @@ +resource "aws_shield_subscription" "pike" {} diff --git a/terraform/aws/backup/aws_spot_datafeed_subscription.tf b/terraform/aws/backup/aws_spot_datafeed_subscription.tf new file mode 100644 index 00000000..bab905fc --- /dev/null +++ b/terraform/aws/backup/aws_spot_datafeed_subscription.tf @@ -0,0 +1 @@ +resource "aws_spot_datafeed_subscription" "pike" {} diff --git a/terraform/aws/backup/aws_ssm_activation.tf b/terraform/aws/backup/aws_ssm_activation.tf new file mode 100644 index 00000000..1b888ea9 --- /dev/null +++ b/terraform/aws/backup/aws_ssm_activation.tf @@ -0,0 +1 @@ +resource "aws_ssm_activation" "pike" {} diff --git a/terraform/aws/backup/aws_ssm_default_patch_baseline.tf b/terraform/aws/backup/aws_ssm_default_patch_baseline.tf new file mode 100644 index 00000000..953b3a6c --- /dev/null +++ b/terraform/aws/backup/aws_ssm_default_patch_baseline.tf @@ -0,0 +1 @@ +resource "aws_ssm_default_patch_baseline" "pike" {} diff --git a/terraform/aws/backup/aws_ssm_service_setting.tf b/terraform/aws/backup/aws_ssm_service_setting.tf new file mode 100644 index 00000000..9f5878c7 --- /dev/null +++ b/terraform/aws/backup/aws_ssm_service_setting.tf @@ -0,0 +1 @@ +resource "aws_ssm_service_setting" "pike" {} diff --git a/terraform/aws/backup/aws_ssmquicksetup_configuration_manager.tf b/terraform/aws/backup/aws_ssmquicksetup_configuration_manager.tf new file mode 100644 index 00000000..f446f39d --- /dev/null +++ b/terraform/aws/backup/aws_ssmquicksetup_configuration_manager.tf @@ -0,0 +1 @@ +resource "aws_ssmquicksetup_configuration_manager" "pike" {} diff --git a/terraform/aws/backup/aws_ssoadmin_account_assignment.tf b/terraform/aws/backup/aws_ssoadmin_account_assignment.tf new file mode 100644 index 00000000..30974390 --- /dev/null +++ b/terraform/aws/backup/aws_ssoadmin_account_assignment.tf @@ -0,0 +1 @@ +resource "aws_ssoadmin_account_assignment" "pike" {} diff --git a/terraform/aws/backup/aws_ssoadmin_application_access_scope.tf b/terraform/aws/backup/aws_ssoadmin_application_access_scope.tf new file mode 100644 index 00000000..7609f9ad --- /dev/null +++ b/terraform/aws/backup/aws_ssoadmin_application_access_scope.tf @@ -0,0 +1 @@ +resource "aws_ssoadmin_application_access_scope" "pike" {} diff --git a/terraform/aws/backup/aws_ssoadmin_application_assignment_configuration.tf b/terraform/aws/backup/aws_ssoadmin_application_assignment_configuration.tf new file mode 100644 index 00000000..b6f4ea54 --- /dev/null +++ b/terraform/aws/backup/aws_ssoadmin_application_assignment_configuration.tf @@ -0,0 +1 @@ +resource "aws_ssoadmin_application_assignment_configuration" "pike" {} diff --git a/terraform/aws/backup/aws_ssoadmin_customer_managed_policy_attachment.tf b/terraform/aws/backup/aws_ssoadmin_customer_managed_policy_attachment.tf new file mode 100644 index 00000000..cbc13991 --- /dev/null +++ b/terraform/aws/backup/aws_ssoadmin_customer_managed_policy_attachment.tf @@ -0,0 +1 @@ +resource "aws_ssoadmin_customer_managed_policy_attachment" "pike" {} diff --git a/terraform/aws/backup/aws_ssoadmin_instance_access_control_attributes.tf b/terraform/aws/backup/aws_ssoadmin_instance_access_control_attributes.tf new file mode 100644 index 00000000..4f697bf1 --- /dev/null +++ b/terraform/aws/backup/aws_ssoadmin_instance_access_control_attributes.tf @@ -0,0 +1 @@ +resource "aws_ssoadmin_instance_access_control_attributes" "pike" {} diff --git a/terraform/aws/backup/aws_ssoadmin_managed_policy_attachment.tf b/terraform/aws/backup/aws_ssoadmin_managed_policy_attachment.tf new file mode 100644 index 00000000..f15db763 --- /dev/null +++ b/terraform/aws/backup/aws_ssoadmin_managed_policy_attachment.tf @@ -0,0 +1 @@ +resource "aws_ssoadmin_managed_policy_attachment" "pike" {} diff --git a/terraform/aws/backup/aws_ssoadmin_permission_set_inline_policy.tf b/terraform/aws/backup/aws_ssoadmin_permission_set_inline_policy.tf new file mode 100644 index 00000000..4548c68d --- /dev/null +++ b/terraform/aws/backup/aws_ssoadmin_permission_set_inline_policy.tf @@ -0,0 +1 @@ +resource "aws_ssoadmin_permission_set_inline_policy" "pike" {} diff --git a/terraform/aws/backup/aws_ssoadmin_permissions_boundary_attachment.tf b/terraform/aws/backup/aws_ssoadmin_permissions_boundary_attachment.tf new file mode 100644 index 00000000..e54cd14c --- /dev/null +++ b/terraform/aws/backup/aws_ssoadmin_permissions_boundary_attachment.tf @@ -0,0 +1 @@ +resource "aws_ssoadmin_permissions_boundary_attachment" "pike" {} diff --git a/terraform/aws/backup/aws_ssoadmin_trusted_token_issuer.tf b/terraform/aws/backup/aws_ssoadmin_trusted_token_issuer.tf new file mode 100644 index 00000000..37f08d30 --- /dev/null +++ b/terraform/aws/backup/aws_ssoadmin_trusted_token_issuer.tf @@ -0,0 +1 @@ +resource "aws_ssoadmin_trusted_token_issuer" "pike" {} diff --git a/terraform/aws/backup/aws_timestreamquery_scheduled_query.tf b/terraform/aws/backup/aws_timestreamquery_scheduled_query.tf new file mode 100644 index 00000000..9c757464 --- /dev/null +++ b/terraform/aws/backup/aws_timestreamquery_scheduled_query.tf @@ -0,0 +1 @@ +resource "aws_timestreamquery_scheduled_query" "pike" {} diff --git a/terraform/aws/backup/aws_transfer_access.tf b/terraform/aws/backup/aws_transfer_access.tf new file mode 100644 index 00000000..b3a48900 --- /dev/null +++ b/terraform/aws/backup/aws_transfer_access.tf @@ -0,0 +1 @@ +resource "aws_transfer_access" "pike" {} diff --git a/terraform/aws/backup/aws_transfer_server.tf b/terraform/aws/backup/aws_transfer_server.tf new file mode 100644 index 00000000..1b013fb3 --- /dev/null +++ b/terraform/aws/backup/aws_transfer_server.tf @@ -0,0 +1 @@ +resource "aws_transfer_server" "pike" {} diff --git a/terraform/aws/backup/aws_transfer_ssh_key.tf b/terraform/aws/backup/aws_transfer_ssh_key.tf new file mode 100644 index 00000000..05c322fc --- /dev/null +++ b/terraform/aws/backup/aws_transfer_ssh_key.tf @@ -0,0 +1 @@ +resource "aws_transfer_ssh_key" "pike" {} diff --git a/terraform/aws/backup/aws_transfer_tag.tf b/terraform/aws/backup/aws_transfer_tag.tf new file mode 100644 index 00000000..83a06577 --- /dev/null +++ b/terraform/aws/backup/aws_transfer_tag.tf @@ -0,0 +1,5 @@ +resource "aws_transfer_tag" "pike" { + resource_arn = "arn:aws:transfer:us-east-1:680235478471:server/s-01234567890abcdef" + key = "aws:transfer:route53HostedZoneId" + value = "/hostedzone/MyHostedZoneId" +} diff --git a/terraform/aws/backup/aws_transfer_user.tf b/terraform/aws/backup/aws_transfer_user.tf new file mode 100644 index 00000000..585dd436 --- /dev/null +++ b/terraform/aws/backup/aws_transfer_user.tf @@ -0,0 +1 @@ +resource "aws_transfer_user" "pike" {} diff --git a/terraform/aws/backup/aws_verifiedaccess_instance_trust_provider_attachment.tf b/terraform/aws/backup/aws_verifiedaccess_instance_trust_provider_attachment.tf new file mode 100644 index 00000000..b37b30ab --- /dev/null +++ b/terraform/aws/backup/aws_verifiedaccess_instance_trust_provider_attachment.tf @@ -0,0 +1 @@ +resource "aws_verifiedaccess_instance_trust_provider_attachment" "pike" {} diff --git a/terraform/aws/backup/aws_verifiedpermissions_schema.tf b/terraform/aws/backup/aws_verifiedpermissions_schema.tf new file mode 100644 index 00000000..3f722a16 --- /dev/null +++ b/terraform/aws/backup/aws_verifiedpermissions_schema.tf @@ -0,0 +1 @@ +resource "aws_verifiedpermissions_schema" "pike" {} diff --git a/terraform/aws/backup/aws_vpc_block_public_access_exclusion.tf b/terraform/aws/backup/aws_vpc_block_public_access_exclusion.tf new file mode 100644 index 00000000..07804bcf --- /dev/null +++ b/terraform/aws/backup/aws_vpc_block_public_access_exclusion.tf @@ -0,0 +1 @@ +resource "aws_vpc_block_public_access_exclusion" "pike" {} diff --git a/terraform/aws/backup/aws_vpc_block_public_access_options.tf b/terraform/aws/backup/aws_vpc_block_public_access_options.tf new file mode 100644 index 00000000..7ef3fe09 --- /dev/null +++ b/terraform/aws/backup/aws_vpc_block_public_access_options.tf @@ -0,0 +1 @@ +resource "aws_vpc_block_public_access_options" "pike" {} diff --git a/terraform/aws/backup/aws_vpc_endpoint_connection_accepter.tf b/terraform/aws/backup/aws_vpc_endpoint_connection_accepter.tf new file mode 100644 index 00000000..0631eccf --- /dev/null +++ b/terraform/aws/backup/aws_vpc_endpoint_connection_accepter.tf @@ -0,0 +1 @@ +resource "aws_vpc_endpoint_connection_accepter" "pike" {} diff --git a/terraform/aws/backup/aws_vpc_endpoint_policy.tf b/terraform/aws/backup/aws_vpc_endpoint_policy.tf new file mode 100644 index 00000000..adfd2142 --- /dev/null +++ b/terraform/aws/backup/aws_vpc_endpoint_policy.tf @@ -0,0 +1,20 @@ + +resource "aws_vpc_endpoint_policy" "example" { + vpc_endpoint_id = aws_vpc_endpoint.example.id + policy = jsonencode({ + "Version" : "2012-10-17", + "Statement" : [ + { + "Sid" : "AllowAll", + "Effect" : "Allow", + "Principal" : { + "AWS" : "*" + }, + "Action" : [ + "dynamodb:*" + ], + "Resource" : "*" + } + ] + }) +} diff --git a/terraform/aws/backup/aws_vpc_endpoint_private_dns.tf b/terraform/aws/backup/aws_vpc_endpoint_private_dns.tf new file mode 100644 index 00000000..0d8fa86b --- /dev/null +++ b/terraform/aws/backup/aws_vpc_endpoint_private_dns.tf @@ -0,0 +1,26 @@ + +resource "aws_vpc_endpoint_private_dns" "pike" { + vpc_endpoint_id = aws_vpc_endpoint.example.id + private_dns_enabled = true +} + +resource "aws_vpc" "example" { + cidr_block = "10.0.0.0/16" + enable_dns_support = true + enable_dns_hostnames = true +} + +resource "aws_vpc_endpoint" "example" { + + vpc_id = aws_vpc.example.id + service_name = "com.amazonaws.eu-west-2.ec2" + vpc_endpoint_type = "Interface" + + security_group_ids = [ + aws_security_group.sg1.id, + ] + + private_dns_enabled = true +} + +resource "aws_security_group" "sg1" {} diff --git a/terraform/aws/backup/aws_vpc_endpoint_security_group_association.tf b/terraform/aws/backup/aws_vpc_endpoint_security_group_association.tf new file mode 100644 index 00000000..a727e5c4 --- /dev/null +++ b/terraform/aws/backup/aws_vpc_endpoint_security_group_association.tf @@ -0,0 +1,8 @@ + +resource "aws_vpc_endpoint_security_group_association" "sg_ec2" { + vpc_endpoint_id = aws_vpc_endpoint.example.id + security_group_id = aws_security_group.sg.id +} + + +resource "aws_security_group" "sg" {} diff --git a/terraform/aws/backup/aws_vpc_endpoint_service_allowed_principal.tf b/terraform/aws/backup/aws_vpc_endpoint_service_allowed_principal.tf new file mode 100644 index 00000000..48bb3a5b --- /dev/null +++ b/terraform/aws/backup/aws_vpc_endpoint_service_allowed_principal.tf @@ -0,0 +1,16 @@ +data "aws_caller_identity" "current" {} + +resource "aws_vpc_endpoint_service_allowed_principal" "pike" { + vpc_endpoint_service_id = data.aws_vpc_endpoint_service.example.service_id + principal_arn = data.aws_caller_identity.current.arn +} + + +data "aws_vpc_endpoint_service" "example" { + service = "s3" + service_type = "Gateway" +} + +output "service" { + value = data.aws_vpc_endpoint_service.example.service_name +} diff --git a/terraform/aws/backup/aws_vpc_endpoint_service_private_dns_verification.tf b/terraform/aws/backup/aws_vpc_endpoint_service_private_dns_verification.tf new file mode 100644 index 00000000..3cc61330 --- /dev/null +++ b/terraform/aws/backup/aws_vpc_endpoint_service_private_dns_verification.tf @@ -0,0 +1,17 @@ +resource "aws_vpc_endpoint_service_private_dns_verification" "pike" { + service_id = data.aws_vpc_endpoint_service.example.service_id +} + +data "aws_vpc_endpoint_service" "example" { + service = "s3" + service_type = "Gateway" +} + +resource "aws_vpc" "example" { + cidr_block = "10.0.0.0/16" +} + +resource "aws_vpc_endpoint" "example" { + service_name = data.aws_vpc_endpoint_service.example.service_name + vpc_id = aws_vpc.example.id +} diff --git a/terraform/aws/backup/aws_vpc_ipam_organization_admin_account.tf b/terraform/aws/backup/aws_vpc_ipam_organization_admin_account.tf new file mode 100644 index 00000000..702d2dab --- /dev/null +++ b/terraform/aws/backup/aws_vpc_ipam_organization_admin_account.tf @@ -0,0 +1 @@ +resource "aws_vpc_ipam_organization_admin_account" "pike" {} diff --git a/terraform/aws/backup/aws_vpc_ipv6_cidr_block_association.tf b/terraform/aws/backup/aws_vpc_ipv6_cidr_block_association.tf new file mode 100644 index 00000000..488be350 --- /dev/null +++ b/terraform/aws/backup/aws_vpc_ipv6_cidr_block_association.tf @@ -0,0 +1,19 @@ +resource "aws_vpc_ipv6_cidr_block_association" "pike" { + ipv6_ipam_pool_id = aws_vpc_ipam_pool.example.id + vpc_id = aws_vpc.example.id + ipv6_netmask_length = 60 +} + +data "aws_region" "current" {} + +resource "aws_vpc_ipam" "example" { + operating_regions { + region_name = data.aws_region.current.name + } +} + +resource "aws_vpc_ipam_pool" "example" { + address_family = "ipv4" + ipam_scope_id = aws_vpc_ipam.example.private_default_scope_id + locale = data.aws_region.current.name +} diff --git a/terraform/aws/backup/aws_vpc_network_performance_metric_subscription.tf b/terraform/aws/backup/aws_vpc_network_performance_metric_subscription.tf new file mode 100644 index 00000000..dd5b3191 --- /dev/null +++ b/terraform/aws/backup/aws_vpc_network_performance_metric_subscription.tf @@ -0,0 +1 @@ +resource "aws_vpc_network_performance_metric_subscription" "pike" {} diff --git a/terraform/aws/backup/aws_vpc_route_server.tf b/terraform/aws/backup/aws_vpc_route_server.tf new file mode 100644 index 00000000..524c57b6 --- /dev/null +++ b/terraform/aws/backup/aws_vpc_route_server.tf @@ -0,0 +1,11 @@ +resource "aws_vpc_route_server" "pike" { + provider = aws.central + amazon_side_asn = 65534 + persist_routes = "enable" + persist_routes_duration = 2 + sns_notifications_enabled = true + + tags = { + Name = "Main Route Server" + } +} diff --git a/terraform/aws/backup/aws_vpc_route_server_association.tf b/terraform/aws/backup/aws_vpc_route_server_association.tf new file mode 100644 index 00000000..db357516 --- /dev/null +++ b/terraform/aws/backup/aws_vpc_route_server_association.tf @@ -0,0 +1 @@ +resource "aws_vpc_route_server_association" "pike" {} diff --git a/terraform/aws/backup/aws_vpc_route_server_endpoint.tf b/terraform/aws/backup/aws_vpc_route_server_endpoint.tf new file mode 100644 index 00000000..dfdbf2ea --- /dev/null +++ b/terraform/aws/backup/aws_vpc_route_server_endpoint.tf @@ -0,0 +1,24 @@ +# resource "aws_vpc_route_server_endpoint" "pike" { +# provider = aws.central +# +# route_server_id = aws_vpc_route_server.pike.route_server_id +# subnet_id = aws_subnet.first.id +# +# tags = { +# Name = "Endpoint A" +# } +# } + + +resource "aws_vpc" "main" { + provider = aws.central + + cidr_block = "10.0.0.0/16" +} + +resource "aws_subnet" "first" { + provider = aws.central + + vpc_id = aws_vpc.main.id + cidr_block = "10.0.1.0/24" +} diff --git a/terraform/aws/backup/aws_vpc_route_server_peer.tf b/terraform/aws/backup/aws_vpc_route_server_peer.tf new file mode 100644 index 00000000..fa3e616a --- /dev/null +++ b/terraform/aws/backup/aws_vpc_route_server_peer.tf @@ -0,0 +1,12 @@ +# resource "aws_vpc_route_server_peer" "pike" { +# provider = aws.central +# route_server_endpoint_id = aws_vpc_route_server_endpoint.pike.route_server_endpoint_id +# peer_address = "10.0.1.250" +# bgp_options { +# peer_asn = 65200 +# } +# +# tags = { +# Name = "Appliance 1" +# } +# } diff --git a/terraform/aws/backup/aws_vpc_route_server_propagation.tf b/terraform/aws/backup/aws_vpc_route_server_propagation.tf new file mode 100644 index 00000000..0de4083f --- /dev/null +++ b/terraform/aws/backup/aws_vpc_route_server_propagation.tf @@ -0,0 +1,13 @@ +resource "aws_vpc_route_server_propagation" "example" { + provider = aws.central + route_server_id = aws_vpc_route_server.pike.route_server_id + route_table_id = aws_route_table.pike.id + depends_on = [ + aws_vpc_route_server_vpc_association.pike] +} + + +resource "aws_route_table" "pike" { + provider = aws.central + vpc_id = aws_vpc.main.id +} diff --git a/terraform/aws/backup/aws_vpc_route_server_vpc_association.tf b/terraform/aws/backup/aws_vpc_route_server_vpc_association.tf new file mode 100644 index 00000000..0107f302 --- /dev/null +++ b/terraform/aws/backup/aws_vpc_route_server_vpc_association.tf @@ -0,0 +1,5 @@ +resource "aws_vpc_route_server_vpc_association" "pike" { + provider = aws.central + route_server_id = aws_vpc_route_server.pike.route_server_id + vpc_id = aws_vpc.main.id +} diff --git a/terraform/aws/backup/aws_vpc_security_group_vpc_association.tf b/terraform/aws/backup/aws_vpc_security_group_vpc_association.tf new file mode 100644 index 00000000..fdfad4e5 --- /dev/null +++ b/terraform/aws/backup/aws_vpc_security_group_vpc_association.tf @@ -0,0 +1,6 @@ +resource "aws_vpc_security_group_vpc_association" "pike" { + vpc_id = aws_vpc.example.id + security_group_id = aws_security_group.example2.id +} + +resource "aws_security_group" "example2" {} diff --git a/terraform/aws/backup/aws_vpclattice_resource_configuration.tf b/terraform/aws/backup/aws_vpclattice_resource_configuration.tf new file mode 100644 index 00000000..5bc97f88 --- /dev/null +++ b/terraform/aws/backup/aws_vpclattice_resource_configuration.tf @@ -0,0 +1 @@ +resource "aws_vpclattice_resource_configuration" "pike" {} diff --git a/terraform/aws/backup/aws_vpclattice_resource_gateway.tf b/terraform/aws/backup/aws_vpclattice_resource_gateway.tf new file mode 100644 index 00000000..f1b07d22 --- /dev/null +++ b/terraform/aws/backup/aws_vpclattice_resource_gateway.tf @@ -0,0 +1 @@ +resource "aws_vpclattice_resource_gateway" "pike" {} diff --git a/terraform/aws/backup/aws_vpclattice_service_network_resource_association.tf b/terraform/aws/backup/aws_vpclattice_service_network_resource_association.tf new file mode 100644 index 00000000..d078fd93 --- /dev/null +++ b/terraform/aws/backup/aws_vpclattice_service_network_resource_association.tf @@ -0,0 +1 @@ +resource "aws_vpclattice_service_network_resource_association" "pike" {} diff --git a/terraform/aws/backup/aws_wafregional_web_acl_association.tf b/terraform/aws/backup/aws_wafregional_web_acl_association.tf new file mode 100644 index 00000000..16d771e9 --- /dev/null +++ b/terraform/aws/backup/aws_wafregional_web_acl_association.tf @@ -0,0 +1 @@ +resource "aws_wafregional_web_acl_association" "pike" {} diff --git a/terraform/aws/backup/aws_wafv2_api_key.tf b/terraform/aws/backup/aws_wafv2_api_key.tf new file mode 100644 index 00000000..01d666ab --- /dev/null +++ b/terraform/aws/backup/aws_wafv2_api_key.tf @@ -0,0 +1,4 @@ +resource "aws_wafv2_api_key" "pike" { + scope = "REGIONAL" + token_domains = ["example.com"] +} diff --git a/terraform/aws/backup/aws_worklink_fleet.tf b/terraform/aws/backup/aws_worklink_fleet.tf new file mode 100644 index 00000000..a2d835fc --- /dev/null +++ b/terraform/aws/backup/aws_worklink_fleet.tf @@ -0,0 +1 @@ +resource "aws_worklink_fleet" "pike" {} diff --git a/terraform/aws/backup/aws_worklink_website_certificate_authority_association.tf b/terraform/aws/backup/aws_worklink_website_certificate_authority_association.tf new file mode 100644 index 00000000..dcd87178 --- /dev/null +++ b/terraform/aws/backup/aws_worklink_website_certificate_authority_association.tf @@ -0,0 +1 @@ +resource "aws_worklink_website_certificate_authority_association" "pike" {} diff --git a/terraform/aws/backup/aws_workspacesweb_browser_settings.tf b/terraform/aws/backup/aws_workspacesweb_browser_settings.tf new file mode 100644 index 00000000..d2d1fa58 --- /dev/null +++ b/terraform/aws/backup/aws_workspacesweb_browser_settings.tf @@ -0,0 +1,51 @@ +resource "aws_kms_key" "example" { + description = "KMS key for WorkSpaces Web Browser Settings" + deletion_window_in_days = 7 +} + +resource "aws_kms_key_policy" "example" { + key_id = aws_kms_key.example.key_id + + policy = jsonencode({ + "Version" : "2012-10-17", + "Statement" : [ + { + "Effect" : "Allow", + "Action" : [ + "kms:*" + ], + Principal = { + AWS = "*" + } + "Resource" : "*" + }, + { + "Effect" : "Allow", + "Action" : [ + "workspaces:*" + ], + Principal = { + AWS = "*" + } + "Resource" : "*" + } + ] + }) +} + +resource "aws_workspacesweb_browser_settings" "pike" { + browser_policy = jsonencode({ + chromePolicies = { + DefaultDownloadDirectory = { + value = "/home/as2-streaming-user/MyFiles/TemporaryFiles1" + } + } + }) + customer_managed_key = aws_kms_key.example.arn + additional_encryption_context = { + Environment = "Development" + } + tags = { + Name = "example-browser-settings" + } +} diff --git a/terraform/aws/backup/aws_workspacesweb_data_protection_settings.tf b/terraform/aws/backup/aws_workspacesweb_data_protection_settings.tf new file mode 100644 index 00000000..9b89d386 --- /dev/null +++ b/terraform/aws/backup/aws_workspacesweb_data_protection_settings.tf @@ -0,0 +1,44 @@ + +resource "aws_workspacesweb_data_protection_settings" "example" { + display_name = "example-complete" + description = "Complete example data protection settings" + customer_managed_key = aws_kms_key.example.arn + + additional_encryption_context = { + Environment = "Production" + } + + inline_redaction_configuration { + global_confidence_level = 2 + global_enforced_urls = ["https://example.com", "https://test.example.com"] + global_exempt_urls = ["https://exempt.example.com"] + + inline_redaction_pattern { + built_in_pattern_id = "ssn" + confidence_level = 3 + enforced_urls = ["https://pattern1.example.com"] + exempt_urls = ["https://exempt-pattern1.example.com"] + redaction_place_holder { + redaction_place_holder_type = "CustomText" + redaction_place_holder_text = "REDACTED-SSN" + } + } + + inline_redaction_pattern { + custom_pattern { + pattern_name = "CustomPattern" + pattern_regex = "/\\d{3}-\\d{2}-\\d{4}/g" + keyword_regex = "/SSN|Social Security/gi" + pattern_description = "Custom SSN pattern" + } + redaction_place_holder { + redaction_place_holder_type = "CustomText" + redaction_place_holder_text = "REDACTED-CUSTOM" + } + } + } + + tags = { + Name = "example-data-protection-settings" + } +} diff --git a/terraform/aws/backup/aws_workspacesweb_ip_access_settings.tf b/terraform/aws/backup/aws_workspacesweb_ip_access_settings.tf new file mode 100644 index 00000000..bbf405e9 --- /dev/null +++ b/terraform/aws/backup/aws_workspacesweb_ip_access_settings.tf @@ -0,0 +1,41 @@ +resource "aws_kms_key" "example" { + description = "KMS key for WorkSpaces Web IP Access Settings" + deletion_window_in_days = 7 + + policy = jsonencode({ + Id = "example" + Statement = [ + { + Action = "kms:*" + Effect = "Allow" + Principal = { + AWS = "*" + } + + Resource = "*" + Sid = "Enable IAM User Permissions" + }, + ] + Version = "2012-10-17" + }) +} + +resource "aws_workspacesweb_ip_access_settings" "example" { + display_name = "example" + description = "Example IP access settings" + customer_managed_key = aws_kms_key.example.arn + additional_encryption_context = { + Environment = "Production" + } + ip_rule { + ip_range = "10.0.0.0/16" + description = "Main office" + } + ip_rule { + ip_range = "192.168.0.0/24" + description = "Branch office" + } + tags = { + Name = "example-ip-access-settings" + } +} diff --git a/terraform/aws/backup/aws_workspacesweb_network_settings.tf b/terraform/aws/backup/aws_workspacesweb_network_settings.tf new file mode 100644 index 00000000..019e1f85 --- /dev/null +++ b/terraform/aws/backup/aws_workspacesweb_network_settings.tf @@ -0,0 +1,40 @@ + +resource "aws_vpc" "example" { + provider = aws.central + cidr_block = "10.0.0.0/16" +} + +resource "aws_subnet" "example" { + provider = aws.central + count = 2 + + vpc_id = aws_vpc.example.id + cidr_block = cidrsubnet(aws_vpc.example.cidr_block, 8, count.index) + availability_zone = data.aws_availability_zones.available.names[count.index] +} + +resource "aws_security_group" "example1" { + provider = aws.central + count = 2 + + vpc_id = aws_vpc.example.id + name = "example-sg-${count.index}$" +} + +resource "aws_workspacesweb_network_settings" "example" { + provider = aws.central + vpc_id = aws_vpc.example.id + subnet_ids = [aws_subnet.example[0].id, aws_subnet.example[1].id] + security_group_ids = [aws_security_group.example[0].id, aws_security_group.example[1].id] +} + +data "aws_availability_zones" "available" { + provider = aws.central +} + + +resource "aws_security_group" "example" { + provider = aws.central + vpc_id = aws_vpc.example.id + count = 2 +} diff --git a/terraform/aws/backup/aws_workspacesweb_user_access_logging_settings.tf b/terraform/aws/backup/aws_workspacesweb_user_access_logging_settings.tf new file mode 100644 index 00000000..ae50ded2 --- /dev/null +++ b/terraform/aws/backup/aws_workspacesweb_user_access_logging_settings.tf @@ -0,0 +1,12 @@ +resource "aws_kinesis_stream" "example" { + name = "amazon-workspaces-web-user-access-logging-stream" + shard_count = 1 +} + +resource "aws_workspacesweb_user_access_logging_settings" "example" { + kinesis_stream_arn = aws_kinesis_stream.example.arn + tags = { + Name = "example-user-access-logging-settings" + Environment = "Production" + } +} diff --git a/terraform/aws/backup/aws_workspacesweb_user_settings.tf b/terraform/aws/backup/aws_workspacesweb_user_settings.tf new file mode 100644 index 00000000..ce2fd18c --- /dev/null +++ b/terraform/aws/backup/aws_workspacesweb_user_settings.tf @@ -0,0 +1,36 @@ +resource "aws_workspacesweb_user_settings" "example" { + copy_allowed = "Enabled" + download_allowed = "Enabled" + paste_allowed = "Enabled" + print_allowed = "Enabled" + upload_allowed = "Enabled" + deep_link_allowed = "Enabled" + disconnect_timeout_in_minutes = 30 + idle_disconnect_timeout_in_minutes = 15 + customer_managed_key = aws_kms_key.example.arn + + additional_encryption_context = { + Environment = "Production" + } + + toolbar_configuration { + toolbar_type = "Docked" + visual_mode = "Dark" + hidden_toolbar_items = ["Webcam", "Microphone"] + max_display_resolution = "size1920X1080" + } + + cookie_synchronization_configuration { + allowlist { + domain = "example.com" + path = "/path" + } + blocklist { + domain = "blocked.com" + } + } + + tags = { + Name = "example-user-settings" + } +} diff --git a/terraform/aws/backup/aws_xray_resource_policy.tf b/terraform/aws/backup/aws_xray_resource_policy.tf new file mode 100644 index 00000000..89b3149b --- /dev/null +++ b/terraform/aws/backup/aws_xray_resource_policy.tf @@ -0,0 +1 @@ +resource "aws_xray_resource_policy" "pike" {} diff --git a/terraform/aws/backup/data.aws_account_primary_contact.tf b/terraform/aws/backup/data.aws_account_primary_contact.tf new file mode 100644 index 00000000..16258ee9 --- /dev/null +++ b/terraform/aws/backup/data.aws_account_primary_contact.tf @@ -0,0 +1,6 @@ +data "aws_account_primary_contact" "pike" { +} + +output "aws_account_primary_contact" { + value = data.aws_account_primary_contact.pike +} diff --git a/terraform/aws/backup/data.aws_apigateway_api_keys.tf b/terraform/aws/backup/data.aws_apigateway_api_keys.tf new file mode 100644 index 00000000..cb87e2aa --- /dev/null +++ b/terraform/aws/backup/data.aws_apigateway_api_keys.tf @@ -0,0 +1,6 @@ +data "aws_apigateway_api_keys" "pike" { +} + +output "aws_apigateway_api_keys" { + value = data.aws_apigateway_api_keys.pike +} diff --git a/terraform/aws/backup/data.aws_appconfig_application.tf b/terraform/aws/backup/data.aws_appconfig_application.tf new file mode 100644 index 00000000..c8542521 --- /dev/null +++ b/terraform/aws/backup/data.aws_appconfig_application.tf @@ -0,0 +1,7 @@ +data "aws_appconfig_application" "pike" { + name = "pike" +} + +output "aws_appconfig_application" { + value = data.aws_appconfig_application.pike +} diff --git a/terraform/aws/backup/data.aws_billing_views.tf b/terraform/aws/backup/data.aws_billing_views.tf new file mode 100644 index 00000000..9a26a7b0 --- /dev/null +++ b/terraform/aws/backup/data.aws_billing_views.tf @@ -0,0 +1,6 @@ +data "aws_billing_views" "pike" { +} + +output "aws_billing_views" { + value = data.aws_billing_views.pike +} diff --git a/terraform/aws/backup/data.aws_cloudwatch_contributor_managed_insight_rules.tf b/terraform/aws/backup/data.aws_cloudwatch_contributor_managed_insight_rules.tf new file mode 100644 index 00000000..acc857d3 --- /dev/null +++ b/terraform/aws/backup/data.aws_cloudwatch_contributor_managed_insight_rules.tf @@ -0,0 +1,7 @@ +data "aws_cloudwatch_contributor_managed_insight_rules" "pike" { + resource_arn = "arn:aws:ec2:us-west-2:680235478471:resource-name/resourceid" +} + +output "aws_cloudwatch_contributor_managed_insight_rules" { + value = data.aws_cloudwatch_contributor_managed_insight_rules.pike +} diff --git a/terraform/aws/backup/data.aws_cloudwatch_event_buses.tf b/terraform/aws/backup/data.aws_cloudwatch_event_buses.tf new file mode 100644 index 00000000..e28c97f5 --- /dev/null +++ b/terraform/aws/backup/data.aws_cloudwatch_event_buses.tf @@ -0,0 +1,7 @@ +data "aws_cloudwatch_event_buses" "pike" { + name_prefix = "pike" +} + +output "aws_cloudwatch_event_buses" { + value = data.aws_cloudwatch_event_buses.pike +} diff --git a/terraform/aws/backup/data.aws_datazone_domain.tf b/terraform/aws/backup/data.aws_datazone_domain.tf new file mode 100644 index 00000000..3607278b --- /dev/null +++ b/terraform/aws/backup/data.aws_datazone_domain.tf @@ -0,0 +1,6 @@ +data "aws_datazone_domain" "pike" { +} + +output "aws_datazone_domain" { + value = data.aws_datazone_domain.pike +} diff --git a/terraform/aws/backup/data.aws_dynamodb_tables.tf b/terraform/aws/backup/data.aws_dynamodb_tables.tf new file mode 100644 index 00000000..e7b7b931 --- /dev/null +++ b/terraform/aws/backup/data.aws_dynamodb_tables.tf @@ -0,0 +1,6 @@ +data "aws_dynamodb_tables" "pike" { +} + +output "aws_dynamodb_tables" { + value = data.aws_dynamodb_tables.pike +} diff --git a/terraform/aws/backup/data.aws_ecr_images.tf b/terraform/aws/backup/data.aws_ecr_images.tf new file mode 100644 index 00000000..16082564 --- /dev/null +++ b/terraform/aws/backup/data.aws_ecr_images.tf @@ -0,0 +1,7 @@ +data "aws_ecr_images" "pike" { + repository_name = "pike" +} + +output "aws_ecr_images" { + value = data.aws_ecr_images.pike +} diff --git a/terraform/aws/backup/data.aws_ecrpublic_images.tf b/terraform/aws/backup/data.aws_ecrpublic_images.tf new file mode 100644 index 00000000..65249b2b --- /dev/null +++ b/terraform/aws/backup/data.aws_ecrpublic_images.tf @@ -0,0 +1,8 @@ +data "aws_ecrpublic_images" "pike" { + provider = aws.central + repository_name = "pike" +} + +output "aws_ecrpublic_images" { + value = data.aws_ecrpublic_images.pike +} diff --git a/terraform/aws/backup/data.aws_ecs_clusters.tf b/terraform/aws/backup/data.aws_ecs_clusters.tf new file mode 100644 index 00000000..24deb6cb --- /dev/null +++ b/terraform/aws/backup/data.aws_ecs_clusters.tf @@ -0,0 +1,6 @@ +data "aws_ecs_clusters" "pike" { +} + +output "aws_ecs_clusters" { + value = data.aws_ecs_clusters.pike +} diff --git a/terraform/aws/backup/data.aws_eks_cluster_versions.tf b/terraform/aws/backup/data.aws_eks_cluster_versions.tf new file mode 100644 index 00000000..57e0e5e7 --- /dev/null +++ b/terraform/aws/backup/data.aws_eks_cluster_versions.tf @@ -0,0 +1,6 @@ +data "aws_eks_cluster_versions" "pike" { +} + +output "aws_eks_cluster_versions" { + value = data.aws_eks_cluster_versions.pike +} diff --git a/terraform/aws/backup/data.aws_elb.tf b/terraform/aws/backup/data.aws_elb.tf new file mode 100644 index 00000000..b01909b6 --- /dev/null +++ b/terraform/aws/backup/data.aws_elb.tf @@ -0,0 +1,7 @@ +data "aws_elb" "pike" { + name = "pike" +} + +output "aws_elb" { + value = data.aws_elb.pike +} diff --git a/terraform/aws/backup/data.aws_fis_experiment_templates.tf b/terraform/aws/backup/data.aws_fis_experiment_templates.tf new file mode 100644 index 00000000..ada974eb --- /dev/null +++ b/terraform/aws/backup/data.aws_fis_experiment_templates.tf @@ -0,0 +1,6 @@ +data "aws_fis_experiment_templates" "pike" { +} + +output "aws_fis_experiment_templates" { + value = data.aws_fis_experiment_templates.pike +} diff --git a/terraform/aws/backup/data.aws_identitystore_group_memberships.tf b/terraform/aws/backup/data.aws_identitystore_group_memberships.tf new file mode 100644 index 00000000..dd04780f --- /dev/null +++ b/terraform/aws/backup/data.aws_identitystore_group_memberships.tf @@ -0,0 +1,20 @@ +data "aws_ssoadmin_instances" "example" {} + +data "aws_identitystore_group" "example" { + identity_store_id = tolist(data.aws_ssoadmin_instances.example.identity_store_ids)[0] + + alternate_identifier { + unique_attribute { + attribute_path = "DisplayName" + attribute_value = "ExampleGroup" + } + } +} + +data "aws_identitystore_group_memberships" "pike" { + identity_store_id = tolist(data.aws_ssoadmin_instances.example.identity_store_ids)[0] + group_id = data.aws_identitystore_group.example.group_id +} +output "aws_identitystore_group_memberships" { + value = data.aws_identitystore_group_memberships.pike +} diff --git a/terraform/aws/backup/data.aws_identitystore_users.tf b/terraform/aws/backup/data.aws_identitystore_users.tf new file mode 100644 index 00000000..e2057d1c --- /dev/null +++ b/terraform/aws/backup/data.aws_identitystore_users.tf @@ -0,0 +1,7 @@ + +data "aws_identitystore_users" "pike" { + identity_store_id = tolist(data.aws_ssoadmin_instances.example.identity_store_ids)[0] +} +output "aws_identitystore_users" { + value = data.aws_identitystore_users.pike +} diff --git a/terraform/aws/backup/data.aws_kms_public_key.tf b/terraform/aws/backup/data.aws_kms_public_key.tf new file mode 100644 index 00000000..c238fa31 --- /dev/null +++ b/terraform/aws/backup/data.aws_kms_public_key.tf @@ -0,0 +1,7 @@ +data "aws_kms_public_key" "pike" { + key_id = "03a3077b-1b63-4f42-98a1-20ea7a2fabba" +} + +output "aws_kms_public_key" { + value = data.aws_kms_public_key.pike +} diff --git a/terraform/aws/backup/data.aws_lambda_function_url.tf b/terraform/aws/backup/data.aws_lambda_function_url.tf new file mode 100644 index 00000000..6ea7aea7 --- /dev/null +++ b/terraform/aws/backup/data.aws_lambda_function_url.tf @@ -0,0 +1,7 @@ +data "aws_lambda_function_url" "pike" { + function_name = "pike" +} + +output "aws_lambda_function_url" { + value = data.aws_lambda_function_url.pike +} diff --git a/terraform/aws/backup/data.aws_lambda_functions.tf b/terraform/aws/backup/data.aws_lambda_functions.tf new file mode 100644 index 00000000..39995f46 --- /dev/null +++ b/terraform/aws/backup/data.aws_lambda_functions.tf @@ -0,0 +1,7 @@ +data "aws_lambda_functions" "pike" { + +} + +output "aws_lambda_functions" { + value = data.aws_lambda_functions.pike +} diff --git a/terraform/aws/backup/data.aws_lambda_layer_version.tf b/terraform/aws/backup/data.aws_lambda_layer_version.tf new file mode 100644 index 00000000..f1131dde --- /dev/null +++ b/terraform/aws/backup/data.aws_lambda_layer_version.tf @@ -0,0 +1,7 @@ +data "aws_lambda_layer_version" "pike" { + layer_name = "pike" +} + +output "aws_lambda_layer_version" { + value = data.aws_lambda_layer_version.pike +} diff --git a/terraform/aws/backup/data.aws_media_convert_queue.tf b/terraform/aws/backup/data.aws_media_convert_queue.tf new file mode 100644 index 00000000..658e5239 --- /dev/null +++ b/terraform/aws/backup/data.aws_media_convert_queue.tf @@ -0,0 +1,7 @@ +data "aws_media_convert_queue" "pike" { + id = "pike" +} + +output "aws_media_convert_queue" { + value = data.aws_media_convert_queue.pike +} diff --git a/terraform/aws/backup/data.aws_memorydb_acl.tf b/terraform/aws/backup/data.aws_memorydb_acl.tf new file mode 100644 index 00000000..815bafc1 --- /dev/null +++ b/terraform/aws/backup/data.aws_memorydb_acl.tf @@ -0,0 +1,7 @@ +data "aws_memorydb_acl" "pike" { + name = "pike" +} + +output "aws_memorydb_acl" { + value = data.aws_memorydb_acl.pike +} diff --git a/terraform/aws/backup/data.aws_memorydb_cluster.tf b/terraform/aws/backup/data.aws_memorydb_cluster.tf new file mode 100644 index 00000000..3bae3c0b --- /dev/null +++ b/terraform/aws/backup/data.aws_memorydb_cluster.tf @@ -0,0 +1,7 @@ +data "aws_memorydb_cluster" "pike" { + name = "pike" +} + +output "aws_memorydb_cluster" { + value = data.aws_memorydb_cluster.pike +} diff --git a/terraform/aws/backup/data.aws_memorydb_parameter_group.tf b/terraform/aws/backup/data.aws_memorydb_parameter_group.tf new file mode 100644 index 00000000..2fbcab25 --- /dev/null +++ b/terraform/aws/backup/data.aws_memorydb_parameter_group.tf @@ -0,0 +1,7 @@ +data "aws_memorydb_parameter_group" "pike" { + name = "pike" +} + +output "aws_memorydb_parameter_group" { + value = data.aws_memorydb_parameter_group.pike +} diff --git a/terraform/aws/backup/data.aws_memorydb_snapshot.tf b/terraform/aws/backup/data.aws_memorydb_snapshot.tf new file mode 100644 index 00000000..9d3a1cd0 --- /dev/null +++ b/terraform/aws/backup/data.aws_memorydb_snapshot.tf @@ -0,0 +1,7 @@ +data "aws_memorydb_snapshot" "pike" { + name = "pike" +} + +output "aws_memorydb_snapshot" { + value = data.aws_memorydb_snapshot.pike +} diff --git a/terraform/aws/backup/data.aws_memorydb_subnet_group.tf b/terraform/aws/backup/data.aws_memorydb_subnet_group.tf new file mode 100644 index 00000000..3ba8ea58 --- /dev/null +++ b/terraform/aws/backup/data.aws_memorydb_subnet_group.tf @@ -0,0 +1,7 @@ +data "aws_memorydb_subnet_group" "pike" { + name = "pike" +} + +output "aws_memorydb_subnet_group" { + value = data.aws_memorydb_subnet_group.pike +} diff --git a/terraform/aws/backup/data.aws_memorydb_user.tf b/terraform/aws/backup/data.aws_memorydb_user.tf new file mode 100644 index 00000000..7e65663f --- /dev/null +++ b/terraform/aws/backup/data.aws_memorydb_user.tf @@ -0,0 +1,7 @@ +data "aws_memorydb_user" "pike" { + user_name = "pike" +} + +output "aws_memorydb_user" { + value = data.aws_memorydb_user.pike +} diff --git a/terraform/aws/backup/data.aws_network_interface.tf b/terraform/aws/backup/data.aws_network_interface.tf new file mode 100644 index 00000000..398fd27d --- /dev/null +++ b/terraform/aws/backup/data.aws_network_interface.tf @@ -0,0 +1,6 @@ +data "aws_network_interface" "pike" { +} + +output "aws_network_interface" { + value = data.aws_network_interface.pike +} diff --git a/terraform/aws/backup/data.aws_odb_cloud_autonomous_vm_cluster.tf b/terraform/aws/backup/data.aws_odb_cloud_autonomous_vm_cluster.tf new file mode 100644 index 00000000..bff3a5c2 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_cloud_autonomous_vm_cluster.tf @@ -0,0 +1,7 @@ +data "aws_odb_cloud_autonomous_vm_cluster" "pike" { + id = "pike" +} + +output "aws_odb_cloud_autonomous_vm_cluster" { + value = data.aws_odb_cloud_autonomous_vm_cluster.pike +} diff --git a/terraform/aws/backup/data.aws_odb_cloud_autonomous_vm_clusters.tf b/terraform/aws/backup/data.aws_odb_cloud_autonomous_vm_clusters.tf new file mode 100644 index 00000000..ecd34ea9 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_cloud_autonomous_vm_clusters.tf @@ -0,0 +1,6 @@ +data "aws_odb_cloud_autonomous_vm_clusters" "pike" { +} + +output "aws_odb_cloud_autonomous_vm_clusters" { + value = data.aws_odb_cloud_autonomous_vm_clusters.pike +} diff --git a/terraform/aws/backup/data.aws_odb_cloud_exadata_infrastructure.tf b/terraform/aws/backup/data.aws_odb_cloud_exadata_infrastructure.tf new file mode 100644 index 00000000..17bf23f2 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_cloud_exadata_infrastructure.tf @@ -0,0 +1,7 @@ +data "aws_odb_cloud_exadata_infrastructure" "pike" { + id = "pike" +} + +output "aws_odb_cloud_exadata_infrastructure" { + value = data.aws_odb_cloud_exadata_infrastructure.pike +} diff --git a/terraform/aws/backup/data.aws_odb_cloud_exadata_infrastructures.tf b/terraform/aws/backup/data.aws_odb_cloud_exadata_infrastructures.tf new file mode 100644 index 00000000..5cda9dee --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_cloud_exadata_infrastructures.tf @@ -0,0 +1,6 @@ +data "aws_odb_cloud_exadata_infrastructures" "pike" { +} + +output "aws_odb_cloud_exadata_infrastructures" { + value = data.aws_odb_cloud_exadata_infrastructures.pike +} diff --git a/terraform/aws/backup/data.aws_odb_cloud_vm_cluster.tf b/terraform/aws/backup/data.aws_odb_cloud_vm_cluster.tf new file mode 100644 index 00000000..cf3e715f --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_cloud_vm_cluster.tf @@ -0,0 +1,7 @@ +data "aws_odb_cloud_vm_cluster" "pike" { + id = "pike" +} + +output "aws_odb_cloud_vm_cluster" { + value = data.aws_odb_cloud_vm_cluster.pike +} diff --git a/terraform/aws/backup/data.aws_odb_cloud_vm_clusters.tf b/terraform/aws/backup/data.aws_odb_cloud_vm_clusters.tf new file mode 100644 index 00000000..dd023656 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_cloud_vm_clusters.tf @@ -0,0 +1,6 @@ +data "aws_odb_cloud_vm_clusters" "pike" { +} + +output "aws_odb_cloud_vm_clusters" { + value = data.aws_odb_cloud_vm_clusters.pike +} diff --git a/terraform/aws/backup/data.aws_odb_db_node.tf b/terraform/aws/backup/data.aws_odb_db_node.tf new file mode 100644 index 00000000..961dc303 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_db_node.tf @@ -0,0 +1,8 @@ +data "aws_odb_db_node" "pike" { + cloud_vm_cluster_id = "pike" + id = "pike" +} + +output "aws_odb_db_node" { + value = data.aws_odb_db_node.pike +} diff --git a/terraform/aws/backup/data.aws_odb_db_nodes.tf b/terraform/aws/backup/data.aws_odb_db_nodes.tf new file mode 100644 index 00000000..b258f147 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_db_nodes.tf @@ -0,0 +1,7 @@ +data "aws_odb_db_nodes" "pike" { + cloud_vm_cluster_id = "pike" +} + +output "aws_odb_db_nodes" { + value = data.aws_odb_db_nodes.pike +} diff --git a/terraform/aws/backup/data.aws_odb_db_server.tf b/terraform/aws/backup/data.aws_odb_db_server.tf new file mode 100644 index 00000000..94202db0 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_db_server.tf @@ -0,0 +1,8 @@ +data "aws_odb_db_server" "pike" { + id = "pike" + cloud_exadata_infrastructure_id = "pike" +} + +output "aws_odb_db_server" { + value = data.aws_odb_db_server.pike +} diff --git a/terraform/aws/backup/data.aws_odb_db_servers.tf b/terraform/aws/backup/data.aws_odb_db_servers.tf new file mode 100644 index 00000000..ddb1cd3d --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_db_servers.tf @@ -0,0 +1,7 @@ +data "aws_odb_db_servers" "pike" { + cloud_exadata_infrastructure_id = "pike" +} + +output "aws_odb_db_servers" { + value = data.aws_odb_db_servers.pike +} diff --git a/terraform/aws/backup/data.aws_odb_db_system_shapes.tf b/terraform/aws/backup/data.aws_odb_db_system_shapes.tf new file mode 100644 index 00000000..5f9c5721 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_db_system_shapes.tf @@ -0,0 +1,6 @@ +data "aws_odb_db_system_shapes" "pike" { +} + +output "aws_odb_db_system_shapes" { + value = data.aws_odb_db_system_shapes.pike +} diff --git a/terraform/aws/backup/data.aws_odb_gi_versions.tf b/terraform/aws/backup/data.aws_odb_gi_versions.tf new file mode 100644 index 00000000..a51be88f --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_gi_versions.tf @@ -0,0 +1,6 @@ +data "aws_odb_gi_versions" "pike" { +} + +output "aws_odb_gi_versions" { + value = data.aws_odb_gi_versions.pike +} diff --git a/terraform/aws/backup/data.aws_odb_network.tf b/terraform/aws/backup/data.aws_odb_network.tf new file mode 100644 index 00000000..89fa0143 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_network.tf @@ -0,0 +1,7 @@ +data "aws_odb_network" "pike" { + id = "pike" +} + +output "aws_odb_network" { + value = data.aws_odb_network.pike +} diff --git a/terraform/aws/backup/data.aws_odb_network_peering_connection.tf b/terraform/aws/backup/data.aws_odb_network_peering_connection.tf new file mode 100644 index 00000000..404a8924 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_network_peering_connection.tf @@ -0,0 +1,7 @@ +data "aws_odb_network_peering_connection" "pike" { + id = "pike" +} + +output "aws_odb_network_peering_connection" { + value = data.aws_odb_network_peering_connection.pike +} diff --git a/terraform/aws/backup/data.aws_odb_network_peering_connections.tf b/terraform/aws/backup/data.aws_odb_network_peering_connections.tf new file mode 100644 index 00000000..a65eab5b --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_network_peering_connections.tf @@ -0,0 +1,7 @@ +data "aws_odb_network_peering_connections" "pike" { + +} + +output "aws_odb_network_peering_connections" { + value = data.aws_odb_network_peering_connections.pike +} diff --git a/terraform/aws/backup/data.aws_odb_networks.tf b/terraform/aws/backup/data.aws_odb_networks.tf new file mode 100644 index 00000000..8502efe9 --- /dev/null +++ b/terraform/aws/backup/data.aws_odb_networks.tf @@ -0,0 +1,6 @@ +data "aws_odb_networks" "pike" { +} + +output "aws_odb_networks" { + value = data.aws_odb_networks.pike +} diff --git a/terraform/aws/backup/data.aws_rds_global_cluster.tf b/terraform/aws/backup/data.aws_rds_global_cluster.tf new file mode 100644 index 00000000..98ed1416 --- /dev/null +++ b/terraform/aws/backup/data.aws_rds_global_cluster.tf @@ -0,0 +1,7 @@ +data "aws_rds_global_cluster" "pike" { + identifier = "pike" +} + +output "aws_rds_global_cluster" { + value = data.aws_rds_global_cluster.pike +} diff --git a/terraform/aws/backup/data.aws_route53_records.tf b/terraform/aws/backup/data.aws_route53_records.tf new file mode 100644 index 00000000..2d0cf220 --- /dev/null +++ b/terraform/aws/backup/data.aws_route53_records.tf @@ -0,0 +1,7 @@ +data "aws_route53_records" "pike" { + zone_id = "Z0613304D03LG1SU5BI" +} + +output "aws_route53_records" { + value = data.aws_route53_records.pike +} diff --git a/terraform/aws/backup/data.aws_s3_access_point.tf b/terraform/aws/backup/data.aws_s3_access_point.tf new file mode 100644 index 00000000..207a80f6 --- /dev/null +++ b/terraform/aws/backup/data.aws_s3_access_point.tf @@ -0,0 +1,7 @@ +data "aws_s3_access_point" "pike" { + name = "pike" +} + +output "aws_s3_access_point" { + value = data.aws_s3_access_point.pike +} diff --git a/terraform/aws/backup/data.aws_securityhub_standards_control_associations.tf b/terraform/aws/backup/data.aws_securityhub_standards_control_associations.tf new file mode 100644 index 00000000..9a3f4cd0 --- /dev/null +++ b/terraform/aws/backup/data.aws_securityhub_standards_control_associations.tf @@ -0,0 +1,7 @@ +data "aws_securityhub_standards_control_associations" "pike" { + security_control_id = "pike" +} + +output "aws_securityhub_standards_control_associations" { + value = data.aws_securityhub_standards_control_associations.pike +} diff --git a/terraform/aws/backup/data.aws_vpc_endpoint_associations.tf b/terraform/aws/backup/data.aws_vpc_endpoint_associations.tf new file mode 100644 index 00000000..95db715d --- /dev/null +++ b/terraform/aws/backup/data.aws_vpc_endpoint_associations.tf @@ -0,0 +1,7 @@ +data "aws_vpc_endpoint_associations" "pike" { + vpc_endpoint_id = "lskdfhaksjdfb" +} + +output "aws_vpc_endpoint_associations" { + value = data.aws_vpc_endpoint_associations.pike +} diff --git a/terraform/aws/backup/data.aws_vpc_ipam.tf b/terraform/aws/backup/data.aws_vpc_ipam.tf new file mode 100644 index 00000000..b9a88e5b --- /dev/null +++ b/terraform/aws/backup/data.aws_vpc_ipam.tf @@ -0,0 +1,7 @@ +data "aws_vpc_ipam" "pike" { + id = "ipam-abcd1234" +} + +output "aws_vpc_ipam" { + value = data.aws_vpc_ipam.pike +} diff --git a/terraform/aws/backup/data.aws_vpc_ipams.tf b/terraform/aws/backup/data.aws_vpc_ipams.tf new file mode 100644 index 00000000..99649dc8 --- /dev/null +++ b/terraform/aws/backup/data.aws_vpc_ipams.tf @@ -0,0 +1,6 @@ +data "aws_vpc_ipams" "pike" { +} + +output "aws_vpc_ipams" { + value = data.aws_vpc_ipams.pike +} diff --git a/terraform/aws/backup/data.aws_vpn_connection.tf b/terraform/aws/backup/data.aws_vpn_connection.tf new file mode 100644 index 00000000..2dfc552c --- /dev/null +++ b/terraform/aws/backup/data.aws_vpn_connection.tf @@ -0,0 +1,7 @@ +data "aws_vpn_connection" "pike" { + vpn_connection_id = "pike" +} + +output "aws_vpn_connection" { + value = data.aws_vpn_connection.pike +} diff --git a/terraform/aws/backup/data.aws_waf_subscribed_rule_group.tf b/terraform/aws/backup/data.aws_waf_subscribed_rule_group.tf new file mode 100644 index 00000000..076d1564 --- /dev/null +++ b/terraform/aws/backup/data.aws_waf_subscribed_rule_group.tf @@ -0,0 +1,7 @@ +data "aws_waf_subscribed_rule_group" "pike" { + name = "F5 Bot Detection Signatures For AWS WAF" +} + +output "aws_waf_subscribed_rule_group" { + value = data.aws_waf_subscribed_rule_group.pike +} diff --git a/terraform/aws/backup/data.aws_wafregional_subscribed_rule_group.tf b/terraform/aws/backup/data.aws_wafregional_subscribed_rule_group.tf new file mode 100644 index 00000000..cf39f20f --- /dev/null +++ b/terraform/aws/backup/data.aws_wafregional_subscribed_rule_group.tf @@ -0,0 +1,7 @@ +data "aws_wafregional_subscribed_rule_group" "pike" { + name = "F5 Bot Detection Signatures For AWS WAF" +} + +output "aws_wafregional_subscribed_rule_group" { + value = data.aws_wafregional_subscribed_rule_group.pike +} diff --git a/terraform/aws/backup/data.aws_workspaces_workspace.tf b/terraform/aws/backup/data.aws_workspaces_workspace.tf new file mode 100644 index 00000000..675ac913 --- /dev/null +++ b/terraform/aws/backup/data.aws_workspaces_workspace.tf @@ -0,0 +1,8 @@ +data "aws_workspaces_workspace" "pike" { + workspace_id = "ws-cj5xcxsz5" +} + + +output "aws_workspaces_workspace" { + value = data.aws_workspaces_workspace.pike +} diff --git a/terraform/aws/provider.aws.tf b/terraform/aws/provider.aws.tf index 3492b0e0..6f6fb5e9 100644 --- a/terraform/aws/provider.aws.tf +++ b/terraform/aws/provider.aws.tf @@ -27,3 +27,12 @@ provider "aws" { region = "eu-west-1" profile = "basic" } + +# terraform { +# required_providers { +# aws = { +# source = "hashicorp/aws" +# version = "6.0.0-beta1" +# } +# } +# } diff --git a/terraform/aws/role/aws_iam_policy.basic.tf b/terraform/aws/role/aws_iam_policy.basic.tf index 23201565..725dd39a 100644 --- a/terraform/aws/role/aws_iam_policy.basic.tf +++ b/terraform/aws/role/aws_iam_policy.basic.tf @@ -7,7 +7,13 @@ resource "aws_iam_policy" "basic" { "Sid" : "VisualEditor0", "Effect" : "Allow", "Action" : [ - "servicecatalog:GetAttributeGroup", + //aws_vpn_connection + "ec2:DescribeVpnConnections", + //aws_rds_global_cluster + "rds:DescribeGlobalClusters", + //aws_ecrpublic_images + "ecr-public:DescribeImages" + ], "Resource" : [ "*" diff --git a/terraform/aws/role/output.tf b/terraform/aws/role/output.tf index 35074660..30bc2758 100644 --- a/terraform/aws/role/output.tf +++ b/terraform/aws/role/output.tf @@ -1,3 +1,3 @@ -output "role" { - value = aws_iam_role.basic -} +output "role" { + value = aws_iam_role.basic +} diff --git a/terraform/google/Makefile b/terraform/google/Makefile index d86687be..72076f5f 100644 --- a/terraform/google/Makefile +++ b/terraform/google/Makefile @@ -4,21 +4,27 @@ clean: -rm terraform.tfstate -rm terraform.tfstate.backup apply: init - terraform apply -auto-approve + tofu apply -auto-approve plan: init - terraform plan + tofu plan destroy: init - terraform destroy -auto-approve + tofu destroy -auto-approve init: - terraform init + tofu init + +upgrade: + tofu init --upgrade role: FORCE - GOOGLE_CLOUD_KEYFILE_JSON="" terraform -chdir=./role apply -auto-approve + GOOGLE_CLOUD_KEYFILE_JSON="" tofu -chdir=./role apply -auto-approve role_init: - GOOGLE_CLOUD_KEYFILE_JSON="" terraform -chdir=./role init + GOOGLE_CLOUD_KEYFILE_JSON="" tofu -chdir=./role init + +scan: + GCP_PROJECT=pike-412922 pike scan -w -i -e -d ./ -outfile "./role/google_project_iam_custom_role.tf" -policyName terraform_pike FORCE: diff --git a/terraform/google/backup/data.google_access_context_manager_access_policy.tf b/terraform/google/backup/data.google_access_context_manager_access_policy.tf new file mode 100644 index 00000000..95b91f53 --- /dev/null +++ b/terraform/google/backup/data.google_access_context_manager_access_policy.tf @@ -0,0 +1,6 @@ +data "google_access_context_manager_access_policy" "pike" { +} + +output "google_access_context_manager_access_policy" { + value = data.google_access_context_manager_access_policy.pike +} diff --git a/terraform/google/backup/data.google_alloydb_cluster.tf b/terraform/google/backup/data.google_alloydb_cluster.tf new file mode 100644 index 00000000..6d7ac115 --- /dev/null +++ b/terraform/google/backup/data.google_alloydb_cluster.tf @@ -0,0 +1,7 @@ +data "google_alloydb_cluster" "pike" { + cluster_id = "pike" +} + +output "google_alloydb_cluster" { + value = data.google_alloydb_cluster.pike +} diff --git a/terraform/google/backup/data.google_alloydb_instance.tf b/terraform/google/backup/data.google_alloydb_instance.tf new file mode 100644 index 00000000..23d87f94 --- /dev/null +++ b/terraform/google/backup/data.google_alloydb_instance.tf @@ -0,0 +1,9 @@ +data "google_alloydb_instance" "pike" { + instance_id = "pike" + location = "us-central1" + cluster_id = "pike" +} + +output "google_alloydb_instance" { + value = data.google_alloydb_instance.pike +} diff --git a/terraform/google/backup/data.google_apphub_application.tf b/terraform/google/backup/data.google_apphub_application.tf new file mode 100644 index 00000000..e23c0798 --- /dev/null +++ b/terraform/google/backup/data.google_apphub_application.tf @@ -0,0 +1,9 @@ +data "google_apphub_application" "pike" { + location = "us-central1" + application_id = "pike" + project = "pike-412922" +} + +output "google_apphub_application" { + value = data.google_apphub_application.pike +} diff --git a/terraform/google/backup/data.google_apphub_discovered_service.tf b/terraform/google/backup/data.google_apphub_discovered_service.tf new file mode 100644 index 00000000..e838ef6e --- /dev/null +++ b/terraform/google/backup/data.google_apphub_discovered_service.tf @@ -0,0 +1,8 @@ +data "google_apphub_discovered_service" "pike" { + location = "us-central1" + service_uri = "/compute.googleapis.com/projects/1/regions/us-east1/instanceGroups/id1" +} + +output "google_apphub_discovered_service" { + value = data.google_apphub_discovered_service.pike +} diff --git a/terraform/google/backup/data.google_apphub_discovered_workload.tf b/terraform/google/backup/data.google_apphub_discovered_workload.tf new file mode 100644 index 00000000..ac695f2d --- /dev/null +++ b/terraform/google/backup/data.google_apphub_discovered_workload.tf @@ -0,0 +1,8 @@ +data "google_apphub_discovered_workload" "pike" { + location = "us-central1" + workload_uri = "/compute.googleapis.com/projects/1/regions/us-east1/instanceGroups/id1" +} + +output "google_apphub_discovered_workload" { + value = data.google_apphub_discovered_workload.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_docker_image.tf b/terraform/google/backup/data.google_artifact_registry_docker_image.tf new file mode 100644 index 00000000..cbe6896e --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_docker_image.tf @@ -0,0 +1,9 @@ +data "google_artifact_registry_docker_image" "pike" { + location = "us-central1" + repository_id = "pike" + image_name = "pike" +} + +output "google_artifact_registry_docker_image" { + value = data.google_artifact_registry_docker_image.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_docker_images.tf b/terraform/google/backup/data.google_artifact_registry_docker_images.tf new file mode 100644 index 00000000..10f9e8eb --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_docker_images.tf @@ -0,0 +1,6 @@ +data "google_artifact_registry_docker_images" "pike" { +} + +output "google_artifact_registry_docker_images" { + value = data.google_artifact_registry_docker_images.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_locations.tf b/terraform/google/backup/data.google_artifact_registry_locations.tf new file mode 100644 index 00000000..cfe5de96 --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_locations.tf @@ -0,0 +1,6 @@ +data "google_artifact_registry_locations" "pike" { +} + +output "google_artifact_registry_locations" { + value = data.google_artifact_registry_locations.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_maven_artifact.tf b/terraform/google/backup/data.google_artifact_registry_maven_artifact.tf new file mode 100644 index 00000000..d965f619 --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_maven_artifact.tf @@ -0,0 +1,10 @@ +data "google_artifact_registry_maven_artifact" "pike" { + artifact_id = "pike" + group_id = "pike" + location = "pike" + repository_id = "pike" +} + +output "google_artifact_registry_maven_artifact" { + value = data.google_artifact_registry_maven_artifact.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_maven_artifacts.tf b/terraform/google/backup/data.google_artifact_registry_maven_artifacts.tf new file mode 100644 index 00000000..0195402d --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_maven_artifacts.tf @@ -0,0 +1,8 @@ +data "google_artifact_registry_maven_artifacts" "pike" { + repository_id = "pike" + location = "us-central1" +} + +output "google_artifact_registry_maven_artifacts" { + value = data.google_artifact_registry_maven_artifacts.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_npm_package.tf b/terraform/google/backup/data.google_artifact_registry_npm_package.tf new file mode 100644 index 00000000..c0bddb77 --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_npm_package.tf @@ -0,0 +1,7 @@ +data "google_artifact_registry_npm_package" "pike" { + provider = google-beta +} + +output "google_artifact_registry_npm_package" { + value = data.google_artifact_registry_npm_package.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_npm_packages.tf b/terraform/google/backup/data.google_artifact_registry_npm_packages.tf new file mode 100644 index 00000000..2fcce935 --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_npm_packages.tf @@ -0,0 +1,8 @@ +data "google_artifact_registry_npm_packages" "pike" { + repository_id = "pike" + location = "us-central1" +} + +output "google_artifact_registry_npm_packages" { + value = data.google_artifact_registry_npm_packages.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_packages.tf b/terraform/google/backup/data.google_artifact_registry_packages.tf new file mode 100644 index 00000000..c630d612 --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_packages.tf @@ -0,0 +1,8 @@ +data "google_artifact_registry_packages" "pike" { + location = "us-central1" + repository_id = "pike" +} + +output "google_artifact_registry_packages" { + value = data.google_artifact_registry_packages.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_python_package.tf b/terraform/google/backup/data.google_artifact_registry_python_package.tf new file mode 100644 index 00000000..b50c5b18 --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_python_package.tf @@ -0,0 +1,9 @@ +data "google_artifact_registry_python_package" "pike" { + package_name = "pike" + repository_id = "pike" + location = "us-central1" +} + +output "google_artifact_registry_python_package" { + value = data.google_artifact_registry_python_package.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_repositories.tf b/terraform/google/backup/data.google_artifact_registry_repositories.tf new file mode 100644 index 00000000..a88a0cab --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_repositories.tf @@ -0,0 +1,7 @@ +data "google_artifact_registry_repositories" "pike" { + location = "us-central1" +} + +output "google_artifact_registry_repositories" { + value = data.google_artifact_registry_repositories.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_tags.tf b/terraform/google/backup/data.google_artifact_registry_tags.tf new file mode 100644 index 00000000..66f107e8 --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_tags.tf @@ -0,0 +1,9 @@ +data "google_artifact_registry_tags" "pike" { + location = "us-central1" + package_name = "pike" + repository_id = "pike" +} + +output "google_artifact_registry_tags" { + value = data.google_artifact_registry_tags.pike +} diff --git a/terraform/google/backup/data.google_artifact_registry_versions.tf b/terraform/google/backup/data.google_artifact_registry_versions.tf new file mode 100644 index 00000000..3dc2b3a1 --- /dev/null +++ b/terraform/google/backup/data.google_artifact_registry_versions.tf @@ -0,0 +1,10 @@ +data "google_artifact_registry_version" "pike" { + location = "us-central1" + repository_id = "pike" + package_name = "pike" + version_name = "pike" +} + +output "google_artifact_registry_version" { + value = data.google_artifact_registry_version.pike +} diff --git a/terraform/google/backup/data.google_backup_dr_backup.tf b/terraform/google/backup/data.google_backup_dr_backup.tf new file mode 100644 index 00000000..45aea388 --- /dev/null +++ b/terraform/google/backup/data.google_backup_dr_backup.tf @@ -0,0 +1,10 @@ +data "google_backup_dr_backup" "pike" { + location = "us-central1" + project = "pike-412922" + data_source_id = "pike" + backup_vault_id = "pike" +} + +output "google_backup_dr_backup" { + value = data.google_backup_dr_backup.pike +} diff --git a/terraform/google/backup/data.google_backup_dr_backup_plan_association.tf b/terraform/google/backup/data.google_backup_dr_backup_plan_association.tf new file mode 100644 index 00000000..47221cb7 --- /dev/null +++ b/terraform/google/backup/data.google_backup_dr_backup_plan_association.tf @@ -0,0 +1,8 @@ +data "google_backup_dr_backup_plan_association" "pike" { + location = "us-central1" + backup_plan_association_id = "pike" +} + +output "google_backup_dr_backup_plan_association" { + value = data.google_backup_dr_backup_plan_association.pike +} diff --git a/terraform/google/backup/data.google_backup_dr_backup_plan_associations.tf b/terraform/google/backup/data.google_backup_dr_backup_plan_associations.tf new file mode 100644 index 00000000..5a074e67 --- /dev/null +++ b/terraform/google/backup/data.google_backup_dr_backup_plan_associations.tf @@ -0,0 +1,8 @@ +data "google_backup_dr_backup_plan_associations" "pike" { + resource_type = "sqladmin.googleapis.com/Instance" + location = "us-central1" +} + +output "google_backup_dr_backup_plan_associations" { + value = data.google_backup_dr_backup_plan_associations.pike +} diff --git a/terraform/google/backup/data.google_backup_dr_backup_vault.tf b/terraform/google/backup/data.google_backup_dr_backup_vault.tf new file mode 100644 index 00000000..2f7d6873 --- /dev/null +++ b/terraform/google/backup/data.google_backup_dr_backup_vault.tf @@ -0,0 +1,8 @@ +data "google_backup_dr_backup_vault" "pike" { + location = "us-central1" + backup_vault_id = "pike" +} + +output "google_backup_dr_backup_vault" { + value = data.google_backup_dr_backup_vault.pike +} diff --git a/terraform/google/backup/data.google_backup_dr_data_source.tf b/terraform/google/backup/data.google_backup_dr_data_source.tf new file mode 100644 index 00000000..f55f5324 --- /dev/null +++ b/terraform/google/backup/data.google_backup_dr_data_source.tf @@ -0,0 +1,10 @@ +data "google_backup_dr_data_source" "pike" { + location = "us-central1" + project = "pike-412922" + data_source_id = "pike" + backup_vault_id = "pike" +} + +output "google_backup_dr_data_source" { + value = data.google_backup_dr_data_source.pike +} diff --git a/terraform/google/backup/data.google_backup_dr_data_source_reference.tf b/terraform/google/backup/data.google_backup_dr_data_source_reference.tf new file mode 100644 index 00000000..d10297bd --- /dev/null +++ b/terraform/google/backup/data.google_backup_dr_data_source_reference.tf @@ -0,0 +1,8 @@ +data "google_backup_dr_data_source_reference" "pike" { + data_source_reference_id = "pike" + location = "us-central1" +} + +output "google_backup_dr_data_source_reference" { + value = data.google_backup_dr_data_source_reference.pike +} diff --git a/terraform/google/backup/data.google_backup_dr_data_source_references.tf b/terraform/google/backup/data.google_backup_dr_data_source_references.tf new file mode 100644 index 00000000..a30403fd --- /dev/null +++ b/terraform/google/backup/data.google_backup_dr_data_source_references.tf @@ -0,0 +1,8 @@ +data "google_backup_dr_data_source_references" "pike" { + location = "us-central1" + resource_type = "sqladmin.googleapis.com/Instance" +} + +output "google_backup_dr_data_source_references" { + value = data.google_backup_dr_data_source_references.pike +} diff --git a/terraform/google/backup/data.google_beyondcorp_application_iam_policy.tf b/terraform/google/backup/data.google_beyondcorp_application_iam_policy.tf new file mode 100644 index 00000000..dcd9edc0 --- /dev/null +++ b/terraform/google/backup/data.google_beyondcorp_application_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_beyondcorp_application_iam_policy" "pike" { + security_gateways_id = "pike" + application_id = "pike" +} + +output "google_beyondcorp_application_iam_policy" { + value = data.google_beyondcorp_application_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_beyondcorp_security_gateway.tf b/terraform/google/backup/data.google_beyondcorp_security_gateway.tf new file mode 100644 index 00000000..7c596c30 --- /dev/null +++ b/terraform/google/backup/data.google_beyondcorp_security_gateway.tf @@ -0,0 +1,8 @@ +data "google_beyondcorp_security_gateway" "pike" { + security_gateway_id = "pike" + +} + +output "google_beyondcorp_security_gateway" { + value = data.google_beyondcorp_security_gateway.pike +} diff --git a/terraform/google/backup/data.google_beyondcorp_security_gateway_application_iam_policy.tf b/terraform/google/backup/data.google_beyondcorp_security_gateway_application_iam_policy.tf new file mode 100644 index 00000000..05aad362 --- /dev/null +++ b/terraform/google/backup/data.google_beyondcorp_security_gateway_application_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_beyondcorp_security_gateway_application_iam_policy" "pike" { + application_id = "pike" + security_gateway_id = "pike" +} + +output "google_beyondcorp_security_gateway_application_iam_policy" { + value = data.google_beyondcorp_security_gateway_application_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_beyondcorp_security_gateway_iam_policy.tf b/terraform/google/backup/data.google_beyondcorp_security_gateway_iam_policy.tf new file mode 100644 index 00000000..32dcb008 --- /dev/null +++ b/terraform/google/backup/data.google_beyondcorp_security_gateway_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_beyondcorp_security_gateway_iam_policy" "pike" { + security_gateway_id = "pike" + location = "us-central1" +} + +output "google_beyondcorp_security_gateway_iam_policy" { + value = data.google_beyondcorp_security_gateway_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_bigquery_datapolicyv2_data_policy_iam_policy.tf b/terraform/google/backup/data.google_bigquery_datapolicyv2_data_policy_iam_policy.tf new file mode 100644 index 00000000..8b59f726 --- /dev/null +++ b/terraform/google/backup/data.google_bigquery_datapolicyv2_data_policy_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_bigquery_datapolicyv2_data_policy_iam_policy" "pike" { + data_policy_id = "pike" +} + +output "google_bigquery_datapolicyv2_data_policy_iam_policy" { + value = data.google_bigquery_datapolicyv2_data_policy_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_bigquery_dataset.tf b/terraform/google/backup/data.google_bigquery_dataset.tf index 7274d5bb..3fba3de1 100644 --- a/terraform/google/backup/data.google_bigquery_dataset.tf +++ b/terraform/google/backup/data.google_bigquery_dataset.tf @@ -1,4 +1,4 @@ data "google_bigquery_dataset" "pike" { dataset_id = "my-bq-dataset" - project = "pike-gcp" + project = "pike" } diff --git a/terraform/google/backup/data.google_bigquery_datasets.tf b/terraform/google/backup/data.google_bigquery_datasets.tf new file mode 100644 index 00000000..f2b66eee --- /dev/null +++ b/terraform/google/backup/data.google_bigquery_datasets.tf @@ -0,0 +1,6 @@ +data "google_bigquery_datasets" "pike" { +} + +output "google_bigquery_datasets" { + value = data.google_bigquery_datasets.pike +} diff --git a/terraform/google/backup/data.google_bigquery_table.tf b/terraform/google/backup/data.google_bigquery_table.tf new file mode 100644 index 00000000..c83629b0 --- /dev/null +++ b/terraform/google/backup/data.google_bigquery_table.tf @@ -0,0 +1,8 @@ +data "google_bigquery_table" "pike" { + table_id = "pike" + dataset_id = "pike" +} + +output "google_bigquery_table" { + value = data.google_bigquery_table.pike +} diff --git a/terraform/google/backup/data.google_bigquery_tables.tf b/terraform/google/backup/data.google_bigquery_tables.tf new file mode 100644 index 00000000..f17ca9ae --- /dev/null +++ b/terraform/google/backup/data.google_bigquery_tables.tf @@ -0,0 +1,7 @@ +data "google_bigquery_tables" "pike" { + dataset_id = "pike" +} + +output "google_bigquery_tables" { + value = data.google_bigquery_tables.pike +} diff --git a/terraform/google/backup/data.google_certificate_manager_certificates.tf b/terraform/google/backup/data.google_certificate_manager_certificates.tf new file mode 100644 index 00000000..c43bfba8 --- /dev/null +++ b/terraform/google/backup/data.google_certificate_manager_certificates.tf @@ -0,0 +1,6 @@ +data "google_certificate_manager_certificates" "pike" { +} + +output "google_certificate_manager_certificates" { + value = data.google_certificate_manager_certificates.pike +} diff --git a/terraform/google/backup/data.google_certificate_manager_dns_authorization.tf b/terraform/google/backup/data.google_certificate_manager_dns_authorization.tf new file mode 100644 index 00000000..7f14e64e --- /dev/null +++ b/terraform/google/backup/data.google_certificate_manager_dns_authorization.tf @@ -0,0 +1,7 @@ +data "google_certificate_manager_dns_authorization" "pike" { + provider = google-beta +} + +output "google_certificate_manager_dns_authorization" { + value = data.google_certificate_manager_dns_authorization.pike +} diff --git a/terraform/google/backup/data.google_cloud_identity_group_transitive_memberships.tf b/terraform/google/backup/data.google_cloud_identity_group_transitive_memberships.tf new file mode 100644 index 00000000..7cd12094 --- /dev/null +++ b/terraform/google/backup/data.google_cloud_identity_group_transitive_memberships.tf @@ -0,0 +1,7 @@ +data "google_cloud_identity_group_transitive_memberships" "pike" { + group = "pike" +} + +output "google_cloud_identity_group_transitive_memberships" { + value = data.google_cloud_identity_group_transitive_memberships.pike +} diff --git a/terraform/google/backup/data.google_cloud_quotas_quota_info.tf b/terraform/google/backup/data.google_cloud_quotas_quota_info.tf new file mode 100644 index 00000000..511d0339 --- /dev/null +++ b/terraform/google/backup/data.google_cloud_quotas_quota_info.tf @@ -0,0 +1,9 @@ +data "google_cloud_quotas_quota_info" "pike" { + parent = "pike" + quota_id = "pike" + service = "pike" +} + +output "google_cloud_quotas_quota_info" { + value = data.google_cloud_quotas_quota_info.pike +} diff --git a/terraform/google/backup/data.google_cloud_quotas_quota_infos.tf b/terraform/google/backup/data.google_cloud_quotas_quota_infos.tf new file mode 100644 index 00000000..f7040373 --- /dev/null +++ b/terraform/google/backup/data.google_cloud_quotas_quota_infos.tf @@ -0,0 +1,8 @@ +data "google_cloud_quotas_quota_infos" "pike" { + service = "pike" + parent = "pike" +} + +output "google_cloud_quotas_quota_infos" { + value = data.google_cloud_quotas_quota_infos.pike +} diff --git a/terraform/google/backup/data.google_cloud_run_v2_job.tf b/terraform/google/backup/data.google_cloud_run_v2_job.tf index 3fe34617..8a538448 100644 --- a/terraform/google/backup/data.google_cloud_run_v2_job.tf +++ b/terraform/google/backup/data.google_cloud_run_v2_job.tf @@ -1,7 +1,7 @@ data "google_cloud_run_v2_job" "pike" { provider = google-beta name = "pike" - project = "pike-gcp" + project = "pike" location = "europe-west2" } diff --git a/terraform/google/backup/data.google_cloud_run_v2_service.tf b/terraform/google/backup/data.google_cloud_run_v2_service.tf index 45fc2b18..e0f517d3 100644 --- a/terraform/google/backup/data.google_cloud_run_v2_service.tf +++ b/terraform/google/backup/data.google_cloud_run_v2_service.tf @@ -1,7 +1,7 @@ data "google_cloud_run_v2_service" "pike" { provider = google-beta name = "pike" - project = "pike-gcp" + project = "pike" location = "europe-west2" } diff --git a/terraform/google/backup/data.google_cloud_run_v2_worker_pool.tf b/terraform/google/backup/data.google_cloud_run_v2_worker_pool.tf new file mode 100644 index 00000000..5b3f1cb7 --- /dev/null +++ b/terraform/google/backup/data.google_cloud_run_v2_worker_pool.tf @@ -0,0 +1,8 @@ +data "google_cloud_run_v2_worker_pool" "pike" { + name = "pike" + location = "us-central1" +} + +output "google_cloud_run_v2_worker_pool" { + value = data.google_cloud_run_v2_worker_pool.pike +} diff --git a/terraform/google/backup/data.google_cloud_run_v2_worker_pool_iam_policy.tf b/terraform/google/backup/data.google_cloud_run_v2_worker_pool_iam_policy.tf new file mode 100644 index 00000000..59766abb --- /dev/null +++ b/terraform/google/backup/data.google_cloud_run_v2_worker_pool_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_cloud_run_v2_worker_pool_iam_policy" "pike" { + name = "pike" +} + +output "google_cloud_run_v2_worker_pool_iam_policy" { + value = data.google_cloud_run_v2_worker_pool_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_cloudbuild_trigger.tf b/terraform/google/backup/data.google_cloudbuild_trigger.tf index d5596f8c..50127fd8 100644 --- a/terraform/google/backup/data.google_cloudbuild_trigger.tf +++ b/terraform/google/backup/data.google_cloudbuild_trigger.tf @@ -1,5 +1,5 @@ data "google_cloudbuild_trigger" "pike" { - project = "pike-gcp" + project = "pike" trigger_id = "9c1e342a-8e6d-47d5-b764-ad43a1e25acb" location = "global" } diff --git a/terraform/google/backup/data.google_clouddeploy_custom_target_type_iam_policy.tf b/terraform/google/backup/data.google_clouddeploy_custom_target_type_iam_policy.tf new file mode 100644 index 00000000..de1fdba1 --- /dev/null +++ b/terraform/google/backup/data.google_clouddeploy_custom_target_type_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_clouddeploy_custom_target_type_iam_policy" "pike" { + name = "pike" +} + +output "google_clouddeploy_custom_target_type_iam_policy" { + value = data.google_clouddeploy_custom_target_type_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_clouddeploy_delivery_pipeline_iam_policy.tf b/terraform/google/backup/data.google_clouddeploy_delivery_pipeline_iam_policy.tf new file mode 100644 index 00000000..4a397e8e --- /dev/null +++ b/terraform/google/backup/data.google_clouddeploy_delivery_pipeline_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_clouddeploy_delivery_pipeline_iam_policy" "pike" { + name = "pike" +} + +output "google_clouddeploy_delivery_pipeline_iam_policy" { + value = data.google_clouddeploy_delivery_pipeline_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_clouddeploy_target_iam_policy.tf b/terraform/google/backup/data.google_clouddeploy_target_iam_policy.tf new file mode 100644 index 00000000..cfadce82 --- /dev/null +++ b/terraform/google/backup/data.google_clouddeploy_target_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_clouddeploy_target_iam_policy" "pike" { + name = "pike" +} + +output "google_clouddeploy_target_iam_policy" { + value = data.google_clouddeploy_target_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_colab_runtime_template_iam_policy.tf b/terraform/google/backup/data.google_colab_runtime_template_iam_policy.tf new file mode 100644 index 00000000..8f3c80c1 --- /dev/null +++ b/terraform/google/backup/data.google_colab_runtime_template_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_colab_runtime_template_iam_policy" "pike" { + runtime_template = "pike" +} + +output "google_colab_runtime_template_iam_policy" { + value = data.google_colab_runtime_template_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_composer_user_workloads_config_map.tf b/terraform/google/backup/data.google_composer_user_workloads_config_map.tf new file mode 100644 index 00000000..4584fa31 --- /dev/null +++ b/terraform/google/backup/data.google_composer_user_workloads_config_map.tf @@ -0,0 +1,8 @@ +data "google_composer_user_workloads_config_map" "pike" { + name = "pike" + environment = "pike" +} + +output "google_composer_user_workloads_config_map" { + value = data.google_composer_user_workloads_config_map.pike +} diff --git a/terraform/google/backup/data.google_composer_user_workloads_secret.tf b/terraform/google/backup/data.google_composer_user_workloads_secret.tf new file mode 100644 index 00000000..0c7bd372 --- /dev/null +++ b/terraform/google/backup/data.google_composer_user_workloads_secret.tf @@ -0,0 +1,8 @@ +data "google_composer_user_workloads_secret" "pike" { + environment = "pike" + name = "pike" +} + +output "google_composer_user_workloads_secret" { + value = data.google_composer_user_workloads_secret.pike +} diff --git a/terraform/google/backup/data.google_compute_forwarding_rules.tf b/terraform/google/backup/data.google_compute_forwarding_rules.tf new file mode 100644 index 00000000..95ff9c3b --- /dev/null +++ b/terraform/google/backup/data.google_compute_forwarding_rules.tf @@ -0,0 +1,6 @@ +data "google_compute_forwarding_rules" "pike" { +} + +output "google_compute_forwarding_rules" { + value = data.google_compute_forwarding_rules.pike +} diff --git a/terraform/google/backup/data.google_compute_images.tf b/terraform/google/backup/data.google_compute_images.tf new file mode 100644 index 00000000..b9f99677 --- /dev/null +++ b/terraform/google/backup/data.google_compute_images.tf @@ -0,0 +1,6 @@ +data "google_compute_images" "pike" { +} + +output "google_compute_images" { + value = data.google_compute_images.pike +} diff --git a/terraform/google/backup/data.google_compute_instance_guest_attributes.tf b/terraform/google/backup/data.google_compute_instance_guest_attributes.tf new file mode 100644 index 00000000..cffc1d59 --- /dev/null +++ b/terraform/google/backup/data.google_compute_instance_guest_attributes.tf @@ -0,0 +1,8 @@ +data "google_compute_instance_guest_attributes" "pike" { + name = "pike" + zone = "us-central1-a" +} + +output "google_compute_instance_guest_attributes" { + value = data.google_compute_instance_guest_attributes.pike +} diff --git a/terraform/google/backup/data.google_compute_instance_template_iam_policy.tf b/terraform/google/backup/data.google_compute_instance_template_iam_policy.tf new file mode 100644 index 00000000..0eb2716e --- /dev/null +++ b/terraform/google/backup/data.google_compute_instance_template_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_compute_instance_template_iam_policy" "pike" { + name = "pike" +} + +output "google_compute_instance_template_iam_policy" { + value = data.google_compute_instance_template_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_compute_instant_snapshot_iam_policy.tf b/terraform/google/backup/data.google_compute_instant_snapshot_iam_policy.tf new file mode 100644 index 00000000..2954d7ba --- /dev/null +++ b/terraform/google/backup/data.google_compute_instant_snapshot_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_compute_instant_snapshot_iam_policy" "pike" { + name = "pike" + zone = "us-central1-a" +} + +output "google_compute_instant_snapshot_iam_policy" { + value = data.google_compute_instant_snapshot_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_compute_interconnect_location.tf b/terraform/google/backup/data.google_compute_interconnect_location.tf new file mode 100644 index 00000000..170fcb73 --- /dev/null +++ b/terraform/google/backup/data.google_compute_interconnect_location.tf @@ -0,0 +1,8 @@ +data "google_compute_interconnect_location" "pike" { + provider = google-beta + name = "pike" +} + +output "google_compute_interconnect_location" { + value = data.google_compute_interconnect_location.pike +} diff --git a/terraform/google/backup/data.google_compute_interconnect_locations.tf b/terraform/google/backup/data.google_compute_interconnect_locations.tf new file mode 100644 index 00000000..5062b1e8 --- /dev/null +++ b/terraform/google/backup/data.google_compute_interconnect_locations.tf @@ -0,0 +1,7 @@ +data "google_compute_interconnect_locations" "pike" { + provider = google-beta +} + +output "google_compute_interconnect_locations" { + value = data.google_compute_interconnect_locations.pike +} diff --git a/terraform/google/backup/data.google_compute_machine_types.tf b/terraform/google/backup/data.google_compute_machine_types.tf new file mode 100644 index 00000000..f76f7b31 --- /dev/null +++ b/terraform/google/backup/data.google_compute_machine_types.tf @@ -0,0 +1,7 @@ +data "google_compute_machine_types" "pike" { + zone = "us-central1-a" +} + +output "google_compute_machine_types" { + value = data.google_compute_machine_types.pike +} diff --git a/terraform/google/backup/data.google_compute_network_attachment.tf b/terraform/google/backup/data.google_compute_network_attachment.tf new file mode 100644 index 00000000..7d1e8105 --- /dev/null +++ b/terraform/google/backup/data.google_compute_network_attachment.tf @@ -0,0 +1,6 @@ +data "google_compute_network_attachment" "pike" { +} + +output "google_compute_network_attachment" { + value = data.google_compute_network_attachment.pike +} diff --git a/terraform/google/backup/data.google_compute_region_backend_service.tf b/terraform/google/backup/data.google_compute_region_backend_service.tf new file mode 100644 index 00000000..4ca6f29c --- /dev/null +++ b/terraform/google/backup/data.google_compute_region_backend_service.tf @@ -0,0 +1,7 @@ +data "google_compute_region_backend_service" "pike" { + name = "pike" +} + +output "google_compute_region_backend_service" { + value = data.google_compute_region_backend_service.pike +} diff --git a/terraform/google/backup/data.google_compute_region_instance_group_manager.tf b/terraform/google/backup/data.google_compute_region_instance_group_manager.tf new file mode 100644 index 00000000..50ac3bc8 --- /dev/null +++ b/terraform/google/backup/data.google_compute_region_instance_group_manager.tf @@ -0,0 +1,7 @@ +data "google_compute_region_instance_group_manager" "pike" { + name = "pike" +} + +output "google_compute_region_instance_group_manager" { + value = data.google_compute_region_instance_group_manager.pike +} diff --git a/terraform/google/backup/data.google_compute_security_policy.tf b/terraform/google/backup/data.google_compute_security_policy.tf new file mode 100644 index 00000000..aa4840a0 --- /dev/null +++ b/terraform/google/backup/data.google_compute_security_policy.tf @@ -0,0 +1,8 @@ +data "google_compute_security_policy" "pike" { + name = "pike" + +} + +output "google_compute_security_policy" { + value = data.google_compute_security_policy.pike +} diff --git a/terraform/google/backup/data.google_compute_storage_pool_iam_policy.tf b/terraform/google/backup/data.google_compute_storage_pool_iam_policy.tf new file mode 100644 index 00000000..8afe2762 --- /dev/null +++ b/terraform/google/backup/data.google_compute_storage_pool_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_compute_storage_pool_iam_policy" "pike" { + name = "pike" + zone = "us-central1-a" +} + +output "google_compute_storage_pool_iam_policy" { + value = data.google_compute_storage_pool_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_compute_storage_pool_types.tf b/terraform/google/backup/data.google_compute_storage_pool_types.tf new file mode 100644 index 00000000..a4a9fd7d --- /dev/null +++ b/terraform/google/backup/data.google_compute_storage_pool_types.tf @@ -0,0 +1,8 @@ +data "google_compute_storage_pool_types" "pike" { + storage_pool_type = "pike" + zone = "us-central1-a" +} + +output "google_compute_storage_pool_types" { + value = data.google_compute_storage_pool_types.pike +} diff --git a/terraform/google/backup/data.google_compute_subnetworks.tf b/terraform/google/backup/data.google_compute_subnetworks.tf new file mode 100644 index 00000000..89ce57da --- /dev/null +++ b/terraform/google/backup/data.google_compute_subnetworks.tf @@ -0,0 +1,6 @@ +data "google_compute_subnetworks" "pike" { +} + +output "google_compute_subnetworks" { + value = data.google_compute_subnetworks.pike +} diff --git a/terraform/google/backup/data.google_container_attached_install_manifest.tf b/terraform/google/backup/data.google_container_attached_install_manifest.tf new file mode 100644 index 00000000..518c3c88 --- /dev/null +++ b/terraform/google/backup/data.google_container_attached_install_manifest.tf @@ -0,0 +1,10 @@ +data "google_container_attached_install_manifest" "pike" { + cluster_id = "pike" + project = "pike-412922" + platform_version = "1234" + location = "us-central1" +} + +output "google_container_attached_install_manifest" { + value = data.google_container_attached_install_manifest.pike +} diff --git a/terraform/google/backup/data.google_container_aws_versions.tf b/terraform/google/backup/data.google_container_aws_versions.tf new file mode 100644 index 00000000..98798261 --- /dev/null +++ b/terraform/google/backup/data.google_container_aws_versions.tf @@ -0,0 +1,8 @@ +data "google_container_aws_versions" "pike" { + location = "us-west1" + project = "pike-412922" +} + +output "google_container_aws_versions" { + value = data.google_container_aws_versions.pike +} diff --git a/terraform/google/backup/data.google_container_azure_versions.tf b/terraform/google/backup/data.google_container_azure_versions.tf new file mode 100644 index 00000000..3d45ab9a --- /dev/null +++ b/terraform/google/backup/data.google_container_azure_versions.tf @@ -0,0 +1,8 @@ +data "google_container_azure_versions" "pike" { + location = "us-west1" + project = "pike-412922" +} + +output "google_container_azure_versions" { + value = data.google_container_azure_versions.pike +} diff --git a/terraform/google/backup/data.google_dataplex_aspect_type_iam_policy.tf b/terraform/google/backup/data.google_dataplex_aspect_type_iam_policy.tf new file mode 100644 index 00000000..5eb8da1c --- /dev/null +++ b/terraform/google/backup/data.google_dataplex_aspect_type_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_dataplex_aspect_type_iam_policy" "pike" { + aspect_type_id = "pike" +} + +output "google_dataplex_aspect_type_iam_policy" { + value = data.google_dataplex_aspect_type_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_dataplex_data_quality_rules.tf b/terraform/google/backup/data.google_dataplex_data_quality_rules.tf new file mode 100644 index 00000000..207a23f5 --- /dev/null +++ b/terraform/google/backup/data.google_dataplex_data_quality_rules.tf @@ -0,0 +1,9 @@ +data "google_dataplex_data_quality_rules" "pike" { + project = "pike-412922" + location = "us-central1" + data_scan_id = "pike" +} + +output "google_dataplex_data_quality_rules" { + value = data.google_dataplex_data_quality_rules.pike +} diff --git a/terraform/google/backup/data.google_dataplex_entry_group_iam_policy.tf b/terraform/google/backup/data.google_dataplex_entry_group_iam_policy.tf new file mode 100644 index 00000000..e9efa6b0 --- /dev/null +++ b/terraform/google/backup/data.google_dataplex_entry_group_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_dataplex_entry_group_iam_policy" "pike" { + entry_group_id = "pike" +} + +output "google_dataplex_entry_group_iam_policy" { + value = data.google_dataplex_entry_group_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_dataplex_entry_type_iam_policy.tf b/terraform/google/backup/data.google_dataplex_entry_type_iam_policy.tf new file mode 100644 index 00000000..a902655b --- /dev/null +++ b/terraform/google/backup/data.google_dataplex_entry_type_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_dataplex_entry_type_iam_policy" "pike" { + entry_type_id = "pike" +} + +output "google_dataplex_entry_type_iam_policy" { + value = data.google_dataplex_entry_type_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_dataplex_glossary_iam_policy.tf b/terraform/google/backup/data.google_dataplex_glossary_iam_policy.tf new file mode 100644 index 00000000..096ba905 --- /dev/null +++ b/terraform/google/backup/data.google_dataplex_glossary_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_dataplex_glossary_iam_policy" "pike" { + glossary_id = "pike" +} + +output "google_dataplex_glossary_iam_policy" { + value = data.google_dataplex_glossary_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_dataproc_metastore_database_iam_policy.tf b/terraform/google/backup/data.google_dataproc_metastore_database_iam_policy.tf new file mode 100644 index 00000000..d1ee8c71 --- /dev/null +++ b/terraform/google/backup/data.google_dataproc_metastore_database_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_dataproc_metastore_database_iam_policy" "pike" { + database = "pike" + service_id = "pike" +} + +output "google_dataproc_metastore_database_iam_policy" { + value = data.google_dataproc_metastore_database_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_dataproc_metastore_table_iam_policy.tf b/terraform/google/backup/data.google_dataproc_metastore_table_iam_policy.tf new file mode 100644 index 00000000..e2aac29b --- /dev/null +++ b/terraform/google/backup/data.google_dataproc_metastore_table_iam_policy.tf @@ -0,0 +1,10 @@ +data "google_dataproc_metastore_table_iam_policy" "pike" { + database_id = "pike" + table = "pike" + service_id = "pike" + +} + +output "google_dataproc_metastore_table_iam_policy" { + value = data.google_dataproc_metastore_table_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_dns_managed_zones.tf b/terraform/google/backup/data.google_dns_managed_zones.tf new file mode 100644 index 00000000..0346fb4d --- /dev/null +++ b/terraform/google/backup/data.google_dns_managed_zones.tf @@ -0,0 +1,6 @@ +data "google_dns_managed_zones" "pike" { +} + +output "google_dns_managed_zones" { + value = data.google_dns_managed_zones.pike +} diff --git a/terraform/google/backup/data.google_folder.tf b/terraform/google/backup/data.google_folder.tf new file mode 100644 index 00000000..18f73e83 --- /dev/null +++ b/terraform/google/backup/data.google_folder.tf @@ -0,0 +1,7 @@ +data "google_folder" "pike" { + folder = "pike" +} + +output "google_folder" { + value = data.google_folder.pike +} diff --git a/terraform/google/backup/data.google_folder_iam_policy.tf b/terraform/google/backup/data.google_folder_iam_policy.tf new file mode 100644 index 00000000..8f2591d5 --- /dev/null +++ b/terraform/google/backup/data.google_folder_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_folder_iam_policy" "pike" { + folder = "folders/pike" +} + +output "google_folder_iam_policy" { + value = data.google_folder_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_folders.tf b/terraform/google/backup/data.google_folders.tf new file mode 100644 index 00000000..05b1b3a5 --- /dev/null +++ b/terraform/google/backup/data.google_folders.tf @@ -0,0 +1,7 @@ +data "google_folders" "pike" { + parent_id = "organizations/12345" +} + +output "google_folders" { + value = data.google_folders.pike +} diff --git a/terraform/google/backup/data.google_gemini_repository_group_iam_policy.tf b/terraform/google/backup/data.google_gemini_repository_group_iam_policy.tf new file mode 100644 index 00000000..1049dad0 --- /dev/null +++ b/terraform/google/backup/data.google_gemini_repository_group_iam_policy.tf @@ -0,0 +1,9 @@ +data "google_gemini_repository_group_iam_policy" "pike" { + code_repository_index = "pike" + repository_group_id = "pike" + project = "pike-412922" +} + +output "google_gemini_repository_group_iam_policy" { + value = data.google_gemini_repository_group_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_gke_hub_feature.tf b/terraform/google/backup/data.google_gke_hub_feature.tf new file mode 100644 index 00000000..c0f58f8e --- /dev/null +++ b/terraform/google/backup/data.google_gke_hub_feature.tf @@ -0,0 +1,8 @@ +data "google_gke_hub_feature" "pike" { + name = "servicemesh" + location = "global" +} + +output "google_gke_hub_feature" { + value = data.google_gke_hub_feature.pike +} diff --git a/terraform/google/backup/data.google_gke_hub_membership.tf b/terraform/google/backup/data.google_gke_hub_membership.tf new file mode 100644 index 00000000..b0d02356 --- /dev/null +++ b/terraform/google/backup/data.google_gke_hub_membership.tf @@ -0,0 +1,8 @@ +data "google_gke_hub_membership" "pike" { + membership_id = "pike" + location = "us-central1" +} + +output "google_gke_hub_membership" { + value = data.google_gke_hub_membership.pike +} diff --git a/terraform/google/backup/data.google_iam_workforce_pool_iam_policy.tf b/terraform/google/backup/data.google_iam_workforce_pool_iam_policy.tf new file mode 100644 index 00000000..7b8a68e6 --- /dev/null +++ b/terraform/google/backup/data.google_iam_workforce_pool_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_iam_workforce_pool_iam_policy" "pike" { +} + +output "google_iam_workforce_pool_iam_policy" { + value = data.google_iam_workforce_pool_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_iam_workload_identity_pool_iam_policy.tf b/terraform/google/backup/data.google_iam_workload_identity_pool_iam_policy.tf new file mode 100644 index 00000000..d4f17d1a --- /dev/null +++ b/terraform/google/backup/data.google_iam_workload_identity_pool_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_iam_workload_identity_pool_iam_policy" "pike" { + provider = google-beta + workload_identity_pool_id = "gitlab" +} + +output "google_iam_workload_identity_pool_iam_policy" { + value = data.google_iam_workload_identity_pool_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_iap_tunnel_dest_group_iam_policy.tf b/terraform/google/backup/data.google_iap_tunnel_dest_group_iam_policy.tf new file mode 100644 index 00000000..25538a6f --- /dev/null +++ b/terraform/google/backup/data.google_iap_tunnel_dest_group_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_iap_tunnel_dest_group_iam_policy" "pike" { + dest_group = "pike" +} + +output "google_iap_tunnel_dest_group_iam_policy" { + value = data.google_iap_tunnel_dest_group_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_iap_web_cloud_run_service_iam_policy.tf b/terraform/google/backup/data.google_iap_web_cloud_run_service_iam_policy.tf new file mode 100644 index 00000000..78958854 --- /dev/null +++ b/terraform/google/backup/data.google_iap_web_cloud_run_service_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_iap_web_cloud_run_service_iam_policy" "pike" { + cloud_run_service_name = "pike" +} + +output "google_iap_web_cloud_run_service_iam_policy" { + value = data.google_iap_web_cloud_run_service_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_iap_web_forwarding_rule_service_iam_policy.tf b/terraform/google/backup/data.google_iap_web_forwarding_rule_service_iam_policy.tf new file mode 100644 index 00000000..3d3d06c3 --- /dev/null +++ b/terraform/google/backup/data.google_iap_web_forwarding_rule_service_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_iap_web_forwarding_rule_service_iam_policy" "pike" { + forwarding_rule_service_name = "pike" +} + +output "google_iap_web_forwarding_rule_service_iam_policy" { + value = data.google_iap_web_forwarding_rule_service_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_iap_web_region_forwarding_rule_service_iam_policy.tf b/terraform/google/backup/data.google_iap_web_region_forwarding_rule_service_iam_policy.tf new file mode 100644 index 00000000..16045650 --- /dev/null +++ b/terraform/google/backup/data.google_iap_web_region_forwarding_rule_service_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_iap_web_region_forwarding_rule_service_iam_policy" "pike" { + provider = google-beta + web_region_backend_service = "pike" +} + +output "google_iap_web_region_forwarding_rule_service_iam_policy" { + value = data.google_iap_web_region_forwarding_rule_service_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_kms_autokey_config.tf b/terraform/google/backup/data.google_kms_autokey_config.tf new file mode 100644 index 00000000..4f387289 --- /dev/null +++ b/terraform/google/backup/data.google_kms_autokey_config.tf @@ -0,0 +1,8 @@ +data "google_kms_autokey_config" "pike" { + provider = google-beta + folder = "pike" +} + +output "google_kms_autokey_config" { + value = data.google_kms_autokey_config.pike +} diff --git a/terraform/google/backup/data.google_kms_crypto_key_latest_version.tf b/terraform/google/backup/data.google_kms_crypto_key_latest_version.tf new file mode 100644 index 00000000..6fba8423 --- /dev/null +++ b/terraform/google/backup/data.google_kms_crypto_key_latest_version.tf @@ -0,0 +1,7 @@ +data "google_kms_crypto_key_latest_version" "pike" { + crypto_key = "pike/us-central1/pike/pike" +} + +output "google_kms_crypto_key_latest_version" { + value = data.google_kms_crypto_key_latest_version.pike +} diff --git a/terraform/google/backup/data.google_kms_crypto_key_versions.tf b/terraform/google/backup/data.google_kms_crypto_key_versions.tf new file mode 100644 index 00000000..c547fb49 --- /dev/null +++ b/terraform/google/backup/data.google_kms_crypto_key_versions.tf @@ -0,0 +1,7 @@ +data "google_kms_crypto_key_versions" "pike" { + crypto_key = "pike/us-central1/pike/pike" +} + +output "google_kms_crypto_key_versions" { + value = data.google_kms_crypto_key_versions.pike +} diff --git a/terraform/google/backup/data.google_kms_crypto_keys.tf b/terraform/google/backup/data.google_kms_crypto_keys.tf new file mode 100644 index 00000000..ec6edf88 --- /dev/null +++ b/terraform/google/backup/data.google_kms_crypto_keys.tf @@ -0,0 +1,7 @@ +data "google_kms_crypto_keys" "pike" { + key_ring = "us-central1/pike" +} + +output "google_kms_crypto_keys" { + value = data.google_kms_crypto_keys.pike +} diff --git a/terraform/google/backup/data.google_kms_ekm_connection_iam_policy.tf b/terraform/google/backup/data.google_kms_ekm_connection_iam_policy.tf new file mode 100644 index 00000000..b54b522e --- /dev/null +++ b/terraform/google/backup/data.google_kms_ekm_connection_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_kms_ekm_connection_iam_policy" "pike" { + name = "projects/pike/locations/us-central1/ekmConnections/pike" +} + +output "google_kms_ekm_connection_iam_policy" { + value = data.google_kms_ekm_connection_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_kms_key_handle.tf b/terraform/google/backup/data.google_kms_key_handle.tf new file mode 100644 index 00000000..247bc94c --- /dev/null +++ b/terraform/google/backup/data.google_kms_key_handle.tf @@ -0,0 +1,9 @@ +data "google_kms_key_handle" "pike" { + name = "pike" + location = "us-central1" + provider = google-beta +} + +output "google_kms_key_handle" { + value = data.google_kms_key_handle.pike +} diff --git a/terraform/google/backup/data.google_kms_key_handles.tf b/terraform/google/backup/data.google_kms_key_handles.tf new file mode 100644 index 00000000..198b7034 --- /dev/null +++ b/terraform/google/backup/data.google_kms_key_handles.tf @@ -0,0 +1,9 @@ +data "google_kms_key_handles" "pike" { + provider = google-beta + location = "us-central1" + resource_type_selector = "storage.googleapis.com/Bucket" +} + +output "google_kms_key_handles" { + value = data.google_kms_key_handles.pike +} diff --git a/terraform/google/backup/data.google_kms_key_rings.tf b/terraform/google/backup/data.google_kms_key_rings.tf new file mode 100644 index 00000000..f8fb10fe --- /dev/null +++ b/terraform/google/backup/data.google_kms_key_rings.tf @@ -0,0 +1,7 @@ +data "google_kms_key_rings" "pike" { + location = "us-central1" +} + +output "google_kms_key_rings" { + value = data.google_kms_key_rings.pike +} diff --git a/terraform/google/backup/data.google_logging_log_view_iam_policy.tf b/terraform/google/backup/data.google_logging_log_view_iam_policy.tf new file mode 100644 index 00000000..e48d0995 --- /dev/null +++ b/terraform/google/backup/data.google_logging_log_view_iam_policy.tf @@ -0,0 +1,9 @@ +data "google_logging_log_view_iam_policy" "pike" { + bucket = "anyoldshet" + parent = "pike" + name = "pike" +} + +output "google_logging_log_view_iam_policy" { + value = data.google_logging_log_view_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_lustre_instance.tf b/terraform/google/backup/data.google_lustre_instance.tf new file mode 100644 index 00000000..a829d693 --- /dev/null +++ b/terraform/google/backup/data.google_lustre_instance.tf @@ -0,0 +1,8 @@ +data "google_lustre_instance" "pike" { + instance_id = "pike" + zone = "us-central1-a" +} + +output "google_lustre_instance" { + value = data.google_lustre_instance.pike +} diff --git a/terraform/google/backup/data.google_memcache_instance.tf b/terraform/google/backup/data.google_memcache_instance.tf new file mode 100644 index 00000000..7f83eba9 --- /dev/null +++ b/terraform/google/backup/data.google_memcache_instance.tf @@ -0,0 +1,7 @@ +data "google_memcache_instance" "pike" { + name = "pike" +} + +output "google_memcache_instance" { + value = data.google_memcache_instance.pike +} diff --git a/terraform/google/backup/data.google_memorystore_instance.tf b/terraform/google/backup/data.google_memorystore_instance.tf new file mode 100644 index 00000000..860851dc --- /dev/null +++ b/terraform/google/backup/data.google_memorystore_instance.tf @@ -0,0 +1,7 @@ +data "google_memorystore_instance" "pike" { + instance_id = "pike" +} + +output "google_memorystore_instance" { + value = data.google_memorystore_instance.pike +} diff --git a/terraform/google/backup/data.google_oracle_database_autonomous_database.tf b/terraform/google/backup/data.google_oracle_database_autonomous_database.tf new file mode 100644 index 00000000..c887c8d0 --- /dev/null +++ b/terraform/google/backup/data.google_oracle_database_autonomous_database.tf @@ -0,0 +1,8 @@ +data "google_oracle_database_autonomous_database" "pike" { + location = "us-central1" + autonomous_database_id = "pike" +} + +output "google_oracle_database_autonomous_database" { + value = data.google_oracle_database_autonomous_database.pike +} diff --git a/terraform/google/backup/data.google_oracle_database_autonomous_databases.tf b/terraform/google/backup/data.google_oracle_database_autonomous_databases.tf new file mode 100644 index 00000000..79012aae --- /dev/null +++ b/terraform/google/backup/data.google_oracle_database_autonomous_databases.tf @@ -0,0 +1,7 @@ +data "google_oracle_database_autonomous_databases" "pike" { + location = "us-central1" +} + +output "google_oracle_database_autonomous_databases" { + value = data.google_oracle_database_autonomous_databases.pike +} diff --git a/terraform/google/backup/data.google_oracle_database_cloud_exadata_infrastructure.tf b/terraform/google/backup/data.google_oracle_database_cloud_exadata_infrastructure.tf new file mode 100644 index 00000000..20c5ae49 --- /dev/null +++ b/terraform/google/backup/data.google_oracle_database_cloud_exadata_infrastructure.tf @@ -0,0 +1,8 @@ +data "google_oracle_database_cloud_exadata_infrastructure" "pike" { + location = "us-central1" + cloud_exadata_infrastructure_id = "pike" +} + +output "google_oracle_database_cloud_exadata_infrastructure" { + value = data.google_oracle_database_cloud_exadata_infrastructure.pike +} diff --git a/terraform/google/backup/data.google_oracle_database_cloud_exadata_infrastructures.tf b/terraform/google/backup/data.google_oracle_database_cloud_exadata_infrastructures.tf new file mode 100644 index 00000000..6a99ee51 --- /dev/null +++ b/terraform/google/backup/data.google_oracle_database_cloud_exadata_infrastructures.tf @@ -0,0 +1,7 @@ +data "google_oracle_database_cloud_exadata_infrastructures" "pike" { + location = "us-central1" +} + +output "google_oracle_database_cloud_exadata_infrastructures" { + value = data.google_oracle_database_cloud_exadata_infrastructures.pike +} diff --git a/terraform/google/backup/data.google_oracle_database_cloud_vm_cluster.tf b/terraform/google/backup/data.google_oracle_database_cloud_vm_cluster.tf new file mode 100644 index 00000000..5ca731af --- /dev/null +++ b/terraform/google/backup/data.google_oracle_database_cloud_vm_cluster.tf @@ -0,0 +1,8 @@ +data "google_oracle_database_cloud_vm_cluster" "pike" { + location = "us-central1" + cloud_vm_cluster_id = "pike" +} + +output "google_oracle_database_cloud_vm_cluster" { + value = data.google_oracle_database_cloud_vm_cluster.pike +} diff --git a/terraform/google/backup/data.google_oracle_database_cloud_vm_clusters.tf b/terraform/google/backup/data.google_oracle_database_cloud_vm_clusters.tf new file mode 100644 index 00000000..0b395a80 --- /dev/null +++ b/terraform/google/backup/data.google_oracle_database_cloud_vm_clusters.tf @@ -0,0 +1,7 @@ +data "google_oracle_database_cloud_vm_clusters" "pike" { + location = "us-central1" +} + +output "google_oracle_database_cloud_vm_clusters" { + value = data.google_oracle_database_cloud_vm_clusters.pike +} diff --git a/terraform/google/backup/data.google_oracle_database_db_nodes.tf b/terraform/google/backup/data.google_oracle_database_db_nodes.tf new file mode 100644 index 00000000..5fa14003 --- /dev/null +++ b/terraform/google/backup/data.google_oracle_database_db_nodes.tf @@ -0,0 +1,8 @@ +data "google_oracle_database_db_nodes" "pike" { + cloud_vm_cluster = "pike" + location = "us-central1" +} + +output "google_oracle_database_db_nodes" { + value = data.google_oracle_database_db_nodes.pike +} diff --git a/terraform/google/backup/data.google_oracle_database_db_servers.tf b/terraform/google/backup/data.google_oracle_database_db_servers.tf new file mode 100644 index 00000000..761f25a7 --- /dev/null +++ b/terraform/google/backup/data.google_oracle_database_db_servers.tf @@ -0,0 +1,8 @@ +data "google_oracle_database_db_servers" "pike" { + cloud_exadata_infrastructure = "pike" + location = "us-central1" +} + +output "google_oracle_database_db_servers" { + value = data.google_oracle_database_db_servers.pike +} diff --git a/terraform/google/backup/data.google_organization_iam_custom_role.tf b/terraform/google/backup/data.google_organization_iam_custom_role.tf new file mode 100644 index 00000000..13201877 --- /dev/null +++ b/terraform/google/backup/data.google_organization_iam_custom_role.tf @@ -0,0 +1,9 @@ +data "google_organization_iam_custom_role" "pike" { + role_id = "pike" + org_id = "123456789" +} + + +output "google_organization_iam_custom_role" { + value = data.google_organization_iam_custom_role.pike +} diff --git a/terraform/google/backup/data.google_organization_iam_custom_roles.tf b/terraform/google/backup/data.google_organization_iam_custom_roles.tf new file mode 100644 index 00000000..69f74eb3 --- /dev/null +++ b/terraform/google/backup/data.google_organization_iam_custom_roles.tf @@ -0,0 +1,9 @@ +data "google_organization_iam_custom_roles" "pike" { + org_id = "1234567890" + show_deleted = true + view = "FULL" +} + +output "google_organization_iam_custom_roles" { + value = data.google_organization_iam_custom_roles.pike +} diff --git a/terraform/google/backup/data.google_organization_iam_policy.tf b/terraform/google/backup/data.google_organization_iam_policy.tf new file mode 100644 index 00000000..b902468d --- /dev/null +++ b/terraform/google/backup/data.google_organization_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_organization_iam_policy" "pike" { +} + +output "google_organization_iam_policy" { + value = data.google_organization_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_organizations.tf b/terraform/google/backup/data.google_organizations.tf new file mode 100644 index 00000000..c8634fce --- /dev/null +++ b/terraform/google/backup/data.google_organizations.tf @@ -0,0 +1,6 @@ +data "google_organizations" "pike" { +} + +output "google_organizations" { + value = data.google_organizations.pike +} diff --git a/terraform/google/backup/data.google_parameter_manager_parameter.tf b/terraform/google/backup/data.google_parameter_manager_parameter.tf new file mode 100644 index 00000000..ae7e3e98 --- /dev/null +++ b/terraform/google/backup/data.google_parameter_manager_parameter.tf @@ -0,0 +1,7 @@ +data "google_parameter_manager_parameter" "pike" { + parameter_id = "pike" +} + +output "google_parameter_manager_parameter" { + value = data.google_parameter_manager_parameter.pike +} diff --git a/terraform/google/backup/data.google_parameter_manager_parameter_version.tf b/terraform/google/backup/data.google_parameter_manager_parameter_version.tf new file mode 100644 index 00000000..11a45450 --- /dev/null +++ b/terraform/google/backup/data.google_parameter_manager_parameter_version.tf @@ -0,0 +1,8 @@ +data "google_parameter_manager_parameter_version" "pike" { + parameter_version_id = "pike" + parameter = "pike" +} + +output "google_parameter_manager_parameter_version" { + value = data.google_parameter_manager_parameter_version.pike +} diff --git a/terraform/google/backup/data.google_parameter_manager_parameter_version_render.tf b/terraform/google/backup/data.google_parameter_manager_parameter_version_render.tf new file mode 100644 index 00000000..f7e54c94 --- /dev/null +++ b/terraform/google/backup/data.google_parameter_manager_parameter_version_render.tf @@ -0,0 +1,8 @@ +data "google_parameter_manager_parameter_version_render" "pike" { + parameter_version_id = "pike" + parameter = "pike" +} + +output "google_parameter_manager_parameter_version_render" { + value = data.google_parameter_manager_parameter_version_render.pike +} diff --git a/terraform/google/backup/data.google_parameter_manager_parameters.tf b/terraform/google/backup/data.google_parameter_manager_parameters.tf new file mode 100644 index 00000000..5cc004ba --- /dev/null +++ b/terraform/google/backup/data.google_parameter_manager_parameters.tf @@ -0,0 +1,6 @@ +data "google_parameter_manager_parameters" "pike" { +} + +output "google_parameter_manager_parameters" { + value = data.google_parameter_manager_parameters.pike +} diff --git a/terraform/google/backup/data.google_parameter_manager_regional_parameter.tf b/terraform/google/backup/data.google_parameter_manager_regional_parameter.tf new file mode 100644 index 00000000..25bbdf89 --- /dev/null +++ b/terraform/google/backup/data.google_parameter_manager_regional_parameter.tf @@ -0,0 +1,8 @@ +data "google_parameter_manager_regional_parameter" "pike" { + location = "us-central1" + parameter_id = "pike" +} + +output "google_parameter_manager_regional_parameter" { + value = data.google_parameter_manager_regional_parameter.pike +} diff --git a/terraform/google/backup/data.google_parameter_manager_regional_parameter_version.tf b/terraform/google/backup/data.google_parameter_manager_regional_parameter_version.tf new file mode 100644 index 00000000..c06dd8a1 --- /dev/null +++ b/terraform/google/backup/data.google_parameter_manager_regional_parameter_version.tf @@ -0,0 +1,9 @@ +data "google_parameter_manager_regional_parameter_version" "pike" { + parameter_version_id = "pike" + parameter = "pike" + location = "us-central1" +} + +output "google_parameter_manager_regional_parameter_version" { + value = data.google_parameter_manager_regional_parameter_version.pike +} diff --git a/terraform/google/backup/data.google_parameter_manager_regional_parameter_version_render.tf b/terraform/google/backup/data.google_parameter_manager_regional_parameter_version_render.tf new file mode 100644 index 00000000..5f2bc195 --- /dev/null +++ b/terraform/google/backup/data.google_parameter_manager_regional_parameter_version_render.tf @@ -0,0 +1,9 @@ +data "google_parameter_manager_regional_parameter_version_render" "pike" { + parameter_version_id = "pike" + parameter = "pike" + location = "us-central1" +} + +output "google_parameter_manager_regional_parameter_version_render" { + value = data.google_parameter_manager_regional_parameter_version_render.pike +} diff --git a/terraform/google/backup/data.google_parameter_manager_regional_parameters.tf b/terraform/google/backup/data.google_parameter_manager_regional_parameters.tf new file mode 100644 index 00000000..7b21d83a --- /dev/null +++ b/terraform/google/backup/data.google_parameter_manager_regional_parameters.tf @@ -0,0 +1,7 @@ +data "google_parameter_manager_regional_parameters" "pike" { + location = "us-central1" +} + +output "google_parameter_manager_regional_parameters" { + value = data.google_parameter_manager_regional_parameters.pike +} diff --git a/terraform/google/backup/data.google_privateca_ca_pool_iam_policy.tf b/terraform/google/backup/data.google_privateca_ca_pool_iam_policy.tf new file mode 100644 index 00000000..e9cf9e53 --- /dev/null +++ b/terraform/google/backup/data.google_privateca_ca_pool_iam_policy.tf @@ -0,0 +1,20 @@ +data "google_privateca_ca_pool_iam_policy" "pike" { + ca_pool = google_privateca_ca_pool.default.id +} + +output "google_privateca_ca_pool_iam_policy" { + value = data.google_privateca_ca_pool_iam_policy.pike +} + +resource "google_privateca_ca_pool" "default" { + name = "my-pool" + location = "us-central1" + tier = "ENTERPRISE" + publishing_options { + publish_ca_cert = true + publish_crl = true + } + labels = { + foo = "bar" + } +} diff --git a/terraform/google/backup/data.google_privateca_certificate_authority.tf b/terraform/google/backup/data.google_privateca_certificate_authority.tf new file mode 100644 index 00000000..3ce5aba5 --- /dev/null +++ b/terraform/google/backup/data.google_privateca_certificate_authority.tf @@ -0,0 +1,9 @@ +data "google_privateca_certificate_authority" "pike" { + location = "us-central1" + pool = "pool-name" + certificate_authority_id = "ca-id" +} + +output "google_privateca_certificate_authority" { + value = data.google_privateca_certificate_authority.pike +} diff --git a/terraform/google/backup/data.google_privateca_certificate_template_iam_policy.tf b/terraform/google/backup/data.google_privateca_certificate_template_iam_policy.tf new file mode 100644 index 00000000..aba5cc65 --- /dev/null +++ b/terraform/google/backup/data.google_privateca_certificate_template_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_privateca_certificate_template_iam_policy" "pike" { + certificate_template = google_privateca_certificate_template.default.id +} + +output "google_privateca_certificate_template_iam_policy" { + value = data.google_privateca_certificate_template_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_privileged_access_manager_entitlement.tf b/terraform/google/backup/data.google_privileged_access_manager_entitlement.tf new file mode 100644 index 00000000..3da2fad7 --- /dev/null +++ b/terraform/google/backup/data.google_privileged_access_manager_entitlement.tf @@ -0,0 +1,12 @@ +data "google_privileged_access_manager_entitlement" "pike" { + parent = "projects/pike" + location = "global" + entitlement_id = "my-entitlement" + depends_on = [ + google_privileged_access_manager_entitlement.entitlement + ] +} + +output "google_privileged_access_manager_entitlement" { + value = data.google_privileged_access_manager_entitlement.pike +} diff --git a/terraform/google/backup/data.google_project_ancestry.tf b/terraform/google/backup/data.google_project_ancestry.tf new file mode 100644 index 00000000..ed3a559f --- /dev/null +++ b/terraform/google/backup/data.google_project_ancestry.tf @@ -0,0 +1,6 @@ +data "google_project_ancestry" "pike" { +} + +output "google_project_ancestry" { + value = data.google_project_ancestry.pike +} diff --git a/terraform/google/backup/data.google_project_iam_custom_role.tf b/terraform/google/backup/data.google_project_iam_custom_role.tf new file mode 100644 index 00000000..ec005668 --- /dev/null +++ b/terraform/google/backup/data.google_project_iam_custom_role.tf @@ -0,0 +1,7 @@ +data "google_project_iam_custom_role" "pike" { + role_id = "terraform_pike" +} + +output "google_project_iam_custom_role" { + value = data.google_project_iam_custom_role.pike +} diff --git a/terraform/google/backup/data.google_project_iam_custom_roles.tf b/terraform/google/backup/data.google_project_iam_custom_roles.tf new file mode 100644 index 00000000..2e2bfcec --- /dev/null +++ b/terraform/google/backup/data.google_project_iam_custom_roles.tf @@ -0,0 +1,7 @@ +data "google_project_iam_custom_roles" "pike" { + +} + +output "google_project_iam_custom_roles" { + value = data.google_project_iam_custom_roles.pike +} diff --git a/terraform/google/backup/data.google_project_iam_policy.tf b/terraform/google/backup/data.google_project_iam_policy.tf new file mode 100644 index 00000000..27cdad00 --- /dev/null +++ b/terraform/google/backup/data.google_project_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_project_iam_policy" "pike" { +} + +output "google_project_iam_policy" { + value = data.google_project_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_project_organization_policy.tf b/terraform/google/backup/data.google_project_organization_policy.tf new file mode 100644 index 00000000..0264539a --- /dev/null +++ b/terraform/google/backup/data.google_project_organization_policy.tf @@ -0,0 +1,6 @@ +data "google_project_organization_policy" "pike" { +} + +output "google_project_organization_policy" { + value = data.google_project_organization_policy.pike +} diff --git a/terraform/google/backup/data.google_pubsub_schema_iam_policy.tf b/terraform/google/backup/data.google_pubsub_schema_iam_policy.tf new file mode 100644 index 00000000..1f53da43 --- /dev/null +++ b/terraform/google/backup/data.google_pubsub_schema_iam_policy.tf @@ -0,0 +1,13 @@ +data "google_pubsub_schema_iam_policy" "pike" { + schema = google_pubsub_schema.example.id +} + +output "google_pubsub_schema_iam_policy" { + value = data.google_pubsub_schema_iam_policy.pike +} + +resource "google_pubsub_schema" "example" { + name = "example-schema" + type = "AVRO" + definition = "{\n \"type\" : \"record\",\n \"name\" : \"Avro\",\n \"fields\" : [\n {\n \"name\" : \"StringField\",\n \"type\" : \"string\"\n },\n {\n \"name\" : \"IntField\",\n \"type\" : \"int\"\n }\n ]\n}\n" +} diff --git a/terraform/google/backup/data.google_redis_cluster.tf b/terraform/google/backup/data.google_redis_cluster.tf new file mode 100644 index 00000000..7ac07fff --- /dev/null +++ b/terraform/google/backup/data.google_redis_cluster.tf @@ -0,0 +1,6 @@ +data "google_redis_cluster" "pike" { +} + +output "google_redis_cluster" { + value = data.google_redis_cluster.pike +} diff --git a/terraform/google/backup/data.google_runtimeconfig_config.tf b/terraform/google/backup/data.google_runtimeconfig_config.tf new file mode 100644 index 00000000..b9a56dc8 --- /dev/null +++ b/terraform/google/backup/data.google_runtimeconfig_config.tf @@ -0,0 +1,6 @@ +data "google_runtimeconfig_config" "pike" { +} + +output "google_runtimeconfig_config" { + value = data.google_runtimeconfig_config.pike +} diff --git a/terraform/google/backup/data.google_runtimeconfig_config_iam_policy.tf b/terraform/google/backup/data.google_runtimeconfig_config_iam_policy.tf new file mode 100644 index 00000000..152695b7 --- /dev/null +++ b/terraform/google/backup/data.google_runtimeconfig_config_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_runtimeconfig_config_iam_policy" "pike" { +} + +output "google_runtimeconfig_config_iam_policy" { + value = data.google_runtimeconfig_config_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_runtimeconfig_variable.tf b/terraform/google/backup/data.google_runtimeconfig_variable.tf new file mode 100644 index 00000000..99b31f5a --- /dev/null +++ b/terraform/google/backup/data.google_runtimeconfig_variable.tf @@ -0,0 +1,6 @@ +data "google_runtimeconfig_variable" "pike" { +} + +output "google_runtimeconfig_variable" { + value = data.google_runtimeconfig_variable.pike +} diff --git a/terraform/google/backup/data.google_scc_source_iam_policy.tf b/terraform/google/backup/data.google_scc_source_iam_policy.tf new file mode 100644 index 00000000..3bf30d91 --- /dev/null +++ b/terraform/google/backup/data.google_scc_source_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_scc_source_iam_policy" "pike" { +} + +output "google_scc_source_iam_policy" { + value = data.google_scc_source_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_scc_v2_organization_source_iam_policy.tf b/terraform/google/backup/data.google_scc_v2_organization_source_iam_policy.tf new file mode 100644 index 00000000..e69508b4 --- /dev/null +++ b/terraform/google/backup/data.google_scc_v2_organization_source_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_scc_v2_organization_source_iam_policy" "pike" { +} + +output "google_scc_v2_organization_source_iam_policy" { + value = data.google_scc_v2_organization_source_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_secret_manager_regional_secret.tf b/terraform/google/backup/data.google_secret_manager_regional_secret.tf new file mode 100644 index 00000000..8912e3f0 --- /dev/null +++ b/terraform/google/backup/data.google_secret_manager_regional_secret.tf @@ -0,0 +1,8 @@ +data "google_secret_manager_regional_secret" "pike" { + location = "us-central1" + secret_id = "secretname" +} + +output "google_secret_manager_regional_secret" { + value = data.google_secret_manager_regional_secret.pike +} diff --git a/terraform/google/backup/data.google_secret_manager_regional_secret_iam_policy.tf b/terraform/google/backup/data.google_secret_manager_regional_secret_iam_policy.tf new file mode 100644 index 00000000..99690860 --- /dev/null +++ b/terraform/google/backup/data.google_secret_manager_regional_secret_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_secret_manager_regional_secret_iam_policy" "pike" { + secret_id = "secretname" +} + +output "google_secret_manager_regional_secret_iam_policy" { + value = data.google_secret_manager_regional_secret_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_secret_manager_regional_secret_version.tf b/terraform/google/backup/data.google_secret_manager_regional_secret_version.tf new file mode 100644 index 00000000..3dd10c52 --- /dev/null +++ b/terraform/google/backup/data.google_secret_manager_regional_secret_version.tf @@ -0,0 +1,8 @@ +data "google_secret_manager_regional_secret_version" "pike" { + secret = "my-secret" + location = "us-central1" +} + +output "google_secret_manager_regional_secret_version" { + value = data.google_secret_manager_regional_secret_version.pike +} diff --git a/terraform/google/backup/data.google_secret_manager_regional_secret_version_access.tf b/terraform/google/backup/data.google_secret_manager_regional_secret_version_access.tf new file mode 100644 index 00000000..c999fb63 --- /dev/null +++ b/terraform/google/backup/data.google_secret_manager_regional_secret_version_access.tf @@ -0,0 +1,8 @@ +data "google_secret_manager_regional_secret_version_access" "pike" { + secret = "my-secret" + location = "us-central1" +} + +output "google_secret_manager_regional_secret_version_access" { + value = data.google_secret_manager_regional_secret_version_access.pike +} diff --git a/terraform/google/backup/data.google_secret_manager_regional_secrets.tf b/terraform/google/backup/data.google_secret_manager_regional_secrets.tf new file mode 100644 index 00000000..d8b5bd1a --- /dev/null +++ b/terraform/google/backup/data.google_secret_manager_regional_secrets.tf @@ -0,0 +1,7 @@ +data "google_secret_manager_regional_secrets" "pike" { + location = "us-central1" +} + +output "google_secret_manager_regional_secrets" { + value = data.google_secret_manager_regional_secrets.pike +} diff --git a/terraform/google/backup/data.google_secure_source_manager_instance_iam_policy.tf b/terraform/google/backup/data.google_secure_source_manager_instance_iam_policy.tf new file mode 100644 index 00000000..d01a38d8 --- /dev/null +++ b/terraform/google/backup/data.google_secure_source_manager_instance_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_secure_source_manager_instance_iam_policy" "pike" { +} + +output "google_secure_source_manager_instance_iam_policy" { + value = data.google_secure_source_manager_instance_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_secure_source_manager_repository_iam_policy.tf b/terraform/google/backup/data.google_secure_source_manager_repository_iam_policy.tf new file mode 100644 index 00000000..ad6135a4 --- /dev/null +++ b/terraform/google/backup/data.google_secure_source_manager_repository_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_secure_source_manager_repository_iam_policy" "pike" { +} + +output "google_secure_source_manager_repository_iam_policy" { + value = data.google_secure_source_manager_repository_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_service_accounts.tf b/terraform/google/backup/data.google_service_accounts.tf new file mode 100644 index 00000000..55f4038f --- /dev/null +++ b/terraform/google/backup/data.google_service_accounts.tf @@ -0,0 +1,6 @@ +data "google_service_accounts" "pike" { +} + +output "google_service_accounts" { + value = data.google_service_accounts.pike +} diff --git a/terraform/google/backup/data.google_site_verification_token.tf b/terraform/google/backup/data.google_site_verification_token.tf new file mode 100644 index 00000000..f3ad7ed2 --- /dev/null +++ b/terraform/google/backup/data.google_site_verification_token.tf @@ -0,0 +1,6 @@ +# data "google_site_verification_token" "pike" { +# } +# +# output "google_site_verification_token" { +# value = data.google_site_verification_token.pike +# } diff --git a/terraform/google/backup/data.google_spanner_database.tf b/terraform/google/backup/data.google_spanner_database.tf new file mode 100644 index 00000000..fbe1b898 --- /dev/null +++ b/terraform/google/backup/data.google_spanner_database.tf @@ -0,0 +1,8 @@ +data "google_spanner_database" "pike" { + instance = "pike" + name = "pike" +} + +output "google_spanner_database" { + value = data.google_spanner_database.pike +} diff --git a/terraform/google/backup/data.google_storage_bucket_objects.tf b/terraform/google/backup/data.google_storage_bucket_objects.tf new file mode 100644 index 00000000..7b93e4d9 --- /dev/null +++ b/terraform/google/backup/data.google_storage_bucket_objects.tf @@ -0,0 +1,7 @@ +data "google_storage_bucket_objects" "pike" { + bucket = "stuffidontwanttoshare" +} + +output "google_storage_bucket_objects" { + value = data.google_storage_bucket_objects.pike +} diff --git a/terraform/google/backup/data.google_storage_buckets.tf b/terraform/google/backup/data.google_storage_buckets.tf new file mode 100644 index 00000000..05516a84 --- /dev/null +++ b/terraform/google/backup/data.google_storage_buckets.tf @@ -0,0 +1,6 @@ +data "google_storage_buckets" "pike" { +} + +output "google_storage_buckets" { + value = data.google_storage_buckets.pike +} diff --git a/terraform/google/backup/data.google_storage_control_folder_intelligence_config.tf b/terraform/google/backup/data.google_storage_control_folder_intelligence_config.tf new file mode 100644 index 00000000..35bce2cc --- /dev/null +++ b/terraform/google/backup/data.google_storage_control_folder_intelligence_config.tf @@ -0,0 +1,7 @@ +data "google_storage_control_folder_intelligence_config" "pike" { + name = "pike-412922" +} + +output "google_storage_control_folder_intelligence_config" { + value = data.google_storage_control_folder_intelligence_config.pike +} diff --git a/terraform/google/backup/data.google_storage_control_organization_intelligence_config.tf b/terraform/google/backup/data.google_storage_control_organization_intelligence_config.tf new file mode 100644 index 00000000..78b5d285 --- /dev/null +++ b/terraform/google/backup/data.google_storage_control_organization_intelligence_config.tf @@ -0,0 +1,7 @@ +data "google_storage_control_organization_intelligence_config" "pike" { + name = "pike-412922" +} + +output "google_storage_control_organization_intelligence_config" { + value = data.google_storage_control_organization_intelligence_config.pike +} diff --git a/terraform/google/backup/data.google_storage_control_project_intelligence_config.tf b/terraform/google/backup/data.google_storage_control_project_intelligence_config.tf new file mode 100644 index 00000000..3fd111a0 --- /dev/null +++ b/terraform/google/backup/data.google_storage_control_project_intelligence_config.tf @@ -0,0 +1,7 @@ +data "google_storage_control_project_intelligence_config" "pike" { + name = "pike-412922" +} + +output "google_storage_control_project_intelligence_config" { + value = data.google_storage_control_project_intelligence_config.pike +} diff --git a/terraform/google/backup/data.google_storage_insights_dataset_config.tf b/terraform/google/backup/data.google_storage_insights_dataset_config.tf new file mode 100644 index 00000000..da26351e --- /dev/null +++ b/terraform/google/backup/data.google_storage_insights_dataset_config.tf @@ -0,0 +1,6 @@ +data "google_storage_insights_dataset_config" "pike" { +} + +output "google_storage_insights_dataset_config" { + value = data.google_storage_insights_dataset_config.pike +} diff --git a/terraform/google/backup/data.google_tags_tag_key_iam_policy.tf b/terraform/google/backup/data.google_tags_tag_key_iam_policy.tf new file mode 100644 index 00000000..a594c2f3 --- /dev/null +++ b/terraform/google/backup/data.google_tags_tag_key_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_tags_tag_key_iam_policy" "pike" { +} + +output "google_tags_tag_key_iam_policy" { + value = data.google_tags_tag_key_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_tags_tag_keys.tf b/terraform/google/backup/data.google_tags_tag_keys.tf new file mode 100644 index 00000000..ecb79935 --- /dev/null +++ b/terraform/google/backup/data.google_tags_tag_keys.tf @@ -0,0 +1,6 @@ +data "google_tags_tag_keys" "pike" { +} + +output "google_tags_tag_keys" { + value = data.google_tags_tag_keys.pike +} diff --git a/terraform/google/backup/data.google_tags_tag_value.tf b/terraform/google/backup/data.google_tags_tag_value.tf new file mode 100644 index 00000000..f34008e9 --- /dev/null +++ b/terraform/google/backup/data.google_tags_tag_value.tf @@ -0,0 +1,6 @@ +data "google_tags_tag_value" "pike" { +} + +output "google_tags_tag_value" { + value = data.google_tags_tag_value.pike +} diff --git a/terraform/google/backup/data.google_tags_tag_value_iam_policy.tf b/terraform/google/backup/data.google_tags_tag_value_iam_policy.tf new file mode 100644 index 00000000..129269b9 --- /dev/null +++ b/terraform/google/backup/data.google_tags_tag_value_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_tags_tag_value_iam_policy" "pike" { +} + +output "google_tags_tag_value_iam_policy" { + value = data.google_tags_tag_value_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_tags_tag_values.tf b/terraform/google/backup/data.google_tags_tag_values.tf new file mode 100644 index 00000000..45a02c22 --- /dev/null +++ b/terraform/google/backup/data.google_tags_tag_values.tf @@ -0,0 +1,6 @@ +data "google_tags_tag_values" "pike" { +} + +output "google_tags_tag_values" { + value = data.google_tags_tag_values.pike +} diff --git a/terraform/google/backup/data.google_vertex_ai_feature_group_iam_policy.tf b/terraform/google/backup/data.google_vertex_ai_feature_group_iam_policy.tf new file mode 100644 index 00000000..29ec7e63 --- /dev/null +++ b/terraform/google/backup/data.google_vertex_ai_feature_group_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_vertex_ai_feature_group_iam_policy" "pike" { +} + +output "google_vertex_ai_feature_group_iam_policy" { + value = data.google_vertex_ai_feature_group_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_vertex_ai_feature_online_store_featureview_iam_policy.tf b/terraform/google/backup/data.google_vertex_ai_feature_online_store_featureview_iam_policy.tf new file mode 100644 index 00000000..5e86a9c1 --- /dev/null +++ b/terraform/google/backup/data.google_vertex_ai_feature_online_store_featureview_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_vertex_ai_feature_online_store_featureview_iam_policy" "pike" { +} + +output "google_vertex_ai_feature_online_store_featureview_iam_policy" { + value = data.google_vertex_ai_feature_online_store_featureview_iam_policy.pike +} diff --git a/terraform/google/backup/data.google_vertex_ai_feature_online_store_iam_policy.tf b/terraform/google/backup/data.google_vertex_ai_feature_online_store_iam_policy.tf new file mode 100644 index 00000000..50952676 --- /dev/null +++ b/terraform/google/backup/data.google_vertex_ai_feature_online_store_iam_policy.tf @@ -0,0 +1,6 @@ +data "google_vertex_ai_feature_online_store_iam_policy" "pike" { +} + +output "google_vertex_ai_feature_online_store_iam_policy" { + value = data.google_vertex_ai_feature_online_store_iam_policy.pike +} diff --git a/terraform/google/backup/duff/data.google_access_context_manager_access_policy.tf b/terraform/google/backup/duff/data.google_access_context_manager_access_policy.tf new file mode 100644 index 00000000..1041e098 --- /dev/null +++ b/terraform/google/backup/duff/data.google_access_context_manager_access_policy.tf @@ -0,0 +1,7 @@ +data "google_access_context_manager_access_policy" "pike" { + parent = "organizations/213434" +} + +output "google_access_context_manager_access_policy" { + value = data.google_access_context_manager_access_policy.pike +} diff --git a/terraform/google/backup/duff/data.google_cloud_identity_group_transitive_memberships.tf b/terraform/google/backup/duff/data.google_cloud_identity_group_transitive_memberships.tf new file mode 100644 index 00000000..f63e3326 --- /dev/null +++ b/terraform/google/backup/duff/data.google_cloud_identity_group_transitive_memberships.tf @@ -0,0 +1,7 @@ +data "google_cloud_identity_group_transitive_memberships" "pike" { + group = "groups/123eab45c6defghi" +} + +output "google_cloud_identity_group_transitive_memberships" { + value = data.google_cloud_identity_group_transitive_memberships.pike +} diff --git a/terraform/google/duff/data.google_container_attached_install_manifest.tf b/terraform/google/backup/duff/data.google_container_attached_install_manifest.tf similarity index 100% rename from terraform/google/duff/data.google_container_attached_install_manifest.tf rename to terraform/google/backup/duff/data.google_container_attached_install_manifest.tf diff --git a/terraform/google/duff/data.google_container_aws_versions.tf b/terraform/google/backup/duff/data.google_container_aws_versions.tf similarity index 100% rename from terraform/google/duff/data.google_container_aws_versions.tf rename to terraform/google/backup/duff/data.google_container_aws_versions.tf diff --git a/terraform/google/duff/data.google_container_azure_versions.tf b/terraform/google/backup/duff/data.google_container_azure_versions.tf similarity index 100% rename from terraform/google/duff/data.google_container_azure_versions.tf rename to terraform/google/backup/duff/data.google_container_azure_versions.tf diff --git a/terraform/google/duff/data.google_dataform_repository_iam_policy.tf b/terraform/google/backup/duff/data.google_dataform_repository_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_dataform_repository_iam_policy.tf rename to terraform/google/backup/duff/data.google_dataform_repository_iam_policy.tf diff --git a/terraform/google/backup/duff/data.google_dns_managed_zones.tf b/terraform/google/backup/duff/data.google_dns_managed_zones.tf new file mode 100644 index 00000000..816ed4bb --- /dev/null +++ b/terraform/google/backup/duff/data.google_dns_managed_zones.tf @@ -0,0 +1,7 @@ +data "google_dns_managed_zones" "pike" { + # project="pike-412922" +} + +output "google_dns_managed_zones" { + value = data.google_dns_managed_zones.pike +} diff --git a/terraform/google/duff/data.google_endpoints_service_iam_policy.tf b/terraform/google/backup/duff/data.google_endpoints_service_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_endpoints_service_iam_policy.tf rename to terraform/google/backup/duff/data.google_endpoints_service_iam_policy.tf diff --git a/terraform/google/duff/data.google_firebase_web_app_config.tf b/terraform/google/backup/duff/data.google_firebase_web_app_config.tf similarity index 100% rename from terraform/google/duff/data.google_firebase_web_app_config.tf rename to terraform/google/backup/duff/data.google_firebase_web_app_config.tf diff --git a/terraform/google/duff/data.google_organization_iam_policy.tf b/terraform/google/backup/duff/data.google_organization_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_organization_iam_policy.tf rename to terraform/google/backup/duff/data.google_organization_iam_policy.tf diff --git a/terraform/google/duff/data.google_privateca_ca_pool_iam_policy.tf b/terraform/google/backup/duff/data.google_privateca_ca_pool_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_privateca_ca_pool_iam_policy.tf rename to terraform/google/backup/duff/data.google_privateca_ca_pool_iam_policy.tf diff --git a/terraform/google/duff/data.google_privateca_certificate_authority.tf b/terraform/google/backup/duff/data.google_privateca_certificate_authority.tf similarity index 100% rename from terraform/google/duff/data.google_privateca_certificate_authority.tf rename to terraform/google/backup/duff/data.google_privateca_certificate_authority.tf diff --git a/terraform/google/duff/data.google_privateca_certificate_template_iam_policy.tf b/terraform/google/backup/duff/data.google_privateca_certificate_template_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_privateca_certificate_template_iam_policy.tf rename to terraform/google/backup/duff/data.google_privateca_certificate_template_iam_policy.tf diff --git a/terraform/google/backup/duff/data.google_project_ancestry.tf b/terraform/google/backup/duff/data.google_project_ancestry.tf new file mode 100644 index 00000000..ed3a559f --- /dev/null +++ b/terraform/google/backup/duff/data.google_project_ancestry.tf @@ -0,0 +1,6 @@ +data "google_project_ancestry" "pike" { +} + +output "google_project_ancestry" { + value = data.google_project_ancestry.pike +} diff --git a/terraform/google/duff/data.google_project_iam_policy.tf b/terraform/google/backup/duff/data.google_project_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_project_iam_policy.tf rename to terraform/google/backup/duff/data.google_project_iam_policy.tf diff --git a/terraform/google/duff/data.google_project_organization_policy.tf b/terraform/google/backup/duff/data.google_project_organization_policy.tf similarity index 100% rename from terraform/google/duff/data.google_project_organization_policy.tf rename to terraform/google/backup/duff/data.google_project_organization_policy.tf diff --git a/terraform/google/duff/data.google_pubsub_schema_iam_policy.tf b/terraform/google/backup/duff/data.google_pubsub_schema_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_pubsub_schema_iam_policy.tf rename to terraform/google/backup/duff/data.google_pubsub_schema_iam_policy.tf diff --git a/terraform/google/duff/data.google_runtimeconfig_config.tf b/terraform/google/backup/duff/data.google_runtimeconfig_config.tf similarity index 100% rename from terraform/google/duff/data.google_runtimeconfig_config.tf rename to terraform/google/backup/duff/data.google_runtimeconfig_config.tf diff --git a/terraform/google/duff/data.google_runtimeconfig_config_iam_policy.tf b/terraform/google/backup/duff/data.google_runtimeconfig_config_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_runtimeconfig_config_iam_policy.tf rename to terraform/google/backup/duff/data.google_runtimeconfig_config_iam_policy.tf diff --git a/terraform/google/duff/data.google_runtimeconfig_variable.tf b/terraform/google/backup/duff/data.google_runtimeconfig_variable.tf similarity index 100% rename from terraform/google/duff/data.google_runtimeconfig_variable.tf rename to terraform/google/backup/duff/data.google_runtimeconfig_variable.tf diff --git a/terraform/google/backup/duff/data.google_scc_v2_organization_source_iam_policy.tf b/terraform/google/backup/duff/data.google_scc_v2_organization_source_iam_policy.tf new file mode 100644 index 00000000..0d3bb921 --- /dev/null +++ b/terraform/google/backup/duff/data.google_scc_v2_organization_source_iam_policy.tf @@ -0,0 +1,8 @@ +data "google_scc_v2_organization_source_iam_policy" "pike" { + source = google_scc_v2_organization_source.custom_source.name + organization = "pike" +} + +output "google_scc_v2_organization_source_iam_policy" { + value = data.google_scc_v2_organization_source_iam_policy.pike +} diff --git a/terraform/google/backup/duff/data.google_secure_source_manager_instance_iam_policy.tf b/terraform/google/backup/duff/data.google_secure_source_manager_instance_iam_policy.tf new file mode 100644 index 00000000..eb031cea --- /dev/null +++ b/terraform/google/backup/duff/data.google_secure_source_manager_instance_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_secure_source_manager_instance_iam_policy" "pike" { + instance_id = "pike" +} + +output "google_secure_source_manager_instance_iam_policy" { + value = data.google_secure_source_manager_instance_iam_policy.pike +} diff --git a/terraform/google/backup/duff/data.google_secure_source_manager_repository_iam_policy.tf b/terraform/google/backup/duff/data.google_secure_source_manager_repository_iam_policy.tf new file mode 100644 index 00000000..b67da1cf --- /dev/null +++ b/terraform/google/backup/duff/data.google_secure_source_manager_repository_iam_policy.tf @@ -0,0 +1,7 @@ +data "google_secure_source_manager_repository_iam_policy" "pike" { + repository_id = "pike" +} + +output "google_secure_source_manager_repository_iam_policy" { + value = data.google_secure_source_manager_repository_iam_policy.pike +} diff --git a/terraform/google/backup/duff/data.google_site_verification_token.tf b/terraform/google/backup/duff/data.google_site_verification_token.tf new file mode 100644 index 00000000..00dc1253 --- /dev/null +++ b/terraform/google/backup/duff/data.google_site_verification_token.tf @@ -0,0 +1,9 @@ +data "google_site_verification_token" "pike" { + type = "SITE" + verification_method = "META" + identifier = "https://www.example.com" +} + +output "google_site_verification_token" { + value = data.google_site_verification_token.pike +} diff --git a/terraform/google/backup/duff/data.google_storage_control_folder_intelligence_config.tf b/terraform/google/backup/duff/data.google_storage_control_folder_intelligence_config.tf new file mode 100644 index 00000000..1bef46cf --- /dev/null +++ b/terraform/google/backup/duff/data.google_storage_control_folder_intelligence_config.tf @@ -0,0 +1,7 @@ +data "google_storage_control_folder_intelligence_config" "pike" { + name = "pike" +} + +output "google_storage_control_folder_intelligence_config" { + value = data.google_storage_control_folder_intelligence_config.pike +} diff --git a/terraform/google/backup/duff/data.google_storage_control_organization_intelligence_config.tf b/terraform/google/backup/duff/data.google_storage_control_organization_intelligence_config.tf new file mode 100644 index 00000000..e8b06afd --- /dev/null +++ b/terraform/google/backup/duff/data.google_storage_control_organization_intelligence_config.tf @@ -0,0 +1,7 @@ +data "google_storage_control_organization_intelligence_config" "pike" { + name = "pike" +} + +output "google_storage_control_organization_intelligence_config" { + value = data.google_storage_control_organization_intelligence_config.pike +} diff --git a/terraform/google/backup/duff/data.google_storage_control_project_intelligence_config.tf b/terraform/google/backup/duff/data.google_storage_control_project_intelligence_config.tf new file mode 100644 index 00000000..40121bc3 --- /dev/null +++ b/terraform/google/backup/duff/data.google_storage_control_project_intelligence_config.tf @@ -0,0 +1,7 @@ +data "google_storage_control_project_intelligence_config" "pike" { + name = "pike" +} + +output "google_storage_control_project_intelligence_config" { + value = data.google_storage_control_project_intelligence_config.pike +} diff --git a/terraform/google/duff/data.google_tags_tag_key_iam_policy.tf b/terraform/google/backup/duff/data.google_tags_tag_key_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_tags_tag_key_iam_policy.tf rename to terraform/google/backup/duff/data.google_tags_tag_key_iam_policy.tf diff --git a/terraform/google/backup/duff/data.google_tags_tag_keys.tf b/terraform/google/backup/duff/data.google_tags_tag_keys.tf new file mode 100644 index 00000000..e72d1bd0 --- /dev/null +++ b/terraform/google/backup/duff/data.google_tags_tag_keys.tf @@ -0,0 +1,7 @@ +data "google_tags_tag_keys" "pike" { + parent = "pike" +} + +output "google_tags_tag_keys" { + value = data.google_tags_tag_keys.pike +} diff --git a/terraform/google/duff/data.google_tags_tag_value.tf b/terraform/google/backup/duff/data.google_tags_tag_value.tf similarity index 100% rename from terraform/google/duff/data.google_tags_tag_value.tf rename to terraform/google/backup/duff/data.google_tags_tag_value.tf diff --git a/terraform/google/duff/data.google_tags_tag_value_iam_policy.tf b/terraform/google/backup/duff/data.google_tags_tag_value_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_tags_tag_value_iam_policy.tf rename to terraform/google/backup/duff/data.google_tags_tag_value_iam_policy.tf diff --git a/terraform/google/backup/duff/data.google_tags_tag_values.tf b/terraform/google/backup/duff/data.google_tags_tag_values.tf new file mode 100644 index 00000000..55c985be --- /dev/null +++ b/terraform/google/backup/duff/data.google_tags_tag_values.tf @@ -0,0 +1,7 @@ +data "google_tags_tag_values" "pike" { + parent = "pike" +} + +output "google_tags_tag_values" { + value = data.google_tags_tag_values.pike +} diff --git a/terraform/google/duff/data.google_vertex_ai_endpoint_iam_policy.tf b/terraform/google/backup/duff/data.google_vertex_ai_endpoint_iam_policy.tf similarity index 100% rename from terraform/google/duff/data.google_vertex_ai_endpoint_iam_policy.tf rename to terraform/google/backup/duff/data.google_vertex_ai_endpoint_iam_policy.tf diff --git a/terraform/google/backup/duff/google_billing_account_iam_binding.tf b/terraform/google/backup/duff/google_billing_account_iam_binding.tf new file mode 100644 index 00000000..8cea6880 --- /dev/null +++ b/terraform/google/backup/duff/google_billing_account_iam_binding.tf @@ -0,0 +1 @@ +# resource "google_billing_account_iam_binding" "pike" {} diff --git a/terraform/google/backup/duff/google_billing_account_iam_member.tf b/terraform/google/backup/duff/google_billing_account_iam_member.tf new file mode 100644 index 00000000..2f39ba5e --- /dev/null +++ b/terraform/google/backup/duff/google_billing_account_iam_member.tf @@ -0,0 +1,5 @@ +# resource "google_billing_account_iam_member" "pike" { +# billing_account_id = data.google_billing_account.pike.id +# role = "roles/billing.user" +# member = "user:james.woolfenden@gmail.com" +# } diff --git a/terraform/google/backup/duff/google_billing_account_iam_policy.tf b/terraform/google/backup/duff/google_billing_account_iam_policy.tf new file mode 100644 index 00000000..23bbc08e --- /dev/null +++ b/terraform/google/backup/duff/google_billing_account_iam_policy.tf @@ -0,0 +1 @@ +# resource "google_billing_account_iam_policy" "pike" {} diff --git a/terraform/google/backup/duff/google_billing_budget.tf b/terraform/google/backup/duff/google_billing_budget.tf new file mode 100644 index 00000000..6be61945 --- /dev/null +++ b/terraform/google/backup/duff/google_billing_budget.tf @@ -0,0 +1,18 @@ +resource "google_billing_budget" "pike" { + billing_account = data.google_billing_account.pike.id + display_name = "Example Billing Budget" + amount { + specified_amount { + currency_code = "USD" + units = "100000" + } + } + threshold_rules { + threshold_percent = 0.5 + } +} + + +data "google_billing_account" "pike" { + billing_account = "013ED3-8B24F6-725D7E" +} diff --git a/terraform/google/backup/duff/google_billing_project_info.tf b/terraform/google/backup/duff/google_billing_project_info.tf new file mode 100644 index 00000000..4dc05cc0 --- /dev/null +++ b/terraform/google/backup/duff/google_billing_project_info.tf @@ -0,0 +1,9 @@ +# resource "google_billing_project_info" "pike" { +# # deletion_policy = "DELETE" +# billing_account = data.google_billing_account.pike.id +# +# +# lifecycle { +# ignore_changes = [billing_account] +# } +# } diff --git a/terraform/google/backup/duff/google_billing_subaccount.tf b/terraform/google/backup/duff/google_billing_subaccount.tf new file mode 100644 index 00000000..97575ca2 --- /dev/null +++ b/terraform/google/backup/duff/google_billing_subaccount.tf @@ -0,0 +1,4 @@ +# resource "google_billing_subaccount" "pike" { +# display_name = "My Billing Account" +# master_billing_account = data.google_billing_account.pike.id +# } diff --git a/terraform/google/backup/duff/google_project.tf b/terraform/google/backup/duff/google_project.tf new file mode 100644 index 00000000..013af218 --- /dev/null +++ b/terraform/google/backup/duff/google_project.tf @@ -0,0 +1,4 @@ +resource "google_project" "pike" { + name = "temp-project" + project_id = "temp-project" +} diff --git a/terraform/google/backup/duff/google_project_access_approval_settings.tf b/terraform/google/backup/duff/google_project_access_approval_settings.tf new file mode 100644 index 00000000..c43e2878 --- /dev/null +++ b/terraform/google/backup/duff/google_project_access_approval_settings.tf @@ -0,0 +1,9 @@ +resource "google_project_access_approval_settings" "pike" { + project_id = "pike-412922" + notification_emails = ["james.woolfenden@gmail.com"] + + enrolled_services { + cloud_product = "all" + enrollment_level = "BLOCK_ALL" + } +} diff --git a/terraform/google/backup/duff/google_project_iam_member_remove.tf b/terraform/google/backup/duff/google_project_iam_member_remove.tf new file mode 100644 index 00000000..44c7e509 --- /dev/null +++ b/terraform/google/backup/duff/google_project_iam_member_remove.tf @@ -0,0 +1,5 @@ +resource "google_project_iam_member_remove" "foo" { + role = "roles/editor" + project = "pike-412922" + member = "serviceAccount:dumbass@developer.gserviceaccount.com" +} diff --git a/terraform/google/backup/duff/google_project_organization_policy.tf b/terraform/google/backup/duff/google_project_organization_policy.tf new file mode 100644 index 00000000..17639828 --- /dev/null +++ b/terraform/google/backup/duff/google_project_organization_policy.tf @@ -0,0 +1,16 @@ +resource "google_project_organization_policy" "pike" { + resource "google_project_iam_policy" "project" { + project = "your-project-id" + policy_data = data.google_iam_policy.admin.policy_data + } + + data "google_iam_policy" "admin" { + binding { + role = "roles/editor" + + members = [ + "user:james.woolfenden@gmail.com", + ] + } + } +} diff --git a/terraform/google/backup/google_access_context_manager_service_perimeters.tf b/terraform/google/backup/google_access_context_manager_service_perimeters.tf index c74ddfc2..95bf3c5e 100644 --- a/terraform/google/backup/google_access_context_manager_service_perimeters.tf +++ b/terraform/google/backup/google_access_context_manager_service_perimeters.tf @@ -17,3 +17,13 @@ resource "google_access_context_manager_service_perimeters" "pike" { } } } + + +resource "google_access_context_manager_access_policy" "access-policy" { + parent = data.google_organization.this.id + title = "pike" +} + +data "google_organization" "this" { + organization = "12345354" +} diff --git a/terraform/google/backup/google_apigee_environment_iam_binding.tf b/terraform/google/backup/google_apigee_environment_iam_binding.tf new file mode 100644 index 00000000..028b6612 --- /dev/null +++ b/terraform/google/backup/google_apigee_environment_iam_binding.tf @@ -0,0 +1 @@ +resource "google_apigee_environment_iam_binding" "pike" {} diff --git a/terraform/google/backup/google_apigee_environment_iam_member.tf b/terraform/google/backup/google_apigee_environment_iam_member.tf new file mode 100644 index 00000000..45d200a8 --- /dev/null +++ b/terraform/google/backup/google_apigee_environment_iam_member.tf @@ -0,0 +1 @@ +resource "google_apigee_environment_iam_member" "pike" {} diff --git a/terraform/google/backup/google_apigee_environment_iam_policy.tf b/terraform/google/backup/google_apigee_environment_iam_policy.tf new file mode 100644 index 00000000..8cfdbfa1 --- /dev/null +++ b/terraform/google/backup/google_apigee_environment_iam_policy.tf @@ -0,0 +1 @@ +resource "google_apigee_environment_iam_policy" "pike" {} diff --git a/terraform/google/backup/google_apihub_api_hub_instance.tf b/terraform/google/backup/google_apihub_api_hub_instance.tf new file mode 100644 index 00000000..fb52632f --- /dev/null +++ b/terraform/google/backup/google_apihub_api_hub_instance.tf @@ -0,0 +1 @@ +resource "google_apihub_api_hub_instance" "pike" {} diff --git a/terraform/google/backup/google_apihub_curation.tf b/terraform/google/backup/google_apihub_curation.tf new file mode 100644 index 00000000..60d6e0a3 --- /dev/null +++ b/terraform/google/backup/google_apihub_curation.tf @@ -0,0 +1 @@ +resource "google_apihub_curation" "pike" {} diff --git a/terraform/google/backup/google_apihub_host_project_registration.tf b/terraform/google/backup/google_apihub_host_project_registration.tf new file mode 100644 index 00000000..1acfd428 --- /dev/null +++ b/terraform/google/backup/google_apihub_host_project_registration.tf @@ -0,0 +1 @@ +resource "google_apihub_host_project_registration" "pike" {} diff --git a/terraform/google/backup/google_apihub_plugin.tf b/terraform/google/backup/google_apihub_plugin.tf new file mode 100644 index 00000000..2f7b3fbf --- /dev/null +++ b/terraform/google/backup/google_apihub_plugin.tf @@ -0,0 +1 @@ +resource "google_apihub_plugin" "pike" {} diff --git a/terraform/google/backup/google_apihub_plugin_instance.tf b/terraform/google/backup/google_apihub_plugin_instance.tf new file mode 100644 index 00000000..c25f845e --- /dev/null +++ b/terraform/google/backup/google_apihub_plugin_instance.tf @@ -0,0 +1 @@ +resource "google_apihub_plugin_instance" "pike" {} diff --git a/terraform/google/backup/google_apphub_application.tf b/terraform/google/backup/google_apphub_application.tf new file mode 100644 index 00000000..cd723284 --- /dev/null +++ b/terraform/google/backup/google_apphub_application.tf @@ -0,0 +1 @@ +resource "google_apphub_application" "pike" {} diff --git a/terraform/google/backup/google_apphub_service.tf b/terraform/google/backup/google_apphub_service.tf new file mode 100644 index 00000000..c47a543b --- /dev/null +++ b/terraform/google/backup/google_apphub_service.tf @@ -0,0 +1 @@ +resource "google_apphub_service" "pike" {} diff --git a/terraform/google/backup/google_apphub_service_project_attachment.tf b/terraform/google/backup/google_apphub_service_project_attachment.tf new file mode 100644 index 00000000..45ded036 --- /dev/null +++ b/terraform/google/backup/google_apphub_service_project_attachment.tf @@ -0,0 +1 @@ +resource "google_apphub_service_project_attachment" "pike" {} diff --git a/terraform/google/backup/google_apphub_workload.tf b/terraform/google/backup/google_apphub_workload.tf new file mode 100644 index 00000000..ec6572d1 --- /dev/null +++ b/terraform/google/backup/google_apphub_workload.tf @@ -0,0 +1 @@ +resource "google_apphub_workload" "pike" {} diff --git a/terraform/google/backup/google_backup_dr_backup_plan.tf b/terraform/google/backup/google_backup_dr_backup_plan.tf new file mode 100644 index 00000000..c4926589 --- /dev/null +++ b/terraform/google/backup/google_backup_dr_backup_plan.tf @@ -0,0 +1 @@ +resource "google_backup_dr_backup_plan" "pike" {} diff --git a/terraform/google/backup/google_backup_dr_backup_plan_association.tf b/terraform/google/backup/google_backup_dr_backup_plan_association.tf new file mode 100644 index 00000000..1328ac40 --- /dev/null +++ b/terraform/google/backup/google_backup_dr_backup_plan_association.tf @@ -0,0 +1 @@ +resource "google_backup_dr_backup_plan_association" "pike" {} diff --git a/terraform/google/backup/google_backup_dr_backup_vault.tf b/terraform/google/backup/google_backup_dr_backup_vault.tf new file mode 100644 index 00000000..68a84dbd --- /dev/null +++ b/terraform/google/backup/google_backup_dr_backup_vault.tf @@ -0,0 +1 @@ +resource "google_backup_dr_backup_vault" "pike" {} diff --git a/terraform/google/backup/google_backup_dr_management_server.tf b/terraform/google/backup/google_backup_dr_management_server.tf new file mode 100644 index 00000000..a1270d8e --- /dev/null +++ b/terraform/google/backup/google_backup_dr_management_server.tf @@ -0,0 +1 @@ +resource "google_backup_dr_management_server" "pike" {} diff --git a/terraform/google/backup/google_backup_dr_service_config.tf b/terraform/google/backup/google_backup_dr_service_config.tf new file mode 100644 index 00000000..7a215de2 --- /dev/null +++ b/terraform/google/backup/google_backup_dr_service_config.tf @@ -0,0 +1,4 @@ +resource "google_backup_dr_service_config" "pike" { + location = "us-central1" + resource_type = "compute.googleapis.com/Instance" +} diff --git a/terraform/google/backup/google_beyondcorp_app_connection.tf b/terraform/google/backup/google_beyondcorp_app_connection.tf new file mode 100644 index 00000000..88b50d1e --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_app_connection.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_app_connection" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_app_connector.tf b/terraform/google/backup/google_beyondcorp_app_connector.tf new file mode 100644 index 00000000..1a3b1467 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_app_connector.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_app_connector" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_app_gateway.tf b/terraform/google/backup/google_beyondcorp_app_gateway.tf new file mode 100644 index 00000000..ad92f9e4 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_app_gateway.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_app_gateway" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_application.tf b/terraform/google/backup/google_beyondcorp_application.tf new file mode 100644 index 00000000..0e3144c4 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_application.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_application" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_application_iam_binding.tf b/terraform/google/backup/google_beyondcorp_application_iam_binding.tf new file mode 100644 index 00000000..da5b737b --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_application_iam_binding.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_application_iam_binding" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_application_iam_member.tf b/terraform/google/backup/google_beyondcorp_application_iam_member.tf new file mode 100644 index 00000000..891673e6 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_application_iam_member.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_application_iam_member" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_application_iam_policy.tf b/terraform/google/backup/google_beyondcorp_application_iam_policy.tf new file mode 100644 index 00000000..494c3a2d --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_application_iam_policy.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_application_iam_policy" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_security_gateway.tf b/terraform/google/backup/google_beyondcorp_security_gateway.tf new file mode 100644 index 00000000..66d42f39 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_security_gateway.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_security_gateway" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_security_gateway_application.tf b/terraform/google/backup/google_beyondcorp_security_gateway_application.tf new file mode 100644 index 00000000..07a53866 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_security_gateway_application.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_security_gateway_application" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_binding.tf b/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_binding.tf new file mode 100644 index 00000000..fe762aa0 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_binding.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_security_gateway_application_iam_binding" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_member.tf b/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_member.tf new file mode 100644 index 00000000..e979cc49 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_member.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_security_gateway_application_iam_member" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_policy.tf b/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_policy.tf new file mode 100644 index 00000000..51d206fe --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_security_gateway_application_iam_policy.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_security_gateway_application_iam_policy" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_security_gateway_iam_binding.tf b/terraform/google/backup/google_beyondcorp_security_gateway_iam_binding.tf new file mode 100644 index 00000000..e9703043 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_security_gateway_iam_binding.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_security_gateway_iam_binding" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_security_gateway_iam_member.tf b/terraform/google/backup/google_beyondcorp_security_gateway_iam_member.tf new file mode 100644 index 00000000..8366c3a3 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_security_gateway_iam_member.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_security_gateway_iam_member" "pike" {} diff --git a/terraform/google/backup/google_beyondcorp_security_gateway_iam_policy.tf b/terraform/google/backup/google_beyondcorp_security_gateway_iam_policy.tf new file mode 100644 index 00000000..da7378c7 --- /dev/null +++ b/terraform/google/backup/google_beyondcorp_security_gateway_iam_policy.tf @@ -0,0 +1 @@ +resource "google_beyondcorp_security_gateway_iam_policy" "pike" {} diff --git a/terraform/google/backup/google_biglake_catalog.tf b/terraform/google/backup/google_biglake_catalog.tf new file mode 100644 index 00000000..b5208111 --- /dev/null +++ b/terraform/google/backup/google_biglake_catalog.tf @@ -0,0 +1,4 @@ +resource "google_biglake_catalog" "pike" { + name = "pike" + location = "europe-west2" +} diff --git a/terraform/google/backup/google_biglake_database.tf b/terraform/google/backup/google_biglake_database.tf new file mode 100644 index 00000000..fc980ccb --- /dev/null +++ b/terraform/google/backup/google_biglake_database.tf @@ -0,0 +1,24 @@ +resource "google_storage_bucket" "bucket" { + name = "my_bucket_jgw_2025" + location = "eu" + force_destroy = true + uniform_bucket_level_access = true +} + +resource "google_storage_bucket_object" "metadata_folder" { + name = "metadata/" + content = " " + bucket = google_storage_bucket.bucket.name +} + +resource "google_biglake_database" "database" { + name = "pike" + catalog = google_biglake_catalog.catalog.id + type = "HIVE" + hive_options { + location_uri = "gs://${google_storage_bucket.bucket.name}/${google_storage_bucket_object.metadata_folder.name}" + parameters = { + "owner" : "James Woolfenden" + } + } +} diff --git a/terraform/google/backup/google_biglake_table.tf b/terraform/google/backup/google_biglake_table.tf new file mode 100644 index 00000000..002393bc --- /dev/null +++ b/terraform/google/backup/google_biglake_table.tf @@ -0,0 +1,40 @@ +resource "google_biglake_table" "pike" { + name = "my_table" + database = google_biglake_database.database.id + type = "HIVE" + hive_options { + table_type = "MANAGED_TABLE" + storage_descriptor { + location_uri = "gs://${google_storage_bucket.bucket.name}/${google_storage_bucket_object.data_folder.name}" + input_format = "org.apache.hadoop.mapred.SequenceFileInputFormat" + output_format = "org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat" + } + # Some Example Parameters. + parameters = { + "spark.sql.create.version" = "3.1.3" + "spark.sql.sources.schema.numParts" = "1" + "transient_lastDdlTime" = "1680894197" + "spark.sql.partitionProvider" = "catalog" + "owner" = "John Doe" + "spark.sql.sources.schema.part.0" = "{\"type\":\"struct\",\"fields\":[{\"name\":\"id\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"name\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"age\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}}]}" + "spark.sql.sources.provider" = "iceberg" + "provider" = "iceberg" + } + } + +} + + +resource "google_biglake_catalog" "catalog" { + name = "my_catalog" + location = "US" +} + + + + +resource "google_storage_bucket_object" "data_folder" { + name = "data/" + content = " " + bucket = google_storage_bucket.bucket.name +} diff --git a/terraform/google/backup/google_bigquery_analytics_hub_listing_subscription.tf b/terraform/google/backup/google_bigquery_analytics_hub_listing_subscription.tf new file mode 100644 index 00000000..d4b8081b --- /dev/null +++ b/terraform/google/backup/google_bigquery_analytics_hub_listing_subscription.tf @@ -0,0 +1,43 @@ +resource "google_bigquery_analytics_hub_data_exchange" "subscription" { + location = "US" + data_exchange_id = "my_data_exchange" + display_name = "my_data_exchange" + description = "Test Description" +} + +resource "google_bigquery_analytics_hub_listing" "subscription" { + location = "US" + data_exchange_id = google_bigquery_analytics_hub_data_exchange.subscription.data_exchange_id + listing_id = "my_listing" + display_name = "my_listing" + description = "Test Description" + + bigquery_dataset { + dataset = google_bigquery_dataset.subscription.id + } +} + +resource "google_bigquery_dataset" "subscription" { + dataset_id = "my_listing" + friendly_name = "my_listing" + description = "Test Description" + location = "US" +} + +resource "google_bigquery_analytics_hub_listing_subscription" "subscription" { + location = "US" + data_exchange_id = google_bigquery_analytics_hub_data_exchange.subscription.data_exchange_id + listing_id = google_bigquery_analytics_hub_listing.subscription.listing_id + destination_dataset { + description = "A test subscription" + friendly_name = "👋" + labels = { + testing = "123" + } + location = "US" + dataset_reference { + dataset_id = "destination_dataset" + project_id = google_bigquery_dataset.subscription.project + } + } +} diff --git a/terraform/google/backup/google_bigquery_connection.tf b/terraform/google/backup/google_bigquery_connection.tf index da3d05d9..bddbe376 100644 --- a/terraform/google/backup/google_bigquery_connection.tf +++ b/terraform/google/backup/google_bigquery_connection.tf @@ -1,7 +1,7 @@ resource "google_bigquery_connection" "pike" { connection_id = "my-connection" location = "US" - friendly_name = "👋" + friendly_name = "something" description = "a riveting description" cloud_resource {} } diff --git a/terraform/google/backup/google_bigquery_datapolicy_data_policy.tf b/terraform/google/backup/google_bigquery_datapolicy_data_policy.tf new file mode 100644 index 00000000..64aa9b98 --- /dev/null +++ b/terraform/google/backup/google_bigquery_datapolicy_data_policy.tf @@ -0,0 +1,19 @@ +resource "google_bigquery_datapolicy_data_policy" "pike" { + location = "europe-west2" + data_policy_id = "data_policy" + policy_tag = google_data_catalog_policy_tag.pike.name + data_policy_type = "COLUMN_LEVEL_SECURITY_POLICY" +} +# +# resource "google_data_catalog_policy_tag" "policy_tag" { +# taxonomy = google_data_catalog_taxonomy.taxonomy.id +# display_name = "Low security" +# description = "A policy tag normally associated with low security items" +# } +# +# resource "google_data_catalog_taxonomy" "taxonomy" { +# region = "us-central1" +# display_name = "taxonomy" +# description = "A collection of policy tags" +# activated_policy_types = ["FINE_GRAINED_ACCESS_CONTROL"] +# } diff --git a/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_binding.tf b/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_binding.tf new file mode 100644 index 00000000..2b699748 --- /dev/null +++ b/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_binding.tf @@ -0,0 +1 @@ +resource "google_bigquery_datapolicy_data_policy_iam_binding" "pike" {} diff --git a/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_member.tf b/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_member.tf new file mode 100644 index 00000000..ddb968c6 --- /dev/null +++ b/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_member.tf @@ -0,0 +1 @@ +resource "google_bigquery_datapolicy_data_policy_iam_member" "pike" {} diff --git a/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_policy.tf b/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_policy.tf new file mode 100644 index 00000000..2653fe6b --- /dev/null +++ b/terraform/google/backup/google_bigquery_datapolicy_data_policy_iam_policy.tf @@ -0,0 +1,15 @@ +data "google_iam_policy" "admin4" { + binding { + role = "roles/viewer" + members = [ + "user:james.Woolfenden@gmail.com", + ] + } +} + +resource "google_bigquery_datapolicy_data_policy_iam_policy" "policy" { + project = google_bigquery_datapolicy_data_policy.pike.project + location = google_bigquery_datapolicy_data_policy.pike.location + data_policy_id = google_bigquery_datapolicy_data_policy.pike.data_policy_id + policy_data = data.google_iam_policy.admin4.policy_data +} diff --git a/terraform/google/backup/google_bigquery_dataset_access.tf b/terraform/google/backup/google_bigquery_dataset_access.tf new file mode 100644 index 00000000..efcdf738 --- /dev/null +++ b/terraform/google/backup/google_bigquery_dataset_access.tf @@ -0,0 +1,31 @@ +resource "google_bigquery_dataset" "dataset" { + dataset_id = "example_dataset2" + friendly_name = "test" + description = "This is a test description" + location = "EU" + default_table_expiration_ms = 3600000 + + labels = { + env = "default" + } + + access { + role = "OWNER" + user_by_email = google_service_account.bqowner.email + } + + access { + role = "READER" + domain = "hashicorp.com" + } +} + +resource "google_service_account" "bqowner" { + account_id = "bqowner" +} + +resource "google_bigquery_dataset_access" "access" { + dataset_id = google_bigquery_dataset.dataset.dataset_id + role = "OWNER" + user_by_email = "james.woolfenden@gmail.com" +} diff --git a/terraform/google/backup/google_bigquery_row_access_policy.tf b/terraform/google/backup/google_bigquery_row_access_policy.tf new file mode 100644 index 00000000..f508dcec --- /dev/null +++ b/terraform/google/backup/google_bigquery_row_access_policy.tf @@ -0,0 +1,22 @@ +resource "google_bigquery_dataset" "example" { + dataset_id = "dataset_id" + location = "US" +} + +resource "google_bigquery_table" "example" { + deletion_protection = false + + dataset_id = google_bigquery_dataset.example.dataset_id + table_id = "table_id" +} + +resource "google_bigquery_row_access_policy" "example" { + dataset_id = google_bigquery_dataset.example.dataset_id + table_id = google_bigquery_table.example.table_id + policy_id = "policy_id" + + filter_predicate = "nullable_field is not NULL" + grantees = [ + "domain:google.com" + ] +} diff --git a/terraform/google/backup/google_bigtable_authorized_view.tf b/terraform/google/backup/google_bigtable_authorized_view.tf new file mode 100644 index 00000000..50e381cd --- /dev/null +++ b/terraform/google/backup/google_bigtable_authorized_view.tf @@ -0,0 +1,60 @@ +resource "google_bigtable_instance" "instance" { + name = "tf-instance" + + cluster { + cluster_id = "tf-instance-cluster" + zone = "us-central1-b" + num_nodes = 3 + storage_type = "HDD" + } + deletion_protection = false + + # + # lifecycle { + # prevent_destroy = true + # } +} + +resource "google_bigtable_table" "table" { + name = "tf-table" + instance_name = google_bigtable_instance.instance.name + split_keys = ["a", "b", "c"] + + # lifecycle { + # prevent_destroy = true + # } + + column_family { + family = "family-first" + } + + column_family { + family = "family-second" + } + + change_stream_retention = "24h0m0s" +} + +resource "google_bigtable_authorized_view" "authorized_view" { + name = "tf-authorized-view" + instance_name = google_bigtable_instance.instance.name + table_name = google_bigtable_table.table.name + + # lifecycle { + # prevent_destroy = true + # } + + subset_view { + row_prefixes = [base64encode("prefix#")] + + family_subsets { + family_name = "family-first" + qualifiers = [base64encode("qualifier"), base64encode("qualifier-second")] + } + + family_subsets { + family_name = "family-second" + qualifier_prefixes = [""] + } + } +} diff --git a/terraform/google/backup/google_bigtable_logical_view.tf b/terraform/google/backup/google_bigtable_logical_view.tf new file mode 100644 index 00000000..4faf9f5a --- /dev/null +++ b/terraform/google/backup/google_bigtable_logical_view.tf @@ -0,0 +1,13 @@ +resource "google_bigtable_logical_view" "logical_view" { + logical_view_id = "btlogical" + instance = google_bigtable_instance.instance.name + deletion_protection = false + query = <Some example SSML XML + EOF + } + } + messages { + live_agent_handoff { + metadata = <Some example SSML XML + EOF + } + } + messages { + live_agent_handoff { + metadata = <Some example SSML XML + EOF + } + } + messages { + live_agent_handoff { + metadata = <Some example SSML XML + EOF + } + } + messages { + live_agent_handoff { + metadata = <Some example SSML XML + EOF + } + } + messages { + live_agent_handoff { + metadata = <Some example SSML XML + EOF + } + } + messages { + live_agent_handoff { + metadata = <